deploy: c5b2b26fdc14cddfda5644af317a68a690018c10
diff --git a/api/adl_serializer/from_json/index.html b/api/adl_serializer/from_json/index.html
index cb3f638..1885e77 100644
--- a/api/adl_serializer/from_json/index.html
+++ b/api/adl_serializer/from_json/index.html
@@ -9,7 +9,7 @@
 <span class=k>static</span><span class=w> </span><span class=k>auto</span><span class=w> </span><span class=n>from_json</span><span class=p>(</span><span class=n>BasicJsonType</span><span class=w> </span><span class=o>&amp;&amp;</span><span class=w> </span><span class=n>j</span><span class=p>)</span><span class=w> </span><span class=k>noexcept</span><span class=p>(</span>
 <span class=k>noexcept</span><span class=p>(</span><span class=o>::</span><span class=n>nlohmann</span><span class=o>::</span><span class=n>from_json</span><span class=p>(</span><span class=n>std</span><span class=o>::</span><span class=n>forward</span><span class=o>&lt;</span><span class=n>BasicJsonType</span><span class=o>&gt;</span><span class=p>(</span><span class=n>j</span><span class=p>),</span><span class=w> </span><span class=n>detail</span><span class=o>::</span><span class=n>identity_tag</span><span class=o>&lt;</span><span class=n>TargetType</span><span class=o>&gt;</span><span class=w> </span><span class=p>{})))</span>
 <span class=o>-&gt;</span><span class=w> </span><span class=k>decltype</span><span class=p>(</span><span class=o>::</span><span class=n>nlohmann</span><span class=o>::</span><span class=n>from_json</span><span class=p>(</span><span class=n>std</span><span class=o>::</span><span class=n>forward</span><span class=o>&lt;</span><span class=n>BasicJsonType</span><span class=o>&gt;</span><span class=p>(</span><span class=n>j</span><span class=p>),</span><span class=w> </span><span class=n>detail</span><span class=o>::</span><span class=n>identity_tag</span><span class=o>&lt;</span><span class=n>TargetType</span><span class=o>&gt;</span><span class=w> </span><span class=p>{}))</span>
-</code></pre></div> <p>This function is usually called by the <a href=../../basic_json/get/ ><code>get()</code></a> function of the <a href=../../basic_json/ >basic_json</a> class (either explicitly or via the conversion operators).</p> <ol> <li>This function is chosen for default-constructible value types.</li> <li>This function is chosen for value types which are not default-constructible.</li> </ol> <h2 id=parameters>Parameters<a class=headerlink href=#parameters title="Permanent link">&para;</a></h2> <dl> <dt><code>j</code> (in)</dt> <dd><abbr title="JavaScript Object Notation">JSON</abbr> value to read from</dd> <dt><code>val</code> (out)</dt> <dd>value to write to</dd> </dl> <h2 id=return-value>Return value<a class=headerlink href=#return-value title="Permanent link">&para;</a></h2> <p>Copy of the <abbr title="JavaScript Object Notation">JSON</abbr> value, converted to <code>ValueType</code></p> <h2 id=examples>Examples<a class=headerlink href=#examples title="Permanent link">&para;</a></h2> <details class=example> <summary>Example: (1) Default-constructible type</summary> <p>The example below shows how a <code>from_json</code> function can be implemented for a user-defined type. This function is called by the <code>adl_serializer</code> when <code>get&lt;ns::person&gt;()</code> is called.</p> <div class=highlight><pre><span></span><code><span class=cp>#include</span><span class=w> </span><span class=cpf>&lt;iostream&gt;</span>
+</code></pre></div> <p>This function is usually called by the <a href=../../basic_json/get/ ><code>get()</code></a> function of the <a href=../../basic_json/ >basic_json</a> class (either explicitly or via the conversion operators).</p> <ol> <li>This function is chosen for default-constructible value types.</li> <li>This function is chosen for value types which are not default-constructible.</li> </ol> <h2 id=parameters>Parameters<a class=headerlink href=#parameters title="Permanent link">&para;</a></h2> <dl> <dt><code>j</code> (in)</dt> <dd><abbr title="JavaScript Object Notation">JSON</abbr> value to read from</dd> <dt><code>val</code> (out)</dt> <dd>value to write to</dd> </dl> <h2 id=return-value>Return value<a class=headerlink href=#return-value title="Permanent link">&para;</a></h2> <ol> <li>(none) -- the converted value is written to the output parameter <code>val</code>.</li> <li>the <abbr title="JavaScript Object Notation">JSON</abbr> value <code>j</code> converted to <code>TargetType</code></li> </ol> <h2 id=examples>Examples<a class=headerlink href=#examples title="Permanent link">&para;</a></h2> <details class=example> <summary>Example: (1) Default-constructible type</summary> <p>The example below shows how a <code>from_json</code> function can be implemented for a user-defined type. This function is called by the <code>adl_serializer</code> when <code>get&lt;ns::person&gt;()</code> is called.</p> <div class=highlight><pre><span></span><code><span class=cp>#include</span><span class=w> </span><span class=cpf>&lt;iostream&gt;</span>
 <span class=cp>#include</span><span class=w> </span><span class=cpf>&lt;nlohmann/json.hpp&gt;</span>
 
 <span class=k>using</span><span class=w> </span><span class=n>json</span><span class=w> </span><span class=o>=</span><span class=w> </span><span class=n>nlohmann</span><span class=o>::</span><span class=n>json</span><span class=p>;</span>
@@ -101,4 +101,4 @@
 <span class=w>    </span><span class=n>std</span><span class=o>::</span><span class=n>cout</span><span class=w> </span><span class=o>&lt;&lt;</span><span class=w> </span><span class=n>p</span><span class=p>.</span><span class=n>name</span><span class=w> </span><span class=o>&lt;&lt;</span><span class=w> </span><span class=s>&quot; (&quot;</span><span class=w> </span><span class=o>&lt;&lt;</span><span class=w> </span><span class=n>p</span><span class=p>.</span><span class=n>age</span><span class=w> </span><span class=o>&lt;&lt;</span><span class=w> </span><span class=s>&quot;) lives in &quot;</span><span class=w> </span><span class=o>&lt;&lt;</span><span class=w> </span><span class=n>p</span><span class=p>.</span><span class=n>address</span><span class=w> </span><span class=o>&lt;&lt;</span><span class=w> </span><span class=n>std</span><span class=o>::</span><span class=n>endl</span><span class=p>;</span>
 <span class=p>}</span>
 </code></pre></div> <p>Output:</p> <div class=highlight><pre><span></span><code><span class=err>Ned</span><span class=w> </span><span class=err>Fla</span><span class=kc>n</span><span class=err>ders</span><span class=w> </span><span class=err>(</span><span class=mi>60</span><span class=err>)</span><span class=w> </span><span class=err>lives</span><span class=w> </span><span class=err>i</span><span class=kc>n</span><span class=w> </span><span class=mi>744</span><span class=w> </span><span class=err>Evergree</span><span class=kc>n</span><span class=w> </span><span class=err>Terrace</span>
-</code></pre></div> </details> <h2 id=see-also>See also<a class=headerlink href=#see-also title="Permanent link">&para;</a></h2> <ul> <li><a href=../to_json/ >to_json</a></li> </ul> <h2 id=version-history>Version history<a class=headerlink href=#version-history title="Permanent link">&para;</a></h2> <ul> <li>Added in version 2.1.0.</li> </ul> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 23, 2026 11:16:18 UTC">June 23, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
+</code></pre></div> </details> <h2 id=see-also>See also<a class=headerlink href=#see-also title="Permanent link">&para;</a></h2> <ul> <li><a href=../to_json/ >to_json</a></li> </ul> <h2 id=version-history>Version history<a class=headerlink href=#version-history title="Permanent link">&para;</a></h2> <ul> <li>Added in version 2.1.0.</li> </ul> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 29, 2026 20:15:18 UTC">June 29, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
diff --git a/api/adl_serializer/index.html b/api/adl_serializer/index.html
index e879aa1..5627688 100644
--- a/api/adl_serializer/index.html
+++ b/api/adl_serializer/index.html
@@ -12,4 +12,4 @@
 <span class=w>        </span><span class=c1>// same thing, but with the &quot;from_json&quot; method</span>
 <span class=w>    </span><span class=p>}</span>
 <span class=p>};</span>
-</code></pre></div> <h2 id=member-functions>Member functions<a class=headerlink href=#member-functions title="Permanent link">&para;</a></h2> <ul> <li><a href=from_json/ ><strong>from_json</strong></a> - convert a <abbr title="JavaScript Object Notation">JSON</abbr> value to any value type</li> <li><a href=to_json/ ><strong>to_json</strong></a> - convert any value type to a <abbr title="JavaScript Object Notation">JSON</abbr> value</li> </ul> <h2 id=version-history>Version history<a class=headerlink href=#version-history title="Permanent link">&para;</a></h2> <ul> <li>Added in version 2.1.0.</li> </ul> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 23, 2026 11:16:18 UTC">June 23, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
+</code></pre></div> <h2 id=member-functions>Member functions<a class=headerlink href=#member-functions title="Permanent link">&para;</a></h2> <ul> <li><a href=from_json/ ><strong>from_json</strong></a> - convert a <abbr title="JavaScript Object Notation">JSON</abbr> value to any value type</li> <li><a href=to_json/ ><strong>to_json</strong></a> - convert any value type to a <abbr title="JavaScript Object Notation">JSON</abbr> value</li> </ul> <h2 id=version-history>Version history<a class=headerlink href=#version-history title="Permanent link">&para;</a></h2> <ul> <li>Added in version 2.1.0.</li> </ul> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 29, 2026 20:15:18 UTC">June 29, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
diff --git a/api/adl_serializer/to_json/index.html b/api/adl_serializer/to_json/index.html
index e0ee6d4..93d9691 100644
--- a/api/adl_serializer/to_json/index.html
+++ b/api/adl_serializer/to_json/index.html
@@ -35,4 +35,4 @@
 <span class=w>    </span><span class=n>std</span><span class=o>::</span><span class=n>cout</span><span class=w> </span><span class=o>&lt;&lt;</span><span class=w> </span><span class=n>j</span><span class=w> </span><span class=o>&lt;&lt;</span><span class=w> </span><span class=n>std</span><span class=o>::</span><span class=n>endl</span><span class=p>;</span>
 <span class=p>}</span>
 </code></pre></div> <p>Output:</p> <div class=highlight><pre><span></span><code><span class=p>{</span><span class=nt>&quot;address&quot;</span><span class=p>:</span><span class=s2>&quot;744 Evergreen Terrace&quot;</span><span class=p>,</span><span class=nt>&quot;age&quot;</span><span class=p>:</span><span class=mi>60</span><span class=p>,</span><span class=nt>&quot;name&quot;</span><span class=p>:</span><span class=s2>&quot;Ned Flanders&quot;</span><span class=p>}</span>
-</code></pre></div> </details> <h2 id=see-also>See also<a class=headerlink href=#see-also title="Permanent link">&para;</a></h2> <ul> <li><a href=../from_json/ >from_json</a></li> </ul> <h2 id=version-history>Version history<a class=headerlink href=#version-history title="Permanent link">&para;</a></h2> <ul> <li>Added in version 2.1.0.</li> </ul> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 23, 2026 11:16:18 UTC">June 23, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
+</code></pre></div> </details> <h2 id=see-also>See also<a class=headerlink href=#see-also title="Permanent link">&para;</a></h2> <ul> <li><a href=../from_json/ >from_json</a></li> </ul> <h2 id=version-history>Version history<a class=headerlink href=#version-history title="Permanent link">&para;</a></h2> <ul> <li>Added in version 2.1.0.</li> </ul> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 29, 2026 20:15:18 UTC">June 29, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
diff --git a/api/basic_json/accept/index.html b/api/basic_json/accept/index.html
index ebe202b..9ee8f19 100644
--- a/api/basic_json/accept/index.html
+++ b/api/basic_json/accept/index.html
@@ -36,4 +36,4 @@
 <span class=w>              </span><span class=o>&lt;&lt;</span><span class=w> </span><span class=n>json</span><span class=o>::</span><span class=n>accept</span><span class=p>(</span><span class=n>invalid_text</span><span class=p>)</span><span class=w> </span><span class=o>&lt;&lt;</span><span class=w> </span><span class=sc>&#39;\n&#39;</span><span class=p>;</span>
 <span class=p>}</span>
 </code></pre></div> <p>Output:</p> <div class=highlight><pre><span></span><code><span class=kc>true</span><span class=w> </span><span class=kc>false</span>
-</code></pre></div> </details> <h2 id=see-also>See also<a class=headerlink href=#see-also title="Permanent link">&para;</a></h2> <ul> <li><a href=../parse/ >parse</a> - deserialize from a compatible input</li> <li><a href=../../operator_gtgt/ >operator&gt;&gt;</a> - deserialize from stream</li> </ul> <h2 id=version-history>Version history<a class=headerlink href=#version-history title="Permanent link">&para;</a></h2> <ul> <li>Added in version 3.0.0.</li> <li>Ignoring comments via <code>ignore_comments</code> added in version 3.9.0.</li> <li>Changed <a href=../../../features/assertions/ >runtime assertion</a> in case of <code>FILE*</code> null pointers to exception in version 3.12.0.</li> <li>Added <code>ignore_trailing_commas</code> in version 3.12.1.</li> </ul> <div class="admonition warning"> <p class=admonition-title>Deprecation</p> <p>Overload (2) replaces calls to <code>accept</code> with a pair of iterators as their first parameter which has been deprecated in version 3.8.0. This overload will be removed in version 4.0.0. Please replace all calls like <code class=highlight><span class=n>accept</span><span class=p>({</span><span class=n>ptr</span><span class=p>,</span><span class=w> </span><span class=n>ptr</span><span class=o>+</span><span class=n>len</span><span class=p>},</span><span class=w> </span><span class=p>...);</span></code> with <code class=highlight><span class=n>accept</span><span class=p>(</span><span class=n>ptr</span><span class=p>,</span><span class=w> </span><span class=n>ptr</span><span class=o>+</span><span class=n>len</span><span class=p>,</span><span class=w> </span><span class=p>...);</span></code>.</p> <p>You should be warned by your compiler with a <code>-Wdeprecated-declarations</code> warning if you are using a deprecated function.</p> </div> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 23, 2026 11:16:18 UTC">June 23, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
+</code></pre></div> </details> <h2 id=see-also>See also<a class=headerlink href=#see-also title="Permanent link">&para;</a></h2> <ul> <li><a href=../parse/ >parse</a> - deserialize from a compatible input</li> <li><a href=../sax_parse/ >sax_parse</a> - parse input using the <abbr title="Simple API for XML">SAX</abbr> interface</li> <li><a href=../../operator_gtgt/ >operator&gt;&gt;</a> - deserialize from stream</li> </ul> <h2 id=version-history>Version history<a class=headerlink href=#version-history title="Permanent link">&para;</a></h2> <ul> <li>Added in version 3.0.0.</li> <li>Ignoring comments via <code>ignore_comments</code> added in version 3.9.0.</li> <li>Changed <a href=../../../features/assertions/ >runtime assertion</a> in case of <code>FILE*</code> null pointers to exception in version 3.12.0.</li> <li>Added <code>ignore_trailing_commas</code> in version 3.12.x.</li> </ul> <div class="admonition warning"> <p class=admonition-title>Deprecation</p> <p>Overload (2) replaces calls to <code>accept</code> with a pair of iterators as their first parameter which has been deprecated in version 3.8.0. This overload will be removed in version 4.0.0. Please replace all calls like <code class=highlight><span class=n>accept</span><span class=p>({</span><span class=n>ptr</span><span class=p>,</span><span class=w> </span><span class=n>ptr</span><span class=o>+</span><span class=n>len</span><span class=p>},</span><span class=w> </span><span class=p>...);</span></code> with <code class=highlight><span class=n>accept</span><span class=p>(</span><span class=n>ptr</span><span class=p>,</span><span class=w> </span><span class=n>ptr</span><span class=o>+</span><span class=n>len</span><span class=p>,</span><span class=w> </span><span class=p>...);</span></code>.</p> <p>You should be warned by your compiler with a <code>-Wdeprecated-declarations</code> warning if you are using a deprecated function.</p> </div> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 29, 2026 20:15:18 UTC">June 29, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
diff --git a/api/basic_json/array/index.html b/api/basic_json/array/index.html
index b475939..eb32898 100644
--- a/api/basic_json/array/index.html
+++ b/api/basic_json/array/index.html
@@ -22,4 +22,4 @@
 <span class=p>[]</span>
 <span class=p>[</span><span class=mi>1</span><span class=p>,</span><span class=mi>2</span><span class=p>,</span><span class=mi>3</span><span class=p>,</span><span class=mi>4</span><span class=p>]</span>
 <span class=p>[[</span><span class=s2>&quot;one&quot;</span><span class=p>,</span><span class=mi>1</span><span class=p>],[</span><span class=s2>&quot;two&quot;</span><span class=p>,</span><span class=mi>2</span><span class=p>]]</span>
-</code></pre></div> </details> <h2 id=see-also>See also<a class=headerlink href=#see-also title="Permanent link">&para;</a></h2> <ul> <li><a href=../basic_json/ ><code>basic_json(initializer_list_t)</code></a> - create a <abbr title="JavaScript Object Notation">JSON</abbr> value from an initializer list</li> <li><a href=../object/ ><code>object</code></a> - create a <abbr title="JavaScript Object Notation">JSON</abbr> object value from an initializer list</li> </ul> <h2 id=version-history>Version history<a class=headerlink href=#version-history title="Permanent link">&para;</a></h2> <ul> <li>Added in version 1.0.0.</li> </ul> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 23, 2026 11:16:18 UTC">June 23, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
+</code></pre></div> </details> <h2 id=see-also>See also<a class=headerlink href=#see-also title="Permanent link">&para;</a></h2> <ul> <li><a href=../basic_json/ ><code>basic_json(initializer_list_t)</code></a> - create a <abbr title="JavaScript Object Notation">JSON</abbr> value from an initializer list</li> <li><a href=../object/ ><code>object</code></a> - create a <abbr title="JavaScript Object Notation">JSON</abbr> object value from an initializer list</li> </ul> <h2 id=version-history>Version history<a class=headerlink href=#version-history title="Permanent link">&para;</a></h2> <ul> <li>Added in version 1.0.0.</li> </ul> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 29, 2026 20:15:18 UTC">June 29, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
diff --git a/api/basic_json/array_t/index.html b/api/basic_json/array_t/index.html
index 0e38586..887e157 100644
--- a/api/basic_json/array_t/index.html
+++ b/api/basic_json/array_t/index.html
@@ -14,4 +14,4 @@
 <span class=w>    </span><span class=n>std</span><span class=o>::</span><span class=n>cout</span><span class=w> </span><span class=o>&lt;&lt;</span><span class=w> </span><span class=n>std</span><span class=o>::</span><span class=n>boolalpha</span><span class=w> </span><span class=o>&lt;&lt;</span><span class=w> </span><span class=n>std</span><span class=o>::</span><span class=n>is_same</span><span class=o>&lt;</span><span class=n>std</span><span class=o>::</span><span class=n>vector</span><span class=o>&lt;</span><span class=n>json</span><span class=o>&gt;</span><span class=p>,</span><span class=w> </span><span class=n>json</span><span class=o>::</span><span class=n>array_t</span><span class=o>&gt;::</span><span class=n>value</span><span class=w> </span><span class=o>&lt;&lt;</span><span class=w> </span><span class=n>std</span><span class=o>::</span><span class=n>endl</span><span class=p>;</span>
 <span class=p>}</span>
 </code></pre></div> <p>Output:</p> <div class=highlight><pre><span></span><code><span class=kc>true</span>
-</code></pre></div> </details> <h2 id=version-history>Version history<a class=headerlink href=#version-history title="Permanent link">&para;</a></h2> <ul> <li>Added in version 1.0.0.</li> </ul> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 23, 2026 11:16:18 UTC">June 23, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
+</code></pre></div> </details> <h2 id=version-history>Version history<a class=headerlink href=#version-history title="Permanent link">&para;</a></h2> <ul> <li>Added in version 1.0.0.</li> </ul> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 29, 2026 20:15:18 UTC">June 29, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
diff --git a/api/basic_json/at/index.html b/api/basic_json/at/index.html
index eb1fd51..4ca2789 100644
--- a/api/basic_json/at/index.html
+++ b/api/basic_json/at/index.html
@@ -15,7 +15,7 @@
 <span class=c1>// (4)</span>
 <span class=n>reference</span><span class=w> </span><span class=nf>at</span><span class=p>(</span><span class=k>const</span><span class=w> </span><span class=n>json_pointer</span><span class=o>&amp;</span><span class=w> </span><span class=n>ptr</span><span class=p>);</span>
 <span class=n>const_reference</span><span class=w> </span><span class=nf>at</span><span class=p>(</span><span class=k>const</span><span class=w> </span><span class=n>json_pointer</span><span class=o>&amp;</span><span class=w> </span><span class=n>ptr</span><span class=p>)</span><span class=w> </span><span class=k>const</span><span class=p>;</span>
-</code></pre></div> <ol> <li>Returns a reference to the array element at specified location <code>idx</code>, with bounds checking.</li> <li>Returns a reference to the object element with specified key <code>key</code>, with bounds checking.</li> <li>See 2. This overload is only available if <code>KeyType</code> is comparable with <code class=highlight><span class=k>typename</span><span class=w> </span><span class=nc>object_t</span><span class=o>::</span><span class=n>key_type</span></code> and <code class=highlight><span class=k>typename</span><span class=w> </span><span class=nc>object_comparator_t</span><span class=o>::</span><span class=n>is_transparent</span></code> denotes a type.</li> <li>Returns a reference to the element at specified <abbr title="JavaScript Object Notation">JSON</abbr> pointer <code>ptr</code>, with bounds checking.</li> </ol> <h2 id=template-parameters>Template parameters<a class=headerlink href=#template-parameters title="Permanent link">&para;</a></h2> <dl> <dt><code>KeyType</code></dt> <dd>A type for an object key other than <a href=../../json_pointer/ ><code>json_pointer</code></a> that is comparable with <a href=../string_t/ ><code>string_t</code></a> using <a href=../object_comparator_t/ ><code>object_comparator_t</code></a>. This can also be a string view (C++17).</dd> </dl> <h2 id=parameters>Parameters<a class=headerlink href=#parameters title="Permanent link">&para;</a></h2> <dl> <dt><code>idx</code> (in)</dt> <dd>index of the element to access</dd> <dt><code>key</code> (in)</dt> <dd>object key of the elements to access</dd> <dt><code>ptr</code> (in)</dt> <dd><abbr title="JavaScript Object Notation">JSON</abbr> pointer to the desired element</dd> </dl> <h2 id=return-value>Return value<a class=headerlink href=#return-value title="Permanent link">&para;</a></h2> <ol> <li>reference to the element at index <code>idx</code></li> <li>reference to the element at key <code>key</code></li> <li>reference to the element at key <code>key</code></li> <li>reference to the element pointed to by <code>ptr</code></li> </ol> <h2 id=exception-safety>Exception safety<a class=headerlink href=#exception-safety title="Permanent link">&para;</a></h2> <p>Strong exception safety: if an exception occurs, the original value stays intact.</p> <h2 id=exceptions>Exceptions<a class=headerlink href=#exceptions title="Permanent link">&para;</a></h2> <ol> <li>The function can throw the following exceptions:<ul> <li>Throws <a href=../../../home/exceptions/#jsonexceptiontype_error304><code>type_error.304</code></a> if the <abbr title="JavaScript Object Notation">JSON</abbr> value is not an array; in this case, calling <code>at</code> with an index makes no sense. See the example below.</li> <li>Throws <a href=../../../home/exceptions/#jsonexceptionout_of_range401><code>out_of_range.401</code></a> if the index <code>idx</code> is out of range of the array; that is, <code>idx &gt;= size()</code>. See the example below.</li> </ul> </li> <li>The function can throw the following exceptions:<ul> <li>Throws <a href=../../../home/exceptions/#jsonexceptiontype_error304><code>type_error.304</code></a> if the <abbr title="JavaScript Object Notation">JSON</abbr> value is not an object; in this case, calling <code>at</code> with a key makes no sense. See the example below.</li> <li>Throws <a href=../../../home/exceptions/#jsonexceptionout_of_range403><code>out_of_range.403</code></a> if the key <code>key</code> is not stored in the object; that is, <code>find(key) == end()</code>. See the example below.</li> </ul> </li> <li>See 2.</li> <li>The function can throw the following exceptions:<ul> <li>Throws <a href=../../../home/exceptions/#jsonexceptionparse_error106><code>parse_error.106</code></a> if an array index in the passed <abbr title="JavaScript Object Notation">JSON</abbr> pointer <code>ptr</code> begins with '0'. See the example below.</li> <li>Throws <a href=../../../home/exceptions/#jsonexceptionparse_error109><code>parse_error.109</code></a> if an array index in the passed <abbr title="JavaScript Object Notation">JSON</abbr> pointer <code>ptr</code> is not a number. See the example below.</li> <li>Throws <a href=../../../home/exceptions/#jsonexceptionout_of_range401><code>out_of_range.401</code></a> if an array index in the passed <abbr title="JavaScript Object Notation">JSON</abbr> pointer <code>ptr</code> is out of range. See the example below.</li> <li>Throws <a href=../../../home/exceptions/#jsonexceptionout_of_range402><code>out_of_range.402</code></a> if the array index '-' is used in the passed <abbr title="JavaScript Object Notation">JSON</abbr> pointer <code>ptr</code>. As <code>at</code> provides checked access (and no elements are implicitly inserted), the index '-' is always invalid. See the example below.</li> <li>Throws <a href=../../../home/exceptions/#jsonexceptionout_of_range403><code>out_of_range.403</code></a> if the <abbr title="JavaScript Object Notation">JSON</abbr> pointer describes a key of an object which cannot be found. See the example below.</li> <li>Throws <a href=../../../home/exceptions/#jsonexceptionout_of_range404><code>out_of_range.404</code></a> if the <abbr title="JavaScript Object Notation">JSON</abbr> pointer <code>ptr</code> can not be resolved. See the example below.</li> </ul> </li> </ol> <h2 id=complexity>Complexity<a class=headerlink href=#complexity title="Permanent link">&para;</a></h2> <ol> <li>Constant.</li> <li>Logarithmic in the size of the container.</li> <li>Logarithmic in the size of the container.</li> <li>Logarithmic in the size of the container.</li> </ol> <h2 id=examples>Examples<a class=headerlink href=#examples title="Permanent link">&para;</a></h2> <details class=example> <summary>Example: (1) access specified array element with bounds checking</summary> <p>The example below shows how array elements can be read and written using <code>at()</code>. It also demonstrates the different exceptions that can be thrown.</p> <div class=highlight><pre><span></span><code><span class=cp>#include</span><span class=w> </span><span class=cpf>&lt;iostream&gt;</span>
+</code></pre></div> <ol> <li>Returns a reference to the array element at specified location <code>idx</code>, with bounds checking.</li> <li>Returns a reference to the object element with specified key <code>key</code>, with bounds checking.</li> <li>See 2. This overload is only available if <code>KeyType</code> is comparable with <code class=highlight><span class=k>typename</span><span class=w> </span><span class=nc>object_t</span><span class=o>::</span><span class=n>key_type</span></code> and <code class=highlight><span class=k>typename</span><span class=w> </span><span class=nc>object_comparator_t</span><span class=o>::</span><span class=n>is_transparent</span></code> denotes a type.</li> <li>Returns a reference to the element at specified <abbr title="JavaScript Object Notation">JSON</abbr> pointer <code>ptr</code>, with bounds checking.</li> </ol> <h2 id=template-parameters>Template parameters<a class=headerlink href=#template-parameters title="Permanent link">&para;</a></h2> <dl> <dt><code>KeyType</code></dt> <dd>A type for an object key other than <a href=../../json_pointer/ ><code>json_pointer</code></a> that is comparable with <a href=../string_t/ ><code>string_t</code></a> using <a href=../object_comparator_t/ ><code>object_comparator_t</code></a>. This can also be a string view (C++17).</dd> </dl> <h2 id=parameters>Parameters<a class=headerlink href=#parameters title="Permanent link">&para;</a></h2> <dl> <dt><code>idx</code> (in)</dt> <dd>index of the element to access</dd> <dt><code>key</code> (in)</dt> <dd>object key of the elements to access</dd> <dt><code>ptr</code> (in)</dt> <dd><abbr title="JavaScript Object Notation">JSON</abbr> pointer to the desired element</dd> </dl> <h2 id=return-value>Return value<a class=headerlink href=#return-value title="Permanent link">&para;</a></h2> <ol> <li>reference to the element at index <code>idx</code></li> <li>reference to the element at key <code>key</code></li> <li>reference to the element at key <code>key</code></li> <li>reference to the element pointed to by <code>ptr</code></li> </ol> <h2 id=exception-safety>Exception safety<a class=headerlink href=#exception-safety title="Permanent link">&para;</a></h2> <p>Strong exception safety: if an exception occurs, the original value stays intact.</p> <h2 id=exceptions>Exceptions<a class=headerlink href=#exceptions title="Permanent link">&para;</a></h2> <ol> <li>The function can throw the following exceptions:<ul> <li>Throws <a href=../../../home/exceptions/#jsonexceptiontype_error304><code>type_error.304</code></a> if the <abbr title="JavaScript Object Notation">JSON</abbr> value is not an array; in this case, calling <code>at</code> with an index makes no sense. See the example below.</li> <li>Throws <a href=../../../home/exceptions/#jsonexceptionout_of_range401><code>out_of_range.401</code></a> if the index <code>idx</code> is out of range of the array; that is, <code>idx &gt;= size()</code>. See the example below.</li> </ul> </li> <li>The function can throw the following exceptions:<ul> <li>Throws <a href=../../../home/exceptions/#jsonexceptiontype_error304><code>type_error.304</code></a> if the <abbr title="JavaScript Object Notation">JSON</abbr> value is not an object; in this case, calling <code>at</code> with a key makes no sense. See the example below.</li> <li>Throws <a href=../../../home/exceptions/#jsonexceptionout_of_range403><code>out_of_range.403</code></a> if the key <code>key</code> is not stored in the object; that is, <code>find(key) == end()</code>. See the example below.</li> </ul> </li> <li>See 2.</li> <li>The function can throw the following exceptions:<ul> <li>Throws <a href=../../../home/exceptions/#jsonexceptionparse_error106><code>parse_error.106</code></a> if an array index in the passed <abbr title="JavaScript Object Notation">JSON</abbr> pointer <code>ptr</code> begins with '0'. See the example below.</li> <li>Throws <a href=../../../home/exceptions/#jsonexceptionparse_error109><code>parse_error.109</code></a> if an array index in the passed <abbr title="JavaScript Object Notation">JSON</abbr> pointer <code>ptr</code> is not a number. See the example below.</li> <li>Throws <a href=../../../home/exceptions/#jsonexceptionout_of_range401><code>out_of_range.401</code></a> if an array index in the passed <abbr title="JavaScript Object Notation">JSON</abbr> pointer <code>ptr</code> is out of range. See the example below.</li> <li>Throws <a href=../../../home/exceptions/#jsonexceptionout_of_range402><code>out_of_range.402</code></a> if the array index '-' is used in the passed <abbr title="JavaScript Object Notation">JSON</abbr> pointer <code>ptr</code>. As <code>at</code> provides checked access (and no elements are implicitly inserted), the index '-' is always invalid. See the example below.</li> <li>Throws <a href=../../../home/exceptions/#jsonexceptionout_of_range403><code>out_of_range.403</code></a> if the <abbr title="JavaScript Object Notation">JSON</abbr> pointer describes a key of an object which cannot be found. See the example below.</li> <li>Throws <a href=../../../home/exceptions/#jsonexceptionout_of_range404><code>out_of_range.404</code></a> if the <abbr title="JavaScript Object Notation">JSON</abbr> pointer <code>ptr</code> can not be resolved. See the example below.</li> <li>Throws <a href=../../../home/exceptions/#jsonexceptionout_of_range410><code>out_of_range.410</code></a> if an array index in the passed <abbr title="JavaScript Object Notation">JSON</abbr> pointer <code>ptr</code> exceeds the range of <code>size_type</code> (e.g., on 32-bit platforms).</li> </ul> </li> </ol> <h2 id=complexity>Complexity<a class=headerlink href=#complexity title="Permanent link">&para;</a></h2> <ol> <li>Constant.</li> <li>Logarithmic in the size of the container.</li> <li>Logarithmic in the size of the container.</li> <li>Logarithmic in the size of the container.</li> </ol> <h2 id=examples>Examples<a class=headerlink href=#examples title="Permanent link">&para;</a></h2> <details class=example> <summary>Example: (1) access specified array element with bounds checking</summary> <p>The example below shows how array elements can be read and written using <code>at()</code>. It also demonstrates the different exceptions that can be thrown.</p> <div class=highlight><pre><span></span><code><span class=cp>#include</span><span class=w> </span><span class=cpf>&lt;iostream&gt;</span>
 <span class=cp>#include</span><span class=w> </span><span class=cpf>&lt;nlohmann/json.hpp&gt;</span>
 
 <span class=k>using</span><span class=w> </span><span class=n>json</span><span class=w> </span><span class=o>=</span><span class=w> </span><span class=n>nlohmann</span><span class=o>::</span><span class=n>json</span><span class=p>;</span>
@@ -498,4 +498,4 @@
 <span class=p>[</span><span class=err>jso</span><span class=kc>n</span><span class=err>.excep</span><span class=kc>t</span><span class=err>io</span><span class=kc>n</span><span class=err>.ou</span><span class=kc>t</span><span class=err>_o</span><span class=kc>f</span><span class=err>_ra</span><span class=kc>n</span><span class=err>ge.</span><span class=mi>402</span><span class=p>]</span><span class=w> </span><span class=err>array</span><span class=w> </span><span class=err>i</span><span class=kc>n</span><span class=err>dex</span><span class=w> </span><span class=err>&#39;</span><span class=mi>-</span><span class=err>&#39;</span><span class=w> </span><span class=err>(</span><span class=mi>2</span><span class=err>)</span><span class=w> </span><span class=err>is</span><span class=w> </span><span class=err>ou</span><span class=kc>t</span><span class=w> </span><span class=err>o</span><span class=kc>f</span><span class=w> </span><span class=err>ra</span><span class=kc>n</span><span class=err>ge</span>
 <span class=p>[</span><span class=err>jso</span><span class=kc>n</span><span class=err>.excep</span><span class=kc>t</span><span class=err>io</span><span class=kc>n</span><span class=err>.ou</span><span class=kc>t</span><span class=err>_o</span><span class=kc>f</span><span class=err>_ra</span><span class=kc>n</span><span class=err>ge.</span><span class=mi>403</span><span class=p>]</span><span class=w> </span><span class=err>key</span><span class=w> </span><span class=err>&#39;</span><span class=kc>f</span><span class=err>oo&#39;</span><span class=w> </span><span class=kc>n</span><span class=err>o</span><span class=kc>t</span><span class=w> </span><span class=kc>f</span><span class=err>ou</span><span class=kc>n</span><span class=err>d</span>
 <span class=p>[</span><span class=err>jso</span><span class=kc>n</span><span class=err>.excep</span><span class=kc>t</span><span class=err>io</span><span class=kc>n</span><span class=err>.ou</span><span class=kc>t</span><span class=err>_o</span><span class=kc>f</span><span class=err>_ra</span><span class=kc>n</span><span class=err>ge.</span><span class=mi>404</span><span class=p>]</span><span class=w> </span><span class=err>u</span><span class=kc>nres</span><span class=err>olved</span><span class=w> </span><span class=err>re</span><span class=kc>feren</span><span class=err>ce</span><span class=w> </span><span class=kc>t</span><span class=err>oke</span><span class=kc>n</span><span class=w> </span><span class=err>&#39;</span><span class=kc>f</span><span class=err>oo&#39;</span>
-</code></pre></div> </details> <h2 id=see-also>See also<a class=headerlink href=#see-also title="Permanent link">&para;</a></h2> <ul> <li>documentation on <a href=../../../features/element_access/checked_access/ >checked access</a></li> <li><a href=../operator%5B%5D/ ><code>operator[]</code></a> for unchecked access by reference</li> <li><a href=../value/ ><code>value</code></a> for access with default value</li> </ul> <h2 id=version-history>Version history<a class=headerlink href=#version-history title="Permanent link">&para;</a></h2> <ol> <li>Added in version 1.0.0.</li> <li>Added in version 1.0.0.</li> <li>Added in version 3.11.0.</li> <li>Added in version 2.0.0.</li> </ol> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 23, 2026 11:16:18 UTC">June 23, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
+</code></pre></div> </details> <h2 id=see-also>See also<a class=headerlink href=#see-also title="Permanent link">&para;</a></h2> <ul> <li>documentation on <a href=../../../features/element_access/checked_access/ >checked access</a></li> <li><a href=../operator%5B%5D/ ><code>operator[]</code></a> for unchecked access by reference</li> <li><a href=../value/ ><code>value</code></a> for access with default value</li> </ul> <h2 id=version-history>Version history<a class=headerlink href=#version-history title="Permanent link">&para;</a></h2> <ol> <li>Added in version 1.0.0.</li> <li>Added in version 1.0.0.</li> <li>Added in version 3.11.0.</li> <li>Added in version 2.0.0.</li> </ol> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 29, 2026 20:15:18 UTC">June 29, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
diff --git a/api/basic_json/back/index.html b/api/basic_json/back/index.html
index ff2c579..2bd8af5 100644
--- a/api/basic_json/back/index.html
+++ b/api/basic_json/back/index.html
@@ -49,4 +49,4 @@
 <span class=mi>16</span>
 <span class=s2>&quot;Hello, world&quot;</span>
 <span class=p>[</span><span class=err>jso</span><span class=kc>n</span><span class=err>.excep</span><span class=kc>t</span><span class=err>io</span><span class=kc>n</span><span class=err>.i</span><span class=kc>n</span><span class=err>valid_i</span><span class=kc>terat</span><span class=err>or.</span><span class=mi>214</span><span class=p>]</span><span class=w> </span><span class=err>ca</span><span class=kc>nn</span><span class=err>o</span><span class=kc>t</span><span class=w> </span><span class=err>ge</span><span class=kc>t</span><span class=w> </span><span class=err>value</span>
-</code></pre></div> </details> <h2 id=see-also>See also<a class=headerlink href=#see-also title="Permanent link">&para;</a></h2> <ul> <li><a href=../front/ >front</a> to access the first element</li> </ul> <h2 id=version-history>Version history<a class=headerlink href=#version-history title="Permanent link">&para;</a></h2> <ul> <li>Added in version 1.0.0.</li> <li>Adjusted code to return reference to binary values in version 3.8.0.</li> </ul> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 23, 2026 11:16:18 UTC">June 23, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
+</code></pre></div> </details> <h2 id=see-also>See also<a class=headerlink href=#see-also title="Permanent link">&para;</a></h2> <ul> <li><a href=../front/ >front</a> to access the first element</li> </ul> <h2 id=version-history>Version history<a class=headerlink href=#version-history title="Permanent link">&para;</a></h2> <ul> <li>Added in version 1.0.0.</li> <li>Adjusted code to return reference to binary values in version 3.8.0.</li> </ul> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 29, 2026 20:15:18 UTC">June 29, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
diff --git a/api/basic_json/basic_json/index.html b/api/basic_json/basic_json/index.html
index 70fd6d9..1a2c300 100644
--- a/api/basic_json/basic_json/index.html
+++ b/api/basic_json/basic_json/index.html
@@ -455,4 +455,4 @@
 <span class=p>}</span>
 </code></pre></div> <p>Output:</p> <div class=highlight><pre><span></span><code><span class=kc>null</span>
 <span class=mi>23</span>
-</code></pre></div> </details> <h2 id=version-history>Version history<a class=headerlink href=#version-history title="Permanent link">&para;</a></h2> <ol> <li>Since version 1.0.0.</li> <li>Since version 1.0.0.</li> <li>Since version 2.1.0.</li> <li>Since version 3.2.0.</li> <li>Since version 1.0.0.</li> <li>Since version 1.0.0.</li> <li>Since version 1.0.0.</li> <li>Since version 1.0.0.</li> <li>Since version 1.0.0.</li> </ol> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 23, 2026 11:16:18 UTC">June 23, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
+</code></pre></div> </details> <h2 id=version-history>Version history<a class=headerlink href=#version-history title="Permanent link">&para;</a></h2> <ol> <li>Since version 1.0.0.</li> <li>Since version 1.0.0.</li> <li>Since version 2.1.0.</li> <li>Since version 3.2.0.</li> <li>Since version 1.0.0.</li> <li>Since version 1.0.0.</li> <li>Since version 1.0.0.</li> <li>Since version 1.0.0.</li> <li>Since version 1.0.0.</li> </ol> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 29, 2026 20:15:18 UTC">June 29, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
diff --git a/api/basic_json/begin/index.html b/api/basic_json/begin/index.html
index b2b4d6c..4c4149a 100644
--- a/api/basic_json/begin/index.html
+++ b/api/basic_json/begin/index.html
@@ -17,4 +17,4 @@
 <span class=w>    </span><span class=n>std</span><span class=o>::</span><span class=n>cout</span><span class=w> </span><span class=o>&lt;&lt;</span><span class=w> </span><span class=o>*</span><span class=n>it</span><span class=w> </span><span class=o>&lt;&lt;</span><span class=w> </span><span class=sc>&#39;\n&#39;</span><span class=p>;</span>
 <span class=p>}</span>
 </code></pre></div> <p>Output:</p> <div class=highlight><pre><span></span><code><span class=mi>1</span>
-</code></pre></div> </details> <h2 id=version-history>Version history<a class=headerlink href=#version-history title="Permanent link">&para;</a></h2> <ul> <li>Added in version 1.0.0.</li> </ul> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 23, 2026 11:16:18 UTC">June 23, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
+</code></pre></div> </details> <h2 id=version-history>Version history<a class=headerlink href=#version-history title="Permanent link">&para;</a></h2> <ul> <li>Added in version 1.0.0.</li> </ul> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 29, 2026 20:15:18 UTC">June 29, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
diff --git a/api/basic_json/binary/index.html b/api/basic_json/binary/index.html
index a5cf480..1325569 100644
--- a/api/basic_json/binary/index.html
+++ b/api/basic_json/binary/index.html
@@ -24,4 +24,4 @@
 <span class=w>    </span><span class=n>std</span><span class=o>::</span><span class=n>cout</span><span class=w> </span><span class=o>&lt;&lt;</span><span class=w> </span><span class=s>&quot;type: &quot;</span><span class=w> </span><span class=o>&lt;&lt;</span><span class=w> </span><span class=n>j</span><span class=p>.</span><span class=n>type_name</span><span class=p>()</span><span class=w> </span><span class=o>&lt;&lt;</span><span class=w> </span><span class=s>&quot;, subtype: &quot;</span><span class=w> </span><span class=o>&lt;&lt;</span><span class=w> </span><span class=n>j</span><span class=p>.</span><span class=n>get_binary</span><span class=p>().</span><span class=n>subtype</span><span class=p>()</span><span class=w> </span><span class=o>&lt;&lt;</span><span class=w> </span><span class=n>std</span><span class=o>::</span><span class=n>endl</span><span class=p>;</span>
 <span class=p>}</span>
 </code></pre></div> <p>Output:</p> <div class=highlight><pre><span></span><code><span class=kc>t</span><span class=err>ype</span><span class=p>:</span><span class=w> </span><span class=err>bi</span><span class=kc>nar</span><span class=err>y</span><span class=p>,</span><span class=w> </span><span class=err>sub</span><span class=kc>t</span><span class=err>ype</span><span class=p>:</span><span class=w> </span><span class=mi>42</span>
-</code></pre></div> </details> <h2 id=version-history>Version history<a class=headerlink href=#version-history title="Permanent link">&para;</a></h2> <ul> <li>Added in version 3.8.0.</li> </ul> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 23, 2026 11:16:18 UTC">June 23, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
+</code></pre></div> </details> <h2 id=version-history>Version history<a class=headerlink href=#version-history title="Permanent link">&para;</a></h2> <ul> <li>Added in version 3.8.0.</li> </ul> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 29, 2026 20:15:18 UTC">June 29, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
diff --git a/api/basic_json/binary_t/index.html b/api/basic_json/binary_t/index.html
index a1470ec..63699b6 100644
--- a/api/basic_json/binary_t/index.html
+++ b/api/basic_json/binary_t/index.html
@@ -10,4 +10,4 @@
 <span class=w>    </span><span class=n>std</span><span class=o>::</span><span class=n>cout</span><span class=w> </span><span class=o>&lt;&lt;</span><span class=w> </span><span class=n>std</span><span class=o>::</span><span class=n>boolalpha</span><span class=w> </span><span class=o>&lt;&lt;</span><span class=w> </span><span class=n>std</span><span class=o>::</span><span class=n>is_same</span><span class=o>&lt;</span><span class=n>nlohmann</span><span class=o>::</span><span class=n>byte_container_with_subtype</span><span class=o>&lt;</span><span class=n>std</span><span class=o>::</span><span class=n>vector</span><span class=o>&lt;</span><span class=n>std</span><span class=o>::</span><span class=kt>uint8_t</span><span class=o>&gt;&gt;</span><span class=p>,</span><span class=w> </span><span class=n>json</span><span class=o>::</span><span class=n>binary_t</span><span class=o>&gt;::</span><span class=n>value</span><span class=w> </span><span class=o>&lt;&lt;</span><span class=w> </span><span class=n>std</span><span class=o>::</span><span class=n>endl</span><span class=p>;</span>
 <span class=p>}</span>
 </code></pre></div> <p>Output:</p> <div class=highlight><pre><span></span><code><span class=kc>true</span>
-</code></pre></div> </details> <h2 id=see-also>See also<a class=headerlink href=#see-also title="Permanent link">&para;</a></h2> <ul> <li><a href=../../byte_container_with_subtype/ >byte_container_with_subtype</a></li> </ul> <h2 id=version-history>Version history<a class=headerlink href=#version-history title="Permanent link">&para;</a></h2> <ul> <li>Added in version 3.8.0. Changed the type of subtype to <code>std::uint64_t</code> in version 3.10.0.</li> </ul> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 23, 2026 11:16:18 UTC">June 23, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
+</code></pre></div> </details> <h2 id=see-also>See also<a class=headerlink href=#see-also title="Permanent link">&para;</a></h2> <ul> <li><a href=../../byte_container_with_subtype/ >byte_container_with_subtype</a></li> </ul> <h2 id=version-history>Version history<a class=headerlink href=#version-history title="Permanent link">&para;</a></h2> <ul> <li>Added in version 3.8.0. Changed the type of subtype to <code>std::uint64_t</code> in version 3.10.0.</li> </ul> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 29, 2026 20:15:18 UTC">June 29, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
diff --git a/api/basic_json/boolean_t/index.html b/api/basic_json/boolean_t/index.html
index edfa4ec..3bc0015 100644
--- a/api/basic_json/boolean_t/index.html
+++ b/api/basic_json/boolean_t/index.html
@@ -1,5 +1,5 @@
 <!doctype html><html lang=en class=no-js> <head><meta charset=utf-8><meta name=viewport content="width=device-width,initial-scale=1"><meta name=author content="Niels Lohmann"><link href="https://json.nlohmann.me/api/basic_json/boolean_t/" rel="canonical"><link href=../binary_t/ rel=prev><link href=../cbegin/ rel=next><link rel=icon href=../../../assets/images/favicon.png><meta name=generator content="mkdocs-1.6.1, mkdocs-material-9.7.6"><title>boolean_t - JSON for Modern C++</title><link rel=stylesheet href=../../../assets/stylesheets/main.484c7ddc.min.css><link rel=stylesheet href=../../../assets/stylesheets/palette.ab4e12ef.min.css><link rel="stylesheet" href="../../../assets/external/fonts.googleapis.com/css.61a430c9.css"><style>:root{--md-text-font:"Roboto";--md-code-font:"JetBrains Mono"}</style><link rel=stylesheet href=../../../css/custom.css><script>__md_scope=new URL("../../..",location),__md_hash=e=>[...e].reduce(((e,_)=>(e<<5)-e+_.charCodeAt(0)),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script></head> <body dir=ltr data-md-color-scheme=default data-md-color-primary=indigo data-md-color-accent=indigo> <input class=md-toggle data-md-toggle=drawer type=checkbox id=__drawer autocomplete=off> <input class=md-toggle data-md-toggle=search type=checkbox id=__search autocomplete=off> <label class=md-overlay for=__drawer></label> <div data-md-component=skip> <a href=#nlohmannbasic_jsonboolean_t class=md-skip> Skip to content </a> </div> <div data-md-component=announce> </div> <header class=md-header data-md-component=header> <nav class="md-header__inner md-grid" aria-label=Header> <a href=../../.. title="JSON for Modern C++" class="md-header__button md-logo" aria-label="JSON for Modern C++" data-md-component=logo> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54"/></svg> </a> <label class="md-header__button md-icon" for=__drawer> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M3 6h18v2H3zm0 5h18v2H3zm0 5h18v2H3z"/></svg> </label> <div class=md-header__title data-md-component=header-title> <div class=md-header__ellipsis> <div class=md-header__topic> <span class=md-ellipsis> JSON for Modern C++ </span> </div> <div class=md-header__topic data-md-component=header-topic> <span class=md-ellipsis> boolean_t </span> </div> </div> </div> <form class=md-header__option data-md-component=palette> <input class=md-option data-md-color-media="(prefers-color-scheme: light)" data-md-color-scheme=default data-md-color-primary=indigo data-md-color-accent=indigo aria-label="Switch to dark mode" type=radio name=__palette id=__palette_0> <label class="md-header__button md-icon" title="Switch to dark mode" for=__palette_1 hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a4 4 0 0 0-4 4 4 4 0 0 0 4 4 4 4 0 0 0 4-4 4 4 0 0 0-4-4m0 10a6 6 0 0 1-6-6 6 6 0 0 1 6-6 6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12z"/></svg> </label> <input class=md-option data-md-color-media="(prefers-color-scheme: dark)" data-md-color-scheme=slate data-md-color-primary=indigo data-md-color-accent=indigo aria-label="Switch to light mode" type=radio name=__palette id=__palette_1> <label class="md-header__button md-icon" title="Switch to light mode" for=__palette_0 hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 18c-.89 0-1.74-.2-2.5-.55C11.56 16.5 13 14.42 13 12s-1.44-4.5-3.5-5.45C10.26 6.2 11.11 6 12 6a6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12z"/></svg> </label> </form> <script>var palette=__md_get("__palette");if(palette&&palette.color){if("(prefers-color-scheme)"===palette.color.media){var media=matchMedia("(prefers-color-scheme: light)"),input=document.querySelector(media.matches?"[data-md-color-media='(prefers-color-scheme: light)']":"[data-md-color-media='(prefers-color-scheme: dark)']");palette.color.media=input.getAttribute("data-md-color-media"),palette.color.scheme=input.getAttribute("data-md-color-scheme"),palette.color.primary=input.getAttribute("data-md-color-primary"),palette.color.accent=input.getAttribute("data-md-color-accent")}for(var[key,value]of Object.entries(palette.color))document.body.setAttribute("data-md-color-"+key,value)}</script> <label class="md-header__button md-icon" for=__search> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg> </label> <div class=md-search data-md-component=search role=dialog> <label class=md-search__overlay for=__search></label> <div class=md-search__inner role=search> <form class=md-search__form name=search> <input type=text class=md-search__input name=query aria-label=Search placeholder=Search autocapitalize=off autocorrect=off autocomplete=off spellcheck=false data-md-component=search-query required> <label class="md-search__icon md-icon" for=__search> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11z"/></svg> </label> <nav class=md-search__options aria-label=Search> <button type=reset class="md-search__icon md-icon" title=Clear aria-label=Clear tabindex=-1> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z"/></svg> </button> </nav> </form> <div class=md-search__output> <div class=md-search__scrollwrap tabindex=0 data-md-scrollfix> <div class=md-search-result data-md-component=search-result> <div class=md-search-result__meta> Initializing search </div> <ol class=md-search-result__list role=presentation></ol> </div> </div> </div> </div> </div> <div class=md-header__source> <a href="https://github.com/nlohmann/json" title="Go to repository" class="md-source" data-md-component="source"> <div class="md-source__icon md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </div> <div class=md-source__repository> nlohmann/json </div> </a> </div> </nav> </header> <div class=md-container data-md-component=container> <nav class=md-tabs aria-label=Tabs data-md-component=tabs> <div class=md-grid> <ul class=md-tabs__list> <li class=md-tabs__item> <a href=../../.. class=md-tabs__link> Home </a> </li> <li class=md-tabs__item> <a href=../../../features/arbitrary_types/ class=md-tabs__link> Features </a> </li> <li class=md-tabs__item> <a href=../../../integration/ class=md-tabs__link> Integration </a> </li> <li class="md-tabs__item md-tabs__item--active"> <a href=../ class=md-tabs__link> API Documentation </a> </li> <li class=md-tabs__item> <a href=../../../community/ class=md-tabs__link> Community </a> </li> </ul> </div> </nav> <main class=md-main data-md-component=main> <div class="md-main__inner md-grid"> <div class="md-sidebar md-sidebar--primary" data-md-component=sidebar data-md-type=navigation> <div class=md-sidebar__scrollwrap> <div class=md-sidebar__inner> <nav class="md-nav md-nav--primary md-nav--lifted" aria-label=Navigation data-md-level=0> <label class=md-nav__title for=__drawer> <a href=../../.. title="JSON for Modern C++" class="md-nav__button md-logo" aria-label="JSON for Modern C++" data-md-component=logo> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54"/></svg> </a> JSON for Modern C++ </label> <div class=md-nav__source> <a href="https://github.com/nlohmann/json" title="Go to repository" class="md-source" data-md-component="source"> <div class="md-source__icon md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </div> <div class=md-source__repository> nlohmann/json </div> </a> </div> <ul class=md-nav__list data-md-scrollfix> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_1> <div class="md-nav__link md-nav__container"> <a href=../../.. class="md-nav__link "> <span class=md-ellipsis> Home </span> </a> <label class="md-nav__link " for=__nav_1 id=__nav_1_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_1_label aria-expanded=false> <label class=md-nav__title for=__nav_1> <span class="md-nav__icon md-icon"></span> Home </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../home/license/ class=md-nav__link> <span class=md-ellipsis> License </span> </a> </li> <li class=md-nav__item> <a href=../../../home/faq/ class=md-nav__link> <span class=md-ellipsis> FAQ </span> </a> </li> <li class=md-nav__item> <a href=../../../home/exceptions/ class=md-nav__link> <span class=md-ellipsis> Exceptions </span> </a> </li> <li class=md-nav__item> <a href=../../../home/releases/ class=md-nav__link> <span class=md-ellipsis> Releases </span> </a> </li> <li class=md-nav__item> <a href=../../../home/design_goals/ class=md-nav__link> <span class=md-ellipsis> Design goals </span> </a> </li> <li class=md-nav__item> <a href=../../../home/architecture/ class=md-nav__link> <span class=md-ellipsis> Architecture </span> </a> </li> <li class=md-nav__item> <a href=../../../home/customers/ class=md-nav__link> <span class=md-ellipsis> Customers </span> </a> </li> <li class=md-nav__item> <a href=../../../home/sponsors/ class=md-nav__link> <span class=md-ellipsis> Sponsors </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2> <label class=md-nav__link for=__nav_2 id=__nav_2_label tabindex=0> <span class=md-ellipsis> Features </span> <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_2_label aria-expanded=false> <label class=md-nav__title for=__nav_2> <span class="md-nav__icon md-icon"></span> Features </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/arbitrary_types/ class=md-nav__link> <span class=md-ellipsis> Arbitrary Type Conversions </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_2> <div class="md-nav__link md-nav__container"> <a href=../../../features/binary_formats/ class="md-nav__link "> <span class=md-ellipsis> Binary Formats </span> </a> <label class="md-nav__link " for=__nav_2_2 id=__nav_2_2_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_2_label aria-expanded=false> <label class=md-nav__title for=__nav_2_2> <span class="md-nav__icon md-icon"></span> Binary Formats </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/binary_formats/bjdata/ class=md-nav__link> <span class=md-ellipsis> BJData </span> </a> </li> <li class=md-nav__item> <a href=../../../features/binary_formats/bson/ class=md-nav__link> <span class=md-ellipsis> BSON </span> </a> </li> <li class=md-nav__item> <a href=../../../features/binary_formats/cbor/ class=md-nav__link> <span class=md-ellipsis> CBOR </span> </a> </li> <li class=md-nav__item> <a href=../../../features/binary_formats/messagepack/ class=md-nav__link> <span class=md-ellipsis> MessagePack </span> </a> </li> <li class=md-nav__item> <a href=../../../features/binary_formats/ubjson/ class=md-nav__link> <span class=md-ellipsis> UBJSON </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../../features/binary_values/ class=md-nav__link> <span class=md-ellipsis> Binary Values </span> </a> </li> <li class=md-nav__item> <a href=../../../features/comments/ class=md-nav__link> <span class=md-ellipsis> Comments </span> </a> </li> <li class=md-nav__item> <a href=../../../features/trailing_commas/ class=md-nav__link> <span class=md-ellipsis> Trailing Commas </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_6> <div class="md-nav__link md-nav__container"> <a href=../../../features/element_access/ class="md-nav__link "> <span class=md-ellipsis> Element Access </span> </a> <label class="md-nav__link " for=__nav_2_6 id=__nav_2_6_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_6_label aria-expanded=false> <label class=md-nav__title for=__nav_2_6> <span class="md-nav__icon md-icon"></span> Element Access </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/element_access/unchecked_access/ class=md-nav__link> <span class=md-ellipsis> Unchecked access: operator[] </span> </a> </li> <li class=md-nav__item> <a href=../../../features/element_access/checked_access/ class=md-nav__link> <span class=md-ellipsis> Checked access: at </span> </a> </li> <li class=md-nav__item> <a href=../../../features/element_access/default_value/ class=md-nav__link> <span class=md-ellipsis> Access with default value: value </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../../features/iterators/ class=md-nav__link> <span class=md-ellipsis> Iterators </span> </a> </li> <li class=md-nav__item> <a href=../../../features/json_pointer/ class=md-nav__link> <span class=md-ellipsis> JSON Pointer </span> </a> </li> <li class=md-nav__item> <a href=../../../features/json_patch/ class=md-nav__link> <span class=md-ellipsis> JSON Patch and Diff </span> </a> </li> <li class=md-nav__item> <a href=../../../features/merge_patch/ class=md-nav__link> <span class=md-ellipsis> JSON Merge Patch </span> </a> </li> <li class=md-nav__item> <a href=../../../features/modules/ class=md-nav__link> <span class=md-ellipsis> Modules </span> </a> </li> <li class=md-nav__item> <a href=../../../features/namespace/ class=md-nav__link> <span class=md-ellipsis> nlohmann Namespace </span> </a> </li> <li class=md-nav__item> <a href=../../../features/object_order/ class=md-nav__link> <span class=md-ellipsis> Object Order </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_14> <div class="md-nav__link md-nav__container"> <a href=../../../features/parsing/ class="md-nav__link "> <span class=md-ellipsis> Parsing </span> </a> <label class="md-nav__link " for=__nav_2_14 id=__nav_2_14_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_14_label aria-expanded=false> <label class=md-nav__title for=__nav_2_14> <span class="md-nav__icon md-icon"></span> Parsing </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/parsing/json_lines/ class=md-nav__link> <span class=md-ellipsis> JSON Lines </span> </a> </li> <li class=md-nav__item> <a href=../../../features/parsing/parse_exceptions/ class=md-nav__link> <span class=md-ellipsis> Parsing and Exceptions </span> </a> </li> <li class=md-nav__item> <a href=../../../features/parsing/parser_callbacks/ class=md-nav__link> <span class=md-ellipsis> Parser Callbacks </span> </a> </li> <li class=md-nav__item> <a href=../../../features/parsing/sax_interface/ class=md-nav__link> <span class=md-ellipsis> SAX Interface </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../../features/assertions/ class=md-nav__link> <span class=md-ellipsis> Runtime Assertions </span> </a> </li> <li class=md-nav__item> <a href=../../../features/enum_conversion/ class=md-nav__link> <span class=md-ellipsis> Specializing enum conversion </span> </a> </li> <li class=md-nav__item> <a href=../../../features/macros/ class=md-nav__link> <span class=md-ellipsis> Supported Macros </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_18> <div class="md-nav__link md-nav__container"> <a href=../../../features/types/ class="md-nav__link "> <span class=md-ellipsis> Types </span> </a> <label class="md-nav__link " for=__nav_2_18 id=__nav_2_18_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_18_label aria-expanded=false> <label class=md-nav__title for=__nav_2_18> <span class="md-nav__icon md-icon"></span> Types </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/types/number_handling/ class=md-nav__link> <span class=md-ellipsis> Number Handling </span> </a> </li> </ul> </nav> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_3> <div class="md-nav__link md-nav__container"> <a href=../../../integration/ class="md-nav__link "> <span class=md-ellipsis> Integration </span> </a> <label class="md-nav__link " for=__nav_3 id=__nav_3_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_3_label aria-expanded=false> <label class=md-nav__title for=__nav_3> <span class="md-nav__icon md-icon"></span> Integration </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../integration/migration_guide/ class=md-nav__link> <span class=md-ellipsis> Migration Guide </span> </a> </li> <li class=md-nav__item> <a href=../../../integration/cmake/ class=md-nav__link> <span class=md-ellipsis> CMake </span> </a> </li> <li class=md-nav__item> <a href=../../../integration/package_managers/ class=md-nav__link> <span class=md-ellipsis> Package Managers </span> </a> </li> <li class=md-nav__item> <a href=../../../integration/pkg-config/ class=md-nav__link> <span class=md-ellipsis> Pkg-config </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--active md-nav__item--section md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4 checked> <label class=md-nav__link for=__nav_4 id=__nav_4_label tabindex> <span class=md-ellipsis> API Documentation </span> <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_4_label aria-expanded=true> <label class=md-nav__title for=__nav_4> <span class="md-nav__icon md-icon"></span> API Documentation </label> <ul class=md-nav__list data-md-scrollfix> <li class="md-nav__item md-nav__item--active md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_1 checked> <div class="md-nav__link md-nav__container"> <a href=../ class="md-nav__link "> <span class=md-ellipsis> basic_json </span> </a> <label class="md-nav__link " for=__nav_4_1 id=__nav_4_1_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_1_label aria-expanded=true> <label class=md-nav__title for=__nav_4_1> <span class="md-nav__icon md-icon"></span> basic_json </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../basic_json/ class=md-nav__link> <span class=md-ellipsis> (Constructor) </span> </a> </li> <li class=md-nav__item> <a href=../~basic_json/ class=md-nav__link> <span class=md-ellipsis> (Destructor) </span> </a> </li> <li class=md-nav__item> <a href=../accept/ class=md-nav__link> <span class=md-ellipsis> accept </span> </a> </li> <li class=md-nav__item> <a href=../array/ class=md-nav__link> <span class=md-ellipsis> array </span> </a> </li> <li class=md-nav__item> <a href=../array_t/ class=md-nav__link> <span class=md-ellipsis> array_t </span> </a> </li> <li class=md-nav__item> <a href=../at/ class=md-nav__link> <span class=md-ellipsis> at </span> </a> </li> <li class=md-nav__item> <a href=../back/ class=md-nav__link> <span class=md-ellipsis> back </span> </a> </li> <li class=md-nav__item> <a href=../begin/ class=md-nav__link> <span class=md-ellipsis> begin </span> </a> </li> <li class=md-nav__item> <a href=../binary/ class=md-nav__link> <span class=md-ellipsis> binary </span> </a> </li> <li class=md-nav__item> <a href=../binary_t/ class=md-nav__link> <span class=md-ellipsis> binary_t </span> </a> </li> <li class="md-nav__item md-nav__item--active"> <input class="md-nav__toggle md-toggle" type=checkbox id=__toc> <label class="md-nav__link md-nav__link--active" for=__toc> <span class=md-ellipsis> boolean_t </span> <span class="md-nav__icon md-icon"></span> </label> <a href=./ class="md-nav__link md-nav__link--active"> <span class=md-ellipsis> boolean_t </span> </a> <nav class="md-nav md-nav--secondary" aria-label="Table of contents"> <label class=md-nav__title for=__toc> <span class="md-nav__icon md-icon"></span> Table of contents </label> <ul class=md-nav__list data-md-component=toc data-md-scrollfix> <li class=md-nav__item> <a href=#notes class=md-nav__link> <span class=md-ellipsis> Notes </span> </a> <nav class=md-nav aria-label=Notes> <ul class=md-nav__list> <li class=md-nav__item> <a href=#default-type class=md-nav__link> <span class=md-ellipsis> Default type </span> </a> </li> <li class=md-nav__item> <a href=#storage class=md-nav__link> <span class=md-ellipsis> Storage </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=#examples class=md-nav__link> <span class=md-ellipsis> Examples </span> </a> </li> <li class=md-nav__item> <a href=#version-history class=md-nav__link> <span class=md-ellipsis> Version history </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../cbegin/ class=md-nav__link> <span class=md-ellipsis> cbegin </span> </a> </li> <li class=md-nav__item> <a href=../cbor_tag_handler_t/ class=md-nav__link> <span class=md-ellipsis> cbor_tag_handler_t </span> </a> </li> <li class=md-nav__item> <a href=../cend/ class=md-nav__link> <span class=md-ellipsis> cend </span> </a> </li> <li class=md-nav__item> <a href=../clear/ class=md-nav__link> <span class=md-ellipsis> clear </span> </a> </li> <li class=md-nav__item> <a href=../contains/ class=md-nav__link> <span class=md-ellipsis> contains </span> </a> </li> <li class=md-nav__item> <a href=../count/ class=md-nav__link> <span class=md-ellipsis> count </span> </a> </li> <li class=md-nav__item> <a href=../crbegin/ class=md-nav__link> <span class=md-ellipsis> crbegin </span> </a> </li> <li class=md-nav__item> <a href=../crend/ class=md-nav__link> <span class=md-ellipsis> crend </span> </a> </li> <li class=md-nav__item> <a href=../default_object_comparator_t/ class=md-nav__link> <span class=md-ellipsis> default_object_comparator_t </span> </a> </li> <li class=md-nav__item> <a href=../diff/ class=md-nav__link> <span class=md-ellipsis> diff </span> </a> </li> <li class=md-nav__item> <a href=../dump/ class=md-nav__link> <span class=md-ellipsis> dump </span> </a> </li> <li class=md-nav__item> <a href=../emplace/ class=md-nav__link> <span class=md-ellipsis> emplace </span> </a> </li> <li class=md-nav__item> <a href=../emplace_back/ class=md-nav__link> <span class=md-ellipsis> emplace_back </span> </a> </li> <li class=md-nav__item> <a href=../empty/ class=md-nav__link> <span class=md-ellipsis> empty </span> </a> </li> <li class=md-nav__item> <a href=../end/ class=md-nav__link> <span class=md-ellipsis> end </span> </a> </li> <li class=md-nav__item> <a href=../end_pos/ class=md-nav__link> <span class=md-ellipsis> end_pos </span> </a> </li> <li class=md-nav__item> <a href=../erase/ class=md-nav__link> <span class=md-ellipsis> erase </span> </a> </li> <li class=md-nav__item> <a href=../error_handler_t/ class=md-nav__link> <span class=md-ellipsis> error_handler_t </span> </a> </li> <li class=md-nav__item> <a href=../exception/ class=md-nav__link> <span class=md-ellipsis> exception </span> </a> </li> <li class=md-nav__item> <a href=../find/ class=md-nav__link> <span class=md-ellipsis> find </span> </a> </li> <li class=md-nav__item> <a href=../flatten/ class=md-nav__link> <span class=md-ellipsis> flatten </span> </a> </li> <li class=md-nav__item> <a href=../from_bjdata/ class=md-nav__link> <span class=md-ellipsis> from_bjdata </span> </a> </li> <li class=md-nav__item> <a href=../from_bson/ class=md-nav__link> <span class=md-ellipsis> from_bson </span> </a> </li> <li class=md-nav__item> <a href=../from_cbor/ class=md-nav__link> <span class=md-ellipsis> from_cbor </span> </a> </li> <li class=md-nav__item> <a href=../from_msgpack/ class=md-nav__link> <span class=md-ellipsis> from_msgpack </span> </a> </li> <li class=md-nav__item> <a href=../from_ubjson/ class=md-nav__link> <span class=md-ellipsis> from_ubjson </span> </a> </li> <li class=md-nav__item> <a href=../front/ class=md-nav__link> <span class=md-ellipsis> front </span> </a> </li> <li class=md-nav__item> <a href=../get/ class=md-nav__link> <span class=md-ellipsis> get </span> </a> </li> <li class=md-nav__item> <a href=../get_allocator/ class=md-nav__link> <span class=md-ellipsis> get_allocator </span> </a> </li> <li class=md-nav__item> <a href=../get_binary/ class=md-nav__link> <span class=md-ellipsis> get_binary </span> </a> </li> <li class=md-nav__item> <a href=../get_ptr/ class=md-nav__link> <span class=md-ellipsis> get_ptr </span> </a> </li> <li class=md-nav__item> <a href=../get_ref/ class=md-nav__link> <span class=md-ellipsis> get_ref </span> </a> </li> <li class=md-nav__item> <a href=../get_to/ class=md-nav__link> <span class=md-ellipsis> get_to </span> </a> </li> <li class=md-nav__item> <a href=../std_hash/ class=md-nav__link> <span class=md-ellipsis> std::hash&lt;basic_json&gt; </span> </a> </li> <li class=md-nav__item> <a href=../input_format_t/ class=md-nav__link> <span class=md-ellipsis> input_format_t </span> </a> </li> <li class=md-nav__item> <a href=../insert/ class=md-nav__link> <span class=md-ellipsis> insert </span> </a> </li> <li class=md-nav__item> <a href=../invalid_iterator/ class=md-nav__link> <span class=md-ellipsis> invalid_iterator </span> </a> </li> <li class=md-nav__item> <a href=../is_array/ class=md-nav__link> <span class=md-ellipsis> is_array </span> </a> </li> <li class=md-nav__item> <a href=../is_binary/ class=md-nav__link> <span class=md-ellipsis> is_binary </span> </a> </li> <li class=md-nav__item> <a href=../is_boolean/ class=md-nav__link> <span class=md-ellipsis> is_boolean </span> </a> </li> <li class=md-nav__item> <a href=../is_discarded/ class=md-nav__link> <span class=md-ellipsis> is_discarded </span> </a> </li> <li class=md-nav__item> <a href=../is_null/ class=md-nav__link> <span class=md-ellipsis> is_null </span> </a> </li> <li class=md-nav__item> <a href=../is_number/ class=md-nav__link> <span class=md-ellipsis> is_number </span> </a> </li> <li class=md-nav__item> <a href=../is_number_float/ class=md-nav__link> <span class=md-ellipsis> is_number_float </span> </a> </li> <li class=md-nav__item> <a href=../is_number_integer/ class=md-nav__link> <span class=md-ellipsis> is_number_integer </span> </a> </li> <li class=md-nav__item> <a href=../is_number_unsigned/ class=md-nav__link> <span class=md-ellipsis> is_number_unsigned </span> </a> </li> <li class=md-nav__item> <a href=../is_object/ class=md-nav__link> <span class=md-ellipsis> is_object </span> </a> </li> <li class=md-nav__item> <a href=../is_primitive/ class=md-nav__link> <span class=md-ellipsis> is_primitive </span> </a> </li> <li class=md-nav__item> <a href=../is_string/ class=md-nav__link> <span class=md-ellipsis> is_string </span> </a> </li> <li class=md-nav__item> <a href=../is_structured/ class=md-nav__link> <span class=md-ellipsis> is_structured </span> </a> </li> <li class=md-nav__item> <a href=../items/ class=md-nav__link> <span class=md-ellipsis> items </span> </a> </li> <li class=md-nav__item> <a href=../json_base_class_t/ class=md-nav__link> <span class=md-ellipsis> json_base_class_t </span> </a> </li> <li class=md-nav__item> <a href=../json_serializer/ class=md-nav__link> <span class=md-ellipsis> json_serializer </span> </a> </li> <li class=md-nav__item> <a href=../max_size/ class=md-nav__link> <span class=md-ellipsis> max_size </span> </a> </li> <li class=md-nav__item> <a href=../meta/ class=md-nav__link> <span class=md-ellipsis> meta </span> </a> </li> <li class=md-nav__item> <a href=../merge_patch/ class=md-nav__link> <span class=md-ellipsis> merge_patch </span> </a> </li> <li class=md-nav__item> <a href=../number_float_t/ class=md-nav__link> <span class=md-ellipsis> number_float_t </span> </a> </li> <li class=md-nav__item> <a href=../number_integer_t/ class=md-nav__link> <span class=md-ellipsis> number_integer_t </span> </a> </li> <li class=md-nav__item> <a href=../number_unsigned_t/ class=md-nav__link> <span class=md-ellipsis> number_unsigned_t </span> </a> </li> <li class=md-nav__item> <a href=../object/ class=md-nav__link> <span class=md-ellipsis> object </span> </a> </li> <li class=md-nav__item> <a href=../object_comparator_t/ class=md-nav__link> <span class=md-ellipsis> object_comparator_t </span> </a> </li> <li class=md-nav__item> <a href=../object_t/ class=md-nav__link> <span class=md-ellipsis> object_t </span> </a> </li> <li class=md-nav__item> <a href=../operator_ValueType/ class=md-nav__link> <span class=md-ellipsis> operator ValueType </span> </a> </li> <li class=md-nav__item> <a href=../operator_value_t/ class=md-nav__link> <span class=md-ellipsis> operator value_t </span> </a> </li> <li class=md-nav__item> <a href=../operator%5B%5D/ class=md-nav__link> <span class=md-ellipsis> operator[] </span> </a> </li> <li class=md-nav__item> <a href=../operator%3D/ class=md-nav__link> <span class=md-ellipsis> operator= </span> </a> </li> <li class=md-nav__item> <a href=../operator%2B%3D/ class=md-nav__link> <span class=md-ellipsis> operator+= </span> </a> </li> <li class=md-nav__item> <a href=../operator_eq/ class=md-nav__link> <span class=md-ellipsis> operator== </span> </a> </li> <li class=md-nav__item> <a href=../operator_ne/ class=md-nav__link> <span class=md-ellipsis> operator!= </span> </a> </li> <li class=md-nav__item> <a href=../operator_lt/ class=md-nav__link> <span class=md-ellipsis> operator< </span> </a> </li> <li class=md-nav__item> <a href=../operator_gt/ class=md-nav__link> <span class=md-ellipsis> operator> </span> </a> </li> <li class=md-nav__item> <a href=../operator_le/ class=md-nav__link> <span class=md-ellipsis> operator<= </span> </a> </li> <li class=md-nav__item> <a href=../operator_ge/ class=md-nav__link> <span class=md-ellipsis> operator>= </span> </a> </li> <li class=md-nav__item> <a href=../operator_spaceship/ class=md-nav__link> <span class=md-ellipsis> operator<=> </span> </a> </li> <li class=md-nav__item> <a href=../out_of_range/ class=md-nav__link> <span class=md-ellipsis> out_of_range </span> </a> </li> <li class=md-nav__item> <a href=../other_error/ class=md-nav__link> <span class=md-ellipsis> other_error </span> </a> </li> <li class=md-nav__item> <a href=../parse/ class=md-nav__link> <span class=md-ellipsis> parse </span> </a> </li> <li class=md-nav__item> <a href=../parse_error/ class=md-nav__link> <span class=md-ellipsis> parse_error </span> </a> </li> <li class=md-nav__item> <a href=../parse_event_t/ class=md-nav__link> <span class=md-ellipsis> parse_event_t </span> </a> </li> <li class=md-nav__item> <a href=../parser_callback_t/ class=md-nav__link> <span class=md-ellipsis> parser_callback_t </span> </a> </li> <li class=md-nav__item> <a href=../patch/ class=md-nav__link> <span class=md-ellipsis> patch </span> </a> </li> <li class=md-nav__item> <a href=../patch_inplace/ class=md-nav__link> <span class=md-ellipsis> patch_inplace </span> </a> </li> <li class=md-nav__item> <a href=../push_back/ class=md-nav__link> <span class=md-ellipsis> push_back </span> </a> </li> <li class=md-nav__item> <a href=../rbegin/ class=md-nav__link> <span class=md-ellipsis> rbegin </span> </a> </li> <li class=md-nav__item> <a href=../rend/ class=md-nav__link> <span class=md-ellipsis> rend </span> </a> </li> <li class=md-nav__item> <a href=../sax_parse/ class=md-nav__link> <span class=md-ellipsis> sax_parse </span> </a> </li> <li class=md-nav__item> <a href=../size/ class=md-nav__link> <span class=md-ellipsis> size </span> </a> </li> <li class=md-nav__item> <a href=../start_pos/ class=md-nav__link> <span class=md-ellipsis> start_pos </span> </a> </li> <li class=md-nav__item> <a href=../string_t/ class=md-nav__link> <span class=md-ellipsis> string_t </span> </a> </li> <li class=md-nav__item> <a href=../swap/ class=md-nav__link> <span class=md-ellipsis> swap </span> </a> </li> <li class=md-nav__item> <a href=../std_swap/ class=md-nav__link> <span class=md-ellipsis> std::swap&lt;basic_json&gt; </span> </a> </li> <li class=md-nav__item> <a href=../to_bjdata/ class=md-nav__link> <span class=md-ellipsis> to_bjdata </span> </a> </li> <li class=md-nav__item> <a href=../to_bson/ class=md-nav__link> <span class=md-ellipsis> to_bson </span> </a> </li> <li class=md-nav__item> <a href=../to_cbor/ class=md-nav__link> <span class=md-ellipsis> to_cbor </span> </a> </li> <li class=md-nav__item> <a href=../to_msgpack/ class=md-nav__link> <span class=md-ellipsis> to_msgpack </span> </a> </li> <li class=md-nav__item> <a href=../to_string/ class=md-nav__link> <span class=md-ellipsis> to_string </span> </a> </li> <li class=md-nav__item> <a href=../to_ubjson/ class=md-nav__link> <span class=md-ellipsis> to_ubjson </span> </a> </li> <li class=md-nav__item> <a href=../type/ class=md-nav__link> <span class=md-ellipsis> type </span> </a> </li> <li class=md-nav__item> <a href=../type_error/ class=md-nav__link> <span class=md-ellipsis> type_error </span> </a> </li> <li class=md-nav__item> <a href=../type_name/ class=md-nav__link> <span class=md-ellipsis> type_name </span> </a> </li> <li class=md-nav__item> <a href=../unflatten/ class=md-nav__link> <span class=md-ellipsis> unflatten </span> </a> </li> <li class=md-nav__item> <a href=../update/ class=md-nav__link> <span class=md-ellipsis> update </span> </a> </li> <li class=md-nav__item> <a href=../value/ class=md-nav__link> <span class=md-ellipsis> value </span> </a> </li> <li class=md-nav__item> <a href=../value_t/ class=md-nav__link> <span class=md-ellipsis> value_t </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_2> <div class="md-nav__link md-nav__container"> <a href=../../byte_container_with_subtype/ class="md-nav__link "> <span class=md-ellipsis> byte_container_with_subtype </span> </a> <label class="md-nav__link " for=__nav_4_2 id=__nav_4_2_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_2_label aria-expanded=false> <label class=md-nav__title for=__nav_4_2> <span class="md-nav__icon md-icon"></span> byte_container_with_subtype </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../byte_container_with_subtype/byte_container_with_subtype/ class=md-nav__link> <span class=md-ellipsis> (constructor) </span> </a> </li> <li class=md-nav__item> <a href=../../byte_container_with_subtype/clear_subtype/ class=md-nav__link> <span class=md-ellipsis> clear_subtype </span> </a> </li> <li class=md-nav__item> <a href=../../byte_container_with_subtype/has_subtype/ class=md-nav__link> <span class=md-ellipsis> has_subtype </span> </a> </li> <li class=md-nav__item> <a href=../../byte_container_with_subtype/set_subtype/ class=md-nav__link> <span class=md-ellipsis> set_subtype </span> </a> </li> <li class=md-nav__item> <a href=../../byte_container_with_subtype/subtype/ class=md-nav__link> <span class=md-ellipsis> subtype </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_3> <div class="md-nav__link md-nav__container"> <a href=../../adl_serializer/ class="md-nav__link "> <span class=md-ellipsis> adl_serializer </span> </a> <label class="md-nav__link " for=__nav_4_3 id=__nav_4_3_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_3_label aria-expanded=false> <label class=md-nav__title for=__nav_4_3> <span class="md-nav__icon md-icon"></span> adl_serializer </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../adl_serializer/from_json/ class=md-nav__link> <span class=md-ellipsis> from_json </span> </a> </li> <li class=md-nav__item> <a href=../../adl_serializer/to_json/ class=md-nav__link> <span class=md-ellipsis> to_json </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../json/ class=md-nav__link> <span class=md-ellipsis> json </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_5> <div class="md-nav__link md-nav__container"> <a href=../../json_pointer/ class="md-nav__link "> <span class=md-ellipsis> json_pointer </span> </a> <label class="md-nav__link " for=__nav_4_5 id=__nav_4_5_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_5_label aria-expanded=false> <label class=md-nav__title for=__nav_4_5> <span class="md-nav__icon md-icon"></span> json_pointer </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../json_pointer/json_pointer/ class=md-nav__link> <span class=md-ellipsis> (Constructor) </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/back/ class=md-nav__link> <span class=md-ellipsis> back </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/empty/ class=md-nav__link> <span class=md-ellipsis> empty </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/front/ class=md-nav__link> <span class=md-ellipsis> front </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_string_t/ class=md-nav__link> <span class=md-ellipsis> operator string_t </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_eq/ class=md-nav__link> <span class=md-ellipsis> operator== </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_ne/ class=md-nav__link> <span class=md-ellipsis> operator!= </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_slash/ class=md-nav__link> <span class=md-ellipsis> operator/ </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_slasheq/ class=md-nav__link> <span class=md-ellipsis> operator/= </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/parent_pointer/ class=md-nav__link> <span class=md-ellipsis> parent_pointer </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/pop_back/ class=md-nav__link> <span class=md-ellipsis> pop_back </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/pop_front/ class=md-nav__link> <span class=md-ellipsis> pop_front </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/push_back/ class=md-nav__link> <span class=md-ellipsis> push_back </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/push_front/ class=md-nav__link> <span class=md-ellipsis> push_front </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/string_t/ class=md-nav__link> <span class=md-ellipsis> string_t </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/to_string/ class=md-nav__link> <span class=md-ellipsis> to_string </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_6> <div class="md-nav__link md-nav__container"> <a href=../../json_sax/ class="md-nav__link "> <span class=md-ellipsis> json_sax </span> </a> <label class="md-nav__link " for=__nav_4_6 id=__nav_4_6_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_6_label aria-expanded=false> <label class=md-nav__title for=__nav_4_6> <span class="md-nav__icon md-icon"></span> json_sax </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../json_sax/binary/ class=md-nav__link> <span class=md-ellipsis> binary </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/boolean/ class=md-nav__link> <span class=md-ellipsis> boolean </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/end_array/ class=md-nav__link> <span class=md-ellipsis> end_array </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/end_object/ class=md-nav__link> <span class=md-ellipsis> end_object </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/key/ class=md-nav__link> <span class=md-ellipsis> key </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/null/ class=md-nav__link> <span class=md-ellipsis> null </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/number_float/ class=md-nav__link> <span class=md-ellipsis> number_float </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/number_integer/ class=md-nav__link> <span class=md-ellipsis> number_integer </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/number_unsigned/ class=md-nav__link> <span class=md-ellipsis> number_unsigned </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/parse_error/ class=md-nav__link> <span class=md-ellipsis> parse_error </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/start_array/ class=md-nav__link> <span class=md-ellipsis> start_array </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/start_object/ class=md-nav__link> <span class=md-ellipsis> start_object </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/string/ class=md-nav__link> <span class=md-ellipsis> string </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../operator_ltlt/ class=md-nav__link> <span class=md-ellipsis> operator<<(basic_json), operator<<(json_pointer) </span> </a> </li> <li class=md-nav__item> <a href=../../operator_gtgt/ class=md-nav__link> <span class=md-ellipsis> operator>>(basic_json) </span> </a> </li> <li class=md-nav__item> <a href=../../operator_literal_json/ class=md-nav__link> <span class=md-ellipsis> operator""_json </span> </a> </li> <li class=md-nav__item> <a href=../../operator_literal_json_pointer/ class=md-nav__link> <span class=md-ellipsis> operator""_json_pointer </span> </a> </li> <li class=md-nav__item> <a href=../../ordered_json/ class=md-nav__link> <span class=md-ellipsis> ordered_json </span> </a> </li> <li class=md-nav__item> <a href=../../ordered_map/ class=md-nav__link> <span class=md-ellipsis> ordered_map </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_13> <div class="md-nav__link md-nav__container"> <a href=../../macros/ class="md-nav__link "> <span class=md-ellipsis> macros </span> </a> <label class="md-nav__link " for=__nav_4_13 id=__nav_4_13_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_13_label aria-expanded=false> <label class=md-nav__title for=__nav_4_13> <span class="md-nav__icon md-icon"></span> macros </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../macros/json_assert/ class=md-nav__link> <span class=md-ellipsis> JSON_ASSERT </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_brace_init_copy_semantics/ class=md-nav__link> <span class=md-ellipsis> JSON_BRACE_INIT_COPY_SEMANTICS </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_throw_user/ class=md-nav__link> <span class=md-ellipsis> JSON_CATCH_USER, JSON_THROW_USER, JSON_TRY_USER </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_diagnostics/ class=md-nav__link> <span class=md-ellipsis> JSON_DIAGNOSTICS </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_diagnostic_positions/ class=md-nav__link> <span class=md-ellipsis> JSON_DIAGNOSTIC_POSITIONS </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_disable_enum_serialization/ class=md-nav__link> <span class=md-ellipsis> JSON_DISABLE_ENUM_SERIALIZATION </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_has_cpp_11/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_CPP_11, JSON_HAS_CPP_14, JSON_HAS_CPP_17, JSON_HAS_CPP_20 </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_has_filesystem/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_EXPERIMENTAL_FILESYSTEM, JSON_HAS_FILESYSTEM </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_has_ranges/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_RANGES </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_has_static_rtti/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_STATIC_RTTI </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_has_three_way_comparison/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_THREE_WAY_COMPARISON </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_noexception/ class=md-nav__link> <span class=md-ellipsis> JSON_NOEXCEPTION </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_no_io/ class=md-nav__link> <span class=md-ellipsis> JSON_NO_IO </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_skip_library_version_check/ class=md-nav__link> <span class=md-ellipsis> JSON_SKIP_LIBRARY_VERSION_CHECK </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_skip_unsupported_compiler_check/ class=md-nav__link> <span class=md-ellipsis> JSON_SKIP_UNSUPPORTED_COMPILER_CHECK </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_use_global_udls/ class=md-nav__link> <span class=md-ellipsis> JSON_USE_GLOBAL_UDLS </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_use_implicit_conversions/ class=md-nav__link> <span class=md-ellipsis> JSON_USE_IMPLICIT_CONVERSIONS </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_use_legacy_discarded_value_comparison/ class=md-nav__link> <span class=md-ellipsis> JSON_USE_LEGACY_DISCARDED_VALUE_COMPARISON </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_define_derived_type/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_ONLY_SERIALIZE, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_define_type_intrusive/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_TYPE_INTRUSIVE, NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_TYPE_INTRUSIVE_ONLY_SERIALIZE </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_define_type_non_intrusive/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_define_type_with_names/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_TYPE_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_namespace/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_NAMESPACE </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_namespace_begin/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_NAMESPACE_BEGIN, NLOHMANN_JSON_NAMESPACE_END </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_namespace_no_version/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_NAMESPACE_NO_VERSION </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_serialize_enum/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_SERIALIZE_ENUM </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_serialize_enum_strict/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_SERIALIZE_ENUM_STRICT </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_version_major/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_VERSION_MAJOR, NLOHMANN_JSON_VERSION_MINOR, NLOHMANN_JSON_VERSION_PATCH </span> </a> </li> </ul> </nav> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_5> <div class="md-nav__link md-nav__container"> <a href=../../../community/ class="md-nav__link "> <span class=md-ellipsis> Community </span> </a> <label class="md-nav__link " for=__nav_5 id=__nav_5_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_5_label aria-expanded=false> <label class=md-nav__title for=__nav_5> <span class="md-nav__icon md-icon"></span> Community </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../community/code_of_conduct/ class=md-nav__link> <span class=md-ellipsis> Code of Conduct </span> </a> </li> <li class=md-nav__item> <a href=../../../community/contribution_guidelines/ class=md-nav__link> <span class=md-ellipsis> Contribution Guidelines </span> </a> </li> <li class=md-nav__item> <a href=../../../community/quality_assurance/ class=md-nav__link> <span class=md-ellipsis> Quality assurance </span> </a> </li> <li class=md-nav__item> <a href=../../../community/governance/ class=md-nav__link> <span class=md-ellipsis> Governance </span> </a> </li> <li class=md-nav__item> <a href=../../../community/security_policy/ class=md-nav__link> <span class=md-ellipsis> Security Policy </span> </a> </li> </ul> </nav> </li> </ul> </nav> </div> </div> </div> <div class="md-sidebar md-sidebar--secondary" data-md-component=sidebar data-md-type=toc> <div class=md-sidebar__scrollwrap> <div class=md-sidebar__inner> <nav class="md-nav md-nav--secondary" aria-label="Table of contents"> <label class=md-nav__title for=__toc> <span class="md-nav__icon md-icon"></span> Table of contents </label> <ul class=md-nav__list data-md-component=toc data-md-scrollfix> <li class=md-nav__item> <a href=#notes class=md-nav__link> <span class=md-ellipsis> Notes </span> </a> <nav class=md-nav aria-label=Notes> <ul class=md-nav__list> <li class=md-nav__item> <a href=#default-type class=md-nav__link> <span class=md-ellipsis> Default type </span> </a> </li> <li class=md-nav__item> <a href=#storage class=md-nav__link> <span class=md-ellipsis> Storage </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=#examples class=md-nav__link> <span class=md-ellipsis> Examples </span> </a> </li> <li class=md-nav__item> <a href=#version-history class=md-nav__link> <span class=md-ellipsis> Version history </span> </a> </li> </ul> </nav> </div> </div> </div> <div class=md-content data-md-component=content> <article class="md-content__inner md-typeset"> <a href="https://github.com/nlohmann/json/edit/develop/docs/mkdocs/docs/api/basic_json/boolean_t.md" title="Edit this page" class="md-content__button md-icon" rel="edit"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M10 20H6V4h7v5h5v3.1l2-2V8l-6-6H6c-1.1 0-2 .9-2 2v16c0 1.1.9 2 2 2h4zm10.2-7c.1 0 .3.1.4.2l1.3 1.3c.2.2.2.6 0 .8l-1 1-2.1-2.1 1-1c.1-.1.2-.2.4-.2m0 3.9L14.1 23H12v-2.1l6.1-6.1z"/></svg> </a> <a href="https://github.com/nlohmann/json/raw/develop/docs/mkdocs/docs/api/basic_json/boolean_t.md" title="View source of this page" class="md-content__button md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M17 18c.56 0 1 .44 1 1s-.44 1-1 1-1-.44-1-1 .44-1 1-1m0-3c-2.73 0-5.06 1.66-6 4 .94 2.34 3.27 4 6 4s5.06-1.66 6-4c-.94-2.34-3.27-4-6-4m0 6.5a2.5 2.5 0 0 1-2.5-2.5 2.5 2.5 0 0 1 2.5-2.5 2.5 2.5 0 0 1 2.5 2.5 2.5 2.5 0 0 1-2.5 2.5M9.27 20H6V4h7v5h5v4.07c.7.08 1.36.25 2 .49V8l-6-6H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h4.5a8.2 8.2 0 0 1-1.23-2"/></svg> </a> <h1 id=nlohmannbasic_jsonboolean_t><small>nlohmann::basic_json::</small>boolean_t<a class=headerlink href=#nlohmannbasic_jsonboolean_t title="Permanent link">&para;</a></h1> <div class=highlight><pre><span></span><code><span class=k>using</span><span class=w> </span><span class=n>boolean_t</span><span class=w> </span><span class=o>=</span><span class=w> </span><span class=n>BooleanType</span><span class=p>;</span>
-</code></pre></div> <p>The type used to store <abbr title="JavaScript Object Notation">JSON</abbr> booleans.</p> <p><a href="https://tools.ietf.org/html/rfc8259"><abbr title="Request for Comments">RFC</abbr> 8259</a> implicitly describes a boolean as a type which differentiates the two literals <code class=highlight><span class=kc>true</span></code> and <code class=highlight><span class=kc>false</span></code>.</p> <p>To store objects in C++, a type is defined by the template parameter <code>BooleanType</code> which chooses the type to use.</p> <h2 id=notes>Notes<a class=headerlink href=#notes title="Permanent link">&para;</a></h2> <h4 id=default-type>Default type<a class=headerlink href=#default-type title="Permanent link">&para;</a></h4> <p>With the default values for <code>BooleanType</code> (<code class=highlight><span class=kt>bool</span></code>), the default value for <code>boolean_t</code> is <code class=highlight><span class=kt>bool</span></code>.</p> <h4 id=storage>Storage<a class=headerlink href=#storage title="Permanent link">&para;</a></h4> <p>Boolean values are stored directly inside a <code>basic_json</code> type.</p> <h2 id=examples>Examples<a class=headerlink href=#examples title="Permanent link">&para;</a></h2> <details class=example> <summary>Example</summary> <p>The following code shows that <code>boolean_t</code> is by default, a typedef to <code class=highlight><span class=kt>bool</span></code>.</p> <div class=highlight><pre><span></span><code><span class=cp>#include</span><span class=w> </span><span class=cpf>&lt;iostream&gt;</span>
+</code></pre></div> <p>The type used to store <abbr title="JavaScript Object Notation">JSON</abbr> booleans.</p> <p><a href="https://tools.ietf.org/html/rfc8259"><abbr title="Request for Comments">RFC</abbr> 8259</a> implicitly describes a boolean as a type which differentiates the two literals <code class=highlight><span class=kc>true</span></code> and <code class=highlight><span class=kc>false</span></code>.</p> <p>To store boolean values in C++, a type is defined by the template parameter <code>BooleanType</code> which chooses the type to use.</p> <h2 id=notes>Notes<a class=headerlink href=#notes title="Permanent link">&para;</a></h2> <h4 id=default-type>Default type<a class=headerlink href=#default-type title="Permanent link">&para;</a></h4> <p>With the default values for <code>BooleanType</code> (<code class=highlight><span class=kt>bool</span></code>), the default value for <code>boolean_t</code> is <code class=highlight><span class=kt>bool</span></code>.</p> <h4 id=storage>Storage<a class=headerlink href=#storage title="Permanent link">&para;</a></h4> <p>Boolean values are stored directly inside a <code>basic_json</code> type.</p> <h2 id=examples>Examples<a class=headerlink href=#examples title="Permanent link">&para;</a></h2> <details class=example> <summary>Example</summary> <p>The following code shows that <code>boolean_t</code> is by default, a typedef to <code class=highlight><span class=kt>bool</span></code>.</p> <div class=highlight><pre><span></span><code><span class=cp>#include</span><span class=w> </span><span class=cpf>&lt;iostream&gt;</span>
 <span class=cp>#include</span><span class=w> </span><span class=cpf>&lt;iomanip&gt;</span>
 <span class=cp>#include</span><span class=w> </span><span class=cpf>&lt;nlohmann/json.hpp&gt;</span>
 
@@ -10,4 +10,4 @@
 <span class=w>    </span><span class=n>std</span><span class=o>::</span><span class=n>cout</span><span class=w> </span><span class=o>&lt;&lt;</span><span class=w> </span><span class=n>std</span><span class=o>::</span><span class=n>boolalpha</span><span class=w> </span><span class=o>&lt;&lt;</span><span class=w> </span><span class=n>std</span><span class=o>::</span><span class=n>is_same</span><span class=o>&lt;</span><span class=kt>bool</span><span class=p>,</span><span class=w> </span><span class=n>json</span><span class=o>::</span><span class=n>boolean_t</span><span class=o>&gt;::</span><span class=n>value</span><span class=w> </span><span class=o>&lt;&lt;</span><span class=w> </span><span class=n>std</span><span class=o>::</span><span class=n>endl</span><span class=p>;</span>
 <span class=p>}</span>
 </code></pre></div> <p>Output:</p> <div class=highlight><pre><span></span><code><span class=kc>true</span>
-</code></pre></div> </details> <h2 id=version-history>Version history<a class=headerlink href=#version-history title="Permanent link">&para;</a></h2> <ul> <li>Added in version 1.0.0.</li> </ul> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 23, 2026 11:16:18 UTC">June 23, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
+</code></pre></div> </details> <h2 id=version-history>Version history<a class=headerlink href=#version-history title="Permanent link">&para;</a></h2> <ul> <li>Added in version 1.0.0.</li> </ul> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 29, 2026 20:15:18 UTC">June 29, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
diff --git a/api/basic_json/cbegin/index.html b/api/basic_json/cbegin/index.html
index 888f862..7594c0c 100644
--- a/api/basic_json/cbegin/index.html
+++ b/api/basic_json/cbegin/index.html
@@ -16,4 +16,4 @@
 <span class=w>    </span><span class=n>std</span><span class=o>::</span><span class=n>cout</span><span class=w> </span><span class=o>&lt;&lt;</span><span class=w> </span><span class=o>*</span><span class=n>it</span><span class=w> </span><span class=o>&lt;&lt;</span><span class=w> </span><span class=sc>&#39;\n&#39;</span><span class=p>;</span>
 <span class=p>}</span>
 </code></pre></div> <p>Output:</p> <div class=highlight><pre><span></span><code><span class=mi>1</span>
-</code></pre></div> </details> <h2 id=version-history>Version history<a class=headerlink href=#version-history title="Permanent link">&para;</a></h2> <ul> <li>Added in version 1.0.0.</li> </ul> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 23, 2026 11:16:18 UTC">June 23, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
+</code></pre></div> </details> <h2 id=version-history>Version history<a class=headerlink href=#version-history title="Permanent link">&para;</a></h2> <ul> <li>Added in version 1.0.0.</li> </ul> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 29, 2026 20:15:18 UTC">June 29, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
diff --git a/api/basic_json/cbor_tag_handler_t/index.html b/api/basic_json/cbor_tag_handler_t/index.html
index 7407603..14b8131 100644
--- a/api/basic_json/cbor_tag_handler_t/index.html
+++ b/api/basic_json/cbor_tag_handler_t/index.html
@@ -35,4 +35,4 @@
 </code></pre></div> <p>Output:</p> <div class=highlight><pre><span></span><code><span class=p>[</span><span class=err>jso</span><span class=kc>n</span><span class=err>.excep</span><span class=kc>t</span><span class=err>io</span><span class=kc>n</span><span class=err>.parse_error.</span><span class=mi>112</span><span class=p>]</span><span class=w> </span><span class=err>parse</span><span class=w> </span><span class=err>error</span><span class=w> </span><span class=err>a</span><span class=kc>t</span><span class=w> </span><span class=err>by</span><span class=kc>te</span><span class=w> </span><span class=mi>1</span><span class=p>:</span><span class=w> </span><span class=err>sy</span><span class=kc>nta</span><span class=err>x</span><span class=w> </span><span class=err>error</span><span class=w> </span><span class=err>while</span><span class=w> </span><span class=err>parsi</span><span class=kc>n</span><span class=err>g</span><span class=w> </span><span class=err>CBOR</span><span class=w> </span><span class=err>value</span><span class=p>:</span><span class=w> </span><span class=err>i</span><span class=kc>n</span><span class=err>valid</span><span class=w> </span><span class=err>by</span><span class=kc>te</span><span class=p>:</span><span class=w> </span><span class=mi>0</span><span class=err>xD</span><span class=mi>8</span>
 <span class=p>{</span><span class=nt>&quot;bytes&quot;</span><span class=p>:[</span><span class=mi>202</span><span class=p>,</span><span class=mi>254</span><span class=p>,</span><span class=mi>186</span><span class=p>,</span><span class=mi>190</span><span class=p>],</span><span class=nt>&quot;subtype&quot;</span><span class=p>:</span><span class=kc>null</span><span class=p>}</span>
 <span class=p>{</span><span class=nt>&quot;bytes&quot;</span><span class=p>:[</span><span class=mi>202</span><span class=p>,</span><span class=mi>254</span><span class=p>,</span><span class=mi>186</span><span class=p>,</span><span class=mi>190</span><span class=p>],</span><span class=nt>&quot;subtype&quot;</span><span class=p>:</span><span class=mi>66</span><span class=p>}</span>
-</code></pre></div> </details> <h2 id=version-history>Version history<a class=headerlink href=#version-history title="Permanent link">&para;</a></h2> <ul> <li>Added in version 3.9.0. Added value <code>store</code> in 3.10.0.</li> </ul> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 23, 2026 11:16:18 UTC">June 23, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
+</code></pre></div> </details> <h2 id=version-history>Version history<a class=headerlink href=#version-history title="Permanent link">&para;</a></h2> <ul> <li>Added in version 3.9.0. Added value <code>store</code> in 3.10.0.</li> </ul> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 29, 2026 20:15:18 UTC">June 29, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
diff --git a/api/basic_json/cend/index.html b/api/basic_json/cend/index.html
index 5994ec2..ac82b26 100644
--- a/api/basic_json/cend/index.html
+++ b/api/basic_json/cend/index.html
@@ -19,4 +19,4 @@
 <span class=w>    </span><span class=n>std</span><span class=o>::</span><span class=n>cout</span><span class=w> </span><span class=o>&lt;&lt;</span><span class=w> </span><span class=o>*</span><span class=n>it</span><span class=w> </span><span class=o>&lt;&lt;</span><span class=w> </span><span class=sc>&#39;\n&#39;</span><span class=p>;</span>
 <span class=p>}</span>
 </code></pre></div> <p>Output:</p> <div class=highlight><pre><span></span><code><span class=mi>5</span>
-</code></pre></div> </details> <h2 id=version-history>Version history<a class=headerlink href=#version-history title="Permanent link">&para;</a></h2> <ul> <li>Added in version 1.0.0.</li> </ul> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 23, 2026 11:16:18 UTC">June 23, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
+</code></pre></div> </details> <h2 id=version-history>Version history<a class=headerlink href=#version-history title="Permanent link">&para;</a></h2> <ul> <li>Added in version 1.0.0.</li> </ul> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 29, 2026 20:15:18 UTC">June 29, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
diff --git a/api/basic_json/clear/index.html b/api/basic_json/clear/index.html
index 8b213cb..4766264 100644
--- a/api/basic_json/clear/index.html
+++ b/api/basic_json/clear/index.html
@@ -41,4 +41,4 @@
 <span class=p>{}</span>
 <span class=p>[]</span>
 <span class=s2>&quot;&quot;</span>
-</code></pre></div> </details> <h2 id=version-history>Version history<a class=headerlink href=#version-history title="Permanent link">&para;</a></h2> <ul> <li>Added in version 1.0.0.</li> <li>Added support for binary types in version 3.8.0.</li> </ul> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 23, 2026 11:16:18 UTC">June 23, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
+</code></pre></div> </details> <h2 id=version-history>Version history<a class=headerlink href=#version-history title="Permanent link">&para;</a></h2> <ul> <li>Added in version 1.0.0.</li> <li>Added support for binary types in version 3.8.0.</li> </ul> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 29, 2026 20:15:18 UTC">June 29, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
diff --git a/api/basic_json/contains/index.html b/api/basic_json/contains/index.html
index f62dd92..8f5fa5d 100644
--- a/api/basic_json/contains/index.html
+++ b/api/basic_json/contains/index.html
@@ -1,4 +1,4 @@
-<!doctype html><html lang=en class=no-js> <head><meta charset=utf-8><meta name=viewport content="width=device-width,initial-scale=1"><meta name=author content="Niels Lohmann"><link href="https://json.nlohmann.me/api/basic_json/contains/" rel="canonical"><link href=../clear/ rel=prev><link href=../count/ rel=next><link rel=icon href=../../../assets/images/favicon.png><meta name=generator content="mkdocs-1.6.1, mkdocs-material-9.7.6"><title>contains - JSON for Modern C++</title><link rel=stylesheet href=../../../assets/stylesheets/main.484c7ddc.min.css><link rel=stylesheet href=../../../assets/stylesheets/palette.ab4e12ef.min.css><link rel="stylesheet" href="../../../assets/external/fonts.googleapis.com/css.61a430c9.css"><style>:root{--md-text-font:"Roboto";--md-code-font:"JetBrains Mono"}</style><link rel=stylesheet href=../../../css/custom.css><script>__md_scope=new URL("../../..",location),__md_hash=e=>[...e].reduce(((e,_)=>(e<<5)-e+_.charCodeAt(0)),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script></head> <body dir=ltr data-md-color-scheme=default data-md-color-primary=indigo data-md-color-accent=indigo> <input class=md-toggle data-md-toggle=drawer type=checkbox id=__drawer autocomplete=off> <input class=md-toggle data-md-toggle=search type=checkbox id=__search autocomplete=off> <label class=md-overlay for=__drawer></label> <div data-md-component=skip> <a href=#nlohmannbasic_jsoncontains class=md-skip> Skip to content </a> </div> <div data-md-component=announce> </div> <header class=md-header data-md-component=header> <nav class="md-header__inner md-grid" aria-label=Header> <a href=../../.. title="JSON for Modern C++" class="md-header__button md-logo" aria-label="JSON for Modern C++" data-md-component=logo> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54"/></svg> </a> <label class="md-header__button md-icon" for=__drawer> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M3 6h18v2H3zm0 5h18v2H3zm0 5h18v2H3z"/></svg> </label> <div class=md-header__title data-md-component=header-title> <div class=md-header__ellipsis> <div class=md-header__topic> <span class=md-ellipsis> JSON for Modern C++ </span> </div> <div class=md-header__topic data-md-component=header-topic> <span class=md-ellipsis> contains </span> </div> </div> </div> <form class=md-header__option data-md-component=palette> <input class=md-option data-md-color-media="(prefers-color-scheme: light)" data-md-color-scheme=default data-md-color-primary=indigo data-md-color-accent=indigo aria-label="Switch to dark mode" type=radio name=__palette id=__palette_0> <label class="md-header__button md-icon" title="Switch to dark mode" for=__palette_1 hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a4 4 0 0 0-4 4 4 4 0 0 0 4 4 4 4 0 0 0 4-4 4 4 0 0 0-4-4m0 10a6 6 0 0 1-6-6 6 6 0 0 1 6-6 6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12z"/></svg> </label> <input class=md-option data-md-color-media="(prefers-color-scheme: dark)" data-md-color-scheme=slate data-md-color-primary=indigo data-md-color-accent=indigo aria-label="Switch to light mode" type=radio name=__palette id=__palette_1> <label class="md-header__button md-icon" title="Switch to light mode" for=__palette_0 hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 18c-.89 0-1.74-.2-2.5-.55C11.56 16.5 13 14.42 13 12s-1.44-4.5-3.5-5.45C10.26 6.2 11.11 6 12 6a6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12z"/></svg> </label> </form> <script>var palette=__md_get("__palette");if(palette&&palette.color){if("(prefers-color-scheme)"===palette.color.media){var media=matchMedia("(prefers-color-scheme: light)"),input=document.querySelector(media.matches?"[data-md-color-media='(prefers-color-scheme: light)']":"[data-md-color-media='(prefers-color-scheme: dark)']");palette.color.media=input.getAttribute("data-md-color-media"),palette.color.scheme=input.getAttribute("data-md-color-scheme"),palette.color.primary=input.getAttribute("data-md-color-primary"),palette.color.accent=input.getAttribute("data-md-color-accent")}for(var[key,value]of Object.entries(palette.color))document.body.setAttribute("data-md-color-"+key,value)}</script> <label class="md-header__button md-icon" for=__search> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg> </label> <div class=md-search data-md-component=search role=dialog> <label class=md-search__overlay for=__search></label> <div class=md-search__inner role=search> <form class=md-search__form name=search> <input type=text class=md-search__input name=query aria-label=Search placeholder=Search autocapitalize=off autocorrect=off autocomplete=off spellcheck=false data-md-component=search-query required> <label class="md-search__icon md-icon" for=__search> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11z"/></svg> </label> <nav class=md-search__options aria-label=Search> <button type=reset class="md-search__icon md-icon" title=Clear aria-label=Clear tabindex=-1> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z"/></svg> </button> </nav> </form> <div class=md-search__output> <div class=md-search__scrollwrap tabindex=0 data-md-scrollfix> <div class=md-search-result data-md-component=search-result> <div class=md-search-result__meta> Initializing search </div> <ol class=md-search-result__list role=presentation></ol> </div> </div> </div> </div> </div> <div class=md-header__source> <a href="https://github.com/nlohmann/json" title="Go to repository" class="md-source" data-md-component="source"> <div class="md-source__icon md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </div> <div class=md-source__repository> nlohmann/json </div> </a> </div> </nav> </header> <div class=md-container data-md-component=container> <nav class=md-tabs aria-label=Tabs data-md-component=tabs> <div class=md-grid> <ul class=md-tabs__list> <li class=md-tabs__item> <a href=../../.. class=md-tabs__link> Home </a> </li> <li class=md-tabs__item> <a href=../../../features/arbitrary_types/ class=md-tabs__link> Features </a> </li> <li class=md-tabs__item> <a href=../../../integration/ class=md-tabs__link> Integration </a> </li> <li class="md-tabs__item md-tabs__item--active"> <a href=../ class=md-tabs__link> API Documentation </a> </li> <li class=md-tabs__item> <a href=../../../community/ class=md-tabs__link> Community </a> </li> </ul> </div> </nav> <main class=md-main data-md-component=main> <div class="md-main__inner md-grid"> <div class="md-sidebar md-sidebar--primary" data-md-component=sidebar data-md-type=navigation> <div class=md-sidebar__scrollwrap> <div class=md-sidebar__inner> <nav class="md-nav md-nav--primary md-nav--lifted" aria-label=Navigation data-md-level=0> <label class=md-nav__title for=__drawer> <a href=../../.. title="JSON for Modern C++" class="md-nav__button md-logo" aria-label="JSON for Modern C++" data-md-component=logo> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54"/></svg> </a> JSON for Modern C++ </label> <div class=md-nav__source> <a href="https://github.com/nlohmann/json" title="Go to repository" class="md-source" data-md-component="source"> <div class="md-source__icon md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </div> <div class=md-source__repository> nlohmann/json </div> </a> </div> <ul class=md-nav__list data-md-scrollfix> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_1> <div class="md-nav__link md-nav__container"> <a href=../../.. class="md-nav__link "> <span class=md-ellipsis> Home </span> </a> <label class="md-nav__link " for=__nav_1 id=__nav_1_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_1_label aria-expanded=false> <label class=md-nav__title for=__nav_1> <span class="md-nav__icon md-icon"></span> Home </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../home/license/ class=md-nav__link> <span class=md-ellipsis> License </span> </a> </li> <li class=md-nav__item> <a href=../../../home/faq/ class=md-nav__link> <span class=md-ellipsis> FAQ </span> </a> </li> <li class=md-nav__item> <a href=../../../home/exceptions/ class=md-nav__link> <span class=md-ellipsis> Exceptions </span> </a> </li> <li class=md-nav__item> <a href=../../../home/releases/ class=md-nav__link> <span class=md-ellipsis> Releases </span> </a> </li> <li class=md-nav__item> <a href=../../../home/design_goals/ class=md-nav__link> <span class=md-ellipsis> Design goals </span> </a> </li> <li class=md-nav__item> <a href=../../../home/architecture/ class=md-nav__link> <span class=md-ellipsis> Architecture </span> </a> </li> <li class=md-nav__item> <a href=../../../home/customers/ class=md-nav__link> <span class=md-ellipsis> Customers </span> </a> </li> <li class=md-nav__item> <a href=../../../home/sponsors/ class=md-nav__link> <span class=md-ellipsis> Sponsors </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2> <label class=md-nav__link for=__nav_2 id=__nav_2_label tabindex=0> <span class=md-ellipsis> Features </span> <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_2_label aria-expanded=false> <label class=md-nav__title for=__nav_2> <span class="md-nav__icon md-icon"></span> Features </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/arbitrary_types/ class=md-nav__link> <span class=md-ellipsis> Arbitrary Type Conversions </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_2> <div class="md-nav__link md-nav__container"> <a href=../../../features/binary_formats/ class="md-nav__link "> <span class=md-ellipsis> Binary Formats </span> </a> <label class="md-nav__link " for=__nav_2_2 id=__nav_2_2_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_2_label aria-expanded=false> <label class=md-nav__title for=__nav_2_2> <span class="md-nav__icon md-icon"></span> Binary Formats </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/binary_formats/bjdata/ class=md-nav__link> <span class=md-ellipsis> BJData </span> </a> </li> <li class=md-nav__item> <a href=../../../features/binary_formats/bson/ class=md-nav__link> <span class=md-ellipsis> BSON </span> </a> </li> <li class=md-nav__item> <a href=../../../features/binary_formats/cbor/ class=md-nav__link> <span class=md-ellipsis> CBOR </span> </a> </li> <li class=md-nav__item> <a href=../../../features/binary_formats/messagepack/ class=md-nav__link> <span class=md-ellipsis> MessagePack </span> </a> </li> <li class=md-nav__item> <a href=../../../features/binary_formats/ubjson/ class=md-nav__link> <span class=md-ellipsis> UBJSON </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../../features/binary_values/ class=md-nav__link> <span class=md-ellipsis> Binary Values </span> </a> </li> <li class=md-nav__item> <a href=../../../features/comments/ class=md-nav__link> <span class=md-ellipsis> Comments </span> </a> </li> <li class=md-nav__item> <a href=../../../features/trailing_commas/ class=md-nav__link> <span class=md-ellipsis> Trailing Commas </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_6> <div class="md-nav__link md-nav__container"> <a href=../../../features/element_access/ class="md-nav__link "> <span class=md-ellipsis> Element Access </span> </a> <label class="md-nav__link " for=__nav_2_6 id=__nav_2_6_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_6_label aria-expanded=false> <label class=md-nav__title for=__nav_2_6> <span class="md-nav__icon md-icon"></span> Element Access </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/element_access/unchecked_access/ class=md-nav__link> <span class=md-ellipsis> Unchecked access: operator[] </span> </a> </li> <li class=md-nav__item> <a href=../../../features/element_access/checked_access/ class=md-nav__link> <span class=md-ellipsis> Checked access: at </span> </a> </li> <li class=md-nav__item> <a href=../../../features/element_access/default_value/ class=md-nav__link> <span class=md-ellipsis> Access with default value: value </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../../features/iterators/ class=md-nav__link> <span class=md-ellipsis> Iterators </span> </a> </li> <li class=md-nav__item> <a href=../../../features/json_pointer/ class=md-nav__link> <span class=md-ellipsis> JSON Pointer </span> </a> </li> <li class=md-nav__item> <a href=../../../features/json_patch/ class=md-nav__link> <span class=md-ellipsis> JSON Patch and Diff </span> </a> </li> <li class=md-nav__item> <a href=../../../features/merge_patch/ class=md-nav__link> <span class=md-ellipsis> JSON Merge Patch </span> </a> </li> <li class=md-nav__item> <a href=../../../features/modules/ class=md-nav__link> <span class=md-ellipsis> Modules </span> </a> </li> <li class=md-nav__item> <a href=../../../features/namespace/ class=md-nav__link> <span class=md-ellipsis> nlohmann Namespace </span> </a> </li> <li class=md-nav__item> <a href=../../../features/object_order/ class=md-nav__link> <span class=md-ellipsis> Object Order </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_14> <div class="md-nav__link md-nav__container"> <a href=../../../features/parsing/ class="md-nav__link "> <span class=md-ellipsis> Parsing </span> </a> <label class="md-nav__link " for=__nav_2_14 id=__nav_2_14_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_14_label aria-expanded=false> <label class=md-nav__title for=__nav_2_14> <span class="md-nav__icon md-icon"></span> Parsing </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/parsing/json_lines/ class=md-nav__link> <span class=md-ellipsis> JSON Lines </span> </a> </li> <li class=md-nav__item> <a href=../../../features/parsing/parse_exceptions/ class=md-nav__link> <span class=md-ellipsis> Parsing and Exceptions </span> </a> </li> <li class=md-nav__item> <a href=../../../features/parsing/parser_callbacks/ class=md-nav__link> <span class=md-ellipsis> Parser Callbacks </span> </a> </li> <li class=md-nav__item> <a href=../../../features/parsing/sax_interface/ class=md-nav__link> <span class=md-ellipsis> SAX Interface </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../../features/assertions/ class=md-nav__link> <span class=md-ellipsis> Runtime Assertions </span> </a> </li> <li class=md-nav__item> <a href=../../../features/enum_conversion/ class=md-nav__link> <span class=md-ellipsis> Specializing enum conversion </span> </a> </li> <li class=md-nav__item> <a href=../../../features/macros/ class=md-nav__link> <span class=md-ellipsis> Supported Macros </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_18> <div class="md-nav__link md-nav__container"> <a href=../../../features/types/ class="md-nav__link "> <span class=md-ellipsis> Types </span> </a> <label class="md-nav__link " for=__nav_2_18 id=__nav_2_18_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_18_label aria-expanded=false> <label class=md-nav__title for=__nav_2_18> <span class="md-nav__icon md-icon"></span> Types </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/types/number_handling/ class=md-nav__link> <span class=md-ellipsis> Number Handling </span> </a> </li> </ul> </nav> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_3> <div class="md-nav__link md-nav__container"> <a href=../../../integration/ class="md-nav__link "> <span class=md-ellipsis> Integration </span> </a> <label class="md-nav__link " for=__nav_3 id=__nav_3_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_3_label aria-expanded=false> <label class=md-nav__title for=__nav_3> <span class="md-nav__icon md-icon"></span> Integration </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../integration/migration_guide/ class=md-nav__link> <span class=md-ellipsis> Migration Guide </span> </a> </li> <li class=md-nav__item> <a href=../../../integration/cmake/ class=md-nav__link> <span class=md-ellipsis> CMake </span> </a> </li> <li class=md-nav__item> <a href=../../../integration/package_managers/ class=md-nav__link> <span class=md-ellipsis> Package Managers </span> </a> </li> <li class=md-nav__item> <a href=../../../integration/pkg-config/ class=md-nav__link> <span class=md-ellipsis> Pkg-config </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--active md-nav__item--section md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4 checked> <label class=md-nav__link for=__nav_4 id=__nav_4_label tabindex> <span class=md-ellipsis> API Documentation </span> <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_4_label aria-expanded=true> <label class=md-nav__title for=__nav_4> <span class="md-nav__icon md-icon"></span> API Documentation </label> <ul class=md-nav__list data-md-scrollfix> <li class="md-nav__item md-nav__item--active md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_1 checked> <div class="md-nav__link md-nav__container"> <a href=../ class="md-nav__link "> <span class=md-ellipsis> basic_json </span> </a> <label class="md-nav__link " for=__nav_4_1 id=__nav_4_1_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_1_label aria-expanded=true> <label class=md-nav__title for=__nav_4_1> <span class="md-nav__icon md-icon"></span> basic_json </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../basic_json/ class=md-nav__link> <span class=md-ellipsis> (Constructor) </span> </a> </li> <li class=md-nav__item> <a href=../~basic_json/ class=md-nav__link> <span class=md-ellipsis> (Destructor) </span> </a> </li> <li class=md-nav__item> <a href=../accept/ class=md-nav__link> <span class=md-ellipsis> accept </span> </a> </li> <li class=md-nav__item> <a href=../array/ class=md-nav__link> <span class=md-ellipsis> array </span> </a> </li> <li class=md-nav__item> <a href=../array_t/ class=md-nav__link> <span class=md-ellipsis> array_t </span> </a> </li> <li class=md-nav__item> <a href=../at/ class=md-nav__link> <span class=md-ellipsis> at </span> </a> </li> <li class=md-nav__item> <a href=../back/ class=md-nav__link> <span class=md-ellipsis> back </span> </a> </li> <li class=md-nav__item> <a href=../begin/ class=md-nav__link> <span class=md-ellipsis> begin </span> </a> </li> <li class=md-nav__item> <a href=../binary/ class=md-nav__link> <span class=md-ellipsis> binary </span> </a> </li> <li class=md-nav__item> <a href=../binary_t/ class=md-nav__link> <span class=md-ellipsis> binary_t </span> </a> </li> <li class=md-nav__item> <a href=../boolean_t/ class=md-nav__link> <span class=md-ellipsis> boolean_t </span> </a> </li> <li class=md-nav__item> <a href=../cbegin/ class=md-nav__link> <span class=md-ellipsis> cbegin </span> </a> </li> <li class=md-nav__item> <a href=../cbor_tag_handler_t/ class=md-nav__link> <span class=md-ellipsis> cbor_tag_handler_t </span> </a> </li> <li class=md-nav__item> <a href=../cend/ class=md-nav__link> <span class=md-ellipsis> cend </span> </a> </li> <li class=md-nav__item> <a href=../clear/ class=md-nav__link> <span class=md-ellipsis> clear </span> </a> </li> <li class="md-nav__item md-nav__item--active"> <input class="md-nav__toggle md-toggle" type=checkbox id=__toc> <label class="md-nav__link md-nav__link--active" for=__toc> <span class=md-ellipsis> contains </span> <span class="md-nav__icon md-icon"></span> </label> <a href=./ class="md-nav__link md-nav__link--active"> <span class=md-ellipsis> contains </span> </a> <nav class="md-nav md-nav--secondary" aria-label="Table of contents"> <label class=md-nav__title for=__toc> <span class="md-nav__icon md-icon"></span> Table of contents </label> <ul class=md-nav__list data-md-component=toc data-md-scrollfix> <li class=md-nav__item> <a href=#template-parameters class=md-nav__link> <span class=md-ellipsis> Template parameters </span> </a> </li> <li class=md-nav__item> <a href=#parameters class=md-nav__link> <span class=md-ellipsis> Parameters </span> </a> </li> <li class=md-nav__item> <a href=#return-value class=md-nav__link> <span class=md-ellipsis> Return value </span> </a> </li> <li class=md-nav__item> <a href=#exception-safety class=md-nav__link> <span class=md-ellipsis> Exception safety </span> </a> </li> <li class=md-nav__item> <a href=#exceptions class=md-nav__link> <span class=md-ellipsis> Exceptions </span> </a> </li> <li class=md-nav__item> <a href=#complexity class=md-nav__link> <span class=md-ellipsis> Complexity </span> </a> </li> <li class=md-nav__item> <a href=#notes class=md-nav__link> <span class=md-ellipsis> Notes </span> </a> </li> <li class=md-nav__item> <a href=#examples class=md-nav__link> <span class=md-ellipsis> Examples </span> </a> </li> <li class=md-nav__item> <a href=#version-history class=md-nav__link> <span class=md-ellipsis> Version history </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../count/ class=md-nav__link> <span class=md-ellipsis> count </span> </a> </li> <li class=md-nav__item> <a href=../crbegin/ class=md-nav__link> <span class=md-ellipsis> crbegin </span> </a> </li> <li class=md-nav__item> <a href=../crend/ class=md-nav__link> <span class=md-ellipsis> crend </span> </a> </li> <li class=md-nav__item> <a href=../default_object_comparator_t/ class=md-nav__link> <span class=md-ellipsis> default_object_comparator_t </span> </a> </li> <li class=md-nav__item> <a href=../diff/ class=md-nav__link> <span class=md-ellipsis> diff </span> </a> </li> <li class=md-nav__item> <a href=../dump/ class=md-nav__link> <span class=md-ellipsis> dump </span> </a> </li> <li class=md-nav__item> <a href=../emplace/ class=md-nav__link> <span class=md-ellipsis> emplace </span> </a> </li> <li class=md-nav__item> <a href=../emplace_back/ class=md-nav__link> <span class=md-ellipsis> emplace_back </span> </a> </li> <li class=md-nav__item> <a href=../empty/ class=md-nav__link> <span class=md-ellipsis> empty </span> </a> </li> <li class=md-nav__item> <a href=../end/ class=md-nav__link> <span class=md-ellipsis> end </span> </a> </li> <li class=md-nav__item> <a href=../end_pos/ class=md-nav__link> <span class=md-ellipsis> end_pos </span> </a> </li> <li class=md-nav__item> <a href=../erase/ class=md-nav__link> <span class=md-ellipsis> erase </span> </a> </li> <li class=md-nav__item> <a href=../error_handler_t/ class=md-nav__link> <span class=md-ellipsis> error_handler_t </span> </a> </li> <li class=md-nav__item> <a href=../exception/ class=md-nav__link> <span class=md-ellipsis> exception </span> </a> </li> <li class=md-nav__item> <a href=../find/ class=md-nav__link> <span class=md-ellipsis> find </span> </a> </li> <li class=md-nav__item> <a href=../flatten/ class=md-nav__link> <span class=md-ellipsis> flatten </span> </a> </li> <li class=md-nav__item> <a href=../from_bjdata/ class=md-nav__link> <span class=md-ellipsis> from_bjdata </span> </a> </li> <li class=md-nav__item> <a href=../from_bson/ class=md-nav__link> <span class=md-ellipsis> from_bson </span> </a> </li> <li class=md-nav__item> <a href=../from_cbor/ class=md-nav__link> <span class=md-ellipsis> from_cbor </span> </a> </li> <li class=md-nav__item> <a href=../from_msgpack/ class=md-nav__link> <span class=md-ellipsis> from_msgpack </span> </a> </li> <li class=md-nav__item> <a href=../from_ubjson/ class=md-nav__link> <span class=md-ellipsis> from_ubjson </span> </a> </li> <li class=md-nav__item> <a href=../front/ class=md-nav__link> <span class=md-ellipsis> front </span> </a> </li> <li class=md-nav__item> <a href=../get/ class=md-nav__link> <span class=md-ellipsis> get </span> </a> </li> <li class=md-nav__item> <a href=../get_allocator/ class=md-nav__link> <span class=md-ellipsis> get_allocator </span> </a> </li> <li class=md-nav__item> <a href=../get_binary/ class=md-nav__link> <span class=md-ellipsis> get_binary </span> </a> </li> <li class=md-nav__item> <a href=../get_ptr/ class=md-nav__link> <span class=md-ellipsis> get_ptr </span> </a> </li> <li class=md-nav__item> <a href=../get_ref/ class=md-nav__link> <span class=md-ellipsis> get_ref </span> </a> </li> <li class=md-nav__item> <a href=../get_to/ class=md-nav__link> <span class=md-ellipsis> get_to </span> </a> </li> <li class=md-nav__item> <a href=../std_hash/ class=md-nav__link> <span class=md-ellipsis> std::hash&lt;basic_json&gt; </span> </a> </li> <li class=md-nav__item> <a href=../input_format_t/ class=md-nav__link> <span class=md-ellipsis> input_format_t </span> </a> </li> <li class=md-nav__item> <a href=../insert/ class=md-nav__link> <span class=md-ellipsis> insert </span> </a> </li> <li class=md-nav__item> <a href=../invalid_iterator/ class=md-nav__link> <span class=md-ellipsis> invalid_iterator </span> </a> </li> <li class=md-nav__item> <a href=../is_array/ class=md-nav__link> <span class=md-ellipsis> is_array </span> </a> </li> <li class=md-nav__item> <a href=../is_binary/ class=md-nav__link> <span class=md-ellipsis> is_binary </span> </a> </li> <li class=md-nav__item> <a href=../is_boolean/ class=md-nav__link> <span class=md-ellipsis> is_boolean </span> </a> </li> <li class=md-nav__item> <a href=../is_discarded/ class=md-nav__link> <span class=md-ellipsis> is_discarded </span> </a> </li> <li class=md-nav__item> <a href=../is_null/ class=md-nav__link> <span class=md-ellipsis> is_null </span> </a> </li> <li class=md-nav__item> <a href=../is_number/ class=md-nav__link> <span class=md-ellipsis> is_number </span> </a> </li> <li class=md-nav__item> <a href=../is_number_float/ class=md-nav__link> <span class=md-ellipsis> is_number_float </span> </a> </li> <li class=md-nav__item> <a href=../is_number_integer/ class=md-nav__link> <span class=md-ellipsis> is_number_integer </span> </a> </li> <li class=md-nav__item> <a href=../is_number_unsigned/ class=md-nav__link> <span class=md-ellipsis> is_number_unsigned </span> </a> </li> <li class=md-nav__item> <a href=../is_object/ class=md-nav__link> <span class=md-ellipsis> is_object </span> </a> </li> <li class=md-nav__item> <a href=../is_primitive/ class=md-nav__link> <span class=md-ellipsis> is_primitive </span> </a> </li> <li class=md-nav__item> <a href=../is_string/ class=md-nav__link> <span class=md-ellipsis> is_string </span> </a> </li> <li class=md-nav__item> <a href=../is_structured/ class=md-nav__link> <span class=md-ellipsis> is_structured </span> </a> </li> <li class=md-nav__item> <a href=../items/ class=md-nav__link> <span class=md-ellipsis> items </span> </a> </li> <li class=md-nav__item> <a href=../json_base_class_t/ class=md-nav__link> <span class=md-ellipsis> json_base_class_t </span> </a> </li> <li class=md-nav__item> <a href=../json_serializer/ class=md-nav__link> <span class=md-ellipsis> json_serializer </span> </a> </li> <li class=md-nav__item> <a href=../max_size/ class=md-nav__link> <span class=md-ellipsis> max_size </span> </a> </li> <li class=md-nav__item> <a href=../meta/ class=md-nav__link> <span class=md-ellipsis> meta </span> </a> </li> <li class=md-nav__item> <a href=../merge_patch/ class=md-nav__link> <span class=md-ellipsis> merge_patch </span> </a> </li> <li class=md-nav__item> <a href=../number_float_t/ class=md-nav__link> <span class=md-ellipsis> number_float_t </span> </a> </li> <li class=md-nav__item> <a href=../number_integer_t/ class=md-nav__link> <span class=md-ellipsis> number_integer_t </span> </a> </li> <li class=md-nav__item> <a href=../number_unsigned_t/ class=md-nav__link> <span class=md-ellipsis> number_unsigned_t </span> </a> </li> <li class=md-nav__item> <a href=../object/ class=md-nav__link> <span class=md-ellipsis> object </span> </a> </li> <li class=md-nav__item> <a href=../object_comparator_t/ class=md-nav__link> <span class=md-ellipsis> object_comparator_t </span> </a> </li> <li class=md-nav__item> <a href=../object_t/ class=md-nav__link> <span class=md-ellipsis> object_t </span> </a> </li> <li class=md-nav__item> <a href=../operator_ValueType/ class=md-nav__link> <span class=md-ellipsis> operator ValueType </span> </a> </li> <li class=md-nav__item> <a href=../operator_value_t/ class=md-nav__link> <span class=md-ellipsis> operator value_t </span> </a> </li> <li class=md-nav__item> <a href=../operator%5B%5D/ class=md-nav__link> <span class=md-ellipsis> operator[] </span> </a> </li> <li class=md-nav__item> <a href=../operator%3D/ class=md-nav__link> <span class=md-ellipsis> operator= </span> </a> </li> <li class=md-nav__item> <a href=../operator%2B%3D/ class=md-nav__link> <span class=md-ellipsis> operator+= </span> </a> </li> <li class=md-nav__item> <a href=../operator_eq/ class=md-nav__link> <span class=md-ellipsis> operator== </span> </a> </li> <li class=md-nav__item> <a href=../operator_ne/ class=md-nav__link> <span class=md-ellipsis> operator!= </span> </a> </li> <li class=md-nav__item> <a href=../operator_lt/ class=md-nav__link> <span class=md-ellipsis> operator< </span> </a> </li> <li class=md-nav__item> <a href=../operator_gt/ class=md-nav__link> <span class=md-ellipsis> operator> </span> </a> </li> <li class=md-nav__item> <a href=../operator_le/ class=md-nav__link> <span class=md-ellipsis> operator<= </span> </a> </li> <li class=md-nav__item> <a href=../operator_ge/ class=md-nav__link> <span class=md-ellipsis> operator>= </span> </a> </li> <li class=md-nav__item> <a href=../operator_spaceship/ class=md-nav__link> <span class=md-ellipsis> operator<=> </span> </a> </li> <li class=md-nav__item> <a href=../out_of_range/ class=md-nav__link> <span class=md-ellipsis> out_of_range </span> </a> </li> <li class=md-nav__item> <a href=../other_error/ class=md-nav__link> <span class=md-ellipsis> other_error </span> </a> </li> <li class=md-nav__item> <a href=../parse/ class=md-nav__link> <span class=md-ellipsis> parse </span> </a> </li> <li class=md-nav__item> <a href=../parse_error/ class=md-nav__link> <span class=md-ellipsis> parse_error </span> </a> </li> <li class=md-nav__item> <a href=../parse_event_t/ class=md-nav__link> <span class=md-ellipsis> parse_event_t </span> </a> </li> <li class=md-nav__item> <a href=../parser_callback_t/ class=md-nav__link> <span class=md-ellipsis> parser_callback_t </span> </a> </li> <li class=md-nav__item> <a href=../patch/ class=md-nav__link> <span class=md-ellipsis> patch </span> </a> </li> <li class=md-nav__item> <a href=../patch_inplace/ class=md-nav__link> <span class=md-ellipsis> patch_inplace </span> </a> </li> <li class=md-nav__item> <a href=../push_back/ class=md-nav__link> <span class=md-ellipsis> push_back </span> </a> </li> <li class=md-nav__item> <a href=../rbegin/ class=md-nav__link> <span class=md-ellipsis> rbegin </span> </a> </li> <li class=md-nav__item> <a href=../rend/ class=md-nav__link> <span class=md-ellipsis> rend </span> </a> </li> <li class=md-nav__item> <a href=../sax_parse/ class=md-nav__link> <span class=md-ellipsis> sax_parse </span> </a> </li> <li class=md-nav__item> <a href=../size/ class=md-nav__link> <span class=md-ellipsis> size </span> </a> </li> <li class=md-nav__item> <a href=../start_pos/ class=md-nav__link> <span class=md-ellipsis> start_pos </span> </a> </li> <li class=md-nav__item> <a href=../string_t/ class=md-nav__link> <span class=md-ellipsis> string_t </span> </a> </li> <li class=md-nav__item> <a href=../swap/ class=md-nav__link> <span class=md-ellipsis> swap </span> </a> </li> <li class=md-nav__item> <a href=../std_swap/ class=md-nav__link> <span class=md-ellipsis> std::swap&lt;basic_json&gt; </span> </a> </li> <li class=md-nav__item> <a href=../to_bjdata/ class=md-nav__link> <span class=md-ellipsis> to_bjdata </span> </a> </li> <li class=md-nav__item> <a href=../to_bson/ class=md-nav__link> <span class=md-ellipsis> to_bson </span> </a> </li> <li class=md-nav__item> <a href=../to_cbor/ class=md-nav__link> <span class=md-ellipsis> to_cbor </span> </a> </li> <li class=md-nav__item> <a href=../to_msgpack/ class=md-nav__link> <span class=md-ellipsis> to_msgpack </span> </a> </li> <li class=md-nav__item> <a href=../to_string/ class=md-nav__link> <span class=md-ellipsis> to_string </span> </a> </li> <li class=md-nav__item> <a href=../to_ubjson/ class=md-nav__link> <span class=md-ellipsis> to_ubjson </span> </a> </li> <li class=md-nav__item> <a href=../type/ class=md-nav__link> <span class=md-ellipsis> type </span> </a> </li> <li class=md-nav__item> <a href=../type_error/ class=md-nav__link> <span class=md-ellipsis> type_error </span> </a> </li> <li class=md-nav__item> <a href=../type_name/ class=md-nav__link> <span class=md-ellipsis> type_name </span> </a> </li> <li class=md-nav__item> <a href=../unflatten/ class=md-nav__link> <span class=md-ellipsis> unflatten </span> </a> </li> <li class=md-nav__item> <a href=../update/ class=md-nav__link> <span class=md-ellipsis> update </span> </a> </li> <li class=md-nav__item> <a href=../value/ class=md-nav__link> <span class=md-ellipsis> value </span> </a> </li> <li class=md-nav__item> <a href=../value_t/ class=md-nav__link> <span class=md-ellipsis> value_t </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_2> <div class="md-nav__link md-nav__container"> <a href=../../byte_container_with_subtype/ class="md-nav__link "> <span class=md-ellipsis> byte_container_with_subtype </span> </a> <label class="md-nav__link " for=__nav_4_2 id=__nav_4_2_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_2_label aria-expanded=false> <label class=md-nav__title for=__nav_4_2> <span class="md-nav__icon md-icon"></span> byte_container_with_subtype </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../byte_container_with_subtype/byte_container_with_subtype/ class=md-nav__link> <span class=md-ellipsis> (constructor) </span> </a> </li> <li class=md-nav__item> <a href=../../byte_container_with_subtype/clear_subtype/ class=md-nav__link> <span class=md-ellipsis> clear_subtype </span> </a> </li> <li class=md-nav__item> <a href=../../byte_container_with_subtype/has_subtype/ class=md-nav__link> <span class=md-ellipsis> has_subtype </span> </a> </li> <li class=md-nav__item> <a href=../../byte_container_with_subtype/set_subtype/ class=md-nav__link> <span class=md-ellipsis> set_subtype </span> </a> </li> <li class=md-nav__item> <a href=../../byte_container_with_subtype/subtype/ class=md-nav__link> <span class=md-ellipsis> subtype </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_3> <div class="md-nav__link md-nav__container"> <a href=../../adl_serializer/ class="md-nav__link "> <span class=md-ellipsis> adl_serializer </span> </a> <label class="md-nav__link " for=__nav_4_3 id=__nav_4_3_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_3_label aria-expanded=false> <label class=md-nav__title for=__nav_4_3> <span class="md-nav__icon md-icon"></span> adl_serializer </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../adl_serializer/from_json/ class=md-nav__link> <span class=md-ellipsis> from_json </span> </a> </li> <li class=md-nav__item> <a href=../../adl_serializer/to_json/ class=md-nav__link> <span class=md-ellipsis> to_json </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../json/ class=md-nav__link> <span class=md-ellipsis> json </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_5> <div class="md-nav__link md-nav__container"> <a href=../../json_pointer/ class="md-nav__link "> <span class=md-ellipsis> json_pointer </span> </a> <label class="md-nav__link " for=__nav_4_5 id=__nav_4_5_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_5_label aria-expanded=false> <label class=md-nav__title for=__nav_4_5> <span class="md-nav__icon md-icon"></span> json_pointer </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../json_pointer/json_pointer/ class=md-nav__link> <span class=md-ellipsis> (Constructor) </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/back/ class=md-nav__link> <span class=md-ellipsis> back </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/empty/ class=md-nav__link> <span class=md-ellipsis> empty </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/front/ class=md-nav__link> <span class=md-ellipsis> front </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_string_t/ class=md-nav__link> <span class=md-ellipsis> operator string_t </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_eq/ class=md-nav__link> <span class=md-ellipsis> operator== </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_ne/ class=md-nav__link> <span class=md-ellipsis> operator!= </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_slash/ class=md-nav__link> <span class=md-ellipsis> operator/ </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_slasheq/ class=md-nav__link> <span class=md-ellipsis> operator/= </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/parent_pointer/ class=md-nav__link> <span class=md-ellipsis> parent_pointer </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/pop_back/ class=md-nav__link> <span class=md-ellipsis> pop_back </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/pop_front/ class=md-nav__link> <span class=md-ellipsis> pop_front </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/push_back/ class=md-nav__link> <span class=md-ellipsis> push_back </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/push_front/ class=md-nav__link> <span class=md-ellipsis> push_front </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/string_t/ class=md-nav__link> <span class=md-ellipsis> string_t </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/to_string/ class=md-nav__link> <span class=md-ellipsis> to_string </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_6> <div class="md-nav__link md-nav__container"> <a href=../../json_sax/ class="md-nav__link "> <span class=md-ellipsis> json_sax </span> </a> <label class="md-nav__link " for=__nav_4_6 id=__nav_4_6_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_6_label aria-expanded=false> <label class=md-nav__title for=__nav_4_6> <span class="md-nav__icon md-icon"></span> json_sax </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../json_sax/binary/ class=md-nav__link> <span class=md-ellipsis> binary </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/boolean/ class=md-nav__link> <span class=md-ellipsis> boolean </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/end_array/ class=md-nav__link> <span class=md-ellipsis> end_array </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/end_object/ class=md-nav__link> <span class=md-ellipsis> end_object </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/key/ class=md-nav__link> <span class=md-ellipsis> key </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/null/ class=md-nav__link> <span class=md-ellipsis> null </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/number_float/ class=md-nav__link> <span class=md-ellipsis> number_float </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/number_integer/ class=md-nav__link> <span class=md-ellipsis> number_integer </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/number_unsigned/ class=md-nav__link> <span class=md-ellipsis> number_unsigned </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/parse_error/ class=md-nav__link> <span class=md-ellipsis> parse_error </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/start_array/ class=md-nav__link> <span class=md-ellipsis> start_array </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/start_object/ class=md-nav__link> <span class=md-ellipsis> start_object </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/string/ class=md-nav__link> <span class=md-ellipsis> string </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../operator_ltlt/ class=md-nav__link> <span class=md-ellipsis> operator<<(basic_json), operator<<(json_pointer) </span> </a> </li> <li class=md-nav__item> <a href=../../operator_gtgt/ class=md-nav__link> <span class=md-ellipsis> operator>>(basic_json) </span> </a> </li> <li class=md-nav__item> <a href=../../operator_literal_json/ class=md-nav__link> <span class=md-ellipsis> operator""_json </span> </a> </li> <li class=md-nav__item> <a href=../../operator_literal_json_pointer/ class=md-nav__link> <span class=md-ellipsis> operator""_json_pointer </span> </a> </li> <li class=md-nav__item> <a href=../../ordered_json/ class=md-nav__link> <span class=md-ellipsis> ordered_json </span> </a> </li> <li class=md-nav__item> <a href=../../ordered_map/ class=md-nav__link> <span class=md-ellipsis> ordered_map </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_13> <div class="md-nav__link md-nav__container"> <a href=../../macros/ class="md-nav__link "> <span class=md-ellipsis> macros </span> </a> <label class="md-nav__link " for=__nav_4_13 id=__nav_4_13_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_13_label aria-expanded=false> <label class=md-nav__title for=__nav_4_13> <span class="md-nav__icon md-icon"></span> macros </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../macros/json_assert/ class=md-nav__link> <span class=md-ellipsis> JSON_ASSERT </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_brace_init_copy_semantics/ class=md-nav__link> <span class=md-ellipsis> JSON_BRACE_INIT_COPY_SEMANTICS </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_throw_user/ class=md-nav__link> <span class=md-ellipsis> JSON_CATCH_USER, JSON_THROW_USER, JSON_TRY_USER </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_diagnostics/ class=md-nav__link> <span class=md-ellipsis> JSON_DIAGNOSTICS </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_diagnostic_positions/ class=md-nav__link> <span class=md-ellipsis> JSON_DIAGNOSTIC_POSITIONS </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_disable_enum_serialization/ class=md-nav__link> <span class=md-ellipsis> JSON_DISABLE_ENUM_SERIALIZATION </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_has_cpp_11/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_CPP_11, JSON_HAS_CPP_14, JSON_HAS_CPP_17, JSON_HAS_CPP_20 </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_has_filesystem/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_EXPERIMENTAL_FILESYSTEM, JSON_HAS_FILESYSTEM </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_has_ranges/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_RANGES </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_has_static_rtti/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_STATIC_RTTI </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_has_three_way_comparison/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_THREE_WAY_COMPARISON </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_noexception/ class=md-nav__link> <span class=md-ellipsis> JSON_NOEXCEPTION </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_no_io/ class=md-nav__link> <span class=md-ellipsis> JSON_NO_IO </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_skip_library_version_check/ class=md-nav__link> <span class=md-ellipsis> JSON_SKIP_LIBRARY_VERSION_CHECK </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_skip_unsupported_compiler_check/ class=md-nav__link> <span class=md-ellipsis> JSON_SKIP_UNSUPPORTED_COMPILER_CHECK </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_use_global_udls/ class=md-nav__link> <span class=md-ellipsis> JSON_USE_GLOBAL_UDLS </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_use_implicit_conversions/ class=md-nav__link> <span class=md-ellipsis> JSON_USE_IMPLICIT_CONVERSIONS </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_use_legacy_discarded_value_comparison/ class=md-nav__link> <span class=md-ellipsis> JSON_USE_LEGACY_DISCARDED_VALUE_COMPARISON </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_define_derived_type/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_ONLY_SERIALIZE, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_define_type_intrusive/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_TYPE_INTRUSIVE, NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_TYPE_INTRUSIVE_ONLY_SERIALIZE </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_define_type_non_intrusive/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_define_type_with_names/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_TYPE_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_namespace/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_NAMESPACE </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_namespace_begin/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_NAMESPACE_BEGIN, NLOHMANN_JSON_NAMESPACE_END </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_namespace_no_version/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_NAMESPACE_NO_VERSION </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_serialize_enum/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_SERIALIZE_ENUM </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_serialize_enum_strict/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_SERIALIZE_ENUM_STRICT </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_version_major/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_VERSION_MAJOR, NLOHMANN_JSON_VERSION_MINOR, NLOHMANN_JSON_VERSION_PATCH </span> </a> </li> </ul> </nav> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_5> <div class="md-nav__link md-nav__container"> <a href=../../../community/ class="md-nav__link "> <span class=md-ellipsis> Community </span> </a> <label class="md-nav__link " for=__nav_5 id=__nav_5_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_5_label aria-expanded=false> <label class=md-nav__title for=__nav_5> <span class="md-nav__icon md-icon"></span> Community </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../community/code_of_conduct/ class=md-nav__link> <span class=md-ellipsis> Code of Conduct </span> </a> </li> <li class=md-nav__item> <a href=../../../community/contribution_guidelines/ class=md-nav__link> <span class=md-ellipsis> Contribution Guidelines </span> </a> </li> <li class=md-nav__item> <a href=../../../community/quality_assurance/ class=md-nav__link> <span class=md-ellipsis> Quality assurance </span> </a> </li> <li class=md-nav__item> <a href=../../../community/governance/ class=md-nav__link> <span class=md-ellipsis> Governance </span> </a> </li> <li class=md-nav__item> <a href=../../../community/security_policy/ class=md-nav__link> <span class=md-ellipsis> Security Policy </span> </a> </li> </ul> </nav> </li> </ul> </nav> </div> </div> </div> <div class="md-sidebar md-sidebar--secondary" data-md-component=sidebar data-md-type=toc> <div class=md-sidebar__scrollwrap> <div class=md-sidebar__inner> <nav class="md-nav md-nav--secondary" aria-label="Table of contents"> <label class=md-nav__title for=__toc> <span class="md-nav__icon md-icon"></span> Table of contents </label> <ul class=md-nav__list data-md-component=toc data-md-scrollfix> <li class=md-nav__item> <a href=#template-parameters class=md-nav__link> <span class=md-ellipsis> Template parameters </span> </a> </li> <li class=md-nav__item> <a href=#parameters class=md-nav__link> <span class=md-ellipsis> Parameters </span> </a> </li> <li class=md-nav__item> <a href=#return-value class=md-nav__link> <span class=md-ellipsis> Return value </span> </a> </li> <li class=md-nav__item> <a href=#exception-safety class=md-nav__link> <span class=md-ellipsis> Exception safety </span> </a> </li> <li class=md-nav__item> <a href=#exceptions class=md-nav__link> <span class=md-ellipsis> Exceptions </span> </a> </li> <li class=md-nav__item> <a href=#complexity class=md-nav__link> <span class=md-ellipsis> Complexity </span> </a> </li> <li class=md-nav__item> <a href=#notes class=md-nav__link> <span class=md-ellipsis> Notes </span> </a> </li> <li class=md-nav__item> <a href=#examples class=md-nav__link> <span class=md-ellipsis> Examples </span> </a> </li> <li class=md-nav__item> <a href=#version-history class=md-nav__link> <span class=md-ellipsis> Version history </span> </a> </li> </ul> </nav> </div> </div> </div> <div class=md-content data-md-component=content> <article class="md-content__inner md-typeset"> <a href="https://github.com/nlohmann/json/edit/develop/docs/mkdocs/docs/api/basic_json/contains.md" title="Edit this page" class="md-content__button md-icon" rel="edit"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M10 20H6V4h7v5h5v3.1l2-2V8l-6-6H6c-1.1 0-2 .9-2 2v16c0 1.1.9 2 2 2h4zm10.2-7c.1 0 .3.1.4.2l1.3 1.3c.2.2.2.6 0 .8l-1 1-2.1-2.1 1-1c.1-.1.2-.2.4-.2m0 3.9L14.1 23H12v-2.1l6.1-6.1z"/></svg> </a> <a href="https://github.com/nlohmann/json/raw/develop/docs/mkdocs/docs/api/basic_json/contains.md" title="View source of this page" class="md-content__button md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M17 18c.56 0 1 .44 1 1s-.44 1-1 1-1-.44-1-1 .44-1 1-1m0-3c-2.73 0-5.06 1.66-6 4 .94 2.34 3.27 4 6 4s5.06-1.66 6-4c-.94-2.34-3.27-4-6-4m0 6.5a2.5 2.5 0 0 1-2.5-2.5 2.5 2.5 0 0 1 2.5-2.5 2.5 2.5 0 0 1 2.5 2.5 2.5 2.5 0 0 1-2.5 2.5M9.27 20H6V4h7v5h5v4.07c.7.08 1.36.25 2 .49V8l-6-6H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h4.5a8.2 8.2 0 0 1-1.23-2"/></svg> </a> <h1 id=nlohmannbasic_jsoncontains><small>nlohmann::basic_json::</small>contains<a class=headerlink href=#nlohmannbasic_jsoncontains title="Permanent link">&para;</a></h1> <div class=highlight><pre><span></span><code><span class=c1>// (1)</span>
+<!doctype html><html lang=en class=no-js> <head><meta charset=utf-8><meta name=viewport content="width=device-width,initial-scale=1"><meta name=author content="Niels Lohmann"><link href="https://json.nlohmann.me/api/basic_json/contains/" rel="canonical"><link href=../clear/ rel=prev><link href=../count/ rel=next><link rel=icon href=../../../assets/images/favicon.png><meta name=generator content="mkdocs-1.6.1, mkdocs-material-9.7.6"><title>contains - JSON for Modern C++</title><link rel=stylesheet href=../../../assets/stylesheets/main.484c7ddc.min.css><link rel=stylesheet href=../../../assets/stylesheets/palette.ab4e12ef.min.css><link rel="stylesheet" href="../../../assets/external/fonts.googleapis.com/css.61a430c9.css"><style>:root{--md-text-font:"Roboto";--md-code-font:"JetBrains Mono"}</style><link rel=stylesheet href=../../../css/custom.css><script>__md_scope=new URL("../../..",location),__md_hash=e=>[...e].reduce(((e,_)=>(e<<5)-e+_.charCodeAt(0)),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script></head> <body dir=ltr data-md-color-scheme=default data-md-color-primary=indigo data-md-color-accent=indigo> <input class=md-toggle data-md-toggle=drawer type=checkbox id=__drawer autocomplete=off> <input class=md-toggle data-md-toggle=search type=checkbox id=__search autocomplete=off> <label class=md-overlay for=__drawer></label> <div data-md-component=skip> <a href=#nlohmannbasic_jsoncontains class=md-skip> Skip to content </a> </div> <div data-md-component=announce> </div> <header class=md-header data-md-component=header> <nav class="md-header__inner md-grid" aria-label=Header> <a href=../../.. title="JSON for Modern C++" class="md-header__button md-logo" aria-label="JSON for Modern C++" data-md-component=logo> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54"/></svg> </a> <label class="md-header__button md-icon" for=__drawer> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M3 6h18v2H3zm0 5h18v2H3zm0 5h18v2H3z"/></svg> </label> <div class=md-header__title data-md-component=header-title> <div class=md-header__ellipsis> <div class=md-header__topic> <span class=md-ellipsis> JSON for Modern C++ </span> </div> <div class=md-header__topic data-md-component=header-topic> <span class=md-ellipsis> contains </span> </div> </div> </div> <form class=md-header__option data-md-component=palette> <input class=md-option data-md-color-media="(prefers-color-scheme: light)" data-md-color-scheme=default data-md-color-primary=indigo data-md-color-accent=indigo aria-label="Switch to dark mode" type=radio name=__palette id=__palette_0> <label class="md-header__button md-icon" title="Switch to dark mode" for=__palette_1 hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a4 4 0 0 0-4 4 4 4 0 0 0 4 4 4 4 0 0 0 4-4 4 4 0 0 0-4-4m0 10a6 6 0 0 1-6-6 6 6 0 0 1 6-6 6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12z"/></svg> </label> <input class=md-option data-md-color-media="(prefers-color-scheme: dark)" data-md-color-scheme=slate data-md-color-primary=indigo data-md-color-accent=indigo aria-label="Switch to light mode" type=radio name=__palette id=__palette_1> <label class="md-header__button md-icon" title="Switch to light mode" for=__palette_0 hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 18c-.89 0-1.74-.2-2.5-.55C11.56 16.5 13 14.42 13 12s-1.44-4.5-3.5-5.45C10.26 6.2 11.11 6 12 6a6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12z"/></svg> </label> </form> <script>var palette=__md_get("__palette");if(palette&&palette.color){if("(prefers-color-scheme)"===palette.color.media){var media=matchMedia("(prefers-color-scheme: light)"),input=document.querySelector(media.matches?"[data-md-color-media='(prefers-color-scheme: light)']":"[data-md-color-media='(prefers-color-scheme: dark)']");palette.color.media=input.getAttribute("data-md-color-media"),palette.color.scheme=input.getAttribute("data-md-color-scheme"),palette.color.primary=input.getAttribute("data-md-color-primary"),palette.color.accent=input.getAttribute("data-md-color-accent")}for(var[key,value]of Object.entries(palette.color))document.body.setAttribute("data-md-color-"+key,value)}</script> <label class="md-header__button md-icon" for=__search> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg> </label> <div class=md-search data-md-component=search role=dialog> <label class=md-search__overlay for=__search></label> <div class=md-search__inner role=search> <form class=md-search__form name=search> <input type=text class=md-search__input name=query aria-label=Search placeholder=Search autocapitalize=off autocorrect=off autocomplete=off spellcheck=false data-md-component=search-query required> <label class="md-search__icon md-icon" for=__search> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11z"/></svg> </label> <nav class=md-search__options aria-label=Search> <button type=reset class="md-search__icon md-icon" title=Clear aria-label=Clear tabindex=-1> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z"/></svg> </button> </nav> </form> <div class=md-search__output> <div class=md-search__scrollwrap tabindex=0 data-md-scrollfix> <div class=md-search-result data-md-component=search-result> <div class=md-search-result__meta> Initializing search </div> <ol class=md-search-result__list role=presentation></ol> </div> </div> </div> </div> </div> <div class=md-header__source> <a href="https://github.com/nlohmann/json" title="Go to repository" class="md-source" data-md-component="source"> <div class="md-source__icon md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </div> <div class=md-source__repository> nlohmann/json </div> </a> </div> </nav> </header> <div class=md-container data-md-component=container> <nav class=md-tabs aria-label=Tabs data-md-component=tabs> <div class=md-grid> <ul class=md-tabs__list> <li class=md-tabs__item> <a href=../../.. class=md-tabs__link> Home </a> </li> <li class=md-tabs__item> <a href=../../../features/arbitrary_types/ class=md-tabs__link> Features </a> </li> <li class=md-tabs__item> <a href=../../../integration/ class=md-tabs__link> Integration </a> </li> <li class="md-tabs__item md-tabs__item--active"> <a href=../ class=md-tabs__link> API Documentation </a> </li> <li class=md-tabs__item> <a href=../../../community/ class=md-tabs__link> Community </a> </li> </ul> </div> </nav> <main class=md-main data-md-component=main> <div class="md-main__inner md-grid"> <div class="md-sidebar md-sidebar--primary" data-md-component=sidebar data-md-type=navigation> <div class=md-sidebar__scrollwrap> <div class=md-sidebar__inner> <nav class="md-nav md-nav--primary md-nav--lifted" aria-label=Navigation data-md-level=0> <label class=md-nav__title for=__drawer> <a href=../../.. title="JSON for Modern C++" class="md-nav__button md-logo" aria-label="JSON for Modern C++" data-md-component=logo> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54"/></svg> </a> JSON for Modern C++ </label> <div class=md-nav__source> <a href="https://github.com/nlohmann/json" title="Go to repository" class="md-source" data-md-component="source"> <div class="md-source__icon md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </div> <div class=md-source__repository> nlohmann/json </div> </a> </div> <ul class=md-nav__list data-md-scrollfix> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_1> <div class="md-nav__link md-nav__container"> <a href=../../.. class="md-nav__link "> <span class=md-ellipsis> Home </span> </a> <label class="md-nav__link " for=__nav_1 id=__nav_1_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_1_label aria-expanded=false> <label class=md-nav__title for=__nav_1> <span class="md-nav__icon md-icon"></span> Home </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../home/license/ class=md-nav__link> <span class=md-ellipsis> License </span> </a> </li> <li class=md-nav__item> <a href=../../../home/faq/ class=md-nav__link> <span class=md-ellipsis> FAQ </span> </a> </li> <li class=md-nav__item> <a href=../../../home/exceptions/ class=md-nav__link> <span class=md-ellipsis> Exceptions </span> </a> </li> <li class=md-nav__item> <a href=../../../home/releases/ class=md-nav__link> <span class=md-ellipsis> Releases </span> </a> </li> <li class=md-nav__item> <a href=../../../home/design_goals/ class=md-nav__link> <span class=md-ellipsis> Design goals </span> </a> </li> <li class=md-nav__item> <a href=../../../home/architecture/ class=md-nav__link> <span class=md-ellipsis> Architecture </span> </a> </li> <li class=md-nav__item> <a href=../../../home/customers/ class=md-nav__link> <span class=md-ellipsis> Customers </span> </a> </li> <li class=md-nav__item> <a href=../../../home/sponsors/ class=md-nav__link> <span class=md-ellipsis> Sponsors </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2> <label class=md-nav__link for=__nav_2 id=__nav_2_label tabindex=0> <span class=md-ellipsis> Features </span> <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_2_label aria-expanded=false> <label class=md-nav__title for=__nav_2> <span class="md-nav__icon md-icon"></span> Features </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/arbitrary_types/ class=md-nav__link> <span class=md-ellipsis> Arbitrary Type Conversions </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_2> <div class="md-nav__link md-nav__container"> <a href=../../../features/binary_formats/ class="md-nav__link "> <span class=md-ellipsis> Binary Formats </span> </a> <label class="md-nav__link " for=__nav_2_2 id=__nav_2_2_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_2_label aria-expanded=false> <label class=md-nav__title for=__nav_2_2> <span class="md-nav__icon md-icon"></span> Binary Formats </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/binary_formats/bjdata/ class=md-nav__link> <span class=md-ellipsis> BJData </span> </a> </li> <li class=md-nav__item> <a href=../../../features/binary_formats/bson/ class=md-nav__link> <span class=md-ellipsis> BSON </span> </a> </li> <li class=md-nav__item> <a href=../../../features/binary_formats/cbor/ class=md-nav__link> <span class=md-ellipsis> CBOR </span> </a> </li> <li class=md-nav__item> <a href=../../../features/binary_formats/messagepack/ class=md-nav__link> <span class=md-ellipsis> MessagePack </span> </a> </li> <li class=md-nav__item> <a href=../../../features/binary_formats/ubjson/ class=md-nav__link> <span class=md-ellipsis> UBJSON </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../../features/binary_values/ class=md-nav__link> <span class=md-ellipsis> Binary Values </span> </a> </li> <li class=md-nav__item> <a href=../../../features/comments/ class=md-nav__link> <span class=md-ellipsis> Comments </span> </a> </li> <li class=md-nav__item> <a href=../../../features/trailing_commas/ class=md-nav__link> <span class=md-ellipsis> Trailing Commas </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_6> <div class="md-nav__link md-nav__container"> <a href=../../../features/element_access/ class="md-nav__link "> <span class=md-ellipsis> Element Access </span> </a> <label class="md-nav__link " for=__nav_2_6 id=__nav_2_6_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_6_label aria-expanded=false> <label class=md-nav__title for=__nav_2_6> <span class="md-nav__icon md-icon"></span> Element Access </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/element_access/unchecked_access/ class=md-nav__link> <span class=md-ellipsis> Unchecked access: operator[] </span> </a> </li> <li class=md-nav__item> <a href=../../../features/element_access/checked_access/ class=md-nav__link> <span class=md-ellipsis> Checked access: at </span> </a> </li> <li class=md-nav__item> <a href=../../../features/element_access/default_value/ class=md-nav__link> <span class=md-ellipsis> Access with default value: value </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../../features/iterators/ class=md-nav__link> <span class=md-ellipsis> Iterators </span> </a> </li> <li class=md-nav__item> <a href=../../../features/json_pointer/ class=md-nav__link> <span class=md-ellipsis> JSON Pointer </span> </a> </li> <li class=md-nav__item> <a href=../../../features/json_patch/ class=md-nav__link> <span class=md-ellipsis> JSON Patch and Diff </span> </a> </li> <li class=md-nav__item> <a href=../../../features/merge_patch/ class=md-nav__link> <span class=md-ellipsis> JSON Merge Patch </span> </a> </li> <li class=md-nav__item> <a href=../../../features/modules/ class=md-nav__link> <span class=md-ellipsis> Modules </span> </a> </li> <li class=md-nav__item> <a href=../../../features/namespace/ class=md-nav__link> <span class=md-ellipsis> nlohmann Namespace </span> </a> </li> <li class=md-nav__item> <a href=../../../features/object_order/ class=md-nav__link> <span class=md-ellipsis> Object Order </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_14> <div class="md-nav__link md-nav__container"> <a href=../../../features/parsing/ class="md-nav__link "> <span class=md-ellipsis> Parsing </span> </a> <label class="md-nav__link " for=__nav_2_14 id=__nav_2_14_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_14_label aria-expanded=false> <label class=md-nav__title for=__nav_2_14> <span class="md-nav__icon md-icon"></span> Parsing </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/parsing/json_lines/ class=md-nav__link> <span class=md-ellipsis> JSON Lines </span> </a> </li> <li class=md-nav__item> <a href=../../../features/parsing/parse_exceptions/ class=md-nav__link> <span class=md-ellipsis> Parsing and Exceptions </span> </a> </li> <li class=md-nav__item> <a href=../../../features/parsing/parser_callbacks/ class=md-nav__link> <span class=md-ellipsis> Parser Callbacks </span> </a> </li> <li class=md-nav__item> <a href=../../../features/parsing/sax_interface/ class=md-nav__link> <span class=md-ellipsis> SAX Interface </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../../features/assertions/ class=md-nav__link> <span class=md-ellipsis> Runtime Assertions </span> </a> </li> <li class=md-nav__item> <a href=../../../features/enum_conversion/ class=md-nav__link> <span class=md-ellipsis> Specializing enum conversion </span> </a> </li> <li class=md-nav__item> <a href=../../../features/macros/ class=md-nav__link> <span class=md-ellipsis> Supported Macros </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_18> <div class="md-nav__link md-nav__container"> <a href=../../../features/types/ class="md-nav__link "> <span class=md-ellipsis> Types </span> </a> <label class="md-nav__link " for=__nav_2_18 id=__nav_2_18_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_18_label aria-expanded=false> <label class=md-nav__title for=__nav_2_18> <span class="md-nav__icon md-icon"></span> Types </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/types/number_handling/ class=md-nav__link> <span class=md-ellipsis> Number Handling </span> </a> </li> </ul> </nav> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_3> <div class="md-nav__link md-nav__container"> <a href=../../../integration/ class="md-nav__link "> <span class=md-ellipsis> Integration </span> </a> <label class="md-nav__link " for=__nav_3 id=__nav_3_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_3_label aria-expanded=false> <label class=md-nav__title for=__nav_3> <span class="md-nav__icon md-icon"></span> Integration </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../integration/migration_guide/ class=md-nav__link> <span class=md-ellipsis> Migration Guide </span> </a> </li> <li class=md-nav__item> <a href=../../../integration/cmake/ class=md-nav__link> <span class=md-ellipsis> CMake </span> </a> </li> <li class=md-nav__item> <a href=../../../integration/package_managers/ class=md-nav__link> <span class=md-ellipsis> Package Managers </span> </a> </li> <li class=md-nav__item> <a href=../../../integration/pkg-config/ class=md-nav__link> <span class=md-ellipsis> Pkg-config </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--active md-nav__item--section md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4 checked> <label class=md-nav__link for=__nav_4 id=__nav_4_label tabindex> <span class=md-ellipsis> API Documentation </span> <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_4_label aria-expanded=true> <label class=md-nav__title for=__nav_4> <span class="md-nav__icon md-icon"></span> API Documentation </label> <ul class=md-nav__list data-md-scrollfix> <li class="md-nav__item md-nav__item--active md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_1 checked> <div class="md-nav__link md-nav__container"> <a href=../ class="md-nav__link "> <span class=md-ellipsis> basic_json </span> </a> <label class="md-nav__link " for=__nav_4_1 id=__nav_4_1_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_1_label aria-expanded=true> <label class=md-nav__title for=__nav_4_1> <span class="md-nav__icon md-icon"></span> basic_json </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../basic_json/ class=md-nav__link> <span class=md-ellipsis> (Constructor) </span> </a> </li> <li class=md-nav__item> <a href=../~basic_json/ class=md-nav__link> <span class=md-ellipsis> (Destructor) </span> </a> </li> <li class=md-nav__item> <a href=../accept/ class=md-nav__link> <span class=md-ellipsis> accept </span> </a> </li> <li class=md-nav__item> <a href=../array/ class=md-nav__link> <span class=md-ellipsis> array </span> </a> </li> <li class=md-nav__item> <a href=../array_t/ class=md-nav__link> <span class=md-ellipsis> array_t </span> </a> </li> <li class=md-nav__item> <a href=../at/ class=md-nav__link> <span class=md-ellipsis> at </span> </a> </li> <li class=md-nav__item> <a href=../back/ class=md-nav__link> <span class=md-ellipsis> back </span> </a> </li> <li class=md-nav__item> <a href=../begin/ class=md-nav__link> <span class=md-ellipsis> begin </span> </a> </li> <li class=md-nav__item> <a href=../binary/ class=md-nav__link> <span class=md-ellipsis> binary </span> </a> </li> <li class=md-nav__item> <a href=../binary_t/ class=md-nav__link> <span class=md-ellipsis> binary_t </span> </a> </li> <li class=md-nav__item> <a href=../boolean_t/ class=md-nav__link> <span class=md-ellipsis> boolean_t </span> </a> </li> <li class=md-nav__item> <a href=../cbegin/ class=md-nav__link> <span class=md-ellipsis> cbegin </span> </a> </li> <li class=md-nav__item> <a href=../cbor_tag_handler_t/ class=md-nav__link> <span class=md-ellipsis> cbor_tag_handler_t </span> </a> </li> <li class=md-nav__item> <a href=../cend/ class=md-nav__link> <span class=md-ellipsis> cend </span> </a> </li> <li class=md-nav__item> <a href=../clear/ class=md-nav__link> <span class=md-ellipsis> clear </span> </a> </li> <li class="md-nav__item md-nav__item--active"> <input class="md-nav__toggle md-toggle" type=checkbox id=__toc> <label class="md-nav__link md-nav__link--active" for=__toc> <span class=md-ellipsis> contains </span> <span class="md-nav__icon md-icon"></span> </label> <a href=./ class="md-nav__link md-nav__link--active"> <span class=md-ellipsis> contains </span> </a> <nav class="md-nav md-nav--secondary" aria-label="Table of contents"> <label class=md-nav__title for=__toc> <span class="md-nav__icon md-icon"></span> Table of contents </label> <ul class=md-nav__list data-md-component=toc data-md-scrollfix> <li class=md-nav__item> <a href=#template-parameters class=md-nav__link> <span class=md-ellipsis> Template parameters </span> </a> </li> <li class=md-nav__item> <a href=#parameters class=md-nav__link> <span class=md-ellipsis> Parameters </span> </a> </li> <li class=md-nav__item> <a href=#return-value class=md-nav__link> <span class=md-ellipsis> Return value </span> </a> </li> <li class=md-nav__item> <a href=#exception-safety class=md-nav__link> <span class=md-ellipsis> Exception safety </span> </a> </li> <li class=md-nav__item> <a href=#exceptions class=md-nav__link> <span class=md-ellipsis> Exceptions </span> </a> </li> <li class=md-nav__item> <a href=#complexity class=md-nav__link> <span class=md-ellipsis> Complexity </span> </a> </li> <li class=md-nav__item> <a href=#notes class=md-nav__link> <span class=md-ellipsis> Notes </span> </a> </li> <li class=md-nav__item> <a href=#examples class=md-nav__link> <span class=md-ellipsis> Examples </span> </a> </li> <li class=md-nav__item> <a href=#see-also class=md-nav__link> <span class=md-ellipsis> See also </span> </a> </li> <li class=md-nav__item> <a href=#version-history class=md-nav__link> <span class=md-ellipsis> Version history </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../count/ class=md-nav__link> <span class=md-ellipsis> count </span> </a> </li> <li class=md-nav__item> <a href=../crbegin/ class=md-nav__link> <span class=md-ellipsis> crbegin </span> </a> </li> <li class=md-nav__item> <a href=../crend/ class=md-nav__link> <span class=md-ellipsis> crend </span> </a> </li> <li class=md-nav__item> <a href=../default_object_comparator_t/ class=md-nav__link> <span class=md-ellipsis> default_object_comparator_t </span> </a> </li> <li class=md-nav__item> <a href=../diff/ class=md-nav__link> <span class=md-ellipsis> diff </span> </a> </li> <li class=md-nav__item> <a href=../dump/ class=md-nav__link> <span class=md-ellipsis> dump </span> </a> </li> <li class=md-nav__item> <a href=../emplace/ class=md-nav__link> <span class=md-ellipsis> emplace </span> </a> </li> <li class=md-nav__item> <a href=../emplace_back/ class=md-nav__link> <span class=md-ellipsis> emplace_back </span> </a> </li> <li class=md-nav__item> <a href=../empty/ class=md-nav__link> <span class=md-ellipsis> empty </span> </a> </li> <li class=md-nav__item> <a href=../end/ class=md-nav__link> <span class=md-ellipsis> end </span> </a> </li> <li class=md-nav__item> <a href=../end_pos/ class=md-nav__link> <span class=md-ellipsis> end_pos </span> </a> </li> <li class=md-nav__item> <a href=../erase/ class=md-nav__link> <span class=md-ellipsis> erase </span> </a> </li> <li class=md-nav__item> <a href=../error_handler_t/ class=md-nav__link> <span class=md-ellipsis> error_handler_t </span> </a> </li> <li class=md-nav__item> <a href=../exception/ class=md-nav__link> <span class=md-ellipsis> exception </span> </a> </li> <li class=md-nav__item> <a href=../find/ class=md-nav__link> <span class=md-ellipsis> find </span> </a> </li> <li class=md-nav__item> <a href=../flatten/ class=md-nav__link> <span class=md-ellipsis> flatten </span> </a> </li> <li class=md-nav__item> <a href=../from_bjdata/ class=md-nav__link> <span class=md-ellipsis> from_bjdata </span> </a> </li> <li class=md-nav__item> <a href=../from_bson/ class=md-nav__link> <span class=md-ellipsis> from_bson </span> </a> </li> <li class=md-nav__item> <a href=../from_cbor/ class=md-nav__link> <span class=md-ellipsis> from_cbor </span> </a> </li> <li class=md-nav__item> <a href=../from_msgpack/ class=md-nav__link> <span class=md-ellipsis> from_msgpack </span> </a> </li> <li class=md-nav__item> <a href=../from_ubjson/ class=md-nav__link> <span class=md-ellipsis> from_ubjson </span> </a> </li> <li class=md-nav__item> <a href=../front/ class=md-nav__link> <span class=md-ellipsis> front </span> </a> </li> <li class=md-nav__item> <a href=../get/ class=md-nav__link> <span class=md-ellipsis> get </span> </a> </li> <li class=md-nav__item> <a href=../get_allocator/ class=md-nav__link> <span class=md-ellipsis> get_allocator </span> </a> </li> <li class=md-nav__item> <a href=../get_binary/ class=md-nav__link> <span class=md-ellipsis> get_binary </span> </a> </li> <li class=md-nav__item> <a href=../get_ptr/ class=md-nav__link> <span class=md-ellipsis> get_ptr </span> </a> </li> <li class=md-nav__item> <a href=../get_ref/ class=md-nav__link> <span class=md-ellipsis> get_ref </span> </a> </li> <li class=md-nav__item> <a href=../get_to/ class=md-nav__link> <span class=md-ellipsis> get_to </span> </a> </li> <li class=md-nav__item> <a href=../std_hash/ class=md-nav__link> <span class=md-ellipsis> std::hash&lt;basic_json&gt; </span> </a> </li> <li class=md-nav__item> <a href=../input_format_t/ class=md-nav__link> <span class=md-ellipsis> input_format_t </span> </a> </li> <li class=md-nav__item> <a href=../insert/ class=md-nav__link> <span class=md-ellipsis> insert </span> </a> </li> <li class=md-nav__item> <a href=../invalid_iterator/ class=md-nav__link> <span class=md-ellipsis> invalid_iterator </span> </a> </li> <li class=md-nav__item> <a href=../is_array/ class=md-nav__link> <span class=md-ellipsis> is_array </span> </a> </li> <li class=md-nav__item> <a href=../is_binary/ class=md-nav__link> <span class=md-ellipsis> is_binary </span> </a> </li> <li class=md-nav__item> <a href=../is_boolean/ class=md-nav__link> <span class=md-ellipsis> is_boolean </span> </a> </li> <li class=md-nav__item> <a href=../is_discarded/ class=md-nav__link> <span class=md-ellipsis> is_discarded </span> </a> </li> <li class=md-nav__item> <a href=../is_null/ class=md-nav__link> <span class=md-ellipsis> is_null </span> </a> </li> <li class=md-nav__item> <a href=../is_number/ class=md-nav__link> <span class=md-ellipsis> is_number </span> </a> </li> <li class=md-nav__item> <a href=../is_number_float/ class=md-nav__link> <span class=md-ellipsis> is_number_float </span> </a> </li> <li class=md-nav__item> <a href=../is_number_integer/ class=md-nav__link> <span class=md-ellipsis> is_number_integer </span> </a> </li> <li class=md-nav__item> <a href=../is_number_unsigned/ class=md-nav__link> <span class=md-ellipsis> is_number_unsigned </span> </a> </li> <li class=md-nav__item> <a href=../is_object/ class=md-nav__link> <span class=md-ellipsis> is_object </span> </a> </li> <li class=md-nav__item> <a href=../is_primitive/ class=md-nav__link> <span class=md-ellipsis> is_primitive </span> </a> </li> <li class=md-nav__item> <a href=../is_string/ class=md-nav__link> <span class=md-ellipsis> is_string </span> </a> </li> <li class=md-nav__item> <a href=../is_structured/ class=md-nav__link> <span class=md-ellipsis> is_structured </span> </a> </li> <li class=md-nav__item> <a href=../items/ class=md-nav__link> <span class=md-ellipsis> items </span> </a> </li> <li class=md-nav__item> <a href=../json_base_class_t/ class=md-nav__link> <span class=md-ellipsis> json_base_class_t </span> </a> </li> <li class=md-nav__item> <a href=../json_serializer/ class=md-nav__link> <span class=md-ellipsis> json_serializer </span> </a> </li> <li class=md-nav__item> <a href=../max_size/ class=md-nav__link> <span class=md-ellipsis> max_size </span> </a> </li> <li class=md-nav__item> <a href=../meta/ class=md-nav__link> <span class=md-ellipsis> meta </span> </a> </li> <li class=md-nav__item> <a href=../merge_patch/ class=md-nav__link> <span class=md-ellipsis> merge_patch </span> </a> </li> <li class=md-nav__item> <a href=../number_float_t/ class=md-nav__link> <span class=md-ellipsis> number_float_t </span> </a> </li> <li class=md-nav__item> <a href=../number_integer_t/ class=md-nav__link> <span class=md-ellipsis> number_integer_t </span> </a> </li> <li class=md-nav__item> <a href=../number_unsigned_t/ class=md-nav__link> <span class=md-ellipsis> number_unsigned_t </span> </a> </li> <li class=md-nav__item> <a href=../object/ class=md-nav__link> <span class=md-ellipsis> object </span> </a> </li> <li class=md-nav__item> <a href=../object_comparator_t/ class=md-nav__link> <span class=md-ellipsis> object_comparator_t </span> </a> </li> <li class=md-nav__item> <a href=../object_t/ class=md-nav__link> <span class=md-ellipsis> object_t </span> </a> </li> <li class=md-nav__item> <a href=../operator_ValueType/ class=md-nav__link> <span class=md-ellipsis> operator ValueType </span> </a> </li> <li class=md-nav__item> <a href=../operator_value_t/ class=md-nav__link> <span class=md-ellipsis> operator value_t </span> </a> </li> <li class=md-nav__item> <a href=../operator%5B%5D/ class=md-nav__link> <span class=md-ellipsis> operator[] </span> </a> </li> <li class=md-nav__item> <a href=../operator%3D/ class=md-nav__link> <span class=md-ellipsis> operator= </span> </a> </li> <li class=md-nav__item> <a href=../operator%2B%3D/ class=md-nav__link> <span class=md-ellipsis> operator+= </span> </a> </li> <li class=md-nav__item> <a href=../operator_eq/ class=md-nav__link> <span class=md-ellipsis> operator== </span> </a> </li> <li class=md-nav__item> <a href=../operator_ne/ class=md-nav__link> <span class=md-ellipsis> operator!= </span> </a> </li> <li class=md-nav__item> <a href=../operator_lt/ class=md-nav__link> <span class=md-ellipsis> operator< </span> </a> </li> <li class=md-nav__item> <a href=../operator_gt/ class=md-nav__link> <span class=md-ellipsis> operator> </span> </a> </li> <li class=md-nav__item> <a href=../operator_le/ class=md-nav__link> <span class=md-ellipsis> operator<= </span> </a> </li> <li class=md-nav__item> <a href=../operator_ge/ class=md-nav__link> <span class=md-ellipsis> operator>= </span> </a> </li> <li class=md-nav__item> <a href=../operator_spaceship/ class=md-nav__link> <span class=md-ellipsis> operator<=> </span> </a> </li> <li class=md-nav__item> <a href=../out_of_range/ class=md-nav__link> <span class=md-ellipsis> out_of_range </span> </a> </li> <li class=md-nav__item> <a href=../other_error/ class=md-nav__link> <span class=md-ellipsis> other_error </span> </a> </li> <li class=md-nav__item> <a href=../parse/ class=md-nav__link> <span class=md-ellipsis> parse </span> </a> </li> <li class=md-nav__item> <a href=../parse_error/ class=md-nav__link> <span class=md-ellipsis> parse_error </span> </a> </li> <li class=md-nav__item> <a href=../parse_event_t/ class=md-nav__link> <span class=md-ellipsis> parse_event_t </span> </a> </li> <li class=md-nav__item> <a href=../parser_callback_t/ class=md-nav__link> <span class=md-ellipsis> parser_callback_t </span> </a> </li> <li class=md-nav__item> <a href=../patch/ class=md-nav__link> <span class=md-ellipsis> patch </span> </a> </li> <li class=md-nav__item> <a href=../patch_inplace/ class=md-nav__link> <span class=md-ellipsis> patch_inplace </span> </a> </li> <li class=md-nav__item> <a href=../push_back/ class=md-nav__link> <span class=md-ellipsis> push_back </span> </a> </li> <li class=md-nav__item> <a href=../rbegin/ class=md-nav__link> <span class=md-ellipsis> rbegin </span> </a> </li> <li class=md-nav__item> <a href=../rend/ class=md-nav__link> <span class=md-ellipsis> rend </span> </a> </li> <li class=md-nav__item> <a href=../sax_parse/ class=md-nav__link> <span class=md-ellipsis> sax_parse </span> </a> </li> <li class=md-nav__item> <a href=../size/ class=md-nav__link> <span class=md-ellipsis> size </span> </a> </li> <li class=md-nav__item> <a href=../start_pos/ class=md-nav__link> <span class=md-ellipsis> start_pos </span> </a> </li> <li class=md-nav__item> <a href=../string_t/ class=md-nav__link> <span class=md-ellipsis> string_t </span> </a> </li> <li class=md-nav__item> <a href=../swap/ class=md-nav__link> <span class=md-ellipsis> swap </span> </a> </li> <li class=md-nav__item> <a href=../std_swap/ class=md-nav__link> <span class=md-ellipsis> std::swap&lt;basic_json&gt; </span> </a> </li> <li class=md-nav__item> <a href=../to_bjdata/ class=md-nav__link> <span class=md-ellipsis> to_bjdata </span> </a> </li> <li class=md-nav__item> <a href=../to_bson/ class=md-nav__link> <span class=md-ellipsis> to_bson </span> </a> </li> <li class=md-nav__item> <a href=../to_cbor/ class=md-nav__link> <span class=md-ellipsis> to_cbor </span> </a> </li> <li class=md-nav__item> <a href=../to_msgpack/ class=md-nav__link> <span class=md-ellipsis> to_msgpack </span> </a> </li> <li class=md-nav__item> <a href=../to_string/ class=md-nav__link> <span class=md-ellipsis> to_string </span> </a> </li> <li class=md-nav__item> <a href=../to_ubjson/ class=md-nav__link> <span class=md-ellipsis> to_ubjson </span> </a> </li> <li class=md-nav__item> <a href=../type/ class=md-nav__link> <span class=md-ellipsis> type </span> </a> </li> <li class=md-nav__item> <a href=../type_error/ class=md-nav__link> <span class=md-ellipsis> type_error </span> </a> </li> <li class=md-nav__item> <a href=../type_name/ class=md-nav__link> <span class=md-ellipsis> type_name </span> </a> </li> <li class=md-nav__item> <a href=../unflatten/ class=md-nav__link> <span class=md-ellipsis> unflatten </span> </a> </li> <li class=md-nav__item> <a href=../update/ class=md-nav__link> <span class=md-ellipsis> update </span> </a> </li> <li class=md-nav__item> <a href=../value/ class=md-nav__link> <span class=md-ellipsis> value </span> </a> </li> <li class=md-nav__item> <a href=../value_t/ class=md-nav__link> <span class=md-ellipsis> value_t </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_2> <div class="md-nav__link md-nav__container"> <a href=../../byte_container_with_subtype/ class="md-nav__link "> <span class=md-ellipsis> byte_container_with_subtype </span> </a> <label class="md-nav__link " for=__nav_4_2 id=__nav_4_2_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_2_label aria-expanded=false> <label class=md-nav__title for=__nav_4_2> <span class="md-nav__icon md-icon"></span> byte_container_with_subtype </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../byte_container_with_subtype/byte_container_with_subtype/ class=md-nav__link> <span class=md-ellipsis> (constructor) </span> </a> </li> <li class=md-nav__item> <a href=../../byte_container_with_subtype/clear_subtype/ class=md-nav__link> <span class=md-ellipsis> clear_subtype </span> </a> </li> <li class=md-nav__item> <a href=../../byte_container_with_subtype/has_subtype/ class=md-nav__link> <span class=md-ellipsis> has_subtype </span> </a> </li> <li class=md-nav__item> <a href=../../byte_container_with_subtype/set_subtype/ class=md-nav__link> <span class=md-ellipsis> set_subtype </span> </a> </li> <li class=md-nav__item> <a href=../../byte_container_with_subtype/subtype/ class=md-nav__link> <span class=md-ellipsis> subtype </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_3> <div class="md-nav__link md-nav__container"> <a href=../../adl_serializer/ class="md-nav__link "> <span class=md-ellipsis> adl_serializer </span> </a> <label class="md-nav__link " for=__nav_4_3 id=__nav_4_3_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_3_label aria-expanded=false> <label class=md-nav__title for=__nav_4_3> <span class="md-nav__icon md-icon"></span> adl_serializer </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../adl_serializer/from_json/ class=md-nav__link> <span class=md-ellipsis> from_json </span> </a> </li> <li class=md-nav__item> <a href=../../adl_serializer/to_json/ class=md-nav__link> <span class=md-ellipsis> to_json </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../json/ class=md-nav__link> <span class=md-ellipsis> json </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_5> <div class="md-nav__link md-nav__container"> <a href=../../json_pointer/ class="md-nav__link "> <span class=md-ellipsis> json_pointer </span> </a> <label class="md-nav__link " for=__nav_4_5 id=__nav_4_5_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_5_label aria-expanded=false> <label class=md-nav__title for=__nav_4_5> <span class="md-nav__icon md-icon"></span> json_pointer </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../json_pointer/json_pointer/ class=md-nav__link> <span class=md-ellipsis> (Constructor) </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/back/ class=md-nav__link> <span class=md-ellipsis> back </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/empty/ class=md-nav__link> <span class=md-ellipsis> empty </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/front/ class=md-nav__link> <span class=md-ellipsis> front </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_string_t/ class=md-nav__link> <span class=md-ellipsis> operator string_t </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_eq/ class=md-nav__link> <span class=md-ellipsis> operator== </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_ne/ class=md-nav__link> <span class=md-ellipsis> operator!= </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_slash/ class=md-nav__link> <span class=md-ellipsis> operator/ </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_slasheq/ class=md-nav__link> <span class=md-ellipsis> operator/= </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/parent_pointer/ class=md-nav__link> <span class=md-ellipsis> parent_pointer </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/pop_back/ class=md-nav__link> <span class=md-ellipsis> pop_back </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/pop_front/ class=md-nav__link> <span class=md-ellipsis> pop_front </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/push_back/ class=md-nav__link> <span class=md-ellipsis> push_back </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/push_front/ class=md-nav__link> <span class=md-ellipsis> push_front </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/string_t/ class=md-nav__link> <span class=md-ellipsis> string_t </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/to_string/ class=md-nav__link> <span class=md-ellipsis> to_string </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_6> <div class="md-nav__link md-nav__container"> <a href=../../json_sax/ class="md-nav__link "> <span class=md-ellipsis> json_sax </span> </a> <label class="md-nav__link " for=__nav_4_6 id=__nav_4_6_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_6_label aria-expanded=false> <label class=md-nav__title for=__nav_4_6> <span class="md-nav__icon md-icon"></span> json_sax </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../json_sax/binary/ class=md-nav__link> <span class=md-ellipsis> binary </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/boolean/ class=md-nav__link> <span class=md-ellipsis> boolean </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/end_array/ class=md-nav__link> <span class=md-ellipsis> end_array </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/end_object/ class=md-nav__link> <span class=md-ellipsis> end_object </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/key/ class=md-nav__link> <span class=md-ellipsis> key </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/null/ class=md-nav__link> <span class=md-ellipsis> null </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/number_float/ class=md-nav__link> <span class=md-ellipsis> number_float </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/number_integer/ class=md-nav__link> <span class=md-ellipsis> number_integer </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/number_unsigned/ class=md-nav__link> <span class=md-ellipsis> number_unsigned </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/parse_error/ class=md-nav__link> <span class=md-ellipsis> parse_error </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/start_array/ class=md-nav__link> <span class=md-ellipsis> start_array </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/start_object/ class=md-nav__link> <span class=md-ellipsis> start_object </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/string/ class=md-nav__link> <span class=md-ellipsis> string </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../operator_ltlt/ class=md-nav__link> <span class=md-ellipsis> operator<<(basic_json), operator<<(json_pointer) </span> </a> </li> <li class=md-nav__item> <a href=../../operator_gtgt/ class=md-nav__link> <span class=md-ellipsis> operator>>(basic_json) </span> </a> </li> <li class=md-nav__item> <a href=../../operator_literal_json/ class=md-nav__link> <span class=md-ellipsis> operator""_json </span> </a> </li> <li class=md-nav__item> <a href=../../operator_literal_json_pointer/ class=md-nav__link> <span class=md-ellipsis> operator""_json_pointer </span> </a> </li> <li class=md-nav__item> <a href=../../ordered_json/ class=md-nav__link> <span class=md-ellipsis> ordered_json </span> </a> </li> <li class=md-nav__item> <a href=../../ordered_map/ class=md-nav__link> <span class=md-ellipsis> ordered_map </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_13> <div class="md-nav__link md-nav__container"> <a href=../../macros/ class="md-nav__link "> <span class=md-ellipsis> macros </span> </a> <label class="md-nav__link " for=__nav_4_13 id=__nav_4_13_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_13_label aria-expanded=false> <label class=md-nav__title for=__nav_4_13> <span class="md-nav__icon md-icon"></span> macros </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../macros/json_assert/ class=md-nav__link> <span class=md-ellipsis> JSON_ASSERT </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_brace_init_copy_semantics/ class=md-nav__link> <span class=md-ellipsis> JSON_BRACE_INIT_COPY_SEMANTICS </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_throw_user/ class=md-nav__link> <span class=md-ellipsis> JSON_CATCH_USER, JSON_THROW_USER, JSON_TRY_USER </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_diagnostics/ class=md-nav__link> <span class=md-ellipsis> JSON_DIAGNOSTICS </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_diagnostic_positions/ class=md-nav__link> <span class=md-ellipsis> JSON_DIAGNOSTIC_POSITIONS </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_disable_enum_serialization/ class=md-nav__link> <span class=md-ellipsis> JSON_DISABLE_ENUM_SERIALIZATION </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_has_cpp_11/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_CPP_11, JSON_HAS_CPP_14, JSON_HAS_CPP_17, JSON_HAS_CPP_20 </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_has_filesystem/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_EXPERIMENTAL_FILESYSTEM, JSON_HAS_FILESYSTEM </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_has_ranges/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_RANGES </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_has_static_rtti/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_STATIC_RTTI </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_has_three_way_comparison/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_THREE_WAY_COMPARISON </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_noexception/ class=md-nav__link> <span class=md-ellipsis> JSON_NOEXCEPTION </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_no_io/ class=md-nav__link> <span class=md-ellipsis> JSON_NO_IO </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_skip_library_version_check/ class=md-nav__link> <span class=md-ellipsis> JSON_SKIP_LIBRARY_VERSION_CHECK </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_skip_unsupported_compiler_check/ class=md-nav__link> <span class=md-ellipsis> JSON_SKIP_UNSUPPORTED_COMPILER_CHECK </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_use_global_udls/ class=md-nav__link> <span class=md-ellipsis> JSON_USE_GLOBAL_UDLS </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_use_implicit_conversions/ class=md-nav__link> <span class=md-ellipsis> JSON_USE_IMPLICIT_CONVERSIONS </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_use_legacy_discarded_value_comparison/ class=md-nav__link> <span class=md-ellipsis> JSON_USE_LEGACY_DISCARDED_VALUE_COMPARISON </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_define_derived_type/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_ONLY_SERIALIZE, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_define_type_intrusive/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_TYPE_INTRUSIVE, NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_TYPE_INTRUSIVE_ONLY_SERIALIZE </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_define_type_non_intrusive/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_define_type_with_names/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_TYPE_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_namespace/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_NAMESPACE </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_namespace_begin/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_NAMESPACE_BEGIN, NLOHMANN_JSON_NAMESPACE_END </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_namespace_no_version/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_NAMESPACE_NO_VERSION </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_serialize_enum/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_SERIALIZE_ENUM </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_serialize_enum_strict/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_SERIALIZE_ENUM_STRICT </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_version_major/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_VERSION_MAJOR, NLOHMANN_JSON_VERSION_MINOR, NLOHMANN_JSON_VERSION_PATCH </span> </a> </li> </ul> </nav> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_5> <div class="md-nav__link md-nav__container"> <a href=../../../community/ class="md-nav__link "> <span class=md-ellipsis> Community </span> </a> <label class="md-nav__link " for=__nav_5 id=__nav_5_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_5_label aria-expanded=false> <label class=md-nav__title for=__nav_5> <span class="md-nav__icon md-icon"></span> Community </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../community/code_of_conduct/ class=md-nav__link> <span class=md-ellipsis> Code of Conduct </span> </a> </li> <li class=md-nav__item> <a href=../../../community/contribution_guidelines/ class=md-nav__link> <span class=md-ellipsis> Contribution Guidelines </span> </a> </li> <li class=md-nav__item> <a href=../../../community/quality_assurance/ class=md-nav__link> <span class=md-ellipsis> Quality assurance </span> </a> </li> <li class=md-nav__item> <a href=../../../community/governance/ class=md-nav__link> <span class=md-ellipsis> Governance </span> </a> </li> <li class=md-nav__item> <a href=../../../community/security_policy/ class=md-nav__link> <span class=md-ellipsis> Security Policy </span> </a> </li> </ul> </nav> </li> </ul> </nav> </div> </div> </div> <div class="md-sidebar md-sidebar--secondary" data-md-component=sidebar data-md-type=toc> <div class=md-sidebar__scrollwrap> <div class=md-sidebar__inner> <nav class="md-nav md-nav--secondary" aria-label="Table of contents"> <label class=md-nav__title for=__toc> <span class="md-nav__icon md-icon"></span> Table of contents </label> <ul class=md-nav__list data-md-component=toc data-md-scrollfix> <li class=md-nav__item> <a href=#template-parameters class=md-nav__link> <span class=md-ellipsis> Template parameters </span> </a> </li> <li class=md-nav__item> <a href=#parameters class=md-nav__link> <span class=md-ellipsis> Parameters </span> </a> </li> <li class=md-nav__item> <a href=#return-value class=md-nav__link> <span class=md-ellipsis> Return value </span> </a> </li> <li class=md-nav__item> <a href=#exception-safety class=md-nav__link> <span class=md-ellipsis> Exception safety </span> </a> </li> <li class=md-nav__item> <a href=#exceptions class=md-nav__link> <span class=md-ellipsis> Exceptions </span> </a> </li> <li class=md-nav__item> <a href=#complexity class=md-nav__link> <span class=md-ellipsis> Complexity </span> </a> </li> <li class=md-nav__item> <a href=#notes class=md-nav__link> <span class=md-ellipsis> Notes </span> </a> </li> <li class=md-nav__item> <a href=#examples class=md-nav__link> <span class=md-ellipsis> Examples </span> </a> </li> <li class=md-nav__item> <a href=#see-also class=md-nav__link> <span class=md-ellipsis> See also </span> </a> </li> <li class=md-nav__item> <a href=#version-history class=md-nav__link> <span class=md-ellipsis> Version history </span> </a> </li> </ul> </nav> </div> </div> </div> <div class=md-content data-md-component=content> <article class="md-content__inner md-typeset"> <a href="https://github.com/nlohmann/json/edit/develop/docs/mkdocs/docs/api/basic_json/contains.md" title="Edit this page" class="md-content__button md-icon" rel="edit"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M10 20H6V4h7v5h5v3.1l2-2V8l-6-6H6c-1.1 0-2 .9-2 2v16c0 1.1.9 2 2 2h4zm10.2-7c.1 0 .3.1.4.2l1.3 1.3c.2.2.2.6 0 .8l-1 1-2.1-2.1 1-1c.1-.1.2-.2.4-.2m0 3.9L14.1 23H12v-2.1l6.1-6.1z"/></svg> </a> <a href="https://github.com/nlohmann/json/raw/develop/docs/mkdocs/docs/api/basic_json/contains.md" title="View source of this page" class="md-content__button md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M17 18c.56 0 1 .44 1 1s-.44 1-1 1-1-.44-1-1 .44-1 1-1m0-3c-2.73 0-5.06 1.66-6 4 .94 2.34 3.27 4 6 4s5.06-1.66 6-4c-.94-2.34-3.27-4-6-4m0 6.5a2.5 2.5 0 0 1-2.5-2.5 2.5 2.5 0 0 1 2.5-2.5 2.5 2.5 0 0 1 2.5 2.5 2.5 2.5 0 0 1-2.5 2.5M9.27 20H6V4h7v5h5v4.07c.7.08 1.36.25 2 .49V8l-6-6H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h4.5a8.2 8.2 0 0 1-1.23-2"/></svg> </a> <h1 id=nlohmannbasic_jsoncontains><small>nlohmann::basic_json::</small>contains<a class=headerlink href=#nlohmannbasic_jsoncontains title="Permanent link">&para;</a></h1> <div class=highlight><pre><span></span><code><span class=c1>// (1)</span>
 <span class=kt>bool</span><span class=w> </span><span class=nf>contains</span><span class=p>(</span><span class=k>const</span><span class=w> </span><span class=k>typename</span><span class=w> </span><span class=nc>object_t</span><span class=o>::</span><span class=n>key_type</span><span class=o>&amp;</span><span class=w> </span><span class=n>key</span><span class=p>)</span><span class=w> </span><span class=k>const</span><span class=p>;</span>
 
 <span class=c1>// (2)</span>
@@ -7,7 +7,7 @@
 
 <span class=c1>// (3)</span>
 <span class=kt>bool</span><span class=w> </span><span class=nf>contains</span><span class=p>(</span><span class=k>const</span><span class=w> </span><span class=n>json_pointer</span><span class=o>&amp;</span><span class=w> </span><span class=n>ptr</span><span class=p>)</span><span class=w> </span><span class=k>const</span><span class=p>;</span>
-</code></pre></div> <ol> <li>Check whether an element exists in a <abbr title="JavaScript Object Notation">JSON</abbr> object with a key equivalent to <code>key</code>. If the element is not found or the <abbr title="JavaScript Object Notation">JSON</abbr> value is not an object, <code class=highlight><span class=nb>false</span></code> is returned.</li> <li>See 1. This overload is only available if <code>KeyType</code> is comparable with <code class=highlight><span class=k>typename</span><span class=w> </span><span class=nc>object_t</span><span class=o>::</span><span class=n>key_type</span></code> and <code class=highlight><span class=k>typename</span><span class=w> </span><span class=nc>object_comparator_t</span><span class=o>::</span><span class=n>is_transparent</span></code> denotes a type.</li> <li>Check whether the given <abbr title="JavaScript Object Notation">JSON</abbr> pointer <code>ptr</code> can be resolved in the current <abbr title="JavaScript Object Notation">JSON</abbr> value.</li> </ol> <h2 id=template-parameters>Template parameters<a class=headerlink href=#template-parameters title="Permanent link">&para;</a></h2> <dl> <dt><code>KeyType</code></dt> <dd>A type for an object key other than <a href=../../json_pointer/ ><code>json_pointer</code></a> that is comparable with <a href=../string_t/ ><code>string_t</code></a> using <a href=../object_comparator_t/ ><code>object_comparator_t</code></a>. This can also be a string view (C++17).</dd> </dl> <h2 id=parameters>Parameters<a class=headerlink href=#parameters title="Permanent link">&para;</a></h2> <dl> <dt><code>key</code> (in)</dt> <dd>key value to check its existence.</dd> <dt><code>ptr</code> (in)</dt> <dd><abbr title="JavaScript Object Notation">JSON</abbr> pointer to check its existence.</dd> </dl> <h2 id=return-value>Return value<a class=headerlink href=#return-value title="Permanent link">&para;</a></h2> <ol> <li><code class=highlight><span class=nb>true</span></code> if an element with specified <code>key</code> exists. If no such element with such a key is found or the <abbr title="JavaScript Object Notation">JSON</abbr> value is not an object, <code class=highlight><span class=nb>false</span></code> is returned.</li> <li>See 1.</li> <li><code class=highlight><span class=nb>true</span></code> if the <abbr title="JavaScript Object Notation">JSON</abbr> pointer can be resolved to a stored value, <code class=highlight><span class=nb>false</span></code> otherwise.</li> </ol> <h2 id=exception-safety>Exception safety<a class=headerlink href=#exception-safety title="Permanent link">&para;</a></h2> <p>Strong exception safety: if an exception occurs, the original value stays intact.</p> <h2 id=exceptions>Exceptions<a class=headerlink href=#exceptions title="Permanent link">&para;</a></h2> <ol> <li>The function does not throw exceptions.</li> <li>The function does not throw exceptions.</li> <li>The function can throw the following exceptions:<ul> <li>Throws <a href=../../../home/exceptions/#jsonexceptionparse_error106><code>parse_error.106</code></a> if an array index begins with <code>0</code>.</li> <li>Throws <a href=../../../home/exceptions/#jsonexceptionparse_error109><code>parse_error.109</code></a> if an array index was not a number.</li> </ul> </li> </ol> <h2 id=complexity>Complexity<a class=headerlink href=#complexity title="Permanent link">&para;</a></h2> <p>Logarithmic in the size of the <abbr title="JavaScript Object Notation">JSON</abbr> object.</p> <h2 id=notes>Notes<a class=headerlink href=#notes title="Permanent link">&para;</a></h2> <ul> <li>This method always returns <code class=highlight><span class=nb>false</span></code> when executed on a <abbr title="JavaScript Object Notation">JSON</abbr> type that is not an object.</li> <li>This method can be executed on any <abbr title="JavaScript Object Notation">JSON</abbr> value type.</li> </ul> <div class="admonition info"> <p class=admonition-title>Postconditions</p> <p>If <code class=highlight><span class=n>j</span><span class=p>.</span><span class=n>contains</span><span class=p>(</span><span class=n>x</span><span class=p>)</span></code> returns <code class=highlight><span class=nb>true</span></code> for a key or <abbr title="JavaScript Object Notation">JSON</abbr> pointer <code>x</code>, then it is safe to call <code>j[x]</code>.</p> </div> <h2 id=examples>Examples<a class=headerlink href=#examples title="Permanent link">&para;</a></h2> <details class=example> <summary>Example: (1) check with key</summary> <p>The example shows how <code>contains()</code> is used.</p> <div class=highlight><pre><span></span><code><span class=cp>#include</span><span class=w> </span><span class=cpf>&lt;iostream&gt;</span>
+</code></pre></div> <ol> <li>Check whether an element exists in a <abbr title="JavaScript Object Notation">JSON</abbr> object with a key equivalent to <code>key</code>. If the element is not found or the <abbr title="JavaScript Object Notation">JSON</abbr> value is not an object, <code class=highlight><span class=nb>false</span></code> is returned.</li> <li>See 1. This overload is only available if <code>KeyType</code> is comparable with <code class=highlight><span class=k>typename</span><span class=w> </span><span class=nc>object_t</span><span class=o>::</span><span class=n>key_type</span></code> and <code class=highlight><span class=k>typename</span><span class=w> </span><span class=nc>object_comparator_t</span><span class=o>::</span><span class=n>is_transparent</span></code> denotes a type.</li> <li>Check whether the given <abbr title="JavaScript Object Notation">JSON</abbr> pointer <code>ptr</code> can be resolved in the current <abbr title="JavaScript Object Notation">JSON</abbr> value.</li> </ol> <h2 id=template-parameters>Template parameters<a class=headerlink href=#template-parameters title="Permanent link">&para;</a></h2> <dl> <dt><code>KeyType</code></dt> <dd>A type for an object key other than <a href=../../json_pointer/ ><code>json_pointer</code></a> that is comparable with <a href=../string_t/ ><code>string_t</code></a> using <a href=../object_comparator_t/ ><code>object_comparator_t</code></a>. This can also be a string view (C++17).</dd> </dl> <h2 id=parameters>Parameters<a class=headerlink href=#parameters title="Permanent link">&para;</a></h2> <dl> <dt><code>key</code> (in)</dt> <dd>key value to check its existence.</dd> <dt><code>ptr</code> (in)</dt> <dd><abbr title="JavaScript Object Notation">JSON</abbr> pointer to check its existence.</dd> </dl> <h2 id=return-value>Return value<a class=headerlink href=#return-value title="Permanent link">&para;</a></h2> <ol> <li><code class=highlight><span class=nb>true</span></code> if an element with specified <code>key</code> exists. If no such element with such a key is found or the <abbr title="JavaScript Object Notation">JSON</abbr> value is not an object, <code class=highlight><span class=nb>false</span></code> is returned.</li> <li>See 1.</li> <li><code class=highlight><span class=nb>true</span></code> if the <abbr title="JavaScript Object Notation">JSON</abbr> pointer can be resolved to a stored value, <code class=highlight><span class=nb>false</span></code> otherwise.</li> </ol> <h2 id=exception-safety>Exception safety<a class=headerlink href=#exception-safety title="Permanent link">&para;</a></h2> <p>Strong exception safety: if an exception occurs, the original value stays intact.</p> <h2 id=exceptions>Exceptions<a class=headerlink href=#exceptions title="Permanent link">&para;</a></h2> <ol> <li>The function does not throw exceptions.</li> <li>The function does not throw exceptions.</li> <li>The function does not throw exceptions.</li> </ol> <h2 id=complexity>Complexity<a class=headerlink href=#complexity title="Permanent link">&para;</a></h2> <p>Logarithmic in the size of the <abbr title="JavaScript Object Notation">JSON</abbr> object.</p> <h2 id=notes>Notes<a class=headerlink href=#notes title="Permanent link">&para;</a></h2> <ul> <li>This method always returns <code class=highlight><span class=nb>false</span></code> when executed on a <abbr title="JavaScript Object Notation">JSON</abbr> type that is not an object.</li> <li>This method can be executed on any <abbr title="JavaScript Object Notation">JSON</abbr> value type.</li> </ul> <div class="admonition info"> <p class=admonition-title>Postconditions</p> <p>If <code class=highlight><span class=n>j</span><span class=p>.</span><span class=n>contains</span><span class=p>(</span><span class=n>x</span><span class=p>)</span></code> returns <code class=highlight><span class=nb>true</span></code> for a key or <abbr title="JavaScript Object Notation">JSON</abbr> pointer <code>x</code>, then it is safe to call <code>j[x]</code>.</p> </div> <h2 id=examples>Examples<a class=headerlink href=#examples title="Permanent link">&para;</a></h2> <details class=example> <summary>Example: (1) check with key</summary> <p>The example shows how <code>contains()</code> is used.</p> <div class=highlight><pre><span></span><code><span class=cp>#include</span><span class=w> </span><span class=cpf>&lt;iostream&gt;</span>
 <span class=cp>#include</span><span class=w> </span><span class=cpf>&lt;nlohmann/json.hpp&gt;</span>
 
 <span class=k>using</span><span class=w> </span><span class=n>json</span><span class=w> </span><span class=o>=</span><span class=w> </span><span class=n>nlohmann</span><span class=o>::</span><span class=n>json</span><span class=p>;</span>
@@ -101,4 +101,4 @@
 <span class=kc>false</span>
 <span class=kc>false</span>
 <span class=kc>false</span>
-</code></pre></div> </details> <h2 id=version-history>Version history<a class=headerlink href=#version-history title="Permanent link">&para;</a></h2> <ol> <li>Added in version 3.11.0.</li> <li>Added in version 3.6.0. Extended template <code>KeyType</code> to support comparable types in version 3.11.0.</li> <li>Added in version 3.7.0.</li> </ol> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 23, 2026 11:16:18 UTC">June 23, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
+</code></pre></div> </details> <h2 id=see-also>See also<a class=headerlink href=#see-also title="Permanent link">&para;</a></h2> <ul> <li><a href=../find/ >find</a> find a value in an object</li> <li><a href=../count/ >count</a> returns the number of occurrences of a key</li> </ul> <h2 id=version-history>Version history<a class=headerlink href=#version-history title="Permanent link">&para;</a></h2> <ol> <li>Added in version 3.11.0.</li> <li>Added in version 3.6.0. Extended template <code>KeyType</code> to support comparable types in version 3.11.0.</li> <li>Added in version 3.7.0.</li> </ol> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 29, 2026 20:15:18 UTC">June 29, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
diff --git a/api/basic_json/count/index.html b/api/basic_json/count/index.html
index 0b563ae..0cb19ce 100644
--- a/api/basic_json/count/index.html
+++ b/api/basic_json/count/index.html
@@ -1,4 +1,4 @@
-<!doctype html><html lang=en class=no-js> <head><meta charset=utf-8><meta name=viewport content="width=device-width,initial-scale=1"><meta name=author content="Niels Lohmann"><link href="https://json.nlohmann.me/api/basic_json/count/" rel="canonical"><link href=../contains/ rel=prev><link href=../crbegin/ rel=next><link rel=icon href=../../../assets/images/favicon.png><meta name=generator content="mkdocs-1.6.1, mkdocs-material-9.7.6"><title>count - JSON for Modern C++</title><link rel=stylesheet href=../../../assets/stylesheets/main.484c7ddc.min.css><link rel=stylesheet href=../../../assets/stylesheets/palette.ab4e12ef.min.css><link rel="stylesheet" href="../../../assets/external/fonts.googleapis.com/css.61a430c9.css"><style>:root{--md-text-font:"Roboto";--md-code-font:"JetBrains Mono"}</style><link rel=stylesheet href=../../../css/custom.css><script>__md_scope=new URL("../../..",location),__md_hash=e=>[...e].reduce(((e,_)=>(e<<5)-e+_.charCodeAt(0)),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script></head> <body dir=ltr data-md-color-scheme=default data-md-color-primary=indigo data-md-color-accent=indigo> <input class=md-toggle data-md-toggle=drawer type=checkbox id=__drawer autocomplete=off> <input class=md-toggle data-md-toggle=search type=checkbox id=__search autocomplete=off> <label class=md-overlay for=__drawer></label> <div data-md-component=skip> <a href=#nlohmannbasic_jsoncount class=md-skip> Skip to content </a> </div> <div data-md-component=announce> </div> <header class=md-header data-md-component=header> <nav class="md-header__inner md-grid" aria-label=Header> <a href=../../.. title="JSON for Modern C++" class="md-header__button md-logo" aria-label="JSON for Modern C++" data-md-component=logo> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54"/></svg> </a> <label class="md-header__button md-icon" for=__drawer> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M3 6h18v2H3zm0 5h18v2H3zm0 5h18v2H3z"/></svg> </label> <div class=md-header__title data-md-component=header-title> <div class=md-header__ellipsis> <div class=md-header__topic> <span class=md-ellipsis> JSON for Modern C++ </span> </div> <div class=md-header__topic data-md-component=header-topic> <span class=md-ellipsis> count </span> </div> </div> </div> <form class=md-header__option data-md-component=palette> <input class=md-option data-md-color-media="(prefers-color-scheme: light)" data-md-color-scheme=default data-md-color-primary=indigo data-md-color-accent=indigo aria-label="Switch to dark mode" type=radio name=__palette id=__palette_0> <label class="md-header__button md-icon" title="Switch to dark mode" for=__palette_1 hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a4 4 0 0 0-4 4 4 4 0 0 0 4 4 4 4 0 0 0 4-4 4 4 0 0 0-4-4m0 10a6 6 0 0 1-6-6 6 6 0 0 1 6-6 6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12z"/></svg> </label> <input class=md-option data-md-color-media="(prefers-color-scheme: dark)" data-md-color-scheme=slate data-md-color-primary=indigo data-md-color-accent=indigo aria-label="Switch to light mode" type=radio name=__palette id=__palette_1> <label class="md-header__button md-icon" title="Switch to light mode" for=__palette_0 hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 18c-.89 0-1.74-.2-2.5-.55C11.56 16.5 13 14.42 13 12s-1.44-4.5-3.5-5.45C10.26 6.2 11.11 6 12 6a6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12z"/></svg> </label> </form> <script>var palette=__md_get("__palette");if(palette&&palette.color){if("(prefers-color-scheme)"===palette.color.media){var media=matchMedia("(prefers-color-scheme: light)"),input=document.querySelector(media.matches?"[data-md-color-media='(prefers-color-scheme: light)']":"[data-md-color-media='(prefers-color-scheme: dark)']");palette.color.media=input.getAttribute("data-md-color-media"),palette.color.scheme=input.getAttribute("data-md-color-scheme"),palette.color.primary=input.getAttribute("data-md-color-primary"),palette.color.accent=input.getAttribute("data-md-color-accent")}for(var[key,value]of Object.entries(palette.color))document.body.setAttribute("data-md-color-"+key,value)}</script> <label class="md-header__button md-icon" for=__search> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg> </label> <div class=md-search data-md-component=search role=dialog> <label class=md-search__overlay for=__search></label> <div class=md-search__inner role=search> <form class=md-search__form name=search> <input type=text class=md-search__input name=query aria-label=Search placeholder=Search autocapitalize=off autocorrect=off autocomplete=off spellcheck=false data-md-component=search-query required> <label class="md-search__icon md-icon" for=__search> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11z"/></svg> </label> <nav class=md-search__options aria-label=Search> <button type=reset class="md-search__icon md-icon" title=Clear aria-label=Clear tabindex=-1> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z"/></svg> </button> </nav> </form> <div class=md-search__output> <div class=md-search__scrollwrap tabindex=0 data-md-scrollfix> <div class=md-search-result data-md-component=search-result> <div class=md-search-result__meta> Initializing search </div> <ol class=md-search-result__list role=presentation></ol> </div> </div> </div> </div> </div> <div class=md-header__source> <a href="https://github.com/nlohmann/json" title="Go to repository" class="md-source" data-md-component="source"> <div class="md-source__icon md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </div> <div class=md-source__repository> nlohmann/json </div> </a> </div> </nav> </header> <div class=md-container data-md-component=container> <nav class=md-tabs aria-label=Tabs data-md-component=tabs> <div class=md-grid> <ul class=md-tabs__list> <li class=md-tabs__item> <a href=../../.. class=md-tabs__link> Home </a> </li> <li class=md-tabs__item> <a href=../../../features/arbitrary_types/ class=md-tabs__link> Features </a> </li> <li class=md-tabs__item> <a href=../../../integration/ class=md-tabs__link> Integration </a> </li> <li class="md-tabs__item md-tabs__item--active"> <a href=../ class=md-tabs__link> API Documentation </a> </li> <li class=md-tabs__item> <a href=../../../community/ class=md-tabs__link> Community </a> </li> </ul> </div> </nav> <main class=md-main data-md-component=main> <div class="md-main__inner md-grid"> <div class="md-sidebar md-sidebar--primary" data-md-component=sidebar data-md-type=navigation> <div class=md-sidebar__scrollwrap> <div class=md-sidebar__inner> <nav class="md-nav md-nav--primary md-nav--lifted" aria-label=Navigation data-md-level=0> <label class=md-nav__title for=__drawer> <a href=../../.. title="JSON for Modern C++" class="md-nav__button md-logo" aria-label="JSON for Modern C++" data-md-component=logo> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54"/></svg> </a> JSON for Modern C++ </label> <div class=md-nav__source> <a href="https://github.com/nlohmann/json" title="Go to repository" class="md-source" data-md-component="source"> <div class="md-source__icon md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </div> <div class=md-source__repository> nlohmann/json </div> </a> </div> <ul class=md-nav__list data-md-scrollfix> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_1> <div class="md-nav__link md-nav__container"> <a href=../../.. class="md-nav__link "> <span class=md-ellipsis> Home </span> </a> <label class="md-nav__link " for=__nav_1 id=__nav_1_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_1_label aria-expanded=false> <label class=md-nav__title for=__nav_1> <span class="md-nav__icon md-icon"></span> Home </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../home/license/ class=md-nav__link> <span class=md-ellipsis> License </span> </a> </li> <li class=md-nav__item> <a href=../../../home/faq/ class=md-nav__link> <span class=md-ellipsis> FAQ </span> </a> </li> <li class=md-nav__item> <a href=../../../home/exceptions/ class=md-nav__link> <span class=md-ellipsis> Exceptions </span> </a> </li> <li class=md-nav__item> <a href=../../../home/releases/ class=md-nav__link> <span class=md-ellipsis> Releases </span> </a> </li> <li class=md-nav__item> <a href=../../../home/design_goals/ class=md-nav__link> <span class=md-ellipsis> Design goals </span> </a> </li> <li class=md-nav__item> <a href=../../../home/architecture/ class=md-nav__link> <span class=md-ellipsis> Architecture </span> </a> </li> <li class=md-nav__item> <a href=../../../home/customers/ class=md-nav__link> <span class=md-ellipsis> Customers </span> </a> </li> <li class=md-nav__item> <a href=../../../home/sponsors/ class=md-nav__link> <span class=md-ellipsis> Sponsors </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2> <label class=md-nav__link for=__nav_2 id=__nav_2_label tabindex=0> <span class=md-ellipsis> Features </span> <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_2_label aria-expanded=false> <label class=md-nav__title for=__nav_2> <span class="md-nav__icon md-icon"></span> Features </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/arbitrary_types/ class=md-nav__link> <span class=md-ellipsis> Arbitrary Type Conversions </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_2> <div class="md-nav__link md-nav__container"> <a href=../../../features/binary_formats/ class="md-nav__link "> <span class=md-ellipsis> Binary Formats </span> </a> <label class="md-nav__link " for=__nav_2_2 id=__nav_2_2_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_2_label aria-expanded=false> <label class=md-nav__title for=__nav_2_2> <span class="md-nav__icon md-icon"></span> Binary Formats </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/binary_formats/bjdata/ class=md-nav__link> <span class=md-ellipsis> BJData </span> </a> </li> <li class=md-nav__item> <a href=../../../features/binary_formats/bson/ class=md-nav__link> <span class=md-ellipsis> BSON </span> </a> </li> <li class=md-nav__item> <a href=../../../features/binary_formats/cbor/ class=md-nav__link> <span class=md-ellipsis> CBOR </span> </a> </li> <li class=md-nav__item> <a href=../../../features/binary_formats/messagepack/ class=md-nav__link> <span class=md-ellipsis> MessagePack </span> </a> </li> <li class=md-nav__item> <a href=../../../features/binary_formats/ubjson/ class=md-nav__link> <span class=md-ellipsis> UBJSON </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../../features/binary_values/ class=md-nav__link> <span class=md-ellipsis> Binary Values </span> </a> </li> <li class=md-nav__item> <a href=../../../features/comments/ class=md-nav__link> <span class=md-ellipsis> Comments </span> </a> </li> <li class=md-nav__item> <a href=../../../features/trailing_commas/ class=md-nav__link> <span class=md-ellipsis> Trailing Commas </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_6> <div class="md-nav__link md-nav__container"> <a href=../../../features/element_access/ class="md-nav__link "> <span class=md-ellipsis> Element Access </span> </a> <label class="md-nav__link " for=__nav_2_6 id=__nav_2_6_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_6_label aria-expanded=false> <label class=md-nav__title for=__nav_2_6> <span class="md-nav__icon md-icon"></span> Element Access </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/element_access/unchecked_access/ class=md-nav__link> <span class=md-ellipsis> Unchecked access: operator[] </span> </a> </li> <li class=md-nav__item> <a href=../../../features/element_access/checked_access/ class=md-nav__link> <span class=md-ellipsis> Checked access: at </span> </a> </li> <li class=md-nav__item> <a href=../../../features/element_access/default_value/ class=md-nav__link> <span class=md-ellipsis> Access with default value: value </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../../features/iterators/ class=md-nav__link> <span class=md-ellipsis> Iterators </span> </a> </li> <li class=md-nav__item> <a href=../../../features/json_pointer/ class=md-nav__link> <span class=md-ellipsis> JSON Pointer </span> </a> </li> <li class=md-nav__item> <a href=../../../features/json_patch/ class=md-nav__link> <span class=md-ellipsis> JSON Patch and Diff </span> </a> </li> <li class=md-nav__item> <a href=../../../features/merge_patch/ class=md-nav__link> <span class=md-ellipsis> JSON Merge Patch </span> </a> </li> <li class=md-nav__item> <a href=../../../features/modules/ class=md-nav__link> <span class=md-ellipsis> Modules </span> </a> </li> <li class=md-nav__item> <a href=../../../features/namespace/ class=md-nav__link> <span class=md-ellipsis> nlohmann Namespace </span> </a> </li> <li class=md-nav__item> <a href=../../../features/object_order/ class=md-nav__link> <span class=md-ellipsis> Object Order </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_14> <div class="md-nav__link md-nav__container"> <a href=../../../features/parsing/ class="md-nav__link "> <span class=md-ellipsis> Parsing </span> </a> <label class="md-nav__link " for=__nav_2_14 id=__nav_2_14_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_14_label aria-expanded=false> <label class=md-nav__title for=__nav_2_14> <span class="md-nav__icon md-icon"></span> Parsing </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/parsing/json_lines/ class=md-nav__link> <span class=md-ellipsis> JSON Lines </span> </a> </li> <li class=md-nav__item> <a href=../../../features/parsing/parse_exceptions/ class=md-nav__link> <span class=md-ellipsis> Parsing and Exceptions </span> </a> </li> <li class=md-nav__item> <a href=../../../features/parsing/parser_callbacks/ class=md-nav__link> <span class=md-ellipsis> Parser Callbacks </span> </a> </li> <li class=md-nav__item> <a href=../../../features/parsing/sax_interface/ class=md-nav__link> <span class=md-ellipsis> SAX Interface </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../../features/assertions/ class=md-nav__link> <span class=md-ellipsis> Runtime Assertions </span> </a> </li> <li class=md-nav__item> <a href=../../../features/enum_conversion/ class=md-nav__link> <span class=md-ellipsis> Specializing enum conversion </span> </a> </li> <li class=md-nav__item> <a href=../../../features/macros/ class=md-nav__link> <span class=md-ellipsis> Supported Macros </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_18> <div class="md-nav__link md-nav__container"> <a href=../../../features/types/ class="md-nav__link "> <span class=md-ellipsis> Types </span> </a> <label class="md-nav__link " for=__nav_2_18 id=__nav_2_18_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_18_label aria-expanded=false> <label class=md-nav__title for=__nav_2_18> <span class="md-nav__icon md-icon"></span> Types </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/types/number_handling/ class=md-nav__link> <span class=md-ellipsis> Number Handling </span> </a> </li> </ul> </nav> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_3> <div class="md-nav__link md-nav__container"> <a href=../../../integration/ class="md-nav__link "> <span class=md-ellipsis> Integration </span> </a> <label class="md-nav__link " for=__nav_3 id=__nav_3_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_3_label aria-expanded=false> <label class=md-nav__title for=__nav_3> <span class="md-nav__icon md-icon"></span> Integration </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../integration/migration_guide/ class=md-nav__link> <span class=md-ellipsis> Migration Guide </span> </a> </li> <li class=md-nav__item> <a href=../../../integration/cmake/ class=md-nav__link> <span class=md-ellipsis> CMake </span> </a> </li> <li class=md-nav__item> <a href=../../../integration/package_managers/ class=md-nav__link> <span class=md-ellipsis> Package Managers </span> </a> </li> <li class=md-nav__item> <a href=../../../integration/pkg-config/ class=md-nav__link> <span class=md-ellipsis> Pkg-config </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--active md-nav__item--section md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4 checked> <label class=md-nav__link for=__nav_4 id=__nav_4_label tabindex> <span class=md-ellipsis> API Documentation </span> <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_4_label aria-expanded=true> <label class=md-nav__title for=__nav_4> <span class="md-nav__icon md-icon"></span> API Documentation </label> <ul class=md-nav__list data-md-scrollfix> <li class="md-nav__item md-nav__item--active md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_1 checked> <div class="md-nav__link md-nav__container"> <a href=../ class="md-nav__link "> <span class=md-ellipsis> basic_json </span> </a> <label class="md-nav__link " for=__nav_4_1 id=__nav_4_1_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_1_label aria-expanded=true> <label class=md-nav__title for=__nav_4_1> <span class="md-nav__icon md-icon"></span> basic_json </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../basic_json/ class=md-nav__link> <span class=md-ellipsis> (Constructor) </span> </a> </li> <li class=md-nav__item> <a href=../~basic_json/ class=md-nav__link> <span class=md-ellipsis> (Destructor) </span> </a> </li> <li class=md-nav__item> <a href=../accept/ class=md-nav__link> <span class=md-ellipsis> accept </span> </a> </li> <li class=md-nav__item> <a href=../array/ class=md-nav__link> <span class=md-ellipsis> array </span> </a> </li> <li class=md-nav__item> <a href=../array_t/ class=md-nav__link> <span class=md-ellipsis> array_t </span> </a> </li> <li class=md-nav__item> <a href=../at/ class=md-nav__link> <span class=md-ellipsis> at </span> </a> </li> <li class=md-nav__item> <a href=../back/ class=md-nav__link> <span class=md-ellipsis> back </span> </a> </li> <li class=md-nav__item> <a href=../begin/ class=md-nav__link> <span class=md-ellipsis> begin </span> </a> </li> <li class=md-nav__item> <a href=../binary/ class=md-nav__link> <span class=md-ellipsis> binary </span> </a> </li> <li class=md-nav__item> <a href=../binary_t/ class=md-nav__link> <span class=md-ellipsis> binary_t </span> </a> </li> <li class=md-nav__item> <a href=../boolean_t/ class=md-nav__link> <span class=md-ellipsis> boolean_t </span> </a> </li> <li class=md-nav__item> <a href=../cbegin/ class=md-nav__link> <span class=md-ellipsis> cbegin </span> </a> </li> <li class=md-nav__item> <a href=../cbor_tag_handler_t/ class=md-nav__link> <span class=md-ellipsis> cbor_tag_handler_t </span> </a> </li> <li class=md-nav__item> <a href=../cend/ class=md-nav__link> <span class=md-ellipsis> cend </span> </a> </li> <li class=md-nav__item> <a href=../clear/ class=md-nav__link> <span class=md-ellipsis> clear </span> </a> </li> <li class=md-nav__item> <a href=../contains/ class=md-nav__link> <span class=md-ellipsis> contains </span> </a> </li> <li class="md-nav__item md-nav__item--active"> <input class="md-nav__toggle md-toggle" type=checkbox id=__toc> <label class="md-nav__link md-nav__link--active" for=__toc> <span class=md-ellipsis> count </span> <span class="md-nav__icon md-icon"></span> </label> <a href=./ class="md-nav__link md-nav__link--active"> <span class=md-ellipsis> count </span> </a> <nav class="md-nav md-nav--secondary" aria-label="Table of contents"> <label class=md-nav__title for=__toc> <span class="md-nav__icon md-icon"></span> Table of contents </label> <ul class=md-nav__list data-md-component=toc data-md-scrollfix> <li class=md-nav__item> <a href=#template-parameters class=md-nav__link> <span class=md-ellipsis> Template parameters </span> </a> </li> <li class=md-nav__item> <a href=#parameters class=md-nav__link> <span class=md-ellipsis> Parameters </span> </a> </li> <li class=md-nav__item> <a href=#return-value class=md-nav__link> <span class=md-ellipsis> Return value </span> </a> </li> <li class=md-nav__item> <a href=#exception-safety class=md-nav__link> <span class=md-ellipsis> Exception safety </span> </a> </li> <li class=md-nav__item> <a href=#complexity class=md-nav__link> <span class=md-ellipsis> Complexity </span> </a> </li> <li class=md-nav__item> <a href=#notes class=md-nav__link> <span class=md-ellipsis> Notes </span> </a> </li> <li class=md-nav__item> <a href=#examples class=md-nav__link> <span class=md-ellipsis> Examples </span> </a> </li> <li class=md-nav__item> <a href=#version-history class=md-nav__link> <span class=md-ellipsis> Version history </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../crbegin/ class=md-nav__link> <span class=md-ellipsis> crbegin </span> </a> </li> <li class=md-nav__item> <a href=../crend/ class=md-nav__link> <span class=md-ellipsis> crend </span> </a> </li> <li class=md-nav__item> <a href=../default_object_comparator_t/ class=md-nav__link> <span class=md-ellipsis> default_object_comparator_t </span> </a> </li> <li class=md-nav__item> <a href=../diff/ class=md-nav__link> <span class=md-ellipsis> diff </span> </a> </li> <li class=md-nav__item> <a href=../dump/ class=md-nav__link> <span class=md-ellipsis> dump </span> </a> </li> <li class=md-nav__item> <a href=../emplace/ class=md-nav__link> <span class=md-ellipsis> emplace </span> </a> </li> <li class=md-nav__item> <a href=../emplace_back/ class=md-nav__link> <span class=md-ellipsis> emplace_back </span> </a> </li> <li class=md-nav__item> <a href=../empty/ class=md-nav__link> <span class=md-ellipsis> empty </span> </a> </li> <li class=md-nav__item> <a href=../end/ class=md-nav__link> <span class=md-ellipsis> end </span> </a> </li> <li class=md-nav__item> <a href=../end_pos/ class=md-nav__link> <span class=md-ellipsis> end_pos </span> </a> </li> <li class=md-nav__item> <a href=../erase/ class=md-nav__link> <span class=md-ellipsis> erase </span> </a> </li> <li class=md-nav__item> <a href=../error_handler_t/ class=md-nav__link> <span class=md-ellipsis> error_handler_t </span> </a> </li> <li class=md-nav__item> <a href=../exception/ class=md-nav__link> <span class=md-ellipsis> exception </span> </a> </li> <li class=md-nav__item> <a href=../find/ class=md-nav__link> <span class=md-ellipsis> find </span> </a> </li> <li class=md-nav__item> <a href=../flatten/ class=md-nav__link> <span class=md-ellipsis> flatten </span> </a> </li> <li class=md-nav__item> <a href=../from_bjdata/ class=md-nav__link> <span class=md-ellipsis> from_bjdata </span> </a> </li> <li class=md-nav__item> <a href=../from_bson/ class=md-nav__link> <span class=md-ellipsis> from_bson </span> </a> </li> <li class=md-nav__item> <a href=../from_cbor/ class=md-nav__link> <span class=md-ellipsis> from_cbor </span> </a> </li> <li class=md-nav__item> <a href=../from_msgpack/ class=md-nav__link> <span class=md-ellipsis> from_msgpack </span> </a> </li> <li class=md-nav__item> <a href=../from_ubjson/ class=md-nav__link> <span class=md-ellipsis> from_ubjson </span> </a> </li> <li class=md-nav__item> <a href=../front/ class=md-nav__link> <span class=md-ellipsis> front </span> </a> </li> <li class=md-nav__item> <a href=../get/ class=md-nav__link> <span class=md-ellipsis> get </span> </a> </li> <li class=md-nav__item> <a href=../get_allocator/ class=md-nav__link> <span class=md-ellipsis> get_allocator </span> </a> </li> <li class=md-nav__item> <a href=../get_binary/ class=md-nav__link> <span class=md-ellipsis> get_binary </span> </a> </li> <li class=md-nav__item> <a href=../get_ptr/ class=md-nav__link> <span class=md-ellipsis> get_ptr </span> </a> </li> <li class=md-nav__item> <a href=../get_ref/ class=md-nav__link> <span class=md-ellipsis> get_ref </span> </a> </li> <li class=md-nav__item> <a href=../get_to/ class=md-nav__link> <span class=md-ellipsis> get_to </span> </a> </li> <li class=md-nav__item> <a href=../std_hash/ class=md-nav__link> <span class=md-ellipsis> std::hash&lt;basic_json&gt; </span> </a> </li> <li class=md-nav__item> <a href=../input_format_t/ class=md-nav__link> <span class=md-ellipsis> input_format_t </span> </a> </li> <li class=md-nav__item> <a href=../insert/ class=md-nav__link> <span class=md-ellipsis> insert </span> </a> </li> <li class=md-nav__item> <a href=../invalid_iterator/ class=md-nav__link> <span class=md-ellipsis> invalid_iterator </span> </a> </li> <li class=md-nav__item> <a href=../is_array/ class=md-nav__link> <span class=md-ellipsis> is_array </span> </a> </li> <li class=md-nav__item> <a href=../is_binary/ class=md-nav__link> <span class=md-ellipsis> is_binary </span> </a> </li> <li class=md-nav__item> <a href=../is_boolean/ class=md-nav__link> <span class=md-ellipsis> is_boolean </span> </a> </li> <li class=md-nav__item> <a href=../is_discarded/ class=md-nav__link> <span class=md-ellipsis> is_discarded </span> </a> </li> <li class=md-nav__item> <a href=../is_null/ class=md-nav__link> <span class=md-ellipsis> is_null </span> </a> </li> <li class=md-nav__item> <a href=../is_number/ class=md-nav__link> <span class=md-ellipsis> is_number </span> </a> </li> <li class=md-nav__item> <a href=../is_number_float/ class=md-nav__link> <span class=md-ellipsis> is_number_float </span> </a> </li> <li class=md-nav__item> <a href=../is_number_integer/ class=md-nav__link> <span class=md-ellipsis> is_number_integer </span> </a> </li> <li class=md-nav__item> <a href=../is_number_unsigned/ class=md-nav__link> <span class=md-ellipsis> is_number_unsigned </span> </a> </li> <li class=md-nav__item> <a href=../is_object/ class=md-nav__link> <span class=md-ellipsis> is_object </span> </a> </li> <li class=md-nav__item> <a href=../is_primitive/ class=md-nav__link> <span class=md-ellipsis> is_primitive </span> </a> </li> <li class=md-nav__item> <a href=../is_string/ class=md-nav__link> <span class=md-ellipsis> is_string </span> </a> </li> <li class=md-nav__item> <a href=../is_structured/ class=md-nav__link> <span class=md-ellipsis> is_structured </span> </a> </li> <li class=md-nav__item> <a href=../items/ class=md-nav__link> <span class=md-ellipsis> items </span> </a> </li> <li class=md-nav__item> <a href=../json_base_class_t/ class=md-nav__link> <span class=md-ellipsis> json_base_class_t </span> </a> </li> <li class=md-nav__item> <a href=../json_serializer/ class=md-nav__link> <span class=md-ellipsis> json_serializer </span> </a> </li> <li class=md-nav__item> <a href=../max_size/ class=md-nav__link> <span class=md-ellipsis> max_size </span> </a> </li> <li class=md-nav__item> <a href=../meta/ class=md-nav__link> <span class=md-ellipsis> meta </span> </a> </li> <li class=md-nav__item> <a href=../merge_patch/ class=md-nav__link> <span class=md-ellipsis> merge_patch </span> </a> </li> <li class=md-nav__item> <a href=../number_float_t/ class=md-nav__link> <span class=md-ellipsis> number_float_t </span> </a> </li> <li class=md-nav__item> <a href=../number_integer_t/ class=md-nav__link> <span class=md-ellipsis> number_integer_t </span> </a> </li> <li class=md-nav__item> <a href=../number_unsigned_t/ class=md-nav__link> <span class=md-ellipsis> number_unsigned_t </span> </a> </li> <li class=md-nav__item> <a href=../object/ class=md-nav__link> <span class=md-ellipsis> object </span> </a> </li> <li class=md-nav__item> <a href=../object_comparator_t/ class=md-nav__link> <span class=md-ellipsis> object_comparator_t </span> </a> </li> <li class=md-nav__item> <a href=../object_t/ class=md-nav__link> <span class=md-ellipsis> object_t </span> </a> </li> <li class=md-nav__item> <a href=../operator_ValueType/ class=md-nav__link> <span class=md-ellipsis> operator ValueType </span> </a> </li> <li class=md-nav__item> <a href=../operator_value_t/ class=md-nav__link> <span class=md-ellipsis> operator value_t </span> </a> </li> <li class=md-nav__item> <a href=../operator%5B%5D/ class=md-nav__link> <span class=md-ellipsis> operator[] </span> </a> </li> <li class=md-nav__item> <a href=../operator%3D/ class=md-nav__link> <span class=md-ellipsis> operator= </span> </a> </li> <li class=md-nav__item> <a href=../operator%2B%3D/ class=md-nav__link> <span class=md-ellipsis> operator+= </span> </a> </li> <li class=md-nav__item> <a href=../operator_eq/ class=md-nav__link> <span class=md-ellipsis> operator== </span> </a> </li> <li class=md-nav__item> <a href=../operator_ne/ class=md-nav__link> <span class=md-ellipsis> operator!= </span> </a> </li> <li class=md-nav__item> <a href=../operator_lt/ class=md-nav__link> <span class=md-ellipsis> operator< </span> </a> </li> <li class=md-nav__item> <a href=../operator_gt/ class=md-nav__link> <span class=md-ellipsis> operator> </span> </a> </li> <li class=md-nav__item> <a href=../operator_le/ class=md-nav__link> <span class=md-ellipsis> operator<= </span> </a> </li> <li class=md-nav__item> <a href=../operator_ge/ class=md-nav__link> <span class=md-ellipsis> operator>= </span> </a> </li> <li class=md-nav__item> <a href=../operator_spaceship/ class=md-nav__link> <span class=md-ellipsis> operator<=> </span> </a> </li> <li class=md-nav__item> <a href=../out_of_range/ class=md-nav__link> <span class=md-ellipsis> out_of_range </span> </a> </li> <li class=md-nav__item> <a href=../other_error/ class=md-nav__link> <span class=md-ellipsis> other_error </span> </a> </li> <li class=md-nav__item> <a href=../parse/ class=md-nav__link> <span class=md-ellipsis> parse </span> </a> </li> <li class=md-nav__item> <a href=../parse_error/ class=md-nav__link> <span class=md-ellipsis> parse_error </span> </a> </li> <li class=md-nav__item> <a href=../parse_event_t/ class=md-nav__link> <span class=md-ellipsis> parse_event_t </span> </a> </li> <li class=md-nav__item> <a href=../parser_callback_t/ class=md-nav__link> <span class=md-ellipsis> parser_callback_t </span> </a> </li> <li class=md-nav__item> <a href=../patch/ class=md-nav__link> <span class=md-ellipsis> patch </span> </a> </li> <li class=md-nav__item> <a href=../patch_inplace/ class=md-nav__link> <span class=md-ellipsis> patch_inplace </span> </a> </li> <li class=md-nav__item> <a href=../push_back/ class=md-nav__link> <span class=md-ellipsis> push_back </span> </a> </li> <li class=md-nav__item> <a href=../rbegin/ class=md-nav__link> <span class=md-ellipsis> rbegin </span> </a> </li> <li class=md-nav__item> <a href=../rend/ class=md-nav__link> <span class=md-ellipsis> rend </span> </a> </li> <li class=md-nav__item> <a href=../sax_parse/ class=md-nav__link> <span class=md-ellipsis> sax_parse </span> </a> </li> <li class=md-nav__item> <a href=../size/ class=md-nav__link> <span class=md-ellipsis> size </span> </a> </li> <li class=md-nav__item> <a href=../start_pos/ class=md-nav__link> <span class=md-ellipsis> start_pos </span> </a> </li> <li class=md-nav__item> <a href=../string_t/ class=md-nav__link> <span class=md-ellipsis> string_t </span> </a> </li> <li class=md-nav__item> <a href=../swap/ class=md-nav__link> <span class=md-ellipsis> swap </span> </a> </li> <li class=md-nav__item> <a href=../std_swap/ class=md-nav__link> <span class=md-ellipsis> std::swap&lt;basic_json&gt; </span> </a> </li> <li class=md-nav__item> <a href=../to_bjdata/ class=md-nav__link> <span class=md-ellipsis> to_bjdata </span> </a> </li> <li class=md-nav__item> <a href=../to_bson/ class=md-nav__link> <span class=md-ellipsis> to_bson </span> </a> </li> <li class=md-nav__item> <a href=../to_cbor/ class=md-nav__link> <span class=md-ellipsis> to_cbor </span> </a> </li> <li class=md-nav__item> <a href=../to_msgpack/ class=md-nav__link> <span class=md-ellipsis> to_msgpack </span> </a> </li> <li class=md-nav__item> <a href=../to_string/ class=md-nav__link> <span class=md-ellipsis> to_string </span> </a> </li> <li class=md-nav__item> <a href=../to_ubjson/ class=md-nav__link> <span class=md-ellipsis> to_ubjson </span> </a> </li> <li class=md-nav__item> <a href=../type/ class=md-nav__link> <span class=md-ellipsis> type </span> </a> </li> <li class=md-nav__item> <a href=../type_error/ class=md-nav__link> <span class=md-ellipsis> type_error </span> </a> </li> <li class=md-nav__item> <a href=../type_name/ class=md-nav__link> <span class=md-ellipsis> type_name </span> </a> </li> <li class=md-nav__item> <a href=../unflatten/ class=md-nav__link> <span class=md-ellipsis> unflatten </span> </a> </li> <li class=md-nav__item> <a href=../update/ class=md-nav__link> <span class=md-ellipsis> update </span> </a> </li> <li class=md-nav__item> <a href=../value/ class=md-nav__link> <span class=md-ellipsis> value </span> </a> </li> <li class=md-nav__item> <a href=../value_t/ class=md-nav__link> <span class=md-ellipsis> value_t </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_2> <div class="md-nav__link md-nav__container"> <a href=../../byte_container_with_subtype/ class="md-nav__link "> <span class=md-ellipsis> byte_container_with_subtype </span> </a> <label class="md-nav__link " for=__nav_4_2 id=__nav_4_2_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_2_label aria-expanded=false> <label class=md-nav__title for=__nav_4_2> <span class="md-nav__icon md-icon"></span> byte_container_with_subtype </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../byte_container_with_subtype/byte_container_with_subtype/ class=md-nav__link> <span class=md-ellipsis> (constructor) </span> </a> </li> <li class=md-nav__item> <a href=../../byte_container_with_subtype/clear_subtype/ class=md-nav__link> <span class=md-ellipsis> clear_subtype </span> </a> </li> <li class=md-nav__item> <a href=../../byte_container_with_subtype/has_subtype/ class=md-nav__link> <span class=md-ellipsis> has_subtype </span> </a> </li> <li class=md-nav__item> <a href=../../byte_container_with_subtype/set_subtype/ class=md-nav__link> <span class=md-ellipsis> set_subtype </span> </a> </li> <li class=md-nav__item> <a href=../../byte_container_with_subtype/subtype/ class=md-nav__link> <span class=md-ellipsis> subtype </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_3> <div class="md-nav__link md-nav__container"> <a href=../../adl_serializer/ class="md-nav__link "> <span class=md-ellipsis> adl_serializer </span> </a> <label class="md-nav__link " for=__nav_4_3 id=__nav_4_3_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_3_label aria-expanded=false> <label class=md-nav__title for=__nav_4_3> <span class="md-nav__icon md-icon"></span> adl_serializer </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../adl_serializer/from_json/ class=md-nav__link> <span class=md-ellipsis> from_json </span> </a> </li> <li class=md-nav__item> <a href=../../adl_serializer/to_json/ class=md-nav__link> <span class=md-ellipsis> to_json </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../json/ class=md-nav__link> <span class=md-ellipsis> json </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_5> <div class="md-nav__link md-nav__container"> <a href=../../json_pointer/ class="md-nav__link "> <span class=md-ellipsis> json_pointer </span> </a> <label class="md-nav__link " for=__nav_4_5 id=__nav_4_5_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_5_label aria-expanded=false> <label class=md-nav__title for=__nav_4_5> <span class="md-nav__icon md-icon"></span> json_pointer </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../json_pointer/json_pointer/ class=md-nav__link> <span class=md-ellipsis> (Constructor) </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/back/ class=md-nav__link> <span class=md-ellipsis> back </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/empty/ class=md-nav__link> <span class=md-ellipsis> empty </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/front/ class=md-nav__link> <span class=md-ellipsis> front </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_string_t/ class=md-nav__link> <span class=md-ellipsis> operator string_t </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_eq/ class=md-nav__link> <span class=md-ellipsis> operator== </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_ne/ class=md-nav__link> <span class=md-ellipsis> operator!= </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_slash/ class=md-nav__link> <span class=md-ellipsis> operator/ </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_slasheq/ class=md-nav__link> <span class=md-ellipsis> operator/= </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/parent_pointer/ class=md-nav__link> <span class=md-ellipsis> parent_pointer </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/pop_back/ class=md-nav__link> <span class=md-ellipsis> pop_back </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/pop_front/ class=md-nav__link> <span class=md-ellipsis> pop_front </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/push_back/ class=md-nav__link> <span class=md-ellipsis> push_back </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/push_front/ class=md-nav__link> <span class=md-ellipsis> push_front </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/string_t/ class=md-nav__link> <span class=md-ellipsis> string_t </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/to_string/ class=md-nav__link> <span class=md-ellipsis> to_string </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_6> <div class="md-nav__link md-nav__container"> <a href=../../json_sax/ class="md-nav__link "> <span class=md-ellipsis> json_sax </span> </a> <label class="md-nav__link " for=__nav_4_6 id=__nav_4_6_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_6_label aria-expanded=false> <label class=md-nav__title for=__nav_4_6> <span class="md-nav__icon md-icon"></span> json_sax </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../json_sax/binary/ class=md-nav__link> <span class=md-ellipsis> binary </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/boolean/ class=md-nav__link> <span class=md-ellipsis> boolean </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/end_array/ class=md-nav__link> <span class=md-ellipsis> end_array </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/end_object/ class=md-nav__link> <span class=md-ellipsis> end_object </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/key/ class=md-nav__link> <span class=md-ellipsis> key </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/null/ class=md-nav__link> <span class=md-ellipsis> null </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/number_float/ class=md-nav__link> <span class=md-ellipsis> number_float </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/number_integer/ class=md-nav__link> <span class=md-ellipsis> number_integer </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/number_unsigned/ class=md-nav__link> <span class=md-ellipsis> number_unsigned </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/parse_error/ class=md-nav__link> <span class=md-ellipsis> parse_error </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/start_array/ class=md-nav__link> <span class=md-ellipsis> start_array </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/start_object/ class=md-nav__link> <span class=md-ellipsis> start_object </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/string/ class=md-nav__link> <span class=md-ellipsis> string </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../operator_ltlt/ class=md-nav__link> <span class=md-ellipsis> operator<<(basic_json), operator<<(json_pointer) </span> </a> </li> <li class=md-nav__item> <a href=../../operator_gtgt/ class=md-nav__link> <span class=md-ellipsis> operator>>(basic_json) </span> </a> </li> <li class=md-nav__item> <a href=../../operator_literal_json/ class=md-nav__link> <span class=md-ellipsis> operator""_json </span> </a> </li> <li class=md-nav__item> <a href=../../operator_literal_json_pointer/ class=md-nav__link> <span class=md-ellipsis> operator""_json_pointer </span> </a> </li> <li class=md-nav__item> <a href=../../ordered_json/ class=md-nav__link> <span class=md-ellipsis> ordered_json </span> </a> </li> <li class=md-nav__item> <a href=../../ordered_map/ class=md-nav__link> <span class=md-ellipsis> ordered_map </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_13> <div class="md-nav__link md-nav__container"> <a href=../../macros/ class="md-nav__link "> <span class=md-ellipsis> macros </span> </a> <label class="md-nav__link " for=__nav_4_13 id=__nav_4_13_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_13_label aria-expanded=false> <label class=md-nav__title for=__nav_4_13> <span class="md-nav__icon md-icon"></span> macros </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../macros/json_assert/ class=md-nav__link> <span class=md-ellipsis> JSON_ASSERT </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_brace_init_copy_semantics/ class=md-nav__link> <span class=md-ellipsis> JSON_BRACE_INIT_COPY_SEMANTICS </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_throw_user/ class=md-nav__link> <span class=md-ellipsis> JSON_CATCH_USER, JSON_THROW_USER, JSON_TRY_USER </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_diagnostics/ class=md-nav__link> <span class=md-ellipsis> JSON_DIAGNOSTICS </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_diagnostic_positions/ class=md-nav__link> <span class=md-ellipsis> JSON_DIAGNOSTIC_POSITIONS </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_disable_enum_serialization/ class=md-nav__link> <span class=md-ellipsis> JSON_DISABLE_ENUM_SERIALIZATION </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_has_cpp_11/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_CPP_11, JSON_HAS_CPP_14, JSON_HAS_CPP_17, JSON_HAS_CPP_20 </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_has_filesystem/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_EXPERIMENTAL_FILESYSTEM, JSON_HAS_FILESYSTEM </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_has_ranges/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_RANGES </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_has_static_rtti/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_STATIC_RTTI </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_has_three_way_comparison/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_THREE_WAY_COMPARISON </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_noexception/ class=md-nav__link> <span class=md-ellipsis> JSON_NOEXCEPTION </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_no_io/ class=md-nav__link> <span class=md-ellipsis> JSON_NO_IO </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_skip_library_version_check/ class=md-nav__link> <span class=md-ellipsis> JSON_SKIP_LIBRARY_VERSION_CHECK </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_skip_unsupported_compiler_check/ class=md-nav__link> <span class=md-ellipsis> JSON_SKIP_UNSUPPORTED_COMPILER_CHECK </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_use_global_udls/ class=md-nav__link> <span class=md-ellipsis> JSON_USE_GLOBAL_UDLS </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_use_implicit_conversions/ class=md-nav__link> <span class=md-ellipsis> JSON_USE_IMPLICIT_CONVERSIONS </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_use_legacy_discarded_value_comparison/ class=md-nav__link> <span class=md-ellipsis> JSON_USE_LEGACY_DISCARDED_VALUE_COMPARISON </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_define_derived_type/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_ONLY_SERIALIZE, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_define_type_intrusive/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_TYPE_INTRUSIVE, NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_TYPE_INTRUSIVE_ONLY_SERIALIZE </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_define_type_non_intrusive/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_define_type_with_names/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_TYPE_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_namespace/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_NAMESPACE </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_namespace_begin/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_NAMESPACE_BEGIN, NLOHMANN_JSON_NAMESPACE_END </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_namespace_no_version/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_NAMESPACE_NO_VERSION </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_serialize_enum/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_SERIALIZE_ENUM </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_serialize_enum_strict/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_SERIALIZE_ENUM_STRICT </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_version_major/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_VERSION_MAJOR, NLOHMANN_JSON_VERSION_MINOR, NLOHMANN_JSON_VERSION_PATCH </span> </a> </li> </ul> </nav> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_5> <div class="md-nav__link md-nav__container"> <a href=../../../community/ class="md-nav__link "> <span class=md-ellipsis> Community </span> </a> <label class="md-nav__link " for=__nav_5 id=__nav_5_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_5_label aria-expanded=false> <label class=md-nav__title for=__nav_5> <span class="md-nav__icon md-icon"></span> Community </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../community/code_of_conduct/ class=md-nav__link> <span class=md-ellipsis> Code of Conduct </span> </a> </li> <li class=md-nav__item> <a href=../../../community/contribution_guidelines/ class=md-nav__link> <span class=md-ellipsis> Contribution Guidelines </span> </a> </li> <li class=md-nav__item> <a href=../../../community/quality_assurance/ class=md-nav__link> <span class=md-ellipsis> Quality assurance </span> </a> </li> <li class=md-nav__item> <a href=../../../community/governance/ class=md-nav__link> <span class=md-ellipsis> Governance </span> </a> </li> <li class=md-nav__item> <a href=../../../community/security_policy/ class=md-nav__link> <span class=md-ellipsis> Security Policy </span> </a> </li> </ul> </nav> </li> </ul> </nav> </div> </div> </div> <div class="md-sidebar md-sidebar--secondary" data-md-component=sidebar data-md-type=toc> <div class=md-sidebar__scrollwrap> <div class=md-sidebar__inner> <nav class="md-nav md-nav--secondary" aria-label="Table of contents"> <label class=md-nav__title for=__toc> <span class="md-nav__icon md-icon"></span> Table of contents </label> <ul class=md-nav__list data-md-component=toc data-md-scrollfix> <li class=md-nav__item> <a href=#template-parameters class=md-nav__link> <span class=md-ellipsis> Template parameters </span> </a> </li> <li class=md-nav__item> <a href=#parameters class=md-nav__link> <span class=md-ellipsis> Parameters </span> </a> </li> <li class=md-nav__item> <a href=#return-value class=md-nav__link> <span class=md-ellipsis> Return value </span> </a> </li> <li class=md-nav__item> <a href=#exception-safety class=md-nav__link> <span class=md-ellipsis> Exception safety </span> </a> </li> <li class=md-nav__item> <a href=#complexity class=md-nav__link> <span class=md-ellipsis> Complexity </span> </a> </li> <li class=md-nav__item> <a href=#notes class=md-nav__link> <span class=md-ellipsis> Notes </span> </a> </li> <li class=md-nav__item> <a href=#examples class=md-nav__link> <span class=md-ellipsis> Examples </span> </a> </li> <li class=md-nav__item> <a href=#version-history class=md-nav__link> <span class=md-ellipsis> Version history </span> </a> </li> </ul> </nav> </div> </div> </div> <div class=md-content data-md-component=content> <article class="md-content__inner md-typeset"> <a href="https://github.com/nlohmann/json/edit/develop/docs/mkdocs/docs/api/basic_json/count.md" title="Edit this page" class="md-content__button md-icon" rel="edit"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M10 20H6V4h7v5h5v3.1l2-2V8l-6-6H6c-1.1 0-2 .9-2 2v16c0 1.1.9 2 2 2h4zm10.2-7c.1 0 .3.1.4.2l1.3 1.3c.2.2.2.6 0 .8l-1 1-2.1-2.1 1-1c.1-.1.2-.2.4-.2m0 3.9L14.1 23H12v-2.1l6.1-6.1z"/></svg> </a> <a href="https://github.com/nlohmann/json/raw/develop/docs/mkdocs/docs/api/basic_json/count.md" title="View source of this page" class="md-content__button md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M17 18c.56 0 1 .44 1 1s-.44 1-1 1-1-.44-1-1 .44-1 1-1m0-3c-2.73 0-5.06 1.66-6 4 .94 2.34 3.27 4 6 4s5.06-1.66 6-4c-.94-2.34-3.27-4-6-4m0 6.5a2.5 2.5 0 0 1-2.5-2.5 2.5 2.5 0 0 1 2.5-2.5 2.5 2.5 0 0 1 2.5 2.5 2.5 2.5 0 0 1-2.5 2.5M9.27 20H6V4h7v5h5v4.07c.7.08 1.36.25 2 .49V8l-6-6H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h4.5a8.2 8.2 0 0 1-1.23-2"/></svg> </a> <h1 id=nlohmannbasic_jsoncount><small>nlohmann::basic_json::</small>count<a class=headerlink href=#nlohmannbasic_jsoncount title="Permanent link">&para;</a></h1> <div class=highlight><pre><span></span><code><span class=c1>// (1)</span>
+<!doctype html><html lang=en class=no-js> <head><meta charset=utf-8><meta name=viewport content="width=device-width,initial-scale=1"><meta name=author content="Niels Lohmann"><link href="https://json.nlohmann.me/api/basic_json/count/" rel="canonical"><link href=../contains/ rel=prev><link href=../crbegin/ rel=next><link rel=icon href=../../../assets/images/favicon.png><meta name=generator content="mkdocs-1.6.1, mkdocs-material-9.7.6"><title>count - JSON for Modern C++</title><link rel=stylesheet href=../../../assets/stylesheets/main.484c7ddc.min.css><link rel=stylesheet href=../../../assets/stylesheets/palette.ab4e12ef.min.css><link rel="stylesheet" href="../../../assets/external/fonts.googleapis.com/css.61a430c9.css"><style>:root{--md-text-font:"Roboto";--md-code-font:"JetBrains Mono"}</style><link rel=stylesheet href=../../../css/custom.css><script>__md_scope=new URL("../../..",location),__md_hash=e=>[...e].reduce(((e,_)=>(e<<5)-e+_.charCodeAt(0)),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script></head> <body dir=ltr data-md-color-scheme=default data-md-color-primary=indigo data-md-color-accent=indigo> <input class=md-toggle data-md-toggle=drawer type=checkbox id=__drawer autocomplete=off> <input class=md-toggle data-md-toggle=search type=checkbox id=__search autocomplete=off> <label class=md-overlay for=__drawer></label> <div data-md-component=skip> <a href=#nlohmannbasic_jsoncount class=md-skip> Skip to content </a> </div> <div data-md-component=announce> </div> <header class=md-header data-md-component=header> <nav class="md-header__inner md-grid" aria-label=Header> <a href=../../.. title="JSON for Modern C++" class="md-header__button md-logo" aria-label="JSON for Modern C++" data-md-component=logo> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54"/></svg> </a> <label class="md-header__button md-icon" for=__drawer> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M3 6h18v2H3zm0 5h18v2H3zm0 5h18v2H3z"/></svg> </label> <div class=md-header__title data-md-component=header-title> <div class=md-header__ellipsis> <div class=md-header__topic> <span class=md-ellipsis> JSON for Modern C++ </span> </div> <div class=md-header__topic data-md-component=header-topic> <span class=md-ellipsis> count </span> </div> </div> </div> <form class=md-header__option data-md-component=palette> <input class=md-option data-md-color-media="(prefers-color-scheme: light)" data-md-color-scheme=default data-md-color-primary=indigo data-md-color-accent=indigo aria-label="Switch to dark mode" type=radio name=__palette id=__palette_0> <label class="md-header__button md-icon" title="Switch to dark mode" for=__palette_1 hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a4 4 0 0 0-4 4 4 4 0 0 0 4 4 4 4 0 0 0 4-4 4 4 0 0 0-4-4m0 10a6 6 0 0 1-6-6 6 6 0 0 1 6-6 6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12z"/></svg> </label> <input class=md-option data-md-color-media="(prefers-color-scheme: dark)" data-md-color-scheme=slate data-md-color-primary=indigo data-md-color-accent=indigo aria-label="Switch to light mode" type=radio name=__palette id=__palette_1> <label class="md-header__button md-icon" title="Switch to light mode" for=__palette_0 hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 18c-.89 0-1.74-.2-2.5-.55C11.56 16.5 13 14.42 13 12s-1.44-4.5-3.5-5.45C10.26 6.2 11.11 6 12 6a6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12z"/></svg> </label> </form> <script>var palette=__md_get("__palette");if(palette&&palette.color){if("(prefers-color-scheme)"===palette.color.media){var media=matchMedia("(prefers-color-scheme: light)"),input=document.querySelector(media.matches?"[data-md-color-media='(prefers-color-scheme: light)']":"[data-md-color-media='(prefers-color-scheme: dark)']");palette.color.media=input.getAttribute("data-md-color-media"),palette.color.scheme=input.getAttribute("data-md-color-scheme"),palette.color.primary=input.getAttribute("data-md-color-primary"),palette.color.accent=input.getAttribute("data-md-color-accent")}for(var[key,value]of Object.entries(palette.color))document.body.setAttribute("data-md-color-"+key,value)}</script> <label class="md-header__button md-icon" for=__search> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg> </label> <div class=md-search data-md-component=search role=dialog> <label class=md-search__overlay for=__search></label> <div class=md-search__inner role=search> <form class=md-search__form name=search> <input type=text class=md-search__input name=query aria-label=Search placeholder=Search autocapitalize=off autocorrect=off autocomplete=off spellcheck=false data-md-component=search-query required> <label class="md-search__icon md-icon" for=__search> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11z"/></svg> </label> <nav class=md-search__options aria-label=Search> <button type=reset class="md-search__icon md-icon" title=Clear aria-label=Clear tabindex=-1> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z"/></svg> </button> </nav> </form> <div class=md-search__output> <div class=md-search__scrollwrap tabindex=0 data-md-scrollfix> <div class=md-search-result data-md-component=search-result> <div class=md-search-result__meta> Initializing search </div> <ol class=md-search-result__list role=presentation></ol> </div> </div> </div> </div> </div> <div class=md-header__source> <a href="https://github.com/nlohmann/json" title="Go to repository" class="md-source" data-md-component="source"> <div class="md-source__icon md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </div> <div class=md-source__repository> nlohmann/json </div> </a> </div> </nav> </header> <div class=md-container data-md-component=container> <nav class=md-tabs aria-label=Tabs data-md-component=tabs> <div class=md-grid> <ul class=md-tabs__list> <li class=md-tabs__item> <a href=../../.. class=md-tabs__link> Home </a> </li> <li class=md-tabs__item> <a href=../../../features/arbitrary_types/ class=md-tabs__link> Features </a> </li> <li class=md-tabs__item> <a href=../../../integration/ class=md-tabs__link> Integration </a> </li> <li class="md-tabs__item md-tabs__item--active"> <a href=../ class=md-tabs__link> API Documentation </a> </li> <li class=md-tabs__item> <a href=../../../community/ class=md-tabs__link> Community </a> </li> </ul> </div> </nav> <main class=md-main data-md-component=main> <div class="md-main__inner md-grid"> <div class="md-sidebar md-sidebar--primary" data-md-component=sidebar data-md-type=navigation> <div class=md-sidebar__scrollwrap> <div class=md-sidebar__inner> <nav class="md-nav md-nav--primary md-nav--lifted" aria-label=Navigation data-md-level=0> <label class=md-nav__title for=__drawer> <a href=../../.. title="JSON for Modern C++" class="md-nav__button md-logo" aria-label="JSON for Modern C++" data-md-component=logo> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54"/></svg> </a> JSON for Modern C++ </label> <div class=md-nav__source> <a href="https://github.com/nlohmann/json" title="Go to repository" class="md-source" data-md-component="source"> <div class="md-source__icon md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </div> <div class=md-source__repository> nlohmann/json </div> </a> </div> <ul class=md-nav__list data-md-scrollfix> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_1> <div class="md-nav__link md-nav__container"> <a href=../../.. class="md-nav__link "> <span class=md-ellipsis> Home </span> </a> <label class="md-nav__link " for=__nav_1 id=__nav_1_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_1_label aria-expanded=false> <label class=md-nav__title for=__nav_1> <span class="md-nav__icon md-icon"></span> Home </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../home/license/ class=md-nav__link> <span class=md-ellipsis> License </span> </a> </li> <li class=md-nav__item> <a href=../../../home/faq/ class=md-nav__link> <span class=md-ellipsis> FAQ </span> </a> </li> <li class=md-nav__item> <a href=../../../home/exceptions/ class=md-nav__link> <span class=md-ellipsis> Exceptions </span> </a> </li> <li class=md-nav__item> <a href=../../../home/releases/ class=md-nav__link> <span class=md-ellipsis> Releases </span> </a> </li> <li class=md-nav__item> <a href=../../../home/design_goals/ class=md-nav__link> <span class=md-ellipsis> Design goals </span> </a> </li> <li class=md-nav__item> <a href=../../../home/architecture/ class=md-nav__link> <span class=md-ellipsis> Architecture </span> </a> </li> <li class=md-nav__item> <a href=../../../home/customers/ class=md-nav__link> <span class=md-ellipsis> Customers </span> </a> </li> <li class=md-nav__item> <a href=../../../home/sponsors/ class=md-nav__link> <span class=md-ellipsis> Sponsors </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2> <label class=md-nav__link for=__nav_2 id=__nav_2_label tabindex=0> <span class=md-ellipsis> Features </span> <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_2_label aria-expanded=false> <label class=md-nav__title for=__nav_2> <span class="md-nav__icon md-icon"></span> Features </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/arbitrary_types/ class=md-nav__link> <span class=md-ellipsis> Arbitrary Type Conversions </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_2> <div class="md-nav__link md-nav__container"> <a href=../../../features/binary_formats/ class="md-nav__link "> <span class=md-ellipsis> Binary Formats </span> </a> <label class="md-nav__link " for=__nav_2_2 id=__nav_2_2_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_2_label aria-expanded=false> <label class=md-nav__title for=__nav_2_2> <span class="md-nav__icon md-icon"></span> Binary Formats </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/binary_formats/bjdata/ class=md-nav__link> <span class=md-ellipsis> BJData </span> </a> </li> <li class=md-nav__item> <a href=../../../features/binary_formats/bson/ class=md-nav__link> <span class=md-ellipsis> BSON </span> </a> </li> <li class=md-nav__item> <a href=../../../features/binary_formats/cbor/ class=md-nav__link> <span class=md-ellipsis> CBOR </span> </a> </li> <li class=md-nav__item> <a href=../../../features/binary_formats/messagepack/ class=md-nav__link> <span class=md-ellipsis> MessagePack </span> </a> </li> <li class=md-nav__item> <a href=../../../features/binary_formats/ubjson/ class=md-nav__link> <span class=md-ellipsis> UBJSON </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../../features/binary_values/ class=md-nav__link> <span class=md-ellipsis> Binary Values </span> </a> </li> <li class=md-nav__item> <a href=../../../features/comments/ class=md-nav__link> <span class=md-ellipsis> Comments </span> </a> </li> <li class=md-nav__item> <a href=../../../features/trailing_commas/ class=md-nav__link> <span class=md-ellipsis> Trailing Commas </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_6> <div class="md-nav__link md-nav__container"> <a href=../../../features/element_access/ class="md-nav__link "> <span class=md-ellipsis> Element Access </span> </a> <label class="md-nav__link " for=__nav_2_6 id=__nav_2_6_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_6_label aria-expanded=false> <label class=md-nav__title for=__nav_2_6> <span class="md-nav__icon md-icon"></span> Element Access </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/element_access/unchecked_access/ class=md-nav__link> <span class=md-ellipsis> Unchecked access: operator[] </span> </a> </li> <li class=md-nav__item> <a href=../../../features/element_access/checked_access/ class=md-nav__link> <span class=md-ellipsis> Checked access: at </span> </a> </li> <li class=md-nav__item> <a href=../../../features/element_access/default_value/ class=md-nav__link> <span class=md-ellipsis> Access with default value: value </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../../features/iterators/ class=md-nav__link> <span class=md-ellipsis> Iterators </span> </a> </li> <li class=md-nav__item> <a href=../../../features/json_pointer/ class=md-nav__link> <span class=md-ellipsis> JSON Pointer </span> </a> </li> <li class=md-nav__item> <a href=../../../features/json_patch/ class=md-nav__link> <span class=md-ellipsis> JSON Patch and Diff </span> </a> </li> <li class=md-nav__item> <a href=../../../features/merge_patch/ class=md-nav__link> <span class=md-ellipsis> JSON Merge Patch </span> </a> </li> <li class=md-nav__item> <a href=../../../features/modules/ class=md-nav__link> <span class=md-ellipsis> Modules </span> </a> </li> <li class=md-nav__item> <a href=../../../features/namespace/ class=md-nav__link> <span class=md-ellipsis> nlohmann Namespace </span> </a> </li> <li class=md-nav__item> <a href=../../../features/object_order/ class=md-nav__link> <span class=md-ellipsis> Object Order </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_14> <div class="md-nav__link md-nav__container"> <a href=../../../features/parsing/ class="md-nav__link "> <span class=md-ellipsis> Parsing </span> </a> <label class="md-nav__link " for=__nav_2_14 id=__nav_2_14_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_14_label aria-expanded=false> <label class=md-nav__title for=__nav_2_14> <span class="md-nav__icon md-icon"></span> Parsing </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/parsing/json_lines/ class=md-nav__link> <span class=md-ellipsis> JSON Lines </span> </a> </li> <li class=md-nav__item> <a href=../../../features/parsing/parse_exceptions/ class=md-nav__link> <span class=md-ellipsis> Parsing and Exceptions </span> </a> </li> <li class=md-nav__item> <a href=../../../features/parsing/parser_callbacks/ class=md-nav__link> <span class=md-ellipsis> Parser Callbacks </span> </a> </li> <li class=md-nav__item> <a href=../../../features/parsing/sax_interface/ class=md-nav__link> <span class=md-ellipsis> SAX Interface </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../../features/assertions/ class=md-nav__link> <span class=md-ellipsis> Runtime Assertions </span> </a> </li> <li class=md-nav__item> <a href=../../../features/enum_conversion/ class=md-nav__link> <span class=md-ellipsis> Specializing enum conversion </span> </a> </li> <li class=md-nav__item> <a href=../../../features/macros/ class=md-nav__link> <span class=md-ellipsis> Supported Macros </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_18> <div class="md-nav__link md-nav__container"> <a href=../../../features/types/ class="md-nav__link "> <span class=md-ellipsis> Types </span> </a> <label class="md-nav__link " for=__nav_2_18 id=__nav_2_18_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_18_label aria-expanded=false> <label class=md-nav__title for=__nav_2_18> <span class="md-nav__icon md-icon"></span> Types </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/types/number_handling/ class=md-nav__link> <span class=md-ellipsis> Number Handling </span> </a> </li> </ul> </nav> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_3> <div class="md-nav__link md-nav__container"> <a href=../../../integration/ class="md-nav__link "> <span class=md-ellipsis> Integration </span> </a> <label class="md-nav__link " for=__nav_3 id=__nav_3_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_3_label aria-expanded=false> <label class=md-nav__title for=__nav_3> <span class="md-nav__icon md-icon"></span> Integration </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../integration/migration_guide/ class=md-nav__link> <span class=md-ellipsis> Migration Guide </span> </a> </li> <li class=md-nav__item> <a href=../../../integration/cmake/ class=md-nav__link> <span class=md-ellipsis> CMake </span> </a> </li> <li class=md-nav__item> <a href=../../../integration/package_managers/ class=md-nav__link> <span class=md-ellipsis> Package Managers </span> </a> </li> <li class=md-nav__item> <a href=../../../integration/pkg-config/ class=md-nav__link> <span class=md-ellipsis> Pkg-config </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--active md-nav__item--section md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4 checked> <label class=md-nav__link for=__nav_4 id=__nav_4_label tabindex> <span class=md-ellipsis> API Documentation </span> <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_4_label aria-expanded=true> <label class=md-nav__title for=__nav_4> <span class="md-nav__icon md-icon"></span> API Documentation </label> <ul class=md-nav__list data-md-scrollfix> <li class="md-nav__item md-nav__item--active md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_1 checked> <div class="md-nav__link md-nav__container"> <a href=../ class="md-nav__link "> <span class=md-ellipsis> basic_json </span> </a> <label class="md-nav__link " for=__nav_4_1 id=__nav_4_1_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_1_label aria-expanded=true> <label class=md-nav__title for=__nav_4_1> <span class="md-nav__icon md-icon"></span> basic_json </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../basic_json/ class=md-nav__link> <span class=md-ellipsis> (Constructor) </span> </a> </li> <li class=md-nav__item> <a href=../~basic_json/ class=md-nav__link> <span class=md-ellipsis> (Destructor) </span> </a> </li> <li class=md-nav__item> <a href=../accept/ class=md-nav__link> <span class=md-ellipsis> accept </span> </a> </li> <li class=md-nav__item> <a href=../array/ class=md-nav__link> <span class=md-ellipsis> array </span> </a> </li> <li class=md-nav__item> <a href=../array_t/ class=md-nav__link> <span class=md-ellipsis> array_t </span> </a> </li> <li class=md-nav__item> <a href=../at/ class=md-nav__link> <span class=md-ellipsis> at </span> </a> </li> <li class=md-nav__item> <a href=../back/ class=md-nav__link> <span class=md-ellipsis> back </span> </a> </li> <li class=md-nav__item> <a href=../begin/ class=md-nav__link> <span class=md-ellipsis> begin </span> </a> </li> <li class=md-nav__item> <a href=../binary/ class=md-nav__link> <span class=md-ellipsis> binary </span> </a> </li> <li class=md-nav__item> <a href=../binary_t/ class=md-nav__link> <span class=md-ellipsis> binary_t </span> </a> </li> <li class=md-nav__item> <a href=../boolean_t/ class=md-nav__link> <span class=md-ellipsis> boolean_t </span> </a> </li> <li class=md-nav__item> <a href=../cbegin/ class=md-nav__link> <span class=md-ellipsis> cbegin </span> </a> </li> <li class=md-nav__item> <a href=../cbor_tag_handler_t/ class=md-nav__link> <span class=md-ellipsis> cbor_tag_handler_t </span> </a> </li> <li class=md-nav__item> <a href=../cend/ class=md-nav__link> <span class=md-ellipsis> cend </span> </a> </li> <li class=md-nav__item> <a href=../clear/ class=md-nav__link> <span class=md-ellipsis> clear </span> </a> </li> <li class=md-nav__item> <a href=../contains/ class=md-nav__link> <span class=md-ellipsis> contains </span> </a> </li> <li class="md-nav__item md-nav__item--active"> <input class="md-nav__toggle md-toggle" type=checkbox id=__toc> <label class="md-nav__link md-nav__link--active" for=__toc> <span class=md-ellipsis> count </span> <span class="md-nav__icon md-icon"></span> </label> <a href=./ class="md-nav__link md-nav__link--active"> <span class=md-ellipsis> count </span> </a> <nav class="md-nav md-nav--secondary" aria-label="Table of contents"> <label class=md-nav__title for=__toc> <span class="md-nav__icon md-icon"></span> Table of contents </label> <ul class=md-nav__list data-md-component=toc data-md-scrollfix> <li class=md-nav__item> <a href=#template-parameters class=md-nav__link> <span class=md-ellipsis> Template parameters </span> </a> </li> <li class=md-nav__item> <a href=#parameters class=md-nav__link> <span class=md-ellipsis> Parameters </span> </a> </li> <li class=md-nav__item> <a href=#return-value class=md-nav__link> <span class=md-ellipsis> Return value </span> </a> </li> <li class=md-nav__item> <a href=#exception-safety class=md-nav__link> <span class=md-ellipsis> Exception safety </span> </a> </li> <li class=md-nav__item> <a href=#complexity class=md-nav__link> <span class=md-ellipsis> Complexity </span> </a> </li> <li class=md-nav__item> <a href=#notes class=md-nav__link> <span class=md-ellipsis> Notes </span> </a> </li> <li class=md-nav__item> <a href=#examples class=md-nav__link> <span class=md-ellipsis> Examples </span> </a> </li> <li class=md-nav__item> <a href=#see-also class=md-nav__link> <span class=md-ellipsis> See also </span> </a> </li> <li class=md-nav__item> <a href=#version-history class=md-nav__link> <span class=md-ellipsis> Version history </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../crbegin/ class=md-nav__link> <span class=md-ellipsis> crbegin </span> </a> </li> <li class=md-nav__item> <a href=../crend/ class=md-nav__link> <span class=md-ellipsis> crend </span> </a> </li> <li class=md-nav__item> <a href=../default_object_comparator_t/ class=md-nav__link> <span class=md-ellipsis> default_object_comparator_t </span> </a> </li> <li class=md-nav__item> <a href=../diff/ class=md-nav__link> <span class=md-ellipsis> diff </span> </a> </li> <li class=md-nav__item> <a href=../dump/ class=md-nav__link> <span class=md-ellipsis> dump </span> </a> </li> <li class=md-nav__item> <a href=../emplace/ class=md-nav__link> <span class=md-ellipsis> emplace </span> </a> </li> <li class=md-nav__item> <a href=../emplace_back/ class=md-nav__link> <span class=md-ellipsis> emplace_back </span> </a> </li> <li class=md-nav__item> <a href=../empty/ class=md-nav__link> <span class=md-ellipsis> empty </span> </a> </li> <li class=md-nav__item> <a href=../end/ class=md-nav__link> <span class=md-ellipsis> end </span> </a> </li> <li class=md-nav__item> <a href=../end_pos/ class=md-nav__link> <span class=md-ellipsis> end_pos </span> </a> </li> <li class=md-nav__item> <a href=../erase/ class=md-nav__link> <span class=md-ellipsis> erase </span> </a> </li> <li class=md-nav__item> <a href=../error_handler_t/ class=md-nav__link> <span class=md-ellipsis> error_handler_t </span> </a> </li> <li class=md-nav__item> <a href=../exception/ class=md-nav__link> <span class=md-ellipsis> exception </span> </a> </li> <li class=md-nav__item> <a href=../find/ class=md-nav__link> <span class=md-ellipsis> find </span> </a> </li> <li class=md-nav__item> <a href=../flatten/ class=md-nav__link> <span class=md-ellipsis> flatten </span> </a> </li> <li class=md-nav__item> <a href=../from_bjdata/ class=md-nav__link> <span class=md-ellipsis> from_bjdata </span> </a> </li> <li class=md-nav__item> <a href=../from_bson/ class=md-nav__link> <span class=md-ellipsis> from_bson </span> </a> </li> <li class=md-nav__item> <a href=../from_cbor/ class=md-nav__link> <span class=md-ellipsis> from_cbor </span> </a> </li> <li class=md-nav__item> <a href=../from_msgpack/ class=md-nav__link> <span class=md-ellipsis> from_msgpack </span> </a> </li> <li class=md-nav__item> <a href=../from_ubjson/ class=md-nav__link> <span class=md-ellipsis> from_ubjson </span> </a> </li> <li class=md-nav__item> <a href=../front/ class=md-nav__link> <span class=md-ellipsis> front </span> </a> </li> <li class=md-nav__item> <a href=../get/ class=md-nav__link> <span class=md-ellipsis> get </span> </a> </li> <li class=md-nav__item> <a href=../get_allocator/ class=md-nav__link> <span class=md-ellipsis> get_allocator </span> </a> </li> <li class=md-nav__item> <a href=../get_binary/ class=md-nav__link> <span class=md-ellipsis> get_binary </span> </a> </li> <li class=md-nav__item> <a href=../get_ptr/ class=md-nav__link> <span class=md-ellipsis> get_ptr </span> </a> </li> <li class=md-nav__item> <a href=../get_ref/ class=md-nav__link> <span class=md-ellipsis> get_ref </span> </a> </li> <li class=md-nav__item> <a href=../get_to/ class=md-nav__link> <span class=md-ellipsis> get_to </span> </a> </li> <li class=md-nav__item> <a href=../std_hash/ class=md-nav__link> <span class=md-ellipsis> std::hash&lt;basic_json&gt; </span> </a> </li> <li class=md-nav__item> <a href=../input_format_t/ class=md-nav__link> <span class=md-ellipsis> input_format_t </span> </a> </li> <li class=md-nav__item> <a href=../insert/ class=md-nav__link> <span class=md-ellipsis> insert </span> </a> </li> <li class=md-nav__item> <a href=../invalid_iterator/ class=md-nav__link> <span class=md-ellipsis> invalid_iterator </span> </a> </li> <li class=md-nav__item> <a href=../is_array/ class=md-nav__link> <span class=md-ellipsis> is_array </span> </a> </li> <li class=md-nav__item> <a href=../is_binary/ class=md-nav__link> <span class=md-ellipsis> is_binary </span> </a> </li> <li class=md-nav__item> <a href=../is_boolean/ class=md-nav__link> <span class=md-ellipsis> is_boolean </span> </a> </li> <li class=md-nav__item> <a href=../is_discarded/ class=md-nav__link> <span class=md-ellipsis> is_discarded </span> </a> </li> <li class=md-nav__item> <a href=../is_null/ class=md-nav__link> <span class=md-ellipsis> is_null </span> </a> </li> <li class=md-nav__item> <a href=../is_number/ class=md-nav__link> <span class=md-ellipsis> is_number </span> </a> </li> <li class=md-nav__item> <a href=../is_number_float/ class=md-nav__link> <span class=md-ellipsis> is_number_float </span> </a> </li> <li class=md-nav__item> <a href=../is_number_integer/ class=md-nav__link> <span class=md-ellipsis> is_number_integer </span> </a> </li> <li class=md-nav__item> <a href=../is_number_unsigned/ class=md-nav__link> <span class=md-ellipsis> is_number_unsigned </span> </a> </li> <li class=md-nav__item> <a href=../is_object/ class=md-nav__link> <span class=md-ellipsis> is_object </span> </a> </li> <li class=md-nav__item> <a href=../is_primitive/ class=md-nav__link> <span class=md-ellipsis> is_primitive </span> </a> </li> <li class=md-nav__item> <a href=../is_string/ class=md-nav__link> <span class=md-ellipsis> is_string </span> </a> </li> <li class=md-nav__item> <a href=../is_structured/ class=md-nav__link> <span class=md-ellipsis> is_structured </span> </a> </li> <li class=md-nav__item> <a href=../items/ class=md-nav__link> <span class=md-ellipsis> items </span> </a> </li> <li class=md-nav__item> <a href=../json_base_class_t/ class=md-nav__link> <span class=md-ellipsis> json_base_class_t </span> </a> </li> <li class=md-nav__item> <a href=../json_serializer/ class=md-nav__link> <span class=md-ellipsis> json_serializer </span> </a> </li> <li class=md-nav__item> <a href=../max_size/ class=md-nav__link> <span class=md-ellipsis> max_size </span> </a> </li> <li class=md-nav__item> <a href=../meta/ class=md-nav__link> <span class=md-ellipsis> meta </span> </a> </li> <li class=md-nav__item> <a href=../merge_patch/ class=md-nav__link> <span class=md-ellipsis> merge_patch </span> </a> </li> <li class=md-nav__item> <a href=../number_float_t/ class=md-nav__link> <span class=md-ellipsis> number_float_t </span> </a> </li> <li class=md-nav__item> <a href=../number_integer_t/ class=md-nav__link> <span class=md-ellipsis> number_integer_t </span> </a> </li> <li class=md-nav__item> <a href=../number_unsigned_t/ class=md-nav__link> <span class=md-ellipsis> number_unsigned_t </span> </a> </li> <li class=md-nav__item> <a href=../object/ class=md-nav__link> <span class=md-ellipsis> object </span> </a> </li> <li class=md-nav__item> <a href=../object_comparator_t/ class=md-nav__link> <span class=md-ellipsis> object_comparator_t </span> </a> </li> <li class=md-nav__item> <a href=../object_t/ class=md-nav__link> <span class=md-ellipsis> object_t </span> </a> </li> <li class=md-nav__item> <a href=../operator_ValueType/ class=md-nav__link> <span class=md-ellipsis> operator ValueType </span> </a> </li> <li class=md-nav__item> <a href=../operator_value_t/ class=md-nav__link> <span class=md-ellipsis> operator value_t </span> </a> </li> <li class=md-nav__item> <a href=../operator%5B%5D/ class=md-nav__link> <span class=md-ellipsis> operator[] </span> </a> </li> <li class=md-nav__item> <a href=../operator%3D/ class=md-nav__link> <span class=md-ellipsis> operator= </span> </a> </li> <li class=md-nav__item> <a href=../operator%2B%3D/ class=md-nav__link> <span class=md-ellipsis> operator+= </span> </a> </li> <li class=md-nav__item> <a href=../operator_eq/ class=md-nav__link> <span class=md-ellipsis> operator== </span> </a> </li> <li class=md-nav__item> <a href=../operator_ne/ class=md-nav__link> <span class=md-ellipsis> operator!= </span> </a> </li> <li class=md-nav__item> <a href=../operator_lt/ class=md-nav__link> <span class=md-ellipsis> operator< </span> </a> </li> <li class=md-nav__item> <a href=../operator_gt/ class=md-nav__link> <span class=md-ellipsis> operator> </span> </a> </li> <li class=md-nav__item> <a href=../operator_le/ class=md-nav__link> <span class=md-ellipsis> operator<= </span> </a> </li> <li class=md-nav__item> <a href=../operator_ge/ class=md-nav__link> <span class=md-ellipsis> operator>= </span> </a> </li> <li class=md-nav__item> <a href=../operator_spaceship/ class=md-nav__link> <span class=md-ellipsis> operator<=> </span> </a> </li> <li class=md-nav__item> <a href=../out_of_range/ class=md-nav__link> <span class=md-ellipsis> out_of_range </span> </a> </li> <li class=md-nav__item> <a href=../other_error/ class=md-nav__link> <span class=md-ellipsis> other_error </span> </a> </li> <li class=md-nav__item> <a href=../parse/ class=md-nav__link> <span class=md-ellipsis> parse </span> </a> </li> <li class=md-nav__item> <a href=../parse_error/ class=md-nav__link> <span class=md-ellipsis> parse_error </span> </a> </li> <li class=md-nav__item> <a href=../parse_event_t/ class=md-nav__link> <span class=md-ellipsis> parse_event_t </span> </a> </li> <li class=md-nav__item> <a href=../parser_callback_t/ class=md-nav__link> <span class=md-ellipsis> parser_callback_t </span> </a> </li> <li class=md-nav__item> <a href=../patch/ class=md-nav__link> <span class=md-ellipsis> patch </span> </a> </li> <li class=md-nav__item> <a href=../patch_inplace/ class=md-nav__link> <span class=md-ellipsis> patch_inplace </span> </a> </li> <li class=md-nav__item> <a href=../push_back/ class=md-nav__link> <span class=md-ellipsis> push_back </span> </a> </li> <li class=md-nav__item> <a href=../rbegin/ class=md-nav__link> <span class=md-ellipsis> rbegin </span> </a> </li> <li class=md-nav__item> <a href=../rend/ class=md-nav__link> <span class=md-ellipsis> rend </span> </a> </li> <li class=md-nav__item> <a href=../sax_parse/ class=md-nav__link> <span class=md-ellipsis> sax_parse </span> </a> </li> <li class=md-nav__item> <a href=../size/ class=md-nav__link> <span class=md-ellipsis> size </span> </a> </li> <li class=md-nav__item> <a href=../start_pos/ class=md-nav__link> <span class=md-ellipsis> start_pos </span> </a> </li> <li class=md-nav__item> <a href=../string_t/ class=md-nav__link> <span class=md-ellipsis> string_t </span> </a> </li> <li class=md-nav__item> <a href=../swap/ class=md-nav__link> <span class=md-ellipsis> swap </span> </a> </li> <li class=md-nav__item> <a href=../std_swap/ class=md-nav__link> <span class=md-ellipsis> std::swap&lt;basic_json&gt; </span> </a> </li> <li class=md-nav__item> <a href=../to_bjdata/ class=md-nav__link> <span class=md-ellipsis> to_bjdata </span> </a> </li> <li class=md-nav__item> <a href=../to_bson/ class=md-nav__link> <span class=md-ellipsis> to_bson </span> </a> </li> <li class=md-nav__item> <a href=../to_cbor/ class=md-nav__link> <span class=md-ellipsis> to_cbor </span> </a> </li> <li class=md-nav__item> <a href=../to_msgpack/ class=md-nav__link> <span class=md-ellipsis> to_msgpack </span> </a> </li> <li class=md-nav__item> <a href=../to_string/ class=md-nav__link> <span class=md-ellipsis> to_string </span> </a> </li> <li class=md-nav__item> <a href=../to_ubjson/ class=md-nav__link> <span class=md-ellipsis> to_ubjson </span> </a> </li> <li class=md-nav__item> <a href=../type/ class=md-nav__link> <span class=md-ellipsis> type </span> </a> </li> <li class=md-nav__item> <a href=../type_error/ class=md-nav__link> <span class=md-ellipsis> type_error </span> </a> </li> <li class=md-nav__item> <a href=../type_name/ class=md-nav__link> <span class=md-ellipsis> type_name </span> </a> </li> <li class=md-nav__item> <a href=../unflatten/ class=md-nav__link> <span class=md-ellipsis> unflatten </span> </a> </li> <li class=md-nav__item> <a href=../update/ class=md-nav__link> <span class=md-ellipsis> update </span> </a> </li> <li class=md-nav__item> <a href=../value/ class=md-nav__link> <span class=md-ellipsis> value </span> </a> </li> <li class=md-nav__item> <a href=../value_t/ class=md-nav__link> <span class=md-ellipsis> value_t </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_2> <div class="md-nav__link md-nav__container"> <a href=../../byte_container_with_subtype/ class="md-nav__link "> <span class=md-ellipsis> byte_container_with_subtype </span> </a> <label class="md-nav__link " for=__nav_4_2 id=__nav_4_2_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_2_label aria-expanded=false> <label class=md-nav__title for=__nav_4_2> <span class="md-nav__icon md-icon"></span> byte_container_with_subtype </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../byte_container_with_subtype/byte_container_with_subtype/ class=md-nav__link> <span class=md-ellipsis> (constructor) </span> </a> </li> <li class=md-nav__item> <a href=../../byte_container_with_subtype/clear_subtype/ class=md-nav__link> <span class=md-ellipsis> clear_subtype </span> </a> </li> <li class=md-nav__item> <a href=../../byte_container_with_subtype/has_subtype/ class=md-nav__link> <span class=md-ellipsis> has_subtype </span> </a> </li> <li class=md-nav__item> <a href=../../byte_container_with_subtype/set_subtype/ class=md-nav__link> <span class=md-ellipsis> set_subtype </span> </a> </li> <li class=md-nav__item> <a href=../../byte_container_with_subtype/subtype/ class=md-nav__link> <span class=md-ellipsis> subtype </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_3> <div class="md-nav__link md-nav__container"> <a href=../../adl_serializer/ class="md-nav__link "> <span class=md-ellipsis> adl_serializer </span> </a> <label class="md-nav__link " for=__nav_4_3 id=__nav_4_3_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_3_label aria-expanded=false> <label class=md-nav__title for=__nav_4_3> <span class="md-nav__icon md-icon"></span> adl_serializer </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../adl_serializer/from_json/ class=md-nav__link> <span class=md-ellipsis> from_json </span> </a> </li> <li class=md-nav__item> <a href=../../adl_serializer/to_json/ class=md-nav__link> <span class=md-ellipsis> to_json </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../json/ class=md-nav__link> <span class=md-ellipsis> json </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_5> <div class="md-nav__link md-nav__container"> <a href=../../json_pointer/ class="md-nav__link "> <span class=md-ellipsis> json_pointer </span> </a> <label class="md-nav__link " for=__nav_4_5 id=__nav_4_5_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_5_label aria-expanded=false> <label class=md-nav__title for=__nav_4_5> <span class="md-nav__icon md-icon"></span> json_pointer </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../json_pointer/json_pointer/ class=md-nav__link> <span class=md-ellipsis> (Constructor) </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/back/ class=md-nav__link> <span class=md-ellipsis> back </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/empty/ class=md-nav__link> <span class=md-ellipsis> empty </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/front/ class=md-nav__link> <span class=md-ellipsis> front </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_string_t/ class=md-nav__link> <span class=md-ellipsis> operator string_t </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_eq/ class=md-nav__link> <span class=md-ellipsis> operator== </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_ne/ class=md-nav__link> <span class=md-ellipsis> operator!= </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_slash/ class=md-nav__link> <span class=md-ellipsis> operator/ </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_slasheq/ class=md-nav__link> <span class=md-ellipsis> operator/= </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/parent_pointer/ class=md-nav__link> <span class=md-ellipsis> parent_pointer </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/pop_back/ class=md-nav__link> <span class=md-ellipsis> pop_back </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/pop_front/ class=md-nav__link> <span class=md-ellipsis> pop_front </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/push_back/ class=md-nav__link> <span class=md-ellipsis> push_back </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/push_front/ class=md-nav__link> <span class=md-ellipsis> push_front </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/string_t/ class=md-nav__link> <span class=md-ellipsis> string_t </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/to_string/ class=md-nav__link> <span class=md-ellipsis> to_string </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_6> <div class="md-nav__link md-nav__container"> <a href=../../json_sax/ class="md-nav__link "> <span class=md-ellipsis> json_sax </span> </a> <label class="md-nav__link " for=__nav_4_6 id=__nav_4_6_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_6_label aria-expanded=false> <label class=md-nav__title for=__nav_4_6> <span class="md-nav__icon md-icon"></span> json_sax </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../json_sax/binary/ class=md-nav__link> <span class=md-ellipsis> binary </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/boolean/ class=md-nav__link> <span class=md-ellipsis> boolean </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/end_array/ class=md-nav__link> <span class=md-ellipsis> end_array </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/end_object/ class=md-nav__link> <span class=md-ellipsis> end_object </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/key/ class=md-nav__link> <span class=md-ellipsis> key </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/null/ class=md-nav__link> <span class=md-ellipsis> null </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/number_float/ class=md-nav__link> <span class=md-ellipsis> number_float </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/number_integer/ class=md-nav__link> <span class=md-ellipsis> number_integer </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/number_unsigned/ class=md-nav__link> <span class=md-ellipsis> number_unsigned </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/parse_error/ class=md-nav__link> <span class=md-ellipsis> parse_error </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/start_array/ class=md-nav__link> <span class=md-ellipsis> start_array </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/start_object/ class=md-nav__link> <span class=md-ellipsis> start_object </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/string/ class=md-nav__link> <span class=md-ellipsis> string </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../operator_ltlt/ class=md-nav__link> <span class=md-ellipsis> operator<<(basic_json), operator<<(json_pointer) </span> </a> </li> <li class=md-nav__item> <a href=../../operator_gtgt/ class=md-nav__link> <span class=md-ellipsis> operator>>(basic_json) </span> </a> </li> <li class=md-nav__item> <a href=../../operator_literal_json/ class=md-nav__link> <span class=md-ellipsis> operator""_json </span> </a> </li> <li class=md-nav__item> <a href=../../operator_literal_json_pointer/ class=md-nav__link> <span class=md-ellipsis> operator""_json_pointer </span> </a> </li> <li class=md-nav__item> <a href=../../ordered_json/ class=md-nav__link> <span class=md-ellipsis> ordered_json </span> </a> </li> <li class=md-nav__item> <a href=../../ordered_map/ class=md-nav__link> <span class=md-ellipsis> ordered_map </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_13> <div class="md-nav__link md-nav__container"> <a href=../../macros/ class="md-nav__link "> <span class=md-ellipsis> macros </span> </a> <label class="md-nav__link " for=__nav_4_13 id=__nav_4_13_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_13_label aria-expanded=false> <label class=md-nav__title for=__nav_4_13> <span class="md-nav__icon md-icon"></span> macros </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../macros/json_assert/ class=md-nav__link> <span class=md-ellipsis> JSON_ASSERT </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_brace_init_copy_semantics/ class=md-nav__link> <span class=md-ellipsis> JSON_BRACE_INIT_COPY_SEMANTICS </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_throw_user/ class=md-nav__link> <span class=md-ellipsis> JSON_CATCH_USER, JSON_THROW_USER, JSON_TRY_USER </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_diagnostics/ class=md-nav__link> <span class=md-ellipsis> JSON_DIAGNOSTICS </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_diagnostic_positions/ class=md-nav__link> <span class=md-ellipsis> JSON_DIAGNOSTIC_POSITIONS </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_disable_enum_serialization/ class=md-nav__link> <span class=md-ellipsis> JSON_DISABLE_ENUM_SERIALIZATION </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_has_cpp_11/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_CPP_11, JSON_HAS_CPP_14, JSON_HAS_CPP_17, JSON_HAS_CPP_20 </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_has_filesystem/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_EXPERIMENTAL_FILESYSTEM, JSON_HAS_FILESYSTEM </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_has_ranges/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_RANGES </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_has_static_rtti/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_STATIC_RTTI </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_has_three_way_comparison/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_THREE_WAY_COMPARISON </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_noexception/ class=md-nav__link> <span class=md-ellipsis> JSON_NOEXCEPTION </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_no_io/ class=md-nav__link> <span class=md-ellipsis> JSON_NO_IO </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_skip_library_version_check/ class=md-nav__link> <span class=md-ellipsis> JSON_SKIP_LIBRARY_VERSION_CHECK </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_skip_unsupported_compiler_check/ class=md-nav__link> <span class=md-ellipsis> JSON_SKIP_UNSUPPORTED_COMPILER_CHECK </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_use_global_udls/ class=md-nav__link> <span class=md-ellipsis> JSON_USE_GLOBAL_UDLS </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_use_implicit_conversions/ class=md-nav__link> <span class=md-ellipsis> JSON_USE_IMPLICIT_CONVERSIONS </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_use_legacy_discarded_value_comparison/ class=md-nav__link> <span class=md-ellipsis> JSON_USE_LEGACY_DISCARDED_VALUE_COMPARISON </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_define_derived_type/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_ONLY_SERIALIZE, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_define_type_intrusive/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_TYPE_INTRUSIVE, NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_TYPE_INTRUSIVE_ONLY_SERIALIZE </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_define_type_non_intrusive/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_define_type_with_names/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_TYPE_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_namespace/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_NAMESPACE </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_namespace_begin/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_NAMESPACE_BEGIN, NLOHMANN_JSON_NAMESPACE_END </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_namespace_no_version/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_NAMESPACE_NO_VERSION </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_serialize_enum/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_SERIALIZE_ENUM </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_serialize_enum_strict/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_SERIALIZE_ENUM_STRICT </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_version_major/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_VERSION_MAJOR, NLOHMANN_JSON_VERSION_MINOR, NLOHMANN_JSON_VERSION_PATCH </span> </a> </li> </ul> </nav> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_5> <div class="md-nav__link md-nav__container"> <a href=../../../community/ class="md-nav__link "> <span class=md-ellipsis> Community </span> </a> <label class="md-nav__link " for=__nav_5 id=__nav_5_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_5_label aria-expanded=false> <label class=md-nav__title for=__nav_5> <span class="md-nav__icon md-icon"></span> Community </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../community/code_of_conduct/ class=md-nav__link> <span class=md-ellipsis> Code of Conduct </span> </a> </li> <li class=md-nav__item> <a href=../../../community/contribution_guidelines/ class=md-nav__link> <span class=md-ellipsis> Contribution Guidelines </span> </a> </li> <li class=md-nav__item> <a href=../../../community/quality_assurance/ class=md-nav__link> <span class=md-ellipsis> Quality assurance </span> </a> </li> <li class=md-nav__item> <a href=../../../community/governance/ class=md-nav__link> <span class=md-ellipsis> Governance </span> </a> </li> <li class=md-nav__item> <a href=../../../community/security_policy/ class=md-nav__link> <span class=md-ellipsis> Security Policy </span> </a> </li> </ul> </nav> </li> </ul> </nav> </div> </div> </div> <div class="md-sidebar md-sidebar--secondary" data-md-component=sidebar data-md-type=toc> <div class=md-sidebar__scrollwrap> <div class=md-sidebar__inner> <nav class="md-nav md-nav--secondary" aria-label="Table of contents"> <label class=md-nav__title for=__toc> <span class="md-nav__icon md-icon"></span> Table of contents </label> <ul class=md-nav__list data-md-component=toc data-md-scrollfix> <li class=md-nav__item> <a href=#template-parameters class=md-nav__link> <span class=md-ellipsis> Template parameters </span> </a> </li> <li class=md-nav__item> <a href=#parameters class=md-nav__link> <span class=md-ellipsis> Parameters </span> </a> </li> <li class=md-nav__item> <a href=#return-value class=md-nav__link> <span class=md-ellipsis> Return value </span> </a> </li> <li class=md-nav__item> <a href=#exception-safety class=md-nav__link> <span class=md-ellipsis> Exception safety </span> </a> </li> <li class=md-nav__item> <a href=#complexity class=md-nav__link> <span class=md-ellipsis> Complexity </span> </a> </li> <li class=md-nav__item> <a href=#notes class=md-nav__link> <span class=md-ellipsis> Notes </span> </a> </li> <li class=md-nav__item> <a href=#examples class=md-nav__link> <span class=md-ellipsis> Examples </span> </a> </li> <li class=md-nav__item> <a href=#see-also class=md-nav__link> <span class=md-ellipsis> See also </span> </a> </li> <li class=md-nav__item> <a href=#version-history class=md-nav__link> <span class=md-ellipsis> Version history </span> </a> </li> </ul> </nav> </div> </div> </div> <div class=md-content data-md-component=content> <article class="md-content__inner md-typeset"> <a href="https://github.com/nlohmann/json/edit/develop/docs/mkdocs/docs/api/basic_json/count.md" title="Edit this page" class="md-content__button md-icon" rel="edit"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M10 20H6V4h7v5h5v3.1l2-2V8l-6-6H6c-1.1 0-2 .9-2 2v16c0 1.1.9 2 2 2h4zm10.2-7c.1 0 .3.1.4.2l1.3 1.3c.2.2.2.6 0 .8l-1 1-2.1-2.1 1-1c.1-.1.2-.2.4-.2m0 3.9L14.1 23H12v-2.1l6.1-6.1z"/></svg> </a> <a href="https://github.com/nlohmann/json/raw/develop/docs/mkdocs/docs/api/basic_json/count.md" title="View source of this page" class="md-content__button md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M17 18c.56 0 1 .44 1 1s-.44 1-1 1-1-.44-1-1 .44-1 1-1m0-3c-2.73 0-5.06 1.66-6 4 .94 2.34 3.27 4 6 4s5.06-1.66 6-4c-.94-2.34-3.27-4-6-4m0 6.5a2.5 2.5 0 0 1-2.5-2.5 2.5 2.5 0 0 1 2.5-2.5 2.5 2.5 0 0 1 2.5 2.5 2.5 2.5 0 0 1-2.5 2.5M9.27 20H6V4h7v5h5v4.07c.7.08 1.36.25 2 .49V8l-6-6H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h4.5a8.2 8.2 0 0 1-1.23-2"/></svg> </a> <h1 id=nlohmannbasic_jsoncount><small>nlohmann::basic_json::</small>count<a class=headerlink href=#nlohmannbasic_jsoncount title="Permanent link">&para;</a></h1> <div class=highlight><pre><span></span><code><span class=c1>// (1)</span>
 <span class=n>size_type</span><span class=w> </span><span class=nf>count</span><span class=p>(</span><span class=k>const</span><span class=w> </span><span class=k>typename</span><span class=w> </span><span class=nc>object_t</span><span class=o>::</span><span class=n>key_type</span><span class=o>&amp;</span><span class=w> </span><span class=n>key</span><span class=p>)</span><span class=w> </span><span class=k>const</span><span class=p>;</span>
 
 <span class=c1>// (2)</span>
@@ -46,4 +46,4 @@
 <span class=p>}</span>
 </code></pre></div> <p>Output:</p> <div class=highlight><pre><span></span><code><span class=kc>nu</span><span class=err>mber</span><span class=w> </span><span class=err>o</span><span class=kc>f</span><span class=w> </span><span class=err>eleme</span><span class=kc>nts</span><span class=w> </span><span class=err>wi</span><span class=kc>t</span><span class=err>h</span><span class=w> </span><span class=err>key</span><span class=w> </span><span class=nt>&quot;two&quot;</span><span class=p>:</span><span class=w> </span><span class=mi>1</span>
 <span class=kc>nu</span><span class=err>mber</span><span class=w> </span><span class=err>o</span><span class=kc>f</span><span class=w> </span><span class=err>eleme</span><span class=kc>nts</span><span class=w> </span><span class=err>wi</span><span class=kc>t</span><span class=err>h</span><span class=w> </span><span class=err>key</span><span class=w> </span><span class=nt>&quot;three&quot;</span><span class=p>:</span><span class=w> </span><span class=mi>0</span>
-</code></pre></div> </details> <h2 id=version-history>Version history<a class=headerlink href=#version-history title="Permanent link">&para;</a></h2> <ol> <li>Added in version 3.11.0.</li> <li>Added in version 1.0.0. Changed parameter <code>key</code> type to <code>KeyType&amp;&amp;</code> in version 3.11.0.</li> </ol> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 23, 2026 11:16:18 UTC">June 23, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
+</code></pre></div> </details> <h2 id=see-also>See also<a class=headerlink href=#see-also title="Permanent link">&para;</a></h2> <ul> <li><a href=../find/ >find</a> find a value in an object</li> <li><a href=../contains/ >contains</a> checks whether a key exists</li> </ul> <h2 id=version-history>Version history<a class=headerlink href=#version-history title="Permanent link">&para;</a></h2> <ol> <li>Added in version 3.11.0.</li> <li>Added in version 1.0.0. Changed parameter <code>key</code> type to <code>KeyType&amp;&amp;</code> in version 3.11.0.</li> </ol> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 29, 2026 20:15:18 UTC">June 29, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
diff --git a/api/basic_json/crbegin/index.html b/api/basic_json/crbegin/index.html
index a89b562..54c5870 100644
--- a/api/basic_json/crbegin/index.html
+++ b/api/basic_json/crbegin/index.html
@@ -1,5 +1,5 @@
 <!doctype html><html lang=en class=no-js> <head><meta charset=utf-8><meta name=viewport content="width=device-width,initial-scale=1"><meta name=author content="Niels Lohmann"><link href="https://json.nlohmann.me/api/basic_json/crbegin/" rel="canonical"><link href=../count/ rel=prev><link href=../crend/ rel=next><link rel=icon href=../../../assets/images/favicon.png><meta name=generator content="mkdocs-1.6.1, mkdocs-material-9.7.6"><title>crbegin - JSON for Modern C++</title><link rel=stylesheet href=../../../assets/stylesheets/main.484c7ddc.min.css><link rel=stylesheet href=../../../assets/stylesheets/palette.ab4e12ef.min.css><link rel="stylesheet" href="../../../assets/external/fonts.googleapis.com/css.61a430c9.css"><style>:root{--md-text-font:"Roboto";--md-code-font:"JetBrains Mono"}</style><link rel=stylesheet href=../../../css/custom.css><script>__md_scope=new URL("../../..",location),__md_hash=e=>[...e].reduce(((e,_)=>(e<<5)-e+_.charCodeAt(0)),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script></head> <body dir=ltr data-md-color-scheme=default data-md-color-primary=indigo data-md-color-accent=indigo> <input class=md-toggle data-md-toggle=drawer type=checkbox id=__drawer autocomplete=off> <input class=md-toggle data-md-toggle=search type=checkbox id=__search autocomplete=off> <label class=md-overlay for=__drawer></label> <div data-md-component=skip> <a href=#nlohmannbasic_jsoncrbegin class=md-skip> Skip to content </a> </div> <div data-md-component=announce> </div> <header class=md-header data-md-component=header> <nav class="md-header__inner md-grid" aria-label=Header> <a href=../../.. title="JSON for Modern C++" class="md-header__button md-logo" aria-label="JSON for Modern C++" data-md-component=logo> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54"/></svg> </a> <label class="md-header__button md-icon" for=__drawer> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M3 6h18v2H3zm0 5h18v2H3zm0 5h18v2H3z"/></svg> </label> <div class=md-header__title data-md-component=header-title> <div class=md-header__ellipsis> <div class=md-header__topic> <span class=md-ellipsis> JSON for Modern C++ </span> </div> <div class=md-header__topic data-md-component=header-topic> <span class=md-ellipsis> crbegin </span> </div> </div> </div> <form class=md-header__option data-md-component=palette> <input class=md-option data-md-color-media="(prefers-color-scheme: light)" data-md-color-scheme=default data-md-color-primary=indigo data-md-color-accent=indigo aria-label="Switch to dark mode" type=radio name=__palette id=__palette_0> <label class="md-header__button md-icon" title="Switch to dark mode" for=__palette_1 hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a4 4 0 0 0-4 4 4 4 0 0 0 4 4 4 4 0 0 0 4-4 4 4 0 0 0-4-4m0 10a6 6 0 0 1-6-6 6 6 0 0 1 6-6 6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12z"/></svg> </label> <input class=md-option data-md-color-media="(prefers-color-scheme: dark)" data-md-color-scheme=slate data-md-color-primary=indigo data-md-color-accent=indigo aria-label="Switch to light mode" type=radio name=__palette id=__palette_1> <label class="md-header__button md-icon" title="Switch to light mode" for=__palette_0 hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 18c-.89 0-1.74-.2-2.5-.55C11.56 16.5 13 14.42 13 12s-1.44-4.5-3.5-5.45C10.26 6.2 11.11 6 12 6a6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12z"/></svg> </label> </form> <script>var palette=__md_get("__palette");if(palette&&palette.color){if("(prefers-color-scheme)"===palette.color.media){var media=matchMedia("(prefers-color-scheme: light)"),input=document.querySelector(media.matches?"[data-md-color-media='(prefers-color-scheme: light)']":"[data-md-color-media='(prefers-color-scheme: dark)']");palette.color.media=input.getAttribute("data-md-color-media"),palette.color.scheme=input.getAttribute("data-md-color-scheme"),palette.color.primary=input.getAttribute("data-md-color-primary"),palette.color.accent=input.getAttribute("data-md-color-accent")}for(var[key,value]of Object.entries(palette.color))document.body.setAttribute("data-md-color-"+key,value)}</script> <label class="md-header__button md-icon" for=__search> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg> </label> <div class=md-search data-md-component=search role=dialog> <label class=md-search__overlay for=__search></label> <div class=md-search__inner role=search> <form class=md-search__form name=search> <input type=text class=md-search__input name=query aria-label=Search placeholder=Search autocapitalize=off autocorrect=off autocomplete=off spellcheck=false data-md-component=search-query required> <label class="md-search__icon md-icon" for=__search> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11z"/></svg> </label> <nav class=md-search__options aria-label=Search> <button type=reset class="md-search__icon md-icon" title=Clear aria-label=Clear tabindex=-1> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z"/></svg> </button> </nav> </form> <div class=md-search__output> <div class=md-search__scrollwrap tabindex=0 data-md-scrollfix> <div class=md-search-result data-md-component=search-result> <div class=md-search-result__meta> Initializing search </div> <ol class=md-search-result__list role=presentation></ol> </div> </div> </div> </div> </div> <div class=md-header__source> <a href="https://github.com/nlohmann/json" title="Go to repository" class="md-source" data-md-component="source"> <div class="md-source__icon md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </div> <div class=md-source__repository> nlohmann/json </div> </a> </div> </nav> </header> <div class=md-container data-md-component=container> <nav class=md-tabs aria-label=Tabs data-md-component=tabs> <div class=md-grid> <ul class=md-tabs__list> <li class=md-tabs__item> <a href=../../.. class=md-tabs__link> Home </a> </li> <li class=md-tabs__item> <a href=../../../features/arbitrary_types/ class=md-tabs__link> Features </a> </li> <li class=md-tabs__item> <a href=../../../integration/ class=md-tabs__link> Integration </a> </li> <li class="md-tabs__item md-tabs__item--active"> <a href=../ class=md-tabs__link> API Documentation </a> </li> <li class=md-tabs__item> <a href=../../../community/ class=md-tabs__link> Community </a> </li> </ul> </div> </nav> <main class=md-main data-md-component=main> <div class="md-main__inner md-grid"> <div class="md-sidebar md-sidebar--primary" data-md-component=sidebar data-md-type=navigation> <div class=md-sidebar__scrollwrap> <div class=md-sidebar__inner> <nav class="md-nav md-nav--primary md-nav--lifted" aria-label=Navigation data-md-level=0> <label class=md-nav__title for=__drawer> <a href=../../.. title="JSON for Modern C++" class="md-nav__button md-logo" aria-label="JSON for Modern C++" data-md-component=logo> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54"/></svg> </a> JSON for Modern C++ </label> <div class=md-nav__source> <a href="https://github.com/nlohmann/json" title="Go to repository" class="md-source" data-md-component="source"> <div class="md-source__icon md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </div> <div class=md-source__repository> nlohmann/json </div> </a> </div> <ul class=md-nav__list data-md-scrollfix> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_1> <div class="md-nav__link md-nav__container"> <a href=../../.. class="md-nav__link "> <span class=md-ellipsis> Home </span> </a> <label class="md-nav__link " for=__nav_1 id=__nav_1_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_1_label aria-expanded=false> <label class=md-nav__title for=__nav_1> <span class="md-nav__icon md-icon"></span> Home </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../home/license/ class=md-nav__link> <span class=md-ellipsis> License </span> </a> </li> <li class=md-nav__item> <a href=../../../home/faq/ class=md-nav__link> <span class=md-ellipsis> FAQ </span> </a> </li> <li class=md-nav__item> <a href=../../../home/exceptions/ class=md-nav__link> <span class=md-ellipsis> Exceptions </span> </a> </li> <li class=md-nav__item> <a href=../../../home/releases/ class=md-nav__link> <span class=md-ellipsis> Releases </span> </a> </li> <li class=md-nav__item> <a href=../../../home/design_goals/ class=md-nav__link> <span class=md-ellipsis> Design goals </span> </a> </li> <li class=md-nav__item> <a href=../../../home/architecture/ class=md-nav__link> <span class=md-ellipsis> Architecture </span> </a> </li> <li class=md-nav__item> <a href=../../../home/customers/ class=md-nav__link> <span class=md-ellipsis> Customers </span> </a> </li> <li class=md-nav__item> <a href=../../../home/sponsors/ class=md-nav__link> <span class=md-ellipsis> Sponsors </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2> <label class=md-nav__link for=__nav_2 id=__nav_2_label tabindex=0> <span class=md-ellipsis> Features </span> <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_2_label aria-expanded=false> <label class=md-nav__title for=__nav_2> <span class="md-nav__icon md-icon"></span> Features </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/arbitrary_types/ class=md-nav__link> <span class=md-ellipsis> Arbitrary Type Conversions </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_2> <div class="md-nav__link md-nav__container"> <a href=../../../features/binary_formats/ class="md-nav__link "> <span class=md-ellipsis> Binary Formats </span> </a> <label class="md-nav__link " for=__nav_2_2 id=__nav_2_2_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_2_label aria-expanded=false> <label class=md-nav__title for=__nav_2_2> <span class="md-nav__icon md-icon"></span> Binary Formats </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/binary_formats/bjdata/ class=md-nav__link> <span class=md-ellipsis> BJData </span> </a> </li> <li class=md-nav__item> <a href=../../../features/binary_formats/bson/ class=md-nav__link> <span class=md-ellipsis> BSON </span> </a> </li> <li class=md-nav__item> <a href=../../../features/binary_formats/cbor/ class=md-nav__link> <span class=md-ellipsis> CBOR </span> </a> </li> <li class=md-nav__item> <a href=../../../features/binary_formats/messagepack/ class=md-nav__link> <span class=md-ellipsis> MessagePack </span> </a> </li> <li class=md-nav__item> <a href=../../../features/binary_formats/ubjson/ class=md-nav__link> <span class=md-ellipsis> UBJSON </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../../features/binary_values/ class=md-nav__link> <span class=md-ellipsis> Binary Values </span> </a> </li> <li class=md-nav__item> <a href=../../../features/comments/ class=md-nav__link> <span class=md-ellipsis> Comments </span> </a> </li> <li class=md-nav__item> <a href=../../../features/trailing_commas/ class=md-nav__link> <span class=md-ellipsis> Trailing Commas </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_6> <div class="md-nav__link md-nav__container"> <a href=../../../features/element_access/ class="md-nav__link "> <span class=md-ellipsis> Element Access </span> </a> <label class="md-nav__link " for=__nav_2_6 id=__nav_2_6_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_6_label aria-expanded=false> <label class=md-nav__title for=__nav_2_6> <span class="md-nav__icon md-icon"></span> Element Access </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/element_access/unchecked_access/ class=md-nav__link> <span class=md-ellipsis> Unchecked access: operator[] </span> </a> </li> <li class=md-nav__item> <a href=../../../features/element_access/checked_access/ class=md-nav__link> <span class=md-ellipsis> Checked access: at </span> </a> </li> <li class=md-nav__item> <a href=../../../features/element_access/default_value/ class=md-nav__link> <span class=md-ellipsis> Access with default value: value </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../../features/iterators/ class=md-nav__link> <span class=md-ellipsis> Iterators </span> </a> </li> <li class=md-nav__item> <a href=../../../features/json_pointer/ class=md-nav__link> <span class=md-ellipsis> JSON Pointer </span> </a> </li> <li class=md-nav__item> <a href=../../../features/json_patch/ class=md-nav__link> <span class=md-ellipsis> JSON Patch and Diff </span> </a> </li> <li class=md-nav__item> <a href=../../../features/merge_patch/ class=md-nav__link> <span class=md-ellipsis> JSON Merge Patch </span> </a> </li> <li class=md-nav__item> <a href=../../../features/modules/ class=md-nav__link> <span class=md-ellipsis> Modules </span> </a> </li> <li class=md-nav__item> <a href=../../../features/namespace/ class=md-nav__link> <span class=md-ellipsis> nlohmann Namespace </span> </a> </li> <li class=md-nav__item> <a href=../../../features/object_order/ class=md-nav__link> <span class=md-ellipsis> Object Order </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_14> <div class="md-nav__link md-nav__container"> <a href=../../../features/parsing/ class="md-nav__link "> <span class=md-ellipsis> Parsing </span> </a> <label class="md-nav__link " for=__nav_2_14 id=__nav_2_14_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_14_label aria-expanded=false> <label class=md-nav__title for=__nav_2_14> <span class="md-nav__icon md-icon"></span> Parsing </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/parsing/json_lines/ class=md-nav__link> <span class=md-ellipsis> JSON Lines </span> </a> </li> <li class=md-nav__item> <a href=../../../features/parsing/parse_exceptions/ class=md-nav__link> <span class=md-ellipsis> Parsing and Exceptions </span> </a> </li> <li class=md-nav__item> <a href=../../../features/parsing/parser_callbacks/ class=md-nav__link> <span class=md-ellipsis> Parser Callbacks </span> </a> </li> <li class=md-nav__item> <a href=../../../features/parsing/sax_interface/ class=md-nav__link> <span class=md-ellipsis> SAX Interface </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../../features/assertions/ class=md-nav__link> <span class=md-ellipsis> Runtime Assertions </span> </a> </li> <li class=md-nav__item> <a href=../../../features/enum_conversion/ class=md-nav__link> <span class=md-ellipsis> Specializing enum conversion </span> </a> </li> <li class=md-nav__item> <a href=../../../features/macros/ class=md-nav__link> <span class=md-ellipsis> Supported Macros </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_18> <div class="md-nav__link md-nav__container"> <a href=../../../features/types/ class="md-nav__link "> <span class=md-ellipsis> Types </span> </a> <label class="md-nav__link " for=__nav_2_18 id=__nav_2_18_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_18_label aria-expanded=false> <label class=md-nav__title for=__nav_2_18> <span class="md-nav__icon md-icon"></span> Types </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/types/number_handling/ class=md-nav__link> <span class=md-ellipsis> Number Handling </span> </a> </li> </ul> </nav> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_3> <div class="md-nav__link md-nav__container"> <a href=../../../integration/ class="md-nav__link "> <span class=md-ellipsis> Integration </span> </a> <label class="md-nav__link " for=__nav_3 id=__nav_3_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_3_label aria-expanded=false> <label class=md-nav__title for=__nav_3> <span class="md-nav__icon md-icon"></span> Integration </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../integration/migration_guide/ class=md-nav__link> <span class=md-ellipsis> Migration Guide </span> </a> </li> <li class=md-nav__item> <a href=../../../integration/cmake/ class=md-nav__link> <span class=md-ellipsis> CMake </span> </a> </li> <li class=md-nav__item> <a href=../../../integration/package_managers/ class=md-nav__link> <span class=md-ellipsis> Package Managers </span> </a> </li> <li class=md-nav__item> <a href=../../../integration/pkg-config/ class=md-nav__link> <span class=md-ellipsis> Pkg-config </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--active md-nav__item--section md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4 checked> <label class=md-nav__link for=__nav_4 id=__nav_4_label tabindex> <span class=md-ellipsis> API Documentation </span> <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_4_label aria-expanded=true> <label class=md-nav__title for=__nav_4> <span class="md-nav__icon md-icon"></span> API Documentation </label> <ul class=md-nav__list data-md-scrollfix> <li class="md-nav__item md-nav__item--active md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_1 checked> <div class="md-nav__link md-nav__container"> <a href=../ class="md-nav__link "> <span class=md-ellipsis> basic_json </span> </a> <label class="md-nav__link " for=__nav_4_1 id=__nav_4_1_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_1_label aria-expanded=true> <label class=md-nav__title for=__nav_4_1> <span class="md-nav__icon md-icon"></span> basic_json </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../basic_json/ class=md-nav__link> <span class=md-ellipsis> (Constructor) </span> </a> </li> <li class=md-nav__item> <a href=../~basic_json/ class=md-nav__link> <span class=md-ellipsis> (Destructor) </span> </a> </li> <li class=md-nav__item> <a href=../accept/ class=md-nav__link> <span class=md-ellipsis> accept </span> </a> </li> <li class=md-nav__item> <a href=../array/ class=md-nav__link> <span class=md-ellipsis> array </span> </a> </li> <li class=md-nav__item> <a href=../array_t/ class=md-nav__link> <span class=md-ellipsis> array_t </span> </a> </li> <li class=md-nav__item> <a href=../at/ class=md-nav__link> <span class=md-ellipsis> at </span> </a> </li> <li class=md-nav__item> <a href=../back/ class=md-nav__link> <span class=md-ellipsis> back </span> </a> </li> <li class=md-nav__item> <a href=../begin/ class=md-nav__link> <span class=md-ellipsis> begin </span> </a> </li> <li class=md-nav__item> <a href=../binary/ class=md-nav__link> <span class=md-ellipsis> binary </span> </a> </li> <li class=md-nav__item> <a href=../binary_t/ class=md-nav__link> <span class=md-ellipsis> binary_t </span> </a> </li> <li class=md-nav__item> <a href=../boolean_t/ class=md-nav__link> <span class=md-ellipsis> boolean_t </span> </a> </li> <li class=md-nav__item> <a href=../cbegin/ class=md-nav__link> <span class=md-ellipsis> cbegin </span> </a> </li> <li class=md-nav__item> <a href=../cbor_tag_handler_t/ class=md-nav__link> <span class=md-ellipsis> cbor_tag_handler_t </span> </a> </li> <li class=md-nav__item> <a href=../cend/ class=md-nav__link> <span class=md-ellipsis> cend </span> </a> </li> <li class=md-nav__item> <a href=../clear/ class=md-nav__link> <span class=md-ellipsis> clear </span> </a> </li> <li class=md-nav__item> <a href=../contains/ class=md-nav__link> <span class=md-ellipsis> contains </span> </a> </li> <li class=md-nav__item> <a href=../count/ class=md-nav__link> <span class=md-ellipsis> count </span> </a> </li> <li class="md-nav__item md-nav__item--active"> <input class="md-nav__toggle md-toggle" type=checkbox id=__toc> <label class="md-nav__link md-nav__link--active" for=__toc> <span class=md-ellipsis> crbegin </span> <span class="md-nav__icon md-icon"></span> </label> <a href=./ class="md-nav__link md-nav__link--active"> <span class=md-ellipsis> crbegin </span> </a> <nav class="md-nav md-nav--secondary" aria-label="Table of contents"> <label class=md-nav__title for=__toc> <span class="md-nav__icon md-icon"></span> Table of contents </label> <ul class=md-nav__list data-md-component=toc data-md-scrollfix> <li class=md-nav__item> <a href=#return-value class=md-nav__link> <span class=md-ellipsis> Return value </span> </a> </li> <li class=md-nav__item> <a href=#exception-safety class=md-nav__link> <span class=md-ellipsis> Exception safety </span> </a> </li> <li class=md-nav__item> <a href=#complexity class=md-nav__link> <span class=md-ellipsis> Complexity </span> </a> </li> <li class=md-nav__item> <a href=#examples class=md-nav__link> <span class=md-ellipsis> Examples </span> </a> </li> <li class=md-nav__item> <a href=#version-history class=md-nav__link> <span class=md-ellipsis> Version history </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../crend/ class=md-nav__link> <span class=md-ellipsis> crend </span> </a> </li> <li class=md-nav__item> <a href=../default_object_comparator_t/ class=md-nav__link> <span class=md-ellipsis> default_object_comparator_t </span> </a> </li> <li class=md-nav__item> <a href=../diff/ class=md-nav__link> <span class=md-ellipsis> diff </span> </a> </li> <li class=md-nav__item> <a href=../dump/ class=md-nav__link> <span class=md-ellipsis> dump </span> </a> </li> <li class=md-nav__item> <a href=../emplace/ class=md-nav__link> <span class=md-ellipsis> emplace </span> </a> </li> <li class=md-nav__item> <a href=../emplace_back/ class=md-nav__link> <span class=md-ellipsis> emplace_back </span> </a> </li> <li class=md-nav__item> <a href=../empty/ class=md-nav__link> <span class=md-ellipsis> empty </span> </a> </li> <li class=md-nav__item> <a href=../end/ class=md-nav__link> <span class=md-ellipsis> end </span> </a> </li> <li class=md-nav__item> <a href=../end_pos/ class=md-nav__link> <span class=md-ellipsis> end_pos </span> </a> </li> <li class=md-nav__item> <a href=../erase/ class=md-nav__link> <span class=md-ellipsis> erase </span> </a> </li> <li class=md-nav__item> <a href=../error_handler_t/ class=md-nav__link> <span class=md-ellipsis> error_handler_t </span> </a> </li> <li class=md-nav__item> <a href=../exception/ class=md-nav__link> <span class=md-ellipsis> exception </span> </a> </li> <li class=md-nav__item> <a href=../find/ class=md-nav__link> <span class=md-ellipsis> find </span> </a> </li> <li class=md-nav__item> <a href=../flatten/ class=md-nav__link> <span class=md-ellipsis> flatten </span> </a> </li> <li class=md-nav__item> <a href=../from_bjdata/ class=md-nav__link> <span class=md-ellipsis> from_bjdata </span> </a> </li> <li class=md-nav__item> <a href=../from_bson/ class=md-nav__link> <span class=md-ellipsis> from_bson </span> </a> </li> <li class=md-nav__item> <a href=../from_cbor/ class=md-nav__link> <span class=md-ellipsis> from_cbor </span> </a> </li> <li class=md-nav__item> <a href=../from_msgpack/ class=md-nav__link> <span class=md-ellipsis> from_msgpack </span> </a> </li> <li class=md-nav__item> <a href=../from_ubjson/ class=md-nav__link> <span class=md-ellipsis> from_ubjson </span> </a> </li> <li class=md-nav__item> <a href=../front/ class=md-nav__link> <span class=md-ellipsis> front </span> </a> </li> <li class=md-nav__item> <a href=../get/ class=md-nav__link> <span class=md-ellipsis> get </span> </a> </li> <li class=md-nav__item> <a href=../get_allocator/ class=md-nav__link> <span class=md-ellipsis> get_allocator </span> </a> </li> <li class=md-nav__item> <a href=../get_binary/ class=md-nav__link> <span class=md-ellipsis> get_binary </span> </a> </li> <li class=md-nav__item> <a href=../get_ptr/ class=md-nav__link> <span class=md-ellipsis> get_ptr </span> </a> </li> <li class=md-nav__item> <a href=../get_ref/ class=md-nav__link> <span class=md-ellipsis> get_ref </span> </a> </li> <li class=md-nav__item> <a href=../get_to/ class=md-nav__link> <span class=md-ellipsis> get_to </span> </a> </li> <li class=md-nav__item> <a href=../std_hash/ class=md-nav__link> <span class=md-ellipsis> std::hash&lt;basic_json&gt; </span> </a> </li> <li class=md-nav__item> <a href=../input_format_t/ class=md-nav__link> <span class=md-ellipsis> input_format_t </span> </a> </li> <li class=md-nav__item> <a href=../insert/ class=md-nav__link> <span class=md-ellipsis> insert </span> </a> </li> <li class=md-nav__item> <a href=../invalid_iterator/ class=md-nav__link> <span class=md-ellipsis> invalid_iterator </span> </a> </li> <li class=md-nav__item> <a href=../is_array/ class=md-nav__link> <span class=md-ellipsis> is_array </span> </a> </li> <li class=md-nav__item> <a href=../is_binary/ class=md-nav__link> <span class=md-ellipsis> is_binary </span> </a> </li> <li class=md-nav__item> <a href=../is_boolean/ class=md-nav__link> <span class=md-ellipsis> is_boolean </span> </a> </li> <li class=md-nav__item> <a href=../is_discarded/ class=md-nav__link> <span class=md-ellipsis> is_discarded </span> </a> </li> <li class=md-nav__item> <a href=../is_null/ class=md-nav__link> <span class=md-ellipsis> is_null </span> </a> </li> <li class=md-nav__item> <a href=../is_number/ class=md-nav__link> <span class=md-ellipsis> is_number </span> </a> </li> <li class=md-nav__item> <a href=../is_number_float/ class=md-nav__link> <span class=md-ellipsis> is_number_float </span> </a> </li> <li class=md-nav__item> <a href=../is_number_integer/ class=md-nav__link> <span class=md-ellipsis> is_number_integer </span> </a> </li> <li class=md-nav__item> <a href=../is_number_unsigned/ class=md-nav__link> <span class=md-ellipsis> is_number_unsigned </span> </a> </li> <li class=md-nav__item> <a href=../is_object/ class=md-nav__link> <span class=md-ellipsis> is_object </span> </a> </li> <li class=md-nav__item> <a href=../is_primitive/ class=md-nav__link> <span class=md-ellipsis> is_primitive </span> </a> </li> <li class=md-nav__item> <a href=../is_string/ class=md-nav__link> <span class=md-ellipsis> is_string </span> </a> </li> <li class=md-nav__item> <a href=../is_structured/ class=md-nav__link> <span class=md-ellipsis> is_structured </span> </a> </li> <li class=md-nav__item> <a href=../items/ class=md-nav__link> <span class=md-ellipsis> items </span> </a> </li> <li class=md-nav__item> <a href=../json_base_class_t/ class=md-nav__link> <span class=md-ellipsis> json_base_class_t </span> </a> </li> <li class=md-nav__item> <a href=../json_serializer/ class=md-nav__link> <span class=md-ellipsis> json_serializer </span> </a> </li> <li class=md-nav__item> <a href=../max_size/ class=md-nav__link> <span class=md-ellipsis> max_size </span> </a> </li> <li class=md-nav__item> <a href=../meta/ class=md-nav__link> <span class=md-ellipsis> meta </span> </a> </li> <li class=md-nav__item> <a href=../merge_patch/ class=md-nav__link> <span class=md-ellipsis> merge_patch </span> </a> </li> <li class=md-nav__item> <a href=../number_float_t/ class=md-nav__link> <span class=md-ellipsis> number_float_t </span> </a> </li> <li class=md-nav__item> <a href=../number_integer_t/ class=md-nav__link> <span class=md-ellipsis> number_integer_t </span> </a> </li> <li class=md-nav__item> <a href=../number_unsigned_t/ class=md-nav__link> <span class=md-ellipsis> number_unsigned_t </span> </a> </li> <li class=md-nav__item> <a href=../object/ class=md-nav__link> <span class=md-ellipsis> object </span> </a> </li> <li class=md-nav__item> <a href=../object_comparator_t/ class=md-nav__link> <span class=md-ellipsis> object_comparator_t </span> </a> </li> <li class=md-nav__item> <a href=../object_t/ class=md-nav__link> <span class=md-ellipsis> object_t </span> </a> </li> <li class=md-nav__item> <a href=../operator_ValueType/ class=md-nav__link> <span class=md-ellipsis> operator ValueType </span> </a> </li> <li class=md-nav__item> <a href=../operator_value_t/ class=md-nav__link> <span class=md-ellipsis> operator value_t </span> </a> </li> <li class=md-nav__item> <a href=../operator%5B%5D/ class=md-nav__link> <span class=md-ellipsis> operator[] </span> </a> </li> <li class=md-nav__item> <a href=../operator%3D/ class=md-nav__link> <span class=md-ellipsis> operator= </span> </a> </li> <li class=md-nav__item> <a href=../operator%2B%3D/ class=md-nav__link> <span class=md-ellipsis> operator+= </span> </a> </li> <li class=md-nav__item> <a href=../operator_eq/ class=md-nav__link> <span class=md-ellipsis> operator== </span> </a> </li> <li class=md-nav__item> <a href=../operator_ne/ class=md-nav__link> <span class=md-ellipsis> operator!= </span> </a> </li> <li class=md-nav__item> <a href=../operator_lt/ class=md-nav__link> <span class=md-ellipsis> operator< </span> </a> </li> <li class=md-nav__item> <a href=../operator_gt/ class=md-nav__link> <span class=md-ellipsis> operator> </span> </a> </li> <li class=md-nav__item> <a href=../operator_le/ class=md-nav__link> <span class=md-ellipsis> operator<= </span> </a> </li> <li class=md-nav__item> <a href=../operator_ge/ class=md-nav__link> <span class=md-ellipsis> operator>= </span> </a> </li> <li class=md-nav__item> <a href=../operator_spaceship/ class=md-nav__link> <span class=md-ellipsis> operator<=> </span> </a> </li> <li class=md-nav__item> <a href=../out_of_range/ class=md-nav__link> <span class=md-ellipsis> out_of_range </span> </a> </li> <li class=md-nav__item> <a href=../other_error/ class=md-nav__link> <span class=md-ellipsis> other_error </span> </a> </li> <li class=md-nav__item> <a href=../parse/ class=md-nav__link> <span class=md-ellipsis> parse </span> </a> </li> <li class=md-nav__item> <a href=../parse_error/ class=md-nav__link> <span class=md-ellipsis> parse_error </span> </a> </li> <li class=md-nav__item> <a href=../parse_event_t/ class=md-nav__link> <span class=md-ellipsis> parse_event_t </span> </a> </li> <li class=md-nav__item> <a href=../parser_callback_t/ class=md-nav__link> <span class=md-ellipsis> parser_callback_t </span> </a> </li> <li class=md-nav__item> <a href=../patch/ class=md-nav__link> <span class=md-ellipsis> patch </span> </a> </li> <li class=md-nav__item> <a href=../patch_inplace/ class=md-nav__link> <span class=md-ellipsis> patch_inplace </span> </a> </li> <li class=md-nav__item> <a href=../push_back/ class=md-nav__link> <span class=md-ellipsis> push_back </span> </a> </li> <li class=md-nav__item> <a href=../rbegin/ class=md-nav__link> <span class=md-ellipsis> rbegin </span> </a> </li> <li class=md-nav__item> <a href=../rend/ class=md-nav__link> <span class=md-ellipsis> rend </span> </a> </li> <li class=md-nav__item> <a href=../sax_parse/ class=md-nav__link> <span class=md-ellipsis> sax_parse </span> </a> </li> <li class=md-nav__item> <a href=../size/ class=md-nav__link> <span class=md-ellipsis> size </span> </a> </li> <li class=md-nav__item> <a href=../start_pos/ class=md-nav__link> <span class=md-ellipsis> start_pos </span> </a> </li> <li class=md-nav__item> <a href=../string_t/ class=md-nav__link> <span class=md-ellipsis> string_t </span> </a> </li> <li class=md-nav__item> <a href=../swap/ class=md-nav__link> <span class=md-ellipsis> swap </span> </a> </li> <li class=md-nav__item> <a href=../std_swap/ class=md-nav__link> <span class=md-ellipsis> std::swap&lt;basic_json&gt; </span> </a> </li> <li class=md-nav__item> <a href=../to_bjdata/ class=md-nav__link> <span class=md-ellipsis> to_bjdata </span> </a> </li> <li class=md-nav__item> <a href=../to_bson/ class=md-nav__link> <span class=md-ellipsis> to_bson </span> </a> </li> <li class=md-nav__item> <a href=../to_cbor/ class=md-nav__link> <span class=md-ellipsis> to_cbor </span> </a> </li> <li class=md-nav__item> <a href=../to_msgpack/ class=md-nav__link> <span class=md-ellipsis> to_msgpack </span> </a> </li> <li class=md-nav__item> <a href=../to_string/ class=md-nav__link> <span class=md-ellipsis> to_string </span> </a> </li> <li class=md-nav__item> <a href=../to_ubjson/ class=md-nav__link> <span class=md-ellipsis> to_ubjson </span> </a> </li> <li class=md-nav__item> <a href=../type/ class=md-nav__link> <span class=md-ellipsis> type </span> </a> </li> <li class=md-nav__item> <a href=../type_error/ class=md-nav__link> <span class=md-ellipsis> type_error </span> </a> </li> <li class=md-nav__item> <a href=../type_name/ class=md-nav__link> <span class=md-ellipsis> type_name </span> </a> </li> <li class=md-nav__item> <a href=../unflatten/ class=md-nav__link> <span class=md-ellipsis> unflatten </span> </a> </li> <li class=md-nav__item> <a href=../update/ class=md-nav__link> <span class=md-ellipsis> update </span> </a> </li> <li class=md-nav__item> <a href=../value/ class=md-nav__link> <span class=md-ellipsis> value </span> </a> </li> <li class=md-nav__item> <a href=../value_t/ class=md-nav__link> <span class=md-ellipsis> value_t </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_2> <div class="md-nav__link md-nav__container"> <a href=../../byte_container_with_subtype/ class="md-nav__link "> <span class=md-ellipsis> byte_container_with_subtype </span> </a> <label class="md-nav__link " for=__nav_4_2 id=__nav_4_2_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_2_label aria-expanded=false> <label class=md-nav__title for=__nav_4_2> <span class="md-nav__icon md-icon"></span> byte_container_with_subtype </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../byte_container_with_subtype/byte_container_with_subtype/ class=md-nav__link> <span class=md-ellipsis> (constructor) </span> </a> </li> <li class=md-nav__item> <a href=../../byte_container_with_subtype/clear_subtype/ class=md-nav__link> <span class=md-ellipsis> clear_subtype </span> </a> </li> <li class=md-nav__item> <a href=../../byte_container_with_subtype/has_subtype/ class=md-nav__link> <span class=md-ellipsis> has_subtype </span> </a> </li> <li class=md-nav__item> <a href=../../byte_container_with_subtype/set_subtype/ class=md-nav__link> <span class=md-ellipsis> set_subtype </span> </a> </li> <li class=md-nav__item> <a href=../../byte_container_with_subtype/subtype/ class=md-nav__link> <span class=md-ellipsis> subtype </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_3> <div class="md-nav__link md-nav__container"> <a href=../../adl_serializer/ class="md-nav__link "> <span class=md-ellipsis> adl_serializer </span> </a> <label class="md-nav__link " for=__nav_4_3 id=__nav_4_3_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_3_label aria-expanded=false> <label class=md-nav__title for=__nav_4_3> <span class="md-nav__icon md-icon"></span> adl_serializer </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../adl_serializer/from_json/ class=md-nav__link> <span class=md-ellipsis> from_json </span> </a> </li> <li class=md-nav__item> <a href=../../adl_serializer/to_json/ class=md-nav__link> <span class=md-ellipsis> to_json </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../json/ class=md-nav__link> <span class=md-ellipsis> json </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_5> <div class="md-nav__link md-nav__container"> <a href=../../json_pointer/ class="md-nav__link "> <span class=md-ellipsis> json_pointer </span> </a> <label class="md-nav__link " for=__nav_4_5 id=__nav_4_5_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_5_label aria-expanded=false> <label class=md-nav__title for=__nav_4_5> <span class="md-nav__icon md-icon"></span> json_pointer </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../json_pointer/json_pointer/ class=md-nav__link> <span class=md-ellipsis> (Constructor) </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/back/ class=md-nav__link> <span class=md-ellipsis> back </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/empty/ class=md-nav__link> <span class=md-ellipsis> empty </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/front/ class=md-nav__link> <span class=md-ellipsis> front </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_string_t/ class=md-nav__link> <span class=md-ellipsis> operator string_t </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_eq/ class=md-nav__link> <span class=md-ellipsis> operator== </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_ne/ class=md-nav__link> <span class=md-ellipsis> operator!= </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_slash/ class=md-nav__link> <span class=md-ellipsis> operator/ </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_slasheq/ class=md-nav__link> <span class=md-ellipsis> operator/= </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/parent_pointer/ class=md-nav__link> <span class=md-ellipsis> parent_pointer </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/pop_back/ class=md-nav__link> <span class=md-ellipsis> pop_back </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/pop_front/ class=md-nav__link> <span class=md-ellipsis> pop_front </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/push_back/ class=md-nav__link> <span class=md-ellipsis> push_back </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/push_front/ class=md-nav__link> <span class=md-ellipsis> push_front </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/string_t/ class=md-nav__link> <span class=md-ellipsis> string_t </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/to_string/ class=md-nav__link> <span class=md-ellipsis> to_string </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_6> <div class="md-nav__link md-nav__container"> <a href=../../json_sax/ class="md-nav__link "> <span class=md-ellipsis> json_sax </span> </a> <label class="md-nav__link " for=__nav_4_6 id=__nav_4_6_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_6_label aria-expanded=false> <label class=md-nav__title for=__nav_4_6> <span class="md-nav__icon md-icon"></span> json_sax </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../json_sax/binary/ class=md-nav__link> <span class=md-ellipsis> binary </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/boolean/ class=md-nav__link> <span class=md-ellipsis> boolean </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/end_array/ class=md-nav__link> <span class=md-ellipsis> end_array </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/end_object/ class=md-nav__link> <span class=md-ellipsis> end_object </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/key/ class=md-nav__link> <span class=md-ellipsis> key </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/null/ class=md-nav__link> <span class=md-ellipsis> null </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/number_float/ class=md-nav__link> <span class=md-ellipsis> number_float </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/number_integer/ class=md-nav__link> <span class=md-ellipsis> number_integer </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/number_unsigned/ class=md-nav__link> <span class=md-ellipsis> number_unsigned </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/parse_error/ class=md-nav__link> <span class=md-ellipsis> parse_error </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/start_array/ class=md-nav__link> <span class=md-ellipsis> start_array </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/start_object/ class=md-nav__link> <span class=md-ellipsis> start_object </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/string/ class=md-nav__link> <span class=md-ellipsis> string </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../operator_ltlt/ class=md-nav__link> <span class=md-ellipsis> operator<<(basic_json), operator<<(json_pointer) </span> </a> </li> <li class=md-nav__item> <a href=../../operator_gtgt/ class=md-nav__link> <span class=md-ellipsis> operator>>(basic_json) </span> </a> </li> <li class=md-nav__item> <a href=../../operator_literal_json/ class=md-nav__link> <span class=md-ellipsis> operator""_json </span> </a> </li> <li class=md-nav__item> <a href=../../operator_literal_json_pointer/ class=md-nav__link> <span class=md-ellipsis> operator""_json_pointer </span> </a> </li> <li class=md-nav__item> <a href=../../ordered_json/ class=md-nav__link> <span class=md-ellipsis> ordered_json </span> </a> </li> <li class=md-nav__item> <a href=../../ordered_map/ class=md-nav__link> <span class=md-ellipsis> ordered_map </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_13> <div class="md-nav__link md-nav__container"> <a href=../../macros/ class="md-nav__link "> <span class=md-ellipsis> macros </span> </a> <label class="md-nav__link " for=__nav_4_13 id=__nav_4_13_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_13_label aria-expanded=false> <label class=md-nav__title for=__nav_4_13> <span class="md-nav__icon md-icon"></span> macros </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../macros/json_assert/ class=md-nav__link> <span class=md-ellipsis> JSON_ASSERT </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_brace_init_copy_semantics/ class=md-nav__link> <span class=md-ellipsis> JSON_BRACE_INIT_COPY_SEMANTICS </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_throw_user/ class=md-nav__link> <span class=md-ellipsis> JSON_CATCH_USER, JSON_THROW_USER, JSON_TRY_USER </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_diagnostics/ class=md-nav__link> <span class=md-ellipsis> JSON_DIAGNOSTICS </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_diagnostic_positions/ class=md-nav__link> <span class=md-ellipsis> JSON_DIAGNOSTIC_POSITIONS </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_disable_enum_serialization/ class=md-nav__link> <span class=md-ellipsis> JSON_DISABLE_ENUM_SERIALIZATION </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_has_cpp_11/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_CPP_11, JSON_HAS_CPP_14, JSON_HAS_CPP_17, JSON_HAS_CPP_20 </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_has_filesystem/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_EXPERIMENTAL_FILESYSTEM, JSON_HAS_FILESYSTEM </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_has_ranges/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_RANGES </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_has_static_rtti/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_STATIC_RTTI </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_has_three_way_comparison/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_THREE_WAY_COMPARISON </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_noexception/ class=md-nav__link> <span class=md-ellipsis> JSON_NOEXCEPTION </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_no_io/ class=md-nav__link> <span class=md-ellipsis> JSON_NO_IO </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_skip_library_version_check/ class=md-nav__link> <span class=md-ellipsis> JSON_SKIP_LIBRARY_VERSION_CHECK </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_skip_unsupported_compiler_check/ class=md-nav__link> <span class=md-ellipsis> JSON_SKIP_UNSUPPORTED_COMPILER_CHECK </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_use_global_udls/ class=md-nav__link> <span class=md-ellipsis> JSON_USE_GLOBAL_UDLS </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_use_implicit_conversions/ class=md-nav__link> <span class=md-ellipsis> JSON_USE_IMPLICIT_CONVERSIONS </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_use_legacy_discarded_value_comparison/ class=md-nav__link> <span class=md-ellipsis> JSON_USE_LEGACY_DISCARDED_VALUE_COMPARISON </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_define_derived_type/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_ONLY_SERIALIZE, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_define_type_intrusive/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_TYPE_INTRUSIVE, NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_TYPE_INTRUSIVE_ONLY_SERIALIZE </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_define_type_non_intrusive/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_define_type_with_names/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_TYPE_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_namespace/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_NAMESPACE </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_namespace_begin/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_NAMESPACE_BEGIN, NLOHMANN_JSON_NAMESPACE_END </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_namespace_no_version/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_NAMESPACE_NO_VERSION </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_serialize_enum/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_SERIALIZE_ENUM </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_serialize_enum_strict/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_SERIALIZE_ENUM_STRICT </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_version_major/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_VERSION_MAJOR, NLOHMANN_JSON_VERSION_MINOR, NLOHMANN_JSON_VERSION_PATCH </span> </a> </li> </ul> </nav> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_5> <div class="md-nav__link md-nav__container"> <a href=../../../community/ class="md-nav__link "> <span class=md-ellipsis> Community </span> </a> <label class="md-nav__link " for=__nav_5 id=__nav_5_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_5_label aria-expanded=false> <label class=md-nav__title for=__nav_5> <span class="md-nav__icon md-icon"></span> Community </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../community/code_of_conduct/ class=md-nav__link> <span class=md-ellipsis> Code of Conduct </span> </a> </li> <li class=md-nav__item> <a href=../../../community/contribution_guidelines/ class=md-nav__link> <span class=md-ellipsis> Contribution Guidelines </span> </a> </li> <li class=md-nav__item> <a href=../../../community/quality_assurance/ class=md-nav__link> <span class=md-ellipsis> Quality assurance </span> </a> </li> <li class=md-nav__item> <a href=../../../community/governance/ class=md-nav__link> <span class=md-ellipsis> Governance </span> </a> </li> <li class=md-nav__item> <a href=../../../community/security_policy/ class=md-nav__link> <span class=md-ellipsis> Security Policy </span> </a> </li> </ul> </nav> </li> </ul> </nav> </div> </div> </div> <div class="md-sidebar md-sidebar--secondary" data-md-component=sidebar data-md-type=toc> <div class=md-sidebar__scrollwrap> <div class=md-sidebar__inner> <nav class="md-nav md-nav--secondary" aria-label="Table of contents"> <label class=md-nav__title for=__toc> <span class="md-nav__icon md-icon"></span> Table of contents </label> <ul class=md-nav__list data-md-component=toc data-md-scrollfix> <li class=md-nav__item> <a href=#return-value class=md-nav__link> <span class=md-ellipsis> Return value </span> </a> </li> <li class=md-nav__item> <a href=#exception-safety class=md-nav__link> <span class=md-ellipsis> Exception safety </span> </a> </li> <li class=md-nav__item> <a href=#complexity class=md-nav__link> <span class=md-ellipsis> Complexity </span> </a> </li> <li class=md-nav__item> <a href=#examples class=md-nav__link> <span class=md-ellipsis> Examples </span> </a> </li> <li class=md-nav__item> <a href=#version-history class=md-nav__link> <span class=md-ellipsis> Version history </span> </a> </li> </ul> </nav> </div> </div> </div> <div class=md-content data-md-component=content> <article class="md-content__inner md-typeset"> <a href="https://github.com/nlohmann/json/edit/develop/docs/mkdocs/docs/api/basic_json/crbegin.md" title="Edit this page" class="md-content__button md-icon" rel="edit"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M10 20H6V4h7v5h5v3.1l2-2V8l-6-6H6c-1.1 0-2 .9-2 2v16c0 1.1.9 2 2 2h4zm10.2-7c.1 0 .3.1.4.2l1.3 1.3c.2.2.2.6 0 .8l-1 1-2.1-2.1 1-1c.1-.1.2-.2.4-.2m0 3.9L14.1 23H12v-2.1l6.1-6.1z"/></svg> </a> <a href="https://github.com/nlohmann/json/raw/develop/docs/mkdocs/docs/api/basic_json/crbegin.md" title="View source of this page" class="md-content__button md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M17 18c.56 0 1 .44 1 1s-.44 1-1 1-1-.44-1-1 .44-1 1-1m0-3c-2.73 0-5.06 1.66-6 4 .94 2.34 3.27 4 6 4s5.06-1.66 6-4c-.94-2.34-3.27-4-6-4m0 6.5a2.5 2.5 0 0 1-2.5-2.5 2.5 2.5 0 0 1 2.5-2.5 2.5 2.5 0 0 1 2.5 2.5 2.5 2.5 0 0 1-2.5 2.5M9.27 20H6V4h7v5h5v4.07c.7.08 1.36.25 2 .49V8l-6-6H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h4.5a8.2 8.2 0 0 1-1.23-2"/></svg> </a> <h1 id=nlohmannbasic_jsoncrbegin><small>nlohmann::basic_json::</small>crbegin<a class=headerlink href=#nlohmannbasic_jsoncrbegin title="Permanent link">&para;</a></h1> <div class=highlight><pre><span></span><code><span class=n>const_reverse_iterator</span><span class=w> </span><span class=nf>crbegin</span><span class=p>()</span><span class=w> </span><span class=k>const</span><span class=w> </span><span class=k>noexcept</span><span class=p>;</span>
-</code></pre></div> <p>Returns an iterator to the reverse-beginning; that is, the last element.</p> <p><img alt="Illustration from cppreference.com" src=../../../images/range-rbegin-rend.svg></p> <h2 id=return-value>Return value<a class=headerlink href=#return-value title="Permanent link">&para;</a></h2> <p>reverse iterator to the first element</p> <h2 id=exception-safety>Exception safety<a class=headerlink href=#exception-safety title="Permanent link">&para;</a></h2> <p>No-throw guarantee: this member function never throws exceptions.</p> <h2 id=complexity>Complexity<a class=headerlink href=#complexity title="Permanent link">&para;</a></h2> <p>Constant.</p> <h2 id=examples>Examples<a class=headerlink href=#examples title="Permanent link">&para;</a></h2> <details class=example> <summary>Example</summary> <p>The following code shows an example for <code>crbegin()</code>.</p> <div class=highlight><pre><span></span><code><span class=cp>#include</span><span class=w> </span><span class=cpf>&lt;iostream&gt;</span>
+</code></pre></div> <p>Returns an iterator to the reverse-beginning; that is, the last element.</p> <p><img alt="Illustration from cppreference.com" src=../../../images/range-rbegin-rend.svg></p> <h2 id=return-value>Return value<a class=headerlink href=#return-value title="Permanent link">&para;</a></h2> <p>reverse iterator to the last element</p> <h2 id=exception-safety>Exception safety<a class=headerlink href=#exception-safety title="Permanent link">&para;</a></h2> <p>No-throw guarantee: this member function never throws exceptions.</p> <h2 id=complexity>Complexity<a class=headerlink href=#complexity title="Permanent link">&para;</a></h2> <p>Constant.</p> <h2 id=examples>Examples<a class=headerlink href=#examples title="Permanent link">&para;</a></h2> <details class=example> <summary>Example</summary> <p>The following code shows an example for <code>crbegin()</code>.</p> <div class=highlight><pre><span></span><code><span class=cp>#include</span><span class=w> </span><span class=cpf>&lt;iostream&gt;</span>
 <span class=cp>#include</span><span class=w> </span><span class=cpf>&lt;nlohmann/json.hpp&gt;</span>
 
 <span class=k>using</span><span class=w> </span><span class=n>json</span><span class=w> </span><span class=o>=</span><span class=w> </span><span class=n>nlohmann</span><span class=o>::</span><span class=n>json</span><span class=p>;</span>
@@ -16,4 +16,4 @@
 <span class=w>    </span><span class=n>std</span><span class=o>::</span><span class=n>cout</span><span class=w> </span><span class=o>&lt;&lt;</span><span class=w> </span><span class=o>*</span><span class=n>it</span><span class=w> </span><span class=o>&lt;&lt;</span><span class=w> </span><span class=sc>&#39;\n&#39;</span><span class=p>;</span>
 <span class=p>}</span>
 </code></pre></div> <p>Output:</p> <div class=highlight><pre><span></span><code><span class=mi>5</span>
-</code></pre></div> </details> <h2 id=version-history>Version history<a class=headerlink href=#version-history title="Permanent link">&para;</a></h2> <ul> <li>Added in version 1.0.0.</li> </ul> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 23, 2026 11:16:18 UTC">June 23, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
+</code></pre></div> </details> <h2 id=version-history>Version history<a class=headerlink href=#version-history title="Permanent link">&para;</a></h2> <ul> <li>Added in version 1.0.0.</li> </ul> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 29, 2026 20:15:18 UTC">June 29, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
diff --git a/api/basic_json/crend/index.html b/api/basic_json/crend/index.html
index a298906..93d46c3 100644
--- a/api/basic_json/crend/index.html
+++ b/api/basic_json/crend/index.html
@@ -1,5 +1,5 @@
 <!doctype html><html lang=en class=no-js> <head><meta charset=utf-8><meta name=viewport content="width=device-width,initial-scale=1"><meta name=author content="Niels Lohmann"><link href="https://json.nlohmann.me/api/basic_json/crend/" rel="canonical"><link href=../crbegin/ rel=prev><link href=../default_object_comparator_t/ rel=next><link rel=icon href=../../../assets/images/favicon.png><meta name=generator content="mkdocs-1.6.1, mkdocs-material-9.7.6"><title>crend - JSON for Modern C++</title><link rel=stylesheet href=../../../assets/stylesheets/main.484c7ddc.min.css><link rel=stylesheet href=../../../assets/stylesheets/palette.ab4e12ef.min.css><link rel="stylesheet" href="../../../assets/external/fonts.googleapis.com/css.61a430c9.css"><style>:root{--md-text-font:"Roboto";--md-code-font:"JetBrains Mono"}</style><link rel=stylesheet href=../../../css/custom.css><script>__md_scope=new URL("../../..",location),__md_hash=e=>[...e].reduce(((e,_)=>(e<<5)-e+_.charCodeAt(0)),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script></head> <body dir=ltr data-md-color-scheme=default data-md-color-primary=indigo data-md-color-accent=indigo> <input class=md-toggle data-md-toggle=drawer type=checkbox id=__drawer autocomplete=off> <input class=md-toggle data-md-toggle=search type=checkbox id=__search autocomplete=off> <label class=md-overlay for=__drawer></label> <div data-md-component=skip> <a href=#nlohmannbasic_jsoncrend class=md-skip> Skip to content </a> </div> <div data-md-component=announce> </div> <header class=md-header data-md-component=header> <nav class="md-header__inner md-grid" aria-label=Header> <a href=../../.. title="JSON for Modern C++" class="md-header__button md-logo" aria-label="JSON for Modern C++" data-md-component=logo> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54"/></svg> </a> <label class="md-header__button md-icon" for=__drawer> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M3 6h18v2H3zm0 5h18v2H3zm0 5h18v2H3z"/></svg> </label> <div class=md-header__title data-md-component=header-title> <div class=md-header__ellipsis> <div class=md-header__topic> <span class=md-ellipsis> JSON for Modern C++ </span> </div> <div class=md-header__topic data-md-component=header-topic> <span class=md-ellipsis> crend </span> </div> </div> </div> <form class=md-header__option data-md-component=palette> <input class=md-option data-md-color-media="(prefers-color-scheme: light)" data-md-color-scheme=default data-md-color-primary=indigo data-md-color-accent=indigo aria-label="Switch to dark mode" type=radio name=__palette id=__palette_0> <label class="md-header__button md-icon" title="Switch to dark mode" for=__palette_1 hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a4 4 0 0 0-4 4 4 4 0 0 0 4 4 4 4 0 0 0 4-4 4 4 0 0 0-4-4m0 10a6 6 0 0 1-6-6 6 6 0 0 1 6-6 6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12z"/></svg> </label> <input class=md-option data-md-color-media="(prefers-color-scheme: dark)" data-md-color-scheme=slate data-md-color-primary=indigo data-md-color-accent=indigo aria-label="Switch to light mode" type=radio name=__palette id=__palette_1> <label class="md-header__button md-icon" title="Switch to light mode" for=__palette_0 hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 18c-.89 0-1.74-.2-2.5-.55C11.56 16.5 13 14.42 13 12s-1.44-4.5-3.5-5.45C10.26 6.2 11.11 6 12 6a6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12z"/></svg> </label> </form> <script>var palette=__md_get("__palette");if(palette&&palette.color){if("(prefers-color-scheme)"===palette.color.media){var media=matchMedia("(prefers-color-scheme: light)"),input=document.querySelector(media.matches?"[data-md-color-media='(prefers-color-scheme: light)']":"[data-md-color-media='(prefers-color-scheme: dark)']");palette.color.media=input.getAttribute("data-md-color-media"),palette.color.scheme=input.getAttribute("data-md-color-scheme"),palette.color.primary=input.getAttribute("data-md-color-primary"),palette.color.accent=input.getAttribute("data-md-color-accent")}for(var[key,value]of Object.entries(palette.color))document.body.setAttribute("data-md-color-"+key,value)}</script> <label class="md-header__button md-icon" for=__search> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg> </label> <div class=md-search data-md-component=search role=dialog> <label class=md-search__overlay for=__search></label> <div class=md-search__inner role=search> <form class=md-search__form name=search> <input type=text class=md-search__input name=query aria-label=Search placeholder=Search autocapitalize=off autocorrect=off autocomplete=off spellcheck=false data-md-component=search-query required> <label class="md-search__icon md-icon" for=__search> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11z"/></svg> </label> <nav class=md-search__options aria-label=Search> <button type=reset class="md-search__icon md-icon" title=Clear aria-label=Clear tabindex=-1> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z"/></svg> </button> </nav> </form> <div class=md-search__output> <div class=md-search__scrollwrap tabindex=0 data-md-scrollfix> <div class=md-search-result data-md-component=search-result> <div class=md-search-result__meta> Initializing search </div> <ol class=md-search-result__list role=presentation></ol> </div> </div> </div> </div> </div> <div class=md-header__source> <a href="https://github.com/nlohmann/json" title="Go to repository" class="md-source" data-md-component="source"> <div class="md-source__icon md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </div> <div class=md-source__repository> nlohmann/json </div> </a> </div> </nav> </header> <div class=md-container data-md-component=container> <nav class=md-tabs aria-label=Tabs data-md-component=tabs> <div class=md-grid> <ul class=md-tabs__list> <li class=md-tabs__item> <a href=../../.. class=md-tabs__link> Home </a> </li> <li class=md-tabs__item> <a href=../../../features/arbitrary_types/ class=md-tabs__link> Features </a> </li> <li class=md-tabs__item> <a href=../../../integration/ class=md-tabs__link> Integration </a> </li> <li class="md-tabs__item md-tabs__item--active"> <a href=../ class=md-tabs__link> API Documentation </a> </li> <li class=md-tabs__item> <a href=../../../community/ class=md-tabs__link> Community </a> </li> </ul> </div> </nav> <main class=md-main data-md-component=main> <div class="md-main__inner md-grid"> <div class="md-sidebar md-sidebar--primary" data-md-component=sidebar data-md-type=navigation> <div class=md-sidebar__scrollwrap> <div class=md-sidebar__inner> <nav class="md-nav md-nav--primary md-nav--lifted" aria-label=Navigation data-md-level=0> <label class=md-nav__title for=__drawer> <a href=../../.. title="JSON for Modern C++" class="md-nav__button md-logo" aria-label="JSON for Modern C++" data-md-component=logo> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54"/></svg> </a> JSON for Modern C++ </label> <div class=md-nav__source> <a href="https://github.com/nlohmann/json" title="Go to repository" class="md-source" data-md-component="source"> <div class="md-source__icon md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </div> <div class=md-source__repository> nlohmann/json </div> </a> </div> <ul class=md-nav__list data-md-scrollfix> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_1> <div class="md-nav__link md-nav__container"> <a href=../../.. class="md-nav__link "> <span class=md-ellipsis> Home </span> </a> <label class="md-nav__link " for=__nav_1 id=__nav_1_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_1_label aria-expanded=false> <label class=md-nav__title for=__nav_1> <span class="md-nav__icon md-icon"></span> Home </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../home/license/ class=md-nav__link> <span class=md-ellipsis> License </span> </a> </li> <li class=md-nav__item> <a href=../../../home/faq/ class=md-nav__link> <span class=md-ellipsis> FAQ </span> </a> </li> <li class=md-nav__item> <a href=../../../home/exceptions/ class=md-nav__link> <span class=md-ellipsis> Exceptions </span> </a> </li> <li class=md-nav__item> <a href=../../../home/releases/ class=md-nav__link> <span class=md-ellipsis> Releases </span> </a> </li> <li class=md-nav__item> <a href=../../../home/design_goals/ class=md-nav__link> <span class=md-ellipsis> Design goals </span> </a> </li> <li class=md-nav__item> <a href=../../../home/architecture/ class=md-nav__link> <span class=md-ellipsis> Architecture </span> </a> </li> <li class=md-nav__item> <a href=../../../home/customers/ class=md-nav__link> <span class=md-ellipsis> Customers </span> </a> </li> <li class=md-nav__item> <a href=../../../home/sponsors/ class=md-nav__link> <span class=md-ellipsis> Sponsors </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2> <label class=md-nav__link for=__nav_2 id=__nav_2_label tabindex=0> <span class=md-ellipsis> Features </span> <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_2_label aria-expanded=false> <label class=md-nav__title for=__nav_2> <span class="md-nav__icon md-icon"></span> Features </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/arbitrary_types/ class=md-nav__link> <span class=md-ellipsis> Arbitrary Type Conversions </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_2> <div class="md-nav__link md-nav__container"> <a href=../../../features/binary_formats/ class="md-nav__link "> <span class=md-ellipsis> Binary Formats </span> </a> <label class="md-nav__link " for=__nav_2_2 id=__nav_2_2_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_2_label aria-expanded=false> <label class=md-nav__title for=__nav_2_2> <span class="md-nav__icon md-icon"></span> Binary Formats </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/binary_formats/bjdata/ class=md-nav__link> <span class=md-ellipsis> BJData </span> </a> </li> <li class=md-nav__item> <a href=../../../features/binary_formats/bson/ class=md-nav__link> <span class=md-ellipsis> BSON </span> </a> </li> <li class=md-nav__item> <a href=../../../features/binary_formats/cbor/ class=md-nav__link> <span class=md-ellipsis> CBOR </span> </a> </li> <li class=md-nav__item> <a href=../../../features/binary_formats/messagepack/ class=md-nav__link> <span class=md-ellipsis> MessagePack </span> </a> </li> <li class=md-nav__item> <a href=../../../features/binary_formats/ubjson/ class=md-nav__link> <span class=md-ellipsis> UBJSON </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../../features/binary_values/ class=md-nav__link> <span class=md-ellipsis> Binary Values </span> </a> </li> <li class=md-nav__item> <a href=../../../features/comments/ class=md-nav__link> <span class=md-ellipsis> Comments </span> </a> </li> <li class=md-nav__item> <a href=../../../features/trailing_commas/ class=md-nav__link> <span class=md-ellipsis> Trailing Commas </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_6> <div class="md-nav__link md-nav__container"> <a href=../../../features/element_access/ class="md-nav__link "> <span class=md-ellipsis> Element Access </span> </a> <label class="md-nav__link " for=__nav_2_6 id=__nav_2_6_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_6_label aria-expanded=false> <label class=md-nav__title for=__nav_2_6> <span class="md-nav__icon md-icon"></span> Element Access </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/element_access/unchecked_access/ class=md-nav__link> <span class=md-ellipsis> Unchecked access: operator[] </span> </a> </li> <li class=md-nav__item> <a href=../../../features/element_access/checked_access/ class=md-nav__link> <span class=md-ellipsis> Checked access: at </span> </a> </li> <li class=md-nav__item> <a href=../../../features/element_access/default_value/ class=md-nav__link> <span class=md-ellipsis> Access with default value: value </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../../features/iterators/ class=md-nav__link> <span class=md-ellipsis> Iterators </span> </a> </li> <li class=md-nav__item> <a href=../../../features/json_pointer/ class=md-nav__link> <span class=md-ellipsis> JSON Pointer </span> </a> </li> <li class=md-nav__item> <a href=../../../features/json_patch/ class=md-nav__link> <span class=md-ellipsis> JSON Patch and Diff </span> </a> </li> <li class=md-nav__item> <a href=../../../features/merge_patch/ class=md-nav__link> <span class=md-ellipsis> JSON Merge Patch </span> </a> </li> <li class=md-nav__item> <a href=../../../features/modules/ class=md-nav__link> <span class=md-ellipsis> Modules </span> </a> </li> <li class=md-nav__item> <a href=../../../features/namespace/ class=md-nav__link> <span class=md-ellipsis> nlohmann Namespace </span> </a> </li> <li class=md-nav__item> <a href=../../../features/object_order/ class=md-nav__link> <span class=md-ellipsis> Object Order </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_14> <div class="md-nav__link md-nav__container"> <a href=../../../features/parsing/ class="md-nav__link "> <span class=md-ellipsis> Parsing </span> </a> <label class="md-nav__link " for=__nav_2_14 id=__nav_2_14_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_14_label aria-expanded=false> <label class=md-nav__title for=__nav_2_14> <span class="md-nav__icon md-icon"></span> Parsing </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/parsing/json_lines/ class=md-nav__link> <span class=md-ellipsis> JSON Lines </span> </a> </li> <li class=md-nav__item> <a href=../../../features/parsing/parse_exceptions/ class=md-nav__link> <span class=md-ellipsis> Parsing and Exceptions </span> </a> </li> <li class=md-nav__item> <a href=../../../features/parsing/parser_callbacks/ class=md-nav__link> <span class=md-ellipsis> Parser Callbacks </span> </a> </li> <li class=md-nav__item> <a href=../../../features/parsing/sax_interface/ class=md-nav__link> <span class=md-ellipsis> SAX Interface </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../../features/assertions/ class=md-nav__link> <span class=md-ellipsis> Runtime Assertions </span> </a> </li> <li class=md-nav__item> <a href=../../../features/enum_conversion/ class=md-nav__link> <span class=md-ellipsis> Specializing enum conversion </span> </a> </li> <li class=md-nav__item> <a href=../../../features/macros/ class=md-nav__link> <span class=md-ellipsis> Supported Macros </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_18> <div class="md-nav__link md-nav__container"> <a href=../../../features/types/ class="md-nav__link "> <span class=md-ellipsis> Types </span> </a> <label class="md-nav__link " for=__nav_2_18 id=__nav_2_18_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_18_label aria-expanded=false> <label class=md-nav__title for=__nav_2_18> <span class="md-nav__icon md-icon"></span> Types </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/types/number_handling/ class=md-nav__link> <span class=md-ellipsis> Number Handling </span> </a> </li> </ul> </nav> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_3> <div class="md-nav__link md-nav__container"> <a href=../../../integration/ class="md-nav__link "> <span class=md-ellipsis> Integration </span> </a> <label class="md-nav__link " for=__nav_3 id=__nav_3_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_3_label aria-expanded=false> <label class=md-nav__title for=__nav_3> <span class="md-nav__icon md-icon"></span> Integration </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../integration/migration_guide/ class=md-nav__link> <span class=md-ellipsis> Migration Guide </span> </a> </li> <li class=md-nav__item> <a href=../../../integration/cmake/ class=md-nav__link> <span class=md-ellipsis> CMake </span> </a> </li> <li class=md-nav__item> <a href=../../../integration/package_managers/ class=md-nav__link> <span class=md-ellipsis> Package Managers </span> </a> </li> <li class=md-nav__item> <a href=../../../integration/pkg-config/ class=md-nav__link> <span class=md-ellipsis> Pkg-config </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--active md-nav__item--section md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4 checked> <label class=md-nav__link for=__nav_4 id=__nav_4_label tabindex> <span class=md-ellipsis> API Documentation </span> <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_4_label aria-expanded=true> <label class=md-nav__title for=__nav_4> <span class="md-nav__icon md-icon"></span> API Documentation </label> <ul class=md-nav__list data-md-scrollfix> <li class="md-nav__item md-nav__item--active md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_1 checked> <div class="md-nav__link md-nav__container"> <a href=../ class="md-nav__link "> <span class=md-ellipsis> basic_json </span> </a> <label class="md-nav__link " for=__nav_4_1 id=__nav_4_1_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_1_label aria-expanded=true> <label class=md-nav__title for=__nav_4_1> <span class="md-nav__icon md-icon"></span> basic_json </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../basic_json/ class=md-nav__link> <span class=md-ellipsis> (Constructor) </span> </a> </li> <li class=md-nav__item> <a href=../~basic_json/ class=md-nav__link> <span class=md-ellipsis> (Destructor) </span> </a> </li> <li class=md-nav__item> <a href=../accept/ class=md-nav__link> <span class=md-ellipsis> accept </span> </a> </li> <li class=md-nav__item> <a href=../array/ class=md-nav__link> <span class=md-ellipsis> array </span> </a> </li> <li class=md-nav__item> <a href=../array_t/ class=md-nav__link> <span class=md-ellipsis> array_t </span> </a> </li> <li class=md-nav__item> <a href=../at/ class=md-nav__link> <span class=md-ellipsis> at </span> </a> </li> <li class=md-nav__item> <a href=../back/ class=md-nav__link> <span class=md-ellipsis> back </span> </a> </li> <li class=md-nav__item> <a href=../begin/ class=md-nav__link> <span class=md-ellipsis> begin </span> </a> </li> <li class=md-nav__item> <a href=../binary/ class=md-nav__link> <span class=md-ellipsis> binary </span> </a> </li> <li class=md-nav__item> <a href=../binary_t/ class=md-nav__link> <span class=md-ellipsis> binary_t </span> </a> </li> <li class=md-nav__item> <a href=../boolean_t/ class=md-nav__link> <span class=md-ellipsis> boolean_t </span> </a> </li> <li class=md-nav__item> <a href=../cbegin/ class=md-nav__link> <span class=md-ellipsis> cbegin </span> </a> </li> <li class=md-nav__item> <a href=../cbor_tag_handler_t/ class=md-nav__link> <span class=md-ellipsis> cbor_tag_handler_t </span> </a> </li> <li class=md-nav__item> <a href=../cend/ class=md-nav__link> <span class=md-ellipsis> cend </span> </a> </li> <li class=md-nav__item> <a href=../clear/ class=md-nav__link> <span class=md-ellipsis> clear </span> </a> </li> <li class=md-nav__item> <a href=../contains/ class=md-nav__link> <span class=md-ellipsis> contains </span> </a> </li> <li class=md-nav__item> <a href=../count/ class=md-nav__link> <span class=md-ellipsis> count </span> </a> </li> <li class=md-nav__item> <a href=../crbegin/ class=md-nav__link> <span class=md-ellipsis> crbegin </span> </a> </li> <li class="md-nav__item md-nav__item--active"> <input class="md-nav__toggle md-toggle" type=checkbox id=__toc> <label class="md-nav__link md-nav__link--active" for=__toc> <span class=md-ellipsis> crend </span> <span class="md-nav__icon md-icon"></span> </label> <a href=./ class="md-nav__link md-nav__link--active"> <span class=md-ellipsis> crend </span> </a> <nav class="md-nav md-nav--secondary" aria-label="Table of contents"> <label class=md-nav__title for=__toc> <span class="md-nav__icon md-icon"></span> Table of contents </label> <ul class=md-nav__list data-md-component=toc data-md-scrollfix> <li class=md-nav__item> <a href=#return-value class=md-nav__link> <span class=md-ellipsis> Return value </span> </a> </li> <li class=md-nav__item> <a href=#exception-safety class=md-nav__link> <span class=md-ellipsis> Exception safety </span> </a> </li> <li class=md-nav__item> <a href=#complexity class=md-nav__link> <span class=md-ellipsis> Complexity </span> </a> </li> <li class=md-nav__item> <a href=#examples class=md-nav__link> <span class=md-ellipsis> Examples </span> </a> </li> <li class=md-nav__item> <a href=#version-history class=md-nav__link> <span class=md-ellipsis> Version history </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../default_object_comparator_t/ class=md-nav__link> <span class=md-ellipsis> default_object_comparator_t </span> </a> </li> <li class=md-nav__item> <a href=../diff/ class=md-nav__link> <span class=md-ellipsis> diff </span> </a> </li> <li class=md-nav__item> <a href=../dump/ class=md-nav__link> <span class=md-ellipsis> dump </span> </a> </li> <li class=md-nav__item> <a href=../emplace/ class=md-nav__link> <span class=md-ellipsis> emplace </span> </a> </li> <li class=md-nav__item> <a href=../emplace_back/ class=md-nav__link> <span class=md-ellipsis> emplace_back </span> </a> </li> <li class=md-nav__item> <a href=../empty/ class=md-nav__link> <span class=md-ellipsis> empty </span> </a> </li> <li class=md-nav__item> <a href=../end/ class=md-nav__link> <span class=md-ellipsis> end </span> </a> </li> <li class=md-nav__item> <a href=../end_pos/ class=md-nav__link> <span class=md-ellipsis> end_pos </span> </a> </li> <li class=md-nav__item> <a href=../erase/ class=md-nav__link> <span class=md-ellipsis> erase </span> </a> </li> <li class=md-nav__item> <a href=../error_handler_t/ class=md-nav__link> <span class=md-ellipsis> error_handler_t </span> </a> </li> <li class=md-nav__item> <a href=../exception/ class=md-nav__link> <span class=md-ellipsis> exception </span> </a> </li> <li class=md-nav__item> <a href=../find/ class=md-nav__link> <span class=md-ellipsis> find </span> </a> </li> <li class=md-nav__item> <a href=../flatten/ class=md-nav__link> <span class=md-ellipsis> flatten </span> </a> </li> <li class=md-nav__item> <a href=../from_bjdata/ class=md-nav__link> <span class=md-ellipsis> from_bjdata </span> </a> </li> <li class=md-nav__item> <a href=../from_bson/ class=md-nav__link> <span class=md-ellipsis> from_bson </span> </a> </li> <li class=md-nav__item> <a href=../from_cbor/ class=md-nav__link> <span class=md-ellipsis> from_cbor </span> </a> </li> <li class=md-nav__item> <a href=../from_msgpack/ class=md-nav__link> <span class=md-ellipsis> from_msgpack </span> </a> </li> <li class=md-nav__item> <a href=../from_ubjson/ class=md-nav__link> <span class=md-ellipsis> from_ubjson </span> </a> </li> <li class=md-nav__item> <a href=../front/ class=md-nav__link> <span class=md-ellipsis> front </span> </a> </li> <li class=md-nav__item> <a href=../get/ class=md-nav__link> <span class=md-ellipsis> get </span> </a> </li> <li class=md-nav__item> <a href=../get_allocator/ class=md-nav__link> <span class=md-ellipsis> get_allocator </span> </a> </li> <li class=md-nav__item> <a href=../get_binary/ class=md-nav__link> <span class=md-ellipsis> get_binary </span> </a> </li> <li class=md-nav__item> <a href=../get_ptr/ class=md-nav__link> <span class=md-ellipsis> get_ptr </span> </a> </li> <li class=md-nav__item> <a href=../get_ref/ class=md-nav__link> <span class=md-ellipsis> get_ref </span> </a> </li> <li class=md-nav__item> <a href=../get_to/ class=md-nav__link> <span class=md-ellipsis> get_to </span> </a> </li> <li class=md-nav__item> <a href=../std_hash/ class=md-nav__link> <span class=md-ellipsis> std::hash&lt;basic_json&gt; </span> </a> </li> <li class=md-nav__item> <a href=../input_format_t/ class=md-nav__link> <span class=md-ellipsis> input_format_t </span> </a> </li> <li class=md-nav__item> <a href=../insert/ class=md-nav__link> <span class=md-ellipsis> insert </span> </a> </li> <li class=md-nav__item> <a href=../invalid_iterator/ class=md-nav__link> <span class=md-ellipsis> invalid_iterator </span> </a> </li> <li class=md-nav__item> <a href=../is_array/ class=md-nav__link> <span class=md-ellipsis> is_array </span> </a> </li> <li class=md-nav__item> <a href=../is_binary/ class=md-nav__link> <span class=md-ellipsis> is_binary </span> </a> </li> <li class=md-nav__item> <a href=../is_boolean/ class=md-nav__link> <span class=md-ellipsis> is_boolean </span> </a> </li> <li class=md-nav__item> <a href=../is_discarded/ class=md-nav__link> <span class=md-ellipsis> is_discarded </span> </a> </li> <li class=md-nav__item> <a href=../is_null/ class=md-nav__link> <span class=md-ellipsis> is_null </span> </a> </li> <li class=md-nav__item> <a href=../is_number/ class=md-nav__link> <span class=md-ellipsis> is_number </span> </a> </li> <li class=md-nav__item> <a href=../is_number_float/ class=md-nav__link> <span class=md-ellipsis> is_number_float </span> </a> </li> <li class=md-nav__item> <a href=../is_number_integer/ class=md-nav__link> <span class=md-ellipsis> is_number_integer </span> </a> </li> <li class=md-nav__item> <a href=../is_number_unsigned/ class=md-nav__link> <span class=md-ellipsis> is_number_unsigned </span> </a> </li> <li class=md-nav__item> <a href=../is_object/ class=md-nav__link> <span class=md-ellipsis> is_object </span> </a> </li> <li class=md-nav__item> <a href=../is_primitive/ class=md-nav__link> <span class=md-ellipsis> is_primitive </span> </a> </li> <li class=md-nav__item> <a href=../is_string/ class=md-nav__link> <span class=md-ellipsis> is_string </span> </a> </li> <li class=md-nav__item> <a href=../is_structured/ class=md-nav__link> <span class=md-ellipsis> is_structured </span> </a> </li> <li class=md-nav__item> <a href=../items/ class=md-nav__link> <span class=md-ellipsis> items </span> </a> </li> <li class=md-nav__item> <a href=../json_base_class_t/ class=md-nav__link> <span class=md-ellipsis> json_base_class_t </span> </a> </li> <li class=md-nav__item> <a href=../json_serializer/ class=md-nav__link> <span class=md-ellipsis> json_serializer </span> </a> </li> <li class=md-nav__item> <a href=../max_size/ class=md-nav__link> <span class=md-ellipsis> max_size </span> </a> </li> <li class=md-nav__item> <a href=../meta/ class=md-nav__link> <span class=md-ellipsis> meta </span> </a> </li> <li class=md-nav__item> <a href=../merge_patch/ class=md-nav__link> <span class=md-ellipsis> merge_patch </span> </a> </li> <li class=md-nav__item> <a href=../number_float_t/ class=md-nav__link> <span class=md-ellipsis> number_float_t </span> </a> </li> <li class=md-nav__item> <a href=../number_integer_t/ class=md-nav__link> <span class=md-ellipsis> number_integer_t </span> </a> </li> <li class=md-nav__item> <a href=../number_unsigned_t/ class=md-nav__link> <span class=md-ellipsis> number_unsigned_t </span> </a> </li> <li class=md-nav__item> <a href=../object/ class=md-nav__link> <span class=md-ellipsis> object </span> </a> </li> <li class=md-nav__item> <a href=../object_comparator_t/ class=md-nav__link> <span class=md-ellipsis> object_comparator_t </span> </a> </li> <li class=md-nav__item> <a href=../object_t/ class=md-nav__link> <span class=md-ellipsis> object_t </span> </a> </li> <li class=md-nav__item> <a href=../operator_ValueType/ class=md-nav__link> <span class=md-ellipsis> operator ValueType </span> </a> </li> <li class=md-nav__item> <a href=../operator_value_t/ class=md-nav__link> <span class=md-ellipsis> operator value_t </span> </a> </li> <li class=md-nav__item> <a href=../operator%5B%5D/ class=md-nav__link> <span class=md-ellipsis> operator[] </span> </a> </li> <li class=md-nav__item> <a href=../operator%3D/ class=md-nav__link> <span class=md-ellipsis> operator= </span> </a> </li> <li class=md-nav__item> <a href=../operator%2B%3D/ class=md-nav__link> <span class=md-ellipsis> operator+= </span> </a> </li> <li class=md-nav__item> <a href=../operator_eq/ class=md-nav__link> <span class=md-ellipsis> operator== </span> </a> </li> <li class=md-nav__item> <a href=../operator_ne/ class=md-nav__link> <span class=md-ellipsis> operator!= </span> </a> </li> <li class=md-nav__item> <a href=../operator_lt/ class=md-nav__link> <span class=md-ellipsis> operator< </span> </a> </li> <li class=md-nav__item> <a href=../operator_gt/ class=md-nav__link> <span class=md-ellipsis> operator> </span> </a> </li> <li class=md-nav__item> <a href=../operator_le/ class=md-nav__link> <span class=md-ellipsis> operator<= </span> </a> </li> <li class=md-nav__item> <a href=../operator_ge/ class=md-nav__link> <span class=md-ellipsis> operator>= </span> </a> </li> <li class=md-nav__item> <a href=../operator_spaceship/ class=md-nav__link> <span class=md-ellipsis> operator<=> </span> </a> </li> <li class=md-nav__item> <a href=../out_of_range/ class=md-nav__link> <span class=md-ellipsis> out_of_range </span> </a> </li> <li class=md-nav__item> <a href=../other_error/ class=md-nav__link> <span class=md-ellipsis> other_error </span> </a> </li> <li class=md-nav__item> <a href=../parse/ class=md-nav__link> <span class=md-ellipsis> parse </span> </a> </li> <li class=md-nav__item> <a href=../parse_error/ class=md-nav__link> <span class=md-ellipsis> parse_error </span> </a> </li> <li class=md-nav__item> <a href=../parse_event_t/ class=md-nav__link> <span class=md-ellipsis> parse_event_t </span> </a> </li> <li class=md-nav__item> <a href=../parser_callback_t/ class=md-nav__link> <span class=md-ellipsis> parser_callback_t </span> </a> </li> <li class=md-nav__item> <a href=../patch/ class=md-nav__link> <span class=md-ellipsis> patch </span> </a> </li> <li class=md-nav__item> <a href=../patch_inplace/ class=md-nav__link> <span class=md-ellipsis> patch_inplace </span> </a> </li> <li class=md-nav__item> <a href=../push_back/ class=md-nav__link> <span class=md-ellipsis> push_back </span> </a> </li> <li class=md-nav__item> <a href=../rbegin/ class=md-nav__link> <span class=md-ellipsis> rbegin </span> </a> </li> <li class=md-nav__item> <a href=../rend/ class=md-nav__link> <span class=md-ellipsis> rend </span> </a> </li> <li class=md-nav__item> <a href=../sax_parse/ class=md-nav__link> <span class=md-ellipsis> sax_parse </span> </a> </li> <li class=md-nav__item> <a href=../size/ class=md-nav__link> <span class=md-ellipsis> size </span> </a> </li> <li class=md-nav__item> <a href=../start_pos/ class=md-nav__link> <span class=md-ellipsis> start_pos </span> </a> </li> <li class=md-nav__item> <a href=../string_t/ class=md-nav__link> <span class=md-ellipsis> string_t </span> </a> </li> <li class=md-nav__item> <a href=../swap/ class=md-nav__link> <span class=md-ellipsis> swap </span> </a> </li> <li class=md-nav__item> <a href=../std_swap/ class=md-nav__link> <span class=md-ellipsis> std::swap&lt;basic_json&gt; </span> </a> </li> <li class=md-nav__item> <a href=../to_bjdata/ class=md-nav__link> <span class=md-ellipsis> to_bjdata </span> </a> </li> <li class=md-nav__item> <a href=../to_bson/ class=md-nav__link> <span class=md-ellipsis> to_bson </span> </a> </li> <li class=md-nav__item> <a href=../to_cbor/ class=md-nav__link> <span class=md-ellipsis> to_cbor </span> </a> </li> <li class=md-nav__item> <a href=../to_msgpack/ class=md-nav__link> <span class=md-ellipsis> to_msgpack </span> </a> </li> <li class=md-nav__item> <a href=../to_string/ class=md-nav__link> <span class=md-ellipsis> to_string </span> </a> </li> <li class=md-nav__item> <a href=../to_ubjson/ class=md-nav__link> <span class=md-ellipsis> to_ubjson </span> </a> </li> <li class=md-nav__item> <a href=../type/ class=md-nav__link> <span class=md-ellipsis> type </span> </a> </li> <li class=md-nav__item> <a href=../type_error/ class=md-nav__link> <span class=md-ellipsis> type_error </span> </a> </li> <li class=md-nav__item> <a href=../type_name/ class=md-nav__link> <span class=md-ellipsis> type_name </span> </a> </li> <li class=md-nav__item> <a href=../unflatten/ class=md-nav__link> <span class=md-ellipsis> unflatten </span> </a> </li> <li class=md-nav__item> <a href=../update/ class=md-nav__link> <span class=md-ellipsis> update </span> </a> </li> <li class=md-nav__item> <a href=../value/ class=md-nav__link> <span class=md-ellipsis> value </span> </a> </li> <li class=md-nav__item> <a href=../value_t/ class=md-nav__link> <span class=md-ellipsis> value_t </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_2> <div class="md-nav__link md-nav__container"> <a href=../../byte_container_with_subtype/ class="md-nav__link "> <span class=md-ellipsis> byte_container_with_subtype </span> </a> <label class="md-nav__link " for=__nav_4_2 id=__nav_4_2_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_2_label aria-expanded=false> <label class=md-nav__title for=__nav_4_2> <span class="md-nav__icon md-icon"></span> byte_container_with_subtype </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../byte_container_with_subtype/byte_container_with_subtype/ class=md-nav__link> <span class=md-ellipsis> (constructor) </span> </a> </li> <li class=md-nav__item> <a href=../../byte_container_with_subtype/clear_subtype/ class=md-nav__link> <span class=md-ellipsis> clear_subtype </span> </a> </li> <li class=md-nav__item> <a href=../../byte_container_with_subtype/has_subtype/ class=md-nav__link> <span class=md-ellipsis> has_subtype </span> </a> </li> <li class=md-nav__item> <a href=../../byte_container_with_subtype/set_subtype/ class=md-nav__link> <span class=md-ellipsis> set_subtype </span> </a> </li> <li class=md-nav__item> <a href=../../byte_container_with_subtype/subtype/ class=md-nav__link> <span class=md-ellipsis> subtype </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_3> <div class="md-nav__link md-nav__container"> <a href=../../adl_serializer/ class="md-nav__link "> <span class=md-ellipsis> adl_serializer </span> </a> <label class="md-nav__link " for=__nav_4_3 id=__nav_4_3_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_3_label aria-expanded=false> <label class=md-nav__title for=__nav_4_3> <span class="md-nav__icon md-icon"></span> adl_serializer </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../adl_serializer/from_json/ class=md-nav__link> <span class=md-ellipsis> from_json </span> </a> </li> <li class=md-nav__item> <a href=../../adl_serializer/to_json/ class=md-nav__link> <span class=md-ellipsis> to_json </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../json/ class=md-nav__link> <span class=md-ellipsis> json </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_5> <div class="md-nav__link md-nav__container"> <a href=../../json_pointer/ class="md-nav__link "> <span class=md-ellipsis> json_pointer </span> </a> <label class="md-nav__link " for=__nav_4_5 id=__nav_4_5_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_5_label aria-expanded=false> <label class=md-nav__title for=__nav_4_5> <span class="md-nav__icon md-icon"></span> json_pointer </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../json_pointer/json_pointer/ class=md-nav__link> <span class=md-ellipsis> (Constructor) </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/back/ class=md-nav__link> <span class=md-ellipsis> back </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/empty/ class=md-nav__link> <span class=md-ellipsis> empty </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/front/ class=md-nav__link> <span class=md-ellipsis> front </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_string_t/ class=md-nav__link> <span class=md-ellipsis> operator string_t </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_eq/ class=md-nav__link> <span class=md-ellipsis> operator== </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_ne/ class=md-nav__link> <span class=md-ellipsis> operator!= </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_slash/ class=md-nav__link> <span class=md-ellipsis> operator/ </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_slasheq/ class=md-nav__link> <span class=md-ellipsis> operator/= </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/parent_pointer/ class=md-nav__link> <span class=md-ellipsis> parent_pointer </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/pop_back/ class=md-nav__link> <span class=md-ellipsis> pop_back </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/pop_front/ class=md-nav__link> <span class=md-ellipsis> pop_front </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/push_back/ class=md-nav__link> <span class=md-ellipsis> push_back </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/push_front/ class=md-nav__link> <span class=md-ellipsis> push_front </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/string_t/ class=md-nav__link> <span class=md-ellipsis> string_t </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/to_string/ class=md-nav__link> <span class=md-ellipsis> to_string </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_6> <div class="md-nav__link md-nav__container"> <a href=../../json_sax/ class="md-nav__link "> <span class=md-ellipsis> json_sax </span> </a> <label class="md-nav__link " for=__nav_4_6 id=__nav_4_6_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_6_label aria-expanded=false> <label class=md-nav__title for=__nav_4_6> <span class="md-nav__icon md-icon"></span> json_sax </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../json_sax/binary/ class=md-nav__link> <span class=md-ellipsis> binary </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/boolean/ class=md-nav__link> <span class=md-ellipsis> boolean </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/end_array/ class=md-nav__link> <span class=md-ellipsis> end_array </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/end_object/ class=md-nav__link> <span class=md-ellipsis> end_object </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/key/ class=md-nav__link> <span class=md-ellipsis> key </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/null/ class=md-nav__link> <span class=md-ellipsis> null </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/number_float/ class=md-nav__link> <span class=md-ellipsis> number_float </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/number_integer/ class=md-nav__link> <span class=md-ellipsis> number_integer </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/number_unsigned/ class=md-nav__link> <span class=md-ellipsis> number_unsigned </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/parse_error/ class=md-nav__link> <span class=md-ellipsis> parse_error </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/start_array/ class=md-nav__link> <span class=md-ellipsis> start_array </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/start_object/ class=md-nav__link> <span class=md-ellipsis> start_object </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/string/ class=md-nav__link> <span class=md-ellipsis> string </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../operator_ltlt/ class=md-nav__link> <span class=md-ellipsis> operator<<(basic_json), operator<<(json_pointer) </span> </a> </li> <li class=md-nav__item> <a href=../../operator_gtgt/ class=md-nav__link> <span class=md-ellipsis> operator>>(basic_json) </span> </a> </li> <li class=md-nav__item> <a href=../../operator_literal_json/ class=md-nav__link> <span class=md-ellipsis> operator""_json </span> </a> </li> <li class=md-nav__item> <a href=../../operator_literal_json_pointer/ class=md-nav__link> <span class=md-ellipsis> operator""_json_pointer </span> </a> </li> <li class=md-nav__item> <a href=../../ordered_json/ class=md-nav__link> <span class=md-ellipsis> ordered_json </span> </a> </li> <li class=md-nav__item> <a href=../../ordered_map/ class=md-nav__link> <span class=md-ellipsis> ordered_map </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_13> <div class="md-nav__link md-nav__container"> <a href=../../macros/ class="md-nav__link "> <span class=md-ellipsis> macros </span> </a> <label class="md-nav__link " for=__nav_4_13 id=__nav_4_13_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_13_label aria-expanded=false> <label class=md-nav__title for=__nav_4_13> <span class="md-nav__icon md-icon"></span> macros </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../macros/json_assert/ class=md-nav__link> <span class=md-ellipsis> JSON_ASSERT </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_brace_init_copy_semantics/ class=md-nav__link> <span class=md-ellipsis> JSON_BRACE_INIT_COPY_SEMANTICS </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_throw_user/ class=md-nav__link> <span class=md-ellipsis> JSON_CATCH_USER, JSON_THROW_USER, JSON_TRY_USER </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_diagnostics/ class=md-nav__link> <span class=md-ellipsis> JSON_DIAGNOSTICS </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_diagnostic_positions/ class=md-nav__link> <span class=md-ellipsis> JSON_DIAGNOSTIC_POSITIONS </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_disable_enum_serialization/ class=md-nav__link> <span class=md-ellipsis> JSON_DISABLE_ENUM_SERIALIZATION </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_has_cpp_11/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_CPP_11, JSON_HAS_CPP_14, JSON_HAS_CPP_17, JSON_HAS_CPP_20 </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_has_filesystem/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_EXPERIMENTAL_FILESYSTEM, JSON_HAS_FILESYSTEM </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_has_ranges/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_RANGES </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_has_static_rtti/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_STATIC_RTTI </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_has_three_way_comparison/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_THREE_WAY_COMPARISON </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_noexception/ class=md-nav__link> <span class=md-ellipsis> JSON_NOEXCEPTION </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_no_io/ class=md-nav__link> <span class=md-ellipsis> JSON_NO_IO </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_skip_library_version_check/ class=md-nav__link> <span class=md-ellipsis> JSON_SKIP_LIBRARY_VERSION_CHECK </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_skip_unsupported_compiler_check/ class=md-nav__link> <span class=md-ellipsis> JSON_SKIP_UNSUPPORTED_COMPILER_CHECK </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_use_global_udls/ class=md-nav__link> <span class=md-ellipsis> JSON_USE_GLOBAL_UDLS </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_use_implicit_conversions/ class=md-nav__link> <span class=md-ellipsis> JSON_USE_IMPLICIT_CONVERSIONS </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_use_legacy_discarded_value_comparison/ class=md-nav__link> <span class=md-ellipsis> JSON_USE_LEGACY_DISCARDED_VALUE_COMPARISON </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_define_derived_type/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_ONLY_SERIALIZE, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_define_type_intrusive/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_TYPE_INTRUSIVE, NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_TYPE_INTRUSIVE_ONLY_SERIALIZE </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_define_type_non_intrusive/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_define_type_with_names/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_TYPE_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_namespace/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_NAMESPACE </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_namespace_begin/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_NAMESPACE_BEGIN, NLOHMANN_JSON_NAMESPACE_END </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_namespace_no_version/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_NAMESPACE_NO_VERSION </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_serialize_enum/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_SERIALIZE_ENUM </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_serialize_enum_strict/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_SERIALIZE_ENUM_STRICT </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_version_major/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_VERSION_MAJOR, NLOHMANN_JSON_VERSION_MINOR, NLOHMANN_JSON_VERSION_PATCH </span> </a> </li> </ul> </nav> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_5> <div class="md-nav__link md-nav__container"> <a href=../../../community/ class="md-nav__link "> <span class=md-ellipsis> Community </span> </a> <label class="md-nav__link " for=__nav_5 id=__nav_5_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_5_label aria-expanded=false> <label class=md-nav__title for=__nav_5> <span class="md-nav__icon md-icon"></span> Community </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../community/code_of_conduct/ class=md-nav__link> <span class=md-ellipsis> Code of Conduct </span> </a> </li> <li class=md-nav__item> <a href=../../../community/contribution_guidelines/ class=md-nav__link> <span class=md-ellipsis> Contribution Guidelines </span> </a> </li> <li class=md-nav__item> <a href=../../../community/quality_assurance/ class=md-nav__link> <span class=md-ellipsis> Quality assurance </span> </a> </li> <li class=md-nav__item> <a href=../../../community/governance/ class=md-nav__link> <span class=md-ellipsis> Governance </span> </a> </li> <li class=md-nav__item> <a href=../../../community/security_policy/ class=md-nav__link> <span class=md-ellipsis> Security Policy </span> </a> </li> </ul> </nav> </li> </ul> </nav> </div> </div> </div> <div class="md-sidebar md-sidebar--secondary" data-md-component=sidebar data-md-type=toc> <div class=md-sidebar__scrollwrap> <div class=md-sidebar__inner> <nav class="md-nav md-nav--secondary" aria-label="Table of contents"> <label class=md-nav__title for=__toc> <span class="md-nav__icon md-icon"></span> Table of contents </label> <ul class=md-nav__list data-md-component=toc data-md-scrollfix> <li class=md-nav__item> <a href=#return-value class=md-nav__link> <span class=md-ellipsis> Return value </span> </a> </li> <li class=md-nav__item> <a href=#exception-safety class=md-nav__link> <span class=md-ellipsis> Exception safety </span> </a> </li> <li class=md-nav__item> <a href=#complexity class=md-nav__link> <span class=md-ellipsis> Complexity </span> </a> </li> <li class=md-nav__item> <a href=#examples class=md-nav__link> <span class=md-ellipsis> Examples </span> </a> </li> <li class=md-nav__item> <a href=#version-history class=md-nav__link> <span class=md-ellipsis> Version history </span> </a> </li> </ul> </nav> </div> </div> </div> <div class=md-content data-md-component=content> <article class="md-content__inner md-typeset"> <a href="https://github.com/nlohmann/json/edit/develop/docs/mkdocs/docs/api/basic_json/crend.md" title="Edit this page" class="md-content__button md-icon" rel="edit"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M10 20H6V4h7v5h5v3.1l2-2V8l-6-6H6c-1.1 0-2 .9-2 2v16c0 1.1.9 2 2 2h4zm10.2-7c.1 0 .3.1.4.2l1.3 1.3c.2.2.2.6 0 .8l-1 1-2.1-2.1 1-1c.1-.1.2-.2.4-.2m0 3.9L14.1 23H12v-2.1l6.1-6.1z"/></svg> </a> <a href="https://github.com/nlohmann/json/raw/develop/docs/mkdocs/docs/api/basic_json/crend.md" title="View source of this page" class="md-content__button md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M17 18c.56 0 1 .44 1 1s-.44 1-1 1-1-.44-1-1 .44-1 1-1m0-3c-2.73 0-5.06 1.66-6 4 .94 2.34 3.27 4 6 4s5.06-1.66 6-4c-.94-2.34-3.27-4-6-4m0 6.5a2.5 2.5 0 0 1-2.5-2.5 2.5 2.5 0 0 1 2.5-2.5 2.5 2.5 0 0 1 2.5 2.5 2.5 2.5 0 0 1-2.5 2.5M9.27 20H6V4h7v5h5v4.07c.7.08 1.36.25 2 .49V8l-6-6H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h4.5a8.2 8.2 0 0 1-1.23-2"/></svg> </a> <h1 id=nlohmannbasic_jsoncrend><small>nlohmann::basic_json::</small>crend<a class=headerlink href=#nlohmannbasic_jsoncrend title="Permanent link">&para;</a></h1> <div class=highlight><pre><span></span><code><span class=n>const_reverse_iterator</span><span class=w> </span><span class=nf>crend</span><span class=p>()</span><span class=w> </span><span class=k>const</span><span class=w> </span><span class=k>noexcept</span><span class=p>;</span>
-</code></pre></div> <p>Returns an iterator to the reverse-end; that is, one before the first element. This element acts as a placeholder, attempting to access it results in undefined behavior.</p> <p><img alt="Illustration from cppreference.com" src=../../../images/range-rbegin-rend.svg></p> <h2 id=return-value>Return value<a class=headerlink href=#return-value title="Permanent link">&para;</a></h2> <p>reverse iterator to the element following the last element</p> <h2 id=exception-safety>Exception safety<a class=headerlink href=#exception-safety title="Permanent link">&para;</a></h2> <p>No-throw guarantee: this member function never throws exceptions.</p> <h2 id=complexity>Complexity<a class=headerlink href=#complexity title="Permanent link">&para;</a></h2> <p>Constant.</p> <h2 id=examples>Examples<a class=headerlink href=#examples title="Permanent link">&para;</a></h2> <details class=example> <summary>Example</summary> <p>The following code shows an example for <code>eend()</code>.</p> <div class=highlight><pre><span></span><code><span class=cp>#include</span><span class=w> </span><span class=cpf>&lt;iostream&gt;</span>
+</code></pre></div> <p>Returns an iterator to the reverse-end; that is, one before the first element. This element acts as a placeholder, attempting to access it results in undefined behavior.</p> <p><img alt="Illustration from cppreference.com" src=../../../images/range-rbegin-rend.svg></p> <h2 id=return-value>Return value<a class=headerlink href=#return-value title="Permanent link">&para;</a></h2> <p>reverse iterator to the element following the last element</p> <h2 id=exception-safety>Exception safety<a class=headerlink href=#exception-safety title="Permanent link">&para;</a></h2> <p>No-throw guarantee: this member function never throws exceptions.</p> <h2 id=complexity>Complexity<a class=headerlink href=#complexity title="Permanent link">&para;</a></h2> <p>Constant.</p> <h2 id=examples>Examples<a class=headerlink href=#examples title="Permanent link">&para;</a></h2> <details class=example> <summary>Example</summary> <p>The following code shows an example for <code>crend()</code>.</p> <div class=highlight><pre><span></span><code><span class=cp>#include</span><span class=w> </span><span class=cpf>&lt;iostream&gt;</span>
 <span class=cp>#include</span><span class=w> </span><span class=cpf>&lt;nlohmann/json.hpp&gt;</span>
 
 <span class=k>using</span><span class=w> </span><span class=n>json</span><span class=w> </span><span class=o>=</span><span class=w> </span><span class=n>nlohmann</span><span class=o>::</span><span class=n>json</span><span class=p>;</span>
@@ -19,4 +19,4 @@
 <span class=w>    </span><span class=n>std</span><span class=o>::</span><span class=n>cout</span><span class=w> </span><span class=o>&lt;&lt;</span><span class=w> </span><span class=o>*</span><span class=n>it</span><span class=w> </span><span class=o>&lt;&lt;</span><span class=w> </span><span class=sc>&#39;\n&#39;</span><span class=p>;</span>
 <span class=p>}</span>
 </code></pre></div> <p>Output:</p> <div class=highlight><pre><span></span><code><span class=mi>1</span>
-</code></pre></div> </details> <h2 id=version-history>Version history<a class=headerlink href=#version-history title="Permanent link">&para;</a></h2> <ul> <li>Added in version 1.0.0.</li> </ul> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 23, 2026 11:16:18 UTC">June 23, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
+</code></pre></div> </details> <h2 id=version-history>Version history<a class=headerlink href=#version-history title="Permanent link">&para;</a></h2> <ul> <li>Added in version 1.0.0.</li> </ul> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 29, 2026 20:15:18 UTC">June 29, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
diff --git a/api/basic_json/default_object_comparator_t/index.html b/api/basic_json/default_object_comparator_t/index.html
index 90d2149..7e41455 100644
--- a/api/basic_json/default_object_comparator_t/index.html
+++ b/api/basic_json/default_object_comparator_t/index.html
@@ -14,4 +14,4 @@
 <span class=p>}</span>
 </code></pre></div> <p>Output:</p> <div class=highlight><pre><span></span><code><span class=err>o</span><span class=kc>ne</span><span class=w> </span><span class=err>&lt;</span><span class=w> </span><span class=kc>t</span><span class=err>wo</span><span class=w> </span><span class=p>:</span><span class=w> </span><span class=kc>true</span>
 <span class=kc>t</span><span class=err>hree</span><span class=w> </span><span class=err>&lt;</span><span class=w> </span><span class=kc>f</span><span class=err>our</span><span class=w> </span><span class=p>:</span><span class=w> </span><span class=kc>false</span>
-</code></pre></div> </details> <h2 id=version-history>Version history<a class=headerlink href=#version-history title="Permanent link">&para;</a></h2> <ul> <li>Added in version 3.11.0.</li> </ul> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 23, 2026 11:16:18 UTC">June 23, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
+</code></pre></div> </details> <h2 id=version-history>Version history<a class=headerlink href=#version-history title="Permanent link">&para;</a></h2> <ul> <li>Added in version 3.11.0.</li> </ul> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 29, 2026 20:15:18 UTC">June 29, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
diff --git a/api/basic_json/diff/index.html b/api/basic_json/diff/index.html
index 57ff9a7..5098171 100644
--- a/api/basic_json/diff/index.html
+++ b/api/basic_json/diff/index.html
@@ -63,4 +63,4 @@
 <span class=w>        </span><span class=s2>&quot;world&quot;</span>
 <span class=w>    </span><span class=p>]</span>
 <span class=p>}</span>
-</code></pre></div> </details> <h2 id=see-also>See also<a class=headerlink href=#see-also title="Permanent link">&para;</a></h2> <ul> <li><a href="https://tools.ietf.org/html/rfc6902"><abbr title="Request for Comments">RFC</abbr> 6902 (<abbr title="JavaScript Object Notation">JSON</abbr> Patch)</a></li> </ul> <h2 id=version-history>Version history<a class=headerlink href=#version-history title="Permanent link">&para;</a></h2> <ul> <li>Added in version 2.0.0.</li> </ul> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 23, 2026 11:16:18 UTC">June 23, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
+</code></pre></div> </details> <h2 id=see-also>See also<a class=headerlink href=#see-also title="Permanent link">&para;</a></h2> <ul> <li><a href="https://tools.ietf.org/html/rfc6902"><abbr title="Request for Comments">RFC</abbr> 6902 (<abbr title="JavaScript Object Notation">JSON</abbr> Patch)</a></li> <li><a href=../patch/ >patch</a> applies a <abbr title="JavaScript Object Notation">JSON</abbr> Patch</li> <li><a href=../patch_inplace/ >patch_inplace</a> applies a <abbr title="JavaScript Object Notation">JSON</abbr> Patch in place</li> <li><a href=../merge_patch/ >merge_patch</a> applies a <abbr title="JavaScript Object Notation">JSON</abbr> Merge Patch</li> </ul> <h2 id=version-history>Version history<a class=headerlink href=#version-history title="Permanent link">&para;</a></h2> <ul> <li>Added in version 2.0.0.</li> </ul> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 29, 2026 20:15:18 UTC">June 29, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
diff --git a/api/basic_json/dump/index.html b/api/basic_json/dump/index.html
index 2dfde59..cd50dc5 100644
--- a/api/basic_json/dump/index.html
+++ b/api/basic_json/dump/index.html
@@ -1,8 +1,8 @@
-<!doctype html><html lang=en class=no-js> <head><meta charset=utf-8><meta name=viewport content="width=device-width,initial-scale=1"><meta name=author content="Niels Lohmann"><link href="https://json.nlohmann.me/api/basic_json/dump/" rel="canonical"><link href=../diff/ rel=prev><link href=../emplace/ rel=next><link rel=icon href=../../../assets/images/favicon.png><meta name=generator content="mkdocs-1.6.1, mkdocs-material-9.7.6"><title>dump - JSON for Modern C++</title><link rel=stylesheet href=../../../assets/stylesheets/main.484c7ddc.min.css><link rel=stylesheet href=../../../assets/stylesheets/palette.ab4e12ef.min.css><link rel="stylesheet" href="../../../assets/external/fonts.googleapis.com/css.61a430c9.css"><style>:root{--md-text-font:"Roboto";--md-code-font:"JetBrains Mono"}</style><link rel=stylesheet href=../../../css/custom.css><script>__md_scope=new URL("../../..",location),__md_hash=e=>[...e].reduce(((e,_)=>(e<<5)-e+_.charCodeAt(0)),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script></head> <body dir=ltr data-md-color-scheme=default data-md-color-primary=indigo data-md-color-accent=indigo> <input class=md-toggle data-md-toggle=drawer type=checkbox id=__drawer autocomplete=off> <input class=md-toggle data-md-toggle=search type=checkbox id=__search autocomplete=off> <label class=md-overlay for=__drawer></label> <div data-md-component=skip> <a href=#nlohmannbasic_jsondump class=md-skip> Skip to content </a> </div> <div data-md-component=announce> </div> <header class=md-header data-md-component=header> <nav class="md-header__inner md-grid" aria-label=Header> <a href=../../.. title="JSON for Modern C++" class="md-header__button md-logo" aria-label="JSON for Modern C++" data-md-component=logo> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54"/></svg> </a> <label class="md-header__button md-icon" for=__drawer> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M3 6h18v2H3zm0 5h18v2H3zm0 5h18v2H3z"/></svg> </label> <div class=md-header__title data-md-component=header-title> <div class=md-header__ellipsis> <div class=md-header__topic> <span class=md-ellipsis> JSON for Modern C++ </span> </div> <div class=md-header__topic data-md-component=header-topic> <span class=md-ellipsis> dump </span> </div> </div> </div> <form class=md-header__option data-md-component=palette> <input class=md-option data-md-color-media="(prefers-color-scheme: light)" data-md-color-scheme=default data-md-color-primary=indigo data-md-color-accent=indigo aria-label="Switch to dark mode" type=radio name=__palette id=__palette_0> <label class="md-header__button md-icon" title="Switch to dark mode" for=__palette_1 hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a4 4 0 0 0-4 4 4 4 0 0 0 4 4 4 4 0 0 0 4-4 4 4 0 0 0-4-4m0 10a6 6 0 0 1-6-6 6 6 0 0 1 6-6 6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12z"/></svg> </label> <input class=md-option data-md-color-media="(prefers-color-scheme: dark)" data-md-color-scheme=slate data-md-color-primary=indigo data-md-color-accent=indigo aria-label="Switch to light mode" type=radio name=__palette id=__palette_1> <label class="md-header__button md-icon" title="Switch to light mode" for=__palette_0 hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 18c-.89 0-1.74-.2-2.5-.55C11.56 16.5 13 14.42 13 12s-1.44-4.5-3.5-5.45C10.26 6.2 11.11 6 12 6a6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12z"/></svg> </label> </form> <script>var palette=__md_get("__palette");if(palette&&palette.color){if("(prefers-color-scheme)"===palette.color.media){var media=matchMedia("(prefers-color-scheme: light)"),input=document.querySelector(media.matches?"[data-md-color-media='(prefers-color-scheme: light)']":"[data-md-color-media='(prefers-color-scheme: dark)']");palette.color.media=input.getAttribute("data-md-color-media"),palette.color.scheme=input.getAttribute("data-md-color-scheme"),palette.color.primary=input.getAttribute("data-md-color-primary"),palette.color.accent=input.getAttribute("data-md-color-accent")}for(var[key,value]of Object.entries(palette.color))document.body.setAttribute("data-md-color-"+key,value)}</script> <label class="md-header__button md-icon" for=__search> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg> </label> <div class=md-search data-md-component=search role=dialog> <label class=md-search__overlay for=__search></label> <div class=md-search__inner role=search> <form class=md-search__form name=search> <input type=text class=md-search__input name=query aria-label=Search placeholder=Search autocapitalize=off autocorrect=off autocomplete=off spellcheck=false data-md-component=search-query required> <label class="md-search__icon md-icon" for=__search> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11z"/></svg> </label> <nav class=md-search__options aria-label=Search> <button type=reset class="md-search__icon md-icon" title=Clear aria-label=Clear tabindex=-1> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z"/></svg> </button> </nav> </form> <div class=md-search__output> <div class=md-search__scrollwrap tabindex=0 data-md-scrollfix> <div class=md-search-result data-md-component=search-result> <div class=md-search-result__meta> Initializing search </div> <ol class=md-search-result__list role=presentation></ol> </div> </div> </div> </div> </div> <div class=md-header__source> <a href="https://github.com/nlohmann/json" title="Go to repository" class="md-source" data-md-component="source"> <div class="md-source__icon md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </div> <div class=md-source__repository> nlohmann/json </div> </a> </div> </nav> </header> <div class=md-container data-md-component=container> <nav class=md-tabs aria-label=Tabs data-md-component=tabs> <div class=md-grid> <ul class=md-tabs__list> <li class=md-tabs__item> <a href=../../.. class=md-tabs__link> Home </a> </li> <li class=md-tabs__item> <a href=../../../features/arbitrary_types/ class=md-tabs__link> Features </a> </li> <li class=md-tabs__item> <a href=../../../integration/ class=md-tabs__link> Integration </a> </li> <li class="md-tabs__item md-tabs__item--active"> <a href=../ class=md-tabs__link> API Documentation </a> </li> <li class=md-tabs__item> <a href=../../../community/ class=md-tabs__link> Community </a> </li> </ul> </div> </nav> <main class=md-main data-md-component=main> <div class="md-main__inner md-grid"> <div class="md-sidebar md-sidebar--primary" data-md-component=sidebar data-md-type=navigation> <div class=md-sidebar__scrollwrap> <div class=md-sidebar__inner> <nav class="md-nav md-nav--primary md-nav--lifted" aria-label=Navigation data-md-level=0> <label class=md-nav__title for=__drawer> <a href=../../.. title="JSON for Modern C++" class="md-nav__button md-logo" aria-label="JSON for Modern C++" data-md-component=logo> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54"/></svg> </a> JSON for Modern C++ </label> <div class=md-nav__source> <a href="https://github.com/nlohmann/json" title="Go to repository" class="md-source" data-md-component="source"> <div class="md-source__icon md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </div> <div class=md-source__repository> nlohmann/json </div> </a> </div> <ul class=md-nav__list data-md-scrollfix> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_1> <div class="md-nav__link md-nav__container"> <a href=../../.. class="md-nav__link "> <span class=md-ellipsis> Home </span> </a> <label class="md-nav__link " for=__nav_1 id=__nav_1_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_1_label aria-expanded=false> <label class=md-nav__title for=__nav_1> <span class="md-nav__icon md-icon"></span> Home </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../home/license/ class=md-nav__link> <span class=md-ellipsis> License </span> </a> </li> <li class=md-nav__item> <a href=../../../home/faq/ class=md-nav__link> <span class=md-ellipsis> FAQ </span> </a> </li> <li class=md-nav__item> <a href=../../../home/exceptions/ class=md-nav__link> <span class=md-ellipsis> Exceptions </span> </a> </li> <li class=md-nav__item> <a href=../../../home/releases/ class=md-nav__link> <span class=md-ellipsis> Releases </span> </a> </li> <li class=md-nav__item> <a href=../../../home/design_goals/ class=md-nav__link> <span class=md-ellipsis> Design goals </span> </a> </li> <li class=md-nav__item> <a href=../../../home/architecture/ class=md-nav__link> <span class=md-ellipsis> Architecture </span> </a> </li> <li class=md-nav__item> <a href=../../../home/customers/ class=md-nav__link> <span class=md-ellipsis> Customers </span> </a> </li> <li class=md-nav__item> <a href=../../../home/sponsors/ class=md-nav__link> <span class=md-ellipsis> Sponsors </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2> <label class=md-nav__link for=__nav_2 id=__nav_2_label tabindex=0> <span class=md-ellipsis> Features </span> <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_2_label aria-expanded=false> <label class=md-nav__title for=__nav_2> <span class="md-nav__icon md-icon"></span> Features </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/arbitrary_types/ class=md-nav__link> <span class=md-ellipsis> Arbitrary Type Conversions </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_2> <div class="md-nav__link md-nav__container"> <a href=../../../features/binary_formats/ class="md-nav__link "> <span class=md-ellipsis> Binary Formats </span> </a> <label class="md-nav__link " for=__nav_2_2 id=__nav_2_2_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_2_label aria-expanded=false> <label class=md-nav__title for=__nav_2_2> <span class="md-nav__icon md-icon"></span> Binary Formats </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/binary_formats/bjdata/ class=md-nav__link> <span class=md-ellipsis> BJData </span> </a> </li> <li class=md-nav__item> <a href=../../../features/binary_formats/bson/ class=md-nav__link> <span class=md-ellipsis> BSON </span> </a> </li> <li class=md-nav__item> <a href=../../../features/binary_formats/cbor/ class=md-nav__link> <span class=md-ellipsis> CBOR </span> </a> </li> <li class=md-nav__item> <a href=../../../features/binary_formats/messagepack/ class=md-nav__link> <span class=md-ellipsis> MessagePack </span> </a> </li> <li class=md-nav__item> <a href=../../../features/binary_formats/ubjson/ class=md-nav__link> <span class=md-ellipsis> UBJSON </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../../features/binary_values/ class=md-nav__link> <span class=md-ellipsis> Binary Values </span> </a> </li> <li class=md-nav__item> <a href=../../../features/comments/ class=md-nav__link> <span class=md-ellipsis> Comments </span> </a> </li> <li class=md-nav__item> <a href=../../../features/trailing_commas/ class=md-nav__link> <span class=md-ellipsis> Trailing Commas </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_6> <div class="md-nav__link md-nav__container"> <a href=../../../features/element_access/ class="md-nav__link "> <span class=md-ellipsis> Element Access </span> </a> <label class="md-nav__link " for=__nav_2_6 id=__nav_2_6_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_6_label aria-expanded=false> <label class=md-nav__title for=__nav_2_6> <span class="md-nav__icon md-icon"></span> Element Access </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/element_access/unchecked_access/ class=md-nav__link> <span class=md-ellipsis> Unchecked access: operator[] </span> </a> </li> <li class=md-nav__item> <a href=../../../features/element_access/checked_access/ class=md-nav__link> <span class=md-ellipsis> Checked access: at </span> </a> </li> <li class=md-nav__item> <a href=../../../features/element_access/default_value/ class=md-nav__link> <span class=md-ellipsis> Access with default value: value </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../../features/iterators/ class=md-nav__link> <span class=md-ellipsis> Iterators </span> </a> </li> <li class=md-nav__item> <a href=../../../features/json_pointer/ class=md-nav__link> <span class=md-ellipsis> JSON Pointer </span> </a> </li> <li class=md-nav__item> <a href=../../../features/json_patch/ class=md-nav__link> <span class=md-ellipsis> JSON Patch and Diff </span> </a> </li> <li class=md-nav__item> <a href=../../../features/merge_patch/ class=md-nav__link> <span class=md-ellipsis> JSON Merge Patch </span> </a> </li> <li class=md-nav__item> <a href=../../../features/modules/ class=md-nav__link> <span class=md-ellipsis> Modules </span> </a> </li> <li class=md-nav__item> <a href=../../../features/namespace/ class=md-nav__link> <span class=md-ellipsis> nlohmann Namespace </span> </a> </li> <li class=md-nav__item> <a href=../../../features/object_order/ class=md-nav__link> <span class=md-ellipsis> Object Order </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_14> <div class="md-nav__link md-nav__container"> <a href=../../../features/parsing/ class="md-nav__link "> <span class=md-ellipsis> Parsing </span> </a> <label class="md-nav__link " for=__nav_2_14 id=__nav_2_14_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_14_label aria-expanded=false> <label class=md-nav__title for=__nav_2_14> <span class="md-nav__icon md-icon"></span> Parsing </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/parsing/json_lines/ class=md-nav__link> <span class=md-ellipsis> JSON Lines </span> </a> </li> <li class=md-nav__item> <a href=../../../features/parsing/parse_exceptions/ class=md-nav__link> <span class=md-ellipsis> Parsing and Exceptions </span> </a> </li> <li class=md-nav__item> <a href=../../../features/parsing/parser_callbacks/ class=md-nav__link> <span class=md-ellipsis> Parser Callbacks </span> </a> </li> <li class=md-nav__item> <a href=../../../features/parsing/sax_interface/ class=md-nav__link> <span class=md-ellipsis> SAX Interface </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../../features/assertions/ class=md-nav__link> <span class=md-ellipsis> Runtime Assertions </span> </a> </li> <li class=md-nav__item> <a href=../../../features/enum_conversion/ class=md-nav__link> <span class=md-ellipsis> Specializing enum conversion </span> </a> </li> <li class=md-nav__item> <a href=../../../features/macros/ class=md-nav__link> <span class=md-ellipsis> Supported Macros </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_18> <div class="md-nav__link md-nav__container"> <a href=../../../features/types/ class="md-nav__link "> <span class=md-ellipsis> Types </span> </a> <label class="md-nav__link " for=__nav_2_18 id=__nav_2_18_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_18_label aria-expanded=false> <label class=md-nav__title for=__nav_2_18> <span class="md-nav__icon md-icon"></span> Types </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/types/number_handling/ class=md-nav__link> <span class=md-ellipsis> Number Handling </span> </a> </li> </ul> </nav> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_3> <div class="md-nav__link md-nav__container"> <a href=../../../integration/ class="md-nav__link "> <span class=md-ellipsis> Integration </span> </a> <label class="md-nav__link " for=__nav_3 id=__nav_3_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_3_label aria-expanded=false> <label class=md-nav__title for=__nav_3> <span class="md-nav__icon md-icon"></span> Integration </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../integration/migration_guide/ class=md-nav__link> <span class=md-ellipsis> Migration Guide </span> </a> </li> <li class=md-nav__item> <a href=../../../integration/cmake/ class=md-nav__link> <span class=md-ellipsis> CMake </span> </a> </li> <li class=md-nav__item> <a href=../../../integration/package_managers/ class=md-nav__link> <span class=md-ellipsis> Package Managers </span> </a> </li> <li class=md-nav__item> <a href=../../../integration/pkg-config/ class=md-nav__link> <span class=md-ellipsis> Pkg-config </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--active md-nav__item--section md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4 checked> <label class=md-nav__link for=__nav_4 id=__nav_4_label tabindex> <span class=md-ellipsis> API Documentation </span> <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_4_label aria-expanded=true> <label class=md-nav__title for=__nav_4> <span class="md-nav__icon md-icon"></span> API Documentation </label> <ul class=md-nav__list data-md-scrollfix> <li class="md-nav__item md-nav__item--active md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_1 checked> <div class="md-nav__link md-nav__container"> <a href=../ class="md-nav__link "> <span class=md-ellipsis> basic_json </span> </a> <label class="md-nav__link " for=__nav_4_1 id=__nav_4_1_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_1_label aria-expanded=true> <label class=md-nav__title for=__nav_4_1> <span class="md-nav__icon md-icon"></span> basic_json </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../basic_json/ class=md-nav__link> <span class=md-ellipsis> (Constructor) </span> </a> </li> <li class=md-nav__item> <a href=../~basic_json/ class=md-nav__link> <span class=md-ellipsis> (Destructor) </span> </a> </li> <li class=md-nav__item> <a href=../accept/ class=md-nav__link> <span class=md-ellipsis> accept </span> </a> </li> <li class=md-nav__item> <a href=../array/ class=md-nav__link> <span class=md-ellipsis> array </span> </a> </li> <li class=md-nav__item> <a href=../array_t/ class=md-nav__link> <span class=md-ellipsis> array_t </span> </a> </li> <li class=md-nav__item> <a href=../at/ class=md-nav__link> <span class=md-ellipsis> at </span> </a> </li> <li class=md-nav__item> <a href=../back/ class=md-nav__link> <span class=md-ellipsis> back </span> </a> </li> <li class=md-nav__item> <a href=../begin/ class=md-nav__link> <span class=md-ellipsis> begin </span> </a> </li> <li class=md-nav__item> <a href=../binary/ class=md-nav__link> <span class=md-ellipsis> binary </span> </a> </li> <li class=md-nav__item> <a href=../binary_t/ class=md-nav__link> <span class=md-ellipsis> binary_t </span> </a> </li> <li class=md-nav__item> <a href=../boolean_t/ class=md-nav__link> <span class=md-ellipsis> boolean_t </span> </a> </li> <li class=md-nav__item> <a href=../cbegin/ class=md-nav__link> <span class=md-ellipsis> cbegin </span> </a> </li> <li class=md-nav__item> <a href=../cbor_tag_handler_t/ class=md-nav__link> <span class=md-ellipsis> cbor_tag_handler_t </span> </a> </li> <li class=md-nav__item> <a href=../cend/ class=md-nav__link> <span class=md-ellipsis> cend </span> </a> </li> <li class=md-nav__item> <a href=../clear/ class=md-nav__link> <span class=md-ellipsis> clear </span> </a> </li> <li class=md-nav__item> <a href=../contains/ class=md-nav__link> <span class=md-ellipsis> contains </span> </a> </li> <li class=md-nav__item> <a href=../count/ class=md-nav__link> <span class=md-ellipsis> count </span> </a> </li> <li class=md-nav__item> <a href=../crbegin/ class=md-nav__link> <span class=md-ellipsis> crbegin </span> </a> </li> <li class=md-nav__item> <a href=../crend/ class=md-nav__link> <span class=md-ellipsis> crend </span> </a> </li> <li class=md-nav__item> <a href=../default_object_comparator_t/ class=md-nav__link> <span class=md-ellipsis> default_object_comparator_t </span> </a> </li> <li class=md-nav__item> <a href=../diff/ class=md-nav__link> <span class=md-ellipsis> diff </span> </a> </li> <li class="md-nav__item md-nav__item--active"> <input class="md-nav__toggle md-toggle" type=checkbox id=__toc> <label class="md-nav__link md-nav__link--active" for=__toc> <span class=md-ellipsis> dump </span> <span class="md-nav__icon md-icon"></span> </label> <a href=./ class="md-nav__link md-nav__link--active"> <span class=md-ellipsis> dump </span> </a> <nav class="md-nav md-nav--secondary" aria-label="Table of contents"> <label class=md-nav__title for=__toc> <span class="md-nav__icon md-icon"></span> Table of contents </label> <ul class=md-nav__list data-md-component=toc data-md-scrollfix> <li class=md-nav__item> <a href=#parameters class=md-nav__link> <span class=md-ellipsis> Parameters </span> </a> </li> <li class=md-nav__item> <a href=#return-value class=md-nav__link> <span class=md-ellipsis> Return value </span> </a> </li> <li class=md-nav__item> <a href=#exception-safety class=md-nav__link> <span class=md-ellipsis> Exception safety </span> </a> </li> <li class=md-nav__item> <a href=#exceptions class=md-nav__link> <span class=md-ellipsis> Exceptions </span> </a> </li> <li class=md-nav__item> <a href=#complexity class=md-nav__link> <span class=md-ellipsis> Complexity </span> </a> </li> <li class=md-nav__item> <a href=#notes class=md-nav__link> <span class=md-ellipsis> Notes </span> </a> </li> <li class=md-nav__item> <a href=#examples class=md-nav__link> <span class=md-ellipsis> Examples </span> </a> </li> <li class=md-nav__item> <a href=#version-history class=md-nav__link> <span class=md-ellipsis> Version history </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../emplace/ class=md-nav__link> <span class=md-ellipsis> emplace </span> </a> </li> <li class=md-nav__item> <a href=../emplace_back/ class=md-nav__link> <span class=md-ellipsis> emplace_back </span> </a> </li> <li class=md-nav__item> <a href=../empty/ class=md-nav__link> <span class=md-ellipsis> empty </span> </a> </li> <li class=md-nav__item> <a href=../end/ class=md-nav__link> <span class=md-ellipsis> end </span> </a> </li> <li class=md-nav__item> <a href=../end_pos/ class=md-nav__link> <span class=md-ellipsis> end_pos </span> </a> </li> <li class=md-nav__item> <a href=../erase/ class=md-nav__link> <span class=md-ellipsis> erase </span> </a> </li> <li class=md-nav__item> <a href=../error_handler_t/ class=md-nav__link> <span class=md-ellipsis> error_handler_t </span> </a> </li> <li class=md-nav__item> <a href=../exception/ class=md-nav__link> <span class=md-ellipsis> exception </span> </a> </li> <li class=md-nav__item> <a href=../find/ class=md-nav__link> <span class=md-ellipsis> find </span> </a> </li> <li class=md-nav__item> <a href=../flatten/ class=md-nav__link> <span class=md-ellipsis> flatten </span> </a> </li> <li class=md-nav__item> <a href=../from_bjdata/ class=md-nav__link> <span class=md-ellipsis> from_bjdata </span> </a> </li> <li class=md-nav__item> <a href=../from_bson/ class=md-nav__link> <span class=md-ellipsis> from_bson </span> </a> </li> <li class=md-nav__item> <a href=../from_cbor/ class=md-nav__link> <span class=md-ellipsis> from_cbor </span> </a> </li> <li class=md-nav__item> <a href=../from_msgpack/ class=md-nav__link> <span class=md-ellipsis> from_msgpack </span> </a> </li> <li class=md-nav__item> <a href=../from_ubjson/ class=md-nav__link> <span class=md-ellipsis> from_ubjson </span> </a> </li> <li class=md-nav__item> <a href=../front/ class=md-nav__link> <span class=md-ellipsis> front </span> </a> </li> <li class=md-nav__item> <a href=../get/ class=md-nav__link> <span class=md-ellipsis> get </span> </a> </li> <li class=md-nav__item> <a href=../get_allocator/ class=md-nav__link> <span class=md-ellipsis> get_allocator </span> </a> </li> <li class=md-nav__item> <a href=../get_binary/ class=md-nav__link> <span class=md-ellipsis> get_binary </span> </a> </li> <li class=md-nav__item> <a href=../get_ptr/ class=md-nav__link> <span class=md-ellipsis> get_ptr </span> </a> </li> <li class=md-nav__item> <a href=../get_ref/ class=md-nav__link> <span class=md-ellipsis> get_ref </span> </a> </li> <li class=md-nav__item> <a href=../get_to/ class=md-nav__link> <span class=md-ellipsis> get_to </span> </a> </li> <li class=md-nav__item> <a href=../std_hash/ class=md-nav__link> <span class=md-ellipsis> std::hash&lt;basic_json&gt; </span> </a> </li> <li class=md-nav__item> <a href=../input_format_t/ class=md-nav__link> <span class=md-ellipsis> input_format_t </span> </a> </li> <li class=md-nav__item> <a href=../insert/ class=md-nav__link> <span class=md-ellipsis> insert </span> </a> </li> <li class=md-nav__item> <a href=../invalid_iterator/ class=md-nav__link> <span class=md-ellipsis> invalid_iterator </span> </a> </li> <li class=md-nav__item> <a href=../is_array/ class=md-nav__link> <span class=md-ellipsis> is_array </span> </a> </li> <li class=md-nav__item> <a href=../is_binary/ class=md-nav__link> <span class=md-ellipsis> is_binary </span> </a> </li> <li class=md-nav__item> <a href=../is_boolean/ class=md-nav__link> <span class=md-ellipsis> is_boolean </span> </a> </li> <li class=md-nav__item> <a href=../is_discarded/ class=md-nav__link> <span class=md-ellipsis> is_discarded </span> </a> </li> <li class=md-nav__item> <a href=../is_null/ class=md-nav__link> <span class=md-ellipsis> is_null </span> </a> </li> <li class=md-nav__item> <a href=../is_number/ class=md-nav__link> <span class=md-ellipsis> is_number </span> </a> </li> <li class=md-nav__item> <a href=../is_number_float/ class=md-nav__link> <span class=md-ellipsis> is_number_float </span> </a> </li> <li class=md-nav__item> <a href=../is_number_integer/ class=md-nav__link> <span class=md-ellipsis> is_number_integer </span> </a> </li> <li class=md-nav__item> <a href=../is_number_unsigned/ class=md-nav__link> <span class=md-ellipsis> is_number_unsigned </span> </a> </li> <li class=md-nav__item> <a href=../is_object/ class=md-nav__link> <span class=md-ellipsis> is_object </span> </a> </li> <li class=md-nav__item> <a href=../is_primitive/ class=md-nav__link> <span class=md-ellipsis> is_primitive </span> </a> </li> <li class=md-nav__item> <a href=../is_string/ class=md-nav__link> <span class=md-ellipsis> is_string </span> </a> </li> <li class=md-nav__item> <a href=../is_structured/ class=md-nav__link> <span class=md-ellipsis> is_structured </span> </a> </li> <li class=md-nav__item> <a href=../items/ class=md-nav__link> <span class=md-ellipsis> items </span> </a> </li> <li class=md-nav__item> <a href=../json_base_class_t/ class=md-nav__link> <span class=md-ellipsis> json_base_class_t </span> </a> </li> <li class=md-nav__item> <a href=../json_serializer/ class=md-nav__link> <span class=md-ellipsis> json_serializer </span> </a> </li> <li class=md-nav__item> <a href=../max_size/ class=md-nav__link> <span class=md-ellipsis> max_size </span> </a> </li> <li class=md-nav__item> <a href=../meta/ class=md-nav__link> <span class=md-ellipsis> meta </span> </a> </li> <li class=md-nav__item> <a href=../merge_patch/ class=md-nav__link> <span class=md-ellipsis> merge_patch </span> </a> </li> <li class=md-nav__item> <a href=../number_float_t/ class=md-nav__link> <span class=md-ellipsis> number_float_t </span> </a> </li> <li class=md-nav__item> <a href=../number_integer_t/ class=md-nav__link> <span class=md-ellipsis> number_integer_t </span> </a> </li> <li class=md-nav__item> <a href=../number_unsigned_t/ class=md-nav__link> <span class=md-ellipsis> number_unsigned_t </span> </a> </li> <li class=md-nav__item> <a href=../object/ class=md-nav__link> <span class=md-ellipsis> object </span> </a> </li> <li class=md-nav__item> <a href=../object_comparator_t/ class=md-nav__link> <span class=md-ellipsis> object_comparator_t </span> </a> </li> <li class=md-nav__item> <a href=../object_t/ class=md-nav__link> <span class=md-ellipsis> object_t </span> </a> </li> <li class=md-nav__item> <a href=../operator_ValueType/ class=md-nav__link> <span class=md-ellipsis> operator ValueType </span> </a> </li> <li class=md-nav__item> <a href=../operator_value_t/ class=md-nav__link> <span class=md-ellipsis> operator value_t </span> </a> </li> <li class=md-nav__item> <a href=../operator%5B%5D/ class=md-nav__link> <span class=md-ellipsis> operator[] </span> </a> </li> <li class=md-nav__item> <a href=../operator%3D/ class=md-nav__link> <span class=md-ellipsis> operator= </span> </a> </li> <li class=md-nav__item> <a href=../operator%2B%3D/ class=md-nav__link> <span class=md-ellipsis> operator+= </span> </a> </li> <li class=md-nav__item> <a href=../operator_eq/ class=md-nav__link> <span class=md-ellipsis> operator== </span> </a> </li> <li class=md-nav__item> <a href=../operator_ne/ class=md-nav__link> <span class=md-ellipsis> operator!= </span> </a> </li> <li class=md-nav__item> <a href=../operator_lt/ class=md-nav__link> <span class=md-ellipsis> operator< </span> </a> </li> <li class=md-nav__item> <a href=../operator_gt/ class=md-nav__link> <span class=md-ellipsis> operator> </span> </a> </li> <li class=md-nav__item> <a href=../operator_le/ class=md-nav__link> <span class=md-ellipsis> operator<= </span> </a> </li> <li class=md-nav__item> <a href=../operator_ge/ class=md-nav__link> <span class=md-ellipsis> operator>= </span> </a> </li> <li class=md-nav__item> <a href=../operator_spaceship/ class=md-nav__link> <span class=md-ellipsis> operator<=> </span> </a> </li> <li class=md-nav__item> <a href=../out_of_range/ class=md-nav__link> <span class=md-ellipsis> out_of_range </span> </a> </li> <li class=md-nav__item> <a href=../other_error/ class=md-nav__link> <span class=md-ellipsis> other_error </span> </a> </li> <li class=md-nav__item> <a href=../parse/ class=md-nav__link> <span class=md-ellipsis> parse </span> </a> </li> <li class=md-nav__item> <a href=../parse_error/ class=md-nav__link> <span class=md-ellipsis> parse_error </span> </a> </li> <li class=md-nav__item> <a href=../parse_event_t/ class=md-nav__link> <span class=md-ellipsis> parse_event_t </span> </a> </li> <li class=md-nav__item> <a href=../parser_callback_t/ class=md-nav__link> <span class=md-ellipsis> parser_callback_t </span> </a> </li> <li class=md-nav__item> <a href=../patch/ class=md-nav__link> <span class=md-ellipsis> patch </span> </a> </li> <li class=md-nav__item> <a href=../patch_inplace/ class=md-nav__link> <span class=md-ellipsis> patch_inplace </span> </a> </li> <li class=md-nav__item> <a href=../push_back/ class=md-nav__link> <span class=md-ellipsis> push_back </span> </a> </li> <li class=md-nav__item> <a href=../rbegin/ class=md-nav__link> <span class=md-ellipsis> rbegin </span> </a> </li> <li class=md-nav__item> <a href=../rend/ class=md-nav__link> <span class=md-ellipsis> rend </span> </a> </li> <li class=md-nav__item> <a href=../sax_parse/ class=md-nav__link> <span class=md-ellipsis> sax_parse </span> </a> </li> <li class=md-nav__item> <a href=../size/ class=md-nav__link> <span class=md-ellipsis> size </span> </a> </li> <li class=md-nav__item> <a href=../start_pos/ class=md-nav__link> <span class=md-ellipsis> start_pos </span> </a> </li> <li class=md-nav__item> <a href=../string_t/ class=md-nav__link> <span class=md-ellipsis> string_t </span> </a> </li> <li class=md-nav__item> <a href=../swap/ class=md-nav__link> <span class=md-ellipsis> swap </span> </a> </li> <li class=md-nav__item> <a href=../std_swap/ class=md-nav__link> <span class=md-ellipsis> std::swap&lt;basic_json&gt; </span> </a> </li> <li class=md-nav__item> <a href=../to_bjdata/ class=md-nav__link> <span class=md-ellipsis> to_bjdata </span> </a> </li> <li class=md-nav__item> <a href=../to_bson/ class=md-nav__link> <span class=md-ellipsis> to_bson </span> </a> </li> <li class=md-nav__item> <a href=../to_cbor/ class=md-nav__link> <span class=md-ellipsis> to_cbor </span> </a> </li> <li class=md-nav__item> <a href=../to_msgpack/ class=md-nav__link> <span class=md-ellipsis> to_msgpack </span> </a> </li> <li class=md-nav__item> <a href=../to_string/ class=md-nav__link> <span class=md-ellipsis> to_string </span> </a> </li> <li class=md-nav__item> <a href=../to_ubjson/ class=md-nav__link> <span class=md-ellipsis> to_ubjson </span> </a> </li> <li class=md-nav__item> <a href=../type/ class=md-nav__link> <span class=md-ellipsis> type </span> </a> </li> <li class=md-nav__item> <a href=../type_error/ class=md-nav__link> <span class=md-ellipsis> type_error </span> </a> </li> <li class=md-nav__item> <a href=../type_name/ class=md-nav__link> <span class=md-ellipsis> type_name </span> </a> </li> <li class=md-nav__item> <a href=../unflatten/ class=md-nav__link> <span class=md-ellipsis> unflatten </span> </a> </li> <li class=md-nav__item> <a href=../update/ class=md-nav__link> <span class=md-ellipsis> update </span> </a> </li> <li class=md-nav__item> <a href=../value/ class=md-nav__link> <span class=md-ellipsis> value </span> </a> </li> <li class=md-nav__item> <a href=../value_t/ class=md-nav__link> <span class=md-ellipsis> value_t </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_2> <div class="md-nav__link md-nav__container"> <a href=../../byte_container_with_subtype/ class="md-nav__link "> <span class=md-ellipsis> byte_container_with_subtype </span> </a> <label class="md-nav__link " for=__nav_4_2 id=__nav_4_2_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_2_label aria-expanded=false> <label class=md-nav__title for=__nav_4_2> <span class="md-nav__icon md-icon"></span> byte_container_with_subtype </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../byte_container_with_subtype/byte_container_with_subtype/ class=md-nav__link> <span class=md-ellipsis> (constructor) </span> </a> </li> <li class=md-nav__item> <a href=../../byte_container_with_subtype/clear_subtype/ class=md-nav__link> <span class=md-ellipsis> clear_subtype </span> </a> </li> <li class=md-nav__item> <a href=../../byte_container_with_subtype/has_subtype/ class=md-nav__link> <span class=md-ellipsis> has_subtype </span> </a> </li> <li class=md-nav__item> <a href=../../byte_container_with_subtype/set_subtype/ class=md-nav__link> <span class=md-ellipsis> set_subtype </span> </a> </li> <li class=md-nav__item> <a href=../../byte_container_with_subtype/subtype/ class=md-nav__link> <span class=md-ellipsis> subtype </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_3> <div class="md-nav__link md-nav__container"> <a href=../../adl_serializer/ class="md-nav__link "> <span class=md-ellipsis> adl_serializer </span> </a> <label class="md-nav__link " for=__nav_4_3 id=__nav_4_3_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_3_label aria-expanded=false> <label class=md-nav__title for=__nav_4_3> <span class="md-nav__icon md-icon"></span> adl_serializer </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../adl_serializer/from_json/ class=md-nav__link> <span class=md-ellipsis> from_json </span> </a> </li> <li class=md-nav__item> <a href=../../adl_serializer/to_json/ class=md-nav__link> <span class=md-ellipsis> to_json </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../json/ class=md-nav__link> <span class=md-ellipsis> json </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_5> <div class="md-nav__link md-nav__container"> <a href=../../json_pointer/ class="md-nav__link "> <span class=md-ellipsis> json_pointer </span> </a> <label class="md-nav__link " for=__nav_4_5 id=__nav_4_5_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_5_label aria-expanded=false> <label class=md-nav__title for=__nav_4_5> <span class="md-nav__icon md-icon"></span> json_pointer </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../json_pointer/json_pointer/ class=md-nav__link> <span class=md-ellipsis> (Constructor) </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/back/ class=md-nav__link> <span class=md-ellipsis> back </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/empty/ class=md-nav__link> <span class=md-ellipsis> empty </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/front/ class=md-nav__link> <span class=md-ellipsis> front </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_string_t/ class=md-nav__link> <span class=md-ellipsis> operator string_t </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_eq/ class=md-nav__link> <span class=md-ellipsis> operator== </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_ne/ class=md-nav__link> <span class=md-ellipsis> operator!= </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_slash/ class=md-nav__link> <span class=md-ellipsis> operator/ </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_slasheq/ class=md-nav__link> <span class=md-ellipsis> operator/= </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/parent_pointer/ class=md-nav__link> <span class=md-ellipsis> parent_pointer </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/pop_back/ class=md-nav__link> <span class=md-ellipsis> pop_back </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/pop_front/ class=md-nav__link> <span class=md-ellipsis> pop_front </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/push_back/ class=md-nav__link> <span class=md-ellipsis> push_back </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/push_front/ class=md-nav__link> <span class=md-ellipsis> push_front </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/string_t/ class=md-nav__link> <span class=md-ellipsis> string_t </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/to_string/ class=md-nav__link> <span class=md-ellipsis> to_string </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_6> <div class="md-nav__link md-nav__container"> <a href=../../json_sax/ class="md-nav__link "> <span class=md-ellipsis> json_sax </span> </a> <label class="md-nav__link " for=__nav_4_6 id=__nav_4_6_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_6_label aria-expanded=false> <label class=md-nav__title for=__nav_4_6> <span class="md-nav__icon md-icon"></span> json_sax </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../json_sax/binary/ class=md-nav__link> <span class=md-ellipsis> binary </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/boolean/ class=md-nav__link> <span class=md-ellipsis> boolean </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/end_array/ class=md-nav__link> <span class=md-ellipsis> end_array </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/end_object/ class=md-nav__link> <span class=md-ellipsis> end_object </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/key/ class=md-nav__link> <span class=md-ellipsis> key </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/null/ class=md-nav__link> <span class=md-ellipsis> null </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/number_float/ class=md-nav__link> <span class=md-ellipsis> number_float </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/number_integer/ class=md-nav__link> <span class=md-ellipsis> number_integer </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/number_unsigned/ class=md-nav__link> <span class=md-ellipsis> number_unsigned </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/parse_error/ class=md-nav__link> <span class=md-ellipsis> parse_error </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/start_array/ class=md-nav__link> <span class=md-ellipsis> start_array </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/start_object/ class=md-nav__link> <span class=md-ellipsis> start_object </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/string/ class=md-nav__link> <span class=md-ellipsis> string </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../operator_ltlt/ class=md-nav__link> <span class=md-ellipsis> operator<<(basic_json), operator<<(json_pointer) </span> </a> </li> <li class=md-nav__item> <a href=../../operator_gtgt/ class=md-nav__link> <span class=md-ellipsis> operator>>(basic_json) </span> </a> </li> <li class=md-nav__item> <a href=../../operator_literal_json/ class=md-nav__link> <span class=md-ellipsis> operator""_json </span> </a> </li> <li class=md-nav__item> <a href=../../operator_literal_json_pointer/ class=md-nav__link> <span class=md-ellipsis> operator""_json_pointer </span> </a> </li> <li class=md-nav__item> <a href=../../ordered_json/ class=md-nav__link> <span class=md-ellipsis> ordered_json </span> </a> </li> <li class=md-nav__item> <a href=../../ordered_map/ class=md-nav__link> <span class=md-ellipsis> ordered_map </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_13> <div class="md-nav__link md-nav__container"> <a href=../../macros/ class="md-nav__link "> <span class=md-ellipsis> macros </span> </a> <label class="md-nav__link " for=__nav_4_13 id=__nav_4_13_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_13_label aria-expanded=false> <label class=md-nav__title for=__nav_4_13> <span class="md-nav__icon md-icon"></span> macros </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../macros/json_assert/ class=md-nav__link> <span class=md-ellipsis> JSON_ASSERT </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_brace_init_copy_semantics/ class=md-nav__link> <span class=md-ellipsis> JSON_BRACE_INIT_COPY_SEMANTICS </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_throw_user/ class=md-nav__link> <span class=md-ellipsis> JSON_CATCH_USER, JSON_THROW_USER, JSON_TRY_USER </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_diagnostics/ class=md-nav__link> <span class=md-ellipsis> JSON_DIAGNOSTICS </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_diagnostic_positions/ class=md-nav__link> <span class=md-ellipsis> JSON_DIAGNOSTIC_POSITIONS </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_disable_enum_serialization/ class=md-nav__link> <span class=md-ellipsis> JSON_DISABLE_ENUM_SERIALIZATION </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_has_cpp_11/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_CPP_11, JSON_HAS_CPP_14, JSON_HAS_CPP_17, JSON_HAS_CPP_20 </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_has_filesystem/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_EXPERIMENTAL_FILESYSTEM, JSON_HAS_FILESYSTEM </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_has_ranges/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_RANGES </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_has_static_rtti/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_STATIC_RTTI </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_has_three_way_comparison/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_THREE_WAY_COMPARISON </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_noexception/ class=md-nav__link> <span class=md-ellipsis> JSON_NOEXCEPTION </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_no_io/ class=md-nav__link> <span class=md-ellipsis> JSON_NO_IO </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_skip_library_version_check/ class=md-nav__link> <span class=md-ellipsis> JSON_SKIP_LIBRARY_VERSION_CHECK </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_skip_unsupported_compiler_check/ class=md-nav__link> <span class=md-ellipsis> JSON_SKIP_UNSUPPORTED_COMPILER_CHECK </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_use_global_udls/ class=md-nav__link> <span class=md-ellipsis> JSON_USE_GLOBAL_UDLS </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_use_implicit_conversions/ class=md-nav__link> <span class=md-ellipsis> JSON_USE_IMPLICIT_CONVERSIONS </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_use_legacy_discarded_value_comparison/ class=md-nav__link> <span class=md-ellipsis> JSON_USE_LEGACY_DISCARDED_VALUE_COMPARISON </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_define_derived_type/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_ONLY_SERIALIZE, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_define_type_intrusive/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_TYPE_INTRUSIVE, NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_TYPE_INTRUSIVE_ONLY_SERIALIZE </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_define_type_non_intrusive/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_define_type_with_names/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_TYPE_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_namespace/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_NAMESPACE </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_namespace_begin/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_NAMESPACE_BEGIN, NLOHMANN_JSON_NAMESPACE_END </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_namespace_no_version/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_NAMESPACE_NO_VERSION </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_serialize_enum/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_SERIALIZE_ENUM </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_serialize_enum_strict/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_SERIALIZE_ENUM_STRICT </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_version_major/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_VERSION_MAJOR, NLOHMANN_JSON_VERSION_MINOR, NLOHMANN_JSON_VERSION_PATCH </span> </a> </li> </ul> </nav> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_5> <div class="md-nav__link md-nav__container"> <a href=../../../community/ class="md-nav__link "> <span class=md-ellipsis> Community </span> </a> <label class="md-nav__link " for=__nav_5 id=__nav_5_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_5_label aria-expanded=false> <label class=md-nav__title for=__nav_5> <span class="md-nav__icon md-icon"></span> Community </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../community/code_of_conduct/ class=md-nav__link> <span class=md-ellipsis> Code of Conduct </span> </a> </li> <li class=md-nav__item> <a href=../../../community/contribution_guidelines/ class=md-nav__link> <span class=md-ellipsis> Contribution Guidelines </span> </a> </li> <li class=md-nav__item> <a href=../../../community/quality_assurance/ class=md-nav__link> <span class=md-ellipsis> Quality assurance </span> </a> </li> <li class=md-nav__item> <a href=../../../community/governance/ class=md-nav__link> <span class=md-ellipsis> Governance </span> </a> </li> <li class=md-nav__item> <a href=../../../community/security_policy/ class=md-nav__link> <span class=md-ellipsis> Security Policy </span> </a> </li> </ul> </nav> </li> </ul> </nav> </div> </div> </div> <div class="md-sidebar md-sidebar--secondary" data-md-component=sidebar data-md-type=toc> <div class=md-sidebar__scrollwrap> <div class=md-sidebar__inner> <nav class="md-nav md-nav--secondary" aria-label="Table of contents"> <label class=md-nav__title for=__toc> <span class="md-nav__icon md-icon"></span> Table of contents </label> <ul class=md-nav__list data-md-component=toc data-md-scrollfix> <li class=md-nav__item> <a href=#parameters class=md-nav__link> <span class=md-ellipsis> Parameters </span> </a> </li> <li class=md-nav__item> <a href=#return-value class=md-nav__link> <span class=md-ellipsis> Return value </span> </a> </li> <li class=md-nav__item> <a href=#exception-safety class=md-nav__link> <span class=md-ellipsis> Exception safety </span> </a> </li> <li class=md-nav__item> <a href=#exceptions class=md-nav__link> <span class=md-ellipsis> Exceptions </span> </a> </li> <li class=md-nav__item> <a href=#complexity class=md-nav__link> <span class=md-ellipsis> Complexity </span> </a> </li> <li class=md-nav__item> <a href=#notes class=md-nav__link> <span class=md-ellipsis> Notes </span> </a> </li> <li class=md-nav__item> <a href=#examples class=md-nav__link> <span class=md-ellipsis> Examples </span> </a> </li> <li class=md-nav__item> <a href=#version-history class=md-nav__link> <span class=md-ellipsis> Version history </span> </a> </li> </ul> </nav> </div> </div> </div> <div class=md-content data-md-component=content> <article class="md-content__inner md-typeset"> <a href="https://github.com/nlohmann/json/edit/develop/docs/mkdocs/docs/api/basic_json/dump.md" title="Edit this page" class="md-content__button md-icon" rel="edit"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M10 20H6V4h7v5h5v3.1l2-2V8l-6-6H6c-1.1 0-2 .9-2 2v16c0 1.1.9 2 2 2h4zm10.2-7c.1 0 .3.1.4.2l1.3 1.3c.2.2.2.6 0 .8l-1 1-2.1-2.1 1-1c.1-.1.2-.2.4-.2m0 3.9L14.1 23H12v-2.1l6.1-6.1z"/></svg> </a> <a href="https://github.com/nlohmann/json/raw/develop/docs/mkdocs/docs/api/basic_json/dump.md" title="View source of this page" class="md-content__button md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M17 18c.56 0 1 .44 1 1s-.44 1-1 1-1-.44-1-1 .44-1 1-1m0-3c-2.73 0-5.06 1.66-6 4 .94 2.34 3.27 4 6 4s5.06-1.66 6-4c-.94-2.34-3.27-4-6-4m0 6.5a2.5 2.5 0 0 1-2.5-2.5 2.5 2.5 0 0 1 2.5-2.5 2.5 2.5 0 0 1 2.5 2.5 2.5 2.5 0 0 1-2.5 2.5M9.27 20H6V4h7v5h5v4.07c.7.08 1.36.25 2 .49V8l-6-6H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h4.5a8.2 8.2 0 0 1-1.23-2"/></svg> </a> <h1 id=nlohmannbasic_jsondump><small>nlohmann::basic_json::</small>dump<a class=headerlink href=#nlohmannbasic_jsondump title="Permanent link">&para;</a></h1> <div class=highlight><pre><span></span><code><span class=n>string_t</span><span class=w> </span><span class=n>dump</span><span class=p>(</span><span class=k>const</span><span class=w> </span><span class=kt>int</span><span class=w> </span><span class=n>indent</span><span class=w> </span><span class=o>=</span><span class=w> </span><span class=mi>-1</span><span class=p>,</span>
+<!doctype html><html lang=en class=no-js> <head><meta charset=utf-8><meta name=viewport content="width=device-width,initial-scale=1"><meta name=author content="Niels Lohmann"><link href="https://json.nlohmann.me/api/basic_json/dump/" rel="canonical"><link href=../diff/ rel=prev><link href=../emplace/ rel=next><link rel=icon href=../../../assets/images/favicon.png><meta name=generator content="mkdocs-1.6.1, mkdocs-material-9.7.6"><title>dump - JSON for Modern C++</title><link rel=stylesheet href=../../../assets/stylesheets/main.484c7ddc.min.css><link rel=stylesheet href=../../../assets/stylesheets/palette.ab4e12ef.min.css><link rel="stylesheet" href="../../../assets/external/fonts.googleapis.com/css.61a430c9.css"><style>:root{--md-text-font:"Roboto";--md-code-font:"JetBrains Mono"}</style><link rel=stylesheet href=../../../css/custom.css><script>__md_scope=new URL("../../..",location),__md_hash=e=>[...e].reduce(((e,_)=>(e<<5)-e+_.charCodeAt(0)),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script></head> <body dir=ltr data-md-color-scheme=default data-md-color-primary=indigo data-md-color-accent=indigo> <input class=md-toggle data-md-toggle=drawer type=checkbox id=__drawer autocomplete=off> <input class=md-toggle data-md-toggle=search type=checkbox id=__search autocomplete=off> <label class=md-overlay for=__drawer></label> <div data-md-component=skip> <a href=#nlohmannbasic_jsondump class=md-skip> Skip to content </a> </div> <div data-md-component=announce> </div> <header class=md-header data-md-component=header> <nav class="md-header__inner md-grid" aria-label=Header> <a href=../../.. title="JSON for Modern C++" class="md-header__button md-logo" aria-label="JSON for Modern C++" data-md-component=logo> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54"/></svg> </a> <label class="md-header__button md-icon" for=__drawer> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M3 6h18v2H3zm0 5h18v2H3zm0 5h18v2H3z"/></svg> </label> <div class=md-header__title data-md-component=header-title> <div class=md-header__ellipsis> <div class=md-header__topic> <span class=md-ellipsis> JSON for Modern C++ </span> </div> <div class=md-header__topic data-md-component=header-topic> <span class=md-ellipsis> dump </span> </div> </div> </div> <form class=md-header__option data-md-component=palette> <input class=md-option data-md-color-media="(prefers-color-scheme: light)" data-md-color-scheme=default data-md-color-primary=indigo data-md-color-accent=indigo aria-label="Switch to dark mode" type=radio name=__palette id=__palette_0> <label class="md-header__button md-icon" title="Switch to dark mode" for=__palette_1 hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a4 4 0 0 0-4 4 4 4 0 0 0 4 4 4 4 0 0 0 4-4 4 4 0 0 0-4-4m0 10a6 6 0 0 1-6-6 6 6 0 0 1 6-6 6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12z"/></svg> </label> <input class=md-option data-md-color-media="(prefers-color-scheme: dark)" data-md-color-scheme=slate data-md-color-primary=indigo data-md-color-accent=indigo aria-label="Switch to light mode" type=radio name=__palette id=__palette_1> <label class="md-header__button md-icon" title="Switch to light mode" for=__palette_0 hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 18c-.89 0-1.74-.2-2.5-.55C11.56 16.5 13 14.42 13 12s-1.44-4.5-3.5-5.45C10.26 6.2 11.11 6 12 6a6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12z"/></svg> </label> </form> <script>var palette=__md_get("__palette");if(palette&&palette.color){if("(prefers-color-scheme)"===palette.color.media){var media=matchMedia("(prefers-color-scheme: light)"),input=document.querySelector(media.matches?"[data-md-color-media='(prefers-color-scheme: light)']":"[data-md-color-media='(prefers-color-scheme: dark)']");palette.color.media=input.getAttribute("data-md-color-media"),palette.color.scheme=input.getAttribute("data-md-color-scheme"),palette.color.primary=input.getAttribute("data-md-color-primary"),palette.color.accent=input.getAttribute("data-md-color-accent")}for(var[key,value]of Object.entries(palette.color))document.body.setAttribute("data-md-color-"+key,value)}</script> <label class="md-header__button md-icon" for=__search> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg> </label> <div class=md-search data-md-component=search role=dialog> <label class=md-search__overlay for=__search></label> <div class=md-search__inner role=search> <form class=md-search__form name=search> <input type=text class=md-search__input name=query aria-label=Search placeholder=Search autocapitalize=off autocorrect=off autocomplete=off spellcheck=false data-md-component=search-query required> <label class="md-search__icon md-icon" for=__search> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11z"/></svg> </label> <nav class=md-search__options aria-label=Search> <button type=reset class="md-search__icon md-icon" title=Clear aria-label=Clear tabindex=-1> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z"/></svg> </button> </nav> </form> <div class=md-search__output> <div class=md-search__scrollwrap tabindex=0 data-md-scrollfix> <div class=md-search-result data-md-component=search-result> <div class=md-search-result__meta> Initializing search </div> <ol class=md-search-result__list role=presentation></ol> </div> </div> </div> </div> </div> <div class=md-header__source> <a href="https://github.com/nlohmann/json" title="Go to repository" class="md-source" data-md-component="source"> <div class="md-source__icon md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </div> <div class=md-source__repository> nlohmann/json </div> </a> </div> </nav> </header> <div class=md-container data-md-component=container> <nav class=md-tabs aria-label=Tabs data-md-component=tabs> <div class=md-grid> <ul class=md-tabs__list> <li class=md-tabs__item> <a href=../../.. class=md-tabs__link> Home </a> </li> <li class=md-tabs__item> <a href=../../../features/arbitrary_types/ class=md-tabs__link> Features </a> </li> <li class=md-tabs__item> <a href=../../../integration/ class=md-tabs__link> Integration </a> </li> <li class="md-tabs__item md-tabs__item--active"> <a href=../ class=md-tabs__link> API Documentation </a> </li> <li class=md-tabs__item> <a href=../../../community/ class=md-tabs__link> Community </a> </li> </ul> </div> </nav> <main class=md-main data-md-component=main> <div class="md-main__inner md-grid"> <div class="md-sidebar md-sidebar--primary" data-md-component=sidebar data-md-type=navigation> <div class=md-sidebar__scrollwrap> <div class=md-sidebar__inner> <nav class="md-nav md-nav--primary md-nav--lifted" aria-label=Navigation data-md-level=0> <label class=md-nav__title for=__drawer> <a href=../../.. title="JSON for Modern C++" class="md-nav__button md-logo" aria-label="JSON for Modern C++" data-md-component=logo> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54"/></svg> </a> JSON for Modern C++ </label> <div class=md-nav__source> <a href="https://github.com/nlohmann/json" title="Go to repository" class="md-source" data-md-component="source"> <div class="md-source__icon md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </div> <div class=md-source__repository> nlohmann/json </div> </a> </div> <ul class=md-nav__list data-md-scrollfix> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_1> <div class="md-nav__link md-nav__container"> <a href=../../.. class="md-nav__link "> <span class=md-ellipsis> Home </span> </a> <label class="md-nav__link " for=__nav_1 id=__nav_1_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_1_label aria-expanded=false> <label class=md-nav__title for=__nav_1> <span class="md-nav__icon md-icon"></span> Home </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../home/license/ class=md-nav__link> <span class=md-ellipsis> License </span> </a> </li> <li class=md-nav__item> <a href=../../../home/faq/ class=md-nav__link> <span class=md-ellipsis> FAQ </span> </a> </li> <li class=md-nav__item> <a href=../../../home/exceptions/ class=md-nav__link> <span class=md-ellipsis> Exceptions </span> </a> </li> <li class=md-nav__item> <a href=../../../home/releases/ class=md-nav__link> <span class=md-ellipsis> Releases </span> </a> </li> <li class=md-nav__item> <a href=../../../home/design_goals/ class=md-nav__link> <span class=md-ellipsis> Design goals </span> </a> </li> <li class=md-nav__item> <a href=../../../home/architecture/ class=md-nav__link> <span class=md-ellipsis> Architecture </span> </a> </li> <li class=md-nav__item> <a href=../../../home/customers/ class=md-nav__link> <span class=md-ellipsis> Customers </span> </a> </li> <li class=md-nav__item> <a href=../../../home/sponsors/ class=md-nav__link> <span class=md-ellipsis> Sponsors </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2> <label class=md-nav__link for=__nav_2 id=__nav_2_label tabindex=0> <span class=md-ellipsis> Features </span> <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_2_label aria-expanded=false> <label class=md-nav__title for=__nav_2> <span class="md-nav__icon md-icon"></span> Features </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/arbitrary_types/ class=md-nav__link> <span class=md-ellipsis> Arbitrary Type Conversions </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_2> <div class="md-nav__link md-nav__container"> <a href=../../../features/binary_formats/ class="md-nav__link "> <span class=md-ellipsis> Binary Formats </span> </a> <label class="md-nav__link " for=__nav_2_2 id=__nav_2_2_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_2_label aria-expanded=false> <label class=md-nav__title for=__nav_2_2> <span class="md-nav__icon md-icon"></span> Binary Formats </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/binary_formats/bjdata/ class=md-nav__link> <span class=md-ellipsis> BJData </span> </a> </li> <li class=md-nav__item> <a href=../../../features/binary_formats/bson/ class=md-nav__link> <span class=md-ellipsis> BSON </span> </a> </li> <li class=md-nav__item> <a href=../../../features/binary_formats/cbor/ class=md-nav__link> <span class=md-ellipsis> CBOR </span> </a> </li> <li class=md-nav__item> <a href=../../../features/binary_formats/messagepack/ class=md-nav__link> <span class=md-ellipsis> MessagePack </span> </a> </li> <li class=md-nav__item> <a href=../../../features/binary_formats/ubjson/ class=md-nav__link> <span class=md-ellipsis> UBJSON </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../../features/binary_values/ class=md-nav__link> <span class=md-ellipsis> Binary Values </span> </a> </li> <li class=md-nav__item> <a href=../../../features/comments/ class=md-nav__link> <span class=md-ellipsis> Comments </span> </a> </li> <li class=md-nav__item> <a href=../../../features/trailing_commas/ class=md-nav__link> <span class=md-ellipsis> Trailing Commas </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_6> <div class="md-nav__link md-nav__container"> <a href=../../../features/element_access/ class="md-nav__link "> <span class=md-ellipsis> Element Access </span> </a> <label class="md-nav__link " for=__nav_2_6 id=__nav_2_6_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_6_label aria-expanded=false> <label class=md-nav__title for=__nav_2_6> <span class="md-nav__icon md-icon"></span> Element Access </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/element_access/unchecked_access/ class=md-nav__link> <span class=md-ellipsis> Unchecked access: operator[] </span> </a> </li> <li class=md-nav__item> <a href=../../../features/element_access/checked_access/ class=md-nav__link> <span class=md-ellipsis> Checked access: at </span> </a> </li> <li class=md-nav__item> <a href=../../../features/element_access/default_value/ class=md-nav__link> <span class=md-ellipsis> Access with default value: value </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../../features/iterators/ class=md-nav__link> <span class=md-ellipsis> Iterators </span> </a> </li> <li class=md-nav__item> <a href=../../../features/json_pointer/ class=md-nav__link> <span class=md-ellipsis> JSON Pointer </span> </a> </li> <li class=md-nav__item> <a href=../../../features/json_patch/ class=md-nav__link> <span class=md-ellipsis> JSON Patch and Diff </span> </a> </li> <li class=md-nav__item> <a href=../../../features/merge_patch/ class=md-nav__link> <span class=md-ellipsis> JSON Merge Patch </span> </a> </li> <li class=md-nav__item> <a href=../../../features/modules/ class=md-nav__link> <span class=md-ellipsis> Modules </span> </a> </li> <li class=md-nav__item> <a href=../../../features/namespace/ class=md-nav__link> <span class=md-ellipsis> nlohmann Namespace </span> </a> </li> <li class=md-nav__item> <a href=../../../features/object_order/ class=md-nav__link> <span class=md-ellipsis> Object Order </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_14> <div class="md-nav__link md-nav__container"> <a href=../../../features/parsing/ class="md-nav__link "> <span class=md-ellipsis> Parsing </span> </a> <label class="md-nav__link " for=__nav_2_14 id=__nav_2_14_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_14_label aria-expanded=false> <label class=md-nav__title for=__nav_2_14> <span class="md-nav__icon md-icon"></span> Parsing </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/parsing/json_lines/ class=md-nav__link> <span class=md-ellipsis> JSON Lines </span> </a> </li> <li class=md-nav__item> <a href=../../../features/parsing/parse_exceptions/ class=md-nav__link> <span class=md-ellipsis> Parsing and Exceptions </span> </a> </li> <li class=md-nav__item> <a href=../../../features/parsing/parser_callbacks/ class=md-nav__link> <span class=md-ellipsis> Parser Callbacks </span> </a> </li> <li class=md-nav__item> <a href=../../../features/parsing/sax_interface/ class=md-nav__link> <span class=md-ellipsis> SAX Interface </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../../features/assertions/ class=md-nav__link> <span class=md-ellipsis> Runtime Assertions </span> </a> </li> <li class=md-nav__item> <a href=../../../features/enum_conversion/ class=md-nav__link> <span class=md-ellipsis> Specializing enum conversion </span> </a> </li> <li class=md-nav__item> <a href=../../../features/macros/ class=md-nav__link> <span class=md-ellipsis> Supported Macros </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_18> <div class="md-nav__link md-nav__container"> <a href=../../../features/types/ class="md-nav__link "> <span class=md-ellipsis> Types </span> </a> <label class="md-nav__link " for=__nav_2_18 id=__nav_2_18_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_18_label aria-expanded=false> <label class=md-nav__title for=__nav_2_18> <span class="md-nav__icon md-icon"></span> Types </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/types/number_handling/ class=md-nav__link> <span class=md-ellipsis> Number Handling </span> </a> </li> </ul> </nav> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_3> <div class="md-nav__link md-nav__container"> <a href=../../../integration/ class="md-nav__link "> <span class=md-ellipsis> Integration </span> </a> <label class="md-nav__link " for=__nav_3 id=__nav_3_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_3_label aria-expanded=false> <label class=md-nav__title for=__nav_3> <span class="md-nav__icon md-icon"></span> Integration </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../integration/migration_guide/ class=md-nav__link> <span class=md-ellipsis> Migration Guide </span> </a> </li> <li class=md-nav__item> <a href=../../../integration/cmake/ class=md-nav__link> <span class=md-ellipsis> CMake </span> </a> </li> <li class=md-nav__item> <a href=../../../integration/package_managers/ class=md-nav__link> <span class=md-ellipsis> Package Managers </span> </a> </li> <li class=md-nav__item> <a href=../../../integration/pkg-config/ class=md-nav__link> <span class=md-ellipsis> Pkg-config </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--active md-nav__item--section md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4 checked> <label class=md-nav__link for=__nav_4 id=__nav_4_label tabindex> <span class=md-ellipsis> API Documentation </span> <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_4_label aria-expanded=true> <label class=md-nav__title for=__nav_4> <span class="md-nav__icon md-icon"></span> API Documentation </label> <ul class=md-nav__list data-md-scrollfix> <li class="md-nav__item md-nav__item--active md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_1 checked> <div class="md-nav__link md-nav__container"> <a href=../ class="md-nav__link "> <span class=md-ellipsis> basic_json </span> </a> <label class="md-nav__link " for=__nav_4_1 id=__nav_4_1_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_1_label aria-expanded=true> <label class=md-nav__title for=__nav_4_1> <span class="md-nav__icon md-icon"></span> basic_json </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../basic_json/ class=md-nav__link> <span class=md-ellipsis> (Constructor) </span> </a> </li> <li class=md-nav__item> <a href=../~basic_json/ class=md-nav__link> <span class=md-ellipsis> (Destructor) </span> </a> </li> <li class=md-nav__item> <a href=../accept/ class=md-nav__link> <span class=md-ellipsis> accept </span> </a> </li> <li class=md-nav__item> <a href=../array/ class=md-nav__link> <span class=md-ellipsis> array </span> </a> </li> <li class=md-nav__item> <a href=../array_t/ class=md-nav__link> <span class=md-ellipsis> array_t </span> </a> </li> <li class=md-nav__item> <a href=../at/ class=md-nav__link> <span class=md-ellipsis> at </span> </a> </li> <li class=md-nav__item> <a href=../back/ class=md-nav__link> <span class=md-ellipsis> back </span> </a> </li> <li class=md-nav__item> <a href=../begin/ class=md-nav__link> <span class=md-ellipsis> begin </span> </a> </li> <li class=md-nav__item> <a href=../binary/ class=md-nav__link> <span class=md-ellipsis> binary </span> </a> </li> <li class=md-nav__item> <a href=../binary_t/ class=md-nav__link> <span class=md-ellipsis> binary_t </span> </a> </li> <li class=md-nav__item> <a href=../boolean_t/ class=md-nav__link> <span class=md-ellipsis> boolean_t </span> </a> </li> <li class=md-nav__item> <a href=../cbegin/ class=md-nav__link> <span class=md-ellipsis> cbegin </span> </a> </li> <li class=md-nav__item> <a href=../cbor_tag_handler_t/ class=md-nav__link> <span class=md-ellipsis> cbor_tag_handler_t </span> </a> </li> <li class=md-nav__item> <a href=../cend/ class=md-nav__link> <span class=md-ellipsis> cend </span> </a> </li> <li class=md-nav__item> <a href=../clear/ class=md-nav__link> <span class=md-ellipsis> clear </span> </a> </li> <li class=md-nav__item> <a href=../contains/ class=md-nav__link> <span class=md-ellipsis> contains </span> </a> </li> <li class=md-nav__item> <a href=../count/ class=md-nav__link> <span class=md-ellipsis> count </span> </a> </li> <li class=md-nav__item> <a href=../crbegin/ class=md-nav__link> <span class=md-ellipsis> crbegin </span> </a> </li> <li class=md-nav__item> <a href=../crend/ class=md-nav__link> <span class=md-ellipsis> crend </span> </a> </li> <li class=md-nav__item> <a href=../default_object_comparator_t/ class=md-nav__link> <span class=md-ellipsis> default_object_comparator_t </span> </a> </li> <li class=md-nav__item> <a href=../diff/ class=md-nav__link> <span class=md-ellipsis> diff </span> </a> </li> <li class="md-nav__item md-nav__item--active"> <input class="md-nav__toggle md-toggle" type=checkbox id=__toc> <label class="md-nav__link md-nav__link--active" for=__toc> <span class=md-ellipsis> dump </span> <span class="md-nav__icon md-icon"></span> </label> <a href=./ class="md-nav__link md-nav__link--active"> <span class=md-ellipsis> dump </span> </a> <nav class="md-nav md-nav--secondary" aria-label="Table of contents"> <label class=md-nav__title for=__toc> <span class="md-nav__icon md-icon"></span> Table of contents </label> <ul class=md-nav__list data-md-component=toc data-md-scrollfix> <li class=md-nav__item> <a href=#parameters class=md-nav__link> <span class=md-ellipsis> Parameters </span> </a> </li> <li class=md-nav__item> <a href=#return-value class=md-nav__link> <span class=md-ellipsis> Return value </span> </a> </li> <li class=md-nav__item> <a href=#exception-safety class=md-nav__link> <span class=md-ellipsis> Exception safety </span> </a> </li> <li class=md-nav__item> <a href=#exceptions class=md-nav__link> <span class=md-ellipsis> Exceptions </span> </a> </li> <li class=md-nav__item> <a href=#complexity class=md-nav__link> <span class=md-ellipsis> Complexity </span> </a> </li> <li class=md-nav__item> <a href=#notes class=md-nav__link> <span class=md-ellipsis> Notes </span> </a> </li> <li class=md-nav__item> <a href=#examples class=md-nav__link> <span class=md-ellipsis> Examples </span> </a> </li> <li class=md-nav__item> <a href=#see-also class=md-nav__link> <span class=md-ellipsis> See also </span> </a> </li> <li class=md-nav__item> <a href=#version-history class=md-nav__link> <span class=md-ellipsis> Version history </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../emplace/ class=md-nav__link> <span class=md-ellipsis> emplace </span> </a> </li> <li class=md-nav__item> <a href=../emplace_back/ class=md-nav__link> <span class=md-ellipsis> emplace_back </span> </a> </li> <li class=md-nav__item> <a href=../empty/ class=md-nav__link> <span class=md-ellipsis> empty </span> </a> </li> <li class=md-nav__item> <a href=../end/ class=md-nav__link> <span class=md-ellipsis> end </span> </a> </li> <li class=md-nav__item> <a href=../end_pos/ class=md-nav__link> <span class=md-ellipsis> end_pos </span> </a> </li> <li class=md-nav__item> <a href=../erase/ class=md-nav__link> <span class=md-ellipsis> erase </span> </a> </li> <li class=md-nav__item> <a href=../error_handler_t/ class=md-nav__link> <span class=md-ellipsis> error_handler_t </span> </a> </li> <li class=md-nav__item> <a href=../exception/ class=md-nav__link> <span class=md-ellipsis> exception </span> </a> </li> <li class=md-nav__item> <a href=../find/ class=md-nav__link> <span class=md-ellipsis> find </span> </a> </li> <li class=md-nav__item> <a href=../flatten/ class=md-nav__link> <span class=md-ellipsis> flatten </span> </a> </li> <li class=md-nav__item> <a href=../from_bjdata/ class=md-nav__link> <span class=md-ellipsis> from_bjdata </span> </a> </li> <li class=md-nav__item> <a href=../from_bson/ class=md-nav__link> <span class=md-ellipsis> from_bson </span> </a> </li> <li class=md-nav__item> <a href=../from_cbor/ class=md-nav__link> <span class=md-ellipsis> from_cbor </span> </a> </li> <li class=md-nav__item> <a href=../from_msgpack/ class=md-nav__link> <span class=md-ellipsis> from_msgpack </span> </a> </li> <li class=md-nav__item> <a href=../from_ubjson/ class=md-nav__link> <span class=md-ellipsis> from_ubjson </span> </a> </li> <li class=md-nav__item> <a href=../front/ class=md-nav__link> <span class=md-ellipsis> front </span> </a> </li> <li class=md-nav__item> <a href=../get/ class=md-nav__link> <span class=md-ellipsis> get </span> </a> </li> <li class=md-nav__item> <a href=../get_allocator/ class=md-nav__link> <span class=md-ellipsis> get_allocator </span> </a> </li> <li class=md-nav__item> <a href=../get_binary/ class=md-nav__link> <span class=md-ellipsis> get_binary </span> </a> </li> <li class=md-nav__item> <a href=../get_ptr/ class=md-nav__link> <span class=md-ellipsis> get_ptr </span> </a> </li> <li class=md-nav__item> <a href=../get_ref/ class=md-nav__link> <span class=md-ellipsis> get_ref </span> </a> </li> <li class=md-nav__item> <a href=../get_to/ class=md-nav__link> <span class=md-ellipsis> get_to </span> </a> </li> <li class=md-nav__item> <a href=../std_hash/ class=md-nav__link> <span class=md-ellipsis> std::hash&lt;basic_json&gt; </span> </a> </li> <li class=md-nav__item> <a href=../input_format_t/ class=md-nav__link> <span class=md-ellipsis> input_format_t </span> </a> </li> <li class=md-nav__item> <a href=../insert/ class=md-nav__link> <span class=md-ellipsis> insert </span> </a> </li> <li class=md-nav__item> <a href=../invalid_iterator/ class=md-nav__link> <span class=md-ellipsis> invalid_iterator </span> </a> </li> <li class=md-nav__item> <a href=../is_array/ class=md-nav__link> <span class=md-ellipsis> is_array </span> </a> </li> <li class=md-nav__item> <a href=../is_binary/ class=md-nav__link> <span class=md-ellipsis> is_binary </span> </a> </li> <li class=md-nav__item> <a href=../is_boolean/ class=md-nav__link> <span class=md-ellipsis> is_boolean </span> </a> </li> <li class=md-nav__item> <a href=../is_discarded/ class=md-nav__link> <span class=md-ellipsis> is_discarded </span> </a> </li> <li class=md-nav__item> <a href=../is_null/ class=md-nav__link> <span class=md-ellipsis> is_null </span> </a> </li> <li class=md-nav__item> <a href=../is_number/ class=md-nav__link> <span class=md-ellipsis> is_number </span> </a> </li> <li class=md-nav__item> <a href=../is_number_float/ class=md-nav__link> <span class=md-ellipsis> is_number_float </span> </a> </li> <li class=md-nav__item> <a href=../is_number_integer/ class=md-nav__link> <span class=md-ellipsis> is_number_integer </span> </a> </li> <li class=md-nav__item> <a href=../is_number_unsigned/ class=md-nav__link> <span class=md-ellipsis> is_number_unsigned </span> </a> </li> <li class=md-nav__item> <a href=../is_object/ class=md-nav__link> <span class=md-ellipsis> is_object </span> </a> </li> <li class=md-nav__item> <a href=../is_primitive/ class=md-nav__link> <span class=md-ellipsis> is_primitive </span> </a> </li> <li class=md-nav__item> <a href=../is_string/ class=md-nav__link> <span class=md-ellipsis> is_string </span> </a> </li> <li class=md-nav__item> <a href=../is_structured/ class=md-nav__link> <span class=md-ellipsis> is_structured </span> </a> </li> <li class=md-nav__item> <a href=../items/ class=md-nav__link> <span class=md-ellipsis> items </span> </a> </li> <li class=md-nav__item> <a href=../json_base_class_t/ class=md-nav__link> <span class=md-ellipsis> json_base_class_t </span> </a> </li> <li class=md-nav__item> <a href=../json_serializer/ class=md-nav__link> <span class=md-ellipsis> json_serializer </span> </a> </li> <li class=md-nav__item> <a href=../max_size/ class=md-nav__link> <span class=md-ellipsis> max_size </span> </a> </li> <li class=md-nav__item> <a href=../meta/ class=md-nav__link> <span class=md-ellipsis> meta </span> </a> </li> <li class=md-nav__item> <a href=../merge_patch/ class=md-nav__link> <span class=md-ellipsis> merge_patch </span> </a> </li> <li class=md-nav__item> <a href=../number_float_t/ class=md-nav__link> <span class=md-ellipsis> number_float_t </span> </a> </li> <li class=md-nav__item> <a href=../number_integer_t/ class=md-nav__link> <span class=md-ellipsis> number_integer_t </span> </a> </li> <li class=md-nav__item> <a href=../number_unsigned_t/ class=md-nav__link> <span class=md-ellipsis> number_unsigned_t </span> </a> </li> <li class=md-nav__item> <a href=../object/ class=md-nav__link> <span class=md-ellipsis> object </span> </a> </li> <li class=md-nav__item> <a href=../object_comparator_t/ class=md-nav__link> <span class=md-ellipsis> object_comparator_t </span> </a> </li> <li class=md-nav__item> <a href=../object_t/ class=md-nav__link> <span class=md-ellipsis> object_t </span> </a> </li> <li class=md-nav__item> <a href=../operator_ValueType/ class=md-nav__link> <span class=md-ellipsis> operator ValueType </span> </a> </li> <li class=md-nav__item> <a href=../operator_value_t/ class=md-nav__link> <span class=md-ellipsis> operator value_t </span> </a> </li> <li class=md-nav__item> <a href=../operator%5B%5D/ class=md-nav__link> <span class=md-ellipsis> operator[] </span> </a> </li> <li class=md-nav__item> <a href=../operator%3D/ class=md-nav__link> <span class=md-ellipsis> operator= </span> </a> </li> <li class=md-nav__item> <a href=../operator%2B%3D/ class=md-nav__link> <span class=md-ellipsis> operator+= </span> </a> </li> <li class=md-nav__item> <a href=../operator_eq/ class=md-nav__link> <span class=md-ellipsis> operator== </span> </a> </li> <li class=md-nav__item> <a href=../operator_ne/ class=md-nav__link> <span class=md-ellipsis> operator!= </span> </a> </li> <li class=md-nav__item> <a href=../operator_lt/ class=md-nav__link> <span class=md-ellipsis> operator< </span> </a> </li> <li class=md-nav__item> <a href=../operator_gt/ class=md-nav__link> <span class=md-ellipsis> operator> </span> </a> </li> <li class=md-nav__item> <a href=../operator_le/ class=md-nav__link> <span class=md-ellipsis> operator<= </span> </a> </li> <li class=md-nav__item> <a href=../operator_ge/ class=md-nav__link> <span class=md-ellipsis> operator>= </span> </a> </li> <li class=md-nav__item> <a href=../operator_spaceship/ class=md-nav__link> <span class=md-ellipsis> operator<=> </span> </a> </li> <li class=md-nav__item> <a href=../out_of_range/ class=md-nav__link> <span class=md-ellipsis> out_of_range </span> </a> </li> <li class=md-nav__item> <a href=../other_error/ class=md-nav__link> <span class=md-ellipsis> other_error </span> </a> </li> <li class=md-nav__item> <a href=../parse/ class=md-nav__link> <span class=md-ellipsis> parse </span> </a> </li> <li class=md-nav__item> <a href=../parse_error/ class=md-nav__link> <span class=md-ellipsis> parse_error </span> </a> </li> <li class=md-nav__item> <a href=../parse_event_t/ class=md-nav__link> <span class=md-ellipsis> parse_event_t </span> </a> </li> <li class=md-nav__item> <a href=../parser_callback_t/ class=md-nav__link> <span class=md-ellipsis> parser_callback_t </span> </a> </li> <li class=md-nav__item> <a href=../patch/ class=md-nav__link> <span class=md-ellipsis> patch </span> </a> </li> <li class=md-nav__item> <a href=../patch_inplace/ class=md-nav__link> <span class=md-ellipsis> patch_inplace </span> </a> </li> <li class=md-nav__item> <a href=../push_back/ class=md-nav__link> <span class=md-ellipsis> push_back </span> </a> </li> <li class=md-nav__item> <a href=../rbegin/ class=md-nav__link> <span class=md-ellipsis> rbegin </span> </a> </li> <li class=md-nav__item> <a href=../rend/ class=md-nav__link> <span class=md-ellipsis> rend </span> </a> </li> <li class=md-nav__item> <a href=../sax_parse/ class=md-nav__link> <span class=md-ellipsis> sax_parse </span> </a> </li> <li class=md-nav__item> <a href=../size/ class=md-nav__link> <span class=md-ellipsis> size </span> </a> </li> <li class=md-nav__item> <a href=../start_pos/ class=md-nav__link> <span class=md-ellipsis> start_pos </span> </a> </li> <li class=md-nav__item> <a href=../string_t/ class=md-nav__link> <span class=md-ellipsis> string_t </span> </a> </li> <li class=md-nav__item> <a href=../swap/ class=md-nav__link> <span class=md-ellipsis> swap </span> </a> </li> <li class=md-nav__item> <a href=../std_swap/ class=md-nav__link> <span class=md-ellipsis> std::swap&lt;basic_json&gt; </span> </a> </li> <li class=md-nav__item> <a href=../to_bjdata/ class=md-nav__link> <span class=md-ellipsis> to_bjdata </span> </a> </li> <li class=md-nav__item> <a href=../to_bson/ class=md-nav__link> <span class=md-ellipsis> to_bson </span> </a> </li> <li class=md-nav__item> <a href=../to_cbor/ class=md-nav__link> <span class=md-ellipsis> to_cbor </span> </a> </li> <li class=md-nav__item> <a href=../to_msgpack/ class=md-nav__link> <span class=md-ellipsis> to_msgpack </span> </a> </li> <li class=md-nav__item> <a href=../to_string/ class=md-nav__link> <span class=md-ellipsis> to_string </span> </a> </li> <li class=md-nav__item> <a href=../to_ubjson/ class=md-nav__link> <span class=md-ellipsis> to_ubjson </span> </a> </li> <li class=md-nav__item> <a href=../type/ class=md-nav__link> <span class=md-ellipsis> type </span> </a> </li> <li class=md-nav__item> <a href=../type_error/ class=md-nav__link> <span class=md-ellipsis> type_error </span> </a> </li> <li class=md-nav__item> <a href=../type_name/ class=md-nav__link> <span class=md-ellipsis> type_name </span> </a> </li> <li class=md-nav__item> <a href=../unflatten/ class=md-nav__link> <span class=md-ellipsis> unflatten </span> </a> </li> <li class=md-nav__item> <a href=../update/ class=md-nav__link> <span class=md-ellipsis> update </span> </a> </li> <li class=md-nav__item> <a href=../value/ class=md-nav__link> <span class=md-ellipsis> value </span> </a> </li> <li class=md-nav__item> <a href=../value_t/ class=md-nav__link> <span class=md-ellipsis> value_t </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_2> <div class="md-nav__link md-nav__container"> <a href=../../byte_container_with_subtype/ class="md-nav__link "> <span class=md-ellipsis> byte_container_with_subtype </span> </a> <label class="md-nav__link " for=__nav_4_2 id=__nav_4_2_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_2_label aria-expanded=false> <label class=md-nav__title for=__nav_4_2> <span class="md-nav__icon md-icon"></span> byte_container_with_subtype </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../byte_container_with_subtype/byte_container_with_subtype/ class=md-nav__link> <span class=md-ellipsis> (constructor) </span> </a> </li> <li class=md-nav__item> <a href=../../byte_container_with_subtype/clear_subtype/ class=md-nav__link> <span class=md-ellipsis> clear_subtype </span> </a> </li> <li class=md-nav__item> <a href=../../byte_container_with_subtype/has_subtype/ class=md-nav__link> <span class=md-ellipsis> has_subtype </span> </a> </li> <li class=md-nav__item> <a href=../../byte_container_with_subtype/set_subtype/ class=md-nav__link> <span class=md-ellipsis> set_subtype </span> </a> </li> <li class=md-nav__item> <a href=../../byte_container_with_subtype/subtype/ class=md-nav__link> <span class=md-ellipsis> subtype </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_3> <div class="md-nav__link md-nav__container"> <a href=../../adl_serializer/ class="md-nav__link "> <span class=md-ellipsis> adl_serializer </span> </a> <label class="md-nav__link " for=__nav_4_3 id=__nav_4_3_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_3_label aria-expanded=false> <label class=md-nav__title for=__nav_4_3> <span class="md-nav__icon md-icon"></span> adl_serializer </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../adl_serializer/from_json/ class=md-nav__link> <span class=md-ellipsis> from_json </span> </a> </li> <li class=md-nav__item> <a href=../../adl_serializer/to_json/ class=md-nav__link> <span class=md-ellipsis> to_json </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../json/ class=md-nav__link> <span class=md-ellipsis> json </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_5> <div class="md-nav__link md-nav__container"> <a href=../../json_pointer/ class="md-nav__link "> <span class=md-ellipsis> json_pointer </span> </a> <label class="md-nav__link " for=__nav_4_5 id=__nav_4_5_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_5_label aria-expanded=false> <label class=md-nav__title for=__nav_4_5> <span class="md-nav__icon md-icon"></span> json_pointer </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../json_pointer/json_pointer/ class=md-nav__link> <span class=md-ellipsis> (Constructor) </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/back/ class=md-nav__link> <span class=md-ellipsis> back </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/empty/ class=md-nav__link> <span class=md-ellipsis> empty </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/front/ class=md-nav__link> <span class=md-ellipsis> front </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_string_t/ class=md-nav__link> <span class=md-ellipsis> operator string_t </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_eq/ class=md-nav__link> <span class=md-ellipsis> operator== </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_ne/ class=md-nav__link> <span class=md-ellipsis> operator!= </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_slash/ class=md-nav__link> <span class=md-ellipsis> operator/ </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_slasheq/ class=md-nav__link> <span class=md-ellipsis> operator/= </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/parent_pointer/ class=md-nav__link> <span class=md-ellipsis> parent_pointer </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/pop_back/ class=md-nav__link> <span class=md-ellipsis> pop_back </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/pop_front/ class=md-nav__link> <span class=md-ellipsis> pop_front </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/push_back/ class=md-nav__link> <span class=md-ellipsis> push_back </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/push_front/ class=md-nav__link> <span class=md-ellipsis> push_front </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/string_t/ class=md-nav__link> <span class=md-ellipsis> string_t </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/to_string/ class=md-nav__link> <span class=md-ellipsis> to_string </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_6> <div class="md-nav__link md-nav__container"> <a href=../../json_sax/ class="md-nav__link "> <span class=md-ellipsis> json_sax </span> </a> <label class="md-nav__link " for=__nav_4_6 id=__nav_4_6_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_6_label aria-expanded=false> <label class=md-nav__title for=__nav_4_6> <span class="md-nav__icon md-icon"></span> json_sax </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../json_sax/binary/ class=md-nav__link> <span class=md-ellipsis> binary </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/boolean/ class=md-nav__link> <span class=md-ellipsis> boolean </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/end_array/ class=md-nav__link> <span class=md-ellipsis> end_array </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/end_object/ class=md-nav__link> <span class=md-ellipsis> end_object </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/key/ class=md-nav__link> <span class=md-ellipsis> key </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/null/ class=md-nav__link> <span class=md-ellipsis> null </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/number_float/ class=md-nav__link> <span class=md-ellipsis> number_float </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/number_integer/ class=md-nav__link> <span class=md-ellipsis> number_integer </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/number_unsigned/ class=md-nav__link> <span class=md-ellipsis> number_unsigned </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/parse_error/ class=md-nav__link> <span class=md-ellipsis> parse_error </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/start_array/ class=md-nav__link> <span class=md-ellipsis> start_array </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/start_object/ class=md-nav__link> <span class=md-ellipsis> start_object </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/string/ class=md-nav__link> <span class=md-ellipsis> string </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../operator_ltlt/ class=md-nav__link> <span class=md-ellipsis> operator<<(basic_json), operator<<(json_pointer) </span> </a> </li> <li class=md-nav__item> <a href=../../operator_gtgt/ class=md-nav__link> <span class=md-ellipsis> operator>>(basic_json) </span> </a> </li> <li class=md-nav__item> <a href=../../operator_literal_json/ class=md-nav__link> <span class=md-ellipsis> operator""_json </span> </a> </li> <li class=md-nav__item> <a href=../../operator_literal_json_pointer/ class=md-nav__link> <span class=md-ellipsis> operator""_json_pointer </span> </a> </li> <li class=md-nav__item> <a href=../../ordered_json/ class=md-nav__link> <span class=md-ellipsis> ordered_json </span> </a> </li> <li class=md-nav__item> <a href=../../ordered_map/ class=md-nav__link> <span class=md-ellipsis> ordered_map </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_13> <div class="md-nav__link md-nav__container"> <a href=../../macros/ class="md-nav__link "> <span class=md-ellipsis> macros </span> </a> <label class="md-nav__link " for=__nav_4_13 id=__nav_4_13_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_13_label aria-expanded=false> <label class=md-nav__title for=__nav_4_13> <span class="md-nav__icon md-icon"></span> macros </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../macros/json_assert/ class=md-nav__link> <span class=md-ellipsis> JSON_ASSERT </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_brace_init_copy_semantics/ class=md-nav__link> <span class=md-ellipsis> JSON_BRACE_INIT_COPY_SEMANTICS </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_throw_user/ class=md-nav__link> <span class=md-ellipsis> JSON_CATCH_USER, JSON_THROW_USER, JSON_TRY_USER </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_diagnostics/ class=md-nav__link> <span class=md-ellipsis> JSON_DIAGNOSTICS </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_diagnostic_positions/ class=md-nav__link> <span class=md-ellipsis> JSON_DIAGNOSTIC_POSITIONS </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_disable_enum_serialization/ class=md-nav__link> <span class=md-ellipsis> JSON_DISABLE_ENUM_SERIALIZATION </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_has_cpp_11/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_CPP_11, JSON_HAS_CPP_14, JSON_HAS_CPP_17, JSON_HAS_CPP_20 </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_has_filesystem/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_EXPERIMENTAL_FILESYSTEM, JSON_HAS_FILESYSTEM </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_has_ranges/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_RANGES </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_has_static_rtti/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_STATIC_RTTI </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_has_three_way_comparison/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_THREE_WAY_COMPARISON </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_noexception/ class=md-nav__link> <span class=md-ellipsis> JSON_NOEXCEPTION </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_no_io/ class=md-nav__link> <span class=md-ellipsis> JSON_NO_IO </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_skip_library_version_check/ class=md-nav__link> <span class=md-ellipsis> JSON_SKIP_LIBRARY_VERSION_CHECK </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_skip_unsupported_compiler_check/ class=md-nav__link> <span class=md-ellipsis> JSON_SKIP_UNSUPPORTED_COMPILER_CHECK </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_use_global_udls/ class=md-nav__link> <span class=md-ellipsis> JSON_USE_GLOBAL_UDLS </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_use_implicit_conversions/ class=md-nav__link> <span class=md-ellipsis> JSON_USE_IMPLICIT_CONVERSIONS </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_use_legacy_discarded_value_comparison/ class=md-nav__link> <span class=md-ellipsis> JSON_USE_LEGACY_DISCARDED_VALUE_COMPARISON </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_define_derived_type/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_ONLY_SERIALIZE, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_define_type_intrusive/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_TYPE_INTRUSIVE, NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_TYPE_INTRUSIVE_ONLY_SERIALIZE </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_define_type_non_intrusive/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_define_type_with_names/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_TYPE_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_namespace/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_NAMESPACE </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_namespace_begin/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_NAMESPACE_BEGIN, NLOHMANN_JSON_NAMESPACE_END </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_namespace_no_version/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_NAMESPACE_NO_VERSION </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_serialize_enum/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_SERIALIZE_ENUM </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_serialize_enum_strict/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_SERIALIZE_ENUM_STRICT </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_version_major/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_VERSION_MAJOR, NLOHMANN_JSON_VERSION_MINOR, NLOHMANN_JSON_VERSION_PATCH </span> </a> </li> </ul> </nav> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_5> <div class="md-nav__link md-nav__container"> <a href=../../../community/ class="md-nav__link "> <span class=md-ellipsis> Community </span> </a> <label class="md-nav__link " for=__nav_5 id=__nav_5_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_5_label aria-expanded=false> <label class=md-nav__title for=__nav_5> <span class="md-nav__icon md-icon"></span> Community </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../community/code_of_conduct/ class=md-nav__link> <span class=md-ellipsis> Code of Conduct </span> </a> </li> <li class=md-nav__item> <a href=../../../community/contribution_guidelines/ class=md-nav__link> <span class=md-ellipsis> Contribution Guidelines </span> </a> </li> <li class=md-nav__item> <a href=../../../community/quality_assurance/ class=md-nav__link> <span class=md-ellipsis> Quality assurance </span> </a> </li> <li class=md-nav__item> <a href=../../../community/governance/ class=md-nav__link> <span class=md-ellipsis> Governance </span> </a> </li> <li class=md-nav__item> <a href=../../../community/security_policy/ class=md-nav__link> <span class=md-ellipsis> Security Policy </span> </a> </li> </ul> </nav> </li> </ul> </nav> </div> </div> </div> <div class="md-sidebar md-sidebar--secondary" data-md-component=sidebar data-md-type=toc> <div class=md-sidebar__scrollwrap> <div class=md-sidebar__inner> <nav class="md-nav md-nav--secondary" aria-label="Table of contents"> <label class=md-nav__title for=__toc> <span class="md-nav__icon md-icon"></span> Table of contents </label> <ul class=md-nav__list data-md-component=toc data-md-scrollfix> <li class=md-nav__item> <a href=#parameters class=md-nav__link> <span class=md-ellipsis> Parameters </span> </a> </li> <li class=md-nav__item> <a href=#return-value class=md-nav__link> <span class=md-ellipsis> Return value </span> </a> </li> <li class=md-nav__item> <a href=#exception-safety class=md-nav__link> <span class=md-ellipsis> Exception safety </span> </a> </li> <li class=md-nav__item> <a href=#exceptions class=md-nav__link> <span class=md-ellipsis> Exceptions </span> </a> </li> <li class=md-nav__item> <a href=#complexity class=md-nav__link> <span class=md-ellipsis> Complexity </span> </a> </li> <li class=md-nav__item> <a href=#notes class=md-nav__link> <span class=md-ellipsis> Notes </span> </a> </li> <li class=md-nav__item> <a href=#examples class=md-nav__link> <span class=md-ellipsis> Examples </span> </a> </li> <li class=md-nav__item> <a href=#see-also class=md-nav__link> <span class=md-ellipsis> See also </span> </a> </li> <li class=md-nav__item> <a href=#version-history class=md-nav__link> <span class=md-ellipsis> Version history </span> </a> </li> </ul> </nav> </div> </div> </div> <div class=md-content data-md-component=content> <article class="md-content__inner md-typeset"> <a href="https://github.com/nlohmann/json/edit/develop/docs/mkdocs/docs/api/basic_json/dump.md" title="Edit this page" class="md-content__button md-icon" rel="edit"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M10 20H6V4h7v5h5v3.1l2-2V8l-6-6H6c-1.1 0-2 .9-2 2v16c0 1.1.9 2 2 2h4zm10.2-7c.1 0 .3.1.4.2l1.3 1.3c.2.2.2.6 0 .8l-1 1-2.1-2.1 1-1c.1-.1.2-.2.4-.2m0 3.9L14.1 23H12v-2.1l6.1-6.1z"/></svg> </a> <a href="https://github.com/nlohmann/json/raw/develop/docs/mkdocs/docs/api/basic_json/dump.md" title="View source of this page" class="md-content__button md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M17 18c.56 0 1 .44 1 1s-.44 1-1 1-1-.44-1-1 .44-1 1-1m0-3c-2.73 0-5.06 1.66-6 4 .94 2.34 3.27 4 6 4s5.06-1.66 6-4c-.94-2.34-3.27-4-6-4m0 6.5a2.5 2.5 0 0 1-2.5-2.5 2.5 2.5 0 0 1 2.5-2.5 2.5 2.5 0 0 1 2.5 2.5 2.5 2.5 0 0 1-2.5 2.5M9.27 20H6V4h7v5h5v4.07c.7.08 1.36.25 2 .49V8l-6-6H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h4.5a8.2 8.2 0 0 1-1.23-2"/></svg> </a> <h1 id=nlohmannbasic_jsondump><small>nlohmann::basic_json::</small>dump<a class=headerlink href=#nlohmannbasic_jsondump title="Permanent link">&para;</a></h1> <div class=highlight><pre><span></span><code><span class=n>string_t</span><span class=w> </span><span class=n>dump</span><span class=p>(</span><span class=k>const</span><span class=w> </span><span class=kt>int</span><span class=w> </span><span class=n>indent</span><span class=w> </span><span class=o>=</span><span class=w> </span><span class=mi>-1</span><span class=p>,</span>
 <span class=w>              </span><span class=k>const</span><span class=w> </span><span class=kt>char</span><span class=w> </span><span class=n>indent_char</span><span class=w> </span><span class=o>=</span><span class=w> </span><span class=sc>&#39; &#39;</span><span class=p>,</span>
 <span class=w>              </span><span class=k>const</span><span class=w> </span><span class=kt>bool</span><span class=w> </span><span class=n>ensure_ascii</span><span class=w> </span><span class=o>=</span><span class=w> </span><span class=nb>false</span><span class=p>,</span>
 <span class=w>              </span><span class=k>const</span><span class=w> </span><span class=n>error_handler_t</span><span class=w> </span><span class=n>error_handler</span><span class=w> </span><span class=o>=</span><span class=w> </span><span class=n>error_handler_t</span><span class=o>::</span><span class=n>strict</span><span class=p>)</span><span class=w> </span><span class=k>const</span><span class=p>;</span>
-</code></pre></div> <p>Serialization function for <abbr title="JavaScript Object Notation">JSON</abbr> values. The function tries to mimic Python's <a href="https://docs.python.org/2/library/json.html#json.dump"><code>json.dumps()</code> function</a>, and currently supports its <code>indent</code> and <code>ensure_ascii</code> parameters.</p> <h2 id=parameters>Parameters<a class=headerlink href=#parameters title="Permanent link">&para;</a></h2> <dl> <dt><code>indent</code> (in)</dt> <dd>If <code>indent</code> is nonnegative, then array elements and object members will be pretty-printed with that indent level. An indent level of <code>0</code> will only insert newlines. <code>-1</code> (the default) selects the most compact representation.</dd> <dt><code>indent_char</code> (in)</dt> <dd>The character to use for indentation if <code>indent</code> is greater than <code>0</code>. The default is <code></code> (space).</dd> <dt><code>ensure_ascii</code> (in)</dt> <dd>If <code>ensure_ascii</code> is true, all non-<abbr title="American Standard Code for Information Interchange">ASCII</abbr> characters in the output are escaped with <code>\uXXXX</code> sequences, and the result consists of <abbr title="American Standard Code for Information Interchange">ASCII</abbr> characters only.</dd> <dt><code>error_handler</code> (in)</dt> <dd>how to react on decoding errors; there are three possible values (see <a href=../error_handler_t/ ><code>error_handler_t</code></a>: <code>strict</code> (throws and exception in case a decoding error occurs; default), <code>replace</code> (replace invalid <abbr title="Unicode Transformation Format">UTF</abbr>-8 sequences with U+FFFD), and <code>ignore</code> (ignore invalid <abbr title="Unicode Transformation Format">UTF</abbr>-8 sequences during serialization; all bytes are copied to the output unchanged)).</dd> </dl> <h2 id=return-value>Return value<a class=headerlink href=#return-value title="Permanent link">&para;</a></h2> <p>string containing the serialization of the <abbr title="JavaScript Object Notation">JSON</abbr> value</p> <h2 id=exception-safety>Exception safety<a class=headerlink href=#exception-safety title="Permanent link">&para;</a></h2> <p>Strong guarantee: if an exception is thrown, there are no changes to any <abbr title="JavaScript Object Notation">JSON</abbr> value.</p> <h2 id=exceptions>Exceptions<a class=headerlink href=#exceptions title="Permanent link">&para;</a></h2> <p>Throws <a href=../../../home/exceptions/#jsonexceptiontype_error316><code>type_error.316</code></a> if a string stored inside the <abbr title="JavaScript Object Notation">JSON</abbr> value is not <abbr title="Unicode Transformation Format">UTF</abbr>-8 encoded and <code>error_handler</code> is set to <code>strict</code></p> <h2 id=complexity>Complexity<a class=headerlink href=#complexity title="Permanent link">&para;</a></h2> <p>Linear.</p> <h2 id=notes>Notes<a class=headerlink href=#notes title="Permanent link">&para;</a></h2> <p>Binary values are serialized as an object containing two keys:</p> <ul> <li>"bytes": an array of bytes as integers</li> <li>"subtype": the subtype as integer or <code class=highlight><span class=kc>null</span></code> if the binary has no subtype</li> </ul> <h2 id=examples>Examples<a class=headerlink href=#examples title="Permanent link">&para;</a></h2> <details class=example> <summary>Example</summary> <p>The following example shows the effect of different <code>indent</code>, <code>indent_char</code>, and <code>ensure_ascii</code> parameters to the result of the serialization.</p> <div class=highlight><pre><span></span><code><span class=cp>#include</span><span class=w> </span><span class=cpf>&lt;iostream&gt;</span>
+</code></pre></div> <p>Serialization function for <abbr title="JavaScript Object Notation">JSON</abbr> values. The function tries to mimic Python's <a href="https://docs.python.org/2/library/json.html#json.dump"><code>json.dumps()</code> function</a>, and currently supports its <code>indent</code> and <code>ensure_ascii</code> parameters.</p> <h2 id=parameters>Parameters<a class=headerlink href=#parameters title="Permanent link">&para;</a></h2> <dl> <dt><code>indent</code> (in)</dt> <dd>If <code>indent</code> is nonnegative, then array elements and object members will be pretty-printed with that indent level. An indent level of <code>0</code> will only insert newlines. <code>-1</code> (the default) selects the most compact representation.</dd> <dt><code>indent_char</code> (in)</dt> <dd>The character to use for indentation if <code>indent</code> is greater than <code>0</code>. The default is <code></code> (space).</dd> <dt><code>ensure_ascii</code> (in)</dt> <dd>If <code>ensure_ascii</code> is true, all non-<abbr title="American Standard Code for Information Interchange">ASCII</abbr> characters in the output are escaped with <code>\uXXXX</code> sequences, and the result consists of <abbr title="American Standard Code for Information Interchange">ASCII</abbr> characters only.</dd> <dt><code>error_handler</code> (in)</dt> <dd>how to react on decoding errors; there are three possible values (see <a href=../error_handler_t/ ><code>error_handler_t</code></a>: <code>strict</code> (throws an exception in case a decoding error occurs; default), <code>replace</code> (replace invalid <abbr title="Unicode Transformation Format">UTF</abbr>-8 sequences with U+FFFD), and <code>ignore</code> (ignore invalid <abbr title="Unicode Transformation Format">UTF</abbr>-8 sequences during serialization; all bytes are copied to the output unchanged)).</dd> </dl> <h2 id=return-value>Return value<a class=headerlink href=#return-value title="Permanent link">&para;</a></h2> <p>string containing the serialization of the <abbr title="JavaScript Object Notation">JSON</abbr> value</p> <h2 id=exception-safety>Exception safety<a class=headerlink href=#exception-safety title="Permanent link">&para;</a></h2> <p>Strong guarantee: if an exception is thrown, there are no changes to any <abbr title="JavaScript Object Notation">JSON</abbr> value.</p> <h2 id=exceptions>Exceptions<a class=headerlink href=#exceptions title="Permanent link">&para;</a></h2> <p>Throws <a href=../../../home/exceptions/#jsonexceptiontype_error316><code>type_error.316</code></a> if a string stored inside the <abbr title="JavaScript Object Notation">JSON</abbr> value is not <abbr title="Unicode Transformation Format">UTF</abbr>-8 encoded and <code>error_handler</code> is set to <code>strict</code></p> <h2 id=complexity>Complexity<a class=headerlink href=#complexity title="Permanent link">&para;</a></h2> <p>Linear.</p> <h2 id=notes>Notes<a class=headerlink href=#notes title="Permanent link">&para;</a></h2> <p>Binary values are serialized as an object containing two keys:</p> <ul> <li>"bytes": an array of bytes as integers</li> <li>"subtype": the subtype as integer or <code class=highlight><span class=kc>null</span></code> if the binary has no subtype</li> </ul> <h2 id=examples>Examples<a class=headerlink href=#examples title="Permanent link">&para;</a></h2> <details class=example> <summary>Example</summary> <p>The following example shows the effect of different <code>indent</code>, <code>indent_char</code>, and <code>ensure_ascii</code> parameters to the result of the serialization.</p> <div class=highlight><pre><span></span><code><span class=cp>#include</span><span class=w> </span><span class=cpf>&lt;iostream&gt;</span>
 <span class=cp>#include</span><span class=w> </span><span class=cpf>&lt;nlohmann/json.hpp&gt;</span>
 
 <span class=k>using</span><span class=w> </span><span class=n>json</span><span class=w> </span><span class=o>=</span><span class=w> </span><span class=n>nlohmann</span><span class=o>::</span><span class=n>json</span><span class=p>;</span>
@@ -105,4 +105,4 @@
 <span class=p>[</span><span class=err>jso</span><span class=kc>n</span><span class=err>.excep</span><span class=kc>t</span><span class=err>io</span><span class=kc>n</span><span class=err>.</span><span class=kc>t</span><span class=err>ype_error.</span><span class=mi>316</span><span class=p>]</span><span class=w> </span><span class=err>i</span><span class=kc>n</span><span class=err>valid</span><span class=w> </span><span class=err>UTF</span><span class=mi>-8</span><span class=w> </span><span class=err>by</span><span class=kc>te</span><span class=w> </span><span class=err>a</span><span class=kc>t</span><span class=w> </span><span class=err>i</span><span class=kc>n</span><span class=err>dex</span><span class=w> </span><span class=mi>2</span><span class=p>:</span><span class=w> </span><span class=mi>0</span><span class=err>xA</span><span class=mi>9</span>
 <span class=err>s</span><span class=kc>tr</span><span class=err>i</span><span class=kc>n</span><span class=err>g</span><span class=w> </span><span class=err>wi</span><span class=kc>t</span><span class=err>h</span><span class=w> </span><span class=err>replaced</span><span class=w> </span><span class=err>i</span><span class=kc>n</span><span class=err>valid</span><span class=w> </span><span class=err>charac</span><span class=kc>ters</span><span class=p>:</span><span class=w> </span><span class=s2>&quot;ä�ü&quot;</span>
 <span class=err>s</span><span class=kc>tr</span><span class=err>i</span><span class=kc>n</span><span class=err>g</span><span class=w> </span><span class=err>wi</span><span class=kc>t</span><span class=err>h</span><span class=w> </span><span class=err>ig</span><span class=kc>n</span><span class=err>ored</span><span class=w> </span><span class=err>i</span><span class=kc>n</span><span class=err>valid</span><span class=w> </span><span class=err>charac</span><span class=kc>ters</span><span class=p>:</span><span class=w> </span><span class=s2>&quot;äü&quot;</span>
-</code></pre></div> </details> <h2 id=version-history>Version history<a class=headerlink href=#version-history title="Permanent link">&para;</a></h2> <ul> <li>Added in version 1.0.0.</li> <li>Indentation character <code>indent_char</code>, option <code>ensure_ascii</code> and exceptions added in version 3.0.0.</li> <li>Error handlers added in version 3.4.0.</li> <li>Serialization of binary values added in version 3.8.0.</li> </ul> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 23, 2026 11:16:18 UTC">June 23, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
+</code></pre></div> </details> <h2 id=see-also>See also<a class=headerlink href=#see-also title="Permanent link">&para;</a></h2> <ul> <li><a href=../to_string/ >to_string</a> returns a string representation of a <abbr title="JavaScript Object Notation">JSON</abbr> value</li> <li><a href=../../operator_ltlt/ >operator&lt;&lt;</a> serialize to stream</li> </ul> <h2 id=version-history>Version history<a class=headerlink href=#version-history title="Permanent link">&para;</a></h2> <ul> <li>Added in version 1.0.0.</li> <li>Indentation character <code>indent_char</code>, option <code>ensure_ascii</code> and exceptions added in version 3.0.0.</li> <li>Error handlers added in version 3.4.0.</li> <li>Serialization of binary values added in version 3.8.0.</li> </ul> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 29, 2026 20:15:18 UTC">June 29, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
diff --git a/api/basic_json/emplace/index.html b/api/basic_json/emplace/index.html
index e196d16..0aec81f 100644
--- a/api/basic_json/emplace/index.html
+++ b/api/basic_json/emplace/index.html
@@ -1,6 +1,6 @@
-<!doctype html><html lang=en class=no-js> <head><meta charset=utf-8><meta name=viewport content="width=device-width,initial-scale=1"><meta name=author content="Niels Lohmann"><link href="https://json.nlohmann.me/api/basic_json/emplace/" rel="canonical"><link href=../dump/ rel=prev><link href=../emplace_back/ rel=next><link rel=icon href=../../../assets/images/favicon.png><meta name=generator content="mkdocs-1.6.1, mkdocs-material-9.7.6"><title>emplace - JSON for Modern C++</title><link rel=stylesheet href=../../../assets/stylesheets/main.484c7ddc.min.css><link rel=stylesheet href=../../../assets/stylesheets/palette.ab4e12ef.min.css><link rel="stylesheet" href="../../../assets/external/fonts.googleapis.com/css.61a430c9.css"><style>:root{--md-text-font:"Roboto";--md-code-font:"JetBrains Mono"}</style><link rel=stylesheet href=../../../css/custom.css><script>__md_scope=new URL("../../..",location),__md_hash=e=>[...e].reduce(((e,_)=>(e<<5)-e+_.charCodeAt(0)),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script></head> <body dir=ltr data-md-color-scheme=default data-md-color-primary=indigo data-md-color-accent=indigo> <input class=md-toggle data-md-toggle=drawer type=checkbox id=__drawer autocomplete=off> <input class=md-toggle data-md-toggle=search type=checkbox id=__search autocomplete=off> <label class=md-overlay for=__drawer></label> <div data-md-component=skip> <a href=#nlohmannbasic_jsonemplace class=md-skip> Skip to content </a> </div> <div data-md-component=announce> </div> <header class=md-header data-md-component=header> <nav class="md-header__inner md-grid" aria-label=Header> <a href=../../.. title="JSON for Modern C++" class="md-header__button md-logo" aria-label="JSON for Modern C++" data-md-component=logo> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54"/></svg> </a> <label class="md-header__button md-icon" for=__drawer> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M3 6h18v2H3zm0 5h18v2H3zm0 5h18v2H3z"/></svg> </label> <div class=md-header__title data-md-component=header-title> <div class=md-header__ellipsis> <div class=md-header__topic> <span class=md-ellipsis> JSON for Modern C++ </span> </div> <div class=md-header__topic data-md-component=header-topic> <span class=md-ellipsis> emplace </span> </div> </div> </div> <form class=md-header__option data-md-component=palette> <input class=md-option data-md-color-media="(prefers-color-scheme: light)" data-md-color-scheme=default data-md-color-primary=indigo data-md-color-accent=indigo aria-label="Switch to dark mode" type=radio name=__palette id=__palette_0> <label class="md-header__button md-icon" title="Switch to dark mode" for=__palette_1 hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a4 4 0 0 0-4 4 4 4 0 0 0 4 4 4 4 0 0 0 4-4 4 4 0 0 0-4-4m0 10a6 6 0 0 1-6-6 6 6 0 0 1 6-6 6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12z"/></svg> </label> <input class=md-option data-md-color-media="(prefers-color-scheme: dark)" data-md-color-scheme=slate data-md-color-primary=indigo data-md-color-accent=indigo aria-label="Switch to light mode" type=radio name=__palette id=__palette_1> <label class="md-header__button md-icon" title="Switch to light mode" for=__palette_0 hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 18c-.89 0-1.74-.2-2.5-.55C11.56 16.5 13 14.42 13 12s-1.44-4.5-3.5-5.45C10.26 6.2 11.11 6 12 6a6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12z"/></svg> </label> </form> <script>var palette=__md_get("__palette");if(palette&&palette.color){if("(prefers-color-scheme)"===palette.color.media){var media=matchMedia("(prefers-color-scheme: light)"),input=document.querySelector(media.matches?"[data-md-color-media='(prefers-color-scheme: light)']":"[data-md-color-media='(prefers-color-scheme: dark)']");palette.color.media=input.getAttribute("data-md-color-media"),palette.color.scheme=input.getAttribute("data-md-color-scheme"),palette.color.primary=input.getAttribute("data-md-color-primary"),palette.color.accent=input.getAttribute("data-md-color-accent")}for(var[key,value]of Object.entries(palette.color))document.body.setAttribute("data-md-color-"+key,value)}</script> <label class="md-header__button md-icon" for=__search> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg> </label> <div class=md-search data-md-component=search role=dialog> <label class=md-search__overlay for=__search></label> <div class=md-search__inner role=search> <form class=md-search__form name=search> <input type=text class=md-search__input name=query aria-label=Search placeholder=Search autocapitalize=off autocorrect=off autocomplete=off spellcheck=false data-md-component=search-query required> <label class="md-search__icon md-icon" for=__search> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11z"/></svg> </label> <nav class=md-search__options aria-label=Search> <button type=reset class="md-search__icon md-icon" title=Clear aria-label=Clear tabindex=-1> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z"/></svg> </button> </nav> </form> <div class=md-search__output> <div class=md-search__scrollwrap tabindex=0 data-md-scrollfix> <div class=md-search-result data-md-component=search-result> <div class=md-search-result__meta> Initializing search </div> <ol class=md-search-result__list role=presentation></ol> </div> </div> </div> </div> </div> <div class=md-header__source> <a href="https://github.com/nlohmann/json" title="Go to repository" class="md-source" data-md-component="source"> <div class="md-source__icon md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </div> <div class=md-source__repository> nlohmann/json </div> </a> </div> </nav> </header> <div class=md-container data-md-component=container> <nav class=md-tabs aria-label=Tabs data-md-component=tabs> <div class=md-grid> <ul class=md-tabs__list> <li class=md-tabs__item> <a href=../../.. class=md-tabs__link> Home </a> </li> <li class=md-tabs__item> <a href=../../../features/arbitrary_types/ class=md-tabs__link> Features </a> </li> <li class=md-tabs__item> <a href=../../../integration/ class=md-tabs__link> Integration </a> </li> <li class="md-tabs__item md-tabs__item--active"> <a href=../ class=md-tabs__link> API Documentation </a> </li> <li class=md-tabs__item> <a href=../../../community/ class=md-tabs__link> Community </a> </li> </ul> </div> </nav> <main class=md-main data-md-component=main> <div class="md-main__inner md-grid"> <div class="md-sidebar md-sidebar--primary" data-md-component=sidebar data-md-type=navigation> <div class=md-sidebar__scrollwrap> <div class=md-sidebar__inner> <nav class="md-nav md-nav--primary md-nav--lifted" aria-label=Navigation data-md-level=0> <label class=md-nav__title for=__drawer> <a href=../../.. title="JSON for Modern C++" class="md-nav__button md-logo" aria-label="JSON for Modern C++" data-md-component=logo> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54"/></svg> </a> JSON for Modern C++ </label> <div class=md-nav__source> <a href="https://github.com/nlohmann/json" title="Go to repository" class="md-source" data-md-component="source"> <div class="md-source__icon md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </div> <div class=md-source__repository> nlohmann/json </div> </a> </div> <ul class=md-nav__list data-md-scrollfix> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_1> <div class="md-nav__link md-nav__container"> <a href=../../.. class="md-nav__link "> <span class=md-ellipsis> Home </span> </a> <label class="md-nav__link " for=__nav_1 id=__nav_1_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_1_label aria-expanded=false> <label class=md-nav__title for=__nav_1> <span class="md-nav__icon md-icon"></span> Home </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../home/license/ class=md-nav__link> <span class=md-ellipsis> License </span> </a> </li> <li class=md-nav__item> <a href=../../../home/faq/ class=md-nav__link> <span class=md-ellipsis> FAQ </span> </a> </li> <li class=md-nav__item> <a href=../../../home/exceptions/ class=md-nav__link> <span class=md-ellipsis> Exceptions </span> </a> </li> <li class=md-nav__item> <a href=../../../home/releases/ class=md-nav__link> <span class=md-ellipsis> Releases </span> </a> </li> <li class=md-nav__item> <a href=../../../home/design_goals/ class=md-nav__link> <span class=md-ellipsis> Design goals </span> </a> </li> <li class=md-nav__item> <a href=../../../home/architecture/ class=md-nav__link> <span class=md-ellipsis> Architecture </span> </a> </li> <li class=md-nav__item> <a href=../../../home/customers/ class=md-nav__link> <span class=md-ellipsis> Customers </span> </a> </li> <li class=md-nav__item> <a href=../../../home/sponsors/ class=md-nav__link> <span class=md-ellipsis> Sponsors </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2> <label class=md-nav__link for=__nav_2 id=__nav_2_label tabindex=0> <span class=md-ellipsis> Features </span> <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_2_label aria-expanded=false> <label class=md-nav__title for=__nav_2> <span class="md-nav__icon md-icon"></span> Features </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/arbitrary_types/ class=md-nav__link> <span class=md-ellipsis> Arbitrary Type Conversions </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_2> <div class="md-nav__link md-nav__container"> <a href=../../../features/binary_formats/ class="md-nav__link "> <span class=md-ellipsis> Binary Formats </span> </a> <label class="md-nav__link " for=__nav_2_2 id=__nav_2_2_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_2_label aria-expanded=false> <label class=md-nav__title for=__nav_2_2> <span class="md-nav__icon md-icon"></span> Binary Formats </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/binary_formats/bjdata/ class=md-nav__link> <span class=md-ellipsis> BJData </span> </a> </li> <li class=md-nav__item> <a href=../../../features/binary_formats/bson/ class=md-nav__link> <span class=md-ellipsis> BSON </span> </a> </li> <li class=md-nav__item> <a href=../../../features/binary_formats/cbor/ class=md-nav__link> <span class=md-ellipsis> CBOR </span> </a> </li> <li class=md-nav__item> <a href=../../../features/binary_formats/messagepack/ class=md-nav__link> <span class=md-ellipsis> MessagePack </span> </a> </li> <li class=md-nav__item> <a href=../../../features/binary_formats/ubjson/ class=md-nav__link> <span class=md-ellipsis> UBJSON </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../../features/binary_values/ class=md-nav__link> <span class=md-ellipsis> Binary Values </span> </a> </li> <li class=md-nav__item> <a href=../../../features/comments/ class=md-nav__link> <span class=md-ellipsis> Comments </span> </a> </li> <li class=md-nav__item> <a href=../../../features/trailing_commas/ class=md-nav__link> <span class=md-ellipsis> Trailing Commas </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_6> <div class="md-nav__link md-nav__container"> <a href=../../../features/element_access/ class="md-nav__link "> <span class=md-ellipsis> Element Access </span> </a> <label class="md-nav__link " for=__nav_2_6 id=__nav_2_6_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_6_label aria-expanded=false> <label class=md-nav__title for=__nav_2_6> <span class="md-nav__icon md-icon"></span> Element Access </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/element_access/unchecked_access/ class=md-nav__link> <span class=md-ellipsis> Unchecked access: operator[] </span> </a> </li> <li class=md-nav__item> <a href=../../../features/element_access/checked_access/ class=md-nav__link> <span class=md-ellipsis> Checked access: at </span> </a> </li> <li class=md-nav__item> <a href=../../../features/element_access/default_value/ class=md-nav__link> <span class=md-ellipsis> Access with default value: value </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../../features/iterators/ class=md-nav__link> <span class=md-ellipsis> Iterators </span> </a> </li> <li class=md-nav__item> <a href=../../../features/json_pointer/ class=md-nav__link> <span class=md-ellipsis> JSON Pointer </span> </a> </li> <li class=md-nav__item> <a href=../../../features/json_patch/ class=md-nav__link> <span class=md-ellipsis> JSON Patch and Diff </span> </a> </li> <li class=md-nav__item> <a href=../../../features/merge_patch/ class=md-nav__link> <span class=md-ellipsis> JSON Merge Patch </span> </a> </li> <li class=md-nav__item> <a href=../../../features/modules/ class=md-nav__link> <span class=md-ellipsis> Modules </span> </a> </li> <li class=md-nav__item> <a href=../../../features/namespace/ class=md-nav__link> <span class=md-ellipsis> nlohmann Namespace </span> </a> </li> <li class=md-nav__item> <a href=../../../features/object_order/ class=md-nav__link> <span class=md-ellipsis> Object Order </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_14> <div class="md-nav__link md-nav__container"> <a href=../../../features/parsing/ class="md-nav__link "> <span class=md-ellipsis> Parsing </span> </a> <label class="md-nav__link " for=__nav_2_14 id=__nav_2_14_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_14_label aria-expanded=false> <label class=md-nav__title for=__nav_2_14> <span class="md-nav__icon md-icon"></span> Parsing </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/parsing/json_lines/ class=md-nav__link> <span class=md-ellipsis> JSON Lines </span> </a> </li> <li class=md-nav__item> <a href=../../../features/parsing/parse_exceptions/ class=md-nav__link> <span class=md-ellipsis> Parsing and Exceptions </span> </a> </li> <li class=md-nav__item> <a href=../../../features/parsing/parser_callbacks/ class=md-nav__link> <span class=md-ellipsis> Parser Callbacks </span> </a> </li> <li class=md-nav__item> <a href=../../../features/parsing/sax_interface/ class=md-nav__link> <span class=md-ellipsis> SAX Interface </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../../features/assertions/ class=md-nav__link> <span class=md-ellipsis> Runtime Assertions </span> </a> </li> <li class=md-nav__item> <a href=../../../features/enum_conversion/ class=md-nav__link> <span class=md-ellipsis> Specializing enum conversion </span> </a> </li> <li class=md-nav__item> <a href=../../../features/macros/ class=md-nav__link> <span class=md-ellipsis> Supported Macros </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_18> <div class="md-nav__link md-nav__container"> <a href=../../../features/types/ class="md-nav__link "> <span class=md-ellipsis> Types </span> </a> <label class="md-nav__link " for=__nav_2_18 id=__nav_2_18_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_18_label aria-expanded=false> <label class=md-nav__title for=__nav_2_18> <span class="md-nav__icon md-icon"></span> Types </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/types/number_handling/ class=md-nav__link> <span class=md-ellipsis> Number Handling </span> </a> </li> </ul> </nav> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_3> <div class="md-nav__link md-nav__container"> <a href=../../../integration/ class="md-nav__link "> <span class=md-ellipsis> Integration </span> </a> <label class="md-nav__link " for=__nav_3 id=__nav_3_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_3_label aria-expanded=false> <label class=md-nav__title for=__nav_3> <span class="md-nav__icon md-icon"></span> Integration </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../integration/migration_guide/ class=md-nav__link> <span class=md-ellipsis> Migration Guide </span> </a> </li> <li class=md-nav__item> <a href=../../../integration/cmake/ class=md-nav__link> <span class=md-ellipsis> CMake </span> </a> </li> <li class=md-nav__item> <a href=../../../integration/package_managers/ class=md-nav__link> <span class=md-ellipsis> Package Managers </span> </a> </li> <li class=md-nav__item> <a href=../../../integration/pkg-config/ class=md-nav__link> <span class=md-ellipsis> Pkg-config </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--active md-nav__item--section md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4 checked> <label class=md-nav__link for=__nav_4 id=__nav_4_label tabindex> <span class=md-ellipsis> API Documentation </span> <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_4_label aria-expanded=true> <label class=md-nav__title for=__nav_4> <span class="md-nav__icon md-icon"></span> API Documentation </label> <ul class=md-nav__list data-md-scrollfix> <li class="md-nav__item md-nav__item--active md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_1 checked> <div class="md-nav__link md-nav__container"> <a href=../ class="md-nav__link "> <span class=md-ellipsis> basic_json </span> </a> <label class="md-nav__link " for=__nav_4_1 id=__nav_4_1_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_1_label aria-expanded=true> <label class=md-nav__title for=__nav_4_1> <span class="md-nav__icon md-icon"></span> basic_json </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../basic_json/ class=md-nav__link> <span class=md-ellipsis> (Constructor) </span> </a> </li> <li class=md-nav__item> <a href=../~basic_json/ class=md-nav__link> <span class=md-ellipsis> (Destructor) </span> </a> </li> <li class=md-nav__item> <a href=../accept/ class=md-nav__link> <span class=md-ellipsis> accept </span> </a> </li> <li class=md-nav__item> <a href=../array/ class=md-nav__link> <span class=md-ellipsis> array </span> </a> </li> <li class=md-nav__item> <a href=../array_t/ class=md-nav__link> <span class=md-ellipsis> array_t </span> </a> </li> <li class=md-nav__item> <a href=../at/ class=md-nav__link> <span class=md-ellipsis> at </span> </a> </li> <li class=md-nav__item> <a href=../back/ class=md-nav__link> <span class=md-ellipsis> back </span> </a> </li> <li class=md-nav__item> <a href=../begin/ class=md-nav__link> <span class=md-ellipsis> begin </span> </a> </li> <li class=md-nav__item> <a href=../binary/ class=md-nav__link> <span class=md-ellipsis> binary </span> </a> </li> <li class=md-nav__item> <a href=../binary_t/ class=md-nav__link> <span class=md-ellipsis> binary_t </span> </a> </li> <li class=md-nav__item> <a href=../boolean_t/ class=md-nav__link> <span class=md-ellipsis> boolean_t </span> </a> </li> <li class=md-nav__item> <a href=../cbegin/ class=md-nav__link> <span class=md-ellipsis> cbegin </span> </a> </li> <li class=md-nav__item> <a href=../cbor_tag_handler_t/ class=md-nav__link> <span class=md-ellipsis> cbor_tag_handler_t </span> </a> </li> <li class=md-nav__item> <a href=../cend/ class=md-nav__link> <span class=md-ellipsis> cend </span> </a> </li> <li class=md-nav__item> <a href=../clear/ class=md-nav__link> <span class=md-ellipsis> clear </span> </a> </li> <li class=md-nav__item> <a href=../contains/ class=md-nav__link> <span class=md-ellipsis> contains </span> </a> </li> <li class=md-nav__item> <a href=../count/ class=md-nav__link> <span class=md-ellipsis> count </span> </a> </li> <li class=md-nav__item> <a href=../crbegin/ class=md-nav__link> <span class=md-ellipsis> crbegin </span> </a> </li> <li class=md-nav__item> <a href=../crend/ class=md-nav__link> <span class=md-ellipsis> crend </span> </a> </li> <li class=md-nav__item> <a href=../default_object_comparator_t/ class=md-nav__link> <span class=md-ellipsis> default_object_comparator_t </span> </a> </li> <li class=md-nav__item> <a href=../diff/ class=md-nav__link> <span class=md-ellipsis> diff </span> </a> </li> <li class=md-nav__item> <a href=../dump/ class=md-nav__link> <span class=md-ellipsis> dump </span> </a> </li> <li class="md-nav__item md-nav__item--active"> <input class="md-nav__toggle md-toggle" type=checkbox id=__toc> <label class="md-nav__link md-nav__link--active" for=__toc> <span class=md-ellipsis> emplace </span> <span class="md-nav__icon md-icon"></span> </label> <a href=./ class="md-nav__link md-nav__link--active"> <span class=md-ellipsis> emplace </span> </a> <nav class="md-nav md-nav--secondary" aria-label="Table of contents"> <label class=md-nav__title for=__toc> <span class="md-nav__icon md-icon"></span> Table of contents </label> <ul class=md-nav__list data-md-component=toc data-md-scrollfix> <li class=md-nav__item> <a href=#template-parameters class=md-nav__link> <span class=md-ellipsis> Template parameters </span> </a> </li> <li class=md-nav__item> <a href=#iterator-invalidation class=md-nav__link> <span class=md-ellipsis> Iterator invalidation </span> </a> </li> <li class=md-nav__item> <a href=#parameters class=md-nav__link> <span class=md-ellipsis> Parameters </span> </a> </li> <li class=md-nav__item> <a href=#return-value class=md-nav__link> <span class=md-ellipsis> Return value </span> </a> </li> <li class=md-nav__item> <a href=#exceptions class=md-nav__link> <span class=md-ellipsis> Exceptions </span> </a> </li> <li class=md-nav__item> <a href=#complexity class=md-nav__link> <span class=md-ellipsis> Complexity </span> </a> </li> <li class=md-nav__item> <a href=#examples class=md-nav__link> <span class=md-ellipsis> Examples </span> </a> </li> <li class=md-nav__item> <a href=#version-history class=md-nav__link> <span class=md-ellipsis> Version history </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../emplace_back/ class=md-nav__link> <span class=md-ellipsis> emplace_back </span> </a> </li> <li class=md-nav__item> <a href=../empty/ class=md-nav__link> <span class=md-ellipsis> empty </span> </a> </li> <li class=md-nav__item> <a href=../end/ class=md-nav__link> <span class=md-ellipsis> end </span> </a> </li> <li class=md-nav__item> <a href=../end_pos/ class=md-nav__link> <span class=md-ellipsis> end_pos </span> </a> </li> <li class=md-nav__item> <a href=../erase/ class=md-nav__link> <span class=md-ellipsis> erase </span> </a> </li> <li class=md-nav__item> <a href=../error_handler_t/ class=md-nav__link> <span class=md-ellipsis> error_handler_t </span> </a> </li> <li class=md-nav__item> <a href=../exception/ class=md-nav__link> <span class=md-ellipsis> exception </span> </a> </li> <li class=md-nav__item> <a href=../find/ class=md-nav__link> <span class=md-ellipsis> find </span> </a> </li> <li class=md-nav__item> <a href=../flatten/ class=md-nav__link> <span class=md-ellipsis> flatten </span> </a> </li> <li class=md-nav__item> <a href=../from_bjdata/ class=md-nav__link> <span class=md-ellipsis> from_bjdata </span> </a> </li> <li class=md-nav__item> <a href=../from_bson/ class=md-nav__link> <span class=md-ellipsis> from_bson </span> </a> </li> <li class=md-nav__item> <a href=../from_cbor/ class=md-nav__link> <span class=md-ellipsis> from_cbor </span> </a> </li> <li class=md-nav__item> <a href=../from_msgpack/ class=md-nav__link> <span class=md-ellipsis> from_msgpack </span> </a> </li> <li class=md-nav__item> <a href=../from_ubjson/ class=md-nav__link> <span class=md-ellipsis> from_ubjson </span> </a> </li> <li class=md-nav__item> <a href=../front/ class=md-nav__link> <span class=md-ellipsis> front </span> </a> </li> <li class=md-nav__item> <a href=../get/ class=md-nav__link> <span class=md-ellipsis> get </span> </a> </li> <li class=md-nav__item> <a href=../get_allocator/ class=md-nav__link> <span class=md-ellipsis> get_allocator </span> </a> </li> <li class=md-nav__item> <a href=../get_binary/ class=md-nav__link> <span class=md-ellipsis> get_binary </span> </a> </li> <li class=md-nav__item> <a href=../get_ptr/ class=md-nav__link> <span class=md-ellipsis> get_ptr </span> </a> </li> <li class=md-nav__item> <a href=../get_ref/ class=md-nav__link> <span class=md-ellipsis> get_ref </span> </a> </li> <li class=md-nav__item> <a href=../get_to/ class=md-nav__link> <span class=md-ellipsis> get_to </span> </a> </li> <li class=md-nav__item> <a href=../std_hash/ class=md-nav__link> <span class=md-ellipsis> std::hash&lt;basic_json&gt; </span> </a> </li> <li class=md-nav__item> <a href=../input_format_t/ class=md-nav__link> <span class=md-ellipsis> input_format_t </span> </a> </li> <li class=md-nav__item> <a href=../insert/ class=md-nav__link> <span class=md-ellipsis> insert </span> </a> </li> <li class=md-nav__item> <a href=../invalid_iterator/ class=md-nav__link> <span class=md-ellipsis> invalid_iterator </span> </a> </li> <li class=md-nav__item> <a href=../is_array/ class=md-nav__link> <span class=md-ellipsis> is_array </span> </a> </li> <li class=md-nav__item> <a href=../is_binary/ class=md-nav__link> <span class=md-ellipsis> is_binary </span> </a> </li> <li class=md-nav__item> <a href=../is_boolean/ class=md-nav__link> <span class=md-ellipsis> is_boolean </span> </a> </li> <li class=md-nav__item> <a href=../is_discarded/ class=md-nav__link> <span class=md-ellipsis> is_discarded </span> </a> </li> <li class=md-nav__item> <a href=../is_null/ class=md-nav__link> <span class=md-ellipsis> is_null </span> </a> </li> <li class=md-nav__item> <a href=../is_number/ class=md-nav__link> <span class=md-ellipsis> is_number </span> </a> </li> <li class=md-nav__item> <a href=../is_number_float/ class=md-nav__link> <span class=md-ellipsis> is_number_float </span> </a> </li> <li class=md-nav__item> <a href=../is_number_integer/ class=md-nav__link> <span class=md-ellipsis> is_number_integer </span> </a> </li> <li class=md-nav__item> <a href=../is_number_unsigned/ class=md-nav__link> <span class=md-ellipsis> is_number_unsigned </span> </a> </li> <li class=md-nav__item> <a href=../is_object/ class=md-nav__link> <span class=md-ellipsis> is_object </span> </a> </li> <li class=md-nav__item> <a href=../is_primitive/ class=md-nav__link> <span class=md-ellipsis> is_primitive </span> </a> </li> <li class=md-nav__item> <a href=../is_string/ class=md-nav__link> <span class=md-ellipsis> is_string </span> </a> </li> <li class=md-nav__item> <a href=../is_structured/ class=md-nav__link> <span class=md-ellipsis> is_structured </span> </a> </li> <li class=md-nav__item> <a href=../items/ class=md-nav__link> <span class=md-ellipsis> items </span> </a> </li> <li class=md-nav__item> <a href=../json_base_class_t/ class=md-nav__link> <span class=md-ellipsis> json_base_class_t </span> </a> </li> <li class=md-nav__item> <a href=../json_serializer/ class=md-nav__link> <span class=md-ellipsis> json_serializer </span> </a> </li> <li class=md-nav__item> <a href=../max_size/ class=md-nav__link> <span class=md-ellipsis> max_size </span> </a> </li> <li class=md-nav__item> <a href=../meta/ class=md-nav__link> <span class=md-ellipsis> meta </span> </a> </li> <li class=md-nav__item> <a href=../merge_patch/ class=md-nav__link> <span class=md-ellipsis> merge_patch </span> </a> </li> <li class=md-nav__item> <a href=../number_float_t/ class=md-nav__link> <span class=md-ellipsis> number_float_t </span> </a> </li> <li class=md-nav__item> <a href=../number_integer_t/ class=md-nav__link> <span class=md-ellipsis> number_integer_t </span> </a> </li> <li class=md-nav__item> <a href=../number_unsigned_t/ class=md-nav__link> <span class=md-ellipsis> number_unsigned_t </span> </a> </li> <li class=md-nav__item> <a href=../object/ class=md-nav__link> <span class=md-ellipsis> object </span> </a> </li> <li class=md-nav__item> <a href=../object_comparator_t/ class=md-nav__link> <span class=md-ellipsis> object_comparator_t </span> </a> </li> <li class=md-nav__item> <a href=../object_t/ class=md-nav__link> <span class=md-ellipsis> object_t </span> </a> </li> <li class=md-nav__item> <a href=../operator_ValueType/ class=md-nav__link> <span class=md-ellipsis> operator ValueType </span> </a> </li> <li class=md-nav__item> <a href=../operator_value_t/ class=md-nav__link> <span class=md-ellipsis> operator value_t </span> </a> </li> <li class=md-nav__item> <a href=../operator%5B%5D/ class=md-nav__link> <span class=md-ellipsis> operator[] </span> </a> </li> <li class=md-nav__item> <a href=../operator%3D/ class=md-nav__link> <span class=md-ellipsis> operator= </span> </a> </li> <li class=md-nav__item> <a href=../operator%2B%3D/ class=md-nav__link> <span class=md-ellipsis> operator+= </span> </a> </li> <li class=md-nav__item> <a href=../operator_eq/ class=md-nav__link> <span class=md-ellipsis> operator== </span> </a> </li> <li class=md-nav__item> <a href=../operator_ne/ class=md-nav__link> <span class=md-ellipsis> operator!= </span> </a> </li> <li class=md-nav__item> <a href=../operator_lt/ class=md-nav__link> <span class=md-ellipsis> operator< </span> </a> </li> <li class=md-nav__item> <a href=../operator_gt/ class=md-nav__link> <span class=md-ellipsis> operator> </span> </a> </li> <li class=md-nav__item> <a href=../operator_le/ class=md-nav__link> <span class=md-ellipsis> operator<= </span> </a> </li> <li class=md-nav__item> <a href=../operator_ge/ class=md-nav__link> <span class=md-ellipsis> operator>= </span> </a> </li> <li class=md-nav__item> <a href=../operator_spaceship/ class=md-nav__link> <span class=md-ellipsis> operator<=> </span> </a> </li> <li class=md-nav__item> <a href=../out_of_range/ class=md-nav__link> <span class=md-ellipsis> out_of_range </span> </a> </li> <li class=md-nav__item> <a href=../other_error/ class=md-nav__link> <span class=md-ellipsis> other_error </span> </a> </li> <li class=md-nav__item> <a href=../parse/ class=md-nav__link> <span class=md-ellipsis> parse </span> </a> </li> <li class=md-nav__item> <a href=../parse_error/ class=md-nav__link> <span class=md-ellipsis> parse_error </span> </a> </li> <li class=md-nav__item> <a href=../parse_event_t/ class=md-nav__link> <span class=md-ellipsis> parse_event_t </span> </a> </li> <li class=md-nav__item> <a href=../parser_callback_t/ class=md-nav__link> <span class=md-ellipsis> parser_callback_t </span> </a> </li> <li class=md-nav__item> <a href=../patch/ class=md-nav__link> <span class=md-ellipsis> patch </span> </a> </li> <li class=md-nav__item> <a href=../patch_inplace/ class=md-nav__link> <span class=md-ellipsis> patch_inplace </span> </a> </li> <li class=md-nav__item> <a href=../push_back/ class=md-nav__link> <span class=md-ellipsis> push_back </span> </a> </li> <li class=md-nav__item> <a href=../rbegin/ class=md-nav__link> <span class=md-ellipsis> rbegin </span> </a> </li> <li class=md-nav__item> <a href=../rend/ class=md-nav__link> <span class=md-ellipsis> rend </span> </a> </li> <li class=md-nav__item> <a href=../sax_parse/ class=md-nav__link> <span class=md-ellipsis> sax_parse </span> </a> </li> <li class=md-nav__item> <a href=../size/ class=md-nav__link> <span class=md-ellipsis> size </span> </a> </li> <li class=md-nav__item> <a href=../start_pos/ class=md-nav__link> <span class=md-ellipsis> start_pos </span> </a> </li> <li class=md-nav__item> <a href=../string_t/ class=md-nav__link> <span class=md-ellipsis> string_t </span> </a> </li> <li class=md-nav__item> <a href=../swap/ class=md-nav__link> <span class=md-ellipsis> swap </span> </a> </li> <li class=md-nav__item> <a href=../std_swap/ class=md-nav__link> <span class=md-ellipsis> std::swap&lt;basic_json&gt; </span> </a> </li> <li class=md-nav__item> <a href=../to_bjdata/ class=md-nav__link> <span class=md-ellipsis> to_bjdata </span> </a> </li> <li class=md-nav__item> <a href=../to_bson/ class=md-nav__link> <span class=md-ellipsis> to_bson </span> </a> </li> <li class=md-nav__item> <a href=../to_cbor/ class=md-nav__link> <span class=md-ellipsis> to_cbor </span> </a> </li> <li class=md-nav__item> <a href=../to_msgpack/ class=md-nav__link> <span class=md-ellipsis> to_msgpack </span> </a> </li> <li class=md-nav__item> <a href=../to_string/ class=md-nav__link> <span class=md-ellipsis> to_string </span> </a> </li> <li class=md-nav__item> <a href=../to_ubjson/ class=md-nav__link> <span class=md-ellipsis> to_ubjson </span> </a> </li> <li class=md-nav__item> <a href=../type/ class=md-nav__link> <span class=md-ellipsis> type </span> </a> </li> <li class=md-nav__item> <a href=../type_error/ class=md-nav__link> <span class=md-ellipsis> type_error </span> </a> </li> <li class=md-nav__item> <a href=../type_name/ class=md-nav__link> <span class=md-ellipsis> type_name </span> </a> </li> <li class=md-nav__item> <a href=../unflatten/ class=md-nav__link> <span class=md-ellipsis> unflatten </span> </a> </li> <li class=md-nav__item> <a href=../update/ class=md-nav__link> <span class=md-ellipsis> update </span> </a> </li> <li class=md-nav__item> <a href=../value/ class=md-nav__link> <span class=md-ellipsis> value </span> </a> </li> <li class=md-nav__item> <a href=../value_t/ class=md-nav__link> <span class=md-ellipsis> value_t </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_2> <div class="md-nav__link md-nav__container"> <a href=../../byte_container_with_subtype/ class="md-nav__link "> <span class=md-ellipsis> byte_container_with_subtype </span> </a> <label class="md-nav__link " for=__nav_4_2 id=__nav_4_2_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_2_label aria-expanded=false> <label class=md-nav__title for=__nav_4_2> <span class="md-nav__icon md-icon"></span> byte_container_with_subtype </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../byte_container_with_subtype/byte_container_with_subtype/ class=md-nav__link> <span class=md-ellipsis> (constructor) </span> </a> </li> <li class=md-nav__item> <a href=../../byte_container_with_subtype/clear_subtype/ class=md-nav__link> <span class=md-ellipsis> clear_subtype </span> </a> </li> <li class=md-nav__item> <a href=../../byte_container_with_subtype/has_subtype/ class=md-nav__link> <span class=md-ellipsis> has_subtype </span> </a> </li> <li class=md-nav__item> <a href=../../byte_container_with_subtype/set_subtype/ class=md-nav__link> <span class=md-ellipsis> set_subtype </span> </a> </li> <li class=md-nav__item> <a href=../../byte_container_with_subtype/subtype/ class=md-nav__link> <span class=md-ellipsis> subtype </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_3> <div class="md-nav__link md-nav__container"> <a href=../../adl_serializer/ class="md-nav__link "> <span class=md-ellipsis> adl_serializer </span> </a> <label class="md-nav__link " for=__nav_4_3 id=__nav_4_3_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_3_label aria-expanded=false> <label class=md-nav__title for=__nav_4_3> <span class="md-nav__icon md-icon"></span> adl_serializer </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../adl_serializer/from_json/ class=md-nav__link> <span class=md-ellipsis> from_json </span> </a> </li> <li class=md-nav__item> <a href=../../adl_serializer/to_json/ class=md-nav__link> <span class=md-ellipsis> to_json </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../json/ class=md-nav__link> <span class=md-ellipsis> json </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_5> <div class="md-nav__link md-nav__container"> <a href=../../json_pointer/ class="md-nav__link "> <span class=md-ellipsis> json_pointer </span> </a> <label class="md-nav__link " for=__nav_4_5 id=__nav_4_5_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_5_label aria-expanded=false> <label class=md-nav__title for=__nav_4_5> <span class="md-nav__icon md-icon"></span> json_pointer </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../json_pointer/json_pointer/ class=md-nav__link> <span class=md-ellipsis> (Constructor) </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/back/ class=md-nav__link> <span class=md-ellipsis> back </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/empty/ class=md-nav__link> <span class=md-ellipsis> empty </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/front/ class=md-nav__link> <span class=md-ellipsis> front </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_string_t/ class=md-nav__link> <span class=md-ellipsis> operator string_t </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_eq/ class=md-nav__link> <span class=md-ellipsis> operator== </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_ne/ class=md-nav__link> <span class=md-ellipsis> operator!= </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_slash/ class=md-nav__link> <span class=md-ellipsis> operator/ </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_slasheq/ class=md-nav__link> <span class=md-ellipsis> operator/= </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/parent_pointer/ class=md-nav__link> <span class=md-ellipsis> parent_pointer </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/pop_back/ class=md-nav__link> <span class=md-ellipsis> pop_back </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/pop_front/ class=md-nav__link> <span class=md-ellipsis> pop_front </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/push_back/ class=md-nav__link> <span class=md-ellipsis> push_back </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/push_front/ class=md-nav__link> <span class=md-ellipsis> push_front </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/string_t/ class=md-nav__link> <span class=md-ellipsis> string_t </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/to_string/ class=md-nav__link> <span class=md-ellipsis> to_string </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_6> <div class="md-nav__link md-nav__container"> <a href=../../json_sax/ class="md-nav__link "> <span class=md-ellipsis> json_sax </span> </a> <label class="md-nav__link " for=__nav_4_6 id=__nav_4_6_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_6_label aria-expanded=false> <label class=md-nav__title for=__nav_4_6> <span class="md-nav__icon md-icon"></span> json_sax </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../json_sax/binary/ class=md-nav__link> <span class=md-ellipsis> binary </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/boolean/ class=md-nav__link> <span class=md-ellipsis> boolean </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/end_array/ class=md-nav__link> <span class=md-ellipsis> end_array </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/end_object/ class=md-nav__link> <span class=md-ellipsis> end_object </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/key/ class=md-nav__link> <span class=md-ellipsis> key </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/null/ class=md-nav__link> <span class=md-ellipsis> null </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/number_float/ class=md-nav__link> <span class=md-ellipsis> number_float </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/number_integer/ class=md-nav__link> <span class=md-ellipsis> number_integer </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/number_unsigned/ class=md-nav__link> <span class=md-ellipsis> number_unsigned </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/parse_error/ class=md-nav__link> <span class=md-ellipsis> parse_error </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/start_array/ class=md-nav__link> <span class=md-ellipsis> start_array </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/start_object/ class=md-nav__link> <span class=md-ellipsis> start_object </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/string/ class=md-nav__link> <span class=md-ellipsis> string </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../operator_ltlt/ class=md-nav__link> <span class=md-ellipsis> operator<<(basic_json), operator<<(json_pointer) </span> </a> </li> <li class=md-nav__item> <a href=../../operator_gtgt/ class=md-nav__link> <span class=md-ellipsis> operator>>(basic_json) </span> </a> </li> <li class=md-nav__item> <a href=../../operator_literal_json/ class=md-nav__link> <span class=md-ellipsis> operator""_json </span> </a> </li> <li class=md-nav__item> <a href=../../operator_literal_json_pointer/ class=md-nav__link> <span class=md-ellipsis> operator""_json_pointer </span> </a> </li> <li class=md-nav__item> <a href=../../ordered_json/ class=md-nav__link> <span class=md-ellipsis> ordered_json </span> </a> </li> <li class=md-nav__item> <a href=../../ordered_map/ class=md-nav__link> <span class=md-ellipsis> ordered_map </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_13> <div class="md-nav__link md-nav__container"> <a href=../../macros/ class="md-nav__link "> <span class=md-ellipsis> macros </span> </a> <label class="md-nav__link " for=__nav_4_13 id=__nav_4_13_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_13_label aria-expanded=false> <label class=md-nav__title for=__nav_4_13> <span class="md-nav__icon md-icon"></span> macros </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../macros/json_assert/ class=md-nav__link> <span class=md-ellipsis> JSON_ASSERT </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_brace_init_copy_semantics/ class=md-nav__link> <span class=md-ellipsis> JSON_BRACE_INIT_COPY_SEMANTICS </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_throw_user/ class=md-nav__link> <span class=md-ellipsis> JSON_CATCH_USER, JSON_THROW_USER, JSON_TRY_USER </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_diagnostics/ class=md-nav__link> <span class=md-ellipsis> JSON_DIAGNOSTICS </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_diagnostic_positions/ class=md-nav__link> <span class=md-ellipsis> JSON_DIAGNOSTIC_POSITIONS </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_disable_enum_serialization/ class=md-nav__link> <span class=md-ellipsis> JSON_DISABLE_ENUM_SERIALIZATION </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_has_cpp_11/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_CPP_11, JSON_HAS_CPP_14, JSON_HAS_CPP_17, JSON_HAS_CPP_20 </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_has_filesystem/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_EXPERIMENTAL_FILESYSTEM, JSON_HAS_FILESYSTEM </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_has_ranges/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_RANGES </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_has_static_rtti/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_STATIC_RTTI </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_has_three_way_comparison/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_THREE_WAY_COMPARISON </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_noexception/ class=md-nav__link> <span class=md-ellipsis> JSON_NOEXCEPTION </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_no_io/ class=md-nav__link> <span class=md-ellipsis> JSON_NO_IO </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_skip_library_version_check/ class=md-nav__link> <span class=md-ellipsis> JSON_SKIP_LIBRARY_VERSION_CHECK </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_skip_unsupported_compiler_check/ class=md-nav__link> <span class=md-ellipsis> JSON_SKIP_UNSUPPORTED_COMPILER_CHECK </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_use_global_udls/ class=md-nav__link> <span class=md-ellipsis> JSON_USE_GLOBAL_UDLS </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_use_implicit_conversions/ class=md-nav__link> <span class=md-ellipsis> JSON_USE_IMPLICIT_CONVERSIONS </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_use_legacy_discarded_value_comparison/ class=md-nav__link> <span class=md-ellipsis> JSON_USE_LEGACY_DISCARDED_VALUE_COMPARISON </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_define_derived_type/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_ONLY_SERIALIZE, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_define_type_intrusive/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_TYPE_INTRUSIVE, NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_TYPE_INTRUSIVE_ONLY_SERIALIZE </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_define_type_non_intrusive/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_define_type_with_names/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_TYPE_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_namespace/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_NAMESPACE </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_namespace_begin/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_NAMESPACE_BEGIN, NLOHMANN_JSON_NAMESPACE_END </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_namespace_no_version/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_NAMESPACE_NO_VERSION </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_serialize_enum/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_SERIALIZE_ENUM </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_serialize_enum_strict/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_SERIALIZE_ENUM_STRICT </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_version_major/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_VERSION_MAJOR, NLOHMANN_JSON_VERSION_MINOR, NLOHMANN_JSON_VERSION_PATCH </span> </a> </li> </ul> </nav> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_5> <div class="md-nav__link md-nav__container"> <a href=../../../community/ class="md-nav__link "> <span class=md-ellipsis> Community </span> </a> <label class="md-nav__link " for=__nav_5 id=__nav_5_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_5_label aria-expanded=false> <label class=md-nav__title for=__nav_5> <span class="md-nav__icon md-icon"></span> Community </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../community/code_of_conduct/ class=md-nav__link> <span class=md-ellipsis> Code of Conduct </span> </a> </li> <li class=md-nav__item> <a href=../../../community/contribution_guidelines/ class=md-nav__link> <span class=md-ellipsis> Contribution Guidelines </span> </a> </li> <li class=md-nav__item> <a href=../../../community/quality_assurance/ class=md-nav__link> <span class=md-ellipsis> Quality assurance </span> </a> </li> <li class=md-nav__item> <a href=../../../community/governance/ class=md-nav__link> <span class=md-ellipsis> Governance </span> </a> </li> <li class=md-nav__item> <a href=../../../community/security_policy/ class=md-nav__link> <span class=md-ellipsis> Security Policy </span> </a> </li> </ul> </nav> </li> </ul> </nav> </div> </div> </div> <div class="md-sidebar md-sidebar--secondary" data-md-component=sidebar data-md-type=toc> <div class=md-sidebar__scrollwrap> <div class=md-sidebar__inner> <nav class="md-nav md-nav--secondary" aria-label="Table of contents"> <label class=md-nav__title for=__toc> <span class="md-nav__icon md-icon"></span> Table of contents </label> <ul class=md-nav__list data-md-component=toc data-md-scrollfix> <li class=md-nav__item> <a href=#template-parameters class=md-nav__link> <span class=md-ellipsis> Template parameters </span> </a> </li> <li class=md-nav__item> <a href=#iterator-invalidation class=md-nav__link> <span class=md-ellipsis> Iterator invalidation </span> </a> </li> <li class=md-nav__item> <a href=#parameters class=md-nav__link> <span class=md-ellipsis> Parameters </span> </a> </li> <li class=md-nav__item> <a href=#return-value class=md-nav__link> <span class=md-ellipsis> Return value </span> </a> </li> <li class=md-nav__item> <a href=#exceptions class=md-nav__link> <span class=md-ellipsis> Exceptions </span> </a> </li> <li class=md-nav__item> <a href=#complexity class=md-nav__link> <span class=md-ellipsis> Complexity </span> </a> </li> <li class=md-nav__item> <a href=#examples class=md-nav__link> <span class=md-ellipsis> Examples </span> </a> </li> <li class=md-nav__item> <a href=#version-history class=md-nav__link> <span class=md-ellipsis> Version history </span> </a> </li> </ul> </nav> </div> </div> </div> <div class=md-content data-md-component=content> <article class="md-content__inner md-typeset"> <a href="https://github.com/nlohmann/json/edit/develop/docs/mkdocs/docs/api/basic_json/emplace.md" title="Edit this page" class="md-content__button md-icon" rel="edit"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M10 20H6V4h7v5h5v3.1l2-2V8l-6-6H6c-1.1 0-2 .9-2 2v16c0 1.1.9 2 2 2h4zm10.2-7c.1 0 .3.1.4.2l1.3 1.3c.2.2.2.6 0 .8l-1 1-2.1-2.1 1-1c.1-.1.2-.2.4-.2m0 3.9L14.1 23H12v-2.1l6.1-6.1z"/></svg> </a> <a href="https://github.com/nlohmann/json/raw/develop/docs/mkdocs/docs/api/basic_json/emplace.md" title="View source of this page" class="md-content__button md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M17 18c.56 0 1 .44 1 1s-.44 1-1 1-1-.44-1-1 .44-1 1-1m0-3c-2.73 0-5.06 1.66-6 4 .94 2.34 3.27 4 6 4s5.06-1.66 6-4c-.94-2.34-3.27-4-6-4m0 6.5a2.5 2.5 0 0 1-2.5-2.5 2.5 2.5 0 0 1 2.5-2.5 2.5 2.5 0 0 1 2.5 2.5 2.5 2.5 0 0 1-2.5 2.5M9.27 20H6V4h7v5h5v4.07c.7.08 1.36.25 2 .49V8l-6-6H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h4.5a8.2 8.2 0 0 1-1.23-2"/></svg> </a> <h1 id=nlohmannbasic_jsonemplace><small>nlohmann::basic_json::</small>emplace<a class=headerlink href=#nlohmannbasic_jsonemplace title="Permanent link">&para;</a></h1> <div class=highlight><pre><span></span><code><span class=k>template</span><span class=o>&lt;</span><span class=k>class</span><span class=p>...</span><span class=w> </span><span class=n>Args</span><span class=o>&gt;</span>
+<!doctype html><html lang=en class=no-js> <head><meta charset=utf-8><meta name=viewport content="width=device-width,initial-scale=1"><meta name=author content="Niels Lohmann"><link href="https://json.nlohmann.me/api/basic_json/emplace/" rel="canonical"><link href=../dump/ rel=prev><link href=../emplace_back/ rel=next><link rel=icon href=../../../assets/images/favicon.png><meta name=generator content="mkdocs-1.6.1, mkdocs-material-9.7.6"><title>emplace - JSON for Modern C++</title><link rel=stylesheet href=../../../assets/stylesheets/main.484c7ddc.min.css><link rel=stylesheet href=../../../assets/stylesheets/palette.ab4e12ef.min.css><link rel="stylesheet" href="../../../assets/external/fonts.googleapis.com/css.61a430c9.css"><style>:root{--md-text-font:"Roboto";--md-code-font:"JetBrains Mono"}</style><link rel=stylesheet href=../../../css/custom.css><script>__md_scope=new URL("../../..",location),__md_hash=e=>[...e].reduce(((e,_)=>(e<<5)-e+_.charCodeAt(0)),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script></head> <body dir=ltr data-md-color-scheme=default data-md-color-primary=indigo data-md-color-accent=indigo> <input class=md-toggle data-md-toggle=drawer type=checkbox id=__drawer autocomplete=off> <input class=md-toggle data-md-toggle=search type=checkbox id=__search autocomplete=off> <label class=md-overlay for=__drawer></label> <div data-md-component=skip> <a href=#nlohmannbasic_jsonemplace class=md-skip> Skip to content </a> </div> <div data-md-component=announce> </div> <header class=md-header data-md-component=header> <nav class="md-header__inner md-grid" aria-label=Header> <a href=../../.. title="JSON for Modern C++" class="md-header__button md-logo" aria-label="JSON for Modern C++" data-md-component=logo> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54"/></svg> </a> <label class="md-header__button md-icon" for=__drawer> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M3 6h18v2H3zm0 5h18v2H3zm0 5h18v2H3z"/></svg> </label> <div class=md-header__title data-md-component=header-title> <div class=md-header__ellipsis> <div class=md-header__topic> <span class=md-ellipsis> JSON for Modern C++ </span> </div> <div class=md-header__topic data-md-component=header-topic> <span class=md-ellipsis> emplace </span> </div> </div> </div> <form class=md-header__option data-md-component=palette> <input class=md-option data-md-color-media="(prefers-color-scheme: light)" data-md-color-scheme=default data-md-color-primary=indigo data-md-color-accent=indigo aria-label="Switch to dark mode" type=radio name=__palette id=__palette_0> <label class="md-header__button md-icon" title="Switch to dark mode" for=__palette_1 hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a4 4 0 0 0-4 4 4 4 0 0 0 4 4 4 4 0 0 0 4-4 4 4 0 0 0-4-4m0 10a6 6 0 0 1-6-6 6 6 0 0 1 6-6 6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12z"/></svg> </label> <input class=md-option data-md-color-media="(prefers-color-scheme: dark)" data-md-color-scheme=slate data-md-color-primary=indigo data-md-color-accent=indigo aria-label="Switch to light mode" type=radio name=__palette id=__palette_1> <label class="md-header__button md-icon" title="Switch to light mode" for=__palette_0 hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 18c-.89 0-1.74-.2-2.5-.55C11.56 16.5 13 14.42 13 12s-1.44-4.5-3.5-5.45C10.26 6.2 11.11 6 12 6a6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12z"/></svg> </label> </form> <script>var palette=__md_get("__palette");if(palette&&palette.color){if("(prefers-color-scheme)"===palette.color.media){var media=matchMedia("(prefers-color-scheme: light)"),input=document.querySelector(media.matches?"[data-md-color-media='(prefers-color-scheme: light)']":"[data-md-color-media='(prefers-color-scheme: dark)']");palette.color.media=input.getAttribute("data-md-color-media"),palette.color.scheme=input.getAttribute("data-md-color-scheme"),palette.color.primary=input.getAttribute("data-md-color-primary"),palette.color.accent=input.getAttribute("data-md-color-accent")}for(var[key,value]of Object.entries(palette.color))document.body.setAttribute("data-md-color-"+key,value)}</script> <label class="md-header__button md-icon" for=__search> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg> </label> <div class=md-search data-md-component=search role=dialog> <label class=md-search__overlay for=__search></label> <div class=md-search__inner role=search> <form class=md-search__form name=search> <input type=text class=md-search__input name=query aria-label=Search placeholder=Search autocapitalize=off autocorrect=off autocomplete=off spellcheck=false data-md-component=search-query required> <label class="md-search__icon md-icon" for=__search> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11z"/></svg> </label> <nav class=md-search__options aria-label=Search> <button type=reset class="md-search__icon md-icon" title=Clear aria-label=Clear tabindex=-1> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z"/></svg> </button> </nav> </form> <div class=md-search__output> <div class=md-search__scrollwrap tabindex=0 data-md-scrollfix> <div class=md-search-result data-md-component=search-result> <div class=md-search-result__meta> Initializing search </div> <ol class=md-search-result__list role=presentation></ol> </div> </div> </div> </div> </div> <div class=md-header__source> <a href="https://github.com/nlohmann/json" title="Go to repository" class="md-source" data-md-component="source"> <div class="md-source__icon md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </div> <div class=md-source__repository> nlohmann/json </div> </a> </div> </nav> </header> <div class=md-container data-md-component=container> <nav class=md-tabs aria-label=Tabs data-md-component=tabs> <div class=md-grid> <ul class=md-tabs__list> <li class=md-tabs__item> <a href=../../.. class=md-tabs__link> Home </a> </li> <li class=md-tabs__item> <a href=../../../features/arbitrary_types/ class=md-tabs__link> Features </a> </li> <li class=md-tabs__item> <a href=../../../integration/ class=md-tabs__link> Integration </a> </li> <li class="md-tabs__item md-tabs__item--active"> <a href=../ class=md-tabs__link> API Documentation </a> </li> <li class=md-tabs__item> <a href=../../../community/ class=md-tabs__link> Community </a> </li> </ul> </div> </nav> <main class=md-main data-md-component=main> <div class="md-main__inner md-grid"> <div class="md-sidebar md-sidebar--primary" data-md-component=sidebar data-md-type=navigation> <div class=md-sidebar__scrollwrap> <div class=md-sidebar__inner> <nav class="md-nav md-nav--primary md-nav--lifted" aria-label=Navigation data-md-level=0> <label class=md-nav__title for=__drawer> <a href=../../.. title="JSON for Modern C++" class="md-nav__button md-logo" aria-label="JSON for Modern C++" data-md-component=logo> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54"/></svg> </a> JSON for Modern C++ </label> <div class=md-nav__source> <a href="https://github.com/nlohmann/json" title="Go to repository" class="md-source" data-md-component="source"> <div class="md-source__icon md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </div> <div class=md-source__repository> nlohmann/json </div> </a> </div> <ul class=md-nav__list data-md-scrollfix> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_1> <div class="md-nav__link md-nav__container"> <a href=../../.. class="md-nav__link "> <span class=md-ellipsis> Home </span> </a> <label class="md-nav__link " for=__nav_1 id=__nav_1_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_1_label aria-expanded=false> <label class=md-nav__title for=__nav_1> <span class="md-nav__icon md-icon"></span> Home </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../home/license/ class=md-nav__link> <span class=md-ellipsis> License </span> </a> </li> <li class=md-nav__item> <a href=../../../home/faq/ class=md-nav__link> <span class=md-ellipsis> FAQ </span> </a> </li> <li class=md-nav__item> <a href=../../../home/exceptions/ class=md-nav__link> <span class=md-ellipsis> Exceptions </span> </a> </li> <li class=md-nav__item> <a href=../../../home/releases/ class=md-nav__link> <span class=md-ellipsis> Releases </span> </a> </li> <li class=md-nav__item> <a href=../../../home/design_goals/ class=md-nav__link> <span class=md-ellipsis> Design goals </span> </a> </li> <li class=md-nav__item> <a href=../../../home/architecture/ class=md-nav__link> <span class=md-ellipsis> Architecture </span> </a> </li> <li class=md-nav__item> <a href=../../../home/customers/ class=md-nav__link> <span class=md-ellipsis> Customers </span> </a> </li> <li class=md-nav__item> <a href=../../../home/sponsors/ class=md-nav__link> <span class=md-ellipsis> Sponsors </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2> <label class=md-nav__link for=__nav_2 id=__nav_2_label tabindex=0> <span class=md-ellipsis> Features </span> <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_2_label aria-expanded=false> <label class=md-nav__title for=__nav_2> <span class="md-nav__icon md-icon"></span> Features </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/arbitrary_types/ class=md-nav__link> <span class=md-ellipsis> Arbitrary Type Conversions </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_2> <div class="md-nav__link md-nav__container"> <a href=../../../features/binary_formats/ class="md-nav__link "> <span class=md-ellipsis> Binary Formats </span> </a> <label class="md-nav__link " for=__nav_2_2 id=__nav_2_2_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_2_label aria-expanded=false> <label class=md-nav__title for=__nav_2_2> <span class="md-nav__icon md-icon"></span> Binary Formats </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/binary_formats/bjdata/ class=md-nav__link> <span class=md-ellipsis> BJData </span> </a> </li> <li class=md-nav__item> <a href=../../../features/binary_formats/bson/ class=md-nav__link> <span class=md-ellipsis> BSON </span> </a> </li> <li class=md-nav__item> <a href=../../../features/binary_formats/cbor/ class=md-nav__link> <span class=md-ellipsis> CBOR </span> </a> </li> <li class=md-nav__item> <a href=../../../features/binary_formats/messagepack/ class=md-nav__link> <span class=md-ellipsis> MessagePack </span> </a> </li> <li class=md-nav__item> <a href=../../../features/binary_formats/ubjson/ class=md-nav__link> <span class=md-ellipsis> UBJSON </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../../features/binary_values/ class=md-nav__link> <span class=md-ellipsis> Binary Values </span> </a> </li> <li class=md-nav__item> <a href=../../../features/comments/ class=md-nav__link> <span class=md-ellipsis> Comments </span> </a> </li> <li class=md-nav__item> <a href=../../../features/trailing_commas/ class=md-nav__link> <span class=md-ellipsis> Trailing Commas </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_6> <div class="md-nav__link md-nav__container"> <a href=../../../features/element_access/ class="md-nav__link "> <span class=md-ellipsis> Element Access </span> </a> <label class="md-nav__link " for=__nav_2_6 id=__nav_2_6_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_6_label aria-expanded=false> <label class=md-nav__title for=__nav_2_6> <span class="md-nav__icon md-icon"></span> Element Access </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/element_access/unchecked_access/ class=md-nav__link> <span class=md-ellipsis> Unchecked access: operator[] </span> </a> </li> <li class=md-nav__item> <a href=../../../features/element_access/checked_access/ class=md-nav__link> <span class=md-ellipsis> Checked access: at </span> </a> </li> <li class=md-nav__item> <a href=../../../features/element_access/default_value/ class=md-nav__link> <span class=md-ellipsis> Access with default value: value </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../../features/iterators/ class=md-nav__link> <span class=md-ellipsis> Iterators </span> </a> </li> <li class=md-nav__item> <a href=../../../features/json_pointer/ class=md-nav__link> <span class=md-ellipsis> JSON Pointer </span> </a> </li> <li class=md-nav__item> <a href=../../../features/json_patch/ class=md-nav__link> <span class=md-ellipsis> JSON Patch and Diff </span> </a> </li> <li class=md-nav__item> <a href=../../../features/merge_patch/ class=md-nav__link> <span class=md-ellipsis> JSON Merge Patch </span> </a> </li> <li class=md-nav__item> <a href=../../../features/modules/ class=md-nav__link> <span class=md-ellipsis> Modules </span> </a> </li> <li class=md-nav__item> <a href=../../../features/namespace/ class=md-nav__link> <span class=md-ellipsis> nlohmann Namespace </span> </a> </li> <li class=md-nav__item> <a href=../../../features/object_order/ class=md-nav__link> <span class=md-ellipsis> Object Order </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_14> <div class="md-nav__link md-nav__container"> <a href=../../../features/parsing/ class="md-nav__link "> <span class=md-ellipsis> Parsing </span> </a> <label class="md-nav__link " for=__nav_2_14 id=__nav_2_14_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_14_label aria-expanded=false> <label class=md-nav__title for=__nav_2_14> <span class="md-nav__icon md-icon"></span> Parsing </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/parsing/json_lines/ class=md-nav__link> <span class=md-ellipsis> JSON Lines </span> </a> </li> <li class=md-nav__item> <a href=../../../features/parsing/parse_exceptions/ class=md-nav__link> <span class=md-ellipsis> Parsing and Exceptions </span> </a> </li> <li class=md-nav__item> <a href=../../../features/parsing/parser_callbacks/ class=md-nav__link> <span class=md-ellipsis> Parser Callbacks </span> </a> </li> <li class=md-nav__item> <a href=../../../features/parsing/sax_interface/ class=md-nav__link> <span class=md-ellipsis> SAX Interface </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../../features/assertions/ class=md-nav__link> <span class=md-ellipsis> Runtime Assertions </span> </a> </li> <li class=md-nav__item> <a href=../../../features/enum_conversion/ class=md-nav__link> <span class=md-ellipsis> Specializing enum conversion </span> </a> </li> <li class=md-nav__item> <a href=../../../features/macros/ class=md-nav__link> <span class=md-ellipsis> Supported Macros </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_18> <div class="md-nav__link md-nav__container"> <a href=../../../features/types/ class="md-nav__link "> <span class=md-ellipsis> Types </span> </a> <label class="md-nav__link " for=__nav_2_18 id=__nav_2_18_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_18_label aria-expanded=false> <label class=md-nav__title for=__nav_2_18> <span class="md-nav__icon md-icon"></span> Types </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/types/number_handling/ class=md-nav__link> <span class=md-ellipsis> Number Handling </span> </a> </li> </ul> </nav> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_3> <div class="md-nav__link md-nav__container"> <a href=../../../integration/ class="md-nav__link "> <span class=md-ellipsis> Integration </span> </a> <label class="md-nav__link " for=__nav_3 id=__nav_3_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_3_label aria-expanded=false> <label class=md-nav__title for=__nav_3> <span class="md-nav__icon md-icon"></span> Integration </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../integration/migration_guide/ class=md-nav__link> <span class=md-ellipsis> Migration Guide </span> </a> </li> <li class=md-nav__item> <a href=../../../integration/cmake/ class=md-nav__link> <span class=md-ellipsis> CMake </span> </a> </li> <li class=md-nav__item> <a href=../../../integration/package_managers/ class=md-nav__link> <span class=md-ellipsis> Package Managers </span> </a> </li> <li class=md-nav__item> <a href=../../../integration/pkg-config/ class=md-nav__link> <span class=md-ellipsis> Pkg-config </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--active md-nav__item--section md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4 checked> <label class=md-nav__link for=__nav_4 id=__nav_4_label tabindex> <span class=md-ellipsis> API Documentation </span> <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_4_label aria-expanded=true> <label class=md-nav__title for=__nav_4> <span class="md-nav__icon md-icon"></span> API Documentation </label> <ul class=md-nav__list data-md-scrollfix> <li class="md-nav__item md-nav__item--active md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_1 checked> <div class="md-nav__link md-nav__container"> <a href=../ class="md-nav__link "> <span class=md-ellipsis> basic_json </span> </a> <label class="md-nav__link " for=__nav_4_1 id=__nav_4_1_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_1_label aria-expanded=true> <label class=md-nav__title for=__nav_4_1> <span class="md-nav__icon md-icon"></span> basic_json </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../basic_json/ class=md-nav__link> <span class=md-ellipsis> (Constructor) </span> </a> </li> <li class=md-nav__item> <a href=../~basic_json/ class=md-nav__link> <span class=md-ellipsis> (Destructor) </span> </a> </li> <li class=md-nav__item> <a href=../accept/ class=md-nav__link> <span class=md-ellipsis> accept </span> </a> </li> <li class=md-nav__item> <a href=../array/ class=md-nav__link> <span class=md-ellipsis> array </span> </a> </li> <li class=md-nav__item> <a href=../array_t/ class=md-nav__link> <span class=md-ellipsis> array_t </span> </a> </li> <li class=md-nav__item> <a href=../at/ class=md-nav__link> <span class=md-ellipsis> at </span> </a> </li> <li class=md-nav__item> <a href=../back/ class=md-nav__link> <span class=md-ellipsis> back </span> </a> </li> <li class=md-nav__item> <a href=../begin/ class=md-nav__link> <span class=md-ellipsis> begin </span> </a> </li> <li class=md-nav__item> <a href=../binary/ class=md-nav__link> <span class=md-ellipsis> binary </span> </a> </li> <li class=md-nav__item> <a href=../binary_t/ class=md-nav__link> <span class=md-ellipsis> binary_t </span> </a> </li> <li class=md-nav__item> <a href=../boolean_t/ class=md-nav__link> <span class=md-ellipsis> boolean_t </span> </a> </li> <li class=md-nav__item> <a href=../cbegin/ class=md-nav__link> <span class=md-ellipsis> cbegin </span> </a> </li> <li class=md-nav__item> <a href=../cbor_tag_handler_t/ class=md-nav__link> <span class=md-ellipsis> cbor_tag_handler_t </span> </a> </li> <li class=md-nav__item> <a href=../cend/ class=md-nav__link> <span class=md-ellipsis> cend </span> </a> </li> <li class=md-nav__item> <a href=../clear/ class=md-nav__link> <span class=md-ellipsis> clear </span> </a> </li> <li class=md-nav__item> <a href=../contains/ class=md-nav__link> <span class=md-ellipsis> contains </span> </a> </li> <li class=md-nav__item> <a href=../count/ class=md-nav__link> <span class=md-ellipsis> count </span> </a> </li> <li class=md-nav__item> <a href=../crbegin/ class=md-nav__link> <span class=md-ellipsis> crbegin </span> </a> </li> <li class=md-nav__item> <a href=../crend/ class=md-nav__link> <span class=md-ellipsis> crend </span> </a> </li> <li class=md-nav__item> <a href=../default_object_comparator_t/ class=md-nav__link> <span class=md-ellipsis> default_object_comparator_t </span> </a> </li> <li class=md-nav__item> <a href=../diff/ class=md-nav__link> <span class=md-ellipsis> diff </span> </a> </li> <li class=md-nav__item> <a href=../dump/ class=md-nav__link> <span class=md-ellipsis> dump </span> </a> </li> <li class="md-nav__item md-nav__item--active"> <input class="md-nav__toggle md-toggle" type=checkbox id=__toc> <label class="md-nav__link md-nav__link--active" for=__toc> <span class=md-ellipsis> emplace </span> <span class="md-nav__icon md-icon"></span> </label> <a href=./ class="md-nav__link md-nav__link--active"> <span class=md-ellipsis> emplace </span> </a> <nav class="md-nav md-nav--secondary" aria-label="Table of contents"> <label class=md-nav__title for=__toc> <span class="md-nav__icon md-icon"></span> Table of contents </label> <ul class=md-nav__list data-md-component=toc data-md-scrollfix> <li class=md-nav__item> <a href=#template-parameters class=md-nav__link> <span class=md-ellipsis> Template parameters </span> </a> </li> <li class=md-nav__item> <a href=#iterator-invalidation class=md-nav__link> <span class=md-ellipsis> Iterator invalidation </span> </a> </li> <li class=md-nav__item> <a href=#parameters class=md-nav__link> <span class=md-ellipsis> Parameters </span> </a> </li> <li class=md-nav__item> <a href=#return-value class=md-nav__link> <span class=md-ellipsis> Return value </span> </a> </li> <li class=md-nav__item> <a href=#exception-safety class=md-nav__link> <span class=md-ellipsis> Exception safety </span> </a> </li> <li class=md-nav__item> <a href=#exceptions class=md-nav__link> <span class=md-ellipsis> Exceptions </span> </a> </li> <li class=md-nav__item> <a href=#complexity class=md-nav__link> <span class=md-ellipsis> Complexity </span> </a> </li> <li class=md-nav__item> <a href=#examples class=md-nav__link> <span class=md-ellipsis> Examples </span> </a> </li> <li class=md-nav__item> <a href=#see-also class=md-nav__link> <span class=md-ellipsis> See also </span> </a> </li> <li class=md-nav__item> <a href=#version-history class=md-nav__link> <span class=md-ellipsis> Version history </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../emplace_back/ class=md-nav__link> <span class=md-ellipsis> emplace_back </span> </a> </li> <li class=md-nav__item> <a href=../empty/ class=md-nav__link> <span class=md-ellipsis> empty </span> </a> </li> <li class=md-nav__item> <a href=../end/ class=md-nav__link> <span class=md-ellipsis> end </span> </a> </li> <li class=md-nav__item> <a href=../end_pos/ class=md-nav__link> <span class=md-ellipsis> end_pos </span> </a> </li> <li class=md-nav__item> <a href=../erase/ class=md-nav__link> <span class=md-ellipsis> erase </span> </a> </li> <li class=md-nav__item> <a href=../error_handler_t/ class=md-nav__link> <span class=md-ellipsis> error_handler_t </span> </a> </li> <li class=md-nav__item> <a href=../exception/ class=md-nav__link> <span class=md-ellipsis> exception </span> </a> </li> <li class=md-nav__item> <a href=../find/ class=md-nav__link> <span class=md-ellipsis> find </span> </a> </li> <li class=md-nav__item> <a href=../flatten/ class=md-nav__link> <span class=md-ellipsis> flatten </span> </a> </li> <li class=md-nav__item> <a href=../from_bjdata/ class=md-nav__link> <span class=md-ellipsis> from_bjdata </span> </a> </li> <li class=md-nav__item> <a href=../from_bson/ class=md-nav__link> <span class=md-ellipsis> from_bson </span> </a> </li> <li class=md-nav__item> <a href=../from_cbor/ class=md-nav__link> <span class=md-ellipsis> from_cbor </span> </a> </li> <li class=md-nav__item> <a href=../from_msgpack/ class=md-nav__link> <span class=md-ellipsis> from_msgpack </span> </a> </li> <li class=md-nav__item> <a href=../from_ubjson/ class=md-nav__link> <span class=md-ellipsis> from_ubjson </span> </a> </li> <li class=md-nav__item> <a href=../front/ class=md-nav__link> <span class=md-ellipsis> front </span> </a> </li> <li class=md-nav__item> <a href=../get/ class=md-nav__link> <span class=md-ellipsis> get </span> </a> </li> <li class=md-nav__item> <a href=../get_allocator/ class=md-nav__link> <span class=md-ellipsis> get_allocator </span> </a> </li> <li class=md-nav__item> <a href=../get_binary/ class=md-nav__link> <span class=md-ellipsis> get_binary </span> </a> </li> <li class=md-nav__item> <a href=../get_ptr/ class=md-nav__link> <span class=md-ellipsis> get_ptr </span> </a> </li> <li class=md-nav__item> <a href=../get_ref/ class=md-nav__link> <span class=md-ellipsis> get_ref </span> </a> </li> <li class=md-nav__item> <a href=../get_to/ class=md-nav__link> <span class=md-ellipsis> get_to </span> </a> </li> <li class=md-nav__item> <a href=../std_hash/ class=md-nav__link> <span class=md-ellipsis> std::hash&lt;basic_json&gt; </span> </a> </li> <li class=md-nav__item> <a href=../input_format_t/ class=md-nav__link> <span class=md-ellipsis> input_format_t </span> </a> </li> <li class=md-nav__item> <a href=../insert/ class=md-nav__link> <span class=md-ellipsis> insert </span> </a> </li> <li class=md-nav__item> <a href=../invalid_iterator/ class=md-nav__link> <span class=md-ellipsis> invalid_iterator </span> </a> </li> <li class=md-nav__item> <a href=../is_array/ class=md-nav__link> <span class=md-ellipsis> is_array </span> </a> </li> <li class=md-nav__item> <a href=../is_binary/ class=md-nav__link> <span class=md-ellipsis> is_binary </span> </a> </li> <li class=md-nav__item> <a href=../is_boolean/ class=md-nav__link> <span class=md-ellipsis> is_boolean </span> </a> </li> <li class=md-nav__item> <a href=../is_discarded/ class=md-nav__link> <span class=md-ellipsis> is_discarded </span> </a> </li> <li class=md-nav__item> <a href=../is_null/ class=md-nav__link> <span class=md-ellipsis> is_null </span> </a> </li> <li class=md-nav__item> <a href=../is_number/ class=md-nav__link> <span class=md-ellipsis> is_number </span> </a> </li> <li class=md-nav__item> <a href=../is_number_float/ class=md-nav__link> <span class=md-ellipsis> is_number_float </span> </a> </li> <li class=md-nav__item> <a href=../is_number_integer/ class=md-nav__link> <span class=md-ellipsis> is_number_integer </span> </a> </li> <li class=md-nav__item> <a href=../is_number_unsigned/ class=md-nav__link> <span class=md-ellipsis> is_number_unsigned </span> </a> </li> <li class=md-nav__item> <a href=../is_object/ class=md-nav__link> <span class=md-ellipsis> is_object </span> </a> </li> <li class=md-nav__item> <a href=../is_primitive/ class=md-nav__link> <span class=md-ellipsis> is_primitive </span> </a> </li> <li class=md-nav__item> <a href=../is_string/ class=md-nav__link> <span class=md-ellipsis> is_string </span> </a> </li> <li class=md-nav__item> <a href=../is_structured/ class=md-nav__link> <span class=md-ellipsis> is_structured </span> </a> </li> <li class=md-nav__item> <a href=../items/ class=md-nav__link> <span class=md-ellipsis> items </span> </a> </li> <li class=md-nav__item> <a href=../json_base_class_t/ class=md-nav__link> <span class=md-ellipsis> json_base_class_t </span> </a> </li> <li class=md-nav__item> <a href=../json_serializer/ class=md-nav__link> <span class=md-ellipsis> json_serializer </span> </a> </li> <li class=md-nav__item> <a href=../max_size/ class=md-nav__link> <span class=md-ellipsis> max_size </span> </a> </li> <li class=md-nav__item> <a href=../meta/ class=md-nav__link> <span class=md-ellipsis> meta </span> </a> </li> <li class=md-nav__item> <a href=../merge_patch/ class=md-nav__link> <span class=md-ellipsis> merge_patch </span> </a> </li> <li class=md-nav__item> <a href=../number_float_t/ class=md-nav__link> <span class=md-ellipsis> number_float_t </span> </a> </li> <li class=md-nav__item> <a href=../number_integer_t/ class=md-nav__link> <span class=md-ellipsis> number_integer_t </span> </a> </li> <li class=md-nav__item> <a href=../number_unsigned_t/ class=md-nav__link> <span class=md-ellipsis> number_unsigned_t </span> </a> </li> <li class=md-nav__item> <a href=../object/ class=md-nav__link> <span class=md-ellipsis> object </span> </a> </li> <li class=md-nav__item> <a href=../object_comparator_t/ class=md-nav__link> <span class=md-ellipsis> object_comparator_t </span> </a> </li> <li class=md-nav__item> <a href=../object_t/ class=md-nav__link> <span class=md-ellipsis> object_t </span> </a> </li> <li class=md-nav__item> <a href=../operator_ValueType/ class=md-nav__link> <span class=md-ellipsis> operator ValueType </span> </a> </li> <li class=md-nav__item> <a href=../operator_value_t/ class=md-nav__link> <span class=md-ellipsis> operator value_t </span> </a> </li> <li class=md-nav__item> <a href=../operator%5B%5D/ class=md-nav__link> <span class=md-ellipsis> operator[] </span> </a> </li> <li class=md-nav__item> <a href=../operator%3D/ class=md-nav__link> <span class=md-ellipsis> operator= </span> </a> </li> <li class=md-nav__item> <a href=../operator%2B%3D/ class=md-nav__link> <span class=md-ellipsis> operator+= </span> </a> </li> <li class=md-nav__item> <a href=../operator_eq/ class=md-nav__link> <span class=md-ellipsis> operator== </span> </a> </li> <li class=md-nav__item> <a href=../operator_ne/ class=md-nav__link> <span class=md-ellipsis> operator!= </span> </a> </li> <li class=md-nav__item> <a href=../operator_lt/ class=md-nav__link> <span class=md-ellipsis> operator< </span> </a> </li> <li class=md-nav__item> <a href=../operator_gt/ class=md-nav__link> <span class=md-ellipsis> operator> </span> </a> </li> <li class=md-nav__item> <a href=../operator_le/ class=md-nav__link> <span class=md-ellipsis> operator<= </span> </a> </li> <li class=md-nav__item> <a href=../operator_ge/ class=md-nav__link> <span class=md-ellipsis> operator>= </span> </a> </li> <li class=md-nav__item> <a href=../operator_spaceship/ class=md-nav__link> <span class=md-ellipsis> operator<=> </span> </a> </li> <li class=md-nav__item> <a href=../out_of_range/ class=md-nav__link> <span class=md-ellipsis> out_of_range </span> </a> </li> <li class=md-nav__item> <a href=../other_error/ class=md-nav__link> <span class=md-ellipsis> other_error </span> </a> </li> <li class=md-nav__item> <a href=../parse/ class=md-nav__link> <span class=md-ellipsis> parse </span> </a> </li> <li class=md-nav__item> <a href=../parse_error/ class=md-nav__link> <span class=md-ellipsis> parse_error </span> </a> </li> <li class=md-nav__item> <a href=../parse_event_t/ class=md-nav__link> <span class=md-ellipsis> parse_event_t </span> </a> </li> <li class=md-nav__item> <a href=../parser_callback_t/ class=md-nav__link> <span class=md-ellipsis> parser_callback_t </span> </a> </li> <li class=md-nav__item> <a href=../patch/ class=md-nav__link> <span class=md-ellipsis> patch </span> </a> </li> <li class=md-nav__item> <a href=../patch_inplace/ class=md-nav__link> <span class=md-ellipsis> patch_inplace </span> </a> </li> <li class=md-nav__item> <a href=../push_back/ class=md-nav__link> <span class=md-ellipsis> push_back </span> </a> </li> <li class=md-nav__item> <a href=../rbegin/ class=md-nav__link> <span class=md-ellipsis> rbegin </span> </a> </li> <li class=md-nav__item> <a href=../rend/ class=md-nav__link> <span class=md-ellipsis> rend </span> </a> </li> <li class=md-nav__item> <a href=../sax_parse/ class=md-nav__link> <span class=md-ellipsis> sax_parse </span> </a> </li> <li class=md-nav__item> <a href=../size/ class=md-nav__link> <span class=md-ellipsis> size </span> </a> </li> <li class=md-nav__item> <a href=../start_pos/ class=md-nav__link> <span class=md-ellipsis> start_pos </span> </a> </li> <li class=md-nav__item> <a href=../string_t/ class=md-nav__link> <span class=md-ellipsis> string_t </span> </a> </li> <li class=md-nav__item> <a href=../swap/ class=md-nav__link> <span class=md-ellipsis> swap </span> </a> </li> <li class=md-nav__item> <a href=../std_swap/ class=md-nav__link> <span class=md-ellipsis> std::swap&lt;basic_json&gt; </span> </a> </li> <li class=md-nav__item> <a href=../to_bjdata/ class=md-nav__link> <span class=md-ellipsis> to_bjdata </span> </a> </li> <li class=md-nav__item> <a href=../to_bson/ class=md-nav__link> <span class=md-ellipsis> to_bson </span> </a> </li> <li class=md-nav__item> <a href=../to_cbor/ class=md-nav__link> <span class=md-ellipsis> to_cbor </span> </a> </li> <li class=md-nav__item> <a href=../to_msgpack/ class=md-nav__link> <span class=md-ellipsis> to_msgpack </span> </a> </li> <li class=md-nav__item> <a href=../to_string/ class=md-nav__link> <span class=md-ellipsis> to_string </span> </a> </li> <li class=md-nav__item> <a href=../to_ubjson/ class=md-nav__link> <span class=md-ellipsis> to_ubjson </span> </a> </li> <li class=md-nav__item> <a href=../type/ class=md-nav__link> <span class=md-ellipsis> type </span> </a> </li> <li class=md-nav__item> <a href=../type_error/ class=md-nav__link> <span class=md-ellipsis> type_error </span> </a> </li> <li class=md-nav__item> <a href=../type_name/ class=md-nav__link> <span class=md-ellipsis> type_name </span> </a> </li> <li class=md-nav__item> <a href=../unflatten/ class=md-nav__link> <span class=md-ellipsis> unflatten </span> </a> </li> <li class=md-nav__item> <a href=../update/ class=md-nav__link> <span class=md-ellipsis> update </span> </a> </li> <li class=md-nav__item> <a href=../value/ class=md-nav__link> <span class=md-ellipsis> value </span> </a> </li> <li class=md-nav__item> <a href=../value_t/ class=md-nav__link> <span class=md-ellipsis> value_t </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_2> <div class="md-nav__link md-nav__container"> <a href=../../byte_container_with_subtype/ class="md-nav__link "> <span class=md-ellipsis> byte_container_with_subtype </span> </a> <label class="md-nav__link " for=__nav_4_2 id=__nav_4_2_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_2_label aria-expanded=false> <label class=md-nav__title for=__nav_4_2> <span class="md-nav__icon md-icon"></span> byte_container_with_subtype </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../byte_container_with_subtype/byte_container_with_subtype/ class=md-nav__link> <span class=md-ellipsis> (constructor) </span> </a> </li> <li class=md-nav__item> <a href=../../byte_container_with_subtype/clear_subtype/ class=md-nav__link> <span class=md-ellipsis> clear_subtype </span> </a> </li> <li class=md-nav__item> <a href=../../byte_container_with_subtype/has_subtype/ class=md-nav__link> <span class=md-ellipsis> has_subtype </span> </a> </li> <li class=md-nav__item> <a href=../../byte_container_with_subtype/set_subtype/ class=md-nav__link> <span class=md-ellipsis> set_subtype </span> </a> </li> <li class=md-nav__item> <a href=../../byte_container_with_subtype/subtype/ class=md-nav__link> <span class=md-ellipsis> subtype </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_3> <div class="md-nav__link md-nav__container"> <a href=../../adl_serializer/ class="md-nav__link "> <span class=md-ellipsis> adl_serializer </span> </a> <label class="md-nav__link " for=__nav_4_3 id=__nav_4_3_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_3_label aria-expanded=false> <label class=md-nav__title for=__nav_4_3> <span class="md-nav__icon md-icon"></span> adl_serializer </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../adl_serializer/from_json/ class=md-nav__link> <span class=md-ellipsis> from_json </span> </a> </li> <li class=md-nav__item> <a href=../../adl_serializer/to_json/ class=md-nav__link> <span class=md-ellipsis> to_json </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../json/ class=md-nav__link> <span class=md-ellipsis> json </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_5> <div class="md-nav__link md-nav__container"> <a href=../../json_pointer/ class="md-nav__link "> <span class=md-ellipsis> json_pointer </span> </a> <label class="md-nav__link " for=__nav_4_5 id=__nav_4_5_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_5_label aria-expanded=false> <label class=md-nav__title for=__nav_4_5> <span class="md-nav__icon md-icon"></span> json_pointer </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../json_pointer/json_pointer/ class=md-nav__link> <span class=md-ellipsis> (Constructor) </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/back/ class=md-nav__link> <span class=md-ellipsis> back </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/empty/ class=md-nav__link> <span class=md-ellipsis> empty </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/front/ class=md-nav__link> <span class=md-ellipsis> front </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_string_t/ class=md-nav__link> <span class=md-ellipsis> operator string_t </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_eq/ class=md-nav__link> <span class=md-ellipsis> operator== </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_ne/ class=md-nav__link> <span class=md-ellipsis> operator!= </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_slash/ class=md-nav__link> <span class=md-ellipsis> operator/ </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_slasheq/ class=md-nav__link> <span class=md-ellipsis> operator/= </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/parent_pointer/ class=md-nav__link> <span class=md-ellipsis> parent_pointer </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/pop_back/ class=md-nav__link> <span class=md-ellipsis> pop_back </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/pop_front/ class=md-nav__link> <span class=md-ellipsis> pop_front </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/push_back/ class=md-nav__link> <span class=md-ellipsis> push_back </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/push_front/ class=md-nav__link> <span class=md-ellipsis> push_front </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/string_t/ class=md-nav__link> <span class=md-ellipsis> string_t </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/to_string/ class=md-nav__link> <span class=md-ellipsis> to_string </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_6> <div class="md-nav__link md-nav__container"> <a href=../../json_sax/ class="md-nav__link "> <span class=md-ellipsis> json_sax </span> </a> <label class="md-nav__link " for=__nav_4_6 id=__nav_4_6_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_6_label aria-expanded=false> <label class=md-nav__title for=__nav_4_6> <span class="md-nav__icon md-icon"></span> json_sax </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../json_sax/binary/ class=md-nav__link> <span class=md-ellipsis> binary </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/boolean/ class=md-nav__link> <span class=md-ellipsis> boolean </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/end_array/ class=md-nav__link> <span class=md-ellipsis> end_array </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/end_object/ class=md-nav__link> <span class=md-ellipsis> end_object </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/key/ class=md-nav__link> <span class=md-ellipsis> key </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/null/ class=md-nav__link> <span class=md-ellipsis> null </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/number_float/ class=md-nav__link> <span class=md-ellipsis> number_float </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/number_integer/ class=md-nav__link> <span class=md-ellipsis> number_integer </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/number_unsigned/ class=md-nav__link> <span class=md-ellipsis> number_unsigned </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/parse_error/ class=md-nav__link> <span class=md-ellipsis> parse_error </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/start_array/ class=md-nav__link> <span class=md-ellipsis> start_array </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/start_object/ class=md-nav__link> <span class=md-ellipsis> start_object </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/string/ class=md-nav__link> <span class=md-ellipsis> string </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../operator_ltlt/ class=md-nav__link> <span class=md-ellipsis> operator<<(basic_json), operator<<(json_pointer) </span> </a> </li> <li class=md-nav__item> <a href=../../operator_gtgt/ class=md-nav__link> <span class=md-ellipsis> operator>>(basic_json) </span> </a> </li> <li class=md-nav__item> <a href=../../operator_literal_json/ class=md-nav__link> <span class=md-ellipsis> operator""_json </span> </a> </li> <li class=md-nav__item> <a href=../../operator_literal_json_pointer/ class=md-nav__link> <span class=md-ellipsis> operator""_json_pointer </span> </a> </li> <li class=md-nav__item> <a href=../../ordered_json/ class=md-nav__link> <span class=md-ellipsis> ordered_json </span> </a> </li> <li class=md-nav__item> <a href=../../ordered_map/ class=md-nav__link> <span class=md-ellipsis> ordered_map </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_13> <div class="md-nav__link md-nav__container"> <a href=../../macros/ class="md-nav__link "> <span class=md-ellipsis> macros </span> </a> <label class="md-nav__link " for=__nav_4_13 id=__nav_4_13_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_13_label aria-expanded=false> <label class=md-nav__title for=__nav_4_13> <span class="md-nav__icon md-icon"></span> macros </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../macros/json_assert/ class=md-nav__link> <span class=md-ellipsis> JSON_ASSERT </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_brace_init_copy_semantics/ class=md-nav__link> <span class=md-ellipsis> JSON_BRACE_INIT_COPY_SEMANTICS </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_throw_user/ class=md-nav__link> <span class=md-ellipsis> JSON_CATCH_USER, JSON_THROW_USER, JSON_TRY_USER </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_diagnostics/ class=md-nav__link> <span class=md-ellipsis> JSON_DIAGNOSTICS </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_diagnostic_positions/ class=md-nav__link> <span class=md-ellipsis> JSON_DIAGNOSTIC_POSITIONS </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_disable_enum_serialization/ class=md-nav__link> <span class=md-ellipsis> JSON_DISABLE_ENUM_SERIALIZATION </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_has_cpp_11/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_CPP_11, JSON_HAS_CPP_14, JSON_HAS_CPP_17, JSON_HAS_CPP_20 </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_has_filesystem/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_EXPERIMENTAL_FILESYSTEM, JSON_HAS_FILESYSTEM </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_has_ranges/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_RANGES </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_has_static_rtti/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_STATIC_RTTI </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_has_three_way_comparison/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_THREE_WAY_COMPARISON </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_noexception/ class=md-nav__link> <span class=md-ellipsis> JSON_NOEXCEPTION </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_no_io/ class=md-nav__link> <span class=md-ellipsis> JSON_NO_IO </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_skip_library_version_check/ class=md-nav__link> <span class=md-ellipsis> JSON_SKIP_LIBRARY_VERSION_CHECK </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_skip_unsupported_compiler_check/ class=md-nav__link> <span class=md-ellipsis> JSON_SKIP_UNSUPPORTED_COMPILER_CHECK </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_use_global_udls/ class=md-nav__link> <span class=md-ellipsis> JSON_USE_GLOBAL_UDLS </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_use_implicit_conversions/ class=md-nav__link> <span class=md-ellipsis> JSON_USE_IMPLICIT_CONVERSIONS </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_use_legacy_discarded_value_comparison/ class=md-nav__link> <span class=md-ellipsis> JSON_USE_LEGACY_DISCARDED_VALUE_COMPARISON </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_define_derived_type/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_ONLY_SERIALIZE, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_define_type_intrusive/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_TYPE_INTRUSIVE, NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_TYPE_INTRUSIVE_ONLY_SERIALIZE </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_define_type_non_intrusive/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_define_type_with_names/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_TYPE_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_namespace/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_NAMESPACE </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_namespace_begin/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_NAMESPACE_BEGIN, NLOHMANN_JSON_NAMESPACE_END </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_namespace_no_version/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_NAMESPACE_NO_VERSION </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_serialize_enum/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_SERIALIZE_ENUM </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_serialize_enum_strict/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_SERIALIZE_ENUM_STRICT </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_version_major/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_VERSION_MAJOR, NLOHMANN_JSON_VERSION_MINOR, NLOHMANN_JSON_VERSION_PATCH </span> </a> </li> </ul> </nav> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_5> <div class="md-nav__link md-nav__container"> <a href=../../../community/ class="md-nav__link "> <span class=md-ellipsis> Community </span> </a> <label class="md-nav__link " for=__nav_5 id=__nav_5_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_5_label aria-expanded=false> <label class=md-nav__title for=__nav_5> <span class="md-nav__icon md-icon"></span> Community </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../community/code_of_conduct/ class=md-nav__link> <span class=md-ellipsis> Code of Conduct </span> </a> </li> <li class=md-nav__item> <a href=../../../community/contribution_guidelines/ class=md-nav__link> <span class=md-ellipsis> Contribution Guidelines </span> </a> </li> <li class=md-nav__item> <a href=../../../community/quality_assurance/ class=md-nav__link> <span class=md-ellipsis> Quality assurance </span> </a> </li> <li class=md-nav__item> <a href=../../../community/governance/ class=md-nav__link> <span class=md-ellipsis> Governance </span> </a> </li> <li class=md-nav__item> <a href=../../../community/security_policy/ class=md-nav__link> <span class=md-ellipsis> Security Policy </span> </a> </li> </ul> </nav> </li> </ul> </nav> </div> </div> </div> <div class="md-sidebar md-sidebar--secondary" data-md-component=sidebar data-md-type=toc> <div class=md-sidebar__scrollwrap> <div class=md-sidebar__inner> <nav class="md-nav md-nav--secondary" aria-label="Table of contents"> <label class=md-nav__title for=__toc> <span class="md-nav__icon md-icon"></span> Table of contents </label> <ul class=md-nav__list data-md-component=toc data-md-scrollfix> <li class=md-nav__item> <a href=#template-parameters class=md-nav__link> <span class=md-ellipsis> Template parameters </span> </a> </li> <li class=md-nav__item> <a href=#iterator-invalidation class=md-nav__link> <span class=md-ellipsis> Iterator invalidation </span> </a> </li> <li class=md-nav__item> <a href=#parameters class=md-nav__link> <span class=md-ellipsis> Parameters </span> </a> </li> <li class=md-nav__item> <a href=#return-value class=md-nav__link> <span class=md-ellipsis> Return value </span> </a> </li> <li class=md-nav__item> <a href=#exception-safety class=md-nav__link> <span class=md-ellipsis> Exception safety </span> </a> </li> <li class=md-nav__item> <a href=#exceptions class=md-nav__link> <span class=md-ellipsis> Exceptions </span> </a> </li> <li class=md-nav__item> <a href=#complexity class=md-nav__link> <span class=md-ellipsis> Complexity </span> </a> </li> <li class=md-nav__item> <a href=#examples class=md-nav__link> <span class=md-ellipsis> Examples </span> </a> </li> <li class=md-nav__item> <a href=#see-also class=md-nav__link> <span class=md-ellipsis> See also </span> </a> </li> <li class=md-nav__item> <a href=#version-history class=md-nav__link> <span class=md-ellipsis> Version history </span> </a> </li> </ul> </nav> </div> </div> </div> <div class=md-content data-md-component=content> <article class="md-content__inner md-typeset"> <a href="https://github.com/nlohmann/json/edit/develop/docs/mkdocs/docs/api/basic_json/emplace.md" title="Edit this page" class="md-content__button md-icon" rel="edit"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M10 20H6V4h7v5h5v3.1l2-2V8l-6-6H6c-1.1 0-2 .9-2 2v16c0 1.1.9 2 2 2h4zm10.2-7c.1 0 .3.1.4.2l1.3 1.3c.2.2.2.6 0 .8l-1 1-2.1-2.1 1-1c.1-.1.2-.2.4-.2m0 3.9L14.1 23H12v-2.1l6.1-6.1z"/></svg> </a> <a href="https://github.com/nlohmann/json/raw/develop/docs/mkdocs/docs/api/basic_json/emplace.md" title="View source of this page" class="md-content__button md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M17 18c.56 0 1 .44 1 1s-.44 1-1 1-1-.44-1-1 .44-1 1-1m0-3c-2.73 0-5.06 1.66-6 4 .94 2.34 3.27 4 6 4s5.06-1.66 6-4c-.94-2.34-3.27-4-6-4m0 6.5a2.5 2.5 0 0 1-2.5-2.5 2.5 2.5 0 0 1 2.5-2.5 2.5 2.5 0 0 1 2.5 2.5 2.5 2.5 0 0 1-2.5 2.5M9.27 20H6V4h7v5h5v4.07c.7.08 1.36.25 2 .49V8l-6-6H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h4.5a8.2 8.2 0 0 1-1.23-2"/></svg> </a> <h1 id=nlohmannbasic_jsonemplace><small>nlohmann::basic_json::</small>emplace<a class=headerlink href=#nlohmannbasic_jsonemplace title="Permanent link">&para;</a></h1> <div class=highlight><pre><span></span><code><span class=k>template</span><span class=o>&lt;</span><span class=k>class</span><span class=p>...</span><span class=w> </span><span class=n>Args</span><span class=o>&gt;</span>
 <span class=n>std</span><span class=o>::</span><span class=n>pair</span><span class=o>&lt;</span><span class=n>iterator</span><span class=p>,</span><span class=w> </span><span class=kt>bool</span><span class=o>&gt;</span><span class=w> </span><span class=n>emplace</span><span class=p>(</span><span class=n>Args</span><span class=o>&amp;&amp;</span><span class=w> </span><span class=p>...</span><span class=w> </span><span class=n>args</span><span class=p>);</span>
-</code></pre></div> <p>Inserts a new element into a <abbr title="JavaScript Object Notation">JSON</abbr> object constructed in-place with the given <code>args</code> if there is no element with the key in the container. If the function is called on a <abbr title="JavaScript Object Notation">JSON</abbr> null value, an empty object is created before appending the value created from <code>args</code>.</p> <h2 id=template-parameters>Template parameters<a class=headerlink href=#template-parameters title="Permanent link">&para;</a></h2> <dl> <dt><code>Args</code></dt> <dd>compatible types to create a <code>basic_json</code> object</dd> </dl> <h2 id=iterator-invalidation>Iterator invalidation<a class=headerlink href=#iterator-invalidation title="Permanent link">&para;</a></h2> <p>For <a href=../../ordered_json/ ><code>ordered_json</code></a>, adding a value to an object can yield a reallocation, in which case all iterators (including the <code>end()</code> iterator) and all references to the elements are invalidated.</p> <h2 id=parameters>Parameters<a class=headerlink href=#parameters title="Permanent link">&para;</a></h2> <dl> <dt><code>args</code> (in)</dt> <dd>arguments to forward to a constructor of <code>basic_json</code></dd> </dl> <h2 id=return-value>Return value<a class=headerlink href=#return-value title="Permanent link">&para;</a></h2> <p>a pair consisting of an iterator to the inserted element, or the already-existing element if no insertion happened, and a <code class=highlight><span class=kt>bool</span></code> denoting whether the insertion took place.</p> <h2 id=exceptions>Exceptions<a class=headerlink href=#exceptions title="Permanent link">&para;</a></h2> <p>Throws <a href=../../../home/exceptions/#jsonexceptiontype_error311><code>type_error.311</code></a> when called on a type other than <abbr title="JavaScript Object Notation">JSON</abbr> object or <code class=highlight><span class=kc>null</span></code>; example: <code>"cannot use emplace() with number"</code></p> <h2 id=complexity>Complexity<a class=headerlink href=#complexity title="Permanent link">&para;</a></h2> <p>Logarithmic in the size of the container, O(log(<code>size()</code>)).</p> <h2 id=examples>Examples<a class=headerlink href=#examples title="Permanent link">&para;</a></h2> <details class=example> <summary>Example</summary> <p>The example shows how <code>emplace()</code> can be used to add elements to a <abbr title="JavaScript Object Notation">JSON</abbr> object. Note how the <code class=highlight><span class=kc>null</span></code> value was silently converted to a <abbr title="JavaScript Object Notation">JSON</abbr> object. Further note how no value is added if there was already one value stored with the same key.</p> <div class=highlight><pre><span></span><code><span class=cp>#include</span><span class=w> </span><span class=cpf>&lt;iostream&gt;</span>
+</code></pre></div> <p>Inserts a new element into a <abbr title="JavaScript Object Notation">JSON</abbr> object constructed in-place with the given <code>args</code> if there is no element with the key in the container. If the function is called on a <abbr title="JavaScript Object Notation">JSON</abbr> null value, an empty object is created before appending the value created from <code>args</code>.</p> <h2 id=template-parameters>Template parameters<a class=headerlink href=#template-parameters title="Permanent link">&para;</a></h2> <dl> <dt><code>Args</code></dt> <dd>compatible types to create a <code>basic_json</code> object</dd> </dl> <h2 id=iterator-invalidation>Iterator invalidation<a class=headerlink href=#iterator-invalidation title="Permanent link">&para;</a></h2> <p>For <a href=../../ordered_json/ ><code>ordered_json</code></a>, adding a value to an object can yield a reallocation, in which case all iterators (including the <code>end()</code> iterator) and all references to the elements are invalidated.</p> <h2 id=parameters>Parameters<a class=headerlink href=#parameters title="Permanent link">&para;</a></h2> <dl> <dt><code>args</code> (in)</dt> <dd>arguments to forward to a constructor of <code>basic_json</code></dd> </dl> <h2 id=return-value>Return value<a class=headerlink href=#return-value title="Permanent link">&para;</a></h2> <p>a pair consisting of an iterator to the inserted element, or the already-existing element if no insertion happened, and a <code class=highlight><span class=kt>bool</span></code> denoting whether the insertion took place.</p> <h2 id=exception-safety>Exception safety<a class=headerlink href=#exception-safety title="Permanent link">&para;</a></h2> <p>Strong guarantee: if an exception is thrown, there are no changes to any <abbr title="JavaScript Object Notation">JSON</abbr> value.</p> <h2 id=exceptions>Exceptions<a class=headerlink href=#exceptions title="Permanent link">&para;</a></h2> <p>Throws <a href=../../../home/exceptions/#jsonexceptiontype_error311><code>type_error.311</code></a> when called on a type other than <abbr title="JavaScript Object Notation">JSON</abbr> object or <code class=highlight><span class=kc>null</span></code>; example: <code>"cannot use emplace() with number"</code></p> <h2 id=complexity>Complexity<a class=headerlink href=#complexity title="Permanent link">&para;</a></h2> <p>Logarithmic in the size of the container, O(log(<code>size()</code>)).</p> <h2 id=examples>Examples<a class=headerlink href=#examples title="Permanent link">&para;</a></h2> <details class=example> <summary>Example</summary> <p>The example shows how <code>emplace()</code> can be used to add elements to a <abbr title="JavaScript Object Notation">JSON</abbr> object. Note how the <code class=highlight><span class=kc>null</span></code> value was silently converted to a <abbr title="JavaScript Object Notation">JSON</abbr> object. Further note how no value is added if there was already one value stored with the same key.</p> <div class=highlight><pre><span></span><code><span class=cp>#include</span><span class=w> </span><span class=cpf>&lt;iostream&gt;</span>
 <span class=cp>#include</span><span class=w> </span><span class=cpf>&lt;nlohmann/json.hpp&gt;</span>
 
 <span class=k>using</span><span class=w> </span><span class=n>json</span><span class=w> </span><span class=o>=</span><span class=w> </span><span class=n>nlohmann</span><span class=o>::</span><span class=n>json</span><span class=p>;</span>
@@ -37,4 +37,4 @@
 <span class=mi>3</span><span class=w> </span><span class=kc>true</span>
 <span class=p>{</span><span class=nt>&quot;A&quot;</span><span class=p>:</span><span class=s2>&quot;a&quot;</span><span class=p>,</span><span class=nt>&quot;B&quot;</span><span class=p>:</span><span class=s2>&quot;b&quot;</span><span class=p>}</span>
 <span class=s2>&quot;b&quot;</span><span class=w> </span><span class=kc>false</span>
-</code></pre></div> </details> <h2 id=version-history>Version history<a class=headerlink href=#version-history title="Permanent link">&para;</a></h2> <ul> <li>Since version 2.0.8.</li> </ul> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 23, 2026 11:16:18 UTC">June 23, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
+</code></pre></div> </details> <h2 id=see-also>See also<a class=headerlink href=#see-also title="Permanent link">&para;</a></h2> <ul> <li><a href=../emplace_back/ >emplace_back</a> add a value to an array</li> <li><a href=../insert/ >insert</a> add values to an array/object</li> </ul> <h2 id=version-history>Version history<a class=headerlink href=#version-history title="Permanent link">&para;</a></h2> <ul> <li>Since version 2.0.8.</li> </ul> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 29, 2026 20:15:18 UTC">June 29, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
diff --git a/api/basic_json/emplace_back/index.html b/api/basic_json/emplace_back/index.html
index 6556c1f..29eb72b 100644
--- a/api/basic_json/emplace_back/index.html
+++ b/api/basic_json/emplace_back/index.html
@@ -28,4 +28,4 @@
 <span class=kc>null</span>
 <span class=p>[</span><span class=mi>1</span><span class=p>,</span><span class=mi>2</span><span class=p>,</span><span class=mi>3</span><span class=p>,</span><span class=mi>4</span><span class=p>,</span><span class=mi>5</span><span class=p>,</span><span class=mi>6</span><span class=p>]</span>
 <span class=p>[</span><span class=s2>&quot;first&quot;</span><span class=p>,[</span><span class=s2>&quot;second&quot;</span><span class=p>,</span><span class=s2>&quot;second&quot;</span><span class=p>,</span><span class=s2>&quot;second&quot;</span><span class=p>]]</span>
-</code></pre></div> </details> <h2 id=see-also>See also<a class=headerlink href=#see-also title="Permanent link">&para;</a></h2> <ul> <li><a href=../operator%2B%3D/ >operator+=</a> add a value to an array/object</li> <li><a href=../push_back/ >push_back</a> add a value to an array/object</li> </ul> <h2 id=version-history>Version history<a class=headerlink href=#version-history title="Permanent link">&para;</a></h2> <ul> <li>Since version 2.0.8.</li> <li>Returns reference since 3.7.0.</li> </ul> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 23, 2026 11:16:18 UTC">June 23, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
+</code></pre></div> </details> <h2 id=see-also>See also<a class=headerlink href=#see-also title="Permanent link">&para;</a></h2> <ul> <li><a href=../operator%2B%3D/ >operator+=</a> add a value to an array/object</li> <li><a href=../push_back/ >push_back</a> add a value to an array/object</li> </ul> <h2 id=version-history>Version history<a class=headerlink href=#version-history title="Permanent link">&para;</a></h2> <ul> <li>Since version 2.0.8.</li> <li>Returns reference since 3.7.0.</li> </ul> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 29, 2026 20:15:18 UTC">June 29, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
diff --git a/api/basic_json/empty/index.html b/api/basic_json/empty/index.html
index aaddeb0..a32a4d2 100644
--- a/api/basic_json/empty/index.html
+++ b/api/basic_json/empty/index.html
@@ -42,4 +42,4 @@
 <span class=kc>false</span>
 <span class=kc>true</span>
 <span class=kc>false</span>
-</code></pre></div> </details> <h2 id=version-history>Version history<a class=headerlink href=#version-history title="Permanent link">&para;</a></h2> <ul> <li>Added in version 1.0.0.</li> <li>Extended to return <code class=highlight><span class=nb>false</span></code> for binary types in version 3.8.0.</li> </ul> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 23, 2026 11:16:18 UTC">June 23, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
+</code></pre></div> </details> <h2 id=version-history>Version history<a class=headerlink href=#version-history title="Permanent link">&para;</a></h2> <ul> <li>Added in version 1.0.0.</li> <li>Extended to return <code class=highlight><span class=nb>false</span></code> for binary types in version 3.8.0.</li> </ul> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 29, 2026 20:15:18 UTC">June 29, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
diff --git a/api/basic_json/end/index.html b/api/basic_json/end/index.html
index d3f35a1..49e3643 100644
--- a/api/basic_json/end/index.html
+++ b/api/basic_json/end/index.html
@@ -20,4 +20,4 @@
 <span class=w>    </span><span class=n>std</span><span class=o>::</span><span class=n>cout</span><span class=w> </span><span class=o>&lt;&lt;</span><span class=w> </span><span class=o>*</span><span class=n>it</span><span class=w> </span><span class=o>&lt;&lt;</span><span class=w> </span><span class=sc>&#39;\n&#39;</span><span class=p>;</span>
 <span class=p>}</span>
 </code></pre></div> <p>Output:</p> <div class=highlight><pre><span></span><code><span class=mi>5</span>
-</code></pre></div> </details> <h2 id=version-history>Version history<a class=headerlink href=#version-history title="Permanent link">&para;</a></h2> <ul> <li>Added in version 1.0.0.</li> </ul> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 23, 2026 11:16:18 UTC">June 23, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
+</code></pre></div> </details> <h2 id=version-history>Version history<a class=headerlink href=#version-history title="Permanent link">&para;</a></h2> <ul> <li>Added in version 1.0.0.</li> </ul> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 29, 2026 20:15:18 UTC">June 29, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
diff --git a/api/basic_json/end_pos/index.html b/api/basic_json/end_pos/index.html
index 9353cf6..0f5f308 100644
--- a/api/basic_json/end_pos/index.html
+++ b/api/basic_json/end_pos/index.html
@@ -101,4 +101,4 @@
 1
 Parsed string: 
 1
-</code></pre></div> <p>The output shows the start/end positions of all the objects and fields in the <abbr title="JavaScript Object Notation">JSON</abbr> string.</p> </details> <h2 id=see-also>See also<a class=headerlink href=#see-also title="Permanent link">&para;</a></h2> <ul> <li><a href=../start_pos/ >start_pos</a> to access the start position</li> <li><a href=../../macros/json_diagnostic_positions/ >JSON_DIAGNOSTIC_POSITIONS</a> for an overview of the diagnostic positions</li> </ul> <h2 id=version-history>Version history<a class=headerlink href=#version-history title="Permanent link">&para;</a></h2> <ul> <li>Added in version 3.12.0.</li> </ul> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 23, 2026 11:16:18 UTC">June 23, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
+</code></pre></div> <p>The output shows the start/end positions of all the objects and fields in the <abbr title="JavaScript Object Notation">JSON</abbr> string.</p> </details> <h2 id=see-also>See also<a class=headerlink href=#see-also title="Permanent link">&para;</a></h2> <ul> <li><a href=../start_pos/ >start_pos</a> to access the start position</li> <li><a href=../../macros/json_diagnostic_positions/ >JSON_DIAGNOSTIC_POSITIONS</a> for an overview of the diagnostic positions</li> </ul> <h2 id=version-history>Version history<a class=headerlink href=#version-history title="Permanent link">&para;</a></h2> <ul> <li>Added in version 3.12.0.</li> </ul> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 29, 2026 20:15:18 UTC">June 29, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
diff --git a/api/basic_json/erase/index.html b/api/basic_json/erase/index.html
index 24d8086..87f632a 100644
--- a/api/basic_json/erase/index.html
+++ b/api/basic_json/erase/index.html
@@ -1,4 +1,4 @@
-<!doctype html><html lang=en class=no-js> <head><meta charset=utf-8><meta name=viewport content="width=device-width,initial-scale=1"><meta name=author content="Niels Lohmann"><link href="https://json.nlohmann.me/api/basic_json/erase/" rel="canonical"><link href=../end_pos/ rel=prev><link href=../error_handler_t/ rel=next><link rel=icon href=../../../assets/images/favicon.png><meta name=generator content="mkdocs-1.6.1, mkdocs-material-9.7.6"><title>erase - JSON for Modern C++</title><link rel=stylesheet href=../../../assets/stylesheets/main.484c7ddc.min.css><link rel=stylesheet href=../../../assets/stylesheets/palette.ab4e12ef.min.css><link rel="stylesheet" href="../../../assets/external/fonts.googleapis.com/css.61a430c9.css"><style>:root{--md-text-font:"Roboto";--md-code-font:"JetBrains Mono"}</style><link rel=stylesheet href=../../../css/custom.css><script>__md_scope=new URL("../../..",location),__md_hash=e=>[...e].reduce(((e,_)=>(e<<5)-e+_.charCodeAt(0)),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script></head> <body dir=ltr data-md-color-scheme=default data-md-color-primary=indigo data-md-color-accent=indigo> <input class=md-toggle data-md-toggle=drawer type=checkbox id=__drawer autocomplete=off> <input class=md-toggle data-md-toggle=search type=checkbox id=__search autocomplete=off> <label class=md-overlay for=__drawer></label> <div data-md-component=skip> <a href=#nlohmannbasic_jsonerase class=md-skip> Skip to content </a> </div> <div data-md-component=announce> </div> <header class=md-header data-md-component=header> <nav class="md-header__inner md-grid" aria-label=Header> <a href=../../.. title="JSON for Modern C++" class="md-header__button md-logo" aria-label="JSON for Modern C++" data-md-component=logo> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54"/></svg> </a> <label class="md-header__button md-icon" for=__drawer> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M3 6h18v2H3zm0 5h18v2H3zm0 5h18v2H3z"/></svg> </label> <div class=md-header__title data-md-component=header-title> <div class=md-header__ellipsis> <div class=md-header__topic> <span class=md-ellipsis> JSON for Modern C++ </span> </div> <div class=md-header__topic data-md-component=header-topic> <span class=md-ellipsis> erase </span> </div> </div> </div> <form class=md-header__option data-md-component=palette> <input class=md-option data-md-color-media="(prefers-color-scheme: light)" data-md-color-scheme=default data-md-color-primary=indigo data-md-color-accent=indigo aria-label="Switch to dark mode" type=radio name=__palette id=__palette_0> <label class="md-header__button md-icon" title="Switch to dark mode" for=__palette_1 hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a4 4 0 0 0-4 4 4 4 0 0 0 4 4 4 4 0 0 0 4-4 4 4 0 0 0-4-4m0 10a6 6 0 0 1-6-6 6 6 0 0 1 6-6 6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12z"/></svg> </label> <input class=md-option data-md-color-media="(prefers-color-scheme: dark)" data-md-color-scheme=slate data-md-color-primary=indigo data-md-color-accent=indigo aria-label="Switch to light mode" type=radio name=__palette id=__palette_1> <label class="md-header__button md-icon" title="Switch to light mode" for=__palette_0 hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 18c-.89 0-1.74-.2-2.5-.55C11.56 16.5 13 14.42 13 12s-1.44-4.5-3.5-5.45C10.26 6.2 11.11 6 12 6a6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12z"/></svg> </label> </form> <script>var palette=__md_get("__palette");if(palette&&palette.color){if("(prefers-color-scheme)"===palette.color.media){var media=matchMedia("(prefers-color-scheme: light)"),input=document.querySelector(media.matches?"[data-md-color-media='(prefers-color-scheme: light)']":"[data-md-color-media='(prefers-color-scheme: dark)']");palette.color.media=input.getAttribute("data-md-color-media"),palette.color.scheme=input.getAttribute("data-md-color-scheme"),palette.color.primary=input.getAttribute("data-md-color-primary"),palette.color.accent=input.getAttribute("data-md-color-accent")}for(var[key,value]of Object.entries(palette.color))document.body.setAttribute("data-md-color-"+key,value)}</script> <label class="md-header__button md-icon" for=__search> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg> </label> <div class=md-search data-md-component=search role=dialog> <label class=md-search__overlay for=__search></label> <div class=md-search__inner role=search> <form class=md-search__form name=search> <input type=text class=md-search__input name=query aria-label=Search placeholder=Search autocapitalize=off autocorrect=off autocomplete=off spellcheck=false data-md-component=search-query required> <label class="md-search__icon md-icon" for=__search> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11z"/></svg> </label> <nav class=md-search__options aria-label=Search> <button type=reset class="md-search__icon md-icon" title=Clear aria-label=Clear tabindex=-1> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z"/></svg> </button> </nav> </form> <div class=md-search__output> <div class=md-search__scrollwrap tabindex=0 data-md-scrollfix> <div class=md-search-result data-md-component=search-result> <div class=md-search-result__meta> Initializing search </div> <ol class=md-search-result__list role=presentation></ol> </div> </div> </div> </div> </div> <div class=md-header__source> <a href="https://github.com/nlohmann/json" title="Go to repository" class="md-source" data-md-component="source"> <div class="md-source__icon md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </div> <div class=md-source__repository> nlohmann/json </div> </a> </div> </nav> </header> <div class=md-container data-md-component=container> <nav class=md-tabs aria-label=Tabs data-md-component=tabs> <div class=md-grid> <ul class=md-tabs__list> <li class=md-tabs__item> <a href=../../.. class=md-tabs__link> Home </a> </li> <li class=md-tabs__item> <a href=../../../features/arbitrary_types/ class=md-tabs__link> Features </a> </li> <li class=md-tabs__item> <a href=../../../integration/ class=md-tabs__link> Integration </a> </li> <li class="md-tabs__item md-tabs__item--active"> <a href=../ class=md-tabs__link> API Documentation </a> </li> <li class=md-tabs__item> <a href=../../../community/ class=md-tabs__link> Community </a> </li> </ul> </div> </nav> <main class=md-main data-md-component=main> <div class="md-main__inner md-grid"> <div class="md-sidebar md-sidebar--primary" data-md-component=sidebar data-md-type=navigation> <div class=md-sidebar__scrollwrap> <div class=md-sidebar__inner> <nav class="md-nav md-nav--primary md-nav--lifted" aria-label=Navigation data-md-level=0> <label class=md-nav__title for=__drawer> <a href=../../.. title="JSON for Modern C++" class="md-nav__button md-logo" aria-label="JSON for Modern C++" data-md-component=logo> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54"/></svg> </a> JSON for Modern C++ </label> <div class=md-nav__source> <a href="https://github.com/nlohmann/json" title="Go to repository" class="md-source" data-md-component="source"> <div class="md-source__icon md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </div> <div class=md-source__repository> nlohmann/json </div> </a> </div> <ul class=md-nav__list data-md-scrollfix> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_1> <div class="md-nav__link md-nav__container"> <a href=../../.. class="md-nav__link "> <span class=md-ellipsis> Home </span> </a> <label class="md-nav__link " for=__nav_1 id=__nav_1_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_1_label aria-expanded=false> <label class=md-nav__title for=__nav_1> <span class="md-nav__icon md-icon"></span> Home </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../home/license/ class=md-nav__link> <span class=md-ellipsis> License </span> </a> </li> <li class=md-nav__item> <a href=../../../home/faq/ class=md-nav__link> <span class=md-ellipsis> FAQ </span> </a> </li> <li class=md-nav__item> <a href=../../../home/exceptions/ class=md-nav__link> <span class=md-ellipsis> Exceptions </span> </a> </li> <li class=md-nav__item> <a href=../../../home/releases/ class=md-nav__link> <span class=md-ellipsis> Releases </span> </a> </li> <li class=md-nav__item> <a href=../../../home/design_goals/ class=md-nav__link> <span class=md-ellipsis> Design goals </span> </a> </li> <li class=md-nav__item> <a href=../../../home/architecture/ class=md-nav__link> <span class=md-ellipsis> Architecture </span> </a> </li> <li class=md-nav__item> <a href=../../../home/customers/ class=md-nav__link> <span class=md-ellipsis> Customers </span> </a> </li> <li class=md-nav__item> <a href=../../../home/sponsors/ class=md-nav__link> <span class=md-ellipsis> Sponsors </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2> <label class=md-nav__link for=__nav_2 id=__nav_2_label tabindex=0> <span class=md-ellipsis> Features </span> <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_2_label aria-expanded=false> <label class=md-nav__title for=__nav_2> <span class="md-nav__icon md-icon"></span> Features </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/arbitrary_types/ class=md-nav__link> <span class=md-ellipsis> Arbitrary Type Conversions </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_2> <div class="md-nav__link md-nav__container"> <a href=../../../features/binary_formats/ class="md-nav__link "> <span class=md-ellipsis> Binary Formats </span> </a> <label class="md-nav__link " for=__nav_2_2 id=__nav_2_2_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_2_label aria-expanded=false> <label class=md-nav__title for=__nav_2_2> <span class="md-nav__icon md-icon"></span> Binary Formats </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/binary_formats/bjdata/ class=md-nav__link> <span class=md-ellipsis> BJData </span> </a> </li> <li class=md-nav__item> <a href=../../../features/binary_formats/bson/ class=md-nav__link> <span class=md-ellipsis> BSON </span> </a> </li> <li class=md-nav__item> <a href=../../../features/binary_formats/cbor/ class=md-nav__link> <span class=md-ellipsis> CBOR </span> </a> </li> <li class=md-nav__item> <a href=../../../features/binary_formats/messagepack/ class=md-nav__link> <span class=md-ellipsis> MessagePack </span> </a> </li> <li class=md-nav__item> <a href=../../../features/binary_formats/ubjson/ class=md-nav__link> <span class=md-ellipsis> UBJSON </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../../features/binary_values/ class=md-nav__link> <span class=md-ellipsis> Binary Values </span> </a> </li> <li class=md-nav__item> <a href=../../../features/comments/ class=md-nav__link> <span class=md-ellipsis> Comments </span> </a> </li> <li class=md-nav__item> <a href=../../../features/trailing_commas/ class=md-nav__link> <span class=md-ellipsis> Trailing Commas </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_6> <div class="md-nav__link md-nav__container"> <a href=../../../features/element_access/ class="md-nav__link "> <span class=md-ellipsis> Element Access </span> </a> <label class="md-nav__link " for=__nav_2_6 id=__nav_2_6_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_6_label aria-expanded=false> <label class=md-nav__title for=__nav_2_6> <span class="md-nav__icon md-icon"></span> Element Access </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/element_access/unchecked_access/ class=md-nav__link> <span class=md-ellipsis> Unchecked access: operator[] </span> </a> </li> <li class=md-nav__item> <a href=../../../features/element_access/checked_access/ class=md-nav__link> <span class=md-ellipsis> Checked access: at </span> </a> </li> <li class=md-nav__item> <a href=../../../features/element_access/default_value/ class=md-nav__link> <span class=md-ellipsis> Access with default value: value </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../../features/iterators/ class=md-nav__link> <span class=md-ellipsis> Iterators </span> </a> </li> <li class=md-nav__item> <a href=../../../features/json_pointer/ class=md-nav__link> <span class=md-ellipsis> JSON Pointer </span> </a> </li> <li class=md-nav__item> <a href=../../../features/json_patch/ class=md-nav__link> <span class=md-ellipsis> JSON Patch and Diff </span> </a> </li> <li class=md-nav__item> <a href=../../../features/merge_patch/ class=md-nav__link> <span class=md-ellipsis> JSON Merge Patch </span> </a> </li> <li class=md-nav__item> <a href=../../../features/modules/ class=md-nav__link> <span class=md-ellipsis> Modules </span> </a> </li> <li class=md-nav__item> <a href=../../../features/namespace/ class=md-nav__link> <span class=md-ellipsis> nlohmann Namespace </span> </a> </li> <li class=md-nav__item> <a href=../../../features/object_order/ class=md-nav__link> <span class=md-ellipsis> Object Order </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_14> <div class="md-nav__link md-nav__container"> <a href=../../../features/parsing/ class="md-nav__link "> <span class=md-ellipsis> Parsing </span> </a> <label class="md-nav__link " for=__nav_2_14 id=__nav_2_14_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_14_label aria-expanded=false> <label class=md-nav__title for=__nav_2_14> <span class="md-nav__icon md-icon"></span> Parsing </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/parsing/json_lines/ class=md-nav__link> <span class=md-ellipsis> JSON Lines </span> </a> </li> <li class=md-nav__item> <a href=../../../features/parsing/parse_exceptions/ class=md-nav__link> <span class=md-ellipsis> Parsing and Exceptions </span> </a> </li> <li class=md-nav__item> <a href=../../../features/parsing/parser_callbacks/ class=md-nav__link> <span class=md-ellipsis> Parser Callbacks </span> </a> </li> <li class=md-nav__item> <a href=../../../features/parsing/sax_interface/ class=md-nav__link> <span class=md-ellipsis> SAX Interface </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../../features/assertions/ class=md-nav__link> <span class=md-ellipsis> Runtime Assertions </span> </a> </li> <li class=md-nav__item> <a href=../../../features/enum_conversion/ class=md-nav__link> <span class=md-ellipsis> Specializing enum conversion </span> </a> </li> <li class=md-nav__item> <a href=../../../features/macros/ class=md-nav__link> <span class=md-ellipsis> Supported Macros </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_18> <div class="md-nav__link md-nav__container"> <a href=../../../features/types/ class="md-nav__link "> <span class=md-ellipsis> Types </span> </a> <label class="md-nav__link " for=__nav_2_18 id=__nav_2_18_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_18_label aria-expanded=false> <label class=md-nav__title for=__nav_2_18> <span class="md-nav__icon md-icon"></span> Types </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/types/number_handling/ class=md-nav__link> <span class=md-ellipsis> Number Handling </span> </a> </li> </ul> </nav> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_3> <div class="md-nav__link md-nav__container"> <a href=../../../integration/ class="md-nav__link "> <span class=md-ellipsis> Integration </span> </a> <label class="md-nav__link " for=__nav_3 id=__nav_3_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_3_label aria-expanded=false> <label class=md-nav__title for=__nav_3> <span class="md-nav__icon md-icon"></span> Integration </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../integration/migration_guide/ class=md-nav__link> <span class=md-ellipsis> Migration Guide </span> </a> </li> <li class=md-nav__item> <a href=../../../integration/cmake/ class=md-nav__link> <span class=md-ellipsis> CMake </span> </a> </li> <li class=md-nav__item> <a href=../../../integration/package_managers/ class=md-nav__link> <span class=md-ellipsis> Package Managers </span> </a> </li> <li class=md-nav__item> <a href=../../../integration/pkg-config/ class=md-nav__link> <span class=md-ellipsis> Pkg-config </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--active md-nav__item--section md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4 checked> <label class=md-nav__link for=__nav_4 id=__nav_4_label tabindex> <span class=md-ellipsis> API Documentation </span> <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_4_label aria-expanded=true> <label class=md-nav__title for=__nav_4> <span class="md-nav__icon md-icon"></span> API Documentation </label> <ul class=md-nav__list data-md-scrollfix> <li class="md-nav__item md-nav__item--active md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_1 checked> <div class="md-nav__link md-nav__container"> <a href=../ class="md-nav__link "> <span class=md-ellipsis> basic_json </span> </a> <label class="md-nav__link " for=__nav_4_1 id=__nav_4_1_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_1_label aria-expanded=true> <label class=md-nav__title for=__nav_4_1> <span class="md-nav__icon md-icon"></span> basic_json </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../basic_json/ class=md-nav__link> <span class=md-ellipsis> (Constructor) </span> </a> </li> <li class=md-nav__item> <a href=../~basic_json/ class=md-nav__link> <span class=md-ellipsis> (Destructor) </span> </a> </li> <li class=md-nav__item> <a href=../accept/ class=md-nav__link> <span class=md-ellipsis> accept </span> </a> </li> <li class=md-nav__item> <a href=../array/ class=md-nav__link> <span class=md-ellipsis> array </span> </a> </li> <li class=md-nav__item> <a href=../array_t/ class=md-nav__link> <span class=md-ellipsis> array_t </span> </a> </li> <li class=md-nav__item> <a href=../at/ class=md-nav__link> <span class=md-ellipsis> at </span> </a> </li> <li class=md-nav__item> <a href=../back/ class=md-nav__link> <span class=md-ellipsis> back </span> </a> </li> <li class=md-nav__item> <a href=../begin/ class=md-nav__link> <span class=md-ellipsis> begin </span> </a> </li> <li class=md-nav__item> <a href=../binary/ class=md-nav__link> <span class=md-ellipsis> binary </span> </a> </li> <li class=md-nav__item> <a href=../binary_t/ class=md-nav__link> <span class=md-ellipsis> binary_t </span> </a> </li> <li class=md-nav__item> <a href=../boolean_t/ class=md-nav__link> <span class=md-ellipsis> boolean_t </span> </a> </li> <li class=md-nav__item> <a href=../cbegin/ class=md-nav__link> <span class=md-ellipsis> cbegin </span> </a> </li> <li class=md-nav__item> <a href=../cbor_tag_handler_t/ class=md-nav__link> <span class=md-ellipsis> cbor_tag_handler_t </span> </a> </li> <li class=md-nav__item> <a href=../cend/ class=md-nav__link> <span class=md-ellipsis> cend </span> </a> </li> <li class=md-nav__item> <a href=../clear/ class=md-nav__link> <span class=md-ellipsis> clear </span> </a> </li> <li class=md-nav__item> <a href=../contains/ class=md-nav__link> <span class=md-ellipsis> contains </span> </a> </li> <li class=md-nav__item> <a href=../count/ class=md-nav__link> <span class=md-ellipsis> count </span> </a> </li> <li class=md-nav__item> <a href=../crbegin/ class=md-nav__link> <span class=md-ellipsis> crbegin </span> </a> </li> <li class=md-nav__item> <a href=../crend/ class=md-nav__link> <span class=md-ellipsis> crend </span> </a> </li> <li class=md-nav__item> <a href=../default_object_comparator_t/ class=md-nav__link> <span class=md-ellipsis> default_object_comparator_t </span> </a> </li> <li class=md-nav__item> <a href=../diff/ class=md-nav__link> <span class=md-ellipsis> diff </span> </a> </li> <li class=md-nav__item> <a href=../dump/ class=md-nav__link> <span class=md-ellipsis> dump </span> </a> </li> <li class=md-nav__item> <a href=../emplace/ class=md-nav__link> <span class=md-ellipsis> emplace </span> </a> </li> <li class=md-nav__item> <a href=../emplace_back/ class=md-nav__link> <span class=md-ellipsis> emplace_back </span> </a> </li> <li class=md-nav__item> <a href=../empty/ class=md-nav__link> <span class=md-ellipsis> empty </span> </a> </li> <li class=md-nav__item> <a href=../end/ class=md-nav__link> <span class=md-ellipsis> end </span> </a> </li> <li class=md-nav__item> <a href=../end_pos/ class=md-nav__link> <span class=md-ellipsis> end_pos </span> </a> </li> <li class="md-nav__item md-nav__item--active"> <input class="md-nav__toggle md-toggle" type=checkbox id=__toc> <label class="md-nav__link md-nav__link--active" for=__toc> <span class=md-ellipsis> erase </span> <span class="md-nav__icon md-icon"></span> </label> <a href=./ class="md-nav__link md-nav__link--active"> <span class=md-ellipsis> erase </span> </a> <nav class="md-nav md-nav--secondary" aria-label="Table of contents"> <label class=md-nav__title for=__toc> <span class="md-nav__icon md-icon"></span> Table of contents </label> <ul class=md-nav__list data-md-component=toc data-md-scrollfix> <li class=md-nav__item> <a href=#template-parameters class=md-nav__link> <span class=md-ellipsis> Template parameters </span> </a> </li> <li class=md-nav__item> <a href=#parameters class=md-nav__link> <span class=md-ellipsis> Parameters </span> </a> </li> <li class=md-nav__item> <a href=#return-value class=md-nav__link> <span class=md-ellipsis> Return value </span> </a> </li> <li class=md-nav__item> <a href=#exception-safety class=md-nav__link> <span class=md-ellipsis> Exception safety </span> </a> </li> <li class=md-nav__item> <a href=#exceptions class=md-nav__link> <span class=md-ellipsis> Exceptions </span> </a> </li> <li class=md-nav__item> <a href=#complexity class=md-nav__link> <span class=md-ellipsis> Complexity </span> </a> </li> <li class=md-nav__item> <a href=#notes class=md-nav__link> <span class=md-ellipsis> Notes </span> </a> </li> <li class=md-nav__item> <a href=#examples class=md-nav__link> <span class=md-ellipsis> Examples </span> </a> </li> <li class=md-nav__item> <a href=#version-history class=md-nav__link> <span class=md-ellipsis> Version history </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../error_handler_t/ class=md-nav__link> <span class=md-ellipsis> error_handler_t </span> </a> </li> <li class=md-nav__item> <a href=../exception/ class=md-nav__link> <span class=md-ellipsis> exception </span> </a> </li> <li class=md-nav__item> <a href=../find/ class=md-nav__link> <span class=md-ellipsis> find </span> </a> </li> <li class=md-nav__item> <a href=../flatten/ class=md-nav__link> <span class=md-ellipsis> flatten </span> </a> </li> <li class=md-nav__item> <a href=../from_bjdata/ class=md-nav__link> <span class=md-ellipsis> from_bjdata </span> </a> </li> <li class=md-nav__item> <a href=../from_bson/ class=md-nav__link> <span class=md-ellipsis> from_bson </span> </a> </li> <li class=md-nav__item> <a href=../from_cbor/ class=md-nav__link> <span class=md-ellipsis> from_cbor </span> </a> </li> <li class=md-nav__item> <a href=../from_msgpack/ class=md-nav__link> <span class=md-ellipsis> from_msgpack </span> </a> </li> <li class=md-nav__item> <a href=../from_ubjson/ class=md-nav__link> <span class=md-ellipsis> from_ubjson </span> </a> </li> <li class=md-nav__item> <a href=../front/ class=md-nav__link> <span class=md-ellipsis> front </span> </a> </li> <li class=md-nav__item> <a href=../get/ class=md-nav__link> <span class=md-ellipsis> get </span> </a> </li> <li class=md-nav__item> <a href=../get_allocator/ class=md-nav__link> <span class=md-ellipsis> get_allocator </span> </a> </li> <li class=md-nav__item> <a href=../get_binary/ class=md-nav__link> <span class=md-ellipsis> get_binary </span> </a> </li> <li class=md-nav__item> <a href=../get_ptr/ class=md-nav__link> <span class=md-ellipsis> get_ptr </span> </a> </li> <li class=md-nav__item> <a href=../get_ref/ class=md-nav__link> <span class=md-ellipsis> get_ref </span> </a> </li> <li class=md-nav__item> <a href=../get_to/ class=md-nav__link> <span class=md-ellipsis> get_to </span> </a> </li> <li class=md-nav__item> <a href=../std_hash/ class=md-nav__link> <span class=md-ellipsis> std::hash&lt;basic_json&gt; </span> </a> </li> <li class=md-nav__item> <a href=../input_format_t/ class=md-nav__link> <span class=md-ellipsis> input_format_t </span> </a> </li> <li class=md-nav__item> <a href=../insert/ class=md-nav__link> <span class=md-ellipsis> insert </span> </a> </li> <li class=md-nav__item> <a href=../invalid_iterator/ class=md-nav__link> <span class=md-ellipsis> invalid_iterator </span> </a> </li> <li class=md-nav__item> <a href=../is_array/ class=md-nav__link> <span class=md-ellipsis> is_array </span> </a> </li> <li class=md-nav__item> <a href=../is_binary/ class=md-nav__link> <span class=md-ellipsis> is_binary </span> </a> </li> <li class=md-nav__item> <a href=../is_boolean/ class=md-nav__link> <span class=md-ellipsis> is_boolean </span> </a> </li> <li class=md-nav__item> <a href=../is_discarded/ class=md-nav__link> <span class=md-ellipsis> is_discarded </span> </a> </li> <li class=md-nav__item> <a href=../is_null/ class=md-nav__link> <span class=md-ellipsis> is_null </span> </a> </li> <li class=md-nav__item> <a href=../is_number/ class=md-nav__link> <span class=md-ellipsis> is_number </span> </a> </li> <li class=md-nav__item> <a href=../is_number_float/ class=md-nav__link> <span class=md-ellipsis> is_number_float </span> </a> </li> <li class=md-nav__item> <a href=../is_number_integer/ class=md-nav__link> <span class=md-ellipsis> is_number_integer </span> </a> </li> <li class=md-nav__item> <a href=../is_number_unsigned/ class=md-nav__link> <span class=md-ellipsis> is_number_unsigned </span> </a> </li> <li class=md-nav__item> <a href=../is_object/ class=md-nav__link> <span class=md-ellipsis> is_object </span> </a> </li> <li class=md-nav__item> <a href=../is_primitive/ class=md-nav__link> <span class=md-ellipsis> is_primitive </span> </a> </li> <li class=md-nav__item> <a href=../is_string/ class=md-nav__link> <span class=md-ellipsis> is_string </span> </a> </li> <li class=md-nav__item> <a href=../is_structured/ class=md-nav__link> <span class=md-ellipsis> is_structured </span> </a> </li> <li class=md-nav__item> <a href=../items/ class=md-nav__link> <span class=md-ellipsis> items </span> </a> </li> <li class=md-nav__item> <a href=../json_base_class_t/ class=md-nav__link> <span class=md-ellipsis> json_base_class_t </span> </a> </li> <li class=md-nav__item> <a href=../json_serializer/ class=md-nav__link> <span class=md-ellipsis> json_serializer </span> </a> </li> <li class=md-nav__item> <a href=../max_size/ class=md-nav__link> <span class=md-ellipsis> max_size </span> </a> </li> <li class=md-nav__item> <a href=../meta/ class=md-nav__link> <span class=md-ellipsis> meta </span> </a> </li> <li class=md-nav__item> <a href=../merge_patch/ class=md-nav__link> <span class=md-ellipsis> merge_patch </span> </a> </li> <li class=md-nav__item> <a href=../number_float_t/ class=md-nav__link> <span class=md-ellipsis> number_float_t </span> </a> </li> <li class=md-nav__item> <a href=../number_integer_t/ class=md-nav__link> <span class=md-ellipsis> number_integer_t </span> </a> </li> <li class=md-nav__item> <a href=../number_unsigned_t/ class=md-nav__link> <span class=md-ellipsis> number_unsigned_t </span> </a> </li> <li class=md-nav__item> <a href=../object/ class=md-nav__link> <span class=md-ellipsis> object </span> </a> </li> <li class=md-nav__item> <a href=../object_comparator_t/ class=md-nav__link> <span class=md-ellipsis> object_comparator_t </span> </a> </li> <li class=md-nav__item> <a href=../object_t/ class=md-nav__link> <span class=md-ellipsis> object_t </span> </a> </li> <li class=md-nav__item> <a href=../operator_ValueType/ class=md-nav__link> <span class=md-ellipsis> operator ValueType </span> </a> </li> <li class=md-nav__item> <a href=../operator_value_t/ class=md-nav__link> <span class=md-ellipsis> operator value_t </span> </a> </li> <li class=md-nav__item> <a href=../operator%5B%5D/ class=md-nav__link> <span class=md-ellipsis> operator[] </span> </a> </li> <li class=md-nav__item> <a href=../operator%3D/ class=md-nav__link> <span class=md-ellipsis> operator= </span> </a> </li> <li class=md-nav__item> <a href=../operator%2B%3D/ class=md-nav__link> <span class=md-ellipsis> operator+= </span> </a> </li> <li class=md-nav__item> <a href=../operator_eq/ class=md-nav__link> <span class=md-ellipsis> operator== </span> </a> </li> <li class=md-nav__item> <a href=../operator_ne/ class=md-nav__link> <span class=md-ellipsis> operator!= </span> </a> </li> <li class=md-nav__item> <a href=../operator_lt/ class=md-nav__link> <span class=md-ellipsis> operator< </span> </a> </li> <li class=md-nav__item> <a href=../operator_gt/ class=md-nav__link> <span class=md-ellipsis> operator> </span> </a> </li> <li class=md-nav__item> <a href=../operator_le/ class=md-nav__link> <span class=md-ellipsis> operator<= </span> </a> </li> <li class=md-nav__item> <a href=../operator_ge/ class=md-nav__link> <span class=md-ellipsis> operator>= </span> </a> </li> <li class=md-nav__item> <a href=../operator_spaceship/ class=md-nav__link> <span class=md-ellipsis> operator<=> </span> </a> </li> <li class=md-nav__item> <a href=../out_of_range/ class=md-nav__link> <span class=md-ellipsis> out_of_range </span> </a> </li> <li class=md-nav__item> <a href=../other_error/ class=md-nav__link> <span class=md-ellipsis> other_error </span> </a> </li> <li class=md-nav__item> <a href=../parse/ class=md-nav__link> <span class=md-ellipsis> parse </span> </a> </li> <li class=md-nav__item> <a href=../parse_error/ class=md-nav__link> <span class=md-ellipsis> parse_error </span> </a> </li> <li class=md-nav__item> <a href=../parse_event_t/ class=md-nav__link> <span class=md-ellipsis> parse_event_t </span> </a> </li> <li class=md-nav__item> <a href=../parser_callback_t/ class=md-nav__link> <span class=md-ellipsis> parser_callback_t </span> </a> </li> <li class=md-nav__item> <a href=../patch/ class=md-nav__link> <span class=md-ellipsis> patch </span> </a> </li> <li class=md-nav__item> <a href=../patch_inplace/ class=md-nav__link> <span class=md-ellipsis> patch_inplace </span> </a> </li> <li class=md-nav__item> <a href=../push_back/ class=md-nav__link> <span class=md-ellipsis> push_back </span> </a> </li> <li class=md-nav__item> <a href=../rbegin/ class=md-nav__link> <span class=md-ellipsis> rbegin </span> </a> </li> <li class=md-nav__item> <a href=../rend/ class=md-nav__link> <span class=md-ellipsis> rend </span> </a> </li> <li class=md-nav__item> <a href=../sax_parse/ class=md-nav__link> <span class=md-ellipsis> sax_parse </span> </a> </li> <li class=md-nav__item> <a href=../size/ class=md-nav__link> <span class=md-ellipsis> size </span> </a> </li> <li class=md-nav__item> <a href=../start_pos/ class=md-nav__link> <span class=md-ellipsis> start_pos </span> </a> </li> <li class=md-nav__item> <a href=../string_t/ class=md-nav__link> <span class=md-ellipsis> string_t </span> </a> </li> <li class=md-nav__item> <a href=../swap/ class=md-nav__link> <span class=md-ellipsis> swap </span> </a> </li> <li class=md-nav__item> <a href=../std_swap/ class=md-nav__link> <span class=md-ellipsis> std::swap&lt;basic_json&gt; </span> </a> </li> <li class=md-nav__item> <a href=../to_bjdata/ class=md-nav__link> <span class=md-ellipsis> to_bjdata </span> </a> </li> <li class=md-nav__item> <a href=../to_bson/ class=md-nav__link> <span class=md-ellipsis> to_bson </span> </a> </li> <li class=md-nav__item> <a href=../to_cbor/ class=md-nav__link> <span class=md-ellipsis> to_cbor </span> </a> </li> <li class=md-nav__item> <a href=../to_msgpack/ class=md-nav__link> <span class=md-ellipsis> to_msgpack </span> </a> </li> <li class=md-nav__item> <a href=../to_string/ class=md-nav__link> <span class=md-ellipsis> to_string </span> </a> </li> <li class=md-nav__item> <a href=../to_ubjson/ class=md-nav__link> <span class=md-ellipsis> to_ubjson </span> </a> </li> <li class=md-nav__item> <a href=../type/ class=md-nav__link> <span class=md-ellipsis> type </span> </a> </li> <li class=md-nav__item> <a href=../type_error/ class=md-nav__link> <span class=md-ellipsis> type_error </span> </a> </li> <li class=md-nav__item> <a href=../type_name/ class=md-nav__link> <span class=md-ellipsis> type_name </span> </a> </li> <li class=md-nav__item> <a href=../unflatten/ class=md-nav__link> <span class=md-ellipsis> unflatten </span> </a> </li> <li class=md-nav__item> <a href=../update/ class=md-nav__link> <span class=md-ellipsis> update </span> </a> </li> <li class=md-nav__item> <a href=../value/ class=md-nav__link> <span class=md-ellipsis> value </span> </a> </li> <li class=md-nav__item> <a href=../value_t/ class=md-nav__link> <span class=md-ellipsis> value_t </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_2> <div class="md-nav__link md-nav__container"> <a href=../../byte_container_with_subtype/ class="md-nav__link "> <span class=md-ellipsis> byte_container_with_subtype </span> </a> <label class="md-nav__link " for=__nav_4_2 id=__nav_4_2_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_2_label aria-expanded=false> <label class=md-nav__title for=__nav_4_2> <span class="md-nav__icon md-icon"></span> byte_container_with_subtype </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../byte_container_with_subtype/byte_container_with_subtype/ class=md-nav__link> <span class=md-ellipsis> (constructor) </span> </a> </li> <li class=md-nav__item> <a href=../../byte_container_with_subtype/clear_subtype/ class=md-nav__link> <span class=md-ellipsis> clear_subtype </span> </a> </li> <li class=md-nav__item> <a href=../../byte_container_with_subtype/has_subtype/ class=md-nav__link> <span class=md-ellipsis> has_subtype </span> </a> </li> <li class=md-nav__item> <a href=../../byte_container_with_subtype/set_subtype/ class=md-nav__link> <span class=md-ellipsis> set_subtype </span> </a> </li> <li class=md-nav__item> <a href=../../byte_container_with_subtype/subtype/ class=md-nav__link> <span class=md-ellipsis> subtype </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_3> <div class="md-nav__link md-nav__container"> <a href=../../adl_serializer/ class="md-nav__link "> <span class=md-ellipsis> adl_serializer </span> </a> <label class="md-nav__link " for=__nav_4_3 id=__nav_4_3_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_3_label aria-expanded=false> <label class=md-nav__title for=__nav_4_3> <span class="md-nav__icon md-icon"></span> adl_serializer </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../adl_serializer/from_json/ class=md-nav__link> <span class=md-ellipsis> from_json </span> </a> </li> <li class=md-nav__item> <a href=../../adl_serializer/to_json/ class=md-nav__link> <span class=md-ellipsis> to_json </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../json/ class=md-nav__link> <span class=md-ellipsis> json </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_5> <div class="md-nav__link md-nav__container"> <a href=../../json_pointer/ class="md-nav__link "> <span class=md-ellipsis> json_pointer </span> </a> <label class="md-nav__link " for=__nav_4_5 id=__nav_4_5_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_5_label aria-expanded=false> <label class=md-nav__title for=__nav_4_5> <span class="md-nav__icon md-icon"></span> json_pointer </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../json_pointer/json_pointer/ class=md-nav__link> <span class=md-ellipsis> (Constructor) </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/back/ class=md-nav__link> <span class=md-ellipsis> back </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/empty/ class=md-nav__link> <span class=md-ellipsis> empty </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/front/ class=md-nav__link> <span class=md-ellipsis> front </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_string_t/ class=md-nav__link> <span class=md-ellipsis> operator string_t </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_eq/ class=md-nav__link> <span class=md-ellipsis> operator== </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_ne/ class=md-nav__link> <span class=md-ellipsis> operator!= </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_slash/ class=md-nav__link> <span class=md-ellipsis> operator/ </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_slasheq/ class=md-nav__link> <span class=md-ellipsis> operator/= </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/parent_pointer/ class=md-nav__link> <span class=md-ellipsis> parent_pointer </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/pop_back/ class=md-nav__link> <span class=md-ellipsis> pop_back </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/pop_front/ class=md-nav__link> <span class=md-ellipsis> pop_front </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/push_back/ class=md-nav__link> <span class=md-ellipsis> push_back </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/push_front/ class=md-nav__link> <span class=md-ellipsis> push_front </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/string_t/ class=md-nav__link> <span class=md-ellipsis> string_t </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/to_string/ class=md-nav__link> <span class=md-ellipsis> to_string </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_6> <div class="md-nav__link md-nav__container"> <a href=../../json_sax/ class="md-nav__link "> <span class=md-ellipsis> json_sax </span> </a> <label class="md-nav__link " for=__nav_4_6 id=__nav_4_6_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_6_label aria-expanded=false> <label class=md-nav__title for=__nav_4_6> <span class="md-nav__icon md-icon"></span> json_sax </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../json_sax/binary/ class=md-nav__link> <span class=md-ellipsis> binary </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/boolean/ class=md-nav__link> <span class=md-ellipsis> boolean </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/end_array/ class=md-nav__link> <span class=md-ellipsis> end_array </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/end_object/ class=md-nav__link> <span class=md-ellipsis> end_object </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/key/ class=md-nav__link> <span class=md-ellipsis> key </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/null/ class=md-nav__link> <span class=md-ellipsis> null </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/number_float/ class=md-nav__link> <span class=md-ellipsis> number_float </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/number_integer/ class=md-nav__link> <span class=md-ellipsis> number_integer </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/number_unsigned/ class=md-nav__link> <span class=md-ellipsis> number_unsigned </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/parse_error/ class=md-nav__link> <span class=md-ellipsis> parse_error </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/start_array/ class=md-nav__link> <span class=md-ellipsis> start_array </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/start_object/ class=md-nav__link> <span class=md-ellipsis> start_object </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/string/ class=md-nav__link> <span class=md-ellipsis> string </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../operator_ltlt/ class=md-nav__link> <span class=md-ellipsis> operator<<(basic_json), operator<<(json_pointer) </span> </a> </li> <li class=md-nav__item> <a href=../../operator_gtgt/ class=md-nav__link> <span class=md-ellipsis> operator>>(basic_json) </span> </a> </li> <li class=md-nav__item> <a href=../../operator_literal_json/ class=md-nav__link> <span class=md-ellipsis> operator""_json </span> </a> </li> <li class=md-nav__item> <a href=../../operator_literal_json_pointer/ class=md-nav__link> <span class=md-ellipsis> operator""_json_pointer </span> </a> </li> <li class=md-nav__item> <a href=../../ordered_json/ class=md-nav__link> <span class=md-ellipsis> ordered_json </span> </a> </li> <li class=md-nav__item> <a href=../../ordered_map/ class=md-nav__link> <span class=md-ellipsis> ordered_map </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_13> <div class="md-nav__link md-nav__container"> <a href=../../macros/ class="md-nav__link "> <span class=md-ellipsis> macros </span> </a> <label class="md-nav__link " for=__nav_4_13 id=__nav_4_13_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_13_label aria-expanded=false> <label class=md-nav__title for=__nav_4_13> <span class="md-nav__icon md-icon"></span> macros </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../macros/json_assert/ class=md-nav__link> <span class=md-ellipsis> JSON_ASSERT </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_brace_init_copy_semantics/ class=md-nav__link> <span class=md-ellipsis> JSON_BRACE_INIT_COPY_SEMANTICS </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_throw_user/ class=md-nav__link> <span class=md-ellipsis> JSON_CATCH_USER, JSON_THROW_USER, JSON_TRY_USER </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_diagnostics/ class=md-nav__link> <span class=md-ellipsis> JSON_DIAGNOSTICS </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_diagnostic_positions/ class=md-nav__link> <span class=md-ellipsis> JSON_DIAGNOSTIC_POSITIONS </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_disable_enum_serialization/ class=md-nav__link> <span class=md-ellipsis> JSON_DISABLE_ENUM_SERIALIZATION </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_has_cpp_11/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_CPP_11, JSON_HAS_CPP_14, JSON_HAS_CPP_17, JSON_HAS_CPP_20 </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_has_filesystem/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_EXPERIMENTAL_FILESYSTEM, JSON_HAS_FILESYSTEM </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_has_ranges/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_RANGES </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_has_static_rtti/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_STATIC_RTTI </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_has_three_way_comparison/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_THREE_WAY_COMPARISON </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_noexception/ class=md-nav__link> <span class=md-ellipsis> JSON_NOEXCEPTION </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_no_io/ class=md-nav__link> <span class=md-ellipsis> JSON_NO_IO </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_skip_library_version_check/ class=md-nav__link> <span class=md-ellipsis> JSON_SKIP_LIBRARY_VERSION_CHECK </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_skip_unsupported_compiler_check/ class=md-nav__link> <span class=md-ellipsis> JSON_SKIP_UNSUPPORTED_COMPILER_CHECK </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_use_global_udls/ class=md-nav__link> <span class=md-ellipsis> JSON_USE_GLOBAL_UDLS </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_use_implicit_conversions/ class=md-nav__link> <span class=md-ellipsis> JSON_USE_IMPLICIT_CONVERSIONS </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_use_legacy_discarded_value_comparison/ class=md-nav__link> <span class=md-ellipsis> JSON_USE_LEGACY_DISCARDED_VALUE_COMPARISON </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_define_derived_type/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_ONLY_SERIALIZE, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_define_type_intrusive/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_TYPE_INTRUSIVE, NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_TYPE_INTRUSIVE_ONLY_SERIALIZE </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_define_type_non_intrusive/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_define_type_with_names/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_TYPE_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_namespace/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_NAMESPACE </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_namespace_begin/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_NAMESPACE_BEGIN, NLOHMANN_JSON_NAMESPACE_END </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_namespace_no_version/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_NAMESPACE_NO_VERSION </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_serialize_enum/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_SERIALIZE_ENUM </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_serialize_enum_strict/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_SERIALIZE_ENUM_STRICT </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_version_major/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_VERSION_MAJOR, NLOHMANN_JSON_VERSION_MINOR, NLOHMANN_JSON_VERSION_PATCH </span> </a> </li> </ul> </nav> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_5> <div class="md-nav__link md-nav__container"> <a href=../../../community/ class="md-nav__link "> <span class=md-ellipsis> Community </span> </a> <label class="md-nav__link " for=__nav_5 id=__nav_5_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_5_label aria-expanded=false> <label class=md-nav__title for=__nav_5> <span class="md-nav__icon md-icon"></span> Community </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../community/code_of_conduct/ class=md-nav__link> <span class=md-ellipsis> Code of Conduct </span> </a> </li> <li class=md-nav__item> <a href=../../../community/contribution_guidelines/ class=md-nav__link> <span class=md-ellipsis> Contribution Guidelines </span> </a> </li> <li class=md-nav__item> <a href=../../../community/quality_assurance/ class=md-nav__link> <span class=md-ellipsis> Quality assurance </span> </a> </li> <li class=md-nav__item> <a href=../../../community/governance/ class=md-nav__link> <span class=md-ellipsis> Governance </span> </a> </li> <li class=md-nav__item> <a href=../../../community/security_policy/ class=md-nav__link> <span class=md-ellipsis> Security Policy </span> </a> </li> </ul> </nav> </li> </ul> </nav> </div> </div> </div> <div class="md-sidebar md-sidebar--secondary" data-md-component=sidebar data-md-type=toc> <div class=md-sidebar__scrollwrap> <div class=md-sidebar__inner> <nav class="md-nav md-nav--secondary" aria-label="Table of contents"> <label class=md-nav__title for=__toc> <span class="md-nav__icon md-icon"></span> Table of contents </label> <ul class=md-nav__list data-md-component=toc data-md-scrollfix> <li class=md-nav__item> <a href=#template-parameters class=md-nav__link> <span class=md-ellipsis> Template parameters </span> </a> </li> <li class=md-nav__item> <a href=#parameters class=md-nav__link> <span class=md-ellipsis> Parameters </span> </a> </li> <li class=md-nav__item> <a href=#return-value class=md-nav__link> <span class=md-ellipsis> Return value </span> </a> </li> <li class=md-nav__item> <a href=#exception-safety class=md-nav__link> <span class=md-ellipsis> Exception safety </span> </a> </li> <li class=md-nav__item> <a href=#exceptions class=md-nav__link> <span class=md-ellipsis> Exceptions </span> </a> </li> <li class=md-nav__item> <a href=#complexity class=md-nav__link> <span class=md-ellipsis> Complexity </span> </a> </li> <li class=md-nav__item> <a href=#notes class=md-nav__link> <span class=md-ellipsis> Notes </span> </a> </li> <li class=md-nav__item> <a href=#examples class=md-nav__link> <span class=md-ellipsis> Examples </span> </a> </li> <li class=md-nav__item> <a href=#version-history class=md-nav__link> <span class=md-ellipsis> Version history </span> </a> </li> </ul> </nav> </div> </div> </div> <div class=md-content data-md-component=content> <article class="md-content__inner md-typeset"> <a href="https://github.com/nlohmann/json/edit/develop/docs/mkdocs/docs/api/basic_json/erase.md" title="Edit this page" class="md-content__button md-icon" rel="edit"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M10 20H6V4h7v5h5v3.1l2-2V8l-6-6H6c-1.1 0-2 .9-2 2v16c0 1.1.9 2 2 2h4zm10.2-7c.1 0 .3.1.4.2l1.3 1.3c.2.2.2.6 0 .8l-1 1-2.1-2.1 1-1c.1-.1.2-.2.4-.2m0 3.9L14.1 23H12v-2.1l6.1-6.1z"/></svg> </a> <a href="https://github.com/nlohmann/json/raw/develop/docs/mkdocs/docs/api/basic_json/erase.md" title="View source of this page" class="md-content__button md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M17 18c.56 0 1 .44 1 1s-.44 1-1 1-1-.44-1-1 .44-1 1-1m0-3c-2.73 0-5.06 1.66-6 4 .94 2.34 3.27 4 6 4s5.06-1.66 6-4c-.94-2.34-3.27-4-6-4m0 6.5a2.5 2.5 0 0 1-2.5-2.5 2.5 2.5 0 0 1 2.5-2.5 2.5 2.5 0 0 1 2.5 2.5 2.5 2.5 0 0 1-2.5 2.5M9.27 20H6V4h7v5h5v4.07c.7.08 1.36.25 2 .49V8l-6-6H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h4.5a8.2 8.2 0 0 1-1.23-2"/></svg> </a> <h1 id=nlohmannbasic_jsonerase><small>nlohmann::basic_json::</small>erase<a class=headerlink href=#nlohmannbasic_jsonerase title="Permanent link">&para;</a></h1> <div class=highlight><pre><span></span><code><span class=c1>// (1)</span>
+<!doctype html><html lang=en class=no-js> <head><meta charset=utf-8><meta name=viewport content="width=device-width,initial-scale=1"><meta name=author content="Niels Lohmann"><link href="https://json.nlohmann.me/api/basic_json/erase/" rel="canonical"><link href=../end_pos/ rel=prev><link href=../error_handler_t/ rel=next><link rel=icon href=../../../assets/images/favicon.png><meta name=generator content="mkdocs-1.6.1, mkdocs-material-9.7.6"><title>erase - JSON for Modern C++</title><link rel=stylesheet href=../../../assets/stylesheets/main.484c7ddc.min.css><link rel=stylesheet href=../../../assets/stylesheets/palette.ab4e12ef.min.css><link rel="stylesheet" href="../../../assets/external/fonts.googleapis.com/css.61a430c9.css"><style>:root{--md-text-font:"Roboto";--md-code-font:"JetBrains Mono"}</style><link rel=stylesheet href=../../../css/custom.css><script>__md_scope=new URL("../../..",location),__md_hash=e=>[...e].reduce(((e,_)=>(e<<5)-e+_.charCodeAt(0)),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script></head> <body dir=ltr data-md-color-scheme=default data-md-color-primary=indigo data-md-color-accent=indigo> <input class=md-toggle data-md-toggle=drawer type=checkbox id=__drawer autocomplete=off> <input class=md-toggle data-md-toggle=search type=checkbox id=__search autocomplete=off> <label class=md-overlay for=__drawer></label> <div data-md-component=skip> <a href=#nlohmannbasic_jsonerase class=md-skip> Skip to content </a> </div> <div data-md-component=announce> </div> <header class=md-header data-md-component=header> <nav class="md-header__inner md-grid" aria-label=Header> <a href=../../.. title="JSON for Modern C++" class="md-header__button md-logo" aria-label="JSON for Modern C++" data-md-component=logo> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54"/></svg> </a> <label class="md-header__button md-icon" for=__drawer> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M3 6h18v2H3zm0 5h18v2H3zm0 5h18v2H3z"/></svg> </label> <div class=md-header__title data-md-component=header-title> <div class=md-header__ellipsis> <div class=md-header__topic> <span class=md-ellipsis> JSON for Modern C++ </span> </div> <div class=md-header__topic data-md-component=header-topic> <span class=md-ellipsis> erase </span> </div> </div> </div> <form class=md-header__option data-md-component=palette> <input class=md-option data-md-color-media="(prefers-color-scheme: light)" data-md-color-scheme=default data-md-color-primary=indigo data-md-color-accent=indigo aria-label="Switch to dark mode" type=radio name=__palette id=__palette_0> <label class="md-header__button md-icon" title="Switch to dark mode" for=__palette_1 hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a4 4 0 0 0-4 4 4 4 0 0 0 4 4 4 4 0 0 0 4-4 4 4 0 0 0-4-4m0 10a6 6 0 0 1-6-6 6 6 0 0 1 6-6 6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12z"/></svg> </label> <input class=md-option data-md-color-media="(prefers-color-scheme: dark)" data-md-color-scheme=slate data-md-color-primary=indigo data-md-color-accent=indigo aria-label="Switch to light mode" type=radio name=__palette id=__palette_1> <label class="md-header__button md-icon" title="Switch to light mode" for=__palette_0 hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 18c-.89 0-1.74-.2-2.5-.55C11.56 16.5 13 14.42 13 12s-1.44-4.5-3.5-5.45C10.26 6.2 11.11 6 12 6a6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12z"/></svg> </label> </form> <script>var palette=__md_get("__palette");if(palette&&palette.color){if("(prefers-color-scheme)"===palette.color.media){var media=matchMedia("(prefers-color-scheme: light)"),input=document.querySelector(media.matches?"[data-md-color-media='(prefers-color-scheme: light)']":"[data-md-color-media='(prefers-color-scheme: dark)']");palette.color.media=input.getAttribute("data-md-color-media"),palette.color.scheme=input.getAttribute("data-md-color-scheme"),palette.color.primary=input.getAttribute("data-md-color-primary"),palette.color.accent=input.getAttribute("data-md-color-accent")}for(var[key,value]of Object.entries(palette.color))document.body.setAttribute("data-md-color-"+key,value)}</script> <label class="md-header__button md-icon" for=__search> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg> </label> <div class=md-search data-md-component=search role=dialog> <label class=md-search__overlay for=__search></label> <div class=md-search__inner role=search> <form class=md-search__form name=search> <input type=text class=md-search__input name=query aria-label=Search placeholder=Search autocapitalize=off autocorrect=off autocomplete=off spellcheck=false data-md-component=search-query required> <label class="md-search__icon md-icon" for=__search> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11z"/></svg> </label> <nav class=md-search__options aria-label=Search> <button type=reset class="md-search__icon md-icon" title=Clear aria-label=Clear tabindex=-1> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z"/></svg> </button> </nav> </form> <div class=md-search__output> <div class=md-search__scrollwrap tabindex=0 data-md-scrollfix> <div class=md-search-result data-md-component=search-result> <div class=md-search-result__meta> Initializing search </div> <ol class=md-search-result__list role=presentation></ol> </div> </div> </div> </div> </div> <div class=md-header__source> <a href="https://github.com/nlohmann/json" title="Go to repository" class="md-source" data-md-component="source"> <div class="md-source__icon md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </div> <div class=md-source__repository> nlohmann/json </div> </a> </div> </nav> </header> <div class=md-container data-md-component=container> <nav class=md-tabs aria-label=Tabs data-md-component=tabs> <div class=md-grid> <ul class=md-tabs__list> <li class=md-tabs__item> <a href=../../.. class=md-tabs__link> Home </a> </li> <li class=md-tabs__item> <a href=../../../features/arbitrary_types/ class=md-tabs__link> Features </a> </li> <li class=md-tabs__item> <a href=../../../integration/ class=md-tabs__link> Integration </a> </li> <li class="md-tabs__item md-tabs__item--active"> <a href=../ class=md-tabs__link> API Documentation </a> </li> <li class=md-tabs__item> <a href=../../../community/ class=md-tabs__link> Community </a> </li> </ul> </div> </nav> <main class=md-main data-md-component=main> <div class="md-main__inner md-grid"> <div class="md-sidebar md-sidebar--primary" data-md-component=sidebar data-md-type=navigation> <div class=md-sidebar__scrollwrap> <div class=md-sidebar__inner> <nav class="md-nav md-nav--primary md-nav--lifted" aria-label=Navigation data-md-level=0> <label class=md-nav__title for=__drawer> <a href=../../.. title="JSON for Modern C++" class="md-nav__button md-logo" aria-label="JSON for Modern C++" data-md-component=logo> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54"/></svg> </a> JSON for Modern C++ </label> <div class=md-nav__source> <a href="https://github.com/nlohmann/json" title="Go to repository" class="md-source" data-md-component="source"> <div class="md-source__icon md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </div> <div class=md-source__repository> nlohmann/json </div> </a> </div> <ul class=md-nav__list data-md-scrollfix> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_1> <div class="md-nav__link md-nav__container"> <a href=../../.. class="md-nav__link "> <span class=md-ellipsis> Home </span> </a> <label class="md-nav__link " for=__nav_1 id=__nav_1_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_1_label aria-expanded=false> <label class=md-nav__title for=__nav_1> <span class="md-nav__icon md-icon"></span> Home </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../home/license/ class=md-nav__link> <span class=md-ellipsis> License </span> </a> </li> <li class=md-nav__item> <a href=../../../home/faq/ class=md-nav__link> <span class=md-ellipsis> FAQ </span> </a> </li> <li class=md-nav__item> <a href=../../../home/exceptions/ class=md-nav__link> <span class=md-ellipsis> Exceptions </span> </a> </li> <li class=md-nav__item> <a href=../../../home/releases/ class=md-nav__link> <span class=md-ellipsis> Releases </span> </a> </li> <li class=md-nav__item> <a href=../../../home/design_goals/ class=md-nav__link> <span class=md-ellipsis> Design goals </span> </a> </li> <li class=md-nav__item> <a href=../../../home/architecture/ class=md-nav__link> <span class=md-ellipsis> Architecture </span> </a> </li> <li class=md-nav__item> <a href=../../../home/customers/ class=md-nav__link> <span class=md-ellipsis> Customers </span> </a> </li> <li class=md-nav__item> <a href=../../../home/sponsors/ class=md-nav__link> <span class=md-ellipsis> Sponsors </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2> <label class=md-nav__link for=__nav_2 id=__nav_2_label tabindex=0> <span class=md-ellipsis> Features </span> <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_2_label aria-expanded=false> <label class=md-nav__title for=__nav_2> <span class="md-nav__icon md-icon"></span> Features </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/arbitrary_types/ class=md-nav__link> <span class=md-ellipsis> Arbitrary Type Conversions </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_2> <div class="md-nav__link md-nav__container"> <a href=../../../features/binary_formats/ class="md-nav__link "> <span class=md-ellipsis> Binary Formats </span> </a> <label class="md-nav__link " for=__nav_2_2 id=__nav_2_2_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_2_label aria-expanded=false> <label class=md-nav__title for=__nav_2_2> <span class="md-nav__icon md-icon"></span> Binary Formats </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/binary_formats/bjdata/ class=md-nav__link> <span class=md-ellipsis> BJData </span> </a> </li> <li class=md-nav__item> <a href=../../../features/binary_formats/bson/ class=md-nav__link> <span class=md-ellipsis> BSON </span> </a> </li> <li class=md-nav__item> <a href=../../../features/binary_formats/cbor/ class=md-nav__link> <span class=md-ellipsis> CBOR </span> </a> </li> <li class=md-nav__item> <a href=../../../features/binary_formats/messagepack/ class=md-nav__link> <span class=md-ellipsis> MessagePack </span> </a> </li> <li class=md-nav__item> <a href=../../../features/binary_formats/ubjson/ class=md-nav__link> <span class=md-ellipsis> UBJSON </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../../features/binary_values/ class=md-nav__link> <span class=md-ellipsis> Binary Values </span> </a> </li> <li class=md-nav__item> <a href=../../../features/comments/ class=md-nav__link> <span class=md-ellipsis> Comments </span> </a> </li> <li class=md-nav__item> <a href=../../../features/trailing_commas/ class=md-nav__link> <span class=md-ellipsis> Trailing Commas </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_6> <div class="md-nav__link md-nav__container"> <a href=../../../features/element_access/ class="md-nav__link "> <span class=md-ellipsis> Element Access </span> </a> <label class="md-nav__link " for=__nav_2_6 id=__nav_2_6_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_6_label aria-expanded=false> <label class=md-nav__title for=__nav_2_6> <span class="md-nav__icon md-icon"></span> Element Access </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/element_access/unchecked_access/ class=md-nav__link> <span class=md-ellipsis> Unchecked access: operator[] </span> </a> </li> <li class=md-nav__item> <a href=../../../features/element_access/checked_access/ class=md-nav__link> <span class=md-ellipsis> Checked access: at </span> </a> </li> <li class=md-nav__item> <a href=../../../features/element_access/default_value/ class=md-nav__link> <span class=md-ellipsis> Access with default value: value </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../../features/iterators/ class=md-nav__link> <span class=md-ellipsis> Iterators </span> </a> </li> <li class=md-nav__item> <a href=../../../features/json_pointer/ class=md-nav__link> <span class=md-ellipsis> JSON Pointer </span> </a> </li> <li class=md-nav__item> <a href=../../../features/json_patch/ class=md-nav__link> <span class=md-ellipsis> JSON Patch and Diff </span> </a> </li> <li class=md-nav__item> <a href=../../../features/merge_patch/ class=md-nav__link> <span class=md-ellipsis> JSON Merge Patch </span> </a> </li> <li class=md-nav__item> <a href=../../../features/modules/ class=md-nav__link> <span class=md-ellipsis> Modules </span> </a> </li> <li class=md-nav__item> <a href=../../../features/namespace/ class=md-nav__link> <span class=md-ellipsis> nlohmann Namespace </span> </a> </li> <li class=md-nav__item> <a href=../../../features/object_order/ class=md-nav__link> <span class=md-ellipsis> Object Order </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_14> <div class="md-nav__link md-nav__container"> <a href=../../../features/parsing/ class="md-nav__link "> <span class=md-ellipsis> Parsing </span> </a> <label class="md-nav__link " for=__nav_2_14 id=__nav_2_14_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_14_label aria-expanded=false> <label class=md-nav__title for=__nav_2_14> <span class="md-nav__icon md-icon"></span> Parsing </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/parsing/json_lines/ class=md-nav__link> <span class=md-ellipsis> JSON Lines </span> </a> </li> <li class=md-nav__item> <a href=../../../features/parsing/parse_exceptions/ class=md-nav__link> <span class=md-ellipsis> Parsing and Exceptions </span> </a> </li> <li class=md-nav__item> <a href=../../../features/parsing/parser_callbacks/ class=md-nav__link> <span class=md-ellipsis> Parser Callbacks </span> </a> </li> <li class=md-nav__item> <a href=../../../features/parsing/sax_interface/ class=md-nav__link> <span class=md-ellipsis> SAX Interface </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../../features/assertions/ class=md-nav__link> <span class=md-ellipsis> Runtime Assertions </span> </a> </li> <li class=md-nav__item> <a href=../../../features/enum_conversion/ class=md-nav__link> <span class=md-ellipsis> Specializing enum conversion </span> </a> </li> <li class=md-nav__item> <a href=../../../features/macros/ class=md-nav__link> <span class=md-ellipsis> Supported Macros </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_18> <div class="md-nav__link md-nav__container"> <a href=../../../features/types/ class="md-nav__link "> <span class=md-ellipsis> Types </span> </a> <label class="md-nav__link " for=__nav_2_18 id=__nav_2_18_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_18_label aria-expanded=false> <label class=md-nav__title for=__nav_2_18> <span class="md-nav__icon md-icon"></span> Types </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/types/number_handling/ class=md-nav__link> <span class=md-ellipsis> Number Handling </span> </a> </li> </ul> </nav> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_3> <div class="md-nav__link md-nav__container"> <a href=../../../integration/ class="md-nav__link "> <span class=md-ellipsis> Integration </span> </a> <label class="md-nav__link " for=__nav_3 id=__nav_3_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_3_label aria-expanded=false> <label class=md-nav__title for=__nav_3> <span class="md-nav__icon md-icon"></span> Integration </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../integration/migration_guide/ class=md-nav__link> <span class=md-ellipsis> Migration Guide </span> </a> </li> <li class=md-nav__item> <a href=../../../integration/cmake/ class=md-nav__link> <span class=md-ellipsis> CMake </span> </a> </li> <li class=md-nav__item> <a href=../../../integration/package_managers/ class=md-nav__link> <span class=md-ellipsis> Package Managers </span> </a> </li> <li class=md-nav__item> <a href=../../../integration/pkg-config/ class=md-nav__link> <span class=md-ellipsis> Pkg-config </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--active md-nav__item--section md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4 checked> <label class=md-nav__link for=__nav_4 id=__nav_4_label tabindex> <span class=md-ellipsis> API Documentation </span> <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_4_label aria-expanded=true> <label class=md-nav__title for=__nav_4> <span class="md-nav__icon md-icon"></span> API Documentation </label> <ul class=md-nav__list data-md-scrollfix> <li class="md-nav__item md-nav__item--active md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_1 checked> <div class="md-nav__link md-nav__container"> <a href=../ class="md-nav__link "> <span class=md-ellipsis> basic_json </span> </a> <label class="md-nav__link " for=__nav_4_1 id=__nav_4_1_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_1_label aria-expanded=true> <label class=md-nav__title for=__nav_4_1> <span class="md-nav__icon md-icon"></span> basic_json </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../basic_json/ class=md-nav__link> <span class=md-ellipsis> (Constructor) </span> </a> </li> <li class=md-nav__item> <a href=../~basic_json/ class=md-nav__link> <span class=md-ellipsis> (Destructor) </span> </a> </li> <li class=md-nav__item> <a href=../accept/ class=md-nav__link> <span class=md-ellipsis> accept </span> </a> </li> <li class=md-nav__item> <a href=../array/ class=md-nav__link> <span class=md-ellipsis> array </span> </a> </li> <li class=md-nav__item> <a href=../array_t/ class=md-nav__link> <span class=md-ellipsis> array_t </span> </a> </li> <li class=md-nav__item> <a href=../at/ class=md-nav__link> <span class=md-ellipsis> at </span> </a> </li> <li class=md-nav__item> <a href=../back/ class=md-nav__link> <span class=md-ellipsis> back </span> </a> </li> <li class=md-nav__item> <a href=../begin/ class=md-nav__link> <span class=md-ellipsis> begin </span> </a> </li> <li class=md-nav__item> <a href=../binary/ class=md-nav__link> <span class=md-ellipsis> binary </span> </a> </li> <li class=md-nav__item> <a href=../binary_t/ class=md-nav__link> <span class=md-ellipsis> binary_t </span> </a> </li> <li class=md-nav__item> <a href=../boolean_t/ class=md-nav__link> <span class=md-ellipsis> boolean_t </span> </a> </li> <li class=md-nav__item> <a href=../cbegin/ class=md-nav__link> <span class=md-ellipsis> cbegin </span> </a> </li> <li class=md-nav__item> <a href=../cbor_tag_handler_t/ class=md-nav__link> <span class=md-ellipsis> cbor_tag_handler_t </span> </a> </li> <li class=md-nav__item> <a href=../cend/ class=md-nav__link> <span class=md-ellipsis> cend </span> </a> </li> <li class=md-nav__item> <a href=../clear/ class=md-nav__link> <span class=md-ellipsis> clear </span> </a> </li> <li class=md-nav__item> <a href=../contains/ class=md-nav__link> <span class=md-ellipsis> contains </span> </a> </li> <li class=md-nav__item> <a href=../count/ class=md-nav__link> <span class=md-ellipsis> count </span> </a> </li> <li class=md-nav__item> <a href=../crbegin/ class=md-nav__link> <span class=md-ellipsis> crbegin </span> </a> </li> <li class=md-nav__item> <a href=../crend/ class=md-nav__link> <span class=md-ellipsis> crend </span> </a> </li> <li class=md-nav__item> <a href=../default_object_comparator_t/ class=md-nav__link> <span class=md-ellipsis> default_object_comparator_t </span> </a> </li> <li class=md-nav__item> <a href=../diff/ class=md-nav__link> <span class=md-ellipsis> diff </span> </a> </li> <li class=md-nav__item> <a href=../dump/ class=md-nav__link> <span class=md-ellipsis> dump </span> </a> </li> <li class=md-nav__item> <a href=../emplace/ class=md-nav__link> <span class=md-ellipsis> emplace </span> </a> </li> <li class=md-nav__item> <a href=../emplace_back/ class=md-nav__link> <span class=md-ellipsis> emplace_back </span> </a> </li> <li class=md-nav__item> <a href=../empty/ class=md-nav__link> <span class=md-ellipsis> empty </span> </a> </li> <li class=md-nav__item> <a href=../end/ class=md-nav__link> <span class=md-ellipsis> end </span> </a> </li> <li class=md-nav__item> <a href=../end_pos/ class=md-nav__link> <span class=md-ellipsis> end_pos </span> </a> </li> <li class="md-nav__item md-nav__item--active"> <input class="md-nav__toggle md-toggle" type=checkbox id=__toc> <label class="md-nav__link md-nav__link--active" for=__toc> <span class=md-ellipsis> erase </span> <span class="md-nav__icon md-icon"></span> </label> <a href=./ class="md-nav__link md-nav__link--active"> <span class=md-ellipsis> erase </span> </a> <nav class="md-nav md-nav--secondary" aria-label="Table of contents"> <label class=md-nav__title for=__toc> <span class="md-nav__icon md-icon"></span> Table of contents </label> <ul class=md-nav__list data-md-component=toc data-md-scrollfix> <li class=md-nav__item> <a href=#template-parameters class=md-nav__link> <span class=md-ellipsis> Template parameters </span> </a> </li> <li class=md-nav__item> <a href=#parameters class=md-nav__link> <span class=md-ellipsis> Parameters </span> </a> </li> <li class=md-nav__item> <a href=#return-value class=md-nav__link> <span class=md-ellipsis> Return value </span> </a> </li> <li class=md-nav__item> <a href=#exception-safety class=md-nav__link> <span class=md-ellipsis> Exception safety </span> </a> </li> <li class=md-nav__item> <a href=#exceptions class=md-nav__link> <span class=md-ellipsis> Exceptions </span> </a> </li> <li class=md-nav__item> <a href=#complexity class=md-nav__link> <span class=md-ellipsis> Complexity </span> </a> </li> <li class=md-nav__item> <a href=#notes class=md-nav__link> <span class=md-ellipsis> Notes </span> </a> </li> <li class=md-nav__item> <a href=#examples class=md-nav__link> <span class=md-ellipsis> Examples </span> </a> </li> <li class=md-nav__item> <a href=#see-also class=md-nav__link> <span class=md-ellipsis> See also </span> </a> </li> <li class=md-nav__item> <a href=#version-history class=md-nav__link> <span class=md-ellipsis> Version history </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../error_handler_t/ class=md-nav__link> <span class=md-ellipsis> error_handler_t </span> </a> </li> <li class=md-nav__item> <a href=../exception/ class=md-nav__link> <span class=md-ellipsis> exception </span> </a> </li> <li class=md-nav__item> <a href=../find/ class=md-nav__link> <span class=md-ellipsis> find </span> </a> </li> <li class=md-nav__item> <a href=../flatten/ class=md-nav__link> <span class=md-ellipsis> flatten </span> </a> </li> <li class=md-nav__item> <a href=../from_bjdata/ class=md-nav__link> <span class=md-ellipsis> from_bjdata </span> </a> </li> <li class=md-nav__item> <a href=../from_bson/ class=md-nav__link> <span class=md-ellipsis> from_bson </span> </a> </li> <li class=md-nav__item> <a href=../from_cbor/ class=md-nav__link> <span class=md-ellipsis> from_cbor </span> </a> </li> <li class=md-nav__item> <a href=../from_msgpack/ class=md-nav__link> <span class=md-ellipsis> from_msgpack </span> </a> </li> <li class=md-nav__item> <a href=../from_ubjson/ class=md-nav__link> <span class=md-ellipsis> from_ubjson </span> </a> </li> <li class=md-nav__item> <a href=../front/ class=md-nav__link> <span class=md-ellipsis> front </span> </a> </li> <li class=md-nav__item> <a href=../get/ class=md-nav__link> <span class=md-ellipsis> get </span> </a> </li> <li class=md-nav__item> <a href=../get_allocator/ class=md-nav__link> <span class=md-ellipsis> get_allocator </span> </a> </li> <li class=md-nav__item> <a href=../get_binary/ class=md-nav__link> <span class=md-ellipsis> get_binary </span> </a> </li> <li class=md-nav__item> <a href=../get_ptr/ class=md-nav__link> <span class=md-ellipsis> get_ptr </span> </a> </li> <li class=md-nav__item> <a href=../get_ref/ class=md-nav__link> <span class=md-ellipsis> get_ref </span> </a> </li> <li class=md-nav__item> <a href=../get_to/ class=md-nav__link> <span class=md-ellipsis> get_to </span> </a> </li> <li class=md-nav__item> <a href=../std_hash/ class=md-nav__link> <span class=md-ellipsis> std::hash&lt;basic_json&gt; </span> </a> </li> <li class=md-nav__item> <a href=../input_format_t/ class=md-nav__link> <span class=md-ellipsis> input_format_t </span> </a> </li> <li class=md-nav__item> <a href=../insert/ class=md-nav__link> <span class=md-ellipsis> insert </span> </a> </li> <li class=md-nav__item> <a href=../invalid_iterator/ class=md-nav__link> <span class=md-ellipsis> invalid_iterator </span> </a> </li> <li class=md-nav__item> <a href=../is_array/ class=md-nav__link> <span class=md-ellipsis> is_array </span> </a> </li> <li class=md-nav__item> <a href=../is_binary/ class=md-nav__link> <span class=md-ellipsis> is_binary </span> </a> </li> <li class=md-nav__item> <a href=../is_boolean/ class=md-nav__link> <span class=md-ellipsis> is_boolean </span> </a> </li> <li class=md-nav__item> <a href=../is_discarded/ class=md-nav__link> <span class=md-ellipsis> is_discarded </span> </a> </li> <li class=md-nav__item> <a href=../is_null/ class=md-nav__link> <span class=md-ellipsis> is_null </span> </a> </li> <li class=md-nav__item> <a href=../is_number/ class=md-nav__link> <span class=md-ellipsis> is_number </span> </a> </li> <li class=md-nav__item> <a href=../is_number_float/ class=md-nav__link> <span class=md-ellipsis> is_number_float </span> </a> </li> <li class=md-nav__item> <a href=../is_number_integer/ class=md-nav__link> <span class=md-ellipsis> is_number_integer </span> </a> </li> <li class=md-nav__item> <a href=../is_number_unsigned/ class=md-nav__link> <span class=md-ellipsis> is_number_unsigned </span> </a> </li> <li class=md-nav__item> <a href=../is_object/ class=md-nav__link> <span class=md-ellipsis> is_object </span> </a> </li> <li class=md-nav__item> <a href=../is_primitive/ class=md-nav__link> <span class=md-ellipsis> is_primitive </span> </a> </li> <li class=md-nav__item> <a href=../is_string/ class=md-nav__link> <span class=md-ellipsis> is_string </span> </a> </li> <li class=md-nav__item> <a href=../is_structured/ class=md-nav__link> <span class=md-ellipsis> is_structured </span> </a> </li> <li class=md-nav__item> <a href=../items/ class=md-nav__link> <span class=md-ellipsis> items </span> </a> </li> <li class=md-nav__item> <a href=../json_base_class_t/ class=md-nav__link> <span class=md-ellipsis> json_base_class_t </span> </a> </li> <li class=md-nav__item> <a href=../json_serializer/ class=md-nav__link> <span class=md-ellipsis> json_serializer </span> </a> </li> <li class=md-nav__item> <a href=../max_size/ class=md-nav__link> <span class=md-ellipsis> max_size </span> </a> </li> <li class=md-nav__item> <a href=../meta/ class=md-nav__link> <span class=md-ellipsis> meta </span> </a> </li> <li class=md-nav__item> <a href=../merge_patch/ class=md-nav__link> <span class=md-ellipsis> merge_patch </span> </a> </li> <li class=md-nav__item> <a href=../number_float_t/ class=md-nav__link> <span class=md-ellipsis> number_float_t </span> </a> </li> <li class=md-nav__item> <a href=../number_integer_t/ class=md-nav__link> <span class=md-ellipsis> number_integer_t </span> </a> </li> <li class=md-nav__item> <a href=../number_unsigned_t/ class=md-nav__link> <span class=md-ellipsis> number_unsigned_t </span> </a> </li> <li class=md-nav__item> <a href=../object/ class=md-nav__link> <span class=md-ellipsis> object </span> </a> </li> <li class=md-nav__item> <a href=../object_comparator_t/ class=md-nav__link> <span class=md-ellipsis> object_comparator_t </span> </a> </li> <li class=md-nav__item> <a href=../object_t/ class=md-nav__link> <span class=md-ellipsis> object_t </span> </a> </li> <li class=md-nav__item> <a href=../operator_ValueType/ class=md-nav__link> <span class=md-ellipsis> operator ValueType </span> </a> </li> <li class=md-nav__item> <a href=../operator_value_t/ class=md-nav__link> <span class=md-ellipsis> operator value_t </span> </a> </li> <li class=md-nav__item> <a href=../operator%5B%5D/ class=md-nav__link> <span class=md-ellipsis> operator[] </span> </a> </li> <li class=md-nav__item> <a href=../operator%3D/ class=md-nav__link> <span class=md-ellipsis> operator= </span> </a> </li> <li class=md-nav__item> <a href=../operator%2B%3D/ class=md-nav__link> <span class=md-ellipsis> operator+= </span> </a> </li> <li class=md-nav__item> <a href=../operator_eq/ class=md-nav__link> <span class=md-ellipsis> operator== </span> </a> </li> <li class=md-nav__item> <a href=../operator_ne/ class=md-nav__link> <span class=md-ellipsis> operator!= </span> </a> </li> <li class=md-nav__item> <a href=../operator_lt/ class=md-nav__link> <span class=md-ellipsis> operator< </span> </a> </li> <li class=md-nav__item> <a href=../operator_gt/ class=md-nav__link> <span class=md-ellipsis> operator> </span> </a> </li> <li class=md-nav__item> <a href=../operator_le/ class=md-nav__link> <span class=md-ellipsis> operator<= </span> </a> </li> <li class=md-nav__item> <a href=../operator_ge/ class=md-nav__link> <span class=md-ellipsis> operator>= </span> </a> </li> <li class=md-nav__item> <a href=../operator_spaceship/ class=md-nav__link> <span class=md-ellipsis> operator<=> </span> </a> </li> <li class=md-nav__item> <a href=../out_of_range/ class=md-nav__link> <span class=md-ellipsis> out_of_range </span> </a> </li> <li class=md-nav__item> <a href=../other_error/ class=md-nav__link> <span class=md-ellipsis> other_error </span> </a> </li> <li class=md-nav__item> <a href=../parse/ class=md-nav__link> <span class=md-ellipsis> parse </span> </a> </li> <li class=md-nav__item> <a href=../parse_error/ class=md-nav__link> <span class=md-ellipsis> parse_error </span> </a> </li> <li class=md-nav__item> <a href=../parse_event_t/ class=md-nav__link> <span class=md-ellipsis> parse_event_t </span> </a> </li> <li class=md-nav__item> <a href=../parser_callback_t/ class=md-nav__link> <span class=md-ellipsis> parser_callback_t </span> </a> </li> <li class=md-nav__item> <a href=../patch/ class=md-nav__link> <span class=md-ellipsis> patch </span> </a> </li> <li class=md-nav__item> <a href=../patch_inplace/ class=md-nav__link> <span class=md-ellipsis> patch_inplace </span> </a> </li> <li class=md-nav__item> <a href=../push_back/ class=md-nav__link> <span class=md-ellipsis> push_back </span> </a> </li> <li class=md-nav__item> <a href=../rbegin/ class=md-nav__link> <span class=md-ellipsis> rbegin </span> </a> </li> <li class=md-nav__item> <a href=../rend/ class=md-nav__link> <span class=md-ellipsis> rend </span> </a> </li> <li class=md-nav__item> <a href=../sax_parse/ class=md-nav__link> <span class=md-ellipsis> sax_parse </span> </a> </li> <li class=md-nav__item> <a href=../size/ class=md-nav__link> <span class=md-ellipsis> size </span> </a> </li> <li class=md-nav__item> <a href=../start_pos/ class=md-nav__link> <span class=md-ellipsis> start_pos </span> </a> </li> <li class=md-nav__item> <a href=../string_t/ class=md-nav__link> <span class=md-ellipsis> string_t </span> </a> </li> <li class=md-nav__item> <a href=../swap/ class=md-nav__link> <span class=md-ellipsis> swap </span> </a> </li> <li class=md-nav__item> <a href=../std_swap/ class=md-nav__link> <span class=md-ellipsis> std::swap&lt;basic_json&gt; </span> </a> </li> <li class=md-nav__item> <a href=../to_bjdata/ class=md-nav__link> <span class=md-ellipsis> to_bjdata </span> </a> </li> <li class=md-nav__item> <a href=../to_bson/ class=md-nav__link> <span class=md-ellipsis> to_bson </span> </a> </li> <li class=md-nav__item> <a href=../to_cbor/ class=md-nav__link> <span class=md-ellipsis> to_cbor </span> </a> </li> <li class=md-nav__item> <a href=../to_msgpack/ class=md-nav__link> <span class=md-ellipsis> to_msgpack </span> </a> </li> <li class=md-nav__item> <a href=../to_string/ class=md-nav__link> <span class=md-ellipsis> to_string </span> </a> </li> <li class=md-nav__item> <a href=../to_ubjson/ class=md-nav__link> <span class=md-ellipsis> to_ubjson </span> </a> </li> <li class=md-nav__item> <a href=../type/ class=md-nav__link> <span class=md-ellipsis> type </span> </a> </li> <li class=md-nav__item> <a href=../type_error/ class=md-nav__link> <span class=md-ellipsis> type_error </span> </a> </li> <li class=md-nav__item> <a href=../type_name/ class=md-nav__link> <span class=md-ellipsis> type_name </span> </a> </li> <li class=md-nav__item> <a href=../unflatten/ class=md-nav__link> <span class=md-ellipsis> unflatten </span> </a> </li> <li class=md-nav__item> <a href=../update/ class=md-nav__link> <span class=md-ellipsis> update </span> </a> </li> <li class=md-nav__item> <a href=../value/ class=md-nav__link> <span class=md-ellipsis> value </span> </a> </li> <li class=md-nav__item> <a href=../value_t/ class=md-nav__link> <span class=md-ellipsis> value_t </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_2> <div class="md-nav__link md-nav__container"> <a href=../../byte_container_with_subtype/ class="md-nav__link "> <span class=md-ellipsis> byte_container_with_subtype </span> </a> <label class="md-nav__link " for=__nav_4_2 id=__nav_4_2_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_2_label aria-expanded=false> <label class=md-nav__title for=__nav_4_2> <span class="md-nav__icon md-icon"></span> byte_container_with_subtype </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../byte_container_with_subtype/byte_container_with_subtype/ class=md-nav__link> <span class=md-ellipsis> (constructor) </span> </a> </li> <li class=md-nav__item> <a href=../../byte_container_with_subtype/clear_subtype/ class=md-nav__link> <span class=md-ellipsis> clear_subtype </span> </a> </li> <li class=md-nav__item> <a href=../../byte_container_with_subtype/has_subtype/ class=md-nav__link> <span class=md-ellipsis> has_subtype </span> </a> </li> <li class=md-nav__item> <a href=../../byte_container_with_subtype/set_subtype/ class=md-nav__link> <span class=md-ellipsis> set_subtype </span> </a> </li> <li class=md-nav__item> <a href=../../byte_container_with_subtype/subtype/ class=md-nav__link> <span class=md-ellipsis> subtype </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_3> <div class="md-nav__link md-nav__container"> <a href=../../adl_serializer/ class="md-nav__link "> <span class=md-ellipsis> adl_serializer </span> </a> <label class="md-nav__link " for=__nav_4_3 id=__nav_4_3_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_3_label aria-expanded=false> <label class=md-nav__title for=__nav_4_3> <span class="md-nav__icon md-icon"></span> adl_serializer </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../adl_serializer/from_json/ class=md-nav__link> <span class=md-ellipsis> from_json </span> </a> </li> <li class=md-nav__item> <a href=../../adl_serializer/to_json/ class=md-nav__link> <span class=md-ellipsis> to_json </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../json/ class=md-nav__link> <span class=md-ellipsis> json </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_5> <div class="md-nav__link md-nav__container"> <a href=../../json_pointer/ class="md-nav__link "> <span class=md-ellipsis> json_pointer </span> </a> <label class="md-nav__link " for=__nav_4_5 id=__nav_4_5_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_5_label aria-expanded=false> <label class=md-nav__title for=__nav_4_5> <span class="md-nav__icon md-icon"></span> json_pointer </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../json_pointer/json_pointer/ class=md-nav__link> <span class=md-ellipsis> (Constructor) </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/back/ class=md-nav__link> <span class=md-ellipsis> back </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/empty/ class=md-nav__link> <span class=md-ellipsis> empty </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/front/ class=md-nav__link> <span class=md-ellipsis> front </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_string_t/ class=md-nav__link> <span class=md-ellipsis> operator string_t </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_eq/ class=md-nav__link> <span class=md-ellipsis> operator== </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_ne/ class=md-nav__link> <span class=md-ellipsis> operator!= </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_slash/ class=md-nav__link> <span class=md-ellipsis> operator/ </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_slasheq/ class=md-nav__link> <span class=md-ellipsis> operator/= </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/parent_pointer/ class=md-nav__link> <span class=md-ellipsis> parent_pointer </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/pop_back/ class=md-nav__link> <span class=md-ellipsis> pop_back </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/pop_front/ class=md-nav__link> <span class=md-ellipsis> pop_front </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/push_back/ class=md-nav__link> <span class=md-ellipsis> push_back </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/push_front/ class=md-nav__link> <span class=md-ellipsis> push_front </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/string_t/ class=md-nav__link> <span class=md-ellipsis> string_t </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/to_string/ class=md-nav__link> <span class=md-ellipsis> to_string </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_6> <div class="md-nav__link md-nav__container"> <a href=../../json_sax/ class="md-nav__link "> <span class=md-ellipsis> json_sax </span> </a> <label class="md-nav__link " for=__nav_4_6 id=__nav_4_6_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_6_label aria-expanded=false> <label class=md-nav__title for=__nav_4_6> <span class="md-nav__icon md-icon"></span> json_sax </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../json_sax/binary/ class=md-nav__link> <span class=md-ellipsis> binary </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/boolean/ class=md-nav__link> <span class=md-ellipsis> boolean </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/end_array/ class=md-nav__link> <span class=md-ellipsis> end_array </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/end_object/ class=md-nav__link> <span class=md-ellipsis> end_object </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/key/ class=md-nav__link> <span class=md-ellipsis> key </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/null/ class=md-nav__link> <span class=md-ellipsis> null </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/number_float/ class=md-nav__link> <span class=md-ellipsis> number_float </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/number_integer/ class=md-nav__link> <span class=md-ellipsis> number_integer </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/number_unsigned/ class=md-nav__link> <span class=md-ellipsis> number_unsigned </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/parse_error/ class=md-nav__link> <span class=md-ellipsis> parse_error </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/start_array/ class=md-nav__link> <span class=md-ellipsis> start_array </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/start_object/ class=md-nav__link> <span class=md-ellipsis> start_object </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/string/ class=md-nav__link> <span class=md-ellipsis> string </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../operator_ltlt/ class=md-nav__link> <span class=md-ellipsis> operator<<(basic_json), operator<<(json_pointer) </span> </a> </li> <li class=md-nav__item> <a href=../../operator_gtgt/ class=md-nav__link> <span class=md-ellipsis> operator>>(basic_json) </span> </a> </li> <li class=md-nav__item> <a href=../../operator_literal_json/ class=md-nav__link> <span class=md-ellipsis> operator""_json </span> </a> </li> <li class=md-nav__item> <a href=../../operator_literal_json_pointer/ class=md-nav__link> <span class=md-ellipsis> operator""_json_pointer </span> </a> </li> <li class=md-nav__item> <a href=../../ordered_json/ class=md-nav__link> <span class=md-ellipsis> ordered_json </span> </a> </li> <li class=md-nav__item> <a href=../../ordered_map/ class=md-nav__link> <span class=md-ellipsis> ordered_map </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_13> <div class="md-nav__link md-nav__container"> <a href=../../macros/ class="md-nav__link "> <span class=md-ellipsis> macros </span> </a> <label class="md-nav__link " for=__nav_4_13 id=__nav_4_13_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_13_label aria-expanded=false> <label class=md-nav__title for=__nav_4_13> <span class="md-nav__icon md-icon"></span> macros </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../macros/json_assert/ class=md-nav__link> <span class=md-ellipsis> JSON_ASSERT </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_brace_init_copy_semantics/ class=md-nav__link> <span class=md-ellipsis> JSON_BRACE_INIT_COPY_SEMANTICS </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_throw_user/ class=md-nav__link> <span class=md-ellipsis> JSON_CATCH_USER, JSON_THROW_USER, JSON_TRY_USER </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_diagnostics/ class=md-nav__link> <span class=md-ellipsis> JSON_DIAGNOSTICS </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_diagnostic_positions/ class=md-nav__link> <span class=md-ellipsis> JSON_DIAGNOSTIC_POSITIONS </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_disable_enum_serialization/ class=md-nav__link> <span class=md-ellipsis> JSON_DISABLE_ENUM_SERIALIZATION </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_has_cpp_11/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_CPP_11, JSON_HAS_CPP_14, JSON_HAS_CPP_17, JSON_HAS_CPP_20 </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_has_filesystem/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_EXPERIMENTAL_FILESYSTEM, JSON_HAS_FILESYSTEM </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_has_ranges/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_RANGES </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_has_static_rtti/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_STATIC_RTTI </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_has_three_way_comparison/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_THREE_WAY_COMPARISON </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_noexception/ class=md-nav__link> <span class=md-ellipsis> JSON_NOEXCEPTION </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_no_io/ class=md-nav__link> <span class=md-ellipsis> JSON_NO_IO </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_skip_library_version_check/ class=md-nav__link> <span class=md-ellipsis> JSON_SKIP_LIBRARY_VERSION_CHECK </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_skip_unsupported_compiler_check/ class=md-nav__link> <span class=md-ellipsis> JSON_SKIP_UNSUPPORTED_COMPILER_CHECK </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_use_global_udls/ class=md-nav__link> <span class=md-ellipsis> JSON_USE_GLOBAL_UDLS </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_use_implicit_conversions/ class=md-nav__link> <span class=md-ellipsis> JSON_USE_IMPLICIT_CONVERSIONS </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_use_legacy_discarded_value_comparison/ class=md-nav__link> <span class=md-ellipsis> JSON_USE_LEGACY_DISCARDED_VALUE_COMPARISON </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_define_derived_type/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_ONLY_SERIALIZE, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_define_type_intrusive/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_TYPE_INTRUSIVE, NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_TYPE_INTRUSIVE_ONLY_SERIALIZE </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_define_type_non_intrusive/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_define_type_with_names/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_TYPE_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_namespace/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_NAMESPACE </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_namespace_begin/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_NAMESPACE_BEGIN, NLOHMANN_JSON_NAMESPACE_END </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_namespace_no_version/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_NAMESPACE_NO_VERSION </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_serialize_enum/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_SERIALIZE_ENUM </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_serialize_enum_strict/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_SERIALIZE_ENUM_STRICT </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_version_major/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_VERSION_MAJOR, NLOHMANN_JSON_VERSION_MINOR, NLOHMANN_JSON_VERSION_PATCH </span> </a> </li> </ul> </nav> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_5> <div class="md-nav__link md-nav__container"> <a href=../../../community/ class="md-nav__link "> <span class=md-ellipsis> Community </span> </a> <label class="md-nav__link " for=__nav_5 id=__nav_5_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_5_label aria-expanded=false> <label class=md-nav__title for=__nav_5> <span class="md-nav__icon md-icon"></span> Community </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../community/code_of_conduct/ class=md-nav__link> <span class=md-ellipsis> Code of Conduct </span> </a> </li> <li class=md-nav__item> <a href=../../../community/contribution_guidelines/ class=md-nav__link> <span class=md-ellipsis> Contribution Guidelines </span> </a> </li> <li class=md-nav__item> <a href=../../../community/quality_assurance/ class=md-nav__link> <span class=md-ellipsis> Quality assurance </span> </a> </li> <li class=md-nav__item> <a href=../../../community/governance/ class=md-nav__link> <span class=md-ellipsis> Governance </span> </a> </li> <li class=md-nav__item> <a href=../../../community/security_policy/ class=md-nav__link> <span class=md-ellipsis> Security Policy </span> </a> </li> </ul> </nav> </li> </ul> </nav> </div> </div> </div> <div class="md-sidebar md-sidebar--secondary" data-md-component=sidebar data-md-type=toc> <div class=md-sidebar__scrollwrap> <div class=md-sidebar__inner> <nav class="md-nav md-nav--secondary" aria-label="Table of contents"> <label class=md-nav__title for=__toc> <span class="md-nav__icon md-icon"></span> Table of contents </label> <ul class=md-nav__list data-md-component=toc data-md-scrollfix> <li class=md-nav__item> <a href=#template-parameters class=md-nav__link> <span class=md-ellipsis> Template parameters </span> </a> </li> <li class=md-nav__item> <a href=#parameters class=md-nav__link> <span class=md-ellipsis> Parameters </span> </a> </li> <li class=md-nav__item> <a href=#return-value class=md-nav__link> <span class=md-ellipsis> Return value </span> </a> </li> <li class=md-nav__item> <a href=#exception-safety class=md-nav__link> <span class=md-ellipsis> Exception safety </span> </a> </li> <li class=md-nav__item> <a href=#exceptions class=md-nav__link> <span class=md-ellipsis> Exceptions </span> </a> </li> <li class=md-nav__item> <a href=#complexity class=md-nav__link> <span class=md-ellipsis> Complexity </span> </a> </li> <li class=md-nav__item> <a href=#notes class=md-nav__link> <span class=md-ellipsis> Notes </span> </a> </li> <li class=md-nav__item> <a href=#examples class=md-nav__link> <span class=md-ellipsis> Examples </span> </a> </li> <li class=md-nav__item> <a href=#see-also class=md-nav__link> <span class=md-ellipsis> See also </span> </a> </li> <li class=md-nav__item> <a href=#version-history class=md-nav__link> <span class=md-ellipsis> Version history </span> </a> </li> </ul> </nav> </div> </div> </div> <div class=md-content data-md-component=content> <article class="md-content__inner md-typeset"> <a href="https://github.com/nlohmann/json/edit/develop/docs/mkdocs/docs/api/basic_json/erase.md" title="Edit this page" class="md-content__button md-icon" rel="edit"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M10 20H6V4h7v5h5v3.1l2-2V8l-6-6H6c-1.1 0-2 .9-2 2v16c0 1.1.9 2 2 2h4zm10.2-7c.1 0 .3.1.4.2l1.3 1.3c.2.2.2.6 0 .8l-1 1-2.1-2.1 1-1c.1-.1.2-.2.4-.2m0 3.9L14.1 23H12v-2.1l6.1-6.1z"/></svg> </a> <a href="https://github.com/nlohmann/json/raw/develop/docs/mkdocs/docs/api/basic_json/erase.md" title="View source of this page" class="md-content__button md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M17 18c.56 0 1 .44 1 1s-.44 1-1 1-1-.44-1-1 .44-1 1-1m0-3c-2.73 0-5.06 1.66-6 4 .94 2.34 3.27 4 6 4s5.06-1.66 6-4c-.94-2.34-3.27-4-6-4m0 6.5a2.5 2.5 0 0 1-2.5-2.5 2.5 2.5 0 0 1 2.5-2.5 2.5 2.5 0 0 1 2.5 2.5 2.5 2.5 0 0 1-2.5 2.5M9.27 20H6V4h7v5h5v4.07c.7.08 1.36.25 2 .49V8l-6-6H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h4.5a8.2 8.2 0 0 1-1.23-2"/></svg> </a> <h1 id=nlohmannbasic_jsonerase><small>nlohmann::basic_json::</small>erase<a class=headerlink href=#nlohmannbasic_jsonerase title="Permanent link">&para;</a></h1> <div class=highlight><pre><span></span><code><span class=c1>// (1)</span>
 <span class=n>iterator</span><span class=w> </span><span class=nf>erase</span><span class=p>(</span><span class=n>iterator</span><span class=w> </span><span class=n>pos</span><span class=p>);</span>
 <span class=n>const_iterator</span><span class=w> </span><span class=nf>erase</span><span class=p>(</span><span class=n>const_iterator</span><span class=w> </span><span class=n>pos</span><span class=p>);</span>
 
@@ -15,7 +15,7 @@
 
 <span class=c1>// (5)</span>
 <span class=kt>void</span><span class=w> </span><span class=nf>erase</span><span class=p>(</span><span class=k>const</span><span class=w> </span><span class=n>size_type</span><span class=w> </span><span class=n>idx</span><span class=p>);</span>
-</code></pre></div> <ol> <li> <p>Removes an element from a <abbr title="JavaScript Object Notation">JSON</abbr> value specified by iterator <code>pos</code>. The iterator <code>pos</code> must be valid and dereferenceable. Thus, the <code>end()</code> iterator (which is valid, but is not dereferenceable) cannot be used as a value for <code>pos</code>.</p> <p>If called on a primitive type other than <code class=highlight><span class=kc>null</span></code>, the resulting <abbr title="JavaScript Object Notation">JSON</abbr> value will be <code class=highlight><span class=kc>null</span></code>.</p> </li> <li> <p>Remove an element range specified by <code>[first; last)</code> from a <abbr title="JavaScript Object Notation">JSON</abbr> value. The iterator <code>first</code> does not need to be dereferenceable if <code>first == last</code>: erasing an empty range is a no-op.</p> <p>If called on a primitive type other than <code class=highlight><span class=kc>null</span></code>, the resulting <abbr title="JavaScript Object Notation">JSON</abbr> value will be <code class=highlight><span class=kc>null</span></code>.</p> </li> <li> <p>Removes an element from a <abbr title="JavaScript Object Notation">JSON</abbr> object by key.</p> </li> <li> <p>See 3. This overload is only available if <code>KeyType</code> is comparable with <code class=highlight><span class=k>typename</span><span class=w> </span><span class=nc>object_t</span><span class=o>::</span><span class=n>key_type</span></code> and <code class=highlight><span class=k>typename</span><span class=w> </span><span class=nc>object_comparator_t</span><span class=o>::</span><span class=n>is_transparent</span></code> denotes a type.</p> </li> <li> <p>Removes an element from a <abbr title="JavaScript Object Notation">JSON</abbr> array by index.</p> </li> </ol> <h2 id=template-parameters>Template parameters<a class=headerlink href=#template-parameters title="Permanent link">&para;</a></h2> <dl> <dt><code>KeyType</code></dt> <dd>A type for an object key other than <a href=../../json_pointer/ ><code>json_pointer</code></a> that is comparable with <a href=../string_t/ ><code>string_t</code></a> using <a href=../object_comparator_t/ ><code>object_comparator_t</code></a>. This can also be a string view (C++17).</dd> </dl> <h2 id=parameters>Parameters<a class=headerlink href=#parameters title="Permanent link">&para;</a></h2> <dl> <dt><code>pos</code> (in)</dt> <dd>iterator to the element to remove</dd> <dt><code>first</code> (in)</dt> <dd>iterator to the beginning of the range to remove</dd> <dt><code>last</code> (in)</dt> <dd>iterator past the end of the range to remove</dd> <dt><code>key</code> (in)</dt> <dd>object key of the elements to remove</dd> <dt><code>idx</code> (in)</dt> <dd>array index of the element to remove</dd> </dl> <h2 id=return-value>Return value<a class=headerlink href=#return-value title="Permanent link">&para;</a></h2> <ol> <li>Iterator following the last removed element. If the iterator <code>pos</code> refers to the last element, the <code>end()</code> iterator is returned.</li> <li>Iterator following the last removed element. If the iterator <code>last</code> refers to the last element, the <code>end()</code> iterator is returned.</li> <li>Number of elements removed. If <code>ObjectType</code> is the default <code>std::map</code> type, the return value will always be <code>0</code> (<code>key</code> was not found) or <code>1</code> (<code>key</code> was found).</li> <li>See 3.</li> <li>(none)</li> </ol> <h2 id=exception-safety>Exception safety<a class=headerlink href=#exception-safety title="Permanent link">&para;</a></h2> <p>Strong exception safety: if an exception occurs, the original value stays intact.</p> <h2 id=exceptions>Exceptions<a class=headerlink href=#exceptions title="Permanent link">&para;</a></h2> <ol> <li>The function can throw the following exceptions:<ul> <li>Throws <a href=../../../home/exceptions/#jsonexceptiontype_error307><code>type_error.307</code></a> if called on a <code>null</code> value; example: <code>"cannot use erase() with null"</code></li> <li>Throws <a href=../../../home/exceptions/#jsonexceptioninvalid_iterator202><code>invalid_iterator.202</code></a> if called on an iterator which does not belong to the current <abbr title="JavaScript Object Notation">JSON</abbr> value; example: <code>"iterator does not fit current value"</code></li> <li>Throws <a href=../../../home/exceptions/#jsonexceptioninvalid_iterator205><code>invalid_iterator.205</code></a> if called on a primitive type with invalid iterator (i.e., any iterator which is not <code>begin()</code>); example: <code>"iterator out of range"</code></li> </ul> </li> <li>The function can throw the following exceptions:<ul> <li>Throws <a href=../../../home/exceptions/#jsonexceptiontype_error307><code>type_error.307</code></a> if called on a <code>null</code> value; example: <code>"cannot use erase() with null"</code></li> <li>Throws <a href=../../../home/exceptions/#jsonexceptioninvalid_iterator203><code>invalid_iterator.203</code></a> if called on iterators which does not belong to the current <abbr title="JavaScript Object Notation">JSON</abbr> value; example: <code>"iterators do not fit current value"</code></li> <li>Throws <a href=../../../home/exceptions/#jsonexceptioninvalid_iterator204><code>invalid_iterator.204</code></a> if called on a primitive type with invalid iterators (i.e., if <code>first != begin()</code> and <code>last != end()</code>); example: <code>"iterators out of range"</code></li> </ul> </li> <li>The function can throw the following exceptions:<ul> <li>Throws <a href=../../../home/exceptions/#jsonexceptiontype_error307><code>type_error.307</code></a> when called on a type other than <abbr title="JavaScript Object Notation">JSON</abbr> object; example: <code>"cannot use erase() with null"</code></li> </ul> </li> <li>See 3.</li> <li>The function can throw the following exceptions:<ul> <li>Throws <a href=../../../home/exceptions/#jsonexceptiontype_error307><code>type_error.307</code></a> when called on a type other than <abbr title="JavaScript Object Notation">JSON</abbr> object; example: <code>"cannot use erase() with null"</code></li> <li>Throws <a href=../../../home/exceptions/#jsonexceptionout_of_range401><code>out_of_range.401</code></a> when <code>idx &gt;= size()</code>; example: <code>"array index 17 is out of range"</code></li> </ul> </li> </ol> <h2 id=complexity>Complexity<a class=headerlink href=#complexity title="Permanent link">&para;</a></h2> <ol> <li>The complexity depends on the type:<ul> <li>objects: amortized constant</li> <li>arrays: linear in distance between <code>pos</code> and the end of the container</li> <li>strings and binary: linear in the length of the member</li> <li>other types: constant</li> </ul> </li> <li>The complexity depends on the type:<ul> <li>objects: <code>log(size()) + std::distance(first, last)</code></li> <li>arrays: linear in the distance between <code>first</code> and <code>last</code>, plus linear in the distance between <code>last</code> and end of the container</li> <li>strings and binary: linear in the length of the member</li> <li>other types: constant</li> </ul> </li> <li><code>log(size()) + count(key)</code></li> <li><code>log(size()) + count(key)</code></li> <li>Linear in distance between <code>idx</code> and the end of the container.</li> </ol> <h2 id=notes>Notes<a class=headerlink href=#notes title="Permanent link">&para;</a></h2> <ol> <li>Invalidates iterators and references at or after the point of the <code>erase</code>, including the <code>end()</code> iterator.</li> <li>(none)</li> <li>References and iterators to the erased elements are invalidated. Other references and iterators are not affected.</li> <li>See 3.</li> <li>(none)</li> </ol> <h2 id=examples>Examples<a class=headerlink href=#examples title="Permanent link">&para;</a></h2> <details class=example> <summary>Example: (1) remove element given an iterator</summary> <p>The example shows the effect of <code>erase()</code> for different <abbr title="JavaScript Object Notation">JSON</abbr> types using an iterator.</p> <div class=highlight><pre><span></span><code><span class=cp>#include</span><span class=w> </span><span class=cpf>&lt;iostream&gt;</span>
+</code></pre></div> <ol> <li> <p>Removes an element from a <abbr title="JavaScript Object Notation">JSON</abbr> value specified by iterator <code>pos</code>. The iterator <code>pos</code> must be valid and dereferenceable. Thus, the <code>end()</code> iterator (which is valid, but is not dereferenceable) cannot be used as a value for <code>pos</code>.</p> <p>If called on a primitive type other than <code class=highlight><span class=kc>null</span></code>, the resulting <abbr title="JavaScript Object Notation">JSON</abbr> value will be <code class=highlight><span class=kc>null</span></code>.</p> </li> <li> <p>Remove an element range specified by <code>[first; last)</code> from a <abbr title="JavaScript Object Notation">JSON</abbr> value. The iterator <code>first</code> does not need to be dereferenceable if <code>first == last</code>: erasing an empty range is a no-op.</p> <p>If called on a primitive type other than <code class=highlight><span class=kc>null</span></code>, the resulting <abbr title="JavaScript Object Notation">JSON</abbr> value will be <code class=highlight><span class=kc>null</span></code>.</p> </li> <li> <p>Removes an element from a <abbr title="JavaScript Object Notation">JSON</abbr> object by key.</p> </li> <li> <p>See 3. This overload is only available if <code>KeyType</code> is comparable with <code class=highlight><span class=k>typename</span><span class=w> </span><span class=nc>object_t</span><span class=o>::</span><span class=n>key_type</span></code> and <code class=highlight><span class=k>typename</span><span class=w> </span><span class=nc>object_comparator_t</span><span class=o>::</span><span class=n>is_transparent</span></code> denotes a type.</p> </li> <li> <p>Removes an element from a <abbr title="JavaScript Object Notation">JSON</abbr> array by index.</p> </li> </ol> <h2 id=template-parameters>Template parameters<a class=headerlink href=#template-parameters title="Permanent link">&para;</a></h2> <dl> <dt><code>KeyType</code></dt> <dd>A type for an object key other than <a href=../../json_pointer/ ><code>json_pointer</code></a> that is comparable with <a href=../string_t/ ><code>string_t</code></a> using <a href=../object_comparator_t/ ><code>object_comparator_t</code></a>. This can also be a string view (C++17).</dd> </dl> <h2 id=parameters>Parameters<a class=headerlink href=#parameters title="Permanent link">&para;</a></h2> <dl> <dt><code>pos</code> (in)</dt> <dd>iterator to the element to remove</dd> <dt><code>first</code> (in)</dt> <dd>iterator to the beginning of the range to remove</dd> <dt><code>last</code> (in)</dt> <dd>iterator past the end of the range to remove</dd> <dt><code>key</code> (in)</dt> <dd>object key of the elements to remove</dd> <dt><code>idx</code> (in)</dt> <dd>array index of the element to remove</dd> </dl> <h2 id=return-value>Return value<a class=headerlink href=#return-value title="Permanent link">&para;</a></h2> <ol> <li>Iterator following the last removed element. If the iterator <code>pos</code> refers to the last element, the <code>end()</code> iterator is returned.</li> <li>Iterator following the last removed element. If the iterator <code>last</code> refers to the last element, the <code>end()</code> iterator is returned.</li> <li>Number of elements removed. If <code>ObjectType</code> is the default <code>std::map</code> type, the return value will always be <code>0</code> (<code>key</code> was not found) or <code>1</code> (<code>key</code> was found).</li> <li>See 3.</li> <li>(none)</li> </ol> <h2 id=exception-safety>Exception safety<a class=headerlink href=#exception-safety title="Permanent link">&para;</a></h2> <p>Strong exception safety: if an exception occurs, the original value stays intact.</p> <h2 id=exceptions>Exceptions<a class=headerlink href=#exceptions title="Permanent link">&para;</a></h2> <ol> <li>The function can throw the following exceptions:<ul> <li>Throws <a href=../../../home/exceptions/#jsonexceptiontype_error307><code>type_error.307</code></a> if called on a <code>null</code> value; example: <code>"cannot use erase() with null"</code></li> <li>Throws <a href=../../../home/exceptions/#jsonexceptioninvalid_iterator202><code>invalid_iterator.202</code></a> if called on an iterator which does not belong to the current <abbr title="JavaScript Object Notation">JSON</abbr> value; example: <code>"iterator does not fit current value"</code></li> <li>Throws <a href=../../../home/exceptions/#jsonexceptioninvalid_iterator205><code>invalid_iterator.205</code></a> if called on a primitive type with invalid iterator (i.e., any iterator which is not <code>begin()</code>); example: <code>"iterator out of range"</code></li> </ul> </li> <li>The function can throw the following exceptions:<ul> <li>Throws <a href=../../../home/exceptions/#jsonexceptiontype_error307><code>type_error.307</code></a> if called on a <code>null</code> value; example: <code>"cannot use erase() with null"</code></li> <li>Throws <a href=../../../home/exceptions/#jsonexceptioninvalid_iterator203><code>invalid_iterator.203</code></a> if called on iterators which does not belong to the current <abbr title="JavaScript Object Notation">JSON</abbr> value; example: <code>"iterators do not fit current value"</code></li> <li>Throws <a href=../../../home/exceptions/#jsonexceptioninvalid_iterator204><code>invalid_iterator.204</code></a> if called on a primitive type with invalid iterators (i.e., if <code>first != begin()</code> and <code>last != end()</code>); example: <code>"iterators out of range"</code></li> </ul> </li> <li>The function can throw the following exceptions:<ul> <li>Throws <a href=../../../home/exceptions/#jsonexceptiontype_error307><code>type_error.307</code></a> when called on a type other than <abbr title="JavaScript Object Notation">JSON</abbr> object; example: <code>"cannot use erase() with null"</code></li> </ul> </li> <li>See 3.</li> <li>The function can throw the following exceptions:<ul> <li>Throws <a href=../../../home/exceptions/#jsonexceptiontype_error307><code>type_error.307</code></a> when called on a type other than <abbr title="JavaScript Object Notation">JSON</abbr> array; example: <code>"cannot use erase() with null"</code></li> <li>Throws <a href=../../../home/exceptions/#jsonexceptionout_of_range401><code>out_of_range.401</code></a> when <code>idx &gt;= size()</code>; example: <code>"array index 17 is out of range"</code></li> </ul> </li> </ol> <h2 id=complexity>Complexity<a class=headerlink href=#complexity title="Permanent link">&para;</a></h2> <ol> <li>The complexity depends on the type:<ul> <li>objects: amortized constant</li> <li>arrays: linear in distance between <code>pos</code> and the end of the container</li> <li>strings and binary: linear in the length of the member</li> <li>other types: constant</li> </ul> </li> <li>The complexity depends on the type:<ul> <li>objects: <code>log(size()) + std::distance(first, last)</code></li> <li>arrays: linear in the distance between <code>first</code> and <code>last</code>, plus linear in the distance between <code>last</code> and end of the container</li> <li>strings and binary: linear in the length of the member</li> <li>other types: constant</li> </ul> </li> <li><code>log(size()) + count(key)</code></li> <li><code>log(size()) + count(key)</code></li> <li>Linear in distance between <code>idx</code> and the end of the container.</li> </ol> <h2 id=notes>Notes<a class=headerlink href=#notes title="Permanent link">&para;</a></h2> <ol> <li>Invalidates iterators and references at or after the point of the <code>erase</code>, including the <code>end()</code> iterator.</li> <li>(none)</li> <li>References and iterators to the erased elements are invalidated. Other references and iterators are not affected.</li> <li>See 3.</li> <li>(none)</li> </ol> <h2 id=examples>Examples<a class=headerlink href=#examples title="Permanent link">&para;</a></h2> <details class=example> <summary>Example: (1) remove element given an iterator</summary> <p>The example shows the effect of <code>erase()</code> for different <abbr title="JavaScript Object Notation">JSON</abbr> types using an iterator.</p> <div class=highlight><pre><span></span><code><span class=cp>#include</span><span class=w> </span><span class=cpf>&lt;iostream&gt;</span>
 <span class=cp>#include</span><span class=w> </span><span class=cpf>&lt;nlohmann/json.hpp&gt;</span>
 
 <span class=k>using</span><span class=w> </span><span class=n>json</span><span class=w> </span><span class=o>=</span><span class=w> </span><span class=n>nlohmann</span><span class=o>::</span><span class=n>json</span><span class=p>;</span>
@@ -148,4 +148,4 @@
 <span class=w>    </span><span class=n>std</span><span class=o>::</span><span class=n>cout</span><span class=w> </span><span class=o>&lt;&lt;</span><span class=w> </span><span class=n>j_array</span><span class=w> </span><span class=o>&lt;&lt;</span><span class=w> </span><span class=sc>&#39;\n&#39;</span><span class=p>;</span>
 <span class=p>}</span>
 </code></pre></div> <p>Output:</p> <div class=highlight><pre><span></span><code><span class=p>[</span><span class=mi>0</span><span class=p>,</span><span class=mi>1</span><span class=p>,</span><span class=mi>3</span><span class=p>,</span><span class=mi>4</span><span class=p>,</span><span class=mi>5</span><span class=p>]</span>
-</code></pre></div> </details> <h2 id=version-history>Version history<a class=headerlink href=#version-history title="Permanent link">&para;</a></h2> <ol> <li>Added in version 1.0.0. Added support for binary types in version 3.8.0.</li> <li>Added in version 1.0.0. Added support for binary types in version 3.8.0.</li> <li>Added in version 1.0.0.</li> <li>Added in version 3.11.0.</li> <li>Added in version 1.0.0.</li> </ol> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 23, 2026 11:16:18 UTC">June 23, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
+</code></pre></div> </details> <h2 id=see-also>See also<a class=headerlink href=#see-also title="Permanent link">&para;</a></h2> <ul> <li><a href=../clear/ >clear</a> clears the contents</li> <li><a href=../insert/ >insert</a> add values to an array/object</li> </ul> <h2 id=version-history>Version history<a class=headerlink href=#version-history title="Permanent link">&para;</a></h2> <ol> <li>Added in version 1.0.0. Added support for binary types in version 3.8.0.</li> <li>Added in version 1.0.0. Added support for binary types in version 3.8.0.</li> <li>Added in version 1.0.0.</li> <li>Added in version 3.11.0.</li> <li>Added in version 1.0.0.</li> </ol> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 29, 2026 20:15:18 UTC">June 29, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
diff --git a/api/basic_json/error_handler_t/index.html b/api/basic_json/error_handler_t/index.html
index 19373b1..003afa6 100644
--- a/api/basic_json/error_handler_t/index.html
+++ b/api/basic_json/error_handler_t/index.html
@@ -30,4 +30,4 @@
 </code></pre></div> <p>Output:</p> <div class=highlight><pre><span></span><code><span class=p>[</span><span class=err>jso</span><span class=kc>n</span><span class=err>.excep</span><span class=kc>t</span><span class=err>io</span><span class=kc>n</span><span class=err>.</span><span class=kc>t</span><span class=err>ype_error.</span><span class=mi>316</span><span class=p>]</span><span class=w> </span><span class=err>i</span><span class=kc>n</span><span class=err>valid</span><span class=w> </span><span class=err>UTF</span><span class=mi>-8</span><span class=w> </span><span class=err>by</span><span class=kc>te</span><span class=w> </span><span class=err>a</span><span class=kc>t</span><span class=w> </span><span class=err>i</span><span class=kc>n</span><span class=err>dex</span><span class=w> </span><span class=mi>2</span><span class=p>:</span><span class=w> </span><span class=mi>0</span><span class=err>xA</span><span class=mi>9</span>
 <span class=err>s</span><span class=kc>tr</span><span class=err>i</span><span class=kc>n</span><span class=err>g</span><span class=w> </span><span class=err>wi</span><span class=kc>t</span><span class=err>h</span><span class=w> </span><span class=err>replaced</span><span class=w> </span><span class=err>i</span><span class=kc>n</span><span class=err>valid</span><span class=w> </span><span class=err>charac</span><span class=kc>ters</span><span class=p>:</span><span class=w> </span><span class=s2>&quot;ä�ü&quot;</span>
 <span class=err>s</span><span class=kc>tr</span><span class=err>i</span><span class=kc>n</span><span class=err>g</span><span class=w> </span><span class=err>wi</span><span class=kc>t</span><span class=err>h</span><span class=w> </span><span class=err>ig</span><span class=kc>n</span><span class=err>ored</span><span class=w> </span><span class=err>i</span><span class=kc>n</span><span class=err>valid</span><span class=w> </span><span class=err>charac</span><span class=kc>ters</span><span class=p>:</span><span class=w> </span><span class=s2>&quot;äü&quot;</span>
-</code></pre></div> </details> <h2 id=version-history>Version history<a class=headerlink href=#version-history title="Permanent link">&para;</a></h2> <ul> <li>Added in version 3.4.0.</li> </ul> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 23, 2026 11:16:18 UTC">June 23, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
+</code></pre></div> </details> <h2 id=version-history>Version history<a class=headerlink href=#version-history title="Permanent link">&para;</a></h2> <ul> <li>Added in version 3.4.0.</li> </ul> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 29, 2026 20:15:18 UTC">June 29, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
diff --git a/api/basic_json/exception/index.html b/api/basic_json/exception/index.html
index fdcc5ef..e1b5079 100644
--- a/api/basic_json/exception/index.html
+++ b/api/basic_json/exception/index.html
@@ -49,4 +49,4 @@
 <span class=p>}</span>
 </code></pre></div> <p>Output:</p> <div class=highlight><pre><span></span><code><span class=err>message</span><span class=p>:</span><span class=w> </span><span class=p>[</span><span class=err>jso</span><span class=kc>n</span><span class=err>.excep</span><span class=kc>t</span><span class=err>io</span><span class=kc>n</span><span class=err>.ou</span><span class=kc>t</span><span class=err>_o</span><span class=kc>f</span><span class=err>_ra</span><span class=kc>n</span><span class=err>ge.</span><span class=mi>403</span><span class=p>]</span><span class=w> </span><span class=err>key</span><span class=w> </span><span class=err>&#39;</span><span class=kc>n</span><span class=err>o</span><span class=kc>n</span><span class=mf>-e</span><span class=err>xis</span><span class=kc>t</span><span class=err>i</span><span class=kc>n</span><span class=err>g&#39;</span><span class=w> </span><span class=kc>n</span><span class=err>o</span><span class=kc>t</span><span class=w> </span><span class=kc>f</span><span class=err>ou</span><span class=kc>n</span><span class=err>d</span>
 <span class=err>excep</span><span class=kc>t</span><span class=err>io</span><span class=kc>n</span><span class=w> </span><span class=err>id</span><span class=p>:</span><span class=w> </span><span class=mi>403</span>
-</code></pre></div> </details> <h2 id=see-also>See also<a class=headerlink href=#see-also title="Permanent link">&para;</a></h2> <p><a href=../../../home/exceptions/ >List of exceptions</a></p> <h2 id=version-history>Version history<a class=headerlink href=#version-history title="Permanent link">&para;</a></h2> <ul> <li>Since version 3.0.0.</li> </ul> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 23, 2026 11:16:18 UTC">June 23, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
+</code></pre></div> </details> <h2 id=see-also>See also<a class=headerlink href=#see-also title="Permanent link">&para;</a></h2> <p><a href=../../../home/exceptions/ >List of exceptions</a></p> <h2 id=version-history>Version history<a class=headerlink href=#version-history title="Permanent link">&para;</a></h2> <ul> <li>Since version 3.0.0.</li> </ul> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 29, 2026 20:15:18 UTC">June 29, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
diff --git a/api/basic_json/find/index.html b/api/basic_json/find/index.html
index f78c8e9..59e5134 100644
--- a/api/basic_json/find/index.html
+++ b/api/basic_json/find/index.html
@@ -55,4 +55,4 @@
 </code></pre></div> <p>Output:</p> <div class=highlight><pre><span></span><code><span class=s2>&quot;two&quot;</span><span class=w> </span><span class=err>was</span><span class=w> </span><span class=kc>f</span><span class=err>ou</span><span class=kc>n</span><span class=err>d</span><span class=p>:</span><span class=w> </span><span class=kc>true</span>
 <span class=err>value</span><span class=w> </span><span class=err>a</span><span class=kc>t</span><span class=w> </span><span class=err>key</span><span class=w> </span><span class=nt>&quot;two&quot;</span><span class=p>:</span><span class=w> </span><span class=mi>2</span>
 <span class=s2>&quot;three&quot;</span><span class=w> </span><span class=err>was</span><span class=w> </span><span class=kc>f</span><span class=err>ou</span><span class=kc>n</span><span class=err>d</span><span class=p>:</span><span class=w> </span><span class=kc>false</span>
-</code></pre></div> </details> <h2 id=see-also>See also<a class=headerlink href=#see-also title="Permanent link">&para;</a></h2> <ul> <li><a href=../contains/ >contains</a> checks whether a key exists</li> </ul> <h2 id=version-history>Version history<a class=headerlink href=#version-history title="Permanent link">&para;</a></h2> <ol> <li>Added in version 3.11.0.</li> <li>Added in version 1.0.0. Changed to support comparable types in version 3.11.0.</li> </ol> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 23, 2026 11:16:18 UTC">June 23, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
+</code></pre></div> </details> <h2 id=see-also>See also<a class=headerlink href=#see-also title="Permanent link">&para;</a></h2> <ul> <li><a href=../count/ >count</a> returns the number of occurrences of a key</li> <li><a href=../contains/ >contains</a> checks whether a key exists</li> </ul> <h2 id=version-history>Version history<a class=headerlink href=#version-history title="Permanent link">&para;</a></h2> <ol> <li>Added in version 3.11.0.</li> <li>Added in version 1.0.0. Changed to support comparable types in version 3.11.0.</li> </ol> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 29, 2026 20:15:18 UTC">June 29, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
diff --git a/api/basic_json/flatten/index.html b/api/basic_json/flatten/index.html
index 8410632..714d6de 100644
--- a/api/basic_json/flatten/index.html
+++ b/api/basic_json/flatten/index.html
@@ -43,4 +43,4 @@
 <span class=w>    </span><span class=nt>&quot;/object/value&quot;</span><span class=p>:</span><span class=w> </span><span class=mf>42.99</span><span class=p>,</span>
 <span class=w>    </span><span class=nt>&quot;/pi&quot;</span><span class=p>:</span><span class=w> </span><span class=mf>3.141</span>
 <span class=p>}</span>
-</code></pre></div> </details> <h2 id=see-also>See also<a class=headerlink href=#see-also title="Permanent link">&para;</a></h2> <ul> <li><a href=../unflatten/ >unflatten</a> the reverse function</li> </ul> <h2 id=version-history>Version history<a class=headerlink href=#version-history title="Permanent link">&para;</a></h2> <ul> <li>Added in version 2.0.0.</li> </ul> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 23, 2026 11:16:18 UTC">June 23, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
+</code></pre></div> </details> <h2 id=see-also>See also<a class=headerlink href=#see-also title="Permanent link">&para;</a></h2> <ul> <li><a href=../unflatten/ >unflatten</a> the reverse function</li> </ul> <h2 id=version-history>Version history<a class=headerlink href=#version-history title="Permanent link">&para;</a></h2> <ul> <li>Added in version 2.0.0.</li> </ul> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 29, 2026 20:15:18 UTC">June 29, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
diff --git a/api/basic_json/from_bjdata/index.html b/api/basic_json/from_bjdata/index.html
index 89593d0..68cd892 100644
--- a/api/basic_json/from_bjdata/index.html
+++ b/api/basic_json/from_bjdata/index.html
@@ -1,4 +1,4 @@
-<!doctype html><html lang=en class=no-js> <head><meta charset=utf-8><meta name=viewport content="width=device-width,initial-scale=1"><meta name=author content="Niels Lohmann"><link href="https://json.nlohmann.me/api/basic_json/from_bjdata/" rel="canonical"><link href=../flatten/ rel=prev><link href=../from_bson/ rel=next><link rel=icon href=../../../assets/images/favicon.png><meta name=generator content="mkdocs-1.6.1, mkdocs-material-9.7.6"><title>from_bjdata - JSON for Modern C++</title><link rel=stylesheet href=../../../assets/stylesheets/main.484c7ddc.min.css><link rel=stylesheet href=../../../assets/stylesheets/palette.ab4e12ef.min.css><link rel="stylesheet" href="../../../assets/external/fonts.googleapis.com/css.61a430c9.css"><style>:root{--md-text-font:"Roboto";--md-code-font:"JetBrains Mono"}</style><link rel=stylesheet href=../../../css/custom.css><script>__md_scope=new URL("../../..",location),__md_hash=e=>[...e].reduce(((e,_)=>(e<<5)-e+_.charCodeAt(0)),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script></head> <body dir=ltr data-md-color-scheme=default data-md-color-primary=indigo data-md-color-accent=indigo> <input class=md-toggle data-md-toggle=drawer type=checkbox id=__drawer autocomplete=off> <input class=md-toggle data-md-toggle=search type=checkbox id=__search autocomplete=off> <label class=md-overlay for=__drawer></label> <div data-md-component=skip> <a href=#nlohmannbasic_jsonfrom_bjdata class=md-skip> Skip to content </a> </div> <div data-md-component=announce> </div> <header class=md-header data-md-component=header> <nav class="md-header__inner md-grid" aria-label=Header> <a href=../../.. title="JSON for Modern C++" class="md-header__button md-logo" aria-label="JSON for Modern C++" data-md-component=logo> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54"/></svg> </a> <label class="md-header__button md-icon" for=__drawer> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M3 6h18v2H3zm0 5h18v2H3zm0 5h18v2H3z"/></svg> </label> <div class=md-header__title data-md-component=header-title> <div class=md-header__ellipsis> <div class=md-header__topic> <span class=md-ellipsis> JSON for Modern C++ </span> </div> <div class=md-header__topic data-md-component=header-topic> <span class=md-ellipsis> from_bjdata </span> </div> </div> </div> <form class=md-header__option data-md-component=palette> <input class=md-option data-md-color-media="(prefers-color-scheme: light)" data-md-color-scheme=default data-md-color-primary=indigo data-md-color-accent=indigo aria-label="Switch to dark mode" type=radio name=__palette id=__palette_0> <label class="md-header__button md-icon" title="Switch to dark mode" for=__palette_1 hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a4 4 0 0 0-4 4 4 4 0 0 0 4 4 4 4 0 0 0 4-4 4 4 0 0 0-4-4m0 10a6 6 0 0 1-6-6 6 6 0 0 1 6-6 6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12z"/></svg> </label> <input class=md-option data-md-color-media="(prefers-color-scheme: dark)" data-md-color-scheme=slate data-md-color-primary=indigo data-md-color-accent=indigo aria-label="Switch to light mode" type=radio name=__palette id=__palette_1> <label class="md-header__button md-icon" title="Switch to light mode" for=__palette_0 hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 18c-.89 0-1.74-.2-2.5-.55C11.56 16.5 13 14.42 13 12s-1.44-4.5-3.5-5.45C10.26 6.2 11.11 6 12 6a6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12z"/></svg> </label> </form> <script>var palette=__md_get("__palette");if(palette&&palette.color){if("(prefers-color-scheme)"===palette.color.media){var media=matchMedia("(prefers-color-scheme: light)"),input=document.querySelector(media.matches?"[data-md-color-media='(prefers-color-scheme: light)']":"[data-md-color-media='(prefers-color-scheme: dark)']");palette.color.media=input.getAttribute("data-md-color-media"),palette.color.scheme=input.getAttribute("data-md-color-scheme"),palette.color.primary=input.getAttribute("data-md-color-primary"),palette.color.accent=input.getAttribute("data-md-color-accent")}for(var[key,value]of Object.entries(palette.color))document.body.setAttribute("data-md-color-"+key,value)}</script> <label class="md-header__button md-icon" for=__search> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg> </label> <div class=md-search data-md-component=search role=dialog> <label class=md-search__overlay for=__search></label> <div class=md-search__inner role=search> <form class=md-search__form name=search> <input type=text class=md-search__input name=query aria-label=Search placeholder=Search autocapitalize=off autocorrect=off autocomplete=off spellcheck=false data-md-component=search-query required> <label class="md-search__icon md-icon" for=__search> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11z"/></svg> </label> <nav class=md-search__options aria-label=Search> <button type=reset class="md-search__icon md-icon" title=Clear aria-label=Clear tabindex=-1> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z"/></svg> </button> </nav> </form> <div class=md-search__output> <div class=md-search__scrollwrap tabindex=0 data-md-scrollfix> <div class=md-search-result data-md-component=search-result> <div class=md-search-result__meta> Initializing search </div> <ol class=md-search-result__list role=presentation></ol> </div> </div> </div> </div> </div> <div class=md-header__source> <a href="https://github.com/nlohmann/json" title="Go to repository" class="md-source" data-md-component="source"> <div class="md-source__icon md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </div> <div class=md-source__repository> nlohmann/json </div> </a> </div> </nav> </header> <div class=md-container data-md-component=container> <nav class=md-tabs aria-label=Tabs data-md-component=tabs> <div class=md-grid> <ul class=md-tabs__list> <li class=md-tabs__item> <a href=../../.. class=md-tabs__link> Home </a> </li> <li class=md-tabs__item> <a href=../../../features/arbitrary_types/ class=md-tabs__link> Features </a> </li> <li class=md-tabs__item> <a href=../../../integration/ class=md-tabs__link> Integration </a> </li> <li class="md-tabs__item md-tabs__item--active"> <a href=../ class=md-tabs__link> API Documentation </a> </li> <li class=md-tabs__item> <a href=../../../community/ class=md-tabs__link> Community </a> </li> </ul> </div> </nav> <main class=md-main data-md-component=main> <div class="md-main__inner md-grid"> <div class="md-sidebar md-sidebar--primary" data-md-component=sidebar data-md-type=navigation> <div class=md-sidebar__scrollwrap> <div class=md-sidebar__inner> <nav class="md-nav md-nav--primary md-nav--lifted" aria-label=Navigation data-md-level=0> <label class=md-nav__title for=__drawer> <a href=../../.. title="JSON for Modern C++" class="md-nav__button md-logo" aria-label="JSON for Modern C++" data-md-component=logo> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54"/></svg> </a> JSON for Modern C++ </label> <div class=md-nav__source> <a href="https://github.com/nlohmann/json" title="Go to repository" class="md-source" data-md-component="source"> <div class="md-source__icon md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </div> <div class=md-source__repository> nlohmann/json </div> </a> </div> <ul class=md-nav__list data-md-scrollfix> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_1> <div class="md-nav__link md-nav__container"> <a href=../../.. class="md-nav__link "> <span class=md-ellipsis> Home </span> </a> <label class="md-nav__link " for=__nav_1 id=__nav_1_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_1_label aria-expanded=false> <label class=md-nav__title for=__nav_1> <span class="md-nav__icon md-icon"></span> Home </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../home/license/ class=md-nav__link> <span class=md-ellipsis> License </span> </a> </li> <li class=md-nav__item> <a href=../../../home/faq/ class=md-nav__link> <span class=md-ellipsis> FAQ </span> </a> </li> <li class=md-nav__item> <a href=../../../home/exceptions/ class=md-nav__link> <span class=md-ellipsis> Exceptions </span> </a> </li> <li class=md-nav__item> <a href=../../../home/releases/ class=md-nav__link> <span class=md-ellipsis> Releases </span> </a> </li> <li class=md-nav__item> <a href=../../../home/design_goals/ class=md-nav__link> <span class=md-ellipsis> Design goals </span> </a> </li> <li class=md-nav__item> <a href=../../../home/architecture/ class=md-nav__link> <span class=md-ellipsis> Architecture </span> </a> </li> <li class=md-nav__item> <a href=../../../home/customers/ class=md-nav__link> <span class=md-ellipsis> Customers </span> </a> </li> <li class=md-nav__item> <a href=../../../home/sponsors/ class=md-nav__link> <span class=md-ellipsis> Sponsors </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2> <label class=md-nav__link for=__nav_2 id=__nav_2_label tabindex=0> <span class=md-ellipsis> Features </span> <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_2_label aria-expanded=false> <label class=md-nav__title for=__nav_2> <span class="md-nav__icon md-icon"></span> Features </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/arbitrary_types/ class=md-nav__link> <span class=md-ellipsis> Arbitrary Type Conversions </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_2> <div class="md-nav__link md-nav__container"> <a href=../../../features/binary_formats/ class="md-nav__link "> <span class=md-ellipsis> Binary Formats </span> </a> <label class="md-nav__link " for=__nav_2_2 id=__nav_2_2_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_2_label aria-expanded=false> <label class=md-nav__title for=__nav_2_2> <span class="md-nav__icon md-icon"></span> Binary Formats </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/binary_formats/bjdata/ class=md-nav__link> <span class=md-ellipsis> BJData </span> </a> </li> <li class=md-nav__item> <a href=../../../features/binary_formats/bson/ class=md-nav__link> <span class=md-ellipsis> BSON </span> </a> </li> <li class=md-nav__item> <a href=../../../features/binary_formats/cbor/ class=md-nav__link> <span class=md-ellipsis> CBOR </span> </a> </li> <li class=md-nav__item> <a href=../../../features/binary_formats/messagepack/ class=md-nav__link> <span class=md-ellipsis> MessagePack </span> </a> </li> <li class=md-nav__item> <a href=../../../features/binary_formats/ubjson/ class=md-nav__link> <span class=md-ellipsis> UBJSON </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../../features/binary_values/ class=md-nav__link> <span class=md-ellipsis> Binary Values </span> </a> </li> <li class=md-nav__item> <a href=../../../features/comments/ class=md-nav__link> <span class=md-ellipsis> Comments </span> </a> </li> <li class=md-nav__item> <a href=../../../features/trailing_commas/ class=md-nav__link> <span class=md-ellipsis> Trailing Commas </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_6> <div class="md-nav__link md-nav__container"> <a href=../../../features/element_access/ class="md-nav__link "> <span class=md-ellipsis> Element Access </span> </a> <label class="md-nav__link " for=__nav_2_6 id=__nav_2_6_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_6_label aria-expanded=false> <label class=md-nav__title for=__nav_2_6> <span class="md-nav__icon md-icon"></span> Element Access </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/element_access/unchecked_access/ class=md-nav__link> <span class=md-ellipsis> Unchecked access: operator[] </span> </a> </li> <li class=md-nav__item> <a href=../../../features/element_access/checked_access/ class=md-nav__link> <span class=md-ellipsis> Checked access: at </span> </a> </li> <li class=md-nav__item> <a href=../../../features/element_access/default_value/ class=md-nav__link> <span class=md-ellipsis> Access with default value: value </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../../features/iterators/ class=md-nav__link> <span class=md-ellipsis> Iterators </span> </a> </li> <li class=md-nav__item> <a href=../../../features/json_pointer/ class=md-nav__link> <span class=md-ellipsis> JSON Pointer </span> </a> </li> <li class=md-nav__item> <a href=../../../features/json_patch/ class=md-nav__link> <span class=md-ellipsis> JSON Patch and Diff </span> </a> </li> <li class=md-nav__item> <a href=../../../features/merge_patch/ class=md-nav__link> <span class=md-ellipsis> JSON Merge Patch </span> </a> </li> <li class=md-nav__item> <a href=../../../features/modules/ class=md-nav__link> <span class=md-ellipsis> Modules </span> </a> </li> <li class=md-nav__item> <a href=../../../features/namespace/ class=md-nav__link> <span class=md-ellipsis> nlohmann Namespace </span> </a> </li> <li class=md-nav__item> <a href=../../../features/object_order/ class=md-nav__link> <span class=md-ellipsis> Object Order </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_14> <div class="md-nav__link md-nav__container"> <a href=../../../features/parsing/ class="md-nav__link "> <span class=md-ellipsis> Parsing </span> </a> <label class="md-nav__link " for=__nav_2_14 id=__nav_2_14_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_14_label aria-expanded=false> <label class=md-nav__title for=__nav_2_14> <span class="md-nav__icon md-icon"></span> Parsing </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/parsing/json_lines/ class=md-nav__link> <span class=md-ellipsis> JSON Lines </span> </a> </li> <li class=md-nav__item> <a href=../../../features/parsing/parse_exceptions/ class=md-nav__link> <span class=md-ellipsis> Parsing and Exceptions </span> </a> </li> <li class=md-nav__item> <a href=../../../features/parsing/parser_callbacks/ class=md-nav__link> <span class=md-ellipsis> Parser Callbacks </span> </a> </li> <li class=md-nav__item> <a href=../../../features/parsing/sax_interface/ class=md-nav__link> <span class=md-ellipsis> SAX Interface </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../../features/assertions/ class=md-nav__link> <span class=md-ellipsis> Runtime Assertions </span> </a> </li> <li class=md-nav__item> <a href=../../../features/enum_conversion/ class=md-nav__link> <span class=md-ellipsis> Specializing enum conversion </span> </a> </li> <li class=md-nav__item> <a href=../../../features/macros/ class=md-nav__link> <span class=md-ellipsis> Supported Macros </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_18> <div class="md-nav__link md-nav__container"> <a href=../../../features/types/ class="md-nav__link "> <span class=md-ellipsis> Types </span> </a> <label class="md-nav__link " for=__nav_2_18 id=__nav_2_18_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_18_label aria-expanded=false> <label class=md-nav__title for=__nav_2_18> <span class="md-nav__icon md-icon"></span> Types </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/types/number_handling/ class=md-nav__link> <span class=md-ellipsis> Number Handling </span> </a> </li> </ul> </nav> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_3> <div class="md-nav__link md-nav__container"> <a href=../../../integration/ class="md-nav__link "> <span class=md-ellipsis> Integration </span> </a> <label class="md-nav__link " for=__nav_3 id=__nav_3_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_3_label aria-expanded=false> <label class=md-nav__title for=__nav_3> <span class="md-nav__icon md-icon"></span> Integration </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../integration/migration_guide/ class=md-nav__link> <span class=md-ellipsis> Migration Guide </span> </a> </li> <li class=md-nav__item> <a href=../../../integration/cmake/ class=md-nav__link> <span class=md-ellipsis> CMake </span> </a> </li> <li class=md-nav__item> <a href=../../../integration/package_managers/ class=md-nav__link> <span class=md-ellipsis> Package Managers </span> </a> </li> <li class=md-nav__item> <a href=../../../integration/pkg-config/ class=md-nav__link> <span class=md-ellipsis> Pkg-config </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--active md-nav__item--section md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4 checked> <label class=md-nav__link for=__nav_4 id=__nav_4_label tabindex> <span class=md-ellipsis> API Documentation </span> <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_4_label aria-expanded=true> <label class=md-nav__title for=__nav_4> <span class="md-nav__icon md-icon"></span> API Documentation </label> <ul class=md-nav__list data-md-scrollfix> <li class="md-nav__item md-nav__item--active md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_1 checked> <div class="md-nav__link md-nav__container"> <a href=../ class="md-nav__link "> <span class=md-ellipsis> basic_json </span> </a> <label class="md-nav__link " for=__nav_4_1 id=__nav_4_1_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_1_label aria-expanded=true> <label class=md-nav__title for=__nav_4_1> <span class="md-nav__icon md-icon"></span> basic_json </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../basic_json/ class=md-nav__link> <span class=md-ellipsis> (Constructor) </span> </a> </li> <li class=md-nav__item> <a href=../~basic_json/ class=md-nav__link> <span class=md-ellipsis> (Destructor) </span> </a> </li> <li class=md-nav__item> <a href=../accept/ class=md-nav__link> <span class=md-ellipsis> accept </span> </a> </li> <li class=md-nav__item> <a href=../array/ class=md-nav__link> <span class=md-ellipsis> array </span> </a> </li> <li class=md-nav__item> <a href=../array_t/ class=md-nav__link> <span class=md-ellipsis> array_t </span> </a> </li> <li class=md-nav__item> <a href=../at/ class=md-nav__link> <span class=md-ellipsis> at </span> </a> </li> <li class=md-nav__item> <a href=../back/ class=md-nav__link> <span class=md-ellipsis> back </span> </a> </li> <li class=md-nav__item> <a href=../begin/ class=md-nav__link> <span class=md-ellipsis> begin </span> </a> </li> <li class=md-nav__item> <a href=../binary/ class=md-nav__link> <span class=md-ellipsis> binary </span> </a> </li> <li class=md-nav__item> <a href=../binary_t/ class=md-nav__link> <span class=md-ellipsis> binary_t </span> </a> </li> <li class=md-nav__item> <a href=../boolean_t/ class=md-nav__link> <span class=md-ellipsis> boolean_t </span> </a> </li> <li class=md-nav__item> <a href=../cbegin/ class=md-nav__link> <span class=md-ellipsis> cbegin </span> </a> </li> <li class=md-nav__item> <a href=../cbor_tag_handler_t/ class=md-nav__link> <span class=md-ellipsis> cbor_tag_handler_t </span> </a> </li> <li class=md-nav__item> <a href=../cend/ class=md-nav__link> <span class=md-ellipsis> cend </span> </a> </li> <li class=md-nav__item> <a href=../clear/ class=md-nav__link> <span class=md-ellipsis> clear </span> </a> </li> <li class=md-nav__item> <a href=../contains/ class=md-nav__link> <span class=md-ellipsis> contains </span> </a> </li> <li class=md-nav__item> <a href=../count/ class=md-nav__link> <span class=md-ellipsis> count </span> </a> </li> <li class=md-nav__item> <a href=../crbegin/ class=md-nav__link> <span class=md-ellipsis> crbegin </span> </a> </li> <li class=md-nav__item> <a href=../crend/ class=md-nav__link> <span class=md-ellipsis> crend </span> </a> </li> <li class=md-nav__item> <a href=../default_object_comparator_t/ class=md-nav__link> <span class=md-ellipsis> default_object_comparator_t </span> </a> </li> <li class=md-nav__item> <a href=../diff/ class=md-nav__link> <span class=md-ellipsis> diff </span> </a> </li> <li class=md-nav__item> <a href=../dump/ class=md-nav__link> <span class=md-ellipsis> dump </span> </a> </li> <li class=md-nav__item> <a href=../emplace/ class=md-nav__link> <span class=md-ellipsis> emplace </span> </a> </li> <li class=md-nav__item> <a href=../emplace_back/ class=md-nav__link> <span class=md-ellipsis> emplace_back </span> </a> </li> <li class=md-nav__item> <a href=../empty/ class=md-nav__link> <span class=md-ellipsis> empty </span> </a> </li> <li class=md-nav__item> <a href=../end/ class=md-nav__link> <span class=md-ellipsis> end </span> </a> </li> <li class=md-nav__item> <a href=../end_pos/ class=md-nav__link> <span class=md-ellipsis> end_pos </span> </a> </li> <li class=md-nav__item> <a href=../erase/ class=md-nav__link> <span class=md-ellipsis> erase </span> </a> </li> <li class=md-nav__item> <a href=../error_handler_t/ class=md-nav__link> <span class=md-ellipsis> error_handler_t </span> </a> </li> <li class=md-nav__item> <a href=../exception/ class=md-nav__link> <span class=md-ellipsis> exception </span> </a> </li> <li class=md-nav__item> <a href=../find/ class=md-nav__link> <span class=md-ellipsis> find </span> </a> </li> <li class=md-nav__item> <a href=../flatten/ class=md-nav__link> <span class=md-ellipsis> flatten </span> </a> </li> <li class="md-nav__item md-nav__item--active"> <input class="md-nav__toggle md-toggle" type=checkbox id=__toc> <label class="md-nav__link md-nav__link--active" for=__toc> <span class=md-ellipsis> from_bjdata </span> <span class="md-nav__icon md-icon"></span> </label> <a href=./ class="md-nav__link md-nav__link--active"> <span class=md-ellipsis> from_bjdata </span> </a> <nav class="md-nav md-nav--secondary" aria-label="Table of contents"> <label class=md-nav__title for=__toc> <span class="md-nav__icon md-icon"></span> Table of contents </label> <ul class=md-nav__list data-md-component=toc data-md-scrollfix> <li class=md-nav__item> <a href=#template-parameters class=md-nav__link> <span class=md-ellipsis> Template parameters </span> </a> </li> <li class=md-nav__item> <a href=#parameters class=md-nav__link> <span class=md-ellipsis> Parameters </span> </a> </li> <li class=md-nav__item> <a href=#return-value class=md-nav__link> <span class=md-ellipsis> Return value </span> </a> </li> <li class=md-nav__item> <a href=#exception-safety class=md-nav__link> <span class=md-ellipsis> Exception safety </span> </a> </li> <li class=md-nav__item> <a href=#exceptions class=md-nav__link> <span class=md-ellipsis> Exceptions </span> </a> </li> <li class=md-nav__item> <a href=#complexity class=md-nav__link> <span class=md-ellipsis> Complexity </span> </a> </li> <li class=md-nav__item> <a href=#examples class=md-nav__link> <span class=md-ellipsis> Examples </span> </a> </li> <li class=md-nav__item> <a href=#version-history class=md-nav__link> <span class=md-ellipsis> Version history </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../from_bson/ class=md-nav__link> <span class=md-ellipsis> from_bson </span> </a> </li> <li class=md-nav__item> <a href=../from_cbor/ class=md-nav__link> <span class=md-ellipsis> from_cbor </span> </a> </li> <li class=md-nav__item> <a href=../from_msgpack/ class=md-nav__link> <span class=md-ellipsis> from_msgpack </span> </a> </li> <li class=md-nav__item> <a href=../from_ubjson/ class=md-nav__link> <span class=md-ellipsis> from_ubjson </span> </a> </li> <li class=md-nav__item> <a href=../front/ class=md-nav__link> <span class=md-ellipsis> front </span> </a> </li> <li class=md-nav__item> <a href=../get/ class=md-nav__link> <span class=md-ellipsis> get </span> </a> </li> <li class=md-nav__item> <a href=../get_allocator/ class=md-nav__link> <span class=md-ellipsis> get_allocator </span> </a> </li> <li class=md-nav__item> <a href=../get_binary/ class=md-nav__link> <span class=md-ellipsis> get_binary </span> </a> </li> <li class=md-nav__item> <a href=../get_ptr/ class=md-nav__link> <span class=md-ellipsis> get_ptr </span> </a> </li> <li class=md-nav__item> <a href=../get_ref/ class=md-nav__link> <span class=md-ellipsis> get_ref </span> </a> </li> <li class=md-nav__item> <a href=../get_to/ class=md-nav__link> <span class=md-ellipsis> get_to </span> </a> </li> <li class=md-nav__item> <a href=../std_hash/ class=md-nav__link> <span class=md-ellipsis> std::hash&lt;basic_json&gt; </span> </a> </li> <li class=md-nav__item> <a href=../input_format_t/ class=md-nav__link> <span class=md-ellipsis> input_format_t </span> </a> </li> <li class=md-nav__item> <a href=../insert/ class=md-nav__link> <span class=md-ellipsis> insert </span> </a> </li> <li class=md-nav__item> <a href=../invalid_iterator/ class=md-nav__link> <span class=md-ellipsis> invalid_iterator </span> </a> </li> <li class=md-nav__item> <a href=../is_array/ class=md-nav__link> <span class=md-ellipsis> is_array </span> </a> </li> <li class=md-nav__item> <a href=../is_binary/ class=md-nav__link> <span class=md-ellipsis> is_binary </span> </a> </li> <li class=md-nav__item> <a href=../is_boolean/ class=md-nav__link> <span class=md-ellipsis> is_boolean </span> </a> </li> <li class=md-nav__item> <a href=../is_discarded/ class=md-nav__link> <span class=md-ellipsis> is_discarded </span> </a> </li> <li class=md-nav__item> <a href=../is_null/ class=md-nav__link> <span class=md-ellipsis> is_null </span> </a> </li> <li class=md-nav__item> <a href=../is_number/ class=md-nav__link> <span class=md-ellipsis> is_number </span> </a> </li> <li class=md-nav__item> <a href=../is_number_float/ class=md-nav__link> <span class=md-ellipsis> is_number_float </span> </a> </li> <li class=md-nav__item> <a href=../is_number_integer/ class=md-nav__link> <span class=md-ellipsis> is_number_integer </span> </a> </li> <li class=md-nav__item> <a href=../is_number_unsigned/ class=md-nav__link> <span class=md-ellipsis> is_number_unsigned </span> </a> </li> <li class=md-nav__item> <a href=../is_object/ class=md-nav__link> <span class=md-ellipsis> is_object </span> </a> </li> <li class=md-nav__item> <a href=../is_primitive/ class=md-nav__link> <span class=md-ellipsis> is_primitive </span> </a> </li> <li class=md-nav__item> <a href=../is_string/ class=md-nav__link> <span class=md-ellipsis> is_string </span> </a> </li> <li class=md-nav__item> <a href=../is_structured/ class=md-nav__link> <span class=md-ellipsis> is_structured </span> </a> </li> <li class=md-nav__item> <a href=../items/ class=md-nav__link> <span class=md-ellipsis> items </span> </a> </li> <li class=md-nav__item> <a href=../json_base_class_t/ class=md-nav__link> <span class=md-ellipsis> json_base_class_t </span> </a> </li> <li class=md-nav__item> <a href=../json_serializer/ class=md-nav__link> <span class=md-ellipsis> json_serializer </span> </a> </li> <li class=md-nav__item> <a href=../max_size/ class=md-nav__link> <span class=md-ellipsis> max_size </span> </a> </li> <li class=md-nav__item> <a href=../meta/ class=md-nav__link> <span class=md-ellipsis> meta </span> </a> </li> <li class=md-nav__item> <a href=../merge_patch/ class=md-nav__link> <span class=md-ellipsis> merge_patch </span> </a> </li> <li class=md-nav__item> <a href=../number_float_t/ class=md-nav__link> <span class=md-ellipsis> number_float_t </span> </a> </li> <li class=md-nav__item> <a href=../number_integer_t/ class=md-nav__link> <span class=md-ellipsis> number_integer_t </span> </a> </li> <li class=md-nav__item> <a href=../number_unsigned_t/ class=md-nav__link> <span class=md-ellipsis> number_unsigned_t </span> </a> </li> <li class=md-nav__item> <a href=../object/ class=md-nav__link> <span class=md-ellipsis> object </span> </a> </li> <li class=md-nav__item> <a href=../object_comparator_t/ class=md-nav__link> <span class=md-ellipsis> object_comparator_t </span> </a> </li> <li class=md-nav__item> <a href=../object_t/ class=md-nav__link> <span class=md-ellipsis> object_t </span> </a> </li> <li class=md-nav__item> <a href=../operator_ValueType/ class=md-nav__link> <span class=md-ellipsis> operator ValueType </span> </a> </li> <li class=md-nav__item> <a href=../operator_value_t/ class=md-nav__link> <span class=md-ellipsis> operator value_t </span> </a> </li> <li class=md-nav__item> <a href=../operator%5B%5D/ class=md-nav__link> <span class=md-ellipsis> operator[] </span> </a> </li> <li class=md-nav__item> <a href=../operator%3D/ class=md-nav__link> <span class=md-ellipsis> operator= </span> </a> </li> <li class=md-nav__item> <a href=../operator%2B%3D/ class=md-nav__link> <span class=md-ellipsis> operator+= </span> </a> </li> <li class=md-nav__item> <a href=../operator_eq/ class=md-nav__link> <span class=md-ellipsis> operator== </span> </a> </li> <li class=md-nav__item> <a href=../operator_ne/ class=md-nav__link> <span class=md-ellipsis> operator!= </span> </a> </li> <li class=md-nav__item> <a href=../operator_lt/ class=md-nav__link> <span class=md-ellipsis> operator< </span> </a> </li> <li class=md-nav__item> <a href=../operator_gt/ class=md-nav__link> <span class=md-ellipsis> operator> </span> </a> </li> <li class=md-nav__item> <a href=../operator_le/ class=md-nav__link> <span class=md-ellipsis> operator<= </span> </a> </li> <li class=md-nav__item> <a href=../operator_ge/ class=md-nav__link> <span class=md-ellipsis> operator>= </span> </a> </li> <li class=md-nav__item> <a href=../operator_spaceship/ class=md-nav__link> <span class=md-ellipsis> operator<=> </span> </a> </li> <li class=md-nav__item> <a href=../out_of_range/ class=md-nav__link> <span class=md-ellipsis> out_of_range </span> </a> </li> <li class=md-nav__item> <a href=../other_error/ class=md-nav__link> <span class=md-ellipsis> other_error </span> </a> </li> <li class=md-nav__item> <a href=../parse/ class=md-nav__link> <span class=md-ellipsis> parse </span> </a> </li> <li class=md-nav__item> <a href=../parse_error/ class=md-nav__link> <span class=md-ellipsis> parse_error </span> </a> </li> <li class=md-nav__item> <a href=../parse_event_t/ class=md-nav__link> <span class=md-ellipsis> parse_event_t </span> </a> </li> <li class=md-nav__item> <a href=../parser_callback_t/ class=md-nav__link> <span class=md-ellipsis> parser_callback_t </span> </a> </li> <li class=md-nav__item> <a href=../patch/ class=md-nav__link> <span class=md-ellipsis> patch </span> </a> </li> <li class=md-nav__item> <a href=../patch_inplace/ class=md-nav__link> <span class=md-ellipsis> patch_inplace </span> </a> </li> <li class=md-nav__item> <a href=../push_back/ class=md-nav__link> <span class=md-ellipsis> push_back </span> </a> </li> <li class=md-nav__item> <a href=../rbegin/ class=md-nav__link> <span class=md-ellipsis> rbegin </span> </a> </li> <li class=md-nav__item> <a href=../rend/ class=md-nav__link> <span class=md-ellipsis> rend </span> </a> </li> <li class=md-nav__item> <a href=../sax_parse/ class=md-nav__link> <span class=md-ellipsis> sax_parse </span> </a> </li> <li class=md-nav__item> <a href=../size/ class=md-nav__link> <span class=md-ellipsis> size </span> </a> </li> <li class=md-nav__item> <a href=../start_pos/ class=md-nav__link> <span class=md-ellipsis> start_pos </span> </a> </li> <li class=md-nav__item> <a href=../string_t/ class=md-nav__link> <span class=md-ellipsis> string_t </span> </a> </li> <li class=md-nav__item> <a href=../swap/ class=md-nav__link> <span class=md-ellipsis> swap </span> </a> </li> <li class=md-nav__item> <a href=../std_swap/ class=md-nav__link> <span class=md-ellipsis> std::swap&lt;basic_json&gt; </span> </a> </li> <li class=md-nav__item> <a href=../to_bjdata/ class=md-nav__link> <span class=md-ellipsis> to_bjdata </span> </a> </li> <li class=md-nav__item> <a href=../to_bson/ class=md-nav__link> <span class=md-ellipsis> to_bson </span> </a> </li> <li class=md-nav__item> <a href=../to_cbor/ class=md-nav__link> <span class=md-ellipsis> to_cbor </span> </a> </li> <li class=md-nav__item> <a href=../to_msgpack/ class=md-nav__link> <span class=md-ellipsis> to_msgpack </span> </a> </li> <li class=md-nav__item> <a href=../to_string/ class=md-nav__link> <span class=md-ellipsis> to_string </span> </a> </li> <li class=md-nav__item> <a href=../to_ubjson/ class=md-nav__link> <span class=md-ellipsis> to_ubjson </span> </a> </li> <li class=md-nav__item> <a href=../type/ class=md-nav__link> <span class=md-ellipsis> type </span> </a> </li> <li class=md-nav__item> <a href=../type_error/ class=md-nav__link> <span class=md-ellipsis> type_error </span> </a> </li> <li class=md-nav__item> <a href=../type_name/ class=md-nav__link> <span class=md-ellipsis> type_name </span> </a> </li> <li class=md-nav__item> <a href=../unflatten/ class=md-nav__link> <span class=md-ellipsis> unflatten </span> </a> </li> <li class=md-nav__item> <a href=../update/ class=md-nav__link> <span class=md-ellipsis> update </span> </a> </li> <li class=md-nav__item> <a href=../value/ class=md-nav__link> <span class=md-ellipsis> value </span> </a> </li> <li class=md-nav__item> <a href=../value_t/ class=md-nav__link> <span class=md-ellipsis> value_t </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_2> <div class="md-nav__link md-nav__container"> <a href=../../byte_container_with_subtype/ class="md-nav__link "> <span class=md-ellipsis> byte_container_with_subtype </span> </a> <label class="md-nav__link " for=__nav_4_2 id=__nav_4_2_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_2_label aria-expanded=false> <label class=md-nav__title for=__nav_4_2> <span class="md-nav__icon md-icon"></span> byte_container_with_subtype </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../byte_container_with_subtype/byte_container_with_subtype/ class=md-nav__link> <span class=md-ellipsis> (constructor) </span> </a> </li> <li class=md-nav__item> <a href=../../byte_container_with_subtype/clear_subtype/ class=md-nav__link> <span class=md-ellipsis> clear_subtype </span> </a> </li> <li class=md-nav__item> <a href=../../byte_container_with_subtype/has_subtype/ class=md-nav__link> <span class=md-ellipsis> has_subtype </span> </a> </li> <li class=md-nav__item> <a href=../../byte_container_with_subtype/set_subtype/ class=md-nav__link> <span class=md-ellipsis> set_subtype </span> </a> </li> <li class=md-nav__item> <a href=../../byte_container_with_subtype/subtype/ class=md-nav__link> <span class=md-ellipsis> subtype </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_3> <div class="md-nav__link md-nav__container"> <a href=../../adl_serializer/ class="md-nav__link "> <span class=md-ellipsis> adl_serializer </span> </a> <label class="md-nav__link " for=__nav_4_3 id=__nav_4_3_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_3_label aria-expanded=false> <label class=md-nav__title for=__nav_4_3> <span class="md-nav__icon md-icon"></span> adl_serializer </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../adl_serializer/from_json/ class=md-nav__link> <span class=md-ellipsis> from_json </span> </a> </li> <li class=md-nav__item> <a href=../../adl_serializer/to_json/ class=md-nav__link> <span class=md-ellipsis> to_json </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../json/ class=md-nav__link> <span class=md-ellipsis> json </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_5> <div class="md-nav__link md-nav__container"> <a href=../../json_pointer/ class="md-nav__link "> <span class=md-ellipsis> json_pointer </span> </a> <label class="md-nav__link " for=__nav_4_5 id=__nav_4_5_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_5_label aria-expanded=false> <label class=md-nav__title for=__nav_4_5> <span class="md-nav__icon md-icon"></span> json_pointer </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../json_pointer/json_pointer/ class=md-nav__link> <span class=md-ellipsis> (Constructor) </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/back/ class=md-nav__link> <span class=md-ellipsis> back </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/empty/ class=md-nav__link> <span class=md-ellipsis> empty </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/front/ class=md-nav__link> <span class=md-ellipsis> front </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_string_t/ class=md-nav__link> <span class=md-ellipsis> operator string_t </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_eq/ class=md-nav__link> <span class=md-ellipsis> operator== </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_ne/ class=md-nav__link> <span class=md-ellipsis> operator!= </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_slash/ class=md-nav__link> <span class=md-ellipsis> operator/ </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_slasheq/ class=md-nav__link> <span class=md-ellipsis> operator/= </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/parent_pointer/ class=md-nav__link> <span class=md-ellipsis> parent_pointer </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/pop_back/ class=md-nav__link> <span class=md-ellipsis> pop_back </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/pop_front/ class=md-nav__link> <span class=md-ellipsis> pop_front </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/push_back/ class=md-nav__link> <span class=md-ellipsis> push_back </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/push_front/ class=md-nav__link> <span class=md-ellipsis> push_front </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/string_t/ class=md-nav__link> <span class=md-ellipsis> string_t </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/to_string/ class=md-nav__link> <span class=md-ellipsis> to_string </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_6> <div class="md-nav__link md-nav__container"> <a href=../../json_sax/ class="md-nav__link "> <span class=md-ellipsis> json_sax </span> </a> <label class="md-nav__link " for=__nav_4_6 id=__nav_4_6_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_6_label aria-expanded=false> <label class=md-nav__title for=__nav_4_6> <span class="md-nav__icon md-icon"></span> json_sax </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../json_sax/binary/ class=md-nav__link> <span class=md-ellipsis> binary </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/boolean/ class=md-nav__link> <span class=md-ellipsis> boolean </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/end_array/ class=md-nav__link> <span class=md-ellipsis> end_array </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/end_object/ class=md-nav__link> <span class=md-ellipsis> end_object </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/key/ class=md-nav__link> <span class=md-ellipsis> key </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/null/ class=md-nav__link> <span class=md-ellipsis> null </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/number_float/ class=md-nav__link> <span class=md-ellipsis> number_float </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/number_integer/ class=md-nav__link> <span class=md-ellipsis> number_integer </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/number_unsigned/ class=md-nav__link> <span class=md-ellipsis> number_unsigned </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/parse_error/ class=md-nav__link> <span class=md-ellipsis> parse_error </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/start_array/ class=md-nav__link> <span class=md-ellipsis> start_array </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/start_object/ class=md-nav__link> <span class=md-ellipsis> start_object </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/string/ class=md-nav__link> <span class=md-ellipsis> string </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../operator_ltlt/ class=md-nav__link> <span class=md-ellipsis> operator<<(basic_json), operator<<(json_pointer) </span> </a> </li> <li class=md-nav__item> <a href=../../operator_gtgt/ class=md-nav__link> <span class=md-ellipsis> operator>>(basic_json) </span> </a> </li> <li class=md-nav__item> <a href=../../operator_literal_json/ class=md-nav__link> <span class=md-ellipsis> operator""_json </span> </a> </li> <li class=md-nav__item> <a href=../../operator_literal_json_pointer/ class=md-nav__link> <span class=md-ellipsis> operator""_json_pointer </span> </a> </li> <li class=md-nav__item> <a href=../../ordered_json/ class=md-nav__link> <span class=md-ellipsis> ordered_json </span> </a> </li> <li class=md-nav__item> <a href=../../ordered_map/ class=md-nav__link> <span class=md-ellipsis> ordered_map </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_13> <div class="md-nav__link md-nav__container"> <a href=../../macros/ class="md-nav__link "> <span class=md-ellipsis> macros </span> </a> <label class="md-nav__link " for=__nav_4_13 id=__nav_4_13_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_13_label aria-expanded=false> <label class=md-nav__title for=__nav_4_13> <span class="md-nav__icon md-icon"></span> macros </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../macros/json_assert/ class=md-nav__link> <span class=md-ellipsis> JSON_ASSERT </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_brace_init_copy_semantics/ class=md-nav__link> <span class=md-ellipsis> JSON_BRACE_INIT_COPY_SEMANTICS </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_throw_user/ class=md-nav__link> <span class=md-ellipsis> JSON_CATCH_USER, JSON_THROW_USER, JSON_TRY_USER </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_diagnostics/ class=md-nav__link> <span class=md-ellipsis> JSON_DIAGNOSTICS </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_diagnostic_positions/ class=md-nav__link> <span class=md-ellipsis> JSON_DIAGNOSTIC_POSITIONS </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_disable_enum_serialization/ class=md-nav__link> <span class=md-ellipsis> JSON_DISABLE_ENUM_SERIALIZATION </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_has_cpp_11/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_CPP_11, JSON_HAS_CPP_14, JSON_HAS_CPP_17, JSON_HAS_CPP_20 </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_has_filesystem/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_EXPERIMENTAL_FILESYSTEM, JSON_HAS_FILESYSTEM </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_has_ranges/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_RANGES </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_has_static_rtti/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_STATIC_RTTI </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_has_three_way_comparison/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_THREE_WAY_COMPARISON </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_noexception/ class=md-nav__link> <span class=md-ellipsis> JSON_NOEXCEPTION </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_no_io/ class=md-nav__link> <span class=md-ellipsis> JSON_NO_IO </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_skip_library_version_check/ class=md-nav__link> <span class=md-ellipsis> JSON_SKIP_LIBRARY_VERSION_CHECK </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_skip_unsupported_compiler_check/ class=md-nav__link> <span class=md-ellipsis> JSON_SKIP_UNSUPPORTED_COMPILER_CHECK </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_use_global_udls/ class=md-nav__link> <span class=md-ellipsis> JSON_USE_GLOBAL_UDLS </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_use_implicit_conversions/ class=md-nav__link> <span class=md-ellipsis> JSON_USE_IMPLICIT_CONVERSIONS </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_use_legacy_discarded_value_comparison/ class=md-nav__link> <span class=md-ellipsis> JSON_USE_LEGACY_DISCARDED_VALUE_COMPARISON </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_define_derived_type/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_ONLY_SERIALIZE, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_define_type_intrusive/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_TYPE_INTRUSIVE, NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_TYPE_INTRUSIVE_ONLY_SERIALIZE </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_define_type_non_intrusive/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_define_type_with_names/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_TYPE_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_namespace/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_NAMESPACE </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_namespace_begin/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_NAMESPACE_BEGIN, NLOHMANN_JSON_NAMESPACE_END </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_namespace_no_version/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_NAMESPACE_NO_VERSION </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_serialize_enum/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_SERIALIZE_ENUM </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_serialize_enum_strict/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_SERIALIZE_ENUM_STRICT </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_version_major/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_VERSION_MAJOR, NLOHMANN_JSON_VERSION_MINOR, NLOHMANN_JSON_VERSION_PATCH </span> </a> </li> </ul> </nav> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_5> <div class="md-nav__link md-nav__container"> <a href=../../../community/ class="md-nav__link "> <span class=md-ellipsis> Community </span> </a> <label class="md-nav__link " for=__nav_5 id=__nav_5_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_5_label aria-expanded=false> <label class=md-nav__title for=__nav_5> <span class="md-nav__icon md-icon"></span> Community </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../community/code_of_conduct/ class=md-nav__link> <span class=md-ellipsis> Code of Conduct </span> </a> </li> <li class=md-nav__item> <a href=../../../community/contribution_guidelines/ class=md-nav__link> <span class=md-ellipsis> Contribution Guidelines </span> </a> </li> <li class=md-nav__item> <a href=../../../community/quality_assurance/ class=md-nav__link> <span class=md-ellipsis> Quality assurance </span> </a> </li> <li class=md-nav__item> <a href=../../../community/governance/ class=md-nav__link> <span class=md-ellipsis> Governance </span> </a> </li> <li class=md-nav__item> <a href=../../../community/security_policy/ class=md-nav__link> <span class=md-ellipsis> Security Policy </span> </a> </li> </ul> </nav> </li> </ul> </nav> </div> </div> </div> <div class="md-sidebar md-sidebar--secondary" data-md-component=sidebar data-md-type=toc> <div class=md-sidebar__scrollwrap> <div class=md-sidebar__inner> <nav class="md-nav md-nav--secondary" aria-label="Table of contents"> <label class=md-nav__title for=__toc> <span class="md-nav__icon md-icon"></span> Table of contents </label> <ul class=md-nav__list data-md-component=toc data-md-scrollfix> <li class=md-nav__item> <a href=#template-parameters class=md-nav__link> <span class=md-ellipsis> Template parameters </span> </a> </li> <li class=md-nav__item> <a href=#parameters class=md-nav__link> <span class=md-ellipsis> Parameters </span> </a> </li> <li class=md-nav__item> <a href=#return-value class=md-nav__link> <span class=md-ellipsis> Return value </span> </a> </li> <li class=md-nav__item> <a href=#exception-safety class=md-nav__link> <span class=md-ellipsis> Exception safety </span> </a> </li> <li class=md-nav__item> <a href=#exceptions class=md-nav__link> <span class=md-ellipsis> Exceptions </span> </a> </li> <li class=md-nav__item> <a href=#complexity class=md-nav__link> <span class=md-ellipsis> Complexity </span> </a> </li> <li class=md-nav__item> <a href=#examples class=md-nav__link> <span class=md-ellipsis> Examples </span> </a> </li> <li class=md-nav__item> <a href=#version-history class=md-nav__link> <span class=md-ellipsis> Version history </span> </a> </li> </ul> </nav> </div> </div> </div> <div class=md-content data-md-component=content> <article class="md-content__inner md-typeset"> <a href="https://github.com/nlohmann/json/edit/develop/docs/mkdocs/docs/api/basic_json/from_bjdata.md" title="Edit this page" class="md-content__button md-icon" rel="edit"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M10 20H6V4h7v5h5v3.1l2-2V8l-6-6H6c-1.1 0-2 .9-2 2v16c0 1.1.9 2 2 2h4zm10.2-7c.1 0 .3.1.4.2l1.3 1.3c.2.2.2.6 0 .8l-1 1-2.1-2.1 1-1c.1-.1.2-.2.4-.2m0 3.9L14.1 23H12v-2.1l6.1-6.1z"/></svg> </a> <a href="https://github.com/nlohmann/json/raw/develop/docs/mkdocs/docs/api/basic_json/from_bjdata.md" title="View source of this page" class="md-content__button md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M17 18c.56 0 1 .44 1 1s-.44 1-1 1-1-.44-1-1 .44-1 1-1m0-3c-2.73 0-5.06 1.66-6 4 .94 2.34 3.27 4 6 4s5.06-1.66 6-4c-.94-2.34-3.27-4-6-4m0 6.5a2.5 2.5 0 0 1-2.5-2.5 2.5 2.5 0 0 1 2.5-2.5 2.5 2.5 0 0 1 2.5 2.5 2.5 2.5 0 0 1-2.5 2.5M9.27 20H6V4h7v5h5v4.07c.7.08 1.36.25 2 .49V8l-6-6H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h4.5a8.2 8.2 0 0 1-1.23-2"/></svg> </a> <h1 id=nlohmannbasic_jsonfrom_bjdata><small>nlohmann::basic_json::</small>from_bjdata<a class=headerlink href=#nlohmannbasic_jsonfrom_bjdata title="Permanent link">&para;</a></h1> <div class=highlight><pre><span></span><code><span class=c1>// (1)</span>
+<!doctype html><html lang=en class=no-js> <head><meta charset=utf-8><meta name=viewport content="width=device-width,initial-scale=1"><meta name=author content="Niels Lohmann"><link href="https://json.nlohmann.me/api/basic_json/from_bjdata/" rel="canonical"><link href=../flatten/ rel=prev><link href=../from_bson/ rel=next><link rel=icon href=../../../assets/images/favicon.png><meta name=generator content="mkdocs-1.6.1, mkdocs-material-9.7.6"><title>from_bjdata - JSON for Modern C++</title><link rel=stylesheet href=../../../assets/stylesheets/main.484c7ddc.min.css><link rel=stylesheet href=../../../assets/stylesheets/palette.ab4e12ef.min.css><link rel="stylesheet" href="../../../assets/external/fonts.googleapis.com/css.61a430c9.css"><style>:root{--md-text-font:"Roboto";--md-code-font:"JetBrains Mono"}</style><link rel=stylesheet href=../../../css/custom.css><script>__md_scope=new URL("../../..",location),__md_hash=e=>[...e].reduce(((e,_)=>(e<<5)-e+_.charCodeAt(0)),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script></head> <body dir=ltr data-md-color-scheme=default data-md-color-primary=indigo data-md-color-accent=indigo> <input class=md-toggle data-md-toggle=drawer type=checkbox id=__drawer autocomplete=off> <input class=md-toggle data-md-toggle=search type=checkbox id=__search autocomplete=off> <label class=md-overlay for=__drawer></label> <div data-md-component=skip> <a href=#nlohmannbasic_jsonfrom_bjdata class=md-skip> Skip to content </a> </div> <div data-md-component=announce> </div> <header class=md-header data-md-component=header> <nav class="md-header__inner md-grid" aria-label=Header> <a href=../../.. title="JSON for Modern C++" class="md-header__button md-logo" aria-label="JSON for Modern C++" data-md-component=logo> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54"/></svg> </a> <label class="md-header__button md-icon" for=__drawer> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M3 6h18v2H3zm0 5h18v2H3zm0 5h18v2H3z"/></svg> </label> <div class=md-header__title data-md-component=header-title> <div class=md-header__ellipsis> <div class=md-header__topic> <span class=md-ellipsis> JSON for Modern C++ </span> </div> <div class=md-header__topic data-md-component=header-topic> <span class=md-ellipsis> from_bjdata </span> </div> </div> </div> <form class=md-header__option data-md-component=palette> <input class=md-option data-md-color-media="(prefers-color-scheme: light)" data-md-color-scheme=default data-md-color-primary=indigo data-md-color-accent=indigo aria-label="Switch to dark mode" type=radio name=__palette id=__palette_0> <label class="md-header__button md-icon" title="Switch to dark mode" for=__palette_1 hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a4 4 0 0 0-4 4 4 4 0 0 0 4 4 4 4 0 0 0 4-4 4 4 0 0 0-4-4m0 10a6 6 0 0 1-6-6 6 6 0 0 1 6-6 6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12z"/></svg> </label> <input class=md-option data-md-color-media="(prefers-color-scheme: dark)" data-md-color-scheme=slate data-md-color-primary=indigo data-md-color-accent=indigo aria-label="Switch to light mode" type=radio name=__palette id=__palette_1> <label class="md-header__button md-icon" title="Switch to light mode" for=__palette_0 hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 18c-.89 0-1.74-.2-2.5-.55C11.56 16.5 13 14.42 13 12s-1.44-4.5-3.5-5.45C10.26 6.2 11.11 6 12 6a6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12z"/></svg> </label> </form> <script>var palette=__md_get("__palette");if(palette&&palette.color){if("(prefers-color-scheme)"===palette.color.media){var media=matchMedia("(prefers-color-scheme: light)"),input=document.querySelector(media.matches?"[data-md-color-media='(prefers-color-scheme: light)']":"[data-md-color-media='(prefers-color-scheme: dark)']");palette.color.media=input.getAttribute("data-md-color-media"),palette.color.scheme=input.getAttribute("data-md-color-scheme"),palette.color.primary=input.getAttribute("data-md-color-primary"),palette.color.accent=input.getAttribute("data-md-color-accent")}for(var[key,value]of Object.entries(palette.color))document.body.setAttribute("data-md-color-"+key,value)}</script> <label class="md-header__button md-icon" for=__search> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg> </label> <div class=md-search data-md-component=search role=dialog> <label class=md-search__overlay for=__search></label> <div class=md-search__inner role=search> <form class=md-search__form name=search> <input type=text class=md-search__input name=query aria-label=Search placeholder=Search autocapitalize=off autocorrect=off autocomplete=off spellcheck=false data-md-component=search-query required> <label class="md-search__icon md-icon" for=__search> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11z"/></svg> </label> <nav class=md-search__options aria-label=Search> <button type=reset class="md-search__icon md-icon" title=Clear aria-label=Clear tabindex=-1> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z"/></svg> </button> </nav> </form> <div class=md-search__output> <div class=md-search__scrollwrap tabindex=0 data-md-scrollfix> <div class=md-search-result data-md-component=search-result> <div class=md-search-result__meta> Initializing search </div> <ol class=md-search-result__list role=presentation></ol> </div> </div> </div> </div> </div> <div class=md-header__source> <a href="https://github.com/nlohmann/json" title="Go to repository" class="md-source" data-md-component="source"> <div class="md-source__icon md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </div> <div class=md-source__repository> nlohmann/json </div> </a> </div> </nav> </header> <div class=md-container data-md-component=container> <nav class=md-tabs aria-label=Tabs data-md-component=tabs> <div class=md-grid> <ul class=md-tabs__list> <li class=md-tabs__item> <a href=../../.. class=md-tabs__link> Home </a> </li> <li class=md-tabs__item> <a href=../../../features/arbitrary_types/ class=md-tabs__link> Features </a> </li> <li class=md-tabs__item> <a href=../../../integration/ class=md-tabs__link> Integration </a> </li> <li class="md-tabs__item md-tabs__item--active"> <a href=../ class=md-tabs__link> API Documentation </a> </li> <li class=md-tabs__item> <a href=../../../community/ class=md-tabs__link> Community </a> </li> </ul> </div> </nav> <main class=md-main data-md-component=main> <div class="md-main__inner md-grid"> <div class="md-sidebar md-sidebar--primary" data-md-component=sidebar data-md-type=navigation> <div class=md-sidebar__scrollwrap> <div class=md-sidebar__inner> <nav class="md-nav md-nav--primary md-nav--lifted" aria-label=Navigation data-md-level=0> <label class=md-nav__title for=__drawer> <a href=../../.. title="JSON for Modern C++" class="md-nav__button md-logo" aria-label="JSON for Modern C++" data-md-component=logo> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54"/></svg> </a> JSON for Modern C++ </label> <div class=md-nav__source> <a href="https://github.com/nlohmann/json" title="Go to repository" class="md-source" data-md-component="source"> <div class="md-source__icon md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </div> <div class=md-source__repository> nlohmann/json </div> </a> </div> <ul class=md-nav__list data-md-scrollfix> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_1> <div class="md-nav__link md-nav__container"> <a href=../../.. class="md-nav__link "> <span class=md-ellipsis> Home </span> </a> <label class="md-nav__link " for=__nav_1 id=__nav_1_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_1_label aria-expanded=false> <label class=md-nav__title for=__nav_1> <span class="md-nav__icon md-icon"></span> Home </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../home/license/ class=md-nav__link> <span class=md-ellipsis> License </span> </a> </li> <li class=md-nav__item> <a href=../../../home/faq/ class=md-nav__link> <span class=md-ellipsis> FAQ </span> </a> </li> <li class=md-nav__item> <a href=../../../home/exceptions/ class=md-nav__link> <span class=md-ellipsis> Exceptions </span> </a> </li> <li class=md-nav__item> <a href=../../../home/releases/ class=md-nav__link> <span class=md-ellipsis> Releases </span> </a> </li> <li class=md-nav__item> <a href=../../../home/design_goals/ class=md-nav__link> <span class=md-ellipsis> Design goals </span> </a> </li> <li class=md-nav__item> <a href=../../../home/architecture/ class=md-nav__link> <span class=md-ellipsis> Architecture </span> </a> </li> <li class=md-nav__item> <a href=../../../home/customers/ class=md-nav__link> <span class=md-ellipsis> Customers </span> </a> </li> <li class=md-nav__item> <a href=../../../home/sponsors/ class=md-nav__link> <span class=md-ellipsis> Sponsors </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2> <label class=md-nav__link for=__nav_2 id=__nav_2_label tabindex=0> <span class=md-ellipsis> Features </span> <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_2_label aria-expanded=false> <label class=md-nav__title for=__nav_2> <span class="md-nav__icon md-icon"></span> Features </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/arbitrary_types/ class=md-nav__link> <span class=md-ellipsis> Arbitrary Type Conversions </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_2> <div class="md-nav__link md-nav__container"> <a href=../../../features/binary_formats/ class="md-nav__link "> <span class=md-ellipsis> Binary Formats </span> </a> <label class="md-nav__link " for=__nav_2_2 id=__nav_2_2_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_2_label aria-expanded=false> <label class=md-nav__title for=__nav_2_2> <span class="md-nav__icon md-icon"></span> Binary Formats </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/binary_formats/bjdata/ class=md-nav__link> <span class=md-ellipsis> BJData </span> </a> </li> <li class=md-nav__item> <a href=../../../features/binary_formats/bson/ class=md-nav__link> <span class=md-ellipsis> BSON </span> </a> </li> <li class=md-nav__item> <a href=../../../features/binary_formats/cbor/ class=md-nav__link> <span class=md-ellipsis> CBOR </span> </a> </li> <li class=md-nav__item> <a href=../../../features/binary_formats/messagepack/ class=md-nav__link> <span class=md-ellipsis> MessagePack </span> </a> </li> <li class=md-nav__item> <a href=../../../features/binary_formats/ubjson/ class=md-nav__link> <span class=md-ellipsis> UBJSON </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../../features/binary_values/ class=md-nav__link> <span class=md-ellipsis> Binary Values </span> </a> </li> <li class=md-nav__item> <a href=../../../features/comments/ class=md-nav__link> <span class=md-ellipsis> Comments </span> </a> </li> <li class=md-nav__item> <a href=../../../features/trailing_commas/ class=md-nav__link> <span class=md-ellipsis> Trailing Commas </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_6> <div class="md-nav__link md-nav__container"> <a href=../../../features/element_access/ class="md-nav__link "> <span class=md-ellipsis> Element Access </span> </a> <label class="md-nav__link " for=__nav_2_6 id=__nav_2_6_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_6_label aria-expanded=false> <label class=md-nav__title for=__nav_2_6> <span class="md-nav__icon md-icon"></span> Element Access </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/element_access/unchecked_access/ class=md-nav__link> <span class=md-ellipsis> Unchecked access: operator[] </span> </a> </li> <li class=md-nav__item> <a href=../../../features/element_access/checked_access/ class=md-nav__link> <span class=md-ellipsis> Checked access: at </span> </a> </li> <li class=md-nav__item> <a href=../../../features/element_access/default_value/ class=md-nav__link> <span class=md-ellipsis> Access with default value: value </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../../features/iterators/ class=md-nav__link> <span class=md-ellipsis> Iterators </span> </a> </li> <li class=md-nav__item> <a href=../../../features/json_pointer/ class=md-nav__link> <span class=md-ellipsis> JSON Pointer </span> </a> </li> <li class=md-nav__item> <a href=../../../features/json_patch/ class=md-nav__link> <span class=md-ellipsis> JSON Patch and Diff </span> </a> </li> <li class=md-nav__item> <a href=../../../features/merge_patch/ class=md-nav__link> <span class=md-ellipsis> JSON Merge Patch </span> </a> </li> <li class=md-nav__item> <a href=../../../features/modules/ class=md-nav__link> <span class=md-ellipsis> Modules </span> </a> </li> <li class=md-nav__item> <a href=../../../features/namespace/ class=md-nav__link> <span class=md-ellipsis> nlohmann Namespace </span> </a> </li> <li class=md-nav__item> <a href=../../../features/object_order/ class=md-nav__link> <span class=md-ellipsis> Object Order </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_14> <div class="md-nav__link md-nav__container"> <a href=../../../features/parsing/ class="md-nav__link "> <span class=md-ellipsis> Parsing </span> </a> <label class="md-nav__link " for=__nav_2_14 id=__nav_2_14_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_14_label aria-expanded=false> <label class=md-nav__title for=__nav_2_14> <span class="md-nav__icon md-icon"></span> Parsing </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/parsing/json_lines/ class=md-nav__link> <span class=md-ellipsis> JSON Lines </span> </a> </li> <li class=md-nav__item> <a href=../../../features/parsing/parse_exceptions/ class=md-nav__link> <span class=md-ellipsis> Parsing and Exceptions </span> </a> </li> <li class=md-nav__item> <a href=../../../features/parsing/parser_callbacks/ class=md-nav__link> <span class=md-ellipsis> Parser Callbacks </span> </a> </li> <li class=md-nav__item> <a href=../../../features/parsing/sax_interface/ class=md-nav__link> <span class=md-ellipsis> SAX Interface </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../../features/assertions/ class=md-nav__link> <span class=md-ellipsis> Runtime Assertions </span> </a> </li> <li class=md-nav__item> <a href=../../../features/enum_conversion/ class=md-nav__link> <span class=md-ellipsis> Specializing enum conversion </span> </a> </li> <li class=md-nav__item> <a href=../../../features/macros/ class=md-nav__link> <span class=md-ellipsis> Supported Macros </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_18> <div class="md-nav__link md-nav__container"> <a href=../../../features/types/ class="md-nav__link "> <span class=md-ellipsis> Types </span> </a> <label class="md-nav__link " for=__nav_2_18 id=__nav_2_18_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_18_label aria-expanded=false> <label class=md-nav__title for=__nav_2_18> <span class="md-nav__icon md-icon"></span> Types </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/types/number_handling/ class=md-nav__link> <span class=md-ellipsis> Number Handling </span> </a> </li> </ul> </nav> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_3> <div class="md-nav__link md-nav__container"> <a href=../../../integration/ class="md-nav__link "> <span class=md-ellipsis> Integration </span> </a> <label class="md-nav__link " for=__nav_3 id=__nav_3_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_3_label aria-expanded=false> <label class=md-nav__title for=__nav_3> <span class="md-nav__icon md-icon"></span> Integration </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../integration/migration_guide/ class=md-nav__link> <span class=md-ellipsis> Migration Guide </span> </a> </li> <li class=md-nav__item> <a href=../../../integration/cmake/ class=md-nav__link> <span class=md-ellipsis> CMake </span> </a> </li> <li class=md-nav__item> <a href=../../../integration/package_managers/ class=md-nav__link> <span class=md-ellipsis> Package Managers </span> </a> </li> <li class=md-nav__item> <a href=../../../integration/pkg-config/ class=md-nav__link> <span class=md-ellipsis> Pkg-config </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--active md-nav__item--section md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4 checked> <label class=md-nav__link for=__nav_4 id=__nav_4_label tabindex> <span class=md-ellipsis> API Documentation </span> <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_4_label aria-expanded=true> <label class=md-nav__title for=__nav_4> <span class="md-nav__icon md-icon"></span> API Documentation </label> <ul class=md-nav__list data-md-scrollfix> <li class="md-nav__item md-nav__item--active md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_1 checked> <div class="md-nav__link md-nav__container"> <a href=../ class="md-nav__link "> <span class=md-ellipsis> basic_json </span> </a> <label class="md-nav__link " for=__nav_4_1 id=__nav_4_1_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_1_label aria-expanded=true> <label class=md-nav__title for=__nav_4_1> <span class="md-nav__icon md-icon"></span> basic_json </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../basic_json/ class=md-nav__link> <span class=md-ellipsis> (Constructor) </span> </a> </li> <li class=md-nav__item> <a href=../~basic_json/ class=md-nav__link> <span class=md-ellipsis> (Destructor) </span> </a> </li> <li class=md-nav__item> <a href=../accept/ class=md-nav__link> <span class=md-ellipsis> accept </span> </a> </li> <li class=md-nav__item> <a href=../array/ class=md-nav__link> <span class=md-ellipsis> array </span> </a> </li> <li class=md-nav__item> <a href=../array_t/ class=md-nav__link> <span class=md-ellipsis> array_t </span> </a> </li> <li class=md-nav__item> <a href=../at/ class=md-nav__link> <span class=md-ellipsis> at </span> </a> </li> <li class=md-nav__item> <a href=../back/ class=md-nav__link> <span class=md-ellipsis> back </span> </a> </li> <li class=md-nav__item> <a href=../begin/ class=md-nav__link> <span class=md-ellipsis> begin </span> </a> </li> <li class=md-nav__item> <a href=../binary/ class=md-nav__link> <span class=md-ellipsis> binary </span> </a> </li> <li class=md-nav__item> <a href=../binary_t/ class=md-nav__link> <span class=md-ellipsis> binary_t </span> </a> </li> <li class=md-nav__item> <a href=../boolean_t/ class=md-nav__link> <span class=md-ellipsis> boolean_t </span> </a> </li> <li class=md-nav__item> <a href=../cbegin/ class=md-nav__link> <span class=md-ellipsis> cbegin </span> </a> </li> <li class=md-nav__item> <a href=../cbor_tag_handler_t/ class=md-nav__link> <span class=md-ellipsis> cbor_tag_handler_t </span> </a> </li> <li class=md-nav__item> <a href=../cend/ class=md-nav__link> <span class=md-ellipsis> cend </span> </a> </li> <li class=md-nav__item> <a href=../clear/ class=md-nav__link> <span class=md-ellipsis> clear </span> </a> </li> <li class=md-nav__item> <a href=../contains/ class=md-nav__link> <span class=md-ellipsis> contains </span> </a> </li> <li class=md-nav__item> <a href=../count/ class=md-nav__link> <span class=md-ellipsis> count </span> </a> </li> <li class=md-nav__item> <a href=../crbegin/ class=md-nav__link> <span class=md-ellipsis> crbegin </span> </a> </li> <li class=md-nav__item> <a href=../crend/ class=md-nav__link> <span class=md-ellipsis> crend </span> </a> </li> <li class=md-nav__item> <a href=../default_object_comparator_t/ class=md-nav__link> <span class=md-ellipsis> default_object_comparator_t </span> </a> </li> <li class=md-nav__item> <a href=../diff/ class=md-nav__link> <span class=md-ellipsis> diff </span> </a> </li> <li class=md-nav__item> <a href=../dump/ class=md-nav__link> <span class=md-ellipsis> dump </span> </a> </li> <li class=md-nav__item> <a href=../emplace/ class=md-nav__link> <span class=md-ellipsis> emplace </span> </a> </li> <li class=md-nav__item> <a href=../emplace_back/ class=md-nav__link> <span class=md-ellipsis> emplace_back </span> </a> </li> <li class=md-nav__item> <a href=../empty/ class=md-nav__link> <span class=md-ellipsis> empty </span> </a> </li> <li class=md-nav__item> <a href=../end/ class=md-nav__link> <span class=md-ellipsis> end </span> </a> </li> <li class=md-nav__item> <a href=../end_pos/ class=md-nav__link> <span class=md-ellipsis> end_pos </span> </a> </li> <li class=md-nav__item> <a href=../erase/ class=md-nav__link> <span class=md-ellipsis> erase </span> </a> </li> <li class=md-nav__item> <a href=../error_handler_t/ class=md-nav__link> <span class=md-ellipsis> error_handler_t </span> </a> </li> <li class=md-nav__item> <a href=../exception/ class=md-nav__link> <span class=md-ellipsis> exception </span> </a> </li> <li class=md-nav__item> <a href=../find/ class=md-nav__link> <span class=md-ellipsis> find </span> </a> </li> <li class=md-nav__item> <a href=../flatten/ class=md-nav__link> <span class=md-ellipsis> flatten </span> </a> </li> <li class="md-nav__item md-nav__item--active"> <input class="md-nav__toggle md-toggle" type=checkbox id=__toc> <label class="md-nav__link md-nav__link--active" for=__toc> <span class=md-ellipsis> from_bjdata </span> <span class="md-nav__icon md-icon"></span> </label> <a href=./ class="md-nav__link md-nav__link--active"> <span class=md-ellipsis> from_bjdata </span> </a> <nav class="md-nav md-nav--secondary" aria-label="Table of contents"> <label class=md-nav__title for=__toc> <span class="md-nav__icon md-icon"></span> Table of contents </label> <ul class=md-nav__list data-md-component=toc data-md-scrollfix> <li class=md-nav__item> <a href=#template-parameters class=md-nav__link> <span class=md-ellipsis> Template parameters </span> </a> </li> <li class=md-nav__item> <a href=#parameters class=md-nav__link> <span class=md-ellipsis> Parameters </span> </a> </li> <li class=md-nav__item> <a href=#return-value class=md-nav__link> <span class=md-ellipsis> Return value </span> </a> </li> <li class=md-nav__item> <a href=#exception-safety class=md-nav__link> <span class=md-ellipsis> Exception safety </span> </a> </li> <li class=md-nav__item> <a href=#exceptions class=md-nav__link> <span class=md-ellipsis> Exceptions </span> </a> </li> <li class=md-nav__item> <a href=#complexity class=md-nav__link> <span class=md-ellipsis> Complexity </span> </a> </li> <li class=md-nav__item> <a href=#examples class=md-nav__link> <span class=md-ellipsis> Examples </span> </a> </li> <li class=md-nav__item> <a href=#see-also class=md-nav__link> <span class=md-ellipsis> See also </span> </a> </li> <li class=md-nav__item> <a href=#version-history class=md-nav__link> <span class=md-ellipsis> Version history </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../from_bson/ class=md-nav__link> <span class=md-ellipsis> from_bson </span> </a> </li> <li class=md-nav__item> <a href=../from_cbor/ class=md-nav__link> <span class=md-ellipsis> from_cbor </span> </a> </li> <li class=md-nav__item> <a href=../from_msgpack/ class=md-nav__link> <span class=md-ellipsis> from_msgpack </span> </a> </li> <li class=md-nav__item> <a href=../from_ubjson/ class=md-nav__link> <span class=md-ellipsis> from_ubjson </span> </a> </li> <li class=md-nav__item> <a href=../front/ class=md-nav__link> <span class=md-ellipsis> front </span> </a> </li> <li class=md-nav__item> <a href=../get/ class=md-nav__link> <span class=md-ellipsis> get </span> </a> </li> <li class=md-nav__item> <a href=../get_allocator/ class=md-nav__link> <span class=md-ellipsis> get_allocator </span> </a> </li> <li class=md-nav__item> <a href=../get_binary/ class=md-nav__link> <span class=md-ellipsis> get_binary </span> </a> </li> <li class=md-nav__item> <a href=../get_ptr/ class=md-nav__link> <span class=md-ellipsis> get_ptr </span> </a> </li> <li class=md-nav__item> <a href=../get_ref/ class=md-nav__link> <span class=md-ellipsis> get_ref </span> </a> </li> <li class=md-nav__item> <a href=../get_to/ class=md-nav__link> <span class=md-ellipsis> get_to </span> </a> </li> <li class=md-nav__item> <a href=../std_hash/ class=md-nav__link> <span class=md-ellipsis> std::hash&lt;basic_json&gt; </span> </a> </li> <li class=md-nav__item> <a href=../input_format_t/ class=md-nav__link> <span class=md-ellipsis> input_format_t </span> </a> </li> <li class=md-nav__item> <a href=../insert/ class=md-nav__link> <span class=md-ellipsis> insert </span> </a> </li> <li class=md-nav__item> <a href=../invalid_iterator/ class=md-nav__link> <span class=md-ellipsis> invalid_iterator </span> </a> </li> <li class=md-nav__item> <a href=../is_array/ class=md-nav__link> <span class=md-ellipsis> is_array </span> </a> </li> <li class=md-nav__item> <a href=../is_binary/ class=md-nav__link> <span class=md-ellipsis> is_binary </span> </a> </li> <li class=md-nav__item> <a href=../is_boolean/ class=md-nav__link> <span class=md-ellipsis> is_boolean </span> </a> </li> <li class=md-nav__item> <a href=../is_discarded/ class=md-nav__link> <span class=md-ellipsis> is_discarded </span> </a> </li> <li class=md-nav__item> <a href=../is_null/ class=md-nav__link> <span class=md-ellipsis> is_null </span> </a> </li> <li class=md-nav__item> <a href=../is_number/ class=md-nav__link> <span class=md-ellipsis> is_number </span> </a> </li> <li class=md-nav__item> <a href=../is_number_float/ class=md-nav__link> <span class=md-ellipsis> is_number_float </span> </a> </li> <li class=md-nav__item> <a href=../is_number_integer/ class=md-nav__link> <span class=md-ellipsis> is_number_integer </span> </a> </li> <li class=md-nav__item> <a href=../is_number_unsigned/ class=md-nav__link> <span class=md-ellipsis> is_number_unsigned </span> </a> </li> <li class=md-nav__item> <a href=../is_object/ class=md-nav__link> <span class=md-ellipsis> is_object </span> </a> </li> <li class=md-nav__item> <a href=../is_primitive/ class=md-nav__link> <span class=md-ellipsis> is_primitive </span> </a> </li> <li class=md-nav__item> <a href=../is_string/ class=md-nav__link> <span class=md-ellipsis> is_string </span> </a> </li> <li class=md-nav__item> <a href=../is_structured/ class=md-nav__link> <span class=md-ellipsis> is_structured </span> </a> </li> <li class=md-nav__item> <a href=../items/ class=md-nav__link> <span class=md-ellipsis> items </span> </a> </li> <li class=md-nav__item> <a href=../json_base_class_t/ class=md-nav__link> <span class=md-ellipsis> json_base_class_t </span> </a> </li> <li class=md-nav__item> <a href=../json_serializer/ class=md-nav__link> <span class=md-ellipsis> json_serializer </span> </a> </li> <li class=md-nav__item> <a href=../max_size/ class=md-nav__link> <span class=md-ellipsis> max_size </span> </a> </li> <li class=md-nav__item> <a href=../meta/ class=md-nav__link> <span class=md-ellipsis> meta </span> </a> </li> <li class=md-nav__item> <a href=../merge_patch/ class=md-nav__link> <span class=md-ellipsis> merge_patch </span> </a> </li> <li class=md-nav__item> <a href=../number_float_t/ class=md-nav__link> <span class=md-ellipsis> number_float_t </span> </a> </li> <li class=md-nav__item> <a href=../number_integer_t/ class=md-nav__link> <span class=md-ellipsis> number_integer_t </span> </a> </li> <li class=md-nav__item> <a href=../number_unsigned_t/ class=md-nav__link> <span class=md-ellipsis> number_unsigned_t </span> </a> </li> <li class=md-nav__item> <a href=../object/ class=md-nav__link> <span class=md-ellipsis> object </span> </a> </li> <li class=md-nav__item> <a href=../object_comparator_t/ class=md-nav__link> <span class=md-ellipsis> object_comparator_t </span> </a> </li> <li class=md-nav__item> <a href=../object_t/ class=md-nav__link> <span class=md-ellipsis> object_t </span> </a> </li> <li class=md-nav__item> <a href=../operator_ValueType/ class=md-nav__link> <span class=md-ellipsis> operator ValueType </span> </a> </li> <li class=md-nav__item> <a href=../operator_value_t/ class=md-nav__link> <span class=md-ellipsis> operator value_t </span> </a> </li> <li class=md-nav__item> <a href=../operator%5B%5D/ class=md-nav__link> <span class=md-ellipsis> operator[] </span> </a> </li> <li class=md-nav__item> <a href=../operator%3D/ class=md-nav__link> <span class=md-ellipsis> operator= </span> </a> </li> <li class=md-nav__item> <a href=../operator%2B%3D/ class=md-nav__link> <span class=md-ellipsis> operator+= </span> </a> </li> <li class=md-nav__item> <a href=../operator_eq/ class=md-nav__link> <span class=md-ellipsis> operator== </span> </a> </li> <li class=md-nav__item> <a href=../operator_ne/ class=md-nav__link> <span class=md-ellipsis> operator!= </span> </a> </li> <li class=md-nav__item> <a href=../operator_lt/ class=md-nav__link> <span class=md-ellipsis> operator< </span> </a> </li> <li class=md-nav__item> <a href=../operator_gt/ class=md-nav__link> <span class=md-ellipsis> operator> </span> </a> </li> <li class=md-nav__item> <a href=../operator_le/ class=md-nav__link> <span class=md-ellipsis> operator<= </span> </a> </li> <li class=md-nav__item> <a href=../operator_ge/ class=md-nav__link> <span class=md-ellipsis> operator>= </span> </a> </li> <li class=md-nav__item> <a href=../operator_spaceship/ class=md-nav__link> <span class=md-ellipsis> operator<=> </span> </a> </li> <li class=md-nav__item> <a href=../out_of_range/ class=md-nav__link> <span class=md-ellipsis> out_of_range </span> </a> </li> <li class=md-nav__item> <a href=../other_error/ class=md-nav__link> <span class=md-ellipsis> other_error </span> </a> </li> <li class=md-nav__item> <a href=../parse/ class=md-nav__link> <span class=md-ellipsis> parse </span> </a> </li> <li class=md-nav__item> <a href=../parse_error/ class=md-nav__link> <span class=md-ellipsis> parse_error </span> </a> </li> <li class=md-nav__item> <a href=../parse_event_t/ class=md-nav__link> <span class=md-ellipsis> parse_event_t </span> </a> </li> <li class=md-nav__item> <a href=../parser_callback_t/ class=md-nav__link> <span class=md-ellipsis> parser_callback_t </span> </a> </li> <li class=md-nav__item> <a href=../patch/ class=md-nav__link> <span class=md-ellipsis> patch </span> </a> </li> <li class=md-nav__item> <a href=../patch_inplace/ class=md-nav__link> <span class=md-ellipsis> patch_inplace </span> </a> </li> <li class=md-nav__item> <a href=../push_back/ class=md-nav__link> <span class=md-ellipsis> push_back </span> </a> </li> <li class=md-nav__item> <a href=../rbegin/ class=md-nav__link> <span class=md-ellipsis> rbegin </span> </a> </li> <li class=md-nav__item> <a href=../rend/ class=md-nav__link> <span class=md-ellipsis> rend </span> </a> </li> <li class=md-nav__item> <a href=../sax_parse/ class=md-nav__link> <span class=md-ellipsis> sax_parse </span> </a> </li> <li class=md-nav__item> <a href=../size/ class=md-nav__link> <span class=md-ellipsis> size </span> </a> </li> <li class=md-nav__item> <a href=../start_pos/ class=md-nav__link> <span class=md-ellipsis> start_pos </span> </a> </li> <li class=md-nav__item> <a href=../string_t/ class=md-nav__link> <span class=md-ellipsis> string_t </span> </a> </li> <li class=md-nav__item> <a href=../swap/ class=md-nav__link> <span class=md-ellipsis> swap </span> </a> </li> <li class=md-nav__item> <a href=../std_swap/ class=md-nav__link> <span class=md-ellipsis> std::swap&lt;basic_json&gt; </span> </a> </li> <li class=md-nav__item> <a href=../to_bjdata/ class=md-nav__link> <span class=md-ellipsis> to_bjdata </span> </a> </li> <li class=md-nav__item> <a href=../to_bson/ class=md-nav__link> <span class=md-ellipsis> to_bson </span> </a> </li> <li class=md-nav__item> <a href=../to_cbor/ class=md-nav__link> <span class=md-ellipsis> to_cbor </span> </a> </li> <li class=md-nav__item> <a href=../to_msgpack/ class=md-nav__link> <span class=md-ellipsis> to_msgpack </span> </a> </li> <li class=md-nav__item> <a href=../to_string/ class=md-nav__link> <span class=md-ellipsis> to_string </span> </a> </li> <li class=md-nav__item> <a href=../to_ubjson/ class=md-nav__link> <span class=md-ellipsis> to_ubjson </span> </a> </li> <li class=md-nav__item> <a href=../type/ class=md-nav__link> <span class=md-ellipsis> type </span> </a> </li> <li class=md-nav__item> <a href=../type_error/ class=md-nav__link> <span class=md-ellipsis> type_error </span> </a> </li> <li class=md-nav__item> <a href=../type_name/ class=md-nav__link> <span class=md-ellipsis> type_name </span> </a> </li> <li class=md-nav__item> <a href=../unflatten/ class=md-nav__link> <span class=md-ellipsis> unflatten </span> </a> </li> <li class=md-nav__item> <a href=../update/ class=md-nav__link> <span class=md-ellipsis> update </span> </a> </li> <li class=md-nav__item> <a href=../value/ class=md-nav__link> <span class=md-ellipsis> value </span> </a> </li> <li class=md-nav__item> <a href=../value_t/ class=md-nav__link> <span class=md-ellipsis> value_t </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_2> <div class="md-nav__link md-nav__container"> <a href=../../byte_container_with_subtype/ class="md-nav__link "> <span class=md-ellipsis> byte_container_with_subtype </span> </a> <label class="md-nav__link " for=__nav_4_2 id=__nav_4_2_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_2_label aria-expanded=false> <label class=md-nav__title for=__nav_4_2> <span class="md-nav__icon md-icon"></span> byte_container_with_subtype </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../byte_container_with_subtype/byte_container_with_subtype/ class=md-nav__link> <span class=md-ellipsis> (constructor) </span> </a> </li> <li class=md-nav__item> <a href=../../byte_container_with_subtype/clear_subtype/ class=md-nav__link> <span class=md-ellipsis> clear_subtype </span> </a> </li> <li class=md-nav__item> <a href=../../byte_container_with_subtype/has_subtype/ class=md-nav__link> <span class=md-ellipsis> has_subtype </span> </a> </li> <li class=md-nav__item> <a href=../../byte_container_with_subtype/set_subtype/ class=md-nav__link> <span class=md-ellipsis> set_subtype </span> </a> </li> <li class=md-nav__item> <a href=../../byte_container_with_subtype/subtype/ class=md-nav__link> <span class=md-ellipsis> subtype </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_3> <div class="md-nav__link md-nav__container"> <a href=../../adl_serializer/ class="md-nav__link "> <span class=md-ellipsis> adl_serializer </span> </a> <label class="md-nav__link " for=__nav_4_3 id=__nav_4_3_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_3_label aria-expanded=false> <label class=md-nav__title for=__nav_4_3> <span class="md-nav__icon md-icon"></span> adl_serializer </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../adl_serializer/from_json/ class=md-nav__link> <span class=md-ellipsis> from_json </span> </a> </li> <li class=md-nav__item> <a href=../../adl_serializer/to_json/ class=md-nav__link> <span class=md-ellipsis> to_json </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../json/ class=md-nav__link> <span class=md-ellipsis> json </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_5> <div class="md-nav__link md-nav__container"> <a href=../../json_pointer/ class="md-nav__link "> <span class=md-ellipsis> json_pointer </span> </a> <label class="md-nav__link " for=__nav_4_5 id=__nav_4_5_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_5_label aria-expanded=false> <label class=md-nav__title for=__nav_4_5> <span class="md-nav__icon md-icon"></span> json_pointer </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../json_pointer/json_pointer/ class=md-nav__link> <span class=md-ellipsis> (Constructor) </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/back/ class=md-nav__link> <span class=md-ellipsis> back </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/empty/ class=md-nav__link> <span class=md-ellipsis> empty </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/front/ class=md-nav__link> <span class=md-ellipsis> front </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_string_t/ class=md-nav__link> <span class=md-ellipsis> operator string_t </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_eq/ class=md-nav__link> <span class=md-ellipsis> operator== </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_ne/ class=md-nav__link> <span class=md-ellipsis> operator!= </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_slash/ class=md-nav__link> <span class=md-ellipsis> operator/ </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_slasheq/ class=md-nav__link> <span class=md-ellipsis> operator/= </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/parent_pointer/ class=md-nav__link> <span class=md-ellipsis> parent_pointer </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/pop_back/ class=md-nav__link> <span class=md-ellipsis> pop_back </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/pop_front/ class=md-nav__link> <span class=md-ellipsis> pop_front </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/push_back/ class=md-nav__link> <span class=md-ellipsis> push_back </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/push_front/ class=md-nav__link> <span class=md-ellipsis> push_front </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/string_t/ class=md-nav__link> <span class=md-ellipsis> string_t </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/to_string/ class=md-nav__link> <span class=md-ellipsis> to_string </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_6> <div class="md-nav__link md-nav__container"> <a href=../../json_sax/ class="md-nav__link "> <span class=md-ellipsis> json_sax </span> </a> <label class="md-nav__link " for=__nav_4_6 id=__nav_4_6_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_6_label aria-expanded=false> <label class=md-nav__title for=__nav_4_6> <span class="md-nav__icon md-icon"></span> json_sax </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../json_sax/binary/ class=md-nav__link> <span class=md-ellipsis> binary </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/boolean/ class=md-nav__link> <span class=md-ellipsis> boolean </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/end_array/ class=md-nav__link> <span class=md-ellipsis> end_array </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/end_object/ class=md-nav__link> <span class=md-ellipsis> end_object </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/key/ class=md-nav__link> <span class=md-ellipsis> key </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/null/ class=md-nav__link> <span class=md-ellipsis> null </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/number_float/ class=md-nav__link> <span class=md-ellipsis> number_float </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/number_integer/ class=md-nav__link> <span class=md-ellipsis> number_integer </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/number_unsigned/ class=md-nav__link> <span class=md-ellipsis> number_unsigned </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/parse_error/ class=md-nav__link> <span class=md-ellipsis> parse_error </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/start_array/ class=md-nav__link> <span class=md-ellipsis> start_array </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/start_object/ class=md-nav__link> <span class=md-ellipsis> start_object </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/string/ class=md-nav__link> <span class=md-ellipsis> string </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../operator_ltlt/ class=md-nav__link> <span class=md-ellipsis> operator<<(basic_json), operator<<(json_pointer) </span> </a> </li> <li class=md-nav__item> <a href=../../operator_gtgt/ class=md-nav__link> <span class=md-ellipsis> operator>>(basic_json) </span> </a> </li> <li class=md-nav__item> <a href=../../operator_literal_json/ class=md-nav__link> <span class=md-ellipsis> operator""_json </span> </a> </li> <li class=md-nav__item> <a href=../../operator_literal_json_pointer/ class=md-nav__link> <span class=md-ellipsis> operator""_json_pointer </span> </a> </li> <li class=md-nav__item> <a href=../../ordered_json/ class=md-nav__link> <span class=md-ellipsis> ordered_json </span> </a> </li> <li class=md-nav__item> <a href=../../ordered_map/ class=md-nav__link> <span class=md-ellipsis> ordered_map </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_13> <div class="md-nav__link md-nav__container"> <a href=../../macros/ class="md-nav__link "> <span class=md-ellipsis> macros </span> </a> <label class="md-nav__link " for=__nav_4_13 id=__nav_4_13_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_13_label aria-expanded=false> <label class=md-nav__title for=__nav_4_13> <span class="md-nav__icon md-icon"></span> macros </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../macros/json_assert/ class=md-nav__link> <span class=md-ellipsis> JSON_ASSERT </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_brace_init_copy_semantics/ class=md-nav__link> <span class=md-ellipsis> JSON_BRACE_INIT_COPY_SEMANTICS </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_throw_user/ class=md-nav__link> <span class=md-ellipsis> JSON_CATCH_USER, JSON_THROW_USER, JSON_TRY_USER </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_diagnostics/ class=md-nav__link> <span class=md-ellipsis> JSON_DIAGNOSTICS </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_diagnostic_positions/ class=md-nav__link> <span class=md-ellipsis> JSON_DIAGNOSTIC_POSITIONS </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_disable_enum_serialization/ class=md-nav__link> <span class=md-ellipsis> JSON_DISABLE_ENUM_SERIALIZATION </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_has_cpp_11/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_CPP_11, JSON_HAS_CPP_14, JSON_HAS_CPP_17, JSON_HAS_CPP_20 </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_has_filesystem/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_EXPERIMENTAL_FILESYSTEM, JSON_HAS_FILESYSTEM </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_has_ranges/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_RANGES </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_has_static_rtti/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_STATIC_RTTI </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_has_three_way_comparison/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_THREE_WAY_COMPARISON </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_noexception/ class=md-nav__link> <span class=md-ellipsis> JSON_NOEXCEPTION </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_no_io/ class=md-nav__link> <span class=md-ellipsis> JSON_NO_IO </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_skip_library_version_check/ class=md-nav__link> <span class=md-ellipsis> JSON_SKIP_LIBRARY_VERSION_CHECK </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_skip_unsupported_compiler_check/ class=md-nav__link> <span class=md-ellipsis> JSON_SKIP_UNSUPPORTED_COMPILER_CHECK </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_use_global_udls/ class=md-nav__link> <span class=md-ellipsis> JSON_USE_GLOBAL_UDLS </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_use_implicit_conversions/ class=md-nav__link> <span class=md-ellipsis> JSON_USE_IMPLICIT_CONVERSIONS </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_use_legacy_discarded_value_comparison/ class=md-nav__link> <span class=md-ellipsis> JSON_USE_LEGACY_DISCARDED_VALUE_COMPARISON </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_define_derived_type/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_ONLY_SERIALIZE, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_define_type_intrusive/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_TYPE_INTRUSIVE, NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_TYPE_INTRUSIVE_ONLY_SERIALIZE </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_define_type_non_intrusive/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_define_type_with_names/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_TYPE_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_namespace/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_NAMESPACE </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_namespace_begin/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_NAMESPACE_BEGIN, NLOHMANN_JSON_NAMESPACE_END </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_namespace_no_version/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_NAMESPACE_NO_VERSION </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_serialize_enum/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_SERIALIZE_ENUM </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_serialize_enum_strict/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_SERIALIZE_ENUM_STRICT </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_version_major/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_VERSION_MAJOR, NLOHMANN_JSON_VERSION_MINOR, NLOHMANN_JSON_VERSION_PATCH </span> </a> </li> </ul> </nav> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_5> <div class="md-nav__link md-nav__container"> <a href=../../../community/ class="md-nav__link "> <span class=md-ellipsis> Community </span> </a> <label class="md-nav__link " for=__nav_5 id=__nav_5_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_5_label aria-expanded=false> <label class=md-nav__title for=__nav_5> <span class="md-nav__icon md-icon"></span> Community </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../community/code_of_conduct/ class=md-nav__link> <span class=md-ellipsis> Code of Conduct </span> </a> </li> <li class=md-nav__item> <a href=../../../community/contribution_guidelines/ class=md-nav__link> <span class=md-ellipsis> Contribution Guidelines </span> </a> </li> <li class=md-nav__item> <a href=../../../community/quality_assurance/ class=md-nav__link> <span class=md-ellipsis> Quality assurance </span> </a> </li> <li class=md-nav__item> <a href=../../../community/governance/ class=md-nav__link> <span class=md-ellipsis> Governance </span> </a> </li> <li class=md-nav__item> <a href=../../../community/security_policy/ class=md-nav__link> <span class=md-ellipsis> Security Policy </span> </a> </li> </ul> </nav> </li> </ul> </nav> </div> </div> </div> <div class="md-sidebar md-sidebar--secondary" data-md-component=sidebar data-md-type=toc> <div class=md-sidebar__scrollwrap> <div class=md-sidebar__inner> <nav class="md-nav md-nav--secondary" aria-label="Table of contents"> <label class=md-nav__title for=__toc> <span class="md-nav__icon md-icon"></span> Table of contents </label> <ul class=md-nav__list data-md-component=toc data-md-scrollfix> <li class=md-nav__item> <a href=#template-parameters class=md-nav__link> <span class=md-ellipsis> Template parameters </span> </a> </li> <li class=md-nav__item> <a href=#parameters class=md-nav__link> <span class=md-ellipsis> Parameters </span> </a> </li> <li class=md-nav__item> <a href=#return-value class=md-nav__link> <span class=md-ellipsis> Return value </span> </a> </li> <li class=md-nav__item> <a href=#exception-safety class=md-nav__link> <span class=md-ellipsis> Exception safety </span> </a> </li> <li class=md-nav__item> <a href=#exceptions class=md-nav__link> <span class=md-ellipsis> Exceptions </span> </a> </li> <li class=md-nav__item> <a href=#complexity class=md-nav__link> <span class=md-ellipsis> Complexity </span> </a> </li> <li class=md-nav__item> <a href=#examples class=md-nav__link> <span class=md-ellipsis> Examples </span> </a> </li> <li class=md-nav__item> <a href=#see-also class=md-nav__link> <span class=md-ellipsis> See also </span> </a> </li> <li class=md-nav__item> <a href=#version-history class=md-nav__link> <span class=md-ellipsis> Version history </span> </a> </li> </ul> </nav> </div> </div> </div> <div class=md-content data-md-component=content> <article class="md-content__inner md-typeset"> <a href="https://github.com/nlohmann/json/edit/develop/docs/mkdocs/docs/api/basic_json/from_bjdata.md" title="Edit this page" class="md-content__button md-icon" rel="edit"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M10 20H6V4h7v5h5v3.1l2-2V8l-6-6H6c-1.1 0-2 .9-2 2v16c0 1.1.9 2 2 2h4zm10.2-7c.1 0 .3.1.4.2l1.3 1.3c.2.2.2.6 0 .8l-1 1-2.1-2.1 1-1c.1-.1.2-.2.4-.2m0 3.9L14.1 23H12v-2.1l6.1-6.1z"/></svg> </a> <a href="https://github.com/nlohmann/json/raw/develop/docs/mkdocs/docs/api/basic_json/from_bjdata.md" title="View source of this page" class="md-content__button md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M17 18c.56 0 1 .44 1 1s-.44 1-1 1-1-.44-1-1 .44-1 1-1m0-3c-2.73 0-5.06 1.66-6 4 .94 2.34 3.27 4 6 4s5.06-1.66 6-4c-.94-2.34-3.27-4-6-4m0 6.5a2.5 2.5 0 0 1-2.5-2.5 2.5 2.5 0 0 1 2.5-2.5 2.5 2.5 0 0 1 2.5 2.5 2.5 2.5 0 0 1-2.5 2.5M9.27 20H6V4h7v5h5v4.07c.7.08 1.36.25 2 .49V8l-6-6H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h4.5a8.2 8.2 0 0 1-1.23-2"/></svg> </a> <h1 id=nlohmannbasic_jsonfrom_bjdata><small>nlohmann::basic_json::</small>from_bjdata<a class=headerlink href=#nlohmannbasic_jsonfrom_bjdata title="Permanent link">&para;</a></h1> <div class=highlight><pre><span></span><code><span class=c1>// (1)</span>
 <span class=k>template</span><span class=o>&lt;</span><span class=k>typename</span><span class=w> </span><span class=nc>InputType</span><span class=o>&gt;</span>
 <span class=k>static</span><span class=w> </span><span class=n>basic_json</span><span class=w> </span><span class=n>from_bjdata</span><span class=p>(</span><span class=n>InputType</span><span class=o>&amp;&amp;</span><span class=w> </span><span class=n>i</span><span class=p>,</span>
 <span class=w>                              </span><span class=k>const</span><span class=w> </span><span class=kt>bool</span><span class=w> </span><span class=n>strict</span><span class=w> </span><span class=o>=</span><span class=w> </span><span class=nb>true</span><span class=p>,</span>
@@ -8,7 +8,7 @@
 <span class=k>static</span><span class=w> </span><span class=n>basic_json</span><span class=w> </span><span class=n>from_bjdata</span><span class=p>(</span><span class=n>IteratorType</span><span class=w> </span><span class=n>first</span><span class=p>,</span><span class=w> </span><span class=n>IteratorType</span><span class=w> </span><span class=n>last</span><span class=p>,</span>
 <span class=w>                              </span><span class=k>const</span><span class=w> </span><span class=kt>bool</span><span class=w> </span><span class=n>strict</span><span class=w> </span><span class=o>=</span><span class=w> </span><span class=nb>true</span><span class=p>,</span>
 <span class=w>                              </span><span class=k>const</span><span class=w> </span><span class=kt>bool</span><span class=w> </span><span class=n>allow_exceptions</span><span class=w> </span><span class=o>=</span><span class=w> </span><span class=nb>true</span><span class=p>);</span>
-</code></pre></div> <p>Deserializes a given input to a <abbr title="JavaScript Object Notation">JSON</abbr> value using the <abbr title="Binary JData">BJData</abbr> (Binary JData) serialization format.</p> <ol> <li>Reads from a compatible input.</li> <li>Reads from an iterator range.</li> </ol> <p>The exact mapping and its limitations are described on a <a href=../../../features/binary_formats/bjdata/ >dedicated page</a>.</p> <h2 id=template-parameters>Template parameters<a class=headerlink href=#template-parameters title="Permanent link">&para;</a></h2> <dl> <dt><code>InputType</code></dt> <dd> <p>A compatible input, for instance:</p> <ul> <li>an <code>std::istream</code> object</li> <li>a <code>FILE</code> pointer</li> <li>a C-style array of characters</li> <li>a pointer to a null-terminated string of single byte characters</li> <li>an object <code>obj</code> for which <code>begin(obj)</code> and <code>end(obj)</code> produces a valid pair of iterators.</li> </ul> </dd> <dt><code>IteratorType</code></dt> <dd>a compatible iterator type</dd> </dl> <h2 id=parameters>Parameters<a class=headerlink href=#parameters title="Permanent link">&para;</a></h2> <dl> <dt><code>i</code> (in)</dt> <dd>an input in <abbr title="Binary JData">BJData</abbr> format convertible to an input adapter</dd> <dt><code>first</code> (in)</dt> <dd>iterator to the start of the input</dd> <dt><code>last</code> (in)</dt> <dd>iterator to the end of the input</dd> <dt><code>strict</code> (in)</dt> <dd>whether to expect the input to be consumed until <abbr title="End of File">EOF</abbr> (<code class=highlight><span class=nb>true</span></code> by default)</dd> <dt><code>allow_exceptions</code> (in)</dt> <dd>whether to throw exceptions in case of a parse error (optional, <code class=highlight><span class=nb>true</span></code> by default)</dd> </dl> <h2 id=return-value>Return value<a class=headerlink href=#return-value title="Permanent link">&para;</a></h2> <p>deserialized <abbr title="JavaScript Object Notation">JSON</abbr> value; in case of a parse error and <code>allow_exceptions</code> set to <code class=highlight><span class=nb>false</span></code>, the return value will be <code>value_t::discarded</code>. The latter can be checked with <a href=../is_discarded/ ><code>is_discarded</code></a>.</p> <h2 id=exception-safety>Exception safety<a class=headerlink href=#exception-safety title="Permanent link">&para;</a></h2> <p>Strong guarantee: if an exception is thrown, there are no changes in the <abbr title="JavaScript Object Notation">JSON</abbr> value.</p> <h2 id=exceptions>Exceptions<a class=headerlink href=#exceptions title="Permanent link">&para;</a></h2> <ul> <li>Throws <a href=../../../home/exceptions/#jsonexceptionparse_error110>parse_error.110</a> if the given input ends prematurely or the end of the file was not reached when <code>strict</code> was set to true</li> <li>Throws <a href=../../../home/exceptions/#jsonexceptionparse_error112>parse_error.112</a> if a parse error occurs</li> <li>Throws <a href=../../../home/exceptions/#jsonexceptionparse_error113>parse_error.113</a> if a string could not be parsed successfully</li> </ul> <h2 id=complexity>Complexity<a class=headerlink href=#complexity title="Permanent link">&para;</a></h2> <p>Linear in the size of the input.</p> <h2 id=examples>Examples<a class=headerlink href=#examples title="Permanent link">&para;</a></h2> <details class=example> <summary>Example</summary> <p>The example shows the deserialization of a byte vector in <abbr title="Binary JData">BJData</abbr> format to a <abbr title="JavaScript Object Notation">JSON</abbr> value.</p> <div class=highlight><pre><span></span><code><span class=cp>#include</span><span class=w> </span><span class=cpf>&lt;iostream&gt;</span>
+</code></pre></div> <p>Deserializes a given input to a <abbr title="JavaScript Object Notation">JSON</abbr> value using the <abbr title="Binary JData">BJData</abbr> (Binary JData) serialization format.</p> <ol> <li>Reads from a compatible input.</li> <li>Reads from an iterator range.</li> </ol> <p>The exact mapping and its limitations are described on a <a href=../../../features/binary_formats/bjdata/ >dedicated page</a>.</p> <h2 id=template-parameters>Template parameters<a class=headerlink href=#template-parameters title="Permanent link">&para;</a></h2> <dl> <dt><code>InputType</code></dt> <dd> <p>A compatible input, for instance:</p> <ul> <li>an <code>std::istream</code> object</li> <li>a <code>FILE</code> pointer</li> <li>a C-style array of characters</li> <li>a pointer to a null-terminated string of single byte characters</li> <li>an object <code>obj</code> for which <code>begin(obj)</code> and <code>end(obj)</code> produces a valid pair of iterators.</li> </ul> </dd> <dt><code>IteratorType</code></dt> <dd>a compatible iterator type</dd> </dl> <h2 id=parameters>Parameters<a class=headerlink href=#parameters title="Permanent link">&para;</a></h2> <dl> <dt><code>i</code> (in)</dt> <dd>an input in <abbr title="Binary JData">BJData</abbr> format convertible to an input adapter</dd> <dt><code>first</code> (in)</dt> <dd>iterator to the start of the input</dd> <dt><code>last</code> (in)</dt> <dd>iterator to the end of the input</dd> <dt><code>strict</code> (in)</dt> <dd>whether to expect the input to be consumed until <abbr title="End of File">EOF</abbr> (<code class=highlight><span class=nb>true</span></code> by default)</dd> <dt><code>allow_exceptions</code> (in)</dt> <dd>whether to throw exceptions in case of a parse error (optional, <code class=highlight><span class=nb>true</span></code> by default)</dd> </dl> <h2 id=return-value>Return value<a class=headerlink href=#return-value title="Permanent link">&para;</a></h2> <p>deserialized <abbr title="JavaScript Object Notation">JSON</abbr> value; in case of a parse error and <code>allow_exceptions</code> set to <code class=highlight><span class=nb>false</span></code>, the return value will be <code>value_t::discarded</code>. The latter can be checked with <a href=../is_discarded/ ><code>is_discarded</code></a>.</p> <h2 id=exception-safety>Exception safety<a class=headerlink href=#exception-safety title="Permanent link">&para;</a></h2> <p>Strong guarantee: if an exception is thrown, there are no changes in the <abbr title="JavaScript Object Notation">JSON</abbr> value.</p> <h2 id=exceptions>Exceptions<a class=headerlink href=#exceptions title="Permanent link">&para;</a></h2> <ul> <li>Throws <a href=../../../home/exceptions/#jsonexceptionparse_error110>parse_error.110</a> if the given input ends prematurely or the end of the file was not reached when <code>strict</code> was set to true</li> <li>Throws <a href=../../../home/exceptions/#jsonexceptionparse_error112>parse_error.112</a> if a parse error occurs</li> <li>Throws <a href=../../../home/exceptions/#jsonexceptionparse_error113>parse_error.113</a> if a string could not be parsed successfully</li> <li>Throws <a href=../../../home/exceptions/#jsonexceptionout_of_range408>out_of_range.408</a> if the size of an optimized container or n-dimensional array cannot be represented by <code>std::size_t</code></li> </ul> <h2 id=complexity>Complexity<a class=headerlink href=#complexity title="Permanent link">&para;</a></h2> <p>Linear in the size of the input.</p> <h2 id=examples>Examples<a class=headerlink href=#examples title="Permanent link">&para;</a></h2> <details class=example> <summary>Example</summary> <p>The example shows the deserialization of a byte vector in <abbr title="Binary JData">BJData</abbr> format to a <abbr title="JavaScript Object Notation">JSON</abbr> value.</p> <div class=highlight><pre><span></span><code><span class=cp>#include</span><span class=w> </span><span class=cpf>&lt;iostream&gt;</span>
 <span class=cp>#include</span><span class=w> </span><span class=cpf>&lt;iomanip&gt;</span>
 <span class=cp>#include</span><span class=w> </span><span class=cpf>&lt;nlohmann/json.hpp&gt;</span>
 
@@ -32,4 +32,4 @@
 <span class=w>  </span><span class=nt>&quot;compact&quot;</span><span class=p>:</span><span class=w> </span><span class=kc>true</span><span class=p>,</span>
 <span class=w>  </span><span class=nt>&quot;schema&quot;</span><span class=p>:</span><span class=w> </span><span class=mi>0</span>
 <span class=p>}</span>
-</code></pre></div> </details> <h2 id=version-history>Version history<a class=headerlink href=#version-history title="Permanent link">&para;</a></h2> <ul> <li>Added in version 3.11.0.</li> </ul> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 23, 2026 11:16:18 UTC">June 23, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
+</code></pre></div> </details> <h2 id=see-also>See also<a class=headerlink href=#see-also title="Permanent link">&para;</a></h2> <ul> <li><a href=../to_bjdata/ >to_bjdata</a> create a <abbr title="Binary JData">BJData</abbr> serialization of a <abbr title="JavaScript Object Notation">JSON</abbr> value</li> <li><a href=../from_cbor/ >from_cbor</a> create a <abbr title="JavaScript Object Notation">JSON</abbr> value from an input in <abbr title="Concise Binary Object Representation">CBOR</abbr> format</li> <li><a href=../from_msgpack/ >from_msgpack</a> create a <abbr title="JavaScript Object Notation">JSON</abbr> value from an input in MessagePack format</li> <li><a href=../from_bson/ >from_bson</a> create a <abbr title="JavaScript Object Notation">JSON</abbr> value from an input in <abbr title="Binary JSON">BSON</abbr> format</li> <li><a href=../from_ubjson/ >from_ubjson</a> create a <abbr title="JavaScript Object Notation">JSON</abbr> value from an input in <abbr title="Universal Binary JSON">UBJSON</abbr> format</li> </ul> <h2 id=version-history>Version history<a class=headerlink href=#version-history title="Permanent link">&para;</a></h2> <ul> <li>Added in version 3.11.0.</li> </ul> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 29, 2026 20:15:18 UTC">June 29, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
diff --git a/api/basic_json/from_bson/index.html b/api/basic_json/from_bson/index.html
index 3d14f07..4f6f14e 100644
--- a/api/basic_json/from_bson/index.html
+++ b/api/basic_json/from_bson/index.html
@@ -8,7 +8,7 @@
 <span class=k>static</span><span class=w> </span><span class=n>basic_json</span><span class=w> </span><span class=n>from_bson</span><span class=p>(</span><span class=n>IteratorType</span><span class=w> </span><span class=n>first</span><span class=p>,</span><span class=w> </span><span class=n>IteratorType</span><span class=w> </span><span class=n>last</span><span class=p>,</span>
 <span class=w>                            </span><span class=k>const</span><span class=w> </span><span class=kt>bool</span><span class=w> </span><span class=n>strict</span><span class=w> </span><span class=o>=</span><span class=w> </span><span class=nb>true</span><span class=p>,</span>
 <span class=w>                            </span><span class=k>const</span><span class=w> </span><span class=kt>bool</span><span class=w> </span><span class=n>allow_exceptions</span><span class=w> </span><span class=o>=</span><span class=w> </span><span class=nb>true</span><span class=p>);</span>
-</code></pre></div> <p>Deserializes a given input to a <abbr title="JavaScript Object Notation">JSON</abbr> value using the <abbr title="Binary JSON">BSON</abbr> (Binary <abbr title="JavaScript Object Notation">JSON</abbr>) serialization format.</p> <ol> <li>Reads from a compatible input.</li> <li>Reads from an iterator range.</li> </ol> <p>The exact mapping and its limitations are described on a <a href=../../../features/binary_formats/bson/ >dedicated page</a>.</p> <h2 id=template-parameters>Template parameters<a class=headerlink href=#template-parameters title="Permanent link">&para;</a></h2> <dl> <dt><code>InputType</code></dt> <dd> <p>A compatible input, for instance:</p> <ul> <li>an <code>std::istream</code> object</li> <li>a <code>FILE</code> pointer</li> <li>a C-style array of characters</li> <li>a pointer to a null-terminated string of single byte characters</li> <li>an object <code>obj</code> for which <code>begin(obj)</code> and <code>end(obj)</code> produces a valid pair of iterators.</li> </ul> </dd> <dt><code>IteratorType</code></dt> <dd>a compatible iterator type</dd> </dl> <h2 id=parameters>Parameters<a class=headerlink href=#parameters title="Permanent link">&para;</a></h2> <dl> <dt><code>i</code> (in)</dt> <dd>an input in <abbr title="Binary JSON">BSON</abbr> format convertible to an input adapter</dd> <dt><code>first</code> (in)</dt> <dd>iterator to the start of the input</dd> <dt><code>last</code> (in)</dt> <dd>iterator to the end of the input</dd> <dt><code>strict</code> (in)</dt> <dd>whether to expect the input to be consumed until <abbr title="End of File">EOF</abbr> (<code class=highlight><span class=nb>true</span></code> by default)</dd> <dt><code>allow_exceptions</code> (in)</dt> <dd>whether to throw exceptions in case of a parse error (optional, <code class=highlight><span class=nb>true</span></code> by default)</dd> </dl> <h2 id=return-value>Return value<a class=headerlink href=#return-value title="Permanent link">&para;</a></h2> <p>deserialized <abbr title="JavaScript Object Notation">JSON</abbr> value; in case of a parse error and <code>allow_exceptions</code> set to <code class=highlight><span class=nb>false</span></code>, the return value will be <code>value_t::discarded</code>. The latter can be checked with <a href=../is_discarded/ ><code>is_discarded</code></a>.</p> <h2 id=exception-safety>Exception safety<a class=headerlink href=#exception-safety title="Permanent link">&para;</a></h2> <p>Strong guarantee: if an exception is thrown, there are no changes in the <abbr title="JavaScript Object Notation">JSON</abbr> value.</p> <h2 id=exceptions>Exceptions<a class=headerlink href=#exceptions title="Permanent link">&para;</a></h2> <p>Throws <a href=../../../home/exceptions/#jsonexceptionparse_error114><code>parse_error.114</code></a> if an unsupported <abbr title="Binary JSON">BSON</abbr> record type is encountered.</p> <h2 id=complexity>Complexity<a class=headerlink href=#complexity title="Permanent link">&para;</a></h2> <p>Linear in the size of the input.</p> <h2 id=examples>Examples<a class=headerlink href=#examples title="Permanent link">&para;</a></h2> <details class=example> <summary>Example</summary> <p>The example shows the deserialization of a byte vector in <abbr title="Binary JSON">BSON</abbr> format to a <abbr title="JavaScript Object Notation">JSON</abbr> value.</p> <div class=highlight><pre><span></span><code><span class=cp>#include</span><span class=w> </span><span class=cpf>&lt;iostream&gt;</span>
+</code></pre></div> <p>Deserializes a given input to a <abbr title="JavaScript Object Notation">JSON</abbr> value using the <abbr title="Binary JSON">BSON</abbr> (Binary <abbr title="JavaScript Object Notation">JSON</abbr>) serialization format.</p> <ol> <li>Reads from a compatible input.</li> <li>Reads from an iterator range.</li> </ol> <p>The exact mapping and its limitations are described on a <a href=../../../features/binary_formats/bson/ >dedicated page</a>.</p> <h2 id=template-parameters>Template parameters<a class=headerlink href=#template-parameters title="Permanent link">&para;</a></h2> <dl> <dt><code>InputType</code></dt> <dd> <p>A compatible input, for instance:</p> <ul> <li>an <code>std::istream</code> object</li> <li>a <code>FILE</code> pointer</li> <li>a C-style array of characters</li> <li>a pointer to a null-terminated string of single byte characters</li> <li>an object <code>obj</code> for which <code>begin(obj)</code> and <code>end(obj)</code> produces a valid pair of iterators.</li> </ul> </dd> <dt><code>IteratorType</code></dt> <dd>a compatible iterator type</dd> </dl> <h2 id=parameters>Parameters<a class=headerlink href=#parameters title="Permanent link">&para;</a></h2> <dl> <dt><code>i</code> (in)</dt> <dd>an input in <abbr title="Binary JSON">BSON</abbr> format convertible to an input adapter</dd> <dt><code>first</code> (in)</dt> <dd>iterator to the start of the input</dd> <dt><code>last</code> (in)</dt> <dd>iterator to the end of the input</dd> <dt><code>strict</code> (in)</dt> <dd>whether to expect the input to be consumed until <abbr title="End of File">EOF</abbr> (<code class=highlight><span class=nb>true</span></code> by default)</dd> <dt><code>allow_exceptions</code> (in)</dt> <dd>whether to throw exceptions in case of a parse error (optional, <code class=highlight><span class=nb>true</span></code> by default)</dd> </dl> <h2 id=return-value>Return value<a class=headerlink href=#return-value title="Permanent link">&para;</a></h2> <p>deserialized <abbr title="JavaScript Object Notation">JSON</abbr> value; in case of a parse error and <code>allow_exceptions</code> set to <code class=highlight><span class=nb>false</span></code>, the return value will be <code>value_t::discarded</code>. The latter can be checked with <a href=../is_discarded/ ><code>is_discarded</code></a>.</p> <h2 id=exception-safety>Exception safety<a class=headerlink href=#exception-safety title="Permanent link">&para;</a></h2> <p>Strong guarantee: if an exception is thrown, there are no changes in the <abbr title="JavaScript Object Notation">JSON</abbr> value.</p> <h2 id=exceptions>Exceptions<a class=headerlink href=#exceptions title="Permanent link">&para;</a></h2> <ul> <li>Throws <a href=../../../home/exceptions/#jsonexceptionparse_error110><code>parse_error.110</code></a> if the given input ends prematurely or the end of the input was not reached when <code>strict</code> was set to true</li> <li>Throws <a href=../../../home/exceptions/#jsonexceptionparse_error112><code>parse_error.112</code></a> if a parse error occurs (e.g., an invalid string or byte array length)</li> <li>Throws <a href=../../../home/exceptions/#jsonexceptionparse_error114><code>parse_error.114</code></a> if an unsupported <abbr title="Binary JSON">BSON</abbr> record type is encountered</li> </ul> <h2 id=complexity>Complexity<a class=headerlink href=#complexity title="Permanent link">&para;</a></h2> <p>Linear in the size of the input.</p> <h2 id=examples>Examples<a class=headerlink href=#examples title="Permanent link">&para;</a></h2> <details class=example> <summary>Example</summary> <p>The example shows the deserialization of a byte vector in <abbr title="Binary JSON">BSON</abbr> format to a <abbr title="JavaScript Object Notation">JSON</abbr> value.</p> <div class=highlight><pre><span></span><code><span class=cp>#include</span><span class=w> </span><span class=cpf>&lt;iostream&gt;</span>
 <span class=cp>#include</span><span class=w> </span><span class=cpf>&lt;iomanip&gt;</span>
 <span class=cp>#include</span><span class=w> </span><span class=cpf>&lt;nlohmann/json.hpp&gt;</span>
 
@@ -33,4 +33,4 @@
 <span class=w>  </span><span class=nt>&quot;compact&quot;</span><span class=p>:</span><span class=w> </span><span class=kc>true</span><span class=p>,</span>
 <span class=w>  </span><span class=nt>&quot;schema&quot;</span><span class=p>:</span><span class=w> </span><span class=mi>0</span>
 <span class=p>}</span>
-</code></pre></div> </details> <h2 id=see-also>See also<a class=headerlink href=#see-also title="Permanent link">&para;</a></h2> <ul> <li><a href="http://bsonspec.org/spec.html"><abbr title="Binary JSON">BSON</abbr> specification</a></li> <li><a href=../to_bson/ >to_bson</a> for the analogous serialization</li> <li><a href=../from_cbor/ >from_cbor</a> for the related <abbr title="Concise Binary Object Representation">CBOR</abbr> format</li> <li><a href=../from_msgpack/ >from_msgpack</a> for the related MessagePack format</li> <li><a href=../from_ubjson/ >from_ubjson</a> for the related <abbr title="Universal Binary JSON">UBJSON</abbr> format</li> </ul> <h2 id=version-history>Version history<a class=headerlink href=#version-history title="Permanent link">&para;</a></h2> <ul> <li>Added in version 3.4.0.</li> </ul> <div class="admonition warning"> <p class=admonition-title>Deprecation</p> <ul> <li>Overload (2) replaces calls to <code>from_bson</code> with a pointer and a length as first two parameters, which has been deprecated in version 3.8.0. This overload will be removed in version 4.0.0. Please replace all calls like <code class=highlight><span class=n>from_bson</span><span class=p>(</span><span class=n>ptr</span><span class=p>,</span><span class=w> </span><span class=n>len</span><span class=p>,</span><span class=w> </span><span class=p>...);</span></code> with <code class=highlight><span class=n>from_bson</span><span class=p>(</span><span class=n>ptr</span><span class=p>,</span><span class=w> </span><span class=n>ptr</span><span class=o>+</span><span class=n>len</span><span class=p>,</span><span class=w> </span><span class=p>...);</span></code>.</li> <li>Overload (2) replaces calls to <code>from_bson</code> with a pair of iterators as their first parameter, which has been deprecated in version 3.8.0. This overload will be removed in version 4.0.0. Please replace all calls like <code class=highlight><span class=n>from_bson</span><span class=p>({</span><span class=n>ptr</span><span class=p>,</span><span class=w> </span><span class=n>ptr</span><span class=o>+</span><span class=n>len</span><span class=p>},</span><span class=w> </span><span class=p>...);</span></code> with <code class=highlight><span class=n>from_bson</span><span class=p>(</span><span class=n>ptr</span><span class=p>,</span><span class=w> </span><span class=n>ptr</span><span class=o>+</span><span class=n>len</span><span class=p>,</span><span class=w> </span><span class=p>...);</span></code>.</li> </ul> <p>You should be warned by your compiler with a <code>-Wdeprecated-declarations</code> warning if you are using a deprecated function.</p> </div> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 23, 2026 11:16:18 UTC">June 23, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
+</code></pre></div> </details> <h2 id=see-also>See also<a class=headerlink href=#see-also title="Permanent link">&para;</a></h2> <ul> <li><a href="http://bsonspec.org/spec.html"><abbr title="Binary JSON">BSON</abbr> specification</a></li> <li><a href=../to_bson/ >to_bson</a> for the analogous serialization</li> <li><a href=../from_cbor/ >from_cbor</a> for the related <abbr title="Concise Binary Object Representation">CBOR</abbr> format</li> <li><a href=../from_msgpack/ >from_msgpack</a> for the related MessagePack format</li> <li><a href=../from_ubjson/ >from_ubjson</a> for the related <abbr title="Universal Binary JSON">UBJSON</abbr> format</li> <li><a href=../from_bjdata/ >from_bjdata</a> for the related <abbr title="Binary JData">BJData</abbr> format</li> </ul> <h2 id=version-history>Version history<a class=headerlink href=#version-history title="Permanent link">&para;</a></h2> <ul> <li>Added in version 3.4.0.</li> </ul> <div class="admonition warning"> <p class=admonition-title>Deprecation</p> <ul> <li>Overload (2) replaces calls to <code>from_bson</code> with a pointer and a length as first two parameters, which has been deprecated in version 3.8.0. This overload will be removed in version 4.0.0. Please replace all calls like <code class=highlight><span class=n>from_bson</span><span class=p>(</span><span class=n>ptr</span><span class=p>,</span><span class=w> </span><span class=n>len</span><span class=p>,</span><span class=w> </span><span class=p>...);</span></code> with <code class=highlight><span class=n>from_bson</span><span class=p>(</span><span class=n>ptr</span><span class=p>,</span><span class=w> </span><span class=n>ptr</span><span class=o>+</span><span class=n>len</span><span class=p>,</span><span class=w> </span><span class=p>...);</span></code>.</li> <li>Overload (2) replaces calls to <code>from_bson</code> with a pair of iterators as their first parameter, which has been deprecated in version 3.8.0. This overload will be removed in version 4.0.0. Please replace all calls like <code class=highlight><span class=n>from_bson</span><span class=p>({</span><span class=n>ptr</span><span class=p>,</span><span class=w> </span><span class=n>ptr</span><span class=o>+</span><span class=n>len</span><span class=p>},</span><span class=w> </span><span class=p>...);</span></code> with <code class=highlight><span class=n>from_bson</span><span class=p>(</span><span class=n>ptr</span><span class=p>,</span><span class=w> </span><span class=n>ptr</span><span class=o>+</span><span class=n>len</span><span class=p>,</span><span class=w> </span><span class=p>...);</span></code>.</li> </ul> <p>You should be warned by your compiler with a <code>-Wdeprecated-declarations</code> warning if you are using a deprecated function.</p> </div> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 29, 2026 20:15:18 UTC">June 29, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
diff --git a/api/basic_json/from_cbor/index.html b/api/basic_json/from_cbor/index.html
index 9d2c837..9e6b540 100644
--- a/api/basic_json/from_cbor/index.html
+++ b/api/basic_json/from_cbor/index.html
@@ -1,4 +1,4 @@
-<!doctype html><html lang=en class=no-js> <head><meta charset=utf-8><meta name=viewport content="width=device-width,initial-scale=1"><meta name=author content="Niels Lohmann"><link href="https://json.nlohmann.me/api/basic_json/from_cbor/" rel="canonical"><link href=../from_bson/ rel=prev><link href=../from_msgpack/ rel=next><link rel=icon href=../../../assets/images/favicon.png><meta name=generator content="mkdocs-1.6.1, mkdocs-material-9.7.6"><title>from_cbor - JSON for Modern C++</title><link rel=stylesheet href=../../../assets/stylesheets/main.484c7ddc.min.css><link rel=stylesheet href=../../../assets/stylesheets/palette.ab4e12ef.min.css><link rel="stylesheet" href="../../../assets/external/fonts.googleapis.com/css.61a430c9.css"><style>:root{--md-text-font:"Roboto";--md-code-font:"JetBrains Mono"}</style><link rel=stylesheet href=../../../css/custom.css><script>__md_scope=new URL("../../..",location),__md_hash=e=>[...e].reduce(((e,_)=>(e<<5)-e+_.charCodeAt(0)),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script></head> <body dir=ltr data-md-color-scheme=default data-md-color-primary=indigo data-md-color-accent=indigo> <input class=md-toggle data-md-toggle=drawer type=checkbox id=__drawer autocomplete=off> <input class=md-toggle data-md-toggle=search type=checkbox id=__search autocomplete=off> <label class=md-overlay for=__drawer></label> <div data-md-component=skip> <a href=#nlohmannbasic_jsonfrom_cbor class=md-skip> Skip to content </a> </div> <div data-md-component=announce> </div> <header class=md-header data-md-component=header> <nav class="md-header__inner md-grid" aria-label=Header> <a href=../../.. title="JSON for Modern C++" class="md-header__button md-logo" aria-label="JSON for Modern C++" data-md-component=logo> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54"/></svg> </a> <label class="md-header__button md-icon" for=__drawer> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M3 6h18v2H3zm0 5h18v2H3zm0 5h18v2H3z"/></svg> </label> <div class=md-header__title data-md-component=header-title> <div class=md-header__ellipsis> <div class=md-header__topic> <span class=md-ellipsis> JSON for Modern C++ </span> </div> <div class=md-header__topic data-md-component=header-topic> <span class=md-ellipsis> from_cbor </span> </div> </div> </div> <form class=md-header__option data-md-component=palette> <input class=md-option data-md-color-media="(prefers-color-scheme: light)" data-md-color-scheme=default data-md-color-primary=indigo data-md-color-accent=indigo aria-label="Switch to dark mode" type=radio name=__palette id=__palette_0> <label class="md-header__button md-icon" title="Switch to dark mode" for=__palette_1 hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a4 4 0 0 0-4 4 4 4 0 0 0 4 4 4 4 0 0 0 4-4 4 4 0 0 0-4-4m0 10a6 6 0 0 1-6-6 6 6 0 0 1 6-6 6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12z"/></svg> </label> <input class=md-option data-md-color-media="(prefers-color-scheme: dark)" data-md-color-scheme=slate data-md-color-primary=indigo data-md-color-accent=indigo aria-label="Switch to light mode" type=radio name=__palette id=__palette_1> <label class="md-header__button md-icon" title="Switch to light mode" for=__palette_0 hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 18c-.89 0-1.74-.2-2.5-.55C11.56 16.5 13 14.42 13 12s-1.44-4.5-3.5-5.45C10.26 6.2 11.11 6 12 6a6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12z"/></svg> </label> </form> <script>var palette=__md_get("__palette");if(palette&&palette.color){if("(prefers-color-scheme)"===palette.color.media){var media=matchMedia("(prefers-color-scheme: light)"),input=document.querySelector(media.matches?"[data-md-color-media='(prefers-color-scheme: light)']":"[data-md-color-media='(prefers-color-scheme: dark)']");palette.color.media=input.getAttribute("data-md-color-media"),palette.color.scheme=input.getAttribute("data-md-color-scheme"),palette.color.primary=input.getAttribute("data-md-color-primary"),palette.color.accent=input.getAttribute("data-md-color-accent")}for(var[key,value]of Object.entries(palette.color))document.body.setAttribute("data-md-color-"+key,value)}</script> <label class="md-header__button md-icon" for=__search> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg> </label> <div class=md-search data-md-component=search role=dialog> <label class=md-search__overlay for=__search></label> <div class=md-search__inner role=search> <form class=md-search__form name=search> <input type=text class=md-search__input name=query aria-label=Search placeholder=Search autocapitalize=off autocorrect=off autocomplete=off spellcheck=false data-md-component=search-query required> <label class="md-search__icon md-icon" for=__search> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11z"/></svg> </label> <nav class=md-search__options aria-label=Search> <button type=reset class="md-search__icon md-icon" title=Clear aria-label=Clear tabindex=-1> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z"/></svg> </button> </nav> </form> <div class=md-search__output> <div class=md-search__scrollwrap tabindex=0 data-md-scrollfix> <div class=md-search-result data-md-component=search-result> <div class=md-search-result__meta> Initializing search </div> <ol class=md-search-result__list role=presentation></ol> </div> </div> </div> </div> </div> <div class=md-header__source> <a href="https://github.com/nlohmann/json" title="Go to repository" class="md-source" data-md-component="source"> <div class="md-source__icon md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </div> <div class=md-source__repository> nlohmann/json </div> </a> </div> </nav> </header> <div class=md-container data-md-component=container> <nav class=md-tabs aria-label=Tabs data-md-component=tabs> <div class=md-grid> <ul class=md-tabs__list> <li class=md-tabs__item> <a href=../../.. class=md-tabs__link> Home </a> </li> <li class=md-tabs__item> <a href=../../../features/arbitrary_types/ class=md-tabs__link> Features </a> </li> <li class=md-tabs__item> <a href=../../../integration/ class=md-tabs__link> Integration </a> </li> <li class="md-tabs__item md-tabs__item--active"> <a href=../ class=md-tabs__link> API Documentation </a> </li> <li class=md-tabs__item> <a href=../../../community/ class=md-tabs__link> Community </a> </li> </ul> </div> </nav> <main class=md-main data-md-component=main> <div class="md-main__inner md-grid"> <div class="md-sidebar md-sidebar--primary" data-md-component=sidebar data-md-type=navigation> <div class=md-sidebar__scrollwrap> <div class=md-sidebar__inner> <nav class="md-nav md-nav--primary md-nav--lifted" aria-label=Navigation data-md-level=0> <label class=md-nav__title for=__drawer> <a href=../../.. title="JSON for Modern C++" class="md-nav__button md-logo" aria-label="JSON for Modern C++" data-md-component=logo> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54"/></svg> </a> JSON for Modern C++ </label> <div class=md-nav__source> <a href="https://github.com/nlohmann/json" title="Go to repository" class="md-source" data-md-component="source"> <div class="md-source__icon md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </div> <div class=md-source__repository> nlohmann/json </div> </a> </div> <ul class=md-nav__list data-md-scrollfix> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_1> <div class="md-nav__link md-nav__container"> <a href=../../.. class="md-nav__link "> <span class=md-ellipsis> Home </span> </a> <label class="md-nav__link " for=__nav_1 id=__nav_1_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_1_label aria-expanded=false> <label class=md-nav__title for=__nav_1> <span class="md-nav__icon md-icon"></span> Home </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../home/license/ class=md-nav__link> <span class=md-ellipsis> License </span> </a> </li> <li class=md-nav__item> <a href=../../../home/faq/ class=md-nav__link> <span class=md-ellipsis> FAQ </span> </a> </li> <li class=md-nav__item> <a href=../../../home/exceptions/ class=md-nav__link> <span class=md-ellipsis> Exceptions </span> </a> </li> <li class=md-nav__item> <a href=../../../home/releases/ class=md-nav__link> <span class=md-ellipsis> Releases </span> </a> </li> <li class=md-nav__item> <a href=../../../home/design_goals/ class=md-nav__link> <span class=md-ellipsis> Design goals </span> </a> </li> <li class=md-nav__item> <a href=../../../home/architecture/ class=md-nav__link> <span class=md-ellipsis> Architecture </span> </a> </li> <li class=md-nav__item> <a href=../../../home/customers/ class=md-nav__link> <span class=md-ellipsis> Customers </span> </a> </li> <li class=md-nav__item> <a href=../../../home/sponsors/ class=md-nav__link> <span class=md-ellipsis> Sponsors </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2> <label class=md-nav__link for=__nav_2 id=__nav_2_label tabindex=0> <span class=md-ellipsis> Features </span> <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_2_label aria-expanded=false> <label class=md-nav__title for=__nav_2> <span class="md-nav__icon md-icon"></span> Features </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/arbitrary_types/ class=md-nav__link> <span class=md-ellipsis> Arbitrary Type Conversions </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_2> <div class="md-nav__link md-nav__container"> <a href=../../../features/binary_formats/ class="md-nav__link "> <span class=md-ellipsis> Binary Formats </span> </a> <label class="md-nav__link " for=__nav_2_2 id=__nav_2_2_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_2_label aria-expanded=false> <label class=md-nav__title for=__nav_2_2> <span class="md-nav__icon md-icon"></span> Binary Formats </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/binary_formats/bjdata/ class=md-nav__link> <span class=md-ellipsis> BJData </span> </a> </li> <li class=md-nav__item> <a href=../../../features/binary_formats/bson/ class=md-nav__link> <span class=md-ellipsis> BSON </span> </a> </li> <li class=md-nav__item> <a href=../../../features/binary_formats/cbor/ class=md-nav__link> <span class=md-ellipsis> CBOR </span> </a> </li> <li class=md-nav__item> <a href=../../../features/binary_formats/messagepack/ class=md-nav__link> <span class=md-ellipsis> MessagePack </span> </a> </li> <li class=md-nav__item> <a href=../../../features/binary_formats/ubjson/ class=md-nav__link> <span class=md-ellipsis> UBJSON </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../../features/binary_values/ class=md-nav__link> <span class=md-ellipsis> Binary Values </span> </a> </li> <li class=md-nav__item> <a href=../../../features/comments/ class=md-nav__link> <span class=md-ellipsis> Comments </span> </a> </li> <li class=md-nav__item> <a href=../../../features/trailing_commas/ class=md-nav__link> <span class=md-ellipsis> Trailing Commas </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_6> <div class="md-nav__link md-nav__container"> <a href=../../../features/element_access/ class="md-nav__link "> <span class=md-ellipsis> Element Access </span> </a> <label class="md-nav__link " for=__nav_2_6 id=__nav_2_6_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_6_label aria-expanded=false> <label class=md-nav__title for=__nav_2_6> <span class="md-nav__icon md-icon"></span> Element Access </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/element_access/unchecked_access/ class=md-nav__link> <span class=md-ellipsis> Unchecked access: operator[] </span> </a> </li> <li class=md-nav__item> <a href=../../../features/element_access/checked_access/ class=md-nav__link> <span class=md-ellipsis> Checked access: at </span> </a> </li> <li class=md-nav__item> <a href=../../../features/element_access/default_value/ class=md-nav__link> <span class=md-ellipsis> Access with default value: value </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../../features/iterators/ class=md-nav__link> <span class=md-ellipsis> Iterators </span> </a> </li> <li class=md-nav__item> <a href=../../../features/json_pointer/ class=md-nav__link> <span class=md-ellipsis> JSON Pointer </span> </a> </li> <li class=md-nav__item> <a href=../../../features/json_patch/ class=md-nav__link> <span class=md-ellipsis> JSON Patch and Diff </span> </a> </li> <li class=md-nav__item> <a href=../../../features/merge_patch/ class=md-nav__link> <span class=md-ellipsis> JSON Merge Patch </span> </a> </li> <li class=md-nav__item> <a href=../../../features/modules/ class=md-nav__link> <span class=md-ellipsis> Modules </span> </a> </li> <li class=md-nav__item> <a href=../../../features/namespace/ class=md-nav__link> <span class=md-ellipsis> nlohmann Namespace </span> </a> </li> <li class=md-nav__item> <a href=../../../features/object_order/ class=md-nav__link> <span class=md-ellipsis> Object Order </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_14> <div class="md-nav__link md-nav__container"> <a href=../../../features/parsing/ class="md-nav__link "> <span class=md-ellipsis> Parsing </span> </a> <label class="md-nav__link " for=__nav_2_14 id=__nav_2_14_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_14_label aria-expanded=false> <label class=md-nav__title for=__nav_2_14> <span class="md-nav__icon md-icon"></span> Parsing </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/parsing/json_lines/ class=md-nav__link> <span class=md-ellipsis> JSON Lines </span> </a> </li> <li class=md-nav__item> <a href=../../../features/parsing/parse_exceptions/ class=md-nav__link> <span class=md-ellipsis> Parsing and Exceptions </span> </a> </li> <li class=md-nav__item> <a href=../../../features/parsing/parser_callbacks/ class=md-nav__link> <span class=md-ellipsis> Parser Callbacks </span> </a> </li> <li class=md-nav__item> <a href=../../../features/parsing/sax_interface/ class=md-nav__link> <span class=md-ellipsis> SAX Interface </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../../features/assertions/ class=md-nav__link> <span class=md-ellipsis> Runtime Assertions </span> </a> </li> <li class=md-nav__item> <a href=../../../features/enum_conversion/ class=md-nav__link> <span class=md-ellipsis> Specializing enum conversion </span> </a> </li> <li class=md-nav__item> <a href=../../../features/macros/ class=md-nav__link> <span class=md-ellipsis> Supported Macros </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_18> <div class="md-nav__link md-nav__container"> <a href=../../../features/types/ class="md-nav__link "> <span class=md-ellipsis> Types </span> </a> <label class="md-nav__link " for=__nav_2_18 id=__nav_2_18_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_18_label aria-expanded=false> <label class=md-nav__title for=__nav_2_18> <span class="md-nav__icon md-icon"></span> Types </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/types/number_handling/ class=md-nav__link> <span class=md-ellipsis> Number Handling </span> </a> </li> </ul> </nav> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_3> <div class="md-nav__link md-nav__container"> <a href=../../../integration/ class="md-nav__link "> <span class=md-ellipsis> Integration </span> </a> <label class="md-nav__link " for=__nav_3 id=__nav_3_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_3_label aria-expanded=false> <label class=md-nav__title for=__nav_3> <span class="md-nav__icon md-icon"></span> Integration </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../integration/migration_guide/ class=md-nav__link> <span class=md-ellipsis> Migration Guide </span> </a> </li> <li class=md-nav__item> <a href=../../../integration/cmake/ class=md-nav__link> <span class=md-ellipsis> CMake </span> </a> </li> <li class=md-nav__item> <a href=../../../integration/package_managers/ class=md-nav__link> <span class=md-ellipsis> Package Managers </span> </a> </li> <li class=md-nav__item> <a href=../../../integration/pkg-config/ class=md-nav__link> <span class=md-ellipsis> Pkg-config </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--active md-nav__item--section md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4 checked> <label class=md-nav__link for=__nav_4 id=__nav_4_label tabindex> <span class=md-ellipsis> API Documentation </span> <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_4_label aria-expanded=true> <label class=md-nav__title for=__nav_4> <span class="md-nav__icon md-icon"></span> API Documentation </label> <ul class=md-nav__list data-md-scrollfix> <li class="md-nav__item md-nav__item--active md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_1 checked> <div class="md-nav__link md-nav__container"> <a href=../ class="md-nav__link "> <span class=md-ellipsis> basic_json </span> </a> <label class="md-nav__link " for=__nav_4_1 id=__nav_4_1_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_1_label aria-expanded=true> <label class=md-nav__title for=__nav_4_1> <span class="md-nav__icon md-icon"></span> basic_json </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../basic_json/ class=md-nav__link> <span class=md-ellipsis> (Constructor) </span> </a> </li> <li class=md-nav__item> <a href=../~basic_json/ class=md-nav__link> <span class=md-ellipsis> (Destructor) </span> </a> </li> <li class=md-nav__item> <a href=../accept/ class=md-nav__link> <span class=md-ellipsis> accept </span> </a> </li> <li class=md-nav__item> <a href=../array/ class=md-nav__link> <span class=md-ellipsis> array </span> </a> </li> <li class=md-nav__item> <a href=../array_t/ class=md-nav__link> <span class=md-ellipsis> array_t </span> </a> </li> <li class=md-nav__item> <a href=../at/ class=md-nav__link> <span class=md-ellipsis> at </span> </a> </li> <li class=md-nav__item> <a href=../back/ class=md-nav__link> <span class=md-ellipsis> back </span> </a> </li> <li class=md-nav__item> <a href=../begin/ class=md-nav__link> <span class=md-ellipsis> begin </span> </a> </li> <li class=md-nav__item> <a href=../binary/ class=md-nav__link> <span class=md-ellipsis> binary </span> </a> </li> <li class=md-nav__item> <a href=../binary_t/ class=md-nav__link> <span class=md-ellipsis> binary_t </span> </a> </li> <li class=md-nav__item> <a href=../boolean_t/ class=md-nav__link> <span class=md-ellipsis> boolean_t </span> </a> </li> <li class=md-nav__item> <a href=../cbegin/ class=md-nav__link> <span class=md-ellipsis> cbegin </span> </a> </li> <li class=md-nav__item> <a href=../cbor_tag_handler_t/ class=md-nav__link> <span class=md-ellipsis> cbor_tag_handler_t </span> </a> </li> <li class=md-nav__item> <a href=../cend/ class=md-nav__link> <span class=md-ellipsis> cend </span> </a> </li> <li class=md-nav__item> <a href=../clear/ class=md-nav__link> <span class=md-ellipsis> clear </span> </a> </li> <li class=md-nav__item> <a href=../contains/ class=md-nav__link> <span class=md-ellipsis> contains </span> </a> </li> <li class=md-nav__item> <a href=../count/ class=md-nav__link> <span class=md-ellipsis> count </span> </a> </li> <li class=md-nav__item> <a href=../crbegin/ class=md-nav__link> <span class=md-ellipsis> crbegin </span> </a> </li> <li class=md-nav__item> <a href=../crend/ class=md-nav__link> <span class=md-ellipsis> crend </span> </a> </li> <li class=md-nav__item> <a href=../default_object_comparator_t/ class=md-nav__link> <span class=md-ellipsis> default_object_comparator_t </span> </a> </li> <li class=md-nav__item> <a href=../diff/ class=md-nav__link> <span class=md-ellipsis> diff </span> </a> </li> <li class=md-nav__item> <a href=../dump/ class=md-nav__link> <span class=md-ellipsis> dump </span> </a> </li> <li class=md-nav__item> <a href=../emplace/ class=md-nav__link> <span class=md-ellipsis> emplace </span> </a> </li> <li class=md-nav__item> <a href=../emplace_back/ class=md-nav__link> <span class=md-ellipsis> emplace_back </span> </a> </li> <li class=md-nav__item> <a href=../empty/ class=md-nav__link> <span class=md-ellipsis> empty </span> </a> </li> <li class=md-nav__item> <a href=../end/ class=md-nav__link> <span class=md-ellipsis> end </span> </a> </li> <li class=md-nav__item> <a href=../end_pos/ class=md-nav__link> <span class=md-ellipsis> end_pos </span> </a> </li> <li class=md-nav__item> <a href=../erase/ class=md-nav__link> <span class=md-ellipsis> erase </span> </a> </li> <li class=md-nav__item> <a href=../error_handler_t/ class=md-nav__link> <span class=md-ellipsis> error_handler_t </span> </a> </li> <li class=md-nav__item> <a href=../exception/ class=md-nav__link> <span class=md-ellipsis> exception </span> </a> </li> <li class=md-nav__item> <a href=../find/ class=md-nav__link> <span class=md-ellipsis> find </span> </a> </li> <li class=md-nav__item> <a href=../flatten/ class=md-nav__link> <span class=md-ellipsis> flatten </span> </a> </li> <li class=md-nav__item> <a href=../from_bjdata/ class=md-nav__link> <span class=md-ellipsis> from_bjdata </span> </a> </li> <li class=md-nav__item> <a href=../from_bson/ class=md-nav__link> <span class=md-ellipsis> from_bson </span> </a> </li> <li class="md-nav__item md-nav__item--active"> <input class="md-nav__toggle md-toggle" type=checkbox id=__toc> <label class="md-nav__link md-nav__link--active" for=__toc> <span class=md-ellipsis> from_cbor </span> <span class="md-nav__icon md-icon"></span> </label> <a href=./ class="md-nav__link md-nav__link--active"> <span class=md-ellipsis> from_cbor </span> </a> <nav class="md-nav md-nav--secondary" aria-label="Table of contents"> <label class=md-nav__title for=__toc> <span class="md-nav__icon md-icon"></span> Table of contents </label> <ul class=md-nav__list data-md-component=toc data-md-scrollfix> <li class=md-nav__item> <a href=#template-parameters class=md-nav__link> <span class=md-ellipsis> Template parameters </span> </a> </li> <li class=md-nav__item> <a href=#parameters class=md-nav__link> <span class=md-ellipsis> Parameters </span> </a> </li> <li class=md-nav__item> <a href=#return-value class=md-nav__link> <span class=md-ellipsis> Return value </span> </a> </li> <li class=md-nav__item> <a href=#exception-safety class=md-nav__link> <span class=md-ellipsis> Exception safety </span> </a> </li> <li class=md-nav__item> <a href=#exceptions class=md-nav__link> <span class=md-ellipsis> Exceptions </span> </a> </li> <li class=md-nav__item> <a href=#complexity class=md-nav__link> <span class=md-ellipsis> Complexity </span> </a> </li> <li class=md-nav__item> <a href=#examples class=md-nav__link> <span class=md-ellipsis> Examples </span> </a> </li> <li class=md-nav__item> <a href=#version-history class=md-nav__link> <span class=md-ellipsis> Version history </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../from_msgpack/ class=md-nav__link> <span class=md-ellipsis> from_msgpack </span> </a> </li> <li class=md-nav__item> <a href=../from_ubjson/ class=md-nav__link> <span class=md-ellipsis> from_ubjson </span> </a> </li> <li class=md-nav__item> <a href=../front/ class=md-nav__link> <span class=md-ellipsis> front </span> </a> </li> <li class=md-nav__item> <a href=../get/ class=md-nav__link> <span class=md-ellipsis> get </span> </a> </li> <li class=md-nav__item> <a href=../get_allocator/ class=md-nav__link> <span class=md-ellipsis> get_allocator </span> </a> </li> <li class=md-nav__item> <a href=../get_binary/ class=md-nav__link> <span class=md-ellipsis> get_binary </span> </a> </li> <li class=md-nav__item> <a href=../get_ptr/ class=md-nav__link> <span class=md-ellipsis> get_ptr </span> </a> </li> <li class=md-nav__item> <a href=../get_ref/ class=md-nav__link> <span class=md-ellipsis> get_ref </span> </a> </li> <li class=md-nav__item> <a href=../get_to/ class=md-nav__link> <span class=md-ellipsis> get_to </span> </a> </li> <li class=md-nav__item> <a href=../std_hash/ class=md-nav__link> <span class=md-ellipsis> std::hash&lt;basic_json&gt; </span> </a> </li> <li class=md-nav__item> <a href=../input_format_t/ class=md-nav__link> <span class=md-ellipsis> input_format_t </span> </a> </li> <li class=md-nav__item> <a href=../insert/ class=md-nav__link> <span class=md-ellipsis> insert </span> </a> </li> <li class=md-nav__item> <a href=../invalid_iterator/ class=md-nav__link> <span class=md-ellipsis> invalid_iterator </span> </a> </li> <li class=md-nav__item> <a href=../is_array/ class=md-nav__link> <span class=md-ellipsis> is_array </span> </a> </li> <li class=md-nav__item> <a href=../is_binary/ class=md-nav__link> <span class=md-ellipsis> is_binary </span> </a> </li> <li class=md-nav__item> <a href=../is_boolean/ class=md-nav__link> <span class=md-ellipsis> is_boolean </span> </a> </li> <li class=md-nav__item> <a href=../is_discarded/ class=md-nav__link> <span class=md-ellipsis> is_discarded </span> </a> </li> <li class=md-nav__item> <a href=../is_null/ class=md-nav__link> <span class=md-ellipsis> is_null </span> </a> </li> <li class=md-nav__item> <a href=../is_number/ class=md-nav__link> <span class=md-ellipsis> is_number </span> </a> </li> <li class=md-nav__item> <a href=../is_number_float/ class=md-nav__link> <span class=md-ellipsis> is_number_float </span> </a> </li> <li class=md-nav__item> <a href=../is_number_integer/ class=md-nav__link> <span class=md-ellipsis> is_number_integer </span> </a> </li> <li class=md-nav__item> <a href=../is_number_unsigned/ class=md-nav__link> <span class=md-ellipsis> is_number_unsigned </span> </a> </li> <li class=md-nav__item> <a href=../is_object/ class=md-nav__link> <span class=md-ellipsis> is_object </span> </a> </li> <li class=md-nav__item> <a href=../is_primitive/ class=md-nav__link> <span class=md-ellipsis> is_primitive </span> </a> </li> <li class=md-nav__item> <a href=../is_string/ class=md-nav__link> <span class=md-ellipsis> is_string </span> </a> </li> <li class=md-nav__item> <a href=../is_structured/ class=md-nav__link> <span class=md-ellipsis> is_structured </span> </a> </li> <li class=md-nav__item> <a href=../items/ class=md-nav__link> <span class=md-ellipsis> items </span> </a> </li> <li class=md-nav__item> <a href=../json_base_class_t/ class=md-nav__link> <span class=md-ellipsis> json_base_class_t </span> </a> </li> <li class=md-nav__item> <a href=../json_serializer/ class=md-nav__link> <span class=md-ellipsis> json_serializer </span> </a> </li> <li class=md-nav__item> <a href=../max_size/ class=md-nav__link> <span class=md-ellipsis> max_size </span> </a> </li> <li class=md-nav__item> <a href=../meta/ class=md-nav__link> <span class=md-ellipsis> meta </span> </a> </li> <li class=md-nav__item> <a href=../merge_patch/ class=md-nav__link> <span class=md-ellipsis> merge_patch </span> </a> </li> <li class=md-nav__item> <a href=../number_float_t/ class=md-nav__link> <span class=md-ellipsis> number_float_t </span> </a> </li> <li class=md-nav__item> <a href=../number_integer_t/ class=md-nav__link> <span class=md-ellipsis> number_integer_t </span> </a> </li> <li class=md-nav__item> <a href=../number_unsigned_t/ class=md-nav__link> <span class=md-ellipsis> number_unsigned_t </span> </a> </li> <li class=md-nav__item> <a href=../object/ class=md-nav__link> <span class=md-ellipsis> object </span> </a> </li> <li class=md-nav__item> <a href=../object_comparator_t/ class=md-nav__link> <span class=md-ellipsis> object_comparator_t </span> </a> </li> <li class=md-nav__item> <a href=../object_t/ class=md-nav__link> <span class=md-ellipsis> object_t </span> </a> </li> <li class=md-nav__item> <a href=../operator_ValueType/ class=md-nav__link> <span class=md-ellipsis> operator ValueType </span> </a> </li> <li class=md-nav__item> <a href=../operator_value_t/ class=md-nav__link> <span class=md-ellipsis> operator value_t </span> </a> </li> <li class=md-nav__item> <a href=../operator%5B%5D/ class=md-nav__link> <span class=md-ellipsis> operator[] </span> </a> </li> <li class=md-nav__item> <a href=../operator%3D/ class=md-nav__link> <span class=md-ellipsis> operator= </span> </a> </li> <li class=md-nav__item> <a href=../operator%2B%3D/ class=md-nav__link> <span class=md-ellipsis> operator+= </span> </a> </li> <li class=md-nav__item> <a href=../operator_eq/ class=md-nav__link> <span class=md-ellipsis> operator== </span> </a> </li> <li class=md-nav__item> <a href=../operator_ne/ class=md-nav__link> <span class=md-ellipsis> operator!= </span> </a> </li> <li class=md-nav__item> <a href=../operator_lt/ class=md-nav__link> <span class=md-ellipsis> operator< </span> </a> </li> <li class=md-nav__item> <a href=../operator_gt/ class=md-nav__link> <span class=md-ellipsis> operator> </span> </a> </li> <li class=md-nav__item> <a href=../operator_le/ class=md-nav__link> <span class=md-ellipsis> operator<= </span> </a> </li> <li class=md-nav__item> <a href=../operator_ge/ class=md-nav__link> <span class=md-ellipsis> operator>= </span> </a> </li> <li class=md-nav__item> <a href=../operator_spaceship/ class=md-nav__link> <span class=md-ellipsis> operator<=> </span> </a> </li> <li class=md-nav__item> <a href=../out_of_range/ class=md-nav__link> <span class=md-ellipsis> out_of_range </span> </a> </li> <li class=md-nav__item> <a href=../other_error/ class=md-nav__link> <span class=md-ellipsis> other_error </span> </a> </li> <li class=md-nav__item> <a href=../parse/ class=md-nav__link> <span class=md-ellipsis> parse </span> </a> </li> <li class=md-nav__item> <a href=../parse_error/ class=md-nav__link> <span class=md-ellipsis> parse_error </span> </a> </li> <li class=md-nav__item> <a href=../parse_event_t/ class=md-nav__link> <span class=md-ellipsis> parse_event_t </span> </a> </li> <li class=md-nav__item> <a href=../parser_callback_t/ class=md-nav__link> <span class=md-ellipsis> parser_callback_t </span> </a> </li> <li class=md-nav__item> <a href=../patch/ class=md-nav__link> <span class=md-ellipsis> patch </span> </a> </li> <li class=md-nav__item> <a href=../patch_inplace/ class=md-nav__link> <span class=md-ellipsis> patch_inplace </span> </a> </li> <li class=md-nav__item> <a href=../push_back/ class=md-nav__link> <span class=md-ellipsis> push_back </span> </a> </li> <li class=md-nav__item> <a href=../rbegin/ class=md-nav__link> <span class=md-ellipsis> rbegin </span> </a> </li> <li class=md-nav__item> <a href=../rend/ class=md-nav__link> <span class=md-ellipsis> rend </span> </a> </li> <li class=md-nav__item> <a href=../sax_parse/ class=md-nav__link> <span class=md-ellipsis> sax_parse </span> </a> </li> <li class=md-nav__item> <a href=../size/ class=md-nav__link> <span class=md-ellipsis> size </span> </a> </li> <li class=md-nav__item> <a href=../start_pos/ class=md-nav__link> <span class=md-ellipsis> start_pos </span> </a> </li> <li class=md-nav__item> <a href=../string_t/ class=md-nav__link> <span class=md-ellipsis> string_t </span> </a> </li> <li class=md-nav__item> <a href=../swap/ class=md-nav__link> <span class=md-ellipsis> swap </span> </a> </li> <li class=md-nav__item> <a href=../std_swap/ class=md-nav__link> <span class=md-ellipsis> std::swap&lt;basic_json&gt; </span> </a> </li> <li class=md-nav__item> <a href=../to_bjdata/ class=md-nav__link> <span class=md-ellipsis> to_bjdata </span> </a> </li> <li class=md-nav__item> <a href=../to_bson/ class=md-nav__link> <span class=md-ellipsis> to_bson </span> </a> </li> <li class=md-nav__item> <a href=../to_cbor/ class=md-nav__link> <span class=md-ellipsis> to_cbor </span> </a> </li> <li class=md-nav__item> <a href=../to_msgpack/ class=md-nav__link> <span class=md-ellipsis> to_msgpack </span> </a> </li> <li class=md-nav__item> <a href=../to_string/ class=md-nav__link> <span class=md-ellipsis> to_string </span> </a> </li> <li class=md-nav__item> <a href=../to_ubjson/ class=md-nav__link> <span class=md-ellipsis> to_ubjson </span> </a> </li> <li class=md-nav__item> <a href=../type/ class=md-nav__link> <span class=md-ellipsis> type </span> </a> </li> <li class=md-nav__item> <a href=../type_error/ class=md-nav__link> <span class=md-ellipsis> type_error </span> </a> </li> <li class=md-nav__item> <a href=../type_name/ class=md-nav__link> <span class=md-ellipsis> type_name </span> </a> </li> <li class=md-nav__item> <a href=../unflatten/ class=md-nav__link> <span class=md-ellipsis> unflatten </span> </a> </li> <li class=md-nav__item> <a href=../update/ class=md-nav__link> <span class=md-ellipsis> update </span> </a> </li> <li class=md-nav__item> <a href=../value/ class=md-nav__link> <span class=md-ellipsis> value </span> </a> </li> <li class=md-nav__item> <a href=../value_t/ class=md-nav__link> <span class=md-ellipsis> value_t </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_2> <div class="md-nav__link md-nav__container"> <a href=../../byte_container_with_subtype/ class="md-nav__link "> <span class=md-ellipsis> byte_container_with_subtype </span> </a> <label class="md-nav__link " for=__nav_4_2 id=__nav_4_2_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_2_label aria-expanded=false> <label class=md-nav__title for=__nav_4_2> <span class="md-nav__icon md-icon"></span> byte_container_with_subtype </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../byte_container_with_subtype/byte_container_with_subtype/ class=md-nav__link> <span class=md-ellipsis> (constructor) </span> </a> </li> <li class=md-nav__item> <a href=../../byte_container_with_subtype/clear_subtype/ class=md-nav__link> <span class=md-ellipsis> clear_subtype </span> </a> </li> <li class=md-nav__item> <a href=../../byte_container_with_subtype/has_subtype/ class=md-nav__link> <span class=md-ellipsis> has_subtype </span> </a> </li> <li class=md-nav__item> <a href=../../byte_container_with_subtype/set_subtype/ class=md-nav__link> <span class=md-ellipsis> set_subtype </span> </a> </li> <li class=md-nav__item> <a href=../../byte_container_with_subtype/subtype/ class=md-nav__link> <span class=md-ellipsis> subtype </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_3> <div class="md-nav__link md-nav__container"> <a href=../../adl_serializer/ class="md-nav__link "> <span class=md-ellipsis> adl_serializer </span> </a> <label class="md-nav__link " for=__nav_4_3 id=__nav_4_3_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_3_label aria-expanded=false> <label class=md-nav__title for=__nav_4_3> <span class="md-nav__icon md-icon"></span> adl_serializer </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../adl_serializer/from_json/ class=md-nav__link> <span class=md-ellipsis> from_json </span> </a> </li> <li class=md-nav__item> <a href=../../adl_serializer/to_json/ class=md-nav__link> <span class=md-ellipsis> to_json </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../json/ class=md-nav__link> <span class=md-ellipsis> json </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_5> <div class="md-nav__link md-nav__container"> <a href=../../json_pointer/ class="md-nav__link "> <span class=md-ellipsis> json_pointer </span> </a> <label class="md-nav__link " for=__nav_4_5 id=__nav_4_5_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_5_label aria-expanded=false> <label class=md-nav__title for=__nav_4_5> <span class="md-nav__icon md-icon"></span> json_pointer </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../json_pointer/json_pointer/ class=md-nav__link> <span class=md-ellipsis> (Constructor) </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/back/ class=md-nav__link> <span class=md-ellipsis> back </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/empty/ class=md-nav__link> <span class=md-ellipsis> empty </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/front/ class=md-nav__link> <span class=md-ellipsis> front </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_string_t/ class=md-nav__link> <span class=md-ellipsis> operator string_t </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_eq/ class=md-nav__link> <span class=md-ellipsis> operator== </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_ne/ class=md-nav__link> <span class=md-ellipsis> operator!= </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_slash/ class=md-nav__link> <span class=md-ellipsis> operator/ </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_slasheq/ class=md-nav__link> <span class=md-ellipsis> operator/= </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/parent_pointer/ class=md-nav__link> <span class=md-ellipsis> parent_pointer </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/pop_back/ class=md-nav__link> <span class=md-ellipsis> pop_back </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/pop_front/ class=md-nav__link> <span class=md-ellipsis> pop_front </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/push_back/ class=md-nav__link> <span class=md-ellipsis> push_back </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/push_front/ class=md-nav__link> <span class=md-ellipsis> push_front </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/string_t/ class=md-nav__link> <span class=md-ellipsis> string_t </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/to_string/ class=md-nav__link> <span class=md-ellipsis> to_string </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_6> <div class="md-nav__link md-nav__container"> <a href=../../json_sax/ class="md-nav__link "> <span class=md-ellipsis> json_sax </span> </a> <label class="md-nav__link " for=__nav_4_6 id=__nav_4_6_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_6_label aria-expanded=false> <label class=md-nav__title for=__nav_4_6> <span class="md-nav__icon md-icon"></span> json_sax </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../json_sax/binary/ class=md-nav__link> <span class=md-ellipsis> binary </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/boolean/ class=md-nav__link> <span class=md-ellipsis> boolean </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/end_array/ class=md-nav__link> <span class=md-ellipsis> end_array </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/end_object/ class=md-nav__link> <span class=md-ellipsis> end_object </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/key/ class=md-nav__link> <span class=md-ellipsis> key </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/null/ class=md-nav__link> <span class=md-ellipsis> null </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/number_float/ class=md-nav__link> <span class=md-ellipsis> number_float </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/number_integer/ class=md-nav__link> <span class=md-ellipsis> number_integer </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/number_unsigned/ class=md-nav__link> <span class=md-ellipsis> number_unsigned </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/parse_error/ class=md-nav__link> <span class=md-ellipsis> parse_error </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/start_array/ class=md-nav__link> <span class=md-ellipsis> start_array </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/start_object/ class=md-nav__link> <span class=md-ellipsis> start_object </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/string/ class=md-nav__link> <span class=md-ellipsis> string </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../operator_ltlt/ class=md-nav__link> <span class=md-ellipsis> operator<<(basic_json), operator<<(json_pointer) </span> </a> </li> <li class=md-nav__item> <a href=../../operator_gtgt/ class=md-nav__link> <span class=md-ellipsis> operator>>(basic_json) </span> </a> </li> <li class=md-nav__item> <a href=../../operator_literal_json/ class=md-nav__link> <span class=md-ellipsis> operator""_json </span> </a> </li> <li class=md-nav__item> <a href=../../operator_literal_json_pointer/ class=md-nav__link> <span class=md-ellipsis> operator""_json_pointer </span> </a> </li> <li class=md-nav__item> <a href=../../ordered_json/ class=md-nav__link> <span class=md-ellipsis> ordered_json </span> </a> </li> <li class=md-nav__item> <a href=../../ordered_map/ class=md-nav__link> <span class=md-ellipsis> ordered_map </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_13> <div class="md-nav__link md-nav__container"> <a href=../../macros/ class="md-nav__link "> <span class=md-ellipsis> macros </span> </a> <label class="md-nav__link " for=__nav_4_13 id=__nav_4_13_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_13_label aria-expanded=false> <label class=md-nav__title for=__nav_4_13> <span class="md-nav__icon md-icon"></span> macros </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../macros/json_assert/ class=md-nav__link> <span class=md-ellipsis> JSON_ASSERT </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_brace_init_copy_semantics/ class=md-nav__link> <span class=md-ellipsis> JSON_BRACE_INIT_COPY_SEMANTICS </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_throw_user/ class=md-nav__link> <span class=md-ellipsis> JSON_CATCH_USER, JSON_THROW_USER, JSON_TRY_USER </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_diagnostics/ class=md-nav__link> <span class=md-ellipsis> JSON_DIAGNOSTICS </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_diagnostic_positions/ class=md-nav__link> <span class=md-ellipsis> JSON_DIAGNOSTIC_POSITIONS </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_disable_enum_serialization/ class=md-nav__link> <span class=md-ellipsis> JSON_DISABLE_ENUM_SERIALIZATION </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_has_cpp_11/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_CPP_11, JSON_HAS_CPP_14, JSON_HAS_CPP_17, JSON_HAS_CPP_20 </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_has_filesystem/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_EXPERIMENTAL_FILESYSTEM, JSON_HAS_FILESYSTEM </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_has_ranges/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_RANGES </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_has_static_rtti/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_STATIC_RTTI </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_has_three_way_comparison/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_THREE_WAY_COMPARISON </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_noexception/ class=md-nav__link> <span class=md-ellipsis> JSON_NOEXCEPTION </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_no_io/ class=md-nav__link> <span class=md-ellipsis> JSON_NO_IO </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_skip_library_version_check/ class=md-nav__link> <span class=md-ellipsis> JSON_SKIP_LIBRARY_VERSION_CHECK </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_skip_unsupported_compiler_check/ class=md-nav__link> <span class=md-ellipsis> JSON_SKIP_UNSUPPORTED_COMPILER_CHECK </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_use_global_udls/ class=md-nav__link> <span class=md-ellipsis> JSON_USE_GLOBAL_UDLS </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_use_implicit_conversions/ class=md-nav__link> <span class=md-ellipsis> JSON_USE_IMPLICIT_CONVERSIONS </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_use_legacy_discarded_value_comparison/ class=md-nav__link> <span class=md-ellipsis> JSON_USE_LEGACY_DISCARDED_VALUE_COMPARISON </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_define_derived_type/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_ONLY_SERIALIZE, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_define_type_intrusive/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_TYPE_INTRUSIVE, NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_TYPE_INTRUSIVE_ONLY_SERIALIZE </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_define_type_non_intrusive/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_define_type_with_names/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_TYPE_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_namespace/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_NAMESPACE </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_namespace_begin/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_NAMESPACE_BEGIN, NLOHMANN_JSON_NAMESPACE_END </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_namespace_no_version/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_NAMESPACE_NO_VERSION </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_serialize_enum/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_SERIALIZE_ENUM </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_serialize_enum_strict/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_SERIALIZE_ENUM_STRICT </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_version_major/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_VERSION_MAJOR, NLOHMANN_JSON_VERSION_MINOR, NLOHMANN_JSON_VERSION_PATCH </span> </a> </li> </ul> </nav> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_5> <div class="md-nav__link md-nav__container"> <a href=../../../community/ class="md-nav__link "> <span class=md-ellipsis> Community </span> </a> <label class="md-nav__link " for=__nav_5 id=__nav_5_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_5_label aria-expanded=false> <label class=md-nav__title for=__nav_5> <span class="md-nav__icon md-icon"></span> Community </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../community/code_of_conduct/ class=md-nav__link> <span class=md-ellipsis> Code of Conduct </span> </a> </li> <li class=md-nav__item> <a href=../../../community/contribution_guidelines/ class=md-nav__link> <span class=md-ellipsis> Contribution Guidelines </span> </a> </li> <li class=md-nav__item> <a href=../../../community/quality_assurance/ class=md-nav__link> <span class=md-ellipsis> Quality assurance </span> </a> </li> <li class=md-nav__item> <a href=../../../community/governance/ class=md-nav__link> <span class=md-ellipsis> Governance </span> </a> </li> <li class=md-nav__item> <a href=../../../community/security_policy/ class=md-nav__link> <span class=md-ellipsis> Security Policy </span> </a> </li> </ul> </nav> </li> </ul> </nav> </div> </div> </div> <div class="md-sidebar md-sidebar--secondary" data-md-component=sidebar data-md-type=toc> <div class=md-sidebar__scrollwrap> <div class=md-sidebar__inner> <nav class="md-nav md-nav--secondary" aria-label="Table of contents"> <label class=md-nav__title for=__toc> <span class="md-nav__icon md-icon"></span> Table of contents </label> <ul class=md-nav__list data-md-component=toc data-md-scrollfix> <li class=md-nav__item> <a href=#template-parameters class=md-nav__link> <span class=md-ellipsis> Template parameters </span> </a> </li> <li class=md-nav__item> <a href=#parameters class=md-nav__link> <span class=md-ellipsis> Parameters </span> </a> </li> <li class=md-nav__item> <a href=#return-value class=md-nav__link> <span class=md-ellipsis> Return value </span> </a> </li> <li class=md-nav__item> <a href=#exception-safety class=md-nav__link> <span class=md-ellipsis> Exception safety </span> </a> </li> <li class=md-nav__item> <a href=#exceptions class=md-nav__link> <span class=md-ellipsis> Exceptions </span> </a> </li> <li class=md-nav__item> <a href=#complexity class=md-nav__link> <span class=md-ellipsis> Complexity </span> </a> </li> <li class=md-nav__item> <a href=#examples class=md-nav__link> <span class=md-ellipsis> Examples </span> </a> </li> <li class=md-nav__item> <a href=#version-history class=md-nav__link> <span class=md-ellipsis> Version history </span> </a> </li> </ul> </nav> </div> </div> </div> <div class=md-content data-md-component=content> <article class="md-content__inner md-typeset"> <a href="https://github.com/nlohmann/json/edit/develop/docs/mkdocs/docs/api/basic_json/from_cbor.md" title="Edit this page" class="md-content__button md-icon" rel="edit"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M10 20H6V4h7v5h5v3.1l2-2V8l-6-6H6c-1.1 0-2 .9-2 2v16c0 1.1.9 2 2 2h4zm10.2-7c.1 0 .3.1.4.2l1.3 1.3c.2.2.2.6 0 .8l-1 1-2.1-2.1 1-1c.1-.1.2-.2.4-.2m0 3.9L14.1 23H12v-2.1l6.1-6.1z"/></svg> </a> <a href="https://github.com/nlohmann/json/raw/develop/docs/mkdocs/docs/api/basic_json/from_cbor.md" title="View source of this page" class="md-content__button md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M17 18c.56 0 1 .44 1 1s-.44 1-1 1-1-.44-1-1 .44-1 1-1m0-3c-2.73 0-5.06 1.66-6 4 .94 2.34 3.27 4 6 4s5.06-1.66 6-4c-.94-2.34-3.27-4-6-4m0 6.5a2.5 2.5 0 0 1-2.5-2.5 2.5 2.5 0 0 1 2.5-2.5 2.5 2.5 0 0 1 2.5 2.5 2.5 2.5 0 0 1-2.5 2.5M9.27 20H6V4h7v5h5v4.07c.7.08 1.36.25 2 .49V8l-6-6H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h4.5a8.2 8.2 0 0 1-1.23-2"/></svg> </a> <h1 id=nlohmannbasic_jsonfrom_cbor><small>nlohmann::basic_json::</small>from_cbor<a class=headerlink href=#nlohmannbasic_jsonfrom_cbor title="Permanent link">&para;</a></h1> <div class=highlight><pre><span></span><code><span class=c1>// (1)</span>
+<!doctype html><html lang=en class=no-js> <head><meta charset=utf-8><meta name=viewport content="width=device-width,initial-scale=1"><meta name=author content="Niels Lohmann"><link href="https://json.nlohmann.me/api/basic_json/from_cbor/" rel="canonical"><link href=../from_bson/ rel=prev><link href=../from_msgpack/ rel=next><link rel=icon href=../../../assets/images/favicon.png><meta name=generator content="mkdocs-1.6.1, mkdocs-material-9.7.6"><title>from_cbor - JSON for Modern C++</title><link rel=stylesheet href=../../../assets/stylesheets/main.484c7ddc.min.css><link rel=stylesheet href=../../../assets/stylesheets/palette.ab4e12ef.min.css><link rel="stylesheet" href="../../../assets/external/fonts.googleapis.com/css.61a430c9.css"><style>:root{--md-text-font:"Roboto";--md-code-font:"JetBrains Mono"}</style><link rel=stylesheet href=../../../css/custom.css><script>__md_scope=new URL("../../..",location),__md_hash=e=>[...e].reduce(((e,_)=>(e<<5)-e+_.charCodeAt(0)),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script></head> <body dir=ltr data-md-color-scheme=default data-md-color-primary=indigo data-md-color-accent=indigo> <input class=md-toggle data-md-toggle=drawer type=checkbox id=__drawer autocomplete=off> <input class=md-toggle data-md-toggle=search type=checkbox id=__search autocomplete=off> <label class=md-overlay for=__drawer></label> <div data-md-component=skip> <a href=#nlohmannbasic_jsonfrom_cbor class=md-skip> Skip to content </a> </div> <div data-md-component=announce> </div> <header class=md-header data-md-component=header> <nav class="md-header__inner md-grid" aria-label=Header> <a href=../../.. title="JSON for Modern C++" class="md-header__button md-logo" aria-label="JSON for Modern C++" data-md-component=logo> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54"/></svg> </a> <label class="md-header__button md-icon" for=__drawer> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M3 6h18v2H3zm0 5h18v2H3zm0 5h18v2H3z"/></svg> </label> <div class=md-header__title data-md-component=header-title> <div class=md-header__ellipsis> <div class=md-header__topic> <span class=md-ellipsis> JSON for Modern C++ </span> </div> <div class=md-header__topic data-md-component=header-topic> <span class=md-ellipsis> from_cbor </span> </div> </div> </div> <form class=md-header__option data-md-component=palette> <input class=md-option data-md-color-media="(prefers-color-scheme: light)" data-md-color-scheme=default data-md-color-primary=indigo data-md-color-accent=indigo aria-label="Switch to dark mode" type=radio name=__palette id=__palette_0> <label class="md-header__button md-icon" title="Switch to dark mode" for=__palette_1 hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a4 4 0 0 0-4 4 4 4 0 0 0 4 4 4 4 0 0 0 4-4 4 4 0 0 0-4-4m0 10a6 6 0 0 1-6-6 6 6 0 0 1 6-6 6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12z"/></svg> </label> <input class=md-option data-md-color-media="(prefers-color-scheme: dark)" data-md-color-scheme=slate data-md-color-primary=indigo data-md-color-accent=indigo aria-label="Switch to light mode" type=radio name=__palette id=__palette_1> <label class="md-header__button md-icon" title="Switch to light mode" for=__palette_0 hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 18c-.89 0-1.74-.2-2.5-.55C11.56 16.5 13 14.42 13 12s-1.44-4.5-3.5-5.45C10.26 6.2 11.11 6 12 6a6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12z"/></svg> </label> </form> <script>var palette=__md_get("__palette");if(palette&&palette.color){if("(prefers-color-scheme)"===palette.color.media){var media=matchMedia("(prefers-color-scheme: light)"),input=document.querySelector(media.matches?"[data-md-color-media='(prefers-color-scheme: light)']":"[data-md-color-media='(prefers-color-scheme: dark)']");palette.color.media=input.getAttribute("data-md-color-media"),palette.color.scheme=input.getAttribute("data-md-color-scheme"),palette.color.primary=input.getAttribute("data-md-color-primary"),palette.color.accent=input.getAttribute("data-md-color-accent")}for(var[key,value]of Object.entries(palette.color))document.body.setAttribute("data-md-color-"+key,value)}</script> <label class="md-header__button md-icon" for=__search> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg> </label> <div class=md-search data-md-component=search role=dialog> <label class=md-search__overlay for=__search></label> <div class=md-search__inner role=search> <form class=md-search__form name=search> <input type=text class=md-search__input name=query aria-label=Search placeholder=Search autocapitalize=off autocorrect=off autocomplete=off spellcheck=false data-md-component=search-query required> <label class="md-search__icon md-icon" for=__search> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11z"/></svg> </label> <nav class=md-search__options aria-label=Search> <button type=reset class="md-search__icon md-icon" title=Clear aria-label=Clear tabindex=-1> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z"/></svg> </button> </nav> </form> <div class=md-search__output> <div class=md-search__scrollwrap tabindex=0 data-md-scrollfix> <div class=md-search-result data-md-component=search-result> <div class=md-search-result__meta> Initializing search </div> <ol class=md-search-result__list role=presentation></ol> </div> </div> </div> </div> </div> <div class=md-header__source> <a href="https://github.com/nlohmann/json" title="Go to repository" class="md-source" data-md-component="source"> <div class="md-source__icon md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </div> <div class=md-source__repository> nlohmann/json </div> </a> </div> </nav> </header> <div class=md-container data-md-component=container> <nav class=md-tabs aria-label=Tabs data-md-component=tabs> <div class=md-grid> <ul class=md-tabs__list> <li class=md-tabs__item> <a href=../../.. class=md-tabs__link> Home </a> </li> <li class=md-tabs__item> <a href=../../../features/arbitrary_types/ class=md-tabs__link> Features </a> </li> <li class=md-tabs__item> <a href=../../../integration/ class=md-tabs__link> Integration </a> </li> <li class="md-tabs__item md-tabs__item--active"> <a href=../ class=md-tabs__link> API Documentation </a> </li> <li class=md-tabs__item> <a href=../../../community/ class=md-tabs__link> Community </a> </li> </ul> </div> </nav> <main class=md-main data-md-component=main> <div class="md-main__inner md-grid"> <div class="md-sidebar md-sidebar--primary" data-md-component=sidebar data-md-type=navigation> <div class=md-sidebar__scrollwrap> <div class=md-sidebar__inner> <nav class="md-nav md-nav--primary md-nav--lifted" aria-label=Navigation data-md-level=0> <label class=md-nav__title for=__drawer> <a href=../../.. title="JSON for Modern C++" class="md-nav__button md-logo" aria-label="JSON for Modern C++" data-md-component=logo> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54"/></svg> </a> JSON for Modern C++ </label> <div class=md-nav__source> <a href="https://github.com/nlohmann/json" title="Go to repository" class="md-source" data-md-component="source"> <div class="md-source__icon md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </div> <div class=md-source__repository> nlohmann/json </div> </a> </div> <ul class=md-nav__list data-md-scrollfix> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_1> <div class="md-nav__link md-nav__container"> <a href=../../.. class="md-nav__link "> <span class=md-ellipsis> Home </span> </a> <label class="md-nav__link " for=__nav_1 id=__nav_1_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_1_label aria-expanded=false> <label class=md-nav__title for=__nav_1> <span class="md-nav__icon md-icon"></span> Home </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../home/license/ class=md-nav__link> <span class=md-ellipsis> License </span> </a> </li> <li class=md-nav__item> <a href=../../../home/faq/ class=md-nav__link> <span class=md-ellipsis> FAQ </span> </a> </li> <li class=md-nav__item> <a href=../../../home/exceptions/ class=md-nav__link> <span class=md-ellipsis> Exceptions </span> </a> </li> <li class=md-nav__item> <a href=../../../home/releases/ class=md-nav__link> <span class=md-ellipsis> Releases </span> </a> </li> <li class=md-nav__item> <a href=../../../home/design_goals/ class=md-nav__link> <span class=md-ellipsis> Design goals </span> </a> </li> <li class=md-nav__item> <a href=../../../home/architecture/ class=md-nav__link> <span class=md-ellipsis> Architecture </span> </a> </li> <li class=md-nav__item> <a href=../../../home/customers/ class=md-nav__link> <span class=md-ellipsis> Customers </span> </a> </li> <li class=md-nav__item> <a href=../../../home/sponsors/ class=md-nav__link> <span class=md-ellipsis> Sponsors </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2> <label class=md-nav__link for=__nav_2 id=__nav_2_label tabindex=0> <span class=md-ellipsis> Features </span> <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_2_label aria-expanded=false> <label class=md-nav__title for=__nav_2> <span class="md-nav__icon md-icon"></span> Features </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/arbitrary_types/ class=md-nav__link> <span class=md-ellipsis> Arbitrary Type Conversions </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_2> <div class="md-nav__link md-nav__container"> <a href=../../../features/binary_formats/ class="md-nav__link "> <span class=md-ellipsis> Binary Formats </span> </a> <label class="md-nav__link " for=__nav_2_2 id=__nav_2_2_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_2_label aria-expanded=false> <label class=md-nav__title for=__nav_2_2> <span class="md-nav__icon md-icon"></span> Binary Formats </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/binary_formats/bjdata/ class=md-nav__link> <span class=md-ellipsis> BJData </span> </a> </li> <li class=md-nav__item> <a href=../../../features/binary_formats/bson/ class=md-nav__link> <span class=md-ellipsis> BSON </span> </a> </li> <li class=md-nav__item> <a href=../../../features/binary_formats/cbor/ class=md-nav__link> <span class=md-ellipsis> CBOR </span> </a> </li> <li class=md-nav__item> <a href=../../../features/binary_formats/messagepack/ class=md-nav__link> <span class=md-ellipsis> MessagePack </span> </a> </li> <li class=md-nav__item> <a href=../../../features/binary_formats/ubjson/ class=md-nav__link> <span class=md-ellipsis> UBJSON </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../../features/binary_values/ class=md-nav__link> <span class=md-ellipsis> Binary Values </span> </a> </li> <li class=md-nav__item> <a href=../../../features/comments/ class=md-nav__link> <span class=md-ellipsis> Comments </span> </a> </li> <li class=md-nav__item> <a href=../../../features/trailing_commas/ class=md-nav__link> <span class=md-ellipsis> Trailing Commas </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_6> <div class="md-nav__link md-nav__container"> <a href=../../../features/element_access/ class="md-nav__link "> <span class=md-ellipsis> Element Access </span> </a> <label class="md-nav__link " for=__nav_2_6 id=__nav_2_6_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_6_label aria-expanded=false> <label class=md-nav__title for=__nav_2_6> <span class="md-nav__icon md-icon"></span> Element Access </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/element_access/unchecked_access/ class=md-nav__link> <span class=md-ellipsis> Unchecked access: operator[] </span> </a> </li> <li class=md-nav__item> <a href=../../../features/element_access/checked_access/ class=md-nav__link> <span class=md-ellipsis> Checked access: at </span> </a> </li> <li class=md-nav__item> <a href=../../../features/element_access/default_value/ class=md-nav__link> <span class=md-ellipsis> Access with default value: value </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../../features/iterators/ class=md-nav__link> <span class=md-ellipsis> Iterators </span> </a> </li> <li class=md-nav__item> <a href=../../../features/json_pointer/ class=md-nav__link> <span class=md-ellipsis> JSON Pointer </span> </a> </li> <li class=md-nav__item> <a href=../../../features/json_patch/ class=md-nav__link> <span class=md-ellipsis> JSON Patch and Diff </span> </a> </li> <li class=md-nav__item> <a href=../../../features/merge_patch/ class=md-nav__link> <span class=md-ellipsis> JSON Merge Patch </span> </a> </li> <li class=md-nav__item> <a href=../../../features/modules/ class=md-nav__link> <span class=md-ellipsis> Modules </span> </a> </li> <li class=md-nav__item> <a href=../../../features/namespace/ class=md-nav__link> <span class=md-ellipsis> nlohmann Namespace </span> </a> </li> <li class=md-nav__item> <a href=../../../features/object_order/ class=md-nav__link> <span class=md-ellipsis> Object Order </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_14> <div class="md-nav__link md-nav__container"> <a href=../../../features/parsing/ class="md-nav__link "> <span class=md-ellipsis> Parsing </span> </a> <label class="md-nav__link " for=__nav_2_14 id=__nav_2_14_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_14_label aria-expanded=false> <label class=md-nav__title for=__nav_2_14> <span class="md-nav__icon md-icon"></span> Parsing </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/parsing/json_lines/ class=md-nav__link> <span class=md-ellipsis> JSON Lines </span> </a> </li> <li class=md-nav__item> <a href=../../../features/parsing/parse_exceptions/ class=md-nav__link> <span class=md-ellipsis> Parsing and Exceptions </span> </a> </li> <li class=md-nav__item> <a href=../../../features/parsing/parser_callbacks/ class=md-nav__link> <span class=md-ellipsis> Parser Callbacks </span> </a> </li> <li class=md-nav__item> <a href=../../../features/parsing/sax_interface/ class=md-nav__link> <span class=md-ellipsis> SAX Interface </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../../features/assertions/ class=md-nav__link> <span class=md-ellipsis> Runtime Assertions </span> </a> </li> <li class=md-nav__item> <a href=../../../features/enum_conversion/ class=md-nav__link> <span class=md-ellipsis> Specializing enum conversion </span> </a> </li> <li class=md-nav__item> <a href=../../../features/macros/ class=md-nav__link> <span class=md-ellipsis> Supported Macros </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_18> <div class="md-nav__link md-nav__container"> <a href=../../../features/types/ class="md-nav__link "> <span class=md-ellipsis> Types </span> </a> <label class="md-nav__link " for=__nav_2_18 id=__nav_2_18_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_18_label aria-expanded=false> <label class=md-nav__title for=__nav_2_18> <span class="md-nav__icon md-icon"></span> Types </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/types/number_handling/ class=md-nav__link> <span class=md-ellipsis> Number Handling </span> </a> </li> </ul> </nav> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_3> <div class="md-nav__link md-nav__container"> <a href=../../../integration/ class="md-nav__link "> <span class=md-ellipsis> Integration </span> </a> <label class="md-nav__link " for=__nav_3 id=__nav_3_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_3_label aria-expanded=false> <label class=md-nav__title for=__nav_3> <span class="md-nav__icon md-icon"></span> Integration </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../integration/migration_guide/ class=md-nav__link> <span class=md-ellipsis> Migration Guide </span> </a> </li> <li class=md-nav__item> <a href=../../../integration/cmake/ class=md-nav__link> <span class=md-ellipsis> CMake </span> </a> </li> <li class=md-nav__item> <a href=../../../integration/package_managers/ class=md-nav__link> <span class=md-ellipsis> Package Managers </span> </a> </li> <li class=md-nav__item> <a href=../../../integration/pkg-config/ class=md-nav__link> <span class=md-ellipsis> Pkg-config </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--active md-nav__item--section md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4 checked> <label class=md-nav__link for=__nav_4 id=__nav_4_label tabindex> <span class=md-ellipsis> API Documentation </span> <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_4_label aria-expanded=true> <label class=md-nav__title for=__nav_4> <span class="md-nav__icon md-icon"></span> API Documentation </label> <ul class=md-nav__list data-md-scrollfix> <li class="md-nav__item md-nav__item--active md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_1 checked> <div class="md-nav__link md-nav__container"> <a href=../ class="md-nav__link "> <span class=md-ellipsis> basic_json </span> </a> <label class="md-nav__link " for=__nav_4_1 id=__nav_4_1_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_1_label aria-expanded=true> <label class=md-nav__title for=__nav_4_1> <span class="md-nav__icon md-icon"></span> basic_json </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../basic_json/ class=md-nav__link> <span class=md-ellipsis> (Constructor) </span> </a> </li> <li class=md-nav__item> <a href=../~basic_json/ class=md-nav__link> <span class=md-ellipsis> (Destructor) </span> </a> </li> <li class=md-nav__item> <a href=../accept/ class=md-nav__link> <span class=md-ellipsis> accept </span> </a> </li> <li class=md-nav__item> <a href=../array/ class=md-nav__link> <span class=md-ellipsis> array </span> </a> </li> <li class=md-nav__item> <a href=../array_t/ class=md-nav__link> <span class=md-ellipsis> array_t </span> </a> </li> <li class=md-nav__item> <a href=../at/ class=md-nav__link> <span class=md-ellipsis> at </span> </a> </li> <li class=md-nav__item> <a href=../back/ class=md-nav__link> <span class=md-ellipsis> back </span> </a> </li> <li class=md-nav__item> <a href=../begin/ class=md-nav__link> <span class=md-ellipsis> begin </span> </a> </li> <li class=md-nav__item> <a href=../binary/ class=md-nav__link> <span class=md-ellipsis> binary </span> </a> </li> <li class=md-nav__item> <a href=../binary_t/ class=md-nav__link> <span class=md-ellipsis> binary_t </span> </a> </li> <li class=md-nav__item> <a href=../boolean_t/ class=md-nav__link> <span class=md-ellipsis> boolean_t </span> </a> </li> <li class=md-nav__item> <a href=../cbegin/ class=md-nav__link> <span class=md-ellipsis> cbegin </span> </a> </li> <li class=md-nav__item> <a href=../cbor_tag_handler_t/ class=md-nav__link> <span class=md-ellipsis> cbor_tag_handler_t </span> </a> </li> <li class=md-nav__item> <a href=../cend/ class=md-nav__link> <span class=md-ellipsis> cend </span> </a> </li> <li class=md-nav__item> <a href=../clear/ class=md-nav__link> <span class=md-ellipsis> clear </span> </a> </li> <li class=md-nav__item> <a href=../contains/ class=md-nav__link> <span class=md-ellipsis> contains </span> </a> </li> <li class=md-nav__item> <a href=../count/ class=md-nav__link> <span class=md-ellipsis> count </span> </a> </li> <li class=md-nav__item> <a href=../crbegin/ class=md-nav__link> <span class=md-ellipsis> crbegin </span> </a> </li> <li class=md-nav__item> <a href=../crend/ class=md-nav__link> <span class=md-ellipsis> crend </span> </a> </li> <li class=md-nav__item> <a href=../default_object_comparator_t/ class=md-nav__link> <span class=md-ellipsis> default_object_comparator_t </span> </a> </li> <li class=md-nav__item> <a href=../diff/ class=md-nav__link> <span class=md-ellipsis> diff </span> </a> </li> <li class=md-nav__item> <a href=../dump/ class=md-nav__link> <span class=md-ellipsis> dump </span> </a> </li> <li class=md-nav__item> <a href=../emplace/ class=md-nav__link> <span class=md-ellipsis> emplace </span> </a> </li> <li class=md-nav__item> <a href=../emplace_back/ class=md-nav__link> <span class=md-ellipsis> emplace_back </span> </a> </li> <li class=md-nav__item> <a href=../empty/ class=md-nav__link> <span class=md-ellipsis> empty </span> </a> </li> <li class=md-nav__item> <a href=../end/ class=md-nav__link> <span class=md-ellipsis> end </span> </a> </li> <li class=md-nav__item> <a href=../end_pos/ class=md-nav__link> <span class=md-ellipsis> end_pos </span> </a> </li> <li class=md-nav__item> <a href=../erase/ class=md-nav__link> <span class=md-ellipsis> erase </span> </a> </li> <li class=md-nav__item> <a href=../error_handler_t/ class=md-nav__link> <span class=md-ellipsis> error_handler_t </span> </a> </li> <li class=md-nav__item> <a href=../exception/ class=md-nav__link> <span class=md-ellipsis> exception </span> </a> </li> <li class=md-nav__item> <a href=../find/ class=md-nav__link> <span class=md-ellipsis> find </span> </a> </li> <li class=md-nav__item> <a href=../flatten/ class=md-nav__link> <span class=md-ellipsis> flatten </span> </a> </li> <li class=md-nav__item> <a href=../from_bjdata/ class=md-nav__link> <span class=md-ellipsis> from_bjdata </span> </a> </li> <li class=md-nav__item> <a href=../from_bson/ class=md-nav__link> <span class=md-ellipsis> from_bson </span> </a> </li> <li class="md-nav__item md-nav__item--active"> <input class="md-nav__toggle md-toggle" type=checkbox id=__toc> <label class="md-nav__link md-nav__link--active" for=__toc> <span class=md-ellipsis> from_cbor </span> <span class="md-nav__icon md-icon"></span> </label> <a href=./ class="md-nav__link md-nav__link--active"> <span class=md-ellipsis> from_cbor </span> </a> <nav class="md-nav md-nav--secondary" aria-label="Table of contents"> <label class=md-nav__title for=__toc> <span class="md-nav__icon md-icon"></span> Table of contents </label> <ul class=md-nav__list data-md-component=toc data-md-scrollfix> <li class=md-nav__item> <a href=#template-parameters class=md-nav__link> <span class=md-ellipsis> Template parameters </span> </a> </li> <li class=md-nav__item> <a href=#parameters class=md-nav__link> <span class=md-ellipsis> Parameters </span> </a> </li> <li class=md-nav__item> <a href=#return-value class=md-nav__link> <span class=md-ellipsis> Return value </span> </a> </li> <li class=md-nav__item> <a href=#exception-safety class=md-nav__link> <span class=md-ellipsis> Exception safety </span> </a> </li> <li class=md-nav__item> <a href=#exceptions class=md-nav__link> <span class=md-ellipsis> Exceptions </span> </a> </li> <li class=md-nav__item> <a href=#complexity class=md-nav__link> <span class=md-ellipsis> Complexity </span> </a> </li> <li class=md-nav__item> <a href=#examples class=md-nav__link> <span class=md-ellipsis> Examples </span> </a> </li> <li class=md-nav__item> <a href=#see-also class=md-nav__link> <span class=md-ellipsis> See also </span> </a> </li> <li class=md-nav__item> <a href=#version-history class=md-nav__link> <span class=md-ellipsis> Version history </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../from_msgpack/ class=md-nav__link> <span class=md-ellipsis> from_msgpack </span> </a> </li> <li class=md-nav__item> <a href=../from_ubjson/ class=md-nav__link> <span class=md-ellipsis> from_ubjson </span> </a> </li> <li class=md-nav__item> <a href=../front/ class=md-nav__link> <span class=md-ellipsis> front </span> </a> </li> <li class=md-nav__item> <a href=../get/ class=md-nav__link> <span class=md-ellipsis> get </span> </a> </li> <li class=md-nav__item> <a href=../get_allocator/ class=md-nav__link> <span class=md-ellipsis> get_allocator </span> </a> </li> <li class=md-nav__item> <a href=../get_binary/ class=md-nav__link> <span class=md-ellipsis> get_binary </span> </a> </li> <li class=md-nav__item> <a href=../get_ptr/ class=md-nav__link> <span class=md-ellipsis> get_ptr </span> </a> </li> <li class=md-nav__item> <a href=../get_ref/ class=md-nav__link> <span class=md-ellipsis> get_ref </span> </a> </li> <li class=md-nav__item> <a href=../get_to/ class=md-nav__link> <span class=md-ellipsis> get_to </span> </a> </li> <li class=md-nav__item> <a href=../std_hash/ class=md-nav__link> <span class=md-ellipsis> std::hash&lt;basic_json&gt; </span> </a> </li> <li class=md-nav__item> <a href=../input_format_t/ class=md-nav__link> <span class=md-ellipsis> input_format_t </span> </a> </li> <li class=md-nav__item> <a href=../insert/ class=md-nav__link> <span class=md-ellipsis> insert </span> </a> </li> <li class=md-nav__item> <a href=../invalid_iterator/ class=md-nav__link> <span class=md-ellipsis> invalid_iterator </span> </a> </li> <li class=md-nav__item> <a href=../is_array/ class=md-nav__link> <span class=md-ellipsis> is_array </span> </a> </li> <li class=md-nav__item> <a href=../is_binary/ class=md-nav__link> <span class=md-ellipsis> is_binary </span> </a> </li> <li class=md-nav__item> <a href=../is_boolean/ class=md-nav__link> <span class=md-ellipsis> is_boolean </span> </a> </li> <li class=md-nav__item> <a href=../is_discarded/ class=md-nav__link> <span class=md-ellipsis> is_discarded </span> </a> </li> <li class=md-nav__item> <a href=../is_null/ class=md-nav__link> <span class=md-ellipsis> is_null </span> </a> </li> <li class=md-nav__item> <a href=../is_number/ class=md-nav__link> <span class=md-ellipsis> is_number </span> </a> </li> <li class=md-nav__item> <a href=../is_number_float/ class=md-nav__link> <span class=md-ellipsis> is_number_float </span> </a> </li> <li class=md-nav__item> <a href=../is_number_integer/ class=md-nav__link> <span class=md-ellipsis> is_number_integer </span> </a> </li> <li class=md-nav__item> <a href=../is_number_unsigned/ class=md-nav__link> <span class=md-ellipsis> is_number_unsigned </span> </a> </li> <li class=md-nav__item> <a href=../is_object/ class=md-nav__link> <span class=md-ellipsis> is_object </span> </a> </li> <li class=md-nav__item> <a href=../is_primitive/ class=md-nav__link> <span class=md-ellipsis> is_primitive </span> </a> </li> <li class=md-nav__item> <a href=../is_string/ class=md-nav__link> <span class=md-ellipsis> is_string </span> </a> </li> <li class=md-nav__item> <a href=../is_structured/ class=md-nav__link> <span class=md-ellipsis> is_structured </span> </a> </li> <li class=md-nav__item> <a href=../items/ class=md-nav__link> <span class=md-ellipsis> items </span> </a> </li> <li class=md-nav__item> <a href=../json_base_class_t/ class=md-nav__link> <span class=md-ellipsis> json_base_class_t </span> </a> </li> <li class=md-nav__item> <a href=../json_serializer/ class=md-nav__link> <span class=md-ellipsis> json_serializer </span> </a> </li> <li class=md-nav__item> <a href=../max_size/ class=md-nav__link> <span class=md-ellipsis> max_size </span> </a> </li> <li class=md-nav__item> <a href=../meta/ class=md-nav__link> <span class=md-ellipsis> meta </span> </a> </li> <li class=md-nav__item> <a href=../merge_patch/ class=md-nav__link> <span class=md-ellipsis> merge_patch </span> </a> </li> <li class=md-nav__item> <a href=../number_float_t/ class=md-nav__link> <span class=md-ellipsis> number_float_t </span> </a> </li> <li class=md-nav__item> <a href=../number_integer_t/ class=md-nav__link> <span class=md-ellipsis> number_integer_t </span> </a> </li> <li class=md-nav__item> <a href=../number_unsigned_t/ class=md-nav__link> <span class=md-ellipsis> number_unsigned_t </span> </a> </li> <li class=md-nav__item> <a href=../object/ class=md-nav__link> <span class=md-ellipsis> object </span> </a> </li> <li class=md-nav__item> <a href=../object_comparator_t/ class=md-nav__link> <span class=md-ellipsis> object_comparator_t </span> </a> </li> <li class=md-nav__item> <a href=../object_t/ class=md-nav__link> <span class=md-ellipsis> object_t </span> </a> </li> <li class=md-nav__item> <a href=../operator_ValueType/ class=md-nav__link> <span class=md-ellipsis> operator ValueType </span> </a> </li> <li class=md-nav__item> <a href=../operator_value_t/ class=md-nav__link> <span class=md-ellipsis> operator value_t </span> </a> </li> <li class=md-nav__item> <a href=../operator%5B%5D/ class=md-nav__link> <span class=md-ellipsis> operator[] </span> </a> </li> <li class=md-nav__item> <a href=../operator%3D/ class=md-nav__link> <span class=md-ellipsis> operator= </span> </a> </li> <li class=md-nav__item> <a href=../operator%2B%3D/ class=md-nav__link> <span class=md-ellipsis> operator+= </span> </a> </li> <li class=md-nav__item> <a href=../operator_eq/ class=md-nav__link> <span class=md-ellipsis> operator== </span> </a> </li> <li class=md-nav__item> <a href=../operator_ne/ class=md-nav__link> <span class=md-ellipsis> operator!= </span> </a> </li> <li class=md-nav__item> <a href=../operator_lt/ class=md-nav__link> <span class=md-ellipsis> operator< </span> </a> </li> <li class=md-nav__item> <a href=../operator_gt/ class=md-nav__link> <span class=md-ellipsis> operator> </span> </a> </li> <li class=md-nav__item> <a href=../operator_le/ class=md-nav__link> <span class=md-ellipsis> operator<= </span> </a> </li> <li class=md-nav__item> <a href=../operator_ge/ class=md-nav__link> <span class=md-ellipsis> operator>= </span> </a> </li> <li class=md-nav__item> <a href=../operator_spaceship/ class=md-nav__link> <span class=md-ellipsis> operator<=> </span> </a> </li> <li class=md-nav__item> <a href=../out_of_range/ class=md-nav__link> <span class=md-ellipsis> out_of_range </span> </a> </li> <li class=md-nav__item> <a href=../other_error/ class=md-nav__link> <span class=md-ellipsis> other_error </span> </a> </li> <li class=md-nav__item> <a href=../parse/ class=md-nav__link> <span class=md-ellipsis> parse </span> </a> </li> <li class=md-nav__item> <a href=../parse_error/ class=md-nav__link> <span class=md-ellipsis> parse_error </span> </a> </li> <li class=md-nav__item> <a href=../parse_event_t/ class=md-nav__link> <span class=md-ellipsis> parse_event_t </span> </a> </li> <li class=md-nav__item> <a href=../parser_callback_t/ class=md-nav__link> <span class=md-ellipsis> parser_callback_t </span> </a> </li> <li class=md-nav__item> <a href=../patch/ class=md-nav__link> <span class=md-ellipsis> patch </span> </a> </li> <li class=md-nav__item> <a href=../patch_inplace/ class=md-nav__link> <span class=md-ellipsis> patch_inplace </span> </a> </li> <li class=md-nav__item> <a href=../push_back/ class=md-nav__link> <span class=md-ellipsis> push_back </span> </a> </li> <li class=md-nav__item> <a href=../rbegin/ class=md-nav__link> <span class=md-ellipsis> rbegin </span> </a> </li> <li class=md-nav__item> <a href=../rend/ class=md-nav__link> <span class=md-ellipsis> rend </span> </a> </li> <li class=md-nav__item> <a href=../sax_parse/ class=md-nav__link> <span class=md-ellipsis> sax_parse </span> </a> </li> <li class=md-nav__item> <a href=../size/ class=md-nav__link> <span class=md-ellipsis> size </span> </a> </li> <li class=md-nav__item> <a href=../start_pos/ class=md-nav__link> <span class=md-ellipsis> start_pos </span> </a> </li> <li class=md-nav__item> <a href=../string_t/ class=md-nav__link> <span class=md-ellipsis> string_t </span> </a> </li> <li class=md-nav__item> <a href=../swap/ class=md-nav__link> <span class=md-ellipsis> swap </span> </a> </li> <li class=md-nav__item> <a href=../std_swap/ class=md-nav__link> <span class=md-ellipsis> std::swap&lt;basic_json&gt; </span> </a> </li> <li class=md-nav__item> <a href=../to_bjdata/ class=md-nav__link> <span class=md-ellipsis> to_bjdata </span> </a> </li> <li class=md-nav__item> <a href=../to_bson/ class=md-nav__link> <span class=md-ellipsis> to_bson </span> </a> </li> <li class=md-nav__item> <a href=../to_cbor/ class=md-nav__link> <span class=md-ellipsis> to_cbor </span> </a> </li> <li class=md-nav__item> <a href=../to_msgpack/ class=md-nav__link> <span class=md-ellipsis> to_msgpack </span> </a> </li> <li class=md-nav__item> <a href=../to_string/ class=md-nav__link> <span class=md-ellipsis> to_string </span> </a> </li> <li class=md-nav__item> <a href=../to_ubjson/ class=md-nav__link> <span class=md-ellipsis> to_ubjson </span> </a> </li> <li class=md-nav__item> <a href=../type/ class=md-nav__link> <span class=md-ellipsis> type </span> </a> </li> <li class=md-nav__item> <a href=../type_error/ class=md-nav__link> <span class=md-ellipsis> type_error </span> </a> </li> <li class=md-nav__item> <a href=../type_name/ class=md-nav__link> <span class=md-ellipsis> type_name </span> </a> </li> <li class=md-nav__item> <a href=../unflatten/ class=md-nav__link> <span class=md-ellipsis> unflatten </span> </a> </li> <li class=md-nav__item> <a href=../update/ class=md-nav__link> <span class=md-ellipsis> update </span> </a> </li> <li class=md-nav__item> <a href=../value/ class=md-nav__link> <span class=md-ellipsis> value </span> </a> </li> <li class=md-nav__item> <a href=../value_t/ class=md-nav__link> <span class=md-ellipsis> value_t </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_2> <div class="md-nav__link md-nav__container"> <a href=../../byte_container_with_subtype/ class="md-nav__link "> <span class=md-ellipsis> byte_container_with_subtype </span> </a> <label class="md-nav__link " for=__nav_4_2 id=__nav_4_2_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_2_label aria-expanded=false> <label class=md-nav__title for=__nav_4_2> <span class="md-nav__icon md-icon"></span> byte_container_with_subtype </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../byte_container_with_subtype/byte_container_with_subtype/ class=md-nav__link> <span class=md-ellipsis> (constructor) </span> </a> </li> <li class=md-nav__item> <a href=../../byte_container_with_subtype/clear_subtype/ class=md-nav__link> <span class=md-ellipsis> clear_subtype </span> </a> </li> <li class=md-nav__item> <a href=../../byte_container_with_subtype/has_subtype/ class=md-nav__link> <span class=md-ellipsis> has_subtype </span> </a> </li> <li class=md-nav__item> <a href=../../byte_container_with_subtype/set_subtype/ class=md-nav__link> <span class=md-ellipsis> set_subtype </span> </a> </li> <li class=md-nav__item> <a href=../../byte_container_with_subtype/subtype/ class=md-nav__link> <span class=md-ellipsis> subtype </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_3> <div class="md-nav__link md-nav__container"> <a href=../../adl_serializer/ class="md-nav__link "> <span class=md-ellipsis> adl_serializer </span> </a> <label class="md-nav__link " for=__nav_4_3 id=__nav_4_3_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_3_label aria-expanded=false> <label class=md-nav__title for=__nav_4_3> <span class="md-nav__icon md-icon"></span> adl_serializer </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../adl_serializer/from_json/ class=md-nav__link> <span class=md-ellipsis> from_json </span> </a> </li> <li class=md-nav__item> <a href=../../adl_serializer/to_json/ class=md-nav__link> <span class=md-ellipsis> to_json </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../json/ class=md-nav__link> <span class=md-ellipsis> json </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_5> <div class="md-nav__link md-nav__container"> <a href=../../json_pointer/ class="md-nav__link "> <span class=md-ellipsis> json_pointer </span> </a> <label class="md-nav__link " for=__nav_4_5 id=__nav_4_5_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_5_label aria-expanded=false> <label class=md-nav__title for=__nav_4_5> <span class="md-nav__icon md-icon"></span> json_pointer </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../json_pointer/json_pointer/ class=md-nav__link> <span class=md-ellipsis> (Constructor) </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/back/ class=md-nav__link> <span class=md-ellipsis> back </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/empty/ class=md-nav__link> <span class=md-ellipsis> empty </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/front/ class=md-nav__link> <span class=md-ellipsis> front </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_string_t/ class=md-nav__link> <span class=md-ellipsis> operator string_t </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_eq/ class=md-nav__link> <span class=md-ellipsis> operator== </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_ne/ class=md-nav__link> <span class=md-ellipsis> operator!= </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_slash/ class=md-nav__link> <span class=md-ellipsis> operator/ </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_slasheq/ class=md-nav__link> <span class=md-ellipsis> operator/= </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/parent_pointer/ class=md-nav__link> <span class=md-ellipsis> parent_pointer </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/pop_back/ class=md-nav__link> <span class=md-ellipsis> pop_back </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/pop_front/ class=md-nav__link> <span class=md-ellipsis> pop_front </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/push_back/ class=md-nav__link> <span class=md-ellipsis> push_back </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/push_front/ class=md-nav__link> <span class=md-ellipsis> push_front </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/string_t/ class=md-nav__link> <span class=md-ellipsis> string_t </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/to_string/ class=md-nav__link> <span class=md-ellipsis> to_string </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_6> <div class="md-nav__link md-nav__container"> <a href=../../json_sax/ class="md-nav__link "> <span class=md-ellipsis> json_sax </span> </a> <label class="md-nav__link " for=__nav_4_6 id=__nav_4_6_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_6_label aria-expanded=false> <label class=md-nav__title for=__nav_4_6> <span class="md-nav__icon md-icon"></span> json_sax </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../json_sax/binary/ class=md-nav__link> <span class=md-ellipsis> binary </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/boolean/ class=md-nav__link> <span class=md-ellipsis> boolean </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/end_array/ class=md-nav__link> <span class=md-ellipsis> end_array </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/end_object/ class=md-nav__link> <span class=md-ellipsis> end_object </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/key/ class=md-nav__link> <span class=md-ellipsis> key </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/null/ class=md-nav__link> <span class=md-ellipsis> null </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/number_float/ class=md-nav__link> <span class=md-ellipsis> number_float </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/number_integer/ class=md-nav__link> <span class=md-ellipsis> number_integer </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/number_unsigned/ class=md-nav__link> <span class=md-ellipsis> number_unsigned </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/parse_error/ class=md-nav__link> <span class=md-ellipsis> parse_error </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/start_array/ class=md-nav__link> <span class=md-ellipsis> start_array </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/start_object/ class=md-nav__link> <span class=md-ellipsis> start_object </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/string/ class=md-nav__link> <span class=md-ellipsis> string </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../operator_ltlt/ class=md-nav__link> <span class=md-ellipsis> operator<<(basic_json), operator<<(json_pointer) </span> </a> </li> <li class=md-nav__item> <a href=../../operator_gtgt/ class=md-nav__link> <span class=md-ellipsis> operator>>(basic_json) </span> </a> </li> <li class=md-nav__item> <a href=../../operator_literal_json/ class=md-nav__link> <span class=md-ellipsis> operator""_json </span> </a> </li> <li class=md-nav__item> <a href=../../operator_literal_json_pointer/ class=md-nav__link> <span class=md-ellipsis> operator""_json_pointer </span> </a> </li> <li class=md-nav__item> <a href=../../ordered_json/ class=md-nav__link> <span class=md-ellipsis> ordered_json </span> </a> </li> <li class=md-nav__item> <a href=../../ordered_map/ class=md-nav__link> <span class=md-ellipsis> ordered_map </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_13> <div class="md-nav__link md-nav__container"> <a href=../../macros/ class="md-nav__link "> <span class=md-ellipsis> macros </span> </a> <label class="md-nav__link " for=__nav_4_13 id=__nav_4_13_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_13_label aria-expanded=false> <label class=md-nav__title for=__nav_4_13> <span class="md-nav__icon md-icon"></span> macros </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../macros/json_assert/ class=md-nav__link> <span class=md-ellipsis> JSON_ASSERT </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_brace_init_copy_semantics/ class=md-nav__link> <span class=md-ellipsis> JSON_BRACE_INIT_COPY_SEMANTICS </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_throw_user/ class=md-nav__link> <span class=md-ellipsis> JSON_CATCH_USER, JSON_THROW_USER, JSON_TRY_USER </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_diagnostics/ class=md-nav__link> <span class=md-ellipsis> JSON_DIAGNOSTICS </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_diagnostic_positions/ class=md-nav__link> <span class=md-ellipsis> JSON_DIAGNOSTIC_POSITIONS </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_disable_enum_serialization/ class=md-nav__link> <span class=md-ellipsis> JSON_DISABLE_ENUM_SERIALIZATION </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_has_cpp_11/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_CPP_11, JSON_HAS_CPP_14, JSON_HAS_CPP_17, JSON_HAS_CPP_20 </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_has_filesystem/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_EXPERIMENTAL_FILESYSTEM, JSON_HAS_FILESYSTEM </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_has_ranges/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_RANGES </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_has_static_rtti/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_STATIC_RTTI </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_has_three_way_comparison/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_THREE_WAY_COMPARISON </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_noexception/ class=md-nav__link> <span class=md-ellipsis> JSON_NOEXCEPTION </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_no_io/ class=md-nav__link> <span class=md-ellipsis> JSON_NO_IO </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_skip_library_version_check/ class=md-nav__link> <span class=md-ellipsis> JSON_SKIP_LIBRARY_VERSION_CHECK </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_skip_unsupported_compiler_check/ class=md-nav__link> <span class=md-ellipsis> JSON_SKIP_UNSUPPORTED_COMPILER_CHECK </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_use_global_udls/ class=md-nav__link> <span class=md-ellipsis> JSON_USE_GLOBAL_UDLS </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_use_implicit_conversions/ class=md-nav__link> <span class=md-ellipsis> JSON_USE_IMPLICIT_CONVERSIONS </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_use_legacy_discarded_value_comparison/ class=md-nav__link> <span class=md-ellipsis> JSON_USE_LEGACY_DISCARDED_VALUE_COMPARISON </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_define_derived_type/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_ONLY_SERIALIZE, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_define_type_intrusive/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_TYPE_INTRUSIVE, NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_TYPE_INTRUSIVE_ONLY_SERIALIZE </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_define_type_non_intrusive/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_define_type_with_names/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_TYPE_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_namespace/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_NAMESPACE </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_namespace_begin/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_NAMESPACE_BEGIN, NLOHMANN_JSON_NAMESPACE_END </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_namespace_no_version/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_NAMESPACE_NO_VERSION </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_serialize_enum/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_SERIALIZE_ENUM </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_serialize_enum_strict/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_SERIALIZE_ENUM_STRICT </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_version_major/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_VERSION_MAJOR, NLOHMANN_JSON_VERSION_MINOR, NLOHMANN_JSON_VERSION_PATCH </span> </a> </li> </ul> </nav> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_5> <div class="md-nav__link md-nav__container"> <a href=../../../community/ class="md-nav__link "> <span class=md-ellipsis> Community </span> </a> <label class="md-nav__link " for=__nav_5 id=__nav_5_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_5_label aria-expanded=false> <label class=md-nav__title for=__nav_5> <span class="md-nav__icon md-icon"></span> Community </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../community/code_of_conduct/ class=md-nav__link> <span class=md-ellipsis> Code of Conduct </span> </a> </li> <li class=md-nav__item> <a href=../../../community/contribution_guidelines/ class=md-nav__link> <span class=md-ellipsis> Contribution Guidelines </span> </a> </li> <li class=md-nav__item> <a href=../../../community/quality_assurance/ class=md-nav__link> <span class=md-ellipsis> Quality assurance </span> </a> </li> <li class=md-nav__item> <a href=../../../community/governance/ class=md-nav__link> <span class=md-ellipsis> Governance </span> </a> </li> <li class=md-nav__item> <a href=../../../community/security_policy/ class=md-nav__link> <span class=md-ellipsis> Security Policy </span> </a> </li> </ul> </nav> </li> </ul> </nav> </div> </div> </div> <div class="md-sidebar md-sidebar--secondary" data-md-component=sidebar data-md-type=toc> <div class=md-sidebar__scrollwrap> <div class=md-sidebar__inner> <nav class="md-nav md-nav--secondary" aria-label="Table of contents"> <label class=md-nav__title for=__toc> <span class="md-nav__icon md-icon"></span> Table of contents </label> <ul class=md-nav__list data-md-component=toc data-md-scrollfix> <li class=md-nav__item> <a href=#template-parameters class=md-nav__link> <span class=md-ellipsis> Template parameters </span> </a> </li> <li class=md-nav__item> <a href=#parameters class=md-nav__link> <span class=md-ellipsis> Parameters </span> </a> </li> <li class=md-nav__item> <a href=#return-value class=md-nav__link> <span class=md-ellipsis> Return value </span> </a> </li> <li class=md-nav__item> <a href=#exception-safety class=md-nav__link> <span class=md-ellipsis> Exception safety </span> </a> </li> <li class=md-nav__item> <a href=#exceptions class=md-nav__link> <span class=md-ellipsis> Exceptions </span> </a> </li> <li class=md-nav__item> <a href=#complexity class=md-nav__link> <span class=md-ellipsis> Complexity </span> </a> </li> <li class=md-nav__item> <a href=#examples class=md-nav__link> <span class=md-ellipsis> Examples </span> </a> </li> <li class=md-nav__item> <a href=#see-also class=md-nav__link> <span class=md-ellipsis> See also </span> </a> </li> <li class=md-nav__item> <a href=#version-history class=md-nav__link> <span class=md-ellipsis> Version history </span> </a> </li> </ul> </nav> </div> </div> </div> <div class=md-content data-md-component=content> <article class="md-content__inner md-typeset"> <a href="https://github.com/nlohmann/json/edit/develop/docs/mkdocs/docs/api/basic_json/from_cbor.md" title="Edit this page" class="md-content__button md-icon" rel="edit"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M10 20H6V4h7v5h5v3.1l2-2V8l-6-6H6c-1.1 0-2 .9-2 2v16c0 1.1.9 2 2 2h4zm10.2-7c.1 0 .3.1.4.2l1.3 1.3c.2.2.2.6 0 .8l-1 1-2.1-2.1 1-1c.1-.1.2-.2.4-.2m0 3.9L14.1 23H12v-2.1l6.1-6.1z"/></svg> </a> <a href="https://github.com/nlohmann/json/raw/develop/docs/mkdocs/docs/api/basic_json/from_cbor.md" title="View source of this page" class="md-content__button md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M17 18c.56 0 1 .44 1 1s-.44 1-1 1-1-.44-1-1 .44-1 1-1m0-3c-2.73 0-5.06 1.66-6 4 .94 2.34 3.27 4 6 4s5.06-1.66 6-4c-.94-2.34-3.27-4-6-4m0 6.5a2.5 2.5 0 0 1-2.5-2.5 2.5 2.5 0 0 1 2.5-2.5 2.5 2.5 0 0 1 2.5 2.5 2.5 2.5 0 0 1-2.5 2.5M9.27 20H6V4h7v5h5v4.07c.7.08 1.36.25 2 .49V8l-6-6H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h4.5a8.2 8.2 0 0 1-1.23-2"/></svg> </a> <h1 id=nlohmannbasic_jsonfrom_cbor><small>nlohmann::basic_json::</small>from_cbor<a class=headerlink href=#nlohmannbasic_jsonfrom_cbor title="Permanent link">&para;</a></h1> <div class=highlight><pre><span></span><code><span class=c1>// (1)</span>
 <span class=k>template</span><span class=o>&lt;</span><span class=k>typename</span><span class=w> </span><span class=nc>InputType</span><span class=o>&gt;</span>
 <span class=k>static</span><span class=w> </span><span class=n>basic_json</span><span class=w> </span><span class=n>from_cbor</span><span class=p>(</span><span class=n>InputType</span><span class=o>&amp;&amp;</span><span class=w> </span><span class=n>i</span><span class=p>,</span>
 <span class=w>                            </span><span class=k>const</span><span class=w> </span><span class=kt>bool</span><span class=w> </span><span class=n>strict</span><span class=w> </span><span class=o>=</span><span class=w> </span><span class=nb>true</span><span class=p>,</span>
@@ -35,4 +35,4 @@
 <span class=w>  </span><span class=nt>&quot;compact&quot;</span><span class=p>:</span><span class=w> </span><span class=kc>true</span><span class=p>,</span>
 <span class=w>  </span><span class=nt>&quot;schema&quot;</span><span class=p>:</span><span class=w> </span><span class=mi>0</span>
 <span class=p>}</span>
-</code></pre></div> </details> <h2 id=version-history>Version history<a class=headerlink href=#version-history title="Permanent link">&para;</a></h2> <ul> <li>Added in version 2.0.9.</li> <li>Parameter <code>start_index</code> since version 2.1.1.</li> <li>Changed to consume input adapters, removed <code>start_index</code> parameter, and added <code>strict</code> parameter in version 3.0.0.</li> <li>Added <code>allow_exceptions</code> parameter in version 3.2.0.</li> <li>Added <code>tag_handler</code> parameter in version 3.9.0.</li> </ul> <div class="admonition warning"> <p class=admonition-title>Deprecation</p> <ul> <li>Overload (2) replaces calls to <code>from_cbor</code> with a pointer and a length as first two parameters, which has been deprecated in version 3.8.0. This overload will be removed in version 4.0.0. Please replace all calls like <code class=highlight><span class=n>from_cbor</span><span class=p>(</span><span class=n>ptr</span><span class=p>,</span><span class=w> </span><span class=n>len</span><span class=p>,</span><span class=w> </span><span class=p>...);</span></code> with <code class=highlight><span class=n>from_cbor</span><span class=p>(</span><span class=n>ptr</span><span class=p>,</span><span class=w> </span><span class=n>ptr</span><span class=o>+</span><span class=n>len</span><span class=p>,</span><span class=w> </span><span class=p>...);</span></code>.</li> <li>Overload (2) replaces calls to <code>from_cbor</code> with a pair of iterators as their first parameter, which has been deprecated in version 3.8.0. This overload will be removed in version 4.0.0. Please replace all calls like <code class=highlight><span class=n>from_cbor</span><span class=p>({</span><span class=n>ptr</span><span class=p>,</span><span class=w> </span><span class=n>ptr</span><span class=o>+</span><span class=n>len</span><span class=p>},</span><span class=w> </span><span class=p>...);</span></code> with <code class=highlight><span class=n>from_cbor</span><span class=p>(</span><span class=n>ptr</span><span class=p>,</span><span class=w> </span><span class=n>ptr</span><span class=o>+</span><span class=n>len</span><span class=p>,</span><span class=w> </span><span class=p>...);</span></code>.</li> </ul> <p>You should be warned by your compiler with a <code>-Wdeprecated-declarations</code> warning if you are using a deprecated function.</p> </div> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 23, 2026 11:16:18 UTC">June 23, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
+</code></pre></div> </details> <h2 id=see-also>See also<a class=headerlink href=#see-also title="Permanent link">&para;</a></h2> <ul> <li><a href=../to_cbor/ >to_cbor</a> create a <abbr title="Concise Binary Object Representation">CBOR</abbr> serialization of a <abbr title="JavaScript Object Notation">JSON</abbr> value</li> <li><a href=../from_msgpack/ >from_msgpack</a> create a <abbr title="JavaScript Object Notation">JSON</abbr> value from an input in MessagePack format</li> <li><a href=../from_bson/ >from_bson</a> create a <abbr title="JavaScript Object Notation">JSON</abbr> value from an input in <abbr title="Binary JSON">BSON</abbr> format</li> <li><a href=../from_ubjson/ >from_ubjson</a> create a <abbr title="JavaScript Object Notation">JSON</abbr> value from an input in <abbr title="Universal Binary JSON">UBJSON</abbr> format</li> <li><a href=../from_bjdata/ >from_bjdata</a> create a <abbr title="JavaScript Object Notation">JSON</abbr> value from an input in <abbr title="Binary JData">BJData</abbr> format</li> </ul> <h2 id=version-history>Version history<a class=headerlink href=#version-history title="Permanent link">&para;</a></h2> <ul> <li>Added in version 2.0.9.</li> <li>Parameter <code>start_index</code> since version 2.1.1.</li> <li>Changed to consume input adapters, removed <code>start_index</code> parameter, and added <code>strict</code> parameter in version 3.0.0.</li> <li>Added <code>allow_exceptions</code> parameter in version 3.2.0.</li> <li>Added <code>tag_handler</code> parameter in version 3.9.0.</li> </ul> <div class="admonition warning"> <p class=admonition-title>Deprecation</p> <ul> <li>Overload (2) replaces calls to <code>from_cbor</code> with a pointer and a length as first two parameters, which has been deprecated in version 3.8.0. This overload will be removed in version 4.0.0. Please replace all calls like <code class=highlight><span class=n>from_cbor</span><span class=p>(</span><span class=n>ptr</span><span class=p>,</span><span class=w> </span><span class=n>len</span><span class=p>,</span><span class=w> </span><span class=p>...);</span></code> with <code class=highlight><span class=n>from_cbor</span><span class=p>(</span><span class=n>ptr</span><span class=p>,</span><span class=w> </span><span class=n>ptr</span><span class=o>+</span><span class=n>len</span><span class=p>,</span><span class=w> </span><span class=p>...);</span></code>.</li> <li>Overload (2) replaces calls to <code>from_cbor</code> with a pair of iterators as their first parameter, which has been deprecated in version 3.8.0. This overload will be removed in version 4.0.0. Please replace all calls like <code class=highlight><span class=n>from_cbor</span><span class=p>({</span><span class=n>ptr</span><span class=p>,</span><span class=w> </span><span class=n>ptr</span><span class=o>+</span><span class=n>len</span><span class=p>},</span><span class=w> </span><span class=p>...);</span></code> with <code class=highlight><span class=n>from_cbor</span><span class=p>(</span><span class=n>ptr</span><span class=p>,</span><span class=w> </span><span class=n>ptr</span><span class=o>+</span><span class=n>len</span><span class=p>,</span><span class=w> </span><span class=p>...);</span></code>.</li> </ul> <p>You should be warned by your compiler with a <code>-Wdeprecated-declarations</code> warning if you are using a deprecated function.</p> </div> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 29, 2026 20:15:18 UTC">June 29, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
diff --git a/api/basic_json/from_msgpack/index.html b/api/basic_json/from_msgpack/index.html
index 8574fed..85b1d8a 100644
--- a/api/basic_json/from_msgpack/index.html
+++ b/api/basic_json/from_msgpack/index.html
@@ -1,4 +1,4 @@
-<!doctype html><html lang=en class=no-js> <head><meta charset=utf-8><meta name=viewport content="width=device-width,initial-scale=1"><meta name=author content="Niels Lohmann"><link href="https://json.nlohmann.me/api/basic_json/from_msgpack/" rel="canonical"><link href=../from_cbor/ rel=prev><link href=../from_ubjson/ rel=next><link rel=icon href=../../../assets/images/favicon.png><meta name=generator content="mkdocs-1.6.1, mkdocs-material-9.7.6"><title>from_msgpack - JSON for Modern C++</title><link rel=stylesheet href=../../../assets/stylesheets/main.484c7ddc.min.css><link rel=stylesheet href=../../../assets/stylesheets/palette.ab4e12ef.min.css><link rel="stylesheet" href="../../../assets/external/fonts.googleapis.com/css.61a430c9.css"><style>:root{--md-text-font:"Roboto";--md-code-font:"JetBrains Mono"}</style><link rel=stylesheet href=../../../css/custom.css><script>__md_scope=new URL("../../..",location),__md_hash=e=>[...e].reduce(((e,_)=>(e<<5)-e+_.charCodeAt(0)),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script></head> <body dir=ltr data-md-color-scheme=default data-md-color-primary=indigo data-md-color-accent=indigo> <input class=md-toggle data-md-toggle=drawer type=checkbox id=__drawer autocomplete=off> <input class=md-toggle data-md-toggle=search type=checkbox id=__search autocomplete=off> <label class=md-overlay for=__drawer></label> <div data-md-component=skip> <a href=#nlohmannbasic_jsonfrom_msgpack class=md-skip> Skip to content </a> </div> <div data-md-component=announce> </div> <header class=md-header data-md-component=header> <nav class="md-header__inner md-grid" aria-label=Header> <a href=../../.. title="JSON for Modern C++" class="md-header__button md-logo" aria-label="JSON for Modern C++" data-md-component=logo> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54"/></svg> </a> <label class="md-header__button md-icon" for=__drawer> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M3 6h18v2H3zm0 5h18v2H3zm0 5h18v2H3z"/></svg> </label> <div class=md-header__title data-md-component=header-title> <div class=md-header__ellipsis> <div class=md-header__topic> <span class=md-ellipsis> JSON for Modern C++ </span> </div> <div class=md-header__topic data-md-component=header-topic> <span class=md-ellipsis> from_msgpack </span> </div> </div> </div> <form class=md-header__option data-md-component=palette> <input class=md-option data-md-color-media="(prefers-color-scheme: light)" data-md-color-scheme=default data-md-color-primary=indigo data-md-color-accent=indigo aria-label="Switch to dark mode" type=radio name=__palette id=__palette_0> <label class="md-header__button md-icon" title="Switch to dark mode" for=__palette_1 hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a4 4 0 0 0-4 4 4 4 0 0 0 4 4 4 4 0 0 0 4-4 4 4 0 0 0-4-4m0 10a6 6 0 0 1-6-6 6 6 0 0 1 6-6 6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12z"/></svg> </label> <input class=md-option data-md-color-media="(prefers-color-scheme: dark)" data-md-color-scheme=slate data-md-color-primary=indigo data-md-color-accent=indigo aria-label="Switch to light mode" type=radio name=__palette id=__palette_1> <label class="md-header__button md-icon" title="Switch to light mode" for=__palette_0 hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 18c-.89 0-1.74-.2-2.5-.55C11.56 16.5 13 14.42 13 12s-1.44-4.5-3.5-5.45C10.26 6.2 11.11 6 12 6a6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12z"/></svg> </label> </form> <script>var palette=__md_get("__palette");if(palette&&palette.color){if("(prefers-color-scheme)"===palette.color.media){var media=matchMedia("(prefers-color-scheme: light)"),input=document.querySelector(media.matches?"[data-md-color-media='(prefers-color-scheme: light)']":"[data-md-color-media='(prefers-color-scheme: dark)']");palette.color.media=input.getAttribute("data-md-color-media"),palette.color.scheme=input.getAttribute("data-md-color-scheme"),palette.color.primary=input.getAttribute("data-md-color-primary"),palette.color.accent=input.getAttribute("data-md-color-accent")}for(var[key,value]of Object.entries(palette.color))document.body.setAttribute("data-md-color-"+key,value)}</script> <label class="md-header__button md-icon" for=__search> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg> </label> <div class=md-search data-md-component=search role=dialog> <label class=md-search__overlay for=__search></label> <div class=md-search__inner role=search> <form class=md-search__form name=search> <input type=text class=md-search__input name=query aria-label=Search placeholder=Search autocapitalize=off autocorrect=off autocomplete=off spellcheck=false data-md-component=search-query required> <label class="md-search__icon md-icon" for=__search> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11z"/></svg> </label> <nav class=md-search__options aria-label=Search> <button type=reset class="md-search__icon md-icon" title=Clear aria-label=Clear tabindex=-1> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z"/></svg> </button> </nav> </form> <div class=md-search__output> <div class=md-search__scrollwrap tabindex=0 data-md-scrollfix> <div class=md-search-result data-md-component=search-result> <div class=md-search-result__meta> Initializing search </div> <ol class=md-search-result__list role=presentation></ol> </div> </div> </div> </div> </div> <div class=md-header__source> <a href="https://github.com/nlohmann/json" title="Go to repository" class="md-source" data-md-component="source"> <div class="md-source__icon md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </div> <div class=md-source__repository> nlohmann/json </div> </a> </div> </nav> </header> <div class=md-container data-md-component=container> <nav class=md-tabs aria-label=Tabs data-md-component=tabs> <div class=md-grid> <ul class=md-tabs__list> <li class=md-tabs__item> <a href=../../.. class=md-tabs__link> Home </a> </li> <li class=md-tabs__item> <a href=../../../features/arbitrary_types/ class=md-tabs__link> Features </a> </li> <li class=md-tabs__item> <a href=../../../integration/ class=md-tabs__link> Integration </a> </li> <li class="md-tabs__item md-tabs__item--active"> <a href=../ class=md-tabs__link> API Documentation </a> </li> <li class=md-tabs__item> <a href=../../../community/ class=md-tabs__link> Community </a> </li> </ul> </div> </nav> <main class=md-main data-md-component=main> <div class="md-main__inner md-grid"> <div class="md-sidebar md-sidebar--primary" data-md-component=sidebar data-md-type=navigation> <div class=md-sidebar__scrollwrap> <div class=md-sidebar__inner> <nav class="md-nav md-nav--primary md-nav--lifted" aria-label=Navigation data-md-level=0> <label class=md-nav__title for=__drawer> <a href=../../.. title="JSON for Modern C++" class="md-nav__button md-logo" aria-label="JSON for Modern C++" data-md-component=logo> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54"/></svg> </a> JSON for Modern C++ </label> <div class=md-nav__source> <a href="https://github.com/nlohmann/json" title="Go to repository" class="md-source" data-md-component="source"> <div class="md-source__icon md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </div> <div class=md-source__repository> nlohmann/json </div> </a> </div> <ul class=md-nav__list data-md-scrollfix> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_1> <div class="md-nav__link md-nav__container"> <a href=../../.. class="md-nav__link "> <span class=md-ellipsis> Home </span> </a> <label class="md-nav__link " for=__nav_1 id=__nav_1_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_1_label aria-expanded=false> <label class=md-nav__title for=__nav_1> <span class="md-nav__icon md-icon"></span> Home </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../home/license/ class=md-nav__link> <span class=md-ellipsis> License </span> </a> </li> <li class=md-nav__item> <a href=../../../home/faq/ class=md-nav__link> <span class=md-ellipsis> FAQ </span> </a> </li> <li class=md-nav__item> <a href=../../../home/exceptions/ class=md-nav__link> <span class=md-ellipsis> Exceptions </span> </a> </li> <li class=md-nav__item> <a href=../../../home/releases/ class=md-nav__link> <span class=md-ellipsis> Releases </span> </a> </li> <li class=md-nav__item> <a href=../../../home/design_goals/ class=md-nav__link> <span class=md-ellipsis> Design goals </span> </a> </li> <li class=md-nav__item> <a href=../../../home/architecture/ class=md-nav__link> <span class=md-ellipsis> Architecture </span> </a> </li> <li class=md-nav__item> <a href=../../../home/customers/ class=md-nav__link> <span class=md-ellipsis> Customers </span> </a> </li> <li class=md-nav__item> <a href=../../../home/sponsors/ class=md-nav__link> <span class=md-ellipsis> Sponsors </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2> <label class=md-nav__link for=__nav_2 id=__nav_2_label tabindex=0> <span class=md-ellipsis> Features </span> <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_2_label aria-expanded=false> <label class=md-nav__title for=__nav_2> <span class="md-nav__icon md-icon"></span> Features </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/arbitrary_types/ class=md-nav__link> <span class=md-ellipsis> Arbitrary Type Conversions </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_2> <div class="md-nav__link md-nav__container"> <a href=../../../features/binary_formats/ class="md-nav__link "> <span class=md-ellipsis> Binary Formats </span> </a> <label class="md-nav__link " for=__nav_2_2 id=__nav_2_2_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_2_label aria-expanded=false> <label class=md-nav__title for=__nav_2_2> <span class="md-nav__icon md-icon"></span> Binary Formats </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/binary_formats/bjdata/ class=md-nav__link> <span class=md-ellipsis> BJData </span> </a> </li> <li class=md-nav__item> <a href=../../../features/binary_formats/bson/ class=md-nav__link> <span class=md-ellipsis> BSON </span> </a> </li> <li class=md-nav__item> <a href=../../../features/binary_formats/cbor/ class=md-nav__link> <span class=md-ellipsis> CBOR </span> </a> </li> <li class=md-nav__item> <a href=../../../features/binary_formats/messagepack/ class=md-nav__link> <span class=md-ellipsis> MessagePack </span> </a> </li> <li class=md-nav__item> <a href=../../../features/binary_formats/ubjson/ class=md-nav__link> <span class=md-ellipsis> UBJSON </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../../features/binary_values/ class=md-nav__link> <span class=md-ellipsis> Binary Values </span> </a> </li> <li class=md-nav__item> <a href=../../../features/comments/ class=md-nav__link> <span class=md-ellipsis> Comments </span> </a> </li> <li class=md-nav__item> <a href=../../../features/trailing_commas/ class=md-nav__link> <span class=md-ellipsis> Trailing Commas </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_6> <div class="md-nav__link md-nav__container"> <a href=../../../features/element_access/ class="md-nav__link "> <span class=md-ellipsis> Element Access </span> </a> <label class="md-nav__link " for=__nav_2_6 id=__nav_2_6_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_6_label aria-expanded=false> <label class=md-nav__title for=__nav_2_6> <span class="md-nav__icon md-icon"></span> Element Access </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/element_access/unchecked_access/ class=md-nav__link> <span class=md-ellipsis> Unchecked access: operator[] </span> </a> </li> <li class=md-nav__item> <a href=../../../features/element_access/checked_access/ class=md-nav__link> <span class=md-ellipsis> Checked access: at </span> </a> </li> <li class=md-nav__item> <a href=../../../features/element_access/default_value/ class=md-nav__link> <span class=md-ellipsis> Access with default value: value </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../../features/iterators/ class=md-nav__link> <span class=md-ellipsis> Iterators </span> </a> </li> <li class=md-nav__item> <a href=../../../features/json_pointer/ class=md-nav__link> <span class=md-ellipsis> JSON Pointer </span> </a> </li> <li class=md-nav__item> <a href=../../../features/json_patch/ class=md-nav__link> <span class=md-ellipsis> JSON Patch and Diff </span> </a> </li> <li class=md-nav__item> <a href=../../../features/merge_patch/ class=md-nav__link> <span class=md-ellipsis> JSON Merge Patch </span> </a> </li> <li class=md-nav__item> <a href=../../../features/modules/ class=md-nav__link> <span class=md-ellipsis> Modules </span> </a> </li> <li class=md-nav__item> <a href=../../../features/namespace/ class=md-nav__link> <span class=md-ellipsis> nlohmann Namespace </span> </a> </li> <li class=md-nav__item> <a href=../../../features/object_order/ class=md-nav__link> <span class=md-ellipsis> Object Order </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_14> <div class="md-nav__link md-nav__container"> <a href=../../../features/parsing/ class="md-nav__link "> <span class=md-ellipsis> Parsing </span> </a> <label class="md-nav__link " for=__nav_2_14 id=__nav_2_14_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_14_label aria-expanded=false> <label class=md-nav__title for=__nav_2_14> <span class="md-nav__icon md-icon"></span> Parsing </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/parsing/json_lines/ class=md-nav__link> <span class=md-ellipsis> JSON Lines </span> </a> </li> <li class=md-nav__item> <a href=../../../features/parsing/parse_exceptions/ class=md-nav__link> <span class=md-ellipsis> Parsing and Exceptions </span> </a> </li> <li class=md-nav__item> <a href=../../../features/parsing/parser_callbacks/ class=md-nav__link> <span class=md-ellipsis> Parser Callbacks </span> </a> </li> <li class=md-nav__item> <a href=../../../features/parsing/sax_interface/ class=md-nav__link> <span class=md-ellipsis> SAX Interface </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../../features/assertions/ class=md-nav__link> <span class=md-ellipsis> Runtime Assertions </span> </a> </li> <li class=md-nav__item> <a href=../../../features/enum_conversion/ class=md-nav__link> <span class=md-ellipsis> Specializing enum conversion </span> </a> </li> <li class=md-nav__item> <a href=../../../features/macros/ class=md-nav__link> <span class=md-ellipsis> Supported Macros </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_18> <div class="md-nav__link md-nav__container"> <a href=../../../features/types/ class="md-nav__link "> <span class=md-ellipsis> Types </span> </a> <label class="md-nav__link " for=__nav_2_18 id=__nav_2_18_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_18_label aria-expanded=false> <label class=md-nav__title for=__nav_2_18> <span class="md-nav__icon md-icon"></span> Types </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/types/number_handling/ class=md-nav__link> <span class=md-ellipsis> Number Handling </span> </a> </li> </ul> </nav> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_3> <div class="md-nav__link md-nav__container"> <a href=../../../integration/ class="md-nav__link "> <span class=md-ellipsis> Integration </span> </a> <label class="md-nav__link " for=__nav_3 id=__nav_3_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_3_label aria-expanded=false> <label class=md-nav__title for=__nav_3> <span class="md-nav__icon md-icon"></span> Integration </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../integration/migration_guide/ class=md-nav__link> <span class=md-ellipsis> Migration Guide </span> </a> </li> <li class=md-nav__item> <a href=../../../integration/cmake/ class=md-nav__link> <span class=md-ellipsis> CMake </span> </a> </li> <li class=md-nav__item> <a href=../../../integration/package_managers/ class=md-nav__link> <span class=md-ellipsis> Package Managers </span> </a> </li> <li class=md-nav__item> <a href=../../../integration/pkg-config/ class=md-nav__link> <span class=md-ellipsis> Pkg-config </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--active md-nav__item--section md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4 checked> <label class=md-nav__link for=__nav_4 id=__nav_4_label tabindex> <span class=md-ellipsis> API Documentation </span> <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_4_label aria-expanded=true> <label class=md-nav__title for=__nav_4> <span class="md-nav__icon md-icon"></span> API Documentation </label> <ul class=md-nav__list data-md-scrollfix> <li class="md-nav__item md-nav__item--active md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_1 checked> <div class="md-nav__link md-nav__container"> <a href=../ class="md-nav__link "> <span class=md-ellipsis> basic_json </span> </a> <label class="md-nav__link " for=__nav_4_1 id=__nav_4_1_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_1_label aria-expanded=true> <label class=md-nav__title for=__nav_4_1> <span class="md-nav__icon md-icon"></span> basic_json </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../basic_json/ class=md-nav__link> <span class=md-ellipsis> (Constructor) </span> </a> </li> <li class=md-nav__item> <a href=../~basic_json/ class=md-nav__link> <span class=md-ellipsis> (Destructor) </span> </a> </li> <li class=md-nav__item> <a href=../accept/ class=md-nav__link> <span class=md-ellipsis> accept </span> </a> </li> <li class=md-nav__item> <a href=../array/ class=md-nav__link> <span class=md-ellipsis> array </span> </a> </li> <li class=md-nav__item> <a href=../array_t/ class=md-nav__link> <span class=md-ellipsis> array_t </span> </a> </li> <li class=md-nav__item> <a href=../at/ class=md-nav__link> <span class=md-ellipsis> at </span> </a> </li> <li class=md-nav__item> <a href=../back/ class=md-nav__link> <span class=md-ellipsis> back </span> </a> </li> <li class=md-nav__item> <a href=../begin/ class=md-nav__link> <span class=md-ellipsis> begin </span> </a> </li> <li class=md-nav__item> <a href=../binary/ class=md-nav__link> <span class=md-ellipsis> binary </span> </a> </li> <li class=md-nav__item> <a href=../binary_t/ class=md-nav__link> <span class=md-ellipsis> binary_t </span> </a> </li> <li class=md-nav__item> <a href=../boolean_t/ class=md-nav__link> <span class=md-ellipsis> boolean_t </span> </a> </li> <li class=md-nav__item> <a href=../cbegin/ class=md-nav__link> <span class=md-ellipsis> cbegin </span> </a> </li> <li class=md-nav__item> <a href=../cbor_tag_handler_t/ class=md-nav__link> <span class=md-ellipsis> cbor_tag_handler_t </span> </a> </li> <li class=md-nav__item> <a href=../cend/ class=md-nav__link> <span class=md-ellipsis> cend </span> </a> </li> <li class=md-nav__item> <a href=../clear/ class=md-nav__link> <span class=md-ellipsis> clear </span> </a> </li> <li class=md-nav__item> <a href=../contains/ class=md-nav__link> <span class=md-ellipsis> contains </span> </a> </li> <li class=md-nav__item> <a href=../count/ class=md-nav__link> <span class=md-ellipsis> count </span> </a> </li> <li class=md-nav__item> <a href=../crbegin/ class=md-nav__link> <span class=md-ellipsis> crbegin </span> </a> </li> <li class=md-nav__item> <a href=../crend/ class=md-nav__link> <span class=md-ellipsis> crend </span> </a> </li> <li class=md-nav__item> <a href=../default_object_comparator_t/ class=md-nav__link> <span class=md-ellipsis> default_object_comparator_t </span> </a> </li> <li class=md-nav__item> <a href=../diff/ class=md-nav__link> <span class=md-ellipsis> diff </span> </a> </li> <li class=md-nav__item> <a href=../dump/ class=md-nav__link> <span class=md-ellipsis> dump </span> </a> </li> <li class=md-nav__item> <a href=../emplace/ class=md-nav__link> <span class=md-ellipsis> emplace </span> </a> </li> <li class=md-nav__item> <a href=../emplace_back/ class=md-nav__link> <span class=md-ellipsis> emplace_back </span> </a> </li> <li class=md-nav__item> <a href=../empty/ class=md-nav__link> <span class=md-ellipsis> empty </span> </a> </li> <li class=md-nav__item> <a href=../end/ class=md-nav__link> <span class=md-ellipsis> end </span> </a> </li> <li class=md-nav__item> <a href=../end_pos/ class=md-nav__link> <span class=md-ellipsis> end_pos </span> </a> </li> <li class=md-nav__item> <a href=../erase/ class=md-nav__link> <span class=md-ellipsis> erase </span> </a> </li> <li class=md-nav__item> <a href=../error_handler_t/ class=md-nav__link> <span class=md-ellipsis> error_handler_t </span> </a> </li> <li class=md-nav__item> <a href=../exception/ class=md-nav__link> <span class=md-ellipsis> exception </span> </a> </li> <li class=md-nav__item> <a href=../find/ class=md-nav__link> <span class=md-ellipsis> find </span> </a> </li> <li class=md-nav__item> <a href=../flatten/ class=md-nav__link> <span class=md-ellipsis> flatten </span> </a> </li> <li class=md-nav__item> <a href=../from_bjdata/ class=md-nav__link> <span class=md-ellipsis> from_bjdata </span> </a> </li> <li class=md-nav__item> <a href=../from_bson/ class=md-nav__link> <span class=md-ellipsis> from_bson </span> </a> </li> <li class=md-nav__item> <a href=../from_cbor/ class=md-nav__link> <span class=md-ellipsis> from_cbor </span> </a> </li> <li class="md-nav__item md-nav__item--active"> <input class="md-nav__toggle md-toggle" type=checkbox id=__toc> <label class="md-nav__link md-nav__link--active" for=__toc> <span class=md-ellipsis> from_msgpack </span> <span class="md-nav__icon md-icon"></span> </label> <a href=./ class="md-nav__link md-nav__link--active"> <span class=md-ellipsis> from_msgpack </span> </a> <nav class="md-nav md-nav--secondary" aria-label="Table of contents"> <label class=md-nav__title for=__toc> <span class="md-nav__icon md-icon"></span> Table of contents </label> <ul class=md-nav__list data-md-component=toc data-md-scrollfix> <li class=md-nav__item> <a href=#template-parameters class=md-nav__link> <span class=md-ellipsis> Template parameters </span> </a> </li> <li class=md-nav__item> <a href=#parameters class=md-nav__link> <span class=md-ellipsis> Parameters </span> </a> </li> <li class=md-nav__item> <a href=#return-value class=md-nav__link> <span class=md-ellipsis> Return value </span> </a> </li> <li class=md-nav__item> <a href=#exception-safety class=md-nav__link> <span class=md-ellipsis> Exception safety </span> </a> </li> <li class=md-nav__item> <a href=#exceptions class=md-nav__link> <span class=md-ellipsis> Exceptions </span> </a> </li> <li class=md-nav__item> <a href=#complexity class=md-nav__link> <span class=md-ellipsis> Complexity </span> </a> </li> <li class=md-nav__item> <a href=#examples class=md-nav__link> <span class=md-ellipsis> Examples </span> </a> </li> <li class=md-nav__item> <a href=#version-history class=md-nav__link> <span class=md-ellipsis> Version history </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../from_ubjson/ class=md-nav__link> <span class=md-ellipsis> from_ubjson </span> </a> </li> <li class=md-nav__item> <a href=../front/ class=md-nav__link> <span class=md-ellipsis> front </span> </a> </li> <li class=md-nav__item> <a href=../get/ class=md-nav__link> <span class=md-ellipsis> get </span> </a> </li> <li class=md-nav__item> <a href=../get_allocator/ class=md-nav__link> <span class=md-ellipsis> get_allocator </span> </a> </li> <li class=md-nav__item> <a href=../get_binary/ class=md-nav__link> <span class=md-ellipsis> get_binary </span> </a> </li> <li class=md-nav__item> <a href=../get_ptr/ class=md-nav__link> <span class=md-ellipsis> get_ptr </span> </a> </li> <li class=md-nav__item> <a href=../get_ref/ class=md-nav__link> <span class=md-ellipsis> get_ref </span> </a> </li> <li class=md-nav__item> <a href=../get_to/ class=md-nav__link> <span class=md-ellipsis> get_to </span> </a> </li> <li class=md-nav__item> <a href=../std_hash/ class=md-nav__link> <span class=md-ellipsis> std::hash&lt;basic_json&gt; </span> </a> </li> <li class=md-nav__item> <a href=../input_format_t/ class=md-nav__link> <span class=md-ellipsis> input_format_t </span> </a> </li> <li class=md-nav__item> <a href=../insert/ class=md-nav__link> <span class=md-ellipsis> insert </span> </a> </li> <li class=md-nav__item> <a href=../invalid_iterator/ class=md-nav__link> <span class=md-ellipsis> invalid_iterator </span> </a> </li> <li class=md-nav__item> <a href=../is_array/ class=md-nav__link> <span class=md-ellipsis> is_array </span> </a> </li> <li class=md-nav__item> <a href=../is_binary/ class=md-nav__link> <span class=md-ellipsis> is_binary </span> </a> </li> <li class=md-nav__item> <a href=../is_boolean/ class=md-nav__link> <span class=md-ellipsis> is_boolean </span> </a> </li> <li class=md-nav__item> <a href=../is_discarded/ class=md-nav__link> <span class=md-ellipsis> is_discarded </span> </a> </li> <li class=md-nav__item> <a href=../is_null/ class=md-nav__link> <span class=md-ellipsis> is_null </span> </a> </li> <li class=md-nav__item> <a href=../is_number/ class=md-nav__link> <span class=md-ellipsis> is_number </span> </a> </li> <li class=md-nav__item> <a href=../is_number_float/ class=md-nav__link> <span class=md-ellipsis> is_number_float </span> </a> </li> <li class=md-nav__item> <a href=../is_number_integer/ class=md-nav__link> <span class=md-ellipsis> is_number_integer </span> </a> </li> <li class=md-nav__item> <a href=../is_number_unsigned/ class=md-nav__link> <span class=md-ellipsis> is_number_unsigned </span> </a> </li> <li class=md-nav__item> <a href=../is_object/ class=md-nav__link> <span class=md-ellipsis> is_object </span> </a> </li> <li class=md-nav__item> <a href=../is_primitive/ class=md-nav__link> <span class=md-ellipsis> is_primitive </span> </a> </li> <li class=md-nav__item> <a href=../is_string/ class=md-nav__link> <span class=md-ellipsis> is_string </span> </a> </li> <li class=md-nav__item> <a href=../is_structured/ class=md-nav__link> <span class=md-ellipsis> is_structured </span> </a> </li> <li class=md-nav__item> <a href=../items/ class=md-nav__link> <span class=md-ellipsis> items </span> </a> </li> <li class=md-nav__item> <a href=../json_base_class_t/ class=md-nav__link> <span class=md-ellipsis> json_base_class_t </span> </a> </li> <li class=md-nav__item> <a href=../json_serializer/ class=md-nav__link> <span class=md-ellipsis> json_serializer </span> </a> </li> <li class=md-nav__item> <a href=../max_size/ class=md-nav__link> <span class=md-ellipsis> max_size </span> </a> </li> <li class=md-nav__item> <a href=../meta/ class=md-nav__link> <span class=md-ellipsis> meta </span> </a> </li> <li class=md-nav__item> <a href=../merge_patch/ class=md-nav__link> <span class=md-ellipsis> merge_patch </span> </a> </li> <li class=md-nav__item> <a href=../number_float_t/ class=md-nav__link> <span class=md-ellipsis> number_float_t </span> </a> </li> <li class=md-nav__item> <a href=../number_integer_t/ class=md-nav__link> <span class=md-ellipsis> number_integer_t </span> </a> </li> <li class=md-nav__item> <a href=../number_unsigned_t/ class=md-nav__link> <span class=md-ellipsis> number_unsigned_t </span> </a> </li> <li class=md-nav__item> <a href=../object/ class=md-nav__link> <span class=md-ellipsis> object </span> </a> </li> <li class=md-nav__item> <a href=../object_comparator_t/ class=md-nav__link> <span class=md-ellipsis> object_comparator_t </span> </a> </li> <li class=md-nav__item> <a href=../object_t/ class=md-nav__link> <span class=md-ellipsis> object_t </span> </a> </li> <li class=md-nav__item> <a href=../operator_ValueType/ class=md-nav__link> <span class=md-ellipsis> operator ValueType </span> </a> </li> <li class=md-nav__item> <a href=../operator_value_t/ class=md-nav__link> <span class=md-ellipsis> operator value_t </span> </a> </li> <li class=md-nav__item> <a href=../operator%5B%5D/ class=md-nav__link> <span class=md-ellipsis> operator[] </span> </a> </li> <li class=md-nav__item> <a href=../operator%3D/ class=md-nav__link> <span class=md-ellipsis> operator= </span> </a> </li> <li class=md-nav__item> <a href=../operator%2B%3D/ class=md-nav__link> <span class=md-ellipsis> operator+= </span> </a> </li> <li class=md-nav__item> <a href=../operator_eq/ class=md-nav__link> <span class=md-ellipsis> operator== </span> </a> </li> <li class=md-nav__item> <a href=../operator_ne/ class=md-nav__link> <span class=md-ellipsis> operator!= </span> </a> </li> <li class=md-nav__item> <a href=../operator_lt/ class=md-nav__link> <span class=md-ellipsis> operator< </span> </a> </li> <li class=md-nav__item> <a href=../operator_gt/ class=md-nav__link> <span class=md-ellipsis> operator> </span> </a> </li> <li class=md-nav__item> <a href=../operator_le/ class=md-nav__link> <span class=md-ellipsis> operator<= </span> </a> </li> <li class=md-nav__item> <a href=../operator_ge/ class=md-nav__link> <span class=md-ellipsis> operator>= </span> </a> </li> <li class=md-nav__item> <a href=../operator_spaceship/ class=md-nav__link> <span class=md-ellipsis> operator<=> </span> </a> </li> <li class=md-nav__item> <a href=../out_of_range/ class=md-nav__link> <span class=md-ellipsis> out_of_range </span> </a> </li> <li class=md-nav__item> <a href=../other_error/ class=md-nav__link> <span class=md-ellipsis> other_error </span> </a> </li> <li class=md-nav__item> <a href=../parse/ class=md-nav__link> <span class=md-ellipsis> parse </span> </a> </li> <li class=md-nav__item> <a href=../parse_error/ class=md-nav__link> <span class=md-ellipsis> parse_error </span> </a> </li> <li class=md-nav__item> <a href=../parse_event_t/ class=md-nav__link> <span class=md-ellipsis> parse_event_t </span> </a> </li> <li class=md-nav__item> <a href=../parser_callback_t/ class=md-nav__link> <span class=md-ellipsis> parser_callback_t </span> </a> </li> <li class=md-nav__item> <a href=../patch/ class=md-nav__link> <span class=md-ellipsis> patch </span> </a> </li> <li class=md-nav__item> <a href=../patch_inplace/ class=md-nav__link> <span class=md-ellipsis> patch_inplace </span> </a> </li> <li class=md-nav__item> <a href=../push_back/ class=md-nav__link> <span class=md-ellipsis> push_back </span> </a> </li> <li class=md-nav__item> <a href=../rbegin/ class=md-nav__link> <span class=md-ellipsis> rbegin </span> </a> </li> <li class=md-nav__item> <a href=../rend/ class=md-nav__link> <span class=md-ellipsis> rend </span> </a> </li> <li class=md-nav__item> <a href=../sax_parse/ class=md-nav__link> <span class=md-ellipsis> sax_parse </span> </a> </li> <li class=md-nav__item> <a href=../size/ class=md-nav__link> <span class=md-ellipsis> size </span> </a> </li> <li class=md-nav__item> <a href=../start_pos/ class=md-nav__link> <span class=md-ellipsis> start_pos </span> </a> </li> <li class=md-nav__item> <a href=../string_t/ class=md-nav__link> <span class=md-ellipsis> string_t </span> </a> </li> <li class=md-nav__item> <a href=../swap/ class=md-nav__link> <span class=md-ellipsis> swap </span> </a> </li> <li class=md-nav__item> <a href=../std_swap/ class=md-nav__link> <span class=md-ellipsis> std::swap&lt;basic_json&gt; </span> </a> </li> <li class=md-nav__item> <a href=../to_bjdata/ class=md-nav__link> <span class=md-ellipsis> to_bjdata </span> </a> </li> <li class=md-nav__item> <a href=../to_bson/ class=md-nav__link> <span class=md-ellipsis> to_bson </span> </a> </li> <li class=md-nav__item> <a href=../to_cbor/ class=md-nav__link> <span class=md-ellipsis> to_cbor </span> </a> </li> <li class=md-nav__item> <a href=../to_msgpack/ class=md-nav__link> <span class=md-ellipsis> to_msgpack </span> </a> </li> <li class=md-nav__item> <a href=../to_string/ class=md-nav__link> <span class=md-ellipsis> to_string </span> </a> </li> <li class=md-nav__item> <a href=../to_ubjson/ class=md-nav__link> <span class=md-ellipsis> to_ubjson </span> </a> </li> <li class=md-nav__item> <a href=../type/ class=md-nav__link> <span class=md-ellipsis> type </span> </a> </li> <li class=md-nav__item> <a href=../type_error/ class=md-nav__link> <span class=md-ellipsis> type_error </span> </a> </li> <li class=md-nav__item> <a href=../type_name/ class=md-nav__link> <span class=md-ellipsis> type_name </span> </a> </li> <li class=md-nav__item> <a href=../unflatten/ class=md-nav__link> <span class=md-ellipsis> unflatten </span> </a> </li> <li class=md-nav__item> <a href=../update/ class=md-nav__link> <span class=md-ellipsis> update </span> </a> </li> <li class=md-nav__item> <a href=../value/ class=md-nav__link> <span class=md-ellipsis> value </span> </a> </li> <li class=md-nav__item> <a href=../value_t/ class=md-nav__link> <span class=md-ellipsis> value_t </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_2> <div class="md-nav__link md-nav__container"> <a href=../../byte_container_with_subtype/ class="md-nav__link "> <span class=md-ellipsis> byte_container_with_subtype </span> </a> <label class="md-nav__link " for=__nav_4_2 id=__nav_4_2_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_2_label aria-expanded=false> <label class=md-nav__title for=__nav_4_2> <span class="md-nav__icon md-icon"></span> byte_container_with_subtype </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../byte_container_with_subtype/byte_container_with_subtype/ class=md-nav__link> <span class=md-ellipsis> (constructor) </span> </a> </li> <li class=md-nav__item> <a href=../../byte_container_with_subtype/clear_subtype/ class=md-nav__link> <span class=md-ellipsis> clear_subtype </span> </a> </li> <li class=md-nav__item> <a href=../../byte_container_with_subtype/has_subtype/ class=md-nav__link> <span class=md-ellipsis> has_subtype </span> </a> </li> <li class=md-nav__item> <a href=../../byte_container_with_subtype/set_subtype/ class=md-nav__link> <span class=md-ellipsis> set_subtype </span> </a> </li> <li class=md-nav__item> <a href=../../byte_container_with_subtype/subtype/ class=md-nav__link> <span class=md-ellipsis> subtype </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_3> <div class="md-nav__link md-nav__container"> <a href=../../adl_serializer/ class="md-nav__link "> <span class=md-ellipsis> adl_serializer </span> </a> <label class="md-nav__link " for=__nav_4_3 id=__nav_4_3_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_3_label aria-expanded=false> <label class=md-nav__title for=__nav_4_3> <span class="md-nav__icon md-icon"></span> adl_serializer </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../adl_serializer/from_json/ class=md-nav__link> <span class=md-ellipsis> from_json </span> </a> </li> <li class=md-nav__item> <a href=../../adl_serializer/to_json/ class=md-nav__link> <span class=md-ellipsis> to_json </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../json/ class=md-nav__link> <span class=md-ellipsis> json </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_5> <div class="md-nav__link md-nav__container"> <a href=../../json_pointer/ class="md-nav__link "> <span class=md-ellipsis> json_pointer </span> </a> <label class="md-nav__link " for=__nav_4_5 id=__nav_4_5_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_5_label aria-expanded=false> <label class=md-nav__title for=__nav_4_5> <span class="md-nav__icon md-icon"></span> json_pointer </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../json_pointer/json_pointer/ class=md-nav__link> <span class=md-ellipsis> (Constructor) </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/back/ class=md-nav__link> <span class=md-ellipsis> back </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/empty/ class=md-nav__link> <span class=md-ellipsis> empty </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/front/ class=md-nav__link> <span class=md-ellipsis> front </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_string_t/ class=md-nav__link> <span class=md-ellipsis> operator string_t </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_eq/ class=md-nav__link> <span class=md-ellipsis> operator== </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_ne/ class=md-nav__link> <span class=md-ellipsis> operator!= </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_slash/ class=md-nav__link> <span class=md-ellipsis> operator/ </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_slasheq/ class=md-nav__link> <span class=md-ellipsis> operator/= </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/parent_pointer/ class=md-nav__link> <span class=md-ellipsis> parent_pointer </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/pop_back/ class=md-nav__link> <span class=md-ellipsis> pop_back </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/pop_front/ class=md-nav__link> <span class=md-ellipsis> pop_front </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/push_back/ class=md-nav__link> <span class=md-ellipsis> push_back </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/push_front/ class=md-nav__link> <span class=md-ellipsis> push_front </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/string_t/ class=md-nav__link> <span class=md-ellipsis> string_t </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/to_string/ class=md-nav__link> <span class=md-ellipsis> to_string </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_6> <div class="md-nav__link md-nav__container"> <a href=../../json_sax/ class="md-nav__link "> <span class=md-ellipsis> json_sax </span> </a> <label class="md-nav__link " for=__nav_4_6 id=__nav_4_6_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_6_label aria-expanded=false> <label class=md-nav__title for=__nav_4_6> <span class="md-nav__icon md-icon"></span> json_sax </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../json_sax/binary/ class=md-nav__link> <span class=md-ellipsis> binary </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/boolean/ class=md-nav__link> <span class=md-ellipsis> boolean </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/end_array/ class=md-nav__link> <span class=md-ellipsis> end_array </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/end_object/ class=md-nav__link> <span class=md-ellipsis> end_object </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/key/ class=md-nav__link> <span class=md-ellipsis> key </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/null/ class=md-nav__link> <span class=md-ellipsis> null </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/number_float/ class=md-nav__link> <span class=md-ellipsis> number_float </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/number_integer/ class=md-nav__link> <span class=md-ellipsis> number_integer </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/number_unsigned/ class=md-nav__link> <span class=md-ellipsis> number_unsigned </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/parse_error/ class=md-nav__link> <span class=md-ellipsis> parse_error </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/start_array/ class=md-nav__link> <span class=md-ellipsis> start_array </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/start_object/ class=md-nav__link> <span class=md-ellipsis> start_object </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/string/ class=md-nav__link> <span class=md-ellipsis> string </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../operator_ltlt/ class=md-nav__link> <span class=md-ellipsis> operator<<(basic_json), operator<<(json_pointer) </span> </a> </li> <li class=md-nav__item> <a href=../../operator_gtgt/ class=md-nav__link> <span class=md-ellipsis> operator>>(basic_json) </span> </a> </li> <li class=md-nav__item> <a href=../../operator_literal_json/ class=md-nav__link> <span class=md-ellipsis> operator""_json </span> </a> </li> <li class=md-nav__item> <a href=../../operator_literal_json_pointer/ class=md-nav__link> <span class=md-ellipsis> operator""_json_pointer </span> </a> </li> <li class=md-nav__item> <a href=../../ordered_json/ class=md-nav__link> <span class=md-ellipsis> ordered_json </span> </a> </li> <li class=md-nav__item> <a href=../../ordered_map/ class=md-nav__link> <span class=md-ellipsis> ordered_map </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_13> <div class="md-nav__link md-nav__container"> <a href=../../macros/ class="md-nav__link "> <span class=md-ellipsis> macros </span> </a> <label class="md-nav__link " for=__nav_4_13 id=__nav_4_13_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_13_label aria-expanded=false> <label class=md-nav__title for=__nav_4_13> <span class="md-nav__icon md-icon"></span> macros </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../macros/json_assert/ class=md-nav__link> <span class=md-ellipsis> JSON_ASSERT </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_brace_init_copy_semantics/ class=md-nav__link> <span class=md-ellipsis> JSON_BRACE_INIT_COPY_SEMANTICS </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_throw_user/ class=md-nav__link> <span class=md-ellipsis> JSON_CATCH_USER, JSON_THROW_USER, JSON_TRY_USER </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_diagnostics/ class=md-nav__link> <span class=md-ellipsis> JSON_DIAGNOSTICS </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_diagnostic_positions/ class=md-nav__link> <span class=md-ellipsis> JSON_DIAGNOSTIC_POSITIONS </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_disable_enum_serialization/ class=md-nav__link> <span class=md-ellipsis> JSON_DISABLE_ENUM_SERIALIZATION </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_has_cpp_11/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_CPP_11, JSON_HAS_CPP_14, JSON_HAS_CPP_17, JSON_HAS_CPP_20 </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_has_filesystem/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_EXPERIMENTAL_FILESYSTEM, JSON_HAS_FILESYSTEM </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_has_ranges/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_RANGES </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_has_static_rtti/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_STATIC_RTTI </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_has_three_way_comparison/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_THREE_WAY_COMPARISON </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_noexception/ class=md-nav__link> <span class=md-ellipsis> JSON_NOEXCEPTION </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_no_io/ class=md-nav__link> <span class=md-ellipsis> JSON_NO_IO </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_skip_library_version_check/ class=md-nav__link> <span class=md-ellipsis> JSON_SKIP_LIBRARY_VERSION_CHECK </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_skip_unsupported_compiler_check/ class=md-nav__link> <span class=md-ellipsis> JSON_SKIP_UNSUPPORTED_COMPILER_CHECK </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_use_global_udls/ class=md-nav__link> <span class=md-ellipsis> JSON_USE_GLOBAL_UDLS </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_use_implicit_conversions/ class=md-nav__link> <span class=md-ellipsis> JSON_USE_IMPLICIT_CONVERSIONS </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_use_legacy_discarded_value_comparison/ class=md-nav__link> <span class=md-ellipsis> JSON_USE_LEGACY_DISCARDED_VALUE_COMPARISON </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_define_derived_type/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_ONLY_SERIALIZE, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_define_type_intrusive/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_TYPE_INTRUSIVE, NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_TYPE_INTRUSIVE_ONLY_SERIALIZE </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_define_type_non_intrusive/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_define_type_with_names/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_TYPE_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_namespace/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_NAMESPACE </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_namespace_begin/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_NAMESPACE_BEGIN, NLOHMANN_JSON_NAMESPACE_END </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_namespace_no_version/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_NAMESPACE_NO_VERSION </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_serialize_enum/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_SERIALIZE_ENUM </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_serialize_enum_strict/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_SERIALIZE_ENUM_STRICT </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_version_major/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_VERSION_MAJOR, NLOHMANN_JSON_VERSION_MINOR, NLOHMANN_JSON_VERSION_PATCH </span> </a> </li> </ul> </nav> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_5> <div class="md-nav__link md-nav__container"> <a href=../../../community/ class="md-nav__link "> <span class=md-ellipsis> Community </span> </a> <label class="md-nav__link " for=__nav_5 id=__nav_5_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_5_label aria-expanded=false> <label class=md-nav__title for=__nav_5> <span class="md-nav__icon md-icon"></span> Community </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../community/code_of_conduct/ class=md-nav__link> <span class=md-ellipsis> Code of Conduct </span> </a> </li> <li class=md-nav__item> <a href=../../../community/contribution_guidelines/ class=md-nav__link> <span class=md-ellipsis> Contribution Guidelines </span> </a> </li> <li class=md-nav__item> <a href=../../../community/quality_assurance/ class=md-nav__link> <span class=md-ellipsis> Quality assurance </span> </a> </li> <li class=md-nav__item> <a href=../../../community/governance/ class=md-nav__link> <span class=md-ellipsis> Governance </span> </a> </li> <li class=md-nav__item> <a href=../../../community/security_policy/ class=md-nav__link> <span class=md-ellipsis> Security Policy </span> </a> </li> </ul> </nav> </li> </ul> </nav> </div> </div> </div> <div class="md-sidebar md-sidebar--secondary" data-md-component=sidebar data-md-type=toc> <div class=md-sidebar__scrollwrap> <div class=md-sidebar__inner> <nav class="md-nav md-nav--secondary" aria-label="Table of contents"> <label class=md-nav__title for=__toc> <span class="md-nav__icon md-icon"></span> Table of contents </label> <ul class=md-nav__list data-md-component=toc data-md-scrollfix> <li class=md-nav__item> <a href=#template-parameters class=md-nav__link> <span class=md-ellipsis> Template parameters </span> </a> </li> <li class=md-nav__item> <a href=#parameters class=md-nav__link> <span class=md-ellipsis> Parameters </span> </a> </li> <li class=md-nav__item> <a href=#return-value class=md-nav__link> <span class=md-ellipsis> Return value </span> </a> </li> <li class=md-nav__item> <a href=#exception-safety class=md-nav__link> <span class=md-ellipsis> Exception safety </span> </a> </li> <li class=md-nav__item> <a href=#exceptions class=md-nav__link> <span class=md-ellipsis> Exceptions </span> </a> </li> <li class=md-nav__item> <a href=#complexity class=md-nav__link> <span class=md-ellipsis> Complexity </span> </a> </li> <li class=md-nav__item> <a href=#examples class=md-nav__link> <span class=md-ellipsis> Examples </span> </a> </li> <li class=md-nav__item> <a href=#version-history class=md-nav__link> <span class=md-ellipsis> Version history </span> </a> </li> </ul> </nav> </div> </div> </div> <div class=md-content data-md-component=content> <article class="md-content__inner md-typeset"> <a href="https://github.com/nlohmann/json/edit/develop/docs/mkdocs/docs/api/basic_json/from_msgpack.md" title="Edit this page" class="md-content__button md-icon" rel="edit"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M10 20H6V4h7v5h5v3.1l2-2V8l-6-6H6c-1.1 0-2 .9-2 2v16c0 1.1.9 2 2 2h4zm10.2-7c.1 0 .3.1.4.2l1.3 1.3c.2.2.2.6 0 .8l-1 1-2.1-2.1 1-1c.1-.1.2-.2.4-.2m0 3.9L14.1 23H12v-2.1l6.1-6.1z"/></svg> </a> <a href="https://github.com/nlohmann/json/raw/develop/docs/mkdocs/docs/api/basic_json/from_msgpack.md" title="View source of this page" class="md-content__button md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M17 18c.56 0 1 .44 1 1s-.44 1-1 1-1-.44-1-1 .44-1 1-1m0-3c-2.73 0-5.06 1.66-6 4 .94 2.34 3.27 4 6 4s5.06-1.66 6-4c-.94-2.34-3.27-4-6-4m0 6.5a2.5 2.5 0 0 1-2.5-2.5 2.5 2.5 0 0 1 2.5-2.5 2.5 2.5 0 0 1 2.5 2.5 2.5 2.5 0 0 1-2.5 2.5M9.27 20H6V4h7v5h5v4.07c.7.08 1.36.25 2 .49V8l-6-6H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h4.5a8.2 8.2 0 0 1-1.23-2"/></svg> </a> <h1 id=nlohmannbasic_jsonfrom_msgpack><small>nlohmann::basic_json::</small>from_msgpack<a class=headerlink href=#nlohmannbasic_jsonfrom_msgpack title="Permanent link">&para;</a></h1> <div class=highlight><pre><span></span><code><span class=c1>// (1)</span>
+<!doctype html><html lang=en class=no-js> <head><meta charset=utf-8><meta name=viewport content="width=device-width,initial-scale=1"><meta name=author content="Niels Lohmann"><link href="https://json.nlohmann.me/api/basic_json/from_msgpack/" rel="canonical"><link href=../from_cbor/ rel=prev><link href=../from_ubjson/ rel=next><link rel=icon href=../../../assets/images/favicon.png><meta name=generator content="mkdocs-1.6.1, mkdocs-material-9.7.6"><title>from_msgpack - JSON for Modern C++</title><link rel=stylesheet href=../../../assets/stylesheets/main.484c7ddc.min.css><link rel=stylesheet href=../../../assets/stylesheets/palette.ab4e12ef.min.css><link rel="stylesheet" href="../../../assets/external/fonts.googleapis.com/css.61a430c9.css"><style>:root{--md-text-font:"Roboto";--md-code-font:"JetBrains Mono"}</style><link rel=stylesheet href=../../../css/custom.css><script>__md_scope=new URL("../../..",location),__md_hash=e=>[...e].reduce(((e,_)=>(e<<5)-e+_.charCodeAt(0)),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script></head> <body dir=ltr data-md-color-scheme=default data-md-color-primary=indigo data-md-color-accent=indigo> <input class=md-toggle data-md-toggle=drawer type=checkbox id=__drawer autocomplete=off> <input class=md-toggle data-md-toggle=search type=checkbox id=__search autocomplete=off> <label class=md-overlay for=__drawer></label> <div data-md-component=skip> <a href=#nlohmannbasic_jsonfrom_msgpack class=md-skip> Skip to content </a> </div> <div data-md-component=announce> </div> <header class=md-header data-md-component=header> <nav class="md-header__inner md-grid" aria-label=Header> <a href=../../.. title="JSON for Modern C++" class="md-header__button md-logo" aria-label="JSON for Modern C++" data-md-component=logo> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54"/></svg> </a> <label class="md-header__button md-icon" for=__drawer> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M3 6h18v2H3zm0 5h18v2H3zm0 5h18v2H3z"/></svg> </label> <div class=md-header__title data-md-component=header-title> <div class=md-header__ellipsis> <div class=md-header__topic> <span class=md-ellipsis> JSON for Modern C++ </span> </div> <div class=md-header__topic data-md-component=header-topic> <span class=md-ellipsis> from_msgpack </span> </div> </div> </div> <form class=md-header__option data-md-component=palette> <input class=md-option data-md-color-media="(prefers-color-scheme: light)" data-md-color-scheme=default data-md-color-primary=indigo data-md-color-accent=indigo aria-label="Switch to dark mode" type=radio name=__palette id=__palette_0> <label class="md-header__button md-icon" title="Switch to dark mode" for=__palette_1 hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a4 4 0 0 0-4 4 4 4 0 0 0 4 4 4 4 0 0 0 4-4 4 4 0 0 0-4-4m0 10a6 6 0 0 1-6-6 6 6 0 0 1 6-6 6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12z"/></svg> </label> <input class=md-option data-md-color-media="(prefers-color-scheme: dark)" data-md-color-scheme=slate data-md-color-primary=indigo data-md-color-accent=indigo aria-label="Switch to light mode" type=radio name=__palette id=__palette_1> <label class="md-header__button md-icon" title="Switch to light mode" for=__palette_0 hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 18c-.89 0-1.74-.2-2.5-.55C11.56 16.5 13 14.42 13 12s-1.44-4.5-3.5-5.45C10.26 6.2 11.11 6 12 6a6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12z"/></svg> </label> </form> <script>var palette=__md_get("__palette");if(palette&&palette.color){if("(prefers-color-scheme)"===palette.color.media){var media=matchMedia("(prefers-color-scheme: light)"),input=document.querySelector(media.matches?"[data-md-color-media='(prefers-color-scheme: light)']":"[data-md-color-media='(prefers-color-scheme: dark)']");palette.color.media=input.getAttribute("data-md-color-media"),palette.color.scheme=input.getAttribute("data-md-color-scheme"),palette.color.primary=input.getAttribute("data-md-color-primary"),palette.color.accent=input.getAttribute("data-md-color-accent")}for(var[key,value]of Object.entries(palette.color))document.body.setAttribute("data-md-color-"+key,value)}</script> <label class="md-header__button md-icon" for=__search> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg> </label> <div class=md-search data-md-component=search role=dialog> <label class=md-search__overlay for=__search></label> <div class=md-search__inner role=search> <form class=md-search__form name=search> <input type=text class=md-search__input name=query aria-label=Search placeholder=Search autocapitalize=off autocorrect=off autocomplete=off spellcheck=false data-md-component=search-query required> <label class="md-search__icon md-icon" for=__search> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11z"/></svg> </label> <nav class=md-search__options aria-label=Search> <button type=reset class="md-search__icon md-icon" title=Clear aria-label=Clear tabindex=-1> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z"/></svg> </button> </nav> </form> <div class=md-search__output> <div class=md-search__scrollwrap tabindex=0 data-md-scrollfix> <div class=md-search-result data-md-component=search-result> <div class=md-search-result__meta> Initializing search </div> <ol class=md-search-result__list role=presentation></ol> </div> </div> </div> </div> </div> <div class=md-header__source> <a href="https://github.com/nlohmann/json" title="Go to repository" class="md-source" data-md-component="source"> <div class="md-source__icon md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </div> <div class=md-source__repository> nlohmann/json </div> </a> </div> </nav> </header> <div class=md-container data-md-component=container> <nav class=md-tabs aria-label=Tabs data-md-component=tabs> <div class=md-grid> <ul class=md-tabs__list> <li class=md-tabs__item> <a href=../../.. class=md-tabs__link> Home </a> </li> <li class=md-tabs__item> <a href=../../../features/arbitrary_types/ class=md-tabs__link> Features </a> </li> <li class=md-tabs__item> <a href=../../../integration/ class=md-tabs__link> Integration </a> </li> <li class="md-tabs__item md-tabs__item--active"> <a href=../ class=md-tabs__link> API Documentation </a> </li> <li class=md-tabs__item> <a href=../../../community/ class=md-tabs__link> Community </a> </li> </ul> </div> </nav> <main class=md-main data-md-component=main> <div class="md-main__inner md-grid"> <div class="md-sidebar md-sidebar--primary" data-md-component=sidebar data-md-type=navigation> <div class=md-sidebar__scrollwrap> <div class=md-sidebar__inner> <nav class="md-nav md-nav--primary md-nav--lifted" aria-label=Navigation data-md-level=0> <label class=md-nav__title for=__drawer> <a href=../../.. title="JSON for Modern C++" class="md-nav__button md-logo" aria-label="JSON for Modern C++" data-md-component=logo> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54"/></svg> </a> JSON for Modern C++ </label> <div class=md-nav__source> <a href="https://github.com/nlohmann/json" title="Go to repository" class="md-source" data-md-component="source"> <div class="md-source__icon md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </div> <div class=md-source__repository> nlohmann/json </div> </a> </div> <ul class=md-nav__list data-md-scrollfix> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_1> <div class="md-nav__link md-nav__container"> <a href=../../.. class="md-nav__link "> <span class=md-ellipsis> Home </span> </a> <label class="md-nav__link " for=__nav_1 id=__nav_1_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_1_label aria-expanded=false> <label class=md-nav__title for=__nav_1> <span class="md-nav__icon md-icon"></span> Home </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../home/license/ class=md-nav__link> <span class=md-ellipsis> License </span> </a> </li> <li class=md-nav__item> <a href=../../../home/faq/ class=md-nav__link> <span class=md-ellipsis> FAQ </span> </a> </li> <li class=md-nav__item> <a href=../../../home/exceptions/ class=md-nav__link> <span class=md-ellipsis> Exceptions </span> </a> </li> <li class=md-nav__item> <a href=../../../home/releases/ class=md-nav__link> <span class=md-ellipsis> Releases </span> </a> </li> <li class=md-nav__item> <a href=../../../home/design_goals/ class=md-nav__link> <span class=md-ellipsis> Design goals </span> </a> </li> <li class=md-nav__item> <a href=../../../home/architecture/ class=md-nav__link> <span class=md-ellipsis> Architecture </span> </a> </li> <li class=md-nav__item> <a href=../../../home/customers/ class=md-nav__link> <span class=md-ellipsis> Customers </span> </a> </li> <li class=md-nav__item> <a href=../../../home/sponsors/ class=md-nav__link> <span class=md-ellipsis> Sponsors </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2> <label class=md-nav__link for=__nav_2 id=__nav_2_label tabindex=0> <span class=md-ellipsis> Features </span> <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_2_label aria-expanded=false> <label class=md-nav__title for=__nav_2> <span class="md-nav__icon md-icon"></span> Features </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/arbitrary_types/ class=md-nav__link> <span class=md-ellipsis> Arbitrary Type Conversions </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_2> <div class="md-nav__link md-nav__container"> <a href=../../../features/binary_formats/ class="md-nav__link "> <span class=md-ellipsis> Binary Formats </span> </a> <label class="md-nav__link " for=__nav_2_2 id=__nav_2_2_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_2_label aria-expanded=false> <label class=md-nav__title for=__nav_2_2> <span class="md-nav__icon md-icon"></span> Binary Formats </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/binary_formats/bjdata/ class=md-nav__link> <span class=md-ellipsis> BJData </span> </a> </li> <li class=md-nav__item> <a href=../../../features/binary_formats/bson/ class=md-nav__link> <span class=md-ellipsis> BSON </span> </a> </li> <li class=md-nav__item> <a href=../../../features/binary_formats/cbor/ class=md-nav__link> <span class=md-ellipsis> CBOR </span> </a> </li> <li class=md-nav__item> <a href=../../../features/binary_formats/messagepack/ class=md-nav__link> <span class=md-ellipsis> MessagePack </span> </a> </li> <li class=md-nav__item> <a href=../../../features/binary_formats/ubjson/ class=md-nav__link> <span class=md-ellipsis> UBJSON </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../../features/binary_values/ class=md-nav__link> <span class=md-ellipsis> Binary Values </span> </a> </li> <li class=md-nav__item> <a href=../../../features/comments/ class=md-nav__link> <span class=md-ellipsis> Comments </span> </a> </li> <li class=md-nav__item> <a href=../../../features/trailing_commas/ class=md-nav__link> <span class=md-ellipsis> Trailing Commas </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_6> <div class="md-nav__link md-nav__container"> <a href=../../../features/element_access/ class="md-nav__link "> <span class=md-ellipsis> Element Access </span> </a> <label class="md-nav__link " for=__nav_2_6 id=__nav_2_6_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_6_label aria-expanded=false> <label class=md-nav__title for=__nav_2_6> <span class="md-nav__icon md-icon"></span> Element Access </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/element_access/unchecked_access/ class=md-nav__link> <span class=md-ellipsis> Unchecked access: operator[] </span> </a> </li> <li class=md-nav__item> <a href=../../../features/element_access/checked_access/ class=md-nav__link> <span class=md-ellipsis> Checked access: at </span> </a> </li> <li class=md-nav__item> <a href=../../../features/element_access/default_value/ class=md-nav__link> <span class=md-ellipsis> Access with default value: value </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../../features/iterators/ class=md-nav__link> <span class=md-ellipsis> Iterators </span> </a> </li> <li class=md-nav__item> <a href=../../../features/json_pointer/ class=md-nav__link> <span class=md-ellipsis> JSON Pointer </span> </a> </li> <li class=md-nav__item> <a href=../../../features/json_patch/ class=md-nav__link> <span class=md-ellipsis> JSON Patch and Diff </span> </a> </li> <li class=md-nav__item> <a href=../../../features/merge_patch/ class=md-nav__link> <span class=md-ellipsis> JSON Merge Patch </span> </a> </li> <li class=md-nav__item> <a href=../../../features/modules/ class=md-nav__link> <span class=md-ellipsis> Modules </span> </a> </li> <li class=md-nav__item> <a href=../../../features/namespace/ class=md-nav__link> <span class=md-ellipsis> nlohmann Namespace </span> </a> </li> <li class=md-nav__item> <a href=../../../features/object_order/ class=md-nav__link> <span class=md-ellipsis> Object Order </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_14> <div class="md-nav__link md-nav__container"> <a href=../../../features/parsing/ class="md-nav__link "> <span class=md-ellipsis> Parsing </span> </a> <label class="md-nav__link " for=__nav_2_14 id=__nav_2_14_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_14_label aria-expanded=false> <label class=md-nav__title for=__nav_2_14> <span class="md-nav__icon md-icon"></span> Parsing </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/parsing/json_lines/ class=md-nav__link> <span class=md-ellipsis> JSON Lines </span> </a> </li> <li class=md-nav__item> <a href=../../../features/parsing/parse_exceptions/ class=md-nav__link> <span class=md-ellipsis> Parsing and Exceptions </span> </a> </li> <li class=md-nav__item> <a href=../../../features/parsing/parser_callbacks/ class=md-nav__link> <span class=md-ellipsis> Parser Callbacks </span> </a> </li> <li class=md-nav__item> <a href=../../../features/parsing/sax_interface/ class=md-nav__link> <span class=md-ellipsis> SAX Interface </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../../features/assertions/ class=md-nav__link> <span class=md-ellipsis> Runtime Assertions </span> </a> </li> <li class=md-nav__item> <a href=../../../features/enum_conversion/ class=md-nav__link> <span class=md-ellipsis> Specializing enum conversion </span> </a> </li> <li class=md-nav__item> <a href=../../../features/macros/ class=md-nav__link> <span class=md-ellipsis> Supported Macros </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_18> <div class="md-nav__link md-nav__container"> <a href=../../../features/types/ class="md-nav__link "> <span class=md-ellipsis> Types </span> </a> <label class="md-nav__link " for=__nav_2_18 id=__nav_2_18_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_18_label aria-expanded=false> <label class=md-nav__title for=__nav_2_18> <span class="md-nav__icon md-icon"></span> Types </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/types/number_handling/ class=md-nav__link> <span class=md-ellipsis> Number Handling </span> </a> </li> </ul> </nav> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_3> <div class="md-nav__link md-nav__container"> <a href=../../../integration/ class="md-nav__link "> <span class=md-ellipsis> Integration </span> </a> <label class="md-nav__link " for=__nav_3 id=__nav_3_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_3_label aria-expanded=false> <label class=md-nav__title for=__nav_3> <span class="md-nav__icon md-icon"></span> Integration </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../integration/migration_guide/ class=md-nav__link> <span class=md-ellipsis> Migration Guide </span> </a> </li> <li class=md-nav__item> <a href=../../../integration/cmake/ class=md-nav__link> <span class=md-ellipsis> CMake </span> </a> </li> <li class=md-nav__item> <a href=../../../integration/package_managers/ class=md-nav__link> <span class=md-ellipsis> Package Managers </span> </a> </li> <li class=md-nav__item> <a href=../../../integration/pkg-config/ class=md-nav__link> <span class=md-ellipsis> Pkg-config </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--active md-nav__item--section md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4 checked> <label class=md-nav__link for=__nav_4 id=__nav_4_label tabindex> <span class=md-ellipsis> API Documentation </span> <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_4_label aria-expanded=true> <label class=md-nav__title for=__nav_4> <span class="md-nav__icon md-icon"></span> API Documentation </label> <ul class=md-nav__list data-md-scrollfix> <li class="md-nav__item md-nav__item--active md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_1 checked> <div class="md-nav__link md-nav__container"> <a href=../ class="md-nav__link "> <span class=md-ellipsis> basic_json </span> </a> <label class="md-nav__link " for=__nav_4_1 id=__nav_4_1_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_1_label aria-expanded=true> <label class=md-nav__title for=__nav_4_1> <span class="md-nav__icon md-icon"></span> basic_json </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../basic_json/ class=md-nav__link> <span class=md-ellipsis> (Constructor) </span> </a> </li> <li class=md-nav__item> <a href=../~basic_json/ class=md-nav__link> <span class=md-ellipsis> (Destructor) </span> </a> </li> <li class=md-nav__item> <a href=../accept/ class=md-nav__link> <span class=md-ellipsis> accept </span> </a> </li> <li class=md-nav__item> <a href=../array/ class=md-nav__link> <span class=md-ellipsis> array </span> </a> </li> <li class=md-nav__item> <a href=../array_t/ class=md-nav__link> <span class=md-ellipsis> array_t </span> </a> </li> <li class=md-nav__item> <a href=../at/ class=md-nav__link> <span class=md-ellipsis> at </span> </a> </li> <li class=md-nav__item> <a href=../back/ class=md-nav__link> <span class=md-ellipsis> back </span> </a> </li> <li class=md-nav__item> <a href=../begin/ class=md-nav__link> <span class=md-ellipsis> begin </span> </a> </li> <li class=md-nav__item> <a href=../binary/ class=md-nav__link> <span class=md-ellipsis> binary </span> </a> </li> <li class=md-nav__item> <a href=../binary_t/ class=md-nav__link> <span class=md-ellipsis> binary_t </span> </a> </li> <li class=md-nav__item> <a href=../boolean_t/ class=md-nav__link> <span class=md-ellipsis> boolean_t </span> </a> </li> <li class=md-nav__item> <a href=../cbegin/ class=md-nav__link> <span class=md-ellipsis> cbegin </span> </a> </li> <li class=md-nav__item> <a href=../cbor_tag_handler_t/ class=md-nav__link> <span class=md-ellipsis> cbor_tag_handler_t </span> </a> </li> <li class=md-nav__item> <a href=../cend/ class=md-nav__link> <span class=md-ellipsis> cend </span> </a> </li> <li class=md-nav__item> <a href=../clear/ class=md-nav__link> <span class=md-ellipsis> clear </span> </a> </li> <li class=md-nav__item> <a href=../contains/ class=md-nav__link> <span class=md-ellipsis> contains </span> </a> </li> <li class=md-nav__item> <a href=../count/ class=md-nav__link> <span class=md-ellipsis> count </span> </a> </li> <li class=md-nav__item> <a href=../crbegin/ class=md-nav__link> <span class=md-ellipsis> crbegin </span> </a> </li> <li class=md-nav__item> <a href=../crend/ class=md-nav__link> <span class=md-ellipsis> crend </span> </a> </li> <li class=md-nav__item> <a href=../default_object_comparator_t/ class=md-nav__link> <span class=md-ellipsis> default_object_comparator_t </span> </a> </li> <li class=md-nav__item> <a href=../diff/ class=md-nav__link> <span class=md-ellipsis> diff </span> </a> </li> <li class=md-nav__item> <a href=../dump/ class=md-nav__link> <span class=md-ellipsis> dump </span> </a> </li> <li class=md-nav__item> <a href=../emplace/ class=md-nav__link> <span class=md-ellipsis> emplace </span> </a> </li> <li class=md-nav__item> <a href=../emplace_back/ class=md-nav__link> <span class=md-ellipsis> emplace_back </span> </a> </li> <li class=md-nav__item> <a href=../empty/ class=md-nav__link> <span class=md-ellipsis> empty </span> </a> </li> <li class=md-nav__item> <a href=../end/ class=md-nav__link> <span class=md-ellipsis> end </span> </a> </li> <li class=md-nav__item> <a href=../end_pos/ class=md-nav__link> <span class=md-ellipsis> end_pos </span> </a> </li> <li class=md-nav__item> <a href=../erase/ class=md-nav__link> <span class=md-ellipsis> erase </span> </a> </li> <li class=md-nav__item> <a href=../error_handler_t/ class=md-nav__link> <span class=md-ellipsis> error_handler_t </span> </a> </li> <li class=md-nav__item> <a href=../exception/ class=md-nav__link> <span class=md-ellipsis> exception </span> </a> </li> <li class=md-nav__item> <a href=../find/ class=md-nav__link> <span class=md-ellipsis> find </span> </a> </li> <li class=md-nav__item> <a href=../flatten/ class=md-nav__link> <span class=md-ellipsis> flatten </span> </a> </li> <li class=md-nav__item> <a href=../from_bjdata/ class=md-nav__link> <span class=md-ellipsis> from_bjdata </span> </a> </li> <li class=md-nav__item> <a href=../from_bson/ class=md-nav__link> <span class=md-ellipsis> from_bson </span> </a> </li> <li class=md-nav__item> <a href=../from_cbor/ class=md-nav__link> <span class=md-ellipsis> from_cbor </span> </a> </li> <li class="md-nav__item md-nav__item--active"> <input class="md-nav__toggle md-toggle" type=checkbox id=__toc> <label class="md-nav__link md-nav__link--active" for=__toc> <span class=md-ellipsis> from_msgpack </span> <span class="md-nav__icon md-icon"></span> </label> <a href=./ class="md-nav__link md-nav__link--active"> <span class=md-ellipsis> from_msgpack </span> </a> <nav class="md-nav md-nav--secondary" aria-label="Table of contents"> <label class=md-nav__title for=__toc> <span class="md-nav__icon md-icon"></span> Table of contents </label> <ul class=md-nav__list data-md-component=toc data-md-scrollfix> <li class=md-nav__item> <a href=#template-parameters class=md-nav__link> <span class=md-ellipsis> Template parameters </span> </a> </li> <li class=md-nav__item> <a href=#parameters class=md-nav__link> <span class=md-ellipsis> Parameters </span> </a> </li> <li class=md-nav__item> <a href=#return-value class=md-nav__link> <span class=md-ellipsis> Return value </span> </a> </li> <li class=md-nav__item> <a href=#exception-safety class=md-nav__link> <span class=md-ellipsis> Exception safety </span> </a> </li> <li class=md-nav__item> <a href=#exceptions class=md-nav__link> <span class=md-ellipsis> Exceptions </span> </a> </li> <li class=md-nav__item> <a href=#complexity class=md-nav__link> <span class=md-ellipsis> Complexity </span> </a> </li> <li class=md-nav__item> <a href=#examples class=md-nav__link> <span class=md-ellipsis> Examples </span> </a> </li> <li class=md-nav__item> <a href=#see-also class=md-nav__link> <span class=md-ellipsis> See also </span> </a> </li> <li class=md-nav__item> <a href=#version-history class=md-nav__link> <span class=md-ellipsis> Version history </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../from_ubjson/ class=md-nav__link> <span class=md-ellipsis> from_ubjson </span> </a> </li> <li class=md-nav__item> <a href=../front/ class=md-nav__link> <span class=md-ellipsis> front </span> </a> </li> <li class=md-nav__item> <a href=../get/ class=md-nav__link> <span class=md-ellipsis> get </span> </a> </li> <li class=md-nav__item> <a href=../get_allocator/ class=md-nav__link> <span class=md-ellipsis> get_allocator </span> </a> </li> <li class=md-nav__item> <a href=../get_binary/ class=md-nav__link> <span class=md-ellipsis> get_binary </span> </a> </li> <li class=md-nav__item> <a href=../get_ptr/ class=md-nav__link> <span class=md-ellipsis> get_ptr </span> </a> </li> <li class=md-nav__item> <a href=../get_ref/ class=md-nav__link> <span class=md-ellipsis> get_ref </span> </a> </li> <li class=md-nav__item> <a href=../get_to/ class=md-nav__link> <span class=md-ellipsis> get_to </span> </a> </li> <li class=md-nav__item> <a href=../std_hash/ class=md-nav__link> <span class=md-ellipsis> std::hash&lt;basic_json&gt; </span> </a> </li> <li class=md-nav__item> <a href=../input_format_t/ class=md-nav__link> <span class=md-ellipsis> input_format_t </span> </a> </li> <li class=md-nav__item> <a href=../insert/ class=md-nav__link> <span class=md-ellipsis> insert </span> </a> </li> <li class=md-nav__item> <a href=../invalid_iterator/ class=md-nav__link> <span class=md-ellipsis> invalid_iterator </span> </a> </li> <li class=md-nav__item> <a href=../is_array/ class=md-nav__link> <span class=md-ellipsis> is_array </span> </a> </li> <li class=md-nav__item> <a href=../is_binary/ class=md-nav__link> <span class=md-ellipsis> is_binary </span> </a> </li> <li class=md-nav__item> <a href=../is_boolean/ class=md-nav__link> <span class=md-ellipsis> is_boolean </span> </a> </li> <li class=md-nav__item> <a href=../is_discarded/ class=md-nav__link> <span class=md-ellipsis> is_discarded </span> </a> </li> <li class=md-nav__item> <a href=../is_null/ class=md-nav__link> <span class=md-ellipsis> is_null </span> </a> </li> <li class=md-nav__item> <a href=../is_number/ class=md-nav__link> <span class=md-ellipsis> is_number </span> </a> </li> <li class=md-nav__item> <a href=../is_number_float/ class=md-nav__link> <span class=md-ellipsis> is_number_float </span> </a> </li> <li class=md-nav__item> <a href=../is_number_integer/ class=md-nav__link> <span class=md-ellipsis> is_number_integer </span> </a> </li> <li class=md-nav__item> <a href=../is_number_unsigned/ class=md-nav__link> <span class=md-ellipsis> is_number_unsigned </span> </a> </li> <li class=md-nav__item> <a href=../is_object/ class=md-nav__link> <span class=md-ellipsis> is_object </span> </a> </li> <li class=md-nav__item> <a href=../is_primitive/ class=md-nav__link> <span class=md-ellipsis> is_primitive </span> </a> </li> <li class=md-nav__item> <a href=../is_string/ class=md-nav__link> <span class=md-ellipsis> is_string </span> </a> </li> <li class=md-nav__item> <a href=../is_structured/ class=md-nav__link> <span class=md-ellipsis> is_structured </span> </a> </li> <li class=md-nav__item> <a href=../items/ class=md-nav__link> <span class=md-ellipsis> items </span> </a> </li> <li class=md-nav__item> <a href=../json_base_class_t/ class=md-nav__link> <span class=md-ellipsis> json_base_class_t </span> </a> </li> <li class=md-nav__item> <a href=../json_serializer/ class=md-nav__link> <span class=md-ellipsis> json_serializer </span> </a> </li> <li class=md-nav__item> <a href=../max_size/ class=md-nav__link> <span class=md-ellipsis> max_size </span> </a> </li> <li class=md-nav__item> <a href=../meta/ class=md-nav__link> <span class=md-ellipsis> meta </span> </a> </li> <li class=md-nav__item> <a href=../merge_patch/ class=md-nav__link> <span class=md-ellipsis> merge_patch </span> </a> </li> <li class=md-nav__item> <a href=../number_float_t/ class=md-nav__link> <span class=md-ellipsis> number_float_t </span> </a> </li> <li class=md-nav__item> <a href=../number_integer_t/ class=md-nav__link> <span class=md-ellipsis> number_integer_t </span> </a> </li> <li class=md-nav__item> <a href=../number_unsigned_t/ class=md-nav__link> <span class=md-ellipsis> number_unsigned_t </span> </a> </li> <li class=md-nav__item> <a href=../object/ class=md-nav__link> <span class=md-ellipsis> object </span> </a> </li> <li class=md-nav__item> <a href=../object_comparator_t/ class=md-nav__link> <span class=md-ellipsis> object_comparator_t </span> </a> </li> <li class=md-nav__item> <a href=../object_t/ class=md-nav__link> <span class=md-ellipsis> object_t </span> </a> </li> <li class=md-nav__item> <a href=../operator_ValueType/ class=md-nav__link> <span class=md-ellipsis> operator ValueType </span> </a> </li> <li class=md-nav__item> <a href=../operator_value_t/ class=md-nav__link> <span class=md-ellipsis> operator value_t </span> </a> </li> <li class=md-nav__item> <a href=../operator%5B%5D/ class=md-nav__link> <span class=md-ellipsis> operator[] </span> </a> </li> <li class=md-nav__item> <a href=../operator%3D/ class=md-nav__link> <span class=md-ellipsis> operator= </span> </a> </li> <li class=md-nav__item> <a href=../operator%2B%3D/ class=md-nav__link> <span class=md-ellipsis> operator+= </span> </a> </li> <li class=md-nav__item> <a href=../operator_eq/ class=md-nav__link> <span class=md-ellipsis> operator== </span> </a> </li> <li class=md-nav__item> <a href=../operator_ne/ class=md-nav__link> <span class=md-ellipsis> operator!= </span> </a> </li> <li class=md-nav__item> <a href=../operator_lt/ class=md-nav__link> <span class=md-ellipsis> operator< </span> </a> </li> <li class=md-nav__item> <a href=../operator_gt/ class=md-nav__link> <span class=md-ellipsis> operator> </span> </a> </li> <li class=md-nav__item> <a href=../operator_le/ class=md-nav__link> <span class=md-ellipsis> operator<= </span> </a> </li> <li class=md-nav__item> <a href=../operator_ge/ class=md-nav__link> <span class=md-ellipsis> operator>= </span> </a> </li> <li class=md-nav__item> <a href=../operator_spaceship/ class=md-nav__link> <span class=md-ellipsis> operator<=> </span> </a> </li> <li class=md-nav__item> <a href=../out_of_range/ class=md-nav__link> <span class=md-ellipsis> out_of_range </span> </a> </li> <li class=md-nav__item> <a href=../other_error/ class=md-nav__link> <span class=md-ellipsis> other_error </span> </a> </li> <li class=md-nav__item> <a href=../parse/ class=md-nav__link> <span class=md-ellipsis> parse </span> </a> </li> <li class=md-nav__item> <a href=../parse_error/ class=md-nav__link> <span class=md-ellipsis> parse_error </span> </a> </li> <li class=md-nav__item> <a href=../parse_event_t/ class=md-nav__link> <span class=md-ellipsis> parse_event_t </span> </a> </li> <li class=md-nav__item> <a href=../parser_callback_t/ class=md-nav__link> <span class=md-ellipsis> parser_callback_t </span> </a> </li> <li class=md-nav__item> <a href=../patch/ class=md-nav__link> <span class=md-ellipsis> patch </span> </a> </li> <li class=md-nav__item> <a href=../patch_inplace/ class=md-nav__link> <span class=md-ellipsis> patch_inplace </span> </a> </li> <li class=md-nav__item> <a href=../push_back/ class=md-nav__link> <span class=md-ellipsis> push_back </span> </a> </li> <li class=md-nav__item> <a href=../rbegin/ class=md-nav__link> <span class=md-ellipsis> rbegin </span> </a> </li> <li class=md-nav__item> <a href=../rend/ class=md-nav__link> <span class=md-ellipsis> rend </span> </a> </li> <li class=md-nav__item> <a href=../sax_parse/ class=md-nav__link> <span class=md-ellipsis> sax_parse </span> </a> </li> <li class=md-nav__item> <a href=../size/ class=md-nav__link> <span class=md-ellipsis> size </span> </a> </li> <li class=md-nav__item> <a href=../start_pos/ class=md-nav__link> <span class=md-ellipsis> start_pos </span> </a> </li> <li class=md-nav__item> <a href=../string_t/ class=md-nav__link> <span class=md-ellipsis> string_t </span> </a> </li> <li class=md-nav__item> <a href=../swap/ class=md-nav__link> <span class=md-ellipsis> swap </span> </a> </li> <li class=md-nav__item> <a href=../std_swap/ class=md-nav__link> <span class=md-ellipsis> std::swap&lt;basic_json&gt; </span> </a> </li> <li class=md-nav__item> <a href=../to_bjdata/ class=md-nav__link> <span class=md-ellipsis> to_bjdata </span> </a> </li> <li class=md-nav__item> <a href=../to_bson/ class=md-nav__link> <span class=md-ellipsis> to_bson </span> </a> </li> <li class=md-nav__item> <a href=../to_cbor/ class=md-nav__link> <span class=md-ellipsis> to_cbor </span> </a> </li> <li class=md-nav__item> <a href=../to_msgpack/ class=md-nav__link> <span class=md-ellipsis> to_msgpack </span> </a> </li> <li class=md-nav__item> <a href=../to_string/ class=md-nav__link> <span class=md-ellipsis> to_string </span> </a> </li> <li class=md-nav__item> <a href=../to_ubjson/ class=md-nav__link> <span class=md-ellipsis> to_ubjson </span> </a> </li> <li class=md-nav__item> <a href=../type/ class=md-nav__link> <span class=md-ellipsis> type </span> </a> </li> <li class=md-nav__item> <a href=../type_error/ class=md-nav__link> <span class=md-ellipsis> type_error </span> </a> </li> <li class=md-nav__item> <a href=../type_name/ class=md-nav__link> <span class=md-ellipsis> type_name </span> </a> </li> <li class=md-nav__item> <a href=../unflatten/ class=md-nav__link> <span class=md-ellipsis> unflatten </span> </a> </li> <li class=md-nav__item> <a href=../update/ class=md-nav__link> <span class=md-ellipsis> update </span> </a> </li> <li class=md-nav__item> <a href=../value/ class=md-nav__link> <span class=md-ellipsis> value </span> </a> </li> <li class=md-nav__item> <a href=../value_t/ class=md-nav__link> <span class=md-ellipsis> value_t </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_2> <div class="md-nav__link md-nav__container"> <a href=../../byte_container_with_subtype/ class="md-nav__link "> <span class=md-ellipsis> byte_container_with_subtype </span> </a> <label class="md-nav__link " for=__nav_4_2 id=__nav_4_2_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_2_label aria-expanded=false> <label class=md-nav__title for=__nav_4_2> <span class="md-nav__icon md-icon"></span> byte_container_with_subtype </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../byte_container_with_subtype/byte_container_with_subtype/ class=md-nav__link> <span class=md-ellipsis> (constructor) </span> </a> </li> <li class=md-nav__item> <a href=../../byte_container_with_subtype/clear_subtype/ class=md-nav__link> <span class=md-ellipsis> clear_subtype </span> </a> </li> <li class=md-nav__item> <a href=../../byte_container_with_subtype/has_subtype/ class=md-nav__link> <span class=md-ellipsis> has_subtype </span> </a> </li> <li class=md-nav__item> <a href=../../byte_container_with_subtype/set_subtype/ class=md-nav__link> <span class=md-ellipsis> set_subtype </span> </a> </li> <li class=md-nav__item> <a href=../../byte_container_with_subtype/subtype/ class=md-nav__link> <span class=md-ellipsis> subtype </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_3> <div class="md-nav__link md-nav__container"> <a href=../../adl_serializer/ class="md-nav__link "> <span class=md-ellipsis> adl_serializer </span> </a> <label class="md-nav__link " for=__nav_4_3 id=__nav_4_3_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_3_label aria-expanded=false> <label class=md-nav__title for=__nav_4_3> <span class="md-nav__icon md-icon"></span> adl_serializer </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../adl_serializer/from_json/ class=md-nav__link> <span class=md-ellipsis> from_json </span> </a> </li> <li class=md-nav__item> <a href=../../adl_serializer/to_json/ class=md-nav__link> <span class=md-ellipsis> to_json </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../json/ class=md-nav__link> <span class=md-ellipsis> json </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_5> <div class="md-nav__link md-nav__container"> <a href=../../json_pointer/ class="md-nav__link "> <span class=md-ellipsis> json_pointer </span> </a> <label class="md-nav__link " for=__nav_4_5 id=__nav_4_5_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_5_label aria-expanded=false> <label class=md-nav__title for=__nav_4_5> <span class="md-nav__icon md-icon"></span> json_pointer </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../json_pointer/json_pointer/ class=md-nav__link> <span class=md-ellipsis> (Constructor) </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/back/ class=md-nav__link> <span class=md-ellipsis> back </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/empty/ class=md-nav__link> <span class=md-ellipsis> empty </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/front/ class=md-nav__link> <span class=md-ellipsis> front </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_string_t/ class=md-nav__link> <span class=md-ellipsis> operator string_t </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_eq/ class=md-nav__link> <span class=md-ellipsis> operator== </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_ne/ class=md-nav__link> <span class=md-ellipsis> operator!= </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_slash/ class=md-nav__link> <span class=md-ellipsis> operator/ </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_slasheq/ class=md-nav__link> <span class=md-ellipsis> operator/= </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/parent_pointer/ class=md-nav__link> <span class=md-ellipsis> parent_pointer </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/pop_back/ class=md-nav__link> <span class=md-ellipsis> pop_back </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/pop_front/ class=md-nav__link> <span class=md-ellipsis> pop_front </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/push_back/ class=md-nav__link> <span class=md-ellipsis> push_back </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/push_front/ class=md-nav__link> <span class=md-ellipsis> push_front </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/string_t/ class=md-nav__link> <span class=md-ellipsis> string_t </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/to_string/ class=md-nav__link> <span class=md-ellipsis> to_string </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_6> <div class="md-nav__link md-nav__container"> <a href=../../json_sax/ class="md-nav__link "> <span class=md-ellipsis> json_sax </span> </a> <label class="md-nav__link " for=__nav_4_6 id=__nav_4_6_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_6_label aria-expanded=false> <label class=md-nav__title for=__nav_4_6> <span class="md-nav__icon md-icon"></span> json_sax </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../json_sax/binary/ class=md-nav__link> <span class=md-ellipsis> binary </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/boolean/ class=md-nav__link> <span class=md-ellipsis> boolean </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/end_array/ class=md-nav__link> <span class=md-ellipsis> end_array </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/end_object/ class=md-nav__link> <span class=md-ellipsis> end_object </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/key/ class=md-nav__link> <span class=md-ellipsis> key </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/null/ class=md-nav__link> <span class=md-ellipsis> null </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/number_float/ class=md-nav__link> <span class=md-ellipsis> number_float </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/number_integer/ class=md-nav__link> <span class=md-ellipsis> number_integer </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/number_unsigned/ class=md-nav__link> <span class=md-ellipsis> number_unsigned </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/parse_error/ class=md-nav__link> <span class=md-ellipsis> parse_error </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/start_array/ class=md-nav__link> <span class=md-ellipsis> start_array </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/start_object/ class=md-nav__link> <span class=md-ellipsis> start_object </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/string/ class=md-nav__link> <span class=md-ellipsis> string </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../operator_ltlt/ class=md-nav__link> <span class=md-ellipsis> operator<<(basic_json), operator<<(json_pointer) </span> </a> </li> <li class=md-nav__item> <a href=../../operator_gtgt/ class=md-nav__link> <span class=md-ellipsis> operator>>(basic_json) </span> </a> </li> <li class=md-nav__item> <a href=../../operator_literal_json/ class=md-nav__link> <span class=md-ellipsis> operator""_json </span> </a> </li> <li class=md-nav__item> <a href=../../operator_literal_json_pointer/ class=md-nav__link> <span class=md-ellipsis> operator""_json_pointer </span> </a> </li> <li class=md-nav__item> <a href=../../ordered_json/ class=md-nav__link> <span class=md-ellipsis> ordered_json </span> </a> </li> <li class=md-nav__item> <a href=../../ordered_map/ class=md-nav__link> <span class=md-ellipsis> ordered_map </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_13> <div class="md-nav__link md-nav__container"> <a href=../../macros/ class="md-nav__link "> <span class=md-ellipsis> macros </span> </a> <label class="md-nav__link " for=__nav_4_13 id=__nav_4_13_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_13_label aria-expanded=false> <label class=md-nav__title for=__nav_4_13> <span class="md-nav__icon md-icon"></span> macros </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../macros/json_assert/ class=md-nav__link> <span class=md-ellipsis> JSON_ASSERT </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_brace_init_copy_semantics/ class=md-nav__link> <span class=md-ellipsis> JSON_BRACE_INIT_COPY_SEMANTICS </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_throw_user/ class=md-nav__link> <span class=md-ellipsis> JSON_CATCH_USER, JSON_THROW_USER, JSON_TRY_USER </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_diagnostics/ class=md-nav__link> <span class=md-ellipsis> JSON_DIAGNOSTICS </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_diagnostic_positions/ class=md-nav__link> <span class=md-ellipsis> JSON_DIAGNOSTIC_POSITIONS </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_disable_enum_serialization/ class=md-nav__link> <span class=md-ellipsis> JSON_DISABLE_ENUM_SERIALIZATION </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_has_cpp_11/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_CPP_11, JSON_HAS_CPP_14, JSON_HAS_CPP_17, JSON_HAS_CPP_20 </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_has_filesystem/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_EXPERIMENTAL_FILESYSTEM, JSON_HAS_FILESYSTEM </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_has_ranges/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_RANGES </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_has_static_rtti/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_STATIC_RTTI </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_has_three_way_comparison/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_THREE_WAY_COMPARISON </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_noexception/ class=md-nav__link> <span class=md-ellipsis> JSON_NOEXCEPTION </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_no_io/ class=md-nav__link> <span class=md-ellipsis> JSON_NO_IO </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_skip_library_version_check/ class=md-nav__link> <span class=md-ellipsis> JSON_SKIP_LIBRARY_VERSION_CHECK </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_skip_unsupported_compiler_check/ class=md-nav__link> <span class=md-ellipsis> JSON_SKIP_UNSUPPORTED_COMPILER_CHECK </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_use_global_udls/ class=md-nav__link> <span class=md-ellipsis> JSON_USE_GLOBAL_UDLS </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_use_implicit_conversions/ class=md-nav__link> <span class=md-ellipsis> JSON_USE_IMPLICIT_CONVERSIONS </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_use_legacy_discarded_value_comparison/ class=md-nav__link> <span class=md-ellipsis> JSON_USE_LEGACY_DISCARDED_VALUE_COMPARISON </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_define_derived_type/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_ONLY_SERIALIZE, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_define_type_intrusive/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_TYPE_INTRUSIVE, NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_TYPE_INTRUSIVE_ONLY_SERIALIZE </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_define_type_non_intrusive/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_define_type_with_names/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_TYPE_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_namespace/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_NAMESPACE </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_namespace_begin/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_NAMESPACE_BEGIN, NLOHMANN_JSON_NAMESPACE_END </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_namespace_no_version/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_NAMESPACE_NO_VERSION </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_serialize_enum/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_SERIALIZE_ENUM </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_serialize_enum_strict/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_SERIALIZE_ENUM_STRICT </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_version_major/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_VERSION_MAJOR, NLOHMANN_JSON_VERSION_MINOR, NLOHMANN_JSON_VERSION_PATCH </span> </a> </li> </ul> </nav> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_5> <div class="md-nav__link md-nav__container"> <a href=../../../community/ class="md-nav__link "> <span class=md-ellipsis> Community </span> </a> <label class="md-nav__link " for=__nav_5 id=__nav_5_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_5_label aria-expanded=false> <label class=md-nav__title for=__nav_5> <span class="md-nav__icon md-icon"></span> Community </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../community/code_of_conduct/ class=md-nav__link> <span class=md-ellipsis> Code of Conduct </span> </a> </li> <li class=md-nav__item> <a href=../../../community/contribution_guidelines/ class=md-nav__link> <span class=md-ellipsis> Contribution Guidelines </span> </a> </li> <li class=md-nav__item> <a href=../../../community/quality_assurance/ class=md-nav__link> <span class=md-ellipsis> Quality assurance </span> </a> </li> <li class=md-nav__item> <a href=../../../community/governance/ class=md-nav__link> <span class=md-ellipsis> Governance </span> </a> </li> <li class=md-nav__item> <a href=../../../community/security_policy/ class=md-nav__link> <span class=md-ellipsis> Security Policy </span> </a> </li> </ul> </nav> </li> </ul> </nav> </div> </div> </div> <div class="md-sidebar md-sidebar--secondary" data-md-component=sidebar data-md-type=toc> <div class=md-sidebar__scrollwrap> <div class=md-sidebar__inner> <nav class="md-nav md-nav--secondary" aria-label="Table of contents"> <label class=md-nav__title for=__toc> <span class="md-nav__icon md-icon"></span> Table of contents </label> <ul class=md-nav__list data-md-component=toc data-md-scrollfix> <li class=md-nav__item> <a href=#template-parameters class=md-nav__link> <span class=md-ellipsis> Template parameters </span> </a> </li> <li class=md-nav__item> <a href=#parameters class=md-nav__link> <span class=md-ellipsis> Parameters </span> </a> </li> <li class=md-nav__item> <a href=#return-value class=md-nav__link> <span class=md-ellipsis> Return value </span> </a> </li> <li class=md-nav__item> <a href=#exception-safety class=md-nav__link> <span class=md-ellipsis> Exception safety </span> </a> </li> <li class=md-nav__item> <a href=#exceptions class=md-nav__link> <span class=md-ellipsis> Exceptions </span> </a> </li> <li class=md-nav__item> <a href=#complexity class=md-nav__link> <span class=md-ellipsis> Complexity </span> </a> </li> <li class=md-nav__item> <a href=#examples class=md-nav__link> <span class=md-ellipsis> Examples </span> </a> </li> <li class=md-nav__item> <a href=#see-also class=md-nav__link> <span class=md-ellipsis> See also </span> </a> </li> <li class=md-nav__item> <a href=#version-history class=md-nav__link> <span class=md-ellipsis> Version history </span> </a> </li> </ul> </nav> </div> </div> </div> <div class=md-content data-md-component=content> <article class="md-content__inner md-typeset"> <a href="https://github.com/nlohmann/json/edit/develop/docs/mkdocs/docs/api/basic_json/from_msgpack.md" title="Edit this page" class="md-content__button md-icon" rel="edit"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M10 20H6V4h7v5h5v3.1l2-2V8l-6-6H6c-1.1 0-2 .9-2 2v16c0 1.1.9 2 2 2h4zm10.2-7c.1 0 .3.1.4.2l1.3 1.3c.2.2.2.6 0 .8l-1 1-2.1-2.1 1-1c.1-.1.2-.2.4-.2m0 3.9L14.1 23H12v-2.1l6.1-6.1z"/></svg> </a> <a href="https://github.com/nlohmann/json/raw/develop/docs/mkdocs/docs/api/basic_json/from_msgpack.md" title="View source of this page" class="md-content__button md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M17 18c.56 0 1 .44 1 1s-.44 1-1 1-1-.44-1-1 .44-1 1-1m0-3c-2.73 0-5.06 1.66-6 4 .94 2.34 3.27 4 6 4s5.06-1.66 6-4c-.94-2.34-3.27-4-6-4m0 6.5a2.5 2.5 0 0 1-2.5-2.5 2.5 2.5 0 0 1 2.5-2.5 2.5 2.5 0 0 1 2.5 2.5 2.5 2.5 0 0 1-2.5 2.5M9.27 20H6V4h7v5h5v4.07c.7.08 1.36.25 2 .49V8l-6-6H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h4.5a8.2 8.2 0 0 1-1.23-2"/></svg> </a> <h1 id=nlohmannbasic_jsonfrom_msgpack><small>nlohmann::basic_json::</small>from_msgpack<a class=headerlink href=#nlohmannbasic_jsonfrom_msgpack title="Permanent link">&para;</a></h1> <div class=highlight><pre><span></span><code><span class=c1>// (1)</span>
 <span class=k>template</span><span class=o>&lt;</span><span class=k>typename</span><span class=w> </span><span class=nc>InputType</span><span class=o>&gt;</span>
 <span class=k>static</span><span class=w> </span><span class=n>basic_json</span><span class=w> </span><span class=n>from_msgpack</span><span class=p>(</span><span class=n>InputType</span><span class=o>&amp;&amp;</span><span class=w> </span><span class=n>i</span><span class=p>,</span>
 <span class=w>                               </span><span class=k>const</span><span class=w> </span><span class=kt>bool</span><span class=w> </span><span class=n>strict</span><span class=w> </span><span class=o>=</span><span class=w> </span><span class=nb>true</span><span class=p>,</span>
@@ -32,4 +32,4 @@
 <span class=w>  </span><span class=nt>&quot;compact&quot;</span><span class=p>:</span><span class=w> </span><span class=kc>true</span><span class=p>,</span>
 <span class=w>  </span><span class=nt>&quot;schema&quot;</span><span class=p>:</span><span class=w> </span><span class=mi>0</span>
 <span class=p>}</span>
-</code></pre></div> </details> <h2 id=version-history>Version history<a class=headerlink href=#version-history title="Permanent link">&para;</a></h2> <ul> <li>Added in version 2.0.9.</li> <li>Parameter <code>start_index</code> since version 2.1.1.</li> <li>Changed to consume input adapters, removed <code>start_index</code> parameter, and added <code>strict</code> parameter in version 3.0.0.</li> <li>Added <code>allow_exceptions</code> parameter in version 3.2.0.</li> </ul> <div class="admonition warning"> <p class=admonition-title>Deprecation</p> <ul> <li>Overload (2) replaces calls to <code>from_msgpack</code> with a pointer and a length as first two parameters, which has been deprecated in version 3.8.0. This overload will be removed in version 4.0.0. Please replace all calls like <code class=highlight><span class=n>from_msgpack</span><span class=p>(</span><span class=n>ptr</span><span class=p>,</span><span class=w> </span><span class=n>len</span><span class=p>,</span><span class=w> </span><span class=p>...);</span></code> with <code class=highlight><span class=n>from_msgpack</span><span class=p>(</span><span class=n>ptr</span><span class=p>,</span><span class=w> </span><span class=n>ptr</span><span class=o>+</span><span class=n>len</span><span class=p>,</span><span class=w> </span><span class=p>...);</span></code>.</li> <li>Overload (2) replaces calls to <code>from_cbor</code> with a pair of iterators as their first parameter, which has been deprecated in version 3.8.0. This overload will be removed in version 4.0.0. Please replace all calls like <code class=highlight><span class=n>from_msgpack</span><span class=p>({</span><span class=n>ptr</span><span class=p>,</span><span class=w> </span><span class=n>ptr</span><span class=o>+</span><span class=n>len</span><span class=p>},</span><span class=w> </span><span class=p>...);</span></code> with <code class=highlight><span class=n>from_msgpack</span><span class=p>(</span><span class=n>ptr</span><span class=p>,</span><span class=w> </span><span class=n>ptr</span><span class=o>+</span><span class=n>len</span><span class=p>,</span><span class=w> </span><span class=p>...);</span></code>.</li> </ul> <p>You should be warned by your compiler with a <code>-Wdeprecated-declarations</code> warning if you are using a deprecated function.</p> </div> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 23, 2026 11:16:18 UTC">June 23, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
+</code></pre></div> </details> <h2 id=see-also>See also<a class=headerlink href=#see-also title="Permanent link">&para;</a></h2> <ul> <li><a href=../to_msgpack/ >to_msgpack</a> create a MessagePack serialization of a <abbr title="JavaScript Object Notation">JSON</abbr> value</li> <li><a href=../from_cbor/ >from_cbor</a> create a <abbr title="JavaScript Object Notation">JSON</abbr> value from an input in <abbr title="Concise Binary Object Representation">CBOR</abbr> format</li> <li><a href=../from_bson/ >from_bson</a> create a <abbr title="JavaScript Object Notation">JSON</abbr> value from an input in <abbr title="Binary JSON">BSON</abbr> format</li> <li><a href=../from_ubjson/ >from_ubjson</a> create a <abbr title="JavaScript Object Notation">JSON</abbr> value from an input in <abbr title="Universal Binary JSON">UBJSON</abbr> format</li> <li><a href=../from_bjdata/ >from_bjdata</a> create a <abbr title="JavaScript Object Notation">JSON</abbr> value from an input in <abbr title="Binary JData">BJData</abbr> format</li> </ul> <h2 id=version-history>Version history<a class=headerlink href=#version-history title="Permanent link">&para;</a></h2> <ul> <li>Added in version 2.0.9.</li> <li>Parameter <code>start_index</code> since version 2.1.1.</li> <li>Changed to consume input adapters, removed <code>start_index</code> parameter, and added <code>strict</code> parameter in version 3.0.0.</li> <li>Added <code>allow_exceptions</code> parameter in version 3.2.0.</li> </ul> <div class="admonition warning"> <p class=admonition-title>Deprecation</p> <ul> <li>Overload (2) replaces calls to <code>from_msgpack</code> with a pointer and a length as first two parameters, which has been deprecated in version 3.8.0. This overload will be removed in version 4.0.0. Please replace all calls like <code class=highlight><span class=n>from_msgpack</span><span class=p>(</span><span class=n>ptr</span><span class=p>,</span><span class=w> </span><span class=n>len</span><span class=p>,</span><span class=w> </span><span class=p>...);</span></code> with <code class=highlight><span class=n>from_msgpack</span><span class=p>(</span><span class=n>ptr</span><span class=p>,</span><span class=w> </span><span class=n>ptr</span><span class=o>+</span><span class=n>len</span><span class=p>,</span><span class=w> </span><span class=p>...);</span></code>.</li> <li>Overload (2) replaces calls to <code>from_msgpack</code> with a pair of iterators as their first parameter, which has been deprecated in version 3.8.0. This overload will be removed in version 4.0.0. Please replace all calls like <code class=highlight><span class=n>from_msgpack</span><span class=p>({</span><span class=n>ptr</span><span class=p>,</span><span class=w> </span><span class=n>ptr</span><span class=o>+</span><span class=n>len</span><span class=p>},</span><span class=w> </span><span class=p>...);</span></code> with <code class=highlight><span class=n>from_msgpack</span><span class=p>(</span><span class=n>ptr</span><span class=p>,</span><span class=w> </span><span class=n>ptr</span><span class=o>+</span><span class=n>len</span><span class=p>,</span><span class=w> </span><span class=p>...);</span></code>.</li> </ul> <p>You should be warned by your compiler with a <code>-Wdeprecated-declarations</code> warning if you are using a deprecated function.</p> </div> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 29, 2026 20:15:18 UTC">June 29, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
diff --git a/api/basic_json/from_ubjson/index.html b/api/basic_json/from_ubjson/index.html
index 51de136..4c1ea66 100644
--- a/api/basic_json/from_ubjson/index.html
+++ b/api/basic_json/from_ubjson/index.html
@@ -1,4 +1,4 @@
-<!doctype html><html lang=en class=no-js> <head><meta charset=utf-8><meta name=viewport content="width=device-width,initial-scale=1"><meta name=author content="Niels Lohmann"><link href="https://json.nlohmann.me/api/basic_json/from_ubjson/" rel="canonical"><link href=../from_msgpack/ rel=prev><link href=../front/ rel=next><link rel=icon href=../../../assets/images/favicon.png><meta name=generator content="mkdocs-1.6.1, mkdocs-material-9.7.6"><title>from_ubjson - JSON for Modern C++</title><link rel=stylesheet href=../../../assets/stylesheets/main.484c7ddc.min.css><link rel=stylesheet href=../../../assets/stylesheets/palette.ab4e12ef.min.css><link rel="stylesheet" href="../../../assets/external/fonts.googleapis.com/css.61a430c9.css"><style>:root{--md-text-font:"Roboto";--md-code-font:"JetBrains Mono"}</style><link rel=stylesheet href=../../../css/custom.css><script>__md_scope=new URL("../../..",location),__md_hash=e=>[...e].reduce(((e,_)=>(e<<5)-e+_.charCodeAt(0)),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script></head> <body dir=ltr data-md-color-scheme=default data-md-color-primary=indigo data-md-color-accent=indigo> <input class=md-toggle data-md-toggle=drawer type=checkbox id=__drawer autocomplete=off> <input class=md-toggle data-md-toggle=search type=checkbox id=__search autocomplete=off> <label class=md-overlay for=__drawer></label> <div data-md-component=skip> <a href=#nlohmannbasic_jsonfrom_ubjson class=md-skip> Skip to content </a> </div> <div data-md-component=announce> </div> <header class=md-header data-md-component=header> <nav class="md-header__inner md-grid" aria-label=Header> <a href=../../.. title="JSON for Modern C++" class="md-header__button md-logo" aria-label="JSON for Modern C++" data-md-component=logo> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54"/></svg> </a> <label class="md-header__button md-icon" for=__drawer> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M3 6h18v2H3zm0 5h18v2H3zm0 5h18v2H3z"/></svg> </label> <div class=md-header__title data-md-component=header-title> <div class=md-header__ellipsis> <div class=md-header__topic> <span class=md-ellipsis> JSON for Modern C++ </span> </div> <div class=md-header__topic data-md-component=header-topic> <span class=md-ellipsis> from_ubjson </span> </div> </div> </div> <form class=md-header__option data-md-component=palette> <input class=md-option data-md-color-media="(prefers-color-scheme: light)" data-md-color-scheme=default data-md-color-primary=indigo data-md-color-accent=indigo aria-label="Switch to dark mode" type=radio name=__palette id=__palette_0> <label class="md-header__button md-icon" title="Switch to dark mode" for=__palette_1 hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a4 4 0 0 0-4 4 4 4 0 0 0 4 4 4 4 0 0 0 4-4 4 4 0 0 0-4-4m0 10a6 6 0 0 1-6-6 6 6 0 0 1 6-6 6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12z"/></svg> </label> <input class=md-option data-md-color-media="(prefers-color-scheme: dark)" data-md-color-scheme=slate data-md-color-primary=indigo data-md-color-accent=indigo aria-label="Switch to light mode" type=radio name=__palette id=__palette_1> <label class="md-header__button md-icon" title="Switch to light mode" for=__palette_0 hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 18c-.89 0-1.74-.2-2.5-.55C11.56 16.5 13 14.42 13 12s-1.44-4.5-3.5-5.45C10.26 6.2 11.11 6 12 6a6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12z"/></svg> </label> </form> <script>var palette=__md_get("__palette");if(palette&&palette.color){if("(prefers-color-scheme)"===palette.color.media){var media=matchMedia("(prefers-color-scheme: light)"),input=document.querySelector(media.matches?"[data-md-color-media='(prefers-color-scheme: light)']":"[data-md-color-media='(prefers-color-scheme: dark)']");palette.color.media=input.getAttribute("data-md-color-media"),palette.color.scheme=input.getAttribute("data-md-color-scheme"),palette.color.primary=input.getAttribute("data-md-color-primary"),palette.color.accent=input.getAttribute("data-md-color-accent")}for(var[key,value]of Object.entries(palette.color))document.body.setAttribute("data-md-color-"+key,value)}</script> <label class="md-header__button md-icon" for=__search> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg> </label> <div class=md-search data-md-component=search role=dialog> <label class=md-search__overlay for=__search></label> <div class=md-search__inner role=search> <form class=md-search__form name=search> <input type=text class=md-search__input name=query aria-label=Search placeholder=Search autocapitalize=off autocorrect=off autocomplete=off spellcheck=false data-md-component=search-query required> <label class="md-search__icon md-icon" for=__search> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11z"/></svg> </label> <nav class=md-search__options aria-label=Search> <button type=reset class="md-search__icon md-icon" title=Clear aria-label=Clear tabindex=-1> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z"/></svg> </button> </nav> </form> <div class=md-search__output> <div class=md-search__scrollwrap tabindex=0 data-md-scrollfix> <div class=md-search-result data-md-component=search-result> <div class=md-search-result__meta> Initializing search </div> <ol class=md-search-result__list role=presentation></ol> </div> </div> </div> </div> </div> <div class=md-header__source> <a href="https://github.com/nlohmann/json" title="Go to repository" class="md-source" data-md-component="source"> <div class="md-source__icon md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </div> <div class=md-source__repository> nlohmann/json </div> </a> </div> </nav> </header> <div class=md-container data-md-component=container> <nav class=md-tabs aria-label=Tabs data-md-component=tabs> <div class=md-grid> <ul class=md-tabs__list> <li class=md-tabs__item> <a href=../../.. class=md-tabs__link> Home </a> </li> <li class=md-tabs__item> <a href=../../../features/arbitrary_types/ class=md-tabs__link> Features </a> </li> <li class=md-tabs__item> <a href=../../../integration/ class=md-tabs__link> Integration </a> </li> <li class="md-tabs__item md-tabs__item--active"> <a href=../ class=md-tabs__link> API Documentation </a> </li> <li class=md-tabs__item> <a href=../../../community/ class=md-tabs__link> Community </a> </li> </ul> </div> </nav> <main class=md-main data-md-component=main> <div class="md-main__inner md-grid"> <div class="md-sidebar md-sidebar--primary" data-md-component=sidebar data-md-type=navigation> <div class=md-sidebar__scrollwrap> <div class=md-sidebar__inner> <nav class="md-nav md-nav--primary md-nav--lifted" aria-label=Navigation data-md-level=0> <label class=md-nav__title for=__drawer> <a href=../../.. title="JSON for Modern C++" class="md-nav__button md-logo" aria-label="JSON for Modern C++" data-md-component=logo> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54"/></svg> </a> JSON for Modern C++ </label> <div class=md-nav__source> <a href="https://github.com/nlohmann/json" title="Go to repository" class="md-source" data-md-component="source"> <div class="md-source__icon md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </div> <div class=md-source__repository> nlohmann/json </div> </a> </div> <ul class=md-nav__list data-md-scrollfix> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_1> <div class="md-nav__link md-nav__container"> <a href=../../.. class="md-nav__link "> <span class=md-ellipsis> Home </span> </a> <label class="md-nav__link " for=__nav_1 id=__nav_1_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_1_label aria-expanded=false> <label class=md-nav__title for=__nav_1> <span class="md-nav__icon md-icon"></span> Home </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../home/license/ class=md-nav__link> <span class=md-ellipsis> License </span> </a> </li> <li class=md-nav__item> <a href=../../../home/faq/ class=md-nav__link> <span class=md-ellipsis> FAQ </span> </a> </li> <li class=md-nav__item> <a href=../../../home/exceptions/ class=md-nav__link> <span class=md-ellipsis> Exceptions </span> </a> </li> <li class=md-nav__item> <a href=../../../home/releases/ class=md-nav__link> <span class=md-ellipsis> Releases </span> </a> </li> <li class=md-nav__item> <a href=../../../home/design_goals/ class=md-nav__link> <span class=md-ellipsis> Design goals </span> </a> </li> <li class=md-nav__item> <a href=../../../home/architecture/ class=md-nav__link> <span class=md-ellipsis> Architecture </span> </a> </li> <li class=md-nav__item> <a href=../../../home/customers/ class=md-nav__link> <span class=md-ellipsis> Customers </span> </a> </li> <li class=md-nav__item> <a href=../../../home/sponsors/ class=md-nav__link> <span class=md-ellipsis> Sponsors </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2> <label class=md-nav__link for=__nav_2 id=__nav_2_label tabindex=0> <span class=md-ellipsis> Features </span> <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_2_label aria-expanded=false> <label class=md-nav__title for=__nav_2> <span class="md-nav__icon md-icon"></span> Features </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/arbitrary_types/ class=md-nav__link> <span class=md-ellipsis> Arbitrary Type Conversions </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_2> <div class="md-nav__link md-nav__container"> <a href=../../../features/binary_formats/ class="md-nav__link "> <span class=md-ellipsis> Binary Formats </span> </a> <label class="md-nav__link " for=__nav_2_2 id=__nav_2_2_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_2_label aria-expanded=false> <label class=md-nav__title for=__nav_2_2> <span class="md-nav__icon md-icon"></span> Binary Formats </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/binary_formats/bjdata/ class=md-nav__link> <span class=md-ellipsis> BJData </span> </a> </li> <li class=md-nav__item> <a href=../../../features/binary_formats/bson/ class=md-nav__link> <span class=md-ellipsis> BSON </span> </a> </li> <li class=md-nav__item> <a href=../../../features/binary_formats/cbor/ class=md-nav__link> <span class=md-ellipsis> CBOR </span> </a> </li> <li class=md-nav__item> <a href=../../../features/binary_formats/messagepack/ class=md-nav__link> <span class=md-ellipsis> MessagePack </span> </a> </li> <li class=md-nav__item> <a href=../../../features/binary_formats/ubjson/ class=md-nav__link> <span class=md-ellipsis> UBJSON </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../../features/binary_values/ class=md-nav__link> <span class=md-ellipsis> Binary Values </span> </a> </li> <li class=md-nav__item> <a href=../../../features/comments/ class=md-nav__link> <span class=md-ellipsis> Comments </span> </a> </li> <li class=md-nav__item> <a href=../../../features/trailing_commas/ class=md-nav__link> <span class=md-ellipsis> Trailing Commas </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_6> <div class="md-nav__link md-nav__container"> <a href=../../../features/element_access/ class="md-nav__link "> <span class=md-ellipsis> Element Access </span> </a> <label class="md-nav__link " for=__nav_2_6 id=__nav_2_6_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_6_label aria-expanded=false> <label class=md-nav__title for=__nav_2_6> <span class="md-nav__icon md-icon"></span> Element Access </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/element_access/unchecked_access/ class=md-nav__link> <span class=md-ellipsis> Unchecked access: operator[] </span> </a> </li> <li class=md-nav__item> <a href=../../../features/element_access/checked_access/ class=md-nav__link> <span class=md-ellipsis> Checked access: at </span> </a> </li> <li class=md-nav__item> <a href=../../../features/element_access/default_value/ class=md-nav__link> <span class=md-ellipsis> Access with default value: value </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../../features/iterators/ class=md-nav__link> <span class=md-ellipsis> Iterators </span> </a> </li> <li class=md-nav__item> <a href=../../../features/json_pointer/ class=md-nav__link> <span class=md-ellipsis> JSON Pointer </span> </a> </li> <li class=md-nav__item> <a href=../../../features/json_patch/ class=md-nav__link> <span class=md-ellipsis> JSON Patch and Diff </span> </a> </li> <li class=md-nav__item> <a href=../../../features/merge_patch/ class=md-nav__link> <span class=md-ellipsis> JSON Merge Patch </span> </a> </li> <li class=md-nav__item> <a href=../../../features/modules/ class=md-nav__link> <span class=md-ellipsis> Modules </span> </a> </li> <li class=md-nav__item> <a href=../../../features/namespace/ class=md-nav__link> <span class=md-ellipsis> nlohmann Namespace </span> </a> </li> <li class=md-nav__item> <a href=../../../features/object_order/ class=md-nav__link> <span class=md-ellipsis> Object Order </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_14> <div class="md-nav__link md-nav__container"> <a href=../../../features/parsing/ class="md-nav__link "> <span class=md-ellipsis> Parsing </span> </a> <label class="md-nav__link " for=__nav_2_14 id=__nav_2_14_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_14_label aria-expanded=false> <label class=md-nav__title for=__nav_2_14> <span class="md-nav__icon md-icon"></span> Parsing </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/parsing/json_lines/ class=md-nav__link> <span class=md-ellipsis> JSON Lines </span> </a> </li> <li class=md-nav__item> <a href=../../../features/parsing/parse_exceptions/ class=md-nav__link> <span class=md-ellipsis> Parsing and Exceptions </span> </a> </li> <li class=md-nav__item> <a href=../../../features/parsing/parser_callbacks/ class=md-nav__link> <span class=md-ellipsis> Parser Callbacks </span> </a> </li> <li class=md-nav__item> <a href=../../../features/parsing/sax_interface/ class=md-nav__link> <span class=md-ellipsis> SAX Interface </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../../features/assertions/ class=md-nav__link> <span class=md-ellipsis> Runtime Assertions </span> </a> </li> <li class=md-nav__item> <a href=../../../features/enum_conversion/ class=md-nav__link> <span class=md-ellipsis> Specializing enum conversion </span> </a> </li> <li class=md-nav__item> <a href=../../../features/macros/ class=md-nav__link> <span class=md-ellipsis> Supported Macros </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_18> <div class="md-nav__link md-nav__container"> <a href=../../../features/types/ class="md-nav__link "> <span class=md-ellipsis> Types </span> </a> <label class="md-nav__link " for=__nav_2_18 id=__nav_2_18_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_18_label aria-expanded=false> <label class=md-nav__title for=__nav_2_18> <span class="md-nav__icon md-icon"></span> Types </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/types/number_handling/ class=md-nav__link> <span class=md-ellipsis> Number Handling </span> </a> </li> </ul> </nav> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_3> <div class="md-nav__link md-nav__container"> <a href=../../../integration/ class="md-nav__link "> <span class=md-ellipsis> Integration </span> </a> <label class="md-nav__link " for=__nav_3 id=__nav_3_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_3_label aria-expanded=false> <label class=md-nav__title for=__nav_3> <span class="md-nav__icon md-icon"></span> Integration </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../integration/migration_guide/ class=md-nav__link> <span class=md-ellipsis> Migration Guide </span> </a> </li> <li class=md-nav__item> <a href=../../../integration/cmake/ class=md-nav__link> <span class=md-ellipsis> CMake </span> </a> </li> <li class=md-nav__item> <a href=../../../integration/package_managers/ class=md-nav__link> <span class=md-ellipsis> Package Managers </span> </a> </li> <li class=md-nav__item> <a href=../../../integration/pkg-config/ class=md-nav__link> <span class=md-ellipsis> Pkg-config </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--active md-nav__item--section md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4 checked> <label class=md-nav__link for=__nav_4 id=__nav_4_label tabindex> <span class=md-ellipsis> API Documentation </span> <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_4_label aria-expanded=true> <label class=md-nav__title for=__nav_4> <span class="md-nav__icon md-icon"></span> API Documentation </label> <ul class=md-nav__list data-md-scrollfix> <li class="md-nav__item md-nav__item--active md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_1 checked> <div class="md-nav__link md-nav__container"> <a href=../ class="md-nav__link "> <span class=md-ellipsis> basic_json </span> </a> <label class="md-nav__link " for=__nav_4_1 id=__nav_4_1_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_1_label aria-expanded=true> <label class=md-nav__title for=__nav_4_1> <span class="md-nav__icon md-icon"></span> basic_json </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../basic_json/ class=md-nav__link> <span class=md-ellipsis> (Constructor) </span> </a> </li> <li class=md-nav__item> <a href=../~basic_json/ class=md-nav__link> <span class=md-ellipsis> (Destructor) </span> </a> </li> <li class=md-nav__item> <a href=../accept/ class=md-nav__link> <span class=md-ellipsis> accept </span> </a> </li> <li class=md-nav__item> <a href=../array/ class=md-nav__link> <span class=md-ellipsis> array </span> </a> </li> <li class=md-nav__item> <a href=../array_t/ class=md-nav__link> <span class=md-ellipsis> array_t </span> </a> </li> <li class=md-nav__item> <a href=../at/ class=md-nav__link> <span class=md-ellipsis> at </span> </a> </li> <li class=md-nav__item> <a href=../back/ class=md-nav__link> <span class=md-ellipsis> back </span> </a> </li> <li class=md-nav__item> <a href=../begin/ class=md-nav__link> <span class=md-ellipsis> begin </span> </a> </li> <li class=md-nav__item> <a href=../binary/ class=md-nav__link> <span class=md-ellipsis> binary </span> </a> </li> <li class=md-nav__item> <a href=../binary_t/ class=md-nav__link> <span class=md-ellipsis> binary_t </span> </a> </li> <li class=md-nav__item> <a href=../boolean_t/ class=md-nav__link> <span class=md-ellipsis> boolean_t </span> </a> </li> <li class=md-nav__item> <a href=../cbegin/ class=md-nav__link> <span class=md-ellipsis> cbegin </span> </a> </li> <li class=md-nav__item> <a href=../cbor_tag_handler_t/ class=md-nav__link> <span class=md-ellipsis> cbor_tag_handler_t </span> </a> </li> <li class=md-nav__item> <a href=../cend/ class=md-nav__link> <span class=md-ellipsis> cend </span> </a> </li> <li class=md-nav__item> <a href=../clear/ class=md-nav__link> <span class=md-ellipsis> clear </span> </a> </li> <li class=md-nav__item> <a href=../contains/ class=md-nav__link> <span class=md-ellipsis> contains </span> </a> </li> <li class=md-nav__item> <a href=../count/ class=md-nav__link> <span class=md-ellipsis> count </span> </a> </li> <li class=md-nav__item> <a href=../crbegin/ class=md-nav__link> <span class=md-ellipsis> crbegin </span> </a> </li> <li class=md-nav__item> <a href=../crend/ class=md-nav__link> <span class=md-ellipsis> crend </span> </a> </li> <li class=md-nav__item> <a href=../default_object_comparator_t/ class=md-nav__link> <span class=md-ellipsis> default_object_comparator_t </span> </a> </li> <li class=md-nav__item> <a href=../diff/ class=md-nav__link> <span class=md-ellipsis> diff </span> </a> </li> <li class=md-nav__item> <a href=../dump/ class=md-nav__link> <span class=md-ellipsis> dump </span> </a> </li> <li class=md-nav__item> <a href=../emplace/ class=md-nav__link> <span class=md-ellipsis> emplace </span> </a> </li> <li class=md-nav__item> <a href=../emplace_back/ class=md-nav__link> <span class=md-ellipsis> emplace_back </span> </a> </li> <li class=md-nav__item> <a href=../empty/ class=md-nav__link> <span class=md-ellipsis> empty </span> </a> </li> <li class=md-nav__item> <a href=../end/ class=md-nav__link> <span class=md-ellipsis> end </span> </a> </li> <li class=md-nav__item> <a href=../end_pos/ class=md-nav__link> <span class=md-ellipsis> end_pos </span> </a> </li> <li class=md-nav__item> <a href=../erase/ class=md-nav__link> <span class=md-ellipsis> erase </span> </a> </li> <li class=md-nav__item> <a href=../error_handler_t/ class=md-nav__link> <span class=md-ellipsis> error_handler_t </span> </a> </li> <li class=md-nav__item> <a href=../exception/ class=md-nav__link> <span class=md-ellipsis> exception </span> </a> </li> <li class=md-nav__item> <a href=../find/ class=md-nav__link> <span class=md-ellipsis> find </span> </a> </li> <li class=md-nav__item> <a href=../flatten/ class=md-nav__link> <span class=md-ellipsis> flatten </span> </a> </li> <li class=md-nav__item> <a href=../from_bjdata/ class=md-nav__link> <span class=md-ellipsis> from_bjdata </span> </a> </li> <li class=md-nav__item> <a href=../from_bson/ class=md-nav__link> <span class=md-ellipsis> from_bson </span> </a> </li> <li class=md-nav__item> <a href=../from_cbor/ class=md-nav__link> <span class=md-ellipsis> from_cbor </span> </a> </li> <li class=md-nav__item> <a href=../from_msgpack/ class=md-nav__link> <span class=md-ellipsis> from_msgpack </span> </a> </li> <li class="md-nav__item md-nav__item--active"> <input class="md-nav__toggle md-toggle" type=checkbox id=__toc> <label class="md-nav__link md-nav__link--active" for=__toc> <span class=md-ellipsis> from_ubjson </span> <span class="md-nav__icon md-icon"></span> </label> <a href=./ class="md-nav__link md-nav__link--active"> <span class=md-ellipsis> from_ubjson </span> </a> <nav class="md-nav md-nav--secondary" aria-label="Table of contents"> <label class=md-nav__title for=__toc> <span class="md-nav__icon md-icon"></span> Table of contents </label> <ul class=md-nav__list data-md-component=toc data-md-scrollfix> <li class=md-nav__item> <a href=#template-parameters class=md-nav__link> <span class=md-ellipsis> Template parameters </span> </a> </li> <li class=md-nav__item> <a href=#parameters class=md-nav__link> <span class=md-ellipsis> Parameters </span> </a> </li> <li class=md-nav__item> <a href=#return-value class=md-nav__link> <span class=md-ellipsis> Return value </span> </a> </li> <li class=md-nav__item> <a href=#exception-safety class=md-nav__link> <span class=md-ellipsis> Exception safety </span> </a> </li> <li class=md-nav__item> <a href=#exceptions class=md-nav__link> <span class=md-ellipsis> Exceptions </span> </a> </li> <li class=md-nav__item> <a href=#complexity class=md-nav__link> <span class=md-ellipsis> Complexity </span> </a> </li> <li class=md-nav__item> <a href=#examples class=md-nav__link> <span class=md-ellipsis> Examples </span> </a> </li> <li class=md-nav__item> <a href=#version-history class=md-nav__link> <span class=md-ellipsis> Version history </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../front/ class=md-nav__link> <span class=md-ellipsis> front </span> </a> </li> <li class=md-nav__item> <a href=../get/ class=md-nav__link> <span class=md-ellipsis> get </span> </a> </li> <li class=md-nav__item> <a href=../get_allocator/ class=md-nav__link> <span class=md-ellipsis> get_allocator </span> </a> </li> <li class=md-nav__item> <a href=../get_binary/ class=md-nav__link> <span class=md-ellipsis> get_binary </span> </a> </li> <li class=md-nav__item> <a href=../get_ptr/ class=md-nav__link> <span class=md-ellipsis> get_ptr </span> </a> </li> <li class=md-nav__item> <a href=../get_ref/ class=md-nav__link> <span class=md-ellipsis> get_ref </span> </a> </li> <li class=md-nav__item> <a href=../get_to/ class=md-nav__link> <span class=md-ellipsis> get_to </span> </a> </li> <li class=md-nav__item> <a href=../std_hash/ class=md-nav__link> <span class=md-ellipsis> std::hash&lt;basic_json&gt; </span> </a> </li> <li class=md-nav__item> <a href=../input_format_t/ class=md-nav__link> <span class=md-ellipsis> input_format_t </span> </a> </li> <li class=md-nav__item> <a href=../insert/ class=md-nav__link> <span class=md-ellipsis> insert </span> </a> </li> <li class=md-nav__item> <a href=../invalid_iterator/ class=md-nav__link> <span class=md-ellipsis> invalid_iterator </span> </a> </li> <li class=md-nav__item> <a href=../is_array/ class=md-nav__link> <span class=md-ellipsis> is_array </span> </a> </li> <li class=md-nav__item> <a href=../is_binary/ class=md-nav__link> <span class=md-ellipsis> is_binary </span> </a> </li> <li class=md-nav__item> <a href=../is_boolean/ class=md-nav__link> <span class=md-ellipsis> is_boolean </span> </a> </li> <li class=md-nav__item> <a href=../is_discarded/ class=md-nav__link> <span class=md-ellipsis> is_discarded </span> </a> </li> <li class=md-nav__item> <a href=../is_null/ class=md-nav__link> <span class=md-ellipsis> is_null </span> </a> </li> <li class=md-nav__item> <a href=../is_number/ class=md-nav__link> <span class=md-ellipsis> is_number </span> </a> </li> <li class=md-nav__item> <a href=../is_number_float/ class=md-nav__link> <span class=md-ellipsis> is_number_float </span> </a> </li> <li class=md-nav__item> <a href=../is_number_integer/ class=md-nav__link> <span class=md-ellipsis> is_number_integer </span> </a> </li> <li class=md-nav__item> <a href=../is_number_unsigned/ class=md-nav__link> <span class=md-ellipsis> is_number_unsigned </span> </a> </li> <li class=md-nav__item> <a href=../is_object/ class=md-nav__link> <span class=md-ellipsis> is_object </span> </a> </li> <li class=md-nav__item> <a href=../is_primitive/ class=md-nav__link> <span class=md-ellipsis> is_primitive </span> </a> </li> <li class=md-nav__item> <a href=../is_string/ class=md-nav__link> <span class=md-ellipsis> is_string </span> </a> </li> <li class=md-nav__item> <a href=../is_structured/ class=md-nav__link> <span class=md-ellipsis> is_structured </span> </a> </li> <li class=md-nav__item> <a href=../items/ class=md-nav__link> <span class=md-ellipsis> items </span> </a> </li> <li class=md-nav__item> <a href=../json_base_class_t/ class=md-nav__link> <span class=md-ellipsis> json_base_class_t </span> </a> </li> <li class=md-nav__item> <a href=../json_serializer/ class=md-nav__link> <span class=md-ellipsis> json_serializer </span> </a> </li> <li class=md-nav__item> <a href=../max_size/ class=md-nav__link> <span class=md-ellipsis> max_size </span> </a> </li> <li class=md-nav__item> <a href=../meta/ class=md-nav__link> <span class=md-ellipsis> meta </span> </a> </li> <li class=md-nav__item> <a href=../merge_patch/ class=md-nav__link> <span class=md-ellipsis> merge_patch </span> </a> </li> <li class=md-nav__item> <a href=../number_float_t/ class=md-nav__link> <span class=md-ellipsis> number_float_t </span> </a> </li> <li class=md-nav__item> <a href=../number_integer_t/ class=md-nav__link> <span class=md-ellipsis> number_integer_t </span> </a> </li> <li class=md-nav__item> <a href=../number_unsigned_t/ class=md-nav__link> <span class=md-ellipsis> number_unsigned_t </span> </a> </li> <li class=md-nav__item> <a href=../object/ class=md-nav__link> <span class=md-ellipsis> object </span> </a> </li> <li class=md-nav__item> <a href=../object_comparator_t/ class=md-nav__link> <span class=md-ellipsis> object_comparator_t </span> </a> </li> <li class=md-nav__item> <a href=../object_t/ class=md-nav__link> <span class=md-ellipsis> object_t </span> </a> </li> <li class=md-nav__item> <a href=../operator_ValueType/ class=md-nav__link> <span class=md-ellipsis> operator ValueType </span> </a> </li> <li class=md-nav__item> <a href=../operator_value_t/ class=md-nav__link> <span class=md-ellipsis> operator value_t </span> </a> </li> <li class=md-nav__item> <a href=../operator%5B%5D/ class=md-nav__link> <span class=md-ellipsis> operator[] </span> </a> </li> <li class=md-nav__item> <a href=../operator%3D/ class=md-nav__link> <span class=md-ellipsis> operator= </span> </a> </li> <li class=md-nav__item> <a href=../operator%2B%3D/ class=md-nav__link> <span class=md-ellipsis> operator+= </span> </a> </li> <li class=md-nav__item> <a href=../operator_eq/ class=md-nav__link> <span class=md-ellipsis> operator== </span> </a> </li> <li class=md-nav__item> <a href=../operator_ne/ class=md-nav__link> <span class=md-ellipsis> operator!= </span> </a> </li> <li class=md-nav__item> <a href=../operator_lt/ class=md-nav__link> <span class=md-ellipsis> operator< </span> </a> </li> <li class=md-nav__item> <a href=../operator_gt/ class=md-nav__link> <span class=md-ellipsis> operator> </span> </a> </li> <li class=md-nav__item> <a href=../operator_le/ class=md-nav__link> <span class=md-ellipsis> operator<= </span> </a> </li> <li class=md-nav__item> <a href=../operator_ge/ class=md-nav__link> <span class=md-ellipsis> operator>= </span> </a> </li> <li class=md-nav__item> <a href=../operator_spaceship/ class=md-nav__link> <span class=md-ellipsis> operator<=> </span> </a> </li> <li class=md-nav__item> <a href=../out_of_range/ class=md-nav__link> <span class=md-ellipsis> out_of_range </span> </a> </li> <li class=md-nav__item> <a href=../other_error/ class=md-nav__link> <span class=md-ellipsis> other_error </span> </a> </li> <li class=md-nav__item> <a href=../parse/ class=md-nav__link> <span class=md-ellipsis> parse </span> </a> </li> <li class=md-nav__item> <a href=../parse_error/ class=md-nav__link> <span class=md-ellipsis> parse_error </span> </a> </li> <li class=md-nav__item> <a href=../parse_event_t/ class=md-nav__link> <span class=md-ellipsis> parse_event_t </span> </a> </li> <li class=md-nav__item> <a href=../parser_callback_t/ class=md-nav__link> <span class=md-ellipsis> parser_callback_t </span> </a> </li> <li class=md-nav__item> <a href=../patch/ class=md-nav__link> <span class=md-ellipsis> patch </span> </a> </li> <li class=md-nav__item> <a href=../patch_inplace/ class=md-nav__link> <span class=md-ellipsis> patch_inplace </span> </a> </li> <li class=md-nav__item> <a href=../push_back/ class=md-nav__link> <span class=md-ellipsis> push_back </span> </a> </li> <li class=md-nav__item> <a href=../rbegin/ class=md-nav__link> <span class=md-ellipsis> rbegin </span> </a> </li> <li class=md-nav__item> <a href=../rend/ class=md-nav__link> <span class=md-ellipsis> rend </span> </a> </li> <li class=md-nav__item> <a href=../sax_parse/ class=md-nav__link> <span class=md-ellipsis> sax_parse </span> </a> </li> <li class=md-nav__item> <a href=../size/ class=md-nav__link> <span class=md-ellipsis> size </span> </a> </li> <li class=md-nav__item> <a href=../start_pos/ class=md-nav__link> <span class=md-ellipsis> start_pos </span> </a> </li> <li class=md-nav__item> <a href=../string_t/ class=md-nav__link> <span class=md-ellipsis> string_t </span> </a> </li> <li class=md-nav__item> <a href=../swap/ class=md-nav__link> <span class=md-ellipsis> swap </span> </a> </li> <li class=md-nav__item> <a href=../std_swap/ class=md-nav__link> <span class=md-ellipsis> std::swap&lt;basic_json&gt; </span> </a> </li> <li class=md-nav__item> <a href=../to_bjdata/ class=md-nav__link> <span class=md-ellipsis> to_bjdata </span> </a> </li> <li class=md-nav__item> <a href=../to_bson/ class=md-nav__link> <span class=md-ellipsis> to_bson </span> </a> </li> <li class=md-nav__item> <a href=../to_cbor/ class=md-nav__link> <span class=md-ellipsis> to_cbor </span> </a> </li> <li class=md-nav__item> <a href=../to_msgpack/ class=md-nav__link> <span class=md-ellipsis> to_msgpack </span> </a> </li> <li class=md-nav__item> <a href=../to_string/ class=md-nav__link> <span class=md-ellipsis> to_string </span> </a> </li> <li class=md-nav__item> <a href=../to_ubjson/ class=md-nav__link> <span class=md-ellipsis> to_ubjson </span> </a> </li> <li class=md-nav__item> <a href=../type/ class=md-nav__link> <span class=md-ellipsis> type </span> </a> </li> <li class=md-nav__item> <a href=../type_error/ class=md-nav__link> <span class=md-ellipsis> type_error </span> </a> </li> <li class=md-nav__item> <a href=../type_name/ class=md-nav__link> <span class=md-ellipsis> type_name </span> </a> </li> <li class=md-nav__item> <a href=../unflatten/ class=md-nav__link> <span class=md-ellipsis> unflatten </span> </a> </li> <li class=md-nav__item> <a href=../update/ class=md-nav__link> <span class=md-ellipsis> update </span> </a> </li> <li class=md-nav__item> <a href=../value/ class=md-nav__link> <span class=md-ellipsis> value </span> </a> </li> <li class=md-nav__item> <a href=../value_t/ class=md-nav__link> <span class=md-ellipsis> value_t </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_2> <div class="md-nav__link md-nav__container"> <a href=../../byte_container_with_subtype/ class="md-nav__link "> <span class=md-ellipsis> byte_container_with_subtype </span> </a> <label class="md-nav__link " for=__nav_4_2 id=__nav_4_2_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_2_label aria-expanded=false> <label class=md-nav__title for=__nav_4_2> <span class="md-nav__icon md-icon"></span> byte_container_with_subtype </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../byte_container_with_subtype/byte_container_with_subtype/ class=md-nav__link> <span class=md-ellipsis> (constructor) </span> </a> </li> <li class=md-nav__item> <a href=../../byte_container_with_subtype/clear_subtype/ class=md-nav__link> <span class=md-ellipsis> clear_subtype </span> </a> </li> <li class=md-nav__item> <a href=../../byte_container_with_subtype/has_subtype/ class=md-nav__link> <span class=md-ellipsis> has_subtype </span> </a> </li> <li class=md-nav__item> <a href=../../byte_container_with_subtype/set_subtype/ class=md-nav__link> <span class=md-ellipsis> set_subtype </span> </a> </li> <li class=md-nav__item> <a href=../../byte_container_with_subtype/subtype/ class=md-nav__link> <span class=md-ellipsis> subtype </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_3> <div class="md-nav__link md-nav__container"> <a href=../../adl_serializer/ class="md-nav__link "> <span class=md-ellipsis> adl_serializer </span> </a> <label class="md-nav__link " for=__nav_4_3 id=__nav_4_3_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_3_label aria-expanded=false> <label class=md-nav__title for=__nav_4_3> <span class="md-nav__icon md-icon"></span> adl_serializer </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../adl_serializer/from_json/ class=md-nav__link> <span class=md-ellipsis> from_json </span> </a> </li> <li class=md-nav__item> <a href=../../adl_serializer/to_json/ class=md-nav__link> <span class=md-ellipsis> to_json </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../json/ class=md-nav__link> <span class=md-ellipsis> json </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_5> <div class="md-nav__link md-nav__container"> <a href=../../json_pointer/ class="md-nav__link "> <span class=md-ellipsis> json_pointer </span> </a> <label class="md-nav__link " for=__nav_4_5 id=__nav_4_5_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_5_label aria-expanded=false> <label class=md-nav__title for=__nav_4_5> <span class="md-nav__icon md-icon"></span> json_pointer </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../json_pointer/json_pointer/ class=md-nav__link> <span class=md-ellipsis> (Constructor) </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/back/ class=md-nav__link> <span class=md-ellipsis> back </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/empty/ class=md-nav__link> <span class=md-ellipsis> empty </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/front/ class=md-nav__link> <span class=md-ellipsis> front </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_string_t/ class=md-nav__link> <span class=md-ellipsis> operator string_t </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_eq/ class=md-nav__link> <span class=md-ellipsis> operator== </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_ne/ class=md-nav__link> <span class=md-ellipsis> operator!= </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_slash/ class=md-nav__link> <span class=md-ellipsis> operator/ </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_slasheq/ class=md-nav__link> <span class=md-ellipsis> operator/= </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/parent_pointer/ class=md-nav__link> <span class=md-ellipsis> parent_pointer </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/pop_back/ class=md-nav__link> <span class=md-ellipsis> pop_back </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/pop_front/ class=md-nav__link> <span class=md-ellipsis> pop_front </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/push_back/ class=md-nav__link> <span class=md-ellipsis> push_back </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/push_front/ class=md-nav__link> <span class=md-ellipsis> push_front </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/string_t/ class=md-nav__link> <span class=md-ellipsis> string_t </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/to_string/ class=md-nav__link> <span class=md-ellipsis> to_string </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_6> <div class="md-nav__link md-nav__container"> <a href=../../json_sax/ class="md-nav__link "> <span class=md-ellipsis> json_sax </span> </a> <label class="md-nav__link " for=__nav_4_6 id=__nav_4_6_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_6_label aria-expanded=false> <label class=md-nav__title for=__nav_4_6> <span class="md-nav__icon md-icon"></span> json_sax </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../json_sax/binary/ class=md-nav__link> <span class=md-ellipsis> binary </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/boolean/ class=md-nav__link> <span class=md-ellipsis> boolean </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/end_array/ class=md-nav__link> <span class=md-ellipsis> end_array </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/end_object/ class=md-nav__link> <span class=md-ellipsis> end_object </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/key/ class=md-nav__link> <span class=md-ellipsis> key </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/null/ class=md-nav__link> <span class=md-ellipsis> null </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/number_float/ class=md-nav__link> <span class=md-ellipsis> number_float </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/number_integer/ class=md-nav__link> <span class=md-ellipsis> number_integer </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/number_unsigned/ class=md-nav__link> <span class=md-ellipsis> number_unsigned </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/parse_error/ class=md-nav__link> <span class=md-ellipsis> parse_error </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/start_array/ class=md-nav__link> <span class=md-ellipsis> start_array </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/start_object/ class=md-nav__link> <span class=md-ellipsis> start_object </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/string/ class=md-nav__link> <span class=md-ellipsis> string </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../operator_ltlt/ class=md-nav__link> <span class=md-ellipsis> operator<<(basic_json), operator<<(json_pointer) </span> </a> </li> <li class=md-nav__item> <a href=../../operator_gtgt/ class=md-nav__link> <span class=md-ellipsis> operator>>(basic_json) </span> </a> </li> <li class=md-nav__item> <a href=../../operator_literal_json/ class=md-nav__link> <span class=md-ellipsis> operator""_json </span> </a> </li> <li class=md-nav__item> <a href=../../operator_literal_json_pointer/ class=md-nav__link> <span class=md-ellipsis> operator""_json_pointer </span> </a> </li> <li class=md-nav__item> <a href=../../ordered_json/ class=md-nav__link> <span class=md-ellipsis> ordered_json </span> </a> </li> <li class=md-nav__item> <a href=../../ordered_map/ class=md-nav__link> <span class=md-ellipsis> ordered_map </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_13> <div class="md-nav__link md-nav__container"> <a href=../../macros/ class="md-nav__link "> <span class=md-ellipsis> macros </span> </a> <label class="md-nav__link " for=__nav_4_13 id=__nav_4_13_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_13_label aria-expanded=false> <label class=md-nav__title for=__nav_4_13> <span class="md-nav__icon md-icon"></span> macros </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../macros/json_assert/ class=md-nav__link> <span class=md-ellipsis> JSON_ASSERT </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_brace_init_copy_semantics/ class=md-nav__link> <span class=md-ellipsis> JSON_BRACE_INIT_COPY_SEMANTICS </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_throw_user/ class=md-nav__link> <span class=md-ellipsis> JSON_CATCH_USER, JSON_THROW_USER, JSON_TRY_USER </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_diagnostics/ class=md-nav__link> <span class=md-ellipsis> JSON_DIAGNOSTICS </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_diagnostic_positions/ class=md-nav__link> <span class=md-ellipsis> JSON_DIAGNOSTIC_POSITIONS </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_disable_enum_serialization/ class=md-nav__link> <span class=md-ellipsis> JSON_DISABLE_ENUM_SERIALIZATION </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_has_cpp_11/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_CPP_11, JSON_HAS_CPP_14, JSON_HAS_CPP_17, JSON_HAS_CPP_20 </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_has_filesystem/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_EXPERIMENTAL_FILESYSTEM, JSON_HAS_FILESYSTEM </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_has_ranges/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_RANGES </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_has_static_rtti/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_STATIC_RTTI </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_has_three_way_comparison/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_THREE_WAY_COMPARISON </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_noexception/ class=md-nav__link> <span class=md-ellipsis> JSON_NOEXCEPTION </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_no_io/ class=md-nav__link> <span class=md-ellipsis> JSON_NO_IO </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_skip_library_version_check/ class=md-nav__link> <span class=md-ellipsis> JSON_SKIP_LIBRARY_VERSION_CHECK </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_skip_unsupported_compiler_check/ class=md-nav__link> <span class=md-ellipsis> JSON_SKIP_UNSUPPORTED_COMPILER_CHECK </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_use_global_udls/ class=md-nav__link> <span class=md-ellipsis> JSON_USE_GLOBAL_UDLS </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_use_implicit_conversions/ class=md-nav__link> <span class=md-ellipsis> JSON_USE_IMPLICIT_CONVERSIONS </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_use_legacy_discarded_value_comparison/ class=md-nav__link> <span class=md-ellipsis> JSON_USE_LEGACY_DISCARDED_VALUE_COMPARISON </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_define_derived_type/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_ONLY_SERIALIZE, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_define_type_intrusive/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_TYPE_INTRUSIVE, NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_TYPE_INTRUSIVE_ONLY_SERIALIZE </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_define_type_non_intrusive/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_define_type_with_names/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_TYPE_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_namespace/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_NAMESPACE </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_namespace_begin/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_NAMESPACE_BEGIN, NLOHMANN_JSON_NAMESPACE_END </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_namespace_no_version/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_NAMESPACE_NO_VERSION </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_serialize_enum/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_SERIALIZE_ENUM </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_serialize_enum_strict/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_SERIALIZE_ENUM_STRICT </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_version_major/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_VERSION_MAJOR, NLOHMANN_JSON_VERSION_MINOR, NLOHMANN_JSON_VERSION_PATCH </span> </a> </li> </ul> </nav> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_5> <div class="md-nav__link md-nav__container"> <a href=../../../community/ class="md-nav__link "> <span class=md-ellipsis> Community </span> </a> <label class="md-nav__link " for=__nav_5 id=__nav_5_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_5_label aria-expanded=false> <label class=md-nav__title for=__nav_5> <span class="md-nav__icon md-icon"></span> Community </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../community/code_of_conduct/ class=md-nav__link> <span class=md-ellipsis> Code of Conduct </span> </a> </li> <li class=md-nav__item> <a href=../../../community/contribution_guidelines/ class=md-nav__link> <span class=md-ellipsis> Contribution Guidelines </span> </a> </li> <li class=md-nav__item> <a href=../../../community/quality_assurance/ class=md-nav__link> <span class=md-ellipsis> Quality assurance </span> </a> </li> <li class=md-nav__item> <a href=../../../community/governance/ class=md-nav__link> <span class=md-ellipsis> Governance </span> </a> </li> <li class=md-nav__item> <a href=../../../community/security_policy/ class=md-nav__link> <span class=md-ellipsis> Security Policy </span> </a> </li> </ul> </nav> </li> </ul> </nav> </div> </div> </div> <div class="md-sidebar md-sidebar--secondary" data-md-component=sidebar data-md-type=toc> <div class=md-sidebar__scrollwrap> <div class=md-sidebar__inner> <nav class="md-nav md-nav--secondary" aria-label="Table of contents"> <label class=md-nav__title for=__toc> <span class="md-nav__icon md-icon"></span> Table of contents </label> <ul class=md-nav__list data-md-component=toc data-md-scrollfix> <li class=md-nav__item> <a href=#template-parameters class=md-nav__link> <span class=md-ellipsis> Template parameters </span> </a> </li> <li class=md-nav__item> <a href=#parameters class=md-nav__link> <span class=md-ellipsis> Parameters </span> </a> </li> <li class=md-nav__item> <a href=#return-value class=md-nav__link> <span class=md-ellipsis> Return value </span> </a> </li> <li class=md-nav__item> <a href=#exception-safety class=md-nav__link> <span class=md-ellipsis> Exception safety </span> </a> </li> <li class=md-nav__item> <a href=#exceptions class=md-nav__link> <span class=md-ellipsis> Exceptions </span> </a> </li> <li class=md-nav__item> <a href=#complexity class=md-nav__link> <span class=md-ellipsis> Complexity </span> </a> </li> <li class=md-nav__item> <a href=#examples class=md-nav__link> <span class=md-ellipsis> Examples </span> </a> </li> <li class=md-nav__item> <a href=#version-history class=md-nav__link> <span class=md-ellipsis> Version history </span> </a> </li> </ul> </nav> </div> </div> </div> <div class=md-content data-md-component=content> <article class="md-content__inner md-typeset"> <a href="https://github.com/nlohmann/json/edit/develop/docs/mkdocs/docs/api/basic_json/from_ubjson.md" title="Edit this page" class="md-content__button md-icon" rel="edit"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M10 20H6V4h7v5h5v3.1l2-2V8l-6-6H6c-1.1 0-2 .9-2 2v16c0 1.1.9 2 2 2h4zm10.2-7c.1 0 .3.1.4.2l1.3 1.3c.2.2.2.6 0 .8l-1 1-2.1-2.1 1-1c.1-.1.2-.2.4-.2m0 3.9L14.1 23H12v-2.1l6.1-6.1z"/></svg> </a> <a href="https://github.com/nlohmann/json/raw/develop/docs/mkdocs/docs/api/basic_json/from_ubjson.md" title="View source of this page" class="md-content__button md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M17 18c.56 0 1 .44 1 1s-.44 1-1 1-1-.44-1-1 .44-1 1-1m0-3c-2.73 0-5.06 1.66-6 4 .94 2.34 3.27 4 6 4s5.06-1.66 6-4c-.94-2.34-3.27-4-6-4m0 6.5a2.5 2.5 0 0 1-2.5-2.5 2.5 2.5 0 0 1 2.5-2.5 2.5 2.5 0 0 1 2.5 2.5 2.5 2.5 0 0 1-2.5 2.5M9.27 20H6V4h7v5h5v4.07c.7.08 1.36.25 2 .49V8l-6-6H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h4.5a8.2 8.2 0 0 1-1.23-2"/></svg> </a> <h1 id=nlohmannbasic_jsonfrom_ubjson><small>nlohmann::basic_json::</small>from_ubjson<a class=headerlink href=#nlohmannbasic_jsonfrom_ubjson title="Permanent link">&para;</a></h1> <div class=highlight><pre><span></span><code><span class=c1>// (1)</span>
+<!doctype html><html lang=en class=no-js> <head><meta charset=utf-8><meta name=viewport content="width=device-width,initial-scale=1"><meta name=author content="Niels Lohmann"><link href="https://json.nlohmann.me/api/basic_json/from_ubjson/" rel="canonical"><link href=../from_msgpack/ rel=prev><link href=../front/ rel=next><link rel=icon href=../../../assets/images/favicon.png><meta name=generator content="mkdocs-1.6.1, mkdocs-material-9.7.6"><title>from_ubjson - JSON for Modern C++</title><link rel=stylesheet href=../../../assets/stylesheets/main.484c7ddc.min.css><link rel=stylesheet href=../../../assets/stylesheets/palette.ab4e12ef.min.css><link rel="stylesheet" href="../../../assets/external/fonts.googleapis.com/css.61a430c9.css"><style>:root{--md-text-font:"Roboto";--md-code-font:"JetBrains Mono"}</style><link rel=stylesheet href=../../../css/custom.css><script>__md_scope=new URL("../../..",location),__md_hash=e=>[...e].reduce(((e,_)=>(e<<5)-e+_.charCodeAt(0)),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script></head> <body dir=ltr data-md-color-scheme=default data-md-color-primary=indigo data-md-color-accent=indigo> <input class=md-toggle data-md-toggle=drawer type=checkbox id=__drawer autocomplete=off> <input class=md-toggle data-md-toggle=search type=checkbox id=__search autocomplete=off> <label class=md-overlay for=__drawer></label> <div data-md-component=skip> <a href=#nlohmannbasic_jsonfrom_ubjson class=md-skip> Skip to content </a> </div> <div data-md-component=announce> </div> <header class=md-header data-md-component=header> <nav class="md-header__inner md-grid" aria-label=Header> <a href=../../.. title="JSON for Modern C++" class="md-header__button md-logo" aria-label="JSON for Modern C++" data-md-component=logo> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54"/></svg> </a> <label class="md-header__button md-icon" for=__drawer> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M3 6h18v2H3zm0 5h18v2H3zm0 5h18v2H3z"/></svg> </label> <div class=md-header__title data-md-component=header-title> <div class=md-header__ellipsis> <div class=md-header__topic> <span class=md-ellipsis> JSON for Modern C++ </span> </div> <div class=md-header__topic data-md-component=header-topic> <span class=md-ellipsis> from_ubjson </span> </div> </div> </div> <form class=md-header__option data-md-component=palette> <input class=md-option data-md-color-media="(prefers-color-scheme: light)" data-md-color-scheme=default data-md-color-primary=indigo data-md-color-accent=indigo aria-label="Switch to dark mode" type=radio name=__palette id=__palette_0> <label class="md-header__button md-icon" title="Switch to dark mode" for=__palette_1 hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a4 4 0 0 0-4 4 4 4 0 0 0 4 4 4 4 0 0 0 4-4 4 4 0 0 0-4-4m0 10a6 6 0 0 1-6-6 6 6 0 0 1 6-6 6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12z"/></svg> </label> <input class=md-option data-md-color-media="(prefers-color-scheme: dark)" data-md-color-scheme=slate data-md-color-primary=indigo data-md-color-accent=indigo aria-label="Switch to light mode" type=radio name=__palette id=__palette_1> <label class="md-header__button md-icon" title="Switch to light mode" for=__palette_0 hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 18c-.89 0-1.74-.2-2.5-.55C11.56 16.5 13 14.42 13 12s-1.44-4.5-3.5-5.45C10.26 6.2 11.11 6 12 6a6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12z"/></svg> </label> </form> <script>var palette=__md_get("__palette");if(palette&&palette.color){if("(prefers-color-scheme)"===palette.color.media){var media=matchMedia("(prefers-color-scheme: light)"),input=document.querySelector(media.matches?"[data-md-color-media='(prefers-color-scheme: light)']":"[data-md-color-media='(prefers-color-scheme: dark)']");palette.color.media=input.getAttribute("data-md-color-media"),palette.color.scheme=input.getAttribute("data-md-color-scheme"),palette.color.primary=input.getAttribute("data-md-color-primary"),palette.color.accent=input.getAttribute("data-md-color-accent")}for(var[key,value]of Object.entries(palette.color))document.body.setAttribute("data-md-color-"+key,value)}</script> <label class="md-header__button md-icon" for=__search> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg> </label> <div class=md-search data-md-component=search role=dialog> <label class=md-search__overlay for=__search></label> <div class=md-search__inner role=search> <form class=md-search__form name=search> <input type=text class=md-search__input name=query aria-label=Search placeholder=Search autocapitalize=off autocorrect=off autocomplete=off spellcheck=false data-md-component=search-query required> <label class="md-search__icon md-icon" for=__search> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11z"/></svg> </label> <nav class=md-search__options aria-label=Search> <button type=reset class="md-search__icon md-icon" title=Clear aria-label=Clear tabindex=-1> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z"/></svg> </button> </nav> </form> <div class=md-search__output> <div class=md-search__scrollwrap tabindex=0 data-md-scrollfix> <div class=md-search-result data-md-component=search-result> <div class=md-search-result__meta> Initializing search </div> <ol class=md-search-result__list role=presentation></ol> </div> </div> </div> </div> </div> <div class=md-header__source> <a href="https://github.com/nlohmann/json" title="Go to repository" class="md-source" data-md-component="source"> <div class="md-source__icon md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </div> <div class=md-source__repository> nlohmann/json </div> </a> </div> </nav> </header> <div class=md-container data-md-component=container> <nav class=md-tabs aria-label=Tabs data-md-component=tabs> <div class=md-grid> <ul class=md-tabs__list> <li class=md-tabs__item> <a href=../../.. class=md-tabs__link> Home </a> </li> <li class=md-tabs__item> <a href=../../../features/arbitrary_types/ class=md-tabs__link> Features </a> </li> <li class=md-tabs__item> <a href=../../../integration/ class=md-tabs__link> Integration </a> </li> <li class="md-tabs__item md-tabs__item--active"> <a href=../ class=md-tabs__link> API Documentation </a> </li> <li class=md-tabs__item> <a href=../../../community/ class=md-tabs__link> Community </a> </li> </ul> </div> </nav> <main class=md-main data-md-component=main> <div class="md-main__inner md-grid"> <div class="md-sidebar md-sidebar--primary" data-md-component=sidebar data-md-type=navigation> <div class=md-sidebar__scrollwrap> <div class=md-sidebar__inner> <nav class="md-nav md-nav--primary md-nav--lifted" aria-label=Navigation data-md-level=0> <label class=md-nav__title for=__drawer> <a href=../../.. title="JSON for Modern C++" class="md-nav__button md-logo" aria-label="JSON for Modern C++" data-md-component=logo> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54"/></svg> </a> JSON for Modern C++ </label> <div class=md-nav__source> <a href="https://github.com/nlohmann/json" title="Go to repository" class="md-source" data-md-component="source"> <div class="md-source__icon md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </div> <div class=md-source__repository> nlohmann/json </div> </a> </div> <ul class=md-nav__list data-md-scrollfix> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_1> <div class="md-nav__link md-nav__container"> <a href=../../.. class="md-nav__link "> <span class=md-ellipsis> Home </span> </a> <label class="md-nav__link " for=__nav_1 id=__nav_1_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_1_label aria-expanded=false> <label class=md-nav__title for=__nav_1> <span class="md-nav__icon md-icon"></span> Home </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../home/license/ class=md-nav__link> <span class=md-ellipsis> License </span> </a> </li> <li class=md-nav__item> <a href=../../../home/faq/ class=md-nav__link> <span class=md-ellipsis> FAQ </span> </a> </li> <li class=md-nav__item> <a href=../../../home/exceptions/ class=md-nav__link> <span class=md-ellipsis> Exceptions </span> </a> </li> <li class=md-nav__item> <a href=../../../home/releases/ class=md-nav__link> <span class=md-ellipsis> Releases </span> </a> </li> <li class=md-nav__item> <a href=../../../home/design_goals/ class=md-nav__link> <span class=md-ellipsis> Design goals </span> </a> </li> <li class=md-nav__item> <a href=../../../home/architecture/ class=md-nav__link> <span class=md-ellipsis> Architecture </span> </a> </li> <li class=md-nav__item> <a href=../../../home/customers/ class=md-nav__link> <span class=md-ellipsis> Customers </span> </a> </li> <li class=md-nav__item> <a href=../../../home/sponsors/ class=md-nav__link> <span class=md-ellipsis> Sponsors </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2> <label class=md-nav__link for=__nav_2 id=__nav_2_label tabindex=0> <span class=md-ellipsis> Features </span> <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_2_label aria-expanded=false> <label class=md-nav__title for=__nav_2> <span class="md-nav__icon md-icon"></span> Features </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/arbitrary_types/ class=md-nav__link> <span class=md-ellipsis> Arbitrary Type Conversions </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_2> <div class="md-nav__link md-nav__container"> <a href=../../../features/binary_formats/ class="md-nav__link "> <span class=md-ellipsis> Binary Formats </span> </a> <label class="md-nav__link " for=__nav_2_2 id=__nav_2_2_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_2_label aria-expanded=false> <label class=md-nav__title for=__nav_2_2> <span class="md-nav__icon md-icon"></span> Binary Formats </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/binary_formats/bjdata/ class=md-nav__link> <span class=md-ellipsis> BJData </span> </a> </li> <li class=md-nav__item> <a href=../../../features/binary_formats/bson/ class=md-nav__link> <span class=md-ellipsis> BSON </span> </a> </li> <li class=md-nav__item> <a href=../../../features/binary_formats/cbor/ class=md-nav__link> <span class=md-ellipsis> CBOR </span> </a> </li> <li class=md-nav__item> <a href=../../../features/binary_formats/messagepack/ class=md-nav__link> <span class=md-ellipsis> MessagePack </span> </a> </li> <li class=md-nav__item> <a href=../../../features/binary_formats/ubjson/ class=md-nav__link> <span class=md-ellipsis> UBJSON </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../../features/binary_values/ class=md-nav__link> <span class=md-ellipsis> Binary Values </span> </a> </li> <li class=md-nav__item> <a href=../../../features/comments/ class=md-nav__link> <span class=md-ellipsis> Comments </span> </a> </li> <li class=md-nav__item> <a href=../../../features/trailing_commas/ class=md-nav__link> <span class=md-ellipsis> Trailing Commas </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_6> <div class="md-nav__link md-nav__container"> <a href=../../../features/element_access/ class="md-nav__link "> <span class=md-ellipsis> Element Access </span> </a> <label class="md-nav__link " for=__nav_2_6 id=__nav_2_6_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_6_label aria-expanded=false> <label class=md-nav__title for=__nav_2_6> <span class="md-nav__icon md-icon"></span> Element Access </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/element_access/unchecked_access/ class=md-nav__link> <span class=md-ellipsis> Unchecked access: operator[] </span> </a> </li> <li class=md-nav__item> <a href=../../../features/element_access/checked_access/ class=md-nav__link> <span class=md-ellipsis> Checked access: at </span> </a> </li> <li class=md-nav__item> <a href=../../../features/element_access/default_value/ class=md-nav__link> <span class=md-ellipsis> Access with default value: value </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../../features/iterators/ class=md-nav__link> <span class=md-ellipsis> Iterators </span> </a> </li> <li class=md-nav__item> <a href=../../../features/json_pointer/ class=md-nav__link> <span class=md-ellipsis> JSON Pointer </span> </a> </li> <li class=md-nav__item> <a href=../../../features/json_patch/ class=md-nav__link> <span class=md-ellipsis> JSON Patch and Diff </span> </a> </li> <li class=md-nav__item> <a href=../../../features/merge_patch/ class=md-nav__link> <span class=md-ellipsis> JSON Merge Patch </span> </a> </li> <li class=md-nav__item> <a href=../../../features/modules/ class=md-nav__link> <span class=md-ellipsis> Modules </span> </a> </li> <li class=md-nav__item> <a href=../../../features/namespace/ class=md-nav__link> <span class=md-ellipsis> nlohmann Namespace </span> </a> </li> <li class=md-nav__item> <a href=../../../features/object_order/ class=md-nav__link> <span class=md-ellipsis> Object Order </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_14> <div class="md-nav__link md-nav__container"> <a href=../../../features/parsing/ class="md-nav__link "> <span class=md-ellipsis> Parsing </span> </a> <label class="md-nav__link " for=__nav_2_14 id=__nav_2_14_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_14_label aria-expanded=false> <label class=md-nav__title for=__nav_2_14> <span class="md-nav__icon md-icon"></span> Parsing </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/parsing/json_lines/ class=md-nav__link> <span class=md-ellipsis> JSON Lines </span> </a> </li> <li class=md-nav__item> <a href=../../../features/parsing/parse_exceptions/ class=md-nav__link> <span class=md-ellipsis> Parsing and Exceptions </span> </a> </li> <li class=md-nav__item> <a href=../../../features/parsing/parser_callbacks/ class=md-nav__link> <span class=md-ellipsis> Parser Callbacks </span> </a> </li> <li class=md-nav__item> <a href=../../../features/parsing/sax_interface/ class=md-nav__link> <span class=md-ellipsis> SAX Interface </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../../features/assertions/ class=md-nav__link> <span class=md-ellipsis> Runtime Assertions </span> </a> </li> <li class=md-nav__item> <a href=../../../features/enum_conversion/ class=md-nav__link> <span class=md-ellipsis> Specializing enum conversion </span> </a> </li> <li class=md-nav__item> <a href=../../../features/macros/ class=md-nav__link> <span class=md-ellipsis> Supported Macros </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_18> <div class="md-nav__link md-nav__container"> <a href=../../../features/types/ class="md-nav__link "> <span class=md-ellipsis> Types </span> </a> <label class="md-nav__link " for=__nav_2_18 id=__nav_2_18_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_18_label aria-expanded=false> <label class=md-nav__title for=__nav_2_18> <span class="md-nav__icon md-icon"></span> Types </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/types/number_handling/ class=md-nav__link> <span class=md-ellipsis> Number Handling </span> </a> </li> </ul> </nav> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_3> <div class="md-nav__link md-nav__container"> <a href=../../../integration/ class="md-nav__link "> <span class=md-ellipsis> Integration </span> </a> <label class="md-nav__link " for=__nav_3 id=__nav_3_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_3_label aria-expanded=false> <label class=md-nav__title for=__nav_3> <span class="md-nav__icon md-icon"></span> Integration </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../integration/migration_guide/ class=md-nav__link> <span class=md-ellipsis> Migration Guide </span> </a> </li> <li class=md-nav__item> <a href=../../../integration/cmake/ class=md-nav__link> <span class=md-ellipsis> CMake </span> </a> </li> <li class=md-nav__item> <a href=../../../integration/package_managers/ class=md-nav__link> <span class=md-ellipsis> Package Managers </span> </a> </li> <li class=md-nav__item> <a href=../../../integration/pkg-config/ class=md-nav__link> <span class=md-ellipsis> Pkg-config </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--active md-nav__item--section md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4 checked> <label class=md-nav__link for=__nav_4 id=__nav_4_label tabindex> <span class=md-ellipsis> API Documentation </span> <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_4_label aria-expanded=true> <label class=md-nav__title for=__nav_4> <span class="md-nav__icon md-icon"></span> API Documentation </label> <ul class=md-nav__list data-md-scrollfix> <li class="md-nav__item md-nav__item--active md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_1 checked> <div class="md-nav__link md-nav__container"> <a href=../ class="md-nav__link "> <span class=md-ellipsis> basic_json </span> </a> <label class="md-nav__link " for=__nav_4_1 id=__nav_4_1_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_1_label aria-expanded=true> <label class=md-nav__title for=__nav_4_1> <span class="md-nav__icon md-icon"></span> basic_json </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../basic_json/ class=md-nav__link> <span class=md-ellipsis> (Constructor) </span> </a> </li> <li class=md-nav__item> <a href=../~basic_json/ class=md-nav__link> <span class=md-ellipsis> (Destructor) </span> </a> </li> <li class=md-nav__item> <a href=../accept/ class=md-nav__link> <span class=md-ellipsis> accept </span> </a> </li> <li class=md-nav__item> <a href=../array/ class=md-nav__link> <span class=md-ellipsis> array </span> </a> </li> <li class=md-nav__item> <a href=../array_t/ class=md-nav__link> <span class=md-ellipsis> array_t </span> </a> </li> <li class=md-nav__item> <a href=../at/ class=md-nav__link> <span class=md-ellipsis> at </span> </a> </li> <li class=md-nav__item> <a href=../back/ class=md-nav__link> <span class=md-ellipsis> back </span> </a> </li> <li class=md-nav__item> <a href=../begin/ class=md-nav__link> <span class=md-ellipsis> begin </span> </a> </li> <li class=md-nav__item> <a href=../binary/ class=md-nav__link> <span class=md-ellipsis> binary </span> </a> </li> <li class=md-nav__item> <a href=../binary_t/ class=md-nav__link> <span class=md-ellipsis> binary_t </span> </a> </li> <li class=md-nav__item> <a href=../boolean_t/ class=md-nav__link> <span class=md-ellipsis> boolean_t </span> </a> </li> <li class=md-nav__item> <a href=../cbegin/ class=md-nav__link> <span class=md-ellipsis> cbegin </span> </a> </li> <li class=md-nav__item> <a href=../cbor_tag_handler_t/ class=md-nav__link> <span class=md-ellipsis> cbor_tag_handler_t </span> </a> </li> <li class=md-nav__item> <a href=../cend/ class=md-nav__link> <span class=md-ellipsis> cend </span> </a> </li> <li class=md-nav__item> <a href=../clear/ class=md-nav__link> <span class=md-ellipsis> clear </span> </a> </li> <li class=md-nav__item> <a href=../contains/ class=md-nav__link> <span class=md-ellipsis> contains </span> </a> </li> <li class=md-nav__item> <a href=../count/ class=md-nav__link> <span class=md-ellipsis> count </span> </a> </li> <li class=md-nav__item> <a href=../crbegin/ class=md-nav__link> <span class=md-ellipsis> crbegin </span> </a> </li> <li class=md-nav__item> <a href=../crend/ class=md-nav__link> <span class=md-ellipsis> crend </span> </a> </li> <li class=md-nav__item> <a href=../default_object_comparator_t/ class=md-nav__link> <span class=md-ellipsis> default_object_comparator_t </span> </a> </li> <li class=md-nav__item> <a href=../diff/ class=md-nav__link> <span class=md-ellipsis> diff </span> </a> </li> <li class=md-nav__item> <a href=../dump/ class=md-nav__link> <span class=md-ellipsis> dump </span> </a> </li> <li class=md-nav__item> <a href=../emplace/ class=md-nav__link> <span class=md-ellipsis> emplace </span> </a> </li> <li class=md-nav__item> <a href=../emplace_back/ class=md-nav__link> <span class=md-ellipsis> emplace_back </span> </a> </li> <li class=md-nav__item> <a href=../empty/ class=md-nav__link> <span class=md-ellipsis> empty </span> </a> </li> <li class=md-nav__item> <a href=../end/ class=md-nav__link> <span class=md-ellipsis> end </span> </a> </li> <li class=md-nav__item> <a href=../end_pos/ class=md-nav__link> <span class=md-ellipsis> end_pos </span> </a> </li> <li class=md-nav__item> <a href=../erase/ class=md-nav__link> <span class=md-ellipsis> erase </span> </a> </li> <li class=md-nav__item> <a href=../error_handler_t/ class=md-nav__link> <span class=md-ellipsis> error_handler_t </span> </a> </li> <li class=md-nav__item> <a href=../exception/ class=md-nav__link> <span class=md-ellipsis> exception </span> </a> </li> <li class=md-nav__item> <a href=../find/ class=md-nav__link> <span class=md-ellipsis> find </span> </a> </li> <li class=md-nav__item> <a href=../flatten/ class=md-nav__link> <span class=md-ellipsis> flatten </span> </a> </li> <li class=md-nav__item> <a href=../from_bjdata/ class=md-nav__link> <span class=md-ellipsis> from_bjdata </span> </a> </li> <li class=md-nav__item> <a href=../from_bson/ class=md-nav__link> <span class=md-ellipsis> from_bson </span> </a> </li> <li class=md-nav__item> <a href=../from_cbor/ class=md-nav__link> <span class=md-ellipsis> from_cbor </span> </a> </li> <li class=md-nav__item> <a href=../from_msgpack/ class=md-nav__link> <span class=md-ellipsis> from_msgpack </span> </a> </li> <li class="md-nav__item md-nav__item--active"> <input class="md-nav__toggle md-toggle" type=checkbox id=__toc> <label class="md-nav__link md-nav__link--active" for=__toc> <span class=md-ellipsis> from_ubjson </span> <span class="md-nav__icon md-icon"></span> </label> <a href=./ class="md-nav__link md-nav__link--active"> <span class=md-ellipsis> from_ubjson </span> </a> <nav class="md-nav md-nav--secondary" aria-label="Table of contents"> <label class=md-nav__title for=__toc> <span class="md-nav__icon md-icon"></span> Table of contents </label> <ul class=md-nav__list data-md-component=toc data-md-scrollfix> <li class=md-nav__item> <a href=#template-parameters class=md-nav__link> <span class=md-ellipsis> Template parameters </span> </a> </li> <li class=md-nav__item> <a href=#parameters class=md-nav__link> <span class=md-ellipsis> Parameters </span> </a> </li> <li class=md-nav__item> <a href=#return-value class=md-nav__link> <span class=md-ellipsis> Return value </span> </a> </li> <li class=md-nav__item> <a href=#exception-safety class=md-nav__link> <span class=md-ellipsis> Exception safety </span> </a> </li> <li class=md-nav__item> <a href=#exceptions class=md-nav__link> <span class=md-ellipsis> Exceptions </span> </a> </li> <li class=md-nav__item> <a href=#complexity class=md-nav__link> <span class=md-ellipsis> Complexity </span> </a> </li> <li class=md-nav__item> <a href=#examples class=md-nav__link> <span class=md-ellipsis> Examples </span> </a> </li> <li class=md-nav__item> <a href=#see-also class=md-nav__link> <span class=md-ellipsis> See also </span> </a> </li> <li class=md-nav__item> <a href=#version-history class=md-nav__link> <span class=md-ellipsis> Version history </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../front/ class=md-nav__link> <span class=md-ellipsis> front </span> </a> </li> <li class=md-nav__item> <a href=../get/ class=md-nav__link> <span class=md-ellipsis> get </span> </a> </li> <li class=md-nav__item> <a href=../get_allocator/ class=md-nav__link> <span class=md-ellipsis> get_allocator </span> </a> </li> <li class=md-nav__item> <a href=../get_binary/ class=md-nav__link> <span class=md-ellipsis> get_binary </span> </a> </li> <li class=md-nav__item> <a href=../get_ptr/ class=md-nav__link> <span class=md-ellipsis> get_ptr </span> </a> </li> <li class=md-nav__item> <a href=../get_ref/ class=md-nav__link> <span class=md-ellipsis> get_ref </span> </a> </li> <li class=md-nav__item> <a href=../get_to/ class=md-nav__link> <span class=md-ellipsis> get_to </span> </a> </li> <li class=md-nav__item> <a href=../std_hash/ class=md-nav__link> <span class=md-ellipsis> std::hash&lt;basic_json&gt; </span> </a> </li> <li class=md-nav__item> <a href=../input_format_t/ class=md-nav__link> <span class=md-ellipsis> input_format_t </span> </a> </li> <li class=md-nav__item> <a href=../insert/ class=md-nav__link> <span class=md-ellipsis> insert </span> </a> </li> <li class=md-nav__item> <a href=../invalid_iterator/ class=md-nav__link> <span class=md-ellipsis> invalid_iterator </span> </a> </li> <li class=md-nav__item> <a href=../is_array/ class=md-nav__link> <span class=md-ellipsis> is_array </span> </a> </li> <li class=md-nav__item> <a href=../is_binary/ class=md-nav__link> <span class=md-ellipsis> is_binary </span> </a> </li> <li class=md-nav__item> <a href=../is_boolean/ class=md-nav__link> <span class=md-ellipsis> is_boolean </span> </a> </li> <li class=md-nav__item> <a href=../is_discarded/ class=md-nav__link> <span class=md-ellipsis> is_discarded </span> </a> </li> <li class=md-nav__item> <a href=../is_null/ class=md-nav__link> <span class=md-ellipsis> is_null </span> </a> </li> <li class=md-nav__item> <a href=../is_number/ class=md-nav__link> <span class=md-ellipsis> is_number </span> </a> </li> <li class=md-nav__item> <a href=../is_number_float/ class=md-nav__link> <span class=md-ellipsis> is_number_float </span> </a> </li> <li class=md-nav__item> <a href=../is_number_integer/ class=md-nav__link> <span class=md-ellipsis> is_number_integer </span> </a> </li> <li class=md-nav__item> <a href=../is_number_unsigned/ class=md-nav__link> <span class=md-ellipsis> is_number_unsigned </span> </a> </li> <li class=md-nav__item> <a href=../is_object/ class=md-nav__link> <span class=md-ellipsis> is_object </span> </a> </li> <li class=md-nav__item> <a href=../is_primitive/ class=md-nav__link> <span class=md-ellipsis> is_primitive </span> </a> </li> <li class=md-nav__item> <a href=../is_string/ class=md-nav__link> <span class=md-ellipsis> is_string </span> </a> </li> <li class=md-nav__item> <a href=../is_structured/ class=md-nav__link> <span class=md-ellipsis> is_structured </span> </a> </li> <li class=md-nav__item> <a href=../items/ class=md-nav__link> <span class=md-ellipsis> items </span> </a> </li> <li class=md-nav__item> <a href=../json_base_class_t/ class=md-nav__link> <span class=md-ellipsis> json_base_class_t </span> </a> </li> <li class=md-nav__item> <a href=../json_serializer/ class=md-nav__link> <span class=md-ellipsis> json_serializer </span> </a> </li> <li class=md-nav__item> <a href=../max_size/ class=md-nav__link> <span class=md-ellipsis> max_size </span> </a> </li> <li class=md-nav__item> <a href=../meta/ class=md-nav__link> <span class=md-ellipsis> meta </span> </a> </li> <li class=md-nav__item> <a href=../merge_patch/ class=md-nav__link> <span class=md-ellipsis> merge_patch </span> </a> </li> <li class=md-nav__item> <a href=../number_float_t/ class=md-nav__link> <span class=md-ellipsis> number_float_t </span> </a> </li> <li class=md-nav__item> <a href=../number_integer_t/ class=md-nav__link> <span class=md-ellipsis> number_integer_t </span> </a> </li> <li class=md-nav__item> <a href=../number_unsigned_t/ class=md-nav__link> <span class=md-ellipsis> number_unsigned_t </span> </a> </li> <li class=md-nav__item> <a href=../object/ class=md-nav__link> <span class=md-ellipsis> object </span> </a> </li> <li class=md-nav__item> <a href=../object_comparator_t/ class=md-nav__link> <span class=md-ellipsis> object_comparator_t </span> </a> </li> <li class=md-nav__item> <a href=../object_t/ class=md-nav__link> <span class=md-ellipsis> object_t </span> </a> </li> <li class=md-nav__item> <a href=../operator_ValueType/ class=md-nav__link> <span class=md-ellipsis> operator ValueType </span> </a> </li> <li class=md-nav__item> <a href=../operator_value_t/ class=md-nav__link> <span class=md-ellipsis> operator value_t </span> </a> </li> <li class=md-nav__item> <a href=../operator%5B%5D/ class=md-nav__link> <span class=md-ellipsis> operator[] </span> </a> </li> <li class=md-nav__item> <a href=../operator%3D/ class=md-nav__link> <span class=md-ellipsis> operator= </span> </a> </li> <li class=md-nav__item> <a href=../operator%2B%3D/ class=md-nav__link> <span class=md-ellipsis> operator+= </span> </a> </li> <li class=md-nav__item> <a href=../operator_eq/ class=md-nav__link> <span class=md-ellipsis> operator== </span> </a> </li> <li class=md-nav__item> <a href=../operator_ne/ class=md-nav__link> <span class=md-ellipsis> operator!= </span> </a> </li> <li class=md-nav__item> <a href=../operator_lt/ class=md-nav__link> <span class=md-ellipsis> operator< </span> </a> </li> <li class=md-nav__item> <a href=../operator_gt/ class=md-nav__link> <span class=md-ellipsis> operator> </span> </a> </li> <li class=md-nav__item> <a href=../operator_le/ class=md-nav__link> <span class=md-ellipsis> operator<= </span> </a> </li> <li class=md-nav__item> <a href=../operator_ge/ class=md-nav__link> <span class=md-ellipsis> operator>= </span> </a> </li> <li class=md-nav__item> <a href=../operator_spaceship/ class=md-nav__link> <span class=md-ellipsis> operator<=> </span> </a> </li> <li class=md-nav__item> <a href=../out_of_range/ class=md-nav__link> <span class=md-ellipsis> out_of_range </span> </a> </li> <li class=md-nav__item> <a href=../other_error/ class=md-nav__link> <span class=md-ellipsis> other_error </span> </a> </li> <li class=md-nav__item> <a href=../parse/ class=md-nav__link> <span class=md-ellipsis> parse </span> </a> </li> <li class=md-nav__item> <a href=../parse_error/ class=md-nav__link> <span class=md-ellipsis> parse_error </span> </a> </li> <li class=md-nav__item> <a href=../parse_event_t/ class=md-nav__link> <span class=md-ellipsis> parse_event_t </span> </a> </li> <li class=md-nav__item> <a href=../parser_callback_t/ class=md-nav__link> <span class=md-ellipsis> parser_callback_t </span> </a> </li> <li class=md-nav__item> <a href=../patch/ class=md-nav__link> <span class=md-ellipsis> patch </span> </a> </li> <li class=md-nav__item> <a href=../patch_inplace/ class=md-nav__link> <span class=md-ellipsis> patch_inplace </span> </a> </li> <li class=md-nav__item> <a href=../push_back/ class=md-nav__link> <span class=md-ellipsis> push_back </span> </a> </li> <li class=md-nav__item> <a href=../rbegin/ class=md-nav__link> <span class=md-ellipsis> rbegin </span> </a> </li> <li class=md-nav__item> <a href=../rend/ class=md-nav__link> <span class=md-ellipsis> rend </span> </a> </li> <li class=md-nav__item> <a href=../sax_parse/ class=md-nav__link> <span class=md-ellipsis> sax_parse </span> </a> </li> <li class=md-nav__item> <a href=../size/ class=md-nav__link> <span class=md-ellipsis> size </span> </a> </li> <li class=md-nav__item> <a href=../start_pos/ class=md-nav__link> <span class=md-ellipsis> start_pos </span> </a> </li> <li class=md-nav__item> <a href=../string_t/ class=md-nav__link> <span class=md-ellipsis> string_t </span> </a> </li> <li class=md-nav__item> <a href=../swap/ class=md-nav__link> <span class=md-ellipsis> swap </span> </a> </li> <li class=md-nav__item> <a href=../std_swap/ class=md-nav__link> <span class=md-ellipsis> std::swap&lt;basic_json&gt; </span> </a> </li> <li class=md-nav__item> <a href=../to_bjdata/ class=md-nav__link> <span class=md-ellipsis> to_bjdata </span> </a> </li> <li class=md-nav__item> <a href=../to_bson/ class=md-nav__link> <span class=md-ellipsis> to_bson </span> </a> </li> <li class=md-nav__item> <a href=../to_cbor/ class=md-nav__link> <span class=md-ellipsis> to_cbor </span> </a> </li> <li class=md-nav__item> <a href=../to_msgpack/ class=md-nav__link> <span class=md-ellipsis> to_msgpack </span> </a> </li> <li class=md-nav__item> <a href=../to_string/ class=md-nav__link> <span class=md-ellipsis> to_string </span> </a> </li> <li class=md-nav__item> <a href=../to_ubjson/ class=md-nav__link> <span class=md-ellipsis> to_ubjson </span> </a> </li> <li class=md-nav__item> <a href=../type/ class=md-nav__link> <span class=md-ellipsis> type </span> </a> </li> <li class=md-nav__item> <a href=../type_error/ class=md-nav__link> <span class=md-ellipsis> type_error </span> </a> </li> <li class=md-nav__item> <a href=../type_name/ class=md-nav__link> <span class=md-ellipsis> type_name </span> </a> </li> <li class=md-nav__item> <a href=../unflatten/ class=md-nav__link> <span class=md-ellipsis> unflatten </span> </a> </li> <li class=md-nav__item> <a href=../update/ class=md-nav__link> <span class=md-ellipsis> update </span> </a> </li> <li class=md-nav__item> <a href=../value/ class=md-nav__link> <span class=md-ellipsis> value </span> </a> </li> <li class=md-nav__item> <a href=../value_t/ class=md-nav__link> <span class=md-ellipsis> value_t </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_2> <div class="md-nav__link md-nav__container"> <a href=../../byte_container_with_subtype/ class="md-nav__link "> <span class=md-ellipsis> byte_container_with_subtype </span> </a> <label class="md-nav__link " for=__nav_4_2 id=__nav_4_2_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_2_label aria-expanded=false> <label class=md-nav__title for=__nav_4_2> <span class="md-nav__icon md-icon"></span> byte_container_with_subtype </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../byte_container_with_subtype/byte_container_with_subtype/ class=md-nav__link> <span class=md-ellipsis> (constructor) </span> </a> </li> <li class=md-nav__item> <a href=../../byte_container_with_subtype/clear_subtype/ class=md-nav__link> <span class=md-ellipsis> clear_subtype </span> </a> </li> <li class=md-nav__item> <a href=../../byte_container_with_subtype/has_subtype/ class=md-nav__link> <span class=md-ellipsis> has_subtype </span> </a> </li> <li class=md-nav__item> <a href=../../byte_container_with_subtype/set_subtype/ class=md-nav__link> <span class=md-ellipsis> set_subtype </span> </a> </li> <li class=md-nav__item> <a href=../../byte_container_with_subtype/subtype/ class=md-nav__link> <span class=md-ellipsis> subtype </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_3> <div class="md-nav__link md-nav__container"> <a href=../../adl_serializer/ class="md-nav__link "> <span class=md-ellipsis> adl_serializer </span> </a> <label class="md-nav__link " for=__nav_4_3 id=__nav_4_3_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_3_label aria-expanded=false> <label class=md-nav__title for=__nav_4_3> <span class="md-nav__icon md-icon"></span> adl_serializer </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../adl_serializer/from_json/ class=md-nav__link> <span class=md-ellipsis> from_json </span> </a> </li> <li class=md-nav__item> <a href=../../adl_serializer/to_json/ class=md-nav__link> <span class=md-ellipsis> to_json </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../json/ class=md-nav__link> <span class=md-ellipsis> json </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_5> <div class="md-nav__link md-nav__container"> <a href=../../json_pointer/ class="md-nav__link "> <span class=md-ellipsis> json_pointer </span> </a> <label class="md-nav__link " for=__nav_4_5 id=__nav_4_5_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_5_label aria-expanded=false> <label class=md-nav__title for=__nav_4_5> <span class="md-nav__icon md-icon"></span> json_pointer </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../json_pointer/json_pointer/ class=md-nav__link> <span class=md-ellipsis> (Constructor) </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/back/ class=md-nav__link> <span class=md-ellipsis> back </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/empty/ class=md-nav__link> <span class=md-ellipsis> empty </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/front/ class=md-nav__link> <span class=md-ellipsis> front </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_string_t/ class=md-nav__link> <span class=md-ellipsis> operator string_t </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_eq/ class=md-nav__link> <span class=md-ellipsis> operator== </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_ne/ class=md-nav__link> <span class=md-ellipsis> operator!= </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_slash/ class=md-nav__link> <span class=md-ellipsis> operator/ </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_slasheq/ class=md-nav__link> <span class=md-ellipsis> operator/= </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/parent_pointer/ class=md-nav__link> <span class=md-ellipsis> parent_pointer </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/pop_back/ class=md-nav__link> <span class=md-ellipsis> pop_back </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/pop_front/ class=md-nav__link> <span class=md-ellipsis> pop_front </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/push_back/ class=md-nav__link> <span class=md-ellipsis> push_back </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/push_front/ class=md-nav__link> <span class=md-ellipsis> push_front </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/string_t/ class=md-nav__link> <span class=md-ellipsis> string_t </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/to_string/ class=md-nav__link> <span class=md-ellipsis> to_string </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_6> <div class="md-nav__link md-nav__container"> <a href=../../json_sax/ class="md-nav__link "> <span class=md-ellipsis> json_sax </span> </a> <label class="md-nav__link " for=__nav_4_6 id=__nav_4_6_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_6_label aria-expanded=false> <label class=md-nav__title for=__nav_4_6> <span class="md-nav__icon md-icon"></span> json_sax </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../json_sax/binary/ class=md-nav__link> <span class=md-ellipsis> binary </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/boolean/ class=md-nav__link> <span class=md-ellipsis> boolean </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/end_array/ class=md-nav__link> <span class=md-ellipsis> end_array </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/end_object/ class=md-nav__link> <span class=md-ellipsis> end_object </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/key/ class=md-nav__link> <span class=md-ellipsis> key </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/null/ class=md-nav__link> <span class=md-ellipsis> null </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/number_float/ class=md-nav__link> <span class=md-ellipsis> number_float </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/number_integer/ class=md-nav__link> <span class=md-ellipsis> number_integer </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/number_unsigned/ class=md-nav__link> <span class=md-ellipsis> number_unsigned </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/parse_error/ class=md-nav__link> <span class=md-ellipsis> parse_error </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/start_array/ class=md-nav__link> <span class=md-ellipsis> start_array </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/start_object/ class=md-nav__link> <span class=md-ellipsis> start_object </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/string/ class=md-nav__link> <span class=md-ellipsis> string </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../operator_ltlt/ class=md-nav__link> <span class=md-ellipsis> operator<<(basic_json), operator<<(json_pointer) </span> </a> </li> <li class=md-nav__item> <a href=../../operator_gtgt/ class=md-nav__link> <span class=md-ellipsis> operator>>(basic_json) </span> </a> </li> <li class=md-nav__item> <a href=../../operator_literal_json/ class=md-nav__link> <span class=md-ellipsis> operator""_json </span> </a> </li> <li class=md-nav__item> <a href=../../operator_literal_json_pointer/ class=md-nav__link> <span class=md-ellipsis> operator""_json_pointer </span> </a> </li> <li class=md-nav__item> <a href=../../ordered_json/ class=md-nav__link> <span class=md-ellipsis> ordered_json </span> </a> </li> <li class=md-nav__item> <a href=../../ordered_map/ class=md-nav__link> <span class=md-ellipsis> ordered_map </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_13> <div class="md-nav__link md-nav__container"> <a href=../../macros/ class="md-nav__link "> <span class=md-ellipsis> macros </span> </a> <label class="md-nav__link " for=__nav_4_13 id=__nav_4_13_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_13_label aria-expanded=false> <label class=md-nav__title for=__nav_4_13> <span class="md-nav__icon md-icon"></span> macros </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../macros/json_assert/ class=md-nav__link> <span class=md-ellipsis> JSON_ASSERT </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_brace_init_copy_semantics/ class=md-nav__link> <span class=md-ellipsis> JSON_BRACE_INIT_COPY_SEMANTICS </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_throw_user/ class=md-nav__link> <span class=md-ellipsis> JSON_CATCH_USER, JSON_THROW_USER, JSON_TRY_USER </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_diagnostics/ class=md-nav__link> <span class=md-ellipsis> JSON_DIAGNOSTICS </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_diagnostic_positions/ class=md-nav__link> <span class=md-ellipsis> JSON_DIAGNOSTIC_POSITIONS </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_disable_enum_serialization/ class=md-nav__link> <span class=md-ellipsis> JSON_DISABLE_ENUM_SERIALIZATION </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_has_cpp_11/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_CPP_11, JSON_HAS_CPP_14, JSON_HAS_CPP_17, JSON_HAS_CPP_20 </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_has_filesystem/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_EXPERIMENTAL_FILESYSTEM, JSON_HAS_FILESYSTEM </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_has_ranges/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_RANGES </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_has_static_rtti/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_STATIC_RTTI </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_has_three_way_comparison/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_THREE_WAY_COMPARISON </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_noexception/ class=md-nav__link> <span class=md-ellipsis> JSON_NOEXCEPTION </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_no_io/ class=md-nav__link> <span class=md-ellipsis> JSON_NO_IO </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_skip_library_version_check/ class=md-nav__link> <span class=md-ellipsis> JSON_SKIP_LIBRARY_VERSION_CHECK </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_skip_unsupported_compiler_check/ class=md-nav__link> <span class=md-ellipsis> JSON_SKIP_UNSUPPORTED_COMPILER_CHECK </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_use_global_udls/ class=md-nav__link> <span class=md-ellipsis> JSON_USE_GLOBAL_UDLS </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_use_implicit_conversions/ class=md-nav__link> <span class=md-ellipsis> JSON_USE_IMPLICIT_CONVERSIONS </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_use_legacy_discarded_value_comparison/ class=md-nav__link> <span class=md-ellipsis> JSON_USE_LEGACY_DISCARDED_VALUE_COMPARISON </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_define_derived_type/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_ONLY_SERIALIZE, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_define_type_intrusive/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_TYPE_INTRUSIVE, NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_TYPE_INTRUSIVE_ONLY_SERIALIZE </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_define_type_non_intrusive/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_define_type_with_names/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_TYPE_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_namespace/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_NAMESPACE </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_namespace_begin/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_NAMESPACE_BEGIN, NLOHMANN_JSON_NAMESPACE_END </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_namespace_no_version/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_NAMESPACE_NO_VERSION </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_serialize_enum/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_SERIALIZE_ENUM </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_serialize_enum_strict/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_SERIALIZE_ENUM_STRICT </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_version_major/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_VERSION_MAJOR, NLOHMANN_JSON_VERSION_MINOR, NLOHMANN_JSON_VERSION_PATCH </span> </a> </li> </ul> </nav> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_5> <div class="md-nav__link md-nav__container"> <a href=../../../community/ class="md-nav__link "> <span class=md-ellipsis> Community </span> </a> <label class="md-nav__link " for=__nav_5 id=__nav_5_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_5_label aria-expanded=false> <label class=md-nav__title for=__nav_5> <span class="md-nav__icon md-icon"></span> Community </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../community/code_of_conduct/ class=md-nav__link> <span class=md-ellipsis> Code of Conduct </span> </a> </li> <li class=md-nav__item> <a href=../../../community/contribution_guidelines/ class=md-nav__link> <span class=md-ellipsis> Contribution Guidelines </span> </a> </li> <li class=md-nav__item> <a href=../../../community/quality_assurance/ class=md-nav__link> <span class=md-ellipsis> Quality assurance </span> </a> </li> <li class=md-nav__item> <a href=../../../community/governance/ class=md-nav__link> <span class=md-ellipsis> Governance </span> </a> </li> <li class=md-nav__item> <a href=../../../community/security_policy/ class=md-nav__link> <span class=md-ellipsis> Security Policy </span> </a> </li> </ul> </nav> </li> </ul> </nav> </div> </div> </div> <div class="md-sidebar md-sidebar--secondary" data-md-component=sidebar data-md-type=toc> <div class=md-sidebar__scrollwrap> <div class=md-sidebar__inner> <nav class="md-nav md-nav--secondary" aria-label="Table of contents"> <label class=md-nav__title for=__toc> <span class="md-nav__icon md-icon"></span> Table of contents </label> <ul class=md-nav__list data-md-component=toc data-md-scrollfix> <li class=md-nav__item> <a href=#template-parameters class=md-nav__link> <span class=md-ellipsis> Template parameters </span> </a> </li> <li class=md-nav__item> <a href=#parameters class=md-nav__link> <span class=md-ellipsis> Parameters </span> </a> </li> <li class=md-nav__item> <a href=#return-value class=md-nav__link> <span class=md-ellipsis> Return value </span> </a> </li> <li class=md-nav__item> <a href=#exception-safety class=md-nav__link> <span class=md-ellipsis> Exception safety </span> </a> </li> <li class=md-nav__item> <a href=#exceptions class=md-nav__link> <span class=md-ellipsis> Exceptions </span> </a> </li> <li class=md-nav__item> <a href=#complexity class=md-nav__link> <span class=md-ellipsis> Complexity </span> </a> </li> <li class=md-nav__item> <a href=#examples class=md-nav__link> <span class=md-ellipsis> Examples </span> </a> </li> <li class=md-nav__item> <a href=#see-also class=md-nav__link> <span class=md-ellipsis> See also </span> </a> </li> <li class=md-nav__item> <a href=#version-history class=md-nav__link> <span class=md-ellipsis> Version history </span> </a> </li> </ul> </nav> </div> </div> </div> <div class=md-content data-md-component=content> <article class="md-content__inner md-typeset"> <a href="https://github.com/nlohmann/json/edit/develop/docs/mkdocs/docs/api/basic_json/from_ubjson.md" title="Edit this page" class="md-content__button md-icon" rel="edit"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M10 20H6V4h7v5h5v3.1l2-2V8l-6-6H6c-1.1 0-2 .9-2 2v16c0 1.1.9 2 2 2h4zm10.2-7c.1 0 .3.1.4.2l1.3 1.3c.2.2.2.6 0 .8l-1 1-2.1-2.1 1-1c.1-.1.2-.2.4-.2m0 3.9L14.1 23H12v-2.1l6.1-6.1z"/></svg> </a> <a href="https://github.com/nlohmann/json/raw/develop/docs/mkdocs/docs/api/basic_json/from_ubjson.md" title="View source of this page" class="md-content__button md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M17 18c.56 0 1 .44 1 1s-.44 1-1 1-1-.44-1-1 .44-1 1-1m0-3c-2.73 0-5.06 1.66-6 4 .94 2.34 3.27 4 6 4s5.06-1.66 6-4c-.94-2.34-3.27-4-6-4m0 6.5a2.5 2.5 0 0 1-2.5-2.5 2.5 2.5 0 0 1 2.5-2.5 2.5 2.5 0 0 1 2.5 2.5 2.5 2.5 0 0 1-2.5 2.5M9.27 20H6V4h7v5h5v4.07c.7.08 1.36.25 2 .49V8l-6-6H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h4.5a8.2 8.2 0 0 1-1.23-2"/></svg> </a> <h1 id=nlohmannbasic_jsonfrom_ubjson><small>nlohmann::basic_json::</small>from_ubjson<a class=headerlink href=#nlohmannbasic_jsonfrom_ubjson title="Permanent link">&para;</a></h1> <div class=highlight><pre><span></span><code><span class=c1>// (1)</span>
 <span class=k>template</span><span class=o>&lt;</span><span class=k>typename</span><span class=w> </span><span class=nc>InputType</span><span class=o>&gt;</span>
 <span class=k>static</span><span class=w> </span><span class=n>basic_json</span><span class=w> </span><span class=n>from_ubjson</span><span class=p>(</span><span class=n>InputType</span><span class=o>&amp;&amp;</span><span class=w> </span><span class=n>i</span><span class=p>,</span>
 <span class=w>                              </span><span class=k>const</span><span class=w> </span><span class=kt>bool</span><span class=w> </span><span class=n>strict</span><span class=w> </span><span class=o>=</span><span class=w> </span><span class=nb>true</span><span class=p>,</span>
@@ -8,7 +8,7 @@
 <span class=k>static</span><span class=w> </span><span class=n>basic_json</span><span class=w> </span><span class=n>from_ubjson</span><span class=p>(</span><span class=n>IteratorType</span><span class=w> </span><span class=n>first</span><span class=p>,</span><span class=w> </span><span class=n>IteratorType</span><span class=w> </span><span class=n>last</span><span class=p>,</span>
 <span class=w>                              </span><span class=k>const</span><span class=w> </span><span class=kt>bool</span><span class=w> </span><span class=n>strict</span><span class=w> </span><span class=o>=</span><span class=w> </span><span class=nb>true</span><span class=p>,</span>
 <span class=w>                              </span><span class=k>const</span><span class=w> </span><span class=kt>bool</span><span class=w> </span><span class=n>allow_exceptions</span><span class=w> </span><span class=o>=</span><span class=w> </span><span class=nb>true</span><span class=p>);</span>
-</code></pre></div> <p>Deserializes a given input to a <abbr title="JavaScript Object Notation">JSON</abbr> value using the <abbr title="Universal Binary JSON">UBJSON</abbr> (Universal Binary <abbr title="JavaScript Object Notation">JSON</abbr>) serialization format.</p> <ol> <li>Reads from a compatible input.</li> <li>Reads from an iterator range.</li> </ol> <p>The exact mapping and its limitations are described on a <a href=../../../features/binary_formats/ubjson/ >dedicated page</a>.</p> <h2 id=template-parameters>Template parameters<a class=headerlink href=#template-parameters title="Permanent link">&para;</a></h2> <dl> <dt><code>InputType</code></dt> <dd> <p>A compatible input, for instance:</p> <ul> <li>an <code>std::istream</code> object</li> <li>a <code>FILE</code> pointer</li> <li>a C-style array of characters</li> <li>a pointer to a null-terminated string of single byte characters</li> <li>an object <code>obj</code> for which <code>begin(obj)</code> and <code>end(obj)</code> produces a valid pair of iterators.</li> </ul> </dd> <dt><code>IteratorType</code></dt> <dd>a compatible iterator type</dd> </dl> <h2 id=parameters>Parameters<a class=headerlink href=#parameters title="Permanent link">&para;</a></h2> <dl> <dt><code>i</code> (in)</dt> <dd>an input in <abbr title="Universal Binary JSON">UBJSON</abbr> format convertible to an input adapter</dd> <dt><code>first</code> (in)</dt> <dd>iterator to the start of the input</dd> <dt><code>last</code> (in)</dt> <dd>iterator to the end of the input</dd> <dt><code>strict</code> (in)</dt> <dd>whether to expect the input to be consumed until <abbr title="End of File">EOF</abbr> (<code class=highlight><span class=nb>true</span></code> by default)</dd> <dt><code>allow_exceptions</code> (in)</dt> <dd>whether to throw exceptions in case of a parse error (optional, <code class=highlight><span class=nb>true</span></code> by default)</dd> </dl> <h2 id=return-value>Return value<a class=headerlink href=#return-value title="Permanent link">&para;</a></h2> <p>deserialized <abbr title="JavaScript Object Notation">JSON</abbr> value; in case of a parse error and <code>allow_exceptions</code> set to <code class=highlight><span class=nb>false</span></code>, the return value will be <code>value_t::discarded</code>. The latter can be checked with <a href=../is_discarded/ ><code>is_discarded</code></a>.</p> <h2 id=exception-safety>Exception safety<a class=headerlink href=#exception-safety title="Permanent link">&para;</a></h2> <p>Strong guarantee: if an exception is thrown, there are no changes in the <abbr title="JavaScript Object Notation">JSON</abbr> value.</p> <h2 id=exceptions>Exceptions<a class=headerlink href=#exceptions title="Permanent link">&para;</a></h2> <ul> <li>Throws <a href=../../../home/exceptions/#jsonexceptionparse_error110>parse_error.110</a> if the given input ends prematurely or the end of the file was not reached when <code>strict</code> was set to true</li> <li>Throws <a href=../../../home/exceptions/#jsonexceptionparse_error112>parse_error.112</a> if a parse error occurs</li> <li>Throws <a href=../../../home/exceptions/#jsonexceptionparse_error113>parse_error.113</a> if a string could not be parsed successfully</li> </ul> <h2 id=complexity>Complexity<a class=headerlink href=#complexity title="Permanent link">&para;</a></h2> <p>Linear in the size of the input.</p> <h2 id=examples>Examples<a class=headerlink href=#examples title="Permanent link">&para;</a></h2> <details class=example> <summary>Example</summary> <p>The example shows the deserialization of a byte vector in <abbr title="Universal Binary JSON">UBJSON</abbr> format to a <abbr title="JavaScript Object Notation">JSON</abbr> value.</p> <div class=highlight><pre><span></span><code><span class=cp>#include</span><span class=w> </span><span class=cpf>&lt;iostream&gt;</span>
+</code></pre></div> <p>Deserializes a given input to a <abbr title="JavaScript Object Notation">JSON</abbr> value using the <abbr title="Universal Binary JSON">UBJSON</abbr> (Universal Binary <abbr title="JavaScript Object Notation">JSON</abbr>) serialization format.</p> <ol> <li>Reads from a compatible input.</li> <li>Reads from an iterator range.</li> </ol> <p>The exact mapping and its limitations are described on a <a href=../../../features/binary_formats/ubjson/ >dedicated page</a>.</p> <h2 id=template-parameters>Template parameters<a class=headerlink href=#template-parameters title="Permanent link">&para;</a></h2> <dl> <dt><code>InputType</code></dt> <dd> <p>A compatible input, for instance:</p> <ul> <li>an <code>std::istream</code> object</li> <li>a <code>FILE</code> pointer</li> <li>a C-style array of characters</li> <li>a pointer to a null-terminated string of single byte characters</li> <li>an object <code>obj</code> for which <code>begin(obj)</code> and <code>end(obj)</code> produces a valid pair of iterators.</li> </ul> </dd> <dt><code>IteratorType</code></dt> <dd>a compatible iterator type</dd> </dl> <h2 id=parameters>Parameters<a class=headerlink href=#parameters title="Permanent link">&para;</a></h2> <dl> <dt><code>i</code> (in)</dt> <dd>an input in <abbr title="Universal Binary JSON">UBJSON</abbr> format convertible to an input adapter</dd> <dt><code>first</code> (in)</dt> <dd>iterator to the start of the input</dd> <dt><code>last</code> (in)</dt> <dd>iterator to the end of the input</dd> <dt><code>strict</code> (in)</dt> <dd>whether to expect the input to be consumed until <abbr title="End of File">EOF</abbr> (<code class=highlight><span class=nb>true</span></code> by default)</dd> <dt><code>allow_exceptions</code> (in)</dt> <dd>whether to throw exceptions in case of a parse error (optional, <code class=highlight><span class=nb>true</span></code> by default)</dd> </dl> <h2 id=return-value>Return value<a class=headerlink href=#return-value title="Permanent link">&para;</a></h2> <p>deserialized <abbr title="JavaScript Object Notation">JSON</abbr> value; in case of a parse error and <code>allow_exceptions</code> set to <code class=highlight><span class=nb>false</span></code>, the return value will be <code>value_t::discarded</code>. The latter can be checked with <a href=../is_discarded/ ><code>is_discarded</code></a>.</p> <h2 id=exception-safety>Exception safety<a class=headerlink href=#exception-safety title="Permanent link">&para;</a></h2> <p>Strong guarantee: if an exception is thrown, there are no changes in the <abbr title="JavaScript Object Notation">JSON</abbr> value.</p> <h2 id=exceptions>Exceptions<a class=headerlink href=#exceptions title="Permanent link">&para;</a></h2> <ul> <li>Throws <a href=../../../home/exceptions/#jsonexceptionparse_error110>parse_error.110</a> if the given input ends prematurely or the end of the file was not reached when <code>strict</code> was set to true</li> <li>Throws <a href=../../../home/exceptions/#jsonexceptionparse_error112>parse_error.112</a> if a parse error occurs</li> <li>Throws <a href=../../../home/exceptions/#jsonexceptionparse_error113>parse_error.113</a> if a string could not be parsed successfully</li> <li>Throws <a href=../../../home/exceptions/#jsonexceptionout_of_range408>out_of_range.408</a> if the size of an optimized container or n-dimensional array cannot be represented by <code>std::size_t</code></li> </ul> <h2 id=complexity>Complexity<a class=headerlink href=#complexity title="Permanent link">&para;</a></h2> <p>Linear in the size of the input.</p> <h2 id=examples>Examples<a class=headerlink href=#examples title="Permanent link">&para;</a></h2> <details class=example> <summary>Example</summary> <p>The example shows the deserialization of a byte vector in <abbr title="Universal Binary JSON">UBJSON</abbr> format to a <abbr title="JavaScript Object Notation">JSON</abbr> value.</p> <div class=highlight><pre><span></span><code><span class=cp>#include</span><span class=w> </span><span class=cpf>&lt;iostream&gt;</span>
 <span class=cp>#include</span><span class=w> </span><span class=cpf>&lt;iomanip&gt;</span>
 <span class=cp>#include</span><span class=w> </span><span class=cpf>&lt;nlohmann/json.hpp&gt;</span>
 
@@ -32,4 +32,4 @@
 <span class=w>  </span><span class=nt>&quot;compact&quot;</span><span class=p>:</span><span class=w> </span><span class=kc>true</span><span class=p>,</span>
 <span class=w>  </span><span class=nt>&quot;schema&quot;</span><span class=p>:</span><span class=w> </span><span class=mi>0</span>
 <span class=p>}</span>
-</code></pre></div> </details> <h2 id=version-history>Version history<a class=headerlink href=#version-history title="Permanent link">&para;</a></h2> <ul> <li>Added in version 3.1.0.</li> <li>Added <code>allow_exceptions</code> parameter in version 3.2.0.</li> </ul> <div class="admonition warning"> <p class=admonition-title>Deprecation</p> <ul> <li>Overload (2) replaces calls to <code>from_ubjson</code> with a pointer and a length as first two parameters, which has been deprecated in version 3.8.0. This overload will be removed in version 4.0.0. Please replace all calls like <code class=highlight><span class=n>from_ubjson</span><span class=p>(</span><span class=n>ptr</span><span class=p>,</span><span class=w> </span><span class=n>len</span><span class=p>,</span><span class=w> </span><span class=p>...);</span></code> with <code class=highlight><span class=n>from_ubjson</span><span class=p>(</span><span class=n>ptr</span><span class=p>,</span><span class=w> </span><span class=n>ptr</span><span class=o>+</span><span class=n>len</span><span class=p>,</span><span class=w> </span><span class=p>...);</span></code>.</li> <li>Overload (2) replaces calls to <code>from_ubjson</code> with a pair of iterators as their first parameter, which has been deprecated in version 3.8.0. This overload will be removed in version 4.0.0. Please replace all calls like <code class=highlight><span class=n>from_ubjson</span><span class=p>({</span><span class=n>ptr</span><span class=p>,</span><span class=w> </span><span class=n>ptr</span><span class=o>+</span><span class=n>len</span><span class=p>},</span><span class=w> </span><span class=p>...);</span></code> with <code class=highlight><span class=n>from_ubjson</span><span class=p>(</span><span class=n>ptr</span><span class=p>,</span><span class=w> </span><span class=n>ptr</span><span class=o>+</span><span class=n>len</span><span class=p>,</span><span class=w> </span><span class=p>...);</span></code>.</li> </ul> <p>You should be warned by your compiler with a <code>-Wdeprecated-declarations</code> warning if you are using a deprecated function.</p> </div> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 23, 2026 11:16:18 UTC">June 23, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
+</code></pre></div> </details> <h2 id=see-also>See also<a class=headerlink href=#see-also title="Permanent link">&para;</a></h2> <ul> <li><a href=../to_ubjson/ >to_ubjson</a> create a <abbr title="Universal Binary JSON">UBJSON</abbr> serialization of a <abbr title="JavaScript Object Notation">JSON</abbr> value</li> <li><a href=../from_cbor/ >from_cbor</a> create a <abbr title="JavaScript Object Notation">JSON</abbr> value from an input in <abbr title="Concise Binary Object Representation">CBOR</abbr> format</li> <li><a href=../from_msgpack/ >from_msgpack</a> create a <abbr title="JavaScript Object Notation">JSON</abbr> value from an input in MessagePack format</li> <li><a href=../from_bson/ >from_bson</a> create a <abbr title="JavaScript Object Notation">JSON</abbr> value from an input in <abbr title="Binary JSON">BSON</abbr> format</li> <li><a href=../from_bjdata/ >from_bjdata</a> create a <abbr title="JavaScript Object Notation">JSON</abbr> value from an input in <abbr title="Binary JData">BJData</abbr> format</li> </ul> <h2 id=version-history>Version history<a class=headerlink href=#version-history title="Permanent link">&para;</a></h2> <ul> <li>Added in version 3.1.0.</li> <li>Added <code>allow_exceptions</code> parameter in version 3.2.0.</li> </ul> <div class="admonition warning"> <p class=admonition-title>Deprecation</p> <ul> <li>Overload (2) replaces calls to <code>from_ubjson</code> with a pointer and a length as first two parameters, which has been deprecated in version 3.8.0. This overload will be removed in version 4.0.0. Please replace all calls like <code class=highlight><span class=n>from_ubjson</span><span class=p>(</span><span class=n>ptr</span><span class=p>,</span><span class=w> </span><span class=n>len</span><span class=p>,</span><span class=w> </span><span class=p>...);</span></code> with <code class=highlight><span class=n>from_ubjson</span><span class=p>(</span><span class=n>ptr</span><span class=p>,</span><span class=w> </span><span class=n>ptr</span><span class=o>+</span><span class=n>len</span><span class=p>,</span><span class=w> </span><span class=p>...);</span></code>.</li> <li>Overload (2) replaces calls to <code>from_ubjson</code> with a pair of iterators as their first parameter, which has been deprecated in version 3.8.0. This overload will be removed in version 4.0.0. Please replace all calls like <code class=highlight><span class=n>from_ubjson</span><span class=p>({</span><span class=n>ptr</span><span class=p>,</span><span class=w> </span><span class=n>ptr</span><span class=o>+</span><span class=n>len</span><span class=p>},</span><span class=w> </span><span class=p>...);</span></code> with <code class=highlight><span class=n>from_ubjson</span><span class=p>(</span><span class=n>ptr</span><span class=p>,</span><span class=w> </span><span class=n>ptr</span><span class=o>+</span><span class=n>len</span><span class=p>,</span><span class=w> </span><span class=p>...);</span></code>.</li> </ul> <p>You should be warned by your compiler with a <code>-Wdeprecated-declarations</code> warning if you are using a deprecated function.</p> </div> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 29, 2026 20:15:18 UTC">June 29, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
diff --git a/api/basic_json/front/index.html b/api/basic_json/front/index.html
index f380815..26f75f3 100644
--- a/api/basic_json/front/index.html
+++ b/api/basic_json/front/index.html
@@ -35,4 +35,4 @@
 <span class=mi>1</span>
 <span class=mi>1</span>
 <span class=s2>&quot;Hello, world&quot;</span>
-</code></pre></div> </details> <h2 id=see-also>See also<a class=headerlink href=#see-also title="Permanent link">&para;</a></h2> <ul> <li><a href=../back/ >back</a> to access the last element</li> </ul> <h2 id=version-history>Version history<a class=headerlink href=#version-history title="Permanent link">&para;</a></h2> <ul> <li>Added in version 1.0.0.</li> <li>Adjusted code to return reference to binary values in version 3.8.0.</li> </ul> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 23, 2026 11:16:18 UTC">June 23, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
+</code></pre></div> </details> <h2 id=see-also>See also<a class=headerlink href=#see-also title="Permanent link">&para;</a></h2> <ul> <li><a href=../back/ >back</a> to access the last element</li> </ul> <h2 id=version-history>Version history<a class=headerlink href=#version-history title="Permanent link">&para;</a></h2> <ul> <li>Added in version 1.0.0.</li> <li>Adjusted code to return reference to binary values in version 3.8.0.</li> </ul> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 29, 2026 20:15:18 UTC">June 29, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
diff --git a/api/basic_json/get/index.html b/api/basic_json/get/index.html
index 7e7f273..4610c9c 100644
--- a/api/basic_json/get/index.html
+++ b/api/basic_json/get/index.html
@@ -1,4 +1,4 @@
-<!doctype html><html lang=en class=no-js> <head><meta charset=utf-8><meta name=viewport content="width=device-width,initial-scale=1"><meta name=author content="Niels Lohmann"><link href="https://json.nlohmann.me/api/basic_json/get/" rel="canonical"><link href=../front/ rel=prev><link href=../get_allocator/ rel=next><link rel=icon href=../../../assets/images/favicon.png><meta name=generator content="mkdocs-1.6.1, mkdocs-material-9.7.6"><title>get - JSON for Modern C++</title><link rel=stylesheet href=../../../assets/stylesheets/main.484c7ddc.min.css><link rel=stylesheet href=../../../assets/stylesheets/palette.ab4e12ef.min.css><link rel="stylesheet" href="../../../assets/external/fonts.googleapis.com/css.61a430c9.css"><style>:root{--md-text-font:"Roboto";--md-code-font:"JetBrains Mono"}</style><link rel=stylesheet href=../../../css/custom.css><script>__md_scope=new URL("../../..",location),__md_hash=e=>[...e].reduce(((e,_)=>(e<<5)-e+_.charCodeAt(0)),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script></head> <body dir=ltr data-md-color-scheme=default data-md-color-primary=indigo data-md-color-accent=indigo> <input class=md-toggle data-md-toggle=drawer type=checkbox id=__drawer autocomplete=off> <input class=md-toggle data-md-toggle=search type=checkbox id=__search autocomplete=off> <label class=md-overlay for=__drawer></label> <div data-md-component=skip> <a href=#nlohmannbasic_jsonget class=md-skip> Skip to content </a> </div> <div data-md-component=announce> </div> <header class=md-header data-md-component=header> <nav class="md-header__inner md-grid" aria-label=Header> <a href=../../.. title="JSON for Modern C++" class="md-header__button md-logo" aria-label="JSON for Modern C++" data-md-component=logo> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54"/></svg> </a> <label class="md-header__button md-icon" for=__drawer> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M3 6h18v2H3zm0 5h18v2H3zm0 5h18v2H3z"/></svg> </label> <div class=md-header__title data-md-component=header-title> <div class=md-header__ellipsis> <div class=md-header__topic> <span class=md-ellipsis> JSON for Modern C++ </span> </div> <div class=md-header__topic data-md-component=header-topic> <span class=md-ellipsis> get </span> </div> </div> </div> <form class=md-header__option data-md-component=palette> <input class=md-option data-md-color-media="(prefers-color-scheme: light)" data-md-color-scheme=default data-md-color-primary=indigo data-md-color-accent=indigo aria-label="Switch to dark mode" type=radio name=__palette id=__palette_0> <label class="md-header__button md-icon" title="Switch to dark mode" for=__palette_1 hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a4 4 0 0 0-4 4 4 4 0 0 0 4 4 4 4 0 0 0 4-4 4 4 0 0 0-4-4m0 10a6 6 0 0 1-6-6 6 6 0 0 1 6-6 6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12z"/></svg> </label> <input class=md-option data-md-color-media="(prefers-color-scheme: dark)" data-md-color-scheme=slate data-md-color-primary=indigo data-md-color-accent=indigo aria-label="Switch to light mode" type=radio name=__palette id=__palette_1> <label class="md-header__button md-icon" title="Switch to light mode" for=__palette_0 hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 18c-.89 0-1.74-.2-2.5-.55C11.56 16.5 13 14.42 13 12s-1.44-4.5-3.5-5.45C10.26 6.2 11.11 6 12 6a6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12z"/></svg> </label> </form> <script>var palette=__md_get("__palette");if(palette&&palette.color){if("(prefers-color-scheme)"===palette.color.media){var media=matchMedia("(prefers-color-scheme: light)"),input=document.querySelector(media.matches?"[data-md-color-media='(prefers-color-scheme: light)']":"[data-md-color-media='(prefers-color-scheme: dark)']");palette.color.media=input.getAttribute("data-md-color-media"),palette.color.scheme=input.getAttribute("data-md-color-scheme"),palette.color.primary=input.getAttribute("data-md-color-primary"),palette.color.accent=input.getAttribute("data-md-color-accent")}for(var[key,value]of Object.entries(palette.color))document.body.setAttribute("data-md-color-"+key,value)}</script> <label class="md-header__button md-icon" for=__search> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg> </label> <div class=md-search data-md-component=search role=dialog> <label class=md-search__overlay for=__search></label> <div class=md-search__inner role=search> <form class=md-search__form name=search> <input type=text class=md-search__input name=query aria-label=Search placeholder=Search autocapitalize=off autocorrect=off autocomplete=off spellcheck=false data-md-component=search-query required> <label class="md-search__icon md-icon" for=__search> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11z"/></svg> </label> <nav class=md-search__options aria-label=Search> <button type=reset class="md-search__icon md-icon" title=Clear aria-label=Clear tabindex=-1> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z"/></svg> </button> </nav> </form> <div class=md-search__output> <div class=md-search__scrollwrap tabindex=0 data-md-scrollfix> <div class=md-search-result data-md-component=search-result> <div class=md-search-result__meta> Initializing search </div> <ol class=md-search-result__list role=presentation></ol> </div> </div> </div> </div> </div> <div class=md-header__source> <a href="https://github.com/nlohmann/json" title="Go to repository" class="md-source" data-md-component="source"> <div class="md-source__icon md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </div> <div class=md-source__repository> nlohmann/json </div> </a> </div> </nav> </header> <div class=md-container data-md-component=container> <nav class=md-tabs aria-label=Tabs data-md-component=tabs> <div class=md-grid> <ul class=md-tabs__list> <li class=md-tabs__item> <a href=../../.. class=md-tabs__link> Home </a> </li> <li class=md-tabs__item> <a href=../../../features/arbitrary_types/ class=md-tabs__link> Features </a> </li> <li class=md-tabs__item> <a href=../../../integration/ class=md-tabs__link> Integration </a> </li> <li class="md-tabs__item md-tabs__item--active"> <a href=../ class=md-tabs__link> API Documentation </a> </li> <li class=md-tabs__item> <a href=../../../community/ class=md-tabs__link> Community </a> </li> </ul> </div> </nav> <main class=md-main data-md-component=main> <div class="md-main__inner md-grid"> <div class="md-sidebar md-sidebar--primary" data-md-component=sidebar data-md-type=navigation> <div class=md-sidebar__scrollwrap> <div class=md-sidebar__inner> <nav class="md-nav md-nav--primary md-nav--lifted" aria-label=Navigation data-md-level=0> <label class=md-nav__title for=__drawer> <a href=../../.. title="JSON for Modern C++" class="md-nav__button md-logo" aria-label="JSON for Modern C++" data-md-component=logo> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54"/></svg> </a> JSON for Modern C++ </label> <div class=md-nav__source> <a href="https://github.com/nlohmann/json" title="Go to repository" class="md-source" data-md-component="source"> <div class="md-source__icon md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </div> <div class=md-source__repository> nlohmann/json </div> </a> </div> <ul class=md-nav__list data-md-scrollfix> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_1> <div class="md-nav__link md-nav__container"> <a href=../../.. class="md-nav__link "> <span class=md-ellipsis> Home </span> </a> <label class="md-nav__link " for=__nav_1 id=__nav_1_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_1_label aria-expanded=false> <label class=md-nav__title for=__nav_1> <span class="md-nav__icon md-icon"></span> Home </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../home/license/ class=md-nav__link> <span class=md-ellipsis> License </span> </a> </li> <li class=md-nav__item> <a href=../../../home/faq/ class=md-nav__link> <span class=md-ellipsis> FAQ </span> </a> </li> <li class=md-nav__item> <a href=../../../home/exceptions/ class=md-nav__link> <span class=md-ellipsis> Exceptions </span> </a> </li> <li class=md-nav__item> <a href=../../../home/releases/ class=md-nav__link> <span class=md-ellipsis> Releases </span> </a> </li> <li class=md-nav__item> <a href=../../../home/design_goals/ class=md-nav__link> <span class=md-ellipsis> Design goals </span> </a> </li> <li class=md-nav__item> <a href=../../../home/architecture/ class=md-nav__link> <span class=md-ellipsis> Architecture </span> </a> </li> <li class=md-nav__item> <a href=../../../home/customers/ class=md-nav__link> <span class=md-ellipsis> Customers </span> </a> </li> <li class=md-nav__item> <a href=../../../home/sponsors/ class=md-nav__link> <span class=md-ellipsis> Sponsors </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2> <label class=md-nav__link for=__nav_2 id=__nav_2_label tabindex=0> <span class=md-ellipsis> Features </span> <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_2_label aria-expanded=false> <label class=md-nav__title for=__nav_2> <span class="md-nav__icon md-icon"></span> Features </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/arbitrary_types/ class=md-nav__link> <span class=md-ellipsis> Arbitrary Type Conversions </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_2> <div class="md-nav__link md-nav__container"> <a href=../../../features/binary_formats/ class="md-nav__link "> <span class=md-ellipsis> Binary Formats </span> </a> <label class="md-nav__link " for=__nav_2_2 id=__nav_2_2_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_2_label aria-expanded=false> <label class=md-nav__title for=__nav_2_2> <span class="md-nav__icon md-icon"></span> Binary Formats </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/binary_formats/bjdata/ class=md-nav__link> <span class=md-ellipsis> BJData </span> </a> </li> <li class=md-nav__item> <a href=../../../features/binary_formats/bson/ class=md-nav__link> <span class=md-ellipsis> BSON </span> </a> </li> <li class=md-nav__item> <a href=../../../features/binary_formats/cbor/ class=md-nav__link> <span class=md-ellipsis> CBOR </span> </a> </li> <li class=md-nav__item> <a href=../../../features/binary_formats/messagepack/ class=md-nav__link> <span class=md-ellipsis> MessagePack </span> </a> </li> <li class=md-nav__item> <a href=../../../features/binary_formats/ubjson/ class=md-nav__link> <span class=md-ellipsis> UBJSON </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../../features/binary_values/ class=md-nav__link> <span class=md-ellipsis> Binary Values </span> </a> </li> <li class=md-nav__item> <a href=../../../features/comments/ class=md-nav__link> <span class=md-ellipsis> Comments </span> </a> </li> <li class=md-nav__item> <a href=../../../features/trailing_commas/ class=md-nav__link> <span class=md-ellipsis> Trailing Commas </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_6> <div class="md-nav__link md-nav__container"> <a href=../../../features/element_access/ class="md-nav__link "> <span class=md-ellipsis> Element Access </span> </a> <label class="md-nav__link " for=__nav_2_6 id=__nav_2_6_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_6_label aria-expanded=false> <label class=md-nav__title for=__nav_2_6> <span class="md-nav__icon md-icon"></span> Element Access </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/element_access/unchecked_access/ class=md-nav__link> <span class=md-ellipsis> Unchecked access: operator[] </span> </a> </li> <li class=md-nav__item> <a href=../../../features/element_access/checked_access/ class=md-nav__link> <span class=md-ellipsis> Checked access: at </span> </a> </li> <li class=md-nav__item> <a href=../../../features/element_access/default_value/ class=md-nav__link> <span class=md-ellipsis> Access with default value: value </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../../features/iterators/ class=md-nav__link> <span class=md-ellipsis> Iterators </span> </a> </li> <li class=md-nav__item> <a href=../../../features/json_pointer/ class=md-nav__link> <span class=md-ellipsis> JSON Pointer </span> </a> </li> <li class=md-nav__item> <a href=../../../features/json_patch/ class=md-nav__link> <span class=md-ellipsis> JSON Patch and Diff </span> </a> </li> <li class=md-nav__item> <a href=../../../features/merge_patch/ class=md-nav__link> <span class=md-ellipsis> JSON Merge Patch </span> </a> </li> <li class=md-nav__item> <a href=../../../features/modules/ class=md-nav__link> <span class=md-ellipsis> Modules </span> </a> </li> <li class=md-nav__item> <a href=../../../features/namespace/ class=md-nav__link> <span class=md-ellipsis> nlohmann Namespace </span> </a> </li> <li class=md-nav__item> <a href=../../../features/object_order/ class=md-nav__link> <span class=md-ellipsis> Object Order </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_14> <div class="md-nav__link md-nav__container"> <a href=../../../features/parsing/ class="md-nav__link "> <span class=md-ellipsis> Parsing </span> </a> <label class="md-nav__link " for=__nav_2_14 id=__nav_2_14_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_14_label aria-expanded=false> <label class=md-nav__title for=__nav_2_14> <span class="md-nav__icon md-icon"></span> Parsing </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/parsing/json_lines/ class=md-nav__link> <span class=md-ellipsis> JSON Lines </span> </a> </li> <li class=md-nav__item> <a href=../../../features/parsing/parse_exceptions/ class=md-nav__link> <span class=md-ellipsis> Parsing and Exceptions </span> </a> </li> <li class=md-nav__item> <a href=../../../features/parsing/parser_callbacks/ class=md-nav__link> <span class=md-ellipsis> Parser Callbacks </span> </a> </li> <li class=md-nav__item> <a href=../../../features/parsing/sax_interface/ class=md-nav__link> <span class=md-ellipsis> SAX Interface </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../../features/assertions/ class=md-nav__link> <span class=md-ellipsis> Runtime Assertions </span> </a> </li> <li class=md-nav__item> <a href=../../../features/enum_conversion/ class=md-nav__link> <span class=md-ellipsis> Specializing enum conversion </span> </a> </li> <li class=md-nav__item> <a href=../../../features/macros/ class=md-nav__link> <span class=md-ellipsis> Supported Macros </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_18> <div class="md-nav__link md-nav__container"> <a href=../../../features/types/ class="md-nav__link "> <span class=md-ellipsis> Types </span> </a> <label class="md-nav__link " for=__nav_2_18 id=__nav_2_18_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_18_label aria-expanded=false> <label class=md-nav__title for=__nav_2_18> <span class="md-nav__icon md-icon"></span> Types </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/types/number_handling/ class=md-nav__link> <span class=md-ellipsis> Number Handling </span> </a> </li> </ul> </nav> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_3> <div class="md-nav__link md-nav__container"> <a href=../../../integration/ class="md-nav__link "> <span class=md-ellipsis> Integration </span> </a> <label class="md-nav__link " for=__nav_3 id=__nav_3_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_3_label aria-expanded=false> <label class=md-nav__title for=__nav_3> <span class="md-nav__icon md-icon"></span> Integration </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../integration/migration_guide/ class=md-nav__link> <span class=md-ellipsis> Migration Guide </span> </a> </li> <li class=md-nav__item> <a href=../../../integration/cmake/ class=md-nav__link> <span class=md-ellipsis> CMake </span> </a> </li> <li class=md-nav__item> <a href=../../../integration/package_managers/ class=md-nav__link> <span class=md-ellipsis> Package Managers </span> </a> </li> <li class=md-nav__item> <a href=../../../integration/pkg-config/ class=md-nav__link> <span class=md-ellipsis> Pkg-config </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--active md-nav__item--section md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4 checked> <label class=md-nav__link for=__nav_4 id=__nav_4_label tabindex> <span class=md-ellipsis> API Documentation </span> <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_4_label aria-expanded=true> <label class=md-nav__title for=__nav_4> <span class="md-nav__icon md-icon"></span> API Documentation </label> <ul class=md-nav__list data-md-scrollfix> <li class="md-nav__item md-nav__item--active md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_1 checked> <div class="md-nav__link md-nav__container"> <a href=../ class="md-nav__link "> <span class=md-ellipsis> basic_json </span> </a> <label class="md-nav__link " for=__nav_4_1 id=__nav_4_1_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_1_label aria-expanded=true> <label class=md-nav__title for=__nav_4_1> <span class="md-nav__icon md-icon"></span> basic_json </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../basic_json/ class=md-nav__link> <span class=md-ellipsis> (Constructor) </span> </a> </li> <li class=md-nav__item> <a href=../~basic_json/ class=md-nav__link> <span class=md-ellipsis> (Destructor) </span> </a> </li> <li class=md-nav__item> <a href=../accept/ class=md-nav__link> <span class=md-ellipsis> accept </span> </a> </li> <li class=md-nav__item> <a href=../array/ class=md-nav__link> <span class=md-ellipsis> array </span> </a> </li> <li class=md-nav__item> <a href=../array_t/ class=md-nav__link> <span class=md-ellipsis> array_t </span> </a> </li> <li class=md-nav__item> <a href=../at/ class=md-nav__link> <span class=md-ellipsis> at </span> </a> </li> <li class=md-nav__item> <a href=../back/ class=md-nav__link> <span class=md-ellipsis> back </span> </a> </li> <li class=md-nav__item> <a href=../begin/ class=md-nav__link> <span class=md-ellipsis> begin </span> </a> </li> <li class=md-nav__item> <a href=../binary/ class=md-nav__link> <span class=md-ellipsis> binary </span> </a> </li> <li class=md-nav__item> <a href=../binary_t/ class=md-nav__link> <span class=md-ellipsis> binary_t </span> </a> </li> <li class=md-nav__item> <a href=../boolean_t/ class=md-nav__link> <span class=md-ellipsis> boolean_t </span> </a> </li> <li class=md-nav__item> <a href=../cbegin/ class=md-nav__link> <span class=md-ellipsis> cbegin </span> </a> </li> <li class=md-nav__item> <a href=../cbor_tag_handler_t/ class=md-nav__link> <span class=md-ellipsis> cbor_tag_handler_t </span> </a> </li> <li class=md-nav__item> <a href=../cend/ class=md-nav__link> <span class=md-ellipsis> cend </span> </a> </li> <li class=md-nav__item> <a href=../clear/ class=md-nav__link> <span class=md-ellipsis> clear </span> </a> </li> <li class=md-nav__item> <a href=../contains/ class=md-nav__link> <span class=md-ellipsis> contains </span> </a> </li> <li class=md-nav__item> <a href=../count/ class=md-nav__link> <span class=md-ellipsis> count </span> </a> </li> <li class=md-nav__item> <a href=../crbegin/ class=md-nav__link> <span class=md-ellipsis> crbegin </span> </a> </li> <li class=md-nav__item> <a href=../crend/ class=md-nav__link> <span class=md-ellipsis> crend </span> </a> </li> <li class=md-nav__item> <a href=../default_object_comparator_t/ class=md-nav__link> <span class=md-ellipsis> default_object_comparator_t </span> </a> </li> <li class=md-nav__item> <a href=../diff/ class=md-nav__link> <span class=md-ellipsis> diff </span> </a> </li> <li class=md-nav__item> <a href=../dump/ class=md-nav__link> <span class=md-ellipsis> dump </span> </a> </li> <li class=md-nav__item> <a href=../emplace/ class=md-nav__link> <span class=md-ellipsis> emplace </span> </a> </li> <li class=md-nav__item> <a href=../emplace_back/ class=md-nav__link> <span class=md-ellipsis> emplace_back </span> </a> </li> <li class=md-nav__item> <a href=../empty/ class=md-nav__link> <span class=md-ellipsis> empty </span> </a> </li> <li class=md-nav__item> <a href=../end/ class=md-nav__link> <span class=md-ellipsis> end </span> </a> </li> <li class=md-nav__item> <a href=../end_pos/ class=md-nav__link> <span class=md-ellipsis> end_pos </span> </a> </li> <li class=md-nav__item> <a href=../erase/ class=md-nav__link> <span class=md-ellipsis> erase </span> </a> </li> <li class=md-nav__item> <a href=../error_handler_t/ class=md-nav__link> <span class=md-ellipsis> error_handler_t </span> </a> </li> <li class=md-nav__item> <a href=../exception/ class=md-nav__link> <span class=md-ellipsis> exception </span> </a> </li> <li class=md-nav__item> <a href=../find/ class=md-nav__link> <span class=md-ellipsis> find </span> </a> </li> <li class=md-nav__item> <a href=../flatten/ class=md-nav__link> <span class=md-ellipsis> flatten </span> </a> </li> <li class=md-nav__item> <a href=../from_bjdata/ class=md-nav__link> <span class=md-ellipsis> from_bjdata </span> </a> </li> <li class=md-nav__item> <a href=../from_bson/ class=md-nav__link> <span class=md-ellipsis> from_bson </span> </a> </li> <li class=md-nav__item> <a href=../from_cbor/ class=md-nav__link> <span class=md-ellipsis> from_cbor </span> </a> </li> <li class=md-nav__item> <a href=../from_msgpack/ class=md-nav__link> <span class=md-ellipsis> from_msgpack </span> </a> </li> <li class=md-nav__item> <a href=../from_ubjson/ class=md-nav__link> <span class=md-ellipsis> from_ubjson </span> </a> </li> <li class=md-nav__item> <a href=../front/ class=md-nav__link> <span class=md-ellipsis> front </span> </a> </li> <li class="md-nav__item md-nav__item--active"> <input class="md-nav__toggle md-toggle" type=checkbox id=__toc> <label class="md-nav__link md-nav__link--active" for=__toc> <span class=md-ellipsis> get </span> <span class="md-nav__icon md-icon"></span> </label> <a href=./ class="md-nav__link md-nav__link--active"> <span class=md-ellipsis> get </span> </a> <nav class="md-nav md-nav--secondary" aria-label="Table of contents"> <label class=md-nav__title for=__toc> <span class="md-nav__icon md-icon"></span> Table of contents </label> <ul class=md-nav__list data-md-component=toc data-md-scrollfix> <li class=md-nav__item> <a href=#template-parameters class=md-nav__link> <span class=md-ellipsis> Template parameters </span> </a> </li> <li class=md-nav__item> <a href=#return-value class=md-nav__link> <span class=md-ellipsis> Return value </span> </a> </li> <li class=md-nav__item> <a href=#exceptions class=md-nav__link> <span class=md-ellipsis> Exceptions </span> </a> </li> <li class=md-nav__item> <a href=#notes class=md-nav__link> <span class=md-ellipsis> Notes </span> </a> </li> <li class=md-nav__item> <a href=#examples class=md-nav__link> <span class=md-ellipsis> Examples </span> </a> </li> <li class=md-nav__item> <a href=#version-history class=md-nav__link> <span class=md-ellipsis> Version history </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../get_allocator/ class=md-nav__link> <span class=md-ellipsis> get_allocator </span> </a> </li> <li class=md-nav__item> <a href=../get_binary/ class=md-nav__link> <span class=md-ellipsis> get_binary </span> </a> </li> <li class=md-nav__item> <a href=../get_ptr/ class=md-nav__link> <span class=md-ellipsis> get_ptr </span> </a> </li> <li class=md-nav__item> <a href=../get_ref/ class=md-nav__link> <span class=md-ellipsis> get_ref </span> </a> </li> <li class=md-nav__item> <a href=../get_to/ class=md-nav__link> <span class=md-ellipsis> get_to </span> </a> </li> <li class=md-nav__item> <a href=../std_hash/ class=md-nav__link> <span class=md-ellipsis> std::hash&lt;basic_json&gt; </span> </a> </li> <li class=md-nav__item> <a href=../input_format_t/ class=md-nav__link> <span class=md-ellipsis> input_format_t </span> </a> </li> <li class=md-nav__item> <a href=../insert/ class=md-nav__link> <span class=md-ellipsis> insert </span> </a> </li> <li class=md-nav__item> <a href=../invalid_iterator/ class=md-nav__link> <span class=md-ellipsis> invalid_iterator </span> </a> </li> <li class=md-nav__item> <a href=../is_array/ class=md-nav__link> <span class=md-ellipsis> is_array </span> </a> </li> <li class=md-nav__item> <a href=../is_binary/ class=md-nav__link> <span class=md-ellipsis> is_binary </span> </a> </li> <li class=md-nav__item> <a href=../is_boolean/ class=md-nav__link> <span class=md-ellipsis> is_boolean </span> </a> </li> <li class=md-nav__item> <a href=../is_discarded/ class=md-nav__link> <span class=md-ellipsis> is_discarded </span> </a> </li> <li class=md-nav__item> <a href=../is_null/ class=md-nav__link> <span class=md-ellipsis> is_null </span> </a> </li> <li class=md-nav__item> <a href=../is_number/ class=md-nav__link> <span class=md-ellipsis> is_number </span> </a> </li> <li class=md-nav__item> <a href=../is_number_float/ class=md-nav__link> <span class=md-ellipsis> is_number_float </span> </a> </li> <li class=md-nav__item> <a href=../is_number_integer/ class=md-nav__link> <span class=md-ellipsis> is_number_integer </span> </a> </li> <li class=md-nav__item> <a href=../is_number_unsigned/ class=md-nav__link> <span class=md-ellipsis> is_number_unsigned </span> </a> </li> <li class=md-nav__item> <a href=../is_object/ class=md-nav__link> <span class=md-ellipsis> is_object </span> </a> </li> <li class=md-nav__item> <a href=../is_primitive/ class=md-nav__link> <span class=md-ellipsis> is_primitive </span> </a> </li> <li class=md-nav__item> <a href=../is_string/ class=md-nav__link> <span class=md-ellipsis> is_string </span> </a> </li> <li class=md-nav__item> <a href=../is_structured/ class=md-nav__link> <span class=md-ellipsis> is_structured </span> </a> </li> <li class=md-nav__item> <a href=../items/ class=md-nav__link> <span class=md-ellipsis> items </span> </a> </li> <li class=md-nav__item> <a href=../json_base_class_t/ class=md-nav__link> <span class=md-ellipsis> json_base_class_t </span> </a> </li> <li class=md-nav__item> <a href=../json_serializer/ class=md-nav__link> <span class=md-ellipsis> json_serializer </span> </a> </li> <li class=md-nav__item> <a href=../max_size/ class=md-nav__link> <span class=md-ellipsis> max_size </span> </a> </li> <li class=md-nav__item> <a href=../meta/ class=md-nav__link> <span class=md-ellipsis> meta </span> </a> </li> <li class=md-nav__item> <a href=../merge_patch/ class=md-nav__link> <span class=md-ellipsis> merge_patch </span> </a> </li> <li class=md-nav__item> <a href=../number_float_t/ class=md-nav__link> <span class=md-ellipsis> number_float_t </span> </a> </li> <li class=md-nav__item> <a href=../number_integer_t/ class=md-nav__link> <span class=md-ellipsis> number_integer_t </span> </a> </li> <li class=md-nav__item> <a href=../number_unsigned_t/ class=md-nav__link> <span class=md-ellipsis> number_unsigned_t </span> </a> </li> <li class=md-nav__item> <a href=../object/ class=md-nav__link> <span class=md-ellipsis> object </span> </a> </li> <li class=md-nav__item> <a href=../object_comparator_t/ class=md-nav__link> <span class=md-ellipsis> object_comparator_t </span> </a> </li> <li class=md-nav__item> <a href=../object_t/ class=md-nav__link> <span class=md-ellipsis> object_t </span> </a> </li> <li class=md-nav__item> <a href=../operator_ValueType/ class=md-nav__link> <span class=md-ellipsis> operator ValueType </span> </a> </li> <li class=md-nav__item> <a href=../operator_value_t/ class=md-nav__link> <span class=md-ellipsis> operator value_t </span> </a> </li> <li class=md-nav__item> <a href=../operator%5B%5D/ class=md-nav__link> <span class=md-ellipsis> operator[] </span> </a> </li> <li class=md-nav__item> <a href=../operator%3D/ class=md-nav__link> <span class=md-ellipsis> operator= </span> </a> </li> <li class=md-nav__item> <a href=../operator%2B%3D/ class=md-nav__link> <span class=md-ellipsis> operator+= </span> </a> </li> <li class=md-nav__item> <a href=../operator_eq/ class=md-nav__link> <span class=md-ellipsis> operator== </span> </a> </li> <li class=md-nav__item> <a href=../operator_ne/ class=md-nav__link> <span class=md-ellipsis> operator!= </span> </a> </li> <li class=md-nav__item> <a href=../operator_lt/ class=md-nav__link> <span class=md-ellipsis> operator< </span> </a> </li> <li class=md-nav__item> <a href=../operator_gt/ class=md-nav__link> <span class=md-ellipsis> operator> </span> </a> </li> <li class=md-nav__item> <a href=../operator_le/ class=md-nav__link> <span class=md-ellipsis> operator<= </span> </a> </li> <li class=md-nav__item> <a href=../operator_ge/ class=md-nav__link> <span class=md-ellipsis> operator>= </span> </a> </li> <li class=md-nav__item> <a href=../operator_spaceship/ class=md-nav__link> <span class=md-ellipsis> operator<=> </span> </a> </li> <li class=md-nav__item> <a href=../out_of_range/ class=md-nav__link> <span class=md-ellipsis> out_of_range </span> </a> </li> <li class=md-nav__item> <a href=../other_error/ class=md-nav__link> <span class=md-ellipsis> other_error </span> </a> </li> <li class=md-nav__item> <a href=../parse/ class=md-nav__link> <span class=md-ellipsis> parse </span> </a> </li> <li class=md-nav__item> <a href=../parse_error/ class=md-nav__link> <span class=md-ellipsis> parse_error </span> </a> </li> <li class=md-nav__item> <a href=../parse_event_t/ class=md-nav__link> <span class=md-ellipsis> parse_event_t </span> </a> </li> <li class=md-nav__item> <a href=../parser_callback_t/ class=md-nav__link> <span class=md-ellipsis> parser_callback_t </span> </a> </li> <li class=md-nav__item> <a href=../patch/ class=md-nav__link> <span class=md-ellipsis> patch </span> </a> </li> <li class=md-nav__item> <a href=../patch_inplace/ class=md-nav__link> <span class=md-ellipsis> patch_inplace </span> </a> </li> <li class=md-nav__item> <a href=../push_back/ class=md-nav__link> <span class=md-ellipsis> push_back </span> </a> </li> <li class=md-nav__item> <a href=../rbegin/ class=md-nav__link> <span class=md-ellipsis> rbegin </span> </a> </li> <li class=md-nav__item> <a href=../rend/ class=md-nav__link> <span class=md-ellipsis> rend </span> </a> </li> <li class=md-nav__item> <a href=../sax_parse/ class=md-nav__link> <span class=md-ellipsis> sax_parse </span> </a> </li> <li class=md-nav__item> <a href=../size/ class=md-nav__link> <span class=md-ellipsis> size </span> </a> </li> <li class=md-nav__item> <a href=../start_pos/ class=md-nav__link> <span class=md-ellipsis> start_pos </span> </a> </li> <li class=md-nav__item> <a href=../string_t/ class=md-nav__link> <span class=md-ellipsis> string_t </span> </a> </li> <li class=md-nav__item> <a href=../swap/ class=md-nav__link> <span class=md-ellipsis> swap </span> </a> </li> <li class=md-nav__item> <a href=../std_swap/ class=md-nav__link> <span class=md-ellipsis> std::swap&lt;basic_json&gt; </span> </a> </li> <li class=md-nav__item> <a href=../to_bjdata/ class=md-nav__link> <span class=md-ellipsis> to_bjdata </span> </a> </li> <li class=md-nav__item> <a href=../to_bson/ class=md-nav__link> <span class=md-ellipsis> to_bson </span> </a> </li> <li class=md-nav__item> <a href=../to_cbor/ class=md-nav__link> <span class=md-ellipsis> to_cbor </span> </a> </li> <li class=md-nav__item> <a href=../to_msgpack/ class=md-nav__link> <span class=md-ellipsis> to_msgpack </span> </a> </li> <li class=md-nav__item> <a href=../to_string/ class=md-nav__link> <span class=md-ellipsis> to_string </span> </a> </li> <li class=md-nav__item> <a href=../to_ubjson/ class=md-nav__link> <span class=md-ellipsis> to_ubjson </span> </a> </li> <li class=md-nav__item> <a href=../type/ class=md-nav__link> <span class=md-ellipsis> type </span> </a> </li> <li class=md-nav__item> <a href=../type_error/ class=md-nav__link> <span class=md-ellipsis> type_error </span> </a> </li> <li class=md-nav__item> <a href=../type_name/ class=md-nav__link> <span class=md-ellipsis> type_name </span> </a> </li> <li class=md-nav__item> <a href=../unflatten/ class=md-nav__link> <span class=md-ellipsis> unflatten </span> </a> </li> <li class=md-nav__item> <a href=../update/ class=md-nav__link> <span class=md-ellipsis> update </span> </a> </li> <li class=md-nav__item> <a href=../value/ class=md-nav__link> <span class=md-ellipsis> value </span> </a> </li> <li class=md-nav__item> <a href=../value_t/ class=md-nav__link> <span class=md-ellipsis> value_t </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_2> <div class="md-nav__link md-nav__container"> <a href=../../byte_container_with_subtype/ class="md-nav__link "> <span class=md-ellipsis> byte_container_with_subtype </span> </a> <label class="md-nav__link " for=__nav_4_2 id=__nav_4_2_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_2_label aria-expanded=false> <label class=md-nav__title for=__nav_4_2> <span class="md-nav__icon md-icon"></span> byte_container_with_subtype </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../byte_container_with_subtype/byte_container_with_subtype/ class=md-nav__link> <span class=md-ellipsis> (constructor) </span> </a> </li> <li class=md-nav__item> <a href=../../byte_container_with_subtype/clear_subtype/ class=md-nav__link> <span class=md-ellipsis> clear_subtype </span> </a> </li> <li class=md-nav__item> <a href=../../byte_container_with_subtype/has_subtype/ class=md-nav__link> <span class=md-ellipsis> has_subtype </span> </a> </li> <li class=md-nav__item> <a href=../../byte_container_with_subtype/set_subtype/ class=md-nav__link> <span class=md-ellipsis> set_subtype </span> </a> </li> <li class=md-nav__item> <a href=../../byte_container_with_subtype/subtype/ class=md-nav__link> <span class=md-ellipsis> subtype </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_3> <div class="md-nav__link md-nav__container"> <a href=../../adl_serializer/ class="md-nav__link "> <span class=md-ellipsis> adl_serializer </span> </a> <label class="md-nav__link " for=__nav_4_3 id=__nav_4_3_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_3_label aria-expanded=false> <label class=md-nav__title for=__nav_4_3> <span class="md-nav__icon md-icon"></span> adl_serializer </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../adl_serializer/from_json/ class=md-nav__link> <span class=md-ellipsis> from_json </span> </a> </li> <li class=md-nav__item> <a href=../../adl_serializer/to_json/ class=md-nav__link> <span class=md-ellipsis> to_json </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../json/ class=md-nav__link> <span class=md-ellipsis> json </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_5> <div class="md-nav__link md-nav__container"> <a href=../../json_pointer/ class="md-nav__link "> <span class=md-ellipsis> json_pointer </span> </a> <label class="md-nav__link " for=__nav_4_5 id=__nav_4_5_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_5_label aria-expanded=false> <label class=md-nav__title for=__nav_4_5> <span class="md-nav__icon md-icon"></span> json_pointer </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../json_pointer/json_pointer/ class=md-nav__link> <span class=md-ellipsis> (Constructor) </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/back/ class=md-nav__link> <span class=md-ellipsis> back </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/empty/ class=md-nav__link> <span class=md-ellipsis> empty </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/front/ class=md-nav__link> <span class=md-ellipsis> front </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_string_t/ class=md-nav__link> <span class=md-ellipsis> operator string_t </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_eq/ class=md-nav__link> <span class=md-ellipsis> operator== </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_ne/ class=md-nav__link> <span class=md-ellipsis> operator!= </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_slash/ class=md-nav__link> <span class=md-ellipsis> operator/ </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_slasheq/ class=md-nav__link> <span class=md-ellipsis> operator/= </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/parent_pointer/ class=md-nav__link> <span class=md-ellipsis> parent_pointer </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/pop_back/ class=md-nav__link> <span class=md-ellipsis> pop_back </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/pop_front/ class=md-nav__link> <span class=md-ellipsis> pop_front </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/push_back/ class=md-nav__link> <span class=md-ellipsis> push_back </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/push_front/ class=md-nav__link> <span class=md-ellipsis> push_front </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/string_t/ class=md-nav__link> <span class=md-ellipsis> string_t </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/to_string/ class=md-nav__link> <span class=md-ellipsis> to_string </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_6> <div class="md-nav__link md-nav__container"> <a href=../../json_sax/ class="md-nav__link "> <span class=md-ellipsis> json_sax </span> </a> <label class="md-nav__link " for=__nav_4_6 id=__nav_4_6_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_6_label aria-expanded=false> <label class=md-nav__title for=__nav_4_6> <span class="md-nav__icon md-icon"></span> json_sax </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../json_sax/binary/ class=md-nav__link> <span class=md-ellipsis> binary </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/boolean/ class=md-nav__link> <span class=md-ellipsis> boolean </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/end_array/ class=md-nav__link> <span class=md-ellipsis> end_array </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/end_object/ class=md-nav__link> <span class=md-ellipsis> end_object </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/key/ class=md-nav__link> <span class=md-ellipsis> key </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/null/ class=md-nav__link> <span class=md-ellipsis> null </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/number_float/ class=md-nav__link> <span class=md-ellipsis> number_float </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/number_integer/ class=md-nav__link> <span class=md-ellipsis> number_integer </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/number_unsigned/ class=md-nav__link> <span class=md-ellipsis> number_unsigned </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/parse_error/ class=md-nav__link> <span class=md-ellipsis> parse_error </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/start_array/ class=md-nav__link> <span class=md-ellipsis> start_array </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/start_object/ class=md-nav__link> <span class=md-ellipsis> start_object </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/string/ class=md-nav__link> <span class=md-ellipsis> string </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../operator_ltlt/ class=md-nav__link> <span class=md-ellipsis> operator<<(basic_json), operator<<(json_pointer) </span> </a> </li> <li class=md-nav__item> <a href=../../operator_gtgt/ class=md-nav__link> <span class=md-ellipsis> operator>>(basic_json) </span> </a> </li> <li class=md-nav__item> <a href=../../operator_literal_json/ class=md-nav__link> <span class=md-ellipsis> operator""_json </span> </a> </li> <li class=md-nav__item> <a href=../../operator_literal_json_pointer/ class=md-nav__link> <span class=md-ellipsis> operator""_json_pointer </span> </a> </li> <li class=md-nav__item> <a href=../../ordered_json/ class=md-nav__link> <span class=md-ellipsis> ordered_json </span> </a> </li> <li class=md-nav__item> <a href=../../ordered_map/ class=md-nav__link> <span class=md-ellipsis> ordered_map </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_13> <div class="md-nav__link md-nav__container"> <a href=../../macros/ class="md-nav__link "> <span class=md-ellipsis> macros </span> </a> <label class="md-nav__link " for=__nav_4_13 id=__nav_4_13_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_13_label aria-expanded=false> <label class=md-nav__title for=__nav_4_13> <span class="md-nav__icon md-icon"></span> macros </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../macros/json_assert/ class=md-nav__link> <span class=md-ellipsis> JSON_ASSERT </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_brace_init_copy_semantics/ class=md-nav__link> <span class=md-ellipsis> JSON_BRACE_INIT_COPY_SEMANTICS </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_throw_user/ class=md-nav__link> <span class=md-ellipsis> JSON_CATCH_USER, JSON_THROW_USER, JSON_TRY_USER </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_diagnostics/ class=md-nav__link> <span class=md-ellipsis> JSON_DIAGNOSTICS </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_diagnostic_positions/ class=md-nav__link> <span class=md-ellipsis> JSON_DIAGNOSTIC_POSITIONS </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_disable_enum_serialization/ class=md-nav__link> <span class=md-ellipsis> JSON_DISABLE_ENUM_SERIALIZATION </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_has_cpp_11/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_CPP_11, JSON_HAS_CPP_14, JSON_HAS_CPP_17, JSON_HAS_CPP_20 </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_has_filesystem/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_EXPERIMENTAL_FILESYSTEM, JSON_HAS_FILESYSTEM </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_has_ranges/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_RANGES </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_has_static_rtti/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_STATIC_RTTI </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_has_three_way_comparison/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_THREE_WAY_COMPARISON </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_noexception/ class=md-nav__link> <span class=md-ellipsis> JSON_NOEXCEPTION </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_no_io/ class=md-nav__link> <span class=md-ellipsis> JSON_NO_IO </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_skip_library_version_check/ class=md-nav__link> <span class=md-ellipsis> JSON_SKIP_LIBRARY_VERSION_CHECK </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_skip_unsupported_compiler_check/ class=md-nav__link> <span class=md-ellipsis> JSON_SKIP_UNSUPPORTED_COMPILER_CHECK </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_use_global_udls/ class=md-nav__link> <span class=md-ellipsis> JSON_USE_GLOBAL_UDLS </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_use_implicit_conversions/ class=md-nav__link> <span class=md-ellipsis> JSON_USE_IMPLICIT_CONVERSIONS </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_use_legacy_discarded_value_comparison/ class=md-nav__link> <span class=md-ellipsis> JSON_USE_LEGACY_DISCARDED_VALUE_COMPARISON </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_define_derived_type/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_ONLY_SERIALIZE, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_define_type_intrusive/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_TYPE_INTRUSIVE, NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_TYPE_INTRUSIVE_ONLY_SERIALIZE </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_define_type_non_intrusive/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_define_type_with_names/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_TYPE_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_namespace/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_NAMESPACE </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_namespace_begin/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_NAMESPACE_BEGIN, NLOHMANN_JSON_NAMESPACE_END </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_namespace_no_version/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_NAMESPACE_NO_VERSION </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_serialize_enum/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_SERIALIZE_ENUM </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_serialize_enum_strict/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_SERIALIZE_ENUM_STRICT </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_version_major/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_VERSION_MAJOR, NLOHMANN_JSON_VERSION_MINOR, NLOHMANN_JSON_VERSION_PATCH </span> </a> </li> </ul> </nav> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_5> <div class="md-nav__link md-nav__container"> <a href=../../../community/ class="md-nav__link "> <span class=md-ellipsis> Community </span> </a> <label class="md-nav__link " for=__nav_5 id=__nav_5_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_5_label aria-expanded=false> <label class=md-nav__title for=__nav_5> <span class="md-nav__icon md-icon"></span> Community </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../community/code_of_conduct/ class=md-nav__link> <span class=md-ellipsis> Code of Conduct </span> </a> </li> <li class=md-nav__item> <a href=../../../community/contribution_guidelines/ class=md-nav__link> <span class=md-ellipsis> Contribution Guidelines </span> </a> </li> <li class=md-nav__item> <a href=../../../community/quality_assurance/ class=md-nav__link> <span class=md-ellipsis> Quality assurance </span> </a> </li> <li class=md-nav__item> <a href=../../../community/governance/ class=md-nav__link> <span class=md-ellipsis> Governance </span> </a> </li> <li class=md-nav__item> <a href=../../../community/security_policy/ class=md-nav__link> <span class=md-ellipsis> Security Policy </span> </a> </li> </ul> </nav> </li> </ul> </nav> </div> </div> </div> <div class="md-sidebar md-sidebar--secondary" data-md-component=sidebar data-md-type=toc> <div class=md-sidebar__scrollwrap> <div class=md-sidebar__inner> <nav class="md-nav md-nav--secondary" aria-label="Table of contents"> <label class=md-nav__title for=__toc> <span class="md-nav__icon md-icon"></span> Table of contents </label> <ul class=md-nav__list data-md-component=toc data-md-scrollfix> <li class=md-nav__item> <a href=#template-parameters class=md-nav__link> <span class=md-ellipsis> Template parameters </span> </a> </li> <li class=md-nav__item> <a href=#return-value class=md-nav__link> <span class=md-ellipsis> Return value </span> </a> </li> <li class=md-nav__item> <a href=#exceptions class=md-nav__link> <span class=md-ellipsis> Exceptions </span> </a> </li> <li class=md-nav__item> <a href=#notes class=md-nav__link> <span class=md-ellipsis> Notes </span> </a> </li> <li class=md-nav__item> <a href=#examples class=md-nav__link> <span class=md-ellipsis> Examples </span> </a> </li> <li class=md-nav__item> <a href=#version-history class=md-nav__link> <span class=md-ellipsis> Version history </span> </a> </li> </ul> </nav> </div> </div> </div> <div class=md-content data-md-component=content> <article class="md-content__inner md-typeset"> <a href="https://github.com/nlohmann/json/edit/develop/docs/mkdocs/docs/api/basic_json/get.md" title="Edit this page" class="md-content__button md-icon" rel="edit"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M10 20H6V4h7v5h5v3.1l2-2V8l-6-6H6c-1.1 0-2 .9-2 2v16c0 1.1.9 2 2 2h4zm10.2-7c.1 0 .3.1.4.2l1.3 1.3c.2.2.2.6 0 .8l-1 1-2.1-2.1 1-1c.1-.1.2-.2.4-.2m0 3.9L14.1 23H12v-2.1l6.1-6.1z"/></svg> </a> <a href="https://github.com/nlohmann/json/raw/develop/docs/mkdocs/docs/api/basic_json/get.md" title="View source of this page" class="md-content__button md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M17 18c.56 0 1 .44 1 1s-.44 1-1 1-1-.44-1-1 .44-1 1-1m0-3c-2.73 0-5.06 1.66-6 4 .94 2.34 3.27 4 6 4s5.06-1.66 6-4c-.94-2.34-3.27-4-6-4m0 6.5a2.5 2.5 0 0 1-2.5-2.5 2.5 2.5 0 0 1 2.5-2.5 2.5 2.5 0 0 1 2.5 2.5 2.5 2.5 0 0 1-2.5 2.5M9.27 20H6V4h7v5h5v4.07c.7.08 1.36.25 2 .49V8l-6-6H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h4.5a8.2 8.2 0 0 1-1.23-2"/></svg> </a> <h1 id=nlohmannbasic_jsonget><small>nlohmann::basic_json::</small>get<a class=headerlink href=#nlohmannbasic_jsonget title="Permanent link">&para;</a></h1> <div class=highlight><pre><span></span><code><span class=c1>// (1)</span>
+<!doctype html><html lang=en class=no-js> <head><meta charset=utf-8><meta name=viewport content="width=device-width,initial-scale=1"><meta name=author content="Niels Lohmann"><link href="https://json.nlohmann.me/api/basic_json/get/" rel="canonical"><link href=../front/ rel=prev><link href=../get_allocator/ rel=next><link rel=icon href=../../../assets/images/favicon.png><meta name=generator content="mkdocs-1.6.1, mkdocs-material-9.7.6"><title>get - JSON for Modern C++</title><link rel=stylesheet href=../../../assets/stylesheets/main.484c7ddc.min.css><link rel=stylesheet href=../../../assets/stylesheets/palette.ab4e12ef.min.css><link rel="stylesheet" href="../../../assets/external/fonts.googleapis.com/css.61a430c9.css"><style>:root{--md-text-font:"Roboto";--md-code-font:"JetBrains Mono"}</style><link rel=stylesheet href=../../../css/custom.css><script>__md_scope=new URL("../../..",location),__md_hash=e=>[...e].reduce(((e,_)=>(e<<5)-e+_.charCodeAt(0)),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script></head> <body dir=ltr data-md-color-scheme=default data-md-color-primary=indigo data-md-color-accent=indigo> <input class=md-toggle data-md-toggle=drawer type=checkbox id=__drawer autocomplete=off> <input class=md-toggle data-md-toggle=search type=checkbox id=__search autocomplete=off> <label class=md-overlay for=__drawer></label> <div data-md-component=skip> <a href=#nlohmannbasic_jsonget class=md-skip> Skip to content </a> </div> <div data-md-component=announce> </div> <header class=md-header data-md-component=header> <nav class="md-header__inner md-grid" aria-label=Header> <a href=../../.. title="JSON for Modern C++" class="md-header__button md-logo" aria-label="JSON for Modern C++" data-md-component=logo> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54"/></svg> </a> <label class="md-header__button md-icon" for=__drawer> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M3 6h18v2H3zm0 5h18v2H3zm0 5h18v2H3z"/></svg> </label> <div class=md-header__title data-md-component=header-title> <div class=md-header__ellipsis> <div class=md-header__topic> <span class=md-ellipsis> JSON for Modern C++ </span> </div> <div class=md-header__topic data-md-component=header-topic> <span class=md-ellipsis> get </span> </div> </div> </div> <form class=md-header__option data-md-component=palette> <input class=md-option data-md-color-media="(prefers-color-scheme: light)" data-md-color-scheme=default data-md-color-primary=indigo data-md-color-accent=indigo aria-label="Switch to dark mode" type=radio name=__palette id=__palette_0> <label class="md-header__button md-icon" title="Switch to dark mode" for=__palette_1 hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a4 4 0 0 0-4 4 4 4 0 0 0 4 4 4 4 0 0 0 4-4 4 4 0 0 0-4-4m0 10a6 6 0 0 1-6-6 6 6 0 0 1 6-6 6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12z"/></svg> </label> <input class=md-option data-md-color-media="(prefers-color-scheme: dark)" data-md-color-scheme=slate data-md-color-primary=indigo data-md-color-accent=indigo aria-label="Switch to light mode" type=radio name=__palette id=__palette_1> <label class="md-header__button md-icon" title="Switch to light mode" for=__palette_0 hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 18c-.89 0-1.74-.2-2.5-.55C11.56 16.5 13 14.42 13 12s-1.44-4.5-3.5-5.45C10.26 6.2 11.11 6 12 6a6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12z"/></svg> </label> </form> <script>var palette=__md_get("__palette");if(palette&&palette.color){if("(prefers-color-scheme)"===palette.color.media){var media=matchMedia("(prefers-color-scheme: light)"),input=document.querySelector(media.matches?"[data-md-color-media='(prefers-color-scheme: light)']":"[data-md-color-media='(prefers-color-scheme: dark)']");palette.color.media=input.getAttribute("data-md-color-media"),palette.color.scheme=input.getAttribute("data-md-color-scheme"),palette.color.primary=input.getAttribute("data-md-color-primary"),palette.color.accent=input.getAttribute("data-md-color-accent")}for(var[key,value]of Object.entries(palette.color))document.body.setAttribute("data-md-color-"+key,value)}</script> <label class="md-header__button md-icon" for=__search> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg> </label> <div class=md-search data-md-component=search role=dialog> <label class=md-search__overlay for=__search></label> <div class=md-search__inner role=search> <form class=md-search__form name=search> <input type=text class=md-search__input name=query aria-label=Search placeholder=Search autocapitalize=off autocorrect=off autocomplete=off spellcheck=false data-md-component=search-query required> <label class="md-search__icon md-icon" for=__search> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11z"/></svg> </label> <nav class=md-search__options aria-label=Search> <button type=reset class="md-search__icon md-icon" title=Clear aria-label=Clear tabindex=-1> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z"/></svg> </button> </nav> </form> <div class=md-search__output> <div class=md-search__scrollwrap tabindex=0 data-md-scrollfix> <div class=md-search-result data-md-component=search-result> <div class=md-search-result__meta> Initializing search </div> <ol class=md-search-result__list role=presentation></ol> </div> </div> </div> </div> </div> <div class=md-header__source> <a href="https://github.com/nlohmann/json" title="Go to repository" class="md-source" data-md-component="source"> <div class="md-source__icon md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </div> <div class=md-source__repository> nlohmann/json </div> </a> </div> </nav> </header> <div class=md-container data-md-component=container> <nav class=md-tabs aria-label=Tabs data-md-component=tabs> <div class=md-grid> <ul class=md-tabs__list> <li class=md-tabs__item> <a href=../../.. class=md-tabs__link> Home </a> </li> <li class=md-tabs__item> <a href=../../../features/arbitrary_types/ class=md-tabs__link> Features </a> </li> <li class=md-tabs__item> <a href=../../../integration/ class=md-tabs__link> Integration </a> </li> <li class="md-tabs__item md-tabs__item--active"> <a href=../ class=md-tabs__link> API Documentation </a> </li> <li class=md-tabs__item> <a href=../../../community/ class=md-tabs__link> Community </a> </li> </ul> </div> </nav> <main class=md-main data-md-component=main> <div class="md-main__inner md-grid"> <div class="md-sidebar md-sidebar--primary" data-md-component=sidebar data-md-type=navigation> <div class=md-sidebar__scrollwrap> <div class=md-sidebar__inner> <nav class="md-nav md-nav--primary md-nav--lifted" aria-label=Navigation data-md-level=0> <label class=md-nav__title for=__drawer> <a href=../../.. title="JSON for Modern C++" class="md-nav__button md-logo" aria-label="JSON for Modern C++" data-md-component=logo> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54"/></svg> </a> JSON for Modern C++ </label> <div class=md-nav__source> <a href="https://github.com/nlohmann/json" title="Go to repository" class="md-source" data-md-component="source"> <div class="md-source__icon md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </div> <div class=md-source__repository> nlohmann/json </div> </a> </div> <ul class=md-nav__list data-md-scrollfix> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_1> <div class="md-nav__link md-nav__container"> <a href=../../.. class="md-nav__link "> <span class=md-ellipsis> Home </span> </a> <label class="md-nav__link " for=__nav_1 id=__nav_1_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_1_label aria-expanded=false> <label class=md-nav__title for=__nav_1> <span class="md-nav__icon md-icon"></span> Home </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../home/license/ class=md-nav__link> <span class=md-ellipsis> License </span> </a> </li> <li class=md-nav__item> <a href=../../../home/faq/ class=md-nav__link> <span class=md-ellipsis> FAQ </span> </a> </li> <li class=md-nav__item> <a href=../../../home/exceptions/ class=md-nav__link> <span class=md-ellipsis> Exceptions </span> </a> </li> <li class=md-nav__item> <a href=../../../home/releases/ class=md-nav__link> <span class=md-ellipsis> Releases </span> </a> </li> <li class=md-nav__item> <a href=../../../home/design_goals/ class=md-nav__link> <span class=md-ellipsis> Design goals </span> </a> </li> <li class=md-nav__item> <a href=../../../home/architecture/ class=md-nav__link> <span class=md-ellipsis> Architecture </span> </a> </li> <li class=md-nav__item> <a href=../../../home/customers/ class=md-nav__link> <span class=md-ellipsis> Customers </span> </a> </li> <li class=md-nav__item> <a href=../../../home/sponsors/ class=md-nav__link> <span class=md-ellipsis> Sponsors </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2> <label class=md-nav__link for=__nav_2 id=__nav_2_label tabindex=0> <span class=md-ellipsis> Features </span> <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_2_label aria-expanded=false> <label class=md-nav__title for=__nav_2> <span class="md-nav__icon md-icon"></span> Features </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/arbitrary_types/ class=md-nav__link> <span class=md-ellipsis> Arbitrary Type Conversions </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_2> <div class="md-nav__link md-nav__container"> <a href=../../../features/binary_formats/ class="md-nav__link "> <span class=md-ellipsis> Binary Formats </span> </a> <label class="md-nav__link " for=__nav_2_2 id=__nav_2_2_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_2_label aria-expanded=false> <label class=md-nav__title for=__nav_2_2> <span class="md-nav__icon md-icon"></span> Binary Formats </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/binary_formats/bjdata/ class=md-nav__link> <span class=md-ellipsis> BJData </span> </a> </li> <li class=md-nav__item> <a href=../../../features/binary_formats/bson/ class=md-nav__link> <span class=md-ellipsis> BSON </span> </a> </li> <li class=md-nav__item> <a href=../../../features/binary_formats/cbor/ class=md-nav__link> <span class=md-ellipsis> CBOR </span> </a> </li> <li class=md-nav__item> <a href=../../../features/binary_formats/messagepack/ class=md-nav__link> <span class=md-ellipsis> MessagePack </span> </a> </li> <li class=md-nav__item> <a href=../../../features/binary_formats/ubjson/ class=md-nav__link> <span class=md-ellipsis> UBJSON </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../../features/binary_values/ class=md-nav__link> <span class=md-ellipsis> Binary Values </span> </a> </li> <li class=md-nav__item> <a href=../../../features/comments/ class=md-nav__link> <span class=md-ellipsis> Comments </span> </a> </li> <li class=md-nav__item> <a href=../../../features/trailing_commas/ class=md-nav__link> <span class=md-ellipsis> Trailing Commas </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_6> <div class="md-nav__link md-nav__container"> <a href=../../../features/element_access/ class="md-nav__link "> <span class=md-ellipsis> Element Access </span> </a> <label class="md-nav__link " for=__nav_2_6 id=__nav_2_6_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_6_label aria-expanded=false> <label class=md-nav__title for=__nav_2_6> <span class="md-nav__icon md-icon"></span> Element Access </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/element_access/unchecked_access/ class=md-nav__link> <span class=md-ellipsis> Unchecked access: operator[] </span> </a> </li> <li class=md-nav__item> <a href=../../../features/element_access/checked_access/ class=md-nav__link> <span class=md-ellipsis> Checked access: at </span> </a> </li> <li class=md-nav__item> <a href=../../../features/element_access/default_value/ class=md-nav__link> <span class=md-ellipsis> Access with default value: value </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../../features/iterators/ class=md-nav__link> <span class=md-ellipsis> Iterators </span> </a> </li> <li class=md-nav__item> <a href=../../../features/json_pointer/ class=md-nav__link> <span class=md-ellipsis> JSON Pointer </span> </a> </li> <li class=md-nav__item> <a href=../../../features/json_patch/ class=md-nav__link> <span class=md-ellipsis> JSON Patch and Diff </span> </a> </li> <li class=md-nav__item> <a href=../../../features/merge_patch/ class=md-nav__link> <span class=md-ellipsis> JSON Merge Patch </span> </a> </li> <li class=md-nav__item> <a href=../../../features/modules/ class=md-nav__link> <span class=md-ellipsis> Modules </span> </a> </li> <li class=md-nav__item> <a href=../../../features/namespace/ class=md-nav__link> <span class=md-ellipsis> nlohmann Namespace </span> </a> </li> <li class=md-nav__item> <a href=../../../features/object_order/ class=md-nav__link> <span class=md-ellipsis> Object Order </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_14> <div class="md-nav__link md-nav__container"> <a href=../../../features/parsing/ class="md-nav__link "> <span class=md-ellipsis> Parsing </span> </a> <label class="md-nav__link " for=__nav_2_14 id=__nav_2_14_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_14_label aria-expanded=false> <label class=md-nav__title for=__nav_2_14> <span class="md-nav__icon md-icon"></span> Parsing </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/parsing/json_lines/ class=md-nav__link> <span class=md-ellipsis> JSON Lines </span> </a> </li> <li class=md-nav__item> <a href=../../../features/parsing/parse_exceptions/ class=md-nav__link> <span class=md-ellipsis> Parsing and Exceptions </span> </a> </li> <li class=md-nav__item> <a href=../../../features/parsing/parser_callbacks/ class=md-nav__link> <span class=md-ellipsis> Parser Callbacks </span> </a> </li> <li class=md-nav__item> <a href=../../../features/parsing/sax_interface/ class=md-nav__link> <span class=md-ellipsis> SAX Interface </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../../features/assertions/ class=md-nav__link> <span class=md-ellipsis> Runtime Assertions </span> </a> </li> <li class=md-nav__item> <a href=../../../features/enum_conversion/ class=md-nav__link> <span class=md-ellipsis> Specializing enum conversion </span> </a> </li> <li class=md-nav__item> <a href=../../../features/macros/ class=md-nav__link> <span class=md-ellipsis> Supported Macros </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_18> <div class="md-nav__link md-nav__container"> <a href=../../../features/types/ class="md-nav__link "> <span class=md-ellipsis> Types </span> </a> <label class="md-nav__link " for=__nav_2_18 id=__nav_2_18_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_18_label aria-expanded=false> <label class=md-nav__title for=__nav_2_18> <span class="md-nav__icon md-icon"></span> Types </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/types/number_handling/ class=md-nav__link> <span class=md-ellipsis> Number Handling </span> </a> </li> </ul> </nav> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_3> <div class="md-nav__link md-nav__container"> <a href=../../../integration/ class="md-nav__link "> <span class=md-ellipsis> Integration </span> </a> <label class="md-nav__link " for=__nav_3 id=__nav_3_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_3_label aria-expanded=false> <label class=md-nav__title for=__nav_3> <span class="md-nav__icon md-icon"></span> Integration </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../integration/migration_guide/ class=md-nav__link> <span class=md-ellipsis> Migration Guide </span> </a> </li> <li class=md-nav__item> <a href=../../../integration/cmake/ class=md-nav__link> <span class=md-ellipsis> CMake </span> </a> </li> <li class=md-nav__item> <a href=../../../integration/package_managers/ class=md-nav__link> <span class=md-ellipsis> Package Managers </span> </a> </li> <li class=md-nav__item> <a href=../../../integration/pkg-config/ class=md-nav__link> <span class=md-ellipsis> Pkg-config </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--active md-nav__item--section md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4 checked> <label class=md-nav__link for=__nav_4 id=__nav_4_label tabindex> <span class=md-ellipsis> API Documentation </span> <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_4_label aria-expanded=true> <label class=md-nav__title for=__nav_4> <span class="md-nav__icon md-icon"></span> API Documentation </label> <ul class=md-nav__list data-md-scrollfix> <li class="md-nav__item md-nav__item--active md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_1 checked> <div class="md-nav__link md-nav__container"> <a href=../ class="md-nav__link "> <span class=md-ellipsis> basic_json </span> </a> <label class="md-nav__link " for=__nav_4_1 id=__nav_4_1_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_1_label aria-expanded=true> <label class=md-nav__title for=__nav_4_1> <span class="md-nav__icon md-icon"></span> basic_json </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../basic_json/ class=md-nav__link> <span class=md-ellipsis> (Constructor) </span> </a> </li> <li class=md-nav__item> <a href=../~basic_json/ class=md-nav__link> <span class=md-ellipsis> (Destructor) </span> </a> </li> <li class=md-nav__item> <a href=../accept/ class=md-nav__link> <span class=md-ellipsis> accept </span> </a> </li> <li class=md-nav__item> <a href=../array/ class=md-nav__link> <span class=md-ellipsis> array </span> </a> </li> <li class=md-nav__item> <a href=../array_t/ class=md-nav__link> <span class=md-ellipsis> array_t </span> </a> </li> <li class=md-nav__item> <a href=../at/ class=md-nav__link> <span class=md-ellipsis> at </span> </a> </li> <li class=md-nav__item> <a href=../back/ class=md-nav__link> <span class=md-ellipsis> back </span> </a> </li> <li class=md-nav__item> <a href=../begin/ class=md-nav__link> <span class=md-ellipsis> begin </span> </a> </li> <li class=md-nav__item> <a href=../binary/ class=md-nav__link> <span class=md-ellipsis> binary </span> </a> </li> <li class=md-nav__item> <a href=../binary_t/ class=md-nav__link> <span class=md-ellipsis> binary_t </span> </a> </li> <li class=md-nav__item> <a href=../boolean_t/ class=md-nav__link> <span class=md-ellipsis> boolean_t </span> </a> </li> <li class=md-nav__item> <a href=../cbegin/ class=md-nav__link> <span class=md-ellipsis> cbegin </span> </a> </li> <li class=md-nav__item> <a href=../cbor_tag_handler_t/ class=md-nav__link> <span class=md-ellipsis> cbor_tag_handler_t </span> </a> </li> <li class=md-nav__item> <a href=../cend/ class=md-nav__link> <span class=md-ellipsis> cend </span> </a> </li> <li class=md-nav__item> <a href=../clear/ class=md-nav__link> <span class=md-ellipsis> clear </span> </a> </li> <li class=md-nav__item> <a href=../contains/ class=md-nav__link> <span class=md-ellipsis> contains </span> </a> </li> <li class=md-nav__item> <a href=../count/ class=md-nav__link> <span class=md-ellipsis> count </span> </a> </li> <li class=md-nav__item> <a href=../crbegin/ class=md-nav__link> <span class=md-ellipsis> crbegin </span> </a> </li> <li class=md-nav__item> <a href=../crend/ class=md-nav__link> <span class=md-ellipsis> crend </span> </a> </li> <li class=md-nav__item> <a href=../default_object_comparator_t/ class=md-nav__link> <span class=md-ellipsis> default_object_comparator_t </span> </a> </li> <li class=md-nav__item> <a href=../diff/ class=md-nav__link> <span class=md-ellipsis> diff </span> </a> </li> <li class=md-nav__item> <a href=../dump/ class=md-nav__link> <span class=md-ellipsis> dump </span> </a> </li> <li class=md-nav__item> <a href=../emplace/ class=md-nav__link> <span class=md-ellipsis> emplace </span> </a> </li> <li class=md-nav__item> <a href=../emplace_back/ class=md-nav__link> <span class=md-ellipsis> emplace_back </span> </a> </li> <li class=md-nav__item> <a href=../empty/ class=md-nav__link> <span class=md-ellipsis> empty </span> </a> </li> <li class=md-nav__item> <a href=../end/ class=md-nav__link> <span class=md-ellipsis> end </span> </a> </li> <li class=md-nav__item> <a href=../end_pos/ class=md-nav__link> <span class=md-ellipsis> end_pos </span> </a> </li> <li class=md-nav__item> <a href=../erase/ class=md-nav__link> <span class=md-ellipsis> erase </span> </a> </li> <li class=md-nav__item> <a href=../error_handler_t/ class=md-nav__link> <span class=md-ellipsis> error_handler_t </span> </a> </li> <li class=md-nav__item> <a href=../exception/ class=md-nav__link> <span class=md-ellipsis> exception </span> </a> </li> <li class=md-nav__item> <a href=../find/ class=md-nav__link> <span class=md-ellipsis> find </span> </a> </li> <li class=md-nav__item> <a href=../flatten/ class=md-nav__link> <span class=md-ellipsis> flatten </span> </a> </li> <li class=md-nav__item> <a href=../from_bjdata/ class=md-nav__link> <span class=md-ellipsis> from_bjdata </span> </a> </li> <li class=md-nav__item> <a href=../from_bson/ class=md-nav__link> <span class=md-ellipsis> from_bson </span> </a> </li> <li class=md-nav__item> <a href=../from_cbor/ class=md-nav__link> <span class=md-ellipsis> from_cbor </span> </a> </li> <li class=md-nav__item> <a href=../from_msgpack/ class=md-nav__link> <span class=md-ellipsis> from_msgpack </span> </a> </li> <li class=md-nav__item> <a href=../from_ubjson/ class=md-nav__link> <span class=md-ellipsis> from_ubjson </span> </a> </li> <li class=md-nav__item> <a href=../front/ class=md-nav__link> <span class=md-ellipsis> front </span> </a> </li> <li class="md-nav__item md-nav__item--active"> <input class="md-nav__toggle md-toggle" type=checkbox id=__toc> <label class="md-nav__link md-nav__link--active" for=__toc> <span class=md-ellipsis> get </span> <span class="md-nav__icon md-icon"></span> </label> <a href=./ class="md-nav__link md-nav__link--active"> <span class=md-ellipsis> get </span> </a> <nav class="md-nav md-nav--secondary" aria-label="Table of contents"> <label class=md-nav__title for=__toc> <span class="md-nav__icon md-icon"></span> Table of contents </label> <ul class=md-nav__list data-md-component=toc data-md-scrollfix> <li class=md-nav__item> <a href=#template-parameters class=md-nav__link> <span class=md-ellipsis> Template parameters </span> </a> </li> <li class=md-nav__item> <a href=#return-value class=md-nav__link> <span class=md-ellipsis> Return value </span> </a> </li> <li class=md-nav__item> <a href=#exceptions class=md-nav__link> <span class=md-ellipsis> Exceptions </span> </a> </li> <li class=md-nav__item> <a href=#complexity class=md-nav__link> <span class=md-ellipsis> Complexity </span> </a> </li> <li class=md-nav__item> <a href=#notes class=md-nav__link> <span class=md-ellipsis> Notes </span> </a> </li> <li class=md-nav__item> <a href=#examples class=md-nav__link> <span class=md-ellipsis> Examples </span> </a> </li> <li class=md-nav__item> <a href=#see-also class=md-nav__link> <span class=md-ellipsis> See also </span> </a> </li> <li class=md-nav__item> <a href=#version-history class=md-nav__link> <span class=md-ellipsis> Version history </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../get_allocator/ class=md-nav__link> <span class=md-ellipsis> get_allocator </span> </a> </li> <li class=md-nav__item> <a href=../get_binary/ class=md-nav__link> <span class=md-ellipsis> get_binary </span> </a> </li> <li class=md-nav__item> <a href=../get_ptr/ class=md-nav__link> <span class=md-ellipsis> get_ptr </span> </a> </li> <li class=md-nav__item> <a href=../get_ref/ class=md-nav__link> <span class=md-ellipsis> get_ref </span> </a> </li> <li class=md-nav__item> <a href=../get_to/ class=md-nav__link> <span class=md-ellipsis> get_to </span> </a> </li> <li class=md-nav__item> <a href=../std_hash/ class=md-nav__link> <span class=md-ellipsis> std::hash&lt;basic_json&gt; </span> </a> </li> <li class=md-nav__item> <a href=../input_format_t/ class=md-nav__link> <span class=md-ellipsis> input_format_t </span> </a> </li> <li class=md-nav__item> <a href=../insert/ class=md-nav__link> <span class=md-ellipsis> insert </span> </a> </li> <li class=md-nav__item> <a href=../invalid_iterator/ class=md-nav__link> <span class=md-ellipsis> invalid_iterator </span> </a> </li> <li class=md-nav__item> <a href=../is_array/ class=md-nav__link> <span class=md-ellipsis> is_array </span> </a> </li> <li class=md-nav__item> <a href=../is_binary/ class=md-nav__link> <span class=md-ellipsis> is_binary </span> </a> </li> <li class=md-nav__item> <a href=../is_boolean/ class=md-nav__link> <span class=md-ellipsis> is_boolean </span> </a> </li> <li class=md-nav__item> <a href=../is_discarded/ class=md-nav__link> <span class=md-ellipsis> is_discarded </span> </a> </li> <li class=md-nav__item> <a href=../is_null/ class=md-nav__link> <span class=md-ellipsis> is_null </span> </a> </li> <li class=md-nav__item> <a href=../is_number/ class=md-nav__link> <span class=md-ellipsis> is_number </span> </a> </li> <li class=md-nav__item> <a href=../is_number_float/ class=md-nav__link> <span class=md-ellipsis> is_number_float </span> </a> </li> <li class=md-nav__item> <a href=../is_number_integer/ class=md-nav__link> <span class=md-ellipsis> is_number_integer </span> </a> </li> <li class=md-nav__item> <a href=../is_number_unsigned/ class=md-nav__link> <span class=md-ellipsis> is_number_unsigned </span> </a> </li> <li class=md-nav__item> <a href=../is_object/ class=md-nav__link> <span class=md-ellipsis> is_object </span> </a> </li> <li class=md-nav__item> <a href=../is_primitive/ class=md-nav__link> <span class=md-ellipsis> is_primitive </span> </a> </li> <li class=md-nav__item> <a href=../is_string/ class=md-nav__link> <span class=md-ellipsis> is_string </span> </a> </li> <li class=md-nav__item> <a href=../is_structured/ class=md-nav__link> <span class=md-ellipsis> is_structured </span> </a> </li> <li class=md-nav__item> <a href=../items/ class=md-nav__link> <span class=md-ellipsis> items </span> </a> </li> <li class=md-nav__item> <a href=../json_base_class_t/ class=md-nav__link> <span class=md-ellipsis> json_base_class_t </span> </a> </li> <li class=md-nav__item> <a href=../json_serializer/ class=md-nav__link> <span class=md-ellipsis> json_serializer </span> </a> </li> <li class=md-nav__item> <a href=../max_size/ class=md-nav__link> <span class=md-ellipsis> max_size </span> </a> </li> <li class=md-nav__item> <a href=../meta/ class=md-nav__link> <span class=md-ellipsis> meta </span> </a> </li> <li class=md-nav__item> <a href=../merge_patch/ class=md-nav__link> <span class=md-ellipsis> merge_patch </span> </a> </li> <li class=md-nav__item> <a href=../number_float_t/ class=md-nav__link> <span class=md-ellipsis> number_float_t </span> </a> </li> <li class=md-nav__item> <a href=../number_integer_t/ class=md-nav__link> <span class=md-ellipsis> number_integer_t </span> </a> </li> <li class=md-nav__item> <a href=../number_unsigned_t/ class=md-nav__link> <span class=md-ellipsis> number_unsigned_t </span> </a> </li> <li class=md-nav__item> <a href=../object/ class=md-nav__link> <span class=md-ellipsis> object </span> </a> </li> <li class=md-nav__item> <a href=../object_comparator_t/ class=md-nav__link> <span class=md-ellipsis> object_comparator_t </span> </a> </li> <li class=md-nav__item> <a href=../object_t/ class=md-nav__link> <span class=md-ellipsis> object_t </span> </a> </li> <li class=md-nav__item> <a href=../operator_ValueType/ class=md-nav__link> <span class=md-ellipsis> operator ValueType </span> </a> </li> <li class=md-nav__item> <a href=../operator_value_t/ class=md-nav__link> <span class=md-ellipsis> operator value_t </span> </a> </li> <li class=md-nav__item> <a href=../operator%5B%5D/ class=md-nav__link> <span class=md-ellipsis> operator[] </span> </a> </li> <li class=md-nav__item> <a href=../operator%3D/ class=md-nav__link> <span class=md-ellipsis> operator= </span> </a> </li> <li class=md-nav__item> <a href=../operator%2B%3D/ class=md-nav__link> <span class=md-ellipsis> operator+= </span> </a> </li> <li class=md-nav__item> <a href=../operator_eq/ class=md-nav__link> <span class=md-ellipsis> operator== </span> </a> </li> <li class=md-nav__item> <a href=../operator_ne/ class=md-nav__link> <span class=md-ellipsis> operator!= </span> </a> </li> <li class=md-nav__item> <a href=../operator_lt/ class=md-nav__link> <span class=md-ellipsis> operator< </span> </a> </li> <li class=md-nav__item> <a href=../operator_gt/ class=md-nav__link> <span class=md-ellipsis> operator> </span> </a> </li> <li class=md-nav__item> <a href=../operator_le/ class=md-nav__link> <span class=md-ellipsis> operator<= </span> </a> </li> <li class=md-nav__item> <a href=../operator_ge/ class=md-nav__link> <span class=md-ellipsis> operator>= </span> </a> </li> <li class=md-nav__item> <a href=../operator_spaceship/ class=md-nav__link> <span class=md-ellipsis> operator<=> </span> </a> </li> <li class=md-nav__item> <a href=../out_of_range/ class=md-nav__link> <span class=md-ellipsis> out_of_range </span> </a> </li> <li class=md-nav__item> <a href=../other_error/ class=md-nav__link> <span class=md-ellipsis> other_error </span> </a> </li> <li class=md-nav__item> <a href=../parse/ class=md-nav__link> <span class=md-ellipsis> parse </span> </a> </li> <li class=md-nav__item> <a href=../parse_error/ class=md-nav__link> <span class=md-ellipsis> parse_error </span> </a> </li> <li class=md-nav__item> <a href=../parse_event_t/ class=md-nav__link> <span class=md-ellipsis> parse_event_t </span> </a> </li> <li class=md-nav__item> <a href=../parser_callback_t/ class=md-nav__link> <span class=md-ellipsis> parser_callback_t </span> </a> </li> <li class=md-nav__item> <a href=../patch/ class=md-nav__link> <span class=md-ellipsis> patch </span> </a> </li> <li class=md-nav__item> <a href=../patch_inplace/ class=md-nav__link> <span class=md-ellipsis> patch_inplace </span> </a> </li> <li class=md-nav__item> <a href=../push_back/ class=md-nav__link> <span class=md-ellipsis> push_back </span> </a> </li> <li class=md-nav__item> <a href=../rbegin/ class=md-nav__link> <span class=md-ellipsis> rbegin </span> </a> </li> <li class=md-nav__item> <a href=../rend/ class=md-nav__link> <span class=md-ellipsis> rend </span> </a> </li> <li class=md-nav__item> <a href=../sax_parse/ class=md-nav__link> <span class=md-ellipsis> sax_parse </span> </a> </li> <li class=md-nav__item> <a href=../size/ class=md-nav__link> <span class=md-ellipsis> size </span> </a> </li> <li class=md-nav__item> <a href=../start_pos/ class=md-nav__link> <span class=md-ellipsis> start_pos </span> </a> </li> <li class=md-nav__item> <a href=../string_t/ class=md-nav__link> <span class=md-ellipsis> string_t </span> </a> </li> <li class=md-nav__item> <a href=../swap/ class=md-nav__link> <span class=md-ellipsis> swap </span> </a> </li> <li class=md-nav__item> <a href=../std_swap/ class=md-nav__link> <span class=md-ellipsis> std::swap&lt;basic_json&gt; </span> </a> </li> <li class=md-nav__item> <a href=../to_bjdata/ class=md-nav__link> <span class=md-ellipsis> to_bjdata </span> </a> </li> <li class=md-nav__item> <a href=../to_bson/ class=md-nav__link> <span class=md-ellipsis> to_bson </span> </a> </li> <li class=md-nav__item> <a href=../to_cbor/ class=md-nav__link> <span class=md-ellipsis> to_cbor </span> </a> </li> <li class=md-nav__item> <a href=../to_msgpack/ class=md-nav__link> <span class=md-ellipsis> to_msgpack </span> </a> </li> <li class=md-nav__item> <a href=../to_string/ class=md-nav__link> <span class=md-ellipsis> to_string </span> </a> </li> <li class=md-nav__item> <a href=../to_ubjson/ class=md-nav__link> <span class=md-ellipsis> to_ubjson </span> </a> </li> <li class=md-nav__item> <a href=../type/ class=md-nav__link> <span class=md-ellipsis> type </span> </a> </li> <li class=md-nav__item> <a href=../type_error/ class=md-nav__link> <span class=md-ellipsis> type_error </span> </a> </li> <li class=md-nav__item> <a href=../type_name/ class=md-nav__link> <span class=md-ellipsis> type_name </span> </a> </li> <li class=md-nav__item> <a href=../unflatten/ class=md-nav__link> <span class=md-ellipsis> unflatten </span> </a> </li> <li class=md-nav__item> <a href=../update/ class=md-nav__link> <span class=md-ellipsis> update </span> </a> </li> <li class=md-nav__item> <a href=../value/ class=md-nav__link> <span class=md-ellipsis> value </span> </a> </li> <li class=md-nav__item> <a href=../value_t/ class=md-nav__link> <span class=md-ellipsis> value_t </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_2> <div class="md-nav__link md-nav__container"> <a href=../../byte_container_with_subtype/ class="md-nav__link "> <span class=md-ellipsis> byte_container_with_subtype </span> </a> <label class="md-nav__link " for=__nav_4_2 id=__nav_4_2_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_2_label aria-expanded=false> <label class=md-nav__title for=__nav_4_2> <span class="md-nav__icon md-icon"></span> byte_container_with_subtype </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../byte_container_with_subtype/byte_container_with_subtype/ class=md-nav__link> <span class=md-ellipsis> (constructor) </span> </a> </li> <li class=md-nav__item> <a href=../../byte_container_with_subtype/clear_subtype/ class=md-nav__link> <span class=md-ellipsis> clear_subtype </span> </a> </li> <li class=md-nav__item> <a href=../../byte_container_with_subtype/has_subtype/ class=md-nav__link> <span class=md-ellipsis> has_subtype </span> </a> </li> <li class=md-nav__item> <a href=../../byte_container_with_subtype/set_subtype/ class=md-nav__link> <span class=md-ellipsis> set_subtype </span> </a> </li> <li class=md-nav__item> <a href=../../byte_container_with_subtype/subtype/ class=md-nav__link> <span class=md-ellipsis> subtype </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_3> <div class="md-nav__link md-nav__container"> <a href=../../adl_serializer/ class="md-nav__link "> <span class=md-ellipsis> adl_serializer </span> </a> <label class="md-nav__link " for=__nav_4_3 id=__nav_4_3_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_3_label aria-expanded=false> <label class=md-nav__title for=__nav_4_3> <span class="md-nav__icon md-icon"></span> adl_serializer </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../adl_serializer/from_json/ class=md-nav__link> <span class=md-ellipsis> from_json </span> </a> </li> <li class=md-nav__item> <a href=../../adl_serializer/to_json/ class=md-nav__link> <span class=md-ellipsis> to_json </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../json/ class=md-nav__link> <span class=md-ellipsis> json </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_5> <div class="md-nav__link md-nav__container"> <a href=../../json_pointer/ class="md-nav__link "> <span class=md-ellipsis> json_pointer </span> </a> <label class="md-nav__link " for=__nav_4_5 id=__nav_4_5_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_5_label aria-expanded=false> <label class=md-nav__title for=__nav_4_5> <span class="md-nav__icon md-icon"></span> json_pointer </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../json_pointer/json_pointer/ class=md-nav__link> <span class=md-ellipsis> (Constructor) </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/back/ class=md-nav__link> <span class=md-ellipsis> back </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/empty/ class=md-nav__link> <span class=md-ellipsis> empty </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/front/ class=md-nav__link> <span class=md-ellipsis> front </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_string_t/ class=md-nav__link> <span class=md-ellipsis> operator string_t </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_eq/ class=md-nav__link> <span class=md-ellipsis> operator== </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_ne/ class=md-nav__link> <span class=md-ellipsis> operator!= </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_slash/ class=md-nav__link> <span class=md-ellipsis> operator/ </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_slasheq/ class=md-nav__link> <span class=md-ellipsis> operator/= </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/parent_pointer/ class=md-nav__link> <span class=md-ellipsis> parent_pointer </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/pop_back/ class=md-nav__link> <span class=md-ellipsis> pop_back </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/pop_front/ class=md-nav__link> <span class=md-ellipsis> pop_front </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/push_back/ class=md-nav__link> <span class=md-ellipsis> push_back </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/push_front/ class=md-nav__link> <span class=md-ellipsis> push_front </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/string_t/ class=md-nav__link> <span class=md-ellipsis> string_t </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/to_string/ class=md-nav__link> <span class=md-ellipsis> to_string </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_6> <div class="md-nav__link md-nav__container"> <a href=../../json_sax/ class="md-nav__link "> <span class=md-ellipsis> json_sax </span> </a> <label class="md-nav__link " for=__nav_4_6 id=__nav_4_6_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_6_label aria-expanded=false> <label class=md-nav__title for=__nav_4_6> <span class="md-nav__icon md-icon"></span> json_sax </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../json_sax/binary/ class=md-nav__link> <span class=md-ellipsis> binary </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/boolean/ class=md-nav__link> <span class=md-ellipsis> boolean </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/end_array/ class=md-nav__link> <span class=md-ellipsis> end_array </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/end_object/ class=md-nav__link> <span class=md-ellipsis> end_object </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/key/ class=md-nav__link> <span class=md-ellipsis> key </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/null/ class=md-nav__link> <span class=md-ellipsis> null </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/number_float/ class=md-nav__link> <span class=md-ellipsis> number_float </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/number_integer/ class=md-nav__link> <span class=md-ellipsis> number_integer </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/number_unsigned/ class=md-nav__link> <span class=md-ellipsis> number_unsigned </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/parse_error/ class=md-nav__link> <span class=md-ellipsis> parse_error </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/start_array/ class=md-nav__link> <span class=md-ellipsis> start_array </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/start_object/ class=md-nav__link> <span class=md-ellipsis> start_object </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/string/ class=md-nav__link> <span class=md-ellipsis> string </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../operator_ltlt/ class=md-nav__link> <span class=md-ellipsis> operator<<(basic_json), operator<<(json_pointer) </span> </a> </li> <li class=md-nav__item> <a href=../../operator_gtgt/ class=md-nav__link> <span class=md-ellipsis> operator>>(basic_json) </span> </a> </li> <li class=md-nav__item> <a href=../../operator_literal_json/ class=md-nav__link> <span class=md-ellipsis> operator""_json </span> </a> </li> <li class=md-nav__item> <a href=../../operator_literal_json_pointer/ class=md-nav__link> <span class=md-ellipsis> operator""_json_pointer </span> </a> </li> <li class=md-nav__item> <a href=../../ordered_json/ class=md-nav__link> <span class=md-ellipsis> ordered_json </span> </a> </li> <li class=md-nav__item> <a href=../../ordered_map/ class=md-nav__link> <span class=md-ellipsis> ordered_map </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_13> <div class="md-nav__link md-nav__container"> <a href=../../macros/ class="md-nav__link "> <span class=md-ellipsis> macros </span> </a> <label class="md-nav__link " for=__nav_4_13 id=__nav_4_13_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_13_label aria-expanded=false> <label class=md-nav__title for=__nav_4_13> <span class="md-nav__icon md-icon"></span> macros </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../macros/json_assert/ class=md-nav__link> <span class=md-ellipsis> JSON_ASSERT </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_brace_init_copy_semantics/ class=md-nav__link> <span class=md-ellipsis> JSON_BRACE_INIT_COPY_SEMANTICS </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_throw_user/ class=md-nav__link> <span class=md-ellipsis> JSON_CATCH_USER, JSON_THROW_USER, JSON_TRY_USER </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_diagnostics/ class=md-nav__link> <span class=md-ellipsis> JSON_DIAGNOSTICS </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_diagnostic_positions/ class=md-nav__link> <span class=md-ellipsis> JSON_DIAGNOSTIC_POSITIONS </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_disable_enum_serialization/ class=md-nav__link> <span class=md-ellipsis> JSON_DISABLE_ENUM_SERIALIZATION </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_has_cpp_11/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_CPP_11, JSON_HAS_CPP_14, JSON_HAS_CPP_17, JSON_HAS_CPP_20 </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_has_filesystem/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_EXPERIMENTAL_FILESYSTEM, JSON_HAS_FILESYSTEM </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_has_ranges/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_RANGES </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_has_static_rtti/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_STATIC_RTTI </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_has_three_way_comparison/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_THREE_WAY_COMPARISON </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_noexception/ class=md-nav__link> <span class=md-ellipsis> JSON_NOEXCEPTION </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_no_io/ class=md-nav__link> <span class=md-ellipsis> JSON_NO_IO </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_skip_library_version_check/ class=md-nav__link> <span class=md-ellipsis> JSON_SKIP_LIBRARY_VERSION_CHECK </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_skip_unsupported_compiler_check/ class=md-nav__link> <span class=md-ellipsis> JSON_SKIP_UNSUPPORTED_COMPILER_CHECK </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_use_global_udls/ class=md-nav__link> <span class=md-ellipsis> JSON_USE_GLOBAL_UDLS </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_use_implicit_conversions/ class=md-nav__link> <span class=md-ellipsis> JSON_USE_IMPLICIT_CONVERSIONS </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_use_legacy_discarded_value_comparison/ class=md-nav__link> <span class=md-ellipsis> JSON_USE_LEGACY_DISCARDED_VALUE_COMPARISON </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_define_derived_type/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_ONLY_SERIALIZE, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_define_type_intrusive/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_TYPE_INTRUSIVE, NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_TYPE_INTRUSIVE_ONLY_SERIALIZE </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_define_type_non_intrusive/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_define_type_with_names/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_TYPE_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_namespace/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_NAMESPACE </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_namespace_begin/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_NAMESPACE_BEGIN, NLOHMANN_JSON_NAMESPACE_END </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_namespace_no_version/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_NAMESPACE_NO_VERSION </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_serialize_enum/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_SERIALIZE_ENUM </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_serialize_enum_strict/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_SERIALIZE_ENUM_STRICT </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_version_major/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_VERSION_MAJOR, NLOHMANN_JSON_VERSION_MINOR, NLOHMANN_JSON_VERSION_PATCH </span> </a> </li> </ul> </nav> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_5> <div class="md-nav__link md-nav__container"> <a href=../../../community/ class="md-nav__link "> <span class=md-ellipsis> Community </span> </a> <label class="md-nav__link " for=__nav_5 id=__nav_5_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_5_label aria-expanded=false> <label class=md-nav__title for=__nav_5> <span class="md-nav__icon md-icon"></span> Community </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../community/code_of_conduct/ class=md-nav__link> <span class=md-ellipsis> Code of Conduct </span> </a> </li> <li class=md-nav__item> <a href=../../../community/contribution_guidelines/ class=md-nav__link> <span class=md-ellipsis> Contribution Guidelines </span> </a> </li> <li class=md-nav__item> <a href=../../../community/quality_assurance/ class=md-nav__link> <span class=md-ellipsis> Quality assurance </span> </a> </li> <li class=md-nav__item> <a href=../../../community/governance/ class=md-nav__link> <span class=md-ellipsis> Governance </span> </a> </li> <li class=md-nav__item> <a href=../../../community/security_policy/ class=md-nav__link> <span class=md-ellipsis> Security Policy </span> </a> </li> </ul> </nav> </li> </ul> </nav> </div> </div> </div> <div class="md-sidebar md-sidebar--secondary" data-md-component=sidebar data-md-type=toc> <div class=md-sidebar__scrollwrap> <div class=md-sidebar__inner> <nav class="md-nav md-nav--secondary" aria-label="Table of contents"> <label class=md-nav__title for=__toc> <span class="md-nav__icon md-icon"></span> Table of contents </label> <ul class=md-nav__list data-md-component=toc data-md-scrollfix> <li class=md-nav__item> <a href=#template-parameters class=md-nav__link> <span class=md-ellipsis> Template parameters </span> </a> </li> <li class=md-nav__item> <a href=#return-value class=md-nav__link> <span class=md-ellipsis> Return value </span> </a> </li> <li class=md-nav__item> <a href=#exceptions class=md-nav__link> <span class=md-ellipsis> Exceptions </span> </a> </li> <li class=md-nav__item> <a href=#complexity class=md-nav__link> <span class=md-ellipsis> Complexity </span> </a> </li> <li class=md-nav__item> <a href=#notes class=md-nav__link> <span class=md-ellipsis> Notes </span> </a> </li> <li class=md-nav__item> <a href=#examples class=md-nav__link> <span class=md-ellipsis> Examples </span> </a> </li> <li class=md-nav__item> <a href=#see-also class=md-nav__link> <span class=md-ellipsis> See also </span> </a> </li> <li class=md-nav__item> <a href=#version-history class=md-nav__link> <span class=md-ellipsis> Version history </span> </a> </li> </ul> </nav> </div> </div> </div> <div class=md-content data-md-component=content> <article class="md-content__inner md-typeset"> <a href="https://github.com/nlohmann/json/edit/develop/docs/mkdocs/docs/api/basic_json/get.md" title="Edit this page" class="md-content__button md-icon" rel="edit"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M10 20H6V4h7v5h5v3.1l2-2V8l-6-6H6c-1.1 0-2 .9-2 2v16c0 1.1.9 2 2 2h4zm10.2-7c.1 0 .3.1.4.2l1.3 1.3c.2.2.2.6 0 .8l-1 1-2.1-2.1 1-1c.1-.1.2-.2.4-.2m0 3.9L14.1 23H12v-2.1l6.1-6.1z"/></svg> </a> <a href="https://github.com/nlohmann/json/raw/develop/docs/mkdocs/docs/api/basic_json/get.md" title="View source of this page" class="md-content__button md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M17 18c.56 0 1 .44 1 1s-.44 1-1 1-1-.44-1-1 .44-1 1-1m0-3c-2.73 0-5.06 1.66-6 4 .94 2.34 3.27 4 6 4s5.06-1.66 6-4c-.94-2.34-3.27-4-6-4m0 6.5a2.5 2.5 0 0 1-2.5-2.5 2.5 2.5 0 0 1 2.5-2.5 2.5 2.5 0 0 1 2.5 2.5 2.5 2.5 0 0 1-2.5 2.5M9.27 20H6V4h7v5h5v4.07c.7.08 1.36.25 2 .49V8l-6-6H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h4.5a8.2 8.2 0 0 1-1.23-2"/></svg> </a> <h1 id=nlohmannbasic_jsonget><small>nlohmann::basic_json::</small>get<a class=headerlink href=#nlohmannbasic_jsonget title="Permanent link">&para;</a></h1> <div class=highlight><pre><span></span><code><span class=c1>// (1)</span>
 <span class=k>template</span><span class=o>&lt;</span><span class=k>typename</span><span class=w> </span><span class=nc>ValueType</span><span class=o>&gt;</span>
 <span class=n>ValueType</span><span class=w> </span><span class=n>get</span><span class=p>()</span><span class=w> </span><span class=k>const</span><span class=w> </span><span class=k>noexcept</span><span class=p>(</span>
 <span class=w>    </span><span class=k>noexcept</span><span class=p>(</span><span class=n>JSONSerializer</span><span class=o>&lt;</span><span class=n>ValueType</span><span class=o>&gt;::</span><span class=n>from_json</span><span class=p>(</span>
@@ -19,7 +19,7 @@
 <span class=k>return</span><span class=w> </span><span class=n>ret</span><span class=p>;</span>
 </code></pre></div></p> <p>This overload is chosen if:</p> <ul> <li><code>ValueType</code> is not <code>basic_json</code>,</li> <li><code>json_serializer&lt;ValueType&gt;</code> has a <code>from_json()</code> method of the form <code>void from_json(const basic_json&amp;, ValueType&amp;)</code>, and</li> <li><code>json_serializer&lt;ValueType&gt;</code> does not have a <code>from_json()</code> method of the form <code>ValueType from_json(const basic_json&amp;)</code></li> </ul> <p>If the type is <strong>not</strong> <a href="https://en.cppreference.com/w/cpp/named_req/CopyConstructible">CopyConstructible</a> and <strong>not</strong> <a href="https://en.cppreference.com/w/cpp/named_req/DefaultConstructible">DefaultConstructible</a>, the value is converted by calling the <code>json_serializer&lt;ValueType&gt;</code> <code>from_json()</code> method.</p> <p>The function is then equivalent to executing <div class=highlight><pre><span></span><code><span class=k>return</span><span class=w> </span><span class=n>JSONSerializer</span><span class=o>&lt;</span><span class=n>ValueTypeCV</span><span class=o>&gt;::</span><span class=n>from_json</span><span class=p>(</span><span class=o>*</span><span class=k>this</span><span class=p>);</span>
 </code></pre></div></p> <p>This overload is chosen if:</p> <ul> <li><code>ValueType</code> is not <code>basic_json</code> and</li> <li><code>json_serializer&lt;ValueType&gt;</code> has a <code>from_json()</code> method of the form <code>ValueType from_json(const basic_json&amp;)</code></li> </ul> <p>If <code>json_serializer&lt;ValueType&gt;</code> has both overloads of <code>from_json()</code>, the latter one is chosen.</p> </li> <li> <p>Overload for <code>basic_json</code> specializations. The function is equivalent to executing <div class=highlight><pre><span></span><code><span class=k>return</span><span class=w> </span><span class=o>*</span><span class=k>this</span><span class=p>;</span>
-</code></pre></div></p> </li> <li> <p>Explicit pointer access to the internally stored <abbr title="JavaScript Object Notation">JSON</abbr> value. No copies are made.</p> </li> </ol> <h2 id=template-parameters>Template parameters<a class=headerlink href=#template-parameters title="Permanent link">&para;</a></h2> <dl> <dt><code>ValueType</code></dt> <dd>the value type to return</dd> <dt><code>BasicJsonType</code></dt> <dd>a specialization of <code>basic_json</code></dd> <dt><code>PointerType</code></dt> <dd>pointer type; must be a pointer to <a href=../array_t/ ><code>array_t</code></a>, <a href=../object_t/ ><code>object_t</code></a>, <a href=../string_t/ ><code>string_t</code></a>, <a href=../boolean_t/ ><code>boolean_t</code></a>, <a href=../number_integer_t/ ><code>number_integer_t</code></a>, or <a href=../number_unsigned_t/ ><code>number_unsigned_t</code></a>, <a href=../number_float_t/ ><code>number_float_t</code></a>, or <a href=../binary_t/ ><code>binary_t</code></a>. Other types will not compile.</dd> </dl> <h2 id=return-value>Return value<a class=headerlink href=#return-value title="Permanent link">&para;</a></h2> <ol> <li>copy of the <abbr title="JavaScript Object Notation">JSON</abbr> value, converted to <code>ValueType</code></li> <li>a copy of <code class=highlight><span class=o>*</span><span class=k>this</span></code>, converted into <code>BasicJsonType</code></li> <li>pointer to the internally stored <abbr title="JavaScript Object Notation">JSON</abbr> value if the requested pointer type fits to the <abbr title="JavaScript Object Notation">JSON</abbr> value; <code class=highlight><span class=nb>nullptr</span></code> otherwise</li> </ol> <h2 id=exceptions>Exceptions<a class=headerlink href=#exceptions title="Permanent link">&para;</a></h2> <p>Depends on what <code>json_serializer&lt;ValueType&gt;</code> <code>from_json()</code> method throws</p> <h2 id=notes>Notes<a class=headerlink href=#notes title="Permanent link">&para;</a></h2> <div class="admonition danger"> <p class=admonition-title>Undefined behavior for pointers</p> <p>Writing data to the pointee (overload 3) of the result yields an undefined state.</p> </div> <div class="admonition danger"> <p class=admonition-title>Undefined behavior for numeric conversions</p> <p>Conversions between numeric types are performed by the corresponding <code>from_json()</code> implementation using the target C++ type. When converting between numeric types, the library does not check whether the source value is representable by the target type.</p> <p>If the source value is outside the range of the target type, the behavior is the same as the corresponding C++ conversion. In particular, converting a floating-point value to an integer type that cannot represent the value results in undefined behavior.</p> <p>See <a href=../../../features/types/number_handling/#number-conversion>Number conversion</a> for more information.</p> </div> <h2 id=examples>Examples<a class=headerlink href=#examples title="Permanent link">&para;</a></h2> <details class=example> <summary>Example</summary> <p>The example below shows several conversions from <abbr title="JavaScript Object Notation">JSON</abbr> values to other types. There a few things to note: (1) Floating-point numbers can be converted to integers, (2) A <abbr title="JavaScript Object Notation">JSON</abbr> array can be converted to a standard <code>std::vector&lt;short&gt;</code>, (3) A <abbr title="JavaScript Object Notation">JSON</abbr> object can be converted to C++ associative containers such as <code>std::unordered_map&lt;std::string, json&gt;</code>.</p> <div class=highlight><pre><span></span><code><span class=cp>#include</span><span class=w> </span><span class=cpf>&lt;iostream&gt;</span>
+</code></pre></div></p> </li> <li> <p>Explicit pointer access to the internally stored <abbr title="JavaScript Object Notation">JSON</abbr> value. No copies are made.</p> </li> </ol> <h2 id=template-parameters>Template parameters<a class=headerlink href=#template-parameters title="Permanent link">&para;</a></h2> <dl> <dt><code>ValueType</code></dt> <dd>the value type to return</dd> <dt><code>BasicJsonType</code></dt> <dd>a specialization of <code>basic_json</code></dd> <dt><code>PointerType</code></dt> <dd>pointer type; must be a pointer to <a href=../array_t/ ><code>array_t</code></a>, <a href=../object_t/ ><code>object_t</code></a>, <a href=../string_t/ ><code>string_t</code></a>, <a href=../boolean_t/ ><code>boolean_t</code></a>, <a href=../number_integer_t/ ><code>number_integer_t</code></a>, or <a href=../number_unsigned_t/ ><code>number_unsigned_t</code></a>, <a href=../number_float_t/ ><code>number_float_t</code></a>, or <a href=../binary_t/ ><code>binary_t</code></a>. Other types will not compile.</dd> </dl> <h2 id=return-value>Return value<a class=headerlink href=#return-value title="Permanent link">&para;</a></h2> <ol> <li>copy of the <abbr title="JavaScript Object Notation">JSON</abbr> value, converted to <code>ValueType</code></li> <li>a copy of <code class=highlight><span class=o>*</span><span class=k>this</span></code>, converted into <code>BasicJsonType</code></li> <li>pointer to the internally stored <abbr title="JavaScript Object Notation">JSON</abbr> value if the requested pointer type fits to the <abbr title="JavaScript Object Notation">JSON</abbr> value; <code class=highlight><span class=nb>nullptr</span></code> otherwise</li> </ol> <h2 id=exceptions>Exceptions<a class=headerlink href=#exceptions title="Permanent link">&para;</a></h2> <p>Depends on what <code>json_serializer&lt;ValueType&gt;</code> <code>from_json()</code> method throws</p> <h2 id=complexity>Complexity<a class=headerlink href=#complexity title="Permanent link">&para;</a></h2> <p>Depends on the <code>json_serializer&lt;ValueType&gt;::from_json()</code> implementation for overloads (1) and (2); constant for overload (3).</p> <h2 id=notes>Notes<a class=headerlink href=#notes title="Permanent link">&para;</a></h2> <div class="admonition danger"> <p class=admonition-title>Undefined behavior for pointers</p> <p>Writing data to the pointee (overload 3) of the result yields an undefined state.</p> </div> <div class="admonition danger"> <p class=admonition-title>Undefined behavior for numeric conversions</p> <p>Conversions between numeric types are performed by the corresponding <code>from_json()</code> implementation using the target C++ type. When converting between numeric types, the library does not check whether the source value is representable by the target type.</p> <p>If the source value is outside the range of the target type, the behavior is the same as the corresponding C++ conversion. In particular, converting a floating-point value to an integer type that cannot represent the value results in undefined behavior.</p> <p>See <a href=../../../features/types/number_handling/#number-conversion>Number conversion</a> for more information.</p> </div> <h2 id=examples>Examples<a class=headerlink href=#examples title="Permanent link">&para;</a></h2> <details class=example> <summary>Example</summary> <p>The example below shows several conversions from <abbr title="JavaScript Object Notation">JSON</abbr> values to other types. There a few things to note: (1) Floating-point numbers can be converted to integers, (2) A <abbr title="JavaScript Object Notation">JSON</abbr> array can be converted to a standard <code>std::vector&lt;short&gt;</code>, (3) A <abbr title="JavaScript Object Notation">JSON</abbr> object can be converted to C++ associative containers such as <code>std::unordered_map&lt;std::string, json&gt;</code>.</p> <div class=highlight><pre><span></span><code><span class=cp>#include</span><span class=w> </span><span class=cpf>&lt;iostream&gt;</span>
 <span class=cp>#include</span><span class=w> </span><span class=cpf>&lt;unordered_map&gt;</span>
 <span class=cp>#include</span><span class=w> </span><span class=cpf>&lt;nlohmann/json.hpp&gt;</span>
 
@@ -103,4 +103,4 @@
 <span class=p>}</span>
 </code></pre></div> <p>Output:</p> <div class=highlight><pre><span></span><code><span class=mi>17</span><span class=w> </span><span class=mi>17</span><span class=w> </span><span class=mi>17</span><span class=w> </span><span class=mi>17</span>
 <span class=kc>true</span>
-</code></pre></div> </details> <h2 id=version-history>Version history<a class=headerlink href=#version-history title="Permanent link">&para;</a></h2> <ol> <li>Since version 2.1.0.</li> <li>Since version 2.1.0. Extended to work with other specializations of <code>basic_json</code> in version 3.2.0.</li> <li>Since version 1.0.0.</li> </ol> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 23, 2026 11:16:18 UTC">June 23, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
+</code></pre></div> </details> <h2 id=see-also>See also<a class=headerlink href=#see-also title="Permanent link">&para;</a></h2> <ul> <li><a href=../get_to/ >get_to</a> convert and write into a passed value</li> <li><a href=../get_ptr/ >get_ptr</a> get a pointer to the stored value</li> <li><a href=../get_ref/ >get_ref</a> get a reference to the stored value</li> <li><a href=../operator_ValueType/ >operator ValueType</a> get a value via implicit conversion</li> </ul> <h2 id=version-history>Version history<a class=headerlink href=#version-history title="Permanent link">&para;</a></h2> <ol> <li>Since version 2.1.0.</li> <li>Since version 2.1.0. Extended to work with other specializations of <code>basic_json</code> in version 3.2.0.</li> <li>Since version 1.0.0.</li> </ol> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 29, 2026 20:15:18 UTC">June 29, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
diff --git a/api/basic_json/get_allocator/index.html b/api/basic_json/get_allocator/index.html
index 080cff7..5422a0c 100644
--- a/api/basic_json/get_allocator/index.html
+++ b/api/basic_json/get_allocator/index.html
@@ -18,4 +18,4 @@
 <span class=w>    </span><span class=n>traits_t</span><span class=o>::</span><span class=n>deallocate</span><span class=p>(</span><span class=n>alloc</span><span class=p>,</span><span class=w> </span><span class=n>j</span><span class=p>,</span><span class=w> </span><span class=mi>1</span><span class=p>);</span>
 <span class=p>}</span>
 </code></pre></div> <p>Output:</p> <div class=highlight><pre><span></span><code><span class=s2>&quot;Hello, world!&quot;</span>
-</code></pre></div> </details> <h2 id=version-history>Version history<a class=headerlink href=#version-history title="Permanent link">&para;</a></h2> <ul> <li>Added in version 1.0.0.</li> </ul> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 23, 2026 11:16:18 UTC">June 23, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
+</code></pre></div> </details> <h2 id=version-history>Version history<a class=headerlink href=#version-history title="Permanent link">&para;</a></h2> <ul> <li>Added in version 1.0.0.</li> </ul> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 29, 2026 20:15:18 UTC">June 29, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
diff --git a/api/basic_json/get_binary/index.html b/api/basic_json/get_binary/index.html
index dc10406..721447d 100644
--- a/api/basic_json/get_binary/index.html
+++ b/api/basic_json/get_binary/index.html
@@ -1,4 +1,4 @@
-<!doctype html><html lang=en class=no-js> <head><meta charset=utf-8><meta name=viewport content="width=device-width,initial-scale=1"><meta name=author content="Niels Lohmann"><link href="https://json.nlohmann.me/api/basic_json/get_binary/" rel="canonical"><link href=../get_allocator/ rel=prev><link href=../get_ptr/ rel=next><link rel=icon href=../../../assets/images/favicon.png><meta name=generator content="mkdocs-1.6.1, mkdocs-material-9.7.6"><title>get_binary - JSON for Modern C++</title><link rel=stylesheet href=../../../assets/stylesheets/main.484c7ddc.min.css><link rel=stylesheet href=../../../assets/stylesheets/palette.ab4e12ef.min.css><link rel="stylesheet" href="../../../assets/external/fonts.googleapis.com/css.61a430c9.css"><style>:root{--md-text-font:"Roboto";--md-code-font:"JetBrains Mono"}</style><link rel=stylesheet href=../../../css/custom.css><script>__md_scope=new URL("../../..",location),__md_hash=e=>[...e].reduce(((e,_)=>(e<<5)-e+_.charCodeAt(0)),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script></head> <body dir=ltr data-md-color-scheme=default data-md-color-primary=indigo data-md-color-accent=indigo> <input class=md-toggle data-md-toggle=drawer type=checkbox id=__drawer autocomplete=off> <input class=md-toggle data-md-toggle=search type=checkbox id=__search autocomplete=off> <label class=md-overlay for=__drawer></label> <div data-md-component=skip> <a href=#nlohmannbasic_jsonget_binary class=md-skip> Skip to content </a> </div> <div data-md-component=announce> </div> <header class=md-header data-md-component=header> <nav class="md-header__inner md-grid" aria-label=Header> <a href=../../.. title="JSON for Modern C++" class="md-header__button md-logo" aria-label="JSON for Modern C++" data-md-component=logo> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54"/></svg> </a> <label class="md-header__button md-icon" for=__drawer> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M3 6h18v2H3zm0 5h18v2H3zm0 5h18v2H3z"/></svg> </label> <div class=md-header__title data-md-component=header-title> <div class=md-header__ellipsis> <div class=md-header__topic> <span class=md-ellipsis> JSON for Modern C++ </span> </div> <div class=md-header__topic data-md-component=header-topic> <span class=md-ellipsis> get_binary </span> </div> </div> </div> <form class=md-header__option data-md-component=palette> <input class=md-option data-md-color-media="(prefers-color-scheme: light)" data-md-color-scheme=default data-md-color-primary=indigo data-md-color-accent=indigo aria-label="Switch to dark mode" type=radio name=__palette id=__palette_0> <label class="md-header__button md-icon" title="Switch to dark mode" for=__palette_1 hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a4 4 0 0 0-4 4 4 4 0 0 0 4 4 4 4 0 0 0 4-4 4 4 0 0 0-4-4m0 10a6 6 0 0 1-6-6 6 6 0 0 1 6-6 6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12z"/></svg> </label> <input class=md-option data-md-color-media="(prefers-color-scheme: dark)" data-md-color-scheme=slate data-md-color-primary=indigo data-md-color-accent=indigo aria-label="Switch to light mode" type=radio name=__palette id=__palette_1> <label class="md-header__button md-icon" title="Switch to light mode" for=__palette_0 hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 18c-.89 0-1.74-.2-2.5-.55C11.56 16.5 13 14.42 13 12s-1.44-4.5-3.5-5.45C10.26 6.2 11.11 6 12 6a6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12z"/></svg> </label> </form> <script>var palette=__md_get("__palette");if(palette&&palette.color){if("(prefers-color-scheme)"===palette.color.media){var media=matchMedia("(prefers-color-scheme: light)"),input=document.querySelector(media.matches?"[data-md-color-media='(prefers-color-scheme: light)']":"[data-md-color-media='(prefers-color-scheme: dark)']");palette.color.media=input.getAttribute("data-md-color-media"),palette.color.scheme=input.getAttribute("data-md-color-scheme"),palette.color.primary=input.getAttribute("data-md-color-primary"),palette.color.accent=input.getAttribute("data-md-color-accent")}for(var[key,value]of Object.entries(palette.color))document.body.setAttribute("data-md-color-"+key,value)}</script> <label class="md-header__button md-icon" for=__search> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg> </label> <div class=md-search data-md-component=search role=dialog> <label class=md-search__overlay for=__search></label> <div class=md-search__inner role=search> <form class=md-search__form name=search> <input type=text class=md-search__input name=query aria-label=Search placeholder=Search autocapitalize=off autocorrect=off autocomplete=off spellcheck=false data-md-component=search-query required> <label class="md-search__icon md-icon" for=__search> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11z"/></svg> </label> <nav class=md-search__options aria-label=Search> <button type=reset class="md-search__icon md-icon" title=Clear aria-label=Clear tabindex=-1> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z"/></svg> </button> </nav> </form> <div class=md-search__output> <div class=md-search__scrollwrap tabindex=0 data-md-scrollfix> <div class=md-search-result data-md-component=search-result> <div class=md-search-result__meta> Initializing search </div> <ol class=md-search-result__list role=presentation></ol> </div> </div> </div> </div> </div> <div class=md-header__source> <a href="https://github.com/nlohmann/json" title="Go to repository" class="md-source" data-md-component="source"> <div class="md-source__icon md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </div> <div class=md-source__repository> nlohmann/json </div> </a> </div> </nav> </header> <div class=md-container data-md-component=container> <nav class=md-tabs aria-label=Tabs data-md-component=tabs> <div class=md-grid> <ul class=md-tabs__list> <li class=md-tabs__item> <a href=../../.. class=md-tabs__link> Home </a> </li> <li class=md-tabs__item> <a href=../../../features/arbitrary_types/ class=md-tabs__link> Features </a> </li> <li class=md-tabs__item> <a href=../../../integration/ class=md-tabs__link> Integration </a> </li> <li class="md-tabs__item md-tabs__item--active"> <a href=../ class=md-tabs__link> API Documentation </a> </li> <li class=md-tabs__item> <a href=../../../community/ class=md-tabs__link> Community </a> </li> </ul> </div> </nav> <main class=md-main data-md-component=main> <div class="md-main__inner md-grid"> <div class="md-sidebar md-sidebar--primary" data-md-component=sidebar data-md-type=navigation> <div class=md-sidebar__scrollwrap> <div class=md-sidebar__inner> <nav class="md-nav md-nav--primary md-nav--lifted" aria-label=Navigation data-md-level=0> <label class=md-nav__title for=__drawer> <a href=../../.. title="JSON for Modern C++" class="md-nav__button md-logo" aria-label="JSON for Modern C++" data-md-component=logo> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54"/></svg> </a> JSON for Modern C++ </label> <div class=md-nav__source> <a href="https://github.com/nlohmann/json" title="Go to repository" class="md-source" data-md-component="source"> <div class="md-source__icon md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </div> <div class=md-source__repository> nlohmann/json </div> </a> </div> <ul class=md-nav__list data-md-scrollfix> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_1> <div class="md-nav__link md-nav__container"> <a href=../../.. class="md-nav__link "> <span class=md-ellipsis> Home </span> </a> <label class="md-nav__link " for=__nav_1 id=__nav_1_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_1_label aria-expanded=false> <label class=md-nav__title for=__nav_1> <span class="md-nav__icon md-icon"></span> Home </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../home/license/ class=md-nav__link> <span class=md-ellipsis> License </span> </a> </li> <li class=md-nav__item> <a href=../../../home/faq/ class=md-nav__link> <span class=md-ellipsis> FAQ </span> </a> </li> <li class=md-nav__item> <a href=../../../home/exceptions/ class=md-nav__link> <span class=md-ellipsis> Exceptions </span> </a> </li> <li class=md-nav__item> <a href=../../../home/releases/ class=md-nav__link> <span class=md-ellipsis> Releases </span> </a> </li> <li class=md-nav__item> <a href=../../../home/design_goals/ class=md-nav__link> <span class=md-ellipsis> Design goals </span> </a> </li> <li class=md-nav__item> <a href=../../../home/architecture/ class=md-nav__link> <span class=md-ellipsis> Architecture </span> </a> </li> <li class=md-nav__item> <a href=../../../home/customers/ class=md-nav__link> <span class=md-ellipsis> Customers </span> </a> </li> <li class=md-nav__item> <a href=../../../home/sponsors/ class=md-nav__link> <span class=md-ellipsis> Sponsors </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2> <label class=md-nav__link for=__nav_2 id=__nav_2_label tabindex=0> <span class=md-ellipsis> Features </span> <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_2_label aria-expanded=false> <label class=md-nav__title for=__nav_2> <span class="md-nav__icon md-icon"></span> Features </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/arbitrary_types/ class=md-nav__link> <span class=md-ellipsis> Arbitrary Type Conversions </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_2> <div class="md-nav__link md-nav__container"> <a href=../../../features/binary_formats/ class="md-nav__link "> <span class=md-ellipsis> Binary Formats </span> </a> <label class="md-nav__link " for=__nav_2_2 id=__nav_2_2_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_2_label aria-expanded=false> <label class=md-nav__title for=__nav_2_2> <span class="md-nav__icon md-icon"></span> Binary Formats </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/binary_formats/bjdata/ class=md-nav__link> <span class=md-ellipsis> BJData </span> </a> </li> <li class=md-nav__item> <a href=../../../features/binary_formats/bson/ class=md-nav__link> <span class=md-ellipsis> BSON </span> </a> </li> <li class=md-nav__item> <a href=../../../features/binary_formats/cbor/ class=md-nav__link> <span class=md-ellipsis> CBOR </span> </a> </li> <li class=md-nav__item> <a href=../../../features/binary_formats/messagepack/ class=md-nav__link> <span class=md-ellipsis> MessagePack </span> </a> </li> <li class=md-nav__item> <a href=../../../features/binary_formats/ubjson/ class=md-nav__link> <span class=md-ellipsis> UBJSON </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../../features/binary_values/ class=md-nav__link> <span class=md-ellipsis> Binary Values </span> </a> </li> <li class=md-nav__item> <a href=../../../features/comments/ class=md-nav__link> <span class=md-ellipsis> Comments </span> </a> </li> <li class=md-nav__item> <a href=../../../features/trailing_commas/ class=md-nav__link> <span class=md-ellipsis> Trailing Commas </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_6> <div class="md-nav__link md-nav__container"> <a href=../../../features/element_access/ class="md-nav__link "> <span class=md-ellipsis> Element Access </span> </a> <label class="md-nav__link " for=__nav_2_6 id=__nav_2_6_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_6_label aria-expanded=false> <label class=md-nav__title for=__nav_2_6> <span class="md-nav__icon md-icon"></span> Element Access </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/element_access/unchecked_access/ class=md-nav__link> <span class=md-ellipsis> Unchecked access: operator[] </span> </a> </li> <li class=md-nav__item> <a href=../../../features/element_access/checked_access/ class=md-nav__link> <span class=md-ellipsis> Checked access: at </span> </a> </li> <li class=md-nav__item> <a href=../../../features/element_access/default_value/ class=md-nav__link> <span class=md-ellipsis> Access with default value: value </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../../features/iterators/ class=md-nav__link> <span class=md-ellipsis> Iterators </span> </a> </li> <li class=md-nav__item> <a href=../../../features/json_pointer/ class=md-nav__link> <span class=md-ellipsis> JSON Pointer </span> </a> </li> <li class=md-nav__item> <a href=../../../features/json_patch/ class=md-nav__link> <span class=md-ellipsis> JSON Patch and Diff </span> </a> </li> <li class=md-nav__item> <a href=../../../features/merge_patch/ class=md-nav__link> <span class=md-ellipsis> JSON Merge Patch </span> </a> </li> <li class=md-nav__item> <a href=../../../features/modules/ class=md-nav__link> <span class=md-ellipsis> Modules </span> </a> </li> <li class=md-nav__item> <a href=../../../features/namespace/ class=md-nav__link> <span class=md-ellipsis> nlohmann Namespace </span> </a> </li> <li class=md-nav__item> <a href=../../../features/object_order/ class=md-nav__link> <span class=md-ellipsis> Object Order </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_14> <div class="md-nav__link md-nav__container"> <a href=../../../features/parsing/ class="md-nav__link "> <span class=md-ellipsis> Parsing </span> </a> <label class="md-nav__link " for=__nav_2_14 id=__nav_2_14_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_14_label aria-expanded=false> <label class=md-nav__title for=__nav_2_14> <span class="md-nav__icon md-icon"></span> Parsing </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/parsing/json_lines/ class=md-nav__link> <span class=md-ellipsis> JSON Lines </span> </a> </li> <li class=md-nav__item> <a href=../../../features/parsing/parse_exceptions/ class=md-nav__link> <span class=md-ellipsis> Parsing and Exceptions </span> </a> </li> <li class=md-nav__item> <a href=../../../features/parsing/parser_callbacks/ class=md-nav__link> <span class=md-ellipsis> Parser Callbacks </span> </a> </li> <li class=md-nav__item> <a href=../../../features/parsing/sax_interface/ class=md-nav__link> <span class=md-ellipsis> SAX Interface </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../../features/assertions/ class=md-nav__link> <span class=md-ellipsis> Runtime Assertions </span> </a> </li> <li class=md-nav__item> <a href=../../../features/enum_conversion/ class=md-nav__link> <span class=md-ellipsis> Specializing enum conversion </span> </a> </li> <li class=md-nav__item> <a href=../../../features/macros/ class=md-nav__link> <span class=md-ellipsis> Supported Macros </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_18> <div class="md-nav__link md-nav__container"> <a href=../../../features/types/ class="md-nav__link "> <span class=md-ellipsis> Types </span> </a> <label class="md-nav__link " for=__nav_2_18 id=__nav_2_18_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_18_label aria-expanded=false> <label class=md-nav__title for=__nav_2_18> <span class="md-nav__icon md-icon"></span> Types </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/types/number_handling/ class=md-nav__link> <span class=md-ellipsis> Number Handling </span> </a> </li> </ul> </nav> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_3> <div class="md-nav__link md-nav__container"> <a href=../../../integration/ class="md-nav__link "> <span class=md-ellipsis> Integration </span> </a> <label class="md-nav__link " for=__nav_3 id=__nav_3_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_3_label aria-expanded=false> <label class=md-nav__title for=__nav_3> <span class="md-nav__icon md-icon"></span> Integration </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../integration/migration_guide/ class=md-nav__link> <span class=md-ellipsis> Migration Guide </span> </a> </li> <li class=md-nav__item> <a href=../../../integration/cmake/ class=md-nav__link> <span class=md-ellipsis> CMake </span> </a> </li> <li class=md-nav__item> <a href=../../../integration/package_managers/ class=md-nav__link> <span class=md-ellipsis> Package Managers </span> </a> </li> <li class=md-nav__item> <a href=../../../integration/pkg-config/ class=md-nav__link> <span class=md-ellipsis> Pkg-config </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--active md-nav__item--section md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4 checked> <label class=md-nav__link for=__nav_4 id=__nav_4_label tabindex> <span class=md-ellipsis> API Documentation </span> <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_4_label aria-expanded=true> <label class=md-nav__title for=__nav_4> <span class="md-nav__icon md-icon"></span> API Documentation </label> <ul class=md-nav__list data-md-scrollfix> <li class="md-nav__item md-nav__item--active md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_1 checked> <div class="md-nav__link md-nav__container"> <a href=../ class="md-nav__link "> <span class=md-ellipsis> basic_json </span> </a> <label class="md-nav__link " for=__nav_4_1 id=__nav_4_1_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_1_label aria-expanded=true> <label class=md-nav__title for=__nav_4_1> <span class="md-nav__icon md-icon"></span> basic_json </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../basic_json/ class=md-nav__link> <span class=md-ellipsis> (Constructor) </span> </a> </li> <li class=md-nav__item> <a href=../~basic_json/ class=md-nav__link> <span class=md-ellipsis> (Destructor) </span> </a> </li> <li class=md-nav__item> <a href=../accept/ class=md-nav__link> <span class=md-ellipsis> accept </span> </a> </li> <li class=md-nav__item> <a href=../array/ class=md-nav__link> <span class=md-ellipsis> array </span> </a> </li> <li class=md-nav__item> <a href=../array_t/ class=md-nav__link> <span class=md-ellipsis> array_t </span> </a> </li> <li class=md-nav__item> <a href=../at/ class=md-nav__link> <span class=md-ellipsis> at </span> </a> </li> <li class=md-nav__item> <a href=../back/ class=md-nav__link> <span class=md-ellipsis> back </span> </a> </li> <li class=md-nav__item> <a href=../begin/ class=md-nav__link> <span class=md-ellipsis> begin </span> </a> </li> <li class=md-nav__item> <a href=../binary/ class=md-nav__link> <span class=md-ellipsis> binary </span> </a> </li> <li class=md-nav__item> <a href=../binary_t/ class=md-nav__link> <span class=md-ellipsis> binary_t </span> </a> </li> <li class=md-nav__item> <a href=../boolean_t/ class=md-nav__link> <span class=md-ellipsis> boolean_t </span> </a> </li> <li class=md-nav__item> <a href=../cbegin/ class=md-nav__link> <span class=md-ellipsis> cbegin </span> </a> </li> <li class=md-nav__item> <a href=../cbor_tag_handler_t/ class=md-nav__link> <span class=md-ellipsis> cbor_tag_handler_t </span> </a> </li> <li class=md-nav__item> <a href=../cend/ class=md-nav__link> <span class=md-ellipsis> cend </span> </a> </li> <li class=md-nav__item> <a href=../clear/ class=md-nav__link> <span class=md-ellipsis> clear </span> </a> </li> <li class=md-nav__item> <a href=../contains/ class=md-nav__link> <span class=md-ellipsis> contains </span> </a> </li> <li class=md-nav__item> <a href=../count/ class=md-nav__link> <span class=md-ellipsis> count </span> </a> </li> <li class=md-nav__item> <a href=../crbegin/ class=md-nav__link> <span class=md-ellipsis> crbegin </span> </a> </li> <li class=md-nav__item> <a href=../crend/ class=md-nav__link> <span class=md-ellipsis> crend </span> </a> </li> <li class=md-nav__item> <a href=../default_object_comparator_t/ class=md-nav__link> <span class=md-ellipsis> default_object_comparator_t </span> </a> </li> <li class=md-nav__item> <a href=../diff/ class=md-nav__link> <span class=md-ellipsis> diff </span> </a> </li> <li class=md-nav__item> <a href=../dump/ class=md-nav__link> <span class=md-ellipsis> dump </span> </a> </li> <li class=md-nav__item> <a href=../emplace/ class=md-nav__link> <span class=md-ellipsis> emplace </span> </a> </li> <li class=md-nav__item> <a href=../emplace_back/ class=md-nav__link> <span class=md-ellipsis> emplace_back </span> </a> </li> <li class=md-nav__item> <a href=../empty/ class=md-nav__link> <span class=md-ellipsis> empty </span> </a> </li> <li class=md-nav__item> <a href=../end/ class=md-nav__link> <span class=md-ellipsis> end </span> </a> </li> <li class=md-nav__item> <a href=../end_pos/ class=md-nav__link> <span class=md-ellipsis> end_pos </span> </a> </li> <li class=md-nav__item> <a href=../erase/ class=md-nav__link> <span class=md-ellipsis> erase </span> </a> </li> <li class=md-nav__item> <a href=../error_handler_t/ class=md-nav__link> <span class=md-ellipsis> error_handler_t </span> </a> </li> <li class=md-nav__item> <a href=../exception/ class=md-nav__link> <span class=md-ellipsis> exception </span> </a> </li> <li class=md-nav__item> <a href=../find/ class=md-nav__link> <span class=md-ellipsis> find </span> </a> </li> <li class=md-nav__item> <a href=../flatten/ class=md-nav__link> <span class=md-ellipsis> flatten </span> </a> </li> <li class=md-nav__item> <a href=../from_bjdata/ class=md-nav__link> <span class=md-ellipsis> from_bjdata </span> </a> </li> <li class=md-nav__item> <a href=../from_bson/ class=md-nav__link> <span class=md-ellipsis> from_bson </span> </a> </li> <li class=md-nav__item> <a href=../from_cbor/ class=md-nav__link> <span class=md-ellipsis> from_cbor </span> </a> </li> <li class=md-nav__item> <a href=../from_msgpack/ class=md-nav__link> <span class=md-ellipsis> from_msgpack </span> </a> </li> <li class=md-nav__item> <a href=../from_ubjson/ class=md-nav__link> <span class=md-ellipsis> from_ubjson </span> </a> </li> <li class=md-nav__item> <a href=../front/ class=md-nav__link> <span class=md-ellipsis> front </span> </a> </li> <li class=md-nav__item> <a href=../get/ class=md-nav__link> <span class=md-ellipsis> get </span> </a> </li> <li class=md-nav__item> <a href=../get_allocator/ class=md-nav__link> <span class=md-ellipsis> get_allocator </span> </a> </li> <li class="md-nav__item md-nav__item--active"> <input class="md-nav__toggle md-toggle" type=checkbox id=__toc> <label class="md-nav__link md-nav__link--active" for=__toc> <span class=md-ellipsis> get_binary </span> <span class="md-nav__icon md-icon"></span> </label> <a href=./ class="md-nav__link md-nav__link--active"> <span class=md-ellipsis> get_binary </span> </a> <nav class="md-nav md-nav--secondary" aria-label="Table of contents"> <label class=md-nav__title for=__toc> <span class="md-nav__icon md-icon"></span> Table of contents </label> <ul class=md-nav__list data-md-component=toc data-md-scrollfix> <li class=md-nav__item> <a href=#return-value class=md-nav__link> <span class=md-ellipsis> Return value </span> </a> </li> <li class=md-nav__item> <a href=#exception-safety class=md-nav__link> <span class=md-ellipsis> Exception safety </span> </a> </li> <li class=md-nav__item> <a href=#exceptions class=md-nav__link> <span class=md-ellipsis> Exceptions </span> </a> </li> <li class=md-nav__item> <a href=#complexity class=md-nav__link> <span class=md-ellipsis> Complexity </span> </a> </li> <li class=md-nav__item> <a href=#examples class=md-nav__link> <span class=md-ellipsis> Examples </span> </a> </li> <li class=md-nav__item> <a href=#version-history class=md-nav__link> <span class=md-ellipsis> Version history </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../get_ptr/ class=md-nav__link> <span class=md-ellipsis> get_ptr </span> </a> </li> <li class=md-nav__item> <a href=../get_ref/ class=md-nav__link> <span class=md-ellipsis> get_ref </span> </a> </li> <li class=md-nav__item> <a href=../get_to/ class=md-nav__link> <span class=md-ellipsis> get_to </span> </a> </li> <li class=md-nav__item> <a href=../std_hash/ class=md-nav__link> <span class=md-ellipsis> std::hash&lt;basic_json&gt; </span> </a> </li> <li class=md-nav__item> <a href=../input_format_t/ class=md-nav__link> <span class=md-ellipsis> input_format_t </span> </a> </li> <li class=md-nav__item> <a href=../insert/ class=md-nav__link> <span class=md-ellipsis> insert </span> </a> </li> <li class=md-nav__item> <a href=../invalid_iterator/ class=md-nav__link> <span class=md-ellipsis> invalid_iterator </span> </a> </li> <li class=md-nav__item> <a href=../is_array/ class=md-nav__link> <span class=md-ellipsis> is_array </span> </a> </li> <li class=md-nav__item> <a href=../is_binary/ class=md-nav__link> <span class=md-ellipsis> is_binary </span> </a> </li> <li class=md-nav__item> <a href=../is_boolean/ class=md-nav__link> <span class=md-ellipsis> is_boolean </span> </a> </li> <li class=md-nav__item> <a href=../is_discarded/ class=md-nav__link> <span class=md-ellipsis> is_discarded </span> </a> </li> <li class=md-nav__item> <a href=../is_null/ class=md-nav__link> <span class=md-ellipsis> is_null </span> </a> </li> <li class=md-nav__item> <a href=../is_number/ class=md-nav__link> <span class=md-ellipsis> is_number </span> </a> </li> <li class=md-nav__item> <a href=../is_number_float/ class=md-nav__link> <span class=md-ellipsis> is_number_float </span> </a> </li> <li class=md-nav__item> <a href=../is_number_integer/ class=md-nav__link> <span class=md-ellipsis> is_number_integer </span> </a> </li> <li class=md-nav__item> <a href=../is_number_unsigned/ class=md-nav__link> <span class=md-ellipsis> is_number_unsigned </span> </a> </li> <li class=md-nav__item> <a href=../is_object/ class=md-nav__link> <span class=md-ellipsis> is_object </span> </a> </li> <li class=md-nav__item> <a href=../is_primitive/ class=md-nav__link> <span class=md-ellipsis> is_primitive </span> </a> </li> <li class=md-nav__item> <a href=../is_string/ class=md-nav__link> <span class=md-ellipsis> is_string </span> </a> </li> <li class=md-nav__item> <a href=../is_structured/ class=md-nav__link> <span class=md-ellipsis> is_structured </span> </a> </li> <li class=md-nav__item> <a href=../items/ class=md-nav__link> <span class=md-ellipsis> items </span> </a> </li> <li class=md-nav__item> <a href=../json_base_class_t/ class=md-nav__link> <span class=md-ellipsis> json_base_class_t </span> </a> </li> <li class=md-nav__item> <a href=../json_serializer/ class=md-nav__link> <span class=md-ellipsis> json_serializer </span> </a> </li> <li class=md-nav__item> <a href=../max_size/ class=md-nav__link> <span class=md-ellipsis> max_size </span> </a> </li> <li class=md-nav__item> <a href=../meta/ class=md-nav__link> <span class=md-ellipsis> meta </span> </a> </li> <li class=md-nav__item> <a href=../merge_patch/ class=md-nav__link> <span class=md-ellipsis> merge_patch </span> </a> </li> <li class=md-nav__item> <a href=../number_float_t/ class=md-nav__link> <span class=md-ellipsis> number_float_t </span> </a> </li> <li class=md-nav__item> <a href=../number_integer_t/ class=md-nav__link> <span class=md-ellipsis> number_integer_t </span> </a> </li> <li class=md-nav__item> <a href=../number_unsigned_t/ class=md-nav__link> <span class=md-ellipsis> number_unsigned_t </span> </a> </li> <li class=md-nav__item> <a href=../object/ class=md-nav__link> <span class=md-ellipsis> object </span> </a> </li> <li class=md-nav__item> <a href=../object_comparator_t/ class=md-nav__link> <span class=md-ellipsis> object_comparator_t </span> </a> </li> <li class=md-nav__item> <a href=../object_t/ class=md-nav__link> <span class=md-ellipsis> object_t </span> </a> </li> <li class=md-nav__item> <a href=../operator_ValueType/ class=md-nav__link> <span class=md-ellipsis> operator ValueType </span> </a> </li> <li class=md-nav__item> <a href=../operator_value_t/ class=md-nav__link> <span class=md-ellipsis> operator value_t </span> </a> </li> <li class=md-nav__item> <a href=../operator%5B%5D/ class=md-nav__link> <span class=md-ellipsis> operator[] </span> </a> </li> <li class=md-nav__item> <a href=../operator%3D/ class=md-nav__link> <span class=md-ellipsis> operator= </span> </a> </li> <li class=md-nav__item> <a href=../operator%2B%3D/ class=md-nav__link> <span class=md-ellipsis> operator+= </span> </a> </li> <li class=md-nav__item> <a href=../operator_eq/ class=md-nav__link> <span class=md-ellipsis> operator== </span> </a> </li> <li class=md-nav__item> <a href=../operator_ne/ class=md-nav__link> <span class=md-ellipsis> operator!= </span> </a> </li> <li class=md-nav__item> <a href=../operator_lt/ class=md-nav__link> <span class=md-ellipsis> operator< </span> </a> </li> <li class=md-nav__item> <a href=../operator_gt/ class=md-nav__link> <span class=md-ellipsis> operator> </span> </a> </li> <li class=md-nav__item> <a href=../operator_le/ class=md-nav__link> <span class=md-ellipsis> operator<= </span> </a> </li> <li class=md-nav__item> <a href=../operator_ge/ class=md-nav__link> <span class=md-ellipsis> operator>= </span> </a> </li> <li class=md-nav__item> <a href=../operator_spaceship/ class=md-nav__link> <span class=md-ellipsis> operator<=> </span> </a> </li> <li class=md-nav__item> <a href=../out_of_range/ class=md-nav__link> <span class=md-ellipsis> out_of_range </span> </a> </li> <li class=md-nav__item> <a href=../other_error/ class=md-nav__link> <span class=md-ellipsis> other_error </span> </a> </li> <li class=md-nav__item> <a href=../parse/ class=md-nav__link> <span class=md-ellipsis> parse </span> </a> </li> <li class=md-nav__item> <a href=../parse_error/ class=md-nav__link> <span class=md-ellipsis> parse_error </span> </a> </li> <li class=md-nav__item> <a href=../parse_event_t/ class=md-nav__link> <span class=md-ellipsis> parse_event_t </span> </a> </li> <li class=md-nav__item> <a href=../parser_callback_t/ class=md-nav__link> <span class=md-ellipsis> parser_callback_t </span> </a> </li> <li class=md-nav__item> <a href=../patch/ class=md-nav__link> <span class=md-ellipsis> patch </span> </a> </li> <li class=md-nav__item> <a href=../patch_inplace/ class=md-nav__link> <span class=md-ellipsis> patch_inplace </span> </a> </li> <li class=md-nav__item> <a href=../push_back/ class=md-nav__link> <span class=md-ellipsis> push_back </span> </a> </li> <li class=md-nav__item> <a href=../rbegin/ class=md-nav__link> <span class=md-ellipsis> rbegin </span> </a> </li> <li class=md-nav__item> <a href=../rend/ class=md-nav__link> <span class=md-ellipsis> rend </span> </a> </li> <li class=md-nav__item> <a href=../sax_parse/ class=md-nav__link> <span class=md-ellipsis> sax_parse </span> </a> </li> <li class=md-nav__item> <a href=../size/ class=md-nav__link> <span class=md-ellipsis> size </span> </a> </li> <li class=md-nav__item> <a href=../start_pos/ class=md-nav__link> <span class=md-ellipsis> start_pos </span> </a> </li> <li class=md-nav__item> <a href=../string_t/ class=md-nav__link> <span class=md-ellipsis> string_t </span> </a> </li> <li class=md-nav__item> <a href=../swap/ class=md-nav__link> <span class=md-ellipsis> swap </span> </a> </li> <li class=md-nav__item> <a href=../std_swap/ class=md-nav__link> <span class=md-ellipsis> std::swap&lt;basic_json&gt; </span> </a> </li> <li class=md-nav__item> <a href=../to_bjdata/ class=md-nav__link> <span class=md-ellipsis> to_bjdata </span> </a> </li> <li class=md-nav__item> <a href=../to_bson/ class=md-nav__link> <span class=md-ellipsis> to_bson </span> </a> </li> <li class=md-nav__item> <a href=../to_cbor/ class=md-nav__link> <span class=md-ellipsis> to_cbor </span> </a> </li> <li class=md-nav__item> <a href=../to_msgpack/ class=md-nav__link> <span class=md-ellipsis> to_msgpack </span> </a> </li> <li class=md-nav__item> <a href=../to_string/ class=md-nav__link> <span class=md-ellipsis> to_string </span> </a> </li> <li class=md-nav__item> <a href=../to_ubjson/ class=md-nav__link> <span class=md-ellipsis> to_ubjson </span> </a> </li> <li class=md-nav__item> <a href=../type/ class=md-nav__link> <span class=md-ellipsis> type </span> </a> </li> <li class=md-nav__item> <a href=../type_error/ class=md-nav__link> <span class=md-ellipsis> type_error </span> </a> </li> <li class=md-nav__item> <a href=../type_name/ class=md-nav__link> <span class=md-ellipsis> type_name </span> </a> </li> <li class=md-nav__item> <a href=../unflatten/ class=md-nav__link> <span class=md-ellipsis> unflatten </span> </a> </li> <li class=md-nav__item> <a href=../update/ class=md-nav__link> <span class=md-ellipsis> update </span> </a> </li> <li class=md-nav__item> <a href=../value/ class=md-nav__link> <span class=md-ellipsis> value </span> </a> </li> <li class=md-nav__item> <a href=../value_t/ class=md-nav__link> <span class=md-ellipsis> value_t </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_2> <div class="md-nav__link md-nav__container"> <a href=../../byte_container_with_subtype/ class="md-nav__link "> <span class=md-ellipsis> byte_container_with_subtype </span> </a> <label class="md-nav__link " for=__nav_4_2 id=__nav_4_2_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_2_label aria-expanded=false> <label class=md-nav__title for=__nav_4_2> <span class="md-nav__icon md-icon"></span> byte_container_with_subtype </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../byte_container_with_subtype/byte_container_with_subtype/ class=md-nav__link> <span class=md-ellipsis> (constructor) </span> </a> </li> <li class=md-nav__item> <a href=../../byte_container_with_subtype/clear_subtype/ class=md-nav__link> <span class=md-ellipsis> clear_subtype </span> </a> </li> <li class=md-nav__item> <a href=../../byte_container_with_subtype/has_subtype/ class=md-nav__link> <span class=md-ellipsis> has_subtype </span> </a> </li> <li class=md-nav__item> <a href=../../byte_container_with_subtype/set_subtype/ class=md-nav__link> <span class=md-ellipsis> set_subtype </span> </a> </li> <li class=md-nav__item> <a href=../../byte_container_with_subtype/subtype/ class=md-nav__link> <span class=md-ellipsis> subtype </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_3> <div class="md-nav__link md-nav__container"> <a href=../../adl_serializer/ class="md-nav__link "> <span class=md-ellipsis> adl_serializer </span> </a> <label class="md-nav__link " for=__nav_4_3 id=__nav_4_3_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_3_label aria-expanded=false> <label class=md-nav__title for=__nav_4_3> <span class="md-nav__icon md-icon"></span> adl_serializer </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../adl_serializer/from_json/ class=md-nav__link> <span class=md-ellipsis> from_json </span> </a> </li> <li class=md-nav__item> <a href=../../adl_serializer/to_json/ class=md-nav__link> <span class=md-ellipsis> to_json </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../json/ class=md-nav__link> <span class=md-ellipsis> json </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_5> <div class="md-nav__link md-nav__container"> <a href=../../json_pointer/ class="md-nav__link "> <span class=md-ellipsis> json_pointer </span> </a> <label class="md-nav__link " for=__nav_4_5 id=__nav_4_5_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_5_label aria-expanded=false> <label class=md-nav__title for=__nav_4_5> <span class="md-nav__icon md-icon"></span> json_pointer </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../json_pointer/json_pointer/ class=md-nav__link> <span class=md-ellipsis> (Constructor) </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/back/ class=md-nav__link> <span class=md-ellipsis> back </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/empty/ class=md-nav__link> <span class=md-ellipsis> empty </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/front/ class=md-nav__link> <span class=md-ellipsis> front </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_string_t/ class=md-nav__link> <span class=md-ellipsis> operator string_t </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_eq/ class=md-nav__link> <span class=md-ellipsis> operator== </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_ne/ class=md-nav__link> <span class=md-ellipsis> operator!= </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_slash/ class=md-nav__link> <span class=md-ellipsis> operator/ </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_slasheq/ class=md-nav__link> <span class=md-ellipsis> operator/= </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/parent_pointer/ class=md-nav__link> <span class=md-ellipsis> parent_pointer </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/pop_back/ class=md-nav__link> <span class=md-ellipsis> pop_back </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/pop_front/ class=md-nav__link> <span class=md-ellipsis> pop_front </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/push_back/ class=md-nav__link> <span class=md-ellipsis> push_back </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/push_front/ class=md-nav__link> <span class=md-ellipsis> push_front </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/string_t/ class=md-nav__link> <span class=md-ellipsis> string_t </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/to_string/ class=md-nav__link> <span class=md-ellipsis> to_string </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_6> <div class="md-nav__link md-nav__container"> <a href=../../json_sax/ class="md-nav__link "> <span class=md-ellipsis> json_sax </span> </a> <label class="md-nav__link " for=__nav_4_6 id=__nav_4_6_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_6_label aria-expanded=false> <label class=md-nav__title for=__nav_4_6> <span class="md-nav__icon md-icon"></span> json_sax </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../json_sax/binary/ class=md-nav__link> <span class=md-ellipsis> binary </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/boolean/ class=md-nav__link> <span class=md-ellipsis> boolean </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/end_array/ class=md-nav__link> <span class=md-ellipsis> end_array </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/end_object/ class=md-nav__link> <span class=md-ellipsis> end_object </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/key/ class=md-nav__link> <span class=md-ellipsis> key </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/null/ class=md-nav__link> <span class=md-ellipsis> null </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/number_float/ class=md-nav__link> <span class=md-ellipsis> number_float </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/number_integer/ class=md-nav__link> <span class=md-ellipsis> number_integer </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/number_unsigned/ class=md-nav__link> <span class=md-ellipsis> number_unsigned </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/parse_error/ class=md-nav__link> <span class=md-ellipsis> parse_error </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/start_array/ class=md-nav__link> <span class=md-ellipsis> start_array </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/start_object/ class=md-nav__link> <span class=md-ellipsis> start_object </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/string/ class=md-nav__link> <span class=md-ellipsis> string </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../operator_ltlt/ class=md-nav__link> <span class=md-ellipsis> operator<<(basic_json), operator<<(json_pointer) </span> </a> </li> <li class=md-nav__item> <a href=../../operator_gtgt/ class=md-nav__link> <span class=md-ellipsis> operator>>(basic_json) </span> </a> </li> <li class=md-nav__item> <a href=../../operator_literal_json/ class=md-nav__link> <span class=md-ellipsis> operator""_json </span> </a> </li> <li class=md-nav__item> <a href=../../operator_literal_json_pointer/ class=md-nav__link> <span class=md-ellipsis> operator""_json_pointer </span> </a> </li> <li class=md-nav__item> <a href=../../ordered_json/ class=md-nav__link> <span class=md-ellipsis> ordered_json </span> </a> </li> <li class=md-nav__item> <a href=../../ordered_map/ class=md-nav__link> <span class=md-ellipsis> ordered_map </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_13> <div class="md-nav__link md-nav__container"> <a href=../../macros/ class="md-nav__link "> <span class=md-ellipsis> macros </span> </a> <label class="md-nav__link " for=__nav_4_13 id=__nav_4_13_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_13_label aria-expanded=false> <label class=md-nav__title for=__nav_4_13> <span class="md-nav__icon md-icon"></span> macros </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../macros/json_assert/ class=md-nav__link> <span class=md-ellipsis> JSON_ASSERT </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_brace_init_copy_semantics/ class=md-nav__link> <span class=md-ellipsis> JSON_BRACE_INIT_COPY_SEMANTICS </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_throw_user/ class=md-nav__link> <span class=md-ellipsis> JSON_CATCH_USER, JSON_THROW_USER, JSON_TRY_USER </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_diagnostics/ class=md-nav__link> <span class=md-ellipsis> JSON_DIAGNOSTICS </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_diagnostic_positions/ class=md-nav__link> <span class=md-ellipsis> JSON_DIAGNOSTIC_POSITIONS </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_disable_enum_serialization/ class=md-nav__link> <span class=md-ellipsis> JSON_DISABLE_ENUM_SERIALIZATION </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_has_cpp_11/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_CPP_11, JSON_HAS_CPP_14, JSON_HAS_CPP_17, JSON_HAS_CPP_20 </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_has_filesystem/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_EXPERIMENTAL_FILESYSTEM, JSON_HAS_FILESYSTEM </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_has_ranges/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_RANGES </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_has_static_rtti/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_STATIC_RTTI </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_has_three_way_comparison/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_THREE_WAY_COMPARISON </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_noexception/ class=md-nav__link> <span class=md-ellipsis> JSON_NOEXCEPTION </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_no_io/ class=md-nav__link> <span class=md-ellipsis> JSON_NO_IO </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_skip_library_version_check/ class=md-nav__link> <span class=md-ellipsis> JSON_SKIP_LIBRARY_VERSION_CHECK </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_skip_unsupported_compiler_check/ class=md-nav__link> <span class=md-ellipsis> JSON_SKIP_UNSUPPORTED_COMPILER_CHECK </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_use_global_udls/ class=md-nav__link> <span class=md-ellipsis> JSON_USE_GLOBAL_UDLS </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_use_implicit_conversions/ class=md-nav__link> <span class=md-ellipsis> JSON_USE_IMPLICIT_CONVERSIONS </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_use_legacy_discarded_value_comparison/ class=md-nav__link> <span class=md-ellipsis> JSON_USE_LEGACY_DISCARDED_VALUE_COMPARISON </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_define_derived_type/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_ONLY_SERIALIZE, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_define_type_intrusive/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_TYPE_INTRUSIVE, NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_TYPE_INTRUSIVE_ONLY_SERIALIZE </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_define_type_non_intrusive/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_define_type_with_names/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_TYPE_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_namespace/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_NAMESPACE </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_namespace_begin/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_NAMESPACE_BEGIN, NLOHMANN_JSON_NAMESPACE_END </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_namespace_no_version/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_NAMESPACE_NO_VERSION </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_serialize_enum/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_SERIALIZE_ENUM </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_serialize_enum_strict/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_SERIALIZE_ENUM_STRICT </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_version_major/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_VERSION_MAJOR, NLOHMANN_JSON_VERSION_MINOR, NLOHMANN_JSON_VERSION_PATCH </span> </a> </li> </ul> </nav> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_5> <div class="md-nav__link md-nav__container"> <a href=../../../community/ class="md-nav__link "> <span class=md-ellipsis> Community </span> </a> <label class="md-nav__link " for=__nav_5 id=__nav_5_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_5_label aria-expanded=false> <label class=md-nav__title for=__nav_5> <span class="md-nav__icon md-icon"></span> Community </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../community/code_of_conduct/ class=md-nav__link> <span class=md-ellipsis> Code of Conduct </span> </a> </li> <li class=md-nav__item> <a href=../../../community/contribution_guidelines/ class=md-nav__link> <span class=md-ellipsis> Contribution Guidelines </span> </a> </li> <li class=md-nav__item> <a href=../../../community/quality_assurance/ class=md-nav__link> <span class=md-ellipsis> Quality assurance </span> </a> </li> <li class=md-nav__item> <a href=../../../community/governance/ class=md-nav__link> <span class=md-ellipsis> Governance </span> </a> </li> <li class=md-nav__item> <a href=../../../community/security_policy/ class=md-nav__link> <span class=md-ellipsis> Security Policy </span> </a> </li> </ul> </nav> </li> </ul> </nav> </div> </div> </div> <div class="md-sidebar md-sidebar--secondary" data-md-component=sidebar data-md-type=toc> <div class=md-sidebar__scrollwrap> <div class=md-sidebar__inner> <nav class="md-nav md-nav--secondary" aria-label="Table of contents"> <label class=md-nav__title for=__toc> <span class="md-nav__icon md-icon"></span> Table of contents </label> <ul class=md-nav__list data-md-component=toc data-md-scrollfix> <li class=md-nav__item> <a href=#return-value class=md-nav__link> <span class=md-ellipsis> Return value </span> </a> </li> <li class=md-nav__item> <a href=#exception-safety class=md-nav__link> <span class=md-ellipsis> Exception safety </span> </a> </li> <li class=md-nav__item> <a href=#exceptions class=md-nav__link> <span class=md-ellipsis> Exceptions </span> </a> </li> <li class=md-nav__item> <a href=#complexity class=md-nav__link> <span class=md-ellipsis> Complexity </span> </a> </li> <li class=md-nav__item> <a href=#examples class=md-nav__link> <span class=md-ellipsis> Examples </span> </a> </li> <li class=md-nav__item> <a href=#version-history class=md-nav__link> <span class=md-ellipsis> Version history </span> </a> </li> </ul> </nav> </div> </div> </div> <div class=md-content data-md-component=content> <article class="md-content__inner md-typeset"> <a href="https://github.com/nlohmann/json/edit/develop/docs/mkdocs/docs/api/basic_json/get_binary.md" title="Edit this page" class="md-content__button md-icon" rel="edit"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M10 20H6V4h7v5h5v3.1l2-2V8l-6-6H6c-1.1 0-2 .9-2 2v16c0 1.1.9 2 2 2h4zm10.2-7c.1 0 .3.1.4.2l1.3 1.3c.2.2.2.6 0 .8l-1 1-2.1-2.1 1-1c.1-.1.2-.2.4-.2m0 3.9L14.1 23H12v-2.1l6.1-6.1z"/></svg> </a> <a href="https://github.com/nlohmann/json/raw/develop/docs/mkdocs/docs/api/basic_json/get_binary.md" title="View source of this page" class="md-content__button md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M17 18c.56 0 1 .44 1 1s-.44 1-1 1-1-.44-1-1 .44-1 1-1m0-3c-2.73 0-5.06 1.66-6 4 .94 2.34 3.27 4 6 4s5.06-1.66 6-4c-.94-2.34-3.27-4-6-4m0 6.5a2.5 2.5 0 0 1-2.5-2.5 2.5 2.5 0 0 1 2.5-2.5 2.5 2.5 0 0 1 2.5 2.5 2.5 2.5 0 0 1-2.5 2.5M9.27 20H6V4h7v5h5v4.07c.7.08 1.36.25 2 .49V8l-6-6H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h4.5a8.2 8.2 0 0 1-1.23-2"/></svg> </a> <h1 id=nlohmannbasic_jsonget_binary><small>nlohmann::basic_json::</small>get_binary<a class=headerlink href=#nlohmannbasic_jsonget_binary title="Permanent link">&para;</a></h1> <div class=highlight><pre><span></span><code><span class=n>binary_t</span><span class=o>&amp;</span><span class=w> </span><span class=nf>get_binary</span><span class=p>();</span>
+<!doctype html><html lang=en class=no-js> <head><meta charset=utf-8><meta name=viewport content="width=device-width,initial-scale=1"><meta name=author content="Niels Lohmann"><link href="https://json.nlohmann.me/api/basic_json/get_binary/" rel="canonical"><link href=../get_allocator/ rel=prev><link href=../get_ptr/ rel=next><link rel=icon href=../../../assets/images/favicon.png><meta name=generator content="mkdocs-1.6.1, mkdocs-material-9.7.6"><title>get_binary - JSON for Modern C++</title><link rel=stylesheet href=../../../assets/stylesheets/main.484c7ddc.min.css><link rel=stylesheet href=../../../assets/stylesheets/palette.ab4e12ef.min.css><link rel="stylesheet" href="../../../assets/external/fonts.googleapis.com/css.61a430c9.css"><style>:root{--md-text-font:"Roboto";--md-code-font:"JetBrains Mono"}</style><link rel=stylesheet href=../../../css/custom.css><script>__md_scope=new URL("../../..",location),__md_hash=e=>[...e].reduce(((e,_)=>(e<<5)-e+_.charCodeAt(0)),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script></head> <body dir=ltr data-md-color-scheme=default data-md-color-primary=indigo data-md-color-accent=indigo> <input class=md-toggle data-md-toggle=drawer type=checkbox id=__drawer autocomplete=off> <input class=md-toggle data-md-toggle=search type=checkbox id=__search autocomplete=off> <label class=md-overlay for=__drawer></label> <div data-md-component=skip> <a href=#nlohmannbasic_jsonget_binary class=md-skip> Skip to content </a> </div> <div data-md-component=announce> </div> <header class=md-header data-md-component=header> <nav class="md-header__inner md-grid" aria-label=Header> <a href=../../.. title="JSON for Modern C++" class="md-header__button md-logo" aria-label="JSON for Modern C++" data-md-component=logo> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54"/></svg> </a> <label class="md-header__button md-icon" for=__drawer> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M3 6h18v2H3zm0 5h18v2H3zm0 5h18v2H3z"/></svg> </label> <div class=md-header__title data-md-component=header-title> <div class=md-header__ellipsis> <div class=md-header__topic> <span class=md-ellipsis> JSON for Modern C++ </span> </div> <div class=md-header__topic data-md-component=header-topic> <span class=md-ellipsis> get_binary </span> </div> </div> </div> <form class=md-header__option data-md-component=palette> <input class=md-option data-md-color-media="(prefers-color-scheme: light)" data-md-color-scheme=default data-md-color-primary=indigo data-md-color-accent=indigo aria-label="Switch to dark mode" type=radio name=__palette id=__palette_0> <label class="md-header__button md-icon" title="Switch to dark mode" for=__palette_1 hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a4 4 0 0 0-4 4 4 4 0 0 0 4 4 4 4 0 0 0 4-4 4 4 0 0 0-4-4m0 10a6 6 0 0 1-6-6 6 6 0 0 1 6-6 6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12z"/></svg> </label> <input class=md-option data-md-color-media="(prefers-color-scheme: dark)" data-md-color-scheme=slate data-md-color-primary=indigo data-md-color-accent=indigo aria-label="Switch to light mode" type=radio name=__palette id=__palette_1> <label class="md-header__button md-icon" title="Switch to light mode" for=__palette_0 hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 18c-.89 0-1.74-.2-2.5-.55C11.56 16.5 13 14.42 13 12s-1.44-4.5-3.5-5.45C10.26 6.2 11.11 6 12 6a6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12z"/></svg> </label> </form> <script>var palette=__md_get("__palette");if(palette&&palette.color){if("(prefers-color-scheme)"===palette.color.media){var media=matchMedia("(prefers-color-scheme: light)"),input=document.querySelector(media.matches?"[data-md-color-media='(prefers-color-scheme: light)']":"[data-md-color-media='(prefers-color-scheme: dark)']");palette.color.media=input.getAttribute("data-md-color-media"),palette.color.scheme=input.getAttribute("data-md-color-scheme"),palette.color.primary=input.getAttribute("data-md-color-primary"),palette.color.accent=input.getAttribute("data-md-color-accent")}for(var[key,value]of Object.entries(palette.color))document.body.setAttribute("data-md-color-"+key,value)}</script> <label class="md-header__button md-icon" for=__search> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg> </label> <div class=md-search data-md-component=search role=dialog> <label class=md-search__overlay for=__search></label> <div class=md-search__inner role=search> <form class=md-search__form name=search> <input type=text class=md-search__input name=query aria-label=Search placeholder=Search autocapitalize=off autocorrect=off autocomplete=off spellcheck=false data-md-component=search-query required> <label class="md-search__icon md-icon" for=__search> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11z"/></svg> </label> <nav class=md-search__options aria-label=Search> <button type=reset class="md-search__icon md-icon" title=Clear aria-label=Clear tabindex=-1> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z"/></svg> </button> </nav> </form> <div class=md-search__output> <div class=md-search__scrollwrap tabindex=0 data-md-scrollfix> <div class=md-search-result data-md-component=search-result> <div class=md-search-result__meta> Initializing search </div> <ol class=md-search-result__list role=presentation></ol> </div> </div> </div> </div> </div> <div class=md-header__source> <a href="https://github.com/nlohmann/json" title="Go to repository" class="md-source" data-md-component="source"> <div class="md-source__icon md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </div> <div class=md-source__repository> nlohmann/json </div> </a> </div> </nav> </header> <div class=md-container data-md-component=container> <nav class=md-tabs aria-label=Tabs data-md-component=tabs> <div class=md-grid> <ul class=md-tabs__list> <li class=md-tabs__item> <a href=../../.. class=md-tabs__link> Home </a> </li> <li class=md-tabs__item> <a href=../../../features/arbitrary_types/ class=md-tabs__link> Features </a> </li> <li class=md-tabs__item> <a href=../../../integration/ class=md-tabs__link> Integration </a> </li> <li class="md-tabs__item md-tabs__item--active"> <a href=../ class=md-tabs__link> API Documentation </a> </li> <li class=md-tabs__item> <a href=../../../community/ class=md-tabs__link> Community </a> </li> </ul> </div> </nav> <main class=md-main data-md-component=main> <div class="md-main__inner md-grid"> <div class="md-sidebar md-sidebar--primary" data-md-component=sidebar data-md-type=navigation> <div class=md-sidebar__scrollwrap> <div class=md-sidebar__inner> <nav class="md-nav md-nav--primary md-nav--lifted" aria-label=Navigation data-md-level=0> <label class=md-nav__title for=__drawer> <a href=../../.. title="JSON for Modern C++" class="md-nav__button md-logo" aria-label="JSON for Modern C++" data-md-component=logo> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54"/></svg> </a> JSON for Modern C++ </label> <div class=md-nav__source> <a href="https://github.com/nlohmann/json" title="Go to repository" class="md-source" data-md-component="source"> <div class="md-source__icon md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </div> <div class=md-source__repository> nlohmann/json </div> </a> </div> <ul class=md-nav__list data-md-scrollfix> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_1> <div class="md-nav__link md-nav__container"> <a href=../../.. class="md-nav__link "> <span class=md-ellipsis> Home </span> </a> <label class="md-nav__link " for=__nav_1 id=__nav_1_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_1_label aria-expanded=false> <label class=md-nav__title for=__nav_1> <span class="md-nav__icon md-icon"></span> Home </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../home/license/ class=md-nav__link> <span class=md-ellipsis> License </span> </a> </li> <li class=md-nav__item> <a href=../../../home/faq/ class=md-nav__link> <span class=md-ellipsis> FAQ </span> </a> </li> <li class=md-nav__item> <a href=../../../home/exceptions/ class=md-nav__link> <span class=md-ellipsis> Exceptions </span> </a> </li> <li class=md-nav__item> <a href=../../../home/releases/ class=md-nav__link> <span class=md-ellipsis> Releases </span> </a> </li> <li class=md-nav__item> <a href=../../../home/design_goals/ class=md-nav__link> <span class=md-ellipsis> Design goals </span> </a> </li> <li class=md-nav__item> <a href=../../../home/architecture/ class=md-nav__link> <span class=md-ellipsis> Architecture </span> </a> </li> <li class=md-nav__item> <a href=../../../home/customers/ class=md-nav__link> <span class=md-ellipsis> Customers </span> </a> </li> <li class=md-nav__item> <a href=../../../home/sponsors/ class=md-nav__link> <span class=md-ellipsis> Sponsors </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2> <label class=md-nav__link for=__nav_2 id=__nav_2_label tabindex=0> <span class=md-ellipsis> Features </span> <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_2_label aria-expanded=false> <label class=md-nav__title for=__nav_2> <span class="md-nav__icon md-icon"></span> Features </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/arbitrary_types/ class=md-nav__link> <span class=md-ellipsis> Arbitrary Type Conversions </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_2> <div class="md-nav__link md-nav__container"> <a href=../../../features/binary_formats/ class="md-nav__link "> <span class=md-ellipsis> Binary Formats </span> </a> <label class="md-nav__link " for=__nav_2_2 id=__nav_2_2_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_2_label aria-expanded=false> <label class=md-nav__title for=__nav_2_2> <span class="md-nav__icon md-icon"></span> Binary Formats </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/binary_formats/bjdata/ class=md-nav__link> <span class=md-ellipsis> BJData </span> </a> </li> <li class=md-nav__item> <a href=../../../features/binary_formats/bson/ class=md-nav__link> <span class=md-ellipsis> BSON </span> </a> </li> <li class=md-nav__item> <a href=../../../features/binary_formats/cbor/ class=md-nav__link> <span class=md-ellipsis> CBOR </span> </a> </li> <li class=md-nav__item> <a href=../../../features/binary_formats/messagepack/ class=md-nav__link> <span class=md-ellipsis> MessagePack </span> </a> </li> <li class=md-nav__item> <a href=../../../features/binary_formats/ubjson/ class=md-nav__link> <span class=md-ellipsis> UBJSON </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../../features/binary_values/ class=md-nav__link> <span class=md-ellipsis> Binary Values </span> </a> </li> <li class=md-nav__item> <a href=../../../features/comments/ class=md-nav__link> <span class=md-ellipsis> Comments </span> </a> </li> <li class=md-nav__item> <a href=../../../features/trailing_commas/ class=md-nav__link> <span class=md-ellipsis> Trailing Commas </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_6> <div class="md-nav__link md-nav__container"> <a href=../../../features/element_access/ class="md-nav__link "> <span class=md-ellipsis> Element Access </span> </a> <label class="md-nav__link " for=__nav_2_6 id=__nav_2_6_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_6_label aria-expanded=false> <label class=md-nav__title for=__nav_2_6> <span class="md-nav__icon md-icon"></span> Element Access </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/element_access/unchecked_access/ class=md-nav__link> <span class=md-ellipsis> Unchecked access: operator[] </span> </a> </li> <li class=md-nav__item> <a href=../../../features/element_access/checked_access/ class=md-nav__link> <span class=md-ellipsis> Checked access: at </span> </a> </li> <li class=md-nav__item> <a href=../../../features/element_access/default_value/ class=md-nav__link> <span class=md-ellipsis> Access with default value: value </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../../features/iterators/ class=md-nav__link> <span class=md-ellipsis> Iterators </span> </a> </li> <li class=md-nav__item> <a href=../../../features/json_pointer/ class=md-nav__link> <span class=md-ellipsis> JSON Pointer </span> </a> </li> <li class=md-nav__item> <a href=../../../features/json_patch/ class=md-nav__link> <span class=md-ellipsis> JSON Patch and Diff </span> </a> </li> <li class=md-nav__item> <a href=../../../features/merge_patch/ class=md-nav__link> <span class=md-ellipsis> JSON Merge Patch </span> </a> </li> <li class=md-nav__item> <a href=../../../features/modules/ class=md-nav__link> <span class=md-ellipsis> Modules </span> </a> </li> <li class=md-nav__item> <a href=../../../features/namespace/ class=md-nav__link> <span class=md-ellipsis> nlohmann Namespace </span> </a> </li> <li class=md-nav__item> <a href=../../../features/object_order/ class=md-nav__link> <span class=md-ellipsis> Object Order </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_14> <div class="md-nav__link md-nav__container"> <a href=../../../features/parsing/ class="md-nav__link "> <span class=md-ellipsis> Parsing </span> </a> <label class="md-nav__link " for=__nav_2_14 id=__nav_2_14_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_14_label aria-expanded=false> <label class=md-nav__title for=__nav_2_14> <span class="md-nav__icon md-icon"></span> Parsing </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/parsing/json_lines/ class=md-nav__link> <span class=md-ellipsis> JSON Lines </span> </a> </li> <li class=md-nav__item> <a href=../../../features/parsing/parse_exceptions/ class=md-nav__link> <span class=md-ellipsis> Parsing and Exceptions </span> </a> </li> <li class=md-nav__item> <a href=../../../features/parsing/parser_callbacks/ class=md-nav__link> <span class=md-ellipsis> Parser Callbacks </span> </a> </li> <li class=md-nav__item> <a href=../../../features/parsing/sax_interface/ class=md-nav__link> <span class=md-ellipsis> SAX Interface </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../../features/assertions/ class=md-nav__link> <span class=md-ellipsis> Runtime Assertions </span> </a> </li> <li class=md-nav__item> <a href=../../../features/enum_conversion/ class=md-nav__link> <span class=md-ellipsis> Specializing enum conversion </span> </a> </li> <li class=md-nav__item> <a href=../../../features/macros/ class=md-nav__link> <span class=md-ellipsis> Supported Macros </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_18> <div class="md-nav__link md-nav__container"> <a href=../../../features/types/ class="md-nav__link "> <span class=md-ellipsis> Types </span> </a> <label class="md-nav__link " for=__nav_2_18 id=__nav_2_18_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_18_label aria-expanded=false> <label class=md-nav__title for=__nav_2_18> <span class="md-nav__icon md-icon"></span> Types </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/types/number_handling/ class=md-nav__link> <span class=md-ellipsis> Number Handling </span> </a> </li> </ul> </nav> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_3> <div class="md-nav__link md-nav__container"> <a href=../../../integration/ class="md-nav__link "> <span class=md-ellipsis> Integration </span> </a> <label class="md-nav__link " for=__nav_3 id=__nav_3_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_3_label aria-expanded=false> <label class=md-nav__title for=__nav_3> <span class="md-nav__icon md-icon"></span> Integration </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../integration/migration_guide/ class=md-nav__link> <span class=md-ellipsis> Migration Guide </span> </a> </li> <li class=md-nav__item> <a href=../../../integration/cmake/ class=md-nav__link> <span class=md-ellipsis> CMake </span> </a> </li> <li class=md-nav__item> <a href=../../../integration/package_managers/ class=md-nav__link> <span class=md-ellipsis> Package Managers </span> </a> </li> <li class=md-nav__item> <a href=../../../integration/pkg-config/ class=md-nav__link> <span class=md-ellipsis> Pkg-config </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--active md-nav__item--section md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4 checked> <label class=md-nav__link for=__nav_4 id=__nav_4_label tabindex> <span class=md-ellipsis> API Documentation </span> <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_4_label aria-expanded=true> <label class=md-nav__title for=__nav_4> <span class="md-nav__icon md-icon"></span> API Documentation </label> <ul class=md-nav__list data-md-scrollfix> <li class="md-nav__item md-nav__item--active md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_1 checked> <div class="md-nav__link md-nav__container"> <a href=../ class="md-nav__link "> <span class=md-ellipsis> basic_json </span> </a> <label class="md-nav__link " for=__nav_4_1 id=__nav_4_1_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_1_label aria-expanded=true> <label class=md-nav__title for=__nav_4_1> <span class="md-nav__icon md-icon"></span> basic_json </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../basic_json/ class=md-nav__link> <span class=md-ellipsis> (Constructor) </span> </a> </li> <li class=md-nav__item> <a href=../~basic_json/ class=md-nav__link> <span class=md-ellipsis> (Destructor) </span> </a> </li> <li class=md-nav__item> <a href=../accept/ class=md-nav__link> <span class=md-ellipsis> accept </span> </a> </li> <li class=md-nav__item> <a href=../array/ class=md-nav__link> <span class=md-ellipsis> array </span> </a> </li> <li class=md-nav__item> <a href=../array_t/ class=md-nav__link> <span class=md-ellipsis> array_t </span> </a> </li> <li class=md-nav__item> <a href=../at/ class=md-nav__link> <span class=md-ellipsis> at </span> </a> </li> <li class=md-nav__item> <a href=../back/ class=md-nav__link> <span class=md-ellipsis> back </span> </a> </li> <li class=md-nav__item> <a href=../begin/ class=md-nav__link> <span class=md-ellipsis> begin </span> </a> </li> <li class=md-nav__item> <a href=../binary/ class=md-nav__link> <span class=md-ellipsis> binary </span> </a> </li> <li class=md-nav__item> <a href=../binary_t/ class=md-nav__link> <span class=md-ellipsis> binary_t </span> </a> </li> <li class=md-nav__item> <a href=../boolean_t/ class=md-nav__link> <span class=md-ellipsis> boolean_t </span> </a> </li> <li class=md-nav__item> <a href=../cbegin/ class=md-nav__link> <span class=md-ellipsis> cbegin </span> </a> </li> <li class=md-nav__item> <a href=../cbor_tag_handler_t/ class=md-nav__link> <span class=md-ellipsis> cbor_tag_handler_t </span> </a> </li> <li class=md-nav__item> <a href=../cend/ class=md-nav__link> <span class=md-ellipsis> cend </span> </a> </li> <li class=md-nav__item> <a href=../clear/ class=md-nav__link> <span class=md-ellipsis> clear </span> </a> </li> <li class=md-nav__item> <a href=../contains/ class=md-nav__link> <span class=md-ellipsis> contains </span> </a> </li> <li class=md-nav__item> <a href=../count/ class=md-nav__link> <span class=md-ellipsis> count </span> </a> </li> <li class=md-nav__item> <a href=../crbegin/ class=md-nav__link> <span class=md-ellipsis> crbegin </span> </a> </li> <li class=md-nav__item> <a href=../crend/ class=md-nav__link> <span class=md-ellipsis> crend </span> </a> </li> <li class=md-nav__item> <a href=../default_object_comparator_t/ class=md-nav__link> <span class=md-ellipsis> default_object_comparator_t </span> </a> </li> <li class=md-nav__item> <a href=../diff/ class=md-nav__link> <span class=md-ellipsis> diff </span> </a> </li> <li class=md-nav__item> <a href=../dump/ class=md-nav__link> <span class=md-ellipsis> dump </span> </a> </li> <li class=md-nav__item> <a href=../emplace/ class=md-nav__link> <span class=md-ellipsis> emplace </span> </a> </li> <li class=md-nav__item> <a href=../emplace_back/ class=md-nav__link> <span class=md-ellipsis> emplace_back </span> </a> </li> <li class=md-nav__item> <a href=../empty/ class=md-nav__link> <span class=md-ellipsis> empty </span> </a> </li> <li class=md-nav__item> <a href=../end/ class=md-nav__link> <span class=md-ellipsis> end </span> </a> </li> <li class=md-nav__item> <a href=../end_pos/ class=md-nav__link> <span class=md-ellipsis> end_pos </span> </a> </li> <li class=md-nav__item> <a href=../erase/ class=md-nav__link> <span class=md-ellipsis> erase </span> </a> </li> <li class=md-nav__item> <a href=../error_handler_t/ class=md-nav__link> <span class=md-ellipsis> error_handler_t </span> </a> </li> <li class=md-nav__item> <a href=../exception/ class=md-nav__link> <span class=md-ellipsis> exception </span> </a> </li> <li class=md-nav__item> <a href=../find/ class=md-nav__link> <span class=md-ellipsis> find </span> </a> </li> <li class=md-nav__item> <a href=../flatten/ class=md-nav__link> <span class=md-ellipsis> flatten </span> </a> </li> <li class=md-nav__item> <a href=../from_bjdata/ class=md-nav__link> <span class=md-ellipsis> from_bjdata </span> </a> </li> <li class=md-nav__item> <a href=../from_bson/ class=md-nav__link> <span class=md-ellipsis> from_bson </span> </a> </li> <li class=md-nav__item> <a href=../from_cbor/ class=md-nav__link> <span class=md-ellipsis> from_cbor </span> </a> </li> <li class=md-nav__item> <a href=../from_msgpack/ class=md-nav__link> <span class=md-ellipsis> from_msgpack </span> </a> </li> <li class=md-nav__item> <a href=../from_ubjson/ class=md-nav__link> <span class=md-ellipsis> from_ubjson </span> </a> </li> <li class=md-nav__item> <a href=../front/ class=md-nav__link> <span class=md-ellipsis> front </span> </a> </li> <li class=md-nav__item> <a href=../get/ class=md-nav__link> <span class=md-ellipsis> get </span> </a> </li> <li class=md-nav__item> <a href=../get_allocator/ class=md-nav__link> <span class=md-ellipsis> get_allocator </span> </a> </li> <li class="md-nav__item md-nav__item--active"> <input class="md-nav__toggle md-toggle" type=checkbox id=__toc> <label class="md-nav__link md-nav__link--active" for=__toc> <span class=md-ellipsis> get_binary </span> <span class="md-nav__icon md-icon"></span> </label> <a href=./ class="md-nav__link md-nav__link--active"> <span class=md-ellipsis> get_binary </span> </a> <nav class="md-nav md-nav--secondary" aria-label="Table of contents"> <label class=md-nav__title for=__toc> <span class="md-nav__icon md-icon"></span> Table of contents </label> <ul class=md-nav__list data-md-component=toc data-md-scrollfix> <li class=md-nav__item> <a href=#return-value class=md-nav__link> <span class=md-ellipsis> Return value </span> </a> </li> <li class=md-nav__item> <a href=#exception-safety class=md-nav__link> <span class=md-ellipsis> Exception safety </span> </a> </li> <li class=md-nav__item> <a href=#exceptions class=md-nav__link> <span class=md-ellipsis> Exceptions </span> </a> </li> <li class=md-nav__item> <a href=#complexity class=md-nav__link> <span class=md-ellipsis> Complexity </span> </a> </li> <li class=md-nav__item> <a href=#examples class=md-nav__link> <span class=md-ellipsis> Examples </span> </a> </li> <li class=md-nav__item> <a href=#see-also class=md-nav__link> <span class=md-ellipsis> See also </span> </a> </li> <li class=md-nav__item> <a href=#version-history class=md-nav__link> <span class=md-ellipsis> Version history </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../get_ptr/ class=md-nav__link> <span class=md-ellipsis> get_ptr </span> </a> </li> <li class=md-nav__item> <a href=../get_ref/ class=md-nav__link> <span class=md-ellipsis> get_ref </span> </a> </li> <li class=md-nav__item> <a href=../get_to/ class=md-nav__link> <span class=md-ellipsis> get_to </span> </a> </li> <li class=md-nav__item> <a href=../std_hash/ class=md-nav__link> <span class=md-ellipsis> std::hash&lt;basic_json&gt; </span> </a> </li> <li class=md-nav__item> <a href=../input_format_t/ class=md-nav__link> <span class=md-ellipsis> input_format_t </span> </a> </li> <li class=md-nav__item> <a href=../insert/ class=md-nav__link> <span class=md-ellipsis> insert </span> </a> </li> <li class=md-nav__item> <a href=../invalid_iterator/ class=md-nav__link> <span class=md-ellipsis> invalid_iterator </span> </a> </li> <li class=md-nav__item> <a href=../is_array/ class=md-nav__link> <span class=md-ellipsis> is_array </span> </a> </li> <li class=md-nav__item> <a href=../is_binary/ class=md-nav__link> <span class=md-ellipsis> is_binary </span> </a> </li> <li class=md-nav__item> <a href=../is_boolean/ class=md-nav__link> <span class=md-ellipsis> is_boolean </span> </a> </li> <li class=md-nav__item> <a href=../is_discarded/ class=md-nav__link> <span class=md-ellipsis> is_discarded </span> </a> </li> <li class=md-nav__item> <a href=../is_null/ class=md-nav__link> <span class=md-ellipsis> is_null </span> </a> </li> <li class=md-nav__item> <a href=../is_number/ class=md-nav__link> <span class=md-ellipsis> is_number </span> </a> </li> <li class=md-nav__item> <a href=../is_number_float/ class=md-nav__link> <span class=md-ellipsis> is_number_float </span> </a> </li> <li class=md-nav__item> <a href=../is_number_integer/ class=md-nav__link> <span class=md-ellipsis> is_number_integer </span> </a> </li> <li class=md-nav__item> <a href=../is_number_unsigned/ class=md-nav__link> <span class=md-ellipsis> is_number_unsigned </span> </a> </li> <li class=md-nav__item> <a href=../is_object/ class=md-nav__link> <span class=md-ellipsis> is_object </span> </a> </li> <li class=md-nav__item> <a href=../is_primitive/ class=md-nav__link> <span class=md-ellipsis> is_primitive </span> </a> </li> <li class=md-nav__item> <a href=../is_string/ class=md-nav__link> <span class=md-ellipsis> is_string </span> </a> </li> <li class=md-nav__item> <a href=../is_structured/ class=md-nav__link> <span class=md-ellipsis> is_structured </span> </a> </li> <li class=md-nav__item> <a href=../items/ class=md-nav__link> <span class=md-ellipsis> items </span> </a> </li> <li class=md-nav__item> <a href=../json_base_class_t/ class=md-nav__link> <span class=md-ellipsis> json_base_class_t </span> </a> </li> <li class=md-nav__item> <a href=../json_serializer/ class=md-nav__link> <span class=md-ellipsis> json_serializer </span> </a> </li> <li class=md-nav__item> <a href=../max_size/ class=md-nav__link> <span class=md-ellipsis> max_size </span> </a> </li> <li class=md-nav__item> <a href=../meta/ class=md-nav__link> <span class=md-ellipsis> meta </span> </a> </li> <li class=md-nav__item> <a href=../merge_patch/ class=md-nav__link> <span class=md-ellipsis> merge_patch </span> </a> </li> <li class=md-nav__item> <a href=../number_float_t/ class=md-nav__link> <span class=md-ellipsis> number_float_t </span> </a> </li> <li class=md-nav__item> <a href=../number_integer_t/ class=md-nav__link> <span class=md-ellipsis> number_integer_t </span> </a> </li> <li class=md-nav__item> <a href=../number_unsigned_t/ class=md-nav__link> <span class=md-ellipsis> number_unsigned_t </span> </a> </li> <li class=md-nav__item> <a href=../object/ class=md-nav__link> <span class=md-ellipsis> object </span> </a> </li> <li class=md-nav__item> <a href=../object_comparator_t/ class=md-nav__link> <span class=md-ellipsis> object_comparator_t </span> </a> </li> <li class=md-nav__item> <a href=../object_t/ class=md-nav__link> <span class=md-ellipsis> object_t </span> </a> </li> <li class=md-nav__item> <a href=../operator_ValueType/ class=md-nav__link> <span class=md-ellipsis> operator ValueType </span> </a> </li> <li class=md-nav__item> <a href=../operator_value_t/ class=md-nav__link> <span class=md-ellipsis> operator value_t </span> </a> </li> <li class=md-nav__item> <a href=../operator%5B%5D/ class=md-nav__link> <span class=md-ellipsis> operator[] </span> </a> </li> <li class=md-nav__item> <a href=../operator%3D/ class=md-nav__link> <span class=md-ellipsis> operator= </span> </a> </li> <li class=md-nav__item> <a href=../operator%2B%3D/ class=md-nav__link> <span class=md-ellipsis> operator+= </span> </a> </li> <li class=md-nav__item> <a href=../operator_eq/ class=md-nav__link> <span class=md-ellipsis> operator== </span> </a> </li> <li class=md-nav__item> <a href=../operator_ne/ class=md-nav__link> <span class=md-ellipsis> operator!= </span> </a> </li> <li class=md-nav__item> <a href=../operator_lt/ class=md-nav__link> <span class=md-ellipsis> operator< </span> </a> </li> <li class=md-nav__item> <a href=../operator_gt/ class=md-nav__link> <span class=md-ellipsis> operator> </span> </a> </li> <li class=md-nav__item> <a href=../operator_le/ class=md-nav__link> <span class=md-ellipsis> operator<= </span> </a> </li> <li class=md-nav__item> <a href=../operator_ge/ class=md-nav__link> <span class=md-ellipsis> operator>= </span> </a> </li> <li class=md-nav__item> <a href=../operator_spaceship/ class=md-nav__link> <span class=md-ellipsis> operator<=> </span> </a> </li> <li class=md-nav__item> <a href=../out_of_range/ class=md-nav__link> <span class=md-ellipsis> out_of_range </span> </a> </li> <li class=md-nav__item> <a href=../other_error/ class=md-nav__link> <span class=md-ellipsis> other_error </span> </a> </li> <li class=md-nav__item> <a href=../parse/ class=md-nav__link> <span class=md-ellipsis> parse </span> </a> </li> <li class=md-nav__item> <a href=../parse_error/ class=md-nav__link> <span class=md-ellipsis> parse_error </span> </a> </li> <li class=md-nav__item> <a href=../parse_event_t/ class=md-nav__link> <span class=md-ellipsis> parse_event_t </span> </a> </li> <li class=md-nav__item> <a href=../parser_callback_t/ class=md-nav__link> <span class=md-ellipsis> parser_callback_t </span> </a> </li> <li class=md-nav__item> <a href=../patch/ class=md-nav__link> <span class=md-ellipsis> patch </span> </a> </li> <li class=md-nav__item> <a href=../patch_inplace/ class=md-nav__link> <span class=md-ellipsis> patch_inplace </span> </a> </li> <li class=md-nav__item> <a href=../push_back/ class=md-nav__link> <span class=md-ellipsis> push_back </span> </a> </li> <li class=md-nav__item> <a href=../rbegin/ class=md-nav__link> <span class=md-ellipsis> rbegin </span> </a> </li> <li class=md-nav__item> <a href=../rend/ class=md-nav__link> <span class=md-ellipsis> rend </span> </a> </li> <li class=md-nav__item> <a href=../sax_parse/ class=md-nav__link> <span class=md-ellipsis> sax_parse </span> </a> </li> <li class=md-nav__item> <a href=../size/ class=md-nav__link> <span class=md-ellipsis> size </span> </a> </li> <li class=md-nav__item> <a href=../start_pos/ class=md-nav__link> <span class=md-ellipsis> start_pos </span> </a> </li> <li class=md-nav__item> <a href=../string_t/ class=md-nav__link> <span class=md-ellipsis> string_t </span> </a> </li> <li class=md-nav__item> <a href=../swap/ class=md-nav__link> <span class=md-ellipsis> swap </span> </a> </li> <li class=md-nav__item> <a href=../std_swap/ class=md-nav__link> <span class=md-ellipsis> std::swap&lt;basic_json&gt; </span> </a> </li> <li class=md-nav__item> <a href=../to_bjdata/ class=md-nav__link> <span class=md-ellipsis> to_bjdata </span> </a> </li> <li class=md-nav__item> <a href=../to_bson/ class=md-nav__link> <span class=md-ellipsis> to_bson </span> </a> </li> <li class=md-nav__item> <a href=../to_cbor/ class=md-nav__link> <span class=md-ellipsis> to_cbor </span> </a> </li> <li class=md-nav__item> <a href=../to_msgpack/ class=md-nav__link> <span class=md-ellipsis> to_msgpack </span> </a> </li> <li class=md-nav__item> <a href=../to_string/ class=md-nav__link> <span class=md-ellipsis> to_string </span> </a> </li> <li class=md-nav__item> <a href=../to_ubjson/ class=md-nav__link> <span class=md-ellipsis> to_ubjson </span> </a> </li> <li class=md-nav__item> <a href=../type/ class=md-nav__link> <span class=md-ellipsis> type </span> </a> </li> <li class=md-nav__item> <a href=../type_error/ class=md-nav__link> <span class=md-ellipsis> type_error </span> </a> </li> <li class=md-nav__item> <a href=../type_name/ class=md-nav__link> <span class=md-ellipsis> type_name </span> </a> </li> <li class=md-nav__item> <a href=../unflatten/ class=md-nav__link> <span class=md-ellipsis> unflatten </span> </a> </li> <li class=md-nav__item> <a href=../update/ class=md-nav__link> <span class=md-ellipsis> update </span> </a> </li> <li class=md-nav__item> <a href=../value/ class=md-nav__link> <span class=md-ellipsis> value </span> </a> </li> <li class=md-nav__item> <a href=../value_t/ class=md-nav__link> <span class=md-ellipsis> value_t </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_2> <div class="md-nav__link md-nav__container"> <a href=../../byte_container_with_subtype/ class="md-nav__link "> <span class=md-ellipsis> byte_container_with_subtype </span> </a> <label class="md-nav__link " for=__nav_4_2 id=__nav_4_2_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_2_label aria-expanded=false> <label class=md-nav__title for=__nav_4_2> <span class="md-nav__icon md-icon"></span> byte_container_with_subtype </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../byte_container_with_subtype/byte_container_with_subtype/ class=md-nav__link> <span class=md-ellipsis> (constructor) </span> </a> </li> <li class=md-nav__item> <a href=../../byte_container_with_subtype/clear_subtype/ class=md-nav__link> <span class=md-ellipsis> clear_subtype </span> </a> </li> <li class=md-nav__item> <a href=../../byte_container_with_subtype/has_subtype/ class=md-nav__link> <span class=md-ellipsis> has_subtype </span> </a> </li> <li class=md-nav__item> <a href=../../byte_container_with_subtype/set_subtype/ class=md-nav__link> <span class=md-ellipsis> set_subtype </span> </a> </li> <li class=md-nav__item> <a href=../../byte_container_with_subtype/subtype/ class=md-nav__link> <span class=md-ellipsis> subtype </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_3> <div class="md-nav__link md-nav__container"> <a href=../../adl_serializer/ class="md-nav__link "> <span class=md-ellipsis> adl_serializer </span> </a> <label class="md-nav__link " for=__nav_4_3 id=__nav_4_3_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_3_label aria-expanded=false> <label class=md-nav__title for=__nav_4_3> <span class="md-nav__icon md-icon"></span> adl_serializer </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../adl_serializer/from_json/ class=md-nav__link> <span class=md-ellipsis> from_json </span> </a> </li> <li class=md-nav__item> <a href=../../adl_serializer/to_json/ class=md-nav__link> <span class=md-ellipsis> to_json </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../json/ class=md-nav__link> <span class=md-ellipsis> json </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_5> <div class="md-nav__link md-nav__container"> <a href=../../json_pointer/ class="md-nav__link "> <span class=md-ellipsis> json_pointer </span> </a> <label class="md-nav__link " for=__nav_4_5 id=__nav_4_5_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_5_label aria-expanded=false> <label class=md-nav__title for=__nav_4_5> <span class="md-nav__icon md-icon"></span> json_pointer </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../json_pointer/json_pointer/ class=md-nav__link> <span class=md-ellipsis> (Constructor) </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/back/ class=md-nav__link> <span class=md-ellipsis> back </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/empty/ class=md-nav__link> <span class=md-ellipsis> empty </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/front/ class=md-nav__link> <span class=md-ellipsis> front </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_string_t/ class=md-nav__link> <span class=md-ellipsis> operator string_t </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_eq/ class=md-nav__link> <span class=md-ellipsis> operator== </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_ne/ class=md-nav__link> <span class=md-ellipsis> operator!= </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_slash/ class=md-nav__link> <span class=md-ellipsis> operator/ </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_slasheq/ class=md-nav__link> <span class=md-ellipsis> operator/= </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/parent_pointer/ class=md-nav__link> <span class=md-ellipsis> parent_pointer </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/pop_back/ class=md-nav__link> <span class=md-ellipsis> pop_back </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/pop_front/ class=md-nav__link> <span class=md-ellipsis> pop_front </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/push_back/ class=md-nav__link> <span class=md-ellipsis> push_back </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/push_front/ class=md-nav__link> <span class=md-ellipsis> push_front </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/string_t/ class=md-nav__link> <span class=md-ellipsis> string_t </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/to_string/ class=md-nav__link> <span class=md-ellipsis> to_string </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_6> <div class="md-nav__link md-nav__container"> <a href=../../json_sax/ class="md-nav__link "> <span class=md-ellipsis> json_sax </span> </a> <label class="md-nav__link " for=__nav_4_6 id=__nav_4_6_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_6_label aria-expanded=false> <label class=md-nav__title for=__nav_4_6> <span class="md-nav__icon md-icon"></span> json_sax </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../json_sax/binary/ class=md-nav__link> <span class=md-ellipsis> binary </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/boolean/ class=md-nav__link> <span class=md-ellipsis> boolean </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/end_array/ class=md-nav__link> <span class=md-ellipsis> end_array </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/end_object/ class=md-nav__link> <span class=md-ellipsis> end_object </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/key/ class=md-nav__link> <span class=md-ellipsis> key </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/null/ class=md-nav__link> <span class=md-ellipsis> null </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/number_float/ class=md-nav__link> <span class=md-ellipsis> number_float </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/number_integer/ class=md-nav__link> <span class=md-ellipsis> number_integer </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/number_unsigned/ class=md-nav__link> <span class=md-ellipsis> number_unsigned </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/parse_error/ class=md-nav__link> <span class=md-ellipsis> parse_error </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/start_array/ class=md-nav__link> <span class=md-ellipsis> start_array </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/start_object/ class=md-nav__link> <span class=md-ellipsis> start_object </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/string/ class=md-nav__link> <span class=md-ellipsis> string </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../operator_ltlt/ class=md-nav__link> <span class=md-ellipsis> operator<<(basic_json), operator<<(json_pointer) </span> </a> </li> <li class=md-nav__item> <a href=../../operator_gtgt/ class=md-nav__link> <span class=md-ellipsis> operator>>(basic_json) </span> </a> </li> <li class=md-nav__item> <a href=../../operator_literal_json/ class=md-nav__link> <span class=md-ellipsis> operator""_json </span> </a> </li> <li class=md-nav__item> <a href=../../operator_literal_json_pointer/ class=md-nav__link> <span class=md-ellipsis> operator""_json_pointer </span> </a> </li> <li class=md-nav__item> <a href=../../ordered_json/ class=md-nav__link> <span class=md-ellipsis> ordered_json </span> </a> </li> <li class=md-nav__item> <a href=../../ordered_map/ class=md-nav__link> <span class=md-ellipsis> ordered_map </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_13> <div class="md-nav__link md-nav__container"> <a href=../../macros/ class="md-nav__link "> <span class=md-ellipsis> macros </span> </a> <label class="md-nav__link " for=__nav_4_13 id=__nav_4_13_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_13_label aria-expanded=false> <label class=md-nav__title for=__nav_4_13> <span class="md-nav__icon md-icon"></span> macros </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../macros/json_assert/ class=md-nav__link> <span class=md-ellipsis> JSON_ASSERT </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_brace_init_copy_semantics/ class=md-nav__link> <span class=md-ellipsis> JSON_BRACE_INIT_COPY_SEMANTICS </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_throw_user/ class=md-nav__link> <span class=md-ellipsis> JSON_CATCH_USER, JSON_THROW_USER, JSON_TRY_USER </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_diagnostics/ class=md-nav__link> <span class=md-ellipsis> JSON_DIAGNOSTICS </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_diagnostic_positions/ class=md-nav__link> <span class=md-ellipsis> JSON_DIAGNOSTIC_POSITIONS </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_disable_enum_serialization/ class=md-nav__link> <span class=md-ellipsis> JSON_DISABLE_ENUM_SERIALIZATION </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_has_cpp_11/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_CPP_11, JSON_HAS_CPP_14, JSON_HAS_CPP_17, JSON_HAS_CPP_20 </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_has_filesystem/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_EXPERIMENTAL_FILESYSTEM, JSON_HAS_FILESYSTEM </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_has_ranges/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_RANGES </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_has_static_rtti/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_STATIC_RTTI </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_has_three_way_comparison/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_THREE_WAY_COMPARISON </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_noexception/ class=md-nav__link> <span class=md-ellipsis> JSON_NOEXCEPTION </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_no_io/ class=md-nav__link> <span class=md-ellipsis> JSON_NO_IO </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_skip_library_version_check/ class=md-nav__link> <span class=md-ellipsis> JSON_SKIP_LIBRARY_VERSION_CHECK </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_skip_unsupported_compiler_check/ class=md-nav__link> <span class=md-ellipsis> JSON_SKIP_UNSUPPORTED_COMPILER_CHECK </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_use_global_udls/ class=md-nav__link> <span class=md-ellipsis> JSON_USE_GLOBAL_UDLS </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_use_implicit_conversions/ class=md-nav__link> <span class=md-ellipsis> JSON_USE_IMPLICIT_CONVERSIONS </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_use_legacy_discarded_value_comparison/ class=md-nav__link> <span class=md-ellipsis> JSON_USE_LEGACY_DISCARDED_VALUE_COMPARISON </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_define_derived_type/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_ONLY_SERIALIZE, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_define_type_intrusive/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_TYPE_INTRUSIVE, NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_TYPE_INTRUSIVE_ONLY_SERIALIZE </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_define_type_non_intrusive/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_define_type_with_names/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_TYPE_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_namespace/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_NAMESPACE </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_namespace_begin/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_NAMESPACE_BEGIN, NLOHMANN_JSON_NAMESPACE_END </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_namespace_no_version/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_NAMESPACE_NO_VERSION </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_serialize_enum/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_SERIALIZE_ENUM </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_serialize_enum_strict/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_SERIALIZE_ENUM_STRICT </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_version_major/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_VERSION_MAJOR, NLOHMANN_JSON_VERSION_MINOR, NLOHMANN_JSON_VERSION_PATCH </span> </a> </li> </ul> </nav> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_5> <div class="md-nav__link md-nav__container"> <a href=../../../community/ class="md-nav__link "> <span class=md-ellipsis> Community </span> </a> <label class="md-nav__link " for=__nav_5 id=__nav_5_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_5_label aria-expanded=false> <label class=md-nav__title for=__nav_5> <span class="md-nav__icon md-icon"></span> Community </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../community/code_of_conduct/ class=md-nav__link> <span class=md-ellipsis> Code of Conduct </span> </a> </li> <li class=md-nav__item> <a href=../../../community/contribution_guidelines/ class=md-nav__link> <span class=md-ellipsis> Contribution Guidelines </span> </a> </li> <li class=md-nav__item> <a href=../../../community/quality_assurance/ class=md-nav__link> <span class=md-ellipsis> Quality assurance </span> </a> </li> <li class=md-nav__item> <a href=../../../community/governance/ class=md-nav__link> <span class=md-ellipsis> Governance </span> </a> </li> <li class=md-nav__item> <a href=../../../community/security_policy/ class=md-nav__link> <span class=md-ellipsis> Security Policy </span> </a> </li> </ul> </nav> </li> </ul> </nav> </div> </div> </div> <div class="md-sidebar md-sidebar--secondary" data-md-component=sidebar data-md-type=toc> <div class=md-sidebar__scrollwrap> <div class=md-sidebar__inner> <nav class="md-nav md-nav--secondary" aria-label="Table of contents"> <label class=md-nav__title for=__toc> <span class="md-nav__icon md-icon"></span> Table of contents </label> <ul class=md-nav__list data-md-component=toc data-md-scrollfix> <li class=md-nav__item> <a href=#return-value class=md-nav__link> <span class=md-ellipsis> Return value </span> </a> </li> <li class=md-nav__item> <a href=#exception-safety class=md-nav__link> <span class=md-ellipsis> Exception safety </span> </a> </li> <li class=md-nav__item> <a href=#exceptions class=md-nav__link> <span class=md-ellipsis> Exceptions </span> </a> </li> <li class=md-nav__item> <a href=#complexity class=md-nav__link> <span class=md-ellipsis> Complexity </span> </a> </li> <li class=md-nav__item> <a href=#examples class=md-nav__link> <span class=md-ellipsis> Examples </span> </a> </li> <li class=md-nav__item> <a href=#see-also class=md-nav__link> <span class=md-ellipsis> See also </span> </a> </li> <li class=md-nav__item> <a href=#version-history class=md-nav__link> <span class=md-ellipsis> Version history </span> </a> </li> </ul> </nav> </div> </div> </div> <div class=md-content data-md-component=content> <article class="md-content__inner md-typeset"> <a href="https://github.com/nlohmann/json/edit/develop/docs/mkdocs/docs/api/basic_json/get_binary.md" title="Edit this page" class="md-content__button md-icon" rel="edit"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M10 20H6V4h7v5h5v3.1l2-2V8l-6-6H6c-1.1 0-2 .9-2 2v16c0 1.1.9 2 2 2h4zm10.2-7c.1 0 .3.1.4.2l1.3 1.3c.2.2.2.6 0 .8l-1 1-2.1-2.1 1-1c.1-.1.2-.2.4-.2m0 3.9L14.1 23H12v-2.1l6.1-6.1z"/></svg> </a> <a href="https://github.com/nlohmann/json/raw/develop/docs/mkdocs/docs/api/basic_json/get_binary.md" title="View source of this page" class="md-content__button md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M17 18c.56 0 1 .44 1 1s-.44 1-1 1-1-.44-1-1 .44-1 1-1m0-3c-2.73 0-5.06 1.66-6 4 .94 2.34 3.27 4 6 4s5.06-1.66 6-4c-.94-2.34-3.27-4-6-4m0 6.5a2.5 2.5 0 0 1-2.5-2.5 2.5 2.5 0 0 1 2.5-2.5 2.5 2.5 0 0 1 2.5 2.5 2.5 2.5 0 0 1-2.5 2.5M9.27 20H6V4h7v5h5v4.07c.7.08 1.36.25 2 .49V8l-6-6H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h4.5a8.2 8.2 0 0 1-1.23-2"/></svg> </a> <h1 id=nlohmannbasic_jsonget_binary><small>nlohmann::basic_json::</small>get_binary<a class=headerlink href=#nlohmannbasic_jsonget_binary title="Permanent link">&para;</a></h1> <div class=highlight><pre><span></span><code><span class=n>binary_t</span><span class=o>&amp;</span><span class=w> </span><span class=nf>get_binary</span><span class=p>();</span>
 
 <span class=k>const</span><span class=w> </span><span class=n>binary_t</span><span class=o>&amp;</span><span class=w> </span><span class=nf>get_binary</span><span class=p>()</span><span class=w> </span><span class=k>const</span><span class=p>;</span>
 </code></pre></div> <p>Returns a reference to the stored binary value.</p> <h2 id=return-value>Return value<a class=headerlink href=#return-value title="Permanent link">&para;</a></h2> <p>Reference to binary value.</p> <h2 id=exception-safety>Exception safety<a class=headerlink href=#exception-safety title="Permanent link">&para;</a></h2> <p>Strong exception safety: if an exception occurs, the original value stays intact.</p> <h2 id=exceptions>Exceptions<a class=headerlink href=#exceptions title="Permanent link">&para;</a></h2> <p>Throws <a href=../../../home/exceptions/#jsonexceptiontype_error302><code>type_error.302</code></a> if the value is not binary</p> <h2 id=complexity>Complexity<a class=headerlink href=#complexity title="Permanent link">&para;</a></h2> <p>Constant.</p> <h2 id=examples>Examples<a class=headerlink href=#examples title="Permanent link">&para;</a></h2> <details class=example> <summary>Example</summary> <p>The following code shows how to query a binary value.</p> <div class=highlight><pre><span></span><code><span class=cp>#include</span><span class=w> </span><span class=cpf>&lt;iostream&gt;</span>
@@ -18,4 +18,4 @@
 <span class=w>    </span><span class=n>std</span><span class=o>::</span><span class=n>cout</span><span class=w> </span><span class=o>&lt;&lt;</span><span class=w> </span><span class=s>&quot;type: &quot;</span><span class=w> </span><span class=o>&lt;&lt;</span><span class=w> </span><span class=n>j</span><span class=p>.</span><span class=n>type_name</span><span class=p>()</span><span class=w> </span><span class=o>&lt;&lt;</span><span class=w> </span><span class=s>&quot;, subtype: &quot;</span><span class=w> </span><span class=o>&lt;&lt;</span><span class=w> </span><span class=n>j</span><span class=p>.</span><span class=n>get_binary</span><span class=p>().</span><span class=n>subtype</span><span class=p>()</span><span class=w> </span><span class=o>&lt;&lt;</span><span class=w> </span><span class=n>std</span><span class=o>::</span><span class=n>endl</span><span class=p>;</span>
 <span class=p>}</span>
 </code></pre></div> <p>Output:</p> <div class=highlight><pre><span></span><code><span class=kc>t</span><span class=err>ype</span><span class=p>:</span><span class=w> </span><span class=err>bi</span><span class=kc>nar</span><span class=err>y</span><span class=p>,</span><span class=w> </span><span class=err>sub</span><span class=kc>t</span><span class=err>ype</span><span class=p>:</span><span class=w> </span><span class=mi>42</span>
-</code></pre></div> </details> <h2 id=version-history>Version history<a class=headerlink href=#version-history title="Permanent link">&para;</a></h2> <ul> <li>Added in version 3.8.0.</li> </ul> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 23, 2026 11:16:18 UTC">June 23, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
+</code></pre></div> </details> <h2 id=see-also>See also<a class=headerlink href=#see-also title="Permanent link">&para;</a></h2> <ul> <li><a href=../get/ >get</a> get a value (explicit conversion)</li> <li><a href=../get_ref/ >get_ref</a> get a reference to the stored value</li> </ul> <h2 id=version-history>Version history<a class=headerlink href=#version-history title="Permanent link">&para;</a></h2> <ul> <li>Added in version 3.8.0.</li> </ul> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 29, 2026 20:15:18 UTC">June 29, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
diff --git a/api/basic_json/get_ptr/index.html b/api/basic_json/get_ptr/index.html
index deeb809..82aeb80 100644
--- a/api/basic_json/get_ptr/index.html
+++ b/api/basic_json/get_ptr/index.html
@@ -44,4 +44,4 @@
 <span class=p>}</span>
 </code></pre></div> <p>Output:</p> <div class=highlight><pre><span></span><code><span class=mi>17</span><span class=w> </span><span class=mi>17</span><span class=w> </span><span class=mi>17</span><span class=w> </span><span class=mi>17</span>
 <span class=kc>true</span>
-</code></pre></div> </details> <h2 id=see-also>See also<a class=headerlink href=#see-also title="Permanent link">&para;</a></h2> <ul> <li><a href=../get_ref/ >get_ref()</a> get a reference value</li> </ul> <h2 id=version-history>Version history<a class=headerlink href=#version-history title="Permanent link">&para;</a></h2> <ul> <li>Added in version 1.0.0.</li> <li>Extended to binary types in version 3.8.0.</li> </ul> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 23, 2026 11:16:18 UTC">June 23, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
+</code></pre></div> </details> <h2 id=see-also>See also<a class=headerlink href=#see-also title="Permanent link">&para;</a></h2> <ul> <li><a href=../get_ref/ >get_ref()</a> get a reference value</li> </ul> <h2 id=version-history>Version history<a class=headerlink href=#version-history title="Permanent link">&para;</a></h2> <ul> <li>Added in version 1.0.0.</li> <li>Extended to binary types in version 3.8.0.</li> </ul> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 29, 2026 20:15:18 UTC">June 29, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
diff --git a/api/basic_json/get_ref/index.html b/api/basic_json/get_ref/index.html
index 3909e5a..531c850 100644
--- a/api/basic_json/get_ref/index.html
+++ b/api/basic_json/get_ref/index.html
@@ -32,4 +32,4 @@
 <span class=p>}</span>
 </code></pre></div> <p>Output:</p> <div class=highlight><pre><span></span><code><span class=mi>17</span><span class=w> </span><span class=mi>17</span>
 <span class=p>[</span><span class=err>jso</span><span class=kc>n</span><span class=err>.excep</span><span class=kc>t</span><span class=err>io</span><span class=kc>n</span><span class=err>.</span><span class=kc>t</span><span class=err>ype_error.</span><span class=mi>303</span><span class=p>]</span><span class=w> </span><span class=err>i</span><span class=kc>n</span><span class=err>compa</span><span class=kc>t</span><span class=err>ible</span><span class=w> </span><span class=err>Re</span><span class=kc>feren</span><span class=err>ceType</span><span class=w> </span><span class=kc>f</span><span class=err>or</span><span class=w> </span><span class=err>ge</span><span class=kc>t</span><span class=err>_re</span><span class=kc>f</span><span class=p>,</span><span class=w> </span><span class=err>ac</span><span class=kc>tual</span><span class=w> </span><span class=kc>t</span><span class=err>ype</span><span class=w> </span><span class=err>is</span><span class=w> </span><span class=kc>nu</span><span class=err>mber</span>
-</code></pre></div> </details> <h2 id=see-also>See also<a class=headerlink href=#see-also title="Permanent link">&para;</a></h2> <ul> <li><a href=../get_ptr/ >get_ptr()</a> get a pointer value</li> </ul> <h2 id=version-history>Version history<a class=headerlink href=#version-history title="Permanent link">&para;</a></h2> <ul> <li>Added in version 1.1.0.</li> <li>Extended to binary types in version 3.8.0.</li> </ul> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 23, 2026 11:16:18 UTC">June 23, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
+</code></pre></div> </details> <h2 id=see-also>See also<a class=headerlink href=#see-also title="Permanent link">&para;</a></h2> <ul> <li><a href=../get_ptr/ >get_ptr()</a> get a pointer value</li> </ul> <h2 id=version-history>Version history<a class=headerlink href=#version-history title="Permanent link">&para;</a></h2> <ul> <li>Added in version 1.1.0.</li> <li>Extended to binary types in version 3.8.0.</li> </ul> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 29, 2026 20:15:18 UTC">June 29, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
diff --git a/api/basic_json/get_to/index.html b/api/basic_json/get_to/index.html
index b79e3df..9aeb88a 100644
--- a/api/basic_json/get_to/index.html
+++ b/api/basic_json/get_to/index.html
@@ -1,10 +1,10 @@
-<!doctype html><html lang=en class=no-js> <head><meta charset=utf-8><meta name=viewport content="width=device-width,initial-scale=1"><meta name=author content="Niels Lohmann"><link href="https://json.nlohmann.me/api/basic_json/get_to/" rel="canonical"><link href=../get_ref/ rel=prev><link href=../std_hash/ rel=next><link rel=icon href=../../../assets/images/favicon.png><meta name=generator content="mkdocs-1.6.1, mkdocs-material-9.7.6"><title>get_to - JSON for Modern C++</title><link rel=stylesheet href=../../../assets/stylesheets/main.484c7ddc.min.css><link rel=stylesheet href=../../../assets/stylesheets/palette.ab4e12ef.min.css><link rel="stylesheet" href="../../../assets/external/fonts.googleapis.com/css.61a430c9.css"><style>:root{--md-text-font:"Roboto";--md-code-font:"JetBrains Mono"}</style><link rel=stylesheet href=../../../css/custom.css><script>__md_scope=new URL("../../..",location),__md_hash=e=>[...e].reduce(((e,_)=>(e<<5)-e+_.charCodeAt(0)),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script></head> <body dir=ltr data-md-color-scheme=default data-md-color-primary=indigo data-md-color-accent=indigo> <input class=md-toggle data-md-toggle=drawer type=checkbox id=__drawer autocomplete=off> <input class=md-toggle data-md-toggle=search type=checkbox id=__search autocomplete=off> <label class=md-overlay for=__drawer></label> <div data-md-component=skip> <a href=#nlohmannbasic_jsonget_to class=md-skip> Skip to content </a> </div> <div data-md-component=announce> </div> <header class=md-header data-md-component=header> <nav class="md-header__inner md-grid" aria-label=Header> <a href=../../.. title="JSON for Modern C++" class="md-header__button md-logo" aria-label="JSON for Modern C++" data-md-component=logo> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54"/></svg> </a> <label class="md-header__button md-icon" for=__drawer> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M3 6h18v2H3zm0 5h18v2H3zm0 5h18v2H3z"/></svg> </label> <div class=md-header__title data-md-component=header-title> <div class=md-header__ellipsis> <div class=md-header__topic> <span class=md-ellipsis> JSON for Modern C++ </span> </div> <div class=md-header__topic data-md-component=header-topic> <span class=md-ellipsis> get_to </span> </div> </div> </div> <form class=md-header__option data-md-component=palette> <input class=md-option data-md-color-media="(prefers-color-scheme: light)" data-md-color-scheme=default data-md-color-primary=indigo data-md-color-accent=indigo aria-label="Switch to dark mode" type=radio name=__palette id=__palette_0> <label class="md-header__button md-icon" title="Switch to dark mode" for=__palette_1 hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a4 4 0 0 0-4 4 4 4 0 0 0 4 4 4 4 0 0 0 4-4 4 4 0 0 0-4-4m0 10a6 6 0 0 1-6-6 6 6 0 0 1 6-6 6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12z"/></svg> </label> <input class=md-option data-md-color-media="(prefers-color-scheme: dark)" data-md-color-scheme=slate data-md-color-primary=indigo data-md-color-accent=indigo aria-label="Switch to light mode" type=radio name=__palette id=__palette_1> <label class="md-header__button md-icon" title="Switch to light mode" for=__palette_0 hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 18c-.89 0-1.74-.2-2.5-.55C11.56 16.5 13 14.42 13 12s-1.44-4.5-3.5-5.45C10.26 6.2 11.11 6 12 6a6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12z"/></svg> </label> </form> <script>var palette=__md_get("__palette");if(palette&&palette.color){if("(prefers-color-scheme)"===palette.color.media){var media=matchMedia("(prefers-color-scheme: light)"),input=document.querySelector(media.matches?"[data-md-color-media='(prefers-color-scheme: light)']":"[data-md-color-media='(prefers-color-scheme: dark)']");palette.color.media=input.getAttribute("data-md-color-media"),palette.color.scheme=input.getAttribute("data-md-color-scheme"),palette.color.primary=input.getAttribute("data-md-color-primary"),palette.color.accent=input.getAttribute("data-md-color-accent")}for(var[key,value]of Object.entries(palette.color))document.body.setAttribute("data-md-color-"+key,value)}</script> <label class="md-header__button md-icon" for=__search> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg> </label> <div class=md-search data-md-component=search role=dialog> <label class=md-search__overlay for=__search></label> <div class=md-search__inner role=search> <form class=md-search__form name=search> <input type=text class=md-search__input name=query aria-label=Search placeholder=Search autocapitalize=off autocorrect=off autocomplete=off spellcheck=false data-md-component=search-query required> <label class="md-search__icon md-icon" for=__search> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11z"/></svg> </label> <nav class=md-search__options aria-label=Search> <button type=reset class="md-search__icon md-icon" title=Clear aria-label=Clear tabindex=-1> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z"/></svg> </button> </nav> </form> <div class=md-search__output> <div class=md-search__scrollwrap tabindex=0 data-md-scrollfix> <div class=md-search-result data-md-component=search-result> <div class=md-search-result__meta> Initializing search </div> <ol class=md-search-result__list role=presentation></ol> </div> </div> </div> </div> </div> <div class=md-header__source> <a href="https://github.com/nlohmann/json" title="Go to repository" class="md-source" data-md-component="source"> <div class="md-source__icon md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </div> <div class=md-source__repository> nlohmann/json </div> </a> </div> </nav> </header> <div class=md-container data-md-component=container> <nav class=md-tabs aria-label=Tabs data-md-component=tabs> <div class=md-grid> <ul class=md-tabs__list> <li class=md-tabs__item> <a href=../../.. class=md-tabs__link> Home </a> </li> <li class=md-tabs__item> <a href=../../../features/arbitrary_types/ class=md-tabs__link> Features </a> </li> <li class=md-tabs__item> <a href=../../../integration/ class=md-tabs__link> Integration </a> </li> <li class="md-tabs__item md-tabs__item--active"> <a href=../ class=md-tabs__link> API Documentation </a> </li> <li class=md-tabs__item> <a href=../../../community/ class=md-tabs__link> Community </a> </li> </ul> </div> </nav> <main class=md-main data-md-component=main> <div class="md-main__inner md-grid"> <div class="md-sidebar md-sidebar--primary" data-md-component=sidebar data-md-type=navigation> <div class=md-sidebar__scrollwrap> <div class=md-sidebar__inner> <nav class="md-nav md-nav--primary md-nav--lifted" aria-label=Navigation data-md-level=0> <label class=md-nav__title for=__drawer> <a href=../../.. title="JSON for Modern C++" class="md-nav__button md-logo" aria-label="JSON for Modern C++" data-md-component=logo> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54"/></svg> </a> JSON for Modern C++ </label> <div class=md-nav__source> <a href="https://github.com/nlohmann/json" title="Go to repository" class="md-source" data-md-component="source"> <div class="md-source__icon md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </div> <div class=md-source__repository> nlohmann/json </div> </a> </div> <ul class=md-nav__list data-md-scrollfix> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_1> <div class="md-nav__link md-nav__container"> <a href=../../.. class="md-nav__link "> <span class=md-ellipsis> Home </span> </a> <label class="md-nav__link " for=__nav_1 id=__nav_1_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_1_label aria-expanded=false> <label class=md-nav__title for=__nav_1> <span class="md-nav__icon md-icon"></span> Home </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../home/license/ class=md-nav__link> <span class=md-ellipsis> License </span> </a> </li> <li class=md-nav__item> <a href=../../../home/faq/ class=md-nav__link> <span class=md-ellipsis> FAQ </span> </a> </li> <li class=md-nav__item> <a href=../../../home/exceptions/ class=md-nav__link> <span class=md-ellipsis> Exceptions </span> </a> </li> <li class=md-nav__item> <a href=../../../home/releases/ class=md-nav__link> <span class=md-ellipsis> Releases </span> </a> </li> <li class=md-nav__item> <a href=../../../home/design_goals/ class=md-nav__link> <span class=md-ellipsis> Design goals </span> </a> </li> <li class=md-nav__item> <a href=../../../home/architecture/ class=md-nav__link> <span class=md-ellipsis> Architecture </span> </a> </li> <li class=md-nav__item> <a href=../../../home/customers/ class=md-nav__link> <span class=md-ellipsis> Customers </span> </a> </li> <li class=md-nav__item> <a href=../../../home/sponsors/ class=md-nav__link> <span class=md-ellipsis> Sponsors </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2> <label class=md-nav__link for=__nav_2 id=__nav_2_label tabindex=0> <span class=md-ellipsis> Features </span> <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_2_label aria-expanded=false> <label class=md-nav__title for=__nav_2> <span class="md-nav__icon md-icon"></span> Features </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/arbitrary_types/ class=md-nav__link> <span class=md-ellipsis> Arbitrary Type Conversions </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_2> <div class="md-nav__link md-nav__container"> <a href=../../../features/binary_formats/ class="md-nav__link "> <span class=md-ellipsis> Binary Formats </span> </a> <label class="md-nav__link " for=__nav_2_2 id=__nav_2_2_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_2_label aria-expanded=false> <label class=md-nav__title for=__nav_2_2> <span class="md-nav__icon md-icon"></span> Binary Formats </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/binary_formats/bjdata/ class=md-nav__link> <span class=md-ellipsis> BJData </span> </a> </li> <li class=md-nav__item> <a href=../../../features/binary_formats/bson/ class=md-nav__link> <span class=md-ellipsis> BSON </span> </a> </li> <li class=md-nav__item> <a href=../../../features/binary_formats/cbor/ class=md-nav__link> <span class=md-ellipsis> CBOR </span> </a> </li> <li class=md-nav__item> <a href=../../../features/binary_formats/messagepack/ class=md-nav__link> <span class=md-ellipsis> MessagePack </span> </a> </li> <li class=md-nav__item> <a href=../../../features/binary_formats/ubjson/ class=md-nav__link> <span class=md-ellipsis> UBJSON </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../../features/binary_values/ class=md-nav__link> <span class=md-ellipsis> Binary Values </span> </a> </li> <li class=md-nav__item> <a href=../../../features/comments/ class=md-nav__link> <span class=md-ellipsis> Comments </span> </a> </li> <li class=md-nav__item> <a href=../../../features/trailing_commas/ class=md-nav__link> <span class=md-ellipsis> Trailing Commas </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_6> <div class="md-nav__link md-nav__container"> <a href=../../../features/element_access/ class="md-nav__link "> <span class=md-ellipsis> Element Access </span> </a> <label class="md-nav__link " for=__nav_2_6 id=__nav_2_6_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_6_label aria-expanded=false> <label class=md-nav__title for=__nav_2_6> <span class="md-nav__icon md-icon"></span> Element Access </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/element_access/unchecked_access/ class=md-nav__link> <span class=md-ellipsis> Unchecked access: operator[] </span> </a> </li> <li class=md-nav__item> <a href=../../../features/element_access/checked_access/ class=md-nav__link> <span class=md-ellipsis> Checked access: at </span> </a> </li> <li class=md-nav__item> <a href=../../../features/element_access/default_value/ class=md-nav__link> <span class=md-ellipsis> Access with default value: value </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../../features/iterators/ class=md-nav__link> <span class=md-ellipsis> Iterators </span> </a> </li> <li class=md-nav__item> <a href=../../../features/json_pointer/ class=md-nav__link> <span class=md-ellipsis> JSON Pointer </span> </a> </li> <li class=md-nav__item> <a href=../../../features/json_patch/ class=md-nav__link> <span class=md-ellipsis> JSON Patch and Diff </span> </a> </li> <li class=md-nav__item> <a href=../../../features/merge_patch/ class=md-nav__link> <span class=md-ellipsis> JSON Merge Patch </span> </a> </li> <li class=md-nav__item> <a href=../../../features/modules/ class=md-nav__link> <span class=md-ellipsis> Modules </span> </a> </li> <li class=md-nav__item> <a href=../../../features/namespace/ class=md-nav__link> <span class=md-ellipsis> nlohmann Namespace </span> </a> </li> <li class=md-nav__item> <a href=../../../features/object_order/ class=md-nav__link> <span class=md-ellipsis> Object Order </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_14> <div class="md-nav__link md-nav__container"> <a href=../../../features/parsing/ class="md-nav__link "> <span class=md-ellipsis> Parsing </span> </a> <label class="md-nav__link " for=__nav_2_14 id=__nav_2_14_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_14_label aria-expanded=false> <label class=md-nav__title for=__nav_2_14> <span class="md-nav__icon md-icon"></span> Parsing </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/parsing/json_lines/ class=md-nav__link> <span class=md-ellipsis> JSON Lines </span> </a> </li> <li class=md-nav__item> <a href=../../../features/parsing/parse_exceptions/ class=md-nav__link> <span class=md-ellipsis> Parsing and Exceptions </span> </a> </li> <li class=md-nav__item> <a href=../../../features/parsing/parser_callbacks/ class=md-nav__link> <span class=md-ellipsis> Parser Callbacks </span> </a> </li> <li class=md-nav__item> <a href=../../../features/parsing/sax_interface/ class=md-nav__link> <span class=md-ellipsis> SAX Interface </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../../features/assertions/ class=md-nav__link> <span class=md-ellipsis> Runtime Assertions </span> </a> </li> <li class=md-nav__item> <a href=../../../features/enum_conversion/ class=md-nav__link> <span class=md-ellipsis> Specializing enum conversion </span> </a> </li> <li class=md-nav__item> <a href=../../../features/macros/ class=md-nav__link> <span class=md-ellipsis> Supported Macros </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_18> <div class="md-nav__link md-nav__container"> <a href=../../../features/types/ class="md-nav__link "> <span class=md-ellipsis> Types </span> </a> <label class="md-nav__link " for=__nav_2_18 id=__nav_2_18_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_18_label aria-expanded=false> <label class=md-nav__title for=__nav_2_18> <span class="md-nav__icon md-icon"></span> Types </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/types/number_handling/ class=md-nav__link> <span class=md-ellipsis> Number Handling </span> </a> </li> </ul> </nav> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_3> <div class="md-nav__link md-nav__container"> <a href=../../../integration/ class="md-nav__link "> <span class=md-ellipsis> Integration </span> </a> <label class="md-nav__link " for=__nav_3 id=__nav_3_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_3_label aria-expanded=false> <label class=md-nav__title for=__nav_3> <span class="md-nav__icon md-icon"></span> Integration </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../integration/migration_guide/ class=md-nav__link> <span class=md-ellipsis> Migration Guide </span> </a> </li> <li class=md-nav__item> <a href=../../../integration/cmake/ class=md-nav__link> <span class=md-ellipsis> CMake </span> </a> </li> <li class=md-nav__item> <a href=../../../integration/package_managers/ class=md-nav__link> <span class=md-ellipsis> Package Managers </span> </a> </li> <li class=md-nav__item> <a href=../../../integration/pkg-config/ class=md-nav__link> <span class=md-ellipsis> Pkg-config </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--active md-nav__item--section md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4 checked> <label class=md-nav__link for=__nav_4 id=__nav_4_label tabindex> <span class=md-ellipsis> API Documentation </span> <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_4_label aria-expanded=true> <label class=md-nav__title for=__nav_4> <span class="md-nav__icon md-icon"></span> API Documentation </label> <ul class=md-nav__list data-md-scrollfix> <li class="md-nav__item md-nav__item--active md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_1 checked> <div class="md-nav__link md-nav__container"> <a href=../ class="md-nav__link "> <span class=md-ellipsis> basic_json </span> </a> <label class="md-nav__link " for=__nav_4_1 id=__nav_4_1_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_1_label aria-expanded=true> <label class=md-nav__title for=__nav_4_1> <span class="md-nav__icon md-icon"></span> basic_json </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../basic_json/ class=md-nav__link> <span class=md-ellipsis> (Constructor) </span> </a> </li> <li class=md-nav__item> <a href=../~basic_json/ class=md-nav__link> <span class=md-ellipsis> (Destructor) </span> </a> </li> <li class=md-nav__item> <a href=../accept/ class=md-nav__link> <span class=md-ellipsis> accept </span> </a> </li> <li class=md-nav__item> <a href=../array/ class=md-nav__link> <span class=md-ellipsis> array </span> </a> </li> <li class=md-nav__item> <a href=../array_t/ class=md-nav__link> <span class=md-ellipsis> array_t </span> </a> </li> <li class=md-nav__item> <a href=../at/ class=md-nav__link> <span class=md-ellipsis> at </span> </a> </li> <li class=md-nav__item> <a href=../back/ class=md-nav__link> <span class=md-ellipsis> back </span> </a> </li> <li class=md-nav__item> <a href=../begin/ class=md-nav__link> <span class=md-ellipsis> begin </span> </a> </li> <li class=md-nav__item> <a href=../binary/ class=md-nav__link> <span class=md-ellipsis> binary </span> </a> </li> <li class=md-nav__item> <a href=../binary_t/ class=md-nav__link> <span class=md-ellipsis> binary_t </span> </a> </li> <li class=md-nav__item> <a href=../boolean_t/ class=md-nav__link> <span class=md-ellipsis> boolean_t </span> </a> </li> <li class=md-nav__item> <a href=../cbegin/ class=md-nav__link> <span class=md-ellipsis> cbegin </span> </a> </li> <li class=md-nav__item> <a href=../cbor_tag_handler_t/ class=md-nav__link> <span class=md-ellipsis> cbor_tag_handler_t </span> </a> </li> <li class=md-nav__item> <a href=../cend/ class=md-nav__link> <span class=md-ellipsis> cend </span> </a> </li> <li class=md-nav__item> <a href=../clear/ class=md-nav__link> <span class=md-ellipsis> clear </span> </a> </li> <li class=md-nav__item> <a href=../contains/ class=md-nav__link> <span class=md-ellipsis> contains </span> </a> </li> <li class=md-nav__item> <a href=../count/ class=md-nav__link> <span class=md-ellipsis> count </span> </a> </li> <li class=md-nav__item> <a href=../crbegin/ class=md-nav__link> <span class=md-ellipsis> crbegin </span> </a> </li> <li class=md-nav__item> <a href=../crend/ class=md-nav__link> <span class=md-ellipsis> crend </span> </a> </li> <li class=md-nav__item> <a href=../default_object_comparator_t/ class=md-nav__link> <span class=md-ellipsis> default_object_comparator_t </span> </a> </li> <li class=md-nav__item> <a href=../diff/ class=md-nav__link> <span class=md-ellipsis> diff </span> </a> </li> <li class=md-nav__item> <a href=../dump/ class=md-nav__link> <span class=md-ellipsis> dump </span> </a> </li> <li class=md-nav__item> <a href=../emplace/ class=md-nav__link> <span class=md-ellipsis> emplace </span> </a> </li> <li class=md-nav__item> <a href=../emplace_back/ class=md-nav__link> <span class=md-ellipsis> emplace_back </span> </a> </li> <li class=md-nav__item> <a href=../empty/ class=md-nav__link> <span class=md-ellipsis> empty </span> </a> </li> <li class=md-nav__item> <a href=../end/ class=md-nav__link> <span class=md-ellipsis> end </span> </a> </li> <li class=md-nav__item> <a href=../end_pos/ class=md-nav__link> <span class=md-ellipsis> end_pos </span> </a> </li> <li class=md-nav__item> <a href=../erase/ class=md-nav__link> <span class=md-ellipsis> erase </span> </a> </li> <li class=md-nav__item> <a href=../error_handler_t/ class=md-nav__link> <span class=md-ellipsis> error_handler_t </span> </a> </li> <li class=md-nav__item> <a href=../exception/ class=md-nav__link> <span class=md-ellipsis> exception </span> </a> </li> <li class=md-nav__item> <a href=../find/ class=md-nav__link> <span class=md-ellipsis> find </span> </a> </li> <li class=md-nav__item> <a href=../flatten/ class=md-nav__link> <span class=md-ellipsis> flatten </span> </a> </li> <li class=md-nav__item> <a href=../from_bjdata/ class=md-nav__link> <span class=md-ellipsis> from_bjdata </span> </a> </li> <li class=md-nav__item> <a href=../from_bson/ class=md-nav__link> <span class=md-ellipsis> from_bson </span> </a> </li> <li class=md-nav__item> <a href=../from_cbor/ class=md-nav__link> <span class=md-ellipsis> from_cbor </span> </a> </li> <li class=md-nav__item> <a href=../from_msgpack/ class=md-nav__link> <span class=md-ellipsis> from_msgpack </span> </a> </li> <li class=md-nav__item> <a href=../from_ubjson/ class=md-nav__link> <span class=md-ellipsis> from_ubjson </span> </a> </li> <li class=md-nav__item> <a href=../front/ class=md-nav__link> <span class=md-ellipsis> front </span> </a> </li> <li class=md-nav__item> <a href=../get/ class=md-nav__link> <span class=md-ellipsis> get </span> </a> </li> <li class=md-nav__item> <a href=../get_allocator/ class=md-nav__link> <span class=md-ellipsis> get_allocator </span> </a> </li> <li class=md-nav__item> <a href=../get_binary/ class=md-nav__link> <span class=md-ellipsis> get_binary </span> </a> </li> <li class=md-nav__item> <a href=../get_ptr/ class=md-nav__link> <span class=md-ellipsis> get_ptr </span> </a> </li> <li class=md-nav__item> <a href=../get_ref/ class=md-nav__link> <span class=md-ellipsis> get_ref </span> </a> </li> <li class="md-nav__item md-nav__item--active"> <input class="md-nav__toggle md-toggle" type=checkbox id=__toc> <label class="md-nav__link md-nav__link--active" for=__toc> <span class=md-ellipsis> get_to </span> <span class="md-nav__icon md-icon"></span> </label> <a href=./ class="md-nav__link md-nav__link--active"> <span class=md-ellipsis> get_to </span> </a> <nav class="md-nav md-nav--secondary" aria-label="Table of contents"> <label class=md-nav__title for=__toc> <span class="md-nav__icon md-icon"></span> Table of contents </label> <ul class=md-nav__list data-md-component=toc data-md-scrollfix> <li class=md-nav__item> <a href=#template-parameters class=md-nav__link> <span class=md-ellipsis> Template parameters </span> </a> </li> <li class=md-nav__item> <a href=#return-value class=md-nav__link> <span class=md-ellipsis> Return value </span> </a> </li> <li class=md-nav__item> <a href=#exceptions class=md-nav__link> <span class=md-ellipsis> Exceptions </span> </a> </li> <li class=md-nav__item> <a href=#examples class=md-nav__link> <span class=md-ellipsis> Examples </span> </a> </li> <li class=md-nav__item> <a href=#version-history class=md-nav__link> <span class=md-ellipsis> Version history </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../std_hash/ class=md-nav__link> <span class=md-ellipsis> std::hash&lt;basic_json&gt; </span> </a> </li> <li class=md-nav__item> <a href=../input_format_t/ class=md-nav__link> <span class=md-ellipsis> input_format_t </span> </a> </li> <li class=md-nav__item> <a href=../insert/ class=md-nav__link> <span class=md-ellipsis> insert </span> </a> </li> <li class=md-nav__item> <a href=../invalid_iterator/ class=md-nav__link> <span class=md-ellipsis> invalid_iterator </span> </a> </li> <li class=md-nav__item> <a href=../is_array/ class=md-nav__link> <span class=md-ellipsis> is_array </span> </a> </li> <li class=md-nav__item> <a href=../is_binary/ class=md-nav__link> <span class=md-ellipsis> is_binary </span> </a> </li> <li class=md-nav__item> <a href=../is_boolean/ class=md-nav__link> <span class=md-ellipsis> is_boolean </span> </a> </li> <li class=md-nav__item> <a href=../is_discarded/ class=md-nav__link> <span class=md-ellipsis> is_discarded </span> </a> </li> <li class=md-nav__item> <a href=../is_null/ class=md-nav__link> <span class=md-ellipsis> is_null </span> </a> </li> <li class=md-nav__item> <a href=../is_number/ class=md-nav__link> <span class=md-ellipsis> is_number </span> </a> </li> <li class=md-nav__item> <a href=../is_number_float/ class=md-nav__link> <span class=md-ellipsis> is_number_float </span> </a> </li> <li class=md-nav__item> <a href=../is_number_integer/ class=md-nav__link> <span class=md-ellipsis> is_number_integer </span> </a> </li> <li class=md-nav__item> <a href=../is_number_unsigned/ class=md-nav__link> <span class=md-ellipsis> is_number_unsigned </span> </a> </li> <li class=md-nav__item> <a href=../is_object/ class=md-nav__link> <span class=md-ellipsis> is_object </span> </a> </li> <li class=md-nav__item> <a href=../is_primitive/ class=md-nav__link> <span class=md-ellipsis> is_primitive </span> </a> </li> <li class=md-nav__item> <a href=../is_string/ class=md-nav__link> <span class=md-ellipsis> is_string </span> </a> </li> <li class=md-nav__item> <a href=../is_structured/ class=md-nav__link> <span class=md-ellipsis> is_structured </span> </a> </li> <li class=md-nav__item> <a href=../items/ class=md-nav__link> <span class=md-ellipsis> items </span> </a> </li> <li class=md-nav__item> <a href=../json_base_class_t/ class=md-nav__link> <span class=md-ellipsis> json_base_class_t </span> </a> </li> <li class=md-nav__item> <a href=../json_serializer/ class=md-nav__link> <span class=md-ellipsis> json_serializer </span> </a> </li> <li class=md-nav__item> <a href=../max_size/ class=md-nav__link> <span class=md-ellipsis> max_size </span> </a> </li> <li class=md-nav__item> <a href=../meta/ class=md-nav__link> <span class=md-ellipsis> meta </span> </a> </li> <li class=md-nav__item> <a href=../merge_patch/ class=md-nav__link> <span class=md-ellipsis> merge_patch </span> </a> </li> <li class=md-nav__item> <a href=../number_float_t/ class=md-nav__link> <span class=md-ellipsis> number_float_t </span> </a> </li> <li class=md-nav__item> <a href=../number_integer_t/ class=md-nav__link> <span class=md-ellipsis> number_integer_t </span> </a> </li> <li class=md-nav__item> <a href=../number_unsigned_t/ class=md-nav__link> <span class=md-ellipsis> number_unsigned_t </span> </a> </li> <li class=md-nav__item> <a href=../object/ class=md-nav__link> <span class=md-ellipsis> object </span> </a> </li> <li class=md-nav__item> <a href=../object_comparator_t/ class=md-nav__link> <span class=md-ellipsis> object_comparator_t </span> </a> </li> <li class=md-nav__item> <a href=../object_t/ class=md-nav__link> <span class=md-ellipsis> object_t </span> </a> </li> <li class=md-nav__item> <a href=../operator_ValueType/ class=md-nav__link> <span class=md-ellipsis> operator ValueType </span> </a> </li> <li class=md-nav__item> <a href=../operator_value_t/ class=md-nav__link> <span class=md-ellipsis> operator value_t </span> </a> </li> <li class=md-nav__item> <a href=../operator%5B%5D/ class=md-nav__link> <span class=md-ellipsis> operator[] </span> </a> </li> <li class=md-nav__item> <a href=../operator%3D/ class=md-nav__link> <span class=md-ellipsis> operator= </span> </a> </li> <li class=md-nav__item> <a href=../operator%2B%3D/ class=md-nav__link> <span class=md-ellipsis> operator+= </span> </a> </li> <li class=md-nav__item> <a href=../operator_eq/ class=md-nav__link> <span class=md-ellipsis> operator== </span> </a> </li> <li class=md-nav__item> <a href=../operator_ne/ class=md-nav__link> <span class=md-ellipsis> operator!= </span> </a> </li> <li class=md-nav__item> <a href=../operator_lt/ class=md-nav__link> <span class=md-ellipsis> operator< </span> </a> </li> <li class=md-nav__item> <a href=../operator_gt/ class=md-nav__link> <span class=md-ellipsis> operator> </span> </a> </li> <li class=md-nav__item> <a href=../operator_le/ class=md-nav__link> <span class=md-ellipsis> operator<= </span> </a> </li> <li class=md-nav__item> <a href=../operator_ge/ class=md-nav__link> <span class=md-ellipsis> operator>= </span> </a> </li> <li class=md-nav__item> <a href=../operator_spaceship/ class=md-nav__link> <span class=md-ellipsis> operator<=> </span> </a> </li> <li class=md-nav__item> <a href=../out_of_range/ class=md-nav__link> <span class=md-ellipsis> out_of_range </span> </a> </li> <li class=md-nav__item> <a href=../other_error/ class=md-nav__link> <span class=md-ellipsis> other_error </span> </a> </li> <li class=md-nav__item> <a href=../parse/ class=md-nav__link> <span class=md-ellipsis> parse </span> </a> </li> <li class=md-nav__item> <a href=../parse_error/ class=md-nav__link> <span class=md-ellipsis> parse_error </span> </a> </li> <li class=md-nav__item> <a href=../parse_event_t/ class=md-nav__link> <span class=md-ellipsis> parse_event_t </span> </a> </li> <li class=md-nav__item> <a href=../parser_callback_t/ class=md-nav__link> <span class=md-ellipsis> parser_callback_t </span> </a> </li> <li class=md-nav__item> <a href=../patch/ class=md-nav__link> <span class=md-ellipsis> patch </span> </a> </li> <li class=md-nav__item> <a href=../patch_inplace/ class=md-nav__link> <span class=md-ellipsis> patch_inplace </span> </a> </li> <li class=md-nav__item> <a href=../push_back/ class=md-nav__link> <span class=md-ellipsis> push_back </span> </a> </li> <li class=md-nav__item> <a href=../rbegin/ class=md-nav__link> <span class=md-ellipsis> rbegin </span> </a> </li> <li class=md-nav__item> <a href=../rend/ class=md-nav__link> <span class=md-ellipsis> rend </span> </a> </li> <li class=md-nav__item> <a href=../sax_parse/ class=md-nav__link> <span class=md-ellipsis> sax_parse </span> </a> </li> <li class=md-nav__item> <a href=../size/ class=md-nav__link> <span class=md-ellipsis> size </span> </a> </li> <li class=md-nav__item> <a href=../start_pos/ class=md-nav__link> <span class=md-ellipsis> start_pos </span> </a> </li> <li class=md-nav__item> <a href=../string_t/ class=md-nav__link> <span class=md-ellipsis> string_t </span> </a> </li> <li class=md-nav__item> <a href=../swap/ class=md-nav__link> <span class=md-ellipsis> swap </span> </a> </li> <li class=md-nav__item> <a href=../std_swap/ class=md-nav__link> <span class=md-ellipsis> std::swap&lt;basic_json&gt; </span> </a> </li> <li class=md-nav__item> <a href=../to_bjdata/ class=md-nav__link> <span class=md-ellipsis> to_bjdata </span> </a> </li> <li class=md-nav__item> <a href=../to_bson/ class=md-nav__link> <span class=md-ellipsis> to_bson </span> </a> </li> <li class=md-nav__item> <a href=../to_cbor/ class=md-nav__link> <span class=md-ellipsis> to_cbor </span> </a> </li> <li class=md-nav__item> <a href=../to_msgpack/ class=md-nav__link> <span class=md-ellipsis> to_msgpack </span> </a> </li> <li class=md-nav__item> <a href=../to_string/ class=md-nav__link> <span class=md-ellipsis> to_string </span> </a> </li> <li class=md-nav__item> <a href=../to_ubjson/ class=md-nav__link> <span class=md-ellipsis> to_ubjson </span> </a> </li> <li class=md-nav__item> <a href=../type/ class=md-nav__link> <span class=md-ellipsis> type </span> </a> </li> <li class=md-nav__item> <a href=../type_error/ class=md-nav__link> <span class=md-ellipsis> type_error </span> </a> </li> <li class=md-nav__item> <a href=../type_name/ class=md-nav__link> <span class=md-ellipsis> type_name </span> </a> </li> <li class=md-nav__item> <a href=../unflatten/ class=md-nav__link> <span class=md-ellipsis> unflatten </span> </a> </li> <li class=md-nav__item> <a href=../update/ class=md-nav__link> <span class=md-ellipsis> update </span> </a> </li> <li class=md-nav__item> <a href=../value/ class=md-nav__link> <span class=md-ellipsis> value </span> </a> </li> <li class=md-nav__item> <a href=../value_t/ class=md-nav__link> <span class=md-ellipsis> value_t </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_2> <div class="md-nav__link md-nav__container"> <a href=../../byte_container_with_subtype/ class="md-nav__link "> <span class=md-ellipsis> byte_container_with_subtype </span> </a> <label class="md-nav__link " for=__nav_4_2 id=__nav_4_2_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_2_label aria-expanded=false> <label class=md-nav__title for=__nav_4_2> <span class="md-nav__icon md-icon"></span> byte_container_with_subtype </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../byte_container_with_subtype/byte_container_with_subtype/ class=md-nav__link> <span class=md-ellipsis> (constructor) </span> </a> </li> <li class=md-nav__item> <a href=../../byte_container_with_subtype/clear_subtype/ class=md-nav__link> <span class=md-ellipsis> clear_subtype </span> </a> </li> <li class=md-nav__item> <a href=../../byte_container_with_subtype/has_subtype/ class=md-nav__link> <span class=md-ellipsis> has_subtype </span> </a> </li> <li class=md-nav__item> <a href=../../byte_container_with_subtype/set_subtype/ class=md-nav__link> <span class=md-ellipsis> set_subtype </span> </a> </li> <li class=md-nav__item> <a href=../../byte_container_with_subtype/subtype/ class=md-nav__link> <span class=md-ellipsis> subtype </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_3> <div class="md-nav__link md-nav__container"> <a href=../../adl_serializer/ class="md-nav__link "> <span class=md-ellipsis> adl_serializer </span> </a> <label class="md-nav__link " for=__nav_4_3 id=__nav_4_3_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_3_label aria-expanded=false> <label class=md-nav__title for=__nav_4_3> <span class="md-nav__icon md-icon"></span> adl_serializer </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../adl_serializer/from_json/ class=md-nav__link> <span class=md-ellipsis> from_json </span> </a> </li> <li class=md-nav__item> <a href=../../adl_serializer/to_json/ class=md-nav__link> <span class=md-ellipsis> to_json </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../json/ class=md-nav__link> <span class=md-ellipsis> json </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_5> <div class="md-nav__link md-nav__container"> <a href=../../json_pointer/ class="md-nav__link "> <span class=md-ellipsis> json_pointer </span> </a> <label class="md-nav__link " for=__nav_4_5 id=__nav_4_5_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_5_label aria-expanded=false> <label class=md-nav__title for=__nav_4_5> <span class="md-nav__icon md-icon"></span> json_pointer </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../json_pointer/json_pointer/ class=md-nav__link> <span class=md-ellipsis> (Constructor) </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/back/ class=md-nav__link> <span class=md-ellipsis> back </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/empty/ class=md-nav__link> <span class=md-ellipsis> empty </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/front/ class=md-nav__link> <span class=md-ellipsis> front </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_string_t/ class=md-nav__link> <span class=md-ellipsis> operator string_t </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_eq/ class=md-nav__link> <span class=md-ellipsis> operator== </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_ne/ class=md-nav__link> <span class=md-ellipsis> operator!= </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_slash/ class=md-nav__link> <span class=md-ellipsis> operator/ </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_slasheq/ class=md-nav__link> <span class=md-ellipsis> operator/= </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/parent_pointer/ class=md-nav__link> <span class=md-ellipsis> parent_pointer </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/pop_back/ class=md-nav__link> <span class=md-ellipsis> pop_back </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/pop_front/ class=md-nav__link> <span class=md-ellipsis> pop_front </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/push_back/ class=md-nav__link> <span class=md-ellipsis> push_back </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/push_front/ class=md-nav__link> <span class=md-ellipsis> push_front </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/string_t/ class=md-nav__link> <span class=md-ellipsis> string_t </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/to_string/ class=md-nav__link> <span class=md-ellipsis> to_string </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_6> <div class="md-nav__link md-nav__container"> <a href=../../json_sax/ class="md-nav__link "> <span class=md-ellipsis> json_sax </span> </a> <label class="md-nav__link " for=__nav_4_6 id=__nav_4_6_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_6_label aria-expanded=false> <label class=md-nav__title for=__nav_4_6> <span class="md-nav__icon md-icon"></span> json_sax </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../json_sax/binary/ class=md-nav__link> <span class=md-ellipsis> binary </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/boolean/ class=md-nav__link> <span class=md-ellipsis> boolean </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/end_array/ class=md-nav__link> <span class=md-ellipsis> end_array </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/end_object/ class=md-nav__link> <span class=md-ellipsis> end_object </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/key/ class=md-nav__link> <span class=md-ellipsis> key </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/null/ class=md-nav__link> <span class=md-ellipsis> null </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/number_float/ class=md-nav__link> <span class=md-ellipsis> number_float </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/number_integer/ class=md-nav__link> <span class=md-ellipsis> number_integer </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/number_unsigned/ class=md-nav__link> <span class=md-ellipsis> number_unsigned </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/parse_error/ class=md-nav__link> <span class=md-ellipsis> parse_error </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/start_array/ class=md-nav__link> <span class=md-ellipsis> start_array </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/start_object/ class=md-nav__link> <span class=md-ellipsis> start_object </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/string/ class=md-nav__link> <span class=md-ellipsis> string </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../operator_ltlt/ class=md-nav__link> <span class=md-ellipsis> operator<<(basic_json), operator<<(json_pointer) </span> </a> </li> <li class=md-nav__item> <a href=../../operator_gtgt/ class=md-nav__link> <span class=md-ellipsis> operator>>(basic_json) </span> </a> </li> <li class=md-nav__item> <a href=../../operator_literal_json/ class=md-nav__link> <span class=md-ellipsis> operator""_json </span> </a> </li> <li class=md-nav__item> <a href=../../operator_literal_json_pointer/ class=md-nav__link> <span class=md-ellipsis> operator""_json_pointer </span> </a> </li> <li class=md-nav__item> <a href=../../ordered_json/ class=md-nav__link> <span class=md-ellipsis> ordered_json </span> </a> </li> <li class=md-nav__item> <a href=../../ordered_map/ class=md-nav__link> <span class=md-ellipsis> ordered_map </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_13> <div class="md-nav__link md-nav__container"> <a href=../../macros/ class="md-nav__link "> <span class=md-ellipsis> macros </span> </a> <label class="md-nav__link " for=__nav_4_13 id=__nav_4_13_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_13_label aria-expanded=false> <label class=md-nav__title for=__nav_4_13> <span class="md-nav__icon md-icon"></span> macros </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../macros/json_assert/ class=md-nav__link> <span class=md-ellipsis> JSON_ASSERT </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_brace_init_copy_semantics/ class=md-nav__link> <span class=md-ellipsis> JSON_BRACE_INIT_COPY_SEMANTICS </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_throw_user/ class=md-nav__link> <span class=md-ellipsis> JSON_CATCH_USER, JSON_THROW_USER, JSON_TRY_USER </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_diagnostics/ class=md-nav__link> <span class=md-ellipsis> JSON_DIAGNOSTICS </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_diagnostic_positions/ class=md-nav__link> <span class=md-ellipsis> JSON_DIAGNOSTIC_POSITIONS </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_disable_enum_serialization/ class=md-nav__link> <span class=md-ellipsis> JSON_DISABLE_ENUM_SERIALIZATION </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_has_cpp_11/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_CPP_11, JSON_HAS_CPP_14, JSON_HAS_CPP_17, JSON_HAS_CPP_20 </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_has_filesystem/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_EXPERIMENTAL_FILESYSTEM, JSON_HAS_FILESYSTEM </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_has_ranges/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_RANGES </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_has_static_rtti/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_STATIC_RTTI </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_has_three_way_comparison/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_THREE_WAY_COMPARISON </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_noexception/ class=md-nav__link> <span class=md-ellipsis> JSON_NOEXCEPTION </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_no_io/ class=md-nav__link> <span class=md-ellipsis> JSON_NO_IO </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_skip_library_version_check/ class=md-nav__link> <span class=md-ellipsis> JSON_SKIP_LIBRARY_VERSION_CHECK </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_skip_unsupported_compiler_check/ class=md-nav__link> <span class=md-ellipsis> JSON_SKIP_UNSUPPORTED_COMPILER_CHECK </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_use_global_udls/ class=md-nav__link> <span class=md-ellipsis> JSON_USE_GLOBAL_UDLS </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_use_implicit_conversions/ class=md-nav__link> <span class=md-ellipsis> JSON_USE_IMPLICIT_CONVERSIONS </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_use_legacy_discarded_value_comparison/ class=md-nav__link> <span class=md-ellipsis> JSON_USE_LEGACY_DISCARDED_VALUE_COMPARISON </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_define_derived_type/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_ONLY_SERIALIZE, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_define_type_intrusive/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_TYPE_INTRUSIVE, NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_TYPE_INTRUSIVE_ONLY_SERIALIZE </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_define_type_non_intrusive/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_define_type_with_names/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_TYPE_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_namespace/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_NAMESPACE </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_namespace_begin/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_NAMESPACE_BEGIN, NLOHMANN_JSON_NAMESPACE_END </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_namespace_no_version/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_NAMESPACE_NO_VERSION </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_serialize_enum/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_SERIALIZE_ENUM </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_serialize_enum_strict/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_SERIALIZE_ENUM_STRICT </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_version_major/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_VERSION_MAJOR, NLOHMANN_JSON_VERSION_MINOR, NLOHMANN_JSON_VERSION_PATCH </span> </a> </li> </ul> </nav> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_5> <div class="md-nav__link md-nav__container"> <a href=../../../community/ class="md-nav__link "> <span class=md-ellipsis> Community </span> </a> <label class="md-nav__link " for=__nav_5 id=__nav_5_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_5_label aria-expanded=false> <label class=md-nav__title for=__nav_5> <span class="md-nav__icon md-icon"></span> Community </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../community/code_of_conduct/ class=md-nav__link> <span class=md-ellipsis> Code of Conduct </span> </a> </li> <li class=md-nav__item> <a href=../../../community/contribution_guidelines/ class=md-nav__link> <span class=md-ellipsis> Contribution Guidelines </span> </a> </li> <li class=md-nav__item> <a href=../../../community/quality_assurance/ class=md-nav__link> <span class=md-ellipsis> Quality assurance </span> </a> </li> <li class=md-nav__item> <a href=../../../community/governance/ class=md-nav__link> <span class=md-ellipsis> Governance </span> </a> </li> <li class=md-nav__item> <a href=../../../community/security_policy/ class=md-nav__link> <span class=md-ellipsis> Security Policy </span> </a> </li> </ul> </nav> </li> </ul> </nav> </div> </div> </div> <div class="md-sidebar md-sidebar--secondary" data-md-component=sidebar data-md-type=toc> <div class=md-sidebar__scrollwrap> <div class=md-sidebar__inner> <nav class="md-nav md-nav--secondary" aria-label="Table of contents"> <label class=md-nav__title for=__toc> <span class="md-nav__icon md-icon"></span> Table of contents </label> <ul class=md-nav__list data-md-component=toc data-md-scrollfix> <li class=md-nav__item> <a href=#template-parameters class=md-nav__link> <span class=md-ellipsis> Template parameters </span> </a> </li> <li class=md-nav__item> <a href=#return-value class=md-nav__link> <span class=md-ellipsis> Return value </span> </a> </li> <li class=md-nav__item> <a href=#exceptions class=md-nav__link> <span class=md-ellipsis> Exceptions </span> </a> </li> <li class=md-nav__item> <a href=#examples class=md-nav__link> <span class=md-ellipsis> Examples </span> </a> </li> <li class=md-nav__item> <a href=#version-history class=md-nav__link> <span class=md-ellipsis> Version history </span> </a> </li> </ul> </nav> </div> </div> </div> <div class=md-content data-md-component=content> <article class="md-content__inner md-typeset"> <a href="https://github.com/nlohmann/json/edit/develop/docs/mkdocs/docs/api/basic_json/get_to.md" title="Edit this page" class="md-content__button md-icon" rel="edit"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M10 20H6V4h7v5h5v3.1l2-2V8l-6-6H6c-1.1 0-2 .9-2 2v16c0 1.1.9 2 2 2h4zm10.2-7c.1 0 .3.1.4.2l1.3 1.3c.2.2.2.6 0 .8l-1 1-2.1-2.1 1-1c.1-.1.2-.2.4-.2m0 3.9L14.1 23H12v-2.1l6.1-6.1z"/></svg> </a> <a href="https://github.com/nlohmann/json/raw/develop/docs/mkdocs/docs/api/basic_json/get_to.md" title="View source of this page" class="md-content__button md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M17 18c.56 0 1 .44 1 1s-.44 1-1 1-1-.44-1-1 .44-1 1-1m0-3c-2.73 0-5.06 1.66-6 4 .94 2.34 3.27 4 6 4s5.06-1.66 6-4c-.94-2.34-3.27-4-6-4m0 6.5a2.5 2.5 0 0 1-2.5-2.5 2.5 2.5 0 0 1 2.5-2.5 2.5 2.5 0 0 1 2.5 2.5 2.5 2.5 0 0 1-2.5 2.5M9.27 20H6V4h7v5h5v4.07c.7.08 1.36.25 2 .49V8l-6-6H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h4.5a8.2 8.2 0 0 1-1.23-2"/></svg> </a> <h1 id=nlohmannbasic_jsonget_to><small>nlohmann::basic_json::</small>get_to<a class=headerlink href=#nlohmannbasic_jsonget_to title="Permanent link">&para;</a></h1> <div class=highlight><pre><span></span><code><span class=k>template</span><span class=o>&lt;</span><span class=k>typename</span><span class=w> </span><span class=nc>ValueType</span><span class=o>&gt;</span>
+<!doctype html><html lang=en class=no-js> <head><meta charset=utf-8><meta name=viewport content="width=device-width,initial-scale=1"><meta name=author content="Niels Lohmann"><link href="https://json.nlohmann.me/api/basic_json/get_to/" rel="canonical"><link href=../get_ref/ rel=prev><link href=../std_hash/ rel=next><link rel=icon href=../../../assets/images/favicon.png><meta name=generator content="mkdocs-1.6.1, mkdocs-material-9.7.6"><title>get_to - JSON for Modern C++</title><link rel=stylesheet href=../../../assets/stylesheets/main.484c7ddc.min.css><link rel=stylesheet href=../../../assets/stylesheets/palette.ab4e12ef.min.css><link rel="stylesheet" href="../../../assets/external/fonts.googleapis.com/css.61a430c9.css"><style>:root{--md-text-font:"Roboto";--md-code-font:"JetBrains Mono"}</style><link rel=stylesheet href=../../../css/custom.css><script>__md_scope=new URL("../../..",location),__md_hash=e=>[...e].reduce(((e,_)=>(e<<5)-e+_.charCodeAt(0)),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script></head> <body dir=ltr data-md-color-scheme=default data-md-color-primary=indigo data-md-color-accent=indigo> <input class=md-toggle data-md-toggle=drawer type=checkbox id=__drawer autocomplete=off> <input class=md-toggle data-md-toggle=search type=checkbox id=__search autocomplete=off> <label class=md-overlay for=__drawer></label> <div data-md-component=skip> <a href=#nlohmannbasic_jsonget_to class=md-skip> Skip to content </a> </div> <div data-md-component=announce> </div> <header class=md-header data-md-component=header> <nav class="md-header__inner md-grid" aria-label=Header> <a href=../../.. title="JSON for Modern C++" class="md-header__button md-logo" aria-label="JSON for Modern C++" data-md-component=logo> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54"/></svg> </a> <label class="md-header__button md-icon" for=__drawer> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M3 6h18v2H3zm0 5h18v2H3zm0 5h18v2H3z"/></svg> </label> <div class=md-header__title data-md-component=header-title> <div class=md-header__ellipsis> <div class=md-header__topic> <span class=md-ellipsis> JSON for Modern C++ </span> </div> <div class=md-header__topic data-md-component=header-topic> <span class=md-ellipsis> get_to </span> </div> </div> </div> <form class=md-header__option data-md-component=palette> <input class=md-option data-md-color-media="(prefers-color-scheme: light)" data-md-color-scheme=default data-md-color-primary=indigo data-md-color-accent=indigo aria-label="Switch to dark mode" type=radio name=__palette id=__palette_0> <label class="md-header__button md-icon" title="Switch to dark mode" for=__palette_1 hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a4 4 0 0 0-4 4 4 4 0 0 0 4 4 4 4 0 0 0 4-4 4 4 0 0 0-4-4m0 10a6 6 0 0 1-6-6 6 6 0 0 1 6-6 6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12z"/></svg> </label> <input class=md-option data-md-color-media="(prefers-color-scheme: dark)" data-md-color-scheme=slate data-md-color-primary=indigo data-md-color-accent=indigo aria-label="Switch to light mode" type=radio name=__palette id=__palette_1> <label class="md-header__button md-icon" title="Switch to light mode" for=__palette_0 hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 18c-.89 0-1.74-.2-2.5-.55C11.56 16.5 13 14.42 13 12s-1.44-4.5-3.5-5.45C10.26 6.2 11.11 6 12 6a6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12z"/></svg> </label> </form> <script>var palette=__md_get("__palette");if(palette&&palette.color){if("(prefers-color-scheme)"===palette.color.media){var media=matchMedia("(prefers-color-scheme: light)"),input=document.querySelector(media.matches?"[data-md-color-media='(prefers-color-scheme: light)']":"[data-md-color-media='(prefers-color-scheme: dark)']");palette.color.media=input.getAttribute("data-md-color-media"),palette.color.scheme=input.getAttribute("data-md-color-scheme"),palette.color.primary=input.getAttribute("data-md-color-primary"),palette.color.accent=input.getAttribute("data-md-color-accent")}for(var[key,value]of Object.entries(palette.color))document.body.setAttribute("data-md-color-"+key,value)}</script> <label class="md-header__button md-icon" for=__search> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg> </label> <div class=md-search data-md-component=search role=dialog> <label class=md-search__overlay for=__search></label> <div class=md-search__inner role=search> <form class=md-search__form name=search> <input type=text class=md-search__input name=query aria-label=Search placeholder=Search autocapitalize=off autocorrect=off autocomplete=off spellcheck=false data-md-component=search-query required> <label class="md-search__icon md-icon" for=__search> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11z"/></svg> </label> <nav class=md-search__options aria-label=Search> <button type=reset class="md-search__icon md-icon" title=Clear aria-label=Clear tabindex=-1> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z"/></svg> </button> </nav> </form> <div class=md-search__output> <div class=md-search__scrollwrap tabindex=0 data-md-scrollfix> <div class=md-search-result data-md-component=search-result> <div class=md-search-result__meta> Initializing search </div> <ol class=md-search-result__list role=presentation></ol> </div> </div> </div> </div> </div> <div class=md-header__source> <a href="https://github.com/nlohmann/json" title="Go to repository" class="md-source" data-md-component="source"> <div class="md-source__icon md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </div> <div class=md-source__repository> nlohmann/json </div> </a> </div> </nav> </header> <div class=md-container data-md-component=container> <nav class=md-tabs aria-label=Tabs data-md-component=tabs> <div class=md-grid> <ul class=md-tabs__list> <li class=md-tabs__item> <a href=../../.. class=md-tabs__link> Home </a> </li> <li class=md-tabs__item> <a href=../../../features/arbitrary_types/ class=md-tabs__link> Features </a> </li> <li class=md-tabs__item> <a href=../../../integration/ class=md-tabs__link> Integration </a> </li> <li class="md-tabs__item md-tabs__item--active"> <a href=../ class=md-tabs__link> API Documentation </a> </li> <li class=md-tabs__item> <a href=../../../community/ class=md-tabs__link> Community </a> </li> </ul> </div> </nav> <main class=md-main data-md-component=main> <div class="md-main__inner md-grid"> <div class="md-sidebar md-sidebar--primary" data-md-component=sidebar data-md-type=navigation> <div class=md-sidebar__scrollwrap> <div class=md-sidebar__inner> <nav class="md-nav md-nav--primary md-nav--lifted" aria-label=Navigation data-md-level=0> <label class=md-nav__title for=__drawer> <a href=../../.. title="JSON for Modern C++" class="md-nav__button md-logo" aria-label="JSON for Modern C++" data-md-component=logo> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54"/></svg> </a> JSON for Modern C++ </label> <div class=md-nav__source> <a href="https://github.com/nlohmann/json" title="Go to repository" class="md-source" data-md-component="source"> <div class="md-source__icon md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </div> <div class=md-source__repository> nlohmann/json </div> </a> </div> <ul class=md-nav__list data-md-scrollfix> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_1> <div class="md-nav__link md-nav__container"> <a href=../../.. class="md-nav__link "> <span class=md-ellipsis> Home </span> </a> <label class="md-nav__link " for=__nav_1 id=__nav_1_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_1_label aria-expanded=false> <label class=md-nav__title for=__nav_1> <span class="md-nav__icon md-icon"></span> Home </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../home/license/ class=md-nav__link> <span class=md-ellipsis> License </span> </a> </li> <li class=md-nav__item> <a href=../../../home/faq/ class=md-nav__link> <span class=md-ellipsis> FAQ </span> </a> </li> <li class=md-nav__item> <a href=../../../home/exceptions/ class=md-nav__link> <span class=md-ellipsis> Exceptions </span> </a> </li> <li class=md-nav__item> <a href=../../../home/releases/ class=md-nav__link> <span class=md-ellipsis> Releases </span> </a> </li> <li class=md-nav__item> <a href=../../../home/design_goals/ class=md-nav__link> <span class=md-ellipsis> Design goals </span> </a> </li> <li class=md-nav__item> <a href=../../../home/architecture/ class=md-nav__link> <span class=md-ellipsis> Architecture </span> </a> </li> <li class=md-nav__item> <a href=../../../home/customers/ class=md-nav__link> <span class=md-ellipsis> Customers </span> </a> </li> <li class=md-nav__item> <a href=../../../home/sponsors/ class=md-nav__link> <span class=md-ellipsis> Sponsors </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2> <label class=md-nav__link for=__nav_2 id=__nav_2_label tabindex=0> <span class=md-ellipsis> Features </span> <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_2_label aria-expanded=false> <label class=md-nav__title for=__nav_2> <span class="md-nav__icon md-icon"></span> Features </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/arbitrary_types/ class=md-nav__link> <span class=md-ellipsis> Arbitrary Type Conversions </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_2> <div class="md-nav__link md-nav__container"> <a href=../../../features/binary_formats/ class="md-nav__link "> <span class=md-ellipsis> Binary Formats </span> </a> <label class="md-nav__link " for=__nav_2_2 id=__nav_2_2_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_2_label aria-expanded=false> <label class=md-nav__title for=__nav_2_2> <span class="md-nav__icon md-icon"></span> Binary Formats </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/binary_formats/bjdata/ class=md-nav__link> <span class=md-ellipsis> BJData </span> </a> </li> <li class=md-nav__item> <a href=../../../features/binary_formats/bson/ class=md-nav__link> <span class=md-ellipsis> BSON </span> </a> </li> <li class=md-nav__item> <a href=../../../features/binary_formats/cbor/ class=md-nav__link> <span class=md-ellipsis> CBOR </span> </a> </li> <li class=md-nav__item> <a href=../../../features/binary_formats/messagepack/ class=md-nav__link> <span class=md-ellipsis> MessagePack </span> </a> </li> <li class=md-nav__item> <a href=../../../features/binary_formats/ubjson/ class=md-nav__link> <span class=md-ellipsis> UBJSON </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../../features/binary_values/ class=md-nav__link> <span class=md-ellipsis> Binary Values </span> </a> </li> <li class=md-nav__item> <a href=../../../features/comments/ class=md-nav__link> <span class=md-ellipsis> Comments </span> </a> </li> <li class=md-nav__item> <a href=../../../features/trailing_commas/ class=md-nav__link> <span class=md-ellipsis> Trailing Commas </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_6> <div class="md-nav__link md-nav__container"> <a href=../../../features/element_access/ class="md-nav__link "> <span class=md-ellipsis> Element Access </span> </a> <label class="md-nav__link " for=__nav_2_6 id=__nav_2_6_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_6_label aria-expanded=false> <label class=md-nav__title for=__nav_2_6> <span class="md-nav__icon md-icon"></span> Element Access </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/element_access/unchecked_access/ class=md-nav__link> <span class=md-ellipsis> Unchecked access: operator[] </span> </a> </li> <li class=md-nav__item> <a href=../../../features/element_access/checked_access/ class=md-nav__link> <span class=md-ellipsis> Checked access: at </span> </a> </li> <li class=md-nav__item> <a href=../../../features/element_access/default_value/ class=md-nav__link> <span class=md-ellipsis> Access with default value: value </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../../features/iterators/ class=md-nav__link> <span class=md-ellipsis> Iterators </span> </a> </li> <li class=md-nav__item> <a href=../../../features/json_pointer/ class=md-nav__link> <span class=md-ellipsis> JSON Pointer </span> </a> </li> <li class=md-nav__item> <a href=../../../features/json_patch/ class=md-nav__link> <span class=md-ellipsis> JSON Patch and Diff </span> </a> </li> <li class=md-nav__item> <a href=../../../features/merge_patch/ class=md-nav__link> <span class=md-ellipsis> JSON Merge Patch </span> </a> </li> <li class=md-nav__item> <a href=../../../features/modules/ class=md-nav__link> <span class=md-ellipsis> Modules </span> </a> </li> <li class=md-nav__item> <a href=../../../features/namespace/ class=md-nav__link> <span class=md-ellipsis> nlohmann Namespace </span> </a> </li> <li class=md-nav__item> <a href=../../../features/object_order/ class=md-nav__link> <span class=md-ellipsis> Object Order </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_14> <div class="md-nav__link md-nav__container"> <a href=../../../features/parsing/ class="md-nav__link "> <span class=md-ellipsis> Parsing </span> </a> <label class="md-nav__link " for=__nav_2_14 id=__nav_2_14_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_14_label aria-expanded=false> <label class=md-nav__title for=__nav_2_14> <span class="md-nav__icon md-icon"></span> Parsing </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/parsing/json_lines/ class=md-nav__link> <span class=md-ellipsis> JSON Lines </span> </a> </li> <li class=md-nav__item> <a href=../../../features/parsing/parse_exceptions/ class=md-nav__link> <span class=md-ellipsis> Parsing and Exceptions </span> </a> </li> <li class=md-nav__item> <a href=../../../features/parsing/parser_callbacks/ class=md-nav__link> <span class=md-ellipsis> Parser Callbacks </span> </a> </li> <li class=md-nav__item> <a href=../../../features/parsing/sax_interface/ class=md-nav__link> <span class=md-ellipsis> SAX Interface </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../../features/assertions/ class=md-nav__link> <span class=md-ellipsis> Runtime Assertions </span> </a> </li> <li class=md-nav__item> <a href=../../../features/enum_conversion/ class=md-nav__link> <span class=md-ellipsis> Specializing enum conversion </span> </a> </li> <li class=md-nav__item> <a href=../../../features/macros/ class=md-nav__link> <span class=md-ellipsis> Supported Macros </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_18> <div class="md-nav__link md-nav__container"> <a href=../../../features/types/ class="md-nav__link "> <span class=md-ellipsis> Types </span> </a> <label class="md-nav__link " for=__nav_2_18 id=__nav_2_18_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_18_label aria-expanded=false> <label class=md-nav__title for=__nav_2_18> <span class="md-nav__icon md-icon"></span> Types </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/types/number_handling/ class=md-nav__link> <span class=md-ellipsis> Number Handling </span> </a> </li> </ul> </nav> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_3> <div class="md-nav__link md-nav__container"> <a href=../../../integration/ class="md-nav__link "> <span class=md-ellipsis> Integration </span> </a> <label class="md-nav__link " for=__nav_3 id=__nav_3_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_3_label aria-expanded=false> <label class=md-nav__title for=__nav_3> <span class="md-nav__icon md-icon"></span> Integration </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../integration/migration_guide/ class=md-nav__link> <span class=md-ellipsis> Migration Guide </span> </a> </li> <li class=md-nav__item> <a href=../../../integration/cmake/ class=md-nav__link> <span class=md-ellipsis> CMake </span> </a> </li> <li class=md-nav__item> <a href=../../../integration/package_managers/ class=md-nav__link> <span class=md-ellipsis> Package Managers </span> </a> </li> <li class=md-nav__item> <a href=../../../integration/pkg-config/ class=md-nav__link> <span class=md-ellipsis> Pkg-config </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--active md-nav__item--section md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4 checked> <label class=md-nav__link for=__nav_4 id=__nav_4_label tabindex> <span class=md-ellipsis> API Documentation </span> <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_4_label aria-expanded=true> <label class=md-nav__title for=__nav_4> <span class="md-nav__icon md-icon"></span> API Documentation </label> <ul class=md-nav__list data-md-scrollfix> <li class="md-nav__item md-nav__item--active md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_1 checked> <div class="md-nav__link md-nav__container"> <a href=../ class="md-nav__link "> <span class=md-ellipsis> basic_json </span> </a> <label class="md-nav__link " for=__nav_4_1 id=__nav_4_1_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_1_label aria-expanded=true> <label class=md-nav__title for=__nav_4_1> <span class="md-nav__icon md-icon"></span> basic_json </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../basic_json/ class=md-nav__link> <span class=md-ellipsis> (Constructor) </span> </a> </li> <li class=md-nav__item> <a href=../~basic_json/ class=md-nav__link> <span class=md-ellipsis> (Destructor) </span> </a> </li> <li class=md-nav__item> <a href=../accept/ class=md-nav__link> <span class=md-ellipsis> accept </span> </a> </li> <li class=md-nav__item> <a href=../array/ class=md-nav__link> <span class=md-ellipsis> array </span> </a> </li> <li class=md-nav__item> <a href=../array_t/ class=md-nav__link> <span class=md-ellipsis> array_t </span> </a> </li> <li class=md-nav__item> <a href=../at/ class=md-nav__link> <span class=md-ellipsis> at </span> </a> </li> <li class=md-nav__item> <a href=../back/ class=md-nav__link> <span class=md-ellipsis> back </span> </a> </li> <li class=md-nav__item> <a href=../begin/ class=md-nav__link> <span class=md-ellipsis> begin </span> </a> </li> <li class=md-nav__item> <a href=../binary/ class=md-nav__link> <span class=md-ellipsis> binary </span> </a> </li> <li class=md-nav__item> <a href=../binary_t/ class=md-nav__link> <span class=md-ellipsis> binary_t </span> </a> </li> <li class=md-nav__item> <a href=../boolean_t/ class=md-nav__link> <span class=md-ellipsis> boolean_t </span> </a> </li> <li class=md-nav__item> <a href=../cbegin/ class=md-nav__link> <span class=md-ellipsis> cbegin </span> </a> </li> <li class=md-nav__item> <a href=../cbor_tag_handler_t/ class=md-nav__link> <span class=md-ellipsis> cbor_tag_handler_t </span> </a> </li> <li class=md-nav__item> <a href=../cend/ class=md-nav__link> <span class=md-ellipsis> cend </span> </a> </li> <li class=md-nav__item> <a href=../clear/ class=md-nav__link> <span class=md-ellipsis> clear </span> </a> </li> <li class=md-nav__item> <a href=../contains/ class=md-nav__link> <span class=md-ellipsis> contains </span> </a> </li> <li class=md-nav__item> <a href=../count/ class=md-nav__link> <span class=md-ellipsis> count </span> </a> </li> <li class=md-nav__item> <a href=../crbegin/ class=md-nav__link> <span class=md-ellipsis> crbegin </span> </a> </li> <li class=md-nav__item> <a href=../crend/ class=md-nav__link> <span class=md-ellipsis> crend </span> </a> </li> <li class=md-nav__item> <a href=../default_object_comparator_t/ class=md-nav__link> <span class=md-ellipsis> default_object_comparator_t </span> </a> </li> <li class=md-nav__item> <a href=../diff/ class=md-nav__link> <span class=md-ellipsis> diff </span> </a> </li> <li class=md-nav__item> <a href=../dump/ class=md-nav__link> <span class=md-ellipsis> dump </span> </a> </li> <li class=md-nav__item> <a href=../emplace/ class=md-nav__link> <span class=md-ellipsis> emplace </span> </a> </li> <li class=md-nav__item> <a href=../emplace_back/ class=md-nav__link> <span class=md-ellipsis> emplace_back </span> </a> </li> <li class=md-nav__item> <a href=../empty/ class=md-nav__link> <span class=md-ellipsis> empty </span> </a> </li> <li class=md-nav__item> <a href=../end/ class=md-nav__link> <span class=md-ellipsis> end </span> </a> </li> <li class=md-nav__item> <a href=../end_pos/ class=md-nav__link> <span class=md-ellipsis> end_pos </span> </a> </li> <li class=md-nav__item> <a href=../erase/ class=md-nav__link> <span class=md-ellipsis> erase </span> </a> </li> <li class=md-nav__item> <a href=../error_handler_t/ class=md-nav__link> <span class=md-ellipsis> error_handler_t </span> </a> </li> <li class=md-nav__item> <a href=../exception/ class=md-nav__link> <span class=md-ellipsis> exception </span> </a> </li> <li class=md-nav__item> <a href=../find/ class=md-nav__link> <span class=md-ellipsis> find </span> </a> </li> <li class=md-nav__item> <a href=../flatten/ class=md-nav__link> <span class=md-ellipsis> flatten </span> </a> </li> <li class=md-nav__item> <a href=../from_bjdata/ class=md-nav__link> <span class=md-ellipsis> from_bjdata </span> </a> </li> <li class=md-nav__item> <a href=../from_bson/ class=md-nav__link> <span class=md-ellipsis> from_bson </span> </a> </li> <li class=md-nav__item> <a href=../from_cbor/ class=md-nav__link> <span class=md-ellipsis> from_cbor </span> </a> </li> <li class=md-nav__item> <a href=../from_msgpack/ class=md-nav__link> <span class=md-ellipsis> from_msgpack </span> </a> </li> <li class=md-nav__item> <a href=../from_ubjson/ class=md-nav__link> <span class=md-ellipsis> from_ubjson </span> </a> </li> <li class=md-nav__item> <a href=../front/ class=md-nav__link> <span class=md-ellipsis> front </span> </a> </li> <li class=md-nav__item> <a href=../get/ class=md-nav__link> <span class=md-ellipsis> get </span> </a> </li> <li class=md-nav__item> <a href=../get_allocator/ class=md-nav__link> <span class=md-ellipsis> get_allocator </span> </a> </li> <li class=md-nav__item> <a href=../get_binary/ class=md-nav__link> <span class=md-ellipsis> get_binary </span> </a> </li> <li class=md-nav__item> <a href=../get_ptr/ class=md-nav__link> <span class=md-ellipsis> get_ptr </span> </a> </li> <li class=md-nav__item> <a href=../get_ref/ class=md-nav__link> <span class=md-ellipsis> get_ref </span> </a> </li> <li class="md-nav__item md-nav__item--active"> <input class="md-nav__toggle md-toggle" type=checkbox id=__toc> <label class="md-nav__link md-nav__link--active" for=__toc> <span class=md-ellipsis> get_to </span> <span class="md-nav__icon md-icon"></span> </label> <a href=./ class="md-nav__link md-nav__link--active"> <span class=md-ellipsis> get_to </span> </a> <nav class="md-nav md-nav--secondary" aria-label="Table of contents"> <label class=md-nav__title for=__toc> <span class="md-nav__icon md-icon"></span> Table of contents </label> <ul class=md-nav__list data-md-component=toc data-md-scrollfix> <li class=md-nav__item> <a href=#template-parameters class=md-nav__link> <span class=md-ellipsis> Template parameters </span> </a> </li> <li class=md-nav__item> <a href=#return-value class=md-nav__link> <span class=md-ellipsis> Return value </span> </a> </li> <li class=md-nav__item> <a href=#exceptions class=md-nav__link> <span class=md-ellipsis> Exceptions </span> </a> </li> <li class=md-nav__item> <a href=#complexity class=md-nav__link> <span class=md-ellipsis> Complexity </span> </a> </li> <li class=md-nav__item> <a href=#examples class=md-nav__link> <span class=md-ellipsis> Examples </span> </a> </li> <li class=md-nav__item> <a href=#see-also class=md-nav__link> <span class=md-ellipsis> See also </span> </a> </li> <li class=md-nav__item> <a href=#version-history class=md-nav__link> <span class=md-ellipsis> Version history </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../std_hash/ class=md-nav__link> <span class=md-ellipsis> std::hash&lt;basic_json&gt; </span> </a> </li> <li class=md-nav__item> <a href=../input_format_t/ class=md-nav__link> <span class=md-ellipsis> input_format_t </span> </a> </li> <li class=md-nav__item> <a href=../insert/ class=md-nav__link> <span class=md-ellipsis> insert </span> </a> </li> <li class=md-nav__item> <a href=../invalid_iterator/ class=md-nav__link> <span class=md-ellipsis> invalid_iterator </span> </a> </li> <li class=md-nav__item> <a href=../is_array/ class=md-nav__link> <span class=md-ellipsis> is_array </span> </a> </li> <li class=md-nav__item> <a href=../is_binary/ class=md-nav__link> <span class=md-ellipsis> is_binary </span> </a> </li> <li class=md-nav__item> <a href=../is_boolean/ class=md-nav__link> <span class=md-ellipsis> is_boolean </span> </a> </li> <li class=md-nav__item> <a href=../is_discarded/ class=md-nav__link> <span class=md-ellipsis> is_discarded </span> </a> </li> <li class=md-nav__item> <a href=../is_null/ class=md-nav__link> <span class=md-ellipsis> is_null </span> </a> </li> <li class=md-nav__item> <a href=../is_number/ class=md-nav__link> <span class=md-ellipsis> is_number </span> </a> </li> <li class=md-nav__item> <a href=../is_number_float/ class=md-nav__link> <span class=md-ellipsis> is_number_float </span> </a> </li> <li class=md-nav__item> <a href=../is_number_integer/ class=md-nav__link> <span class=md-ellipsis> is_number_integer </span> </a> </li> <li class=md-nav__item> <a href=../is_number_unsigned/ class=md-nav__link> <span class=md-ellipsis> is_number_unsigned </span> </a> </li> <li class=md-nav__item> <a href=../is_object/ class=md-nav__link> <span class=md-ellipsis> is_object </span> </a> </li> <li class=md-nav__item> <a href=../is_primitive/ class=md-nav__link> <span class=md-ellipsis> is_primitive </span> </a> </li> <li class=md-nav__item> <a href=../is_string/ class=md-nav__link> <span class=md-ellipsis> is_string </span> </a> </li> <li class=md-nav__item> <a href=../is_structured/ class=md-nav__link> <span class=md-ellipsis> is_structured </span> </a> </li> <li class=md-nav__item> <a href=../items/ class=md-nav__link> <span class=md-ellipsis> items </span> </a> </li> <li class=md-nav__item> <a href=../json_base_class_t/ class=md-nav__link> <span class=md-ellipsis> json_base_class_t </span> </a> </li> <li class=md-nav__item> <a href=../json_serializer/ class=md-nav__link> <span class=md-ellipsis> json_serializer </span> </a> </li> <li class=md-nav__item> <a href=../max_size/ class=md-nav__link> <span class=md-ellipsis> max_size </span> </a> </li> <li class=md-nav__item> <a href=../meta/ class=md-nav__link> <span class=md-ellipsis> meta </span> </a> </li> <li class=md-nav__item> <a href=../merge_patch/ class=md-nav__link> <span class=md-ellipsis> merge_patch </span> </a> </li> <li class=md-nav__item> <a href=../number_float_t/ class=md-nav__link> <span class=md-ellipsis> number_float_t </span> </a> </li> <li class=md-nav__item> <a href=../number_integer_t/ class=md-nav__link> <span class=md-ellipsis> number_integer_t </span> </a> </li> <li class=md-nav__item> <a href=../number_unsigned_t/ class=md-nav__link> <span class=md-ellipsis> number_unsigned_t </span> </a> </li> <li class=md-nav__item> <a href=../object/ class=md-nav__link> <span class=md-ellipsis> object </span> </a> </li> <li class=md-nav__item> <a href=../object_comparator_t/ class=md-nav__link> <span class=md-ellipsis> object_comparator_t </span> </a> </li> <li class=md-nav__item> <a href=../object_t/ class=md-nav__link> <span class=md-ellipsis> object_t </span> </a> </li> <li class=md-nav__item> <a href=../operator_ValueType/ class=md-nav__link> <span class=md-ellipsis> operator ValueType </span> </a> </li> <li class=md-nav__item> <a href=../operator_value_t/ class=md-nav__link> <span class=md-ellipsis> operator value_t </span> </a> </li> <li class=md-nav__item> <a href=../operator%5B%5D/ class=md-nav__link> <span class=md-ellipsis> operator[] </span> </a> </li> <li class=md-nav__item> <a href=../operator%3D/ class=md-nav__link> <span class=md-ellipsis> operator= </span> </a> </li> <li class=md-nav__item> <a href=../operator%2B%3D/ class=md-nav__link> <span class=md-ellipsis> operator+= </span> </a> </li> <li class=md-nav__item> <a href=../operator_eq/ class=md-nav__link> <span class=md-ellipsis> operator== </span> </a> </li> <li class=md-nav__item> <a href=../operator_ne/ class=md-nav__link> <span class=md-ellipsis> operator!= </span> </a> </li> <li class=md-nav__item> <a href=../operator_lt/ class=md-nav__link> <span class=md-ellipsis> operator< </span> </a> </li> <li class=md-nav__item> <a href=../operator_gt/ class=md-nav__link> <span class=md-ellipsis> operator> </span> </a> </li> <li class=md-nav__item> <a href=../operator_le/ class=md-nav__link> <span class=md-ellipsis> operator<= </span> </a> </li> <li class=md-nav__item> <a href=../operator_ge/ class=md-nav__link> <span class=md-ellipsis> operator>= </span> </a> </li> <li class=md-nav__item> <a href=../operator_spaceship/ class=md-nav__link> <span class=md-ellipsis> operator<=> </span> </a> </li> <li class=md-nav__item> <a href=../out_of_range/ class=md-nav__link> <span class=md-ellipsis> out_of_range </span> </a> </li> <li class=md-nav__item> <a href=../other_error/ class=md-nav__link> <span class=md-ellipsis> other_error </span> </a> </li> <li class=md-nav__item> <a href=../parse/ class=md-nav__link> <span class=md-ellipsis> parse </span> </a> </li> <li class=md-nav__item> <a href=../parse_error/ class=md-nav__link> <span class=md-ellipsis> parse_error </span> </a> </li> <li class=md-nav__item> <a href=../parse_event_t/ class=md-nav__link> <span class=md-ellipsis> parse_event_t </span> </a> </li> <li class=md-nav__item> <a href=../parser_callback_t/ class=md-nav__link> <span class=md-ellipsis> parser_callback_t </span> </a> </li> <li class=md-nav__item> <a href=../patch/ class=md-nav__link> <span class=md-ellipsis> patch </span> </a> </li> <li class=md-nav__item> <a href=../patch_inplace/ class=md-nav__link> <span class=md-ellipsis> patch_inplace </span> </a> </li> <li class=md-nav__item> <a href=../push_back/ class=md-nav__link> <span class=md-ellipsis> push_back </span> </a> </li> <li class=md-nav__item> <a href=../rbegin/ class=md-nav__link> <span class=md-ellipsis> rbegin </span> </a> </li> <li class=md-nav__item> <a href=../rend/ class=md-nav__link> <span class=md-ellipsis> rend </span> </a> </li> <li class=md-nav__item> <a href=../sax_parse/ class=md-nav__link> <span class=md-ellipsis> sax_parse </span> </a> </li> <li class=md-nav__item> <a href=../size/ class=md-nav__link> <span class=md-ellipsis> size </span> </a> </li> <li class=md-nav__item> <a href=../start_pos/ class=md-nav__link> <span class=md-ellipsis> start_pos </span> </a> </li> <li class=md-nav__item> <a href=../string_t/ class=md-nav__link> <span class=md-ellipsis> string_t </span> </a> </li> <li class=md-nav__item> <a href=../swap/ class=md-nav__link> <span class=md-ellipsis> swap </span> </a> </li> <li class=md-nav__item> <a href=../std_swap/ class=md-nav__link> <span class=md-ellipsis> std::swap&lt;basic_json&gt; </span> </a> </li> <li class=md-nav__item> <a href=../to_bjdata/ class=md-nav__link> <span class=md-ellipsis> to_bjdata </span> </a> </li> <li class=md-nav__item> <a href=../to_bson/ class=md-nav__link> <span class=md-ellipsis> to_bson </span> </a> </li> <li class=md-nav__item> <a href=../to_cbor/ class=md-nav__link> <span class=md-ellipsis> to_cbor </span> </a> </li> <li class=md-nav__item> <a href=../to_msgpack/ class=md-nav__link> <span class=md-ellipsis> to_msgpack </span> </a> </li> <li class=md-nav__item> <a href=../to_string/ class=md-nav__link> <span class=md-ellipsis> to_string </span> </a> </li> <li class=md-nav__item> <a href=../to_ubjson/ class=md-nav__link> <span class=md-ellipsis> to_ubjson </span> </a> </li> <li class=md-nav__item> <a href=../type/ class=md-nav__link> <span class=md-ellipsis> type </span> </a> </li> <li class=md-nav__item> <a href=../type_error/ class=md-nav__link> <span class=md-ellipsis> type_error </span> </a> </li> <li class=md-nav__item> <a href=../type_name/ class=md-nav__link> <span class=md-ellipsis> type_name </span> </a> </li> <li class=md-nav__item> <a href=../unflatten/ class=md-nav__link> <span class=md-ellipsis> unflatten </span> </a> </li> <li class=md-nav__item> <a href=../update/ class=md-nav__link> <span class=md-ellipsis> update </span> </a> </li> <li class=md-nav__item> <a href=../value/ class=md-nav__link> <span class=md-ellipsis> value </span> </a> </li> <li class=md-nav__item> <a href=../value_t/ class=md-nav__link> <span class=md-ellipsis> value_t </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_2> <div class="md-nav__link md-nav__container"> <a href=../../byte_container_with_subtype/ class="md-nav__link "> <span class=md-ellipsis> byte_container_with_subtype </span> </a> <label class="md-nav__link " for=__nav_4_2 id=__nav_4_2_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_2_label aria-expanded=false> <label class=md-nav__title for=__nav_4_2> <span class="md-nav__icon md-icon"></span> byte_container_with_subtype </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../byte_container_with_subtype/byte_container_with_subtype/ class=md-nav__link> <span class=md-ellipsis> (constructor) </span> </a> </li> <li class=md-nav__item> <a href=../../byte_container_with_subtype/clear_subtype/ class=md-nav__link> <span class=md-ellipsis> clear_subtype </span> </a> </li> <li class=md-nav__item> <a href=../../byte_container_with_subtype/has_subtype/ class=md-nav__link> <span class=md-ellipsis> has_subtype </span> </a> </li> <li class=md-nav__item> <a href=../../byte_container_with_subtype/set_subtype/ class=md-nav__link> <span class=md-ellipsis> set_subtype </span> </a> </li> <li class=md-nav__item> <a href=../../byte_container_with_subtype/subtype/ class=md-nav__link> <span class=md-ellipsis> subtype </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_3> <div class="md-nav__link md-nav__container"> <a href=../../adl_serializer/ class="md-nav__link "> <span class=md-ellipsis> adl_serializer </span> </a> <label class="md-nav__link " for=__nav_4_3 id=__nav_4_3_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_3_label aria-expanded=false> <label class=md-nav__title for=__nav_4_3> <span class="md-nav__icon md-icon"></span> adl_serializer </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../adl_serializer/from_json/ class=md-nav__link> <span class=md-ellipsis> from_json </span> </a> </li> <li class=md-nav__item> <a href=../../adl_serializer/to_json/ class=md-nav__link> <span class=md-ellipsis> to_json </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../json/ class=md-nav__link> <span class=md-ellipsis> json </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_5> <div class="md-nav__link md-nav__container"> <a href=../../json_pointer/ class="md-nav__link "> <span class=md-ellipsis> json_pointer </span> </a> <label class="md-nav__link " for=__nav_4_5 id=__nav_4_5_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_5_label aria-expanded=false> <label class=md-nav__title for=__nav_4_5> <span class="md-nav__icon md-icon"></span> json_pointer </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../json_pointer/json_pointer/ class=md-nav__link> <span class=md-ellipsis> (Constructor) </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/back/ class=md-nav__link> <span class=md-ellipsis> back </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/empty/ class=md-nav__link> <span class=md-ellipsis> empty </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/front/ class=md-nav__link> <span class=md-ellipsis> front </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_string_t/ class=md-nav__link> <span class=md-ellipsis> operator string_t </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_eq/ class=md-nav__link> <span class=md-ellipsis> operator== </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_ne/ class=md-nav__link> <span class=md-ellipsis> operator!= </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_slash/ class=md-nav__link> <span class=md-ellipsis> operator/ </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_slasheq/ class=md-nav__link> <span class=md-ellipsis> operator/= </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/parent_pointer/ class=md-nav__link> <span class=md-ellipsis> parent_pointer </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/pop_back/ class=md-nav__link> <span class=md-ellipsis> pop_back </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/pop_front/ class=md-nav__link> <span class=md-ellipsis> pop_front </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/push_back/ class=md-nav__link> <span class=md-ellipsis> push_back </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/push_front/ class=md-nav__link> <span class=md-ellipsis> push_front </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/string_t/ class=md-nav__link> <span class=md-ellipsis> string_t </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/to_string/ class=md-nav__link> <span class=md-ellipsis> to_string </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_6> <div class="md-nav__link md-nav__container"> <a href=../../json_sax/ class="md-nav__link "> <span class=md-ellipsis> json_sax </span> </a> <label class="md-nav__link " for=__nav_4_6 id=__nav_4_6_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_6_label aria-expanded=false> <label class=md-nav__title for=__nav_4_6> <span class="md-nav__icon md-icon"></span> json_sax </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../json_sax/binary/ class=md-nav__link> <span class=md-ellipsis> binary </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/boolean/ class=md-nav__link> <span class=md-ellipsis> boolean </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/end_array/ class=md-nav__link> <span class=md-ellipsis> end_array </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/end_object/ class=md-nav__link> <span class=md-ellipsis> end_object </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/key/ class=md-nav__link> <span class=md-ellipsis> key </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/null/ class=md-nav__link> <span class=md-ellipsis> null </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/number_float/ class=md-nav__link> <span class=md-ellipsis> number_float </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/number_integer/ class=md-nav__link> <span class=md-ellipsis> number_integer </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/number_unsigned/ class=md-nav__link> <span class=md-ellipsis> number_unsigned </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/parse_error/ class=md-nav__link> <span class=md-ellipsis> parse_error </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/start_array/ class=md-nav__link> <span class=md-ellipsis> start_array </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/start_object/ class=md-nav__link> <span class=md-ellipsis> start_object </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/string/ class=md-nav__link> <span class=md-ellipsis> string </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../operator_ltlt/ class=md-nav__link> <span class=md-ellipsis> operator<<(basic_json), operator<<(json_pointer) </span> </a> </li> <li class=md-nav__item> <a href=../../operator_gtgt/ class=md-nav__link> <span class=md-ellipsis> operator>>(basic_json) </span> </a> </li> <li class=md-nav__item> <a href=../../operator_literal_json/ class=md-nav__link> <span class=md-ellipsis> operator""_json </span> </a> </li> <li class=md-nav__item> <a href=../../operator_literal_json_pointer/ class=md-nav__link> <span class=md-ellipsis> operator""_json_pointer </span> </a> </li> <li class=md-nav__item> <a href=../../ordered_json/ class=md-nav__link> <span class=md-ellipsis> ordered_json </span> </a> </li> <li class=md-nav__item> <a href=../../ordered_map/ class=md-nav__link> <span class=md-ellipsis> ordered_map </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_13> <div class="md-nav__link md-nav__container"> <a href=../../macros/ class="md-nav__link "> <span class=md-ellipsis> macros </span> </a> <label class="md-nav__link " for=__nav_4_13 id=__nav_4_13_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_13_label aria-expanded=false> <label class=md-nav__title for=__nav_4_13> <span class="md-nav__icon md-icon"></span> macros </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../macros/json_assert/ class=md-nav__link> <span class=md-ellipsis> JSON_ASSERT </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_brace_init_copy_semantics/ class=md-nav__link> <span class=md-ellipsis> JSON_BRACE_INIT_COPY_SEMANTICS </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_throw_user/ class=md-nav__link> <span class=md-ellipsis> JSON_CATCH_USER, JSON_THROW_USER, JSON_TRY_USER </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_diagnostics/ class=md-nav__link> <span class=md-ellipsis> JSON_DIAGNOSTICS </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_diagnostic_positions/ class=md-nav__link> <span class=md-ellipsis> JSON_DIAGNOSTIC_POSITIONS </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_disable_enum_serialization/ class=md-nav__link> <span class=md-ellipsis> JSON_DISABLE_ENUM_SERIALIZATION </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_has_cpp_11/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_CPP_11, JSON_HAS_CPP_14, JSON_HAS_CPP_17, JSON_HAS_CPP_20 </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_has_filesystem/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_EXPERIMENTAL_FILESYSTEM, JSON_HAS_FILESYSTEM </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_has_ranges/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_RANGES </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_has_static_rtti/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_STATIC_RTTI </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_has_three_way_comparison/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_THREE_WAY_COMPARISON </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_noexception/ class=md-nav__link> <span class=md-ellipsis> JSON_NOEXCEPTION </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_no_io/ class=md-nav__link> <span class=md-ellipsis> JSON_NO_IO </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_skip_library_version_check/ class=md-nav__link> <span class=md-ellipsis> JSON_SKIP_LIBRARY_VERSION_CHECK </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_skip_unsupported_compiler_check/ class=md-nav__link> <span class=md-ellipsis> JSON_SKIP_UNSUPPORTED_COMPILER_CHECK </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_use_global_udls/ class=md-nav__link> <span class=md-ellipsis> JSON_USE_GLOBAL_UDLS </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_use_implicit_conversions/ class=md-nav__link> <span class=md-ellipsis> JSON_USE_IMPLICIT_CONVERSIONS </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_use_legacy_discarded_value_comparison/ class=md-nav__link> <span class=md-ellipsis> JSON_USE_LEGACY_DISCARDED_VALUE_COMPARISON </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_define_derived_type/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_ONLY_SERIALIZE, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_define_type_intrusive/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_TYPE_INTRUSIVE, NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_TYPE_INTRUSIVE_ONLY_SERIALIZE </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_define_type_non_intrusive/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_define_type_with_names/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_TYPE_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_namespace/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_NAMESPACE </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_namespace_begin/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_NAMESPACE_BEGIN, NLOHMANN_JSON_NAMESPACE_END </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_namespace_no_version/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_NAMESPACE_NO_VERSION </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_serialize_enum/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_SERIALIZE_ENUM </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_serialize_enum_strict/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_SERIALIZE_ENUM_STRICT </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_version_major/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_VERSION_MAJOR, NLOHMANN_JSON_VERSION_MINOR, NLOHMANN_JSON_VERSION_PATCH </span> </a> </li> </ul> </nav> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_5> <div class="md-nav__link md-nav__container"> <a href=../../../community/ class="md-nav__link "> <span class=md-ellipsis> Community </span> </a> <label class="md-nav__link " for=__nav_5 id=__nav_5_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_5_label aria-expanded=false> <label class=md-nav__title for=__nav_5> <span class="md-nav__icon md-icon"></span> Community </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../community/code_of_conduct/ class=md-nav__link> <span class=md-ellipsis> Code of Conduct </span> </a> </li> <li class=md-nav__item> <a href=../../../community/contribution_guidelines/ class=md-nav__link> <span class=md-ellipsis> Contribution Guidelines </span> </a> </li> <li class=md-nav__item> <a href=../../../community/quality_assurance/ class=md-nav__link> <span class=md-ellipsis> Quality assurance </span> </a> </li> <li class=md-nav__item> <a href=../../../community/governance/ class=md-nav__link> <span class=md-ellipsis> Governance </span> </a> </li> <li class=md-nav__item> <a href=../../../community/security_policy/ class=md-nav__link> <span class=md-ellipsis> Security Policy </span> </a> </li> </ul> </nav> </li> </ul> </nav> </div> </div> </div> <div class="md-sidebar md-sidebar--secondary" data-md-component=sidebar data-md-type=toc> <div class=md-sidebar__scrollwrap> <div class=md-sidebar__inner> <nav class="md-nav md-nav--secondary" aria-label="Table of contents"> <label class=md-nav__title for=__toc> <span class="md-nav__icon md-icon"></span> Table of contents </label> <ul class=md-nav__list data-md-component=toc data-md-scrollfix> <li class=md-nav__item> <a href=#template-parameters class=md-nav__link> <span class=md-ellipsis> Template parameters </span> </a> </li> <li class=md-nav__item> <a href=#return-value class=md-nav__link> <span class=md-ellipsis> Return value </span> </a> </li> <li class=md-nav__item> <a href=#exceptions class=md-nav__link> <span class=md-ellipsis> Exceptions </span> </a> </li> <li class=md-nav__item> <a href=#complexity class=md-nav__link> <span class=md-ellipsis> Complexity </span> </a> </li> <li class=md-nav__item> <a href=#examples class=md-nav__link> <span class=md-ellipsis> Examples </span> </a> </li> <li class=md-nav__item> <a href=#see-also class=md-nav__link> <span class=md-ellipsis> See also </span> </a> </li> <li class=md-nav__item> <a href=#version-history class=md-nav__link> <span class=md-ellipsis> Version history </span> </a> </li> </ul> </nav> </div> </div> </div> <div class=md-content data-md-component=content> <article class="md-content__inner md-typeset"> <a href="https://github.com/nlohmann/json/edit/develop/docs/mkdocs/docs/api/basic_json/get_to.md" title="Edit this page" class="md-content__button md-icon" rel="edit"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M10 20H6V4h7v5h5v3.1l2-2V8l-6-6H6c-1.1 0-2 .9-2 2v16c0 1.1.9 2 2 2h4zm10.2-7c.1 0 .3.1.4.2l1.3 1.3c.2.2.2.6 0 .8l-1 1-2.1-2.1 1-1c.1-.1.2-.2.4-.2m0 3.9L14.1 23H12v-2.1l6.1-6.1z"/></svg> </a> <a href="https://github.com/nlohmann/json/raw/develop/docs/mkdocs/docs/api/basic_json/get_to.md" title="View source of this page" class="md-content__button md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M17 18c.56 0 1 .44 1 1s-.44 1-1 1-1-.44-1-1 .44-1 1-1m0-3c-2.73 0-5.06 1.66-6 4 .94 2.34 3.27 4 6 4s5.06-1.66 6-4c-.94-2.34-3.27-4-6-4m0 6.5a2.5 2.5 0 0 1-2.5-2.5 2.5 2.5 0 0 1 2.5-2.5 2.5 2.5 0 0 1 2.5 2.5 2.5 2.5 0 0 1-2.5 2.5M9.27 20H6V4h7v5h5v4.07c.7.08 1.36.25 2 .49V8l-6-6H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h4.5a8.2 8.2 0 0 1-1.23-2"/></svg> </a> <h1 id=nlohmannbasic_jsonget_to><small>nlohmann::basic_json::</small>get_to<a class=headerlink href=#nlohmannbasic_jsonget_to title="Permanent link">&para;</a></h1> <div class=highlight><pre><span></span><code><span class=k>template</span><span class=o>&lt;</span><span class=k>typename</span><span class=w> </span><span class=nc>ValueType</span><span class=o>&gt;</span>
 <span class=n>ValueType</span><span class=o>&amp;</span><span class=w> </span><span class=n>get_to</span><span class=p>(</span><span class=n>ValueType</span><span class=o>&amp;</span><span class=w> </span><span class=n>v</span><span class=p>)</span><span class=w> </span><span class=k>const</span><span class=w> </span><span class=k>noexcept</span><span class=p>(</span>
 <span class=w>    </span><span class=k>noexcept</span><span class=p>(</span><span class=n>JSONSerializer</span><span class=o>&lt;</span><span class=n>ValueType</span><span class=o>&gt;::</span><span class=n>from_json</span><span class=p>(</span>
 <span class=w>        </span><span class=n>std</span><span class=o>::</span><span class=n>declval</span><span class=o>&lt;</span><span class=k>const</span><span class=w> </span><span class=n>basic_json_t</span><span class=o>&amp;&gt;</span><span class=p>(),</span><span class=w> </span><span class=n>v</span><span class=p>)));</span>
 </code></pre></div> <p>Explicit type conversion between the <abbr title="JavaScript Object Notation">JSON</abbr> value and a compatible value. The value is filled into the input parameter by calling the <code>json_serializer&lt;ValueType&gt;</code> <code>from_json()</code> method.</p> <p>The function is equivalent to executing <div class=highlight><pre><span></span><code><span class=n>ValueType</span><span class=w> </span><span class=n>v</span><span class=p>;</span>
 <span class=n>JSONSerializer</span><span class=o>&lt;</span><span class=n>ValueType</span><span class=o>&gt;::</span><span class=n>from_json</span><span class=p>(</span><span class=o>*</span><span class=k>this</span><span class=p>,</span><span class=w> </span><span class=n>v</span><span class=p>);</span>
-</code></pre></div></p> <p>This overload is chosen if:</p> <ul> <li><code>ValueType</code> is not <code>basic_json</code>,</li> <li><code>json_serializer&lt;ValueType&gt;</code> has a <code>from_json()</code> method of the form <code>void from_json(const basic_json&amp;, ValueType&amp;)</code></li> </ul> <h2 id=template-parameters>Template parameters<a class=headerlink href=#template-parameters title="Permanent link">&para;</a></h2> <dl> <dt><code>ValueType</code></dt> <dd>the value type to return</dd> </dl> <h2 id=return-value>Return value<a class=headerlink href=#return-value title="Permanent link">&para;</a></h2> <p>the input parameter, allowing chaining calls</p> <h2 id=exceptions>Exceptions<a class=headerlink href=#exceptions title="Permanent link">&para;</a></h2> <p>Depends on what <code>json_serializer&lt;ValueType&gt;</code> <code>from_json()</code> method throws</p> <h2 id=examples>Examples<a class=headerlink href=#examples title="Permanent link">&para;</a></h2> <details class=example> <summary>Example</summary> <p>The example below shows several conversions from <abbr title="JavaScript Object Notation">JSON</abbr> values to other types. There a few things to note: (1) Floating-point numbers can be converted to integers, (2) A <abbr title="JavaScript Object Notation">JSON</abbr> array can be converted to a standard <code class=highlight><span class=n>std</span><span class=o>::</span><span class=n>vector</span><span class=o>&lt;</span><span class=kt>short</span><span class=o>&gt;</span></code>, (3) A <abbr title="JavaScript Object Notation">JSON</abbr> object can be converted to C++ associative containers such as <code>#cpp std::unordered_map&lt;std::string, json&gt;</code>.</p> <div class=highlight><pre><span></span><code><span class=cp>#include</span><span class=w> </span><span class=cpf>&lt;iostream&gt;</span>
+</code></pre></div></p> <p>This overload is chosen if:</p> <ul> <li><code>ValueType</code> is not <code>basic_json</code>,</li> <li><code>json_serializer&lt;ValueType&gt;</code> has a <code>from_json()</code> method of the form <code>void from_json(const basic_json&amp;, ValueType&amp;)</code></li> </ul> <h2 id=template-parameters>Template parameters<a class=headerlink href=#template-parameters title="Permanent link">&para;</a></h2> <dl> <dt><code>ValueType</code></dt> <dd>the value type to return</dd> </dl> <h2 id=return-value>Return value<a class=headerlink href=#return-value title="Permanent link">&para;</a></h2> <p>the input parameter, allowing chaining calls</p> <h2 id=exceptions>Exceptions<a class=headerlink href=#exceptions title="Permanent link">&para;</a></h2> <p>Depends on what <code>json_serializer&lt;ValueType&gt;</code> <code>from_json()</code> method throws</p> <h2 id=complexity>Complexity<a class=headerlink href=#complexity title="Permanent link">&para;</a></h2> <p>Depends on the <code>json_serializer&lt;ValueType&gt;::from_json()</code> implementation.</p> <h2 id=examples>Examples<a class=headerlink href=#examples title="Permanent link">&para;</a></h2> <details class=example> <summary>Example</summary> <p>The example below shows several conversions from <abbr title="JavaScript Object Notation">JSON</abbr> values to other types. There a few things to note: (1) Floating-point numbers can be converted to integers, (2) A <abbr title="JavaScript Object Notation">JSON</abbr> array can be converted to a standard <code class=highlight><span class=n>std</span><span class=o>::</span><span class=n>vector</span><span class=o>&lt;</span><span class=kt>short</span><span class=o>&gt;</span></code>, (3) A <abbr title="JavaScript Object Notation">JSON</abbr> object can be converted to C++ associative containers such as <code>#cpp std::unordered_map&lt;std::string, json&gt;</code>.</p> <div class=highlight><pre><span></span><code><span class=cp>#include</span><span class=w> </span><span class=cpf>&lt;iostream&gt;</span>
 <span class=cp>#include</span><span class=w> </span><span class=cpf>&lt;unordered_map&gt;</span>
 <span class=cp>#include</span><span class=w> </span><span class=cpf>&lt;nlohmann/json.hpp&gt;</span>
 
@@ -74,4 +74,4 @@
 <span class=kc>null</span><span class=p>:</span><span class=w> </span><span class=kc>null</span>
 <span class=err>boolea</span><span class=kc>n</span><span class=p>:</span><span class=w> </span><span class=kc>true</span>
 <span class=err>array</span><span class=p>:</span><span class=w> </span><span class=p>[</span><span class=mi>1</span><span class=p>,</span><span class=mi>2</span><span class=p>,</span><span class=mi>3</span><span class=p>,</span><span class=mi>4</span><span class=p>,</span><span class=mi>5</span><span class=p>]</span>
-</code></pre></div> </details> <h2 id=version-history>Version history<a class=headerlink href=#version-history title="Permanent link">&para;</a></h2> <ul> <li>Since version 3.3.0.</li> </ul> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 23, 2026 11:16:18 UTC">June 23, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
+</code></pre></div> </details> <h2 id=see-also>See also<a class=headerlink href=#see-also title="Permanent link">&para;</a></h2> <ul> <li><a href=../get/ >get</a> get a value (explicit conversion)</li> <li><a href=../get_ref/ >get_ref</a> get a reference to the stored value</li> <li><a href=../get_ptr/ >get_ptr</a> get a pointer to the stored value</li> </ul> <h2 id=version-history>Version history<a class=headerlink href=#version-history title="Permanent link">&para;</a></h2> <ul> <li>Since version 3.3.0.</li> </ul> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 29, 2026 20:15:18 UTC">June 29, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
diff --git a/api/basic_json/index.html b/api/basic_json/index.html
index 96403a7..c7c73ee 100644
--- a/api/basic_json/index.html
+++ b/api/basic_json/index.html
@@ -78,4 +78,4 @@
 <span class=w>    </span><span class=nt>&quot;pi&quot;</span><span class=p>:</span><span class=w> </span><span class=mf>3.141</span><span class=p>,</span>
 <span class=w>    </span><span class=nt>&quot;size&quot;</span><span class=p>:</span><span class=w> </span><span class=mi>8</span>
 <span class=p>}</span>
-</code></pre></div> </details> <h2 id=see-also>See also<a class=headerlink href=#see-also title="Permanent link">&para;</a></h2> <ul> <li><a href="https://tools.ietf.org/html/rfc8259"><abbr title="Request for Comments">RFC</abbr> 8259: The JavaScript Object Notation (<abbr title="JavaScript Object Notation">JSON</abbr>) Data Interchange Format</a></li> </ul> <h2 id=version-history>Version history<a class=headerlink href=#version-history title="Permanent link">&para;</a></h2> <ul> <li>Added in version 1.0.0.</li> </ul> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 23, 2026 11:16:18 UTC">June 23, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
+</code></pre></div> </details> <h2 id=see-also>See also<a class=headerlink href=#see-also title="Permanent link">&para;</a></h2> <ul> <li><a href="https://tools.ietf.org/html/rfc8259"><abbr title="Request for Comments">RFC</abbr> 8259: The JavaScript Object Notation (<abbr title="JavaScript Object Notation">JSON</abbr>) Data Interchange Format</a></li> </ul> <h2 id=version-history>Version history<a class=headerlink href=#version-history title="Permanent link">&para;</a></h2> <ul> <li>Added in version 1.0.0.</li> </ul> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 29, 2026 20:15:18 UTC">June 29, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
diff --git a/api/basic_json/input_format_t/index.html b/api/basic_json/input_format_t/index.html
index 395c2aa..aec8a7e 100644
--- a/api/basic_json/input_format_t/index.html
+++ b/api/basic_json/input_format_t/index.html
@@ -123,4 +123,4 @@
 </code></pre></div> <p>Output:</p> <div class=highlight><pre><span></span><code><span class=err>bi</span><span class=kc>nar</span><span class=err>y(val=</span><span class=p>[</span><span class=err>...</span><span class=p>]</span><span class=err>)</span>
 
 <span class=err>resul</span><span class=kc>t</span><span class=p>:</span><span class=w> </span><span class=kc>true</span>
-</code></pre></div> </details> <h2 id=version-history>Version history<a class=headerlink href=#version-history title="Permanent link">&para;</a></h2> <ul> <li>Added in version 3.2.0.</li> </ul> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 23, 2026 11:16:18 UTC">June 23, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
+</code></pre></div> </details> <h2 id=version-history>Version history<a class=headerlink href=#version-history title="Permanent link">&para;</a></h2> <ul> <li>Added in version 3.2.0.</li> </ul> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 29, 2026 20:15:18 UTC">June 29, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
diff --git a/api/basic_json/insert/index.html b/api/basic_json/insert/index.html
index 84e20de..f1f8006 100644
--- a/api/basic_json/insert/index.html
+++ b/api/basic_json/insert/index.html
@@ -1,4 +1,4 @@
-<!doctype html><html lang=en class=no-js> <head><meta charset=utf-8><meta name=viewport content="width=device-width,initial-scale=1"><meta name=author content="Niels Lohmann"><link href="https://json.nlohmann.me/api/basic_json/insert/" rel="canonical"><link href=../input_format_t/ rel=prev><link href=../invalid_iterator/ rel=next><link rel=icon href=../../../assets/images/favicon.png><meta name=generator content="mkdocs-1.6.1, mkdocs-material-9.7.6"><title>insert - JSON for Modern C++</title><link rel=stylesheet href=../../../assets/stylesheets/main.484c7ddc.min.css><link rel=stylesheet href=../../../assets/stylesheets/palette.ab4e12ef.min.css><link rel="stylesheet" href="../../../assets/external/fonts.googleapis.com/css.61a430c9.css"><style>:root{--md-text-font:"Roboto";--md-code-font:"JetBrains Mono"}</style><link rel=stylesheet href=../../../css/custom.css><script>__md_scope=new URL("../../..",location),__md_hash=e=>[...e].reduce(((e,_)=>(e<<5)-e+_.charCodeAt(0)),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script></head> <body dir=ltr data-md-color-scheme=default data-md-color-primary=indigo data-md-color-accent=indigo> <input class=md-toggle data-md-toggle=drawer type=checkbox id=__drawer autocomplete=off> <input class=md-toggle data-md-toggle=search type=checkbox id=__search autocomplete=off> <label class=md-overlay for=__drawer></label> <div data-md-component=skip> <a href=#nlohmannbasic_jsoninsert class=md-skip> Skip to content </a> </div> <div data-md-component=announce> </div> <header class=md-header data-md-component=header> <nav class="md-header__inner md-grid" aria-label=Header> <a href=../../.. title="JSON for Modern C++" class="md-header__button md-logo" aria-label="JSON for Modern C++" data-md-component=logo> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54"/></svg> </a> <label class="md-header__button md-icon" for=__drawer> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M3 6h18v2H3zm0 5h18v2H3zm0 5h18v2H3z"/></svg> </label> <div class=md-header__title data-md-component=header-title> <div class=md-header__ellipsis> <div class=md-header__topic> <span class=md-ellipsis> JSON for Modern C++ </span> </div> <div class=md-header__topic data-md-component=header-topic> <span class=md-ellipsis> insert </span> </div> </div> </div> <form class=md-header__option data-md-component=palette> <input class=md-option data-md-color-media="(prefers-color-scheme: light)" data-md-color-scheme=default data-md-color-primary=indigo data-md-color-accent=indigo aria-label="Switch to dark mode" type=radio name=__palette id=__palette_0> <label class="md-header__button md-icon" title="Switch to dark mode" for=__palette_1 hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a4 4 0 0 0-4 4 4 4 0 0 0 4 4 4 4 0 0 0 4-4 4 4 0 0 0-4-4m0 10a6 6 0 0 1-6-6 6 6 0 0 1 6-6 6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12z"/></svg> </label> <input class=md-option data-md-color-media="(prefers-color-scheme: dark)" data-md-color-scheme=slate data-md-color-primary=indigo data-md-color-accent=indigo aria-label="Switch to light mode" type=radio name=__palette id=__palette_1> <label class="md-header__button md-icon" title="Switch to light mode" for=__palette_0 hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 18c-.89 0-1.74-.2-2.5-.55C11.56 16.5 13 14.42 13 12s-1.44-4.5-3.5-5.45C10.26 6.2 11.11 6 12 6a6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12z"/></svg> </label> </form> <script>var palette=__md_get("__palette");if(palette&&palette.color){if("(prefers-color-scheme)"===palette.color.media){var media=matchMedia("(prefers-color-scheme: light)"),input=document.querySelector(media.matches?"[data-md-color-media='(prefers-color-scheme: light)']":"[data-md-color-media='(prefers-color-scheme: dark)']");palette.color.media=input.getAttribute("data-md-color-media"),palette.color.scheme=input.getAttribute("data-md-color-scheme"),palette.color.primary=input.getAttribute("data-md-color-primary"),palette.color.accent=input.getAttribute("data-md-color-accent")}for(var[key,value]of Object.entries(palette.color))document.body.setAttribute("data-md-color-"+key,value)}</script> <label class="md-header__button md-icon" for=__search> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg> </label> <div class=md-search data-md-component=search role=dialog> <label class=md-search__overlay for=__search></label> <div class=md-search__inner role=search> <form class=md-search__form name=search> <input type=text class=md-search__input name=query aria-label=Search placeholder=Search autocapitalize=off autocorrect=off autocomplete=off spellcheck=false data-md-component=search-query required> <label class="md-search__icon md-icon" for=__search> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11z"/></svg> </label> <nav class=md-search__options aria-label=Search> <button type=reset class="md-search__icon md-icon" title=Clear aria-label=Clear tabindex=-1> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z"/></svg> </button> </nav> </form> <div class=md-search__output> <div class=md-search__scrollwrap tabindex=0 data-md-scrollfix> <div class=md-search-result data-md-component=search-result> <div class=md-search-result__meta> Initializing search </div> <ol class=md-search-result__list role=presentation></ol> </div> </div> </div> </div> </div> <div class=md-header__source> <a href="https://github.com/nlohmann/json" title="Go to repository" class="md-source" data-md-component="source"> <div class="md-source__icon md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </div> <div class=md-source__repository> nlohmann/json </div> </a> </div> </nav> </header> <div class=md-container data-md-component=container> <nav class=md-tabs aria-label=Tabs data-md-component=tabs> <div class=md-grid> <ul class=md-tabs__list> <li class=md-tabs__item> <a href=../../.. class=md-tabs__link> Home </a> </li> <li class=md-tabs__item> <a href=../../../features/arbitrary_types/ class=md-tabs__link> Features </a> </li> <li class=md-tabs__item> <a href=../../../integration/ class=md-tabs__link> Integration </a> </li> <li class="md-tabs__item md-tabs__item--active"> <a href=../ class=md-tabs__link> API Documentation </a> </li> <li class=md-tabs__item> <a href=../../../community/ class=md-tabs__link> Community </a> </li> </ul> </div> </nav> <main class=md-main data-md-component=main> <div class="md-main__inner md-grid"> <div class="md-sidebar md-sidebar--primary" data-md-component=sidebar data-md-type=navigation> <div class=md-sidebar__scrollwrap> <div class=md-sidebar__inner> <nav class="md-nav md-nav--primary md-nav--lifted" aria-label=Navigation data-md-level=0> <label class=md-nav__title for=__drawer> <a href=../../.. title="JSON for Modern C++" class="md-nav__button md-logo" aria-label="JSON for Modern C++" data-md-component=logo> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54"/></svg> </a> JSON for Modern C++ </label> <div class=md-nav__source> <a href="https://github.com/nlohmann/json" title="Go to repository" class="md-source" data-md-component="source"> <div class="md-source__icon md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </div> <div class=md-source__repository> nlohmann/json </div> </a> </div> <ul class=md-nav__list data-md-scrollfix> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_1> <div class="md-nav__link md-nav__container"> <a href=../../.. class="md-nav__link "> <span class=md-ellipsis> Home </span> </a> <label class="md-nav__link " for=__nav_1 id=__nav_1_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_1_label aria-expanded=false> <label class=md-nav__title for=__nav_1> <span class="md-nav__icon md-icon"></span> Home </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../home/license/ class=md-nav__link> <span class=md-ellipsis> License </span> </a> </li> <li class=md-nav__item> <a href=../../../home/faq/ class=md-nav__link> <span class=md-ellipsis> FAQ </span> </a> </li> <li class=md-nav__item> <a href=../../../home/exceptions/ class=md-nav__link> <span class=md-ellipsis> Exceptions </span> </a> </li> <li class=md-nav__item> <a href=../../../home/releases/ class=md-nav__link> <span class=md-ellipsis> Releases </span> </a> </li> <li class=md-nav__item> <a href=../../../home/design_goals/ class=md-nav__link> <span class=md-ellipsis> Design goals </span> </a> </li> <li class=md-nav__item> <a href=../../../home/architecture/ class=md-nav__link> <span class=md-ellipsis> Architecture </span> </a> </li> <li class=md-nav__item> <a href=../../../home/customers/ class=md-nav__link> <span class=md-ellipsis> Customers </span> </a> </li> <li class=md-nav__item> <a href=../../../home/sponsors/ class=md-nav__link> <span class=md-ellipsis> Sponsors </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2> <label class=md-nav__link for=__nav_2 id=__nav_2_label tabindex=0> <span class=md-ellipsis> Features </span> <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_2_label aria-expanded=false> <label class=md-nav__title for=__nav_2> <span class="md-nav__icon md-icon"></span> Features </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/arbitrary_types/ class=md-nav__link> <span class=md-ellipsis> Arbitrary Type Conversions </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_2> <div class="md-nav__link md-nav__container"> <a href=../../../features/binary_formats/ class="md-nav__link "> <span class=md-ellipsis> Binary Formats </span> </a> <label class="md-nav__link " for=__nav_2_2 id=__nav_2_2_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_2_label aria-expanded=false> <label class=md-nav__title for=__nav_2_2> <span class="md-nav__icon md-icon"></span> Binary Formats </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/binary_formats/bjdata/ class=md-nav__link> <span class=md-ellipsis> BJData </span> </a> </li> <li class=md-nav__item> <a href=../../../features/binary_formats/bson/ class=md-nav__link> <span class=md-ellipsis> BSON </span> </a> </li> <li class=md-nav__item> <a href=../../../features/binary_formats/cbor/ class=md-nav__link> <span class=md-ellipsis> CBOR </span> </a> </li> <li class=md-nav__item> <a href=../../../features/binary_formats/messagepack/ class=md-nav__link> <span class=md-ellipsis> MessagePack </span> </a> </li> <li class=md-nav__item> <a href=../../../features/binary_formats/ubjson/ class=md-nav__link> <span class=md-ellipsis> UBJSON </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../../features/binary_values/ class=md-nav__link> <span class=md-ellipsis> Binary Values </span> </a> </li> <li class=md-nav__item> <a href=../../../features/comments/ class=md-nav__link> <span class=md-ellipsis> Comments </span> </a> </li> <li class=md-nav__item> <a href=../../../features/trailing_commas/ class=md-nav__link> <span class=md-ellipsis> Trailing Commas </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_6> <div class="md-nav__link md-nav__container"> <a href=../../../features/element_access/ class="md-nav__link "> <span class=md-ellipsis> Element Access </span> </a> <label class="md-nav__link " for=__nav_2_6 id=__nav_2_6_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_6_label aria-expanded=false> <label class=md-nav__title for=__nav_2_6> <span class="md-nav__icon md-icon"></span> Element Access </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/element_access/unchecked_access/ class=md-nav__link> <span class=md-ellipsis> Unchecked access: operator[] </span> </a> </li> <li class=md-nav__item> <a href=../../../features/element_access/checked_access/ class=md-nav__link> <span class=md-ellipsis> Checked access: at </span> </a> </li> <li class=md-nav__item> <a href=../../../features/element_access/default_value/ class=md-nav__link> <span class=md-ellipsis> Access with default value: value </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../../features/iterators/ class=md-nav__link> <span class=md-ellipsis> Iterators </span> </a> </li> <li class=md-nav__item> <a href=../../../features/json_pointer/ class=md-nav__link> <span class=md-ellipsis> JSON Pointer </span> </a> </li> <li class=md-nav__item> <a href=../../../features/json_patch/ class=md-nav__link> <span class=md-ellipsis> JSON Patch and Diff </span> </a> </li> <li class=md-nav__item> <a href=../../../features/merge_patch/ class=md-nav__link> <span class=md-ellipsis> JSON Merge Patch </span> </a> </li> <li class=md-nav__item> <a href=../../../features/modules/ class=md-nav__link> <span class=md-ellipsis> Modules </span> </a> </li> <li class=md-nav__item> <a href=../../../features/namespace/ class=md-nav__link> <span class=md-ellipsis> nlohmann Namespace </span> </a> </li> <li class=md-nav__item> <a href=../../../features/object_order/ class=md-nav__link> <span class=md-ellipsis> Object Order </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_14> <div class="md-nav__link md-nav__container"> <a href=../../../features/parsing/ class="md-nav__link "> <span class=md-ellipsis> Parsing </span> </a> <label class="md-nav__link " for=__nav_2_14 id=__nav_2_14_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_14_label aria-expanded=false> <label class=md-nav__title for=__nav_2_14> <span class="md-nav__icon md-icon"></span> Parsing </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/parsing/json_lines/ class=md-nav__link> <span class=md-ellipsis> JSON Lines </span> </a> </li> <li class=md-nav__item> <a href=../../../features/parsing/parse_exceptions/ class=md-nav__link> <span class=md-ellipsis> Parsing and Exceptions </span> </a> </li> <li class=md-nav__item> <a href=../../../features/parsing/parser_callbacks/ class=md-nav__link> <span class=md-ellipsis> Parser Callbacks </span> </a> </li> <li class=md-nav__item> <a href=../../../features/parsing/sax_interface/ class=md-nav__link> <span class=md-ellipsis> SAX Interface </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../../features/assertions/ class=md-nav__link> <span class=md-ellipsis> Runtime Assertions </span> </a> </li> <li class=md-nav__item> <a href=../../../features/enum_conversion/ class=md-nav__link> <span class=md-ellipsis> Specializing enum conversion </span> </a> </li> <li class=md-nav__item> <a href=../../../features/macros/ class=md-nav__link> <span class=md-ellipsis> Supported Macros </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_18> <div class="md-nav__link md-nav__container"> <a href=../../../features/types/ class="md-nav__link "> <span class=md-ellipsis> Types </span> </a> <label class="md-nav__link " for=__nav_2_18 id=__nav_2_18_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_18_label aria-expanded=false> <label class=md-nav__title for=__nav_2_18> <span class="md-nav__icon md-icon"></span> Types </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/types/number_handling/ class=md-nav__link> <span class=md-ellipsis> Number Handling </span> </a> </li> </ul> </nav> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_3> <div class="md-nav__link md-nav__container"> <a href=../../../integration/ class="md-nav__link "> <span class=md-ellipsis> Integration </span> </a> <label class="md-nav__link " for=__nav_3 id=__nav_3_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_3_label aria-expanded=false> <label class=md-nav__title for=__nav_3> <span class="md-nav__icon md-icon"></span> Integration </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../integration/migration_guide/ class=md-nav__link> <span class=md-ellipsis> Migration Guide </span> </a> </li> <li class=md-nav__item> <a href=../../../integration/cmake/ class=md-nav__link> <span class=md-ellipsis> CMake </span> </a> </li> <li class=md-nav__item> <a href=../../../integration/package_managers/ class=md-nav__link> <span class=md-ellipsis> Package Managers </span> </a> </li> <li class=md-nav__item> <a href=../../../integration/pkg-config/ class=md-nav__link> <span class=md-ellipsis> Pkg-config </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--active md-nav__item--section md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4 checked> <label class=md-nav__link for=__nav_4 id=__nav_4_label tabindex> <span class=md-ellipsis> API Documentation </span> <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_4_label aria-expanded=true> <label class=md-nav__title for=__nav_4> <span class="md-nav__icon md-icon"></span> API Documentation </label> <ul class=md-nav__list data-md-scrollfix> <li class="md-nav__item md-nav__item--active md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_1 checked> <div class="md-nav__link md-nav__container"> <a href=../ class="md-nav__link "> <span class=md-ellipsis> basic_json </span> </a> <label class="md-nav__link " for=__nav_4_1 id=__nav_4_1_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_1_label aria-expanded=true> <label class=md-nav__title for=__nav_4_1> <span class="md-nav__icon md-icon"></span> basic_json </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../basic_json/ class=md-nav__link> <span class=md-ellipsis> (Constructor) </span> </a> </li> <li class=md-nav__item> <a href=../~basic_json/ class=md-nav__link> <span class=md-ellipsis> (Destructor) </span> </a> </li> <li class=md-nav__item> <a href=../accept/ class=md-nav__link> <span class=md-ellipsis> accept </span> </a> </li> <li class=md-nav__item> <a href=../array/ class=md-nav__link> <span class=md-ellipsis> array </span> </a> </li> <li class=md-nav__item> <a href=../array_t/ class=md-nav__link> <span class=md-ellipsis> array_t </span> </a> </li> <li class=md-nav__item> <a href=../at/ class=md-nav__link> <span class=md-ellipsis> at </span> </a> </li> <li class=md-nav__item> <a href=../back/ class=md-nav__link> <span class=md-ellipsis> back </span> </a> </li> <li class=md-nav__item> <a href=../begin/ class=md-nav__link> <span class=md-ellipsis> begin </span> </a> </li> <li class=md-nav__item> <a href=../binary/ class=md-nav__link> <span class=md-ellipsis> binary </span> </a> </li> <li class=md-nav__item> <a href=../binary_t/ class=md-nav__link> <span class=md-ellipsis> binary_t </span> </a> </li> <li class=md-nav__item> <a href=../boolean_t/ class=md-nav__link> <span class=md-ellipsis> boolean_t </span> </a> </li> <li class=md-nav__item> <a href=../cbegin/ class=md-nav__link> <span class=md-ellipsis> cbegin </span> </a> </li> <li class=md-nav__item> <a href=../cbor_tag_handler_t/ class=md-nav__link> <span class=md-ellipsis> cbor_tag_handler_t </span> </a> </li> <li class=md-nav__item> <a href=../cend/ class=md-nav__link> <span class=md-ellipsis> cend </span> </a> </li> <li class=md-nav__item> <a href=../clear/ class=md-nav__link> <span class=md-ellipsis> clear </span> </a> </li> <li class=md-nav__item> <a href=../contains/ class=md-nav__link> <span class=md-ellipsis> contains </span> </a> </li> <li class=md-nav__item> <a href=../count/ class=md-nav__link> <span class=md-ellipsis> count </span> </a> </li> <li class=md-nav__item> <a href=../crbegin/ class=md-nav__link> <span class=md-ellipsis> crbegin </span> </a> </li> <li class=md-nav__item> <a href=../crend/ class=md-nav__link> <span class=md-ellipsis> crend </span> </a> </li> <li class=md-nav__item> <a href=../default_object_comparator_t/ class=md-nav__link> <span class=md-ellipsis> default_object_comparator_t </span> </a> </li> <li class=md-nav__item> <a href=../diff/ class=md-nav__link> <span class=md-ellipsis> diff </span> </a> </li> <li class=md-nav__item> <a href=../dump/ class=md-nav__link> <span class=md-ellipsis> dump </span> </a> </li> <li class=md-nav__item> <a href=../emplace/ class=md-nav__link> <span class=md-ellipsis> emplace </span> </a> </li> <li class=md-nav__item> <a href=../emplace_back/ class=md-nav__link> <span class=md-ellipsis> emplace_back </span> </a> </li> <li class=md-nav__item> <a href=../empty/ class=md-nav__link> <span class=md-ellipsis> empty </span> </a> </li> <li class=md-nav__item> <a href=../end/ class=md-nav__link> <span class=md-ellipsis> end </span> </a> </li> <li class=md-nav__item> <a href=../end_pos/ class=md-nav__link> <span class=md-ellipsis> end_pos </span> </a> </li> <li class=md-nav__item> <a href=../erase/ class=md-nav__link> <span class=md-ellipsis> erase </span> </a> </li> <li class=md-nav__item> <a href=../error_handler_t/ class=md-nav__link> <span class=md-ellipsis> error_handler_t </span> </a> </li> <li class=md-nav__item> <a href=../exception/ class=md-nav__link> <span class=md-ellipsis> exception </span> </a> </li> <li class=md-nav__item> <a href=../find/ class=md-nav__link> <span class=md-ellipsis> find </span> </a> </li> <li class=md-nav__item> <a href=../flatten/ class=md-nav__link> <span class=md-ellipsis> flatten </span> </a> </li> <li class=md-nav__item> <a href=../from_bjdata/ class=md-nav__link> <span class=md-ellipsis> from_bjdata </span> </a> </li> <li class=md-nav__item> <a href=../from_bson/ class=md-nav__link> <span class=md-ellipsis> from_bson </span> </a> </li> <li class=md-nav__item> <a href=../from_cbor/ class=md-nav__link> <span class=md-ellipsis> from_cbor </span> </a> </li> <li class=md-nav__item> <a href=../from_msgpack/ class=md-nav__link> <span class=md-ellipsis> from_msgpack </span> </a> </li> <li class=md-nav__item> <a href=../from_ubjson/ class=md-nav__link> <span class=md-ellipsis> from_ubjson </span> </a> </li> <li class=md-nav__item> <a href=../front/ class=md-nav__link> <span class=md-ellipsis> front </span> </a> </li> <li class=md-nav__item> <a href=../get/ class=md-nav__link> <span class=md-ellipsis> get </span> </a> </li> <li class=md-nav__item> <a href=../get_allocator/ class=md-nav__link> <span class=md-ellipsis> get_allocator </span> </a> </li> <li class=md-nav__item> <a href=../get_binary/ class=md-nav__link> <span class=md-ellipsis> get_binary </span> </a> </li> <li class=md-nav__item> <a href=../get_ptr/ class=md-nav__link> <span class=md-ellipsis> get_ptr </span> </a> </li> <li class=md-nav__item> <a href=../get_ref/ class=md-nav__link> <span class=md-ellipsis> get_ref </span> </a> </li> <li class=md-nav__item> <a href=../get_to/ class=md-nav__link> <span class=md-ellipsis> get_to </span> </a> </li> <li class=md-nav__item> <a href=../std_hash/ class=md-nav__link> <span class=md-ellipsis> std::hash&lt;basic_json&gt; </span> </a> </li> <li class=md-nav__item> <a href=../input_format_t/ class=md-nav__link> <span class=md-ellipsis> input_format_t </span> </a> </li> <li class="md-nav__item md-nav__item--active"> <input class="md-nav__toggle md-toggle" type=checkbox id=__toc> <label class="md-nav__link md-nav__link--active" for=__toc> <span class=md-ellipsis> insert </span> <span class="md-nav__icon md-icon"></span> </label> <a href=./ class="md-nav__link md-nav__link--active"> <span class=md-ellipsis> insert </span> </a> <nav class="md-nav md-nav--secondary" aria-label="Table of contents"> <label class=md-nav__title for=__toc> <span class="md-nav__icon md-icon"></span> Table of contents </label> <ul class=md-nav__list data-md-component=toc data-md-scrollfix> <li class=md-nav__item> <a href=#iterator-invalidation class=md-nav__link> <span class=md-ellipsis> Iterator invalidation </span> </a> </li> <li class=md-nav__item> <a href=#parameters class=md-nav__link> <span class=md-ellipsis> Parameters </span> </a> </li> <li class=md-nav__item> <a href=#return-value class=md-nav__link> <span class=md-ellipsis> Return value </span> </a> </li> <li class=md-nav__item> <a href=#exception-safety class=md-nav__link> <span class=md-ellipsis> Exception safety </span> </a> </li> <li class=md-nav__item> <a href=#exceptions class=md-nav__link> <span class=md-ellipsis> Exceptions </span> </a> </li> <li class=md-nav__item> <a href=#complexity class=md-nav__link> <span class=md-ellipsis> Complexity </span> </a> </li> <li class=md-nav__item> <a href=#examples class=md-nav__link> <span class=md-ellipsis> Examples </span> </a> </li> <li class=md-nav__item> <a href=#version-history class=md-nav__link> <span class=md-ellipsis> Version history </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../invalid_iterator/ class=md-nav__link> <span class=md-ellipsis> invalid_iterator </span> </a> </li> <li class=md-nav__item> <a href=../is_array/ class=md-nav__link> <span class=md-ellipsis> is_array </span> </a> </li> <li class=md-nav__item> <a href=../is_binary/ class=md-nav__link> <span class=md-ellipsis> is_binary </span> </a> </li> <li class=md-nav__item> <a href=../is_boolean/ class=md-nav__link> <span class=md-ellipsis> is_boolean </span> </a> </li> <li class=md-nav__item> <a href=../is_discarded/ class=md-nav__link> <span class=md-ellipsis> is_discarded </span> </a> </li> <li class=md-nav__item> <a href=../is_null/ class=md-nav__link> <span class=md-ellipsis> is_null </span> </a> </li> <li class=md-nav__item> <a href=../is_number/ class=md-nav__link> <span class=md-ellipsis> is_number </span> </a> </li> <li class=md-nav__item> <a href=../is_number_float/ class=md-nav__link> <span class=md-ellipsis> is_number_float </span> </a> </li> <li class=md-nav__item> <a href=../is_number_integer/ class=md-nav__link> <span class=md-ellipsis> is_number_integer </span> </a> </li> <li class=md-nav__item> <a href=../is_number_unsigned/ class=md-nav__link> <span class=md-ellipsis> is_number_unsigned </span> </a> </li> <li class=md-nav__item> <a href=../is_object/ class=md-nav__link> <span class=md-ellipsis> is_object </span> </a> </li> <li class=md-nav__item> <a href=../is_primitive/ class=md-nav__link> <span class=md-ellipsis> is_primitive </span> </a> </li> <li class=md-nav__item> <a href=../is_string/ class=md-nav__link> <span class=md-ellipsis> is_string </span> </a> </li> <li class=md-nav__item> <a href=../is_structured/ class=md-nav__link> <span class=md-ellipsis> is_structured </span> </a> </li> <li class=md-nav__item> <a href=../items/ class=md-nav__link> <span class=md-ellipsis> items </span> </a> </li> <li class=md-nav__item> <a href=../json_base_class_t/ class=md-nav__link> <span class=md-ellipsis> json_base_class_t </span> </a> </li> <li class=md-nav__item> <a href=../json_serializer/ class=md-nav__link> <span class=md-ellipsis> json_serializer </span> </a> </li> <li class=md-nav__item> <a href=../max_size/ class=md-nav__link> <span class=md-ellipsis> max_size </span> </a> </li> <li class=md-nav__item> <a href=../meta/ class=md-nav__link> <span class=md-ellipsis> meta </span> </a> </li> <li class=md-nav__item> <a href=../merge_patch/ class=md-nav__link> <span class=md-ellipsis> merge_patch </span> </a> </li> <li class=md-nav__item> <a href=../number_float_t/ class=md-nav__link> <span class=md-ellipsis> number_float_t </span> </a> </li> <li class=md-nav__item> <a href=../number_integer_t/ class=md-nav__link> <span class=md-ellipsis> number_integer_t </span> </a> </li> <li class=md-nav__item> <a href=../number_unsigned_t/ class=md-nav__link> <span class=md-ellipsis> number_unsigned_t </span> </a> </li> <li class=md-nav__item> <a href=../object/ class=md-nav__link> <span class=md-ellipsis> object </span> </a> </li> <li class=md-nav__item> <a href=../object_comparator_t/ class=md-nav__link> <span class=md-ellipsis> object_comparator_t </span> </a> </li> <li class=md-nav__item> <a href=../object_t/ class=md-nav__link> <span class=md-ellipsis> object_t </span> </a> </li> <li class=md-nav__item> <a href=../operator_ValueType/ class=md-nav__link> <span class=md-ellipsis> operator ValueType </span> </a> </li> <li class=md-nav__item> <a href=../operator_value_t/ class=md-nav__link> <span class=md-ellipsis> operator value_t </span> </a> </li> <li class=md-nav__item> <a href=../operator%5B%5D/ class=md-nav__link> <span class=md-ellipsis> operator[] </span> </a> </li> <li class=md-nav__item> <a href=../operator%3D/ class=md-nav__link> <span class=md-ellipsis> operator= </span> </a> </li> <li class=md-nav__item> <a href=../operator%2B%3D/ class=md-nav__link> <span class=md-ellipsis> operator+= </span> </a> </li> <li class=md-nav__item> <a href=../operator_eq/ class=md-nav__link> <span class=md-ellipsis> operator== </span> </a> </li> <li class=md-nav__item> <a href=../operator_ne/ class=md-nav__link> <span class=md-ellipsis> operator!= </span> </a> </li> <li class=md-nav__item> <a href=../operator_lt/ class=md-nav__link> <span class=md-ellipsis> operator< </span> </a> </li> <li class=md-nav__item> <a href=../operator_gt/ class=md-nav__link> <span class=md-ellipsis> operator> </span> </a> </li> <li class=md-nav__item> <a href=../operator_le/ class=md-nav__link> <span class=md-ellipsis> operator<= </span> </a> </li> <li class=md-nav__item> <a href=../operator_ge/ class=md-nav__link> <span class=md-ellipsis> operator>= </span> </a> </li> <li class=md-nav__item> <a href=../operator_spaceship/ class=md-nav__link> <span class=md-ellipsis> operator<=> </span> </a> </li> <li class=md-nav__item> <a href=../out_of_range/ class=md-nav__link> <span class=md-ellipsis> out_of_range </span> </a> </li> <li class=md-nav__item> <a href=../other_error/ class=md-nav__link> <span class=md-ellipsis> other_error </span> </a> </li> <li class=md-nav__item> <a href=../parse/ class=md-nav__link> <span class=md-ellipsis> parse </span> </a> </li> <li class=md-nav__item> <a href=../parse_error/ class=md-nav__link> <span class=md-ellipsis> parse_error </span> </a> </li> <li class=md-nav__item> <a href=../parse_event_t/ class=md-nav__link> <span class=md-ellipsis> parse_event_t </span> </a> </li> <li class=md-nav__item> <a href=../parser_callback_t/ class=md-nav__link> <span class=md-ellipsis> parser_callback_t </span> </a> </li> <li class=md-nav__item> <a href=../patch/ class=md-nav__link> <span class=md-ellipsis> patch </span> </a> </li> <li class=md-nav__item> <a href=../patch_inplace/ class=md-nav__link> <span class=md-ellipsis> patch_inplace </span> </a> </li> <li class=md-nav__item> <a href=../push_back/ class=md-nav__link> <span class=md-ellipsis> push_back </span> </a> </li> <li class=md-nav__item> <a href=../rbegin/ class=md-nav__link> <span class=md-ellipsis> rbegin </span> </a> </li> <li class=md-nav__item> <a href=../rend/ class=md-nav__link> <span class=md-ellipsis> rend </span> </a> </li> <li class=md-nav__item> <a href=../sax_parse/ class=md-nav__link> <span class=md-ellipsis> sax_parse </span> </a> </li> <li class=md-nav__item> <a href=../size/ class=md-nav__link> <span class=md-ellipsis> size </span> </a> </li> <li class=md-nav__item> <a href=../start_pos/ class=md-nav__link> <span class=md-ellipsis> start_pos </span> </a> </li> <li class=md-nav__item> <a href=../string_t/ class=md-nav__link> <span class=md-ellipsis> string_t </span> </a> </li> <li class=md-nav__item> <a href=../swap/ class=md-nav__link> <span class=md-ellipsis> swap </span> </a> </li> <li class=md-nav__item> <a href=../std_swap/ class=md-nav__link> <span class=md-ellipsis> std::swap&lt;basic_json&gt; </span> </a> </li> <li class=md-nav__item> <a href=../to_bjdata/ class=md-nav__link> <span class=md-ellipsis> to_bjdata </span> </a> </li> <li class=md-nav__item> <a href=../to_bson/ class=md-nav__link> <span class=md-ellipsis> to_bson </span> </a> </li> <li class=md-nav__item> <a href=../to_cbor/ class=md-nav__link> <span class=md-ellipsis> to_cbor </span> </a> </li> <li class=md-nav__item> <a href=../to_msgpack/ class=md-nav__link> <span class=md-ellipsis> to_msgpack </span> </a> </li> <li class=md-nav__item> <a href=../to_string/ class=md-nav__link> <span class=md-ellipsis> to_string </span> </a> </li> <li class=md-nav__item> <a href=../to_ubjson/ class=md-nav__link> <span class=md-ellipsis> to_ubjson </span> </a> </li> <li class=md-nav__item> <a href=../type/ class=md-nav__link> <span class=md-ellipsis> type </span> </a> </li> <li class=md-nav__item> <a href=../type_error/ class=md-nav__link> <span class=md-ellipsis> type_error </span> </a> </li> <li class=md-nav__item> <a href=../type_name/ class=md-nav__link> <span class=md-ellipsis> type_name </span> </a> </li> <li class=md-nav__item> <a href=../unflatten/ class=md-nav__link> <span class=md-ellipsis> unflatten </span> </a> </li> <li class=md-nav__item> <a href=../update/ class=md-nav__link> <span class=md-ellipsis> update </span> </a> </li> <li class=md-nav__item> <a href=../value/ class=md-nav__link> <span class=md-ellipsis> value </span> </a> </li> <li class=md-nav__item> <a href=../value_t/ class=md-nav__link> <span class=md-ellipsis> value_t </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_2> <div class="md-nav__link md-nav__container"> <a href=../../byte_container_with_subtype/ class="md-nav__link "> <span class=md-ellipsis> byte_container_with_subtype </span> </a> <label class="md-nav__link " for=__nav_4_2 id=__nav_4_2_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_2_label aria-expanded=false> <label class=md-nav__title for=__nav_4_2> <span class="md-nav__icon md-icon"></span> byte_container_with_subtype </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../byte_container_with_subtype/byte_container_with_subtype/ class=md-nav__link> <span class=md-ellipsis> (constructor) </span> </a> </li> <li class=md-nav__item> <a href=../../byte_container_with_subtype/clear_subtype/ class=md-nav__link> <span class=md-ellipsis> clear_subtype </span> </a> </li> <li class=md-nav__item> <a href=../../byte_container_with_subtype/has_subtype/ class=md-nav__link> <span class=md-ellipsis> has_subtype </span> </a> </li> <li class=md-nav__item> <a href=../../byte_container_with_subtype/set_subtype/ class=md-nav__link> <span class=md-ellipsis> set_subtype </span> </a> </li> <li class=md-nav__item> <a href=../../byte_container_with_subtype/subtype/ class=md-nav__link> <span class=md-ellipsis> subtype </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_3> <div class="md-nav__link md-nav__container"> <a href=../../adl_serializer/ class="md-nav__link "> <span class=md-ellipsis> adl_serializer </span> </a> <label class="md-nav__link " for=__nav_4_3 id=__nav_4_3_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_3_label aria-expanded=false> <label class=md-nav__title for=__nav_4_3> <span class="md-nav__icon md-icon"></span> adl_serializer </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../adl_serializer/from_json/ class=md-nav__link> <span class=md-ellipsis> from_json </span> </a> </li> <li class=md-nav__item> <a href=../../adl_serializer/to_json/ class=md-nav__link> <span class=md-ellipsis> to_json </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../json/ class=md-nav__link> <span class=md-ellipsis> json </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_5> <div class="md-nav__link md-nav__container"> <a href=../../json_pointer/ class="md-nav__link "> <span class=md-ellipsis> json_pointer </span> </a> <label class="md-nav__link " for=__nav_4_5 id=__nav_4_5_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_5_label aria-expanded=false> <label class=md-nav__title for=__nav_4_5> <span class="md-nav__icon md-icon"></span> json_pointer </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../json_pointer/json_pointer/ class=md-nav__link> <span class=md-ellipsis> (Constructor) </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/back/ class=md-nav__link> <span class=md-ellipsis> back </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/empty/ class=md-nav__link> <span class=md-ellipsis> empty </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/front/ class=md-nav__link> <span class=md-ellipsis> front </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_string_t/ class=md-nav__link> <span class=md-ellipsis> operator string_t </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_eq/ class=md-nav__link> <span class=md-ellipsis> operator== </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_ne/ class=md-nav__link> <span class=md-ellipsis> operator!= </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_slash/ class=md-nav__link> <span class=md-ellipsis> operator/ </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_slasheq/ class=md-nav__link> <span class=md-ellipsis> operator/= </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/parent_pointer/ class=md-nav__link> <span class=md-ellipsis> parent_pointer </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/pop_back/ class=md-nav__link> <span class=md-ellipsis> pop_back </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/pop_front/ class=md-nav__link> <span class=md-ellipsis> pop_front </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/push_back/ class=md-nav__link> <span class=md-ellipsis> push_back </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/push_front/ class=md-nav__link> <span class=md-ellipsis> push_front </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/string_t/ class=md-nav__link> <span class=md-ellipsis> string_t </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/to_string/ class=md-nav__link> <span class=md-ellipsis> to_string </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_6> <div class="md-nav__link md-nav__container"> <a href=../../json_sax/ class="md-nav__link "> <span class=md-ellipsis> json_sax </span> </a> <label class="md-nav__link " for=__nav_4_6 id=__nav_4_6_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_6_label aria-expanded=false> <label class=md-nav__title for=__nav_4_6> <span class="md-nav__icon md-icon"></span> json_sax </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../json_sax/binary/ class=md-nav__link> <span class=md-ellipsis> binary </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/boolean/ class=md-nav__link> <span class=md-ellipsis> boolean </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/end_array/ class=md-nav__link> <span class=md-ellipsis> end_array </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/end_object/ class=md-nav__link> <span class=md-ellipsis> end_object </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/key/ class=md-nav__link> <span class=md-ellipsis> key </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/null/ class=md-nav__link> <span class=md-ellipsis> null </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/number_float/ class=md-nav__link> <span class=md-ellipsis> number_float </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/number_integer/ class=md-nav__link> <span class=md-ellipsis> number_integer </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/number_unsigned/ class=md-nav__link> <span class=md-ellipsis> number_unsigned </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/parse_error/ class=md-nav__link> <span class=md-ellipsis> parse_error </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/start_array/ class=md-nav__link> <span class=md-ellipsis> start_array </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/start_object/ class=md-nav__link> <span class=md-ellipsis> start_object </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/string/ class=md-nav__link> <span class=md-ellipsis> string </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../operator_ltlt/ class=md-nav__link> <span class=md-ellipsis> operator<<(basic_json), operator<<(json_pointer) </span> </a> </li> <li class=md-nav__item> <a href=../../operator_gtgt/ class=md-nav__link> <span class=md-ellipsis> operator>>(basic_json) </span> </a> </li> <li class=md-nav__item> <a href=../../operator_literal_json/ class=md-nav__link> <span class=md-ellipsis> operator""_json </span> </a> </li> <li class=md-nav__item> <a href=../../operator_literal_json_pointer/ class=md-nav__link> <span class=md-ellipsis> operator""_json_pointer </span> </a> </li> <li class=md-nav__item> <a href=../../ordered_json/ class=md-nav__link> <span class=md-ellipsis> ordered_json </span> </a> </li> <li class=md-nav__item> <a href=../../ordered_map/ class=md-nav__link> <span class=md-ellipsis> ordered_map </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_13> <div class="md-nav__link md-nav__container"> <a href=../../macros/ class="md-nav__link "> <span class=md-ellipsis> macros </span> </a> <label class="md-nav__link " for=__nav_4_13 id=__nav_4_13_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_13_label aria-expanded=false> <label class=md-nav__title for=__nav_4_13> <span class="md-nav__icon md-icon"></span> macros </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../macros/json_assert/ class=md-nav__link> <span class=md-ellipsis> JSON_ASSERT </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_brace_init_copy_semantics/ class=md-nav__link> <span class=md-ellipsis> JSON_BRACE_INIT_COPY_SEMANTICS </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_throw_user/ class=md-nav__link> <span class=md-ellipsis> JSON_CATCH_USER, JSON_THROW_USER, JSON_TRY_USER </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_diagnostics/ class=md-nav__link> <span class=md-ellipsis> JSON_DIAGNOSTICS </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_diagnostic_positions/ class=md-nav__link> <span class=md-ellipsis> JSON_DIAGNOSTIC_POSITIONS </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_disable_enum_serialization/ class=md-nav__link> <span class=md-ellipsis> JSON_DISABLE_ENUM_SERIALIZATION </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_has_cpp_11/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_CPP_11, JSON_HAS_CPP_14, JSON_HAS_CPP_17, JSON_HAS_CPP_20 </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_has_filesystem/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_EXPERIMENTAL_FILESYSTEM, JSON_HAS_FILESYSTEM </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_has_ranges/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_RANGES </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_has_static_rtti/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_STATIC_RTTI </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_has_three_way_comparison/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_THREE_WAY_COMPARISON </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_noexception/ class=md-nav__link> <span class=md-ellipsis> JSON_NOEXCEPTION </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_no_io/ class=md-nav__link> <span class=md-ellipsis> JSON_NO_IO </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_skip_library_version_check/ class=md-nav__link> <span class=md-ellipsis> JSON_SKIP_LIBRARY_VERSION_CHECK </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_skip_unsupported_compiler_check/ class=md-nav__link> <span class=md-ellipsis> JSON_SKIP_UNSUPPORTED_COMPILER_CHECK </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_use_global_udls/ class=md-nav__link> <span class=md-ellipsis> JSON_USE_GLOBAL_UDLS </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_use_implicit_conversions/ class=md-nav__link> <span class=md-ellipsis> JSON_USE_IMPLICIT_CONVERSIONS </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_use_legacy_discarded_value_comparison/ class=md-nav__link> <span class=md-ellipsis> JSON_USE_LEGACY_DISCARDED_VALUE_COMPARISON </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_define_derived_type/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_ONLY_SERIALIZE, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_define_type_intrusive/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_TYPE_INTRUSIVE, NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_TYPE_INTRUSIVE_ONLY_SERIALIZE </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_define_type_non_intrusive/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_define_type_with_names/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_TYPE_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_namespace/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_NAMESPACE </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_namespace_begin/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_NAMESPACE_BEGIN, NLOHMANN_JSON_NAMESPACE_END </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_namespace_no_version/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_NAMESPACE_NO_VERSION </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_serialize_enum/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_SERIALIZE_ENUM </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_serialize_enum_strict/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_SERIALIZE_ENUM_STRICT </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_version_major/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_VERSION_MAJOR, NLOHMANN_JSON_VERSION_MINOR, NLOHMANN_JSON_VERSION_PATCH </span> </a> </li> </ul> </nav> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_5> <div class="md-nav__link md-nav__container"> <a href=../../../community/ class="md-nav__link "> <span class=md-ellipsis> Community </span> </a> <label class="md-nav__link " for=__nav_5 id=__nav_5_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_5_label aria-expanded=false> <label class=md-nav__title for=__nav_5> <span class="md-nav__icon md-icon"></span> Community </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../community/code_of_conduct/ class=md-nav__link> <span class=md-ellipsis> Code of Conduct </span> </a> </li> <li class=md-nav__item> <a href=../../../community/contribution_guidelines/ class=md-nav__link> <span class=md-ellipsis> Contribution Guidelines </span> </a> </li> <li class=md-nav__item> <a href=../../../community/quality_assurance/ class=md-nav__link> <span class=md-ellipsis> Quality assurance </span> </a> </li> <li class=md-nav__item> <a href=../../../community/governance/ class=md-nav__link> <span class=md-ellipsis> Governance </span> </a> </li> <li class=md-nav__item> <a href=../../../community/security_policy/ class=md-nav__link> <span class=md-ellipsis> Security Policy </span> </a> </li> </ul> </nav> </li> </ul> </nav> </div> </div> </div> <div class="md-sidebar md-sidebar--secondary" data-md-component=sidebar data-md-type=toc> <div class=md-sidebar__scrollwrap> <div class=md-sidebar__inner> <nav class="md-nav md-nav--secondary" aria-label="Table of contents"> <label class=md-nav__title for=__toc> <span class="md-nav__icon md-icon"></span> Table of contents </label> <ul class=md-nav__list data-md-component=toc data-md-scrollfix> <li class=md-nav__item> <a href=#iterator-invalidation class=md-nav__link> <span class=md-ellipsis> Iterator invalidation </span> </a> </li> <li class=md-nav__item> <a href=#parameters class=md-nav__link> <span class=md-ellipsis> Parameters </span> </a> </li> <li class=md-nav__item> <a href=#return-value class=md-nav__link> <span class=md-ellipsis> Return value </span> </a> </li> <li class=md-nav__item> <a href=#exception-safety class=md-nav__link> <span class=md-ellipsis> Exception safety </span> </a> </li> <li class=md-nav__item> <a href=#exceptions class=md-nav__link> <span class=md-ellipsis> Exceptions </span> </a> </li> <li class=md-nav__item> <a href=#complexity class=md-nav__link> <span class=md-ellipsis> Complexity </span> </a> </li> <li class=md-nav__item> <a href=#examples class=md-nav__link> <span class=md-ellipsis> Examples </span> </a> </li> <li class=md-nav__item> <a href=#version-history class=md-nav__link> <span class=md-ellipsis> Version history </span> </a> </li> </ul> </nav> </div> </div> </div> <div class=md-content data-md-component=content> <article class="md-content__inner md-typeset"> <a href="https://github.com/nlohmann/json/edit/develop/docs/mkdocs/docs/api/basic_json/insert.md" title="Edit this page" class="md-content__button md-icon" rel="edit"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M10 20H6V4h7v5h5v3.1l2-2V8l-6-6H6c-1.1 0-2 .9-2 2v16c0 1.1.9 2 2 2h4zm10.2-7c.1 0 .3.1.4.2l1.3 1.3c.2.2.2.6 0 .8l-1 1-2.1-2.1 1-1c.1-.1.2-.2.4-.2m0 3.9L14.1 23H12v-2.1l6.1-6.1z"/></svg> </a> <a href="https://github.com/nlohmann/json/raw/develop/docs/mkdocs/docs/api/basic_json/insert.md" title="View source of this page" class="md-content__button md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M17 18c.56 0 1 .44 1 1s-.44 1-1 1-1-.44-1-1 .44-1 1-1m0-3c-2.73 0-5.06 1.66-6 4 .94 2.34 3.27 4 6 4s5.06-1.66 6-4c-.94-2.34-3.27-4-6-4m0 6.5a2.5 2.5 0 0 1-2.5-2.5 2.5 2.5 0 0 1 2.5-2.5 2.5 2.5 0 0 1 2.5 2.5 2.5 2.5 0 0 1-2.5 2.5M9.27 20H6V4h7v5h5v4.07c.7.08 1.36.25 2 .49V8l-6-6H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h4.5a8.2 8.2 0 0 1-1.23-2"/></svg> </a> <h1 id=nlohmannbasic_jsoninsert><small>nlohmann::basic_json::</small>insert<a class=headerlink href=#nlohmannbasic_jsoninsert title="Permanent link">&para;</a></h1> <div class=highlight><pre><span></span><code><span class=c1>// (1)</span>
+<!doctype html><html lang=en class=no-js> <head><meta charset=utf-8><meta name=viewport content="width=device-width,initial-scale=1"><meta name=author content="Niels Lohmann"><link href="https://json.nlohmann.me/api/basic_json/insert/" rel="canonical"><link href=../input_format_t/ rel=prev><link href=../invalid_iterator/ rel=next><link rel=icon href=../../../assets/images/favicon.png><meta name=generator content="mkdocs-1.6.1, mkdocs-material-9.7.6"><title>insert - JSON for Modern C++</title><link rel=stylesheet href=../../../assets/stylesheets/main.484c7ddc.min.css><link rel=stylesheet href=../../../assets/stylesheets/palette.ab4e12ef.min.css><link rel="stylesheet" href="../../../assets/external/fonts.googleapis.com/css.61a430c9.css"><style>:root{--md-text-font:"Roboto";--md-code-font:"JetBrains Mono"}</style><link rel=stylesheet href=../../../css/custom.css><script>__md_scope=new URL("../../..",location),__md_hash=e=>[...e].reduce(((e,_)=>(e<<5)-e+_.charCodeAt(0)),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script></head> <body dir=ltr data-md-color-scheme=default data-md-color-primary=indigo data-md-color-accent=indigo> <input class=md-toggle data-md-toggle=drawer type=checkbox id=__drawer autocomplete=off> <input class=md-toggle data-md-toggle=search type=checkbox id=__search autocomplete=off> <label class=md-overlay for=__drawer></label> <div data-md-component=skip> <a href=#nlohmannbasic_jsoninsert class=md-skip> Skip to content </a> </div> <div data-md-component=announce> </div> <header class=md-header data-md-component=header> <nav class="md-header__inner md-grid" aria-label=Header> <a href=../../.. title="JSON for Modern C++" class="md-header__button md-logo" aria-label="JSON for Modern C++" data-md-component=logo> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54"/></svg> </a> <label class="md-header__button md-icon" for=__drawer> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M3 6h18v2H3zm0 5h18v2H3zm0 5h18v2H3z"/></svg> </label> <div class=md-header__title data-md-component=header-title> <div class=md-header__ellipsis> <div class=md-header__topic> <span class=md-ellipsis> JSON for Modern C++ </span> </div> <div class=md-header__topic data-md-component=header-topic> <span class=md-ellipsis> insert </span> </div> </div> </div> <form class=md-header__option data-md-component=palette> <input class=md-option data-md-color-media="(prefers-color-scheme: light)" data-md-color-scheme=default data-md-color-primary=indigo data-md-color-accent=indigo aria-label="Switch to dark mode" type=radio name=__palette id=__palette_0> <label class="md-header__button md-icon" title="Switch to dark mode" for=__palette_1 hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a4 4 0 0 0-4 4 4 4 0 0 0 4 4 4 4 0 0 0 4-4 4 4 0 0 0-4-4m0 10a6 6 0 0 1-6-6 6 6 0 0 1 6-6 6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12z"/></svg> </label> <input class=md-option data-md-color-media="(prefers-color-scheme: dark)" data-md-color-scheme=slate data-md-color-primary=indigo data-md-color-accent=indigo aria-label="Switch to light mode" type=radio name=__palette id=__palette_1> <label class="md-header__button md-icon" title="Switch to light mode" for=__palette_0 hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 18c-.89 0-1.74-.2-2.5-.55C11.56 16.5 13 14.42 13 12s-1.44-4.5-3.5-5.45C10.26 6.2 11.11 6 12 6a6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12z"/></svg> </label> </form> <script>var palette=__md_get("__palette");if(palette&&palette.color){if("(prefers-color-scheme)"===palette.color.media){var media=matchMedia("(prefers-color-scheme: light)"),input=document.querySelector(media.matches?"[data-md-color-media='(prefers-color-scheme: light)']":"[data-md-color-media='(prefers-color-scheme: dark)']");palette.color.media=input.getAttribute("data-md-color-media"),palette.color.scheme=input.getAttribute("data-md-color-scheme"),palette.color.primary=input.getAttribute("data-md-color-primary"),palette.color.accent=input.getAttribute("data-md-color-accent")}for(var[key,value]of Object.entries(palette.color))document.body.setAttribute("data-md-color-"+key,value)}</script> <label class="md-header__button md-icon" for=__search> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg> </label> <div class=md-search data-md-component=search role=dialog> <label class=md-search__overlay for=__search></label> <div class=md-search__inner role=search> <form class=md-search__form name=search> <input type=text class=md-search__input name=query aria-label=Search placeholder=Search autocapitalize=off autocorrect=off autocomplete=off spellcheck=false data-md-component=search-query required> <label class="md-search__icon md-icon" for=__search> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11z"/></svg> </label> <nav class=md-search__options aria-label=Search> <button type=reset class="md-search__icon md-icon" title=Clear aria-label=Clear tabindex=-1> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z"/></svg> </button> </nav> </form> <div class=md-search__output> <div class=md-search__scrollwrap tabindex=0 data-md-scrollfix> <div class=md-search-result data-md-component=search-result> <div class=md-search-result__meta> Initializing search </div> <ol class=md-search-result__list role=presentation></ol> </div> </div> </div> </div> </div> <div class=md-header__source> <a href="https://github.com/nlohmann/json" title="Go to repository" class="md-source" data-md-component="source"> <div class="md-source__icon md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </div> <div class=md-source__repository> nlohmann/json </div> </a> </div> </nav> </header> <div class=md-container data-md-component=container> <nav class=md-tabs aria-label=Tabs data-md-component=tabs> <div class=md-grid> <ul class=md-tabs__list> <li class=md-tabs__item> <a href=../../.. class=md-tabs__link> Home </a> </li> <li class=md-tabs__item> <a href=../../../features/arbitrary_types/ class=md-tabs__link> Features </a> </li> <li class=md-tabs__item> <a href=../../../integration/ class=md-tabs__link> Integration </a> </li> <li class="md-tabs__item md-tabs__item--active"> <a href=../ class=md-tabs__link> API Documentation </a> </li> <li class=md-tabs__item> <a href=../../../community/ class=md-tabs__link> Community </a> </li> </ul> </div> </nav> <main class=md-main data-md-component=main> <div class="md-main__inner md-grid"> <div class="md-sidebar md-sidebar--primary" data-md-component=sidebar data-md-type=navigation> <div class=md-sidebar__scrollwrap> <div class=md-sidebar__inner> <nav class="md-nav md-nav--primary md-nav--lifted" aria-label=Navigation data-md-level=0> <label class=md-nav__title for=__drawer> <a href=../../.. title="JSON for Modern C++" class="md-nav__button md-logo" aria-label="JSON for Modern C++" data-md-component=logo> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54"/></svg> </a> JSON for Modern C++ </label> <div class=md-nav__source> <a href="https://github.com/nlohmann/json" title="Go to repository" class="md-source" data-md-component="source"> <div class="md-source__icon md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </div> <div class=md-source__repository> nlohmann/json </div> </a> </div> <ul class=md-nav__list data-md-scrollfix> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_1> <div class="md-nav__link md-nav__container"> <a href=../../.. class="md-nav__link "> <span class=md-ellipsis> Home </span> </a> <label class="md-nav__link " for=__nav_1 id=__nav_1_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_1_label aria-expanded=false> <label class=md-nav__title for=__nav_1> <span class="md-nav__icon md-icon"></span> Home </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../home/license/ class=md-nav__link> <span class=md-ellipsis> License </span> </a> </li> <li class=md-nav__item> <a href=../../../home/faq/ class=md-nav__link> <span class=md-ellipsis> FAQ </span> </a> </li> <li class=md-nav__item> <a href=../../../home/exceptions/ class=md-nav__link> <span class=md-ellipsis> Exceptions </span> </a> </li> <li class=md-nav__item> <a href=../../../home/releases/ class=md-nav__link> <span class=md-ellipsis> Releases </span> </a> </li> <li class=md-nav__item> <a href=../../../home/design_goals/ class=md-nav__link> <span class=md-ellipsis> Design goals </span> </a> </li> <li class=md-nav__item> <a href=../../../home/architecture/ class=md-nav__link> <span class=md-ellipsis> Architecture </span> </a> </li> <li class=md-nav__item> <a href=../../../home/customers/ class=md-nav__link> <span class=md-ellipsis> Customers </span> </a> </li> <li class=md-nav__item> <a href=../../../home/sponsors/ class=md-nav__link> <span class=md-ellipsis> Sponsors </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2> <label class=md-nav__link for=__nav_2 id=__nav_2_label tabindex=0> <span class=md-ellipsis> Features </span> <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_2_label aria-expanded=false> <label class=md-nav__title for=__nav_2> <span class="md-nav__icon md-icon"></span> Features </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/arbitrary_types/ class=md-nav__link> <span class=md-ellipsis> Arbitrary Type Conversions </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_2> <div class="md-nav__link md-nav__container"> <a href=../../../features/binary_formats/ class="md-nav__link "> <span class=md-ellipsis> Binary Formats </span> </a> <label class="md-nav__link " for=__nav_2_2 id=__nav_2_2_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_2_label aria-expanded=false> <label class=md-nav__title for=__nav_2_2> <span class="md-nav__icon md-icon"></span> Binary Formats </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/binary_formats/bjdata/ class=md-nav__link> <span class=md-ellipsis> BJData </span> </a> </li> <li class=md-nav__item> <a href=../../../features/binary_formats/bson/ class=md-nav__link> <span class=md-ellipsis> BSON </span> </a> </li> <li class=md-nav__item> <a href=../../../features/binary_formats/cbor/ class=md-nav__link> <span class=md-ellipsis> CBOR </span> </a> </li> <li class=md-nav__item> <a href=../../../features/binary_formats/messagepack/ class=md-nav__link> <span class=md-ellipsis> MessagePack </span> </a> </li> <li class=md-nav__item> <a href=../../../features/binary_formats/ubjson/ class=md-nav__link> <span class=md-ellipsis> UBJSON </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../../features/binary_values/ class=md-nav__link> <span class=md-ellipsis> Binary Values </span> </a> </li> <li class=md-nav__item> <a href=../../../features/comments/ class=md-nav__link> <span class=md-ellipsis> Comments </span> </a> </li> <li class=md-nav__item> <a href=../../../features/trailing_commas/ class=md-nav__link> <span class=md-ellipsis> Trailing Commas </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_6> <div class="md-nav__link md-nav__container"> <a href=../../../features/element_access/ class="md-nav__link "> <span class=md-ellipsis> Element Access </span> </a> <label class="md-nav__link " for=__nav_2_6 id=__nav_2_6_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_6_label aria-expanded=false> <label class=md-nav__title for=__nav_2_6> <span class="md-nav__icon md-icon"></span> Element Access </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/element_access/unchecked_access/ class=md-nav__link> <span class=md-ellipsis> Unchecked access: operator[] </span> </a> </li> <li class=md-nav__item> <a href=../../../features/element_access/checked_access/ class=md-nav__link> <span class=md-ellipsis> Checked access: at </span> </a> </li> <li class=md-nav__item> <a href=../../../features/element_access/default_value/ class=md-nav__link> <span class=md-ellipsis> Access with default value: value </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../../features/iterators/ class=md-nav__link> <span class=md-ellipsis> Iterators </span> </a> </li> <li class=md-nav__item> <a href=../../../features/json_pointer/ class=md-nav__link> <span class=md-ellipsis> JSON Pointer </span> </a> </li> <li class=md-nav__item> <a href=../../../features/json_patch/ class=md-nav__link> <span class=md-ellipsis> JSON Patch and Diff </span> </a> </li> <li class=md-nav__item> <a href=../../../features/merge_patch/ class=md-nav__link> <span class=md-ellipsis> JSON Merge Patch </span> </a> </li> <li class=md-nav__item> <a href=../../../features/modules/ class=md-nav__link> <span class=md-ellipsis> Modules </span> </a> </li> <li class=md-nav__item> <a href=../../../features/namespace/ class=md-nav__link> <span class=md-ellipsis> nlohmann Namespace </span> </a> </li> <li class=md-nav__item> <a href=../../../features/object_order/ class=md-nav__link> <span class=md-ellipsis> Object Order </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_14> <div class="md-nav__link md-nav__container"> <a href=../../../features/parsing/ class="md-nav__link "> <span class=md-ellipsis> Parsing </span> </a> <label class="md-nav__link " for=__nav_2_14 id=__nav_2_14_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_14_label aria-expanded=false> <label class=md-nav__title for=__nav_2_14> <span class="md-nav__icon md-icon"></span> Parsing </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/parsing/json_lines/ class=md-nav__link> <span class=md-ellipsis> JSON Lines </span> </a> </li> <li class=md-nav__item> <a href=../../../features/parsing/parse_exceptions/ class=md-nav__link> <span class=md-ellipsis> Parsing and Exceptions </span> </a> </li> <li class=md-nav__item> <a href=../../../features/parsing/parser_callbacks/ class=md-nav__link> <span class=md-ellipsis> Parser Callbacks </span> </a> </li> <li class=md-nav__item> <a href=../../../features/parsing/sax_interface/ class=md-nav__link> <span class=md-ellipsis> SAX Interface </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../../features/assertions/ class=md-nav__link> <span class=md-ellipsis> Runtime Assertions </span> </a> </li> <li class=md-nav__item> <a href=../../../features/enum_conversion/ class=md-nav__link> <span class=md-ellipsis> Specializing enum conversion </span> </a> </li> <li class=md-nav__item> <a href=../../../features/macros/ class=md-nav__link> <span class=md-ellipsis> Supported Macros </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_18> <div class="md-nav__link md-nav__container"> <a href=../../../features/types/ class="md-nav__link "> <span class=md-ellipsis> Types </span> </a> <label class="md-nav__link " for=__nav_2_18 id=__nav_2_18_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_18_label aria-expanded=false> <label class=md-nav__title for=__nav_2_18> <span class="md-nav__icon md-icon"></span> Types </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/types/number_handling/ class=md-nav__link> <span class=md-ellipsis> Number Handling </span> </a> </li> </ul> </nav> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_3> <div class="md-nav__link md-nav__container"> <a href=../../../integration/ class="md-nav__link "> <span class=md-ellipsis> Integration </span> </a> <label class="md-nav__link " for=__nav_3 id=__nav_3_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_3_label aria-expanded=false> <label class=md-nav__title for=__nav_3> <span class="md-nav__icon md-icon"></span> Integration </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../integration/migration_guide/ class=md-nav__link> <span class=md-ellipsis> Migration Guide </span> </a> </li> <li class=md-nav__item> <a href=../../../integration/cmake/ class=md-nav__link> <span class=md-ellipsis> CMake </span> </a> </li> <li class=md-nav__item> <a href=../../../integration/package_managers/ class=md-nav__link> <span class=md-ellipsis> Package Managers </span> </a> </li> <li class=md-nav__item> <a href=../../../integration/pkg-config/ class=md-nav__link> <span class=md-ellipsis> Pkg-config </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--active md-nav__item--section md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4 checked> <label class=md-nav__link for=__nav_4 id=__nav_4_label tabindex> <span class=md-ellipsis> API Documentation </span> <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_4_label aria-expanded=true> <label class=md-nav__title for=__nav_4> <span class="md-nav__icon md-icon"></span> API Documentation </label> <ul class=md-nav__list data-md-scrollfix> <li class="md-nav__item md-nav__item--active md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_1 checked> <div class="md-nav__link md-nav__container"> <a href=../ class="md-nav__link "> <span class=md-ellipsis> basic_json </span> </a> <label class="md-nav__link " for=__nav_4_1 id=__nav_4_1_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_1_label aria-expanded=true> <label class=md-nav__title for=__nav_4_1> <span class="md-nav__icon md-icon"></span> basic_json </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../basic_json/ class=md-nav__link> <span class=md-ellipsis> (Constructor) </span> </a> </li> <li class=md-nav__item> <a href=../~basic_json/ class=md-nav__link> <span class=md-ellipsis> (Destructor) </span> </a> </li> <li class=md-nav__item> <a href=../accept/ class=md-nav__link> <span class=md-ellipsis> accept </span> </a> </li> <li class=md-nav__item> <a href=../array/ class=md-nav__link> <span class=md-ellipsis> array </span> </a> </li> <li class=md-nav__item> <a href=../array_t/ class=md-nav__link> <span class=md-ellipsis> array_t </span> </a> </li> <li class=md-nav__item> <a href=../at/ class=md-nav__link> <span class=md-ellipsis> at </span> </a> </li> <li class=md-nav__item> <a href=../back/ class=md-nav__link> <span class=md-ellipsis> back </span> </a> </li> <li class=md-nav__item> <a href=../begin/ class=md-nav__link> <span class=md-ellipsis> begin </span> </a> </li> <li class=md-nav__item> <a href=../binary/ class=md-nav__link> <span class=md-ellipsis> binary </span> </a> </li> <li class=md-nav__item> <a href=../binary_t/ class=md-nav__link> <span class=md-ellipsis> binary_t </span> </a> </li> <li class=md-nav__item> <a href=../boolean_t/ class=md-nav__link> <span class=md-ellipsis> boolean_t </span> </a> </li> <li class=md-nav__item> <a href=../cbegin/ class=md-nav__link> <span class=md-ellipsis> cbegin </span> </a> </li> <li class=md-nav__item> <a href=../cbor_tag_handler_t/ class=md-nav__link> <span class=md-ellipsis> cbor_tag_handler_t </span> </a> </li> <li class=md-nav__item> <a href=../cend/ class=md-nav__link> <span class=md-ellipsis> cend </span> </a> </li> <li class=md-nav__item> <a href=../clear/ class=md-nav__link> <span class=md-ellipsis> clear </span> </a> </li> <li class=md-nav__item> <a href=../contains/ class=md-nav__link> <span class=md-ellipsis> contains </span> </a> </li> <li class=md-nav__item> <a href=../count/ class=md-nav__link> <span class=md-ellipsis> count </span> </a> </li> <li class=md-nav__item> <a href=../crbegin/ class=md-nav__link> <span class=md-ellipsis> crbegin </span> </a> </li> <li class=md-nav__item> <a href=../crend/ class=md-nav__link> <span class=md-ellipsis> crend </span> </a> </li> <li class=md-nav__item> <a href=../default_object_comparator_t/ class=md-nav__link> <span class=md-ellipsis> default_object_comparator_t </span> </a> </li> <li class=md-nav__item> <a href=../diff/ class=md-nav__link> <span class=md-ellipsis> diff </span> </a> </li> <li class=md-nav__item> <a href=../dump/ class=md-nav__link> <span class=md-ellipsis> dump </span> </a> </li> <li class=md-nav__item> <a href=../emplace/ class=md-nav__link> <span class=md-ellipsis> emplace </span> </a> </li> <li class=md-nav__item> <a href=../emplace_back/ class=md-nav__link> <span class=md-ellipsis> emplace_back </span> </a> </li> <li class=md-nav__item> <a href=../empty/ class=md-nav__link> <span class=md-ellipsis> empty </span> </a> </li> <li class=md-nav__item> <a href=../end/ class=md-nav__link> <span class=md-ellipsis> end </span> </a> </li> <li class=md-nav__item> <a href=../end_pos/ class=md-nav__link> <span class=md-ellipsis> end_pos </span> </a> </li> <li class=md-nav__item> <a href=../erase/ class=md-nav__link> <span class=md-ellipsis> erase </span> </a> </li> <li class=md-nav__item> <a href=../error_handler_t/ class=md-nav__link> <span class=md-ellipsis> error_handler_t </span> </a> </li> <li class=md-nav__item> <a href=../exception/ class=md-nav__link> <span class=md-ellipsis> exception </span> </a> </li> <li class=md-nav__item> <a href=../find/ class=md-nav__link> <span class=md-ellipsis> find </span> </a> </li> <li class=md-nav__item> <a href=../flatten/ class=md-nav__link> <span class=md-ellipsis> flatten </span> </a> </li> <li class=md-nav__item> <a href=../from_bjdata/ class=md-nav__link> <span class=md-ellipsis> from_bjdata </span> </a> </li> <li class=md-nav__item> <a href=../from_bson/ class=md-nav__link> <span class=md-ellipsis> from_bson </span> </a> </li> <li class=md-nav__item> <a href=../from_cbor/ class=md-nav__link> <span class=md-ellipsis> from_cbor </span> </a> </li> <li class=md-nav__item> <a href=../from_msgpack/ class=md-nav__link> <span class=md-ellipsis> from_msgpack </span> </a> </li> <li class=md-nav__item> <a href=../from_ubjson/ class=md-nav__link> <span class=md-ellipsis> from_ubjson </span> </a> </li> <li class=md-nav__item> <a href=../front/ class=md-nav__link> <span class=md-ellipsis> front </span> </a> </li> <li class=md-nav__item> <a href=../get/ class=md-nav__link> <span class=md-ellipsis> get </span> </a> </li> <li class=md-nav__item> <a href=../get_allocator/ class=md-nav__link> <span class=md-ellipsis> get_allocator </span> </a> </li> <li class=md-nav__item> <a href=../get_binary/ class=md-nav__link> <span class=md-ellipsis> get_binary </span> </a> </li> <li class=md-nav__item> <a href=../get_ptr/ class=md-nav__link> <span class=md-ellipsis> get_ptr </span> </a> </li> <li class=md-nav__item> <a href=../get_ref/ class=md-nav__link> <span class=md-ellipsis> get_ref </span> </a> </li> <li class=md-nav__item> <a href=../get_to/ class=md-nav__link> <span class=md-ellipsis> get_to </span> </a> </li> <li class=md-nav__item> <a href=../std_hash/ class=md-nav__link> <span class=md-ellipsis> std::hash&lt;basic_json&gt; </span> </a> </li> <li class=md-nav__item> <a href=../input_format_t/ class=md-nav__link> <span class=md-ellipsis> input_format_t </span> </a> </li> <li class="md-nav__item md-nav__item--active"> <input class="md-nav__toggle md-toggle" type=checkbox id=__toc> <label class="md-nav__link md-nav__link--active" for=__toc> <span class=md-ellipsis> insert </span> <span class="md-nav__icon md-icon"></span> </label> <a href=./ class="md-nav__link md-nav__link--active"> <span class=md-ellipsis> insert </span> </a> <nav class="md-nav md-nav--secondary" aria-label="Table of contents"> <label class=md-nav__title for=__toc> <span class="md-nav__icon md-icon"></span> Table of contents </label> <ul class=md-nav__list data-md-component=toc data-md-scrollfix> <li class=md-nav__item> <a href=#iterator-invalidation class=md-nav__link> <span class=md-ellipsis> Iterator invalidation </span> </a> </li> <li class=md-nav__item> <a href=#parameters class=md-nav__link> <span class=md-ellipsis> Parameters </span> </a> </li> <li class=md-nav__item> <a href=#return-value class=md-nav__link> <span class=md-ellipsis> Return value </span> </a> </li> <li class=md-nav__item> <a href=#exception-safety class=md-nav__link> <span class=md-ellipsis> Exception safety </span> </a> </li> <li class=md-nav__item> <a href=#exceptions class=md-nav__link> <span class=md-ellipsis> Exceptions </span> </a> </li> <li class=md-nav__item> <a href=#complexity class=md-nav__link> <span class=md-ellipsis> Complexity </span> </a> </li> <li class=md-nav__item> <a href=#examples class=md-nav__link> <span class=md-ellipsis> Examples </span> </a> </li> <li class=md-nav__item> <a href=#see-also class=md-nav__link> <span class=md-ellipsis> See also </span> </a> </li> <li class=md-nav__item> <a href=#version-history class=md-nav__link> <span class=md-ellipsis> Version history </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../invalid_iterator/ class=md-nav__link> <span class=md-ellipsis> invalid_iterator </span> </a> </li> <li class=md-nav__item> <a href=../is_array/ class=md-nav__link> <span class=md-ellipsis> is_array </span> </a> </li> <li class=md-nav__item> <a href=../is_binary/ class=md-nav__link> <span class=md-ellipsis> is_binary </span> </a> </li> <li class=md-nav__item> <a href=../is_boolean/ class=md-nav__link> <span class=md-ellipsis> is_boolean </span> </a> </li> <li class=md-nav__item> <a href=../is_discarded/ class=md-nav__link> <span class=md-ellipsis> is_discarded </span> </a> </li> <li class=md-nav__item> <a href=../is_null/ class=md-nav__link> <span class=md-ellipsis> is_null </span> </a> </li> <li class=md-nav__item> <a href=../is_number/ class=md-nav__link> <span class=md-ellipsis> is_number </span> </a> </li> <li class=md-nav__item> <a href=../is_number_float/ class=md-nav__link> <span class=md-ellipsis> is_number_float </span> </a> </li> <li class=md-nav__item> <a href=../is_number_integer/ class=md-nav__link> <span class=md-ellipsis> is_number_integer </span> </a> </li> <li class=md-nav__item> <a href=../is_number_unsigned/ class=md-nav__link> <span class=md-ellipsis> is_number_unsigned </span> </a> </li> <li class=md-nav__item> <a href=../is_object/ class=md-nav__link> <span class=md-ellipsis> is_object </span> </a> </li> <li class=md-nav__item> <a href=../is_primitive/ class=md-nav__link> <span class=md-ellipsis> is_primitive </span> </a> </li> <li class=md-nav__item> <a href=../is_string/ class=md-nav__link> <span class=md-ellipsis> is_string </span> </a> </li> <li class=md-nav__item> <a href=../is_structured/ class=md-nav__link> <span class=md-ellipsis> is_structured </span> </a> </li> <li class=md-nav__item> <a href=../items/ class=md-nav__link> <span class=md-ellipsis> items </span> </a> </li> <li class=md-nav__item> <a href=../json_base_class_t/ class=md-nav__link> <span class=md-ellipsis> json_base_class_t </span> </a> </li> <li class=md-nav__item> <a href=../json_serializer/ class=md-nav__link> <span class=md-ellipsis> json_serializer </span> </a> </li> <li class=md-nav__item> <a href=../max_size/ class=md-nav__link> <span class=md-ellipsis> max_size </span> </a> </li> <li class=md-nav__item> <a href=../meta/ class=md-nav__link> <span class=md-ellipsis> meta </span> </a> </li> <li class=md-nav__item> <a href=../merge_patch/ class=md-nav__link> <span class=md-ellipsis> merge_patch </span> </a> </li> <li class=md-nav__item> <a href=../number_float_t/ class=md-nav__link> <span class=md-ellipsis> number_float_t </span> </a> </li> <li class=md-nav__item> <a href=../number_integer_t/ class=md-nav__link> <span class=md-ellipsis> number_integer_t </span> </a> </li> <li class=md-nav__item> <a href=../number_unsigned_t/ class=md-nav__link> <span class=md-ellipsis> number_unsigned_t </span> </a> </li> <li class=md-nav__item> <a href=../object/ class=md-nav__link> <span class=md-ellipsis> object </span> </a> </li> <li class=md-nav__item> <a href=../object_comparator_t/ class=md-nav__link> <span class=md-ellipsis> object_comparator_t </span> </a> </li> <li class=md-nav__item> <a href=../object_t/ class=md-nav__link> <span class=md-ellipsis> object_t </span> </a> </li> <li class=md-nav__item> <a href=../operator_ValueType/ class=md-nav__link> <span class=md-ellipsis> operator ValueType </span> </a> </li> <li class=md-nav__item> <a href=../operator_value_t/ class=md-nav__link> <span class=md-ellipsis> operator value_t </span> </a> </li> <li class=md-nav__item> <a href=../operator%5B%5D/ class=md-nav__link> <span class=md-ellipsis> operator[] </span> </a> </li> <li class=md-nav__item> <a href=../operator%3D/ class=md-nav__link> <span class=md-ellipsis> operator= </span> </a> </li> <li class=md-nav__item> <a href=../operator%2B%3D/ class=md-nav__link> <span class=md-ellipsis> operator+= </span> </a> </li> <li class=md-nav__item> <a href=../operator_eq/ class=md-nav__link> <span class=md-ellipsis> operator== </span> </a> </li> <li class=md-nav__item> <a href=../operator_ne/ class=md-nav__link> <span class=md-ellipsis> operator!= </span> </a> </li> <li class=md-nav__item> <a href=../operator_lt/ class=md-nav__link> <span class=md-ellipsis> operator< </span> </a> </li> <li class=md-nav__item> <a href=../operator_gt/ class=md-nav__link> <span class=md-ellipsis> operator> </span> </a> </li> <li class=md-nav__item> <a href=../operator_le/ class=md-nav__link> <span class=md-ellipsis> operator<= </span> </a> </li> <li class=md-nav__item> <a href=../operator_ge/ class=md-nav__link> <span class=md-ellipsis> operator>= </span> </a> </li> <li class=md-nav__item> <a href=../operator_spaceship/ class=md-nav__link> <span class=md-ellipsis> operator<=> </span> </a> </li> <li class=md-nav__item> <a href=../out_of_range/ class=md-nav__link> <span class=md-ellipsis> out_of_range </span> </a> </li> <li class=md-nav__item> <a href=../other_error/ class=md-nav__link> <span class=md-ellipsis> other_error </span> </a> </li> <li class=md-nav__item> <a href=../parse/ class=md-nav__link> <span class=md-ellipsis> parse </span> </a> </li> <li class=md-nav__item> <a href=../parse_error/ class=md-nav__link> <span class=md-ellipsis> parse_error </span> </a> </li> <li class=md-nav__item> <a href=../parse_event_t/ class=md-nav__link> <span class=md-ellipsis> parse_event_t </span> </a> </li> <li class=md-nav__item> <a href=../parser_callback_t/ class=md-nav__link> <span class=md-ellipsis> parser_callback_t </span> </a> </li> <li class=md-nav__item> <a href=../patch/ class=md-nav__link> <span class=md-ellipsis> patch </span> </a> </li> <li class=md-nav__item> <a href=../patch_inplace/ class=md-nav__link> <span class=md-ellipsis> patch_inplace </span> </a> </li> <li class=md-nav__item> <a href=../push_back/ class=md-nav__link> <span class=md-ellipsis> push_back </span> </a> </li> <li class=md-nav__item> <a href=../rbegin/ class=md-nav__link> <span class=md-ellipsis> rbegin </span> </a> </li> <li class=md-nav__item> <a href=../rend/ class=md-nav__link> <span class=md-ellipsis> rend </span> </a> </li> <li class=md-nav__item> <a href=../sax_parse/ class=md-nav__link> <span class=md-ellipsis> sax_parse </span> </a> </li> <li class=md-nav__item> <a href=../size/ class=md-nav__link> <span class=md-ellipsis> size </span> </a> </li> <li class=md-nav__item> <a href=../start_pos/ class=md-nav__link> <span class=md-ellipsis> start_pos </span> </a> </li> <li class=md-nav__item> <a href=../string_t/ class=md-nav__link> <span class=md-ellipsis> string_t </span> </a> </li> <li class=md-nav__item> <a href=../swap/ class=md-nav__link> <span class=md-ellipsis> swap </span> </a> </li> <li class=md-nav__item> <a href=../std_swap/ class=md-nav__link> <span class=md-ellipsis> std::swap&lt;basic_json&gt; </span> </a> </li> <li class=md-nav__item> <a href=../to_bjdata/ class=md-nav__link> <span class=md-ellipsis> to_bjdata </span> </a> </li> <li class=md-nav__item> <a href=../to_bson/ class=md-nav__link> <span class=md-ellipsis> to_bson </span> </a> </li> <li class=md-nav__item> <a href=../to_cbor/ class=md-nav__link> <span class=md-ellipsis> to_cbor </span> </a> </li> <li class=md-nav__item> <a href=../to_msgpack/ class=md-nav__link> <span class=md-ellipsis> to_msgpack </span> </a> </li> <li class=md-nav__item> <a href=../to_string/ class=md-nav__link> <span class=md-ellipsis> to_string </span> </a> </li> <li class=md-nav__item> <a href=../to_ubjson/ class=md-nav__link> <span class=md-ellipsis> to_ubjson </span> </a> </li> <li class=md-nav__item> <a href=../type/ class=md-nav__link> <span class=md-ellipsis> type </span> </a> </li> <li class=md-nav__item> <a href=../type_error/ class=md-nav__link> <span class=md-ellipsis> type_error </span> </a> </li> <li class=md-nav__item> <a href=../type_name/ class=md-nav__link> <span class=md-ellipsis> type_name </span> </a> </li> <li class=md-nav__item> <a href=../unflatten/ class=md-nav__link> <span class=md-ellipsis> unflatten </span> </a> </li> <li class=md-nav__item> <a href=../update/ class=md-nav__link> <span class=md-ellipsis> update </span> </a> </li> <li class=md-nav__item> <a href=../value/ class=md-nav__link> <span class=md-ellipsis> value </span> </a> </li> <li class=md-nav__item> <a href=../value_t/ class=md-nav__link> <span class=md-ellipsis> value_t </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_2> <div class="md-nav__link md-nav__container"> <a href=../../byte_container_with_subtype/ class="md-nav__link "> <span class=md-ellipsis> byte_container_with_subtype </span> </a> <label class="md-nav__link " for=__nav_4_2 id=__nav_4_2_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_2_label aria-expanded=false> <label class=md-nav__title for=__nav_4_2> <span class="md-nav__icon md-icon"></span> byte_container_with_subtype </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../byte_container_with_subtype/byte_container_with_subtype/ class=md-nav__link> <span class=md-ellipsis> (constructor) </span> </a> </li> <li class=md-nav__item> <a href=../../byte_container_with_subtype/clear_subtype/ class=md-nav__link> <span class=md-ellipsis> clear_subtype </span> </a> </li> <li class=md-nav__item> <a href=../../byte_container_with_subtype/has_subtype/ class=md-nav__link> <span class=md-ellipsis> has_subtype </span> </a> </li> <li class=md-nav__item> <a href=../../byte_container_with_subtype/set_subtype/ class=md-nav__link> <span class=md-ellipsis> set_subtype </span> </a> </li> <li class=md-nav__item> <a href=../../byte_container_with_subtype/subtype/ class=md-nav__link> <span class=md-ellipsis> subtype </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_3> <div class="md-nav__link md-nav__container"> <a href=../../adl_serializer/ class="md-nav__link "> <span class=md-ellipsis> adl_serializer </span> </a> <label class="md-nav__link " for=__nav_4_3 id=__nav_4_3_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_3_label aria-expanded=false> <label class=md-nav__title for=__nav_4_3> <span class="md-nav__icon md-icon"></span> adl_serializer </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../adl_serializer/from_json/ class=md-nav__link> <span class=md-ellipsis> from_json </span> </a> </li> <li class=md-nav__item> <a href=../../adl_serializer/to_json/ class=md-nav__link> <span class=md-ellipsis> to_json </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../json/ class=md-nav__link> <span class=md-ellipsis> json </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_5> <div class="md-nav__link md-nav__container"> <a href=../../json_pointer/ class="md-nav__link "> <span class=md-ellipsis> json_pointer </span> </a> <label class="md-nav__link " for=__nav_4_5 id=__nav_4_5_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_5_label aria-expanded=false> <label class=md-nav__title for=__nav_4_5> <span class="md-nav__icon md-icon"></span> json_pointer </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../json_pointer/json_pointer/ class=md-nav__link> <span class=md-ellipsis> (Constructor) </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/back/ class=md-nav__link> <span class=md-ellipsis> back </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/empty/ class=md-nav__link> <span class=md-ellipsis> empty </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/front/ class=md-nav__link> <span class=md-ellipsis> front </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_string_t/ class=md-nav__link> <span class=md-ellipsis> operator string_t </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_eq/ class=md-nav__link> <span class=md-ellipsis> operator== </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_ne/ class=md-nav__link> <span class=md-ellipsis> operator!= </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_slash/ class=md-nav__link> <span class=md-ellipsis> operator/ </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_slasheq/ class=md-nav__link> <span class=md-ellipsis> operator/= </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/parent_pointer/ class=md-nav__link> <span class=md-ellipsis> parent_pointer </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/pop_back/ class=md-nav__link> <span class=md-ellipsis> pop_back </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/pop_front/ class=md-nav__link> <span class=md-ellipsis> pop_front </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/push_back/ class=md-nav__link> <span class=md-ellipsis> push_back </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/push_front/ class=md-nav__link> <span class=md-ellipsis> push_front </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/string_t/ class=md-nav__link> <span class=md-ellipsis> string_t </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/to_string/ class=md-nav__link> <span class=md-ellipsis> to_string </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_6> <div class="md-nav__link md-nav__container"> <a href=../../json_sax/ class="md-nav__link "> <span class=md-ellipsis> json_sax </span> </a> <label class="md-nav__link " for=__nav_4_6 id=__nav_4_6_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_6_label aria-expanded=false> <label class=md-nav__title for=__nav_4_6> <span class="md-nav__icon md-icon"></span> json_sax </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../json_sax/binary/ class=md-nav__link> <span class=md-ellipsis> binary </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/boolean/ class=md-nav__link> <span class=md-ellipsis> boolean </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/end_array/ class=md-nav__link> <span class=md-ellipsis> end_array </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/end_object/ class=md-nav__link> <span class=md-ellipsis> end_object </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/key/ class=md-nav__link> <span class=md-ellipsis> key </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/null/ class=md-nav__link> <span class=md-ellipsis> null </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/number_float/ class=md-nav__link> <span class=md-ellipsis> number_float </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/number_integer/ class=md-nav__link> <span class=md-ellipsis> number_integer </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/number_unsigned/ class=md-nav__link> <span class=md-ellipsis> number_unsigned </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/parse_error/ class=md-nav__link> <span class=md-ellipsis> parse_error </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/start_array/ class=md-nav__link> <span class=md-ellipsis> start_array </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/start_object/ class=md-nav__link> <span class=md-ellipsis> start_object </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/string/ class=md-nav__link> <span class=md-ellipsis> string </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../operator_ltlt/ class=md-nav__link> <span class=md-ellipsis> operator<<(basic_json), operator<<(json_pointer) </span> </a> </li> <li class=md-nav__item> <a href=../../operator_gtgt/ class=md-nav__link> <span class=md-ellipsis> operator>>(basic_json) </span> </a> </li> <li class=md-nav__item> <a href=../../operator_literal_json/ class=md-nav__link> <span class=md-ellipsis> operator""_json </span> </a> </li> <li class=md-nav__item> <a href=../../operator_literal_json_pointer/ class=md-nav__link> <span class=md-ellipsis> operator""_json_pointer </span> </a> </li> <li class=md-nav__item> <a href=../../ordered_json/ class=md-nav__link> <span class=md-ellipsis> ordered_json </span> </a> </li> <li class=md-nav__item> <a href=../../ordered_map/ class=md-nav__link> <span class=md-ellipsis> ordered_map </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_13> <div class="md-nav__link md-nav__container"> <a href=../../macros/ class="md-nav__link "> <span class=md-ellipsis> macros </span> </a> <label class="md-nav__link " for=__nav_4_13 id=__nav_4_13_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_13_label aria-expanded=false> <label class=md-nav__title for=__nav_4_13> <span class="md-nav__icon md-icon"></span> macros </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../macros/json_assert/ class=md-nav__link> <span class=md-ellipsis> JSON_ASSERT </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_brace_init_copy_semantics/ class=md-nav__link> <span class=md-ellipsis> JSON_BRACE_INIT_COPY_SEMANTICS </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_throw_user/ class=md-nav__link> <span class=md-ellipsis> JSON_CATCH_USER, JSON_THROW_USER, JSON_TRY_USER </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_diagnostics/ class=md-nav__link> <span class=md-ellipsis> JSON_DIAGNOSTICS </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_diagnostic_positions/ class=md-nav__link> <span class=md-ellipsis> JSON_DIAGNOSTIC_POSITIONS </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_disable_enum_serialization/ class=md-nav__link> <span class=md-ellipsis> JSON_DISABLE_ENUM_SERIALIZATION </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_has_cpp_11/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_CPP_11, JSON_HAS_CPP_14, JSON_HAS_CPP_17, JSON_HAS_CPP_20 </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_has_filesystem/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_EXPERIMENTAL_FILESYSTEM, JSON_HAS_FILESYSTEM </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_has_ranges/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_RANGES </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_has_static_rtti/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_STATIC_RTTI </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_has_three_way_comparison/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_THREE_WAY_COMPARISON </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_noexception/ class=md-nav__link> <span class=md-ellipsis> JSON_NOEXCEPTION </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_no_io/ class=md-nav__link> <span class=md-ellipsis> JSON_NO_IO </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_skip_library_version_check/ class=md-nav__link> <span class=md-ellipsis> JSON_SKIP_LIBRARY_VERSION_CHECK </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_skip_unsupported_compiler_check/ class=md-nav__link> <span class=md-ellipsis> JSON_SKIP_UNSUPPORTED_COMPILER_CHECK </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_use_global_udls/ class=md-nav__link> <span class=md-ellipsis> JSON_USE_GLOBAL_UDLS </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_use_implicit_conversions/ class=md-nav__link> <span class=md-ellipsis> JSON_USE_IMPLICIT_CONVERSIONS </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_use_legacy_discarded_value_comparison/ class=md-nav__link> <span class=md-ellipsis> JSON_USE_LEGACY_DISCARDED_VALUE_COMPARISON </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_define_derived_type/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_ONLY_SERIALIZE, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_define_type_intrusive/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_TYPE_INTRUSIVE, NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_TYPE_INTRUSIVE_ONLY_SERIALIZE </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_define_type_non_intrusive/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_define_type_with_names/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_TYPE_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_namespace/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_NAMESPACE </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_namespace_begin/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_NAMESPACE_BEGIN, NLOHMANN_JSON_NAMESPACE_END </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_namespace_no_version/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_NAMESPACE_NO_VERSION </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_serialize_enum/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_SERIALIZE_ENUM </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_serialize_enum_strict/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_SERIALIZE_ENUM_STRICT </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_version_major/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_VERSION_MAJOR, NLOHMANN_JSON_VERSION_MINOR, NLOHMANN_JSON_VERSION_PATCH </span> </a> </li> </ul> </nav> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_5> <div class="md-nav__link md-nav__container"> <a href=../../../community/ class="md-nav__link "> <span class=md-ellipsis> Community </span> </a> <label class="md-nav__link " for=__nav_5 id=__nav_5_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_5_label aria-expanded=false> <label class=md-nav__title for=__nav_5> <span class="md-nav__icon md-icon"></span> Community </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../community/code_of_conduct/ class=md-nav__link> <span class=md-ellipsis> Code of Conduct </span> </a> </li> <li class=md-nav__item> <a href=../../../community/contribution_guidelines/ class=md-nav__link> <span class=md-ellipsis> Contribution Guidelines </span> </a> </li> <li class=md-nav__item> <a href=../../../community/quality_assurance/ class=md-nav__link> <span class=md-ellipsis> Quality assurance </span> </a> </li> <li class=md-nav__item> <a href=../../../community/governance/ class=md-nav__link> <span class=md-ellipsis> Governance </span> </a> </li> <li class=md-nav__item> <a href=../../../community/security_policy/ class=md-nav__link> <span class=md-ellipsis> Security Policy </span> </a> </li> </ul> </nav> </li> </ul> </nav> </div> </div> </div> <div class="md-sidebar md-sidebar--secondary" data-md-component=sidebar data-md-type=toc> <div class=md-sidebar__scrollwrap> <div class=md-sidebar__inner> <nav class="md-nav md-nav--secondary" aria-label="Table of contents"> <label class=md-nav__title for=__toc> <span class="md-nav__icon md-icon"></span> Table of contents </label> <ul class=md-nav__list data-md-component=toc data-md-scrollfix> <li class=md-nav__item> <a href=#iterator-invalidation class=md-nav__link> <span class=md-ellipsis> Iterator invalidation </span> </a> </li> <li class=md-nav__item> <a href=#parameters class=md-nav__link> <span class=md-ellipsis> Parameters </span> </a> </li> <li class=md-nav__item> <a href=#return-value class=md-nav__link> <span class=md-ellipsis> Return value </span> </a> </li> <li class=md-nav__item> <a href=#exception-safety class=md-nav__link> <span class=md-ellipsis> Exception safety </span> </a> </li> <li class=md-nav__item> <a href=#exceptions class=md-nav__link> <span class=md-ellipsis> Exceptions </span> </a> </li> <li class=md-nav__item> <a href=#complexity class=md-nav__link> <span class=md-ellipsis> Complexity </span> </a> </li> <li class=md-nav__item> <a href=#examples class=md-nav__link> <span class=md-ellipsis> Examples </span> </a> </li> <li class=md-nav__item> <a href=#see-also class=md-nav__link> <span class=md-ellipsis> See also </span> </a> </li> <li class=md-nav__item> <a href=#version-history class=md-nav__link> <span class=md-ellipsis> Version history </span> </a> </li> </ul> </nav> </div> </div> </div> <div class=md-content data-md-component=content> <article class="md-content__inner md-typeset"> <a href="https://github.com/nlohmann/json/edit/develop/docs/mkdocs/docs/api/basic_json/insert.md" title="Edit this page" class="md-content__button md-icon" rel="edit"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M10 20H6V4h7v5h5v3.1l2-2V8l-6-6H6c-1.1 0-2 .9-2 2v16c0 1.1.9 2 2 2h4zm10.2-7c.1 0 .3.1.4.2l1.3 1.3c.2.2.2.6 0 .8l-1 1-2.1-2.1 1-1c.1-.1.2-.2.4-.2m0 3.9L14.1 23H12v-2.1l6.1-6.1z"/></svg> </a> <a href="https://github.com/nlohmann/json/raw/develop/docs/mkdocs/docs/api/basic_json/insert.md" title="View source of this page" class="md-content__button md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M17 18c.56 0 1 .44 1 1s-.44 1-1 1-1-.44-1-1 .44-1 1-1m0-3c-2.73 0-5.06 1.66-6 4 .94 2.34 3.27 4 6 4s5.06-1.66 6-4c-.94-2.34-3.27-4-6-4m0 6.5a2.5 2.5 0 0 1-2.5-2.5 2.5 2.5 0 0 1 2.5-2.5 2.5 2.5 0 0 1 2.5 2.5 2.5 2.5 0 0 1-2.5 2.5M9.27 20H6V4h7v5h5v4.07c.7.08 1.36.25 2 .49V8l-6-6H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h4.5a8.2 8.2 0 0 1-1.23-2"/></svg> </a> <h1 id=nlohmannbasic_jsoninsert><small>nlohmann::basic_json::</small>insert<a class=headerlink href=#nlohmannbasic_jsoninsert title="Permanent link">&para;</a></h1> <div class=highlight><pre><span></span><code><span class=c1>// (1)</span>
 <span class=n>iterator</span><span class=w> </span><span class=nf>insert</span><span class=p>(</span><span class=n>const_iterator</span><span class=w> </span><span class=n>pos</span><span class=p>,</span><span class=w> </span><span class=k>const</span><span class=w> </span><span class=n>basic_json</span><span class=o>&amp;</span><span class=w> </span><span class=n>val</span><span class=p>);</span>
 <span class=n>iterator</span><span class=w> </span><span class=nf>insert</span><span class=p>(</span><span class=n>const_iterator</span><span class=w> </span><span class=n>pos</span><span class=p>,</span><span class=w> </span><span class=n>basic_json</span><span class=o>&amp;&amp;</span><span class=w> </span><span class=n>val</span><span class=p>);</span>
 
@@ -13,7 +13,7 @@
 
 <span class=c1>// (5)</span>
 <span class=kt>void</span><span class=w> </span><span class=nf>insert</span><span class=p>(</span><span class=n>const_iterator</span><span class=w> </span><span class=n>first</span><span class=p>,</span><span class=w> </span><span class=n>const_iterator</span><span class=w> </span><span class=n>last</span><span class=p>);</span>
-</code></pre></div> <ol> <li>Inserts element <code>val</code> into an array before iterator <code>pos</code>.</li> <li>Inserts <code>cnt</code> copies of <code>val</code> into an array before iterator <code>pos</code>.</li> <li>Inserts elements from range <code>[first, last)</code> into an array before iterator <code>pos</code>.</li> <li>Inserts elements from initializer list <code>ilist</code> into an array before iterator <code>pos</code>.</li> <li>Inserts elements from range <code>[first, last)</code> into an object.</li> </ol> <h2 id=iterator-invalidation>Iterator invalidation<a class=headerlink href=#iterator-invalidation title="Permanent link">&para;</a></h2> <p>For all cases where an element is added to an <strong>array</strong>, a reallocation can happen, in which case all iterators (including the <a href=../end/ ><code>end()</code></a> iterator) and all references to the elements are invalidated. Otherwise, only the <a href=../end/ ><code>end()</code></a> iterator is invalidated. Also, any iterator or reference after the insertion point will point to the same index, which is now a different value.</p> <p>For <a href=../../ordered_json/ ><code>ordered_json</code></a>, also adding an element to an <strong>object</strong> can yield a reallocation which again invalidates all iterators and all references. Also, any iterator or reference after the insertion point will point to the same index, which is now a different value.</p> <h2 id=parameters>Parameters<a class=headerlink href=#parameters title="Permanent link">&para;</a></h2> <dl> <dt><code>pos</code> (in)</dt> <dd>iterator before which the content will be inserted; may be the <code>end()</code> iterator</dd> <dt><code>val</code> (in)</dt> <dd>value to insert</dd> <dt><code>cnt</code> (in)</dt> <dd>number of copies of <code>val</code> to insert</dd> <dt><code>first</code> (in)</dt> <dd>the start of the range of elements to insert</dd> <dt><code>last</code> (in)</dt> <dd>the end of the range of elements to insert</dd> <dt><code>ilist</code> (in)</dt> <dd>initializer list to insert the values from</dd> </dl> <h2 id=return-value>Return value<a class=headerlink href=#return-value title="Permanent link">&para;</a></h2> <ol> <li>iterator pointing to the inserted <code>val</code>.</li> <li>iterator pointing to the first element inserted, or <code>pos</code> if <code class=highlight><span class=n>cnt</span><span class=o>==</span><span class=mi>0</span></code></li> <li>iterator pointing to the first element inserted, or <code>pos</code> if <code class=highlight><span class=n>first</span><span class=o>==</span><span class=n>last</span></code></li> <li>iterator pointing to the first element inserted, or <code>pos</code> if <code>ilist</code> is empty</li> <li>(none)</li> </ol> <h2 id=exception-safety>Exception safety<a class=headerlink href=#exception-safety title="Permanent link">&para;</a></h2> <p>Strong exception safety: if an exception occurs, the original value stays intact.</p> <h2 id=exceptions>Exceptions<a class=headerlink href=#exceptions title="Permanent link">&para;</a></h2> <ol> <li>The function can throw the following exceptions:<ul> <li>Throws <a href=../../../home/exceptions/#jsonexceptiontype_error309><code>type_error.309</code></a> if called on <abbr title="JavaScript Object Notation">JSON</abbr> values other than arrays; example: <code>"cannot use insert() with string"</code></li> <li>Throws <a href=../../../home/exceptions/#jsonexceptioninvalid_iterator202><code>invalid_iterator.202</code></a> if called on an iterator which does not belong to the current <abbr title="JavaScript Object Notation">JSON</abbr> value; example: <code>"iterator does not fit current value"</code></li> </ul> </li> <li>The function can throw the following exceptions:<ul> <li>Throws <a href=../../../home/exceptions/#jsonexceptiontype_error309><code>type_error.309</code></a> if called on <abbr title="JavaScript Object Notation">JSON</abbr> values other than arrays; example: <code>"cannot use insert() with string"</code></li> <li>Throws <a href=../../../home/exceptions/#jsonexceptioninvalid_iterator202><code>invalid_iterator.202</code></a> if called on an iterator which does not belong to the current <abbr title="JavaScript Object Notation">JSON</abbr> value; example: <code>"iterator does not fit current value"</code></li> </ul> </li> <li>The function can throw the following exceptions:<ul> <li>Throws <a href=../../../home/exceptions/#jsonexceptiontype_error309><code>type_error.309</code></a> if called on <abbr title="JavaScript Object Notation">JSON</abbr> values other than arrays; example: <code>"cannot use insert() with string"</code></li> <li>Throws <a href=../../../home/exceptions/#jsonexceptioninvalid_iterator202><code>invalid_iterator.202</code></a> if called on an iterator which does not belong to the current <abbr title="JavaScript Object Notation">JSON</abbr> value; example: <code>"iterator does not fit current value"</code></li> <li>Throws <a href=../../../home/exceptions/#jsonexceptioninvalid_iterator210><code>invalid_iterator.210</code></a> if <code>first</code> and <code>last</code> do not belong to the same <abbr title="JavaScript Object Notation">JSON</abbr> value; example: <code>"iterators do not fit"</code></li> <li>Throws <a href=../../../home/exceptions/#jsonexceptioninvalid_iterator211><code>invalid_iterator.211</code></a> if <code>first</code> or <code>last</code> are iterators into container for which insert is called; example: <code>"passed iterators may not belong to container"</code></li> </ul> </li> <li>The function can throw the following exceptions:<ul> <li>Throws <a href=../../../home/exceptions/#jsonexceptiontype_error309><code>type_error.309</code></a> if called on <abbr title="JavaScript Object Notation">JSON</abbr> values other than arrays; example: <code>"cannot use insert() with string"</code></li> <li>Throws <a href=../../../home/exceptions/#jsonexceptioninvalid_iterator202><code>invalid_iterator.202</code></a> if called on an iterator which does not belong to the current <abbr title="JavaScript Object Notation">JSON</abbr> value; example: <code>"iterator does not fit current value"</code></li> </ul> </li> <li>The function can throw the following exceptions:<ul> <li>Throws <a href=../../../home/exceptions/#jsonexceptiontype_error309><code>type_error.309</code></a> if called on <abbr title="JavaScript Object Notation">JSON</abbr> values other than objects; example: <code>"cannot use insert() with string"</code></li> <li>Throws <a href=../../../home/exceptions/#jsonexceptioninvalid_iterator202><code>invalid_iterator.202</code></a> if called on an iterator which does not belong to the current <abbr title="JavaScript Object Notation">JSON</abbr> value; example: <code>"iterator does not fit current value"</code></li> <li>Throws <a href=../../../home/exceptions/#jsonexceptioninvalid_iterator210><code>invalid_iterator.210</code></a> if <code>first</code> and <code>last</code> do not belong to the same <abbr title="JavaScript Object Notation">JSON</abbr> value; example: <code>"iterators do not fit"</code></li> </ul> </li> </ol> <h2 id=complexity>Complexity<a class=headerlink href=#complexity title="Permanent link">&para;</a></h2> <ol> <li>Constant plus linear in the distance between <code>pos</code> and end of the container.</li> <li>Linear in <code>cnt</code> plus linear in the distance between <code>pos</code> and end of the container.</li> <li>Linear in <code class=highlight><span class=n>std</span><span class=o>::</span><span class=n>distance</span><span class=p>(</span><span class=n>first</span><span class=p>,</span><span class=w> </span><span class=n>last</span><span class=p>)</span></code> plus linear in the distance between <code>pos</code> and end of the container.</li> <li>Linear in <code>ilist.size()</code> plus linear in the distance between <code>pos</code> and end of the container.</li> <li>Logarithmic: <code>O(N*log(size() + N))</code>, where <code>N</code> is the number of elements to insert.</li> </ol> <h2 id=examples>Examples<a class=headerlink href=#examples title="Permanent link">&para;</a></h2> <details class=example> <summary>Example (1): insert element into array</summary> <p>The example shows how <code>insert()</code> is used.</p> <div class=highlight><pre><span></span><code><span class=cp>#include</span><span class=w> </span><span class=cpf>&lt;iostream&gt;</span>
+</code></pre></div> <ol> <li>Inserts element <code>val</code> into an array before iterator <code>pos</code>.</li> <li>Inserts <code>cnt</code> copies of <code>val</code> into an array before iterator <code>pos</code>.</li> <li>Inserts elements from range <code>[first, last)</code> into an array before iterator <code>pos</code>.</li> <li>Inserts elements from initializer list <code>ilist</code> into an array before iterator <code>pos</code>.</li> <li>Inserts elements from range <code>[first, last)</code> into an object.</li> </ol> <h2 id=iterator-invalidation>Iterator invalidation<a class=headerlink href=#iterator-invalidation title="Permanent link">&para;</a></h2> <p>For all cases where an element is added to an <strong>array</strong>, a reallocation can happen, in which case all iterators (including the <a href=../end/ ><code>end()</code></a> iterator) and all references to the elements are invalidated. Otherwise, only the <a href=../end/ ><code>end()</code></a> iterator is invalidated. Also, any iterator or reference after the insertion point will point to the same index, which is now a different value.</p> <p>For <a href=../../ordered_json/ ><code>ordered_json</code></a>, also adding an element to an <strong>object</strong> can yield a reallocation which again invalidates all iterators and all references. Also, any iterator or reference after the insertion point will point to the same index, which is now a different value.</p> <h2 id=parameters>Parameters<a class=headerlink href=#parameters title="Permanent link">&para;</a></h2> <dl> <dt><code>pos</code> (in)</dt> <dd>iterator before which the content will be inserted; may be the <code>end()</code> iterator</dd> <dt><code>val</code> (in)</dt> <dd>value to insert</dd> <dt><code>cnt</code> (in)</dt> <dd>number of copies of <code>val</code> to insert</dd> <dt><code>first</code> (in)</dt> <dd>the start of the range of elements to insert</dd> <dt><code>last</code> (in)</dt> <dd>the end of the range of elements to insert</dd> <dt><code>ilist</code> (in)</dt> <dd>initializer list to insert the values from</dd> </dl> <h2 id=return-value>Return value<a class=headerlink href=#return-value title="Permanent link">&para;</a></h2> <ol> <li>iterator pointing to the inserted <code>val</code>.</li> <li>iterator pointing to the first element inserted, or <code>pos</code> if <code class=highlight><span class=n>cnt</span><span class=o>==</span><span class=mi>0</span></code></li> <li>iterator pointing to the first element inserted, or <code>pos</code> if <code class=highlight><span class=n>first</span><span class=o>==</span><span class=n>last</span></code></li> <li>iterator pointing to the first element inserted, or <code>pos</code> if <code>ilist</code> is empty</li> <li>(none)</li> </ol> <h2 id=exception-safety>Exception safety<a class=headerlink href=#exception-safety title="Permanent link">&para;</a></h2> <p>Strong exception safety: if an exception occurs, the original value stays intact.</p> <h2 id=exceptions>Exceptions<a class=headerlink href=#exceptions title="Permanent link">&para;</a></h2> <ol> <li>The function can throw the following exceptions:<ul> <li>Throws <a href=../../../home/exceptions/#jsonexceptiontype_error309><code>type_error.309</code></a> if called on <abbr title="JavaScript Object Notation">JSON</abbr> values other than arrays; example: <code>"cannot use insert() with string"</code></li> <li>Throws <a href=../../../home/exceptions/#jsonexceptioninvalid_iterator202><code>invalid_iterator.202</code></a> if called on an iterator which does not belong to the current <abbr title="JavaScript Object Notation">JSON</abbr> value; example: <code>"iterator does not fit current value"</code></li> </ul> </li> <li>The function can throw the following exceptions:<ul> <li>Throws <a href=../../../home/exceptions/#jsonexceptiontype_error309><code>type_error.309</code></a> if called on <abbr title="JavaScript Object Notation">JSON</abbr> values other than arrays; example: <code>"cannot use insert() with string"</code></li> <li>Throws <a href=../../../home/exceptions/#jsonexceptioninvalid_iterator202><code>invalid_iterator.202</code></a> if called on an iterator which does not belong to the current <abbr title="JavaScript Object Notation">JSON</abbr> value; example: <code>"iterator does not fit current value"</code></li> </ul> </li> <li>The function can throw the following exceptions:<ul> <li>Throws <a href=../../../home/exceptions/#jsonexceptiontype_error309><code>type_error.309</code></a> if called on <abbr title="JavaScript Object Notation">JSON</abbr> values other than arrays; example: <code>"cannot use insert() with string"</code></li> <li>Throws <a href=../../../home/exceptions/#jsonexceptioninvalid_iterator202><code>invalid_iterator.202</code></a> if called on an iterator which does not belong to the current <abbr title="JavaScript Object Notation">JSON</abbr> value; example: <code>"iterator does not fit current value"</code></li> <li>Throws <a href=../../../home/exceptions/#jsonexceptioninvalid_iterator210><code>invalid_iterator.210</code></a> if <code>first</code> and <code>last</code> do not belong to the same <abbr title="JavaScript Object Notation">JSON</abbr> value; example: <code>"iterators do not fit"</code></li> <li>Throws <a href=../../../home/exceptions/#jsonexceptioninvalid_iterator211><code>invalid_iterator.211</code></a> if <code>first</code> or <code>last</code> are iterators into container for which insert is called; example: <code>"passed iterators may not belong to container"</code></li> </ul> </li> <li>The function can throw the following exceptions:<ul> <li>Throws <a href=../../../home/exceptions/#jsonexceptiontype_error309><code>type_error.309</code></a> if called on <abbr title="JavaScript Object Notation">JSON</abbr> values other than arrays; example: <code>"cannot use insert() with string"</code></li> <li>Throws <a href=../../../home/exceptions/#jsonexceptioninvalid_iterator202><code>invalid_iterator.202</code></a> if called on an iterator which does not belong to the current <abbr title="JavaScript Object Notation">JSON</abbr> value; example: <code>"iterator does not fit current value"</code></li> </ul> </li> <li>The function can throw the following exceptions:<ul> <li>Throws <a href=../../../home/exceptions/#jsonexceptiontype_error309><code>type_error.309</code></a> if called on <abbr title="JavaScript Object Notation">JSON</abbr> values other than objects; example: <code>"cannot use insert() with string"</code></li> <li>Throws <a href=../../../home/exceptions/#jsonexceptioninvalid_iterator202><code>invalid_iterator.202</code></a> if <code>first</code> or <code>last</code> do not point to an object; example: <code>"iterators first and last must point to objects"</code></li> <li>Throws <a href=../../../home/exceptions/#jsonexceptioninvalid_iterator210><code>invalid_iterator.210</code></a> if <code>first</code> and <code>last</code> do not belong to the same <abbr title="JavaScript Object Notation">JSON</abbr> value; example: <code>"iterators do not fit"</code></li> </ul> </li> </ol> <h2 id=complexity>Complexity<a class=headerlink href=#complexity title="Permanent link">&para;</a></h2> <ol> <li>Constant plus linear in the distance between <code>pos</code> and end of the container.</li> <li>Linear in <code>cnt</code> plus linear in the distance between <code>pos</code> and end of the container.</li> <li>Linear in <code class=highlight><span class=n>std</span><span class=o>::</span><span class=n>distance</span><span class=p>(</span><span class=n>first</span><span class=p>,</span><span class=w> </span><span class=n>last</span><span class=p>)</span></code> plus linear in the distance between <code>pos</code> and end of the container.</li> <li>Linear in <code>ilist.size()</code> plus linear in the distance between <code>pos</code> and end of the container.</li> <li>Logarithmic: <code>O(N*log(size() + N))</code>, where <code>N</code> is the number of elements to insert.</li> </ol> <h2 id=examples>Examples<a class=headerlink href=#examples title="Permanent link">&para;</a></h2> <details class=example> <summary>Example (1): insert element into array</summary> <p>The example shows how <code>insert()</code> is used.</p> <div class=highlight><pre><span></span><code><span class=cp>#include</span><span class=w> </span><span class=cpf>&lt;iostream&gt;</span>
 <span class=cp>#include</span><span class=w> </span><span class=cpf>&lt;nlohmann/json.hpp&gt;</span>
 
 <span class=k>using</span><span class=w> </span><span class=n>json</span><span class=w> </span><span class=o>=</span><span class=w> </span><span class=n>nlohmann</span><span class=o>::</span><span class=n>json</span><span class=p>;</span>
@@ -116,4 +116,4 @@
 </code></pre></div> <p>Output:</p> <div class=highlight><pre><span></span><code><span class=p>{</span><span class=nt>&quot;one&quot;</span><span class=p>:</span><span class=s2>&quot;eins&quot;</span><span class=p>,</span><span class=nt>&quot;two&quot;</span><span class=p>:</span><span class=s2>&quot;zwei&quot;</span><span class=p>}</span>
 <span class=p>{</span><span class=nt>&quot;eleven&quot;</span><span class=p>:</span><span class=s2>&quot;elf&quot;</span><span class=p>,</span><span class=nt>&quot;seventeen&quot;</span><span class=p>:</span><span class=s2>&quot;siebzehn&quot;</span><span class=p>}</span>
 <span class=p>{</span><span class=nt>&quot;eleven&quot;</span><span class=p>:</span><span class=s2>&quot;elf&quot;</span><span class=p>,</span><span class=nt>&quot;one&quot;</span><span class=p>:</span><span class=s2>&quot;eins&quot;</span><span class=p>,</span><span class=nt>&quot;seventeen&quot;</span><span class=p>:</span><span class=s2>&quot;siebzehn&quot;</span><span class=p>,</span><span class=nt>&quot;two&quot;</span><span class=p>:</span><span class=s2>&quot;zwei&quot;</span><span class=p>}</span>
-</code></pre></div> </details> <h2 id=version-history>Version history<a class=headerlink href=#version-history title="Permanent link">&para;</a></h2> <ol> <li>Added in version 1.0.0.</li> <li>Added in version 1.0.0.</li> <li>Added in version 1.0.0.</li> <li>Added in version 1.0.0.</li> <li>Added in version 3.0.0.</li> </ol> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 23, 2026 11:16:18 UTC">June 23, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
+</code></pre></div> </details> <h2 id=see-also>See also<a class=headerlink href=#see-also title="Permanent link">&para;</a></h2> <ul> <li><a href=../emplace/ >emplace</a> add a value to an object</li> <li><a href=../emplace_back/ >emplace_back</a> add a value to an array</li> <li><a href=../push_back/ >push_back</a> add a value to an array/object</li> <li><a href=../update/ >update</a> merges objects</li> </ul> <h2 id=version-history>Version history<a class=headerlink href=#version-history title="Permanent link">&para;</a></h2> <ol> <li>Added in version 1.0.0.</li> <li>Added in version 1.0.0.</li> <li>Added in version 1.0.0.</li> <li>Added in version 1.0.0.</li> <li>Added in version 3.0.0.</li> </ol> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 29, 2026 20:15:18 UTC">June 29, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
diff --git a/api/basic_json/invalid_iterator/index.html b/api/basic_json/invalid_iterator/index.html
index 5baa4c8..ac2549b 100644
--- a/api/basic_json/invalid_iterator/index.html
+++ b/api/basic_json/invalid_iterator/index.html
@@ -50,4 +50,4 @@
 <span class=p>}</span>
 </code></pre></div> <p>Output:</p> <div class=highlight><pre><span></span><code><span class=err>message</span><span class=p>:</span><span class=w> </span><span class=p>[</span><span class=err>jso</span><span class=kc>n</span><span class=err>.excep</span><span class=kc>t</span><span class=err>io</span><span class=kc>n</span><span class=err>.i</span><span class=kc>n</span><span class=err>valid_i</span><span class=kc>terat</span><span class=err>or.</span><span class=mi>207</span><span class=p>]</span><span class=w> </span><span class=err>ca</span><span class=kc>nn</span><span class=err>o</span><span class=kc>t</span><span class=w> </span><span class=err>use</span><span class=w> </span><span class=err>key()</span><span class=w> </span><span class=kc>f</span><span class=err>or</span><span class=w> </span><span class=kc>n</span><span class=err>o</span><span class=kc>n</span><span class=mi>-</span><span class=err>objec</span><span class=kc>t</span><span class=w> </span><span class=err>i</span><span class=kc>terat</span><span class=err>ors</span>
 <span class=err>excep</span><span class=kc>t</span><span class=err>io</span><span class=kc>n</span><span class=w> </span><span class=err>id</span><span class=p>:</span><span class=w> </span><span class=mi>207</span>
-</code></pre></div> </details> <h2 id=see-also>See also<a class=headerlink href=#see-also title="Permanent link">&para;</a></h2> <ul> <li><a href=../../../home/exceptions/#iterator-errors>List of iterator errors</a></li> <li><a href=../parse_error/ ><code>parse_error</code></a> for exceptions indicating a parse error</li> <li><a href=../type_error/ ><code>type_error</code></a> for exceptions indicating executing a member function with a wrong type</li> <li><a href=../out_of_range/ ><code>out_of_range</code></a> for exceptions indicating access out of the defined range</li> <li><a href=../other_error/ ><code>other_error</code></a> for exceptions indicating other library errors</li> </ul> <h2 id=version-history>Version history<a class=headerlink href=#version-history title="Permanent link">&para;</a></h2> <ul> <li>Since version 3.0.0.</li> </ul> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 23, 2026 11:16:18 UTC">June 23, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
+</code></pre></div> </details> <h2 id=see-also>See also<a class=headerlink href=#see-also title="Permanent link">&para;</a></h2> <ul> <li><a href=../exception/ ><code>exception</code></a> for the base class of all exceptions thrown by the library</li> <li><a href=../../../home/exceptions/#iterator-errors>List of iterator errors</a></li> <li><a href=../parse_error/ ><code>parse_error</code></a> for exceptions indicating a parse error</li> <li><a href=../type_error/ ><code>type_error</code></a> for exceptions indicating executing a member function with a wrong type</li> <li><a href=../out_of_range/ ><code>out_of_range</code></a> for exceptions indicating access out of the defined range</li> <li><a href=../other_error/ ><code>other_error</code></a> for exceptions indicating other library errors</li> </ul> <h2 id=version-history>Version history<a class=headerlink href=#version-history title="Permanent link">&para;</a></h2> <ul> <li>Since version 3.0.0.</li> </ul> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 29, 2026 20:15:18 UTC">June 29, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
diff --git a/api/basic_json/is_array/index.html b/api/basic_json/is_array/index.html
index 4ee2d4b..9b3fd73 100644
--- a/api/basic_json/is_array/index.html
+++ b/api/basic_json/is_array/index.html
@@ -38,4 +38,4 @@
 <span class=kc>true</span>
 <span class=kc>false</span>
 <span class=kc>false</span>
-</code></pre></div> </details> <h2 id=version-history>Version history<a class=headerlink href=#version-history title="Permanent link">&para;</a></h2> <ul> <li>Added in version 1.0.0.</li> </ul> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 23, 2026 11:16:18 UTC">June 23, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
+</code></pre></div> </details> <h2 id=version-history>Version history<a class=headerlink href=#version-history title="Permanent link">&para;</a></h2> <ul> <li>Added in version 1.0.0.</li> </ul> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 29, 2026 20:15:18 UTC">June 29, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
diff --git a/api/basic_json/is_binary/index.html b/api/basic_json/is_binary/index.html
index 6d85b39..2abbfef 100644
--- a/api/basic_json/is_binary/index.html
+++ b/api/basic_json/is_binary/index.html
@@ -38,4 +38,4 @@
 <span class=kc>false</span>
 <span class=kc>false</span>
 <span class=kc>true</span>
-</code></pre></div> </details> <h2 id=version-history>Version history<a class=headerlink href=#version-history title="Permanent link">&para;</a></h2> <ul> <li>Added in version 3.8.0.</li> </ul> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 23, 2026 11:16:18 UTC">June 23, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
+</code></pre></div> </details> <h2 id=version-history>Version history<a class=headerlink href=#version-history title="Permanent link">&para;</a></h2> <ul> <li>Added in version 3.8.0.</li> </ul> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 29, 2026 20:15:18 UTC">June 29, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
diff --git a/api/basic_json/is_boolean/index.html b/api/basic_json/is_boolean/index.html
index 921abd6..a796b1e 100644
--- a/api/basic_json/is_boolean/index.html
+++ b/api/basic_json/is_boolean/index.html
@@ -38,4 +38,4 @@
 <span class=kc>false</span>
 <span class=kc>false</span>
 <span class=kc>false</span>
-</code></pre></div> </details> <h2 id=version-history>Version history<a class=headerlink href=#version-history title="Permanent link">&para;</a></h2> <ul> <li>Added in version 1.0.0.</li> </ul> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 23, 2026 11:16:18 UTC">June 23, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
+</code></pre></div> </details> <h2 id=version-history>Version history<a class=headerlink href=#version-history title="Permanent link">&para;</a></h2> <ul> <li>Added in version 1.0.0.</li> </ul> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 29, 2026 20:15:18 UTC">June 29, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
diff --git a/api/basic_json/is_discarded/index.html b/api/basic_json/is_discarded/index.html
index 17fff17..a2540d4 100644
--- a/api/basic_json/is_discarded/index.html
+++ b/api/basic_json/is_discarded/index.html
@@ -1,7 +1,7 @@
 <!doctype html><html lang=en class=no-js> <head><meta charset=utf-8><meta name=viewport content="width=device-width,initial-scale=1"><meta name=author content="Niels Lohmann"><link href="https://json.nlohmann.me/api/basic_json/is_discarded/" rel="canonical"><link href=../is_boolean/ rel=prev><link href=../is_null/ rel=next><link rel=icon href=../../../assets/images/favicon.png><meta name=generator content="mkdocs-1.6.1, mkdocs-material-9.7.6"><title>is_discarded - JSON for Modern C++</title><link rel=stylesheet href=../../../assets/stylesheets/main.484c7ddc.min.css><link rel=stylesheet href=../../../assets/stylesheets/palette.ab4e12ef.min.css><link rel="stylesheet" href="../../../assets/external/fonts.googleapis.com/css.61a430c9.css"><style>:root{--md-text-font:"Roboto";--md-code-font:"JetBrains Mono"}</style><link rel=stylesheet href=../../../css/custom.css><script>__md_scope=new URL("../../..",location),__md_hash=e=>[...e].reduce(((e,_)=>(e<<5)-e+_.charCodeAt(0)),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script></head> <body dir=ltr data-md-color-scheme=default data-md-color-primary=indigo data-md-color-accent=indigo> <input class=md-toggle data-md-toggle=drawer type=checkbox id=__drawer autocomplete=off> <input class=md-toggle data-md-toggle=search type=checkbox id=__search autocomplete=off> <label class=md-overlay for=__drawer></label> <div data-md-component=skip> <a href=#nlohmannbasic_jsonis_discarded class=md-skip> Skip to content </a> </div> <div data-md-component=announce> </div> <header class=md-header data-md-component=header> <nav class="md-header__inner md-grid" aria-label=Header> <a href=../../.. title="JSON for Modern C++" class="md-header__button md-logo" aria-label="JSON for Modern C++" data-md-component=logo> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54"/></svg> </a> <label class="md-header__button md-icon" for=__drawer> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M3 6h18v2H3zm0 5h18v2H3zm0 5h18v2H3z"/></svg> </label> <div class=md-header__title data-md-component=header-title> <div class=md-header__ellipsis> <div class=md-header__topic> <span class=md-ellipsis> JSON for Modern C++ </span> </div> <div class=md-header__topic data-md-component=header-topic> <span class=md-ellipsis> is_discarded </span> </div> </div> </div> <form class=md-header__option data-md-component=palette> <input class=md-option data-md-color-media="(prefers-color-scheme: light)" data-md-color-scheme=default data-md-color-primary=indigo data-md-color-accent=indigo aria-label="Switch to dark mode" type=radio name=__palette id=__palette_0> <label class="md-header__button md-icon" title="Switch to dark mode" for=__palette_1 hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a4 4 0 0 0-4 4 4 4 0 0 0 4 4 4 4 0 0 0 4-4 4 4 0 0 0-4-4m0 10a6 6 0 0 1-6-6 6 6 0 0 1 6-6 6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12z"/></svg> </label> <input class=md-option data-md-color-media="(prefers-color-scheme: dark)" data-md-color-scheme=slate data-md-color-primary=indigo data-md-color-accent=indigo aria-label="Switch to light mode" type=radio name=__palette id=__palette_1> <label class="md-header__button md-icon" title="Switch to light mode" for=__palette_0 hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 18c-.89 0-1.74-.2-2.5-.55C11.56 16.5 13 14.42 13 12s-1.44-4.5-3.5-5.45C10.26 6.2 11.11 6 12 6a6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12z"/></svg> </label> </form> <script>var palette=__md_get("__palette");if(palette&&palette.color){if("(prefers-color-scheme)"===palette.color.media){var media=matchMedia("(prefers-color-scheme: light)"),input=document.querySelector(media.matches?"[data-md-color-media='(prefers-color-scheme: light)']":"[data-md-color-media='(prefers-color-scheme: dark)']");palette.color.media=input.getAttribute("data-md-color-media"),palette.color.scheme=input.getAttribute("data-md-color-scheme"),palette.color.primary=input.getAttribute("data-md-color-primary"),palette.color.accent=input.getAttribute("data-md-color-accent")}for(var[key,value]of Object.entries(palette.color))document.body.setAttribute("data-md-color-"+key,value)}</script> <label class="md-header__button md-icon" for=__search> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg> </label> <div class=md-search data-md-component=search role=dialog> <label class=md-search__overlay for=__search></label> <div class=md-search__inner role=search> <form class=md-search__form name=search> <input type=text class=md-search__input name=query aria-label=Search placeholder=Search autocapitalize=off autocorrect=off autocomplete=off spellcheck=false data-md-component=search-query required> <label class="md-search__icon md-icon" for=__search> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11z"/></svg> </label> <nav class=md-search__options aria-label=Search> <button type=reset class="md-search__icon md-icon" title=Clear aria-label=Clear tabindex=-1> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z"/></svg> </button> </nav> </form> <div class=md-search__output> <div class=md-search__scrollwrap tabindex=0 data-md-scrollfix> <div class=md-search-result data-md-component=search-result> <div class=md-search-result__meta> Initializing search </div> <ol class=md-search-result__list role=presentation></ol> </div> </div> </div> </div> </div> <div class=md-header__source> <a href="https://github.com/nlohmann/json" title="Go to repository" class="md-source" data-md-component="source"> <div class="md-source__icon md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </div> <div class=md-source__repository> nlohmann/json </div> </a> </div> </nav> </header> <div class=md-container data-md-component=container> <nav class=md-tabs aria-label=Tabs data-md-component=tabs> <div class=md-grid> <ul class=md-tabs__list> <li class=md-tabs__item> <a href=../../.. class=md-tabs__link> Home </a> </li> <li class=md-tabs__item> <a href=../../../features/arbitrary_types/ class=md-tabs__link> Features </a> </li> <li class=md-tabs__item> <a href=../../../integration/ class=md-tabs__link> Integration </a> </li> <li class="md-tabs__item md-tabs__item--active"> <a href=../ class=md-tabs__link> API Documentation </a> </li> <li class=md-tabs__item> <a href=../../../community/ class=md-tabs__link> Community </a> </li> </ul> </div> </nav> <main class=md-main data-md-component=main> <div class="md-main__inner md-grid"> <div class="md-sidebar md-sidebar--primary" data-md-component=sidebar data-md-type=navigation> <div class=md-sidebar__scrollwrap> <div class=md-sidebar__inner> <nav class="md-nav md-nav--primary md-nav--lifted" aria-label=Navigation data-md-level=0> <label class=md-nav__title for=__drawer> <a href=../../.. title="JSON for Modern C++" class="md-nav__button md-logo" aria-label="JSON for Modern C++" data-md-component=logo> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54"/></svg> </a> JSON for Modern C++ </label> <div class=md-nav__source> <a href="https://github.com/nlohmann/json" title="Go to repository" class="md-source" data-md-component="source"> <div class="md-source__icon md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </div> <div class=md-source__repository> nlohmann/json </div> </a> </div> <ul class=md-nav__list data-md-scrollfix> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_1> <div class="md-nav__link md-nav__container"> <a href=../../.. class="md-nav__link "> <span class=md-ellipsis> Home </span> </a> <label class="md-nav__link " for=__nav_1 id=__nav_1_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_1_label aria-expanded=false> <label class=md-nav__title for=__nav_1> <span class="md-nav__icon md-icon"></span> Home </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../home/license/ class=md-nav__link> <span class=md-ellipsis> License </span> </a> </li> <li class=md-nav__item> <a href=../../../home/faq/ class=md-nav__link> <span class=md-ellipsis> FAQ </span> </a> </li> <li class=md-nav__item> <a href=../../../home/exceptions/ class=md-nav__link> <span class=md-ellipsis> Exceptions </span> </a> </li> <li class=md-nav__item> <a href=../../../home/releases/ class=md-nav__link> <span class=md-ellipsis> Releases </span> </a> </li> <li class=md-nav__item> <a href=../../../home/design_goals/ class=md-nav__link> <span class=md-ellipsis> Design goals </span> </a> </li> <li class=md-nav__item> <a href=../../../home/architecture/ class=md-nav__link> <span class=md-ellipsis> Architecture </span> </a> </li> <li class=md-nav__item> <a href=../../../home/customers/ class=md-nav__link> <span class=md-ellipsis> Customers </span> </a> </li> <li class=md-nav__item> <a href=../../../home/sponsors/ class=md-nav__link> <span class=md-ellipsis> Sponsors </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2> <label class=md-nav__link for=__nav_2 id=__nav_2_label tabindex=0> <span class=md-ellipsis> Features </span> <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_2_label aria-expanded=false> <label class=md-nav__title for=__nav_2> <span class="md-nav__icon md-icon"></span> Features </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/arbitrary_types/ class=md-nav__link> <span class=md-ellipsis> Arbitrary Type Conversions </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_2> <div class="md-nav__link md-nav__container"> <a href=../../../features/binary_formats/ class="md-nav__link "> <span class=md-ellipsis> Binary Formats </span> </a> <label class="md-nav__link " for=__nav_2_2 id=__nav_2_2_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_2_label aria-expanded=false> <label class=md-nav__title for=__nav_2_2> <span class="md-nav__icon md-icon"></span> Binary Formats </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/binary_formats/bjdata/ class=md-nav__link> <span class=md-ellipsis> BJData </span> </a> </li> <li class=md-nav__item> <a href=../../../features/binary_formats/bson/ class=md-nav__link> <span class=md-ellipsis> BSON </span> </a> </li> <li class=md-nav__item> <a href=../../../features/binary_formats/cbor/ class=md-nav__link> <span class=md-ellipsis> CBOR </span> </a> </li> <li class=md-nav__item> <a href=../../../features/binary_formats/messagepack/ class=md-nav__link> <span class=md-ellipsis> MessagePack </span> </a> </li> <li class=md-nav__item> <a href=../../../features/binary_formats/ubjson/ class=md-nav__link> <span class=md-ellipsis> UBJSON </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../../features/binary_values/ class=md-nav__link> <span class=md-ellipsis> Binary Values </span> </a> </li> <li class=md-nav__item> <a href=../../../features/comments/ class=md-nav__link> <span class=md-ellipsis> Comments </span> </a> </li> <li class=md-nav__item> <a href=../../../features/trailing_commas/ class=md-nav__link> <span class=md-ellipsis> Trailing Commas </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_6> <div class="md-nav__link md-nav__container"> <a href=../../../features/element_access/ class="md-nav__link "> <span class=md-ellipsis> Element Access </span> </a> <label class="md-nav__link " for=__nav_2_6 id=__nav_2_6_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_6_label aria-expanded=false> <label class=md-nav__title for=__nav_2_6> <span class="md-nav__icon md-icon"></span> Element Access </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/element_access/unchecked_access/ class=md-nav__link> <span class=md-ellipsis> Unchecked access: operator[] </span> </a> </li> <li class=md-nav__item> <a href=../../../features/element_access/checked_access/ class=md-nav__link> <span class=md-ellipsis> Checked access: at </span> </a> </li> <li class=md-nav__item> <a href=../../../features/element_access/default_value/ class=md-nav__link> <span class=md-ellipsis> Access with default value: value </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../../features/iterators/ class=md-nav__link> <span class=md-ellipsis> Iterators </span> </a> </li> <li class=md-nav__item> <a href=../../../features/json_pointer/ class=md-nav__link> <span class=md-ellipsis> JSON Pointer </span> </a> </li> <li class=md-nav__item> <a href=../../../features/json_patch/ class=md-nav__link> <span class=md-ellipsis> JSON Patch and Diff </span> </a> </li> <li class=md-nav__item> <a href=../../../features/merge_patch/ class=md-nav__link> <span class=md-ellipsis> JSON Merge Patch </span> </a> </li> <li class=md-nav__item> <a href=../../../features/modules/ class=md-nav__link> <span class=md-ellipsis> Modules </span> </a> </li> <li class=md-nav__item> <a href=../../../features/namespace/ class=md-nav__link> <span class=md-ellipsis> nlohmann Namespace </span> </a> </li> <li class=md-nav__item> <a href=../../../features/object_order/ class=md-nav__link> <span class=md-ellipsis> Object Order </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_14> <div class="md-nav__link md-nav__container"> <a href=../../../features/parsing/ class="md-nav__link "> <span class=md-ellipsis> Parsing </span> </a> <label class="md-nav__link " for=__nav_2_14 id=__nav_2_14_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_14_label aria-expanded=false> <label class=md-nav__title for=__nav_2_14> <span class="md-nav__icon md-icon"></span> Parsing </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/parsing/json_lines/ class=md-nav__link> <span class=md-ellipsis> JSON Lines </span> </a> </li> <li class=md-nav__item> <a href=../../../features/parsing/parse_exceptions/ class=md-nav__link> <span class=md-ellipsis> Parsing and Exceptions </span> </a> </li> <li class=md-nav__item> <a href=../../../features/parsing/parser_callbacks/ class=md-nav__link> <span class=md-ellipsis> Parser Callbacks </span> </a> </li> <li class=md-nav__item> <a href=../../../features/parsing/sax_interface/ class=md-nav__link> <span class=md-ellipsis> SAX Interface </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../../features/assertions/ class=md-nav__link> <span class=md-ellipsis> Runtime Assertions </span> </a> </li> <li class=md-nav__item> <a href=../../../features/enum_conversion/ class=md-nav__link> <span class=md-ellipsis> Specializing enum conversion </span> </a> </li> <li class=md-nav__item> <a href=../../../features/macros/ class=md-nav__link> <span class=md-ellipsis> Supported Macros </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_18> <div class="md-nav__link md-nav__container"> <a href=../../../features/types/ class="md-nav__link "> <span class=md-ellipsis> Types </span> </a> <label class="md-nav__link " for=__nav_2_18 id=__nav_2_18_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_18_label aria-expanded=false> <label class=md-nav__title for=__nav_2_18> <span class="md-nav__icon md-icon"></span> Types </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/types/number_handling/ class=md-nav__link> <span class=md-ellipsis> Number Handling </span> </a> </li> </ul> </nav> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_3> <div class="md-nav__link md-nav__container"> <a href=../../../integration/ class="md-nav__link "> <span class=md-ellipsis> Integration </span> </a> <label class="md-nav__link " for=__nav_3 id=__nav_3_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_3_label aria-expanded=false> <label class=md-nav__title for=__nav_3> <span class="md-nav__icon md-icon"></span> Integration </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../integration/migration_guide/ class=md-nav__link> <span class=md-ellipsis> Migration Guide </span> </a> </li> <li class=md-nav__item> <a href=../../../integration/cmake/ class=md-nav__link> <span class=md-ellipsis> CMake </span> </a> </li> <li class=md-nav__item> <a href=../../../integration/package_managers/ class=md-nav__link> <span class=md-ellipsis> Package Managers </span> </a> </li> <li class=md-nav__item> <a href=../../../integration/pkg-config/ class=md-nav__link> <span class=md-ellipsis> Pkg-config </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--active md-nav__item--section md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4 checked> <label class=md-nav__link for=__nav_4 id=__nav_4_label tabindex> <span class=md-ellipsis> API Documentation </span> <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_4_label aria-expanded=true> <label class=md-nav__title for=__nav_4> <span class="md-nav__icon md-icon"></span> API Documentation </label> <ul class=md-nav__list data-md-scrollfix> <li class="md-nav__item md-nav__item--active md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_1 checked> <div class="md-nav__link md-nav__container"> <a href=../ class="md-nav__link "> <span class=md-ellipsis> basic_json </span> </a> <label class="md-nav__link " for=__nav_4_1 id=__nav_4_1_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_1_label aria-expanded=true> <label class=md-nav__title for=__nav_4_1> <span class="md-nav__icon md-icon"></span> basic_json </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../basic_json/ class=md-nav__link> <span class=md-ellipsis> (Constructor) </span> </a> </li> <li class=md-nav__item> <a href=../~basic_json/ class=md-nav__link> <span class=md-ellipsis> (Destructor) </span> </a> </li> <li class=md-nav__item> <a href=../accept/ class=md-nav__link> <span class=md-ellipsis> accept </span> </a> </li> <li class=md-nav__item> <a href=../array/ class=md-nav__link> <span class=md-ellipsis> array </span> </a> </li> <li class=md-nav__item> <a href=../array_t/ class=md-nav__link> <span class=md-ellipsis> array_t </span> </a> </li> <li class=md-nav__item> <a href=../at/ class=md-nav__link> <span class=md-ellipsis> at </span> </a> </li> <li class=md-nav__item> <a href=../back/ class=md-nav__link> <span class=md-ellipsis> back </span> </a> </li> <li class=md-nav__item> <a href=../begin/ class=md-nav__link> <span class=md-ellipsis> begin </span> </a> </li> <li class=md-nav__item> <a href=../binary/ class=md-nav__link> <span class=md-ellipsis> binary </span> </a> </li> <li class=md-nav__item> <a href=../binary_t/ class=md-nav__link> <span class=md-ellipsis> binary_t </span> </a> </li> <li class=md-nav__item> <a href=../boolean_t/ class=md-nav__link> <span class=md-ellipsis> boolean_t </span> </a> </li> <li class=md-nav__item> <a href=../cbegin/ class=md-nav__link> <span class=md-ellipsis> cbegin </span> </a> </li> <li class=md-nav__item> <a href=../cbor_tag_handler_t/ class=md-nav__link> <span class=md-ellipsis> cbor_tag_handler_t </span> </a> </li> <li class=md-nav__item> <a href=../cend/ class=md-nav__link> <span class=md-ellipsis> cend </span> </a> </li> <li class=md-nav__item> <a href=../clear/ class=md-nav__link> <span class=md-ellipsis> clear </span> </a> </li> <li class=md-nav__item> <a href=../contains/ class=md-nav__link> <span class=md-ellipsis> contains </span> </a> </li> <li class=md-nav__item> <a href=../count/ class=md-nav__link> <span class=md-ellipsis> count </span> </a> </li> <li class=md-nav__item> <a href=../crbegin/ class=md-nav__link> <span class=md-ellipsis> crbegin </span> </a> </li> <li class=md-nav__item> <a href=../crend/ class=md-nav__link> <span class=md-ellipsis> crend </span> </a> </li> <li class=md-nav__item> <a href=../default_object_comparator_t/ class=md-nav__link> <span class=md-ellipsis> default_object_comparator_t </span> </a> </li> <li class=md-nav__item> <a href=../diff/ class=md-nav__link> <span class=md-ellipsis> diff </span> </a> </li> <li class=md-nav__item> <a href=../dump/ class=md-nav__link> <span class=md-ellipsis> dump </span> </a> </li> <li class=md-nav__item> <a href=../emplace/ class=md-nav__link> <span class=md-ellipsis> emplace </span> </a> </li> <li class=md-nav__item> <a href=../emplace_back/ class=md-nav__link> <span class=md-ellipsis> emplace_back </span> </a> </li> <li class=md-nav__item> <a href=../empty/ class=md-nav__link> <span class=md-ellipsis> empty </span> </a> </li> <li class=md-nav__item> <a href=../end/ class=md-nav__link> <span class=md-ellipsis> end </span> </a> </li> <li class=md-nav__item> <a href=../end_pos/ class=md-nav__link> <span class=md-ellipsis> end_pos </span> </a> </li> <li class=md-nav__item> <a href=../erase/ class=md-nav__link> <span class=md-ellipsis> erase </span> </a> </li> <li class=md-nav__item> <a href=../error_handler_t/ class=md-nav__link> <span class=md-ellipsis> error_handler_t </span> </a> </li> <li class=md-nav__item> <a href=../exception/ class=md-nav__link> <span class=md-ellipsis> exception </span> </a> </li> <li class=md-nav__item> <a href=../find/ class=md-nav__link> <span class=md-ellipsis> find </span> </a> </li> <li class=md-nav__item> <a href=../flatten/ class=md-nav__link> <span class=md-ellipsis> flatten </span> </a> </li> <li class=md-nav__item> <a href=../from_bjdata/ class=md-nav__link> <span class=md-ellipsis> from_bjdata </span> </a> </li> <li class=md-nav__item> <a href=../from_bson/ class=md-nav__link> <span class=md-ellipsis> from_bson </span> </a> </li> <li class=md-nav__item> <a href=../from_cbor/ class=md-nav__link> <span class=md-ellipsis> from_cbor </span> </a> </li> <li class=md-nav__item> <a href=../from_msgpack/ class=md-nav__link> <span class=md-ellipsis> from_msgpack </span> </a> </li> <li class=md-nav__item> <a href=../from_ubjson/ class=md-nav__link> <span class=md-ellipsis> from_ubjson </span> </a> </li> <li class=md-nav__item> <a href=../front/ class=md-nav__link> <span class=md-ellipsis> front </span> </a> </li> <li class=md-nav__item> <a href=../get/ class=md-nav__link> <span class=md-ellipsis> get </span> </a> </li> <li class=md-nav__item> <a href=../get_allocator/ class=md-nav__link> <span class=md-ellipsis> get_allocator </span> </a> </li> <li class=md-nav__item> <a href=../get_binary/ class=md-nav__link> <span class=md-ellipsis> get_binary </span> </a> </li> <li class=md-nav__item> <a href=../get_ptr/ class=md-nav__link> <span class=md-ellipsis> get_ptr </span> </a> </li> <li class=md-nav__item> <a href=../get_ref/ class=md-nav__link> <span class=md-ellipsis> get_ref </span> </a> </li> <li class=md-nav__item> <a href=../get_to/ class=md-nav__link> <span class=md-ellipsis> get_to </span> </a> </li> <li class=md-nav__item> <a href=../std_hash/ class=md-nav__link> <span class=md-ellipsis> std::hash&lt;basic_json&gt; </span> </a> </li> <li class=md-nav__item> <a href=../input_format_t/ class=md-nav__link> <span class=md-ellipsis> input_format_t </span> </a> </li> <li class=md-nav__item> <a href=../insert/ class=md-nav__link> <span class=md-ellipsis> insert </span> </a> </li> <li class=md-nav__item> <a href=../invalid_iterator/ class=md-nav__link> <span class=md-ellipsis> invalid_iterator </span> </a> </li> <li class=md-nav__item> <a href=../is_array/ class=md-nav__link> <span class=md-ellipsis> is_array </span> </a> </li> <li class=md-nav__item> <a href=../is_binary/ class=md-nav__link> <span class=md-ellipsis> is_binary </span> </a> </li> <li class=md-nav__item> <a href=../is_boolean/ class=md-nav__link> <span class=md-ellipsis> is_boolean </span> </a> </li> <li class="md-nav__item md-nav__item--active"> <input class="md-nav__toggle md-toggle" type=checkbox id=__toc> <label class="md-nav__link md-nav__link--active" for=__toc> <span class=md-ellipsis> is_discarded </span> <span class="md-nav__icon md-icon"></span> </label> <a href=./ class="md-nav__link md-nav__link--active"> <span class=md-ellipsis> is_discarded </span> </a> <nav class="md-nav md-nav--secondary" aria-label="Table of contents"> <label class=md-nav__title for=__toc> <span class="md-nav__icon md-icon"></span> Table of contents </label> <ul class=md-nav__list data-md-component=toc data-md-scrollfix> <li class=md-nav__item> <a href=#return-value class=md-nav__link> <span class=md-ellipsis> Return value </span> </a> </li> <li class=md-nav__item> <a href=#exception-safety class=md-nav__link> <span class=md-ellipsis> Exception safety </span> </a> </li> <li class=md-nav__item> <a href=#complexity class=md-nav__link> <span class=md-ellipsis> Complexity </span> </a> </li> <li class=md-nav__item> <a href=#notes class=md-nav__link> <span class=md-ellipsis> Notes </span> </a> </li> <li class=md-nav__item> <a href=#examples class=md-nav__link> <span class=md-ellipsis> Examples </span> </a> </li> <li class=md-nav__item> <a href=#version-history class=md-nav__link> <span class=md-ellipsis> Version history </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../is_null/ class=md-nav__link> <span class=md-ellipsis> is_null </span> </a> </li> <li class=md-nav__item> <a href=../is_number/ class=md-nav__link> <span class=md-ellipsis> is_number </span> </a> </li> <li class=md-nav__item> <a href=../is_number_float/ class=md-nav__link> <span class=md-ellipsis> is_number_float </span> </a> </li> <li class=md-nav__item> <a href=../is_number_integer/ class=md-nav__link> <span class=md-ellipsis> is_number_integer </span> </a> </li> <li class=md-nav__item> <a href=../is_number_unsigned/ class=md-nav__link> <span class=md-ellipsis> is_number_unsigned </span> </a> </li> <li class=md-nav__item> <a href=../is_object/ class=md-nav__link> <span class=md-ellipsis> is_object </span> </a> </li> <li class=md-nav__item> <a href=../is_primitive/ class=md-nav__link> <span class=md-ellipsis> is_primitive </span> </a> </li> <li class=md-nav__item> <a href=../is_string/ class=md-nav__link> <span class=md-ellipsis> is_string </span> </a> </li> <li class=md-nav__item> <a href=../is_structured/ class=md-nav__link> <span class=md-ellipsis> is_structured </span> </a> </li> <li class=md-nav__item> <a href=../items/ class=md-nav__link> <span class=md-ellipsis> items </span> </a> </li> <li class=md-nav__item> <a href=../json_base_class_t/ class=md-nav__link> <span class=md-ellipsis> json_base_class_t </span> </a> </li> <li class=md-nav__item> <a href=../json_serializer/ class=md-nav__link> <span class=md-ellipsis> json_serializer </span> </a> </li> <li class=md-nav__item> <a href=../max_size/ class=md-nav__link> <span class=md-ellipsis> max_size </span> </a> </li> <li class=md-nav__item> <a href=../meta/ class=md-nav__link> <span class=md-ellipsis> meta </span> </a> </li> <li class=md-nav__item> <a href=../merge_patch/ class=md-nav__link> <span class=md-ellipsis> merge_patch </span> </a> </li> <li class=md-nav__item> <a href=../number_float_t/ class=md-nav__link> <span class=md-ellipsis> number_float_t </span> </a> </li> <li class=md-nav__item> <a href=../number_integer_t/ class=md-nav__link> <span class=md-ellipsis> number_integer_t </span> </a> </li> <li class=md-nav__item> <a href=../number_unsigned_t/ class=md-nav__link> <span class=md-ellipsis> number_unsigned_t </span> </a> </li> <li class=md-nav__item> <a href=../object/ class=md-nav__link> <span class=md-ellipsis> object </span> </a> </li> <li class=md-nav__item> <a href=../object_comparator_t/ class=md-nav__link> <span class=md-ellipsis> object_comparator_t </span> </a> </li> <li class=md-nav__item> <a href=../object_t/ class=md-nav__link> <span class=md-ellipsis> object_t </span> </a> </li> <li class=md-nav__item> <a href=../operator_ValueType/ class=md-nav__link> <span class=md-ellipsis> operator ValueType </span> </a> </li> <li class=md-nav__item> <a href=../operator_value_t/ class=md-nav__link> <span class=md-ellipsis> operator value_t </span> </a> </li> <li class=md-nav__item> <a href=../operator%5B%5D/ class=md-nav__link> <span class=md-ellipsis> operator[] </span> </a> </li> <li class=md-nav__item> <a href=../operator%3D/ class=md-nav__link> <span class=md-ellipsis> operator= </span> </a> </li> <li class=md-nav__item> <a href=../operator%2B%3D/ class=md-nav__link> <span class=md-ellipsis> operator+= </span> </a> </li> <li class=md-nav__item> <a href=../operator_eq/ class=md-nav__link> <span class=md-ellipsis> operator== </span> </a> </li> <li class=md-nav__item> <a href=../operator_ne/ class=md-nav__link> <span class=md-ellipsis> operator!= </span> </a> </li> <li class=md-nav__item> <a href=../operator_lt/ class=md-nav__link> <span class=md-ellipsis> operator< </span> </a> </li> <li class=md-nav__item> <a href=../operator_gt/ class=md-nav__link> <span class=md-ellipsis> operator> </span> </a> </li> <li class=md-nav__item> <a href=../operator_le/ class=md-nav__link> <span class=md-ellipsis> operator<= </span> </a> </li> <li class=md-nav__item> <a href=../operator_ge/ class=md-nav__link> <span class=md-ellipsis> operator>= </span> </a> </li> <li class=md-nav__item> <a href=../operator_spaceship/ class=md-nav__link> <span class=md-ellipsis> operator<=> </span> </a> </li> <li class=md-nav__item> <a href=../out_of_range/ class=md-nav__link> <span class=md-ellipsis> out_of_range </span> </a> </li> <li class=md-nav__item> <a href=../other_error/ class=md-nav__link> <span class=md-ellipsis> other_error </span> </a> </li> <li class=md-nav__item> <a href=../parse/ class=md-nav__link> <span class=md-ellipsis> parse </span> </a> </li> <li class=md-nav__item> <a href=../parse_error/ class=md-nav__link> <span class=md-ellipsis> parse_error </span> </a> </li> <li class=md-nav__item> <a href=../parse_event_t/ class=md-nav__link> <span class=md-ellipsis> parse_event_t </span> </a> </li> <li class=md-nav__item> <a href=../parser_callback_t/ class=md-nav__link> <span class=md-ellipsis> parser_callback_t </span> </a> </li> <li class=md-nav__item> <a href=../patch/ class=md-nav__link> <span class=md-ellipsis> patch </span> </a> </li> <li class=md-nav__item> <a href=../patch_inplace/ class=md-nav__link> <span class=md-ellipsis> patch_inplace </span> </a> </li> <li class=md-nav__item> <a href=../push_back/ class=md-nav__link> <span class=md-ellipsis> push_back </span> </a> </li> <li class=md-nav__item> <a href=../rbegin/ class=md-nav__link> <span class=md-ellipsis> rbegin </span> </a> </li> <li class=md-nav__item> <a href=../rend/ class=md-nav__link> <span class=md-ellipsis> rend </span> </a> </li> <li class=md-nav__item> <a href=../sax_parse/ class=md-nav__link> <span class=md-ellipsis> sax_parse </span> </a> </li> <li class=md-nav__item> <a href=../size/ class=md-nav__link> <span class=md-ellipsis> size </span> </a> </li> <li class=md-nav__item> <a href=../start_pos/ class=md-nav__link> <span class=md-ellipsis> start_pos </span> </a> </li> <li class=md-nav__item> <a href=../string_t/ class=md-nav__link> <span class=md-ellipsis> string_t </span> </a> </li> <li class=md-nav__item> <a href=../swap/ class=md-nav__link> <span class=md-ellipsis> swap </span> </a> </li> <li class=md-nav__item> <a href=../std_swap/ class=md-nav__link> <span class=md-ellipsis> std::swap&lt;basic_json&gt; </span> </a> </li> <li class=md-nav__item> <a href=../to_bjdata/ class=md-nav__link> <span class=md-ellipsis> to_bjdata </span> </a> </li> <li class=md-nav__item> <a href=../to_bson/ class=md-nav__link> <span class=md-ellipsis> to_bson </span> </a> </li> <li class=md-nav__item> <a href=../to_cbor/ class=md-nav__link> <span class=md-ellipsis> to_cbor </span> </a> </li> <li class=md-nav__item> <a href=../to_msgpack/ class=md-nav__link> <span class=md-ellipsis> to_msgpack </span> </a> </li> <li class=md-nav__item> <a href=../to_string/ class=md-nav__link> <span class=md-ellipsis> to_string </span> </a> </li> <li class=md-nav__item> <a href=../to_ubjson/ class=md-nav__link> <span class=md-ellipsis> to_ubjson </span> </a> </li> <li class=md-nav__item> <a href=../type/ class=md-nav__link> <span class=md-ellipsis> type </span> </a> </li> <li class=md-nav__item> <a href=../type_error/ class=md-nav__link> <span class=md-ellipsis> type_error </span> </a> </li> <li class=md-nav__item> <a href=../type_name/ class=md-nav__link> <span class=md-ellipsis> type_name </span> </a> </li> <li class=md-nav__item> <a href=../unflatten/ class=md-nav__link> <span class=md-ellipsis> unflatten </span> </a> </li> <li class=md-nav__item> <a href=../update/ class=md-nav__link> <span class=md-ellipsis> update </span> </a> </li> <li class=md-nav__item> <a href=../value/ class=md-nav__link> <span class=md-ellipsis> value </span> </a> </li> <li class=md-nav__item> <a href=../value_t/ class=md-nav__link> <span class=md-ellipsis> value_t </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_2> <div class="md-nav__link md-nav__container"> <a href=../../byte_container_with_subtype/ class="md-nav__link "> <span class=md-ellipsis> byte_container_with_subtype </span> </a> <label class="md-nav__link " for=__nav_4_2 id=__nav_4_2_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_2_label aria-expanded=false> <label class=md-nav__title for=__nav_4_2> <span class="md-nav__icon md-icon"></span> byte_container_with_subtype </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../byte_container_with_subtype/byte_container_with_subtype/ class=md-nav__link> <span class=md-ellipsis> (constructor) </span> </a> </li> <li class=md-nav__item> <a href=../../byte_container_with_subtype/clear_subtype/ class=md-nav__link> <span class=md-ellipsis> clear_subtype </span> </a> </li> <li class=md-nav__item> <a href=../../byte_container_with_subtype/has_subtype/ class=md-nav__link> <span class=md-ellipsis> has_subtype </span> </a> </li> <li class=md-nav__item> <a href=../../byte_container_with_subtype/set_subtype/ class=md-nav__link> <span class=md-ellipsis> set_subtype </span> </a> </li> <li class=md-nav__item> <a href=../../byte_container_with_subtype/subtype/ class=md-nav__link> <span class=md-ellipsis> subtype </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_3> <div class="md-nav__link md-nav__container"> <a href=../../adl_serializer/ class="md-nav__link "> <span class=md-ellipsis> adl_serializer </span> </a> <label class="md-nav__link " for=__nav_4_3 id=__nav_4_3_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_3_label aria-expanded=false> <label class=md-nav__title for=__nav_4_3> <span class="md-nav__icon md-icon"></span> adl_serializer </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../adl_serializer/from_json/ class=md-nav__link> <span class=md-ellipsis> from_json </span> </a> </li> <li class=md-nav__item> <a href=../../adl_serializer/to_json/ class=md-nav__link> <span class=md-ellipsis> to_json </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../json/ class=md-nav__link> <span class=md-ellipsis> json </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_5> <div class="md-nav__link md-nav__container"> <a href=../../json_pointer/ class="md-nav__link "> <span class=md-ellipsis> json_pointer </span> </a> <label class="md-nav__link " for=__nav_4_5 id=__nav_4_5_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_5_label aria-expanded=false> <label class=md-nav__title for=__nav_4_5> <span class="md-nav__icon md-icon"></span> json_pointer </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../json_pointer/json_pointer/ class=md-nav__link> <span class=md-ellipsis> (Constructor) </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/back/ class=md-nav__link> <span class=md-ellipsis> back </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/empty/ class=md-nav__link> <span class=md-ellipsis> empty </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/front/ class=md-nav__link> <span class=md-ellipsis> front </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_string_t/ class=md-nav__link> <span class=md-ellipsis> operator string_t </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_eq/ class=md-nav__link> <span class=md-ellipsis> operator== </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_ne/ class=md-nav__link> <span class=md-ellipsis> operator!= </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_slash/ class=md-nav__link> <span class=md-ellipsis> operator/ </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_slasheq/ class=md-nav__link> <span class=md-ellipsis> operator/= </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/parent_pointer/ class=md-nav__link> <span class=md-ellipsis> parent_pointer </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/pop_back/ class=md-nav__link> <span class=md-ellipsis> pop_back </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/pop_front/ class=md-nav__link> <span class=md-ellipsis> pop_front </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/push_back/ class=md-nav__link> <span class=md-ellipsis> push_back </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/push_front/ class=md-nav__link> <span class=md-ellipsis> push_front </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/string_t/ class=md-nav__link> <span class=md-ellipsis> string_t </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/to_string/ class=md-nav__link> <span class=md-ellipsis> to_string </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_6> <div class="md-nav__link md-nav__container"> <a href=../../json_sax/ class="md-nav__link "> <span class=md-ellipsis> json_sax </span> </a> <label class="md-nav__link " for=__nav_4_6 id=__nav_4_6_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_6_label aria-expanded=false> <label class=md-nav__title for=__nav_4_6> <span class="md-nav__icon md-icon"></span> json_sax </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../json_sax/binary/ class=md-nav__link> <span class=md-ellipsis> binary </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/boolean/ class=md-nav__link> <span class=md-ellipsis> boolean </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/end_array/ class=md-nav__link> <span class=md-ellipsis> end_array </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/end_object/ class=md-nav__link> <span class=md-ellipsis> end_object </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/key/ class=md-nav__link> <span class=md-ellipsis> key </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/null/ class=md-nav__link> <span class=md-ellipsis> null </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/number_float/ class=md-nav__link> <span class=md-ellipsis> number_float </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/number_integer/ class=md-nav__link> <span class=md-ellipsis> number_integer </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/number_unsigned/ class=md-nav__link> <span class=md-ellipsis> number_unsigned </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/parse_error/ class=md-nav__link> <span class=md-ellipsis> parse_error </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/start_array/ class=md-nav__link> <span class=md-ellipsis> start_array </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/start_object/ class=md-nav__link> <span class=md-ellipsis> start_object </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/string/ class=md-nav__link> <span class=md-ellipsis> string </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../operator_ltlt/ class=md-nav__link> <span class=md-ellipsis> operator<<(basic_json), operator<<(json_pointer) </span> </a> </li> <li class=md-nav__item> <a href=../../operator_gtgt/ class=md-nav__link> <span class=md-ellipsis> operator>>(basic_json) </span> </a> </li> <li class=md-nav__item> <a href=../../operator_literal_json/ class=md-nav__link> <span class=md-ellipsis> operator""_json </span> </a> </li> <li class=md-nav__item> <a href=../../operator_literal_json_pointer/ class=md-nav__link> <span class=md-ellipsis> operator""_json_pointer </span> </a> </li> <li class=md-nav__item> <a href=../../ordered_json/ class=md-nav__link> <span class=md-ellipsis> ordered_json </span> </a> </li> <li class=md-nav__item> <a href=../../ordered_map/ class=md-nav__link> <span class=md-ellipsis> ordered_map </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_13> <div class="md-nav__link md-nav__container"> <a href=../../macros/ class="md-nav__link "> <span class=md-ellipsis> macros </span> </a> <label class="md-nav__link " for=__nav_4_13 id=__nav_4_13_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_13_label aria-expanded=false> <label class=md-nav__title for=__nav_4_13> <span class="md-nav__icon md-icon"></span> macros </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../macros/json_assert/ class=md-nav__link> <span class=md-ellipsis> JSON_ASSERT </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_brace_init_copy_semantics/ class=md-nav__link> <span class=md-ellipsis> JSON_BRACE_INIT_COPY_SEMANTICS </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_throw_user/ class=md-nav__link> <span class=md-ellipsis> JSON_CATCH_USER, JSON_THROW_USER, JSON_TRY_USER </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_diagnostics/ class=md-nav__link> <span class=md-ellipsis> JSON_DIAGNOSTICS </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_diagnostic_positions/ class=md-nav__link> <span class=md-ellipsis> JSON_DIAGNOSTIC_POSITIONS </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_disable_enum_serialization/ class=md-nav__link> <span class=md-ellipsis> JSON_DISABLE_ENUM_SERIALIZATION </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_has_cpp_11/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_CPP_11, JSON_HAS_CPP_14, JSON_HAS_CPP_17, JSON_HAS_CPP_20 </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_has_filesystem/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_EXPERIMENTAL_FILESYSTEM, JSON_HAS_FILESYSTEM </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_has_ranges/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_RANGES </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_has_static_rtti/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_STATIC_RTTI </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_has_three_way_comparison/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_THREE_WAY_COMPARISON </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_noexception/ class=md-nav__link> <span class=md-ellipsis> JSON_NOEXCEPTION </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_no_io/ class=md-nav__link> <span class=md-ellipsis> JSON_NO_IO </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_skip_library_version_check/ class=md-nav__link> <span class=md-ellipsis> JSON_SKIP_LIBRARY_VERSION_CHECK </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_skip_unsupported_compiler_check/ class=md-nav__link> <span class=md-ellipsis> JSON_SKIP_UNSUPPORTED_COMPILER_CHECK </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_use_global_udls/ class=md-nav__link> <span class=md-ellipsis> JSON_USE_GLOBAL_UDLS </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_use_implicit_conversions/ class=md-nav__link> <span class=md-ellipsis> JSON_USE_IMPLICIT_CONVERSIONS </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_use_legacy_discarded_value_comparison/ class=md-nav__link> <span class=md-ellipsis> JSON_USE_LEGACY_DISCARDED_VALUE_COMPARISON </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_define_derived_type/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_ONLY_SERIALIZE, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_define_type_intrusive/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_TYPE_INTRUSIVE, NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_TYPE_INTRUSIVE_ONLY_SERIALIZE </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_define_type_non_intrusive/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_define_type_with_names/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_TYPE_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_namespace/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_NAMESPACE </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_namespace_begin/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_NAMESPACE_BEGIN, NLOHMANN_JSON_NAMESPACE_END </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_namespace_no_version/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_NAMESPACE_NO_VERSION </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_serialize_enum/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_SERIALIZE_ENUM </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_serialize_enum_strict/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_SERIALIZE_ENUM_STRICT </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_version_major/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_VERSION_MAJOR, NLOHMANN_JSON_VERSION_MINOR, NLOHMANN_JSON_VERSION_PATCH </span> </a> </li> </ul> </nav> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_5> <div class="md-nav__link md-nav__container"> <a href=../../../community/ class="md-nav__link "> <span class=md-ellipsis> Community </span> </a> <label class="md-nav__link " for=__nav_5 id=__nav_5_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_5_label aria-expanded=false> <label class=md-nav__title for=__nav_5> <span class="md-nav__icon md-icon"></span> Community </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../community/code_of_conduct/ class=md-nav__link> <span class=md-ellipsis> Code of Conduct </span> </a> </li> <li class=md-nav__item> <a href=../../../community/contribution_guidelines/ class=md-nav__link> <span class=md-ellipsis> Contribution Guidelines </span> </a> </li> <li class=md-nav__item> <a href=../../../community/quality_assurance/ class=md-nav__link> <span class=md-ellipsis> Quality assurance </span> </a> </li> <li class=md-nav__item> <a href=../../../community/governance/ class=md-nav__link> <span class=md-ellipsis> Governance </span> </a> </li> <li class=md-nav__item> <a href=../../../community/security_policy/ class=md-nav__link> <span class=md-ellipsis> Security Policy </span> </a> </li> </ul> </nav> </li> </ul> </nav> </div> </div> </div> <div class="md-sidebar md-sidebar--secondary" data-md-component=sidebar data-md-type=toc> <div class=md-sidebar__scrollwrap> <div class=md-sidebar__inner> <nav class="md-nav md-nav--secondary" aria-label="Table of contents"> <label class=md-nav__title for=__toc> <span class="md-nav__icon md-icon"></span> Table of contents </label> <ul class=md-nav__list data-md-component=toc data-md-scrollfix> <li class=md-nav__item> <a href=#return-value class=md-nav__link> <span class=md-ellipsis> Return value </span> </a> </li> <li class=md-nav__item> <a href=#exception-safety class=md-nav__link> <span class=md-ellipsis> Exception safety </span> </a> </li> <li class=md-nav__item> <a href=#complexity class=md-nav__link> <span class=md-ellipsis> Complexity </span> </a> </li> <li class=md-nav__item> <a href=#notes class=md-nav__link> <span class=md-ellipsis> Notes </span> </a> </li> <li class=md-nav__item> <a href=#examples class=md-nav__link> <span class=md-ellipsis> Examples </span> </a> </li> <li class=md-nav__item> <a href=#version-history class=md-nav__link> <span class=md-ellipsis> Version history </span> </a> </li> </ul> </nav> </div> </div> </div> <div class=md-content data-md-component=content> <article class="md-content__inner md-typeset"> <a href="https://github.com/nlohmann/json/edit/develop/docs/mkdocs/docs/api/basic_json/is_discarded.md" title="Edit this page" class="md-content__button md-icon" rel="edit"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M10 20H6V4h7v5h5v3.1l2-2V8l-6-6H6c-1.1 0-2 .9-2 2v16c0 1.1.9 2 2 2h4zm10.2-7c.1 0 .3.1.4.2l1.3 1.3c.2.2.2.6 0 .8l-1 1-2.1-2.1 1-1c.1-.1.2-.2.4-.2m0 3.9L14.1 23H12v-2.1l6.1-6.1z"/></svg> </a> <a href="https://github.com/nlohmann/json/raw/develop/docs/mkdocs/docs/api/basic_json/is_discarded.md" title="View source of this page" class="md-content__button md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M17 18c.56 0 1 .44 1 1s-.44 1-1 1-1-.44-1-1 .44-1 1-1m0-3c-2.73 0-5.06 1.66-6 4 .94 2.34 3.27 4 6 4s5.06-1.66 6-4c-.94-2.34-3.27-4-6-4m0 6.5a2.5 2.5 0 0 1-2.5-2.5 2.5 2.5 0 0 1 2.5-2.5 2.5 2.5 0 0 1 2.5 2.5 2.5 2.5 0 0 1-2.5 2.5M9.27 20H6V4h7v5h5v4.07c.7.08 1.36.25 2 .49V8l-6-6H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h4.5a8.2 8.2 0 0 1-1.23-2"/></svg> </a> <h1 id=nlohmannbasic_jsonis_discarded><small>nlohmann::basic_json::</small>is_discarded<a class=headerlink href=#nlohmannbasic_jsonis_discarded title="Permanent link">&para;</a></h1> <div class=highlight><pre><span></span><code><span class=k>constexpr</span><span class=w> </span><span class=kt>bool</span><span class=w> </span><span class=nf>is_discarded</span><span class=p>()</span><span class=w> </span><span class=k>const</span><span class=w> </span><span class=k>noexcept</span><span class=p>;</span>
 </code></pre></div> <p>This function returns <code class=highlight><span class=nb>true</span></code> for a <abbr title="JavaScript Object Notation">JSON</abbr> value if either:</p> <ul> <li>the value was discarded during parsing with a callback function (see <a href=../parser_callback_t/ ><code>parser_callback_t</code></a>), or</li> <li>the value is the result of parsing invalid <abbr title="JavaScript Object Notation">JSON</abbr> with parameter <code>allow_exceptions</code> set to <code class=highlight><span class=nb>false</span></code>; see <a href=../parse/ ><code>parse</code></a> for more information.</li> </ul> <h2 id=return-value>Return value<a class=headerlink href=#return-value title="Permanent link">&para;</a></h2> <p><code class=highlight><span class=nb>true</span></code> if type is discarded, <code class=highlight><span class=nb>false</span></code> otherwise.</p> <h2 id=exception-safety>Exception safety<a class=headerlink href=#exception-safety title="Permanent link">&para;</a></h2> <p>No-throw guarantee: this member function never throws exceptions.</p> <h2 id=complexity>Complexity<a class=headerlink href=#complexity title="Permanent link">&para;</a></h2> <p>Constant.</p> <h2 id=notes>Notes<a class=headerlink href=#notes title="Permanent link">&para;</a></h2> <div class="admonition note"> <p class=admonition-title>Comparisons</p> <p>Discarded values are never compared equal with <a href=../operator_eq/ ><code>operator==</code></a>. That is, checking whether a <abbr title="JavaScript Object Notation">JSON</abbr> value <code>j</code> is discarded will only work via:</p> <div class=highlight><pre><span></span><code><span class=n>j</span><span class=p>.</span><span class=n>is_discarded</span><span class=p>()</span>
 </code></pre></div> <p>because</p> <div class=highlight><pre><span></span><code><span class=n>j</span><span class=w> </span><span class=o>==</span><span class=w> </span><span class=n>json</span><span class=o>::</span><span class=n>value_t</span><span class=o>::</span><span class=n>discarded</span>
-</code></pre></div> <p>will always be <code class=highlight><span class=nb>false</span></code>.</p> </div> <div class="admonition note"> <p class=admonition-title>Removal during parsing with callback functions</p> <p>When a value is discarded by a callback function (see <a href=../parser_callback_t/ ><code>parser_callback_t</code></a>) during parsing, then it is removed when it is part of a structured value. For instance, if the second value of an array is discarded, instead of <code class=highlight><span class=p>[</span><span class=kc>null</span><span class=p>,</span><span class=w> </span><span class=err>discarded</span><span class=p>,</span><span class=w> </span><span class=kc>false</span><span class=p>]</span></code>, the array <code class=highlight><span class=p>[</span><span class=kc>null</span><span class=p>,</span><span class=w> </span><span class=kc>false</span><span class=p>]</span></code> is returned. Only if the top-level value is discarded, the return value of the <code>parse</code> call is discarded.</p> </div> <p>This function will always be <code class=highlight><span class=nb>false</span></code> for <abbr title="JavaScript Object Notation">JSON</abbr> values after parsing. That is, discarded values can only occur during parsing, but will be removed when inside a structured value or replaced by null in other cases.</p> <h2 id=examples>Examples<a class=headerlink href=#examples title="Permanent link">&para;</a></h2> <details class=example> <summary>Example</summary> <p>The following code exemplifies <code>is_discarded()</code> for all <abbr title="JavaScript Object Notation">JSON</abbr> types.</p> <div class=highlight><pre><span></span><code><span class=cp>#include</span><span class=w> </span><span class=cpf>&lt;iostream&gt;</span>
+</code></pre></div> <p>will always be <code class=highlight><span class=nb>false</span></code>.</p> </div> <div class="admonition note"> <p class=admonition-title>Removal during parsing with callback functions</p> <p>When a value is discarded by a callback function (see <a href=../parser_callback_t/ ><code>parser_callback_t</code></a>) during parsing, then it is removed when it is part of a structured value. For instance, if the second value of an array is discarded, instead of <code class=highlight><span class=p>[</span><span class=kc>null</span><span class=p>,</span><span class=w> </span><span class=err>discarded</span><span class=p>,</span><span class=w> </span><span class=kc>false</span><span class=p>]</span></code>, the array <code class=highlight><span class=p>[</span><span class=kc>null</span><span class=p>,</span><span class=w> </span><span class=kc>false</span><span class=p>]</span></code> is returned. If the top-level value itself is discarded by the callback, the <code>parse</code> call returns a <code class=highlight><span class=kc>null</span></code> value.</p> </div> <p>After a successful parse, this function always returns <code class=highlight><span class=nb>false</span></code>: discarded values can only occur during parsing and are either removed when inside a structured value or replaced by <code class=highlight><span class=kc>null</span></code> at the top level. The exception is parsing with <code>allow_exceptions</code> set to <code class=highlight><span class=nb>false</span></code>: a parse error then yields a discarded value for which this function returns <code class=highlight><span class=nb>true</span></code> (see <a href=../parse/ ><code>parse</code></a>).</p> <h2 id=examples>Examples<a class=headerlink href=#examples title="Permanent link">&para;</a></h2> <details class=example> <summary>Example</summary> <p>The following code exemplifies <code>is_discarded()</code> for all <abbr title="JavaScript Object Notation">JSON</abbr> types.</p> <div class=highlight><pre><span></span><code><span class=cp>#include</span><span class=w> </span><span class=cpf>&lt;iostream&gt;</span>
 <span class=cp>#include</span><span class=w> </span><span class=cpf>&lt;nlohmann/json.hpp&gt;</span>
 
 <span class=k>using</span><span class=w> </span><span class=n>json</span><span class=w> </span><span class=o>=</span><span class=w> </span><span class=n>nlohmann</span><span class=o>::</span><span class=n>json</span><span class=p>;</span>
@@ -40,4 +40,4 @@
 <span class=kc>false</span>
 <span class=kc>false</span>
 <span class=kc>false</span>
-</code></pre></div> </details> <h2 id=version-history>Version history<a class=headerlink href=#version-history title="Permanent link">&para;</a></h2> <ul> <li>Added in version 1.0.0.</li> </ul> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 23, 2026 11:16:18 UTC">June 23, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
+</code></pre></div> </details> <h2 id=version-history>Version history<a class=headerlink href=#version-history title="Permanent link">&para;</a></h2> <ul> <li>Added in version 1.0.0.</li> </ul> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 29, 2026 20:15:18 UTC">June 29, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
diff --git a/api/basic_json/is_null/index.html b/api/basic_json/is_null/index.html
index ee743ed..b7ef731 100644
--- a/api/basic_json/is_null/index.html
+++ b/api/basic_json/is_null/index.html
@@ -38,4 +38,4 @@
 <span class=kc>false</span>
 <span class=kc>false</span>
 <span class=kc>false</span>
-</code></pre></div> </details> <h2 id=version-history>Version history<a class=headerlink href=#version-history title="Permanent link">&para;</a></h2> <ul> <li>Added in version 1.0.0.</li> </ul> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 23, 2026 11:16:18 UTC">June 23, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
+</code></pre></div> </details> <h2 id=version-history>Version history<a class=headerlink href=#version-history title="Permanent link">&para;</a></h2> <ul> <li>Added in version 1.0.0.</li> </ul> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 29, 2026 20:15:18 UTC">June 29, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
diff --git a/api/basic_json/is_number/index.html b/api/basic_json/is_number/index.html
index 31ca8a0..b022728 100644
--- a/api/basic_json/is_number/index.html
+++ b/api/basic_json/is_number/index.html
@@ -1,5 +1,5 @@
 <!doctype html><html lang=en class=no-js> <head><meta charset=utf-8><meta name=viewport content="width=device-width,initial-scale=1"><meta name=author content="Niels Lohmann"><link href="https://json.nlohmann.me/api/basic_json/is_number/" rel="canonical"><link href=../is_null/ rel=prev><link href=../is_number_float/ rel=next><link rel=icon href=../../../assets/images/favicon.png><meta name=generator content="mkdocs-1.6.1, mkdocs-material-9.7.6"><title>is_number - JSON for Modern C++</title><link rel=stylesheet href=../../../assets/stylesheets/main.484c7ddc.min.css><link rel=stylesheet href=../../../assets/stylesheets/palette.ab4e12ef.min.css><link rel="stylesheet" href="../../../assets/external/fonts.googleapis.com/css.61a430c9.css"><style>:root{--md-text-font:"Roboto";--md-code-font:"JetBrains Mono"}</style><link rel=stylesheet href=../../../css/custom.css><script>__md_scope=new URL("../../..",location),__md_hash=e=>[...e].reduce(((e,_)=>(e<<5)-e+_.charCodeAt(0)),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script></head> <body dir=ltr data-md-color-scheme=default data-md-color-primary=indigo data-md-color-accent=indigo> <input class=md-toggle data-md-toggle=drawer type=checkbox id=__drawer autocomplete=off> <input class=md-toggle data-md-toggle=search type=checkbox id=__search autocomplete=off> <label class=md-overlay for=__drawer></label> <div data-md-component=skip> <a href=#nlohmannbasic_jsonis_number class=md-skip> Skip to content </a> </div> <div data-md-component=announce> </div> <header class=md-header data-md-component=header> <nav class="md-header__inner md-grid" aria-label=Header> <a href=../../.. title="JSON for Modern C++" class="md-header__button md-logo" aria-label="JSON for Modern C++" data-md-component=logo> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54"/></svg> </a> <label class="md-header__button md-icon" for=__drawer> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M3 6h18v2H3zm0 5h18v2H3zm0 5h18v2H3z"/></svg> </label> <div class=md-header__title data-md-component=header-title> <div class=md-header__ellipsis> <div class=md-header__topic> <span class=md-ellipsis> JSON for Modern C++ </span> </div> <div class=md-header__topic data-md-component=header-topic> <span class=md-ellipsis> is_number </span> </div> </div> </div> <form class=md-header__option data-md-component=palette> <input class=md-option data-md-color-media="(prefers-color-scheme: light)" data-md-color-scheme=default data-md-color-primary=indigo data-md-color-accent=indigo aria-label="Switch to dark mode" type=radio name=__palette id=__palette_0> <label class="md-header__button md-icon" title="Switch to dark mode" for=__palette_1 hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a4 4 0 0 0-4 4 4 4 0 0 0 4 4 4 4 0 0 0 4-4 4 4 0 0 0-4-4m0 10a6 6 0 0 1-6-6 6 6 0 0 1 6-6 6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12z"/></svg> </label> <input class=md-option data-md-color-media="(prefers-color-scheme: dark)" data-md-color-scheme=slate data-md-color-primary=indigo data-md-color-accent=indigo aria-label="Switch to light mode" type=radio name=__palette id=__palette_1> <label class="md-header__button md-icon" title="Switch to light mode" for=__palette_0 hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 18c-.89 0-1.74-.2-2.5-.55C11.56 16.5 13 14.42 13 12s-1.44-4.5-3.5-5.45C10.26 6.2 11.11 6 12 6a6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12z"/></svg> </label> </form> <script>var palette=__md_get("__palette");if(palette&&palette.color){if("(prefers-color-scheme)"===palette.color.media){var media=matchMedia("(prefers-color-scheme: light)"),input=document.querySelector(media.matches?"[data-md-color-media='(prefers-color-scheme: light)']":"[data-md-color-media='(prefers-color-scheme: dark)']");palette.color.media=input.getAttribute("data-md-color-media"),palette.color.scheme=input.getAttribute("data-md-color-scheme"),palette.color.primary=input.getAttribute("data-md-color-primary"),palette.color.accent=input.getAttribute("data-md-color-accent")}for(var[key,value]of Object.entries(palette.color))document.body.setAttribute("data-md-color-"+key,value)}</script> <label class="md-header__button md-icon" for=__search> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg> </label> <div class=md-search data-md-component=search role=dialog> <label class=md-search__overlay for=__search></label> <div class=md-search__inner role=search> <form class=md-search__form name=search> <input type=text class=md-search__input name=query aria-label=Search placeholder=Search autocapitalize=off autocorrect=off autocomplete=off spellcheck=false data-md-component=search-query required> <label class="md-search__icon md-icon" for=__search> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11z"/></svg> </label> <nav class=md-search__options aria-label=Search> <button type=reset class="md-search__icon md-icon" title=Clear aria-label=Clear tabindex=-1> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z"/></svg> </button> </nav> </form> <div class=md-search__output> <div class=md-search__scrollwrap tabindex=0 data-md-scrollfix> <div class=md-search-result data-md-component=search-result> <div class=md-search-result__meta> Initializing search </div> <ol class=md-search-result__list role=presentation></ol> </div> </div> </div> </div> </div> <div class=md-header__source> <a href="https://github.com/nlohmann/json" title="Go to repository" class="md-source" data-md-component="source"> <div class="md-source__icon md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </div> <div class=md-source__repository> nlohmann/json </div> </a> </div> </nav> </header> <div class=md-container data-md-component=container> <nav class=md-tabs aria-label=Tabs data-md-component=tabs> <div class=md-grid> <ul class=md-tabs__list> <li class=md-tabs__item> <a href=../../.. class=md-tabs__link> Home </a> </li> <li class=md-tabs__item> <a href=../../../features/arbitrary_types/ class=md-tabs__link> Features </a> </li> <li class=md-tabs__item> <a href=../../../integration/ class=md-tabs__link> Integration </a> </li> <li class="md-tabs__item md-tabs__item--active"> <a href=../ class=md-tabs__link> API Documentation </a> </li> <li class=md-tabs__item> <a href=../../../community/ class=md-tabs__link> Community </a> </li> </ul> </div> </nav> <main class=md-main data-md-component=main> <div class="md-main__inner md-grid"> <div class="md-sidebar md-sidebar--primary" data-md-component=sidebar data-md-type=navigation> <div class=md-sidebar__scrollwrap> <div class=md-sidebar__inner> <nav class="md-nav md-nav--primary md-nav--lifted" aria-label=Navigation data-md-level=0> <label class=md-nav__title for=__drawer> <a href=../../.. title="JSON for Modern C++" class="md-nav__button md-logo" aria-label="JSON for Modern C++" data-md-component=logo> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54"/></svg> </a> JSON for Modern C++ </label> <div class=md-nav__source> <a href="https://github.com/nlohmann/json" title="Go to repository" class="md-source" data-md-component="source"> <div class="md-source__icon md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </div> <div class=md-source__repository> nlohmann/json </div> </a> </div> <ul class=md-nav__list data-md-scrollfix> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_1> <div class="md-nav__link md-nav__container"> <a href=../../.. class="md-nav__link "> <span class=md-ellipsis> Home </span> </a> <label class="md-nav__link " for=__nav_1 id=__nav_1_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_1_label aria-expanded=false> <label class=md-nav__title for=__nav_1> <span class="md-nav__icon md-icon"></span> Home </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../home/license/ class=md-nav__link> <span class=md-ellipsis> License </span> </a> </li> <li class=md-nav__item> <a href=../../../home/faq/ class=md-nav__link> <span class=md-ellipsis> FAQ </span> </a> </li> <li class=md-nav__item> <a href=../../../home/exceptions/ class=md-nav__link> <span class=md-ellipsis> Exceptions </span> </a> </li> <li class=md-nav__item> <a href=../../../home/releases/ class=md-nav__link> <span class=md-ellipsis> Releases </span> </a> </li> <li class=md-nav__item> <a href=../../../home/design_goals/ class=md-nav__link> <span class=md-ellipsis> Design goals </span> </a> </li> <li class=md-nav__item> <a href=../../../home/architecture/ class=md-nav__link> <span class=md-ellipsis> Architecture </span> </a> </li> <li class=md-nav__item> <a href=../../../home/customers/ class=md-nav__link> <span class=md-ellipsis> Customers </span> </a> </li> <li class=md-nav__item> <a href=../../../home/sponsors/ class=md-nav__link> <span class=md-ellipsis> Sponsors </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2> <label class=md-nav__link for=__nav_2 id=__nav_2_label tabindex=0> <span class=md-ellipsis> Features </span> <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_2_label aria-expanded=false> <label class=md-nav__title for=__nav_2> <span class="md-nav__icon md-icon"></span> Features </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/arbitrary_types/ class=md-nav__link> <span class=md-ellipsis> Arbitrary Type Conversions </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_2> <div class="md-nav__link md-nav__container"> <a href=../../../features/binary_formats/ class="md-nav__link "> <span class=md-ellipsis> Binary Formats </span> </a> <label class="md-nav__link " for=__nav_2_2 id=__nav_2_2_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_2_label aria-expanded=false> <label class=md-nav__title for=__nav_2_2> <span class="md-nav__icon md-icon"></span> Binary Formats </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/binary_formats/bjdata/ class=md-nav__link> <span class=md-ellipsis> BJData </span> </a> </li> <li class=md-nav__item> <a href=../../../features/binary_formats/bson/ class=md-nav__link> <span class=md-ellipsis> BSON </span> </a> </li> <li class=md-nav__item> <a href=../../../features/binary_formats/cbor/ class=md-nav__link> <span class=md-ellipsis> CBOR </span> </a> </li> <li class=md-nav__item> <a href=../../../features/binary_formats/messagepack/ class=md-nav__link> <span class=md-ellipsis> MessagePack </span> </a> </li> <li class=md-nav__item> <a href=../../../features/binary_formats/ubjson/ class=md-nav__link> <span class=md-ellipsis> UBJSON </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../../features/binary_values/ class=md-nav__link> <span class=md-ellipsis> Binary Values </span> </a> </li> <li class=md-nav__item> <a href=../../../features/comments/ class=md-nav__link> <span class=md-ellipsis> Comments </span> </a> </li> <li class=md-nav__item> <a href=../../../features/trailing_commas/ class=md-nav__link> <span class=md-ellipsis> Trailing Commas </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_6> <div class="md-nav__link md-nav__container"> <a href=../../../features/element_access/ class="md-nav__link "> <span class=md-ellipsis> Element Access </span> </a> <label class="md-nav__link " for=__nav_2_6 id=__nav_2_6_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_6_label aria-expanded=false> <label class=md-nav__title for=__nav_2_6> <span class="md-nav__icon md-icon"></span> Element Access </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/element_access/unchecked_access/ class=md-nav__link> <span class=md-ellipsis> Unchecked access: operator[] </span> </a> </li> <li class=md-nav__item> <a href=../../../features/element_access/checked_access/ class=md-nav__link> <span class=md-ellipsis> Checked access: at </span> </a> </li> <li class=md-nav__item> <a href=../../../features/element_access/default_value/ class=md-nav__link> <span class=md-ellipsis> Access with default value: value </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../../features/iterators/ class=md-nav__link> <span class=md-ellipsis> Iterators </span> </a> </li> <li class=md-nav__item> <a href=../../../features/json_pointer/ class=md-nav__link> <span class=md-ellipsis> JSON Pointer </span> </a> </li> <li class=md-nav__item> <a href=../../../features/json_patch/ class=md-nav__link> <span class=md-ellipsis> JSON Patch and Diff </span> </a> </li> <li class=md-nav__item> <a href=../../../features/merge_patch/ class=md-nav__link> <span class=md-ellipsis> JSON Merge Patch </span> </a> </li> <li class=md-nav__item> <a href=../../../features/modules/ class=md-nav__link> <span class=md-ellipsis> Modules </span> </a> </li> <li class=md-nav__item> <a href=../../../features/namespace/ class=md-nav__link> <span class=md-ellipsis> nlohmann Namespace </span> </a> </li> <li class=md-nav__item> <a href=../../../features/object_order/ class=md-nav__link> <span class=md-ellipsis> Object Order </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_14> <div class="md-nav__link md-nav__container"> <a href=../../../features/parsing/ class="md-nav__link "> <span class=md-ellipsis> Parsing </span> </a> <label class="md-nav__link " for=__nav_2_14 id=__nav_2_14_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_14_label aria-expanded=false> <label class=md-nav__title for=__nav_2_14> <span class="md-nav__icon md-icon"></span> Parsing </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/parsing/json_lines/ class=md-nav__link> <span class=md-ellipsis> JSON Lines </span> </a> </li> <li class=md-nav__item> <a href=../../../features/parsing/parse_exceptions/ class=md-nav__link> <span class=md-ellipsis> Parsing and Exceptions </span> </a> </li> <li class=md-nav__item> <a href=../../../features/parsing/parser_callbacks/ class=md-nav__link> <span class=md-ellipsis> Parser Callbacks </span> </a> </li> <li class=md-nav__item> <a href=../../../features/parsing/sax_interface/ class=md-nav__link> <span class=md-ellipsis> SAX Interface </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../../features/assertions/ class=md-nav__link> <span class=md-ellipsis> Runtime Assertions </span> </a> </li> <li class=md-nav__item> <a href=../../../features/enum_conversion/ class=md-nav__link> <span class=md-ellipsis> Specializing enum conversion </span> </a> </li> <li class=md-nav__item> <a href=../../../features/macros/ class=md-nav__link> <span class=md-ellipsis> Supported Macros </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_18> <div class="md-nav__link md-nav__container"> <a href=../../../features/types/ class="md-nav__link "> <span class=md-ellipsis> Types </span> </a> <label class="md-nav__link " for=__nav_2_18 id=__nav_2_18_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_18_label aria-expanded=false> <label class=md-nav__title for=__nav_2_18> <span class="md-nav__icon md-icon"></span> Types </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/types/number_handling/ class=md-nav__link> <span class=md-ellipsis> Number Handling </span> </a> </li> </ul> </nav> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_3> <div class="md-nav__link md-nav__container"> <a href=../../../integration/ class="md-nav__link "> <span class=md-ellipsis> Integration </span> </a> <label class="md-nav__link " for=__nav_3 id=__nav_3_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_3_label aria-expanded=false> <label class=md-nav__title for=__nav_3> <span class="md-nav__icon md-icon"></span> Integration </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../integration/migration_guide/ class=md-nav__link> <span class=md-ellipsis> Migration Guide </span> </a> </li> <li class=md-nav__item> <a href=../../../integration/cmake/ class=md-nav__link> <span class=md-ellipsis> CMake </span> </a> </li> <li class=md-nav__item> <a href=../../../integration/package_managers/ class=md-nav__link> <span class=md-ellipsis> Package Managers </span> </a> </li> <li class=md-nav__item> <a href=../../../integration/pkg-config/ class=md-nav__link> <span class=md-ellipsis> Pkg-config </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--active md-nav__item--section md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4 checked> <label class=md-nav__link for=__nav_4 id=__nav_4_label tabindex> <span class=md-ellipsis> API Documentation </span> <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_4_label aria-expanded=true> <label class=md-nav__title for=__nav_4> <span class="md-nav__icon md-icon"></span> API Documentation </label> <ul class=md-nav__list data-md-scrollfix> <li class="md-nav__item md-nav__item--active md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_1 checked> <div class="md-nav__link md-nav__container"> <a href=../ class="md-nav__link "> <span class=md-ellipsis> basic_json </span> </a> <label class="md-nav__link " for=__nav_4_1 id=__nav_4_1_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_1_label aria-expanded=true> <label class=md-nav__title for=__nav_4_1> <span class="md-nav__icon md-icon"></span> basic_json </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../basic_json/ class=md-nav__link> <span class=md-ellipsis> (Constructor) </span> </a> </li> <li class=md-nav__item> <a href=../~basic_json/ class=md-nav__link> <span class=md-ellipsis> (Destructor) </span> </a> </li> <li class=md-nav__item> <a href=../accept/ class=md-nav__link> <span class=md-ellipsis> accept </span> </a> </li> <li class=md-nav__item> <a href=../array/ class=md-nav__link> <span class=md-ellipsis> array </span> </a> </li> <li class=md-nav__item> <a href=../array_t/ class=md-nav__link> <span class=md-ellipsis> array_t </span> </a> </li> <li class=md-nav__item> <a href=../at/ class=md-nav__link> <span class=md-ellipsis> at </span> </a> </li> <li class=md-nav__item> <a href=../back/ class=md-nav__link> <span class=md-ellipsis> back </span> </a> </li> <li class=md-nav__item> <a href=../begin/ class=md-nav__link> <span class=md-ellipsis> begin </span> </a> </li> <li class=md-nav__item> <a href=../binary/ class=md-nav__link> <span class=md-ellipsis> binary </span> </a> </li> <li class=md-nav__item> <a href=../binary_t/ class=md-nav__link> <span class=md-ellipsis> binary_t </span> </a> </li> <li class=md-nav__item> <a href=../boolean_t/ class=md-nav__link> <span class=md-ellipsis> boolean_t </span> </a> </li> <li class=md-nav__item> <a href=../cbegin/ class=md-nav__link> <span class=md-ellipsis> cbegin </span> </a> </li> <li class=md-nav__item> <a href=../cbor_tag_handler_t/ class=md-nav__link> <span class=md-ellipsis> cbor_tag_handler_t </span> </a> </li> <li class=md-nav__item> <a href=../cend/ class=md-nav__link> <span class=md-ellipsis> cend </span> </a> </li> <li class=md-nav__item> <a href=../clear/ class=md-nav__link> <span class=md-ellipsis> clear </span> </a> </li> <li class=md-nav__item> <a href=../contains/ class=md-nav__link> <span class=md-ellipsis> contains </span> </a> </li> <li class=md-nav__item> <a href=../count/ class=md-nav__link> <span class=md-ellipsis> count </span> </a> </li> <li class=md-nav__item> <a href=../crbegin/ class=md-nav__link> <span class=md-ellipsis> crbegin </span> </a> </li> <li class=md-nav__item> <a href=../crend/ class=md-nav__link> <span class=md-ellipsis> crend </span> </a> </li> <li class=md-nav__item> <a href=../default_object_comparator_t/ class=md-nav__link> <span class=md-ellipsis> default_object_comparator_t </span> </a> </li> <li class=md-nav__item> <a href=../diff/ class=md-nav__link> <span class=md-ellipsis> diff </span> </a> </li> <li class=md-nav__item> <a href=../dump/ class=md-nav__link> <span class=md-ellipsis> dump </span> </a> </li> <li class=md-nav__item> <a href=../emplace/ class=md-nav__link> <span class=md-ellipsis> emplace </span> </a> </li> <li class=md-nav__item> <a href=../emplace_back/ class=md-nav__link> <span class=md-ellipsis> emplace_back </span> </a> </li> <li class=md-nav__item> <a href=../empty/ class=md-nav__link> <span class=md-ellipsis> empty </span> </a> </li> <li class=md-nav__item> <a href=../end/ class=md-nav__link> <span class=md-ellipsis> end </span> </a> </li> <li class=md-nav__item> <a href=../end_pos/ class=md-nav__link> <span class=md-ellipsis> end_pos </span> </a> </li> <li class=md-nav__item> <a href=../erase/ class=md-nav__link> <span class=md-ellipsis> erase </span> </a> </li> <li class=md-nav__item> <a href=../error_handler_t/ class=md-nav__link> <span class=md-ellipsis> error_handler_t </span> </a> </li> <li class=md-nav__item> <a href=../exception/ class=md-nav__link> <span class=md-ellipsis> exception </span> </a> </li> <li class=md-nav__item> <a href=../find/ class=md-nav__link> <span class=md-ellipsis> find </span> </a> </li> <li class=md-nav__item> <a href=../flatten/ class=md-nav__link> <span class=md-ellipsis> flatten </span> </a> </li> <li class=md-nav__item> <a href=../from_bjdata/ class=md-nav__link> <span class=md-ellipsis> from_bjdata </span> </a> </li> <li class=md-nav__item> <a href=../from_bson/ class=md-nav__link> <span class=md-ellipsis> from_bson </span> </a> </li> <li class=md-nav__item> <a href=../from_cbor/ class=md-nav__link> <span class=md-ellipsis> from_cbor </span> </a> </li> <li class=md-nav__item> <a href=../from_msgpack/ class=md-nav__link> <span class=md-ellipsis> from_msgpack </span> </a> </li> <li class=md-nav__item> <a href=../from_ubjson/ class=md-nav__link> <span class=md-ellipsis> from_ubjson </span> </a> </li> <li class=md-nav__item> <a href=../front/ class=md-nav__link> <span class=md-ellipsis> front </span> </a> </li> <li class=md-nav__item> <a href=../get/ class=md-nav__link> <span class=md-ellipsis> get </span> </a> </li> <li class=md-nav__item> <a href=../get_allocator/ class=md-nav__link> <span class=md-ellipsis> get_allocator </span> </a> </li> <li class=md-nav__item> <a href=../get_binary/ class=md-nav__link> <span class=md-ellipsis> get_binary </span> </a> </li> <li class=md-nav__item> <a href=../get_ptr/ class=md-nav__link> <span class=md-ellipsis> get_ptr </span> </a> </li> <li class=md-nav__item> <a href=../get_ref/ class=md-nav__link> <span class=md-ellipsis> get_ref </span> </a> </li> <li class=md-nav__item> <a href=../get_to/ class=md-nav__link> <span class=md-ellipsis> get_to </span> </a> </li> <li class=md-nav__item> <a href=../std_hash/ class=md-nav__link> <span class=md-ellipsis> std::hash&lt;basic_json&gt; </span> </a> </li> <li class=md-nav__item> <a href=../input_format_t/ class=md-nav__link> <span class=md-ellipsis> input_format_t </span> </a> </li> <li class=md-nav__item> <a href=../insert/ class=md-nav__link> <span class=md-ellipsis> insert </span> </a> </li> <li class=md-nav__item> <a href=../invalid_iterator/ class=md-nav__link> <span class=md-ellipsis> invalid_iterator </span> </a> </li> <li class=md-nav__item> <a href=../is_array/ class=md-nav__link> <span class=md-ellipsis> is_array </span> </a> </li> <li class=md-nav__item> <a href=../is_binary/ class=md-nav__link> <span class=md-ellipsis> is_binary </span> </a> </li> <li class=md-nav__item> <a href=../is_boolean/ class=md-nav__link> <span class=md-ellipsis> is_boolean </span> </a> </li> <li class=md-nav__item> <a href=../is_discarded/ class=md-nav__link> <span class=md-ellipsis> is_discarded </span> </a> </li> <li class=md-nav__item> <a href=../is_null/ class=md-nav__link> <span class=md-ellipsis> is_null </span> </a> </li> <li class="md-nav__item md-nav__item--active"> <input class="md-nav__toggle md-toggle" type=checkbox id=__toc> <label class="md-nav__link md-nav__link--active" for=__toc> <span class=md-ellipsis> is_number </span> <span class="md-nav__icon md-icon"></span> </label> <a href=./ class="md-nav__link md-nav__link--active"> <span class=md-ellipsis> is_number </span> </a> <nav class="md-nav md-nav--secondary" aria-label="Table of contents"> <label class=md-nav__title for=__toc> <span class="md-nav__icon md-icon"></span> Table of contents </label> <ul class=md-nav__list data-md-component=toc data-md-scrollfix> <li class=md-nav__item> <a href=#return-value class=md-nav__link> <span class=md-ellipsis> Return value </span> </a> </li> <li class=md-nav__item> <a href=#exception-safety class=md-nav__link> <span class=md-ellipsis> Exception safety </span> </a> </li> <li class=md-nav__item> <a href=#complexity class=md-nav__link> <span class=md-ellipsis> Complexity </span> </a> </li> <li class=md-nav__item> <a href=#possible-implementation class=md-nav__link> <span class=md-ellipsis> Possible implementation </span> </a> </li> <li class=md-nav__item> <a href=#examples class=md-nav__link> <span class=md-ellipsis> Examples </span> </a> </li> <li class=md-nav__item> <a href=#see-also class=md-nav__link> <span class=md-ellipsis> See also </span> </a> </li> <li class=md-nav__item> <a href=#version-history class=md-nav__link> <span class=md-ellipsis> Version history </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../is_number_float/ class=md-nav__link> <span class=md-ellipsis> is_number_float </span> </a> </li> <li class=md-nav__item> <a href=../is_number_integer/ class=md-nav__link> <span class=md-ellipsis> is_number_integer </span> </a> </li> <li class=md-nav__item> <a href=../is_number_unsigned/ class=md-nav__link> <span class=md-ellipsis> is_number_unsigned </span> </a> </li> <li class=md-nav__item> <a href=../is_object/ class=md-nav__link> <span class=md-ellipsis> is_object </span> </a> </li> <li class=md-nav__item> <a href=../is_primitive/ class=md-nav__link> <span class=md-ellipsis> is_primitive </span> </a> </li> <li class=md-nav__item> <a href=../is_string/ class=md-nav__link> <span class=md-ellipsis> is_string </span> </a> </li> <li class=md-nav__item> <a href=../is_structured/ class=md-nav__link> <span class=md-ellipsis> is_structured </span> </a> </li> <li class=md-nav__item> <a href=../items/ class=md-nav__link> <span class=md-ellipsis> items </span> </a> </li> <li class=md-nav__item> <a href=../json_base_class_t/ class=md-nav__link> <span class=md-ellipsis> json_base_class_t </span> </a> </li> <li class=md-nav__item> <a href=../json_serializer/ class=md-nav__link> <span class=md-ellipsis> json_serializer </span> </a> </li> <li class=md-nav__item> <a href=../max_size/ class=md-nav__link> <span class=md-ellipsis> max_size </span> </a> </li> <li class=md-nav__item> <a href=../meta/ class=md-nav__link> <span class=md-ellipsis> meta </span> </a> </li> <li class=md-nav__item> <a href=../merge_patch/ class=md-nav__link> <span class=md-ellipsis> merge_patch </span> </a> </li> <li class=md-nav__item> <a href=../number_float_t/ class=md-nav__link> <span class=md-ellipsis> number_float_t </span> </a> </li> <li class=md-nav__item> <a href=../number_integer_t/ class=md-nav__link> <span class=md-ellipsis> number_integer_t </span> </a> </li> <li class=md-nav__item> <a href=../number_unsigned_t/ class=md-nav__link> <span class=md-ellipsis> number_unsigned_t </span> </a> </li> <li class=md-nav__item> <a href=../object/ class=md-nav__link> <span class=md-ellipsis> object </span> </a> </li> <li class=md-nav__item> <a href=../object_comparator_t/ class=md-nav__link> <span class=md-ellipsis> object_comparator_t </span> </a> </li> <li class=md-nav__item> <a href=../object_t/ class=md-nav__link> <span class=md-ellipsis> object_t </span> </a> </li> <li class=md-nav__item> <a href=../operator_ValueType/ class=md-nav__link> <span class=md-ellipsis> operator ValueType </span> </a> </li> <li class=md-nav__item> <a href=../operator_value_t/ class=md-nav__link> <span class=md-ellipsis> operator value_t </span> </a> </li> <li class=md-nav__item> <a href=../operator%5B%5D/ class=md-nav__link> <span class=md-ellipsis> operator[] </span> </a> </li> <li class=md-nav__item> <a href=../operator%3D/ class=md-nav__link> <span class=md-ellipsis> operator= </span> </a> </li> <li class=md-nav__item> <a href=../operator%2B%3D/ class=md-nav__link> <span class=md-ellipsis> operator+= </span> </a> </li> <li class=md-nav__item> <a href=../operator_eq/ class=md-nav__link> <span class=md-ellipsis> operator== </span> </a> </li> <li class=md-nav__item> <a href=../operator_ne/ class=md-nav__link> <span class=md-ellipsis> operator!= </span> </a> </li> <li class=md-nav__item> <a href=../operator_lt/ class=md-nav__link> <span class=md-ellipsis> operator< </span> </a> </li> <li class=md-nav__item> <a href=../operator_gt/ class=md-nav__link> <span class=md-ellipsis> operator> </span> </a> </li> <li class=md-nav__item> <a href=../operator_le/ class=md-nav__link> <span class=md-ellipsis> operator<= </span> </a> </li> <li class=md-nav__item> <a href=../operator_ge/ class=md-nav__link> <span class=md-ellipsis> operator>= </span> </a> </li> <li class=md-nav__item> <a href=../operator_spaceship/ class=md-nav__link> <span class=md-ellipsis> operator<=> </span> </a> </li> <li class=md-nav__item> <a href=../out_of_range/ class=md-nav__link> <span class=md-ellipsis> out_of_range </span> </a> </li> <li class=md-nav__item> <a href=../other_error/ class=md-nav__link> <span class=md-ellipsis> other_error </span> </a> </li> <li class=md-nav__item> <a href=../parse/ class=md-nav__link> <span class=md-ellipsis> parse </span> </a> </li> <li class=md-nav__item> <a href=../parse_error/ class=md-nav__link> <span class=md-ellipsis> parse_error </span> </a> </li> <li class=md-nav__item> <a href=../parse_event_t/ class=md-nav__link> <span class=md-ellipsis> parse_event_t </span> </a> </li> <li class=md-nav__item> <a href=../parser_callback_t/ class=md-nav__link> <span class=md-ellipsis> parser_callback_t </span> </a> </li> <li class=md-nav__item> <a href=../patch/ class=md-nav__link> <span class=md-ellipsis> patch </span> </a> </li> <li class=md-nav__item> <a href=../patch_inplace/ class=md-nav__link> <span class=md-ellipsis> patch_inplace </span> </a> </li> <li class=md-nav__item> <a href=../push_back/ class=md-nav__link> <span class=md-ellipsis> push_back </span> </a> </li> <li class=md-nav__item> <a href=../rbegin/ class=md-nav__link> <span class=md-ellipsis> rbegin </span> </a> </li> <li class=md-nav__item> <a href=../rend/ class=md-nav__link> <span class=md-ellipsis> rend </span> </a> </li> <li class=md-nav__item> <a href=../sax_parse/ class=md-nav__link> <span class=md-ellipsis> sax_parse </span> </a> </li> <li class=md-nav__item> <a href=../size/ class=md-nav__link> <span class=md-ellipsis> size </span> </a> </li> <li class=md-nav__item> <a href=../start_pos/ class=md-nav__link> <span class=md-ellipsis> start_pos </span> </a> </li> <li class=md-nav__item> <a href=../string_t/ class=md-nav__link> <span class=md-ellipsis> string_t </span> </a> </li> <li class=md-nav__item> <a href=../swap/ class=md-nav__link> <span class=md-ellipsis> swap </span> </a> </li> <li class=md-nav__item> <a href=../std_swap/ class=md-nav__link> <span class=md-ellipsis> std::swap&lt;basic_json&gt; </span> </a> </li> <li class=md-nav__item> <a href=../to_bjdata/ class=md-nav__link> <span class=md-ellipsis> to_bjdata </span> </a> </li> <li class=md-nav__item> <a href=../to_bson/ class=md-nav__link> <span class=md-ellipsis> to_bson </span> </a> </li> <li class=md-nav__item> <a href=../to_cbor/ class=md-nav__link> <span class=md-ellipsis> to_cbor </span> </a> </li> <li class=md-nav__item> <a href=../to_msgpack/ class=md-nav__link> <span class=md-ellipsis> to_msgpack </span> </a> </li> <li class=md-nav__item> <a href=../to_string/ class=md-nav__link> <span class=md-ellipsis> to_string </span> </a> </li> <li class=md-nav__item> <a href=../to_ubjson/ class=md-nav__link> <span class=md-ellipsis> to_ubjson </span> </a> </li> <li class=md-nav__item> <a href=../type/ class=md-nav__link> <span class=md-ellipsis> type </span> </a> </li> <li class=md-nav__item> <a href=../type_error/ class=md-nav__link> <span class=md-ellipsis> type_error </span> </a> </li> <li class=md-nav__item> <a href=../type_name/ class=md-nav__link> <span class=md-ellipsis> type_name </span> </a> </li> <li class=md-nav__item> <a href=../unflatten/ class=md-nav__link> <span class=md-ellipsis> unflatten </span> </a> </li> <li class=md-nav__item> <a href=../update/ class=md-nav__link> <span class=md-ellipsis> update </span> </a> </li> <li class=md-nav__item> <a href=../value/ class=md-nav__link> <span class=md-ellipsis> value </span> </a> </li> <li class=md-nav__item> <a href=../value_t/ class=md-nav__link> <span class=md-ellipsis> value_t </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_2> <div class="md-nav__link md-nav__container"> <a href=../../byte_container_with_subtype/ class="md-nav__link "> <span class=md-ellipsis> byte_container_with_subtype </span> </a> <label class="md-nav__link " for=__nav_4_2 id=__nav_4_2_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_2_label aria-expanded=false> <label class=md-nav__title for=__nav_4_2> <span class="md-nav__icon md-icon"></span> byte_container_with_subtype </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../byte_container_with_subtype/byte_container_with_subtype/ class=md-nav__link> <span class=md-ellipsis> (constructor) </span> </a> </li> <li class=md-nav__item> <a href=../../byte_container_with_subtype/clear_subtype/ class=md-nav__link> <span class=md-ellipsis> clear_subtype </span> </a> </li> <li class=md-nav__item> <a href=../../byte_container_with_subtype/has_subtype/ class=md-nav__link> <span class=md-ellipsis> has_subtype </span> </a> </li> <li class=md-nav__item> <a href=../../byte_container_with_subtype/set_subtype/ class=md-nav__link> <span class=md-ellipsis> set_subtype </span> </a> </li> <li class=md-nav__item> <a href=../../byte_container_with_subtype/subtype/ class=md-nav__link> <span class=md-ellipsis> subtype </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_3> <div class="md-nav__link md-nav__container"> <a href=../../adl_serializer/ class="md-nav__link "> <span class=md-ellipsis> adl_serializer </span> </a> <label class="md-nav__link " for=__nav_4_3 id=__nav_4_3_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_3_label aria-expanded=false> <label class=md-nav__title for=__nav_4_3> <span class="md-nav__icon md-icon"></span> adl_serializer </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../adl_serializer/from_json/ class=md-nav__link> <span class=md-ellipsis> from_json </span> </a> </li> <li class=md-nav__item> <a href=../../adl_serializer/to_json/ class=md-nav__link> <span class=md-ellipsis> to_json </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../json/ class=md-nav__link> <span class=md-ellipsis> json </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_5> <div class="md-nav__link md-nav__container"> <a href=../../json_pointer/ class="md-nav__link "> <span class=md-ellipsis> json_pointer </span> </a> <label class="md-nav__link " for=__nav_4_5 id=__nav_4_5_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_5_label aria-expanded=false> <label class=md-nav__title for=__nav_4_5> <span class="md-nav__icon md-icon"></span> json_pointer </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../json_pointer/json_pointer/ class=md-nav__link> <span class=md-ellipsis> (Constructor) </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/back/ class=md-nav__link> <span class=md-ellipsis> back </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/empty/ class=md-nav__link> <span class=md-ellipsis> empty </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/front/ class=md-nav__link> <span class=md-ellipsis> front </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_string_t/ class=md-nav__link> <span class=md-ellipsis> operator string_t </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_eq/ class=md-nav__link> <span class=md-ellipsis> operator== </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_ne/ class=md-nav__link> <span class=md-ellipsis> operator!= </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_slash/ class=md-nav__link> <span class=md-ellipsis> operator/ </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_slasheq/ class=md-nav__link> <span class=md-ellipsis> operator/= </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/parent_pointer/ class=md-nav__link> <span class=md-ellipsis> parent_pointer </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/pop_back/ class=md-nav__link> <span class=md-ellipsis> pop_back </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/pop_front/ class=md-nav__link> <span class=md-ellipsis> pop_front </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/push_back/ class=md-nav__link> <span class=md-ellipsis> push_back </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/push_front/ class=md-nav__link> <span class=md-ellipsis> push_front </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/string_t/ class=md-nav__link> <span class=md-ellipsis> string_t </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/to_string/ class=md-nav__link> <span class=md-ellipsis> to_string </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_6> <div class="md-nav__link md-nav__container"> <a href=../../json_sax/ class="md-nav__link "> <span class=md-ellipsis> json_sax </span> </a> <label class="md-nav__link " for=__nav_4_6 id=__nav_4_6_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_6_label aria-expanded=false> <label class=md-nav__title for=__nav_4_6> <span class="md-nav__icon md-icon"></span> json_sax </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../json_sax/binary/ class=md-nav__link> <span class=md-ellipsis> binary </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/boolean/ class=md-nav__link> <span class=md-ellipsis> boolean </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/end_array/ class=md-nav__link> <span class=md-ellipsis> end_array </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/end_object/ class=md-nav__link> <span class=md-ellipsis> end_object </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/key/ class=md-nav__link> <span class=md-ellipsis> key </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/null/ class=md-nav__link> <span class=md-ellipsis> null </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/number_float/ class=md-nav__link> <span class=md-ellipsis> number_float </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/number_integer/ class=md-nav__link> <span class=md-ellipsis> number_integer </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/number_unsigned/ class=md-nav__link> <span class=md-ellipsis> number_unsigned </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/parse_error/ class=md-nav__link> <span class=md-ellipsis> parse_error </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/start_array/ class=md-nav__link> <span class=md-ellipsis> start_array </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/start_object/ class=md-nav__link> <span class=md-ellipsis> start_object </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/string/ class=md-nav__link> <span class=md-ellipsis> string </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../operator_ltlt/ class=md-nav__link> <span class=md-ellipsis> operator<<(basic_json), operator<<(json_pointer) </span> </a> </li> <li class=md-nav__item> <a href=../../operator_gtgt/ class=md-nav__link> <span class=md-ellipsis> operator>>(basic_json) </span> </a> </li> <li class=md-nav__item> <a href=../../operator_literal_json/ class=md-nav__link> <span class=md-ellipsis> operator""_json </span> </a> </li> <li class=md-nav__item> <a href=../../operator_literal_json_pointer/ class=md-nav__link> <span class=md-ellipsis> operator""_json_pointer </span> </a> </li> <li class=md-nav__item> <a href=../../ordered_json/ class=md-nav__link> <span class=md-ellipsis> ordered_json </span> </a> </li> <li class=md-nav__item> <a href=../../ordered_map/ class=md-nav__link> <span class=md-ellipsis> ordered_map </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_13> <div class="md-nav__link md-nav__container"> <a href=../../macros/ class="md-nav__link "> <span class=md-ellipsis> macros </span> </a> <label class="md-nav__link " for=__nav_4_13 id=__nav_4_13_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_13_label aria-expanded=false> <label class=md-nav__title for=__nav_4_13> <span class="md-nav__icon md-icon"></span> macros </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../macros/json_assert/ class=md-nav__link> <span class=md-ellipsis> JSON_ASSERT </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_brace_init_copy_semantics/ class=md-nav__link> <span class=md-ellipsis> JSON_BRACE_INIT_COPY_SEMANTICS </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_throw_user/ class=md-nav__link> <span class=md-ellipsis> JSON_CATCH_USER, JSON_THROW_USER, JSON_TRY_USER </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_diagnostics/ class=md-nav__link> <span class=md-ellipsis> JSON_DIAGNOSTICS </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_diagnostic_positions/ class=md-nav__link> <span class=md-ellipsis> JSON_DIAGNOSTIC_POSITIONS </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_disable_enum_serialization/ class=md-nav__link> <span class=md-ellipsis> JSON_DISABLE_ENUM_SERIALIZATION </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_has_cpp_11/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_CPP_11, JSON_HAS_CPP_14, JSON_HAS_CPP_17, JSON_HAS_CPP_20 </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_has_filesystem/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_EXPERIMENTAL_FILESYSTEM, JSON_HAS_FILESYSTEM </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_has_ranges/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_RANGES </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_has_static_rtti/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_STATIC_RTTI </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_has_three_way_comparison/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_THREE_WAY_COMPARISON </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_noexception/ class=md-nav__link> <span class=md-ellipsis> JSON_NOEXCEPTION </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_no_io/ class=md-nav__link> <span class=md-ellipsis> JSON_NO_IO </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_skip_library_version_check/ class=md-nav__link> <span class=md-ellipsis> JSON_SKIP_LIBRARY_VERSION_CHECK </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_skip_unsupported_compiler_check/ class=md-nav__link> <span class=md-ellipsis> JSON_SKIP_UNSUPPORTED_COMPILER_CHECK </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_use_global_udls/ class=md-nav__link> <span class=md-ellipsis> JSON_USE_GLOBAL_UDLS </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_use_implicit_conversions/ class=md-nav__link> <span class=md-ellipsis> JSON_USE_IMPLICIT_CONVERSIONS </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_use_legacy_discarded_value_comparison/ class=md-nav__link> <span class=md-ellipsis> JSON_USE_LEGACY_DISCARDED_VALUE_COMPARISON </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_define_derived_type/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_ONLY_SERIALIZE, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_define_type_intrusive/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_TYPE_INTRUSIVE, NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_TYPE_INTRUSIVE_ONLY_SERIALIZE </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_define_type_non_intrusive/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_define_type_with_names/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_TYPE_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_namespace/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_NAMESPACE </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_namespace_begin/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_NAMESPACE_BEGIN, NLOHMANN_JSON_NAMESPACE_END </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_namespace_no_version/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_NAMESPACE_NO_VERSION </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_serialize_enum/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_SERIALIZE_ENUM </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_serialize_enum_strict/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_SERIALIZE_ENUM_STRICT </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_version_major/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_VERSION_MAJOR, NLOHMANN_JSON_VERSION_MINOR, NLOHMANN_JSON_VERSION_PATCH </span> </a> </li> </ul> </nav> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_5> <div class="md-nav__link md-nav__container"> <a href=../../../community/ class="md-nav__link "> <span class=md-ellipsis> Community </span> </a> <label class="md-nav__link " for=__nav_5 id=__nav_5_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_5_label aria-expanded=false> <label class=md-nav__title for=__nav_5> <span class="md-nav__icon md-icon"></span> Community </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../community/code_of_conduct/ class=md-nav__link> <span class=md-ellipsis> Code of Conduct </span> </a> </li> <li class=md-nav__item> <a href=../../../community/contribution_guidelines/ class=md-nav__link> <span class=md-ellipsis> Contribution Guidelines </span> </a> </li> <li class=md-nav__item> <a href=../../../community/quality_assurance/ class=md-nav__link> <span class=md-ellipsis> Quality assurance </span> </a> </li> <li class=md-nav__item> <a href=../../../community/governance/ class=md-nav__link> <span class=md-ellipsis> Governance </span> </a> </li> <li class=md-nav__item> <a href=../../../community/security_policy/ class=md-nav__link> <span class=md-ellipsis> Security Policy </span> </a> </li> </ul> </nav> </li> </ul> </nav> </div> </div> </div> <div class="md-sidebar md-sidebar--secondary" data-md-component=sidebar data-md-type=toc> <div class=md-sidebar__scrollwrap> <div class=md-sidebar__inner> <nav class="md-nav md-nav--secondary" aria-label="Table of contents"> <label class=md-nav__title for=__toc> <span class="md-nav__icon md-icon"></span> Table of contents </label> <ul class=md-nav__list data-md-component=toc data-md-scrollfix> <li class=md-nav__item> <a href=#return-value class=md-nav__link> <span class=md-ellipsis> Return value </span> </a> </li> <li class=md-nav__item> <a href=#exception-safety class=md-nav__link> <span class=md-ellipsis> Exception safety </span> </a> </li> <li class=md-nav__item> <a href=#complexity class=md-nav__link> <span class=md-ellipsis> Complexity </span> </a> </li> <li class=md-nav__item> <a href=#possible-implementation class=md-nav__link> <span class=md-ellipsis> Possible implementation </span> </a> </li> <li class=md-nav__item> <a href=#examples class=md-nav__link> <span class=md-ellipsis> Examples </span> </a> </li> <li class=md-nav__item> <a href=#see-also class=md-nav__link> <span class=md-ellipsis> See also </span> </a> </li> <li class=md-nav__item> <a href=#version-history class=md-nav__link> <span class=md-ellipsis> Version history </span> </a> </li> </ul> </nav> </div> </div> </div> <div class=md-content data-md-component=content> <article class="md-content__inner md-typeset"> <a href="https://github.com/nlohmann/json/edit/develop/docs/mkdocs/docs/api/basic_json/is_number.md" title="Edit this page" class="md-content__button md-icon" rel="edit"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M10 20H6V4h7v5h5v3.1l2-2V8l-6-6H6c-1.1 0-2 .9-2 2v16c0 1.1.9 2 2 2h4zm10.2-7c.1 0 .3.1.4.2l1.3 1.3c.2.2.2.6 0 .8l-1 1-2.1-2.1 1-1c.1-.1.2-.2.4-.2m0 3.9L14.1 23H12v-2.1l6.1-6.1z"/></svg> </a> <a href="https://github.com/nlohmann/json/raw/develop/docs/mkdocs/docs/api/basic_json/is_number.md" title="View source of this page" class="md-content__button md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M17 18c.56 0 1 .44 1 1s-.44 1-1 1-1-.44-1-1 .44-1 1-1m0-3c-2.73 0-5.06 1.66-6 4 .94 2.34 3.27 4 6 4s5.06-1.66 6-4c-.94-2.34-3.27-4-6-4m0 6.5a2.5 2.5 0 0 1-2.5-2.5 2.5 2.5 0 0 1 2.5-2.5 2.5 2.5 0 0 1 2.5 2.5 2.5 2.5 0 0 1-2.5 2.5M9.27 20H6V4h7v5h5v4.07c.7.08 1.36.25 2 .49V8l-6-6H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h4.5a8.2 8.2 0 0 1-1.23-2"/></svg> </a> <h1 id=nlohmannbasic_jsonis_number><small>nlohmann::basic_json::</small>is_number<a class=headerlink href=#nlohmannbasic_jsonis_number title="Permanent link">&para;</a></h1> <div class=highlight><pre><span></span><code><span class=k>constexpr</span><span class=w> </span><span class=kt>bool</span><span class=w> </span><span class=nf>is_number</span><span class=p>()</span><span class=w> </span><span class=k>const</span><span class=w> </span><span class=k>noexcept</span><span class=p>;</span>
-</code></pre></div> <p>This function returns <code class=highlight><span class=nb>true</span></code> if and only if the <abbr title="JavaScript Object Notation">JSON</abbr> value is a number. This includes both integer (signed and unsigned) and floating-point values.</p> <h2 id=return-value>Return value<a class=headerlink href=#return-value title="Permanent link">&para;</a></h2> <p><code class=highlight><span class=nb>true</span></code> if type is number (regardless whether integer, unsigned integer, or floating-type), <code class=highlight><span class=nb>false</span></code> otherwise.</p> <h2 id=exception-safety>Exception safety<a class=headerlink href=#exception-safety title="Permanent link">&para;</a></h2> <p>No-throw guarantee: this member function never throws exceptions.</p> <h2 id=complexity>Complexity<a class=headerlink href=#complexity title="Permanent link">&para;</a></h2> <p>Constant.</p> <h2 id=possible-implementation>Possible implementation<a class=headerlink href=#possible-implementation title="Permanent link">&para;</a></h2> <div class=highlight><pre><span></span><code><span class=k>constexpr</span><span class=w> </span><span class=kt>bool</span><span class=w> </span><span class=nf>is_number</span><span class=p>()</span><span class=w> </span><span class=k>const</span><span class=w> </span><span class=k>noexcept</span>
+</code></pre></div> <p>This function returns <code class=highlight><span class=nb>true</span></code> if and only if the <abbr title="JavaScript Object Notation">JSON</abbr> value is a number. This includes both integer (signed and unsigned) and floating-point values.</p> <h2 id=return-value>Return value<a class=headerlink href=#return-value title="Permanent link">&para;</a></h2> <p><code class=highlight><span class=nb>true</span></code> if type is number (regardless whether integer, unsigned integer, or floating-point), <code class=highlight><span class=nb>false</span></code> otherwise.</p> <h2 id=exception-safety>Exception safety<a class=headerlink href=#exception-safety title="Permanent link">&para;</a></h2> <p>No-throw guarantee: this member function never throws exceptions.</p> <h2 id=complexity>Complexity<a class=headerlink href=#complexity title="Permanent link">&para;</a></h2> <p>Constant.</p> <h2 id=possible-implementation>Possible implementation<a class=headerlink href=#possible-implementation title="Permanent link">&para;</a></h2> <div class=highlight><pre><span></span><code><span class=k>constexpr</span><span class=w> </span><span class=kt>bool</span><span class=w> </span><span class=nf>is_number</span><span class=p>()</span><span class=w> </span><span class=k>const</span><span class=w> </span><span class=k>noexcept</span>
 <span class=p>{</span>
 <span class=w>    </span><span class=k>return</span><span class=w> </span><span class=n>is_number_integer</span><span class=p>()</span><span class=w> </span><span class=o>||</span><span class=w> </span><span class=n>is_number_float</span><span class=p>();</span>
 <span class=p>}</span>
@@ -42,4 +42,4 @@
 <span class=kc>false</span>
 <span class=kc>false</span>
 <span class=kc>false</span>
-</code></pre></div> </details> <h2 id=see-also>See also<a class=headerlink href=#see-also title="Permanent link">&para;</a></h2> <ul> <li><a href=../is_number_integer/ >is_number_integer()</a> check if the value is an integer or unsigned integer number</li> <li><a href=../is_number_unsigned/ >is_number_unsigned()</a> check if the value is an unsigned integer number</li> <li><a href=../is_number_float/ >is_number_float()</a> check if the value is a floating-point number</li> </ul> <h2 id=version-history>Version history<a class=headerlink href=#version-history title="Permanent link">&para;</a></h2> <ul> <li>Added in version 1.0.0.</li> <li>Extended to also return <code class=highlight><span class=nb>true</span></code> for unsigned integers in 2.0.0.</li> </ul> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 23, 2026 11:16:18 UTC">June 23, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
+</code></pre></div> </details> <h2 id=see-also>See also<a class=headerlink href=#see-also title="Permanent link">&para;</a></h2> <ul> <li><a href=../is_number_integer/ >is_number_integer()</a> check if the value is an integer or unsigned integer number</li> <li><a href=../is_number_unsigned/ >is_number_unsigned()</a> check if the value is an unsigned integer number</li> <li><a href=../is_number_float/ >is_number_float()</a> check if the value is a floating-point number</li> </ul> <h2 id=version-history>Version history<a class=headerlink href=#version-history title="Permanent link">&para;</a></h2> <ul> <li>Added in version 1.0.0.</li> <li>Extended to also return <code class=highlight><span class=nb>true</span></code> for unsigned integers in 2.0.0.</li> </ul> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 29, 2026 20:15:18 UTC">June 29, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
diff --git a/api/basic_json/is_number_float/index.html b/api/basic_json/is_number_float/index.html
index a980d2e..3e1a029 100644
--- a/api/basic_json/is_number_float/index.html
+++ b/api/basic_json/is_number_float/index.html
@@ -38,4 +38,4 @@
 <span class=kc>false</span>
 <span class=kc>false</span>
 <span class=kc>false</span>
-</code></pre></div> </details> <h2 id=see-also>See also<a class=headerlink href=#see-also title="Permanent link">&para;</a></h2> <ul> <li><a href=../is_number/ >is_number()</a> check if the value is a number</li> <li><a href=../is_number_integer/ >is_number_integer()</a> check if the value is an integer or unsigned integer number</li> <li><a href=../is_number_unsigned/ >is_number_unsigned()</a> check if the value is an unsigned integer number</li> </ul> <h2 id=version-history>Version history<a class=headerlink href=#version-history title="Permanent link">&para;</a></h2> <ul> <li>Added in version 1.0.0.</li> </ul> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 23, 2026 11:16:18 UTC">June 23, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
+</code></pre></div> </details> <h2 id=see-also>See also<a class=headerlink href=#see-also title="Permanent link">&para;</a></h2> <ul> <li><a href=../is_number/ >is_number()</a> check if the value is a number</li> <li><a href=../is_number_integer/ >is_number_integer()</a> check if the value is an integer or unsigned integer number</li> <li><a href=../is_number_unsigned/ >is_number_unsigned()</a> check if the value is an unsigned integer number</li> </ul> <h2 id=version-history>Version history<a class=headerlink href=#version-history title="Permanent link">&para;</a></h2> <ul> <li>Added in version 1.0.0.</li> </ul> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 29, 2026 20:15:18 UTC">June 29, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
diff --git a/api/basic_json/is_number_integer/index.html b/api/basic_json/is_number_integer/index.html
index d1b2adc..e792b45 100644
--- a/api/basic_json/is_number_integer/index.html
+++ b/api/basic_json/is_number_integer/index.html
@@ -38,4 +38,4 @@
 <span class=kc>false</span>
 <span class=kc>false</span>
 <span class=kc>false</span>
-</code></pre></div> </details> <h2 id=see-also>See also<a class=headerlink href=#see-also title="Permanent link">&para;</a></h2> <ul> <li><a href=../is_number/ >is_number()</a> check if the value is a number</li> <li><a href=../is_number_unsigned/ >is_number_unsigned()</a> check if the value is an unsigned integer number</li> <li><a href=../is_number_float/ >is_number_float()</a> check if the value is a floating-point number</li> </ul> <h2 id=version-history>Version history<a class=headerlink href=#version-history title="Permanent link">&para;</a></h2> <ul> <li>Added in version 1.0.0.</li> <li>Extended to also return <code class=highlight><span class=nb>true</span></code> for unsigned integers in 2.0.0.</li> </ul> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 23, 2026 11:16:18 UTC">June 23, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
+</code></pre></div> </details> <h2 id=see-also>See also<a class=headerlink href=#see-also title="Permanent link">&para;</a></h2> <ul> <li><a href=../is_number/ >is_number()</a> check if the value is a number</li> <li><a href=../is_number_unsigned/ >is_number_unsigned()</a> check if the value is an unsigned integer number</li> <li><a href=../is_number_float/ >is_number_float()</a> check if the value is a floating-point number</li> </ul> <h2 id=version-history>Version history<a class=headerlink href=#version-history title="Permanent link">&para;</a></h2> <ul> <li>Added in version 1.0.0.</li> <li>Extended to also return <code class=highlight><span class=nb>true</span></code> for unsigned integers in 2.0.0.</li> </ul> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 29, 2026 20:15:18 UTC">June 29, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
diff --git a/api/basic_json/is_number_unsigned/index.html b/api/basic_json/is_number_unsigned/index.html
index 18bb14f..ef6c59f 100644
--- a/api/basic_json/is_number_unsigned/index.html
+++ b/api/basic_json/is_number_unsigned/index.html
@@ -38,4 +38,4 @@
 <span class=kc>false</span>
 <span class=kc>false</span>
 <span class=kc>false</span>
-</code></pre></div> </details> <h2 id=see-also>See also<a class=headerlink href=#see-also title="Permanent link">&para;</a></h2> <ul> <li><a href=../is_number/ >is_number()</a> check if the value is a number</li> <li><a href=../is_number_integer/ >is_number_integer()</a> check if the value is an integer or unsigned integer number</li> <li><a href=../is_number_float/ >is_number_float()</a> check if the value is a floating-point number</li> </ul> <h2 id=version-history>Version history<a class=headerlink href=#version-history title="Permanent link">&para;</a></h2> <ul> <li>Added in version 2.0.0.</li> </ul> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 23, 2026 11:16:18 UTC">June 23, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
+</code></pre></div> </details> <h2 id=see-also>See also<a class=headerlink href=#see-also title="Permanent link">&para;</a></h2> <ul> <li><a href=../is_number/ >is_number()</a> check if the value is a number</li> <li><a href=../is_number_integer/ >is_number_integer()</a> check if the value is an integer or unsigned integer number</li> <li><a href=../is_number_float/ >is_number_float()</a> check if the value is a floating-point number</li> </ul> <h2 id=version-history>Version history<a class=headerlink href=#version-history title="Permanent link">&para;</a></h2> <ul> <li>Added in version 2.0.0.</li> </ul> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 29, 2026 20:15:18 UTC">June 29, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
diff --git a/api/basic_json/is_object/index.html b/api/basic_json/is_object/index.html
index db6aed4..537d6fc 100644
--- a/api/basic_json/is_object/index.html
+++ b/api/basic_json/is_object/index.html
@@ -38,4 +38,4 @@
 <span class=kc>false</span>
 <span class=kc>false</span>
 <span class=kc>false</span>
-</code></pre></div> </details> <h2 id=version-history>Version history<a class=headerlink href=#version-history title="Permanent link">&para;</a></h2> <ul> <li>Added in version 1.0.0.</li> </ul> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 23, 2026 11:16:18 UTC">June 23, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
+</code></pre></div> </details> <h2 id=version-history>Version history<a class=headerlink href=#version-history title="Permanent link">&para;</a></h2> <ul> <li>Added in version 1.0.0.</li> </ul> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 29, 2026 20:15:18 UTC">June 29, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
diff --git a/api/basic_json/is_primitive/index.html b/api/basic_json/is_primitive/index.html
index d7414bc..6ccca11 100644
--- a/api/basic_json/is_primitive/index.html
+++ b/api/basic_json/is_primitive/index.html
@@ -42,4 +42,4 @@
 <span class=kc>false</span>
 <span class=kc>true</span>
 <span class=kc>true</span>
-</code></pre></div> </details> <h2 id=see-also>See also<a class=headerlink href=#see-also title="Permanent link">&para;</a></h2> <ul> <li><a href=../is_structured/ >is_structured()</a> returns whether the <abbr title="JavaScript Object Notation">JSON</abbr> value is structured</li> <li><a href=../is_null/ >is_null()</a> returns whether the <abbr title="JavaScript Object Notation">JSON</abbr> value is <code>null</code></li> <li><a href=../is_string/ >is_string()</a> returns whether the <abbr title="JavaScript Object Notation">JSON</abbr> value is a string</li> <li><a href=../is_boolean/ >is_boolean()</a> returns whether the <abbr title="JavaScript Object Notation">JSON</abbr> value is a boolean</li> <li><a href=../is_number/ >is_number()</a> returns whether the <abbr title="JavaScript Object Notation">JSON</abbr> value is a number</li> <li><a href=../is_binary/ >is_binary()</a> returns whether the <abbr title="JavaScript Object Notation">JSON</abbr> value is a binary array</li> </ul> <h2 id=version-history>Version history<a class=headerlink href=#version-history title="Permanent link">&para;</a></h2> <ul> <li>Added in version 1.0.0.</li> <li>Extended to return <code class=highlight><span class=nb>true</span></code> for binary types in version 3.8.0.</li> </ul> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 23, 2026 11:16:18 UTC">June 23, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
+</code></pre></div> </details> <h2 id=see-also>See also<a class=headerlink href=#see-also title="Permanent link">&para;</a></h2> <ul> <li><a href=../is_structured/ >is_structured()</a> returns whether the <abbr title="JavaScript Object Notation">JSON</abbr> value is structured</li> <li><a href=../is_null/ >is_null()</a> returns whether the <abbr title="JavaScript Object Notation">JSON</abbr> value is <code>null</code></li> <li><a href=../is_string/ >is_string()</a> returns whether the <abbr title="JavaScript Object Notation">JSON</abbr> value is a string</li> <li><a href=../is_boolean/ >is_boolean()</a> returns whether the <abbr title="JavaScript Object Notation">JSON</abbr> value is a boolean</li> <li><a href=../is_number/ >is_number()</a> returns whether the <abbr title="JavaScript Object Notation">JSON</abbr> value is a number</li> <li><a href=../is_binary/ >is_binary()</a> returns whether the <abbr title="JavaScript Object Notation">JSON</abbr> value is a binary array</li> </ul> <h2 id=version-history>Version history<a class=headerlink href=#version-history title="Permanent link">&para;</a></h2> <ul> <li>Added in version 1.0.0.</li> <li>Extended to return <code class=highlight><span class=nb>true</span></code> for binary types in version 3.8.0.</li> </ul> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 29, 2026 20:15:18 UTC">June 29, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
diff --git a/api/basic_json/is_string/index.html b/api/basic_json/is_string/index.html
index 06642a3..377e57e 100644
--- a/api/basic_json/is_string/index.html
+++ b/api/basic_json/is_string/index.html
@@ -38,4 +38,4 @@
 <span class=kc>false</span>
 <span class=kc>true</span>
 <span class=kc>false</span>
-</code></pre></div> </details> <h2 id=version-history>Version history<a class=headerlink href=#version-history title="Permanent link">&para;</a></h2> <ul> <li>Added in version 1.0.0.</li> </ul> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 23, 2026 11:16:18 UTC">June 23, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
+</code></pre></div> </details> <h2 id=version-history>Version history<a class=headerlink href=#version-history title="Permanent link">&para;</a></h2> <ul> <li>Added in version 1.0.0.</li> </ul> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 29, 2026 20:15:18 UTC">June 29, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
diff --git a/api/basic_json/is_structured/index.html b/api/basic_json/is_structured/index.html
index 8c9a80d..62c9283 100644
--- a/api/basic_json/is_structured/index.html
+++ b/api/basic_json/is_structured/index.html
@@ -42,4 +42,4 @@
 <span class=kc>true</span>
 <span class=kc>false</span>
 <span class=kc>false</span>
-</code></pre></div> </details> <h2 id=see-also>See also<a class=headerlink href=#see-also title="Permanent link">&para;</a></h2> <ul> <li><a href=../is_primitive/ >is_primitive()</a> returns whether <abbr title="JavaScript Object Notation">JSON</abbr> value is primitive</li> <li><a href=../is_array/ >is_array()</a> returns whether the value is an array</li> <li><a href=../is_object/ >is_object()</a> returns whether the value is an object</li> </ul> <h2 id=version-history>Version history<a class=headerlink href=#version-history title="Permanent link">&para;</a></h2> <ul> <li>Added in version 1.0.0.</li> </ul> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 23, 2026 11:16:18 UTC">June 23, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
+</code></pre></div> </details> <h2 id=see-also>See also<a class=headerlink href=#see-also title="Permanent link">&para;</a></h2> <ul> <li><a href=../is_primitive/ >is_primitive()</a> returns whether <abbr title="JavaScript Object Notation">JSON</abbr> value is primitive</li> <li><a href=../is_array/ >is_array()</a> returns whether the value is an array</li> <li><a href=../is_object/ >is_object()</a> returns whether the value is an object</li> </ul> <h2 id=version-history>Version history<a class=headerlink href=#version-history title="Permanent link">&para;</a></h2> <ul> <li>Added in version 1.0.0.</li> </ul> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 29, 2026 20:15:18 UTC">June 29, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
diff --git a/api/basic_json/items/index.html b/api/basic_json/items/index.html
index 76371f2..55bda00 100644
--- a/api/basic_json/items/index.html
+++ b/api/basic_json/items/index.html
@@ -1,4 +1,4 @@
-<!doctype html><html lang=en class=no-js> <head><meta charset=utf-8><meta name=viewport content="width=device-width,initial-scale=1"><meta name=author content="Niels Lohmann"><link href="https://json.nlohmann.me/api/basic_json/items/" rel="canonical"><link href=../is_structured/ rel=prev><link href=../json_base_class_t/ rel=next><link rel=icon href=../../../assets/images/favicon.png><meta name=generator content="mkdocs-1.6.1, mkdocs-material-9.7.6"><title>items - JSON for Modern C++</title><link rel=stylesheet href=../../../assets/stylesheets/main.484c7ddc.min.css><link rel=stylesheet href=../../../assets/stylesheets/palette.ab4e12ef.min.css><link rel="stylesheet" href="../../../assets/external/fonts.googleapis.com/css.61a430c9.css"><style>:root{--md-text-font:"Roboto";--md-code-font:"JetBrains Mono"}</style><link rel=stylesheet href=../../../css/custom.css><script>__md_scope=new URL("../../..",location),__md_hash=e=>[...e].reduce(((e,_)=>(e<<5)-e+_.charCodeAt(0)),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script></head> <body dir=ltr data-md-color-scheme=default data-md-color-primary=indigo data-md-color-accent=indigo> <input class=md-toggle data-md-toggle=drawer type=checkbox id=__drawer autocomplete=off> <input class=md-toggle data-md-toggle=search type=checkbox id=__search autocomplete=off> <label class=md-overlay for=__drawer></label> <div data-md-component=skip> <a href=#nlohmannbasic_jsonitems class=md-skip> Skip to content </a> </div> <div data-md-component=announce> </div> <header class=md-header data-md-component=header> <nav class="md-header__inner md-grid" aria-label=Header> <a href=../../.. title="JSON for Modern C++" class="md-header__button md-logo" aria-label="JSON for Modern C++" data-md-component=logo> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54"/></svg> </a> <label class="md-header__button md-icon" for=__drawer> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M3 6h18v2H3zm0 5h18v2H3zm0 5h18v2H3z"/></svg> </label> <div class=md-header__title data-md-component=header-title> <div class=md-header__ellipsis> <div class=md-header__topic> <span class=md-ellipsis> JSON for Modern C++ </span> </div> <div class=md-header__topic data-md-component=header-topic> <span class=md-ellipsis> items </span> </div> </div> </div> <form class=md-header__option data-md-component=palette> <input class=md-option data-md-color-media="(prefers-color-scheme: light)" data-md-color-scheme=default data-md-color-primary=indigo data-md-color-accent=indigo aria-label="Switch to dark mode" type=radio name=__palette id=__palette_0> <label class="md-header__button md-icon" title="Switch to dark mode" for=__palette_1 hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a4 4 0 0 0-4 4 4 4 0 0 0 4 4 4 4 0 0 0 4-4 4 4 0 0 0-4-4m0 10a6 6 0 0 1-6-6 6 6 0 0 1 6-6 6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12z"/></svg> </label> <input class=md-option data-md-color-media="(prefers-color-scheme: dark)" data-md-color-scheme=slate data-md-color-primary=indigo data-md-color-accent=indigo aria-label="Switch to light mode" type=radio name=__palette id=__palette_1> <label class="md-header__button md-icon" title="Switch to light mode" for=__palette_0 hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 18c-.89 0-1.74-.2-2.5-.55C11.56 16.5 13 14.42 13 12s-1.44-4.5-3.5-5.45C10.26 6.2 11.11 6 12 6a6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12z"/></svg> </label> </form> <script>var palette=__md_get("__palette");if(palette&&palette.color){if("(prefers-color-scheme)"===palette.color.media){var media=matchMedia("(prefers-color-scheme: light)"),input=document.querySelector(media.matches?"[data-md-color-media='(prefers-color-scheme: light)']":"[data-md-color-media='(prefers-color-scheme: dark)']");palette.color.media=input.getAttribute("data-md-color-media"),palette.color.scheme=input.getAttribute("data-md-color-scheme"),palette.color.primary=input.getAttribute("data-md-color-primary"),palette.color.accent=input.getAttribute("data-md-color-accent")}for(var[key,value]of Object.entries(palette.color))document.body.setAttribute("data-md-color-"+key,value)}</script> <label class="md-header__button md-icon" for=__search> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg> </label> <div class=md-search data-md-component=search role=dialog> <label class=md-search__overlay for=__search></label> <div class=md-search__inner role=search> <form class=md-search__form name=search> <input type=text class=md-search__input name=query aria-label=Search placeholder=Search autocapitalize=off autocorrect=off autocomplete=off spellcheck=false data-md-component=search-query required> <label class="md-search__icon md-icon" for=__search> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11z"/></svg> </label> <nav class=md-search__options aria-label=Search> <button type=reset class="md-search__icon md-icon" title=Clear aria-label=Clear tabindex=-1> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z"/></svg> </button> </nav> </form> <div class=md-search__output> <div class=md-search__scrollwrap tabindex=0 data-md-scrollfix> <div class=md-search-result data-md-component=search-result> <div class=md-search-result__meta> Initializing search </div> <ol class=md-search-result__list role=presentation></ol> </div> </div> </div> </div> </div> <div class=md-header__source> <a href="https://github.com/nlohmann/json" title="Go to repository" class="md-source" data-md-component="source"> <div class="md-source__icon md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </div> <div class=md-source__repository> nlohmann/json </div> </a> </div> </nav> </header> <div class=md-container data-md-component=container> <nav class=md-tabs aria-label=Tabs data-md-component=tabs> <div class=md-grid> <ul class=md-tabs__list> <li class=md-tabs__item> <a href=../../.. class=md-tabs__link> Home </a> </li> <li class=md-tabs__item> <a href=../../../features/arbitrary_types/ class=md-tabs__link> Features </a> </li> <li class=md-tabs__item> <a href=../../../integration/ class=md-tabs__link> Integration </a> </li> <li class="md-tabs__item md-tabs__item--active"> <a href=../ class=md-tabs__link> API Documentation </a> </li> <li class=md-tabs__item> <a href=../../../community/ class=md-tabs__link> Community </a> </li> </ul> </div> </nav> <main class=md-main data-md-component=main> <div class="md-main__inner md-grid"> <div class="md-sidebar md-sidebar--primary" data-md-component=sidebar data-md-type=navigation> <div class=md-sidebar__scrollwrap> <div class=md-sidebar__inner> <nav class="md-nav md-nav--primary md-nav--lifted" aria-label=Navigation data-md-level=0> <label class=md-nav__title for=__drawer> <a href=../../.. title="JSON for Modern C++" class="md-nav__button md-logo" aria-label="JSON for Modern C++" data-md-component=logo> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54"/></svg> </a> JSON for Modern C++ </label> <div class=md-nav__source> <a href="https://github.com/nlohmann/json" title="Go to repository" class="md-source" data-md-component="source"> <div class="md-source__icon md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </div> <div class=md-source__repository> nlohmann/json </div> </a> </div> <ul class=md-nav__list data-md-scrollfix> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_1> <div class="md-nav__link md-nav__container"> <a href=../../.. class="md-nav__link "> <span class=md-ellipsis> Home </span> </a> <label class="md-nav__link " for=__nav_1 id=__nav_1_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_1_label aria-expanded=false> <label class=md-nav__title for=__nav_1> <span class="md-nav__icon md-icon"></span> Home </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../home/license/ class=md-nav__link> <span class=md-ellipsis> License </span> </a> </li> <li class=md-nav__item> <a href=../../../home/faq/ class=md-nav__link> <span class=md-ellipsis> FAQ </span> </a> </li> <li class=md-nav__item> <a href=../../../home/exceptions/ class=md-nav__link> <span class=md-ellipsis> Exceptions </span> </a> </li> <li class=md-nav__item> <a href=../../../home/releases/ class=md-nav__link> <span class=md-ellipsis> Releases </span> </a> </li> <li class=md-nav__item> <a href=../../../home/design_goals/ class=md-nav__link> <span class=md-ellipsis> Design goals </span> </a> </li> <li class=md-nav__item> <a href=../../../home/architecture/ class=md-nav__link> <span class=md-ellipsis> Architecture </span> </a> </li> <li class=md-nav__item> <a href=../../../home/customers/ class=md-nav__link> <span class=md-ellipsis> Customers </span> </a> </li> <li class=md-nav__item> <a href=../../../home/sponsors/ class=md-nav__link> <span class=md-ellipsis> Sponsors </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2> <label class=md-nav__link for=__nav_2 id=__nav_2_label tabindex=0> <span class=md-ellipsis> Features </span> <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_2_label aria-expanded=false> <label class=md-nav__title for=__nav_2> <span class="md-nav__icon md-icon"></span> Features </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/arbitrary_types/ class=md-nav__link> <span class=md-ellipsis> Arbitrary Type Conversions </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_2> <div class="md-nav__link md-nav__container"> <a href=../../../features/binary_formats/ class="md-nav__link "> <span class=md-ellipsis> Binary Formats </span> </a> <label class="md-nav__link " for=__nav_2_2 id=__nav_2_2_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_2_label aria-expanded=false> <label class=md-nav__title for=__nav_2_2> <span class="md-nav__icon md-icon"></span> Binary Formats </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/binary_formats/bjdata/ class=md-nav__link> <span class=md-ellipsis> BJData </span> </a> </li> <li class=md-nav__item> <a href=../../../features/binary_formats/bson/ class=md-nav__link> <span class=md-ellipsis> BSON </span> </a> </li> <li class=md-nav__item> <a href=../../../features/binary_formats/cbor/ class=md-nav__link> <span class=md-ellipsis> CBOR </span> </a> </li> <li class=md-nav__item> <a href=../../../features/binary_formats/messagepack/ class=md-nav__link> <span class=md-ellipsis> MessagePack </span> </a> </li> <li class=md-nav__item> <a href=../../../features/binary_formats/ubjson/ class=md-nav__link> <span class=md-ellipsis> UBJSON </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../../features/binary_values/ class=md-nav__link> <span class=md-ellipsis> Binary Values </span> </a> </li> <li class=md-nav__item> <a href=../../../features/comments/ class=md-nav__link> <span class=md-ellipsis> Comments </span> </a> </li> <li class=md-nav__item> <a href=../../../features/trailing_commas/ class=md-nav__link> <span class=md-ellipsis> Trailing Commas </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_6> <div class="md-nav__link md-nav__container"> <a href=../../../features/element_access/ class="md-nav__link "> <span class=md-ellipsis> Element Access </span> </a> <label class="md-nav__link " for=__nav_2_6 id=__nav_2_6_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_6_label aria-expanded=false> <label class=md-nav__title for=__nav_2_6> <span class="md-nav__icon md-icon"></span> Element Access </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/element_access/unchecked_access/ class=md-nav__link> <span class=md-ellipsis> Unchecked access: operator[] </span> </a> </li> <li class=md-nav__item> <a href=../../../features/element_access/checked_access/ class=md-nav__link> <span class=md-ellipsis> Checked access: at </span> </a> </li> <li class=md-nav__item> <a href=../../../features/element_access/default_value/ class=md-nav__link> <span class=md-ellipsis> Access with default value: value </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../../features/iterators/ class=md-nav__link> <span class=md-ellipsis> Iterators </span> </a> </li> <li class=md-nav__item> <a href=../../../features/json_pointer/ class=md-nav__link> <span class=md-ellipsis> JSON Pointer </span> </a> </li> <li class=md-nav__item> <a href=../../../features/json_patch/ class=md-nav__link> <span class=md-ellipsis> JSON Patch and Diff </span> </a> </li> <li class=md-nav__item> <a href=../../../features/merge_patch/ class=md-nav__link> <span class=md-ellipsis> JSON Merge Patch </span> </a> </li> <li class=md-nav__item> <a href=../../../features/modules/ class=md-nav__link> <span class=md-ellipsis> Modules </span> </a> </li> <li class=md-nav__item> <a href=../../../features/namespace/ class=md-nav__link> <span class=md-ellipsis> nlohmann Namespace </span> </a> </li> <li class=md-nav__item> <a href=../../../features/object_order/ class=md-nav__link> <span class=md-ellipsis> Object Order </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_14> <div class="md-nav__link md-nav__container"> <a href=../../../features/parsing/ class="md-nav__link "> <span class=md-ellipsis> Parsing </span> </a> <label class="md-nav__link " for=__nav_2_14 id=__nav_2_14_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_14_label aria-expanded=false> <label class=md-nav__title for=__nav_2_14> <span class="md-nav__icon md-icon"></span> Parsing </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/parsing/json_lines/ class=md-nav__link> <span class=md-ellipsis> JSON Lines </span> </a> </li> <li class=md-nav__item> <a href=../../../features/parsing/parse_exceptions/ class=md-nav__link> <span class=md-ellipsis> Parsing and Exceptions </span> </a> </li> <li class=md-nav__item> <a href=../../../features/parsing/parser_callbacks/ class=md-nav__link> <span class=md-ellipsis> Parser Callbacks </span> </a> </li> <li class=md-nav__item> <a href=../../../features/parsing/sax_interface/ class=md-nav__link> <span class=md-ellipsis> SAX Interface </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../../features/assertions/ class=md-nav__link> <span class=md-ellipsis> Runtime Assertions </span> </a> </li> <li class=md-nav__item> <a href=../../../features/enum_conversion/ class=md-nav__link> <span class=md-ellipsis> Specializing enum conversion </span> </a> </li> <li class=md-nav__item> <a href=../../../features/macros/ class=md-nav__link> <span class=md-ellipsis> Supported Macros </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_18> <div class="md-nav__link md-nav__container"> <a href=../../../features/types/ class="md-nav__link "> <span class=md-ellipsis> Types </span> </a> <label class="md-nav__link " for=__nav_2_18 id=__nav_2_18_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_18_label aria-expanded=false> <label class=md-nav__title for=__nav_2_18> <span class="md-nav__icon md-icon"></span> Types </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/types/number_handling/ class=md-nav__link> <span class=md-ellipsis> Number Handling </span> </a> </li> </ul> </nav> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_3> <div class="md-nav__link md-nav__container"> <a href=../../../integration/ class="md-nav__link "> <span class=md-ellipsis> Integration </span> </a> <label class="md-nav__link " for=__nav_3 id=__nav_3_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_3_label aria-expanded=false> <label class=md-nav__title for=__nav_3> <span class="md-nav__icon md-icon"></span> Integration </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../integration/migration_guide/ class=md-nav__link> <span class=md-ellipsis> Migration Guide </span> </a> </li> <li class=md-nav__item> <a href=../../../integration/cmake/ class=md-nav__link> <span class=md-ellipsis> CMake </span> </a> </li> <li class=md-nav__item> <a href=../../../integration/package_managers/ class=md-nav__link> <span class=md-ellipsis> Package Managers </span> </a> </li> <li class=md-nav__item> <a href=../../../integration/pkg-config/ class=md-nav__link> <span class=md-ellipsis> Pkg-config </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--active md-nav__item--section md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4 checked> <label class=md-nav__link for=__nav_4 id=__nav_4_label tabindex> <span class=md-ellipsis> API Documentation </span> <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_4_label aria-expanded=true> <label class=md-nav__title for=__nav_4> <span class="md-nav__icon md-icon"></span> API Documentation </label> <ul class=md-nav__list data-md-scrollfix> <li class="md-nav__item md-nav__item--active md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_1 checked> <div class="md-nav__link md-nav__container"> <a href=../ class="md-nav__link "> <span class=md-ellipsis> basic_json </span> </a> <label class="md-nav__link " for=__nav_4_1 id=__nav_4_1_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_1_label aria-expanded=true> <label class=md-nav__title for=__nav_4_1> <span class="md-nav__icon md-icon"></span> basic_json </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../basic_json/ class=md-nav__link> <span class=md-ellipsis> (Constructor) </span> </a> </li> <li class=md-nav__item> <a href=../~basic_json/ class=md-nav__link> <span class=md-ellipsis> (Destructor) </span> </a> </li> <li class=md-nav__item> <a href=../accept/ class=md-nav__link> <span class=md-ellipsis> accept </span> </a> </li> <li class=md-nav__item> <a href=../array/ class=md-nav__link> <span class=md-ellipsis> array </span> </a> </li> <li class=md-nav__item> <a href=../array_t/ class=md-nav__link> <span class=md-ellipsis> array_t </span> </a> </li> <li class=md-nav__item> <a href=../at/ class=md-nav__link> <span class=md-ellipsis> at </span> </a> </li> <li class=md-nav__item> <a href=../back/ class=md-nav__link> <span class=md-ellipsis> back </span> </a> </li> <li class=md-nav__item> <a href=../begin/ class=md-nav__link> <span class=md-ellipsis> begin </span> </a> </li> <li class=md-nav__item> <a href=../binary/ class=md-nav__link> <span class=md-ellipsis> binary </span> </a> </li> <li class=md-nav__item> <a href=../binary_t/ class=md-nav__link> <span class=md-ellipsis> binary_t </span> </a> </li> <li class=md-nav__item> <a href=../boolean_t/ class=md-nav__link> <span class=md-ellipsis> boolean_t </span> </a> </li> <li class=md-nav__item> <a href=../cbegin/ class=md-nav__link> <span class=md-ellipsis> cbegin </span> </a> </li> <li class=md-nav__item> <a href=../cbor_tag_handler_t/ class=md-nav__link> <span class=md-ellipsis> cbor_tag_handler_t </span> </a> </li> <li class=md-nav__item> <a href=../cend/ class=md-nav__link> <span class=md-ellipsis> cend </span> </a> </li> <li class=md-nav__item> <a href=../clear/ class=md-nav__link> <span class=md-ellipsis> clear </span> </a> </li> <li class=md-nav__item> <a href=../contains/ class=md-nav__link> <span class=md-ellipsis> contains </span> </a> </li> <li class=md-nav__item> <a href=../count/ class=md-nav__link> <span class=md-ellipsis> count </span> </a> </li> <li class=md-nav__item> <a href=../crbegin/ class=md-nav__link> <span class=md-ellipsis> crbegin </span> </a> </li> <li class=md-nav__item> <a href=../crend/ class=md-nav__link> <span class=md-ellipsis> crend </span> </a> </li> <li class=md-nav__item> <a href=../default_object_comparator_t/ class=md-nav__link> <span class=md-ellipsis> default_object_comparator_t </span> </a> </li> <li class=md-nav__item> <a href=../diff/ class=md-nav__link> <span class=md-ellipsis> diff </span> </a> </li> <li class=md-nav__item> <a href=../dump/ class=md-nav__link> <span class=md-ellipsis> dump </span> </a> </li> <li class=md-nav__item> <a href=../emplace/ class=md-nav__link> <span class=md-ellipsis> emplace </span> </a> </li> <li class=md-nav__item> <a href=../emplace_back/ class=md-nav__link> <span class=md-ellipsis> emplace_back </span> </a> </li> <li class=md-nav__item> <a href=../empty/ class=md-nav__link> <span class=md-ellipsis> empty </span> </a> </li> <li class=md-nav__item> <a href=../end/ class=md-nav__link> <span class=md-ellipsis> end </span> </a> </li> <li class=md-nav__item> <a href=../end_pos/ class=md-nav__link> <span class=md-ellipsis> end_pos </span> </a> </li> <li class=md-nav__item> <a href=../erase/ class=md-nav__link> <span class=md-ellipsis> erase </span> </a> </li> <li class=md-nav__item> <a href=../error_handler_t/ class=md-nav__link> <span class=md-ellipsis> error_handler_t </span> </a> </li> <li class=md-nav__item> <a href=../exception/ class=md-nav__link> <span class=md-ellipsis> exception </span> </a> </li> <li class=md-nav__item> <a href=../find/ class=md-nav__link> <span class=md-ellipsis> find </span> </a> </li> <li class=md-nav__item> <a href=../flatten/ class=md-nav__link> <span class=md-ellipsis> flatten </span> </a> </li> <li class=md-nav__item> <a href=../from_bjdata/ class=md-nav__link> <span class=md-ellipsis> from_bjdata </span> </a> </li> <li class=md-nav__item> <a href=../from_bson/ class=md-nav__link> <span class=md-ellipsis> from_bson </span> </a> </li> <li class=md-nav__item> <a href=../from_cbor/ class=md-nav__link> <span class=md-ellipsis> from_cbor </span> </a> </li> <li class=md-nav__item> <a href=../from_msgpack/ class=md-nav__link> <span class=md-ellipsis> from_msgpack </span> </a> </li> <li class=md-nav__item> <a href=../from_ubjson/ class=md-nav__link> <span class=md-ellipsis> from_ubjson </span> </a> </li> <li class=md-nav__item> <a href=../front/ class=md-nav__link> <span class=md-ellipsis> front </span> </a> </li> <li class=md-nav__item> <a href=../get/ class=md-nav__link> <span class=md-ellipsis> get </span> </a> </li> <li class=md-nav__item> <a href=../get_allocator/ class=md-nav__link> <span class=md-ellipsis> get_allocator </span> </a> </li> <li class=md-nav__item> <a href=../get_binary/ class=md-nav__link> <span class=md-ellipsis> get_binary </span> </a> </li> <li class=md-nav__item> <a href=../get_ptr/ class=md-nav__link> <span class=md-ellipsis> get_ptr </span> </a> </li> <li class=md-nav__item> <a href=../get_ref/ class=md-nav__link> <span class=md-ellipsis> get_ref </span> </a> </li> <li class=md-nav__item> <a href=../get_to/ class=md-nav__link> <span class=md-ellipsis> get_to </span> </a> </li> <li class=md-nav__item> <a href=../std_hash/ class=md-nav__link> <span class=md-ellipsis> std::hash&lt;basic_json&gt; </span> </a> </li> <li class=md-nav__item> <a href=../input_format_t/ class=md-nav__link> <span class=md-ellipsis> input_format_t </span> </a> </li> <li class=md-nav__item> <a href=../insert/ class=md-nav__link> <span class=md-ellipsis> insert </span> </a> </li> <li class=md-nav__item> <a href=../invalid_iterator/ class=md-nav__link> <span class=md-ellipsis> invalid_iterator </span> </a> </li> <li class=md-nav__item> <a href=../is_array/ class=md-nav__link> <span class=md-ellipsis> is_array </span> </a> </li> <li class=md-nav__item> <a href=../is_binary/ class=md-nav__link> <span class=md-ellipsis> is_binary </span> </a> </li> <li class=md-nav__item> <a href=../is_boolean/ class=md-nav__link> <span class=md-ellipsis> is_boolean </span> </a> </li> <li class=md-nav__item> <a href=../is_discarded/ class=md-nav__link> <span class=md-ellipsis> is_discarded </span> </a> </li> <li class=md-nav__item> <a href=../is_null/ class=md-nav__link> <span class=md-ellipsis> is_null </span> </a> </li> <li class=md-nav__item> <a href=../is_number/ class=md-nav__link> <span class=md-ellipsis> is_number </span> </a> </li> <li class=md-nav__item> <a href=../is_number_float/ class=md-nav__link> <span class=md-ellipsis> is_number_float </span> </a> </li> <li class=md-nav__item> <a href=../is_number_integer/ class=md-nav__link> <span class=md-ellipsis> is_number_integer </span> </a> </li> <li class=md-nav__item> <a href=../is_number_unsigned/ class=md-nav__link> <span class=md-ellipsis> is_number_unsigned </span> </a> </li> <li class=md-nav__item> <a href=../is_object/ class=md-nav__link> <span class=md-ellipsis> is_object </span> </a> </li> <li class=md-nav__item> <a href=../is_primitive/ class=md-nav__link> <span class=md-ellipsis> is_primitive </span> </a> </li> <li class=md-nav__item> <a href=../is_string/ class=md-nav__link> <span class=md-ellipsis> is_string </span> </a> </li> <li class=md-nav__item> <a href=../is_structured/ class=md-nav__link> <span class=md-ellipsis> is_structured </span> </a> </li> <li class="md-nav__item md-nav__item--active"> <input class="md-nav__toggle md-toggle" type=checkbox id=__toc> <label class="md-nav__link md-nav__link--active" for=__toc> <span class=md-ellipsis> items </span> <span class="md-nav__icon md-icon"></span> </label> <a href=./ class="md-nav__link md-nav__link--active"> <span class=md-ellipsis> items </span> </a> <nav class="md-nav md-nav--secondary" aria-label="Table of contents"> <label class=md-nav__title for=__toc> <span class="md-nav__icon md-icon"></span> Table of contents </label> <ul class=md-nav__list data-md-component=toc data-md-scrollfix> <li class=md-nav__item> <a href=#return-value class=md-nav__link> <span class=md-ellipsis> Return value </span> </a> </li> <li class=md-nav__item> <a href=#exception-safety class=md-nav__link> <span class=md-ellipsis> Exception safety </span> </a> </li> <li class=md-nav__item> <a href=#complexity class=md-nav__link> <span class=md-ellipsis> Complexity </span> </a> </li> <li class=md-nav__item> <a href=#notes class=md-nav__link> <span class=md-ellipsis> Notes </span> </a> </li> <li class=md-nav__item> <a href=#examples class=md-nav__link> <span class=md-ellipsis> Examples </span> </a> </li> <li class=md-nav__item> <a href=#version-history class=md-nav__link> <span class=md-ellipsis> Version history </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../json_base_class_t/ class=md-nav__link> <span class=md-ellipsis> json_base_class_t </span> </a> </li> <li class=md-nav__item> <a href=../json_serializer/ class=md-nav__link> <span class=md-ellipsis> json_serializer </span> </a> </li> <li class=md-nav__item> <a href=../max_size/ class=md-nav__link> <span class=md-ellipsis> max_size </span> </a> </li> <li class=md-nav__item> <a href=../meta/ class=md-nav__link> <span class=md-ellipsis> meta </span> </a> </li> <li class=md-nav__item> <a href=../merge_patch/ class=md-nav__link> <span class=md-ellipsis> merge_patch </span> </a> </li> <li class=md-nav__item> <a href=../number_float_t/ class=md-nav__link> <span class=md-ellipsis> number_float_t </span> </a> </li> <li class=md-nav__item> <a href=../number_integer_t/ class=md-nav__link> <span class=md-ellipsis> number_integer_t </span> </a> </li> <li class=md-nav__item> <a href=../number_unsigned_t/ class=md-nav__link> <span class=md-ellipsis> number_unsigned_t </span> </a> </li> <li class=md-nav__item> <a href=../object/ class=md-nav__link> <span class=md-ellipsis> object </span> </a> </li> <li class=md-nav__item> <a href=../object_comparator_t/ class=md-nav__link> <span class=md-ellipsis> object_comparator_t </span> </a> </li> <li class=md-nav__item> <a href=../object_t/ class=md-nav__link> <span class=md-ellipsis> object_t </span> </a> </li> <li class=md-nav__item> <a href=../operator_ValueType/ class=md-nav__link> <span class=md-ellipsis> operator ValueType </span> </a> </li> <li class=md-nav__item> <a href=../operator_value_t/ class=md-nav__link> <span class=md-ellipsis> operator value_t </span> </a> </li> <li class=md-nav__item> <a href=../operator%5B%5D/ class=md-nav__link> <span class=md-ellipsis> operator[] </span> </a> </li> <li class=md-nav__item> <a href=../operator%3D/ class=md-nav__link> <span class=md-ellipsis> operator= </span> </a> </li> <li class=md-nav__item> <a href=../operator%2B%3D/ class=md-nav__link> <span class=md-ellipsis> operator+= </span> </a> </li> <li class=md-nav__item> <a href=../operator_eq/ class=md-nav__link> <span class=md-ellipsis> operator== </span> </a> </li> <li class=md-nav__item> <a href=../operator_ne/ class=md-nav__link> <span class=md-ellipsis> operator!= </span> </a> </li> <li class=md-nav__item> <a href=../operator_lt/ class=md-nav__link> <span class=md-ellipsis> operator< </span> </a> </li> <li class=md-nav__item> <a href=../operator_gt/ class=md-nav__link> <span class=md-ellipsis> operator> </span> </a> </li> <li class=md-nav__item> <a href=../operator_le/ class=md-nav__link> <span class=md-ellipsis> operator<= </span> </a> </li> <li class=md-nav__item> <a href=../operator_ge/ class=md-nav__link> <span class=md-ellipsis> operator>= </span> </a> </li> <li class=md-nav__item> <a href=../operator_spaceship/ class=md-nav__link> <span class=md-ellipsis> operator<=> </span> </a> </li> <li class=md-nav__item> <a href=../out_of_range/ class=md-nav__link> <span class=md-ellipsis> out_of_range </span> </a> </li> <li class=md-nav__item> <a href=../other_error/ class=md-nav__link> <span class=md-ellipsis> other_error </span> </a> </li> <li class=md-nav__item> <a href=../parse/ class=md-nav__link> <span class=md-ellipsis> parse </span> </a> </li> <li class=md-nav__item> <a href=../parse_error/ class=md-nav__link> <span class=md-ellipsis> parse_error </span> </a> </li> <li class=md-nav__item> <a href=../parse_event_t/ class=md-nav__link> <span class=md-ellipsis> parse_event_t </span> </a> </li> <li class=md-nav__item> <a href=../parser_callback_t/ class=md-nav__link> <span class=md-ellipsis> parser_callback_t </span> </a> </li> <li class=md-nav__item> <a href=../patch/ class=md-nav__link> <span class=md-ellipsis> patch </span> </a> </li> <li class=md-nav__item> <a href=../patch_inplace/ class=md-nav__link> <span class=md-ellipsis> patch_inplace </span> </a> </li> <li class=md-nav__item> <a href=../push_back/ class=md-nav__link> <span class=md-ellipsis> push_back </span> </a> </li> <li class=md-nav__item> <a href=../rbegin/ class=md-nav__link> <span class=md-ellipsis> rbegin </span> </a> </li> <li class=md-nav__item> <a href=../rend/ class=md-nav__link> <span class=md-ellipsis> rend </span> </a> </li> <li class=md-nav__item> <a href=../sax_parse/ class=md-nav__link> <span class=md-ellipsis> sax_parse </span> </a> </li> <li class=md-nav__item> <a href=../size/ class=md-nav__link> <span class=md-ellipsis> size </span> </a> </li> <li class=md-nav__item> <a href=../start_pos/ class=md-nav__link> <span class=md-ellipsis> start_pos </span> </a> </li> <li class=md-nav__item> <a href=../string_t/ class=md-nav__link> <span class=md-ellipsis> string_t </span> </a> </li> <li class=md-nav__item> <a href=../swap/ class=md-nav__link> <span class=md-ellipsis> swap </span> </a> </li> <li class=md-nav__item> <a href=../std_swap/ class=md-nav__link> <span class=md-ellipsis> std::swap&lt;basic_json&gt; </span> </a> </li> <li class=md-nav__item> <a href=../to_bjdata/ class=md-nav__link> <span class=md-ellipsis> to_bjdata </span> </a> </li> <li class=md-nav__item> <a href=../to_bson/ class=md-nav__link> <span class=md-ellipsis> to_bson </span> </a> </li> <li class=md-nav__item> <a href=../to_cbor/ class=md-nav__link> <span class=md-ellipsis> to_cbor </span> </a> </li> <li class=md-nav__item> <a href=../to_msgpack/ class=md-nav__link> <span class=md-ellipsis> to_msgpack </span> </a> </li> <li class=md-nav__item> <a href=../to_string/ class=md-nav__link> <span class=md-ellipsis> to_string </span> </a> </li> <li class=md-nav__item> <a href=../to_ubjson/ class=md-nav__link> <span class=md-ellipsis> to_ubjson </span> </a> </li> <li class=md-nav__item> <a href=../type/ class=md-nav__link> <span class=md-ellipsis> type </span> </a> </li> <li class=md-nav__item> <a href=../type_error/ class=md-nav__link> <span class=md-ellipsis> type_error </span> </a> </li> <li class=md-nav__item> <a href=../type_name/ class=md-nav__link> <span class=md-ellipsis> type_name </span> </a> </li> <li class=md-nav__item> <a href=../unflatten/ class=md-nav__link> <span class=md-ellipsis> unflatten </span> </a> </li> <li class=md-nav__item> <a href=../update/ class=md-nav__link> <span class=md-ellipsis> update </span> </a> </li> <li class=md-nav__item> <a href=../value/ class=md-nav__link> <span class=md-ellipsis> value </span> </a> </li> <li class=md-nav__item> <a href=../value_t/ class=md-nav__link> <span class=md-ellipsis> value_t </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_2> <div class="md-nav__link md-nav__container"> <a href=../../byte_container_with_subtype/ class="md-nav__link "> <span class=md-ellipsis> byte_container_with_subtype </span> </a> <label class="md-nav__link " for=__nav_4_2 id=__nav_4_2_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_2_label aria-expanded=false> <label class=md-nav__title for=__nav_4_2> <span class="md-nav__icon md-icon"></span> byte_container_with_subtype </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../byte_container_with_subtype/byte_container_with_subtype/ class=md-nav__link> <span class=md-ellipsis> (constructor) </span> </a> </li> <li class=md-nav__item> <a href=../../byte_container_with_subtype/clear_subtype/ class=md-nav__link> <span class=md-ellipsis> clear_subtype </span> </a> </li> <li class=md-nav__item> <a href=../../byte_container_with_subtype/has_subtype/ class=md-nav__link> <span class=md-ellipsis> has_subtype </span> </a> </li> <li class=md-nav__item> <a href=../../byte_container_with_subtype/set_subtype/ class=md-nav__link> <span class=md-ellipsis> set_subtype </span> </a> </li> <li class=md-nav__item> <a href=../../byte_container_with_subtype/subtype/ class=md-nav__link> <span class=md-ellipsis> subtype </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_3> <div class="md-nav__link md-nav__container"> <a href=../../adl_serializer/ class="md-nav__link "> <span class=md-ellipsis> adl_serializer </span> </a> <label class="md-nav__link " for=__nav_4_3 id=__nav_4_3_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_3_label aria-expanded=false> <label class=md-nav__title for=__nav_4_3> <span class="md-nav__icon md-icon"></span> adl_serializer </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../adl_serializer/from_json/ class=md-nav__link> <span class=md-ellipsis> from_json </span> </a> </li> <li class=md-nav__item> <a href=../../adl_serializer/to_json/ class=md-nav__link> <span class=md-ellipsis> to_json </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../json/ class=md-nav__link> <span class=md-ellipsis> json </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_5> <div class="md-nav__link md-nav__container"> <a href=../../json_pointer/ class="md-nav__link "> <span class=md-ellipsis> json_pointer </span> </a> <label class="md-nav__link " for=__nav_4_5 id=__nav_4_5_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_5_label aria-expanded=false> <label class=md-nav__title for=__nav_4_5> <span class="md-nav__icon md-icon"></span> json_pointer </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../json_pointer/json_pointer/ class=md-nav__link> <span class=md-ellipsis> (Constructor) </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/back/ class=md-nav__link> <span class=md-ellipsis> back </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/empty/ class=md-nav__link> <span class=md-ellipsis> empty </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/front/ class=md-nav__link> <span class=md-ellipsis> front </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_string_t/ class=md-nav__link> <span class=md-ellipsis> operator string_t </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_eq/ class=md-nav__link> <span class=md-ellipsis> operator== </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_ne/ class=md-nav__link> <span class=md-ellipsis> operator!= </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_slash/ class=md-nav__link> <span class=md-ellipsis> operator/ </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_slasheq/ class=md-nav__link> <span class=md-ellipsis> operator/= </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/parent_pointer/ class=md-nav__link> <span class=md-ellipsis> parent_pointer </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/pop_back/ class=md-nav__link> <span class=md-ellipsis> pop_back </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/pop_front/ class=md-nav__link> <span class=md-ellipsis> pop_front </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/push_back/ class=md-nav__link> <span class=md-ellipsis> push_back </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/push_front/ class=md-nav__link> <span class=md-ellipsis> push_front </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/string_t/ class=md-nav__link> <span class=md-ellipsis> string_t </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/to_string/ class=md-nav__link> <span class=md-ellipsis> to_string </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_6> <div class="md-nav__link md-nav__container"> <a href=../../json_sax/ class="md-nav__link "> <span class=md-ellipsis> json_sax </span> </a> <label class="md-nav__link " for=__nav_4_6 id=__nav_4_6_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_6_label aria-expanded=false> <label class=md-nav__title for=__nav_4_6> <span class="md-nav__icon md-icon"></span> json_sax </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../json_sax/binary/ class=md-nav__link> <span class=md-ellipsis> binary </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/boolean/ class=md-nav__link> <span class=md-ellipsis> boolean </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/end_array/ class=md-nav__link> <span class=md-ellipsis> end_array </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/end_object/ class=md-nav__link> <span class=md-ellipsis> end_object </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/key/ class=md-nav__link> <span class=md-ellipsis> key </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/null/ class=md-nav__link> <span class=md-ellipsis> null </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/number_float/ class=md-nav__link> <span class=md-ellipsis> number_float </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/number_integer/ class=md-nav__link> <span class=md-ellipsis> number_integer </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/number_unsigned/ class=md-nav__link> <span class=md-ellipsis> number_unsigned </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/parse_error/ class=md-nav__link> <span class=md-ellipsis> parse_error </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/start_array/ class=md-nav__link> <span class=md-ellipsis> start_array </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/start_object/ class=md-nav__link> <span class=md-ellipsis> start_object </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/string/ class=md-nav__link> <span class=md-ellipsis> string </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../operator_ltlt/ class=md-nav__link> <span class=md-ellipsis> operator<<(basic_json), operator<<(json_pointer) </span> </a> </li> <li class=md-nav__item> <a href=../../operator_gtgt/ class=md-nav__link> <span class=md-ellipsis> operator>>(basic_json) </span> </a> </li> <li class=md-nav__item> <a href=../../operator_literal_json/ class=md-nav__link> <span class=md-ellipsis> operator""_json </span> </a> </li> <li class=md-nav__item> <a href=../../operator_literal_json_pointer/ class=md-nav__link> <span class=md-ellipsis> operator""_json_pointer </span> </a> </li> <li class=md-nav__item> <a href=../../ordered_json/ class=md-nav__link> <span class=md-ellipsis> ordered_json </span> </a> </li> <li class=md-nav__item> <a href=../../ordered_map/ class=md-nav__link> <span class=md-ellipsis> ordered_map </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_13> <div class="md-nav__link md-nav__container"> <a href=../../macros/ class="md-nav__link "> <span class=md-ellipsis> macros </span> </a> <label class="md-nav__link " for=__nav_4_13 id=__nav_4_13_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_13_label aria-expanded=false> <label class=md-nav__title for=__nav_4_13> <span class="md-nav__icon md-icon"></span> macros </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../macros/json_assert/ class=md-nav__link> <span class=md-ellipsis> JSON_ASSERT </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_brace_init_copy_semantics/ class=md-nav__link> <span class=md-ellipsis> JSON_BRACE_INIT_COPY_SEMANTICS </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_throw_user/ class=md-nav__link> <span class=md-ellipsis> JSON_CATCH_USER, JSON_THROW_USER, JSON_TRY_USER </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_diagnostics/ class=md-nav__link> <span class=md-ellipsis> JSON_DIAGNOSTICS </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_diagnostic_positions/ class=md-nav__link> <span class=md-ellipsis> JSON_DIAGNOSTIC_POSITIONS </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_disable_enum_serialization/ class=md-nav__link> <span class=md-ellipsis> JSON_DISABLE_ENUM_SERIALIZATION </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_has_cpp_11/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_CPP_11, JSON_HAS_CPP_14, JSON_HAS_CPP_17, JSON_HAS_CPP_20 </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_has_filesystem/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_EXPERIMENTAL_FILESYSTEM, JSON_HAS_FILESYSTEM </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_has_ranges/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_RANGES </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_has_static_rtti/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_STATIC_RTTI </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_has_three_way_comparison/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_THREE_WAY_COMPARISON </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_noexception/ class=md-nav__link> <span class=md-ellipsis> JSON_NOEXCEPTION </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_no_io/ class=md-nav__link> <span class=md-ellipsis> JSON_NO_IO </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_skip_library_version_check/ class=md-nav__link> <span class=md-ellipsis> JSON_SKIP_LIBRARY_VERSION_CHECK </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_skip_unsupported_compiler_check/ class=md-nav__link> <span class=md-ellipsis> JSON_SKIP_UNSUPPORTED_COMPILER_CHECK </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_use_global_udls/ class=md-nav__link> <span class=md-ellipsis> JSON_USE_GLOBAL_UDLS </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_use_implicit_conversions/ class=md-nav__link> <span class=md-ellipsis> JSON_USE_IMPLICIT_CONVERSIONS </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_use_legacy_discarded_value_comparison/ class=md-nav__link> <span class=md-ellipsis> JSON_USE_LEGACY_DISCARDED_VALUE_COMPARISON </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_define_derived_type/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_ONLY_SERIALIZE, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_define_type_intrusive/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_TYPE_INTRUSIVE, NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_TYPE_INTRUSIVE_ONLY_SERIALIZE </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_define_type_non_intrusive/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_define_type_with_names/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_TYPE_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_namespace/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_NAMESPACE </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_namespace_begin/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_NAMESPACE_BEGIN, NLOHMANN_JSON_NAMESPACE_END </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_namespace_no_version/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_NAMESPACE_NO_VERSION </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_serialize_enum/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_SERIALIZE_ENUM </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_serialize_enum_strict/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_SERIALIZE_ENUM_STRICT </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_version_major/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_VERSION_MAJOR, NLOHMANN_JSON_VERSION_MINOR, NLOHMANN_JSON_VERSION_PATCH </span> </a> </li> </ul> </nav> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_5> <div class="md-nav__link md-nav__container"> <a href=../../../community/ class="md-nav__link "> <span class=md-ellipsis> Community </span> </a> <label class="md-nav__link " for=__nav_5 id=__nav_5_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_5_label aria-expanded=false> <label class=md-nav__title for=__nav_5> <span class="md-nav__icon md-icon"></span> Community </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../community/code_of_conduct/ class=md-nav__link> <span class=md-ellipsis> Code of Conduct </span> </a> </li> <li class=md-nav__item> <a href=../../../community/contribution_guidelines/ class=md-nav__link> <span class=md-ellipsis> Contribution Guidelines </span> </a> </li> <li class=md-nav__item> <a href=../../../community/quality_assurance/ class=md-nav__link> <span class=md-ellipsis> Quality assurance </span> </a> </li> <li class=md-nav__item> <a href=../../../community/governance/ class=md-nav__link> <span class=md-ellipsis> Governance </span> </a> </li> <li class=md-nav__item> <a href=../../../community/security_policy/ class=md-nav__link> <span class=md-ellipsis> Security Policy </span> </a> </li> </ul> </nav> </li> </ul> </nav> </div> </div> </div> <div class="md-sidebar md-sidebar--secondary" data-md-component=sidebar data-md-type=toc> <div class=md-sidebar__scrollwrap> <div class=md-sidebar__inner> <nav class="md-nav md-nav--secondary" aria-label="Table of contents"> <label class=md-nav__title for=__toc> <span class="md-nav__icon md-icon"></span> Table of contents </label> <ul class=md-nav__list data-md-component=toc data-md-scrollfix> <li class=md-nav__item> <a href=#return-value class=md-nav__link> <span class=md-ellipsis> Return value </span> </a> </li> <li class=md-nav__item> <a href=#exception-safety class=md-nav__link> <span class=md-ellipsis> Exception safety </span> </a> </li> <li class=md-nav__item> <a href=#complexity class=md-nav__link> <span class=md-ellipsis> Complexity </span> </a> </li> <li class=md-nav__item> <a href=#notes class=md-nav__link> <span class=md-ellipsis> Notes </span> </a> </li> <li class=md-nav__item> <a href=#examples class=md-nav__link> <span class=md-ellipsis> Examples </span> </a> </li> <li class=md-nav__item> <a href=#version-history class=md-nav__link> <span class=md-ellipsis> Version history </span> </a> </li> </ul> </nav> </div> </div> </div> <div class=md-content data-md-component=content> <article class="md-content__inner md-typeset"> <a href="https://github.com/nlohmann/json/edit/develop/docs/mkdocs/docs/api/basic_json/items.md" title="Edit this page" class="md-content__button md-icon" rel="edit"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M10 20H6V4h7v5h5v3.1l2-2V8l-6-6H6c-1.1 0-2 .9-2 2v16c0 1.1.9 2 2 2h4zm10.2-7c.1 0 .3.1.4.2l1.3 1.3c.2.2.2.6 0 .8l-1 1-2.1-2.1 1-1c.1-.1.2-.2.4-.2m0 3.9L14.1 23H12v-2.1l6.1-6.1z"/></svg> </a> <a href="https://github.com/nlohmann/json/raw/develop/docs/mkdocs/docs/api/basic_json/items.md" title="View source of this page" class="md-content__button md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M17 18c.56 0 1 .44 1 1s-.44 1-1 1-1-.44-1-1 .44-1 1-1m0-3c-2.73 0-5.06 1.66-6 4 .94 2.34 3.27 4 6 4s5.06-1.66 6-4c-.94-2.34-3.27-4-6-4m0 6.5a2.5 2.5 0 0 1-2.5-2.5 2.5 2.5 0 0 1 2.5-2.5 2.5 2.5 0 0 1 2.5 2.5 2.5 2.5 0 0 1-2.5 2.5M9.27 20H6V4h7v5h5v4.07c.7.08 1.36.25 2 .49V8l-6-6H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h4.5a8.2 8.2 0 0 1-1.23-2"/></svg> </a> <h1 id=nlohmannbasic_jsonitems><small>nlohmann::basic_json::</small>items<a class=headerlink href=#nlohmannbasic_jsonitems title="Permanent link">&para;</a></h1> <div class=highlight><pre><span></span><code><span class=n>iteration_proxy</span><span class=o>&lt;</span><span class=n>iterator</span><span class=o>&gt;</span><span class=w> </span><span class=n>items</span><span class=p>()</span><span class=w> </span><span class=k>noexcept</span><span class=p>;</span>
+<!doctype html><html lang=en class=no-js> <head><meta charset=utf-8><meta name=viewport content="width=device-width,initial-scale=1"><meta name=author content="Niels Lohmann"><link href="https://json.nlohmann.me/api/basic_json/items/" rel="canonical"><link href=../is_structured/ rel=prev><link href=../json_base_class_t/ rel=next><link rel=icon href=../../../assets/images/favicon.png><meta name=generator content="mkdocs-1.6.1, mkdocs-material-9.7.6"><title>items - JSON for Modern C++</title><link rel=stylesheet href=../../../assets/stylesheets/main.484c7ddc.min.css><link rel=stylesheet href=../../../assets/stylesheets/palette.ab4e12ef.min.css><link rel="stylesheet" href="../../../assets/external/fonts.googleapis.com/css.61a430c9.css"><style>:root{--md-text-font:"Roboto";--md-code-font:"JetBrains Mono"}</style><link rel=stylesheet href=../../../css/custom.css><script>__md_scope=new URL("../../..",location),__md_hash=e=>[...e].reduce(((e,_)=>(e<<5)-e+_.charCodeAt(0)),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script></head> <body dir=ltr data-md-color-scheme=default data-md-color-primary=indigo data-md-color-accent=indigo> <input class=md-toggle data-md-toggle=drawer type=checkbox id=__drawer autocomplete=off> <input class=md-toggle data-md-toggle=search type=checkbox id=__search autocomplete=off> <label class=md-overlay for=__drawer></label> <div data-md-component=skip> <a href=#nlohmannbasic_jsonitems class=md-skip> Skip to content </a> </div> <div data-md-component=announce> </div> <header class=md-header data-md-component=header> <nav class="md-header__inner md-grid" aria-label=Header> <a href=../../.. title="JSON for Modern C++" class="md-header__button md-logo" aria-label="JSON for Modern C++" data-md-component=logo> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54"/></svg> </a> <label class="md-header__button md-icon" for=__drawer> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M3 6h18v2H3zm0 5h18v2H3zm0 5h18v2H3z"/></svg> </label> <div class=md-header__title data-md-component=header-title> <div class=md-header__ellipsis> <div class=md-header__topic> <span class=md-ellipsis> JSON for Modern C++ </span> </div> <div class=md-header__topic data-md-component=header-topic> <span class=md-ellipsis> items </span> </div> </div> </div> <form class=md-header__option data-md-component=palette> <input class=md-option data-md-color-media="(prefers-color-scheme: light)" data-md-color-scheme=default data-md-color-primary=indigo data-md-color-accent=indigo aria-label="Switch to dark mode" type=radio name=__palette id=__palette_0> <label class="md-header__button md-icon" title="Switch to dark mode" for=__palette_1 hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a4 4 0 0 0-4 4 4 4 0 0 0 4 4 4 4 0 0 0 4-4 4 4 0 0 0-4-4m0 10a6 6 0 0 1-6-6 6 6 0 0 1 6-6 6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12z"/></svg> </label> <input class=md-option data-md-color-media="(prefers-color-scheme: dark)" data-md-color-scheme=slate data-md-color-primary=indigo data-md-color-accent=indigo aria-label="Switch to light mode" type=radio name=__palette id=__palette_1> <label class="md-header__button md-icon" title="Switch to light mode" for=__palette_0 hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 18c-.89 0-1.74-.2-2.5-.55C11.56 16.5 13 14.42 13 12s-1.44-4.5-3.5-5.45C10.26 6.2 11.11 6 12 6a6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12z"/></svg> </label> </form> <script>var palette=__md_get("__palette");if(palette&&palette.color){if("(prefers-color-scheme)"===palette.color.media){var media=matchMedia("(prefers-color-scheme: light)"),input=document.querySelector(media.matches?"[data-md-color-media='(prefers-color-scheme: light)']":"[data-md-color-media='(prefers-color-scheme: dark)']");palette.color.media=input.getAttribute("data-md-color-media"),palette.color.scheme=input.getAttribute("data-md-color-scheme"),palette.color.primary=input.getAttribute("data-md-color-primary"),palette.color.accent=input.getAttribute("data-md-color-accent")}for(var[key,value]of Object.entries(palette.color))document.body.setAttribute("data-md-color-"+key,value)}</script> <label class="md-header__button md-icon" for=__search> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg> </label> <div class=md-search data-md-component=search role=dialog> <label class=md-search__overlay for=__search></label> <div class=md-search__inner role=search> <form class=md-search__form name=search> <input type=text class=md-search__input name=query aria-label=Search placeholder=Search autocapitalize=off autocorrect=off autocomplete=off spellcheck=false data-md-component=search-query required> <label class="md-search__icon md-icon" for=__search> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11z"/></svg> </label> <nav class=md-search__options aria-label=Search> <button type=reset class="md-search__icon md-icon" title=Clear aria-label=Clear tabindex=-1> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z"/></svg> </button> </nav> </form> <div class=md-search__output> <div class=md-search__scrollwrap tabindex=0 data-md-scrollfix> <div class=md-search-result data-md-component=search-result> <div class=md-search-result__meta> Initializing search </div> <ol class=md-search-result__list role=presentation></ol> </div> </div> </div> </div> </div> <div class=md-header__source> <a href="https://github.com/nlohmann/json" title="Go to repository" class="md-source" data-md-component="source"> <div class="md-source__icon md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </div> <div class=md-source__repository> nlohmann/json </div> </a> </div> </nav> </header> <div class=md-container data-md-component=container> <nav class=md-tabs aria-label=Tabs data-md-component=tabs> <div class=md-grid> <ul class=md-tabs__list> <li class=md-tabs__item> <a href=../../.. class=md-tabs__link> Home </a> </li> <li class=md-tabs__item> <a href=../../../features/arbitrary_types/ class=md-tabs__link> Features </a> </li> <li class=md-tabs__item> <a href=../../../integration/ class=md-tabs__link> Integration </a> </li> <li class="md-tabs__item md-tabs__item--active"> <a href=../ class=md-tabs__link> API Documentation </a> </li> <li class=md-tabs__item> <a href=../../../community/ class=md-tabs__link> Community </a> </li> </ul> </div> </nav> <main class=md-main data-md-component=main> <div class="md-main__inner md-grid"> <div class="md-sidebar md-sidebar--primary" data-md-component=sidebar data-md-type=navigation> <div class=md-sidebar__scrollwrap> <div class=md-sidebar__inner> <nav class="md-nav md-nav--primary md-nav--lifted" aria-label=Navigation data-md-level=0> <label class=md-nav__title for=__drawer> <a href=../../.. title="JSON for Modern C++" class="md-nav__button md-logo" aria-label="JSON for Modern C++" data-md-component=logo> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54"/></svg> </a> JSON for Modern C++ </label> <div class=md-nav__source> <a href="https://github.com/nlohmann/json" title="Go to repository" class="md-source" data-md-component="source"> <div class="md-source__icon md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </div> <div class=md-source__repository> nlohmann/json </div> </a> </div> <ul class=md-nav__list data-md-scrollfix> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_1> <div class="md-nav__link md-nav__container"> <a href=../../.. class="md-nav__link "> <span class=md-ellipsis> Home </span> </a> <label class="md-nav__link " for=__nav_1 id=__nav_1_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_1_label aria-expanded=false> <label class=md-nav__title for=__nav_1> <span class="md-nav__icon md-icon"></span> Home </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../home/license/ class=md-nav__link> <span class=md-ellipsis> License </span> </a> </li> <li class=md-nav__item> <a href=../../../home/faq/ class=md-nav__link> <span class=md-ellipsis> FAQ </span> </a> </li> <li class=md-nav__item> <a href=../../../home/exceptions/ class=md-nav__link> <span class=md-ellipsis> Exceptions </span> </a> </li> <li class=md-nav__item> <a href=../../../home/releases/ class=md-nav__link> <span class=md-ellipsis> Releases </span> </a> </li> <li class=md-nav__item> <a href=../../../home/design_goals/ class=md-nav__link> <span class=md-ellipsis> Design goals </span> </a> </li> <li class=md-nav__item> <a href=../../../home/architecture/ class=md-nav__link> <span class=md-ellipsis> Architecture </span> </a> </li> <li class=md-nav__item> <a href=../../../home/customers/ class=md-nav__link> <span class=md-ellipsis> Customers </span> </a> </li> <li class=md-nav__item> <a href=../../../home/sponsors/ class=md-nav__link> <span class=md-ellipsis> Sponsors </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2> <label class=md-nav__link for=__nav_2 id=__nav_2_label tabindex=0> <span class=md-ellipsis> Features </span> <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_2_label aria-expanded=false> <label class=md-nav__title for=__nav_2> <span class="md-nav__icon md-icon"></span> Features </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/arbitrary_types/ class=md-nav__link> <span class=md-ellipsis> Arbitrary Type Conversions </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_2> <div class="md-nav__link md-nav__container"> <a href=../../../features/binary_formats/ class="md-nav__link "> <span class=md-ellipsis> Binary Formats </span> </a> <label class="md-nav__link " for=__nav_2_2 id=__nav_2_2_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_2_label aria-expanded=false> <label class=md-nav__title for=__nav_2_2> <span class="md-nav__icon md-icon"></span> Binary Formats </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/binary_formats/bjdata/ class=md-nav__link> <span class=md-ellipsis> BJData </span> </a> </li> <li class=md-nav__item> <a href=../../../features/binary_formats/bson/ class=md-nav__link> <span class=md-ellipsis> BSON </span> </a> </li> <li class=md-nav__item> <a href=../../../features/binary_formats/cbor/ class=md-nav__link> <span class=md-ellipsis> CBOR </span> </a> </li> <li class=md-nav__item> <a href=../../../features/binary_formats/messagepack/ class=md-nav__link> <span class=md-ellipsis> MessagePack </span> </a> </li> <li class=md-nav__item> <a href=../../../features/binary_formats/ubjson/ class=md-nav__link> <span class=md-ellipsis> UBJSON </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../../features/binary_values/ class=md-nav__link> <span class=md-ellipsis> Binary Values </span> </a> </li> <li class=md-nav__item> <a href=../../../features/comments/ class=md-nav__link> <span class=md-ellipsis> Comments </span> </a> </li> <li class=md-nav__item> <a href=../../../features/trailing_commas/ class=md-nav__link> <span class=md-ellipsis> Trailing Commas </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_6> <div class="md-nav__link md-nav__container"> <a href=../../../features/element_access/ class="md-nav__link "> <span class=md-ellipsis> Element Access </span> </a> <label class="md-nav__link " for=__nav_2_6 id=__nav_2_6_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_6_label aria-expanded=false> <label class=md-nav__title for=__nav_2_6> <span class="md-nav__icon md-icon"></span> Element Access </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/element_access/unchecked_access/ class=md-nav__link> <span class=md-ellipsis> Unchecked access: operator[] </span> </a> </li> <li class=md-nav__item> <a href=../../../features/element_access/checked_access/ class=md-nav__link> <span class=md-ellipsis> Checked access: at </span> </a> </li> <li class=md-nav__item> <a href=../../../features/element_access/default_value/ class=md-nav__link> <span class=md-ellipsis> Access with default value: value </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../../features/iterators/ class=md-nav__link> <span class=md-ellipsis> Iterators </span> </a> </li> <li class=md-nav__item> <a href=../../../features/json_pointer/ class=md-nav__link> <span class=md-ellipsis> JSON Pointer </span> </a> </li> <li class=md-nav__item> <a href=../../../features/json_patch/ class=md-nav__link> <span class=md-ellipsis> JSON Patch and Diff </span> </a> </li> <li class=md-nav__item> <a href=../../../features/merge_patch/ class=md-nav__link> <span class=md-ellipsis> JSON Merge Patch </span> </a> </li> <li class=md-nav__item> <a href=../../../features/modules/ class=md-nav__link> <span class=md-ellipsis> Modules </span> </a> </li> <li class=md-nav__item> <a href=../../../features/namespace/ class=md-nav__link> <span class=md-ellipsis> nlohmann Namespace </span> </a> </li> <li class=md-nav__item> <a href=../../../features/object_order/ class=md-nav__link> <span class=md-ellipsis> Object Order </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_14> <div class="md-nav__link md-nav__container"> <a href=../../../features/parsing/ class="md-nav__link "> <span class=md-ellipsis> Parsing </span> </a> <label class="md-nav__link " for=__nav_2_14 id=__nav_2_14_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_14_label aria-expanded=false> <label class=md-nav__title for=__nav_2_14> <span class="md-nav__icon md-icon"></span> Parsing </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/parsing/json_lines/ class=md-nav__link> <span class=md-ellipsis> JSON Lines </span> </a> </li> <li class=md-nav__item> <a href=../../../features/parsing/parse_exceptions/ class=md-nav__link> <span class=md-ellipsis> Parsing and Exceptions </span> </a> </li> <li class=md-nav__item> <a href=../../../features/parsing/parser_callbacks/ class=md-nav__link> <span class=md-ellipsis> Parser Callbacks </span> </a> </li> <li class=md-nav__item> <a href=../../../features/parsing/sax_interface/ class=md-nav__link> <span class=md-ellipsis> SAX Interface </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../../features/assertions/ class=md-nav__link> <span class=md-ellipsis> Runtime Assertions </span> </a> </li> <li class=md-nav__item> <a href=../../../features/enum_conversion/ class=md-nav__link> <span class=md-ellipsis> Specializing enum conversion </span> </a> </li> <li class=md-nav__item> <a href=../../../features/macros/ class=md-nav__link> <span class=md-ellipsis> Supported Macros </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_18> <div class="md-nav__link md-nav__container"> <a href=../../../features/types/ class="md-nav__link "> <span class=md-ellipsis> Types </span> </a> <label class="md-nav__link " for=__nav_2_18 id=__nav_2_18_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_18_label aria-expanded=false> <label class=md-nav__title for=__nav_2_18> <span class="md-nav__icon md-icon"></span> Types </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/types/number_handling/ class=md-nav__link> <span class=md-ellipsis> Number Handling </span> </a> </li> </ul> </nav> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_3> <div class="md-nav__link md-nav__container"> <a href=../../../integration/ class="md-nav__link "> <span class=md-ellipsis> Integration </span> </a> <label class="md-nav__link " for=__nav_3 id=__nav_3_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_3_label aria-expanded=false> <label class=md-nav__title for=__nav_3> <span class="md-nav__icon md-icon"></span> Integration </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../integration/migration_guide/ class=md-nav__link> <span class=md-ellipsis> Migration Guide </span> </a> </li> <li class=md-nav__item> <a href=../../../integration/cmake/ class=md-nav__link> <span class=md-ellipsis> CMake </span> </a> </li> <li class=md-nav__item> <a href=../../../integration/package_managers/ class=md-nav__link> <span class=md-ellipsis> Package Managers </span> </a> </li> <li class=md-nav__item> <a href=../../../integration/pkg-config/ class=md-nav__link> <span class=md-ellipsis> Pkg-config </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--active md-nav__item--section md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4 checked> <label class=md-nav__link for=__nav_4 id=__nav_4_label tabindex> <span class=md-ellipsis> API Documentation </span> <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_4_label aria-expanded=true> <label class=md-nav__title for=__nav_4> <span class="md-nav__icon md-icon"></span> API Documentation </label> <ul class=md-nav__list data-md-scrollfix> <li class="md-nav__item md-nav__item--active md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_1 checked> <div class="md-nav__link md-nav__container"> <a href=../ class="md-nav__link "> <span class=md-ellipsis> basic_json </span> </a> <label class="md-nav__link " for=__nav_4_1 id=__nav_4_1_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_1_label aria-expanded=true> <label class=md-nav__title for=__nav_4_1> <span class="md-nav__icon md-icon"></span> basic_json </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../basic_json/ class=md-nav__link> <span class=md-ellipsis> (Constructor) </span> </a> </li> <li class=md-nav__item> <a href=../~basic_json/ class=md-nav__link> <span class=md-ellipsis> (Destructor) </span> </a> </li> <li class=md-nav__item> <a href=../accept/ class=md-nav__link> <span class=md-ellipsis> accept </span> </a> </li> <li class=md-nav__item> <a href=../array/ class=md-nav__link> <span class=md-ellipsis> array </span> </a> </li> <li class=md-nav__item> <a href=../array_t/ class=md-nav__link> <span class=md-ellipsis> array_t </span> </a> </li> <li class=md-nav__item> <a href=../at/ class=md-nav__link> <span class=md-ellipsis> at </span> </a> </li> <li class=md-nav__item> <a href=../back/ class=md-nav__link> <span class=md-ellipsis> back </span> </a> </li> <li class=md-nav__item> <a href=../begin/ class=md-nav__link> <span class=md-ellipsis> begin </span> </a> </li> <li class=md-nav__item> <a href=../binary/ class=md-nav__link> <span class=md-ellipsis> binary </span> </a> </li> <li class=md-nav__item> <a href=../binary_t/ class=md-nav__link> <span class=md-ellipsis> binary_t </span> </a> </li> <li class=md-nav__item> <a href=../boolean_t/ class=md-nav__link> <span class=md-ellipsis> boolean_t </span> </a> </li> <li class=md-nav__item> <a href=../cbegin/ class=md-nav__link> <span class=md-ellipsis> cbegin </span> </a> </li> <li class=md-nav__item> <a href=../cbor_tag_handler_t/ class=md-nav__link> <span class=md-ellipsis> cbor_tag_handler_t </span> </a> </li> <li class=md-nav__item> <a href=../cend/ class=md-nav__link> <span class=md-ellipsis> cend </span> </a> </li> <li class=md-nav__item> <a href=../clear/ class=md-nav__link> <span class=md-ellipsis> clear </span> </a> </li> <li class=md-nav__item> <a href=../contains/ class=md-nav__link> <span class=md-ellipsis> contains </span> </a> </li> <li class=md-nav__item> <a href=../count/ class=md-nav__link> <span class=md-ellipsis> count </span> </a> </li> <li class=md-nav__item> <a href=../crbegin/ class=md-nav__link> <span class=md-ellipsis> crbegin </span> </a> </li> <li class=md-nav__item> <a href=../crend/ class=md-nav__link> <span class=md-ellipsis> crend </span> </a> </li> <li class=md-nav__item> <a href=../default_object_comparator_t/ class=md-nav__link> <span class=md-ellipsis> default_object_comparator_t </span> </a> </li> <li class=md-nav__item> <a href=../diff/ class=md-nav__link> <span class=md-ellipsis> diff </span> </a> </li> <li class=md-nav__item> <a href=../dump/ class=md-nav__link> <span class=md-ellipsis> dump </span> </a> </li> <li class=md-nav__item> <a href=../emplace/ class=md-nav__link> <span class=md-ellipsis> emplace </span> </a> </li> <li class=md-nav__item> <a href=../emplace_back/ class=md-nav__link> <span class=md-ellipsis> emplace_back </span> </a> </li> <li class=md-nav__item> <a href=../empty/ class=md-nav__link> <span class=md-ellipsis> empty </span> </a> </li> <li class=md-nav__item> <a href=../end/ class=md-nav__link> <span class=md-ellipsis> end </span> </a> </li> <li class=md-nav__item> <a href=../end_pos/ class=md-nav__link> <span class=md-ellipsis> end_pos </span> </a> </li> <li class=md-nav__item> <a href=../erase/ class=md-nav__link> <span class=md-ellipsis> erase </span> </a> </li> <li class=md-nav__item> <a href=../error_handler_t/ class=md-nav__link> <span class=md-ellipsis> error_handler_t </span> </a> </li> <li class=md-nav__item> <a href=../exception/ class=md-nav__link> <span class=md-ellipsis> exception </span> </a> </li> <li class=md-nav__item> <a href=../find/ class=md-nav__link> <span class=md-ellipsis> find </span> </a> </li> <li class=md-nav__item> <a href=../flatten/ class=md-nav__link> <span class=md-ellipsis> flatten </span> </a> </li> <li class=md-nav__item> <a href=../from_bjdata/ class=md-nav__link> <span class=md-ellipsis> from_bjdata </span> </a> </li> <li class=md-nav__item> <a href=../from_bson/ class=md-nav__link> <span class=md-ellipsis> from_bson </span> </a> </li> <li class=md-nav__item> <a href=../from_cbor/ class=md-nav__link> <span class=md-ellipsis> from_cbor </span> </a> </li> <li class=md-nav__item> <a href=../from_msgpack/ class=md-nav__link> <span class=md-ellipsis> from_msgpack </span> </a> </li> <li class=md-nav__item> <a href=../from_ubjson/ class=md-nav__link> <span class=md-ellipsis> from_ubjson </span> </a> </li> <li class=md-nav__item> <a href=../front/ class=md-nav__link> <span class=md-ellipsis> front </span> </a> </li> <li class=md-nav__item> <a href=../get/ class=md-nav__link> <span class=md-ellipsis> get </span> </a> </li> <li class=md-nav__item> <a href=../get_allocator/ class=md-nav__link> <span class=md-ellipsis> get_allocator </span> </a> </li> <li class=md-nav__item> <a href=../get_binary/ class=md-nav__link> <span class=md-ellipsis> get_binary </span> </a> </li> <li class=md-nav__item> <a href=../get_ptr/ class=md-nav__link> <span class=md-ellipsis> get_ptr </span> </a> </li> <li class=md-nav__item> <a href=../get_ref/ class=md-nav__link> <span class=md-ellipsis> get_ref </span> </a> </li> <li class=md-nav__item> <a href=../get_to/ class=md-nav__link> <span class=md-ellipsis> get_to </span> </a> </li> <li class=md-nav__item> <a href=../std_hash/ class=md-nav__link> <span class=md-ellipsis> std::hash&lt;basic_json&gt; </span> </a> </li> <li class=md-nav__item> <a href=../input_format_t/ class=md-nav__link> <span class=md-ellipsis> input_format_t </span> </a> </li> <li class=md-nav__item> <a href=../insert/ class=md-nav__link> <span class=md-ellipsis> insert </span> </a> </li> <li class=md-nav__item> <a href=../invalid_iterator/ class=md-nav__link> <span class=md-ellipsis> invalid_iterator </span> </a> </li> <li class=md-nav__item> <a href=../is_array/ class=md-nav__link> <span class=md-ellipsis> is_array </span> </a> </li> <li class=md-nav__item> <a href=../is_binary/ class=md-nav__link> <span class=md-ellipsis> is_binary </span> </a> </li> <li class=md-nav__item> <a href=../is_boolean/ class=md-nav__link> <span class=md-ellipsis> is_boolean </span> </a> </li> <li class=md-nav__item> <a href=../is_discarded/ class=md-nav__link> <span class=md-ellipsis> is_discarded </span> </a> </li> <li class=md-nav__item> <a href=../is_null/ class=md-nav__link> <span class=md-ellipsis> is_null </span> </a> </li> <li class=md-nav__item> <a href=../is_number/ class=md-nav__link> <span class=md-ellipsis> is_number </span> </a> </li> <li class=md-nav__item> <a href=../is_number_float/ class=md-nav__link> <span class=md-ellipsis> is_number_float </span> </a> </li> <li class=md-nav__item> <a href=../is_number_integer/ class=md-nav__link> <span class=md-ellipsis> is_number_integer </span> </a> </li> <li class=md-nav__item> <a href=../is_number_unsigned/ class=md-nav__link> <span class=md-ellipsis> is_number_unsigned </span> </a> </li> <li class=md-nav__item> <a href=../is_object/ class=md-nav__link> <span class=md-ellipsis> is_object </span> </a> </li> <li class=md-nav__item> <a href=../is_primitive/ class=md-nav__link> <span class=md-ellipsis> is_primitive </span> </a> </li> <li class=md-nav__item> <a href=../is_string/ class=md-nav__link> <span class=md-ellipsis> is_string </span> </a> </li> <li class=md-nav__item> <a href=../is_structured/ class=md-nav__link> <span class=md-ellipsis> is_structured </span> </a> </li> <li class="md-nav__item md-nav__item--active"> <input class="md-nav__toggle md-toggle" type=checkbox id=__toc> <label class="md-nav__link md-nav__link--active" for=__toc> <span class=md-ellipsis> items </span> <span class="md-nav__icon md-icon"></span> </label> <a href=./ class="md-nav__link md-nav__link--active"> <span class=md-ellipsis> items </span> </a> <nav class="md-nav md-nav--secondary" aria-label="Table of contents"> <label class=md-nav__title for=__toc> <span class="md-nav__icon md-icon"></span> Table of contents </label> <ul class=md-nav__list data-md-component=toc data-md-scrollfix> <li class=md-nav__item> <a href=#return-value class=md-nav__link> <span class=md-ellipsis> Return value </span> </a> </li> <li class=md-nav__item> <a href=#exception-safety class=md-nav__link> <span class=md-ellipsis> Exception safety </span> </a> </li> <li class=md-nav__item> <a href=#complexity class=md-nav__link> <span class=md-ellipsis> Complexity </span> </a> </li> <li class=md-nav__item> <a href=#notes class=md-nav__link> <span class=md-ellipsis> Notes </span> </a> </li> <li class=md-nav__item> <a href=#examples class=md-nav__link> <span class=md-ellipsis> Examples </span> </a> </li> <li class=md-nav__item> <a href=#see-also class=md-nav__link> <span class=md-ellipsis> See also </span> </a> </li> <li class=md-nav__item> <a href=#version-history class=md-nav__link> <span class=md-ellipsis> Version history </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../json_base_class_t/ class=md-nav__link> <span class=md-ellipsis> json_base_class_t </span> </a> </li> <li class=md-nav__item> <a href=../json_serializer/ class=md-nav__link> <span class=md-ellipsis> json_serializer </span> </a> </li> <li class=md-nav__item> <a href=../max_size/ class=md-nav__link> <span class=md-ellipsis> max_size </span> </a> </li> <li class=md-nav__item> <a href=../meta/ class=md-nav__link> <span class=md-ellipsis> meta </span> </a> </li> <li class=md-nav__item> <a href=../merge_patch/ class=md-nav__link> <span class=md-ellipsis> merge_patch </span> </a> </li> <li class=md-nav__item> <a href=../number_float_t/ class=md-nav__link> <span class=md-ellipsis> number_float_t </span> </a> </li> <li class=md-nav__item> <a href=../number_integer_t/ class=md-nav__link> <span class=md-ellipsis> number_integer_t </span> </a> </li> <li class=md-nav__item> <a href=../number_unsigned_t/ class=md-nav__link> <span class=md-ellipsis> number_unsigned_t </span> </a> </li> <li class=md-nav__item> <a href=../object/ class=md-nav__link> <span class=md-ellipsis> object </span> </a> </li> <li class=md-nav__item> <a href=../object_comparator_t/ class=md-nav__link> <span class=md-ellipsis> object_comparator_t </span> </a> </li> <li class=md-nav__item> <a href=../object_t/ class=md-nav__link> <span class=md-ellipsis> object_t </span> </a> </li> <li class=md-nav__item> <a href=../operator_ValueType/ class=md-nav__link> <span class=md-ellipsis> operator ValueType </span> </a> </li> <li class=md-nav__item> <a href=../operator_value_t/ class=md-nav__link> <span class=md-ellipsis> operator value_t </span> </a> </li> <li class=md-nav__item> <a href=../operator%5B%5D/ class=md-nav__link> <span class=md-ellipsis> operator[] </span> </a> </li> <li class=md-nav__item> <a href=../operator%3D/ class=md-nav__link> <span class=md-ellipsis> operator= </span> </a> </li> <li class=md-nav__item> <a href=../operator%2B%3D/ class=md-nav__link> <span class=md-ellipsis> operator+= </span> </a> </li> <li class=md-nav__item> <a href=../operator_eq/ class=md-nav__link> <span class=md-ellipsis> operator== </span> </a> </li> <li class=md-nav__item> <a href=../operator_ne/ class=md-nav__link> <span class=md-ellipsis> operator!= </span> </a> </li> <li class=md-nav__item> <a href=../operator_lt/ class=md-nav__link> <span class=md-ellipsis> operator< </span> </a> </li> <li class=md-nav__item> <a href=../operator_gt/ class=md-nav__link> <span class=md-ellipsis> operator> </span> </a> </li> <li class=md-nav__item> <a href=../operator_le/ class=md-nav__link> <span class=md-ellipsis> operator<= </span> </a> </li> <li class=md-nav__item> <a href=../operator_ge/ class=md-nav__link> <span class=md-ellipsis> operator>= </span> </a> </li> <li class=md-nav__item> <a href=../operator_spaceship/ class=md-nav__link> <span class=md-ellipsis> operator<=> </span> </a> </li> <li class=md-nav__item> <a href=../out_of_range/ class=md-nav__link> <span class=md-ellipsis> out_of_range </span> </a> </li> <li class=md-nav__item> <a href=../other_error/ class=md-nav__link> <span class=md-ellipsis> other_error </span> </a> </li> <li class=md-nav__item> <a href=../parse/ class=md-nav__link> <span class=md-ellipsis> parse </span> </a> </li> <li class=md-nav__item> <a href=../parse_error/ class=md-nav__link> <span class=md-ellipsis> parse_error </span> </a> </li> <li class=md-nav__item> <a href=../parse_event_t/ class=md-nav__link> <span class=md-ellipsis> parse_event_t </span> </a> </li> <li class=md-nav__item> <a href=../parser_callback_t/ class=md-nav__link> <span class=md-ellipsis> parser_callback_t </span> </a> </li> <li class=md-nav__item> <a href=../patch/ class=md-nav__link> <span class=md-ellipsis> patch </span> </a> </li> <li class=md-nav__item> <a href=../patch_inplace/ class=md-nav__link> <span class=md-ellipsis> patch_inplace </span> </a> </li> <li class=md-nav__item> <a href=../push_back/ class=md-nav__link> <span class=md-ellipsis> push_back </span> </a> </li> <li class=md-nav__item> <a href=../rbegin/ class=md-nav__link> <span class=md-ellipsis> rbegin </span> </a> </li> <li class=md-nav__item> <a href=../rend/ class=md-nav__link> <span class=md-ellipsis> rend </span> </a> </li> <li class=md-nav__item> <a href=../sax_parse/ class=md-nav__link> <span class=md-ellipsis> sax_parse </span> </a> </li> <li class=md-nav__item> <a href=../size/ class=md-nav__link> <span class=md-ellipsis> size </span> </a> </li> <li class=md-nav__item> <a href=../start_pos/ class=md-nav__link> <span class=md-ellipsis> start_pos </span> </a> </li> <li class=md-nav__item> <a href=../string_t/ class=md-nav__link> <span class=md-ellipsis> string_t </span> </a> </li> <li class=md-nav__item> <a href=../swap/ class=md-nav__link> <span class=md-ellipsis> swap </span> </a> </li> <li class=md-nav__item> <a href=../std_swap/ class=md-nav__link> <span class=md-ellipsis> std::swap&lt;basic_json&gt; </span> </a> </li> <li class=md-nav__item> <a href=../to_bjdata/ class=md-nav__link> <span class=md-ellipsis> to_bjdata </span> </a> </li> <li class=md-nav__item> <a href=../to_bson/ class=md-nav__link> <span class=md-ellipsis> to_bson </span> </a> </li> <li class=md-nav__item> <a href=../to_cbor/ class=md-nav__link> <span class=md-ellipsis> to_cbor </span> </a> </li> <li class=md-nav__item> <a href=../to_msgpack/ class=md-nav__link> <span class=md-ellipsis> to_msgpack </span> </a> </li> <li class=md-nav__item> <a href=../to_string/ class=md-nav__link> <span class=md-ellipsis> to_string </span> </a> </li> <li class=md-nav__item> <a href=../to_ubjson/ class=md-nav__link> <span class=md-ellipsis> to_ubjson </span> </a> </li> <li class=md-nav__item> <a href=../type/ class=md-nav__link> <span class=md-ellipsis> type </span> </a> </li> <li class=md-nav__item> <a href=../type_error/ class=md-nav__link> <span class=md-ellipsis> type_error </span> </a> </li> <li class=md-nav__item> <a href=../type_name/ class=md-nav__link> <span class=md-ellipsis> type_name </span> </a> </li> <li class=md-nav__item> <a href=../unflatten/ class=md-nav__link> <span class=md-ellipsis> unflatten </span> </a> </li> <li class=md-nav__item> <a href=../update/ class=md-nav__link> <span class=md-ellipsis> update </span> </a> </li> <li class=md-nav__item> <a href=../value/ class=md-nav__link> <span class=md-ellipsis> value </span> </a> </li> <li class=md-nav__item> <a href=../value_t/ class=md-nav__link> <span class=md-ellipsis> value_t </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_2> <div class="md-nav__link md-nav__container"> <a href=../../byte_container_with_subtype/ class="md-nav__link "> <span class=md-ellipsis> byte_container_with_subtype </span> </a> <label class="md-nav__link " for=__nav_4_2 id=__nav_4_2_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_2_label aria-expanded=false> <label class=md-nav__title for=__nav_4_2> <span class="md-nav__icon md-icon"></span> byte_container_with_subtype </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../byte_container_with_subtype/byte_container_with_subtype/ class=md-nav__link> <span class=md-ellipsis> (constructor) </span> </a> </li> <li class=md-nav__item> <a href=../../byte_container_with_subtype/clear_subtype/ class=md-nav__link> <span class=md-ellipsis> clear_subtype </span> </a> </li> <li class=md-nav__item> <a href=../../byte_container_with_subtype/has_subtype/ class=md-nav__link> <span class=md-ellipsis> has_subtype </span> </a> </li> <li class=md-nav__item> <a href=../../byte_container_with_subtype/set_subtype/ class=md-nav__link> <span class=md-ellipsis> set_subtype </span> </a> </li> <li class=md-nav__item> <a href=../../byte_container_with_subtype/subtype/ class=md-nav__link> <span class=md-ellipsis> subtype </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_3> <div class="md-nav__link md-nav__container"> <a href=../../adl_serializer/ class="md-nav__link "> <span class=md-ellipsis> adl_serializer </span> </a> <label class="md-nav__link " for=__nav_4_3 id=__nav_4_3_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_3_label aria-expanded=false> <label class=md-nav__title for=__nav_4_3> <span class="md-nav__icon md-icon"></span> adl_serializer </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../adl_serializer/from_json/ class=md-nav__link> <span class=md-ellipsis> from_json </span> </a> </li> <li class=md-nav__item> <a href=../../adl_serializer/to_json/ class=md-nav__link> <span class=md-ellipsis> to_json </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../json/ class=md-nav__link> <span class=md-ellipsis> json </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_5> <div class="md-nav__link md-nav__container"> <a href=../../json_pointer/ class="md-nav__link "> <span class=md-ellipsis> json_pointer </span> </a> <label class="md-nav__link " for=__nav_4_5 id=__nav_4_5_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_5_label aria-expanded=false> <label class=md-nav__title for=__nav_4_5> <span class="md-nav__icon md-icon"></span> json_pointer </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../json_pointer/json_pointer/ class=md-nav__link> <span class=md-ellipsis> (Constructor) </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/back/ class=md-nav__link> <span class=md-ellipsis> back </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/empty/ class=md-nav__link> <span class=md-ellipsis> empty </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/front/ class=md-nav__link> <span class=md-ellipsis> front </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_string_t/ class=md-nav__link> <span class=md-ellipsis> operator string_t </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_eq/ class=md-nav__link> <span class=md-ellipsis> operator== </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_ne/ class=md-nav__link> <span class=md-ellipsis> operator!= </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_slash/ class=md-nav__link> <span class=md-ellipsis> operator/ </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_slasheq/ class=md-nav__link> <span class=md-ellipsis> operator/= </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/parent_pointer/ class=md-nav__link> <span class=md-ellipsis> parent_pointer </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/pop_back/ class=md-nav__link> <span class=md-ellipsis> pop_back </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/pop_front/ class=md-nav__link> <span class=md-ellipsis> pop_front </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/push_back/ class=md-nav__link> <span class=md-ellipsis> push_back </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/push_front/ class=md-nav__link> <span class=md-ellipsis> push_front </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/string_t/ class=md-nav__link> <span class=md-ellipsis> string_t </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/to_string/ class=md-nav__link> <span class=md-ellipsis> to_string </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_6> <div class="md-nav__link md-nav__container"> <a href=../../json_sax/ class="md-nav__link "> <span class=md-ellipsis> json_sax </span> </a> <label class="md-nav__link " for=__nav_4_6 id=__nav_4_6_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_6_label aria-expanded=false> <label class=md-nav__title for=__nav_4_6> <span class="md-nav__icon md-icon"></span> json_sax </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../json_sax/binary/ class=md-nav__link> <span class=md-ellipsis> binary </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/boolean/ class=md-nav__link> <span class=md-ellipsis> boolean </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/end_array/ class=md-nav__link> <span class=md-ellipsis> end_array </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/end_object/ class=md-nav__link> <span class=md-ellipsis> end_object </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/key/ class=md-nav__link> <span class=md-ellipsis> key </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/null/ class=md-nav__link> <span class=md-ellipsis> null </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/number_float/ class=md-nav__link> <span class=md-ellipsis> number_float </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/number_integer/ class=md-nav__link> <span class=md-ellipsis> number_integer </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/number_unsigned/ class=md-nav__link> <span class=md-ellipsis> number_unsigned </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/parse_error/ class=md-nav__link> <span class=md-ellipsis> parse_error </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/start_array/ class=md-nav__link> <span class=md-ellipsis> start_array </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/start_object/ class=md-nav__link> <span class=md-ellipsis> start_object </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/string/ class=md-nav__link> <span class=md-ellipsis> string </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../operator_ltlt/ class=md-nav__link> <span class=md-ellipsis> operator<<(basic_json), operator<<(json_pointer) </span> </a> </li> <li class=md-nav__item> <a href=../../operator_gtgt/ class=md-nav__link> <span class=md-ellipsis> operator>>(basic_json) </span> </a> </li> <li class=md-nav__item> <a href=../../operator_literal_json/ class=md-nav__link> <span class=md-ellipsis> operator""_json </span> </a> </li> <li class=md-nav__item> <a href=../../operator_literal_json_pointer/ class=md-nav__link> <span class=md-ellipsis> operator""_json_pointer </span> </a> </li> <li class=md-nav__item> <a href=../../ordered_json/ class=md-nav__link> <span class=md-ellipsis> ordered_json </span> </a> </li> <li class=md-nav__item> <a href=../../ordered_map/ class=md-nav__link> <span class=md-ellipsis> ordered_map </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_13> <div class="md-nav__link md-nav__container"> <a href=../../macros/ class="md-nav__link "> <span class=md-ellipsis> macros </span> </a> <label class="md-nav__link " for=__nav_4_13 id=__nav_4_13_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_13_label aria-expanded=false> <label class=md-nav__title for=__nav_4_13> <span class="md-nav__icon md-icon"></span> macros </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../macros/json_assert/ class=md-nav__link> <span class=md-ellipsis> JSON_ASSERT </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_brace_init_copy_semantics/ class=md-nav__link> <span class=md-ellipsis> JSON_BRACE_INIT_COPY_SEMANTICS </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_throw_user/ class=md-nav__link> <span class=md-ellipsis> JSON_CATCH_USER, JSON_THROW_USER, JSON_TRY_USER </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_diagnostics/ class=md-nav__link> <span class=md-ellipsis> JSON_DIAGNOSTICS </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_diagnostic_positions/ class=md-nav__link> <span class=md-ellipsis> JSON_DIAGNOSTIC_POSITIONS </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_disable_enum_serialization/ class=md-nav__link> <span class=md-ellipsis> JSON_DISABLE_ENUM_SERIALIZATION </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_has_cpp_11/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_CPP_11, JSON_HAS_CPP_14, JSON_HAS_CPP_17, JSON_HAS_CPP_20 </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_has_filesystem/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_EXPERIMENTAL_FILESYSTEM, JSON_HAS_FILESYSTEM </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_has_ranges/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_RANGES </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_has_static_rtti/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_STATIC_RTTI </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_has_three_way_comparison/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_THREE_WAY_COMPARISON </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_noexception/ class=md-nav__link> <span class=md-ellipsis> JSON_NOEXCEPTION </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_no_io/ class=md-nav__link> <span class=md-ellipsis> JSON_NO_IO </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_skip_library_version_check/ class=md-nav__link> <span class=md-ellipsis> JSON_SKIP_LIBRARY_VERSION_CHECK </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_skip_unsupported_compiler_check/ class=md-nav__link> <span class=md-ellipsis> JSON_SKIP_UNSUPPORTED_COMPILER_CHECK </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_use_global_udls/ class=md-nav__link> <span class=md-ellipsis> JSON_USE_GLOBAL_UDLS </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_use_implicit_conversions/ class=md-nav__link> <span class=md-ellipsis> JSON_USE_IMPLICIT_CONVERSIONS </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_use_legacy_discarded_value_comparison/ class=md-nav__link> <span class=md-ellipsis> JSON_USE_LEGACY_DISCARDED_VALUE_COMPARISON </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_define_derived_type/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_ONLY_SERIALIZE, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_define_type_intrusive/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_TYPE_INTRUSIVE, NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_TYPE_INTRUSIVE_ONLY_SERIALIZE </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_define_type_non_intrusive/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_define_type_with_names/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_TYPE_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_namespace/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_NAMESPACE </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_namespace_begin/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_NAMESPACE_BEGIN, NLOHMANN_JSON_NAMESPACE_END </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_namespace_no_version/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_NAMESPACE_NO_VERSION </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_serialize_enum/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_SERIALIZE_ENUM </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_serialize_enum_strict/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_SERIALIZE_ENUM_STRICT </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_version_major/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_VERSION_MAJOR, NLOHMANN_JSON_VERSION_MINOR, NLOHMANN_JSON_VERSION_PATCH </span> </a> </li> </ul> </nav> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_5> <div class="md-nav__link md-nav__container"> <a href=../../../community/ class="md-nav__link "> <span class=md-ellipsis> Community </span> </a> <label class="md-nav__link " for=__nav_5 id=__nav_5_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_5_label aria-expanded=false> <label class=md-nav__title for=__nav_5> <span class="md-nav__icon md-icon"></span> Community </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../community/code_of_conduct/ class=md-nav__link> <span class=md-ellipsis> Code of Conduct </span> </a> </li> <li class=md-nav__item> <a href=../../../community/contribution_guidelines/ class=md-nav__link> <span class=md-ellipsis> Contribution Guidelines </span> </a> </li> <li class=md-nav__item> <a href=../../../community/quality_assurance/ class=md-nav__link> <span class=md-ellipsis> Quality assurance </span> </a> </li> <li class=md-nav__item> <a href=../../../community/governance/ class=md-nav__link> <span class=md-ellipsis> Governance </span> </a> </li> <li class=md-nav__item> <a href=../../../community/security_policy/ class=md-nav__link> <span class=md-ellipsis> Security Policy </span> </a> </li> </ul> </nav> </li> </ul> </nav> </div> </div> </div> <div class="md-sidebar md-sidebar--secondary" data-md-component=sidebar data-md-type=toc> <div class=md-sidebar__scrollwrap> <div class=md-sidebar__inner> <nav class="md-nav md-nav--secondary" aria-label="Table of contents"> <label class=md-nav__title for=__toc> <span class="md-nav__icon md-icon"></span> Table of contents </label> <ul class=md-nav__list data-md-component=toc data-md-scrollfix> <li class=md-nav__item> <a href=#return-value class=md-nav__link> <span class=md-ellipsis> Return value </span> </a> </li> <li class=md-nav__item> <a href=#exception-safety class=md-nav__link> <span class=md-ellipsis> Exception safety </span> </a> </li> <li class=md-nav__item> <a href=#complexity class=md-nav__link> <span class=md-ellipsis> Complexity </span> </a> </li> <li class=md-nav__item> <a href=#notes class=md-nav__link> <span class=md-ellipsis> Notes </span> </a> </li> <li class=md-nav__item> <a href=#examples class=md-nav__link> <span class=md-ellipsis> Examples </span> </a> </li> <li class=md-nav__item> <a href=#see-also class=md-nav__link> <span class=md-ellipsis> See also </span> </a> </li> <li class=md-nav__item> <a href=#version-history class=md-nav__link> <span class=md-ellipsis> Version history </span> </a> </li> </ul> </nav> </div> </div> </div> <div class=md-content data-md-component=content> <article class="md-content__inner md-typeset"> <a href="https://github.com/nlohmann/json/edit/develop/docs/mkdocs/docs/api/basic_json/items.md" title="Edit this page" class="md-content__button md-icon" rel="edit"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M10 20H6V4h7v5h5v3.1l2-2V8l-6-6H6c-1.1 0-2 .9-2 2v16c0 1.1.9 2 2 2h4zm10.2-7c.1 0 .3.1.4.2l1.3 1.3c.2.2.2.6 0 .8l-1 1-2.1-2.1 1-1c.1-.1.2-.2.4-.2m0 3.9L14.1 23H12v-2.1l6.1-6.1z"/></svg> </a> <a href="https://github.com/nlohmann/json/raw/develop/docs/mkdocs/docs/api/basic_json/items.md" title="View source of this page" class="md-content__button md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M17 18c.56 0 1 .44 1 1s-.44 1-1 1-1-.44-1-1 .44-1 1-1m0-3c-2.73 0-5.06 1.66-6 4 .94 2.34 3.27 4 6 4s5.06-1.66 6-4c-.94-2.34-3.27-4-6-4m0 6.5a2.5 2.5 0 0 1-2.5-2.5 2.5 2.5 0 0 1 2.5-2.5 2.5 2.5 0 0 1 2.5 2.5 2.5 2.5 0 0 1-2.5 2.5M9.27 20H6V4h7v5h5v4.07c.7.08 1.36.25 2 .49V8l-6-6H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h4.5a8.2 8.2 0 0 1-1.23-2"/></svg> </a> <h1 id=nlohmannbasic_jsonitems><small>nlohmann::basic_json::</small>items<a class=headerlink href=#nlohmannbasic_jsonitems title="Permanent link">&para;</a></h1> <div class=highlight><pre><span></span><code><span class=n>iteration_proxy</span><span class=o>&lt;</span><span class=n>iterator</span><span class=o>&gt;</span><span class=w> </span><span class=n>items</span><span class=p>()</span><span class=w> </span><span class=k>noexcept</span><span class=p>;</span>
 <span class=n>iteration_proxy</span><span class=o>&lt;</span><span class=n>const_iterator</span><span class=o>&gt;</span><span class=w> </span><span class=n>items</span><span class=p>()</span><span class=w> </span><span class=k>const</span><span class=w> </span><span class=k>noexcept</span><span class=p>;</span>
 </code></pre></div> <p>This function allows accessing <code>iterator::key()</code> and <code>iterator::value()</code> during range-based for loops. In these loops, a reference to the <abbr title="JavaScript Object Notation">JSON</abbr> values is returned, so there is no access to the underlying iterator.</p> <p>For loop without <code>items()</code> function:</p> <div class=highlight><pre><span></span><code><span class=k>for</span><span class=w> </span><span class=p>(</span><span class=k>auto</span><span class=w> </span><span class=n>it</span><span class=w> </span><span class=o>=</span><span class=w> </span><span class=n>j_object</span><span class=p>.</span><span class=n>begin</span><span class=p>();</span><span class=w> </span><span class=n>it</span><span class=w> </span><span class=o>!=</span><span class=w> </span><span class=n>j_object</span><span class=p>.</span><span class=n>end</span><span class=p>();</span><span class=w> </span><span class=o>++</span><span class=n>it</span><span class=p>)</span>
 <span class=p>{</span>
@@ -47,4 +47,4 @@
 <span class=err>key</span><span class=p>:</span><span class=w> </span><span class=mi>2</span><span class=p>,</span><span class=w> </span><span class=err>value</span><span class=p>:</span><span class=w> </span><span class=mi>4</span>
 <span class=err>key</span><span class=p>:</span><span class=w> </span><span class=mi>3</span><span class=p>,</span><span class=w> </span><span class=err>value</span><span class=p>:</span><span class=w> </span><span class=mi>8</span>
 <span class=err>key</span><span class=p>:</span><span class=w> </span><span class=mi>4</span><span class=p>,</span><span class=w> </span><span class=err>value</span><span class=p>:</span><span class=w> </span><span class=mi>16</span>
-</code></pre></div> </details> <h2 id=version-history>Version history<a class=headerlink href=#version-history title="Permanent link">&para;</a></h2> <ul> <li>Added <code>iterator_wrapper</code> in version 3.0.0.</li> <li>Added <code>items</code> and deprecated <code>iterator_wrapper</code> in version 3.1.0.</li> <li>Added structured binding support in version 3.5.0.</li> </ul> <div class="admonition warning"> <p class=admonition-title>Deprecation</p> <p>This function replaces the static function <code>iterator_wrapper</code> which was introduced in version 1.0.0, but has been deprecated in version 3.1.0. Function <code>iterator_wrapper</code> will be removed in version 4.0.0. Please replace all occurrences of <code class=highlight><span class=n>iterator_wrapper</span><span class=p>(</span><span class=n>j</span><span class=p>)</span></code> with <code class=highlight><span class=n>j</span><span class=p>.</span><span class=n>items</span><span class=p>()</span></code>.</p> <p>You should be warned by your compiler with a <code>-Wdeprecated-declarations</code> warning if you are using a deprecated function.</p> </div> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 23, 2026 11:16:18 UTC">June 23, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
+</code></pre></div> </details> <h2 id=see-also>See also<a class=headerlink href=#see-also title="Permanent link">&para;</a></h2> <ul> <li><a href=../begin/ >begin</a> returns an iterator to the first element</li> <li><a href=../end/ >end</a> returns an iterator to one past the last element</li> </ul> <h2 id=version-history>Version history<a class=headerlink href=#version-history title="Permanent link">&para;</a></h2> <ul> <li>Added <code>iterator_wrapper</code> in version 3.0.0.</li> <li>Added <code>items</code> and deprecated <code>iterator_wrapper</code> in version 3.1.0.</li> <li>Added structured binding support in version 3.5.0.</li> </ul> <div class="admonition warning"> <p class=admonition-title>Deprecation</p> <p>This function replaces the static function <code>iterator_wrapper</code> which was introduced in version 1.0.0, but has been deprecated in version 3.1.0. Function <code>iterator_wrapper</code> will be removed in version 4.0.0. Please replace all occurrences of <code class=highlight><span class=n>iterator_wrapper</span><span class=p>(</span><span class=n>j</span><span class=p>)</span></code> with <code class=highlight><span class=n>j</span><span class=p>.</span><span class=n>items</span><span class=p>()</span></code>.</p> <p>You should be warned by your compiler with a <code>-Wdeprecated-declarations</code> warning if you are using a deprecated function.</p> </div> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 29, 2026 20:15:18 UTC">June 29, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
diff --git a/api/basic_json/json_base_class_t/index.html b/api/basic_json/json_base_class_t/index.html
index 1a2bf11..05d5b79 100644
--- a/api/basic_json/json_base_class_t/index.html
+++ b/api/basic_json/json_base_class_t/index.html
@@ -91,4 +91,4 @@
 <span class=err>/</span><span class=kc>null</span><span class=w> </span><span class=mi>-</span><span class=w> </span><span class=err>me</span><span class=kc>ta</span><span class=err>da</span><span class=kc>ta</span><span class=w> </span><span class=err>=</span><span class=w> </span><span class=mi>42</span><span class=w> </span><span class=mi>-</span><span class=err>&gt;</span><span class=w> </span><span class=kc>null</span>
 <span class=err>/objec</span><span class=kc>t</span><span class=w> </span><span class=mi>-</span><span class=w> </span><span class=err>me</span><span class=kc>ta</span><span class=err>da</span><span class=kc>ta</span><span class=w> </span><span class=err>=</span><span class=w> </span><span class=mi>21</span><span class=w> </span><span class=mi>-</span><span class=err>&gt;</span><span class=w> </span><span class=p>{</span><span class=nt>&quot;uint&quot;</span><span class=p>:</span><span class=mi>1</span><span class=p>}</span>
 <span class=err>/objec</span><span class=kc>t</span><span class=err>/ui</span><span class=kc>nt</span><span class=w> </span><span class=mi>-</span><span class=w> </span><span class=err>me</span><span class=kc>ta</span><span class=err>da</span><span class=kc>ta</span><span class=w> </span><span class=err>=</span><span class=w> </span><span class=mi>42</span><span class=w> </span><span class=mi>-</span><span class=err>&gt;</span><span class=w> </span><span class=mi>1</span>
-</code></pre></div> </details> <h2 id=version-history>Version history<a class=headerlink href=#version-history title="Permanent link">&para;</a></h2> <ul> <li>Added in version 3.12.0.</li> </ul> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 23, 2026 11:16:18 UTC">June 23, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
+</code></pre></div> </details> <h2 id=version-history>Version history<a class=headerlink href=#version-history title="Permanent link">&para;</a></h2> <ul> <li>Added in version 3.12.0.</li> </ul> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 29, 2026 20:15:18 UTC">June 29, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
diff --git a/api/basic_json/json_serializer/index.html b/api/basic_json/json_serializer/index.html
index ebe65a7..a940613 100644
--- a/api/basic_json/json_serializer/index.html
+++ b/api/basic_json/json_serializer/index.html
@@ -54,4 +54,4 @@
 <span class=w>    </span><span class=n>std</span><span class=o>::</span><span class=n>cout</span><span class=w> </span><span class=o>&lt;&lt;</span><span class=w> </span><span class=n>p</span><span class=p>.</span><span class=n>name</span><span class=w> </span><span class=o>&lt;&lt;</span><span class=w> </span><span class=s>&quot; (&quot;</span><span class=w> </span><span class=o>&lt;&lt;</span><span class=w> </span><span class=n>p</span><span class=p>.</span><span class=n>age</span><span class=w> </span><span class=o>&lt;&lt;</span><span class=w> </span><span class=s>&quot;) lives in &quot;</span><span class=w> </span><span class=o>&lt;&lt;</span><span class=w> </span><span class=n>p</span><span class=p>.</span><span class=n>address</span><span class=w> </span><span class=o>&lt;&lt;</span><span class=w> </span><span class=n>std</span><span class=o>::</span><span class=n>endl</span><span class=p>;</span>
 <span class=p>}</span>
 </code></pre></div> <p>Output:</p> <div class=highlight><pre><span></span><code><span class=err>Ned</span><span class=w> </span><span class=err>Fla</span><span class=kc>n</span><span class=err>ders</span><span class=w> </span><span class=err>(</span><span class=mi>60</span><span class=err>)</span><span class=w> </span><span class=err>lives</span><span class=w> </span><span class=err>i</span><span class=kc>n</span><span class=w> </span><span class=mi>744</span><span class=w> </span><span class=err>Evergree</span><span class=kc>n</span><span class=w> </span><span class=err>Terrace</span>
-</code></pre></div> </details> <h2 id=version-history>Version history<a class=headerlink href=#version-history title="Permanent link">&para;</a></h2> <ul> <li>Since version 2.0.0.</li> </ul> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 23, 2026 11:16:18 UTC">June 23, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
+</code></pre></div> </details> <h2 id=version-history>Version history<a class=headerlink href=#version-history title="Permanent link">&para;</a></h2> <ul> <li>Since version 2.0.0.</li> </ul> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 29, 2026 20:15:18 UTC">June 29, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
diff --git a/api/basic_json/max_size/index.html b/api/basic_json/max_size/index.html
index 060715f..a0daab7 100644
--- a/api/basic_json/max_size/index.html
+++ b/api/basic_json/max_size/index.html
@@ -31,4 +31,4 @@
 <span class=mi>115292150460684697</span>
 <span class=mi>576460752303423487</span>
 <span class=mi>1</span>
-</code></pre></div> <p>Note the output is platform-dependent.</p> </details> <h2 id=version-history>Version history<a class=headerlink href=#version-history title="Permanent link">&para;</a></h2> <ul> <li>Added in version 1.0.0.</li> <li>Extended to return <code>1</code> for binary types in version 3.8.0.</li> </ul> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 23, 2026 11:16:18 UTC">June 23, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
+</code></pre></div> <p>Note the output is platform-dependent.</p> </details> <h2 id=version-history>Version history<a class=headerlink href=#version-history title="Permanent link">&para;</a></h2> <ul> <li>Added in version 1.0.0.</li> <li>Extended to return <code>1</code> for binary types in version 3.8.0.</li> </ul> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 29, 2026 20:15:18 UTC">June 29, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
diff --git a/api/basic_json/merge_patch/index.html b/api/basic_json/merge_patch/index.html
index f67d9a7..9786366 100644
--- a/api/basic_json/merge_patch/index.html
+++ b/api/basic_json/merge_patch/index.html
@@ -64,4 +64,4 @@
 <span class=w>    </span><span class=p>],</span>
 <span class=w>    </span><span class=nt>&quot;title&quot;</span><span class=p>:</span><span class=w> </span><span class=s2>&quot;Hello!&quot;</span>
 <span class=p>}</span>
-</code></pre></div> </details> <h2 id=see-also>See also<a class=headerlink href=#see-also title="Permanent link">&para;</a></h2> <ul> <li><a href="https://tools.ietf.org/html/rfc7396"><abbr title="Request for Comments">RFC</abbr> 7396 (<abbr title="JavaScript Object Notation">JSON</abbr> Merge Patch)</a></li> <li><a href=../patch/ >patch</a> apply a <abbr title="JavaScript Object Notation">JSON</abbr> patch</li> </ul> <h2 id=version-history>Version history<a class=headerlink href=#version-history title="Permanent link">&para;</a></h2> <ul> <li>Added in version 3.0.0.</li> </ul> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 23, 2026 11:16:18 UTC">June 23, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
+</code></pre></div> </details> <h2 id=see-also>See also<a class=headerlink href=#see-also title="Permanent link">&para;</a></h2> <ul> <li><a href="https://tools.ietf.org/html/rfc7396"><abbr title="Request for Comments">RFC</abbr> 7396 (<abbr title="JavaScript Object Notation">JSON</abbr> Merge Patch)</a></li> <li><a href=../patch/ >patch</a> apply a <abbr title="JavaScript Object Notation">JSON</abbr> patch</li> </ul> <h2 id=version-history>Version history<a class=headerlink href=#version-history title="Permanent link">&para;</a></h2> <ul> <li>Added in version 3.0.0.</li> </ul> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 29, 2026 20:15:18 UTC">June 29, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
diff --git a/api/basic_json/meta/index.html b/api/basic_json/meta/index.html
index 3061cf2..b0dca0c 100644
--- a/api/basic_json/meta/index.html
+++ b/api/basic_json/meta/index.html
@@ -1,5 +1,5 @@
 <!doctype html><html lang=en class=no-js> <head><meta charset=utf-8><meta name=viewport content="width=device-width,initial-scale=1"><meta name=author content="Niels Lohmann"><link href="https://json.nlohmann.me/api/basic_json/meta/" rel="canonical"><link href=../max_size/ rel=prev><link href=../merge_patch/ rel=next><link rel=icon href=../../../assets/images/favicon.png><meta name=generator content="mkdocs-1.6.1, mkdocs-material-9.7.6"><title>meta - JSON for Modern C++</title><link rel=stylesheet href=../../../assets/stylesheets/main.484c7ddc.min.css><link rel=stylesheet href=../../../assets/stylesheets/palette.ab4e12ef.min.css><link rel="stylesheet" href="../../../assets/external/fonts.googleapis.com/css.61a430c9.css"><style>:root{--md-text-font:"Roboto";--md-code-font:"JetBrains Mono"}</style><link rel=stylesheet href=../../../css/custom.css><script>__md_scope=new URL("../../..",location),__md_hash=e=>[...e].reduce(((e,_)=>(e<<5)-e+_.charCodeAt(0)),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script></head> <body dir=ltr data-md-color-scheme=default data-md-color-primary=indigo data-md-color-accent=indigo> <input class=md-toggle data-md-toggle=drawer type=checkbox id=__drawer autocomplete=off> <input class=md-toggle data-md-toggle=search type=checkbox id=__search autocomplete=off> <label class=md-overlay for=__drawer></label> <div data-md-component=skip> <a href=#nlohmannbasic_jsonmeta class=md-skip> Skip to content </a> </div> <div data-md-component=announce> </div> <header class=md-header data-md-component=header> <nav class="md-header__inner md-grid" aria-label=Header> <a href=../../.. title="JSON for Modern C++" class="md-header__button md-logo" aria-label="JSON for Modern C++" data-md-component=logo> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54"/></svg> </a> <label class="md-header__button md-icon" for=__drawer> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M3 6h18v2H3zm0 5h18v2H3zm0 5h18v2H3z"/></svg> </label> <div class=md-header__title data-md-component=header-title> <div class=md-header__ellipsis> <div class=md-header__topic> <span class=md-ellipsis> JSON for Modern C++ </span> </div> <div class=md-header__topic data-md-component=header-topic> <span class=md-ellipsis> meta </span> </div> </div> </div> <form class=md-header__option data-md-component=palette> <input class=md-option data-md-color-media="(prefers-color-scheme: light)" data-md-color-scheme=default data-md-color-primary=indigo data-md-color-accent=indigo aria-label="Switch to dark mode" type=radio name=__palette id=__palette_0> <label class="md-header__button md-icon" title="Switch to dark mode" for=__palette_1 hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a4 4 0 0 0-4 4 4 4 0 0 0 4 4 4 4 0 0 0 4-4 4 4 0 0 0-4-4m0 10a6 6 0 0 1-6-6 6 6 0 0 1 6-6 6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12z"/></svg> </label> <input class=md-option data-md-color-media="(prefers-color-scheme: dark)" data-md-color-scheme=slate data-md-color-primary=indigo data-md-color-accent=indigo aria-label="Switch to light mode" type=radio name=__palette id=__palette_1> <label class="md-header__button md-icon" title="Switch to light mode" for=__palette_0 hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 18c-.89 0-1.74-.2-2.5-.55C11.56 16.5 13 14.42 13 12s-1.44-4.5-3.5-5.45C10.26 6.2 11.11 6 12 6a6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12z"/></svg> </label> </form> <script>var palette=__md_get("__palette");if(palette&&palette.color){if("(prefers-color-scheme)"===palette.color.media){var media=matchMedia("(prefers-color-scheme: light)"),input=document.querySelector(media.matches?"[data-md-color-media='(prefers-color-scheme: light)']":"[data-md-color-media='(prefers-color-scheme: dark)']");palette.color.media=input.getAttribute("data-md-color-media"),palette.color.scheme=input.getAttribute("data-md-color-scheme"),palette.color.primary=input.getAttribute("data-md-color-primary"),palette.color.accent=input.getAttribute("data-md-color-accent")}for(var[key,value]of Object.entries(palette.color))document.body.setAttribute("data-md-color-"+key,value)}</script> <label class="md-header__button md-icon" for=__search> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg> </label> <div class=md-search data-md-component=search role=dialog> <label class=md-search__overlay for=__search></label> <div class=md-search__inner role=search> <form class=md-search__form name=search> <input type=text class=md-search__input name=query aria-label=Search placeholder=Search autocapitalize=off autocorrect=off autocomplete=off spellcheck=false data-md-component=search-query required> <label class="md-search__icon md-icon" for=__search> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11z"/></svg> </label> <nav class=md-search__options aria-label=Search> <button type=reset class="md-search__icon md-icon" title=Clear aria-label=Clear tabindex=-1> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z"/></svg> </button> </nav> </form> <div class=md-search__output> <div class=md-search__scrollwrap tabindex=0 data-md-scrollfix> <div class=md-search-result data-md-component=search-result> <div class=md-search-result__meta> Initializing search </div> <ol class=md-search-result__list role=presentation></ol> </div> </div> </div> </div> </div> <div class=md-header__source> <a href="https://github.com/nlohmann/json" title="Go to repository" class="md-source" data-md-component="source"> <div class="md-source__icon md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </div> <div class=md-source__repository> nlohmann/json </div> </a> </div> </nav> </header> <div class=md-container data-md-component=container> <nav class=md-tabs aria-label=Tabs data-md-component=tabs> <div class=md-grid> <ul class=md-tabs__list> <li class=md-tabs__item> <a href=../../.. class=md-tabs__link> Home </a> </li> <li class=md-tabs__item> <a href=../../../features/arbitrary_types/ class=md-tabs__link> Features </a> </li> <li class=md-tabs__item> <a href=../../../integration/ class=md-tabs__link> Integration </a> </li> <li class="md-tabs__item md-tabs__item--active"> <a href=../ class=md-tabs__link> API Documentation </a> </li> <li class=md-tabs__item> <a href=../../../community/ class=md-tabs__link> Community </a> </li> </ul> </div> </nav> <main class=md-main data-md-component=main> <div class="md-main__inner md-grid"> <div class="md-sidebar md-sidebar--primary" data-md-component=sidebar data-md-type=navigation> <div class=md-sidebar__scrollwrap> <div class=md-sidebar__inner> <nav class="md-nav md-nav--primary md-nav--lifted" aria-label=Navigation data-md-level=0> <label class=md-nav__title for=__drawer> <a href=../../.. title="JSON for Modern C++" class="md-nav__button md-logo" aria-label="JSON for Modern C++" data-md-component=logo> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54"/></svg> </a> JSON for Modern C++ </label> <div class=md-nav__source> <a href="https://github.com/nlohmann/json" title="Go to repository" class="md-source" data-md-component="source"> <div class="md-source__icon md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </div> <div class=md-source__repository> nlohmann/json </div> </a> </div> <ul class=md-nav__list data-md-scrollfix> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_1> <div class="md-nav__link md-nav__container"> <a href=../../.. class="md-nav__link "> <span class=md-ellipsis> Home </span> </a> <label class="md-nav__link " for=__nav_1 id=__nav_1_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_1_label aria-expanded=false> <label class=md-nav__title for=__nav_1> <span class="md-nav__icon md-icon"></span> Home </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../home/license/ class=md-nav__link> <span class=md-ellipsis> License </span> </a> </li> <li class=md-nav__item> <a href=../../../home/faq/ class=md-nav__link> <span class=md-ellipsis> FAQ </span> </a> </li> <li class=md-nav__item> <a href=../../../home/exceptions/ class=md-nav__link> <span class=md-ellipsis> Exceptions </span> </a> </li> <li class=md-nav__item> <a href=../../../home/releases/ class=md-nav__link> <span class=md-ellipsis> Releases </span> </a> </li> <li class=md-nav__item> <a href=../../../home/design_goals/ class=md-nav__link> <span class=md-ellipsis> Design goals </span> </a> </li> <li class=md-nav__item> <a href=../../../home/architecture/ class=md-nav__link> <span class=md-ellipsis> Architecture </span> </a> </li> <li class=md-nav__item> <a href=../../../home/customers/ class=md-nav__link> <span class=md-ellipsis> Customers </span> </a> </li> <li class=md-nav__item> <a href=../../../home/sponsors/ class=md-nav__link> <span class=md-ellipsis> Sponsors </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2> <label class=md-nav__link for=__nav_2 id=__nav_2_label tabindex=0> <span class=md-ellipsis> Features </span> <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_2_label aria-expanded=false> <label class=md-nav__title for=__nav_2> <span class="md-nav__icon md-icon"></span> Features </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/arbitrary_types/ class=md-nav__link> <span class=md-ellipsis> Arbitrary Type Conversions </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_2> <div class="md-nav__link md-nav__container"> <a href=../../../features/binary_formats/ class="md-nav__link "> <span class=md-ellipsis> Binary Formats </span> </a> <label class="md-nav__link " for=__nav_2_2 id=__nav_2_2_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_2_label aria-expanded=false> <label class=md-nav__title for=__nav_2_2> <span class="md-nav__icon md-icon"></span> Binary Formats </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/binary_formats/bjdata/ class=md-nav__link> <span class=md-ellipsis> BJData </span> </a> </li> <li class=md-nav__item> <a href=../../../features/binary_formats/bson/ class=md-nav__link> <span class=md-ellipsis> BSON </span> </a> </li> <li class=md-nav__item> <a href=../../../features/binary_formats/cbor/ class=md-nav__link> <span class=md-ellipsis> CBOR </span> </a> </li> <li class=md-nav__item> <a href=../../../features/binary_formats/messagepack/ class=md-nav__link> <span class=md-ellipsis> MessagePack </span> </a> </li> <li class=md-nav__item> <a href=../../../features/binary_formats/ubjson/ class=md-nav__link> <span class=md-ellipsis> UBJSON </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../../features/binary_values/ class=md-nav__link> <span class=md-ellipsis> Binary Values </span> </a> </li> <li class=md-nav__item> <a href=../../../features/comments/ class=md-nav__link> <span class=md-ellipsis> Comments </span> </a> </li> <li class=md-nav__item> <a href=../../../features/trailing_commas/ class=md-nav__link> <span class=md-ellipsis> Trailing Commas </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_6> <div class="md-nav__link md-nav__container"> <a href=../../../features/element_access/ class="md-nav__link "> <span class=md-ellipsis> Element Access </span> </a> <label class="md-nav__link " for=__nav_2_6 id=__nav_2_6_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_6_label aria-expanded=false> <label class=md-nav__title for=__nav_2_6> <span class="md-nav__icon md-icon"></span> Element Access </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/element_access/unchecked_access/ class=md-nav__link> <span class=md-ellipsis> Unchecked access: operator[] </span> </a> </li> <li class=md-nav__item> <a href=../../../features/element_access/checked_access/ class=md-nav__link> <span class=md-ellipsis> Checked access: at </span> </a> </li> <li class=md-nav__item> <a href=../../../features/element_access/default_value/ class=md-nav__link> <span class=md-ellipsis> Access with default value: value </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../../features/iterators/ class=md-nav__link> <span class=md-ellipsis> Iterators </span> </a> </li> <li class=md-nav__item> <a href=../../../features/json_pointer/ class=md-nav__link> <span class=md-ellipsis> JSON Pointer </span> </a> </li> <li class=md-nav__item> <a href=../../../features/json_patch/ class=md-nav__link> <span class=md-ellipsis> JSON Patch and Diff </span> </a> </li> <li class=md-nav__item> <a href=../../../features/merge_patch/ class=md-nav__link> <span class=md-ellipsis> JSON Merge Patch </span> </a> </li> <li class=md-nav__item> <a href=../../../features/modules/ class=md-nav__link> <span class=md-ellipsis> Modules </span> </a> </li> <li class=md-nav__item> <a href=../../../features/namespace/ class=md-nav__link> <span class=md-ellipsis> nlohmann Namespace </span> </a> </li> <li class=md-nav__item> <a href=../../../features/object_order/ class=md-nav__link> <span class=md-ellipsis> Object Order </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_14> <div class="md-nav__link md-nav__container"> <a href=../../../features/parsing/ class="md-nav__link "> <span class=md-ellipsis> Parsing </span> </a> <label class="md-nav__link " for=__nav_2_14 id=__nav_2_14_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_14_label aria-expanded=false> <label class=md-nav__title for=__nav_2_14> <span class="md-nav__icon md-icon"></span> Parsing </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/parsing/json_lines/ class=md-nav__link> <span class=md-ellipsis> JSON Lines </span> </a> </li> <li class=md-nav__item> <a href=../../../features/parsing/parse_exceptions/ class=md-nav__link> <span class=md-ellipsis> Parsing and Exceptions </span> </a> </li> <li class=md-nav__item> <a href=../../../features/parsing/parser_callbacks/ class=md-nav__link> <span class=md-ellipsis> Parser Callbacks </span> </a> </li> <li class=md-nav__item> <a href=../../../features/parsing/sax_interface/ class=md-nav__link> <span class=md-ellipsis> SAX Interface </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../../features/assertions/ class=md-nav__link> <span class=md-ellipsis> Runtime Assertions </span> </a> </li> <li class=md-nav__item> <a href=../../../features/enum_conversion/ class=md-nav__link> <span class=md-ellipsis> Specializing enum conversion </span> </a> </li> <li class=md-nav__item> <a href=../../../features/macros/ class=md-nav__link> <span class=md-ellipsis> Supported Macros </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_18> <div class="md-nav__link md-nav__container"> <a href=../../../features/types/ class="md-nav__link "> <span class=md-ellipsis> Types </span> </a> <label class="md-nav__link " for=__nav_2_18 id=__nav_2_18_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_18_label aria-expanded=false> <label class=md-nav__title for=__nav_2_18> <span class="md-nav__icon md-icon"></span> Types </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/types/number_handling/ class=md-nav__link> <span class=md-ellipsis> Number Handling </span> </a> </li> </ul> </nav> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_3> <div class="md-nav__link md-nav__container"> <a href=../../../integration/ class="md-nav__link "> <span class=md-ellipsis> Integration </span> </a> <label class="md-nav__link " for=__nav_3 id=__nav_3_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_3_label aria-expanded=false> <label class=md-nav__title for=__nav_3> <span class="md-nav__icon md-icon"></span> Integration </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../integration/migration_guide/ class=md-nav__link> <span class=md-ellipsis> Migration Guide </span> </a> </li> <li class=md-nav__item> <a href=../../../integration/cmake/ class=md-nav__link> <span class=md-ellipsis> CMake </span> </a> </li> <li class=md-nav__item> <a href=../../../integration/package_managers/ class=md-nav__link> <span class=md-ellipsis> Package Managers </span> </a> </li> <li class=md-nav__item> <a href=../../../integration/pkg-config/ class=md-nav__link> <span class=md-ellipsis> Pkg-config </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--active md-nav__item--section md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4 checked> <label class=md-nav__link for=__nav_4 id=__nav_4_label tabindex> <span class=md-ellipsis> API Documentation </span> <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_4_label aria-expanded=true> <label class=md-nav__title for=__nav_4> <span class="md-nav__icon md-icon"></span> API Documentation </label> <ul class=md-nav__list data-md-scrollfix> <li class="md-nav__item md-nav__item--active md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_1 checked> <div class="md-nav__link md-nav__container"> <a href=../ class="md-nav__link "> <span class=md-ellipsis> basic_json </span> </a> <label class="md-nav__link " for=__nav_4_1 id=__nav_4_1_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_1_label aria-expanded=true> <label class=md-nav__title for=__nav_4_1> <span class="md-nav__icon md-icon"></span> basic_json </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../basic_json/ class=md-nav__link> <span class=md-ellipsis> (Constructor) </span> </a> </li> <li class=md-nav__item> <a href=../~basic_json/ class=md-nav__link> <span class=md-ellipsis> (Destructor) </span> </a> </li> <li class=md-nav__item> <a href=../accept/ class=md-nav__link> <span class=md-ellipsis> accept </span> </a> </li> <li class=md-nav__item> <a href=../array/ class=md-nav__link> <span class=md-ellipsis> array </span> </a> </li> <li class=md-nav__item> <a href=../array_t/ class=md-nav__link> <span class=md-ellipsis> array_t </span> </a> </li> <li class=md-nav__item> <a href=../at/ class=md-nav__link> <span class=md-ellipsis> at </span> </a> </li> <li class=md-nav__item> <a href=../back/ class=md-nav__link> <span class=md-ellipsis> back </span> </a> </li> <li class=md-nav__item> <a href=../begin/ class=md-nav__link> <span class=md-ellipsis> begin </span> </a> </li> <li class=md-nav__item> <a href=../binary/ class=md-nav__link> <span class=md-ellipsis> binary </span> </a> </li> <li class=md-nav__item> <a href=../binary_t/ class=md-nav__link> <span class=md-ellipsis> binary_t </span> </a> </li> <li class=md-nav__item> <a href=../boolean_t/ class=md-nav__link> <span class=md-ellipsis> boolean_t </span> </a> </li> <li class=md-nav__item> <a href=../cbegin/ class=md-nav__link> <span class=md-ellipsis> cbegin </span> </a> </li> <li class=md-nav__item> <a href=../cbor_tag_handler_t/ class=md-nav__link> <span class=md-ellipsis> cbor_tag_handler_t </span> </a> </li> <li class=md-nav__item> <a href=../cend/ class=md-nav__link> <span class=md-ellipsis> cend </span> </a> </li> <li class=md-nav__item> <a href=../clear/ class=md-nav__link> <span class=md-ellipsis> clear </span> </a> </li> <li class=md-nav__item> <a href=../contains/ class=md-nav__link> <span class=md-ellipsis> contains </span> </a> </li> <li class=md-nav__item> <a href=../count/ class=md-nav__link> <span class=md-ellipsis> count </span> </a> </li> <li class=md-nav__item> <a href=../crbegin/ class=md-nav__link> <span class=md-ellipsis> crbegin </span> </a> </li> <li class=md-nav__item> <a href=../crend/ class=md-nav__link> <span class=md-ellipsis> crend </span> </a> </li> <li class=md-nav__item> <a href=../default_object_comparator_t/ class=md-nav__link> <span class=md-ellipsis> default_object_comparator_t </span> </a> </li> <li class=md-nav__item> <a href=../diff/ class=md-nav__link> <span class=md-ellipsis> diff </span> </a> </li> <li class=md-nav__item> <a href=../dump/ class=md-nav__link> <span class=md-ellipsis> dump </span> </a> </li> <li class=md-nav__item> <a href=../emplace/ class=md-nav__link> <span class=md-ellipsis> emplace </span> </a> </li> <li class=md-nav__item> <a href=../emplace_back/ class=md-nav__link> <span class=md-ellipsis> emplace_back </span> </a> </li> <li class=md-nav__item> <a href=../empty/ class=md-nav__link> <span class=md-ellipsis> empty </span> </a> </li> <li class=md-nav__item> <a href=../end/ class=md-nav__link> <span class=md-ellipsis> end </span> </a> </li> <li class=md-nav__item> <a href=../end_pos/ class=md-nav__link> <span class=md-ellipsis> end_pos </span> </a> </li> <li class=md-nav__item> <a href=../erase/ class=md-nav__link> <span class=md-ellipsis> erase </span> </a> </li> <li class=md-nav__item> <a href=../error_handler_t/ class=md-nav__link> <span class=md-ellipsis> error_handler_t </span> </a> </li> <li class=md-nav__item> <a href=../exception/ class=md-nav__link> <span class=md-ellipsis> exception </span> </a> </li> <li class=md-nav__item> <a href=../find/ class=md-nav__link> <span class=md-ellipsis> find </span> </a> </li> <li class=md-nav__item> <a href=../flatten/ class=md-nav__link> <span class=md-ellipsis> flatten </span> </a> </li> <li class=md-nav__item> <a href=../from_bjdata/ class=md-nav__link> <span class=md-ellipsis> from_bjdata </span> </a> </li> <li class=md-nav__item> <a href=../from_bson/ class=md-nav__link> <span class=md-ellipsis> from_bson </span> </a> </li> <li class=md-nav__item> <a href=../from_cbor/ class=md-nav__link> <span class=md-ellipsis> from_cbor </span> </a> </li> <li class=md-nav__item> <a href=../from_msgpack/ class=md-nav__link> <span class=md-ellipsis> from_msgpack </span> </a> </li> <li class=md-nav__item> <a href=../from_ubjson/ class=md-nav__link> <span class=md-ellipsis> from_ubjson </span> </a> </li> <li class=md-nav__item> <a href=../front/ class=md-nav__link> <span class=md-ellipsis> front </span> </a> </li> <li class=md-nav__item> <a href=../get/ class=md-nav__link> <span class=md-ellipsis> get </span> </a> </li> <li class=md-nav__item> <a href=../get_allocator/ class=md-nav__link> <span class=md-ellipsis> get_allocator </span> </a> </li> <li class=md-nav__item> <a href=../get_binary/ class=md-nav__link> <span class=md-ellipsis> get_binary </span> </a> </li> <li class=md-nav__item> <a href=../get_ptr/ class=md-nav__link> <span class=md-ellipsis> get_ptr </span> </a> </li> <li class=md-nav__item> <a href=../get_ref/ class=md-nav__link> <span class=md-ellipsis> get_ref </span> </a> </li> <li class=md-nav__item> <a href=../get_to/ class=md-nav__link> <span class=md-ellipsis> get_to </span> </a> </li> <li class=md-nav__item> <a href=../std_hash/ class=md-nav__link> <span class=md-ellipsis> std::hash&lt;basic_json&gt; </span> </a> </li> <li class=md-nav__item> <a href=../input_format_t/ class=md-nav__link> <span class=md-ellipsis> input_format_t </span> </a> </li> <li class=md-nav__item> <a href=../insert/ class=md-nav__link> <span class=md-ellipsis> insert </span> </a> </li> <li class=md-nav__item> <a href=../invalid_iterator/ class=md-nav__link> <span class=md-ellipsis> invalid_iterator </span> </a> </li> <li class=md-nav__item> <a href=../is_array/ class=md-nav__link> <span class=md-ellipsis> is_array </span> </a> </li> <li class=md-nav__item> <a href=../is_binary/ class=md-nav__link> <span class=md-ellipsis> is_binary </span> </a> </li> <li class=md-nav__item> <a href=../is_boolean/ class=md-nav__link> <span class=md-ellipsis> is_boolean </span> </a> </li> <li class=md-nav__item> <a href=../is_discarded/ class=md-nav__link> <span class=md-ellipsis> is_discarded </span> </a> </li> <li class=md-nav__item> <a href=../is_null/ class=md-nav__link> <span class=md-ellipsis> is_null </span> </a> </li> <li class=md-nav__item> <a href=../is_number/ class=md-nav__link> <span class=md-ellipsis> is_number </span> </a> </li> <li class=md-nav__item> <a href=../is_number_float/ class=md-nav__link> <span class=md-ellipsis> is_number_float </span> </a> </li> <li class=md-nav__item> <a href=../is_number_integer/ class=md-nav__link> <span class=md-ellipsis> is_number_integer </span> </a> </li> <li class=md-nav__item> <a href=../is_number_unsigned/ class=md-nav__link> <span class=md-ellipsis> is_number_unsigned </span> </a> </li> <li class=md-nav__item> <a href=../is_object/ class=md-nav__link> <span class=md-ellipsis> is_object </span> </a> </li> <li class=md-nav__item> <a href=../is_primitive/ class=md-nav__link> <span class=md-ellipsis> is_primitive </span> </a> </li> <li class=md-nav__item> <a href=../is_string/ class=md-nav__link> <span class=md-ellipsis> is_string </span> </a> </li> <li class=md-nav__item> <a href=../is_structured/ class=md-nav__link> <span class=md-ellipsis> is_structured </span> </a> </li> <li class=md-nav__item> <a href=../items/ class=md-nav__link> <span class=md-ellipsis> items </span> </a> </li> <li class=md-nav__item> <a href=../json_base_class_t/ class=md-nav__link> <span class=md-ellipsis> json_base_class_t </span> </a> </li> <li class=md-nav__item> <a href=../json_serializer/ class=md-nav__link> <span class=md-ellipsis> json_serializer </span> </a> </li> <li class=md-nav__item> <a href=../max_size/ class=md-nav__link> <span class=md-ellipsis> max_size </span> </a> </li> <li class="md-nav__item md-nav__item--active"> <input class="md-nav__toggle md-toggle" type=checkbox id=__toc> <label class="md-nav__link md-nav__link--active" for=__toc> <span class=md-ellipsis> meta </span> <span class="md-nav__icon md-icon"></span> </label> <a href=./ class="md-nav__link md-nav__link--active"> <span class=md-ellipsis> meta </span> </a> <nav class="md-nav md-nav--secondary" aria-label="Table of contents"> <label class=md-nav__title for=__toc> <span class="md-nav__icon md-icon"></span> Table of contents </label> <ul class=md-nav__list data-md-component=toc data-md-scrollfix> <li class=md-nav__item> <a href=#return-value class=md-nav__link> <span class=md-ellipsis> Return value </span> </a> </li> <li class=md-nav__item> <a href=#exception-safety class=md-nav__link> <span class=md-ellipsis> Exception safety </span> </a> </li> <li class=md-nav__item> <a href=#complexity class=md-nav__link> <span class=md-ellipsis> Complexity </span> </a> </li> <li class=md-nav__item> <a href=#examples class=md-nav__link> <span class=md-ellipsis> Examples </span> </a> </li> <li class=md-nav__item> <a href=#see-also class=md-nav__link> <span class=md-ellipsis> See also </span> </a> </li> <li class=md-nav__item> <a href=#version-history class=md-nav__link> <span class=md-ellipsis> Version history </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../merge_patch/ class=md-nav__link> <span class=md-ellipsis> merge_patch </span> </a> </li> <li class=md-nav__item> <a href=../number_float_t/ class=md-nav__link> <span class=md-ellipsis> number_float_t </span> </a> </li> <li class=md-nav__item> <a href=../number_integer_t/ class=md-nav__link> <span class=md-ellipsis> number_integer_t </span> </a> </li> <li class=md-nav__item> <a href=../number_unsigned_t/ class=md-nav__link> <span class=md-ellipsis> number_unsigned_t </span> </a> </li> <li class=md-nav__item> <a href=../object/ class=md-nav__link> <span class=md-ellipsis> object </span> </a> </li> <li class=md-nav__item> <a href=../object_comparator_t/ class=md-nav__link> <span class=md-ellipsis> object_comparator_t </span> </a> </li> <li class=md-nav__item> <a href=../object_t/ class=md-nav__link> <span class=md-ellipsis> object_t </span> </a> </li> <li class=md-nav__item> <a href=../operator_ValueType/ class=md-nav__link> <span class=md-ellipsis> operator ValueType </span> </a> </li> <li class=md-nav__item> <a href=../operator_value_t/ class=md-nav__link> <span class=md-ellipsis> operator value_t </span> </a> </li> <li class=md-nav__item> <a href=../operator%5B%5D/ class=md-nav__link> <span class=md-ellipsis> operator[] </span> </a> </li> <li class=md-nav__item> <a href=../operator%3D/ class=md-nav__link> <span class=md-ellipsis> operator= </span> </a> </li> <li class=md-nav__item> <a href=../operator%2B%3D/ class=md-nav__link> <span class=md-ellipsis> operator+= </span> </a> </li> <li class=md-nav__item> <a href=../operator_eq/ class=md-nav__link> <span class=md-ellipsis> operator== </span> </a> </li> <li class=md-nav__item> <a href=../operator_ne/ class=md-nav__link> <span class=md-ellipsis> operator!= </span> </a> </li> <li class=md-nav__item> <a href=../operator_lt/ class=md-nav__link> <span class=md-ellipsis> operator< </span> </a> </li> <li class=md-nav__item> <a href=../operator_gt/ class=md-nav__link> <span class=md-ellipsis> operator> </span> </a> </li> <li class=md-nav__item> <a href=../operator_le/ class=md-nav__link> <span class=md-ellipsis> operator<= </span> </a> </li> <li class=md-nav__item> <a href=../operator_ge/ class=md-nav__link> <span class=md-ellipsis> operator>= </span> </a> </li> <li class=md-nav__item> <a href=../operator_spaceship/ class=md-nav__link> <span class=md-ellipsis> operator<=> </span> </a> </li> <li class=md-nav__item> <a href=../out_of_range/ class=md-nav__link> <span class=md-ellipsis> out_of_range </span> </a> </li> <li class=md-nav__item> <a href=../other_error/ class=md-nav__link> <span class=md-ellipsis> other_error </span> </a> </li> <li class=md-nav__item> <a href=../parse/ class=md-nav__link> <span class=md-ellipsis> parse </span> </a> </li> <li class=md-nav__item> <a href=../parse_error/ class=md-nav__link> <span class=md-ellipsis> parse_error </span> </a> </li> <li class=md-nav__item> <a href=../parse_event_t/ class=md-nav__link> <span class=md-ellipsis> parse_event_t </span> </a> </li> <li class=md-nav__item> <a href=../parser_callback_t/ class=md-nav__link> <span class=md-ellipsis> parser_callback_t </span> </a> </li> <li class=md-nav__item> <a href=../patch/ class=md-nav__link> <span class=md-ellipsis> patch </span> </a> </li> <li class=md-nav__item> <a href=../patch_inplace/ class=md-nav__link> <span class=md-ellipsis> patch_inplace </span> </a> </li> <li class=md-nav__item> <a href=../push_back/ class=md-nav__link> <span class=md-ellipsis> push_back </span> </a> </li> <li class=md-nav__item> <a href=../rbegin/ class=md-nav__link> <span class=md-ellipsis> rbegin </span> </a> </li> <li class=md-nav__item> <a href=../rend/ class=md-nav__link> <span class=md-ellipsis> rend </span> </a> </li> <li class=md-nav__item> <a href=../sax_parse/ class=md-nav__link> <span class=md-ellipsis> sax_parse </span> </a> </li> <li class=md-nav__item> <a href=../size/ class=md-nav__link> <span class=md-ellipsis> size </span> </a> </li> <li class=md-nav__item> <a href=../start_pos/ class=md-nav__link> <span class=md-ellipsis> start_pos </span> </a> </li> <li class=md-nav__item> <a href=../string_t/ class=md-nav__link> <span class=md-ellipsis> string_t </span> </a> </li> <li class=md-nav__item> <a href=../swap/ class=md-nav__link> <span class=md-ellipsis> swap </span> </a> </li> <li class=md-nav__item> <a href=../std_swap/ class=md-nav__link> <span class=md-ellipsis> std::swap&lt;basic_json&gt; </span> </a> </li> <li class=md-nav__item> <a href=../to_bjdata/ class=md-nav__link> <span class=md-ellipsis> to_bjdata </span> </a> </li> <li class=md-nav__item> <a href=../to_bson/ class=md-nav__link> <span class=md-ellipsis> to_bson </span> </a> </li> <li class=md-nav__item> <a href=../to_cbor/ class=md-nav__link> <span class=md-ellipsis> to_cbor </span> </a> </li> <li class=md-nav__item> <a href=../to_msgpack/ class=md-nav__link> <span class=md-ellipsis> to_msgpack </span> </a> </li> <li class=md-nav__item> <a href=../to_string/ class=md-nav__link> <span class=md-ellipsis> to_string </span> </a> </li> <li class=md-nav__item> <a href=../to_ubjson/ class=md-nav__link> <span class=md-ellipsis> to_ubjson </span> </a> </li> <li class=md-nav__item> <a href=../type/ class=md-nav__link> <span class=md-ellipsis> type </span> </a> </li> <li class=md-nav__item> <a href=../type_error/ class=md-nav__link> <span class=md-ellipsis> type_error </span> </a> </li> <li class=md-nav__item> <a href=../type_name/ class=md-nav__link> <span class=md-ellipsis> type_name </span> </a> </li> <li class=md-nav__item> <a href=../unflatten/ class=md-nav__link> <span class=md-ellipsis> unflatten </span> </a> </li> <li class=md-nav__item> <a href=../update/ class=md-nav__link> <span class=md-ellipsis> update </span> </a> </li> <li class=md-nav__item> <a href=../value/ class=md-nav__link> <span class=md-ellipsis> value </span> </a> </li> <li class=md-nav__item> <a href=../value_t/ class=md-nav__link> <span class=md-ellipsis> value_t </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_2> <div class="md-nav__link md-nav__container"> <a href=../../byte_container_with_subtype/ class="md-nav__link "> <span class=md-ellipsis> byte_container_with_subtype </span> </a> <label class="md-nav__link " for=__nav_4_2 id=__nav_4_2_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_2_label aria-expanded=false> <label class=md-nav__title for=__nav_4_2> <span class="md-nav__icon md-icon"></span> byte_container_with_subtype </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../byte_container_with_subtype/byte_container_with_subtype/ class=md-nav__link> <span class=md-ellipsis> (constructor) </span> </a> </li> <li class=md-nav__item> <a href=../../byte_container_with_subtype/clear_subtype/ class=md-nav__link> <span class=md-ellipsis> clear_subtype </span> </a> </li> <li class=md-nav__item> <a href=../../byte_container_with_subtype/has_subtype/ class=md-nav__link> <span class=md-ellipsis> has_subtype </span> </a> </li> <li class=md-nav__item> <a href=../../byte_container_with_subtype/set_subtype/ class=md-nav__link> <span class=md-ellipsis> set_subtype </span> </a> </li> <li class=md-nav__item> <a href=../../byte_container_with_subtype/subtype/ class=md-nav__link> <span class=md-ellipsis> subtype </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_3> <div class="md-nav__link md-nav__container"> <a href=../../adl_serializer/ class="md-nav__link "> <span class=md-ellipsis> adl_serializer </span> </a> <label class="md-nav__link " for=__nav_4_3 id=__nav_4_3_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_3_label aria-expanded=false> <label class=md-nav__title for=__nav_4_3> <span class="md-nav__icon md-icon"></span> adl_serializer </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../adl_serializer/from_json/ class=md-nav__link> <span class=md-ellipsis> from_json </span> </a> </li> <li class=md-nav__item> <a href=../../adl_serializer/to_json/ class=md-nav__link> <span class=md-ellipsis> to_json </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../json/ class=md-nav__link> <span class=md-ellipsis> json </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_5> <div class="md-nav__link md-nav__container"> <a href=../../json_pointer/ class="md-nav__link "> <span class=md-ellipsis> json_pointer </span> </a> <label class="md-nav__link " for=__nav_4_5 id=__nav_4_5_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_5_label aria-expanded=false> <label class=md-nav__title for=__nav_4_5> <span class="md-nav__icon md-icon"></span> json_pointer </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../json_pointer/json_pointer/ class=md-nav__link> <span class=md-ellipsis> (Constructor) </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/back/ class=md-nav__link> <span class=md-ellipsis> back </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/empty/ class=md-nav__link> <span class=md-ellipsis> empty </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/front/ class=md-nav__link> <span class=md-ellipsis> front </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_string_t/ class=md-nav__link> <span class=md-ellipsis> operator string_t </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_eq/ class=md-nav__link> <span class=md-ellipsis> operator== </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_ne/ class=md-nav__link> <span class=md-ellipsis> operator!= </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_slash/ class=md-nav__link> <span class=md-ellipsis> operator/ </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_slasheq/ class=md-nav__link> <span class=md-ellipsis> operator/= </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/parent_pointer/ class=md-nav__link> <span class=md-ellipsis> parent_pointer </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/pop_back/ class=md-nav__link> <span class=md-ellipsis> pop_back </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/pop_front/ class=md-nav__link> <span class=md-ellipsis> pop_front </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/push_back/ class=md-nav__link> <span class=md-ellipsis> push_back </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/push_front/ class=md-nav__link> <span class=md-ellipsis> push_front </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/string_t/ class=md-nav__link> <span class=md-ellipsis> string_t </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/to_string/ class=md-nav__link> <span class=md-ellipsis> to_string </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_6> <div class="md-nav__link md-nav__container"> <a href=../../json_sax/ class="md-nav__link "> <span class=md-ellipsis> json_sax </span> </a> <label class="md-nav__link " for=__nav_4_6 id=__nav_4_6_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_6_label aria-expanded=false> <label class=md-nav__title for=__nav_4_6> <span class="md-nav__icon md-icon"></span> json_sax </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../json_sax/binary/ class=md-nav__link> <span class=md-ellipsis> binary </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/boolean/ class=md-nav__link> <span class=md-ellipsis> boolean </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/end_array/ class=md-nav__link> <span class=md-ellipsis> end_array </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/end_object/ class=md-nav__link> <span class=md-ellipsis> end_object </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/key/ class=md-nav__link> <span class=md-ellipsis> key </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/null/ class=md-nav__link> <span class=md-ellipsis> null </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/number_float/ class=md-nav__link> <span class=md-ellipsis> number_float </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/number_integer/ class=md-nav__link> <span class=md-ellipsis> number_integer </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/number_unsigned/ class=md-nav__link> <span class=md-ellipsis> number_unsigned </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/parse_error/ class=md-nav__link> <span class=md-ellipsis> parse_error </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/start_array/ class=md-nav__link> <span class=md-ellipsis> start_array </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/start_object/ class=md-nav__link> <span class=md-ellipsis> start_object </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/string/ class=md-nav__link> <span class=md-ellipsis> string </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../operator_ltlt/ class=md-nav__link> <span class=md-ellipsis> operator<<(basic_json), operator<<(json_pointer) </span> </a> </li> <li class=md-nav__item> <a href=../../operator_gtgt/ class=md-nav__link> <span class=md-ellipsis> operator>>(basic_json) </span> </a> </li> <li class=md-nav__item> <a href=../../operator_literal_json/ class=md-nav__link> <span class=md-ellipsis> operator""_json </span> </a> </li> <li class=md-nav__item> <a href=../../operator_literal_json_pointer/ class=md-nav__link> <span class=md-ellipsis> operator""_json_pointer </span> </a> </li> <li class=md-nav__item> <a href=../../ordered_json/ class=md-nav__link> <span class=md-ellipsis> ordered_json </span> </a> </li> <li class=md-nav__item> <a href=../../ordered_map/ class=md-nav__link> <span class=md-ellipsis> ordered_map </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_13> <div class="md-nav__link md-nav__container"> <a href=../../macros/ class="md-nav__link "> <span class=md-ellipsis> macros </span> </a> <label class="md-nav__link " for=__nav_4_13 id=__nav_4_13_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_13_label aria-expanded=false> <label class=md-nav__title for=__nav_4_13> <span class="md-nav__icon md-icon"></span> macros </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../macros/json_assert/ class=md-nav__link> <span class=md-ellipsis> JSON_ASSERT </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_brace_init_copy_semantics/ class=md-nav__link> <span class=md-ellipsis> JSON_BRACE_INIT_COPY_SEMANTICS </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_throw_user/ class=md-nav__link> <span class=md-ellipsis> JSON_CATCH_USER, JSON_THROW_USER, JSON_TRY_USER </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_diagnostics/ class=md-nav__link> <span class=md-ellipsis> JSON_DIAGNOSTICS </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_diagnostic_positions/ class=md-nav__link> <span class=md-ellipsis> JSON_DIAGNOSTIC_POSITIONS </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_disable_enum_serialization/ class=md-nav__link> <span class=md-ellipsis> JSON_DISABLE_ENUM_SERIALIZATION </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_has_cpp_11/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_CPP_11, JSON_HAS_CPP_14, JSON_HAS_CPP_17, JSON_HAS_CPP_20 </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_has_filesystem/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_EXPERIMENTAL_FILESYSTEM, JSON_HAS_FILESYSTEM </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_has_ranges/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_RANGES </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_has_static_rtti/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_STATIC_RTTI </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_has_three_way_comparison/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_THREE_WAY_COMPARISON </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_noexception/ class=md-nav__link> <span class=md-ellipsis> JSON_NOEXCEPTION </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_no_io/ class=md-nav__link> <span class=md-ellipsis> JSON_NO_IO </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_skip_library_version_check/ class=md-nav__link> <span class=md-ellipsis> JSON_SKIP_LIBRARY_VERSION_CHECK </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_skip_unsupported_compiler_check/ class=md-nav__link> <span class=md-ellipsis> JSON_SKIP_UNSUPPORTED_COMPILER_CHECK </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_use_global_udls/ class=md-nav__link> <span class=md-ellipsis> JSON_USE_GLOBAL_UDLS </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_use_implicit_conversions/ class=md-nav__link> <span class=md-ellipsis> JSON_USE_IMPLICIT_CONVERSIONS </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_use_legacy_discarded_value_comparison/ class=md-nav__link> <span class=md-ellipsis> JSON_USE_LEGACY_DISCARDED_VALUE_COMPARISON </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_define_derived_type/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_ONLY_SERIALIZE, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_define_type_intrusive/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_TYPE_INTRUSIVE, NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_TYPE_INTRUSIVE_ONLY_SERIALIZE </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_define_type_non_intrusive/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_define_type_with_names/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_TYPE_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_namespace/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_NAMESPACE </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_namespace_begin/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_NAMESPACE_BEGIN, NLOHMANN_JSON_NAMESPACE_END </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_namespace_no_version/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_NAMESPACE_NO_VERSION </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_serialize_enum/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_SERIALIZE_ENUM </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_serialize_enum_strict/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_SERIALIZE_ENUM_STRICT </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_version_major/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_VERSION_MAJOR, NLOHMANN_JSON_VERSION_MINOR, NLOHMANN_JSON_VERSION_PATCH </span> </a> </li> </ul> </nav> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_5> <div class="md-nav__link md-nav__container"> <a href=../../../community/ class="md-nav__link "> <span class=md-ellipsis> Community </span> </a> <label class="md-nav__link " for=__nav_5 id=__nav_5_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_5_label aria-expanded=false> <label class=md-nav__title for=__nav_5> <span class="md-nav__icon md-icon"></span> Community </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../community/code_of_conduct/ class=md-nav__link> <span class=md-ellipsis> Code of Conduct </span> </a> </li> <li class=md-nav__item> <a href=../../../community/contribution_guidelines/ class=md-nav__link> <span class=md-ellipsis> Contribution Guidelines </span> </a> </li> <li class=md-nav__item> <a href=../../../community/quality_assurance/ class=md-nav__link> <span class=md-ellipsis> Quality assurance </span> </a> </li> <li class=md-nav__item> <a href=../../../community/governance/ class=md-nav__link> <span class=md-ellipsis> Governance </span> </a> </li> <li class=md-nav__item> <a href=../../../community/security_policy/ class=md-nav__link> <span class=md-ellipsis> Security Policy </span> </a> </li> </ul> </nav> </li> </ul> </nav> </div> </div> </div> <div class="md-sidebar md-sidebar--secondary" data-md-component=sidebar data-md-type=toc> <div class=md-sidebar__scrollwrap> <div class=md-sidebar__inner> <nav class="md-nav md-nav--secondary" aria-label="Table of contents"> <label class=md-nav__title for=__toc> <span class="md-nav__icon md-icon"></span> Table of contents </label> <ul class=md-nav__list data-md-component=toc data-md-scrollfix> <li class=md-nav__item> <a href=#return-value class=md-nav__link> <span class=md-ellipsis> Return value </span> </a> </li> <li class=md-nav__item> <a href=#exception-safety class=md-nav__link> <span class=md-ellipsis> Exception safety </span> </a> </li> <li class=md-nav__item> <a href=#complexity class=md-nav__link> <span class=md-ellipsis> Complexity </span> </a> </li> <li class=md-nav__item> <a href=#examples class=md-nav__link> <span class=md-ellipsis> Examples </span> </a> </li> <li class=md-nav__item> <a href=#see-also class=md-nav__link> <span class=md-ellipsis> See also </span> </a> </li> <li class=md-nav__item> <a href=#version-history class=md-nav__link> <span class=md-ellipsis> Version history </span> </a> </li> </ul> </nav> </div> </div> </div> <div class=md-content data-md-component=content> <article class="md-content__inner md-typeset"> <a href="https://github.com/nlohmann/json/edit/develop/docs/mkdocs/docs/api/basic_json/meta.md" title="Edit this page" class="md-content__button md-icon" rel="edit"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M10 20H6V4h7v5h5v3.1l2-2V8l-6-6H6c-1.1 0-2 .9-2 2v16c0 1.1.9 2 2 2h4zm10.2-7c.1 0 .3.1.4.2l1.3 1.3c.2.2.2.6 0 .8l-1 1-2.1-2.1 1-1c.1-.1.2-.2.4-.2m0 3.9L14.1 23H12v-2.1l6.1-6.1z"/></svg> </a> <a href="https://github.com/nlohmann/json/raw/develop/docs/mkdocs/docs/api/basic_json/meta.md" title="View source of this page" class="md-content__button md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M17 18c.56 0 1 .44 1 1s-.44 1-1 1-1-.44-1-1 .44-1 1-1m0-3c-2.73 0-5.06 1.66-6 4 .94 2.34 3.27 4 6 4s5.06-1.66 6-4c-.94-2.34-3.27-4-6-4m0 6.5a2.5 2.5 0 0 1-2.5-2.5 2.5 2.5 0 0 1 2.5-2.5 2.5 2.5 0 0 1 2.5 2.5 2.5 2.5 0 0 1-2.5 2.5M9.27 20H6V4h7v5h5v4.07c.7.08 1.36.25 2 .49V8l-6-6H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h4.5a8.2 8.2 0 0 1-1.23-2"/></svg> </a> <h1 id=nlohmannbasic_jsonmeta><small>nlohmann::basic_json::</small>meta<a class=headerlink href=#nlohmannbasic_jsonmeta title="Permanent link">&para;</a></h1> <div class=highlight><pre><span></span><code><span class=k>static</span><span class=w> </span><span class=n>basic_json</span><span class=w> </span><span class=nf>meta</span><span class=p>();</span>
-</code></pre></div> <p>This function returns a <abbr title="JavaScript Object Notation">JSON</abbr> object with information about the library, including the version number and information on the platform and compiler.</p> <h2 id=return-value>Return value<a class=headerlink href=#return-value title="Permanent link">&para;</a></h2> <p><abbr title="JavaScript Object Notation">JSON</abbr> object holding version information</p> <table> <thead> <tr> <th>key</th> <th>description</th> </tr> </thead> <tbody> <tr> <td><code>compiler</code></td> <td>Information on the used compiler. It is an object with the following keys: <code>c++</code> (the used C++ standard), <code>family</code> (the compiler family; possible values are <code>clang</code>, <code>icc</code>, <code>gcc</code>, <code>ilecpp</code>, <code>msvc</code>, <code>pgcpp</code>, <code>sunpro</code>, and <code>unknown</code>), and <code>version</code> (the compiler version).</td> </tr> <tr> <td><code>copyright</code></td> <td>The copyright line for the library as string.</td> </tr> <tr> <td><code>name</code></td> <td>The name of the library as string.</td> </tr> <tr> <td><code>platform</code></td> <td>The used platform as string. Possible values are <code>win32</code>, <code>linux</code>, <code>apple</code>, <code>unix</code>, and <code>unknown</code>.</td> </tr> <tr> <td><code>url</code></td> <td>The URL of the project as string.</td> </tr> <tr> <td><code>version</code></td> <td>The version of the library. It is an object with the following keys: <code>major</code>, <code>minor</code>, and <code>patch</code> as defined by <a href="http://semver.org">Semantic Versioning</a>, and <code>string</code> (the version string).</td> </tr> </tbody> </table> <h2 id=exception-safety>Exception safety<a class=headerlink href=#exception-safety title="Permanent link">&para;</a></h2> <p>Strong guarantee: if an exception is thrown, there are no changes to any <abbr title="JavaScript Object Notation">JSON</abbr> value.</p> <h2 id=complexity>Complexity<a class=headerlink href=#complexity title="Permanent link">&para;</a></h2> <p>Constant.</p> <h2 id=examples>Examples<a class=headerlink href=#examples title="Permanent link">&para;</a></h2> <details class=example> <summary>Example</summary> <p>The following code shows an example output of the <code>meta()</code> function.</p> <div class=highlight><pre><span></span><code><span class=cp>#include</span><span class=w> </span><span class=cpf>&lt;iostream&gt;</span>
+</code></pre></div> <p>This function returns a <abbr title="JavaScript Object Notation">JSON</abbr> object with information about the library, including the version number and information on the platform and compiler.</p> <h2 id=return-value>Return value<a class=headerlink href=#return-value title="Permanent link">&para;</a></h2> <p><abbr title="JavaScript Object Notation">JSON</abbr> object holding version information</p> <table> <thead> <tr> <th>key</th> <th>description</th> </tr> </thead> <tbody> <tr> <td><code>compiler</code></td> <td>Information on the used compiler. It is an object with the following keys: <code>c++</code> (the used C++ standard), <code>family</code> (the compiler family; possible values are <code>clang</code>, <code>icc</code>, <code>gcc</code>, <code>ilecpp</code>, <code>msvc</code>, <code>pgcpp</code>, <code>sunpro</code>, and <code>unknown</code>), and <code>version</code> (the compiler version). On HP aCC compilers, <code>compiler</code> is instead the plain string <code>hp</code>.</td> </tr> <tr> <td><code>copyright</code></td> <td>The copyright line for the library as string.</td> </tr> <tr> <td><code>name</code></td> <td>The name of the library as string.</td> </tr> <tr> <td><code>platform</code></td> <td>The used platform as string. Possible values are <code>win32</code>, <code>linux</code>, <code>apple</code>, <code>unix</code>, and <code>unknown</code>.</td> </tr> <tr> <td><code>url</code></td> <td>The URL of the project as string.</td> </tr> <tr> <td><code>version</code></td> <td>The version of the library. It is an object with the following keys: <code>major</code>, <code>minor</code>, and <code>patch</code> as defined by <a href="http://semver.org">Semantic Versioning</a>, and <code>string</code> (the version string).</td> </tr> </tbody> </table> <h2 id=exception-safety>Exception safety<a class=headerlink href=#exception-safety title="Permanent link">&para;</a></h2> <p>Strong guarantee: if an exception is thrown, there are no changes to any <abbr title="JavaScript Object Notation">JSON</abbr> value.</p> <h2 id=complexity>Complexity<a class=headerlink href=#complexity title="Permanent link">&para;</a></h2> <p>Constant.</p> <h2 id=examples>Examples<a class=headerlink href=#examples title="Permanent link">&para;</a></h2> <details class=example> <summary>Example</summary> <p>The following code shows an example output of the <code>meta()</code> function.</p> <div class=highlight><pre><span></span><code><span class=cp>#include</span><span class=w> </span><span class=cpf>&lt;iostream&gt;</span>
 <span class=cp>#include</span><span class=w> </span><span class=cpf>&lt;iomanip&gt;</span>
 <span class=cp>#include</span><span class=w> </span><span class=cpf>&lt;nlohmann/json.hpp&gt;</span>
 
@@ -27,4 +27,4 @@
 <span class=w>        </span><span class=nt>&quot;string&quot;</span><span class=p>:</span><span class=w> </span><span class=s2>&quot;3.12.0&quot;</span>
 <span class=w>    </span><span class=p>}</span>
 <span class=p>}</span>
-</code></pre></div> <p>Note the output is platform-dependent.</p> </details> <h2 id=see-also>See also<a class=headerlink href=#see-also title="Permanent link">&para;</a></h2> <ul> <li><a href=../../macros/nlohmann_json_version_major/ ><strong>NLOHMANN_JSON_VERSION_MAJOR</strong>/<strong>NLOHMANN_JSON_VERSION_MINOR</strong>/<strong>NLOHMANN_JSON_VERSION_PATCH</strong></a> - library version information</li> </ul> <h2 id=version-history>Version history<a class=headerlink href=#version-history title="Permanent link">&para;</a></h2> <ul> <li>Added in version 2.1.0.</li> </ul> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 23, 2026 11:16:18 UTC">June 23, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
+</code></pre></div> <p>Note the output is platform-dependent.</p> </details> <h2 id=see-also>See also<a class=headerlink href=#see-also title="Permanent link">&para;</a></h2> <ul> <li><a href=../../macros/nlohmann_json_version_major/ ><strong>NLOHMANN_JSON_VERSION_MAJOR</strong>/<strong>NLOHMANN_JSON_VERSION_MINOR</strong>/<strong>NLOHMANN_JSON_VERSION_PATCH</strong></a> - library version information</li> </ul> <h2 id=version-history>Version history<a class=headerlink href=#version-history title="Permanent link">&para;</a></h2> <ul> <li>Added in version 2.1.0.</li> </ul> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 29, 2026 20:15:18 UTC">June 29, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
diff --git a/api/basic_json/number_float_t/index.html b/api/basic_json/number_float_t/index.html
index 8e5d455..df97906 100644
--- a/api/basic_json/number_float_t/index.html
+++ b/api/basic_json/number_float_t/index.html
@@ -10,4 +10,4 @@
 <span class=w>    </span><span class=n>std</span><span class=o>::</span><span class=n>cout</span><span class=w> </span><span class=o>&lt;&lt;</span><span class=w> </span><span class=n>std</span><span class=o>::</span><span class=n>boolalpha</span><span class=w> </span><span class=o>&lt;&lt;</span><span class=w> </span><span class=n>std</span><span class=o>::</span><span class=n>is_same</span><span class=o>&lt;</span><span class=kt>double</span><span class=p>,</span><span class=w> </span><span class=n>json</span><span class=o>::</span><span class=n>number_float_t</span><span class=o>&gt;::</span><span class=n>value</span><span class=w> </span><span class=o>&lt;&lt;</span><span class=w> </span><span class=n>std</span><span class=o>::</span><span class=n>endl</span><span class=p>;</span>
 <span class=p>}</span>
 </code></pre></div> <p>Output:</p> <div class=highlight><pre><span></span><code><span class=kc>true</span>
-</code></pre></div> </details> <h2 id=version-history>Version history<a class=headerlink href=#version-history title="Permanent link">&para;</a></h2> <ul> <li>Added in version 1.0.0.</li> </ul> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 23, 2026 11:16:18 UTC">June 23, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
+</code></pre></div> </details> <h2 id=version-history>Version history<a class=headerlink href=#version-history title="Permanent link">&para;</a></h2> <ul> <li>Added in version 1.0.0.</li> </ul> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 29, 2026 20:15:18 UTC">June 29, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
diff --git a/api/basic_json/number_integer_t/index.html b/api/basic_json/number_integer_t/index.html
index 4c2dd64..fe4ec88 100644
--- a/api/basic_json/number_integer_t/index.html
+++ b/api/basic_json/number_integer_t/index.html
@@ -1,5 +1,5 @@
 <!doctype html><html lang=en class=no-js> <head><meta charset=utf-8><meta name=viewport content="width=device-width,initial-scale=1"><meta name=author content="Niels Lohmann"><link href="https://json.nlohmann.me/api/basic_json/number_integer_t/" rel="canonical"><link href=../number_float_t/ rel=prev><link href=../number_unsigned_t/ rel=next><link rel=icon href=../../../assets/images/favicon.png><meta name=generator content="mkdocs-1.6.1, mkdocs-material-9.7.6"><title>number_integer_t - JSON for Modern C++</title><link rel=stylesheet href=../../../assets/stylesheets/main.484c7ddc.min.css><link rel=stylesheet href=../../../assets/stylesheets/palette.ab4e12ef.min.css><link rel="stylesheet" href="../../../assets/external/fonts.googleapis.com/css.61a430c9.css"><style>:root{--md-text-font:"Roboto";--md-code-font:"JetBrains Mono"}</style><link rel=stylesheet href=../../../css/custom.css><script>__md_scope=new URL("../../..",location),__md_hash=e=>[...e].reduce(((e,_)=>(e<<5)-e+_.charCodeAt(0)),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script></head> <body dir=ltr data-md-color-scheme=default data-md-color-primary=indigo data-md-color-accent=indigo> <input class=md-toggle data-md-toggle=drawer type=checkbox id=__drawer autocomplete=off> <input class=md-toggle data-md-toggle=search type=checkbox id=__search autocomplete=off> <label class=md-overlay for=__drawer></label> <div data-md-component=skip> <a href=#nlohmannbasic_jsonnumber_integer_t class=md-skip> Skip to content </a> </div> <div data-md-component=announce> </div> <header class=md-header data-md-component=header> <nav class="md-header__inner md-grid" aria-label=Header> <a href=../../.. title="JSON for Modern C++" class="md-header__button md-logo" aria-label="JSON for Modern C++" data-md-component=logo> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54"/></svg> </a> <label class="md-header__button md-icon" for=__drawer> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M3 6h18v2H3zm0 5h18v2H3zm0 5h18v2H3z"/></svg> </label> <div class=md-header__title data-md-component=header-title> <div class=md-header__ellipsis> <div class=md-header__topic> <span class=md-ellipsis> JSON for Modern C++ </span> </div> <div class=md-header__topic data-md-component=header-topic> <span class=md-ellipsis> number_integer_t </span> </div> </div> </div> <form class=md-header__option data-md-component=palette> <input class=md-option data-md-color-media="(prefers-color-scheme: light)" data-md-color-scheme=default data-md-color-primary=indigo data-md-color-accent=indigo aria-label="Switch to dark mode" type=radio name=__palette id=__palette_0> <label class="md-header__button md-icon" title="Switch to dark mode" for=__palette_1 hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a4 4 0 0 0-4 4 4 4 0 0 0 4 4 4 4 0 0 0 4-4 4 4 0 0 0-4-4m0 10a6 6 0 0 1-6-6 6 6 0 0 1 6-6 6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12z"/></svg> </label> <input class=md-option data-md-color-media="(prefers-color-scheme: dark)" data-md-color-scheme=slate data-md-color-primary=indigo data-md-color-accent=indigo aria-label="Switch to light mode" type=radio name=__palette id=__palette_1> <label class="md-header__button md-icon" title="Switch to light mode" for=__palette_0 hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 18c-.89 0-1.74-.2-2.5-.55C11.56 16.5 13 14.42 13 12s-1.44-4.5-3.5-5.45C10.26 6.2 11.11 6 12 6a6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12z"/></svg> </label> </form> <script>var palette=__md_get("__palette");if(palette&&palette.color){if("(prefers-color-scheme)"===palette.color.media){var media=matchMedia("(prefers-color-scheme: light)"),input=document.querySelector(media.matches?"[data-md-color-media='(prefers-color-scheme: light)']":"[data-md-color-media='(prefers-color-scheme: dark)']");palette.color.media=input.getAttribute("data-md-color-media"),palette.color.scheme=input.getAttribute("data-md-color-scheme"),palette.color.primary=input.getAttribute("data-md-color-primary"),palette.color.accent=input.getAttribute("data-md-color-accent")}for(var[key,value]of Object.entries(palette.color))document.body.setAttribute("data-md-color-"+key,value)}</script> <label class="md-header__button md-icon" for=__search> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg> </label> <div class=md-search data-md-component=search role=dialog> <label class=md-search__overlay for=__search></label> <div class=md-search__inner role=search> <form class=md-search__form name=search> <input type=text class=md-search__input name=query aria-label=Search placeholder=Search autocapitalize=off autocorrect=off autocomplete=off spellcheck=false data-md-component=search-query required> <label class="md-search__icon md-icon" for=__search> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11z"/></svg> </label> <nav class=md-search__options aria-label=Search> <button type=reset class="md-search__icon md-icon" title=Clear aria-label=Clear tabindex=-1> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z"/></svg> </button> </nav> </form> <div class=md-search__output> <div class=md-search__scrollwrap tabindex=0 data-md-scrollfix> <div class=md-search-result data-md-component=search-result> <div class=md-search-result__meta> Initializing search </div> <ol class=md-search-result__list role=presentation></ol> </div> </div> </div> </div> </div> <div class=md-header__source> <a href="https://github.com/nlohmann/json" title="Go to repository" class="md-source" data-md-component="source"> <div class="md-source__icon md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </div> <div class=md-source__repository> nlohmann/json </div> </a> </div> </nav> </header> <div class=md-container data-md-component=container> <nav class=md-tabs aria-label=Tabs data-md-component=tabs> <div class=md-grid> <ul class=md-tabs__list> <li class=md-tabs__item> <a href=../../.. class=md-tabs__link> Home </a> </li> <li class=md-tabs__item> <a href=../../../features/arbitrary_types/ class=md-tabs__link> Features </a> </li> <li class=md-tabs__item> <a href=../../../integration/ class=md-tabs__link> Integration </a> </li> <li class="md-tabs__item md-tabs__item--active"> <a href=../ class=md-tabs__link> API Documentation </a> </li> <li class=md-tabs__item> <a href=../../../community/ class=md-tabs__link> Community </a> </li> </ul> </div> </nav> <main class=md-main data-md-component=main> <div class="md-main__inner md-grid"> <div class="md-sidebar md-sidebar--primary" data-md-component=sidebar data-md-type=navigation> <div class=md-sidebar__scrollwrap> <div class=md-sidebar__inner> <nav class="md-nav md-nav--primary md-nav--lifted" aria-label=Navigation data-md-level=0> <label class=md-nav__title for=__drawer> <a href=../../.. title="JSON for Modern C++" class="md-nav__button md-logo" aria-label="JSON for Modern C++" data-md-component=logo> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54"/></svg> </a> JSON for Modern C++ </label> <div class=md-nav__source> <a href="https://github.com/nlohmann/json" title="Go to repository" class="md-source" data-md-component="source"> <div class="md-source__icon md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </div> <div class=md-source__repository> nlohmann/json </div> </a> </div> <ul class=md-nav__list data-md-scrollfix> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_1> <div class="md-nav__link md-nav__container"> <a href=../../.. class="md-nav__link "> <span class=md-ellipsis> Home </span> </a> <label class="md-nav__link " for=__nav_1 id=__nav_1_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_1_label aria-expanded=false> <label class=md-nav__title for=__nav_1> <span class="md-nav__icon md-icon"></span> Home </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../home/license/ class=md-nav__link> <span class=md-ellipsis> License </span> </a> </li> <li class=md-nav__item> <a href=../../../home/faq/ class=md-nav__link> <span class=md-ellipsis> FAQ </span> </a> </li> <li class=md-nav__item> <a href=../../../home/exceptions/ class=md-nav__link> <span class=md-ellipsis> Exceptions </span> </a> </li> <li class=md-nav__item> <a href=../../../home/releases/ class=md-nav__link> <span class=md-ellipsis> Releases </span> </a> </li> <li class=md-nav__item> <a href=../../../home/design_goals/ class=md-nav__link> <span class=md-ellipsis> Design goals </span> </a> </li> <li class=md-nav__item> <a href=../../../home/architecture/ class=md-nav__link> <span class=md-ellipsis> Architecture </span> </a> </li> <li class=md-nav__item> <a href=../../../home/customers/ class=md-nav__link> <span class=md-ellipsis> Customers </span> </a> </li> <li class=md-nav__item> <a href=../../../home/sponsors/ class=md-nav__link> <span class=md-ellipsis> Sponsors </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2> <label class=md-nav__link for=__nav_2 id=__nav_2_label tabindex=0> <span class=md-ellipsis> Features </span> <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_2_label aria-expanded=false> <label class=md-nav__title for=__nav_2> <span class="md-nav__icon md-icon"></span> Features </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/arbitrary_types/ class=md-nav__link> <span class=md-ellipsis> Arbitrary Type Conversions </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_2> <div class="md-nav__link md-nav__container"> <a href=../../../features/binary_formats/ class="md-nav__link "> <span class=md-ellipsis> Binary Formats </span> </a> <label class="md-nav__link " for=__nav_2_2 id=__nav_2_2_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_2_label aria-expanded=false> <label class=md-nav__title for=__nav_2_2> <span class="md-nav__icon md-icon"></span> Binary Formats </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/binary_formats/bjdata/ class=md-nav__link> <span class=md-ellipsis> BJData </span> </a> </li> <li class=md-nav__item> <a href=../../../features/binary_formats/bson/ class=md-nav__link> <span class=md-ellipsis> BSON </span> </a> </li> <li class=md-nav__item> <a href=../../../features/binary_formats/cbor/ class=md-nav__link> <span class=md-ellipsis> CBOR </span> </a> </li> <li class=md-nav__item> <a href=../../../features/binary_formats/messagepack/ class=md-nav__link> <span class=md-ellipsis> MessagePack </span> </a> </li> <li class=md-nav__item> <a href=../../../features/binary_formats/ubjson/ class=md-nav__link> <span class=md-ellipsis> UBJSON </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../../features/binary_values/ class=md-nav__link> <span class=md-ellipsis> Binary Values </span> </a> </li> <li class=md-nav__item> <a href=../../../features/comments/ class=md-nav__link> <span class=md-ellipsis> Comments </span> </a> </li> <li class=md-nav__item> <a href=../../../features/trailing_commas/ class=md-nav__link> <span class=md-ellipsis> Trailing Commas </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_6> <div class="md-nav__link md-nav__container"> <a href=../../../features/element_access/ class="md-nav__link "> <span class=md-ellipsis> Element Access </span> </a> <label class="md-nav__link " for=__nav_2_6 id=__nav_2_6_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_6_label aria-expanded=false> <label class=md-nav__title for=__nav_2_6> <span class="md-nav__icon md-icon"></span> Element Access </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/element_access/unchecked_access/ class=md-nav__link> <span class=md-ellipsis> Unchecked access: operator[] </span> </a> </li> <li class=md-nav__item> <a href=../../../features/element_access/checked_access/ class=md-nav__link> <span class=md-ellipsis> Checked access: at </span> </a> </li> <li class=md-nav__item> <a href=../../../features/element_access/default_value/ class=md-nav__link> <span class=md-ellipsis> Access with default value: value </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../../features/iterators/ class=md-nav__link> <span class=md-ellipsis> Iterators </span> </a> </li> <li class=md-nav__item> <a href=../../../features/json_pointer/ class=md-nav__link> <span class=md-ellipsis> JSON Pointer </span> </a> </li> <li class=md-nav__item> <a href=../../../features/json_patch/ class=md-nav__link> <span class=md-ellipsis> JSON Patch and Diff </span> </a> </li> <li class=md-nav__item> <a href=../../../features/merge_patch/ class=md-nav__link> <span class=md-ellipsis> JSON Merge Patch </span> </a> </li> <li class=md-nav__item> <a href=../../../features/modules/ class=md-nav__link> <span class=md-ellipsis> Modules </span> </a> </li> <li class=md-nav__item> <a href=../../../features/namespace/ class=md-nav__link> <span class=md-ellipsis> nlohmann Namespace </span> </a> </li> <li class=md-nav__item> <a href=../../../features/object_order/ class=md-nav__link> <span class=md-ellipsis> Object Order </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_14> <div class="md-nav__link md-nav__container"> <a href=../../../features/parsing/ class="md-nav__link "> <span class=md-ellipsis> Parsing </span> </a> <label class="md-nav__link " for=__nav_2_14 id=__nav_2_14_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_14_label aria-expanded=false> <label class=md-nav__title for=__nav_2_14> <span class="md-nav__icon md-icon"></span> Parsing </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/parsing/json_lines/ class=md-nav__link> <span class=md-ellipsis> JSON Lines </span> </a> </li> <li class=md-nav__item> <a href=../../../features/parsing/parse_exceptions/ class=md-nav__link> <span class=md-ellipsis> Parsing and Exceptions </span> </a> </li> <li class=md-nav__item> <a href=../../../features/parsing/parser_callbacks/ class=md-nav__link> <span class=md-ellipsis> Parser Callbacks </span> </a> </li> <li class=md-nav__item> <a href=../../../features/parsing/sax_interface/ class=md-nav__link> <span class=md-ellipsis> SAX Interface </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../../features/assertions/ class=md-nav__link> <span class=md-ellipsis> Runtime Assertions </span> </a> </li> <li class=md-nav__item> <a href=../../../features/enum_conversion/ class=md-nav__link> <span class=md-ellipsis> Specializing enum conversion </span> </a> </li> <li class=md-nav__item> <a href=../../../features/macros/ class=md-nav__link> <span class=md-ellipsis> Supported Macros </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_18> <div class="md-nav__link md-nav__container"> <a href=../../../features/types/ class="md-nav__link "> <span class=md-ellipsis> Types </span> </a> <label class="md-nav__link " for=__nav_2_18 id=__nav_2_18_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_18_label aria-expanded=false> <label class=md-nav__title for=__nav_2_18> <span class="md-nav__icon md-icon"></span> Types </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/types/number_handling/ class=md-nav__link> <span class=md-ellipsis> Number Handling </span> </a> </li> </ul> </nav> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_3> <div class="md-nav__link md-nav__container"> <a href=../../../integration/ class="md-nav__link "> <span class=md-ellipsis> Integration </span> </a> <label class="md-nav__link " for=__nav_3 id=__nav_3_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_3_label aria-expanded=false> <label class=md-nav__title for=__nav_3> <span class="md-nav__icon md-icon"></span> Integration </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../integration/migration_guide/ class=md-nav__link> <span class=md-ellipsis> Migration Guide </span> </a> </li> <li class=md-nav__item> <a href=../../../integration/cmake/ class=md-nav__link> <span class=md-ellipsis> CMake </span> </a> </li> <li class=md-nav__item> <a href=../../../integration/package_managers/ class=md-nav__link> <span class=md-ellipsis> Package Managers </span> </a> </li> <li class=md-nav__item> <a href=../../../integration/pkg-config/ class=md-nav__link> <span class=md-ellipsis> Pkg-config </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--active md-nav__item--section md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4 checked> <label class=md-nav__link for=__nav_4 id=__nav_4_label tabindex> <span class=md-ellipsis> API Documentation </span> <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_4_label aria-expanded=true> <label class=md-nav__title for=__nav_4> <span class="md-nav__icon md-icon"></span> API Documentation </label> <ul class=md-nav__list data-md-scrollfix> <li class="md-nav__item md-nav__item--active md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_1 checked> <div class="md-nav__link md-nav__container"> <a href=../ class="md-nav__link "> <span class=md-ellipsis> basic_json </span> </a> <label class="md-nav__link " for=__nav_4_1 id=__nav_4_1_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_1_label aria-expanded=true> <label class=md-nav__title for=__nav_4_1> <span class="md-nav__icon md-icon"></span> basic_json </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../basic_json/ class=md-nav__link> <span class=md-ellipsis> (Constructor) </span> </a> </li> <li class=md-nav__item> <a href=../~basic_json/ class=md-nav__link> <span class=md-ellipsis> (Destructor) </span> </a> </li> <li class=md-nav__item> <a href=../accept/ class=md-nav__link> <span class=md-ellipsis> accept </span> </a> </li> <li class=md-nav__item> <a href=../array/ class=md-nav__link> <span class=md-ellipsis> array </span> </a> </li> <li class=md-nav__item> <a href=../array_t/ class=md-nav__link> <span class=md-ellipsis> array_t </span> </a> </li> <li class=md-nav__item> <a href=../at/ class=md-nav__link> <span class=md-ellipsis> at </span> </a> </li> <li class=md-nav__item> <a href=../back/ class=md-nav__link> <span class=md-ellipsis> back </span> </a> </li> <li class=md-nav__item> <a href=../begin/ class=md-nav__link> <span class=md-ellipsis> begin </span> </a> </li> <li class=md-nav__item> <a href=../binary/ class=md-nav__link> <span class=md-ellipsis> binary </span> </a> </li> <li class=md-nav__item> <a href=../binary_t/ class=md-nav__link> <span class=md-ellipsis> binary_t </span> </a> </li> <li class=md-nav__item> <a href=../boolean_t/ class=md-nav__link> <span class=md-ellipsis> boolean_t </span> </a> </li> <li class=md-nav__item> <a href=../cbegin/ class=md-nav__link> <span class=md-ellipsis> cbegin </span> </a> </li> <li class=md-nav__item> <a href=../cbor_tag_handler_t/ class=md-nav__link> <span class=md-ellipsis> cbor_tag_handler_t </span> </a> </li> <li class=md-nav__item> <a href=../cend/ class=md-nav__link> <span class=md-ellipsis> cend </span> </a> </li> <li class=md-nav__item> <a href=../clear/ class=md-nav__link> <span class=md-ellipsis> clear </span> </a> </li> <li class=md-nav__item> <a href=../contains/ class=md-nav__link> <span class=md-ellipsis> contains </span> </a> </li> <li class=md-nav__item> <a href=../count/ class=md-nav__link> <span class=md-ellipsis> count </span> </a> </li> <li class=md-nav__item> <a href=../crbegin/ class=md-nav__link> <span class=md-ellipsis> crbegin </span> </a> </li> <li class=md-nav__item> <a href=../crend/ class=md-nav__link> <span class=md-ellipsis> crend </span> </a> </li> <li class=md-nav__item> <a href=../default_object_comparator_t/ class=md-nav__link> <span class=md-ellipsis> default_object_comparator_t </span> </a> </li> <li class=md-nav__item> <a href=../diff/ class=md-nav__link> <span class=md-ellipsis> diff </span> </a> </li> <li class=md-nav__item> <a href=../dump/ class=md-nav__link> <span class=md-ellipsis> dump </span> </a> </li> <li class=md-nav__item> <a href=../emplace/ class=md-nav__link> <span class=md-ellipsis> emplace </span> </a> </li> <li class=md-nav__item> <a href=../emplace_back/ class=md-nav__link> <span class=md-ellipsis> emplace_back </span> </a> </li> <li class=md-nav__item> <a href=../empty/ class=md-nav__link> <span class=md-ellipsis> empty </span> </a> </li> <li class=md-nav__item> <a href=../end/ class=md-nav__link> <span class=md-ellipsis> end </span> </a> </li> <li class=md-nav__item> <a href=../end_pos/ class=md-nav__link> <span class=md-ellipsis> end_pos </span> </a> </li> <li class=md-nav__item> <a href=../erase/ class=md-nav__link> <span class=md-ellipsis> erase </span> </a> </li> <li class=md-nav__item> <a href=../error_handler_t/ class=md-nav__link> <span class=md-ellipsis> error_handler_t </span> </a> </li> <li class=md-nav__item> <a href=../exception/ class=md-nav__link> <span class=md-ellipsis> exception </span> </a> </li> <li class=md-nav__item> <a href=../find/ class=md-nav__link> <span class=md-ellipsis> find </span> </a> </li> <li class=md-nav__item> <a href=../flatten/ class=md-nav__link> <span class=md-ellipsis> flatten </span> </a> </li> <li class=md-nav__item> <a href=../from_bjdata/ class=md-nav__link> <span class=md-ellipsis> from_bjdata </span> </a> </li> <li class=md-nav__item> <a href=../from_bson/ class=md-nav__link> <span class=md-ellipsis> from_bson </span> </a> </li> <li class=md-nav__item> <a href=../from_cbor/ class=md-nav__link> <span class=md-ellipsis> from_cbor </span> </a> </li> <li class=md-nav__item> <a href=../from_msgpack/ class=md-nav__link> <span class=md-ellipsis> from_msgpack </span> </a> </li> <li class=md-nav__item> <a href=../from_ubjson/ class=md-nav__link> <span class=md-ellipsis> from_ubjson </span> </a> </li> <li class=md-nav__item> <a href=../front/ class=md-nav__link> <span class=md-ellipsis> front </span> </a> </li> <li class=md-nav__item> <a href=../get/ class=md-nav__link> <span class=md-ellipsis> get </span> </a> </li> <li class=md-nav__item> <a href=../get_allocator/ class=md-nav__link> <span class=md-ellipsis> get_allocator </span> </a> </li> <li class=md-nav__item> <a href=../get_binary/ class=md-nav__link> <span class=md-ellipsis> get_binary </span> </a> </li> <li class=md-nav__item> <a href=../get_ptr/ class=md-nav__link> <span class=md-ellipsis> get_ptr </span> </a> </li> <li class=md-nav__item> <a href=../get_ref/ class=md-nav__link> <span class=md-ellipsis> get_ref </span> </a> </li> <li class=md-nav__item> <a href=../get_to/ class=md-nav__link> <span class=md-ellipsis> get_to </span> </a> </li> <li class=md-nav__item> <a href=../std_hash/ class=md-nav__link> <span class=md-ellipsis> std::hash&lt;basic_json&gt; </span> </a> </li> <li class=md-nav__item> <a href=../input_format_t/ class=md-nav__link> <span class=md-ellipsis> input_format_t </span> </a> </li> <li class=md-nav__item> <a href=../insert/ class=md-nav__link> <span class=md-ellipsis> insert </span> </a> </li> <li class=md-nav__item> <a href=../invalid_iterator/ class=md-nav__link> <span class=md-ellipsis> invalid_iterator </span> </a> </li> <li class=md-nav__item> <a href=../is_array/ class=md-nav__link> <span class=md-ellipsis> is_array </span> </a> </li> <li class=md-nav__item> <a href=../is_binary/ class=md-nav__link> <span class=md-ellipsis> is_binary </span> </a> </li> <li class=md-nav__item> <a href=../is_boolean/ class=md-nav__link> <span class=md-ellipsis> is_boolean </span> </a> </li> <li class=md-nav__item> <a href=../is_discarded/ class=md-nav__link> <span class=md-ellipsis> is_discarded </span> </a> </li> <li class=md-nav__item> <a href=../is_null/ class=md-nav__link> <span class=md-ellipsis> is_null </span> </a> </li> <li class=md-nav__item> <a href=../is_number/ class=md-nav__link> <span class=md-ellipsis> is_number </span> </a> </li> <li class=md-nav__item> <a href=../is_number_float/ class=md-nav__link> <span class=md-ellipsis> is_number_float </span> </a> </li> <li class=md-nav__item> <a href=../is_number_integer/ class=md-nav__link> <span class=md-ellipsis> is_number_integer </span> </a> </li> <li class=md-nav__item> <a href=../is_number_unsigned/ class=md-nav__link> <span class=md-ellipsis> is_number_unsigned </span> </a> </li> <li class=md-nav__item> <a href=../is_object/ class=md-nav__link> <span class=md-ellipsis> is_object </span> </a> </li> <li class=md-nav__item> <a href=../is_primitive/ class=md-nav__link> <span class=md-ellipsis> is_primitive </span> </a> </li> <li class=md-nav__item> <a href=../is_string/ class=md-nav__link> <span class=md-ellipsis> is_string </span> </a> </li> <li class=md-nav__item> <a href=../is_structured/ class=md-nav__link> <span class=md-ellipsis> is_structured </span> </a> </li> <li class=md-nav__item> <a href=../items/ class=md-nav__link> <span class=md-ellipsis> items </span> </a> </li> <li class=md-nav__item> <a href=../json_base_class_t/ class=md-nav__link> <span class=md-ellipsis> json_base_class_t </span> </a> </li> <li class=md-nav__item> <a href=../json_serializer/ class=md-nav__link> <span class=md-ellipsis> json_serializer </span> </a> </li> <li class=md-nav__item> <a href=../max_size/ class=md-nav__link> <span class=md-ellipsis> max_size </span> </a> </li> <li class=md-nav__item> <a href=../meta/ class=md-nav__link> <span class=md-ellipsis> meta </span> </a> </li> <li class=md-nav__item> <a href=../merge_patch/ class=md-nav__link> <span class=md-ellipsis> merge_patch </span> </a> </li> <li class=md-nav__item> <a href=../number_float_t/ class=md-nav__link> <span class=md-ellipsis> number_float_t </span> </a> </li> <li class="md-nav__item md-nav__item--active"> <input class="md-nav__toggle md-toggle" type=checkbox id=__toc> <label class="md-nav__link md-nav__link--active" for=__toc> <span class=md-ellipsis> number_integer_t </span> <span class="md-nav__icon md-icon"></span> </label> <a href=./ class="md-nav__link md-nav__link--active"> <span class=md-ellipsis> number_integer_t </span> </a> <nav class="md-nav md-nav--secondary" aria-label="Table of contents"> <label class=md-nav__title for=__toc> <span class="md-nav__icon md-icon"></span> Table of contents </label> <ul class=md-nav__list data-md-component=toc data-md-scrollfix> <li class=md-nav__item> <a href=#notes class=md-nav__link> <span class=md-ellipsis> Notes </span> </a> <nav class=md-nav aria-label=Notes> <ul class=md-nav__list> <li class=md-nav__item> <a href=#default-type class=md-nav__link> <span class=md-ellipsis> Default type </span> </a> </li> <li class=md-nav__item> <a href=#default-behavior class=md-nav__link> <span class=md-ellipsis> Default behavior </span> </a> </li> <li class=md-nav__item> <a href=#limits class=md-nav__link> <span class=md-ellipsis> Limits </span> </a> </li> <li class=md-nav__item> <a href=#storage class=md-nav__link> <span class=md-ellipsis> Storage </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=#examples class=md-nav__link> <span class=md-ellipsis> Examples </span> </a> </li> <li class=md-nav__item> <a href=#version-history class=md-nav__link> <span class=md-ellipsis> Version history </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../number_unsigned_t/ class=md-nav__link> <span class=md-ellipsis> number_unsigned_t </span> </a> </li> <li class=md-nav__item> <a href=../object/ class=md-nav__link> <span class=md-ellipsis> object </span> </a> </li> <li class=md-nav__item> <a href=../object_comparator_t/ class=md-nav__link> <span class=md-ellipsis> object_comparator_t </span> </a> </li> <li class=md-nav__item> <a href=../object_t/ class=md-nav__link> <span class=md-ellipsis> object_t </span> </a> </li> <li class=md-nav__item> <a href=../operator_ValueType/ class=md-nav__link> <span class=md-ellipsis> operator ValueType </span> </a> </li> <li class=md-nav__item> <a href=../operator_value_t/ class=md-nav__link> <span class=md-ellipsis> operator value_t </span> </a> </li> <li class=md-nav__item> <a href=../operator%5B%5D/ class=md-nav__link> <span class=md-ellipsis> operator[] </span> </a> </li> <li class=md-nav__item> <a href=../operator%3D/ class=md-nav__link> <span class=md-ellipsis> operator= </span> </a> </li> <li class=md-nav__item> <a href=../operator%2B%3D/ class=md-nav__link> <span class=md-ellipsis> operator+= </span> </a> </li> <li class=md-nav__item> <a href=../operator_eq/ class=md-nav__link> <span class=md-ellipsis> operator== </span> </a> </li> <li class=md-nav__item> <a href=../operator_ne/ class=md-nav__link> <span class=md-ellipsis> operator!= </span> </a> </li> <li class=md-nav__item> <a href=../operator_lt/ class=md-nav__link> <span class=md-ellipsis> operator< </span> </a> </li> <li class=md-nav__item> <a href=../operator_gt/ class=md-nav__link> <span class=md-ellipsis> operator> </span> </a> </li> <li class=md-nav__item> <a href=../operator_le/ class=md-nav__link> <span class=md-ellipsis> operator<= </span> </a> </li> <li class=md-nav__item> <a href=../operator_ge/ class=md-nav__link> <span class=md-ellipsis> operator>= </span> </a> </li> <li class=md-nav__item> <a href=../operator_spaceship/ class=md-nav__link> <span class=md-ellipsis> operator<=> </span> </a> </li> <li class=md-nav__item> <a href=../out_of_range/ class=md-nav__link> <span class=md-ellipsis> out_of_range </span> </a> </li> <li class=md-nav__item> <a href=../other_error/ class=md-nav__link> <span class=md-ellipsis> other_error </span> </a> </li> <li class=md-nav__item> <a href=../parse/ class=md-nav__link> <span class=md-ellipsis> parse </span> </a> </li> <li class=md-nav__item> <a href=../parse_error/ class=md-nav__link> <span class=md-ellipsis> parse_error </span> </a> </li> <li class=md-nav__item> <a href=../parse_event_t/ class=md-nav__link> <span class=md-ellipsis> parse_event_t </span> </a> </li> <li class=md-nav__item> <a href=../parser_callback_t/ class=md-nav__link> <span class=md-ellipsis> parser_callback_t </span> </a> </li> <li class=md-nav__item> <a href=../patch/ class=md-nav__link> <span class=md-ellipsis> patch </span> </a> </li> <li class=md-nav__item> <a href=../patch_inplace/ class=md-nav__link> <span class=md-ellipsis> patch_inplace </span> </a> </li> <li class=md-nav__item> <a href=../push_back/ class=md-nav__link> <span class=md-ellipsis> push_back </span> </a> </li> <li class=md-nav__item> <a href=../rbegin/ class=md-nav__link> <span class=md-ellipsis> rbegin </span> </a> </li> <li class=md-nav__item> <a href=../rend/ class=md-nav__link> <span class=md-ellipsis> rend </span> </a> </li> <li class=md-nav__item> <a href=../sax_parse/ class=md-nav__link> <span class=md-ellipsis> sax_parse </span> </a> </li> <li class=md-nav__item> <a href=../size/ class=md-nav__link> <span class=md-ellipsis> size </span> </a> </li> <li class=md-nav__item> <a href=../start_pos/ class=md-nav__link> <span class=md-ellipsis> start_pos </span> </a> </li> <li class=md-nav__item> <a href=../string_t/ class=md-nav__link> <span class=md-ellipsis> string_t </span> </a> </li> <li class=md-nav__item> <a href=../swap/ class=md-nav__link> <span class=md-ellipsis> swap </span> </a> </li> <li class=md-nav__item> <a href=../std_swap/ class=md-nav__link> <span class=md-ellipsis> std::swap&lt;basic_json&gt; </span> </a> </li> <li class=md-nav__item> <a href=../to_bjdata/ class=md-nav__link> <span class=md-ellipsis> to_bjdata </span> </a> </li> <li class=md-nav__item> <a href=../to_bson/ class=md-nav__link> <span class=md-ellipsis> to_bson </span> </a> </li> <li class=md-nav__item> <a href=../to_cbor/ class=md-nav__link> <span class=md-ellipsis> to_cbor </span> </a> </li> <li class=md-nav__item> <a href=../to_msgpack/ class=md-nav__link> <span class=md-ellipsis> to_msgpack </span> </a> </li> <li class=md-nav__item> <a href=../to_string/ class=md-nav__link> <span class=md-ellipsis> to_string </span> </a> </li> <li class=md-nav__item> <a href=../to_ubjson/ class=md-nav__link> <span class=md-ellipsis> to_ubjson </span> </a> </li> <li class=md-nav__item> <a href=../type/ class=md-nav__link> <span class=md-ellipsis> type </span> </a> </li> <li class=md-nav__item> <a href=../type_error/ class=md-nav__link> <span class=md-ellipsis> type_error </span> </a> </li> <li class=md-nav__item> <a href=../type_name/ class=md-nav__link> <span class=md-ellipsis> type_name </span> </a> </li> <li class=md-nav__item> <a href=../unflatten/ class=md-nav__link> <span class=md-ellipsis> unflatten </span> </a> </li> <li class=md-nav__item> <a href=../update/ class=md-nav__link> <span class=md-ellipsis> update </span> </a> </li> <li class=md-nav__item> <a href=../value/ class=md-nav__link> <span class=md-ellipsis> value </span> </a> </li> <li class=md-nav__item> <a href=../value_t/ class=md-nav__link> <span class=md-ellipsis> value_t </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_2> <div class="md-nav__link md-nav__container"> <a href=../../byte_container_with_subtype/ class="md-nav__link "> <span class=md-ellipsis> byte_container_with_subtype </span> </a> <label class="md-nav__link " for=__nav_4_2 id=__nav_4_2_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_2_label aria-expanded=false> <label class=md-nav__title for=__nav_4_2> <span class="md-nav__icon md-icon"></span> byte_container_with_subtype </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../byte_container_with_subtype/byte_container_with_subtype/ class=md-nav__link> <span class=md-ellipsis> (constructor) </span> </a> </li> <li class=md-nav__item> <a href=../../byte_container_with_subtype/clear_subtype/ class=md-nav__link> <span class=md-ellipsis> clear_subtype </span> </a> </li> <li class=md-nav__item> <a href=../../byte_container_with_subtype/has_subtype/ class=md-nav__link> <span class=md-ellipsis> has_subtype </span> </a> </li> <li class=md-nav__item> <a href=../../byte_container_with_subtype/set_subtype/ class=md-nav__link> <span class=md-ellipsis> set_subtype </span> </a> </li> <li class=md-nav__item> <a href=../../byte_container_with_subtype/subtype/ class=md-nav__link> <span class=md-ellipsis> subtype </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_3> <div class="md-nav__link md-nav__container"> <a href=../../adl_serializer/ class="md-nav__link "> <span class=md-ellipsis> adl_serializer </span> </a> <label class="md-nav__link " for=__nav_4_3 id=__nav_4_3_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_3_label aria-expanded=false> <label class=md-nav__title for=__nav_4_3> <span class="md-nav__icon md-icon"></span> adl_serializer </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../adl_serializer/from_json/ class=md-nav__link> <span class=md-ellipsis> from_json </span> </a> </li> <li class=md-nav__item> <a href=../../adl_serializer/to_json/ class=md-nav__link> <span class=md-ellipsis> to_json </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../json/ class=md-nav__link> <span class=md-ellipsis> json </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_5> <div class="md-nav__link md-nav__container"> <a href=../../json_pointer/ class="md-nav__link "> <span class=md-ellipsis> json_pointer </span> </a> <label class="md-nav__link " for=__nav_4_5 id=__nav_4_5_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_5_label aria-expanded=false> <label class=md-nav__title for=__nav_4_5> <span class="md-nav__icon md-icon"></span> json_pointer </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../json_pointer/json_pointer/ class=md-nav__link> <span class=md-ellipsis> (Constructor) </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/back/ class=md-nav__link> <span class=md-ellipsis> back </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/empty/ class=md-nav__link> <span class=md-ellipsis> empty </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/front/ class=md-nav__link> <span class=md-ellipsis> front </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_string_t/ class=md-nav__link> <span class=md-ellipsis> operator string_t </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_eq/ class=md-nav__link> <span class=md-ellipsis> operator== </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_ne/ class=md-nav__link> <span class=md-ellipsis> operator!= </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_slash/ class=md-nav__link> <span class=md-ellipsis> operator/ </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_slasheq/ class=md-nav__link> <span class=md-ellipsis> operator/= </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/parent_pointer/ class=md-nav__link> <span class=md-ellipsis> parent_pointer </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/pop_back/ class=md-nav__link> <span class=md-ellipsis> pop_back </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/pop_front/ class=md-nav__link> <span class=md-ellipsis> pop_front </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/push_back/ class=md-nav__link> <span class=md-ellipsis> push_back </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/push_front/ class=md-nav__link> <span class=md-ellipsis> push_front </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/string_t/ class=md-nav__link> <span class=md-ellipsis> string_t </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/to_string/ class=md-nav__link> <span class=md-ellipsis> to_string </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_6> <div class="md-nav__link md-nav__container"> <a href=../../json_sax/ class="md-nav__link "> <span class=md-ellipsis> json_sax </span> </a> <label class="md-nav__link " for=__nav_4_6 id=__nav_4_6_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_6_label aria-expanded=false> <label class=md-nav__title for=__nav_4_6> <span class="md-nav__icon md-icon"></span> json_sax </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../json_sax/binary/ class=md-nav__link> <span class=md-ellipsis> binary </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/boolean/ class=md-nav__link> <span class=md-ellipsis> boolean </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/end_array/ class=md-nav__link> <span class=md-ellipsis> end_array </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/end_object/ class=md-nav__link> <span class=md-ellipsis> end_object </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/key/ class=md-nav__link> <span class=md-ellipsis> key </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/null/ class=md-nav__link> <span class=md-ellipsis> null </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/number_float/ class=md-nav__link> <span class=md-ellipsis> number_float </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/number_integer/ class=md-nav__link> <span class=md-ellipsis> number_integer </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/number_unsigned/ class=md-nav__link> <span class=md-ellipsis> number_unsigned </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/parse_error/ class=md-nav__link> <span class=md-ellipsis> parse_error </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/start_array/ class=md-nav__link> <span class=md-ellipsis> start_array </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/start_object/ class=md-nav__link> <span class=md-ellipsis> start_object </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/string/ class=md-nav__link> <span class=md-ellipsis> string </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../operator_ltlt/ class=md-nav__link> <span class=md-ellipsis> operator<<(basic_json), operator<<(json_pointer) </span> </a> </li> <li class=md-nav__item> <a href=../../operator_gtgt/ class=md-nav__link> <span class=md-ellipsis> operator>>(basic_json) </span> </a> </li> <li class=md-nav__item> <a href=../../operator_literal_json/ class=md-nav__link> <span class=md-ellipsis> operator""_json </span> </a> </li> <li class=md-nav__item> <a href=../../operator_literal_json_pointer/ class=md-nav__link> <span class=md-ellipsis> operator""_json_pointer </span> </a> </li> <li class=md-nav__item> <a href=../../ordered_json/ class=md-nav__link> <span class=md-ellipsis> ordered_json </span> </a> </li> <li class=md-nav__item> <a href=../../ordered_map/ class=md-nav__link> <span class=md-ellipsis> ordered_map </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_13> <div class="md-nav__link md-nav__container"> <a href=../../macros/ class="md-nav__link "> <span class=md-ellipsis> macros </span> </a> <label class="md-nav__link " for=__nav_4_13 id=__nav_4_13_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_13_label aria-expanded=false> <label class=md-nav__title for=__nav_4_13> <span class="md-nav__icon md-icon"></span> macros </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../macros/json_assert/ class=md-nav__link> <span class=md-ellipsis> JSON_ASSERT </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_brace_init_copy_semantics/ class=md-nav__link> <span class=md-ellipsis> JSON_BRACE_INIT_COPY_SEMANTICS </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_throw_user/ class=md-nav__link> <span class=md-ellipsis> JSON_CATCH_USER, JSON_THROW_USER, JSON_TRY_USER </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_diagnostics/ class=md-nav__link> <span class=md-ellipsis> JSON_DIAGNOSTICS </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_diagnostic_positions/ class=md-nav__link> <span class=md-ellipsis> JSON_DIAGNOSTIC_POSITIONS </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_disable_enum_serialization/ class=md-nav__link> <span class=md-ellipsis> JSON_DISABLE_ENUM_SERIALIZATION </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_has_cpp_11/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_CPP_11, JSON_HAS_CPP_14, JSON_HAS_CPP_17, JSON_HAS_CPP_20 </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_has_filesystem/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_EXPERIMENTAL_FILESYSTEM, JSON_HAS_FILESYSTEM </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_has_ranges/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_RANGES </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_has_static_rtti/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_STATIC_RTTI </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_has_three_way_comparison/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_THREE_WAY_COMPARISON </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_noexception/ class=md-nav__link> <span class=md-ellipsis> JSON_NOEXCEPTION </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_no_io/ class=md-nav__link> <span class=md-ellipsis> JSON_NO_IO </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_skip_library_version_check/ class=md-nav__link> <span class=md-ellipsis> JSON_SKIP_LIBRARY_VERSION_CHECK </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_skip_unsupported_compiler_check/ class=md-nav__link> <span class=md-ellipsis> JSON_SKIP_UNSUPPORTED_COMPILER_CHECK </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_use_global_udls/ class=md-nav__link> <span class=md-ellipsis> JSON_USE_GLOBAL_UDLS </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_use_implicit_conversions/ class=md-nav__link> <span class=md-ellipsis> JSON_USE_IMPLICIT_CONVERSIONS </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_use_legacy_discarded_value_comparison/ class=md-nav__link> <span class=md-ellipsis> JSON_USE_LEGACY_DISCARDED_VALUE_COMPARISON </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_define_derived_type/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_ONLY_SERIALIZE, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_define_type_intrusive/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_TYPE_INTRUSIVE, NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_TYPE_INTRUSIVE_ONLY_SERIALIZE </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_define_type_non_intrusive/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_define_type_with_names/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_TYPE_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_namespace/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_NAMESPACE </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_namespace_begin/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_NAMESPACE_BEGIN, NLOHMANN_JSON_NAMESPACE_END </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_namespace_no_version/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_NAMESPACE_NO_VERSION </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_serialize_enum/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_SERIALIZE_ENUM </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_serialize_enum_strict/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_SERIALIZE_ENUM_STRICT </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_version_major/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_VERSION_MAJOR, NLOHMANN_JSON_VERSION_MINOR, NLOHMANN_JSON_VERSION_PATCH </span> </a> </li> </ul> </nav> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_5> <div class="md-nav__link md-nav__container"> <a href=../../../community/ class="md-nav__link "> <span class=md-ellipsis> Community </span> </a> <label class="md-nav__link " for=__nav_5 id=__nav_5_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_5_label aria-expanded=false> <label class=md-nav__title for=__nav_5> <span class="md-nav__icon md-icon"></span> Community </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../community/code_of_conduct/ class=md-nav__link> <span class=md-ellipsis> Code of Conduct </span> </a> </li> <li class=md-nav__item> <a href=../../../community/contribution_guidelines/ class=md-nav__link> <span class=md-ellipsis> Contribution Guidelines </span> </a> </li> <li class=md-nav__item> <a href=../../../community/quality_assurance/ class=md-nav__link> <span class=md-ellipsis> Quality assurance </span> </a> </li> <li class=md-nav__item> <a href=../../../community/governance/ class=md-nav__link> <span class=md-ellipsis> Governance </span> </a> </li> <li class=md-nav__item> <a href=../../../community/security_policy/ class=md-nav__link> <span class=md-ellipsis> Security Policy </span> </a> </li> </ul> </nav> </li> </ul> </nav> </div> </div> </div> <div class="md-sidebar md-sidebar--secondary" data-md-component=sidebar data-md-type=toc> <div class=md-sidebar__scrollwrap> <div class=md-sidebar__inner> <nav class="md-nav md-nav--secondary" aria-label="Table of contents"> <label class=md-nav__title for=__toc> <span class="md-nav__icon md-icon"></span> Table of contents </label> <ul class=md-nav__list data-md-component=toc data-md-scrollfix> <li class=md-nav__item> <a href=#notes class=md-nav__link> <span class=md-ellipsis> Notes </span> </a> <nav class=md-nav aria-label=Notes> <ul class=md-nav__list> <li class=md-nav__item> <a href=#default-type class=md-nav__link> <span class=md-ellipsis> Default type </span> </a> </li> <li class=md-nav__item> <a href=#default-behavior class=md-nav__link> <span class=md-ellipsis> Default behavior </span> </a> </li> <li class=md-nav__item> <a href=#limits class=md-nav__link> <span class=md-ellipsis> Limits </span> </a> </li> <li class=md-nav__item> <a href=#storage class=md-nav__link> <span class=md-ellipsis> Storage </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=#examples class=md-nav__link> <span class=md-ellipsis> Examples </span> </a> </li> <li class=md-nav__item> <a href=#version-history class=md-nav__link> <span class=md-ellipsis> Version history </span> </a> </li> </ul> </nav> </div> </div> </div> <div class=md-content data-md-component=content> <article class="md-content__inner md-typeset"> <a href="https://github.com/nlohmann/json/edit/develop/docs/mkdocs/docs/api/basic_json/number_integer_t.md" title="Edit this page" class="md-content__button md-icon" rel="edit"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M10 20H6V4h7v5h5v3.1l2-2V8l-6-6H6c-1.1 0-2 .9-2 2v16c0 1.1.9 2 2 2h4zm10.2-7c.1 0 .3.1.4.2l1.3 1.3c.2.2.2.6 0 .8l-1 1-2.1-2.1 1-1c.1-.1.2-.2.4-.2m0 3.9L14.1 23H12v-2.1l6.1-6.1z"/></svg> </a> <a href="https://github.com/nlohmann/json/raw/develop/docs/mkdocs/docs/api/basic_json/number_integer_t.md" title="View source of this page" class="md-content__button md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M17 18c.56 0 1 .44 1 1s-.44 1-1 1-1-.44-1-1 .44-1 1-1m0-3c-2.73 0-5.06 1.66-6 4 .94 2.34 3.27 4 6 4s5.06-1.66 6-4c-.94-2.34-3.27-4-6-4m0 6.5a2.5 2.5 0 0 1-2.5-2.5 2.5 2.5 0 0 1 2.5-2.5 2.5 2.5 0 0 1 2.5 2.5 2.5 2.5 0 0 1-2.5 2.5M9.27 20H6V4h7v5h5v4.07c.7.08 1.36.25 2 .49V8l-6-6H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h4.5a8.2 8.2 0 0 1-1.23-2"/></svg> </a> <h1 id=nlohmannbasic_jsonnumber_integer_t><small>nlohmann::basic_json::</small>number_integer_t<a class=headerlink href=#nlohmannbasic_jsonnumber_integer_t title="Permanent link">&para;</a></h1> <div class=highlight><pre><span></span><code><span class=k>using</span><span class=w> </span><span class=n>number_integer_t</span><span class=w> </span><span class=o>=</span><span class=w> </span><span class=n>NumberIntegerType</span><span class=p>;</span>
-</code></pre></div> <p>The type used to store <abbr title="JavaScript Object Notation">JSON</abbr> numbers (integers).</p> <p><a href="https://tools.ietf.org/html/rfc8259"><abbr title="Request for Comments">RFC</abbr> 8259</a> describes numbers as follows:</p> <blockquote> <p>The representation of numbers is similar to that used in most programming languages. A number is represented in base 10 using decimal digits. It contains an integer component that may be prefixed with an optional minus sign, which may be followed by a fraction part and/or an exponent part. Leading zeros are not allowed. (...) Numeric values that cannot be represented in the grammar below (such as Infinity and <abbr title="Not a Number">NaN</abbr>) are not permitted.</p> </blockquote> <p>This description includes both integer and floating-point numbers. However, C++ allows more precise storage if it is known whether the number is a signed integer, an unsigned integer, or a floating-point number. Therefore, three different types, <code>number_integer_t</code>, <a href=../number_unsigned_t/ ><code>number_unsigned_t</code></a> and <a href=../number_float_t/ ><code>number_float_t</code></a> are used.</p> <p>To store integer numbers in C++, a type is defined by the template parameter <code>NumberIntegerType</code> which chooses the type to use.</p> <h2 id=notes>Notes<a class=headerlink href=#notes title="Permanent link">&para;</a></h2> <h4 id=default-type>Default type<a class=headerlink href=#default-type title="Permanent link">&para;</a></h4> <p>With the default values for <code>NumberIntegerType</code> (<code>std::int64_t</code>), the default value for <code>number_integer_t</code> is <code class=highlight><span class=n>std</span><span class=o>::</span><span class=kt>int64_t</span></code>.</p> <h4 id=default-behavior>Default behavior<a class=headerlink href=#default-behavior title="Permanent link">&para;</a></h4> <ul> <li>The restrictions about leading zeros are not enforced in C++. Instead, leading zeros in integer literals lead to an interpretation as an octal number. Internally, the value will be stored as a decimal number. For instance, the C++ integer literal <code>010</code> will be serialized to <code>8</code>. During deserialization, leading zeros yield an error.</li> <li>Not-a-number (<abbr title="Not a Number">NaN</abbr>) values will be serialized to <code>null</code>.</li> </ul> <h4 id=limits>Limits<a class=headerlink href=#limits title="Permanent link">&para;</a></h4> <p><a href="https://tools.ietf.org/html/rfc8259"><abbr title="Request for Comments">RFC</abbr> 8259</a> specifies:</p> <blockquote> <p>An implementation may set limits on the range and precision of numbers.</p> </blockquote> <p>When the default type is used, the maximal integer number that can be stored is <code>9223372036854775807</code> (INT64_MAX) and the minimal integer number that can be stored is <code>-9223372036854775808</code> (INT64_MIN). Integer numbers that are out of range will yield over/underflow when used in a constructor. During deserialization, too large or small integer numbers will automatically be stored as <a href=../number_unsigned_t/ ><code>number_unsigned_t</code></a> or <a href=../number_float_t/ ><code>number_float_t</code></a>.</p> <p><a href="https://tools.ietf.org/html/rfc8259"><abbr title="Request for Comments">RFC</abbr> 8259</a> further states:</p> <blockquote> <p>Note that when such software is used, numbers that are integers and are in the range <span class=arithmatex><span class=MathJax_Preview>[-2^{53}+1, 2^{53}-1]</span><script type=math/tex>[-2^{53}+1, 2^{53}-1]</script></span> are interoperable in the sense that implementations will agree exactly on their numeric values.</p> </blockquote> <p>As this range is a subrange of the exactly supported range [INT64_MIN, INT64_MAX], this class's integer type is interoperable.</p> <h4 id=storage>Storage<a class=headerlink href=#storage title="Permanent link">&para;</a></h4> <p>Integer number values are stored directly inside a <code>basic_json</code> type.</p> <h2 id=examples>Examples<a class=headerlink href=#examples title="Permanent link">&para;</a></h2> <details class=example> <summary>Example</summary> <p>The following code shows that <code>number_integer_t</code> is by default, a typedef to <code class=highlight><span class=n>std</span><span class=o>::</span><span class=kt>int64_t</span></code>.</p> <div class=highlight><pre><span></span><code><span class=cp>#include</span><span class=w> </span><span class=cpf>&lt;iostream&gt;</span>
+</code></pre></div> <p>The type used to store <abbr title="JavaScript Object Notation">JSON</abbr> numbers (integers).</p> <p><a href="https://tools.ietf.org/html/rfc8259"><abbr title="Request for Comments">RFC</abbr> 8259</a> describes numbers as follows:</p> <blockquote> <p>The representation of numbers is similar to that used in most programming languages. A number is represented in base 10 using decimal digits. It contains an integer component that may be prefixed with an optional minus sign, which may be followed by a fraction part and/or an exponent part. Leading zeros are not allowed. (...) Numeric values that cannot be represented in the grammar below (such as Infinity and <abbr title="Not a Number">NaN</abbr>) are not permitted.</p> </blockquote> <p>This description includes both integer and floating-point numbers. However, C++ allows more precise storage if it is known whether the number is a signed integer, an unsigned integer, or a floating-point number. Therefore, three different types, <code>number_integer_t</code>, <a href=../number_unsigned_t/ ><code>number_unsigned_t</code></a> and <a href=../number_float_t/ ><code>number_float_t</code></a> are used.</p> <p>To store integer numbers in C++, a type is defined by the template parameter <code>NumberIntegerType</code> which chooses the type to use.</p> <h2 id=notes>Notes<a class=headerlink href=#notes title="Permanent link">&para;</a></h2> <h4 id=default-type>Default type<a class=headerlink href=#default-type title="Permanent link">&para;</a></h4> <p>With the default values for <code>NumberIntegerType</code> (<code>std::int64_t</code>), the default value for <code>number_integer_t</code> is <code class=highlight><span class=n>std</span><span class=o>::</span><span class=kt>int64_t</span></code>.</p> <h4 id=default-behavior>Default behavior<a class=headerlink href=#default-behavior title="Permanent link">&para;</a></h4> <ul> <li>The restrictions about leading zeros are not enforced in C++. Instead, leading zeros in integer literals lead to an interpretation as an octal number. Internally, the value will be stored as a decimal number. For instance, the C++ integer literal <code>010</code> will be serialized to <code>8</code>. During deserialization, leading zeros yield an error.</li> </ul> <h4 id=limits>Limits<a class=headerlink href=#limits title="Permanent link">&para;</a></h4> <p><a href="https://tools.ietf.org/html/rfc8259"><abbr title="Request for Comments">RFC</abbr> 8259</a> specifies:</p> <blockquote> <p>An implementation may set limits on the range and precision of numbers.</p> </blockquote> <p>When the default type is used, the maximal integer number that can be stored is <code>9223372036854775807</code> (INT64_MAX) and the minimal integer number that can be stored is <code>-9223372036854775808</code> (INT64_MIN). Integer numbers that are out of range will yield over/underflow when used in a constructor. During deserialization, too large or small integer numbers will automatically be stored as <a href=../number_unsigned_t/ ><code>number_unsigned_t</code></a> or <a href=../number_float_t/ ><code>number_float_t</code></a>.</p> <p><a href="https://tools.ietf.org/html/rfc8259"><abbr title="Request for Comments">RFC</abbr> 8259</a> further states:</p> <blockquote> <p>Note that when such software is used, numbers that are integers and are in the range <span class=arithmatex><span class=MathJax_Preview>[-2^{53}+1, 2^{53}-1]</span><script type=math/tex>[-2^{53}+1, 2^{53}-1]</script></span> are interoperable in the sense that implementations will agree exactly on their numeric values.</p> </blockquote> <p>As this range is a subrange of the exactly supported range [INT64_MIN, INT64_MAX], this class's integer type is interoperable.</p> <h4 id=storage>Storage<a class=headerlink href=#storage title="Permanent link">&para;</a></h4> <p>Integer number values are stored directly inside a <code>basic_json</code> type.</p> <h2 id=examples>Examples<a class=headerlink href=#examples title="Permanent link">&para;</a></h2> <details class=example> <summary>Example</summary> <p>The following code shows that <code>number_integer_t</code> is by default, a typedef to <code class=highlight><span class=n>std</span><span class=o>::</span><span class=kt>int64_t</span></code>.</p> <div class=highlight><pre><span></span><code><span class=cp>#include</span><span class=w> </span><span class=cpf>&lt;iostream&gt;</span>
 <span class=cp>#include</span><span class=w> </span><span class=cpf>&lt;iomanip&gt;</span>
 <span class=cp>#include</span><span class=w> </span><span class=cpf>&lt;nlohmann/json.hpp&gt;</span>
 
@@ -10,4 +10,4 @@
 <span class=w>    </span><span class=n>std</span><span class=o>::</span><span class=n>cout</span><span class=w> </span><span class=o>&lt;&lt;</span><span class=w> </span><span class=n>std</span><span class=o>::</span><span class=n>boolalpha</span><span class=w> </span><span class=o>&lt;&lt;</span><span class=w> </span><span class=n>std</span><span class=o>::</span><span class=n>is_same</span><span class=o>&lt;</span><span class=n>std</span><span class=o>::</span><span class=kt>int64_t</span><span class=p>,</span><span class=w> </span><span class=n>json</span><span class=o>::</span><span class=n>number_integer_t</span><span class=o>&gt;::</span><span class=n>value</span><span class=w> </span><span class=o>&lt;&lt;</span><span class=w> </span><span class=n>std</span><span class=o>::</span><span class=n>endl</span><span class=p>;</span>
 <span class=p>}</span>
 </code></pre></div> <p>Output:</p> <div class=highlight><pre><span></span><code><span class=kc>true</span>
-</code></pre></div> </details> <h2 id=version-history>Version history<a class=headerlink href=#version-history title="Permanent link">&para;</a></h2> <ul> <li>Added in version 1.0.0.</li> </ul> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 23, 2026 11:16:18 UTC">June 23, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
+</code></pre></div> </details> <h2 id=version-history>Version history<a class=headerlink href=#version-history title="Permanent link">&para;</a></h2> <ul> <li>Added in version 1.0.0.</li> </ul> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 29, 2026 20:15:18 UTC">June 29, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
diff --git a/api/basic_json/number_unsigned_t/index.html b/api/basic_json/number_unsigned_t/index.html
index 1593076..7ef3911 100644
--- a/api/basic_json/number_unsigned_t/index.html
+++ b/api/basic_json/number_unsigned_t/index.html
@@ -1,5 +1,5 @@
 <!doctype html><html lang=en class=no-js> <head><meta charset=utf-8><meta name=viewport content="width=device-width,initial-scale=1"><meta name=author content="Niels Lohmann"><link href="https://json.nlohmann.me/api/basic_json/number_unsigned_t/" rel="canonical"><link href=../number_integer_t/ rel=prev><link href=../object/ rel=next><link rel=icon href=../../../assets/images/favicon.png><meta name=generator content="mkdocs-1.6.1, mkdocs-material-9.7.6"><title>number_unsigned_t - JSON for Modern C++</title><link rel=stylesheet href=../../../assets/stylesheets/main.484c7ddc.min.css><link rel=stylesheet href=../../../assets/stylesheets/palette.ab4e12ef.min.css><link rel="stylesheet" href="../../../assets/external/fonts.googleapis.com/css.61a430c9.css"><style>:root{--md-text-font:"Roboto";--md-code-font:"JetBrains Mono"}</style><link rel=stylesheet href=../../../css/custom.css><script>__md_scope=new URL("../../..",location),__md_hash=e=>[...e].reduce(((e,_)=>(e<<5)-e+_.charCodeAt(0)),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script></head> <body dir=ltr data-md-color-scheme=default data-md-color-primary=indigo data-md-color-accent=indigo> <input class=md-toggle data-md-toggle=drawer type=checkbox id=__drawer autocomplete=off> <input class=md-toggle data-md-toggle=search type=checkbox id=__search autocomplete=off> <label class=md-overlay for=__drawer></label> <div data-md-component=skip> <a href=#nlohmannbasic_jsonnumber_unsigned_t class=md-skip> Skip to content </a> </div> <div data-md-component=announce> </div> <header class=md-header data-md-component=header> <nav class="md-header__inner md-grid" aria-label=Header> <a href=../../.. title="JSON for Modern C++" class="md-header__button md-logo" aria-label="JSON for Modern C++" data-md-component=logo> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54"/></svg> </a> <label class="md-header__button md-icon" for=__drawer> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M3 6h18v2H3zm0 5h18v2H3zm0 5h18v2H3z"/></svg> </label> <div class=md-header__title data-md-component=header-title> <div class=md-header__ellipsis> <div class=md-header__topic> <span class=md-ellipsis> JSON for Modern C++ </span> </div> <div class=md-header__topic data-md-component=header-topic> <span class=md-ellipsis> number_unsigned_t </span> </div> </div> </div> <form class=md-header__option data-md-component=palette> <input class=md-option data-md-color-media="(prefers-color-scheme: light)" data-md-color-scheme=default data-md-color-primary=indigo data-md-color-accent=indigo aria-label="Switch to dark mode" type=radio name=__palette id=__palette_0> <label class="md-header__button md-icon" title="Switch to dark mode" for=__palette_1 hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a4 4 0 0 0-4 4 4 4 0 0 0 4 4 4 4 0 0 0 4-4 4 4 0 0 0-4-4m0 10a6 6 0 0 1-6-6 6 6 0 0 1 6-6 6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12z"/></svg> </label> <input class=md-option data-md-color-media="(prefers-color-scheme: dark)" data-md-color-scheme=slate data-md-color-primary=indigo data-md-color-accent=indigo aria-label="Switch to light mode" type=radio name=__palette id=__palette_1> <label class="md-header__button md-icon" title="Switch to light mode" for=__palette_0 hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 18c-.89 0-1.74-.2-2.5-.55C11.56 16.5 13 14.42 13 12s-1.44-4.5-3.5-5.45C10.26 6.2 11.11 6 12 6a6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12z"/></svg> </label> </form> <script>var palette=__md_get("__palette");if(palette&&palette.color){if("(prefers-color-scheme)"===palette.color.media){var media=matchMedia("(prefers-color-scheme: light)"),input=document.querySelector(media.matches?"[data-md-color-media='(prefers-color-scheme: light)']":"[data-md-color-media='(prefers-color-scheme: dark)']");palette.color.media=input.getAttribute("data-md-color-media"),palette.color.scheme=input.getAttribute("data-md-color-scheme"),palette.color.primary=input.getAttribute("data-md-color-primary"),palette.color.accent=input.getAttribute("data-md-color-accent")}for(var[key,value]of Object.entries(palette.color))document.body.setAttribute("data-md-color-"+key,value)}</script> <label class="md-header__button md-icon" for=__search> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg> </label> <div class=md-search data-md-component=search role=dialog> <label class=md-search__overlay for=__search></label> <div class=md-search__inner role=search> <form class=md-search__form name=search> <input type=text class=md-search__input name=query aria-label=Search placeholder=Search autocapitalize=off autocorrect=off autocomplete=off spellcheck=false data-md-component=search-query required> <label class="md-search__icon md-icon" for=__search> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11z"/></svg> </label> <nav class=md-search__options aria-label=Search> <button type=reset class="md-search__icon md-icon" title=Clear aria-label=Clear tabindex=-1> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z"/></svg> </button> </nav> </form> <div class=md-search__output> <div class=md-search__scrollwrap tabindex=0 data-md-scrollfix> <div class=md-search-result data-md-component=search-result> <div class=md-search-result__meta> Initializing search </div> <ol class=md-search-result__list role=presentation></ol> </div> </div> </div> </div> </div> <div class=md-header__source> <a href="https://github.com/nlohmann/json" title="Go to repository" class="md-source" data-md-component="source"> <div class="md-source__icon md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </div> <div class=md-source__repository> nlohmann/json </div> </a> </div> </nav> </header> <div class=md-container data-md-component=container> <nav class=md-tabs aria-label=Tabs data-md-component=tabs> <div class=md-grid> <ul class=md-tabs__list> <li class=md-tabs__item> <a href=../../.. class=md-tabs__link> Home </a> </li> <li class=md-tabs__item> <a href=../../../features/arbitrary_types/ class=md-tabs__link> Features </a> </li> <li class=md-tabs__item> <a href=../../../integration/ class=md-tabs__link> Integration </a> </li> <li class="md-tabs__item md-tabs__item--active"> <a href=../ class=md-tabs__link> API Documentation </a> </li> <li class=md-tabs__item> <a href=../../../community/ class=md-tabs__link> Community </a> </li> </ul> </div> </nav> <main class=md-main data-md-component=main> <div class="md-main__inner md-grid"> <div class="md-sidebar md-sidebar--primary" data-md-component=sidebar data-md-type=navigation> <div class=md-sidebar__scrollwrap> <div class=md-sidebar__inner> <nav class="md-nav md-nav--primary md-nav--lifted" aria-label=Navigation data-md-level=0> <label class=md-nav__title for=__drawer> <a href=../../.. title="JSON for Modern C++" class="md-nav__button md-logo" aria-label="JSON for Modern C++" data-md-component=logo> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54"/></svg> </a> JSON for Modern C++ </label> <div class=md-nav__source> <a href="https://github.com/nlohmann/json" title="Go to repository" class="md-source" data-md-component="source"> <div class="md-source__icon md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </div> <div class=md-source__repository> nlohmann/json </div> </a> </div> <ul class=md-nav__list data-md-scrollfix> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_1> <div class="md-nav__link md-nav__container"> <a href=../../.. class="md-nav__link "> <span class=md-ellipsis> Home </span> </a> <label class="md-nav__link " for=__nav_1 id=__nav_1_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_1_label aria-expanded=false> <label class=md-nav__title for=__nav_1> <span class="md-nav__icon md-icon"></span> Home </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../home/license/ class=md-nav__link> <span class=md-ellipsis> License </span> </a> </li> <li class=md-nav__item> <a href=../../../home/faq/ class=md-nav__link> <span class=md-ellipsis> FAQ </span> </a> </li> <li class=md-nav__item> <a href=../../../home/exceptions/ class=md-nav__link> <span class=md-ellipsis> Exceptions </span> </a> </li> <li class=md-nav__item> <a href=../../../home/releases/ class=md-nav__link> <span class=md-ellipsis> Releases </span> </a> </li> <li class=md-nav__item> <a href=../../../home/design_goals/ class=md-nav__link> <span class=md-ellipsis> Design goals </span> </a> </li> <li class=md-nav__item> <a href=../../../home/architecture/ class=md-nav__link> <span class=md-ellipsis> Architecture </span> </a> </li> <li class=md-nav__item> <a href=../../../home/customers/ class=md-nav__link> <span class=md-ellipsis> Customers </span> </a> </li> <li class=md-nav__item> <a href=../../../home/sponsors/ class=md-nav__link> <span class=md-ellipsis> Sponsors </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2> <label class=md-nav__link for=__nav_2 id=__nav_2_label tabindex=0> <span class=md-ellipsis> Features </span> <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_2_label aria-expanded=false> <label class=md-nav__title for=__nav_2> <span class="md-nav__icon md-icon"></span> Features </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/arbitrary_types/ class=md-nav__link> <span class=md-ellipsis> Arbitrary Type Conversions </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_2> <div class="md-nav__link md-nav__container"> <a href=../../../features/binary_formats/ class="md-nav__link "> <span class=md-ellipsis> Binary Formats </span> </a> <label class="md-nav__link " for=__nav_2_2 id=__nav_2_2_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_2_label aria-expanded=false> <label class=md-nav__title for=__nav_2_2> <span class="md-nav__icon md-icon"></span> Binary Formats </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/binary_formats/bjdata/ class=md-nav__link> <span class=md-ellipsis> BJData </span> </a> </li> <li class=md-nav__item> <a href=../../../features/binary_formats/bson/ class=md-nav__link> <span class=md-ellipsis> BSON </span> </a> </li> <li class=md-nav__item> <a href=../../../features/binary_formats/cbor/ class=md-nav__link> <span class=md-ellipsis> CBOR </span> </a> </li> <li class=md-nav__item> <a href=../../../features/binary_formats/messagepack/ class=md-nav__link> <span class=md-ellipsis> MessagePack </span> </a> </li> <li class=md-nav__item> <a href=../../../features/binary_formats/ubjson/ class=md-nav__link> <span class=md-ellipsis> UBJSON </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../../features/binary_values/ class=md-nav__link> <span class=md-ellipsis> Binary Values </span> </a> </li> <li class=md-nav__item> <a href=../../../features/comments/ class=md-nav__link> <span class=md-ellipsis> Comments </span> </a> </li> <li class=md-nav__item> <a href=../../../features/trailing_commas/ class=md-nav__link> <span class=md-ellipsis> Trailing Commas </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_6> <div class="md-nav__link md-nav__container"> <a href=../../../features/element_access/ class="md-nav__link "> <span class=md-ellipsis> Element Access </span> </a> <label class="md-nav__link " for=__nav_2_6 id=__nav_2_6_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_6_label aria-expanded=false> <label class=md-nav__title for=__nav_2_6> <span class="md-nav__icon md-icon"></span> Element Access </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/element_access/unchecked_access/ class=md-nav__link> <span class=md-ellipsis> Unchecked access: operator[] </span> </a> </li> <li class=md-nav__item> <a href=../../../features/element_access/checked_access/ class=md-nav__link> <span class=md-ellipsis> Checked access: at </span> </a> </li> <li class=md-nav__item> <a href=../../../features/element_access/default_value/ class=md-nav__link> <span class=md-ellipsis> Access with default value: value </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../../features/iterators/ class=md-nav__link> <span class=md-ellipsis> Iterators </span> </a> </li> <li class=md-nav__item> <a href=../../../features/json_pointer/ class=md-nav__link> <span class=md-ellipsis> JSON Pointer </span> </a> </li> <li class=md-nav__item> <a href=../../../features/json_patch/ class=md-nav__link> <span class=md-ellipsis> JSON Patch and Diff </span> </a> </li> <li class=md-nav__item> <a href=../../../features/merge_patch/ class=md-nav__link> <span class=md-ellipsis> JSON Merge Patch </span> </a> </li> <li class=md-nav__item> <a href=../../../features/modules/ class=md-nav__link> <span class=md-ellipsis> Modules </span> </a> </li> <li class=md-nav__item> <a href=../../../features/namespace/ class=md-nav__link> <span class=md-ellipsis> nlohmann Namespace </span> </a> </li> <li class=md-nav__item> <a href=../../../features/object_order/ class=md-nav__link> <span class=md-ellipsis> Object Order </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_14> <div class="md-nav__link md-nav__container"> <a href=../../../features/parsing/ class="md-nav__link "> <span class=md-ellipsis> Parsing </span> </a> <label class="md-nav__link " for=__nav_2_14 id=__nav_2_14_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_14_label aria-expanded=false> <label class=md-nav__title for=__nav_2_14> <span class="md-nav__icon md-icon"></span> Parsing </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/parsing/json_lines/ class=md-nav__link> <span class=md-ellipsis> JSON Lines </span> </a> </li> <li class=md-nav__item> <a href=../../../features/parsing/parse_exceptions/ class=md-nav__link> <span class=md-ellipsis> Parsing and Exceptions </span> </a> </li> <li class=md-nav__item> <a href=../../../features/parsing/parser_callbacks/ class=md-nav__link> <span class=md-ellipsis> Parser Callbacks </span> </a> </li> <li class=md-nav__item> <a href=../../../features/parsing/sax_interface/ class=md-nav__link> <span class=md-ellipsis> SAX Interface </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../../features/assertions/ class=md-nav__link> <span class=md-ellipsis> Runtime Assertions </span> </a> </li> <li class=md-nav__item> <a href=../../../features/enum_conversion/ class=md-nav__link> <span class=md-ellipsis> Specializing enum conversion </span> </a> </li> <li class=md-nav__item> <a href=../../../features/macros/ class=md-nav__link> <span class=md-ellipsis> Supported Macros </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_18> <div class="md-nav__link md-nav__container"> <a href=../../../features/types/ class="md-nav__link "> <span class=md-ellipsis> Types </span> </a> <label class="md-nav__link " for=__nav_2_18 id=__nav_2_18_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_18_label aria-expanded=false> <label class=md-nav__title for=__nav_2_18> <span class="md-nav__icon md-icon"></span> Types </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/types/number_handling/ class=md-nav__link> <span class=md-ellipsis> Number Handling </span> </a> </li> </ul> </nav> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_3> <div class="md-nav__link md-nav__container"> <a href=../../../integration/ class="md-nav__link "> <span class=md-ellipsis> Integration </span> </a> <label class="md-nav__link " for=__nav_3 id=__nav_3_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_3_label aria-expanded=false> <label class=md-nav__title for=__nav_3> <span class="md-nav__icon md-icon"></span> Integration </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../integration/migration_guide/ class=md-nav__link> <span class=md-ellipsis> Migration Guide </span> </a> </li> <li class=md-nav__item> <a href=../../../integration/cmake/ class=md-nav__link> <span class=md-ellipsis> CMake </span> </a> </li> <li class=md-nav__item> <a href=../../../integration/package_managers/ class=md-nav__link> <span class=md-ellipsis> Package Managers </span> </a> </li> <li class=md-nav__item> <a href=../../../integration/pkg-config/ class=md-nav__link> <span class=md-ellipsis> Pkg-config </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--active md-nav__item--section md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4 checked> <label class=md-nav__link for=__nav_4 id=__nav_4_label tabindex> <span class=md-ellipsis> API Documentation </span> <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_4_label aria-expanded=true> <label class=md-nav__title for=__nav_4> <span class="md-nav__icon md-icon"></span> API Documentation </label> <ul class=md-nav__list data-md-scrollfix> <li class="md-nav__item md-nav__item--active md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_1 checked> <div class="md-nav__link md-nav__container"> <a href=../ class="md-nav__link "> <span class=md-ellipsis> basic_json </span> </a> <label class="md-nav__link " for=__nav_4_1 id=__nav_4_1_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_1_label aria-expanded=true> <label class=md-nav__title for=__nav_4_1> <span class="md-nav__icon md-icon"></span> basic_json </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../basic_json/ class=md-nav__link> <span class=md-ellipsis> (Constructor) </span> </a> </li> <li class=md-nav__item> <a href=../~basic_json/ class=md-nav__link> <span class=md-ellipsis> (Destructor) </span> </a> </li> <li class=md-nav__item> <a href=../accept/ class=md-nav__link> <span class=md-ellipsis> accept </span> </a> </li> <li class=md-nav__item> <a href=../array/ class=md-nav__link> <span class=md-ellipsis> array </span> </a> </li> <li class=md-nav__item> <a href=../array_t/ class=md-nav__link> <span class=md-ellipsis> array_t </span> </a> </li> <li class=md-nav__item> <a href=../at/ class=md-nav__link> <span class=md-ellipsis> at </span> </a> </li> <li class=md-nav__item> <a href=../back/ class=md-nav__link> <span class=md-ellipsis> back </span> </a> </li> <li class=md-nav__item> <a href=../begin/ class=md-nav__link> <span class=md-ellipsis> begin </span> </a> </li> <li class=md-nav__item> <a href=../binary/ class=md-nav__link> <span class=md-ellipsis> binary </span> </a> </li> <li class=md-nav__item> <a href=../binary_t/ class=md-nav__link> <span class=md-ellipsis> binary_t </span> </a> </li> <li class=md-nav__item> <a href=../boolean_t/ class=md-nav__link> <span class=md-ellipsis> boolean_t </span> </a> </li> <li class=md-nav__item> <a href=../cbegin/ class=md-nav__link> <span class=md-ellipsis> cbegin </span> </a> </li> <li class=md-nav__item> <a href=../cbor_tag_handler_t/ class=md-nav__link> <span class=md-ellipsis> cbor_tag_handler_t </span> </a> </li> <li class=md-nav__item> <a href=../cend/ class=md-nav__link> <span class=md-ellipsis> cend </span> </a> </li> <li class=md-nav__item> <a href=../clear/ class=md-nav__link> <span class=md-ellipsis> clear </span> </a> </li> <li class=md-nav__item> <a href=../contains/ class=md-nav__link> <span class=md-ellipsis> contains </span> </a> </li> <li class=md-nav__item> <a href=../count/ class=md-nav__link> <span class=md-ellipsis> count </span> </a> </li> <li class=md-nav__item> <a href=../crbegin/ class=md-nav__link> <span class=md-ellipsis> crbegin </span> </a> </li> <li class=md-nav__item> <a href=../crend/ class=md-nav__link> <span class=md-ellipsis> crend </span> </a> </li> <li class=md-nav__item> <a href=../default_object_comparator_t/ class=md-nav__link> <span class=md-ellipsis> default_object_comparator_t </span> </a> </li> <li class=md-nav__item> <a href=../diff/ class=md-nav__link> <span class=md-ellipsis> diff </span> </a> </li> <li class=md-nav__item> <a href=../dump/ class=md-nav__link> <span class=md-ellipsis> dump </span> </a> </li> <li class=md-nav__item> <a href=../emplace/ class=md-nav__link> <span class=md-ellipsis> emplace </span> </a> </li> <li class=md-nav__item> <a href=../emplace_back/ class=md-nav__link> <span class=md-ellipsis> emplace_back </span> </a> </li> <li class=md-nav__item> <a href=../empty/ class=md-nav__link> <span class=md-ellipsis> empty </span> </a> </li> <li class=md-nav__item> <a href=../end/ class=md-nav__link> <span class=md-ellipsis> end </span> </a> </li> <li class=md-nav__item> <a href=../end_pos/ class=md-nav__link> <span class=md-ellipsis> end_pos </span> </a> </li> <li class=md-nav__item> <a href=../erase/ class=md-nav__link> <span class=md-ellipsis> erase </span> </a> </li> <li class=md-nav__item> <a href=../error_handler_t/ class=md-nav__link> <span class=md-ellipsis> error_handler_t </span> </a> </li> <li class=md-nav__item> <a href=../exception/ class=md-nav__link> <span class=md-ellipsis> exception </span> </a> </li> <li class=md-nav__item> <a href=../find/ class=md-nav__link> <span class=md-ellipsis> find </span> </a> </li> <li class=md-nav__item> <a href=../flatten/ class=md-nav__link> <span class=md-ellipsis> flatten </span> </a> </li> <li class=md-nav__item> <a href=../from_bjdata/ class=md-nav__link> <span class=md-ellipsis> from_bjdata </span> </a> </li> <li class=md-nav__item> <a href=../from_bson/ class=md-nav__link> <span class=md-ellipsis> from_bson </span> </a> </li> <li class=md-nav__item> <a href=../from_cbor/ class=md-nav__link> <span class=md-ellipsis> from_cbor </span> </a> </li> <li class=md-nav__item> <a href=../from_msgpack/ class=md-nav__link> <span class=md-ellipsis> from_msgpack </span> </a> </li> <li class=md-nav__item> <a href=../from_ubjson/ class=md-nav__link> <span class=md-ellipsis> from_ubjson </span> </a> </li> <li class=md-nav__item> <a href=../front/ class=md-nav__link> <span class=md-ellipsis> front </span> </a> </li> <li class=md-nav__item> <a href=../get/ class=md-nav__link> <span class=md-ellipsis> get </span> </a> </li> <li class=md-nav__item> <a href=../get_allocator/ class=md-nav__link> <span class=md-ellipsis> get_allocator </span> </a> </li> <li class=md-nav__item> <a href=../get_binary/ class=md-nav__link> <span class=md-ellipsis> get_binary </span> </a> </li> <li class=md-nav__item> <a href=../get_ptr/ class=md-nav__link> <span class=md-ellipsis> get_ptr </span> </a> </li> <li class=md-nav__item> <a href=../get_ref/ class=md-nav__link> <span class=md-ellipsis> get_ref </span> </a> </li> <li class=md-nav__item> <a href=../get_to/ class=md-nav__link> <span class=md-ellipsis> get_to </span> </a> </li> <li class=md-nav__item> <a href=../std_hash/ class=md-nav__link> <span class=md-ellipsis> std::hash&lt;basic_json&gt; </span> </a> </li> <li class=md-nav__item> <a href=../input_format_t/ class=md-nav__link> <span class=md-ellipsis> input_format_t </span> </a> </li> <li class=md-nav__item> <a href=../insert/ class=md-nav__link> <span class=md-ellipsis> insert </span> </a> </li> <li class=md-nav__item> <a href=../invalid_iterator/ class=md-nav__link> <span class=md-ellipsis> invalid_iterator </span> </a> </li> <li class=md-nav__item> <a href=../is_array/ class=md-nav__link> <span class=md-ellipsis> is_array </span> </a> </li> <li class=md-nav__item> <a href=../is_binary/ class=md-nav__link> <span class=md-ellipsis> is_binary </span> </a> </li> <li class=md-nav__item> <a href=../is_boolean/ class=md-nav__link> <span class=md-ellipsis> is_boolean </span> </a> </li> <li class=md-nav__item> <a href=../is_discarded/ class=md-nav__link> <span class=md-ellipsis> is_discarded </span> </a> </li> <li class=md-nav__item> <a href=../is_null/ class=md-nav__link> <span class=md-ellipsis> is_null </span> </a> </li> <li class=md-nav__item> <a href=../is_number/ class=md-nav__link> <span class=md-ellipsis> is_number </span> </a> </li> <li class=md-nav__item> <a href=../is_number_float/ class=md-nav__link> <span class=md-ellipsis> is_number_float </span> </a> </li> <li class=md-nav__item> <a href=../is_number_integer/ class=md-nav__link> <span class=md-ellipsis> is_number_integer </span> </a> </li> <li class=md-nav__item> <a href=../is_number_unsigned/ class=md-nav__link> <span class=md-ellipsis> is_number_unsigned </span> </a> </li> <li class=md-nav__item> <a href=../is_object/ class=md-nav__link> <span class=md-ellipsis> is_object </span> </a> </li> <li class=md-nav__item> <a href=../is_primitive/ class=md-nav__link> <span class=md-ellipsis> is_primitive </span> </a> </li> <li class=md-nav__item> <a href=../is_string/ class=md-nav__link> <span class=md-ellipsis> is_string </span> </a> </li> <li class=md-nav__item> <a href=../is_structured/ class=md-nav__link> <span class=md-ellipsis> is_structured </span> </a> </li> <li class=md-nav__item> <a href=../items/ class=md-nav__link> <span class=md-ellipsis> items </span> </a> </li> <li class=md-nav__item> <a href=../json_base_class_t/ class=md-nav__link> <span class=md-ellipsis> json_base_class_t </span> </a> </li> <li class=md-nav__item> <a href=../json_serializer/ class=md-nav__link> <span class=md-ellipsis> json_serializer </span> </a> </li> <li class=md-nav__item> <a href=../max_size/ class=md-nav__link> <span class=md-ellipsis> max_size </span> </a> </li> <li class=md-nav__item> <a href=../meta/ class=md-nav__link> <span class=md-ellipsis> meta </span> </a> </li> <li class=md-nav__item> <a href=../merge_patch/ class=md-nav__link> <span class=md-ellipsis> merge_patch </span> </a> </li> <li class=md-nav__item> <a href=../number_float_t/ class=md-nav__link> <span class=md-ellipsis> number_float_t </span> </a> </li> <li class=md-nav__item> <a href=../number_integer_t/ class=md-nav__link> <span class=md-ellipsis> number_integer_t </span> </a> </li> <li class="md-nav__item md-nav__item--active"> <input class="md-nav__toggle md-toggle" type=checkbox id=__toc> <label class="md-nav__link md-nav__link--active" for=__toc> <span class=md-ellipsis> number_unsigned_t </span> <span class="md-nav__icon md-icon"></span> </label> <a href=./ class="md-nav__link md-nav__link--active"> <span class=md-ellipsis> number_unsigned_t </span> </a> <nav class="md-nav md-nav--secondary" aria-label="Table of contents"> <label class=md-nav__title for=__toc> <span class="md-nav__icon md-icon"></span> Table of contents </label> <ul class=md-nav__list data-md-component=toc data-md-scrollfix> <li class=md-nav__item> <a href=#notes class=md-nav__link> <span class=md-ellipsis> Notes </span> </a> <nav class=md-nav aria-label=Notes> <ul class=md-nav__list> <li class=md-nav__item> <a href=#default-type class=md-nav__link> <span class=md-ellipsis> Default type </span> </a> </li> <li class=md-nav__item> <a href=#default-behavior class=md-nav__link> <span class=md-ellipsis> Default behavior </span> </a> </li> <li class=md-nav__item> <a href=#limits class=md-nav__link> <span class=md-ellipsis> Limits </span> </a> </li> <li class=md-nav__item> <a href=#storage class=md-nav__link> <span class=md-ellipsis> Storage </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=#examples class=md-nav__link> <span class=md-ellipsis> Examples </span> </a> </li> <li class=md-nav__item> <a href=#version-history class=md-nav__link> <span class=md-ellipsis> Version history </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../object/ class=md-nav__link> <span class=md-ellipsis> object </span> </a> </li> <li class=md-nav__item> <a href=../object_comparator_t/ class=md-nav__link> <span class=md-ellipsis> object_comparator_t </span> </a> </li> <li class=md-nav__item> <a href=../object_t/ class=md-nav__link> <span class=md-ellipsis> object_t </span> </a> </li> <li class=md-nav__item> <a href=../operator_ValueType/ class=md-nav__link> <span class=md-ellipsis> operator ValueType </span> </a> </li> <li class=md-nav__item> <a href=../operator_value_t/ class=md-nav__link> <span class=md-ellipsis> operator value_t </span> </a> </li> <li class=md-nav__item> <a href=../operator%5B%5D/ class=md-nav__link> <span class=md-ellipsis> operator[] </span> </a> </li> <li class=md-nav__item> <a href=../operator%3D/ class=md-nav__link> <span class=md-ellipsis> operator= </span> </a> </li> <li class=md-nav__item> <a href=../operator%2B%3D/ class=md-nav__link> <span class=md-ellipsis> operator+= </span> </a> </li> <li class=md-nav__item> <a href=../operator_eq/ class=md-nav__link> <span class=md-ellipsis> operator== </span> </a> </li> <li class=md-nav__item> <a href=../operator_ne/ class=md-nav__link> <span class=md-ellipsis> operator!= </span> </a> </li> <li class=md-nav__item> <a href=../operator_lt/ class=md-nav__link> <span class=md-ellipsis> operator< </span> </a> </li> <li class=md-nav__item> <a href=../operator_gt/ class=md-nav__link> <span class=md-ellipsis> operator> </span> </a> </li> <li class=md-nav__item> <a href=../operator_le/ class=md-nav__link> <span class=md-ellipsis> operator<= </span> </a> </li> <li class=md-nav__item> <a href=../operator_ge/ class=md-nav__link> <span class=md-ellipsis> operator>= </span> </a> </li> <li class=md-nav__item> <a href=../operator_spaceship/ class=md-nav__link> <span class=md-ellipsis> operator<=> </span> </a> </li> <li class=md-nav__item> <a href=../out_of_range/ class=md-nav__link> <span class=md-ellipsis> out_of_range </span> </a> </li> <li class=md-nav__item> <a href=../other_error/ class=md-nav__link> <span class=md-ellipsis> other_error </span> </a> </li> <li class=md-nav__item> <a href=../parse/ class=md-nav__link> <span class=md-ellipsis> parse </span> </a> </li> <li class=md-nav__item> <a href=../parse_error/ class=md-nav__link> <span class=md-ellipsis> parse_error </span> </a> </li> <li class=md-nav__item> <a href=../parse_event_t/ class=md-nav__link> <span class=md-ellipsis> parse_event_t </span> </a> </li> <li class=md-nav__item> <a href=../parser_callback_t/ class=md-nav__link> <span class=md-ellipsis> parser_callback_t </span> </a> </li> <li class=md-nav__item> <a href=../patch/ class=md-nav__link> <span class=md-ellipsis> patch </span> </a> </li> <li class=md-nav__item> <a href=../patch_inplace/ class=md-nav__link> <span class=md-ellipsis> patch_inplace </span> </a> </li> <li class=md-nav__item> <a href=../push_back/ class=md-nav__link> <span class=md-ellipsis> push_back </span> </a> </li> <li class=md-nav__item> <a href=../rbegin/ class=md-nav__link> <span class=md-ellipsis> rbegin </span> </a> </li> <li class=md-nav__item> <a href=../rend/ class=md-nav__link> <span class=md-ellipsis> rend </span> </a> </li> <li class=md-nav__item> <a href=../sax_parse/ class=md-nav__link> <span class=md-ellipsis> sax_parse </span> </a> </li> <li class=md-nav__item> <a href=../size/ class=md-nav__link> <span class=md-ellipsis> size </span> </a> </li> <li class=md-nav__item> <a href=../start_pos/ class=md-nav__link> <span class=md-ellipsis> start_pos </span> </a> </li> <li class=md-nav__item> <a href=../string_t/ class=md-nav__link> <span class=md-ellipsis> string_t </span> </a> </li> <li class=md-nav__item> <a href=../swap/ class=md-nav__link> <span class=md-ellipsis> swap </span> </a> </li> <li class=md-nav__item> <a href=../std_swap/ class=md-nav__link> <span class=md-ellipsis> std::swap&lt;basic_json&gt; </span> </a> </li> <li class=md-nav__item> <a href=../to_bjdata/ class=md-nav__link> <span class=md-ellipsis> to_bjdata </span> </a> </li> <li class=md-nav__item> <a href=../to_bson/ class=md-nav__link> <span class=md-ellipsis> to_bson </span> </a> </li> <li class=md-nav__item> <a href=../to_cbor/ class=md-nav__link> <span class=md-ellipsis> to_cbor </span> </a> </li> <li class=md-nav__item> <a href=../to_msgpack/ class=md-nav__link> <span class=md-ellipsis> to_msgpack </span> </a> </li> <li class=md-nav__item> <a href=../to_string/ class=md-nav__link> <span class=md-ellipsis> to_string </span> </a> </li> <li class=md-nav__item> <a href=../to_ubjson/ class=md-nav__link> <span class=md-ellipsis> to_ubjson </span> </a> </li> <li class=md-nav__item> <a href=../type/ class=md-nav__link> <span class=md-ellipsis> type </span> </a> </li> <li class=md-nav__item> <a href=../type_error/ class=md-nav__link> <span class=md-ellipsis> type_error </span> </a> </li> <li class=md-nav__item> <a href=../type_name/ class=md-nav__link> <span class=md-ellipsis> type_name </span> </a> </li> <li class=md-nav__item> <a href=../unflatten/ class=md-nav__link> <span class=md-ellipsis> unflatten </span> </a> </li> <li class=md-nav__item> <a href=../update/ class=md-nav__link> <span class=md-ellipsis> update </span> </a> </li> <li class=md-nav__item> <a href=../value/ class=md-nav__link> <span class=md-ellipsis> value </span> </a> </li> <li class=md-nav__item> <a href=../value_t/ class=md-nav__link> <span class=md-ellipsis> value_t </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_2> <div class="md-nav__link md-nav__container"> <a href=../../byte_container_with_subtype/ class="md-nav__link "> <span class=md-ellipsis> byte_container_with_subtype </span> </a> <label class="md-nav__link " for=__nav_4_2 id=__nav_4_2_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_2_label aria-expanded=false> <label class=md-nav__title for=__nav_4_2> <span class="md-nav__icon md-icon"></span> byte_container_with_subtype </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../byte_container_with_subtype/byte_container_with_subtype/ class=md-nav__link> <span class=md-ellipsis> (constructor) </span> </a> </li> <li class=md-nav__item> <a href=../../byte_container_with_subtype/clear_subtype/ class=md-nav__link> <span class=md-ellipsis> clear_subtype </span> </a> </li> <li class=md-nav__item> <a href=../../byte_container_with_subtype/has_subtype/ class=md-nav__link> <span class=md-ellipsis> has_subtype </span> </a> </li> <li class=md-nav__item> <a href=../../byte_container_with_subtype/set_subtype/ class=md-nav__link> <span class=md-ellipsis> set_subtype </span> </a> </li> <li class=md-nav__item> <a href=../../byte_container_with_subtype/subtype/ class=md-nav__link> <span class=md-ellipsis> subtype </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_3> <div class="md-nav__link md-nav__container"> <a href=../../adl_serializer/ class="md-nav__link "> <span class=md-ellipsis> adl_serializer </span> </a> <label class="md-nav__link " for=__nav_4_3 id=__nav_4_3_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_3_label aria-expanded=false> <label class=md-nav__title for=__nav_4_3> <span class="md-nav__icon md-icon"></span> adl_serializer </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../adl_serializer/from_json/ class=md-nav__link> <span class=md-ellipsis> from_json </span> </a> </li> <li class=md-nav__item> <a href=../../adl_serializer/to_json/ class=md-nav__link> <span class=md-ellipsis> to_json </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../json/ class=md-nav__link> <span class=md-ellipsis> json </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_5> <div class="md-nav__link md-nav__container"> <a href=../../json_pointer/ class="md-nav__link "> <span class=md-ellipsis> json_pointer </span> </a> <label class="md-nav__link " for=__nav_4_5 id=__nav_4_5_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_5_label aria-expanded=false> <label class=md-nav__title for=__nav_4_5> <span class="md-nav__icon md-icon"></span> json_pointer </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../json_pointer/json_pointer/ class=md-nav__link> <span class=md-ellipsis> (Constructor) </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/back/ class=md-nav__link> <span class=md-ellipsis> back </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/empty/ class=md-nav__link> <span class=md-ellipsis> empty </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/front/ class=md-nav__link> <span class=md-ellipsis> front </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_string_t/ class=md-nav__link> <span class=md-ellipsis> operator string_t </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_eq/ class=md-nav__link> <span class=md-ellipsis> operator== </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_ne/ class=md-nav__link> <span class=md-ellipsis> operator!= </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_slash/ class=md-nav__link> <span class=md-ellipsis> operator/ </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_slasheq/ class=md-nav__link> <span class=md-ellipsis> operator/= </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/parent_pointer/ class=md-nav__link> <span class=md-ellipsis> parent_pointer </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/pop_back/ class=md-nav__link> <span class=md-ellipsis> pop_back </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/pop_front/ class=md-nav__link> <span class=md-ellipsis> pop_front </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/push_back/ class=md-nav__link> <span class=md-ellipsis> push_back </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/push_front/ class=md-nav__link> <span class=md-ellipsis> push_front </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/string_t/ class=md-nav__link> <span class=md-ellipsis> string_t </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/to_string/ class=md-nav__link> <span class=md-ellipsis> to_string </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_6> <div class="md-nav__link md-nav__container"> <a href=../../json_sax/ class="md-nav__link "> <span class=md-ellipsis> json_sax </span> </a> <label class="md-nav__link " for=__nav_4_6 id=__nav_4_6_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_6_label aria-expanded=false> <label class=md-nav__title for=__nav_4_6> <span class="md-nav__icon md-icon"></span> json_sax </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../json_sax/binary/ class=md-nav__link> <span class=md-ellipsis> binary </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/boolean/ class=md-nav__link> <span class=md-ellipsis> boolean </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/end_array/ class=md-nav__link> <span class=md-ellipsis> end_array </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/end_object/ class=md-nav__link> <span class=md-ellipsis> end_object </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/key/ class=md-nav__link> <span class=md-ellipsis> key </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/null/ class=md-nav__link> <span class=md-ellipsis> null </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/number_float/ class=md-nav__link> <span class=md-ellipsis> number_float </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/number_integer/ class=md-nav__link> <span class=md-ellipsis> number_integer </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/number_unsigned/ class=md-nav__link> <span class=md-ellipsis> number_unsigned </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/parse_error/ class=md-nav__link> <span class=md-ellipsis> parse_error </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/start_array/ class=md-nav__link> <span class=md-ellipsis> start_array </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/start_object/ class=md-nav__link> <span class=md-ellipsis> start_object </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/string/ class=md-nav__link> <span class=md-ellipsis> string </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../operator_ltlt/ class=md-nav__link> <span class=md-ellipsis> operator<<(basic_json), operator<<(json_pointer) </span> </a> </li> <li class=md-nav__item> <a href=../../operator_gtgt/ class=md-nav__link> <span class=md-ellipsis> operator>>(basic_json) </span> </a> </li> <li class=md-nav__item> <a href=../../operator_literal_json/ class=md-nav__link> <span class=md-ellipsis> operator""_json </span> </a> </li> <li class=md-nav__item> <a href=../../operator_literal_json_pointer/ class=md-nav__link> <span class=md-ellipsis> operator""_json_pointer </span> </a> </li> <li class=md-nav__item> <a href=../../ordered_json/ class=md-nav__link> <span class=md-ellipsis> ordered_json </span> </a> </li> <li class=md-nav__item> <a href=../../ordered_map/ class=md-nav__link> <span class=md-ellipsis> ordered_map </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_13> <div class="md-nav__link md-nav__container"> <a href=../../macros/ class="md-nav__link "> <span class=md-ellipsis> macros </span> </a> <label class="md-nav__link " for=__nav_4_13 id=__nav_4_13_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_13_label aria-expanded=false> <label class=md-nav__title for=__nav_4_13> <span class="md-nav__icon md-icon"></span> macros </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../macros/json_assert/ class=md-nav__link> <span class=md-ellipsis> JSON_ASSERT </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_brace_init_copy_semantics/ class=md-nav__link> <span class=md-ellipsis> JSON_BRACE_INIT_COPY_SEMANTICS </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_throw_user/ class=md-nav__link> <span class=md-ellipsis> JSON_CATCH_USER, JSON_THROW_USER, JSON_TRY_USER </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_diagnostics/ class=md-nav__link> <span class=md-ellipsis> JSON_DIAGNOSTICS </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_diagnostic_positions/ class=md-nav__link> <span class=md-ellipsis> JSON_DIAGNOSTIC_POSITIONS </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_disable_enum_serialization/ class=md-nav__link> <span class=md-ellipsis> JSON_DISABLE_ENUM_SERIALIZATION </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_has_cpp_11/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_CPP_11, JSON_HAS_CPP_14, JSON_HAS_CPP_17, JSON_HAS_CPP_20 </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_has_filesystem/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_EXPERIMENTAL_FILESYSTEM, JSON_HAS_FILESYSTEM </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_has_ranges/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_RANGES </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_has_static_rtti/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_STATIC_RTTI </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_has_three_way_comparison/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_THREE_WAY_COMPARISON </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_noexception/ class=md-nav__link> <span class=md-ellipsis> JSON_NOEXCEPTION </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_no_io/ class=md-nav__link> <span class=md-ellipsis> JSON_NO_IO </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_skip_library_version_check/ class=md-nav__link> <span class=md-ellipsis> JSON_SKIP_LIBRARY_VERSION_CHECK </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_skip_unsupported_compiler_check/ class=md-nav__link> <span class=md-ellipsis> JSON_SKIP_UNSUPPORTED_COMPILER_CHECK </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_use_global_udls/ class=md-nav__link> <span class=md-ellipsis> JSON_USE_GLOBAL_UDLS </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_use_implicit_conversions/ class=md-nav__link> <span class=md-ellipsis> JSON_USE_IMPLICIT_CONVERSIONS </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_use_legacy_discarded_value_comparison/ class=md-nav__link> <span class=md-ellipsis> JSON_USE_LEGACY_DISCARDED_VALUE_COMPARISON </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_define_derived_type/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_ONLY_SERIALIZE, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_define_type_intrusive/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_TYPE_INTRUSIVE, NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_TYPE_INTRUSIVE_ONLY_SERIALIZE </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_define_type_non_intrusive/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_define_type_with_names/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_TYPE_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_namespace/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_NAMESPACE </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_namespace_begin/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_NAMESPACE_BEGIN, NLOHMANN_JSON_NAMESPACE_END </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_namespace_no_version/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_NAMESPACE_NO_VERSION </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_serialize_enum/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_SERIALIZE_ENUM </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_serialize_enum_strict/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_SERIALIZE_ENUM_STRICT </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_version_major/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_VERSION_MAJOR, NLOHMANN_JSON_VERSION_MINOR, NLOHMANN_JSON_VERSION_PATCH </span> </a> </li> </ul> </nav> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_5> <div class="md-nav__link md-nav__container"> <a href=../../../community/ class="md-nav__link "> <span class=md-ellipsis> Community </span> </a> <label class="md-nav__link " for=__nav_5 id=__nav_5_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_5_label aria-expanded=false> <label class=md-nav__title for=__nav_5> <span class="md-nav__icon md-icon"></span> Community </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../community/code_of_conduct/ class=md-nav__link> <span class=md-ellipsis> Code of Conduct </span> </a> </li> <li class=md-nav__item> <a href=../../../community/contribution_guidelines/ class=md-nav__link> <span class=md-ellipsis> Contribution Guidelines </span> </a> </li> <li class=md-nav__item> <a href=../../../community/quality_assurance/ class=md-nav__link> <span class=md-ellipsis> Quality assurance </span> </a> </li> <li class=md-nav__item> <a href=../../../community/governance/ class=md-nav__link> <span class=md-ellipsis> Governance </span> </a> </li> <li class=md-nav__item> <a href=../../../community/security_policy/ class=md-nav__link> <span class=md-ellipsis> Security Policy </span> </a> </li> </ul> </nav> </li> </ul> </nav> </div> </div> </div> <div class="md-sidebar md-sidebar--secondary" data-md-component=sidebar data-md-type=toc> <div class=md-sidebar__scrollwrap> <div class=md-sidebar__inner> <nav class="md-nav md-nav--secondary" aria-label="Table of contents"> <label class=md-nav__title for=__toc> <span class="md-nav__icon md-icon"></span> Table of contents </label> <ul class=md-nav__list data-md-component=toc data-md-scrollfix> <li class=md-nav__item> <a href=#notes class=md-nav__link> <span class=md-ellipsis> Notes </span> </a> <nav class=md-nav aria-label=Notes> <ul class=md-nav__list> <li class=md-nav__item> <a href=#default-type class=md-nav__link> <span class=md-ellipsis> Default type </span> </a> </li> <li class=md-nav__item> <a href=#default-behavior class=md-nav__link> <span class=md-ellipsis> Default behavior </span> </a> </li> <li class=md-nav__item> <a href=#limits class=md-nav__link> <span class=md-ellipsis> Limits </span> </a> </li> <li class=md-nav__item> <a href=#storage class=md-nav__link> <span class=md-ellipsis> Storage </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=#examples class=md-nav__link> <span class=md-ellipsis> Examples </span> </a> </li> <li class=md-nav__item> <a href=#version-history class=md-nav__link> <span class=md-ellipsis> Version history </span> </a> </li> </ul> </nav> </div> </div> </div> <div class=md-content data-md-component=content> <article class="md-content__inner md-typeset"> <a href="https://github.com/nlohmann/json/edit/develop/docs/mkdocs/docs/api/basic_json/number_unsigned_t.md" title="Edit this page" class="md-content__button md-icon" rel="edit"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M10 20H6V4h7v5h5v3.1l2-2V8l-6-6H6c-1.1 0-2 .9-2 2v16c0 1.1.9 2 2 2h4zm10.2-7c.1 0 .3.1.4.2l1.3 1.3c.2.2.2.6 0 .8l-1 1-2.1-2.1 1-1c.1-.1.2-.2.4-.2m0 3.9L14.1 23H12v-2.1l6.1-6.1z"/></svg> </a> <a href="https://github.com/nlohmann/json/raw/develop/docs/mkdocs/docs/api/basic_json/number_unsigned_t.md" title="View source of this page" class="md-content__button md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M17 18c.56 0 1 .44 1 1s-.44 1-1 1-1-.44-1-1 .44-1 1-1m0-3c-2.73 0-5.06 1.66-6 4 .94 2.34 3.27 4 6 4s5.06-1.66 6-4c-.94-2.34-3.27-4-6-4m0 6.5a2.5 2.5 0 0 1-2.5-2.5 2.5 2.5 0 0 1 2.5-2.5 2.5 2.5 0 0 1 2.5 2.5 2.5 2.5 0 0 1-2.5 2.5M9.27 20H6V4h7v5h5v4.07c.7.08 1.36.25 2 .49V8l-6-6H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h4.5a8.2 8.2 0 0 1-1.23-2"/></svg> </a> <h1 id=nlohmannbasic_jsonnumber_unsigned_t><small>nlohmann::basic_json::</small>number_unsigned_t<a class=headerlink href=#nlohmannbasic_jsonnumber_unsigned_t title="Permanent link">&para;</a></h1> <div class=highlight><pre><span></span><code><span class=k>using</span><span class=w> </span><span class=n>number_unsigned_t</span><span class=w> </span><span class=o>=</span><span class=w> </span><span class=n>NumberUnsignedType</span><span class=p>;</span>
-</code></pre></div> <p>The type used to store <abbr title="JavaScript Object Notation">JSON</abbr> numbers (unsigned).</p> <p><a href="https://tools.ietf.org/html/rfc8259"><abbr title="Request for Comments">RFC</abbr> 8259</a> describes numbers as follows:</p> <blockquote> <p>The representation of numbers is similar to that used in most programming languages. A number is represented in base 10 using decimal digits. It contains an integer component that may be prefixed with an optional minus sign, which may be followed by a fraction part and/or an exponent part. Leading zeros are not allowed. (...) Numeric values that cannot be represented in the grammar below (such as Infinity and <abbr title="Not a Number">NaN</abbr>) are not permitted.</p> </blockquote> <p>This description includes both integer and floating-point numbers. However, C++ allows more precise storage if it is known whether the number is a signed integer, an unsigned integer, or a floating-point number. Therefore, three different types, <a href=../number_integer_t/ ><code>number_integer_t</code></a>, <code>number_unsigned_t</code> and <a href=../number_float_t/ ><code>number_float_t</code></a> are used.</p> <p>To store unsigned integer numbers in C++, a type is defined by the template parameter <code>NumberUnsignedType</code> which chooses the type to use.</p> <h2 id=notes>Notes<a class=headerlink href=#notes title="Permanent link">&para;</a></h2> <h4 id=default-type>Default type<a class=headerlink href=#default-type title="Permanent link">&para;</a></h4> <p>With the default values for <code>NumberUnsignedType</code> (<code>std::uint64_t</code>), the default value for <code>number_unsigned_t</code> is <code class=highlight><span class=n>std</span><span class=o>::</span><span class=kt>uint64_t</span></code>.</p> <h4 id=default-behavior>Default behavior<a class=headerlink href=#default-behavior title="Permanent link">&para;</a></h4> <ul> <li>The restrictions about leading zeros are not enforced in C++. Instead, leading zeros in integer literals lead to an interpretation as an octal number. Internally, the value will be stored as a decimal number. For instance, the C++ integer literal <code>010</code> will be serialized to <code>8</code>. During deserialization, leading zeros yield an error.</li> <li>Not-a-number (<abbr title="Not a Number">NaN</abbr>) values will be serialized to <code>null</code>.</li> </ul> <h4 id=limits>Limits<a class=headerlink href=#limits title="Permanent link">&para;</a></h4> <p><a href="https://tools.ietf.org/html/rfc8259"><abbr title="Request for Comments">RFC</abbr> 8259</a> specifies:</p> <blockquote> <p>An implementation may set limits on the range and precision of numbers.</p> </blockquote> <p>When the default type is used, the maximal integer number that can be stored is <code>18446744073709551615</code> (UINT64_MAX) and the minimal integer number that can be stored is <code>0</code>. Integer numbers that are out of range will yield over/underflow when used in a constructor. During deserialization, too large or small integer numbers will automatically be stored as <a href=../number_integer_t/ ><code>number_integer_t</code></a> or <a href=../number_float_t/ ><code>number_float_t</code></a>.</p> <p><a href="https://tools.ietf.org/html/rfc8259"><abbr title="Request for Comments">RFC</abbr> 8259</a> further states:</p> <blockquote> <p>Note that when such software is used, numbers that are integers and are in the range \f<span class=arithmatex><span class=MathJax_Preview>[-2^{53}+1, 2^{53}-1]\f</span><script type=math/tex>[-2^{53}+1, 2^{53}-1]\f</script></span> are interoperable in the sense that implementations will agree exactly on their numeric values.</p> </blockquote> <p>As this range is a subrange (when considered in conjunction with the <code>number_integer_t</code> type) of the exactly supported range [0, UINT64_MAX], this class's integer type is interoperable.</p> <h4 id=storage>Storage<a class=headerlink href=#storage title="Permanent link">&para;</a></h4> <p>Integer number values are stored directly inside a <code>basic_json</code> type.</p> <h2 id=examples>Examples<a class=headerlink href=#examples title="Permanent link">&para;</a></h2> <details class=example> <summary>Example</summary> <p>The following code shows that <code>number_unsigned_t</code> is by default, a typedef to <code class=highlight><span class=n>std</span><span class=o>::</span><span class=kt>uint64_t</span></code>.</p> <div class=highlight><pre><span></span><code><span class=cp>#include</span><span class=w> </span><span class=cpf>&lt;iostream&gt;</span>
+</code></pre></div> <p>The type used to store <abbr title="JavaScript Object Notation">JSON</abbr> numbers (unsigned).</p> <p><a href="https://tools.ietf.org/html/rfc8259"><abbr title="Request for Comments">RFC</abbr> 8259</a> describes numbers as follows:</p> <blockquote> <p>The representation of numbers is similar to that used in most programming languages. A number is represented in base 10 using decimal digits. It contains an integer component that may be prefixed with an optional minus sign, which may be followed by a fraction part and/or an exponent part. Leading zeros are not allowed. (...) Numeric values that cannot be represented in the grammar below (such as Infinity and <abbr title="Not a Number">NaN</abbr>) are not permitted.</p> </blockquote> <p>This description includes both integer and floating-point numbers. However, C++ allows more precise storage if it is known whether the number is a signed integer, an unsigned integer, or a floating-point number. Therefore, three different types, <a href=../number_integer_t/ ><code>number_integer_t</code></a>, <code>number_unsigned_t</code> and <a href=../number_float_t/ ><code>number_float_t</code></a> are used.</p> <p>To store unsigned integer numbers in C++, a type is defined by the template parameter <code>NumberUnsignedType</code> which chooses the type to use.</p> <h2 id=notes>Notes<a class=headerlink href=#notes title="Permanent link">&para;</a></h2> <h4 id=default-type>Default type<a class=headerlink href=#default-type title="Permanent link">&para;</a></h4> <p>With the default values for <code>NumberUnsignedType</code> (<code>std::uint64_t</code>), the default value for <code>number_unsigned_t</code> is <code class=highlight><span class=n>std</span><span class=o>::</span><span class=kt>uint64_t</span></code>.</p> <h4 id=default-behavior>Default behavior<a class=headerlink href=#default-behavior title="Permanent link">&para;</a></h4> <ul> <li>The restrictions about leading zeros are not enforced in C++. Instead, leading zeros in integer literals lead to an interpretation as an octal number. Internally, the value will be stored as a decimal number. For instance, the C++ integer literal <code>010</code> will be serialized to <code>8</code>. During deserialization, leading zeros yield an error.</li> </ul> <h4 id=limits>Limits<a class=headerlink href=#limits title="Permanent link">&para;</a></h4> <p><a href="https://tools.ietf.org/html/rfc8259"><abbr title="Request for Comments">RFC</abbr> 8259</a> specifies:</p> <blockquote> <p>An implementation may set limits on the range and precision of numbers.</p> </blockquote> <p>When the default type is used, the maximal integer number that can be stored is <code>18446744073709551615</code> (UINT64_MAX) and the minimal integer number that can be stored is <code>0</code>. Integer numbers that are out of range will yield over/underflow when used in a constructor. During deserialization, too large or small integer numbers will automatically be stored as <a href=../number_integer_t/ ><code>number_integer_t</code></a> or <a href=../number_float_t/ ><code>number_float_t</code></a>.</p> <p><a href="https://tools.ietf.org/html/rfc8259"><abbr title="Request for Comments">RFC</abbr> 8259</a> further states:</p> <blockquote> <p>Note that when such software is used, numbers that are integers and are in the range <span class=arithmatex><span class=MathJax_Preview>[-2^{53}+1, 2^{53}-1]</span><script type=math/tex>[-2^{53}+1, 2^{53}-1]</script></span> are interoperable in the sense that implementations will agree exactly on their numeric values.</p> </blockquote> <p>As this range is a subrange (when considered in conjunction with the <code>number_integer_t</code> type) of the exactly supported range [0, UINT64_MAX], this class's integer type is interoperable.</p> <h4 id=storage>Storage<a class=headerlink href=#storage title="Permanent link">&para;</a></h4> <p>Integer number values are stored directly inside a <code>basic_json</code> type.</p> <h2 id=examples>Examples<a class=headerlink href=#examples title="Permanent link">&para;</a></h2> <details class=example> <summary>Example</summary> <p>The following code shows that <code>number_unsigned_t</code> is by default, a typedef to <code class=highlight><span class=n>std</span><span class=o>::</span><span class=kt>uint64_t</span></code>.</p> <div class=highlight><pre><span></span><code><span class=cp>#include</span><span class=w> </span><span class=cpf>&lt;iostream&gt;</span>
 <span class=cp>#include</span><span class=w> </span><span class=cpf>&lt;iomanip&gt;</span>
 <span class=cp>#include</span><span class=w> </span><span class=cpf>&lt;nlohmann/json.hpp&gt;</span>
 
@@ -10,4 +10,4 @@
 <span class=w>    </span><span class=n>std</span><span class=o>::</span><span class=n>cout</span><span class=w> </span><span class=o>&lt;&lt;</span><span class=w> </span><span class=n>std</span><span class=o>::</span><span class=n>boolalpha</span><span class=w> </span><span class=o>&lt;&lt;</span><span class=w> </span><span class=n>std</span><span class=o>::</span><span class=n>is_same</span><span class=o>&lt;</span><span class=n>std</span><span class=o>::</span><span class=kt>uint64_t</span><span class=p>,</span><span class=w> </span><span class=n>json</span><span class=o>::</span><span class=n>number_unsigned_t</span><span class=o>&gt;::</span><span class=n>value</span><span class=w> </span><span class=o>&lt;&lt;</span><span class=w> </span><span class=n>std</span><span class=o>::</span><span class=n>endl</span><span class=p>;</span>
 <span class=p>}</span>
 </code></pre></div> <p>Output:</p> <div class=highlight><pre><span></span><code><span class=kc>true</span>
-</code></pre></div> </details> <h2 id=version-history>Version history<a class=headerlink href=#version-history title="Permanent link">&para;</a></h2> <ul> <li>Added in version 2.0.0.</li> </ul> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 23, 2026 11:16:18 UTC">June 23, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
+</code></pre></div> </details> <h2 id=version-history>Version history<a class=headerlink href=#version-history title="Permanent link">&para;</a></h2> <ul> <li>Added in version 2.0.0.</li> </ul> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 29, 2026 20:15:18 UTC">June 29, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
diff --git a/api/basic_json/object/index.html b/api/basic_json/object/index.html
index bbea8f6..edfe16c 100644
--- a/api/basic_json/object/index.html
+++ b/api/basic_json/object/index.html
@@ -31,4 +31,4 @@
 <span class=p>{}</span>
 <span class=p>{</span><span class=nt>&quot;one&quot;</span><span class=p>:</span><span class=mi>1</span><span class=p>,</span><span class=nt>&quot;two&quot;</span><span class=p>:</span><span class=mi>2</span><span class=p>}</span>
 <span class=p>[</span><span class=err>jso</span><span class=kc>n</span><span class=err>.excep</span><span class=kc>t</span><span class=err>io</span><span class=kc>n</span><span class=err>.</span><span class=kc>t</span><span class=err>ype_error.</span><span class=mi>301</span><span class=p>]</span><span class=w> </span><span class=err>ca</span><span class=kc>nn</span><span class=err>o</span><span class=kc>t</span><span class=w> </span><span class=err>crea</span><span class=kc>te</span><span class=w> </span><span class=err>objec</span><span class=kc>t</span><span class=w> </span><span class=kc>fr</span><span class=err>om</span><span class=w> </span><span class=err>i</span><span class=kc>n</span><span class=err>i</span><span class=kc>t</span><span class=err>ializer</span><span class=w> </span><span class=err>lis</span><span class=kc>t</span>
-</code></pre></div> </details> <h2 id=see-also>See also<a class=headerlink href=#see-also title="Permanent link">&para;</a></h2> <ul> <li><a href=../basic_json/ ><code>basic_json(initializer_list_t)</code></a> - create a <abbr title="JavaScript Object Notation">JSON</abbr> value from an initializer list</li> <li><a href=../array/ ><code>array</code></a> - create a <abbr title="JavaScript Object Notation">JSON</abbr> array value from an initializer list</li> </ul> <h2 id=version-history>Version history<a class=headerlink href=#version-history title="Permanent link">&para;</a></h2> <ul> <li>Added in version 1.0.0.</li> </ul> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 23, 2026 11:16:18 UTC">June 23, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
+</code></pre></div> </details> <h2 id=see-also>See also<a class=headerlink href=#see-also title="Permanent link">&para;</a></h2> <ul> <li><a href=../basic_json/ ><code>basic_json(initializer_list_t)</code></a> - create a <abbr title="JavaScript Object Notation">JSON</abbr> value from an initializer list</li> <li><a href=../array/ ><code>array</code></a> - create a <abbr title="JavaScript Object Notation">JSON</abbr> array value from an initializer list</li> </ul> <h2 id=version-history>Version history<a class=headerlink href=#version-history title="Permanent link">&para;</a></h2> <ul> <li>Added in version 1.0.0.</li> </ul> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 29, 2026 20:15:18 UTC">June 29, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
diff --git a/api/basic_json/object_comparator_t/index.html b/api/basic_json/object_comparator_t/index.html
index 11f8e67..802f1ae 100644
--- a/api/basic_json/object_comparator_t/index.html
+++ b/api/basic_json/object_comparator_t/index.html
@@ -14,4 +14,4 @@
 <span class=p>}</span>
 </code></pre></div> <p>Output:</p> <div class=highlight><pre><span></span><code><span class=err>jso</span><span class=kc>n</span><span class=p>::</span><span class=err>objec</span><span class=kc>t</span><span class=err>_compara</span><span class=kc>t</span><span class=err>or_</span><span class=kc>t</span><span class=err>(</span><span class=s2>&quot;one&quot;</span><span class=p>,</span><span class=w> </span><span class=s2>&quot;two&quot;</span><span class=err>)</span><span class=w> </span><span class=err>=</span><span class=w> </span><span class=kc>true</span>
 <span class=err>jso</span><span class=kc>n</span><span class=p>::</span><span class=err>objec</span><span class=kc>t</span><span class=err>_compara</span><span class=kc>t</span><span class=err>or_</span><span class=kc>t</span><span class=err>(</span><span class=s2>&quot;three&quot;</span><span class=p>,</span><span class=w> </span><span class=s2>&quot;four&quot;</span><span class=err>)</span><span class=w> </span><span class=err>=</span><span class=w> </span><span class=kc>false</span>
-</code></pre></div> </details> <h2 id=version-history>Version history<a class=headerlink href=#version-history title="Permanent link">&para;</a></h2> <ul> <li>Added in version 3.0.0.</li> <li>Changed to be conditionally defined as <code class=highlight><span class=k>typename</span><span class=w> </span><span class=nc>object_t</span><span class=o>::</span><span class=n>key_compare</span></code> or <code>default_object_comparator_t</code> in version 3.11.0.</li> </ul> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 23, 2026 11:16:18 UTC">June 23, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
+</code></pre></div> </details> <h2 id=version-history>Version history<a class=headerlink href=#version-history title="Permanent link">&para;</a></h2> <ul> <li>Added in version 3.0.0.</li> <li>Changed to be conditionally defined as <code class=highlight><span class=k>typename</span><span class=w> </span><span class=nc>object_t</span><span class=o>::</span><span class=n>key_compare</span></code> or <code>default_object_comparator_t</code> in version 3.11.0.</li> </ul> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 29, 2026 20:15:18 UTC">June 29, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
diff --git a/api/basic_json/object_t/index.html b/api/basic_json/object_t/index.html
index 907dfa2..d8e9402 100644
--- a/api/basic_json/object_t/index.html
+++ b/api/basic_json/object_t/index.html
@@ -28,4 +28,4 @@
 <span class=w>    </span><span class=n>std</span><span class=o>::</span><span class=n>cout</span><span class=w> </span><span class=o>&lt;&lt;</span><span class=w> </span><span class=n>std</span><span class=o>::</span><span class=n>boolalpha</span><span class=w> </span><span class=o>&lt;&lt;</span><span class=w> </span><span class=n>std</span><span class=o>::</span><span class=n>is_same</span><span class=o>&lt;</span><span class=n>std</span><span class=o>::</span><span class=n>map</span><span class=o>&lt;</span><span class=n>json</span><span class=o>::</span><span class=n>string_t</span><span class=p>,</span><span class=w> </span><span class=n>json</span><span class=o>&gt;</span><span class=p>,</span><span class=w> </span><span class=n>json</span><span class=o>::</span><span class=n>object_t</span><span class=o>&gt;::</span><span class=n>value</span><span class=w> </span><span class=o>&lt;&lt;</span><span class=w> </span><span class=n>std</span><span class=o>::</span><span class=n>endl</span><span class=p>;</span>
 <span class=p>}</span>
 </code></pre></div> <p>Output:</p> <div class=highlight><pre><span></span><code><span class=kc>true</span>
-</code></pre></div> </details> <h2 id=version-history>Version history<a class=headerlink href=#version-history title="Permanent link">&para;</a></h2> <ul> <li>Added in version 1.0.0.</li> </ul> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 23, 2026 11:16:18 UTC">June 23, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
+</code></pre></div> </details> <h2 id=version-history>Version history<a class=headerlink href=#version-history title="Permanent link">&para;</a></h2> <ul> <li>Added in version 1.0.0.</li> </ul> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 29, 2026 20:15:18 UTC">June 29, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
diff --git a/api/basic_json/operator+=/index.html b/api/basic_json/operator+=/index.html
index 7583a81..1fe1cc7 100644
--- a/api/basic_json/operator+=/index.html
+++ b/api/basic_json/operator+=/index.html
@@ -7,7 +7,7 @@
 
 <span class=c1>// (3)</span>
 <span class=n>reference</span><span class=w> </span><span class=k>operator</span><span class=o>+=</span><span class=p>(</span><span class=n>initializer_list_t</span><span class=w> </span><span class=n>init</span><span class=p>);</span>
-</code></pre></div> <ol> <li> <p>Appends the given element <code>val</code> to the end of the <abbr title="JavaScript Object Notation">JSON</abbr> array. If the function is called on a <abbr title="JavaScript Object Notation">JSON</abbr> null value, an empty array is created before appending <code>val</code>.</p> </li> <li> <p>Inserts the given element <code>val</code> to the <abbr title="JavaScript Object Notation">JSON</abbr> object. If the function is called on a <abbr title="JavaScript Object Notation">JSON</abbr> null value, an empty object is created before inserting <code>val</code>.</p> </li> <li> <p>This function allows using <code>operator+=</code> with an initializer list. In case</p> <ol> <li>the current value is an object,</li> <li>the initializer list <code>init</code> contains only two elements, and</li> <li>the first element of <code>init</code> is a string,</li> </ol> <p><code>init</code> is converted into an object element and added using <code>operator+=(const typename object_t::value_type&amp;)</code>. Otherwise, <code>init</code> is converted to a <abbr title="JavaScript Object Notation">JSON</abbr> value and added using <code>operator+=(basic_json&amp;&amp;)</code>.</p> </li> </ol> <h2 id=iterator-invalidation>Iterator invalidation<a class=headerlink href=#iterator-invalidation title="Permanent link">&para;</a></h2> <p>For all cases where an element is added to an <strong>array</strong>, a reallocation can happen, in which case all iterators (including the <a href=../end/ ><code>end()</code></a> iterator) and all references to the elements are invalidated. Otherwise, only the <a href=../end/ ><code>end()</code></a> iterator is invalidated.</p> <p>For <a href=../../ordered_json/ ><code>ordered_json</code></a>, also adding an element to an <strong>object</strong> can yield a reallocation which again invalidates all iterators and all references.</p> <h2 id=parameters>Parameters<a class=headerlink href=#parameters title="Permanent link">&para;</a></h2> <dl> <dt><code>val</code> (in)</dt> <dd>the value to add to the <abbr title="JavaScript Object Notation">JSON</abbr> array/object</dd> <dt><code>init</code> (in)</dt> <dd>an initializer list</dd> </dl> <h2 id=return-value>Return value<a class=headerlink href=#return-value title="Permanent link">&para;</a></h2> <p><code class=highlight><span class=o>*</span><span class=k>this</span></code></p> <h2 id=exceptions>Exceptions<a class=headerlink href=#exceptions title="Permanent link">&para;</a></h2> <p>All functions can throw the following exception: - Throws <a href=../../../home/exceptions/#jsonexceptiontype_error308><code>type_error.308</code></a> when called on a type other than <abbr title="JavaScript Object Notation">JSON</abbr> array or null; example: <code>"cannot use operator+=() with number"</code></p> <h2 id=complexity>Complexity<a class=headerlink href=#complexity title="Permanent link">&para;</a></h2> <ol> <li>Amortized constant.</li> <li>Logarithmic in the size of the container, O(log(<code>size()</code>)).</li> <li>Linear in the size of the initializer list <code>init</code>.</li> </ol> <h2 id=notes>Notes<a class=headerlink href=#notes title="Permanent link">&para;</a></h2> <p>(3) This function is required to resolve an ambiguous overload error, because pairs like <code>{"key", "value"}</code> can be both interpreted as <code>object_t::value_type</code> or <code>std::initializer_list&lt;basic_json&gt;</code>, see <a href="https://github.com/nlohmann/json/issues/235">#235</a> for more information.</p> <h2 id=examples>Examples<a class=headerlink href=#examples title="Permanent link">&para;</a></h2> <details class=example> <summary>Example: (1) add element to array</summary> <p>The example shows how <code>push_back()</code> and <code>+=</code> can be used to add elements to a <abbr title="JavaScript Object Notation">JSON</abbr> array. Note how the <code>null</code> value was silently converted to a <abbr title="JavaScript Object Notation">JSON</abbr> array.</p> <div class=highlight><pre><span></span><code><span class=cp>#include</span><span class=w> </span><span class=cpf>&lt;iostream&gt;</span>
+</code></pre></div> <ol> <li> <p>Appends the given element <code>val</code> to the end of the <abbr title="JavaScript Object Notation">JSON</abbr> array. If the function is called on a <abbr title="JavaScript Object Notation">JSON</abbr> null value, an empty array is created before appending <code>val</code>.</p> </li> <li> <p>Inserts the given element <code>val</code> to the <abbr title="JavaScript Object Notation">JSON</abbr> object. If the function is called on a <abbr title="JavaScript Object Notation">JSON</abbr> null value, an empty object is created before inserting <code>val</code>.</p> </li> <li> <p>This function allows using <code>operator+=</code> with an initializer list. In case</p> <ol> <li>the current value is an object,</li> <li>the initializer list <code>init</code> contains only two elements, and</li> <li>the first element of <code>init</code> is a string,</li> </ol> <p><code>init</code> is converted into an object element and added using <code>operator+=(const typename object_t::value_type&amp;)</code>. Otherwise, <code>init</code> is converted to a <abbr title="JavaScript Object Notation">JSON</abbr> value and added using <code>operator+=(basic_json&amp;&amp;)</code>.</p> </li> </ol> <h2 id=iterator-invalidation>Iterator invalidation<a class=headerlink href=#iterator-invalidation title="Permanent link">&para;</a></h2> <p>For all cases where an element is added to an <strong>array</strong>, a reallocation can happen, in which case all iterators (including the <a href=../end/ ><code>end()</code></a> iterator) and all references to the elements are invalidated. Otherwise, only the <a href=../end/ ><code>end()</code></a> iterator is invalidated.</p> <p>For <a href=../../ordered_json/ ><code>ordered_json</code></a>, also adding an element to an <strong>object</strong> can yield a reallocation which again invalidates all iterators and all references.</p> <h2 id=parameters>Parameters<a class=headerlink href=#parameters title="Permanent link">&para;</a></h2> <dl> <dt><code>val</code> (in)</dt> <dd>the value to add to the <abbr title="JavaScript Object Notation">JSON</abbr> array/object</dd> <dt><code>init</code> (in)</dt> <dd>an initializer list</dd> </dl> <h2 id=return-value>Return value<a class=headerlink href=#return-value title="Permanent link">&para;</a></h2> <p><code class=highlight><span class=o>*</span><span class=k>this</span></code></p> <h2 id=exceptions>Exceptions<a class=headerlink href=#exceptions title="Permanent link">&para;</a></h2> <ol> <li>Throws <a href=../../../home/exceptions/#jsonexceptiontype_error308><code>type_error.308</code></a> when called on a type other than <abbr title="JavaScript Object Notation">JSON</abbr> array or null; example: <code>"cannot use push_back() with number"</code></li> <li>Throws <a href=../../../home/exceptions/#jsonexceptiontype_error308><code>type_error.308</code></a> when called on a type other than <abbr title="JavaScript Object Notation">JSON</abbr> object or null; example: <code>"cannot use push_back() with number"</code></li> <li>Throws <a href=../../../home/exceptions/#jsonexceptiontype_error308><code>type_error.308</code></a> when called on a type other than <abbr title="JavaScript Object Notation">JSON</abbr> array or null; example: <code>"cannot use push_back() with number"</code></li> </ol> <h2 id=complexity>Complexity<a class=headerlink href=#complexity title="Permanent link">&para;</a></h2> <ol> <li>Amortized constant.</li> <li>Logarithmic in the size of the container, O(log(<code>size()</code>)).</li> <li>Linear in the size of the initializer list <code>init</code>.</li> </ol> <h2 id=notes>Notes<a class=headerlink href=#notes title="Permanent link">&para;</a></h2> <p>(3) This function is required to resolve an ambiguous overload error, because pairs like <code>{"key", "value"}</code> can be both interpreted as <code>object_t::value_type</code> or <code>std::initializer_list&lt;basic_json&gt;</code>, see <a href="https://github.com/nlohmann/json/issues/235">#235</a> for more information.</p> <h2 id=examples>Examples<a class=headerlink href=#examples title="Permanent link">&para;</a></h2> <details class=example> <summary>Example: (1) add element to array</summary> <p>The example shows how <code>push_back()</code> and <code>+=</code> can be used to add elements to a <abbr title="JavaScript Object Notation">JSON</abbr> array. Note how the <code>null</code> value was silently converted to a <abbr title="JavaScript Object Notation">JSON</abbr> array.</p> <div class=highlight><pre><span></span><code><span class=cp>#include</span><span class=w> </span><span class=cpf>&lt;iostream&gt;</span>
 <span class=cp>#include</span><span class=w> </span><span class=cpf>&lt;nlohmann/json.hpp&gt;</span>
 
 <span class=k>using</span><span class=w> </span><span class=n>json</span><span class=w> </span><span class=o>=</span><span class=w> </span><span class=n>nlohmann</span><span class=o>::</span><span class=n>json</span><span class=p>;</span>
@@ -96,4 +96,4 @@
 <span class=kc>null</span>
 <span class=p>{</span><span class=nt>&quot;four&quot;</span><span class=p>:</span><span class=mi>4</span><span class=p>,</span><span class=nt>&quot;one&quot;</span><span class=p>:</span><span class=mi>1</span><span class=p>,</span><span class=nt>&quot;three&quot;</span><span class=p>:</span><span class=mi>3</span><span class=p>,</span><span class=nt>&quot;two&quot;</span><span class=p>:</span><span class=mi>2</span><span class=p>}</span>
 <span class=p>[[</span><span class=s2>&quot;five&quot;</span><span class=p>,</span><span class=mi>5</span><span class=p>]]</span>
-</code></pre></div> </details> <h2 id=see-also>See also<a class=headerlink href=#see-also title="Permanent link">&para;</a></h2> <ul> <li><a href=../emplace_back/ >emplace_back</a> add a value to an array</li> <li><a href=../push_back/ >push_back</a> add a value to an array/object</li> </ul> <h2 id=version-history>Version history<a class=headerlink href=#version-history title="Permanent link">&para;</a></h2> <ol> <li>Since version 1.0.0.</li> <li>Since version 1.0.0.</li> <li>Since version 2.0.0.</li> </ol> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 23, 2026 11:16:18 UTC">June 23, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
+</code></pre></div> </details> <h2 id=see-also>See also<a class=headerlink href=#see-also title="Permanent link">&para;</a></h2> <ul> <li><a href=../emplace_back/ >emplace_back</a> add a value to an array</li> <li><a href=../push_back/ >push_back</a> add a value to an array/object</li> </ul> <h2 id=version-history>Version history<a class=headerlink href=#version-history title="Permanent link">&para;</a></h2> <ol> <li>Since version 1.0.0.</li> <li>Since version 1.0.0.</li> <li>Since version 2.0.0.</li> </ol> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 29, 2026 20:15:18 UTC">June 29, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
diff --git a/api/basic_json/operator=/index.html b/api/basic_json/operator=/index.html
index f032422..261ee97 100644
--- a/api/basic_json/operator=/index.html
+++ b/api/basic_json/operator=/index.html
@@ -1,10 +1,11 @@
-<!doctype html><html lang=en class=no-js> <head><meta charset=utf-8><meta name=viewport content="width=device-width,initial-scale=1"><meta name=author content="Niels Lohmann"><link href="https://json.nlohmann.me/api/basic_json/operator%3D/" rel="canonical"><link href=../operator%5B%5D/ rel=prev><link href=../operator%2B%3D/ rel=next><link rel=icon href=../../../assets/images/favicon.png><meta name=generator content="mkdocs-1.6.1, mkdocs-material-9.7.6"><title>operator= - JSON for Modern C++</title><link rel=stylesheet href=../../../assets/stylesheets/main.484c7ddc.min.css><link rel=stylesheet href=../../../assets/stylesheets/palette.ab4e12ef.min.css><link rel="stylesheet" href="../../../assets/external/fonts.googleapis.com/css.61a430c9.css"><style>:root{--md-text-font:"Roboto";--md-code-font:"JetBrains Mono"}</style><link rel=stylesheet href=../../../css/custom.css><script>__md_scope=new URL("../../..",location),__md_hash=e=>[...e].reduce(((e,_)=>(e<<5)-e+_.charCodeAt(0)),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script></head> <body dir=ltr data-md-color-scheme=default data-md-color-primary=indigo data-md-color-accent=indigo> <input class=md-toggle data-md-toggle=drawer type=checkbox id=__drawer autocomplete=off> <input class=md-toggle data-md-toggle=search type=checkbox id=__search autocomplete=off> <label class=md-overlay for=__drawer></label> <div data-md-component=skip> <a href=#nlohmannbasic_jsonoperator class=md-skip> Skip to content </a> </div> <div data-md-component=announce> </div> <header class=md-header data-md-component=header> <nav class="md-header__inner md-grid" aria-label=Header> <a href=../../.. title="JSON for Modern C++" class="md-header__button md-logo" aria-label="JSON for Modern C++" data-md-component=logo> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54"/></svg> </a> <label class="md-header__button md-icon" for=__drawer> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M3 6h18v2H3zm0 5h18v2H3zm0 5h18v2H3z"/></svg> </label> <div class=md-header__title data-md-component=header-title> <div class=md-header__ellipsis> <div class=md-header__topic> <span class=md-ellipsis> JSON for Modern C++ </span> </div> <div class=md-header__topic data-md-component=header-topic> <span class=md-ellipsis> operator= </span> </div> </div> </div> <form class=md-header__option data-md-component=palette> <input class=md-option data-md-color-media="(prefers-color-scheme: light)" data-md-color-scheme=default data-md-color-primary=indigo data-md-color-accent=indigo aria-label="Switch to dark mode" type=radio name=__palette id=__palette_0> <label class="md-header__button md-icon" title="Switch to dark mode" for=__palette_1 hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a4 4 0 0 0-4 4 4 4 0 0 0 4 4 4 4 0 0 0 4-4 4 4 0 0 0-4-4m0 10a6 6 0 0 1-6-6 6 6 0 0 1 6-6 6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12z"/></svg> </label> <input class=md-option data-md-color-media="(prefers-color-scheme: dark)" data-md-color-scheme=slate data-md-color-primary=indigo data-md-color-accent=indigo aria-label="Switch to light mode" type=radio name=__palette id=__palette_1> <label class="md-header__button md-icon" title="Switch to light mode" for=__palette_0 hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 18c-.89 0-1.74-.2-2.5-.55C11.56 16.5 13 14.42 13 12s-1.44-4.5-3.5-5.45C10.26 6.2 11.11 6 12 6a6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12z"/></svg> </label> </form> <script>var palette=__md_get("__palette");if(palette&&palette.color){if("(prefers-color-scheme)"===palette.color.media){var media=matchMedia("(prefers-color-scheme: light)"),input=document.querySelector(media.matches?"[data-md-color-media='(prefers-color-scheme: light)']":"[data-md-color-media='(prefers-color-scheme: dark)']");palette.color.media=input.getAttribute("data-md-color-media"),palette.color.scheme=input.getAttribute("data-md-color-scheme"),palette.color.primary=input.getAttribute("data-md-color-primary"),palette.color.accent=input.getAttribute("data-md-color-accent")}for(var[key,value]of Object.entries(palette.color))document.body.setAttribute("data-md-color-"+key,value)}</script> <label class="md-header__button md-icon" for=__search> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg> </label> <div class=md-search data-md-component=search role=dialog> <label class=md-search__overlay for=__search></label> <div class=md-search__inner role=search> <form class=md-search__form name=search> <input type=text class=md-search__input name=query aria-label=Search placeholder=Search autocapitalize=off autocorrect=off autocomplete=off spellcheck=false data-md-component=search-query required> <label class="md-search__icon md-icon" for=__search> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11z"/></svg> </label> <nav class=md-search__options aria-label=Search> <button type=reset class="md-search__icon md-icon" title=Clear aria-label=Clear tabindex=-1> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z"/></svg> </button> </nav> </form> <div class=md-search__output> <div class=md-search__scrollwrap tabindex=0 data-md-scrollfix> <div class=md-search-result data-md-component=search-result> <div class=md-search-result__meta> Initializing search </div> <ol class=md-search-result__list role=presentation></ol> </div> </div> </div> </div> </div> <div class=md-header__source> <a href="https://github.com/nlohmann/json" title="Go to repository" class="md-source" data-md-component="source"> <div class="md-source__icon md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </div> <div class=md-source__repository> nlohmann/json </div> </a> </div> </nav> </header> <div class=md-container data-md-component=container> <nav class=md-tabs aria-label=Tabs data-md-component=tabs> <div class=md-grid> <ul class=md-tabs__list> <li class=md-tabs__item> <a href=../../.. class=md-tabs__link> Home </a> </li> <li class=md-tabs__item> <a href=../../../features/arbitrary_types/ class=md-tabs__link> Features </a> </li> <li class=md-tabs__item> <a href=../../../integration/ class=md-tabs__link> Integration </a> </li> <li class="md-tabs__item md-tabs__item--active"> <a href=../ class=md-tabs__link> API Documentation </a> </li> <li class=md-tabs__item> <a href=../../../community/ class=md-tabs__link> Community </a> </li> </ul> </div> </nav> <main class=md-main data-md-component=main> <div class="md-main__inner md-grid"> <div class="md-sidebar md-sidebar--primary" data-md-component=sidebar data-md-type=navigation> <div class=md-sidebar__scrollwrap> <div class=md-sidebar__inner> <nav class="md-nav md-nav--primary md-nav--lifted" aria-label=Navigation data-md-level=0> <label class=md-nav__title for=__drawer> <a href=../../.. title="JSON for Modern C++" class="md-nav__button md-logo" aria-label="JSON for Modern C++" data-md-component=logo> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54"/></svg> </a> JSON for Modern C++ </label> <div class=md-nav__source> <a href="https://github.com/nlohmann/json" title="Go to repository" class="md-source" data-md-component="source"> <div class="md-source__icon md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </div> <div class=md-source__repository> nlohmann/json </div> </a> </div> <ul class=md-nav__list data-md-scrollfix> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_1> <div class="md-nav__link md-nav__container"> <a href=../../.. class="md-nav__link "> <span class=md-ellipsis> Home </span> </a> <label class="md-nav__link " for=__nav_1 id=__nav_1_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_1_label aria-expanded=false> <label class=md-nav__title for=__nav_1> <span class="md-nav__icon md-icon"></span> Home </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../home/license/ class=md-nav__link> <span class=md-ellipsis> License </span> </a> </li> <li class=md-nav__item> <a href=../../../home/faq/ class=md-nav__link> <span class=md-ellipsis> FAQ </span> </a> </li> <li class=md-nav__item> <a href=../../../home/exceptions/ class=md-nav__link> <span class=md-ellipsis> Exceptions </span> </a> </li> <li class=md-nav__item> <a href=../../../home/releases/ class=md-nav__link> <span class=md-ellipsis> Releases </span> </a> </li> <li class=md-nav__item> <a href=../../../home/design_goals/ class=md-nav__link> <span class=md-ellipsis> Design goals </span> </a> </li> <li class=md-nav__item> <a href=../../../home/architecture/ class=md-nav__link> <span class=md-ellipsis> Architecture </span> </a> </li> <li class=md-nav__item> <a href=../../../home/customers/ class=md-nav__link> <span class=md-ellipsis> Customers </span> </a> </li> <li class=md-nav__item> <a href=../../../home/sponsors/ class=md-nav__link> <span class=md-ellipsis> Sponsors </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2> <label class=md-nav__link for=__nav_2 id=__nav_2_label tabindex=0> <span class=md-ellipsis> Features </span> <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_2_label aria-expanded=false> <label class=md-nav__title for=__nav_2> <span class="md-nav__icon md-icon"></span> Features </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/arbitrary_types/ class=md-nav__link> <span class=md-ellipsis> Arbitrary Type Conversions </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_2> <div class="md-nav__link md-nav__container"> <a href=../../../features/binary_formats/ class="md-nav__link "> <span class=md-ellipsis> Binary Formats </span> </a> <label class="md-nav__link " for=__nav_2_2 id=__nav_2_2_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_2_label aria-expanded=false> <label class=md-nav__title for=__nav_2_2> <span class="md-nav__icon md-icon"></span> Binary Formats </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/binary_formats/bjdata/ class=md-nav__link> <span class=md-ellipsis> BJData </span> </a> </li> <li class=md-nav__item> <a href=../../../features/binary_formats/bson/ class=md-nav__link> <span class=md-ellipsis> BSON </span> </a> </li> <li class=md-nav__item> <a href=../../../features/binary_formats/cbor/ class=md-nav__link> <span class=md-ellipsis> CBOR </span> </a> </li> <li class=md-nav__item> <a href=../../../features/binary_formats/messagepack/ class=md-nav__link> <span class=md-ellipsis> MessagePack </span> </a> </li> <li class=md-nav__item> <a href=../../../features/binary_formats/ubjson/ class=md-nav__link> <span class=md-ellipsis> UBJSON </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../../features/binary_values/ class=md-nav__link> <span class=md-ellipsis> Binary Values </span> </a> </li> <li class=md-nav__item> <a href=../../../features/comments/ class=md-nav__link> <span class=md-ellipsis> Comments </span> </a> </li> <li class=md-nav__item> <a href=../../../features/trailing_commas/ class=md-nav__link> <span class=md-ellipsis> Trailing Commas </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_6> <div class="md-nav__link md-nav__container"> <a href=../../../features/element_access/ class="md-nav__link "> <span class=md-ellipsis> Element Access </span> </a> <label class="md-nav__link " for=__nav_2_6 id=__nav_2_6_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_6_label aria-expanded=false> <label class=md-nav__title for=__nav_2_6> <span class="md-nav__icon md-icon"></span> Element Access </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/element_access/unchecked_access/ class=md-nav__link> <span class=md-ellipsis> Unchecked access: operator[] </span> </a> </li> <li class=md-nav__item> <a href=../../../features/element_access/checked_access/ class=md-nav__link> <span class=md-ellipsis> Checked access: at </span> </a> </li> <li class=md-nav__item> <a href=../../../features/element_access/default_value/ class=md-nav__link> <span class=md-ellipsis> Access with default value: value </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../../features/iterators/ class=md-nav__link> <span class=md-ellipsis> Iterators </span> </a> </li> <li class=md-nav__item> <a href=../../../features/json_pointer/ class=md-nav__link> <span class=md-ellipsis> JSON Pointer </span> </a> </li> <li class=md-nav__item> <a href=../../../features/json_patch/ class=md-nav__link> <span class=md-ellipsis> JSON Patch and Diff </span> </a> </li> <li class=md-nav__item> <a href=../../../features/merge_patch/ class=md-nav__link> <span class=md-ellipsis> JSON Merge Patch </span> </a> </li> <li class=md-nav__item> <a href=../../../features/modules/ class=md-nav__link> <span class=md-ellipsis> Modules </span> </a> </li> <li class=md-nav__item> <a href=../../../features/namespace/ class=md-nav__link> <span class=md-ellipsis> nlohmann Namespace </span> </a> </li> <li class=md-nav__item> <a href=../../../features/object_order/ class=md-nav__link> <span class=md-ellipsis> Object Order </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_14> <div class="md-nav__link md-nav__container"> <a href=../../../features/parsing/ class="md-nav__link "> <span class=md-ellipsis> Parsing </span> </a> <label class="md-nav__link " for=__nav_2_14 id=__nav_2_14_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_14_label aria-expanded=false> <label class=md-nav__title for=__nav_2_14> <span class="md-nav__icon md-icon"></span> Parsing </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/parsing/json_lines/ class=md-nav__link> <span class=md-ellipsis> JSON Lines </span> </a> </li> <li class=md-nav__item> <a href=../../../features/parsing/parse_exceptions/ class=md-nav__link> <span class=md-ellipsis> Parsing and Exceptions </span> </a> </li> <li class=md-nav__item> <a href=../../../features/parsing/parser_callbacks/ class=md-nav__link> <span class=md-ellipsis> Parser Callbacks </span> </a> </li> <li class=md-nav__item> <a href=../../../features/parsing/sax_interface/ class=md-nav__link> <span class=md-ellipsis> SAX Interface </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../../features/assertions/ class=md-nav__link> <span class=md-ellipsis> Runtime Assertions </span> </a> </li> <li class=md-nav__item> <a href=../../../features/enum_conversion/ class=md-nav__link> <span class=md-ellipsis> Specializing enum conversion </span> </a> </li> <li class=md-nav__item> <a href=../../../features/macros/ class=md-nav__link> <span class=md-ellipsis> Supported Macros </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_18> <div class="md-nav__link md-nav__container"> <a href=../../../features/types/ class="md-nav__link "> <span class=md-ellipsis> Types </span> </a> <label class="md-nav__link " for=__nav_2_18 id=__nav_2_18_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_18_label aria-expanded=false> <label class=md-nav__title for=__nav_2_18> <span class="md-nav__icon md-icon"></span> Types </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/types/number_handling/ class=md-nav__link> <span class=md-ellipsis> Number Handling </span> </a> </li> </ul> </nav> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_3> <div class="md-nav__link md-nav__container"> <a href=../../../integration/ class="md-nav__link "> <span class=md-ellipsis> Integration </span> </a> <label class="md-nav__link " for=__nav_3 id=__nav_3_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_3_label aria-expanded=false> <label class=md-nav__title for=__nav_3> <span class="md-nav__icon md-icon"></span> Integration </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../integration/migration_guide/ class=md-nav__link> <span class=md-ellipsis> Migration Guide </span> </a> </li> <li class=md-nav__item> <a href=../../../integration/cmake/ class=md-nav__link> <span class=md-ellipsis> CMake </span> </a> </li> <li class=md-nav__item> <a href=../../../integration/package_managers/ class=md-nav__link> <span class=md-ellipsis> Package Managers </span> </a> </li> <li class=md-nav__item> <a href=../../../integration/pkg-config/ class=md-nav__link> <span class=md-ellipsis> Pkg-config </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--active md-nav__item--section md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4 checked> <label class=md-nav__link for=__nav_4 id=__nav_4_label tabindex> <span class=md-ellipsis> API Documentation </span> <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_4_label aria-expanded=true> <label class=md-nav__title for=__nav_4> <span class="md-nav__icon md-icon"></span> API Documentation </label> <ul class=md-nav__list data-md-scrollfix> <li class="md-nav__item md-nav__item--active md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_1 checked> <div class="md-nav__link md-nav__container"> <a href=../ class="md-nav__link "> <span class=md-ellipsis> basic_json </span> </a> <label class="md-nav__link " for=__nav_4_1 id=__nav_4_1_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_1_label aria-expanded=true> <label class=md-nav__title for=__nav_4_1> <span class="md-nav__icon md-icon"></span> basic_json </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../basic_json/ class=md-nav__link> <span class=md-ellipsis> (Constructor) </span> </a> </li> <li class=md-nav__item> <a href=../~basic_json/ class=md-nav__link> <span class=md-ellipsis> (Destructor) </span> </a> </li> <li class=md-nav__item> <a href=../accept/ class=md-nav__link> <span class=md-ellipsis> accept </span> </a> </li> <li class=md-nav__item> <a href=../array/ class=md-nav__link> <span class=md-ellipsis> array </span> </a> </li> <li class=md-nav__item> <a href=../array_t/ class=md-nav__link> <span class=md-ellipsis> array_t </span> </a> </li> <li class=md-nav__item> <a href=../at/ class=md-nav__link> <span class=md-ellipsis> at </span> </a> </li> <li class=md-nav__item> <a href=../back/ class=md-nav__link> <span class=md-ellipsis> back </span> </a> </li> <li class=md-nav__item> <a href=../begin/ class=md-nav__link> <span class=md-ellipsis> begin </span> </a> </li> <li class=md-nav__item> <a href=../binary/ class=md-nav__link> <span class=md-ellipsis> binary </span> </a> </li> <li class=md-nav__item> <a href=../binary_t/ class=md-nav__link> <span class=md-ellipsis> binary_t </span> </a> </li> <li class=md-nav__item> <a href=../boolean_t/ class=md-nav__link> <span class=md-ellipsis> boolean_t </span> </a> </li> <li class=md-nav__item> <a href=../cbegin/ class=md-nav__link> <span class=md-ellipsis> cbegin </span> </a> </li> <li class=md-nav__item> <a href=../cbor_tag_handler_t/ class=md-nav__link> <span class=md-ellipsis> cbor_tag_handler_t </span> </a> </li> <li class=md-nav__item> <a href=../cend/ class=md-nav__link> <span class=md-ellipsis> cend </span> </a> </li> <li class=md-nav__item> <a href=../clear/ class=md-nav__link> <span class=md-ellipsis> clear </span> </a> </li> <li class=md-nav__item> <a href=../contains/ class=md-nav__link> <span class=md-ellipsis> contains </span> </a> </li> <li class=md-nav__item> <a href=../count/ class=md-nav__link> <span class=md-ellipsis> count </span> </a> </li> <li class=md-nav__item> <a href=../crbegin/ class=md-nav__link> <span class=md-ellipsis> crbegin </span> </a> </li> <li class=md-nav__item> <a href=../crend/ class=md-nav__link> <span class=md-ellipsis> crend </span> </a> </li> <li class=md-nav__item> <a href=../default_object_comparator_t/ class=md-nav__link> <span class=md-ellipsis> default_object_comparator_t </span> </a> </li> <li class=md-nav__item> <a href=../diff/ class=md-nav__link> <span class=md-ellipsis> diff </span> </a> </li> <li class=md-nav__item> <a href=../dump/ class=md-nav__link> <span class=md-ellipsis> dump </span> </a> </li> <li class=md-nav__item> <a href=../emplace/ class=md-nav__link> <span class=md-ellipsis> emplace </span> </a> </li> <li class=md-nav__item> <a href=../emplace_back/ class=md-nav__link> <span class=md-ellipsis> emplace_back </span> </a> </li> <li class=md-nav__item> <a href=../empty/ class=md-nav__link> <span class=md-ellipsis> empty </span> </a> </li> <li class=md-nav__item> <a href=../end/ class=md-nav__link> <span class=md-ellipsis> end </span> </a> </li> <li class=md-nav__item> <a href=../end_pos/ class=md-nav__link> <span class=md-ellipsis> end_pos </span> </a> </li> <li class=md-nav__item> <a href=../erase/ class=md-nav__link> <span class=md-ellipsis> erase </span> </a> </li> <li class=md-nav__item> <a href=../error_handler_t/ class=md-nav__link> <span class=md-ellipsis> error_handler_t </span> </a> </li> <li class=md-nav__item> <a href=../exception/ class=md-nav__link> <span class=md-ellipsis> exception </span> </a> </li> <li class=md-nav__item> <a href=../find/ class=md-nav__link> <span class=md-ellipsis> find </span> </a> </li> <li class=md-nav__item> <a href=../flatten/ class=md-nav__link> <span class=md-ellipsis> flatten </span> </a> </li> <li class=md-nav__item> <a href=../from_bjdata/ class=md-nav__link> <span class=md-ellipsis> from_bjdata </span> </a> </li> <li class=md-nav__item> <a href=../from_bson/ class=md-nav__link> <span class=md-ellipsis> from_bson </span> </a> </li> <li class=md-nav__item> <a href=../from_cbor/ class=md-nav__link> <span class=md-ellipsis> from_cbor </span> </a> </li> <li class=md-nav__item> <a href=../from_msgpack/ class=md-nav__link> <span class=md-ellipsis> from_msgpack </span> </a> </li> <li class=md-nav__item> <a href=../from_ubjson/ class=md-nav__link> <span class=md-ellipsis> from_ubjson </span> </a> </li> <li class=md-nav__item> <a href=../front/ class=md-nav__link> <span class=md-ellipsis> front </span> </a> </li> <li class=md-nav__item> <a href=../get/ class=md-nav__link> <span class=md-ellipsis> get </span> </a> </li> <li class=md-nav__item> <a href=../get_allocator/ class=md-nav__link> <span class=md-ellipsis> get_allocator </span> </a> </li> <li class=md-nav__item> <a href=../get_binary/ class=md-nav__link> <span class=md-ellipsis> get_binary </span> </a> </li> <li class=md-nav__item> <a href=../get_ptr/ class=md-nav__link> <span class=md-ellipsis> get_ptr </span> </a> </li> <li class=md-nav__item> <a href=../get_ref/ class=md-nav__link> <span class=md-ellipsis> get_ref </span> </a> </li> <li class=md-nav__item> <a href=../get_to/ class=md-nav__link> <span class=md-ellipsis> get_to </span> </a> </li> <li class=md-nav__item> <a href=../std_hash/ class=md-nav__link> <span class=md-ellipsis> std::hash&lt;basic_json&gt; </span> </a> </li> <li class=md-nav__item> <a href=../input_format_t/ class=md-nav__link> <span class=md-ellipsis> input_format_t </span> </a> </li> <li class=md-nav__item> <a href=../insert/ class=md-nav__link> <span class=md-ellipsis> insert </span> </a> </li> <li class=md-nav__item> <a href=../invalid_iterator/ class=md-nav__link> <span class=md-ellipsis> invalid_iterator </span> </a> </li> <li class=md-nav__item> <a href=../is_array/ class=md-nav__link> <span class=md-ellipsis> is_array </span> </a> </li> <li class=md-nav__item> <a href=../is_binary/ class=md-nav__link> <span class=md-ellipsis> is_binary </span> </a> </li> <li class=md-nav__item> <a href=../is_boolean/ class=md-nav__link> <span class=md-ellipsis> is_boolean </span> </a> </li> <li class=md-nav__item> <a href=../is_discarded/ class=md-nav__link> <span class=md-ellipsis> is_discarded </span> </a> </li> <li class=md-nav__item> <a href=../is_null/ class=md-nav__link> <span class=md-ellipsis> is_null </span> </a> </li> <li class=md-nav__item> <a href=../is_number/ class=md-nav__link> <span class=md-ellipsis> is_number </span> </a> </li> <li class=md-nav__item> <a href=../is_number_float/ class=md-nav__link> <span class=md-ellipsis> is_number_float </span> </a> </li> <li class=md-nav__item> <a href=../is_number_integer/ class=md-nav__link> <span class=md-ellipsis> is_number_integer </span> </a> </li> <li class=md-nav__item> <a href=../is_number_unsigned/ class=md-nav__link> <span class=md-ellipsis> is_number_unsigned </span> </a> </li> <li class=md-nav__item> <a href=../is_object/ class=md-nav__link> <span class=md-ellipsis> is_object </span> </a> </li> <li class=md-nav__item> <a href=../is_primitive/ class=md-nav__link> <span class=md-ellipsis> is_primitive </span> </a> </li> <li class=md-nav__item> <a href=../is_string/ class=md-nav__link> <span class=md-ellipsis> is_string </span> </a> </li> <li class=md-nav__item> <a href=../is_structured/ class=md-nav__link> <span class=md-ellipsis> is_structured </span> </a> </li> <li class=md-nav__item> <a href=../items/ class=md-nav__link> <span class=md-ellipsis> items </span> </a> </li> <li class=md-nav__item> <a href=../json_base_class_t/ class=md-nav__link> <span class=md-ellipsis> json_base_class_t </span> </a> </li> <li class=md-nav__item> <a href=../json_serializer/ class=md-nav__link> <span class=md-ellipsis> json_serializer </span> </a> </li> <li class=md-nav__item> <a href=../max_size/ class=md-nav__link> <span class=md-ellipsis> max_size </span> </a> </li> <li class=md-nav__item> <a href=../meta/ class=md-nav__link> <span class=md-ellipsis> meta </span> </a> </li> <li class=md-nav__item> <a href=../merge_patch/ class=md-nav__link> <span class=md-ellipsis> merge_patch </span> </a> </li> <li class=md-nav__item> <a href=../number_float_t/ class=md-nav__link> <span class=md-ellipsis> number_float_t </span> </a> </li> <li class=md-nav__item> <a href=../number_integer_t/ class=md-nav__link> <span class=md-ellipsis> number_integer_t </span> </a> </li> <li class=md-nav__item> <a href=../number_unsigned_t/ class=md-nav__link> <span class=md-ellipsis> number_unsigned_t </span> </a> </li> <li class=md-nav__item> <a href=../object/ class=md-nav__link> <span class=md-ellipsis> object </span> </a> </li> <li class=md-nav__item> <a href=../object_comparator_t/ class=md-nav__link> <span class=md-ellipsis> object_comparator_t </span> </a> </li> <li class=md-nav__item> <a href=../object_t/ class=md-nav__link> <span class=md-ellipsis> object_t </span> </a> </li> <li class=md-nav__item> <a href=../operator_ValueType/ class=md-nav__link> <span class=md-ellipsis> operator ValueType </span> </a> </li> <li class=md-nav__item> <a href=../operator_value_t/ class=md-nav__link> <span class=md-ellipsis> operator value_t </span> </a> </li> <li class=md-nav__item> <a href=../operator%5B%5D/ class=md-nav__link> <span class=md-ellipsis> operator[] </span> </a> </li> <li class="md-nav__item md-nav__item--active"> <input class="md-nav__toggle md-toggle" type=checkbox id=__toc> <label class="md-nav__link md-nav__link--active" for=__toc> <span class=md-ellipsis> operator= </span> <span class="md-nav__icon md-icon"></span> </label> <a href=./ class="md-nav__link md-nav__link--active"> <span class=md-ellipsis> operator= </span> </a> <nav class="md-nav md-nav--secondary" aria-label="Table of contents"> <label class=md-nav__title for=__toc> <span class="md-nav__icon md-icon"></span> Table of contents </label> <ul class=md-nav__list data-md-component=toc data-md-scrollfix> <li class=md-nav__item> <a href=#parameters class=md-nav__link> <span class=md-ellipsis> Parameters </span> </a> </li> <li class=md-nav__item> <a href=#complexity class=md-nav__link> <span class=md-ellipsis> Complexity </span> </a> </li> <li class=md-nav__item> <a href=#examples class=md-nav__link> <span class=md-ellipsis> Examples </span> </a> </li> <li class=md-nav__item> <a href=#version-history class=md-nav__link> <span class=md-ellipsis> Version history </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../operator%2B%3D/ class=md-nav__link> <span class=md-ellipsis> operator+= </span> </a> </li> <li class=md-nav__item> <a href=../operator_eq/ class=md-nav__link> <span class=md-ellipsis> operator== </span> </a> </li> <li class=md-nav__item> <a href=../operator_ne/ class=md-nav__link> <span class=md-ellipsis> operator!= </span> </a> </li> <li class=md-nav__item> <a href=../operator_lt/ class=md-nav__link> <span class=md-ellipsis> operator< </span> </a> </li> <li class=md-nav__item> <a href=../operator_gt/ class=md-nav__link> <span class=md-ellipsis> operator> </span> </a> </li> <li class=md-nav__item> <a href=../operator_le/ class=md-nav__link> <span class=md-ellipsis> operator<= </span> </a> </li> <li class=md-nav__item> <a href=../operator_ge/ class=md-nav__link> <span class=md-ellipsis> operator>= </span> </a> </li> <li class=md-nav__item> <a href=../operator_spaceship/ class=md-nav__link> <span class=md-ellipsis> operator<=> </span> </a> </li> <li class=md-nav__item> <a href=../out_of_range/ class=md-nav__link> <span class=md-ellipsis> out_of_range </span> </a> </li> <li class=md-nav__item> <a href=../other_error/ class=md-nav__link> <span class=md-ellipsis> other_error </span> </a> </li> <li class=md-nav__item> <a href=../parse/ class=md-nav__link> <span class=md-ellipsis> parse </span> </a> </li> <li class=md-nav__item> <a href=../parse_error/ class=md-nav__link> <span class=md-ellipsis> parse_error </span> </a> </li> <li class=md-nav__item> <a href=../parse_event_t/ class=md-nav__link> <span class=md-ellipsis> parse_event_t </span> </a> </li> <li class=md-nav__item> <a href=../parser_callback_t/ class=md-nav__link> <span class=md-ellipsis> parser_callback_t </span> </a> </li> <li class=md-nav__item> <a href=../patch/ class=md-nav__link> <span class=md-ellipsis> patch </span> </a> </li> <li class=md-nav__item> <a href=../patch_inplace/ class=md-nav__link> <span class=md-ellipsis> patch_inplace </span> </a> </li> <li class=md-nav__item> <a href=../push_back/ class=md-nav__link> <span class=md-ellipsis> push_back </span> </a> </li> <li class=md-nav__item> <a href=../rbegin/ class=md-nav__link> <span class=md-ellipsis> rbegin </span> </a> </li> <li class=md-nav__item> <a href=../rend/ class=md-nav__link> <span class=md-ellipsis> rend </span> </a> </li> <li class=md-nav__item> <a href=../sax_parse/ class=md-nav__link> <span class=md-ellipsis> sax_parse </span> </a> </li> <li class=md-nav__item> <a href=../size/ class=md-nav__link> <span class=md-ellipsis> size </span> </a> </li> <li class=md-nav__item> <a href=../start_pos/ class=md-nav__link> <span class=md-ellipsis> start_pos </span> </a> </li> <li class=md-nav__item> <a href=../string_t/ class=md-nav__link> <span class=md-ellipsis> string_t </span> </a> </li> <li class=md-nav__item> <a href=../swap/ class=md-nav__link> <span class=md-ellipsis> swap </span> </a> </li> <li class=md-nav__item> <a href=../std_swap/ class=md-nav__link> <span class=md-ellipsis> std::swap&lt;basic_json&gt; </span> </a> </li> <li class=md-nav__item> <a href=../to_bjdata/ class=md-nav__link> <span class=md-ellipsis> to_bjdata </span> </a> </li> <li class=md-nav__item> <a href=../to_bson/ class=md-nav__link> <span class=md-ellipsis> to_bson </span> </a> </li> <li class=md-nav__item> <a href=../to_cbor/ class=md-nav__link> <span class=md-ellipsis> to_cbor </span> </a> </li> <li class=md-nav__item> <a href=../to_msgpack/ class=md-nav__link> <span class=md-ellipsis> to_msgpack </span> </a> </li> <li class=md-nav__item> <a href=../to_string/ class=md-nav__link> <span class=md-ellipsis> to_string </span> </a> </li> <li class=md-nav__item> <a href=../to_ubjson/ class=md-nav__link> <span class=md-ellipsis> to_ubjson </span> </a> </li> <li class=md-nav__item> <a href=../type/ class=md-nav__link> <span class=md-ellipsis> type </span> </a> </li> <li class=md-nav__item> <a href=../type_error/ class=md-nav__link> <span class=md-ellipsis> type_error </span> </a> </li> <li class=md-nav__item> <a href=../type_name/ class=md-nav__link> <span class=md-ellipsis> type_name </span> </a> </li> <li class=md-nav__item> <a href=../unflatten/ class=md-nav__link> <span class=md-ellipsis> unflatten </span> </a> </li> <li class=md-nav__item> <a href=../update/ class=md-nav__link> <span class=md-ellipsis> update </span> </a> </li> <li class=md-nav__item> <a href=../value/ class=md-nav__link> <span class=md-ellipsis> value </span> </a> </li> <li class=md-nav__item> <a href=../value_t/ class=md-nav__link> <span class=md-ellipsis> value_t </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_2> <div class="md-nav__link md-nav__container"> <a href=../../byte_container_with_subtype/ class="md-nav__link "> <span class=md-ellipsis> byte_container_with_subtype </span> </a> <label class="md-nav__link " for=__nav_4_2 id=__nav_4_2_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_2_label aria-expanded=false> <label class=md-nav__title for=__nav_4_2> <span class="md-nav__icon md-icon"></span> byte_container_with_subtype </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../byte_container_with_subtype/byte_container_with_subtype/ class=md-nav__link> <span class=md-ellipsis> (constructor) </span> </a> </li> <li class=md-nav__item> <a href=../../byte_container_with_subtype/clear_subtype/ class=md-nav__link> <span class=md-ellipsis> clear_subtype </span> </a> </li> <li class=md-nav__item> <a href=../../byte_container_with_subtype/has_subtype/ class=md-nav__link> <span class=md-ellipsis> has_subtype </span> </a> </li> <li class=md-nav__item> <a href=../../byte_container_with_subtype/set_subtype/ class=md-nav__link> <span class=md-ellipsis> set_subtype </span> </a> </li> <li class=md-nav__item> <a href=../../byte_container_with_subtype/subtype/ class=md-nav__link> <span class=md-ellipsis> subtype </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_3> <div class="md-nav__link md-nav__container"> <a href=../../adl_serializer/ class="md-nav__link "> <span class=md-ellipsis> adl_serializer </span> </a> <label class="md-nav__link " for=__nav_4_3 id=__nav_4_3_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_3_label aria-expanded=false> <label class=md-nav__title for=__nav_4_3> <span class="md-nav__icon md-icon"></span> adl_serializer </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../adl_serializer/from_json/ class=md-nav__link> <span class=md-ellipsis> from_json </span> </a> </li> <li class=md-nav__item> <a href=../../adl_serializer/to_json/ class=md-nav__link> <span class=md-ellipsis> to_json </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../json/ class=md-nav__link> <span class=md-ellipsis> json </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_5> <div class="md-nav__link md-nav__container"> <a href=../../json_pointer/ class="md-nav__link "> <span class=md-ellipsis> json_pointer </span> </a> <label class="md-nav__link " for=__nav_4_5 id=__nav_4_5_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_5_label aria-expanded=false> <label class=md-nav__title for=__nav_4_5> <span class="md-nav__icon md-icon"></span> json_pointer </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../json_pointer/json_pointer/ class=md-nav__link> <span class=md-ellipsis> (Constructor) </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/back/ class=md-nav__link> <span class=md-ellipsis> back </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/empty/ class=md-nav__link> <span class=md-ellipsis> empty </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/front/ class=md-nav__link> <span class=md-ellipsis> front </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_string_t/ class=md-nav__link> <span class=md-ellipsis> operator string_t </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_eq/ class=md-nav__link> <span class=md-ellipsis> operator== </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_ne/ class=md-nav__link> <span class=md-ellipsis> operator!= </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_slash/ class=md-nav__link> <span class=md-ellipsis> operator/ </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_slasheq/ class=md-nav__link> <span class=md-ellipsis> operator/= </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/parent_pointer/ class=md-nav__link> <span class=md-ellipsis> parent_pointer </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/pop_back/ class=md-nav__link> <span class=md-ellipsis> pop_back </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/pop_front/ class=md-nav__link> <span class=md-ellipsis> pop_front </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/push_back/ class=md-nav__link> <span class=md-ellipsis> push_back </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/push_front/ class=md-nav__link> <span class=md-ellipsis> push_front </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/string_t/ class=md-nav__link> <span class=md-ellipsis> string_t </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/to_string/ class=md-nav__link> <span class=md-ellipsis> to_string </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_6> <div class="md-nav__link md-nav__container"> <a href=../../json_sax/ class="md-nav__link "> <span class=md-ellipsis> json_sax </span> </a> <label class="md-nav__link " for=__nav_4_6 id=__nav_4_6_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_6_label aria-expanded=false> <label class=md-nav__title for=__nav_4_6> <span class="md-nav__icon md-icon"></span> json_sax </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../json_sax/binary/ class=md-nav__link> <span class=md-ellipsis> binary </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/boolean/ class=md-nav__link> <span class=md-ellipsis> boolean </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/end_array/ class=md-nav__link> <span class=md-ellipsis> end_array </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/end_object/ class=md-nav__link> <span class=md-ellipsis> end_object </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/key/ class=md-nav__link> <span class=md-ellipsis> key </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/null/ class=md-nav__link> <span class=md-ellipsis> null </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/number_float/ class=md-nav__link> <span class=md-ellipsis> number_float </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/number_integer/ class=md-nav__link> <span class=md-ellipsis> number_integer </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/number_unsigned/ class=md-nav__link> <span class=md-ellipsis> number_unsigned </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/parse_error/ class=md-nav__link> <span class=md-ellipsis> parse_error </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/start_array/ class=md-nav__link> <span class=md-ellipsis> start_array </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/start_object/ class=md-nav__link> <span class=md-ellipsis> start_object </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/string/ class=md-nav__link> <span class=md-ellipsis> string </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../operator_ltlt/ class=md-nav__link> <span class=md-ellipsis> operator<<(basic_json), operator<<(json_pointer) </span> </a> </li> <li class=md-nav__item> <a href=../../operator_gtgt/ class=md-nav__link> <span class=md-ellipsis> operator>>(basic_json) </span> </a> </li> <li class=md-nav__item> <a href=../../operator_literal_json/ class=md-nav__link> <span class=md-ellipsis> operator""_json </span> </a> </li> <li class=md-nav__item> <a href=../../operator_literal_json_pointer/ class=md-nav__link> <span class=md-ellipsis> operator""_json_pointer </span> </a> </li> <li class=md-nav__item> <a href=../../ordered_json/ class=md-nav__link> <span class=md-ellipsis> ordered_json </span> </a> </li> <li class=md-nav__item> <a href=../../ordered_map/ class=md-nav__link> <span class=md-ellipsis> ordered_map </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_13> <div class="md-nav__link md-nav__container"> <a href=../../macros/ class="md-nav__link "> <span class=md-ellipsis> macros </span> </a> <label class="md-nav__link " for=__nav_4_13 id=__nav_4_13_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_13_label aria-expanded=false> <label class=md-nav__title for=__nav_4_13> <span class="md-nav__icon md-icon"></span> macros </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../macros/json_assert/ class=md-nav__link> <span class=md-ellipsis> JSON_ASSERT </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_brace_init_copy_semantics/ class=md-nav__link> <span class=md-ellipsis> JSON_BRACE_INIT_COPY_SEMANTICS </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_throw_user/ class=md-nav__link> <span class=md-ellipsis> JSON_CATCH_USER, JSON_THROW_USER, JSON_TRY_USER </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_diagnostics/ class=md-nav__link> <span class=md-ellipsis> JSON_DIAGNOSTICS </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_diagnostic_positions/ class=md-nav__link> <span class=md-ellipsis> JSON_DIAGNOSTIC_POSITIONS </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_disable_enum_serialization/ class=md-nav__link> <span class=md-ellipsis> JSON_DISABLE_ENUM_SERIALIZATION </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_has_cpp_11/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_CPP_11, JSON_HAS_CPP_14, JSON_HAS_CPP_17, JSON_HAS_CPP_20 </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_has_filesystem/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_EXPERIMENTAL_FILESYSTEM, JSON_HAS_FILESYSTEM </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_has_ranges/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_RANGES </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_has_static_rtti/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_STATIC_RTTI </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_has_three_way_comparison/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_THREE_WAY_COMPARISON </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_noexception/ class=md-nav__link> <span class=md-ellipsis> JSON_NOEXCEPTION </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_no_io/ class=md-nav__link> <span class=md-ellipsis> JSON_NO_IO </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_skip_library_version_check/ class=md-nav__link> <span class=md-ellipsis> JSON_SKIP_LIBRARY_VERSION_CHECK </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_skip_unsupported_compiler_check/ class=md-nav__link> <span class=md-ellipsis> JSON_SKIP_UNSUPPORTED_COMPILER_CHECK </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_use_global_udls/ class=md-nav__link> <span class=md-ellipsis> JSON_USE_GLOBAL_UDLS </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_use_implicit_conversions/ class=md-nav__link> <span class=md-ellipsis> JSON_USE_IMPLICIT_CONVERSIONS </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_use_legacy_discarded_value_comparison/ class=md-nav__link> <span class=md-ellipsis> JSON_USE_LEGACY_DISCARDED_VALUE_COMPARISON </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_define_derived_type/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_ONLY_SERIALIZE, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_define_type_intrusive/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_TYPE_INTRUSIVE, NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_TYPE_INTRUSIVE_ONLY_SERIALIZE </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_define_type_non_intrusive/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_define_type_with_names/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_TYPE_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_namespace/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_NAMESPACE </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_namespace_begin/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_NAMESPACE_BEGIN, NLOHMANN_JSON_NAMESPACE_END </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_namespace_no_version/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_NAMESPACE_NO_VERSION </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_serialize_enum/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_SERIALIZE_ENUM </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_serialize_enum_strict/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_SERIALIZE_ENUM_STRICT </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_version_major/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_VERSION_MAJOR, NLOHMANN_JSON_VERSION_MINOR, NLOHMANN_JSON_VERSION_PATCH </span> </a> </li> </ul> </nav> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_5> <div class="md-nav__link md-nav__container"> <a href=../../../community/ class="md-nav__link "> <span class=md-ellipsis> Community </span> </a> <label class="md-nav__link " for=__nav_5 id=__nav_5_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_5_label aria-expanded=false> <label class=md-nav__title for=__nav_5> <span class="md-nav__icon md-icon"></span> Community </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../community/code_of_conduct/ class=md-nav__link> <span class=md-ellipsis> Code of Conduct </span> </a> </li> <li class=md-nav__item> <a href=../../../community/contribution_guidelines/ class=md-nav__link> <span class=md-ellipsis> Contribution Guidelines </span> </a> </li> <li class=md-nav__item> <a href=../../../community/quality_assurance/ class=md-nav__link> <span class=md-ellipsis> Quality assurance </span> </a> </li> <li class=md-nav__item> <a href=../../../community/governance/ class=md-nav__link> <span class=md-ellipsis> Governance </span> </a> </li> <li class=md-nav__item> <a href=../../../community/security_policy/ class=md-nav__link> <span class=md-ellipsis> Security Policy </span> </a> </li> </ul> </nav> </li> </ul> </nav> </div> </div> </div> <div class="md-sidebar md-sidebar--secondary" data-md-component=sidebar data-md-type=toc> <div class=md-sidebar__scrollwrap> <div class=md-sidebar__inner> <nav class="md-nav md-nav--secondary" aria-label="Table of contents"> <label class=md-nav__title for=__toc> <span class="md-nav__icon md-icon"></span> Table of contents </label> <ul class=md-nav__list data-md-component=toc data-md-scrollfix> <li class=md-nav__item> <a href=#parameters class=md-nav__link> <span class=md-ellipsis> Parameters </span> </a> </li> <li class=md-nav__item> <a href=#complexity class=md-nav__link> <span class=md-ellipsis> Complexity </span> </a> </li> <li class=md-nav__item> <a href=#examples class=md-nav__link> <span class=md-ellipsis> Examples </span> </a> </li> <li class=md-nav__item> <a href=#version-history class=md-nav__link> <span class=md-ellipsis> Version history </span> </a> </li> </ul> </nav> </div> </div> </div> <div class=md-content data-md-component=content> <article class="md-content__inner md-typeset"> <a href="https://github.com/nlohmann/json/edit/develop/docs/mkdocs/docs/api/basic_json/operator=.md" title="Edit this page" class="md-content__button md-icon" rel="edit"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M10 20H6V4h7v5h5v3.1l2-2V8l-6-6H6c-1.1 0-2 .9-2 2v16c0 1.1.9 2 2 2h4zm10.2-7c.1 0 .3.1.4.2l1.3 1.3c.2.2.2.6 0 .8l-1 1-2.1-2.1 1-1c.1-.1.2-.2.4-.2m0 3.9L14.1 23H12v-2.1l6.1-6.1z"/></svg> </a> <a href="https://github.com/nlohmann/json/raw/develop/docs/mkdocs/docs/api/basic_json/operator=.md" title="View source of this page" class="md-content__button md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M17 18c.56 0 1 .44 1 1s-.44 1-1 1-1-.44-1-1 .44-1 1-1m0-3c-2.73 0-5.06 1.66-6 4 .94 2.34 3.27 4 6 4s5.06-1.66 6-4c-.94-2.34-3.27-4-6-4m0 6.5a2.5 2.5 0 0 1-2.5-2.5 2.5 2.5 0 0 1 2.5-2.5 2.5 2.5 0 0 1 2.5 2.5 2.5 2.5 0 0 1-2.5 2.5M9.27 20H6V4h7v5h5v4.07c.7.08 1.36.25 2 .49V8l-6-6H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h4.5a8.2 8.2 0 0 1-1.23-2"/></svg> </a> <h1 id=nlohmannbasic_jsonoperator><small>nlohmann::basic_json::</small>operator=<a class=headerlink href=#nlohmannbasic_jsonoperator title="Permanent link">&para;</a></h1> <div class=highlight><pre><span></span><code><span class=n>basic_json</span><span class=o>&amp;</span><span class=w> </span><span class=k>operator</span><span class=o>=</span><span class=p>(</span><span class=n>basic_json</span><span class=w> </span><span class=n>other</span><span class=p>)</span><span class=w> </span><span class=k>noexcept</span><span class=w> </span><span class=p>(</span>
+<!doctype html><html lang=en class=no-js> <head><meta charset=utf-8><meta name=viewport content="width=device-width,initial-scale=1"><meta name=author content="Niels Lohmann"><link href="https://json.nlohmann.me/api/basic_json/operator%3D/" rel="canonical"><link href=../operator%5B%5D/ rel=prev><link href=../operator%2B%3D/ rel=next><link rel=icon href=../../../assets/images/favicon.png><meta name=generator content="mkdocs-1.6.1, mkdocs-material-9.7.6"><title>operator= - JSON for Modern C++</title><link rel=stylesheet href=../../../assets/stylesheets/main.484c7ddc.min.css><link rel=stylesheet href=../../../assets/stylesheets/palette.ab4e12ef.min.css><link rel="stylesheet" href="../../../assets/external/fonts.googleapis.com/css.61a430c9.css"><style>:root{--md-text-font:"Roboto";--md-code-font:"JetBrains Mono"}</style><link rel=stylesheet href=../../../css/custom.css><script>__md_scope=new URL("../../..",location),__md_hash=e=>[...e].reduce(((e,_)=>(e<<5)-e+_.charCodeAt(0)),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script></head> <body dir=ltr data-md-color-scheme=default data-md-color-primary=indigo data-md-color-accent=indigo> <input class=md-toggle data-md-toggle=drawer type=checkbox id=__drawer autocomplete=off> <input class=md-toggle data-md-toggle=search type=checkbox id=__search autocomplete=off> <label class=md-overlay for=__drawer></label> <div data-md-component=skip> <a href=#nlohmannbasic_jsonoperator class=md-skip> Skip to content </a> </div> <div data-md-component=announce> </div> <header class=md-header data-md-component=header> <nav class="md-header__inner md-grid" aria-label=Header> <a href=../../.. title="JSON for Modern C++" class="md-header__button md-logo" aria-label="JSON for Modern C++" data-md-component=logo> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54"/></svg> </a> <label class="md-header__button md-icon" for=__drawer> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M3 6h18v2H3zm0 5h18v2H3zm0 5h18v2H3z"/></svg> </label> <div class=md-header__title data-md-component=header-title> <div class=md-header__ellipsis> <div class=md-header__topic> <span class=md-ellipsis> JSON for Modern C++ </span> </div> <div class=md-header__topic data-md-component=header-topic> <span class=md-ellipsis> operator= </span> </div> </div> </div> <form class=md-header__option data-md-component=palette> <input class=md-option data-md-color-media="(prefers-color-scheme: light)" data-md-color-scheme=default data-md-color-primary=indigo data-md-color-accent=indigo aria-label="Switch to dark mode" type=radio name=__palette id=__palette_0> <label class="md-header__button md-icon" title="Switch to dark mode" for=__palette_1 hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a4 4 0 0 0-4 4 4 4 0 0 0 4 4 4 4 0 0 0 4-4 4 4 0 0 0-4-4m0 10a6 6 0 0 1-6-6 6 6 0 0 1 6-6 6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12z"/></svg> </label> <input class=md-option data-md-color-media="(prefers-color-scheme: dark)" data-md-color-scheme=slate data-md-color-primary=indigo data-md-color-accent=indigo aria-label="Switch to light mode" type=radio name=__palette id=__palette_1> <label class="md-header__button md-icon" title="Switch to light mode" for=__palette_0 hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 18c-.89 0-1.74-.2-2.5-.55C11.56 16.5 13 14.42 13 12s-1.44-4.5-3.5-5.45C10.26 6.2 11.11 6 12 6a6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12z"/></svg> </label> </form> <script>var palette=__md_get("__palette");if(palette&&palette.color){if("(prefers-color-scheme)"===palette.color.media){var media=matchMedia("(prefers-color-scheme: light)"),input=document.querySelector(media.matches?"[data-md-color-media='(prefers-color-scheme: light)']":"[data-md-color-media='(prefers-color-scheme: dark)']");palette.color.media=input.getAttribute("data-md-color-media"),palette.color.scheme=input.getAttribute("data-md-color-scheme"),palette.color.primary=input.getAttribute("data-md-color-primary"),palette.color.accent=input.getAttribute("data-md-color-accent")}for(var[key,value]of Object.entries(palette.color))document.body.setAttribute("data-md-color-"+key,value)}</script> <label class="md-header__button md-icon" for=__search> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg> </label> <div class=md-search data-md-component=search role=dialog> <label class=md-search__overlay for=__search></label> <div class=md-search__inner role=search> <form class=md-search__form name=search> <input type=text class=md-search__input name=query aria-label=Search placeholder=Search autocapitalize=off autocorrect=off autocomplete=off spellcheck=false data-md-component=search-query required> <label class="md-search__icon md-icon" for=__search> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11z"/></svg> </label> <nav class=md-search__options aria-label=Search> <button type=reset class="md-search__icon md-icon" title=Clear aria-label=Clear tabindex=-1> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z"/></svg> </button> </nav> </form> <div class=md-search__output> <div class=md-search__scrollwrap tabindex=0 data-md-scrollfix> <div class=md-search-result data-md-component=search-result> <div class=md-search-result__meta> Initializing search </div> <ol class=md-search-result__list role=presentation></ol> </div> </div> </div> </div> </div> <div class=md-header__source> <a href="https://github.com/nlohmann/json" title="Go to repository" class="md-source" data-md-component="source"> <div class="md-source__icon md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </div> <div class=md-source__repository> nlohmann/json </div> </a> </div> </nav> </header> <div class=md-container data-md-component=container> <nav class=md-tabs aria-label=Tabs data-md-component=tabs> <div class=md-grid> <ul class=md-tabs__list> <li class=md-tabs__item> <a href=../../.. class=md-tabs__link> Home </a> </li> <li class=md-tabs__item> <a href=../../../features/arbitrary_types/ class=md-tabs__link> Features </a> </li> <li class=md-tabs__item> <a href=../../../integration/ class=md-tabs__link> Integration </a> </li> <li class="md-tabs__item md-tabs__item--active"> <a href=../ class=md-tabs__link> API Documentation </a> </li> <li class=md-tabs__item> <a href=../../../community/ class=md-tabs__link> Community </a> </li> </ul> </div> </nav> <main class=md-main data-md-component=main> <div class="md-main__inner md-grid"> <div class="md-sidebar md-sidebar--primary" data-md-component=sidebar data-md-type=navigation> <div class=md-sidebar__scrollwrap> <div class=md-sidebar__inner> <nav class="md-nav md-nav--primary md-nav--lifted" aria-label=Navigation data-md-level=0> <label class=md-nav__title for=__drawer> <a href=../../.. title="JSON for Modern C++" class="md-nav__button md-logo" aria-label="JSON for Modern C++" data-md-component=logo> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54"/></svg> </a> JSON for Modern C++ </label> <div class=md-nav__source> <a href="https://github.com/nlohmann/json" title="Go to repository" class="md-source" data-md-component="source"> <div class="md-source__icon md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </div> <div class=md-source__repository> nlohmann/json </div> </a> </div> <ul class=md-nav__list data-md-scrollfix> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_1> <div class="md-nav__link md-nav__container"> <a href=../../.. class="md-nav__link "> <span class=md-ellipsis> Home </span> </a> <label class="md-nav__link " for=__nav_1 id=__nav_1_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_1_label aria-expanded=false> <label class=md-nav__title for=__nav_1> <span class="md-nav__icon md-icon"></span> Home </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../home/license/ class=md-nav__link> <span class=md-ellipsis> License </span> </a> </li> <li class=md-nav__item> <a href=../../../home/faq/ class=md-nav__link> <span class=md-ellipsis> FAQ </span> </a> </li> <li class=md-nav__item> <a href=../../../home/exceptions/ class=md-nav__link> <span class=md-ellipsis> Exceptions </span> </a> </li> <li class=md-nav__item> <a href=../../../home/releases/ class=md-nav__link> <span class=md-ellipsis> Releases </span> </a> </li> <li class=md-nav__item> <a href=../../../home/design_goals/ class=md-nav__link> <span class=md-ellipsis> Design goals </span> </a> </li> <li class=md-nav__item> <a href=../../../home/architecture/ class=md-nav__link> <span class=md-ellipsis> Architecture </span> </a> </li> <li class=md-nav__item> <a href=../../../home/customers/ class=md-nav__link> <span class=md-ellipsis> Customers </span> </a> </li> <li class=md-nav__item> <a href=../../../home/sponsors/ class=md-nav__link> <span class=md-ellipsis> Sponsors </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2> <label class=md-nav__link for=__nav_2 id=__nav_2_label tabindex=0> <span class=md-ellipsis> Features </span> <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_2_label aria-expanded=false> <label class=md-nav__title for=__nav_2> <span class="md-nav__icon md-icon"></span> Features </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/arbitrary_types/ class=md-nav__link> <span class=md-ellipsis> Arbitrary Type Conversions </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_2> <div class="md-nav__link md-nav__container"> <a href=../../../features/binary_formats/ class="md-nav__link "> <span class=md-ellipsis> Binary Formats </span> </a> <label class="md-nav__link " for=__nav_2_2 id=__nav_2_2_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_2_label aria-expanded=false> <label class=md-nav__title for=__nav_2_2> <span class="md-nav__icon md-icon"></span> Binary Formats </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/binary_formats/bjdata/ class=md-nav__link> <span class=md-ellipsis> BJData </span> </a> </li> <li class=md-nav__item> <a href=../../../features/binary_formats/bson/ class=md-nav__link> <span class=md-ellipsis> BSON </span> </a> </li> <li class=md-nav__item> <a href=../../../features/binary_formats/cbor/ class=md-nav__link> <span class=md-ellipsis> CBOR </span> </a> </li> <li class=md-nav__item> <a href=../../../features/binary_formats/messagepack/ class=md-nav__link> <span class=md-ellipsis> MessagePack </span> </a> </li> <li class=md-nav__item> <a href=../../../features/binary_formats/ubjson/ class=md-nav__link> <span class=md-ellipsis> UBJSON </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../../features/binary_values/ class=md-nav__link> <span class=md-ellipsis> Binary Values </span> </a> </li> <li class=md-nav__item> <a href=../../../features/comments/ class=md-nav__link> <span class=md-ellipsis> Comments </span> </a> </li> <li class=md-nav__item> <a href=../../../features/trailing_commas/ class=md-nav__link> <span class=md-ellipsis> Trailing Commas </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_6> <div class="md-nav__link md-nav__container"> <a href=../../../features/element_access/ class="md-nav__link "> <span class=md-ellipsis> Element Access </span> </a> <label class="md-nav__link " for=__nav_2_6 id=__nav_2_6_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_6_label aria-expanded=false> <label class=md-nav__title for=__nav_2_6> <span class="md-nav__icon md-icon"></span> Element Access </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/element_access/unchecked_access/ class=md-nav__link> <span class=md-ellipsis> Unchecked access: operator[] </span> </a> </li> <li class=md-nav__item> <a href=../../../features/element_access/checked_access/ class=md-nav__link> <span class=md-ellipsis> Checked access: at </span> </a> </li> <li class=md-nav__item> <a href=../../../features/element_access/default_value/ class=md-nav__link> <span class=md-ellipsis> Access with default value: value </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../../features/iterators/ class=md-nav__link> <span class=md-ellipsis> Iterators </span> </a> </li> <li class=md-nav__item> <a href=../../../features/json_pointer/ class=md-nav__link> <span class=md-ellipsis> JSON Pointer </span> </a> </li> <li class=md-nav__item> <a href=../../../features/json_patch/ class=md-nav__link> <span class=md-ellipsis> JSON Patch and Diff </span> </a> </li> <li class=md-nav__item> <a href=../../../features/merge_patch/ class=md-nav__link> <span class=md-ellipsis> JSON Merge Patch </span> </a> </li> <li class=md-nav__item> <a href=../../../features/modules/ class=md-nav__link> <span class=md-ellipsis> Modules </span> </a> </li> <li class=md-nav__item> <a href=../../../features/namespace/ class=md-nav__link> <span class=md-ellipsis> nlohmann Namespace </span> </a> </li> <li class=md-nav__item> <a href=../../../features/object_order/ class=md-nav__link> <span class=md-ellipsis> Object Order </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_14> <div class="md-nav__link md-nav__container"> <a href=../../../features/parsing/ class="md-nav__link "> <span class=md-ellipsis> Parsing </span> </a> <label class="md-nav__link " for=__nav_2_14 id=__nav_2_14_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_14_label aria-expanded=false> <label class=md-nav__title for=__nav_2_14> <span class="md-nav__icon md-icon"></span> Parsing </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/parsing/json_lines/ class=md-nav__link> <span class=md-ellipsis> JSON Lines </span> </a> </li> <li class=md-nav__item> <a href=../../../features/parsing/parse_exceptions/ class=md-nav__link> <span class=md-ellipsis> Parsing and Exceptions </span> </a> </li> <li class=md-nav__item> <a href=../../../features/parsing/parser_callbacks/ class=md-nav__link> <span class=md-ellipsis> Parser Callbacks </span> </a> </li> <li class=md-nav__item> <a href=../../../features/parsing/sax_interface/ class=md-nav__link> <span class=md-ellipsis> SAX Interface </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../../features/assertions/ class=md-nav__link> <span class=md-ellipsis> Runtime Assertions </span> </a> </li> <li class=md-nav__item> <a href=../../../features/enum_conversion/ class=md-nav__link> <span class=md-ellipsis> Specializing enum conversion </span> </a> </li> <li class=md-nav__item> <a href=../../../features/macros/ class=md-nav__link> <span class=md-ellipsis> Supported Macros </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_18> <div class="md-nav__link md-nav__container"> <a href=../../../features/types/ class="md-nav__link "> <span class=md-ellipsis> Types </span> </a> <label class="md-nav__link " for=__nav_2_18 id=__nav_2_18_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_18_label aria-expanded=false> <label class=md-nav__title for=__nav_2_18> <span class="md-nav__icon md-icon"></span> Types </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/types/number_handling/ class=md-nav__link> <span class=md-ellipsis> Number Handling </span> </a> </li> </ul> </nav> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_3> <div class="md-nav__link md-nav__container"> <a href=../../../integration/ class="md-nav__link "> <span class=md-ellipsis> Integration </span> </a> <label class="md-nav__link " for=__nav_3 id=__nav_3_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_3_label aria-expanded=false> <label class=md-nav__title for=__nav_3> <span class="md-nav__icon md-icon"></span> Integration </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../integration/migration_guide/ class=md-nav__link> <span class=md-ellipsis> Migration Guide </span> </a> </li> <li class=md-nav__item> <a href=../../../integration/cmake/ class=md-nav__link> <span class=md-ellipsis> CMake </span> </a> </li> <li class=md-nav__item> <a href=../../../integration/package_managers/ class=md-nav__link> <span class=md-ellipsis> Package Managers </span> </a> </li> <li class=md-nav__item> <a href=../../../integration/pkg-config/ class=md-nav__link> <span class=md-ellipsis> Pkg-config </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--active md-nav__item--section md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4 checked> <label class=md-nav__link for=__nav_4 id=__nav_4_label tabindex> <span class=md-ellipsis> API Documentation </span> <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_4_label aria-expanded=true> <label class=md-nav__title for=__nav_4> <span class="md-nav__icon md-icon"></span> API Documentation </label> <ul class=md-nav__list data-md-scrollfix> <li class="md-nav__item md-nav__item--active md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_1 checked> <div class="md-nav__link md-nav__container"> <a href=../ class="md-nav__link "> <span class=md-ellipsis> basic_json </span> </a> <label class="md-nav__link " for=__nav_4_1 id=__nav_4_1_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_1_label aria-expanded=true> <label class=md-nav__title for=__nav_4_1> <span class="md-nav__icon md-icon"></span> basic_json </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../basic_json/ class=md-nav__link> <span class=md-ellipsis> (Constructor) </span> </a> </li> <li class=md-nav__item> <a href=../~basic_json/ class=md-nav__link> <span class=md-ellipsis> (Destructor) </span> </a> </li> <li class=md-nav__item> <a href=../accept/ class=md-nav__link> <span class=md-ellipsis> accept </span> </a> </li> <li class=md-nav__item> <a href=../array/ class=md-nav__link> <span class=md-ellipsis> array </span> </a> </li> <li class=md-nav__item> <a href=../array_t/ class=md-nav__link> <span class=md-ellipsis> array_t </span> </a> </li> <li class=md-nav__item> <a href=../at/ class=md-nav__link> <span class=md-ellipsis> at </span> </a> </li> <li class=md-nav__item> <a href=../back/ class=md-nav__link> <span class=md-ellipsis> back </span> </a> </li> <li class=md-nav__item> <a href=../begin/ class=md-nav__link> <span class=md-ellipsis> begin </span> </a> </li> <li class=md-nav__item> <a href=../binary/ class=md-nav__link> <span class=md-ellipsis> binary </span> </a> </li> <li class=md-nav__item> <a href=../binary_t/ class=md-nav__link> <span class=md-ellipsis> binary_t </span> </a> </li> <li class=md-nav__item> <a href=../boolean_t/ class=md-nav__link> <span class=md-ellipsis> boolean_t </span> </a> </li> <li class=md-nav__item> <a href=../cbegin/ class=md-nav__link> <span class=md-ellipsis> cbegin </span> </a> </li> <li class=md-nav__item> <a href=../cbor_tag_handler_t/ class=md-nav__link> <span class=md-ellipsis> cbor_tag_handler_t </span> </a> </li> <li class=md-nav__item> <a href=../cend/ class=md-nav__link> <span class=md-ellipsis> cend </span> </a> </li> <li class=md-nav__item> <a href=../clear/ class=md-nav__link> <span class=md-ellipsis> clear </span> </a> </li> <li class=md-nav__item> <a href=../contains/ class=md-nav__link> <span class=md-ellipsis> contains </span> </a> </li> <li class=md-nav__item> <a href=../count/ class=md-nav__link> <span class=md-ellipsis> count </span> </a> </li> <li class=md-nav__item> <a href=../crbegin/ class=md-nav__link> <span class=md-ellipsis> crbegin </span> </a> </li> <li class=md-nav__item> <a href=../crend/ class=md-nav__link> <span class=md-ellipsis> crend </span> </a> </li> <li class=md-nav__item> <a href=../default_object_comparator_t/ class=md-nav__link> <span class=md-ellipsis> default_object_comparator_t </span> </a> </li> <li class=md-nav__item> <a href=../diff/ class=md-nav__link> <span class=md-ellipsis> diff </span> </a> </li> <li class=md-nav__item> <a href=../dump/ class=md-nav__link> <span class=md-ellipsis> dump </span> </a> </li> <li class=md-nav__item> <a href=../emplace/ class=md-nav__link> <span class=md-ellipsis> emplace </span> </a> </li> <li class=md-nav__item> <a href=../emplace_back/ class=md-nav__link> <span class=md-ellipsis> emplace_back </span> </a> </li> <li class=md-nav__item> <a href=../empty/ class=md-nav__link> <span class=md-ellipsis> empty </span> </a> </li> <li class=md-nav__item> <a href=../end/ class=md-nav__link> <span class=md-ellipsis> end </span> </a> </li> <li class=md-nav__item> <a href=../end_pos/ class=md-nav__link> <span class=md-ellipsis> end_pos </span> </a> </li> <li class=md-nav__item> <a href=../erase/ class=md-nav__link> <span class=md-ellipsis> erase </span> </a> </li> <li class=md-nav__item> <a href=../error_handler_t/ class=md-nav__link> <span class=md-ellipsis> error_handler_t </span> </a> </li> <li class=md-nav__item> <a href=../exception/ class=md-nav__link> <span class=md-ellipsis> exception </span> </a> </li> <li class=md-nav__item> <a href=../find/ class=md-nav__link> <span class=md-ellipsis> find </span> </a> </li> <li class=md-nav__item> <a href=../flatten/ class=md-nav__link> <span class=md-ellipsis> flatten </span> </a> </li> <li class=md-nav__item> <a href=../from_bjdata/ class=md-nav__link> <span class=md-ellipsis> from_bjdata </span> </a> </li> <li class=md-nav__item> <a href=../from_bson/ class=md-nav__link> <span class=md-ellipsis> from_bson </span> </a> </li> <li class=md-nav__item> <a href=../from_cbor/ class=md-nav__link> <span class=md-ellipsis> from_cbor </span> </a> </li> <li class=md-nav__item> <a href=../from_msgpack/ class=md-nav__link> <span class=md-ellipsis> from_msgpack </span> </a> </li> <li class=md-nav__item> <a href=../from_ubjson/ class=md-nav__link> <span class=md-ellipsis> from_ubjson </span> </a> </li> <li class=md-nav__item> <a href=../front/ class=md-nav__link> <span class=md-ellipsis> front </span> </a> </li> <li class=md-nav__item> <a href=../get/ class=md-nav__link> <span class=md-ellipsis> get </span> </a> </li> <li class=md-nav__item> <a href=../get_allocator/ class=md-nav__link> <span class=md-ellipsis> get_allocator </span> </a> </li> <li class=md-nav__item> <a href=../get_binary/ class=md-nav__link> <span class=md-ellipsis> get_binary </span> </a> </li> <li class=md-nav__item> <a href=../get_ptr/ class=md-nav__link> <span class=md-ellipsis> get_ptr </span> </a> </li> <li class=md-nav__item> <a href=../get_ref/ class=md-nav__link> <span class=md-ellipsis> get_ref </span> </a> </li> <li class=md-nav__item> <a href=../get_to/ class=md-nav__link> <span class=md-ellipsis> get_to </span> </a> </li> <li class=md-nav__item> <a href=../std_hash/ class=md-nav__link> <span class=md-ellipsis> std::hash&lt;basic_json&gt; </span> </a> </li> <li class=md-nav__item> <a href=../input_format_t/ class=md-nav__link> <span class=md-ellipsis> input_format_t </span> </a> </li> <li class=md-nav__item> <a href=../insert/ class=md-nav__link> <span class=md-ellipsis> insert </span> </a> </li> <li class=md-nav__item> <a href=../invalid_iterator/ class=md-nav__link> <span class=md-ellipsis> invalid_iterator </span> </a> </li> <li class=md-nav__item> <a href=../is_array/ class=md-nav__link> <span class=md-ellipsis> is_array </span> </a> </li> <li class=md-nav__item> <a href=../is_binary/ class=md-nav__link> <span class=md-ellipsis> is_binary </span> </a> </li> <li class=md-nav__item> <a href=../is_boolean/ class=md-nav__link> <span class=md-ellipsis> is_boolean </span> </a> </li> <li class=md-nav__item> <a href=../is_discarded/ class=md-nav__link> <span class=md-ellipsis> is_discarded </span> </a> </li> <li class=md-nav__item> <a href=../is_null/ class=md-nav__link> <span class=md-ellipsis> is_null </span> </a> </li> <li class=md-nav__item> <a href=../is_number/ class=md-nav__link> <span class=md-ellipsis> is_number </span> </a> </li> <li class=md-nav__item> <a href=../is_number_float/ class=md-nav__link> <span class=md-ellipsis> is_number_float </span> </a> </li> <li class=md-nav__item> <a href=../is_number_integer/ class=md-nav__link> <span class=md-ellipsis> is_number_integer </span> </a> </li> <li class=md-nav__item> <a href=../is_number_unsigned/ class=md-nav__link> <span class=md-ellipsis> is_number_unsigned </span> </a> </li> <li class=md-nav__item> <a href=../is_object/ class=md-nav__link> <span class=md-ellipsis> is_object </span> </a> </li> <li class=md-nav__item> <a href=../is_primitive/ class=md-nav__link> <span class=md-ellipsis> is_primitive </span> </a> </li> <li class=md-nav__item> <a href=../is_string/ class=md-nav__link> <span class=md-ellipsis> is_string </span> </a> </li> <li class=md-nav__item> <a href=../is_structured/ class=md-nav__link> <span class=md-ellipsis> is_structured </span> </a> </li> <li class=md-nav__item> <a href=../items/ class=md-nav__link> <span class=md-ellipsis> items </span> </a> </li> <li class=md-nav__item> <a href=../json_base_class_t/ class=md-nav__link> <span class=md-ellipsis> json_base_class_t </span> </a> </li> <li class=md-nav__item> <a href=../json_serializer/ class=md-nav__link> <span class=md-ellipsis> json_serializer </span> </a> </li> <li class=md-nav__item> <a href=../max_size/ class=md-nav__link> <span class=md-ellipsis> max_size </span> </a> </li> <li class=md-nav__item> <a href=../meta/ class=md-nav__link> <span class=md-ellipsis> meta </span> </a> </li> <li class=md-nav__item> <a href=../merge_patch/ class=md-nav__link> <span class=md-ellipsis> merge_patch </span> </a> </li> <li class=md-nav__item> <a href=../number_float_t/ class=md-nav__link> <span class=md-ellipsis> number_float_t </span> </a> </li> <li class=md-nav__item> <a href=../number_integer_t/ class=md-nav__link> <span class=md-ellipsis> number_integer_t </span> </a> </li> <li class=md-nav__item> <a href=../number_unsigned_t/ class=md-nav__link> <span class=md-ellipsis> number_unsigned_t </span> </a> </li> <li class=md-nav__item> <a href=../object/ class=md-nav__link> <span class=md-ellipsis> object </span> </a> </li> <li class=md-nav__item> <a href=../object_comparator_t/ class=md-nav__link> <span class=md-ellipsis> object_comparator_t </span> </a> </li> <li class=md-nav__item> <a href=../object_t/ class=md-nav__link> <span class=md-ellipsis> object_t </span> </a> </li> <li class=md-nav__item> <a href=../operator_ValueType/ class=md-nav__link> <span class=md-ellipsis> operator ValueType </span> </a> </li> <li class=md-nav__item> <a href=../operator_value_t/ class=md-nav__link> <span class=md-ellipsis> operator value_t </span> </a> </li> <li class=md-nav__item> <a href=../operator%5B%5D/ class=md-nav__link> <span class=md-ellipsis> operator[] </span> </a> </li> <li class="md-nav__item md-nav__item--active"> <input class="md-nav__toggle md-toggle" type=checkbox id=__toc> <label class="md-nav__link md-nav__link--active" for=__toc> <span class=md-ellipsis> operator= </span> <span class="md-nav__icon md-icon"></span> </label> <a href=./ class="md-nav__link md-nav__link--active"> <span class=md-ellipsis> operator= </span> </a> <nav class="md-nav md-nav--secondary" aria-label="Table of contents"> <label class=md-nav__title for=__toc> <span class="md-nav__icon md-icon"></span> Table of contents </label> <ul class=md-nav__list data-md-component=toc data-md-scrollfix> <li class=md-nav__item> <a href=#parameters class=md-nav__link> <span class=md-ellipsis> Parameters </span> </a> </li> <li class=md-nav__item> <a href=#exception-safety class=md-nav__link> <span class=md-ellipsis> Exception safety </span> </a> </li> <li class=md-nav__item> <a href=#complexity class=md-nav__link> <span class=md-ellipsis> Complexity </span> </a> </li> <li class=md-nav__item> <a href=#examples class=md-nav__link> <span class=md-ellipsis> Examples </span> </a> </li> <li class=md-nav__item> <a href=#see-also class=md-nav__link> <span class=md-ellipsis> See also </span> </a> </li> <li class=md-nav__item> <a href=#version-history class=md-nav__link> <span class=md-ellipsis> Version history </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../operator%2B%3D/ class=md-nav__link> <span class=md-ellipsis> operator+= </span> </a> </li> <li class=md-nav__item> <a href=../operator_eq/ class=md-nav__link> <span class=md-ellipsis> operator== </span> </a> </li> <li class=md-nav__item> <a href=../operator_ne/ class=md-nav__link> <span class=md-ellipsis> operator!= </span> </a> </li> <li class=md-nav__item> <a href=../operator_lt/ class=md-nav__link> <span class=md-ellipsis> operator< </span> </a> </li> <li class=md-nav__item> <a href=../operator_gt/ class=md-nav__link> <span class=md-ellipsis> operator> </span> </a> </li> <li class=md-nav__item> <a href=../operator_le/ class=md-nav__link> <span class=md-ellipsis> operator<= </span> </a> </li> <li class=md-nav__item> <a href=../operator_ge/ class=md-nav__link> <span class=md-ellipsis> operator>= </span> </a> </li> <li class=md-nav__item> <a href=../operator_spaceship/ class=md-nav__link> <span class=md-ellipsis> operator<=> </span> </a> </li> <li class=md-nav__item> <a href=../out_of_range/ class=md-nav__link> <span class=md-ellipsis> out_of_range </span> </a> </li> <li class=md-nav__item> <a href=../other_error/ class=md-nav__link> <span class=md-ellipsis> other_error </span> </a> </li> <li class=md-nav__item> <a href=../parse/ class=md-nav__link> <span class=md-ellipsis> parse </span> </a> </li> <li class=md-nav__item> <a href=../parse_error/ class=md-nav__link> <span class=md-ellipsis> parse_error </span> </a> </li> <li class=md-nav__item> <a href=../parse_event_t/ class=md-nav__link> <span class=md-ellipsis> parse_event_t </span> </a> </li> <li class=md-nav__item> <a href=../parser_callback_t/ class=md-nav__link> <span class=md-ellipsis> parser_callback_t </span> </a> </li> <li class=md-nav__item> <a href=../patch/ class=md-nav__link> <span class=md-ellipsis> patch </span> </a> </li> <li class=md-nav__item> <a href=../patch_inplace/ class=md-nav__link> <span class=md-ellipsis> patch_inplace </span> </a> </li> <li class=md-nav__item> <a href=../push_back/ class=md-nav__link> <span class=md-ellipsis> push_back </span> </a> </li> <li class=md-nav__item> <a href=../rbegin/ class=md-nav__link> <span class=md-ellipsis> rbegin </span> </a> </li> <li class=md-nav__item> <a href=../rend/ class=md-nav__link> <span class=md-ellipsis> rend </span> </a> </li> <li class=md-nav__item> <a href=../sax_parse/ class=md-nav__link> <span class=md-ellipsis> sax_parse </span> </a> </li> <li class=md-nav__item> <a href=../size/ class=md-nav__link> <span class=md-ellipsis> size </span> </a> </li> <li class=md-nav__item> <a href=../start_pos/ class=md-nav__link> <span class=md-ellipsis> start_pos </span> </a> </li> <li class=md-nav__item> <a href=../string_t/ class=md-nav__link> <span class=md-ellipsis> string_t </span> </a> </li> <li class=md-nav__item> <a href=../swap/ class=md-nav__link> <span class=md-ellipsis> swap </span> </a> </li> <li class=md-nav__item> <a href=../std_swap/ class=md-nav__link> <span class=md-ellipsis> std::swap&lt;basic_json&gt; </span> </a> </li> <li class=md-nav__item> <a href=../to_bjdata/ class=md-nav__link> <span class=md-ellipsis> to_bjdata </span> </a> </li> <li class=md-nav__item> <a href=../to_bson/ class=md-nav__link> <span class=md-ellipsis> to_bson </span> </a> </li> <li class=md-nav__item> <a href=../to_cbor/ class=md-nav__link> <span class=md-ellipsis> to_cbor </span> </a> </li> <li class=md-nav__item> <a href=../to_msgpack/ class=md-nav__link> <span class=md-ellipsis> to_msgpack </span> </a> </li> <li class=md-nav__item> <a href=../to_string/ class=md-nav__link> <span class=md-ellipsis> to_string </span> </a> </li> <li class=md-nav__item> <a href=../to_ubjson/ class=md-nav__link> <span class=md-ellipsis> to_ubjson </span> </a> </li> <li class=md-nav__item> <a href=../type/ class=md-nav__link> <span class=md-ellipsis> type </span> </a> </li> <li class=md-nav__item> <a href=../type_error/ class=md-nav__link> <span class=md-ellipsis> type_error </span> </a> </li> <li class=md-nav__item> <a href=../type_name/ class=md-nav__link> <span class=md-ellipsis> type_name </span> </a> </li> <li class=md-nav__item> <a href=../unflatten/ class=md-nav__link> <span class=md-ellipsis> unflatten </span> </a> </li> <li class=md-nav__item> <a href=../update/ class=md-nav__link> <span class=md-ellipsis> update </span> </a> </li> <li class=md-nav__item> <a href=../value/ class=md-nav__link> <span class=md-ellipsis> value </span> </a> </li> <li class=md-nav__item> <a href=../value_t/ class=md-nav__link> <span class=md-ellipsis> value_t </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_2> <div class="md-nav__link md-nav__container"> <a href=../../byte_container_with_subtype/ class="md-nav__link "> <span class=md-ellipsis> byte_container_with_subtype </span> </a> <label class="md-nav__link " for=__nav_4_2 id=__nav_4_2_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_2_label aria-expanded=false> <label class=md-nav__title for=__nav_4_2> <span class="md-nav__icon md-icon"></span> byte_container_with_subtype </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../byte_container_with_subtype/byte_container_with_subtype/ class=md-nav__link> <span class=md-ellipsis> (constructor) </span> </a> </li> <li class=md-nav__item> <a href=../../byte_container_with_subtype/clear_subtype/ class=md-nav__link> <span class=md-ellipsis> clear_subtype </span> </a> </li> <li class=md-nav__item> <a href=../../byte_container_with_subtype/has_subtype/ class=md-nav__link> <span class=md-ellipsis> has_subtype </span> </a> </li> <li class=md-nav__item> <a href=../../byte_container_with_subtype/set_subtype/ class=md-nav__link> <span class=md-ellipsis> set_subtype </span> </a> </li> <li class=md-nav__item> <a href=../../byte_container_with_subtype/subtype/ class=md-nav__link> <span class=md-ellipsis> subtype </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_3> <div class="md-nav__link md-nav__container"> <a href=../../adl_serializer/ class="md-nav__link "> <span class=md-ellipsis> adl_serializer </span> </a> <label class="md-nav__link " for=__nav_4_3 id=__nav_4_3_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_3_label aria-expanded=false> <label class=md-nav__title for=__nav_4_3> <span class="md-nav__icon md-icon"></span> adl_serializer </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../adl_serializer/from_json/ class=md-nav__link> <span class=md-ellipsis> from_json </span> </a> </li> <li class=md-nav__item> <a href=../../adl_serializer/to_json/ class=md-nav__link> <span class=md-ellipsis> to_json </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../json/ class=md-nav__link> <span class=md-ellipsis> json </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_5> <div class="md-nav__link md-nav__container"> <a href=../../json_pointer/ class="md-nav__link "> <span class=md-ellipsis> json_pointer </span> </a> <label class="md-nav__link " for=__nav_4_5 id=__nav_4_5_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_5_label aria-expanded=false> <label class=md-nav__title for=__nav_4_5> <span class="md-nav__icon md-icon"></span> json_pointer </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../json_pointer/json_pointer/ class=md-nav__link> <span class=md-ellipsis> (Constructor) </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/back/ class=md-nav__link> <span class=md-ellipsis> back </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/empty/ class=md-nav__link> <span class=md-ellipsis> empty </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/front/ class=md-nav__link> <span class=md-ellipsis> front </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_string_t/ class=md-nav__link> <span class=md-ellipsis> operator string_t </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_eq/ class=md-nav__link> <span class=md-ellipsis> operator== </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_ne/ class=md-nav__link> <span class=md-ellipsis> operator!= </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_slash/ class=md-nav__link> <span class=md-ellipsis> operator/ </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_slasheq/ class=md-nav__link> <span class=md-ellipsis> operator/= </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/parent_pointer/ class=md-nav__link> <span class=md-ellipsis> parent_pointer </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/pop_back/ class=md-nav__link> <span class=md-ellipsis> pop_back </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/pop_front/ class=md-nav__link> <span class=md-ellipsis> pop_front </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/push_back/ class=md-nav__link> <span class=md-ellipsis> push_back </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/push_front/ class=md-nav__link> <span class=md-ellipsis> push_front </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/string_t/ class=md-nav__link> <span class=md-ellipsis> string_t </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/to_string/ class=md-nav__link> <span class=md-ellipsis> to_string </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_6> <div class="md-nav__link md-nav__container"> <a href=../../json_sax/ class="md-nav__link "> <span class=md-ellipsis> json_sax </span> </a> <label class="md-nav__link " for=__nav_4_6 id=__nav_4_6_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_6_label aria-expanded=false> <label class=md-nav__title for=__nav_4_6> <span class="md-nav__icon md-icon"></span> json_sax </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../json_sax/binary/ class=md-nav__link> <span class=md-ellipsis> binary </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/boolean/ class=md-nav__link> <span class=md-ellipsis> boolean </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/end_array/ class=md-nav__link> <span class=md-ellipsis> end_array </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/end_object/ class=md-nav__link> <span class=md-ellipsis> end_object </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/key/ class=md-nav__link> <span class=md-ellipsis> key </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/null/ class=md-nav__link> <span class=md-ellipsis> null </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/number_float/ class=md-nav__link> <span class=md-ellipsis> number_float </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/number_integer/ class=md-nav__link> <span class=md-ellipsis> number_integer </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/number_unsigned/ class=md-nav__link> <span class=md-ellipsis> number_unsigned </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/parse_error/ class=md-nav__link> <span class=md-ellipsis> parse_error </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/start_array/ class=md-nav__link> <span class=md-ellipsis> start_array </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/start_object/ class=md-nav__link> <span class=md-ellipsis> start_object </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/string/ class=md-nav__link> <span class=md-ellipsis> string </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../operator_ltlt/ class=md-nav__link> <span class=md-ellipsis> operator<<(basic_json), operator<<(json_pointer) </span> </a> </li> <li class=md-nav__item> <a href=../../operator_gtgt/ class=md-nav__link> <span class=md-ellipsis> operator>>(basic_json) </span> </a> </li> <li class=md-nav__item> <a href=../../operator_literal_json/ class=md-nav__link> <span class=md-ellipsis> operator""_json </span> </a> </li> <li class=md-nav__item> <a href=../../operator_literal_json_pointer/ class=md-nav__link> <span class=md-ellipsis> operator""_json_pointer </span> </a> </li> <li class=md-nav__item> <a href=../../ordered_json/ class=md-nav__link> <span class=md-ellipsis> ordered_json </span> </a> </li> <li class=md-nav__item> <a href=../../ordered_map/ class=md-nav__link> <span class=md-ellipsis> ordered_map </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_13> <div class="md-nav__link md-nav__container"> <a href=../../macros/ class="md-nav__link "> <span class=md-ellipsis> macros </span> </a> <label class="md-nav__link " for=__nav_4_13 id=__nav_4_13_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_13_label aria-expanded=false> <label class=md-nav__title for=__nav_4_13> <span class="md-nav__icon md-icon"></span> macros </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../macros/json_assert/ class=md-nav__link> <span class=md-ellipsis> JSON_ASSERT </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_brace_init_copy_semantics/ class=md-nav__link> <span class=md-ellipsis> JSON_BRACE_INIT_COPY_SEMANTICS </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_throw_user/ class=md-nav__link> <span class=md-ellipsis> JSON_CATCH_USER, JSON_THROW_USER, JSON_TRY_USER </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_diagnostics/ class=md-nav__link> <span class=md-ellipsis> JSON_DIAGNOSTICS </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_diagnostic_positions/ class=md-nav__link> <span class=md-ellipsis> JSON_DIAGNOSTIC_POSITIONS </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_disable_enum_serialization/ class=md-nav__link> <span class=md-ellipsis> JSON_DISABLE_ENUM_SERIALIZATION </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_has_cpp_11/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_CPP_11, JSON_HAS_CPP_14, JSON_HAS_CPP_17, JSON_HAS_CPP_20 </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_has_filesystem/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_EXPERIMENTAL_FILESYSTEM, JSON_HAS_FILESYSTEM </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_has_ranges/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_RANGES </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_has_static_rtti/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_STATIC_RTTI </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_has_three_way_comparison/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_THREE_WAY_COMPARISON </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_noexception/ class=md-nav__link> <span class=md-ellipsis> JSON_NOEXCEPTION </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_no_io/ class=md-nav__link> <span class=md-ellipsis> JSON_NO_IO </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_skip_library_version_check/ class=md-nav__link> <span class=md-ellipsis> JSON_SKIP_LIBRARY_VERSION_CHECK </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_skip_unsupported_compiler_check/ class=md-nav__link> <span class=md-ellipsis> JSON_SKIP_UNSUPPORTED_COMPILER_CHECK </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_use_global_udls/ class=md-nav__link> <span class=md-ellipsis> JSON_USE_GLOBAL_UDLS </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_use_implicit_conversions/ class=md-nav__link> <span class=md-ellipsis> JSON_USE_IMPLICIT_CONVERSIONS </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_use_legacy_discarded_value_comparison/ class=md-nav__link> <span class=md-ellipsis> JSON_USE_LEGACY_DISCARDED_VALUE_COMPARISON </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_define_derived_type/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_ONLY_SERIALIZE, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_define_type_intrusive/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_TYPE_INTRUSIVE, NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_TYPE_INTRUSIVE_ONLY_SERIALIZE </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_define_type_non_intrusive/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_define_type_with_names/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_TYPE_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_namespace/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_NAMESPACE </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_namespace_begin/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_NAMESPACE_BEGIN, NLOHMANN_JSON_NAMESPACE_END </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_namespace_no_version/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_NAMESPACE_NO_VERSION </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_serialize_enum/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_SERIALIZE_ENUM </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_serialize_enum_strict/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_SERIALIZE_ENUM_STRICT </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_version_major/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_VERSION_MAJOR, NLOHMANN_JSON_VERSION_MINOR, NLOHMANN_JSON_VERSION_PATCH </span> </a> </li> </ul> </nav> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_5> <div class="md-nav__link md-nav__container"> <a href=../../../community/ class="md-nav__link "> <span class=md-ellipsis> Community </span> </a> <label class="md-nav__link " for=__nav_5 id=__nav_5_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_5_label aria-expanded=false> <label class=md-nav__title for=__nav_5> <span class="md-nav__icon md-icon"></span> Community </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../community/code_of_conduct/ class=md-nav__link> <span class=md-ellipsis> Code of Conduct </span> </a> </li> <li class=md-nav__item> <a href=../../../community/contribution_guidelines/ class=md-nav__link> <span class=md-ellipsis> Contribution Guidelines </span> </a> </li> <li class=md-nav__item> <a href=../../../community/quality_assurance/ class=md-nav__link> <span class=md-ellipsis> Quality assurance </span> </a> </li> <li class=md-nav__item> <a href=../../../community/governance/ class=md-nav__link> <span class=md-ellipsis> Governance </span> </a> </li> <li class=md-nav__item> <a href=../../../community/security_policy/ class=md-nav__link> <span class=md-ellipsis> Security Policy </span> </a> </li> </ul> </nav> </li> </ul> </nav> </div> </div> </div> <div class="md-sidebar md-sidebar--secondary" data-md-component=sidebar data-md-type=toc> <div class=md-sidebar__scrollwrap> <div class=md-sidebar__inner> <nav class="md-nav md-nav--secondary" aria-label="Table of contents"> <label class=md-nav__title for=__toc> <span class="md-nav__icon md-icon"></span> Table of contents </label> <ul class=md-nav__list data-md-component=toc data-md-scrollfix> <li class=md-nav__item> <a href=#parameters class=md-nav__link> <span class=md-ellipsis> Parameters </span> </a> </li> <li class=md-nav__item> <a href=#exception-safety class=md-nav__link> <span class=md-ellipsis> Exception safety </span> </a> </li> <li class=md-nav__item> <a href=#complexity class=md-nav__link> <span class=md-ellipsis> Complexity </span> </a> </li> <li class=md-nav__item> <a href=#examples class=md-nav__link> <span class=md-ellipsis> Examples </span> </a> </li> <li class=md-nav__item> <a href=#see-also class=md-nav__link> <span class=md-ellipsis> See also </span> </a> </li> <li class=md-nav__item> <a href=#version-history class=md-nav__link> <span class=md-ellipsis> Version history </span> </a> </li> </ul> </nav> </div> </div> </div> <div class=md-content data-md-component=content> <article class="md-content__inner md-typeset"> <a href="https://github.com/nlohmann/json/edit/develop/docs/mkdocs/docs/api/basic_json/operator=.md" title="Edit this page" class="md-content__button md-icon" rel="edit"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M10 20H6V4h7v5h5v3.1l2-2V8l-6-6H6c-1.1 0-2 .9-2 2v16c0 1.1.9 2 2 2h4zm10.2-7c.1 0 .3.1.4.2l1.3 1.3c.2.2.2.6 0 .8l-1 1-2.1-2.1 1-1c.1-.1.2-.2.4-.2m0 3.9L14.1 23H12v-2.1l6.1-6.1z"/></svg> </a> <a href="https://github.com/nlohmann/json/raw/develop/docs/mkdocs/docs/api/basic_json/operator=.md" title="View source of this page" class="md-content__button md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M17 18c.56 0 1 .44 1 1s-.44 1-1 1-1-.44-1-1 .44-1 1-1m0-3c-2.73 0-5.06 1.66-6 4 .94 2.34 3.27 4 6 4s5.06-1.66 6-4c-.94-2.34-3.27-4-6-4m0 6.5a2.5 2.5 0 0 1-2.5-2.5 2.5 2.5 0 0 1 2.5-2.5 2.5 2.5 0 0 1 2.5 2.5 2.5 2.5 0 0 1-2.5 2.5M9.27 20H6V4h7v5h5v4.07c.7.08 1.36.25 2 .49V8l-6-6H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h4.5a8.2 8.2 0 0 1-1.23-2"/></svg> </a> <h1 id=nlohmannbasic_jsonoperator><small>nlohmann::basic_json::</small>operator=<a class=headerlink href=#nlohmannbasic_jsonoperator title="Permanent link">&para;</a></h1> <div class=highlight><pre><span></span><code><span class=n>basic_json</span><span class=o>&amp;</span><span class=w> </span><span class=k>operator</span><span class=o>=</span><span class=p>(</span><span class=n>basic_json</span><span class=w> </span><span class=n>other</span><span class=p>)</span><span class=w> </span><span class=k>noexcept</span><span class=w> </span><span class=p>(</span>
 <span class=w>    </span><span class=n>std</span><span class=o>::</span><span class=n>is_nothrow_move_constructible</span><span class=o>&lt;</span><span class=n>value_t</span><span class=o>&gt;::</span><span class=n>value</span><span class=w> </span><span class=o>&amp;&amp;</span>
 <span class=w>    </span><span class=n>std</span><span class=o>::</span><span class=n>is_nothrow_move_assignable</span><span class=o>&lt;</span><span class=n>value_t</span><span class=o>&gt;::</span><span class=n>value</span><span class=w> </span><span class=o>&amp;&amp;</span>
 <span class=w>    </span><span class=n>std</span><span class=o>::</span><span class=n>is_nothrow_move_constructible</span><span class=o>&lt;</span><span class=n>json_value</span><span class=o>&gt;::</span><span class=n>value</span><span class=w> </span><span class=o>&amp;&amp;</span>
-<span class=w>    </span><span class=n>std</span><span class=o>::</span><span class=n>is_nothrow_move_assignable</span><span class=o>&lt;</span><span class=n>json_value</span><span class=o>&gt;::</span><span class=n>value</span>
+<span class=w>    </span><span class=n>std</span><span class=o>::</span><span class=n>is_nothrow_move_assignable</span><span class=o>&lt;</span><span class=n>json_value</span><span class=o>&gt;::</span><span class=n>value</span><span class=w> </span><span class=o>&amp;&amp;</span>
+<span class=w>    </span><span class=n>std</span><span class=o>::</span><span class=n>is_nothrow_move_assignable</span><span class=o>&lt;</span><span class=n>json_base_class_t</span><span class=o>&gt;::</span><span class=n>value</span>
 <span class=p>);</span>
-</code></pre></div> <p>Copy assignment operator. Copies a <abbr title="JavaScript Object Notation">JSON</abbr> value via the "copy and swap" strategy: It is expressed in terms of the copy constructor, destructor, and the <code>swap()</code> member function.</p> <h2 id=parameters>Parameters<a class=headerlink href=#parameters title="Permanent link">&para;</a></h2> <dl> <dt><code>other</code> (in)</dt> <dd>value to copy from</dd> </dl> <h2 id=complexity>Complexity<a class=headerlink href=#complexity title="Permanent link">&para;</a></h2> <p>Linear.</p> <h2 id=examples>Examples<a class=headerlink href=#examples title="Permanent link">&para;</a></h2> <details class=example> <summary>Example</summary> <p>The code below shows and example for the copy assignment. It creates a copy of value <code>a</code> which is then swapped with <code>b</code>. Finally, the copy of <code>a</code> (which is the null value after the swap) is destroyed.</p> <div class=highlight><pre><span></span><code><span class=cp>#include</span><span class=w> </span><span class=cpf>&lt;iostream&gt;</span>
+</code></pre></div> <p>Copy assignment operator. Copies a <abbr title="JavaScript Object Notation">JSON</abbr> value via the "copy and swap" strategy: It is expressed in terms of the copy constructor, destructor, and the <code>swap()</code> member function.</p> <h2 id=parameters>Parameters<a class=headerlink href=#parameters title="Permanent link">&para;</a></h2> <dl> <dt><code>other</code> (in)</dt> <dd>value to copy from</dd> </dl> <h2 id=exception-safety>Exception safety<a class=headerlink href=#exception-safety title="Permanent link">&para;</a></h2> <p>Strong guarantee: if an exception is thrown while copying <code>other</code>, there are no changes to <code class=highlight><span class=o>*</span><span class=k>this</span></code>.</p> <h2 id=complexity>Complexity<a class=headerlink href=#complexity title="Permanent link">&para;</a></h2> <p>Linear.</p> <h2 id=examples>Examples<a class=headerlink href=#examples title="Permanent link">&para;</a></h2> <details class=example> <summary>Example</summary> <p>The code below shows and example for the copy assignment. It creates a copy of value <code>a</code> which is then swapped with <code>b</code>. Finally, the copy of <code>a</code> (which is the null value after the swap) is destroyed.</p> <div class=highlight><pre><span></span><code><span class=cp>#include</span><span class=w> </span><span class=cpf>&lt;iostream&gt;</span>
 <span class=cp>#include</span><span class=w> </span><span class=cpf>&lt;nlohmann/json.hpp&gt;</span>
 
 <span class=k>using</span><span class=w> </span><span class=n>json</span><span class=w> </span><span class=o>=</span><span class=w> </span><span class=n>nlohmann</span><span class=o>::</span><span class=n>json</span><span class=p>;</span>
@@ -24,4 +25,4 @@
 <span class=p>}</span>
 </code></pre></div> <p>Output:</p> <div class=highlight><pre><span></span><code><span class=mi>23</span>
 <span class=mi>23</span>
-</code></pre></div> </details> <h2 id=version-history>Version history<a class=headerlink href=#version-history title="Permanent link">&para;</a></h2> <ul> <li>Added in version 1.0.0.</li> </ul> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 23, 2026 11:16:18 UTC">June 23, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
+</code></pre></div> </details> <h2 id=see-also>See also<a class=headerlink href=#see-also title="Permanent link">&para;</a></h2> <ul> <li><a href=../basic_json/ >basic_json</a> create a <abbr title="JavaScript Object Notation">JSON</abbr> value</li> <li><a href=../swap/ >swap</a> exchanges the contents of two <abbr title="JavaScript Object Notation">JSON</abbr> values</li> </ul> <h2 id=version-history>Version history<a class=headerlink href=#version-history title="Permanent link">&para;</a></h2> <ul> <li>Added in version 1.0.0.</li> </ul> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 29, 2026 20:15:18 UTC">June 29, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
diff --git "a/api/basic_json/operator\133\135/index.html" "b/api/basic_json/operator\133\135/index.html"
index 69a12c3..9e1efd7 100644
--- "a/api/basic_json/operator\133\135/index.html"
+++ "b/api/basic_json/operator\133\135/index.html"
@@ -15,7 +15,7 @@
 <span class=c1>// (4)</span>
 <span class=n>reference</span><span class=w> </span><span class=k>operator</span><span class=p>[](</span><span class=k>const</span><span class=w> </span><span class=n>json_pointer</span><span class=o>&amp;</span><span class=w> </span><span class=n>ptr</span><span class=p>);</span>
 <span class=n>const_reference</span><span class=w> </span><span class=k>operator</span><span class=p>[](</span><span class=k>const</span><span class=w> </span><span class=n>json_pointer</span><span class=o>&amp;</span><span class=w> </span><span class=n>ptr</span><span class=p>)</span><span class=w> </span><span class=k>const</span><span class=p>;</span>
-</code></pre></div> <ol> <li>Returns a reference to the array element at specified location <code>idx</code>.</li> <li>Returns a reference to the object element with specified key <code>key</code>. The non-const qualified overload takes the key by value.</li> <li>See 2. This overload is only available if <code>KeyType</code> is comparable with <code class=highlight><span class=k>typename</span><span class=w> </span><span class=nc>object_t</span><span class=o>::</span><span class=n>key_type</span></code> and <code class=highlight><span class=k>typename</span><span class=w> </span><span class=nc>object_comparator_t</span><span class=o>::</span><span class=n>is_transparent</span></code> denotes a type.</li> <li>Returns a reference to the element with specified <abbr title="JavaScript Object Notation">JSON</abbr> pointer <code>ptr</code>.</li> </ol> <h2 id=template-parameters>Template parameters<a class=headerlink href=#template-parameters title="Permanent link">&para;</a></h2> <dl> <dt><code>KeyType</code></dt> <dd>A type for an object key other than <a href=../../json_pointer/ ><code>json_pointer</code></a> that is comparable with <a href=../string_t/ ><code>string_t</code></a> using <a href=../object_comparator_t/ ><code>object_comparator_t</code></a>. This can also be a string view (C++17).</dd> </dl> <h2 id=iterator-invalidation>Iterator invalidation<a class=headerlink href=#iterator-invalidation title="Permanent link">&para;</a></h2> <p>For the non-const versions 1. and 4., when passing an <strong>array</strong> index that does not exist, it is created and filled with a <code class=highlight><span class=kc>null</span></code> value before a reference to it is returned. For this, a reallocation can happen, in which case all iterators (including the <a href=../end/ ><code>end()</code></a> iterator) and all references to the elements are invalidated.</p> <p>For <a href=../../ordered_json/ ><code>ordered_json</code></a>, also passing an <strong>object key</strong> to the non-const versions 2., 3., and 4., a reallocation can happen which again invalidates all iterators and all references.</p> <h2 id=parameters>Parameters<a class=headerlink href=#parameters title="Permanent link">&para;</a></h2> <dl> <dt><code>idx</code> (in)</dt> <dd>index of the element to access</dd> <dt><code>key</code> (in)</dt> <dd>object key of the element to access</dd> <dt><code>ptr</code> (in)</dt> <dd><abbr title="JavaScript Object Notation">JSON</abbr> pointer to the desired element</dd> </dl> <h2 id=return-value>Return value<a class=headerlink href=#return-value title="Permanent link">&para;</a></h2> <ol> <li>(const) reference to the element at index <code>idx</code></li> <li>(const) reference to the element at key <code>key</code></li> <li>(const) reference to the element at key <code>key</code></li> <li>(const) reference to the element pointed to by <code>ptr</code></li> </ol> <h2 id=exception-safety>Exception safety<a class=headerlink href=#exception-safety title="Permanent link">&para;</a></h2> <p>Strong exception safety: if an exception occurs, the original value stays intact.</p> <h2 id=exceptions>Exceptions<a class=headerlink href=#exceptions title="Permanent link">&para;</a></h2> <ol> <li>The function can throw the following exceptions:<ul> <li>Throws <a href=../../../home/exceptions/#jsonexceptiontype_error305><code>type_error.305</code></a> if the <abbr title="JavaScript Object Notation">JSON</abbr> value is not an array or null; in that case, using the <code>[]</code> operator with an index makes no sense.</li> </ul> </li> <li>The function can throw the following exceptions:<ul> <li>Throws <a href=../../../home/exceptions/#jsonexceptiontype_error305><code>type_error.305</code></a> if the <abbr title="JavaScript Object Notation">JSON</abbr> value is not an object or null; in that case, using the <code>[]</code> operator with a key makes no sense.</li> </ul> </li> <li>See 2.</li> <li>The function can throw the following exceptions:<ul> <li>Throws <a href=../../../home/exceptions/#jsonexceptionparse_error106><code>parse_error.106</code></a> if an array index in the passed <abbr title="JavaScript Object Notation">JSON</abbr> pointer <code>ptr</code> begins with '0'.</li> <li>Throws <a href=../../../home/exceptions/#jsonexceptionparse_error109><code>parse_error.109</code></a> if an array index in the passed <abbr title="JavaScript Object Notation">JSON</abbr> pointer <code>ptr</code> is not a number.</li> <li>Throws <a href=../../../home/exceptions/#jsonexceptionout_of_range402><code>out_of_range.402</code></a> if the array index '-' is used in the passed <abbr title="JavaScript Object Notation">JSON</abbr> pointer <code>ptr</code> for the const version.</li> <li>Throws <a href=../../../home/exceptions/#jsonexceptionout_of_range404><code>out_of_range.404</code></a> if the <abbr title="JavaScript Object Notation">JSON</abbr> pointer <code>ptr</code> can not be resolved.</li> </ul> </li> </ol> <h2 id=complexity>Complexity<a class=headerlink href=#complexity title="Permanent link">&para;</a></h2> <ol> <li>Constant if <code>idx</code> is in the range of the array. Otherwise, linear in <code>idx - size()</code>.</li> <li>Logarithmic in the size of the container.</li> <li>Logarithmic in the size of the container.</li> <li>Logarithmic in the size of the container.</li> </ol> <h2 id=notes>Notes<a class=headerlink href=#notes title="Permanent link">&para;</a></h2> <div class="admonition danger"> <p class=admonition-title>Undefined behavior and runtime assertions</p> <ol> <li>If the element with key <code>idx</code> does not exist, the behavior is undefined.</li> <li>If the element with key <code>key</code> does not exist, the behavior is undefined and is <strong>guarded by a <a href=../../../features/assertions/ >runtime assertion</a></strong>!</li> </ol> </div> <ol> <li> <p>The non-const version may add values: If <code>idx</code> is beyond the range of the array (i.e., <code>idx &gt;= size()</code>), then the array is silently filled up with <code class=highlight><span class=kc>null</span></code> values to make <code>idx</code> a valid reference to the last stored element. In case the value was <code class=highlight><span class=kc>null</span></code> before, it is converted to an array.</p> </li> <li> <p>If <code>key</code> is not found in the object, then it is silently added to the object and filled with a <code class=highlight><span class=kc>null</span></code> value to make <code>key</code> a valid reference. In case the value was <code class=highlight><span class=kc>null</span></code> before, it is converted to an object.</p> </li> <li> <p>See 2.</p> </li> <li> <p><code>null</code> values are created in arrays and objects if necessary.</p> <p>In particular:</p> <ul> <li>If the <abbr title="JavaScript Object Notation">JSON</abbr> pointer points to an object key that does not exist, it is created and filled with a <code class=highlight><span class=kc>null</span></code> value before a reference to it is returned.</li> <li>If the <abbr title="JavaScript Object Notation">JSON</abbr> pointer points to an array index that does not exist, it is created and filled with a <code class=highlight><span class=kc>null</span></code> value before a reference to it is returned. All indices between the current maximum and the given index are also filled with <code class=highlight><span class=kc>null</span></code>.</li> <li>The special value <code>-</code> is treated as a synonym for the index past the end.</li> </ul> </li> </ol> <h2 id=examples>Examples<a class=headerlink href=#examples title="Permanent link">&para;</a></h2> <details class=example> <summary>Example: (1) access specified array element</summary> <p>The example below shows how array elements can be read and written using <code>[]</code> operator. Note the addition of <code class=highlight><span class=kc>null</span></code> values.</p> <div class=highlight><pre><span></span><code><span class=cp>#include</span><span class=w> </span><span class=cpf>&lt;iostream&gt;</span>
+</code></pre></div> <ol> <li>Returns a reference to the array element at specified location <code>idx</code>.</li> <li>Returns a reference to the object element with specified key <code>key</code>. The non-const qualified overload takes the key by value.</li> <li>See 2. This overload is only available if <code>KeyType</code> is comparable with <code class=highlight><span class=k>typename</span><span class=w> </span><span class=nc>object_t</span><span class=o>::</span><span class=n>key_type</span></code> and <code class=highlight><span class=k>typename</span><span class=w> </span><span class=nc>object_comparator_t</span><span class=o>::</span><span class=n>is_transparent</span></code> denotes a type.</li> <li>Returns a reference to the element with specified <abbr title="JavaScript Object Notation">JSON</abbr> pointer <code>ptr</code>.</li> </ol> <h2 id=template-parameters>Template parameters<a class=headerlink href=#template-parameters title="Permanent link">&para;</a></h2> <dl> <dt><code>KeyType</code></dt> <dd>A type for an object key other than <a href=../../json_pointer/ ><code>json_pointer</code></a> that is comparable with <a href=../string_t/ ><code>string_t</code></a> using <a href=../object_comparator_t/ ><code>object_comparator_t</code></a>. This can also be a string view (C++17).</dd> </dl> <h2 id=iterator-invalidation>Iterator invalidation<a class=headerlink href=#iterator-invalidation title="Permanent link">&para;</a></h2> <p>For the non-const versions 1. and 4., when passing an <strong>array</strong> index that does not exist, it is created and filled with a <code class=highlight><span class=kc>null</span></code> value before a reference to it is returned. For this, a reallocation can happen, in which case all iterators (including the <a href=../end/ ><code>end()</code></a> iterator) and all references to the elements are invalidated.</p> <p>For <a href=../../ordered_json/ ><code>ordered_json</code></a>, also passing an <strong>object key</strong> to the non-const versions 2., 3., and 4., a reallocation can happen which again invalidates all iterators and all references.</p> <h2 id=parameters>Parameters<a class=headerlink href=#parameters title="Permanent link">&para;</a></h2> <dl> <dt><code>idx</code> (in)</dt> <dd>index of the element to access</dd> <dt><code>key</code> (in)</dt> <dd>object key of the element to access</dd> <dt><code>ptr</code> (in)</dt> <dd><abbr title="JavaScript Object Notation">JSON</abbr> pointer to the desired element</dd> </dl> <h2 id=return-value>Return value<a class=headerlink href=#return-value title="Permanent link">&para;</a></h2> <ol> <li>(const) reference to the element at index <code>idx</code></li> <li>(const) reference to the element at key <code>key</code></li> <li>(const) reference to the element at key <code>key</code></li> <li>(const) reference to the element pointed to by <code>ptr</code></li> </ol> <h2 id=exception-safety>Exception safety<a class=headerlink href=#exception-safety title="Permanent link">&para;</a></h2> <p>Strong exception safety: if an exception occurs, the original value stays intact.</p> <h2 id=exceptions>Exceptions<a class=headerlink href=#exceptions title="Permanent link">&para;</a></h2> <ol> <li>The function can throw the following exceptions:<ul> <li>Throws <a href=../../../home/exceptions/#jsonexceptiontype_error305><code>type_error.305</code></a> if the <abbr title="JavaScript Object Notation">JSON</abbr> value is not an array or null; in that case, using the <code>[]</code> operator with an index makes no sense.</li> </ul> </li> <li>The function can throw the following exceptions:<ul> <li>Throws <a href=../../../home/exceptions/#jsonexceptiontype_error305><code>type_error.305</code></a> if the <abbr title="JavaScript Object Notation">JSON</abbr> value is not an object or null; in that case, using the <code>[]</code> operator with a key makes no sense.</li> </ul> </li> <li>See 2.</li> <li>The function can throw the following exceptions:<ul> <li>Throws <a href=../../../home/exceptions/#jsonexceptionparse_error106><code>parse_error.106</code></a> if an array index in the passed <abbr title="JavaScript Object Notation">JSON</abbr> pointer <code>ptr</code> begins with '0'.</li> <li>Throws <a href=../../../home/exceptions/#jsonexceptionparse_error109><code>parse_error.109</code></a> if an array index in the passed <abbr title="JavaScript Object Notation">JSON</abbr> pointer <code>ptr</code> is not a number.</li> <li>Throws <a href=../../../home/exceptions/#jsonexceptionout_of_range402><code>out_of_range.402</code></a> if the array index '-' is used in the passed <abbr title="JavaScript Object Notation">JSON</abbr> pointer <code>ptr</code> for the const version.</li> <li>Throws <a href=../../../home/exceptions/#jsonexceptionout_of_range404><code>out_of_range.404</code></a> if the <abbr title="JavaScript Object Notation">JSON</abbr> pointer <code>ptr</code> can not be resolved.</li> <li>Throws <a href=../../../home/exceptions/#jsonexceptionout_of_range410><code>out_of_range.410</code></a> if an array index in the passed <abbr title="JavaScript Object Notation">JSON</abbr> pointer <code>ptr</code> exceeds the range of <code>size_type</code> (e.g., on 32-bit platforms).</li> </ul> </li> </ol> <h2 id=complexity>Complexity<a class=headerlink href=#complexity title="Permanent link">&para;</a></h2> <ol> <li>Constant if <code>idx</code> is in the range of the array. Otherwise, linear in <code>idx - size()</code>.</li> <li>Logarithmic in the size of the container.</li> <li>Logarithmic in the size of the container.</li> <li>Logarithmic in the size of the container.</li> </ol> <h2 id=notes>Notes<a class=headerlink href=#notes title="Permanent link">&para;</a></h2> <div class="admonition danger"> <p class=admonition-title>Undefined behavior and runtime assertions</p> <p>The following cases apply to the <strong>const</strong> overloads; the non-const overloads instead insert the missing element (see the notes below).</p> <ol> <li>If the element at index <code>idx</code> does not exist, the behavior is undefined.</li> <li>If the element with key <code>key</code> does not exist, the behavior is undefined and is <strong>guarded by a <a href=../../../features/assertions/ >runtime assertion</a></strong>!</li> </ol> </div> <ol> <li> <p>The non-const version may add values: If <code>idx</code> is beyond the range of the array (i.e., <code>idx &gt;= size()</code>), then the array is silently filled up with <code class=highlight><span class=kc>null</span></code> values to make <code>idx</code> a valid reference to the last stored element. In case the value was <code class=highlight><span class=kc>null</span></code> before, it is converted to an array.</p> </li> <li> <p>If <code>key</code> is not found in the object, then it is silently added to the object and filled with a <code class=highlight><span class=kc>null</span></code> value to make <code>key</code> a valid reference. In case the value was <code class=highlight><span class=kc>null</span></code> before, it is converted to an object.</p> </li> <li> <p>See 2.</p> </li> <li> <p><code>null</code> values are created in arrays and objects if necessary.</p> <p>In particular:</p> <ul> <li>If the <abbr title="JavaScript Object Notation">JSON</abbr> pointer points to an object key that does not exist, it is created and filled with a <code class=highlight><span class=kc>null</span></code> value before a reference to it is returned.</li> <li>If the <abbr title="JavaScript Object Notation">JSON</abbr> pointer points to an array index that does not exist, it is created and filled with a <code class=highlight><span class=kc>null</span></code> value before a reference to it is returned. All indices between the current maximum and the given index are also filled with <code class=highlight><span class=kc>null</span></code>.</li> <li>The special value <code>-</code> is treated as a synonym for the index past the end.</li> </ul> </li> </ol> <h2 id=examples>Examples<a class=headerlink href=#examples title="Permanent link">&para;</a></h2> <details class=example> <summary>Example: (1) access specified array element</summary> <p>The example below shows how array elements can be read and written using <code>[]</code> operator. Note the addition of <code class=highlight><span class=kc>null</span></code> values.</p> <div class=highlight><pre><span></span><code><span class=cp>#include</span><span class=w> </span><span class=cpf>&lt;iostream&gt;</span>
 <span class=cp>#include</span><span class=w> </span><span class=cpf>&lt;nlohmann/json.hpp&gt;</span>
 
 <span class=k>using</span><span class=w> </span><span class=n>json</span><span class=w> </span><span class=o>=</span><span class=w> </span><span class=n>nlohmann</span><span class=o>::</span><span class=n>json</span><span class=p>;</span>
@@ -283,4 +283,4 @@
 <span class=s2>&quot;foo&quot;</span>
 <span class=p>[</span><span class=mi>1</span><span class=p>,</span><span class=mi>2</span><span class=p>]</span>
 <span class=mi>2</span>
-</code></pre></div> </details> <h2 id=see-also>See also<a class=headerlink href=#see-also title="Permanent link">&para;</a></h2> <ul> <li>documentation on <a href=../../../features/element_access/unchecked_access/ >unchecked access</a></li> <li>documentation on <a href=../../../features/assertions/ >runtime assertions</a></li> <li>see <a href=../at/ ><code>at</code></a> for access by reference with range checking</li> <li>see <a href=../value/ ><code>value</code></a> for access with default value</li> </ul> <h2 id=version-history>Version history<a class=headerlink href=#version-history title="Permanent link">&para;</a></h2> <ol> <li>Added in version 1.0.0.</li> <li>Added in version 1.0.0. Added overloads for <code>T* key</code> in version 1.1.0. Removed overloads for <code>T* key</code> (replaced by 3) in version 3.11.0.</li> <li>Added in version 3.11.0.</li> <li>Added in version 2.0.0.</li> </ol> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 23, 2026 11:16:18 UTC">June 23, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
+</code></pre></div> </details> <h2 id=see-also>See also<a class=headerlink href=#see-also title="Permanent link">&para;</a></h2> <ul> <li>documentation on <a href=../../../features/element_access/unchecked_access/ >unchecked access</a></li> <li>documentation on <a href=../../../features/assertions/ >runtime assertions</a></li> <li>see <a href=../at/ ><code>at</code></a> for access by reference with range checking</li> <li>see <a href=../value/ ><code>value</code></a> for access with default value</li> </ul> <h2 id=version-history>Version history<a class=headerlink href=#version-history title="Permanent link">&para;</a></h2> <ol> <li>Added in version 1.0.0.</li> <li>Added in version 1.0.0. Added overloads for <code>T* key</code> in version 1.1.0. Removed overloads for <code>T* key</code> (replaced by 3) in version 3.11.0.</li> <li>Added in version 3.11.0.</li> <li>Added in version 2.0.0.</li> </ol> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 29, 2026 20:15:18 UTC">June 29, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
diff --git a/api/basic_json/operator_ValueType/index.html b/api/basic_json/operator_ValueType/index.html
index 80b167a..d73db12 100644
--- a/api/basic_json/operator_ValueType/index.html
+++ b/api/basic_json/operator_ValueType/index.html
@@ -1,4 +1,4 @@
-<!doctype html><html lang=en class=no-js> <head><meta charset=utf-8><meta name=viewport content="width=device-width,initial-scale=1"><meta name=author content="Niels Lohmann"><link href="https://json.nlohmann.me/api/basic_json/operator_ValueType/" rel="canonical"><link href=../object_t/ rel=prev><link href=../operator_value_t/ rel=next><link rel=icon href=../../../assets/images/favicon.png><meta name=generator content="mkdocs-1.6.1, mkdocs-material-9.7.6"><title>operator ValueType - JSON for Modern C++</title><link rel=stylesheet href=../../../assets/stylesheets/main.484c7ddc.min.css><link rel=stylesheet href=../../../assets/stylesheets/palette.ab4e12ef.min.css><link rel="stylesheet" href="../../../assets/external/fonts.googleapis.com/css.61a430c9.css"><style>:root{--md-text-font:"Roboto";--md-code-font:"JetBrains Mono"}</style><link rel=stylesheet href=../../../css/custom.css><script>__md_scope=new URL("../../..",location),__md_hash=e=>[...e].reduce(((e,_)=>(e<<5)-e+_.charCodeAt(0)),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script></head> <body dir=ltr data-md-color-scheme=default data-md-color-primary=indigo data-md-color-accent=indigo> <input class=md-toggle data-md-toggle=drawer type=checkbox id=__drawer autocomplete=off> <input class=md-toggle data-md-toggle=search type=checkbox id=__search autocomplete=off> <label class=md-overlay for=__drawer></label> <div data-md-component=skip> <a href=#nlohmannbasic_jsonoperator-valuetype class=md-skip> Skip to content </a> </div> <div data-md-component=announce> </div> <header class=md-header data-md-component=header> <nav class="md-header__inner md-grid" aria-label=Header> <a href=../../.. title="JSON for Modern C++" class="md-header__button md-logo" aria-label="JSON for Modern C++" data-md-component=logo> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54"/></svg> </a> <label class="md-header__button md-icon" for=__drawer> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M3 6h18v2H3zm0 5h18v2H3zm0 5h18v2H3z"/></svg> </label> <div class=md-header__title data-md-component=header-title> <div class=md-header__ellipsis> <div class=md-header__topic> <span class=md-ellipsis> JSON for Modern C++ </span> </div> <div class=md-header__topic data-md-component=header-topic> <span class=md-ellipsis> operator ValueType </span> </div> </div> </div> <form class=md-header__option data-md-component=palette> <input class=md-option data-md-color-media="(prefers-color-scheme: light)" data-md-color-scheme=default data-md-color-primary=indigo data-md-color-accent=indigo aria-label="Switch to dark mode" type=radio name=__palette id=__palette_0> <label class="md-header__button md-icon" title="Switch to dark mode" for=__palette_1 hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a4 4 0 0 0-4 4 4 4 0 0 0 4 4 4 4 0 0 0 4-4 4 4 0 0 0-4-4m0 10a6 6 0 0 1-6-6 6 6 0 0 1 6-6 6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12z"/></svg> </label> <input class=md-option data-md-color-media="(prefers-color-scheme: dark)" data-md-color-scheme=slate data-md-color-primary=indigo data-md-color-accent=indigo aria-label="Switch to light mode" type=radio name=__palette id=__palette_1> <label class="md-header__button md-icon" title="Switch to light mode" for=__palette_0 hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 18c-.89 0-1.74-.2-2.5-.55C11.56 16.5 13 14.42 13 12s-1.44-4.5-3.5-5.45C10.26 6.2 11.11 6 12 6a6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12z"/></svg> </label> </form> <script>var palette=__md_get("__palette");if(palette&&palette.color){if("(prefers-color-scheme)"===palette.color.media){var media=matchMedia("(prefers-color-scheme: light)"),input=document.querySelector(media.matches?"[data-md-color-media='(prefers-color-scheme: light)']":"[data-md-color-media='(prefers-color-scheme: dark)']");palette.color.media=input.getAttribute("data-md-color-media"),palette.color.scheme=input.getAttribute("data-md-color-scheme"),palette.color.primary=input.getAttribute("data-md-color-primary"),palette.color.accent=input.getAttribute("data-md-color-accent")}for(var[key,value]of Object.entries(palette.color))document.body.setAttribute("data-md-color-"+key,value)}</script> <label class="md-header__button md-icon" for=__search> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg> </label> <div class=md-search data-md-component=search role=dialog> <label class=md-search__overlay for=__search></label> <div class=md-search__inner role=search> <form class=md-search__form name=search> <input type=text class=md-search__input name=query aria-label=Search placeholder=Search autocapitalize=off autocorrect=off autocomplete=off spellcheck=false data-md-component=search-query required> <label class="md-search__icon md-icon" for=__search> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11z"/></svg> </label> <nav class=md-search__options aria-label=Search> <button type=reset class="md-search__icon md-icon" title=Clear aria-label=Clear tabindex=-1> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z"/></svg> </button> </nav> </form> <div class=md-search__output> <div class=md-search__scrollwrap tabindex=0 data-md-scrollfix> <div class=md-search-result data-md-component=search-result> <div class=md-search-result__meta> Initializing search </div> <ol class=md-search-result__list role=presentation></ol> </div> </div> </div> </div> </div> <div class=md-header__source> <a href="https://github.com/nlohmann/json" title="Go to repository" class="md-source" data-md-component="source"> <div class="md-source__icon md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </div> <div class=md-source__repository> nlohmann/json </div> </a> </div> </nav> </header> <div class=md-container data-md-component=container> <nav class=md-tabs aria-label=Tabs data-md-component=tabs> <div class=md-grid> <ul class=md-tabs__list> <li class=md-tabs__item> <a href=../../.. class=md-tabs__link> Home </a> </li> <li class=md-tabs__item> <a href=../../../features/arbitrary_types/ class=md-tabs__link> Features </a> </li> <li class=md-tabs__item> <a href=../../../integration/ class=md-tabs__link> Integration </a> </li> <li class="md-tabs__item md-tabs__item--active"> <a href=../ class=md-tabs__link> API Documentation </a> </li> <li class=md-tabs__item> <a href=../../../community/ class=md-tabs__link> Community </a> </li> </ul> </div> </nav> <main class=md-main data-md-component=main> <div class="md-main__inner md-grid"> <div class="md-sidebar md-sidebar--primary" data-md-component=sidebar data-md-type=navigation> <div class=md-sidebar__scrollwrap> <div class=md-sidebar__inner> <nav class="md-nav md-nav--primary md-nav--lifted" aria-label=Navigation data-md-level=0> <label class=md-nav__title for=__drawer> <a href=../../.. title="JSON for Modern C++" class="md-nav__button md-logo" aria-label="JSON for Modern C++" data-md-component=logo> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54"/></svg> </a> JSON for Modern C++ </label> <div class=md-nav__source> <a href="https://github.com/nlohmann/json" title="Go to repository" class="md-source" data-md-component="source"> <div class="md-source__icon md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </div> <div class=md-source__repository> nlohmann/json </div> </a> </div> <ul class=md-nav__list data-md-scrollfix> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_1> <div class="md-nav__link md-nav__container"> <a href=../../.. class="md-nav__link "> <span class=md-ellipsis> Home </span> </a> <label class="md-nav__link " for=__nav_1 id=__nav_1_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_1_label aria-expanded=false> <label class=md-nav__title for=__nav_1> <span class="md-nav__icon md-icon"></span> Home </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../home/license/ class=md-nav__link> <span class=md-ellipsis> License </span> </a> </li> <li class=md-nav__item> <a href=../../../home/faq/ class=md-nav__link> <span class=md-ellipsis> FAQ </span> </a> </li> <li class=md-nav__item> <a href=../../../home/exceptions/ class=md-nav__link> <span class=md-ellipsis> Exceptions </span> </a> </li> <li class=md-nav__item> <a href=../../../home/releases/ class=md-nav__link> <span class=md-ellipsis> Releases </span> </a> </li> <li class=md-nav__item> <a href=../../../home/design_goals/ class=md-nav__link> <span class=md-ellipsis> Design goals </span> </a> </li> <li class=md-nav__item> <a href=../../../home/architecture/ class=md-nav__link> <span class=md-ellipsis> Architecture </span> </a> </li> <li class=md-nav__item> <a href=../../../home/customers/ class=md-nav__link> <span class=md-ellipsis> Customers </span> </a> </li> <li class=md-nav__item> <a href=../../../home/sponsors/ class=md-nav__link> <span class=md-ellipsis> Sponsors </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2> <label class=md-nav__link for=__nav_2 id=__nav_2_label tabindex=0> <span class=md-ellipsis> Features </span> <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_2_label aria-expanded=false> <label class=md-nav__title for=__nav_2> <span class="md-nav__icon md-icon"></span> Features </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/arbitrary_types/ class=md-nav__link> <span class=md-ellipsis> Arbitrary Type Conversions </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_2> <div class="md-nav__link md-nav__container"> <a href=../../../features/binary_formats/ class="md-nav__link "> <span class=md-ellipsis> Binary Formats </span> </a> <label class="md-nav__link " for=__nav_2_2 id=__nav_2_2_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_2_label aria-expanded=false> <label class=md-nav__title for=__nav_2_2> <span class="md-nav__icon md-icon"></span> Binary Formats </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/binary_formats/bjdata/ class=md-nav__link> <span class=md-ellipsis> BJData </span> </a> </li> <li class=md-nav__item> <a href=../../../features/binary_formats/bson/ class=md-nav__link> <span class=md-ellipsis> BSON </span> </a> </li> <li class=md-nav__item> <a href=../../../features/binary_formats/cbor/ class=md-nav__link> <span class=md-ellipsis> CBOR </span> </a> </li> <li class=md-nav__item> <a href=../../../features/binary_formats/messagepack/ class=md-nav__link> <span class=md-ellipsis> MessagePack </span> </a> </li> <li class=md-nav__item> <a href=../../../features/binary_formats/ubjson/ class=md-nav__link> <span class=md-ellipsis> UBJSON </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../../features/binary_values/ class=md-nav__link> <span class=md-ellipsis> Binary Values </span> </a> </li> <li class=md-nav__item> <a href=../../../features/comments/ class=md-nav__link> <span class=md-ellipsis> Comments </span> </a> </li> <li class=md-nav__item> <a href=../../../features/trailing_commas/ class=md-nav__link> <span class=md-ellipsis> Trailing Commas </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_6> <div class="md-nav__link md-nav__container"> <a href=../../../features/element_access/ class="md-nav__link "> <span class=md-ellipsis> Element Access </span> </a> <label class="md-nav__link " for=__nav_2_6 id=__nav_2_6_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_6_label aria-expanded=false> <label class=md-nav__title for=__nav_2_6> <span class="md-nav__icon md-icon"></span> Element Access </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/element_access/unchecked_access/ class=md-nav__link> <span class=md-ellipsis> Unchecked access: operator[] </span> </a> </li> <li class=md-nav__item> <a href=../../../features/element_access/checked_access/ class=md-nav__link> <span class=md-ellipsis> Checked access: at </span> </a> </li> <li class=md-nav__item> <a href=../../../features/element_access/default_value/ class=md-nav__link> <span class=md-ellipsis> Access with default value: value </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../../features/iterators/ class=md-nav__link> <span class=md-ellipsis> Iterators </span> </a> </li> <li class=md-nav__item> <a href=../../../features/json_pointer/ class=md-nav__link> <span class=md-ellipsis> JSON Pointer </span> </a> </li> <li class=md-nav__item> <a href=../../../features/json_patch/ class=md-nav__link> <span class=md-ellipsis> JSON Patch and Diff </span> </a> </li> <li class=md-nav__item> <a href=../../../features/merge_patch/ class=md-nav__link> <span class=md-ellipsis> JSON Merge Patch </span> </a> </li> <li class=md-nav__item> <a href=../../../features/modules/ class=md-nav__link> <span class=md-ellipsis> Modules </span> </a> </li> <li class=md-nav__item> <a href=../../../features/namespace/ class=md-nav__link> <span class=md-ellipsis> nlohmann Namespace </span> </a> </li> <li class=md-nav__item> <a href=../../../features/object_order/ class=md-nav__link> <span class=md-ellipsis> Object Order </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_14> <div class="md-nav__link md-nav__container"> <a href=../../../features/parsing/ class="md-nav__link "> <span class=md-ellipsis> Parsing </span> </a> <label class="md-nav__link " for=__nav_2_14 id=__nav_2_14_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_14_label aria-expanded=false> <label class=md-nav__title for=__nav_2_14> <span class="md-nav__icon md-icon"></span> Parsing </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/parsing/json_lines/ class=md-nav__link> <span class=md-ellipsis> JSON Lines </span> </a> </li> <li class=md-nav__item> <a href=../../../features/parsing/parse_exceptions/ class=md-nav__link> <span class=md-ellipsis> Parsing and Exceptions </span> </a> </li> <li class=md-nav__item> <a href=../../../features/parsing/parser_callbacks/ class=md-nav__link> <span class=md-ellipsis> Parser Callbacks </span> </a> </li> <li class=md-nav__item> <a href=../../../features/parsing/sax_interface/ class=md-nav__link> <span class=md-ellipsis> SAX Interface </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../../features/assertions/ class=md-nav__link> <span class=md-ellipsis> Runtime Assertions </span> </a> </li> <li class=md-nav__item> <a href=../../../features/enum_conversion/ class=md-nav__link> <span class=md-ellipsis> Specializing enum conversion </span> </a> </li> <li class=md-nav__item> <a href=../../../features/macros/ class=md-nav__link> <span class=md-ellipsis> Supported Macros </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_18> <div class="md-nav__link md-nav__container"> <a href=../../../features/types/ class="md-nav__link "> <span class=md-ellipsis> Types </span> </a> <label class="md-nav__link " for=__nav_2_18 id=__nav_2_18_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_18_label aria-expanded=false> <label class=md-nav__title for=__nav_2_18> <span class="md-nav__icon md-icon"></span> Types </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/types/number_handling/ class=md-nav__link> <span class=md-ellipsis> Number Handling </span> </a> </li> </ul> </nav> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_3> <div class="md-nav__link md-nav__container"> <a href=../../../integration/ class="md-nav__link "> <span class=md-ellipsis> Integration </span> </a> <label class="md-nav__link " for=__nav_3 id=__nav_3_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_3_label aria-expanded=false> <label class=md-nav__title for=__nav_3> <span class="md-nav__icon md-icon"></span> Integration </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../integration/migration_guide/ class=md-nav__link> <span class=md-ellipsis> Migration Guide </span> </a> </li> <li class=md-nav__item> <a href=../../../integration/cmake/ class=md-nav__link> <span class=md-ellipsis> CMake </span> </a> </li> <li class=md-nav__item> <a href=../../../integration/package_managers/ class=md-nav__link> <span class=md-ellipsis> Package Managers </span> </a> </li> <li class=md-nav__item> <a href=../../../integration/pkg-config/ class=md-nav__link> <span class=md-ellipsis> Pkg-config </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--active md-nav__item--section md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4 checked> <label class=md-nav__link for=__nav_4 id=__nav_4_label tabindex> <span class=md-ellipsis> API Documentation </span> <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_4_label aria-expanded=true> <label class=md-nav__title for=__nav_4> <span class="md-nav__icon md-icon"></span> API Documentation </label> <ul class=md-nav__list data-md-scrollfix> <li class="md-nav__item md-nav__item--active md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_1 checked> <div class="md-nav__link md-nav__container"> <a href=../ class="md-nav__link "> <span class=md-ellipsis> basic_json </span> </a> <label class="md-nav__link " for=__nav_4_1 id=__nav_4_1_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_1_label aria-expanded=true> <label class=md-nav__title for=__nav_4_1> <span class="md-nav__icon md-icon"></span> basic_json </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../basic_json/ class=md-nav__link> <span class=md-ellipsis> (Constructor) </span> </a> </li> <li class=md-nav__item> <a href=../~basic_json/ class=md-nav__link> <span class=md-ellipsis> (Destructor) </span> </a> </li> <li class=md-nav__item> <a href=../accept/ class=md-nav__link> <span class=md-ellipsis> accept </span> </a> </li> <li class=md-nav__item> <a href=../array/ class=md-nav__link> <span class=md-ellipsis> array </span> </a> </li> <li class=md-nav__item> <a href=../array_t/ class=md-nav__link> <span class=md-ellipsis> array_t </span> </a> </li> <li class=md-nav__item> <a href=../at/ class=md-nav__link> <span class=md-ellipsis> at </span> </a> </li> <li class=md-nav__item> <a href=../back/ class=md-nav__link> <span class=md-ellipsis> back </span> </a> </li> <li class=md-nav__item> <a href=../begin/ class=md-nav__link> <span class=md-ellipsis> begin </span> </a> </li> <li class=md-nav__item> <a href=../binary/ class=md-nav__link> <span class=md-ellipsis> binary </span> </a> </li> <li class=md-nav__item> <a href=../binary_t/ class=md-nav__link> <span class=md-ellipsis> binary_t </span> </a> </li> <li class=md-nav__item> <a href=../boolean_t/ class=md-nav__link> <span class=md-ellipsis> boolean_t </span> </a> </li> <li class=md-nav__item> <a href=../cbegin/ class=md-nav__link> <span class=md-ellipsis> cbegin </span> </a> </li> <li class=md-nav__item> <a href=../cbor_tag_handler_t/ class=md-nav__link> <span class=md-ellipsis> cbor_tag_handler_t </span> </a> </li> <li class=md-nav__item> <a href=../cend/ class=md-nav__link> <span class=md-ellipsis> cend </span> </a> </li> <li class=md-nav__item> <a href=../clear/ class=md-nav__link> <span class=md-ellipsis> clear </span> </a> </li> <li class=md-nav__item> <a href=../contains/ class=md-nav__link> <span class=md-ellipsis> contains </span> </a> </li> <li class=md-nav__item> <a href=../count/ class=md-nav__link> <span class=md-ellipsis> count </span> </a> </li> <li class=md-nav__item> <a href=../crbegin/ class=md-nav__link> <span class=md-ellipsis> crbegin </span> </a> </li> <li class=md-nav__item> <a href=../crend/ class=md-nav__link> <span class=md-ellipsis> crend </span> </a> </li> <li class=md-nav__item> <a href=../default_object_comparator_t/ class=md-nav__link> <span class=md-ellipsis> default_object_comparator_t </span> </a> </li> <li class=md-nav__item> <a href=../diff/ class=md-nav__link> <span class=md-ellipsis> diff </span> </a> </li> <li class=md-nav__item> <a href=../dump/ class=md-nav__link> <span class=md-ellipsis> dump </span> </a> </li> <li class=md-nav__item> <a href=../emplace/ class=md-nav__link> <span class=md-ellipsis> emplace </span> </a> </li> <li class=md-nav__item> <a href=../emplace_back/ class=md-nav__link> <span class=md-ellipsis> emplace_back </span> </a> </li> <li class=md-nav__item> <a href=../empty/ class=md-nav__link> <span class=md-ellipsis> empty </span> </a> </li> <li class=md-nav__item> <a href=../end/ class=md-nav__link> <span class=md-ellipsis> end </span> </a> </li> <li class=md-nav__item> <a href=../end_pos/ class=md-nav__link> <span class=md-ellipsis> end_pos </span> </a> </li> <li class=md-nav__item> <a href=../erase/ class=md-nav__link> <span class=md-ellipsis> erase </span> </a> </li> <li class=md-nav__item> <a href=../error_handler_t/ class=md-nav__link> <span class=md-ellipsis> error_handler_t </span> </a> </li> <li class=md-nav__item> <a href=../exception/ class=md-nav__link> <span class=md-ellipsis> exception </span> </a> </li> <li class=md-nav__item> <a href=../find/ class=md-nav__link> <span class=md-ellipsis> find </span> </a> </li> <li class=md-nav__item> <a href=../flatten/ class=md-nav__link> <span class=md-ellipsis> flatten </span> </a> </li> <li class=md-nav__item> <a href=../from_bjdata/ class=md-nav__link> <span class=md-ellipsis> from_bjdata </span> </a> </li> <li class=md-nav__item> <a href=../from_bson/ class=md-nav__link> <span class=md-ellipsis> from_bson </span> </a> </li> <li class=md-nav__item> <a href=../from_cbor/ class=md-nav__link> <span class=md-ellipsis> from_cbor </span> </a> </li> <li class=md-nav__item> <a href=../from_msgpack/ class=md-nav__link> <span class=md-ellipsis> from_msgpack </span> </a> </li> <li class=md-nav__item> <a href=../from_ubjson/ class=md-nav__link> <span class=md-ellipsis> from_ubjson </span> </a> </li> <li class=md-nav__item> <a href=../front/ class=md-nav__link> <span class=md-ellipsis> front </span> </a> </li> <li class=md-nav__item> <a href=../get/ class=md-nav__link> <span class=md-ellipsis> get </span> </a> </li> <li class=md-nav__item> <a href=../get_allocator/ class=md-nav__link> <span class=md-ellipsis> get_allocator </span> </a> </li> <li class=md-nav__item> <a href=../get_binary/ class=md-nav__link> <span class=md-ellipsis> get_binary </span> </a> </li> <li class=md-nav__item> <a href=../get_ptr/ class=md-nav__link> <span class=md-ellipsis> get_ptr </span> </a> </li> <li class=md-nav__item> <a href=../get_ref/ class=md-nav__link> <span class=md-ellipsis> get_ref </span> </a> </li> <li class=md-nav__item> <a href=../get_to/ class=md-nav__link> <span class=md-ellipsis> get_to </span> </a> </li> <li class=md-nav__item> <a href=../std_hash/ class=md-nav__link> <span class=md-ellipsis> std::hash&lt;basic_json&gt; </span> </a> </li> <li class=md-nav__item> <a href=../input_format_t/ class=md-nav__link> <span class=md-ellipsis> input_format_t </span> </a> </li> <li class=md-nav__item> <a href=../insert/ class=md-nav__link> <span class=md-ellipsis> insert </span> </a> </li> <li class=md-nav__item> <a href=../invalid_iterator/ class=md-nav__link> <span class=md-ellipsis> invalid_iterator </span> </a> </li> <li class=md-nav__item> <a href=../is_array/ class=md-nav__link> <span class=md-ellipsis> is_array </span> </a> </li> <li class=md-nav__item> <a href=../is_binary/ class=md-nav__link> <span class=md-ellipsis> is_binary </span> </a> </li> <li class=md-nav__item> <a href=../is_boolean/ class=md-nav__link> <span class=md-ellipsis> is_boolean </span> </a> </li> <li class=md-nav__item> <a href=../is_discarded/ class=md-nav__link> <span class=md-ellipsis> is_discarded </span> </a> </li> <li class=md-nav__item> <a href=../is_null/ class=md-nav__link> <span class=md-ellipsis> is_null </span> </a> </li> <li class=md-nav__item> <a href=../is_number/ class=md-nav__link> <span class=md-ellipsis> is_number </span> </a> </li> <li class=md-nav__item> <a href=../is_number_float/ class=md-nav__link> <span class=md-ellipsis> is_number_float </span> </a> </li> <li class=md-nav__item> <a href=../is_number_integer/ class=md-nav__link> <span class=md-ellipsis> is_number_integer </span> </a> </li> <li class=md-nav__item> <a href=../is_number_unsigned/ class=md-nav__link> <span class=md-ellipsis> is_number_unsigned </span> </a> </li> <li class=md-nav__item> <a href=../is_object/ class=md-nav__link> <span class=md-ellipsis> is_object </span> </a> </li> <li class=md-nav__item> <a href=../is_primitive/ class=md-nav__link> <span class=md-ellipsis> is_primitive </span> </a> </li> <li class=md-nav__item> <a href=../is_string/ class=md-nav__link> <span class=md-ellipsis> is_string </span> </a> </li> <li class=md-nav__item> <a href=../is_structured/ class=md-nav__link> <span class=md-ellipsis> is_structured </span> </a> </li> <li class=md-nav__item> <a href=../items/ class=md-nav__link> <span class=md-ellipsis> items </span> </a> </li> <li class=md-nav__item> <a href=../json_base_class_t/ class=md-nav__link> <span class=md-ellipsis> json_base_class_t </span> </a> </li> <li class=md-nav__item> <a href=../json_serializer/ class=md-nav__link> <span class=md-ellipsis> json_serializer </span> </a> </li> <li class=md-nav__item> <a href=../max_size/ class=md-nav__link> <span class=md-ellipsis> max_size </span> </a> </li> <li class=md-nav__item> <a href=../meta/ class=md-nav__link> <span class=md-ellipsis> meta </span> </a> </li> <li class=md-nav__item> <a href=../merge_patch/ class=md-nav__link> <span class=md-ellipsis> merge_patch </span> </a> </li> <li class=md-nav__item> <a href=../number_float_t/ class=md-nav__link> <span class=md-ellipsis> number_float_t </span> </a> </li> <li class=md-nav__item> <a href=../number_integer_t/ class=md-nav__link> <span class=md-ellipsis> number_integer_t </span> </a> </li> <li class=md-nav__item> <a href=../number_unsigned_t/ class=md-nav__link> <span class=md-ellipsis> number_unsigned_t </span> </a> </li> <li class=md-nav__item> <a href=../object/ class=md-nav__link> <span class=md-ellipsis> object </span> </a> </li> <li class=md-nav__item> <a href=../object_comparator_t/ class=md-nav__link> <span class=md-ellipsis> object_comparator_t </span> </a> </li> <li class=md-nav__item> <a href=../object_t/ class=md-nav__link> <span class=md-ellipsis> object_t </span> </a> </li> <li class="md-nav__item md-nav__item--active"> <input class="md-nav__toggle md-toggle" type=checkbox id=__toc> <label class="md-nav__link md-nav__link--active" for=__toc> <span class=md-ellipsis> operator ValueType </span> <span class="md-nav__icon md-icon"></span> </label> <a href=./ class="md-nav__link md-nav__link--active"> <span class=md-ellipsis> operator ValueType </span> </a> <nav class="md-nav md-nav--secondary" aria-label="Table of contents"> <label class=md-nav__title for=__toc> <span class="md-nav__icon md-icon"></span> Table of contents </label> <ul class=md-nav__list data-md-component=toc data-md-scrollfix> <li class=md-nav__item> <a href=#template-parameters class=md-nav__link> <span class=md-ellipsis> Template parameters </span> </a> </li> <li class=md-nav__item> <a href=#return-value class=md-nav__link> <span class=md-ellipsis> Return value </span> </a> </li> <li class=md-nav__item> <a href=#exceptions class=md-nav__link> <span class=md-ellipsis> Exceptions </span> </a> </li> <li class=md-nav__item> <a href=#complexity class=md-nav__link> <span class=md-ellipsis> Complexity </span> </a> </li> <li class=md-nav__item> <a href=#notes class=md-nav__link> <span class=md-ellipsis> Notes </span> </a> </li> <li class=md-nav__item> <a href=#examples class=md-nav__link> <span class=md-ellipsis> Examples </span> </a> </li> <li class=md-nav__item> <a href=#version-history class=md-nav__link> <span class=md-ellipsis> Version history </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../operator_value_t/ class=md-nav__link> <span class=md-ellipsis> operator value_t </span> </a> </li> <li class=md-nav__item> <a href=../operator%5B%5D/ class=md-nav__link> <span class=md-ellipsis> operator[] </span> </a> </li> <li class=md-nav__item> <a href=../operator%3D/ class=md-nav__link> <span class=md-ellipsis> operator= </span> </a> </li> <li class=md-nav__item> <a href=../operator%2B%3D/ class=md-nav__link> <span class=md-ellipsis> operator+= </span> </a> </li> <li class=md-nav__item> <a href=../operator_eq/ class=md-nav__link> <span class=md-ellipsis> operator== </span> </a> </li> <li class=md-nav__item> <a href=../operator_ne/ class=md-nav__link> <span class=md-ellipsis> operator!= </span> </a> </li> <li class=md-nav__item> <a href=../operator_lt/ class=md-nav__link> <span class=md-ellipsis> operator< </span> </a> </li> <li class=md-nav__item> <a href=../operator_gt/ class=md-nav__link> <span class=md-ellipsis> operator> </span> </a> </li> <li class=md-nav__item> <a href=../operator_le/ class=md-nav__link> <span class=md-ellipsis> operator<= </span> </a> </li> <li class=md-nav__item> <a href=../operator_ge/ class=md-nav__link> <span class=md-ellipsis> operator>= </span> </a> </li> <li class=md-nav__item> <a href=../operator_spaceship/ class=md-nav__link> <span class=md-ellipsis> operator<=> </span> </a> </li> <li class=md-nav__item> <a href=../out_of_range/ class=md-nav__link> <span class=md-ellipsis> out_of_range </span> </a> </li> <li class=md-nav__item> <a href=../other_error/ class=md-nav__link> <span class=md-ellipsis> other_error </span> </a> </li> <li class=md-nav__item> <a href=../parse/ class=md-nav__link> <span class=md-ellipsis> parse </span> </a> </li> <li class=md-nav__item> <a href=../parse_error/ class=md-nav__link> <span class=md-ellipsis> parse_error </span> </a> </li> <li class=md-nav__item> <a href=../parse_event_t/ class=md-nav__link> <span class=md-ellipsis> parse_event_t </span> </a> </li> <li class=md-nav__item> <a href=../parser_callback_t/ class=md-nav__link> <span class=md-ellipsis> parser_callback_t </span> </a> </li> <li class=md-nav__item> <a href=../patch/ class=md-nav__link> <span class=md-ellipsis> patch </span> </a> </li> <li class=md-nav__item> <a href=../patch_inplace/ class=md-nav__link> <span class=md-ellipsis> patch_inplace </span> </a> </li> <li class=md-nav__item> <a href=../push_back/ class=md-nav__link> <span class=md-ellipsis> push_back </span> </a> </li> <li class=md-nav__item> <a href=../rbegin/ class=md-nav__link> <span class=md-ellipsis> rbegin </span> </a> </li> <li class=md-nav__item> <a href=../rend/ class=md-nav__link> <span class=md-ellipsis> rend </span> </a> </li> <li class=md-nav__item> <a href=../sax_parse/ class=md-nav__link> <span class=md-ellipsis> sax_parse </span> </a> </li> <li class=md-nav__item> <a href=../size/ class=md-nav__link> <span class=md-ellipsis> size </span> </a> </li> <li class=md-nav__item> <a href=../start_pos/ class=md-nav__link> <span class=md-ellipsis> start_pos </span> </a> </li> <li class=md-nav__item> <a href=../string_t/ class=md-nav__link> <span class=md-ellipsis> string_t </span> </a> </li> <li class=md-nav__item> <a href=../swap/ class=md-nav__link> <span class=md-ellipsis> swap </span> </a> </li> <li class=md-nav__item> <a href=../std_swap/ class=md-nav__link> <span class=md-ellipsis> std::swap&lt;basic_json&gt; </span> </a> </li> <li class=md-nav__item> <a href=../to_bjdata/ class=md-nav__link> <span class=md-ellipsis> to_bjdata </span> </a> </li> <li class=md-nav__item> <a href=../to_bson/ class=md-nav__link> <span class=md-ellipsis> to_bson </span> </a> </li> <li class=md-nav__item> <a href=../to_cbor/ class=md-nav__link> <span class=md-ellipsis> to_cbor </span> </a> </li> <li class=md-nav__item> <a href=../to_msgpack/ class=md-nav__link> <span class=md-ellipsis> to_msgpack </span> </a> </li> <li class=md-nav__item> <a href=../to_string/ class=md-nav__link> <span class=md-ellipsis> to_string </span> </a> </li> <li class=md-nav__item> <a href=../to_ubjson/ class=md-nav__link> <span class=md-ellipsis> to_ubjson </span> </a> </li> <li class=md-nav__item> <a href=../type/ class=md-nav__link> <span class=md-ellipsis> type </span> </a> </li> <li class=md-nav__item> <a href=../type_error/ class=md-nav__link> <span class=md-ellipsis> type_error </span> </a> </li> <li class=md-nav__item> <a href=../type_name/ class=md-nav__link> <span class=md-ellipsis> type_name </span> </a> </li> <li class=md-nav__item> <a href=../unflatten/ class=md-nav__link> <span class=md-ellipsis> unflatten </span> </a> </li> <li class=md-nav__item> <a href=../update/ class=md-nav__link> <span class=md-ellipsis> update </span> </a> </li> <li class=md-nav__item> <a href=../value/ class=md-nav__link> <span class=md-ellipsis> value </span> </a> </li> <li class=md-nav__item> <a href=../value_t/ class=md-nav__link> <span class=md-ellipsis> value_t </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_2> <div class="md-nav__link md-nav__container"> <a href=../../byte_container_with_subtype/ class="md-nav__link "> <span class=md-ellipsis> byte_container_with_subtype </span> </a> <label class="md-nav__link " for=__nav_4_2 id=__nav_4_2_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_2_label aria-expanded=false> <label class=md-nav__title for=__nav_4_2> <span class="md-nav__icon md-icon"></span> byte_container_with_subtype </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../byte_container_with_subtype/byte_container_with_subtype/ class=md-nav__link> <span class=md-ellipsis> (constructor) </span> </a> </li> <li class=md-nav__item> <a href=../../byte_container_with_subtype/clear_subtype/ class=md-nav__link> <span class=md-ellipsis> clear_subtype </span> </a> </li> <li class=md-nav__item> <a href=../../byte_container_with_subtype/has_subtype/ class=md-nav__link> <span class=md-ellipsis> has_subtype </span> </a> </li> <li class=md-nav__item> <a href=../../byte_container_with_subtype/set_subtype/ class=md-nav__link> <span class=md-ellipsis> set_subtype </span> </a> </li> <li class=md-nav__item> <a href=../../byte_container_with_subtype/subtype/ class=md-nav__link> <span class=md-ellipsis> subtype </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_3> <div class="md-nav__link md-nav__container"> <a href=../../adl_serializer/ class="md-nav__link "> <span class=md-ellipsis> adl_serializer </span> </a> <label class="md-nav__link " for=__nav_4_3 id=__nav_4_3_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_3_label aria-expanded=false> <label class=md-nav__title for=__nav_4_3> <span class="md-nav__icon md-icon"></span> adl_serializer </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../adl_serializer/from_json/ class=md-nav__link> <span class=md-ellipsis> from_json </span> </a> </li> <li class=md-nav__item> <a href=../../adl_serializer/to_json/ class=md-nav__link> <span class=md-ellipsis> to_json </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../json/ class=md-nav__link> <span class=md-ellipsis> json </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_5> <div class="md-nav__link md-nav__container"> <a href=../../json_pointer/ class="md-nav__link "> <span class=md-ellipsis> json_pointer </span> </a> <label class="md-nav__link " for=__nav_4_5 id=__nav_4_5_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_5_label aria-expanded=false> <label class=md-nav__title for=__nav_4_5> <span class="md-nav__icon md-icon"></span> json_pointer </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../json_pointer/json_pointer/ class=md-nav__link> <span class=md-ellipsis> (Constructor) </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/back/ class=md-nav__link> <span class=md-ellipsis> back </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/empty/ class=md-nav__link> <span class=md-ellipsis> empty </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/front/ class=md-nav__link> <span class=md-ellipsis> front </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_string_t/ class=md-nav__link> <span class=md-ellipsis> operator string_t </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_eq/ class=md-nav__link> <span class=md-ellipsis> operator== </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_ne/ class=md-nav__link> <span class=md-ellipsis> operator!= </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_slash/ class=md-nav__link> <span class=md-ellipsis> operator/ </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_slasheq/ class=md-nav__link> <span class=md-ellipsis> operator/= </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/parent_pointer/ class=md-nav__link> <span class=md-ellipsis> parent_pointer </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/pop_back/ class=md-nav__link> <span class=md-ellipsis> pop_back </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/pop_front/ class=md-nav__link> <span class=md-ellipsis> pop_front </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/push_back/ class=md-nav__link> <span class=md-ellipsis> push_back </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/push_front/ class=md-nav__link> <span class=md-ellipsis> push_front </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/string_t/ class=md-nav__link> <span class=md-ellipsis> string_t </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/to_string/ class=md-nav__link> <span class=md-ellipsis> to_string </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_6> <div class="md-nav__link md-nav__container"> <a href=../../json_sax/ class="md-nav__link "> <span class=md-ellipsis> json_sax </span> </a> <label class="md-nav__link " for=__nav_4_6 id=__nav_4_6_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_6_label aria-expanded=false> <label class=md-nav__title for=__nav_4_6> <span class="md-nav__icon md-icon"></span> json_sax </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../json_sax/binary/ class=md-nav__link> <span class=md-ellipsis> binary </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/boolean/ class=md-nav__link> <span class=md-ellipsis> boolean </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/end_array/ class=md-nav__link> <span class=md-ellipsis> end_array </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/end_object/ class=md-nav__link> <span class=md-ellipsis> end_object </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/key/ class=md-nav__link> <span class=md-ellipsis> key </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/null/ class=md-nav__link> <span class=md-ellipsis> null </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/number_float/ class=md-nav__link> <span class=md-ellipsis> number_float </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/number_integer/ class=md-nav__link> <span class=md-ellipsis> number_integer </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/number_unsigned/ class=md-nav__link> <span class=md-ellipsis> number_unsigned </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/parse_error/ class=md-nav__link> <span class=md-ellipsis> parse_error </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/start_array/ class=md-nav__link> <span class=md-ellipsis> start_array </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/start_object/ class=md-nav__link> <span class=md-ellipsis> start_object </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/string/ class=md-nav__link> <span class=md-ellipsis> string </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../operator_ltlt/ class=md-nav__link> <span class=md-ellipsis> operator<<(basic_json), operator<<(json_pointer) </span> </a> </li> <li class=md-nav__item> <a href=../../operator_gtgt/ class=md-nav__link> <span class=md-ellipsis> operator>>(basic_json) </span> </a> </li> <li class=md-nav__item> <a href=../../operator_literal_json/ class=md-nav__link> <span class=md-ellipsis> operator""_json </span> </a> </li> <li class=md-nav__item> <a href=../../operator_literal_json_pointer/ class=md-nav__link> <span class=md-ellipsis> operator""_json_pointer </span> </a> </li> <li class=md-nav__item> <a href=../../ordered_json/ class=md-nav__link> <span class=md-ellipsis> ordered_json </span> </a> </li> <li class=md-nav__item> <a href=../../ordered_map/ class=md-nav__link> <span class=md-ellipsis> ordered_map </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_13> <div class="md-nav__link md-nav__container"> <a href=../../macros/ class="md-nav__link "> <span class=md-ellipsis> macros </span> </a> <label class="md-nav__link " for=__nav_4_13 id=__nav_4_13_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_13_label aria-expanded=false> <label class=md-nav__title for=__nav_4_13> <span class="md-nav__icon md-icon"></span> macros </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../macros/json_assert/ class=md-nav__link> <span class=md-ellipsis> JSON_ASSERT </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_brace_init_copy_semantics/ class=md-nav__link> <span class=md-ellipsis> JSON_BRACE_INIT_COPY_SEMANTICS </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_throw_user/ class=md-nav__link> <span class=md-ellipsis> JSON_CATCH_USER, JSON_THROW_USER, JSON_TRY_USER </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_diagnostics/ class=md-nav__link> <span class=md-ellipsis> JSON_DIAGNOSTICS </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_diagnostic_positions/ class=md-nav__link> <span class=md-ellipsis> JSON_DIAGNOSTIC_POSITIONS </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_disable_enum_serialization/ class=md-nav__link> <span class=md-ellipsis> JSON_DISABLE_ENUM_SERIALIZATION </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_has_cpp_11/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_CPP_11, JSON_HAS_CPP_14, JSON_HAS_CPP_17, JSON_HAS_CPP_20 </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_has_filesystem/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_EXPERIMENTAL_FILESYSTEM, JSON_HAS_FILESYSTEM </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_has_ranges/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_RANGES </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_has_static_rtti/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_STATIC_RTTI </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_has_three_way_comparison/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_THREE_WAY_COMPARISON </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_noexception/ class=md-nav__link> <span class=md-ellipsis> JSON_NOEXCEPTION </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_no_io/ class=md-nav__link> <span class=md-ellipsis> JSON_NO_IO </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_skip_library_version_check/ class=md-nav__link> <span class=md-ellipsis> JSON_SKIP_LIBRARY_VERSION_CHECK </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_skip_unsupported_compiler_check/ class=md-nav__link> <span class=md-ellipsis> JSON_SKIP_UNSUPPORTED_COMPILER_CHECK </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_use_global_udls/ class=md-nav__link> <span class=md-ellipsis> JSON_USE_GLOBAL_UDLS </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_use_implicit_conversions/ class=md-nav__link> <span class=md-ellipsis> JSON_USE_IMPLICIT_CONVERSIONS </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_use_legacy_discarded_value_comparison/ class=md-nav__link> <span class=md-ellipsis> JSON_USE_LEGACY_DISCARDED_VALUE_COMPARISON </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_define_derived_type/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_ONLY_SERIALIZE, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_define_type_intrusive/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_TYPE_INTRUSIVE, NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_TYPE_INTRUSIVE_ONLY_SERIALIZE </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_define_type_non_intrusive/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_define_type_with_names/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_TYPE_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_namespace/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_NAMESPACE </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_namespace_begin/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_NAMESPACE_BEGIN, NLOHMANN_JSON_NAMESPACE_END </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_namespace_no_version/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_NAMESPACE_NO_VERSION </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_serialize_enum/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_SERIALIZE_ENUM </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_serialize_enum_strict/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_SERIALIZE_ENUM_STRICT </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_version_major/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_VERSION_MAJOR, NLOHMANN_JSON_VERSION_MINOR, NLOHMANN_JSON_VERSION_PATCH </span> </a> </li> </ul> </nav> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_5> <div class="md-nav__link md-nav__container"> <a href=../../../community/ class="md-nav__link "> <span class=md-ellipsis> Community </span> </a> <label class="md-nav__link " for=__nav_5 id=__nav_5_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_5_label aria-expanded=false> <label class=md-nav__title for=__nav_5> <span class="md-nav__icon md-icon"></span> Community </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../community/code_of_conduct/ class=md-nav__link> <span class=md-ellipsis> Code of Conduct </span> </a> </li> <li class=md-nav__item> <a href=../../../community/contribution_guidelines/ class=md-nav__link> <span class=md-ellipsis> Contribution Guidelines </span> </a> </li> <li class=md-nav__item> <a href=../../../community/quality_assurance/ class=md-nav__link> <span class=md-ellipsis> Quality assurance </span> </a> </li> <li class=md-nav__item> <a href=../../../community/governance/ class=md-nav__link> <span class=md-ellipsis> Governance </span> </a> </li> <li class=md-nav__item> <a href=../../../community/security_policy/ class=md-nav__link> <span class=md-ellipsis> Security Policy </span> </a> </li> </ul> </nav> </li> </ul> </nav> </div> </div> </div> <div class="md-sidebar md-sidebar--secondary" data-md-component=sidebar data-md-type=toc> <div class=md-sidebar__scrollwrap> <div class=md-sidebar__inner> <nav class="md-nav md-nav--secondary" aria-label="Table of contents"> <label class=md-nav__title for=__toc> <span class="md-nav__icon md-icon"></span> Table of contents </label> <ul class=md-nav__list data-md-component=toc data-md-scrollfix> <li class=md-nav__item> <a href=#template-parameters class=md-nav__link> <span class=md-ellipsis> Template parameters </span> </a> </li> <li class=md-nav__item> <a href=#return-value class=md-nav__link> <span class=md-ellipsis> Return value </span> </a> </li> <li class=md-nav__item> <a href=#exceptions class=md-nav__link> <span class=md-ellipsis> Exceptions </span> </a> </li> <li class=md-nav__item> <a href=#complexity class=md-nav__link> <span class=md-ellipsis> Complexity </span> </a> </li> <li class=md-nav__item> <a href=#notes class=md-nav__link> <span class=md-ellipsis> Notes </span> </a> </li> <li class=md-nav__item> <a href=#examples class=md-nav__link> <span class=md-ellipsis> Examples </span> </a> </li> <li class=md-nav__item> <a href=#version-history class=md-nav__link> <span class=md-ellipsis> Version history </span> </a> </li> </ul> </nav> </div> </div> </div> <div class=md-content data-md-component=content> <article class="md-content__inner md-typeset"> <a href="https://github.com/nlohmann/json/edit/develop/docs/mkdocs/docs/api/basic_json/operator_ValueType.md" title="Edit this page" class="md-content__button md-icon" rel="edit"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M10 20H6V4h7v5h5v3.1l2-2V8l-6-6H6c-1.1 0-2 .9-2 2v16c0 1.1.9 2 2 2h4zm10.2-7c.1 0 .3.1.4.2l1.3 1.3c.2.2.2.6 0 .8l-1 1-2.1-2.1 1-1c.1-.1.2-.2.4-.2m0 3.9L14.1 23H12v-2.1l6.1-6.1z"/></svg> </a> <a href="https://github.com/nlohmann/json/raw/develop/docs/mkdocs/docs/api/basic_json/operator_ValueType.md" title="View source of this page" class="md-content__button md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M17 18c.56 0 1 .44 1 1s-.44 1-1 1-1-.44-1-1 .44-1 1-1m0-3c-2.73 0-5.06 1.66-6 4 .94 2.34 3.27 4 6 4s5.06-1.66 6-4c-.94-2.34-3.27-4-6-4m0 6.5a2.5 2.5 0 0 1-2.5-2.5 2.5 2.5 0 0 1 2.5-2.5 2.5 2.5 0 0 1 2.5 2.5 2.5 2.5 0 0 1-2.5 2.5M9.27 20H6V4h7v5h5v4.07c.7.08 1.36.25 2 .49V8l-6-6H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h4.5a8.2 8.2 0 0 1-1.23-2"/></svg> </a> <h1 id=nlohmannbasic_jsonoperator-valuetype><small>nlohmann::basic_json::</small>operator ValueType<a class=headerlink href=#nlohmannbasic_jsonoperator-valuetype title="Permanent link">&para;</a></h1> <div class=highlight><pre><span></span><code><span class=k>template</span><span class=o>&lt;</span><span class=k>typename</span><span class=w> </span><span class=nc>ValueType</span><span class=o>&gt;</span>
+<!doctype html><html lang=en class=no-js> <head><meta charset=utf-8><meta name=viewport content="width=device-width,initial-scale=1"><meta name=author content="Niels Lohmann"><link href="https://json.nlohmann.me/api/basic_json/operator_ValueType/" rel="canonical"><link href=../object_t/ rel=prev><link href=../operator_value_t/ rel=next><link rel=icon href=../../../assets/images/favicon.png><meta name=generator content="mkdocs-1.6.1, mkdocs-material-9.7.6"><title>operator ValueType - JSON for Modern C++</title><link rel=stylesheet href=../../../assets/stylesheets/main.484c7ddc.min.css><link rel=stylesheet href=../../../assets/stylesheets/palette.ab4e12ef.min.css><link rel="stylesheet" href="../../../assets/external/fonts.googleapis.com/css.61a430c9.css"><style>:root{--md-text-font:"Roboto";--md-code-font:"JetBrains Mono"}</style><link rel=stylesheet href=../../../css/custom.css><script>__md_scope=new URL("../../..",location),__md_hash=e=>[...e].reduce(((e,_)=>(e<<5)-e+_.charCodeAt(0)),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script></head> <body dir=ltr data-md-color-scheme=default data-md-color-primary=indigo data-md-color-accent=indigo> <input class=md-toggle data-md-toggle=drawer type=checkbox id=__drawer autocomplete=off> <input class=md-toggle data-md-toggle=search type=checkbox id=__search autocomplete=off> <label class=md-overlay for=__drawer></label> <div data-md-component=skip> <a href=#nlohmannbasic_jsonoperator-valuetype class=md-skip> Skip to content </a> </div> <div data-md-component=announce> </div> <header class=md-header data-md-component=header> <nav class="md-header__inner md-grid" aria-label=Header> <a href=../../.. title="JSON for Modern C++" class="md-header__button md-logo" aria-label="JSON for Modern C++" data-md-component=logo> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54"/></svg> </a> <label class="md-header__button md-icon" for=__drawer> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M3 6h18v2H3zm0 5h18v2H3zm0 5h18v2H3z"/></svg> </label> <div class=md-header__title data-md-component=header-title> <div class=md-header__ellipsis> <div class=md-header__topic> <span class=md-ellipsis> JSON for Modern C++ </span> </div> <div class=md-header__topic data-md-component=header-topic> <span class=md-ellipsis> operator ValueType </span> </div> </div> </div> <form class=md-header__option data-md-component=palette> <input class=md-option data-md-color-media="(prefers-color-scheme: light)" data-md-color-scheme=default data-md-color-primary=indigo data-md-color-accent=indigo aria-label="Switch to dark mode" type=radio name=__palette id=__palette_0> <label class="md-header__button md-icon" title="Switch to dark mode" for=__palette_1 hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a4 4 0 0 0-4 4 4 4 0 0 0 4 4 4 4 0 0 0 4-4 4 4 0 0 0-4-4m0 10a6 6 0 0 1-6-6 6 6 0 0 1 6-6 6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12z"/></svg> </label> <input class=md-option data-md-color-media="(prefers-color-scheme: dark)" data-md-color-scheme=slate data-md-color-primary=indigo data-md-color-accent=indigo aria-label="Switch to light mode" type=radio name=__palette id=__palette_1> <label class="md-header__button md-icon" title="Switch to light mode" for=__palette_0 hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 18c-.89 0-1.74-.2-2.5-.55C11.56 16.5 13 14.42 13 12s-1.44-4.5-3.5-5.45C10.26 6.2 11.11 6 12 6a6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12z"/></svg> </label> </form> <script>var palette=__md_get("__palette");if(palette&&palette.color){if("(prefers-color-scheme)"===palette.color.media){var media=matchMedia("(prefers-color-scheme: light)"),input=document.querySelector(media.matches?"[data-md-color-media='(prefers-color-scheme: light)']":"[data-md-color-media='(prefers-color-scheme: dark)']");palette.color.media=input.getAttribute("data-md-color-media"),palette.color.scheme=input.getAttribute("data-md-color-scheme"),palette.color.primary=input.getAttribute("data-md-color-primary"),palette.color.accent=input.getAttribute("data-md-color-accent")}for(var[key,value]of Object.entries(palette.color))document.body.setAttribute("data-md-color-"+key,value)}</script> <label class="md-header__button md-icon" for=__search> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg> </label> <div class=md-search data-md-component=search role=dialog> <label class=md-search__overlay for=__search></label> <div class=md-search__inner role=search> <form class=md-search__form name=search> <input type=text class=md-search__input name=query aria-label=Search placeholder=Search autocapitalize=off autocorrect=off autocomplete=off spellcheck=false data-md-component=search-query required> <label class="md-search__icon md-icon" for=__search> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11z"/></svg> </label> <nav class=md-search__options aria-label=Search> <button type=reset class="md-search__icon md-icon" title=Clear aria-label=Clear tabindex=-1> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z"/></svg> </button> </nav> </form> <div class=md-search__output> <div class=md-search__scrollwrap tabindex=0 data-md-scrollfix> <div class=md-search-result data-md-component=search-result> <div class=md-search-result__meta> Initializing search </div> <ol class=md-search-result__list role=presentation></ol> </div> </div> </div> </div> </div> <div class=md-header__source> <a href="https://github.com/nlohmann/json" title="Go to repository" class="md-source" data-md-component="source"> <div class="md-source__icon md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </div> <div class=md-source__repository> nlohmann/json </div> </a> </div> </nav> </header> <div class=md-container data-md-component=container> <nav class=md-tabs aria-label=Tabs data-md-component=tabs> <div class=md-grid> <ul class=md-tabs__list> <li class=md-tabs__item> <a href=../../.. class=md-tabs__link> Home </a> </li> <li class=md-tabs__item> <a href=../../../features/arbitrary_types/ class=md-tabs__link> Features </a> </li> <li class=md-tabs__item> <a href=../../../integration/ class=md-tabs__link> Integration </a> </li> <li class="md-tabs__item md-tabs__item--active"> <a href=../ class=md-tabs__link> API Documentation </a> </li> <li class=md-tabs__item> <a href=../../../community/ class=md-tabs__link> Community </a> </li> </ul> </div> </nav> <main class=md-main data-md-component=main> <div class="md-main__inner md-grid"> <div class="md-sidebar md-sidebar--primary" data-md-component=sidebar data-md-type=navigation> <div class=md-sidebar__scrollwrap> <div class=md-sidebar__inner> <nav class="md-nav md-nav--primary md-nav--lifted" aria-label=Navigation data-md-level=0> <label class=md-nav__title for=__drawer> <a href=../../.. title="JSON for Modern C++" class="md-nav__button md-logo" aria-label="JSON for Modern C++" data-md-component=logo> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54"/></svg> </a> JSON for Modern C++ </label> <div class=md-nav__source> <a href="https://github.com/nlohmann/json" title="Go to repository" class="md-source" data-md-component="source"> <div class="md-source__icon md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </div> <div class=md-source__repository> nlohmann/json </div> </a> </div> <ul class=md-nav__list data-md-scrollfix> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_1> <div class="md-nav__link md-nav__container"> <a href=../../.. class="md-nav__link "> <span class=md-ellipsis> Home </span> </a> <label class="md-nav__link " for=__nav_1 id=__nav_1_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_1_label aria-expanded=false> <label class=md-nav__title for=__nav_1> <span class="md-nav__icon md-icon"></span> Home </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../home/license/ class=md-nav__link> <span class=md-ellipsis> License </span> </a> </li> <li class=md-nav__item> <a href=../../../home/faq/ class=md-nav__link> <span class=md-ellipsis> FAQ </span> </a> </li> <li class=md-nav__item> <a href=../../../home/exceptions/ class=md-nav__link> <span class=md-ellipsis> Exceptions </span> </a> </li> <li class=md-nav__item> <a href=../../../home/releases/ class=md-nav__link> <span class=md-ellipsis> Releases </span> </a> </li> <li class=md-nav__item> <a href=../../../home/design_goals/ class=md-nav__link> <span class=md-ellipsis> Design goals </span> </a> </li> <li class=md-nav__item> <a href=../../../home/architecture/ class=md-nav__link> <span class=md-ellipsis> Architecture </span> </a> </li> <li class=md-nav__item> <a href=../../../home/customers/ class=md-nav__link> <span class=md-ellipsis> Customers </span> </a> </li> <li class=md-nav__item> <a href=../../../home/sponsors/ class=md-nav__link> <span class=md-ellipsis> Sponsors </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2> <label class=md-nav__link for=__nav_2 id=__nav_2_label tabindex=0> <span class=md-ellipsis> Features </span> <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_2_label aria-expanded=false> <label class=md-nav__title for=__nav_2> <span class="md-nav__icon md-icon"></span> Features </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/arbitrary_types/ class=md-nav__link> <span class=md-ellipsis> Arbitrary Type Conversions </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_2> <div class="md-nav__link md-nav__container"> <a href=../../../features/binary_formats/ class="md-nav__link "> <span class=md-ellipsis> Binary Formats </span> </a> <label class="md-nav__link " for=__nav_2_2 id=__nav_2_2_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_2_label aria-expanded=false> <label class=md-nav__title for=__nav_2_2> <span class="md-nav__icon md-icon"></span> Binary Formats </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/binary_formats/bjdata/ class=md-nav__link> <span class=md-ellipsis> BJData </span> </a> </li> <li class=md-nav__item> <a href=../../../features/binary_formats/bson/ class=md-nav__link> <span class=md-ellipsis> BSON </span> </a> </li> <li class=md-nav__item> <a href=../../../features/binary_formats/cbor/ class=md-nav__link> <span class=md-ellipsis> CBOR </span> </a> </li> <li class=md-nav__item> <a href=../../../features/binary_formats/messagepack/ class=md-nav__link> <span class=md-ellipsis> MessagePack </span> </a> </li> <li class=md-nav__item> <a href=../../../features/binary_formats/ubjson/ class=md-nav__link> <span class=md-ellipsis> UBJSON </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../../features/binary_values/ class=md-nav__link> <span class=md-ellipsis> Binary Values </span> </a> </li> <li class=md-nav__item> <a href=../../../features/comments/ class=md-nav__link> <span class=md-ellipsis> Comments </span> </a> </li> <li class=md-nav__item> <a href=../../../features/trailing_commas/ class=md-nav__link> <span class=md-ellipsis> Trailing Commas </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_6> <div class="md-nav__link md-nav__container"> <a href=../../../features/element_access/ class="md-nav__link "> <span class=md-ellipsis> Element Access </span> </a> <label class="md-nav__link " for=__nav_2_6 id=__nav_2_6_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_6_label aria-expanded=false> <label class=md-nav__title for=__nav_2_6> <span class="md-nav__icon md-icon"></span> Element Access </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/element_access/unchecked_access/ class=md-nav__link> <span class=md-ellipsis> Unchecked access: operator[] </span> </a> </li> <li class=md-nav__item> <a href=../../../features/element_access/checked_access/ class=md-nav__link> <span class=md-ellipsis> Checked access: at </span> </a> </li> <li class=md-nav__item> <a href=../../../features/element_access/default_value/ class=md-nav__link> <span class=md-ellipsis> Access with default value: value </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../../features/iterators/ class=md-nav__link> <span class=md-ellipsis> Iterators </span> </a> </li> <li class=md-nav__item> <a href=../../../features/json_pointer/ class=md-nav__link> <span class=md-ellipsis> JSON Pointer </span> </a> </li> <li class=md-nav__item> <a href=../../../features/json_patch/ class=md-nav__link> <span class=md-ellipsis> JSON Patch and Diff </span> </a> </li> <li class=md-nav__item> <a href=../../../features/merge_patch/ class=md-nav__link> <span class=md-ellipsis> JSON Merge Patch </span> </a> </li> <li class=md-nav__item> <a href=../../../features/modules/ class=md-nav__link> <span class=md-ellipsis> Modules </span> </a> </li> <li class=md-nav__item> <a href=../../../features/namespace/ class=md-nav__link> <span class=md-ellipsis> nlohmann Namespace </span> </a> </li> <li class=md-nav__item> <a href=../../../features/object_order/ class=md-nav__link> <span class=md-ellipsis> Object Order </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_14> <div class="md-nav__link md-nav__container"> <a href=../../../features/parsing/ class="md-nav__link "> <span class=md-ellipsis> Parsing </span> </a> <label class="md-nav__link " for=__nav_2_14 id=__nav_2_14_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_14_label aria-expanded=false> <label class=md-nav__title for=__nav_2_14> <span class="md-nav__icon md-icon"></span> Parsing </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/parsing/json_lines/ class=md-nav__link> <span class=md-ellipsis> JSON Lines </span> </a> </li> <li class=md-nav__item> <a href=../../../features/parsing/parse_exceptions/ class=md-nav__link> <span class=md-ellipsis> Parsing and Exceptions </span> </a> </li> <li class=md-nav__item> <a href=../../../features/parsing/parser_callbacks/ class=md-nav__link> <span class=md-ellipsis> Parser Callbacks </span> </a> </li> <li class=md-nav__item> <a href=../../../features/parsing/sax_interface/ class=md-nav__link> <span class=md-ellipsis> SAX Interface </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../../features/assertions/ class=md-nav__link> <span class=md-ellipsis> Runtime Assertions </span> </a> </li> <li class=md-nav__item> <a href=../../../features/enum_conversion/ class=md-nav__link> <span class=md-ellipsis> Specializing enum conversion </span> </a> </li> <li class=md-nav__item> <a href=../../../features/macros/ class=md-nav__link> <span class=md-ellipsis> Supported Macros </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_18> <div class="md-nav__link md-nav__container"> <a href=../../../features/types/ class="md-nav__link "> <span class=md-ellipsis> Types </span> </a> <label class="md-nav__link " for=__nav_2_18 id=__nav_2_18_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_18_label aria-expanded=false> <label class=md-nav__title for=__nav_2_18> <span class="md-nav__icon md-icon"></span> Types </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/types/number_handling/ class=md-nav__link> <span class=md-ellipsis> Number Handling </span> </a> </li> </ul> </nav> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_3> <div class="md-nav__link md-nav__container"> <a href=../../../integration/ class="md-nav__link "> <span class=md-ellipsis> Integration </span> </a> <label class="md-nav__link " for=__nav_3 id=__nav_3_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_3_label aria-expanded=false> <label class=md-nav__title for=__nav_3> <span class="md-nav__icon md-icon"></span> Integration </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../integration/migration_guide/ class=md-nav__link> <span class=md-ellipsis> Migration Guide </span> </a> </li> <li class=md-nav__item> <a href=../../../integration/cmake/ class=md-nav__link> <span class=md-ellipsis> CMake </span> </a> </li> <li class=md-nav__item> <a href=../../../integration/package_managers/ class=md-nav__link> <span class=md-ellipsis> Package Managers </span> </a> </li> <li class=md-nav__item> <a href=../../../integration/pkg-config/ class=md-nav__link> <span class=md-ellipsis> Pkg-config </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--active md-nav__item--section md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4 checked> <label class=md-nav__link for=__nav_4 id=__nav_4_label tabindex> <span class=md-ellipsis> API Documentation </span> <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_4_label aria-expanded=true> <label class=md-nav__title for=__nav_4> <span class="md-nav__icon md-icon"></span> API Documentation </label> <ul class=md-nav__list data-md-scrollfix> <li class="md-nav__item md-nav__item--active md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_1 checked> <div class="md-nav__link md-nav__container"> <a href=../ class="md-nav__link "> <span class=md-ellipsis> basic_json </span> </a> <label class="md-nav__link " for=__nav_4_1 id=__nav_4_1_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_1_label aria-expanded=true> <label class=md-nav__title for=__nav_4_1> <span class="md-nav__icon md-icon"></span> basic_json </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../basic_json/ class=md-nav__link> <span class=md-ellipsis> (Constructor) </span> </a> </li> <li class=md-nav__item> <a href=../~basic_json/ class=md-nav__link> <span class=md-ellipsis> (Destructor) </span> </a> </li> <li class=md-nav__item> <a href=../accept/ class=md-nav__link> <span class=md-ellipsis> accept </span> </a> </li> <li class=md-nav__item> <a href=../array/ class=md-nav__link> <span class=md-ellipsis> array </span> </a> </li> <li class=md-nav__item> <a href=../array_t/ class=md-nav__link> <span class=md-ellipsis> array_t </span> </a> </li> <li class=md-nav__item> <a href=../at/ class=md-nav__link> <span class=md-ellipsis> at </span> </a> </li> <li class=md-nav__item> <a href=../back/ class=md-nav__link> <span class=md-ellipsis> back </span> </a> </li> <li class=md-nav__item> <a href=../begin/ class=md-nav__link> <span class=md-ellipsis> begin </span> </a> </li> <li class=md-nav__item> <a href=../binary/ class=md-nav__link> <span class=md-ellipsis> binary </span> </a> </li> <li class=md-nav__item> <a href=../binary_t/ class=md-nav__link> <span class=md-ellipsis> binary_t </span> </a> </li> <li class=md-nav__item> <a href=../boolean_t/ class=md-nav__link> <span class=md-ellipsis> boolean_t </span> </a> </li> <li class=md-nav__item> <a href=../cbegin/ class=md-nav__link> <span class=md-ellipsis> cbegin </span> </a> </li> <li class=md-nav__item> <a href=../cbor_tag_handler_t/ class=md-nav__link> <span class=md-ellipsis> cbor_tag_handler_t </span> </a> </li> <li class=md-nav__item> <a href=../cend/ class=md-nav__link> <span class=md-ellipsis> cend </span> </a> </li> <li class=md-nav__item> <a href=../clear/ class=md-nav__link> <span class=md-ellipsis> clear </span> </a> </li> <li class=md-nav__item> <a href=../contains/ class=md-nav__link> <span class=md-ellipsis> contains </span> </a> </li> <li class=md-nav__item> <a href=../count/ class=md-nav__link> <span class=md-ellipsis> count </span> </a> </li> <li class=md-nav__item> <a href=../crbegin/ class=md-nav__link> <span class=md-ellipsis> crbegin </span> </a> </li> <li class=md-nav__item> <a href=../crend/ class=md-nav__link> <span class=md-ellipsis> crend </span> </a> </li> <li class=md-nav__item> <a href=../default_object_comparator_t/ class=md-nav__link> <span class=md-ellipsis> default_object_comparator_t </span> </a> </li> <li class=md-nav__item> <a href=../diff/ class=md-nav__link> <span class=md-ellipsis> diff </span> </a> </li> <li class=md-nav__item> <a href=../dump/ class=md-nav__link> <span class=md-ellipsis> dump </span> </a> </li> <li class=md-nav__item> <a href=../emplace/ class=md-nav__link> <span class=md-ellipsis> emplace </span> </a> </li> <li class=md-nav__item> <a href=../emplace_back/ class=md-nav__link> <span class=md-ellipsis> emplace_back </span> </a> </li> <li class=md-nav__item> <a href=../empty/ class=md-nav__link> <span class=md-ellipsis> empty </span> </a> </li> <li class=md-nav__item> <a href=../end/ class=md-nav__link> <span class=md-ellipsis> end </span> </a> </li> <li class=md-nav__item> <a href=../end_pos/ class=md-nav__link> <span class=md-ellipsis> end_pos </span> </a> </li> <li class=md-nav__item> <a href=../erase/ class=md-nav__link> <span class=md-ellipsis> erase </span> </a> </li> <li class=md-nav__item> <a href=../error_handler_t/ class=md-nav__link> <span class=md-ellipsis> error_handler_t </span> </a> </li> <li class=md-nav__item> <a href=../exception/ class=md-nav__link> <span class=md-ellipsis> exception </span> </a> </li> <li class=md-nav__item> <a href=../find/ class=md-nav__link> <span class=md-ellipsis> find </span> </a> </li> <li class=md-nav__item> <a href=../flatten/ class=md-nav__link> <span class=md-ellipsis> flatten </span> </a> </li> <li class=md-nav__item> <a href=../from_bjdata/ class=md-nav__link> <span class=md-ellipsis> from_bjdata </span> </a> </li> <li class=md-nav__item> <a href=../from_bson/ class=md-nav__link> <span class=md-ellipsis> from_bson </span> </a> </li> <li class=md-nav__item> <a href=../from_cbor/ class=md-nav__link> <span class=md-ellipsis> from_cbor </span> </a> </li> <li class=md-nav__item> <a href=../from_msgpack/ class=md-nav__link> <span class=md-ellipsis> from_msgpack </span> </a> </li> <li class=md-nav__item> <a href=../from_ubjson/ class=md-nav__link> <span class=md-ellipsis> from_ubjson </span> </a> </li> <li class=md-nav__item> <a href=../front/ class=md-nav__link> <span class=md-ellipsis> front </span> </a> </li> <li class=md-nav__item> <a href=../get/ class=md-nav__link> <span class=md-ellipsis> get </span> </a> </li> <li class=md-nav__item> <a href=../get_allocator/ class=md-nav__link> <span class=md-ellipsis> get_allocator </span> </a> </li> <li class=md-nav__item> <a href=../get_binary/ class=md-nav__link> <span class=md-ellipsis> get_binary </span> </a> </li> <li class=md-nav__item> <a href=../get_ptr/ class=md-nav__link> <span class=md-ellipsis> get_ptr </span> </a> </li> <li class=md-nav__item> <a href=../get_ref/ class=md-nav__link> <span class=md-ellipsis> get_ref </span> </a> </li> <li class=md-nav__item> <a href=../get_to/ class=md-nav__link> <span class=md-ellipsis> get_to </span> </a> </li> <li class=md-nav__item> <a href=../std_hash/ class=md-nav__link> <span class=md-ellipsis> std::hash&lt;basic_json&gt; </span> </a> </li> <li class=md-nav__item> <a href=../input_format_t/ class=md-nav__link> <span class=md-ellipsis> input_format_t </span> </a> </li> <li class=md-nav__item> <a href=../insert/ class=md-nav__link> <span class=md-ellipsis> insert </span> </a> </li> <li class=md-nav__item> <a href=../invalid_iterator/ class=md-nav__link> <span class=md-ellipsis> invalid_iterator </span> </a> </li> <li class=md-nav__item> <a href=../is_array/ class=md-nav__link> <span class=md-ellipsis> is_array </span> </a> </li> <li class=md-nav__item> <a href=../is_binary/ class=md-nav__link> <span class=md-ellipsis> is_binary </span> </a> </li> <li class=md-nav__item> <a href=../is_boolean/ class=md-nav__link> <span class=md-ellipsis> is_boolean </span> </a> </li> <li class=md-nav__item> <a href=../is_discarded/ class=md-nav__link> <span class=md-ellipsis> is_discarded </span> </a> </li> <li class=md-nav__item> <a href=../is_null/ class=md-nav__link> <span class=md-ellipsis> is_null </span> </a> </li> <li class=md-nav__item> <a href=../is_number/ class=md-nav__link> <span class=md-ellipsis> is_number </span> </a> </li> <li class=md-nav__item> <a href=../is_number_float/ class=md-nav__link> <span class=md-ellipsis> is_number_float </span> </a> </li> <li class=md-nav__item> <a href=../is_number_integer/ class=md-nav__link> <span class=md-ellipsis> is_number_integer </span> </a> </li> <li class=md-nav__item> <a href=../is_number_unsigned/ class=md-nav__link> <span class=md-ellipsis> is_number_unsigned </span> </a> </li> <li class=md-nav__item> <a href=../is_object/ class=md-nav__link> <span class=md-ellipsis> is_object </span> </a> </li> <li class=md-nav__item> <a href=../is_primitive/ class=md-nav__link> <span class=md-ellipsis> is_primitive </span> </a> </li> <li class=md-nav__item> <a href=../is_string/ class=md-nav__link> <span class=md-ellipsis> is_string </span> </a> </li> <li class=md-nav__item> <a href=../is_structured/ class=md-nav__link> <span class=md-ellipsis> is_structured </span> </a> </li> <li class=md-nav__item> <a href=../items/ class=md-nav__link> <span class=md-ellipsis> items </span> </a> </li> <li class=md-nav__item> <a href=../json_base_class_t/ class=md-nav__link> <span class=md-ellipsis> json_base_class_t </span> </a> </li> <li class=md-nav__item> <a href=../json_serializer/ class=md-nav__link> <span class=md-ellipsis> json_serializer </span> </a> </li> <li class=md-nav__item> <a href=../max_size/ class=md-nav__link> <span class=md-ellipsis> max_size </span> </a> </li> <li class=md-nav__item> <a href=../meta/ class=md-nav__link> <span class=md-ellipsis> meta </span> </a> </li> <li class=md-nav__item> <a href=../merge_patch/ class=md-nav__link> <span class=md-ellipsis> merge_patch </span> </a> </li> <li class=md-nav__item> <a href=../number_float_t/ class=md-nav__link> <span class=md-ellipsis> number_float_t </span> </a> </li> <li class=md-nav__item> <a href=../number_integer_t/ class=md-nav__link> <span class=md-ellipsis> number_integer_t </span> </a> </li> <li class=md-nav__item> <a href=../number_unsigned_t/ class=md-nav__link> <span class=md-ellipsis> number_unsigned_t </span> </a> </li> <li class=md-nav__item> <a href=../object/ class=md-nav__link> <span class=md-ellipsis> object </span> </a> </li> <li class=md-nav__item> <a href=../object_comparator_t/ class=md-nav__link> <span class=md-ellipsis> object_comparator_t </span> </a> </li> <li class=md-nav__item> <a href=../object_t/ class=md-nav__link> <span class=md-ellipsis> object_t </span> </a> </li> <li class="md-nav__item md-nav__item--active"> <input class="md-nav__toggle md-toggle" type=checkbox id=__toc> <label class="md-nav__link md-nav__link--active" for=__toc> <span class=md-ellipsis> operator ValueType </span> <span class="md-nav__icon md-icon"></span> </label> <a href=./ class="md-nav__link md-nav__link--active"> <span class=md-ellipsis> operator ValueType </span> </a> <nav class="md-nav md-nav--secondary" aria-label="Table of contents"> <label class=md-nav__title for=__toc> <span class="md-nav__icon md-icon"></span> Table of contents </label> <ul class=md-nav__list data-md-component=toc data-md-scrollfix> <li class=md-nav__item> <a href=#template-parameters class=md-nav__link> <span class=md-ellipsis> Template parameters </span> </a> </li> <li class=md-nav__item> <a href=#return-value class=md-nav__link> <span class=md-ellipsis> Return value </span> </a> </li> <li class=md-nav__item> <a href=#exceptions class=md-nav__link> <span class=md-ellipsis> Exceptions </span> </a> </li> <li class=md-nav__item> <a href=#complexity class=md-nav__link> <span class=md-ellipsis> Complexity </span> </a> </li> <li class=md-nav__item> <a href=#notes class=md-nav__link> <span class=md-ellipsis> Notes </span> </a> </li> <li class=md-nav__item> <a href=#examples class=md-nav__link> <span class=md-ellipsis> Examples </span> </a> </li> <li class=md-nav__item> <a href=#see-also class=md-nav__link> <span class=md-ellipsis> See also </span> </a> </li> <li class=md-nav__item> <a href=#version-history class=md-nav__link> <span class=md-ellipsis> Version history </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../operator_value_t/ class=md-nav__link> <span class=md-ellipsis> operator value_t </span> </a> </li> <li class=md-nav__item> <a href=../operator%5B%5D/ class=md-nav__link> <span class=md-ellipsis> operator[] </span> </a> </li> <li class=md-nav__item> <a href=../operator%3D/ class=md-nav__link> <span class=md-ellipsis> operator= </span> </a> </li> <li class=md-nav__item> <a href=../operator%2B%3D/ class=md-nav__link> <span class=md-ellipsis> operator+= </span> </a> </li> <li class=md-nav__item> <a href=../operator_eq/ class=md-nav__link> <span class=md-ellipsis> operator== </span> </a> </li> <li class=md-nav__item> <a href=../operator_ne/ class=md-nav__link> <span class=md-ellipsis> operator!= </span> </a> </li> <li class=md-nav__item> <a href=../operator_lt/ class=md-nav__link> <span class=md-ellipsis> operator< </span> </a> </li> <li class=md-nav__item> <a href=../operator_gt/ class=md-nav__link> <span class=md-ellipsis> operator> </span> </a> </li> <li class=md-nav__item> <a href=../operator_le/ class=md-nav__link> <span class=md-ellipsis> operator<= </span> </a> </li> <li class=md-nav__item> <a href=../operator_ge/ class=md-nav__link> <span class=md-ellipsis> operator>= </span> </a> </li> <li class=md-nav__item> <a href=../operator_spaceship/ class=md-nav__link> <span class=md-ellipsis> operator<=> </span> </a> </li> <li class=md-nav__item> <a href=../out_of_range/ class=md-nav__link> <span class=md-ellipsis> out_of_range </span> </a> </li> <li class=md-nav__item> <a href=../other_error/ class=md-nav__link> <span class=md-ellipsis> other_error </span> </a> </li> <li class=md-nav__item> <a href=../parse/ class=md-nav__link> <span class=md-ellipsis> parse </span> </a> </li> <li class=md-nav__item> <a href=../parse_error/ class=md-nav__link> <span class=md-ellipsis> parse_error </span> </a> </li> <li class=md-nav__item> <a href=../parse_event_t/ class=md-nav__link> <span class=md-ellipsis> parse_event_t </span> </a> </li> <li class=md-nav__item> <a href=../parser_callback_t/ class=md-nav__link> <span class=md-ellipsis> parser_callback_t </span> </a> </li> <li class=md-nav__item> <a href=../patch/ class=md-nav__link> <span class=md-ellipsis> patch </span> </a> </li> <li class=md-nav__item> <a href=../patch_inplace/ class=md-nav__link> <span class=md-ellipsis> patch_inplace </span> </a> </li> <li class=md-nav__item> <a href=../push_back/ class=md-nav__link> <span class=md-ellipsis> push_back </span> </a> </li> <li class=md-nav__item> <a href=../rbegin/ class=md-nav__link> <span class=md-ellipsis> rbegin </span> </a> </li> <li class=md-nav__item> <a href=../rend/ class=md-nav__link> <span class=md-ellipsis> rend </span> </a> </li> <li class=md-nav__item> <a href=../sax_parse/ class=md-nav__link> <span class=md-ellipsis> sax_parse </span> </a> </li> <li class=md-nav__item> <a href=../size/ class=md-nav__link> <span class=md-ellipsis> size </span> </a> </li> <li class=md-nav__item> <a href=../start_pos/ class=md-nav__link> <span class=md-ellipsis> start_pos </span> </a> </li> <li class=md-nav__item> <a href=../string_t/ class=md-nav__link> <span class=md-ellipsis> string_t </span> </a> </li> <li class=md-nav__item> <a href=../swap/ class=md-nav__link> <span class=md-ellipsis> swap </span> </a> </li> <li class=md-nav__item> <a href=../std_swap/ class=md-nav__link> <span class=md-ellipsis> std::swap&lt;basic_json&gt; </span> </a> </li> <li class=md-nav__item> <a href=../to_bjdata/ class=md-nav__link> <span class=md-ellipsis> to_bjdata </span> </a> </li> <li class=md-nav__item> <a href=../to_bson/ class=md-nav__link> <span class=md-ellipsis> to_bson </span> </a> </li> <li class=md-nav__item> <a href=../to_cbor/ class=md-nav__link> <span class=md-ellipsis> to_cbor </span> </a> </li> <li class=md-nav__item> <a href=../to_msgpack/ class=md-nav__link> <span class=md-ellipsis> to_msgpack </span> </a> </li> <li class=md-nav__item> <a href=../to_string/ class=md-nav__link> <span class=md-ellipsis> to_string </span> </a> </li> <li class=md-nav__item> <a href=../to_ubjson/ class=md-nav__link> <span class=md-ellipsis> to_ubjson </span> </a> </li> <li class=md-nav__item> <a href=../type/ class=md-nav__link> <span class=md-ellipsis> type </span> </a> </li> <li class=md-nav__item> <a href=../type_error/ class=md-nav__link> <span class=md-ellipsis> type_error </span> </a> </li> <li class=md-nav__item> <a href=../type_name/ class=md-nav__link> <span class=md-ellipsis> type_name </span> </a> </li> <li class=md-nav__item> <a href=../unflatten/ class=md-nav__link> <span class=md-ellipsis> unflatten </span> </a> </li> <li class=md-nav__item> <a href=../update/ class=md-nav__link> <span class=md-ellipsis> update </span> </a> </li> <li class=md-nav__item> <a href=../value/ class=md-nav__link> <span class=md-ellipsis> value </span> </a> </li> <li class=md-nav__item> <a href=../value_t/ class=md-nav__link> <span class=md-ellipsis> value_t </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_2> <div class="md-nav__link md-nav__container"> <a href=../../byte_container_with_subtype/ class="md-nav__link "> <span class=md-ellipsis> byte_container_with_subtype </span> </a> <label class="md-nav__link " for=__nav_4_2 id=__nav_4_2_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_2_label aria-expanded=false> <label class=md-nav__title for=__nav_4_2> <span class="md-nav__icon md-icon"></span> byte_container_with_subtype </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../byte_container_with_subtype/byte_container_with_subtype/ class=md-nav__link> <span class=md-ellipsis> (constructor) </span> </a> </li> <li class=md-nav__item> <a href=../../byte_container_with_subtype/clear_subtype/ class=md-nav__link> <span class=md-ellipsis> clear_subtype </span> </a> </li> <li class=md-nav__item> <a href=../../byte_container_with_subtype/has_subtype/ class=md-nav__link> <span class=md-ellipsis> has_subtype </span> </a> </li> <li class=md-nav__item> <a href=../../byte_container_with_subtype/set_subtype/ class=md-nav__link> <span class=md-ellipsis> set_subtype </span> </a> </li> <li class=md-nav__item> <a href=../../byte_container_with_subtype/subtype/ class=md-nav__link> <span class=md-ellipsis> subtype </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_3> <div class="md-nav__link md-nav__container"> <a href=../../adl_serializer/ class="md-nav__link "> <span class=md-ellipsis> adl_serializer </span> </a> <label class="md-nav__link " for=__nav_4_3 id=__nav_4_3_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_3_label aria-expanded=false> <label class=md-nav__title for=__nav_4_3> <span class="md-nav__icon md-icon"></span> adl_serializer </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../adl_serializer/from_json/ class=md-nav__link> <span class=md-ellipsis> from_json </span> </a> </li> <li class=md-nav__item> <a href=../../adl_serializer/to_json/ class=md-nav__link> <span class=md-ellipsis> to_json </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../json/ class=md-nav__link> <span class=md-ellipsis> json </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_5> <div class="md-nav__link md-nav__container"> <a href=../../json_pointer/ class="md-nav__link "> <span class=md-ellipsis> json_pointer </span> </a> <label class="md-nav__link " for=__nav_4_5 id=__nav_4_5_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_5_label aria-expanded=false> <label class=md-nav__title for=__nav_4_5> <span class="md-nav__icon md-icon"></span> json_pointer </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../json_pointer/json_pointer/ class=md-nav__link> <span class=md-ellipsis> (Constructor) </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/back/ class=md-nav__link> <span class=md-ellipsis> back </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/empty/ class=md-nav__link> <span class=md-ellipsis> empty </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/front/ class=md-nav__link> <span class=md-ellipsis> front </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_string_t/ class=md-nav__link> <span class=md-ellipsis> operator string_t </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_eq/ class=md-nav__link> <span class=md-ellipsis> operator== </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_ne/ class=md-nav__link> <span class=md-ellipsis> operator!= </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_slash/ class=md-nav__link> <span class=md-ellipsis> operator/ </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_slasheq/ class=md-nav__link> <span class=md-ellipsis> operator/= </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/parent_pointer/ class=md-nav__link> <span class=md-ellipsis> parent_pointer </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/pop_back/ class=md-nav__link> <span class=md-ellipsis> pop_back </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/pop_front/ class=md-nav__link> <span class=md-ellipsis> pop_front </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/push_back/ class=md-nav__link> <span class=md-ellipsis> push_back </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/push_front/ class=md-nav__link> <span class=md-ellipsis> push_front </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/string_t/ class=md-nav__link> <span class=md-ellipsis> string_t </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/to_string/ class=md-nav__link> <span class=md-ellipsis> to_string </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_6> <div class="md-nav__link md-nav__container"> <a href=../../json_sax/ class="md-nav__link "> <span class=md-ellipsis> json_sax </span> </a> <label class="md-nav__link " for=__nav_4_6 id=__nav_4_6_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_6_label aria-expanded=false> <label class=md-nav__title for=__nav_4_6> <span class="md-nav__icon md-icon"></span> json_sax </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../json_sax/binary/ class=md-nav__link> <span class=md-ellipsis> binary </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/boolean/ class=md-nav__link> <span class=md-ellipsis> boolean </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/end_array/ class=md-nav__link> <span class=md-ellipsis> end_array </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/end_object/ class=md-nav__link> <span class=md-ellipsis> end_object </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/key/ class=md-nav__link> <span class=md-ellipsis> key </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/null/ class=md-nav__link> <span class=md-ellipsis> null </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/number_float/ class=md-nav__link> <span class=md-ellipsis> number_float </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/number_integer/ class=md-nav__link> <span class=md-ellipsis> number_integer </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/number_unsigned/ class=md-nav__link> <span class=md-ellipsis> number_unsigned </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/parse_error/ class=md-nav__link> <span class=md-ellipsis> parse_error </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/start_array/ class=md-nav__link> <span class=md-ellipsis> start_array </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/start_object/ class=md-nav__link> <span class=md-ellipsis> start_object </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/string/ class=md-nav__link> <span class=md-ellipsis> string </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../operator_ltlt/ class=md-nav__link> <span class=md-ellipsis> operator<<(basic_json), operator<<(json_pointer) </span> </a> </li> <li class=md-nav__item> <a href=../../operator_gtgt/ class=md-nav__link> <span class=md-ellipsis> operator>>(basic_json) </span> </a> </li> <li class=md-nav__item> <a href=../../operator_literal_json/ class=md-nav__link> <span class=md-ellipsis> operator""_json </span> </a> </li> <li class=md-nav__item> <a href=../../operator_literal_json_pointer/ class=md-nav__link> <span class=md-ellipsis> operator""_json_pointer </span> </a> </li> <li class=md-nav__item> <a href=../../ordered_json/ class=md-nav__link> <span class=md-ellipsis> ordered_json </span> </a> </li> <li class=md-nav__item> <a href=../../ordered_map/ class=md-nav__link> <span class=md-ellipsis> ordered_map </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_13> <div class="md-nav__link md-nav__container"> <a href=../../macros/ class="md-nav__link "> <span class=md-ellipsis> macros </span> </a> <label class="md-nav__link " for=__nav_4_13 id=__nav_4_13_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_13_label aria-expanded=false> <label class=md-nav__title for=__nav_4_13> <span class="md-nav__icon md-icon"></span> macros </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../macros/json_assert/ class=md-nav__link> <span class=md-ellipsis> JSON_ASSERT </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_brace_init_copy_semantics/ class=md-nav__link> <span class=md-ellipsis> JSON_BRACE_INIT_COPY_SEMANTICS </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_throw_user/ class=md-nav__link> <span class=md-ellipsis> JSON_CATCH_USER, JSON_THROW_USER, JSON_TRY_USER </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_diagnostics/ class=md-nav__link> <span class=md-ellipsis> JSON_DIAGNOSTICS </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_diagnostic_positions/ class=md-nav__link> <span class=md-ellipsis> JSON_DIAGNOSTIC_POSITIONS </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_disable_enum_serialization/ class=md-nav__link> <span class=md-ellipsis> JSON_DISABLE_ENUM_SERIALIZATION </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_has_cpp_11/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_CPP_11, JSON_HAS_CPP_14, JSON_HAS_CPP_17, JSON_HAS_CPP_20 </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_has_filesystem/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_EXPERIMENTAL_FILESYSTEM, JSON_HAS_FILESYSTEM </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_has_ranges/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_RANGES </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_has_static_rtti/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_STATIC_RTTI </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_has_three_way_comparison/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_THREE_WAY_COMPARISON </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_noexception/ class=md-nav__link> <span class=md-ellipsis> JSON_NOEXCEPTION </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_no_io/ class=md-nav__link> <span class=md-ellipsis> JSON_NO_IO </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_skip_library_version_check/ class=md-nav__link> <span class=md-ellipsis> JSON_SKIP_LIBRARY_VERSION_CHECK </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_skip_unsupported_compiler_check/ class=md-nav__link> <span class=md-ellipsis> JSON_SKIP_UNSUPPORTED_COMPILER_CHECK </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_use_global_udls/ class=md-nav__link> <span class=md-ellipsis> JSON_USE_GLOBAL_UDLS </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_use_implicit_conversions/ class=md-nav__link> <span class=md-ellipsis> JSON_USE_IMPLICIT_CONVERSIONS </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_use_legacy_discarded_value_comparison/ class=md-nav__link> <span class=md-ellipsis> JSON_USE_LEGACY_DISCARDED_VALUE_COMPARISON </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_define_derived_type/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_ONLY_SERIALIZE, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_define_type_intrusive/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_TYPE_INTRUSIVE, NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_TYPE_INTRUSIVE_ONLY_SERIALIZE </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_define_type_non_intrusive/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_define_type_with_names/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_TYPE_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_namespace/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_NAMESPACE </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_namespace_begin/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_NAMESPACE_BEGIN, NLOHMANN_JSON_NAMESPACE_END </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_namespace_no_version/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_NAMESPACE_NO_VERSION </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_serialize_enum/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_SERIALIZE_ENUM </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_serialize_enum_strict/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_SERIALIZE_ENUM_STRICT </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_version_major/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_VERSION_MAJOR, NLOHMANN_JSON_VERSION_MINOR, NLOHMANN_JSON_VERSION_PATCH </span> </a> </li> </ul> </nav> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_5> <div class="md-nav__link md-nav__container"> <a href=../../../community/ class="md-nav__link "> <span class=md-ellipsis> Community </span> </a> <label class="md-nav__link " for=__nav_5 id=__nav_5_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_5_label aria-expanded=false> <label class=md-nav__title for=__nav_5> <span class="md-nav__icon md-icon"></span> Community </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../community/code_of_conduct/ class=md-nav__link> <span class=md-ellipsis> Code of Conduct </span> </a> </li> <li class=md-nav__item> <a href=../../../community/contribution_guidelines/ class=md-nav__link> <span class=md-ellipsis> Contribution Guidelines </span> </a> </li> <li class=md-nav__item> <a href=../../../community/quality_assurance/ class=md-nav__link> <span class=md-ellipsis> Quality assurance </span> </a> </li> <li class=md-nav__item> <a href=../../../community/governance/ class=md-nav__link> <span class=md-ellipsis> Governance </span> </a> </li> <li class=md-nav__item> <a href=../../../community/security_policy/ class=md-nav__link> <span class=md-ellipsis> Security Policy </span> </a> </li> </ul> </nav> </li> </ul> </nav> </div> </div> </div> <div class="md-sidebar md-sidebar--secondary" data-md-component=sidebar data-md-type=toc> <div class=md-sidebar__scrollwrap> <div class=md-sidebar__inner> <nav class="md-nav md-nav--secondary" aria-label="Table of contents"> <label class=md-nav__title for=__toc> <span class="md-nav__icon md-icon"></span> Table of contents </label> <ul class=md-nav__list data-md-component=toc data-md-scrollfix> <li class=md-nav__item> <a href=#template-parameters class=md-nav__link> <span class=md-ellipsis> Template parameters </span> </a> </li> <li class=md-nav__item> <a href=#return-value class=md-nav__link> <span class=md-ellipsis> Return value </span> </a> </li> <li class=md-nav__item> <a href=#exceptions class=md-nav__link> <span class=md-ellipsis> Exceptions </span> </a> </li> <li class=md-nav__item> <a href=#complexity class=md-nav__link> <span class=md-ellipsis> Complexity </span> </a> </li> <li class=md-nav__item> <a href=#notes class=md-nav__link> <span class=md-ellipsis> Notes </span> </a> </li> <li class=md-nav__item> <a href=#examples class=md-nav__link> <span class=md-ellipsis> Examples </span> </a> </li> <li class=md-nav__item> <a href=#see-also class=md-nav__link> <span class=md-ellipsis> See also </span> </a> </li> <li class=md-nav__item> <a href=#version-history class=md-nav__link> <span class=md-ellipsis> Version history </span> </a> </li> </ul> </nav> </div> </div> </div> <div class=md-content data-md-component=content> <article class="md-content__inner md-typeset"> <a href="https://github.com/nlohmann/json/edit/develop/docs/mkdocs/docs/api/basic_json/operator_ValueType.md" title="Edit this page" class="md-content__button md-icon" rel="edit"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M10 20H6V4h7v5h5v3.1l2-2V8l-6-6H6c-1.1 0-2 .9-2 2v16c0 1.1.9 2 2 2h4zm10.2-7c.1 0 .3.1.4.2l1.3 1.3c.2.2.2.6 0 .8l-1 1-2.1-2.1 1-1c.1-.1.2-.2.4-.2m0 3.9L14.1 23H12v-2.1l6.1-6.1z"/></svg> </a> <a href="https://github.com/nlohmann/json/raw/develop/docs/mkdocs/docs/api/basic_json/operator_ValueType.md" title="View source of this page" class="md-content__button md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M17 18c.56 0 1 .44 1 1s-.44 1-1 1-1-.44-1-1 .44-1 1-1m0-3c-2.73 0-5.06 1.66-6 4 .94 2.34 3.27 4 6 4s5.06-1.66 6-4c-.94-2.34-3.27-4-6-4m0 6.5a2.5 2.5 0 0 1-2.5-2.5 2.5 2.5 0 0 1 2.5-2.5 2.5 2.5 0 0 1 2.5 2.5 2.5 2.5 0 0 1-2.5 2.5M9.27 20H6V4h7v5h5v4.07c.7.08 1.36.25 2 .49V8l-6-6H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h4.5a8.2 8.2 0 0 1-1.23-2"/></svg> </a> <h1 id=nlohmannbasic_jsonoperator-valuetype><small>nlohmann::basic_json::</small>operator ValueType<a class=headerlink href=#nlohmannbasic_jsonoperator-valuetype title="Permanent link">&para;</a></h1> <div class=highlight><pre><span></span><code><span class=k>template</span><span class=o>&lt;</span><span class=k>typename</span><span class=w> </span><span class=nc>ValueType</span><span class=o>&gt;</span>
 <span class=n>JSON_EXPLICIT</span><span class=w> </span><span class=k>operator</span><span class=w> </span><span class=n>ValueType</span><span class=p>()</span><span class=w> </span><span class=k>const</span><span class=p>;</span>
 </code></pre></div> <p>Implicit type conversion between the <abbr title="JavaScript Object Notation">JSON</abbr> value and a compatible value. The call is realized by calling <a href=../get/ ><code>get()</code></a>. See <a href=#notes>Notes</a> for the meaning of <code>JSON_EXPLICIT</code>.</p> <h2 id=template-parameters>Template parameters<a class=headerlink href=#template-parameters title="Permanent link">&para;</a></h2> <dl> <dt><code>ValueType</code></dt> <dd>the value type to return</dd> </dl> <h2 id=return-value>Return value<a class=headerlink href=#return-value title="Permanent link">&para;</a></h2> <p>copy of the <abbr title="JavaScript Object Notation">JSON</abbr> value, converted to <code>ValueType</code></p> <h2 id=exceptions>Exceptions<a class=headerlink href=#exceptions title="Permanent link">&para;</a></h2> <p>Depends on what <code>json_serializer&lt;ValueType&gt;</code> <code>from_json()</code> method throws</p> <h2 id=complexity>Complexity<a class=headerlink href=#complexity title="Permanent link">&para;</a></h2> <p>Linear in the size of the <abbr title="JavaScript Object Notation">JSON</abbr> value.</p> <h2 id=notes>Notes<a class=headerlink href=#notes title="Permanent link">&para;</a></h2> <div class="admonition note"> <p class=admonition-title>Definition of <code>JSON_EXPLICIT</code></p> <p>By default <code>JSON_EXPLICIT</code> is defined to the empty string, so the signature is:</p> <div class=highlight><pre><span></span><code><span class=k>template</span><span class=o>&lt;</span><span class=k>typename</span><span class=w> </span><span class=nc>ValueType</span><span class=o>&gt;</span>
 <span class=k>operator</span><span class=w> </span><span class=n>ValueType</span><span class=p>()</span><span class=w> </span><span class=k>const</span><span class=p>;</span>
@@ -76,4 +76,4 @@
 <span class=err>boolea</span><span class=kc>n</span><span class=p>:</span><span class=w> </span><span class=kc>true</span>
 <span class=err>array</span><span class=p>:</span><span class=w> </span><span class=p>[</span><span class=mi>1</span><span class=p>,</span><span class=mi>2</span><span class=p>,</span><span class=mi>3</span><span class=p>,</span><span class=mi>4</span><span class=p>,</span><span class=mi>5</span><span class=p>]</span>
 <span class=p>[</span><span class=err>jso</span><span class=kc>n</span><span class=err>.excep</span><span class=kc>t</span><span class=err>io</span><span class=kc>n</span><span class=err>.</span><span class=kc>t</span><span class=err>ype_error.</span><span class=mi>302</span><span class=p>]</span><span class=w> </span><span class=kc>t</span><span class=err>ype</span><span class=w> </span><span class=err>mus</span><span class=kc>t</span><span class=w> </span><span class=err>be</span><span class=w> </span><span class=err>boolea</span><span class=kc>n</span><span class=p>,</span><span class=w> </span><span class=err>bu</span><span class=kc>t</span><span class=w> </span><span class=err>is</span><span class=w> </span><span class=err>s</span><span class=kc>tr</span><span class=err>i</span><span class=kc>n</span><span class=err>g</span>
-</code></pre></div> </details> <h2 id=version-history>Version history<a class=headerlink href=#version-history title="Permanent link">&para;</a></h2> <ul> <li>Since version 1.0.0.</li> <li>Macros <code>JSON_EXPLICIT</code>/<a href=../../macros/json_use_implicit_conversions/ ><code>JSON_USE_IMPLICIT_CONVERSIONS</code></a> added in version 3.9.0.</li> </ul> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 23, 2026 11:16:18 UTC">June 23, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
+</code></pre></div> </details> <h2 id=see-also>See also<a class=headerlink href=#see-also title="Permanent link">&para;</a></h2> <ul> <li><a href=../get/ >get</a> get a value (explicit conversion)</li> </ul> <h2 id=version-history>Version history<a class=headerlink href=#version-history title="Permanent link">&para;</a></h2> <ul> <li>Since version 1.0.0.</li> <li>Macros <code>JSON_EXPLICIT</code>/<a href=../../macros/json_use_implicit_conversions/ ><code>JSON_USE_IMPLICIT_CONVERSIONS</code></a> added in version 3.9.0.</li> </ul> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 29, 2026 20:15:18 UTC">June 29, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
diff --git a/api/basic_json/operator_eq/index.html b/api/basic_json/operator_eq/index.html
index 59be67d..047b9de 100644
--- a/api/basic_json/operator_eq/index.html
+++ b/api/basic_json/operator_eq/index.html
@@ -1,4 +1,4 @@
-<!doctype html><html lang=en class=no-js> <head><meta charset=utf-8><meta name=viewport content="width=device-width,initial-scale=1"><meta name=author content="Niels Lohmann"><link href="https://json.nlohmann.me/api/basic_json/operator_eq/" rel="canonical"><link href=../operator%2B%3D/ rel=prev><link href=../operator_ne/ rel=next><link rel=icon href=../../../assets/images/favicon.png><meta name=generator content="mkdocs-1.6.1, mkdocs-material-9.7.6"><title>operator== - JSON for Modern C++</title><link rel=stylesheet href=../../../assets/stylesheets/main.484c7ddc.min.css><link rel=stylesheet href=../../../assets/stylesheets/palette.ab4e12ef.min.css><link rel="stylesheet" href="../../../assets/external/fonts.googleapis.com/css.61a430c9.css"><style>:root{--md-text-font:"Roboto";--md-code-font:"JetBrains Mono"}</style><link rel=stylesheet href=../../../css/custom.css><script>__md_scope=new URL("../../..",location),__md_hash=e=>[...e].reduce(((e,_)=>(e<<5)-e+_.charCodeAt(0)),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script></head> <body dir=ltr data-md-color-scheme=default data-md-color-primary=indigo data-md-color-accent=indigo> <input class=md-toggle data-md-toggle=drawer type=checkbox id=__drawer autocomplete=off> <input class=md-toggle data-md-toggle=search type=checkbox id=__search autocomplete=off> <label class=md-overlay for=__drawer></label> <div data-md-component=skip> <a href=#nlohmannbasic_jsonoperator class=md-skip> Skip to content </a> </div> <div data-md-component=announce> </div> <header class=md-header data-md-component=header> <nav class="md-header__inner md-grid" aria-label=Header> <a href=../../.. title="JSON for Modern C++" class="md-header__button md-logo" aria-label="JSON for Modern C++" data-md-component=logo> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54"/></svg> </a> <label class="md-header__button md-icon" for=__drawer> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M3 6h18v2H3zm0 5h18v2H3zm0 5h18v2H3z"/></svg> </label> <div class=md-header__title data-md-component=header-title> <div class=md-header__ellipsis> <div class=md-header__topic> <span class=md-ellipsis> JSON for Modern C++ </span> </div> <div class=md-header__topic data-md-component=header-topic> <span class=md-ellipsis> operator== </span> </div> </div> </div> <form class=md-header__option data-md-component=palette> <input class=md-option data-md-color-media="(prefers-color-scheme: light)" data-md-color-scheme=default data-md-color-primary=indigo data-md-color-accent=indigo aria-label="Switch to dark mode" type=radio name=__palette id=__palette_0> <label class="md-header__button md-icon" title="Switch to dark mode" for=__palette_1 hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a4 4 0 0 0-4 4 4 4 0 0 0 4 4 4 4 0 0 0 4-4 4 4 0 0 0-4-4m0 10a6 6 0 0 1-6-6 6 6 0 0 1 6-6 6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12z"/></svg> </label> <input class=md-option data-md-color-media="(prefers-color-scheme: dark)" data-md-color-scheme=slate data-md-color-primary=indigo data-md-color-accent=indigo aria-label="Switch to light mode" type=radio name=__palette id=__palette_1> <label class="md-header__button md-icon" title="Switch to light mode" for=__palette_0 hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 18c-.89 0-1.74-.2-2.5-.55C11.56 16.5 13 14.42 13 12s-1.44-4.5-3.5-5.45C10.26 6.2 11.11 6 12 6a6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12z"/></svg> </label> </form> <script>var palette=__md_get("__palette");if(palette&&palette.color){if("(prefers-color-scheme)"===palette.color.media){var media=matchMedia("(prefers-color-scheme: light)"),input=document.querySelector(media.matches?"[data-md-color-media='(prefers-color-scheme: light)']":"[data-md-color-media='(prefers-color-scheme: dark)']");palette.color.media=input.getAttribute("data-md-color-media"),palette.color.scheme=input.getAttribute("data-md-color-scheme"),palette.color.primary=input.getAttribute("data-md-color-primary"),palette.color.accent=input.getAttribute("data-md-color-accent")}for(var[key,value]of Object.entries(palette.color))document.body.setAttribute("data-md-color-"+key,value)}</script> <label class="md-header__button md-icon" for=__search> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg> </label> <div class=md-search data-md-component=search role=dialog> <label class=md-search__overlay for=__search></label> <div class=md-search__inner role=search> <form class=md-search__form name=search> <input type=text class=md-search__input name=query aria-label=Search placeholder=Search autocapitalize=off autocorrect=off autocomplete=off spellcheck=false data-md-component=search-query required> <label class="md-search__icon md-icon" for=__search> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11z"/></svg> </label> <nav class=md-search__options aria-label=Search> <button type=reset class="md-search__icon md-icon" title=Clear aria-label=Clear tabindex=-1> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z"/></svg> </button> </nav> </form> <div class=md-search__output> <div class=md-search__scrollwrap tabindex=0 data-md-scrollfix> <div class=md-search-result data-md-component=search-result> <div class=md-search-result__meta> Initializing search </div> <ol class=md-search-result__list role=presentation></ol> </div> </div> </div> </div> </div> <div class=md-header__source> <a href="https://github.com/nlohmann/json" title="Go to repository" class="md-source" data-md-component="source"> <div class="md-source__icon md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </div> <div class=md-source__repository> nlohmann/json </div> </a> </div> </nav> </header> <div class=md-container data-md-component=container> <nav class=md-tabs aria-label=Tabs data-md-component=tabs> <div class=md-grid> <ul class=md-tabs__list> <li class=md-tabs__item> <a href=../../.. class=md-tabs__link> Home </a> </li> <li class=md-tabs__item> <a href=../../../features/arbitrary_types/ class=md-tabs__link> Features </a> </li> <li class=md-tabs__item> <a href=../../../integration/ class=md-tabs__link> Integration </a> </li> <li class="md-tabs__item md-tabs__item--active"> <a href=../ class=md-tabs__link> API Documentation </a> </li> <li class=md-tabs__item> <a href=../../../community/ class=md-tabs__link> Community </a> </li> </ul> </div> </nav> <main class=md-main data-md-component=main> <div class="md-main__inner md-grid"> <div class="md-sidebar md-sidebar--primary" data-md-component=sidebar data-md-type=navigation> <div class=md-sidebar__scrollwrap> <div class=md-sidebar__inner> <nav class="md-nav md-nav--primary md-nav--lifted" aria-label=Navigation data-md-level=0> <label class=md-nav__title for=__drawer> <a href=../../.. title="JSON for Modern C++" class="md-nav__button md-logo" aria-label="JSON for Modern C++" data-md-component=logo> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54"/></svg> </a> JSON for Modern C++ </label> <div class=md-nav__source> <a href="https://github.com/nlohmann/json" title="Go to repository" class="md-source" data-md-component="source"> <div class="md-source__icon md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </div> <div class=md-source__repository> nlohmann/json </div> </a> </div> <ul class=md-nav__list data-md-scrollfix> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_1> <div class="md-nav__link md-nav__container"> <a href=../../.. class="md-nav__link "> <span class=md-ellipsis> Home </span> </a> <label class="md-nav__link " for=__nav_1 id=__nav_1_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_1_label aria-expanded=false> <label class=md-nav__title for=__nav_1> <span class="md-nav__icon md-icon"></span> Home </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../home/license/ class=md-nav__link> <span class=md-ellipsis> License </span> </a> </li> <li class=md-nav__item> <a href=../../../home/faq/ class=md-nav__link> <span class=md-ellipsis> FAQ </span> </a> </li> <li class=md-nav__item> <a href=../../../home/exceptions/ class=md-nav__link> <span class=md-ellipsis> Exceptions </span> </a> </li> <li class=md-nav__item> <a href=../../../home/releases/ class=md-nav__link> <span class=md-ellipsis> Releases </span> </a> </li> <li class=md-nav__item> <a href=../../../home/design_goals/ class=md-nav__link> <span class=md-ellipsis> Design goals </span> </a> </li> <li class=md-nav__item> <a href=../../../home/architecture/ class=md-nav__link> <span class=md-ellipsis> Architecture </span> </a> </li> <li class=md-nav__item> <a href=../../../home/customers/ class=md-nav__link> <span class=md-ellipsis> Customers </span> </a> </li> <li class=md-nav__item> <a href=../../../home/sponsors/ class=md-nav__link> <span class=md-ellipsis> Sponsors </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2> <label class=md-nav__link for=__nav_2 id=__nav_2_label tabindex=0> <span class=md-ellipsis> Features </span> <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_2_label aria-expanded=false> <label class=md-nav__title for=__nav_2> <span class="md-nav__icon md-icon"></span> Features </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/arbitrary_types/ class=md-nav__link> <span class=md-ellipsis> Arbitrary Type Conversions </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_2> <div class="md-nav__link md-nav__container"> <a href=../../../features/binary_formats/ class="md-nav__link "> <span class=md-ellipsis> Binary Formats </span> </a> <label class="md-nav__link " for=__nav_2_2 id=__nav_2_2_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_2_label aria-expanded=false> <label class=md-nav__title for=__nav_2_2> <span class="md-nav__icon md-icon"></span> Binary Formats </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/binary_formats/bjdata/ class=md-nav__link> <span class=md-ellipsis> BJData </span> </a> </li> <li class=md-nav__item> <a href=../../../features/binary_formats/bson/ class=md-nav__link> <span class=md-ellipsis> BSON </span> </a> </li> <li class=md-nav__item> <a href=../../../features/binary_formats/cbor/ class=md-nav__link> <span class=md-ellipsis> CBOR </span> </a> </li> <li class=md-nav__item> <a href=../../../features/binary_formats/messagepack/ class=md-nav__link> <span class=md-ellipsis> MessagePack </span> </a> </li> <li class=md-nav__item> <a href=../../../features/binary_formats/ubjson/ class=md-nav__link> <span class=md-ellipsis> UBJSON </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../../features/binary_values/ class=md-nav__link> <span class=md-ellipsis> Binary Values </span> </a> </li> <li class=md-nav__item> <a href=../../../features/comments/ class=md-nav__link> <span class=md-ellipsis> Comments </span> </a> </li> <li class=md-nav__item> <a href=../../../features/trailing_commas/ class=md-nav__link> <span class=md-ellipsis> Trailing Commas </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_6> <div class="md-nav__link md-nav__container"> <a href=../../../features/element_access/ class="md-nav__link "> <span class=md-ellipsis> Element Access </span> </a> <label class="md-nav__link " for=__nav_2_6 id=__nav_2_6_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_6_label aria-expanded=false> <label class=md-nav__title for=__nav_2_6> <span class="md-nav__icon md-icon"></span> Element Access </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/element_access/unchecked_access/ class=md-nav__link> <span class=md-ellipsis> Unchecked access: operator[] </span> </a> </li> <li class=md-nav__item> <a href=../../../features/element_access/checked_access/ class=md-nav__link> <span class=md-ellipsis> Checked access: at </span> </a> </li> <li class=md-nav__item> <a href=../../../features/element_access/default_value/ class=md-nav__link> <span class=md-ellipsis> Access with default value: value </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../../features/iterators/ class=md-nav__link> <span class=md-ellipsis> Iterators </span> </a> </li> <li class=md-nav__item> <a href=../../../features/json_pointer/ class=md-nav__link> <span class=md-ellipsis> JSON Pointer </span> </a> </li> <li class=md-nav__item> <a href=../../../features/json_patch/ class=md-nav__link> <span class=md-ellipsis> JSON Patch and Diff </span> </a> </li> <li class=md-nav__item> <a href=../../../features/merge_patch/ class=md-nav__link> <span class=md-ellipsis> JSON Merge Patch </span> </a> </li> <li class=md-nav__item> <a href=../../../features/modules/ class=md-nav__link> <span class=md-ellipsis> Modules </span> </a> </li> <li class=md-nav__item> <a href=../../../features/namespace/ class=md-nav__link> <span class=md-ellipsis> nlohmann Namespace </span> </a> </li> <li class=md-nav__item> <a href=../../../features/object_order/ class=md-nav__link> <span class=md-ellipsis> Object Order </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_14> <div class="md-nav__link md-nav__container"> <a href=../../../features/parsing/ class="md-nav__link "> <span class=md-ellipsis> Parsing </span> </a> <label class="md-nav__link " for=__nav_2_14 id=__nav_2_14_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_14_label aria-expanded=false> <label class=md-nav__title for=__nav_2_14> <span class="md-nav__icon md-icon"></span> Parsing </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/parsing/json_lines/ class=md-nav__link> <span class=md-ellipsis> JSON Lines </span> </a> </li> <li class=md-nav__item> <a href=../../../features/parsing/parse_exceptions/ class=md-nav__link> <span class=md-ellipsis> Parsing and Exceptions </span> </a> </li> <li class=md-nav__item> <a href=../../../features/parsing/parser_callbacks/ class=md-nav__link> <span class=md-ellipsis> Parser Callbacks </span> </a> </li> <li class=md-nav__item> <a href=../../../features/parsing/sax_interface/ class=md-nav__link> <span class=md-ellipsis> SAX Interface </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../../features/assertions/ class=md-nav__link> <span class=md-ellipsis> Runtime Assertions </span> </a> </li> <li class=md-nav__item> <a href=../../../features/enum_conversion/ class=md-nav__link> <span class=md-ellipsis> Specializing enum conversion </span> </a> </li> <li class=md-nav__item> <a href=../../../features/macros/ class=md-nav__link> <span class=md-ellipsis> Supported Macros </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_18> <div class="md-nav__link md-nav__container"> <a href=../../../features/types/ class="md-nav__link "> <span class=md-ellipsis> Types </span> </a> <label class="md-nav__link " for=__nav_2_18 id=__nav_2_18_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_18_label aria-expanded=false> <label class=md-nav__title for=__nav_2_18> <span class="md-nav__icon md-icon"></span> Types </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/types/number_handling/ class=md-nav__link> <span class=md-ellipsis> Number Handling </span> </a> </li> </ul> </nav> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_3> <div class="md-nav__link md-nav__container"> <a href=../../../integration/ class="md-nav__link "> <span class=md-ellipsis> Integration </span> </a> <label class="md-nav__link " for=__nav_3 id=__nav_3_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_3_label aria-expanded=false> <label class=md-nav__title for=__nav_3> <span class="md-nav__icon md-icon"></span> Integration </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../integration/migration_guide/ class=md-nav__link> <span class=md-ellipsis> Migration Guide </span> </a> </li> <li class=md-nav__item> <a href=../../../integration/cmake/ class=md-nav__link> <span class=md-ellipsis> CMake </span> </a> </li> <li class=md-nav__item> <a href=../../../integration/package_managers/ class=md-nav__link> <span class=md-ellipsis> Package Managers </span> </a> </li> <li class=md-nav__item> <a href=../../../integration/pkg-config/ class=md-nav__link> <span class=md-ellipsis> Pkg-config </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--active md-nav__item--section md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4 checked> <label class=md-nav__link for=__nav_4 id=__nav_4_label tabindex> <span class=md-ellipsis> API Documentation </span> <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_4_label aria-expanded=true> <label class=md-nav__title for=__nav_4> <span class="md-nav__icon md-icon"></span> API Documentation </label> <ul class=md-nav__list data-md-scrollfix> <li class="md-nav__item md-nav__item--active md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_1 checked> <div class="md-nav__link md-nav__container"> <a href=../ class="md-nav__link "> <span class=md-ellipsis> basic_json </span> </a> <label class="md-nav__link " for=__nav_4_1 id=__nav_4_1_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_1_label aria-expanded=true> <label class=md-nav__title for=__nav_4_1> <span class="md-nav__icon md-icon"></span> basic_json </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../basic_json/ class=md-nav__link> <span class=md-ellipsis> (Constructor) </span> </a> </li> <li class=md-nav__item> <a href=../~basic_json/ class=md-nav__link> <span class=md-ellipsis> (Destructor) </span> </a> </li> <li class=md-nav__item> <a href=../accept/ class=md-nav__link> <span class=md-ellipsis> accept </span> </a> </li> <li class=md-nav__item> <a href=../array/ class=md-nav__link> <span class=md-ellipsis> array </span> </a> </li> <li class=md-nav__item> <a href=../array_t/ class=md-nav__link> <span class=md-ellipsis> array_t </span> </a> </li> <li class=md-nav__item> <a href=../at/ class=md-nav__link> <span class=md-ellipsis> at </span> </a> </li> <li class=md-nav__item> <a href=../back/ class=md-nav__link> <span class=md-ellipsis> back </span> </a> </li> <li class=md-nav__item> <a href=../begin/ class=md-nav__link> <span class=md-ellipsis> begin </span> </a> </li> <li class=md-nav__item> <a href=../binary/ class=md-nav__link> <span class=md-ellipsis> binary </span> </a> </li> <li class=md-nav__item> <a href=../binary_t/ class=md-nav__link> <span class=md-ellipsis> binary_t </span> </a> </li> <li class=md-nav__item> <a href=../boolean_t/ class=md-nav__link> <span class=md-ellipsis> boolean_t </span> </a> </li> <li class=md-nav__item> <a href=../cbegin/ class=md-nav__link> <span class=md-ellipsis> cbegin </span> </a> </li> <li class=md-nav__item> <a href=../cbor_tag_handler_t/ class=md-nav__link> <span class=md-ellipsis> cbor_tag_handler_t </span> </a> </li> <li class=md-nav__item> <a href=../cend/ class=md-nav__link> <span class=md-ellipsis> cend </span> </a> </li> <li class=md-nav__item> <a href=../clear/ class=md-nav__link> <span class=md-ellipsis> clear </span> </a> </li> <li class=md-nav__item> <a href=../contains/ class=md-nav__link> <span class=md-ellipsis> contains </span> </a> </li> <li class=md-nav__item> <a href=../count/ class=md-nav__link> <span class=md-ellipsis> count </span> </a> </li> <li class=md-nav__item> <a href=../crbegin/ class=md-nav__link> <span class=md-ellipsis> crbegin </span> </a> </li> <li class=md-nav__item> <a href=../crend/ class=md-nav__link> <span class=md-ellipsis> crend </span> </a> </li> <li class=md-nav__item> <a href=../default_object_comparator_t/ class=md-nav__link> <span class=md-ellipsis> default_object_comparator_t </span> </a> </li> <li class=md-nav__item> <a href=../diff/ class=md-nav__link> <span class=md-ellipsis> diff </span> </a> </li> <li class=md-nav__item> <a href=../dump/ class=md-nav__link> <span class=md-ellipsis> dump </span> </a> </li> <li class=md-nav__item> <a href=../emplace/ class=md-nav__link> <span class=md-ellipsis> emplace </span> </a> </li> <li class=md-nav__item> <a href=../emplace_back/ class=md-nav__link> <span class=md-ellipsis> emplace_back </span> </a> </li> <li class=md-nav__item> <a href=../empty/ class=md-nav__link> <span class=md-ellipsis> empty </span> </a> </li> <li class=md-nav__item> <a href=../end/ class=md-nav__link> <span class=md-ellipsis> end </span> </a> </li> <li class=md-nav__item> <a href=../end_pos/ class=md-nav__link> <span class=md-ellipsis> end_pos </span> </a> </li> <li class=md-nav__item> <a href=../erase/ class=md-nav__link> <span class=md-ellipsis> erase </span> </a> </li> <li class=md-nav__item> <a href=../error_handler_t/ class=md-nav__link> <span class=md-ellipsis> error_handler_t </span> </a> </li> <li class=md-nav__item> <a href=../exception/ class=md-nav__link> <span class=md-ellipsis> exception </span> </a> </li> <li class=md-nav__item> <a href=../find/ class=md-nav__link> <span class=md-ellipsis> find </span> </a> </li> <li class=md-nav__item> <a href=../flatten/ class=md-nav__link> <span class=md-ellipsis> flatten </span> </a> </li> <li class=md-nav__item> <a href=../from_bjdata/ class=md-nav__link> <span class=md-ellipsis> from_bjdata </span> </a> </li> <li class=md-nav__item> <a href=../from_bson/ class=md-nav__link> <span class=md-ellipsis> from_bson </span> </a> </li> <li class=md-nav__item> <a href=../from_cbor/ class=md-nav__link> <span class=md-ellipsis> from_cbor </span> </a> </li> <li class=md-nav__item> <a href=../from_msgpack/ class=md-nav__link> <span class=md-ellipsis> from_msgpack </span> </a> </li> <li class=md-nav__item> <a href=../from_ubjson/ class=md-nav__link> <span class=md-ellipsis> from_ubjson </span> </a> </li> <li class=md-nav__item> <a href=../front/ class=md-nav__link> <span class=md-ellipsis> front </span> </a> </li> <li class=md-nav__item> <a href=../get/ class=md-nav__link> <span class=md-ellipsis> get </span> </a> </li> <li class=md-nav__item> <a href=../get_allocator/ class=md-nav__link> <span class=md-ellipsis> get_allocator </span> </a> </li> <li class=md-nav__item> <a href=../get_binary/ class=md-nav__link> <span class=md-ellipsis> get_binary </span> </a> </li> <li class=md-nav__item> <a href=../get_ptr/ class=md-nav__link> <span class=md-ellipsis> get_ptr </span> </a> </li> <li class=md-nav__item> <a href=../get_ref/ class=md-nav__link> <span class=md-ellipsis> get_ref </span> </a> </li> <li class=md-nav__item> <a href=../get_to/ class=md-nav__link> <span class=md-ellipsis> get_to </span> </a> </li> <li class=md-nav__item> <a href=../std_hash/ class=md-nav__link> <span class=md-ellipsis> std::hash&lt;basic_json&gt; </span> </a> </li> <li class=md-nav__item> <a href=../input_format_t/ class=md-nav__link> <span class=md-ellipsis> input_format_t </span> </a> </li> <li class=md-nav__item> <a href=../insert/ class=md-nav__link> <span class=md-ellipsis> insert </span> </a> </li> <li class=md-nav__item> <a href=../invalid_iterator/ class=md-nav__link> <span class=md-ellipsis> invalid_iterator </span> </a> </li> <li class=md-nav__item> <a href=../is_array/ class=md-nav__link> <span class=md-ellipsis> is_array </span> </a> </li> <li class=md-nav__item> <a href=../is_binary/ class=md-nav__link> <span class=md-ellipsis> is_binary </span> </a> </li> <li class=md-nav__item> <a href=../is_boolean/ class=md-nav__link> <span class=md-ellipsis> is_boolean </span> </a> </li> <li class=md-nav__item> <a href=../is_discarded/ class=md-nav__link> <span class=md-ellipsis> is_discarded </span> </a> </li> <li class=md-nav__item> <a href=../is_null/ class=md-nav__link> <span class=md-ellipsis> is_null </span> </a> </li> <li class=md-nav__item> <a href=../is_number/ class=md-nav__link> <span class=md-ellipsis> is_number </span> </a> </li> <li class=md-nav__item> <a href=../is_number_float/ class=md-nav__link> <span class=md-ellipsis> is_number_float </span> </a> </li> <li class=md-nav__item> <a href=../is_number_integer/ class=md-nav__link> <span class=md-ellipsis> is_number_integer </span> </a> </li> <li class=md-nav__item> <a href=../is_number_unsigned/ class=md-nav__link> <span class=md-ellipsis> is_number_unsigned </span> </a> </li> <li class=md-nav__item> <a href=../is_object/ class=md-nav__link> <span class=md-ellipsis> is_object </span> </a> </li> <li class=md-nav__item> <a href=../is_primitive/ class=md-nav__link> <span class=md-ellipsis> is_primitive </span> </a> </li> <li class=md-nav__item> <a href=../is_string/ class=md-nav__link> <span class=md-ellipsis> is_string </span> </a> </li> <li class=md-nav__item> <a href=../is_structured/ class=md-nav__link> <span class=md-ellipsis> is_structured </span> </a> </li> <li class=md-nav__item> <a href=../items/ class=md-nav__link> <span class=md-ellipsis> items </span> </a> </li> <li class=md-nav__item> <a href=../json_base_class_t/ class=md-nav__link> <span class=md-ellipsis> json_base_class_t </span> </a> </li> <li class=md-nav__item> <a href=../json_serializer/ class=md-nav__link> <span class=md-ellipsis> json_serializer </span> </a> </li> <li class=md-nav__item> <a href=../max_size/ class=md-nav__link> <span class=md-ellipsis> max_size </span> </a> </li> <li class=md-nav__item> <a href=../meta/ class=md-nav__link> <span class=md-ellipsis> meta </span> </a> </li> <li class=md-nav__item> <a href=../merge_patch/ class=md-nav__link> <span class=md-ellipsis> merge_patch </span> </a> </li> <li class=md-nav__item> <a href=../number_float_t/ class=md-nav__link> <span class=md-ellipsis> number_float_t </span> </a> </li> <li class=md-nav__item> <a href=../number_integer_t/ class=md-nav__link> <span class=md-ellipsis> number_integer_t </span> </a> </li> <li class=md-nav__item> <a href=../number_unsigned_t/ class=md-nav__link> <span class=md-ellipsis> number_unsigned_t </span> </a> </li> <li class=md-nav__item> <a href=../object/ class=md-nav__link> <span class=md-ellipsis> object </span> </a> </li> <li class=md-nav__item> <a href=../object_comparator_t/ class=md-nav__link> <span class=md-ellipsis> object_comparator_t </span> </a> </li> <li class=md-nav__item> <a href=../object_t/ class=md-nav__link> <span class=md-ellipsis> object_t </span> </a> </li> <li class=md-nav__item> <a href=../operator_ValueType/ class=md-nav__link> <span class=md-ellipsis> operator ValueType </span> </a> </li> <li class=md-nav__item> <a href=../operator_value_t/ class=md-nav__link> <span class=md-ellipsis> operator value_t </span> </a> </li> <li class=md-nav__item> <a href=../operator%5B%5D/ class=md-nav__link> <span class=md-ellipsis> operator[] </span> </a> </li> <li class=md-nav__item> <a href=../operator%3D/ class=md-nav__link> <span class=md-ellipsis> operator= </span> </a> </li> <li class=md-nav__item> <a href=../operator%2B%3D/ class=md-nav__link> <span class=md-ellipsis> operator+= </span> </a> </li> <li class="md-nav__item md-nav__item--active"> <input class="md-nav__toggle md-toggle" type=checkbox id=__toc> <label class="md-nav__link md-nav__link--active" for=__toc> <span class=md-ellipsis> operator== </span> <span class="md-nav__icon md-icon"></span> </label> <a href=./ class="md-nav__link md-nav__link--active"> <span class=md-ellipsis> operator== </span> </a> <nav class="md-nav md-nav--secondary" aria-label="Table of contents"> <label class=md-nav__title for=__toc> <span class="md-nav__icon md-icon"></span> Table of contents </label> <ul class=md-nav__list data-md-component=toc data-md-scrollfix> <li class=md-nav__item> <a href=#template-parameters class=md-nav__link> <span class=md-ellipsis> Template parameters </span> </a> </li> <li class=md-nav__item> <a href=#parameters class=md-nav__link> <span class=md-ellipsis> Parameters </span> </a> </li> <li class=md-nav__item> <a href=#return-value class=md-nav__link> <span class=md-ellipsis> Return value </span> </a> </li> <li class=md-nav__item> <a href=#exception-safety class=md-nav__link> <span class=md-ellipsis> Exception safety </span> </a> </li> <li class=md-nav__item> <a href=#complexity class=md-nav__link> <span class=md-ellipsis> Complexity </span> </a> </li> <li class=md-nav__item> <a href=#notes class=md-nav__link> <span class=md-ellipsis> Notes </span> </a> </li> <li class=md-nav__item> <a href=#examples class=md-nav__link> <span class=md-ellipsis> Examples </span> </a> </li> <li class=md-nav__item> <a href=#version-history class=md-nav__link> <span class=md-ellipsis> Version history </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../operator_ne/ class=md-nav__link> <span class=md-ellipsis> operator!= </span> </a> </li> <li class=md-nav__item> <a href=../operator_lt/ class=md-nav__link> <span class=md-ellipsis> operator< </span> </a> </li> <li class=md-nav__item> <a href=../operator_gt/ class=md-nav__link> <span class=md-ellipsis> operator> </span> </a> </li> <li class=md-nav__item> <a href=../operator_le/ class=md-nav__link> <span class=md-ellipsis> operator<= </span> </a> </li> <li class=md-nav__item> <a href=../operator_ge/ class=md-nav__link> <span class=md-ellipsis> operator>= </span> </a> </li> <li class=md-nav__item> <a href=../operator_spaceship/ class=md-nav__link> <span class=md-ellipsis> operator<=> </span> </a> </li> <li class=md-nav__item> <a href=../out_of_range/ class=md-nav__link> <span class=md-ellipsis> out_of_range </span> </a> </li> <li class=md-nav__item> <a href=../other_error/ class=md-nav__link> <span class=md-ellipsis> other_error </span> </a> </li> <li class=md-nav__item> <a href=../parse/ class=md-nav__link> <span class=md-ellipsis> parse </span> </a> </li> <li class=md-nav__item> <a href=../parse_error/ class=md-nav__link> <span class=md-ellipsis> parse_error </span> </a> </li> <li class=md-nav__item> <a href=../parse_event_t/ class=md-nav__link> <span class=md-ellipsis> parse_event_t </span> </a> </li> <li class=md-nav__item> <a href=../parser_callback_t/ class=md-nav__link> <span class=md-ellipsis> parser_callback_t </span> </a> </li> <li class=md-nav__item> <a href=../patch/ class=md-nav__link> <span class=md-ellipsis> patch </span> </a> </li> <li class=md-nav__item> <a href=../patch_inplace/ class=md-nav__link> <span class=md-ellipsis> patch_inplace </span> </a> </li> <li class=md-nav__item> <a href=../push_back/ class=md-nav__link> <span class=md-ellipsis> push_back </span> </a> </li> <li class=md-nav__item> <a href=../rbegin/ class=md-nav__link> <span class=md-ellipsis> rbegin </span> </a> </li> <li class=md-nav__item> <a href=../rend/ class=md-nav__link> <span class=md-ellipsis> rend </span> </a> </li> <li class=md-nav__item> <a href=../sax_parse/ class=md-nav__link> <span class=md-ellipsis> sax_parse </span> </a> </li> <li class=md-nav__item> <a href=../size/ class=md-nav__link> <span class=md-ellipsis> size </span> </a> </li> <li class=md-nav__item> <a href=../start_pos/ class=md-nav__link> <span class=md-ellipsis> start_pos </span> </a> </li> <li class=md-nav__item> <a href=../string_t/ class=md-nav__link> <span class=md-ellipsis> string_t </span> </a> </li> <li class=md-nav__item> <a href=../swap/ class=md-nav__link> <span class=md-ellipsis> swap </span> </a> </li> <li class=md-nav__item> <a href=../std_swap/ class=md-nav__link> <span class=md-ellipsis> std::swap&lt;basic_json&gt; </span> </a> </li> <li class=md-nav__item> <a href=../to_bjdata/ class=md-nav__link> <span class=md-ellipsis> to_bjdata </span> </a> </li> <li class=md-nav__item> <a href=../to_bson/ class=md-nav__link> <span class=md-ellipsis> to_bson </span> </a> </li> <li class=md-nav__item> <a href=../to_cbor/ class=md-nav__link> <span class=md-ellipsis> to_cbor </span> </a> </li> <li class=md-nav__item> <a href=../to_msgpack/ class=md-nav__link> <span class=md-ellipsis> to_msgpack </span> </a> </li> <li class=md-nav__item> <a href=../to_string/ class=md-nav__link> <span class=md-ellipsis> to_string </span> </a> </li> <li class=md-nav__item> <a href=../to_ubjson/ class=md-nav__link> <span class=md-ellipsis> to_ubjson </span> </a> </li> <li class=md-nav__item> <a href=../type/ class=md-nav__link> <span class=md-ellipsis> type </span> </a> </li> <li class=md-nav__item> <a href=../type_error/ class=md-nav__link> <span class=md-ellipsis> type_error </span> </a> </li> <li class=md-nav__item> <a href=../type_name/ class=md-nav__link> <span class=md-ellipsis> type_name </span> </a> </li> <li class=md-nav__item> <a href=../unflatten/ class=md-nav__link> <span class=md-ellipsis> unflatten </span> </a> </li> <li class=md-nav__item> <a href=../update/ class=md-nav__link> <span class=md-ellipsis> update </span> </a> </li> <li class=md-nav__item> <a href=../value/ class=md-nav__link> <span class=md-ellipsis> value </span> </a> </li> <li class=md-nav__item> <a href=../value_t/ class=md-nav__link> <span class=md-ellipsis> value_t </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_2> <div class="md-nav__link md-nav__container"> <a href=../../byte_container_with_subtype/ class="md-nav__link "> <span class=md-ellipsis> byte_container_with_subtype </span> </a> <label class="md-nav__link " for=__nav_4_2 id=__nav_4_2_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_2_label aria-expanded=false> <label class=md-nav__title for=__nav_4_2> <span class="md-nav__icon md-icon"></span> byte_container_with_subtype </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../byte_container_with_subtype/byte_container_with_subtype/ class=md-nav__link> <span class=md-ellipsis> (constructor) </span> </a> </li> <li class=md-nav__item> <a href=../../byte_container_with_subtype/clear_subtype/ class=md-nav__link> <span class=md-ellipsis> clear_subtype </span> </a> </li> <li class=md-nav__item> <a href=../../byte_container_with_subtype/has_subtype/ class=md-nav__link> <span class=md-ellipsis> has_subtype </span> </a> </li> <li class=md-nav__item> <a href=../../byte_container_with_subtype/set_subtype/ class=md-nav__link> <span class=md-ellipsis> set_subtype </span> </a> </li> <li class=md-nav__item> <a href=../../byte_container_with_subtype/subtype/ class=md-nav__link> <span class=md-ellipsis> subtype </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_3> <div class="md-nav__link md-nav__container"> <a href=../../adl_serializer/ class="md-nav__link "> <span class=md-ellipsis> adl_serializer </span> </a> <label class="md-nav__link " for=__nav_4_3 id=__nav_4_3_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_3_label aria-expanded=false> <label class=md-nav__title for=__nav_4_3> <span class="md-nav__icon md-icon"></span> adl_serializer </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../adl_serializer/from_json/ class=md-nav__link> <span class=md-ellipsis> from_json </span> </a> </li> <li class=md-nav__item> <a href=../../adl_serializer/to_json/ class=md-nav__link> <span class=md-ellipsis> to_json </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../json/ class=md-nav__link> <span class=md-ellipsis> json </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_5> <div class="md-nav__link md-nav__container"> <a href=../../json_pointer/ class="md-nav__link "> <span class=md-ellipsis> json_pointer </span> </a> <label class="md-nav__link " for=__nav_4_5 id=__nav_4_5_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_5_label aria-expanded=false> <label class=md-nav__title for=__nav_4_5> <span class="md-nav__icon md-icon"></span> json_pointer </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../json_pointer/json_pointer/ class=md-nav__link> <span class=md-ellipsis> (Constructor) </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/back/ class=md-nav__link> <span class=md-ellipsis> back </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/empty/ class=md-nav__link> <span class=md-ellipsis> empty </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/front/ class=md-nav__link> <span class=md-ellipsis> front </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_string_t/ class=md-nav__link> <span class=md-ellipsis> operator string_t </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_eq/ class=md-nav__link> <span class=md-ellipsis> operator== </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_ne/ class=md-nav__link> <span class=md-ellipsis> operator!= </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_slash/ class=md-nav__link> <span class=md-ellipsis> operator/ </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_slasheq/ class=md-nav__link> <span class=md-ellipsis> operator/= </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/parent_pointer/ class=md-nav__link> <span class=md-ellipsis> parent_pointer </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/pop_back/ class=md-nav__link> <span class=md-ellipsis> pop_back </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/pop_front/ class=md-nav__link> <span class=md-ellipsis> pop_front </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/push_back/ class=md-nav__link> <span class=md-ellipsis> push_back </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/push_front/ class=md-nav__link> <span class=md-ellipsis> push_front </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/string_t/ class=md-nav__link> <span class=md-ellipsis> string_t </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/to_string/ class=md-nav__link> <span class=md-ellipsis> to_string </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_6> <div class="md-nav__link md-nav__container"> <a href=../../json_sax/ class="md-nav__link "> <span class=md-ellipsis> json_sax </span> </a> <label class="md-nav__link " for=__nav_4_6 id=__nav_4_6_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_6_label aria-expanded=false> <label class=md-nav__title for=__nav_4_6> <span class="md-nav__icon md-icon"></span> json_sax </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../json_sax/binary/ class=md-nav__link> <span class=md-ellipsis> binary </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/boolean/ class=md-nav__link> <span class=md-ellipsis> boolean </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/end_array/ class=md-nav__link> <span class=md-ellipsis> end_array </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/end_object/ class=md-nav__link> <span class=md-ellipsis> end_object </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/key/ class=md-nav__link> <span class=md-ellipsis> key </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/null/ class=md-nav__link> <span class=md-ellipsis> null </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/number_float/ class=md-nav__link> <span class=md-ellipsis> number_float </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/number_integer/ class=md-nav__link> <span class=md-ellipsis> number_integer </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/number_unsigned/ class=md-nav__link> <span class=md-ellipsis> number_unsigned </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/parse_error/ class=md-nav__link> <span class=md-ellipsis> parse_error </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/start_array/ class=md-nav__link> <span class=md-ellipsis> start_array </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/start_object/ class=md-nav__link> <span class=md-ellipsis> start_object </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/string/ class=md-nav__link> <span class=md-ellipsis> string </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../operator_ltlt/ class=md-nav__link> <span class=md-ellipsis> operator<<(basic_json), operator<<(json_pointer) </span> </a> </li> <li class=md-nav__item> <a href=../../operator_gtgt/ class=md-nav__link> <span class=md-ellipsis> operator>>(basic_json) </span> </a> </li> <li class=md-nav__item> <a href=../../operator_literal_json/ class=md-nav__link> <span class=md-ellipsis> operator""_json </span> </a> </li> <li class=md-nav__item> <a href=../../operator_literal_json_pointer/ class=md-nav__link> <span class=md-ellipsis> operator""_json_pointer </span> </a> </li> <li class=md-nav__item> <a href=../../ordered_json/ class=md-nav__link> <span class=md-ellipsis> ordered_json </span> </a> </li> <li class=md-nav__item> <a href=../../ordered_map/ class=md-nav__link> <span class=md-ellipsis> ordered_map </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_13> <div class="md-nav__link md-nav__container"> <a href=../../macros/ class="md-nav__link "> <span class=md-ellipsis> macros </span> </a> <label class="md-nav__link " for=__nav_4_13 id=__nav_4_13_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_13_label aria-expanded=false> <label class=md-nav__title for=__nav_4_13> <span class="md-nav__icon md-icon"></span> macros </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../macros/json_assert/ class=md-nav__link> <span class=md-ellipsis> JSON_ASSERT </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_brace_init_copy_semantics/ class=md-nav__link> <span class=md-ellipsis> JSON_BRACE_INIT_COPY_SEMANTICS </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_throw_user/ class=md-nav__link> <span class=md-ellipsis> JSON_CATCH_USER, JSON_THROW_USER, JSON_TRY_USER </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_diagnostics/ class=md-nav__link> <span class=md-ellipsis> JSON_DIAGNOSTICS </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_diagnostic_positions/ class=md-nav__link> <span class=md-ellipsis> JSON_DIAGNOSTIC_POSITIONS </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_disable_enum_serialization/ class=md-nav__link> <span class=md-ellipsis> JSON_DISABLE_ENUM_SERIALIZATION </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_has_cpp_11/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_CPP_11, JSON_HAS_CPP_14, JSON_HAS_CPP_17, JSON_HAS_CPP_20 </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_has_filesystem/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_EXPERIMENTAL_FILESYSTEM, JSON_HAS_FILESYSTEM </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_has_ranges/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_RANGES </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_has_static_rtti/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_STATIC_RTTI </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_has_three_way_comparison/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_THREE_WAY_COMPARISON </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_noexception/ class=md-nav__link> <span class=md-ellipsis> JSON_NOEXCEPTION </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_no_io/ class=md-nav__link> <span class=md-ellipsis> JSON_NO_IO </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_skip_library_version_check/ class=md-nav__link> <span class=md-ellipsis> JSON_SKIP_LIBRARY_VERSION_CHECK </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_skip_unsupported_compiler_check/ class=md-nav__link> <span class=md-ellipsis> JSON_SKIP_UNSUPPORTED_COMPILER_CHECK </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_use_global_udls/ class=md-nav__link> <span class=md-ellipsis> JSON_USE_GLOBAL_UDLS </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_use_implicit_conversions/ class=md-nav__link> <span class=md-ellipsis> JSON_USE_IMPLICIT_CONVERSIONS </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_use_legacy_discarded_value_comparison/ class=md-nav__link> <span class=md-ellipsis> JSON_USE_LEGACY_DISCARDED_VALUE_COMPARISON </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_define_derived_type/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_ONLY_SERIALIZE, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_define_type_intrusive/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_TYPE_INTRUSIVE, NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_TYPE_INTRUSIVE_ONLY_SERIALIZE </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_define_type_non_intrusive/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_define_type_with_names/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_TYPE_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_namespace/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_NAMESPACE </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_namespace_begin/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_NAMESPACE_BEGIN, NLOHMANN_JSON_NAMESPACE_END </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_namespace_no_version/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_NAMESPACE_NO_VERSION </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_serialize_enum/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_SERIALIZE_ENUM </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_serialize_enum_strict/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_SERIALIZE_ENUM_STRICT </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_version_major/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_VERSION_MAJOR, NLOHMANN_JSON_VERSION_MINOR, NLOHMANN_JSON_VERSION_PATCH </span> </a> </li> </ul> </nav> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_5> <div class="md-nav__link md-nav__container"> <a href=../../../community/ class="md-nav__link "> <span class=md-ellipsis> Community </span> </a> <label class="md-nav__link " for=__nav_5 id=__nav_5_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_5_label aria-expanded=false> <label class=md-nav__title for=__nav_5> <span class="md-nav__icon md-icon"></span> Community </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../community/code_of_conduct/ class=md-nav__link> <span class=md-ellipsis> Code of Conduct </span> </a> </li> <li class=md-nav__item> <a href=../../../community/contribution_guidelines/ class=md-nav__link> <span class=md-ellipsis> Contribution Guidelines </span> </a> </li> <li class=md-nav__item> <a href=../../../community/quality_assurance/ class=md-nav__link> <span class=md-ellipsis> Quality assurance </span> </a> </li> <li class=md-nav__item> <a href=../../../community/governance/ class=md-nav__link> <span class=md-ellipsis> Governance </span> </a> </li> <li class=md-nav__item> <a href=../../../community/security_policy/ class=md-nav__link> <span class=md-ellipsis> Security Policy </span> </a> </li> </ul> </nav> </li> </ul> </nav> </div> </div> </div> <div class="md-sidebar md-sidebar--secondary" data-md-component=sidebar data-md-type=toc> <div class=md-sidebar__scrollwrap> <div class=md-sidebar__inner> <nav class="md-nav md-nav--secondary" aria-label="Table of contents"> <label class=md-nav__title for=__toc> <span class="md-nav__icon md-icon"></span> Table of contents </label> <ul class=md-nav__list data-md-component=toc data-md-scrollfix> <li class=md-nav__item> <a href=#template-parameters class=md-nav__link> <span class=md-ellipsis> Template parameters </span> </a> </li> <li class=md-nav__item> <a href=#parameters class=md-nav__link> <span class=md-ellipsis> Parameters </span> </a> </li> <li class=md-nav__item> <a href=#return-value class=md-nav__link> <span class=md-ellipsis> Return value </span> </a> </li> <li class=md-nav__item> <a href=#exception-safety class=md-nav__link> <span class=md-ellipsis> Exception safety </span> </a> </li> <li class=md-nav__item> <a href=#complexity class=md-nav__link> <span class=md-ellipsis> Complexity </span> </a> </li> <li class=md-nav__item> <a href=#notes class=md-nav__link> <span class=md-ellipsis> Notes </span> </a> </li> <li class=md-nav__item> <a href=#examples class=md-nav__link> <span class=md-ellipsis> Examples </span> </a> </li> <li class=md-nav__item> <a href=#version-history class=md-nav__link> <span class=md-ellipsis> Version history </span> </a> </li> </ul> </nav> </div> </div> </div> <div class=md-content data-md-component=content> <article class="md-content__inner md-typeset"> <a href="https://github.com/nlohmann/json/edit/develop/docs/mkdocs/docs/api/basic_json/operator_eq.md" title="Edit this page" class="md-content__button md-icon" rel="edit"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M10 20H6V4h7v5h5v3.1l2-2V8l-6-6H6c-1.1 0-2 .9-2 2v16c0 1.1.9 2 2 2h4zm10.2-7c.1 0 .3.1.4.2l1.3 1.3c.2.2.2.6 0 .8l-1 1-2.1-2.1 1-1c.1-.1.2-.2.4-.2m0 3.9L14.1 23H12v-2.1l6.1-6.1z"/></svg> </a> <a href="https://github.com/nlohmann/json/raw/develop/docs/mkdocs/docs/api/basic_json/operator_eq.md" title="View source of this page" class="md-content__button md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M17 18c.56 0 1 .44 1 1s-.44 1-1 1-1-.44-1-1 .44-1 1-1m0-3c-2.73 0-5.06 1.66-6 4 .94 2.34 3.27 4 6 4s5.06-1.66 6-4c-.94-2.34-3.27-4-6-4m0 6.5a2.5 2.5 0 0 1-2.5-2.5 2.5 2.5 0 0 1 2.5-2.5 2.5 2.5 0 0 1 2.5 2.5 2.5 2.5 0 0 1-2.5 2.5M9.27 20H6V4h7v5h5v4.07c.7.08 1.36.25 2 .49V8l-6-6H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h4.5a8.2 8.2 0 0 1-1.23-2"/></svg> </a> <h1 id=nlohmannbasic_jsonoperator><small>nlohmann::basic_json::</small>operator==<a class=headerlink href=#nlohmannbasic_jsonoperator title="Permanent link">&para;</a></h1> <div class=highlight><pre><span></span><code><span class=c1>// until C++20</span>
+<!doctype html><html lang=en class=no-js> <head><meta charset=utf-8><meta name=viewport content="width=device-width,initial-scale=1"><meta name=author content="Niels Lohmann"><link href="https://json.nlohmann.me/api/basic_json/operator_eq/" rel="canonical"><link href=../operator%2B%3D/ rel=prev><link href=../operator_ne/ rel=next><link rel=icon href=../../../assets/images/favicon.png><meta name=generator content="mkdocs-1.6.1, mkdocs-material-9.7.6"><title>operator== - JSON for Modern C++</title><link rel=stylesheet href=../../../assets/stylesheets/main.484c7ddc.min.css><link rel=stylesheet href=../../../assets/stylesheets/palette.ab4e12ef.min.css><link rel="stylesheet" href="../../../assets/external/fonts.googleapis.com/css.61a430c9.css"><style>:root{--md-text-font:"Roboto";--md-code-font:"JetBrains Mono"}</style><link rel=stylesheet href=../../../css/custom.css><script>__md_scope=new URL("../../..",location),__md_hash=e=>[...e].reduce(((e,_)=>(e<<5)-e+_.charCodeAt(0)),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script></head> <body dir=ltr data-md-color-scheme=default data-md-color-primary=indigo data-md-color-accent=indigo> <input class=md-toggle data-md-toggle=drawer type=checkbox id=__drawer autocomplete=off> <input class=md-toggle data-md-toggle=search type=checkbox id=__search autocomplete=off> <label class=md-overlay for=__drawer></label> <div data-md-component=skip> <a href=#nlohmannbasic_jsonoperator class=md-skip> Skip to content </a> </div> <div data-md-component=announce> </div> <header class=md-header data-md-component=header> <nav class="md-header__inner md-grid" aria-label=Header> <a href=../../.. title="JSON for Modern C++" class="md-header__button md-logo" aria-label="JSON for Modern C++" data-md-component=logo> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54"/></svg> </a> <label class="md-header__button md-icon" for=__drawer> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M3 6h18v2H3zm0 5h18v2H3zm0 5h18v2H3z"/></svg> </label> <div class=md-header__title data-md-component=header-title> <div class=md-header__ellipsis> <div class=md-header__topic> <span class=md-ellipsis> JSON for Modern C++ </span> </div> <div class=md-header__topic data-md-component=header-topic> <span class=md-ellipsis> operator== </span> </div> </div> </div> <form class=md-header__option data-md-component=palette> <input class=md-option data-md-color-media="(prefers-color-scheme: light)" data-md-color-scheme=default data-md-color-primary=indigo data-md-color-accent=indigo aria-label="Switch to dark mode" type=radio name=__palette id=__palette_0> <label class="md-header__button md-icon" title="Switch to dark mode" for=__palette_1 hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a4 4 0 0 0-4 4 4 4 0 0 0 4 4 4 4 0 0 0 4-4 4 4 0 0 0-4-4m0 10a6 6 0 0 1-6-6 6 6 0 0 1 6-6 6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12z"/></svg> </label> <input class=md-option data-md-color-media="(prefers-color-scheme: dark)" data-md-color-scheme=slate data-md-color-primary=indigo data-md-color-accent=indigo aria-label="Switch to light mode" type=radio name=__palette id=__palette_1> <label class="md-header__button md-icon" title="Switch to light mode" for=__palette_0 hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 18c-.89 0-1.74-.2-2.5-.55C11.56 16.5 13 14.42 13 12s-1.44-4.5-3.5-5.45C10.26 6.2 11.11 6 12 6a6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12z"/></svg> </label> </form> <script>var palette=__md_get("__palette");if(palette&&palette.color){if("(prefers-color-scheme)"===palette.color.media){var media=matchMedia("(prefers-color-scheme: light)"),input=document.querySelector(media.matches?"[data-md-color-media='(prefers-color-scheme: light)']":"[data-md-color-media='(prefers-color-scheme: dark)']");palette.color.media=input.getAttribute("data-md-color-media"),palette.color.scheme=input.getAttribute("data-md-color-scheme"),palette.color.primary=input.getAttribute("data-md-color-primary"),palette.color.accent=input.getAttribute("data-md-color-accent")}for(var[key,value]of Object.entries(palette.color))document.body.setAttribute("data-md-color-"+key,value)}</script> <label class="md-header__button md-icon" for=__search> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg> </label> <div class=md-search data-md-component=search role=dialog> <label class=md-search__overlay for=__search></label> <div class=md-search__inner role=search> <form class=md-search__form name=search> <input type=text class=md-search__input name=query aria-label=Search placeholder=Search autocapitalize=off autocorrect=off autocomplete=off spellcheck=false data-md-component=search-query required> <label class="md-search__icon md-icon" for=__search> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11z"/></svg> </label> <nav class=md-search__options aria-label=Search> <button type=reset class="md-search__icon md-icon" title=Clear aria-label=Clear tabindex=-1> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z"/></svg> </button> </nav> </form> <div class=md-search__output> <div class=md-search__scrollwrap tabindex=0 data-md-scrollfix> <div class=md-search-result data-md-component=search-result> <div class=md-search-result__meta> Initializing search </div> <ol class=md-search-result__list role=presentation></ol> </div> </div> </div> </div> </div> <div class=md-header__source> <a href="https://github.com/nlohmann/json" title="Go to repository" class="md-source" data-md-component="source"> <div class="md-source__icon md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </div> <div class=md-source__repository> nlohmann/json </div> </a> </div> </nav> </header> <div class=md-container data-md-component=container> <nav class=md-tabs aria-label=Tabs data-md-component=tabs> <div class=md-grid> <ul class=md-tabs__list> <li class=md-tabs__item> <a href=../../.. class=md-tabs__link> Home </a> </li> <li class=md-tabs__item> <a href=../../../features/arbitrary_types/ class=md-tabs__link> Features </a> </li> <li class=md-tabs__item> <a href=../../../integration/ class=md-tabs__link> Integration </a> </li> <li class="md-tabs__item md-tabs__item--active"> <a href=../ class=md-tabs__link> API Documentation </a> </li> <li class=md-tabs__item> <a href=../../../community/ class=md-tabs__link> Community </a> </li> </ul> </div> </nav> <main class=md-main data-md-component=main> <div class="md-main__inner md-grid"> <div class="md-sidebar md-sidebar--primary" data-md-component=sidebar data-md-type=navigation> <div class=md-sidebar__scrollwrap> <div class=md-sidebar__inner> <nav class="md-nav md-nav--primary md-nav--lifted" aria-label=Navigation data-md-level=0> <label class=md-nav__title for=__drawer> <a href=../../.. title="JSON for Modern C++" class="md-nav__button md-logo" aria-label="JSON for Modern C++" data-md-component=logo> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54"/></svg> </a> JSON for Modern C++ </label> <div class=md-nav__source> <a href="https://github.com/nlohmann/json" title="Go to repository" class="md-source" data-md-component="source"> <div class="md-source__icon md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </div> <div class=md-source__repository> nlohmann/json </div> </a> </div> <ul class=md-nav__list data-md-scrollfix> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_1> <div class="md-nav__link md-nav__container"> <a href=../../.. class="md-nav__link "> <span class=md-ellipsis> Home </span> </a> <label class="md-nav__link " for=__nav_1 id=__nav_1_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_1_label aria-expanded=false> <label class=md-nav__title for=__nav_1> <span class="md-nav__icon md-icon"></span> Home </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../home/license/ class=md-nav__link> <span class=md-ellipsis> License </span> </a> </li> <li class=md-nav__item> <a href=../../../home/faq/ class=md-nav__link> <span class=md-ellipsis> FAQ </span> </a> </li> <li class=md-nav__item> <a href=../../../home/exceptions/ class=md-nav__link> <span class=md-ellipsis> Exceptions </span> </a> </li> <li class=md-nav__item> <a href=../../../home/releases/ class=md-nav__link> <span class=md-ellipsis> Releases </span> </a> </li> <li class=md-nav__item> <a href=../../../home/design_goals/ class=md-nav__link> <span class=md-ellipsis> Design goals </span> </a> </li> <li class=md-nav__item> <a href=../../../home/architecture/ class=md-nav__link> <span class=md-ellipsis> Architecture </span> </a> </li> <li class=md-nav__item> <a href=../../../home/customers/ class=md-nav__link> <span class=md-ellipsis> Customers </span> </a> </li> <li class=md-nav__item> <a href=../../../home/sponsors/ class=md-nav__link> <span class=md-ellipsis> Sponsors </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2> <label class=md-nav__link for=__nav_2 id=__nav_2_label tabindex=0> <span class=md-ellipsis> Features </span> <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_2_label aria-expanded=false> <label class=md-nav__title for=__nav_2> <span class="md-nav__icon md-icon"></span> Features </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/arbitrary_types/ class=md-nav__link> <span class=md-ellipsis> Arbitrary Type Conversions </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_2> <div class="md-nav__link md-nav__container"> <a href=../../../features/binary_formats/ class="md-nav__link "> <span class=md-ellipsis> Binary Formats </span> </a> <label class="md-nav__link " for=__nav_2_2 id=__nav_2_2_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_2_label aria-expanded=false> <label class=md-nav__title for=__nav_2_2> <span class="md-nav__icon md-icon"></span> Binary Formats </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/binary_formats/bjdata/ class=md-nav__link> <span class=md-ellipsis> BJData </span> </a> </li> <li class=md-nav__item> <a href=../../../features/binary_formats/bson/ class=md-nav__link> <span class=md-ellipsis> BSON </span> </a> </li> <li class=md-nav__item> <a href=../../../features/binary_formats/cbor/ class=md-nav__link> <span class=md-ellipsis> CBOR </span> </a> </li> <li class=md-nav__item> <a href=../../../features/binary_formats/messagepack/ class=md-nav__link> <span class=md-ellipsis> MessagePack </span> </a> </li> <li class=md-nav__item> <a href=../../../features/binary_formats/ubjson/ class=md-nav__link> <span class=md-ellipsis> UBJSON </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../../features/binary_values/ class=md-nav__link> <span class=md-ellipsis> Binary Values </span> </a> </li> <li class=md-nav__item> <a href=../../../features/comments/ class=md-nav__link> <span class=md-ellipsis> Comments </span> </a> </li> <li class=md-nav__item> <a href=../../../features/trailing_commas/ class=md-nav__link> <span class=md-ellipsis> Trailing Commas </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_6> <div class="md-nav__link md-nav__container"> <a href=../../../features/element_access/ class="md-nav__link "> <span class=md-ellipsis> Element Access </span> </a> <label class="md-nav__link " for=__nav_2_6 id=__nav_2_6_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_6_label aria-expanded=false> <label class=md-nav__title for=__nav_2_6> <span class="md-nav__icon md-icon"></span> Element Access </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/element_access/unchecked_access/ class=md-nav__link> <span class=md-ellipsis> Unchecked access: operator[] </span> </a> </li> <li class=md-nav__item> <a href=../../../features/element_access/checked_access/ class=md-nav__link> <span class=md-ellipsis> Checked access: at </span> </a> </li> <li class=md-nav__item> <a href=../../../features/element_access/default_value/ class=md-nav__link> <span class=md-ellipsis> Access with default value: value </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../../features/iterators/ class=md-nav__link> <span class=md-ellipsis> Iterators </span> </a> </li> <li class=md-nav__item> <a href=../../../features/json_pointer/ class=md-nav__link> <span class=md-ellipsis> JSON Pointer </span> </a> </li> <li class=md-nav__item> <a href=../../../features/json_patch/ class=md-nav__link> <span class=md-ellipsis> JSON Patch and Diff </span> </a> </li> <li class=md-nav__item> <a href=../../../features/merge_patch/ class=md-nav__link> <span class=md-ellipsis> JSON Merge Patch </span> </a> </li> <li class=md-nav__item> <a href=../../../features/modules/ class=md-nav__link> <span class=md-ellipsis> Modules </span> </a> </li> <li class=md-nav__item> <a href=../../../features/namespace/ class=md-nav__link> <span class=md-ellipsis> nlohmann Namespace </span> </a> </li> <li class=md-nav__item> <a href=../../../features/object_order/ class=md-nav__link> <span class=md-ellipsis> Object Order </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_14> <div class="md-nav__link md-nav__container"> <a href=../../../features/parsing/ class="md-nav__link "> <span class=md-ellipsis> Parsing </span> </a> <label class="md-nav__link " for=__nav_2_14 id=__nav_2_14_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_14_label aria-expanded=false> <label class=md-nav__title for=__nav_2_14> <span class="md-nav__icon md-icon"></span> Parsing </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/parsing/json_lines/ class=md-nav__link> <span class=md-ellipsis> JSON Lines </span> </a> </li> <li class=md-nav__item> <a href=../../../features/parsing/parse_exceptions/ class=md-nav__link> <span class=md-ellipsis> Parsing and Exceptions </span> </a> </li> <li class=md-nav__item> <a href=../../../features/parsing/parser_callbacks/ class=md-nav__link> <span class=md-ellipsis> Parser Callbacks </span> </a> </li> <li class=md-nav__item> <a href=../../../features/parsing/sax_interface/ class=md-nav__link> <span class=md-ellipsis> SAX Interface </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../../features/assertions/ class=md-nav__link> <span class=md-ellipsis> Runtime Assertions </span> </a> </li> <li class=md-nav__item> <a href=../../../features/enum_conversion/ class=md-nav__link> <span class=md-ellipsis> Specializing enum conversion </span> </a> </li> <li class=md-nav__item> <a href=../../../features/macros/ class=md-nav__link> <span class=md-ellipsis> Supported Macros </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_18> <div class="md-nav__link md-nav__container"> <a href=../../../features/types/ class="md-nav__link "> <span class=md-ellipsis> Types </span> </a> <label class="md-nav__link " for=__nav_2_18 id=__nav_2_18_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_18_label aria-expanded=false> <label class=md-nav__title for=__nav_2_18> <span class="md-nav__icon md-icon"></span> Types </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/types/number_handling/ class=md-nav__link> <span class=md-ellipsis> Number Handling </span> </a> </li> </ul> </nav> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_3> <div class="md-nav__link md-nav__container"> <a href=../../../integration/ class="md-nav__link "> <span class=md-ellipsis> Integration </span> </a> <label class="md-nav__link " for=__nav_3 id=__nav_3_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_3_label aria-expanded=false> <label class=md-nav__title for=__nav_3> <span class="md-nav__icon md-icon"></span> Integration </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../integration/migration_guide/ class=md-nav__link> <span class=md-ellipsis> Migration Guide </span> </a> </li> <li class=md-nav__item> <a href=../../../integration/cmake/ class=md-nav__link> <span class=md-ellipsis> CMake </span> </a> </li> <li class=md-nav__item> <a href=../../../integration/package_managers/ class=md-nav__link> <span class=md-ellipsis> Package Managers </span> </a> </li> <li class=md-nav__item> <a href=../../../integration/pkg-config/ class=md-nav__link> <span class=md-ellipsis> Pkg-config </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--active md-nav__item--section md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4 checked> <label class=md-nav__link for=__nav_4 id=__nav_4_label tabindex> <span class=md-ellipsis> API Documentation </span> <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_4_label aria-expanded=true> <label class=md-nav__title for=__nav_4> <span class="md-nav__icon md-icon"></span> API Documentation </label> <ul class=md-nav__list data-md-scrollfix> <li class="md-nav__item md-nav__item--active md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_1 checked> <div class="md-nav__link md-nav__container"> <a href=../ class="md-nav__link "> <span class=md-ellipsis> basic_json </span> </a> <label class="md-nav__link " for=__nav_4_1 id=__nav_4_1_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_1_label aria-expanded=true> <label class=md-nav__title for=__nav_4_1> <span class="md-nav__icon md-icon"></span> basic_json </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../basic_json/ class=md-nav__link> <span class=md-ellipsis> (Constructor) </span> </a> </li> <li class=md-nav__item> <a href=../~basic_json/ class=md-nav__link> <span class=md-ellipsis> (Destructor) </span> </a> </li> <li class=md-nav__item> <a href=../accept/ class=md-nav__link> <span class=md-ellipsis> accept </span> </a> </li> <li class=md-nav__item> <a href=../array/ class=md-nav__link> <span class=md-ellipsis> array </span> </a> </li> <li class=md-nav__item> <a href=../array_t/ class=md-nav__link> <span class=md-ellipsis> array_t </span> </a> </li> <li class=md-nav__item> <a href=../at/ class=md-nav__link> <span class=md-ellipsis> at </span> </a> </li> <li class=md-nav__item> <a href=../back/ class=md-nav__link> <span class=md-ellipsis> back </span> </a> </li> <li class=md-nav__item> <a href=../begin/ class=md-nav__link> <span class=md-ellipsis> begin </span> </a> </li> <li class=md-nav__item> <a href=../binary/ class=md-nav__link> <span class=md-ellipsis> binary </span> </a> </li> <li class=md-nav__item> <a href=../binary_t/ class=md-nav__link> <span class=md-ellipsis> binary_t </span> </a> </li> <li class=md-nav__item> <a href=../boolean_t/ class=md-nav__link> <span class=md-ellipsis> boolean_t </span> </a> </li> <li class=md-nav__item> <a href=../cbegin/ class=md-nav__link> <span class=md-ellipsis> cbegin </span> </a> </li> <li class=md-nav__item> <a href=../cbor_tag_handler_t/ class=md-nav__link> <span class=md-ellipsis> cbor_tag_handler_t </span> </a> </li> <li class=md-nav__item> <a href=../cend/ class=md-nav__link> <span class=md-ellipsis> cend </span> </a> </li> <li class=md-nav__item> <a href=../clear/ class=md-nav__link> <span class=md-ellipsis> clear </span> </a> </li> <li class=md-nav__item> <a href=../contains/ class=md-nav__link> <span class=md-ellipsis> contains </span> </a> </li> <li class=md-nav__item> <a href=../count/ class=md-nav__link> <span class=md-ellipsis> count </span> </a> </li> <li class=md-nav__item> <a href=../crbegin/ class=md-nav__link> <span class=md-ellipsis> crbegin </span> </a> </li> <li class=md-nav__item> <a href=../crend/ class=md-nav__link> <span class=md-ellipsis> crend </span> </a> </li> <li class=md-nav__item> <a href=../default_object_comparator_t/ class=md-nav__link> <span class=md-ellipsis> default_object_comparator_t </span> </a> </li> <li class=md-nav__item> <a href=../diff/ class=md-nav__link> <span class=md-ellipsis> diff </span> </a> </li> <li class=md-nav__item> <a href=../dump/ class=md-nav__link> <span class=md-ellipsis> dump </span> </a> </li> <li class=md-nav__item> <a href=../emplace/ class=md-nav__link> <span class=md-ellipsis> emplace </span> </a> </li> <li class=md-nav__item> <a href=../emplace_back/ class=md-nav__link> <span class=md-ellipsis> emplace_back </span> </a> </li> <li class=md-nav__item> <a href=../empty/ class=md-nav__link> <span class=md-ellipsis> empty </span> </a> </li> <li class=md-nav__item> <a href=../end/ class=md-nav__link> <span class=md-ellipsis> end </span> </a> </li> <li class=md-nav__item> <a href=../end_pos/ class=md-nav__link> <span class=md-ellipsis> end_pos </span> </a> </li> <li class=md-nav__item> <a href=../erase/ class=md-nav__link> <span class=md-ellipsis> erase </span> </a> </li> <li class=md-nav__item> <a href=../error_handler_t/ class=md-nav__link> <span class=md-ellipsis> error_handler_t </span> </a> </li> <li class=md-nav__item> <a href=../exception/ class=md-nav__link> <span class=md-ellipsis> exception </span> </a> </li> <li class=md-nav__item> <a href=../find/ class=md-nav__link> <span class=md-ellipsis> find </span> </a> </li> <li class=md-nav__item> <a href=../flatten/ class=md-nav__link> <span class=md-ellipsis> flatten </span> </a> </li> <li class=md-nav__item> <a href=../from_bjdata/ class=md-nav__link> <span class=md-ellipsis> from_bjdata </span> </a> </li> <li class=md-nav__item> <a href=../from_bson/ class=md-nav__link> <span class=md-ellipsis> from_bson </span> </a> </li> <li class=md-nav__item> <a href=../from_cbor/ class=md-nav__link> <span class=md-ellipsis> from_cbor </span> </a> </li> <li class=md-nav__item> <a href=../from_msgpack/ class=md-nav__link> <span class=md-ellipsis> from_msgpack </span> </a> </li> <li class=md-nav__item> <a href=../from_ubjson/ class=md-nav__link> <span class=md-ellipsis> from_ubjson </span> </a> </li> <li class=md-nav__item> <a href=../front/ class=md-nav__link> <span class=md-ellipsis> front </span> </a> </li> <li class=md-nav__item> <a href=../get/ class=md-nav__link> <span class=md-ellipsis> get </span> </a> </li> <li class=md-nav__item> <a href=../get_allocator/ class=md-nav__link> <span class=md-ellipsis> get_allocator </span> </a> </li> <li class=md-nav__item> <a href=../get_binary/ class=md-nav__link> <span class=md-ellipsis> get_binary </span> </a> </li> <li class=md-nav__item> <a href=../get_ptr/ class=md-nav__link> <span class=md-ellipsis> get_ptr </span> </a> </li> <li class=md-nav__item> <a href=../get_ref/ class=md-nav__link> <span class=md-ellipsis> get_ref </span> </a> </li> <li class=md-nav__item> <a href=../get_to/ class=md-nav__link> <span class=md-ellipsis> get_to </span> </a> </li> <li class=md-nav__item> <a href=../std_hash/ class=md-nav__link> <span class=md-ellipsis> std::hash&lt;basic_json&gt; </span> </a> </li> <li class=md-nav__item> <a href=../input_format_t/ class=md-nav__link> <span class=md-ellipsis> input_format_t </span> </a> </li> <li class=md-nav__item> <a href=../insert/ class=md-nav__link> <span class=md-ellipsis> insert </span> </a> </li> <li class=md-nav__item> <a href=../invalid_iterator/ class=md-nav__link> <span class=md-ellipsis> invalid_iterator </span> </a> </li> <li class=md-nav__item> <a href=../is_array/ class=md-nav__link> <span class=md-ellipsis> is_array </span> </a> </li> <li class=md-nav__item> <a href=../is_binary/ class=md-nav__link> <span class=md-ellipsis> is_binary </span> </a> </li> <li class=md-nav__item> <a href=../is_boolean/ class=md-nav__link> <span class=md-ellipsis> is_boolean </span> </a> </li> <li class=md-nav__item> <a href=../is_discarded/ class=md-nav__link> <span class=md-ellipsis> is_discarded </span> </a> </li> <li class=md-nav__item> <a href=../is_null/ class=md-nav__link> <span class=md-ellipsis> is_null </span> </a> </li> <li class=md-nav__item> <a href=../is_number/ class=md-nav__link> <span class=md-ellipsis> is_number </span> </a> </li> <li class=md-nav__item> <a href=../is_number_float/ class=md-nav__link> <span class=md-ellipsis> is_number_float </span> </a> </li> <li class=md-nav__item> <a href=../is_number_integer/ class=md-nav__link> <span class=md-ellipsis> is_number_integer </span> </a> </li> <li class=md-nav__item> <a href=../is_number_unsigned/ class=md-nav__link> <span class=md-ellipsis> is_number_unsigned </span> </a> </li> <li class=md-nav__item> <a href=../is_object/ class=md-nav__link> <span class=md-ellipsis> is_object </span> </a> </li> <li class=md-nav__item> <a href=../is_primitive/ class=md-nav__link> <span class=md-ellipsis> is_primitive </span> </a> </li> <li class=md-nav__item> <a href=../is_string/ class=md-nav__link> <span class=md-ellipsis> is_string </span> </a> </li> <li class=md-nav__item> <a href=../is_structured/ class=md-nav__link> <span class=md-ellipsis> is_structured </span> </a> </li> <li class=md-nav__item> <a href=../items/ class=md-nav__link> <span class=md-ellipsis> items </span> </a> </li> <li class=md-nav__item> <a href=../json_base_class_t/ class=md-nav__link> <span class=md-ellipsis> json_base_class_t </span> </a> </li> <li class=md-nav__item> <a href=../json_serializer/ class=md-nav__link> <span class=md-ellipsis> json_serializer </span> </a> </li> <li class=md-nav__item> <a href=../max_size/ class=md-nav__link> <span class=md-ellipsis> max_size </span> </a> </li> <li class=md-nav__item> <a href=../meta/ class=md-nav__link> <span class=md-ellipsis> meta </span> </a> </li> <li class=md-nav__item> <a href=../merge_patch/ class=md-nav__link> <span class=md-ellipsis> merge_patch </span> </a> </li> <li class=md-nav__item> <a href=../number_float_t/ class=md-nav__link> <span class=md-ellipsis> number_float_t </span> </a> </li> <li class=md-nav__item> <a href=../number_integer_t/ class=md-nav__link> <span class=md-ellipsis> number_integer_t </span> </a> </li> <li class=md-nav__item> <a href=../number_unsigned_t/ class=md-nav__link> <span class=md-ellipsis> number_unsigned_t </span> </a> </li> <li class=md-nav__item> <a href=../object/ class=md-nav__link> <span class=md-ellipsis> object </span> </a> </li> <li class=md-nav__item> <a href=../object_comparator_t/ class=md-nav__link> <span class=md-ellipsis> object_comparator_t </span> </a> </li> <li class=md-nav__item> <a href=../object_t/ class=md-nav__link> <span class=md-ellipsis> object_t </span> </a> </li> <li class=md-nav__item> <a href=../operator_ValueType/ class=md-nav__link> <span class=md-ellipsis> operator ValueType </span> </a> </li> <li class=md-nav__item> <a href=../operator_value_t/ class=md-nav__link> <span class=md-ellipsis> operator value_t </span> </a> </li> <li class=md-nav__item> <a href=../operator%5B%5D/ class=md-nav__link> <span class=md-ellipsis> operator[] </span> </a> </li> <li class=md-nav__item> <a href=../operator%3D/ class=md-nav__link> <span class=md-ellipsis> operator= </span> </a> </li> <li class=md-nav__item> <a href=../operator%2B%3D/ class=md-nav__link> <span class=md-ellipsis> operator+= </span> </a> </li> <li class="md-nav__item md-nav__item--active"> <input class="md-nav__toggle md-toggle" type=checkbox id=__toc> <label class="md-nav__link md-nav__link--active" for=__toc> <span class=md-ellipsis> operator== </span> <span class="md-nav__icon md-icon"></span> </label> <a href=./ class="md-nav__link md-nav__link--active"> <span class=md-ellipsis> operator== </span> </a> <nav class="md-nav md-nav--secondary" aria-label="Table of contents"> <label class=md-nav__title for=__toc> <span class="md-nav__icon md-icon"></span> Table of contents </label> <ul class=md-nav__list data-md-component=toc data-md-scrollfix> <li class=md-nav__item> <a href=#template-parameters class=md-nav__link> <span class=md-ellipsis> Template parameters </span> </a> </li> <li class=md-nav__item> <a href=#parameters class=md-nav__link> <span class=md-ellipsis> Parameters </span> </a> </li> <li class=md-nav__item> <a href=#return-value class=md-nav__link> <span class=md-ellipsis> Return value </span> </a> </li> <li class=md-nav__item> <a href=#exception-safety class=md-nav__link> <span class=md-ellipsis> Exception safety </span> </a> </li> <li class=md-nav__item> <a href=#complexity class=md-nav__link> <span class=md-ellipsis> Complexity </span> </a> </li> <li class=md-nav__item> <a href=#notes class=md-nav__link> <span class=md-ellipsis> Notes </span> </a> </li> <li class=md-nav__item> <a href=#examples class=md-nav__link> <span class=md-ellipsis> Examples </span> </a> </li> <li class=md-nav__item> <a href=#see-also class=md-nav__link> <span class=md-ellipsis> See also </span> </a> </li> <li class=md-nav__item> <a href=#version-history class=md-nav__link> <span class=md-ellipsis> Version history </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../operator_ne/ class=md-nav__link> <span class=md-ellipsis> operator!= </span> </a> </li> <li class=md-nav__item> <a href=../operator_lt/ class=md-nav__link> <span class=md-ellipsis> operator< </span> </a> </li> <li class=md-nav__item> <a href=../operator_gt/ class=md-nav__link> <span class=md-ellipsis> operator> </span> </a> </li> <li class=md-nav__item> <a href=../operator_le/ class=md-nav__link> <span class=md-ellipsis> operator<= </span> </a> </li> <li class=md-nav__item> <a href=../operator_ge/ class=md-nav__link> <span class=md-ellipsis> operator>= </span> </a> </li> <li class=md-nav__item> <a href=../operator_spaceship/ class=md-nav__link> <span class=md-ellipsis> operator<=> </span> </a> </li> <li class=md-nav__item> <a href=../out_of_range/ class=md-nav__link> <span class=md-ellipsis> out_of_range </span> </a> </li> <li class=md-nav__item> <a href=../other_error/ class=md-nav__link> <span class=md-ellipsis> other_error </span> </a> </li> <li class=md-nav__item> <a href=../parse/ class=md-nav__link> <span class=md-ellipsis> parse </span> </a> </li> <li class=md-nav__item> <a href=../parse_error/ class=md-nav__link> <span class=md-ellipsis> parse_error </span> </a> </li> <li class=md-nav__item> <a href=../parse_event_t/ class=md-nav__link> <span class=md-ellipsis> parse_event_t </span> </a> </li> <li class=md-nav__item> <a href=../parser_callback_t/ class=md-nav__link> <span class=md-ellipsis> parser_callback_t </span> </a> </li> <li class=md-nav__item> <a href=../patch/ class=md-nav__link> <span class=md-ellipsis> patch </span> </a> </li> <li class=md-nav__item> <a href=../patch_inplace/ class=md-nav__link> <span class=md-ellipsis> patch_inplace </span> </a> </li> <li class=md-nav__item> <a href=../push_back/ class=md-nav__link> <span class=md-ellipsis> push_back </span> </a> </li> <li class=md-nav__item> <a href=../rbegin/ class=md-nav__link> <span class=md-ellipsis> rbegin </span> </a> </li> <li class=md-nav__item> <a href=../rend/ class=md-nav__link> <span class=md-ellipsis> rend </span> </a> </li> <li class=md-nav__item> <a href=../sax_parse/ class=md-nav__link> <span class=md-ellipsis> sax_parse </span> </a> </li> <li class=md-nav__item> <a href=../size/ class=md-nav__link> <span class=md-ellipsis> size </span> </a> </li> <li class=md-nav__item> <a href=../start_pos/ class=md-nav__link> <span class=md-ellipsis> start_pos </span> </a> </li> <li class=md-nav__item> <a href=../string_t/ class=md-nav__link> <span class=md-ellipsis> string_t </span> </a> </li> <li class=md-nav__item> <a href=../swap/ class=md-nav__link> <span class=md-ellipsis> swap </span> </a> </li> <li class=md-nav__item> <a href=../std_swap/ class=md-nav__link> <span class=md-ellipsis> std::swap&lt;basic_json&gt; </span> </a> </li> <li class=md-nav__item> <a href=../to_bjdata/ class=md-nav__link> <span class=md-ellipsis> to_bjdata </span> </a> </li> <li class=md-nav__item> <a href=../to_bson/ class=md-nav__link> <span class=md-ellipsis> to_bson </span> </a> </li> <li class=md-nav__item> <a href=../to_cbor/ class=md-nav__link> <span class=md-ellipsis> to_cbor </span> </a> </li> <li class=md-nav__item> <a href=../to_msgpack/ class=md-nav__link> <span class=md-ellipsis> to_msgpack </span> </a> </li> <li class=md-nav__item> <a href=../to_string/ class=md-nav__link> <span class=md-ellipsis> to_string </span> </a> </li> <li class=md-nav__item> <a href=../to_ubjson/ class=md-nav__link> <span class=md-ellipsis> to_ubjson </span> </a> </li> <li class=md-nav__item> <a href=../type/ class=md-nav__link> <span class=md-ellipsis> type </span> </a> </li> <li class=md-nav__item> <a href=../type_error/ class=md-nav__link> <span class=md-ellipsis> type_error </span> </a> </li> <li class=md-nav__item> <a href=../type_name/ class=md-nav__link> <span class=md-ellipsis> type_name </span> </a> </li> <li class=md-nav__item> <a href=../unflatten/ class=md-nav__link> <span class=md-ellipsis> unflatten </span> </a> </li> <li class=md-nav__item> <a href=../update/ class=md-nav__link> <span class=md-ellipsis> update </span> </a> </li> <li class=md-nav__item> <a href=../value/ class=md-nav__link> <span class=md-ellipsis> value </span> </a> </li> <li class=md-nav__item> <a href=../value_t/ class=md-nav__link> <span class=md-ellipsis> value_t </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_2> <div class="md-nav__link md-nav__container"> <a href=../../byte_container_with_subtype/ class="md-nav__link "> <span class=md-ellipsis> byte_container_with_subtype </span> </a> <label class="md-nav__link " for=__nav_4_2 id=__nav_4_2_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_2_label aria-expanded=false> <label class=md-nav__title for=__nav_4_2> <span class="md-nav__icon md-icon"></span> byte_container_with_subtype </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../byte_container_with_subtype/byte_container_with_subtype/ class=md-nav__link> <span class=md-ellipsis> (constructor) </span> </a> </li> <li class=md-nav__item> <a href=../../byte_container_with_subtype/clear_subtype/ class=md-nav__link> <span class=md-ellipsis> clear_subtype </span> </a> </li> <li class=md-nav__item> <a href=../../byte_container_with_subtype/has_subtype/ class=md-nav__link> <span class=md-ellipsis> has_subtype </span> </a> </li> <li class=md-nav__item> <a href=../../byte_container_with_subtype/set_subtype/ class=md-nav__link> <span class=md-ellipsis> set_subtype </span> </a> </li> <li class=md-nav__item> <a href=../../byte_container_with_subtype/subtype/ class=md-nav__link> <span class=md-ellipsis> subtype </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_3> <div class="md-nav__link md-nav__container"> <a href=../../adl_serializer/ class="md-nav__link "> <span class=md-ellipsis> adl_serializer </span> </a> <label class="md-nav__link " for=__nav_4_3 id=__nav_4_3_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_3_label aria-expanded=false> <label class=md-nav__title for=__nav_4_3> <span class="md-nav__icon md-icon"></span> adl_serializer </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../adl_serializer/from_json/ class=md-nav__link> <span class=md-ellipsis> from_json </span> </a> </li> <li class=md-nav__item> <a href=../../adl_serializer/to_json/ class=md-nav__link> <span class=md-ellipsis> to_json </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../json/ class=md-nav__link> <span class=md-ellipsis> json </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_5> <div class="md-nav__link md-nav__container"> <a href=../../json_pointer/ class="md-nav__link "> <span class=md-ellipsis> json_pointer </span> </a> <label class="md-nav__link " for=__nav_4_5 id=__nav_4_5_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_5_label aria-expanded=false> <label class=md-nav__title for=__nav_4_5> <span class="md-nav__icon md-icon"></span> json_pointer </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../json_pointer/json_pointer/ class=md-nav__link> <span class=md-ellipsis> (Constructor) </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/back/ class=md-nav__link> <span class=md-ellipsis> back </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/empty/ class=md-nav__link> <span class=md-ellipsis> empty </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/front/ class=md-nav__link> <span class=md-ellipsis> front </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_string_t/ class=md-nav__link> <span class=md-ellipsis> operator string_t </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_eq/ class=md-nav__link> <span class=md-ellipsis> operator== </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_ne/ class=md-nav__link> <span class=md-ellipsis> operator!= </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_slash/ class=md-nav__link> <span class=md-ellipsis> operator/ </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_slasheq/ class=md-nav__link> <span class=md-ellipsis> operator/= </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/parent_pointer/ class=md-nav__link> <span class=md-ellipsis> parent_pointer </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/pop_back/ class=md-nav__link> <span class=md-ellipsis> pop_back </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/pop_front/ class=md-nav__link> <span class=md-ellipsis> pop_front </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/push_back/ class=md-nav__link> <span class=md-ellipsis> push_back </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/push_front/ class=md-nav__link> <span class=md-ellipsis> push_front </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/string_t/ class=md-nav__link> <span class=md-ellipsis> string_t </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/to_string/ class=md-nav__link> <span class=md-ellipsis> to_string </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_6> <div class="md-nav__link md-nav__container"> <a href=../../json_sax/ class="md-nav__link "> <span class=md-ellipsis> json_sax </span> </a> <label class="md-nav__link " for=__nav_4_6 id=__nav_4_6_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_6_label aria-expanded=false> <label class=md-nav__title for=__nav_4_6> <span class="md-nav__icon md-icon"></span> json_sax </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../json_sax/binary/ class=md-nav__link> <span class=md-ellipsis> binary </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/boolean/ class=md-nav__link> <span class=md-ellipsis> boolean </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/end_array/ class=md-nav__link> <span class=md-ellipsis> end_array </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/end_object/ class=md-nav__link> <span class=md-ellipsis> end_object </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/key/ class=md-nav__link> <span class=md-ellipsis> key </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/null/ class=md-nav__link> <span class=md-ellipsis> null </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/number_float/ class=md-nav__link> <span class=md-ellipsis> number_float </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/number_integer/ class=md-nav__link> <span class=md-ellipsis> number_integer </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/number_unsigned/ class=md-nav__link> <span class=md-ellipsis> number_unsigned </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/parse_error/ class=md-nav__link> <span class=md-ellipsis> parse_error </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/start_array/ class=md-nav__link> <span class=md-ellipsis> start_array </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/start_object/ class=md-nav__link> <span class=md-ellipsis> start_object </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/string/ class=md-nav__link> <span class=md-ellipsis> string </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../operator_ltlt/ class=md-nav__link> <span class=md-ellipsis> operator<<(basic_json), operator<<(json_pointer) </span> </a> </li> <li class=md-nav__item> <a href=../../operator_gtgt/ class=md-nav__link> <span class=md-ellipsis> operator>>(basic_json) </span> </a> </li> <li class=md-nav__item> <a href=../../operator_literal_json/ class=md-nav__link> <span class=md-ellipsis> operator""_json </span> </a> </li> <li class=md-nav__item> <a href=../../operator_literal_json_pointer/ class=md-nav__link> <span class=md-ellipsis> operator""_json_pointer </span> </a> </li> <li class=md-nav__item> <a href=../../ordered_json/ class=md-nav__link> <span class=md-ellipsis> ordered_json </span> </a> </li> <li class=md-nav__item> <a href=../../ordered_map/ class=md-nav__link> <span class=md-ellipsis> ordered_map </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_13> <div class="md-nav__link md-nav__container"> <a href=../../macros/ class="md-nav__link "> <span class=md-ellipsis> macros </span> </a> <label class="md-nav__link " for=__nav_4_13 id=__nav_4_13_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_13_label aria-expanded=false> <label class=md-nav__title for=__nav_4_13> <span class="md-nav__icon md-icon"></span> macros </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../macros/json_assert/ class=md-nav__link> <span class=md-ellipsis> JSON_ASSERT </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_brace_init_copy_semantics/ class=md-nav__link> <span class=md-ellipsis> JSON_BRACE_INIT_COPY_SEMANTICS </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_throw_user/ class=md-nav__link> <span class=md-ellipsis> JSON_CATCH_USER, JSON_THROW_USER, JSON_TRY_USER </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_diagnostics/ class=md-nav__link> <span class=md-ellipsis> JSON_DIAGNOSTICS </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_diagnostic_positions/ class=md-nav__link> <span class=md-ellipsis> JSON_DIAGNOSTIC_POSITIONS </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_disable_enum_serialization/ class=md-nav__link> <span class=md-ellipsis> JSON_DISABLE_ENUM_SERIALIZATION </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_has_cpp_11/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_CPP_11, JSON_HAS_CPP_14, JSON_HAS_CPP_17, JSON_HAS_CPP_20 </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_has_filesystem/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_EXPERIMENTAL_FILESYSTEM, JSON_HAS_FILESYSTEM </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_has_ranges/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_RANGES </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_has_static_rtti/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_STATIC_RTTI </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_has_three_way_comparison/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_THREE_WAY_COMPARISON </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_noexception/ class=md-nav__link> <span class=md-ellipsis> JSON_NOEXCEPTION </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_no_io/ class=md-nav__link> <span class=md-ellipsis> JSON_NO_IO </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_skip_library_version_check/ class=md-nav__link> <span class=md-ellipsis> JSON_SKIP_LIBRARY_VERSION_CHECK </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_skip_unsupported_compiler_check/ class=md-nav__link> <span class=md-ellipsis> JSON_SKIP_UNSUPPORTED_COMPILER_CHECK </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_use_global_udls/ class=md-nav__link> <span class=md-ellipsis> JSON_USE_GLOBAL_UDLS </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_use_implicit_conversions/ class=md-nav__link> <span class=md-ellipsis> JSON_USE_IMPLICIT_CONVERSIONS </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_use_legacy_discarded_value_comparison/ class=md-nav__link> <span class=md-ellipsis> JSON_USE_LEGACY_DISCARDED_VALUE_COMPARISON </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_define_derived_type/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_ONLY_SERIALIZE, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_define_type_intrusive/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_TYPE_INTRUSIVE, NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_TYPE_INTRUSIVE_ONLY_SERIALIZE </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_define_type_non_intrusive/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_define_type_with_names/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_TYPE_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_namespace/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_NAMESPACE </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_namespace_begin/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_NAMESPACE_BEGIN, NLOHMANN_JSON_NAMESPACE_END </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_namespace_no_version/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_NAMESPACE_NO_VERSION </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_serialize_enum/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_SERIALIZE_ENUM </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_serialize_enum_strict/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_SERIALIZE_ENUM_STRICT </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_version_major/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_VERSION_MAJOR, NLOHMANN_JSON_VERSION_MINOR, NLOHMANN_JSON_VERSION_PATCH </span> </a> </li> </ul> </nav> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_5> <div class="md-nav__link md-nav__container"> <a href=../../../community/ class="md-nav__link "> <span class=md-ellipsis> Community </span> </a> <label class="md-nav__link " for=__nav_5 id=__nav_5_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_5_label aria-expanded=false> <label class=md-nav__title for=__nav_5> <span class="md-nav__icon md-icon"></span> Community </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../community/code_of_conduct/ class=md-nav__link> <span class=md-ellipsis> Code of Conduct </span> </a> </li> <li class=md-nav__item> <a href=../../../community/contribution_guidelines/ class=md-nav__link> <span class=md-ellipsis> Contribution Guidelines </span> </a> </li> <li class=md-nav__item> <a href=../../../community/quality_assurance/ class=md-nav__link> <span class=md-ellipsis> Quality assurance </span> </a> </li> <li class=md-nav__item> <a href=../../../community/governance/ class=md-nav__link> <span class=md-ellipsis> Governance </span> </a> </li> <li class=md-nav__item> <a href=../../../community/security_policy/ class=md-nav__link> <span class=md-ellipsis> Security Policy </span> </a> </li> </ul> </nav> </li> </ul> </nav> </div> </div> </div> <div class="md-sidebar md-sidebar--secondary" data-md-component=sidebar data-md-type=toc> <div class=md-sidebar__scrollwrap> <div class=md-sidebar__inner> <nav class="md-nav md-nav--secondary" aria-label="Table of contents"> <label class=md-nav__title for=__toc> <span class="md-nav__icon md-icon"></span> Table of contents </label> <ul class=md-nav__list data-md-component=toc data-md-scrollfix> <li class=md-nav__item> <a href=#template-parameters class=md-nav__link> <span class=md-ellipsis> Template parameters </span> </a> </li> <li class=md-nav__item> <a href=#parameters class=md-nav__link> <span class=md-ellipsis> Parameters </span> </a> </li> <li class=md-nav__item> <a href=#return-value class=md-nav__link> <span class=md-ellipsis> Return value </span> </a> </li> <li class=md-nav__item> <a href=#exception-safety class=md-nav__link> <span class=md-ellipsis> Exception safety </span> </a> </li> <li class=md-nav__item> <a href=#complexity class=md-nav__link> <span class=md-ellipsis> Complexity </span> </a> </li> <li class=md-nav__item> <a href=#notes class=md-nav__link> <span class=md-ellipsis> Notes </span> </a> </li> <li class=md-nav__item> <a href=#examples class=md-nav__link> <span class=md-ellipsis> Examples </span> </a> </li> <li class=md-nav__item> <a href=#see-also class=md-nav__link> <span class=md-ellipsis> See also </span> </a> </li> <li class=md-nav__item> <a href=#version-history class=md-nav__link> <span class=md-ellipsis> Version history </span> </a> </li> </ul> </nav> </div> </div> </div> <div class=md-content data-md-component=content> <article class="md-content__inner md-typeset"> <a href="https://github.com/nlohmann/json/edit/develop/docs/mkdocs/docs/api/basic_json/operator_eq.md" title="Edit this page" class="md-content__button md-icon" rel="edit"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M10 20H6V4h7v5h5v3.1l2-2V8l-6-6H6c-1.1 0-2 .9-2 2v16c0 1.1.9 2 2 2h4zm10.2-7c.1 0 .3.1.4.2l1.3 1.3c.2.2.2.6 0 .8l-1 1-2.1-2.1 1-1c.1-.1.2-.2.4-.2m0 3.9L14.1 23H12v-2.1l6.1-6.1z"/></svg> </a> <a href="https://github.com/nlohmann/json/raw/develop/docs/mkdocs/docs/api/basic_json/operator_eq.md" title="View source of this page" class="md-content__button md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M17 18c.56 0 1 .44 1 1s-.44 1-1 1-1-.44-1-1 .44-1 1-1m0-3c-2.73 0-5.06 1.66-6 4 .94 2.34 3.27 4 6 4s5.06-1.66 6-4c-.94-2.34-3.27-4-6-4m0 6.5a2.5 2.5 0 0 1-2.5-2.5 2.5 2.5 0 0 1 2.5-2.5 2.5 2.5 0 0 1 2.5 2.5 2.5 2.5 0 0 1-2.5 2.5M9.27 20H6V4h7v5h5v4.07c.7.08 1.36.25 2 .49V8l-6-6H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h4.5a8.2 8.2 0 0 1-1.23-2"/></svg> </a> <h1 id=nlohmannbasic_jsonoperator><small>nlohmann::basic_json::</small>operator==<a class=headerlink href=#nlohmannbasic_jsonoperator title="Permanent link">&para;</a></h1> <div class=highlight><pre><span></span><code><span class=c1>// until C++20</span>
 <span class=kt>bool</span><span class=w> </span><span class=k>operator</span><span class=o>==</span><span class=p>(</span><span class=n>const_reference</span><span class=w> </span><span class=n>lhs</span><span class=p>,</span><span class=w> </span><span class=n>const_reference</span><span class=w> </span><span class=n>rhs</span><span class=p>)</span><span class=w> </span><span class=k>noexcept</span><span class=p>;</span><span class=w>   </span><span class=c1>// (1)</span>
 
 <span class=k>template</span><span class=o>&lt;</span><span class=k>typename</span><span class=w> </span><span class=nc>ScalarType</span><span class=o>&gt;</span>
@@ -14,15 +14,15 @@
 <span class=w>    </span><span class=k>template</span><span class=o>&lt;</span><span class=k>typename</span><span class=w> </span><span class=nc>ScalarType</span><span class=o>&gt;</span>
 <span class=w>    </span><span class=kt>bool</span><span class=w> </span><span class=k>operator</span><span class=o>==</span><span class=p>(</span><span class=n>ScalarType</span><span class=w> </span><span class=n>rhs</span><span class=p>)</span><span class=w> </span><span class=k>const</span><span class=w> </span><span class=k>noexcept</span><span class=p>;</span><span class=w>                   </span><span class=c1>// (2)</span>
 <span class=p>};</span>
-</code></pre></div> <ol> <li> <p>Compares two <abbr title="JavaScript Object Notation">JSON</abbr> values for equality according to the following rules:</p> <ul> <li>Two <abbr title="JavaScript Object Notation">JSON</abbr> values are equal if (1) neither value is discarded, or (2) they are of the same type and their stored values are the same according to their respective <code>operator==</code>.</li> <li>Integer and floating-point numbers are automatically converted before comparison.</li> </ul> </li> <li> <p>Compares a <abbr title="JavaScript Object Notation">JSON</abbr> value and a scalar or a scalar and a <abbr title="JavaScript Object Notation">JSON</abbr> value for equality by converting the scalar to a <abbr title="JavaScript Object Notation">JSON</abbr> value and comparing both <abbr title="JavaScript Object Notation">JSON</abbr> values according to 1.</p> </li> </ol> <h2 id=template-parameters>Template parameters<a class=headerlink href=#template-parameters title="Permanent link">&para;</a></h2> <dl> <dt><code>ScalarType</code></dt> <dd>a scalar type according to <code>std::is_scalar&lt;ScalarType&gt;::value</code></dd> </dl> <h2 id=parameters>Parameters<a class=headerlink href=#parameters title="Permanent link">&para;</a></h2> <dl> <dt><code>lhs</code> (in)</dt> <dd>first value to consider </dd> <dt><code>rhs</code> (in)</dt> <dd>second value to consider </dd> </dl> <h2 id=return-value>Return value<a class=headerlink href=#return-value title="Permanent link">&para;</a></h2> <p>whether the values <code>lhs</code>/<code>*this</code> and <code>rhs</code> are equal</p> <h2 id=exception-safety>Exception safety<a class=headerlink href=#exception-safety title="Permanent link">&para;</a></h2> <p>No-throw guarantee: this function never throws exceptions.</p> <h2 id=complexity>Complexity<a class=headerlink href=#complexity title="Permanent link">&para;</a></h2> <p>Linear.</p> <h2 id=notes>Notes<a class=headerlink href=#notes title="Permanent link">&para;</a></h2> <div class="admonition note"> <p class=admonition-title>Comparing special values</p> <ul> <li><code>NaN</code> values are unordered within the domain of numbers. The following comparisons all yield <code class=highlight><span class=nb>false</span></code>:<ol> <li>Comparing a <code>NaN</code> with itself.</li> <li>Comparing a <code>NaN</code> with another <code>NaN</code>.</li> <li>Comparing a <code>NaN</code> and any other number.</li> </ol> </li> <li><abbr title="JavaScript Object Notation">JSON</abbr> <code class=highlight><span class=n>null</span></code> values are all equal.</li> <li>Discarded values never compare equal to themselves.</li> </ul> </div> <div class="admonition note"> <p class=admonition-title>Comparing floating-point numbers</p> <p>Floating-point numbers inside <abbr title="JavaScript Object Notation">JSON</abbr> values numbers are compared with <code>json::number_float_t::operator==</code> which is <code>double::operator==</code> by default. To compare floating-point while respecting an epsilon, an alternative <a href="https://github.com/mariokonrad/marnav/blob/master/include/marnav/math/floatingpoint.hpp#L34-#L39">comparison function</a> could be used, for instance</p> <div class=highlight><pre><span></span><code><span class=k>template</span><span class=o>&lt;</span><span class=k>typename</span><span class=w> </span><span class=nc>T</span><span class=p>,</span><span class=w> </span><span class=k>typename</span><span class=w> </span><span class=o>=</span><span class=w> </span><span class=k>typename</span><span class=w> </span><span class=nc>std</span><span class=o>::</span><span class=n>enable_if</span><span class=o>&lt;</span><span class=n>std</span><span class=o>::</span><span class=n>is_floating_point</span><span class=o>&lt;</span><span class=n>T</span><span class=o>&gt;::</span><span class=n>value</span><span class=p>,</span><span class=w> </span><span class=n>T</span><span class=o>&gt;::</span><span class=n>type</span><span class=o>&gt;</span>
+</code></pre></div> <ol> <li> <p>Compares two <abbr title="JavaScript Object Notation">JSON</abbr> values for equality according to the following rules:</p> <ul> <li>Two <abbr title="JavaScript Object Notation">JSON</abbr> values are equal if (1) neither value is discarded, and (2) they are of the same type and their stored values are the same according to their respective <code>operator==</code>.</li> <li>Integer and floating-point numbers are automatically converted before comparison.</li> </ul> </li> <li> <p>Compares a <abbr title="JavaScript Object Notation">JSON</abbr> value and a scalar or a scalar and a <abbr title="JavaScript Object Notation">JSON</abbr> value for equality by converting the scalar to a <abbr title="JavaScript Object Notation">JSON</abbr> value and comparing both <abbr title="JavaScript Object Notation">JSON</abbr> values according to 1.</p> </li> </ol> <h2 id=template-parameters>Template parameters<a class=headerlink href=#template-parameters title="Permanent link">&para;</a></h2> <dl> <dt><code>ScalarType</code></dt> <dd>a scalar type according to <code>std::is_scalar&lt;ScalarType&gt;::value</code></dd> </dl> <h2 id=parameters>Parameters<a class=headerlink href=#parameters title="Permanent link">&para;</a></h2> <dl> <dt><code>lhs</code> (in)</dt> <dd>first value to consider </dd> <dt><code>rhs</code> (in)</dt> <dd>second value to consider </dd> </dl> <h2 id=return-value>Return value<a class=headerlink href=#return-value title="Permanent link">&para;</a></h2> <p>whether the values <code>lhs</code>/<code>*this</code> and <code>rhs</code> are equal</p> <h2 id=exception-safety>Exception safety<a class=headerlink href=#exception-safety title="Permanent link">&para;</a></h2> <p>No-throw guarantee: this function never throws exceptions.</p> <h2 id=complexity>Complexity<a class=headerlink href=#complexity title="Permanent link">&para;</a></h2> <p>Linear.</p> <h2 id=notes>Notes<a class=headerlink href=#notes title="Permanent link">&para;</a></h2> <div class="admonition note"> <p class=admonition-title>Comparing special values</p> <ul> <li><code>NaN</code> values are unordered within the domain of numbers. The following comparisons all yield <code class=highlight><span class=nb>false</span></code>:<ol> <li>Comparing a <code>NaN</code> with itself.</li> <li>Comparing a <code>NaN</code> with another <code>NaN</code>.</li> <li>Comparing a <code>NaN</code> and any other number.</li> </ol> </li> <li><abbr title="JavaScript Object Notation">JSON</abbr> <code class=highlight><span class=n>null</span></code> values are all equal.</li> <li>Discarded values never compare equal to themselves.</li> </ul> </div> <div class="admonition note"> <p class=admonition-title>Comparing floating-point numbers</p> <p>Floating-point numbers inside <abbr title="JavaScript Object Notation">JSON</abbr> values numbers are compared with <code>json::number_float_t::operator==</code> which is <code>double::operator==</code> by default. To compare floating-point while respecting an epsilon, an alternative <a href="https://github.com/mariokonrad/marnav/blob/master/include/marnav/math/floatingpoint.hpp#L34-#L39">comparison function</a> could be used, for instance</p> <div class=highlight><pre><span></span><code><span class=k>template</span><span class=o>&lt;</span><span class=k>typename</span><span class=w> </span><span class=nc>T</span><span class=p>,</span><span class=w> </span><span class=k>typename</span><span class=w> </span><span class=o>=</span><span class=w> </span><span class=k>typename</span><span class=w> </span><span class=nc>std</span><span class=o>::</span><span class=n>enable_if</span><span class=o>&lt;</span><span class=n>std</span><span class=o>::</span><span class=n>is_floating_point</span><span class=o>&lt;</span><span class=n>T</span><span class=o>&gt;::</span><span class=n>value</span><span class=p>,</span><span class=w> </span><span class=n>T</span><span class=o>&gt;::</span><span class=n>type</span><span class=o>&gt;</span>
 <span class=kr>inline</span><span class=w> </span><span class=kt>bool</span><span class=w> </span><span class=n>is_same</span><span class=p>(</span><span class=n>T</span><span class=w> </span><span class=n>a</span><span class=p>,</span><span class=w> </span><span class=n>T</span><span class=w> </span><span class=n>b</span><span class=p>,</span><span class=w> </span><span class=n>T</span><span class=w> </span><span class=n>epsilon</span><span class=w> </span><span class=o>=</span><span class=w> </span><span class=n>std</span><span class=o>::</span><span class=n>numeric_limits</span><span class=o>&lt;</span><span class=n>T</span><span class=o>&gt;::</span><span class=n>epsilon</span><span class=p>())</span><span class=w> </span><span class=k>noexcept</span>
 <span class=p>{</span>
 <span class=w>    </span><span class=k>return</span><span class=w> </span><span class=n>std</span><span class=o>::</span><span class=n>abs</span><span class=p>(</span><span class=n>a</span><span class=w> </span><span class=o>-</span><span class=w> </span><span class=n>b</span><span class=p>)</span><span class=w> </span><span class=o>&lt;=</span><span class=w> </span><span class=n>epsilon</span><span class=p>;</span>
 <span class=p>}</span>
-</code></pre></div> <p>Or you can self-defined operator equal function like this:</p> <div class=highlight><pre><span></span><code><span class=kt>bool</span><span class=w> </span><span class=nf>my_equal</span><span class=p>(</span><span class=n>const_reference</span><span class=w> </span><span class=n>lhs</span><span class=p>,</span><span class=w> </span><span class=n>const_reference</span><span class=w> </span><span class=n>rhs</span><span class=p>)</span>
+</code></pre></div> <p>Or you can define your own equality function like this:</p> <div class=highlight><pre><span></span><code><span class=kt>bool</span><span class=w> </span><span class=nf>my_equal</span><span class=p>(</span><span class=n>const_reference</span><span class=w> </span><span class=n>lhs</span><span class=p>,</span><span class=w> </span><span class=n>const_reference</span><span class=w> </span><span class=n>rhs</span><span class=p>)</span>
 <span class=p>{</span>
-<span class=w>    </span><span class=k>const</span><span class=w> </span><span class=k>auto</span><span class=w> </span><span class=n>lhs_type</span><span class=w> </span><span class=n>lhs</span><span class=p>.</span><span class=n>type</span><span class=p>();</span>
-<span class=w>    </span><span class=k>const</span><span class=w> </span><span class=k>auto</span><span class=w> </span><span class=n>rhs_type</span><span class=w> </span><span class=n>rhs</span><span class=p>.</span><span class=n>type</span><span class=p>();</span>
+<span class=w>    </span><span class=k>const</span><span class=w> </span><span class=k>auto</span><span class=w> </span><span class=n>lhs_type</span><span class=w> </span><span class=o>=</span><span class=w> </span><span class=n>lhs</span><span class=p>.</span><span class=n>type</span><span class=p>();</span>
+<span class=w>    </span><span class=k>const</span><span class=w> </span><span class=k>auto</span><span class=w> </span><span class=n>rhs_type</span><span class=w> </span><span class=o>=</span><span class=w> </span><span class=n>rhs</span><span class=p>.</span><span class=n>type</span><span class=p>();</span>
 <span class=w>    </span><span class=k>if</span><span class=w> </span><span class=p>(</span><span class=n>lhs_type</span><span class=w> </span><span class=o>==</span><span class=w> </span><span class=n>rhs_type</span><span class=p>)</span>
 <span class=w>    </span><span class=p>{</span>
 <span class=w>        </span><span class=k>switch</span><span class=p>(</span><span class=n>lhs_type</span><span class=p>)</span>
@@ -115,4 +115,4 @@
 <span class=mi>17</span><span class=w> </span><span class=err>==</span><span class=w> </span><span class=kc>null</span><span class=err>p</span><span class=kc>tr</span><span class=w> </span><span class=kc>false</span>
 <span class=s2>&quot;foo&quot;</span><span class=w> </span><span class=err>==</span><span class=w> </span><span class=kc>null</span><span class=err>p</span><span class=kc>tr</span><span class=w> </span><span class=kc>false</span>
 <span class=kc>null</span><span class=w> </span><span class=err>==</span><span class=w> </span><span class=kc>null</span><span class=err>p</span><span class=kc>tr</span><span class=w> </span><span class=kc>true</span>
-</code></pre></div> </details> <h2 id=version-history>Version history<a class=headerlink href=#version-history title="Permanent link">&para;</a></h2> <ol> <li>Added in version 1.0.0. Added C++20 member functions in version 3.11.0.</li> <li>Added in version 1.0.0. Added C++20 member functions in version 3.11.0.</li> </ol> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 23, 2026 11:16:18 UTC">June 23, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
+</code></pre></div> </details> <h2 id=see-also>See also<a class=headerlink href=#see-also title="Permanent link">&para;</a></h2> <ul> <li><a href=../operator_ne/ >operator!=</a> compare for inequality</li> <li><a href=../operator_spaceship/ >operator&lt;=&gt;</a> comparison: 3-way (C++20)</li> </ul> <h2 id=version-history>Version history<a class=headerlink href=#version-history title="Permanent link">&para;</a></h2> <ol> <li>Added in version 1.0.0. Added C++20 member functions in version 3.11.0.</li> <li>Added in version 1.0.0. Added C++20 member functions in version 3.11.0.</li> </ol> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 29, 2026 20:15:18 UTC">June 29, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
diff --git a/api/basic_json/operator_ge/index.html b/api/basic_json/operator_ge/index.html
index e45d0c2..1196bf2 100644
--- a/api/basic_json/operator_ge/index.html
+++ b/api/basic_json/operator_ge/index.html
@@ -6,7 +6,7 @@
 
 <span class=k>template</span><span class=o>&lt;</span><span class=k>typename</span><span class=w> </span><span class=nc>ScalarType</span><span class=o>&gt;</span>
 <span class=kt>bool</span><span class=w> </span><span class=k>operator</span><span class=o>&gt;=</span><span class=p>(</span><span class=n>ScalarType</span><span class=w> </span><span class=n>lhs</span><span class=p>,</span><span class=w> </span><span class=k>const</span><span class=w> </span><span class=n>const_reference</span><span class=w> </span><span class=n>rhs</span><span class=p>)</span><span class=w> </span><span class=k>noexcept</span><span class=p>;</span><span class=w>  </span><span class=c1>// (2)</span>
-</code></pre></div> <ol> <li> <p>Compares whether one <abbr title="JavaScript Object Notation">JSON</abbr> value <code>lhs</code> is greater than or equal to another <abbr title="JavaScript Object Notation">JSON</abbr> value <code>rhs</code> according to the following rules:</p> <ul> <li>The comparison always yields <code class=highlight><span class=nb>false</span></code> if (1) either operand is discarded, or (2) either operand is <code>NaN</code> and the other operand is either <code>NaN</code> or any other number.</li> <li>Otherwise, returns the result of <code class=highlight><span class=o>!</span><span class=p>(</span><span class=n>lhs</span><span class=w> </span><span class=o>&lt;</span><span class=w> </span><span class=n>rhs</span><span class=p>)</span></code> (see <a href=../operator_lt/ ><strong>operator&lt;</strong></a>).</li> </ul> </li> <li> <p>Compares whether a <abbr title="JavaScript Object Notation">JSON</abbr> value is greater than or equal to a scalar or a scalar is greater than or equal to a <abbr title="JavaScript Object Notation">JSON</abbr> value by converting the scalar to a <abbr title="JavaScript Object Notation">JSON</abbr> value and comparing both <abbr title="JavaScript Object Notation">JSON</abbr> values according to 1.</p> </li> </ol> <h2 id=template-parameters>Template parameters<a class=headerlink href=#template-parameters title="Permanent link">&para;</a></h2> <dl> <dt><code>ScalarType</code></dt> <dd>a scalar type according to <code>std::is_scalar&lt;ScalarType&gt;::value</code></dd> </dl> <h2 id=parameters>Parameters<a class=headerlink href=#parameters title="Permanent link">&para;</a></h2> <dl> <dt><code>lhs</code> (in)</dt> <dd>first value to consider </dd> <dt><code>rhs</code> (in)</dt> <dd>second value to consider </dd> </dl> <h2 id=return-value>Return value<a class=headerlink href=#return-value title="Permanent link">&para;</a></h2> <p>whether <code>lhs</code> is less than or equal to <code>rhs</code></p> <h2 id=exception-safety>Exception safety<a class=headerlink href=#exception-safety title="Permanent link">&para;</a></h2> <p>No-throw guarantee: this function never throws exceptions.</p> <h2 id=complexity>Complexity<a class=headerlink href=#complexity title="Permanent link">&para;</a></h2> <p>Linear.</p> <h2 id=notes>Notes<a class=headerlink href=#notes title="Permanent link">&para;</a></h2> <div class="admonition note"> <p class=admonition-title>Comparing <code>NaN</code></p> <p><code>NaN</code> values are unordered within the domain of numbers. The following comparisons all yield <code class=highlight><span class=nb>false</span></code>: 1. Comparing a <code>NaN</code> with itself. 2. Comparing a <code>NaN</code> with another <code>NaN</code>. 3. Comparing a <code>NaN</code> and any other number.</p> </div> <div class="admonition note"> <p class=admonition-title>Operator overload resolution</p> <p>Since C++20 overload resolution will consider the <em>rewritten candidate</em> generated from <a href=../operator_spaceship/ ><code>operator&lt;=&gt;</code></a>.</p> </div> <h2 id=examples>Examples<a class=headerlink href=#examples title="Permanent link">&para;</a></h2> <details class=example> <summary>Example</summary> <p>The example demonstrates comparing several <abbr title="JavaScript Object Notation">JSON</abbr> types.</p> <div class=highlight><pre><span></span><code><span class=cp>#include</span><span class=w> </span><span class=cpf>&lt;iostream&gt;</span>
+</code></pre></div> <ol> <li> <p>Compares whether one <abbr title="JavaScript Object Notation">JSON</abbr> value <code>lhs</code> is greater than or equal to another <abbr title="JavaScript Object Notation">JSON</abbr> value <code>rhs</code> according to the following rules:</p> <ul> <li>The comparison always yields <code class=highlight><span class=nb>false</span></code> if (1) either operand is discarded, or (2) either operand is <code>NaN</code> and the other operand is either <code>NaN</code> or any other number.</li> <li>Otherwise, returns the result of <code class=highlight><span class=o>!</span><span class=p>(</span><span class=n>lhs</span><span class=w> </span><span class=o>&lt;</span><span class=w> </span><span class=n>rhs</span><span class=p>)</span></code> (see <a href=../operator_lt/ ><strong>operator&lt;</strong></a>).</li> </ul> </li> <li> <p>Compares whether a <abbr title="JavaScript Object Notation">JSON</abbr> value is greater than or equal to a scalar or a scalar is greater than or equal to a <abbr title="JavaScript Object Notation">JSON</abbr> value by converting the scalar to a <abbr title="JavaScript Object Notation">JSON</abbr> value and comparing both <abbr title="JavaScript Object Notation">JSON</abbr> values according to 1.</p> </li> </ol> <h2 id=template-parameters>Template parameters<a class=headerlink href=#template-parameters title="Permanent link">&para;</a></h2> <dl> <dt><code>ScalarType</code></dt> <dd>a scalar type according to <code>std::is_scalar&lt;ScalarType&gt;::value</code></dd> </dl> <h2 id=parameters>Parameters<a class=headerlink href=#parameters title="Permanent link">&para;</a></h2> <dl> <dt><code>lhs</code> (in)</dt> <dd>first value to consider </dd> <dt><code>rhs</code> (in)</dt> <dd>second value to consider </dd> </dl> <h2 id=return-value>Return value<a class=headerlink href=#return-value title="Permanent link">&para;</a></h2> <p>whether <code>lhs</code> is greater than or equal to <code>rhs</code></p> <h2 id=exception-safety>Exception safety<a class=headerlink href=#exception-safety title="Permanent link">&para;</a></h2> <p>No-throw guarantee: this function never throws exceptions.</p> <h2 id=complexity>Complexity<a class=headerlink href=#complexity title="Permanent link">&para;</a></h2> <p>Linear.</p> <h2 id=notes>Notes<a class=headerlink href=#notes title="Permanent link">&para;</a></h2> <div class="admonition note"> <p class=admonition-title>Comparing <code>NaN</code></p> <p><code>NaN</code> values are unordered within the domain of numbers. The following comparisons all yield <code class=highlight><span class=nb>false</span></code>: 1. Comparing a <code>NaN</code> with itself. 2. Comparing a <code>NaN</code> with another <code>NaN</code>. 3. Comparing a <code>NaN</code> and any other number.</p> </div> <div class="admonition note"> <p class=admonition-title>Operator overload resolution</p> <p>Since C++20 overload resolution will consider the <em>rewritten candidate</em> generated from <a href=../operator_spaceship/ ><code>operator&lt;=&gt;</code></a>.</p> </div> <h2 id=examples>Examples<a class=headerlink href=#examples title="Permanent link">&para;</a></h2> <details class=example> <summary>Example</summary> <p>The example demonstrates comparing several <abbr title="JavaScript Object Notation">JSON</abbr> types.</p> <div class=highlight><pre><span></span><code><span class=cp>#include</span><span class=w> </span><span class=cpf>&lt;iostream&gt;</span>
 <span class=cp>#include</span><span class=w> </span><span class=cpf>&lt;nlohmann/json.hpp&gt;</span>
 
 <span class=k>using</span><span class=w> </span><span class=n>json</span><span class=w> </span><span class=o>=</span><span class=w> </span><span class=n>nlohmann</span><span class=o>::</span><span class=n>json</span><span class=p>;</span>
@@ -34,4 +34,4 @@
 <span class=p>{</span><span class=nt>&quot;A&quot;</span><span class=p>:</span><span class=s2>&quot;a&quot;</span><span class=p>,</span><span class=nt>&quot;B&quot;</span><span class=p>:</span><span class=s2>&quot;b&quot;</span><span class=p>}</span><span class=w> </span><span class=err>&gt;=</span><span class=w> </span><span class=p>{</span><span class=nt>&quot;A&quot;</span><span class=p>:</span><span class=s2>&quot;a&quot;</span><span class=p>,</span><span class=nt>&quot;B&quot;</span><span class=p>:</span><span class=s2>&quot;b&quot;</span><span class=p>}</span><span class=w> </span><span class=kc>true</span>
 <span class=mi>17</span><span class=w> </span><span class=err>&gt;=</span><span class=w> </span><span class=mf>17.0000000000001</span><span class=w> </span><span class=kc>false</span>
 <span class=s2>&quot;foo&quot;</span><span class=w> </span><span class=err>&gt;=</span><span class=w> </span><span class=s2>&quot;bar&quot;</span><span class=w> </span><span class=kc>true</span>
-</code></pre></div> </details> <h2 id=see-also>See also<a class=headerlink href=#see-also title="Permanent link">&para;</a></h2> <ul> <li><a href=../operator_spaceship/ ><strong>operator&lt;=&gt;</strong></a> comparison: 3-way</li> </ul> <h2 id=version-history>Version history<a class=headerlink href=#version-history title="Permanent link">&para;</a></h2> <ol> <li>Added in version 1.0.0. Conditionally removed since C++20 in version 3.11.0.</li> <li>Added in version 1.0.0. Conditionally removed since C++20 in version 3.11.0.</li> </ol> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 23, 2026 11:16:18 UTC">June 23, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
+</code></pre></div> </details> <h2 id=see-also>See also<a class=headerlink href=#see-also title="Permanent link">&para;</a></h2> <ul> <li><a href=../operator_spaceship/ ><strong>operator&lt;=&gt;</strong></a> comparison: 3-way</li> </ul> <h2 id=version-history>Version history<a class=headerlink href=#version-history title="Permanent link">&para;</a></h2> <ol> <li>Added in version 1.0.0. Conditionally removed since C++20 in version 3.11.0.</li> <li>Added in version 1.0.0. Conditionally removed since C++20 in version 3.11.0.</li> </ol> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 29, 2026 20:15:18 UTC">June 29, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
diff --git a/api/basic_json/operator_gt/index.html b/api/basic_json/operator_gt/index.html
index 640d0ab..7ea459b 100644
--- a/api/basic_json/operator_gt/index.html
+++ b/api/basic_json/operator_gt/index.html
@@ -34,4 +34,4 @@
 <span class=p>{</span><span class=nt>&quot;A&quot;</span><span class=p>:</span><span class=s2>&quot;a&quot;</span><span class=p>,</span><span class=nt>&quot;B&quot;</span><span class=p>:</span><span class=s2>&quot;b&quot;</span><span class=p>}</span><span class=w> </span><span class=err>&gt;</span><span class=w> </span><span class=p>{</span><span class=nt>&quot;A&quot;</span><span class=p>:</span><span class=s2>&quot;a&quot;</span><span class=p>,</span><span class=nt>&quot;B&quot;</span><span class=p>:</span><span class=s2>&quot;b&quot;</span><span class=p>}</span><span class=w> </span><span class=kc>false</span>
 <span class=mi>17</span><span class=w> </span><span class=err>&gt;</span><span class=w> </span><span class=mf>17.0000000000001</span><span class=w> </span><span class=kc>false</span>
 <span class=s2>&quot;foo&quot;</span><span class=w> </span><span class=err>&gt;</span><span class=w> </span><span class=s2>&quot;bar&quot;</span><span class=w> </span><span class=kc>true</span>
-</code></pre></div> </details> <h2 id=see-also>See also<a class=headerlink href=#see-also title="Permanent link">&para;</a></h2> <ul> <li><a href=../operator_spaceship/ ><strong>operator&lt;=&gt;</strong></a> comparison: 3-way</li> </ul> <h2 id=version-history>Version history<a class=headerlink href=#version-history title="Permanent link">&para;</a></h2> <ol> <li>Added in version 1.0.0. Conditionally removed since C++20 in version 3.11.0.</li> <li>Added in version 1.0.0. Conditionally removed since C++20 in version 3.11.0.</li> </ol> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 23, 2026 11:16:18 UTC">June 23, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
+</code></pre></div> </details> <h2 id=see-also>See also<a class=headerlink href=#see-also title="Permanent link">&para;</a></h2> <ul> <li><a href=../operator_spaceship/ ><strong>operator&lt;=&gt;</strong></a> comparison: 3-way</li> </ul> <h2 id=version-history>Version history<a class=headerlink href=#version-history title="Permanent link">&para;</a></h2> <ol> <li>Added in version 1.0.0. Conditionally removed since C++20 in version 3.11.0.</li> <li>Added in version 1.0.0. Conditionally removed since C++20 in version 3.11.0.</li> </ol> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 29, 2026 20:15:18 UTC">June 29, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
diff --git a/api/basic_json/operator_le/index.html b/api/basic_json/operator_le/index.html
index 418cc92..6946332 100644
--- a/api/basic_json/operator_le/index.html
+++ b/api/basic_json/operator_le/index.html
@@ -34,4 +34,4 @@
 <span class=p>{</span><span class=nt>&quot;A&quot;</span><span class=p>:</span><span class=s2>&quot;a&quot;</span><span class=p>,</span><span class=nt>&quot;B&quot;</span><span class=p>:</span><span class=s2>&quot;b&quot;</span><span class=p>}</span><span class=w> </span><span class=err>&lt;=</span><span class=w> </span><span class=p>{</span><span class=nt>&quot;A&quot;</span><span class=p>:</span><span class=s2>&quot;a&quot;</span><span class=p>,</span><span class=nt>&quot;B&quot;</span><span class=p>:</span><span class=s2>&quot;b&quot;</span><span class=p>}</span><span class=w> </span><span class=kc>true</span>
 <span class=mi>17</span><span class=w> </span><span class=err>&lt;=</span><span class=w> </span><span class=mf>17.0000000000001</span><span class=w> </span><span class=kc>true</span>
 <span class=s2>&quot;foo&quot;</span><span class=w> </span><span class=err>&lt;=</span><span class=w> </span><span class=s2>&quot;bar&quot;</span><span class=w> </span><span class=kc>false</span>
-</code></pre></div> </details> <h2 id=see-also>See also<a class=headerlink href=#see-also title="Permanent link">&para;</a></h2> <ul> <li><a href=../operator_spaceship/ ><strong>operator&lt;=&gt;</strong></a> comparison: 3-way</li> </ul> <h2 id=version-history>Version history<a class=headerlink href=#version-history title="Permanent link">&para;</a></h2> <ol> <li>Added in version 1.0.0. Conditionally removed since C++20 in version 3.11.0.</li> <li>Added in version 1.0.0. Conditionally removed since C++20 in version 3.11.0.</li> </ol> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 23, 2026 11:16:18 UTC">June 23, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
+</code></pre></div> </details> <h2 id=see-also>See also<a class=headerlink href=#see-also title="Permanent link">&para;</a></h2> <ul> <li><a href=../operator_spaceship/ ><strong>operator&lt;=&gt;</strong></a> comparison: 3-way</li> </ul> <h2 id=version-history>Version history<a class=headerlink href=#version-history title="Permanent link">&para;</a></h2> <ol> <li>Added in version 1.0.0. Conditionally removed since C++20 in version 3.11.0.</li> <li>Added in version 1.0.0. Conditionally removed since C++20 in version 3.11.0.</li> </ol> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 29, 2026 20:15:18 UTC">June 29, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
diff --git a/api/basic_json/operator_lt/index.html b/api/basic_json/operator_lt/index.html
index 7f40770..d1b42bc 100644
--- a/api/basic_json/operator_lt/index.html
+++ b/api/basic_json/operator_lt/index.html
@@ -34,4 +34,4 @@
 <span class=p>{</span><span class=nt>&quot;A&quot;</span><span class=p>:</span><span class=s2>&quot;a&quot;</span><span class=p>,</span><span class=nt>&quot;B&quot;</span><span class=p>:</span><span class=s2>&quot;b&quot;</span><span class=p>}</span><span class=w> </span><span class=err>==</span><span class=w> </span><span class=p>{</span><span class=nt>&quot;A&quot;</span><span class=p>:</span><span class=s2>&quot;a&quot;</span><span class=p>,</span><span class=nt>&quot;B&quot;</span><span class=p>:</span><span class=s2>&quot;b&quot;</span><span class=p>}</span><span class=w> </span><span class=kc>false</span>
 <span class=mi>17</span><span class=w> </span><span class=err>==</span><span class=w> </span><span class=mf>17.0000000000001</span><span class=w> </span><span class=kc>true</span>
 <span class=s2>&quot;foo&quot;</span><span class=w> </span><span class=err>==</span><span class=w> </span><span class=s2>&quot;bar&quot;</span><span class=w> </span><span class=kc>false</span>
-</code></pre></div> </details> <h2 id=see-also>See also<a class=headerlink href=#see-also title="Permanent link">&para;</a></h2> <ul> <li><a href=../operator_spaceship/ ><strong>operator&lt;=&gt;</strong></a> comparison: 3-way</li> </ul> <h2 id=version-history>Version history<a class=headerlink href=#version-history title="Permanent link">&para;</a></h2> <ol> <li>Added in version 1.0.0. Conditionally removed since C++20 in version 3.11.0.</li> <li>Added in version 1.0.0. Conditionally removed since C++20 in version 3.11.0.</li> </ol> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 23, 2026 11:16:18 UTC">June 23, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
+</code></pre></div> </details> <h2 id=see-also>See also<a class=headerlink href=#see-also title="Permanent link">&para;</a></h2> <ul> <li><a href=../operator_spaceship/ ><strong>operator&lt;=&gt;</strong></a> comparison: 3-way</li> </ul> <h2 id=version-history>Version history<a class=headerlink href=#version-history title="Permanent link">&para;</a></h2> <ol> <li>Added in version 1.0.0. Conditionally removed since C++20 in version 3.11.0.</li> <li>Added in version 1.0.0. Conditionally removed since C++20 in version 3.11.0.</li> </ol> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 29, 2026 20:15:18 UTC">June 29, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
diff --git a/api/basic_json/operator_ne/index.html b/api/basic_json/operator_ne/index.html
index f50463b..fcd1b29 100644
--- a/api/basic_json/operator_ne/index.html
+++ b/api/basic_json/operator_ne/index.html
@@ -69,4 +69,4 @@
 <span class=mi>17</span><span class=w> </span><span class=err>!=</span><span class=w> </span><span class=kc>null</span><span class=err>p</span><span class=kc>tr</span><span class=w> </span><span class=kc>true</span>
 <span class=s2>&quot;foo&quot;</span><span class=w> </span><span class=err>!=</span><span class=w> </span><span class=kc>null</span><span class=err>p</span><span class=kc>tr</span><span class=w> </span><span class=kc>true</span>
 <span class=kc>null</span><span class=w> </span><span class=err>!=</span><span class=w> </span><span class=kc>null</span><span class=err>p</span><span class=kc>tr</span><span class=w> </span><span class=kc>false</span>
-</code></pre></div> </details> <h2 id=version-history>Version history<a class=headerlink href=#version-history title="Permanent link">&para;</a></h2> <ol> <li>Added in version 1.0.0. Added C++20 member functions in version 3.11.0.</li> <li>Added in version 1.0.0. Added C++20 member functions in version 3.11.0.</li> </ol> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 23, 2026 11:16:18 UTC">June 23, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
+</code></pre></div> </details> <h2 id=version-history>Version history<a class=headerlink href=#version-history title="Permanent link">&para;</a></h2> <ol> <li>Added in version 1.0.0. Added C++20 member functions in version 3.11.0.</li> <li>Added in version 1.0.0. Added C++20 member functions in version 3.11.0.</li> </ol> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 29, 2026 20:15:18 UTC">June 29, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
diff --git a/api/basic_json/operator_spaceship/index.html b/api/basic_json/operator_spaceship/index.html
index aac4739..c7f84af 100644
--- a/api/basic_json/operator_spaceship/index.html
+++ b/api/basic_json/operator_spaceship/index.html
@@ -93,4 +93,4 @@
 <span class=mi>17</span><span class=w> </span><span class=err>&lt;=&gt;</span><span class=w> </span><span class=mf>17.000000</span><span class=w> </span><span class=p>:</span><span class=err>=</span><span class=w> </span><span class=err>equivale</span><span class=kc>nt</span>
 <span class=mi>17</span><span class=w> </span><span class=err>&lt;=&gt;</span><span class=w> </span><span class=kc>nan</span><span class=w> </span><span class=p>:</span><span class=err>=</span><span class=w> </span><span class=err>u</span><span class=kc>n</span><span class=err>ordered</span>
 <span class=s2>&quot;17&quot;</span><span class=w> </span><span class=err>&lt;=&gt;</span><span class=w> </span><span class=mi>17</span><span class=w> </span><span class=p>:</span><span class=err>=</span><span class=w> </span><span class=err>grea</span><span class=kc>ter</span>
-</code></pre></div> </details> <h2 id=see-also>See also<a class=headerlink href=#see-also title="Permanent link">&para;</a></h2> <ul> <li><a href=../operator_eq/ ><strong>operator==</strong></a> - comparison: equal</li> <li><a href=../operator_ne/ ><strong>operator!=</strong></a> - comparison: not equal</li> <li><a href=../operator_lt/ ><strong>operator&lt;</strong></a> - comparison: less than</li> <li><a href=../operator_le/ ><strong>operator&lt;=</strong></a> - comparison: less than or equal</li> <li><a href=../operator_gt/ ><strong>operator&gt;</strong></a> - comparison: greater than</li> <li><a href=../operator_ge/ ><strong>operator&gt;=</strong></a> - comparison: greater than or equal</li> </ul> <h2 id=version-history>Version history<a class=headerlink href=#version-history title="Permanent link">&para;</a></h2> <ol> <li>Added in version 3.11.0.</li> <li>Added in version 3.11.0.</li> </ol> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 23, 2026 11:16:18 UTC">June 23, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
+</code></pre></div> </details> <h2 id=see-also>See also<a class=headerlink href=#see-also title="Permanent link">&para;</a></h2> <ul> <li><a href=../operator_eq/ ><strong>operator==</strong></a> - comparison: equal</li> <li><a href=../operator_ne/ ><strong>operator!=</strong></a> - comparison: not equal</li> <li><a href=../operator_lt/ ><strong>operator&lt;</strong></a> - comparison: less than</li> <li><a href=../operator_le/ ><strong>operator&lt;=</strong></a> - comparison: less than or equal</li> <li><a href=../operator_gt/ ><strong>operator&gt;</strong></a> - comparison: greater than</li> <li><a href=../operator_ge/ ><strong>operator&gt;=</strong></a> - comparison: greater than or equal</li> </ul> <h2 id=version-history>Version history<a class=headerlink href=#version-history title="Permanent link">&para;</a></h2> <ol> <li>Added in version 3.11.0.</li> <li>Added in version 3.11.0.</li> </ol> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 29, 2026 20:15:18 UTC">June 29, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
diff --git a/api/basic_json/operator_value_t/index.html b/api/basic_json/operator_value_t/index.html
index 8a2c369..a2fbd6a 100644
--- a/api/basic_json/operator_value_t/index.html
+++ b/api/basic_json/operator_value_t/index.html
@@ -45,4 +45,4 @@
 <span class=kc>true</span>
 <span class=kc>true</span>
 <span class=kc>true</span>
-</code></pre></div> </details> <h2 id=version-history>Version history<a class=headerlink href=#version-history title="Permanent link">&para;</a></h2> <ul> <li>Added in version 1.0.0.</li> <li>Added unsigned integer type in version 2.0.0.</li> <li>Added binary type in version 3.8.0.</li> </ul> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 23, 2026 11:16:18 UTC">June 23, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
+</code></pre></div> </details> <h2 id=version-history>Version history<a class=headerlink href=#version-history title="Permanent link">&para;</a></h2> <ul> <li>Added in version 1.0.0.</li> <li>Added unsigned integer type in version 2.0.0.</li> <li>Added binary type in version 3.8.0.</li> </ul> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 29, 2026 20:15:18 UTC">June 29, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
diff --git a/api/basic_json/other_error/index.html b/api/basic_json/other_error/index.html
index 49040eb..0dbcfad 100644
--- a/api/basic_json/other_error/index.html
+++ b/api/basic_json/other_error/index.html
@@ -59,4 +59,4 @@
 <span class=p>}</span>
 </code></pre></div> <p>Output:</p> <div class=highlight><pre><span></span><code><span class=err>message</span><span class=p>:</span><span class=w> </span><span class=p>[</span><span class=err>jso</span><span class=kc>n</span><span class=err>.excep</span><span class=kc>t</span><span class=err>io</span><span class=kc>n</span><span class=err>.o</span><span class=kc>t</span><span class=err>her_error.</span><span class=mi>501</span><span class=p>]</span><span class=w> </span><span class=err>u</span><span class=kc>nsu</span><span class=err>ccess</span><span class=kc>ful</span><span class=p>:</span><span class=w> </span><span class=p>{</span><span class=nt>&quot;op&quot;</span><span class=p>:</span><span class=s2>&quot;test&quot;</span><span class=p>,</span><span class=nt>&quot;path&quot;</span><span class=p>:</span><span class=s2>&quot;/best_biscuit/name&quot;</span><span class=p>,</span><span class=nt>&quot;value&quot;</span><span class=p>:</span><span class=s2>&quot;Choco Leibniz&quot;</span><span class=p>}</span>
 <span class=err>excep</span><span class=kc>t</span><span class=err>io</span><span class=kc>n</span><span class=w> </span><span class=err>id</span><span class=p>:</span><span class=w> </span><span class=mi>501</span>
-</code></pre></div> </details> <h2 id=see-also>See also<a class=headerlink href=#see-also title="Permanent link">&para;</a></h2> <ul> <li><a href=../../../home/exceptions/#further-exceptions>List of other errors</a></li> <li><a href=../parse_error/ ><code>parse_error</code></a> for exceptions indicating a parse error</li> <li><a href=../invalid_iterator/ ><code>invalid_iterator</code></a> for exceptions indicating errors with iterators</li> <li><a href=../type_error/ ><code>type_error</code></a> for exceptions indicating executing a member function with a wrong type</li> <li><a href=../out_of_range/ ><code>out_of_range</code></a> for exceptions indicating access out of the defined range</li> </ul> <h2 id=version-history>Version history<a class=headerlink href=#version-history title="Permanent link">&para;</a></h2> <ul> <li>Since version 3.0.0.</li> </ul> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 23, 2026 11:16:18 UTC">June 23, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
+</code></pre></div> </details> <h2 id=see-also>See also<a class=headerlink href=#see-also title="Permanent link">&para;</a></h2> <ul> <li><a href=../exception/ ><code>exception</code></a> for the base class of all exceptions thrown by the library</li> <li><a href=../../../home/exceptions/#further-exceptions>List of other errors</a></li> <li><a href=../parse_error/ ><code>parse_error</code></a> for exceptions indicating a parse error</li> <li><a href=../invalid_iterator/ ><code>invalid_iterator</code></a> for exceptions indicating errors with iterators</li> <li><a href=../type_error/ ><code>type_error</code></a> for exceptions indicating executing a member function with a wrong type</li> <li><a href=../out_of_range/ ><code>out_of_range</code></a> for exceptions indicating access out of the defined range</li> </ul> <h2 id=version-history>Version history<a class=headerlink href=#version-history title="Permanent link">&para;</a></h2> <ul> <li>Since version 3.0.0.</li> </ul> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 29, 2026 20:15:18 UTC">June 29, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
diff --git a/api/basic_json/out_of_range/index.html b/api/basic_json/out_of_range/index.html
index 4e8bf5f..2f9848f 100644
--- a/api/basic_json/out_of_range/index.html
+++ b/api/basic_json/out_of_range/index.html
@@ -49,4 +49,4 @@
 <span class=p>}</span>
 </code></pre></div> <p>Output:</p> <div class=highlight><pre><span></span><code><span class=err>message</span><span class=p>:</span><span class=w> </span><span class=p>[</span><span class=err>jso</span><span class=kc>n</span><span class=err>.excep</span><span class=kc>t</span><span class=err>io</span><span class=kc>n</span><span class=err>.ou</span><span class=kc>t</span><span class=err>_o</span><span class=kc>f</span><span class=err>_ra</span><span class=kc>n</span><span class=err>ge.</span><span class=mi>401</span><span class=p>]</span><span class=w> </span><span class=err>array</span><span class=w> </span><span class=err>i</span><span class=kc>n</span><span class=err>dex</span><span class=w> </span><span class=mi>4</span><span class=w> </span><span class=err>is</span><span class=w> </span><span class=err>ou</span><span class=kc>t</span><span class=w> </span><span class=err>o</span><span class=kc>f</span><span class=w> </span><span class=err>ra</span><span class=kc>n</span><span class=err>ge</span>
 <span class=err>excep</span><span class=kc>t</span><span class=err>io</span><span class=kc>n</span><span class=w> </span><span class=err>id</span><span class=p>:</span><span class=w> </span><span class=mi>401</span>
-</code></pre></div> </details> <h2 id=see-also>See also<a class=headerlink href=#see-also title="Permanent link">&para;</a></h2> <ul> <li><a href=../../../home/exceptions/#out-of-range>List of out-of-range errors</a></li> <li><a href=../parse_error/ ><code>parse_error</code></a> for exceptions indicating a parse error</li> <li><a href=../invalid_iterator/ ><code>invalid_iterator</code></a> for exceptions indicating errors with iterators</li> <li><a href=../type_error/ ><code>type_error</code></a> for exceptions indicating executing a member function with a wrong type</li> <li><a href=../other_error/ ><code>other_error</code></a> for exceptions indicating other library errors</li> </ul> <h2 id=version-history>Version history<a class=headerlink href=#version-history title="Permanent link">&para;</a></h2> <ul> <li>Since version 3.0.0.</li> </ul> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 23, 2026 11:16:18 UTC">June 23, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
+</code></pre></div> </details> <h2 id=see-also>See also<a class=headerlink href=#see-also title="Permanent link">&para;</a></h2> <ul> <li><a href=../exception/ ><code>exception</code></a> for the base class of all exceptions thrown by the library</li> <li><a href=../../../home/exceptions/#out-of-range>List of out-of-range errors</a></li> <li><a href=../parse_error/ ><code>parse_error</code></a> for exceptions indicating a parse error</li> <li><a href=../invalid_iterator/ ><code>invalid_iterator</code></a> for exceptions indicating errors with iterators</li> <li><a href=../type_error/ ><code>type_error</code></a> for exceptions indicating executing a member function with a wrong type</li> <li><a href=../other_error/ ><code>other_error</code></a> for exceptions indicating other library errors</li> </ul> <h2 id=version-history>Version history<a class=headerlink href=#version-history title="Permanent link">&para;</a></h2> <ul> <li>Since version 3.0.0.</li> </ul> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 29, 2026 20:15:18 UTC">June 29, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
diff --git a/api/basic_json/parse/index.html b/api/basic_json/parse/index.html
index 93e68b4..883cb22 100644
--- a/api/basic_json/parse/index.html
+++ b/api/basic_json/parse/index.html
@@ -13,7 +13,7 @@
 <span class=w>                        </span><span class=k>const</span><span class=w> </span><span class=kt>bool</span><span class=w> </span><span class=n>allow_exceptions</span><span class=w> </span><span class=o>=</span><span class=w> </span><span class=nb>true</span><span class=p>,</span>
 <span class=w>                        </span><span class=k>const</span><span class=w> </span><span class=kt>bool</span><span class=w> </span><span class=n>ignore_comments</span><span class=w> </span><span class=o>=</span><span class=w> </span><span class=nb>false</span><span class=p>,</span>
 <span class=w>                        </span><span class=k>const</span><span class=w> </span><span class=kt>bool</span><span class=w> </span><span class=n>ignore_trailing_commas</span><span class=w> </span><span class=o>=</span><span class=w> </span><span class=nb>false</span><span class=p>);</span>
-</code></pre></div> <ol> <li>Deserialize from a compatible input.</li> <li> <p>Deserialize from a pair of character iterators</p> <p>The <code>value_type</code> of the iterator must be an integral type with size of 1, 2, or 4 bytes, which will be interpreted respectively as <abbr title="Unicode Transformation Format">UTF</abbr>-8, <abbr title="Unicode Transformation Format">UTF</abbr>-16, and <abbr title="Unicode Transformation Format">UTF</abbr>-32.</p> </li> </ol> <h2 id=template-parameters>Template parameters<a class=headerlink href=#template-parameters title="Permanent link">&para;</a></h2> <dl> <dt><code>InputType</code></dt> <dd> <p>A compatible input, for instance:</p> <ul> <li>an <code>std::istream</code> object</li> <li>a <code>FILE</code> pointer (throws if null)</li> <li>a C-style array of characters</li> <li>a pointer to a null-terminated string of single byte characters (throws if null)</li> <li>a <code>std::string</code></li> <li>an object <code>obj</code> for which <code>begin(obj)</code> and <code>end(obj)</code> produces a valid pair of iterators.</li> </ul> </dd> <dt><code>IteratorType</code></dt> <dd> <p>a compatible iterator type, for instance.</p> <ul> <li>a pair of <code>std::string::iterator</code> or <code>std::vector&lt;std::uint8_t&gt;::iterator</code></li> <li>a pair of pointers such as <code>ptr</code> and <code>ptr + len</code></li> </ul> </dd> </dl> <h2 id=parameters>Parameters<a class=headerlink href=#parameters title="Permanent link">&para;</a></h2> <dl> <dt><code>i</code> (in)</dt> <dd>Input to parse from.</dd> <dt><code>cb</code> (in)</dt> <dd>a parser callback function of type <a href=../parser_callback_t/ ><code>parser_callback_t</code></a> which is used to control the deserialization by filtering unwanted values (optional)</dd> <dt><code>allow_exceptions</code> (in)</dt> <dd>whether to throw exceptions in case of a parse error (optional, <code class=highlight><span class=nb>true</span></code> by default)</dd> <dt><code>ignore_comments</code> (in)</dt> <dd>whether comments should be ignored and treated like whitespace (<code class=highlight><span class=nb>true</span></code>) or yield a parse error (<code class=highlight><span class=nb>false</span></code>); (optional, <code class=highlight><span class=nb>false</span></code> by default)</dd> <dt><code>ignore_trailing_commas</code> (in)</dt> <dd>whether trailing commas in arrays or objects should be ignored and treated like whitespace (<code class=highlight><span class=nb>true</span></code>) or yield a parse error (<code class=highlight><span class=nb>false</span></code>); (optional, <code class=highlight><span class=nb>false</span></code> by default)</dd> <dt><code>first</code> (in)</dt> <dd>iterator to the start of a character range</dd> <dt><code>last</code> (in)</dt> <dd>iterator to the end of a character range</dd> </dl> <h2 id=return-value>Return value<a class=headerlink href=#return-value title="Permanent link">&para;</a></h2> <p>Deserialized <abbr title="JavaScript Object Notation">JSON</abbr> value; in case of a parse error and <code>allow_exceptions</code> set to <code class=highlight><span class=nb>false</span></code>, the return value will be <code>value_t::discarded</code>. The latter can be checked with <a href=../is_discarded/ ><code>is_discarded</code></a>.</p> <h2 id=exception-safety>Exception safety<a class=headerlink href=#exception-safety title="Permanent link">&para;</a></h2> <p>Strong guarantee: if an exception is thrown, there are no changes in the <abbr title="JavaScript Object Notation">JSON</abbr> value.</p> <h2 id=exceptions>Exceptions<a class=headerlink href=#exceptions title="Permanent link">&para;</a></h2> <ul> <li>Throws <a href=../../../home/exceptions/#jsonexceptionparse_error101><code>parse_error.101</code></a> in case of an unexpected token, or empty input like a null <code>FILE*</code> or <code>char*</code> pointer.</li> <li>Throws <a href=../../../home/exceptions/#jsonexceptionparse_error102><code>parse_error.102</code></a> if <code>to_unicode</code> fails or surrogate error.</li> <li>Throws <a href=../../../home/exceptions/#jsonexceptionparse_error103><code>parse_error.103</code></a> if <code>to_unicode</code> fails.</li> </ul> <h2 id=complexity>Complexity<a class=headerlink href=#complexity title="Permanent link">&para;</a></h2> <p>Linear in the length of the input. The parser is a predictive LL(1) parser. The complexity can be higher if the parser callback function <code>cb</code> or reading from (1) the input <code>i</code> or (2) the iterator range [<code>first</code>, <code>last</code>] has a super-linear complexity.</p> <h2 id=notes>Notes<a class=headerlink href=#notes title="Permanent link">&para;</a></h2> <p>A <abbr title="Unicode Transformation Format">UTF</abbr>-8 byte order mark is silently ignored.</p> <h2 id=examples>Examples<a class=headerlink href=#examples title="Permanent link">&para;</a></h2> <details class=example> <summary>Parsing from a character array</summary> <p>The example below demonstrates the <code>parse()</code> function reading from an array.</p> <div class=highlight><pre><span></span><code><span class=cp>#include</span><span class=w> </span><span class=cpf>&lt;iostream&gt;</span>
+</code></pre></div> <ol> <li>Deserialize from a compatible input.</li> <li> <p>Deserialize from a pair of character iterators</p> <p>The <code>value_type</code> of the iterator must be an integral type with size of 1, 2, or 4 bytes, which will be interpreted respectively as <abbr title="Unicode Transformation Format">UTF</abbr>-8, <abbr title="Unicode Transformation Format">UTF</abbr>-16, and <abbr title="Unicode Transformation Format">UTF</abbr>-32.</p> </li> </ol> <h2 id=template-parameters>Template parameters<a class=headerlink href=#template-parameters title="Permanent link">&para;</a></h2> <dl> <dt><code>InputType</code></dt> <dd> <p>A compatible input, for instance:</p> <ul> <li>an <code>std::istream</code> object</li> <li>a <code>FILE</code> pointer (throws if null)</li> <li>a C-style array of characters</li> <li>a pointer to a null-terminated string of single byte characters (throws if null)</li> <li>a <code>std::string</code></li> <li>an object <code>obj</code> for which <code>begin(obj)</code> and <code>end(obj)</code> produces a valid pair of iterators.</li> </ul> </dd> <dt><code>IteratorType</code></dt> <dd> <p>a compatible iterator type, for instance.</p> <ul> <li>a pair of <code>std::string::iterator</code> or <code>std::vector&lt;std::uint8_t&gt;::iterator</code></li> <li>a pair of pointers such as <code>ptr</code> and <code>ptr + len</code></li> </ul> </dd> </dl> <h2 id=parameters>Parameters<a class=headerlink href=#parameters title="Permanent link">&para;</a></h2> <dl> <dt><code>i</code> (in)</dt> <dd>Input to parse from.</dd> <dt><code>cb</code> (in)</dt> <dd>a parser callback function of type <a href=../parser_callback_t/ ><code>parser_callback_t</code></a> which is used to control the deserialization by filtering unwanted values (optional)</dd> <dt><code>allow_exceptions</code> (in)</dt> <dd>whether to throw exceptions in case of a parse error (optional, <code class=highlight><span class=nb>true</span></code> by default)</dd> <dt><code>ignore_comments</code> (in)</dt> <dd>whether comments should be ignored and treated like whitespace (<code class=highlight><span class=nb>true</span></code>) or yield a parse error (<code class=highlight><span class=nb>false</span></code>); (optional, <code class=highlight><span class=nb>false</span></code> by default)</dd> <dt><code>ignore_trailing_commas</code> (in)</dt> <dd>whether trailing commas in arrays or objects should be ignored and treated like whitespace (<code class=highlight><span class=nb>true</span></code>) or yield a parse error (<code class=highlight><span class=nb>false</span></code>); (optional, <code class=highlight><span class=nb>false</span></code> by default)</dd> <dt><code>first</code> (in)</dt> <dd>iterator to the start of a character range</dd> <dt><code>last</code> (in)</dt> <dd>iterator to the end of a character range</dd> </dl> <h2 id=return-value>Return value<a class=headerlink href=#return-value title="Permanent link">&para;</a></h2> <p>Deserialized <abbr title="JavaScript Object Notation">JSON</abbr> value; in case of a parse error and <code>allow_exceptions</code> set to <code class=highlight><span class=nb>false</span></code>, the return value will be <code>value_t::discarded</code>. The latter can be checked with <a href=../is_discarded/ ><code>is_discarded</code></a>.</p> <h2 id=exception-safety>Exception safety<a class=headerlink href=#exception-safety title="Permanent link">&para;</a></h2> <p>Strong guarantee: if an exception is thrown, there are no changes in the <abbr title="JavaScript Object Notation">JSON</abbr> value.</p> <h2 id=exceptions>Exceptions<a class=headerlink href=#exceptions title="Permanent link">&para;</a></h2> <ul> <li>Throws <a href=../../../home/exceptions/#jsonexceptionparse_error101><code>parse_error.101</code></a> in case of an unexpected token, or empty input like a null <code>FILE*</code> or <code>char*</code> pointer.</li> </ul> <h2 id=complexity>Complexity<a class=headerlink href=#complexity title="Permanent link">&para;</a></h2> <p>Linear in the length of the input. The parser is a predictive LL(1) parser. The complexity can be higher if the parser callback function <code>cb</code> or reading from (1) the input <code>i</code> or (2) the iterator range [<code>first</code>, <code>last</code>] has a super-linear complexity.</p> <h2 id=notes>Notes<a class=headerlink href=#notes title="Permanent link">&para;</a></h2> <p>A <abbr title="Unicode Transformation Format">UTF</abbr>-8 byte order mark is silently ignored.</p> <p>Invalid Unicode escapes and unpaired surrogates in the input are reported as <a href=../../../home/exceptions/#jsonexceptionparse_error101><code>parse_error.101</code></a> with a detailed message.</p> <h2 id=examples>Examples<a class=headerlink href=#examples title="Permanent link">&para;</a></h2> <details class=example> <summary>Parsing from a character array</summary> <p>The example below demonstrates the <code>parse()</code> function reading from an array.</p> <div class=highlight><pre><span></span><code><span class=cp>#include</span><span class=w> </span><span class=cpf>&lt;iostream&gt;</span>
 <span class=cp>#include</span><span class=w> </span><span class=cpf>&lt;iomanip&gt;</span>
 <span class=cp>#include</span><span class=w> </span><span class=cpf>&lt;nlohmann/json.hpp&gt;</span>
 
@@ -295,7 +295,7 @@
 <span class=w>    </span><span class=mi>2</span><span class=p>,</span>
 <span class=w>    </span><span class=mi>3</span>
 <span class=p>]</span>
-</code></pre></div> </details> <details class=example> <summary>Effect of <code>allow_exceptions</code> parameter</summary> <p>The example below demonstrates the effect of the <code>allow_exceptions</code> parameter in the ´parse()` function.</p> <div class=highlight><pre><span></span><code><span class=cp>#include</span><span class=w> </span><span class=cpf>&lt;iostream&gt;</span>
+</code></pre></div> </details> <details class=example> <summary>Effect of <code>allow_exceptions</code> parameter</summary> <p>The example below demonstrates the effect of the <code>allow_exceptions</code> parameter in the <code>parse()</code> function.</p> <div class=highlight><pre><span></span><code><span class=cp>#include</span><span class=w> </span><span class=cpf>&lt;iostream&gt;</span>
 <span class=cp>#include</span><span class=w> </span><span class=cpf>&lt;nlohmann/json.hpp&gt;</span>
 
 <span class=k>using</span><span class=w> </span><span class=n>json</span><span class=w> </span><span class=o>=</span><span class=w> </span><span class=n>nlohmann</span><span class=o>::</span><span class=n>json</span><span class=p>;</span>
@@ -424,4 +424,4 @@
     &quot;Neptune&quot;
   ]
 }
-</code></pre></div> </details> <h2 id=see-also>See also<a class=headerlink href=#see-also title="Permanent link">&para;</a></h2> <ul> <li><a href=../accept/ >accept</a> - check if the input is valid <abbr title="JavaScript Object Notation">JSON</abbr></li> <li><a href=../../operator_gtgt/ >operator&gt;&gt;</a> - deserialize from stream</li> </ul> <h2 id=version-history>Version history<a class=headerlink href=#version-history title="Permanent link">&para;</a></h2> <ul> <li>Added in version 1.0.0.</li> <li>Overload for contiguous containers (1) added in version 2.0.3.</li> <li>Ignoring comments via <code>ignore_comments</code> added in version 3.9.0.</li> <li>Changed <a href=../../../features/assertions/ >runtime assertion</a> in case of <code>FILE*</code> null pointers to exception in version 3.12.0.</li> <li>Added <code>ignore_trailing_commas</code> in version 3.12.1.</li> </ul> <div class="admonition warning"> <p class=admonition-title>Deprecation</p> <p>Overload (2) replaces calls to <code>parse</code> with a pair of iterators as their first parameter which has been deprecated in version 3.8.0. This overload will be removed in version 4.0.0. Please replace all calls like <code class=highlight><span class=n>parse</span><span class=p>({</span><span class=n>ptr</span><span class=p>,</span><span class=w> </span><span class=n>ptr</span><span class=o>+</span><span class=n>len</span><span class=p>},</span><span class=w> </span><span class=p>...);</span></code> with <code class=highlight><span class=n>parse</span><span class=p>(</span><span class=n>ptr</span><span class=p>,</span><span class=w> </span><span class=n>ptr</span><span class=o>+</span><span class=n>len</span><span class=p>,</span><span class=w> </span><span class=p>...);</span></code>.</p> <p>You should be warned by your compiler with a <code>-Wdeprecated-declarations</code> warning if you are using a deprecated function.</p> </div> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 23, 2026 11:16:18 UTC">June 23, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
+</code></pre></div> </details> <h2 id=see-also>See also<a class=headerlink href=#see-also title="Permanent link">&para;</a></h2> <ul> <li><a href=../accept/ >accept</a> - check if the input is valid <abbr title="JavaScript Object Notation">JSON</abbr></li> <li><a href=../sax_parse/ >sax_parse</a> - parse input using the <abbr title="Simple API for XML">SAX</abbr> interface</li> <li><a href=../../operator_gtgt/ >operator&gt;&gt;</a> - deserialize from stream</li> </ul> <h2 id=version-history>Version history<a class=headerlink href=#version-history title="Permanent link">&para;</a></h2> <ul> <li>Added in version 1.0.0.</li> <li>Overload for contiguous containers (1) added in version 2.0.3.</li> <li>Ignoring comments via <code>ignore_comments</code> added in version 3.9.0.</li> <li>Changed <a href=../../../features/assertions/ >runtime assertion</a> in case of <code>FILE*</code> null pointers to exception in version 3.12.0.</li> <li>Added <code>ignore_trailing_commas</code> in version 3.12.x.</li> </ul> <div class="admonition warning"> <p class=admonition-title>Deprecation</p> <p>Overload (2) replaces calls to <code>parse</code> with a pair of iterators as their first parameter which has been deprecated in version 3.8.0. This overload will be removed in version 4.0.0. Please replace all calls like <code class=highlight><span class=n>parse</span><span class=p>({</span><span class=n>ptr</span><span class=p>,</span><span class=w> </span><span class=n>ptr</span><span class=o>+</span><span class=n>len</span><span class=p>},</span><span class=w> </span><span class=p>...);</span></code> with <code class=highlight><span class=n>parse</span><span class=p>(</span><span class=n>ptr</span><span class=p>,</span><span class=w> </span><span class=n>ptr</span><span class=o>+</span><span class=n>len</span><span class=p>,</span><span class=w> </span><span class=p>...);</span></code>.</p> <p>You should be warned by your compiler with a <code>-Wdeprecated-declarations</code> warning if you are using a deprecated function.</p> </div> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 29, 2026 20:15:18 UTC">June 29, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
diff --git a/api/basic_json/parse_error/index.html b/api/basic_json/parse_error/index.html
index 9611cb4..297f5f0 100644
--- a/api/basic_json/parse_error/index.html
+++ b/api/basic_json/parse_error/index.html
@@ -50,4 +50,4 @@
 </code></pre></div> <p>Output:</p> <div class=highlight><pre><span></span><code><span class=err>message</span><span class=p>:</span><span class=w> </span><span class=p>[</span><span class=err>jso</span><span class=kc>n</span><span class=err>.excep</span><span class=kc>t</span><span class=err>io</span><span class=kc>n</span><span class=err>.parse_error.</span><span class=mi>101</span><span class=p>]</span><span class=w> </span><span class=err>parse</span><span class=w> </span><span class=err>error</span><span class=w> </span><span class=err>a</span><span class=kc>t</span><span class=w> </span><span class=err>li</span><span class=kc>ne</span><span class=w> </span><span class=mi>1</span><span class=p>,</span><span class=w> </span><span class=err>colum</span><span class=kc>n</span><span class=w> </span><span class=mi>8</span><span class=p>:</span><span class=w> </span><span class=err>sy</span><span class=kc>nta</span><span class=err>x</span><span class=w> </span><span class=err>error</span><span class=w> </span><span class=err>while</span><span class=w> </span><span class=err>parsi</span><span class=kc>n</span><span class=err>g</span><span class=w> </span><span class=err>value</span><span class=w> </span><span class=mi>-</span><span class=w> </span><span class=err>u</span><span class=kc>ne</span><span class=err>xpec</span><span class=kc>te</span><span class=err>d</span><span class=w> </span><span class=err>&#39;</span><span class=p>]</span><span class=err>&#39;;</span><span class=w> </span><span class=err>expec</span><span class=kc>te</span><span class=err>d</span><span class=w> </span><span class=err>&#39;</span><span class=p>[</span><span class=err>&#39;</span><span class=p>,</span><span class=w> </span><span class=err>&#39;</span><span class=p>{</span><span class=err>&#39;</span><span class=p>,</span><span class=w> </span><span class=err>or</span><span class=w> </span><span class=err>a</span><span class=w> </span><span class=err>li</span><span class=kc>teral</span>
 <span class=err>excep</span><span class=kc>t</span><span class=err>io</span><span class=kc>n</span><span class=w> </span><span class=err>id</span><span class=p>:</span><span class=w> </span><span class=mi>101</span>
 <span class=err>by</span><span class=kc>te</span><span class=w> </span><span class=err>posi</span><span class=kc>t</span><span class=err>io</span><span class=kc>n</span><span class=w> </span><span class=err>o</span><span class=kc>f</span><span class=w> </span><span class=err>error</span><span class=p>:</span><span class=w> </span><span class=mi>8</span>
-</code></pre></div> </details> <h2 id=see-also>See also<a class=headerlink href=#see-also title="Permanent link">&para;</a></h2> <ul> <li><a href=../../../home/exceptions/#parse-errors>List of parse errors</a></li> <li><a href=../invalid_iterator/ ><code>invalid_iterator</code></a> for exceptions indicating errors with iterators</li> <li><a href=../type_error/ ><code>type_error</code></a> for exceptions indicating executing a member function with a wrong type</li> <li><a href=../out_of_range/ ><code>out_of_range</code></a> for exceptions indicating access out of the defined range</li> <li><a href=../other_error/ ><code>other_error</code></a> for exceptions indicating other library errors</li> </ul> <h2 id=version-history>Version history<a class=headerlink href=#version-history title="Permanent link">&para;</a></h2> <ul> <li>Since version 3.0.0.</li> </ul> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 23, 2026 11:16:18 UTC">June 23, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
+</code></pre></div> </details> <h2 id=see-also>See also<a class=headerlink href=#see-also title="Permanent link">&para;</a></h2> <ul> <li><a href=../exception/ ><code>exception</code></a> for the base class of all exceptions thrown by the library</li> <li><a href=../../../home/exceptions/#parse-errors>List of parse errors</a></li> <li><a href=../invalid_iterator/ ><code>invalid_iterator</code></a> for exceptions indicating errors with iterators</li> <li><a href=../type_error/ ><code>type_error</code></a> for exceptions indicating executing a member function with a wrong type</li> <li><a href=../out_of_range/ ><code>out_of_range</code></a> for exceptions indicating access out of the defined range</li> <li><a href=../other_error/ ><code>other_error</code></a> for exceptions indicating other library errors</li> </ul> <h2 id=version-history>Version history<a class=headerlink href=#version-history title="Permanent link">&para;</a></h2> <ul> <li>Since version 3.0.0.</li> </ul> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 29, 2026 20:15:18 UTC">June 29, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
diff --git a/api/basic_json/parse_event_t/index.html b/api/basic_json/parse_event_t/index.html
index bdf2b4c..6c22361 100644
--- a/api/basic_json/parse_event_t/index.html
+++ b/api/basic_json/parse_event_t/index.html
@@ -1,4 +1,4 @@
-<!doctype html><html lang=en class=no-js> <head><meta charset=utf-8><meta name=viewport content="width=device-width,initial-scale=1"><meta name=author content="Niels Lohmann"><link href="https://json.nlohmann.me/api/basic_json/parse_event_t/" rel="canonical"><link href=../parse_error/ rel=prev><link href=../parser_callback_t/ rel=next><link rel=icon href=../../../assets/images/favicon.png><meta name=generator content="mkdocs-1.6.1, mkdocs-material-9.7.6"><title>parse_event_t - JSON for Modern C++</title><link rel=stylesheet href=../../../assets/stylesheets/main.484c7ddc.min.css><link rel=stylesheet href=../../../assets/stylesheets/palette.ab4e12ef.min.css><link rel="stylesheet" href="../../../assets/external/fonts.googleapis.com/css.61a430c9.css"><style>:root{--md-text-font:"Roboto";--md-code-font:"JetBrains Mono"}</style><link rel=stylesheet href=../../../css/custom.css><script>__md_scope=new URL("../../..",location),__md_hash=e=>[...e].reduce(((e,_)=>(e<<5)-e+_.charCodeAt(0)),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script></head> <body dir=ltr data-md-color-scheme=default data-md-color-primary=indigo data-md-color-accent=indigo> <input class=md-toggle data-md-toggle=drawer type=checkbox id=__drawer autocomplete=off> <input class=md-toggle data-md-toggle=search type=checkbox id=__search autocomplete=off> <label class=md-overlay for=__drawer></label> <div data-md-component=skip> <a href=#nlohmannbasic_jsonparse_event_t class=md-skip> Skip to content </a> </div> <div data-md-component=announce> </div> <header class=md-header data-md-component=header> <nav class="md-header__inner md-grid" aria-label=Header> <a href=../../.. title="JSON for Modern C++" class="md-header__button md-logo" aria-label="JSON for Modern C++" data-md-component=logo> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54"/></svg> </a> <label class="md-header__button md-icon" for=__drawer> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M3 6h18v2H3zm0 5h18v2H3zm0 5h18v2H3z"/></svg> </label> <div class=md-header__title data-md-component=header-title> <div class=md-header__ellipsis> <div class=md-header__topic> <span class=md-ellipsis> JSON for Modern C++ </span> </div> <div class=md-header__topic data-md-component=header-topic> <span class=md-ellipsis> parse_event_t </span> </div> </div> </div> <form class=md-header__option data-md-component=palette> <input class=md-option data-md-color-media="(prefers-color-scheme: light)" data-md-color-scheme=default data-md-color-primary=indigo data-md-color-accent=indigo aria-label="Switch to dark mode" type=radio name=__palette id=__palette_0> <label class="md-header__button md-icon" title="Switch to dark mode" for=__palette_1 hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a4 4 0 0 0-4 4 4 4 0 0 0 4 4 4 4 0 0 0 4-4 4 4 0 0 0-4-4m0 10a6 6 0 0 1-6-6 6 6 0 0 1 6-6 6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12z"/></svg> </label> <input class=md-option data-md-color-media="(prefers-color-scheme: dark)" data-md-color-scheme=slate data-md-color-primary=indigo data-md-color-accent=indigo aria-label="Switch to light mode" type=radio name=__palette id=__palette_1> <label class="md-header__button md-icon" title="Switch to light mode" for=__palette_0 hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 18c-.89 0-1.74-.2-2.5-.55C11.56 16.5 13 14.42 13 12s-1.44-4.5-3.5-5.45C10.26 6.2 11.11 6 12 6a6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12z"/></svg> </label> </form> <script>var palette=__md_get("__palette");if(palette&&palette.color){if("(prefers-color-scheme)"===palette.color.media){var media=matchMedia("(prefers-color-scheme: light)"),input=document.querySelector(media.matches?"[data-md-color-media='(prefers-color-scheme: light)']":"[data-md-color-media='(prefers-color-scheme: dark)']");palette.color.media=input.getAttribute("data-md-color-media"),palette.color.scheme=input.getAttribute("data-md-color-scheme"),palette.color.primary=input.getAttribute("data-md-color-primary"),palette.color.accent=input.getAttribute("data-md-color-accent")}for(var[key,value]of Object.entries(palette.color))document.body.setAttribute("data-md-color-"+key,value)}</script> <label class="md-header__button md-icon" for=__search> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg> </label> <div class=md-search data-md-component=search role=dialog> <label class=md-search__overlay for=__search></label> <div class=md-search__inner role=search> <form class=md-search__form name=search> <input type=text class=md-search__input name=query aria-label=Search placeholder=Search autocapitalize=off autocorrect=off autocomplete=off spellcheck=false data-md-component=search-query required> <label class="md-search__icon md-icon" for=__search> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11z"/></svg> </label> <nav class=md-search__options aria-label=Search> <button type=reset class="md-search__icon md-icon" title=Clear aria-label=Clear tabindex=-1> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z"/></svg> </button> </nav> </form> <div class=md-search__output> <div class=md-search__scrollwrap tabindex=0 data-md-scrollfix> <div class=md-search-result data-md-component=search-result> <div class=md-search-result__meta> Initializing search </div> <ol class=md-search-result__list role=presentation></ol> </div> </div> </div> </div> </div> <div class=md-header__source> <a href="https://github.com/nlohmann/json" title="Go to repository" class="md-source" data-md-component="source"> <div class="md-source__icon md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </div> <div class=md-source__repository> nlohmann/json </div> </a> </div> </nav> </header> <div class=md-container data-md-component=container> <nav class=md-tabs aria-label=Tabs data-md-component=tabs> <div class=md-grid> <ul class=md-tabs__list> <li class=md-tabs__item> <a href=../../.. class=md-tabs__link> Home </a> </li> <li class=md-tabs__item> <a href=../../../features/arbitrary_types/ class=md-tabs__link> Features </a> </li> <li class=md-tabs__item> <a href=../../../integration/ class=md-tabs__link> Integration </a> </li> <li class="md-tabs__item md-tabs__item--active"> <a href=../ class=md-tabs__link> API Documentation </a> </li> <li class=md-tabs__item> <a href=../../../community/ class=md-tabs__link> Community </a> </li> </ul> </div> </nav> <main class=md-main data-md-component=main> <div class="md-main__inner md-grid"> <div class="md-sidebar md-sidebar--primary" data-md-component=sidebar data-md-type=navigation> <div class=md-sidebar__scrollwrap> <div class=md-sidebar__inner> <nav class="md-nav md-nav--primary md-nav--lifted" aria-label=Navigation data-md-level=0> <label class=md-nav__title for=__drawer> <a href=../../.. title="JSON for Modern C++" class="md-nav__button md-logo" aria-label="JSON for Modern C++" data-md-component=logo> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54"/></svg> </a> JSON for Modern C++ </label> <div class=md-nav__source> <a href="https://github.com/nlohmann/json" title="Go to repository" class="md-source" data-md-component="source"> <div class="md-source__icon md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </div> <div class=md-source__repository> nlohmann/json </div> </a> </div> <ul class=md-nav__list data-md-scrollfix> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_1> <div class="md-nav__link md-nav__container"> <a href=../../.. class="md-nav__link "> <span class=md-ellipsis> Home </span> </a> <label class="md-nav__link " for=__nav_1 id=__nav_1_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_1_label aria-expanded=false> <label class=md-nav__title for=__nav_1> <span class="md-nav__icon md-icon"></span> Home </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../home/license/ class=md-nav__link> <span class=md-ellipsis> License </span> </a> </li> <li class=md-nav__item> <a href=../../../home/faq/ class=md-nav__link> <span class=md-ellipsis> FAQ </span> </a> </li> <li class=md-nav__item> <a href=../../../home/exceptions/ class=md-nav__link> <span class=md-ellipsis> Exceptions </span> </a> </li> <li class=md-nav__item> <a href=../../../home/releases/ class=md-nav__link> <span class=md-ellipsis> Releases </span> </a> </li> <li class=md-nav__item> <a href=../../../home/design_goals/ class=md-nav__link> <span class=md-ellipsis> Design goals </span> </a> </li> <li class=md-nav__item> <a href=../../../home/architecture/ class=md-nav__link> <span class=md-ellipsis> Architecture </span> </a> </li> <li class=md-nav__item> <a href=../../../home/customers/ class=md-nav__link> <span class=md-ellipsis> Customers </span> </a> </li> <li class=md-nav__item> <a href=../../../home/sponsors/ class=md-nav__link> <span class=md-ellipsis> Sponsors </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2> <label class=md-nav__link for=__nav_2 id=__nav_2_label tabindex=0> <span class=md-ellipsis> Features </span> <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_2_label aria-expanded=false> <label class=md-nav__title for=__nav_2> <span class="md-nav__icon md-icon"></span> Features </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/arbitrary_types/ class=md-nav__link> <span class=md-ellipsis> Arbitrary Type Conversions </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_2> <div class="md-nav__link md-nav__container"> <a href=../../../features/binary_formats/ class="md-nav__link "> <span class=md-ellipsis> Binary Formats </span> </a> <label class="md-nav__link " for=__nav_2_2 id=__nav_2_2_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_2_label aria-expanded=false> <label class=md-nav__title for=__nav_2_2> <span class="md-nav__icon md-icon"></span> Binary Formats </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/binary_formats/bjdata/ class=md-nav__link> <span class=md-ellipsis> BJData </span> </a> </li> <li class=md-nav__item> <a href=../../../features/binary_formats/bson/ class=md-nav__link> <span class=md-ellipsis> BSON </span> </a> </li> <li class=md-nav__item> <a href=../../../features/binary_formats/cbor/ class=md-nav__link> <span class=md-ellipsis> CBOR </span> </a> </li> <li class=md-nav__item> <a href=../../../features/binary_formats/messagepack/ class=md-nav__link> <span class=md-ellipsis> MessagePack </span> </a> </li> <li class=md-nav__item> <a href=../../../features/binary_formats/ubjson/ class=md-nav__link> <span class=md-ellipsis> UBJSON </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../../features/binary_values/ class=md-nav__link> <span class=md-ellipsis> Binary Values </span> </a> </li> <li class=md-nav__item> <a href=../../../features/comments/ class=md-nav__link> <span class=md-ellipsis> Comments </span> </a> </li> <li class=md-nav__item> <a href=../../../features/trailing_commas/ class=md-nav__link> <span class=md-ellipsis> Trailing Commas </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_6> <div class="md-nav__link md-nav__container"> <a href=../../../features/element_access/ class="md-nav__link "> <span class=md-ellipsis> Element Access </span> </a> <label class="md-nav__link " for=__nav_2_6 id=__nav_2_6_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_6_label aria-expanded=false> <label class=md-nav__title for=__nav_2_6> <span class="md-nav__icon md-icon"></span> Element Access </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/element_access/unchecked_access/ class=md-nav__link> <span class=md-ellipsis> Unchecked access: operator[] </span> </a> </li> <li class=md-nav__item> <a href=../../../features/element_access/checked_access/ class=md-nav__link> <span class=md-ellipsis> Checked access: at </span> </a> </li> <li class=md-nav__item> <a href=../../../features/element_access/default_value/ class=md-nav__link> <span class=md-ellipsis> Access with default value: value </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../../features/iterators/ class=md-nav__link> <span class=md-ellipsis> Iterators </span> </a> </li> <li class=md-nav__item> <a href=../../../features/json_pointer/ class=md-nav__link> <span class=md-ellipsis> JSON Pointer </span> </a> </li> <li class=md-nav__item> <a href=../../../features/json_patch/ class=md-nav__link> <span class=md-ellipsis> JSON Patch and Diff </span> </a> </li> <li class=md-nav__item> <a href=../../../features/merge_patch/ class=md-nav__link> <span class=md-ellipsis> JSON Merge Patch </span> </a> </li> <li class=md-nav__item> <a href=../../../features/modules/ class=md-nav__link> <span class=md-ellipsis> Modules </span> </a> </li> <li class=md-nav__item> <a href=../../../features/namespace/ class=md-nav__link> <span class=md-ellipsis> nlohmann Namespace </span> </a> </li> <li class=md-nav__item> <a href=../../../features/object_order/ class=md-nav__link> <span class=md-ellipsis> Object Order </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_14> <div class="md-nav__link md-nav__container"> <a href=../../../features/parsing/ class="md-nav__link "> <span class=md-ellipsis> Parsing </span> </a> <label class="md-nav__link " for=__nav_2_14 id=__nav_2_14_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_14_label aria-expanded=false> <label class=md-nav__title for=__nav_2_14> <span class="md-nav__icon md-icon"></span> Parsing </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/parsing/json_lines/ class=md-nav__link> <span class=md-ellipsis> JSON Lines </span> </a> </li> <li class=md-nav__item> <a href=../../../features/parsing/parse_exceptions/ class=md-nav__link> <span class=md-ellipsis> Parsing and Exceptions </span> </a> </li> <li class=md-nav__item> <a href=../../../features/parsing/parser_callbacks/ class=md-nav__link> <span class=md-ellipsis> Parser Callbacks </span> </a> </li> <li class=md-nav__item> <a href=../../../features/parsing/sax_interface/ class=md-nav__link> <span class=md-ellipsis> SAX Interface </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../../features/assertions/ class=md-nav__link> <span class=md-ellipsis> Runtime Assertions </span> </a> </li> <li class=md-nav__item> <a href=../../../features/enum_conversion/ class=md-nav__link> <span class=md-ellipsis> Specializing enum conversion </span> </a> </li> <li class=md-nav__item> <a href=../../../features/macros/ class=md-nav__link> <span class=md-ellipsis> Supported Macros </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_18> <div class="md-nav__link md-nav__container"> <a href=../../../features/types/ class="md-nav__link "> <span class=md-ellipsis> Types </span> </a> <label class="md-nav__link " for=__nav_2_18 id=__nav_2_18_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_18_label aria-expanded=false> <label class=md-nav__title for=__nav_2_18> <span class="md-nav__icon md-icon"></span> Types </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/types/number_handling/ class=md-nav__link> <span class=md-ellipsis> Number Handling </span> </a> </li> </ul> </nav> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_3> <div class="md-nav__link md-nav__container"> <a href=../../../integration/ class="md-nav__link "> <span class=md-ellipsis> Integration </span> </a> <label class="md-nav__link " for=__nav_3 id=__nav_3_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_3_label aria-expanded=false> <label class=md-nav__title for=__nav_3> <span class="md-nav__icon md-icon"></span> Integration </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../integration/migration_guide/ class=md-nav__link> <span class=md-ellipsis> Migration Guide </span> </a> </li> <li class=md-nav__item> <a href=../../../integration/cmake/ class=md-nav__link> <span class=md-ellipsis> CMake </span> </a> </li> <li class=md-nav__item> <a href=../../../integration/package_managers/ class=md-nav__link> <span class=md-ellipsis> Package Managers </span> </a> </li> <li class=md-nav__item> <a href=../../../integration/pkg-config/ class=md-nav__link> <span class=md-ellipsis> Pkg-config </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--active md-nav__item--section md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4 checked> <label class=md-nav__link for=__nav_4 id=__nav_4_label tabindex> <span class=md-ellipsis> API Documentation </span> <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_4_label aria-expanded=true> <label class=md-nav__title for=__nav_4> <span class="md-nav__icon md-icon"></span> API Documentation </label> <ul class=md-nav__list data-md-scrollfix> <li class="md-nav__item md-nav__item--active md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_1 checked> <div class="md-nav__link md-nav__container"> <a href=../ class="md-nav__link "> <span class=md-ellipsis> basic_json </span> </a> <label class="md-nav__link " for=__nav_4_1 id=__nav_4_1_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_1_label aria-expanded=true> <label class=md-nav__title for=__nav_4_1> <span class="md-nav__icon md-icon"></span> basic_json </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../basic_json/ class=md-nav__link> <span class=md-ellipsis> (Constructor) </span> </a> </li> <li class=md-nav__item> <a href=../~basic_json/ class=md-nav__link> <span class=md-ellipsis> (Destructor) </span> </a> </li> <li class=md-nav__item> <a href=../accept/ class=md-nav__link> <span class=md-ellipsis> accept </span> </a> </li> <li class=md-nav__item> <a href=../array/ class=md-nav__link> <span class=md-ellipsis> array </span> </a> </li> <li class=md-nav__item> <a href=../array_t/ class=md-nav__link> <span class=md-ellipsis> array_t </span> </a> </li> <li class=md-nav__item> <a href=../at/ class=md-nav__link> <span class=md-ellipsis> at </span> </a> </li> <li class=md-nav__item> <a href=../back/ class=md-nav__link> <span class=md-ellipsis> back </span> </a> </li> <li class=md-nav__item> <a href=../begin/ class=md-nav__link> <span class=md-ellipsis> begin </span> </a> </li> <li class=md-nav__item> <a href=../binary/ class=md-nav__link> <span class=md-ellipsis> binary </span> </a> </li> <li class=md-nav__item> <a href=../binary_t/ class=md-nav__link> <span class=md-ellipsis> binary_t </span> </a> </li> <li class=md-nav__item> <a href=../boolean_t/ class=md-nav__link> <span class=md-ellipsis> boolean_t </span> </a> </li> <li class=md-nav__item> <a href=../cbegin/ class=md-nav__link> <span class=md-ellipsis> cbegin </span> </a> </li> <li class=md-nav__item> <a href=../cbor_tag_handler_t/ class=md-nav__link> <span class=md-ellipsis> cbor_tag_handler_t </span> </a> </li> <li class=md-nav__item> <a href=../cend/ class=md-nav__link> <span class=md-ellipsis> cend </span> </a> </li> <li class=md-nav__item> <a href=../clear/ class=md-nav__link> <span class=md-ellipsis> clear </span> </a> </li> <li class=md-nav__item> <a href=../contains/ class=md-nav__link> <span class=md-ellipsis> contains </span> </a> </li> <li class=md-nav__item> <a href=../count/ class=md-nav__link> <span class=md-ellipsis> count </span> </a> </li> <li class=md-nav__item> <a href=../crbegin/ class=md-nav__link> <span class=md-ellipsis> crbegin </span> </a> </li> <li class=md-nav__item> <a href=../crend/ class=md-nav__link> <span class=md-ellipsis> crend </span> </a> </li> <li class=md-nav__item> <a href=../default_object_comparator_t/ class=md-nav__link> <span class=md-ellipsis> default_object_comparator_t </span> </a> </li> <li class=md-nav__item> <a href=../diff/ class=md-nav__link> <span class=md-ellipsis> diff </span> </a> </li> <li class=md-nav__item> <a href=../dump/ class=md-nav__link> <span class=md-ellipsis> dump </span> </a> </li> <li class=md-nav__item> <a href=../emplace/ class=md-nav__link> <span class=md-ellipsis> emplace </span> </a> </li> <li class=md-nav__item> <a href=../emplace_back/ class=md-nav__link> <span class=md-ellipsis> emplace_back </span> </a> </li> <li class=md-nav__item> <a href=../empty/ class=md-nav__link> <span class=md-ellipsis> empty </span> </a> </li> <li class=md-nav__item> <a href=../end/ class=md-nav__link> <span class=md-ellipsis> end </span> </a> </li> <li class=md-nav__item> <a href=../end_pos/ class=md-nav__link> <span class=md-ellipsis> end_pos </span> </a> </li> <li class=md-nav__item> <a href=../erase/ class=md-nav__link> <span class=md-ellipsis> erase </span> </a> </li> <li class=md-nav__item> <a href=../error_handler_t/ class=md-nav__link> <span class=md-ellipsis> error_handler_t </span> </a> </li> <li class=md-nav__item> <a href=../exception/ class=md-nav__link> <span class=md-ellipsis> exception </span> </a> </li> <li class=md-nav__item> <a href=../find/ class=md-nav__link> <span class=md-ellipsis> find </span> </a> </li> <li class=md-nav__item> <a href=../flatten/ class=md-nav__link> <span class=md-ellipsis> flatten </span> </a> </li> <li class=md-nav__item> <a href=../from_bjdata/ class=md-nav__link> <span class=md-ellipsis> from_bjdata </span> </a> </li> <li class=md-nav__item> <a href=../from_bson/ class=md-nav__link> <span class=md-ellipsis> from_bson </span> </a> </li> <li class=md-nav__item> <a href=../from_cbor/ class=md-nav__link> <span class=md-ellipsis> from_cbor </span> </a> </li> <li class=md-nav__item> <a href=../from_msgpack/ class=md-nav__link> <span class=md-ellipsis> from_msgpack </span> </a> </li> <li class=md-nav__item> <a href=../from_ubjson/ class=md-nav__link> <span class=md-ellipsis> from_ubjson </span> </a> </li> <li class=md-nav__item> <a href=../front/ class=md-nav__link> <span class=md-ellipsis> front </span> </a> </li> <li class=md-nav__item> <a href=../get/ class=md-nav__link> <span class=md-ellipsis> get </span> </a> </li> <li class=md-nav__item> <a href=../get_allocator/ class=md-nav__link> <span class=md-ellipsis> get_allocator </span> </a> </li> <li class=md-nav__item> <a href=../get_binary/ class=md-nav__link> <span class=md-ellipsis> get_binary </span> </a> </li> <li class=md-nav__item> <a href=../get_ptr/ class=md-nav__link> <span class=md-ellipsis> get_ptr </span> </a> </li> <li class=md-nav__item> <a href=../get_ref/ class=md-nav__link> <span class=md-ellipsis> get_ref </span> </a> </li> <li class=md-nav__item> <a href=../get_to/ class=md-nav__link> <span class=md-ellipsis> get_to </span> </a> </li> <li class=md-nav__item> <a href=../std_hash/ class=md-nav__link> <span class=md-ellipsis> std::hash&lt;basic_json&gt; </span> </a> </li> <li class=md-nav__item> <a href=../input_format_t/ class=md-nav__link> <span class=md-ellipsis> input_format_t </span> </a> </li> <li class=md-nav__item> <a href=../insert/ class=md-nav__link> <span class=md-ellipsis> insert </span> </a> </li> <li class=md-nav__item> <a href=../invalid_iterator/ class=md-nav__link> <span class=md-ellipsis> invalid_iterator </span> </a> </li> <li class=md-nav__item> <a href=../is_array/ class=md-nav__link> <span class=md-ellipsis> is_array </span> </a> </li> <li class=md-nav__item> <a href=../is_binary/ class=md-nav__link> <span class=md-ellipsis> is_binary </span> </a> </li> <li class=md-nav__item> <a href=../is_boolean/ class=md-nav__link> <span class=md-ellipsis> is_boolean </span> </a> </li> <li class=md-nav__item> <a href=../is_discarded/ class=md-nav__link> <span class=md-ellipsis> is_discarded </span> </a> </li> <li class=md-nav__item> <a href=../is_null/ class=md-nav__link> <span class=md-ellipsis> is_null </span> </a> </li> <li class=md-nav__item> <a href=../is_number/ class=md-nav__link> <span class=md-ellipsis> is_number </span> </a> </li> <li class=md-nav__item> <a href=../is_number_float/ class=md-nav__link> <span class=md-ellipsis> is_number_float </span> </a> </li> <li class=md-nav__item> <a href=../is_number_integer/ class=md-nav__link> <span class=md-ellipsis> is_number_integer </span> </a> </li> <li class=md-nav__item> <a href=../is_number_unsigned/ class=md-nav__link> <span class=md-ellipsis> is_number_unsigned </span> </a> </li> <li class=md-nav__item> <a href=../is_object/ class=md-nav__link> <span class=md-ellipsis> is_object </span> </a> </li> <li class=md-nav__item> <a href=../is_primitive/ class=md-nav__link> <span class=md-ellipsis> is_primitive </span> </a> </li> <li class=md-nav__item> <a href=../is_string/ class=md-nav__link> <span class=md-ellipsis> is_string </span> </a> </li> <li class=md-nav__item> <a href=../is_structured/ class=md-nav__link> <span class=md-ellipsis> is_structured </span> </a> </li> <li class=md-nav__item> <a href=../items/ class=md-nav__link> <span class=md-ellipsis> items </span> </a> </li> <li class=md-nav__item> <a href=../json_base_class_t/ class=md-nav__link> <span class=md-ellipsis> json_base_class_t </span> </a> </li> <li class=md-nav__item> <a href=../json_serializer/ class=md-nav__link> <span class=md-ellipsis> json_serializer </span> </a> </li> <li class=md-nav__item> <a href=../max_size/ class=md-nav__link> <span class=md-ellipsis> max_size </span> </a> </li> <li class=md-nav__item> <a href=../meta/ class=md-nav__link> <span class=md-ellipsis> meta </span> </a> </li> <li class=md-nav__item> <a href=../merge_patch/ class=md-nav__link> <span class=md-ellipsis> merge_patch </span> </a> </li> <li class=md-nav__item> <a href=../number_float_t/ class=md-nav__link> <span class=md-ellipsis> number_float_t </span> </a> </li> <li class=md-nav__item> <a href=../number_integer_t/ class=md-nav__link> <span class=md-ellipsis> number_integer_t </span> </a> </li> <li class=md-nav__item> <a href=../number_unsigned_t/ class=md-nav__link> <span class=md-ellipsis> number_unsigned_t </span> </a> </li> <li class=md-nav__item> <a href=../object/ class=md-nav__link> <span class=md-ellipsis> object </span> </a> </li> <li class=md-nav__item> <a href=../object_comparator_t/ class=md-nav__link> <span class=md-ellipsis> object_comparator_t </span> </a> </li> <li class=md-nav__item> <a href=../object_t/ class=md-nav__link> <span class=md-ellipsis> object_t </span> </a> </li> <li class=md-nav__item> <a href=../operator_ValueType/ class=md-nav__link> <span class=md-ellipsis> operator ValueType </span> </a> </li> <li class=md-nav__item> <a href=../operator_value_t/ class=md-nav__link> <span class=md-ellipsis> operator value_t </span> </a> </li> <li class=md-nav__item> <a href=../operator%5B%5D/ class=md-nav__link> <span class=md-ellipsis> operator[] </span> </a> </li> <li class=md-nav__item> <a href=../operator%3D/ class=md-nav__link> <span class=md-ellipsis> operator= </span> </a> </li> <li class=md-nav__item> <a href=../operator%2B%3D/ class=md-nav__link> <span class=md-ellipsis> operator+= </span> </a> </li> <li class=md-nav__item> <a href=../operator_eq/ class=md-nav__link> <span class=md-ellipsis> operator== </span> </a> </li> <li class=md-nav__item> <a href=../operator_ne/ class=md-nav__link> <span class=md-ellipsis> operator!= </span> </a> </li> <li class=md-nav__item> <a href=../operator_lt/ class=md-nav__link> <span class=md-ellipsis> operator< </span> </a> </li> <li class=md-nav__item> <a href=../operator_gt/ class=md-nav__link> <span class=md-ellipsis> operator> </span> </a> </li> <li class=md-nav__item> <a href=../operator_le/ class=md-nav__link> <span class=md-ellipsis> operator<= </span> </a> </li> <li class=md-nav__item> <a href=../operator_ge/ class=md-nav__link> <span class=md-ellipsis> operator>= </span> </a> </li> <li class=md-nav__item> <a href=../operator_spaceship/ class=md-nav__link> <span class=md-ellipsis> operator<=> </span> </a> </li> <li class=md-nav__item> <a href=../out_of_range/ class=md-nav__link> <span class=md-ellipsis> out_of_range </span> </a> </li> <li class=md-nav__item> <a href=../other_error/ class=md-nav__link> <span class=md-ellipsis> other_error </span> </a> </li> <li class=md-nav__item> <a href=../parse/ class=md-nav__link> <span class=md-ellipsis> parse </span> </a> </li> <li class=md-nav__item> <a href=../parse_error/ class=md-nav__link> <span class=md-ellipsis> parse_error </span> </a> </li> <li class="md-nav__item md-nav__item--active"> <input class="md-nav__toggle md-toggle" type=checkbox id=__toc> <label class="md-nav__link md-nav__link--active" for=__toc> <span class=md-ellipsis> parse_event_t </span> <span class="md-nav__icon md-icon"></span> </label> <a href=./ class="md-nav__link md-nav__link--active"> <span class=md-ellipsis> parse_event_t </span> </a> <nav class="md-nav md-nav--secondary" aria-label="Table of contents"> <label class=md-nav__title for=__toc> <span class="md-nav__icon md-icon"></span> Table of contents </label> <ul class=md-nav__list data-md-component=toc data-md-scrollfix> <li class=md-nav__item> <a href=#examples class=md-nav__link> <span class=md-ellipsis> Examples </span> </a> </li> <li class=md-nav__item> <a href=#version-history class=md-nav__link> <span class=md-ellipsis> Version history </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../parser_callback_t/ class=md-nav__link> <span class=md-ellipsis> parser_callback_t </span> </a> </li> <li class=md-nav__item> <a href=../patch/ class=md-nav__link> <span class=md-ellipsis> patch </span> </a> </li> <li class=md-nav__item> <a href=../patch_inplace/ class=md-nav__link> <span class=md-ellipsis> patch_inplace </span> </a> </li> <li class=md-nav__item> <a href=../push_back/ class=md-nav__link> <span class=md-ellipsis> push_back </span> </a> </li> <li class=md-nav__item> <a href=../rbegin/ class=md-nav__link> <span class=md-ellipsis> rbegin </span> </a> </li> <li class=md-nav__item> <a href=../rend/ class=md-nav__link> <span class=md-ellipsis> rend </span> </a> </li> <li class=md-nav__item> <a href=../sax_parse/ class=md-nav__link> <span class=md-ellipsis> sax_parse </span> </a> </li> <li class=md-nav__item> <a href=../size/ class=md-nav__link> <span class=md-ellipsis> size </span> </a> </li> <li class=md-nav__item> <a href=../start_pos/ class=md-nav__link> <span class=md-ellipsis> start_pos </span> </a> </li> <li class=md-nav__item> <a href=../string_t/ class=md-nav__link> <span class=md-ellipsis> string_t </span> </a> </li> <li class=md-nav__item> <a href=../swap/ class=md-nav__link> <span class=md-ellipsis> swap </span> </a> </li> <li class=md-nav__item> <a href=../std_swap/ class=md-nav__link> <span class=md-ellipsis> std::swap&lt;basic_json&gt; </span> </a> </li> <li class=md-nav__item> <a href=../to_bjdata/ class=md-nav__link> <span class=md-ellipsis> to_bjdata </span> </a> </li> <li class=md-nav__item> <a href=../to_bson/ class=md-nav__link> <span class=md-ellipsis> to_bson </span> </a> </li> <li class=md-nav__item> <a href=../to_cbor/ class=md-nav__link> <span class=md-ellipsis> to_cbor </span> </a> </li> <li class=md-nav__item> <a href=../to_msgpack/ class=md-nav__link> <span class=md-ellipsis> to_msgpack </span> </a> </li> <li class=md-nav__item> <a href=../to_string/ class=md-nav__link> <span class=md-ellipsis> to_string </span> </a> </li> <li class=md-nav__item> <a href=../to_ubjson/ class=md-nav__link> <span class=md-ellipsis> to_ubjson </span> </a> </li> <li class=md-nav__item> <a href=../type/ class=md-nav__link> <span class=md-ellipsis> type </span> </a> </li> <li class=md-nav__item> <a href=../type_error/ class=md-nav__link> <span class=md-ellipsis> type_error </span> </a> </li> <li class=md-nav__item> <a href=../type_name/ class=md-nav__link> <span class=md-ellipsis> type_name </span> </a> </li> <li class=md-nav__item> <a href=../unflatten/ class=md-nav__link> <span class=md-ellipsis> unflatten </span> </a> </li> <li class=md-nav__item> <a href=../update/ class=md-nav__link> <span class=md-ellipsis> update </span> </a> </li> <li class=md-nav__item> <a href=../value/ class=md-nav__link> <span class=md-ellipsis> value </span> </a> </li> <li class=md-nav__item> <a href=../value_t/ class=md-nav__link> <span class=md-ellipsis> value_t </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_2> <div class="md-nav__link md-nav__container"> <a href=../../byte_container_with_subtype/ class="md-nav__link "> <span class=md-ellipsis> byte_container_with_subtype </span> </a> <label class="md-nav__link " for=__nav_4_2 id=__nav_4_2_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_2_label aria-expanded=false> <label class=md-nav__title for=__nav_4_2> <span class="md-nav__icon md-icon"></span> byte_container_with_subtype </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../byte_container_with_subtype/byte_container_with_subtype/ class=md-nav__link> <span class=md-ellipsis> (constructor) </span> </a> </li> <li class=md-nav__item> <a href=../../byte_container_with_subtype/clear_subtype/ class=md-nav__link> <span class=md-ellipsis> clear_subtype </span> </a> </li> <li class=md-nav__item> <a href=../../byte_container_with_subtype/has_subtype/ class=md-nav__link> <span class=md-ellipsis> has_subtype </span> </a> </li> <li class=md-nav__item> <a href=../../byte_container_with_subtype/set_subtype/ class=md-nav__link> <span class=md-ellipsis> set_subtype </span> </a> </li> <li class=md-nav__item> <a href=../../byte_container_with_subtype/subtype/ class=md-nav__link> <span class=md-ellipsis> subtype </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_3> <div class="md-nav__link md-nav__container"> <a href=../../adl_serializer/ class="md-nav__link "> <span class=md-ellipsis> adl_serializer </span> </a> <label class="md-nav__link " for=__nav_4_3 id=__nav_4_3_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_3_label aria-expanded=false> <label class=md-nav__title for=__nav_4_3> <span class="md-nav__icon md-icon"></span> adl_serializer </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../adl_serializer/from_json/ class=md-nav__link> <span class=md-ellipsis> from_json </span> </a> </li> <li class=md-nav__item> <a href=../../adl_serializer/to_json/ class=md-nav__link> <span class=md-ellipsis> to_json </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../json/ class=md-nav__link> <span class=md-ellipsis> json </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_5> <div class="md-nav__link md-nav__container"> <a href=../../json_pointer/ class="md-nav__link "> <span class=md-ellipsis> json_pointer </span> </a> <label class="md-nav__link " for=__nav_4_5 id=__nav_4_5_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_5_label aria-expanded=false> <label class=md-nav__title for=__nav_4_5> <span class="md-nav__icon md-icon"></span> json_pointer </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../json_pointer/json_pointer/ class=md-nav__link> <span class=md-ellipsis> (Constructor) </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/back/ class=md-nav__link> <span class=md-ellipsis> back </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/empty/ class=md-nav__link> <span class=md-ellipsis> empty </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/front/ class=md-nav__link> <span class=md-ellipsis> front </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_string_t/ class=md-nav__link> <span class=md-ellipsis> operator string_t </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_eq/ class=md-nav__link> <span class=md-ellipsis> operator== </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_ne/ class=md-nav__link> <span class=md-ellipsis> operator!= </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_slash/ class=md-nav__link> <span class=md-ellipsis> operator/ </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_slasheq/ class=md-nav__link> <span class=md-ellipsis> operator/= </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/parent_pointer/ class=md-nav__link> <span class=md-ellipsis> parent_pointer </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/pop_back/ class=md-nav__link> <span class=md-ellipsis> pop_back </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/pop_front/ class=md-nav__link> <span class=md-ellipsis> pop_front </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/push_back/ class=md-nav__link> <span class=md-ellipsis> push_back </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/push_front/ class=md-nav__link> <span class=md-ellipsis> push_front </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/string_t/ class=md-nav__link> <span class=md-ellipsis> string_t </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/to_string/ class=md-nav__link> <span class=md-ellipsis> to_string </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_6> <div class="md-nav__link md-nav__container"> <a href=../../json_sax/ class="md-nav__link "> <span class=md-ellipsis> json_sax </span> </a> <label class="md-nav__link " for=__nav_4_6 id=__nav_4_6_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_6_label aria-expanded=false> <label class=md-nav__title for=__nav_4_6> <span class="md-nav__icon md-icon"></span> json_sax </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../json_sax/binary/ class=md-nav__link> <span class=md-ellipsis> binary </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/boolean/ class=md-nav__link> <span class=md-ellipsis> boolean </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/end_array/ class=md-nav__link> <span class=md-ellipsis> end_array </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/end_object/ class=md-nav__link> <span class=md-ellipsis> end_object </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/key/ class=md-nav__link> <span class=md-ellipsis> key </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/null/ class=md-nav__link> <span class=md-ellipsis> null </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/number_float/ class=md-nav__link> <span class=md-ellipsis> number_float </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/number_integer/ class=md-nav__link> <span class=md-ellipsis> number_integer </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/number_unsigned/ class=md-nav__link> <span class=md-ellipsis> number_unsigned </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/parse_error/ class=md-nav__link> <span class=md-ellipsis> parse_error </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/start_array/ class=md-nav__link> <span class=md-ellipsis> start_array </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/start_object/ class=md-nav__link> <span class=md-ellipsis> start_object </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/string/ class=md-nav__link> <span class=md-ellipsis> string </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../operator_ltlt/ class=md-nav__link> <span class=md-ellipsis> operator<<(basic_json), operator<<(json_pointer) </span> </a> </li> <li class=md-nav__item> <a href=../../operator_gtgt/ class=md-nav__link> <span class=md-ellipsis> operator>>(basic_json) </span> </a> </li> <li class=md-nav__item> <a href=../../operator_literal_json/ class=md-nav__link> <span class=md-ellipsis> operator""_json </span> </a> </li> <li class=md-nav__item> <a href=../../operator_literal_json_pointer/ class=md-nav__link> <span class=md-ellipsis> operator""_json_pointer </span> </a> </li> <li class=md-nav__item> <a href=../../ordered_json/ class=md-nav__link> <span class=md-ellipsis> ordered_json </span> </a> </li> <li class=md-nav__item> <a href=../../ordered_map/ class=md-nav__link> <span class=md-ellipsis> ordered_map </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_13> <div class="md-nav__link md-nav__container"> <a href=../../macros/ class="md-nav__link "> <span class=md-ellipsis> macros </span> </a> <label class="md-nav__link " for=__nav_4_13 id=__nav_4_13_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_13_label aria-expanded=false> <label class=md-nav__title for=__nav_4_13> <span class="md-nav__icon md-icon"></span> macros </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../macros/json_assert/ class=md-nav__link> <span class=md-ellipsis> JSON_ASSERT </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_brace_init_copy_semantics/ class=md-nav__link> <span class=md-ellipsis> JSON_BRACE_INIT_COPY_SEMANTICS </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_throw_user/ class=md-nav__link> <span class=md-ellipsis> JSON_CATCH_USER, JSON_THROW_USER, JSON_TRY_USER </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_diagnostics/ class=md-nav__link> <span class=md-ellipsis> JSON_DIAGNOSTICS </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_diagnostic_positions/ class=md-nav__link> <span class=md-ellipsis> JSON_DIAGNOSTIC_POSITIONS </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_disable_enum_serialization/ class=md-nav__link> <span class=md-ellipsis> JSON_DISABLE_ENUM_SERIALIZATION </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_has_cpp_11/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_CPP_11, JSON_HAS_CPP_14, JSON_HAS_CPP_17, JSON_HAS_CPP_20 </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_has_filesystem/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_EXPERIMENTAL_FILESYSTEM, JSON_HAS_FILESYSTEM </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_has_ranges/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_RANGES </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_has_static_rtti/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_STATIC_RTTI </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_has_three_way_comparison/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_THREE_WAY_COMPARISON </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_noexception/ class=md-nav__link> <span class=md-ellipsis> JSON_NOEXCEPTION </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_no_io/ class=md-nav__link> <span class=md-ellipsis> JSON_NO_IO </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_skip_library_version_check/ class=md-nav__link> <span class=md-ellipsis> JSON_SKIP_LIBRARY_VERSION_CHECK </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_skip_unsupported_compiler_check/ class=md-nav__link> <span class=md-ellipsis> JSON_SKIP_UNSUPPORTED_COMPILER_CHECK </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_use_global_udls/ class=md-nav__link> <span class=md-ellipsis> JSON_USE_GLOBAL_UDLS </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_use_implicit_conversions/ class=md-nav__link> <span class=md-ellipsis> JSON_USE_IMPLICIT_CONVERSIONS </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_use_legacy_discarded_value_comparison/ class=md-nav__link> <span class=md-ellipsis> JSON_USE_LEGACY_DISCARDED_VALUE_COMPARISON </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_define_derived_type/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_ONLY_SERIALIZE, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_define_type_intrusive/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_TYPE_INTRUSIVE, NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_TYPE_INTRUSIVE_ONLY_SERIALIZE </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_define_type_non_intrusive/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_define_type_with_names/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_TYPE_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_namespace/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_NAMESPACE </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_namespace_begin/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_NAMESPACE_BEGIN, NLOHMANN_JSON_NAMESPACE_END </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_namespace_no_version/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_NAMESPACE_NO_VERSION </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_serialize_enum/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_SERIALIZE_ENUM </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_serialize_enum_strict/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_SERIALIZE_ENUM_STRICT </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_version_major/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_VERSION_MAJOR, NLOHMANN_JSON_VERSION_MINOR, NLOHMANN_JSON_VERSION_PATCH </span> </a> </li> </ul> </nav> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_5> <div class="md-nav__link md-nav__container"> <a href=../../../community/ class="md-nav__link "> <span class=md-ellipsis> Community </span> </a> <label class="md-nav__link " for=__nav_5 id=__nav_5_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_5_label aria-expanded=false> <label class=md-nav__title for=__nav_5> <span class="md-nav__icon md-icon"></span> Community </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../community/code_of_conduct/ class=md-nav__link> <span class=md-ellipsis> Code of Conduct </span> </a> </li> <li class=md-nav__item> <a href=../../../community/contribution_guidelines/ class=md-nav__link> <span class=md-ellipsis> Contribution Guidelines </span> </a> </li> <li class=md-nav__item> <a href=../../../community/quality_assurance/ class=md-nav__link> <span class=md-ellipsis> Quality assurance </span> </a> </li> <li class=md-nav__item> <a href=../../../community/governance/ class=md-nav__link> <span class=md-ellipsis> Governance </span> </a> </li> <li class=md-nav__item> <a href=../../../community/security_policy/ class=md-nav__link> <span class=md-ellipsis> Security Policy </span> </a> </li> </ul> </nav> </li> </ul> </nav> </div> </div> </div> <div class="md-sidebar md-sidebar--secondary" data-md-component=sidebar data-md-type=toc> <div class=md-sidebar__scrollwrap> <div class=md-sidebar__inner> <nav class="md-nav md-nav--secondary" aria-label="Table of contents"> <label class=md-nav__title for=__toc> <span class="md-nav__icon md-icon"></span> Table of contents </label> <ul class=md-nav__list data-md-component=toc data-md-scrollfix> <li class=md-nav__item> <a href=#examples class=md-nav__link> <span class=md-ellipsis> Examples </span> </a> </li> <li class=md-nav__item> <a href=#version-history class=md-nav__link> <span class=md-ellipsis> Version history </span> </a> </li> </ul> </nav> </div> </div> </div> <div class=md-content data-md-component=content> <article class="md-content__inner md-typeset"> <a href="https://github.com/nlohmann/json/edit/develop/docs/mkdocs/docs/api/basic_json/parse_event_t.md" title="Edit this page" class="md-content__button md-icon" rel="edit"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M10 20H6V4h7v5h5v3.1l2-2V8l-6-6H6c-1.1 0-2 .9-2 2v16c0 1.1.9 2 2 2h4zm10.2-7c.1 0 .3.1.4.2l1.3 1.3c.2.2.2.6 0 .8l-1 1-2.1-2.1 1-1c.1-.1.2-.2.4-.2m0 3.9L14.1 23H12v-2.1l6.1-6.1z"/></svg> </a> <a href="https://github.com/nlohmann/json/raw/develop/docs/mkdocs/docs/api/basic_json/parse_event_t.md" title="View source of this page" class="md-content__button md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M17 18c.56 0 1 .44 1 1s-.44 1-1 1-1-.44-1-1 .44-1 1-1m0-3c-2.73 0-5.06 1.66-6 4 .94 2.34 3.27 4 6 4s5.06-1.66 6-4c-.94-2.34-3.27-4-6-4m0 6.5a2.5 2.5 0 0 1-2.5-2.5 2.5 2.5 0 0 1 2.5-2.5 2.5 2.5 0 0 1 2.5 2.5 2.5 2.5 0 0 1-2.5 2.5M9.27 20H6V4h7v5h5v4.07c.7.08 1.36.25 2 .49V8l-6-6H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h4.5a8.2 8.2 0 0 1-1.23-2"/></svg> </a> <h1 id=nlohmannbasic_jsonparse_event_t><small>nlohmann::basic_json::</small>parse_event_t<a class=headerlink href=#nlohmannbasic_jsonparse_event_t title="Permanent link">&para;</a></h1> <div class=highlight><pre><span></span><code><span class=k>enum</span><span class=w> </span><span class=k>class</span><span class=w> </span><span class=nc>parse_event_t</span><span class=w> </span><span class=o>:</span><span class=w> </span><span class=n>std</span><span class=o>::</span><span class=kt>uint8_t</span><span class=w> </span><span class=p>{</span>
+<!doctype html><html lang=en class=no-js> <head><meta charset=utf-8><meta name=viewport content="width=device-width,initial-scale=1"><meta name=author content="Niels Lohmann"><link href="https://json.nlohmann.me/api/basic_json/parse_event_t/" rel="canonical"><link href=../parse_error/ rel=prev><link href=../parser_callback_t/ rel=next><link rel=icon href=../../../assets/images/favicon.png><meta name=generator content="mkdocs-1.6.1, mkdocs-material-9.7.6"><title>parse_event_t - JSON for Modern C++</title><link rel=stylesheet href=../../../assets/stylesheets/main.484c7ddc.min.css><link rel=stylesheet href=../../../assets/stylesheets/palette.ab4e12ef.min.css><link rel="stylesheet" href="../../../assets/external/fonts.googleapis.com/css.61a430c9.css"><style>:root{--md-text-font:"Roboto";--md-code-font:"JetBrains Mono"}</style><link rel=stylesheet href=../../../css/custom.css><script>__md_scope=new URL("../../..",location),__md_hash=e=>[...e].reduce(((e,_)=>(e<<5)-e+_.charCodeAt(0)),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script></head> <body dir=ltr data-md-color-scheme=default data-md-color-primary=indigo data-md-color-accent=indigo> <input class=md-toggle data-md-toggle=drawer type=checkbox id=__drawer autocomplete=off> <input class=md-toggle data-md-toggle=search type=checkbox id=__search autocomplete=off> <label class=md-overlay for=__drawer></label> <div data-md-component=skip> <a href=#nlohmannbasic_jsonparse_event_t class=md-skip> Skip to content </a> </div> <div data-md-component=announce> </div> <header class=md-header data-md-component=header> <nav class="md-header__inner md-grid" aria-label=Header> <a href=../../.. title="JSON for Modern C++" class="md-header__button md-logo" aria-label="JSON for Modern C++" data-md-component=logo> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54"/></svg> </a> <label class="md-header__button md-icon" for=__drawer> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M3 6h18v2H3zm0 5h18v2H3zm0 5h18v2H3z"/></svg> </label> <div class=md-header__title data-md-component=header-title> <div class=md-header__ellipsis> <div class=md-header__topic> <span class=md-ellipsis> JSON for Modern C++ </span> </div> <div class=md-header__topic data-md-component=header-topic> <span class=md-ellipsis> parse_event_t </span> </div> </div> </div> <form class=md-header__option data-md-component=palette> <input class=md-option data-md-color-media="(prefers-color-scheme: light)" data-md-color-scheme=default data-md-color-primary=indigo data-md-color-accent=indigo aria-label="Switch to dark mode" type=radio name=__palette id=__palette_0> <label class="md-header__button md-icon" title="Switch to dark mode" for=__palette_1 hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a4 4 0 0 0-4 4 4 4 0 0 0 4 4 4 4 0 0 0 4-4 4 4 0 0 0-4-4m0 10a6 6 0 0 1-6-6 6 6 0 0 1 6-6 6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12z"/></svg> </label> <input class=md-option data-md-color-media="(prefers-color-scheme: dark)" data-md-color-scheme=slate data-md-color-primary=indigo data-md-color-accent=indigo aria-label="Switch to light mode" type=radio name=__palette id=__palette_1> <label class="md-header__button md-icon" title="Switch to light mode" for=__palette_0 hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 18c-.89 0-1.74-.2-2.5-.55C11.56 16.5 13 14.42 13 12s-1.44-4.5-3.5-5.45C10.26 6.2 11.11 6 12 6a6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12z"/></svg> </label> </form> <script>var palette=__md_get("__palette");if(palette&&palette.color){if("(prefers-color-scheme)"===palette.color.media){var media=matchMedia("(prefers-color-scheme: light)"),input=document.querySelector(media.matches?"[data-md-color-media='(prefers-color-scheme: light)']":"[data-md-color-media='(prefers-color-scheme: dark)']");palette.color.media=input.getAttribute("data-md-color-media"),palette.color.scheme=input.getAttribute("data-md-color-scheme"),palette.color.primary=input.getAttribute("data-md-color-primary"),palette.color.accent=input.getAttribute("data-md-color-accent")}for(var[key,value]of Object.entries(palette.color))document.body.setAttribute("data-md-color-"+key,value)}</script> <label class="md-header__button md-icon" for=__search> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg> </label> <div class=md-search data-md-component=search role=dialog> <label class=md-search__overlay for=__search></label> <div class=md-search__inner role=search> <form class=md-search__form name=search> <input type=text class=md-search__input name=query aria-label=Search placeholder=Search autocapitalize=off autocorrect=off autocomplete=off spellcheck=false data-md-component=search-query required> <label class="md-search__icon md-icon" for=__search> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11z"/></svg> </label> <nav class=md-search__options aria-label=Search> <button type=reset class="md-search__icon md-icon" title=Clear aria-label=Clear tabindex=-1> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z"/></svg> </button> </nav> </form> <div class=md-search__output> <div class=md-search__scrollwrap tabindex=0 data-md-scrollfix> <div class=md-search-result data-md-component=search-result> <div class=md-search-result__meta> Initializing search </div> <ol class=md-search-result__list role=presentation></ol> </div> </div> </div> </div> </div> <div class=md-header__source> <a href="https://github.com/nlohmann/json" title="Go to repository" class="md-source" data-md-component="source"> <div class="md-source__icon md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </div> <div class=md-source__repository> nlohmann/json </div> </a> </div> </nav> </header> <div class=md-container data-md-component=container> <nav class=md-tabs aria-label=Tabs data-md-component=tabs> <div class=md-grid> <ul class=md-tabs__list> <li class=md-tabs__item> <a href=../../.. class=md-tabs__link> Home </a> </li> <li class=md-tabs__item> <a href=../../../features/arbitrary_types/ class=md-tabs__link> Features </a> </li> <li class=md-tabs__item> <a href=../../../integration/ class=md-tabs__link> Integration </a> </li> <li class="md-tabs__item md-tabs__item--active"> <a href=../ class=md-tabs__link> API Documentation </a> </li> <li class=md-tabs__item> <a href=../../../community/ class=md-tabs__link> Community </a> </li> </ul> </div> </nav> <main class=md-main data-md-component=main> <div class="md-main__inner md-grid"> <div class="md-sidebar md-sidebar--primary" data-md-component=sidebar data-md-type=navigation> <div class=md-sidebar__scrollwrap> <div class=md-sidebar__inner> <nav class="md-nav md-nav--primary md-nav--lifted" aria-label=Navigation data-md-level=0> <label class=md-nav__title for=__drawer> <a href=../../.. title="JSON for Modern C++" class="md-nav__button md-logo" aria-label="JSON for Modern C++" data-md-component=logo> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54"/></svg> </a> JSON for Modern C++ </label> <div class=md-nav__source> <a href="https://github.com/nlohmann/json" title="Go to repository" class="md-source" data-md-component="source"> <div class="md-source__icon md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </div> <div class=md-source__repository> nlohmann/json </div> </a> </div> <ul class=md-nav__list data-md-scrollfix> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_1> <div class="md-nav__link md-nav__container"> <a href=../../.. class="md-nav__link "> <span class=md-ellipsis> Home </span> </a> <label class="md-nav__link " for=__nav_1 id=__nav_1_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_1_label aria-expanded=false> <label class=md-nav__title for=__nav_1> <span class="md-nav__icon md-icon"></span> Home </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../home/license/ class=md-nav__link> <span class=md-ellipsis> License </span> </a> </li> <li class=md-nav__item> <a href=../../../home/faq/ class=md-nav__link> <span class=md-ellipsis> FAQ </span> </a> </li> <li class=md-nav__item> <a href=../../../home/exceptions/ class=md-nav__link> <span class=md-ellipsis> Exceptions </span> </a> </li> <li class=md-nav__item> <a href=../../../home/releases/ class=md-nav__link> <span class=md-ellipsis> Releases </span> </a> </li> <li class=md-nav__item> <a href=../../../home/design_goals/ class=md-nav__link> <span class=md-ellipsis> Design goals </span> </a> </li> <li class=md-nav__item> <a href=../../../home/architecture/ class=md-nav__link> <span class=md-ellipsis> Architecture </span> </a> </li> <li class=md-nav__item> <a href=../../../home/customers/ class=md-nav__link> <span class=md-ellipsis> Customers </span> </a> </li> <li class=md-nav__item> <a href=../../../home/sponsors/ class=md-nav__link> <span class=md-ellipsis> Sponsors </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2> <label class=md-nav__link for=__nav_2 id=__nav_2_label tabindex=0> <span class=md-ellipsis> Features </span> <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_2_label aria-expanded=false> <label class=md-nav__title for=__nav_2> <span class="md-nav__icon md-icon"></span> Features </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/arbitrary_types/ class=md-nav__link> <span class=md-ellipsis> Arbitrary Type Conversions </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_2> <div class="md-nav__link md-nav__container"> <a href=../../../features/binary_formats/ class="md-nav__link "> <span class=md-ellipsis> Binary Formats </span> </a> <label class="md-nav__link " for=__nav_2_2 id=__nav_2_2_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_2_label aria-expanded=false> <label class=md-nav__title for=__nav_2_2> <span class="md-nav__icon md-icon"></span> Binary Formats </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/binary_formats/bjdata/ class=md-nav__link> <span class=md-ellipsis> BJData </span> </a> </li> <li class=md-nav__item> <a href=../../../features/binary_formats/bson/ class=md-nav__link> <span class=md-ellipsis> BSON </span> </a> </li> <li class=md-nav__item> <a href=../../../features/binary_formats/cbor/ class=md-nav__link> <span class=md-ellipsis> CBOR </span> </a> </li> <li class=md-nav__item> <a href=../../../features/binary_formats/messagepack/ class=md-nav__link> <span class=md-ellipsis> MessagePack </span> </a> </li> <li class=md-nav__item> <a href=../../../features/binary_formats/ubjson/ class=md-nav__link> <span class=md-ellipsis> UBJSON </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../../features/binary_values/ class=md-nav__link> <span class=md-ellipsis> Binary Values </span> </a> </li> <li class=md-nav__item> <a href=../../../features/comments/ class=md-nav__link> <span class=md-ellipsis> Comments </span> </a> </li> <li class=md-nav__item> <a href=../../../features/trailing_commas/ class=md-nav__link> <span class=md-ellipsis> Trailing Commas </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_6> <div class="md-nav__link md-nav__container"> <a href=../../../features/element_access/ class="md-nav__link "> <span class=md-ellipsis> Element Access </span> </a> <label class="md-nav__link " for=__nav_2_6 id=__nav_2_6_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_6_label aria-expanded=false> <label class=md-nav__title for=__nav_2_6> <span class="md-nav__icon md-icon"></span> Element Access </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/element_access/unchecked_access/ class=md-nav__link> <span class=md-ellipsis> Unchecked access: operator[] </span> </a> </li> <li class=md-nav__item> <a href=../../../features/element_access/checked_access/ class=md-nav__link> <span class=md-ellipsis> Checked access: at </span> </a> </li> <li class=md-nav__item> <a href=../../../features/element_access/default_value/ class=md-nav__link> <span class=md-ellipsis> Access with default value: value </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../../features/iterators/ class=md-nav__link> <span class=md-ellipsis> Iterators </span> </a> </li> <li class=md-nav__item> <a href=../../../features/json_pointer/ class=md-nav__link> <span class=md-ellipsis> JSON Pointer </span> </a> </li> <li class=md-nav__item> <a href=../../../features/json_patch/ class=md-nav__link> <span class=md-ellipsis> JSON Patch and Diff </span> </a> </li> <li class=md-nav__item> <a href=../../../features/merge_patch/ class=md-nav__link> <span class=md-ellipsis> JSON Merge Patch </span> </a> </li> <li class=md-nav__item> <a href=../../../features/modules/ class=md-nav__link> <span class=md-ellipsis> Modules </span> </a> </li> <li class=md-nav__item> <a href=../../../features/namespace/ class=md-nav__link> <span class=md-ellipsis> nlohmann Namespace </span> </a> </li> <li class=md-nav__item> <a href=../../../features/object_order/ class=md-nav__link> <span class=md-ellipsis> Object Order </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_14> <div class="md-nav__link md-nav__container"> <a href=../../../features/parsing/ class="md-nav__link "> <span class=md-ellipsis> Parsing </span> </a> <label class="md-nav__link " for=__nav_2_14 id=__nav_2_14_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_14_label aria-expanded=false> <label class=md-nav__title for=__nav_2_14> <span class="md-nav__icon md-icon"></span> Parsing </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/parsing/json_lines/ class=md-nav__link> <span class=md-ellipsis> JSON Lines </span> </a> </li> <li class=md-nav__item> <a href=../../../features/parsing/parse_exceptions/ class=md-nav__link> <span class=md-ellipsis> Parsing and Exceptions </span> </a> </li> <li class=md-nav__item> <a href=../../../features/parsing/parser_callbacks/ class=md-nav__link> <span class=md-ellipsis> Parser Callbacks </span> </a> </li> <li class=md-nav__item> <a href=../../../features/parsing/sax_interface/ class=md-nav__link> <span class=md-ellipsis> SAX Interface </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../../features/assertions/ class=md-nav__link> <span class=md-ellipsis> Runtime Assertions </span> </a> </li> <li class=md-nav__item> <a href=../../../features/enum_conversion/ class=md-nav__link> <span class=md-ellipsis> Specializing enum conversion </span> </a> </li> <li class=md-nav__item> <a href=../../../features/macros/ class=md-nav__link> <span class=md-ellipsis> Supported Macros </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_18> <div class="md-nav__link md-nav__container"> <a href=../../../features/types/ class="md-nav__link "> <span class=md-ellipsis> Types </span> </a> <label class="md-nav__link " for=__nav_2_18 id=__nav_2_18_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_18_label aria-expanded=false> <label class=md-nav__title for=__nav_2_18> <span class="md-nav__icon md-icon"></span> Types </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/types/number_handling/ class=md-nav__link> <span class=md-ellipsis> Number Handling </span> </a> </li> </ul> </nav> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_3> <div class="md-nav__link md-nav__container"> <a href=../../../integration/ class="md-nav__link "> <span class=md-ellipsis> Integration </span> </a> <label class="md-nav__link " for=__nav_3 id=__nav_3_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_3_label aria-expanded=false> <label class=md-nav__title for=__nav_3> <span class="md-nav__icon md-icon"></span> Integration </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../integration/migration_guide/ class=md-nav__link> <span class=md-ellipsis> Migration Guide </span> </a> </li> <li class=md-nav__item> <a href=../../../integration/cmake/ class=md-nav__link> <span class=md-ellipsis> CMake </span> </a> </li> <li class=md-nav__item> <a href=../../../integration/package_managers/ class=md-nav__link> <span class=md-ellipsis> Package Managers </span> </a> </li> <li class=md-nav__item> <a href=../../../integration/pkg-config/ class=md-nav__link> <span class=md-ellipsis> Pkg-config </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--active md-nav__item--section md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4 checked> <label class=md-nav__link for=__nav_4 id=__nav_4_label tabindex> <span class=md-ellipsis> API Documentation </span> <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_4_label aria-expanded=true> <label class=md-nav__title for=__nav_4> <span class="md-nav__icon md-icon"></span> API Documentation </label> <ul class=md-nav__list data-md-scrollfix> <li class="md-nav__item md-nav__item--active md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_1 checked> <div class="md-nav__link md-nav__container"> <a href=../ class="md-nav__link "> <span class=md-ellipsis> basic_json </span> </a> <label class="md-nav__link " for=__nav_4_1 id=__nav_4_1_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_1_label aria-expanded=true> <label class=md-nav__title for=__nav_4_1> <span class="md-nav__icon md-icon"></span> basic_json </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../basic_json/ class=md-nav__link> <span class=md-ellipsis> (Constructor) </span> </a> </li> <li class=md-nav__item> <a href=../~basic_json/ class=md-nav__link> <span class=md-ellipsis> (Destructor) </span> </a> </li> <li class=md-nav__item> <a href=../accept/ class=md-nav__link> <span class=md-ellipsis> accept </span> </a> </li> <li class=md-nav__item> <a href=../array/ class=md-nav__link> <span class=md-ellipsis> array </span> </a> </li> <li class=md-nav__item> <a href=../array_t/ class=md-nav__link> <span class=md-ellipsis> array_t </span> </a> </li> <li class=md-nav__item> <a href=../at/ class=md-nav__link> <span class=md-ellipsis> at </span> </a> </li> <li class=md-nav__item> <a href=../back/ class=md-nav__link> <span class=md-ellipsis> back </span> </a> </li> <li class=md-nav__item> <a href=../begin/ class=md-nav__link> <span class=md-ellipsis> begin </span> </a> </li> <li class=md-nav__item> <a href=../binary/ class=md-nav__link> <span class=md-ellipsis> binary </span> </a> </li> <li class=md-nav__item> <a href=../binary_t/ class=md-nav__link> <span class=md-ellipsis> binary_t </span> </a> </li> <li class=md-nav__item> <a href=../boolean_t/ class=md-nav__link> <span class=md-ellipsis> boolean_t </span> </a> </li> <li class=md-nav__item> <a href=../cbegin/ class=md-nav__link> <span class=md-ellipsis> cbegin </span> </a> </li> <li class=md-nav__item> <a href=../cbor_tag_handler_t/ class=md-nav__link> <span class=md-ellipsis> cbor_tag_handler_t </span> </a> </li> <li class=md-nav__item> <a href=../cend/ class=md-nav__link> <span class=md-ellipsis> cend </span> </a> </li> <li class=md-nav__item> <a href=../clear/ class=md-nav__link> <span class=md-ellipsis> clear </span> </a> </li> <li class=md-nav__item> <a href=../contains/ class=md-nav__link> <span class=md-ellipsis> contains </span> </a> </li> <li class=md-nav__item> <a href=../count/ class=md-nav__link> <span class=md-ellipsis> count </span> </a> </li> <li class=md-nav__item> <a href=../crbegin/ class=md-nav__link> <span class=md-ellipsis> crbegin </span> </a> </li> <li class=md-nav__item> <a href=../crend/ class=md-nav__link> <span class=md-ellipsis> crend </span> </a> </li> <li class=md-nav__item> <a href=../default_object_comparator_t/ class=md-nav__link> <span class=md-ellipsis> default_object_comparator_t </span> </a> </li> <li class=md-nav__item> <a href=../diff/ class=md-nav__link> <span class=md-ellipsis> diff </span> </a> </li> <li class=md-nav__item> <a href=../dump/ class=md-nav__link> <span class=md-ellipsis> dump </span> </a> </li> <li class=md-nav__item> <a href=../emplace/ class=md-nav__link> <span class=md-ellipsis> emplace </span> </a> </li> <li class=md-nav__item> <a href=../emplace_back/ class=md-nav__link> <span class=md-ellipsis> emplace_back </span> </a> </li> <li class=md-nav__item> <a href=../empty/ class=md-nav__link> <span class=md-ellipsis> empty </span> </a> </li> <li class=md-nav__item> <a href=../end/ class=md-nav__link> <span class=md-ellipsis> end </span> </a> </li> <li class=md-nav__item> <a href=../end_pos/ class=md-nav__link> <span class=md-ellipsis> end_pos </span> </a> </li> <li class=md-nav__item> <a href=../erase/ class=md-nav__link> <span class=md-ellipsis> erase </span> </a> </li> <li class=md-nav__item> <a href=../error_handler_t/ class=md-nav__link> <span class=md-ellipsis> error_handler_t </span> </a> </li> <li class=md-nav__item> <a href=../exception/ class=md-nav__link> <span class=md-ellipsis> exception </span> </a> </li> <li class=md-nav__item> <a href=../find/ class=md-nav__link> <span class=md-ellipsis> find </span> </a> </li> <li class=md-nav__item> <a href=../flatten/ class=md-nav__link> <span class=md-ellipsis> flatten </span> </a> </li> <li class=md-nav__item> <a href=../from_bjdata/ class=md-nav__link> <span class=md-ellipsis> from_bjdata </span> </a> </li> <li class=md-nav__item> <a href=../from_bson/ class=md-nav__link> <span class=md-ellipsis> from_bson </span> </a> </li> <li class=md-nav__item> <a href=../from_cbor/ class=md-nav__link> <span class=md-ellipsis> from_cbor </span> </a> </li> <li class=md-nav__item> <a href=../from_msgpack/ class=md-nav__link> <span class=md-ellipsis> from_msgpack </span> </a> </li> <li class=md-nav__item> <a href=../from_ubjson/ class=md-nav__link> <span class=md-ellipsis> from_ubjson </span> </a> </li> <li class=md-nav__item> <a href=../front/ class=md-nav__link> <span class=md-ellipsis> front </span> </a> </li> <li class=md-nav__item> <a href=../get/ class=md-nav__link> <span class=md-ellipsis> get </span> </a> </li> <li class=md-nav__item> <a href=../get_allocator/ class=md-nav__link> <span class=md-ellipsis> get_allocator </span> </a> </li> <li class=md-nav__item> <a href=../get_binary/ class=md-nav__link> <span class=md-ellipsis> get_binary </span> </a> </li> <li class=md-nav__item> <a href=../get_ptr/ class=md-nav__link> <span class=md-ellipsis> get_ptr </span> </a> </li> <li class=md-nav__item> <a href=../get_ref/ class=md-nav__link> <span class=md-ellipsis> get_ref </span> </a> </li> <li class=md-nav__item> <a href=../get_to/ class=md-nav__link> <span class=md-ellipsis> get_to </span> </a> </li> <li class=md-nav__item> <a href=../std_hash/ class=md-nav__link> <span class=md-ellipsis> std::hash&lt;basic_json&gt; </span> </a> </li> <li class=md-nav__item> <a href=../input_format_t/ class=md-nav__link> <span class=md-ellipsis> input_format_t </span> </a> </li> <li class=md-nav__item> <a href=../insert/ class=md-nav__link> <span class=md-ellipsis> insert </span> </a> </li> <li class=md-nav__item> <a href=../invalid_iterator/ class=md-nav__link> <span class=md-ellipsis> invalid_iterator </span> </a> </li> <li class=md-nav__item> <a href=../is_array/ class=md-nav__link> <span class=md-ellipsis> is_array </span> </a> </li> <li class=md-nav__item> <a href=../is_binary/ class=md-nav__link> <span class=md-ellipsis> is_binary </span> </a> </li> <li class=md-nav__item> <a href=../is_boolean/ class=md-nav__link> <span class=md-ellipsis> is_boolean </span> </a> </li> <li class=md-nav__item> <a href=../is_discarded/ class=md-nav__link> <span class=md-ellipsis> is_discarded </span> </a> </li> <li class=md-nav__item> <a href=../is_null/ class=md-nav__link> <span class=md-ellipsis> is_null </span> </a> </li> <li class=md-nav__item> <a href=../is_number/ class=md-nav__link> <span class=md-ellipsis> is_number </span> </a> </li> <li class=md-nav__item> <a href=../is_number_float/ class=md-nav__link> <span class=md-ellipsis> is_number_float </span> </a> </li> <li class=md-nav__item> <a href=../is_number_integer/ class=md-nav__link> <span class=md-ellipsis> is_number_integer </span> </a> </li> <li class=md-nav__item> <a href=../is_number_unsigned/ class=md-nav__link> <span class=md-ellipsis> is_number_unsigned </span> </a> </li> <li class=md-nav__item> <a href=../is_object/ class=md-nav__link> <span class=md-ellipsis> is_object </span> </a> </li> <li class=md-nav__item> <a href=../is_primitive/ class=md-nav__link> <span class=md-ellipsis> is_primitive </span> </a> </li> <li class=md-nav__item> <a href=../is_string/ class=md-nav__link> <span class=md-ellipsis> is_string </span> </a> </li> <li class=md-nav__item> <a href=../is_structured/ class=md-nav__link> <span class=md-ellipsis> is_structured </span> </a> </li> <li class=md-nav__item> <a href=../items/ class=md-nav__link> <span class=md-ellipsis> items </span> </a> </li> <li class=md-nav__item> <a href=../json_base_class_t/ class=md-nav__link> <span class=md-ellipsis> json_base_class_t </span> </a> </li> <li class=md-nav__item> <a href=../json_serializer/ class=md-nav__link> <span class=md-ellipsis> json_serializer </span> </a> </li> <li class=md-nav__item> <a href=../max_size/ class=md-nav__link> <span class=md-ellipsis> max_size </span> </a> </li> <li class=md-nav__item> <a href=../meta/ class=md-nav__link> <span class=md-ellipsis> meta </span> </a> </li> <li class=md-nav__item> <a href=../merge_patch/ class=md-nav__link> <span class=md-ellipsis> merge_patch </span> </a> </li> <li class=md-nav__item> <a href=../number_float_t/ class=md-nav__link> <span class=md-ellipsis> number_float_t </span> </a> </li> <li class=md-nav__item> <a href=../number_integer_t/ class=md-nav__link> <span class=md-ellipsis> number_integer_t </span> </a> </li> <li class=md-nav__item> <a href=../number_unsigned_t/ class=md-nav__link> <span class=md-ellipsis> number_unsigned_t </span> </a> </li> <li class=md-nav__item> <a href=../object/ class=md-nav__link> <span class=md-ellipsis> object </span> </a> </li> <li class=md-nav__item> <a href=../object_comparator_t/ class=md-nav__link> <span class=md-ellipsis> object_comparator_t </span> </a> </li> <li class=md-nav__item> <a href=../object_t/ class=md-nav__link> <span class=md-ellipsis> object_t </span> </a> </li> <li class=md-nav__item> <a href=../operator_ValueType/ class=md-nav__link> <span class=md-ellipsis> operator ValueType </span> </a> </li> <li class=md-nav__item> <a href=../operator_value_t/ class=md-nav__link> <span class=md-ellipsis> operator value_t </span> </a> </li> <li class=md-nav__item> <a href=../operator%5B%5D/ class=md-nav__link> <span class=md-ellipsis> operator[] </span> </a> </li> <li class=md-nav__item> <a href=../operator%3D/ class=md-nav__link> <span class=md-ellipsis> operator= </span> </a> </li> <li class=md-nav__item> <a href=../operator%2B%3D/ class=md-nav__link> <span class=md-ellipsis> operator+= </span> </a> </li> <li class=md-nav__item> <a href=../operator_eq/ class=md-nav__link> <span class=md-ellipsis> operator== </span> </a> </li> <li class=md-nav__item> <a href=../operator_ne/ class=md-nav__link> <span class=md-ellipsis> operator!= </span> </a> </li> <li class=md-nav__item> <a href=../operator_lt/ class=md-nav__link> <span class=md-ellipsis> operator< </span> </a> </li> <li class=md-nav__item> <a href=../operator_gt/ class=md-nav__link> <span class=md-ellipsis> operator> </span> </a> </li> <li class=md-nav__item> <a href=../operator_le/ class=md-nav__link> <span class=md-ellipsis> operator<= </span> </a> </li> <li class=md-nav__item> <a href=../operator_ge/ class=md-nav__link> <span class=md-ellipsis> operator>= </span> </a> </li> <li class=md-nav__item> <a href=../operator_spaceship/ class=md-nav__link> <span class=md-ellipsis> operator<=> </span> </a> </li> <li class=md-nav__item> <a href=../out_of_range/ class=md-nav__link> <span class=md-ellipsis> out_of_range </span> </a> </li> <li class=md-nav__item> <a href=../other_error/ class=md-nav__link> <span class=md-ellipsis> other_error </span> </a> </li> <li class=md-nav__item> <a href=../parse/ class=md-nav__link> <span class=md-ellipsis> parse </span> </a> </li> <li class=md-nav__item> <a href=../parse_error/ class=md-nav__link> <span class=md-ellipsis> parse_error </span> </a> </li> <li class="md-nav__item md-nav__item--active"> <input class="md-nav__toggle md-toggle" type=checkbox id=__toc> <label class="md-nav__link md-nav__link--active" for=__toc> <span class=md-ellipsis> parse_event_t </span> <span class="md-nav__icon md-icon"></span> </label> <a href=./ class="md-nav__link md-nav__link--active"> <span class=md-ellipsis> parse_event_t </span> </a> <nav class="md-nav md-nav--secondary" aria-label="Table of contents"> <label class=md-nav__title for=__toc> <span class="md-nav__icon md-icon"></span> Table of contents </label> <ul class=md-nav__list data-md-component=toc data-md-scrollfix> <li class=md-nav__item> <a href=#examples class=md-nav__link> <span class=md-ellipsis> Examples </span> </a> </li> <li class=md-nav__item> <a href=#see-also class=md-nav__link> <span class=md-ellipsis> See also </span> </a> </li> <li class=md-nav__item> <a href=#version-history class=md-nav__link> <span class=md-ellipsis> Version history </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../parser_callback_t/ class=md-nav__link> <span class=md-ellipsis> parser_callback_t </span> </a> </li> <li class=md-nav__item> <a href=../patch/ class=md-nav__link> <span class=md-ellipsis> patch </span> </a> </li> <li class=md-nav__item> <a href=../patch_inplace/ class=md-nav__link> <span class=md-ellipsis> patch_inplace </span> </a> </li> <li class=md-nav__item> <a href=../push_back/ class=md-nav__link> <span class=md-ellipsis> push_back </span> </a> </li> <li class=md-nav__item> <a href=../rbegin/ class=md-nav__link> <span class=md-ellipsis> rbegin </span> </a> </li> <li class=md-nav__item> <a href=../rend/ class=md-nav__link> <span class=md-ellipsis> rend </span> </a> </li> <li class=md-nav__item> <a href=../sax_parse/ class=md-nav__link> <span class=md-ellipsis> sax_parse </span> </a> </li> <li class=md-nav__item> <a href=../size/ class=md-nav__link> <span class=md-ellipsis> size </span> </a> </li> <li class=md-nav__item> <a href=../start_pos/ class=md-nav__link> <span class=md-ellipsis> start_pos </span> </a> </li> <li class=md-nav__item> <a href=../string_t/ class=md-nav__link> <span class=md-ellipsis> string_t </span> </a> </li> <li class=md-nav__item> <a href=../swap/ class=md-nav__link> <span class=md-ellipsis> swap </span> </a> </li> <li class=md-nav__item> <a href=../std_swap/ class=md-nav__link> <span class=md-ellipsis> std::swap&lt;basic_json&gt; </span> </a> </li> <li class=md-nav__item> <a href=../to_bjdata/ class=md-nav__link> <span class=md-ellipsis> to_bjdata </span> </a> </li> <li class=md-nav__item> <a href=../to_bson/ class=md-nav__link> <span class=md-ellipsis> to_bson </span> </a> </li> <li class=md-nav__item> <a href=../to_cbor/ class=md-nav__link> <span class=md-ellipsis> to_cbor </span> </a> </li> <li class=md-nav__item> <a href=../to_msgpack/ class=md-nav__link> <span class=md-ellipsis> to_msgpack </span> </a> </li> <li class=md-nav__item> <a href=../to_string/ class=md-nav__link> <span class=md-ellipsis> to_string </span> </a> </li> <li class=md-nav__item> <a href=../to_ubjson/ class=md-nav__link> <span class=md-ellipsis> to_ubjson </span> </a> </li> <li class=md-nav__item> <a href=../type/ class=md-nav__link> <span class=md-ellipsis> type </span> </a> </li> <li class=md-nav__item> <a href=../type_error/ class=md-nav__link> <span class=md-ellipsis> type_error </span> </a> </li> <li class=md-nav__item> <a href=../type_name/ class=md-nav__link> <span class=md-ellipsis> type_name </span> </a> </li> <li class=md-nav__item> <a href=../unflatten/ class=md-nav__link> <span class=md-ellipsis> unflatten </span> </a> </li> <li class=md-nav__item> <a href=../update/ class=md-nav__link> <span class=md-ellipsis> update </span> </a> </li> <li class=md-nav__item> <a href=../value/ class=md-nav__link> <span class=md-ellipsis> value </span> </a> </li> <li class=md-nav__item> <a href=../value_t/ class=md-nav__link> <span class=md-ellipsis> value_t </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_2> <div class="md-nav__link md-nav__container"> <a href=../../byte_container_with_subtype/ class="md-nav__link "> <span class=md-ellipsis> byte_container_with_subtype </span> </a> <label class="md-nav__link " for=__nav_4_2 id=__nav_4_2_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_2_label aria-expanded=false> <label class=md-nav__title for=__nav_4_2> <span class="md-nav__icon md-icon"></span> byte_container_with_subtype </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../byte_container_with_subtype/byte_container_with_subtype/ class=md-nav__link> <span class=md-ellipsis> (constructor) </span> </a> </li> <li class=md-nav__item> <a href=../../byte_container_with_subtype/clear_subtype/ class=md-nav__link> <span class=md-ellipsis> clear_subtype </span> </a> </li> <li class=md-nav__item> <a href=../../byte_container_with_subtype/has_subtype/ class=md-nav__link> <span class=md-ellipsis> has_subtype </span> </a> </li> <li class=md-nav__item> <a href=../../byte_container_with_subtype/set_subtype/ class=md-nav__link> <span class=md-ellipsis> set_subtype </span> </a> </li> <li class=md-nav__item> <a href=../../byte_container_with_subtype/subtype/ class=md-nav__link> <span class=md-ellipsis> subtype </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_3> <div class="md-nav__link md-nav__container"> <a href=../../adl_serializer/ class="md-nav__link "> <span class=md-ellipsis> adl_serializer </span> </a> <label class="md-nav__link " for=__nav_4_3 id=__nav_4_3_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_3_label aria-expanded=false> <label class=md-nav__title for=__nav_4_3> <span class="md-nav__icon md-icon"></span> adl_serializer </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../adl_serializer/from_json/ class=md-nav__link> <span class=md-ellipsis> from_json </span> </a> </li> <li class=md-nav__item> <a href=../../adl_serializer/to_json/ class=md-nav__link> <span class=md-ellipsis> to_json </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../json/ class=md-nav__link> <span class=md-ellipsis> json </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_5> <div class="md-nav__link md-nav__container"> <a href=../../json_pointer/ class="md-nav__link "> <span class=md-ellipsis> json_pointer </span> </a> <label class="md-nav__link " for=__nav_4_5 id=__nav_4_5_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_5_label aria-expanded=false> <label class=md-nav__title for=__nav_4_5> <span class="md-nav__icon md-icon"></span> json_pointer </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../json_pointer/json_pointer/ class=md-nav__link> <span class=md-ellipsis> (Constructor) </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/back/ class=md-nav__link> <span class=md-ellipsis> back </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/empty/ class=md-nav__link> <span class=md-ellipsis> empty </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/front/ class=md-nav__link> <span class=md-ellipsis> front </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_string_t/ class=md-nav__link> <span class=md-ellipsis> operator string_t </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_eq/ class=md-nav__link> <span class=md-ellipsis> operator== </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_ne/ class=md-nav__link> <span class=md-ellipsis> operator!= </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_slash/ class=md-nav__link> <span class=md-ellipsis> operator/ </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_slasheq/ class=md-nav__link> <span class=md-ellipsis> operator/= </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/parent_pointer/ class=md-nav__link> <span class=md-ellipsis> parent_pointer </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/pop_back/ class=md-nav__link> <span class=md-ellipsis> pop_back </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/pop_front/ class=md-nav__link> <span class=md-ellipsis> pop_front </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/push_back/ class=md-nav__link> <span class=md-ellipsis> push_back </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/push_front/ class=md-nav__link> <span class=md-ellipsis> push_front </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/string_t/ class=md-nav__link> <span class=md-ellipsis> string_t </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/to_string/ class=md-nav__link> <span class=md-ellipsis> to_string </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_6> <div class="md-nav__link md-nav__container"> <a href=../../json_sax/ class="md-nav__link "> <span class=md-ellipsis> json_sax </span> </a> <label class="md-nav__link " for=__nav_4_6 id=__nav_4_6_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_6_label aria-expanded=false> <label class=md-nav__title for=__nav_4_6> <span class="md-nav__icon md-icon"></span> json_sax </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../json_sax/binary/ class=md-nav__link> <span class=md-ellipsis> binary </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/boolean/ class=md-nav__link> <span class=md-ellipsis> boolean </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/end_array/ class=md-nav__link> <span class=md-ellipsis> end_array </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/end_object/ class=md-nav__link> <span class=md-ellipsis> end_object </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/key/ class=md-nav__link> <span class=md-ellipsis> key </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/null/ class=md-nav__link> <span class=md-ellipsis> null </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/number_float/ class=md-nav__link> <span class=md-ellipsis> number_float </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/number_integer/ class=md-nav__link> <span class=md-ellipsis> number_integer </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/number_unsigned/ class=md-nav__link> <span class=md-ellipsis> number_unsigned </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/parse_error/ class=md-nav__link> <span class=md-ellipsis> parse_error </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/start_array/ class=md-nav__link> <span class=md-ellipsis> start_array </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/start_object/ class=md-nav__link> <span class=md-ellipsis> start_object </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/string/ class=md-nav__link> <span class=md-ellipsis> string </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../operator_ltlt/ class=md-nav__link> <span class=md-ellipsis> operator<<(basic_json), operator<<(json_pointer) </span> </a> </li> <li class=md-nav__item> <a href=../../operator_gtgt/ class=md-nav__link> <span class=md-ellipsis> operator>>(basic_json) </span> </a> </li> <li class=md-nav__item> <a href=../../operator_literal_json/ class=md-nav__link> <span class=md-ellipsis> operator""_json </span> </a> </li> <li class=md-nav__item> <a href=../../operator_literal_json_pointer/ class=md-nav__link> <span class=md-ellipsis> operator""_json_pointer </span> </a> </li> <li class=md-nav__item> <a href=../../ordered_json/ class=md-nav__link> <span class=md-ellipsis> ordered_json </span> </a> </li> <li class=md-nav__item> <a href=../../ordered_map/ class=md-nav__link> <span class=md-ellipsis> ordered_map </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_13> <div class="md-nav__link md-nav__container"> <a href=../../macros/ class="md-nav__link "> <span class=md-ellipsis> macros </span> </a> <label class="md-nav__link " for=__nav_4_13 id=__nav_4_13_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_13_label aria-expanded=false> <label class=md-nav__title for=__nav_4_13> <span class="md-nav__icon md-icon"></span> macros </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../macros/json_assert/ class=md-nav__link> <span class=md-ellipsis> JSON_ASSERT </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_brace_init_copy_semantics/ class=md-nav__link> <span class=md-ellipsis> JSON_BRACE_INIT_COPY_SEMANTICS </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_throw_user/ class=md-nav__link> <span class=md-ellipsis> JSON_CATCH_USER, JSON_THROW_USER, JSON_TRY_USER </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_diagnostics/ class=md-nav__link> <span class=md-ellipsis> JSON_DIAGNOSTICS </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_diagnostic_positions/ class=md-nav__link> <span class=md-ellipsis> JSON_DIAGNOSTIC_POSITIONS </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_disable_enum_serialization/ class=md-nav__link> <span class=md-ellipsis> JSON_DISABLE_ENUM_SERIALIZATION </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_has_cpp_11/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_CPP_11, JSON_HAS_CPP_14, JSON_HAS_CPP_17, JSON_HAS_CPP_20 </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_has_filesystem/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_EXPERIMENTAL_FILESYSTEM, JSON_HAS_FILESYSTEM </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_has_ranges/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_RANGES </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_has_static_rtti/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_STATIC_RTTI </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_has_three_way_comparison/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_THREE_WAY_COMPARISON </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_noexception/ class=md-nav__link> <span class=md-ellipsis> JSON_NOEXCEPTION </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_no_io/ class=md-nav__link> <span class=md-ellipsis> JSON_NO_IO </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_skip_library_version_check/ class=md-nav__link> <span class=md-ellipsis> JSON_SKIP_LIBRARY_VERSION_CHECK </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_skip_unsupported_compiler_check/ class=md-nav__link> <span class=md-ellipsis> JSON_SKIP_UNSUPPORTED_COMPILER_CHECK </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_use_global_udls/ class=md-nav__link> <span class=md-ellipsis> JSON_USE_GLOBAL_UDLS </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_use_implicit_conversions/ class=md-nav__link> <span class=md-ellipsis> JSON_USE_IMPLICIT_CONVERSIONS </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_use_legacy_discarded_value_comparison/ class=md-nav__link> <span class=md-ellipsis> JSON_USE_LEGACY_DISCARDED_VALUE_COMPARISON </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_define_derived_type/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_ONLY_SERIALIZE, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_define_type_intrusive/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_TYPE_INTRUSIVE, NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_TYPE_INTRUSIVE_ONLY_SERIALIZE </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_define_type_non_intrusive/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_define_type_with_names/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_TYPE_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_namespace/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_NAMESPACE </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_namespace_begin/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_NAMESPACE_BEGIN, NLOHMANN_JSON_NAMESPACE_END </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_namespace_no_version/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_NAMESPACE_NO_VERSION </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_serialize_enum/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_SERIALIZE_ENUM </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_serialize_enum_strict/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_SERIALIZE_ENUM_STRICT </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_version_major/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_VERSION_MAJOR, NLOHMANN_JSON_VERSION_MINOR, NLOHMANN_JSON_VERSION_PATCH </span> </a> </li> </ul> </nav> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_5> <div class="md-nav__link md-nav__container"> <a href=../../../community/ class="md-nav__link "> <span class=md-ellipsis> Community </span> </a> <label class="md-nav__link " for=__nav_5 id=__nav_5_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_5_label aria-expanded=false> <label class=md-nav__title for=__nav_5> <span class="md-nav__icon md-icon"></span> Community </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../community/code_of_conduct/ class=md-nav__link> <span class=md-ellipsis> Code of Conduct </span> </a> </li> <li class=md-nav__item> <a href=../../../community/contribution_guidelines/ class=md-nav__link> <span class=md-ellipsis> Contribution Guidelines </span> </a> </li> <li class=md-nav__item> <a href=../../../community/quality_assurance/ class=md-nav__link> <span class=md-ellipsis> Quality assurance </span> </a> </li> <li class=md-nav__item> <a href=../../../community/governance/ class=md-nav__link> <span class=md-ellipsis> Governance </span> </a> </li> <li class=md-nav__item> <a href=../../../community/security_policy/ class=md-nav__link> <span class=md-ellipsis> Security Policy </span> </a> </li> </ul> </nav> </li> </ul> </nav> </div> </div> </div> <div class="md-sidebar md-sidebar--secondary" data-md-component=sidebar data-md-type=toc> <div class=md-sidebar__scrollwrap> <div class=md-sidebar__inner> <nav class="md-nav md-nav--secondary" aria-label="Table of contents"> <label class=md-nav__title for=__toc> <span class="md-nav__icon md-icon"></span> Table of contents </label> <ul class=md-nav__list data-md-component=toc data-md-scrollfix> <li class=md-nav__item> <a href=#examples class=md-nav__link> <span class=md-ellipsis> Examples </span> </a> </li> <li class=md-nav__item> <a href=#see-also class=md-nav__link> <span class=md-ellipsis> See also </span> </a> </li> <li class=md-nav__item> <a href=#version-history class=md-nav__link> <span class=md-ellipsis> Version history </span> </a> </li> </ul> </nav> </div> </div> </div> <div class=md-content data-md-component=content> <article class="md-content__inner md-typeset"> <a href="https://github.com/nlohmann/json/edit/develop/docs/mkdocs/docs/api/basic_json/parse_event_t.md" title="Edit this page" class="md-content__button md-icon" rel="edit"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M10 20H6V4h7v5h5v3.1l2-2V8l-6-6H6c-1.1 0-2 .9-2 2v16c0 1.1.9 2 2 2h4zm10.2-7c.1 0 .3.1.4.2l1.3 1.3c.2.2.2.6 0 .8l-1 1-2.1-2.1 1-1c.1-.1.2-.2.4-.2m0 3.9L14.1 23H12v-2.1l6.1-6.1z"/></svg> </a> <a href="https://github.com/nlohmann/json/raw/develop/docs/mkdocs/docs/api/basic_json/parse_event_t.md" title="View source of this page" class="md-content__button md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M17 18c.56 0 1 .44 1 1s-.44 1-1 1-1-.44-1-1 .44-1 1-1m0-3c-2.73 0-5.06 1.66-6 4 .94 2.34 3.27 4 6 4s5.06-1.66 6-4c-.94-2.34-3.27-4-6-4m0 6.5a2.5 2.5 0 0 1-2.5-2.5 2.5 2.5 0 0 1 2.5-2.5 2.5 2.5 0 0 1 2.5 2.5 2.5 2.5 0 0 1-2.5 2.5M9.27 20H6V4h7v5h5v4.07c.7.08 1.36.25 2 .49V8l-6-6H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h4.5a8.2 8.2 0 0 1-1.23-2"/></svg> </a> <h1 id=nlohmannbasic_jsonparse_event_t><small>nlohmann::basic_json::</small>parse_event_t<a class=headerlink href=#nlohmannbasic_jsonparse_event_t title="Permanent link">&para;</a></h1> <div class=highlight><pre><span></span><code><span class=k>enum</span><span class=w> </span><span class=k>class</span><span class=w> </span><span class=nc>parse_event_t</span><span class=w> </span><span class=o>:</span><span class=w> </span><span class=n>std</span><span class=o>::</span><span class=kt>uint8_t</span><span class=w> </span><span class=p>{</span>
 <span class=w>    </span><span class=n>object_start</span><span class=p>,</span>
 <span class=w>    </span><span class=n>object_end</span><span class=p>,</span>
 <span class=w>    </span><span class=n>array_start</span><span class=p>,</span>
@@ -6,4 +6,4 @@
 <span class=w>    </span><span class=n>key</span><span class=p>,</span>
 <span class=w>    </span><span class=n>value</span>
 <span class=p>};</span>
-</code></pre></div> <p>The parser callback distinguishes the following events:</p> <ul> <li><code>object_start</code>: the parser read <code>{</code> and started to process a <abbr title="JavaScript Object Notation">JSON</abbr> object</li> <li><code>key</code>: the parser read a key of a value in an object</li> <li><code>object_end</code>: the parser read <code>}</code> and finished processing a <abbr title="JavaScript Object Notation">JSON</abbr> object</li> <li><code>array_start</code>: the parser read <code>[</code> and started to process a <abbr title="JavaScript Object Notation">JSON</abbr> array</li> <li><code>array_end</code>: the parser read <code>]</code> and finished processing a <abbr title="JavaScript Object Notation">JSON</abbr> array</li> <li><code>value</code>: the parser finished reading a <abbr title="JavaScript Object Notation">JSON</abbr> value</li> </ul> <h2 id=examples>Examples<a class=headerlink href=#examples title="Permanent link">&para;</a></h2> <p><img alt="Example when certain parse events are triggered" src=../../../images/callback_events.png></p> <h2 id=version-history>Version history<a class=headerlink href=#version-history title="Permanent link">&para;</a></h2> <ul> <li>Added in version 1.0.0.</li> </ul> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 23, 2026 11:16:18 UTC">June 23, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
+</code></pre></div> <p>The parser callback distinguishes the following events:</p> <ul> <li><code>object_start</code>: the parser read <code>{</code> and started to process a <abbr title="JavaScript Object Notation">JSON</abbr> object</li> <li><code>key</code>: the parser read a key of a value in an object</li> <li><code>object_end</code>: the parser read <code>}</code> and finished processing a <abbr title="JavaScript Object Notation">JSON</abbr> object</li> <li><code>array_start</code>: the parser read <code>[</code> and started to process a <abbr title="JavaScript Object Notation">JSON</abbr> array</li> <li><code>array_end</code>: the parser read <code>]</code> and finished processing a <abbr title="JavaScript Object Notation">JSON</abbr> array</li> <li><code>value</code>: the parser finished reading a <abbr title="JavaScript Object Notation">JSON</abbr> value</li> </ul> <h2 id=examples>Examples<a class=headerlink href=#examples title="Permanent link">&para;</a></h2> <p><img alt="Example when certain parse events are triggered" src=../../../images/callback_events.png></p> <h2 id=see-also>See also<a class=headerlink href=#see-also title="Permanent link">&para;</a></h2> <ul> <li><a href=../parser_callback_t/ >parser_callback_t</a> callback function type for the parser</li> <li><a href=../parse/ >parse</a> deserialize from a compatible input</li> </ul> <h2 id=version-history>Version history<a class=headerlink href=#version-history title="Permanent link">&para;</a></h2> <ul> <li>Added in version 1.0.0.</li> </ul> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 29, 2026 20:15:18 UTC">June 29, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
diff --git a/api/basic_json/parser_callback_t/index.html b/api/basic_json/parser_callback_t/index.html
index 8343567..2c5826a 100644
--- a/api/basic_json/parser_callback_t/index.html
+++ b/api/basic_json/parser_callback_t/index.html
@@ -1,4 +1,4 @@
-<!doctype html><html lang=en class=no-js> <head><meta charset=utf-8><meta name=viewport content="width=device-width,initial-scale=1"><meta name=author content="Niels Lohmann"><link href="https://json.nlohmann.me/api/basic_json/parser_callback_t/" rel="canonical"><link href=../parse_event_t/ rel=prev><link href=../patch/ rel=next><link rel=icon href=../../../assets/images/favicon.png><meta name=generator content="mkdocs-1.6.1, mkdocs-material-9.7.6"><title>parser_callback_t - JSON for Modern C++</title><link rel=stylesheet href=../../../assets/stylesheets/main.484c7ddc.min.css><link rel=stylesheet href=../../../assets/stylesheets/palette.ab4e12ef.min.css><link rel="stylesheet" href="../../../assets/external/fonts.googleapis.com/css.61a430c9.css"><style>:root{--md-text-font:"Roboto";--md-code-font:"JetBrains Mono"}</style><link rel=stylesheet href=../../../css/custom.css><script>__md_scope=new URL("../../..",location),__md_hash=e=>[...e].reduce(((e,_)=>(e<<5)-e+_.charCodeAt(0)),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script></head> <body dir=ltr data-md-color-scheme=default data-md-color-primary=indigo data-md-color-accent=indigo> <input class=md-toggle data-md-toggle=drawer type=checkbox id=__drawer autocomplete=off> <input class=md-toggle data-md-toggle=search type=checkbox id=__search autocomplete=off> <label class=md-overlay for=__drawer></label> <div data-md-component=skip> <a href=#nlohmannbasic_jsonparser_callback_t class=md-skip> Skip to content </a> </div> <div data-md-component=announce> </div> <header class=md-header data-md-component=header> <nav class="md-header__inner md-grid" aria-label=Header> <a href=../../.. title="JSON for Modern C++" class="md-header__button md-logo" aria-label="JSON for Modern C++" data-md-component=logo> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54"/></svg> </a> <label class="md-header__button md-icon" for=__drawer> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M3 6h18v2H3zm0 5h18v2H3zm0 5h18v2H3z"/></svg> </label> <div class=md-header__title data-md-component=header-title> <div class=md-header__ellipsis> <div class=md-header__topic> <span class=md-ellipsis> JSON for Modern C++ </span> </div> <div class=md-header__topic data-md-component=header-topic> <span class=md-ellipsis> parser_callback_t </span> </div> </div> </div> <form class=md-header__option data-md-component=palette> <input class=md-option data-md-color-media="(prefers-color-scheme: light)" data-md-color-scheme=default data-md-color-primary=indigo data-md-color-accent=indigo aria-label="Switch to dark mode" type=radio name=__palette id=__palette_0> <label class="md-header__button md-icon" title="Switch to dark mode" for=__palette_1 hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a4 4 0 0 0-4 4 4 4 0 0 0 4 4 4 4 0 0 0 4-4 4 4 0 0 0-4-4m0 10a6 6 0 0 1-6-6 6 6 0 0 1 6-6 6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12z"/></svg> </label> <input class=md-option data-md-color-media="(prefers-color-scheme: dark)" data-md-color-scheme=slate data-md-color-primary=indigo data-md-color-accent=indigo aria-label="Switch to light mode" type=radio name=__palette id=__palette_1> <label class="md-header__button md-icon" title="Switch to light mode" for=__palette_0 hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 18c-.89 0-1.74-.2-2.5-.55C11.56 16.5 13 14.42 13 12s-1.44-4.5-3.5-5.45C10.26 6.2 11.11 6 12 6a6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12z"/></svg> </label> </form> <script>var palette=__md_get("__palette");if(palette&&palette.color){if("(prefers-color-scheme)"===palette.color.media){var media=matchMedia("(prefers-color-scheme: light)"),input=document.querySelector(media.matches?"[data-md-color-media='(prefers-color-scheme: light)']":"[data-md-color-media='(prefers-color-scheme: dark)']");palette.color.media=input.getAttribute("data-md-color-media"),palette.color.scheme=input.getAttribute("data-md-color-scheme"),palette.color.primary=input.getAttribute("data-md-color-primary"),palette.color.accent=input.getAttribute("data-md-color-accent")}for(var[key,value]of Object.entries(palette.color))document.body.setAttribute("data-md-color-"+key,value)}</script> <label class="md-header__button md-icon" for=__search> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg> </label> <div class=md-search data-md-component=search role=dialog> <label class=md-search__overlay for=__search></label> <div class=md-search__inner role=search> <form class=md-search__form name=search> <input type=text class=md-search__input name=query aria-label=Search placeholder=Search autocapitalize=off autocorrect=off autocomplete=off spellcheck=false data-md-component=search-query required> <label class="md-search__icon md-icon" for=__search> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11z"/></svg> </label> <nav class=md-search__options aria-label=Search> <button type=reset class="md-search__icon md-icon" title=Clear aria-label=Clear tabindex=-1> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z"/></svg> </button> </nav> </form> <div class=md-search__output> <div class=md-search__scrollwrap tabindex=0 data-md-scrollfix> <div class=md-search-result data-md-component=search-result> <div class=md-search-result__meta> Initializing search </div> <ol class=md-search-result__list role=presentation></ol> </div> </div> </div> </div> </div> <div class=md-header__source> <a href="https://github.com/nlohmann/json" title="Go to repository" class="md-source" data-md-component="source"> <div class="md-source__icon md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </div> <div class=md-source__repository> nlohmann/json </div> </a> </div> </nav> </header> <div class=md-container data-md-component=container> <nav class=md-tabs aria-label=Tabs data-md-component=tabs> <div class=md-grid> <ul class=md-tabs__list> <li class=md-tabs__item> <a href=../../.. class=md-tabs__link> Home </a> </li> <li class=md-tabs__item> <a href=../../../features/arbitrary_types/ class=md-tabs__link> Features </a> </li> <li class=md-tabs__item> <a href=../../../integration/ class=md-tabs__link> Integration </a> </li> <li class="md-tabs__item md-tabs__item--active"> <a href=../ class=md-tabs__link> API Documentation </a> </li> <li class=md-tabs__item> <a href=../../../community/ class=md-tabs__link> Community </a> </li> </ul> </div> </nav> <main class=md-main data-md-component=main> <div class="md-main__inner md-grid"> <div class="md-sidebar md-sidebar--primary" data-md-component=sidebar data-md-type=navigation> <div class=md-sidebar__scrollwrap> <div class=md-sidebar__inner> <nav class="md-nav md-nav--primary md-nav--lifted" aria-label=Navigation data-md-level=0> <label class=md-nav__title for=__drawer> <a href=../../.. title="JSON for Modern C++" class="md-nav__button md-logo" aria-label="JSON for Modern C++" data-md-component=logo> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54"/></svg> </a> JSON for Modern C++ </label> <div class=md-nav__source> <a href="https://github.com/nlohmann/json" title="Go to repository" class="md-source" data-md-component="source"> <div class="md-source__icon md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </div> <div class=md-source__repository> nlohmann/json </div> </a> </div> <ul class=md-nav__list data-md-scrollfix> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_1> <div class="md-nav__link md-nav__container"> <a href=../../.. class="md-nav__link "> <span class=md-ellipsis> Home </span> </a> <label class="md-nav__link " for=__nav_1 id=__nav_1_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_1_label aria-expanded=false> <label class=md-nav__title for=__nav_1> <span class="md-nav__icon md-icon"></span> Home </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../home/license/ class=md-nav__link> <span class=md-ellipsis> License </span> </a> </li> <li class=md-nav__item> <a href=../../../home/faq/ class=md-nav__link> <span class=md-ellipsis> FAQ </span> </a> </li> <li class=md-nav__item> <a href=../../../home/exceptions/ class=md-nav__link> <span class=md-ellipsis> Exceptions </span> </a> </li> <li class=md-nav__item> <a href=../../../home/releases/ class=md-nav__link> <span class=md-ellipsis> Releases </span> </a> </li> <li class=md-nav__item> <a href=../../../home/design_goals/ class=md-nav__link> <span class=md-ellipsis> Design goals </span> </a> </li> <li class=md-nav__item> <a href=../../../home/architecture/ class=md-nav__link> <span class=md-ellipsis> Architecture </span> </a> </li> <li class=md-nav__item> <a href=../../../home/customers/ class=md-nav__link> <span class=md-ellipsis> Customers </span> </a> </li> <li class=md-nav__item> <a href=../../../home/sponsors/ class=md-nav__link> <span class=md-ellipsis> Sponsors </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2> <label class=md-nav__link for=__nav_2 id=__nav_2_label tabindex=0> <span class=md-ellipsis> Features </span> <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_2_label aria-expanded=false> <label class=md-nav__title for=__nav_2> <span class="md-nav__icon md-icon"></span> Features </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/arbitrary_types/ class=md-nav__link> <span class=md-ellipsis> Arbitrary Type Conversions </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_2> <div class="md-nav__link md-nav__container"> <a href=../../../features/binary_formats/ class="md-nav__link "> <span class=md-ellipsis> Binary Formats </span> </a> <label class="md-nav__link " for=__nav_2_2 id=__nav_2_2_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_2_label aria-expanded=false> <label class=md-nav__title for=__nav_2_2> <span class="md-nav__icon md-icon"></span> Binary Formats </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/binary_formats/bjdata/ class=md-nav__link> <span class=md-ellipsis> BJData </span> </a> </li> <li class=md-nav__item> <a href=../../../features/binary_formats/bson/ class=md-nav__link> <span class=md-ellipsis> BSON </span> </a> </li> <li class=md-nav__item> <a href=../../../features/binary_formats/cbor/ class=md-nav__link> <span class=md-ellipsis> CBOR </span> </a> </li> <li class=md-nav__item> <a href=../../../features/binary_formats/messagepack/ class=md-nav__link> <span class=md-ellipsis> MessagePack </span> </a> </li> <li class=md-nav__item> <a href=../../../features/binary_formats/ubjson/ class=md-nav__link> <span class=md-ellipsis> UBJSON </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../../features/binary_values/ class=md-nav__link> <span class=md-ellipsis> Binary Values </span> </a> </li> <li class=md-nav__item> <a href=../../../features/comments/ class=md-nav__link> <span class=md-ellipsis> Comments </span> </a> </li> <li class=md-nav__item> <a href=../../../features/trailing_commas/ class=md-nav__link> <span class=md-ellipsis> Trailing Commas </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_6> <div class="md-nav__link md-nav__container"> <a href=../../../features/element_access/ class="md-nav__link "> <span class=md-ellipsis> Element Access </span> </a> <label class="md-nav__link " for=__nav_2_6 id=__nav_2_6_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_6_label aria-expanded=false> <label class=md-nav__title for=__nav_2_6> <span class="md-nav__icon md-icon"></span> Element Access </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/element_access/unchecked_access/ class=md-nav__link> <span class=md-ellipsis> Unchecked access: operator[] </span> </a> </li> <li class=md-nav__item> <a href=../../../features/element_access/checked_access/ class=md-nav__link> <span class=md-ellipsis> Checked access: at </span> </a> </li> <li class=md-nav__item> <a href=../../../features/element_access/default_value/ class=md-nav__link> <span class=md-ellipsis> Access with default value: value </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../../features/iterators/ class=md-nav__link> <span class=md-ellipsis> Iterators </span> </a> </li> <li class=md-nav__item> <a href=../../../features/json_pointer/ class=md-nav__link> <span class=md-ellipsis> JSON Pointer </span> </a> </li> <li class=md-nav__item> <a href=../../../features/json_patch/ class=md-nav__link> <span class=md-ellipsis> JSON Patch and Diff </span> </a> </li> <li class=md-nav__item> <a href=../../../features/merge_patch/ class=md-nav__link> <span class=md-ellipsis> JSON Merge Patch </span> </a> </li> <li class=md-nav__item> <a href=../../../features/modules/ class=md-nav__link> <span class=md-ellipsis> Modules </span> </a> </li> <li class=md-nav__item> <a href=../../../features/namespace/ class=md-nav__link> <span class=md-ellipsis> nlohmann Namespace </span> </a> </li> <li class=md-nav__item> <a href=../../../features/object_order/ class=md-nav__link> <span class=md-ellipsis> Object Order </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_14> <div class="md-nav__link md-nav__container"> <a href=../../../features/parsing/ class="md-nav__link "> <span class=md-ellipsis> Parsing </span> </a> <label class="md-nav__link " for=__nav_2_14 id=__nav_2_14_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_14_label aria-expanded=false> <label class=md-nav__title for=__nav_2_14> <span class="md-nav__icon md-icon"></span> Parsing </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/parsing/json_lines/ class=md-nav__link> <span class=md-ellipsis> JSON Lines </span> </a> </li> <li class=md-nav__item> <a href=../../../features/parsing/parse_exceptions/ class=md-nav__link> <span class=md-ellipsis> Parsing and Exceptions </span> </a> </li> <li class=md-nav__item> <a href=../../../features/parsing/parser_callbacks/ class=md-nav__link> <span class=md-ellipsis> Parser Callbacks </span> </a> </li> <li class=md-nav__item> <a href=../../../features/parsing/sax_interface/ class=md-nav__link> <span class=md-ellipsis> SAX Interface </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../../features/assertions/ class=md-nav__link> <span class=md-ellipsis> Runtime Assertions </span> </a> </li> <li class=md-nav__item> <a href=../../../features/enum_conversion/ class=md-nav__link> <span class=md-ellipsis> Specializing enum conversion </span> </a> </li> <li class=md-nav__item> <a href=../../../features/macros/ class=md-nav__link> <span class=md-ellipsis> Supported Macros </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_18> <div class="md-nav__link md-nav__container"> <a href=../../../features/types/ class="md-nav__link "> <span class=md-ellipsis> Types </span> </a> <label class="md-nav__link " for=__nav_2_18 id=__nav_2_18_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_18_label aria-expanded=false> <label class=md-nav__title for=__nav_2_18> <span class="md-nav__icon md-icon"></span> Types </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/types/number_handling/ class=md-nav__link> <span class=md-ellipsis> Number Handling </span> </a> </li> </ul> </nav> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_3> <div class="md-nav__link md-nav__container"> <a href=../../../integration/ class="md-nav__link "> <span class=md-ellipsis> Integration </span> </a> <label class="md-nav__link " for=__nav_3 id=__nav_3_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_3_label aria-expanded=false> <label class=md-nav__title for=__nav_3> <span class="md-nav__icon md-icon"></span> Integration </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../integration/migration_guide/ class=md-nav__link> <span class=md-ellipsis> Migration Guide </span> </a> </li> <li class=md-nav__item> <a href=../../../integration/cmake/ class=md-nav__link> <span class=md-ellipsis> CMake </span> </a> </li> <li class=md-nav__item> <a href=../../../integration/package_managers/ class=md-nav__link> <span class=md-ellipsis> Package Managers </span> </a> </li> <li class=md-nav__item> <a href=../../../integration/pkg-config/ class=md-nav__link> <span class=md-ellipsis> Pkg-config </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--active md-nav__item--section md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4 checked> <label class=md-nav__link for=__nav_4 id=__nav_4_label tabindex> <span class=md-ellipsis> API Documentation </span> <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_4_label aria-expanded=true> <label class=md-nav__title for=__nav_4> <span class="md-nav__icon md-icon"></span> API Documentation </label> <ul class=md-nav__list data-md-scrollfix> <li class="md-nav__item md-nav__item--active md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_1 checked> <div class="md-nav__link md-nav__container"> <a href=../ class="md-nav__link "> <span class=md-ellipsis> basic_json </span> </a> <label class="md-nav__link " for=__nav_4_1 id=__nav_4_1_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_1_label aria-expanded=true> <label class=md-nav__title for=__nav_4_1> <span class="md-nav__icon md-icon"></span> basic_json </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../basic_json/ class=md-nav__link> <span class=md-ellipsis> (Constructor) </span> </a> </li> <li class=md-nav__item> <a href=../~basic_json/ class=md-nav__link> <span class=md-ellipsis> (Destructor) </span> </a> </li> <li class=md-nav__item> <a href=../accept/ class=md-nav__link> <span class=md-ellipsis> accept </span> </a> </li> <li class=md-nav__item> <a href=../array/ class=md-nav__link> <span class=md-ellipsis> array </span> </a> </li> <li class=md-nav__item> <a href=../array_t/ class=md-nav__link> <span class=md-ellipsis> array_t </span> </a> </li> <li class=md-nav__item> <a href=../at/ class=md-nav__link> <span class=md-ellipsis> at </span> </a> </li> <li class=md-nav__item> <a href=../back/ class=md-nav__link> <span class=md-ellipsis> back </span> </a> </li> <li class=md-nav__item> <a href=../begin/ class=md-nav__link> <span class=md-ellipsis> begin </span> </a> </li> <li class=md-nav__item> <a href=../binary/ class=md-nav__link> <span class=md-ellipsis> binary </span> </a> </li> <li class=md-nav__item> <a href=../binary_t/ class=md-nav__link> <span class=md-ellipsis> binary_t </span> </a> </li> <li class=md-nav__item> <a href=../boolean_t/ class=md-nav__link> <span class=md-ellipsis> boolean_t </span> </a> </li> <li class=md-nav__item> <a href=../cbegin/ class=md-nav__link> <span class=md-ellipsis> cbegin </span> </a> </li> <li class=md-nav__item> <a href=../cbor_tag_handler_t/ class=md-nav__link> <span class=md-ellipsis> cbor_tag_handler_t </span> </a> </li> <li class=md-nav__item> <a href=../cend/ class=md-nav__link> <span class=md-ellipsis> cend </span> </a> </li> <li class=md-nav__item> <a href=../clear/ class=md-nav__link> <span class=md-ellipsis> clear </span> </a> </li> <li class=md-nav__item> <a href=../contains/ class=md-nav__link> <span class=md-ellipsis> contains </span> </a> </li> <li class=md-nav__item> <a href=../count/ class=md-nav__link> <span class=md-ellipsis> count </span> </a> </li> <li class=md-nav__item> <a href=../crbegin/ class=md-nav__link> <span class=md-ellipsis> crbegin </span> </a> </li> <li class=md-nav__item> <a href=../crend/ class=md-nav__link> <span class=md-ellipsis> crend </span> </a> </li> <li class=md-nav__item> <a href=../default_object_comparator_t/ class=md-nav__link> <span class=md-ellipsis> default_object_comparator_t </span> </a> </li> <li class=md-nav__item> <a href=../diff/ class=md-nav__link> <span class=md-ellipsis> diff </span> </a> </li> <li class=md-nav__item> <a href=../dump/ class=md-nav__link> <span class=md-ellipsis> dump </span> </a> </li> <li class=md-nav__item> <a href=../emplace/ class=md-nav__link> <span class=md-ellipsis> emplace </span> </a> </li> <li class=md-nav__item> <a href=../emplace_back/ class=md-nav__link> <span class=md-ellipsis> emplace_back </span> </a> </li> <li class=md-nav__item> <a href=../empty/ class=md-nav__link> <span class=md-ellipsis> empty </span> </a> </li> <li class=md-nav__item> <a href=../end/ class=md-nav__link> <span class=md-ellipsis> end </span> </a> </li> <li class=md-nav__item> <a href=../end_pos/ class=md-nav__link> <span class=md-ellipsis> end_pos </span> </a> </li> <li class=md-nav__item> <a href=../erase/ class=md-nav__link> <span class=md-ellipsis> erase </span> </a> </li> <li class=md-nav__item> <a href=../error_handler_t/ class=md-nav__link> <span class=md-ellipsis> error_handler_t </span> </a> </li> <li class=md-nav__item> <a href=../exception/ class=md-nav__link> <span class=md-ellipsis> exception </span> </a> </li> <li class=md-nav__item> <a href=../find/ class=md-nav__link> <span class=md-ellipsis> find </span> </a> </li> <li class=md-nav__item> <a href=../flatten/ class=md-nav__link> <span class=md-ellipsis> flatten </span> </a> </li> <li class=md-nav__item> <a href=../from_bjdata/ class=md-nav__link> <span class=md-ellipsis> from_bjdata </span> </a> </li> <li class=md-nav__item> <a href=../from_bson/ class=md-nav__link> <span class=md-ellipsis> from_bson </span> </a> </li> <li class=md-nav__item> <a href=../from_cbor/ class=md-nav__link> <span class=md-ellipsis> from_cbor </span> </a> </li> <li class=md-nav__item> <a href=../from_msgpack/ class=md-nav__link> <span class=md-ellipsis> from_msgpack </span> </a> </li> <li class=md-nav__item> <a href=../from_ubjson/ class=md-nav__link> <span class=md-ellipsis> from_ubjson </span> </a> </li> <li class=md-nav__item> <a href=../front/ class=md-nav__link> <span class=md-ellipsis> front </span> </a> </li> <li class=md-nav__item> <a href=../get/ class=md-nav__link> <span class=md-ellipsis> get </span> </a> </li> <li class=md-nav__item> <a href=../get_allocator/ class=md-nav__link> <span class=md-ellipsis> get_allocator </span> </a> </li> <li class=md-nav__item> <a href=../get_binary/ class=md-nav__link> <span class=md-ellipsis> get_binary </span> </a> </li> <li class=md-nav__item> <a href=../get_ptr/ class=md-nav__link> <span class=md-ellipsis> get_ptr </span> </a> </li> <li class=md-nav__item> <a href=../get_ref/ class=md-nav__link> <span class=md-ellipsis> get_ref </span> </a> </li> <li class=md-nav__item> <a href=../get_to/ class=md-nav__link> <span class=md-ellipsis> get_to </span> </a> </li> <li class=md-nav__item> <a href=../std_hash/ class=md-nav__link> <span class=md-ellipsis> std::hash&lt;basic_json&gt; </span> </a> </li> <li class=md-nav__item> <a href=../input_format_t/ class=md-nav__link> <span class=md-ellipsis> input_format_t </span> </a> </li> <li class=md-nav__item> <a href=../insert/ class=md-nav__link> <span class=md-ellipsis> insert </span> </a> </li> <li class=md-nav__item> <a href=../invalid_iterator/ class=md-nav__link> <span class=md-ellipsis> invalid_iterator </span> </a> </li> <li class=md-nav__item> <a href=../is_array/ class=md-nav__link> <span class=md-ellipsis> is_array </span> </a> </li> <li class=md-nav__item> <a href=../is_binary/ class=md-nav__link> <span class=md-ellipsis> is_binary </span> </a> </li> <li class=md-nav__item> <a href=../is_boolean/ class=md-nav__link> <span class=md-ellipsis> is_boolean </span> </a> </li> <li class=md-nav__item> <a href=../is_discarded/ class=md-nav__link> <span class=md-ellipsis> is_discarded </span> </a> </li> <li class=md-nav__item> <a href=../is_null/ class=md-nav__link> <span class=md-ellipsis> is_null </span> </a> </li> <li class=md-nav__item> <a href=../is_number/ class=md-nav__link> <span class=md-ellipsis> is_number </span> </a> </li> <li class=md-nav__item> <a href=../is_number_float/ class=md-nav__link> <span class=md-ellipsis> is_number_float </span> </a> </li> <li class=md-nav__item> <a href=../is_number_integer/ class=md-nav__link> <span class=md-ellipsis> is_number_integer </span> </a> </li> <li class=md-nav__item> <a href=../is_number_unsigned/ class=md-nav__link> <span class=md-ellipsis> is_number_unsigned </span> </a> </li> <li class=md-nav__item> <a href=../is_object/ class=md-nav__link> <span class=md-ellipsis> is_object </span> </a> </li> <li class=md-nav__item> <a href=../is_primitive/ class=md-nav__link> <span class=md-ellipsis> is_primitive </span> </a> </li> <li class=md-nav__item> <a href=../is_string/ class=md-nav__link> <span class=md-ellipsis> is_string </span> </a> </li> <li class=md-nav__item> <a href=../is_structured/ class=md-nav__link> <span class=md-ellipsis> is_structured </span> </a> </li> <li class=md-nav__item> <a href=../items/ class=md-nav__link> <span class=md-ellipsis> items </span> </a> </li> <li class=md-nav__item> <a href=../json_base_class_t/ class=md-nav__link> <span class=md-ellipsis> json_base_class_t </span> </a> </li> <li class=md-nav__item> <a href=../json_serializer/ class=md-nav__link> <span class=md-ellipsis> json_serializer </span> </a> </li> <li class=md-nav__item> <a href=../max_size/ class=md-nav__link> <span class=md-ellipsis> max_size </span> </a> </li> <li class=md-nav__item> <a href=../meta/ class=md-nav__link> <span class=md-ellipsis> meta </span> </a> </li> <li class=md-nav__item> <a href=../merge_patch/ class=md-nav__link> <span class=md-ellipsis> merge_patch </span> </a> </li> <li class=md-nav__item> <a href=../number_float_t/ class=md-nav__link> <span class=md-ellipsis> number_float_t </span> </a> </li> <li class=md-nav__item> <a href=../number_integer_t/ class=md-nav__link> <span class=md-ellipsis> number_integer_t </span> </a> </li> <li class=md-nav__item> <a href=../number_unsigned_t/ class=md-nav__link> <span class=md-ellipsis> number_unsigned_t </span> </a> </li> <li class=md-nav__item> <a href=../object/ class=md-nav__link> <span class=md-ellipsis> object </span> </a> </li> <li class=md-nav__item> <a href=../object_comparator_t/ class=md-nav__link> <span class=md-ellipsis> object_comparator_t </span> </a> </li> <li class=md-nav__item> <a href=../object_t/ class=md-nav__link> <span class=md-ellipsis> object_t </span> </a> </li> <li class=md-nav__item> <a href=../operator_ValueType/ class=md-nav__link> <span class=md-ellipsis> operator ValueType </span> </a> </li> <li class=md-nav__item> <a href=../operator_value_t/ class=md-nav__link> <span class=md-ellipsis> operator value_t </span> </a> </li> <li class=md-nav__item> <a href=../operator%5B%5D/ class=md-nav__link> <span class=md-ellipsis> operator[] </span> </a> </li> <li class=md-nav__item> <a href=../operator%3D/ class=md-nav__link> <span class=md-ellipsis> operator= </span> </a> </li> <li class=md-nav__item> <a href=../operator%2B%3D/ class=md-nav__link> <span class=md-ellipsis> operator+= </span> </a> </li> <li class=md-nav__item> <a href=../operator_eq/ class=md-nav__link> <span class=md-ellipsis> operator== </span> </a> </li> <li class=md-nav__item> <a href=../operator_ne/ class=md-nav__link> <span class=md-ellipsis> operator!= </span> </a> </li> <li class=md-nav__item> <a href=../operator_lt/ class=md-nav__link> <span class=md-ellipsis> operator< </span> </a> </li> <li class=md-nav__item> <a href=../operator_gt/ class=md-nav__link> <span class=md-ellipsis> operator> </span> </a> </li> <li class=md-nav__item> <a href=../operator_le/ class=md-nav__link> <span class=md-ellipsis> operator<= </span> </a> </li> <li class=md-nav__item> <a href=../operator_ge/ class=md-nav__link> <span class=md-ellipsis> operator>= </span> </a> </li> <li class=md-nav__item> <a href=../operator_spaceship/ class=md-nav__link> <span class=md-ellipsis> operator<=> </span> </a> </li> <li class=md-nav__item> <a href=../out_of_range/ class=md-nav__link> <span class=md-ellipsis> out_of_range </span> </a> </li> <li class=md-nav__item> <a href=../other_error/ class=md-nav__link> <span class=md-ellipsis> other_error </span> </a> </li> <li class=md-nav__item> <a href=../parse/ class=md-nav__link> <span class=md-ellipsis> parse </span> </a> </li> <li class=md-nav__item> <a href=../parse_error/ class=md-nav__link> <span class=md-ellipsis> parse_error </span> </a> </li> <li class=md-nav__item> <a href=../parse_event_t/ class=md-nav__link> <span class=md-ellipsis> parse_event_t </span> </a> </li> <li class="md-nav__item md-nav__item--active"> <input class="md-nav__toggle md-toggle" type=checkbox id=__toc> <label class="md-nav__link md-nav__link--active" for=__toc> <span class=md-ellipsis> parser_callback_t </span> <span class="md-nav__icon md-icon"></span> </label> <a href=./ class="md-nav__link md-nav__link--active"> <span class=md-ellipsis> parser_callback_t </span> </a> <nav class="md-nav md-nav--secondary" aria-label="Table of contents"> <label class=md-nav__title for=__toc> <span class="md-nav__icon md-icon"></span> Table of contents </label> <ul class=md-nav__list data-md-component=toc data-md-scrollfix> <li class=md-nav__item> <a href=#parameters class=md-nav__link> <span class=md-ellipsis> Parameters </span> </a> </li> <li class=md-nav__item> <a href=#return-value class=md-nav__link> <span class=md-ellipsis> Return value </span> </a> </li> <li class=md-nav__item> <a href=#examples class=md-nav__link> <span class=md-ellipsis> Examples </span> </a> </li> <li class=md-nav__item> <a href=#version-history class=md-nav__link> <span class=md-ellipsis> Version history </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../patch/ class=md-nav__link> <span class=md-ellipsis> patch </span> </a> </li> <li class=md-nav__item> <a href=../patch_inplace/ class=md-nav__link> <span class=md-ellipsis> patch_inplace </span> </a> </li> <li class=md-nav__item> <a href=../push_back/ class=md-nav__link> <span class=md-ellipsis> push_back </span> </a> </li> <li class=md-nav__item> <a href=../rbegin/ class=md-nav__link> <span class=md-ellipsis> rbegin </span> </a> </li> <li class=md-nav__item> <a href=../rend/ class=md-nav__link> <span class=md-ellipsis> rend </span> </a> </li> <li class=md-nav__item> <a href=../sax_parse/ class=md-nav__link> <span class=md-ellipsis> sax_parse </span> </a> </li> <li class=md-nav__item> <a href=../size/ class=md-nav__link> <span class=md-ellipsis> size </span> </a> </li> <li class=md-nav__item> <a href=../start_pos/ class=md-nav__link> <span class=md-ellipsis> start_pos </span> </a> </li> <li class=md-nav__item> <a href=../string_t/ class=md-nav__link> <span class=md-ellipsis> string_t </span> </a> </li> <li class=md-nav__item> <a href=../swap/ class=md-nav__link> <span class=md-ellipsis> swap </span> </a> </li> <li class=md-nav__item> <a href=../std_swap/ class=md-nav__link> <span class=md-ellipsis> std::swap&lt;basic_json&gt; </span> </a> </li> <li class=md-nav__item> <a href=../to_bjdata/ class=md-nav__link> <span class=md-ellipsis> to_bjdata </span> </a> </li> <li class=md-nav__item> <a href=../to_bson/ class=md-nav__link> <span class=md-ellipsis> to_bson </span> </a> </li> <li class=md-nav__item> <a href=../to_cbor/ class=md-nav__link> <span class=md-ellipsis> to_cbor </span> </a> </li> <li class=md-nav__item> <a href=../to_msgpack/ class=md-nav__link> <span class=md-ellipsis> to_msgpack </span> </a> </li> <li class=md-nav__item> <a href=../to_string/ class=md-nav__link> <span class=md-ellipsis> to_string </span> </a> </li> <li class=md-nav__item> <a href=../to_ubjson/ class=md-nav__link> <span class=md-ellipsis> to_ubjson </span> </a> </li> <li class=md-nav__item> <a href=../type/ class=md-nav__link> <span class=md-ellipsis> type </span> </a> </li> <li class=md-nav__item> <a href=../type_error/ class=md-nav__link> <span class=md-ellipsis> type_error </span> </a> </li> <li class=md-nav__item> <a href=../type_name/ class=md-nav__link> <span class=md-ellipsis> type_name </span> </a> </li> <li class=md-nav__item> <a href=../unflatten/ class=md-nav__link> <span class=md-ellipsis> unflatten </span> </a> </li> <li class=md-nav__item> <a href=../update/ class=md-nav__link> <span class=md-ellipsis> update </span> </a> </li> <li class=md-nav__item> <a href=../value/ class=md-nav__link> <span class=md-ellipsis> value </span> </a> </li> <li class=md-nav__item> <a href=../value_t/ class=md-nav__link> <span class=md-ellipsis> value_t </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_2> <div class="md-nav__link md-nav__container"> <a href=../../byte_container_with_subtype/ class="md-nav__link "> <span class=md-ellipsis> byte_container_with_subtype </span> </a> <label class="md-nav__link " for=__nav_4_2 id=__nav_4_2_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_2_label aria-expanded=false> <label class=md-nav__title for=__nav_4_2> <span class="md-nav__icon md-icon"></span> byte_container_with_subtype </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../byte_container_with_subtype/byte_container_with_subtype/ class=md-nav__link> <span class=md-ellipsis> (constructor) </span> </a> </li> <li class=md-nav__item> <a href=../../byte_container_with_subtype/clear_subtype/ class=md-nav__link> <span class=md-ellipsis> clear_subtype </span> </a> </li> <li class=md-nav__item> <a href=../../byte_container_with_subtype/has_subtype/ class=md-nav__link> <span class=md-ellipsis> has_subtype </span> </a> </li> <li class=md-nav__item> <a href=../../byte_container_with_subtype/set_subtype/ class=md-nav__link> <span class=md-ellipsis> set_subtype </span> </a> </li> <li class=md-nav__item> <a href=../../byte_container_with_subtype/subtype/ class=md-nav__link> <span class=md-ellipsis> subtype </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_3> <div class="md-nav__link md-nav__container"> <a href=../../adl_serializer/ class="md-nav__link "> <span class=md-ellipsis> adl_serializer </span> </a> <label class="md-nav__link " for=__nav_4_3 id=__nav_4_3_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_3_label aria-expanded=false> <label class=md-nav__title for=__nav_4_3> <span class="md-nav__icon md-icon"></span> adl_serializer </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../adl_serializer/from_json/ class=md-nav__link> <span class=md-ellipsis> from_json </span> </a> </li> <li class=md-nav__item> <a href=../../adl_serializer/to_json/ class=md-nav__link> <span class=md-ellipsis> to_json </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../json/ class=md-nav__link> <span class=md-ellipsis> json </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_5> <div class="md-nav__link md-nav__container"> <a href=../../json_pointer/ class="md-nav__link "> <span class=md-ellipsis> json_pointer </span> </a> <label class="md-nav__link " for=__nav_4_5 id=__nav_4_5_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_5_label aria-expanded=false> <label class=md-nav__title for=__nav_4_5> <span class="md-nav__icon md-icon"></span> json_pointer </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../json_pointer/json_pointer/ class=md-nav__link> <span class=md-ellipsis> (Constructor) </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/back/ class=md-nav__link> <span class=md-ellipsis> back </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/empty/ class=md-nav__link> <span class=md-ellipsis> empty </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/front/ class=md-nav__link> <span class=md-ellipsis> front </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_string_t/ class=md-nav__link> <span class=md-ellipsis> operator string_t </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_eq/ class=md-nav__link> <span class=md-ellipsis> operator== </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_ne/ class=md-nav__link> <span class=md-ellipsis> operator!= </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_slash/ class=md-nav__link> <span class=md-ellipsis> operator/ </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_slasheq/ class=md-nav__link> <span class=md-ellipsis> operator/= </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/parent_pointer/ class=md-nav__link> <span class=md-ellipsis> parent_pointer </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/pop_back/ class=md-nav__link> <span class=md-ellipsis> pop_back </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/pop_front/ class=md-nav__link> <span class=md-ellipsis> pop_front </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/push_back/ class=md-nav__link> <span class=md-ellipsis> push_back </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/push_front/ class=md-nav__link> <span class=md-ellipsis> push_front </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/string_t/ class=md-nav__link> <span class=md-ellipsis> string_t </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/to_string/ class=md-nav__link> <span class=md-ellipsis> to_string </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_6> <div class="md-nav__link md-nav__container"> <a href=../../json_sax/ class="md-nav__link "> <span class=md-ellipsis> json_sax </span> </a> <label class="md-nav__link " for=__nav_4_6 id=__nav_4_6_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_6_label aria-expanded=false> <label class=md-nav__title for=__nav_4_6> <span class="md-nav__icon md-icon"></span> json_sax </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../json_sax/binary/ class=md-nav__link> <span class=md-ellipsis> binary </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/boolean/ class=md-nav__link> <span class=md-ellipsis> boolean </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/end_array/ class=md-nav__link> <span class=md-ellipsis> end_array </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/end_object/ class=md-nav__link> <span class=md-ellipsis> end_object </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/key/ class=md-nav__link> <span class=md-ellipsis> key </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/null/ class=md-nav__link> <span class=md-ellipsis> null </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/number_float/ class=md-nav__link> <span class=md-ellipsis> number_float </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/number_integer/ class=md-nav__link> <span class=md-ellipsis> number_integer </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/number_unsigned/ class=md-nav__link> <span class=md-ellipsis> number_unsigned </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/parse_error/ class=md-nav__link> <span class=md-ellipsis> parse_error </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/start_array/ class=md-nav__link> <span class=md-ellipsis> start_array </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/start_object/ class=md-nav__link> <span class=md-ellipsis> start_object </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/string/ class=md-nav__link> <span class=md-ellipsis> string </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../operator_ltlt/ class=md-nav__link> <span class=md-ellipsis> operator<<(basic_json), operator<<(json_pointer) </span> </a> </li> <li class=md-nav__item> <a href=../../operator_gtgt/ class=md-nav__link> <span class=md-ellipsis> operator>>(basic_json) </span> </a> </li> <li class=md-nav__item> <a href=../../operator_literal_json/ class=md-nav__link> <span class=md-ellipsis> operator""_json </span> </a> </li> <li class=md-nav__item> <a href=../../operator_literal_json_pointer/ class=md-nav__link> <span class=md-ellipsis> operator""_json_pointer </span> </a> </li> <li class=md-nav__item> <a href=../../ordered_json/ class=md-nav__link> <span class=md-ellipsis> ordered_json </span> </a> </li> <li class=md-nav__item> <a href=../../ordered_map/ class=md-nav__link> <span class=md-ellipsis> ordered_map </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_13> <div class="md-nav__link md-nav__container"> <a href=../../macros/ class="md-nav__link "> <span class=md-ellipsis> macros </span> </a> <label class="md-nav__link " for=__nav_4_13 id=__nav_4_13_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_13_label aria-expanded=false> <label class=md-nav__title for=__nav_4_13> <span class="md-nav__icon md-icon"></span> macros </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../macros/json_assert/ class=md-nav__link> <span class=md-ellipsis> JSON_ASSERT </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_brace_init_copy_semantics/ class=md-nav__link> <span class=md-ellipsis> JSON_BRACE_INIT_COPY_SEMANTICS </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_throw_user/ class=md-nav__link> <span class=md-ellipsis> JSON_CATCH_USER, JSON_THROW_USER, JSON_TRY_USER </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_diagnostics/ class=md-nav__link> <span class=md-ellipsis> JSON_DIAGNOSTICS </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_diagnostic_positions/ class=md-nav__link> <span class=md-ellipsis> JSON_DIAGNOSTIC_POSITIONS </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_disable_enum_serialization/ class=md-nav__link> <span class=md-ellipsis> JSON_DISABLE_ENUM_SERIALIZATION </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_has_cpp_11/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_CPP_11, JSON_HAS_CPP_14, JSON_HAS_CPP_17, JSON_HAS_CPP_20 </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_has_filesystem/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_EXPERIMENTAL_FILESYSTEM, JSON_HAS_FILESYSTEM </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_has_ranges/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_RANGES </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_has_static_rtti/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_STATIC_RTTI </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_has_three_way_comparison/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_THREE_WAY_COMPARISON </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_noexception/ class=md-nav__link> <span class=md-ellipsis> JSON_NOEXCEPTION </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_no_io/ class=md-nav__link> <span class=md-ellipsis> JSON_NO_IO </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_skip_library_version_check/ class=md-nav__link> <span class=md-ellipsis> JSON_SKIP_LIBRARY_VERSION_CHECK </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_skip_unsupported_compiler_check/ class=md-nav__link> <span class=md-ellipsis> JSON_SKIP_UNSUPPORTED_COMPILER_CHECK </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_use_global_udls/ class=md-nav__link> <span class=md-ellipsis> JSON_USE_GLOBAL_UDLS </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_use_implicit_conversions/ class=md-nav__link> <span class=md-ellipsis> JSON_USE_IMPLICIT_CONVERSIONS </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_use_legacy_discarded_value_comparison/ class=md-nav__link> <span class=md-ellipsis> JSON_USE_LEGACY_DISCARDED_VALUE_COMPARISON </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_define_derived_type/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_ONLY_SERIALIZE, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_define_type_intrusive/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_TYPE_INTRUSIVE, NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_TYPE_INTRUSIVE_ONLY_SERIALIZE </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_define_type_non_intrusive/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_define_type_with_names/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_TYPE_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_namespace/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_NAMESPACE </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_namespace_begin/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_NAMESPACE_BEGIN, NLOHMANN_JSON_NAMESPACE_END </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_namespace_no_version/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_NAMESPACE_NO_VERSION </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_serialize_enum/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_SERIALIZE_ENUM </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_serialize_enum_strict/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_SERIALIZE_ENUM_STRICT </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_version_major/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_VERSION_MAJOR, NLOHMANN_JSON_VERSION_MINOR, NLOHMANN_JSON_VERSION_PATCH </span> </a> </li> </ul> </nav> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_5> <div class="md-nav__link md-nav__container"> <a href=../../../community/ class="md-nav__link "> <span class=md-ellipsis> Community </span> </a> <label class="md-nav__link " for=__nav_5 id=__nav_5_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_5_label aria-expanded=false> <label class=md-nav__title for=__nav_5> <span class="md-nav__icon md-icon"></span> Community </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../community/code_of_conduct/ class=md-nav__link> <span class=md-ellipsis> Code of Conduct </span> </a> </li> <li class=md-nav__item> <a href=../../../community/contribution_guidelines/ class=md-nav__link> <span class=md-ellipsis> Contribution Guidelines </span> </a> </li> <li class=md-nav__item> <a href=../../../community/quality_assurance/ class=md-nav__link> <span class=md-ellipsis> Quality assurance </span> </a> </li> <li class=md-nav__item> <a href=../../../community/governance/ class=md-nav__link> <span class=md-ellipsis> Governance </span> </a> </li> <li class=md-nav__item> <a href=../../../community/security_policy/ class=md-nav__link> <span class=md-ellipsis> Security Policy </span> </a> </li> </ul> </nav> </li> </ul> </nav> </div> </div> </div> <div class="md-sidebar md-sidebar--secondary" data-md-component=sidebar data-md-type=toc> <div class=md-sidebar__scrollwrap> <div class=md-sidebar__inner> <nav class="md-nav md-nav--secondary" aria-label="Table of contents"> <label class=md-nav__title for=__toc> <span class="md-nav__icon md-icon"></span> Table of contents </label> <ul class=md-nav__list data-md-component=toc data-md-scrollfix> <li class=md-nav__item> <a href=#parameters class=md-nav__link> <span class=md-ellipsis> Parameters </span> </a> </li> <li class=md-nav__item> <a href=#return-value class=md-nav__link> <span class=md-ellipsis> Return value </span> </a> </li> <li class=md-nav__item> <a href=#examples class=md-nav__link> <span class=md-ellipsis> Examples </span> </a> </li> <li class=md-nav__item> <a href=#version-history class=md-nav__link> <span class=md-ellipsis> Version history </span> </a> </li> </ul> </nav> </div> </div> </div> <div class=md-content data-md-component=content> <article class="md-content__inner md-typeset"> <a href="https://github.com/nlohmann/json/edit/develop/docs/mkdocs/docs/api/basic_json/parser_callback_t.md" title="Edit this page" class="md-content__button md-icon" rel="edit"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M10 20H6V4h7v5h5v3.1l2-2V8l-6-6H6c-1.1 0-2 .9-2 2v16c0 1.1.9 2 2 2h4zm10.2-7c.1 0 .3.1.4.2l1.3 1.3c.2.2.2.6 0 .8l-1 1-2.1-2.1 1-1c.1-.1.2-.2.4-.2m0 3.9L14.1 23H12v-2.1l6.1-6.1z"/></svg> </a> <a href="https://github.com/nlohmann/json/raw/develop/docs/mkdocs/docs/api/basic_json/parser_callback_t.md" title="View source of this page" class="md-content__button md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M17 18c.56 0 1 .44 1 1s-.44 1-1 1-1-.44-1-1 .44-1 1-1m0-3c-2.73 0-5.06 1.66-6 4 .94 2.34 3.27 4 6 4s5.06-1.66 6-4c-.94-2.34-3.27-4-6-4m0 6.5a2.5 2.5 0 0 1-2.5-2.5 2.5 2.5 0 0 1 2.5-2.5 2.5 2.5 0 0 1 2.5 2.5 2.5 2.5 0 0 1-2.5 2.5M9.27 20H6V4h7v5h5v4.07c.7.08 1.36.25 2 .49V8l-6-6H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h4.5a8.2 8.2 0 0 1-1.23-2"/></svg> </a> <h1 id=nlohmannbasic_jsonparser_callback_t><small>nlohmann::basic_json::</small>parser_callback_t<a class=headerlink href=#nlohmannbasic_jsonparser_callback_t title="Permanent link">&para;</a></h1> <div class=highlight><pre><span></span><code><span class=k>template</span><span class=o>&lt;</span><span class=k>typename</span><span class=w> </span><span class=nc>BasicJsonType</span><span class=o>&gt;</span>
+<!doctype html><html lang=en class=no-js> <head><meta charset=utf-8><meta name=viewport content="width=device-width,initial-scale=1"><meta name=author content="Niels Lohmann"><link href="https://json.nlohmann.me/api/basic_json/parser_callback_t/" rel="canonical"><link href=../parse_event_t/ rel=prev><link href=../patch/ rel=next><link rel=icon href=../../../assets/images/favicon.png><meta name=generator content="mkdocs-1.6.1, mkdocs-material-9.7.6"><title>parser_callback_t - JSON for Modern C++</title><link rel=stylesheet href=../../../assets/stylesheets/main.484c7ddc.min.css><link rel=stylesheet href=../../../assets/stylesheets/palette.ab4e12ef.min.css><link rel="stylesheet" href="../../../assets/external/fonts.googleapis.com/css.61a430c9.css"><style>:root{--md-text-font:"Roboto";--md-code-font:"JetBrains Mono"}</style><link rel=stylesheet href=../../../css/custom.css><script>__md_scope=new URL("../../..",location),__md_hash=e=>[...e].reduce(((e,_)=>(e<<5)-e+_.charCodeAt(0)),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script></head> <body dir=ltr data-md-color-scheme=default data-md-color-primary=indigo data-md-color-accent=indigo> <input class=md-toggle data-md-toggle=drawer type=checkbox id=__drawer autocomplete=off> <input class=md-toggle data-md-toggle=search type=checkbox id=__search autocomplete=off> <label class=md-overlay for=__drawer></label> <div data-md-component=skip> <a href=#nlohmannbasic_jsonparser_callback_t class=md-skip> Skip to content </a> </div> <div data-md-component=announce> </div> <header class=md-header data-md-component=header> <nav class="md-header__inner md-grid" aria-label=Header> <a href=../../.. title="JSON for Modern C++" class="md-header__button md-logo" aria-label="JSON for Modern C++" data-md-component=logo> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54"/></svg> </a> <label class="md-header__button md-icon" for=__drawer> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M3 6h18v2H3zm0 5h18v2H3zm0 5h18v2H3z"/></svg> </label> <div class=md-header__title data-md-component=header-title> <div class=md-header__ellipsis> <div class=md-header__topic> <span class=md-ellipsis> JSON for Modern C++ </span> </div> <div class=md-header__topic data-md-component=header-topic> <span class=md-ellipsis> parser_callback_t </span> </div> </div> </div> <form class=md-header__option data-md-component=palette> <input class=md-option data-md-color-media="(prefers-color-scheme: light)" data-md-color-scheme=default data-md-color-primary=indigo data-md-color-accent=indigo aria-label="Switch to dark mode" type=radio name=__palette id=__palette_0> <label class="md-header__button md-icon" title="Switch to dark mode" for=__palette_1 hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a4 4 0 0 0-4 4 4 4 0 0 0 4 4 4 4 0 0 0 4-4 4 4 0 0 0-4-4m0 10a6 6 0 0 1-6-6 6 6 0 0 1 6-6 6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12z"/></svg> </label> <input class=md-option data-md-color-media="(prefers-color-scheme: dark)" data-md-color-scheme=slate data-md-color-primary=indigo data-md-color-accent=indigo aria-label="Switch to light mode" type=radio name=__palette id=__palette_1> <label class="md-header__button md-icon" title="Switch to light mode" for=__palette_0 hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 18c-.89 0-1.74-.2-2.5-.55C11.56 16.5 13 14.42 13 12s-1.44-4.5-3.5-5.45C10.26 6.2 11.11 6 12 6a6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12z"/></svg> </label> </form> <script>var palette=__md_get("__palette");if(palette&&palette.color){if("(prefers-color-scheme)"===palette.color.media){var media=matchMedia("(prefers-color-scheme: light)"),input=document.querySelector(media.matches?"[data-md-color-media='(prefers-color-scheme: light)']":"[data-md-color-media='(prefers-color-scheme: dark)']");palette.color.media=input.getAttribute("data-md-color-media"),palette.color.scheme=input.getAttribute("data-md-color-scheme"),palette.color.primary=input.getAttribute("data-md-color-primary"),palette.color.accent=input.getAttribute("data-md-color-accent")}for(var[key,value]of Object.entries(palette.color))document.body.setAttribute("data-md-color-"+key,value)}</script> <label class="md-header__button md-icon" for=__search> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg> </label> <div class=md-search data-md-component=search role=dialog> <label class=md-search__overlay for=__search></label> <div class=md-search__inner role=search> <form class=md-search__form name=search> <input type=text class=md-search__input name=query aria-label=Search placeholder=Search autocapitalize=off autocorrect=off autocomplete=off spellcheck=false data-md-component=search-query required> <label class="md-search__icon md-icon" for=__search> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11z"/></svg> </label> <nav class=md-search__options aria-label=Search> <button type=reset class="md-search__icon md-icon" title=Clear aria-label=Clear tabindex=-1> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z"/></svg> </button> </nav> </form> <div class=md-search__output> <div class=md-search__scrollwrap tabindex=0 data-md-scrollfix> <div class=md-search-result data-md-component=search-result> <div class=md-search-result__meta> Initializing search </div> <ol class=md-search-result__list role=presentation></ol> </div> </div> </div> </div> </div> <div class=md-header__source> <a href="https://github.com/nlohmann/json" title="Go to repository" class="md-source" data-md-component="source"> <div class="md-source__icon md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </div> <div class=md-source__repository> nlohmann/json </div> </a> </div> </nav> </header> <div class=md-container data-md-component=container> <nav class=md-tabs aria-label=Tabs data-md-component=tabs> <div class=md-grid> <ul class=md-tabs__list> <li class=md-tabs__item> <a href=../../.. class=md-tabs__link> Home </a> </li> <li class=md-tabs__item> <a href=../../../features/arbitrary_types/ class=md-tabs__link> Features </a> </li> <li class=md-tabs__item> <a href=../../../integration/ class=md-tabs__link> Integration </a> </li> <li class="md-tabs__item md-tabs__item--active"> <a href=../ class=md-tabs__link> API Documentation </a> </li> <li class=md-tabs__item> <a href=../../../community/ class=md-tabs__link> Community </a> </li> </ul> </div> </nav> <main class=md-main data-md-component=main> <div class="md-main__inner md-grid"> <div class="md-sidebar md-sidebar--primary" data-md-component=sidebar data-md-type=navigation> <div class=md-sidebar__scrollwrap> <div class=md-sidebar__inner> <nav class="md-nav md-nav--primary md-nav--lifted" aria-label=Navigation data-md-level=0> <label class=md-nav__title for=__drawer> <a href=../../.. title="JSON for Modern C++" class="md-nav__button md-logo" aria-label="JSON for Modern C++" data-md-component=logo> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54"/></svg> </a> JSON for Modern C++ </label> <div class=md-nav__source> <a href="https://github.com/nlohmann/json" title="Go to repository" class="md-source" data-md-component="source"> <div class="md-source__icon md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </div> <div class=md-source__repository> nlohmann/json </div> </a> </div> <ul class=md-nav__list data-md-scrollfix> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_1> <div class="md-nav__link md-nav__container"> <a href=../../.. class="md-nav__link "> <span class=md-ellipsis> Home </span> </a> <label class="md-nav__link " for=__nav_1 id=__nav_1_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_1_label aria-expanded=false> <label class=md-nav__title for=__nav_1> <span class="md-nav__icon md-icon"></span> Home </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../home/license/ class=md-nav__link> <span class=md-ellipsis> License </span> </a> </li> <li class=md-nav__item> <a href=../../../home/faq/ class=md-nav__link> <span class=md-ellipsis> FAQ </span> </a> </li> <li class=md-nav__item> <a href=../../../home/exceptions/ class=md-nav__link> <span class=md-ellipsis> Exceptions </span> </a> </li> <li class=md-nav__item> <a href=../../../home/releases/ class=md-nav__link> <span class=md-ellipsis> Releases </span> </a> </li> <li class=md-nav__item> <a href=../../../home/design_goals/ class=md-nav__link> <span class=md-ellipsis> Design goals </span> </a> </li> <li class=md-nav__item> <a href=../../../home/architecture/ class=md-nav__link> <span class=md-ellipsis> Architecture </span> </a> </li> <li class=md-nav__item> <a href=../../../home/customers/ class=md-nav__link> <span class=md-ellipsis> Customers </span> </a> </li> <li class=md-nav__item> <a href=../../../home/sponsors/ class=md-nav__link> <span class=md-ellipsis> Sponsors </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2> <label class=md-nav__link for=__nav_2 id=__nav_2_label tabindex=0> <span class=md-ellipsis> Features </span> <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_2_label aria-expanded=false> <label class=md-nav__title for=__nav_2> <span class="md-nav__icon md-icon"></span> Features </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/arbitrary_types/ class=md-nav__link> <span class=md-ellipsis> Arbitrary Type Conversions </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_2> <div class="md-nav__link md-nav__container"> <a href=../../../features/binary_formats/ class="md-nav__link "> <span class=md-ellipsis> Binary Formats </span> </a> <label class="md-nav__link " for=__nav_2_2 id=__nav_2_2_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_2_label aria-expanded=false> <label class=md-nav__title for=__nav_2_2> <span class="md-nav__icon md-icon"></span> Binary Formats </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/binary_formats/bjdata/ class=md-nav__link> <span class=md-ellipsis> BJData </span> </a> </li> <li class=md-nav__item> <a href=../../../features/binary_formats/bson/ class=md-nav__link> <span class=md-ellipsis> BSON </span> </a> </li> <li class=md-nav__item> <a href=../../../features/binary_formats/cbor/ class=md-nav__link> <span class=md-ellipsis> CBOR </span> </a> </li> <li class=md-nav__item> <a href=../../../features/binary_formats/messagepack/ class=md-nav__link> <span class=md-ellipsis> MessagePack </span> </a> </li> <li class=md-nav__item> <a href=../../../features/binary_formats/ubjson/ class=md-nav__link> <span class=md-ellipsis> UBJSON </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../../features/binary_values/ class=md-nav__link> <span class=md-ellipsis> Binary Values </span> </a> </li> <li class=md-nav__item> <a href=../../../features/comments/ class=md-nav__link> <span class=md-ellipsis> Comments </span> </a> </li> <li class=md-nav__item> <a href=../../../features/trailing_commas/ class=md-nav__link> <span class=md-ellipsis> Trailing Commas </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_6> <div class="md-nav__link md-nav__container"> <a href=../../../features/element_access/ class="md-nav__link "> <span class=md-ellipsis> Element Access </span> </a> <label class="md-nav__link " for=__nav_2_6 id=__nav_2_6_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_6_label aria-expanded=false> <label class=md-nav__title for=__nav_2_6> <span class="md-nav__icon md-icon"></span> Element Access </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/element_access/unchecked_access/ class=md-nav__link> <span class=md-ellipsis> Unchecked access: operator[] </span> </a> </li> <li class=md-nav__item> <a href=../../../features/element_access/checked_access/ class=md-nav__link> <span class=md-ellipsis> Checked access: at </span> </a> </li> <li class=md-nav__item> <a href=../../../features/element_access/default_value/ class=md-nav__link> <span class=md-ellipsis> Access with default value: value </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../../features/iterators/ class=md-nav__link> <span class=md-ellipsis> Iterators </span> </a> </li> <li class=md-nav__item> <a href=../../../features/json_pointer/ class=md-nav__link> <span class=md-ellipsis> JSON Pointer </span> </a> </li> <li class=md-nav__item> <a href=../../../features/json_patch/ class=md-nav__link> <span class=md-ellipsis> JSON Patch and Diff </span> </a> </li> <li class=md-nav__item> <a href=../../../features/merge_patch/ class=md-nav__link> <span class=md-ellipsis> JSON Merge Patch </span> </a> </li> <li class=md-nav__item> <a href=../../../features/modules/ class=md-nav__link> <span class=md-ellipsis> Modules </span> </a> </li> <li class=md-nav__item> <a href=../../../features/namespace/ class=md-nav__link> <span class=md-ellipsis> nlohmann Namespace </span> </a> </li> <li class=md-nav__item> <a href=../../../features/object_order/ class=md-nav__link> <span class=md-ellipsis> Object Order </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_14> <div class="md-nav__link md-nav__container"> <a href=../../../features/parsing/ class="md-nav__link "> <span class=md-ellipsis> Parsing </span> </a> <label class="md-nav__link " for=__nav_2_14 id=__nav_2_14_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_14_label aria-expanded=false> <label class=md-nav__title for=__nav_2_14> <span class="md-nav__icon md-icon"></span> Parsing </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/parsing/json_lines/ class=md-nav__link> <span class=md-ellipsis> JSON Lines </span> </a> </li> <li class=md-nav__item> <a href=../../../features/parsing/parse_exceptions/ class=md-nav__link> <span class=md-ellipsis> Parsing and Exceptions </span> </a> </li> <li class=md-nav__item> <a href=../../../features/parsing/parser_callbacks/ class=md-nav__link> <span class=md-ellipsis> Parser Callbacks </span> </a> </li> <li class=md-nav__item> <a href=../../../features/parsing/sax_interface/ class=md-nav__link> <span class=md-ellipsis> SAX Interface </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../../features/assertions/ class=md-nav__link> <span class=md-ellipsis> Runtime Assertions </span> </a> </li> <li class=md-nav__item> <a href=../../../features/enum_conversion/ class=md-nav__link> <span class=md-ellipsis> Specializing enum conversion </span> </a> </li> <li class=md-nav__item> <a href=../../../features/macros/ class=md-nav__link> <span class=md-ellipsis> Supported Macros </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_18> <div class="md-nav__link md-nav__container"> <a href=../../../features/types/ class="md-nav__link "> <span class=md-ellipsis> Types </span> </a> <label class="md-nav__link " for=__nav_2_18 id=__nav_2_18_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_18_label aria-expanded=false> <label class=md-nav__title for=__nav_2_18> <span class="md-nav__icon md-icon"></span> Types </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/types/number_handling/ class=md-nav__link> <span class=md-ellipsis> Number Handling </span> </a> </li> </ul> </nav> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_3> <div class="md-nav__link md-nav__container"> <a href=../../../integration/ class="md-nav__link "> <span class=md-ellipsis> Integration </span> </a> <label class="md-nav__link " for=__nav_3 id=__nav_3_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_3_label aria-expanded=false> <label class=md-nav__title for=__nav_3> <span class="md-nav__icon md-icon"></span> Integration </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../integration/migration_guide/ class=md-nav__link> <span class=md-ellipsis> Migration Guide </span> </a> </li> <li class=md-nav__item> <a href=../../../integration/cmake/ class=md-nav__link> <span class=md-ellipsis> CMake </span> </a> </li> <li class=md-nav__item> <a href=../../../integration/package_managers/ class=md-nav__link> <span class=md-ellipsis> Package Managers </span> </a> </li> <li class=md-nav__item> <a href=../../../integration/pkg-config/ class=md-nav__link> <span class=md-ellipsis> Pkg-config </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--active md-nav__item--section md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4 checked> <label class=md-nav__link for=__nav_4 id=__nav_4_label tabindex> <span class=md-ellipsis> API Documentation </span> <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_4_label aria-expanded=true> <label class=md-nav__title for=__nav_4> <span class="md-nav__icon md-icon"></span> API Documentation </label> <ul class=md-nav__list data-md-scrollfix> <li class="md-nav__item md-nav__item--active md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_1 checked> <div class="md-nav__link md-nav__container"> <a href=../ class="md-nav__link "> <span class=md-ellipsis> basic_json </span> </a> <label class="md-nav__link " for=__nav_4_1 id=__nav_4_1_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_1_label aria-expanded=true> <label class=md-nav__title for=__nav_4_1> <span class="md-nav__icon md-icon"></span> basic_json </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../basic_json/ class=md-nav__link> <span class=md-ellipsis> (Constructor) </span> </a> </li> <li class=md-nav__item> <a href=../~basic_json/ class=md-nav__link> <span class=md-ellipsis> (Destructor) </span> </a> </li> <li class=md-nav__item> <a href=../accept/ class=md-nav__link> <span class=md-ellipsis> accept </span> </a> </li> <li class=md-nav__item> <a href=../array/ class=md-nav__link> <span class=md-ellipsis> array </span> </a> </li> <li class=md-nav__item> <a href=../array_t/ class=md-nav__link> <span class=md-ellipsis> array_t </span> </a> </li> <li class=md-nav__item> <a href=../at/ class=md-nav__link> <span class=md-ellipsis> at </span> </a> </li> <li class=md-nav__item> <a href=../back/ class=md-nav__link> <span class=md-ellipsis> back </span> </a> </li> <li class=md-nav__item> <a href=../begin/ class=md-nav__link> <span class=md-ellipsis> begin </span> </a> </li> <li class=md-nav__item> <a href=../binary/ class=md-nav__link> <span class=md-ellipsis> binary </span> </a> </li> <li class=md-nav__item> <a href=../binary_t/ class=md-nav__link> <span class=md-ellipsis> binary_t </span> </a> </li> <li class=md-nav__item> <a href=../boolean_t/ class=md-nav__link> <span class=md-ellipsis> boolean_t </span> </a> </li> <li class=md-nav__item> <a href=../cbegin/ class=md-nav__link> <span class=md-ellipsis> cbegin </span> </a> </li> <li class=md-nav__item> <a href=../cbor_tag_handler_t/ class=md-nav__link> <span class=md-ellipsis> cbor_tag_handler_t </span> </a> </li> <li class=md-nav__item> <a href=../cend/ class=md-nav__link> <span class=md-ellipsis> cend </span> </a> </li> <li class=md-nav__item> <a href=../clear/ class=md-nav__link> <span class=md-ellipsis> clear </span> </a> </li> <li class=md-nav__item> <a href=../contains/ class=md-nav__link> <span class=md-ellipsis> contains </span> </a> </li> <li class=md-nav__item> <a href=../count/ class=md-nav__link> <span class=md-ellipsis> count </span> </a> </li> <li class=md-nav__item> <a href=../crbegin/ class=md-nav__link> <span class=md-ellipsis> crbegin </span> </a> </li> <li class=md-nav__item> <a href=../crend/ class=md-nav__link> <span class=md-ellipsis> crend </span> </a> </li> <li class=md-nav__item> <a href=../default_object_comparator_t/ class=md-nav__link> <span class=md-ellipsis> default_object_comparator_t </span> </a> </li> <li class=md-nav__item> <a href=../diff/ class=md-nav__link> <span class=md-ellipsis> diff </span> </a> </li> <li class=md-nav__item> <a href=../dump/ class=md-nav__link> <span class=md-ellipsis> dump </span> </a> </li> <li class=md-nav__item> <a href=../emplace/ class=md-nav__link> <span class=md-ellipsis> emplace </span> </a> </li> <li class=md-nav__item> <a href=../emplace_back/ class=md-nav__link> <span class=md-ellipsis> emplace_back </span> </a> </li> <li class=md-nav__item> <a href=../empty/ class=md-nav__link> <span class=md-ellipsis> empty </span> </a> </li> <li class=md-nav__item> <a href=../end/ class=md-nav__link> <span class=md-ellipsis> end </span> </a> </li> <li class=md-nav__item> <a href=../end_pos/ class=md-nav__link> <span class=md-ellipsis> end_pos </span> </a> </li> <li class=md-nav__item> <a href=../erase/ class=md-nav__link> <span class=md-ellipsis> erase </span> </a> </li> <li class=md-nav__item> <a href=../error_handler_t/ class=md-nav__link> <span class=md-ellipsis> error_handler_t </span> </a> </li> <li class=md-nav__item> <a href=../exception/ class=md-nav__link> <span class=md-ellipsis> exception </span> </a> </li> <li class=md-nav__item> <a href=../find/ class=md-nav__link> <span class=md-ellipsis> find </span> </a> </li> <li class=md-nav__item> <a href=../flatten/ class=md-nav__link> <span class=md-ellipsis> flatten </span> </a> </li> <li class=md-nav__item> <a href=../from_bjdata/ class=md-nav__link> <span class=md-ellipsis> from_bjdata </span> </a> </li> <li class=md-nav__item> <a href=../from_bson/ class=md-nav__link> <span class=md-ellipsis> from_bson </span> </a> </li> <li class=md-nav__item> <a href=../from_cbor/ class=md-nav__link> <span class=md-ellipsis> from_cbor </span> </a> </li> <li class=md-nav__item> <a href=../from_msgpack/ class=md-nav__link> <span class=md-ellipsis> from_msgpack </span> </a> </li> <li class=md-nav__item> <a href=../from_ubjson/ class=md-nav__link> <span class=md-ellipsis> from_ubjson </span> </a> </li> <li class=md-nav__item> <a href=../front/ class=md-nav__link> <span class=md-ellipsis> front </span> </a> </li> <li class=md-nav__item> <a href=../get/ class=md-nav__link> <span class=md-ellipsis> get </span> </a> </li> <li class=md-nav__item> <a href=../get_allocator/ class=md-nav__link> <span class=md-ellipsis> get_allocator </span> </a> </li> <li class=md-nav__item> <a href=../get_binary/ class=md-nav__link> <span class=md-ellipsis> get_binary </span> </a> </li> <li class=md-nav__item> <a href=../get_ptr/ class=md-nav__link> <span class=md-ellipsis> get_ptr </span> </a> </li> <li class=md-nav__item> <a href=../get_ref/ class=md-nav__link> <span class=md-ellipsis> get_ref </span> </a> </li> <li class=md-nav__item> <a href=../get_to/ class=md-nav__link> <span class=md-ellipsis> get_to </span> </a> </li> <li class=md-nav__item> <a href=../std_hash/ class=md-nav__link> <span class=md-ellipsis> std::hash&lt;basic_json&gt; </span> </a> </li> <li class=md-nav__item> <a href=../input_format_t/ class=md-nav__link> <span class=md-ellipsis> input_format_t </span> </a> </li> <li class=md-nav__item> <a href=../insert/ class=md-nav__link> <span class=md-ellipsis> insert </span> </a> </li> <li class=md-nav__item> <a href=../invalid_iterator/ class=md-nav__link> <span class=md-ellipsis> invalid_iterator </span> </a> </li> <li class=md-nav__item> <a href=../is_array/ class=md-nav__link> <span class=md-ellipsis> is_array </span> </a> </li> <li class=md-nav__item> <a href=../is_binary/ class=md-nav__link> <span class=md-ellipsis> is_binary </span> </a> </li> <li class=md-nav__item> <a href=../is_boolean/ class=md-nav__link> <span class=md-ellipsis> is_boolean </span> </a> </li> <li class=md-nav__item> <a href=../is_discarded/ class=md-nav__link> <span class=md-ellipsis> is_discarded </span> </a> </li> <li class=md-nav__item> <a href=../is_null/ class=md-nav__link> <span class=md-ellipsis> is_null </span> </a> </li> <li class=md-nav__item> <a href=../is_number/ class=md-nav__link> <span class=md-ellipsis> is_number </span> </a> </li> <li class=md-nav__item> <a href=../is_number_float/ class=md-nav__link> <span class=md-ellipsis> is_number_float </span> </a> </li> <li class=md-nav__item> <a href=../is_number_integer/ class=md-nav__link> <span class=md-ellipsis> is_number_integer </span> </a> </li> <li class=md-nav__item> <a href=../is_number_unsigned/ class=md-nav__link> <span class=md-ellipsis> is_number_unsigned </span> </a> </li> <li class=md-nav__item> <a href=../is_object/ class=md-nav__link> <span class=md-ellipsis> is_object </span> </a> </li> <li class=md-nav__item> <a href=../is_primitive/ class=md-nav__link> <span class=md-ellipsis> is_primitive </span> </a> </li> <li class=md-nav__item> <a href=../is_string/ class=md-nav__link> <span class=md-ellipsis> is_string </span> </a> </li> <li class=md-nav__item> <a href=../is_structured/ class=md-nav__link> <span class=md-ellipsis> is_structured </span> </a> </li> <li class=md-nav__item> <a href=../items/ class=md-nav__link> <span class=md-ellipsis> items </span> </a> </li> <li class=md-nav__item> <a href=../json_base_class_t/ class=md-nav__link> <span class=md-ellipsis> json_base_class_t </span> </a> </li> <li class=md-nav__item> <a href=../json_serializer/ class=md-nav__link> <span class=md-ellipsis> json_serializer </span> </a> </li> <li class=md-nav__item> <a href=../max_size/ class=md-nav__link> <span class=md-ellipsis> max_size </span> </a> </li> <li class=md-nav__item> <a href=../meta/ class=md-nav__link> <span class=md-ellipsis> meta </span> </a> </li> <li class=md-nav__item> <a href=../merge_patch/ class=md-nav__link> <span class=md-ellipsis> merge_patch </span> </a> </li> <li class=md-nav__item> <a href=../number_float_t/ class=md-nav__link> <span class=md-ellipsis> number_float_t </span> </a> </li> <li class=md-nav__item> <a href=../number_integer_t/ class=md-nav__link> <span class=md-ellipsis> number_integer_t </span> </a> </li> <li class=md-nav__item> <a href=../number_unsigned_t/ class=md-nav__link> <span class=md-ellipsis> number_unsigned_t </span> </a> </li> <li class=md-nav__item> <a href=../object/ class=md-nav__link> <span class=md-ellipsis> object </span> </a> </li> <li class=md-nav__item> <a href=../object_comparator_t/ class=md-nav__link> <span class=md-ellipsis> object_comparator_t </span> </a> </li> <li class=md-nav__item> <a href=../object_t/ class=md-nav__link> <span class=md-ellipsis> object_t </span> </a> </li> <li class=md-nav__item> <a href=../operator_ValueType/ class=md-nav__link> <span class=md-ellipsis> operator ValueType </span> </a> </li> <li class=md-nav__item> <a href=../operator_value_t/ class=md-nav__link> <span class=md-ellipsis> operator value_t </span> </a> </li> <li class=md-nav__item> <a href=../operator%5B%5D/ class=md-nav__link> <span class=md-ellipsis> operator[] </span> </a> </li> <li class=md-nav__item> <a href=../operator%3D/ class=md-nav__link> <span class=md-ellipsis> operator= </span> </a> </li> <li class=md-nav__item> <a href=../operator%2B%3D/ class=md-nav__link> <span class=md-ellipsis> operator+= </span> </a> </li> <li class=md-nav__item> <a href=../operator_eq/ class=md-nav__link> <span class=md-ellipsis> operator== </span> </a> </li> <li class=md-nav__item> <a href=../operator_ne/ class=md-nav__link> <span class=md-ellipsis> operator!= </span> </a> </li> <li class=md-nav__item> <a href=../operator_lt/ class=md-nav__link> <span class=md-ellipsis> operator< </span> </a> </li> <li class=md-nav__item> <a href=../operator_gt/ class=md-nav__link> <span class=md-ellipsis> operator> </span> </a> </li> <li class=md-nav__item> <a href=../operator_le/ class=md-nav__link> <span class=md-ellipsis> operator<= </span> </a> </li> <li class=md-nav__item> <a href=../operator_ge/ class=md-nav__link> <span class=md-ellipsis> operator>= </span> </a> </li> <li class=md-nav__item> <a href=../operator_spaceship/ class=md-nav__link> <span class=md-ellipsis> operator<=> </span> </a> </li> <li class=md-nav__item> <a href=../out_of_range/ class=md-nav__link> <span class=md-ellipsis> out_of_range </span> </a> </li> <li class=md-nav__item> <a href=../other_error/ class=md-nav__link> <span class=md-ellipsis> other_error </span> </a> </li> <li class=md-nav__item> <a href=../parse/ class=md-nav__link> <span class=md-ellipsis> parse </span> </a> </li> <li class=md-nav__item> <a href=../parse_error/ class=md-nav__link> <span class=md-ellipsis> parse_error </span> </a> </li> <li class=md-nav__item> <a href=../parse_event_t/ class=md-nav__link> <span class=md-ellipsis> parse_event_t </span> </a> </li> <li class="md-nav__item md-nav__item--active"> <input class="md-nav__toggle md-toggle" type=checkbox id=__toc> <label class="md-nav__link md-nav__link--active" for=__toc> <span class=md-ellipsis> parser_callback_t </span> <span class="md-nav__icon md-icon"></span> </label> <a href=./ class="md-nav__link md-nav__link--active"> <span class=md-ellipsis> parser_callback_t </span> </a> <nav class="md-nav md-nav--secondary" aria-label="Table of contents"> <label class=md-nav__title for=__toc> <span class="md-nav__icon md-icon"></span> Table of contents </label> <ul class=md-nav__list data-md-component=toc data-md-scrollfix> <li class=md-nav__item> <a href=#parameters class=md-nav__link> <span class=md-ellipsis> Parameters </span> </a> </li> <li class=md-nav__item> <a href=#return-value class=md-nav__link> <span class=md-ellipsis> Return value </span> </a> </li> <li class=md-nav__item> <a href=#examples class=md-nav__link> <span class=md-ellipsis> Examples </span> </a> </li> <li class=md-nav__item> <a href=#see-also class=md-nav__link> <span class=md-ellipsis> See also </span> </a> </li> <li class=md-nav__item> <a href=#version-history class=md-nav__link> <span class=md-ellipsis> Version history </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../patch/ class=md-nav__link> <span class=md-ellipsis> patch </span> </a> </li> <li class=md-nav__item> <a href=../patch_inplace/ class=md-nav__link> <span class=md-ellipsis> patch_inplace </span> </a> </li> <li class=md-nav__item> <a href=../push_back/ class=md-nav__link> <span class=md-ellipsis> push_back </span> </a> </li> <li class=md-nav__item> <a href=../rbegin/ class=md-nav__link> <span class=md-ellipsis> rbegin </span> </a> </li> <li class=md-nav__item> <a href=../rend/ class=md-nav__link> <span class=md-ellipsis> rend </span> </a> </li> <li class=md-nav__item> <a href=../sax_parse/ class=md-nav__link> <span class=md-ellipsis> sax_parse </span> </a> </li> <li class=md-nav__item> <a href=../size/ class=md-nav__link> <span class=md-ellipsis> size </span> </a> </li> <li class=md-nav__item> <a href=../start_pos/ class=md-nav__link> <span class=md-ellipsis> start_pos </span> </a> </li> <li class=md-nav__item> <a href=../string_t/ class=md-nav__link> <span class=md-ellipsis> string_t </span> </a> </li> <li class=md-nav__item> <a href=../swap/ class=md-nav__link> <span class=md-ellipsis> swap </span> </a> </li> <li class=md-nav__item> <a href=../std_swap/ class=md-nav__link> <span class=md-ellipsis> std::swap&lt;basic_json&gt; </span> </a> </li> <li class=md-nav__item> <a href=../to_bjdata/ class=md-nav__link> <span class=md-ellipsis> to_bjdata </span> </a> </li> <li class=md-nav__item> <a href=../to_bson/ class=md-nav__link> <span class=md-ellipsis> to_bson </span> </a> </li> <li class=md-nav__item> <a href=../to_cbor/ class=md-nav__link> <span class=md-ellipsis> to_cbor </span> </a> </li> <li class=md-nav__item> <a href=../to_msgpack/ class=md-nav__link> <span class=md-ellipsis> to_msgpack </span> </a> </li> <li class=md-nav__item> <a href=../to_string/ class=md-nav__link> <span class=md-ellipsis> to_string </span> </a> </li> <li class=md-nav__item> <a href=../to_ubjson/ class=md-nav__link> <span class=md-ellipsis> to_ubjson </span> </a> </li> <li class=md-nav__item> <a href=../type/ class=md-nav__link> <span class=md-ellipsis> type </span> </a> </li> <li class=md-nav__item> <a href=../type_error/ class=md-nav__link> <span class=md-ellipsis> type_error </span> </a> </li> <li class=md-nav__item> <a href=../type_name/ class=md-nav__link> <span class=md-ellipsis> type_name </span> </a> </li> <li class=md-nav__item> <a href=../unflatten/ class=md-nav__link> <span class=md-ellipsis> unflatten </span> </a> </li> <li class=md-nav__item> <a href=../update/ class=md-nav__link> <span class=md-ellipsis> update </span> </a> </li> <li class=md-nav__item> <a href=../value/ class=md-nav__link> <span class=md-ellipsis> value </span> </a> </li> <li class=md-nav__item> <a href=../value_t/ class=md-nav__link> <span class=md-ellipsis> value_t </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_2> <div class="md-nav__link md-nav__container"> <a href=../../byte_container_with_subtype/ class="md-nav__link "> <span class=md-ellipsis> byte_container_with_subtype </span> </a> <label class="md-nav__link " for=__nav_4_2 id=__nav_4_2_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_2_label aria-expanded=false> <label class=md-nav__title for=__nav_4_2> <span class="md-nav__icon md-icon"></span> byte_container_with_subtype </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../byte_container_with_subtype/byte_container_with_subtype/ class=md-nav__link> <span class=md-ellipsis> (constructor) </span> </a> </li> <li class=md-nav__item> <a href=../../byte_container_with_subtype/clear_subtype/ class=md-nav__link> <span class=md-ellipsis> clear_subtype </span> </a> </li> <li class=md-nav__item> <a href=../../byte_container_with_subtype/has_subtype/ class=md-nav__link> <span class=md-ellipsis> has_subtype </span> </a> </li> <li class=md-nav__item> <a href=../../byte_container_with_subtype/set_subtype/ class=md-nav__link> <span class=md-ellipsis> set_subtype </span> </a> </li> <li class=md-nav__item> <a href=../../byte_container_with_subtype/subtype/ class=md-nav__link> <span class=md-ellipsis> subtype </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_3> <div class="md-nav__link md-nav__container"> <a href=../../adl_serializer/ class="md-nav__link "> <span class=md-ellipsis> adl_serializer </span> </a> <label class="md-nav__link " for=__nav_4_3 id=__nav_4_3_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_3_label aria-expanded=false> <label class=md-nav__title for=__nav_4_3> <span class="md-nav__icon md-icon"></span> adl_serializer </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../adl_serializer/from_json/ class=md-nav__link> <span class=md-ellipsis> from_json </span> </a> </li> <li class=md-nav__item> <a href=../../adl_serializer/to_json/ class=md-nav__link> <span class=md-ellipsis> to_json </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../json/ class=md-nav__link> <span class=md-ellipsis> json </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_5> <div class="md-nav__link md-nav__container"> <a href=../../json_pointer/ class="md-nav__link "> <span class=md-ellipsis> json_pointer </span> </a> <label class="md-nav__link " for=__nav_4_5 id=__nav_4_5_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_5_label aria-expanded=false> <label class=md-nav__title for=__nav_4_5> <span class="md-nav__icon md-icon"></span> json_pointer </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../json_pointer/json_pointer/ class=md-nav__link> <span class=md-ellipsis> (Constructor) </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/back/ class=md-nav__link> <span class=md-ellipsis> back </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/empty/ class=md-nav__link> <span class=md-ellipsis> empty </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/front/ class=md-nav__link> <span class=md-ellipsis> front </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_string_t/ class=md-nav__link> <span class=md-ellipsis> operator string_t </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_eq/ class=md-nav__link> <span class=md-ellipsis> operator== </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_ne/ class=md-nav__link> <span class=md-ellipsis> operator!= </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_slash/ class=md-nav__link> <span class=md-ellipsis> operator/ </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_slasheq/ class=md-nav__link> <span class=md-ellipsis> operator/= </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/parent_pointer/ class=md-nav__link> <span class=md-ellipsis> parent_pointer </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/pop_back/ class=md-nav__link> <span class=md-ellipsis> pop_back </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/pop_front/ class=md-nav__link> <span class=md-ellipsis> pop_front </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/push_back/ class=md-nav__link> <span class=md-ellipsis> push_back </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/push_front/ class=md-nav__link> <span class=md-ellipsis> push_front </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/string_t/ class=md-nav__link> <span class=md-ellipsis> string_t </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/to_string/ class=md-nav__link> <span class=md-ellipsis> to_string </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_6> <div class="md-nav__link md-nav__container"> <a href=../../json_sax/ class="md-nav__link "> <span class=md-ellipsis> json_sax </span> </a> <label class="md-nav__link " for=__nav_4_6 id=__nav_4_6_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_6_label aria-expanded=false> <label class=md-nav__title for=__nav_4_6> <span class="md-nav__icon md-icon"></span> json_sax </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../json_sax/binary/ class=md-nav__link> <span class=md-ellipsis> binary </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/boolean/ class=md-nav__link> <span class=md-ellipsis> boolean </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/end_array/ class=md-nav__link> <span class=md-ellipsis> end_array </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/end_object/ class=md-nav__link> <span class=md-ellipsis> end_object </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/key/ class=md-nav__link> <span class=md-ellipsis> key </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/null/ class=md-nav__link> <span class=md-ellipsis> null </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/number_float/ class=md-nav__link> <span class=md-ellipsis> number_float </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/number_integer/ class=md-nav__link> <span class=md-ellipsis> number_integer </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/number_unsigned/ class=md-nav__link> <span class=md-ellipsis> number_unsigned </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/parse_error/ class=md-nav__link> <span class=md-ellipsis> parse_error </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/start_array/ class=md-nav__link> <span class=md-ellipsis> start_array </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/start_object/ class=md-nav__link> <span class=md-ellipsis> start_object </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/string/ class=md-nav__link> <span class=md-ellipsis> string </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../operator_ltlt/ class=md-nav__link> <span class=md-ellipsis> operator<<(basic_json), operator<<(json_pointer) </span> </a> </li> <li class=md-nav__item> <a href=../../operator_gtgt/ class=md-nav__link> <span class=md-ellipsis> operator>>(basic_json) </span> </a> </li> <li class=md-nav__item> <a href=../../operator_literal_json/ class=md-nav__link> <span class=md-ellipsis> operator""_json </span> </a> </li> <li class=md-nav__item> <a href=../../operator_literal_json_pointer/ class=md-nav__link> <span class=md-ellipsis> operator""_json_pointer </span> </a> </li> <li class=md-nav__item> <a href=../../ordered_json/ class=md-nav__link> <span class=md-ellipsis> ordered_json </span> </a> </li> <li class=md-nav__item> <a href=../../ordered_map/ class=md-nav__link> <span class=md-ellipsis> ordered_map </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_13> <div class="md-nav__link md-nav__container"> <a href=../../macros/ class="md-nav__link "> <span class=md-ellipsis> macros </span> </a> <label class="md-nav__link " for=__nav_4_13 id=__nav_4_13_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_13_label aria-expanded=false> <label class=md-nav__title for=__nav_4_13> <span class="md-nav__icon md-icon"></span> macros </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../macros/json_assert/ class=md-nav__link> <span class=md-ellipsis> JSON_ASSERT </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_brace_init_copy_semantics/ class=md-nav__link> <span class=md-ellipsis> JSON_BRACE_INIT_COPY_SEMANTICS </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_throw_user/ class=md-nav__link> <span class=md-ellipsis> JSON_CATCH_USER, JSON_THROW_USER, JSON_TRY_USER </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_diagnostics/ class=md-nav__link> <span class=md-ellipsis> JSON_DIAGNOSTICS </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_diagnostic_positions/ class=md-nav__link> <span class=md-ellipsis> JSON_DIAGNOSTIC_POSITIONS </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_disable_enum_serialization/ class=md-nav__link> <span class=md-ellipsis> JSON_DISABLE_ENUM_SERIALIZATION </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_has_cpp_11/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_CPP_11, JSON_HAS_CPP_14, JSON_HAS_CPP_17, JSON_HAS_CPP_20 </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_has_filesystem/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_EXPERIMENTAL_FILESYSTEM, JSON_HAS_FILESYSTEM </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_has_ranges/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_RANGES </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_has_static_rtti/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_STATIC_RTTI </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_has_three_way_comparison/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_THREE_WAY_COMPARISON </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_noexception/ class=md-nav__link> <span class=md-ellipsis> JSON_NOEXCEPTION </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_no_io/ class=md-nav__link> <span class=md-ellipsis> JSON_NO_IO </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_skip_library_version_check/ class=md-nav__link> <span class=md-ellipsis> JSON_SKIP_LIBRARY_VERSION_CHECK </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_skip_unsupported_compiler_check/ class=md-nav__link> <span class=md-ellipsis> JSON_SKIP_UNSUPPORTED_COMPILER_CHECK </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_use_global_udls/ class=md-nav__link> <span class=md-ellipsis> JSON_USE_GLOBAL_UDLS </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_use_implicit_conversions/ class=md-nav__link> <span class=md-ellipsis> JSON_USE_IMPLICIT_CONVERSIONS </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_use_legacy_discarded_value_comparison/ class=md-nav__link> <span class=md-ellipsis> JSON_USE_LEGACY_DISCARDED_VALUE_COMPARISON </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_define_derived_type/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_ONLY_SERIALIZE, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_define_type_intrusive/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_TYPE_INTRUSIVE, NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_TYPE_INTRUSIVE_ONLY_SERIALIZE </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_define_type_non_intrusive/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_define_type_with_names/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_TYPE_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_namespace/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_NAMESPACE </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_namespace_begin/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_NAMESPACE_BEGIN, NLOHMANN_JSON_NAMESPACE_END </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_namespace_no_version/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_NAMESPACE_NO_VERSION </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_serialize_enum/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_SERIALIZE_ENUM </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_serialize_enum_strict/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_SERIALIZE_ENUM_STRICT </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_version_major/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_VERSION_MAJOR, NLOHMANN_JSON_VERSION_MINOR, NLOHMANN_JSON_VERSION_PATCH </span> </a> </li> </ul> </nav> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_5> <div class="md-nav__link md-nav__container"> <a href=../../../community/ class="md-nav__link "> <span class=md-ellipsis> Community </span> </a> <label class="md-nav__link " for=__nav_5 id=__nav_5_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_5_label aria-expanded=false> <label class=md-nav__title for=__nav_5> <span class="md-nav__icon md-icon"></span> Community </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../community/code_of_conduct/ class=md-nav__link> <span class=md-ellipsis> Code of Conduct </span> </a> </li> <li class=md-nav__item> <a href=../../../community/contribution_guidelines/ class=md-nav__link> <span class=md-ellipsis> Contribution Guidelines </span> </a> </li> <li class=md-nav__item> <a href=../../../community/quality_assurance/ class=md-nav__link> <span class=md-ellipsis> Quality assurance </span> </a> </li> <li class=md-nav__item> <a href=../../../community/governance/ class=md-nav__link> <span class=md-ellipsis> Governance </span> </a> </li> <li class=md-nav__item> <a href=../../../community/security_policy/ class=md-nav__link> <span class=md-ellipsis> Security Policy </span> </a> </li> </ul> </nav> </li> </ul> </nav> </div> </div> </div> <div class="md-sidebar md-sidebar--secondary" data-md-component=sidebar data-md-type=toc> <div class=md-sidebar__scrollwrap> <div class=md-sidebar__inner> <nav class="md-nav md-nav--secondary" aria-label="Table of contents"> <label class=md-nav__title for=__toc> <span class="md-nav__icon md-icon"></span> Table of contents </label> <ul class=md-nav__list data-md-component=toc data-md-scrollfix> <li class=md-nav__item> <a href=#parameters class=md-nav__link> <span class=md-ellipsis> Parameters </span> </a> </li> <li class=md-nav__item> <a href=#return-value class=md-nav__link> <span class=md-ellipsis> Return value </span> </a> </li> <li class=md-nav__item> <a href=#examples class=md-nav__link> <span class=md-ellipsis> Examples </span> </a> </li> <li class=md-nav__item> <a href=#see-also class=md-nav__link> <span class=md-ellipsis> See also </span> </a> </li> <li class=md-nav__item> <a href=#version-history class=md-nav__link> <span class=md-ellipsis> Version history </span> </a> </li> </ul> </nav> </div> </div> </div> <div class=md-content data-md-component=content> <article class="md-content__inner md-typeset"> <a href="https://github.com/nlohmann/json/edit/develop/docs/mkdocs/docs/api/basic_json/parser_callback_t.md" title="Edit this page" class="md-content__button md-icon" rel="edit"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M10 20H6V4h7v5h5v3.1l2-2V8l-6-6H6c-1.1 0-2 .9-2 2v16c0 1.1.9 2 2 2h4zm10.2-7c.1 0 .3.1.4.2l1.3 1.3c.2.2.2.6 0 .8l-1 1-2.1-2.1 1-1c.1-.1.2-.2.4-.2m0 3.9L14.1 23H12v-2.1l6.1-6.1z"/></svg> </a> <a href="https://github.com/nlohmann/json/raw/develop/docs/mkdocs/docs/api/basic_json/parser_callback_t.md" title="View source of this page" class="md-content__button md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M17 18c.56 0 1 .44 1 1s-.44 1-1 1-1-.44-1-1 .44-1 1-1m0-3c-2.73 0-5.06 1.66-6 4 .94 2.34 3.27 4 6 4s5.06-1.66 6-4c-.94-2.34-3.27-4-6-4m0 6.5a2.5 2.5 0 0 1-2.5-2.5 2.5 2.5 0 0 1 2.5-2.5 2.5 2.5 0 0 1 2.5 2.5 2.5 2.5 0 0 1-2.5 2.5M9.27 20H6V4h7v5h5v4.07c.7.08 1.36.25 2 .49V8l-6-6H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h4.5a8.2 8.2 0 0 1-1.23-2"/></svg> </a> <h1 id=nlohmannbasic_jsonparser_callback_t><small>nlohmann::basic_json::</small>parser_callback_t<a class=headerlink href=#nlohmannbasic_jsonparser_callback_t title="Permanent link">&para;</a></h1> <div class=highlight><pre><span></span><code><span class=k>template</span><span class=o>&lt;</span><span class=k>typename</span><span class=w> </span><span class=nc>BasicJsonType</span><span class=o>&gt;</span>
 <span class=k>using</span><span class=w> </span><span class=n>parser_callback_t</span><span class=w> </span><span class=o>=</span>
 <span class=w>    </span><span class=n>std</span><span class=o>::</span><span class=n>function</span><span class=o>&lt;</span><span class=kt>bool</span><span class=p>(</span><span class=kt>int</span><span class=w> </span><span class=n>depth</span><span class=p>,</span><span class=w> </span><span class=n>parse_event_t</span><span class=w> </span><span class=n>event</span><span class=p>,</span><span class=w> </span><span class=n>BasicJsonType</span><span class=o>&amp;</span><span class=w> </span><span class=n>parsed</span><span class=p>)</span><span class=o>&gt;</span><span class=p>;</span>
 </code></pre></div> <p>With a parser callback function, the result of parsing a <abbr title="JavaScript Object Notation">JSON</abbr> text can be influenced. When passed to <a href=../parse/ ><code>parse</code></a>, it is called on certain events (passed as <a href=../parse_event_t/ ><code>parse_event_t</code></a> via parameter <code>event</code>) with a set recursion depth <code>depth</code> and context <abbr title="JavaScript Object Notation">JSON</abbr> value <code>parsed</code>. The return value of the callback function is a boolean indicating whether the element that emitted the callback shall be kept or not.</p> <p>We distinguish six scenarios (determined by the event type) in which the callback function can be called. The following table describes the values of the parameters <code>depth</code>, <code>event</code>, and <code>parsed</code>.</p> <table> <thead> <tr> <th>parameter <code>event</code></th> <th>description</th> <th>parameter <code>depth</code></th> <th>parameter <code>parsed</code></th> </tr> </thead> <tbody> <tr> <td><code>parse_event_t::object_start</code></td> <td>the parser read <code>{</code> and started to process a <abbr title="JavaScript Object Notation">JSON</abbr> object</td> <td>depth of the parent of the <abbr title="JavaScript Object Notation">JSON</abbr> object</td> <td>a <abbr title="JavaScript Object Notation">JSON</abbr> value with type discarded</td> </tr> <tr> <td><code>parse_event_t::key</code></td> <td>the parser read a key of a value in an object</td> <td>depth of the currently parsed <abbr title="JavaScript Object Notation">JSON</abbr> object</td> <td>a <abbr title="JavaScript Object Notation">JSON</abbr> string containing the key</td> </tr> <tr> <td><code>parse_event_t::object_end</code></td> <td>the parser read <code>}</code> and finished processing a <abbr title="JavaScript Object Notation">JSON</abbr> object</td> <td>depth of the parent of the <abbr title="JavaScript Object Notation">JSON</abbr> object</td> <td>the parsed <abbr title="JavaScript Object Notation">JSON</abbr> object</td> </tr> <tr> <td><code>parse_event_t::array_start</code></td> <td>the parser read <code>[</code> and started to process a <abbr title="JavaScript Object Notation">JSON</abbr> array</td> <td>depth of the parent of the <abbr title="JavaScript Object Notation">JSON</abbr> array</td> <td>a <abbr title="JavaScript Object Notation">JSON</abbr> value with type discarded</td> </tr> <tr> <td><code>parse_event_t::array_end</code></td> <td>the parser read <code>]</code> and finished processing a <abbr title="JavaScript Object Notation">JSON</abbr> array</td> <td>depth of the parent of the <abbr title="JavaScript Object Notation">JSON</abbr> array</td> <td>the parsed <abbr title="JavaScript Object Notation">JSON</abbr> array</td> </tr> <tr> <td><code>parse_event_t::value</code></td> <td>the parser finished reading a <abbr title="JavaScript Object Notation">JSON</abbr> value</td> <td>depth of the value</td> <td>the parsed <abbr title="JavaScript Object Notation">JSON</abbr> value</td> </tr> </tbody> </table> <p><img alt="Example when certain parse events are triggered" src=../../../images/callback_events.png></p> <p>Discarding a value (i.e., returning <code class=highlight><span class=nb>false</span></code>) has different effects depending on the context in which function was called:</p> <ul> <li>Discarded values in structured types are skipped. That is, the parser will behave as if the discarded value was never read.</li> <li>In case a value outside a structured type is skipped, it is replaced with <code>null</code>. This case happens if the top-level element is skipped.</li> </ul> <h2 id=parameters>Parameters<a class=headerlink href=#parameters title="Permanent link">&para;</a></h2> <dl> <dt><code>depth</code> (in)</dt> <dd>the depth of the recursion during parsing</dd> <dt><code>event</code> (in)</dt> <dd>an event of type <a href=../parse_event_t/ ><code>parse_event_t</code></a> indicating the context in the callback function has been called</dd> <dt><code>parsed</code> (in, out)</dt> <dd>the current intermediate parse result; note that writing to this value has no effect for <code>parse_event_t::key</code> events</dd> </dl> <h2 id=return-value>Return value<a class=headerlink href=#return-value title="Permanent link">&para;</a></h2> <p>Whether the <abbr title="JavaScript Object Notation">JSON</abbr> value which called the function during parsing should be kept (<code class=highlight><span class=nb>true</span></code>) or not (<code class=highlight><span class=nb>false</span></code>). In the latter case, it is either skipped completely or replaced by an empty discarded object.</p> <h2 id=examples>Examples<a class=headerlink href=#examples title="Permanent link">&para;</a></h2> <details class=example> <summary>Example</summary> <p>The example below demonstrates the <code>parse()</code> function with and without callback function.</p> <div class=highlight><pre><span></span><code><span class=cp>#include</span><span class=w> </span><span class=cpf>&lt;iostream&gt;</span>
@@ -83,4 +83,4 @@
 <span class=w>        </span><span class=nt>&quot;Width&quot;</span><span class=p>:</span><span class=w> </span><span class=mi>800</span>
 <span class=w>    </span><span class=p>}</span>
 <span class=p>}</span>
-</code></pre></div> </details> <h2 id=version-history>Version history<a class=headerlink href=#version-history title="Permanent link">&para;</a></h2> <ul> <li>Added in version 1.0.0.</li> </ul> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 23, 2026 11:16:18 UTC">June 23, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
+</code></pre></div> </details> <h2 id=see-also>See also<a class=headerlink href=#see-also title="Permanent link">&para;</a></h2> <ul> <li><a href=../parse/ >parse</a> deserialize from a compatible input</li> <li><a href=../parse_event_t/ >parse_event_t</a> enumeration of parser events</li> </ul> <h2 id=version-history>Version history<a class=headerlink href=#version-history title="Permanent link">&para;</a></h2> <ul> <li>Added in version 1.0.0.</li> </ul> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 29, 2026 20:15:18 UTC">June 29, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
diff --git a/api/basic_json/patch/index.html b/api/basic_json/patch/index.html
index 773920a..4bae8a1 100644
--- a/api/basic_json/patch/index.html
+++ b/api/basic_json/patch/index.html
@@ -1,5 +1,5 @@
 <!doctype html><html lang=en class=no-js> <head><meta charset=utf-8><meta name=viewport content="width=device-width,initial-scale=1"><meta name=author content="Niels Lohmann"><link href="https://json.nlohmann.me/api/basic_json/patch/" rel="canonical"><link href=../parser_callback_t/ rel=prev><link href=../patch_inplace/ rel=next><link rel=icon href=../../../assets/images/favicon.png><meta name=generator content="mkdocs-1.6.1, mkdocs-material-9.7.6"><title>patch - JSON for Modern C++</title><link rel=stylesheet href=../../../assets/stylesheets/main.484c7ddc.min.css><link rel=stylesheet href=../../../assets/stylesheets/palette.ab4e12ef.min.css><link rel="stylesheet" href="../../../assets/external/fonts.googleapis.com/css.61a430c9.css"><style>:root{--md-text-font:"Roboto";--md-code-font:"JetBrains Mono"}</style><link rel=stylesheet href=../../../css/custom.css><script>__md_scope=new URL("../../..",location),__md_hash=e=>[...e].reduce(((e,_)=>(e<<5)-e+_.charCodeAt(0)),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script></head> <body dir=ltr data-md-color-scheme=default data-md-color-primary=indigo data-md-color-accent=indigo> <input class=md-toggle data-md-toggle=drawer type=checkbox id=__drawer autocomplete=off> <input class=md-toggle data-md-toggle=search type=checkbox id=__search autocomplete=off> <label class=md-overlay for=__drawer></label> <div data-md-component=skip> <a href=#nlohmannbasic_jsonpatch class=md-skip> Skip to content </a> </div> <div data-md-component=announce> </div> <header class=md-header data-md-component=header> <nav class="md-header__inner md-grid" aria-label=Header> <a href=../../.. title="JSON for Modern C++" class="md-header__button md-logo" aria-label="JSON for Modern C++" data-md-component=logo> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54"/></svg> </a> <label class="md-header__button md-icon" for=__drawer> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M3 6h18v2H3zm0 5h18v2H3zm0 5h18v2H3z"/></svg> </label> <div class=md-header__title data-md-component=header-title> <div class=md-header__ellipsis> <div class=md-header__topic> <span class=md-ellipsis> JSON for Modern C++ </span> </div> <div class=md-header__topic data-md-component=header-topic> <span class=md-ellipsis> patch </span> </div> </div> </div> <form class=md-header__option data-md-component=palette> <input class=md-option data-md-color-media="(prefers-color-scheme: light)" data-md-color-scheme=default data-md-color-primary=indigo data-md-color-accent=indigo aria-label="Switch to dark mode" type=radio name=__palette id=__palette_0> <label class="md-header__button md-icon" title="Switch to dark mode" for=__palette_1 hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a4 4 0 0 0-4 4 4 4 0 0 0 4 4 4 4 0 0 0 4-4 4 4 0 0 0-4-4m0 10a6 6 0 0 1-6-6 6 6 0 0 1 6-6 6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12z"/></svg> </label> <input class=md-option data-md-color-media="(prefers-color-scheme: dark)" data-md-color-scheme=slate data-md-color-primary=indigo data-md-color-accent=indigo aria-label="Switch to light mode" type=radio name=__palette id=__palette_1> <label class="md-header__button md-icon" title="Switch to light mode" for=__palette_0 hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 18c-.89 0-1.74-.2-2.5-.55C11.56 16.5 13 14.42 13 12s-1.44-4.5-3.5-5.45C10.26 6.2 11.11 6 12 6a6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12z"/></svg> </label> </form> <script>var palette=__md_get("__palette");if(palette&&palette.color){if("(prefers-color-scheme)"===palette.color.media){var media=matchMedia("(prefers-color-scheme: light)"),input=document.querySelector(media.matches?"[data-md-color-media='(prefers-color-scheme: light)']":"[data-md-color-media='(prefers-color-scheme: dark)']");palette.color.media=input.getAttribute("data-md-color-media"),palette.color.scheme=input.getAttribute("data-md-color-scheme"),palette.color.primary=input.getAttribute("data-md-color-primary"),palette.color.accent=input.getAttribute("data-md-color-accent")}for(var[key,value]of Object.entries(palette.color))document.body.setAttribute("data-md-color-"+key,value)}</script> <label class="md-header__button md-icon" for=__search> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg> </label> <div class=md-search data-md-component=search role=dialog> <label class=md-search__overlay for=__search></label> <div class=md-search__inner role=search> <form class=md-search__form name=search> <input type=text class=md-search__input name=query aria-label=Search placeholder=Search autocapitalize=off autocorrect=off autocomplete=off spellcheck=false data-md-component=search-query required> <label class="md-search__icon md-icon" for=__search> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11z"/></svg> </label> <nav class=md-search__options aria-label=Search> <button type=reset class="md-search__icon md-icon" title=Clear aria-label=Clear tabindex=-1> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z"/></svg> </button> </nav> </form> <div class=md-search__output> <div class=md-search__scrollwrap tabindex=0 data-md-scrollfix> <div class=md-search-result data-md-component=search-result> <div class=md-search-result__meta> Initializing search </div> <ol class=md-search-result__list role=presentation></ol> </div> </div> </div> </div> </div> <div class=md-header__source> <a href="https://github.com/nlohmann/json" title="Go to repository" class="md-source" data-md-component="source"> <div class="md-source__icon md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </div> <div class=md-source__repository> nlohmann/json </div> </a> </div> </nav> </header> <div class=md-container data-md-component=container> <nav class=md-tabs aria-label=Tabs data-md-component=tabs> <div class=md-grid> <ul class=md-tabs__list> <li class=md-tabs__item> <a href=../../.. class=md-tabs__link> Home </a> </li> <li class=md-tabs__item> <a href=../../../features/arbitrary_types/ class=md-tabs__link> Features </a> </li> <li class=md-tabs__item> <a href=../../../integration/ class=md-tabs__link> Integration </a> </li> <li class="md-tabs__item md-tabs__item--active"> <a href=../ class=md-tabs__link> API Documentation </a> </li> <li class=md-tabs__item> <a href=../../../community/ class=md-tabs__link> Community </a> </li> </ul> </div> </nav> <main class=md-main data-md-component=main> <div class="md-main__inner md-grid"> <div class="md-sidebar md-sidebar--primary" data-md-component=sidebar data-md-type=navigation> <div class=md-sidebar__scrollwrap> <div class=md-sidebar__inner> <nav class="md-nav md-nav--primary md-nav--lifted" aria-label=Navigation data-md-level=0> <label class=md-nav__title for=__drawer> <a href=../../.. title="JSON for Modern C++" class="md-nav__button md-logo" aria-label="JSON for Modern C++" data-md-component=logo> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54"/></svg> </a> JSON for Modern C++ </label> <div class=md-nav__source> <a href="https://github.com/nlohmann/json" title="Go to repository" class="md-source" data-md-component="source"> <div class="md-source__icon md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </div> <div class=md-source__repository> nlohmann/json </div> </a> </div> <ul class=md-nav__list data-md-scrollfix> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_1> <div class="md-nav__link md-nav__container"> <a href=../../.. class="md-nav__link "> <span class=md-ellipsis> Home </span> </a> <label class="md-nav__link " for=__nav_1 id=__nav_1_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_1_label aria-expanded=false> <label class=md-nav__title for=__nav_1> <span class="md-nav__icon md-icon"></span> Home </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../home/license/ class=md-nav__link> <span class=md-ellipsis> License </span> </a> </li> <li class=md-nav__item> <a href=../../../home/faq/ class=md-nav__link> <span class=md-ellipsis> FAQ </span> </a> </li> <li class=md-nav__item> <a href=../../../home/exceptions/ class=md-nav__link> <span class=md-ellipsis> Exceptions </span> </a> </li> <li class=md-nav__item> <a href=../../../home/releases/ class=md-nav__link> <span class=md-ellipsis> Releases </span> </a> </li> <li class=md-nav__item> <a href=../../../home/design_goals/ class=md-nav__link> <span class=md-ellipsis> Design goals </span> </a> </li> <li class=md-nav__item> <a href=../../../home/architecture/ class=md-nav__link> <span class=md-ellipsis> Architecture </span> </a> </li> <li class=md-nav__item> <a href=../../../home/customers/ class=md-nav__link> <span class=md-ellipsis> Customers </span> </a> </li> <li class=md-nav__item> <a href=../../../home/sponsors/ class=md-nav__link> <span class=md-ellipsis> Sponsors </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2> <label class=md-nav__link for=__nav_2 id=__nav_2_label tabindex=0> <span class=md-ellipsis> Features </span> <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_2_label aria-expanded=false> <label class=md-nav__title for=__nav_2> <span class="md-nav__icon md-icon"></span> Features </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/arbitrary_types/ class=md-nav__link> <span class=md-ellipsis> Arbitrary Type Conversions </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_2> <div class="md-nav__link md-nav__container"> <a href=../../../features/binary_formats/ class="md-nav__link "> <span class=md-ellipsis> Binary Formats </span> </a> <label class="md-nav__link " for=__nav_2_2 id=__nav_2_2_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_2_label aria-expanded=false> <label class=md-nav__title for=__nav_2_2> <span class="md-nav__icon md-icon"></span> Binary Formats </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/binary_formats/bjdata/ class=md-nav__link> <span class=md-ellipsis> BJData </span> </a> </li> <li class=md-nav__item> <a href=../../../features/binary_formats/bson/ class=md-nav__link> <span class=md-ellipsis> BSON </span> </a> </li> <li class=md-nav__item> <a href=../../../features/binary_formats/cbor/ class=md-nav__link> <span class=md-ellipsis> CBOR </span> </a> </li> <li class=md-nav__item> <a href=../../../features/binary_formats/messagepack/ class=md-nav__link> <span class=md-ellipsis> MessagePack </span> </a> </li> <li class=md-nav__item> <a href=../../../features/binary_formats/ubjson/ class=md-nav__link> <span class=md-ellipsis> UBJSON </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../../features/binary_values/ class=md-nav__link> <span class=md-ellipsis> Binary Values </span> </a> </li> <li class=md-nav__item> <a href=../../../features/comments/ class=md-nav__link> <span class=md-ellipsis> Comments </span> </a> </li> <li class=md-nav__item> <a href=../../../features/trailing_commas/ class=md-nav__link> <span class=md-ellipsis> Trailing Commas </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_6> <div class="md-nav__link md-nav__container"> <a href=../../../features/element_access/ class="md-nav__link "> <span class=md-ellipsis> Element Access </span> </a> <label class="md-nav__link " for=__nav_2_6 id=__nav_2_6_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_6_label aria-expanded=false> <label class=md-nav__title for=__nav_2_6> <span class="md-nav__icon md-icon"></span> Element Access </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/element_access/unchecked_access/ class=md-nav__link> <span class=md-ellipsis> Unchecked access: operator[] </span> </a> </li> <li class=md-nav__item> <a href=../../../features/element_access/checked_access/ class=md-nav__link> <span class=md-ellipsis> Checked access: at </span> </a> </li> <li class=md-nav__item> <a href=../../../features/element_access/default_value/ class=md-nav__link> <span class=md-ellipsis> Access with default value: value </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../../features/iterators/ class=md-nav__link> <span class=md-ellipsis> Iterators </span> </a> </li> <li class=md-nav__item> <a href=../../../features/json_pointer/ class=md-nav__link> <span class=md-ellipsis> JSON Pointer </span> </a> </li> <li class=md-nav__item> <a href=../../../features/json_patch/ class=md-nav__link> <span class=md-ellipsis> JSON Patch and Diff </span> </a> </li> <li class=md-nav__item> <a href=../../../features/merge_patch/ class=md-nav__link> <span class=md-ellipsis> JSON Merge Patch </span> </a> </li> <li class=md-nav__item> <a href=../../../features/modules/ class=md-nav__link> <span class=md-ellipsis> Modules </span> </a> </li> <li class=md-nav__item> <a href=../../../features/namespace/ class=md-nav__link> <span class=md-ellipsis> nlohmann Namespace </span> </a> </li> <li class=md-nav__item> <a href=../../../features/object_order/ class=md-nav__link> <span class=md-ellipsis> Object Order </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_14> <div class="md-nav__link md-nav__container"> <a href=../../../features/parsing/ class="md-nav__link "> <span class=md-ellipsis> Parsing </span> </a> <label class="md-nav__link " for=__nav_2_14 id=__nav_2_14_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_14_label aria-expanded=false> <label class=md-nav__title for=__nav_2_14> <span class="md-nav__icon md-icon"></span> Parsing </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/parsing/json_lines/ class=md-nav__link> <span class=md-ellipsis> JSON Lines </span> </a> </li> <li class=md-nav__item> <a href=../../../features/parsing/parse_exceptions/ class=md-nav__link> <span class=md-ellipsis> Parsing and Exceptions </span> </a> </li> <li class=md-nav__item> <a href=../../../features/parsing/parser_callbacks/ class=md-nav__link> <span class=md-ellipsis> Parser Callbacks </span> </a> </li> <li class=md-nav__item> <a href=../../../features/parsing/sax_interface/ class=md-nav__link> <span class=md-ellipsis> SAX Interface </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../../features/assertions/ class=md-nav__link> <span class=md-ellipsis> Runtime Assertions </span> </a> </li> <li class=md-nav__item> <a href=../../../features/enum_conversion/ class=md-nav__link> <span class=md-ellipsis> Specializing enum conversion </span> </a> </li> <li class=md-nav__item> <a href=../../../features/macros/ class=md-nav__link> <span class=md-ellipsis> Supported Macros </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_18> <div class="md-nav__link md-nav__container"> <a href=../../../features/types/ class="md-nav__link "> <span class=md-ellipsis> Types </span> </a> <label class="md-nav__link " for=__nav_2_18 id=__nav_2_18_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_18_label aria-expanded=false> <label class=md-nav__title for=__nav_2_18> <span class="md-nav__icon md-icon"></span> Types </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/types/number_handling/ class=md-nav__link> <span class=md-ellipsis> Number Handling </span> </a> </li> </ul> </nav> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_3> <div class="md-nav__link md-nav__container"> <a href=../../../integration/ class="md-nav__link "> <span class=md-ellipsis> Integration </span> </a> <label class="md-nav__link " for=__nav_3 id=__nav_3_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_3_label aria-expanded=false> <label class=md-nav__title for=__nav_3> <span class="md-nav__icon md-icon"></span> Integration </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../integration/migration_guide/ class=md-nav__link> <span class=md-ellipsis> Migration Guide </span> </a> </li> <li class=md-nav__item> <a href=../../../integration/cmake/ class=md-nav__link> <span class=md-ellipsis> CMake </span> </a> </li> <li class=md-nav__item> <a href=../../../integration/package_managers/ class=md-nav__link> <span class=md-ellipsis> Package Managers </span> </a> </li> <li class=md-nav__item> <a href=../../../integration/pkg-config/ class=md-nav__link> <span class=md-ellipsis> Pkg-config </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--active md-nav__item--section md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4 checked> <label class=md-nav__link for=__nav_4 id=__nav_4_label tabindex> <span class=md-ellipsis> API Documentation </span> <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_4_label aria-expanded=true> <label class=md-nav__title for=__nav_4> <span class="md-nav__icon md-icon"></span> API Documentation </label> <ul class=md-nav__list data-md-scrollfix> <li class="md-nav__item md-nav__item--active md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_1 checked> <div class="md-nav__link md-nav__container"> <a href=../ class="md-nav__link "> <span class=md-ellipsis> basic_json </span> </a> <label class="md-nav__link " for=__nav_4_1 id=__nav_4_1_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_1_label aria-expanded=true> <label class=md-nav__title for=__nav_4_1> <span class="md-nav__icon md-icon"></span> basic_json </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../basic_json/ class=md-nav__link> <span class=md-ellipsis> (Constructor) </span> </a> </li> <li class=md-nav__item> <a href=../~basic_json/ class=md-nav__link> <span class=md-ellipsis> (Destructor) </span> </a> </li> <li class=md-nav__item> <a href=../accept/ class=md-nav__link> <span class=md-ellipsis> accept </span> </a> </li> <li class=md-nav__item> <a href=../array/ class=md-nav__link> <span class=md-ellipsis> array </span> </a> </li> <li class=md-nav__item> <a href=../array_t/ class=md-nav__link> <span class=md-ellipsis> array_t </span> </a> </li> <li class=md-nav__item> <a href=../at/ class=md-nav__link> <span class=md-ellipsis> at </span> </a> </li> <li class=md-nav__item> <a href=../back/ class=md-nav__link> <span class=md-ellipsis> back </span> </a> </li> <li class=md-nav__item> <a href=../begin/ class=md-nav__link> <span class=md-ellipsis> begin </span> </a> </li> <li class=md-nav__item> <a href=../binary/ class=md-nav__link> <span class=md-ellipsis> binary </span> </a> </li> <li class=md-nav__item> <a href=../binary_t/ class=md-nav__link> <span class=md-ellipsis> binary_t </span> </a> </li> <li class=md-nav__item> <a href=../boolean_t/ class=md-nav__link> <span class=md-ellipsis> boolean_t </span> </a> </li> <li class=md-nav__item> <a href=../cbegin/ class=md-nav__link> <span class=md-ellipsis> cbegin </span> </a> </li> <li class=md-nav__item> <a href=../cbor_tag_handler_t/ class=md-nav__link> <span class=md-ellipsis> cbor_tag_handler_t </span> </a> </li> <li class=md-nav__item> <a href=../cend/ class=md-nav__link> <span class=md-ellipsis> cend </span> </a> </li> <li class=md-nav__item> <a href=../clear/ class=md-nav__link> <span class=md-ellipsis> clear </span> </a> </li> <li class=md-nav__item> <a href=../contains/ class=md-nav__link> <span class=md-ellipsis> contains </span> </a> </li> <li class=md-nav__item> <a href=../count/ class=md-nav__link> <span class=md-ellipsis> count </span> </a> </li> <li class=md-nav__item> <a href=../crbegin/ class=md-nav__link> <span class=md-ellipsis> crbegin </span> </a> </li> <li class=md-nav__item> <a href=../crend/ class=md-nav__link> <span class=md-ellipsis> crend </span> </a> </li> <li class=md-nav__item> <a href=../default_object_comparator_t/ class=md-nav__link> <span class=md-ellipsis> default_object_comparator_t </span> </a> </li> <li class=md-nav__item> <a href=../diff/ class=md-nav__link> <span class=md-ellipsis> diff </span> </a> </li> <li class=md-nav__item> <a href=../dump/ class=md-nav__link> <span class=md-ellipsis> dump </span> </a> </li> <li class=md-nav__item> <a href=../emplace/ class=md-nav__link> <span class=md-ellipsis> emplace </span> </a> </li> <li class=md-nav__item> <a href=../emplace_back/ class=md-nav__link> <span class=md-ellipsis> emplace_back </span> </a> </li> <li class=md-nav__item> <a href=../empty/ class=md-nav__link> <span class=md-ellipsis> empty </span> </a> </li> <li class=md-nav__item> <a href=../end/ class=md-nav__link> <span class=md-ellipsis> end </span> </a> </li> <li class=md-nav__item> <a href=../end_pos/ class=md-nav__link> <span class=md-ellipsis> end_pos </span> </a> </li> <li class=md-nav__item> <a href=../erase/ class=md-nav__link> <span class=md-ellipsis> erase </span> </a> </li> <li class=md-nav__item> <a href=../error_handler_t/ class=md-nav__link> <span class=md-ellipsis> error_handler_t </span> </a> </li> <li class=md-nav__item> <a href=../exception/ class=md-nav__link> <span class=md-ellipsis> exception </span> </a> </li> <li class=md-nav__item> <a href=../find/ class=md-nav__link> <span class=md-ellipsis> find </span> </a> </li> <li class=md-nav__item> <a href=../flatten/ class=md-nav__link> <span class=md-ellipsis> flatten </span> </a> </li> <li class=md-nav__item> <a href=../from_bjdata/ class=md-nav__link> <span class=md-ellipsis> from_bjdata </span> </a> </li> <li class=md-nav__item> <a href=../from_bson/ class=md-nav__link> <span class=md-ellipsis> from_bson </span> </a> </li> <li class=md-nav__item> <a href=../from_cbor/ class=md-nav__link> <span class=md-ellipsis> from_cbor </span> </a> </li> <li class=md-nav__item> <a href=../from_msgpack/ class=md-nav__link> <span class=md-ellipsis> from_msgpack </span> </a> </li> <li class=md-nav__item> <a href=../from_ubjson/ class=md-nav__link> <span class=md-ellipsis> from_ubjson </span> </a> </li> <li class=md-nav__item> <a href=../front/ class=md-nav__link> <span class=md-ellipsis> front </span> </a> </li> <li class=md-nav__item> <a href=../get/ class=md-nav__link> <span class=md-ellipsis> get </span> </a> </li> <li class=md-nav__item> <a href=../get_allocator/ class=md-nav__link> <span class=md-ellipsis> get_allocator </span> </a> </li> <li class=md-nav__item> <a href=../get_binary/ class=md-nav__link> <span class=md-ellipsis> get_binary </span> </a> </li> <li class=md-nav__item> <a href=../get_ptr/ class=md-nav__link> <span class=md-ellipsis> get_ptr </span> </a> </li> <li class=md-nav__item> <a href=../get_ref/ class=md-nav__link> <span class=md-ellipsis> get_ref </span> </a> </li> <li class=md-nav__item> <a href=../get_to/ class=md-nav__link> <span class=md-ellipsis> get_to </span> </a> </li> <li class=md-nav__item> <a href=../std_hash/ class=md-nav__link> <span class=md-ellipsis> std::hash&lt;basic_json&gt; </span> </a> </li> <li class=md-nav__item> <a href=../input_format_t/ class=md-nav__link> <span class=md-ellipsis> input_format_t </span> </a> </li> <li class=md-nav__item> <a href=../insert/ class=md-nav__link> <span class=md-ellipsis> insert </span> </a> </li> <li class=md-nav__item> <a href=../invalid_iterator/ class=md-nav__link> <span class=md-ellipsis> invalid_iterator </span> </a> </li> <li class=md-nav__item> <a href=../is_array/ class=md-nav__link> <span class=md-ellipsis> is_array </span> </a> </li> <li class=md-nav__item> <a href=../is_binary/ class=md-nav__link> <span class=md-ellipsis> is_binary </span> </a> </li> <li class=md-nav__item> <a href=../is_boolean/ class=md-nav__link> <span class=md-ellipsis> is_boolean </span> </a> </li> <li class=md-nav__item> <a href=../is_discarded/ class=md-nav__link> <span class=md-ellipsis> is_discarded </span> </a> </li> <li class=md-nav__item> <a href=../is_null/ class=md-nav__link> <span class=md-ellipsis> is_null </span> </a> </li> <li class=md-nav__item> <a href=../is_number/ class=md-nav__link> <span class=md-ellipsis> is_number </span> </a> </li> <li class=md-nav__item> <a href=../is_number_float/ class=md-nav__link> <span class=md-ellipsis> is_number_float </span> </a> </li> <li class=md-nav__item> <a href=../is_number_integer/ class=md-nav__link> <span class=md-ellipsis> is_number_integer </span> </a> </li> <li class=md-nav__item> <a href=../is_number_unsigned/ class=md-nav__link> <span class=md-ellipsis> is_number_unsigned </span> </a> </li> <li class=md-nav__item> <a href=../is_object/ class=md-nav__link> <span class=md-ellipsis> is_object </span> </a> </li> <li class=md-nav__item> <a href=../is_primitive/ class=md-nav__link> <span class=md-ellipsis> is_primitive </span> </a> </li> <li class=md-nav__item> <a href=../is_string/ class=md-nav__link> <span class=md-ellipsis> is_string </span> </a> </li> <li class=md-nav__item> <a href=../is_structured/ class=md-nav__link> <span class=md-ellipsis> is_structured </span> </a> </li> <li class=md-nav__item> <a href=../items/ class=md-nav__link> <span class=md-ellipsis> items </span> </a> </li> <li class=md-nav__item> <a href=../json_base_class_t/ class=md-nav__link> <span class=md-ellipsis> json_base_class_t </span> </a> </li> <li class=md-nav__item> <a href=../json_serializer/ class=md-nav__link> <span class=md-ellipsis> json_serializer </span> </a> </li> <li class=md-nav__item> <a href=../max_size/ class=md-nav__link> <span class=md-ellipsis> max_size </span> </a> </li> <li class=md-nav__item> <a href=../meta/ class=md-nav__link> <span class=md-ellipsis> meta </span> </a> </li> <li class=md-nav__item> <a href=../merge_patch/ class=md-nav__link> <span class=md-ellipsis> merge_patch </span> </a> </li> <li class=md-nav__item> <a href=../number_float_t/ class=md-nav__link> <span class=md-ellipsis> number_float_t </span> </a> </li> <li class=md-nav__item> <a href=../number_integer_t/ class=md-nav__link> <span class=md-ellipsis> number_integer_t </span> </a> </li> <li class=md-nav__item> <a href=../number_unsigned_t/ class=md-nav__link> <span class=md-ellipsis> number_unsigned_t </span> </a> </li> <li class=md-nav__item> <a href=../object/ class=md-nav__link> <span class=md-ellipsis> object </span> </a> </li> <li class=md-nav__item> <a href=../object_comparator_t/ class=md-nav__link> <span class=md-ellipsis> object_comparator_t </span> </a> </li> <li class=md-nav__item> <a href=../object_t/ class=md-nav__link> <span class=md-ellipsis> object_t </span> </a> </li> <li class=md-nav__item> <a href=../operator_ValueType/ class=md-nav__link> <span class=md-ellipsis> operator ValueType </span> </a> </li> <li class=md-nav__item> <a href=../operator_value_t/ class=md-nav__link> <span class=md-ellipsis> operator value_t </span> </a> </li> <li class=md-nav__item> <a href=../operator%5B%5D/ class=md-nav__link> <span class=md-ellipsis> operator[] </span> </a> </li> <li class=md-nav__item> <a href=../operator%3D/ class=md-nav__link> <span class=md-ellipsis> operator= </span> </a> </li> <li class=md-nav__item> <a href=../operator%2B%3D/ class=md-nav__link> <span class=md-ellipsis> operator+= </span> </a> </li> <li class=md-nav__item> <a href=../operator_eq/ class=md-nav__link> <span class=md-ellipsis> operator== </span> </a> </li> <li class=md-nav__item> <a href=../operator_ne/ class=md-nav__link> <span class=md-ellipsis> operator!= </span> </a> </li> <li class=md-nav__item> <a href=../operator_lt/ class=md-nav__link> <span class=md-ellipsis> operator< </span> </a> </li> <li class=md-nav__item> <a href=../operator_gt/ class=md-nav__link> <span class=md-ellipsis> operator> </span> </a> </li> <li class=md-nav__item> <a href=../operator_le/ class=md-nav__link> <span class=md-ellipsis> operator<= </span> </a> </li> <li class=md-nav__item> <a href=../operator_ge/ class=md-nav__link> <span class=md-ellipsis> operator>= </span> </a> </li> <li class=md-nav__item> <a href=../operator_spaceship/ class=md-nav__link> <span class=md-ellipsis> operator<=> </span> </a> </li> <li class=md-nav__item> <a href=../out_of_range/ class=md-nav__link> <span class=md-ellipsis> out_of_range </span> </a> </li> <li class=md-nav__item> <a href=../other_error/ class=md-nav__link> <span class=md-ellipsis> other_error </span> </a> </li> <li class=md-nav__item> <a href=../parse/ class=md-nav__link> <span class=md-ellipsis> parse </span> </a> </li> <li class=md-nav__item> <a href=../parse_error/ class=md-nav__link> <span class=md-ellipsis> parse_error </span> </a> </li> <li class=md-nav__item> <a href=../parse_event_t/ class=md-nav__link> <span class=md-ellipsis> parse_event_t </span> </a> </li> <li class=md-nav__item> <a href=../parser_callback_t/ class=md-nav__link> <span class=md-ellipsis> parser_callback_t </span> </a> </li> <li class="md-nav__item md-nav__item--active"> <input class="md-nav__toggle md-toggle" type=checkbox id=__toc> <label class="md-nav__link md-nav__link--active" for=__toc> <span class=md-ellipsis> patch </span> <span class="md-nav__icon md-icon"></span> </label> <a href=./ class="md-nav__link md-nav__link--active"> <span class=md-ellipsis> patch </span> </a> <nav class="md-nav md-nav--secondary" aria-label="Table of contents"> <label class=md-nav__title for=__toc> <span class="md-nav__icon md-icon"></span> Table of contents </label> <ul class=md-nav__list data-md-component=toc data-md-scrollfix> <li class=md-nav__item> <a href=#parameters class=md-nav__link> <span class=md-ellipsis> Parameters </span> </a> </li> <li class=md-nav__item> <a href=#return-value class=md-nav__link> <span class=md-ellipsis> Return value </span> </a> </li> <li class=md-nav__item> <a href=#exception-safety class=md-nav__link> <span class=md-ellipsis> Exception safety </span> </a> </li> <li class=md-nav__item> <a href=#exceptions class=md-nav__link> <span class=md-ellipsis> Exceptions </span> </a> </li> <li class=md-nav__item> <a href=#complexity class=md-nav__link> <span class=md-ellipsis> Complexity </span> </a> </li> <li class=md-nav__item> <a href=#notes class=md-nav__link> <span class=md-ellipsis> Notes </span> </a> </li> <li class=md-nav__item> <a href=#examples class=md-nav__link> <span class=md-ellipsis> Examples </span> </a> </li> <li class=md-nav__item> <a href=#see-also class=md-nav__link> <span class=md-ellipsis> See also </span> </a> </li> <li class=md-nav__item> <a href=#version-history class=md-nav__link> <span class=md-ellipsis> Version history </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../patch_inplace/ class=md-nav__link> <span class=md-ellipsis> patch_inplace </span> </a> </li> <li class=md-nav__item> <a href=../push_back/ class=md-nav__link> <span class=md-ellipsis> push_back </span> </a> </li> <li class=md-nav__item> <a href=../rbegin/ class=md-nav__link> <span class=md-ellipsis> rbegin </span> </a> </li> <li class=md-nav__item> <a href=../rend/ class=md-nav__link> <span class=md-ellipsis> rend </span> </a> </li> <li class=md-nav__item> <a href=../sax_parse/ class=md-nav__link> <span class=md-ellipsis> sax_parse </span> </a> </li> <li class=md-nav__item> <a href=../size/ class=md-nav__link> <span class=md-ellipsis> size </span> </a> </li> <li class=md-nav__item> <a href=../start_pos/ class=md-nav__link> <span class=md-ellipsis> start_pos </span> </a> </li> <li class=md-nav__item> <a href=../string_t/ class=md-nav__link> <span class=md-ellipsis> string_t </span> </a> </li> <li class=md-nav__item> <a href=../swap/ class=md-nav__link> <span class=md-ellipsis> swap </span> </a> </li> <li class=md-nav__item> <a href=../std_swap/ class=md-nav__link> <span class=md-ellipsis> std::swap&lt;basic_json&gt; </span> </a> </li> <li class=md-nav__item> <a href=../to_bjdata/ class=md-nav__link> <span class=md-ellipsis> to_bjdata </span> </a> </li> <li class=md-nav__item> <a href=../to_bson/ class=md-nav__link> <span class=md-ellipsis> to_bson </span> </a> </li> <li class=md-nav__item> <a href=../to_cbor/ class=md-nav__link> <span class=md-ellipsis> to_cbor </span> </a> </li> <li class=md-nav__item> <a href=../to_msgpack/ class=md-nav__link> <span class=md-ellipsis> to_msgpack </span> </a> </li> <li class=md-nav__item> <a href=../to_string/ class=md-nav__link> <span class=md-ellipsis> to_string </span> </a> </li> <li class=md-nav__item> <a href=../to_ubjson/ class=md-nav__link> <span class=md-ellipsis> to_ubjson </span> </a> </li> <li class=md-nav__item> <a href=../type/ class=md-nav__link> <span class=md-ellipsis> type </span> </a> </li> <li class=md-nav__item> <a href=../type_error/ class=md-nav__link> <span class=md-ellipsis> type_error </span> </a> </li> <li class=md-nav__item> <a href=../type_name/ class=md-nav__link> <span class=md-ellipsis> type_name </span> </a> </li> <li class=md-nav__item> <a href=../unflatten/ class=md-nav__link> <span class=md-ellipsis> unflatten </span> </a> </li> <li class=md-nav__item> <a href=../update/ class=md-nav__link> <span class=md-ellipsis> update </span> </a> </li> <li class=md-nav__item> <a href=../value/ class=md-nav__link> <span class=md-ellipsis> value </span> </a> </li> <li class=md-nav__item> <a href=../value_t/ class=md-nav__link> <span class=md-ellipsis> value_t </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_2> <div class="md-nav__link md-nav__container"> <a href=../../byte_container_with_subtype/ class="md-nav__link "> <span class=md-ellipsis> byte_container_with_subtype </span> </a> <label class="md-nav__link " for=__nav_4_2 id=__nav_4_2_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_2_label aria-expanded=false> <label class=md-nav__title for=__nav_4_2> <span class="md-nav__icon md-icon"></span> byte_container_with_subtype </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../byte_container_with_subtype/byte_container_with_subtype/ class=md-nav__link> <span class=md-ellipsis> (constructor) </span> </a> </li> <li class=md-nav__item> <a href=../../byte_container_with_subtype/clear_subtype/ class=md-nav__link> <span class=md-ellipsis> clear_subtype </span> </a> </li> <li class=md-nav__item> <a href=../../byte_container_with_subtype/has_subtype/ class=md-nav__link> <span class=md-ellipsis> has_subtype </span> </a> </li> <li class=md-nav__item> <a href=../../byte_container_with_subtype/set_subtype/ class=md-nav__link> <span class=md-ellipsis> set_subtype </span> </a> </li> <li class=md-nav__item> <a href=../../byte_container_with_subtype/subtype/ class=md-nav__link> <span class=md-ellipsis> subtype </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_3> <div class="md-nav__link md-nav__container"> <a href=../../adl_serializer/ class="md-nav__link "> <span class=md-ellipsis> adl_serializer </span> </a> <label class="md-nav__link " for=__nav_4_3 id=__nav_4_3_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_3_label aria-expanded=false> <label class=md-nav__title for=__nav_4_3> <span class="md-nav__icon md-icon"></span> adl_serializer </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../adl_serializer/from_json/ class=md-nav__link> <span class=md-ellipsis> from_json </span> </a> </li> <li class=md-nav__item> <a href=../../adl_serializer/to_json/ class=md-nav__link> <span class=md-ellipsis> to_json </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../json/ class=md-nav__link> <span class=md-ellipsis> json </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_5> <div class="md-nav__link md-nav__container"> <a href=../../json_pointer/ class="md-nav__link "> <span class=md-ellipsis> json_pointer </span> </a> <label class="md-nav__link " for=__nav_4_5 id=__nav_4_5_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_5_label aria-expanded=false> <label class=md-nav__title for=__nav_4_5> <span class="md-nav__icon md-icon"></span> json_pointer </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../json_pointer/json_pointer/ class=md-nav__link> <span class=md-ellipsis> (Constructor) </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/back/ class=md-nav__link> <span class=md-ellipsis> back </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/empty/ class=md-nav__link> <span class=md-ellipsis> empty </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/front/ class=md-nav__link> <span class=md-ellipsis> front </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_string_t/ class=md-nav__link> <span class=md-ellipsis> operator string_t </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_eq/ class=md-nav__link> <span class=md-ellipsis> operator== </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_ne/ class=md-nav__link> <span class=md-ellipsis> operator!= </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_slash/ class=md-nav__link> <span class=md-ellipsis> operator/ </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_slasheq/ class=md-nav__link> <span class=md-ellipsis> operator/= </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/parent_pointer/ class=md-nav__link> <span class=md-ellipsis> parent_pointer </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/pop_back/ class=md-nav__link> <span class=md-ellipsis> pop_back </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/pop_front/ class=md-nav__link> <span class=md-ellipsis> pop_front </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/push_back/ class=md-nav__link> <span class=md-ellipsis> push_back </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/push_front/ class=md-nav__link> <span class=md-ellipsis> push_front </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/string_t/ class=md-nav__link> <span class=md-ellipsis> string_t </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/to_string/ class=md-nav__link> <span class=md-ellipsis> to_string </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_6> <div class="md-nav__link md-nav__container"> <a href=../../json_sax/ class="md-nav__link "> <span class=md-ellipsis> json_sax </span> </a> <label class="md-nav__link " for=__nav_4_6 id=__nav_4_6_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_6_label aria-expanded=false> <label class=md-nav__title for=__nav_4_6> <span class="md-nav__icon md-icon"></span> json_sax </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../json_sax/binary/ class=md-nav__link> <span class=md-ellipsis> binary </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/boolean/ class=md-nav__link> <span class=md-ellipsis> boolean </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/end_array/ class=md-nav__link> <span class=md-ellipsis> end_array </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/end_object/ class=md-nav__link> <span class=md-ellipsis> end_object </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/key/ class=md-nav__link> <span class=md-ellipsis> key </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/null/ class=md-nav__link> <span class=md-ellipsis> null </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/number_float/ class=md-nav__link> <span class=md-ellipsis> number_float </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/number_integer/ class=md-nav__link> <span class=md-ellipsis> number_integer </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/number_unsigned/ class=md-nav__link> <span class=md-ellipsis> number_unsigned </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/parse_error/ class=md-nav__link> <span class=md-ellipsis> parse_error </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/start_array/ class=md-nav__link> <span class=md-ellipsis> start_array </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/start_object/ class=md-nav__link> <span class=md-ellipsis> start_object </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/string/ class=md-nav__link> <span class=md-ellipsis> string </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../operator_ltlt/ class=md-nav__link> <span class=md-ellipsis> operator<<(basic_json), operator<<(json_pointer) </span> </a> </li> <li class=md-nav__item> <a href=../../operator_gtgt/ class=md-nav__link> <span class=md-ellipsis> operator>>(basic_json) </span> </a> </li> <li class=md-nav__item> <a href=../../operator_literal_json/ class=md-nav__link> <span class=md-ellipsis> operator""_json </span> </a> </li> <li class=md-nav__item> <a href=../../operator_literal_json_pointer/ class=md-nav__link> <span class=md-ellipsis> operator""_json_pointer </span> </a> </li> <li class=md-nav__item> <a href=../../ordered_json/ class=md-nav__link> <span class=md-ellipsis> ordered_json </span> </a> </li> <li class=md-nav__item> <a href=../../ordered_map/ class=md-nav__link> <span class=md-ellipsis> ordered_map </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_13> <div class="md-nav__link md-nav__container"> <a href=../../macros/ class="md-nav__link "> <span class=md-ellipsis> macros </span> </a> <label class="md-nav__link " for=__nav_4_13 id=__nav_4_13_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_13_label aria-expanded=false> <label class=md-nav__title for=__nav_4_13> <span class="md-nav__icon md-icon"></span> macros </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../macros/json_assert/ class=md-nav__link> <span class=md-ellipsis> JSON_ASSERT </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_brace_init_copy_semantics/ class=md-nav__link> <span class=md-ellipsis> JSON_BRACE_INIT_COPY_SEMANTICS </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_throw_user/ class=md-nav__link> <span class=md-ellipsis> JSON_CATCH_USER, JSON_THROW_USER, JSON_TRY_USER </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_diagnostics/ class=md-nav__link> <span class=md-ellipsis> JSON_DIAGNOSTICS </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_diagnostic_positions/ class=md-nav__link> <span class=md-ellipsis> JSON_DIAGNOSTIC_POSITIONS </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_disable_enum_serialization/ class=md-nav__link> <span class=md-ellipsis> JSON_DISABLE_ENUM_SERIALIZATION </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_has_cpp_11/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_CPP_11, JSON_HAS_CPP_14, JSON_HAS_CPP_17, JSON_HAS_CPP_20 </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_has_filesystem/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_EXPERIMENTAL_FILESYSTEM, JSON_HAS_FILESYSTEM </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_has_ranges/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_RANGES </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_has_static_rtti/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_STATIC_RTTI </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_has_three_way_comparison/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_THREE_WAY_COMPARISON </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_noexception/ class=md-nav__link> <span class=md-ellipsis> JSON_NOEXCEPTION </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_no_io/ class=md-nav__link> <span class=md-ellipsis> JSON_NO_IO </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_skip_library_version_check/ class=md-nav__link> <span class=md-ellipsis> JSON_SKIP_LIBRARY_VERSION_CHECK </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_skip_unsupported_compiler_check/ class=md-nav__link> <span class=md-ellipsis> JSON_SKIP_UNSUPPORTED_COMPILER_CHECK </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_use_global_udls/ class=md-nav__link> <span class=md-ellipsis> JSON_USE_GLOBAL_UDLS </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_use_implicit_conversions/ class=md-nav__link> <span class=md-ellipsis> JSON_USE_IMPLICIT_CONVERSIONS </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_use_legacy_discarded_value_comparison/ class=md-nav__link> <span class=md-ellipsis> JSON_USE_LEGACY_DISCARDED_VALUE_COMPARISON </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_define_derived_type/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_ONLY_SERIALIZE, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_define_type_intrusive/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_TYPE_INTRUSIVE, NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_TYPE_INTRUSIVE_ONLY_SERIALIZE </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_define_type_non_intrusive/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_define_type_with_names/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_TYPE_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_namespace/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_NAMESPACE </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_namespace_begin/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_NAMESPACE_BEGIN, NLOHMANN_JSON_NAMESPACE_END </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_namespace_no_version/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_NAMESPACE_NO_VERSION </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_serialize_enum/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_SERIALIZE_ENUM </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_serialize_enum_strict/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_SERIALIZE_ENUM_STRICT </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_version_major/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_VERSION_MAJOR, NLOHMANN_JSON_VERSION_MINOR, NLOHMANN_JSON_VERSION_PATCH </span> </a> </li> </ul> </nav> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_5> <div class="md-nav__link md-nav__container"> <a href=../../../community/ class="md-nav__link "> <span class=md-ellipsis> Community </span> </a> <label class="md-nav__link " for=__nav_5 id=__nav_5_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_5_label aria-expanded=false> <label class=md-nav__title for=__nav_5> <span class="md-nav__icon md-icon"></span> Community </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../community/code_of_conduct/ class=md-nav__link> <span class=md-ellipsis> Code of Conduct </span> </a> </li> <li class=md-nav__item> <a href=../../../community/contribution_guidelines/ class=md-nav__link> <span class=md-ellipsis> Contribution Guidelines </span> </a> </li> <li class=md-nav__item> <a href=../../../community/quality_assurance/ class=md-nav__link> <span class=md-ellipsis> Quality assurance </span> </a> </li> <li class=md-nav__item> <a href=../../../community/governance/ class=md-nav__link> <span class=md-ellipsis> Governance </span> </a> </li> <li class=md-nav__item> <a href=../../../community/security_policy/ class=md-nav__link> <span class=md-ellipsis> Security Policy </span> </a> </li> </ul> </nav> </li> </ul> </nav> </div> </div> </div> <div class="md-sidebar md-sidebar--secondary" data-md-component=sidebar data-md-type=toc> <div class=md-sidebar__scrollwrap> <div class=md-sidebar__inner> <nav class="md-nav md-nav--secondary" aria-label="Table of contents"> <label class=md-nav__title for=__toc> <span class="md-nav__icon md-icon"></span> Table of contents </label> <ul class=md-nav__list data-md-component=toc data-md-scrollfix> <li class=md-nav__item> <a href=#parameters class=md-nav__link> <span class=md-ellipsis> Parameters </span> </a> </li> <li class=md-nav__item> <a href=#return-value class=md-nav__link> <span class=md-ellipsis> Return value </span> </a> </li> <li class=md-nav__item> <a href=#exception-safety class=md-nav__link> <span class=md-ellipsis> Exception safety </span> </a> </li> <li class=md-nav__item> <a href=#exceptions class=md-nav__link> <span class=md-ellipsis> Exceptions </span> </a> </li> <li class=md-nav__item> <a href=#complexity class=md-nav__link> <span class=md-ellipsis> Complexity </span> </a> </li> <li class=md-nav__item> <a href=#notes class=md-nav__link> <span class=md-ellipsis> Notes </span> </a> </li> <li class=md-nav__item> <a href=#examples class=md-nav__link> <span class=md-ellipsis> Examples </span> </a> </li> <li class=md-nav__item> <a href=#see-also class=md-nav__link> <span class=md-ellipsis> See also </span> </a> </li> <li class=md-nav__item> <a href=#version-history class=md-nav__link> <span class=md-ellipsis> Version history </span> </a> </li> </ul> </nav> </div> </div> </div> <div class=md-content data-md-component=content> <article class="md-content__inner md-typeset"> <a href="https://github.com/nlohmann/json/edit/develop/docs/mkdocs/docs/api/basic_json/patch.md" title="Edit this page" class="md-content__button md-icon" rel="edit"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M10 20H6V4h7v5h5v3.1l2-2V8l-6-6H6c-1.1 0-2 .9-2 2v16c0 1.1.9 2 2 2h4zm10.2-7c.1 0 .3.1.4.2l1.3 1.3c.2.2.2.6 0 .8l-1 1-2.1-2.1 1-1c.1-.1.2-.2.4-.2m0 3.9L14.1 23H12v-2.1l6.1-6.1z"/></svg> </a> <a href="https://github.com/nlohmann/json/raw/develop/docs/mkdocs/docs/api/basic_json/patch.md" title="View source of this page" class="md-content__button md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M17 18c.56 0 1 .44 1 1s-.44 1-1 1-1-.44-1-1 .44-1 1-1m0-3c-2.73 0-5.06 1.66-6 4 .94 2.34 3.27 4 6 4s5.06-1.66 6-4c-.94-2.34-3.27-4-6-4m0 6.5a2.5 2.5 0 0 1-2.5-2.5 2.5 2.5 0 0 1 2.5-2.5 2.5 2.5 0 0 1 2.5 2.5 2.5 2.5 0 0 1-2.5 2.5M9.27 20H6V4h7v5h5v4.07c.7.08 1.36.25 2 .49V8l-6-6H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h4.5a8.2 8.2 0 0 1-1.23-2"/></svg> </a> <h1 id=nlohmannbasic_jsonpatch><small>nlohmann::basic_json::</small>patch<a class=headerlink href=#nlohmannbasic_jsonpatch title="Permanent link">&para;</a></h1> <div class=highlight><pre><span></span><code><span class=n>basic_json</span><span class=w> </span><span class=nf>patch</span><span class=p>(</span><span class=k>const</span><span class=w> </span><span class=n>basic_json</span><span class=o>&amp;</span><span class=w> </span><span class=n>json_patch</span><span class=p>)</span><span class=w> </span><span class=k>const</span><span class=p>;</span>
-</code></pre></div> <p><a href="http://jsonpatch.com"><abbr title="JavaScript Object Notation">JSON</abbr> Patch</a> defines a <abbr title="JavaScript Object Notation">JSON</abbr> document structure for expressing a sequence of operations to apply to a <abbr title="JavaScript Object Notation">JSON</abbr> document. With this function, a <abbr title="JavaScript Object Notation">JSON</abbr> Patch is applied to the current <abbr title="JavaScript Object Notation">JSON</abbr> value by executing all operations from the patch.</p> <h2 id=parameters>Parameters<a class=headerlink href=#parameters title="Permanent link">&para;</a></h2> <dl> <dt><code>json_patch</code> (in)</dt> <dd><abbr title="JavaScript Object Notation">JSON</abbr> patch document</dd> </dl> <h2 id=return-value>Return value<a class=headerlink href=#return-value title="Permanent link">&para;</a></h2> <p>patched document</p> <h2 id=exception-safety>Exception safety<a class=headerlink href=#exception-safety title="Permanent link">&para;</a></h2> <p>Strong guarantee: if an exception is thrown, there are no changes in the <abbr title="JavaScript Object Notation">JSON</abbr> value.</p> <h2 id=exceptions>Exceptions<a class=headerlink href=#exceptions title="Permanent link">&para;</a></h2> <ul> <li>Throws <a href=../../../home/exceptions/#jsonexceptionparse_error104><code>parse_error.104</code></a> if the <abbr title="JavaScript Object Notation">JSON</abbr> patch does not consist of an array of objects.</li> <li>Throws <a href=../../../home/exceptions/#jsonexceptionparse_error105><code>parse_error.105</code></a> if the <abbr title="JavaScript Object Notation">JSON</abbr> patch is malformed (e.g., mandatory attributes are missing); example: <code>"operation add must have member path"</code>.</li> <li>Throws <a href=../../../home/exceptions/#jsonexceptionout_of_range401><code>out_of_range.401</code></a> if an array index is out of range.</li> <li>Throws <a href=../../../home/exceptions/#jsonexceptionout_of_range403><code>out_of_range.403</code></a> if a <abbr title="JavaScript Object Notation">JSON</abbr> pointer inside the patch could not be resolved successfully in the current <abbr title="JavaScript Object Notation">JSON</abbr> value; example: <code>"key baz not found"</code>.</li> <li>Throws <a href=../../../home/exceptions/#jsonexceptionout_of_range405><code>out_of_range.405</code></a> if <abbr title="JavaScript Object Notation">JSON</abbr> pointer has no parent ("add", "remove", "move")</li> <li>Throws <a href=../../../home/exceptions/#jsonexceptionother_error501><code>out_of_range.501</code></a> if "test" operation was unsuccessful.</li> </ul> <h2 id=complexity>Complexity<a class=headerlink href=#complexity title="Permanent link">&para;</a></h2> <p>Linear in the size of the <abbr title="JavaScript Object Notation">JSON</abbr> value and the length of the <abbr title="JavaScript Object Notation">JSON</abbr> patch. As usually the patch affects only a fraction of the <abbr title="JavaScript Object Notation">JSON</abbr> value, the complexity can usually be neglected.</p> <h2 id=notes>Notes<a class=headerlink href=#notes title="Permanent link">&para;</a></h2> <p>The application of a patch is atomic: Either all operations succeed and the patched document is returned or an exception is thrown. In any case, the original value is not changed: the patch is applied to a copy of the value.</p> <h2 id=examples>Examples<a class=headerlink href=#examples title="Permanent link">&para;</a></h2> <details class=example> <summary>Example</summary> <p>The following code shows how a <abbr title="JavaScript Object Notation">JSON</abbr> patch is applied to a value.</p> <div class=highlight><pre><span></span><code><span class=cp>#include</span><span class=w> </span><span class=cpf>&lt;iostream&gt;</span>
+</code></pre></div> <p><a href="http://jsonpatch.com"><abbr title="JavaScript Object Notation">JSON</abbr> Patch</a> defines a <abbr title="JavaScript Object Notation">JSON</abbr> document structure for expressing a sequence of operations to apply to a <abbr title="JavaScript Object Notation">JSON</abbr> document. With this function, a <abbr title="JavaScript Object Notation">JSON</abbr> Patch is applied to the current <abbr title="JavaScript Object Notation">JSON</abbr> value by executing all operations from the patch.</p> <h2 id=parameters>Parameters<a class=headerlink href=#parameters title="Permanent link">&para;</a></h2> <dl> <dt><code>json_patch</code> (in)</dt> <dd><abbr title="JavaScript Object Notation">JSON</abbr> patch document</dd> </dl> <h2 id=return-value>Return value<a class=headerlink href=#return-value title="Permanent link">&para;</a></h2> <p>patched document</p> <h2 id=exception-safety>Exception safety<a class=headerlink href=#exception-safety title="Permanent link">&para;</a></h2> <p>Strong guarantee: if an exception is thrown, there are no changes in the <abbr title="JavaScript Object Notation">JSON</abbr> value.</p> <h2 id=exceptions>Exceptions<a class=headerlink href=#exceptions title="Permanent link">&para;</a></h2> <ul> <li>Throws <a href=../../../home/exceptions/#jsonexceptionparse_error104><code>parse_error.104</code></a> if the <abbr title="JavaScript Object Notation">JSON</abbr> patch does not consist of an array of objects.</li> <li>Throws <a href=../../../home/exceptions/#jsonexceptionparse_error105><code>parse_error.105</code></a> if the <abbr title="JavaScript Object Notation">JSON</abbr> patch is malformed (e.g., mandatory attributes are missing); example: <code>"operation add must have member path"</code>.</li> <li>Throws <a href=../../../home/exceptions/#jsonexceptionout_of_range401><code>out_of_range.401</code></a> if an array index is out of range.</li> <li>Throws <a href=../../../home/exceptions/#jsonexceptionout_of_range403><code>out_of_range.403</code></a> if a <abbr title="JavaScript Object Notation">JSON</abbr> pointer inside the patch could not be resolved successfully in the current <abbr title="JavaScript Object Notation">JSON</abbr> value; example: <code>"key baz not found"</code>.</li> <li>Throws <a href=../../../home/exceptions/#jsonexceptionout_of_range405><code>out_of_range.405</code></a> if <abbr title="JavaScript Object Notation">JSON</abbr> pointer has no parent ("add", "remove", "move")</li> <li>Throws <a href=../../../home/exceptions/#jsonexceptionother_error501><code>other_error.501</code></a> if "test" operation was unsuccessful.</li> </ul> <h2 id=complexity>Complexity<a class=headerlink href=#complexity title="Permanent link">&para;</a></h2> <p>Linear in the size of the <abbr title="JavaScript Object Notation">JSON</abbr> value and the length of the <abbr title="JavaScript Object Notation">JSON</abbr> patch. As usually the patch affects only a fraction of the <abbr title="JavaScript Object Notation">JSON</abbr> value, the complexity can usually be neglected.</p> <h2 id=notes>Notes<a class=headerlink href=#notes title="Permanent link">&para;</a></h2> <p>The application of a patch is atomic: Either all operations succeed and the patched document is returned or an exception is thrown. In any case, the original value is not changed: the patch is applied to a copy of the value.</p> <h2 id=examples>Examples<a class=headerlink href=#examples title="Permanent link">&para;</a></h2> <details class=example> <summary>Example</summary> <p>The following code shows how a <abbr title="JavaScript Object Notation">JSON</abbr> patch is applied to a value.</p> <div class=highlight><pre><span></span><code><span class=cp>#include</span><span class=w> </span><span class=cpf>&lt;iostream&gt;</span>
 <span class=cp>#include</span><span class=w> </span><span class=cpf>&lt;iomanip&gt;</span>
 <span class=cp>#include</span><span class=w> </span><span class=cpf>&lt;nlohmann/json.hpp&gt;</span>
 
@@ -43,4 +43,4 @@
 <span class=w>        </span><span class=s2>&quot;world&quot;</span>
 <span class=w>    </span><span class=p>]</span>
 <span class=p>}</span>
-</code></pre></div> </details> <h2 id=see-also>See also<a class=headerlink href=#see-also title="Permanent link">&para;</a></h2> <ul> <li><a href="https://tools.ietf.org/html/rfc6902"><abbr title="Request for Comments">RFC</abbr> 6902 (<abbr title="JavaScript Object Notation">JSON</abbr> Patch)</a></li> <li><a href="https://tools.ietf.org/html/rfc6901"><abbr title="Request for Comments">RFC</abbr> 6901 (<abbr title="JavaScript Object Notation">JSON</abbr> Pointer)</a></li> <li><a href=../patch_inplace/ >patch_inplace</a> applies a <abbr title="JavaScript Object Notation">JSON</abbr> Patch without creating a copy of the document</li> <li><a href=../merge_patch/ >merge_patch</a> applies a <abbr title="JavaScript Object Notation">JSON</abbr> Merge Patch</li> </ul> <h2 id=version-history>Version history<a class=headerlink href=#version-history title="Permanent link">&para;</a></h2> <ul> <li>Added in version 2.0.0.</li> </ul> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 23, 2026 11:16:18 UTC">June 23, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
+</code></pre></div> </details> <h2 id=see-also>See also<a class=headerlink href=#see-also title="Permanent link">&para;</a></h2> <ul> <li><a href="https://tools.ietf.org/html/rfc6902"><abbr title="Request for Comments">RFC</abbr> 6902 (<abbr title="JavaScript Object Notation">JSON</abbr> Patch)</a></li> <li><a href="https://tools.ietf.org/html/rfc6901"><abbr title="Request for Comments">RFC</abbr> 6901 (<abbr title="JavaScript Object Notation">JSON</abbr> Pointer)</a></li> <li><a href=../patch_inplace/ >patch_inplace</a> applies a <abbr title="JavaScript Object Notation">JSON</abbr> Patch without creating a copy of the document</li> <li><a href=../merge_patch/ >merge_patch</a> applies a <abbr title="JavaScript Object Notation">JSON</abbr> Merge Patch</li> </ul> <h2 id=version-history>Version history<a class=headerlink href=#version-history title="Permanent link">&para;</a></h2> <ul> <li>Added in version 2.0.0.</li> </ul> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 29, 2026 20:15:18 UTC">June 29, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
diff --git a/api/basic_json/patch_inplace/index.html b/api/basic_json/patch_inplace/index.html
index b146b20..56028af 100644
--- a/api/basic_json/patch_inplace/index.html
+++ b/api/basic_json/patch_inplace/index.html
@@ -1,5 +1,5 @@
-<!doctype html><html lang=en class=no-js> <head><meta charset=utf-8><meta name=viewport content="width=device-width,initial-scale=1"><meta name=author content="Niels Lohmann"><link href="https://json.nlohmann.me/api/basic_json/patch_inplace/" rel="canonical"><link href=../patch/ rel=prev><link href=../push_back/ rel=next><link rel=icon href=../../../assets/images/favicon.png><meta name=generator content="mkdocs-1.6.1, mkdocs-material-9.7.6"><title>patch_inplace - JSON for Modern C++</title><link rel=stylesheet href=../../../assets/stylesheets/main.484c7ddc.min.css><link rel=stylesheet href=../../../assets/stylesheets/palette.ab4e12ef.min.css><link rel="stylesheet" href="../../../assets/external/fonts.googleapis.com/css.61a430c9.css"><style>:root{--md-text-font:"Roboto";--md-code-font:"JetBrains Mono"}</style><link rel=stylesheet href=../../../css/custom.css><script>__md_scope=new URL("../../..",location),__md_hash=e=>[...e].reduce(((e,_)=>(e<<5)-e+_.charCodeAt(0)),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script></head> <body dir=ltr data-md-color-scheme=default data-md-color-primary=indigo data-md-color-accent=indigo> <input class=md-toggle data-md-toggle=drawer type=checkbox id=__drawer autocomplete=off> <input class=md-toggle data-md-toggle=search type=checkbox id=__search autocomplete=off> <label class=md-overlay for=__drawer></label> <div data-md-component=skip> <a href=#nlohmannbasic_jsonpatch_inplace class=md-skip> Skip to content </a> </div> <div data-md-component=announce> </div> <header class=md-header data-md-component=header> <nav class="md-header__inner md-grid" aria-label=Header> <a href=../../.. title="JSON for Modern C++" class="md-header__button md-logo" aria-label="JSON for Modern C++" data-md-component=logo> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54"/></svg> </a> <label class="md-header__button md-icon" for=__drawer> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M3 6h18v2H3zm0 5h18v2H3zm0 5h18v2H3z"/></svg> </label> <div class=md-header__title data-md-component=header-title> <div class=md-header__ellipsis> <div class=md-header__topic> <span class=md-ellipsis> JSON for Modern C++ </span> </div> <div class=md-header__topic data-md-component=header-topic> <span class=md-ellipsis> patch_inplace </span> </div> </div> </div> <form class=md-header__option data-md-component=palette> <input class=md-option data-md-color-media="(prefers-color-scheme: light)" data-md-color-scheme=default data-md-color-primary=indigo data-md-color-accent=indigo aria-label="Switch to dark mode" type=radio name=__palette id=__palette_0> <label class="md-header__button md-icon" title="Switch to dark mode" for=__palette_1 hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a4 4 0 0 0-4 4 4 4 0 0 0 4 4 4 4 0 0 0 4-4 4 4 0 0 0-4-4m0 10a6 6 0 0 1-6-6 6 6 0 0 1 6-6 6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12z"/></svg> </label> <input class=md-option data-md-color-media="(prefers-color-scheme: dark)" data-md-color-scheme=slate data-md-color-primary=indigo data-md-color-accent=indigo aria-label="Switch to light mode" type=radio name=__palette id=__palette_1> <label class="md-header__button md-icon" title="Switch to light mode" for=__palette_0 hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 18c-.89 0-1.74-.2-2.5-.55C11.56 16.5 13 14.42 13 12s-1.44-4.5-3.5-5.45C10.26 6.2 11.11 6 12 6a6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12z"/></svg> </label> </form> <script>var palette=__md_get("__palette");if(palette&&palette.color){if("(prefers-color-scheme)"===palette.color.media){var media=matchMedia("(prefers-color-scheme: light)"),input=document.querySelector(media.matches?"[data-md-color-media='(prefers-color-scheme: light)']":"[data-md-color-media='(prefers-color-scheme: dark)']");palette.color.media=input.getAttribute("data-md-color-media"),palette.color.scheme=input.getAttribute("data-md-color-scheme"),palette.color.primary=input.getAttribute("data-md-color-primary"),palette.color.accent=input.getAttribute("data-md-color-accent")}for(var[key,value]of Object.entries(palette.color))document.body.setAttribute("data-md-color-"+key,value)}</script> <label class="md-header__button md-icon" for=__search> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg> </label> <div class=md-search data-md-component=search role=dialog> <label class=md-search__overlay for=__search></label> <div class=md-search__inner role=search> <form class=md-search__form name=search> <input type=text class=md-search__input name=query aria-label=Search placeholder=Search autocapitalize=off autocorrect=off autocomplete=off spellcheck=false data-md-component=search-query required> <label class="md-search__icon md-icon" for=__search> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11z"/></svg> </label> <nav class=md-search__options aria-label=Search> <button type=reset class="md-search__icon md-icon" title=Clear aria-label=Clear tabindex=-1> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z"/></svg> </button> </nav> </form> <div class=md-search__output> <div class=md-search__scrollwrap tabindex=0 data-md-scrollfix> <div class=md-search-result data-md-component=search-result> <div class=md-search-result__meta> Initializing search </div> <ol class=md-search-result__list role=presentation></ol> </div> </div> </div> </div> </div> <div class=md-header__source> <a href="https://github.com/nlohmann/json" title="Go to repository" class="md-source" data-md-component="source"> <div class="md-source__icon md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </div> <div class=md-source__repository> nlohmann/json </div> </a> </div> </nav> </header> <div class=md-container data-md-component=container> <nav class=md-tabs aria-label=Tabs data-md-component=tabs> <div class=md-grid> <ul class=md-tabs__list> <li class=md-tabs__item> <a href=../../.. class=md-tabs__link> Home </a> </li> <li class=md-tabs__item> <a href=../../../features/arbitrary_types/ class=md-tabs__link> Features </a> </li> <li class=md-tabs__item> <a href=../../../integration/ class=md-tabs__link> Integration </a> </li> <li class="md-tabs__item md-tabs__item--active"> <a href=../ class=md-tabs__link> API Documentation </a> </li> <li class=md-tabs__item> <a href=../../../community/ class=md-tabs__link> Community </a> </li> </ul> </div> </nav> <main class=md-main data-md-component=main> <div class="md-main__inner md-grid"> <div class="md-sidebar md-sidebar--primary" data-md-component=sidebar data-md-type=navigation> <div class=md-sidebar__scrollwrap> <div class=md-sidebar__inner> <nav class="md-nav md-nav--primary md-nav--lifted" aria-label=Navigation data-md-level=0> <label class=md-nav__title for=__drawer> <a href=../../.. title="JSON for Modern C++" class="md-nav__button md-logo" aria-label="JSON for Modern C++" data-md-component=logo> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54"/></svg> </a> JSON for Modern C++ </label> <div class=md-nav__source> <a href="https://github.com/nlohmann/json" title="Go to repository" class="md-source" data-md-component="source"> <div class="md-source__icon md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </div> <div class=md-source__repository> nlohmann/json </div> </a> </div> <ul class=md-nav__list data-md-scrollfix> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_1> <div class="md-nav__link md-nav__container"> <a href=../../.. class="md-nav__link "> <span class=md-ellipsis> Home </span> </a> <label class="md-nav__link " for=__nav_1 id=__nav_1_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_1_label aria-expanded=false> <label class=md-nav__title for=__nav_1> <span class="md-nav__icon md-icon"></span> Home </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../home/license/ class=md-nav__link> <span class=md-ellipsis> License </span> </a> </li> <li class=md-nav__item> <a href=../../../home/faq/ class=md-nav__link> <span class=md-ellipsis> FAQ </span> </a> </li> <li class=md-nav__item> <a href=../../../home/exceptions/ class=md-nav__link> <span class=md-ellipsis> Exceptions </span> </a> </li> <li class=md-nav__item> <a href=../../../home/releases/ class=md-nav__link> <span class=md-ellipsis> Releases </span> </a> </li> <li class=md-nav__item> <a href=../../../home/design_goals/ class=md-nav__link> <span class=md-ellipsis> Design goals </span> </a> </li> <li class=md-nav__item> <a href=../../../home/architecture/ class=md-nav__link> <span class=md-ellipsis> Architecture </span> </a> </li> <li class=md-nav__item> <a href=../../../home/customers/ class=md-nav__link> <span class=md-ellipsis> Customers </span> </a> </li> <li class=md-nav__item> <a href=../../../home/sponsors/ class=md-nav__link> <span class=md-ellipsis> Sponsors </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2> <label class=md-nav__link for=__nav_2 id=__nav_2_label tabindex=0> <span class=md-ellipsis> Features </span> <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_2_label aria-expanded=false> <label class=md-nav__title for=__nav_2> <span class="md-nav__icon md-icon"></span> Features </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/arbitrary_types/ class=md-nav__link> <span class=md-ellipsis> Arbitrary Type Conversions </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_2> <div class="md-nav__link md-nav__container"> <a href=../../../features/binary_formats/ class="md-nav__link "> <span class=md-ellipsis> Binary Formats </span> </a> <label class="md-nav__link " for=__nav_2_2 id=__nav_2_2_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_2_label aria-expanded=false> <label class=md-nav__title for=__nav_2_2> <span class="md-nav__icon md-icon"></span> Binary Formats </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/binary_formats/bjdata/ class=md-nav__link> <span class=md-ellipsis> BJData </span> </a> </li> <li class=md-nav__item> <a href=../../../features/binary_formats/bson/ class=md-nav__link> <span class=md-ellipsis> BSON </span> </a> </li> <li class=md-nav__item> <a href=../../../features/binary_formats/cbor/ class=md-nav__link> <span class=md-ellipsis> CBOR </span> </a> </li> <li class=md-nav__item> <a href=../../../features/binary_formats/messagepack/ class=md-nav__link> <span class=md-ellipsis> MessagePack </span> </a> </li> <li class=md-nav__item> <a href=../../../features/binary_formats/ubjson/ class=md-nav__link> <span class=md-ellipsis> UBJSON </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../../features/binary_values/ class=md-nav__link> <span class=md-ellipsis> Binary Values </span> </a> </li> <li class=md-nav__item> <a href=../../../features/comments/ class=md-nav__link> <span class=md-ellipsis> Comments </span> </a> </li> <li class=md-nav__item> <a href=../../../features/trailing_commas/ class=md-nav__link> <span class=md-ellipsis> Trailing Commas </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_6> <div class="md-nav__link md-nav__container"> <a href=../../../features/element_access/ class="md-nav__link "> <span class=md-ellipsis> Element Access </span> </a> <label class="md-nav__link " for=__nav_2_6 id=__nav_2_6_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_6_label aria-expanded=false> <label class=md-nav__title for=__nav_2_6> <span class="md-nav__icon md-icon"></span> Element Access </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/element_access/unchecked_access/ class=md-nav__link> <span class=md-ellipsis> Unchecked access: operator[] </span> </a> </li> <li class=md-nav__item> <a href=../../../features/element_access/checked_access/ class=md-nav__link> <span class=md-ellipsis> Checked access: at </span> </a> </li> <li class=md-nav__item> <a href=../../../features/element_access/default_value/ class=md-nav__link> <span class=md-ellipsis> Access with default value: value </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../../features/iterators/ class=md-nav__link> <span class=md-ellipsis> Iterators </span> </a> </li> <li class=md-nav__item> <a href=../../../features/json_pointer/ class=md-nav__link> <span class=md-ellipsis> JSON Pointer </span> </a> </li> <li class=md-nav__item> <a href=../../../features/json_patch/ class=md-nav__link> <span class=md-ellipsis> JSON Patch and Diff </span> </a> </li> <li class=md-nav__item> <a href=../../../features/merge_patch/ class=md-nav__link> <span class=md-ellipsis> JSON Merge Patch </span> </a> </li> <li class=md-nav__item> <a href=../../../features/modules/ class=md-nav__link> <span class=md-ellipsis> Modules </span> </a> </li> <li class=md-nav__item> <a href=../../../features/namespace/ class=md-nav__link> <span class=md-ellipsis> nlohmann Namespace </span> </a> </li> <li class=md-nav__item> <a href=../../../features/object_order/ class=md-nav__link> <span class=md-ellipsis> Object Order </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_14> <div class="md-nav__link md-nav__container"> <a href=../../../features/parsing/ class="md-nav__link "> <span class=md-ellipsis> Parsing </span> </a> <label class="md-nav__link " for=__nav_2_14 id=__nav_2_14_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_14_label aria-expanded=false> <label class=md-nav__title for=__nav_2_14> <span class="md-nav__icon md-icon"></span> Parsing </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/parsing/json_lines/ class=md-nav__link> <span class=md-ellipsis> JSON Lines </span> </a> </li> <li class=md-nav__item> <a href=../../../features/parsing/parse_exceptions/ class=md-nav__link> <span class=md-ellipsis> Parsing and Exceptions </span> </a> </li> <li class=md-nav__item> <a href=../../../features/parsing/parser_callbacks/ class=md-nav__link> <span class=md-ellipsis> Parser Callbacks </span> </a> </li> <li class=md-nav__item> <a href=../../../features/parsing/sax_interface/ class=md-nav__link> <span class=md-ellipsis> SAX Interface </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../../features/assertions/ class=md-nav__link> <span class=md-ellipsis> Runtime Assertions </span> </a> </li> <li class=md-nav__item> <a href=../../../features/enum_conversion/ class=md-nav__link> <span class=md-ellipsis> Specializing enum conversion </span> </a> </li> <li class=md-nav__item> <a href=../../../features/macros/ class=md-nav__link> <span class=md-ellipsis> Supported Macros </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_18> <div class="md-nav__link md-nav__container"> <a href=../../../features/types/ class="md-nav__link "> <span class=md-ellipsis> Types </span> </a> <label class="md-nav__link " for=__nav_2_18 id=__nav_2_18_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_18_label aria-expanded=false> <label class=md-nav__title for=__nav_2_18> <span class="md-nav__icon md-icon"></span> Types </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/types/number_handling/ class=md-nav__link> <span class=md-ellipsis> Number Handling </span> </a> </li> </ul> </nav> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_3> <div class="md-nav__link md-nav__container"> <a href=../../../integration/ class="md-nav__link "> <span class=md-ellipsis> Integration </span> </a> <label class="md-nav__link " for=__nav_3 id=__nav_3_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_3_label aria-expanded=false> <label class=md-nav__title for=__nav_3> <span class="md-nav__icon md-icon"></span> Integration </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../integration/migration_guide/ class=md-nav__link> <span class=md-ellipsis> Migration Guide </span> </a> </li> <li class=md-nav__item> <a href=../../../integration/cmake/ class=md-nav__link> <span class=md-ellipsis> CMake </span> </a> </li> <li class=md-nav__item> <a href=../../../integration/package_managers/ class=md-nav__link> <span class=md-ellipsis> Package Managers </span> </a> </li> <li class=md-nav__item> <a href=../../../integration/pkg-config/ class=md-nav__link> <span class=md-ellipsis> Pkg-config </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--active md-nav__item--section md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4 checked> <label class=md-nav__link for=__nav_4 id=__nav_4_label tabindex> <span class=md-ellipsis> API Documentation </span> <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_4_label aria-expanded=true> <label class=md-nav__title for=__nav_4> <span class="md-nav__icon md-icon"></span> API Documentation </label> <ul class=md-nav__list data-md-scrollfix> <li class="md-nav__item md-nav__item--active md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_1 checked> <div class="md-nav__link md-nav__container"> <a href=../ class="md-nav__link "> <span class=md-ellipsis> basic_json </span> </a> <label class="md-nav__link " for=__nav_4_1 id=__nav_4_1_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_1_label aria-expanded=true> <label class=md-nav__title for=__nav_4_1> <span class="md-nav__icon md-icon"></span> basic_json </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../basic_json/ class=md-nav__link> <span class=md-ellipsis> (Constructor) </span> </a> </li> <li class=md-nav__item> <a href=../~basic_json/ class=md-nav__link> <span class=md-ellipsis> (Destructor) </span> </a> </li> <li class=md-nav__item> <a href=../accept/ class=md-nav__link> <span class=md-ellipsis> accept </span> </a> </li> <li class=md-nav__item> <a href=../array/ class=md-nav__link> <span class=md-ellipsis> array </span> </a> </li> <li class=md-nav__item> <a href=../array_t/ class=md-nav__link> <span class=md-ellipsis> array_t </span> </a> </li> <li class=md-nav__item> <a href=../at/ class=md-nav__link> <span class=md-ellipsis> at </span> </a> </li> <li class=md-nav__item> <a href=../back/ class=md-nav__link> <span class=md-ellipsis> back </span> </a> </li> <li class=md-nav__item> <a href=../begin/ class=md-nav__link> <span class=md-ellipsis> begin </span> </a> </li> <li class=md-nav__item> <a href=../binary/ class=md-nav__link> <span class=md-ellipsis> binary </span> </a> </li> <li class=md-nav__item> <a href=../binary_t/ class=md-nav__link> <span class=md-ellipsis> binary_t </span> </a> </li> <li class=md-nav__item> <a href=../boolean_t/ class=md-nav__link> <span class=md-ellipsis> boolean_t </span> </a> </li> <li class=md-nav__item> <a href=../cbegin/ class=md-nav__link> <span class=md-ellipsis> cbegin </span> </a> </li> <li class=md-nav__item> <a href=../cbor_tag_handler_t/ class=md-nav__link> <span class=md-ellipsis> cbor_tag_handler_t </span> </a> </li> <li class=md-nav__item> <a href=../cend/ class=md-nav__link> <span class=md-ellipsis> cend </span> </a> </li> <li class=md-nav__item> <a href=../clear/ class=md-nav__link> <span class=md-ellipsis> clear </span> </a> </li> <li class=md-nav__item> <a href=../contains/ class=md-nav__link> <span class=md-ellipsis> contains </span> </a> </li> <li class=md-nav__item> <a href=../count/ class=md-nav__link> <span class=md-ellipsis> count </span> </a> </li> <li class=md-nav__item> <a href=../crbegin/ class=md-nav__link> <span class=md-ellipsis> crbegin </span> </a> </li> <li class=md-nav__item> <a href=../crend/ class=md-nav__link> <span class=md-ellipsis> crend </span> </a> </li> <li class=md-nav__item> <a href=../default_object_comparator_t/ class=md-nav__link> <span class=md-ellipsis> default_object_comparator_t </span> </a> </li> <li class=md-nav__item> <a href=../diff/ class=md-nav__link> <span class=md-ellipsis> diff </span> </a> </li> <li class=md-nav__item> <a href=../dump/ class=md-nav__link> <span class=md-ellipsis> dump </span> </a> </li> <li class=md-nav__item> <a href=../emplace/ class=md-nav__link> <span class=md-ellipsis> emplace </span> </a> </li> <li class=md-nav__item> <a href=../emplace_back/ class=md-nav__link> <span class=md-ellipsis> emplace_back </span> </a> </li> <li class=md-nav__item> <a href=../empty/ class=md-nav__link> <span class=md-ellipsis> empty </span> </a> </li> <li class=md-nav__item> <a href=../end/ class=md-nav__link> <span class=md-ellipsis> end </span> </a> </li> <li class=md-nav__item> <a href=../end_pos/ class=md-nav__link> <span class=md-ellipsis> end_pos </span> </a> </li> <li class=md-nav__item> <a href=../erase/ class=md-nav__link> <span class=md-ellipsis> erase </span> </a> </li> <li class=md-nav__item> <a href=../error_handler_t/ class=md-nav__link> <span class=md-ellipsis> error_handler_t </span> </a> </li> <li class=md-nav__item> <a href=../exception/ class=md-nav__link> <span class=md-ellipsis> exception </span> </a> </li> <li class=md-nav__item> <a href=../find/ class=md-nav__link> <span class=md-ellipsis> find </span> </a> </li> <li class=md-nav__item> <a href=../flatten/ class=md-nav__link> <span class=md-ellipsis> flatten </span> </a> </li> <li class=md-nav__item> <a href=../from_bjdata/ class=md-nav__link> <span class=md-ellipsis> from_bjdata </span> </a> </li> <li class=md-nav__item> <a href=../from_bson/ class=md-nav__link> <span class=md-ellipsis> from_bson </span> </a> </li> <li class=md-nav__item> <a href=../from_cbor/ class=md-nav__link> <span class=md-ellipsis> from_cbor </span> </a> </li> <li class=md-nav__item> <a href=../from_msgpack/ class=md-nav__link> <span class=md-ellipsis> from_msgpack </span> </a> </li> <li class=md-nav__item> <a href=../from_ubjson/ class=md-nav__link> <span class=md-ellipsis> from_ubjson </span> </a> </li> <li class=md-nav__item> <a href=../front/ class=md-nav__link> <span class=md-ellipsis> front </span> </a> </li> <li class=md-nav__item> <a href=../get/ class=md-nav__link> <span class=md-ellipsis> get </span> </a> </li> <li class=md-nav__item> <a href=../get_allocator/ class=md-nav__link> <span class=md-ellipsis> get_allocator </span> </a> </li> <li class=md-nav__item> <a href=../get_binary/ class=md-nav__link> <span class=md-ellipsis> get_binary </span> </a> </li> <li class=md-nav__item> <a href=../get_ptr/ class=md-nav__link> <span class=md-ellipsis> get_ptr </span> </a> </li> <li class=md-nav__item> <a href=../get_ref/ class=md-nav__link> <span class=md-ellipsis> get_ref </span> </a> </li> <li class=md-nav__item> <a href=../get_to/ class=md-nav__link> <span class=md-ellipsis> get_to </span> </a> </li> <li class=md-nav__item> <a href=../std_hash/ class=md-nav__link> <span class=md-ellipsis> std::hash&lt;basic_json&gt; </span> </a> </li> <li class=md-nav__item> <a href=../input_format_t/ class=md-nav__link> <span class=md-ellipsis> input_format_t </span> </a> </li> <li class=md-nav__item> <a href=../insert/ class=md-nav__link> <span class=md-ellipsis> insert </span> </a> </li> <li class=md-nav__item> <a href=../invalid_iterator/ class=md-nav__link> <span class=md-ellipsis> invalid_iterator </span> </a> </li> <li class=md-nav__item> <a href=../is_array/ class=md-nav__link> <span class=md-ellipsis> is_array </span> </a> </li> <li class=md-nav__item> <a href=../is_binary/ class=md-nav__link> <span class=md-ellipsis> is_binary </span> </a> </li> <li class=md-nav__item> <a href=../is_boolean/ class=md-nav__link> <span class=md-ellipsis> is_boolean </span> </a> </li> <li class=md-nav__item> <a href=../is_discarded/ class=md-nav__link> <span class=md-ellipsis> is_discarded </span> </a> </li> <li class=md-nav__item> <a href=../is_null/ class=md-nav__link> <span class=md-ellipsis> is_null </span> </a> </li> <li class=md-nav__item> <a href=../is_number/ class=md-nav__link> <span class=md-ellipsis> is_number </span> </a> </li> <li class=md-nav__item> <a href=../is_number_float/ class=md-nav__link> <span class=md-ellipsis> is_number_float </span> </a> </li> <li class=md-nav__item> <a href=../is_number_integer/ class=md-nav__link> <span class=md-ellipsis> is_number_integer </span> </a> </li> <li class=md-nav__item> <a href=../is_number_unsigned/ class=md-nav__link> <span class=md-ellipsis> is_number_unsigned </span> </a> </li> <li class=md-nav__item> <a href=../is_object/ class=md-nav__link> <span class=md-ellipsis> is_object </span> </a> </li> <li class=md-nav__item> <a href=../is_primitive/ class=md-nav__link> <span class=md-ellipsis> is_primitive </span> </a> </li> <li class=md-nav__item> <a href=../is_string/ class=md-nav__link> <span class=md-ellipsis> is_string </span> </a> </li> <li class=md-nav__item> <a href=../is_structured/ class=md-nav__link> <span class=md-ellipsis> is_structured </span> </a> </li> <li class=md-nav__item> <a href=../items/ class=md-nav__link> <span class=md-ellipsis> items </span> </a> </li> <li class=md-nav__item> <a href=../json_base_class_t/ class=md-nav__link> <span class=md-ellipsis> json_base_class_t </span> </a> </li> <li class=md-nav__item> <a href=../json_serializer/ class=md-nav__link> <span class=md-ellipsis> json_serializer </span> </a> </li> <li class=md-nav__item> <a href=../max_size/ class=md-nav__link> <span class=md-ellipsis> max_size </span> </a> </li> <li class=md-nav__item> <a href=../meta/ class=md-nav__link> <span class=md-ellipsis> meta </span> </a> </li> <li class=md-nav__item> <a href=../merge_patch/ class=md-nav__link> <span class=md-ellipsis> merge_patch </span> </a> </li> <li class=md-nav__item> <a href=../number_float_t/ class=md-nav__link> <span class=md-ellipsis> number_float_t </span> </a> </li> <li class=md-nav__item> <a href=../number_integer_t/ class=md-nav__link> <span class=md-ellipsis> number_integer_t </span> </a> </li> <li class=md-nav__item> <a href=../number_unsigned_t/ class=md-nav__link> <span class=md-ellipsis> number_unsigned_t </span> </a> </li> <li class=md-nav__item> <a href=../object/ class=md-nav__link> <span class=md-ellipsis> object </span> </a> </li> <li class=md-nav__item> <a href=../object_comparator_t/ class=md-nav__link> <span class=md-ellipsis> object_comparator_t </span> </a> </li> <li class=md-nav__item> <a href=../object_t/ class=md-nav__link> <span class=md-ellipsis> object_t </span> </a> </li> <li class=md-nav__item> <a href=../operator_ValueType/ class=md-nav__link> <span class=md-ellipsis> operator ValueType </span> </a> </li> <li class=md-nav__item> <a href=../operator_value_t/ class=md-nav__link> <span class=md-ellipsis> operator value_t </span> </a> </li> <li class=md-nav__item> <a href=../operator%5B%5D/ class=md-nav__link> <span class=md-ellipsis> operator[] </span> </a> </li> <li class=md-nav__item> <a href=../operator%3D/ class=md-nav__link> <span class=md-ellipsis> operator= </span> </a> </li> <li class=md-nav__item> <a href=../operator%2B%3D/ class=md-nav__link> <span class=md-ellipsis> operator+= </span> </a> </li> <li class=md-nav__item> <a href=../operator_eq/ class=md-nav__link> <span class=md-ellipsis> operator== </span> </a> </li> <li class=md-nav__item> <a href=../operator_ne/ class=md-nav__link> <span class=md-ellipsis> operator!= </span> </a> </li> <li class=md-nav__item> <a href=../operator_lt/ class=md-nav__link> <span class=md-ellipsis> operator< </span> </a> </li> <li class=md-nav__item> <a href=../operator_gt/ class=md-nav__link> <span class=md-ellipsis> operator> </span> </a> </li> <li class=md-nav__item> <a href=../operator_le/ class=md-nav__link> <span class=md-ellipsis> operator<= </span> </a> </li> <li class=md-nav__item> <a href=../operator_ge/ class=md-nav__link> <span class=md-ellipsis> operator>= </span> </a> </li> <li class=md-nav__item> <a href=../operator_spaceship/ class=md-nav__link> <span class=md-ellipsis> operator<=> </span> </a> </li> <li class=md-nav__item> <a href=../out_of_range/ class=md-nav__link> <span class=md-ellipsis> out_of_range </span> </a> </li> <li class=md-nav__item> <a href=../other_error/ class=md-nav__link> <span class=md-ellipsis> other_error </span> </a> </li> <li class=md-nav__item> <a href=../parse/ class=md-nav__link> <span class=md-ellipsis> parse </span> </a> </li> <li class=md-nav__item> <a href=../parse_error/ class=md-nav__link> <span class=md-ellipsis> parse_error </span> </a> </li> <li class=md-nav__item> <a href=../parse_event_t/ class=md-nav__link> <span class=md-ellipsis> parse_event_t </span> </a> </li> <li class=md-nav__item> <a href=../parser_callback_t/ class=md-nav__link> <span class=md-ellipsis> parser_callback_t </span> </a> </li> <li class=md-nav__item> <a href=../patch/ class=md-nav__link> <span class=md-ellipsis> patch </span> </a> </li> <li class="md-nav__item md-nav__item--active"> <input class="md-nav__toggle md-toggle" type=checkbox id=__toc> <label class="md-nav__link md-nav__link--active" for=__toc> <span class=md-ellipsis> patch_inplace </span> <span class="md-nav__icon md-icon"></span> </label> <a href=./ class="md-nav__link md-nav__link--active"> <span class=md-ellipsis> patch_inplace </span> </a> <nav class="md-nav md-nav--secondary" aria-label="Table of contents"> <label class=md-nav__title for=__toc> <span class="md-nav__icon md-icon"></span> Table of contents </label> <ul class=md-nav__list data-md-component=toc data-md-scrollfix> <li class=md-nav__item> <a href=#parameters class=md-nav__link> <span class=md-ellipsis> Parameters </span> </a> </li> <li class=md-nav__item> <a href=#exception-safety class=md-nav__link> <span class=md-ellipsis> Exception safety </span> </a> </li> <li class=md-nav__item> <a href=#exceptions class=md-nav__link> <span class=md-ellipsis> Exceptions </span> </a> </li> <li class=md-nav__item> <a href=#complexity class=md-nav__link> <span class=md-ellipsis> Complexity </span> </a> </li> <li class=md-nav__item> <a href=#notes class=md-nav__link> <span class=md-ellipsis> Notes </span> </a> </li> <li class=md-nav__item> <a href=#examples class=md-nav__link> <span class=md-ellipsis> Examples </span> </a> </li> <li class=md-nav__item> <a href=#see-also class=md-nav__link> <span class=md-ellipsis> See also </span> </a> </li> <li class=md-nav__item> <a href=#version-history class=md-nav__link> <span class=md-ellipsis> Version history </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../push_back/ class=md-nav__link> <span class=md-ellipsis> push_back </span> </a> </li> <li class=md-nav__item> <a href=../rbegin/ class=md-nav__link> <span class=md-ellipsis> rbegin </span> </a> </li> <li class=md-nav__item> <a href=../rend/ class=md-nav__link> <span class=md-ellipsis> rend </span> </a> </li> <li class=md-nav__item> <a href=../sax_parse/ class=md-nav__link> <span class=md-ellipsis> sax_parse </span> </a> </li> <li class=md-nav__item> <a href=../size/ class=md-nav__link> <span class=md-ellipsis> size </span> </a> </li> <li class=md-nav__item> <a href=../start_pos/ class=md-nav__link> <span class=md-ellipsis> start_pos </span> </a> </li> <li class=md-nav__item> <a href=../string_t/ class=md-nav__link> <span class=md-ellipsis> string_t </span> </a> </li> <li class=md-nav__item> <a href=../swap/ class=md-nav__link> <span class=md-ellipsis> swap </span> </a> </li> <li class=md-nav__item> <a href=../std_swap/ class=md-nav__link> <span class=md-ellipsis> std::swap&lt;basic_json&gt; </span> </a> </li> <li class=md-nav__item> <a href=../to_bjdata/ class=md-nav__link> <span class=md-ellipsis> to_bjdata </span> </a> </li> <li class=md-nav__item> <a href=../to_bson/ class=md-nav__link> <span class=md-ellipsis> to_bson </span> </a> </li> <li class=md-nav__item> <a href=../to_cbor/ class=md-nav__link> <span class=md-ellipsis> to_cbor </span> </a> </li> <li class=md-nav__item> <a href=../to_msgpack/ class=md-nav__link> <span class=md-ellipsis> to_msgpack </span> </a> </li> <li class=md-nav__item> <a href=../to_string/ class=md-nav__link> <span class=md-ellipsis> to_string </span> </a> </li> <li class=md-nav__item> <a href=../to_ubjson/ class=md-nav__link> <span class=md-ellipsis> to_ubjson </span> </a> </li> <li class=md-nav__item> <a href=../type/ class=md-nav__link> <span class=md-ellipsis> type </span> </a> </li> <li class=md-nav__item> <a href=../type_error/ class=md-nav__link> <span class=md-ellipsis> type_error </span> </a> </li> <li class=md-nav__item> <a href=../type_name/ class=md-nav__link> <span class=md-ellipsis> type_name </span> </a> </li> <li class=md-nav__item> <a href=../unflatten/ class=md-nav__link> <span class=md-ellipsis> unflatten </span> </a> </li> <li class=md-nav__item> <a href=../update/ class=md-nav__link> <span class=md-ellipsis> update </span> </a> </li> <li class=md-nav__item> <a href=../value/ class=md-nav__link> <span class=md-ellipsis> value </span> </a> </li> <li class=md-nav__item> <a href=../value_t/ class=md-nav__link> <span class=md-ellipsis> value_t </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_2> <div class="md-nav__link md-nav__container"> <a href=../../byte_container_with_subtype/ class="md-nav__link "> <span class=md-ellipsis> byte_container_with_subtype </span> </a> <label class="md-nav__link " for=__nav_4_2 id=__nav_4_2_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_2_label aria-expanded=false> <label class=md-nav__title for=__nav_4_2> <span class="md-nav__icon md-icon"></span> byte_container_with_subtype </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../byte_container_with_subtype/byte_container_with_subtype/ class=md-nav__link> <span class=md-ellipsis> (constructor) </span> </a> </li> <li class=md-nav__item> <a href=../../byte_container_with_subtype/clear_subtype/ class=md-nav__link> <span class=md-ellipsis> clear_subtype </span> </a> </li> <li class=md-nav__item> <a href=../../byte_container_with_subtype/has_subtype/ class=md-nav__link> <span class=md-ellipsis> has_subtype </span> </a> </li> <li class=md-nav__item> <a href=../../byte_container_with_subtype/set_subtype/ class=md-nav__link> <span class=md-ellipsis> set_subtype </span> </a> </li> <li class=md-nav__item> <a href=../../byte_container_with_subtype/subtype/ class=md-nav__link> <span class=md-ellipsis> subtype </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_3> <div class="md-nav__link md-nav__container"> <a href=../../adl_serializer/ class="md-nav__link "> <span class=md-ellipsis> adl_serializer </span> </a> <label class="md-nav__link " for=__nav_4_3 id=__nav_4_3_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_3_label aria-expanded=false> <label class=md-nav__title for=__nav_4_3> <span class="md-nav__icon md-icon"></span> adl_serializer </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../adl_serializer/from_json/ class=md-nav__link> <span class=md-ellipsis> from_json </span> </a> </li> <li class=md-nav__item> <a href=../../adl_serializer/to_json/ class=md-nav__link> <span class=md-ellipsis> to_json </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../json/ class=md-nav__link> <span class=md-ellipsis> json </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_5> <div class="md-nav__link md-nav__container"> <a href=../../json_pointer/ class="md-nav__link "> <span class=md-ellipsis> json_pointer </span> </a> <label class="md-nav__link " for=__nav_4_5 id=__nav_4_5_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_5_label aria-expanded=false> <label class=md-nav__title for=__nav_4_5> <span class="md-nav__icon md-icon"></span> json_pointer </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../json_pointer/json_pointer/ class=md-nav__link> <span class=md-ellipsis> (Constructor) </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/back/ class=md-nav__link> <span class=md-ellipsis> back </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/empty/ class=md-nav__link> <span class=md-ellipsis> empty </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/front/ class=md-nav__link> <span class=md-ellipsis> front </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_string_t/ class=md-nav__link> <span class=md-ellipsis> operator string_t </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_eq/ class=md-nav__link> <span class=md-ellipsis> operator== </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_ne/ class=md-nav__link> <span class=md-ellipsis> operator!= </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_slash/ class=md-nav__link> <span class=md-ellipsis> operator/ </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_slasheq/ class=md-nav__link> <span class=md-ellipsis> operator/= </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/parent_pointer/ class=md-nav__link> <span class=md-ellipsis> parent_pointer </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/pop_back/ class=md-nav__link> <span class=md-ellipsis> pop_back </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/pop_front/ class=md-nav__link> <span class=md-ellipsis> pop_front </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/push_back/ class=md-nav__link> <span class=md-ellipsis> push_back </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/push_front/ class=md-nav__link> <span class=md-ellipsis> push_front </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/string_t/ class=md-nav__link> <span class=md-ellipsis> string_t </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/to_string/ class=md-nav__link> <span class=md-ellipsis> to_string </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_6> <div class="md-nav__link md-nav__container"> <a href=../../json_sax/ class="md-nav__link "> <span class=md-ellipsis> json_sax </span> </a> <label class="md-nav__link " for=__nav_4_6 id=__nav_4_6_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_6_label aria-expanded=false> <label class=md-nav__title for=__nav_4_6> <span class="md-nav__icon md-icon"></span> json_sax </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../json_sax/binary/ class=md-nav__link> <span class=md-ellipsis> binary </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/boolean/ class=md-nav__link> <span class=md-ellipsis> boolean </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/end_array/ class=md-nav__link> <span class=md-ellipsis> end_array </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/end_object/ class=md-nav__link> <span class=md-ellipsis> end_object </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/key/ class=md-nav__link> <span class=md-ellipsis> key </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/null/ class=md-nav__link> <span class=md-ellipsis> null </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/number_float/ class=md-nav__link> <span class=md-ellipsis> number_float </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/number_integer/ class=md-nav__link> <span class=md-ellipsis> number_integer </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/number_unsigned/ class=md-nav__link> <span class=md-ellipsis> number_unsigned </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/parse_error/ class=md-nav__link> <span class=md-ellipsis> parse_error </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/start_array/ class=md-nav__link> <span class=md-ellipsis> start_array </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/start_object/ class=md-nav__link> <span class=md-ellipsis> start_object </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/string/ class=md-nav__link> <span class=md-ellipsis> string </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../operator_ltlt/ class=md-nav__link> <span class=md-ellipsis> operator<<(basic_json), operator<<(json_pointer) </span> </a> </li> <li class=md-nav__item> <a href=../../operator_gtgt/ class=md-nav__link> <span class=md-ellipsis> operator>>(basic_json) </span> </a> </li> <li class=md-nav__item> <a href=../../operator_literal_json/ class=md-nav__link> <span class=md-ellipsis> operator""_json </span> </a> </li> <li class=md-nav__item> <a href=../../operator_literal_json_pointer/ class=md-nav__link> <span class=md-ellipsis> operator""_json_pointer </span> </a> </li> <li class=md-nav__item> <a href=../../ordered_json/ class=md-nav__link> <span class=md-ellipsis> ordered_json </span> </a> </li> <li class=md-nav__item> <a href=../../ordered_map/ class=md-nav__link> <span class=md-ellipsis> ordered_map </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_13> <div class="md-nav__link md-nav__container"> <a href=../../macros/ class="md-nav__link "> <span class=md-ellipsis> macros </span> </a> <label class="md-nav__link " for=__nav_4_13 id=__nav_4_13_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_13_label aria-expanded=false> <label class=md-nav__title for=__nav_4_13> <span class="md-nav__icon md-icon"></span> macros </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../macros/json_assert/ class=md-nav__link> <span class=md-ellipsis> JSON_ASSERT </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_brace_init_copy_semantics/ class=md-nav__link> <span class=md-ellipsis> JSON_BRACE_INIT_COPY_SEMANTICS </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_throw_user/ class=md-nav__link> <span class=md-ellipsis> JSON_CATCH_USER, JSON_THROW_USER, JSON_TRY_USER </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_diagnostics/ class=md-nav__link> <span class=md-ellipsis> JSON_DIAGNOSTICS </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_diagnostic_positions/ class=md-nav__link> <span class=md-ellipsis> JSON_DIAGNOSTIC_POSITIONS </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_disable_enum_serialization/ class=md-nav__link> <span class=md-ellipsis> JSON_DISABLE_ENUM_SERIALIZATION </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_has_cpp_11/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_CPP_11, JSON_HAS_CPP_14, JSON_HAS_CPP_17, JSON_HAS_CPP_20 </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_has_filesystem/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_EXPERIMENTAL_FILESYSTEM, JSON_HAS_FILESYSTEM </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_has_ranges/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_RANGES </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_has_static_rtti/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_STATIC_RTTI </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_has_three_way_comparison/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_THREE_WAY_COMPARISON </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_noexception/ class=md-nav__link> <span class=md-ellipsis> JSON_NOEXCEPTION </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_no_io/ class=md-nav__link> <span class=md-ellipsis> JSON_NO_IO </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_skip_library_version_check/ class=md-nav__link> <span class=md-ellipsis> JSON_SKIP_LIBRARY_VERSION_CHECK </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_skip_unsupported_compiler_check/ class=md-nav__link> <span class=md-ellipsis> JSON_SKIP_UNSUPPORTED_COMPILER_CHECK </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_use_global_udls/ class=md-nav__link> <span class=md-ellipsis> JSON_USE_GLOBAL_UDLS </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_use_implicit_conversions/ class=md-nav__link> <span class=md-ellipsis> JSON_USE_IMPLICIT_CONVERSIONS </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_use_legacy_discarded_value_comparison/ class=md-nav__link> <span class=md-ellipsis> JSON_USE_LEGACY_DISCARDED_VALUE_COMPARISON </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_define_derived_type/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_ONLY_SERIALIZE, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_define_type_intrusive/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_TYPE_INTRUSIVE, NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_TYPE_INTRUSIVE_ONLY_SERIALIZE </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_define_type_non_intrusive/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_define_type_with_names/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_TYPE_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_namespace/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_NAMESPACE </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_namespace_begin/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_NAMESPACE_BEGIN, NLOHMANN_JSON_NAMESPACE_END </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_namespace_no_version/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_NAMESPACE_NO_VERSION </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_serialize_enum/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_SERIALIZE_ENUM </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_serialize_enum_strict/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_SERIALIZE_ENUM_STRICT </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_version_major/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_VERSION_MAJOR, NLOHMANN_JSON_VERSION_MINOR, NLOHMANN_JSON_VERSION_PATCH </span> </a> </li> </ul> </nav> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_5> <div class="md-nav__link md-nav__container"> <a href=../../../community/ class="md-nav__link "> <span class=md-ellipsis> Community </span> </a> <label class="md-nav__link " for=__nav_5 id=__nav_5_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_5_label aria-expanded=false> <label class=md-nav__title for=__nav_5> <span class="md-nav__icon md-icon"></span> Community </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../community/code_of_conduct/ class=md-nav__link> <span class=md-ellipsis> Code of Conduct </span> </a> </li> <li class=md-nav__item> <a href=../../../community/contribution_guidelines/ class=md-nav__link> <span class=md-ellipsis> Contribution Guidelines </span> </a> </li> <li class=md-nav__item> <a href=../../../community/quality_assurance/ class=md-nav__link> <span class=md-ellipsis> Quality assurance </span> </a> </li> <li class=md-nav__item> <a href=../../../community/governance/ class=md-nav__link> <span class=md-ellipsis> Governance </span> </a> </li> <li class=md-nav__item> <a href=../../../community/security_policy/ class=md-nav__link> <span class=md-ellipsis> Security Policy </span> </a> </li> </ul> </nav> </li> </ul> </nav> </div> </div> </div> <div class="md-sidebar md-sidebar--secondary" data-md-component=sidebar data-md-type=toc> <div class=md-sidebar__scrollwrap> <div class=md-sidebar__inner> <nav class="md-nav md-nav--secondary" aria-label="Table of contents"> <label class=md-nav__title for=__toc> <span class="md-nav__icon md-icon"></span> Table of contents </label> <ul class=md-nav__list data-md-component=toc data-md-scrollfix> <li class=md-nav__item> <a href=#parameters class=md-nav__link> <span class=md-ellipsis> Parameters </span> </a> </li> <li class=md-nav__item> <a href=#exception-safety class=md-nav__link> <span class=md-ellipsis> Exception safety </span> </a> </li> <li class=md-nav__item> <a href=#exceptions class=md-nav__link> <span class=md-ellipsis> Exceptions </span> </a> </li> <li class=md-nav__item> <a href=#complexity class=md-nav__link> <span class=md-ellipsis> Complexity </span> </a> </li> <li class=md-nav__item> <a href=#notes class=md-nav__link> <span class=md-ellipsis> Notes </span> </a> </li> <li class=md-nav__item> <a href=#examples class=md-nav__link> <span class=md-ellipsis> Examples </span> </a> </li> <li class=md-nav__item> <a href=#see-also class=md-nav__link> <span class=md-ellipsis> See also </span> </a> </li> <li class=md-nav__item> <a href=#version-history class=md-nav__link> <span class=md-ellipsis> Version history </span> </a> </li> </ul> </nav> </div> </div> </div> <div class=md-content data-md-component=content> <article class="md-content__inner md-typeset"> <a href="https://github.com/nlohmann/json/edit/develop/docs/mkdocs/docs/api/basic_json/patch_inplace.md" title="Edit this page" class="md-content__button md-icon" rel="edit"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M10 20H6V4h7v5h5v3.1l2-2V8l-6-6H6c-1.1 0-2 .9-2 2v16c0 1.1.9 2 2 2h4zm10.2-7c.1 0 .3.1.4.2l1.3 1.3c.2.2.2.6 0 .8l-1 1-2.1-2.1 1-1c.1-.1.2-.2.4-.2m0 3.9L14.1 23H12v-2.1l6.1-6.1z"/></svg> </a> <a href="https://github.com/nlohmann/json/raw/develop/docs/mkdocs/docs/api/basic_json/patch_inplace.md" title="View source of this page" class="md-content__button md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M17 18c.56 0 1 .44 1 1s-.44 1-1 1-1-.44-1-1 .44-1 1-1m0-3c-2.73 0-5.06 1.66-6 4 .94 2.34 3.27 4 6 4s5.06-1.66 6-4c-.94-2.34-3.27-4-6-4m0 6.5a2.5 2.5 0 0 1-2.5-2.5 2.5 2.5 0 0 1 2.5-2.5 2.5 2.5 0 0 1 2.5 2.5 2.5 2.5 0 0 1-2.5 2.5M9.27 20H6V4h7v5h5v4.07c.7.08 1.36.25 2 .49V8l-6-6H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h4.5a8.2 8.2 0 0 1-1.23-2"/></svg> </a> <h1 id=nlohmannbasic_jsonpatch_inplace><small>nlohmann::basic_json::</small>patch_inplace<a class=headerlink href=#nlohmannbasic_jsonpatch_inplace title="Permanent link">&para;</a></h1> <div class=highlight><pre><span></span><code><span class=kt>void</span><span class=w> </span><span class=nf>patch_inplace</span><span class=p>(</span><span class=k>const</span><span class=w> </span><span class=n>basic_json</span><span class=o>&amp;</span><span class=w> </span><span class=n>json_patch</span><span class=p>)</span><span class=w> </span><span class=k>const</span><span class=p>;</span>
-</code></pre></div> <p><a href="http://jsonpatch.com"><abbr title="JavaScript Object Notation">JSON</abbr> Patch</a> defines a <abbr title="JavaScript Object Notation">JSON</abbr> document structure for expressing a sequence of operations to apply to a <abbr title="JavaScript Object Notation">JSON</abbr> document. With this function, a <abbr title="JavaScript Object Notation">JSON</abbr> Patch is applied to the current <abbr title="JavaScript Object Notation">JSON</abbr> value by executing all operations from the patch. This function applies a <abbr title="JavaScript Object Notation">JSON</abbr> patch in place and returns void.</p> <h2 id=parameters>Parameters<a class=headerlink href=#parameters title="Permanent link">&para;</a></h2> <dl> <dt><code>json_patch</code> (in)</dt> <dd><abbr title="JavaScript Object Notation">JSON</abbr> patch document</dd> </dl> <h2 id=exception-safety>Exception safety<a class=headerlink href=#exception-safety title="Permanent link">&para;</a></h2> <p>No guarantees, value may be corrupted by an unsuccessful patch operation.</p> <h2 id=exceptions>Exceptions<a class=headerlink href=#exceptions title="Permanent link">&para;</a></h2> <ul> <li>Throws <a href=../../../home/exceptions/#jsonexceptionparse_error104><code>parse_error.104</code></a> if the <abbr title="JavaScript Object Notation">JSON</abbr> patch does not consist of an array of objects.</li> <li>Throws <a href=../../../home/exceptions/#jsonexceptionparse_error105><code>parse_error.105</code></a> if the <abbr title="JavaScript Object Notation">JSON</abbr> patch is malformed (e.g., mandatory attributes are missing); example: <code>"operation add must have member path"</code>.</li> <li>Throws <a href=../../../home/exceptions/#jsonexceptionout_of_range401><code>out_of_range.401</code></a> if an array index is out of range.</li> <li>Throws <a href=../../../home/exceptions/#jsonexceptionout_of_range403><code>out_of_range.403</code></a> if a <abbr title="JavaScript Object Notation">JSON</abbr> pointer inside the patch could not be resolved successfully in the current <abbr title="JavaScript Object Notation">JSON</abbr> value; example: <code>"key baz not found"</code>.</li> <li>Throws <a href=../../../home/exceptions/#jsonexceptionout_of_range405><code>out_of_range.405</code></a> if <abbr title="JavaScript Object Notation">JSON</abbr> pointer has no parent ("add", "remove", "move")</li> <li>Throws <a href=../../../home/exceptions/#jsonexceptionother_error501><code>out_of_range.501</code></a> if "test" operation was unsuccessful.</li> </ul> <h2 id=complexity>Complexity<a class=headerlink href=#complexity title="Permanent link">&para;</a></h2> <p>Linear in the size of the <abbr title="JavaScript Object Notation">JSON</abbr> value and the length of the <abbr title="JavaScript Object Notation">JSON</abbr> patch. As usually the patch affects only a fraction of the <abbr title="JavaScript Object Notation">JSON</abbr> value, the complexity can usually be neglected.</p> <h2 id=notes>Notes<a class=headerlink href=#notes title="Permanent link">&para;</a></h2> <p>Unlike <a href=../patch/ ><code>patch</code></a>, <code>patch_inplace</code> applies the operation "in place" and no copy of the <abbr title="JavaScript Object Notation">JSON</abbr> value is created. That makes it faster for large documents by avoiding the copy. However, the <abbr title="JavaScript Object Notation">JSON</abbr> value might be corrupted if the function throws an exception.</p> <h2 id=examples>Examples<a class=headerlink href=#examples title="Permanent link">&para;</a></h2> <details class=example> <summary>Example</summary> <p>The following code shows how a <abbr title="JavaScript Object Notation">JSON</abbr> patch is applied to a value.</p> <div class=highlight><pre><span></span><code><span class=cp>#include</span><span class=w> </span><span class=cpf>&lt;iostream&gt;</span>
+<!doctype html><html lang=en class=no-js> <head><meta charset=utf-8><meta name=viewport content="width=device-width,initial-scale=1"><meta name=author content="Niels Lohmann"><link href="https://json.nlohmann.me/api/basic_json/patch_inplace/" rel="canonical"><link href=../patch/ rel=prev><link href=../push_back/ rel=next><link rel=icon href=../../../assets/images/favicon.png><meta name=generator content="mkdocs-1.6.1, mkdocs-material-9.7.6"><title>patch_inplace - JSON for Modern C++</title><link rel=stylesheet href=../../../assets/stylesheets/main.484c7ddc.min.css><link rel=stylesheet href=../../../assets/stylesheets/palette.ab4e12ef.min.css><link rel="stylesheet" href="../../../assets/external/fonts.googleapis.com/css.61a430c9.css"><style>:root{--md-text-font:"Roboto";--md-code-font:"JetBrains Mono"}</style><link rel=stylesheet href=../../../css/custom.css><script>__md_scope=new URL("../../..",location),__md_hash=e=>[...e].reduce(((e,_)=>(e<<5)-e+_.charCodeAt(0)),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script></head> <body dir=ltr data-md-color-scheme=default data-md-color-primary=indigo data-md-color-accent=indigo> <input class=md-toggle data-md-toggle=drawer type=checkbox id=__drawer autocomplete=off> <input class=md-toggle data-md-toggle=search type=checkbox id=__search autocomplete=off> <label class=md-overlay for=__drawer></label> <div data-md-component=skip> <a href=#nlohmannbasic_jsonpatch_inplace class=md-skip> Skip to content </a> </div> <div data-md-component=announce> </div> <header class=md-header data-md-component=header> <nav class="md-header__inner md-grid" aria-label=Header> <a href=../../.. title="JSON for Modern C++" class="md-header__button md-logo" aria-label="JSON for Modern C++" data-md-component=logo> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54"/></svg> </a> <label class="md-header__button md-icon" for=__drawer> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M3 6h18v2H3zm0 5h18v2H3zm0 5h18v2H3z"/></svg> </label> <div class=md-header__title data-md-component=header-title> <div class=md-header__ellipsis> <div class=md-header__topic> <span class=md-ellipsis> JSON for Modern C++ </span> </div> <div class=md-header__topic data-md-component=header-topic> <span class=md-ellipsis> patch_inplace </span> </div> </div> </div> <form class=md-header__option data-md-component=palette> <input class=md-option data-md-color-media="(prefers-color-scheme: light)" data-md-color-scheme=default data-md-color-primary=indigo data-md-color-accent=indigo aria-label="Switch to dark mode" type=radio name=__palette id=__palette_0> <label class="md-header__button md-icon" title="Switch to dark mode" for=__palette_1 hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a4 4 0 0 0-4 4 4 4 0 0 0 4 4 4 4 0 0 0 4-4 4 4 0 0 0-4-4m0 10a6 6 0 0 1-6-6 6 6 0 0 1 6-6 6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12z"/></svg> </label> <input class=md-option data-md-color-media="(prefers-color-scheme: dark)" data-md-color-scheme=slate data-md-color-primary=indigo data-md-color-accent=indigo aria-label="Switch to light mode" type=radio name=__palette id=__palette_1> <label class="md-header__button md-icon" title="Switch to light mode" for=__palette_0 hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 18c-.89 0-1.74-.2-2.5-.55C11.56 16.5 13 14.42 13 12s-1.44-4.5-3.5-5.45C10.26 6.2 11.11 6 12 6a6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12z"/></svg> </label> </form> <script>var palette=__md_get("__palette");if(palette&&palette.color){if("(prefers-color-scheme)"===palette.color.media){var media=matchMedia("(prefers-color-scheme: light)"),input=document.querySelector(media.matches?"[data-md-color-media='(prefers-color-scheme: light)']":"[data-md-color-media='(prefers-color-scheme: dark)']");palette.color.media=input.getAttribute("data-md-color-media"),palette.color.scheme=input.getAttribute("data-md-color-scheme"),palette.color.primary=input.getAttribute("data-md-color-primary"),palette.color.accent=input.getAttribute("data-md-color-accent")}for(var[key,value]of Object.entries(palette.color))document.body.setAttribute("data-md-color-"+key,value)}</script> <label class="md-header__button md-icon" for=__search> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg> </label> <div class=md-search data-md-component=search role=dialog> <label class=md-search__overlay for=__search></label> <div class=md-search__inner role=search> <form class=md-search__form name=search> <input type=text class=md-search__input name=query aria-label=Search placeholder=Search autocapitalize=off autocorrect=off autocomplete=off spellcheck=false data-md-component=search-query required> <label class="md-search__icon md-icon" for=__search> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11z"/></svg> </label> <nav class=md-search__options aria-label=Search> <button type=reset class="md-search__icon md-icon" title=Clear aria-label=Clear tabindex=-1> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z"/></svg> </button> </nav> </form> <div class=md-search__output> <div class=md-search__scrollwrap tabindex=0 data-md-scrollfix> <div class=md-search-result data-md-component=search-result> <div class=md-search-result__meta> Initializing search </div> <ol class=md-search-result__list role=presentation></ol> </div> </div> </div> </div> </div> <div class=md-header__source> <a href="https://github.com/nlohmann/json" title="Go to repository" class="md-source" data-md-component="source"> <div class="md-source__icon md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </div> <div class=md-source__repository> nlohmann/json </div> </a> </div> </nav> </header> <div class=md-container data-md-component=container> <nav class=md-tabs aria-label=Tabs data-md-component=tabs> <div class=md-grid> <ul class=md-tabs__list> <li class=md-tabs__item> <a href=../../.. class=md-tabs__link> Home </a> </li> <li class=md-tabs__item> <a href=../../../features/arbitrary_types/ class=md-tabs__link> Features </a> </li> <li class=md-tabs__item> <a href=../../../integration/ class=md-tabs__link> Integration </a> </li> <li class="md-tabs__item md-tabs__item--active"> <a href=../ class=md-tabs__link> API Documentation </a> </li> <li class=md-tabs__item> <a href=../../../community/ class=md-tabs__link> Community </a> </li> </ul> </div> </nav> <main class=md-main data-md-component=main> <div class="md-main__inner md-grid"> <div class="md-sidebar md-sidebar--primary" data-md-component=sidebar data-md-type=navigation> <div class=md-sidebar__scrollwrap> <div class=md-sidebar__inner> <nav class="md-nav md-nav--primary md-nav--lifted" aria-label=Navigation data-md-level=0> <label class=md-nav__title for=__drawer> <a href=../../.. title="JSON for Modern C++" class="md-nav__button md-logo" aria-label="JSON for Modern C++" data-md-component=logo> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54"/></svg> </a> JSON for Modern C++ </label> <div class=md-nav__source> <a href="https://github.com/nlohmann/json" title="Go to repository" class="md-source" data-md-component="source"> <div class="md-source__icon md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </div> <div class=md-source__repository> nlohmann/json </div> </a> </div> <ul class=md-nav__list data-md-scrollfix> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_1> <div class="md-nav__link md-nav__container"> <a href=../../.. class="md-nav__link "> <span class=md-ellipsis> Home </span> </a> <label class="md-nav__link " for=__nav_1 id=__nav_1_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_1_label aria-expanded=false> <label class=md-nav__title for=__nav_1> <span class="md-nav__icon md-icon"></span> Home </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../home/license/ class=md-nav__link> <span class=md-ellipsis> License </span> </a> </li> <li class=md-nav__item> <a href=../../../home/faq/ class=md-nav__link> <span class=md-ellipsis> FAQ </span> </a> </li> <li class=md-nav__item> <a href=../../../home/exceptions/ class=md-nav__link> <span class=md-ellipsis> Exceptions </span> </a> </li> <li class=md-nav__item> <a href=../../../home/releases/ class=md-nav__link> <span class=md-ellipsis> Releases </span> </a> </li> <li class=md-nav__item> <a href=../../../home/design_goals/ class=md-nav__link> <span class=md-ellipsis> Design goals </span> </a> </li> <li class=md-nav__item> <a href=../../../home/architecture/ class=md-nav__link> <span class=md-ellipsis> Architecture </span> </a> </li> <li class=md-nav__item> <a href=../../../home/customers/ class=md-nav__link> <span class=md-ellipsis> Customers </span> </a> </li> <li class=md-nav__item> <a href=../../../home/sponsors/ class=md-nav__link> <span class=md-ellipsis> Sponsors </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2> <label class=md-nav__link for=__nav_2 id=__nav_2_label tabindex=0> <span class=md-ellipsis> Features </span> <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_2_label aria-expanded=false> <label class=md-nav__title for=__nav_2> <span class="md-nav__icon md-icon"></span> Features </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/arbitrary_types/ class=md-nav__link> <span class=md-ellipsis> Arbitrary Type Conversions </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_2> <div class="md-nav__link md-nav__container"> <a href=../../../features/binary_formats/ class="md-nav__link "> <span class=md-ellipsis> Binary Formats </span> </a> <label class="md-nav__link " for=__nav_2_2 id=__nav_2_2_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_2_label aria-expanded=false> <label class=md-nav__title for=__nav_2_2> <span class="md-nav__icon md-icon"></span> Binary Formats </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/binary_formats/bjdata/ class=md-nav__link> <span class=md-ellipsis> BJData </span> </a> </li> <li class=md-nav__item> <a href=../../../features/binary_formats/bson/ class=md-nav__link> <span class=md-ellipsis> BSON </span> </a> </li> <li class=md-nav__item> <a href=../../../features/binary_formats/cbor/ class=md-nav__link> <span class=md-ellipsis> CBOR </span> </a> </li> <li class=md-nav__item> <a href=../../../features/binary_formats/messagepack/ class=md-nav__link> <span class=md-ellipsis> MessagePack </span> </a> </li> <li class=md-nav__item> <a href=../../../features/binary_formats/ubjson/ class=md-nav__link> <span class=md-ellipsis> UBJSON </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../../features/binary_values/ class=md-nav__link> <span class=md-ellipsis> Binary Values </span> </a> </li> <li class=md-nav__item> <a href=../../../features/comments/ class=md-nav__link> <span class=md-ellipsis> Comments </span> </a> </li> <li class=md-nav__item> <a href=../../../features/trailing_commas/ class=md-nav__link> <span class=md-ellipsis> Trailing Commas </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_6> <div class="md-nav__link md-nav__container"> <a href=../../../features/element_access/ class="md-nav__link "> <span class=md-ellipsis> Element Access </span> </a> <label class="md-nav__link " for=__nav_2_6 id=__nav_2_6_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_6_label aria-expanded=false> <label class=md-nav__title for=__nav_2_6> <span class="md-nav__icon md-icon"></span> Element Access </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/element_access/unchecked_access/ class=md-nav__link> <span class=md-ellipsis> Unchecked access: operator[] </span> </a> </li> <li class=md-nav__item> <a href=../../../features/element_access/checked_access/ class=md-nav__link> <span class=md-ellipsis> Checked access: at </span> </a> </li> <li class=md-nav__item> <a href=../../../features/element_access/default_value/ class=md-nav__link> <span class=md-ellipsis> Access with default value: value </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../../features/iterators/ class=md-nav__link> <span class=md-ellipsis> Iterators </span> </a> </li> <li class=md-nav__item> <a href=../../../features/json_pointer/ class=md-nav__link> <span class=md-ellipsis> JSON Pointer </span> </a> </li> <li class=md-nav__item> <a href=../../../features/json_patch/ class=md-nav__link> <span class=md-ellipsis> JSON Patch and Diff </span> </a> </li> <li class=md-nav__item> <a href=../../../features/merge_patch/ class=md-nav__link> <span class=md-ellipsis> JSON Merge Patch </span> </a> </li> <li class=md-nav__item> <a href=../../../features/modules/ class=md-nav__link> <span class=md-ellipsis> Modules </span> </a> </li> <li class=md-nav__item> <a href=../../../features/namespace/ class=md-nav__link> <span class=md-ellipsis> nlohmann Namespace </span> </a> </li> <li class=md-nav__item> <a href=../../../features/object_order/ class=md-nav__link> <span class=md-ellipsis> Object Order </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_14> <div class="md-nav__link md-nav__container"> <a href=../../../features/parsing/ class="md-nav__link "> <span class=md-ellipsis> Parsing </span> </a> <label class="md-nav__link " for=__nav_2_14 id=__nav_2_14_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_14_label aria-expanded=false> <label class=md-nav__title for=__nav_2_14> <span class="md-nav__icon md-icon"></span> Parsing </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/parsing/json_lines/ class=md-nav__link> <span class=md-ellipsis> JSON Lines </span> </a> </li> <li class=md-nav__item> <a href=../../../features/parsing/parse_exceptions/ class=md-nav__link> <span class=md-ellipsis> Parsing and Exceptions </span> </a> </li> <li class=md-nav__item> <a href=../../../features/parsing/parser_callbacks/ class=md-nav__link> <span class=md-ellipsis> Parser Callbacks </span> </a> </li> <li class=md-nav__item> <a href=../../../features/parsing/sax_interface/ class=md-nav__link> <span class=md-ellipsis> SAX Interface </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../../features/assertions/ class=md-nav__link> <span class=md-ellipsis> Runtime Assertions </span> </a> </li> <li class=md-nav__item> <a href=../../../features/enum_conversion/ class=md-nav__link> <span class=md-ellipsis> Specializing enum conversion </span> </a> </li> <li class=md-nav__item> <a href=../../../features/macros/ class=md-nav__link> <span class=md-ellipsis> Supported Macros </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_18> <div class="md-nav__link md-nav__container"> <a href=../../../features/types/ class="md-nav__link "> <span class=md-ellipsis> Types </span> </a> <label class="md-nav__link " for=__nav_2_18 id=__nav_2_18_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_18_label aria-expanded=false> <label class=md-nav__title for=__nav_2_18> <span class="md-nav__icon md-icon"></span> Types </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/types/number_handling/ class=md-nav__link> <span class=md-ellipsis> Number Handling </span> </a> </li> </ul> </nav> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_3> <div class="md-nav__link md-nav__container"> <a href=../../../integration/ class="md-nav__link "> <span class=md-ellipsis> Integration </span> </a> <label class="md-nav__link " for=__nav_3 id=__nav_3_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_3_label aria-expanded=false> <label class=md-nav__title for=__nav_3> <span class="md-nav__icon md-icon"></span> Integration </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../integration/migration_guide/ class=md-nav__link> <span class=md-ellipsis> Migration Guide </span> </a> </li> <li class=md-nav__item> <a href=../../../integration/cmake/ class=md-nav__link> <span class=md-ellipsis> CMake </span> </a> </li> <li class=md-nav__item> <a href=../../../integration/package_managers/ class=md-nav__link> <span class=md-ellipsis> Package Managers </span> </a> </li> <li class=md-nav__item> <a href=../../../integration/pkg-config/ class=md-nav__link> <span class=md-ellipsis> Pkg-config </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--active md-nav__item--section md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4 checked> <label class=md-nav__link for=__nav_4 id=__nav_4_label tabindex> <span class=md-ellipsis> API Documentation </span> <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_4_label aria-expanded=true> <label class=md-nav__title for=__nav_4> <span class="md-nav__icon md-icon"></span> API Documentation </label> <ul class=md-nav__list data-md-scrollfix> <li class="md-nav__item md-nav__item--active md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_1 checked> <div class="md-nav__link md-nav__container"> <a href=../ class="md-nav__link "> <span class=md-ellipsis> basic_json </span> </a> <label class="md-nav__link " for=__nav_4_1 id=__nav_4_1_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_1_label aria-expanded=true> <label class=md-nav__title for=__nav_4_1> <span class="md-nav__icon md-icon"></span> basic_json </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../basic_json/ class=md-nav__link> <span class=md-ellipsis> (Constructor) </span> </a> </li> <li class=md-nav__item> <a href=../~basic_json/ class=md-nav__link> <span class=md-ellipsis> (Destructor) </span> </a> </li> <li class=md-nav__item> <a href=../accept/ class=md-nav__link> <span class=md-ellipsis> accept </span> </a> </li> <li class=md-nav__item> <a href=../array/ class=md-nav__link> <span class=md-ellipsis> array </span> </a> </li> <li class=md-nav__item> <a href=../array_t/ class=md-nav__link> <span class=md-ellipsis> array_t </span> </a> </li> <li class=md-nav__item> <a href=../at/ class=md-nav__link> <span class=md-ellipsis> at </span> </a> </li> <li class=md-nav__item> <a href=../back/ class=md-nav__link> <span class=md-ellipsis> back </span> </a> </li> <li class=md-nav__item> <a href=../begin/ class=md-nav__link> <span class=md-ellipsis> begin </span> </a> </li> <li class=md-nav__item> <a href=../binary/ class=md-nav__link> <span class=md-ellipsis> binary </span> </a> </li> <li class=md-nav__item> <a href=../binary_t/ class=md-nav__link> <span class=md-ellipsis> binary_t </span> </a> </li> <li class=md-nav__item> <a href=../boolean_t/ class=md-nav__link> <span class=md-ellipsis> boolean_t </span> </a> </li> <li class=md-nav__item> <a href=../cbegin/ class=md-nav__link> <span class=md-ellipsis> cbegin </span> </a> </li> <li class=md-nav__item> <a href=../cbor_tag_handler_t/ class=md-nav__link> <span class=md-ellipsis> cbor_tag_handler_t </span> </a> </li> <li class=md-nav__item> <a href=../cend/ class=md-nav__link> <span class=md-ellipsis> cend </span> </a> </li> <li class=md-nav__item> <a href=../clear/ class=md-nav__link> <span class=md-ellipsis> clear </span> </a> </li> <li class=md-nav__item> <a href=../contains/ class=md-nav__link> <span class=md-ellipsis> contains </span> </a> </li> <li class=md-nav__item> <a href=../count/ class=md-nav__link> <span class=md-ellipsis> count </span> </a> </li> <li class=md-nav__item> <a href=../crbegin/ class=md-nav__link> <span class=md-ellipsis> crbegin </span> </a> </li> <li class=md-nav__item> <a href=../crend/ class=md-nav__link> <span class=md-ellipsis> crend </span> </a> </li> <li class=md-nav__item> <a href=../default_object_comparator_t/ class=md-nav__link> <span class=md-ellipsis> default_object_comparator_t </span> </a> </li> <li class=md-nav__item> <a href=../diff/ class=md-nav__link> <span class=md-ellipsis> diff </span> </a> </li> <li class=md-nav__item> <a href=../dump/ class=md-nav__link> <span class=md-ellipsis> dump </span> </a> </li> <li class=md-nav__item> <a href=../emplace/ class=md-nav__link> <span class=md-ellipsis> emplace </span> </a> </li> <li class=md-nav__item> <a href=../emplace_back/ class=md-nav__link> <span class=md-ellipsis> emplace_back </span> </a> </li> <li class=md-nav__item> <a href=../empty/ class=md-nav__link> <span class=md-ellipsis> empty </span> </a> </li> <li class=md-nav__item> <a href=../end/ class=md-nav__link> <span class=md-ellipsis> end </span> </a> </li> <li class=md-nav__item> <a href=../end_pos/ class=md-nav__link> <span class=md-ellipsis> end_pos </span> </a> </li> <li class=md-nav__item> <a href=../erase/ class=md-nav__link> <span class=md-ellipsis> erase </span> </a> </li> <li class=md-nav__item> <a href=../error_handler_t/ class=md-nav__link> <span class=md-ellipsis> error_handler_t </span> </a> </li> <li class=md-nav__item> <a href=../exception/ class=md-nav__link> <span class=md-ellipsis> exception </span> </a> </li> <li class=md-nav__item> <a href=../find/ class=md-nav__link> <span class=md-ellipsis> find </span> </a> </li> <li class=md-nav__item> <a href=../flatten/ class=md-nav__link> <span class=md-ellipsis> flatten </span> </a> </li> <li class=md-nav__item> <a href=../from_bjdata/ class=md-nav__link> <span class=md-ellipsis> from_bjdata </span> </a> </li> <li class=md-nav__item> <a href=../from_bson/ class=md-nav__link> <span class=md-ellipsis> from_bson </span> </a> </li> <li class=md-nav__item> <a href=../from_cbor/ class=md-nav__link> <span class=md-ellipsis> from_cbor </span> </a> </li> <li class=md-nav__item> <a href=../from_msgpack/ class=md-nav__link> <span class=md-ellipsis> from_msgpack </span> </a> </li> <li class=md-nav__item> <a href=../from_ubjson/ class=md-nav__link> <span class=md-ellipsis> from_ubjson </span> </a> </li> <li class=md-nav__item> <a href=../front/ class=md-nav__link> <span class=md-ellipsis> front </span> </a> </li> <li class=md-nav__item> <a href=../get/ class=md-nav__link> <span class=md-ellipsis> get </span> </a> </li> <li class=md-nav__item> <a href=../get_allocator/ class=md-nav__link> <span class=md-ellipsis> get_allocator </span> </a> </li> <li class=md-nav__item> <a href=../get_binary/ class=md-nav__link> <span class=md-ellipsis> get_binary </span> </a> </li> <li class=md-nav__item> <a href=../get_ptr/ class=md-nav__link> <span class=md-ellipsis> get_ptr </span> </a> </li> <li class=md-nav__item> <a href=../get_ref/ class=md-nav__link> <span class=md-ellipsis> get_ref </span> </a> </li> <li class=md-nav__item> <a href=../get_to/ class=md-nav__link> <span class=md-ellipsis> get_to </span> </a> </li> <li class=md-nav__item> <a href=../std_hash/ class=md-nav__link> <span class=md-ellipsis> std::hash&lt;basic_json&gt; </span> </a> </li> <li class=md-nav__item> <a href=../input_format_t/ class=md-nav__link> <span class=md-ellipsis> input_format_t </span> </a> </li> <li class=md-nav__item> <a href=../insert/ class=md-nav__link> <span class=md-ellipsis> insert </span> </a> </li> <li class=md-nav__item> <a href=../invalid_iterator/ class=md-nav__link> <span class=md-ellipsis> invalid_iterator </span> </a> </li> <li class=md-nav__item> <a href=../is_array/ class=md-nav__link> <span class=md-ellipsis> is_array </span> </a> </li> <li class=md-nav__item> <a href=../is_binary/ class=md-nav__link> <span class=md-ellipsis> is_binary </span> </a> </li> <li class=md-nav__item> <a href=../is_boolean/ class=md-nav__link> <span class=md-ellipsis> is_boolean </span> </a> </li> <li class=md-nav__item> <a href=../is_discarded/ class=md-nav__link> <span class=md-ellipsis> is_discarded </span> </a> </li> <li class=md-nav__item> <a href=../is_null/ class=md-nav__link> <span class=md-ellipsis> is_null </span> </a> </li> <li class=md-nav__item> <a href=../is_number/ class=md-nav__link> <span class=md-ellipsis> is_number </span> </a> </li> <li class=md-nav__item> <a href=../is_number_float/ class=md-nav__link> <span class=md-ellipsis> is_number_float </span> </a> </li> <li class=md-nav__item> <a href=../is_number_integer/ class=md-nav__link> <span class=md-ellipsis> is_number_integer </span> </a> </li> <li class=md-nav__item> <a href=../is_number_unsigned/ class=md-nav__link> <span class=md-ellipsis> is_number_unsigned </span> </a> </li> <li class=md-nav__item> <a href=../is_object/ class=md-nav__link> <span class=md-ellipsis> is_object </span> </a> </li> <li class=md-nav__item> <a href=../is_primitive/ class=md-nav__link> <span class=md-ellipsis> is_primitive </span> </a> </li> <li class=md-nav__item> <a href=../is_string/ class=md-nav__link> <span class=md-ellipsis> is_string </span> </a> </li> <li class=md-nav__item> <a href=../is_structured/ class=md-nav__link> <span class=md-ellipsis> is_structured </span> </a> </li> <li class=md-nav__item> <a href=../items/ class=md-nav__link> <span class=md-ellipsis> items </span> </a> </li> <li class=md-nav__item> <a href=../json_base_class_t/ class=md-nav__link> <span class=md-ellipsis> json_base_class_t </span> </a> </li> <li class=md-nav__item> <a href=../json_serializer/ class=md-nav__link> <span class=md-ellipsis> json_serializer </span> </a> </li> <li class=md-nav__item> <a href=../max_size/ class=md-nav__link> <span class=md-ellipsis> max_size </span> </a> </li> <li class=md-nav__item> <a href=../meta/ class=md-nav__link> <span class=md-ellipsis> meta </span> </a> </li> <li class=md-nav__item> <a href=../merge_patch/ class=md-nav__link> <span class=md-ellipsis> merge_patch </span> </a> </li> <li class=md-nav__item> <a href=../number_float_t/ class=md-nav__link> <span class=md-ellipsis> number_float_t </span> </a> </li> <li class=md-nav__item> <a href=../number_integer_t/ class=md-nav__link> <span class=md-ellipsis> number_integer_t </span> </a> </li> <li class=md-nav__item> <a href=../number_unsigned_t/ class=md-nav__link> <span class=md-ellipsis> number_unsigned_t </span> </a> </li> <li class=md-nav__item> <a href=../object/ class=md-nav__link> <span class=md-ellipsis> object </span> </a> </li> <li class=md-nav__item> <a href=../object_comparator_t/ class=md-nav__link> <span class=md-ellipsis> object_comparator_t </span> </a> </li> <li class=md-nav__item> <a href=../object_t/ class=md-nav__link> <span class=md-ellipsis> object_t </span> </a> </li> <li class=md-nav__item> <a href=../operator_ValueType/ class=md-nav__link> <span class=md-ellipsis> operator ValueType </span> </a> </li> <li class=md-nav__item> <a href=../operator_value_t/ class=md-nav__link> <span class=md-ellipsis> operator value_t </span> </a> </li> <li class=md-nav__item> <a href=../operator%5B%5D/ class=md-nav__link> <span class=md-ellipsis> operator[] </span> </a> </li> <li class=md-nav__item> <a href=../operator%3D/ class=md-nav__link> <span class=md-ellipsis> operator= </span> </a> </li> <li class=md-nav__item> <a href=../operator%2B%3D/ class=md-nav__link> <span class=md-ellipsis> operator+= </span> </a> </li> <li class=md-nav__item> <a href=../operator_eq/ class=md-nav__link> <span class=md-ellipsis> operator== </span> </a> </li> <li class=md-nav__item> <a href=../operator_ne/ class=md-nav__link> <span class=md-ellipsis> operator!= </span> </a> </li> <li class=md-nav__item> <a href=../operator_lt/ class=md-nav__link> <span class=md-ellipsis> operator< </span> </a> </li> <li class=md-nav__item> <a href=../operator_gt/ class=md-nav__link> <span class=md-ellipsis> operator> </span> </a> </li> <li class=md-nav__item> <a href=../operator_le/ class=md-nav__link> <span class=md-ellipsis> operator<= </span> </a> </li> <li class=md-nav__item> <a href=../operator_ge/ class=md-nav__link> <span class=md-ellipsis> operator>= </span> </a> </li> <li class=md-nav__item> <a href=../operator_spaceship/ class=md-nav__link> <span class=md-ellipsis> operator<=> </span> </a> </li> <li class=md-nav__item> <a href=../out_of_range/ class=md-nav__link> <span class=md-ellipsis> out_of_range </span> </a> </li> <li class=md-nav__item> <a href=../other_error/ class=md-nav__link> <span class=md-ellipsis> other_error </span> </a> </li> <li class=md-nav__item> <a href=../parse/ class=md-nav__link> <span class=md-ellipsis> parse </span> </a> </li> <li class=md-nav__item> <a href=../parse_error/ class=md-nav__link> <span class=md-ellipsis> parse_error </span> </a> </li> <li class=md-nav__item> <a href=../parse_event_t/ class=md-nav__link> <span class=md-ellipsis> parse_event_t </span> </a> </li> <li class=md-nav__item> <a href=../parser_callback_t/ class=md-nav__link> <span class=md-ellipsis> parser_callback_t </span> </a> </li> <li class=md-nav__item> <a href=../patch/ class=md-nav__link> <span class=md-ellipsis> patch </span> </a> </li> <li class="md-nav__item md-nav__item--active"> <input class="md-nav__toggle md-toggle" type=checkbox id=__toc> <label class="md-nav__link md-nav__link--active" for=__toc> <span class=md-ellipsis> patch_inplace </span> <span class="md-nav__icon md-icon"></span> </label> <a href=./ class="md-nav__link md-nav__link--active"> <span class=md-ellipsis> patch_inplace </span> </a> <nav class="md-nav md-nav--secondary" aria-label="Table of contents"> <label class=md-nav__title for=__toc> <span class="md-nav__icon md-icon"></span> Table of contents </label> <ul class=md-nav__list data-md-component=toc data-md-scrollfix> <li class=md-nav__item> <a href=#parameters class=md-nav__link> <span class=md-ellipsis> Parameters </span> </a> </li> <li class=md-nav__item> <a href=#exception-safety class=md-nav__link> <span class=md-ellipsis> Exception safety </span> </a> </li> <li class=md-nav__item> <a href=#exceptions class=md-nav__link> <span class=md-ellipsis> Exceptions </span> </a> </li> <li class=md-nav__item> <a href=#complexity class=md-nav__link> <span class=md-ellipsis> Complexity </span> </a> </li> <li class=md-nav__item> <a href=#notes class=md-nav__link> <span class=md-ellipsis> Notes </span> </a> </li> <li class=md-nav__item> <a href=#examples class=md-nav__link> <span class=md-ellipsis> Examples </span> </a> </li> <li class=md-nav__item> <a href=#see-also class=md-nav__link> <span class=md-ellipsis> See also </span> </a> </li> <li class=md-nav__item> <a href=#version-history class=md-nav__link> <span class=md-ellipsis> Version history </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../push_back/ class=md-nav__link> <span class=md-ellipsis> push_back </span> </a> </li> <li class=md-nav__item> <a href=../rbegin/ class=md-nav__link> <span class=md-ellipsis> rbegin </span> </a> </li> <li class=md-nav__item> <a href=../rend/ class=md-nav__link> <span class=md-ellipsis> rend </span> </a> </li> <li class=md-nav__item> <a href=../sax_parse/ class=md-nav__link> <span class=md-ellipsis> sax_parse </span> </a> </li> <li class=md-nav__item> <a href=../size/ class=md-nav__link> <span class=md-ellipsis> size </span> </a> </li> <li class=md-nav__item> <a href=../start_pos/ class=md-nav__link> <span class=md-ellipsis> start_pos </span> </a> </li> <li class=md-nav__item> <a href=../string_t/ class=md-nav__link> <span class=md-ellipsis> string_t </span> </a> </li> <li class=md-nav__item> <a href=../swap/ class=md-nav__link> <span class=md-ellipsis> swap </span> </a> </li> <li class=md-nav__item> <a href=../std_swap/ class=md-nav__link> <span class=md-ellipsis> std::swap&lt;basic_json&gt; </span> </a> </li> <li class=md-nav__item> <a href=../to_bjdata/ class=md-nav__link> <span class=md-ellipsis> to_bjdata </span> </a> </li> <li class=md-nav__item> <a href=../to_bson/ class=md-nav__link> <span class=md-ellipsis> to_bson </span> </a> </li> <li class=md-nav__item> <a href=../to_cbor/ class=md-nav__link> <span class=md-ellipsis> to_cbor </span> </a> </li> <li class=md-nav__item> <a href=../to_msgpack/ class=md-nav__link> <span class=md-ellipsis> to_msgpack </span> </a> </li> <li class=md-nav__item> <a href=../to_string/ class=md-nav__link> <span class=md-ellipsis> to_string </span> </a> </li> <li class=md-nav__item> <a href=../to_ubjson/ class=md-nav__link> <span class=md-ellipsis> to_ubjson </span> </a> </li> <li class=md-nav__item> <a href=../type/ class=md-nav__link> <span class=md-ellipsis> type </span> </a> </li> <li class=md-nav__item> <a href=../type_error/ class=md-nav__link> <span class=md-ellipsis> type_error </span> </a> </li> <li class=md-nav__item> <a href=../type_name/ class=md-nav__link> <span class=md-ellipsis> type_name </span> </a> </li> <li class=md-nav__item> <a href=../unflatten/ class=md-nav__link> <span class=md-ellipsis> unflatten </span> </a> </li> <li class=md-nav__item> <a href=../update/ class=md-nav__link> <span class=md-ellipsis> update </span> </a> </li> <li class=md-nav__item> <a href=../value/ class=md-nav__link> <span class=md-ellipsis> value </span> </a> </li> <li class=md-nav__item> <a href=../value_t/ class=md-nav__link> <span class=md-ellipsis> value_t </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_2> <div class="md-nav__link md-nav__container"> <a href=../../byte_container_with_subtype/ class="md-nav__link "> <span class=md-ellipsis> byte_container_with_subtype </span> </a> <label class="md-nav__link " for=__nav_4_2 id=__nav_4_2_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_2_label aria-expanded=false> <label class=md-nav__title for=__nav_4_2> <span class="md-nav__icon md-icon"></span> byte_container_with_subtype </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../byte_container_with_subtype/byte_container_with_subtype/ class=md-nav__link> <span class=md-ellipsis> (constructor) </span> </a> </li> <li class=md-nav__item> <a href=../../byte_container_with_subtype/clear_subtype/ class=md-nav__link> <span class=md-ellipsis> clear_subtype </span> </a> </li> <li class=md-nav__item> <a href=../../byte_container_with_subtype/has_subtype/ class=md-nav__link> <span class=md-ellipsis> has_subtype </span> </a> </li> <li class=md-nav__item> <a href=../../byte_container_with_subtype/set_subtype/ class=md-nav__link> <span class=md-ellipsis> set_subtype </span> </a> </li> <li class=md-nav__item> <a href=../../byte_container_with_subtype/subtype/ class=md-nav__link> <span class=md-ellipsis> subtype </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_3> <div class="md-nav__link md-nav__container"> <a href=../../adl_serializer/ class="md-nav__link "> <span class=md-ellipsis> adl_serializer </span> </a> <label class="md-nav__link " for=__nav_4_3 id=__nav_4_3_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_3_label aria-expanded=false> <label class=md-nav__title for=__nav_4_3> <span class="md-nav__icon md-icon"></span> adl_serializer </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../adl_serializer/from_json/ class=md-nav__link> <span class=md-ellipsis> from_json </span> </a> </li> <li class=md-nav__item> <a href=../../adl_serializer/to_json/ class=md-nav__link> <span class=md-ellipsis> to_json </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../json/ class=md-nav__link> <span class=md-ellipsis> json </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_5> <div class="md-nav__link md-nav__container"> <a href=../../json_pointer/ class="md-nav__link "> <span class=md-ellipsis> json_pointer </span> </a> <label class="md-nav__link " for=__nav_4_5 id=__nav_4_5_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_5_label aria-expanded=false> <label class=md-nav__title for=__nav_4_5> <span class="md-nav__icon md-icon"></span> json_pointer </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../json_pointer/json_pointer/ class=md-nav__link> <span class=md-ellipsis> (Constructor) </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/back/ class=md-nav__link> <span class=md-ellipsis> back </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/empty/ class=md-nav__link> <span class=md-ellipsis> empty </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/front/ class=md-nav__link> <span class=md-ellipsis> front </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_string_t/ class=md-nav__link> <span class=md-ellipsis> operator string_t </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_eq/ class=md-nav__link> <span class=md-ellipsis> operator== </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_ne/ class=md-nav__link> <span class=md-ellipsis> operator!= </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_slash/ class=md-nav__link> <span class=md-ellipsis> operator/ </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_slasheq/ class=md-nav__link> <span class=md-ellipsis> operator/= </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/parent_pointer/ class=md-nav__link> <span class=md-ellipsis> parent_pointer </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/pop_back/ class=md-nav__link> <span class=md-ellipsis> pop_back </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/pop_front/ class=md-nav__link> <span class=md-ellipsis> pop_front </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/push_back/ class=md-nav__link> <span class=md-ellipsis> push_back </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/push_front/ class=md-nav__link> <span class=md-ellipsis> push_front </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/string_t/ class=md-nav__link> <span class=md-ellipsis> string_t </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/to_string/ class=md-nav__link> <span class=md-ellipsis> to_string </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_6> <div class="md-nav__link md-nav__container"> <a href=../../json_sax/ class="md-nav__link "> <span class=md-ellipsis> json_sax </span> </a> <label class="md-nav__link " for=__nav_4_6 id=__nav_4_6_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_6_label aria-expanded=false> <label class=md-nav__title for=__nav_4_6> <span class="md-nav__icon md-icon"></span> json_sax </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../json_sax/binary/ class=md-nav__link> <span class=md-ellipsis> binary </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/boolean/ class=md-nav__link> <span class=md-ellipsis> boolean </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/end_array/ class=md-nav__link> <span class=md-ellipsis> end_array </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/end_object/ class=md-nav__link> <span class=md-ellipsis> end_object </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/key/ class=md-nav__link> <span class=md-ellipsis> key </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/null/ class=md-nav__link> <span class=md-ellipsis> null </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/number_float/ class=md-nav__link> <span class=md-ellipsis> number_float </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/number_integer/ class=md-nav__link> <span class=md-ellipsis> number_integer </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/number_unsigned/ class=md-nav__link> <span class=md-ellipsis> number_unsigned </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/parse_error/ class=md-nav__link> <span class=md-ellipsis> parse_error </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/start_array/ class=md-nav__link> <span class=md-ellipsis> start_array </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/start_object/ class=md-nav__link> <span class=md-ellipsis> start_object </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/string/ class=md-nav__link> <span class=md-ellipsis> string </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../operator_ltlt/ class=md-nav__link> <span class=md-ellipsis> operator<<(basic_json), operator<<(json_pointer) </span> </a> </li> <li class=md-nav__item> <a href=../../operator_gtgt/ class=md-nav__link> <span class=md-ellipsis> operator>>(basic_json) </span> </a> </li> <li class=md-nav__item> <a href=../../operator_literal_json/ class=md-nav__link> <span class=md-ellipsis> operator""_json </span> </a> </li> <li class=md-nav__item> <a href=../../operator_literal_json_pointer/ class=md-nav__link> <span class=md-ellipsis> operator""_json_pointer </span> </a> </li> <li class=md-nav__item> <a href=../../ordered_json/ class=md-nav__link> <span class=md-ellipsis> ordered_json </span> </a> </li> <li class=md-nav__item> <a href=../../ordered_map/ class=md-nav__link> <span class=md-ellipsis> ordered_map </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_13> <div class="md-nav__link md-nav__container"> <a href=../../macros/ class="md-nav__link "> <span class=md-ellipsis> macros </span> </a> <label class="md-nav__link " for=__nav_4_13 id=__nav_4_13_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_13_label aria-expanded=false> <label class=md-nav__title for=__nav_4_13> <span class="md-nav__icon md-icon"></span> macros </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../macros/json_assert/ class=md-nav__link> <span class=md-ellipsis> JSON_ASSERT </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_brace_init_copy_semantics/ class=md-nav__link> <span class=md-ellipsis> JSON_BRACE_INIT_COPY_SEMANTICS </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_throw_user/ class=md-nav__link> <span class=md-ellipsis> JSON_CATCH_USER, JSON_THROW_USER, JSON_TRY_USER </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_diagnostics/ class=md-nav__link> <span class=md-ellipsis> JSON_DIAGNOSTICS </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_diagnostic_positions/ class=md-nav__link> <span class=md-ellipsis> JSON_DIAGNOSTIC_POSITIONS </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_disable_enum_serialization/ class=md-nav__link> <span class=md-ellipsis> JSON_DISABLE_ENUM_SERIALIZATION </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_has_cpp_11/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_CPP_11, JSON_HAS_CPP_14, JSON_HAS_CPP_17, JSON_HAS_CPP_20 </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_has_filesystem/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_EXPERIMENTAL_FILESYSTEM, JSON_HAS_FILESYSTEM </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_has_ranges/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_RANGES </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_has_static_rtti/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_STATIC_RTTI </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_has_three_way_comparison/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_THREE_WAY_COMPARISON </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_noexception/ class=md-nav__link> <span class=md-ellipsis> JSON_NOEXCEPTION </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_no_io/ class=md-nav__link> <span class=md-ellipsis> JSON_NO_IO </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_skip_library_version_check/ class=md-nav__link> <span class=md-ellipsis> JSON_SKIP_LIBRARY_VERSION_CHECK </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_skip_unsupported_compiler_check/ class=md-nav__link> <span class=md-ellipsis> JSON_SKIP_UNSUPPORTED_COMPILER_CHECK </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_use_global_udls/ class=md-nav__link> <span class=md-ellipsis> JSON_USE_GLOBAL_UDLS </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_use_implicit_conversions/ class=md-nav__link> <span class=md-ellipsis> JSON_USE_IMPLICIT_CONVERSIONS </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_use_legacy_discarded_value_comparison/ class=md-nav__link> <span class=md-ellipsis> JSON_USE_LEGACY_DISCARDED_VALUE_COMPARISON </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_define_derived_type/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_ONLY_SERIALIZE, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_define_type_intrusive/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_TYPE_INTRUSIVE, NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_TYPE_INTRUSIVE_ONLY_SERIALIZE </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_define_type_non_intrusive/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_define_type_with_names/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_TYPE_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_namespace/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_NAMESPACE </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_namespace_begin/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_NAMESPACE_BEGIN, NLOHMANN_JSON_NAMESPACE_END </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_namespace_no_version/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_NAMESPACE_NO_VERSION </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_serialize_enum/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_SERIALIZE_ENUM </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_serialize_enum_strict/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_SERIALIZE_ENUM_STRICT </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_version_major/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_VERSION_MAJOR, NLOHMANN_JSON_VERSION_MINOR, NLOHMANN_JSON_VERSION_PATCH </span> </a> </li> </ul> </nav> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_5> <div class="md-nav__link md-nav__container"> <a href=../../../community/ class="md-nav__link "> <span class=md-ellipsis> Community </span> </a> <label class="md-nav__link " for=__nav_5 id=__nav_5_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_5_label aria-expanded=false> <label class=md-nav__title for=__nav_5> <span class="md-nav__icon md-icon"></span> Community </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../community/code_of_conduct/ class=md-nav__link> <span class=md-ellipsis> Code of Conduct </span> </a> </li> <li class=md-nav__item> <a href=../../../community/contribution_guidelines/ class=md-nav__link> <span class=md-ellipsis> Contribution Guidelines </span> </a> </li> <li class=md-nav__item> <a href=../../../community/quality_assurance/ class=md-nav__link> <span class=md-ellipsis> Quality assurance </span> </a> </li> <li class=md-nav__item> <a href=../../../community/governance/ class=md-nav__link> <span class=md-ellipsis> Governance </span> </a> </li> <li class=md-nav__item> <a href=../../../community/security_policy/ class=md-nav__link> <span class=md-ellipsis> Security Policy </span> </a> </li> </ul> </nav> </li> </ul> </nav> </div> </div> </div> <div class="md-sidebar md-sidebar--secondary" data-md-component=sidebar data-md-type=toc> <div class=md-sidebar__scrollwrap> <div class=md-sidebar__inner> <nav class="md-nav md-nav--secondary" aria-label="Table of contents"> <label class=md-nav__title for=__toc> <span class="md-nav__icon md-icon"></span> Table of contents </label> <ul class=md-nav__list data-md-component=toc data-md-scrollfix> <li class=md-nav__item> <a href=#parameters class=md-nav__link> <span class=md-ellipsis> Parameters </span> </a> </li> <li class=md-nav__item> <a href=#exception-safety class=md-nav__link> <span class=md-ellipsis> Exception safety </span> </a> </li> <li class=md-nav__item> <a href=#exceptions class=md-nav__link> <span class=md-ellipsis> Exceptions </span> </a> </li> <li class=md-nav__item> <a href=#complexity class=md-nav__link> <span class=md-ellipsis> Complexity </span> </a> </li> <li class=md-nav__item> <a href=#notes class=md-nav__link> <span class=md-ellipsis> Notes </span> </a> </li> <li class=md-nav__item> <a href=#examples class=md-nav__link> <span class=md-ellipsis> Examples </span> </a> </li> <li class=md-nav__item> <a href=#see-also class=md-nav__link> <span class=md-ellipsis> See also </span> </a> </li> <li class=md-nav__item> <a href=#version-history class=md-nav__link> <span class=md-ellipsis> Version history </span> </a> </li> </ul> </nav> </div> </div> </div> <div class=md-content data-md-component=content> <article class="md-content__inner md-typeset"> <a href="https://github.com/nlohmann/json/edit/develop/docs/mkdocs/docs/api/basic_json/patch_inplace.md" title="Edit this page" class="md-content__button md-icon" rel="edit"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M10 20H6V4h7v5h5v3.1l2-2V8l-6-6H6c-1.1 0-2 .9-2 2v16c0 1.1.9 2 2 2h4zm10.2-7c.1 0 .3.1.4.2l1.3 1.3c.2.2.2.6 0 .8l-1 1-2.1-2.1 1-1c.1-.1.2-.2.4-.2m0 3.9L14.1 23H12v-2.1l6.1-6.1z"/></svg> </a> <a href="https://github.com/nlohmann/json/raw/develop/docs/mkdocs/docs/api/basic_json/patch_inplace.md" title="View source of this page" class="md-content__button md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M17 18c.56 0 1 .44 1 1s-.44 1-1 1-1-.44-1-1 .44-1 1-1m0-3c-2.73 0-5.06 1.66-6 4 .94 2.34 3.27 4 6 4s5.06-1.66 6-4c-.94-2.34-3.27-4-6-4m0 6.5a2.5 2.5 0 0 1-2.5-2.5 2.5 2.5 0 0 1 2.5-2.5 2.5 2.5 0 0 1 2.5 2.5 2.5 2.5 0 0 1-2.5 2.5M9.27 20H6V4h7v5h5v4.07c.7.08 1.36.25 2 .49V8l-6-6H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h4.5a8.2 8.2 0 0 1-1.23-2"/></svg> </a> <h1 id=nlohmannbasic_jsonpatch_inplace><small>nlohmann::basic_json::</small>patch_inplace<a class=headerlink href=#nlohmannbasic_jsonpatch_inplace title="Permanent link">&para;</a></h1> <div class=highlight><pre><span></span><code><span class=kt>void</span><span class=w> </span><span class=nf>patch_inplace</span><span class=p>(</span><span class=k>const</span><span class=w> </span><span class=n>basic_json</span><span class=o>&amp;</span><span class=w> </span><span class=n>json_patch</span><span class=p>);</span>
+</code></pre></div> <p><a href="http://jsonpatch.com"><abbr title="JavaScript Object Notation">JSON</abbr> Patch</a> defines a <abbr title="JavaScript Object Notation">JSON</abbr> document structure for expressing a sequence of operations to apply to a <abbr title="JavaScript Object Notation">JSON</abbr> document. With this function, a <abbr title="JavaScript Object Notation">JSON</abbr> Patch is applied to the current <abbr title="JavaScript Object Notation">JSON</abbr> value by executing all operations from the patch. This function applies a <abbr title="JavaScript Object Notation">JSON</abbr> patch in place and returns void.</p> <h2 id=parameters>Parameters<a class=headerlink href=#parameters title="Permanent link">&para;</a></h2> <dl> <dt><code>json_patch</code> (in)</dt> <dd><abbr title="JavaScript Object Notation">JSON</abbr> patch document</dd> </dl> <h2 id=exception-safety>Exception safety<a class=headerlink href=#exception-safety title="Permanent link">&para;</a></h2> <p>No guarantees, value may be corrupted by an unsuccessful patch operation.</p> <h2 id=exceptions>Exceptions<a class=headerlink href=#exceptions title="Permanent link">&para;</a></h2> <ul> <li>Throws <a href=../../../home/exceptions/#jsonexceptionparse_error104><code>parse_error.104</code></a> if the <abbr title="JavaScript Object Notation">JSON</abbr> patch does not consist of an array of objects.</li> <li>Throws <a href=../../../home/exceptions/#jsonexceptionparse_error105><code>parse_error.105</code></a> if the <abbr title="JavaScript Object Notation">JSON</abbr> patch is malformed (e.g., mandatory attributes are missing); example: <code>"operation add must have member path"</code>.</li> <li>Throws <a href=../../../home/exceptions/#jsonexceptionout_of_range401><code>out_of_range.401</code></a> if an array index is out of range.</li> <li>Throws <a href=../../../home/exceptions/#jsonexceptionout_of_range403><code>out_of_range.403</code></a> if a <abbr title="JavaScript Object Notation">JSON</abbr> pointer inside the patch could not be resolved successfully in the current <abbr title="JavaScript Object Notation">JSON</abbr> value; example: <code>"key baz not found"</code>.</li> <li>Throws <a href=../../../home/exceptions/#jsonexceptionout_of_range405><code>out_of_range.405</code></a> if <abbr title="JavaScript Object Notation">JSON</abbr> pointer has no parent ("add", "remove", "move")</li> <li>Throws <a href=../../../home/exceptions/#jsonexceptionother_error501><code>other_error.501</code></a> if "test" operation was unsuccessful.</li> </ul> <h2 id=complexity>Complexity<a class=headerlink href=#complexity title="Permanent link">&para;</a></h2> <p>Linear in the size of the <abbr title="JavaScript Object Notation">JSON</abbr> value and the length of the <abbr title="JavaScript Object Notation">JSON</abbr> patch. As usually the patch affects only a fraction of the <abbr title="JavaScript Object Notation">JSON</abbr> value, the complexity can usually be neglected.</p> <h2 id=notes>Notes<a class=headerlink href=#notes title="Permanent link">&para;</a></h2> <p>Unlike <a href=../patch/ ><code>patch</code></a>, <code>patch_inplace</code> applies the operation "in place" and no copy of the <abbr title="JavaScript Object Notation">JSON</abbr> value is created. That makes it faster for large documents by avoiding the copy. However, the <abbr title="JavaScript Object Notation">JSON</abbr> value might be corrupted if the function throws an exception.</p> <h2 id=examples>Examples<a class=headerlink href=#examples title="Permanent link">&para;</a></h2> <details class=example> <summary>Example</summary> <p>The following code shows how a <abbr title="JavaScript Object Notation">JSON</abbr> patch is applied to a value.</p> <div class=highlight><pre><span></span><code><span class=cp>#include</span><span class=w> </span><span class=cpf>&lt;iostream&gt;</span>
 <span class=cp>#include</span><span class=w> </span><span class=cpf>&lt;iomanip&gt;</span>
 <span class=cp>#include</span><span class=w> </span><span class=cpf>&lt;nlohmann/json.hpp&gt;</span>
 
@@ -47,4 +47,4 @@
 <span class=w>        </span><span class=s2>&quot;world&quot;</span>
 <span class=w>    </span><span class=p>]</span>
 <span class=p>}</span>
-</code></pre></div> </details> <h2 id=see-also>See also<a class=headerlink href=#see-also title="Permanent link">&para;</a></h2> <ul> <li><a href="https://tools.ietf.org/html/rfc6902"><abbr title="Request for Comments">RFC</abbr> 6902 (<abbr title="JavaScript Object Notation">JSON</abbr> Patch)</a></li> <li><a href="https://tools.ietf.org/html/rfc6901"><abbr title="Request for Comments">RFC</abbr> 6901 (<abbr title="JavaScript Object Notation">JSON</abbr> Pointer)</a></li> <li><a href=../patch/ >patch</a> applies a <abbr title="JavaScript Object Notation">JSON</abbr> Merge Patch</li> <li><a href=../merge_patch/ >merge_patch</a> applies a <abbr title="JavaScript Object Notation">JSON</abbr> Merge Patch</li> </ul> <h2 id=version-history>Version history<a class=headerlink href=#version-history title="Permanent link">&para;</a></h2> <ul> <li>Added in version 3.11.0.</li> </ul> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 23, 2026 11:16:18 UTC">June 23, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
+</code></pre></div> </details> <h2 id=see-also>See also<a class=headerlink href=#see-also title="Permanent link">&para;</a></h2> <ul> <li><a href="https://tools.ietf.org/html/rfc6902"><abbr title="Request for Comments">RFC</abbr> 6902 (<abbr title="JavaScript Object Notation">JSON</abbr> Patch)</a></li> <li><a href="https://tools.ietf.org/html/rfc6901"><abbr title="Request for Comments">RFC</abbr> 6901 (<abbr title="JavaScript Object Notation">JSON</abbr> Pointer)</a></li> <li><a href=../patch/ >patch</a> applies a <abbr title="JavaScript Object Notation">JSON</abbr> Patch</li> <li><a href=../merge_patch/ >merge_patch</a> applies a <abbr title="JavaScript Object Notation">JSON</abbr> Merge Patch</li> </ul> <h2 id=version-history>Version history<a class=headerlink href=#version-history title="Permanent link">&para;</a></h2> <ul> <li>Added in version 3.11.0.</li> </ul> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 29, 2026 20:15:18 UTC">June 29, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
diff --git a/api/basic_json/push_back/index.html b/api/basic_json/push_back/index.html
index 3ae4384..07cca8d 100644
--- a/api/basic_json/push_back/index.html
+++ b/api/basic_json/push_back/index.html
@@ -7,7 +7,7 @@
 
 <span class=c1>// (3)</span>
 <span class=kt>void</span><span class=w> </span><span class=nf>push_back</span><span class=p>(</span><span class=n>initializer_list_t</span><span class=w> </span><span class=n>init</span><span class=p>);</span>
-</code></pre></div> <ol> <li> <p>Appends the given element <code>val</code> to the end of the <abbr title="JavaScript Object Notation">JSON</abbr> array. If the function is called on a <abbr title="JavaScript Object Notation">JSON</abbr> null value, an empty array is created before appending <code>val</code>.</p> </li> <li> <p>Inserts the given element <code>val</code> to the <abbr title="JavaScript Object Notation">JSON</abbr> object. If the function is called on a <abbr title="JavaScript Object Notation">JSON</abbr> null value, an empty object is created before inserting <code>val</code>.</p> </li> <li> <p>This function allows using <code>push_back</code> with an initializer list. In case</p> <ol> <li>the current value is an object,</li> <li>the initializer list <code>init</code> contains only two elements, and</li> <li>the first element of <code>init</code> is a string,</li> </ol> <p><code>init</code> is converted into an object element and added using <code>push_back(const typename object_t::value_type&amp;)</code>. Otherwise, <code>init</code> is converted to a <abbr title="JavaScript Object Notation">JSON</abbr> value and added using <code>push_back(basic_json&amp;&amp;)</code>.</p> </li> </ol> <h2 id=iterator-invalidation>Iterator invalidation<a class=headerlink href=#iterator-invalidation title="Permanent link">&para;</a></h2> <p>For all cases where an element is added to an <strong>array</strong>, a reallocation can happen, in which case all iterators (including the <a href=../end/ ><code>end()</code></a> iterator) and all references to the elements are invalidated. Otherwise, only the <a href=../end/ ><code>end()</code></a> iterator is invalidated.</p> <p>For <a href=../../ordered_json/ ><code>ordered_json</code></a>, also adding an element to an <strong>object</strong> can yield a reallocation which again invalidates all iterators and all references.</p> <h2 id=parameters>Parameters<a class=headerlink href=#parameters title="Permanent link">&para;</a></h2> <dl> <dt><code>val</code> (in)</dt> <dd>the value to add to the <abbr title="JavaScript Object Notation">JSON</abbr> array/object</dd> <dt><code>init</code> (in)</dt> <dd>an initializer list</dd> </dl> <h2 id=exceptions>Exceptions<a class=headerlink href=#exceptions title="Permanent link">&para;</a></h2> <p>All functions can throw the following exception: - Throws <a href=../../../home/exceptions/#jsonexceptiontype_error308><code>type_error.308</code></a> when called on a type other than <abbr title="JavaScript Object Notation">JSON</abbr> array or null; example: <code>"cannot use push_back() with number"</code></p> <h2 id=complexity>Complexity<a class=headerlink href=#complexity title="Permanent link">&para;</a></h2> <ol> <li>Amortized constant.</li> <li>Logarithmic in the size of the container, O(log(<code>size()</code>)).</li> <li>Linear in the size of the initializer list <code>init</code>.</li> </ol> <h2 id=notes>Notes<a class=headerlink href=#notes title="Permanent link">&para;</a></h2> <p>(3) This function is required to resolve an ambiguous overload error, because pairs like <code>{"key", "value"}</code> can be both interpreted as <code>object_t::value_type</code> or <code>std::initializer_list&lt;basic_json&gt;</code>, see <a href="https://github.com/nlohmann/json/issues/235">#235</a> for more information.</p> <h2 id=examples>Examples<a class=headerlink href=#examples title="Permanent link">&para;</a></h2> <details class=example> <summary>Example: (1) add element to array</summary> <p>The example shows how <code>push_back()</code> and <code>+=</code> can be used to add elements to a <abbr title="JavaScript Object Notation">JSON</abbr> array. Note how the <code>null</code> value was silently converted to a <abbr title="JavaScript Object Notation">JSON</abbr> array.</p> <div class=highlight><pre><span></span><code><span class=cp>#include</span><span class=w> </span><span class=cpf>&lt;iostream&gt;</span>
+</code></pre></div> <ol> <li> <p>Appends the given element <code>val</code> to the end of the <abbr title="JavaScript Object Notation">JSON</abbr> array. If the function is called on a <abbr title="JavaScript Object Notation">JSON</abbr> null value, an empty array is created before appending <code>val</code>.</p> </li> <li> <p>Inserts the given element <code>val</code> to the <abbr title="JavaScript Object Notation">JSON</abbr> object. If the function is called on a <abbr title="JavaScript Object Notation">JSON</abbr> null value, an empty object is created before inserting <code>val</code>.</p> </li> <li> <p>This function allows using <code>push_back</code> with an initializer list. In case</p> <ol> <li>the current value is an object,</li> <li>the initializer list <code>init</code> contains only two elements, and</li> <li>the first element of <code>init</code> is a string,</li> </ol> <p><code>init</code> is converted into an object element and added using <code>push_back(const typename object_t::value_type&amp;)</code>. Otherwise, <code>init</code> is converted to a <abbr title="JavaScript Object Notation">JSON</abbr> value and added using <code>push_back(basic_json&amp;&amp;)</code>.</p> </li> </ol> <h2 id=iterator-invalidation>Iterator invalidation<a class=headerlink href=#iterator-invalidation title="Permanent link">&para;</a></h2> <p>For all cases where an element is added to an <strong>array</strong>, a reallocation can happen, in which case all iterators (including the <a href=../end/ ><code>end()</code></a> iterator) and all references to the elements are invalidated. Otherwise, only the <a href=../end/ ><code>end()</code></a> iterator is invalidated.</p> <p>For <a href=../../ordered_json/ ><code>ordered_json</code></a>, also adding an element to an <strong>object</strong> can yield a reallocation which again invalidates all iterators and all references.</p> <h2 id=parameters>Parameters<a class=headerlink href=#parameters title="Permanent link">&para;</a></h2> <dl> <dt><code>val</code> (in)</dt> <dd>the value to add to the <abbr title="JavaScript Object Notation">JSON</abbr> array/object</dd> <dt><code>init</code> (in)</dt> <dd>an initializer list</dd> </dl> <h2 id=exceptions>Exceptions<a class=headerlink href=#exceptions title="Permanent link">&para;</a></h2> <ol> <li>Throws <a href=../../../home/exceptions/#jsonexceptiontype_error308><code>type_error.308</code></a> when called on a type other than <abbr title="JavaScript Object Notation">JSON</abbr> array or null; example: <code>"cannot use push_back() with number"</code></li> <li>Throws <a href=../../../home/exceptions/#jsonexceptiontype_error308><code>type_error.308</code></a> when called on a type other than <abbr title="JavaScript Object Notation">JSON</abbr> object or null; example: <code>"cannot use push_back() with number"</code></li> <li>Throws <a href=../../../home/exceptions/#jsonexceptiontype_error308><code>type_error.308</code></a> when called on a type other than <abbr title="JavaScript Object Notation">JSON</abbr> array or null; example: <code>"cannot use push_back() with number"</code></li> </ol> <h2 id=complexity>Complexity<a class=headerlink href=#complexity title="Permanent link">&para;</a></h2> <ol> <li>Amortized constant.</li> <li>Logarithmic in the size of the container, O(log(<code>size()</code>)).</li> <li>Linear in the size of the initializer list <code>init</code>.</li> </ol> <h2 id=notes>Notes<a class=headerlink href=#notes title="Permanent link">&para;</a></h2> <p>(3) This function is required to resolve an ambiguous overload error, because pairs like <code>{"key", "value"}</code> can be both interpreted as <code>object_t::value_type</code> or <code>std::initializer_list&lt;basic_json&gt;</code>, see <a href="https://github.com/nlohmann/json/issues/235">#235</a> for more information.</p> <h2 id=examples>Examples<a class=headerlink href=#examples title="Permanent link">&para;</a></h2> <details class=example> <summary>Example: (1) add element to array</summary> <p>The example shows how <code>push_back()</code> and <code>+=</code> can be used to add elements to a <abbr title="JavaScript Object Notation">JSON</abbr> array. Note how the <code>null</code> value was silently converted to a <abbr title="JavaScript Object Notation">JSON</abbr> array.</p> <div class=highlight><pre><span></span><code><span class=cp>#include</span><span class=w> </span><span class=cpf>&lt;iostream&gt;</span>
 <span class=cp>#include</span><span class=w> </span><span class=cpf>&lt;nlohmann/json.hpp&gt;</span>
 
 <span class=k>using</span><span class=w> </span><span class=n>json</span><span class=w> </span><span class=o>=</span><span class=w> </span><span class=n>nlohmann</span><span class=o>::</span><span class=n>json</span><span class=p>;</span>
@@ -96,4 +96,4 @@
 <span class=kc>null</span>
 <span class=p>{</span><span class=nt>&quot;four&quot;</span><span class=p>:</span><span class=mi>4</span><span class=p>,</span><span class=nt>&quot;one&quot;</span><span class=p>:</span><span class=mi>1</span><span class=p>,</span><span class=nt>&quot;three&quot;</span><span class=p>:</span><span class=mi>3</span><span class=p>,</span><span class=nt>&quot;two&quot;</span><span class=p>:</span><span class=mi>2</span><span class=p>}</span>
 <span class=p>[[</span><span class=s2>&quot;five&quot;</span><span class=p>,</span><span class=mi>5</span><span class=p>]]</span>
-</code></pre></div> </details> <h2 id=see-also>See also<a class=headerlink href=#see-also title="Permanent link">&para;</a></h2> <ul> <li><a href=../emplace_back/ >emplace_back</a> add a value to an array</li> <li><a href=../operator%2B%3D/ >operator+=</a> add a value to an array/object</li> </ul> <h2 id=version-history>Version history<a class=headerlink href=#version-history title="Permanent link">&para;</a></h2> <ol> <li>Since version 1.0.0.</li> <li>Since version 1.0.0.</li> <li>Since version 2.0.0.</li> </ol> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 23, 2026 11:16:18 UTC">June 23, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
+</code></pre></div> </details> <h2 id=see-also>See also<a class=headerlink href=#see-also title="Permanent link">&para;</a></h2> <ul> <li><a href=../emplace_back/ >emplace_back</a> add a value to an array</li> <li><a href=../operator%2B%3D/ >operator+=</a> add a value to an array/object</li> </ul> <h2 id=version-history>Version history<a class=headerlink href=#version-history title="Permanent link">&para;</a></h2> <ol> <li>Since version 1.0.0.</li> <li>Since version 1.0.0.</li> <li>Since version 2.0.0.</li> </ol> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 29, 2026 20:15:18 UTC">June 29, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
diff --git a/api/basic_json/rbegin/index.html b/api/basic_json/rbegin/index.html
index bb75fe6..fcb2553 100644
--- a/api/basic_json/rbegin/index.html
+++ b/api/basic_json/rbegin/index.html
@@ -1,6 +1,6 @@
 <!doctype html><html lang=en class=no-js> <head><meta charset=utf-8><meta name=viewport content="width=device-width,initial-scale=1"><meta name=author content="Niels Lohmann"><link href="https://json.nlohmann.me/api/basic_json/rbegin/" rel="canonical"><link href=../push_back/ rel=prev><link href=../rend/ rel=next><link rel=icon href=../../../assets/images/favicon.png><meta name=generator content="mkdocs-1.6.1, mkdocs-material-9.7.6"><title>rbegin - JSON for Modern C++</title><link rel=stylesheet href=../../../assets/stylesheets/main.484c7ddc.min.css><link rel=stylesheet href=../../../assets/stylesheets/palette.ab4e12ef.min.css><link rel="stylesheet" href="../../../assets/external/fonts.googleapis.com/css.61a430c9.css"><style>:root{--md-text-font:"Roboto";--md-code-font:"JetBrains Mono"}</style><link rel=stylesheet href=../../../css/custom.css><script>__md_scope=new URL("../../..",location),__md_hash=e=>[...e].reduce(((e,_)=>(e<<5)-e+_.charCodeAt(0)),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script></head> <body dir=ltr data-md-color-scheme=default data-md-color-primary=indigo data-md-color-accent=indigo> <input class=md-toggle data-md-toggle=drawer type=checkbox id=__drawer autocomplete=off> <input class=md-toggle data-md-toggle=search type=checkbox id=__search autocomplete=off> <label class=md-overlay for=__drawer></label> <div data-md-component=skip> <a href=#nlohmannbasic_jsonrbegin class=md-skip> Skip to content </a> </div> <div data-md-component=announce> </div> <header class=md-header data-md-component=header> <nav class="md-header__inner md-grid" aria-label=Header> <a href=../../.. title="JSON for Modern C++" class="md-header__button md-logo" aria-label="JSON for Modern C++" data-md-component=logo> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54"/></svg> </a> <label class="md-header__button md-icon" for=__drawer> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M3 6h18v2H3zm0 5h18v2H3zm0 5h18v2H3z"/></svg> </label> <div class=md-header__title data-md-component=header-title> <div class=md-header__ellipsis> <div class=md-header__topic> <span class=md-ellipsis> JSON for Modern C++ </span> </div> <div class=md-header__topic data-md-component=header-topic> <span class=md-ellipsis> rbegin </span> </div> </div> </div> <form class=md-header__option data-md-component=palette> <input class=md-option data-md-color-media="(prefers-color-scheme: light)" data-md-color-scheme=default data-md-color-primary=indigo data-md-color-accent=indigo aria-label="Switch to dark mode" type=radio name=__palette id=__palette_0> <label class="md-header__button md-icon" title="Switch to dark mode" for=__palette_1 hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a4 4 0 0 0-4 4 4 4 0 0 0 4 4 4 4 0 0 0 4-4 4 4 0 0 0-4-4m0 10a6 6 0 0 1-6-6 6 6 0 0 1 6-6 6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12z"/></svg> </label> <input class=md-option data-md-color-media="(prefers-color-scheme: dark)" data-md-color-scheme=slate data-md-color-primary=indigo data-md-color-accent=indigo aria-label="Switch to light mode" type=radio name=__palette id=__palette_1> <label class="md-header__button md-icon" title="Switch to light mode" for=__palette_0 hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 18c-.89 0-1.74-.2-2.5-.55C11.56 16.5 13 14.42 13 12s-1.44-4.5-3.5-5.45C10.26 6.2 11.11 6 12 6a6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12z"/></svg> </label> </form> <script>var palette=__md_get("__palette");if(palette&&palette.color){if("(prefers-color-scheme)"===palette.color.media){var media=matchMedia("(prefers-color-scheme: light)"),input=document.querySelector(media.matches?"[data-md-color-media='(prefers-color-scheme: light)']":"[data-md-color-media='(prefers-color-scheme: dark)']");palette.color.media=input.getAttribute("data-md-color-media"),palette.color.scheme=input.getAttribute("data-md-color-scheme"),palette.color.primary=input.getAttribute("data-md-color-primary"),palette.color.accent=input.getAttribute("data-md-color-accent")}for(var[key,value]of Object.entries(palette.color))document.body.setAttribute("data-md-color-"+key,value)}</script> <label class="md-header__button md-icon" for=__search> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg> </label> <div class=md-search data-md-component=search role=dialog> <label class=md-search__overlay for=__search></label> <div class=md-search__inner role=search> <form class=md-search__form name=search> <input type=text class=md-search__input name=query aria-label=Search placeholder=Search autocapitalize=off autocorrect=off autocomplete=off spellcheck=false data-md-component=search-query required> <label class="md-search__icon md-icon" for=__search> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11z"/></svg> </label> <nav class=md-search__options aria-label=Search> <button type=reset class="md-search__icon md-icon" title=Clear aria-label=Clear tabindex=-1> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z"/></svg> </button> </nav> </form> <div class=md-search__output> <div class=md-search__scrollwrap tabindex=0 data-md-scrollfix> <div class=md-search-result data-md-component=search-result> <div class=md-search-result__meta> Initializing search </div> <ol class=md-search-result__list role=presentation></ol> </div> </div> </div> </div> </div> <div class=md-header__source> <a href="https://github.com/nlohmann/json" title="Go to repository" class="md-source" data-md-component="source"> <div class="md-source__icon md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </div> <div class=md-source__repository> nlohmann/json </div> </a> </div> </nav> </header> <div class=md-container data-md-component=container> <nav class=md-tabs aria-label=Tabs data-md-component=tabs> <div class=md-grid> <ul class=md-tabs__list> <li class=md-tabs__item> <a href=../../.. class=md-tabs__link> Home </a> </li> <li class=md-tabs__item> <a href=../../../features/arbitrary_types/ class=md-tabs__link> Features </a> </li> <li class=md-tabs__item> <a href=../../../integration/ class=md-tabs__link> Integration </a> </li> <li class="md-tabs__item md-tabs__item--active"> <a href=../ class=md-tabs__link> API Documentation </a> </li> <li class=md-tabs__item> <a href=../../../community/ class=md-tabs__link> Community </a> </li> </ul> </div> </nav> <main class=md-main data-md-component=main> <div class="md-main__inner md-grid"> <div class="md-sidebar md-sidebar--primary" data-md-component=sidebar data-md-type=navigation> <div class=md-sidebar__scrollwrap> <div class=md-sidebar__inner> <nav class="md-nav md-nav--primary md-nav--lifted" aria-label=Navigation data-md-level=0> <label class=md-nav__title for=__drawer> <a href=../../.. title="JSON for Modern C++" class="md-nav__button md-logo" aria-label="JSON for Modern C++" data-md-component=logo> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54"/></svg> </a> JSON for Modern C++ </label> <div class=md-nav__source> <a href="https://github.com/nlohmann/json" title="Go to repository" class="md-source" data-md-component="source"> <div class="md-source__icon md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </div> <div class=md-source__repository> nlohmann/json </div> </a> </div> <ul class=md-nav__list data-md-scrollfix> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_1> <div class="md-nav__link md-nav__container"> <a href=../../.. class="md-nav__link "> <span class=md-ellipsis> Home </span> </a> <label class="md-nav__link " for=__nav_1 id=__nav_1_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_1_label aria-expanded=false> <label class=md-nav__title for=__nav_1> <span class="md-nav__icon md-icon"></span> Home </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../home/license/ class=md-nav__link> <span class=md-ellipsis> License </span> </a> </li> <li class=md-nav__item> <a href=../../../home/faq/ class=md-nav__link> <span class=md-ellipsis> FAQ </span> </a> </li> <li class=md-nav__item> <a href=../../../home/exceptions/ class=md-nav__link> <span class=md-ellipsis> Exceptions </span> </a> </li> <li class=md-nav__item> <a href=../../../home/releases/ class=md-nav__link> <span class=md-ellipsis> Releases </span> </a> </li> <li class=md-nav__item> <a href=../../../home/design_goals/ class=md-nav__link> <span class=md-ellipsis> Design goals </span> </a> </li> <li class=md-nav__item> <a href=../../../home/architecture/ class=md-nav__link> <span class=md-ellipsis> Architecture </span> </a> </li> <li class=md-nav__item> <a href=../../../home/customers/ class=md-nav__link> <span class=md-ellipsis> Customers </span> </a> </li> <li class=md-nav__item> <a href=../../../home/sponsors/ class=md-nav__link> <span class=md-ellipsis> Sponsors </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2> <label class=md-nav__link for=__nav_2 id=__nav_2_label tabindex=0> <span class=md-ellipsis> Features </span> <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_2_label aria-expanded=false> <label class=md-nav__title for=__nav_2> <span class="md-nav__icon md-icon"></span> Features </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/arbitrary_types/ class=md-nav__link> <span class=md-ellipsis> Arbitrary Type Conversions </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_2> <div class="md-nav__link md-nav__container"> <a href=../../../features/binary_formats/ class="md-nav__link "> <span class=md-ellipsis> Binary Formats </span> </a> <label class="md-nav__link " for=__nav_2_2 id=__nav_2_2_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_2_label aria-expanded=false> <label class=md-nav__title for=__nav_2_2> <span class="md-nav__icon md-icon"></span> Binary Formats </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/binary_formats/bjdata/ class=md-nav__link> <span class=md-ellipsis> BJData </span> </a> </li> <li class=md-nav__item> <a href=../../../features/binary_formats/bson/ class=md-nav__link> <span class=md-ellipsis> BSON </span> </a> </li> <li class=md-nav__item> <a href=../../../features/binary_formats/cbor/ class=md-nav__link> <span class=md-ellipsis> CBOR </span> </a> </li> <li class=md-nav__item> <a href=../../../features/binary_formats/messagepack/ class=md-nav__link> <span class=md-ellipsis> MessagePack </span> </a> </li> <li class=md-nav__item> <a href=../../../features/binary_formats/ubjson/ class=md-nav__link> <span class=md-ellipsis> UBJSON </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../../features/binary_values/ class=md-nav__link> <span class=md-ellipsis> Binary Values </span> </a> </li> <li class=md-nav__item> <a href=../../../features/comments/ class=md-nav__link> <span class=md-ellipsis> Comments </span> </a> </li> <li class=md-nav__item> <a href=../../../features/trailing_commas/ class=md-nav__link> <span class=md-ellipsis> Trailing Commas </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_6> <div class="md-nav__link md-nav__container"> <a href=../../../features/element_access/ class="md-nav__link "> <span class=md-ellipsis> Element Access </span> </a> <label class="md-nav__link " for=__nav_2_6 id=__nav_2_6_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_6_label aria-expanded=false> <label class=md-nav__title for=__nav_2_6> <span class="md-nav__icon md-icon"></span> Element Access </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/element_access/unchecked_access/ class=md-nav__link> <span class=md-ellipsis> Unchecked access: operator[] </span> </a> </li> <li class=md-nav__item> <a href=../../../features/element_access/checked_access/ class=md-nav__link> <span class=md-ellipsis> Checked access: at </span> </a> </li> <li class=md-nav__item> <a href=../../../features/element_access/default_value/ class=md-nav__link> <span class=md-ellipsis> Access with default value: value </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../../features/iterators/ class=md-nav__link> <span class=md-ellipsis> Iterators </span> </a> </li> <li class=md-nav__item> <a href=../../../features/json_pointer/ class=md-nav__link> <span class=md-ellipsis> JSON Pointer </span> </a> </li> <li class=md-nav__item> <a href=../../../features/json_patch/ class=md-nav__link> <span class=md-ellipsis> JSON Patch and Diff </span> </a> </li> <li class=md-nav__item> <a href=../../../features/merge_patch/ class=md-nav__link> <span class=md-ellipsis> JSON Merge Patch </span> </a> </li> <li class=md-nav__item> <a href=../../../features/modules/ class=md-nav__link> <span class=md-ellipsis> Modules </span> </a> </li> <li class=md-nav__item> <a href=../../../features/namespace/ class=md-nav__link> <span class=md-ellipsis> nlohmann Namespace </span> </a> </li> <li class=md-nav__item> <a href=../../../features/object_order/ class=md-nav__link> <span class=md-ellipsis> Object Order </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_14> <div class="md-nav__link md-nav__container"> <a href=../../../features/parsing/ class="md-nav__link "> <span class=md-ellipsis> Parsing </span> </a> <label class="md-nav__link " for=__nav_2_14 id=__nav_2_14_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_14_label aria-expanded=false> <label class=md-nav__title for=__nav_2_14> <span class="md-nav__icon md-icon"></span> Parsing </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/parsing/json_lines/ class=md-nav__link> <span class=md-ellipsis> JSON Lines </span> </a> </li> <li class=md-nav__item> <a href=../../../features/parsing/parse_exceptions/ class=md-nav__link> <span class=md-ellipsis> Parsing and Exceptions </span> </a> </li> <li class=md-nav__item> <a href=../../../features/parsing/parser_callbacks/ class=md-nav__link> <span class=md-ellipsis> Parser Callbacks </span> </a> </li> <li class=md-nav__item> <a href=../../../features/parsing/sax_interface/ class=md-nav__link> <span class=md-ellipsis> SAX Interface </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../../features/assertions/ class=md-nav__link> <span class=md-ellipsis> Runtime Assertions </span> </a> </li> <li class=md-nav__item> <a href=../../../features/enum_conversion/ class=md-nav__link> <span class=md-ellipsis> Specializing enum conversion </span> </a> </li> <li class=md-nav__item> <a href=../../../features/macros/ class=md-nav__link> <span class=md-ellipsis> Supported Macros </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_18> <div class="md-nav__link md-nav__container"> <a href=../../../features/types/ class="md-nav__link "> <span class=md-ellipsis> Types </span> </a> <label class="md-nav__link " for=__nav_2_18 id=__nav_2_18_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_18_label aria-expanded=false> <label class=md-nav__title for=__nav_2_18> <span class="md-nav__icon md-icon"></span> Types </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/types/number_handling/ class=md-nav__link> <span class=md-ellipsis> Number Handling </span> </a> </li> </ul> </nav> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_3> <div class="md-nav__link md-nav__container"> <a href=../../../integration/ class="md-nav__link "> <span class=md-ellipsis> Integration </span> </a> <label class="md-nav__link " for=__nav_3 id=__nav_3_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_3_label aria-expanded=false> <label class=md-nav__title for=__nav_3> <span class="md-nav__icon md-icon"></span> Integration </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../integration/migration_guide/ class=md-nav__link> <span class=md-ellipsis> Migration Guide </span> </a> </li> <li class=md-nav__item> <a href=../../../integration/cmake/ class=md-nav__link> <span class=md-ellipsis> CMake </span> </a> </li> <li class=md-nav__item> <a href=../../../integration/package_managers/ class=md-nav__link> <span class=md-ellipsis> Package Managers </span> </a> </li> <li class=md-nav__item> <a href=../../../integration/pkg-config/ class=md-nav__link> <span class=md-ellipsis> Pkg-config </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--active md-nav__item--section md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4 checked> <label class=md-nav__link for=__nav_4 id=__nav_4_label tabindex> <span class=md-ellipsis> API Documentation </span> <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_4_label aria-expanded=true> <label class=md-nav__title for=__nav_4> <span class="md-nav__icon md-icon"></span> API Documentation </label> <ul class=md-nav__list data-md-scrollfix> <li class="md-nav__item md-nav__item--active md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_1 checked> <div class="md-nav__link md-nav__container"> <a href=../ class="md-nav__link "> <span class=md-ellipsis> basic_json </span> </a> <label class="md-nav__link " for=__nav_4_1 id=__nav_4_1_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_1_label aria-expanded=true> <label class=md-nav__title for=__nav_4_1> <span class="md-nav__icon md-icon"></span> basic_json </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../basic_json/ class=md-nav__link> <span class=md-ellipsis> (Constructor) </span> </a> </li> <li class=md-nav__item> <a href=../~basic_json/ class=md-nav__link> <span class=md-ellipsis> (Destructor) </span> </a> </li> <li class=md-nav__item> <a href=../accept/ class=md-nav__link> <span class=md-ellipsis> accept </span> </a> </li> <li class=md-nav__item> <a href=../array/ class=md-nav__link> <span class=md-ellipsis> array </span> </a> </li> <li class=md-nav__item> <a href=../array_t/ class=md-nav__link> <span class=md-ellipsis> array_t </span> </a> </li> <li class=md-nav__item> <a href=../at/ class=md-nav__link> <span class=md-ellipsis> at </span> </a> </li> <li class=md-nav__item> <a href=../back/ class=md-nav__link> <span class=md-ellipsis> back </span> </a> </li> <li class=md-nav__item> <a href=../begin/ class=md-nav__link> <span class=md-ellipsis> begin </span> </a> </li> <li class=md-nav__item> <a href=../binary/ class=md-nav__link> <span class=md-ellipsis> binary </span> </a> </li> <li class=md-nav__item> <a href=../binary_t/ class=md-nav__link> <span class=md-ellipsis> binary_t </span> </a> </li> <li class=md-nav__item> <a href=../boolean_t/ class=md-nav__link> <span class=md-ellipsis> boolean_t </span> </a> </li> <li class=md-nav__item> <a href=../cbegin/ class=md-nav__link> <span class=md-ellipsis> cbegin </span> </a> </li> <li class=md-nav__item> <a href=../cbor_tag_handler_t/ class=md-nav__link> <span class=md-ellipsis> cbor_tag_handler_t </span> </a> </li> <li class=md-nav__item> <a href=../cend/ class=md-nav__link> <span class=md-ellipsis> cend </span> </a> </li> <li class=md-nav__item> <a href=../clear/ class=md-nav__link> <span class=md-ellipsis> clear </span> </a> </li> <li class=md-nav__item> <a href=../contains/ class=md-nav__link> <span class=md-ellipsis> contains </span> </a> </li> <li class=md-nav__item> <a href=../count/ class=md-nav__link> <span class=md-ellipsis> count </span> </a> </li> <li class=md-nav__item> <a href=../crbegin/ class=md-nav__link> <span class=md-ellipsis> crbegin </span> </a> </li> <li class=md-nav__item> <a href=../crend/ class=md-nav__link> <span class=md-ellipsis> crend </span> </a> </li> <li class=md-nav__item> <a href=../default_object_comparator_t/ class=md-nav__link> <span class=md-ellipsis> default_object_comparator_t </span> </a> </li> <li class=md-nav__item> <a href=../diff/ class=md-nav__link> <span class=md-ellipsis> diff </span> </a> </li> <li class=md-nav__item> <a href=../dump/ class=md-nav__link> <span class=md-ellipsis> dump </span> </a> </li> <li class=md-nav__item> <a href=../emplace/ class=md-nav__link> <span class=md-ellipsis> emplace </span> </a> </li> <li class=md-nav__item> <a href=../emplace_back/ class=md-nav__link> <span class=md-ellipsis> emplace_back </span> </a> </li> <li class=md-nav__item> <a href=../empty/ class=md-nav__link> <span class=md-ellipsis> empty </span> </a> </li> <li class=md-nav__item> <a href=../end/ class=md-nav__link> <span class=md-ellipsis> end </span> </a> </li> <li class=md-nav__item> <a href=../end_pos/ class=md-nav__link> <span class=md-ellipsis> end_pos </span> </a> </li> <li class=md-nav__item> <a href=../erase/ class=md-nav__link> <span class=md-ellipsis> erase </span> </a> </li> <li class=md-nav__item> <a href=../error_handler_t/ class=md-nav__link> <span class=md-ellipsis> error_handler_t </span> </a> </li> <li class=md-nav__item> <a href=../exception/ class=md-nav__link> <span class=md-ellipsis> exception </span> </a> </li> <li class=md-nav__item> <a href=../find/ class=md-nav__link> <span class=md-ellipsis> find </span> </a> </li> <li class=md-nav__item> <a href=../flatten/ class=md-nav__link> <span class=md-ellipsis> flatten </span> </a> </li> <li class=md-nav__item> <a href=../from_bjdata/ class=md-nav__link> <span class=md-ellipsis> from_bjdata </span> </a> </li> <li class=md-nav__item> <a href=../from_bson/ class=md-nav__link> <span class=md-ellipsis> from_bson </span> </a> </li> <li class=md-nav__item> <a href=../from_cbor/ class=md-nav__link> <span class=md-ellipsis> from_cbor </span> </a> </li> <li class=md-nav__item> <a href=../from_msgpack/ class=md-nav__link> <span class=md-ellipsis> from_msgpack </span> </a> </li> <li class=md-nav__item> <a href=../from_ubjson/ class=md-nav__link> <span class=md-ellipsis> from_ubjson </span> </a> </li> <li class=md-nav__item> <a href=../front/ class=md-nav__link> <span class=md-ellipsis> front </span> </a> </li> <li class=md-nav__item> <a href=../get/ class=md-nav__link> <span class=md-ellipsis> get </span> </a> </li> <li class=md-nav__item> <a href=../get_allocator/ class=md-nav__link> <span class=md-ellipsis> get_allocator </span> </a> </li> <li class=md-nav__item> <a href=../get_binary/ class=md-nav__link> <span class=md-ellipsis> get_binary </span> </a> </li> <li class=md-nav__item> <a href=../get_ptr/ class=md-nav__link> <span class=md-ellipsis> get_ptr </span> </a> </li> <li class=md-nav__item> <a href=../get_ref/ class=md-nav__link> <span class=md-ellipsis> get_ref </span> </a> </li> <li class=md-nav__item> <a href=../get_to/ class=md-nav__link> <span class=md-ellipsis> get_to </span> </a> </li> <li class=md-nav__item> <a href=../std_hash/ class=md-nav__link> <span class=md-ellipsis> std::hash&lt;basic_json&gt; </span> </a> </li> <li class=md-nav__item> <a href=../input_format_t/ class=md-nav__link> <span class=md-ellipsis> input_format_t </span> </a> </li> <li class=md-nav__item> <a href=../insert/ class=md-nav__link> <span class=md-ellipsis> insert </span> </a> </li> <li class=md-nav__item> <a href=../invalid_iterator/ class=md-nav__link> <span class=md-ellipsis> invalid_iterator </span> </a> </li> <li class=md-nav__item> <a href=../is_array/ class=md-nav__link> <span class=md-ellipsis> is_array </span> </a> </li> <li class=md-nav__item> <a href=../is_binary/ class=md-nav__link> <span class=md-ellipsis> is_binary </span> </a> </li> <li class=md-nav__item> <a href=../is_boolean/ class=md-nav__link> <span class=md-ellipsis> is_boolean </span> </a> </li> <li class=md-nav__item> <a href=../is_discarded/ class=md-nav__link> <span class=md-ellipsis> is_discarded </span> </a> </li> <li class=md-nav__item> <a href=../is_null/ class=md-nav__link> <span class=md-ellipsis> is_null </span> </a> </li> <li class=md-nav__item> <a href=../is_number/ class=md-nav__link> <span class=md-ellipsis> is_number </span> </a> </li> <li class=md-nav__item> <a href=../is_number_float/ class=md-nav__link> <span class=md-ellipsis> is_number_float </span> </a> </li> <li class=md-nav__item> <a href=../is_number_integer/ class=md-nav__link> <span class=md-ellipsis> is_number_integer </span> </a> </li> <li class=md-nav__item> <a href=../is_number_unsigned/ class=md-nav__link> <span class=md-ellipsis> is_number_unsigned </span> </a> </li> <li class=md-nav__item> <a href=../is_object/ class=md-nav__link> <span class=md-ellipsis> is_object </span> </a> </li> <li class=md-nav__item> <a href=../is_primitive/ class=md-nav__link> <span class=md-ellipsis> is_primitive </span> </a> </li> <li class=md-nav__item> <a href=../is_string/ class=md-nav__link> <span class=md-ellipsis> is_string </span> </a> </li> <li class=md-nav__item> <a href=../is_structured/ class=md-nav__link> <span class=md-ellipsis> is_structured </span> </a> </li> <li class=md-nav__item> <a href=../items/ class=md-nav__link> <span class=md-ellipsis> items </span> </a> </li> <li class=md-nav__item> <a href=../json_base_class_t/ class=md-nav__link> <span class=md-ellipsis> json_base_class_t </span> </a> </li> <li class=md-nav__item> <a href=../json_serializer/ class=md-nav__link> <span class=md-ellipsis> json_serializer </span> </a> </li> <li class=md-nav__item> <a href=../max_size/ class=md-nav__link> <span class=md-ellipsis> max_size </span> </a> </li> <li class=md-nav__item> <a href=../meta/ class=md-nav__link> <span class=md-ellipsis> meta </span> </a> </li> <li class=md-nav__item> <a href=../merge_patch/ class=md-nav__link> <span class=md-ellipsis> merge_patch </span> </a> </li> <li class=md-nav__item> <a href=../number_float_t/ class=md-nav__link> <span class=md-ellipsis> number_float_t </span> </a> </li> <li class=md-nav__item> <a href=../number_integer_t/ class=md-nav__link> <span class=md-ellipsis> number_integer_t </span> </a> </li> <li class=md-nav__item> <a href=../number_unsigned_t/ class=md-nav__link> <span class=md-ellipsis> number_unsigned_t </span> </a> </li> <li class=md-nav__item> <a href=../object/ class=md-nav__link> <span class=md-ellipsis> object </span> </a> </li> <li class=md-nav__item> <a href=../object_comparator_t/ class=md-nav__link> <span class=md-ellipsis> object_comparator_t </span> </a> </li> <li class=md-nav__item> <a href=../object_t/ class=md-nav__link> <span class=md-ellipsis> object_t </span> </a> </li> <li class=md-nav__item> <a href=../operator_ValueType/ class=md-nav__link> <span class=md-ellipsis> operator ValueType </span> </a> </li> <li class=md-nav__item> <a href=../operator_value_t/ class=md-nav__link> <span class=md-ellipsis> operator value_t </span> </a> </li> <li class=md-nav__item> <a href=../operator%5B%5D/ class=md-nav__link> <span class=md-ellipsis> operator[] </span> </a> </li> <li class=md-nav__item> <a href=../operator%3D/ class=md-nav__link> <span class=md-ellipsis> operator= </span> </a> </li> <li class=md-nav__item> <a href=../operator%2B%3D/ class=md-nav__link> <span class=md-ellipsis> operator+= </span> </a> </li> <li class=md-nav__item> <a href=../operator_eq/ class=md-nav__link> <span class=md-ellipsis> operator== </span> </a> </li> <li class=md-nav__item> <a href=../operator_ne/ class=md-nav__link> <span class=md-ellipsis> operator!= </span> </a> </li> <li class=md-nav__item> <a href=../operator_lt/ class=md-nav__link> <span class=md-ellipsis> operator< </span> </a> </li> <li class=md-nav__item> <a href=../operator_gt/ class=md-nav__link> <span class=md-ellipsis> operator> </span> </a> </li> <li class=md-nav__item> <a href=../operator_le/ class=md-nav__link> <span class=md-ellipsis> operator<= </span> </a> </li> <li class=md-nav__item> <a href=../operator_ge/ class=md-nav__link> <span class=md-ellipsis> operator>= </span> </a> </li> <li class=md-nav__item> <a href=../operator_spaceship/ class=md-nav__link> <span class=md-ellipsis> operator<=> </span> </a> </li> <li class=md-nav__item> <a href=../out_of_range/ class=md-nav__link> <span class=md-ellipsis> out_of_range </span> </a> </li> <li class=md-nav__item> <a href=../other_error/ class=md-nav__link> <span class=md-ellipsis> other_error </span> </a> </li> <li class=md-nav__item> <a href=../parse/ class=md-nav__link> <span class=md-ellipsis> parse </span> </a> </li> <li class=md-nav__item> <a href=../parse_error/ class=md-nav__link> <span class=md-ellipsis> parse_error </span> </a> </li> <li class=md-nav__item> <a href=../parse_event_t/ class=md-nav__link> <span class=md-ellipsis> parse_event_t </span> </a> </li> <li class=md-nav__item> <a href=../parser_callback_t/ class=md-nav__link> <span class=md-ellipsis> parser_callback_t </span> </a> </li> <li class=md-nav__item> <a href=../patch/ class=md-nav__link> <span class=md-ellipsis> patch </span> </a> </li> <li class=md-nav__item> <a href=../patch_inplace/ class=md-nav__link> <span class=md-ellipsis> patch_inplace </span> </a> </li> <li class=md-nav__item> <a href=../push_back/ class=md-nav__link> <span class=md-ellipsis> push_back </span> </a> </li> <li class="md-nav__item md-nav__item--active"> <input class="md-nav__toggle md-toggle" type=checkbox id=__toc> <label class="md-nav__link md-nav__link--active" for=__toc> <span class=md-ellipsis> rbegin </span> <span class="md-nav__icon md-icon"></span> </label> <a href=./ class="md-nav__link md-nav__link--active"> <span class=md-ellipsis> rbegin </span> </a> <nav class="md-nav md-nav--secondary" aria-label="Table of contents"> <label class=md-nav__title for=__toc> <span class="md-nav__icon md-icon"></span> Table of contents </label> <ul class=md-nav__list data-md-component=toc data-md-scrollfix> <li class=md-nav__item> <a href=#return-value class=md-nav__link> <span class=md-ellipsis> Return value </span> </a> </li> <li class=md-nav__item> <a href=#exception-safety class=md-nav__link> <span class=md-ellipsis> Exception safety </span> </a> </li> <li class=md-nav__item> <a href=#complexity class=md-nav__link> <span class=md-ellipsis> Complexity </span> </a> </li> <li class=md-nav__item> <a href=#examples class=md-nav__link> <span class=md-ellipsis> Examples </span> </a> </li> <li class=md-nav__item> <a href=#version-history class=md-nav__link> <span class=md-ellipsis> Version history </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../rend/ class=md-nav__link> <span class=md-ellipsis> rend </span> </a> </li> <li class=md-nav__item> <a href=../sax_parse/ class=md-nav__link> <span class=md-ellipsis> sax_parse </span> </a> </li> <li class=md-nav__item> <a href=../size/ class=md-nav__link> <span class=md-ellipsis> size </span> </a> </li> <li class=md-nav__item> <a href=../start_pos/ class=md-nav__link> <span class=md-ellipsis> start_pos </span> </a> </li> <li class=md-nav__item> <a href=../string_t/ class=md-nav__link> <span class=md-ellipsis> string_t </span> </a> </li> <li class=md-nav__item> <a href=../swap/ class=md-nav__link> <span class=md-ellipsis> swap </span> </a> </li> <li class=md-nav__item> <a href=../std_swap/ class=md-nav__link> <span class=md-ellipsis> std::swap&lt;basic_json&gt; </span> </a> </li> <li class=md-nav__item> <a href=../to_bjdata/ class=md-nav__link> <span class=md-ellipsis> to_bjdata </span> </a> </li> <li class=md-nav__item> <a href=../to_bson/ class=md-nav__link> <span class=md-ellipsis> to_bson </span> </a> </li> <li class=md-nav__item> <a href=../to_cbor/ class=md-nav__link> <span class=md-ellipsis> to_cbor </span> </a> </li> <li class=md-nav__item> <a href=../to_msgpack/ class=md-nav__link> <span class=md-ellipsis> to_msgpack </span> </a> </li> <li class=md-nav__item> <a href=../to_string/ class=md-nav__link> <span class=md-ellipsis> to_string </span> </a> </li> <li class=md-nav__item> <a href=../to_ubjson/ class=md-nav__link> <span class=md-ellipsis> to_ubjson </span> </a> </li> <li class=md-nav__item> <a href=../type/ class=md-nav__link> <span class=md-ellipsis> type </span> </a> </li> <li class=md-nav__item> <a href=../type_error/ class=md-nav__link> <span class=md-ellipsis> type_error </span> </a> </li> <li class=md-nav__item> <a href=../type_name/ class=md-nav__link> <span class=md-ellipsis> type_name </span> </a> </li> <li class=md-nav__item> <a href=../unflatten/ class=md-nav__link> <span class=md-ellipsis> unflatten </span> </a> </li> <li class=md-nav__item> <a href=../update/ class=md-nav__link> <span class=md-ellipsis> update </span> </a> </li> <li class=md-nav__item> <a href=../value/ class=md-nav__link> <span class=md-ellipsis> value </span> </a> </li> <li class=md-nav__item> <a href=../value_t/ class=md-nav__link> <span class=md-ellipsis> value_t </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_2> <div class="md-nav__link md-nav__container"> <a href=../../byte_container_with_subtype/ class="md-nav__link "> <span class=md-ellipsis> byte_container_with_subtype </span> </a> <label class="md-nav__link " for=__nav_4_2 id=__nav_4_2_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_2_label aria-expanded=false> <label class=md-nav__title for=__nav_4_2> <span class="md-nav__icon md-icon"></span> byte_container_with_subtype </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../byte_container_with_subtype/byte_container_with_subtype/ class=md-nav__link> <span class=md-ellipsis> (constructor) </span> </a> </li> <li class=md-nav__item> <a href=../../byte_container_with_subtype/clear_subtype/ class=md-nav__link> <span class=md-ellipsis> clear_subtype </span> </a> </li> <li class=md-nav__item> <a href=../../byte_container_with_subtype/has_subtype/ class=md-nav__link> <span class=md-ellipsis> has_subtype </span> </a> </li> <li class=md-nav__item> <a href=../../byte_container_with_subtype/set_subtype/ class=md-nav__link> <span class=md-ellipsis> set_subtype </span> </a> </li> <li class=md-nav__item> <a href=../../byte_container_with_subtype/subtype/ class=md-nav__link> <span class=md-ellipsis> subtype </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_3> <div class="md-nav__link md-nav__container"> <a href=../../adl_serializer/ class="md-nav__link "> <span class=md-ellipsis> adl_serializer </span> </a> <label class="md-nav__link " for=__nav_4_3 id=__nav_4_3_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_3_label aria-expanded=false> <label class=md-nav__title for=__nav_4_3> <span class="md-nav__icon md-icon"></span> adl_serializer </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../adl_serializer/from_json/ class=md-nav__link> <span class=md-ellipsis> from_json </span> </a> </li> <li class=md-nav__item> <a href=../../adl_serializer/to_json/ class=md-nav__link> <span class=md-ellipsis> to_json </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../json/ class=md-nav__link> <span class=md-ellipsis> json </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_5> <div class="md-nav__link md-nav__container"> <a href=../../json_pointer/ class="md-nav__link "> <span class=md-ellipsis> json_pointer </span> </a> <label class="md-nav__link " for=__nav_4_5 id=__nav_4_5_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_5_label aria-expanded=false> <label class=md-nav__title for=__nav_4_5> <span class="md-nav__icon md-icon"></span> json_pointer </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../json_pointer/json_pointer/ class=md-nav__link> <span class=md-ellipsis> (Constructor) </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/back/ class=md-nav__link> <span class=md-ellipsis> back </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/empty/ class=md-nav__link> <span class=md-ellipsis> empty </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/front/ class=md-nav__link> <span class=md-ellipsis> front </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_string_t/ class=md-nav__link> <span class=md-ellipsis> operator string_t </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_eq/ class=md-nav__link> <span class=md-ellipsis> operator== </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_ne/ class=md-nav__link> <span class=md-ellipsis> operator!= </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_slash/ class=md-nav__link> <span class=md-ellipsis> operator/ </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_slasheq/ class=md-nav__link> <span class=md-ellipsis> operator/= </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/parent_pointer/ class=md-nav__link> <span class=md-ellipsis> parent_pointer </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/pop_back/ class=md-nav__link> <span class=md-ellipsis> pop_back </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/pop_front/ class=md-nav__link> <span class=md-ellipsis> pop_front </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/push_back/ class=md-nav__link> <span class=md-ellipsis> push_back </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/push_front/ class=md-nav__link> <span class=md-ellipsis> push_front </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/string_t/ class=md-nav__link> <span class=md-ellipsis> string_t </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/to_string/ class=md-nav__link> <span class=md-ellipsis> to_string </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_6> <div class="md-nav__link md-nav__container"> <a href=../../json_sax/ class="md-nav__link "> <span class=md-ellipsis> json_sax </span> </a> <label class="md-nav__link " for=__nav_4_6 id=__nav_4_6_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_6_label aria-expanded=false> <label class=md-nav__title for=__nav_4_6> <span class="md-nav__icon md-icon"></span> json_sax </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../json_sax/binary/ class=md-nav__link> <span class=md-ellipsis> binary </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/boolean/ class=md-nav__link> <span class=md-ellipsis> boolean </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/end_array/ class=md-nav__link> <span class=md-ellipsis> end_array </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/end_object/ class=md-nav__link> <span class=md-ellipsis> end_object </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/key/ class=md-nav__link> <span class=md-ellipsis> key </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/null/ class=md-nav__link> <span class=md-ellipsis> null </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/number_float/ class=md-nav__link> <span class=md-ellipsis> number_float </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/number_integer/ class=md-nav__link> <span class=md-ellipsis> number_integer </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/number_unsigned/ class=md-nav__link> <span class=md-ellipsis> number_unsigned </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/parse_error/ class=md-nav__link> <span class=md-ellipsis> parse_error </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/start_array/ class=md-nav__link> <span class=md-ellipsis> start_array </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/start_object/ class=md-nav__link> <span class=md-ellipsis> start_object </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/string/ class=md-nav__link> <span class=md-ellipsis> string </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../operator_ltlt/ class=md-nav__link> <span class=md-ellipsis> operator<<(basic_json), operator<<(json_pointer) </span> </a> </li> <li class=md-nav__item> <a href=../../operator_gtgt/ class=md-nav__link> <span class=md-ellipsis> operator>>(basic_json) </span> </a> </li> <li class=md-nav__item> <a href=../../operator_literal_json/ class=md-nav__link> <span class=md-ellipsis> operator""_json </span> </a> </li> <li class=md-nav__item> <a href=../../operator_literal_json_pointer/ class=md-nav__link> <span class=md-ellipsis> operator""_json_pointer </span> </a> </li> <li class=md-nav__item> <a href=../../ordered_json/ class=md-nav__link> <span class=md-ellipsis> ordered_json </span> </a> </li> <li class=md-nav__item> <a href=../../ordered_map/ class=md-nav__link> <span class=md-ellipsis> ordered_map </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_13> <div class="md-nav__link md-nav__container"> <a href=../../macros/ class="md-nav__link "> <span class=md-ellipsis> macros </span> </a> <label class="md-nav__link " for=__nav_4_13 id=__nav_4_13_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_13_label aria-expanded=false> <label class=md-nav__title for=__nav_4_13> <span class="md-nav__icon md-icon"></span> macros </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../macros/json_assert/ class=md-nav__link> <span class=md-ellipsis> JSON_ASSERT </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_brace_init_copy_semantics/ class=md-nav__link> <span class=md-ellipsis> JSON_BRACE_INIT_COPY_SEMANTICS </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_throw_user/ class=md-nav__link> <span class=md-ellipsis> JSON_CATCH_USER, JSON_THROW_USER, JSON_TRY_USER </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_diagnostics/ class=md-nav__link> <span class=md-ellipsis> JSON_DIAGNOSTICS </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_diagnostic_positions/ class=md-nav__link> <span class=md-ellipsis> JSON_DIAGNOSTIC_POSITIONS </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_disable_enum_serialization/ class=md-nav__link> <span class=md-ellipsis> JSON_DISABLE_ENUM_SERIALIZATION </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_has_cpp_11/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_CPP_11, JSON_HAS_CPP_14, JSON_HAS_CPP_17, JSON_HAS_CPP_20 </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_has_filesystem/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_EXPERIMENTAL_FILESYSTEM, JSON_HAS_FILESYSTEM </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_has_ranges/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_RANGES </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_has_static_rtti/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_STATIC_RTTI </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_has_three_way_comparison/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_THREE_WAY_COMPARISON </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_noexception/ class=md-nav__link> <span class=md-ellipsis> JSON_NOEXCEPTION </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_no_io/ class=md-nav__link> <span class=md-ellipsis> JSON_NO_IO </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_skip_library_version_check/ class=md-nav__link> <span class=md-ellipsis> JSON_SKIP_LIBRARY_VERSION_CHECK </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_skip_unsupported_compiler_check/ class=md-nav__link> <span class=md-ellipsis> JSON_SKIP_UNSUPPORTED_COMPILER_CHECK </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_use_global_udls/ class=md-nav__link> <span class=md-ellipsis> JSON_USE_GLOBAL_UDLS </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_use_implicit_conversions/ class=md-nav__link> <span class=md-ellipsis> JSON_USE_IMPLICIT_CONVERSIONS </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_use_legacy_discarded_value_comparison/ class=md-nav__link> <span class=md-ellipsis> JSON_USE_LEGACY_DISCARDED_VALUE_COMPARISON </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_define_derived_type/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_ONLY_SERIALIZE, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_define_type_intrusive/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_TYPE_INTRUSIVE, NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_TYPE_INTRUSIVE_ONLY_SERIALIZE </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_define_type_non_intrusive/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_define_type_with_names/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_TYPE_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_namespace/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_NAMESPACE </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_namespace_begin/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_NAMESPACE_BEGIN, NLOHMANN_JSON_NAMESPACE_END </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_namespace_no_version/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_NAMESPACE_NO_VERSION </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_serialize_enum/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_SERIALIZE_ENUM </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_serialize_enum_strict/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_SERIALIZE_ENUM_STRICT </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_version_major/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_VERSION_MAJOR, NLOHMANN_JSON_VERSION_MINOR, NLOHMANN_JSON_VERSION_PATCH </span> </a> </li> </ul> </nav> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_5> <div class="md-nav__link md-nav__container"> <a href=../../../community/ class="md-nav__link "> <span class=md-ellipsis> Community </span> </a> <label class="md-nav__link " for=__nav_5 id=__nav_5_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_5_label aria-expanded=false> <label class=md-nav__title for=__nav_5> <span class="md-nav__icon md-icon"></span> Community </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../community/code_of_conduct/ class=md-nav__link> <span class=md-ellipsis> Code of Conduct </span> </a> </li> <li class=md-nav__item> <a href=../../../community/contribution_guidelines/ class=md-nav__link> <span class=md-ellipsis> Contribution Guidelines </span> </a> </li> <li class=md-nav__item> <a href=../../../community/quality_assurance/ class=md-nav__link> <span class=md-ellipsis> Quality assurance </span> </a> </li> <li class=md-nav__item> <a href=../../../community/governance/ class=md-nav__link> <span class=md-ellipsis> Governance </span> </a> </li> <li class=md-nav__item> <a href=../../../community/security_policy/ class=md-nav__link> <span class=md-ellipsis> Security Policy </span> </a> </li> </ul> </nav> </li> </ul> </nav> </div> </div> </div> <div class="md-sidebar md-sidebar--secondary" data-md-component=sidebar data-md-type=toc> <div class=md-sidebar__scrollwrap> <div class=md-sidebar__inner> <nav class="md-nav md-nav--secondary" aria-label="Table of contents"> <label class=md-nav__title for=__toc> <span class="md-nav__icon md-icon"></span> Table of contents </label> <ul class=md-nav__list data-md-component=toc data-md-scrollfix> <li class=md-nav__item> <a href=#return-value class=md-nav__link> <span class=md-ellipsis> Return value </span> </a> </li> <li class=md-nav__item> <a href=#exception-safety class=md-nav__link> <span class=md-ellipsis> Exception safety </span> </a> </li> <li class=md-nav__item> <a href=#complexity class=md-nav__link> <span class=md-ellipsis> Complexity </span> </a> </li> <li class=md-nav__item> <a href=#examples class=md-nav__link> <span class=md-ellipsis> Examples </span> </a> </li> <li class=md-nav__item> <a href=#version-history class=md-nav__link> <span class=md-ellipsis> Version history </span> </a> </li> </ul> </nav> </div> </div> </div> <div class=md-content data-md-component=content> <article class="md-content__inner md-typeset"> <a href="https://github.com/nlohmann/json/edit/develop/docs/mkdocs/docs/api/basic_json/rbegin.md" title="Edit this page" class="md-content__button md-icon" rel="edit"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M10 20H6V4h7v5h5v3.1l2-2V8l-6-6H6c-1.1 0-2 .9-2 2v16c0 1.1.9 2 2 2h4zm10.2-7c.1 0 .3.1.4.2l1.3 1.3c.2.2.2.6 0 .8l-1 1-2.1-2.1 1-1c.1-.1.2-.2.4-.2m0 3.9L14.1 23H12v-2.1l6.1-6.1z"/></svg> </a> <a href="https://github.com/nlohmann/json/raw/develop/docs/mkdocs/docs/api/basic_json/rbegin.md" title="View source of this page" class="md-content__button md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M17 18c.56 0 1 .44 1 1s-.44 1-1 1-1-.44-1-1 .44-1 1-1m0-3c-2.73 0-5.06 1.66-6 4 .94 2.34 3.27 4 6 4s5.06-1.66 6-4c-.94-2.34-3.27-4-6-4m0 6.5a2.5 2.5 0 0 1-2.5-2.5 2.5 2.5 0 0 1 2.5-2.5 2.5 2.5 0 0 1 2.5 2.5 2.5 2.5 0 0 1-2.5 2.5M9.27 20H6V4h7v5h5v4.07c.7.08 1.36.25 2 .49V8l-6-6H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h4.5a8.2 8.2 0 0 1-1.23-2"/></svg> </a> <h1 id=nlohmannbasic_jsonrbegin><small>nlohmann::basic_json::</small>rbegin<a class=headerlink href=#nlohmannbasic_jsonrbegin title="Permanent link">&para;</a></h1> <div class=highlight><pre><span></span><code><span class=n>reverse_iterator</span><span class=w> </span><span class=nf>rbegin</span><span class=p>()</span><span class=w> </span><span class=k>noexcept</span><span class=p>;</span>
 <span class=n>const_reverse_iterator</span><span class=w> </span><span class=nf>rbegin</span><span class=p>()</span><span class=w> </span><span class=k>const</span><span class=w> </span><span class=k>noexcept</span><span class=p>;</span>
-</code></pre></div> <p>Returns an iterator to the reverse-beginning; that is, the last element.</p> <p><img alt="Illustration from cppreference.com" src=../../../images/range-rbegin-rend.svg></p> <h2 id=return-value>Return value<a class=headerlink href=#return-value title="Permanent link">&para;</a></h2> <p>reverse iterator to the first element</p> <h2 id=exception-safety>Exception safety<a class=headerlink href=#exception-safety title="Permanent link">&para;</a></h2> <p>No-throw guarantee: this member function never throws exceptions.</p> <h2 id=complexity>Complexity<a class=headerlink href=#complexity title="Permanent link">&para;</a></h2> <p>Constant.</p> <h2 id=examples>Examples<a class=headerlink href=#examples title="Permanent link">&para;</a></h2> <details class=example> <summary>Example</summary> <p>The following code shows an example for <code>rbegin()</code>.</p> <div class=highlight><pre><span></span><code><span class=cp>#include</span><span class=w> </span><span class=cpf>&lt;iostream&gt;</span>
+</code></pre></div> <p>Returns an iterator to the reverse-beginning; that is, the last element.</p> <p><img alt="Illustration from cppreference.com" src=../../../images/range-rbegin-rend.svg></p> <h2 id=return-value>Return value<a class=headerlink href=#return-value title="Permanent link">&para;</a></h2> <p>reverse iterator to the last element</p> <h2 id=exception-safety>Exception safety<a class=headerlink href=#exception-safety title="Permanent link">&para;</a></h2> <p>No-throw guarantee: this member function never throws exceptions.</p> <h2 id=complexity>Complexity<a class=headerlink href=#complexity title="Permanent link">&para;</a></h2> <p>Constant.</p> <h2 id=examples>Examples<a class=headerlink href=#examples title="Permanent link">&para;</a></h2> <details class=example> <summary>Example</summary> <p>The following code shows an example for <code>rbegin()</code>.</p> <div class=highlight><pre><span></span><code><span class=cp>#include</span><span class=w> </span><span class=cpf>&lt;iostream&gt;</span>
 <span class=cp>#include</span><span class=w> </span><span class=cpf>&lt;nlohmann/json.hpp&gt;</span>
 
 <span class=k>using</span><span class=w> </span><span class=n>json</span><span class=w> </span><span class=o>=</span><span class=w> </span><span class=n>nlohmann</span><span class=o>::</span><span class=n>json</span><span class=p>;</span>
@@ -17,4 +17,4 @@
 <span class=w>    </span><span class=n>std</span><span class=o>::</span><span class=n>cout</span><span class=w> </span><span class=o>&lt;&lt;</span><span class=w> </span><span class=o>*</span><span class=n>it</span><span class=w> </span><span class=o>&lt;&lt;</span><span class=w> </span><span class=sc>&#39;\n&#39;</span><span class=p>;</span>
 <span class=p>}</span>
 </code></pre></div> <p>Output:</p> <div class=highlight><pre><span></span><code><span class=mi>5</span>
-</code></pre></div> </details> <h2 id=version-history>Version history<a class=headerlink href=#version-history title="Permanent link">&para;</a></h2> <ul> <li>Added in version 1.0.0.</li> </ul> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 23, 2026 11:16:18 UTC">June 23, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
+</code></pre></div> </details> <h2 id=version-history>Version history<a class=headerlink href=#version-history title="Permanent link">&para;</a></h2> <ul> <li>Added in version 1.0.0.</li> </ul> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 29, 2026 20:15:18 UTC">June 29, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
diff --git a/api/basic_json/rend/index.html b/api/basic_json/rend/index.html
index ecf0ee0..51c78f7 100644
--- a/api/basic_json/rend/index.html
+++ b/api/basic_json/rend/index.html
@@ -1,6 +1,6 @@
 <!doctype html><html lang=en class=no-js> <head><meta charset=utf-8><meta name=viewport content="width=device-width,initial-scale=1"><meta name=author content="Niels Lohmann"><link href="https://json.nlohmann.me/api/basic_json/rend/" rel="canonical"><link href=../rbegin/ rel=prev><link href=../sax_parse/ rel=next><link rel=icon href=../../../assets/images/favicon.png><meta name=generator content="mkdocs-1.6.1, mkdocs-material-9.7.6"><title>rend - JSON for Modern C++</title><link rel=stylesheet href=../../../assets/stylesheets/main.484c7ddc.min.css><link rel=stylesheet href=../../../assets/stylesheets/palette.ab4e12ef.min.css><link rel="stylesheet" href="../../../assets/external/fonts.googleapis.com/css.61a430c9.css"><style>:root{--md-text-font:"Roboto";--md-code-font:"JetBrains Mono"}</style><link rel=stylesheet href=../../../css/custom.css><script>__md_scope=new URL("../../..",location),__md_hash=e=>[...e].reduce(((e,_)=>(e<<5)-e+_.charCodeAt(0)),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script></head> <body dir=ltr data-md-color-scheme=default data-md-color-primary=indigo data-md-color-accent=indigo> <input class=md-toggle data-md-toggle=drawer type=checkbox id=__drawer autocomplete=off> <input class=md-toggle data-md-toggle=search type=checkbox id=__search autocomplete=off> <label class=md-overlay for=__drawer></label> <div data-md-component=skip> <a href=#nlohmannbasic_jsonrend class=md-skip> Skip to content </a> </div> <div data-md-component=announce> </div> <header class=md-header data-md-component=header> <nav class="md-header__inner md-grid" aria-label=Header> <a href=../../.. title="JSON for Modern C++" class="md-header__button md-logo" aria-label="JSON for Modern C++" data-md-component=logo> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54"/></svg> </a> <label class="md-header__button md-icon" for=__drawer> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M3 6h18v2H3zm0 5h18v2H3zm0 5h18v2H3z"/></svg> </label> <div class=md-header__title data-md-component=header-title> <div class=md-header__ellipsis> <div class=md-header__topic> <span class=md-ellipsis> JSON for Modern C++ </span> </div> <div class=md-header__topic data-md-component=header-topic> <span class=md-ellipsis> rend </span> </div> </div> </div> <form class=md-header__option data-md-component=palette> <input class=md-option data-md-color-media="(prefers-color-scheme: light)" data-md-color-scheme=default data-md-color-primary=indigo data-md-color-accent=indigo aria-label="Switch to dark mode" type=radio name=__palette id=__palette_0> <label class="md-header__button md-icon" title="Switch to dark mode" for=__palette_1 hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a4 4 0 0 0-4 4 4 4 0 0 0 4 4 4 4 0 0 0 4-4 4 4 0 0 0-4-4m0 10a6 6 0 0 1-6-6 6 6 0 0 1 6-6 6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12z"/></svg> </label> <input class=md-option data-md-color-media="(prefers-color-scheme: dark)" data-md-color-scheme=slate data-md-color-primary=indigo data-md-color-accent=indigo aria-label="Switch to light mode" type=radio name=__palette id=__palette_1> <label class="md-header__button md-icon" title="Switch to light mode" for=__palette_0 hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 18c-.89 0-1.74-.2-2.5-.55C11.56 16.5 13 14.42 13 12s-1.44-4.5-3.5-5.45C10.26 6.2 11.11 6 12 6a6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12z"/></svg> </label> </form> <script>var palette=__md_get("__palette");if(palette&&palette.color){if("(prefers-color-scheme)"===palette.color.media){var media=matchMedia("(prefers-color-scheme: light)"),input=document.querySelector(media.matches?"[data-md-color-media='(prefers-color-scheme: light)']":"[data-md-color-media='(prefers-color-scheme: dark)']");palette.color.media=input.getAttribute("data-md-color-media"),palette.color.scheme=input.getAttribute("data-md-color-scheme"),palette.color.primary=input.getAttribute("data-md-color-primary"),palette.color.accent=input.getAttribute("data-md-color-accent")}for(var[key,value]of Object.entries(palette.color))document.body.setAttribute("data-md-color-"+key,value)}</script> <label class="md-header__button md-icon" for=__search> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg> </label> <div class=md-search data-md-component=search role=dialog> <label class=md-search__overlay for=__search></label> <div class=md-search__inner role=search> <form class=md-search__form name=search> <input type=text class=md-search__input name=query aria-label=Search placeholder=Search autocapitalize=off autocorrect=off autocomplete=off spellcheck=false data-md-component=search-query required> <label class="md-search__icon md-icon" for=__search> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11z"/></svg> </label> <nav class=md-search__options aria-label=Search> <button type=reset class="md-search__icon md-icon" title=Clear aria-label=Clear tabindex=-1> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z"/></svg> </button> </nav> </form> <div class=md-search__output> <div class=md-search__scrollwrap tabindex=0 data-md-scrollfix> <div class=md-search-result data-md-component=search-result> <div class=md-search-result__meta> Initializing search </div> <ol class=md-search-result__list role=presentation></ol> </div> </div> </div> </div> </div> <div class=md-header__source> <a href="https://github.com/nlohmann/json" title="Go to repository" class="md-source" data-md-component="source"> <div class="md-source__icon md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </div> <div class=md-source__repository> nlohmann/json </div> </a> </div> </nav> </header> <div class=md-container data-md-component=container> <nav class=md-tabs aria-label=Tabs data-md-component=tabs> <div class=md-grid> <ul class=md-tabs__list> <li class=md-tabs__item> <a href=../../.. class=md-tabs__link> Home </a> </li> <li class=md-tabs__item> <a href=../../../features/arbitrary_types/ class=md-tabs__link> Features </a> </li> <li class=md-tabs__item> <a href=../../../integration/ class=md-tabs__link> Integration </a> </li> <li class="md-tabs__item md-tabs__item--active"> <a href=../ class=md-tabs__link> API Documentation </a> </li> <li class=md-tabs__item> <a href=../../../community/ class=md-tabs__link> Community </a> </li> </ul> </div> </nav> <main class=md-main data-md-component=main> <div class="md-main__inner md-grid"> <div class="md-sidebar md-sidebar--primary" data-md-component=sidebar data-md-type=navigation> <div class=md-sidebar__scrollwrap> <div class=md-sidebar__inner> <nav class="md-nav md-nav--primary md-nav--lifted" aria-label=Navigation data-md-level=0> <label class=md-nav__title for=__drawer> <a href=../../.. title="JSON for Modern C++" class="md-nav__button md-logo" aria-label="JSON for Modern C++" data-md-component=logo> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54"/></svg> </a> JSON for Modern C++ </label> <div class=md-nav__source> <a href="https://github.com/nlohmann/json" title="Go to repository" class="md-source" data-md-component="source"> <div class="md-source__icon md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </div> <div class=md-source__repository> nlohmann/json </div> </a> </div> <ul class=md-nav__list data-md-scrollfix> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_1> <div class="md-nav__link md-nav__container"> <a href=../../.. class="md-nav__link "> <span class=md-ellipsis> Home </span> </a> <label class="md-nav__link " for=__nav_1 id=__nav_1_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_1_label aria-expanded=false> <label class=md-nav__title for=__nav_1> <span class="md-nav__icon md-icon"></span> Home </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../home/license/ class=md-nav__link> <span class=md-ellipsis> License </span> </a> </li> <li class=md-nav__item> <a href=../../../home/faq/ class=md-nav__link> <span class=md-ellipsis> FAQ </span> </a> </li> <li class=md-nav__item> <a href=../../../home/exceptions/ class=md-nav__link> <span class=md-ellipsis> Exceptions </span> </a> </li> <li class=md-nav__item> <a href=../../../home/releases/ class=md-nav__link> <span class=md-ellipsis> Releases </span> </a> </li> <li class=md-nav__item> <a href=../../../home/design_goals/ class=md-nav__link> <span class=md-ellipsis> Design goals </span> </a> </li> <li class=md-nav__item> <a href=../../../home/architecture/ class=md-nav__link> <span class=md-ellipsis> Architecture </span> </a> </li> <li class=md-nav__item> <a href=../../../home/customers/ class=md-nav__link> <span class=md-ellipsis> Customers </span> </a> </li> <li class=md-nav__item> <a href=../../../home/sponsors/ class=md-nav__link> <span class=md-ellipsis> Sponsors </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2> <label class=md-nav__link for=__nav_2 id=__nav_2_label tabindex=0> <span class=md-ellipsis> Features </span> <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_2_label aria-expanded=false> <label class=md-nav__title for=__nav_2> <span class="md-nav__icon md-icon"></span> Features </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/arbitrary_types/ class=md-nav__link> <span class=md-ellipsis> Arbitrary Type Conversions </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_2> <div class="md-nav__link md-nav__container"> <a href=../../../features/binary_formats/ class="md-nav__link "> <span class=md-ellipsis> Binary Formats </span> </a> <label class="md-nav__link " for=__nav_2_2 id=__nav_2_2_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_2_label aria-expanded=false> <label class=md-nav__title for=__nav_2_2> <span class="md-nav__icon md-icon"></span> Binary Formats </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/binary_formats/bjdata/ class=md-nav__link> <span class=md-ellipsis> BJData </span> </a> </li> <li class=md-nav__item> <a href=../../../features/binary_formats/bson/ class=md-nav__link> <span class=md-ellipsis> BSON </span> </a> </li> <li class=md-nav__item> <a href=../../../features/binary_formats/cbor/ class=md-nav__link> <span class=md-ellipsis> CBOR </span> </a> </li> <li class=md-nav__item> <a href=../../../features/binary_formats/messagepack/ class=md-nav__link> <span class=md-ellipsis> MessagePack </span> </a> </li> <li class=md-nav__item> <a href=../../../features/binary_formats/ubjson/ class=md-nav__link> <span class=md-ellipsis> UBJSON </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../../features/binary_values/ class=md-nav__link> <span class=md-ellipsis> Binary Values </span> </a> </li> <li class=md-nav__item> <a href=../../../features/comments/ class=md-nav__link> <span class=md-ellipsis> Comments </span> </a> </li> <li class=md-nav__item> <a href=../../../features/trailing_commas/ class=md-nav__link> <span class=md-ellipsis> Trailing Commas </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_6> <div class="md-nav__link md-nav__container"> <a href=../../../features/element_access/ class="md-nav__link "> <span class=md-ellipsis> Element Access </span> </a> <label class="md-nav__link " for=__nav_2_6 id=__nav_2_6_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_6_label aria-expanded=false> <label class=md-nav__title for=__nav_2_6> <span class="md-nav__icon md-icon"></span> Element Access </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/element_access/unchecked_access/ class=md-nav__link> <span class=md-ellipsis> Unchecked access: operator[] </span> </a> </li> <li class=md-nav__item> <a href=../../../features/element_access/checked_access/ class=md-nav__link> <span class=md-ellipsis> Checked access: at </span> </a> </li> <li class=md-nav__item> <a href=../../../features/element_access/default_value/ class=md-nav__link> <span class=md-ellipsis> Access with default value: value </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../../features/iterators/ class=md-nav__link> <span class=md-ellipsis> Iterators </span> </a> </li> <li class=md-nav__item> <a href=../../../features/json_pointer/ class=md-nav__link> <span class=md-ellipsis> JSON Pointer </span> </a> </li> <li class=md-nav__item> <a href=../../../features/json_patch/ class=md-nav__link> <span class=md-ellipsis> JSON Patch and Diff </span> </a> </li> <li class=md-nav__item> <a href=../../../features/merge_patch/ class=md-nav__link> <span class=md-ellipsis> JSON Merge Patch </span> </a> </li> <li class=md-nav__item> <a href=../../../features/modules/ class=md-nav__link> <span class=md-ellipsis> Modules </span> </a> </li> <li class=md-nav__item> <a href=../../../features/namespace/ class=md-nav__link> <span class=md-ellipsis> nlohmann Namespace </span> </a> </li> <li class=md-nav__item> <a href=../../../features/object_order/ class=md-nav__link> <span class=md-ellipsis> Object Order </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_14> <div class="md-nav__link md-nav__container"> <a href=../../../features/parsing/ class="md-nav__link "> <span class=md-ellipsis> Parsing </span> </a> <label class="md-nav__link " for=__nav_2_14 id=__nav_2_14_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_14_label aria-expanded=false> <label class=md-nav__title for=__nav_2_14> <span class="md-nav__icon md-icon"></span> Parsing </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/parsing/json_lines/ class=md-nav__link> <span class=md-ellipsis> JSON Lines </span> </a> </li> <li class=md-nav__item> <a href=../../../features/parsing/parse_exceptions/ class=md-nav__link> <span class=md-ellipsis> Parsing and Exceptions </span> </a> </li> <li class=md-nav__item> <a href=../../../features/parsing/parser_callbacks/ class=md-nav__link> <span class=md-ellipsis> Parser Callbacks </span> </a> </li> <li class=md-nav__item> <a href=../../../features/parsing/sax_interface/ class=md-nav__link> <span class=md-ellipsis> SAX Interface </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../../features/assertions/ class=md-nav__link> <span class=md-ellipsis> Runtime Assertions </span> </a> </li> <li class=md-nav__item> <a href=../../../features/enum_conversion/ class=md-nav__link> <span class=md-ellipsis> Specializing enum conversion </span> </a> </li> <li class=md-nav__item> <a href=../../../features/macros/ class=md-nav__link> <span class=md-ellipsis> Supported Macros </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_18> <div class="md-nav__link md-nav__container"> <a href=../../../features/types/ class="md-nav__link "> <span class=md-ellipsis> Types </span> </a> <label class="md-nav__link " for=__nav_2_18 id=__nav_2_18_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_18_label aria-expanded=false> <label class=md-nav__title for=__nav_2_18> <span class="md-nav__icon md-icon"></span> Types </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/types/number_handling/ class=md-nav__link> <span class=md-ellipsis> Number Handling </span> </a> </li> </ul> </nav> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_3> <div class="md-nav__link md-nav__container"> <a href=../../../integration/ class="md-nav__link "> <span class=md-ellipsis> Integration </span> </a> <label class="md-nav__link " for=__nav_3 id=__nav_3_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_3_label aria-expanded=false> <label class=md-nav__title for=__nav_3> <span class="md-nav__icon md-icon"></span> Integration </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../integration/migration_guide/ class=md-nav__link> <span class=md-ellipsis> Migration Guide </span> </a> </li> <li class=md-nav__item> <a href=../../../integration/cmake/ class=md-nav__link> <span class=md-ellipsis> CMake </span> </a> </li> <li class=md-nav__item> <a href=../../../integration/package_managers/ class=md-nav__link> <span class=md-ellipsis> Package Managers </span> </a> </li> <li class=md-nav__item> <a href=../../../integration/pkg-config/ class=md-nav__link> <span class=md-ellipsis> Pkg-config </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--active md-nav__item--section md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4 checked> <label class=md-nav__link for=__nav_4 id=__nav_4_label tabindex> <span class=md-ellipsis> API Documentation </span> <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_4_label aria-expanded=true> <label class=md-nav__title for=__nav_4> <span class="md-nav__icon md-icon"></span> API Documentation </label> <ul class=md-nav__list data-md-scrollfix> <li class="md-nav__item md-nav__item--active md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_1 checked> <div class="md-nav__link md-nav__container"> <a href=../ class="md-nav__link "> <span class=md-ellipsis> basic_json </span> </a> <label class="md-nav__link " for=__nav_4_1 id=__nav_4_1_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_1_label aria-expanded=true> <label class=md-nav__title for=__nav_4_1> <span class="md-nav__icon md-icon"></span> basic_json </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../basic_json/ class=md-nav__link> <span class=md-ellipsis> (Constructor) </span> </a> </li> <li class=md-nav__item> <a href=../~basic_json/ class=md-nav__link> <span class=md-ellipsis> (Destructor) </span> </a> </li> <li class=md-nav__item> <a href=../accept/ class=md-nav__link> <span class=md-ellipsis> accept </span> </a> </li> <li class=md-nav__item> <a href=../array/ class=md-nav__link> <span class=md-ellipsis> array </span> </a> </li> <li class=md-nav__item> <a href=../array_t/ class=md-nav__link> <span class=md-ellipsis> array_t </span> </a> </li> <li class=md-nav__item> <a href=../at/ class=md-nav__link> <span class=md-ellipsis> at </span> </a> </li> <li class=md-nav__item> <a href=../back/ class=md-nav__link> <span class=md-ellipsis> back </span> </a> </li> <li class=md-nav__item> <a href=../begin/ class=md-nav__link> <span class=md-ellipsis> begin </span> </a> </li> <li class=md-nav__item> <a href=../binary/ class=md-nav__link> <span class=md-ellipsis> binary </span> </a> </li> <li class=md-nav__item> <a href=../binary_t/ class=md-nav__link> <span class=md-ellipsis> binary_t </span> </a> </li> <li class=md-nav__item> <a href=../boolean_t/ class=md-nav__link> <span class=md-ellipsis> boolean_t </span> </a> </li> <li class=md-nav__item> <a href=../cbegin/ class=md-nav__link> <span class=md-ellipsis> cbegin </span> </a> </li> <li class=md-nav__item> <a href=../cbor_tag_handler_t/ class=md-nav__link> <span class=md-ellipsis> cbor_tag_handler_t </span> </a> </li> <li class=md-nav__item> <a href=../cend/ class=md-nav__link> <span class=md-ellipsis> cend </span> </a> </li> <li class=md-nav__item> <a href=../clear/ class=md-nav__link> <span class=md-ellipsis> clear </span> </a> </li> <li class=md-nav__item> <a href=../contains/ class=md-nav__link> <span class=md-ellipsis> contains </span> </a> </li> <li class=md-nav__item> <a href=../count/ class=md-nav__link> <span class=md-ellipsis> count </span> </a> </li> <li class=md-nav__item> <a href=../crbegin/ class=md-nav__link> <span class=md-ellipsis> crbegin </span> </a> </li> <li class=md-nav__item> <a href=../crend/ class=md-nav__link> <span class=md-ellipsis> crend </span> </a> </li> <li class=md-nav__item> <a href=../default_object_comparator_t/ class=md-nav__link> <span class=md-ellipsis> default_object_comparator_t </span> </a> </li> <li class=md-nav__item> <a href=../diff/ class=md-nav__link> <span class=md-ellipsis> diff </span> </a> </li> <li class=md-nav__item> <a href=../dump/ class=md-nav__link> <span class=md-ellipsis> dump </span> </a> </li> <li class=md-nav__item> <a href=../emplace/ class=md-nav__link> <span class=md-ellipsis> emplace </span> </a> </li> <li class=md-nav__item> <a href=../emplace_back/ class=md-nav__link> <span class=md-ellipsis> emplace_back </span> </a> </li> <li class=md-nav__item> <a href=../empty/ class=md-nav__link> <span class=md-ellipsis> empty </span> </a> </li> <li class=md-nav__item> <a href=../end/ class=md-nav__link> <span class=md-ellipsis> end </span> </a> </li> <li class=md-nav__item> <a href=../end_pos/ class=md-nav__link> <span class=md-ellipsis> end_pos </span> </a> </li> <li class=md-nav__item> <a href=../erase/ class=md-nav__link> <span class=md-ellipsis> erase </span> </a> </li> <li class=md-nav__item> <a href=../error_handler_t/ class=md-nav__link> <span class=md-ellipsis> error_handler_t </span> </a> </li> <li class=md-nav__item> <a href=../exception/ class=md-nav__link> <span class=md-ellipsis> exception </span> </a> </li> <li class=md-nav__item> <a href=../find/ class=md-nav__link> <span class=md-ellipsis> find </span> </a> </li> <li class=md-nav__item> <a href=../flatten/ class=md-nav__link> <span class=md-ellipsis> flatten </span> </a> </li> <li class=md-nav__item> <a href=../from_bjdata/ class=md-nav__link> <span class=md-ellipsis> from_bjdata </span> </a> </li> <li class=md-nav__item> <a href=../from_bson/ class=md-nav__link> <span class=md-ellipsis> from_bson </span> </a> </li> <li class=md-nav__item> <a href=../from_cbor/ class=md-nav__link> <span class=md-ellipsis> from_cbor </span> </a> </li> <li class=md-nav__item> <a href=../from_msgpack/ class=md-nav__link> <span class=md-ellipsis> from_msgpack </span> </a> </li> <li class=md-nav__item> <a href=../from_ubjson/ class=md-nav__link> <span class=md-ellipsis> from_ubjson </span> </a> </li> <li class=md-nav__item> <a href=../front/ class=md-nav__link> <span class=md-ellipsis> front </span> </a> </li> <li class=md-nav__item> <a href=../get/ class=md-nav__link> <span class=md-ellipsis> get </span> </a> </li> <li class=md-nav__item> <a href=../get_allocator/ class=md-nav__link> <span class=md-ellipsis> get_allocator </span> </a> </li> <li class=md-nav__item> <a href=../get_binary/ class=md-nav__link> <span class=md-ellipsis> get_binary </span> </a> </li> <li class=md-nav__item> <a href=../get_ptr/ class=md-nav__link> <span class=md-ellipsis> get_ptr </span> </a> </li> <li class=md-nav__item> <a href=../get_ref/ class=md-nav__link> <span class=md-ellipsis> get_ref </span> </a> </li> <li class=md-nav__item> <a href=../get_to/ class=md-nav__link> <span class=md-ellipsis> get_to </span> </a> </li> <li class=md-nav__item> <a href=../std_hash/ class=md-nav__link> <span class=md-ellipsis> std::hash&lt;basic_json&gt; </span> </a> </li> <li class=md-nav__item> <a href=../input_format_t/ class=md-nav__link> <span class=md-ellipsis> input_format_t </span> </a> </li> <li class=md-nav__item> <a href=../insert/ class=md-nav__link> <span class=md-ellipsis> insert </span> </a> </li> <li class=md-nav__item> <a href=../invalid_iterator/ class=md-nav__link> <span class=md-ellipsis> invalid_iterator </span> </a> </li> <li class=md-nav__item> <a href=../is_array/ class=md-nav__link> <span class=md-ellipsis> is_array </span> </a> </li> <li class=md-nav__item> <a href=../is_binary/ class=md-nav__link> <span class=md-ellipsis> is_binary </span> </a> </li> <li class=md-nav__item> <a href=../is_boolean/ class=md-nav__link> <span class=md-ellipsis> is_boolean </span> </a> </li> <li class=md-nav__item> <a href=../is_discarded/ class=md-nav__link> <span class=md-ellipsis> is_discarded </span> </a> </li> <li class=md-nav__item> <a href=../is_null/ class=md-nav__link> <span class=md-ellipsis> is_null </span> </a> </li> <li class=md-nav__item> <a href=../is_number/ class=md-nav__link> <span class=md-ellipsis> is_number </span> </a> </li> <li class=md-nav__item> <a href=../is_number_float/ class=md-nav__link> <span class=md-ellipsis> is_number_float </span> </a> </li> <li class=md-nav__item> <a href=../is_number_integer/ class=md-nav__link> <span class=md-ellipsis> is_number_integer </span> </a> </li> <li class=md-nav__item> <a href=../is_number_unsigned/ class=md-nav__link> <span class=md-ellipsis> is_number_unsigned </span> </a> </li> <li class=md-nav__item> <a href=../is_object/ class=md-nav__link> <span class=md-ellipsis> is_object </span> </a> </li> <li class=md-nav__item> <a href=../is_primitive/ class=md-nav__link> <span class=md-ellipsis> is_primitive </span> </a> </li> <li class=md-nav__item> <a href=../is_string/ class=md-nav__link> <span class=md-ellipsis> is_string </span> </a> </li> <li class=md-nav__item> <a href=../is_structured/ class=md-nav__link> <span class=md-ellipsis> is_structured </span> </a> </li> <li class=md-nav__item> <a href=../items/ class=md-nav__link> <span class=md-ellipsis> items </span> </a> </li> <li class=md-nav__item> <a href=../json_base_class_t/ class=md-nav__link> <span class=md-ellipsis> json_base_class_t </span> </a> </li> <li class=md-nav__item> <a href=../json_serializer/ class=md-nav__link> <span class=md-ellipsis> json_serializer </span> </a> </li> <li class=md-nav__item> <a href=../max_size/ class=md-nav__link> <span class=md-ellipsis> max_size </span> </a> </li> <li class=md-nav__item> <a href=../meta/ class=md-nav__link> <span class=md-ellipsis> meta </span> </a> </li> <li class=md-nav__item> <a href=../merge_patch/ class=md-nav__link> <span class=md-ellipsis> merge_patch </span> </a> </li> <li class=md-nav__item> <a href=../number_float_t/ class=md-nav__link> <span class=md-ellipsis> number_float_t </span> </a> </li> <li class=md-nav__item> <a href=../number_integer_t/ class=md-nav__link> <span class=md-ellipsis> number_integer_t </span> </a> </li> <li class=md-nav__item> <a href=../number_unsigned_t/ class=md-nav__link> <span class=md-ellipsis> number_unsigned_t </span> </a> </li> <li class=md-nav__item> <a href=../object/ class=md-nav__link> <span class=md-ellipsis> object </span> </a> </li> <li class=md-nav__item> <a href=../object_comparator_t/ class=md-nav__link> <span class=md-ellipsis> object_comparator_t </span> </a> </li> <li class=md-nav__item> <a href=../object_t/ class=md-nav__link> <span class=md-ellipsis> object_t </span> </a> </li> <li class=md-nav__item> <a href=../operator_ValueType/ class=md-nav__link> <span class=md-ellipsis> operator ValueType </span> </a> </li> <li class=md-nav__item> <a href=../operator_value_t/ class=md-nav__link> <span class=md-ellipsis> operator value_t </span> </a> </li> <li class=md-nav__item> <a href=../operator%5B%5D/ class=md-nav__link> <span class=md-ellipsis> operator[] </span> </a> </li> <li class=md-nav__item> <a href=../operator%3D/ class=md-nav__link> <span class=md-ellipsis> operator= </span> </a> </li> <li class=md-nav__item> <a href=../operator%2B%3D/ class=md-nav__link> <span class=md-ellipsis> operator+= </span> </a> </li> <li class=md-nav__item> <a href=../operator_eq/ class=md-nav__link> <span class=md-ellipsis> operator== </span> </a> </li> <li class=md-nav__item> <a href=../operator_ne/ class=md-nav__link> <span class=md-ellipsis> operator!= </span> </a> </li> <li class=md-nav__item> <a href=../operator_lt/ class=md-nav__link> <span class=md-ellipsis> operator< </span> </a> </li> <li class=md-nav__item> <a href=../operator_gt/ class=md-nav__link> <span class=md-ellipsis> operator> </span> </a> </li> <li class=md-nav__item> <a href=../operator_le/ class=md-nav__link> <span class=md-ellipsis> operator<= </span> </a> </li> <li class=md-nav__item> <a href=../operator_ge/ class=md-nav__link> <span class=md-ellipsis> operator>= </span> </a> </li> <li class=md-nav__item> <a href=../operator_spaceship/ class=md-nav__link> <span class=md-ellipsis> operator<=> </span> </a> </li> <li class=md-nav__item> <a href=../out_of_range/ class=md-nav__link> <span class=md-ellipsis> out_of_range </span> </a> </li> <li class=md-nav__item> <a href=../other_error/ class=md-nav__link> <span class=md-ellipsis> other_error </span> </a> </li> <li class=md-nav__item> <a href=../parse/ class=md-nav__link> <span class=md-ellipsis> parse </span> </a> </li> <li class=md-nav__item> <a href=../parse_error/ class=md-nav__link> <span class=md-ellipsis> parse_error </span> </a> </li> <li class=md-nav__item> <a href=../parse_event_t/ class=md-nav__link> <span class=md-ellipsis> parse_event_t </span> </a> </li> <li class=md-nav__item> <a href=../parser_callback_t/ class=md-nav__link> <span class=md-ellipsis> parser_callback_t </span> </a> </li> <li class=md-nav__item> <a href=../patch/ class=md-nav__link> <span class=md-ellipsis> patch </span> </a> </li> <li class=md-nav__item> <a href=../patch_inplace/ class=md-nav__link> <span class=md-ellipsis> patch_inplace </span> </a> </li> <li class=md-nav__item> <a href=../push_back/ class=md-nav__link> <span class=md-ellipsis> push_back </span> </a> </li> <li class=md-nav__item> <a href=../rbegin/ class=md-nav__link> <span class=md-ellipsis> rbegin </span> </a> </li> <li class="md-nav__item md-nav__item--active"> <input class="md-nav__toggle md-toggle" type=checkbox id=__toc> <label class="md-nav__link md-nav__link--active" for=__toc> <span class=md-ellipsis> rend </span> <span class="md-nav__icon md-icon"></span> </label> <a href=./ class="md-nav__link md-nav__link--active"> <span class=md-ellipsis> rend </span> </a> <nav class="md-nav md-nav--secondary" aria-label="Table of contents"> <label class=md-nav__title for=__toc> <span class="md-nav__icon md-icon"></span> Table of contents </label> <ul class=md-nav__list data-md-component=toc data-md-scrollfix> <li class=md-nav__item> <a href=#return-value class=md-nav__link> <span class=md-ellipsis> Return value </span> </a> </li> <li class=md-nav__item> <a href=#exception-safety class=md-nav__link> <span class=md-ellipsis> Exception safety </span> </a> </li> <li class=md-nav__item> <a href=#complexity class=md-nav__link> <span class=md-ellipsis> Complexity </span> </a> </li> <li class=md-nav__item> <a href=#examples class=md-nav__link> <span class=md-ellipsis> Examples </span> </a> </li> <li class=md-nav__item> <a href=#version-history class=md-nav__link> <span class=md-ellipsis> Version history </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../sax_parse/ class=md-nav__link> <span class=md-ellipsis> sax_parse </span> </a> </li> <li class=md-nav__item> <a href=../size/ class=md-nav__link> <span class=md-ellipsis> size </span> </a> </li> <li class=md-nav__item> <a href=../start_pos/ class=md-nav__link> <span class=md-ellipsis> start_pos </span> </a> </li> <li class=md-nav__item> <a href=../string_t/ class=md-nav__link> <span class=md-ellipsis> string_t </span> </a> </li> <li class=md-nav__item> <a href=../swap/ class=md-nav__link> <span class=md-ellipsis> swap </span> </a> </li> <li class=md-nav__item> <a href=../std_swap/ class=md-nav__link> <span class=md-ellipsis> std::swap&lt;basic_json&gt; </span> </a> </li> <li class=md-nav__item> <a href=../to_bjdata/ class=md-nav__link> <span class=md-ellipsis> to_bjdata </span> </a> </li> <li class=md-nav__item> <a href=../to_bson/ class=md-nav__link> <span class=md-ellipsis> to_bson </span> </a> </li> <li class=md-nav__item> <a href=../to_cbor/ class=md-nav__link> <span class=md-ellipsis> to_cbor </span> </a> </li> <li class=md-nav__item> <a href=../to_msgpack/ class=md-nav__link> <span class=md-ellipsis> to_msgpack </span> </a> </li> <li class=md-nav__item> <a href=../to_string/ class=md-nav__link> <span class=md-ellipsis> to_string </span> </a> </li> <li class=md-nav__item> <a href=../to_ubjson/ class=md-nav__link> <span class=md-ellipsis> to_ubjson </span> </a> </li> <li class=md-nav__item> <a href=../type/ class=md-nav__link> <span class=md-ellipsis> type </span> </a> </li> <li class=md-nav__item> <a href=../type_error/ class=md-nav__link> <span class=md-ellipsis> type_error </span> </a> </li> <li class=md-nav__item> <a href=../type_name/ class=md-nav__link> <span class=md-ellipsis> type_name </span> </a> </li> <li class=md-nav__item> <a href=../unflatten/ class=md-nav__link> <span class=md-ellipsis> unflatten </span> </a> </li> <li class=md-nav__item> <a href=../update/ class=md-nav__link> <span class=md-ellipsis> update </span> </a> </li> <li class=md-nav__item> <a href=../value/ class=md-nav__link> <span class=md-ellipsis> value </span> </a> </li> <li class=md-nav__item> <a href=../value_t/ class=md-nav__link> <span class=md-ellipsis> value_t </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_2> <div class="md-nav__link md-nav__container"> <a href=../../byte_container_with_subtype/ class="md-nav__link "> <span class=md-ellipsis> byte_container_with_subtype </span> </a> <label class="md-nav__link " for=__nav_4_2 id=__nav_4_2_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_2_label aria-expanded=false> <label class=md-nav__title for=__nav_4_2> <span class="md-nav__icon md-icon"></span> byte_container_with_subtype </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../byte_container_with_subtype/byte_container_with_subtype/ class=md-nav__link> <span class=md-ellipsis> (constructor) </span> </a> </li> <li class=md-nav__item> <a href=../../byte_container_with_subtype/clear_subtype/ class=md-nav__link> <span class=md-ellipsis> clear_subtype </span> </a> </li> <li class=md-nav__item> <a href=../../byte_container_with_subtype/has_subtype/ class=md-nav__link> <span class=md-ellipsis> has_subtype </span> </a> </li> <li class=md-nav__item> <a href=../../byte_container_with_subtype/set_subtype/ class=md-nav__link> <span class=md-ellipsis> set_subtype </span> </a> </li> <li class=md-nav__item> <a href=../../byte_container_with_subtype/subtype/ class=md-nav__link> <span class=md-ellipsis> subtype </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_3> <div class="md-nav__link md-nav__container"> <a href=../../adl_serializer/ class="md-nav__link "> <span class=md-ellipsis> adl_serializer </span> </a> <label class="md-nav__link " for=__nav_4_3 id=__nav_4_3_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_3_label aria-expanded=false> <label class=md-nav__title for=__nav_4_3> <span class="md-nav__icon md-icon"></span> adl_serializer </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../adl_serializer/from_json/ class=md-nav__link> <span class=md-ellipsis> from_json </span> </a> </li> <li class=md-nav__item> <a href=../../adl_serializer/to_json/ class=md-nav__link> <span class=md-ellipsis> to_json </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../json/ class=md-nav__link> <span class=md-ellipsis> json </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_5> <div class="md-nav__link md-nav__container"> <a href=../../json_pointer/ class="md-nav__link "> <span class=md-ellipsis> json_pointer </span> </a> <label class="md-nav__link " for=__nav_4_5 id=__nav_4_5_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_5_label aria-expanded=false> <label class=md-nav__title for=__nav_4_5> <span class="md-nav__icon md-icon"></span> json_pointer </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../json_pointer/json_pointer/ class=md-nav__link> <span class=md-ellipsis> (Constructor) </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/back/ class=md-nav__link> <span class=md-ellipsis> back </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/empty/ class=md-nav__link> <span class=md-ellipsis> empty </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/front/ class=md-nav__link> <span class=md-ellipsis> front </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_string_t/ class=md-nav__link> <span class=md-ellipsis> operator string_t </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_eq/ class=md-nav__link> <span class=md-ellipsis> operator== </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_ne/ class=md-nav__link> <span class=md-ellipsis> operator!= </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_slash/ class=md-nav__link> <span class=md-ellipsis> operator/ </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_slasheq/ class=md-nav__link> <span class=md-ellipsis> operator/= </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/parent_pointer/ class=md-nav__link> <span class=md-ellipsis> parent_pointer </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/pop_back/ class=md-nav__link> <span class=md-ellipsis> pop_back </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/pop_front/ class=md-nav__link> <span class=md-ellipsis> pop_front </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/push_back/ class=md-nav__link> <span class=md-ellipsis> push_back </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/push_front/ class=md-nav__link> <span class=md-ellipsis> push_front </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/string_t/ class=md-nav__link> <span class=md-ellipsis> string_t </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/to_string/ class=md-nav__link> <span class=md-ellipsis> to_string </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_6> <div class="md-nav__link md-nav__container"> <a href=../../json_sax/ class="md-nav__link "> <span class=md-ellipsis> json_sax </span> </a> <label class="md-nav__link " for=__nav_4_6 id=__nav_4_6_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_6_label aria-expanded=false> <label class=md-nav__title for=__nav_4_6> <span class="md-nav__icon md-icon"></span> json_sax </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../json_sax/binary/ class=md-nav__link> <span class=md-ellipsis> binary </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/boolean/ class=md-nav__link> <span class=md-ellipsis> boolean </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/end_array/ class=md-nav__link> <span class=md-ellipsis> end_array </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/end_object/ class=md-nav__link> <span class=md-ellipsis> end_object </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/key/ class=md-nav__link> <span class=md-ellipsis> key </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/null/ class=md-nav__link> <span class=md-ellipsis> null </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/number_float/ class=md-nav__link> <span class=md-ellipsis> number_float </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/number_integer/ class=md-nav__link> <span class=md-ellipsis> number_integer </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/number_unsigned/ class=md-nav__link> <span class=md-ellipsis> number_unsigned </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/parse_error/ class=md-nav__link> <span class=md-ellipsis> parse_error </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/start_array/ class=md-nav__link> <span class=md-ellipsis> start_array </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/start_object/ class=md-nav__link> <span class=md-ellipsis> start_object </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/string/ class=md-nav__link> <span class=md-ellipsis> string </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../operator_ltlt/ class=md-nav__link> <span class=md-ellipsis> operator<<(basic_json), operator<<(json_pointer) </span> </a> </li> <li class=md-nav__item> <a href=../../operator_gtgt/ class=md-nav__link> <span class=md-ellipsis> operator>>(basic_json) </span> </a> </li> <li class=md-nav__item> <a href=../../operator_literal_json/ class=md-nav__link> <span class=md-ellipsis> operator""_json </span> </a> </li> <li class=md-nav__item> <a href=../../operator_literal_json_pointer/ class=md-nav__link> <span class=md-ellipsis> operator""_json_pointer </span> </a> </li> <li class=md-nav__item> <a href=../../ordered_json/ class=md-nav__link> <span class=md-ellipsis> ordered_json </span> </a> </li> <li class=md-nav__item> <a href=../../ordered_map/ class=md-nav__link> <span class=md-ellipsis> ordered_map </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_13> <div class="md-nav__link md-nav__container"> <a href=../../macros/ class="md-nav__link "> <span class=md-ellipsis> macros </span> </a> <label class="md-nav__link " for=__nav_4_13 id=__nav_4_13_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_13_label aria-expanded=false> <label class=md-nav__title for=__nav_4_13> <span class="md-nav__icon md-icon"></span> macros </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../macros/json_assert/ class=md-nav__link> <span class=md-ellipsis> JSON_ASSERT </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_brace_init_copy_semantics/ class=md-nav__link> <span class=md-ellipsis> JSON_BRACE_INIT_COPY_SEMANTICS </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_throw_user/ class=md-nav__link> <span class=md-ellipsis> JSON_CATCH_USER, JSON_THROW_USER, JSON_TRY_USER </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_diagnostics/ class=md-nav__link> <span class=md-ellipsis> JSON_DIAGNOSTICS </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_diagnostic_positions/ class=md-nav__link> <span class=md-ellipsis> JSON_DIAGNOSTIC_POSITIONS </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_disable_enum_serialization/ class=md-nav__link> <span class=md-ellipsis> JSON_DISABLE_ENUM_SERIALIZATION </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_has_cpp_11/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_CPP_11, JSON_HAS_CPP_14, JSON_HAS_CPP_17, JSON_HAS_CPP_20 </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_has_filesystem/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_EXPERIMENTAL_FILESYSTEM, JSON_HAS_FILESYSTEM </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_has_ranges/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_RANGES </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_has_static_rtti/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_STATIC_RTTI </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_has_three_way_comparison/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_THREE_WAY_COMPARISON </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_noexception/ class=md-nav__link> <span class=md-ellipsis> JSON_NOEXCEPTION </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_no_io/ class=md-nav__link> <span class=md-ellipsis> JSON_NO_IO </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_skip_library_version_check/ class=md-nav__link> <span class=md-ellipsis> JSON_SKIP_LIBRARY_VERSION_CHECK </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_skip_unsupported_compiler_check/ class=md-nav__link> <span class=md-ellipsis> JSON_SKIP_UNSUPPORTED_COMPILER_CHECK </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_use_global_udls/ class=md-nav__link> <span class=md-ellipsis> JSON_USE_GLOBAL_UDLS </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_use_implicit_conversions/ class=md-nav__link> <span class=md-ellipsis> JSON_USE_IMPLICIT_CONVERSIONS </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_use_legacy_discarded_value_comparison/ class=md-nav__link> <span class=md-ellipsis> JSON_USE_LEGACY_DISCARDED_VALUE_COMPARISON </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_define_derived_type/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_ONLY_SERIALIZE, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_define_type_intrusive/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_TYPE_INTRUSIVE, NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_TYPE_INTRUSIVE_ONLY_SERIALIZE </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_define_type_non_intrusive/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_define_type_with_names/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_TYPE_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_namespace/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_NAMESPACE </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_namespace_begin/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_NAMESPACE_BEGIN, NLOHMANN_JSON_NAMESPACE_END </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_namespace_no_version/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_NAMESPACE_NO_VERSION </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_serialize_enum/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_SERIALIZE_ENUM </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_serialize_enum_strict/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_SERIALIZE_ENUM_STRICT </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_version_major/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_VERSION_MAJOR, NLOHMANN_JSON_VERSION_MINOR, NLOHMANN_JSON_VERSION_PATCH </span> </a> </li> </ul> </nav> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_5> <div class="md-nav__link md-nav__container"> <a href=../../../community/ class="md-nav__link "> <span class=md-ellipsis> Community </span> </a> <label class="md-nav__link " for=__nav_5 id=__nav_5_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_5_label aria-expanded=false> <label class=md-nav__title for=__nav_5> <span class="md-nav__icon md-icon"></span> Community </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../community/code_of_conduct/ class=md-nav__link> <span class=md-ellipsis> Code of Conduct </span> </a> </li> <li class=md-nav__item> <a href=../../../community/contribution_guidelines/ class=md-nav__link> <span class=md-ellipsis> Contribution Guidelines </span> </a> </li> <li class=md-nav__item> <a href=../../../community/quality_assurance/ class=md-nav__link> <span class=md-ellipsis> Quality assurance </span> </a> </li> <li class=md-nav__item> <a href=../../../community/governance/ class=md-nav__link> <span class=md-ellipsis> Governance </span> </a> </li> <li class=md-nav__item> <a href=../../../community/security_policy/ class=md-nav__link> <span class=md-ellipsis> Security Policy </span> </a> </li> </ul> </nav> </li> </ul> </nav> </div> </div> </div> <div class="md-sidebar md-sidebar--secondary" data-md-component=sidebar data-md-type=toc> <div class=md-sidebar__scrollwrap> <div class=md-sidebar__inner> <nav class="md-nav md-nav--secondary" aria-label="Table of contents"> <label class=md-nav__title for=__toc> <span class="md-nav__icon md-icon"></span> Table of contents </label> <ul class=md-nav__list data-md-component=toc data-md-scrollfix> <li class=md-nav__item> <a href=#return-value class=md-nav__link> <span class=md-ellipsis> Return value </span> </a> </li> <li class=md-nav__item> <a href=#exception-safety class=md-nav__link> <span class=md-ellipsis> Exception safety </span> </a> </li> <li class=md-nav__item> <a href=#complexity class=md-nav__link> <span class=md-ellipsis> Complexity </span> </a> </li> <li class=md-nav__item> <a href=#examples class=md-nav__link> <span class=md-ellipsis> Examples </span> </a> </li> <li class=md-nav__item> <a href=#version-history class=md-nav__link> <span class=md-ellipsis> Version history </span> </a> </li> </ul> </nav> </div> </div> </div> <div class=md-content data-md-component=content> <article class="md-content__inner md-typeset"> <a href="https://github.com/nlohmann/json/edit/develop/docs/mkdocs/docs/api/basic_json/rend.md" title="Edit this page" class="md-content__button md-icon" rel="edit"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M10 20H6V4h7v5h5v3.1l2-2V8l-6-6H6c-1.1 0-2 .9-2 2v16c0 1.1.9 2 2 2h4zm10.2-7c.1 0 .3.1.4.2l1.3 1.3c.2.2.2.6 0 .8l-1 1-2.1-2.1 1-1c.1-.1.2-.2.4-.2m0 3.9L14.1 23H12v-2.1l6.1-6.1z"/></svg> </a> <a href="https://github.com/nlohmann/json/raw/develop/docs/mkdocs/docs/api/basic_json/rend.md" title="View source of this page" class="md-content__button md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M17 18c.56 0 1 .44 1 1s-.44 1-1 1-1-.44-1-1 .44-1 1-1m0-3c-2.73 0-5.06 1.66-6 4 .94 2.34 3.27 4 6 4s5.06-1.66 6-4c-.94-2.34-3.27-4-6-4m0 6.5a2.5 2.5 0 0 1-2.5-2.5 2.5 2.5 0 0 1 2.5-2.5 2.5 2.5 0 0 1 2.5 2.5 2.5 2.5 0 0 1-2.5 2.5M9.27 20H6V4h7v5h5v4.07c.7.08 1.36.25 2 .49V8l-6-6H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h4.5a8.2 8.2 0 0 1-1.23-2"/></svg> </a> <h1 id=nlohmannbasic_jsonrend><small>nlohmann::basic_json::</small>rend<a class=headerlink href=#nlohmannbasic_jsonrend title="Permanent link">&para;</a></h1> <div class=highlight><pre><span></span><code><span class=n>reverse_iterator</span><span class=w> </span><span class=nf>rend</span><span class=p>()</span><span class=w> </span><span class=k>noexcept</span><span class=p>;</span>
 <span class=n>const_reverse_iterator</span><span class=w> </span><span class=nf>rend</span><span class=p>()</span><span class=w> </span><span class=k>const</span><span class=w> </span><span class=k>noexcept</span><span class=p>;</span>
-</code></pre></div> <p>Returns an iterator to the reverse-end; that is, one before the first element. This element acts as a placeholder, attempting to access it results in undefined behavior.</p> <p><img alt="Illustration from cppreference.com" src=../../../images/range-rbegin-rend.svg></p> <h2 id=return-value>Return value<a class=headerlink href=#return-value title="Permanent link">&para;</a></h2> <p>reverse iterator to the element following the last element</p> <h2 id=exception-safety>Exception safety<a class=headerlink href=#exception-safety title="Permanent link">&para;</a></h2> <p>No-throw guarantee: this member function never throws exceptions.</p> <h2 id=complexity>Complexity<a class=headerlink href=#complexity title="Permanent link">&para;</a></h2> <p>Constant.</p> <h2 id=examples>Examples<a class=headerlink href=#examples title="Permanent link">&para;</a></h2> <details class=example> <summary>Example</summary> <p>The following code shows an example for <code>eend()</code>.</p> <div class=highlight><pre><span></span><code><span class=cp>#include</span><span class=w> </span><span class=cpf>&lt;iostream&gt;</span>
+</code></pre></div> <p>Returns an iterator to the reverse-end; that is, one before the first element. This element acts as a placeholder, attempting to access it results in undefined behavior.</p> <p><img alt="Illustration from cppreference.com" src=../../../images/range-rbegin-rend.svg></p> <h2 id=return-value>Return value<a class=headerlink href=#return-value title="Permanent link">&para;</a></h2> <p>reverse iterator to the element following the last element</p> <h2 id=exception-safety>Exception safety<a class=headerlink href=#exception-safety title="Permanent link">&para;</a></h2> <p>No-throw guarantee: this member function never throws exceptions.</p> <h2 id=complexity>Complexity<a class=headerlink href=#complexity title="Permanent link">&para;</a></h2> <p>Constant.</p> <h2 id=examples>Examples<a class=headerlink href=#examples title="Permanent link">&para;</a></h2> <details class=example> <summary>Example</summary> <p>The following code shows an example for <code>rend()</code>.</p> <div class=highlight><pre><span></span><code><span class=cp>#include</span><span class=w> </span><span class=cpf>&lt;iostream&gt;</span>
 <span class=cp>#include</span><span class=w> </span><span class=cpf>&lt;nlohmann/json.hpp&gt;</span>
 
 <span class=k>using</span><span class=w> </span><span class=n>json</span><span class=w> </span><span class=o>=</span><span class=w> </span><span class=n>nlohmann</span><span class=o>::</span><span class=n>json</span><span class=p>;</span>
@@ -20,4 +20,4 @@
 <span class=w>    </span><span class=n>std</span><span class=o>::</span><span class=n>cout</span><span class=w> </span><span class=o>&lt;&lt;</span><span class=w> </span><span class=o>*</span><span class=n>it</span><span class=w> </span><span class=o>&lt;&lt;</span><span class=w> </span><span class=sc>&#39;\n&#39;</span><span class=p>;</span>
 <span class=p>}</span>
 </code></pre></div> <p>Output:</p> <div class=highlight><pre><span></span><code><span class=mi>1</span>
-</code></pre></div> </details> <h2 id=version-history>Version history<a class=headerlink href=#version-history title="Permanent link">&para;</a></h2> <ul> <li>Added in version 1.0.0.</li> </ul> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 23, 2026 11:16:18 UTC">June 23, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
+</code></pre></div> </details> <h2 id=version-history>Version history<a class=headerlink href=#version-history title="Permanent link">&para;</a></h2> <ul> <li>Added in version 1.0.0.</li> </ul> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 29, 2026 20:15:18 UTC">June 29, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
diff --git a/api/basic_json/sax_parse/index.html b/api/basic_json/sax_parse/index.html
index 6cdb51a..f646b68 100644
--- a/api/basic_json/sax_parse/index.html
+++ b/api/basic_json/sax_parse/index.html
@@ -1,4 +1,4 @@
-<!doctype html><html lang=en class=no-js> <head><meta charset=utf-8><meta name=viewport content="width=device-width,initial-scale=1"><meta name=author content="Niels Lohmann"><link href="https://json.nlohmann.me/api/basic_json/sax_parse/" rel="canonical"><link href=../rend/ rel=prev><link href=../size/ rel=next><link rel=icon href=../../../assets/images/favicon.png><meta name=generator content="mkdocs-1.6.1, mkdocs-material-9.7.6"><title>sax_parse - JSON for Modern C++</title><link rel=stylesheet href=../../../assets/stylesheets/main.484c7ddc.min.css><link rel=stylesheet href=../../../assets/stylesheets/palette.ab4e12ef.min.css><link rel="stylesheet" href="../../../assets/external/fonts.googleapis.com/css.61a430c9.css"><style>:root{--md-text-font:"Roboto";--md-code-font:"JetBrains Mono"}</style><link rel=stylesheet href=../../../css/custom.css><script>__md_scope=new URL("../../..",location),__md_hash=e=>[...e].reduce(((e,_)=>(e<<5)-e+_.charCodeAt(0)),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script></head> <body dir=ltr data-md-color-scheme=default data-md-color-primary=indigo data-md-color-accent=indigo> <input class=md-toggle data-md-toggle=drawer type=checkbox id=__drawer autocomplete=off> <input class=md-toggle data-md-toggle=search type=checkbox id=__search autocomplete=off> <label class=md-overlay for=__drawer></label> <div data-md-component=skip> <a href=#nlohmannbasic_jsonsax_parse class=md-skip> Skip to content </a> </div> <div data-md-component=announce> </div> <header class=md-header data-md-component=header> <nav class="md-header__inner md-grid" aria-label=Header> <a href=../../.. title="JSON for Modern C++" class="md-header__button md-logo" aria-label="JSON for Modern C++" data-md-component=logo> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54"/></svg> </a> <label class="md-header__button md-icon" for=__drawer> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M3 6h18v2H3zm0 5h18v2H3zm0 5h18v2H3z"/></svg> </label> <div class=md-header__title data-md-component=header-title> <div class=md-header__ellipsis> <div class=md-header__topic> <span class=md-ellipsis> JSON for Modern C++ </span> </div> <div class=md-header__topic data-md-component=header-topic> <span class=md-ellipsis> sax_parse </span> </div> </div> </div> <form class=md-header__option data-md-component=palette> <input class=md-option data-md-color-media="(prefers-color-scheme: light)" data-md-color-scheme=default data-md-color-primary=indigo data-md-color-accent=indigo aria-label="Switch to dark mode" type=radio name=__palette id=__palette_0> <label class="md-header__button md-icon" title="Switch to dark mode" for=__palette_1 hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a4 4 0 0 0-4 4 4 4 0 0 0 4 4 4 4 0 0 0 4-4 4 4 0 0 0-4-4m0 10a6 6 0 0 1-6-6 6 6 0 0 1 6-6 6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12z"/></svg> </label> <input class=md-option data-md-color-media="(prefers-color-scheme: dark)" data-md-color-scheme=slate data-md-color-primary=indigo data-md-color-accent=indigo aria-label="Switch to light mode" type=radio name=__palette id=__palette_1> <label class="md-header__button md-icon" title="Switch to light mode" for=__palette_0 hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 18c-.89 0-1.74-.2-2.5-.55C11.56 16.5 13 14.42 13 12s-1.44-4.5-3.5-5.45C10.26 6.2 11.11 6 12 6a6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12z"/></svg> </label> </form> <script>var palette=__md_get("__palette");if(palette&&palette.color){if("(prefers-color-scheme)"===palette.color.media){var media=matchMedia("(prefers-color-scheme: light)"),input=document.querySelector(media.matches?"[data-md-color-media='(prefers-color-scheme: light)']":"[data-md-color-media='(prefers-color-scheme: dark)']");palette.color.media=input.getAttribute("data-md-color-media"),palette.color.scheme=input.getAttribute("data-md-color-scheme"),palette.color.primary=input.getAttribute("data-md-color-primary"),palette.color.accent=input.getAttribute("data-md-color-accent")}for(var[key,value]of Object.entries(palette.color))document.body.setAttribute("data-md-color-"+key,value)}</script> <label class="md-header__button md-icon" for=__search> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg> </label> <div class=md-search data-md-component=search role=dialog> <label class=md-search__overlay for=__search></label> <div class=md-search__inner role=search> <form class=md-search__form name=search> <input type=text class=md-search__input name=query aria-label=Search placeholder=Search autocapitalize=off autocorrect=off autocomplete=off spellcheck=false data-md-component=search-query required> <label class="md-search__icon md-icon" for=__search> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11z"/></svg> </label> <nav class=md-search__options aria-label=Search> <button type=reset class="md-search__icon md-icon" title=Clear aria-label=Clear tabindex=-1> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z"/></svg> </button> </nav> </form> <div class=md-search__output> <div class=md-search__scrollwrap tabindex=0 data-md-scrollfix> <div class=md-search-result data-md-component=search-result> <div class=md-search-result__meta> Initializing search </div> <ol class=md-search-result__list role=presentation></ol> </div> </div> </div> </div> </div> <div class=md-header__source> <a href="https://github.com/nlohmann/json" title="Go to repository" class="md-source" data-md-component="source"> <div class="md-source__icon md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </div> <div class=md-source__repository> nlohmann/json </div> </a> </div> </nav> </header> <div class=md-container data-md-component=container> <nav class=md-tabs aria-label=Tabs data-md-component=tabs> <div class=md-grid> <ul class=md-tabs__list> <li class=md-tabs__item> <a href=../../.. class=md-tabs__link> Home </a> </li> <li class=md-tabs__item> <a href=../../../features/arbitrary_types/ class=md-tabs__link> Features </a> </li> <li class=md-tabs__item> <a href=../../../integration/ class=md-tabs__link> Integration </a> </li> <li class="md-tabs__item md-tabs__item--active"> <a href=../ class=md-tabs__link> API Documentation </a> </li> <li class=md-tabs__item> <a href=../../../community/ class=md-tabs__link> Community </a> </li> </ul> </div> </nav> <main class=md-main data-md-component=main> <div class="md-main__inner md-grid"> <div class="md-sidebar md-sidebar--primary" data-md-component=sidebar data-md-type=navigation> <div class=md-sidebar__scrollwrap> <div class=md-sidebar__inner> <nav class="md-nav md-nav--primary md-nav--lifted" aria-label=Navigation data-md-level=0> <label class=md-nav__title for=__drawer> <a href=../../.. title="JSON for Modern C++" class="md-nav__button md-logo" aria-label="JSON for Modern C++" data-md-component=logo> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54"/></svg> </a> JSON for Modern C++ </label> <div class=md-nav__source> <a href="https://github.com/nlohmann/json" title="Go to repository" class="md-source" data-md-component="source"> <div class="md-source__icon md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </div> <div class=md-source__repository> nlohmann/json </div> </a> </div> <ul class=md-nav__list data-md-scrollfix> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_1> <div class="md-nav__link md-nav__container"> <a href=../../.. class="md-nav__link "> <span class=md-ellipsis> Home </span> </a> <label class="md-nav__link " for=__nav_1 id=__nav_1_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_1_label aria-expanded=false> <label class=md-nav__title for=__nav_1> <span class="md-nav__icon md-icon"></span> Home </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../home/license/ class=md-nav__link> <span class=md-ellipsis> License </span> </a> </li> <li class=md-nav__item> <a href=../../../home/faq/ class=md-nav__link> <span class=md-ellipsis> FAQ </span> </a> </li> <li class=md-nav__item> <a href=../../../home/exceptions/ class=md-nav__link> <span class=md-ellipsis> Exceptions </span> </a> </li> <li class=md-nav__item> <a href=../../../home/releases/ class=md-nav__link> <span class=md-ellipsis> Releases </span> </a> </li> <li class=md-nav__item> <a href=../../../home/design_goals/ class=md-nav__link> <span class=md-ellipsis> Design goals </span> </a> </li> <li class=md-nav__item> <a href=../../../home/architecture/ class=md-nav__link> <span class=md-ellipsis> Architecture </span> </a> </li> <li class=md-nav__item> <a href=../../../home/customers/ class=md-nav__link> <span class=md-ellipsis> Customers </span> </a> </li> <li class=md-nav__item> <a href=../../../home/sponsors/ class=md-nav__link> <span class=md-ellipsis> Sponsors </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2> <label class=md-nav__link for=__nav_2 id=__nav_2_label tabindex=0> <span class=md-ellipsis> Features </span> <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_2_label aria-expanded=false> <label class=md-nav__title for=__nav_2> <span class="md-nav__icon md-icon"></span> Features </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/arbitrary_types/ class=md-nav__link> <span class=md-ellipsis> Arbitrary Type Conversions </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_2> <div class="md-nav__link md-nav__container"> <a href=../../../features/binary_formats/ class="md-nav__link "> <span class=md-ellipsis> Binary Formats </span> </a> <label class="md-nav__link " for=__nav_2_2 id=__nav_2_2_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_2_label aria-expanded=false> <label class=md-nav__title for=__nav_2_2> <span class="md-nav__icon md-icon"></span> Binary Formats </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/binary_formats/bjdata/ class=md-nav__link> <span class=md-ellipsis> BJData </span> </a> </li> <li class=md-nav__item> <a href=../../../features/binary_formats/bson/ class=md-nav__link> <span class=md-ellipsis> BSON </span> </a> </li> <li class=md-nav__item> <a href=../../../features/binary_formats/cbor/ class=md-nav__link> <span class=md-ellipsis> CBOR </span> </a> </li> <li class=md-nav__item> <a href=../../../features/binary_formats/messagepack/ class=md-nav__link> <span class=md-ellipsis> MessagePack </span> </a> </li> <li class=md-nav__item> <a href=../../../features/binary_formats/ubjson/ class=md-nav__link> <span class=md-ellipsis> UBJSON </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../../features/binary_values/ class=md-nav__link> <span class=md-ellipsis> Binary Values </span> </a> </li> <li class=md-nav__item> <a href=../../../features/comments/ class=md-nav__link> <span class=md-ellipsis> Comments </span> </a> </li> <li class=md-nav__item> <a href=../../../features/trailing_commas/ class=md-nav__link> <span class=md-ellipsis> Trailing Commas </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_6> <div class="md-nav__link md-nav__container"> <a href=../../../features/element_access/ class="md-nav__link "> <span class=md-ellipsis> Element Access </span> </a> <label class="md-nav__link " for=__nav_2_6 id=__nav_2_6_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_6_label aria-expanded=false> <label class=md-nav__title for=__nav_2_6> <span class="md-nav__icon md-icon"></span> Element Access </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/element_access/unchecked_access/ class=md-nav__link> <span class=md-ellipsis> Unchecked access: operator[] </span> </a> </li> <li class=md-nav__item> <a href=../../../features/element_access/checked_access/ class=md-nav__link> <span class=md-ellipsis> Checked access: at </span> </a> </li> <li class=md-nav__item> <a href=../../../features/element_access/default_value/ class=md-nav__link> <span class=md-ellipsis> Access with default value: value </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../../features/iterators/ class=md-nav__link> <span class=md-ellipsis> Iterators </span> </a> </li> <li class=md-nav__item> <a href=../../../features/json_pointer/ class=md-nav__link> <span class=md-ellipsis> JSON Pointer </span> </a> </li> <li class=md-nav__item> <a href=../../../features/json_patch/ class=md-nav__link> <span class=md-ellipsis> JSON Patch and Diff </span> </a> </li> <li class=md-nav__item> <a href=../../../features/merge_patch/ class=md-nav__link> <span class=md-ellipsis> JSON Merge Patch </span> </a> </li> <li class=md-nav__item> <a href=../../../features/modules/ class=md-nav__link> <span class=md-ellipsis> Modules </span> </a> </li> <li class=md-nav__item> <a href=../../../features/namespace/ class=md-nav__link> <span class=md-ellipsis> nlohmann Namespace </span> </a> </li> <li class=md-nav__item> <a href=../../../features/object_order/ class=md-nav__link> <span class=md-ellipsis> Object Order </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_14> <div class="md-nav__link md-nav__container"> <a href=../../../features/parsing/ class="md-nav__link "> <span class=md-ellipsis> Parsing </span> </a> <label class="md-nav__link " for=__nav_2_14 id=__nav_2_14_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_14_label aria-expanded=false> <label class=md-nav__title for=__nav_2_14> <span class="md-nav__icon md-icon"></span> Parsing </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/parsing/json_lines/ class=md-nav__link> <span class=md-ellipsis> JSON Lines </span> </a> </li> <li class=md-nav__item> <a href=../../../features/parsing/parse_exceptions/ class=md-nav__link> <span class=md-ellipsis> Parsing and Exceptions </span> </a> </li> <li class=md-nav__item> <a href=../../../features/parsing/parser_callbacks/ class=md-nav__link> <span class=md-ellipsis> Parser Callbacks </span> </a> </li> <li class=md-nav__item> <a href=../../../features/parsing/sax_interface/ class=md-nav__link> <span class=md-ellipsis> SAX Interface </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../../features/assertions/ class=md-nav__link> <span class=md-ellipsis> Runtime Assertions </span> </a> </li> <li class=md-nav__item> <a href=../../../features/enum_conversion/ class=md-nav__link> <span class=md-ellipsis> Specializing enum conversion </span> </a> </li> <li class=md-nav__item> <a href=../../../features/macros/ class=md-nav__link> <span class=md-ellipsis> Supported Macros </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_18> <div class="md-nav__link md-nav__container"> <a href=../../../features/types/ class="md-nav__link "> <span class=md-ellipsis> Types </span> </a> <label class="md-nav__link " for=__nav_2_18 id=__nav_2_18_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_18_label aria-expanded=false> <label class=md-nav__title for=__nav_2_18> <span class="md-nav__icon md-icon"></span> Types </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/types/number_handling/ class=md-nav__link> <span class=md-ellipsis> Number Handling </span> </a> </li> </ul> </nav> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_3> <div class="md-nav__link md-nav__container"> <a href=../../../integration/ class="md-nav__link "> <span class=md-ellipsis> Integration </span> </a> <label class="md-nav__link " for=__nav_3 id=__nav_3_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_3_label aria-expanded=false> <label class=md-nav__title for=__nav_3> <span class="md-nav__icon md-icon"></span> Integration </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../integration/migration_guide/ class=md-nav__link> <span class=md-ellipsis> Migration Guide </span> </a> </li> <li class=md-nav__item> <a href=../../../integration/cmake/ class=md-nav__link> <span class=md-ellipsis> CMake </span> </a> </li> <li class=md-nav__item> <a href=../../../integration/package_managers/ class=md-nav__link> <span class=md-ellipsis> Package Managers </span> </a> </li> <li class=md-nav__item> <a href=../../../integration/pkg-config/ class=md-nav__link> <span class=md-ellipsis> Pkg-config </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--active md-nav__item--section md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4 checked> <label class=md-nav__link for=__nav_4 id=__nav_4_label tabindex> <span class=md-ellipsis> API Documentation </span> <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_4_label aria-expanded=true> <label class=md-nav__title for=__nav_4> <span class="md-nav__icon md-icon"></span> API Documentation </label> <ul class=md-nav__list data-md-scrollfix> <li class="md-nav__item md-nav__item--active md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_1 checked> <div class="md-nav__link md-nav__container"> <a href=../ class="md-nav__link "> <span class=md-ellipsis> basic_json </span> </a> <label class="md-nav__link " for=__nav_4_1 id=__nav_4_1_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_1_label aria-expanded=true> <label class=md-nav__title for=__nav_4_1> <span class="md-nav__icon md-icon"></span> basic_json </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../basic_json/ class=md-nav__link> <span class=md-ellipsis> (Constructor) </span> </a> </li> <li class=md-nav__item> <a href=../~basic_json/ class=md-nav__link> <span class=md-ellipsis> (Destructor) </span> </a> </li> <li class=md-nav__item> <a href=../accept/ class=md-nav__link> <span class=md-ellipsis> accept </span> </a> </li> <li class=md-nav__item> <a href=../array/ class=md-nav__link> <span class=md-ellipsis> array </span> </a> </li> <li class=md-nav__item> <a href=../array_t/ class=md-nav__link> <span class=md-ellipsis> array_t </span> </a> </li> <li class=md-nav__item> <a href=../at/ class=md-nav__link> <span class=md-ellipsis> at </span> </a> </li> <li class=md-nav__item> <a href=../back/ class=md-nav__link> <span class=md-ellipsis> back </span> </a> </li> <li class=md-nav__item> <a href=../begin/ class=md-nav__link> <span class=md-ellipsis> begin </span> </a> </li> <li class=md-nav__item> <a href=../binary/ class=md-nav__link> <span class=md-ellipsis> binary </span> </a> </li> <li class=md-nav__item> <a href=../binary_t/ class=md-nav__link> <span class=md-ellipsis> binary_t </span> </a> </li> <li class=md-nav__item> <a href=../boolean_t/ class=md-nav__link> <span class=md-ellipsis> boolean_t </span> </a> </li> <li class=md-nav__item> <a href=../cbegin/ class=md-nav__link> <span class=md-ellipsis> cbegin </span> </a> </li> <li class=md-nav__item> <a href=../cbor_tag_handler_t/ class=md-nav__link> <span class=md-ellipsis> cbor_tag_handler_t </span> </a> </li> <li class=md-nav__item> <a href=../cend/ class=md-nav__link> <span class=md-ellipsis> cend </span> </a> </li> <li class=md-nav__item> <a href=../clear/ class=md-nav__link> <span class=md-ellipsis> clear </span> </a> </li> <li class=md-nav__item> <a href=../contains/ class=md-nav__link> <span class=md-ellipsis> contains </span> </a> </li> <li class=md-nav__item> <a href=../count/ class=md-nav__link> <span class=md-ellipsis> count </span> </a> </li> <li class=md-nav__item> <a href=../crbegin/ class=md-nav__link> <span class=md-ellipsis> crbegin </span> </a> </li> <li class=md-nav__item> <a href=../crend/ class=md-nav__link> <span class=md-ellipsis> crend </span> </a> </li> <li class=md-nav__item> <a href=../default_object_comparator_t/ class=md-nav__link> <span class=md-ellipsis> default_object_comparator_t </span> </a> </li> <li class=md-nav__item> <a href=../diff/ class=md-nav__link> <span class=md-ellipsis> diff </span> </a> </li> <li class=md-nav__item> <a href=../dump/ class=md-nav__link> <span class=md-ellipsis> dump </span> </a> </li> <li class=md-nav__item> <a href=../emplace/ class=md-nav__link> <span class=md-ellipsis> emplace </span> </a> </li> <li class=md-nav__item> <a href=../emplace_back/ class=md-nav__link> <span class=md-ellipsis> emplace_back </span> </a> </li> <li class=md-nav__item> <a href=../empty/ class=md-nav__link> <span class=md-ellipsis> empty </span> </a> </li> <li class=md-nav__item> <a href=../end/ class=md-nav__link> <span class=md-ellipsis> end </span> </a> </li> <li class=md-nav__item> <a href=../end_pos/ class=md-nav__link> <span class=md-ellipsis> end_pos </span> </a> </li> <li class=md-nav__item> <a href=../erase/ class=md-nav__link> <span class=md-ellipsis> erase </span> </a> </li> <li class=md-nav__item> <a href=../error_handler_t/ class=md-nav__link> <span class=md-ellipsis> error_handler_t </span> </a> </li> <li class=md-nav__item> <a href=../exception/ class=md-nav__link> <span class=md-ellipsis> exception </span> </a> </li> <li class=md-nav__item> <a href=../find/ class=md-nav__link> <span class=md-ellipsis> find </span> </a> </li> <li class=md-nav__item> <a href=../flatten/ class=md-nav__link> <span class=md-ellipsis> flatten </span> </a> </li> <li class=md-nav__item> <a href=../from_bjdata/ class=md-nav__link> <span class=md-ellipsis> from_bjdata </span> </a> </li> <li class=md-nav__item> <a href=../from_bson/ class=md-nav__link> <span class=md-ellipsis> from_bson </span> </a> </li> <li class=md-nav__item> <a href=../from_cbor/ class=md-nav__link> <span class=md-ellipsis> from_cbor </span> </a> </li> <li class=md-nav__item> <a href=../from_msgpack/ class=md-nav__link> <span class=md-ellipsis> from_msgpack </span> </a> </li> <li class=md-nav__item> <a href=../from_ubjson/ class=md-nav__link> <span class=md-ellipsis> from_ubjson </span> </a> </li> <li class=md-nav__item> <a href=../front/ class=md-nav__link> <span class=md-ellipsis> front </span> </a> </li> <li class=md-nav__item> <a href=../get/ class=md-nav__link> <span class=md-ellipsis> get </span> </a> </li> <li class=md-nav__item> <a href=../get_allocator/ class=md-nav__link> <span class=md-ellipsis> get_allocator </span> </a> </li> <li class=md-nav__item> <a href=../get_binary/ class=md-nav__link> <span class=md-ellipsis> get_binary </span> </a> </li> <li class=md-nav__item> <a href=../get_ptr/ class=md-nav__link> <span class=md-ellipsis> get_ptr </span> </a> </li> <li class=md-nav__item> <a href=../get_ref/ class=md-nav__link> <span class=md-ellipsis> get_ref </span> </a> </li> <li class=md-nav__item> <a href=../get_to/ class=md-nav__link> <span class=md-ellipsis> get_to </span> </a> </li> <li class=md-nav__item> <a href=../std_hash/ class=md-nav__link> <span class=md-ellipsis> std::hash&lt;basic_json&gt; </span> </a> </li> <li class=md-nav__item> <a href=../input_format_t/ class=md-nav__link> <span class=md-ellipsis> input_format_t </span> </a> </li> <li class=md-nav__item> <a href=../insert/ class=md-nav__link> <span class=md-ellipsis> insert </span> </a> </li> <li class=md-nav__item> <a href=../invalid_iterator/ class=md-nav__link> <span class=md-ellipsis> invalid_iterator </span> </a> </li> <li class=md-nav__item> <a href=../is_array/ class=md-nav__link> <span class=md-ellipsis> is_array </span> </a> </li> <li class=md-nav__item> <a href=../is_binary/ class=md-nav__link> <span class=md-ellipsis> is_binary </span> </a> </li> <li class=md-nav__item> <a href=../is_boolean/ class=md-nav__link> <span class=md-ellipsis> is_boolean </span> </a> </li> <li class=md-nav__item> <a href=../is_discarded/ class=md-nav__link> <span class=md-ellipsis> is_discarded </span> </a> </li> <li class=md-nav__item> <a href=../is_null/ class=md-nav__link> <span class=md-ellipsis> is_null </span> </a> </li> <li class=md-nav__item> <a href=../is_number/ class=md-nav__link> <span class=md-ellipsis> is_number </span> </a> </li> <li class=md-nav__item> <a href=../is_number_float/ class=md-nav__link> <span class=md-ellipsis> is_number_float </span> </a> </li> <li class=md-nav__item> <a href=../is_number_integer/ class=md-nav__link> <span class=md-ellipsis> is_number_integer </span> </a> </li> <li class=md-nav__item> <a href=../is_number_unsigned/ class=md-nav__link> <span class=md-ellipsis> is_number_unsigned </span> </a> </li> <li class=md-nav__item> <a href=../is_object/ class=md-nav__link> <span class=md-ellipsis> is_object </span> </a> </li> <li class=md-nav__item> <a href=../is_primitive/ class=md-nav__link> <span class=md-ellipsis> is_primitive </span> </a> </li> <li class=md-nav__item> <a href=../is_string/ class=md-nav__link> <span class=md-ellipsis> is_string </span> </a> </li> <li class=md-nav__item> <a href=../is_structured/ class=md-nav__link> <span class=md-ellipsis> is_structured </span> </a> </li> <li class=md-nav__item> <a href=../items/ class=md-nav__link> <span class=md-ellipsis> items </span> </a> </li> <li class=md-nav__item> <a href=../json_base_class_t/ class=md-nav__link> <span class=md-ellipsis> json_base_class_t </span> </a> </li> <li class=md-nav__item> <a href=../json_serializer/ class=md-nav__link> <span class=md-ellipsis> json_serializer </span> </a> </li> <li class=md-nav__item> <a href=../max_size/ class=md-nav__link> <span class=md-ellipsis> max_size </span> </a> </li> <li class=md-nav__item> <a href=../meta/ class=md-nav__link> <span class=md-ellipsis> meta </span> </a> </li> <li class=md-nav__item> <a href=../merge_patch/ class=md-nav__link> <span class=md-ellipsis> merge_patch </span> </a> </li> <li class=md-nav__item> <a href=../number_float_t/ class=md-nav__link> <span class=md-ellipsis> number_float_t </span> </a> </li> <li class=md-nav__item> <a href=../number_integer_t/ class=md-nav__link> <span class=md-ellipsis> number_integer_t </span> </a> </li> <li class=md-nav__item> <a href=../number_unsigned_t/ class=md-nav__link> <span class=md-ellipsis> number_unsigned_t </span> </a> </li> <li class=md-nav__item> <a href=../object/ class=md-nav__link> <span class=md-ellipsis> object </span> </a> </li> <li class=md-nav__item> <a href=../object_comparator_t/ class=md-nav__link> <span class=md-ellipsis> object_comparator_t </span> </a> </li> <li class=md-nav__item> <a href=../object_t/ class=md-nav__link> <span class=md-ellipsis> object_t </span> </a> </li> <li class=md-nav__item> <a href=../operator_ValueType/ class=md-nav__link> <span class=md-ellipsis> operator ValueType </span> </a> </li> <li class=md-nav__item> <a href=../operator_value_t/ class=md-nav__link> <span class=md-ellipsis> operator value_t </span> </a> </li> <li class=md-nav__item> <a href=../operator%5B%5D/ class=md-nav__link> <span class=md-ellipsis> operator[] </span> </a> </li> <li class=md-nav__item> <a href=../operator%3D/ class=md-nav__link> <span class=md-ellipsis> operator= </span> </a> </li> <li class=md-nav__item> <a href=../operator%2B%3D/ class=md-nav__link> <span class=md-ellipsis> operator+= </span> </a> </li> <li class=md-nav__item> <a href=../operator_eq/ class=md-nav__link> <span class=md-ellipsis> operator== </span> </a> </li> <li class=md-nav__item> <a href=../operator_ne/ class=md-nav__link> <span class=md-ellipsis> operator!= </span> </a> </li> <li class=md-nav__item> <a href=../operator_lt/ class=md-nav__link> <span class=md-ellipsis> operator< </span> </a> </li> <li class=md-nav__item> <a href=../operator_gt/ class=md-nav__link> <span class=md-ellipsis> operator> </span> </a> </li> <li class=md-nav__item> <a href=../operator_le/ class=md-nav__link> <span class=md-ellipsis> operator<= </span> </a> </li> <li class=md-nav__item> <a href=../operator_ge/ class=md-nav__link> <span class=md-ellipsis> operator>= </span> </a> </li> <li class=md-nav__item> <a href=../operator_spaceship/ class=md-nav__link> <span class=md-ellipsis> operator<=> </span> </a> </li> <li class=md-nav__item> <a href=../out_of_range/ class=md-nav__link> <span class=md-ellipsis> out_of_range </span> </a> </li> <li class=md-nav__item> <a href=../other_error/ class=md-nav__link> <span class=md-ellipsis> other_error </span> </a> </li> <li class=md-nav__item> <a href=../parse/ class=md-nav__link> <span class=md-ellipsis> parse </span> </a> </li> <li class=md-nav__item> <a href=../parse_error/ class=md-nav__link> <span class=md-ellipsis> parse_error </span> </a> </li> <li class=md-nav__item> <a href=../parse_event_t/ class=md-nav__link> <span class=md-ellipsis> parse_event_t </span> </a> </li> <li class=md-nav__item> <a href=../parser_callback_t/ class=md-nav__link> <span class=md-ellipsis> parser_callback_t </span> </a> </li> <li class=md-nav__item> <a href=../patch/ class=md-nav__link> <span class=md-ellipsis> patch </span> </a> </li> <li class=md-nav__item> <a href=../patch_inplace/ class=md-nav__link> <span class=md-ellipsis> patch_inplace </span> </a> </li> <li class=md-nav__item> <a href=../push_back/ class=md-nav__link> <span class=md-ellipsis> push_back </span> </a> </li> <li class=md-nav__item> <a href=../rbegin/ class=md-nav__link> <span class=md-ellipsis> rbegin </span> </a> </li> <li class=md-nav__item> <a href=../rend/ class=md-nav__link> <span class=md-ellipsis> rend </span> </a> </li> <li class="md-nav__item md-nav__item--active"> <input class="md-nav__toggle md-toggle" type=checkbox id=__toc> <label class="md-nav__link md-nav__link--active" for=__toc> <span class=md-ellipsis> sax_parse </span> <span class="md-nav__icon md-icon"></span> </label> <a href=./ class="md-nav__link md-nav__link--active"> <span class=md-ellipsis> sax_parse </span> </a> <nav class="md-nav md-nav--secondary" aria-label="Table of contents"> <label class=md-nav__title for=__toc> <span class="md-nav__icon md-icon"></span> Table of contents </label> <ul class=md-nav__list data-md-component=toc data-md-scrollfix> <li class=md-nav__item> <a href=#template-parameters class=md-nav__link> <span class=md-ellipsis> Template parameters </span> </a> </li> <li class=md-nav__item> <a href=#parameters class=md-nav__link> <span class=md-ellipsis> Parameters </span> </a> </li> <li class=md-nav__item> <a href=#return-value class=md-nav__link> <span class=md-ellipsis> Return value </span> </a> </li> <li class=md-nav__item> <a href=#exception-safety class=md-nav__link> <span class=md-ellipsis> Exception safety </span> </a> </li> <li class=md-nav__item> <a href=#exceptions class=md-nav__link> <span class=md-ellipsis> Exceptions </span> </a> </li> <li class=md-nav__item> <a href=#complexity class=md-nav__link> <span class=md-ellipsis> Complexity </span> </a> </li> <li class=md-nav__item> <a href=#notes class=md-nav__link> <span class=md-ellipsis> Notes </span> </a> </li> <li class=md-nav__item> <a href=#examples class=md-nav__link> <span class=md-ellipsis> Examples </span> </a> </li> <li class=md-nav__item> <a href=#version-history class=md-nav__link> <span class=md-ellipsis> Version history </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../size/ class=md-nav__link> <span class=md-ellipsis> size </span> </a> </li> <li class=md-nav__item> <a href=../start_pos/ class=md-nav__link> <span class=md-ellipsis> start_pos </span> </a> </li> <li class=md-nav__item> <a href=../string_t/ class=md-nav__link> <span class=md-ellipsis> string_t </span> </a> </li> <li class=md-nav__item> <a href=../swap/ class=md-nav__link> <span class=md-ellipsis> swap </span> </a> </li> <li class=md-nav__item> <a href=../std_swap/ class=md-nav__link> <span class=md-ellipsis> std::swap&lt;basic_json&gt; </span> </a> </li> <li class=md-nav__item> <a href=../to_bjdata/ class=md-nav__link> <span class=md-ellipsis> to_bjdata </span> </a> </li> <li class=md-nav__item> <a href=../to_bson/ class=md-nav__link> <span class=md-ellipsis> to_bson </span> </a> </li> <li class=md-nav__item> <a href=../to_cbor/ class=md-nav__link> <span class=md-ellipsis> to_cbor </span> </a> </li> <li class=md-nav__item> <a href=../to_msgpack/ class=md-nav__link> <span class=md-ellipsis> to_msgpack </span> </a> </li> <li class=md-nav__item> <a href=../to_string/ class=md-nav__link> <span class=md-ellipsis> to_string </span> </a> </li> <li class=md-nav__item> <a href=../to_ubjson/ class=md-nav__link> <span class=md-ellipsis> to_ubjson </span> </a> </li> <li class=md-nav__item> <a href=../type/ class=md-nav__link> <span class=md-ellipsis> type </span> </a> </li> <li class=md-nav__item> <a href=../type_error/ class=md-nav__link> <span class=md-ellipsis> type_error </span> </a> </li> <li class=md-nav__item> <a href=../type_name/ class=md-nav__link> <span class=md-ellipsis> type_name </span> </a> </li> <li class=md-nav__item> <a href=../unflatten/ class=md-nav__link> <span class=md-ellipsis> unflatten </span> </a> </li> <li class=md-nav__item> <a href=../update/ class=md-nav__link> <span class=md-ellipsis> update </span> </a> </li> <li class=md-nav__item> <a href=../value/ class=md-nav__link> <span class=md-ellipsis> value </span> </a> </li> <li class=md-nav__item> <a href=../value_t/ class=md-nav__link> <span class=md-ellipsis> value_t </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_2> <div class="md-nav__link md-nav__container"> <a href=../../byte_container_with_subtype/ class="md-nav__link "> <span class=md-ellipsis> byte_container_with_subtype </span> </a> <label class="md-nav__link " for=__nav_4_2 id=__nav_4_2_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_2_label aria-expanded=false> <label class=md-nav__title for=__nav_4_2> <span class="md-nav__icon md-icon"></span> byte_container_with_subtype </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../byte_container_with_subtype/byte_container_with_subtype/ class=md-nav__link> <span class=md-ellipsis> (constructor) </span> </a> </li> <li class=md-nav__item> <a href=../../byte_container_with_subtype/clear_subtype/ class=md-nav__link> <span class=md-ellipsis> clear_subtype </span> </a> </li> <li class=md-nav__item> <a href=../../byte_container_with_subtype/has_subtype/ class=md-nav__link> <span class=md-ellipsis> has_subtype </span> </a> </li> <li class=md-nav__item> <a href=../../byte_container_with_subtype/set_subtype/ class=md-nav__link> <span class=md-ellipsis> set_subtype </span> </a> </li> <li class=md-nav__item> <a href=../../byte_container_with_subtype/subtype/ class=md-nav__link> <span class=md-ellipsis> subtype </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_3> <div class="md-nav__link md-nav__container"> <a href=../../adl_serializer/ class="md-nav__link "> <span class=md-ellipsis> adl_serializer </span> </a> <label class="md-nav__link " for=__nav_4_3 id=__nav_4_3_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_3_label aria-expanded=false> <label class=md-nav__title for=__nav_4_3> <span class="md-nav__icon md-icon"></span> adl_serializer </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../adl_serializer/from_json/ class=md-nav__link> <span class=md-ellipsis> from_json </span> </a> </li> <li class=md-nav__item> <a href=../../adl_serializer/to_json/ class=md-nav__link> <span class=md-ellipsis> to_json </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../json/ class=md-nav__link> <span class=md-ellipsis> json </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_5> <div class="md-nav__link md-nav__container"> <a href=../../json_pointer/ class="md-nav__link "> <span class=md-ellipsis> json_pointer </span> </a> <label class="md-nav__link " for=__nav_4_5 id=__nav_4_5_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_5_label aria-expanded=false> <label class=md-nav__title for=__nav_4_5> <span class="md-nav__icon md-icon"></span> json_pointer </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../json_pointer/json_pointer/ class=md-nav__link> <span class=md-ellipsis> (Constructor) </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/back/ class=md-nav__link> <span class=md-ellipsis> back </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/empty/ class=md-nav__link> <span class=md-ellipsis> empty </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/front/ class=md-nav__link> <span class=md-ellipsis> front </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_string_t/ class=md-nav__link> <span class=md-ellipsis> operator string_t </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_eq/ class=md-nav__link> <span class=md-ellipsis> operator== </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_ne/ class=md-nav__link> <span class=md-ellipsis> operator!= </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_slash/ class=md-nav__link> <span class=md-ellipsis> operator/ </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_slasheq/ class=md-nav__link> <span class=md-ellipsis> operator/= </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/parent_pointer/ class=md-nav__link> <span class=md-ellipsis> parent_pointer </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/pop_back/ class=md-nav__link> <span class=md-ellipsis> pop_back </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/pop_front/ class=md-nav__link> <span class=md-ellipsis> pop_front </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/push_back/ class=md-nav__link> <span class=md-ellipsis> push_back </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/push_front/ class=md-nav__link> <span class=md-ellipsis> push_front </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/string_t/ class=md-nav__link> <span class=md-ellipsis> string_t </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/to_string/ class=md-nav__link> <span class=md-ellipsis> to_string </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_6> <div class="md-nav__link md-nav__container"> <a href=../../json_sax/ class="md-nav__link "> <span class=md-ellipsis> json_sax </span> </a> <label class="md-nav__link " for=__nav_4_6 id=__nav_4_6_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_6_label aria-expanded=false> <label class=md-nav__title for=__nav_4_6> <span class="md-nav__icon md-icon"></span> json_sax </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../json_sax/binary/ class=md-nav__link> <span class=md-ellipsis> binary </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/boolean/ class=md-nav__link> <span class=md-ellipsis> boolean </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/end_array/ class=md-nav__link> <span class=md-ellipsis> end_array </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/end_object/ class=md-nav__link> <span class=md-ellipsis> end_object </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/key/ class=md-nav__link> <span class=md-ellipsis> key </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/null/ class=md-nav__link> <span class=md-ellipsis> null </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/number_float/ class=md-nav__link> <span class=md-ellipsis> number_float </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/number_integer/ class=md-nav__link> <span class=md-ellipsis> number_integer </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/number_unsigned/ class=md-nav__link> <span class=md-ellipsis> number_unsigned </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/parse_error/ class=md-nav__link> <span class=md-ellipsis> parse_error </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/start_array/ class=md-nav__link> <span class=md-ellipsis> start_array </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/start_object/ class=md-nav__link> <span class=md-ellipsis> start_object </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/string/ class=md-nav__link> <span class=md-ellipsis> string </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../operator_ltlt/ class=md-nav__link> <span class=md-ellipsis> operator<<(basic_json), operator<<(json_pointer) </span> </a> </li> <li class=md-nav__item> <a href=../../operator_gtgt/ class=md-nav__link> <span class=md-ellipsis> operator>>(basic_json) </span> </a> </li> <li class=md-nav__item> <a href=../../operator_literal_json/ class=md-nav__link> <span class=md-ellipsis> operator""_json </span> </a> </li> <li class=md-nav__item> <a href=../../operator_literal_json_pointer/ class=md-nav__link> <span class=md-ellipsis> operator""_json_pointer </span> </a> </li> <li class=md-nav__item> <a href=../../ordered_json/ class=md-nav__link> <span class=md-ellipsis> ordered_json </span> </a> </li> <li class=md-nav__item> <a href=../../ordered_map/ class=md-nav__link> <span class=md-ellipsis> ordered_map </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_13> <div class="md-nav__link md-nav__container"> <a href=../../macros/ class="md-nav__link "> <span class=md-ellipsis> macros </span> </a> <label class="md-nav__link " for=__nav_4_13 id=__nav_4_13_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_13_label aria-expanded=false> <label class=md-nav__title for=__nav_4_13> <span class="md-nav__icon md-icon"></span> macros </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../macros/json_assert/ class=md-nav__link> <span class=md-ellipsis> JSON_ASSERT </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_brace_init_copy_semantics/ class=md-nav__link> <span class=md-ellipsis> JSON_BRACE_INIT_COPY_SEMANTICS </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_throw_user/ class=md-nav__link> <span class=md-ellipsis> JSON_CATCH_USER, JSON_THROW_USER, JSON_TRY_USER </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_diagnostics/ class=md-nav__link> <span class=md-ellipsis> JSON_DIAGNOSTICS </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_diagnostic_positions/ class=md-nav__link> <span class=md-ellipsis> JSON_DIAGNOSTIC_POSITIONS </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_disable_enum_serialization/ class=md-nav__link> <span class=md-ellipsis> JSON_DISABLE_ENUM_SERIALIZATION </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_has_cpp_11/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_CPP_11, JSON_HAS_CPP_14, JSON_HAS_CPP_17, JSON_HAS_CPP_20 </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_has_filesystem/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_EXPERIMENTAL_FILESYSTEM, JSON_HAS_FILESYSTEM </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_has_ranges/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_RANGES </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_has_static_rtti/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_STATIC_RTTI </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_has_three_way_comparison/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_THREE_WAY_COMPARISON </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_noexception/ class=md-nav__link> <span class=md-ellipsis> JSON_NOEXCEPTION </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_no_io/ class=md-nav__link> <span class=md-ellipsis> JSON_NO_IO </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_skip_library_version_check/ class=md-nav__link> <span class=md-ellipsis> JSON_SKIP_LIBRARY_VERSION_CHECK </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_skip_unsupported_compiler_check/ class=md-nav__link> <span class=md-ellipsis> JSON_SKIP_UNSUPPORTED_COMPILER_CHECK </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_use_global_udls/ class=md-nav__link> <span class=md-ellipsis> JSON_USE_GLOBAL_UDLS </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_use_implicit_conversions/ class=md-nav__link> <span class=md-ellipsis> JSON_USE_IMPLICIT_CONVERSIONS </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_use_legacy_discarded_value_comparison/ class=md-nav__link> <span class=md-ellipsis> JSON_USE_LEGACY_DISCARDED_VALUE_COMPARISON </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_define_derived_type/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_ONLY_SERIALIZE, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_define_type_intrusive/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_TYPE_INTRUSIVE, NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_TYPE_INTRUSIVE_ONLY_SERIALIZE </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_define_type_non_intrusive/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_define_type_with_names/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_TYPE_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_namespace/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_NAMESPACE </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_namespace_begin/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_NAMESPACE_BEGIN, NLOHMANN_JSON_NAMESPACE_END </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_namespace_no_version/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_NAMESPACE_NO_VERSION </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_serialize_enum/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_SERIALIZE_ENUM </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_serialize_enum_strict/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_SERIALIZE_ENUM_STRICT </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_version_major/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_VERSION_MAJOR, NLOHMANN_JSON_VERSION_MINOR, NLOHMANN_JSON_VERSION_PATCH </span> </a> </li> </ul> </nav> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_5> <div class="md-nav__link md-nav__container"> <a href=../../../community/ class="md-nav__link "> <span class=md-ellipsis> Community </span> </a> <label class="md-nav__link " for=__nav_5 id=__nav_5_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_5_label aria-expanded=false> <label class=md-nav__title for=__nav_5> <span class="md-nav__icon md-icon"></span> Community </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../community/code_of_conduct/ class=md-nav__link> <span class=md-ellipsis> Code of Conduct </span> </a> </li> <li class=md-nav__item> <a href=../../../community/contribution_guidelines/ class=md-nav__link> <span class=md-ellipsis> Contribution Guidelines </span> </a> </li> <li class=md-nav__item> <a href=../../../community/quality_assurance/ class=md-nav__link> <span class=md-ellipsis> Quality assurance </span> </a> </li> <li class=md-nav__item> <a href=../../../community/governance/ class=md-nav__link> <span class=md-ellipsis> Governance </span> </a> </li> <li class=md-nav__item> <a href=../../../community/security_policy/ class=md-nav__link> <span class=md-ellipsis> Security Policy </span> </a> </li> </ul> </nav> </li> </ul> </nav> </div> </div> </div> <div class="md-sidebar md-sidebar--secondary" data-md-component=sidebar data-md-type=toc> <div class=md-sidebar__scrollwrap> <div class=md-sidebar__inner> <nav class="md-nav md-nav--secondary" aria-label="Table of contents"> <label class=md-nav__title for=__toc> <span class="md-nav__icon md-icon"></span> Table of contents </label> <ul class=md-nav__list data-md-component=toc data-md-scrollfix> <li class=md-nav__item> <a href=#template-parameters class=md-nav__link> <span class=md-ellipsis> Template parameters </span> </a> </li> <li class=md-nav__item> <a href=#parameters class=md-nav__link> <span class=md-ellipsis> Parameters </span> </a> </li> <li class=md-nav__item> <a href=#return-value class=md-nav__link> <span class=md-ellipsis> Return value </span> </a> </li> <li class=md-nav__item> <a href=#exception-safety class=md-nav__link> <span class=md-ellipsis> Exception safety </span> </a> </li> <li class=md-nav__item> <a href=#exceptions class=md-nav__link> <span class=md-ellipsis> Exceptions </span> </a> </li> <li class=md-nav__item> <a href=#complexity class=md-nav__link> <span class=md-ellipsis> Complexity </span> </a> </li> <li class=md-nav__item> <a href=#notes class=md-nav__link> <span class=md-ellipsis> Notes </span> </a> </li> <li class=md-nav__item> <a href=#examples class=md-nav__link> <span class=md-ellipsis> Examples </span> </a> </li> <li class=md-nav__item> <a href=#version-history class=md-nav__link> <span class=md-ellipsis> Version history </span> </a> </li> </ul> </nav> </div> </div> </div> <div class=md-content data-md-component=content> <article class="md-content__inner md-typeset"> <a href="https://github.com/nlohmann/json/edit/develop/docs/mkdocs/docs/api/basic_json/sax_parse.md" title="Edit this page" class="md-content__button md-icon" rel="edit"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M10 20H6V4h7v5h5v3.1l2-2V8l-6-6H6c-1.1 0-2 .9-2 2v16c0 1.1.9 2 2 2h4zm10.2-7c.1 0 .3.1.4.2l1.3 1.3c.2.2.2.6 0 .8l-1 1-2.1-2.1 1-1c.1-.1.2-.2.4-.2m0 3.9L14.1 23H12v-2.1l6.1-6.1z"/></svg> </a> <a href="https://github.com/nlohmann/json/raw/develop/docs/mkdocs/docs/api/basic_json/sax_parse.md" title="View source of this page" class="md-content__button md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M17 18c.56 0 1 .44 1 1s-.44 1-1 1-1-.44-1-1 .44-1 1-1m0-3c-2.73 0-5.06 1.66-6 4 .94 2.34 3.27 4 6 4s5.06-1.66 6-4c-.94-2.34-3.27-4-6-4m0 6.5a2.5 2.5 0 0 1-2.5-2.5 2.5 2.5 0 0 1 2.5-2.5 2.5 2.5 0 0 1 2.5 2.5 2.5 2.5 0 0 1-2.5 2.5M9.27 20H6V4h7v5h5v4.07c.7.08 1.36.25 2 .49V8l-6-6H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h4.5a8.2 8.2 0 0 1-1.23-2"/></svg> </a> <h1 id=nlohmannbasic_jsonsax_parse><small>nlohmann::basic_json::</small>sax_parse<a class=headerlink href=#nlohmannbasic_jsonsax_parse title="Permanent link">&para;</a></h1> <div class=highlight><pre><span></span><code><span class=c1>// (1)</span>
+<!doctype html><html lang=en class=no-js> <head><meta charset=utf-8><meta name=viewport content="width=device-width,initial-scale=1"><meta name=author content="Niels Lohmann"><link href="https://json.nlohmann.me/api/basic_json/sax_parse/" rel="canonical"><link href=../rend/ rel=prev><link href=../size/ rel=next><link rel=icon href=../../../assets/images/favicon.png><meta name=generator content="mkdocs-1.6.1, mkdocs-material-9.7.6"><title>sax_parse - JSON for Modern C++</title><link rel=stylesheet href=../../../assets/stylesheets/main.484c7ddc.min.css><link rel=stylesheet href=../../../assets/stylesheets/palette.ab4e12ef.min.css><link rel="stylesheet" href="../../../assets/external/fonts.googleapis.com/css.61a430c9.css"><style>:root{--md-text-font:"Roboto";--md-code-font:"JetBrains Mono"}</style><link rel=stylesheet href=../../../css/custom.css><script>__md_scope=new URL("../../..",location),__md_hash=e=>[...e].reduce(((e,_)=>(e<<5)-e+_.charCodeAt(0)),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script></head> <body dir=ltr data-md-color-scheme=default data-md-color-primary=indigo data-md-color-accent=indigo> <input class=md-toggle data-md-toggle=drawer type=checkbox id=__drawer autocomplete=off> <input class=md-toggle data-md-toggle=search type=checkbox id=__search autocomplete=off> <label class=md-overlay for=__drawer></label> <div data-md-component=skip> <a href=#nlohmannbasic_jsonsax_parse class=md-skip> Skip to content </a> </div> <div data-md-component=announce> </div> <header class=md-header data-md-component=header> <nav class="md-header__inner md-grid" aria-label=Header> <a href=../../.. title="JSON for Modern C++" class="md-header__button md-logo" aria-label="JSON for Modern C++" data-md-component=logo> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54"/></svg> </a> <label class="md-header__button md-icon" for=__drawer> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M3 6h18v2H3zm0 5h18v2H3zm0 5h18v2H3z"/></svg> </label> <div class=md-header__title data-md-component=header-title> <div class=md-header__ellipsis> <div class=md-header__topic> <span class=md-ellipsis> JSON for Modern C++ </span> </div> <div class=md-header__topic data-md-component=header-topic> <span class=md-ellipsis> sax_parse </span> </div> </div> </div> <form class=md-header__option data-md-component=palette> <input class=md-option data-md-color-media="(prefers-color-scheme: light)" data-md-color-scheme=default data-md-color-primary=indigo data-md-color-accent=indigo aria-label="Switch to dark mode" type=radio name=__palette id=__palette_0> <label class="md-header__button md-icon" title="Switch to dark mode" for=__palette_1 hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a4 4 0 0 0-4 4 4 4 0 0 0 4 4 4 4 0 0 0 4-4 4 4 0 0 0-4-4m0 10a6 6 0 0 1-6-6 6 6 0 0 1 6-6 6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12z"/></svg> </label> <input class=md-option data-md-color-media="(prefers-color-scheme: dark)" data-md-color-scheme=slate data-md-color-primary=indigo data-md-color-accent=indigo aria-label="Switch to light mode" type=radio name=__palette id=__palette_1> <label class="md-header__button md-icon" title="Switch to light mode" for=__palette_0 hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 18c-.89 0-1.74-.2-2.5-.55C11.56 16.5 13 14.42 13 12s-1.44-4.5-3.5-5.45C10.26 6.2 11.11 6 12 6a6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12z"/></svg> </label> </form> <script>var palette=__md_get("__palette");if(palette&&palette.color){if("(prefers-color-scheme)"===palette.color.media){var media=matchMedia("(prefers-color-scheme: light)"),input=document.querySelector(media.matches?"[data-md-color-media='(prefers-color-scheme: light)']":"[data-md-color-media='(prefers-color-scheme: dark)']");palette.color.media=input.getAttribute("data-md-color-media"),palette.color.scheme=input.getAttribute("data-md-color-scheme"),palette.color.primary=input.getAttribute("data-md-color-primary"),palette.color.accent=input.getAttribute("data-md-color-accent")}for(var[key,value]of Object.entries(palette.color))document.body.setAttribute("data-md-color-"+key,value)}</script> <label class="md-header__button md-icon" for=__search> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg> </label> <div class=md-search data-md-component=search role=dialog> <label class=md-search__overlay for=__search></label> <div class=md-search__inner role=search> <form class=md-search__form name=search> <input type=text class=md-search__input name=query aria-label=Search placeholder=Search autocapitalize=off autocorrect=off autocomplete=off spellcheck=false data-md-component=search-query required> <label class="md-search__icon md-icon" for=__search> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11z"/></svg> </label> <nav class=md-search__options aria-label=Search> <button type=reset class="md-search__icon md-icon" title=Clear aria-label=Clear tabindex=-1> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z"/></svg> </button> </nav> </form> <div class=md-search__output> <div class=md-search__scrollwrap tabindex=0 data-md-scrollfix> <div class=md-search-result data-md-component=search-result> <div class=md-search-result__meta> Initializing search </div> <ol class=md-search-result__list role=presentation></ol> </div> </div> </div> </div> </div> <div class=md-header__source> <a href="https://github.com/nlohmann/json" title="Go to repository" class="md-source" data-md-component="source"> <div class="md-source__icon md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </div> <div class=md-source__repository> nlohmann/json </div> </a> </div> </nav> </header> <div class=md-container data-md-component=container> <nav class=md-tabs aria-label=Tabs data-md-component=tabs> <div class=md-grid> <ul class=md-tabs__list> <li class=md-tabs__item> <a href=../../.. class=md-tabs__link> Home </a> </li> <li class=md-tabs__item> <a href=../../../features/arbitrary_types/ class=md-tabs__link> Features </a> </li> <li class=md-tabs__item> <a href=../../../integration/ class=md-tabs__link> Integration </a> </li> <li class="md-tabs__item md-tabs__item--active"> <a href=../ class=md-tabs__link> API Documentation </a> </li> <li class=md-tabs__item> <a href=../../../community/ class=md-tabs__link> Community </a> </li> </ul> </div> </nav> <main class=md-main data-md-component=main> <div class="md-main__inner md-grid"> <div class="md-sidebar md-sidebar--primary" data-md-component=sidebar data-md-type=navigation> <div class=md-sidebar__scrollwrap> <div class=md-sidebar__inner> <nav class="md-nav md-nav--primary md-nav--lifted" aria-label=Navigation data-md-level=0> <label class=md-nav__title for=__drawer> <a href=../../.. title="JSON for Modern C++" class="md-nav__button md-logo" aria-label="JSON for Modern C++" data-md-component=logo> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54"/></svg> </a> JSON for Modern C++ </label> <div class=md-nav__source> <a href="https://github.com/nlohmann/json" title="Go to repository" class="md-source" data-md-component="source"> <div class="md-source__icon md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </div> <div class=md-source__repository> nlohmann/json </div> </a> </div> <ul class=md-nav__list data-md-scrollfix> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_1> <div class="md-nav__link md-nav__container"> <a href=../../.. class="md-nav__link "> <span class=md-ellipsis> Home </span> </a> <label class="md-nav__link " for=__nav_1 id=__nav_1_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_1_label aria-expanded=false> <label class=md-nav__title for=__nav_1> <span class="md-nav__icon md-icon"></span> Home </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../home/license/ class=md-nav__link> <span class=md-ellipsis> License </span> </a> </li> <li class=md-nav__item> <a href=../../../home/faq/ class=md-nav__link> <span class=md-ellipsis> FAQ </span> </a> </li> <li class=md-nav__item> <a href=../../../home/exceptions/ class=md-nav__link> <span class=md-ellipsis> Exceptions </span> </a> </li> <li class=md-nav__item> <a href=../../../home/releases/ class=md-nav__link> <span class=md-ellipsis> Releases </span> </a> </li> <li class=md-nav__item> <a href=../../../home/design_goals/ class=md-nav__link> <span class=md-ellipsis> Design goals </span> </a> </li> <li class=md-nav__item> <a href=../../../home/architecture/ class=md-nav__link> <span class=md-ellipsis> Architecture </span> </a> </li> <li class=md-nav__item> <a href=../../../home/customers/ class=md-nav__link> <span class=md-ellipsis> Customers </span> </a> </li> <li class=md-nav__item> <a href=../../../home/sponsors/ class=md-nav__link> <span class=md-ellipsis> Sponsors </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2> <label class=md-nav__link for=__nav_2 id=__nav_2_label tabindex=0> <span class=md-ellipsis> Features </span> <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_2_label aria-expanded=false> <label class=md-nav__title for=__nav_2> <span class="md-nav__icon md-icon"></span> Features </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/arbitrary_types/ class=md-nav__link> <span class=md-ellipsis> Arbitrary Type Conversions </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_2> <div class="md-nav__link md-nav__container"> <a href=../../../features/binary_formats/ class="md-nav__link "> <span class=md-ellipsis> Binary Formats </span> </a> <label class="md-nav__link " for=__nav_2_2 id=__nav_2_2_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_2_label aria-expanded=false> <label class=md-nav__title for=__nav_2_2> <span class="md-nav__icon md-icon"></span> Binary Formats </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/binary_formats/bjdata/ class=md-nav__link> <span class=md-ellipsis> BJData </span> </a> </li> <li class=md-nav__item> <a href=../../../features/binary_formats/bson/ class=md-nav__link> <span class=md-ellipsis> BSON </span> </a> </li> <li class=md-nav__item> <a href=../../../features/binary_formats/cbor/ class=md-nav__link> <span class=md-ellipsis> CBOR </span> </a> </li> <li class=md-nav__item> <a href=../../../features/binary_formats/messagepack/ class=md-nav__link> <span class=md-ellipsis> MessagePack </span> </a> </li> <li class=md-nav__item> <a href=../../../features/binary_formats/ubjson/ class=md-nav__link> <span class=md-ellipsis> UBJSON </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../../features/binary_values/ class=md-nav__link> <span class=md-ellipsis> Binary Values </span> </a> </li> <li class=md-nav__item> <a href=../../../features/comments/ class=md-nav__link> <span class=md-ellipsis> Comments </span> </a> </li> <li class=md-nav__item> <a href=../../../features/trailing_commas/ class=md-nav__link> <span class=md-ellipsis> Trailing Commas </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_6> <div class="md-nav__link md-nav__container"> <a href=../../../features/element_access/ class="md-nav__link "> <span class=md-ellipsis> Element Access </span> </a> <label class="md-nav__link " for=__nav_2_6 id=__nav_2_6_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_6_label aria-expanded=false> <label class=md-nav__title for=__nav_2_6> <span class="md-nav__icon md-icon"></span> Element Access </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/element_access/unchecked_access/ class=md-nav__link> <span class=md-ellipsis> Unchecked access: operator[] </span> </a> </li> <li class=md-nav__item> <a href=../../../features/element_access/checked_access/ class=md-nav__link> <span class=md-ellipsis> Checked access: at </span> </a> </li> <li class=md-nav__item> <a href=../../../features/element_access/default_value/ class=md-nav__link> <span class=md-ellipsis> Access with default value: value </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../../features/iterators/ class=md-nav__link> <span class=md-ellipsis> Iterators </span> </a> </li> <li class=md-nav__item> <a href=../../../features/json_pointer/ class=md-nav__link> <span class=md-ellipsis> JSON Pointer </span> </a> </li> <li class=md-nav__item> <a href=../../../features/json_patch/ class=md-nav__link> <span class=md-ellipsis> JSON Patch and Diff </span> </a> </li> <li class=md-nav__item> <a href=../../../features/merge_patch/ class=md-nav__link> <span class=md-ellipsis> JSON Merge Patch </span> </a> </li> <li class=md-nav__item> <a href=../../../features/modules/ class=md-nav__link> <span class=md-ellipsis> Modules </span> </a> </li> <li class=md-nav__item> <a href=../../../features/namespace/ class=md-nav__link> <span class=md-ellipsis> nlohmann Namespace </span> </a> </li> <li class=md-nav__item> <a href=../../../features/object_order/ class=md-nav__link> <span class=md-ellipsis> Object Order </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_14> <div class="md-nav__link md-nav__container"> <a href=../../../features/parsing/ class="md-nav__link "> <span class=md-ellipsis> Parsing </span> </a> <label class="md-nav__link " for=__nav_2_14 id=__nav_2_14_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_14_label aria-expanded=false> <label class=md-nav__title for=__nav_2_14> <span class="md-nav__icon md-icon"></span> Parsing </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/parsing/json_lines/ class=md-nav__link> <span class=md-ellipsis> JSON Lines </span> </a> </li> <li class=md-nav__item> <a href=../../../features/parsing/parse_exceptions/ class=md-nav__link> <span class=md-ellipsis> Parsing and Exceptions </span> </a> </li> <li class=md-nav__item> <a href=../../../features/parsing/parser_callbacks/ class=md-nav__link> <span class=md-ellipsis> Parser Callbacks </span> </a> </li> <li class=md-nav__item> <a href=../../../features/parsing/sax_interface/ class=md-nav__link> <span class=md-ellipsis> SAX Interface </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../../features/assertions/ class=md-nav__link> <span class=md-ellipsis> Runtime Assertions </span> </a> </li> <li class=md-nav__item> <a href=../../../features/enum_conversion/ class=md-nav__link> <span class=md-ellipsis> Specializing enum conversion </span> </a> </li> <li class=md-nav__item> <a href=../../../features/macros/ class=md-nav__link> <span class=md-ellipsis> Supported Macros </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_18> <div class="md-nav__link md-nav__container"> <a href=../../../features/types/ class="md-nav__link "> <span class=md-ellipsis> Types </span> </a> <label class="md-nav__link " for=__nav_2_18 id=__nav_2_18_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_18_label aria-expanded=false> <label class=md-nav__title for=__nav_2_18> <span class="md-nav__icon md-icon"></span> Types </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/types/number_handling/ class=md-nav__link> <span class=md-ellipsis> Number Handling </span> </a> </li> </ul> </nav> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_3> <div class="md-nav__link md-nav__container"> <a href=../../../integration/ class="md-nav__link "> <span class=md-ellipsis> Integration </span> </a> <label class="md-nav__link " for=__nav_3 id=__nav_3_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_3_label aria-expanded=false> <label class=md-nav__title for=__nav_3> <span class="md-nav__icon md-icon"></span> Integration </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../integration/migration_guide/ class=md-nav__link> <span class=md-ellipsis> Migration Guide </span> </a> </li> <li class=md-nav__item> <a href=../../../integration/cmake/ class=md-nav__link> <span class=md-ellipsis> CMake </span> </a> </li> <li class=md-nav__item> <a href=../../../integration/package_managers/ class=md-nav__link> <span class=md-ellipsis> Package Managers </span> </a> </li> <li class=md-nav__item> <a href=../../../integration/pkg-config/ class=md-nav__link> <span class=md-ellipsis> Pkg-config </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--active md-nav__item--section md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4 checked> <label class=md-nav__link for=__nav_4 id=__nav_4_label tabindex> <span class=md-ellipsis> API Documentation </span> <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_4_label aria-expanded=true> <label class=md-nav__title for=__nav_4> <span class="md-nav__icon md-icon"></span> API Documentation </label> <ul class=md-nav__list data-md-scrollfix> <li class="md-nav__item md-nav__item--active md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_1 checked> <div class="md-nav__link md-nav__container"> <a href=../ class="md-nav__link "> <span class=md-ellipsis> basic_json </span> </a> <label class="md-nav__link " for=__nav_4_1 id=__nav_4_1_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_1_label aria-expanded=true> <label class=md-nav__title for=__nav_4_1> <span class="md-nav__icon md-icon"></span> basic_json </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../basic_json/ class=md-nav__link> <span class=md-ellipsis> (Constructor) </span> </a> </li> <li class=md-nav__item> <a href=../~basic_json/ class=md-nav__link> <span class=md-ellipsis> (Destructor) </span> </a> </li> <li class=md-nav__item> <a href=../accept/ class=md-nav__link> <span class=md-ellipsis> accept </span> </a> </li> <li class=md-nav__item> <a href=../array/ class=md-nav__link> <span class=md-ellipsis> array </span> </a> </li> <li class=md-nav__item> <a href=../array_t/ class=md-nav__link> <span class=md-ellipsis> array_t </span> </a> </li> <li class=md-nav__item> <a href=../at/ class=md-nav__link> <span class=md-ellipsis> at </span> </a> </li> <li class=md-nav__item> <a href=../back/ class=md-nav__link> <span class=md-ellipsis> back </span> </a> </li> <li class=md-nav__item> <a href=../begin/ class=md-nav__link> <span class=md-ellipsis> begin </span> </a> </li> <li class=md-nav__item> <a href=../binary/ class=md-nav__link> <span class=md-ellipsis> binary </span> </a> </li> <li class=md-nav__item> <a href=../binary_t/ class=md-nav__link> <span class=md-ellipsis> binary_t </span> </a> </li> <li class=md-nav__item> <a href=../boolean_t/ class=md-nav__link> <span class=md-ellipsis> boolean_t </span> </a> </li> <li class=md-nav__item> <a href=../cbegin/ class=md-nav__link> <span class=md-ellipsis> cbegin </span> </a> </li> <li class=md-nav__item> <a href=../cbor_tag_handler_t/ class=md-nav__link> <span class=md-ellipsis> cbor_tag_handler_t </span> </a> </li> <li class=md-nav__item> <a href=../cend/ class=md-nav__link> <span class=md-ellipsis> cend </span> </a> </li> <li class=md-nav__item> <a href=../clear/ class=md-nav__link> <span class=md-ellipsis> clear </span> </a> </li> <li class=md-nav__item> <a href=../contains/ class=md-nav__link> <span class=md-ellipsis> contains </span> </a> </li> <li class=md-nav__item> <a href=../count/ class=md-nav__link> <span class=md-ellipsis> count </span> </a> </li> <li class=md-nav__item> <a href=../crbegin/ class=md-nav__link> <span class=md-ellipsis> crbegin </span> </a> </li> <li class=md-nav__item> <a href=../crend/ class=md-nav__link> <span class=md-ellipsis> crend </span> </a> </li> <li class=md-nav__item> <a href=../default_object_comparator_t/ class=md-nav__link> <span class=md-ellipsis> default_object_comparator_t </span> </a> </li> <li class=md-nav__item> <a href=../diff/ class=md-nav__link> <span class=md-ellipsis> diff </span> </a> </li> <li class=md-nav__item> <a href=../dump/ class=md-nav__link> <span class=md-ellipsis> dump </span> </a> </li> <li class=md-nav__item> <a href=../emplace/ class=md-nav__link> <span class=md-ellipsis> emplace </span> </a> </li> <li class=md-nav__item> <a href=../emplace_back/ class=md-nav__link> <span class=md-ellipsis> emplace_back </span> </a> </li> <li class=md-nav__item> <a href=../empty/ class=md-nav__link> <span class=md-ellipsis> empty </span> </a> </li> <li class=md-nav__item> <a href=../end/ class=md-nav__link> <span class=md-ellipsis> end </span> </a> </li> <li class=md-nav__item> <a href=../end_pos/ class=md-nav__link> <span class=md-ellipsis> end_pos </span> </a> </li> <li class=md-nav__item> <a href=../erase/ class=md-nav__link> <span class=md-ellipsis> erase </span> </a> </li> <li class=md-nav__item> <a href=../error_handler_t/ class=md-nav__link> <span class=md-ellipsis> error_handler_t </span> </a> </li> <li class=md-nav__item> <a href=../exception/ class=md-nav__link> <span class=md-ellipsis> exception </span> </a> </li> <li class=md-nav__item> <a href=../find/ class=md-nav__link> <span class=md-ellipsis> find </span> </a> </li> <li class=md-nav__item> <a href=../flatten/ class=md-nav__link> <span class=md-ellipsis> flatten </span> </a> </li> <li class=md-nav__item> <a href=../from_bjdata/ class=md-nav__link> <span class=md-ellipsis> from_bjdata </span> </a> </li> <li class=md-nav__item> <a href=../from_bson/ class=md-nav__link> <span class=md-ellipsis> from_bson </span> </a> </li> <li class=md-nav__item> <a href=../from_cbor/ class=md-nav__link> <span class=md-ellipsis> from_cbor </span> </a> </li> <li class=md-nav__item> <a href=../from_msgpack/ class=md-nav__link> <span class=md-ellipsis> from_msgpack </span> </a> </li> <li class=md-nav__item> <a href=../from_ubjson/ class=md-nav__link> <span class=md-ellipsis> from_ubjson </span> </a> </li> <li class=md-nav__item> <a href=../front/ class=md-nav__link> <span class=md-ellipsis> front </span> </a> </li> <li class=md-nav__item> <a href=../get/ class=md-nav__link> <span class=md-ellipsis> get </span> </a> </li> <li class=md-nav__item> <a href=../get_allocator/ class=md-nav__link> <span class=md-ellipsis> get_allocator </span> </a> </li> <li class=md-nav__item> <a href=../get_binary/ class=md-nav__link> <span class=md-ellipsis> get_binary </span> </a> </li> <li class=md-nav__item> <a href=../get_ptr/ class=md-nav__link> <span class=md-ellipsis> get_ptr </span> </a> </li> <li class=md-nav__item> <a href=../get_ref/ class=md-nav__link> <span class=md-ellipsis> get_ref </span> </a> </li> <li class=md-nav__item> <a href=../get_to/ class=md-nav__link> <span class=md-ellipsis> get_to </span> </a> </li> <li class=md-nav__item> <a href=../std_hash/ class=md-nav__link> <span class=md-ellipsis> std::hash&lt;basic_json&gt; </span> </a> </li> <li class=md-nav__item> <a href=../input_format_t/ class=md-nav__link> <span class=md-ellipsis> input_format_t </span> </a> </li> <li class=md-nav__item> <a href=../insert/ class=md-nav__link> <span class=md-ellipsis> insert </span> </a> </li> <li class=md-nav__item> <a href=../invalid_iterator/ class=md-nav__link> <span class=md-ellipsis> invalid_iterator </span> </a> </li> <li class=md-nav__item> <a href=../is_array/ class=md-nav__link> <span class=md-ellipsis> is_array </span> </a> </li> <li class=md-nav__item> <a href=../is_binary/ class=md-nav__link> <span class=md-ellipsis> is_binary </span> </a> </li> <li class=md-nav__item> <a href=../is_boolean/ class=md-nav__link> <span class=md-ellipsis> is_boolean </span> </a> </li> <li class=md-nav__item> <a href=../is_discarded/ class=md-nav__link> <span class=md-ellipsis> is_discarded </span> </a> </li> <li class=md-nav__item> <a href=../is_null/ class=md-nav__link> <span class=md-ellipsis> is_null </span> </a> </li> <li class=md-nav__item> <a href=../is_number/ class=md-nav__link> <span class=md-ellipsis> is_number </span> </a> </li> <li class=md-nav__item> <a href=../is_number_float/ class=md-nav__link> <span class=md-ellipsis> is_number_float </span> </a> </li> <li class=md-nav__item> <a href=../is_number_integer/ class=md-nav__link> <span class=md-ellipsis> is_number_integer </span> </a> </li> <li class=md-nav__item> <a href=../is_number_unsigned/ class=md-nav__link> <span class=md-ellipsis> is_number_unsigned </span> </a> </li> <li class=md-nav__item> <a href=../is_object/ class=md-nav__link> <span class=md-ellipsis> is_object </span> </a> </li> <li class=md-nav__item> <a href=../is_primitive/ class=md-nav__link> <span class=md-ellipsis> is_primitive </span> </a> </li> <li class=md-nav__item> <a href=../is_string/ class=md-nav__link> <span class=md-ellipsis> is_string </span> </a> </li> <li class=md-nav__item> <a href=../is_structured/ class=md-nav__link> <span class=md-ellipsis> is_structured </span> </a> </li> <li class=md-nav__item> <a href=../items/ class=md-nav__link> <span class=md-ellipsis> items </span> </a> </li> <li class=md-nav__item> <a href=../json_base_class_t/ class=md-nav__link> <span class=md-ellipsis> json_base_class_t </span> </a> </li> <li class=md-nav__item> <a href=../json_serializer/ class=md-nav__link> <span class=md-ellipsis> json_serializer </span> </a> </li> <li class=md-nav__item> <a href=../max_size/ class=md-nav__link> <span class=md-ellipsis> max_size </span> </a> </li> <li class=md-nav__item> <a href=../meta/ class=md-nav__link> <span class=md-ellipsis> meta </span> </a> </li> <li class=md-nav__item> <a href=../merge_patch/ class=md-nav__link> <span class=md-ellipsis> merge_patch </span> </a> </li> <li class=md-nav__item> <a href=../number_float_t/ class=md-nav__link> <span class=md-ellipsis> number_float_t </span> </a> </li> <li class=md-nav__item> <a href=../number_integer_t/ class=md-nav__link> <span class=md-ellipsis> number_integer_t </span> </a> </li> <li class=md-nav__item> <a href=../number_unsigned_t/ class=md-nav__link> <span class=md-ellipsis> number_unsigned_t </span> </a> </li> <li class=md-nav__item> <a href=../object/ class=md-nav__link> <span class=md-ellipsis> object </span> </a> </li> <li class=md-nav__item> <a href=../object_comparator_t/ class=md-nav__link> <span class=md-ellipsis> object_comparator_t </span> </a> </li> <li class=md-nav__item> <a href=../object_t/ class=md-nav__link> <span class=md-ellipsis> object_t </span> </a> </li> <li class=md-nav__item> <a href=../operator_ValueType/ class=md-nav__link> <span class=md-ellipsis> operator ValueType </span> </a> </li> <li class=md-nav__item> <a href=../operator_value_t/ class=md-nav__link> <span class=md-ellipsis> operator value_t </span> </a> </li> <li class=md-nav__item> <a href=../operator%5B%5D/ class=md-nav__link> <span class=md-ellipsis> operator[] </span> </a> </li> <li class=md-nav__item> <a href=../operator%3D/ class=md-nav__link> <span class=md-ellipsis> operator= </span> </a> </li> <li class=md-nav__item> <a href=../operator%2B%3D/ class=md-nav__link> <span class=md-ellipsis> operator+= </span> </a> </li> <li class=md-nav__item> <a href=../operator_eq/ class=md-nav__link> <span class=md-ellipsis> operator== </span> </a> </li> <li class=md-nav__item> <a href=../operator_ne/ class=md-nav__link> <span class=md-ellipsis> operator!= </span> </a> </li> <li class=md-nav__item> <a href=../operator_lt/ class=md-nav__link> <span class=md-ellipsis> operator< </span> </a> </li> <li class=md-nav__item> <a href=../operator_gt/ class=md-nav__link> <span class=md-ellipsis> operator> </span> </a> </li> <li class=md-nav__item> <a href=../operator_le/ class=md-nav__link> <span class=md-ellipsis> operator<= </span> </a> </li> <li class=md-nav__item> <a href=../operator_ge/ class=md-nav__link> <span class=md-ellipsis> operator>= </span> </a> </li> <li class=md-nav__item> <a href=../operator_spaceship/ class=md-nav__link> <span class=md-ellipsis> operator<=> </span> </a> </li> <li class=md-nav__item> <a href=../out_of_range/ class=md-nav__link> <span class=md-ellipsis> out_of_range </span> </a> </li> <li class=md-nav__item> <a href=../other_error/ class=md-nav__link> <span class=md-ellipsis> other_error </span> </a> </li> <li class=md-nav__item> <a href=../parse/ class=md-nav__link> <span class=md-ellipsis> parse </span> </a> </li> <li class=md-nav__item> <a href=../parse_error/ class=md-nav__link> <span class=md-ellipsis> parse_error </span> </a> </li> <li class=md-nav__item> <a href=../parse_event_t/ class=md-nav__link> <span class=md-ellipsis> parse_event_t </span> </a> </li> <li class=md-nav__item> <a href=../parser_callback_t/ class=md-nav__link> <span class=md-ellipsis> parser_callback_t </span> </a> </li> <li class=md-nav__item> <a href=../patch/ class=md-nav__link> <span class=md-ellipsis> patch </span> </a> </li> <li class=md-nav__item> <a href=../patch_inplace/ class=md-nav__link> <span class=md-ellipsis> patch_inplace </span> </a> </li> <li class=md-nav__item> <a href=../push_back/ class=md-nav__link> <span class=md-ellipsis> push_back </span> </a> </li> <li class=md-nav__item> <a href=../rbegin/ class=md-nav__link> <span class=md-ellipsis> rbegin </span> </a> </li> <li class=md-nav__item> <a href=../rend/ class=md-nav__link> <span class=md-ellipsis> rend </span> </a> </li> <li class="md-nav__item md-nav__item--active"> <input class="md-nav__toggle md-toggle" type=checkbox id=__toc> <label class="md-nav__link md-nav__link--active" for=__toc> <span class=md-ellipsis> sax_parse </span> <span class="md-nav__icon md-icon"></span> </label> <a href=./ class="md-nav__link md-nav__link--active"> <span class=md-ellipsis> sax_parse </span> </a> <nav class="md-nav md-nav--secondary" aria-label="Table of contents"> <label class=md-nav__title for=__toc> <span class="md-nav__icon md-icon"></span> Table of contents </label> <ul class=md-nav__list data-md-component=toc data-md-scrollfix> <li class=md-nav__item> <a href=#template-parameters class=md-nav__link> <span class=md-ellipsis> Template parameters </span> </a> </li> <li class=md-nav__item> <a href=#parameters class=md-nav__link> <span class=md-ellipsis> Parameters </span> </a> </li> <li class=md-nav__item> <a href=#return-value class=md-nav__link> <span class=md-ellipsis> Return value </span> </a> </li> <li class=md-nav__item> <a href=#exception-safety class=md-nav__link> <span class=md-ellipsis> Exception safety </span> </a> </li> <li class=md-nav__item> <a href=#exceptions class=md-nav__link> <span class=md-ellipsis> Exceptions </span> </a> </li> <li class=md-nav__item> <a href=#complexity class=md-nav__link> <span class=md-ellipsis> Complexity </span> </a> </li> <li class=md-nav__item> <a href=#notes class=md-nav__link> <span class=md-ellipsis> Notes </span> </a> </li> <li class=md-nav__item> <a href=#examples class=md-nav__link> <span class=md-ellipsis> Examples </span> </a> </li> <li class=md-nav__item> <a href=#see-also class=md-nav__link> <span class=md-ellipsis> See also </span> </a> </li> <li class=md-nav__item> <a href=#version-history class=md-nav__link> <span class=md-ellipsis> Version history </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../size/ class=md-nav__link> <span class=md-ellipsis> size </span> </a> </li> <li class=md-nav__item> <a href=../start_pos/ class=md-nav__link> <span class=md-ellipsis> start_pos </span> </a> </li> <li class=md-nav__item> <a href=../string_t/ class=md-nav__link> <span class=md-ellipsis> string_t </span> </a> </li> <li class=md-nav__item> <a href=../swap/ class=md-nav__link> <span class=md-ellipsis> swap </span> </a> </li> <li class=md-nav__item> <a href=../std_swap/ class=md-nav__link> <span class=md-ellipsis> std::swap&lt;basic_json&gt; </span> </a> </li> <li class=md-nav__item> <a href=../to_bjdata/ class=md-nav__link> <span class=md-ellipsis> to_bjdata </span> </a> </li> <li class=md-nav__item> <a href=../to_bson/ class=md-nav__link> <span class=md-ellipsis> to_bson </span> </a> </li> <li class=md-nav__item> <a href=../to_cbor/ class=md-nav__link> <span class=md-ellipsis> to_cbor </span> </a> </li> <li class=md-nav__item> <a href=../to_msgpack/ class=md-nav__link> <span class=md-ellipsis> to_msgpack </span> </a> </li> <li class=md-nav__item> <a href=../to_string/ class=md-nav__link> <span class=md-ellipsis> to_string </span> </a> </li> <li class=md-nav__item> <a href=../to_ubjson/ class=md-nav__link> <span class=md-ellipsis> to_ubjson </span> </a> </li> <li class=md-nav__item> <a href=../type/ class=md-nav__link> <span class=md-ellipsis> type </span> </a> </li> <li class=md-nav__item> <a href=../type_error/ class=md-nav__link> <span class=md-ellipsis> type_error </span> </a> </li> <li class=md-nav__item> <a href=../type_name/ class=md-nav__link> <span class=md-ellipsis> type_name </span> </a> </li> <li class=md-nav__item> <a href=../unflatten/ class=md-nav__link> <span class=md-ellipsis> unflatten </span> </a> </li> <li class=md-nav__item> <a href=../update/ class=md-nav__link> <span class=md-ellipsis> update </span> </a> </li> <li class=md-nav__item> <a href=../value/ class=md-nav__link> <span class=md-ellipsis> value </span> </a> </li> <li class=md-nav__item> <a href=../value_t/ class=md-nav__link> <span class=md-ellipsis> value_t </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_2> <div class="md-nav__link md-nav__container"> <a href=../../byte_container_with_subtype/ class="md-nav__link "> <span class=md-ellipsis> byte_container_with_subtype </span> </a> <label class="md-nav__link " for=__nav_4_2 id=__nav_4_2_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_2_label aria-expanded=false> <label class=md-nav__title for=__nav_4_2> <span class="md-nav__icon md-icon"></span> byte_container_with_subtype </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../byte_container_with_subtype/byte_container_with_subtype/ class=md-nav__link> <span class=md-ellipsis> (constructor) </span> </a> </li> <li class=md-nav__item> <a href=../../byte_container_with_subtype/clear_subtype/ class=md-nav__link> <span class=md-ellipsis> clear_subtype </span> </a> </li> <li class=md-nav__item> <a href=../../byte_container_with_subtype/has_subtype/ class=md-nav__link> <span class=md-ellipsis> has_subtype </span> </a> </li> <li class=md-nav__item> <a href=../../byte_container_with_subtype/set_subtype/ class=md-nav__link> <span class=md-ellipsis> set_subtype </span> </a> </li> <li class=md-nav__item> <a href=../../byte_container_with_subtype/subtype/ class=md-nav__link> <span class=md-ellipsis> subtype </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_3> <div class="md-nav__link md-nav__container"> <a href=../../adl_serializer/ class="md-nav__link "> <span class=md-ellipsis> adl_serializer </span> </a> <label class="md-nav__link " for=__nav_4_3 id=__nav_4_3_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_3_label aria-expanded=false> <label class=md-nav__title for=__nav_4_3> <span class="md-nav__icon md-icon"></span> adl_serializer </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../adl_serializer/from_json/ class=md-nav__link> <span class=md-ellipsis> from_json </span> </a> </li> <li class=md-nav__item> <a href=../../adl_serializer/to_json/ class=md-nav__link> <span class=md-ellipsis> to_json </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../json/ class=md-nav__link> <span class=md-ellipsis> json </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_5> <div class="md-nav__link md-nav__container"> <a href=../../json_pointer/ class="md-nav__link "> <span class=md-ellipsis> json_pointer </span> </a> <label class="md-nav__link " for=__nav_4_5 id=__nav_4_5_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_5_label aria-expanded=false> <label class=md-nav__title for=__nav_4_5> <span class="md-nav__icon md-icon"></span> json_pointer </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../json_pointer/json_pointer/ class=md-nav__link> <span class=md-ellipsis> (Constructor) </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/back/ class=md-nav__link> <span class=md-ellipsis> back </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/empty/ class=md-nav__link> <span class=md-ellipsis> empty </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/front/ class=md-nav__link> <span class=md-ellipsis> front </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_string_t/ class=md-nav__link> <span class=md-ellipsis> operator string_t </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_eq/ class=md-nav__link> <span class=md-ellipsis> operator== </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_ne/ class=md-nav__link> <span class=md-ellipsis> operator!= </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_slash/ class=md-nav__link> <span class=md-ellipsis> operator/ </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_slasheq/ class=md-nav__link> <span class=md-ellipsis> operator/= </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/parent_pointer/ class=md-nav__link> <span class=md-ellipsis> parent_pointer </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/pop_back/ class=md-nav__link> <span class=md-ellipsis> pop_back </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/pop_front/ class=md-nav__link> <span class=md-ellipsis> pop_front </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/push_back/ class=md-nav__link> <span class=md-ellipsis> push_back </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/push_front/ class=md-nav__link> <span class=md-ellipsis> push_front </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/string_t/ class=md-nav__link> <span class=md-ellipsis> string_t </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/to_string/ class=md-nav__link> <span class=md-ellipsis> to_string </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_6> <div class="md-nav__link md-nav__container"> <a href=../../json_sax/ class="md-nav__link "> <span class=md-ellipsis> json_sax </span> </a> <label class="md-nav__link " for=__nav_4_6 id=__nav_4_6_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_6_label aria-expanded=false> <label class=md-nav__title for=__nav_4_6> <span class="md-nav__icon md-icon"></span> json_sax </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../json_sax/binary/ class=md-nav__link> <span class=md-ellipsis> binary </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/boolean/ class=md-nav__link> <span class=md-ellipsis> boolean </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/end_array/ class=md-nav__link> <span class=md-ellipsis> end_array </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/end_object/ class=md-nav__link> <span class=md-ellipsis> end_object </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/key/ class=md-nav__link> <span class=md-ellipsis> key </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/null/ class=md-nav__link> <span class=md-ellipsis> null </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/number_float/ class=md-nav__link> <span class=md-ellipsis> number_float </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/number_integer/ class=md-nav__link> <span class=md-ellipsis> number_integer </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/number_unsigned/ class=md-nav__link> <span class=md-ellipsis> number_unsigned </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/parse_error/ class=md-nav__link> <span class=md-ellipsis> parse_error </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/start_array/ class=md-nav__link> <span class=md-ellipsis> start_array </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/start_object/ class=md-nav__link> <span class=md-ellipsis> start_object </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/string/ class=md-nav__link> <span class=md-ellipsis> string </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../operator_ltlt/ class=md-nav__link> <span class=md-ellipsis> operator<<(basic_json), operator<<(json_pointer) </span> </a> </li> <li class=md-nav__item> <a href=../../operator_gtgt/ class=md-nav__link> <span class=md-ellipsis> operator>>(basic_json) </span> </a> </li> <li class=md-nav__item> <a href=../../operator_literal_json/ class=md-nav__link> <span class=md-ellipsis> operator""_json </span> </a> </li> <li class=md-nav__item> <a href=../../operator_literal_json_pointer/ class=md-nav__link> <span class=md-ellipsis> operator""_json_pointer </span> </a> </li> <li class=md-nav__item> <a href=../../ordered_json/ class=md-nav__link> <span class=md-ellipsis> ordered_json </span> </a> </li> <li class=md-nav__item> <a href=../../ordered_map/ class=md-nav__link> <span class=md-ellipsis> ordered_map </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_13> <div class="md-nav__link md-nav__container"> <a href=../../macros/ class="md-nav__link "> <span class=md-ellipsis> macros </span> </a> <label class="md-nav__link " for=__nav_4_13 id=__nav_4_13_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_13_label aria-expanded=false> <label class=md-nav__title for=__nav_4_13> <span class="md-nav__icon md-icon"></span> macros </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../macros/json_assert/ class=md-nav__link> <span class=md-ellipsis> JSON_ASSERT </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_brace_init_copy_semantics/ class=md-nav__link> <span class=md-ellipsis> JSON_BRACE_INIT_COPY_SEMANTICS </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_throw_user/ class=md-nav__link> <span class=md-ellipsis> JSON_CATCH_USER, JSON_THROW_USER, JSON_TRY_USER </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_diagnostics/ class=md-nav__link> <span class=md-ellipsis> JSON_DIAGNOSTICS </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_diagnostic_positions/ class=md-nav__link> <span class=md-ellipsis> JSON_DIAGNOSTIC_POSITIONS </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_disable_enum_serialization/ class=md-nav__link> <span class=md-ellipsis> JSON_DISABLE_ENUM_SERIALIZATION </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_has_cpp_11/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_CPP_11, JSON_HAS_CPP_14, JSON_HAS_CPP_17, JSON_HAS_CPP_20 </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_has_filesystem/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_EXPERIMENTAL_FILESYSTEM, JSON_HAS_FILESYSTEM </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_has_ranges/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_RANGES </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_has_static_rtti/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_STATIC_RTTI </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_has_three_way_comparison/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_THREE_WAY_COMPARISON </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_noexception/ class=md-nav__link> <span class=md-ellipsis> JSON_NOEXCEPTION </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_no_io/ class=md-nav__link> <span class=md-ellipsis> JSON_NO_IO </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_skip_library_version_check/ class=md-nav__link> <span class=md-ellipsis> JSON_SKIP_LIBRARY_VERSION_CHECK </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_skip_unsupported_compiler_check/ class=md-nav__link> <span class=md-ellipsis> JSON_SKIP_UNSUPPORTED_COMPILER_CHECK </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_use_global_udls/ class=md-nav__link> <span class=md-ellipsis> JSON_USE_GLOBAL_UDLS </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_use_implicit_conversions/ class=md-nav__link> <span class=md-ellipsis> JSON_USE_IMPLICIT_CONVERSIONS </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_use_legacy_discarded_value_comparison/ class=md-nav__link> <span class=md-ellipsis> JSON_USE_LEGACY_DISCARDED_VALUE_COMPARISON </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_define_derived_type/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_ONLY_SERIALIZE, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_define_type_intrusive/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_TYPE_INTRUSIVE, NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_TYPE_INTRUSIVE_ONLY_SERIALIZE </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_define_type_non_intrusive/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_define_type_with_names/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_TYPE_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_namespace/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_NAMESPACE </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_namespace_begin/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_NAMESPACE_BEGIN, NLOHMANN_JSON_NAMESPACE_END </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_namespace_no_version/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_NAMESPACE_NO_VERSION </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_serialize_enum/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_SERIALIZE_ENUM </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_serialize_enum_strict/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_SERIALIZE_ENUM_STRICT </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_version_major/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_VERSION_MAJOR, NLOHMANN_JSON_VERSION_MINOR, NLOHMANN_JSON_VERSION_PATCH </span> </a> </li> </ul> </nav> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_5> <div class="md-nav__link md-nav__container"> <a href=../../../community/ class="md-nav__link "> <span class=md-ellipsis> Community </span> </a> <label class="md-nav__link " for=__nav_5 id=__nav_5_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_5_label aria-expanded=false> <label class=md-nav__title for=__nav_5> <span class="md-nav__icon md-icon"></span> Community </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../community/code_of_conduct/ class=md-nav__link> <span class=md-ellipsis> Code of Conduct </span> </a> </li> <li class=md-nav__item> <a href=../../../community/contribution_guidelines/ class=md-nav__link> <span class=md-ellipsis> Contribution Guidelines </span> </a> </li> <li class=md-nav__item> <a href=../../../community/quality_assurance/ class=md-nav__link> <span class=md-ellipsis> Quality assurance </span> </a> </li> <li class=md-nav__item> <a href=../../../community/governance/ class=md-nav__link> <span class=md-ellipsis> Governance </span> </a> </li> <li class=md-nav__item> <a href=../../../community/security_policy/ class=md-nav__link> <span class=md-ellipsis> Security Policy </span> </a> </li> </ul> </nav> </li> </ul> </nav> </div> </div> </div> <div class="md-sidebar md-sidebar--secondary" data-md-component=sidebar data-md-type=toc> <div class=md-sidebar__scrollwrap> <div class=md-sidebar__inner> <nav class="md-nav md-nav--secondary" aria-label="Table of contents"> <label class=md-nav__title for=__toc> <span class="md-nav__icon md-icon"></span> Table of contents </label> <ul class=md-nav__list data-md-component=toc data-md-scrollfix> <li class=md-nav__item> <a href=#template-parameters class=md-nav__link> <span class=md-ellipsis> Template parameters </span> </a> </li> <li class=md-nav__item> <a href=#parameters class=md-nav__link> <span class=md-ellipsis> Parameters </span> </a> </li> <li class=md-nav__item> <a href=#return-value class=md-nav__link> <span class=md-ellipsis> Return value </span> </a> </li> <li class=md-nav__item> <a href=#exception-safety class=md-nav__link> <span class=md-ellipsis> Exception safety </span> </a> </li> <li class=md-nav__item> <a href=#exceptions class=md-nav__link> <span class=md-ellipsis> Exceptions </span> </a> </li> <li class=md-nav__item> <a href=#complexity class=md-nav__link> <span class=md-ellipsis> Complexity </span> </a> </li> <li class=md-nav__item> <a href=#notes class=md-nav__link> <span class=md-ellipsis> Notes </span> </a> </li> <li class=md-nav__item> <a href=#examples class=md-nav__link> <span class=md-ellipsis> Examples </span> </a> </li> <li class=md-nav__item> <a href=#see-also class=md-nav__link> <span class=md-ellipsis> See also </span> </a> </li> <li class=md-nav__item> <a href=#version-history class=md-nav__link> <span class=md-ellipsis> Version history </span> </a> </li> </ul> </nav> </div> </div> </div> <div class=md-content data-md-component=content> <article class="md-content__inner md-typeset"> <a href="https://github.com/nlohmann/json/edit/develop/docs/mkdocs/docs/api/basic_json/sax_parse.md" title="Edit this page" class="md-content__button md-icon" rel="edit"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M10 20H6V4h7v5h5v3.1l2-2V8l-6-6H6c-1.1 0-2 .9-2 2v16c0 1.1.9 2 2 2h4zm10.2-7c.1 0 .3.1.4.2l1.3 1.3c.2.2.2.6 0 .8l-1 1-2.1-2.1 1-1c.1-.1.2-.2.4-.2m0 3.9L14.1 23H12v-2.1l6.1-6.1z"/></svg> </a> <a href="https://github.com/nlohmann/json/raw/develop/docs/mkdocs/docs/api/basic_json/sax_parse.md" title="View source of this page" class="md-content__button md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M17 18c.56 0 1 .44 1 1s-.44 1-1 1-1-.44-1-1 .44-1 1-1m0-3c-2.73 0-5.06 1.66-6 4 .94 2.34 3.27 4 6 4s5.06-1.66 6-4c-.94-2.34-3.27-4-6-4m0 6.5a2.5 2.5 0 0 1-2.5-2.5 2.5 2.5 0 0 1 2.5-2.5 2.5 2.5 0 0 1 2.5 2.5 2.5 2.5 0 0 1-2.5 2.5M9.27 20H6V4h7v5h5v4.07c.7.08 1.36.25 2 .49V8l-6-6H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h4.5a8.2 8.2 0 0 1-1.23-2"/></svg> </a> <h1 id=nlohmannbasic_jsonsax_parse><small>nlohmann::basic_json::</small>sax_parse<a class=headerlink href=#nlohmannbasic_jsonsax_parse title="Permanent link">&para;</a></h1> <div class=highlight><pre><span></span><code><span class=c1>// (1)</span>
 <span class=k>template</span><span class=w> </span><span class=o>&lt;</span><span class=k>typename</span><span class=w> </span><span class=nc>InputType</span><span class=p>,</span><span class=w> </span><span class=k>typename</span><span class=w> </span><span class=nc>SAX</span><span class=o>&gt;</span>
 <span class=k>static</span><span class=w> </span><span class=kt>bool</span><span class=w> </span><span class=n>sax_parse</span><span class=p>(</span><span class=n>InputType</span><span class=o>&amp;&amp;</span><span class=w> </span><span class=n>i</span><span class=p>,</span>
 <span class=w>                      </span><span class=n>SAX</span><span class=o>*</span><span class=w> </span><span class=n>sax</span><span class=p>,</span>
@@ -15,7 +15,7 @@
 <span class=w>                      </span><span class=k>const</span><span class=w> </span><span class=kt>bool</span><span class=w> </span><span class=n>strict</span><span class=w> </span><span class=o>=</span><span class=w> </span><span class=nb>true</span><span class=p>,</span>
 <span class=w>                      </span><span class=k>const</span><span class=w> </span><span class=kt>bool</span><span class=w> </span><span class=n>ignore_comments</span><span class=w> </span><span class=o>=</span><span class=w> </span><span class=nb>false</span><span class=p>,</span>
 <span class=w>                      </span><span class=k>const</span><span class=w> </span><span class=kt>bool</span><span class=w> </span><span class=n>ignore_trailing_commas</span><span class=w> </span><span class=o>=</span><span class=w> </span><span class=nb>false</span><span class=p>);</span>
-</code></pre></div> <p>Read from input and generate <abbr title="Simple API for XML">SAX</abbr> events</p> <ol> <li>Read from a compatible input.</li> <li> <p>Read from a pair of character iterators</p> <p>The value_type of the iterator must be an integral type with a size of 1, 2, or 4 bytes, which will be interpreted respectively as <abbr title="Unicode Transformation Format">UTF</abbr>-8, <abbr title="Unicode Transformation Format">UTF</abbr>-16, and <abbr title="Unicode Transformation Format">UTF</abbr>-32.</p> </li> </ol> <p>The <abbr title="Simple API for XML">SAX</abbr> event lister must follow the interface of <a href=../../json_sax/ ><code>json_sax</code></a>.</p> <h2 id=template-parameters>Template parameters<a class=headerlink href=#template-parameters title="Permanent link">&para;</a></h2> <dl> <dt><code>InputType</code></dt> <dd> <p>A compatible input, for instance:</p> <ul> <li>an <code>std::istream</code> object</li> <li>a <code>FILE</code> pointer</li> <li>a C-style array of characters</li> <li>a pointer to a null-terminated string of single byte characters</li> <li>an object <code>obj</code> for which <code>begin(obj)</code> and <code>end(obj)</code> produces a valid pair of iterators.</li> </ul> </dd> <dt><code>IteratorType</code></dt> <dd>Description</dd> <dt><code>SAX</code></dt> <dd>Description</dd> </dl> <h2 id=parameters>Parameters<a class=headerlink href=#parameters title="Permanent link">&para;</a></h2> <dl> <dt><code>i</code> (in)</dt> <dd>Input to parse from</dd> <dt><code>sax</code> (in)</dt> <dd><abbr title="Simple API for XML">SAX</abbr> event listener (must not be null)</dd> <dt><code>format</code> (in)</dt> <dd>the format to parse (<abbr title="JavaScript Object Notation">JSON</abbr>, <abbr title="Concise Binary Object Representation">CBOR</abbr>, MessagePack, or <abbr title="Universal Binary JSON">UBJSON</abbr>) (optional, <code>input_format_t::json</code> by default), see <a href=../input_format_t/ ><code>input_format_t</code></a> for more information</dd> <dt><code>strict</code> (in)</dt> <dd>whether the input has to be consumed completely (optional, <code class=highlight><span class=nb>true</span></code> by default)</dd> <dt><code>ignore_comments</code> (in)</dt> <dd>whether comments should be ignored and treated like whitespace (<code class=highlight><span class=nb>true</span></code>) or yield a parse error (<code class=highlight><span class=nb>false</span></code>); (optional, <code class=highlight><span class=nb>false</span></code> by default)</dd> <dt><code>ignore_trailing_commas</code> (in)</dt> <dd>whether trailing commas in arrays or objects should be ignored and treated like whitespace (<code class=highlight><span class=nb>true</span></code>) or yield a parse error (<code class=highlight><span class=nb>false</span></code>); (optional, <code class=highlight><span class=nb>false</span></code> by default)</dd> <dt><code>first</code> (in)</dt> <dd>iterator to the start of a character range</dd> <dt><code>last</code> (in)</dt> <dd>iterator to the end of a character range</dd> </dl> <h2 id=return-value>Return value<a class=headerlink href=#return-value title="Permanent link">&para;</a></h2> <p>return value of the last processed <abbr title="Simple API for XML">SAX</abbr> event</p> <h2 id=exception-safety>Exception safety<a class=headerlink href=#exception-safety title="Permanent link">&para;</a></h2> <p>Strong guarantee: if an exception is thrown, there are no changes in the <abbr title="JavaScript Object Notation">JSON</abbr> value.</p> <h2 id=exceptions>Exceptions<a class=headerlink href=#exceptions title="Permanent link">&para;</a></h2> <ul> <li>Throws <a href=../../../home/exceptions/#jsonexceptionparse_error101><code>parse_error.101</code></a> in case of an unexpected token, or empty input like a null <code>FILE*</code> or <code>char*</code> pointer.</li> <li>Throws <a href=../../../home/exceptions/#jsonexceptionparse_error102><code>parse_error.102</code></a> if <code>to_unicode</code> fails or surrogate error.</li> <li>Throws <a href=../../../home/exceptions/#jsonexceptionparse_error103><code>parse_error.103</code></a> if <code>to_unicode</code> fails.</li> </ul> <h2 id=complexity>Complexity<a class=headerlink href=#complexity title="Permanent link">&para;</a></h2> <p>Linear in the length of the input. The parser is a predictive LL(1) parser. The complexity can be higher if the <abbr title="Simple API for XML">SAX</abbr> consumer <code>sax</code> has a super-linear complexity.</p> <h2 id=notes>Notes<a class=headerlink href=#notes title="Permanent link">&para;</a></h2> <p>A <abbr title="Unicode Transformation Format">UTF</abbr>-8 byte order mark is silently ignored.</p> <h2 id=examples>Examples<a class=headerlink href=#examples title="Permanent link">&para;</a></h2> <details class=example> <summary>Example</summary> <p>The example below demonstrates the <code>sax_parse()</code> function reading from string and processing the events with a user-defined <abbr title="Simple API for XML">SAX</abbr> event consumer.</p> <div class=highlight><pre><span></span><code><span class=cp>#include</span><span class=w> </span><span class=cpf>&lt;iostream&gt;</span>
+</code></pre></div> <p>Read from input and generate <abbr title="Simple API for XML">SAX</abbr> events</p> <ol> <li>Read from a compatible input.</li> <li> <p>Read from a pair of character iterators</p> <p>The value_type of the iterator must be an integral type with a size of 1, 2, or 4 bytes, which will be interpreted respectively as <abbr title="Unicode Transformation Format">UTF</abbr>-8, <abbr title="Unicode Transformation Format">UTF</abbr>-16, and <abbr title="Unicode Transformation Format">UTF</abbr>-32.</p> </li> </ol> <p>The <abbr title="Simple API for XML">SAX</abbr> event lister must follow the interface of <a href=../../json_sax/ ><code>json_sax</code></a>.</p> <h2 id=template-parameters>Template parameters<a class=headerlink href=#template-parameters title="Permanent link">&para;</a></h2> <dl> <dt><code>InputType</code></dt> <dd> <p>A compatible input, for instance:</p> <ul> <li>an <code>std::istream</code> object</li> <li>a <code>FILE</code> pointer</li> <li>a C-style array of characters</li> <li>a pointer to a null-terminated string of single byte characters</li> <li>an object <code>obj</code> for which <code>begin(obj)</code> and <code>end(obj)</code> produces a valid pair of iterators.</li> </ul> </dd> <dt><code>IteratorType</code></dt> <dd>a compatible iterator type for overload (2); a pair of character iterators whose <code>value_type</code> is an integral type with a size of 1, 2, or 4 bytes (interpreted respectively as <abbr title="Unicode Transformation Format">UTF</abbr>-8, <abbr title="Unicode Transformation Format">UTF</abbr>-16, and <abbr title="Unicode Transformation Format">UTF</abbr>-32)</dd> <dt><code>SAX</code></dt> <dd>a class fulfilling the <abbr title="Simple API for XML">SAX</abbr> event listener interface; see <a href=../../json_sax/ ><code>json_sax</code></a></dd> </dl> <h2 id=parameters>Parameters<a class=headerlink href=#parameters title="Permanent link">&para;</a></h2> <dl> <dt><code>i</code> (in)</dt> <dd>Input to parse from</dd> <dt><code>sax</code> (in)</dt> <dd><abbr title="Simple API for XML">SAX</abbr> event listener (must not be null)</dd> <dt><code>format</code> (in)</dt> <dd>the format to parse (<abbr title="JavaScript Object Notation">JSON</abbr>, <abbr title="Concise Binary Object Representation">CBOR</abbr>, MessagePack, or <abbr title="Universal Binary JSON">UBJSON</abbr>) (optional, <code>input_format_t::json</code> by default), see <a href=../input_format_t/ ><code>input_format_t</code></a> for more information</dd> <dt><code>strict</code> (in)</dt> <dd>whether the input has to be consumed completely (optional, <code class=highlight><span class=nb>true</span></code> by default)</dd> <dt><code>ignore_comments</code> (in)</dt> <dd>whether comments should be ignored and treated like whitespace (<code class=highlight><span class=nb>true</span></code>) or yield a parse error (<code class=highlight><span class=nb>false</span></code>); (optional, <code class=highlight><span class=nb>false</span></code> by default)</dd> <dt><code>ignore_trailing_commas</code> (in)</dt> <dd>whether trailing commas in arrays or objects should be ignored and treated like whitespace (<code class=highlight><span class=nb>true</span></code>) or yield a parse error (<code class=highlight><span class=nb>false</span></code>); (optional, <code class=highlight><span class=nb>false</span></code> by default)</dd> <dt><code>first</code> (in)</dt> <dd>iterator to the start of a character range</dd> <dt><code>last</code> (in)</dt> <dd>iterator to the end of a character range</dd> </dl> <h2 id=return-value>Return value<a class=headerlink href=#return-value title="Permanent link">&para;</a></h2> <p>return value of the last processed <abbr title="Simple API for XML">SAX</abbr> event</p> <h2 id=exception-safety>Exception safety<a class=headerlink href=#exception-safety title="Permanent link">&para;</a></h2> <p>Strong guarantee: if an exception is thrown, there are no changes in the <abbr title="JavaScript Object Notation">JSON</abbr> value.</p> <h2 id=exceptions>Exceptions<a class=headerlink href=#exceptions title="Permanent link">&para;</a></h2> <ul> <li>Throws <a href=../../../home/exceptions/#jsonexceptionparse_error101><code>parse_error.101</code></a> in case of an unexpected token, or empty input like a null <code>FILE*</code> or <code>char*</code> pointer.</li> </ul> <h2 id=complexity>Complexity<a class=headerlink href=#complexity title="Permanent link">&para;</a></h2> <p>Linear in the length of the input. The parser is a predictive LL(1) parser. The complexity can be higher if the <abbr title="Simple API for XML">SAX</abbr> consumer <code>sax</code> has a super-linear complexity.</p> <h2 id=notes>Notes<a class=headerlink href=#notes title="Permanent link">&para;</a></h2> <p>A <abbr title="Unicode Transformation Format">UTF</abbr>-8 byte order mark is silently ignored.</p> <h2 id=examples>Examples<a class=headerlink href=#examples title="Permanent link">&para;</a></h2> <details class=example> <summary>Example</summary> <p>The example below demonstrates the <code>sax_parse()</code> function reading from string and processing the events with a user-defined <abbr title="Simple API for XML">SAX</abbr> event consumer.</p> <div class=highlight><pre><span></span><code><span class=cp>#include</span><span class=w> </span><span class=cpf>&lt;iostream&gt;</span>
 <span class=cp>#include</span><span class=w> </span><span class=cpf>&lt;iomanip&gt;</span>
 <span class=cp>#include</span><span class=w> </span><span class=cpf>&lt;sstream&gt;</span>
 <span class=cp>#include</span><span class=w> </span><span class=cpf>&lt;nlohmann/json.hpp&gt;</span>
@@ -183,4 +183,4 @@
 <span class=w>            </span><span class=err>ex=</span><span class=p>[</span><span class=err>jso</span><span class=kc>n</span><span class=err>.excep</span><span class=kc>t</span><span class=err>io</span><span class=kc>n</span><span class=err>.parse_error.</span><span class=mi>101</span><span class=p>]</span><span class=w> </span><span class=err>parse</span><span class=w> </span><span class=err>error</span><span class=w> </span><span class=err>a</span><span class=kc>t</span><span class=w> </span><span class=err>li</span><span class=kc>ne</span><span class=w> </span><span class=mi>17</span><span class=p>,</span><span class=w> </span><span class=err>colum</span><span class=kc>n</span><span class=w> </span><span class=mi>6</span><span class=p>:</span><span class=w> </span><span class=err>sy</span><span class=kc>nta</span><span class=err>x</span><span class=w> </span><span class=err>error</span><span class=w> </span><span class=err>while</span><span class=w> </span><span class=err>parsi</span><span class=kc>n</span><span class=err>g</span><span class=w> </span><span class=err>value</span><span class=w> </span><span class=mi>-</span><span class=w> </span><span class=err>u</span><span class=kc>ne</span><span class=err>xpec</span><span class=kc>te</span><span class=err>d</span><span class=w> </span><span class=err>&#39;</span><span class=p>]</span><span class=err>&#39;;</span><span class=w> </span><span class=err>expec</span><span class=kc>te</span><span class=err>d</span><span class=w> </span><span class=err>e</span><span class=kc>n</span><span class=err>d</span><span class=w> </span><span class=err>o</span><span class=kc>f</span><span class=w> </span><span class=err>i</span><span class=kc>n</span><span class=err>pu</span><span class=kc>t</span><span class=err>)</span>
 
 <span class=err>resul</span><span class=kc>t</span><span class=p>:</span><span class=w> </span><span class=kc>false</span>
-</code></pre></div> </details> <h2 id=version-history>Version history<a class=headerlink href=#version-history title="Permanent link">&para;</a></h2> <ul> <li>Added in version 3.2.0.</li> <li>Ignoring comments via <code>ignore_comments</code> added in version 3.9.0.</li> <li>Added <code>ignore_trailing_commas</code> in version 3.12.1.</li> </ul> <div class="admonition warning"> <p class=admonition-title>Deprecation</p> <p>Overload (2) replaces calls to <code>sax_parse</code> with a pair of iterators as their first parameter which has been deprecated in version 3.8.0. This overload will be removed in version 4.0.0. Please replace all calls like <code class=highlight><span class=n>sax_parse</span><span class=p>({</span><span class=n>ptr</span><span class=p>,</span><span class=w> </span><span class=n>ptr</span><span class=o>+</span><span class=n>len</span><span class=p>});</span></code> with <code class=highlight><span class=n>sax_parse</span><span class=p>(</span><span class=n>ptr</span><span class=p>,</span><span class=w> </span><span class=n>ptr</span><span class=o>+</span><span class=n>len</span><span class=p>);</span></code>.</p> </div> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 23, 2026 11:16:18 UTC">June 23, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
+</code></pre></div> </details> <h2 id=see-also>See also<a class=headerlink href=#see-also title="Permanent link">&para;</a></h2> <ul> <li><a href=../parse/ >parse</a> - deserialize from a compatible input</li> <li><a href=../accept/ >accept</a> - check if the input is valid <abbr title="JavaScript Object Notation">JSON</abbr></li> </ul> <h2 id=version-history>Version history<a class=headerlink href=#version-history title="Permanent link">&para;</a></h2> <ul> <li>Added in version 3.2.0.</li> <li>Ignoring comments via <code>ignore_comments</code> added in version 3.9.0.</li> <li>Added <code>ignore_trailing_commas</code> in version 3.12.x.</li> </ul> <div class="admonition warning"> <p class=admonition-title>Deprecation</p> <p>Overload (2) replaces calls to <code>sax_parse</code> with a pair of iterators as their first parameter which has been deprecated in version 3.8.0. This overload will be removed in version 4.0.0. Please replace all calls like <code class=highlight><span class=n>sax_parse</span><span class=p>({</span><span class=n>ptr</span><span class=p>,</span><span class=w> </span><span class=n>ptr</span><span class=o>+</span><span class=n>len</span><span class=p>});</span></code> with <code class=highlight><span class=n>sax_parse</span><span class=p>(</span><span class=n>ptr</span><span class=p>,</span><span class=w> </span><span class=n>ptr</span><span class=o>+</span><span class=n>len</span><span class=p>);</span></code>.</p> </div> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 29, 2026 20:15:18 UTC">June 29, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
diff --git a/api/basic_json/size/index.html b/api/basic_json/size/index.html
index 62fe4f2..8ac7d43 100644
--- a/api/basic_json/size/index.html
+++ b/api/basic_json/size/index.html
@@ -37,4 +37,4 @@
 <span class=mi>5</span>
 <span class=mi>0</span>
 <span class=mi>1</span>
-</code></pre></div> </details> <h2 id=version-history>Version history<a class=headerlink href=#version-history title="Permanent link">&para;</a></h2> <ul> <li>Added in version 1.0.0.</li> <li>Extended to return <code>1</code> for binary types in version 3.8.0.</li> </ul> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 23, 2026 11:16:18 UTC">June 23, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
+</code></pre></div> </details> <h2 id=version-history>Version history<a class=headerlink href=#version-history title="Permanent link">&para;</a></h2> <ul> <li>Added in version 1.0.0.</li> <li>Extended to return <code>1</code> for binary types in version 3.8.0.</li> </ul> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 29, 2026 20:15:18 UTC">June 29, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
diff --git a/api/basic_json/start_pos/index.html b/api/basic_json/start_pos/index.html
index 6489534..286cc8d 100644
--- a/api/basic_json/start_pos/index.html
+++ b/api/basic_json/start_pos/index.html
@@ -101,4 +101,4 @@
 1
 Parsed string: 
 1
-</code></pre></div> <p>The output shows the start/end positions of all the objects and fields in the <abbr title="JavaScript Object Notation">JSON</abbr> string.</p> </details> <h2 id=see-also>See also<a class=headerlink href=#see-also title="Permanent link">&para;</a></h2> <ul> <li><a href=../end_pos/ >end_pos</a> to access the end position</li> <li><a href=../../macros/json_diagnostic_positions/ >JSON_DIAGNOSTIC_POSITIONS</a> for an overview of the diagnostic positions</li> </ul> <h2 id=version-history>Version history<a class=headerlink href=#version-history title="Permanent link">&para;</a></h2> <ul> <li>Added in version 3.12.0.</li> </ul> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 23, 2026 11:16:18 UTC">June 23, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
+</code></pre></div> <p>The output shows the start/end positions of all the objects and fields in the <abbr title="JavaScript Object Notation">JSON</abbr> string.</p> </details> <h2 id=see-also>See also<a class=headerlink href=#see-also title="Permanent link">&para;</a></h2> <ul> <li><a href=../end_pos/ >end_pos</a> to access the end position</li> <li><a href=../../macros/json_diagnostic_positions/ >JSON_DIAGNOSTIC_POSITIONS</a> for an overview of the diagnostic positions</li> </ul> <h2 id=version-history>Version history<a class=headerlink href=#version-history title="Permanent link">&para;</a></h2> <ul> <li>Added in version 3.12.0.</li> </ul> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 29, 2026 20:15:18 UTC">June 29, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
diff --git a/api/basic_json/std_hash/index.html b/api/basic_json/std_hash/index.html
index ce83187..6da0208 100644
--- a/api/basic_json/std_hash/index.html
+++ b/api/basic_json/std_hash/index.html
@@ -28,4 +28,4 @@
 <span class=err>hash(</span><span class=p>{}</span><span class=err>)</span><span class=w> </span><span class=err>=</span><span class=w> </span><span class=mi>2654435832</span>
 <span class=err>hash(</span><span class=p>[]</span><span class=err>)</span><span class=w> </span><span class=err>=</span><span class=w> </span><span class=mi>2654435899</span>
 <span class=err>hash(</span><span class=p>{</span><span class=nt>&quot;hello&quot;</span><span class=p>:</span><span class=w> </span><span class=s2>&quot;world&quot;</span><span class=p>}</span><span class=err>)</span><span class=w> </span><span class=err>=</span><span class=w> </span><span class=mi>4469488738203676328</span>
-</code></pre></div> <p>Note the output is platform-dependent.</p> </details> <h2 id=version-history>Version history<a class=headerlink href=#version-history title="Permanent link">&para;</a></h2> <ul> <li>Added in version 1.0.0.</li> <li>Extended for arbitrary basic_json types in version 3.10.5.</li> </ul> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 23, 2026 11:16:18 UTC">June 23, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
+</code></pre></div> <p>Note the output is platform-dependent.</p> </details> <h2 id=version-history>Version history<a class=headerlink href=#version-history title="Permanent link">&para;</a></h2> <ul> <li>Added in version 1.0.0.</li> <li>Extended for arbitrary basic_json types in version 3.10.5.</li> </ul> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 29, 2026 20:15:18 UTC">June 29, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
diff --git a/api/basic_json/std_swap/index.html b/api/basic_json/std_swap/index.html
index ba71e8c..946710a 100644
--- a/api/basic_json/std_swap/index.html
+++ b/api/basic_json/std_swap/index.html
@@ -1,7 +1,7 @@
-<!doctype html><html lang=en class=no-js> <head><meta charset=utf-8><meta name=viewport content="width=device-width,initial-scale=1"><meta name=author content="Niels Lohmann"><link href="https://json.nlohmann.me/api/basic_json/std_swap/" rel="canonical"><link href=../swap/ rel=prev><link href=../to_bjdata/ rel=next><link rel=icon href=../../../assets/images/favicon.png><meta name=generator content="mkdocs-1.6.1, mkdocs-material-9.7.6"><title>std::swap<basic_json> - JSON for Modern C++</title><link rel=stylesheet href=../../../assets/stylesheets/main.484c7ddc.min.css><link rel=stylesheet href=../../../assets/stylesheets/palette.ab4e12ef.min.css><link rel="stylesheet" href="../../../assets/external/fonts.googleapis.com/css.61a430c9.css"><style>:root{--md-text-font:"Roboto";--md-code-font:"JetBrains Mono"}</style><link rel=stylesheet href=../../../css/custom.css><script>__md_scope=new URL("../../..",location),__md_hash=e=>[...e].reduce(((e,_)=>(e<<5)-e+_.charCodeAt(0)),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script></head> <body dir=ltr data-md-color-scheme=default data-md-color-primary=indigo data-md-color-accent=indigo> <input class=md-toggle data-md-toggle=drawer type=checkbox id=__drawer autocomplete=off> <input class=md-toggle data-md-toggle=search type=checkbox id=__search autocomplete=off> <label class=md-overlay for=__drawer></label> <div data-md-component=skip> <a href=#stdswapbasic_json class=md-skip> Skip to content </a> </div> <div data-md-component=announce> </div> <header class=md-header data-md-component=header> <nav class="md-header__inner md-grid" aria-label=Header> <a href=../../.. title="JSON for Modern C++" class="md-header__button md-logo" aria-label="JSON for Modern C++" data-md-component=logo> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54"/></svg> </a> <label class="md-header__button md-icon" for=__drawer> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M3 6h18v2H3zm0 5h18v2H3zm0 5h18v2H3z"/></svg> </label> <div class=md-header__title data-md-component=header-title> <div class=md-header__ellipsis> <div class=md-header__topic> <span class=md-ellipsis> JSON for Modern C++ </span> </div> <div class=md-header__topic data-md-component=header-topic> <span class=md-ellipsis> std::swap&lt;basic_json&gt; </span> </div> </div> </div> <form class=md-header__option data-md-component=palette> <input class=md-option data-md-color-media="(prefers-color-scheme: light)" data-md-color-scheme=default data-md-color-primary=indigo data-md-color-accent=indigo aria-label="Switch to dark mode" type=radio name=__palette id=__palette_0> <label class="md-header__button md-icon" title="Switch to dark mode" for=__palette_1 hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a4 4 0 0 0-4 4 4 4 0 0 0 4 4 4 4 0 0 0 4-4 4 4 0 0 0-4-4m0 10a6 6 0 0 1-6-6 6 6 0 0 1 6-6 6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12z"/></svg> </label> <input class=md-option data-md-color-media="(prefers-color-scheme: dark)" data-md-color-scheme=slate data-md-color-primary=indigo data-md-color-accent=indigo aria-label="Switch to light mode" type=radio name=__palette id=__palette_1> <label class="md-header__button md-icon" title="Switch to light mode" for=__palette_0 hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 18c-.89 0-1.74-.2-2.5-.55C11.56 16.5 13 14.42 13 12s-1.44-4.5-3.5-5.45C10.26 6.2 11.11 6 12 6a6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12z"/></svg> </label> </form> <script>var palette=__md_get("__palette");if(palette&&palette.color){if("(prefers-color-scheme)"===palette.color.media){var media=matchMedia("(prefers-color-scheme: light)"),input=document.querySelector(media.matches?"[data-md-color-media='(prefers-color-scheme: light)']":"[data-md-color-media='(prefers-color-scheme: dark)']");palette.color.media=input.getAttribute("data-md-color-media"),palette.color.scheme=input.getAttribute("data-md-color-scheme"),palette.color.primary=input.getAttribute("data-md-color-primary"),palette.color.accent=input.getAttribute("data-md-color-accent")}for(var[key,value]of Object.entries(palette.color))document.body.setAttribute("data-md-color-"+key,value)}</script> <label class="md-header__button md-icon" for=__search> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg> </label> <div class=md-search data-md-component=search role=dialog> <label class=md-search__overlay for=__search></label> <div class=md-search__inner role=search> <form class=md-search__form name=search> <input type=text class=md-search__input name=query aria-label=Search placeholder=Search autocapitalize=off autocorrect=off autocomplete=off spellcheck=false data-md-component=search-query required> <label class="md-search__icon md-icon" for=__search> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11z"/></svg> </label> <nav class=md-search__options aria-label=Search> <button type=reset class="md-search__icon md-icon" title=Clear aria-label=Clear tabindex=-1> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z"/></svg> </button> </nav> </form> <div class=md-search__output> <div class=md-search__scrollwrap tabindex=0 data-md-scrollfix> <div class=md-search-result data-md-component=search-result> <div class=md-search-result__meta> Initializing search </div> <ol class=md-search-result__list role=presentation></ol> </div> </div> </div> </div> </div> <div class=md-header__source> <a href="https://github.com/nlohmann/json" title="Go to repository" class="md-source" data-md-component="source"> <div class="md-source__icon md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </div> <div class=md-source__repository> nlohmann/json </div> </a> </div> </nav> </header> <div class=md-container data-md-component=container> <nav class=md-tabs aria-label=Tabs data-md-component=tabs> <div class=md-grid> <ul class=md-tabs__list> <li class=md-tabs__item> <a href=../../.. class=md-tabs__link> Home </a> </li> <li class=md-tabs__item> <a href=../../../features/arbitrary_types/ class=md-tabs__link> Features </a> </li> <li class=md-tabs__item> <a href=../../../integration/ class=md-tabs__link> Integration </a> </li> <li class="md-tabs__item md-tabs__item--active"> <a href=../ class=md-tabs__link> API Documentation </a> </li> <li class=md-tabs__item> <a href=../../../community/ class=md-tabs__link> Community </a> </li> </ul> </div> </nav> <main class=md-main data-md-component=main> <div class="md-main__inner md-grid"> <div class="md-sidebar md-sidebar--primary" data-md-component=sidebar data-md-type=navigation> <div class=md-sidebar__scrollwrap> <div class=md-sidebar__inner> <nav class="md-nav md-nav--primary md-nav--lifted" aria-label=Navigation data-md-level=0> <label class=md-nav__title for=__drawer> <a href=../../.. title="JSON for Modern C++" class="md-nav__button md-logo" aria-label="JSON for Modern C++" data-md-component=logo> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54"/></svg> </a> JSON for Modern C++ </label> <div class=md-nav__source> <a href="https://github.com/nlohmann/json" title="Go to repository" class="md-source" data-md-component="source"> <div class="md-source__icon md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </div> <div class=md-source__repository> nlohmann/json </div> </a> </div> <ul class=md-nav__list data-md-scrollfix> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_1> <div class="md-nav__link md-nav__container"> <a href=../../.. class="md-nav__link "> <span class=md-ellipsis> Home </span> </a> <label class="md-nav__link " for=__nav_1 id=__nav_1_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_1_label aria-expanded=false> <label class=md-nav__title for=__nav_1> <span class="md-nav__icon md-icon"></span> Home </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../home/license/ class=md-nav__link> <span class=md-ellipsis> License </span> </a> </li> <li class=md-nav__item> <a href=../../../home/faq/ class=md-nav__link> <span class=md-ellipsis> FAQ </span> </a> </li> <li class=md-nav__item> <a href=../../../home/exceptions/ class=md-nav__link> <span class=md-ellipsis> Exceptions </span> </a> </li> <li class=md-nav__item> <a href=../../../home/releases/ class=md-nav__link> <span class=md-ellipsis> Releases </span> </a> </li> <li class=md-nav__item> <a href=../../../home/design_goals/ class=md-nav__link> <span class=md-ellipsis> Design goals </span> </a> </li> <li class=md-nav__item> <a href=../../../home/architecture/ class=md-nav__link> <span class=md-ellipsis> Architecture </span> </a> </li> <li class=md-nav__item> <a href=../../../home/customers/ class=md-nav__link> <span class=md-ellipsis> Customers </span> </a> </li> <li class=md-nav__item> <a href=../../../home/sponsors/ class=md-nav__link> <span class=md-ellipsis> Sponsors </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2> <label class=md-nav__link for=__nav_2 id=__nav_2_label tabindex=0> <span class=md-ellipsis> Features </span> <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_2_label aria-expanded=false> <label class=md-nav__title for=__nav_2> <span class="md-nav__icon md-icon"></span> Features </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/arbitrary_types/ class=md-nav__link> <span class=md-ellipsis> Arbitrary Type Conversions </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_2> <div class="md-nav__link md-nav__container"> <a href=../../../features/binary_formats/ class="md-nav__link "> <span class=md-ellipsis> Binary Formats </span> </a> <label class="md-nav__link " for=__nav_2_2 id=__nav_2_2_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_2_label aria-expanded=false> <label class=md-nav__title for=__nav_2_2> <span class="md-nav__icon md-icon"></span> Binary Formats </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/binary_formats/bjdata/ class=md-nav__link> <span class=md-ellipsis> BJData </span> </a> </li> <li class=md-nav__item> <a href=../../../features/binary_formats/bson/ class=md-nav__link> <span class=md-ellipsis> BSON </span> </a> </li> <li class=md-nav__item> <a href=../../../features/binary_formats/cbor/ class=md-nav__link> <span class=md-ellipsis> CBOR </span> </a> </li> <li class=md-nav__item> <a href=../../../features/binary_formats/messagepack/ class=md-nav__link> <span class=md-ellipsis> MessagePack </span> </a> </li> <li class=md-nav__item> <a href=../../../features/binary_formats/ubjson/ class=md-nav__link> <span class=md-ellipsis> UBJSON </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../../features/binary_values/ class=md-nav__link> <span class=md-ellipsis> Binary Values </span> </a> </li> <li class=md-nav__item> <a href=../../../features/comments/ class=md-nav__link> <span class=md-ellipsis> Comments </span> </a> </li> <li class=md-nav__item> <a href=../../../features/trailing_commas/ class=md-nav__link> <span class=md-ellipsis> Trailing Commas </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_6> <div class="md-nav__link md-nav__container"> <a href=../../../features/element_access/ class="md-nav__link "> <span class=md-ellipsis> Element Access </span> </a> <label class="md-nav__link " for=__nav_2_6 id=__nav_2_6_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_6_label aria-expanded=false> <label class=md-nav__title for=__nav_2_6> <span class="md-nav__icon md-icon"></span> Element Access </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/element_access/unchecked_access/ class=md-nav__link> <span class=md-ellipsis> Unchecked access: operator[] </span> </a> </li> <li class=md-nav__item> <a href=../../../features/element_access/checked_access/ class=md-nav__link> <span class=md-ellipsis> Checked access: at </span> </a> </li> <li class=md-nav__item> <a href=../../../features/element_access/default_value/ class=md-nav__link> <span class=md-ellipsis> Access with default value: value </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../../features/iterators/ class=md-nav__link> <span class=md-ellipsis> Iterators </span> </a> </li> <li class=md-nav__item> <a href=../../../features/json_pointer/ class=md-nav__link> <span class=md-ellipsis> JSON Pointer </span> </a> </li> <li class=md-nav__item> <a href=../../../features/json_patch/ class=md-nav__link> <span class=md-ellipsis> JSON Patch and Diff </span> </a> </li> <li class=md-nav__item> <a href=../../../features/merge_patch/ class=md-nav__link> <span class=md-ellipsis> JSON Merge Patch </span> </a> </li> <li class=md-nav__item> <a href=../../../features/modules/ class=md-nav__link> <span class=md-ellipsis> Modules </span> </a> </li> <li class=md-nav__item> <a href=../../../features/namespace/ class=md-nav__link> <span class=md-ellipsis> nlohmann Namespace </span> </a> </li> <li class=md-nav__item> <a href=../../../features/object_order/ class=md-nav__link> <span class=md-ellipsis> Object Order </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_14> <div class="md-nav__link md-nav__container"> <a href=../../../features/parsing/ class="md-nav__link "> <span class=md-ellipsis> Parsing </span> </a> <label class="md-nav__link " for=__nav_2_14 id=__nav_2_14_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_14_label aria-expanded=false> <label class=md-nav__title for=__nav_2_14> <span class="md-nav__icon md-icon"></span> Parsing </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/parsing/json_lines/ class=md-nav__link> <span class=md-ellipsis> JSON Lines </span> </a> </li> <li class=md-nav__item> <a href=../../../features/parsing/parse_exceptions/ class=md-nav__link> <span class=md-ellipsis> Parsing and Exceptions </span> </a> </li> <li class=md-nav__item> <a href=../../../features/parsing/parser_callbacks/ class=md-nav__link> <span class=md-ellipsis> Parser Callbacks </span> </a> </li> <li class=md-nav__item> <a href=../../../features/parsing/sax_interface/ class=md-nav__link> <span class=md-ellipsis> SAX Interface </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../../features/assertions/ class=md-nav__link> <span class=md-ellipsis> Runtime Assertions </span> </a> </li> <li class=md-nav__item> <a href=../../../features/enum_conversion/ class=md-nav__link> <span class=md-ellipsis> Specializing enum conversion </span> </a> </li> <li class=md-nav__item> <a href=../../../features/macros/ class=md-nav__link> <span class=md-ellipsis> Supported Macros </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_18> <div class="md-nav__link md-nav__container"> <a href=../../../features/types/ class="md-nav__link "> <span class=md-ellipsis> Types </span> </a> <label class="md-nav__link " for=__nav_2_18 id=__nav_2_18_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_18_label aria-expanded=false> <label class=md-nav__title for=__nav_2_18> <span class="md-nav__icon md-icon"></span> Types </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/types/number_handling/ class=md-nav__link> <span class=md-ellipsis> Number Handling </span> </a> </li> </ul> </nav> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_3> <div class="md-nav__link md-nav__container"> <a href=../../../integration/ class="md-nav__link "> <span class=md-ellipsis> Integration </span> </a> <label class="md-nav__link " for=__nav_3 id=__nav_3_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_3_label aria-expanded=false> <label class=md-nav__title for=__nav_3> <span class="md-nav__icon md-icon"></span> Integration </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../integration/migration_guide/ class=md-nav__link> <span class=md-ellipsis> Migration Guide </span> </a> </li> <li class=md-nav__item> <a href=../../../integration/cmake/ class=md-nav__link> <span class=md-ellipsis> CMake </span> </a> </li> <li class=md-nav__item> <a href=../../../integration/package_managers/ class=md-nav__link> <span class=md-ellipsis> Package Managers </span> </a> </li> <li class=md-nav__item> <a href=../../../integration/pkg-config/ class=md-nav__link> <span class=md-ellipsis> Pkg-config </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--active md-nav__item--section md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4 checked> <label class=md-nav__link for=__nav_4 id=__nav_4_label tabindex> <span class=md-ellipsis> API Documentation </span> <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_4_label aria-expanded=true> <label class=md-nav__title for=__nav_4> <span class="md-nav__icon md-icon"></span> API Documentation </label> <ul class=md-nav__list data-md-scrollfix> <li class="md-nav__item md-nav__item--active md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_1 checked> <div class="md-nav__link md-nav__container"> <a href=../ class="md-nav__link "> <span class=md-ellipsis> basic_json </span> </a> <label class="md-nav__link " for=__nav_4_1 id=__nav_4_1_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_1_label aria-expanded=true> <label class=md-nav__title for=__nav_4_1> <span class="md-nav__icon md-icon"></span> basic_json </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../basic_json/ class=md-nav__link> <span class=md-ellipsis> (Constructor) </span> </a> </li> <li class=md-nav__item> <a href=../~basic_json/ class=md-nav__link> <span class=md-ellipsis> (Destructor) </span> </a> </li> <li class=md-nav__item> <a href=../accept/ class=md-nav__link> <span class=md-ellipsis> accept </span> </a> </li> <li class=md-nav__item> <a href=../array/ class=md-nav__link> <span class=md-ellipsis> array </span> </a> </li> <li class=md-nav__item> <a href=../array_t/ class=md-nav__link> <span class=md-ellipsis> array_t </span> </a> </li> <li class=md-nav__item> <a href=../at/ class=md-nav__link> <span class=md-ellipsis> at </span> </a> </li> <li class=md-nav__item> <a href=../back/ class=md-nav__link> <span class=md-ellipsis> back </span> </a> </li> <li class=md-nav__item> <a href=../begin/ class=md-nav__link> <span class=md-ellipsis> begin </span> </a> </li> <li class=md-nav__item> <a href=../binary/ class=md-nav__link> <span class=md-ellipsis> binary </span> </a> </li> <li class=md-nav__item> <a href=../binary_t/ class=md-nav__link> <span class=md-ellipsis> binary_t </span> </a> </li> <li class=md-nav__item> <a href=../boolean_t/ class=md-nav__link> <span class=md-ellipsis> boolean_t </span> </a> </li> <li class=md-nav__item> <a href=../cbegin/ class=md-nav__link> <span class=md-ellipsis> cbegin </span> </a> </li> <li class=md-nav__item> <a href=../cbor_tag_handler_t/ class=md-nav__link> <span class=md-ellipsis> cbor_tag_handler_t </span> </a> </li> <li class=md-nav__item> <a href=../cend/ class=md-nav__link> <span class=md-ellipsis> cend </span> </a> </li> <li class=md-nav__item> <a href=../clear/ class=md-nav__link> <span class=md-ellipsis> clear </span> </a> </li> <li class=md-nav__item> <a href=../contains/ class=md-nav__link> <span class=md-ellipsis> contains </span> </a> </li> <li class=md-nav__item> <a href=../count/ class=md-nav__link> <span class=md-ellipsis> count </span> </a> </li> <li class=md-nav__item> <a href=../crbegin/ class=md-nav__link> <span class=md-ellipsis> crbegin </span> </a> </li> <li class=md-nav__item> <a href=../crend/ class=md-nav__link> <span class=md-ellipsis> crend </span> </a> </li> <li class=md-nav__item> <a href=../default_object_comparator_t/ class=md-nav__link> <span class=md-ellipsis> default_object_comparator_t </span> </a> </li> <li class=md-nav__item> <a href=../diff/ class=md-nav__link> <span class=md-ellipsis> diff </span> </a> </li> <li class=md-nav__item> <a href=../dump/ class=md-nav__link> <span class=md-ellipsis> dump </span> </a> </li> <li class=md-nav__item> <a href=../emplace/ class=md-nav__link> <span class=md-ellipsis> emplace </span> </a> </li> <li class=md-nav__item> <a href=../emplace_back/ class=md-nav__link> <span class=md-ellipsis> emplace_back </span> </a> </li> <li class=md-nav__item> <a href=../empty/ class=md-nav__link> <span class=md-ellipsis> empty </span> </a> </li> <li class=md-nav__item> <a href=../end/ class=md-nav__link> <span class=md-ellipsis> end </span> </a> </li> <li class=md-nav__item> <a href=../end_pos/ class=md-nav__link> <span class=md-ellipsis> end_pos </span> </a> </li> <li class=md-nav__item> <a href=../erase/ class=md-nav__link> <span class=md-ellipsis> erase </span> </a> </li> <li class=md-nav__item> <a href=../error_handler_t/ class=md-nav__link> <span class=md-ellipsis> error_handler_t </span> </a> </li> <li class=md-nav__item> <a href=../exception/ class=md-nav__link> <span class=md-ellipsis> exception </span> </a> </li> <li class=md-nav__item> <a href=../find/ class=md-nav__link> <span class=md-ellipsis> find </span> </a> </li> <li class=md-nav__item> <a href=../flatten/ class=md-nav__link> <span class=md-ellipsis> flatten </span> </a> </li> <li class=md-nav__item> <a href=../from_bjdata/ class=md-nav__link> <span class=md-ellipsis> from_bjdata </span> </a> </li> <li class=md-nav__item> <a href=../from_bson/ class=md-nav__link> <span class=md-ellipsis> from_bson </span> </a> </li> <li class=md-nav__item> <a href=../from_cbor/ class=md-nav__link> <span class=md-ellipsis> from_cbor </span> </a> </li> <li class=md-nav__item> <a href=../from_msgpack/ class=md-nav__link> <span class=md-ellipsis> from_msgpack </span> </a> </li> <li class=md-nav__item> <a href=../from_ubjson/ class=md-nav__link> <span class=md-ellipsis> from_ubjson </span> </a> </li> <li class=md-nav__item> <a href=../front/ class=md-nav__link> <span class=md-ellipsis> front </span> </a> </li> <li class=md-nav__item> <a href=../get/ class=md-nav__link> <span class=md-ellipsis> get </span> </a> </li> <li class=md-nav__item> <a href=../get_allocator/ class=md-nav__link> <span class=md-ellipsis> get_allocator </span> </a> </li> <li class=md-nav__item> <a href=../get_binary/ class=md-nav__link> <span class=md-ellipsis> get_binary </span> </a> </li> <li class=md-nav__item> <a href=../get_ptr/ class=md-nav__link> <span class=md-ellipsis> get_ptr </span> </a> </li> <li class=md-nav__item> <a href=../get_ref/ class=md-nav__link> <span class=md-ellipsis> get_ref </span> </a> </li> <li class=md-nav__item> <a href=../get_to/ class=md-nav__link> <span class=md-ellipsis> get_to </span> </a> </li> <li class=md-nav__item> <a href=../std_hash/ class=md-nav__link> <span class=md-ellipsis> std::hash&lt;basic_json&gt; </span> </a> </li> <li class=md-nav__item> <a href=../input_format_t/ class=md-nav__link> <span class=md-ellipsis> input_format_t </span> </a> </li> <li class=md-nav__item> <a href=../insert/ class=md-nav__link> <span class=md-ellipsis> insert </span> </a> </li> <li class=md-nav__item> <a href=../invalid_iterator/ class=md-nav__link> <span class=md-ellipsis> invalid_iterator </span> </a> </li> <li class=md-nav__item> <a href=../is_array/ class=md-nav__link> <span class=md-ellipsis> is_array </span> </a> </li> <li class=md-nav__item> <a href=../is_binary/ class=md-nav__link> <span class=md-ellipsis> is_binary </span> </a> </li> <li class=md-nav__item> <a href=../is_boolean/ class=md-nav__link> <span class=md-ellipsis> is_boolean </span> </a> </li> <li class=md-nav__item> <a href=../is_discarded/ class=md-nav__link> <span class=md-ellipsis> is_discarded </span> </a> </li> <li class=md-nav__item> <a href=../is_null/ class=md-nav__link> <span class=md-ellipsis> is_null </span> </a> </li> <li class=md-nav__item> <a href=../is_number/ class=md-nav__link> <span class=md-ellipsis> is_number </span> </a> </li> <li class=md-nav__item> <a href=../is_number_float/ class=md-nav__link> <span class=md-ellipsis> is_number_float </span> </a> </li> <li class=md-nav__item> <a href=../is_number_integer/ class=md-nav__link> <span class=md-ellipsis> is_number_integer </span> </a> </li> <li class=md-nav__item> <a href=../is_number_unsigned/ class=md-nav__link> <span class=md-ellipsis> is_number_unsigned </span> </a> </li> <li class=md-nav__item> <a href=../is_object/ class=md-nav__link> <span class=md-ellipsis> is_object </span> </a> </li> <li class=md-nav__item> <a href=../is_primitive/ class=md-nav__link> <span class=md-ellipsis> is_primitive </span> </a> </li> <li class=md-nav__item> <a href=../is_string/ class=md-nav__link> <span class=md-ellipsis> is_string </span> </a> </li> <li class=md-nav__item> <a href=../is_structured/ class=md-nav__link> <span class=md-ellipsis> is_structured </span> </a> </li> <li class=md-nav__item> <a href=../items/ class=md-nav__link> <span class=md-ellipsis> items </span> </a> </li> <li class=md-nav__item> <a href=../json_base_class_t/ class=md-nav__link> <span class=md-ellipsis> json_base_class_t </span> </a> </li> <li class=md-nav__item> <a href=../json_serializer/ class=md-nav__link> <span class=md-ellipsis> json_serializer </span> </a> </li> <li class=md-nav__item> <a href=../max_size/ class=md-nav__link> <span class=md-ellipsis> max_size </span> </a> </li> <li class=md-nav__item> <a href=../meta/ class=md-nav__link> <span class=md-ellipsis> meta </span> </a> </li> <li class=md-nav__item> <a href=../merge_patch/ class=md-nav__link> <span class=md-ellipsis> merge_patch </span> </a> </li> <li class=md-nav__item> <a href=../number_float_t/ class=md-nav__link> <span class=md-ellipsis> number_float_t </span> </a> </li> <li class=md-nav__item> <a href=../number_integer_t/ class=md-nav__link> <span class=md-ellipsis> number_integer_t </span> </a> </li> <li class=md-nav__item> <a href=../number_unsigned_t/ class=md-nav__link> <span class=md-ellipsis> number_unsigned_t </span> </a> </li> <li class=md-nav__item> <a href=../object/ class=md-nav__link> <span class=md-ellipsis> object </span> </a> </li> <li class=md-nav__item> <a href=../object_comparator_t/ class=md-nav__link> <span class=md-ellipsis> object_comparator_t </span> </a> </li> <li class=md-nav__item> <a href=../object_t/ class=md-nav__link> <span class=md-ellipsis> object_t </span> </a> </li> <li class=md-nav__item> <a href=../operator_ValueType/ class=md-nav__link> <span class=md-ellipsis> operator ValueType </span> </a> </li> <li class=md-nav__item> <a href=../operator_value_t/ class=md-nav__link> <span class=md-ellipsis> operator value_t </span> </a> </li> <li class=md-nav__item> <a href=../operator%5B%5D/ class=md-nav__link> <span class=md-ellipsis> operator[] </span> </a> </li> <li class=md-nav__item> <a href=../operator%3D/ class=md-nav__link> <span class=md-ellipsis> operator= </span> </a> </li> <li class=md-nav__item> <a href=../operator%2B%3D/ class=md-nav__link> <span class=md-ellipsis> operator+= </span> </a> </li> <li class=md-nav__item> <a href=../operator_eq/ class=md-nav__link> <span class=md-ellipsis> operator== </span> </a> </li> <li class=md-nav__item> <a href=../operator_ne/ class=md-nav__link> <span class=md-ellipsis> operator!= </span> </a> </li> <li class=md-nav__item> <a href=../operator_lt/ class=md-nav__link> <span class=md-ellipsis> operator< </span> </a> </li> <li class=md-nav__item> <a href=../operator_gt/ class=md-nav__link> <span class=md-ellipsis> operator> </span> </a> </li> <li class=md-nav__item> <a href=../operator_le/ class=md-nav__link> <span class=md-ellipsis> operator<= </span> </a> </li> <li class=md-nav__item> <a href=../operator_ge/ class=md-nav__link> <span class=md-ellipsis> operator>= </span> </a> </li> <li class=md-nav__item> <a href=../operator_spaceship/ class=md-nav__link> <span class=md-ellipsis> operator<=> </span> </a> </li> <li class=md-nav__item> <a href=../out_of_range/ class=md-nav__link> <span class=md-ellipsis> out_of_range </span> </a> </li> <li class=md-nav__item> <a href=../other_error/ class=md-nav__link> <span class=md-ellipsis> other_error </span> </a> </li> <li class=md-nav__item> <a href=../parse/ class=md-nav__link> <span class=md-ellipsis> parse </span> </a> </li> <li class=md-nav__item> <a href=../parse_error/ class=md-nav__link> <span class=md-ellipsis> parse_error </span> </a> </li> <li class=md-nav__item> <a href=../parse_event_t/ class=md-nav__link> <span class=md-ellipsis> parse_event_t </span> </a> </li> <li class=md-nav__item> <a href=../parser_callback_t/ class=md-nav__link> <span class=md-ellipsis> parser_callback_t </span> </a> </li> <li class=md-nav__item> <a href=../patch/ class=md-nav__link> <span class=md-ellipsis> patch </span> </a> </li> <li class=md-nav__item> <a href=../patch_inplace/ class=md-nav__link> <span class=md-ellipsis> patch_inplace </span> </a> </li> <li class=md-nav__item> <a href=../push_back/ class=md-nav__link> <span class=md-ellipsis> push_back </span> </a> </li> <li class=md-nav__item> <a href=../rbegin/ class=md-nav__link> <span class=md-ellipsis> rbegin </span> </a> </li> <li class=md-nav__item> <a href=../rend/ class=md-nav__link> <span class=md-ellipsis> rend </span> </a> </li> <li class=md-nav__item> <a href=../sax_parse/ class=md-nav__link> <span class=md-ellipsis> sax_parse </span> </a> </li> <li class=md-nav__item> <a href=../size/ class=md-nav__link> <span class=md-ellipsis> size </span> </a> </li> <li class=md-nav__item> <a href=../start_pos/ class=md-nav__link> <span class=md-ellipsis> start_pos </span> </a> </li> <li class=md-nav__item> <a href=../string_t/ class=md-nav__link> <span class=md-ellipsis> string_t </span> </a> </li> <li class=md-nav__item> <a href=../swap/ class=md-nav__link> <span class=md-ellipsis> swap </span> </a> </li> <li class="md-nav__item md-nav__item--active"> <input class="md-nav__toggle md-toggle" type=checkbox id=__toc> <label class="md-nav__link md-nav__link--active" for=__toc> <span class=md-ellipsis> std::swap&lt;basic_json&gt; </span> <span class="md-nav__icon md-icon"></span> </label> <a href=./ class="md-nav__link md-nav__link--active"> <span class=md-ellipsis> std::swap&lt;basic_json&gt; </span> </a> <nav class="md-nav md-nav--secondary" aria-label="Table of contents"> <label class=md-nav__title for=__toc> <span class="md-nav__icon md-icon"></span> Table of contents </label> <ul class=md-nav__list data-md-component=toc data-md-scrollfix> <li class=md-nav__item> <a href=#parameters class=md-nav__link> <span class=md-ellipsis> Parameters </span> </a> </li> <li class=md-nav__item> <a href=#possible-implementation class=md-nav__link> <span class=md-ellipsis> Possible implementation </span> </a> </li> <li class=md-nav__item> <a href=#examples class=md-nav__link> <span class=md-ellipsis> Examples </span> </a> </li> <li class=md-nav__item> <a href=#see-also class=md-nav__link> <span class=md-ellipsis> See also </span> </a> </li> <li class=md-nav__item> <a href=#version-history class=md-nav__link> <span class=md-ellipsis> Version history </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../to_bjdata/ class=md-nav__link> <span class=md-ellipsis> to_bjdata </span> </a> </li> <li class=md-nav__item> <a href=../to_bson/ class=md-nav__link> <span class=md-ellipsis> to_bson </span> </a> </li> <li class=md-nav__item> <a href=../to_cbor/ class=md-nav__link> <span class=md-ellipsis> to_cbor </span> </a> </li> <li class=md-nav__item> <a href=../to_msgpack/ class=md-nav__link> <span class=md-ellipsis> to_msgpack </span> </a> </li> <li class=md-nav__item> <a href=../to_string/ class=md-nav__link> <span class=md-ellipsis> to_string </span> </a> </li> <li class=md-nav__item> <a href=../to_ubjson/ class=md-nav__link> <span class=md-ellipsis> to_ubjson </span> </a> </li> <li class=md-nav__item> <a href=../type/ class=md-nav__link> <span class=md-ellipsis> type </span> </a> </li> <li class=md-nav__item> <a href=../type_error/ class=md-nav__link> <span class=md-ellipsis> type_error </span> </a> </li> <li class=md-nav__item> <a href=../type_name/ class=md-nav__link> <span class=md-ellipsis> type_name </span> </a> </li> <li class=md-nav__item> <a href=../unflatten/ class=md-nav__link> <span class=md-ellipsis> unflatten </span> </a> </li> <li class=md-nav__item> <a href=../update/ class=md-nav__link> <span class=md-ellipsis> update </span> </a> </li> <li class=md-nav__item> <a href=../value/ class=md-nav__link> <span class=md-ellipsis> value </span> </a> </li> <li class=md-nav__item> <a href=../value_t/ class=md-nav__link> <span class=md-ellipsis> value_t </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_2> <div class="md-nav__link md-nav__container"> <a href=../../byte_container_with_subtype/ class="md-nav__link "> <span class=md-ellipsis> byte_container_with_subtype </span> </a> <label class="md-nav__link " for=__nav_4_2 id=__nav_4_2_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_2_label aria-expanded=false> <label class=md-nav__title for=__nav_4_2> <span class="md-nav__icon md-icon"></span> byte_container_with_subtype </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../byte_container_with_subtype/byte_container_with_subtype/ class=md-nav__link> <span class=md-ellipsis> (constructor) </span> </a> </li> <li class=md-nav__item> <a href=../../byte_container_with_subtype/clear_subtype/ class=md-nav__link> <span class=md-ellipsis> clear_subtype </span> </a> </li> <li class=md-nav__item> <a href=../../byte_container_with_subtype/has_subtype/ class=md-nav__link> <span class=md-ellipsis> has_subtype </span> </a> </li> <li class=md-nav__item> <a href=../../byte_container_with_subtype/set_subtype/ class=md-nav__link> <span class=md-ellipsis> set_subtype </span> </a> </li> <li class=md-nav__item> <a href=../../byte_container_with_subtype/subtype/ class=md-nav__link> <span class=md-ellipsis> subtype </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_3> <div class="md-nav__link md-nav__container"> <a href=../../adl_serializer/ class="md-nav__link "> <span class=md-ellipsis> adl_serializer </span> </a> <label class="md-nav__link " for=__nav_4_3 id=__nav_4_3_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_3_label aria-expanded=false> <label class=md-nav__title for=__nav_4_3> <span class="md-nav__icon md-icon"></span> adl_serializer </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../adl_serializer/from_json/ class=md-nav__link> <span class=md-ellipsis> from_json </span> </a> </li> <li class=md-nav__item> <a href=../../adl_serializer/to_json/ class=md-nav__link> <span class=md-ellipsis> to_json </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../json/ class=md-nav__link> <span class=md-ellipsis> json </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_5> <div class="md-nav__link md-nav__container"> <a href=../../json_pointer/ class="md-nav__link "> <span class=md-ellipsis> json_pointer </span> </a> <label class="md-nav__link " for=__nav_4_5 id=__nav_4_5_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_5_label aria-expanded=false> <label class=md-nav__title for=__nav_4_5> <span class="md-nav__icon md-icon"></span> json_pointer </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../json_pointer/json_pointer/ class=md-nav__link> <span class=md-ellipsis> (Constructor) </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/back/ class=md-nav__link> <span class=md-ellipsis> back </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/empty/ class=md-nav__link> <span class=md-ellipsis> empty </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/front/ class=md-nav__link> <span class=md-ellipsis> front </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_string_t/ class=md-nav__link> <span class=md-ellipsis> operator string_t </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_eq/ class=md-nav__link> <span class=md-ellipsis> operator== </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_ne/ class=md-nav__link> <span class=md-ellipsis> operator!= </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_slash/ class=md-nav__link> <span class=md-ellipsis> operator/ </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_slasheq/ class=md-nav__link> <span class=md-ellipsis> operator/= </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/parent_pointer/ class=md-nav__link> <span class=md-ellipsis> parent_pointer </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/pop_back/ class=md-nav__link> <span class=md-ellipsis> pop_back </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/pop_front/ class=md-nav__link> <span class=md-ellipsis> pop_front </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/push_back/ class=md-nav__link> <span class=md-ellipsis> push_back </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/push_front/ class=md-nav__link> <span class=md-ellipsis> push_front </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/string_t/ class=md-nav__link> <span class=md-ellipsis> string_t </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/to_string/ class=md-nav__link> <span class=md-ellipsis> to_string </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_6> <div class="md-nav__link md-nav__container"> <a href=../../json_sax/ class="md-nav__link "> <span class=md-ellipsis> json_sax </span> </a> <label class="md-nav__link " for=__nav_4_6 id=__nav_4_6_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_6_label aria-expanded=false> <label class=md-nav__title for=__nav_4_6> <span class="md-nav__icon md-icon"></span> json_sax </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../json_sax/binary/ class=md-nav__link> <span class=md-ellipsis> binary </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/boolean/ class=md-nav__link> <span class=md-ellipsis> boolean </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/end_array/ class=md-nav__link> <span class=md-ellipsis> end_array </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/end_object/ class=md-nav__link> <span class=md-ellipsis> end_object </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/key/ class=md-nav__link> <span class=md-ellipsis> key </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/null/ class=md-nav__link> <span class=md-ellipsis> null </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/number_float/ class=md-nav__link> <span class=md-ellipsis> number_float </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/number_integer/ class=md-nav__link> <span class=md-ellipsis> number_integer </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/number_unsigned/ class=md-nav__link> <span class=md-ellipsis> number_unsigned </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/parse_error/ class=md-nav__link> <span class=md-ellipsis> parse_error </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/start_array/ class=md-nav__link> <span class=md-ellipsis> start_array </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/start_object/ class=md-nav__link> <span class=md-ellipsis> start_object </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/string/ class=md-nav__link> <span class=md-ellipsis> string </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../operator_ltlt/ class=md-nav__link> <span class=md-ellipsis> operator<<(basic_json), operator<<(json_pointer) </span> </a> </li> <li class=md-nav__item> <a href=../../operator_gtgt/ class=md-nav__link> <span class=md-ellipsis> operator>>(basic_json) </span> </a> </li> <li class=md-nav__item> <a href=../../operator_literal_json/ class=md-nav__link> <span class=md-ellipsis> operator""_json </span> </a> </li> <li class=md-nav__item> <a href=../../operator_literal_json_pointer/ class=md-nav__link> <span class=md-ellipsis> operator""_json_pointer </span> </a> </li> <li class=md-nav__item> <a href=../../ordered_json/ class=md-nav__link> <span class=md-ellipsis> ordered_json </span> </a> </li> <li class=md-nav__item> <a href=../../ordered_map/ class=md-nav__link> <span class=md-ellipsis> ordered_map </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_13> <div class="md-nav__link md-nav__container"> <a href=../../macros/ class="md-nav__link "> <span class=md-ellipsis> macros </span> </a> <label class="md-nav__link " for=__nav_4_13 id=__nav_4_13_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_13_label aria-expanded=false> <label class=md-nav__title for=__nav_4_13> <span class="md-nav__icon md-icon"></span> macros </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../macros/json_assert/ class=md-nav__link> <span class=md-ellipsis> JSON_ASSERT </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_brace_init_copy_semantics/ class=md-nav__link> <span class=md-ellipsis> JSON_BRACE_INIT_COPY_SEMANTICS </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_throw_user/ class=md-nav__link> <span class=md-ellipsis> JSON_CATCH_USER, JSON_THROW_USER, JSON_TRY_USER </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_diagnostics/ class=md-nav__link> <span class=md-ellipsis> JSON_DIAGNOSTICS </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_diagnostic_positions/ class=md-nav__link> <span class=md-ellipsis> JSON_DIAGNOSTIC_POSITIONS </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_disable_enum_serialization/ class=md-nav__link> <span class=md-ellipsis> JSON_DISABLE_ENUM_SERIALIZATION </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_has_cpp_11/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_CPP_11, JSON_HAS_CPP_14, JSON_HAS_CPP_17, JSON_HAS_CPP_20 </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_has_filesystem/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_EXPERIMENTAL_FILESYSTEM, JSON_HAS_FILESYSTEM </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_has_ranges/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_RANGES </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_has_static_rtti/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_STATIC_RTTI </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_has_three_way_comparison/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_THREE_WAY_COMPARISON </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_noexception/ class=md-nav__link> <span class=md-ellipsis> JSON_NOEXCEPTION </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_no_io/ class=md-nav__link> <span class=md-ellipsis> JSON_NO_IO </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_skip_library_version_check/ class=md-nav__link> <span class=md-ellipsis> JSON_SKIP_LIBRARY_VERSION_CHECK </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_skip_unsupported_compiler_check/ class=md-nav__link> <span class=md-ellipsis> JSON_SKIP_UNSUPPORTED_COMPILER_CHECK </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_use_global_udls/ class=md-nav__link> <span class=md-ellipsis> JSON_USE_GLOBAL_UDLS </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_use_implicit_conversions/ class=md-nav__link> <span class=md-ellipsis> JSON_USE_IMPLICIT_CONVERSIONS </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_use_legacy_discarded_value_comparison/ class=md-nav__link> <span class=md-ellipsis> JSON_USE_LEGACY_DISCARDED_VALUE_COMPARISON </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_define_derived_type/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_ONLY_SERIALIZE, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_define_type_intrusive/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_TYPE_INTRUSIVE, NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_TYPE_INTRUSIVE_ONLY_SERIALIZE </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_define_type_non_intrusive/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_define_type_with_names/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_TYPE_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_namespace/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_NAMESPACE </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_namespace_begin/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_NAMESPACE_BEGIN, NLOHMANN_JSON_NAMESPACE_END </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_namespace_no_version/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_NAMESPACE_NO_VERSION </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_serialize_enum/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_SERIALIZE_ENUM </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_serialize_enum_strict/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_SERIALIZE_ENUM_STRICT </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_version_major/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_VERSION_MAJOR, NLOHMANN_JSON_VERSION_MINOR, NLOHMANN_JSON_VERSION_PATCH </span> </a> </li> </ul> </nav> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_5> <div class="md-nav__link md-nav__container"> <a href=../../../community/ class="md-nav__link "> <span class=md-ellipsis> Community </span> </a> <label class="md-nav__link " for=__nav_5 id=__nav_5_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_5_label aria-expanded=false> <label class=md-nav__title for=__nav_5> <span class="md-nav__icon md-icon"></span> Community </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../community/code_of_conduct/ class=md-nav__link> <span class=md-ellipsis> Code of Conduct </span> </a> </li> <li class=md-nav__item> <a href=../../../community/contribution_guidelines/ class=md-nav__link> <span class=md-ellipsis> Contribution Guidelines </span> </a> </li> <li class=md-nav__item> <a href=../../../community/quality_assurance/ class=md-nav__link> <span class=md-ellipsis> Quality assurance </span> </a> </li> <li class=md-nav__item> <a href=../../../community/governance/ class=md-nav__link> <span class=md-ellipsis> Governance </span> </a> </li> <li class=md-nav__item> <a href=../../../community/security_policy/ class=md-nav__link> <span class=md-ellipsis> Security Policy </span> </a> </li> </ul> </nav> </li> </ul> </nav> </div> </div> </div> <div class="md-sidebar md-sidebar--secondary" data-md-component=sidebar data-md-type=toc> <div class=md-sidebar__scrollwrap> <div class=md-sidebar__inner> <nav class="md-nav md-nav--secondary" aria-label="Table of contents"> <label class=md-nav__title for=__toc> <span class="md-nav__icon md-icon"></span> Table of contents </label> <ul class=md-nav__list data-md-component=toc data-md-scrollfix> <li class=md-nav__item> <a href=#parameters class=md-nav__link> <span class=md-ellipsis> Parameters </span> </a> </li> <li class=md-nav__item> <a href=#possible-implementation class=md-nav__link> <span class=md-ellipsis> Possible implementation </span> </a> </li> <li class=md-nav__item> <a href=#examples class=md-nav__link> <span class=md-ellipsis> Examples </span> </a> </li> <li class=md-nav__item> <a href=#see-also class=md-nav__link> <span class=md-ellipsis> See also </span> </a> </li> <li class=md-nav__item> <a href=#version-history class=md-nav__link> <span class=md-ellipsis> Version history </span> </a> </li> </ul> </nav> </div> </div> </div> <div class=md-content data-md-component=content> <article class="md-content__inner md-typeset"> <a href="https://github.com/nlohmann/json/edit/develop/docs/mkdocs/docs/api/basic_json/std_swap.md" title="Edit this page" class="md-content__button md-icon" rel="edit"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M10 20H6V4h7v5h5v3.1l2-2V8l-6-6H6c-1.1 0-2 .9-2 2v16c0 1.1.9 2 2 2h4zm10.2-7c.1 0 .3.1.4.2l1.3 1.3c.2.2.2.6 0 .8l-1 1-2.1-2.1 1-1c.1-.1.2-.2.4-.2m0 3.9L14.1 23H12v-2.1l6.1-6.1z"/></svg> </a> <a href="https://github.com/nlohmann/json/raw/develop/docs/mkdocs/docs/api/basic_json/std_swap.md" title="View source of this page" class="md-content__button md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M17 18c.56 0 1 .44 1 1s-.44 1-1 1-1-.44-1-1 .44-1 1-1m0-3c-2.73 0-5.06 1.66-6 4 .94 2.34 3.27 4 6 4s5.06-1.66 6-4c-.94-2.34-3.27-4-6-4m0 6.5a2.5 2.5 0 0 1-2.5-2.5 2.5 2.5 0 0 1 2.5-2.5 2.5 2.5 0 0 1 2.5 2.5 2.5 2.5 0 0 1-2.5 2.5M9.27 20H6V4h7v5h5v4.07c.7.08 1.36.25 2 .49V8l-6-6H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h4.5a8.2 8.2 0 0 1-1.23-2"/></svg> </a> <h1 id=stdswapbasic_json>std::swap&lt;basic_json&gt;<a class=headerlink href=#stdswapbasic_json title="Permanent link">&para;</a></h1> <div class=highlight><pre><span></span><code><span class=k>namespace</span><span class=w> </span><span class=nn>std</span><span class=w> </span><span class=p>{</span>
+<!doctype html><html lang=en class=no-js> <head><meta charset=utf-8><meta name=viewport content="width=device-width,initial-scale=1"><meta name=author content="Niels Lohmann"><link href="https://json.nlohmann.me/api/basic_json/std_swap/" rel="canonical"><link href=../swap/ rel=prev><link href=../to_bjdata/ rel=next><link rel=icon href=../../../assets/images/favicon.png><meta name=generator content="mkdocs-1.6.1, mkdocs-material-9.7.6"><title>std::swap<basic_json> - JSON for Modern C++</title><link rel=stylesheet href=../../../assets/stylesheets/main.484c7ddc.min.css><link rel=stylesheet href=../../../assets/stylesheets/palette.ab4e12ef.min.css><link rel="stylesheet" href="../../../assets/external/fonts.googleapis.com/css.61a430c9.css"><style>:root{--md-text-font:"Roboto";--md-code-font:"JetBrains Mono"}</style><link rel=stylesheet href=../../../css/custom.css><script>__md_scope=new URL("../../..",location),__md_hash=e=>[...e].reduce(((e,_)=>(e<<5)-e+_.charCodeAt(0)),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script></head> <body dir=ltr data-md-color-scheme=default data-md-color-primary=indigo data-md-color-accent=indigo> <input class=md-toggle data-md-toggle=drawer type=checkbox id=__drawer autocomplete=off> <input class=md-toggle data-md-toggle=search type=checkbox id=__search autocomplete=off> <label class=md-overlay for=__drawer></label> <div data-md-component=skip> <a href=#stdswapbasic_json class=md-skip> Skip to content </a> </div> <div data-md-component=announce> </div> <header class=md-header data-md-component=header> <nav class="md-header__inner md-grid" aria-label=Header> <a href=../../.. title="JSON for Modern C++" class="md-header__button md-logo" aria-label="JSON for Modern C++" data-md-component=logo> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54"/></svg> </a> <label class="md-header__button md-icon" for=__drawer> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M3 6h18v2H3zm0 5h18v2H3zm0 5h18v2H3z"/></svg> </label> <div class=md-header__title data-md-component=header-title> <div class=md-header__ellipsis> <div class=md-header__topic> <span class=md-ellipsis> JSON for Modern C++ </span> </div> <div class=md-header__topic data-md-component=header-topic> <span class=md-ellipsis> std::swap&lt;basic_json&gt; </span> </div> </div> </div> <form class=md-header__option data-md-component=palette> <input class=md-option data-md-color-media="(prefers-color-scheme: light)" data-md-color-scheme=default data-md-color-primary=indigo data-md-color-accent=indigo aria-label="Switch to dark mode" type=radio name=__palette id=__palette_0> <label class="md-header__button md-icon" title="Switch to dark mode" for=__palette_1 hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a4 4 0 0 0-4 4 4 4 0 0 0 4 4 4 4 0 0 0 4-4 4 4 0 0 0-4-4m0 10a6 6 0 0 1-6-6 6 6 0 0 1 6-6 6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12z"/></svg> </label> <input class=md-option data-md-color-media="(prefers-color-scheme: dark)" data-md-color-scheme=slate data-md-color-primary=indigo data-md-color-accent=indigo aria-label="Switch to light mode" type=radio name=__palette id=__palette_1> <label class="md-header__button md-icon" title="Switch to light mode" for=__palette_0 hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 18c-.89 0-1.74-.2-2.5-.55C11.56 16.5 13 14.42 13 12s-1.44-4.5-3.5-5.45C10.26 6.2 11.11 6 12 6a6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12z"/></svg> </label> </form> <script>var palette=__md_get("__palette");if(palette&&palette.color){if("(prefers-color-scheme)"===palette.color.media){var media=matchMedia("(prefers-color-scheme: light)"),input=document.querySelector(media.matches?"[data-md-color-media='(prefers-color-scheme: light)']":"[data-md-color-media='(prefers-color-scheme: dark)']");palette.color.media=input.getAttribute("data-md-color-media"),palette.color.scheme=input.getAttribute("data-md-color-scheme"),palette.color.primary=input.getAttribute("data-md-color-primary"),palette.color.accent=input.getAttribute("data-md-color-accent")}for(var[key,value]of Object.entries(palette.color))document.body.setAttribute("data-md-color-"+key,value)}</script> <label class="md-header__button md-icon" for=__search> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg> </label> <div class=md-search data-md-component=search role=dialog> <label class=md-search__overlay for=__search></label> <div class=md-search__inner role=search> <form class=md-search__form name=search> <input type=text class=md-search__input name=query aria-label=Search placeholder=Search autocapitalize=off autocorrect=off autocomplete=off spellcheck=false data-md-component=search-query required> <label class="md-search__icon md-icon" for=__search> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11z"/></svg> </label> <nav class=md-search__options aria-label=Search> <button type=reset class="md-search__icon md-icon" title=Clear aria-label=Clear tabindex=-1> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z"/></svg> </button> </nav> </form> <div class=md-search__output> <div class=md-search__scrollwrap tabindex=0 data-md-scrollfix> <div class=md-search-result data-md-component=search-result> <div class=md-search-result__meta> Initializing search </div> <ol class=md-search-result__list role=presentation></ol> </div> </div> </div> </div> </div> <div class=md-header__source> <a href="https://github.com/nlohmann/json" title="Go to repository" class="md-source" data-md-component="source"> <div class="md-source__icon md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </div> <div class=md-source__repository> nlohmann/json </div> </a> </div> </nav> </header> <div class=md-container data-md-component=container> <nav class=md-tabs aria-label=Tabs data-md-component=tabs> <div class=md-grid> <ul class=md-tabs__list> <li class=md-tabs__item> <a href=../../.. class=md-tabs__link> Home </a> </li> <li class=md-tabs__item> <a href=../../../features/arbitrary_types/ class=md-tabs__link> Features </a> </li> <li class=md-tabs__item> <a href=../../../integration/ class=md-tabs__link> Integration </a> </li> <li class="md-tabs__item md-tabs__item--active"> <a href=../ class=md-tabs__link> API Documentation </a> </li> <li class=md-tabs__item> <a href=../../../community/ class=md-tabs__link> Community </a> </li> </ul> </div> </nav> <main class=md-main data-md-component=main> <div class="md-main__inner md-grid"> <div class="md-sidebar md-sidebar--primary" data-md-component=sidebar data-md-type=navigation> <div class=md-sidebar__scrollwrap> <div class=md-sidebar__inner> <nav class="md-nav md-nav--primary md-nav--lifted" aria-label=Navigation data-md-level=0> <label class=md-nav__title for=__drawer> <a href=../../.. title="JSON for Modern C++" class="md-nav__button md-logo" aria-label="JSON for Modern C++" data-md-component=logo> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54"/></svg> </a> JSON for Modern C++ </label> <div class=md-nav__source> <a href="https://github.com/nlohmann/json" title="Go to repository" class="md-source" data-md-component="source"> <div class="md-source__icon md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </div> <div class=md-source__repository> nlohmann/json </div> </a> </div> <ul class=md-nav__list data-md-scrollfix> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_1> <div class="md-nav__link md-nav__container"> <a href=../../.. class="md-nav__link "> <span class=md-ellipsis> Home </span> </a> <label class="md-nav__link " for=__nav_1 id=__nav_1_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_1_label aria-expanded=false> <label class=md-nav__title for=__nav_1> <span class="md-nav__icon md-icon"></span> Home </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../home/license/ class=md-nav__link> <span class=md-ellipsis> License </span> </a> </li> <li class=md-nav__item> <a href=../../../home/faq/ class=md-nav__link> <span class=md-ellipsis> FAQ </span> </a> </li> <li class=md-nav__item> <a href=../../../home/exceptions/ class=md-nav__link> <span class=md-ellipsis> Exceptions </span> </a> </li> <li class=md-nav__item> <a href=../../../home/releases/ class=md-nav__link> <span class=md-ellipsis> Releases </span> </a> </li> <li class=md-nav__item> <a href=../../../home/design_goals/ class=md-nav__link> <span class=md-ellipsis> Design goals </span> </a> </li> <li class=md-nav__item> <a href=../../../home/architecture/ class=md-nav__link> <span class=md-ellipsis> Architecture </span> </a> </li> <li class=md-nav__item> <a href=../../../home/customers/ class=md-nav__link> <span class=md-ellipsis> Customers </span> </a> </li> <li class=md-nav__item> <a href=../../../home/sponsors/ class=md-nav__link> <span class=md-ellipsis> Sponsors </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2> <label class=md-nav__link for=__nav_2 id=__nav_2_label tabindex=0> <span class=md-ellipsis> Features </span> <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_2_label aria-expanded=false> <label class=md-nav__title for=__nav_2> <span class="md-nav__icon md-icon"></span> Features </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/arbitrary_types/ class=md-nav__link> <span class=md-ellipsis> Arbitrary Type Conversions </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_2> <div class="md-nav__link md-nav__container"> <a href=../../../features/binary_formats/ class="md-nav__link "> <span class=md-ellipsis> Binary Formats </span> </a> <label class="md-nav__link " for=__nav_2_2 id=__nav_2_2_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_2_label aria-expanded=false> <label class=md-nav__title for=__nav_2_2> <span class="md-nav__icon md-icon"></span> Binary Formats </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/binary_formats/bjdata/ class=md-nav__link> <span class=md-ellipsis> BJData </span> </a> </li> <li class=md-nav__item> <a href=../../../features/binary_formats/bson/ class=md-nav__link> <span class=md-ellipsis> BSON </span> </a> </li> <li class=md-nav__item> <a href=../../../features/binary_formats/cbor/ class=md-nav__link> <span class=md-ellipsis> CBOR </span> </a> </li> <li class=md-nav__item> <a href=../../../features/binary_formats/messagepack/ class=md-nav__link> <span class=md-ellipsis> MessagePack </span> </a> </li> <li class=md-nav__item> <a href=../../../features/binary_formats/ubjson/ class=md-nav__link> <span class=md-ellipsis> UBJSON </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../../features/binary_values/ class=md-nav__link> <span class=md-ellipsis> Binary Values </span> </a> </li> <li class=md-nav__item> <a href=../../../features/comments/ class=md-nav__link> <span class=md-ellipsis> Comments </span> </a> </li> <li class=md-nav__item> <a href=../../../features/trailing_commas/ class=md-nav__link> <span class=md-ellipsis> Trailing Commas </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_6> <div class="md-nav__link md-nav__container"> <a href=../../../features/element_access/ class="md-nav__link "> <span class=md-ellipsis> Element Access </span> </a> <label class="md-nav__link " for=__nav_2_6 id=__nav_2_6_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_6_label aria-expanded=false> <label class=md-nav__title for=__nav_2_6> <span class="md-nav__icon md-icon"></span> Element Access </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/element_access/unchecked_access/ class=md-nav__link> <span class=md-ellipsis> Unchecked access: operator[] </span> </a> </li> <li class=md-nav__item> <a href=../../../features/element_access/checked_access/ class=md-nav__link> <span class=md-ellipsis> Checked access: at </span> </a> </li> <li class=md-nav__item> <a href=../../../features/element_access/default_value/ class=md-nav__link> <span class=md-ellipsis> Access with default value: value </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../../features/iterators/ class=md-nav__link> <span class=md-ellipsis> Iterators </span> </a> </li> <li class=md-nav__item> <a href=../../../features/json_pointer/ class=md-nav__link> <span class=md-ellipsis> JSON Pointer </span> </a> </li> <li class=md-nav__item> <a href=../../../features/json_patch/ class=md-nav__link> <span class=md-ellipsis> JSON Patch and Diff </span> </a> </li> <li class=md-nav__item> <a href=../../../features/merge_patch/ class=md-nav__link> <span class=md-ellipsis> JSON Merge Patch </span> </a> </li> <li class=md-nav__item> <a href=../../../features/modules/ class=md-nav__link> <span class=md-ellipsis> Modules </span> </a> </li> <li class=md-nav__item> <a href=../../../features/namespace/ class=md-nav__link> <span class=md-ellipsis> nlohmann Namespace </span> </a> </li> <li class=md-nav__item> <a href=../../../features/object_order/ class=md-nav__link> <span class=md-ellipsis> Object Order </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_14> <div class="md-nav__link md-nav__container"> <a href=../../../features/parsing/ class="md-nav__link "> <span class=md-ellipsis> Parsing </span> </a> <label class="md-nav__link " for=__nav_2_14 id=__nav_2_14_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_14_label aria-expanded=false> <label class=md-nav__title for=__nav_2_14> <span class="md-nav__icon md-icon"></span> Parsing </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/parsing/json_lines/ class=md-nav__link> <span class=md-ellipsis> JSON Lines </span> </a> </li> <li class=md-nav__item> <a href=../../../features/parsing/parse_exceptions/ class=md-nav__link> <span class=md-ellipsis> Parsing and Exceptions </span> </a> </li> <li class=md-nav__item> <a href=../../../features/parsing/parser_callbacks/ class=md-nav__link> <span class=md-ellipsis> Parser Callbacks </span> </a> </li> <li class=md-nav__item> <a href=../../../features/parsing/sax_interface/ class=md-nav__link> <span class=md-ellipsis> SAX Interface </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../../features/assertions/ class=md-nav__link> <span class=md-ellipsis> Runtime Assertions </span> </a> </li> <li class=md-nav__item> <a href=../../../features/enum_conversion/ class=md-nav__link> <span class=md-ellipsis> Specializing enum conversion </span> </a> </li> <li class=md-nav__item> <a href=../../../features/macros/ class=md-nav__link> <span class=md-ellipsis> Supported Macros </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_18> <div class="md-nav__link md-nav__container"> <a href=../../../features/types/ class="md-nav__link "> <span class=md-ellipsis> Types </span> </a> <label class="md-nav__link " for=__nav_2_18 id=__nav_2_18_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_18_label aria-expanded=false> <label class=md-nav__title for=__nav_2_18> <span class="md-nav__icon md-icon"></span> Types </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/types/number_handling/ class=md-nav__link> <span class=md-ellipsis> Number Handling </span> </a> </li> </ul> </nav> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_3> <div class="md-nav__link md-nav__container"> <a href=../../../integration/ class="md-nav__link "> <span class=md-ellipsis> Integration </span> </a> <label class="md-nav__link " for=__nav_3 id=__nav_3_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_3_label aria-expanded=false> <label class=md-nav__title for=__nav_3> <span class="md-nav__icon md-icon"></span> Integration </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../integration/migration_guide/ class=md-nav__link> <span class=md-ellipsis> Migration Guide </span> </a> </li> <li class=md-nav__item> <a href=../../../integration/cmake/ class=md-nav__link> <span class=md-ellipsis> CMake </span> </a> </li> <li class=md-nav__item> <a href=../../../integration/package_managers/ class=md-nav__link> <span class=md-ellipsis> Package Managers </span> </a> </li> <li class=md-nav__item> <a href=../../../integration/pkg-config/ class=md-nav__link> <span class=md-ellipsis> Pkg-config </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--active md-nav__item--section md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4 checked> <label class=md-nav__link for=__nav_4 id=__nav_4_label tabindex> <span class=md-ellipsis> API Documentation </span> <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_4_label aria-expanded=true> <label class=md-nav__title for=__nav_4> <span class="md-nav__icon md-icon"></span> API Documentation </label> <ul class=md-nav__list data-md-scrollfix> <li class="md-nav__item md-nav__item--active md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_1 checked> <div class="md-nav__link md-nav__container"> <a href=../ class="md-nav__link "> <span class=md-ellipsis> basic_json </span> </a> <label class="md-nav__link " for=__nav_4_1 id=__nav_4_1_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_1_label aria-expanded=true> <label class=md-nav__title for=__nav_4_1> <span class="md-nav__icon md-icon"></span> basic_json </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../basic_json/ class=md-nav__link> <span class=md-ellipsis> (Constructor) </span> </a> </li> <li class=md-nav__item> <a href=../~basic_json/ class=md-nav__link> <span class=md-ellipsis> (Destructor) </span> </a> </li> <li class=md-nav__item> <a href=../accept/ class=md-nav__link> <span class=md-ellipsis> accept </span> </a> </li> <li class=md-nav__item> <a href=../array/ class=md-nav__link> <span class=md-ellipsis> array </span> </a> </li> <li class=md-nav__item> <a href=../array_t/ class=md-nav__link> <span class=md-ellipsis> array_t </span> </a> </li> <li class=md-nav__item> <a href=../at/ class=md-nav__link> <span class=md-ellipsis> at </span> </a> </li> <li class=md-nav__item> <a href=../back/ class=md-nav__link> <span class=md-ellipsis> back </span> </a> </li> <li class=md-nav__item> <a href=../begin/ class=md-nav__link> <span class=md-ellipsis> begin </span> </a> </li> <li class=md-nav__item> <a href=../binary/ class=md-nav__link> <span class=md-ellipsis> binary </span> </a> </li> <li class=md-nav__item> <a href=../binary_t/ class=md-nav__link> <span class=md-ellipsis> binary_t </span> </a> </li> <li class=md-nav__item> <a href=../boolean_t/ class=md-nav__link> <span class=md-ellipsis> boolean_t </span> </a> </li> <li class=md-nav__item> <a href=../cbegin/ class=md-nav__link> <span class=md-ellipsis> cbegin </span> </a> </li> <li class=md-nav__item> <a href=../cbor_tag_handler_t/ class=md-nav__link> <span class=md-ellipsis> cbor_tag_handler_t </span> </a> </li> <li class=md-nav__item> <a href=../cend/ class=md-nav__link> <span class=md-ellipsis> cend </span> </a> </li> <li class=md-nav__item> <a href=../clear/ class=md-nav__link> <span class=md-ellipsis> clear </span> </a> </li> <li class=md-nav__item> <a href=../contains/ class=md-nav__link> <span class=md-ellipsis> contains </span> </a> </li> <li class=md-nav__item> <a href=../count/ class=md-nav__link> <span class=md-ellipsis> count </span> </a> </li> <li class=md-nav__item> <a href=../crbegin/ class=md-nav__link> <span class=md-ellipsis> crbegin </span> </a> </li> <li class=md-nav__item> <a href=../crend/ class=md-nav__link> <span class=md-ellipsis> crend </span> </a> </li> <li class=md-nav__item> <a href=../default_object_comparator_t/ class=md-nav__link> <span class=md-ellipsis> default_object_comparator_t </span> </a> </li> <li class=md-nav__item> <a href=../diff/ class=md-nav__link> <span class=md-ellipsis> diff </span> </a> </li> <li class=md-nav__item> <a href=../dump/ class=md-nav__link> <span class=md-ellipsis> dump </span> </a> </li> <li class=md-nav__item> <a href=../emplace/ class=md-nav__link> <span class=md-ellipsis> emplace </span> </a> </li> <li class=md-nav__item> <a href=../emplace_back/ class=md-nav__link> <span class=md-ellipsis> emplace_back </span> </a> </li> <li class=md-nav__item> <a href=../empty/ class=md-nav__link> <span class=md-ellipsis> empty </span> </a> </li> <li class=md-nav__item> <a href=../end/ class=md-nav__link> <span class=md-ellipsis> end </span> </a> </li> <li class=md-nav__item> <a href=../end_pos/ class=md-nav__link> <span class=md-ellipsis> end_pos </span> </a> </li> <li class=md-nav__item> <a href=../erase/ class=md-nav__link> <span class=md-ellipsis> erase </span> </a> </li> <li class=md-nav__item> <a href=../error_handler_t/ class=md-nav__link> <span class=md-ellipsis> error_handler_t </span> </a> </li> <li class=md-nav__item> <a href=../exception/ class=md-nav__link> <span class=md-ellipsis> exception </span> </a> </li> <li class=md-nav__item> <a href=../find/ class=md-nav__link> <span class=md-ellipsis> find </span> </a> </li> <li class=md-nav__item> <a href=../flatten/ class=md-nav__link> <span class=md-ellipsis> flatten </span> </a> </li> <li class=md-nav__item> <a href=../from_bjdata/ class=md-nav__link> <span class=md-ellipsis> from_bjdata </span> </a> </li> <li class=md-nav__item> <a href=../from_bson/ class=md-nav__link> <span class=md-ellipsis> from_bson </span> </a> </li> <li class=md-nav__item> <a href=../from_cbor/ class=md-nav__link> <span class=md-ellipsis> from_cbor </span> </a> </li> <li class=md-nav__item> <a href=../from_msgpack/ class=md-nav__link> <span class=md-ellipsis> from_msgpack </span> </a> </li> <li class=md-nav__item> <a href=../from_ubjson/ class=md-nav__link> <span class=md-ellipsis> from_ubjson </span> </a> </li> <li class=md-nav__item> <a href=../front/ class=md-nav__link> <span class=md-ellipsis> front </span> </a> </li> <li class=md-nav__item> <a href=../get/ class=md-nav__link> <span class=md-ellipsis> get </span> </a> </li> <li class=md-nav__item> <a href=../get_allocator/ class=md-nav__link> <span class=md-ellipsis> get_allocator </span> </a> </li> <li class=md-nav__item> <a href=../get_binary/ class=md-nav__link> <span class=md-ellipsis> get_binary </span> </a> </li> <li class=md-nav__item> <a href=../get_ptr/ class=md-nav__link> <span class=md-ellipsis> get_ptr </span> </a> </li> <li class=md-nav__item> <a href=../get_ref/ class=md-nav__link> <span class=md-ellipsis> get_ref </span> </a> </li> <li class=md-nav__item> <a href=../get_to/ class=md-nav__link> <span class=md-ellipsis> get_to </span> </a> </li> <li class=md-nav__item> <a href=../std_hash/ class=md-nav__link> <span class=md-ellipsis> std::hash&lt;basic_json&gt; </span> </a> </li> <li class=md-nav__item> <a href=../input_format_t/ class=md-nav__link> <span class=md-ellipsis> input_format_t </span> </a> </li> <li class=md-nav__item> <a href=../insert/ class=md-nav__link> <span class=md-ellipsis> insert </span> </a> </li> <li class=md-nav__item> <a href=../invalid_iterator/ class=md-nav__link> <span class=md-ellipsis> invalid_iterator </span> </a> </li> <li class=md-nav__item> <a href=../is_array/ class=md-nav__link> <span class=md-ellipsis> is_array </span> </a> </li> <li class=md-nav__item> <a href=../is_binary/ class=md-nav__link> <span class=md-ellipsis> is_binary </span> </a> </li> <li class=md-nav__item> <a href=../is_boolean/ class=md-nav__link> <span class=md-ellipsis> is_boolean </span> </a> </li> <li class=md-nav__item> <a href=../is_discarded/ class=md-nav__link> <span class=md-ellipsis> is_discarded </span> </a> </li> <li class=md-nav__item> <a href=../is_null/ class=md-nav__link> <span class=md-ellipsis> is_null </span> </a> </li> <li class=md-nav__item> <a href=../is_number/ class=md-nav__link> <span class=md-ellipsis> is_number </span> </a> </li> <li class=md-nav__item> <a href=../is_number_float/ class=md-nav__link> <span class=md-ellipsis> is_number_float </span> </a> </li> <li class=md-nav__item> <a href=../is_number_integer/ class=md-nav__link> <span class=md-ellipsis> is_number_integer </span> </a> </li> <li class=md-nav__item> <a href=../is_number_unsigned/ class=md-nav__link> <span class=md-ellipsis> is_number_unsigned </span> </a> </li> <li class=md-nav__item> <a href=../is_object/ class=md-nav__link> <span class=md-ellipsis> is_object </span> </a> </li> <li class=md-nav__item> <a href=../is_primitive/ class=md-nav__link> <span class=md-ellipsis> is_primitive </span> </a> </li> <li class=md-nav__item> <a href=../is_string/ class=md-nav__link> <span class=md-ellipsis> is_string </span> </a> </li> <li class=md-nav__item> <a href=../is_structured/ class=md-nav__link> <span class=md-ellipsis> is_structured </span> </a> </li> <li class=md-nav__item> <a href=../items/ class=md-nav__link> <span class=md-ellipsis> items </span> </a> </li> <li class=md-nav__item> <a href=../json_base_class_t/ class=md-nav__link> <span class=md-ellipsis> json_base_class_t </span> </a> </li> <li class=md-nav__item> <a href=../json_serializer/ class=md-nav__link> <span class=md-ellipsis> json_serializer </span> </a> </li> <li class=md-nav__item> <a href=../max_size/ class=md-nav__link> <span class=md-ellipsis> max_size </span> </a> </li> <li class=md-nav__item> <a href=../meta/ class=md-nav__link> <span class=md-ellipsis> meta </span> </a> </li> <li class=md-nav__item> <a href=../merge_patch/ class=md-nav__link> <span class=md-ellipsis> merge_patch </span> </a> </li> <li class=md-nav__item> <a href=../number_float_t/ class=md-nav__link> <span class=md-ellipsis> number_float_t </span> </a> </li> <li class=md-nav__item> <a href=../number_integer_t/ class=md-nav__link> <span class=md-ellipsis> number_integer_t </span> </a> </li> <li class=md-nav__item> <a href=../number_unsigned_t/ class=md-nav__link> <span class=md-ellipsis> number_unsigned_t </span> </a> </li> <li class=md-nav__item> <a href=../object/ class=md-nav__link> <span class=md-ellipsis> object </span> </a> </li> <li class=md-nav__item> <a href=../object_comparator_t/ class=md-nav__link> <span class=md-ellipsis> object_comparator_t </span> </a> </li> <li class=md-nav__item> <a href=../object_t/ class=md-nav__link> <span class=md-ellipsis> object_t </span> </a> </li> <li class=md-nav__item> <a href=../operator_ValueType/ class=md-nav__link> <span class=md-ellipsis> operator ValueType </span> </a> </li> <li class=md-nav__item> <a href=../operator_value_t/ class=md-nav__link> <span class=md-ellipsis> operator value_t </span> </a> </li> <li class=md-nav__item> <a href=../operator%5B%5D/ class=md-nav__link> <span class=md-ellipsis> operator[] </span> </a> </li> <li class=md-nav__item> <a href=../operator%3D/ class=md-nav__link> <span class=md-ellipsis> operator= </span> </a> </li> <li class=md-nav__item> <a href=../operator%2B%3D/ class=md-nav__link> <span class=md-ellipsis> operator+= </span> </a> </li> <li class=md-nav__item> <a href=../operator_eq/ class=md-nav__link> <span class=md-ellipsis> operator== </span> </a> </li> <li class=md-nav__item> <a href=../operator_ne/ class=md-nav__link> <span class=md-ellipsis> operator!= </span> </a> </li> <li class=md-nav__item> <a href=../operator_lt/ class=md-nav__link> <span class=md-ellipsis> operator< </span> </a> </li> <li class=md-nav__item> <a href=../operator_gt/ class=md-nav__link> <span class=md-ellipsis> operator> </span> </a> </li> <li class=md-nav__item> <a href=../operator_le/ class=md-nav__link> <span class=md-ellipsis> operator<= </span> </a> </li> <li class=md-nav__item> <a href=../operator_ge/ class=md-nav__link> <span class=md-ellipsis> operator>= </span> </a> </li> <li class=md-nav__item> <a href=../operator_spaceship/ class=md-nav__link> <span class=md-ellipsis> operator<=> </span> </a> </li> <li class=md-nav__item> <a href=../out_of_range/ class=md-nav__link> <span class=md-ellipsis> out_of_range </span> </a> </li> <li class=md-nav__item> <a href=../other_error/ class=md-nav__link> <span class=md-ellipsis> other_error </span> </a> </li> <li class=md-nav__item> <a href=../parse/ class=md-nav__link> <span class=md-ellipsis> parse </span> </a> </li> <li class=md-nav__item> <a href=../parse_error/ class=md-nav__link> <span class=md-ellipsis> parse_error </span> </a> </li> <li class=md-nav__item> <a href=../parse_event_t/ class=md-nav__link> <span class=md-ellipsis> parse_event_t </span> </a> </li> <li class=md-nav__item> <a href=../parser_callback_t/ class=md-nav__link> <span class=md-ellipsis> parser_callback_t </span> </a> </li> <li class=md-nav__item> <a href=../patch/ class=md-nav__link> <span class=md-ellipsis> patch </span> </a> </li> <li class=md-nav__item> <a href=../patch_inplace/ class=md-nav__link> <span class=md-ellipsis> patch_inplace </span> </a> </li> <li class=md-nav__item> <a href=../push_back/ class=md-nav__link> <span class=md-ellipsis> push_back </span> </a> </li> <li class=md-nav__item> <a href=../rbegin/ class=md-nav__link> <span class=md-ellipsis> rbegin </span> </a> </li> <li class=md-nav__item> <a href=../rend/ class=md-nav__link> <span class=md-ellipsis> rend </span> </a> </li> <li class=md-nav__item> <a href=../sax_parse/ class=md-nav__link> <span class=md-ellipsis> sax_parse </span> </a> </li> <li class=md-nav__item> <a href=../size/ class=md-nav__link> <span class=md-ellipsis> size </span> </a> </li> <li class=md-nav__item> <a href=../start_pos/ class=md-nav__link> <span class=md-ellipsis> start_pos </span> </a> </li> <li class=md-nav__item> <a href=../string_t/ class=md-nav__link> <span class=md-ellipsis> string_t </span> </a> </li> <li class=md-nav__item> <a href=../swap/ class=md-nav__link> <span class=md-ellipsis> swap </span> </a> </li> <li class="md-nav__item md-nav__item--active"> <input class="md-nav__toggle md-toggle" type=checkbox id=__toc> <label class="md-nav__link md-nav__link--active" for=__toc> <span class=md-ellipsis> std::swap&lt;basic_json&gt; </span> <span class="md-nav__icon md-icon"></span> </label> <a href=./ class="md-nav__link md-nav__link--active"> <span class=md-ellipsis> std::swap&lt;basic_json&gt; </span> </a> <nav class="md-nav md-nav--secondary" aria-label="Table of contents"> <label class=md-nav__title for=__toc> <span class="md-nav__icon md-icon"></span> Table of contents </label> <ul class=md-nav__list data-md-component=toc data-md-scrollfix> <li class=md-nav__item> <a href=#parameters class=md-nav__link> <span class=md-ellipsis> Parameters </span> </a> </li> <li class=md-nav__item> <a href=#exception-safety class=md-nav__link> <span class=md-ellipsis> Exception safety </span> </a> </li> <li class=md-nav__item> <a href=#complexity class=md-nav__link> <span class=md-ellipsis> Complexity </span> </a> </li> <li class=md-nav__item> <a href=#possible-implementation class=md-nav__link> <span class=md-ellipsis> Possible implementation </span> </a> </li> <li class=md-nav__item> <a href=#examples class=md-nav__link> <span class=md-ellipsis> Examples </span> </a> </li> <li class=md-nav__item> <a href=#see-also class=md-nav__link> <span class=md-ellipsis> See also </span> </a> </li> <li class=md-nav__item> <a href=#version-history class=md-nav__link> <span class=md-ellipsis> Version history </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../to_bjdata/ class=md-nav__link> <span class=md-ellipsis> to_bjdata </span> </a> </li> <li class=md-nav__item> <a href=../to_bson/ class=md-nav__link> <span class=md-ellipsis> to_bson </span> </a> </li> <li class=md-nav__item> <a href=../to_cbor/ class=md-nav__link> <span class=md-ellipsis> to_cbor </span> </a> </li> <li class=md-nav__item> <a href=../to_msgpack/ class=md-nav__link> <span class=md-ellipsis> to_msgpack </span> </a> </li> <li class=md-nav__item> <a href=../to_string/ class=md-nav__link> <span class=md-ellipsis> to_string </span> </a> </li> <li class=md-nav__item> <a href=../to_ubjson/ class=md-nav__link> <span class=md-ellipsis> to_ubjson </span> </a> </li> <li class=md-nav__item> <a href=../type/ class=md-nav__link> <span class=md-ellipsis> type </span> </a> </li> <li class=md-nav__item> <a href=../type_error/ class=md-nav__link> <span class=md-ellipsis> type_error </span> </a> </li> <li class=md-nav__item> <a href=../type_name/ class=md-nav__link> <span class=md-ellipsis> type_name </span> </a> </li> <li class=md-nav__item> <a href=../unflatten/ class=md-nav__link> <span class=md-ellipsis> unflatten </span> </a> </li> <li class=md-nav__item> <a href=../update/ class=md-nav__link> <span class=md-ellipsis> update </span> </a> </li> <li class=md-nav__item> <a href=../value/ class=md-nav__link> <span class=md-ellipsis> value </span> </a> </li> <li class=md-nav__item> <a href=../value_t/ class=md-nav__link> <span class=md-ellipsis> value_t </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_2> <div class="md-nav__link md-nav__container"> <a href=../../byte_container_with_subtype/ class="md-nav__link "> <span class=md-ellipsis> byte_container_with_subtype </span> </a> <label class="md-nav__link " for=__nav_4_2 id=__nav_4_2_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_2_label aria-expanded=false> <label class=md-nav__title for=__nav_4_2> <span class="md-nav__icon md-icon"></span> byte_container_with_subtype </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../byte_container_with_subtype/byte_container_with_subtype/ class=md-nav__link> <span class=md-ellipsis> (constructor) </span> </a> </li> <li class=md-nav__item> <a href=../../byte_container_with_subtype/clear_subtype/ class=md-nav__link> <span class=md-ellipsis> clear_subtype </span> </a> </li> <li class=md-nav__item> <a href=../../byte_container_with_subtype/has_subtype/ class=md-nav__link> <span class=md-ellipsis> has_subtype </span> </a> </li> <li class=md-nav__item> <a href=../../byte_container_with_subtype/set_subtype/ class=md-nav__link> <span class=md-ellipsis> set_subtype </span> </a> </li> <li class=md-nav__item> <a href=../../byte_container_with_subtype/subtype/ class=md-nav__link> <span class=md-ellipsis> subtype </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_3> <div class="md-nav__link md-nav__container"> <a href=../../adl_serializer/ class="md-nav__link "> <span class=md-ellipsis> adl_serializer </span> </a> <label class="md-nav__link " for=__nav_4_3 id=__nav_4_3_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_3_label aria-expanded=false> <label class=md-nav__title for=__nav_4_3> <span class="md-nav__icon md-icon"></span> adl_serializer </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../adl_serializer/from_json/ class=md-nav__link> <span class=md-ellipsis> from_json </span> </a> </li> <li class=md-nav__item> <a href=../../adl_serializer/to_json/ class=md-nav__link> <span class=md-ellipsis> to_json </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../json/ class=md-nav__link> <span class=md-ellipsis> json </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_5> <div class="md-nav__link md-nav__container"> <a href=../../json_pointer/ class="md-nav__link "> <span class=md-ellipsis> json_pointer </span> </a> <label class="md-nav__link " for=__nav_4_5 id=__nav_4_5_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_5_label aria-expanded=false> <label class=md-nav__title for=__nav_4_5> <span class="md-nav__icon md-icon"></span> json_pointer </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../json_pointer/json_pointer/ class=md-nav__link> <span class=md-ellipsis> (Constructor) </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/back/ class=md-nav__link> <span class=md-ellipsis> back </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/empty/ class=md-nav__link> <span class=md-ellipsis> empty </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/front/ class=md-nav__link> <span class=md-ellipsis> front </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_string_t/ class=md-nav__link> <span class=md-ellipsis> operator string_t </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_eq/ class=md-nav__link> <span class=md-ellipsis> operator== </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_ne/ class=md-nav__link> <span class=md-ellipsis> operator!= </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_slash/ class=md-nav__link> <span class=md-ellipsis> operator/ </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_slasheq/ class=md-nav__link> <span class=md-ellipsis> operator/= </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/parent_pointer/ class=md-nav__link> <span class=md-ellipsis> parent_pointer </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/pop_back/ class=md-nav__link> <span class=md-ellipsis> pop_back </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/pop_front/ class=md-nav__link> <span class=md-ellipsis> pop_front </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/push_back/ class=md-nav__link> <span class=md-ellipsis> push_back </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/push_front/ class=md-nav__link> <span class=md-ellipsis> push_front </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/string_t/ class=md-nav__link> <span class=md-ellipsis> string_t </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/to_string/ class=md-nav__link> <span class=md-ellipsis> to_string </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_6> <div class="md-nav__link md-nav__container"> <a href=../../json_sax/ class="md-nav__link "> <span class=md-ellipsis> json_sax </span> </a> <label class="md-nav__link " for=__nav_4_6 id=__nav_4_6_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_6_label aria-expanded=false> <label class=md-nav__title for=__nav_4_6> <span class="md-nav__icon md-icon"></span> json_sax </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../json_sax/binary/ class=md-nav__link> <span class=md-ellipsis> binary </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/boolean/ class=md-nav__link> <span class=md-ellipsis> boolean </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/end_array/ class=md-nav__link> <span class=md-ellipsis> end_array </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/end_object/ class=md-nav__link> <span class=md-ellipsis> end_object </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/key/ class=md-nav__link> <span class=md-ellipsis> key </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/null/ class=md-nav__link> <span class=md-ellipsis> null </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/number_float/ class=md-nav__link> <span class=md-ellipsis> number_float </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/number_integer/ class=md-nav__link> <span class=md-ellipsis> number_integer </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/number_unsigned/ class=md-nav__link> <span class=md-ellipsis> number_unsigned </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/parse_error/ class=md-nav__link> <span class=md-ellipsis> parse_error </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/start_array/ class=md-nav__link> <span class=md-ellipsis> start_array </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/start_object/ class=md-nav__link> <span class=md-ellipsis> start_object </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/string/ class=md-nav__link> <span class=md-ellipsis> string </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../operator_ltlt/ class=md-nav__link> <span class=md-ellipsis> operator<<(basic_json), operator<<(json_pointer) </span> </a> </li> <li class=md-nav__item> <a href=../../operator_gtgt/ class=md-nav__link> <span class=md-ellipsis> operator>>(basic_json) </span> </a> </li> <li class=md-nav__item> <a href=../../operator_literal_json/ class=md-nav__link> <span class=md-ellipsis> operator""_json </span> </a> </li> <li class=md-nav__item> <a href=../../operator_literal_json_pointer/ class=md-nav__link> <span class=md-ellipsis> operator""_json_pointer </span> </a> </li> <li class=md-nav__item> <a href=../../ordered_json/ class=md-nav__link> <span class=md-ellipsis> ordered_json </span> </a> </li> <li class=md-nav__item> <a href=../../ordered_map/ class=md-nav__link> <span class=md-ellipsis> ordered_map </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_13> <div class="md-nav__link md-nav__container"> <a href=../../macros/ class="md-nav__link "> <span class=md-ellipsis> macros </span> </a> <label class="md-nav__link " for=__nav_4_13 id=__nav_4_13_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_13_label aria-expanded=false> <label class=md-nav__title for=__nav_4_13> <span class="md-nav__icon md-icon"></span> macros </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../macros/json_assert/ class=md-nav__link> <span class=md-ellipsis> JSON_ASSERT </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_brace_init_copy_semantics/ class=md-nav__link> <span class=md-ellipsis> JSON_BRACE_INIT_COPY_SEMANTICS </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_throw_user/ class=md-nav__link> <span class=md-ellipsis> JSON_CATCH_USER, JSON_THROW_USER, JSON_TRY_USER </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_diagnostics/ class=md-nav__link> <span class=md-ellipsis> JSON_DIAGNOSTICS </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_diagnostic_positions/ class=md-nav__link> <span class=md-ellipsis> JSON_DIAGNOSTIC_POSITIONS </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_disable_enum_serialization/ class=md-nav__link> <span class=md-ellipsis> JSON_DISABLE_ENUM_SERIALIZATION </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_has_cpp_11/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_CPP_11, JSON_HAS_CPP_14, JSON_HAS_CPP_17, JSON_HAS_CPP_20 </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_has_filesystem/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_EXPERIMENTAL_FILESYSTEM, JSON_HAS_FILESYSTEM </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_has_ranges/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_RANGES </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_has_static_rtti/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_STATIC_RTTI </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_has_three_way_comparison/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_THREE_WAY_COMPARISON </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_noexception/ class=md-nav__link> <span class=md-ellipsis> JSON_NOEXCEPTION </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_no_io/ class=md-nav__link> <span class=md-ellipsis> JSON_NO_IO </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_skip_library_version_check/ class=md-nav__link> <span class=md-ellipsis> JSON_SKIP_LIBRARY_VERSION_CHECK </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_skip_unsupported_compiler_check/ class=md-nav__link> <span class=md-ellipsis> JSON_SKIP_UNSUPPORTED_COMPILER_CHECK </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_use_global_udls/ class=md-nav__link> <span class=md-ellipsis> JSON_USE_GLOBAL_UDLS </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_use_implicit_conversions/ class=md-nav__link> <span class=md-ellipsis> JSON_USE_IMPLICIT_CONVERSIONS </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_use_legacy_discarded_value_comparison/ class=md-nav__link> <span class=md-ellipsis> JSON_USE_LEGACY_DISCARDED_VALUE_COMPARISON </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_define_derived_type/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_ONLY_SERIALIZE, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_define_type_intrusive/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_TYPE_INTRUSIVE, NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_TYPE_INTRUSIVE_ONLY_SERIALIZE </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_define_type_non_intrusive/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_define_type_with_names/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_TYPE_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_namespace/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_NAMESPACE </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_namespace_begin/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_NAMESPACE_BEGIN, NLOHMANN_JSON_NAMESPACE_END </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_namespace_no_version/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_NAMESPACE_NO_VERSION </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_serialize_enum/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_SERIALIZE_ENUM </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_serialize_enum_strict/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_SERIALIZE_ENUM_STRICT </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_version_major/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_VERSION_MAJOR, NLOHMANN_JSON_VERSION_MINOR, NLOHMANN_JSON_VERSION_PATCH </span> </a> </li> </ul> </nav> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_5> <div class="md-nav__link md-nav__container"> <a href=../../../community/ class="md-nav__link "> <span class=md-ellipsis> Community </span> </a> <label class="md-nav__link " for=__nav_5 id=__nav_5_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_5_label aria-expanded=false> <label class=md-nav__title for=__nav_5> <span class="md-nav__icon md-icon"></span> Community </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../community/code_of_conduct/ class=md-nav__link> <span class=md-ellipsis> Code of Conduct </span> </a> </li> <li class=md-nav__item> <a href=../../../community/contribution_guidelines/ class=md-nav__link> <span class=md-ellipsis> Contribution Guidelines </span> </a> </li> <li class=md-nav__item> <a href=../../../community/quality_assurance/ class=md-nav__link> <span class=md-ellipsis> Quality assurance </span> </a> </li> <li class=md-nav__item> <a href=../../../community/governance/ class=md-nav__link> <span class=md-ellipsis> Governance </span> </a> </li> <li class=md-nav__item> <a href=../../../community/security_policy/ class=md-nav__link> <span class=md-ellipsis> Security Policy </span> </a> </li> </ul> </nav> </li> </ul> </nav> </div> </div> </div> <div class="md-sidebar md-sidebar--secondary" data-md-component=sidebar data-md-type=toc> <div class=md-sidebar__scrollwrap> <div class=md-sidebar__inner> <nav class="md-nav md-nav--secondary" aria-label="Table of contents"> <label class=md-nav__title for=__toc> <span class="md-nav__icon md-icon"></span> Table of contents </label> <ul class=md-nav__list data-md-component=toc data-md-scrollfix> <li class=md-nav__item> <a href=#parameters class=md-nav__link> <span class=md-ellipsis> Parameters </span> </a> </li> <li class=md-nav__item> <a href=#exception-safety class=md-nav__link> <span class=md-ellipsis> Exception safety </span> </a> </li> <li class=md-nav__item> <a href=#complexity class=md-nav__link> <span class=md-ellipsis> Complexity </span> </a> </li> <li class=md-nav__item> <a href=#possible-implementation class=md-nav__link> <span class=md-ellipsis> Possible implementation </span> </a> </li> <li class=md-nav__item> <a href=#examples class=md-nav__link> <span class=md-ellipsis> Examples </span> </a> </li> <li class=md-nav__item> <a href=#see-also class=md-nav__link> <span class=md-ellipsis> See also </span> </a> </li> <li class=md-nav__item> <a href=#version-history class=md-nav__link> <span class=md-ellipsis> Version history </span> </a> </li> </ul> </nav> </div> </div> </div> <div class=md-content data-md-component=content> <article class="md-content__inner md-typeset"> <a href="https://github.com/nlohmann/json/edit/develop/docs/mkdocs/docs/api/basic_json/std_swap.md" title="Edit this page" class="md-content__button md-icon" rel="edit"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M10 20H6V4h7v5h5v3.1l2-2V8l-6-6H6c-1.1 0-2 .9-2 2v16c0 1.1.9 2 2 2h4zm10.2-7c.1 0 .3.1.4.2l1.3 1.3c.2.2.2.6 0 .8l-1 1-2.1-2.1 1-1c.1-.1.2-.2.4-.2m0 3.9L14.1 23H12v-2.1l6.1-6.1z"/></svg> </a> <a href="https://github.com/nlohmann/json/raw/develop/docs/mkdocs/docs/api/basic_json/std_swap.md" title="View source of this page" class="md-content__button md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M17 18c.56 0 1 .44 1 1s-.44 1-1 1-1-.44-1-1 .44-1 1-1m0-3c-2.73 0-5.06 1.66-6 4 .94 2.34 3.27 4 6 4s5.06-1.66 6-4c-.94-2.34-3.27-4-6-4m0 6.5a2.5 2.5 0 0 1-2.5-2.5 2.5 2.5 0 0 1 2.5-2.5 2.5 2.5 0 0 1 2.5 2.5 2.5 2.5 0 0 1-2.5 2.5M9.27 20H6V4h7v5h5v4.07c.7.08 1.36.25 2 .49V8l-6-6H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h4.5a8.2 8.2 0 0 1-1.23-2"/></svg> </a> <h1 id=stdswapbasic_json>std::swap&lt;basic_json&gt;<a class=headerlink href=#stdswapbasic_json title="Permanent link">&para;</a></h1> <div class=highlight><pre><span></span><code><span class=k>namespace</span><span class=w> </span><span class=nn>std</span><span class=w> </span><span class=p>{</span>
 <span class=w>    </span><span class=kt>void</span><span class=w> </span><span class=nf>swap</span><span class=p>(</span><span class=n>nlohmann</span><span class=o>::</span><span class=n>basic_json</span><span class=o>&amp;</span><span class=w> </span><span class=n>j1</span><span class=p>,</span><span class=w> </span><span class=n>nlohmann</span><span class=o>::</span><span class=n>basic_json</span><span class=o>&amp;</span><span class=w> </span><span class=n>j2</span><span class=p>);</span>
 <span class=p>}</span>
-</code></pre></div> <p>Exchanges the values of two <abbr title="JavaScript Object Notation">JSON</abbr> objects.</p> <h2 id=parameters>Parameters<a class=headerlink href=#parameters title="Permanent link">&para;</a></h2> <dl> <dt><code>j1</code> (in, out)</dt> <dd>value to be replaced by <code>j2</code></dd> <dt><code>j2</code> (in, out)</dt> <dd>value to be replaced by <code>j1</code></dd> </dl> <h2 id=possible-implementation>Possible implementation<a class=headerlink href=#possible-implementation title="Permanent link">&para;</a></h2> <div class=highlight><pre><span></span><code><span class=kt>void</span><span class=w> </span><span class=nf>swap</span><span class=p>(</span><span class=n>nlohmann</span><span class=o>::</span><span class=n>basic_json</span><span class=o>&amp;</span><span class=w> </span><span class=n>j1</span><span class=p>,</span><span class=w> </span><span class=n>nlohmann</span><span class=o>::</span><span class=n>basic_json</span><span class=o>&amp;</span><span class=w> </span><span class=n>j2</span><span class=p>)</span>
+</code></pre></div> <p>Exchanges the values of two <abbr title="JavaScript Object Notation">JSON</abbr> objects.</p> <h2 id=parameters>Parameters<a class=headerlink href=#parameters title="Permanent link">&para;</a></h2> <dl> <dt><code>j1</code> (in, out)</dt> <dd>value to be replaced by <code>j2</code></dd> <dt><code>j2</code> (in, out)</dt> <dd>value to be replaced by <code>j1</code></dd> </dl> <h2 id=exception-safety>Exception safety<a class=headerlink href=#exception-safety title="Permanent link">&para;</a></h2> <p>No-throw guarantee: this function never throws exceptions.</p> <h2 id=complexity>Complexity<a class=headerlink href=#complexity title="Permanent link">&para;</a></h2> <p>Constant.</p> <h2 id=possible-implementation>Possible implementation<a class=headerlink href=#possible-implementation title="Permanent link">&para;</a></h2> <div class=highlight><pre><span></span><code><span class=kt>void</span><span class=w> </span><span class=nf>swap</span><span class=p>(</span><span class=n>nlohmann</span><span class=o>::</span><span class=n>basic_json</span><span class=o>&amp;</span><span class=w> </span><span class=n>j1</span><span class=p>,</span><span class=w> </span><span class=n>nlohmann</span><span class=o>::</span><span class=n>basic_json</span><span class=o>&amp;</span><span class=w> </span><span class=n>j2</span><span class=p>)</span>
 <span class=p>{</span>
 <span class=w>    </span><span class=n>j1</span><span class=p>.</span><span class=n>swap</span><span class=p>(</span><span class=n>j2</span><span class=p>);</span>
 <span class=p>}</span>
@@ -26,4 +26,4 @@
 <span class=p>}</span>
 </code></pre></div> <p>Output:</p> <div class=highlight><pre><span></span><code><span class=err>j</span><span class=mi>1</span><span class=w> </span><span class=err>=</span><span class=w> </span><span class=p>{</span><span class=nt>&quot;one&quot;</span><span class=p>:</span><span class=mi>1</span><span class=p>,</span><span class=nt>&quot;two&quot;</span><span class=p>:</span><span class=mi>2</span><span class=p>}</span><span class=w> </span><span class=err>|</span><span class=w> </span><span class=err>j</span><span class=mi>2</span><span class=w> </span><span class=err>=</span><span class=w> </span><span class=p>[</span><span class=mi>1</span><span class=p>,</span><span class=mi>2</span><span class=p>,</span><span class=mi>4</span><span class=p>,</span><span class=mi>8</span><span class=p>,</span><span class=mi>16</span><span class=p>]</span>
 <span class=err>j</span><span class=mi>1</span><span class=w> </span><span class=err>=</span><span class=w> </span><span class=p>[</span><span class=mi>1</span><span class=p>,</span><span class=mi>2</span><span class=p>,</span><span class=mi>4</span><span class=p>,</span><span class=mi>8</span><span class=p>,</span><span class=mi>16</span><span class=p>]</span><span class=w> </span><span class=err>|</span><span class=w> </span><span class=err>j</span><span class=mi>2</span><span class=w> </span><span class=err>=</span><span class=w> </span><span class=p>{</span><span class=nt>&quot;one&quot;</span><span class=p>:</span><span class=mi>1</span><span class=p>,</span><span class=nt>&quot;two&quot;</span><span class=p>:</span><span class=mi>2</span><span class=p>}</span>
-</code></pre></div> </details> <h2 id=see-also>See also<a class=headerlink href=#see-also title="Permanent link">&para;</a></h2> <ul> <li><a href=../swap/ >swap</a></li> </ul> <h2 id=version-history>Version history<a class=headerlink href=#version-history title="Permanent link">&para;</a></h2> <ul> <li>Added in version 1.0.0.</li> <li>Extended for arbitrary basic_json types in version 3.10.5.</li> </ul> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 23, 2026 11:16:18 UTC">June 23, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
+</code></pre></div> </details> <h2 id=see-also>See also<a class=headerlink href=#see-also title="Permanent link">&para;</a></h2> <ul> <li><a href=../swap/ >swap</a></li> </ul> <h2 id=version-history>Version history<a class=headerlink href=#version-history title="Permanent link">&para;</a></h2> <ul> <li>Added in version 1.0.0.</li> <li>Extended for arbitrary basic_json types in version 3.10.5.</li> </ul> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 29, 2026 20:15:18 UTC">June 29, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
diff --git a/api/basic_json/string_t/index.html b/api/basic_json/string_t/index.html
index ad98235..dbca26e 100644
--- a/api/basic_json/string_t/index.html
+++ b/api/basic_json/string_t/index.html
@@ -1,5 +1,5 @@
 <!doctype html><html lang=en class=no-js> <head><meta charset=utf-8><meta name=viewport content="width=device-width,initial-scale=1"><meta name=author content="Niels Lohmann"><link href="https://json.nlohmann.me/api/basic_json/string_t/" rel="canonical"><link href=../start_pos/ rel=prev><link href=../swap/ rel=next><link rel=icon href=../../../assets/images/favicon.png><meta name=generator content="mkdocs-1.6.1, mkdocs-material-9.7.6"><title>string_t - JSON for Modern C++</title><link rel=stylesheet href=../../../assets/stylesheets/main.484c7ddc.min.css><link rel=stylesheet href=../../../assets/stylesheets/palette.ab4e12ef.min.css><link rel="stylesheet" href="../../../assets/external/fonts.googleapis.com/css.61a430c9.css"><style>:root{--md-text-font:"Roboto";--md-code-font:"JetBrains Mono"}</style><link rel=stylesheet href=../../../css/custom.css><script>__md_scope=new URL("../../..",location),__md_hash=e=>[...e].reduce(((e,_)=>(e<<5)-e+_.charCodeAt(0)),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script></head> <body dir=ltr data-md-color-scheme=default data-md-color-primary=indigo data-md-color-accent=indigo> <input class=md-toggle data-md-toggle=drawer type=checkbox id=__drawer autocomplete=off> <input class=md-toggle data-md-toggle=search type=checkbox id=__search autocomplete=off> <label class=md-overlay for=__drawer></label> <div data-md-component=skip> <a href=#nlohmannbasic_jsonstring_t class=md-skip> Skip to content </a> </div> <div data-md-component=announce> </div> <header class=md-header data-md-component=header> <nav class="md-header__inner md-grid" aria-label=Header> <a href=../../.. title="JSON for Modern C++" class="md-header__button md-logo" aria-label="JSON for Modern C++" data-md-component=logo> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54"/></svg> </a> <label class="md-header__button md-icon" for=__drawer> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M3 6h18v2H3zm0 5h18v2H3zm0 5h18v2H3z"/></svg> </label> <div class=md-header__title data-md-component=header-title> <div class=md-header__ellipsis> <div class=md-header__topic> <span class=md-ellipsis> JSON for Modern C++ </span> </div> <div class=md-header__topic data-md-component=header-topic> <span class=md-ellipsis> string_t </span> </div> </div> </div> <form class=md-header__option data-md-component=palette> <input class=md-option data-md-color-media="(prefers-color-scheme: light)" data-md-color-scheme=default data-md-color-primary=indigo data-md-color-accent=indigo aria-label="Switch to dark mode" type=radio name=__palette id=__palette_0> <label class="md-header__button md-icon" title="Switch to dark mode" for=__palette_1 hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a4 4 0 0 0-4 4 4 4 0 0 0 4 4 4 4 0 0 0 4-4 4 4 0 0 0-4-4m0 10a6 6 0 0 1-6-6 6 6 0 0 1 6-6 6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12z"/></svg> </label> <input class=md-option data-md-color-media="(prefers-color-scheme: dark)" data-md-color-scheme=slate data-md-color-primary=indigo data-md-color-accent=indigo aria-label="Switch to light mode" type=radio name=__palette id=__palette_1> <label class="md-header__button md-icon" title="Switch to light mode" for=__palette_0 hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 18c-.89 0-1.74-.2-2.5-.55C11.56 16.5 13 14.42 13 12s-1.44-4.5-3.5-5.45C10.26 6.2 11.11 6 12 6a6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12z"/></svg> </label> </form> <script>var palette=__md_get("__palette");if(palette&&palette.color){if("(prefers-color-scheme)"===palette.color.media){var media=matchMedia("(prefers-color-scheme: light)"),input=document.querySelector(media.matches?"[data-md-color-media='(prefers-color-scheme: light)']":"[data-md-color-media='(prefers-color-scheme: dark)']");palette.color.media=input.getAttribute("data-md-color-media"),palette.color.scheme=input.getAttribute("data-md-color-scheme"),palette.color.primary=input.getAttribute("data-md-color-primary"),palette.color.accent=input.getAttribute("data-md-color-accent")}for(var[key,value]of Object.entries(palette.color))document.body.setAttribute("data-md-color-"+key,value)}</script> <label class="md-header__button md-icon" for=__search> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg> </label> <div class=md-search data-md-component=search role=dialog> <label class=md-search__overlay for=__search></label> <div class=md-search__inner role=search> <form class=md-search__form name=search> <input type=text class=md-search__input name=query aria-label=Search placeholder=Search autocapitalize=off autocorrect=off autocomplete=off spellcheck=false data-md-component=search-query required> <label class="md-search__icon md-icon" for=__search> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11z"/></svg> </label> <nav class=md-search__options aria-label=Search> <button type=reset class="md-search__icon md-icon" title=Clear aria-label=Clear tabindex=-1> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z"/></svg> </button> </nav> </form> <div class=md-search__output> <div class=md-search__scrollwrap tabindex=0 data-md-scrollfix> <div class=md-search-result data-md-component=search-result> <div class=md-search-result__meta> Initializing search </div> <ol class=md-search-result__list role=presentation></ol> </div> </div> </div> </div> </div> <div class=md-header__source> <a href="https://github.com/nlohmann/json" title="Go to repository" class="md-source" data-md-component="source"> <div class="md-source__icon md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </div> <div class=md-source__repository> nlohmann/json </div> </a> </div> </nav> </header> <div class=md-container data-md-component=container> <nav class=md-tabs aria-label=Tabs data-md-component=tabs> <div class=md-grid> <ul class=md-tabs__list> <li class=md-tabs__item> <a href=../../.. class=md-tabs__link> Home </a> </li> <li class=md-tabs__item> <a href=../../../features/arbitrary_types/ class=md-tabs__link> Features </a> </li> <li class=md-tabs__item> <a href=../../../integration/ class=md-tabs__link> Integration </a> </li> <li class="md-tabs__item md-tabs__item--active"> <a href=../ class=md-tabs__link> API Documentation </a> </li> <li class=md-tabs__item> <a href=../../../community/ class=md-tabs__link> Community </a> </li> </ul> </div> </nav> <main class=md-main data-md-component=main> <div class="md-main__inner md-grid"> <div class="md-sidebar md-sidebar--primary" data-md-component=sidebar data-md-type=navigation> <div class=md-sidebar__scrollwrap> <div class=md-sidebar__inner> <nav class="md-nav md-nav--primary md-nav--lifted" aria-label=Navigation data-md-level=0> <label class=md-nav__title for=__drawer> <a href=../../.. title="JSON for Modern C++" class="md-nav__button md-logo" aria-label="JSON for Modern C++" data-md-component=logo> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54"/></svg> </a> JSON for Modern C++ </label> <div class=md-nav__source> <a href="https://github.com/nlohmann/json" title="Go to repository" class="md-source" data-md-component="source"> <div class="md-source__icon md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </div> <div class=md-source__repository> nlohmann/json </div> </a> </div> <ul class=md-nav__list data-md-scrollfix> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_1> <div class="md-nav__link md-nav__container"> <a href=../../.. class="md-nav__link "> <span class=md-ellipsis> Home </span> </a> <label class="md-nav__link " for=__nav_1 id=__nav_1_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_1_label aria-expanded=false> <label class=md-nav__title for=__nav_1> <span class="md-nav__icon md-icon"></span> Home </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../home/license/ class=md-nav__link> <span class=md-ellipsis> License </span> </a> </li> <li class=md-nav__item> <a href=../../../home/faq/ class=md-nav__link> <span class=md-ellipsis> FAQ </span> </a> </li> <li class=md-nav__item> <a href=../../../home/exceptions/ class=md-nav__link> <span class=md-ellipsis> Exceptions </span> </a> </li> <li class=md-nav__item> <a href=../../../home/releases/ class=md-nav__link> <span class=md-ellipsis> Releases </span> </a> </li> <li class=md-nav__item> <a href=../../../home/design_goals/ class=md-nav__link> <span class=md-ellipsis> Design goals </span> </a> </li> <li class=md-nav__item> <a href=../../../home/architecture/ class=md-nav__link> <span class=md-ellipsis> Architecture </span> </a> </li> <li class=md-nav__item> <a href=../../../home/customers/ class=md-nav__link> <span class=md-ellipsis> Customers </span> </a> </li> <li class=md-nav__item> <a href=../../../home/sponsors/ class=md-nav__link> <span class=md-ellipsis> Sponsors </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2> <label class=md-nav__link for=__nav_2 id=__nav_2_label tabindex=0> <span class=md-ellipsis> Features </span> <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_2_label aria-expanded=false> <label class=md-nav__title for=__nav_2> <span class="md-nav__icon md-icon"></span> Features </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/arbitrary_types/ class=md-nav__link> <span class=md-ellipsis> Arbitrary Type Conversions </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_2> <div class="md-nav__link md-nav__container"> <a href=../../../features/binary_formats/ class="md-nav__link "> <span class=md-ellipsis> Binary Formats </span> </a> <label class="md-nav__link " for=__nav_2_2 id=__nav_2_2_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_2_label aria-expanded=false> <label class=md-nav__title for=__nav_2_2> <span class="md-nav__icon md-icon"></span> Binary Formats </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/binary_formats/bjdata/ class=md-nav__link> <span class=md-ellipsis> BJData </span> </a> </li> <li class=md-nav__item> <a href=../../../features/binary_formats/bson/ class=md-nav__link> <span class=md-ellipsis> BSON </span> </a> </li> <li class=md-nav__item> <a href=../../../features/binary_formats/cbor/ class=md-nav__link> <span class=md-ellipsis> CBOR </span> </a> </li> <li class=md-nav__item> <a href=../../../features/binary_formats/messagepack/ class=md-nav__link> <span class=md-ellipsis> MessagePack </span> </a> </li> <li class=md-nav__item> <a href=../../../features/binary_formats/ubjson/ class=md-nav__link> <span class=md-ellipsis> UBJSON </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../../features/binary_values/ class=md-nav__link> <span class=md-ellipsis> Binary Values </span> </a> </li> <li class=md-nav__item> <a href=../../../features/comments/ class=md-nav__link> <span class=md-ellipsis> Comments </span> </a> </li> <li class=md-nav__item> <a href=../../../features/trailing_commas/ class=md-nav__link> <span class=md-ellipsis> Trailing Commas </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_6> <div class="md-nav__link md-nav__container"> <a href=../../../features/element_access/ class="md-nav__link "> <span class=md-ellipsis> Element Access </span> </a> <label class="md-nav__link " for=__nav_2_6 id=__nav_2_6_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_6_label aria-expanded=false> <label class=md-nav__title for=__nav_2_6> <span class="md-nav__icon md-icon"></span> Element Access </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/element_access/unchecked_access/ class=md-nav__link> <span class=md-ellipsis> Unchecked access: operator[] </span> </a> </li> <li class=md-nav__item> <a href=../../../features/element_access/checked_access/ class=md-nav__link> <span class=md-ellipsis> Checked access: at </span> </a> </li> <li class=md-nav__item> <a href=../../../features/element_access/default_value/ class=md-nav__link> <span class=md-ellipsis> Access with default value: value </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../../features/iterators/ class=md-nav__link> <span class=md-ellipsis> Iterators </span> </a> </li> <li class=md-nav__item> <a href=../../../features/json_pointer/ class=md-nav__link> <span class=md-ellipsis> JSON Pointer </span> </a> </li> <li class=md-nav__item> <a href=../../../features/json_patch/ class=md-nav__link> <span class=md-ellipsis> JSON Patch and Diff </span> </a> </li> <li class=md-nav__item> <a href=../../../features/merge_patch/ class=md-nav__link> <span class=md-ellipsis> JSON Merge Patch </span> </a> </li> <li class=md-nav__item> <a href=../../../features/modules/ class=md-nav__link> <span class=md-ellipsis> Modules </span> </a> </li> <li class=md-nav__item> <a href=../../../features/namespace/ class=md-nav__link> <span class=md-ellipsis> nlohmann Namespace </span> </a> </li> <li class=md-nav__item> <a href=../../../features/object_order/ class=md-nav__link> <span class=md-ellipsis> Object Order </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_14> <div class="md-nav__link md-nav__container"> <a href=../../../features/parsing/ class="md-nav__link "> <span class=md-ellipsis> Parsing </span> </a> <label class="md-nav__link " for=__nav_2_14 id=__nav_2_14_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_14_label aria-expanded=false> <label class=md-nav__title for=__nav_2_14> <span class="md-nav__icon md-icon"></span> Parsing </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/parsing/json_lines/ class=md-nav__link> <span class=md-ellipsis> JSON Lines </span> </a> </li> <li class=md-nav__item> <a href=../../../features/parsing/parse_exceptions/ class=md-nav__link> <span class=md-ellipsis> Parsing and Exceptions </span> </a> </li> <li class=md-nav__item> <a href=../../../features/parsing/parser_callbacks/ class=md-nav__link> <span class=md-ellipsis> Parser Callbacks </span> </a> </li> <li class=md-nav__item> <a href=../../../features/parsing/sax_interface/ class=md-nav__link> <span class=md-ellipsis> SAX Interface </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../../features/assertions/ class=md-nav__link> <span class=md-ellipsis> Runtime Assertions </span> </a> </li> <li class=md-nav__item> <a href=../../../features/enum_conversion/ class=md-nav__link> <span class=md-ellipsis> Specializing enum conversion </span> </a> </li> <li class=md-nav__item> <a href=../../../features/macros/ class=md-nav__link> <span class=md-ellipsis> Supported Macros </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_18> <div class="md-nav__link md-nav__container"> <a href=../../../features/types/ class="md-nav__link "> <span class=md-ellipsis> Types </span> </a> <label class="md-nav__link " for=__nav_2_18 id=__nav_2_18_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_18_label aria-expanded=false> <label class=md-nav__title for=__nav_2_18> <span class="md-nav__icon md-icon"></span> Types </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/types/number_handling/ class=md-nav__link> <span class=md-ellipsis> Number Handling </span> </a> </li> </ul> </nav> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_3> <div class="md-nav__link md-nav__container"> <a href=../../../integration/ class="md-nav__link "> <span class=md-ellipsis> Integration </span> </a> <label class="md-nav__link " for=__nav_3 id=__nav_3_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_3_label aria-expanded=false> <label class=md-nav__title for=__nav_3> <span class="md-nav__icon md-icon"></span> Integration </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../integration/migration_guide/ class=md-nav__link> <span class=md-ellipsis> Migration Guide </span> </a> </li> <li class=md-nav__item> <a href=../../../integration/cmake/ class=md-nav__link> <span class=md-ellipsis> CMake </span> </a> </li> <li class=md-nav__item> <a href=../../../integration/package_managers/ class=md-nav__link> <span class=md-ellipsis> Package Managers </span> </a> </li> <li class=md-nav__item> <a href=../../../integration/pkg-config/ class=md-nav__link> <span class=md-ellipsis> Pkg-config </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--active md-nav__item--section md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4 checked> <label class=md-nav__link for=__nav_4 id=__nav_4_label tabindex> <span class=md-ellipsis> API Documentation </span> <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_4_label aria-expanded=true> <label class=md-nav__title for=__nav_4> <span class="md-nav__icon md-icon"></span> API Documentation </label> <ul class=md-nav__list data-md-scrollfix> <li class="md-nav__item md-nav__item--active md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_1 checked> <div class="md-nav__link md-nav__container"> <a href=../ class="md-nav__link "> <span class=md-ellipsis> basic_json </span> </a> <label class="md-nav__link " for=__nav_4_1 id=__nav_4_1_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_1_label aria-expanded=true> <label class=md-nav__title for=__nav_4_1> <span class="md-nav__icon md-icon"></span> basic_json </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../basic_json/ class=md-nav__link> <span class=md-ellipsis> (Constructor) </span> </a> </li> <li class=md-nav__item> <a href=../~basic_json/ class=md-nav__link> <span class=md-ellipsis> (Destructor) </span> </a> </li> <li class=md-nav__item> <a href=../accept/ class=md-nav__link> <span class=md-ellipsis> accept </span> </a> </li> <li class=md-nav__item> <a href=../array/ class=md-nav__link> <span class=md-ellipsis> array </span> </a> </li> <li class=md-nav__item> <a href=../array_t/ class=md-nav__link> <span class=md-ellipsis> array_t </span> </a> </li> <li class=md-nav__item> <a href=../at/ class=md-nav__link> <span class=md-ellipsis> at </span> </a> </li> <li class=md-nav__item> <a href=../back/ class=md-nav__link> <span class=md-ellipsis> back </span> </a> </li> <li class=md-nav__item> <a href=../begin/ class=md-nav__link> <span class=md-ellipsis> begin </span> </a> </li> <li class=md-nav__item> <a href=../binary/ class=md-nav__link> <span class=md-ellipsis> binary </span> </a> </li> <li class=md-nav__item> <a href=../binary_t/ class=md-nav__link> <span class=md-ellipsis> binary_t </span> </a> </li> <li class=md-nav__item> <a href=../boolean_t/ class=md-nav__link> <span class=md-ellipsis> boolean_t </span> </a> </li> <li class=md-nav__item> <a href=../cbegin/ class=md-nav__link> <span class=md-ellipsis> cbegin </span> </a> </li> <li class=md-nav__item> <a href=../cbor_tag_handler_t/ class=md-nav__link> <span class=md-ellipsis> cbor_tag_handler_t </span> </a> </li> <li class=md-nav__item> <a href=../cend/ class=md-nav__link> <span class=md-ellipsis> cend </span> </a> </li> <li class=md-nav__item> <a href=../clear/ class=md-nav__link> <span class=md-ellipsis> clear </span> </a> </li> <li class=md-nav__item> <a href=../contains/ class=md-nav__link> <span class=md-ellipsis> contains </span> </a> </li> <li class=md-nav__item> <a href=../count/ class=md-nav__link> <span class=md-ellipsis> count </span> </a> </li> <li class=md-nav__item> <a href=../crbegin/ class=md-nav__link> <span class=md-ellipsis> crbegin </span> </a> </li> <li class=md-nav__item> <a href=../crend/ class=md-nav__link> <span class=md-ellipsis> crend </span> </a> </li> <li class=md-nav__item> <a href=../default_object_comparator_t/ class=md-nav__link> <span class=md-ellipsis> default_object_comparator_t </span> </a> </li> <li class=md-nav__item> <a href=../diff/ class=md-nav__link> <span class=md-ellipsis> diff </span> </a> </li> <li class=md-nav__item> <a href=../dump/ class=md-nav__link> <span class=md-ellipsis> dump </span> </a> </li> <li class=md-nav__item> <a href=../emplace/ class=md-nav__link> <span class=md-ellipsis> emplace </span> </a> </li> <li class=md-nav__item> <a href=../emplace_back/ class=md-nav__link> <span class=md-ellipsis> emplace_back </span> </a> </li> <li class=md-nav__item> <a href=../empty/ class=md-nav__link> <span class=md-ellipsis> empty </span> </a> </li> <li class=md-nav__item> <a href=../end/ class=md-nav__link> <span class=md-ellipsis> end </span> </a> </li> <li class=md-nav__item> <a href=../end_pos/ class=md-nav__link> <span class=md-ellipsis> end_pos </span> </a> </li> <li class=md-nav__item> <a href=../erase/ class=md-nav__link> <span class=md-ellipsis> erase </span> </a> </li> <li class=md-nav__item> <a href=../error_handler_t/ class=md-nav__link> <span class=md-ellipsis> error_handler_t </span> </a> </li> <li class=md-nav__item> <a href=../exception/ class=md-nav__link> <span class=md-ellipsis> exception </span> </a> </li> <li class=md-nav__item> <a href=../find/ class=md-nav__link> <span class=md-ellipsis> find </span> </a> </li> <li class=md-nav__item> <a href=../flatten/ class=md-nav__link> <span class=md-ellipsis> flatten </span> </a> </li> <li class=md-nav__item> <a href=../from_bjdata/ class=md-nav__link> <span class=md-ellipsis> from_bjdata </span> </a> </li> <li class=md-nav__item> <a href=../from_bson/ class=md-nav__link> <span class=md-ellipsis> from_bson </span> </a> </li> <li class=md-nav__item> <a href=../from_cbor/ class=md-nav__link> <span class=md-ellipsis> from_cbor </span> </a> </li> <li class=md-nav__item> <a href=../from_msgpack/ class=md-nav__link> <span class=md-ellipsis> from_msgpack </span> </a> </li> <li class=md-nav__item> <a href=../from_ubjson/ class=md-nav__link> <span class=md-ellipsis> from_ubjson </span> </a> </li> <li class=md-nav__item> <a href=../front/ class=md-nav__link> <span class=md-ellipsis> front </span> </a> </li> <li class=md-nav__item> <a href=../get/ class=md-nav__link> <span class=md-ellipsis> get </span> </a> </li> <li class=md-nav__item> <a href=../get_allocator/ class=md-nav__link> <span class=md-ellipsis> get_allocator </span> </a> </li> <li class=md-nav__item> <a href=../get_binary/ class=md-nav__link> <span class=md-ellipsis> get_binary </span> </a> </li> <li class=md-nav__item> <a href=../get_ptr/ class=md-nav__link> <span class=md-ellipsis> get_ptr </span> </a> </li> <li class=md-nav__item> <a href=../get_ref/ class=md-nav__link> <span class=md-ellipsis> get_ref </span> </a> </li> <li class=md-nav__item> <a href=../get_to/ class=md-nav__link> <span class=md-ellipsis> get_to </span> </a> </li> <li class=md-nav__item> <a href=../std_hash/ class=md-nav__link> <span class=md-ellipsis> std::hash&lt;basic_json&gt; </span> </a> </li> <li class=md-nav__item> <a href=../input_format_t/ class=md-nav__link> <span class=md-ellipsis> input_format_t </span> </a> </li> <li class=md-nav__item> <a href=../insert/ class=md-nav__link> <span class=md-ellipsis> insert </span> </a> </li> <li class=md-nav__item> <a href=../invalid_iterator/ class=md-nav__link> <span class=md-ellipsis> invalid_iterator </span> </a> </li> <li class=md-nav__item> <a href=../is_array/ class=md-nav__link> <span class=md-ellipsis> is_array </span> </a> </li> <li class=md-nav__item> <a href=../is_binary/ class=md-nav__link> <span class=md-ellipsis> is_binary </span> </a> </li> <li class=md-nav__item> <a href=../is_boolean/ class=md-nav__link> <span class=md-ellipsis> is_boolean </span> </a> </li> <li class=md-nav__item> <a href=../is_discarded/ class=md-nav__link> <span class=md-ellipsis> is_discarded </span> </a> </li> <li class=md-nav__item> <a href=../is_null/ class=md-nav__link> <span class=md-ellipsis> is_null </span> </a> </li> <li class=md-nav__item> <a href=../is_number/ class=md-nav__link> <span class=md-ellipsis> is_number </span> </a> </li> <li class=md-nav__item> <a href=../is_number_float/ class=md-nav__link> <span class=md-ellipsis> is_number_float </span> </a> </li> <li class=md-nav__item> <a href=../is_number_integer/ class=md-nav__link> <span class=md-ellipsis> is_number_integer </span> </a> </li> <li class=md-nav__item> <a href=../is_number_unsigned/ class=md-nav__link> <span class=md-ellipsis> is_number_unsigned </span> </a> </li> <li class=md-nav__item> <a href=../is_object/ class=md-nav__link> <span class=md-ellipsis> is_object </span> </a> </li> <li class=md-nav__item> <a href=../is_primitive/ class=md-nav__link> <span class=md-ellipsis> is_primitive </span> </a> </li> <li class=md-nav__item> <a href=../is_string/ class=md-nav__link> <span class=md-ellipsis> is_string </span> </a> </li> <li class=md-nav__item> <a href=../is_structured/ class=md-nav__link> <span class=md-ellipsis> is_structured </span> </a> </li> <li class=md-nav__item> <a href=../items/ class=md-nav__link> <span class=md-ellipsis> items </span> </a> </li> <li class=md-nav__item> <a href=../json_base_class_t/ class=md-nav__link> <span class=md-ellipsis> json_base_class_t </span> </a> </li> <li class=md-nav__item> <a href=../json_serializer/ class=md-nav__link> <span class=md-ellipsis> json_serializer </span> </a> </li> <li class=md-nav__item> <a href=../max_size/ class=md-nav__link> <span class=md-ellipsis> max_size </span> </a> </li> <li class=md-nav__item> <a href=../meta/ class=md-nav__link> <span class=md-ellipsis> meta </span> </a> </li> <li class=md-nav__item> <a href=../merge_patch/ class=md-nav__link> <span class=md-ellipsis> merge_patch </span> </a> </li> <li class=md-nav__item> <a href=../number_float_t/ class=md-nav__link> <span class=md-ellipsis> number_float_t </span> </a> </li> <li class=md-nav__item> <a href=../number_integer_t/ class=md-nav__link> <span class=md-ellipsis> number_integer_t </span> </a> </li> <li class=md-nav__item> <a href=../number_unsigned_t/ class=md-nav__link> <span class=md-ellipsis> number_unsigned_t </span> </a> </li> <li class=md-nav__item> <a href=../object/ class=md-nav__link> <span class=md-ellipsis> object </span> </a> </li> <li class=md-nav__item> <a href=../object_comparator_t/ class=md-nav__link> <span class=md-ellipsis> object_comparator_t </span> </a> </li> <li class=md-nav__item> <a href=../object_t/ class=md-nav__link> <span class=md-ellipsis> object_t </span> </a> </li> <li class=md-nav__item> <a href=../operator_ValueType/ class=md-nav__link> <span class=md-ellipsis> operator ValueType </span> </a> </li> <li class=md-nav__item> <a href=../operator_value_t/ class=md-nav__link> <span class=md-ellipsis> operator value_t </span> </a> </li> <li class=md-nav__item> <a href=../operator%5B%5D/ class=md-nav__link> <span class=md-ellipsis> operator[] </span> </a> </li> <li class=md-nav__item> <a href=../operator%3D/ class=md-nav__link> <span class=md-ellipsis> operator= </span> </a> </li> <li class=md-nav__item> <a href=../operator%2B%3D/ class=md-nav__link> <span class=md-ellipsis> operator+= </span> </a> </li> <li class=md-nav__item> <a href=../operator_eq/ class=md-nav__link> <span class=md-ellipsis> operator== </span> </a> </li> <li class=md-nav__item> <a href=../operator_ne/ class=md-nav__link> <span class=md-ellipsis> operator!= </span> </a> </li> <li class=md-nav__item> <a href=../operator_lt/ class=md-nav__link> <span class=md-ellipsis> operator< </span> </a> </li> <li class=md-nav__item> <a href=../operator_gt/ class=md-nav__link> <span class=md-ellipsis> operator> </span> </a> </li> <li class=md-nav__item> <a href=../operator_le/ class=md-nav__link> <span class=md-ellipsis> operator<= </span> </a> </li> <li class=md-nav__item> <a href=../operator_ge/ class=md-nav__link> <span class=md-ellipsis> operator>= </span> </a> </li> <li class=md-nav__item> <a href=../operator_spaceship/ class=md-nav__link> <span class=md-ellipsis> operator<=> </span> </a> </li> <li class=md-nav__item> <a href=../out_of_range/ class=md-nav__link> <span class=md-ellipsis> out_of_range </span> </a> </li> <li class=md-nav__item> <a href=../other_error/ class=md-nav__link> <span class=md-ellipsis> other_error </span> </a> </li> <li class=md-nav__item> <a href=../parse/ class=md-nav__link> <span class=md-ellipsis> parse </span> </a> </li> <li class=md-nav__item> <a href=../parse_error/ class=md-nav__link> <span class=md-ellipsis> parse_error </span> </a> </li> <li class=md-nav__item> <a href=../parse_event_t/ class=md-nav__link> <span class=md-ellipsis> parse_event_t </span> </a> </li> <li class=md-nav__item> <a href=../parser_callback_t/ class=md-nav__link> <span class=md-ellipsis> parser_callback_t </span> </a> </li> <li class=md-nav__item> <a href=../patch/ class=md-nav__link> <span class=md-ellipsis> patch </span> </a> </li> <li class=md-nav__item> <a href=../patch_inplace/ class=md-nav__link> <span class=md-ellipsis> patch_inplace </span> </a> </li> <li class=md-nav__item> <a href=../push_back/ class=md-nav__link> <span class=md-ellipsis> push_back </span> </a> </li> <li class=md-nav__item> <a href=../rbegin/ class=md-nav__link> <span class=md-ellipsis> rbegin </span> </a> </li> <li class=md-nav__item> <a href=../rend/ class=md-nav__link> <span class=md-ellipsis> rend </span> </a> </li> <li class=md-nav__item> <a href=../sax_parse/ class=md-nav__link> <span class=md-ellipsis> sax_parse </span> </a> </li> <li class=md-nav__item> <a href=../size/ class=md-nav__link> <span class=md-ellipsis> size </span> </a> </li> <li class=md-nav__item> <a href=../start_pos/ class=md-nav__link> <span class=md-ellipsis> start_pos </span> </a> </li> <li class="md-nav__item md-nav__item--active"> <input class="md-nav__toggle md-toggle" type=checkbox id=__toc> <label class="md-nav__link md-nav__link--active" for=__toc> <span class=md-ellipsis> string_t </span> <span class="md-nav__icon md-icon"></span> </label> <a href=./ class="md-nav__link md-nav__link--active"> <span class=md-ellipsis> string_t </span> </a> <nav class="md-nav md-nav--secondary" aria-label="Table of contents"> <label class=md-nav__title for=__toc> <span class="md-nav__icon md-icon"></span> Table of contents </label> <ul class=md-nav__list data-md-component=toc data-md-scrollfix> <li class=md-nav__item> <a href=#template-parameters class=md-nav__link> <span class=md-ellipsis> Template parameters </span> </a> </li> <li class=md-nav__item> <a href=#notes class=md-nav__link> <span class=md-ellipsis> Notes </span> </a> <nav class=md-nav aria-label=Notes> <ul class=md-nav__list> <li class=md-nav__item> <a href=#default-type class=md-nav__link> <span class=md-ellipsis> Default type </span> </a> </li> <li class=md-nav__item> <a href=#encoding class=md-nav__link> <span class=md-ellipsis> Encoding </span> </a> </li> <li class=md-nav__item> <a href=#string-comparison class=md-nav__link> <span class=md-ellipsis> String comparison </span> </a> </li> <li class=md-nav__item> <a href=#storage class=md-nav__link> <span class=md-ellipsis> Storage </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=#examples class=md-nav__link> <span class=md-ellipsis> Examples </span> </a> </li> <li class=md-nav__item> <a href=#version-history class=md-nav__link> <span class=md-ellipsis> Version history </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../swap/ class=md-nav__link> <span class=md-ellipsis> swap </span> </a> </li> <li class=md-nav__item> <a href=../std_swap/ class=md-nav__link> <span class=md-ellipsis> std::swap&lt;basic_json&gt; </span> </a> </li> <li class=md-nav__item> <a href=../to_bjdata/ class=md-nav__link> <span class=md-ellipsis> to_bjdata </span> </a> </li> <li class=md-nav__item> <a href=../to_bson/ class=md-nav__link> <span class=md-ellipsis> to_bson </span> </a> </li> <li class=md-nav__item> <a href=../to_cbor/ class=md-nav__link> <span class=md-ellipsis> to_cbor </span> </a> </li> <li class=md-nav__item> <a href=../to_msgpack/ class=md-nav__link> <span class=md-ellipsis> to_msgpack </span> </a> </li> <li class=md-nav__item> <a href=../to_string/ class=md-nav__link> <span class=md-ellipsis> to_string </span> </a> </li> <li class=md-nav__item> <a href=../to_ubjson/ class=md-nav__link> <span class=md-ellipsis> to_ubjson </span> </a> </li> <li class=md-nav__item> <a href=../type/ class=md-nav__link> <span class=md-ellipsis> type </span> </a> </li> <li class=md-nav__item> <a href=../type_error/ class=md-nav__link> <span class=md-ellipsis> type_error </span> </a> </li> <li class=md-nav__item> <a href=../type_name/ class=md-nav__link> <span class=md-ellipsis> type_name </span> </a> </li> <li class=md-nav__item> <a href=../unflatten/ class=md-nav__link> <span class=md-ellipsis> unflatten </span> </a> </li> <li class=md-nav__item> <a href=../update/ class=md-nav__link> <span class=md-ellipsis> update </span> </a> </li> <li class=md-nav__item> <a href=../value/ class=md-nav__link> <span class=md-ellipsis> value </span> </a> </li> <li class=md-nav__item> <a href=../value_t/ class=md-nav__link> <span class=md-ellipsis> value_t </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_2> <div class="md-nav__link md-nav__container"> <a href=../../byte_container_with_subtype/ class="md-nav__link "> <span class=md-ellipsis> byte_container_with_subtype </span> </a> <label class="md-nav__link " for=__nav_4_2 id=__nav_4_2_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_2_label aria-expanded=false> <label class=md-nav__title for=__nav_4_2> <span class="md-nav__icon md-icon"></span> byte_container_with_subtype </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../byte_container_with_subtype/byte_container_with_subtype/ class=md-nav__link> <span class=md-ellipsis> (constructor) </span> </a> </li> <li class=md-nav__item> <a href=../../byte_container_with_subtype/clear_subtype/ class=md-nav__link> <span class=md-ellipsis> clear_subtype </span> </a> </li> <li class=md-nav__item> <a href=../../byte_container_with_subtype/has_subtype/ class=md-nav__link> <span class=md-ellipsis> has_subtype </span> </a> </li> <li class=md-nav__item> <a href=../../byte_container_with_subtype/set_subtype/ class=md-nav__link> <span class=md-ellipsis> set_subtype </span> </a> </li> <li class=md-nav__item> <a href=../../byte_container_with_subtype/subtype/ class=md-nav__link> <span class=md-ellipsis> subtype </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_3> <div class="md-nav__link md-nav__container"> <a href=../../adl_serializer/ class="md-nav__link "> <span class=md-ellipsis> adl_serializer </span> </a> <label class="md-nav__link " for=__nav_4_3 id=__nav_4_3_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_3_label aria-expanded=false> <label class=md-nav__title for=__nav_4_3> <span class="md-nav__icon md-icon"></span> adl_serializer </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../adl_serializer/from_json/ class=md-nav__link> <span class=md-ellipsis> from_json </span> </a> </li> <li class=md-nav__item> <a href=../../adl_serializer/to_json/ class=md-nav__link> <span class=md-ellipsis> to_json </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../json/ class=md-nav__link> <span class=md-ellipsis> json </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_5> <div class="md-nav__link md-nav__container"> <a href=../../json_pointer/ class="md-nav__link "> <span class=md-ellipsis> json_pointer </span> </a> <label class="md-nav__link " for=__nav_4_5 id=__nav_4_5_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_5_label aria-expanded=false> <label class=md-nav__title for=__nav_4_5> <span class="md-nav__icon md-icon"></span> json_pointer </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../json_pointer/json_pointer/ class=md-nav__link> <span class=md-ellipsis> (Constructor) </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/back/ class=md-nav__link> <span class=md-ellipsis> back </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/empty/ class=md-nav__link> <span class=md-ellipsis> empty </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/front/ class=md-nav__link> <span class=md-ellipsis> front </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_string_t/ class=md-nav__link> <span class=md-ellipsis> operator string_t </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_eq/ class=md-nav__link> <span class=md-ellipsis> operator== </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_ne/ class=md-nav__link> <span class=md-ellipsis> operator!= </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_slash/ class=md-nav__link> <span class=md-ellipsis> operator/ </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_slasheq/ class=md-nav__link> <span class=md-ellipsis> operator/= </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/parent_pointer/ class=md-nav__link> <span class=md-ellipsis> parent_pointer </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/pop_back/ class=md-nav__link> <span class=md-ellipsis> pop_back </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/pop_front/ class=md-nav__link> <span class=md-ellipsis> pop_front </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/push_back/ class=md-nav__link> <span class=md-ellipsis> push_back </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/push_front/ class=md-nav__link> <span class=md-ellipsis> push_front </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/string_t/ class=md-nav__link> <span class=md-ellipsis> string_t </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/to_string/ class=md-nav__link> <span class=md-ellipsis> to_string </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_6> <div class="md-nav__link md-nav__container"> <a href=../../json_sax/ class="md-nav__link "> <span class=md-ellipsis> json_sax </span> </a> <label class="md-nav__link " for=__nav_4_6 id=__nav_4_6_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_6_label aria-expanded=false> <label class=md-nav__title for=__nav_4_6> <span class="md-nav__icon md-icon"></span> json_sax </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../json_sax/binary/ class=md-nav__link> <span class=md-ellipsis> binary </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/boolean/ class=md-nav__link> <span class=md-ellipsis> boolean </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/end_array/ class=md-nav__link> <span class=md-ellipsis> end_array </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/end_object/ class=md-nav__link> <span class=md-ellipsis> end_object </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/key/ class=md-nav__link> <span class=md-ellipsis> key </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/null/ class=md-nav__link> <span class=md-ellipsis> null </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/number_float/ class=md-nav__link> <span class=md-ellipsis> number_float </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/number_integer/ class=md-nav__link> <span class=md-ellipsis> number_integer </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/number_unsigned/ class=md-nav__link> <span class=md-ellipsis> number_unsigned </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/parse_error/ class=md-nav__link> <span class=md-ellipsis> parse_error </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/start_array/ class=md-nav__link> <span class=md-ellipsis> start_array </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/start_object/ class=md-nav__link> <span class=md-ellipsis> start_object </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/string/ class=md-nav__link> <span class=md-ellipsis> string </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../operator_ltlt/ class=md-nav__link> <span class=md-ellipsis> operator<<(basic_json), operator<<(json_pointer) </span> </a> </li> <li class=md-nav__item> <a href=../../operator_gtgt/ class=md-nav__link> <span class=md-ellipsis> operator>>(basic_json) </span> </a> </li> <li class=md-nav__item> <a href=../../operator_literal_json/ class=md-nav__link> <span class=md-ellipsis> operator""_json </span> </a> </li> <li class=md-nav__item> <a href=../../operator_literal_json_pointer/ class=md-nav__link> <span class=md-ellipsis> operator""_json_pointer </span> </a> </li> <li class=md-nav__item> <a href=../../ordered_json/ class=md-nav__link> <span class=md-ellipsis> ordered_json </span> </a> </li> <li class=md-nav__item> <a href=../../ordered_map/ class=md-nav__link> <span class=md-ellipsis> ordered_map </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_13> <div class="md-nav__link md-nav__container"> <a href=../../macros/ class="md-nav__link "> <span class=md-ellipsis> macros </span> </a> <label class="md-nav__link " for=__nav_4_13 id=__nav_4_13_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_13_label aria-expanded=false> <label class=md-nav__title for=__nav_4_13> <span class="md-nav__icon md-icon"></span> macros </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../macros/json_assert/ class=md-nav__link> <span class=md-ellipsis> JSON_ASSERT </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_brace_init_copy_semantics/ class=md-nav__link> <span class=md-ellipsis> JSON_BRACE_INIT_COPY_SEMANTICS </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_throw_user/ class=md-nav__link> <span class=md-ellipsis> JSON_CATCH_USER, JSON_THROW_USER, JSON_TRY_USER </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_diagnostics/ class=md-nav__link> <span class=md-ellipsis> JSON_DIAGNOSTICS </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_diagnostic_positions/ class=md-nav__link> <span class=md-ellipsis> JSON_DIAGNOSTIC_POSITIONS </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_disable_enum_serialization/ class=md-nav__link> <span class=md-ellipsis> JSON_DISABLE_ENUM_SERIALIZATION </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_has_cpp_11/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_CPP_11, JSON_HAS_CPP_14, JSON_HAS_CPP_17, JSON_HAS_CPP_20 </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_has_filesystem/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_EXPERIMENTAL_FILESYSTEM, JSON_HAS_FILESYSTEM </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_has_ranges/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_RANGES </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_has_static_rtti/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_STATIC_RTTI </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_has_three_way_comparison/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_THREE_WAY_COMPARISON </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_noexception/ class=md-nav__link> <span class=md-ellipsis> JSON_NOEXCEPTION </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_no_io/ class=md-nav__link> <span class=md-ellipsis> JSON_NO_IO </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_skip_library_version_check/ class=md-nav__link> <span class=md-ellipsis> JSON_SKIP_LIBRARY_VERSION_CHECK </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_skip_unsupported_compiler_check/ class=md-nav__link> <span class=md-ellipsis> JSON_SKIP_UNSUPPORTED_COMPILER_CHECK </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_use_global_udls/ class=md-nav__link> <span class=md-ellipsis> JSON_USE_GLOBAL_UDLS </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_use_implicit_conversions/ class=md-nav__link> <span class=md-ellipsis> JSON_USE_IMPLICIT_CONVERSIONS </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_use_legacy_discarded_value_comparison/ class=md-nav__link> <span class=md-ellipsis> JSON_USE_LEGACY_DISCARDED_VALUE_COMPARISON </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_define_derived_type/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_ONLY_SERIALIZE, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_define_type_intrusive/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_TYPE_INTRUSIVE, NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_TYPE_INTRUSIVE_ONLY_SERIALIZE </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_define_type_non_intrusive/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_define_type_with_names/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_TYPE_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_namespace/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_NAMESPACE </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_namespace_begin/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_NAMESPACE_BEGIN, NLOHMANN_JSON_NAMESPACE_END </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_namespace_no_version/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_NAMESPACE_NO_VERSION </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_serialize_enum/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_SERIALIZE_ENUM </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_serialize_enum_strict/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_SERIALIZE_ENUM_STRICT </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_version_major/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_VERSION_MAJOR, NLOHMANN_JSON_VERSION_MINOR, NLOHMANN_JSON_VERSION_PATCH </span> </a> </li> </ul> </nav> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_5> <div class="md-nav__link md-nav__container"> <a href=../../../community/ class="md-nav__link "> <span class=md-ellipsis> Community </span> </a> <label class="md-nav__link " for=__nav_5 id=__nav_5_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_5_label aria-expanded=false> <label class=md-nav__title for=__nav_5> <span class="md-nav__icon md-icon"></span> Community </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../community/code_of_conduct/ class=md-nav__link> <span class=md-ellipsis> Code of Conduct </span> </a> </li> <li class=md-nav__item> <a href=../../../community/contribution_guidelines/ class=md-nav__link> <span class=md-ellipsis> Contribution Guidelines </span> </a> </li> <li class=md-nav__item> <a href=../../../community/quality_assurance/ class=md-nav__link> <span class=md-ellipsis> Quality assurance </span> </a> </li> <li class=md-nav__item> <a href=../../../community/governance/ class=md-nav__link> <span class=md-ellipsis> Governance </span> </a> </li> <li class=md-nav__item> <a href=../../../community/security_policy/ class=md-nav__link> <span class=md-ellipsis> Security Policy </span> </a> </li> </ul> </nav> </li> </ul> </nav> </div> </div> </div> <div class="md-sidebar md-sidebar--secondary" data-md-component=sidebar data-md-type=toc> <div class=md-sidebar__scrollwrap> <div class=md-sidebar__inner> <nav class="md-nav md-nav--secondary" aria-label="Table of contents"> <label class=md-nav__title for=__toc> <span class="md-nav__icon md-icon"></span> Table of contents </label> <ul class=md-nav__list data-md-component=toc data-md-scrollfix> <li class=md-nav__item> <a href=#template-parameters class=md-nav__link> <span class=md-ellipsis> Template parameters </span> </a> </li> <li class=md-nav__item> <a href=#notes class=md-nav__link> <span class=md-ellipsis> Notes </span> </a> <nav class=md-nav aria-label=Notes> <ul class=md-nav__list> <li class=md-nav__item> <a href=#default-type class=md-nav__link> <span class=md-ellipsis> Default type </span> </a> </li> <li class=md-nav__item> <a href=#encoding class=md-nav__link> <span class=md-ellipsis> Encoding </span> </a> </li> <li class=md-nav__item> <a href=#string-comparison class=md-nav__link> <span class=md-ellipsis> String comparison </span> </a> </li> <li class=md-nav__item> <a href=#storage class=md-nav__link> <span class=md-ellipsis> Storage </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=#examples class=md-nav__link> <span class=md-ellipsis> Examples </span> </a> </li> <li class=md-nav__item> <a href=#version-history class=md-nav__link> <span class=md-ellipsis> Version history </span> </a> </li> </ul> </nav> </div> </div> </div> <div class=md-content data-md-component=content> <article class="md-content__inner md-typeset"> <a href="https://github.com/nlohmann/json/edit/develop/docs/mkdocs/docs/api/basic_json/string_t.md" title="Edit this page" class="md-content__button md-icon" rel="edit"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M10 20H6V4h7v5h5v3.1l2-2V8l-6-6H6c-1.1 0-2 .9-2 2v16c0 1.1.9 2 2 2h4zm10.2-7c.1 0 .3.1.4.2l1.3 1.3c.2.2.2.6 0 .8l-1 1-2.1-2.1 1-1c.1-.1.2-.2.4-.2m0 3.9L14.1 23H12v-2.1l6.1-6.1z"/></svg> </a> <a href="https://github.com/nlohmann/json/raw/develop/docs/mkdocs/docs/api/basic_json/string_t.md" title="View source of this page" class="md-content__button md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M17 18c.56 0 1 .44 1 1s-.44 1-1 1-1-.44-1-1 .44-1 1-1m0-3c-2.73 0-5.06 1.66-6 4 .94 2.34 3.27 4 6 4s5.06-1.66 6-4c-.94-2.34-3.27-4-6-4m0 6.5a2.5 2.5 0 0 1-2.5-2.5 2.5 2.5 0 0 1 2.5-2.5 2.5 2.5 0 0 1 2.5 2.5 2.5 2.5 0 0 1-2.5 2.5M9.27 20H6V4h7v5h5v4.07c.7.08 1.36.25 2 .49V8l-6-6H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h4.5a8.2 8.2 0 0 1-1.23-2"/></svg> </a> <h1 id=nlohmannbasic_jsonstring_t><small>nlohmann::basic_json::</small>string_t<a class=headerlink href=#nlohmannbasic_jsonstring_t title="Permanent link">&para;</a></h1> <div class=highlight><pre><span></span><code><span class=k>using</span><span class=w> </span><span class=n>string_t</span><span class=w> </span><span class=o>=</span><span class=w> </span><span class=n>StringType</span><span class=p>;</span>
-</code></pre></div> <p>The type used to store <abbr title="JavaScript Object Notation">JSON</abbr> strings.</p> <p><a href="https://tools.ietf.org/html/rfc8259"><abbr title="Request for Comments">RFC</abbr> 8259</a> describes <abbr title="JavaScript Object Notation">JSON</abbr> strings as follows:</p> <blockquote> <p>A string is a sequence of zero or more Unicode characters.</p> </blockquote> <p>To store objects in C++, a type is defined by the template parameter described below. Unicode values are split by the <abbr title="JavaScript Object Notation">JSON</abbr> class into byte-sized characters during deserialization.</p> <h2 id=template-parameters>Template parameters<a class=headerlink href=#template-parameters title="Permanent link">&para;</a></h2> <dl> <dt><code>StringType</code></dt> <dd>the container to store strings (e.g., <code>std::string</code>). Note this container is used for keys/names in objects, see <a href=../object_t/ >object_t</a>.</dd> </dl> <h2 id=notes>Notes<a class=headerlink href=#notes title="Permanent link">&para;</a></h2> <h4 id=default-type>Default type<a class=headerlink href=#default-type title="Permanent link">&para;</a></h4> <p>With the default values for <code>StringType</code> (<code>std::string</code>), the default value for <code>string_t</code> is <code class=highlight><span class=n>std</span><span class=o>::</span><span class=n>string</span></code>.</p> <h4 id=encoding>Encoding<a class=headerlink href=#encoding title="Permanent link">&para;</a></h4> <p>Strings are stored in <abbr title="Unicode Transformation Format">UTF</abbr>-8 encoding. Therefore, functions like <code>std::string::size()</code> or <code>std::string::length()</code> return the number of bytes in the string rather than the number of characters or glyphs.</p> <h4 id=string-comparison>String comparison<a class=headerlink href=#string-comparison title="Permanent link">&para;</a></h4> <p><a href="https://tools.ietf.org/html/rfc8259"><abbr title="Request for Comments">RFC</abbr> 8259</a> states:</p> <blockquote> <p>Software implementations are typically required to test names of object members for equality. Implementations that transform the textual representation into sequences of Unicode code units and then perform the comparison numerically, code unit by code unit, are interoperable in the sense that implementations will agree in all cases on equality or inequality of two strings. For example, implementations that compare strings with escaped characters unconverted may incorrectly find that <code>"a\\b"</code> and <code>"a\u005Cb"</code> are not equal.</p> </blockquote> <p>This implementation is interoperable as it does compare strings code unit by code unit.</p> <h4 id=storage>Storage<a class=headerlink href=#storage title="Permanent link">&para;</a></h4> <p>String values are stored as pointers in a <code>basic_json</code> type. That is, for any access to string values, a pointer of type <code>string_t*</code> must be dereferenced.</p> <h2 id=examples>Examples<a class=headerlink href=#examples title="Permanent link">&para;</a></h2> <details class=example> <summary>Example</summary> <p>The following code shows that <code>string_t</code> is by default, a typedef to <code class=highlight><span class=n>std</span><span class=o>::</span><span class=n>string</span></code>.</p> <div class=highlight><pre><span></span><code><span class=cp>#include</span><span class=w> </span><span class=cpf>&lt;iostream&gt;</span>
+</code></pre></div> <p>The type used to store <abbr title="JavaScript Object Notation">JSON</abbr> strings.</p> <p><a href="https://tools.ietf.org/html/rfc8259"><abbr title="Request for Comments">RFC</abbr> 8259</a> describes <abbr title="JavaScript Object Notation">JSON</abbr> strings as follows:</p> <blockquote> <p>A string is a sequence of zero or more Unicode characters.</p> </blockquote> <p>To store strings in C++, a type is defined by the template parameter described below. Unicode values are split by the <abbr title="JavaScript Object Notation">JSON</abbr> class into byte-sized characters during deserialization.</p> <h2 id=template-parameters>Template parameters<a class=headerlink href=#template-parameters title="Permanent link">&para;</a></h2> <dl> <dt><code>StringType</code></dt> <dd>the container to store strings (e.g., <code>std::string</code>). Note this container is used for keys/names in objects, see <a href=../object_t/ >object_t</a>.</dd> </dl> <h2 id=notes>Notes<a class=headerlink href=#notes title="Permanent link">&para;</a></h2> <h4 id=default-type>Default type<a class=headerlink href=#default-type title="Permanent link">&para;</a></h4> <p>With the default values for <code>StringType</code> (<code>std::string</code>), the default value for <code>string_t</code> is <code class=highlight><span class=n>std</span><span class=o>::</span><span class=n>string</span></code>.</p> <h4 id=encoding>Encoding<a class=headerlink href=#encoding title="Permanent link">&para;</a></h4> <p>Strings are stored in <abbr title="Unicode Transformation Format">UTF</abbr>-8 encoding. Therefore, functions like <code>std::string::size()</code> or <code>std::string::length()</code> return the number of bytes in the string rather than the number of characters or glyphs.</p> <h4 id=string-comparison>String comparison<a class=headerlink href=#string-comparison title="Permanent link">&para;</a></h4> <p><a href="https://tools.ietf.org/html/rfc8259"><abbr title="Request for Comments">RFC</abbr> 8259</a> states:</p> <blockquote> <p>Software implementations are typically required to test names of object members for equality. Implementations that transform the textual representation into sequences of Unicode code units and then perform the comparison numerically, code unit by code unit, are interoperable in the sense that implementations will agree in all cases on equality or inequality of two strings. For example, implementations that compare strings with escaped characters unconverted may incorrectly find that <code>"a\\b"</code> and <code>"a\u005Cb"</code> are not equal.</p> </blockquote> <p>This implementation is interoperable as it does compare strings code unit by code unit.</p> <h4 id=storage>Storage<a class=headerlink href=#storage title="Permanent link">&para;</a></h4> <p>String values are stored as pointers in a <code>basic_json</code> type. That is, for any access to string values, a pointer of type <code>string_t*</code> must be dereferenced.</p> <h2 id=examples>Examples<a class=headerlink href=#examples title="Permanent link">&para;</a></h2> <details class=example> <summary>Example</summary> <p>The following code shows that <code>string_t</code> is by default, a typedef to <code class=highlight><span class=n>std</span><span class=o>::</span><span class=n>string</span></code>.</p> <div class=highlight><pre><span></span><code><span class=cp>#include</span><span class=w> </span><span class=cpf>&lt;iostream&gt;</span>
 <span class=cp>#include</span><span class=w> </span><span class=cpf>&lt;iomanip&gt;</span>
 <span class=cp>#include</span><span class=w> </span><span class=cpf>&lt;nlohmann/json.hpp&gt;</span>
 
@@ -10,4 +10,4 @@
 <span class=w>    </span><span class=n>std</span><span class=o>::</span><span class=n>cout</span><span class=w> </span><span class=o>&lt;&lt;</span><span class=w> </span><span class=n>std</span><span class=o>::</span><span class=n>boolalpha</span><span class=w> </span><span class=o>&lt;&lt;</span><span class=w> </span><span class=n>std</span><span class=o>::</span><span class=n>is_same</span><span class=o>&lt;</span><span class=n>std</span><span class=o>::</span><span class=n>string</span><span class=p>,</span><span class=w> </span><span class=n>json</span><span class=o>::</span><span class=n>string_t</span><span class=o>&gt;::</span><span class=n>value</span><span class=w> </span><span class=o>&lt;&lt;</span><span class=w> </span><span class=n>std</span><span class=o>::</span><span class=n>endl</span><span class=p>;</span>
 <span class=p>}</span>
 </code></pre></div> <p>Output:</p> <div class=highlight><pre><span></span><code><span class=kc>true</span>
-</code></pre></div> </details> <h2 id=version-history>Version history<a class=headerlink href=#version-history title="Permanent link">&para;</a></h2> <ul> <li>Added in version 1.0.0.</li> </ul> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 23, 2026 11:16:18 UTC">June 23, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
+</code></pre></div> </details> <h2 id=version-history>Version history<a class=headerlink href=#version-history title="Permanent link">&para;</a></h2> <ul> <li>Added in version 1.0.0.</li> </ul> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 29, 2026 20:15:18 UTC">June 29, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
diff --git a/api/basic_json/swap/index.html b/api/basic_json/swap/index.html
index 9d32db2..598e9b1 100644
--- a/api/basic_json/swap/index.html
+++ b/api/basic_json/swap/index.html
@@ -1,8 +1,18 @@
 <!doctype html><html lang=en class=no-js> <head><meta charset=utf-8><meta name=viewport content="width=device-width,initial-scale=1"><meta name=author content="Niels Lohmann"><link href="https://json.nlohmann.me/api/basic_json/swap/" rel="canonical"><link href=../string_t/ rel=prev><link href=../std_swap/ rel=next><link rel=icon href=../../../assets/images/favicon.png><meta name=generator content="mkdocs-1.6.1, mkdocs-material-9.7.6"><title>swap - JSON for Modern C++</title><link rel=stylesheet href=../../../assets/stylesheets/main.484c7ddc.min.css><link rel=stylesheet href=../../../assets/stylesheets/palette.ab4e12ef.min.css><link rel="stylesheet" href="../../../assets/external/fonts.googleapis.com/css.61a430c9.css"><style>:root{--md-text-font:"Roboto";--md-code-font:"JetBrains Mono"}</style><link rel=stylesheet href=../../../css/custom.css><script>__md_scope=new URL("../../..",location),__md_hash=e=>[...e].reduce(((e,_)=>(e<<5)-e+_.charCodeAt(0)),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script></head> <body dir=ltr data-md-color-scheme=default data-md-color-primary=indigo data-md-color-accent=indigo> <input class=md-toggle data-md-toggle=drawer type=checkbox id=__drawer autocomplete=off> <input class=md-toggle data-md-toggle=search type=checkbox id=__search autocomplete=off> <label class=md-overlay for=__drawer></label> <div data-md-component=skip> <a href=#nlohmannbasic_jsonswap class=md-skip> Skip to content </a> </div> <div data-md-component=announce> </div> <header class=md-header data-md-component=header> <nav class="md-header__inner md-grid" aria-label=Header> <a href=../../.. title="JSON for Modern C++" class="md-header__button md-logo" aria-label="JSON for Modern C++" data-md-component=logo> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54"/></svg> </a> <label class="md-header__button md-icon" for=__drawer> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M3 6h18v2H3zm0 5h18v2H3zm0 5h18v2H3z"/></svg> </label> <div class=md-header__title data-md-component=header-title> <div class=md-header__ellipsis> <div class=md-header__topic> <span class=md-ellipsis> JSON for Modern C++ </span> </div> <div class=md-header__topic data-md-component=header-topic> <span class=md-ellipsis> swap </span> </div> </div> </div> <form class=md-header__option data-md-component=palette> <input class=md-option data-md-color-media="(prefers-color-scheme: light)" data-md-color-scheme=default data-md-color-primary=indigo data-md-color-accent=indigo aria-label="Switch to dark mode" type=radio name=__palette id=__palette_0> <label class="md-header__button md-icon" title="Switch to dark mode" for=__palette_1 hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a4 4 0 0 0-4 4 4 4 0 0 0 4 4 4 4 0 0 0 4-4 4 4 0 0 0-4-4m0 10a6 6 0 0 1-6-6 6 6 0 0 1 6-6 6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12z"/></svg> </label> <input class=md-option data-md-color-media="(prefers-color-scheme: dark)" data-md-color-scheme=slate data-md-color-primary=indigo data-md-color-accent=indigo aria-label="Switch to light mode" type=radio name=__palette id=__palette_1> <label class="md-header__button md-icon" title="Switch to light mode" for=__palette_0 hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 18c-.89 0-1.74-.2-2.5-.55C11.56 16.5 13 14.42 13 12s-1.44-4.5-3.5-5.45C10.26 6.2 11.11 6 12 6a6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12z"/></svg> </label> </form> <script>var palette=__md_get("__palette");if(palette&&palette.color){if("(prefers-color-scheme)"===palette.color.media){var media=matchMedia("(prefers-color-scheme: light)"),input=document.querySelector(media.matches?"[data-md-color-media='(prefers-color-scheme: light)']":"[data-md-color-media='(prefers-color-scheme: dark)']");palette.color.media=input.getAttribute("data-md-color-media"),palette.color.scheme=input.getAttribute("data-md-color-scheme"),palette.color.primary=input.getAttribute("data-md-color-primary"),palette.color.accent=input.getAttribute("data-md-color-accent")}for(var[key,value]of Object.entries(palette.color))document.body.setAttribute("data-md-color-"+key,value)}</script> <label class="md-header__button md-icon" for=__search> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg> </label> <div class=md-search data-md-component=search role=dialog> <label class=md-search__overlay for=__search></label> <div class=md-search__inner role=search> <form class=md-search__form name=search> <input type=text class=md-search__input name=query aria-label=Search placeholder=Search autocapitalize=off autocorrect=off autocomplete=off spellcheck=false data-md-component=search-query required> <label class="md-search__icon md-icon" for=__search> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11z"/></svg> </label> <nav class=md-search__options aria-label=Search> <button type=reset class="md-search__icon md-icon" title=Clear aria-label=Clear tabindex=-1> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z"/></svg> </button> </nav> </form> <div class=md-search__output> <div class=md-search__scrollwrap tabindex=0 data-md-scrollfix> <div class=md-search-result data-md-component=search-result> <div class=md-search-result__meta> Initializing search </div> <ol class=md-search-result__list role=presentation></ol> </div> </div> </div> </div> </div> <div class=md-header__source> <a href="https://github.com/nlohmann/json" title="Go to repository" class="md-source" data-md-component="source"> <div class="md-source__icon md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </div> <div class=md-source__repository> nlohmann/json </div> </a> </div> </nav> </header> <div class=md-container data-md-component=container> <nav class=md-tabs aria-label=Tabs data-md-component=tabs> <div class=md-grid> <ul class=md-tabs__list> <li class=md-tabs__item> <a href=../../.. class=md-tabs__link> Home </a> </li> <li class=md-tabs__item> <a href=../../../features/arbitrary_types/ class=md-tabs__link> Features </a> </li> <li class=md-tabs__item> <a href=../../../integration/ class=md-tabs__link> Integration </a> </li> <li class="md-tabs__item md-tabs__item--active"> <a href=../ class=md-tabs__link> API Documentation </a> </li> <li class=md-tabs__item> <a href=../../../community/ class=md-tabs__link> Community </a> </li> </ul> </div> </nav> <main class=md-main data-md-component=main> <div class="md-main__inner md-grid"> <div class="md-sidebar md-sidebar--primary" data-md-component=sidebar data-md-type=navigation> <div class=md-sidebar__scrollwrap> <div class=md-sidebar__inner> <nav class="md-nav md-nav--primary md-nav--lifted" aria-label=Navigation data-md-level=0> <label class=md-nav__title for=__drawer> <a href=../../.. title="JSON for Modern C++" class="md-nav__button md-logo" aria-label="JSON for Modern C++" data-md-component=logo> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54"/></svg> </a> JSON for Modern C++ </label> <div class=md-nav__source> <a href="https://github.com/nlohmann/json" title="Go to repository" class="md-source" data-md-component="source"> <div class="md-source__icon md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </div> <div class=md-source__repository> nlohmann/json </div> </a> </div> <ul class=md-nav__list data-md-scrollfix> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_1> <div class="md-nav__link md-nav__container"> <a href=../../.. class="md-nav__link "> <span class=md-ellipsis> Home </span> </a> <label class="md-nav__link " for=__nav_1 id=__nav_1_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_1_label aria-expanded=false> <label class=md-nav__title for=__nav_1> <span class="md-nav__icon md-icon"></span> Home </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../home/license/ class=md-nav__link> <span class=md-ellipsis> License </span> </a> </li> <li class=md-nav__item> <a href=../../../home/faq/ class=md-nav__link> <span class=md-ellipsis> FAQ </span> </a> </li> <li class=md-nav__item> <a href=../../../home/exceptions/ class=md-nav__link> <span class=md-ellipsis> Exceptions </span> </a> </li> <li class=md-nav__item> <a href=../../../home/releases/ class=md-nav__link> <span class=md-ellipsis> Releases </span> </a> </li> <li class=md-nav__item> <a href=../../../home/design_goals/ class=md-nav__link> <span class=md-ellipsis> Design goals </span> </a> </li> <li class=md-nav__item> <a href=../../../home/architecture/ class=md-nav__link> <span class=md-ellipsis> Architecture </span> </a> </li> <li class=md-nav__item> <a href=../../../home/customers/ class=md-nav__link> <span class=md-ellipsis> Customers </span> </a> </li> <li class=md-nav__item> <a href=../../../home/sponsors/ class=md-nav__link> <span class=md-ellipsis> Sponsors </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2> <label class=md-nav__link for=__nav_2 id=__nav_2_label tabindex=0> <span class=md-ellipsis> Features </span> <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_2_label aria-expanded=false> <label class=md-nav__title for=__nav_2> <span class="md-nav__icon md-icon"></span> Features </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/arbitrary_types/ class=md-nav__link> <span class=md-ellipsis> Arbitrary Type Conversions </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_2> <div class="md-nav__link md-nav__container"> <a href=../../../features/binary_formats/ class="md-nav__link "> <span class=md-ellipsis> Binary Formats </span> </a> <label class="md-nav__link " for=__nav_2_2 id=__nav_2_2_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_2_label aria-expanded=false> <label class=md-nav__title for=__nav_2_2> <span class="md-nav__icon md-icon"></span> Binary Formats </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/binary_formats/bjdata/ class=md-nav__link> <span class=md-ellipsis> BJData </span> </a> </li> <li class=md-nav__item> <a href=../../../features/binary_formats/bson/ class=md-nav__link> <span class=md-ellipsis> BSON </span> </a> </li> <li class=md-nav__item> <a href=../../../features/binary_formats/cbor/ class=md-nav__link> <span class=md-ellipsis> CBOR </span> </a> </li> <li class=md-nav__item> <a href=../../../features/binary_formats/messagepack/ class=md-nav__link> <span class=md-ellipsis> MessagePack </span> </a> </li> <li class=md-nav__item> <a href=../../../features/binary_formats/ubjson/ class=md-nav__link> <span class=md-ellipsis> UBJSON </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../../features/binary_values/ class=md-nav__link> <span class=md-ellipsis> Binary Values </span> </a> </li> <li class=md-nav__item> <a href=../../../features/comments/ class=md-nav__link> <span class=md-ellipsis> Comments </span> </a> </li> <li class=md-nav__item> <a href=../../../features/trailing_commas/ class=md-nav__link> <span class=md-ellipsis> Trailing Commas </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_6> <div class="md-nav__link md-nav__container"> <a href=../../../features/element_access/ class="md-nav__link "> <span class=md-ellipsis> Element Access </span> </a> <label class="md-nav__link " for=__nav_2_6 id=__nav_2_6_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_6_label aria-expanded=false> <label class=md-nav__title for=__nav_2_6> <span class="md-nav__icon md-icon"></span> Element Access </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/element_access/unchecked_access/ class=md-nav__link> <span class=md-ellipsis> Unchecked access: operator[] </span> </a> </li> <li class=md-nav__item> <a href=../../../features/element_access/checked_access/ class=md-nav__link> <span class=md-ellipsis> Checked access: at </span> </a> </li> <li class=md-nav__item> <a href=../../../features/element_access/default_value/ class=md-nav__link> <span class=md-ellipsis> Access with default value: value </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../../features/iterators/ class=md-nav__link> <span class=md-ellipsis> Iterators </span> </a> </li> <li class=md-nav__item> <a href=../../../features/json_pointer/ class=md-nav__link> <span class=md-ellipsis> JSON Pointer </span> </a> </li> <li class=md-nav__item> <a href=../../../features/json_patch/ class=md-nav__link> <span class=md-ellipsis> JSON Patch and Diff </span> </a> </li> <li class=md-nav__item> <a href=../../../features/merge_patch/ class=md-nav__link> <span class=md-ellipsis> JSON Merge Patch </span> </a> </li> <li class=md-nav__item> <a href=../../../features/modules/ class=md-nav__link> <span class=md-ellipsis> Modules </span> </a> </li> <li class=md-nav__item> <a href=../../../features/namespace/ class=md-nav__link> <span class=md-ellipsis> nlohmann Namespace </span> </a> </li> <li class=md-nav__item> <a href=../../../features/object_order/ class=md-nav__link> <span class=md-ellipsis> Object Order </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_14> <div class="md-nav__link md-nav__container"> <a href=../../../features/parsing/ class="md-nav__link "> <span class=md-ellipsis> Parsing </span> </a> <label class="md-nav__link " for=__nav_2_14 id=__nav_2_14_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_14_label aria-expanded=false> <label class=md-nav__title for=__nav_2_14> <span class="md-nav__icon md-icon"></span> Parsing </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/parsing/json_lines/ class=md-nav__link> <span class=md-ellipsis> JSON Lines </span> </a> </li> <li class=md-nav__item> <a href=../../../features/parsing/parse_exceptions/ class=md-nav__link> <span class=md-ellipsis> Parsing and Exceptions </span> </a> </li> <li class=md-nav__item> <a href=../../../features/parsing/parser_callbacks/ class=md-nav__link> <span class=md-ellipsis> Parser Callbacks </span> </a> </li> <li class=md-nav__item> <a href=../../../features/parsing/sax_interface/ class=md-nav__link> <span class=md-ellipsis> SAX Interface </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../../features/assertions/ class=md-nav__link> <span class=md-ellipsis> Runtime Assertions </span> </a> </li> <li class=md-nav__item> <a href=../../../features/enum_conversion/ class=md-nav__link> <span class=md-ellipsis> Specializing enum conversion </span> </a> </li> <li class=md-nav__item> <a href=../../../features/macros/ class=md-nav__link> <span class=md-ellipsis> Supported Macros </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_18> <div class="md-nav__link md-nav__container"> <a href=../../../features/types/ class="md-nav__link "> <span class=md-ellipsis> Types </span> </a> <label class="md-nav__link " for=__nav_2_18 id=__nav_2_18_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_18_label aria-expanded=false> <label class=md-nav__title for=__nav_2_18> <span class="md-nav__icon md-icon"></span> Types </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/types/number_handling/ class=md-nav__link> <span class=md-ellipsis> Number Handling </span> </a> </li> </ul> </nav> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_3> <div class="md-nav__link md-nav__container"> <a href=../../../integration/ class="md-nav__link "> <span class=md-ellipsis> Integration </span> </a> <label class="md-nav__link " for=__nav_3 id=__nav_3_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_3_label aria-expanded=false> <label class=md-nav__title for=__nav_3> <span class="md-nav__icon md-icon"></span> Integration </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../integration/migration_guide/ class=md-nav__link> <span class=md-ellipsis> Migration Guide </span> </a> </li> <li class=md-nav__item> <a href=../../../integration/cmake/ class=md-nav__link> <span class=md-ellipsis> CMake </span> </a> </li> <li class=md-nav__item> <a href=../../../integration/package_managers/ class=md-nav__link> <span class=md-ellipsis> Package Managers </span> </a> </li> <li class=md-nav__item> <a href=../../../integration/pkg-config/ class=md-nav__link> <span class=md-ellipsis> Pkg-config </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--active md-nav__item--section md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4 checked> <label class=md-nav__link for=__nav_4 id=__nav_4_label tabindex> <span class=md-ellipsis> API Documentation </span> <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_4_label aria-expanded=true> <label class=md-nav__title for=__nav_4> <span class="md-nav__icon md-icon"></span> API Documentation </label> <ul class=md-nav__list data-md-scrollfix> <li class="md-nav__item md-nav__item--active md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_1 checked> <div class="md-nav__link md-nav__container"> <a href=../ class="md-nav__link "> <span class=md-ellipsis> basic_json </span> </a> <label class="md-nav__link " for=__nav_4_1 id=__nav_4_1_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_1_label aria-expanded=true> <label class=md-nav__title for=__nav_4_1> <span class="md-nav__icon md-icon"></span> basic_json </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../basic_json/ class=md-nav__link> <span class=md-ellipsis> (Constructor) </span> </a> </li> <li class=md-nav__item> <a href=../~basic_json/ class=md-nav__link> <span class=md-ellipsis> (Destructor) </span> </a> </li> <li class=md-nav__item> <a href=../accept/ class=md-nav__link> <span class=md-ellipsis> accept </span> </a> </li> <li class=md-nav__item> <a href=../array/ class=md-nav__link> <span class=md-ellipsis> array </span> </a> </li> <li class=md-nav__item> <a href=../array_t/ class=md-nav__link> <span class=md-ellipsis> array_t </span> </a> </li> <li class=md-nav__item> <a href=../at/ class=md-nav__link> <span class=md-ellipsis> at </span> </a> </li> <li class=md-nav__item> <a href=../back/ class=md-nav__link> <span class=md-ellipsis> back </span> </a> </li> <li class=md-nav__item> <a href=../begin/ class=md-nav__link> <span class=md-ellipsis> begin </span> </a> </li> <li class=md-nav__item> <a href=../binary/ class=md-nav__link> <span class=md-ellipsis> binary </span> </a> </li> <li class=md-nav__item> <a href=../binary_t/ class=md-nav__link> <span class=md-ellipsis> binary_t </span> </a> </li> <li class=md-nav__item> <a href=../boolean_t/ class=md-nav__link> <span class=md-ellipsis> boolean_t </span> </a> </li> <li class=md-nav__item> <a href=../cbegin/ class=md-nav__link> <span class=md-ellipsis> cbegin </span> </a> </li> <li class=md-nav__item> <a href=../cbor_tag_handler_t/ class=md-nav__link> <span class=md-ellipsis> cbor_tag_handler_t </span> </a> </li> <li class=md-nav__item> <a href=../cend/ class=md-nav__link> <span class=md-ellipsis> cend </span> </a> </li> <li class=md-nav__item> <a href=../clear/ class=md-nav__link> <span class=md-ellipsis> clear </span> </a> </li> <li class=md-nav__item> <a href=../contains/ class=md-nav__link> <span class=md-ellipsis> contains </span> </a> </li> <li class=md-nav__item> <a href=../count/ class=md-nav__link> <span class=md-ellipsis> count </span> </a> </li> <li class=md-nav__item> <a href=../crbegin/ class=md-nav__link> <span class=md-ellipsis> crbegin </span> </a> </li> <li class=md-nav__item> <a href=../crend/ class=md-nav__link> <span class=md-ellipsis> crend </span> </a> </li> <li class=md-nav__item> <a href=../default_object_comparator_t/ class=md-nav__link> <span class=md-ellipsis> default_object_comparator_t </span> </a> </li> <li class=md-nav__item> <a href=../diff/ class=md-nav__link> <span class=md-ellipsis> diff </span> </a> </li> <li class=md-nav__item> <a href=../dump/ class=md-nav__link> <span class=md-ellipsis> dump </span> </a> </li> <li class=md-nav__item> <a href=../emplace/ class=md-nav__link> <span class=md-ellipsis> emplace </span> </a> </li> <li class=md-nav__item> <a href=../emplace_back/ class=md-nav__link> <span class=md-ellipsis> emplace_back </span> </a> </li> <li class=md-nav__item> <a href=../empty/ class=md-nav__link> <span class=md-ellipsis> empty </span> </a> </li> <li class=md-nav__item> <a href=../end/ class=md-nav__link> <span class=md-ellipsis> end </span> </a> </li> <li class=md-nav__item> <a href=../end_pos/ class=md-nav__link> <span class=md-ellipsis> end_pos </span> </a> </li> <li class=md-nav__item> <a href=../erase/ class=md-nav__link> <span class=md-ellipsis> erase </span> </a> </li> <li class=md-nav__item> <a href=../error_handler_t/ class=md-nav__link> <span class=md-ellipsis> error_handler_t </span> </a> </li> <li class=md-nav__item> <a href=../exception/ class=md-nav__link> <span class=md-ellipsis> exception </span> </a> </li> <li class=md-nav__item> <a href=../find/ class=md-nav__link> <span class=md-ellipsis> find </span> </a> </li> <li class=md-nav__item> <a href=../flatten/ class=md-nav__link> <span class=md-ellipsis> flatten </span> </a> </li> <li class=md-nav__item> <a href=../from_bjdata/ class=md-nav__link> <span class=md-ellipsis> from_bjdata </span> </a> </li> <li class=md-nav__item> <a href=../from_bson/ class=md-nav__link> <span class=md-ellipsis> from_bson </span> </a> </li> <li class=md-nav__item> <a href=../from_cbor/ class=md-nav__link> <span class=md-ellipsis> from_cbor </span> </a> </li> <li class=md-nav__item> <a href=../from_msgpack/ class=md-nav__link> <span class=md-ellipsis> from_msgpack </span> </a> </li> <li class=md-nav__item> <a href=../from_ubjson/ class=md-nav__link> <span class=md-ellipsis> from_ubjson </span> </a> </li> <li class=md-nav__item> <a href=../front/ class=md-nav__link> <span class=md-ellipsis> front </span> </a> </li> <li class=md-nav__item> <a href=../get/ class=md-nav__link> <span class=md-ellipsis> get </span> </a> </li> <li class=md-nav__item> <a href=../get_allocator/ class=md-nav__link> <span class=md-ellipsis> get_allocator </span> </a> </li> <li class=md-nav__item> <a href=../get_binary/ class=md-nav__link> <span class=md-ellipsis> get_binary </span> </a> </li> <li class=md-nav__item> <a href=../get_ptr/ class=md-nav__link> <span class=md-ellipsis> get_ptr </span> </a> </li> <li class=md-nav__item> <a href=../get_ref/ class=md-nav__link> <span class=md-ellipsis> get_ref </span> </a> </li> <li class=md-nav__item> <a href=../get_to/ class=md-nav__link> <span class=md-ellipsis> get_to </span> </a> </li> <li class=md-nav__item> <a href=../std_hash/ class=md-nav__link> <span class=md-ellipsis> std::hash&lt;basic_json&gt; </span> </a> </li> <li class=md-nav__item> <a href=../input_format_t/ class=md-nav__link> <span class=md-ellipsis> input_format_t </span> </a> </li> <li class=md-nav__item> <a href=../insert/ class=md-nav__link> <span class=md-ellipsis> insert </span> </a> </li> <li class=md-nav__item> <a href=../invalid_iterator/ class=md-nav__link> <span class=md-ellipsis> invalid_iterator </span> </a> </li> <li class=md-nav__item> <a href=../is_array/ class=md-nav__link> <span class=md-ellipsis> is_array </span> </a> </li> <li class=md-nav__item> <a href=../is_binary/ class=md-nav__link> <span class=md-ellipsis> is_binary </span> </a> </li> <li class=md-nav__item> <a href=../is_boolean/ class=md-nav__link> <span class=md-ellipsis> is_boolean </span> </a> </li> <li class=md-nav__item> <a href=../is_discarded/ class=md-nav__link> <span class=md-ellipsis> is_discarded </span> </a> </li> <li class=md-nav__item> <a href=../is_null/ class=md-nav__link> <span class=md-ellipsis> is_null </span> </a> </li> <li class=md-nav__item> <a href=../is_number/ class=md-nav__link> <span class=md-ellipsis> is_number </span> </a> </li> <li class=md-nav__item> <a href=../is_number_float/ class=md-nav__link> <span class=md-ellipsis> is_number_float </span> </a> </li> <li class=md-nav__item> <a href=../is_number_integer/ class=md-nav__link> <span class=md-ellipsis> is_number_integer </span> </a> </li> <li class=md-nav__item> <a href=../is_number_unsigned/ class=md-nav__link> <span class=md-ellipsis> is_number_unsigned </span> </a> </li> <li class=md-nav__item> <a href=../is_object/ class=md-nav__link> <span class=md-ellipsis> is_object </span> </a> </li> <li class=md-nav__item> <a href=../is_primitive/ class=md-nav__link> <span class=md-ellipsis> is_primitive </span> </a> </li> <li class=md-nav__item> <a href=../is_string/ class=md-nav__link> <span class=md-ellipsis> is_string </span> </a> </li> <li class=md-nav__item> <a href=../is_structured/ class=md-nav__link> <span class=md-ellipsis> is_structured </span> </a> </li> <li class=md-nav__item> <a href=../items/ class=md-nav__link> <span class=md-ellipsis> items </span> </a> </li> <li class=md-nav__item> <a href=../json_base_class_t/ class=md-nav__link> <span class=md-ellipsis> json_base_class_t </span> </a> </li> <li class=md-nav__item> <a href=../json_serializer/ class=md-nav__link> <span class=md-ellipsis> json_serializer </span> </a> </li> <li class=md-nav__item> <a href=../max_size/ class=md-nav__link> <span class=md-ellipsis> max_size </span> </a> </li> <li class=md-nav__item> <a href=../meta/ class=md-nav__link> <span class=md-ellipsis> meta </span> </a> </li> <li class=md-nav__item> <a href=../merge_patch/ class=md-nav__link> <span class=md-ellipsis> merge_patch </span> </a> </li> <li class=md-nav__item> <a href=../number_float_t/ class=md-nav__link> <span class=md-ellipsis> number_float_t </span> </a> </li> <li class=md-nav__item> <a href=../number_integer_t/ class=md-nav__link> <span class=md-ellipsis> number_integer_t </span> </a> </li> <li class=md-nav__item> <a href=../number_unsigned_t/ class=md-nav__link> <span class=md-ellipsis> number_unsigned_t </span> </a> </li> <li class=md-nav__item> <a href=../object/ class=md-nav__link> <span class=md-ellipsis> object </span> </a> </li> <li class=md-nav__item> <a href=../object_comparator_t/ class=md-nav__link> <span class=md-ellipsis> object_comparator_t </span> </a> </li> <li class=md-nav__item> <a href=../object_t/ class=md-nav__link> <span class=md-ellipsis> object_t </span> </a> </li> <li class=md-nav__item> <a href=../operator_ValueType/ class=md-nav__link> <span class=md-ellipsis> operator ValueType </span> </a> </li> <li class=md-nav__item> <a href=../operator_value_t/ class=md-nav__link> <span class=md-ellipsis> operator value_t </span> </a> </li> <li class=md-nav__item> <a href=../operator%5B%5D/ class=md-nav__link> <span class=md-ellipsis> operator[] </span> </a> </li> <li class=md-nav__item> <a href=../operator%3D/ class=md-nav__link> <span class=md-ellipsis> operator= </span> </a> </li> <li class=md-nav__item> <a href=../operator%2B%3D/ class=md-nav__link> <span class=md-ellipsis> operator+= </span> </a> </li> <li class=md-nav__item> <a href=../operator_eq/ class=md-nav__link> <span class=md-ellipsis> operator== </span> </a> </li> <li class=md-nav__item> <a href=../operator_ne/ class=md-nav__link> <span class=md-ellipsis> operator!= </span> </a> </li> <li class=md-nav__item> <a href=../operator_lt/ class=md-nav__link> <span class=md-ellipsis> operator< </span> </a> </li> <li class=md-nav__item> <a href=../operator_gt/ class=md-nav__link> <span class=md-ellipsis> operator> </span> </a> </li> <li class=md-nav__item> <a href=../operator_le/ class=md-nav__link> <span class=md-ellipsis> operator<= </span> </a> </li> <li class=md-nav__item> <a href=../operator_ge/ class=md-nav__link> <span class=md-ellipsis> operator>= </span> </a> </li> <li class=md-nav__item> <a href=../operator_spaceship/ class=md-nav__link> <span class=md-ellipsis> operator<=> </span> </a> </li> <li class=md-nav__item> <a href=../out_of_range/ class=md-nav__link> <span class=md-ellipsis> out_of_range </span> </a> </li> <li class=md-nav__item> <a href=../other_error/ class=md-nav__link> <span class=md-ellipsis> other_error </span> </a> </li> <li class=md-nav__item> <a href=../parse/ class=md-nav__link> <span class=md-ellipsis> parse </span> </a> </li> <li class=md-nav__item> <a href=../parse_error/ class=md-nav__link> <span class=md-ellipsis> parse_error </span> </a> </li> <li class=md-nav__item> <a href=../parse_event_t/ class=md-nav__link> <span class=md-ellipsis> parse_event_t </span> </a> </li> <li class=md-nav__item> <a href=../parser_callback_t/ class=md-nav__link> <span class=md-ellipsis> parser_callback_t </span> </a> </li> <li class=md-nav__item> <a href=../patch/ class=md-nav__link> <span class=md-ellipsis> patch </span> </a> </li> <li class=md-nav__item> <a href=../patch_inplace/ class=md-nav__link> <span class=md-ellipsis> patch_inplace </span> </a> </li> <li class=md-nav__item> <a href=../push_back/ class=md-nav__link> <span class=md-ellipsis> push_back </span> </a> </li> <li class=md-nav__item> <a href=../rbegin/ class=md-nav__link> <span class=md-ellipsis> rbegin </span> </a> </li> <li class=md-nav__item> <a href=../rend/ class=md-nav__link> <span class=md-ellipsis> rend </span> </a> </li> <li class=md-nav__item> <a href=../sax_parse/ class=md-nav__link> <span class=md-ellipsis> sax_parse </span> </a> </li> <li class=md-nav__item> <a href=../size/ class=md-nav__link> <span class=md-ellipsis> size </span> </a> </li> <li class=md-nav__item> <a href=../start_pos/ class=md-nav__link> <span class=md-ellipsis> start_pos </span> </a> </li> <li class=md-nav__item> <a href=../string_t/ class=md-nav__link> <span class=md-ellipsis> string_t </span> </a> </li> <li class="md-nav__item md-nav__item--active"> <input class="md-nav__toggle md-toggle" type=checkbox id=__toc> <label class="md-nav__link md-nav__link--active" for=__toc> <span class=md-ellipsis> swap </span> <span class="md-nav__icon md-icon"></span> </label> <a href=./ class="md-nav__link md-nav__link--active"> <span class=md-ellipsis> swap </span> </a> <nav class="md-nav md-nav--secondary" aria-label="Table of contents"> <label class=md-nav__title for=__toc> <span class="md-nav__icon md-icon"></span> Table of contents </label> <ul class=md-nav__list data-md-component=toc data-md-scrollfix> <li class=md-nav__item> <a href=#parameters class=md-nav__link> <span class=md-ellipsis> Parameters </span> </a> </li> <li class=md-nav__item> <a href=#exceptions class=md-nav__link> <span class=md-ellipsis> Exceptions </span> </a> </li> <li class=md-nav__item> <a href=#complexity class=md-nav__link> <span class=md-ellipsis> Complexity </span> </a> </li> <li class=md-nav__item> <a href=#examples class=md-nav__link> <span class=md-ellipsis> Examples </span> </a> </li> <li class=md-nav__item> <a href=#see-also class=md-nav__link> <span class=md-ellipsis> See also </span> </a> </li> <li class=md-nav__item> <a href=#version-history class=md-nav__link> <span class=md-ellipsis> Version history </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../std_swap/ class=md-nav__link> <span class=md-ellipsis> std::swap&lt;basic_json&gt; </span> </a> </li> <li class=md-nav__item> <a href=../to_bjdata/ class=md-nav__link> <span class=md-ellipsis> to_bjdata </span> </a> </li> <li class=md-nav__item> <a href=../to_bson/ class=md-nav__link> <span class=md-ellipsis> to_bson </span> </a> </li> <li class=md-nav__item> <a href=../to_cbor/ class=md-nav__link> <span class=md-ellipsis> to_cbor </span> </a> </li> <li class=md-nav__item> <a href=../to_msgpack/ class=md-nav__link> <span class=md-ellipsis> to_msgpack </span> </a> </li> <li class=md-nav__item> <a href=../to_string/ class=md-nav__link> <span class=md-ellipsis> to_string </span> </a> </li> <li class=md-nav__item> <a href=../to_ubjson/ class=md-nav__link> <span class=md-ellipsis> to_ubjson </span> </a> </li> <li class=md-nav__item> <a href=../type/ class=md-nav__link> <span class=md-ellipsis> type </span> </a> </li> <li class=md-nav__item> <a href=../type_error/ class=md-nav__link> <span class=md-ellipsis> type_error </span> </a> </li> <li class=md-nav__item> <a href=../type_name/ class=md-nav__link> <span class=md-ellipsis> type_name </span> </a> </li> <li class=md-nav__item> <a href=../unflatten/ class=md-nav__link> <span class=md-ellipsis> unflatten </span> </a> </li> <li class=md-nav__item> <a href=../update/ class=md-nav__link> <span class=md-ellipsis> update </span> </a> </li> <li class=md-nav__item> <a href=../value/ class=md-nav__link> <span class=md-ellipsis> value </span> </a> </li> <li class=md-nav__item> <a href=../value_t/ class=md-nav__link> <span class=md-ellipsis> value_t </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_2> <div class="md-nav__link md-nav__container"> <a href=../../byte_container_with_subtype/ class="md-nav__link "> <span class=md-ellipsis> byte_container_with_subtype </span> </a> <label class="md-nav__link " for=__nav_4_2 id=__nav_4_2_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_2_label aria-expanded=false> <label class=md-nav__title for=__nav_4_2> <span class="md-nav__icon md-icon"></span> byte_container_with_subtype </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../byte_container_with_subtype/byte_container_with_subtype/ class=md-nav__link> <span class=md-ellipsis> (constructor) </span> </a> </li> <li class=md-nav__item> <a href=../../byte_container_with_subtype/clear_subtype/ class=md-nav__link> <span class=md-ellipsis> clear_subtype </span> </a> </li> <li class=md-nav__item> <a href=../../byte_container_with_subtype/has_subtype/ class=md-nav__link> <span class=md-ellipsis> has_subtype </span> </a> </li> <li class=md-nav__item> <a href=../../byte_container_with_subtype/set_subtype/ class=md-nav__link> <span class=md-ellipsis> set_subtype </span> </a> </li> <li class=md-nav__item> <a href=../../byte_container_with_subtype/subtype/ class=md-nav__link> <span class=md-ellipsis> subtype </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_3> <div class="md-nav__link md-nav__container"> <a href=../../adl_serializer/ class="md-nav__link "> <span class=md-ellipsis> adl_serializer </span> </a> <label class="md-nav__link " for=__nav_4_3 id=__nav_4_3_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_3_label aria-expanded=false> <label class=md-nav__title for=__nav_4_3> <span class="md-nav__icon md-icon"></span> adl_serializer </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../adl_serializer/from_json/ class=md-nav__link> <span class=md-ellipsis> from_json </span> </a> </li> <li class=md-nav__item> <a href=../../adl_serializer/to_json/ class=md-nav__link> <span class=md-ellipsis> to_json </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../json/ class=md-nav__link> <span class=md-ellipsis> json </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_5> <div class="md-nav__link md-nav__container"> <a href=../../json_pointer/ class="md-nav__link "> <span class=md-ellipsis> json_pointer </span> </a> <label class="md-nav__link " for=__nav_4_5 id=__nav_4_5_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_5_label aria-expanded=false> <label class=md-nav__title for=__nav_4_5> <span class="md-nav__icon md-icon"></span> json_pointer </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../json_pointer/json_pointer/ class=md-nav__link> <span class=md-ellipsis> (Constructor) </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/back/ class=md-nav__link> <span class=md-ellipsis> back </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/empty/ class=md-nav__link> <span class=md-ellipsis> empty </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/front/ class=md-nav__link> <span class=md-ellipsis> front </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_string_t/ class=md-nav__link> <span class=md-ellipsis> operator string_t </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_eq/ class=md-nav__link> <span class=md-ellipsis> operator== </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_ne/ class=md-nav__link> <span class=md-ellipsis> operator!= </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_slash/ class=md-nav__link> <span class=md-ellipsis> operator/ </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_slasheq/ class=md-nav__link> <span class=md-ellipsis> operator/= </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/parent_pointer/ class=md-nav__link> <span class=md-ellipsis> parent_pointer </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/pop_back/ class=md-nav__link> <span class=md-ellipsis> pop_back </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/pop_front/ class=md-nav__link> <span class=md-ellipsis> pop_front </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/push_back/ class=md-nav__link> <span class=md-ellipsis> push_back </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/push_front/ class=md-nav__link> <span class=md-ellipsis> push_front </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/string_t/ class=md-nav__link> <span class=md-ellipsis> string_t </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/to_string/ class=md-nav__link> <span class=md-ellipsis> to_string </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_6> <div class="md-nav__link md-nav__container"> <a href=../../json_sax/ class="md-nav__link "> <span class=md-ellipsis> json_sax </span> </a> <label class="md-nav__link " for=__nav_4_6 id=__nav_4_6_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_6_label aria-expanded=false> <label class=md-nav__title for=__nav_4_6> <span class="md-nav__icon md-icon"></span> json_sax </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../json_sax/binary/ class=md-nav__link> <span class=md-ellipsis> binary </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/boolean/ class=md-nav__link> <span class=md-ellipsis> boolean </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/end_array/ class=md-nav__link> <span class=md-ellipsis> end_array </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/end_object/ class=md-nav__link> <span class=md-ellipsis> end_object </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/key/ class=md-nav__link> <span class=md-ellipsis> key </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/null/ class=md-nav__link> <span class=md-ellipsis> null </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/number_float/ class=md-nav__link> <span class=md-ellipsis> number_float </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/number_integer/ class=md-nav__link> <span class=md-ellipsis> number_integer </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/number_unsigned/ class=md-nav__link> <span class=md-ellipsis> number_unsigned </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/parse_error/ class=md-nav__link> <span class=md-ellipsis> parse_error </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/start_array/ class=md-nav__link> <span class=md-ellipsis> start_array </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/start_object/ class=md-nav__link> <span class=md-ellipsis> start_object </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/string/ class=md-nav__link> <span class=md-ellipsis> string </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../operator_ltlt/ class=md-nav__link> <span class=md-ellipsis> operator<<(basic_json), operator<<(json_pointer) </span> </a> </li> <li class=md-nav__item> <a href=../../operator_gtgt/ class=md-nav__link> <span class=md-ellipsis> operator>>(basic_json) </span> </a> </li> <li class=md-nav__item> <a href=../../operator_literal_json/ class=md-nav__link> <span class=md-ellipsis> operator""_json </span> </a> </li> <li class=md-nav__item> <a href=../../operator_literal_json_pointer/ class=md-nav__link> <span class=md-ellipsis> operator""_json_pointer </span> </a> </li> <li class=md-nav__item> <a href=../../ordered_json/ class=md-nav__link> <span class=md-ellipsis> ordered_json </span> </a> </li> <li class=md-nav__item> <a href=../../ordered_map/ class=md-nav__link> <span class=md-ellipsis> ordered_map </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_13> <div class="md-nav__link md-nav__container"> <a href=../../macros/ class="md-nav__link "> <span class=md-ellipsis> macros </span> </a> <label class="md-nav__link " for=__nav_4_13 id=__nav_4_13_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_13_label aria-expanded=false> <label class=md-nav__title for=__nav_4_13> <span class="md-nav__icon md-icon"></span> macros </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../macros/json_assert/ class=md-nav__link> <span class=md-ellipsis> JSON_ASSERT </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_brace_init_copy_semantics/ class=md-nav__link> <span class=md-ellipsis> JSON_BRACE_INIT_COPY_SEMANTICS </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_throw_user/ class=md-nav__link> <span class=md-ellipsis> JSON_CATCH_USER, JSON_THROW_USER, JSON_TRY_USER </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_diagnostics/ class=md-nav__link> <span class=md-ellipsis> JSON_DIAGNOSTICS </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_diagnostic_positions/ class=md-nav__link> <span class=md-ellipsis> JSON_DIAGNOSTIC_POSITIONS </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_disable_enum_serialization/ class=md-nav__link> <span class=md-ellipsis> JSON_DISABLE_ENUM_SERIALIZATION </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_has_cpp_11/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_CPP_11, JSON_HAS_CPP_14, JSON_HAS_CPP_17, JSON_HAS_CPP_20 </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_has_filesystem/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_EXPERIMENTAL_FILESYSTEM, JSON_HAS_FILESYSTEM </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_has_ranges/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_RANGES </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_has_static_rtti/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_STATIC_RTTI </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_has_three_way_comparison/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_THREE_WAY_COMPARISON </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_noexception/ class=md-nav__link> <span class=md-ellipsis> JSON_NOEXCEPTION </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_no_io/ class=md-nav__link> <span class=md-ellipsis> JSON_NO_IO </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_skip_library_version_check/ class=md-nav__link> <span class=md-ellipsis> JSON_SKIP_LIBRARY_VERSION_CHECK </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_skip_unsupported_compiler_check/ class=md-nav__link> <span class=md-ellipsis> JSON_SKIP_UNSUPPORTED_COMPILER_CHECK </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_use_global_udls/ class=md-nav__link> <span class=md-ellipsis> JSON_USE_GLOBAL_UDLS </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_use_implicit_conversions/ class=md-nav__link> <span class=md-ellipsis> JSON_USE_IMPLICIT_CONVERSIONS </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_use_legacy_discarded_value_comparison/ class=md-nav__link> <span class=md-ellipsis> JSON_USE_LEGACY_DISCARDED_VALUE_COMPARISON </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_define_derived_type/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_ONLY_SERIALIZE, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_define_type_intrusive/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_TYPE_INTRUSIVE, NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_TYPE_INTRUSIVE_ONLY_SERIALIZE </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_define_type_non_intrusive/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_define_type_with_names/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_TYPE_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_namespace/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_NAMESPACE </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_namespace_begin/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_NAMESPACE_BEGIN, NLOHMANN_JSON_NAMESPACE_END </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_namespace_no_version/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_NAMESPACE_NO_VERSION </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_serialize_enum/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_SERIALIZE_ENUM </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_serialize_enum_strict/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_SERIALIZE_ENUM_STRICT </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_version_major/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_VERSION_MAJOR, NLOHMANN_JSON_VERSION_MINOR, NLOHMANN_JSON_VERSION_PATCH </span> </a> </li> </ul> </nav> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_5> <div class="md-nav__link md-nav__container"> <a href=../../../community/ class="md-nav__link "> <span class=md-ellipsis> Community </span> </a> <label class="md-nav__link " for=__nav_5 id=__nav_5_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_5_label aria-expanded=false> <label class=md-nav__title for=__nav_5> <span class="md-nav__icon md-icon"></span> Community </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../community/code_of_conduct/ class=md-nav__link> <span class=md-ellipsis> Code of Conduct </span> </a> </li> <li class=md-nav__item> <a href=../../../community/contribution_guidelines/ class=md-nav__link> <span class=md-ellipsis> Contribution Guidelines </span> </a> </li> <li class=md-nav__item> <a href=../../../community/quality_assurance/ class=md-nav__link> <span class=md-ellipsis> Quality assurance </span> </a> </li> <li class=md-nav__item> <a href=../../../community/governance/ class=md-nav__link> <span class=md-ellipsis> Governance </span> </a> </li> <li class=md-nav__item> <a href=../../../community/security_policy/ class=md-nav__link> <span class=md-ellipsis> Security Policy </span> </a> </li> </ul> </nav> </li> </ul> </nav> </div> </div> </div> <div class="md-sidebar md-sidebar--secondary" data-md-component=sidebar data-md-type=toc> <div class=md-sidebar__scrollwrap> <div class=md-sidebar__inner> <nav class="md-nav md-nav--secondary" aria-label="Table of contents"> <label class=md-nav__title for=__toc> <span class="md-nav__icon md-icon"></span> Table of contents </label> <ul class=md-nav__list data-md-component=toc data-md-scrollfix> <li class=md-nav__item> <a href=#parameters class=md-nav__link> <span class=md-ellipsis> Parameters </span> </a> </li> <li class=md-nav__item> <a href=#exceptions class=md-nav__link> <span class=md-ellipsis> Exceptions </span> </a> </li> <li class=md-nav__item> <a href=#complexity class=md-nav__link> <span class=md-ellipsis> Complexity </span> </a> </li> <li class=md-nav__item> <a href=#examples class=md-nav__link> <span class=md-ellipsis> Examples </span> </a> </li> <li class=md-nav__item> <a href=#see-also class=md-nav__link> <span class=md-ellipsis> See also </span> </a> </li> <li class=md-nav__item> <a href=#version-history class=md-nav__link> <span class=md-ellipsis> Version history </span> </a> </li> </ul> </nav> </div> </div> </div> <div class=md-content data-md-component=content> <article class="md-content__inner md-typeset"> <a href="https://github.com/nlohmann/json/edit/develop/docs/mkdocs/docs/api/basic_json/swap.md" title="Edit this page" class="md-content__button md-icon" rel="edit"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M10 20H6V4h7v5h5v3.1l2-2V8l-6-6H6c-1.1 0-2 .9-2 2v16c0 1.1.9 2 2 2h4zm10.2-7c.1 0 .3.1.4.2l1.3 1.3c.2.2.2.6 0 .8l-1 1-2.1-2.1 1-1c.1-.1.2-.2.4-.2m0 3.9L14.1 23H12v-2.1l6.1-6.1z"/></svg> </a> <a href="https://github.com/nlohmann/json/raw/develop/docs/mkdocs/docs/api/basic_json/swap.md" title="View source of this page" class="md-content__button md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M17 18c.56 0 1 .44 1 1s-.44 1-1 1-1-.44-1-1 .44-1 1-1m0-3c-2.73 0-5.06 1.66-6 4 .94 2.34 3.27 4 6 4s5.06-1.66 6-4c-.94-2.34-3.27-4-6-4m0 6.5a2.5 2.5 0 0 1-2.5-2.5 2.5 2.5 0 0 1 2.5-2.5 2.5 2.5 0 0 1 2.5 2.5 2.5 2.5 0 0 1-2.5 2.5M9.27 20H6V4h7v5h5v4.07c.7.08 1.36.25 2 .49V8l-6-6H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h4.5a8.2 8.2 0 0 1-1.23-2"/></svg> </a> <h1 id=nlohmannbasic_jsonswap><small>nlohmann::basic_json::</small>swap<a class=headerlink href=#nlohmannbasic_jsonswap title="Permanent link">&para;</a></h1> <div class=highlight><pre><span></span><code><span class=c1>// (1)</span>
-<span class=kt>void</span><span class=w> </span><span class=nf>swap</span><span class=p>(</span><span class=n>reference</span><span class=w> </span><span class=n>other</span><span class=p>)</span><span class=w> </span><span class=k>noexcept</span><span class=p>;</span>
+<span class=kt>void</span><span class=w> </span><span class=nf>swap</span><span class=p>(</span><span class=n>reference</span><span class=w> </span><span class=n>other</span><span class=p>)</span><span class=w> </span><span class=k>noexcept</span><span class=w> </span><span class=p>(</span>
+<span class=w>    </span><span class=n>std</span><span class=o>::</span><span class=n>is_nothrow_move_constructible</span><span class=o>&lt;</span><span class=n>value_t</span><span class=o>&gt;::</span><span class=n>value</span><span class=w> </span><span class=o>&amp;&amp;</span>
+<span class=w>    </span><span class=n>std</span><span class=o>::</span><span class=n>is_nothrow_move_assignable</span><span class=o>&lt;</span><span class=n>value_t</span><span class=o>&gt;::</span><span class=n>value</span><span class=w> </span><span class=o>&amp;&amp;</span>
+<span class=w>    </span><span class=n>std</span><span class=o>::</span><span class=n>is_nothrow_move_constructible</span><span class=o>&lt;</span><span class=n>json_value</span><span class=o>&gt;::</span><span class=n>value</span><span class=w> </span><span class=o>&amp;&amp;</span>
+<span class=w>    </span><span class=n>std</span><span class=o>::</span><span class=n>is_nothrow_move_assignable</span><span class=o>&lt;</span><span class=n>json_value</span><span class=o>&gt;::</span><span class=n>value</span>
+<span class=p>);</span>
 
 <span class=c1>// (2)</span>
-<span class=kt>void</span><span class=w> </span><span class=nf>swap</span><span class=p>(</span><span class=n>reference</span><span class=w> </span><span class=n>left</span><span class=p>,</span><span class=w> </span><span class=n>reference</span><span class=w> </span><span class=n>right</span><span class=p>)</span><span class=w> </span><span class=k>noexcept</span><span class=p>;</span>
+<span class=k>friend</span><span class=w> </span><span class=kt>void</span><span class=w> </span><span class=nf>swap</span><span class=p>(</span><span class=n>reference</span><span class=w> </span><span class=n>left</span><span class=p>,</span><span class=w> </span><span class=n>reference</span><span class=w> </span><span class=n>right</span><span class=p>)</span><span class=w> </span><span class=k>noexcept</span><span class=w> </span><span class=p>(</span>
+<span class=w>    </span><span class=n>std</span><span class=o>::</span><span class=n>is_nothrow_move_constructible</span><span class=o>&lt;</span><span class=n>value_t</span><span class=o>&gt;::</span><span class=n>value</span><span class=w> </span><span class=o>&amp;&amp;</span>
+<span class=w>    </span><span class=n>std</span><span class=o>::</span><span class=n>is_nothrow_move_assignable</span><span class=o>&lt;</span><span class=n>value_t</span><span class=o>&gt;::</span><span class=n>value</span><span class=w> </span><span class=o>&amp;&amp;</span>
+<span class=w>    </span><span class=n>std</span><span class=o>::</span><span class=n>is_nothrow_move_constructible</span><span class=o>&lt;</span><span class=n>json_value</span><span class=o>&gt;::</span><span class=n>value</span><span class=w> </span><span class=o>&amp;&amp;</span>
+<span class=w>    </span><span class=n>std</span><span class=o>::</span><span class=n>is_nothrow_move_assignable</span><span class=o>&lt;</span><span class=n>json_value</span><span class=o>&gt;::</span><span class=n>value</span>
+<span class=p>);</span>
 
 <span class=c1>// (3)</span>
 <span class=kt>void</span><span class=w> </span><span class=nf>swap</span><span class=p>(</span><span class=n>array_t</span><span class=o>&amp;</span><span class=w> </span><span class=n>other</span><span class=p>);</span>
@@ -18,7 +28,7 @@
 
 <span class=c1>// (7)</span>
 <span class=kt>void</span><span class=w> </span><span class=nf>swap</span><span class=p>(</span><span class=k>typename</span><span class=w> </span><span class=nc>binary_t</span><span class=o>::</span><span class=n>container_type</span><span class=o>&amp;</span><span class=w> </span><span class=n>other</span><span class=p>);</span>
-</code></pre></div> <ol> <li>Exchanges the contents of the <abbr title="JavaScript Object Notation">JSON</abbr> value with those of <code>other</code>. Does not invoke any move, copy, or swap operations on individual elements. All iterators and references remain valid. The past-the-end iterator is invalidated. </li> <li>Exchanges the contents of the <abbr title="JavaScript Object Notation">JSON</abbr> value from <code>left</code> with those of <code>right</code>. Does not invoke any move, copy, or swap operations on individual elements. All iterators and references remain valid. The past-the-end iterator is invalidated. Implemented as a friend function callable via <abbr title="Argument-dependent lookup">ADL</abbr>.</li> <li>Exchanges the contents of a <abbr title="JavaScript Object Notation">JSON</abbr> array with those of <code>other</code>. Does not invoke any move, copy, or swap operations on individual elements. All iterators and references remain valid. The past-the-end iterator is invalidated. </li> <li>Exchanges the contents of a <abbr title="JavaScript Object Notation">JSON</abbr> object with those of <code>other</code>. Does not invoke any move, copy, or swap operations on individual elements. All iterators and references remain valid. The past-the-end iterator is invalidated.</li> <li>Exchanges the contents of a <abbr title="JavaScript Object Notation">JSON</abbr> string with those of <code>other</code>. Does not invoke any move, copy, or swap operations on individual elements. All iterators and references remain valid. The past-the-end iterator is invalidated.</li> <li>Exchanges the contents of a binary value with those of <code>other</code>. Does not invoke any move, copy, or swap operations on individual elements. All iterators and references remain valid. The past-the-end iterator is invalidated.</li> <li>Exchanges the contents of a binary value with those of <code>other</code>. Does not invoke any move, copy, or swap operations on individual elements. All iterators and references remain valid. The past-the-end iterator is invalidated. Unlike version (6), no binary subtype is involved.</li> </ol> <h2 id=parameters>Parameters<a class=headerlink href=#parameters title="Permanent link">&para;</a></h2> <dl> <dt><code>other</code> (in, out)</dt> <dd>value to exchange the contents with</dd> <dt><code>left</code> (in, out)</dt> <dd>value to exchange the contents with</dd> <dt><code>right</code> (in, out)</dt> <dd>value to exchange the contents with</dd> </dl> <h2 id=exceptions>Exceptions<a class=headerlink href=#exceptions title="Permanent link">&para;</a></h2> <ol> <li>No-throw guarantee: this function never throws exceptions.</li> <li>No-throw guarantee: this function never throws exceptions.</li> <li>Throws <a href=../../../home/exceptions/#jsonexceptiontype_error310><code>type_error.310</code></a> if called on <abbr title="JavaScript Object Notation">JSON</abbr> values other than arrays; example: <code>"cannot use swap() with boolean"</code></li> <li>Throws <a href=../../../home/exceptions/#jsonexceptiontype_error310><code>type_error.310</code></a> if called on <abbr title="JavaScript Object Notation">JSON</abbr> values other than objects; example: <code>"cannot use swap() with boolean"</code></li> <li>Throws <a href=../../../home/exceptions/#jsonexceptiontype_error310><code>type_error.310</code></a> if called on <abbr title="JavaScript Object Notation">JSON</abbr> values other than strings; example: <code>"cannot use swap() with boolean"</code></li> <li>Throws <a href=../../../home/exceptions/#jsonexceptiontype_error310><code>type_error.310</code></a> if called on <abbr title="JavaScript Object Notation">JSON</abbr> values other than binaries; example: <code>"cannot use swap() with boolean"</code></li> <li>Throws <a href=../../../home/exceptions/#jsonexceptiontype_error310><code>type_error.310</code></a> if called on <abbr title="JavaScript Object Notation">JSON</abbr> values other than binaries; example: <code>"cannot use swap() with boolean"</code></li> </ol> <h2 id=complexity>Complexity<a class=headerlink href=#complexity title="Permanent link">&para;</a></h2> <p>Constant.</p> <h2 id=examples>Examples<a class=headerlink href=#examples title="Permanent link">&para;</a></h2> <details class=example> <summary>Example: Swap <abbr title="JavaScript Object Notation">JSON</abbr> value (1, 2)</summary> <p>The example below shows how <abbr title="JavaScript Object Notation">JSON</abbr> values can be swapped with <code>swap()</code>.</p> <div class=highlight><pre><span></span><code><span class=cp>#include</span><span class=w> </span><span class=cpf>&lt;iostream&gt;</span>
+</code></pre></div> <ol> <li>Exchanges the contents of the <abbr title="JavaScript Object Notation">JSON</abbr> value with those of <code>other</code>. Does not invoke any move, copy, or swap operations on individual elements. All iterators and references remain valid. The past-the-end iterator is invalidated. </li> <li>Exchanges the contents of the <abbr title="JavaScript Object Notation">JSON</abbr> value from <code>left</code> with those of <code>right</code>. Does not invoke any move, copy, or swap operations on individual elements. All iterators and references remain valid. The past-the-end iterator is invalidated. Implemented as a friend function callable via <abbr title="Argument-dependent lookup">ADL</abbr>.</li> <li>Exchanges the contents of a <abbr title="JavaScript Object Notation">JSON</abbr> array with those of <code>other</code>. Does not invoke any move, copy, or swap operations on individual elements. All iterators and references remain valid. The past-the-end iterator is invalidated. </li> <li>Exchanges the contents of a <abbr title="JavaScript Object Notation">JSON</abbr> object with those of <code>other</code>. Does not invoke any move, copy, or swap operations on individual elements. All iterators and references remain valid. The past-the-end iterator is invalidated.</li> <li>Exchanges the contents of a <abbr title="JavaScript Object Notation">JSON</abbr> string with those of <code>other</code>. Does not invoke any move, copy, or swap operations on individual elements. All iterators and references remain valid. The past-the-end iterator is invalidated.</li> <li>Exchanges the contents of a binary value with those of <code>other</code>. Does not invoke any move, copy, or swap operations on individual elements. All iterators and references remain valid. The past-the-end iterator is invalidated.</li> <li>Exchanges the contents of a binary value with those of <code>other</code>. Does not invoke any move, copy, or swap operations on individual elements. All iterators and references remain valid. The past-the-end iterator is invalidated. Unlike version (6), no binary subtype is involved.</li> </ol> <h2 id=parameters>Parameters<a class=headerlink href=#parameters title="Permanent link">&para;</a></h2> <dl> <dt><code>other</code> (in, out)</dt> <dd>value to exchange the contents with</dd> <dt><code>left</code> (in, out)</dt> <dd>value to exchange the contents with</dd> <dt><code>right</code> (in, out)</dt> <dd>value to exchange the contents with</dd> </dl> <h2 id=exceptions>Exceptions<a class=headerlink href=#exceptions title="Permanent link">&para;</a></h2> <ol> <li>No-throw guarantee: this function never throws exceptions.</li> <li>No-throw guarantee: this function never throws exceptions.</li> <li>Throws <a href=../../../home/exceptions/#jsonexceptiontype_error310><code>type_error.310</code></a> if called on <abbr title="JavaScript Object Notation">JSON</abbr> values other than arrays; example: <code>"cannot use swap(array_t&amp;) with boolean"</code></li> <li>Throws <a href=../../../home/exceptions/#jsonexceptiontype_error310><code>type_error.310</code></a> if called on <abbr title="JavaScript Object Notation">JSON</abbr> values other than objects; example: <code>"cannot use swap(object_t&amp;) with boolean"</code></li> <li>Throws <a href=../../../home/exceptions/#jsonexceptiontype_error310><code>type_error.310</code></a> if called on <abbr title="JavaScript Object Notation">JSON</abbr> values other than strings; example: <code>"cannot use swap(string_t&amp;) with boolean"</code></li> <li>Throws <a href=../../../home/exceptions/#jsonexceptiontype_error310><code>type_error.310</code></a> if called on <abbr title="JavaScript Object Notation">JSON</abbr> values other than binaries; example: <code>"cannot use swap(binary_t&amp;) with boolean"</code></li> <li>Throws <a href=../../../home/exceptions/#jsonexceptiontype_error310><code>type_error.310</code></a> if called on <abbr title="JavaScript Object Notation">JSON</abbr> values other than binaries; example: <code>"cannot use swap(binary_t::container_type&amp;) with boolean"</code></li> </ol> <h2 id=complexity>Complexity<a class=headerlink href=#complexity title="Permanent link">&para;</a></h2> <p>Constant.</p> <h2 id=examples>Examples<a class=headerlink href=#examples title="Permanent link">&para;</a></h2> <details class=example> <summary>Example: Swap <abbr title="JavaScript Object Notation">JSON</abbr> value (1, 2)</summary> <p>The example below shows how <abbr title="JavaScript Object Notation">JSON</abbr> values can be swapped with <code>swap()</code>.</p> <div class=highlight><pre><span></span><code><span class=cp>#include</span><span class=w> </span><span class=cpf>&lt;iostream&gt;</span>
 <span class=cp>#include</span><span class=w> </span><span class=cpf>&lt;nlohmann/json.hpp&gt;</span>
 
 <span class=k>using</span><span class=w> </span><span class=n>json</span><span class=w> </span><span class=o>=</span><span class=w> </span><span class=n>nlohmann</span><span class=o>::</span><span class=n>json</span><span class=p>;</span>
@@ -104,7 +114,7 @@
 <span class=p>}</span>
 </code></pre></div> <p>Output:</p> <div class=highlight><pre><span></span><code><span class=err>value</span><span class=w> </span><span class=err>=</span><span class=w> </span><span class=p>[</span><span class=s2>&quot;the good&quot;</span><span class=p>,</span><span class=s2>&quot;the fast&quot;</span><span class=p>,</span><span class=s2>&quot;the ugly&quot;</span><span class=p>]</span>
 <span class=err>s</span><span class=kc>tr</span><span class=err>i</span><span class=kc>n</span><span class=err>g</span><span class=w> </span><span class=err>=</span><span class=w> </span><span class=kc>t</span><span class=err>he</span><span class=w> </span><span class=err>bad</span>
-</code></pre></div> </details> <details class=example> <summary>Example: Swap string (6)</summary> <p>The example below shows how binary values can be swapped with <code>swap()</code>.</p> <div class=highlight><pre><span></span><code><span class=cp>#include</span><span class=w> </span><span class=cpf>&lt;iostream&gt;</span>
+</code></pre></div> </details> <details class=example> <summary>Example: Swap binary (6)</summary> <p>The example below shows how binary values can be swapped with <code>swap()</code>.</p> <div class=highlight><pre><span></span><code><span class=cp>#include</span><span class=w> </span><span class=cpf>&lt;iostream&gt;</span>
 <span class=cp>#include</span><span class=w> </span><span class=cpf>&lt;nlohmann/json.hpp&gt;</span>
 
 <span class=k>using</span><span class=w> </span><span class=n>json</span><span class=w> </span><span class=o>=</span><span class=w> </span><span class=n>nlohmann</span><span class=o>::</span><span class=n>json</span><span class=p>;</span>
@@ -126,4 +136,4 @@
 <span class=p>}</span>
 </code></pre></div> <p>Output:</p> <div class=highlight><pre><span></span><code><span class=err>value</span><span class=w> </span><span class=err>=</span><span class=w> </span><span class=p>{</span><span class=nt>&quot;bytes&quot;</span><span class=p>:[</span><span class=mi>4</span><span class=p>,</span><span class=mi>5</span><span class=p>,</span><span class=mi>6</span><span class=p>],</span><span class=nt>&quot;subtype&quot;</span><span class=p>:</span><span class=kc>null</span><span class=p>}</span>
 <span class=err>bi</span><span class=kc>nar</span><span class=err>y</span><span class=w> </span><span class=err>=</span><span class=w> </span><span class=p>{</span><span class=nt>&quot;bytes&quot;</span><span class=p>:[</span><span class=mi>1</span><span class=p>,</span><span class=mi>2</span><span class=p>,</span><span class=mi>3</span><span class=p>],</span><span class=nt>&quot;subtype&quot;</span><span class=p>:</span><span class=kc>null</span><span class=p>}</span>
-</code></pre></div> </details> <h2 id=see-also>See also<a class=headerlink href=#see-also title="Permanent link">&para;</a></h2> <ul> <li><a href=../std_swap/ >std::swap&lt;basic_json&gt;</a></li> </ul> <h2 id=version-history>Version history<a class=headerlink href=#version-history title="Permanent link">&para;</a></h2> <ol> <li>Since version 1.0.0.</li> <li>Since version 1.0.0.</li> <li>Since version 1.0.0.</li> <li>Since version 1.0.0.</li> <li>Since version 1.0.0.</li> <li>Since version 3.8.0.</li> <li>Since version 3.8.0.</li> </ol> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 23, 2026 11:16:18 UTC">June 23, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
+</code></pre></div> </details> <h2 id=see-also>See also<a class=headerlink href=#see-also title="Permanent link">&para;</a></h2> <ul> <li><a href=../std_swap/ >std::swap&lt;basic_json&gt;</a></li> <li><a href=../operator%3D/ >operator=</a> copy assignment</li> <li><a href=../basic_json/ >basic_json</a> create a <abbr title="JavaScript Object Notation">JSON</abbr> value</li> </ul> <h2 id=version-history>Version history<a class=headerlink href=#version-history title="Permanent link">&para;</a></h2> <ol> <li>Since version 1.0.0.</li> <li>Since version 1.0.0.</li> <li>Since version 1.0.0.</li> <li>Since version 1.0.0.</li> <li>Since version 1.0.0.</li> <li>Since version 3.8.0.</li> <li>Since version 3.8.0.</li> </ol> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 29, 2026 20:15:18 UTC">June 29, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
diff --git a/api/basic_json/to_bjdata/index.html b/api/basic_json/to_bjdata/index.html
index 6f4a6f6..bae33ad 100644
--- a/api/basic_json/to_bjdata/index.html
+++ b/api/basic_json/to_bjdata/index.html
@@ -1,4 +1,4 @@
-<!doctype html><html lang=en class=no-js> <head><meta charset=utf-8><meta name=viewport content="width=device-width,initial-scale=1"><meta name=author content="Niels Lohmann"><link href="https://json.nlohmann.me/api/basic_json/to_bjdata/" rel="canonical"><link href=../std_swap/ rel=prev><link href=../to_bson/ rel=next><link rel=icon href=../../../assets/images/favicon.png><meta name=generator content="mkdocs-1.6.1, mkdocs-material-9.7.6"><title>to_bjdata - JSON for Modern C++</title><link rel=stylesheet href=../../../assets/stylesheets/main.484c7ddc.min.css><link rel=stylesheet href=../../../assets/stylesheets/palette.ab4e12ef.min.css><link rel="stylesheet" href="../../../assets/external/fonts.googleapis.com/css.61a430c9.css"><style>:root{--md-text-font:"Roboto";--md-code-font:"JetBrains Mono"}</style><link rel=stylesheet href=../../../css/custom.css><script>__md_scope=new URL("../../..",location),__md_hash=e=>[...e].reduce(((e,_)=>(e<<5)-e+_.charCodeAt(0)),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script></head> <body dir=ltr data-md-color-scheme=default data-md-color-primary=indigo data-md-color-accent=indigo> <input class=md-toggle data-md-toggle=drawer type=checkbox id=__drawer autocomplete=off> <input class=md-toggle data-md-toggle=search type=checkbox id=__search autocomplete=off> <label class=md-overlay for=__drawer></label> <div data-md-component=skip> <a href=#nlohmannbasic_jsonto_bjdata class=md-skip> Skip to content </a> </div> <div data-md-component=announce> </div> <header class=md-header data-md-component=header> <nav class="md-header__inner md-grid" aria-label=Header> <a href=../../.. title="JSON for Modern C++" class="md-header__button md-logo" aria-label="JSON for Modern C++" data-md-component=logo> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54"/></svg> </a> <label class="md-header__button md-icon" for=__drawer> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M3 6h18v2H3zm0 5h18v2H3zm0 5h18v2H3z"/></svg> </label> <div class=md-header__title data-md-component=header-title> <div class=md-header__ellipsis> <div class=md-header__topic> <span class=md-ellipsis> JSON for Modern C++ </span> </div> <div class=md-header__topic data-md-component=header-topic> <span class=md-ellipsis> to_bjdata </span> </div> </div> </div> <form class=md-header__option data-md-component=palette> <input class=md-option data-md-color-media="(prefers-color-scheme: light)" data-md-color-scheme=default data-md-color-primary=indigo data-md-color-accent=indigo aria-label="Switch to dark mode" type=radio name=__palette id=__palette_0> <label class="md-header__button md-icon" title="Switch to dark mode" for=__palette_1 hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a4 4 0 0 0-4 4 4 4 0 0 0 4 4 4 4 0 0 0 4-4 4 4 0 0 0-4-4m0 10a6 6 0 0 1-6-6 6 6 0 0 1 6-6 6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12z"/></svg> </label> <input class=md-option data-md-color-media="(prefers-color-scheme: dark)" data-md-color-scheme=slate data-md-color-primary=indigo data-md-color-accent=indigo aria-label="Switch to light mode" type=radio name=__palette id=__palette_1> <label class="md-header__button md-icon" title="Switch to light mode" for=__palette_0 hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 18c-.89 0-1.74-.2-2.5-.55C11.56 16.5 13 14.42 13 12s-1.44-4.5-3.5-5.45C10.26 6.2 11.11 6 12 6a6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12z"/></svg> </label> </form> <script>var palette=__md_get("__palette");if(palette&&palette.color){if("(prefers-color-scheme)"===palette.color.media){var media=matchMedia("(prefers-color-scheme: light)"),input=document.querySelector(media.matches?"[data-md-color-media='(prefers-color-scheme: light)']":"[data-md-color-media='(prefers-color-scheme: dark)']");palette.color.media=input.getAttribute("data-md-color-media"),palette.color.scheme=input.getAttribute("data-md-color-scheme"),palette.color.primary=input.getAttribute("data-md-color-primary"),palette.color.accent=input.getAttribute("data-md-color-accent")}for(var[key,value]of Object.entries(palette.color))document.body.setAttribute("data-md-color-"+key,value)}</script> <label class="md-header__button md-icon" for=__search> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg> </label> <div class=md-search data-md-component=search role=dialog> <label class=md-search__overlay for=__search></label> <div class=md-search__inner role=search> <form class=md-search__form name=search> <input type=text class=md-search__input name=query aria-label=Search placeholder=Search autocapitalize=off autocorrect=off autocomplete=off spellcheck=false data-md-component=search-query required> <label class="md-search__icon md-icon" for=__search> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11z"/></svg> </label> <nav class=md-search__options aria-label=Search> <button type=reset class="md-search__icon md-icon" title=Clear aria-label=Clear tabindex=-1> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z"/></svg> </button> </nav> </form> <div class=md-search__output> <div class=md-search__scrollwrap tabindex=0 data-md-scrollfix> <div class=md-search-result data-md-component=search-result> <div class=md-search-result__meta> Initializing search </div> <ol class=md-search-result__list role=presentation></ol> </div> </div> </div> </div> </div> <div class=md-header__source> <a href="https://github.com/nlohmann/json" title="Go to repository" class="md-source" data-md-component="source"> <div class="md-source__icon md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </div> <div class=md-source__repository> nlohmann/json </div> </a> </div> </nav> </header> <div class=md-container data-md-component=container> <nav class=md-tabs aria-label=Tabs data-md-component=tabs> <div class=md-grid> <ul class=md-tabs__list> <li class=md-tabs__item> <a href=../../.. class=md-tabs__link> Home </a> </li> <li class=md-tabs__item> <a href=../../../features/arbitrary_types/ class=md-tabs__link> Features </a> </li> <li class=md-tabs__item> <a href=../../../integration/ class=md-tabs__link> Integration </a> </li> <li class="md-tabs__item md-tabs__item--active"> <a href=../ class=md-tabs__link> API Documentation </a> </li> <li class=md-tabs__item> <a href=../../../community/ class=md-tabs__link> Community </a> </li> </ul> </div> </nav> <main class=md-main data-md-component=main> <div class="md-main__inner md-grid"> <div class="md-sidebar md-sidebar--primary" data-md-component=sidebar data-md-type=navigation> <div class=md-sidebar__scrollwrap> <div class=md-sidebar__inner> <nav class="md-nav md-nav--primary md-nav--lifted" aria-label=Navigation data-md-level=0> <label class=md-nav__title for=__drawer> <a href=../../.. title="JSON for Modern C++" class="md-nav__button md-logo" aria-label="JSON for Modern C++" data-md-component=logo> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54"/></svg> </a> JSON for Modern C++ </label> <div class=md-nav__source> <a href="https://github.com/nlohmann/json" title="Go to repository" class="md-source" data-md-component="source"> <div class="md-source__icon md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </div> <div class=md-source__repository> nlohmann/json </div> </a> </div> <ul class=md-nav__list data-md-scrollfix> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_1> <div class="md-nav__link md-nav__container"> <a href=../../.. class="md-nav__link "> <span class=md-ellipsis> Home </span> </a> <label class="md-nav__link " for=__nav_1 id=__nav_1_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_1_label aria-expanded=false> <label class=md-nav__title for=__nav_1> <span class="md-nav__icon md-icon"></span> Home </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../home/license/ class=md-nav__link> <span class=md-ellipsis> License </span> </a> </li> <li class=md-nav__item> <a href=../../../home/faq/ class=md-nav__link> <span class=md-ellipsis> FAQ </span> </a> </li> <li class=md-nav__item> <a href=../../../home/exceptions/ class=md-nav__link> <span class=md-ellipsis> Exceptions </span> </a> </li> <li class=md-nav__item> <a href=../../../home/releases/ class=md-nav__link> <span class=md-ellipsis> Releases </span> </a> </li> <li class=md-nav__item> <a href=../../../home/design_goals/ class=md-nav__link> <span class=md-ellipsis> Design goals </span> </a> </li> <li class=md-nav__item> <a href=../../../home/architecture/ class=md-nav__link> <span class=md-ellipsis> Architecture </span> </a> </li> <li class=md-nav__item> <a href=../../../home/customers/ class=md-nav__link> <span class=md-ellipsis> Customers </span> </a> </li> <li class=md-nav__item> <a href=../../../home/sponsors/ class=md-nav__link> <span class=md-ellipsis> Sponsors </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2> <label class=md-nav__link for=__nav_2 id=__nav_2_label tabindex=0> <span class=md-ellipsis> Features </span> <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_2_label aria-expanded=false> <label class=md-nav__title for=__nav_2> <span class="md-nav__icon md-icon"></span> Features </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/arbitrary_types/ class=md-nav__link> <span class=md-ellipsis> Arbitrary Type Conversions </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_2> <div class="md-nav__link md-nav__container"> <a href=../../../features/binary_formats/ class="md-nav__link "> <span class=md-ellipsis> Binary Formats </span> </a> <label class="md-nav__link " for=__nav_2_2 id=__nav_2_2_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_2_label aria-expanded=false> <label class=md-nav__title for=__nav_2_2> <span class="md-nav__icon md-icon"></span> Binary Formats </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/binary_formats/bjdata/ class=md-nav__link> <span class=md-ellipsis> BJData </span> </a> </li> <li class=md-nav__item> <a href=../../../features/binary_formats/bson/ class=md-nav__link> <span class=md-ellipsis> BSON </span> </a> </li> <li class=md-nav__item> <a href=../../../features/binary_formats/cbor/ class=md-nav__link> <span class=md-ellipsis> CBOR </span> </a> </li> <li class=md-nav__item> <a href=../../../features/binary_formats/messagepack/ class=md-nav__link> <span class=md-ellipsis> MessagePack </span> </a> </li> <li class=md-nav__item> <a href=../../../features/binary_formats/ubjson/ class=md-nav__link> <span class=md-ellipsis> UBJSON </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../../features/binary_values/ class=md-nav__link> <span class=md-ellipsis> Binary Values </span> </a> </li> <li class=md-nav__item> <a href=../../../features/comments/ class=md-nav__link> <span class=md-ellipsis> Comments </span> </a> </li> <li class=md-nav__item> <a href=../../../features/trailing_commas/ class=md-nav__link> <span class=md-ellipsis> Trailing Commas </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_6> <div class="md-nav__link md-nav__container"> <a href=../../../features/element_access/ class="md-nav__link "> <span class=md-ellipsis> Element Access </span> </a> <label class="md-nav__link " for=__nav_2_6 id=__nav_2_6_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_6_label aria-expanded=false> <label class=md-nav__title for=__nav_2_6> <span class="md-nav__icon md-icon"></span> Element Access </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/element_access/unchecked_access/ class=md-nav__link> <span class=md-ellipsis> Unchecked access: operator[] </span> </a> </li> <li class=md-nav__item> <a href=../../../features/element_access/checked_access/ class=md-nav__link> <span class=md-ellipsis> Checked access: at </span> </a> </li> <li class=md-nav__item> <a href=../../../features/element_access/default_value/ class=md-nav__link> <span class=md-ellipsis> Access with default value: value </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../../features/iterators/ class=md-nav__link> <span class=md-ellipsis> Iterators </span> </a> </li> <li class=md-nav__item> <a href=../../../features/json_pointer/ class=md-nav__link> <span class=md-ellipsis> JSON Pointer </span> </a> </li> <li class=md-nav__item> <a href=../../../features/json_patch/ class=md-nav__link> <span class=md-ellipsis> JSON Patch and Diff </span> </a> </li> <li class=md-nav__item> <a href=../../../features/merge_patch/ class=md-nav__link> <span class=md-ellipsis> JSON Merge Patch </span> </a> </li> <li class=md-nav__item> <a href=../../../features/modules/ class=md-nav__link> <span class=md-ellipsis> Modules </span> </a> </li> <li class=md-nav__item> <a href=../../../features/namespace/ class=md-nav__link> <span class=md-ellipsis> nlohmann Namespace </span> </a> </li> <li class=md-nav__item> <a href=../../../features/object_order/ class=md-nav__link> <span class=md-ellipsis> Object Order </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_14> <div class="md-nav__link md-nav__container"> <a href=../../../features/parsing/ class="md-nav__link "> <span class=md-ellipsis> Parsing </span> </a> <label class="md-nav__link " for=__nav_2_14 id=__nav_2_14_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_14_label aria-expanded=false> <label class=md-nav__title for=__nav_2_14> <span class="md-nav__icon md-icon"></span> Parsing </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/parsing/json_lines/ class=md-nav__link> <span class=md-ellipsis> JSON Lines </span> </a> </li> <li class=md-nav__item> <a href=../../../features/parsing/parse_exceptions/ class=md-nav__link> <span class=md-ellipsis> Parsing and Exceptions </span> </a> </li> <li class=md-nav__item> <a href=../../../features/parsing/parser_callbacks/ class=md-nav__link> <span class=md-ellipsis> Parser Callbacks </span> </a> </li> <li class=md-nav__item> <a href=../../../features/parsing/sax_interface/ class=md-nav__link> <span class=md-ellipsis> SAX Interface </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../../features/assertions/ class=md-nav__link> <span class=md-ellipsis> Runtime Assertions </span> </a> </li> <li class=md-nav__item> <a href=../../../features/enum_conversion/ class=md-nav__link> <span class=md-ellipsis> Specializing enum conversion </span> </a> </li> <li class=md-nav__item> <a href=../../../features/macros/ class=md-nav__link> <span class=md-ellipsis> Supported Macros </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_18> <div class="md-nav__link md-nav__container"> <a href=../../../features/types/ class="md-nav__link "> <span class=md-ellipsis> Types </span> </a> <label class="md-nav__link " for=__nav_2_18 id=__nav_2_18_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_18_label aria-expanded=false> <label class=md-nav__title for=__nav_2_18> <span class="md-nav__icon md-icon"></span> Types </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/types/number_handling/ class=md-nav__link> <span class=md-ellipsis> Number Handling </span> </a> </li> </ul> </nav> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_3> <div class="md-nav__link md-nav__container"> <a href=../../../integration/ class="md-nav__link "> <span class=md-ellipsis> Integration </span> </a> <label class="md-nav__link " for=__nav_3 id=__nav_3_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_3_label aria-expanded=false> <label class=md-nav__title for=__nav_3> <span class="md-nav__icon md-icon"></span> Integration </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../integration/migration_guide/ class=md-nav__link> <span class=md-ellipsis> Migration Guide </span> </a> </li> <li class=md-nav__item> <a href=../../../integration/cmake/ class=md-nav__link> <span class=md-ellipsis> CMake </span> </a> </li> <li class=md-nav__item> <a href=../../../integration/package_managers/ class=md-nav__link> <span class=md-ellipsis> Package Managers </span> </a> </li> <li class=md-nav__item> <a href=../../../integration/pkg-config/ class=md-nav__link> <span class=md-ellipsis> Pkg-config </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--active md-nav__item--section md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4 checked> <label class=md-nav__link for=__nav_4 id=__nav_4_label tabindex> <span class=md-ellipsis> API Documentation </span> <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_4_label aria-expanded=true> <label class=md-nav__title for=__nav_4> <span class="md-nav__icon md-icon"></span> API Documentation </label> <ul class=md-nav__list data-md-scrollfix> <li class="md-nav__item md-nav__item--active md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_1 checked> <div class="md-nav__link md-nav__container"> <a href=../ class="md-nav__link "> <span class=md-ellipsis> basic_json </span> </a> <label class="md-nav__link " for=__nav_4_1 id=__nav_4_1_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_1_label aria-expanded=true> <label class=md-nav__title for=__nav_4_1> <span class="md-nav__icon md-icon"></span> basic_json </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../basic_json/ class=md-nav__link> <span class=md-ellipsis> (Constructor) </span> </a> </li> <li class=md-nav__item> <a href=../~basic_json/ class=md-nav__link> <span class=md-ellipsis> (Destructor) </span> </a> </li> <li class=md-nav__item> <a href=../accept/ class=md-nav__link> <span class=md-ellipsis> accept </span> </a> </li> <li class=md-nav__item> <a href=../array/ class=md-nav__link> <span class=md-ellipsis> array </span> </a> </li> <li class=md-nav__item> <a href=../array_t/ class=md-nav__link> <span class=md-ellipsis> array_t </span> </a> </li> <li class=md-nav__item> <a href=../at/ class=md-nav__link> <span class=md-ellipsis> at </span> </a> </li> <li class=md-nav__item> <a href=../back/ class=md-nav__link> <span class=md-ellipsis> back </span> </a> </li> <li class=md-nav__item> <a href=../begin/ class=md-nav__link> <span class=md-ellipsis> begin </span> </a> </li> <li class=md-nav__item> <a href=../binary/ class=md-nav__link> <span class=md-ellipsis> binary </span> </a> </li> <li class=md-nav__item> <a href=../binary_t/ class=md-nav__link> <span class=md-ellipsis> binary_t </span> </a> </li> <li class=md-nav__item> <a href=../boolean_t/ class=md-nav__link> <span class=md-ellipsis> boolean_t </span> </a> </li> <li class=md-nav__item> <a href=../cbegin/ class=md-nav__link> <span class=md-ellipsis> cbegin </span> </a> </li> <li class=md-nav__item> <a href=../cbor_tag_handler_t/ class=md-nav__link> <span class=md-ellipsis> cbor_tag_handler_t </span> </a> </li> <li class=md-nav__item> <a href=../cend/ class=md-nav__link> <span class=md-ellipsis> cend </span> </a> </li> <li class=md-nav__item> <a href=../clear/ class=md-nav__link> <span class=md-ellipsis> clear </span> </a> </li> <li class=md-nav__item> <a href=../contains/ class=md-nav__link> <span class=md-ellipsis> contains </span> </a> </li> <li class=md-nav__item> <a href=../count/ class=md-nav__link> <span class=md-ellipsis> count </span> </a> </li> <li class=md-nav__item> <a href=../crbegin/ class=md-nav__link> <span class=md-ellipsis> crbegin </span> </a> </li> <li class=md-nav__item> <a href=../crend/ class=md-nav__link> <span class=md-ellipsis> crend </span> </a> </li> <li class=md-nav__item> <a href=../default_object_comparator_t/ class=md-nav__link> <span class=md-ellipsis> default_object_comparator_t </span> </a> </li> <li class=md-nav__item> <a href=../diff/ class=md-nav__link> <span class=md-ellipsis> diff </span> </a> </li> <li class=md-nav__item> <a href=../dump/ class=md-nav__link> <span class=md-ellipsis> dump </span> </a> </li> <li class=md-nav__item> <a href=../emplace/ class=md-nav__link> <span class=md-ellipsis> emplace </span> </a> </li> <li class=md-nav__item> <a href=../emplace_back/ class=md-nav__link> <span class=md-ellipsis> emplace_back </span> </a> </li> <li class=md-nav__item> <a href=../empty/ class=md-nav__link> <span class=md-ellipsis> empty </span> </a> </li> <li class=md-nav__item> <a href=../end/ class=md-nav__link> <span class=md-ellipsis> end </span> </a> </li> <li class=md-nav__item> <a href=../end_pos/ class=md-nav__link> <span class=md-ellipsis> end_pos </span> </a> </li> <li class=md-nav__item> <a href=../erase/ class=md-nav__link> <span class=md-ellipsis> erase </span> </a> </li> <li class=md-nav__item> <a href=../error_handler_t/ class=md-nav__link> <span class=md-ellipsis> error_handler_t </span> </a> </li> <li class=md-nav__item> <a href=../exception/ class=md-nav__link> <span class=md-ellipsis> exception </span> </a> </li> <li class=md-nav__item> <a href=../find/ class=md-nav__link> <span class=md-ellipsis> find </span> </a> </li> <li class=md-nav__item> <a href=../flatten/ class=md-nav__link> <span class=md-ellipsis> flatten </span> </a> </li> <li class=md-nav__item> <a href=../from_bjdata/ class=md-nav__link> <span class=md-ellipsis> from_bjdata </span> </a> </li> <li class=md-nav__item> <a href=../from_bson/ class=md-nav__link> <span class=md-ellipsis> from_bson </span> </a> </li> <li class=md-nav__item> <a href=../from_cbor/ class=md-nav__link> <span class=md-ellipsis> from_cbor </span> </a> </li> <li class=md-nav__item> <a href=../from_msgpack/ class=md-nav__link> <span class=md-ellipsis> from_msgpack </span> </a> </li> <li class=md-nav__item> <a href=../from_ubjson/ class=md-nav__link> <span class=md-ellipsis> from_ubjson </span> </a> </li> <li class=md-nav__item> <a href=../front/ class=md-nav__link> <span class=md-ellipsis> front </span> </a> </li> <li class=md-nav__item> <a href=../get/ class=md-nav__link> <span class=md-ellipsis> get </span> </a> </li> <li class=md-nav__item> <a href=../get_allocator/ class=md-nav__link> <span class=md-ellipsis> get_allocator </span> </a> </li> <li class=md-nav__item> <a href=../get_binary/ class=md-nav__link> <span class=md-ellipsis> get_binary </span> </a> </li> <li class=md-nav__item> <a href=../get_ptr/ class=md-nav__link> <span class=md-ellipsis> get_ptr </span> </a> </li> <li class=md-nav__item> <a href=../get_ref/ class=md-nav__link> <span class=md-ellipsis> get_ref </span> </a> </li> <li class=md-nav__item> <a href=../get_to/ class=md-nav__link> <span class=md-ellipsis> get_to </span> </a> </li> <li class=md-nav__item> <a href=../std_hash/ class=md-nav__link> <span class=md-ellipsis> std::hash&lt;basic_json&gt; </span> </a> </li> <li class=md-nav__item> <a href=../input_format_t/ class=md-nav__link> <span class=md-ellipsis> input_format_t </span> </a> </li> <li class=md-nav__item> <a href=../insert/ class=md-nav__link> <span class=md-ellipsis> insert </span> </a> </li> <li class=md-nav__item> <a href=../invalid_iterator/ class=md-nav__link> <span class=md-ellipsis> invalid_iterator </span> </a> </li> <li class=md-nav__item> <a href=../is_array/ class=md-nav__link> <span class=md-ellipsis> is_array </span> </a> </li> <li class=md-nav__item> <a href=../is_binary/ class=md-nav__link> <span class=md-ellipsis> is_binary </span> </a> </li> <li class=md-nav__item> <a href=../is_boolean/ class=md-nav__link> <span class=md-ellipsis> is_boolean </span> </a> </li> <li class=md-nav__item> <a href=../is_discarded/ class=md-nav__link> <span class=md-ellipsis> is_discarded </span> </a> </li> <li class=md-nav__item> <a href=../is_null/ class=md-nav__link> <span class=md-ellipsis> is_null </span> </a> </li> <li class=md-nav__item> <a href=../is_number/ class=md-nav__link> <span class=md-ellipsis> is_number </span> </a> </li> <li class=md-nav__item> <a href=../is_number_float/ class=md-nav__link> <span class=md-ellipsis> is_number_float </span> </a> </li> <li class=md-nav__item> <a href=../is_number_integer/ class=md-nav__link> <span class=md-ellipsis> is_number_integer </span> </a> </li> <li class=md-nav__item> <a href=../is_number_unsigned/ class=md-nav__link> <span class=md-ellipsis> is_number_unsigned </span> </a> </li> <li class=md-nav__item> <a href=../is_object/ class=md-nav__link> <span class=md-ellipsis> is_object </span> </a> </li> <li class=md-nav__item> <a href=../is_primitive/ class=md-nav__link> <span class=md-ellipsis> is_primitive </span> </a> </li> <li class=md-nav__item> <a href=../is_string/ class=md-nav__link> <span class=md-ellipsis> is_string </span> </a> </li> <li class=md-nav__item> <a href=../is_structured/ class=md-nav__link> <span class=md-ellipsis> is_structured </span> </a> </li> <li class=md-nav__item> <a href=../items/ class=md-nav__link> <span class=md-ellipsis> items </span> </a> </li> <li class=md-nav__item> <a href=../json_base_class_t/ class=md-nav__link> <span class=md-ellipsis> json_base_class_t </span> </a> </li> <li class=md-nav__item> <a href=../json_serializer/ class=md-nav__link> <span class=md-ellipsis> json_serializer </span> </a> </li> <li class=md-nav__item> <a href=../max_size/ class=md-nav__link> <span class=md-ellipsis> max_size </span> </a> </li> <li class=md-nav__item> <a href=../meta/ class=md-nav__link> <span class=md-ellipsis> meta </span> </a> </li> <li class=md-nav__item> <a href=../merge_patch/ class=md-nav__link> <span class=md-ellipsis> merge_patch </span> </a> </li> <li class=md-nav__item> <a href=../number_float_t/ class=md-nav__link> <span class=md-ellipsis> number_float_t </span> </a> </li> <li class=md-nav__item> <a href=../number_integer_t/ class=md-nav__link> <span class=md-ellipsis> number_integer_t </span> </a> </li> <li class=md-nav__item> <a href=../number_unsigned_t/ class=md-nav__link> <span class=md-ellipsis> number_unsigned_t </span> </a> </li> <li class=md-nav__item> <a href=../object/ class=md-nav__link> <span class=md-ellipsis> object </span> </a> </li> <li class=md-nav__item> <a href=../object_comparator_t/ class=md-nav__link> <span class=md-ellipsis> object_comparator_t </span> </a> </li> <li class=md-nav__item> <a href=../object_t/ class=md-nav__link> <span class=md-ellipsis> object_t </span> </a> </li> <li class=md-nav__item> <a href=../operator_ValueType/ class=md-nav__link> <span class=md-ellipsis> operator ValueType </span> </a> </li> <li class=md-nav__item> <a href=../operator_value_t/ class=md-nav__link> <span class=md-ellipsis> operator value_t </span> </a> </li> <li class=md-nav__item> <a href=../operator%5B%5D/ class=md-nav__link> <span class=md-ellipsis> operator[] </span> </a> </li> <li class=md-nav__item> <a href=../operator%3D/ class=md-nav__link> <span class=md-ellipsis> operator= </span> </a> </li> <li class=md-nav__item> <a href=../operator%2B%3D/ class=md-nav__link> <span class=md-ellipsis> operator+= </span> </a> </li> <li class=md-nav__item> <a href=../operator_eq/ class=md-nav__link> <span class=md-ellipsis> operator== </span> </a> </li> <li class=md-nav__item> <a href=../operator_ne/ class=md-nav__link> <span class=md-ellipsis> operator!= </span> </a> </li> <li class=md-nav__item> <a href=../operator_lt/ class=md-nav__link> <span class=md-ellipsis> operator< </span> </a> </li> <li class=md-nav__item> <a href=../operator_gt/ class=md-nav__link> <span class=md-ellipsis> operator> </span> </a> </li> <li class=md-nav__item> <a href=../operator_le/ class=md-nav__link> <span class=md-ellipsis> operator<= </span> </a> </li> <li class=md-nav__item> <a href=../operator_ge/ class=md-nav__link> <span class=md-ellipsis> operator>= </span> </a> </li> <li class=md-nav__item> <a href=../operator_spaceship/ class=md-nav__link> <span class=md-ellipsis> operator<=> </span> </a> </li> <li class=md-nav__item> <a href=../out_of_range/ class=md-nav__link> <span class=md-ellipsis> out_of_range </span> </a> </li> <li class=md-nav__item> <a href=../other_error/ class=md-nav__link> <span class=md-ellipsis> other_error </span> </a> </li> <li class=md-nav__item> <a href=../parse/ class=md-nav__link> <span class=md-ellipsis> parse </span> </a> </li> <li class=md-nav__item> <a href=../parse_error/ class=md-nav__link> <span class=md-ellipsis> parse_error </span> </a> </li> <li class=md-nav__item> <a href=../parse_event_t/ class=md-nav__link> <span class=md-ellipsis> parse_event_t </span> </a> </li> <li class=md-nav__item> <a href=../parser_callback_t/ class=md-nav__link> <span class=md-ellipsis> parser_callback_t </span> </a> </li> <li class=md-nav__item> <a href=../patch/ class=md-nav__link> <span class=md-ellipsis> patch </span> </a> </li> <li class=md-nav__item> <a href=../patch_inplace/ class=md-nav__link> <span class=md-ellipsis> patch_inplace </span> </a> </li> <li class=md-nav__item> <a href=../push_back/ class=md-nav__link> <span class=md-ellipsis> push_back </span> </a> </li> <li class=md-nav__item> <a href=../rbegin/ class=md-nav__link> <span class=md-ellipsis> rbegin </span> </a> </li> <li class=md-nav__item> <a href=../rend/ class=md-nav__link> <span class=md-ellipsis> rend </span> </a> </li> <li class=md-nav__item> <a href=../sax_parse/ class=md-nav__link> <span class=md-ellipsis> sax_parse </span> </a> </li> <li class=md-nav__item> <a href=../size/ class=md-nav__link> <span class=md-ellipsis> size </span> </a> </li> <li class=md-nav__item> <a href=../start_pos/ class=md-nav__link> <span class=md-ellipsis> start_pos </span> </a> </li> <li class=md-nav__item> <a href=../string_t/ class=md-nav__link> <span class=md-ellipsis> string_t </span> </a> </li> <li class=md-nav__item> <a href=../swap/ class=md-nav__link> <span class=md-ellipsis> swap </span> </a> </li> <li class=md-nav__item> <a href=../std_swap/ class=md-nav__link> <span class=md-ellipsis> std::swap&lt;basic_json&gt; </span> </a> </li> <li class="md-nav__item md-nav__item--active"> <input class="md-nav__toggle md-toggle" type=checkbox id=__toc> <label class="md-nav__link md-nav__link--active" for=__toc> <span class=md-ellipsis> to_bjdata </span> <span class="md-nav__icon md-icon"></span> </label> <a href=./ class="md-nav__link md-nav__link--active"> <span class=md-ellipsis> to_bjdata </span> </a> <nav class="md-nav md-nav--secondary" aria-label="Table of contents"> <label class=md-nav__title for=__toc> <span class="md-nav__icon md-icon"></span> Table of contents </label> <ul class=md-nav__list data-md-component=toc data-md-scrollfix> <li class=md-nav__item> <a href=#parameters class=md-nav__link> <span class=md-ellipsis> Parameters </span> </a> </li> <li class=md-nav__item> <a href=#return-value class=md-nav__link> <span class=md-ellipsis> Return value </span> </a> </li> <li class=md-nav__item> <a href=#exception-safety class=md-nav__link> <span class=md-ellipsis> Exception safety </span> </a> </li> <li class=md-nav__item> <a href=#complexity class=md-nav__link> <span class=md-ellipsis> Complexity </span> </a> </li> <li class=md-nav__item> <a href=#examples class=md-nav__link> <span class=md-ellipsis> Examples </span> </a> </li> <li class=md-nav__item> <a href=#version-history class=md-nav__link> <span class=md-ellipsis> Version history </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../to_bson/ class=md-nav__link> <span class=md-ellipsis> to_bson </span> </a> </li> <li class=md-nav__item> <a href=../to_cbor/ class=md-nav__link> <span class=md-ellipsis> to_cbor </span> </a> </li> <li class=md-nav__item> <a href=../to_msgpack/ class=md-nav__link> <span class=md-ellipsis> to_msgpack </span> </a> </li> <li class=md-nav__item> <a href=../to_string/ class=md-nav__link> <span class=md-ellipsis> to_string </span> </a> </li> <li class=md-nav__item> <a href=../to_ubjson/ class=md-nav__link> <span class=md-ellipsis> to_ubjson </span> </a> </li> <li class=md-nav__item> <a href=../type/ class=md-nav__link> <span class=md-ellipsis> type </span> </a> </li> <li class=md-nav__item> <a href=../type_error/ class=md-nav__link> <span class=md-ellipsis> type_error </span> </a> </li> <li class=md-nav__item> <a href=../type_name/ class=md-nav__link> <span class=md-ellipsis> type_name </span> </a> </li> <li class=md-nav__item> <a href=../unflatten/ class=md-nav__link> <span class=md-ellipsis> unflatten </span> </a> </li> <li class=md-nav__item> <a href=../update/ class=md-nav__link> <span class=md-ellipsis> update </span> </a> </li> <li class=md-nav__item> <a href=../value/ class=md-nav__link> <span class=md-ellipsis> value </span> </a> </li> <li class=md-nav__item> <a href=../value_t/ class=md-nav__link> <span class=md-ellipsis> value_t </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_2> <div class="md-nav__link md-nav__container"> <a href=../../byte_container_with_subtype/ class="md-nav__link "> <span class=md-ellipsis> byte_container_with_subtype </span> </a> <label class="md-nav__link " for=__nav_4_2 id=__nav_4_2_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_2_label aria-expanded=false> <label class=md-nav__title for=__nav_4_2> <span class="md-nav__icon md-icon"></span> byte_container_with_subtype </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../byte_container_with_subtype/byte_container_with_subtype/ class=md-nav__link> <span class=md-ellipsis> (constructor) </span> </a> </li> <li class=md-nav__item> <a href=../../byte_container_with_subtype/clear_subtype/ class=md-nav__link> <span class=md-ellipsis> clear_subtype </span> </a> </li> <li class=md-nav__item> <a href=../../byte_container_with_subtype/has_subtype/ class=md-nav__link> <span class=md-ellipsis> has_subtype </span> </a> </li> <li class=md-nav__item> <a href=../../byte_container_with_subtype/set_subtype/ class=md-nav__link> <span class=md-ellipsis> set_subtype </span> </a> </li> <li class=md-nav__item> <a href=../../byte_container_with_subtype/subtype/ class=md-nav__link> <span class=md-ellipsis> subtype </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_3> <div class="md-nav__link md-nav__container"> <a href=../../adl_serializer/ class="md-nav__link "> <span class=md-ellipsis> adl_serializer </span> </a> <label class="md-nav__link " for=__nav_4_3 id=__nav_4_3_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_3_label aria-expanded=false> <label class=md-nav__title for=__nav_4_3> <span class="md-nav__icon md-icon"></span> adl_serializer </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../adl_serializer/from_json/ class=md-nav__link> <span class=md-ellipsis> from_json </span> </a> </li> <li class=md-nav__item> <a href=../../adl_serializer/to_json/ class=md-nav__link> <span class=md-ellipsis> to_json </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../json/ class=md-nav__link> <span class=md-ellipsis> json </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_5> <div class="md-nav__link md-nav__container"> <a href=../../json_pointer/ class="md-nav__link "> <span class=md-ellipsis> json_pointer </span> </a> <label class="md-nav__link " for=__nav_4_5 id=__nav_4_5_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_5_label aria-expanded=false> <label class=md-nav__title for=__nav_4_5> <span class="md-nav__icon md-icon"></span> json_pointer </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../json_pointer/json_pointer/ class=md-nav__link> <span class=md-ellipsis> (Constructor) </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/back/ class=md-nav__link> <span class=md-ellipsis> back </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/empty/ class=md-nav__link> <span class=md-ellipsis> empty </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/front/ class=md-nav__link> <span class=md-ellipsis> front </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_string_t/ class=md-nav__link> <span class=md-ellipsis> operator string_t </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_eq/ class=md-nav__link> <span class=md-ellipsis> operator== </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_ne/ class=md-nav__link> <span class=md-ellipsis> operator!= </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_slash/ class=md-nav__link> <span class=md-ellipsis> operator/ </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_slasheq/ class=md-nav__link> <span class=md-ellipsis> operator/= </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/parent_pointer/ class=md-nav__link> <span class=md-ellipsis> parent_pointer </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/pop_back/ class=md-nav__link> <span class=md-ellipsis> pop_back </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/pop_front/ class=md-nav__link> <span class=md-ellipsis> pop_front </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/push_back/ class=md-nav__link> <span class=md-ellipsis> push_back </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/push_front/ class=md-nav__link> <span class=md-ellipsis> push_front </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/string_t/ class=md-nav__link> <span class=md-ellipsis> string_t </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/to_string/ class=md-nav__link> <span class=md-ellipsis> to_string </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_6> <div class="md-nav__link md-nav__container"> <a href=../../json_sax/ class="md-nav__link "> <span class=md-ellipsis> json_sax </span> </a> <label class="md-nav__link " for=__nav_4_6 id=__nav_4_6_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_6_label aria-expanded=false> <label class=md-nav__title for=__nav_4_6> <span class="md-nav__icon md-icon"></span> json_sax </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../json_sax/binary/ class=md-nav__link> <span class=md-ellipsis> binary </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/boolean/ class=md-nav__link> <span class=md-ellipsis> boolean </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/end_array/ class=md-nav__link> <span class=md-ellipsis> end_array </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/end_object/ class=md-nav__link> <span class=md-ellipsis> end_object </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/key/ class=md-nav__link> <span class=md-ellipsis> key </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/null/ class=md-nav__link> <span class=md-ellipsis> null </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/number_float/ class=md-nav__link> <span class=md-ellipsis> number_float </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/number_integer/ class=md-nav__link> <span class=md-ellipsis> number_integer </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/number_unsigned/ class=md-nav__link> <span class=md-ellipsis> number_unsigned </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/parse_error/ class=md-nav__link> <span class=md-ellipsis> parse_error </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/start_array/ class=md-nav__link> <span class=md-ellipsis> start_array </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/start_object/ class=md-nav__link> <span class=md-ellipsis> start_object </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/string/ class=md-nav__link> <span class=md-ellipsis> string </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../operator_ltlt/ class=md-nav__link> <span class=md-ellipsis> operator<<(basic_json), operator<<(json_pointer) </span> </a> </li> <li class=md-nav__item> <a href=../../operator_gtgt/ class=md-nav__link> <span class=md-ellipsis> operator>>(basic_json) </span> </a> </li> <li class=md-nav__item> <a href=../../operator_literal_json/ class=md-nav__link> <span class=md-ellipsis> operator""_json </span> </a> </li> <li class=md-nav__item> <a href=../../operator_literal_json_pointer/ class=md-nav__link> <span class=md-ellipsis> operator""_json_pointer </span> </a> </li> <li class=md-nav__item> <a href=../../ordered_json/ class=md-nav__link> <span class=md-ellipsis> ordered_json </span> </a> </li> <li class=md-nav__item> <a href=../../ordered_map/ class=md-nav__link> <span class=md-ellipsis> ordered_map </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_13> <div class="md-nav__link md-nav__container"> <a href=../../macros/ class="md-nav__link "> <span class=md-ellipsis> macros </span> </a> <label class="md-nav__link " for=__nav_4_13 id=__nav_4_13_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_13_label aria-expanded=false> <label class=md-nav__title for=__nav_4_13> <span class="md-nav__icon md-icon"></span> macros </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../macros/json_assert/ class=md-nav__link> <span class=md-ellipsis> JSON_ASSERT </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_brace_init_copy_semantics/ class=md-nav__link> <span class=md-ellipsis> JSON_BRACE_INIT_COPY_SEMANTICS </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_throw_user/ class=md-nav__link> <span class=md-ellipsis> JSON_CATCH_USER, JSON_THROW_USER, JSON_TRY_USER </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_diagnostics/ class=md-nav__link> <span class=md-ellipsis> JSON_DIAGNOSTICS </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_diagnostic_positions/ class=md-nav__link> <span class=md-ellipsis> JSON_DIAGNOSTIC_POSITIONS </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_disable_enum_serialization/ class=md-nav__link> <span class=md-ellipsis> JSON_DISABLE_ENUM_SERIALIZATION </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_has_cpp_11/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_CPP_11, JSON_HAS_CPP_14, JSON_HAS_CPP_17, JSON_HAS_CPP_20 </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_has_filesystem/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_EXPERIMENTAL_FILESYSTEM, JSON_HAS_FILESYSTEM </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_has_ranges/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_RANGES </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_has_static_rtti/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_STATIC_RTTI </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_has_three_way_comparison/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_THREE_WAY_COMPARISON </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_noexception/ class=md-nav__link> <span class=md-ellipsis> JSON_NOEXCEPTION </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_no_io/ class=md-nav__link> <span class=md-ellipsis> JSON_NO_IO </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_skip_library_version_check/ class=md-nav__link> <span class=md-ellipsis> JSON_SKIP_LIBRARY_VERSION_CHECK </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_skip_unsupported_compiler_check/ class=md-nav__link> <span class=md-ellipsis> JSON_SKIP_UNSUPPORTED_COMPILER_CHECK </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_use_global_udls/ class=md-nav__link> <span class=md-ellipsis> JSON_USE_GLOBAL_UDLS </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_use_implicit_conversions/ class=md-nav__link> <span class=md-ellipsis> JSON_USE_IMPLICIT_CONVERSIONS </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_use_legacy_discarded_value_comparison/ class=md-nav__link> <span class=md-ellipsis> JSON_USE_LEGACY_DISCARDED_VALUE_COMPARISON </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_define_derived_type/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_ONLY_SERIALIZE, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_define_type_intrusive/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_TYPE_INTRUSIVE, NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_TYPE_INTRUSIVE_ONLY_SERIALIZE </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_define_type_non_intrusive/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_define_type_with_names/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_TYPE_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_namespace/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_NAMESPACE </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_namespace_begin/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_NAMESPACE_BEGIN, NLOHMANN_JSON_NAMESPACE_END </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_namespace_no_version/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_NAMESPACE_NO_VERSION </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_serialize_enum/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_SERIALIZE_ENUM </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_serialize_enum_strict/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_SERIALIZE_ENUM_STRICT </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_version_major/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_VERSION_MAJOR, NLOHMANN_JSON_VERSION_MINOR, NLOHMANN_JSON_VERSION_PATCH </span> </a> </li> </ul> </nav> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_5> <div class="md-nav__link md-nav__container"> <a href=../../../community/ class="md-nav__link "> <span class=md-ellipsis> Community </span> </a> <label class="md-nav__link " for=__nav_5 id=__nav_5_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_5_label aria-expanded=false> <label class=md-nav__title for=__nav_5> <span class="md-nav__icon md-icon"></span> Community </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../community/code_of_conduct/ class=md-nav__link> <span class=md-ellipsis> Code of Conduct </span> </a> </li> <li class=md-nav__item> <a href=../../../community/contribution_guidelines/ class=md-nav__link> <span class=md-ellipsis> Contribution Guidelines </span> </a> </li> <li class=md-nav__item> <a href=../../../community/quality_assurance/ class=md-nav__link> <span class=md-ellipsis> Quality assurance </span> </a> </li> <li class=md-nav__item> <a href=../../../community/governance/ class=md-nav__link> <span class=md-ellipsis> Governance </span> </a> </li> <li class=md-nav__item> <a href=../../../community/security_policy/ class=md-nav__link> <span class=md-ellipsis> Security Policy </span> </a> </li> </ul> </nav> </li> </ul> </nav> </div> </div> </div> <div class="md-sidebar md-sidebar--secondary" data-md-component=sidebar data-md-type=toc> <div class=md-sidebar__scrollwrap> <div class=md-sidebar__inner> <nav class="md-nav md-nav--secondary" aria-label="Table of contents"> <label class=md-nav__title for=__toc> <span class="md-nav__icon md-icon"></span> Table of contents </label> <ul class=md-nav__list data-md-component=toc data-md-scrollfix> <li class=md-nav__item> <a href=#parameters class=md-nav__link> <span class=md-ellipsis> Parameters </span> </a> </li> <li class=md-nav__item> <a href=#return-value class=md-nav__link> <span class=md-ellipsis> Return value </span> </a> </li> <li class=md-nav__item> <a href=#exception-safety class=md-nav__link> <span class=md-ellipsis> Exception safety </span> </a> </li> <li class=md-nav__item> <a href=#complexity class=md-nav__link> <span class=md-ellipsis> Complexity </span> </a> </li> <li class=md-nav__item> <a href=#examples class=md-nav__link> <span class=md-ellipsis> Examples </span> </a> </li> <li class=md-nav__item> <a href=#version-history class=md-nav__link> <span class=md-ellipsis> Version history </span> </a> </li> </ul> </nav> </div> </div> </div> <div class=md-content data-md-component=content> <article class="md-content__inner md-typeset"> <a href="https://github.com/nlohmann/json/edit/develop/docs/mkdocs/docs/api/basic_json/to_bjdata.md" title="Edit this page" class="md-content__button md-icon" rel="edit"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M10 20H6V4h7v5h5v3.1l2-2V8l-6-6H6c-1.1 0-2 .9-2 2v16c0 1.1.9 2 2 2h4zm10.2-7c.1 0 .3.1.4.2l1.3 1.3c.2.2.2.6 0 .8l-1 1-2.1-2.1 1-1c.1-.1.2-.2.4-.2m0 3.9L14.1 23H12v-2.1l6.1-6.1z"/></svg> </a> <a href="https://github.com/nlohmann/json/raw/develop/docs/mkdocs/docs/api/basic_json/to_bjdata.md" title="View source of this page" class="md-content__button md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M17 18c.56 0 1 .44 1 1s-.44 1-1 1-1-.44-1-1 .44-1 1-1m0-3c-2.73 0-5.06 1.66-6 4 .94 2.34 3.27 4 6 4s5.06-1.66 6-4c-.94-2.34-3.27-4-6-4m0 6.5a2.5 2.5 0 0 1-2.5-2.5 2.5 2.5 0 0 1 2.5-2.5 2.5 2.5 0 0 1 2.5 2.5 2.5 2.5 0 0 1-2.5 2.5M9.27 20H6V4h7v5h5v4.07c.7.08 1.36.25 2 .49V8l-6-6H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h4.5a8.2 8.2 0 0 1-1.23-2"/></svg> </a> <h1 id=nlohmannbasic_jsonto_bjdata><small>nlohmann::basic_json::</small>to_bjdata<a class=headerlink href=#nlohmannbasic_jsonto_bjdata title="Permanent link">&para;</a></h1> <div class=highlight><pre><span></span><code><span class=c1>// (1)</span>
+<!doctype html><html lang=en class=no-js> <head><meta charset=utf-8><meta name=viewport content="width=device-width,initial-scale=1"><meta name=author content="Niels Lohmann"><link href="https://json.nlohmann.me/api/basic_json/to_bjdata/" rel="canonical"><link href=../std_swap/ rel=prev><link href=../to_bson/ rel=next><link rel=icon href=../../../assets/images/favicon.png><meta name=generator content="mkdocs-1.6.1, mkdocs-material-9.7.6"><title>to_bjdata - JSON for Modern C++</title><link rel=stylesheet href=../../../assets/stylesheets/main.484c7ddc.min.css><link rel=stylesheet href=../../../assets/stylesheets/palette.ab4e12ef.min.css><link rel="stylesheet" href="../../../assets/external/fonts.googleapis.com/css.61a430c9.css"><style>:root{--md-text-font:"Roboto";--md-code-font:"JetBrains Mono"}</style><link rel=stylesheet href=../../../css/custom.css><script>__md_scope=new URL("../../..",location),__md_hash=e=>[...e].reduce(((e,_)=>(e<<5)-e+_.charCodeAt(0)),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script></head> <body dir=ltr data-md-color-scheme=default data-md-color-primary=indigo data-md-color-accent=indigo> <input class=md-toggle data-md-toggle=drawer type=checkbox id=__drawer autocomplete=off> <input class=md-toggle data-md-toggle=search type=checkbox id=__search autocomplete=off> <label class=md-overlay for=__drawer></label> <div data-md-component=skip> <a href=#nlohmannbasic_jsonto_bjdata class=md-skip> Skip to content </a> </div> <div data-md-component=announce> </div> <header class=md-header data-md-component=header> <nav class="md-header__inner md-grid" aria-label=Header> <a href=../../.. title="JSON for Modern C++" class="md-header__button md-logo" aria-label="JSON for Modern C++" data-md-component=logo> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54"/></svg> </a> <label class="md-header__button md-icon" for=__drawer> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M3 6h18v2H3zm0 5h18v2H3zm0 5h18v2H3z"/></svg> </label> <div class=md-header__title data-md-component=header-title> <div class=md-header__ellipsis> <div class=md-header__topic> <span class=md-ellipsis> JSON for Modern C++ </span> </div> <div class=md-header__topic data-md-component=header-topic> <span class=md-ellipsis> to_bjdata </span> </div> </div> </div> <form class=md-header__option data-md-component=palette> <input class=md-option data-md-color-media="(prefers-color-scheme: light)" data-md-color-scheme=default data-md-color-primary=indigo data-md-color-accent=indigo aria-label="Switch to dark mode" type=radio name=__palette id=__palette_0> <label class="md-header__button md-icon" title="Switch to dark mode" for=__palette_1 hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a4 4 0 0 0-4 4 4 4 0 0 0 4 4 4 4 0 0 0 4-4 4 4 0 0 0-4-4m0 10a6 6 0 0 1-6-6 6 6 0 0 1 6-6 6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12z"/></svg> </label> <input class=md-option data-md-color-media="(prefers-color-scheme: dark)" data-md-color-scheme=slate data-md-color-primary=indigo data-md-color-accent=indigo aria-label="Switch to light mode" type=radio name=__palette id=__palette_1> <label class="md-header__button md-icon" title="Switch to light mode" for=__palette_0 hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 18c-.89 0-1.74-.2-2.5-.55C11.56 16.5 13 14.42 13 12s-1.44-4.5-3.5-5.45C10.26 6.2 11.11 6 12 6a6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12z"/></svg> </label> </form> <script>var palette=__md_get("__palette");if(palette&&palette.color){if("(prefers-color-scheme)"===palette.color.media){var media=matchMedia("(prefers-color-scheme: light)"),input=document.querySelector(media.matches?"[data-md-color-media='(prefers-color-scheme: light)']":"[data-md-color-media='(prefers-color-scheme: dark)']");palette.color.media=input.getAttribute("data-md-color-media"),palette.color.scheme=input.getAttribute("data-md-color-scheme"),palette.color.primary=input.getAttribute("data-md-color-primary"),palette.color.accent=input.getAttribute("data-md-color-accent")}for(var[key,value]of Object.entries(palette.color))document.body.setAttribute("data-md-color-"+key,value)}</script> <label class="md-header__button md-icon" for=__search> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg> </label> <div class=md-search data-md-component=search role=dialog> <label class=md-search__overlay for=__search></label> <div class=md-search__inner role=search> <form class=md-search__form name=search> <input type=text class=md-search__input name=query aria-label=Search placeholder=Search autocapitalize=off autocorrect=off autocomplete=off spellcheck=false data-md-component=search-query required> <label class="md-search__icon md-icon" for=__search> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11z"/></svg> </label> <nav class=md-search__options aria-label=Search> <button type=reset class="md-search__icon md-icon" title=Clear aria-label=Clear tabindex=-1> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z"/></svg> </button> </nav> </form> <div class=md-search__output> <div class=md-search__scrollwrap tabindex=0 data-md-scrollfix> <div class=md-search-result data-md-component=search-result> <div class=md-search-result__meta> Initializing search </div> <ol class=md-search-result__list role=presentation></ol> </div> </div> </div> </div> </div> <div class=md-header__source> <a href="https://github.com/nlohmann/json" title="Go to repository" class="md-source" data-md-component="source"> <div class="md-source__icon md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </div> <div class=md-source__repository> nlohmann/json </div> </a> </div> </nav> </header> <div class=md-container data-md-component=container> <nav class=md-tabs aria-label=Tabs data-md-component=tabs> <div class=md-grid> <ul class=md-tabs__list> <li class=md-tabs__item> <a href=../../.. class=md-tabs__link> Home </a> </li> <li class=md-tabs__item> <a href=../../../features/arbitrary_types/ class=md-tabs__link> Features </a> </li> <li class=md-tabs__item> <a href=../../../integration/ class=md-tabs__link> Integration </a> </li> <li class="md-tabs__item md-tabs__item--active"> <a href=../ class=md-tabs__link> API Documentation </a> </li> <li class=md-tabs__item> <a href=../../../community/ class=md-tabs__link> Community </a> </li> </ul> </div> </nav> <main class=md-main data-md-component=main> <div class="md-main__inner md-grid"> <div class="md-sidebar md-sidebar--primary" data-md-component=sidebar data-md-type=navigation> <div class=md-sidebar__scrollwrap> <div class=md-sidebar__inner> <nav class="md-nav md-nav--primary md-nav--lifted" aria-label=Navigation data-md-level=0> <label class=md-nav__title for=__drawer> <a href=../../.. title="JSON for Modern C++" class="md-nav__button md-logo" aria-label="JSON for Modern C++" data-md-component=logo> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54"/></svg> </a> JSON for Modern C++ </label> <div class=md-nav__source> <a href="https://github.com/nlohmann/json" title="Go to repository" class="md-source" data-md-component="source"> <div class="md-source__icon md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </div> <div class=md-source__repository> nlohmann/json </div> </a> </div> <ul class=md-nav__list data-md-scrollfix> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_1> <div class="md-nav__link md-nav__container"> <a href=../../.. class="md-nav__link "> <span class=md-ellipsis> Home </span> </a> <label class="md-nav__link " for=__nav_1 id=__nav_1_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_1_label aria-expanded=false> <label class=md-nav__title for=__nav_1> <span class="md-nav__icon md-icon"></span> Home </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../home/license/ class=md-nav__link> <span class=md-ellipsis> License </span> </a> </li> <li class=md-nav__item> <a href=../../../home/faq/ class=md-nav__link> <span class=md-ellipsis> FAQ </span> </a> </li> <li class=md-nav__item> <a href=../../../home/exceptions/ class=md-nav__link> <span class=md-ellipsis> Exceptions </span> </a> </li> <li class=md-nav__item> <a href=../../../home/releases/ class=md-nav__link> <span class=md-ellipsis> Releases </span> </a> </li> <li class=md-nav__item> <a href=../../../home/design_goals/ class=md-nav__link> <span class=md-ellipsis> Design goals </span> </a> </li> <li class=md-nav__item> <a href=../../../home/architecture/ class=md-nav__link> <span class=md-ellipsis> Architecture </span> </a> </li> <li class=md-nav__item> <a href=../../../home/customers/ class=md-nav__link> <span class=md-ellipsis> Customers </span> </a> </li> <li class=md-nav__item> <a href=../../../home/sponsors/ class=md-nav__link> <span class=md-ellipsis> Sponsors </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2> <label class=md-nav__link for=__nav_2 id=__nav_2_label tabindex=0> <span class=md-ellipsis> Features </span> <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_2_label aria-expanded=false> <label class=md-nav__title for=__nav_2> <span class="md-nav__icon md-icon"></span> Features </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/arbitrary_types/ class=md-nav__link> <span class=md-ellipsis> Arbitrary Type Conversions </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_2> <div class="md-nav__link md-nav__container"> <a href=../../../features/binary_formats/ class="md-nav__link "> <span class=md-ellipsis> Binary Formats </span> </a> <label class="md-nav__link " for=__nav_2_2 id=__nav_2_2_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_2_label aria-expanded=false> <label class=md-nav__title for=__nav_2_2> <span class="md-nav__icon md-icon"></span> Binary Formats </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/binary_formats/bjdata/ class=md-nav__link> <span class=md-ellipsis> BJData </span> </a> </li> <li class=md-nav__item> <a href=../../../features/binary_formats/bson/ class=md-nav__link> <span class=md-ellipsis> BSON </span> </a> </li> <li class=md-nav__item> <a href=../../../features/binary_formats/cbor/ class=md-nav__link> <span class=md-ellipsis> CBOR </span> </a> </li> <li class=md-nav__item> <a href=../../../features/binary_formats/messagepack/ class=md-nav__link> <span class=md-ellipsis> MessagePack </span> </a> </li> <li class=md-nav__item> <a href=../../../features/binary_formats/ubjson/ class=md-nav__link> <span class=md-ellipsis> UBJSON </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../../features/binary_values/ class=md-nav__link> <span class=md-ellipsis> Binary Values </span> </a> </li> <li class=md-nav__item> <a href=../../../features/comments/ class=md-nav__link> <span class=md-ellipsis> Comments </span> </a> </li> <li class=md-nav__item> <a href=../../../features/trailing_commas/ class=md-nav__link> <span class=md-ellipsis> Trailing Commas </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_6> <div class="md-nav__link md-nav__container"> <a href=../../../features/element_access/ class="md-nav__link "> <span class=md-ellipsis> Element Access </span> </a> <label class="md-nav__link " for=__nav_2_6 id=__nav_2_6_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_6_label aria-expanded=false> <label class=md-nav__title for=__nav_2_6> <span class="md-nav__icon md-icon"></span> Element Access </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/element_access/unchecked_access/ class=md-nav__link> <span class=md-ellipsis> Unchecked access: operator[] </span> </a> </li> <li class=md-nav__item> <a href=../../../features/element_access/checked_access/ class=md-nav__link> <span class=md-ellipsis> Checked access: at </span> </a> </li> <li class=md-nav__item> <a href=../../../features/element_access/default_value/ class=md-nav__link> <span class=md-ellipsis> Access with default value: value </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../../features/iterators/ class=md-nav__link> <span class=md-ellipsis> Iterators </span> </a> </li> <li class=md-nav__item> <a href=../../../features/json_pointer/ class=md-nav__link> <span class=md-ellipsis> JSON Pointer </span> </a> </li> <li class=md-nav__item> <a href=../../../features/json_patch/ class=md-nav__link> <span class=md-ellipsis> JSON Patch and Diff </span> </a> </li> <li class=md-nav__item> <a href=../../../features/merge_patch/ class=md-nav__link> <span class=md-ellipsis> JSON Merge Patch </span> </a> </li> <li class=md-nav__item> <a href=../../../features/modules/ class=md-nav__link> <span class=md-ellipsis> Modules </span> </a> </li> <li class=md-nav__item> <a href=../../../features/namespace/ class=md-nav__link> <span class=md-ellipsis> nlohmann Namespace </span> </a> </li> <li class=md-nav__item> <a href=../../../features/object_order/ class=md-nav__link> <span class=md-ellipsis> Object Order </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_14> <div class="md-nav__link md-nav__container"> <a href=../../../features/parsing/ class="md-nav__link "> <span class=md-ellipsis> Parsing </span> </a> <label class="md-nav__link " for=__nav_2_14 id=__nav_2_14_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_14_label aria-expanded=false> <label class=md-nav__title for=__nav_2_14> <span class="md-nav__icon md-icon"></span> Parsing </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/parsing/json_lines/ class=md-nav__link> <span class=md-ellipsis> JSON Lines </span> </a> </li> <li class=md-nav__item> <a href=../../../features/parsing/parse_exceptions/ class=md-nav__link> <span class=md-ellipsis> Parsing and Exceptions </span> </a> </li> <li class=md-nav__item> <a href=../../../features/parsing/parser_callbacks/ class=md-nav__link> <span class=md-ellipsis> Parser Callbacks </span> </a> </li> <li class=md-nav__item> <a href=../../../features/parsing/sax_interface/ class=md-nav__link> <span class=md-ellipsis> SAX Interface </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../../features/assertions/ class=md-nav__link> <span class=md-ellipsis> Runtime Assertions </span> </a> </li> <li class=md-nav__item> <a href=../../../features/enum_conversion/ class=md-nav__link> <span class=md-ellipsis> Specializing enum conversion </span> </a> </li> <li class=md-nav__item> <a href=../../../features/macros/ class=md-nav__link> <span class=md-ellipsis> Supported Macros </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_18> <div class="md-nav__link md-nav__container"> <a href=../../../features/types/ class="md-nav__link "> <span class=md-ellipsis> Types </span> </a> <label class="md-nav__link " for=__nav_2_18 id=__nav_2_18_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_18_label aria-expanded=false> <label class=md-nav__title for=__nav_2_18> <span class="md-nav__icon md-icon"></span> Types </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/types/number_handling/ class=md-nav__link> <span class=md-ellipsis> Number Handling </span> </a> </li> </ul> </nav> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_3> <div class="md-nav__link md-nav__container"> <a href=../../../integration/ class="md-nav__link "> <span class=md-ellipsis> Integration </span> </a> <label class="md-nav__link " for=__nav_3 id=__nav_3_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_3_label aria-expanded=false> <label class=md-nav__title for=__nav_3> <span class="md-nav__icon md-icon"></span> Integration </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../integration/migration_guide/ class=md-nav__link> <span class=md-ellipsis> Migration Guide </span> </a> </li> <li class=md-nav__item> <a href=../../../integration/cmake/ class=md-nav__link> <span class=md-ellipsis> CMake </span> </a> </li> <li class=md-nav__item> <a href=../../../integration/package_managers/ class=md-nav__link> <span class=md-ellipsis> Package Managers </span> </a> </li> <li class=md-nav__item> <a href=../../../integration/pkg-config/ class=md-nav__link> <span class=md-ellipsis> Pkg-config </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--active md-nav__item--section md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4 checked> <label class=md-nav__link for=__nav_4 id=__nav_4_label tabindex> <span class=md-ellipsis> API Documentation </span> <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_4_label aria-expanded=true> <label class=md-nav__title for=__nav_4> <span class="md-nav__icon md-icon"></span> API Documentation </label> <ul class=md-nav__list data-md-scrollfix> <li class="md-nav__item md-nav__item--active md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_1 checked> <div class="md-nav__link md-nav__container"> <a href=../ class="md-nav__link "> <span class=md-ellipsis> basic_json </span> </a> <label class="md-nav__link " for=__nav_4_1 id=__nav_4_1_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_1_label aria-expanded=true> <label class=md-nav__title for=__nav_4_1> <span class="md-nav__icon md-icon"></span> basic_json </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../basic_json/ class=md-nav__link> <span class=md-ellipsis> (Constructor) </span> </a> </li> <li class=md-nav__item> <a href=../~basic_json/ class=md-nav__link> <span class=md-ellipsis> (Destructor) </span> </a> </li> <li class=md-nav__item> <a href=../accept/ class=md-nav__link> <span class=md-ellipsis> accept </span> </a> </li> <li class=md-nav__item> <a href=../array/ class=md-nav__link> <span class=md-ellipsis> array </span> </a> </li> <li class=md-nav__item> <a href=../array_t/ class=md-nav__link> <span class=md-ellipsis> array_t </span> </a> </li> <li class=md-nav__item> <a href=../at/ class=md-nav__link> <span class=md-ellipsis> at </span> </a> </li> <li class=md-nav__item> <a href=../back/ class=md-nav__link> <span class=md-ellipsis> back </span> </a> </li> <li class=md-nav__item> <a href=../begin/ class=md-nav__link> <span class=md-ellipsis> begin </span> </a> </li> <li class=md-nav__item> <a href=../binary/ class=md-nav__link> <span class=md-ellipsis> binary </span> </a> </li> <li class=md-nav__item> <a href=../binary_t/ class=md-nav__link> <span class=md-ellipsis> binary_t </span> </a> </li> <li class=md-nav__item> <a href=../boolean_t/ class=md-nav__link> <span class=md-ellipsis> boolean_t </span> </a> </li> <li class=md-nav__item> <a href=../cbegin/ class=md-nav__link> <span class=md-ellipsis> cbegin </span> </a> </li> <li class=md-nav__item> <a href=../cbor_tag_handler_t/ class=md-nav__link> <span class=md-ellipsis> cbor_tag_handler_t </span> </a> </li> <li class=md-nav__item> <a href=../cend/ class=md-nav__link> <span class=md-ellipsis> cend </span> </a> </li> <li class=md-nav__item> <a href=../clear/ class=md-nav__link> <span class=md-ellipsis> clear </span> </a> </li> <li class=md-nav__item> <a href=../contains/ class=md-nav__link> <span class=md-ellipsis> contains </span> </a> </li> <li class=md-nav__item> <a href=../count/ class=md-nav__link> <span class=md-ellipsis> count </span> </a> </li> <li class=md-nav__item> <a href=../crbegin/ class=md-nav__link> <span class=md-ellipsis> crbegin </span> </a> </li> <li class=md-nav__item> <a href=../crend/ class=md-nav__link> <span class=md-ellipsis> crend </span> </a> </li> <li class=md-nav__item> <a href=../default_object_comparator_t/ class=md-nav__link> <span class=md-ellipsis> default_object_comparator_t </span> </a> </li> <li class=md-nav__item> <a href=../diff/ class=md-nav__link> <span class=md-ellipsis> diff </span> </a> </li> <li class=md-nav__item> <a href=../dump/ class=md-nav__link> <span class=md-ellipsis> dump </span> </a> </li> <li class=md-nav__item> <a href=../emplace/ class=md-nav__link> <span class=md-ellipsis> emplace </span> </a> </li> <li class=md-nav__item> <a href=../emplace_back/ class=md-nav__link> <span class=md-ellipsis> emplace_back </span> </a> </li> <li class=md-nav__item> <a href=../empty/ class=md-nav__link> <span class=md-ellipsis> empty </span> </a> </li> <li class=md-nav__item> <a href=../end/ class=md-nav__link> <span class=md-ellipsis> end </span> </a> </li> <li class=md-nav__item> <a href=../end_pos/ class=md-nav__link> <span class=md-ellipsis> end_pos </span> </a> </li> <li class=md-nav__item> <a href=../erase/ class=md-nav__link> <span class=md-ellipsis> erase </span> </a> </li> <li class=md-nav__item> <a href=../error_handler_t/ class=md-nav__link> <span class=md-ellipsis> error_handler_t </span> </a> </li> <li class=md-nav__item> <a href=../exception/ class=md-nav__link> <span class=md-ellipsis> exception </span> </a> </li> <li class=md-nav__item> <a href=../find/ class=md-nav__link> <span class=md-ellipsis> find </span> </a> </li> <li class=md-nav__item> <a href=../flatten/ class=md-nav__link> <span class=md-ellipsis> flatten </span> </a> </li> <li class=md-nav__item> <a href=../from_bjdata/ class=md-nav__link> <span class=md-ellipsis> from_bjdata </span> </a> </li> <li class=md-nav__item> <a href=../from_bson/ class=md-nav__link> <span class=md-ellipsis> from_bson </span> </a> </li> <li class=md-nav__item> <a href=../from_cbor/ class=md-nav__link> <span class=md-ellipsis> from_cbor </span> </a> </li> <li class=md-nav__item> <a href=../from_msgpack/ class=md-nav__link> <span class=md-ellipsis> from_msgpack </span> </a> </li> <li class=md-nav__item> <a href=../from_ubjson/ class=md-nav__link> <span class=md-ellipsis> from_ubjson </span> </a> </li> <li class=md-nav__item> <a href=../front/ class=md-nav__link> <span class=md-ellipsis> front </span> </a> </li> <li class=md-nav__item> <a href=../get/ class=md-nav__link> <span class=md-ellipsis> get </span> </a> </li> <li class=md-nav__item> <a href=../get_allocator/ class=md-nav__link> <span class=md-ellipsis> get_allocator </span> </a> </li> <li class=md-nav__item> <a href=../get_binary/ class=md-nav__link> <span class=md-ellipsis> get_binary </span> </a> </li> <li class=md-nav__item> <a href=../get_ptr/ class=md-nav__link> <span class=md-ellipsis> get_ptr </span> </a> </li> <li class=md-nav__item> <a href=../get_ref/ class=md-nav__link> <span class=md-ellipsis> get_ref </span> </a> </li> <li class=md-nav__item> <a href=../get_to/ class=md-nav__link> <span class=md-ellipsis> get_to </span> </a> </li> <li class=md-nav__item> <a href=../std_hash/ class=md-nav__link> <span class=md-ellipsis> std::hash&lt;basic_json&gt; </span> </a> </li> <li class=md-nav__item> <a href=../input_format_t/ class=md-nav__link> <span class=md-ellipsis> input_format_t </span> </a> </li> <li class=md-nav__item> <a href=../insert/ class=md-nav__link> <span class=md-ellipsis> insert </span> </a> </li> <li class=md-nav__item> <a href=../invalid_iterator/ class=md-nav__link> <span class=md-ellipsis> invalid_iterator </span> </a> </li> <li class=md-nav__item> <a href=../is_array/ class=md-nav__link> <span class=md-ellipsis> is_array </span> </a> </li> <li class=md-nav__item> <a href=../is_binary/ class=md-nav__link> <span class=md-ellipsis> is_binary </span> </a> </li> <li class=md-nav__item> <a href=../is_boolean/ class=md-nav__link> <span class=md-ellipsis> is_boolean </span> </a> </li> <li class=md-nav__item> <a href=../is_discarded/ class=md-nav__link> <span class=md-ellipsis> is_discarded </span> </a> </li> <li class=md-nav__item> <a href=../is_null/ class=md-nav__link> <span class=md-ellipsis> is_null </span> </a> </li> <li class=md-nav__item> <a href=../is_number/ class=md-nav__link> <span class=md-ellipsis> is_number </span> </a> </li> <li class=md-nav__item> <a href=../is_number_float/ class=md-nav__link> <span class=md-ellipsis> is_number_float </span> </a> </li> <li class=md-nav__item> <a href=../is_number_integer/ class=md-nav__link> <span class=md-ellipsis> is_number_integer </span> </a> </li> <li class=md-nav__item> <a href=../is_number_unsigned/ class=md-nav__link> <span class=md-ellipsis> is_number_unsigned </span> </a> </li> <li class=md-nav__item> <a href=../is_object/ class=md-nav__link> <span class=md-ellipsis> is_object </span> </a> </li> <li class=md-nav__item> <a href=../is_primitive/ class=md-nav__link> <span class=md-ellipsis> is_primitive </span> </a> </li> <li class=md-nav__item> <a href=../is_string/ class=md-nav__link> <span class=md-ellipsis> is_string </span> </a> </li> <li class=md-nav__item> <a href=../is_structured/ class=md-nav__link> <span class=md-ellipsis> is_structured </span> </a> </li> <li class=md-nav__item> <a href=../items/ class=md-nav__link> <span class=md-ellipsis> items </span> </a> </li> <li class=md-nav__item> <a href=../json_base_class_t/ class=md-nav__link> <span class=md-ellipsis> json_base_class_t </span> </a> </li> <li class=md-nav__item> <a href=../json_serializer/ class=md-nav__link> <span class=md-ellipsis> json_serializer </span> </a> </li> <li class=md-nav__item> <a href=../max_size/ class=md-nav__link> <span class=md-ellipsis> max_size </span> </a> </li> <li class=md-nav__item> <a href=../meta/ class=md-nav__link> <span class=md-ellipsis> meta </span> </a> </li> <li class=md-nav__item> <a href=../merge_patch/ class=md-nav__link> <span class=md-ellipsis> merge_patch </span> </a> </li> <li class=md-nav__item> <a href=../number_float_t/ class=md-nav__link> <span class=md-ellipsis> number_float_t </span> </a> </li> <li class=md-nav__item> <a href=../number_integer_t/ class=md-nav__link> <span class=md-ellipsis> number_integer_t </span> </a> </li> <li class=md-nav__item> <a href=../number_unsigned_t/ class=md-nav__link> <span class=md-ellipsis> number_unsigned_t </span> </a> </li> <li class=md-nav__item> <a href=../object/ class=md-nav__link> <span class=md-ellipsis> object </span> </a> </li> <li class=md-nav__item> <a href=../object_comparator_t/ class=md-nav__link> <span class=md-ellipsis> object_comparator_t </span> </a> </li> <li class=md-nav__item> <a href=../object_t/ class=md-nav__link> <span class=md-ellipsis> object_t </span> </a> </li> <li class=md-nav__item> <a href=../operator_ValueType/ class=md-nav__link> <span class=md-ellipsis> operator ValueType </span> </a> </li> <li class=md-nav__item> <a href=../operator_value_t/ class=md-nav__link> <span class=md-ellipsis> operator value_t </span> </a> </li> <li class=md-nav__item> <a href=../operator%5B%5D/ class=md-nav__link> <span class=md-ellipsis> operator[] </span> </a> </li> <li class=md-nav__item> <a href=../operator%3D/ class=md-nav__link> <span class=md-ellipsis> operator= </span> </a> </li> <li class=md-nav__item> <a href=../operator%2B%3D/ class=md-nav__link> <span class=md-ellipsis> operator+= </span> </a> </li> <li class=md-nav__item> <a href=../operator_eq/ class=md-nav__link> <span class=md-ellipsis> operator== </span> </a> </li> <li class=md-nav__item> <a href=../operator_ne/ class=md-nav__link> <span class=md-ellipsis> operator!= </span> </a> </li> <li class=md-nav__item> <a href=../operator_lt/ class=md-nav__link> <span class=md-ellipsis> operator< </span> </a> </li> <li class=md-nav__item> <a href=../operator_gt/ class=md-nav__link> <span class=md-ellipsis> operator> </span> </a> </li> <li class=md-nav__item> <a href=../operator_le/ class=md-nav__link> <span class=md-ellipsis> operator<= </span> </a> </li> <li class=md-nav__item> <a href=../operator_ge/ class=md-nav__link> <span class=md-ellipsis> operator>= </span> </a> </li> <li class=md-nav__item> <a href=../operator_spaceship/ class=md-nav__link> <span class=md-ellipsis> operator<=> </span> </a> </li> <li class=md-nav__item> <a href=../out_of_range/ class=md-nav__link> <span class=md-ellipsis> out_of_range </span> </a> </li> <li class=md-nav__item> <a href=../other_error/ class=md-nav__link> <span class=md-ellipsis> other_error </span> </a> </li> <li class=md-nav__item> <a href=../parse/ class=md-nav__link> <span class=md-ellipsis> parse </span> </a> </li> <li class=md-nav__item> <a href=../parse_error/ class=md-nav__link> <span class=md-ellipsis> parse_error </span> </a> </li> <li class=md-nav__item> <a href=../parse_event_t/ class=md-nav__link> <span class=md-ellipsis> parse_event_t </span> </a> </li> <li class=md-nav__item> <a href=../parser_callback_t/ class=md-nav__link> <span class=md-ellipsis> parser_callback_t </span> </a> </li> <li class=md-nav__item> <a href=../patch/ class=md-nav__link> <span class=md-ellipsis> patch </span> </a> </li> <li class=md-nav__item> <a href=../patch_inplace/ class=md-nav__link> <span class=md-ellipsis> patch_inplace </span> </a> </li> <li class=md-nav__item> <a href=../push_back/ class=md-nav__link> <span class=md-ellipsis> push_back </span> </a> </li> <li class=md-nav__item> <a href=../rbegin/ class=md-nav__link> <span class=md-ellipsis> rbegin </span> </a> </li> <li class=md-nav__item> <a href=../rend/ class=md-nav__link> <span class=md-ellipsis> rend </span> </a> </li> <li class=md-nav__item> <a href=../sax_parse/ class=md-nav__link> <span class=md-ellipsis> sax_parse </span> </a> </li> <li class=md-nav__item> <a href=../size/ class=md-nav__link> <span class=md-ellipsis> size </span> </a> </li> <li class=md-nav__item> <a href=../start_pos/ class=md-nav__link> <span class=md-ellipsis> start_pos </span> </a> </li> <li class=md-nav__item> <a href=../string_t/ class=md-nav__link> <span class=md-ellipsis> string_t </span> </a> </li> <li class=md-nav__item> <a href=../swap/ class=md-nav__link> <span class=md-ellipsis> swap </span> </a> </li> <li class=md-nav__item> <a href=../std_swap/ class=md-nav__link> <span class=md-ellipsis> std::swap&lt;basic_json&gt; </span> </a> </li> <li class="md-nav__item md-nav__item--active"> <input class="md-nav__toggle md-toggle" type=checkbox id=__toc> <label class="md-nav__link md-nav__link--active" for=__toc> <span class=md-ellipsis> to_bjdata </span> <span class="md-nav__icon md-icon"></span> </label> <a href=./ class="md-nav__link md-nav__link--active"> <span class=md-ellipsis> to_bjdata </span> </a> <nav class="md-nav md-nav--secondary" aria-label="Table of contents"> <label class=md-nav__title for=__toc> <span class="md-nav__icon md-icon"></span> Table of contents </label> <ul class=md-nav__list data-md-component=toc data-md-scrollfix> <li class=md-nav__item> <a href=#parameters class=md-nav__link> <span class=md-ellipsis> Parameters </span> </a> </li> <li class=md-nav__item> <a href=#return-value class=md-nav__link> <span class=md-ellipsis> Return value </span> </a> </li> <li class=md-nav__item> <a href=#exception-safety class=md-nav__link> <span class=md-ellipsis> Exception safety </span> </a> </li> <li class=md-nav__item> <a href=#complexity class=md-nav__link> <span class=md-ellipsis> Complexity </span> </a> </li> <li class=md-nav__item> <a href=#examples class=md-nav__link> <span class=md-ellipsis> Examples </span> </a> </li> <li class=md-nav__item> <a href=#see-also class=md-nav__link> <span class=md-ellipsis> See also </span> </a> </li> <li class=md-nav__item> <a href=#version-history class=md-nav__link> <span class=md-ellipsis> Version history </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../to_bson/ class=md-nav__link> <span class=md-ellipsis> to_bson </span> </a> </li> <li class=md-nav__item> <a href=../to_cbor/ class=md-nav__link> <span class=md-ellipsis> to_cbor </span> </a> </li> <li class=md-nav__item> <a href=../to_msgpack/ class=md-nav__link> <span class=md-ellipsis> to_msgpack </span> </a> </li> <li class=md-nav__item> <a href=../to_string/ class=md-nav__link> <span class=md-ellipsis> to_string </span> </a> </li> <li class=md-nav__item> <a href=../to_ubjson/ class=md-nav__link> <span class=md-ellipsis> to_ubjson </span> </a> </li> <li class=md-nav__item> <a href=../type/ class=md-nav__link> <span class=md-ellipsis> type </span> </a> </li> <li class=md-nav__item> <a href=../type_error/ class=md-nav__link> <span class=md-ellipsis> type_error </span> </a> </li> <li class=md-nav__item> <a href=../type_name/ class=md-nav__link> <span class=md-ellipsis> type_name </span> </a> </li> <li class=md-nav__item> <a href=../unflatten/ class=md-nav__link> <span class=md-ellipsis> unflatten </span> </a> </li> <li class=md-nav__item> <a href=../update/ class=md-nav__link> <span class=md-ellipsis> update </span> </a> </li> <li class=md-nav__item> <a href=../value/ class=md-nav__link> <span class=md-ellipsis> value </span> </a> </li> <li class=md-nav__item> <a href=../value_t/ class=md-nav__link> <span class=md-ellipsis> value_t </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_2> <div class="md-nav__link md-nav__container"> <a href=../../byte_container_with_subtype/ class="md-nav__link "> <span class=md-ellipsis> byte_container_with_subtype </span> </a> <label class="md-nav__link " for=__nav_4_2 id=__nav_4_2_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_2_label aria-expanded=false> <label class=md-nav__title for=__nav_4_2> <span class="md-nav__icon md-icon"></span> byte_container_with_subtype </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../byte_container_with_subtype/byte_container_with_subtype/ class=md-nav__link> <span class=md-ellipsis> (constructor) </span> </a> </li> <li class=md-nav__item> <a href=../../byte_container_with_subtype/clear_subtype/ class=md-nav__link> <span class=md-ellipsis> clear_subtype </span> </a> </li> <li class=md-nav__item> <a href=../../byte_container_with_subtype/has_subtype/ class=md-nav__link> <span class=md-ellipsis> has_subtype </span> </a> </li> <li class=md-nav__item> <a href=../../byte_container_with_subtype/set_subtype/ class=md-nav__link> <span class=md-ellipsis> set_subtype </span> </a> </li> <li class=md-nav__item> <a href=../../byte_container_with_subtype/subtype/ class=md-nav__link> <span class=md-ellipsis> subtype </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_3> <div class="md-nav__link md-nav__container"> <a href=../../adl_serializer/ class="md-nav__link "> <span class=md-ellipsis> adl_serializer </span> </a> <label class="md-nav__link " for=__nav_4_3 id=__nav_4_3_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_3_label aria-expanded=false> <label class=md-nav__title for=__nav_4_3> <span class="md-nav__icon md-icon"></span> adl_serializer </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../adl_serializer/from_json/ class=md-nav__link> <span class=md-ellipsis> from_json </span> </a> </li> <li class=md-nav__item> <a href=../../adl_serializer/to_json/ class=md-nav__link> <span class=md-ellipsis> to_json </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../json/ class=md-nav__link> <span class=md-ellipsis> json </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_5> <div class="md-nav__link md-nav__container"> <a href=../../json_pointer/ class="md-nav__link "> <span class=md-ellipsis> json_pointer </span> </a> <label class="md-nav__link " for=__nav_4_5 id=__nav_4_5_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_5_label aria-expanded=false> <label class=md-nav__title for=__nav_4_5> <span class="md-nav__icon md-icon"></span> json_pointer </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../json_pointer/json_pointer/ class=md-nav__link> <span class=md-ellipsis> (Constructor) </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/back/ class=md-nav__link> <span class=md-ellipsis> back </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/empty/ class=md-nav__link> <span class=md-ellipsis> empty </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/front/ class=md-nav__link> <span class=md-ellipsis> front </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_string_t/ class=md-nav__link> <span class=md-ellipsis> operator string_t </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_eq/ class=md-nav__link> <span class=md-ellipsis> operator== </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_ne/ class=md-nav__link> <span class=md-ellipsis> operator!= </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_slash/ class=md-nav__link> <span class=md-ellipsis> operator/ </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_slasheq/ class=md-nav__link> <span class=md-ellipsis> operator/= </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/parent_pointer/ class=md-nav__link> <span class=md-ellipsis> parent_pointer </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/pop_back/ class=md-nav__link> <span class=md-ellipsis> pop_back </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/pop_front/ class=md-nav__link> <span class=md-ellipsis> pop_front </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/push_back/ class=md-nav__link> <span class=md-ellipsis> push_back </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/push_front/ class=md-nav__link> <span class=md-ellipsis> push_front </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/string_t/ class=md-nav__link> <span class=md-ellipsis> string_t </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/to_string/ class=md-nav__link> <span class=md-ellipsis> to_string </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_6> <div class="md-nav__link md-nav__container"> <a href=../../json_sax/ class="md-nav__link "> <span class=md-ellipsis> json_sax </span> </a> <label class="md-nav__link " for=__nav_4_6 id=__nav_4_6_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_6_label aria-expanded=false> <label class=md-nav__title for=__nav_4_6> <span class="md-nav__icon md-icon"></span> json_sax </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../json_sax/binary/ class=md-nav__link> <span class=md-ellipsis> binary </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/boolean/ class=md-nav__link> <span class=md-ellipsis> boolean </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/end_array/ class=md-nav__link> <span class=md-ellipsis> end_array </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/end_object/ class=md-nav__link> <span class=md-ellipsis> end_object </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/key/ class=md-nav__link> <span class=md-ellipsis> key </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/null/ class=md-nav__link> <span class=md-ellipsis> null </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/number_float/ class=md-nav__link> <span class=md-ellipsis> number_float </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/number_integer/ class=md-nav__link> <span class=md-ellipsis> number_integer </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/number_unsigned/ class=md-nav__link> <span class=md-ellipsis> number_unsigned </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/parse_error/ class=md-nav__link> <span class=md-ellipsis> parse_error </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/start_array/ class=md-nav__link> <span class=md-ellipsis> start_array </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/start_object/ class=md-nav__link> <span class=md-ellipsis> start_object </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/string/ class=md-nav__link> <span class=md-ellipsis> string </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../operator_ltlt/ class=md-nav__link> <span class=md-ellipsis> operator<<(basic_json), operator<<(json_pointer) </span> </a> </li> <li class=md-nav__item> <a href=../../operator_gtgt/ class=md-nav__link> <span class=md-ellipsis> operator>>(basic_json) </span> </a> </li> <li class=md-nav__item> <a href=../../operator_literal_json/ class=md-nav__link> <span class=md-ellipsis> operator""_json </span> </a> </li> <li class=md-nav__item> <a href=../../operator_literal_json_pointer/ class=md-nav__link> <span class=md-ellipsis> operator""_json_pointer </span> </a> </li> <li class=md-nav__item> <a href=../../ordered_json/ class=md-nav__link> <span class=md-ellipsis> ordered_json </span> </a> </li> <li class=md-nav__item> <a href=../../ordered_map/ class=md-nav__link> <span class=md-ellipsis> ordered_map </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_13> <div class="md-nav__link md-nav__container"> <a href=../../macros/ class="md-nav__link "> <span class=md-ellipsis> macros </span> </a> <label class="md-nav__link " for=__nav_4_13 id=__nav_4_13_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_13_label aria-expanded=false> <label class=md-nav__title for=__nav_4_13> <span class="md-nav__icon md-icon"></span> macros </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../macros/json_assert/ class=md-nav__link> <span class=md-ellipsis> JSON_ASSERT </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_brace_init_copy_semantics/ class=md-nav__link> <span class=md-ellipsis> JSON_BRACE_INIT_COPY_SEMANTICS </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_throw_user/ class=md-nav__link> <span class=md-ellipsis> JSON_CATCH_USER, JSON_THROW_USER, JSON_TRY_USER </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_diagnostics/ class=md-nav__link> <span class=md-ellipsis> JSON_DIAGNOSTICS </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_diagnostic_positions/ class=md-nav__link> <span class=md-ellipsis> JSON_DIAGNOSTIC_POSITIONS </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_disable_enum_serialization/ class=md-nav__link> <span class=md-ellipsis> JSON_DISABLE_ENUM_SERIALIZATION </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_has_cpp_11/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_CPP_11, JSON_HAS_CPP_14, JSON_HAS_CPP_17, JSON_HAS_CPP_20 </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_has_filesystem/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_EXPERIMENTAL_FILESYSTEM, JSON_HAS_FILESYSTEM </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_has_ranges/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_RANGES </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_has_static_rtti/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_STATIC_RTTI </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_has_three_way_comparison/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_THREE_WAY_COMPARISON </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_noexception/ class=md-nav__link> <span class=md-ellipsis> JSON_NOEXCEPTION </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_no_io/ class=md-nav__link> <span class=md-ellipsis> JSON_NO_IO </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_skip_library_version_check/ class=md-nav__link> <span class=md-ellipsis> JSON_SKIP_LIBRARY_VERSION_CHECK </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_skip_unsupported_compiler_check/ class=md-nav__link> <span class=md-ellipsis> JSON_SKIP_UNSUPPORTED_COMPILER_CHECK </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_use_global_udls/ class=md-nav__link> <span class=md-ellipsis> JSON_USE_GLOBAL_UDLS </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_use_implicit_conversions/ class=md-nav__link> <span class=md-ellipsis> JSON_USE_IMPLICIT_CONVERSIONS </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_use_legacy_discarded_value_comparison/ class=md-nav__link> <span class=md-ellipsis> JSON_USE_LEGACY_DISCARDED_VALUE_COMPARISON </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_define_derived_type/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_ONLY_SERIALIZE, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_define_type_intrusive/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_TYPE_INTRUSIVE, NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_TYPE_INTRUSIVE_ONLY_SERIALIZE </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_define_type_non_intrusive/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_define_type_with_names/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_TYPE_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_namespace/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_NAMESPACE </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_namespace_begin/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_NAMESPACE_BEGIN, NLOHMANN_JSON_NAMESPACE_END </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_namespace_no_version/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_NAMESPACE_NO_VERSION </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_serialize_enum/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_SERIALIZE_ENUM </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_serialize_enum_strict/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_SERIALIZE_ENUM_STRICT </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_version_major/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_VERSION_MAJOR, NLOHMANN_JSON_VERSION_MINOR, NLOHMANN_JSON_VERSION_PATCH </span> </a> </li> </ul> </nav> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_5> <div class="md-nav__link md-nav__container"> <a href=../../../community/ class="md-nav__link "> <span class=md-ellipsis> Community </span> </a> <label class="md-nav__link " for=__nav_5 id=__nav_5_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_5_label aria-expanded=false> <label class=md-nav__title for=__nav_5> <span class="md-nav__icon md-icon"></span> Community </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../community/code_of_conduct/ class=md-nav__link> <span class=md-ellipsis> Code of Conduct </span> </a> </li> <li class=md-nav__item> <a href=../../../community/contribution_guidelines/ class=md-nav__link> <span class=md-ellipsis> Contribution Guidelines </span> </a> </li> <li class=md-nav__item> <a href=../../../community/quality_assurance/ class=md-nav__link> <span class=md-ellipsis> Quality assurance </span> </a> </li> <li class=md-nav__item> <a href=../../../community/governance/ class=md-nav__link> <span class=md-ellipsis> Governance </span> </a> </li> <li class=md-nav__item> <a href=../../../community/security_policy/ class=md-nav__link> <span class=md-ellipsis> Security Policy </span> </a> </li> </ul> </nav> </li> </ul> </nav> </div> </div> </div> <div class="md-sidebar md-sidebar--secondary" data-md-component=sidebar data-md-type=toc> <div class=md-sidebar__scrollwrap> <div class=md-sidebar__inner> <nav class="md-nav md-nav--secondary" aria-label="Table of contents"> <label class=md-nav__title for=__toc> <span class="md-nav__icon md-icon"></span> Table of contents </label> <ul class=md-nav__list data-md-component=toc data-md-scrollfix> <li class=md-nav__item> <a href=#parameters class=md-nav__link> <span class=md-ellipsis> Parameters </span> </a> </li> <li class=md-nav__item> <a href=#return-value class=md-nav__link> <span class=md-ellipsis> Return value </span> </a> </li> <li class=md-nav__item> <a href=#exception-safety class=md-nav__link> <span class=md-ellipsis> Exception safety </span> </a> </li> <li class=md-nav__item> <a href=#complexity class=md-nav__link> <span class=md-ellipsis> Complexity </span> </a> </li> <li class=md-nav__item> <a href=#examples class=md-nav__link> <span class=md-ellipsis> Examples </span> </a> </li> <li class=md-nav__item> <a href=#see-also class=md-nav__link> <span class=md-ellipsis> See also </span> </a> </li> <li class=md-nav__item> <a href=#version-history class=md-nav__link> <span class=md-ellipsis> Version history </span> </a> </li> </ul> </nav> </div> </div> </div> <div class=md-content data-md-component=content> <article class="md-content__inner md-typeset"> <a href="https://github.com/nlohmann/json/edit/develop/docs/mkdocs/docs/api/basic_json/to_bjdata.md" title="Edit this page" class="md-content__button md-icon" rel="edit"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M10 20H6V4h7v5h5v3.1l2-2V8l-6-6H6c-1.1 0-2 .9-2 2v16c0 1.1.9 2 2 2h4zm10.2-7c.1 0 .3.1.4.2l1.3 1.3c.2.2.2.6 0 .8l-1 1-2.1-2.1 1-1c.1-.1.2-.2.4-.2m0 3.9L14.1 23H12v-2.1l6.1-6.1z"/></svg> </a> <a href="https://github.com/nlohmann/json/raw/develop/docs/mkdocs/docs/api/basic_json/to_bjdata.md" title="View source of this page" class="md-content__button md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M17 18c.56 0 1 .44 1 1s-.44 1-1 1-1-.44-1-1 .44-1 1-1m0-3c-2.73 0-5.06 1.66-6 4 .94 2.34 3.27 4 6 4s5.06-1.66 6-4c-.94-2.34-3.27-4-6-4m0 6.5a2.5 2.5 0 0 1-2.5-2.5 2.5 2.5 0 0 1 2.5-2.5 2.5 2.5 0 0 1 2.5 2.5 2.5 2.5 0 0 1-2.5 2.5M9.27 20H6V4h7v5h5v4.07c.7.08 1.36.25 2 .49V8l-6-6H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h4.5a8.2 8.2 0 0 1-1.23-2"/></svg> </a> <h1 id=nlohmannbasic_jsonto_bjdata><small>nlohmann::basic_json::</small>to_bjdata<a class=headerlink href=#nlohmannbasic_jsonto_bjdata title="Permanent link">&para;</a></h1> <div class=highlight><pre><span></span><code><span class=c1>// (1)</span>
 <span class=k>static</span><span class=w> </span><span class=n>std</span><span class=o>::</span><span class=n>vector</span><span class=o>&lt;</span><span class=n>std</span><span class=o>::</span><span class=kt>uint8_t</span><span class=o>&gt;</span><span class=w> </span><span class=n>to_bjdata</span><span class=p>(</span><span class=k>const</span><span class=w> </span><span class=n>basic_json</span><span class=o>&amp;</span><span class=w> </span><span class=n>j</span><span class=p>,</span>
 <span class=w>                                           </span><span class=k>const</span><span class=w> </span><span class=kt>bool</span><span class=w> </span><span class=n>use_size</span><span class=w> </span><span class=o>=</span><span class=w> </span><span class=nb>false</span><span class=p>,</span>
 <span class=w>                                           </span><span class=k>const</span><span class=w> </span><span class=kt>bool</span><span class=w> </span><span class=n>use_type</span><span class=w> </span><span class=o>=</span><span class=w> </span><span class=nb>false</span><span class=p>,</span>
@@ -79,4 +79,4 @@
 <span class=p>[</span><span class=err>i</span><span class=mi>1</span><span class=err>i</span><span class=mi>2</span><span class=err>i</span><span class=mi>3</span><span class=err>i</span><span class=mi>4</span><span class=err>i</span><span class=mi>5</span><span class=err>i</span><span class=mi>6</span><span class=err>i</span><span class=mi>7</span><span class=err>i</span><span class=mi>8</span><span class=p>]</span>
 <span class=p>[</span><span class=err>#i</span><span class=mi>8</span><span class=err>i</span><span class=mi>1</span><span class=err>i</span><span class=mi>2</span><span class=err>i</span><span class=mi>3</span><span class=err>i</span><span class=mi>4</span><span class=err>i</span><span class=mi>5</span><span class=err>i</span><span class=mi>6</span><span class=err>i</span><span class=mi>7</span><span class=err>i</span><span class=mi>8</span>
 <span class=p>[</span><span class=err>$i#i</span><span class=mi>812345678</span>
-</code></pre></div> </details> <h2 id=version-history>Version history<a class=headerlink href=#version-history title="Permanent link">&para;</a></h2> <ul> <li>Added in version 3.11.0.</li> <li><abbr title="Binary JData">BJData</abbr> version parameter (for draft3 binary encoding) added in version 3.12.0.</li> </ul> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 23, 2026 11:16:18 UTC">June 23, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
+</code></pre></div> </details> <h2 id=see-also>See also<a class=headerlink href=#see-also title="Permanent link">&para;</a></h2> <ul> <li><a href=../from_bjdata/ >from_bjdata</a> create a <abbr title="JavaScript Object Notation">JSON</abbr> value from an input in <abbr title="Binary JData">BJData</abbr> format</li> <li><a href=../to_cbor/ >to_cbor</a> create a <abbr title="Concise Binary Object Representation">CBOR</abbr> serialization of a <abbr title="JavaScript Object Notation">JSON</abbr> value</li> <li><a href=../to_msgpack/ >to_msgpack</a> create a MessagePack serialization of a <abbr title="JavaScript Object Notation">JSON</abbr> value</li> <li><a href=../to_bson/ >to_bson</a> create a <abbr title="Binary JSON">BSON</abbr> serialization of a <abbr title="JavaScript Object Notation">JSON</abbr> value</li> <li><a href=../to_ubjson/ >to_ubjson</a> create a <abbr title="Universal Binary JSON">UBJSON</abbr> serialization of a <abbr title="JavaScript Object Notation">JSON</abbr> value</li> </ul> <h2 id=version-history>Version history<a class=headerlink href=#version-history title="Permanent link">&para;</a></h2> <ul> <li>Added in version 3.11.0.</li> <li><abbr title="Binary JData">BJData</abbr> version parameter (for draft3 binary encoding) added in version 3.12.0.</li> </ul> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 29, 2026 20:15:18 UTC">June 29, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
diff --git a/api/basic_json/to_bson/index.html b/api/basic_json/to_bson/index.html
index d593751..9aacd5c 100644
--- a/api/basic_json/to_bson/index.html
+++ b/api/basic_json/to_bson/index.html
@@ -1,10 +1,10 @@
-<!doctype html><html lang=en class=no-js> <head><meta charset=utf-8><meta name=viewport content="width=device-width,initial-scale=1"><meta name=author content="Niels Lohmann"><link href="https://json.nlohmann.me/api/basic_json/to_bson/" rel="canonical"><link href=../to_bjdata/ rel=prev><link href=../to_cbor/ rel=next><link rel=icon href=../../../assets/images/favicon.png><meta name=generator content="mkdocs-1.6.1, mkdocs-material-9.7.6"><title>to_bson - JSON for Modern C++</title><link rel=stylesheet href=../../../assets/stylesheets/main.484c7ddc.min.css><link rel=stylesheet href=../../../assets/stylesheets/palette.ab4e12ef.min.css><link rel="stylesheet" href="../../../assets/external/fonts.googleapis.com/css.61a430c9.css"><style>:root{--md-text-font:"Roboto";--md-code-font:"JetBrains Mono"}</style><link rel=stylesheet href=../../../css/custom.css><script>__md_scope=new URL("../../..",location),__md_hash=e=>[...e].reduce(((e,_)=>(e<<5)-e+_.charCodeAt(0)),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script></head> <body dir=ltr data-md-color-scheme=default data-md-color-primary=indigo data-md-color-accent=indigo> <input class=md-toggle data-md-toggle=drawer type=checkbox id=__drawer autocomplete=off> <input class=md-toggle data-md-toggle=search type=checkbox id=__search autocomplete=off> <label class=md-overlay for=__drawer></label> <div data-md-component=skip> <a href=#nlohmannbasic_jsonto_bson class=md-skip> Skip to content </a> </div> <div data-md-component=announce> </div> <header class=md-header data-md-component=header> <nav class="md-header__inner md-grid" aria-label=Header> <a href=../../.. title="JSON for Modern C++" class="md-header__button md-logo" aria-label="JSON for Modern C++" data-md-component=logo> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54"/></svg> </a> <label class="md-header__button md-icon" for=__drawer> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M3 6h18v2H3zm0 5h18v2H3zm0 5h18v2H3z"/></svg> </label> <div class=md-header__title data-md-component=header-title> <div class=md-header__ellipsis> <div class=md-header__topic> <span class=md-ellipsis> JSON for Modern C++ </span> </div> <div class=md-header__topic data-md-component=header-topic> <span class=md-ellipsis> to_bson </span> </div> </div> </div> <form class=md-header__option data-md-component=palette> <input class=md-option data-md-color-media="(prefers-color-scheme: light)" data-md-color-scheme=default data-md-color-primary=indigo data-md-color-accent=indigo aria-label="Switch to dark mode" type=radio name=__palette id=__palette_0> <label class="md-header__button md-icon" title="Switch to dark mode" for=__palette_1 hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a4 4 0 0 0-4 4 4 4 0 0 0 4 4 4 4 0 0 0 4-4 4 4 0 0 0-4-4m0 10a6 6 0 0 1-6-6 6 6 0 0 1 6-6 6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12z"/></svg> </label> <input class=md-option data-md-color-media="(prefers-color-scheme: dark)" data-md-color-scheme=slate data-md-color-primary=indigo data-md-color-accent=indigo aria-label="Switch to light mode" type=radio name=__palette id=__palette_1> <label class="md-header__button md-icon" title="Switch to light mode" for=__palette_0 hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 18c-.89 0-1.74-.2-2.5-.55C11.56 16.5 13 14.42 13 12s-1.44-4.5-3.5-5.45C10.26 6.2 11.11 6 12 6a6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12z"/></svg> </label> </form> <script>var palette=__md_get("__palette");if(palette&&palette.color){if("(prefers-color-scheme)"===palette.color.media){var media=matchMedia("(prefers-color-scheme: light)"),input=document.querySelector(media.matches?"[data-md-color-media='(prefers-color-scheme: light)']":"[data-md-color-media='(prefers-color-scheme: dark)']");palette.color.media=input.getAttribute("data-md-color-media"),palette.color.scheme=input.getAttribute("data-md-color-scheme"),palette.color.primary=input.getAttribute("data-md-color-primary"),palette.color.accent=input.getAttribute("data-md-color-accent")}for(var[key,value]of Object.entries(palette.color))document.body.setAttribute("data-md-color-"+key,value)}</script> <label class="md-header__button md-icon" for=__search> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg> </label> <div class=md-search data-md-component=search role=dialog> <label class=md-search__overlay for=__search></label> <div class=md-search__inner role=search> <form class=md-search__form name=search> <input type=text class=md-search__input name=query aria-label=Search placeholder=Search autocapitalize=off autocorrect=off autocomplete=off spellcheck=false data-md-component=search-query required> <label class="md-search__icon md-icon" for=__search> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11z"/></svg> </label> <nav class=md-search__options aria-label=Search> <button type=reset class="md-search__icon md-icon" title=Clear aria-label=Clear tabindex=-1> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z"/></svg> </button> </nav> </form> <div class=md-search__output> <div class=md-search__scrollwrap tabindex=0 data-md-scrollfix> <div class=md-search-result data-md-component=search-result> <div class=md-search-result__meta> Initializing search </div> <ol class=md-search-result__list role=presentation></ol> </div> </div> </div> </div> </div> <div class=md-header__source> <a href="https://github.com/nlohmann/json" title="Go to repository" class="md-source" data-md-component="source"> <div class="md-source__icon md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </div> <div class=md-source__repository> nlohmann/json </div> </a> </div> </nav> </header> <div class=md-container data-md-component=container> <nav class=md-tabs aria-label=Tabs data-md-component=tabs> <div class=md-grid> <ul class=md-tabs__list> <li class=md-tabs__item> <a href=../../.. class=md-tabs__link> Home </a> </li> <li class=md-tabs__item> <a href=../../../features/arbitrary_types/ class=md-tabs__link> Features </a> </li> <li class=md-tabs__item> <a href=../../../integration/ class=md-tabs__link> Integration </a> </li> <li class="md-tabs__item md-tabs__item--active"> <a href=../ class=md-tabs__link> API Documentation </a> </li> <li class=md-tabs__item> <a href=../../../community/ class=md-tabs__link> Community </a> </li> </ul> </div> </nav> <main class=md-main data-md-component=main> <div class="md-main__inner md-grid"> <div class="md-sidebar md-sidebar--primary" data-md-component=sidebar data-md-type=navigation> <div class=md-sidebar__scrollwrap> <div class=md-sidebar__inner> <nav class="md-nav md-nav--primary md-nav--lifted" aria-label=Navigation data-md-level=0> <label class=md-nav__title for=__drawer> <a href=../../.. title="JSON for Modern C++" class="md-nav__button md-logo" aria-label="JSON for Modern C++" data-md-component=logo> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54"/></svg> </a> JSON for Modern C++ </label> <div class=md-nav__source> <a href="https://github.com/nlohmann/json" title="Go to repository" class="md-source" data-md-component="source"> <div class="md-source__icon md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </div> <div class=md-source__repository> nlohmann/json </div> </a> </div> <ul class=md-nav__list data-md-scrollfix> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_1> <div class="md-nav__link md-nav__container"> <a href=../../.. class="md-nav__link "> <span class=md-ellipsis> Home </span> </a> <label class="md-nav__link " for=__nav_1 id=__nav_1_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_1_label aria-expanded=false> <label class=md-nav__title for=__nav_1> <span class="md-nav__icon md-icon"></span> Home </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../home/license/ class=md-nav__link> <span class=md-ellipsis> License </span> </a> </li> <li class=md-nav__item> <a href=../../../home/faq/ class=md-nav__link> <span class=md-ellipsis> FAQ </span> </a> </li> <li class=md-nav__item> <a href=../../../home/exceptions/ class=md-nav__link> <span class=md-ellipsis> Exceptions </span> </a> </li> <li class=md-nav__item> <a href=../../../home/releases/ class=md-nav__link> <span class=md-ellipsis> Releases </span> </a> </li> <li class=md-nav__item> <a href=../../../home/design_goals/ class=md-nav__link> <span class=md-ellipsis> Design goals </span> </a> </li> <li class=md-nav__item> <a href=../../../home/architecture/ class=md-nav__link> <span class=md-ellipsis> Architecture </span> </a> </li> <li class=md-nav__item> <a href=../../../home/customers/ class=md-nav__link> <span class=md-ellipsis> Customers </span> </a> </li> <li class=md-nav__item> <a href=../../../home/sponsors/ class=md-nav__link> <span class=md-ellipsis> Sponsors </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2> <label class=md-nav__link for=__nav_2 id=__nav_2_label tabindex=0> <span class=md-ellipsis> Features </span> <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_2_label aria-expanded=false> <label class=md-nav__title for=__nav_2> <span class="md-nav__icon md-icon"></span> Features </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/arbitrary_types/ class=md-nav__link> <span class=md-ellipsis> Arbitrary Type Conversions </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_2> <div class="md-nav__link md-nav__container"> <a href=../../../features/binary_formats/ class="md-nav__link "> <span class=md-ellipsis> Binary Formats </span> </a> <label class="md-nav__link " for=__nav_2_2 id=__nav_2_2_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_2_label aria-expanded=false> <label class=md-nav__title for=__nav_2_2> <span class="md-nav__icon md-icon"></span> Binary Formats </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/binary_formats/bjdata/ class=md-nav__link> <span class=md-ellipsis> BJData </span> </a> </li> <li class=md-nav__item> <a href=../../../features/binary_formats/bson/ class=md-nav__link> <span class=md-ellipsis> BSON </span> </a> </li> <li class=md-nav__item> <a href=../../../features/binary_formats/cbor/ class=md-nav__link> <span class=md-ellipsis> CBOR </span> </a> </li> <li class=md-nav__item> <a href=../../../features/binary_formats/messagepack/ class=md-nav__link> <span class=md-ellipsis> MessagePack </span> </a> </li> <li class=md-nav__item> <a href=../../../features/binary_formats/ubjson/ class=md-nav__link> <span class=md-ellipsis> UBJSON </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../../features/binary_values/ class=md-nav__link> <span class=md-ellipsis> Binary Values </span> </a> </li> <li class=md-nav__item> <a href=../../../features/comments/ class=md-nav__link> <span class=md-ellipsis> Comments </span> </a> </li> <li class=md-nav__item> <a href=../../../features/trailing_commas/ class=md-nav__link> <span class=md-ellipsis> Trailing Commas </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_6> <div class="md-nav__link md-nav__container"> <a href=../../../features/element_access/ class="md-nav__link "> <span class=md-ellipsis> Element Access </span> </a> <label class="md-nav__link " for=__nav_2_6 id=__nav_2_6_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_6_label aria-expanded=false> <label class=md-nav__title for=__nav_2_6> <span class="md-nav__icon md-icon"></span> Element Access </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/element_access/unchecked_access/ class=md-nav__link> <span class=md-ellipsis> Unchecked access: operator[] </span> </a> </li> <li class=md-nav__item> <a href=../../../features/element_access/checked_access/ class=md-nav__link> <span class=md-ellipsis> Checked access: at </span> </a> </li> <li class=md-nav__item> <a href=../../../features/element_access/default_value/ class=md-nav__link> <span class=md-ellipsis> Access with default value: value </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../../features/iterators/ class=md-nav__link> <span class=md-ellipsis> Iterators </span> </a> </li> <li class=md-nav__item> <a href=../../../features/json_pointer/ class=md-nav__link> <span class=md-ellipsis> JSON Pointer </span> </a> </li> <li class=md-nav__item> <a href=../../../features/json_patch/ class=md-nav__link> <span class=md-ellipsis> JSON Patch and Diff </span> </a> </li> <li class=md-nav__item> <a href=../../../features/merge_patch/ class=md-nav__link> <span class=md-ellipsis> JSON Merge Patch </span> </a> </li> <li class=md-nav__item> <a href=../../../features/modules/ class=md-nav__link> <span class=md-ellipsis> Modules </span> </a> </li> <li class=md-nav__item> <a href=../../../features/namespace/ class=md-nav__link> <span class=md-ellipsis> nlohmann Namespace </span> </a> </li> <li class=md-nav__item> <a href=../../../features/object_order/ class=md-nav__link> <span class=md-ellipsis> Object Order </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_14> <div class="md-nav__link md-nav__container"> <a href=../../../features/parsing/ class="md-nav__link "> <span class=md-ellipsis> Parsing </span> </a> <label class="md-nav__link " for=__nav_2_14 id=__nav_2_14_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_14_label aria-expanded=false> <label class=md-nav__title for=__nav_2_14> <span class="md-nav__icon md-icon"></span> Parsing </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/parsing/json_lines/ class=md-nav__link> <span class=md-ellipsis> JSON Lines </span> </a> </li> <li class=md-nav__item> <a href=../../../features/parsing/parse_exceptions/ class=md-nav__link> <span class=md-ellipsis> Parsing and Exceptions </span> </a> </li> <li class=md-nav__item> <a href=../../../features/parsing/parser_callbacks/ class=md-nav__link> <span class=md-ellipsis> Parser Callbacks </span> </a> </li> <li class=md-nav__item> <a href=../../../features/parsing/sax_interface/ class=md-nav__link> <span class=md-ellipsis> SAX Interface </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../../features/assertions/ class=md-nav__link> <span class=md-ellipsis> Runtime Assertions </span> </a> </li> <li class=md-nav__item> <a href=../../../features/enum_conversion/ class=md-nav__link> <span class=md-ellipsis> Specializing enum conversion </span> </a> </li> <li class=md-nav__item> <a href=../../../features/macros/ class=md-nav__link> <span class=md-ellipsis> Supported Macros </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_18> <div class="md-nav__link md-nav__container"> <a href=../../../features/types/ class="md-nav__link "> <span class=md-ellipsis> Types </span> </a> <label class="md-nav__link " for=__nav_2_18 id=__nav_2_18_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_18_label aria-expanded=false> <label class=md-nav__title for=__nav_2_18> <span class="md-nav__icon md-icon"></span> Types </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/types/number_handling/ class=md-nav__link> <span class=md-ellipsis> Number Handling </span> </a> </li> </ul> </nav> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_3> <div class="md-nav__link md-nav__container"> <a href=../../../integration/ class="md-nav__link "> <span class=md-ellipsis> Integration </span> </a> <label class="md-nav__link " for=__nav_3 id=__nav_3_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_3_label aria-expanded=false> <label class=md-nav__title for=__nav_3> <span class="md-nav__icon md-icon"></span> Integration </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../integration/migration_guide/ class=md-nav__link> <span class=md-ellipsis> Migration Guide </span> </a> </li> <li class=md-nav__item> <a href=../../../integration/cmake/ class=md-nav__link> <span class=md-ellipsis> CMake </span> </a> </li> <li class=md-nav__item> <a href=../../../integration/package_managers/ class=md-nav__link> <span class=md-ellipsis> Package Managers </span> </a> </li> <li class=md-nav__item> <a href=../../../integration/pkg-config/ class=md-nav__link> <span class=md-ellipsis> Pkg-config </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--active md-nav__item--section md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4 checked> <label class=md-nav__link for=__nav_4 id=__nav_4_label tabindex> <span class=md-ellipsis> API Documentation </span> <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_4_label aria-expanded=true> <label class=md-nav__title for=__nav_4> <span class="md-nav__icon md-icon"></span> API Documentation </label> <ul class=md-nav__list data-md-scrollfix> <li class="md-nav__item md-nav__item--active md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_1 checked> <div class="md-nav__link md-nav__container"> <a href=../ class="md-nav__link "> <span class=md-ellipsis> basic_json </span> </a> <label class="md-nav__link " for=__nav_4_1 id=__nav_4_1_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_1_label aria-expanded=true> <label class=md-nav__title for=__nav_4_1> <span class="md-nav__icon md-icon"></span> basic_json </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../basic_json/ class=md-nav__link> <span class=md-ellipsis> (Constructor) </span> </a> </li> <li class=md-nav__item> <a href=../~basic_json/ class=md-nav__link> <span class=md-ellipsis> (Destructor) </span> </a> </li> <li class=md-nav__item> <a href=../accept/ class=md-nav__link> <span class=md-ellipsis> accept </span> </a> </li> <li class=md-nav__item> <a href=../array/ class=md-nav__link> <span class=md-ellipsis> array </span> </a> </li> <li class=md-nav__item> <a href=../array_t/ class=md-nav__link> <span class=md-ellipsis> array_t </span> </a> </li> <li class=md-nav__item> <a href=../at/ class=md-nav__link> <span class=md-ellipsis> at </span> </a> </li> <li class=md-nav__item> <a href=../back/ class=md-nav__link> <span class=md-ellipsis> back </span> </a> </li> <li class=md-nav__item> <a href=../begin/ class=md-nav__link> <span class=md-ellipsis> begin </span> </a> </li> <li class=md-nav__item> <a href=../binary/ class=md-nav__link> <span class=md-ellipsis> binary </span> </a> </li> <li class=md-nav__item> <a href=../binary_t/ class=md-nav__link> <span class=md-ellipsis> binary_t </span> </a> </li> <li class=md-nav__item> <a href=../boolean_t/ class=md-nav__link> <span class=md-ellipsis> boolean_t </span> </a> </li> <li class=md-nav__item> <a href=../cbegin/ class=md-nav__link> <span class=md-ellipsis> cbegin </span> </a> </li> <li class=md-nav__item> <a href=../cbor_tag_handler_t/ class=md-nav__link> <span class=md-ellipsis> cbor_tag_handler_t </span> </a> </li> <li class=md-nav__item> <a href=../cend/ class=md-nav__link> <span class=md-ellipsis> cend </span> </a> </li> <li class=md-nav__item> <a href=../clear/ class=md-nav__link> <span class=md-ellipsis> clear </span> </a> </li> <li class=md-nav__item> <a href=../contains/ class=md-nav__link> <span class=md-ellipsis> contains </span> </a> </li> <li class=md-nav__item> <a href=../count/ class=md-nav__link> <span class=md-ellipsis> count </span> </a> </li> <li class=md-nav__item> <a href=../crbegin/ class=md-nav__link> <span class=md-ellipsis> crbegin </span> </a> </li> <li class=md-nav__item> <a href=../crend/ class=md-nav__link> <span class=md-ellipsis> crend </span> </a> </li> <li class=md-nav__item> <a href=../default_object_comparator_t/ class=md-nav__link> <span class=md-ellipsis> default_object_comparator_t </span> </a> </li> <li class=md-nav__item> <a href=../diff/ class=md-nav__link> <span class=md-ellipsis> diff </span> </a> </li> <li class=md-nav__item> <a href=../dump/ class=md-nav__link> <span class=md-ellipsis> dump </span> </a> </li> <li class=md-nav__item> <a href=../emplace/ class=md-nav__link> <span class=md-ellipsis> emplace </span> </a> </li> <li class=md-nav__item> <a href=../emplace_back/ class=md-nav__link> <span class=md-ellipsis> emplace_back </span> </a> </li> <li class=md-nav__item> <a href=../empty/ class=md-nav__link> <span class=md-ellipsis> empty </span> </a> </li> <li class=md-nav__item> <a href=../end/ class=md-nav__link> <span class=md-ellipsis> end </span> </a> </li> <li class=md-nav__item> <a href=../end_pos/ class=md-nav__link> <span class=md-ellipsis> end_pos </span> </a> </li> <li class=md-nav__item> <a href=../erase/ class=md-nav__link> <span class=md-ellipsis> erase </span> </a> </li> <li class=md-nav__item> <a href=../error_handler_t/ class=md-nav__link> <span class=md-ellipsis> error_handler_t </span> </a> </li> <li class=md-nav__item> <a href=../exception/ class=md-nav__link> <span class=md-ellipsis> exception </span> </a> </li> <li class=md-nav__item> <a href=../find/ class=md-nav__link> <span class=md-ellipsis> find </span> </a> </li> <li class=md-nav__item> <a href=../flatten/ class=md-nav__link> <span class=md-ellipsis> flatten </span> </a> </li> <li class=md-nav__item> <a href=../from_bjdata/ class=md-nav__link> <span class=md-ellipsis> from_bjdata </span> </a> </li> <li class=md-nav__item> <a href=../from_bson/ class=md-nav__link> <span class=md-ellipsis> from_bson </span> </a> </li> <li class=md-nav__item> <a href=../from_cbor/ class=md-nav__link> <span class=md-ellipsis> from_cbor </span> </a> </li> <li class=md-nav__item> <a href=../from_msgpack/ class=md-nav__link> <span class=md-ellipsis> from_msgpack </span> </a> </li> <li class=md-nav__item> <a href=../from_ubjson/ class=md-nav__link> <span class=md-ellipsis> from_ubjson </span> </a> </li> <li class=md-nav__item> <a href=../front/ class=md-nav__link> <span class=md-ellipsis> front </span> </a> </li> <li class=md-nav__item> <a href=../get/ class=md-nav__link> <span class=md-ellipsis> get </span> </a> </li> <li class=md-nav__item> <a href=../get_allocator/ class=md-nav__link> <span class=md-ellipsis> get_allocator </span> </a> </li> <li class=md-nav__item> <a href=../get_binary/ class=md-nav__link> <span class=md-ellipsis> get_binary </span> </a> </li> <li class=md-nav__item> <a href=../get_ptr/ class=md-nav__link> <span class=md-ellipsis> get_ptr </span> </a> </li> <li class=md-nav__item> <a href=../get_ref/ class=md-nav__link> <span class=md-ellipsis> get_ref </span> </a> </li> <li class=md-nav__item> <a href=../get_to/ class=md-nav__link> <span class=md-ellipsis> get_to </span> </a> </li> <li class=md-nav__item> <a href=../std_hash/ class=md-nav__link> <span class=md-ellipsis> std::hash&lt;basic_json&gt; </span> </a> </li> <li class=md-nav__item> <a href=../input_format_t/ class=md-nav__link> <span class=md-ellipsis> input_format_t </span> </a> </li> <li class=md-nav__item> <a href=../insert/ class=md-nav__link> <span class=md-ellipsis> insert </span> </a> </li> <li class=md-nav__item> <a href=../invalid_iterator/ class=md-nav__link> <span class=md-ellipsis> invalid_iterator </span> </a> </li> <li class=md-nav__item> <a href=../is_array/ class=md-nav__link> <span class=md-ellipsis> is_array </span> </a> </li> <li class=md-nav__item> <a href=../is_binary/ class=md-nav__link> <span class=md-ellipsis> is_binary </span> </a> </li> <li class=md-nav__item> <a href=../is_boolean/ class=md-nav__link> <span class=md-ellipsis> is_boolean </span> </a> </li> <li class=md-nav__item> <a href=../is_discarded/ class=md-nav__link> <span class=md-ellipsis> is_discarded </span> </a> </li> <li class=md-nav__item> <a href=../is_null/ class=md-nav__link> <span class=md-ellipsis> is_null </span> </a> </li> <li class=md-nav__item> <a href=../is_number/ class=md-nav__link> <span class=md-ellipsis> is_number </span> </a> </li> <li class=md-nav__item> <a href=../is_number_float/ class=md-nav__link> <span class=md-ellipsis> is_number_float </span> </a> </li> <li class=md-nav__item> <a href=../is_number_integer/ class=md-nav__link> <span class=md-ellipsis> is_number_integer </span> </a> </li> <li class=md-nav__item> <a href=../is_number_unsigned/ class=md-nav__link> <span class=md-ellipsis> is_number_unsigned </span> </a> </li> <li class=md-nav__item> <a href=../is_object/ class=md-nav__link> <span class=md-ellipsis> is_object </span> </a> </li> <li class=md-nav__item> <a href=../is_primitive/ class=md-nav__link> <span class=md-ellipsis> is_primitive </span> </a> </li> <li class=md-nav__item> <a href=../is_string/ class=md-nav__link> <span class=md-ellipsis> is_string </span> </a> </li> <li class=md-nav__item> <a href=../is_structured/ class=md-nav__link> <span class=md-ellipsis> is_structured </span> </a> </li> <li class=md-nav__item> <a href=../items/ class=md-nav__link> <span class=md-ellipsis> items </span> </a> </li> <li class=md-nav__item> <a href=../json_base_class_t/ class=md-nav__link> <span class=md-ellipsis> json_base_class_t </span> </a> </li> <li class=md-nav__item> <a href=../json_serializer/ class=md-nav__link> <span class=md-ellipsis> json_serializer </span> </a> </li> <li class=md-nav__item> <a href=../max_size/ class=md-nav__link> <span class=md-ellipsis> max_size </span> </a> </li> <li class=md-nav__item> <a href=../meta/ class=md-nav__link> <span class=md-ellipsis> meta </span> </a> </li> <li class=md-nav__item> <a href=../merge_patch/ class=md-nav__link> <span class=md-ellipsis> merge_patch </span> </a> </li> <li class=md-nav__item> <a href=../number_float_t/ class=md-nav__link> <span class=md-ellipsis> number_float_t </span> </a> </li> <li class=md-nav__item> <a href=../number_integer_t/ class=md-nav__link> <span class=md-ellipsis> number_integer_t </span> </a> </li> <li class=md-nav__item> <a href=../number_unsigned_t/ class=md-nav__link> <span class=md-ellipsis> number_unsigned_t </span> </a> </li> <li class=md-nav__item> <a href=../object/ class=md-nav__link> <span class=md-ellipsis> object </span> </a> </li> <li class=md-nav__item> <a href=../object_comparator_t/ class=md-nav__link> <span class=md-ellipsis> object_comparator_t </span> </a> </li> <li class=md-nav__item> <a href=../object_t/ class=md-nav__link> <span class=md-ellipsis> object_t </span> </a> </li> <li class=md-nav__item> <a href=../operator_ValueType/ class=md-nav__link> <span class=md-ellipsis> operator ValueType </span> </a> </li> <li class=md-nav__item> <a href=../operator_value_t/ class=md-nav__link> <span class=md-ellipsis> operator value_t </span> </a> </li> <li class=md-nav__item> <a href=../operator%5B%5D/ class=md-nav__link> <span class=md-ellipsis> operator[] </span> </a> </li> <li class=md-nav__item> <a href=../operator%3D/ class=md-nav__link> <span class=md-ellipsis> operator= </span> </a> </li> <li class=md-nav__item> <a href=../operator%2B%3D/ class=md-nav__link> <span class=md-ellipsis> operator+= </span> </a> </li> <li class=md-nav__item> <a href=../operator_eq/ class=md-nav__link> <span class=md-ellipsis> operator== </span> </a> </li> <li class=md-nav__item> <a href=../operator_ne/ class=md-nav__link> <span class=md-ellipsis> operator!= </span> </a> </li> <li class=md-nav__item> <a href=../operator_lt/ class=md-nav__link> <span class=md-ellipsis> operator< </span> </a> </li> <li class=md-nav__item> <a href=../operator_gt/ class=md-nav__link> <span class=md-ellipsis> operator> </span> </a> </li> <li class=md-nav__item> <a href=../operator_le/ class=md-nav__link> <span class=md-ellipsis> operator<= </span> </a> </li> <li class=md-nav__item> <a href=../operator_ge/ class=md-nav__link> <span class=md-ellipsis> operator>= </span> </a> </li> <li class=md-nav__item> <a href=../operator_spaceship/ class=md-nav__link> <span class=md-ellipsis> operator<=> </span> </a> </li> <li class=md-nav__item> <a href=../out_of_range/ class=md-nav__link> <span class=md-ellipsis> out_of_range </span> </a> </li> <li class=md-nav__item> <a href=../other_error/ class=md-nav__link> <span class=md-ellipsis> other_error </span> </a> </li> <li class=md-nav__item> <a href=../parse/ class=md-nav__link> <span class=md-ellipsis> parse </span> </a> </li> <li class=md-nav__item> <a href=../parse_error/ class=md-nav__link> <span class=md-ellipsis> parse_error </span> </a> </li> <li class=md-nav__item> <a href=../parse_event_t/ class=md-nav__link> <span class=md-ellipsis> parse_event_t </span> </a> </li> <li class=md-nav__item> <a href=../parser_callback_t/ class=md-nav__link> <span class=md-ellipsis> parser_callback_t </span> </a> </li> <li class=md-nav__item> <a href=../patch/ class=md-nav__link> <span class=md-ellipsis> patch </span> </a> </li> <li class=md-nav__item> <a href=../patch_inplace/ class=md-nav__link> <span class=md-ellipsis> patch_inplace </span> </a> </li> <li class=md-nav__item> <a href=../push_back/ class=md-nav__link> <span class=md-ellipsis> push_back </span> </a> </li> <li class=md-nav__item> <a href=../rbegin/ class=md-nav__link> <span class=md-ellipsis> rbegin </span> </a> </li> <li class=md-nav__item> <a href=../rend/ class=md-nav__link> <span class=md-ellipsis> rend </span> </a> </li> <li class=md-nav__item> <a href=../sax_parse/ class=md-nav__link> <span class=md-ellipsis> sax_parse </span> </a> </li> <li class=md-nav__item> <a href=../size/ class=md-nav__link> <span class=md-ellipsis> size </span> </a> </li> <li class=md-nav__item> <a href=../start_pos/ class=md-nav__link> <span class=md-ellipsis> start_pos </span> </a> </li> <li class=md-nav__item> <a href=../string_t/ class=md-nav__link> <span class=md-ellipsis> string_t </span> </a> </li> <li class=md-nav__item> <a href=../swap/ class=md-nav__link> <span class=md-ellipsis> swap </span> </a> </li> <li class=md-nav__item> <a href=../std_swap/ class=md-nav__link> <span class=md-ellipsis> std::swap&lt;basic_json&gt; </span> </a> </li> <li class=md-nav__item> <a href=../to_bjdata/ class=md-nav__link> <span class=md-ellipsis> to_bjdata </span> </a> </li> <li class="md-nav__item md-nav__item--active"> <input class="md-nav__toggle md-toggle" type=checkbox id=__toc> <label class="md-nav__link md-nav__link--active" for=__toc> <span class=md-ellipsis> to_bson </span> <span class="md-nav__icon md-icon"></span> </label> <a href=./ class="md-nav__link md-nav__link--active"> <span class=md-ellipsis> to_bson </span> </a> <nav class="md-nav md-nav--secondary" aria-label="Table of contents"> <label class=md-nav__title for=__toc> <span class="md-nav__icon md-icon"></span> Table of contents </label> <ul class=md-nav__list data-md-component=toc data-md-scrollfix> <li class=md-nav__item> <a href=#parameters class=md-nav__link> <span class=md-ellipsis> Parameters </span> </a> </li> <li class=md-nav__item> <a href=#return-value class=md-nav__link> <span class=md-ellipsis> Return value </span> </a> </li> <li class=md-nav__item> <a href=#exception-safety class=md-nav__link> <span class=md-ellipsis> Exception safety </span> </a> </li> <li class=md-nav__item> <a href=#complexity class=md-nav__link> <span class=md-ellipsis> Complexity </span> </a> </li> <li class=md-nav__item> <a href=#examples class=md-nav__link> <span class=md-ellipsis> Examples </span> </a> </li> <li class=md-nav__item> <a href=#version-history class=md-nav__link> <span class=md-ellipsis> Version history </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../to_cbor/ class=md-nav__link> <span class=md-ellipsis> to_cbor </span> </a> </li> <li class=md-nav__item> <a href=../to_msgpack/ class=md-nav__link> <span class=md-ellipsis> to_msgpack </span> </a> </li> <li class=md-nav__item> <a href=../to_string/ class=md-nav__link> <span class=md-ellipsis> to_string </span> </a> </li> <li class=md-nav__item> <a href=../to_ubjson/ class=md-nav__link> <span class=md-ellipsis> to_ubjson </span> </a> </li> <li class=md-nav__item> <a href=../type/ class=md-nav__link> <span class=md-ellipsis> type </span> </a> </li> <li class=md-nav__item> <a href=../type_error/ class=md-nav__link> <span class=md-ellipsis> type_error </span> </a> </li> <li class=md-nav__item> <a href=../type_name/ class=md-nav__link> <span class=md-ellipsis> type_name </span> </a> </li> <li class=md-nav__item> <a href=../unflatten/ class=md-nav__link> <span class=md-ellipsis> unflatten </span> </a> </li> <li class=md-nav__item> <a href=../update/ class=md-nav__link> <span class=md-ellipsis> update </span> </a> </li> <li class=md-nav__item> <a href=../value/ class=md-nav__link> <span class=md-ellipsis> value </span> </a> </li> <li class=md-nav__item> <a href=../value_t/ class=md-nav__link> <span class=md-ellipsis> value_t </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_2> <div class="md-nav__link md-nav__container"> <a href=../../byte_container_with_subtype/ class="md-nav__link "> <span class=md-ellipsis> byte_container_with_subtype </span> </a> <label class="md-nav__link " for=__nav_4_2 id=__nav_4_2_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_2_label aria-expanded=false> <label class=md-nav__title for=__nav_4_2> <span class="md-nav__icon md-icon"></span> byte_container_with_subtype </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../byte_container_with_subtype/byte_container_with_subtype/ class=md-nav__link> <span class=md-ellipsis> (constructor) </span> </a> </li> <li class=md-nav__item> <a href=../../byte_container_with_subtype/clear_subtype/ class=md-nav__link> <span class=md-ellipsis> clear_subtype </span> </a> </li> <li class=md-nav__item> <a href=../../byte_container_with_subtype/has_subtype/ class=md-nav__link> <span class=md-ellipsis> has_subtype </span> </a> </li> <li class=md-nav__item> <a href=../../byte_container_with_subtype/set_subtype/ class=md-nav__link> <span class=md-ellipsis> set_subtype </span> </a> </li> <li class=md-nav__item> <a href=../../byte_container_with_subtype/subtype/ class=md-nav__link> <span class=md-ellipsis> subtype </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_3> <div class="md-nav__link md-nav__container"> <a href=../../adl_serializer/ class="md-nav__link "> <span class=md-ellipsis> adl_serializer </span> </a> <label class="md-nav__link " for=__nav_4_3 id=__nav_4_3_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_3_label aria-expanded=false> <label class=md-nav__title for=__nav_4_3> <span class="md-nav__icon md-icon"></span> adl_serializer </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../adl_serializer/from_json/ class=md-nav__link> <span class=md-ellipsis> from_json </span> </a> </li> <li class=md-nav__item> <a href=../../adl_serializer/to_json/ class=md-nav__link> <span class=md-ellipsis> to_json </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../json/ class=md-nav__link> <span class=md-ellipsis> json </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_5> <div class="md-nav__link md-nav__container"> <a href=../../json_pointer/ class="md-nav__link "> <span class=md-ellipsis> json_pointer </span> </a> <label class="md-nav__link " for=__nav_4_5 id=__nav_4_5_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_5_label aria-expanded=false> <label class=md-nav__title for=__nav_4_5> <span class="md-nav__icon md-icon"></span> json_pointer </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../json_pointer/json_pointer/ class=md-nav__link> <span class=md-ellipsis> (Constructor) </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/back/ class=md-nav__link> <span class=md-ellipsis> back </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/empty/ class=md-nav__link> <span class=md-ellipsis> empty </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/front/ class=md-nav__link> <span class=md-ellipsis> front </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_string_t/ class=md-nav__link> <span class=md-ellipsis> operator string_t </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_eq/ class=md-nav__link> <span class=md-ellipsis> operator== </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_ne/ class=md-nav__link> <span class=md-ellipsis> operator!= </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_slash/ class=md-nav__link> <span class=md-ellipsis> operator/ </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_slasheq/ class=md-nav__link> <span class=md-ellipsis> operator/= </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/parent_pointer/ class=md-nav__link> <span class=md-ellipsis> parent_pointer </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/pop_back/ class=md-nav__link> <span class=md-ellipsis> pop_back </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/pop_front/ class=md-nav__link> <span class=md-ellipsis> pop_front </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/push_back/ class=md-nav__link> <span class=md-ellipsis> push_back </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/push_front/ class=md-nav__link> <span class=md-ellipsis> push_front </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/string_t/ class=md-nav__link> <span class=md-ellipsis> string_t </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/to_string/ class=md-nav__link> <span class=md-ellipsis> to_string </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_6> <div class="md-nav__link md-nav__container"> <a href=../../json_sax/ class="md-nav__link "> <span class=md-ellipsis> json_sax </span> </a> <label class="md-nav__link " for=__nav_4_6 id=__nav_4_6_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_6_label aria-expanded=false> <label class=md-nav__title for=__nav_4_6> <span class="md-nav__icon md-icon"></span> json_sax </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../json_sax/binary/ class=md-nav__link> <span class=md-ellipsis> binary </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/boolean/ class=md-nav__link> <span class=md-ellipsis> boolean </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/end_array/ class=md-nav__link> <span class=md-ellipsis> end_array </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/end_object/ class=md-nav__link> <span class=md-ellipsis> end_object </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/key/ class=md-nav__link> <span class=md-ellipsis> key </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/null/ class=md-nav__link> <span class=md-ellipsis> null </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/number_float/ class=md-nav__link> <span class=md-ellipsis> number_float </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/number_integer/ class=md-nav__link> <span class=md-ellipsis> number_integer </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/number_unsigned/ class=md-nav__link> <span class=md-ellipsis> number_unsigned </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/parse_error/ class=md-nav__link> <span class=md-ellipsis> parse_error </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/start_array/ class=md-nav__link> <span class=md-ellipsis> start_array </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/start_object/ class=md-nav__link> <span class=md-ellipsis> start_object </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/string/ class=md-nav__link> <span class=md-ellipsis> string </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../operator_ltlt/ class=md-nav__link> <span class=md-ellipsis> operator<<(basic_json), operator<<(json_pointer) </span> </a> </li> <li class=md-nav__item> <a href=../../operator_gtgt/ class=md-nav__link> <span class=md-ellipsis> operator>>(basic_json) </span> </a> </li> <li class=md-nav__item> <a href=../../operator_literal_json/ class=md-nav__link> <span class=md-ellipsis> operator""_json </span> </a> </li> <li class=md-nav__item> <a href=../../operator_literal_json_pointer/ class=md-nav__link> <span class=md-ellipsis> operator""_json_pointer </span> </a> </li> <li class=md-nav__item> <a href=../../ordered_json/ class=md-nav__link> <span class=md-ellipsis> ordered_json </span> </a> </li> <li class=md-nav__item> <a href=../../ordered_map/ class=md-nav__link> <span class=md-ellipsis> ordered_map </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_13> <div class="md-nav__link md-nav__container"> <a href=../../macros/ class="md-nav__link "> <span class=md-ellipsis> macros </span> </a> <label class="md-nav__link " for=__nav_4_13 id=__nav_4_13_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_13_label aria-expanded=false> <label class=md-nav__title for=__nav_4_13> <span class="md-nav__icon md-icon"></span> macros </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../macros/json_assert/ class=md-nav__link> <span class=md-ellipsis> JSON_ASSERT </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_brace_init_copy_semantics/ class=md-nav__link> <span class=md-ellipsis> JSON_BRACE_INIT_COPY_SEMANTICS </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_throw_user/ class=md-nav__link> <span class=md-ellipsis> JSON_CATCH_USER, JSON_THROW_USER, JSON_TRY_USER </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_diagnostics/ class=md-nav__link> <span class=md-ellipsis> JSON_DIAGNOSTICS </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_diagnostic_positions/ class=md-nav__link> <span class=md-ellipsis> JSON_DIAGNOSTIC_POSITIONS </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_disable_enum_serialization/ class=md-nav__link> <span class=md-ellipsis> JSON_DISABLE_ENUM_SERIALIZATION </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_has_cpp_11/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_CPP_11, JSON_HAS_CPP_14, JSON_HAS_CPP_17, JSON_HAS_CPP_20 </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_has_filesystem/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_EXPERIMENTAL_FILESYSTEM, JSON_HAS_FILESYSTEM </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_has_ranges/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_RANGES </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_has_static_rtti/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_STATIC_RTTI </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_has_three_way_comparison/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_THREE_WAY_COMPARISON </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_noexception/ class=md-nav__link> <span class=md-ellipsis> JSON_NOEXCEPTION </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_no_io/ class=md-nav__link> <span class=md-ellipsis> JSON_NO_IO </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_skip_library_version_check/ class=md-nav__link> <span class=md-ellipsis> JSON_SKIP_LIBRARY_VERSION_CHECK </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_skip_unsupported_compiler_check/ class=md-nav__link> <span class=md-ellipsis> JSON_SKIP_UNSUPPORTED_COMPILER_CHECK </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_use_global_udls/ class=md-nav__link> <span class=md-ellipsis> JSON_USE_GLOBAL_UDLS </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_use_implicit_conversions/ class=md-nav__link> <span class=md-ellipsis> JSON_USE_IMPLICIT_CONVERSIONS </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_use_legacy_discarded_value_comparison/ class=md-nav__link> <span class=md-ellipsis> JSON_USE_LEGACY_DISCARDED_VALUE_COMPARISON </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_define_derived_type/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_ONLY_SERIALIZE, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_define_type_intrusive/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_TYPE_INTRUSIVE, NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_TYPE_INTRUSIVE_ONLY_SERIALIZE </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_define_type_non_intrusive/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_define_type_with_names/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_TYPE_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_namespace/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_NAMESPACE </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_namespace_begin/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_NAMESPACE_BEGIN, NLOHMANN_JSON_NAMESPACE_END </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_namespace_no_version/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_NAMESPACE_NO_VERSION </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_serialize_enum/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_SERIALIZE_ENUM </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_serialize_enum_strict/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_SERIALIZE_ENUM_STRICT </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_version_major/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_VERSION_MAJOR, NLOHMANN_JSON_VERSION_MINOR, NLOHMANN_JSON_VERSION_PATCH </span> </a> </li> </ul> </nav> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_5> <div class="md-nav__link md-nav__container"> <a href=../../../community/ class="md-nav__link "> <span class=md-ellipsis> Community </span> </a> <label class="md-nav__link " for=__nav_5 id=__nav_5_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_5_label aria-expanded=false> <label class=md-nav__title for=__nav_5> <span class="md-nav__icon md-icon"></span> Community </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../community/code_of_conduct/ class=md-nav__link> <span class=md-ellipsis> Code of Conduct </span> </a> </li> <li class=md-nav__item> <a href=../../../community/contribution_guidelines/ class=md-nav__link> <span class=md-ellipsis> Contribution Guidelines </span> </a> </li> <li class=md-nav__item> <a href=../../../community/quality_assurance/ class=md-nav__link> <span class=md-ellipsis> Quality assurance </span> </a> </li> <li class=md-nav__item> <a href=../../../community/governance/ class=md-nav__link> <span class=md-ellipsis> Governance </span> </a> </li> <li class=md-nav__item> <a href=../../../community/security_policy/ class=md-nav__link> <span class=md-ellipsis> Security Policy </span> </a> </li> </ul> </nav> </li> </ul> </nav> </div> </div> </div> <div class="md-sidebar md-sidebar--secondary" data-md-component=sidebar data-md-type=toc> <div class=md-sidebar__scrollwrap> <div class=md-sidebar__inner> <nav class="md-nav md-nav--secondary" aria-label="Table of contents"> <label class=md-nav__title for=__toc> <span class="md-nav__icon md-icon"></span> Table of contents </label> <ul class=md-nav__list data-md-component=toc data-md-scrollfix> <li class=md-nav__item> <a href=#parameters class=md-nav__link> <span class=md-ellipsis> Parameters </span> </a> </li> <li class=md-nav__item> <a href=#return-value class=md-nav__link> <span class=md-ellipsis> Return value </span> </a> </li> <li class=md-nav__item> <a href=#exception-safety class=md-nav__link> <span class=md-ellipsis> Exception safety </span> </a> </li> <li class=md-nav__item> <a href=#complexity class=md-nav__link> <span class=md-ellipsis> Complexity </span> </a> </li> <li class=md-nav__item> <a href=#examples class=md-nav__link> <span class=md-ellipsis> Examples </span> </a> </li> <li class=md-nav__item> <a href=#version-history class=md-nav__link> <span class=md-ellipsis> Version history </span> </a> </li> </ul> </nav> </div> </div> </div> <div class=md-content data-md-component=content> <article class="md-content__inner md-typeset"> <a href="https://github.com/nlohmann/json/edit/develop/docs/mkdocs/docs/api/basic_json/to_bson.md" title="Edit this page" class="md-content__button md-icon" rel="edit"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M10 20H6V4h7v5h5v3.1l2-2V8l-6-6H6c-1.1 0-2 .9-2 2v16c0 1.1.9 2 2 2h4zm10.2-7c.1 0 .3.1.4.2l1.3 1.3c.2.2.2.6 0 .8l-1 1-2.1-2.1 1-1c.1-.1.2-.2.4-.2m0 3.9L14.1 23H12v-2.1l6.1-6.1z"/></svg> </a> <a href="https://github.com/nlohmann/json/raw/develop/docs/mkdocs/docs/api/basic_json/to_bson.md" title="View source of this page" class="md-content__button md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M17 18c.56 0 1 .44 1 1s-.44 1-1 1-1-.44-1-1 .44-1 1-1m0-3c-2.73 0-5.06 1.66-6 4 .94 2.34 3.27 4 6 4s5.06-1.66 6-4c-.94-2.34-3.27-4-6-4m0 6.5a2.5 2.5 0 0 1-2.5-2.5 2.5 2.5 0 0 1 2.5-2.5 2.5 2.5 0 0 1 2.5 2.5 2.5 2.5 0 0 1-2.5 2.5M9.27 20H6V4h7v5h5v4.07c.7.08 1.36.25 2 .49V8l-6-6H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h4.5a8.2 8.2 0 0 1-1.23-2"/></svg> </a> <h1 id=nlohmannbasic_jsonto_bson><small>nlohmann::basic_json::</small>to_bson<a class=headerlink href=#nlohmannbasic_jsonto_bson title="Permanent link">&para;</a></h1> <div class=highlight><pre><span></span><code><span class=c1>// (1)</span>
+<!doctype html><html lang=en class=no-js> <head><meta charset=utf-8><meta name=viewport content="width=device-width,initial-scale=1"><meta name=author content="Niels Lohmann"><link href="https://json.nlohmann.me/api/basic_json/to_bson/" rel="canonical"><link href=../to_bjdata/ rel=prev><link href=../to_cbor/ rel=next><link rel=icon href=../../../assets/images/favicon.png><meta name=generator content="mkdocs-1.6.1, mkdocs-material-9.7.6"><title>to_bson - JSON for Modern C++</title><link rel=stylesheet href=../../../assets/stylesheets/main.484c7ddc.min.css><link rel=stylesheet href=../../../assets/stylesheets/palette.ab4e12ef.min.css><link rel="stylesheet" href="../../../assets/external/fonts.googleapis.com/css.61a430c9.css"><style>:root{--md-text-font:"Roboto";--md-code-font:"JetBrains Mono"}</style><link rel=stylesheet href=../../../css/custom.css><script>__md_scope=new URL("../../..",location),__md_hash=e=>[...e].reduce(((e,_)=>(e<<5)-e+_.charCodeAt(0)),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script></head> <body dir=ltr data-md-color-scheme=default data-md-color-primary=indigo data-md-color-accent=indigo> <input class=md-toggle data-md-toggle=drawer type=checkbox id=__drawer autocomplete=off> <input class=md-toggle data-md-toggle=search type=checkbox id=__search autocomplete=off> <label class=md-overlay for=__drawer></label> <div data-md-component=skip> <a href=#nlohmannbasic_jsonto_bson class=md-skip> Skip to content </a> </div> <div data-md-component=announce> </div> <header class=md-header data-md-component=header> <nav class="md-header__inner md-grid" aria-label=Header> <a href=../../.. title="JSON for Modern C++" class="md-header__button md-logo" aria-label="JSON for Modern C++" data-md-component=logo> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54"/></svg> </a> <label class="md-header__button md-icon" for=__drawer> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M3 6h18v2H3zm0 5h18v2H3zm0 5h18v2H3z"/></svg> </label> <div class=md-header__title data-md-component=header-title> <div class=md-header__ellipsis> <div class=md-header__topic> <span class=md-ellipsis> JSON for Modern C++ </span> </div> <div class=md-header__topic data-md-component=header-topic> <span class=md-ellipsis> to_bson </span> </div> </div> </div> <form class=md-header__option data-md-component=palette> <input class=md-option data-md-color-media="(prefers-color-scheme: light)" data-md-color-scheme=default data-md-color-primary=indigo data-md-color-accent=indigo aria-label="Switch to dark mode" type=radio name=__palette id=__palette_0> <label class="md-header__button md-icon" title="Switch to dark mode" for=__palette_1 hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a4 4 0 0 0-4 4 4 4 0 0 0 4 4 4 4 0 0 0 4-4 4 4 0 0 0-4-4m0 10a6 6 0 0 1-6-6 6 6 0 0 1 6-6 6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12z"/></svg> </label> <input class=md-option data-md-color-media="(prefers-color-scheme: dark)" data-md-color-scheme=slate data-md-color-primary=indigo data-md-color-accent=indigo aria-label="Switch to light mode" type=radio name=__palette id=__palette_1> <label class="md-header__button md-icon" title="Switch to light mode" for=__palette_0 hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 18c-.89 0-1.74-.2-2.5-.55C11.56 16.5 13 14.42 13 12s-1.44-4.5-3.5-5.45C10.26 6.2 11.11 6 12 6a6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12z"/></svg> </label> </form> <script>var palette=__md_get("__palette");if(palette&&palette.color){if("(prefers-color-scheme)"===palette.color.media){var media=matchMedia("(prefers-color-scheme: light)"),input=document.querySelector(media.matches?"[data-md-color-media='(prefers-color-scheme: light)']":"[data-md-color-media='(prefers-color-scheme: dark)']");palette.color.media=input.getAttribute("data-md-color-media"),palette.color.scheme=input.getAttribute("data-md-color-scheme"),palette.color.primary=input.getAttribute("data-md-color-primary"),palette.color.accent=input.getAttribute("data-md-color-accent")}for(var[key,value]of Object.entries(palette.color))document.body.setAttribute("data-md-color-"+key,value)}</script> <label class="md-header__button md-icon" for=__search> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg> </label> <div class=md-search data-md-component=search role=dialog> <label class=md-search__overlay for=__search></label> <div class=md-search__inner role=search> <form class=md-search__form name=search> <input type=text class=md-search__input name=query aria-label=Search placeholder=Search autocapitalize=off autocorrect=off autocomplete=off spellcheck=false data-md-component=search-query required> <label class="md-search__icon md-icon" for=__search> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11z"/></svg> </label> <nav class=md-search__options aria-label=Search> <button type=reset class="md-search__icon md-icon" title=Clear aria-label=Clear tabindex=-1> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z"/></svg> </button> </nav> </form> <div class=md-search__output> <div class=md-search__scrollwrap tabindex=0 data-md-scrollfix> <div class=md-search-result data-md-component=search-result> <div class=md-search-result__meta> Initializing search </div> <ol class=md-search-result__list role=presentation></ol> </div> </div> </div> </div> </div> <div class=md-header__source> <a href="https://github.com/nlohmann/json" title="Go to repository" class="md-source" data-md-component="source"> <div class="md-source__icon md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </div> <div class=md-source__repository> nlohmann/json </div> </a> </div> </nav> </header> <div class=md-container data-md-component=container> <nav class=md-tabs aria-label=Tabs data-md-component=tabs> <div class=md-grid> <ul class=md-tabs__list> <li class=md-tabs__item> <a href=../../.. class=md-tabs__link> Home </a> </li> <li class=md-tabs__item> <a href=../../../features/arbitrary_types/ class=md-tabs__link> Features </a> </li> <li class=md-tabs__item> <a href=../../../integration/ class=md-tabs__link> Integration </a> </li> <li class="md-tabs__item md-tabs__item--active"> <a href=../ class=md-tabs__link> API Documentation </a> </li> <li class=md-tabs__item> <a href=../../../community/ class=md-tabs__link> Community </a> </li> </ul> </div> </nav> <main class=md-main data-md-component=main> <div class="md-main__inner md-grid"> <div class="md-sidebar md-sidebar--primary" data-md-component=sidebar data-md-type=navigation> <div class=md-sidebar__scrollwrap> <div class=md-sidebar__inner> <nav class="md-nav md-nav--primary md-nav--lifted" aria-label=Navigation data-md-level=0> <label class=md-nav__title for=__drawer> <a href=../../.. title="JSON for Modern C++" class="md-nav__button md-logo" aria-label="JSON for Modern C++" data-md-component=logo> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54"/></svg> </a> JSON for Modern C++ </label> <div class=md-nav__source> <a href="https://github.com/nlohmann/json" title="Go to repository" class="md-source" data-md-component="source"> <div class="md-source__icon md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </div> <div class=md-source__repository> nlohmann/json </div> </a> </div> <ul class=md-nav__list data-md-scrollfix> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_1> <div class="md-nav__link md-nav__container"> <a href=../../.. class="md-nav__link "> <span class=md-ellipsis> Home </span> </a> <label class="md-nav__link " for=__nav_1 id=__nav_1_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_1_label aria-expanded=false> <label class=md-nav__title for=__nav_1> <span class="md-nav__icon md-icon"></span> Home </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../home/license/ class=md-nav__link> <span class=md-ellipsis> License </span> </a> </li> <li class=md-nav__item> <a href=../../../home/faq/ class=md-nav__link> <span class=md-ellipsis> FAQ </span> </a> </li> <li class=md-nav__item> <a href=../../../home/exceptions/ class=md-nav__link> <span class=md-ellipsis> Exceptions </span> </a> </li> <li class=md-nav__item> <a href=../../../home/releases/ class=md-nav__link> <span class=md-ellipsis> Releases </span> </a> </li> <li class=md-nav__item> <a href=../../../home/design_goals/ class=md-nav__link> <span class=md-ellipsis> Design goals </span> </a> </li> <li class=md-nav__item> <a href=../../../home/architecture/ class=md-nav__link> <span class=md-ellipsis> Architecture </span> </a> </li> <li class=md-nav__item> <a href=../../../home/customers/ class=md-nav__link> <span class=md-ellipsis> Customers </span> </a> </li> <li class=md-nav__item> <a href=../../../home/sponsors/ class=md-nav__link> <span class=md-ellipsis> Sponsors </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2> <label class=md-nav__link for=__nav_2 id=__nav_2_label tabindex=0> <span class=md-ellipsis> Features </span> <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_2_label aria-expanded=false> <label class=md-nav__title for=__nav_2> <span class="md-nav__icon md-icon"></span> Features </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/arbitrary_types/ class=md-nav__link> <span class=md-ellipsis> Arbitrary Type Conversions </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_2> <div class="md-nav__link md-nav__container"> <a href=../../../features/binary_formats/ class="md-nav__link "> <span class=md-ellipsis> Binary Formats </span> </a> <label class="md-nav__link " for=__nav_2_2 id=__nav_2_2_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_2_label aria-expanded=false> <label class=md-nav__title for=__nav_2_2> <span class="md-nav__icon md-icon"></span> Binary Formats </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/binary_formats/bjdata/ class=md-nav__link> <span class=md-ellipsis> BJData </span> </a> </li> <li class=md-nav__item> <a href=../../../features/binary_formats/bson/ class=md-nav__link> <span class=md-ellipsis> BSON </span> </a> </li> <li class=md-nav__item> <a href=../../../features/binary_formats/cbor/ class=md-nav__link> <span class=md-ellipsis> CBOR </span> </a> </li> <li class=md-nav__item> <a href=../../../features/binary_formats/messagepack/ class=md-nav__link> <span class=md-ellipsis> MessagePack </span> </a> </li> <li class=md-nav__item> <a href=../../../features/binary_formats/ubjson/ class=md-nav__link> <span class=md-ellipsis> UBJSON </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../../features/binary_values/ class=md-nav__link> <span class=md-ellipsis> Binary Values </span> </a> </li> <li class=md-nav__item> <a href=../../../features/comments/ class=md-nav__link> <span class=md-ellipsis> Comments </span> </a> </li> <li class=md-nav__item> <a href=../../../features/trailing_commas/ class=md-nav__link> <span class=md-ellipsis> Trailing Commas </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_6> <div class="md-nav__link md-nav__container"> <a href=../../../features/element_access/ class="md-nav__link "> <span class=md-ellipsis> Element Access </span> </a> <label class="md-nav__link " for=__nav_2_6 id=__nav_2_6_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_6_label aria-expanded=false> <label class=md-nav__title for=__nav_2_6> <span class="md-nav__icon md-icon"></span> Element Access </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/element_access/unchecked_access/ class=md-nav__link> <span class=md-ellipsis> Unchecked access: operator[] </span> </a> </li> <li class=md-nav__item> <a href=../../../features/element_access/checked_access/ class=md-nav__link> <span class=md-ellipsis> Checked access: at </span> </a> </li> <li class=md-nav__item> <a href=../../../features/element_access/default_value/ class=md-nav__link> <span class=md-ellipsis> Access with default value: value </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../../features/iterators/ class=md-nav__link> <span class=md-ellipsis> Iterators </span> </a> </li> <li class=md-nav__item> <a href=../../../features/json_pointer/ class=md-nav__link> <span class=md-ellipsis> JSON Pointer </span> </a> </li> <li class=md-nav__item> <a href=../../../features/json_patch/ class=md-nav__link> <span class=md-ellipsis> JSON Patch and Diff </span> </a> </li> <li class=md-nav__item> <a href=../../../features/merge_patch/ class=md-nav__link> <span class=md-ellipsis> JSON Merge Patch </span> </a> </li> <li class=md-nav__item> <a href=../../../features/modules/ class=md-nav__link> <span class=md-ellipsis> Modules </span> </a> </li> <li class=md-nav__item> <a href=../../../features/namespace/ class=md-nav__link> <span class=md-ellipsis> nlohmann Namespace </span> </a> </li> <li class=md-nav__item> <a href=../../../features/object_order/ class=md-nav__link> <span class=md-ellipsis> Object Order </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_14> <div class="md-nav__link md-nav__container"> <a href=../../../features/parsing/ class="md-nav__link "> <span class=md-ellipsis> Parsing </span> </a> <label class="md-nav__link " for=__nav_2_14 id=__nav_2_14_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_14_label aria-expanded=false> <label class=md-nav__title for=__nav_2_14> <span class="md-nav__icon md-icon"></span> Parsing </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/parsing/json_lines/ class=md-nav__link> <span class=md-ellipsis> JSON Lines </span> </a> </li> <li class=md-nav__item> <a href=../../../features/parsing/parse_exceptions/ class=md-nav__link> <span class=md-ellipsis> Parsing and Exceptions </span> </a> </li> <li class=md-nav__item> <a href=../../../features/parsing/parser_callbacks/ class=md-nav__link> <span class=md-ellipsis> Parser Callbacks </span> </a> </li> <li class=md-nav__item> <a href=../../../features/parsing/sax_interface/ class=md-nav__link> <span class=md-ellipsis> SAX Interface </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../../features/assertions/ class=md-nav__link> <span class=md-ellipsis> Runtime Assertions </span> </a> </li> <li class=md-nav__item> <a href=../../../features/enum_conversion/ class=md-nav__link> <span class=md-ellipsis> Specializing enum conversion </span> </a> </li> <li class=md-nav__item> <a href=../../../features/macros/ class=md-nav__link> <span class=md-ellipsis> Supported Macros </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_18> <div class="md-nav__link md-nav__container"> <a href=../../../features/types/ class="md-nav__link "> <span class=md-ellipsis> Types </span> </a> <label class="md-nav__link " for=__nav_2_18 id=__nav_2_18_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_18_label aria-expanded=false> <label class=md-nav__title for=__nav_2_18> <span class="md-nav__icon md-icon"></span> Types </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/types/number_handling/ class=md-nav__link> <span class=md-ellipsis> Number Handling </span> </a> </li> </ul> </nav> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_3> <div class="md-nav__link md-nav__container"> <a href=../../../integration/ class="md-nav__link "> <span class=md-ellipsis> Integration </span> </a> <label class="md-nav__link " for=__nav_3 id=__nav_3_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_3_label aria-expanded=false> <label class=md-nav__title for=__nav_3> <span class="md-nav__icon md-icon"></span> Integration </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../integration/migration_guide/ class=md-nav__link> <span class=md-ellipsis> Migration Guide </span> </a> </li> <li class=md-nav__item> <a href=../../../integration/cmake/ class=md-nav__link> <span class=md-ellipsis> CMake </span> </a> </li> <li class=md-nav__item> <a href=../../../integration/package_managers/ class=md-nav__link> <span class=md-ellipsis> Package Managers </span> </a> </li> <li class=md-nav__item> <a href=../../../integration/pkg-config/ class=md-nav__link> <span class=md-ellipsis> Pkg-config </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--active md-nav__item--section md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4 checked> <label class=md-nav__link for=__nav_4 id=__nav_4_label tabindex> <span class=md-ellipsis> API Documentation </span> <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_4_label aria-expanded=true> <label class=md-nav__title for=__nav_4> <span class="md-nav__icon md-icon"></span> API Documentation </label> <ul class=md-nav__list data-md-scrollfix> <li class="md-nav__item md-nav__item--active md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_1 checked> <div class="md-nav__link md-nav__container"> <a href=../ class="md-nav__link "> <span class=md-ellipsis> basic_json </span> </a> <label class="md-nav__link " for=__nav_4_1 id=__nav_4_1_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_1_label aria-expanded=true> <label class=md-nav__title for=__nav_4_1> <span class="md-nav__icon md-icon"></span> basic_json </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../basic_json/ class=md-nav__link> <span class=md-ellipsis> (Constructor) </span> </a> </li> <li class=md-nav__item> <a href=../~basic_json/ class=md-nav__link> <span class=md-ellipsis> (Destructor) </span> </a> </li> <li class=md-nav__item> <a href=../accept/ class=md-nav__link> <span class=md-ellipsis> accept </span> </a> </li> <li class=md-nav__item> <a href=../array/ class=md-nav__link> <span class=md-ellipsis> array </span> </a> </li> <li class=md-nav__item> <a href=../array_t/ class=md-nav__link> <span class=md-ellipsis> array_t </span> </a> </li> <li class=md-nav__item> <a href=../at/ class=md-nav__link> <span class=md-ellipsis> at </span> </a> </li> <li class=md-nav__item> <a href=../back/ class=md-nav__link> <span class=md-ellipsis> back </span> </a> </li> <li class=md-nav__item> <a href=../begin/ class=md-nav__link> <span class=md-ellipsis> begin </span> </a> </li> <li class=md-nav__item> <a href=../binary/ class=md-nav__link> <span class=md-ellipsis> binary </span> </a> </li> <li class=md-nav__item> <a href=../binary_t/ class=md-nav__link> <span class=md-ellipsis> binary_t </span> </a> </li> <li class=md-nav__item> <a href=../boolean_t/ class=md-nav__link> <span class=md-ellipsis> boolean_t </span> </a> </li> <li class=md-nav__item> <a href=../cbegin/ class=md-nav__link> <span class=md-ellipsis> cbegin </span> </a> </li> <li class=md-nav__item> <a href=../cbor_tag_handler_t/ class=md-nav__link> <span class=md-ellipsis> cbor_tag_handler_t </span> </a> </li> <li class=md-nav__item> <a href=../cend/ class=md-nav__link> <span class=md-ellipsis> cend </span> </a> </li> <li class=md-nav__item> <a href=../clear/ class=md-nav__link> <span class=md-ellipsis> clear </span> </a> </li> <li class=md-nav__item> <a href=../contains/ class=md-nav__link> <span class=md-ellipsis> contains </span> </a> </li> <li class=md-nav__item> <a href=../count/ class=md-nav__link> <span class=md-ellipsis> count </span> </a> </li> <li class=md-nav__item> <a href=../crbegin/ class=md-nav__link> <span class=md-ellipsis> crbegin </span> </a> </li> <li class=md-nav__item> <a href=../crend/ class=md-nav__link> <span class=md-ellipsis> crend </span> </a> </li> <li class=md-nav__item> <a href=../default_object_comparator_t/ class=md-nav__link> <span class=md-ellipsis> default_object_comparator_t </span> </a> </li> <li class=md-nav__item> <a href=../diff/ class=md-nav__link> <span class=md-ellipsis> diff </span> </a> </li> <li class=md-nav__item> <a href=../dump/ class=md-nav__link> <span class=md-ellipsis> dump </span> </a> </li> <li class=md-nav__item> <a href=../emplace/ class=md-nav__link> <span class=md-ellipsis> emplace </span> </a> </li> <li class=md-nav__item> <a href=../emplace_back/ class=md-nav__link> <span class=md-ellipsis> emplace_back </span> </a> </li> <li class=md-nav__item> <a href=../empty/ class=md-nav__link> <span class=md-ellipsis> empty </span> </a> </li> <li class=md-nav__item> <a href=../end/ class=md-nav__link> <span class=md-ellipsis> end </span> </a> </li> <li class=md-nav__item> <a href=../end_pos/ class=md-nav__link> <span class=md-ellipsis> end_pos </span> </a> </li> <li class=md-nav__item> <a href=../erase/ class=md-nav__link> <span class=md-ellipsis> erase </span> </a> </li> <li class=md-nav__item> <a href=../error_handler_t/ class=md-nav__link> <span class=md-ellipsis> error_handler_t </span> </a> </li> <li class=md-nav__item> <a href=../exception/ class=md-nav__link> <span class=md-ellipsis> exception </span> </a> </li> <li class=md-nav__item> <a href=../find/ class=md-nav__link> <span class=md-ellipsis> find </span> </a> </li> <li class=md-nav__item> <a href=../flatten/ class=md-nav__link> <span class=md-ellipsis> flatten </span> </a> </li> <li class=md-nav__item> <a href=../from_bjdata/ class=md-nav__link> <span class=md-ellipsis> from_bjdata </span> </a> </li> <li class=md-nav__item> <a href=../from_bson/ class=md-nav__link> <span class=md-ellipsis> from_bson </span> </a> </li> <li class=md-nav__item> <a href=../from_cbor/ class=md-nav__link> <span class=md-ellipsis> from_cbor </span> </a> </li> <li class=md-nav__item> <a href=../from_msgpack/ class=md-nav__link> <span class=md-ellipsis> from_msgpack </span> </a> </li> <li class=md-nav__item> <a href=../from_ubjson/ class=md-nav__link> <span class=md-ellipsis> from_ubjson </span> </a> </li> <li class=md-nav__item> <a href=../front/ class=md-nav__link> <span class=md-ellipsis> front </span> </a> </li> <li class=md-nav__item> <a href=../get/ class=md-nav__link> <span class=md-ellipsis> get </span> </a> </li> <li class=md-nav__item> <a href=../get_allocator/ class=md-nav__link> <span class=md-ellipsis> get_allocator </span> </a> </li> <li class=md-nav__item> <a href=../get_binary/ class=md-nav__link> <span class=md-ellipsis> get_binary </span> </a> </li> <li class=md-nav__item> <a href=../get_ptr/ class=md-nav__link> <span class=md-ellipsis> get_ptr </span> </a> </li> <li class=md-nav__item> <a href=../get_ref/ class=md-nav__link> <span class=md-ellipsis> get_ref </span> </a> </li> <li class=md-nav__item> <a href=../get_to/ class=md-nav__link> <span class=md-ellipsis> get_to </span> </a> </li> <li class=md-nav__item> <a href=../std_hash/ class=md-nav__link> <span class=md-ellipsis> std::hash&lt;basic_json&gt; </span> </a> </li> <li class=md-nav__item> <a href=../input_format_t/ class=md-nav__link> <span class=md-ellipsis> input_format_t </span> </a> </li> <li class=md-nav__item> <a href=../insert/ class=md-nav__link> <span class=md-ellipsis> insert </span> </a> </li> <li class=md-nav__item> <a href=../invalid_iterator/ class=md-nav__link> <span class=md-ellipsis> invalid_iterator </span> </a> </li> <li class=md-nav__item> <a href=../is_array/ class=md-nav__link> <span class=md-ellipsis> is_array </span> </a> </li> <li class=md-nav__item> <a href=../is_binary/ class=md-nav__link> <span class=md-ellipsis> is_binary </span> </a> </li> <li class=md-nav__item> <a href=../is_boolean/ class=md-nav__link> <span class=md-ellipsis> is_boolean </span> </a> </li> <li class=md-nav__item> <a href=../is_discarded/ class=md-nav__link> <span class=md-ellipsis> is_discarded </span> </a> </li> <li class=md-nav__item> <a href=../is_null/ class=md-nav__link> <span class=md-ellipsis> is_null </span> </a> </li> <li class=md-nav__item> <a href=../is_number/ class=md-nav__link> <span class=md-ellipsis> is_number </span> </a> </li> <li class=md-nav__item> <a href=../is_number_float/ class=md-nav__link> <span class=md-ellipsis> is_number_float </span> </a> </li> <li class=md-nav__item> <a href=../is_number_integer/ class=md-nav__link> <span class=md-ellipsis> is_number_integer </span> </a> </li> <li class=md-nav__item> <a href=../is_number_unsigned/ class=md-nav__link> <span class=md-ellipsis> is_number_unsigned </span> </a> </li> <li class=md-nav__item> <a href=../is_object/ class=md-nav__link> <span class=md-ellipsis> is_object </span> </a> </li> <li class=md-nav__item> <a href=../is_primitive/ class=md-nav__link> <span class=md-ellipsis> is_primitive </span> </a> </li> <li class=md-nav__item> <a href=../is_string/ class=md-nav__link> <span class=md-ellipsis> is_string </span> </a> </li> <li class=md-nav__item> <a href=../is_structured/ class=md-nav__link> <span class=md-ellipsis> is_structured </span> </a> </li> <li class=md-nav__item> <a href=../items/ class=md-nav__link> <span class=md-ellipsis> items </span> </a> </li> <li class=md-nav__item> <a href=../json_base_class_t/ class=md-nav__link> <span class=md-ellipsis> json_base_class_t </span> </a> </li> <li class=md-nav__item> <a href=../json_serializer/ class=md-nav__link> <span class=md-ellipsis> json_serializer </span> </a> </li> <li class=md-nav__item> <a href=../max_size/ class=md-nav__link> <span class=md-ellipsis> max_size </span> </a> </li> <li class=md-nav__item> <a href=../meta/ class=md-nav__link> <span class=md-ellipsis> meta </span> </a> </li> <li class=md-nav__item> <a href=../merge_patch/ class=md-nav__link> <span class=md-ellipsis> merge_patch </span> </a> </li> <li class=md-nav__item> <a href=../number_float_t/ class=md-nav__link> <span class=md-ellipsis> number_float_t </span> </a> </li> <li class=md-nav__item> <a href=../number_integer_t/ class=md-nav__link> <span class=md-ellipsis> number_integer_t </span> </a> </li> <li class=md-nav__item> <a href=../number_unsigned_t/ class=md-nav__link> <span class=md-ellipsis> number_unsigned_t </span> </a> </li> <li class=md-nav__item> <a href=../object/ class=md-nav__link> <span class=md-ellipsis> object </span> </a> </li> <li class=md-nav__item> <a href=../object_comparator_t/ class=md-nav__link> <span class=md-ellipsis> object_comparator_t </span> </a> </li> <li class=md-nav__item> <a href=../object_t/ class=md-nav__link> <span class=md-ellipsis> object_t </span> </a> </li> <li class=md-nav__item> <a href=../operator_ValueType/ class=md-nav__link> <span class=md-ellipsis> operator ValueType </span> </a> </li> <li class=md-nav__item> <a href=../operator_value_t/ class=md-nav__link> <span class=md-ellipsis> operator value_t </span> </a> </li> <li class=md-nav__item> <a href=../operator%5B%5D/ class=md-nav__link> <span class=md-ellipsis> operator[] </span> </a> </li> <li class=md-nav__item> <a href=../operator%3D/ class=md-nav__link> <span class=md-ellipsis> operator= </span> </a> </li> <li class=md-nav__item> <a href=../operator%2B%3D/ class=md-nav__link> <span class=md-ellipsis> operator+= </span> </a> </li> <li class=md-nav__item> <a href=../operator_eq/ class=md-nav__link> <span class=md-ellipsis> operator== </span> </a> </li> <li class=md-nav__item> <a href=../operator_ne/ class=md-nav__link> <span class=md-ellipsis> operator!= </span> </a> </li> <li class=md-nav__item> <a href=../operator_lt/ class=md-nav__link> <span class=md-ellipsis> operator< </span> </a> </li> <li class=md-nav__item> <a href=../operator_gt/ class=md-nav__link> <span class=md-ellipsis> operator> </span> </a> </li> <li class=md-nav__item> <a href=../operator_le/ class=md-nav__link> <span class=md-ellipsis> operator<= </span> </a> </li> <li class=md-nav__item> <a href=../operator_ge/ class=md-nav__link> <span class=md-ellipsis> operator>= </span> </a> </li> <li class=md-nav__item> <a href=../operator_spaceship/ class=md-nav__link> <span class=md-ellipsis> operator<=> </span> </a> </li> <li class=md-nav__item> <a href=../out_of_range/ class=md-nav__link> <span class=md-ellipsis> out_of_range </span> </a> </li> <li class=md-nav__item> <a href=../other_error/ class=md-nav__link> <span class=md-ellipsis> other_error </span> </a> </li> <li class=md-nav__item> <a href=../parse/ class=md-nav__link> <span class=md-ellipsis> parse </span> </a> </li> <li class=md-nav__item> <a href=../parse_error/ class=md-nav__link> <span class=md-ellipsis> parse_error </span> </a> </li> <li class=md-nav__item> <a href=../parse_event_t/ class=md-nav__link> <span class=md-ellipsis> parse_event_t </span> </a> </li> <li class=md-nav__item> <a href=../parser_callback_t/ class=md-nav__link> <span class=md-ellipsis> parser_callback_t </span> </a> </li> <li class=md-nav__item> <a href=../patch/ class=md-nav__link> <span class=md-ellipsis> patch </span> </a> </li> <li class=md-nav__item> <a href=../patch_inplace/ class=md-nav__link> <span class=md-ellipsis> patch_inplace </span> </a> </li> <li class=md-nav__item> <a href=../push_back/ class=md-nav__link> <span class=md-ellipsis> push_back </span> </a> </li> <li class=md-nav__item> <a href=../rbegin/ class=md-nav__link> <span class=md-ellipsis> rbegin </span> </a> </li> <li class=md-nav__item> <a href=../rend/ class=md-nav__link> <span class=md-ellipsis> rend </span> </a> </li> <li class=md-nav__item> <a href=../sax_parse/ class=md-nav__link> <span class=md-ellipsis> sax_parse </span> </a> </li> <li class=md-nav__item> <a href=../size/ class=md-nav__link> <span class=md-ellipsis> size </span> </a> </li> <li class=md-nav__item> <a href=../start_pos/ class=md-nav__link> <span class=md-ellipsis> start_pos </span> </a> </li> <li class=md-nav__item> <a href=../string_t/ class=md-nav__link> <span class=md-ellipsis> string_t </span> </a> </li> <li class=md-nav__item> <a href=../swap/ class=md-nav__link> <span class=md-ellipsis> swap </span> </a> </li> <li class=md-nav__item> <a href=../std_swap/ class=md-nav__link> <span class=md-ellipsis> std::swap&lt;basic_json&gt; </span> </a> </li> <li class=md-nav__item> <a href=../to_bjdata/ class=md-nav__link> <span class=md-ellipsis> to_bjdata </span> </a> </li> <li class="md-nav__item md-nav__item--active"> <input class="md-nav__toggle md-toggle" type=checkbox id=__toc> <label class="md-nav__link md-nav__link--active" for=__toc> <span class=md-ellipsis> to_bson </span> <span class="md-nav__icon md-icon"></span> </label> <a href=./ class="md-nav__link md-nav__link--active"> <span class=md-ellipsis> to_bson </span> </a> <nav class="md-nav md-nav--secondary" aria-label="Table of contents"> <label class=md-nav__title for=__toc> <span class="md-nav__icon md-icon"></span> Table of contents </label> <ul class=md-nav__list data-md-component=toc data-md-scrollfix> <li class=md-nav__item> <a href=#parameters class=md-nav__link> <span class=md-ellipsis> Parameters </span> </a> </li> <li class=md-nav__item> <a href=#return-value class=md-nav__link> <span class=md-ellipsis> Return value </span> </a> </li> <li class=md-nav__item> <a href=#exception-safety class=md-nav__link> <span class=md-ellipsis> Exception safety </span> </a> </li> <li class=md-nav__item> <a href=#exceptions class=md-nav__link> <span class=md-ellipsis> Exceptions </span> </a> </li> <li class=md-nav__item> <a href=#complexity class=md-nav__link> <span class=md-ellipsis> Complexity </span> </a> </li> <li class=md-nav__item> <a href=#examples class=md-nav__link> <span class=md-ellipsis> Examples </span> </a> </li> <li class=md-nav__item> <a href=#see-also class=md-nav__link> <span class=md-ellipsis> See also </span> </a> </li> <li class=md-nav__item> <a href=#version-history class=md-nav__link> <span class=md-ellipsis> Version history </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../to_cbor/ class=md-nav__link> <span class=md-ellipsis> to_cbor </span> </a> </li> <li class=md-nav__item> <a href=../to_msgpack/ class=md-nav__link> <span class=md-ellipsis> to_msgpack </span> </a> </li> <li class=md-nav__item> <a href=../to_string/ class=md-nav__link> <span class=md-ellipsis> to_string </span> </a> </li> <li class=md-nav__item> <a href=../to_ubjson/ class=md-nav__link> <span class=md-ellipsis> to_ubjson </span> </a> </li> <li class=md-nav__item> <a href=../type/ class=md-nav__link> <span class=md-ellipsis> type </span> </a> </li> <li class=md-nav__item> <a href=../type_error/ class=md-nav__link> <span class=md-ellipsis> type_error </span> </a> </li> <li class=md-nav__item> <a href=../type_name/ class=md-nav__link> <span class=md-ellipsis> type_name </span> </a> </li> <li class=md-nav__item> <a href=../unflatten/ class=md-nav__link> <span class=md-ellipsis> unflatten </span> </a> </li> <li class=md-nav__item> <a href=../update/ class=md-nav__link> <span class=md-ellipsis> update </span> </a> </li> <li class=md-nav__item> <a href=../value/ class=md-nav__link> <span class=md-ellipsis> value </span> </a> </li> <li class=md-nav__item> <a href=../value_t/ class=md-nav__link> <span class=md-ellipsis> value_t </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_2> <div class="md-nav__link md-nav__container"> <a href=../../byte_container_with_subtype/ class="md-nav__link "> <span class=md-ellipsis> byte_container_with_subtype </span> </a> <label class="md-nav__link " for=__nav_4_2 id=__nav_4_2_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_2_label aria-expanded=false> <label class=md-nav__title for=__nav_4_2> <span class="md-nav__icon md-icon"></span> byte_container_with_subtype </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../byte_container_with_subtype/byte_container_with_subtype/ class=md-nav__link> <span class=md-ellipsis> (constructor) </span> </a> </li> <li class=md-nav__item> <a href=../../byte_container_with_subtype/clear_subtype/ class=md-nav__link> <span class=md-ellipsis> clear_subtype </span> </a> </li> <li class=md-nav__item> <a href=../../byte_container_with_subtype/has_subtype/ class=md-nav__link> <span class=md-ellipsis> has_subtype </span> </a> </li> <li class=md-nav__item> <a href=../../byte_container_with_subtype/set_subtype/ class=md-nav__link> <span class=md-ellipsis> set_subtype </span> </a> </li> <li class=md-nav__item> <a href=../../byte_container_with_subtype/subtype/ class=md-nav__link> <span class=md-ellipsis> subtype </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_3> <div class="md-nav__link md-nav__container"> <a href=../../adl_serializer/ class="md-nav__link "> <span class=md-ellipsis> adl_serializer </span> </a> <label class="md-nav__link " for=__nav_4_3 id=__nav_4_3_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_3_label aria-expanded=false> <label class=md-nav__title for=__nav_4_3> <span class="md-nav__icon md-icon"></span> adl_serializer </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../adl_serializer/from_json/ class=md-nav__link> <span class=md-ellipsis> from_json </span> </a> </li> <li class=md-nav__item> <a href=../../adl_serializer/to_json/ class=md-nav__link> <span class=md-ellipsis> to_json </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../json/ class=md-nav__link> <span class=md-ellipsis> json </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_5> <div class="md-nav__link md-nav__container"> <a href=../../json_pointer/ class="md-nav__link "> <span class=md-ellipsis> json_pointer </span> </a> <label class="md-nav__link " for=__nav_4_5 id=__nav_4_5_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_5_label aria-expanded=false> <label class=md-nav__title for=__nav_4_5> <span class="md-nav__icon md-icon"></span> json_pointer </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../json_pointer/json_pointer/ class=md-nav__link> <span class=md-ellipsis> (Constructor) </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/back/ class=md-nav__link> <span class=md-ellipsis> back </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/empty/ class=md-nav__link> <span class=md-ellipsis> empty </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/front/ class=md-nav__link> <span class=md-ellipsis> front </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_string_t/ class=md-nav__link> <span class=md-ellipsis> operator string_t </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_eq/ class=md-nav__link> <span class=md-ellipsis> operator== </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_ne/ class=md-nav__link> <span class=md-ellipsis> operator!= </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_slash/ class=md-nav__link> <span class=md-ellipsis> operator/ </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_slasheq/ class=md-nav__link> <span class=md-ellipsis> operator/= </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/parent_pointer/ class=md-nav__link> <span class=md-ellipsis> parent_pointer </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/pop_back/ class=md-nav__link> <span class=md-ellipsis> pop_back </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/pop_front/ class=md-nav__link> <span class=md-ellipsis> pop_front </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/push_back/ class=md-nav__link> <span class=md-ellipsis> push_back </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/push_front/ class=md-nav__link> <span class=md-ellipsis> push_front </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/string_t/ class=md-nav__link> <span class=md-ellipsis> string_t </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/to_string/ class=md-nav__link> <span class=md-ellipsis> to_string </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_6> <div class="md-nav__link md-nav__container"> <a href=../../json_sax/ class="md-nav__link "> <span class=md-ellipsis> json_sax </span> </a> <label class="md-nav__link " for=__nav_4_6 id=__nav_4_6_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_6_label aria-expanded=false> <label class=md-nav__title for=__nav_4_6> <span class="md-nav__icon md-icon"></span> json_sax </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../json_sax/binary/ class=md-nav__link> <span class=md-ellipsis> binary </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/boolean/ class=md-nav__link> <span class=md-ellipsis> boolean </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/end_array/ class=md-nav__link> <span class=md-ellipsis> end_array </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/end_object/ class=md-nav__link> <span class=md-ellipsis> end_object </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/key/ class=md-nav__link> <span class=md-ellipsis> key </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/null/ class=md-nav__link> <span class=md-ellipsis> null </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/number_float/ class=md-nav__link> <span class=md-ellipsis> number_float </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/number_integer/ class=md-nav__link> <span class=md-ellipsis> number_integer </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/number_unsigned/ class=md-nav__link> <span class=md-ellipsis> number_unsigned </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/parse_error/ class=md-nav__link> <span class=md-ellipsis> parse_error </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/start_array/ class=md-nav__link> <span class=md-ellipsis> start_array </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/start_object/ class=md-nav__link> <span class=md-ellipsis> start_object </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/string/ class=md-nav__link> <span class=md-ellipsis> string </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../operator_ltlt/ class=md-nav__link> <span class=md-ellipsis> operator<<(basic_json), operator<<(json_pointer) </span> </a> </li> <li class=md-nav__item> <a href=../../operator_gtgt/ class=md-nav__link> <span class=md-ellipsis> operator>>(basic_json) </span> </a> </li> <li class=md-nav__item> <a href=../../operator_literal_json/ class=md-nav__link> <span class=md-ellipsis> operator""_json </span> </a> </li> <li class=md-nav__item> <a href=../../operator_literal_json_pointer/ class=md-nav__link> <span class=md-ellipsis> operator""_json_pointer </span> </a> </li> <li class=md-nav__item> <a href=../../ordered_json/ class=md-nav__link> <span class=md-ellipsis> ordered_json </span> </a> </li> <li class=md-nav__item> <a href=../../ordered_map/ class=md-nav__link> <span class=md-ellipsis> ordered_map </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_13> <div class="md-nav__link md-nav__container"> <a href=../../macros/ class="md-nav__link "> <span class=md-ellipsis> macros </span> </a> <label class="md-nav__link " for=__nav_4_13 id=__nav_4_13_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_13_label aria-expanded=false> <label class=md-nav__title for=__nav_4_13> <span class="md-nav__icon md-icon"></span> macros </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../macros/json_assert/ class=md-nav__link> <span class=md-ellipsis> JSON_ASSERT </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_brace_init_copy_semantics/ class=md-nav__link> <span class=md-ellipsis> JSON_BRACE_INIT_COPY_SEMANTICS </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_throw_user/ class=md-nav__link> <span class=md-ellipsis> JSON_CATCH_USER, JSON_THROW_USER, JSON_TRY_USER </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_diagnostics/ class=md-nav__link> <span class=md-ellipsis> JSON_DIAGNOSTICS </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_diagnostic_positions/ class=md-nav__link> <span class=md-ellipsis> JSON_DIAGNOSTIC_POSITIONS </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_disable_enum_serialization/ class=md-nav__link> <span class=md-ellipsis> JSON_DISABLE_ENUM_SERIALIZATION </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_has_cpp_11/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_CPP_11, JSON_HAS_CPP_14, JSON_HAS_CPP_17, JSON_HAS_CPP_20 </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_has_filesystem/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_EXPERIMENTAL_FILESYSTEM, JSON_HAS_FILESYSTEM </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_has_ranges/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_RANGES </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_has_static_rtti/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_STATIC_RTTI </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_has_three_way_comparison/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_THREE_WAY_COMPARISON </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_noexception/ class=md-nav__link> <span class=md-ellipsis> JSON_NOEXCEPTION </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_no_io/ class=md-nav__link> <span class=md-ellipsis> JSON_NO_IO </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_skip_library_version_check/ class=md-nav__link> <span class=md-ellipsis> JSON_SKIP_LIBRARY_VERSION_CHECK </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_skip_unsupported_compiler_check/ class=md-nav__link> <span class=md-ellipsis> JSON_SKIP_UNSUPPORTED_COMPILER_CHECK </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_use_global_udls/ class=md-nav__link> <span class=md-ellipsis> JSON_USE_GLOBAL_UDLS </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_use_implicit_conversions/ class=md-nav__link> <span class=md-ellipsis> JSON_USE_IMPLICIT_CONVERSIONS </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_use_legacy_discarded_value_comparison/ class=md-nav__link> <span class=md-ellipsis> JSON_USE_LEGACY_DISCARDED_VALUE_COMPARISON </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_define_derived_type/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_ONLY_SERIALIZE, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_define_type_intrusive/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_TYPE_INTRUSIVE, NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_TYPE_INTRUSIVE_ONLY_SERIALIZE </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_define_type_non_intrusive/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_define_type_with_names/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_TYPE_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_namespace/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_NAMESPACE </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_namespace_begin/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_NAMESPACE_BEGIN, NLOHMANN_JSON_NAMESPACE_END </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_namespace_no_version/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_NAMESPACE_NO_VERSION </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_serialize_enum/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_SERIALIZE_ENUM </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_serialize_enum_strict/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_SERIALIZE_ENUM_STRICT </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_version_major/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_VERSION_MAJOR, NLOHMANN_JSON_VERSION_MINOR, NLOHMANN_JSON_VERSION_PATCH </span> </a> </li> </ul> </nav> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_5> <div class="md-nav__link md-nav__container"> <a href=../../../community/ class="md-nav__link "> <span class=md-ellipsis> Community </span> </a> <label class="md-nav__link " for=__nav_5 id=__nav_5_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_5_label aria-expanded=false> <label class=md-nav__title for=__nav_5> <span class="md-nav__icon md-icon"></span> Community </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../community/code_of_conduct/ class=md-nav__link> <span class=md-ellipsis> Code of Conduct </span> </a> </li> <li class=md-nav__item> <a href=../../../community/contribution_guidelines/ class=md-nav__link> <span class=md-ellipsis> Contribution Guidelines </span> </a> </li> <li class=md-nav__item> <a href=../../../community/quality_assurance/ class=md-nav__link> <span class=md-ellipsis> Quality assurance </span> </a> </li> <li class=md-nav__item> <a href=../../../community/governance/ class=md-nav__link> <span class=md-ellipsis> Governance </span> </a> </li> <li class=md-nav__item> <a href=../../../community/security_policy/ class=md-nav__link> <span class=md-ellipsis> Security Policy </span> </a> </li> </ul> </nav> </li> </ul> </nav> </div> </div> </div> <div class="md-sidebar md-sidebar--secondary" data-md-component=sidebar data-md-type=toc> <div class=md-sidebar__scrollwrap> <div class=md-sidebar__inner> <nav class="md-nav md-nav--secondary" aria-label="Table of contents"> <label class=md-nav__title for=__toc> <span class="md-nav__icon md-icon"></span> Table of contents </label> <ul class=md-nav__list data-md-component=toc data-md-scrollfix> <li class=md-nav__item> <a href=#parameters class=md-nav__link> <span class=md-ellipsis> Parameters </span> </a> </li> <li class=md-nav__item> <a href=#return-value class=md-nav__link> <span class=md-ellipsis> Return value </span> </a> </li> <li class=md-nav__item> <a href=#exception-safety class=md-nav__link> <span class=md-ellipsis> Exception safety </span> </a> </li> <li class=md-nav__item> <a href=#exceptions class=md-nav__link> <span class=md-ellipsis> Exceptions </span> </a> </li> <li class=md-nav__item> <a href=#complexity class=md-nav__link> <span class=md-ellipsis> Complexity </span> </a> </li> <li class=md-nav__item> <a href=#examples class=md-nav__link> <span class=md-ellipsis> Examples </span> </a> </li> <li class=md-nav__item> <a href=#see-also class=md-nav__link> <span class=md-ellipsis> See also </span> </a> </li> <li class=md-nav__item> <a href=#version-history class=md-nav__link> <span class=md-ellipsis> Version history </span> </a> </li> </ul> </nav> </div> </div> </div> <div class=md-content data-md-component=content> <article class="md-content__inner md-typeset"> <a href="https://github.com/nlohmann/json/edit/develop/docs/mkdocs/docs/api/basic_json/to_bson.md" title="Edit this page" class="md-content__button md-icon" rel="edit"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M10 20H6V4h7v5h5v3.1l2-2V8l-6-6H6c-1.1 0-2 .9-2 2v16c0 1.1.9 2 2 2h4zm10.2-7c.1 0 .3.1.4.2l1.3 1.3c.2.2.2.6 0 .8l-1 1-2.1-2.1 1-1c.1-.1.2-.2.4-.2m0 3.9L14.1 23H12v-2.1l6.1-6.1z"/></svg> </a> <a href="https://github.com/nlohmann/json/raw/develop/docs/mkdocs/docs/api/basic_json/to_bson.md" title="View source of this page" class="md-content__button md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M17 18c.56 0 1 .44 1 1s-.44 1-1 1-1-.44-1-1 .44-1 1-1m0-3c-2.73 0-5.06 1.66-6 4 .94 2.34 3.27 4 6 4s5.06-1.66 6-4c-.94-2.34-3.27-4-6-4m0 6.5a2.5 2.5 0 0 1-2.5-2.5 2.5 2.5 0 0 1 2.5-2.5 2.5 2.5 0 0 1 2.5 2.5 2.5 2.5 0 0 1-2.5 2.5M9.27 20H6V4h7v5h5v4.07c.7.08 1.36.25 2 .49V8l-6-6H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h4.5a8.2 8.2 0 0 1-1.23-2"/></svg> </a> <h1 id=nlohmannbasic_jsonto_bson><small>nlohmann::basic_json::</small>to_bson<a class=headerlink href=#nlohmannbasic_jsonto_bson title="Permanent link">&para;</a></h1> <div class=highlight><pre><span></span><code><span class=c1>// (1)</span>
 <span class=k>static</span><span class=w> </span><span class=n>std</span><span class=o>::</span><span class=n>vector</span><span class=o>&lt;</span><span class=n>std</span><span class=o>::</span><span class=kt>uint8_t</span><span class=o>&gt;</span><span class=w> </span><span class=n>to_bson</span><span class=p>(</span><span class=k>const</span><span class=w> </span><span class=n>basic_json</span><span class=o>&amp;</span><span class=w> </span><span class=n>j</span><span class=p>);</span>
 
 <span class=c1>// (2)</span>
 <span class=k>static</span><span class=w> </span><span class=kt>void</span><span class=w> </span><span class=nf>to_bson</span><span class=p>(</span><span class=k>const</span><span class=w> </span><span class=n>basic_json</span><span class=o>&amp;</span><span class=w> </span><span class=n>j</span><span class=p>,</span><span class=w> </span><span class=n>detail</span><span class=o>::</span><span class=n>output_adapter</span><span class=o>&lt;</span><span class=n>std</span><span class=o>::</span><span class=kt>uint8_t</span><span class=o>&gt;</span><span class=w> </span><span class=n>o</span><span class=p>);</span>
 <span class=k>static</span><span class=w> </span><span class=kt>void</span><span class=w> </span><span class=nf>to_bson</span><span class=p>(</span><span class=k>const</span><span class=w> </span><span class=n>basic_json</span><span class=o>&amp;</span><span class=w> </span><span class=n>j</span><span class=p>,</span><span class=w> </span><span class=n>detail</span><span class=o>::</span><span class=n>output_adapter</span><span class=o>&lt;</span><span class=kt>char</span><span class=o>&gt;</span><span class=w> </span><span class=n>o</span><span class=p>);</span>
-</code></pre></div> <p><abbr title="Binary JSON">BSON</abbr> (Binary <abbr title="JavaScript Object Notation">JSON</abbr>) is a binary format in which zero or more ordered key/value pairs are stored as a single entity (a so-called document).</p> <ol> <li>Returns a byte vector containing the <abbr title="Binary JSON">BSON</abbr> serialization.</li> <li>Writes the <abbr title="Binary JSON">BSON</abbr> serialization to an output adapter.</li> </ol> <p>The exact mapping and its limitations are described on a <a href=../../../features/binary_formats/bson/ >dedicated page</a>.</p> <h2 id=parameters>Parameters<a class=headerlink href=#parameters title="Permanent link">&para;</a></h2> <dl> <dt><code>j</code> (in)</dt> <dd><abbr title="JavaScript Object Notation">JSON</abbr> value to serialize</dd> <dt><code>o</code> (in)</dt> <dd>output adapter to write serialization to</dd> </dl> <h2 id=return-value>Return value<a class=headerlink href=#return-value title="Permanent link">&para;</a></h2> <ol> <li><abbr title="Binary JSON">BSON</abbr> serialization as a byte vector</li> <li>(none)</li> </ol> <h2 id=exception-safety>Exception safety<a class=headerlink href=#exception-safety title="Permanent link">&para;</a></h2> <p>Strong guarantee: if an exception is thrown, there are no changes in the <abbr title="JavaScript Object Notation">JSON</abbr> value.</p> <h2 id=complexity>Complexity<a class=headerlink href=#complexity title="Permanent link">&para;</a></h2> <p>Linear in the size of the <abbr title="JavaScript Object Notation">JSON</abbr> value <code>j</code>.</p> <h2 id=examples>Examples<a class=headerlink href=#examples title="Permanent link">&para;</a></h2> <details class=example> <summary>Example</summary> <p>The example shows the serialization of a <abbr title="JavaScript Object Notation">JSON</abbr> value to a byte vector in <abbr title="Binary JSON">BSON</abbr> format.</p> <div class=highlight><pre><span></span><code><span class=cp>#include</span><span class=w> </span><span class=cpf>&lt;iostream&gt;</span>
+</code></pre></div> <p><abbr title="Binary JSON">BSON</abbr> (Binary <abbr title="JavaScript Object Notation">JSON</abbr>) is a binary format in which zero or more ordered key/value pairs are stored as a single entity (a so-called document).</p> <ol> <li>Returns a byte vector containing the <abbr title="Binary JSON">BSON</abbr> serialization.</li> <li>Writes the <abbr title="Binary JSON">BSON</abbr> serialization to an output adapter.</li> </ol> <p>The exact mapping and its limitations are described on a <a href=../../../features/binary_formats/bson/ >dedicated page</a>.</p> <h2 id=parameters>Parameters<a class=headerlink href=#parameters title="Permanent link">&para;</a></h2> <dl> <dt><code>j</code> (in)</dt> <dd><abbr title="JavaScript Object Notation">JSON</abbr> value to serialize</dd> <dt><code>o</code> (in)</dt> <dd>output adapter to write serialization to</dd> </dl> <h2 id=return-value>Return value<a class=headerlink href=#return-value title="Permanent link">&para;</a></h2> <ol> <li><abbr title="Binary JSON">BSON</abbr> serialization as a byte vector</li> <li>(none)</li> </ol> <h2 id=exception-safety>Exception safety<a class=headerlink href=#exception-safety title="Permanent link">&para;</a></h2> <p>Strong guarantee: if an exception is thrown, there are no changes in the <abbr title="JavaScript Object Notation">JSON</abbr> value.</p> <h2 id=exceptions>Exceptions<a class=headerlink href=#exceptions title="Permanent link">&para;</a></h2> <ul> <li>Throws <a href=../../../home/exceptions/#jsonexceptiontype_error317><code>type_error.317</code></a> if the top-level type of the <abbr title="JavaScript Object Notation">JSON</abbr> value is not an object; example: <code>"to serialize to BSON, top-level type must be object, but is string"</code></li> <li>Throws <a href=../../../home/exceptions/#jsonexceptionout_of_range409><code>out_of_range.409</code></a> if a key in the <abbr title="JavaScript Object Notation">JSON</abbr> object contains a null byte (code point U+0000); example: <code>"BSON key cannot contain code point U+0000 (at byte 2)"</code></li> </ul> <h2 id=complexity>Complexity<a class=headerlink href=#complexity title="Permanent link">&para;</a></h2> <p>Linear in the size of the <abbr title="JavaScript Object Notation">JSON</abbr> value <code>j</code>.</p> <h2 id=examples>Examples<a class=headerlink href=#examples title="Permanent link">&para;</a></h2> <details class=example> <summary>Example</summary> <p>The example shows the serialization of a <abbr title="JavaScript Object Notation">JSON</abbr> value to a byte vector in <abbr title="Binary JSON">BSON</abbr> format.</p> <div class=highlight><pre><span></span><code><span class=cp>#include</span><span class=w> </span><span class=cpf>&lt;iostream&gt;</span>
 <span class=cp>#include</span><span class=w> </span><span class=cpf>&lt;iomanip&gt;</span>
 <span class=cp>#include</span><span class=w> </span><span class=cpf>&lt;nlohmann/json.hpp&gt;</span>
 
@@ -27,4 +27,4 @@
 <span class=w>    </span><span class=n>std</span><span class=o>::</span><span class=n>cout</span><span class=w> </span><span class=o>&lt;&lt;</span><span class=w> </span><span class=n>std</span><span class=o>::</span><span class=n>endl</span><span class=p>;</span>
 <span class=p>}</span>
 </code></pre></div> <p>Output:</p> <div class=highlight><pre><span></span><code><span class=mi>0</span><span class=err>x</span><span class=mi>1</span><span class=err>b</span><span class=w> </span><span class=mi>0</span><span class=err>x</span><span class=mi>00</span><span class=w> </span><span class=mi>0</span><span class=err>x</span><span class=mi>00</span><span class=w> </span><span class=mi>0</span><span class=err>x</span><span class=mi>00</span><span class=w> </span><span class=mi>0</span><span class=err>x</span><span class=mi>08</span><span class=w> </span><span class=mi>0</span><span class=err>x</span><span class=mi>63</span><span class=w> </span><span class=mi>0</span><span class=err>x</span><span class=mi>6</span><span class=kc>f</span><span class=w> </span><span class=mi>0</span><span class=err>x</span><span class=mi>6</span><span class=err>d</span><span class=w> </span><span class=mi>0</span><span class=err>x</span><span class=mi>70</span><span class=w> </span><span class=mi>0</span><span class=err>x</span><span class=mi>61</span><span class=w> </span><span class=mi>0</span><span class=err>x</span><span class=mi>63</span><span class=w> </span><span class=mi>0</span><span class=err>x</span><span class=mi>74</span><span class=w> </span><span class=mi>0</span><span class=err>x</span><span class=mi>00</span><span class=w> </span><span class=mi>0</span><span class=err>x</span><span class=mi>01</span><span class=w> </span><span class=mi>0</span><span class=err>x</span><span class=mi>10</span><span class=w> </span><span class=mi>0</span><span class=err>x</span><span class=mi>73</span><span class=w> </span><span class=mi>0</span><span class=err>x</span><span class=mi>63</span><span class=w> </span><span class=mi>0</span><span class=err>x</span><span class=mi>68</span><span class=w> </span><span class=mi>0</span><span class=err>x</span><span class=mi>65</span><span class=w> </span><span class=mi>0</span><span class=err>x</span><span class=mi>6</span><span class=err>d</span><span class=w> </span><span class=mi>0</span><span class=err>x</span><span class=mi>61</span><span class=w> </span><span class=mi>0</span><span class=err>x</span><span class=mi>00</span><span class=w> </span><span class=mi>0</span><span class=err>x</span><span class=mi>00</span><span class=w> </span><span class=mi>0</span><span class=err>x</span><span class=mi>00</span><span class=w> </span><span class=mi>0</span><span class=err>x</span><span class=mi>00</span><span class=w> </span><span class=mi>0</span><span class=err>x</span><span class=mi>00</span><span class=w> </span><span class=mi>0</span><span class=err>x</span><span class=mi>00</span><span class=w> </span>
-</code></pre></div> </details> <h2 id=version-history>Version history<a class=headerlink href=#version-history title="Permanent link">&para;</a></h2> <ul> <li>Added in version 3.4.0.</li> </ul> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 23, 2026 11:16:18 UTC">June 23, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
+</code></pre></div> </details> <h2 id=see-also>See also<a class=headerlink href=#see-also title="Permanent link">&para;</a></h2> <ul> <li><a href=../from_bson/ >from_bson</a> create a <abbr title="JavaScript Object Notation">JSON</abbr> value from an input in <abbr title="Binary JSON">BSON</abbr> format</li> <li><a href=../to_cbor/ >to_cbor</a> create a <abbr title="Concise Binary Object Representation">CBOR</abbr> serialization of a <abbr title="JavaScript Object Notation">JSON</abbr> value</li> <li><a href=../to_msgpack/ >to_msgpack</a> create a MessagePack serialization of a <abbr title="JavaScript Object Notation">JSON</abbr> value</li> <li><a href=../to_ubjson/ >to_ubjson</a> create a <abbr title="Universal Binary JSON">UBJSON</abbr> serialization of a <abbr title="JavaScript Object Notation">JSON</abbr> value</li> <li><a href=../to_bjdata/ >to_bjdata</a> create a <abbr title="Binary JData">BJData</abbr> serialization of a <abbr title="JavaScript Object Notation">JSON</abbr> value</li> </ul> <h2 id=version-history>Version history<a class=headerlink href=#version-history title="Permanent link">&para;</a></h2> <ul> <li>Added in version 3.4.0.</li> </ul> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 29, 2026 20:15:18 UTC">June 29, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
diff --git a/api/basic_json/to_cbor/index.html b/api/basic_json/to_cbor/index.html
index 27acff9..76fa578 100644
--- a/api/basic_json/to_cbor/index.html
+++ b/api/basic_json/to_cbor/index.html
@@ -1,4 +1,4 @@
-<!doctype html><html lang=en class=no-js> <head><meta charset=utf-8><meta name=viewport content="width=device-width,initial-scale=1"><meta name=author content="Niels Lohmann"><link href="https://json.nlohmann.me/api/basic_json/to_cbor/" rel="canonical"><link href=../to_bson/ rel=prev><link href=../to_msgpack/ rel=next><link rel=icon href=../../../assets/images/favicon.png><meta name=generator content="mkdocs-1.6.1, mkdocs-material-9.7.6"><title>to_cbor - JSON for Modern C++</title><link rel=stylesheet href=../../../assets/stylesheets/main.484c7ddc.min.css><link rel=stylesheet href=../../../assets/stylesheets/palette.ab4e12ef.min.css><link rel="stylesheet" href="../../../assets/external/fonts.googleapis.com/css.61a430c9.css"><style>:root{--md-text-font:"Roboto";--md-code-font:"JetBrains Mono"}</style><link rel=stylesheet href=../../../css/custom.css><script>__md_scope=new URL("../../..",location),__md_hash=e=>[...e].reduce(((e,_)=>(e<<5)-e+_.charCodeAt(0)),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script></head> <body dir=ltr data-md-color-scheme=default data-md-color-primary=indigo data-md-color-accent=indigo> <input class=md-toggle data-md-toggle=drawer type=checkbox id=__drawer autocomplete=off> <input class=md-toggle data-md-toggle=search type=checkbox id=__search autocomplete=off> <label class=md-overlay for=__drawer></label> <div data-md-component=skip> <a href=#nlohmannbasic_jsonto_cbor class=md-skip> Skip to content </a> </div> <div data-md-component=announce> </div> <header class=md-header data-md-component=header> <nav class="md-header__inner md-grid" aria-label=Header> <a href=../../.. title="JSON for Modern C++" class="md-header__button md-logo" aria-label="JSON for Modern C++" data-md-component=logo> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54"/></svg> </a> <label class="md-header__button md-icon" for=__drawer> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M3 6h18v2H3zm0 5h18v2H3zm0 5h18v2H3z"/></svg> </label> <div class=md-header__title data-md-component=header-title> <div class=md-header__ellipsis> <div class=md-header__topic> <span class=md-ellipsis> JSON for Modern C++ </span> </div> <div class=md-header__topic data-md-component=header-topic> <span class=md-ellipsis> to_cbor </span> </div> </div> </div> <form class=md-header__option data-md-component=palette> <input class=md-option data-md-color-media="(prefers-color-scheme: light)" data-md-color-scheme=default data-md-color-primary=indigo data-md-color-accent=indigo aria-label="Switch to dark mode" type=radio name=__palette id=__palette_0> <label class="md-header__button md-icon" title="Switch to dark mode" for=__palette_1 hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a4 4 0 0 0-4 4 4 4 0 0 0 4 4 4 4 0 0 0 4-4 4 4 0 0 0-4-4m0 10a6 6 0 0 1-6-6 6 6 0 0 1 6-6 6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12z"/></svg> </label> <input class=md-option data-md-color-media="(prefers-color-scheme: dark)" data-md-color-scheme=slate data-md-color-primary=indigo data-md-color-accent=indigo aria-label="Switch to light mode" type=radio name=__palette id=__palette_1> <label class="md-header__button md-icon" title="Switch to light mode" for=__palette_0 hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 18c-.89 0-1.74-.2-2.5-.55C11.56 16.5 13 14.42 13 12s-1.44-4.5-3.5-5.45C10.26 6.2 11.11 6 12 6a6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12z"/></svg> </label> </form> <script>var palette=__md_get("__palette");if(palette&&palette.color){if("(prefers-color-scheme)"===palette.color.media){var media=matchMedia("(prefers-color-scheme: light)"),input=document.querySelector(media.matches?"[data-md-color-media='(prefers-color-scheme: light)']":"[data-md-color-media='(prefers-color-scheme: dark)']");palette.color.media=input.getAttribute("data-md-color-media"),palette.color.scheme=input.getAttribute("data-md-color-scheme"),palette.color.primary=input.getAttribute("data-md-color-primary"),palette.color.accent=input.getAttribute("data-md-color-accent")}for(var[key,value]of Object.entries(palette.color))document.body.setAttribute("data-md-color-"+key,value)}</script> <label class="md-header__button md-icon" for=__search> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg> </label> <div class=md-search data-md-component=search role=dialog> <label class=md-search__overlay for=__search></label> <div class=md-search__inner role=search> <form class=md-search__form name=search> <input type=text class=md-search__input name=query aria-label=Search placeholder=Search autocapitalize=off autocorrect=off autocomplete=off spellcheck=false data-md-component=search-query required> <label class="md-search__icon md-icon" for=__search> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11z"/></svg> </label> <nav class=md-search__options aria-label=Search> <button type=reset class="md-search__icon md-icon" title=Clear aria-label=Clear tabindex=-1> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z"/></svg> </button> </nav> </form> <div class=md-search__output> <div class=md-search__scrollwrap tabindex=0 data-md-scrollfix> <div class=md-search-result data-md-component=search-result> <div class=md-search-result__meta> Initializing search </div> <ol class=md-search-result__list role=presentation></ol> </div> </div> </div> </div> </div> <div class=md-header__source> <a href="https://github.com/nlohmann/json" title="Go to repository" class="md-source" data-md-component="source"> <div class="md-source__icon md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </div> <div class=md-source__repository> nlohmann/json </div> </a> </div> </nav> </header> <div class=md-container data-md-component=container> <nav class=md-tabs aria-label=Tabs data-md-component=tabs> <div class=md-grid> <ul class=md-tabs__list> <li class=md-tabs__item> <a href=../../.. class=md-tabs__link> Home </a> </li> <li class=md-tabs__item> <a href=../../../features/arbitrary_types/ class=md-tabs__link> Features </a> </li> <li class=md-tabs__item> <a href=../../../integration/ class=md-tabs__link> Integration </a> </li> <li class="md-tabs__item md-tabs__item--active"> <a href=../ class=md-tabs__link> API Documentation </a> </li> <li class=md-tabs__item> <a href=../../../community/ class=md-tabs__link> Community </a> </li> </ul> </div> </nav> <main class=md-main data-md-component=main> <div class="md-main__inner md-grid"> <div class="md-sidebar md-sidebar--primary" data-md-component=sidebar data-md-type=navigation> <div class=md-sidebar__scrollwrap> <div class=md-sidebar__inner> <nav class="md-nav md-nav--primary md-nav--lifted" aria-label=Navigation data-md-level=0> <label class=md-nav__title for=__drawer> <a href=../../.. title="JSON for Modern C++" class="md-nav__button md-logo" aria-label="JSON for Modern C++" data-md-component=logo> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54"/></svg> </a> JSON for Modern C++ </label> <div class=md-nav__source> <a href="https://github.com/nlohmann/json" title="Go to repository" class="md-source" data-md-component="source"> <div class="md-source__icon md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </div> <div class=md-source__repository> nlohmann/json </div> </a> </div> <ul class=md-nav__list data-md-scrollfix> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_1> <div class="md-nav__link md-nav__container"> <a href=../../.. class="md-nav__link "> <span class=md-ellipsis> Home </span> </a> <label class="md-nav__link " for=__nav_1 id=__nav_1_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_1_label aria-expanded=false> <label class=md-nav__title for=__nav_1> <span class="md-nav__icon md-icon"></span> Home </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../home/license/ class=md-nav__link> <span class=md-ellipsis> License </span> </a> </li> <li class=md-nav__item> <a href=../../../home/faq/ class=md-nav__link> <span class=md-ellipsis> FAQ </span> </a> </li> <li class=md-nav__item> <a href=../../../home/exceptions/ class=md-nav__link> <span class=md-ellipsis> Exceptions </span> </a> </li> <li class=md-nav__item> <a href=../../../home/releases/ class=md-nav__link> <span class=md-ellipsis> Releases </span> </a> </li> <li class=md-nav__item> <a href=../../../home/design_goals/ class=md-nav__link> <span class=md-ellipsis> Design goals </span> </a> </li> <li class=md-nav__item> <a href=../../../home/architecture/ class=md-nav__link> <span class=md-ellipsis> Architecture </span> </a> </li> <li class=md-nav__item> <a href=../../../home/customers/ class=md-nav__link> <span class=md-ellipsis> Customers </span> </a> </li> <li class=md-nav__item> <a href=../../../home/sponsors/ class=md-nav__link> <span class=md-ellipsis> Sponsors </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2> <label class=md-nav__link for=__nav_2 id=__nav_2_label tabindex=0> <span class=md-ellipsis> Features </span> <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_2_label aria-expanded=false> <label class=md-nav__title for=__nav_2> <span class="md-nav__icon md-icon"></span> Features </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/arbitrary_types/ class=md-nav__link> <span class=md-ellipsis> Arbitrary Type Conversions </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_2> <div class="md-nav__link md-nav__container"> <a href=../../../features/binary_formats/ class="md-nav__link "> <span class=md-ellipsis> Binary Formats </span> </a> <label class="md-nav__link " for=__nav_2_2 id=__nav_2_2_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_2_label aria-expanded=false> <label class=md-nav__title for=__nav_2_2> <span class="md-nav__icon md-icon"></span> Binary Formats </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/binary_formats/bjdata/ class=md-nav__link> <span class=md-ellipsis> BJData </span> </a> </li> <li class=md-nav__item> <a href=../../../features/binary_formats/bson/ class=md-nav__link> <span class=md-ellipsis> BSON </span> </a> </li> <li class=md-nav__item> <a href=../../../features/binary_formats/cbor/ class=md-nav__link> <span class=md-ellipsis> CBOR </span> </a> </li> <li class=md-nav__item> <a href=../../../features/binary_formats/messagepack/ class=md-nav__link> <span class=md-ellipsis> MessagePack </span> </a> </li> <li class=md-nav__item> <a href=../../../features/binary_formats/ubjson/ class=md-nav__link> <span class=md-ellipsis> UBJSON </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../../features/binary_values/ class=md-nav__link> <span class=md-ellipsis> Binary Values </span> </a> </li> <li class=md-nav__item> <a href=../../../features/comments/ class=md-nav__link> <span class=md-ellipsis> Comments </span> </a> </li> <li class=md-nav__item> <a href=../../../features/trailing_commas/ class=md-nav__link> <span class=md-ellipsis> Trailing Commas </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_6> <div class="md-nav__link md-nav__container"> <a href=../../../features/element_access/ class="md-nav__link "> <span class=md-ellipsis> Element Access </span> </a> <label class="md-nav__link " for=__nav_2_6 id=__nav_2_6_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_6_label aria-expanded=false> <label class=md-nav__title for=__nav_2_6> <span class="md-nav__icon md-icon"></span> Element Access </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/element_access/unchecked_access/ class=md-nav__link> <span class=md-ellipsis> Unchecked access: operator[] </span> </a> </li> <li class=md-nav__item> <a href=../../../features/element_access/checked_access/ class=md-nav__link> <span class=md-ellipsis> Checked access: at </span> </a> </li> <li class=md-nav__item> <a href=../../../features/element_access/default_value/ class=md-nav__link> <span class=md-ellipsis> Access with default value: value </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../../features/iterators/ class=md-nav__link> <span class=md-ellipsis> Iterators </span> </a> </li> <li class=md-nav__item> <a href=../../../features/json_pointer/ class=md-nav__link> <span class=md-ellipsis> JSON Pointer </span> </a> </li> <li class=md-nav__item> <a href=../../../features/json_patch/ class=md-nav__link> <span class=md-ellipsis> JSON Patch and Diff </span> </a> </li> <li class=md-nav__item> <a href=../../../features/merge_patch/ class=md-nav__link> <span class=md-ellipsis> JSON Merge Patch </span> </a> </li> <li class=md-nav__item> <a href=../../../features/modules/ class=md-nav__link> <span class=md-ellipsis> Modules </span> </a> </li> <li class=md-nav__item> <a href=../../../features/namespace/ class=md-nav__link> <span class=md-ellipsis> nlohmann Namespace </span> </a> </li> <li class=md-nav__item> <a href=../../../features/object_order/ class=md-nav__link> <span class=md-ellipsis> Object Order </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_14> <div class="md-nav__link md-nav__container"> <a href=../../../features/parsing/ class="md-nav__link "> <span class=md-ellipsis> Parsing </span> </a> <label class="md-nav__link " for=__nav_2_14 id=__nav_2_14_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_14_label aria-expanded=false> <label class=md-nav__title for=__nav_2_14> <span class="md-nav__icon md-icon"></span> Parsing </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/parsing/json_lines/ class=md-nav__link> <span class=md-ellipsis> JSON Lines </span> </a> </li> <li class=md-nav__item> <a href=../../../features/parsing/parse_exceptions/ class=md-nav__link> <span class=md-ellipsis> Parsing and Exceptions </span> </a> </li> <li class=md-nav__item> <a href=../../../features/parsing/parser_callbacks/ class=md-nav__link> <span class=md-ellipsis> Parser Callbacks </span> </a> </li> <li class=md-nav__item> <a href=../../../features/parsing/sax_interface/ class=md-nav__link> <span class=md-ellipsis> SAX Interface </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../../features/assertions/ class=md-nav__link> <span class=md-ellipsis> Runtime Assertions </span> </a> </li> <li class=md-nav__item> <a href=../../../features/enum_conversion/ class=md-nav__link> <span class=md-ellipsis> Specializing enum conversion </span> </a> </li> <li class=md-nav__item> <a href=../../../features/macros/ class=md-nav__link> <span class=md-ellipsis> Supported Macros </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_18> <div class="md-nav__link md-nav__container"> <a href=../../../features/types/ class="md-nav__link "> <span class=md-ellipsis> Types </span> </a> <label class="md-nav__link " for=__nav_2_18 id=__nav_2_18_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_18_label aria-expanded=false> <label class=md-nav__title for=__nav_2_18> <span class="md-nav__icon md-icon"></span> Types </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/types/number_handling/ class=md-nav__link> <span class=md-ellipsis> Number Handling </span> </a> </li> </ul> </nav> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_3> <div class="md-nav__link md-nav__container"> <a href=../../../integration/ class="md-nav__link "> <span class=md-ellipsis> Integration </span> </a> <label class="md-nav__link " for=__nav_3 id=__nav_3_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_3_label aria-expanded=false> <label class=md-nav__title for=__nav_3> <span class="md-nav__icon md-icon"></span> Integration </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../integration/migration_guide/ class=md-nav__link> <span class=md-ellipsis> Migration Guide </span> </a> </li> <li class=md-nav__item> <a href=../../../integration/cmake/ class=md-nav__link> <span class=md-ellipsis> CMake </span> </a> </li> <li class=md-nav__item> <a href=../../../integration/package_managers/ class=md-nav__link> <span class=md-ellipsis> Package Managers </span> </a> </li> <li class=md-nav__item> <a href=../../../integration/pkg-config/ class=md-nav__link> <span class=md-ellipsis> Pkg-config </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--active md-nav__item--section md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4 checked> <label class=md-nav__link for=__nav_4 id=__nav_4_label tabindex> <span class=md-ellipsis> API Documentation </span> <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_4_label aria-expanded=true> <label class=md-nav__title for=__nav_4> <span class="md-nav__icon md-icon"></span> API Documentation </label> <ul class=md-nav__list data-md-scrollfix> <li class="md-nav__item md-nav__item--active md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_1 checked> <div class="md-nav__link md-nav__container"> <a href=../ class="md-nav__link "> <span class=md-ellipsis> basic_json </span> </a> <label class="md-nav__link " for=__nav_4_1 id=__nav_4_1_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_1_label aria-expanded=true> <label class=md-nav__title for=__nav_4_1> <span class="md-nav__icon md-icon"></span> basic_json </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../basic_json/ class=md-nav__link> <span class=md-ellipsis> (Constructor) </span> </a> </li> <li class=md-nav__item> <a href=../~basic_json/ class=md-nav__link> <span class=md-ellipsis> (Destructor) </span> </a> </li> <li class=md-nav__item> <a href=../accept/ class=md-nav__link> <span class=md-ellipsis> accept </span> </a> </li> <li class=md-nav__item> <a href=../array/ class=md-nav__link> <span class=md-ellipsis> array </span> </a> </li> <li class=md-nav__item> <a href=../array_t/ class=md-nav__link> <span class=md-ellipsis> array_t </span> </a> </li> <li class=md-nav__item> <a href=../at/ class=md-nav__link> <span class=md-ellipsis> at </span> </a> </li> <li class=md-nav__item> <a href=../back/ class=md-nav__link> <span class=md-ellipsis> back </span> </a> </li> <li class=md-nav__item> <a href=../begin/ class=md-nav__link> <span class=md-ellipsis> begin </span> </a> </li> <li class=md-nav__item> <a href=../binary/ class=md-nav__link> <span class=md-ellipsis> binary </span> </a> </li> <li class=md-nav__item> <a href=../binary_t/ class=md-nav__link> <span class=md-ellipsis> binary_t </span> </a> </li> <li class=md-nav__item> <a href=../boolean_t/ class=md-nav__link> <span class=md-ellipsis> boolean_t </span> </a> </li> <li class=md-nav__item> <a href=../cbegin/ class=md-nav__link> <span class=md-ellipsis> cbegin </span> </a> </li> <li class=md-nav__item> <a href=../cbor_tag_handler_t/ class=md-nav__link> <span class=md-ellipsis> cbor_tag_handler_t </span> </a> </li> <li class=md-nav__item> <a href=../cend/ class=md-nav__link> <span class=md-ellipsis> cend </span> </a> </li> <li class=md-nav__item> <a href=../clear/ class=md-nav__link> <span class=md-ellipsis> clear </span> </a> </li> <li class=md-nav__item> <a href=../contains/ class=md-nav__link> <span class=md-ellipsis> contains </span> </a> </li> <li class=md-nav__item> <a href=../count/ class=md-nav__link> <span class=md-ellipsis> count </span> </a> </li> <li class=md-nav__item> <a href=../crbegin/ class=md-nav__link> <span class=md-ellipsis> crbegin </span> </a> </li> <li class=md-nav__item> <a href=../crend/ class=md-nav__link> <span class=md-ellipsis> crend </span> </a> </li> <li class=md-nav__item> <a href=../default_object_comparator_t/ class=md-nav__link> <span class=md-ellipsis> default_object_comparator_t </span> </a> </li> <li class=md-nav__item> <a href=../diff/ class=md-nav__link> <span class=md-ellipsis> diff </span> </a> </li> <li class=md-nav__item> <a href=../dump/ class=md-nav__link> <span class=md-ellipsis> dump </span> </a> </li> <li class=md-nav__item> <a href=../emplace/ class=md-nav__link> <span class=md-ellipsis> emplace </span> </a> </li> <li class=md-nav__item> <a href=../emplace_back/ class=md-nav__link> <span class=md-ellipsis> emplace_back </span> </a> </li> <li class=md-nav__item> <a href=../empty/ class=md-nav__link> <span class=md-ellipsis> empty </span> </a> </li> <li class=md-nav__item> <a href=../end/ class=md-nav__link> <span class=md-ellipsis> end </span> </a> </li> <li class=md-nav__item> <a href=../end_pos/ class=md-nav__link> <span class=md-ellipsis> end_pos </span> </a> </li> <li class=md-nav__item> <a href=../erase/ class=md-nav__link> <span class=md-ellipsis> erase </span> </a> </li> <li class=md-nav__item> <a href=../error_handler_t/ class=md-nav__link> <span class=md-ellipsis> error_handler_t </span> </a> </li> <li class=md-nav__item> <a href=../exception/ class=md-nav__link> <span class=md-ellipsis> exception </span> </a> </li> <li class=md-nav__item> <a href=../find/ class=md-nav__link> <span class=md-ellipsis> find </span> </a> </li> <li class=md-nav__item> <a href=../flatten/ class=md-nav__link> <span class=md-ellipsis> flatten </span> </a> </li> <li class=md-nav__item> <a href=../from_bjdata/ class=md-nav__link> <span class=md-ellipsis> from_bjdata </span> </a> </li> <li class=md-nav__item> <a href=../from_bson/ class=md-nav__link> <span class=md-ellipsis> from_bson </span> </a> </li> <li class=md-nav__item> <a href=../from_cbor/ class=md-nav__link> <span class=md-ellipsis> from_cbor </span> </a> </li> <li class=md-nav__item> <a href=../from_msgpack/ class=md-nav__link> <span class=md-ellipsis> from_msgpack </span> </a> </li> <li class=md-nav__item> <a href=../from_ubjson/ class=md-nav__link> <span class=md-ellipsis> from_ubjson </span> </a> </li> <li class=md-nav__item> <a href=../front/ class=md-nav__link> <span class=md-ellipsis> front </span> </a> </li> <li class=md-nav__item> <a href=../get/ class=md-nav__link> <span class=md-ellipsis> get </span> </a> </li> <li class=md-nav__item> <a href=../get_allocator/ class=md-nav__link> <span class=md-ellipsis> get_allocator </span> </a> </li> <li class=md-nav__item> <a href=../get_binary/ class=md-nav__link> <span class=md-ellipsis> get_binary </span> </a> </li> <li class=md-nav__item> <a href=../get_ptr/ class=md-nav__link> <span class=md-ellipsis> get_ptr </span> </a> </li> <li class=md-nav__item> <a href=../get_ref/ class=md-nav__link> <span class=md-ellipsis> get_ref </span> </a> </li> <li class=md-nav__item> <a href=../get_to/ class=md-nav__link> <span class=md-ellipsis> get_to </span> </a> </li> <li class=md-nav__item> <a href=../std_hash/ class=md-nav__link> <span class=md-ellipsis> std::hash&lt;basic_json&gt; </span> </a> </li> <li class=md-nav__item> <a href=../input_format_t/ class=md-nav__link> <span class=md-ellipsis> input_format_t </span> </a> </li> <li class=md-nav__item> <a href=../insert/ class=md-nav__link> <span class=md-ellipsis> insert </span> </a> </li> <li class=md-nav__item> <a href=../invalid_iterator/ class=md-nav__link> <span class=md-ellipsis> invalid_iterator </span> </a> </li> <li class=md-nav__item> <a href=../is_array/ class=md-nav__link> <span class=md-ellipsis> is_array </span> </a> </li> <li class=md-nav__item> <a href=../is_binary/ class=md-nav__link> <span class=md-ellipsis> is_binary </span> </a> </li> <li class=md-nav__item> <a href=../is_boolean/ class=md-nav__link> <span class=md-ellipsis> is_boolean </span> </a> </li> <li class=md-nav__item> <a href=../is_discarded/ class=md-nav__link> <span class=md-ellipsis> is_discarded </span> </a> </li> <li class=md-nav__item> <a href=../is_null/ class=md-nav__link> <span class=md-ellipsis> is_null </span> </a> </li> <li class=md-nav__item> <a href=../is_number/ class=md-nav__link> <span class=md-ellipsis> is_number </span> </a> </li> <li class=md-nav__item> <a href=../is_number_float/ class=md-nav__link> <span class=md-ellipsis> is_number_float </span> </a> </li> <li class=md-nav__item> <a href=../is_number_integer/ class=md-nav__link> <span class=md-ellipsis> is_number_integer </span> </a> </li> <li class=md-nav__item> <a href=../is_number_unsigned/ class=md-nav__link> <span class=md-ellipsis> is_number_unsigned </span> </a> </li> <li class=md-nav__item> <a href=../is_object/ class=md-nav__link> <span class=md-ellipsis> is_object </span> </a> </li> <li class=md-nav__item> <a href=../is_primitive/ class=md-nav__link> <span class=md-ellipsis> is_primitive </span> </a> </li> <li class=md-nav__item> <a href=../is_string/ class=md-nav__link> <span class=md-ellipsis> is_string </span> </a> </li> <li class=md-nav__item> <a href=../is_structured/ class=md-nav__link> <span class=md-ellipsis> is_structured </span> </a> </li> <li class=md-nav__item> <a href=../items/ class=md-nav__link> <span class=md-ellipsis> items </span> </a> </li> <li class=md-nav__item> <a href=../json_base_class_t/ class=md-nav__link> <span class=md-ellipsis> json_base_class_t </span> </a> </li> <li class=md-nav__item> <a href=../json_serializer/ class=md-nav__link> <span class=md-ellipsis> json_serializer </span> </a> </li> <li class=md-nav__item> <a href=../max_size/ class=md-nav__link> <span class=md-ellipsis> max_size </span> </a> </li> <li class=md-nav__item> <a href=../meta/ class=md-nav__link> <span class=md-ellipsis> meta </span> </a> </li> <li class=md-nav__item> <a href=../merge_patch/ class=md-nav__link> <span class=md-ellipsis> merge_patch </span> </a> </li> <li class=md-nav__item> <a href=../number_float_t/ class=md-nav__link> <span class=md-ellipsis> number_float_t </span> </a> </li> <li class=md-nav__item> <a href=../number_integer_t/ class=md-nav__link> <span class=md-ellipsis> number_integer_t </span> </a> </li> <li class=md-nav__item> <a href=../number_unsigned_t/ class=md-nav__link> <span class=md-ellipsis> number_unsigned_t </span> </a> </li> <li class=md-nav__item> <a href=../object/ class=md-nav__link> <span class=md-ellipsis> object </span> </a> </li> <li class=md-nav__item> <a href=../object_comparator_t/ class=md-nav__link> <span class=md-ellipsis> object_comparator_t </span> </a> </li> <li class=md-nav__item> <a href=../object_t/ class=md-nav__link> <span class=md-ellipsis> object_t </span> </a> </li> <li class=md-nav__item> <a href=../operator_ValueType/ class=md-nav__link> <span class=md-ellipsis> operator ValueType </span> </a> </li> <li class=md-nav__item> <a href=../operator_value_t/ class=md-nav__link> <span class=md-ellipsis> operator value_t </span> </a> </li> <li class=md-nav__item> <a href=../operator%5B%5D/ class=md-nav__link> <span class=md-ellipsis> operator[] </span> </a> </li> <li class=md-nav__item> <a href=../operator%3D/ class=md-nav__link> <span class=md-ellipsis> operator= </span> </a> </li> <li class=md-nav__item> <a href=../operator%2B%3D/ class=md-nav__link> <span class=md-ellipsis> operator+= </span> </a> </li> <li class=md-nav__item> <a href=../operator_eq/ class=md-nav__link> <span class=md-ellipsis> operator== </span> </a> </li> <li class=md-nav__item> <a href=../operator_ne/ class=md-nav__link> <span class=md-ellipsis> operator!= </span> </a> </li> <li class=md-nav__item> <a href=../operator_lt/ class=md-nav__link> <span class=md-ellipsis> operator< </span> </a> </li> <li class=md-nav__item> <a href=../operator_gt/ class=md-nav__link> <span class=md-ellipsis> operator> </span> </a> </li> <li class=md-nav__item> <a href=../operator_le/ class=md-nav__link> <span class=md-ellipsis> operator<= </span> </a> </li> <li class=md-nav__item> <a href=../operator_ge/ class=md-nav__link> <span class=md-ellipsis> operator>= </span> </a> </li> <li class=md-nav__item> <a href=../operator_spaceship/ class=md-nav__link> <span class=md-ellipsis> operator<=> </span> </a> </li> <li class=md-nav__item> <a href=../out_of_range/ class=md-nav__link> <span class=md-ellipsis> out_of_range </span> </a> </li> <li class=md-nav__item> <a href=../other_error/ class=md-nav__link> <span class=md-ellipsis> other_error </span> </a> </li> <li class=md-nav__item> <a href=../parse/ class=md-nav__link> <span class=md-ellipsis> parse </span> </a> </li> <li class=md-nav__item> <a href=../parse_error/ class=md-nav__link> <span class=md-ellipsis> parse_error </span> </a> </li> <li class=md-nav__item> <a href=../parse_event_t/ class=md-nav__link> <span class=md-ellipsis> parse_event_t </span> </a> </li> <li class=md-nav__item> <a href=../parser_callback_t/ class=md-nav__link> <span class=md-ellipsis> parser_callback_t </span> </a> </li> <li class=md-nav__item> <a href=../patch/ class=md-nav__link> <span class=md-ellipsis> patch </span> </a> </li> <li class=md-nav__item> <a href=../patch_inplace/ class=md-nav__link> <span class=md-ellipsis> patch_inplace </span> </a> </li> <li class=md-nav__item> <a href=../push_back/ class=md-nav__link> <span class=md-ellipsis> push_back </span> </a> </li> <li class=md-nav__item> <a href=../rbegin/ class=md-nav__link> <span class=md-ellipsis> rbegin </span> </a> </li> <li class=md-nav__item> <a href=../rend/ class=md-nav__link> <span class=md-ellipsis> rend </span> </a> </li> <li class=md-nav__item> <a href=../sax_parse/ class=md-nav__link> <span class=md-ellipsis> sax_parse </span> </a> </li> <li class=md-nav__item> <a href=../size/ class=md-nav__link> <span class=md-ellipsis> size </span> </a> </li> <li class=md-nav__item> <a href=../start_pos/ class=md-nav__link> <span class=md-ellipsis> start_pos </span> </a> </li> <li class=md-nav__item> <a href=../string_t/ class=md-nav__link> <span class=md-ellipsis> string_t </span> </a> </li> <li class=md-nav__item> <a href=../swap/ class=md-nav__link> <span class=md-ellipsis> swap </span> </a> </li> <li class=md-nav__item> <a href=../std_swap/ class=md-nav__link> <span class=md-ellipsis> std::swap&lt;basic_json&gt; </span> </a> </li> <li class=md-nav__item> <a href=../to_bjdata/ class=md-nav__link> <span class=md-ellipsis> to_bjdata </span> </a> </li> <li class=md-nav__item> <a href=../to_bson/ class=md-nav__link> <span class=md-ellipsis> to_bson </span> </a> </li> <li class="md-nav__item md-nav__item--active"> <input class="md-nav__toggle md-toggle" type=checkbox id=__toc> <label class="md-nav__link md-nav__link--active" for=__toc> <span class=md-ellipsis> to_cbor </span> <span class="md-nav__icon md-icon"></span> </label> <a href=./ class="md-nav__link md-nav__link--active"> <span class=md-ellipsis> to_cbor </span> </a> <nav class="md-nav md-nav--secondary" aria-label="Table of contents"> <label class=md-nav__title for=__toc> <span class="md-nav__icon md-icon"></span> Table of contents </label> <ul class=md-nav__list data-md-component=toc data-md-scrollfix> <li class=md-nav__item> <a href=#parameters class=md-nav__link> <span class=md-ellipsis> Parameters </span> </a> </li> <li class=md-nav__item> <a href=#return-value class=md-nav__link> <span class=md-ellipsis> Return value </span> </a> </li> <li class=md-nav__item> <a href=#exception-safety class=md-nav__link> <span class=md-ellipsis> Exception safety </span> </a> </li> <li class=md-nav__item> <a href=#complexity class=md-nav__link> <span class=md-ellipsis> Complexity </span> </a> </li> <li class=md-nav__item> <a href=#examples class=md-nav__link> <span class=md-ellipsis> Examples </span> </a> </li> <li class=md-nav__item> <a href=#version-history class=md-nav__link> <span class=md-ellipsis> Version history </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../to_msgpack/ class=md-nav__link> <span class=md-ellipsis> to_msgpack </span> </a> </li> <li class=md-nav__item> <a href=../to_string/ class=md-nav__link> <span class=md-ellipsis> to_string </span> </a> </li> <li class=md-nav__item> <a href=../to_ubjson/ class=md-nav__link> <span class=md-ellipsis> to_ubjson </span> </a> </li> <li class=md-nav__item> <a href=../type/ class=md-nav__link> <span class=md-ellipsis> type </span> </a> </li> <li class=md-nav__item> <a href=../type_error/ class=md-nav__link> <span class=md-ellipsis> type_error </span> </a> </li> <li class=md-nav__item> <a href=../type_name/ class=md-nav__link> <span class=md-ellipsis> type_name </span> </a> </li> <li class=md-nav__item> <a href=../unflatten/ class=md-nav__link> <span class=md-ellipsis> unflatten </span> </a> </li> <li class=md-nav__item> <a href=../update/ class=md-nav__link> <span class=md-ellipsis> update </span> </a> </li> <li class=md-nav__item> <a href=../value/ class=md-nav__link> <span class=md-ellipsis> value </span> </a> </li> <li class=md-nav__item> <a href=../value_t/ class=md-nav__link> <span class=md-ellipsis> value_t </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_2> <div class="md-nav__link md-nav__container"> <a href=../../byte_container_with_subtype/ class="md-nav__link "> <span class=md-ellipsis> byte_container_with_subtype </span> </a> <label class="md-nav__link " for=__nav_4_2 id=__nav_4_2_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_2_label aria-expanded=false> <label class=md-nav__title for=__nav_4_2> <span class="md-nav__icon md-icon"></span> byte_container_with_subtype </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../byte_container_with_subtype/byte_container_with_subtype/ class=md-nav__link> <span class=md-ellipsis> (constructor) </span> </a> </li> <li class=md-nav__item> <a href=../../byte_container_with_subtype/clear_subtype/ class=md-nav__link> <span class=md-ellipsis> clear_subtype </span> </a> </li> <li class=md-nav__item> <a href=../../byte_container_with_subtype/has_subtype/ class=md-nav__link> <span class=md-ellipsis> has_subtype </span> </a> </li> <li class=md-nav__item> <a href=../../byte_container_with_subtype/set_subtype/ class=md-nav__link> <span class=md-ellipsis> set_subtype </span> </a> </li> <li class=md-nav__item> <a href=../../byte_container_with_subtype/subtype/ class=md-nav__link> <span class=md-ellipsis> subtype </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_3> <div class="md-nav__link md-nav__container"> <a href=../../adl_serializer/ class="md-nav__link "> <span class=md-ellipsis> adl_serializer </span> </a> <label class="md-nav__link " for=__nav_4_3 id=__nav_4_3_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_3_label aria-expanded=false> <label class=md-nav__title for=__nav_4_3> <span class="md-nav__icon md-icon"></span> adl_serializer </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../adl_serializer/from_json/ class=md-nav__link> <span class=md-ellipsis> from_json </span> </a> </li> <li class=md-nav__item> <a href=../../adl_serializer/to_json/ class=md-nav__link> <span class=md-ellipsis> to_json </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../json/ class=md-nav__link> <span class=md-ellipsis> json </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_5> <div class="md-nav__link md-nav__container"> <a href=../../json_pointer/ class="md-nav__link "> <span class=md-ellipsis> json_pointer </span> </a> <label class="md-nav__link " for=__nav_4_5 id=__nav_4_5_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_5_label aria-expanded=false> <label class=md-nav__title for=__nav_4_5> <span class="md-nav__icon md-icon"></span> json_pointer </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../json_pointer/json_pointer/ class=md-nav__link> <span class=md-ellipsis> (Constructor) </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/back/ class=md-nav__link> <span class=md-ellipsis> back </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/empty/ class=md-nav__link> <span class=md-ellipsis> empty </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/front/ class=md-nav__link> <span class=md-ellipsis> front </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_string_t/ class=md-nav__link> <span class=md-ellipsis> operator string_t </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_eq/ class=md-nav__link> <span class=md-ellipsis> operator== </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_ne/ class=md-nav__link> <span class=md-ellipsis> operator!= </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_slash/ class=md-nav__link> <span class=md-ellipsis> operator/ </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_slasheq/ class=md-nav__link> <span class=md-ellipsis> operator/= </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/parent_pointer/ class=md-nav__link> <span class=md-ellipsis> parent_pointer </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/pop_back/ class=md-nav__link> <span class=md-ellipsis> pop_back </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/pop_front/ class=md-nav__link> <span class=md-ellipsis> pop_front </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/push_back/ class=md-nav__link> <span class=md-ellipsis> push_back </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/push_front/ class=md-nav__link> <span class=md-ellipsis> push_front </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/string_t/ class=md-nav__link> <span class=md-ellipsis> string_t </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/to_string/ class=md-nav__link> <span class=md-ellipsis> to_string </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_6> <div class="md-nav__link md-nav__container"> <a href=../../json_sax/ class="md-nav__link "> <span class=md-ellipsis> json_sax </span> </a> <label class="md-nav__link " for=__nav_4_6 id=__nav_4_6_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_6_label aria-expanded=false> <label class=md-nav__title for=__nav_4_6> <span class="md-nav__icon md-icon"></span> json_sax </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../json_sax/binary/ class=md-nav__link> <span class=md-ellipsis> binary </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/boolean/ class=md-nav__link> <span class=md-ellipsis> boolean </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/end_array/ class=md-nav__link> <span class=md-ellipsis> end_array </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/end_object/ class=md-nav__link> <span class=md-ellipsis> end_object </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/key/ class=md-nav__link> <span class=md-ellipsis> key </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/null/ class=md-nav__link> <span class=md-ellipsis> null </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/number_float/ class=md-nav__link> <span class=md-ellipsis> number_float </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/number_integer/ class=md-nav__link> <span class=md-ellipsis> number_integer </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/number_unsigned/ class=md-nav__link> <span class=md-ellipsis> number_unsigned </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/parse_error/ class=md-nav__link> <span class=md-ellipsis> parse_error </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/start_array/ class=md-nav__link> <span class=md-ellipsis> start_array </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/start_object/ class=md-nav__link> <span class=md-ellipsis> start_object </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/string/ class=md-nav__link> <span class=md-ellipsis> string </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../operator_ltlt/ class=md-nav__link> <span class=md-ellipsis> operator<<(basic_json), operator<<(json_pointer) </span> </a> </li> <li class=md-nav__item> <a href=../../operator_gtgt/ class=md-nav__link> <span class=md-ellipsis> operator>>(basic_json) </span> </a> </li> <li class=md-nav__item> <a href=../../operator_literal_json/ class=md-nav__link> <span class=md-ellipsis> operator""_json </span> </a> </li> <li class=md-nav__item> <a href=../../operator_literal_json_pointer/ class=md-nav__link> <span class=md-ellipsis> operator""_json_pointer </span> </a> </li> <li class=md-nav__item> <a href=../../ordered_json/ class=md-nav__link> <span class=md-ellipsis> ordered_json </span> </a> </li> <li class=md-nav__item> <a href=../../ordered_map/ class=md-nav__link> <span class=md-ellipsis> ordered_map </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_13> <div class="md-nav__link md-nav__container"> <a href=../../macros/ class="md-nav__link "> <span class=md-ellipsis> macros </span> </a> <label class="md-nav__link " for=__nav_4_13 id=__nav_4_13_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_13_label aria-expanded=false> <label class=md-nav__title for=__nav_4_13> <span class="md-nav__icon md-icon"></span> macros </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../macros/json_assert/ class=md-nav__link> <span class=md-ellipsis> JSON_ASSERT </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_brace_init_copy_semantics/ class=md-nav__link> <span class=md-ellipsis> JSON_BRACE_INIT_COPY_SEMANTICS </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_throw_user/ class=md-nav__link> <span class=md-ellipsis> JSON_CATCH_USER, JSON_THROW_USER, JSON_TRY_USER </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_diagnostics/ class=md-nav__link> <span class=md-ellipsis> JSON_DIAGNOSTICS </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_diagnostic_positions/ class=md-nav__link> <span class=md-ellipsis> JSON_DIAGNOSTIC_POSITIONS </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_disable_enum_serialization/ class=md-nav__link> <span class=md-ellipsis> JSON_DISABLE_ENUM_SERIALIZATION </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_has_cpp_11/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_CPP_11, JSON_HAS_CPP_14, JSON_HAS_CPP_17, JSON_HAS_CPP_20 </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_has_filesystem/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_EXPERIMENTAL_FILESYSTEM, JSON_HAS_FILESYSTEM </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_has_ranges/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_RANGES </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_has_static_rtti/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_STATIC_RTTI </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_has_three_way_comparison/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_THREE_WAY_COMPARISON </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_noexception/ class=md-nav__link> <span class=md-ellipsis> JSON_NOEXCEPTION </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_no_io/ class=md-nav__link> <span class=md-ellipsis> JSON_NO_IO </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_skip_library_version_check/ class=md-nav__link> <span class=md-ellipsis> JSON_SKIP_LIBRARY_VERSION_CHECK </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_skip_unsupported_compiler_check/ class=md-nav__link> <span class=md-ellipsis> JSON_SKIP_UNSUPPORTED_COMPILER_CHECK </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_use_global_udls/ class=md-nav__link> <span class=md-ellipsis> JSON_USE_GLOBAL_UDLS </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_use_implicit_conversions/ class=md-nav__link> <span class=md-ellipsis> JSON_USE_IMPLICIT_CONVERSIONS </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_use_legacy_discarded_value_comparison/ class=md-nav__link> <span class=md-ellipsis> JSON_USE_LEGACY_DISCARDED_VALUE_COMPARISON </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_define_derived_type/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_ONLY_SERIALIZE, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_define_type_intrusive/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_TYPE_INTRUSIVE, NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_TYPE_INTRUSIVE_ONLY_SERIALIZE </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_define_type_non_intrusive/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_define_type_with_names/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_TYPE_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_namespace/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_NAMESPACE </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_namespace_begin/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_NAMESPACE_BEGIN, NLOHMANN_JSON_NAMESPACE_END </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_namespace_no_version/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_NAMESPACE_NO_VERSION </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_serialize_enum/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_SERIALIZE_ENUM </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_serialize_enum_strict/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_SERIALIZE_ENUM_STRICT </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_version_major/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_VERSION_MAJOR, NLOHMANN_JSON_VERSION_MINOR, NLOHMANN_JSON_VERSION_PATCH </span> </a> </li> </ul> </nav> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_5> <div class="md-nav__link md-nav__container"> <a href=../../../community/ class="md-nav__link "> <span class=md-ellipsis> Community </span> </a> <label class="md-nav__link " for=__nav_5 id=__nav_5_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_5_label aria-expanded=false> <label class=md-nav__title for=__nav_5> <span class="md-nav__icon md-icon"></span> Community </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../community/code_of_conduct/ class=md-nav__link> <span class=md-ellipsis> Code of Conduct </span> </a> </li> <li class=md-nav__item> <a href=../../../community/contribution_guidelines/ class=md-nav__link> <span class=md-ellipsis> Contribution Guidelines </span> </a> </li> <li class=md-nav__item> <a href=../../../community/quality_assurance/ class=md-nav__link> <span class=md-ellipsis> Quality assurance </span> </a> </li> <li class=md-nav__item> <a href=../../../community/governance/ class=md-nav__link> <span class=md-ellipsis> Governance </span> </a> </li> <li class=md-nav__item> <a href=../../../community/security_policy/ class=md-nav__link> <span class=md-ellipsis> Security Policy </span> </a> </li> </ul> </nav> </li> </ul> </nav> </div> </div> </div> <div class="md-sidebar md-sidebar--secondary" data-md-component=sidebar data-md-type=toc> <div class=md-sidebar__scrollwrap> <div class=md-sidebar__inner> <nav class="md-nav md-nav--secondary" aria-label="Table of contents"> <label class=md-nav__title for=__toc> <span class="md-nav__icon md-icon"></span> Table of contents </label> <ul class=md-nav__list data-md-component=toc data-md-scrollfix> <li class=md-nav__item> <a href=#parameters class=md-nav__link> <span class=md-ellipsis> Parameters </span> </a> </li> <li class=md-nav__item> <a href=#return-value class=md-nav__link> <span class=md-ellipsis> Return value </span> </a> </li> <li class=md-nav__item> <a href=#exception-safety class=md-nav__link> <span class=md-ellipsis> Exception safety </span> </a> </li> <li class=md-nav__item> <a href=#complexity class=md-nav__link> <span class=md-ellipsis> Complexity </span> </a> </li> <li class=md-nav__item> <a href=#examples class=md-nav__link> <span class=md-ellipsis> Examples </span> </a> </li> <li class=md-nav__item> <a href=#version-history class=md-nav__link> <span class=md-ellipsis> Version history </span> </a> </li> </ul> </nav> </div> </div> </div> <div class=md-content data-md-component=content> <article class="md-content__inner md-typeset"> <a href="https://github.com/nlohmann/json/edit/develop/docs/mkdocs/docs/api/basic_json/to_cbor.md" title="Edit this page" class="md-content__button md-icon" rel="edit"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M10 20H6V4h7v5h5v3.1l2-2V8l-6-6H6c-1.1 0-2 .9-2 2v16c0 1.1.9 2 2 2h4zm10.2-7c.1 0 .3.1.4.2l1.3 1.3c.2.2.2.6 0 .8l-1 1-2.1-2.1 1-1c.1-.1.2-.2.4-.2m0 3.9L14.1 23H12v-2.1l6.1-6.1z"/></svg> </a> <a href="https://github.com/nlohmann/json/raw/develop/docs/mkdocs/docs/api/basic_json/to_cbor.md" title="View source of this page" class="md-content__button md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M17 18c.56 0 1 .44 1 1s-.44 1-1 1-1-.44-1-1 .44-1 1-1m0-3c-2.73 0-5.06 1.66-6 4 .94 2.34 3.27 4 6 4s5.06-1.66 6-4c-.94-2.34-3.27-4-6-4m0 6.5a2.5 2.5 0 0 1-2.5-2.5 2.5 2.5 0 0 1 2.5-2.5 2.5 2.5 0 0 1 2.5 2.5 2.5 2.5 0 0 1-2.5 2.5M9.27 20H6V4h7v5h5v4.07c.7.08 1.36.25 2 .49V8l-6-6H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h4.5a8.2 8.2 0 0 1-1.23-2"/></svg> </a> <h1 id=nlohmannbasic_jsonto_cbor><small>nlohmann::basic_json::</small>to_cbor<a class=headerlink href=#nlohmannbasic_jsonto_cbor title="Permanent link">&para;</a></h1> <div class=highlight><pre><span></span><code><span class=c1>// (1)</span>
+<!doctype html><html lang=en class=no-js> <head><meta charset=utf-8><meta name=viewport content="width=device-width,initial-scale=1"><meta name=author content="Niels Lohmann"><link href="https://json.nlohmann.me/api/basic_json/to_cbor/" rel="canonical"><link href=../to_bson/ rel=prev><link href=../to_msgpack/ rel=next><link rel=icon href=../../../assets/images/favicon.png><meta name=generator content="mkdocs-1.6.1, mkdocs-material-9.7.6"><title>to_cbor - JSON for Modern C++</title><link rel=stylesheet href=../../../assets/stylesheets/main.484c7ddc.min.css><link rel=stylesheet href=../../../assets/stylesheets/palette.ab4e12ef.min.css><link rel="stylesheet" href="../../../assets/external/fonts.googleapis.com/css.61a430c9.css"><style>:root{--md-text-font:"Roboto";--md-code-font:"JetBrains Mono"}</style><link rel=stylesheet href=../../../css/custom.css><script>__md_scope=new URL("../../..",location),__md_hash=e=>[...e].reduce(((e,_)=>(e<<5)-e+_.charCodeAt(0)),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script></head> <body dir=ltr data-md-color-scheme=default data-md-color-primary=indigo data-md-color-accent=indigo> <input class=md-toggle data-md-toggle=drawer type=checkbox id=__drawer autocomplete=off> <input class=md-toggle data-md-toggle=search type=checkbox id=__search autocomplete=off> <label class=md-overlay for=__drawer></label> <div data-md-component=skip> <a href=#nlohmannbasic_jsonto_cbor class=md-skip> Skip to content </a> </div> <div data-md-component=announce> </div> <header class=md-header data-md-component=header> <nav class="md-header__inner md-grid" aria-label=Header> <a href=../../.. title="JSON for Modern C++" class="md-header__button md-logo" aria-label="JSON for Modern C++" data-md-component=logo> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54"/></svg> </a> <label class="md-header__button md-icon" for=__drawer> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M3 6h18v2H3zm0 5h18v2H3zm0 5h18v2H3z"/></svg> </label> <div class=md-header__title data-md-component=header-title> <div class=md-header__ellipsis> <div class=md-header__topic> <span class=md-ellipsis> JSON for Modern C++ </span> </div> <div class=md-header__topic data-md-component=header-topic> <span class=md-ellipsis> to_cbor </span> </div> </div> </div> <form class=md-header__option data-md-component=palette> <input class=md-option data-md-color-media="(prefers-color-scheme: light)" data-md-color-scheme=default data-md-color-primary=indigo data-md-color-accent=indigo aria-label="Switch to dark mode" type=radio name=__palette id=__palette_0> <label class="md-header__button md-icon" title="Switch to dark mode" for=__palette_1 hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a4 4 0 0 0-4 4 4 4 0 0 0 4 4 4 4 0 0 0 4-4 4 4 0 0 0-4-4m0 10a6 6 0 0 1-6-6 6 6 0 0 1 6-6 6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12z"/></svg> </label> <input class=md-option data-md-color-media="(prefers-color-scheme: dark)" data-md-color-scheme=slate data-md-color-primary=indigo data-md-color-accent=indigo aria-label="Switch to light mode" type=radio name=__palette id=__palette_1> <label class="md-header__button md-icon" title="Switch to light mode" for=__palette_0 hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 18c-.89 0-1.74-.2-2.5-.55C11.56 16.5 13 14.42 13 12s-1.44-4.5-3.5-5.45C10.26 6.2 11.11 6 12 6a6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12z"/></svg> </label> </form> <script>var palette=__md_get("__palette");if(palette&&palette.color){if("(prefers-color-scheme)"===palette.color.media){var media=matchMedia("(prefers-color-scheme: light)"),input=document.querySelector(media.matches?"[data-md-color-media='(prefers-color-scheme: light)']":"[data-md-color-media='(prefers-color-scheme: dark)']");palette.color.media=input.getAttribute("data-md-color-media"),palette.color.scheme=input.getAttribute("data-md-color-scheme"),palette.color.primary=input.getAttribute("data-md-color-primary"),palette.color.accent=input.getAttribute("data-md-color-accent")}for(var[key,value]of Object.entries(palette.color))document.body.setAttribute("data-md-color-"+key,value)}</script> <label class="md-header__button md-icon" for=__search> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg> </label> <div class=md-search data-md-component=search role=dialog> <label class=md-search__overlay for=__search></label> <div class=md-search__inner role=search> <form class=md-search__form name=search> <input type=text class=md-search__input name=query aria-label=Search placeholder=Search autocapitalize=off autocorrect=off autocomplete=off spellcheck=false data-md-component=search-query required> <label class="md-search__icon md-icon" for=__search> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11z"/></svg> </label> <nav class=md-search__options aria-label=Search> <button type=reset class="md-search__icon md-icon" title=Clear aria-label=Clear tabindex=-1> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z"/></svg> </button> </nav> </form> <div class=md-search__output> <div class=md-search__scrollwrap tabindex=0 data-md-scrollfix> <div class=md-search-result data-md-component=search-result> <div class=md-search-result__meta> Initializing search </div> <ol class=md-search-result__list role=presentation></ol> </div> </div> </div> </div> </div> <div class=md-header__source> <a href="https://github.com/nlohmann/json" title="Go to repository" class="md-source" data-md-component="source"> <div class="md-source__icon md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </div> <div class=md-source__repository> nlohmann/json </div> </a> </div> </nav> </header> <div class=md-container data-md-component=container> <nav class=md-tabs aria-label=Tabs data-md-component=tabs> <div class=md-grid> <ul class=md-tabs__list> <li class=md-tabs__item> <a href=../../.. class=md-tabs__link> Home </a> </li> <li class=md-tabs__item> <a href=../../../features/arbitrary_types/ class=md-tabs__link> Features </a> </li> <li class=md-tabs__item> <a href=../../../integration/ class=md-tabs__link> Integration </a> </li> <li class="md-tabs__item md-tabs__item--active"> <a href=../ class=md-tabs__link> API Documentation </a> </li> <li class=md-tabs__item> <a href=../../../community/ class=md-tabs__link> Community </a> </li> </ul> </div> </nav> <main class=md-main data-md-component=main> <div class="md-main__inner md-grid"> <div class="md-sidebar md-sidebar--primary" data-md-component=sidebar data-md-type=navigation> <div class=md-sidebar__scrollwrap> <div class=md-sidebar__inner> <nav class="md-nav md-nav--primary md-nav--lifted" aria-label=Navigation data-md-level=0> <label class=md-nav__title for=__drawer> <a href=../../.. title="JSON for Modern C++" class="md-nav__button md-logo" aria-label="JSON for Modern C++" data-md-component=logo> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54"/></svg> </a> JSON for Modern C++ </label> <div class=md-nav__source> <a href="https://github.com/nlohmann/json" title="Go to repository" class="md-source" data-md-component="source"> <div class="md-source__icon md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </div> <div class=md-source__repository> nlohmann/json </div> </a> </div> <ul class=md-nav__list data-md-scrollfix> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_1> <div class="md-nav__link md-nav__container"> <a href=../../.. class="md-nav__link "> <span class=md-ellipsis> Home </span> </a> <label class="md-nav__link " for=__nav_1 id=__nav_1_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_1_label aria-expanded=false> <label class=md-nav__title for=__nav_1> <span class="md-nav__icon md-icon"></span> Home </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../home/license/ class=md-nav__link> <span class=md-ellipsis> License </span> </a> </li> <li class=md-nav__item> <a href=../../../home/faq/ class=md-nav__link> <span class=md-ellipsis> FAQ </span> </a> </li> <li class=md-nav__item> <a href=../../../home/exceptions/ class=md-nav__link> <span class=md-ellipsis> Exceptions </span> </a> </li> <li class=md-nav__item> <a href=../../../home/releases/ class=md-nav__link> <span class=md-ellipsis> Releases </span> </a> </li> <li class=md-nav__item> <a href=../../../home/design_goals/ class=md-nav__link> <span class=md-ellipsis> Design goals </span> </a> </li> <li class=md-nav__item> <a href=../../../home/architecture/ class=md-nav__link> <span class=md-ellipsis> Architecture </span> </a> </li> <li class=md-nav__item> <a href=../../../home/customers/ class=md-nav__link> <span class=md-ellipsis> Customers </span> </a> </li> <li class=md-nav__item> <a href=../../../home/sponsors/ class=md-nav__link> <span class=md-ellipsis> Sponsors </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2> <label class=md-nav__link for=__nav_2 id=__nav_2_label tabindex=0> <span class=md-ellipsis> Features </span> <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_2_label aria-expanded=false> <label class=md-nav__title for=__nav_2> <span class="md-nav__icon md-icon"></span> Features </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/arbitrary_types/ class=md-nav__link> <span class=md-ellipsis> Arbitrary Type Conversions </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_2> <div class="md-nav__link md-nav__container"> <a href=../../../features/binary_formats/ class="md-nav__link "> <span class=md-ellipsis> Binary Formats </span> </a> <label class="md-nav__link " for=__nav_2_2 id=__nav_2_2_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_2_label aria-expanded=false> <label class=md-nav__title for=__nav_2_2> <span class="md-nav__icon md-icon"></span> Binary Formats </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/binary_formats/bjdata/ class=md-nav__link> <span class=md-ellipsis> BJData </span> </a> </li> <li class=md-nav__item> <a href=../../../features/binary_formats/bson/ class=md-nav__link> <span class=md-ellipsis> BSON </span> </a> </li> <li class=md-nav__item> <a href=../../../features/binary_formats/cbor/ class=md-nav__link> <span class=md-ellipsis> CBOR </span> </a> </li> <li class=md-nav__item> <a href=../../../features/binary_formats/messagepack/ class=md-nav__link> <span class=md-ellipsis> MessagePack </span> </a> </li> <li class=md-nav__item> <a href=../../../features/binary_formats/ubjson/ class=md-nav__link> <span class=md-ellipsis> UBJSON </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../../features/binary_values/ class=md-nav__link> <span class=md-ellipsis> Binary Values </span> </a> </li> <li class=md-nav__item> <a href=../../../features/comments/ class=md-nav__link> <span class=md-ellipsis> Comments </span> </a> </li> <li class=md-nav__item> <a href=../../../features/trailing_commas/ class=md-nav__link> <span class=md-ellipsis> Trailing Commas </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_6> <div class="md-nav__link md-nav__container"> <a href=../../../features/element_access/ class="md-nav__link "> <span class=md-ellipsis> Element Access </span> </a> <label class="md-nav__link " for=__nav_2_6 id=__nav_2_6_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_6_label aria-expanded=false> <label class=md-nav__title for=__nav_2_6> <span class="md-nav__icon md-icon"></span> Element Access </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/element_access/unchecked_access/ class=md-nav__link> <span class=md-ellipsis> Unchecked access: operator[] </span> </a> </li> <li class=md-nav__item> <a href=../../../features/element_access/checked_access/ class=md-nav__link> <span class=md-ellipsis> Checked access: at </span> </a> </li> <li class=md-nav__item> <a href=../../../features/element_access/default_value/ class=md-nav__link> <span class=md-ellipsis> Access with default value: value </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../../features/iterators/ class=md-nav__link> <span class=md-ellipsis> Iterators </span> </a> </li> <li class=md-nav__item> <a href=../../../features/json_pointer/ class=md-nav__link> <span class=md-ellipsis> JSON Pointer </span> </a> </li> <li class=md-nav__item> <a href=../../../features/json_patch/ class=md-nav__link> <span class=md-ellipsis> JSON Patch and Diff </span> </a> </li> <li class=md-nav__item> <a href=../../../features/merge_patch/ class=md-nav__link> <span class=md-ellipsis> JSON Merge Patch </span> </a> </li> <li class=md-nav__item> <a href=../../../features/modules/ class=md-nav__link> <span class=md-ellipsis> Modules </span> </a> </li> <li class=md-nav__item> <a href=../../../features/namespace/ class=md-nav__link> <span class=md-ellipsis> nlohmann Namespace </span> </a> </li> <li class=md-nav__item> <a href=../../../features/object_order/ class=md-nav__link> <span class=md-ellipsis> Object Order </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_14> <div class="md-nav__link md-nav__container"> <a href=../../../features/parsing/ class="md-nav__link "> <span class=md-ellipsis> Parsing </span> </a> <label class="md-nav__link " for=__nav_2_14 id=__nav_2_14_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_14_label aria-expanded=false> <label class=md-nav__title for=__nav_2_14> <span class="md-nav__icon md-icon"></span> Parsing </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/parsing/json_lines/ class=md-nav__link> <span class=md-ellipsis> JSON Lines </span> </a> </li> <li class=md-nav__item> <a href=../../../features/parsing/parse_exceptions/ class=md-nav__link> <span class=md-ellipsis> Parsing and Exceptions </span> </a> </li> <li class=md-nav__item> <a href=../../../features/parsing/parser_callbacks/ class=md-nav__link> <span class=md-ellipsis> Parser Callbacks </span> </a> </li> <li class=md-nav__item> <a href=../../../features/parsing/sax_interface/ class=md-nav__link> <span class=md-ellipsis> SAX Interface </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../../features/assertions/ class=md-nav__link> <span class=md-ellipsis> Runtime Assertions </span> </a> </li> <li class=md-nav__item> <a href=../../../features/enum_conversion/ class=md-nav__link> <span class=md-ellipsis> Specializing enum conversion </span> </a> </li> <li class=md-nav__item> <a href=../../../features/macros/ class=md-nav__link> <span class=md-ellipsis> Supported Macros </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_18> <div class="md-nav__link md-nav__container"> <a href=../../../features/types/ class="md-nav__link "> <span class=md-ellipsis> Types </span> </a> <label class="md-nav__link " for=__nav_2_18 id=__nav_2_18_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_18_label aria-expanded=false> <label class=md-nav__title for=__nav_2_18> <span class="md-nav__icon md-icon"></span> Types </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/types/number_handling/ class=md-nav__link> <span class=md-ellipsis> Number Handling </span> </a> </li> </ul> </nav> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_3> <div class="md-nav__link md-nav__container"> <a href=../../../integration/ class="md-nav__link "> <span class=md-ellipsis> Integration </span> </a> <label class="md-nav__link " for=__nav_3 id=__nav_3_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_3_label aria-expanded=false> <label class=md-nav__title for=__nav_3> <span class="md-nav__icon md-icon"></span> Integration </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../integration/migration_guide/ class=md-nav__link> <span class=md-ellipsis> Migration Guide </span> </a> </li> <li class=md-nav__item> <a href=../../../integration/cmake/ class=md-nav__link> <span class=md-ellipsis> CMake </span> </a> </li> <li class=md-nav__item> <a href=../../../integration/package_managers/ class=md-nav__link> <span class=md-ellipsis> Package Managers </span> </a> </li> <li class=md-nav__item> <a href=../../../integration/pkg-config/ class=md-nav__link> <span class=md-ellipsis> Pkg-config </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--active md-nav__item--section md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4 checked> <label class=md-nav__link for=__nav_4 id=__nav_4_label tabindex> <span class=md-ellipsis> API Documentation </span> <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_4_label aria-expanded=true> <label class=md-nav__title for=__nav_4> <span class="md-nav__icon md-icon"></span> API Documentation </label> <ul class=md-nav__list data-md-scrollfix> <li class="md-nav__item md-nav__item--active md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_1 checked> <div class="md-nav__link md-nav__container"> <a href=../ class="md-nav__link "> <span class=md-ellipsis> basic_json </span> </a> <label class="md-nav__link " for=__nav_4_1 id=__nav_4_1_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_1_label aria-expanded=true> <label class=md-nav__title for=__nav_4_1> <span class="md-nav__icon md-icon"></span> basic_json </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../basic_json/ class=md-nav__link> <span class=md-ellipsis> (Constructor) </span> </a> </li> <li class=md-nav__item> <a href=../~basic_json/ class=md-nav__link> <span class=md-ellipsis> (Destructor) </span> </a> </li> <li class=md-nav__item> <a href=../accept/ class=md-nav__link> <span class=md-ellipsis> accept </span> </a> </li> <li class=md-nav__item> <a href=../array/ class=md-nav__link> <span class=md-ellipsis> array </span> </a> </li> <li class=md-nav__item> <a href=../array_t/ class=md-nav__link> <span class=md-ellipsis> array_t </span> </a> </li> <li class=md-nav__item> <a href=../at/ class=md-nav__link> <span class=md-ellipsis> at </span> </a> </li> <li class=md-nav__item> <a href=../back/ class=md-nav__link> <span class=md-ellipsis> back </span> </a> </li> <li class=md-nav__item> <a href=../begin/ class=md-nav__link> <span class=md-ellipsis> begin </span> </a> </li> <li class=md-nav__item> <a href=../binary/ class=md-nav__link> <span class=md-ellipsis> binary </span> </a> </li> <li class=md-nav__item> <a href=../binary_t/ class=md-nav__link> <span class=md-ellipsis> binary_t </span> </a> </li> <li class=md-nav__item> <a href=../boolean_t/ class=md-nav__link> <span class=md-ellipsis> boolean_t </span> </a> </li> <li class=md-nav__item> <a href=../cbegin/ class=md-nav__link> <span class=md-ellipsis> cbegin </span> </a> </li> <li class=md-nav__item> <a href=../cbor_tag_handler_t/ class=md-nav__link> <span class=md-ellipsis> cbor_tag_handler_t </span> </a> </li> <li class=md-nav__item> <a href=../cend/ class=md-nav__link> <span class=md-ellipsis> cend </span> </a> </li> <li class=md-nav__item> <a href=../clear/ class=md-nav__link> <span class=md-ellipsis> clear </span> </a> </li> <li class=md-nav__item> <a href=../contains/ class=md-nav__link> <span class=md-ellipsis> contains </span> </a> </li> <li class=md-nav__item> <a href=../count/ class=md-nav__link> <span class=md-ellipsis> count </span> </a> </li> <li class=md-nav__item> <a href=../crbegin/ class=md-nav__link> <span class=md-ellipsis> crbegin </span> </a> </li> <li class=md-nav__item> <a href=../crend/ class=md-nav__link> <span class=md-ellipsis> crend </span> </a> </li> <li class=md-nav__item> <a href=../default_object_comparator_t/ class=md-nav__link> <span class=md-ellipsis> default_object_comparator_t </span> </a> </li> <li class=md-nav__item> <a href=../diff/ class=md-nav__link> <span class=md-ellipsis> diff </span> </a> </li> <li class=md-nav__item> <a href=../dump/ class=md-nav__link> <span class=md-ellipsis> dump </span> </a> </li> <li class=md-nav__item> <a href=../emplace/ class=md-nav__link> <span class=md-ellipsis> emplace </span> </a> </li> <li class=md-nav__item> <a href=../emplace_back/ class=md-nav__link> <span class=md-ellipsis> emplace_back </span> </a> </li> <li class=md-nav__item> <a href=../empty/ class=md-nav__link> <span class=md-ellipsis> empty </span> </a> </li> <li class=md-nav__item> <a href=../end/ class=md-nav__link> <span class=md-ellipsis> end </span> </a> </li> <li class=md-nav__item> <a href=../end_pos/ class=md-nav__link> <span class=md-ellipsis> end_pos </span> </a> </li> <li class=md-nav__item> <a href=../erase/ class=md-nav__link> <span class=md-ellipsis> erase </span> </a> </li> <li class=md-nav__item> <a href=../error_handler_t/ class=md-nav__link> <span class=md-ellipsis> error_handler_t </span> </a> </li> <li class=md-nav__item> <a href=../exception/ class=md-nav__link> <span class=md-ellipsis> exception </span> </a> </li> <li class=md-nav__item> <a href=../find/ class=md-nav__link> <span class=md-ellipsis> find </span> </a> </li> <li class=md-nav__item> <a href=../flatten/ class=md-nav__link> <span class=md-ellipsis> flatten </span> </a> </li> <li class=md-nav__item> <a href=../from_bjdata/ class=md-nav__link> <span class=md-ellipsis> from_bjdata </span> </a> </li> <li class=md-nav__item> <a href=../from_bson/ class=md-nav__link> <span class=md-ellipsis> from_bson </span> </a> </li> <li class=md-nav__item> <a href=../from_cbor/ class=md-nav__link> <span class=md-ellipsis> from_cbor </span> </a> </li> <li class=md-nav__item> <a href=../from_msgpack/ class=md-nav__link> <span class=md-ellipsis> from_msgpack </span> </a> </li> <li class=md-nav__item> <a href=../from_ubjson/ class=md-nav__link> <span class=md-ellipsis> from_ubjson </span> </a> </li> <li class=md-nav__item> <a href=../front/ class=md-nav__link> <span class=md-ellipsis> front </span> </a> </li> <li class=md-nav__item> <a href=../get/ class=md-nav__link> <span class=md-ellipsis> get </span> </a> </li> <li class=md-nav__item> <a href=../get_allocator/ class=md-nav__link> <span class=md-ellipsis> get_allocator </span> </a> </li> <li class=md-nav__item> <a href=../get_binary/ class=md-nav__link> <span class=md-ellipsis> get_binary </span> </a> </li> <li class=md-nav__item> <a href=../get_ptr/ class=md-nav__link> <span class=md-ellipsis> get_ptr </span> </a> </li> <li class=md-nav__item> <a href=../get_ref/ class=md-nav__link> <span class=md-ellipsis> get_ref </span> </a> </li> <li class=md-nav__item> <a href=../get_to/ class=md-nav__link> <span class=md-ellipsis> get_to </span> </a> </li> <li class=md-nav__item> <a href=../std_hash/ class=md-nav__link> <span class=md-ellipsis> std::hash&lt;basic_json&gt; </span> </a> </li> <li class=md-nav__item> <a href=../input_format_t/ class=md-nav__link> <span class=md-ellipsis> input_format_t </span> </a> </li> <li class=md-nav__item> <a href=../insert/ class=md-nav__link> <span class=md-ellipsis> insert </span> </a> </li> <li class=md-nav__item> <a href=../invalid_iterator/ class=md-nav__link> <span class=md-ellipsis> invalid_iterator </span> </a> </li> <li class=md-nav__item> <a href=../is_array/ class=md-nav__link> <span class=md-ellipsis> is_array </span> </a> </li> <li class=md-nav__item> <a href=../is_binary/ class=md-nav__link> <span class=md-ellipsis> is_binary </span> </a> </li> <li class=md-nav__item> <a href=../is_boolean/ class=md-nav__link> <span class=md-ellipsis> is_boolean </span> </a> </li> <li class=md-nav__item> <a href=../is_discarded/ class=md-nav__link> <span class=md-ellipsis> is_discarded </span> </a> </li> <li class=md-nav__item> <a href=../is_null/ class=md-nav__link> <span class=md-ellipsis> is_null </span> </a> </li> <li class=md-nav__item> <a href=../is_number/ class=md-nav__link> <span class=md-ellipsis> is_number </span> </a> </li> <li class=md-nav__item> <a href=../is_number_float/ class=md-nav__link> <span class=md-ellipsis> is_number_float </span> </a> </li> <li class=md-nav__item> <a href=../is_number_integer/ class=md-nav__link> <span class=md-ellipsis> is_number_integer </span> </a> </li> <li class=md-nav__item> <a href=../is_number_unsigned/ class=md-nav__link> <span class=md-ellipsis> is_number_unsigned </span> </a> </li> <li class=md-nav__item> <a href=../is_object/ class=md-nav__link> <span class=md-ellipsis> is_object </span> </a> </li> <li class=md-nav__item> <a href=../is_primitive/ class=md-nav__link> <span class=md-ellipsis> is_primitive </span> </a> </li> <li class=md-nav__item> <a href=../is_string/ class=md-nav__link> <span class=md-ellipsis> is_string </span> </a> </li> <li class=md-nav__item> <a href=../is_structured/ class=md-nav__link> <span class=md-ellipsis> is_structured </span> </a> </li> <li class=md-nav__item> <a href=../items/ class=md-nav__link> <span class=md-ellipsis> items </span> </a> </li> <li class=md-nav__item> <a href=../json_base_class_t/ class=md-nav__link> <span class=md-ellipsis> json_base_class_t </span> </a> </li> <li class=md-nav__item> <a href=../json_serializer/ class=md-nav__link> <span class=md-ellipsis> json_serializer </span> </a> </li> <li class=md-nav__item> <a href=../max_size/ class=md-nav__link> <span class=md-ellipsis> max_size </span> </a> </li> <li class=md-nav__item> <a href=../meta/ class=md-nav__link> <span class=md-ellipsis> meta </span> </a> </li> <li class=md-nav__item> <a href=../merge_patch/ class=md-nav__link> <span class=md-ellipsis> merge_patch </span> </a> </li> <li class=md-nav__item> <a href=../number_float_t/ class=md-nav__link> <span class=md-ellipsis> number_float_t </span> </a> </li> <li class=md-nav__item> <a href=../number_integer_t/ class=md-nav__link> <span class=md-ellipsis> number_integer_t </span> </a> </li> <li class=md-nav__item> <a href=../number_unsigned_t/ class=md-nav__link> <span class=md-ellipsis> number_unsigned_t </span> </a> </li> <li class=md-nav__item> <a href=../object/ class=md-nav__link> <span class=md-ellipsis> object </span> </a> </li> <li class=md-nav__item> <a href=../object_comparator_t/ class=md-nav__link> <span class=md-ellipsis> object_comparator_t </span> </a> </li> <li class=md-nav__item> <a href=../object_t/ class=md-nav__link> <span class=md-ellipsis> object_t </span> </a> </li> <li class=md-nav__item> <a href=../operator_ValueType/ class=md-nav__link> <span class=md-ellipsis> operator ValueType </span> </a> </li> <li class=md-nav__item> <a href=../operator_value_t/ class=md-nav__link> <span class=md-ellipsis> operator value_t </span> </a> </li> <li class=md-nav__item> <a href=../operator%5B%5D/ class=md-nav__link> <span class=md-ellipsis> operator[] </span> </a> </li> <li class=md-nav__item> <a href=../operator%3D/ class=md-nav__link> <span class=md-ellipsis> operator= </span> </a> </li> <li class=md-nav__item> <a href=../operator%2B%3D/ class=md-nav__link> <span class=md-ellipsis> operator+= </span> </a> </li> <li class=md-nav__item> <a href=../operator_eq/ class=md-nav__link> <span class=md-ellipsis> operator== </span> </a> </li> <li class=md-nav__item> <a href=../operator_ne/ class=md-nav__link> <span class=md-ellipsis> operator!= </span> </a> </li> <li class=md-nav__item> <a href=../operator_lt/ class=md-nav__link> <span class=md-ellipsis> operator< </span> </a> </li> <li class=md-nav__item> <a href=../operator_gt/ class=md-nav__link> <span class=md-ellipsis> operator> </span> </a> </li> <li class=md-nav__item> <a href=../operator_le/ class=md-nav__link> <span class=md-ellipsis> operator<= </span> </a> </li> <li class=md-nav__item> <a href=../operator_ge/ class=md-nav__link> <span class=md-ellipsis> operator>= </span> </a> </li> <li class=md-nav__item> <a href=../operator_spaceship/ class=md-nav__link> <span class=md-ellipsis> operator<=> </span> </a> </li> <li class=md-nav__item> <a href=../out_of_range/ class=md-nav__link> <span class=md-ellipsis> out_of_range </span> </a> </li> <li class=md-nav__item> <a href=../other_error/ class=md-nav__link> <span class=md-ellipsis> other_error </span> </a> </li> <li class=md-nav__item> <a href=../parse/ class=md-nav__link> <span class=md-ellipsis> parse </span> </a> </li> <li class=md-nav__item> <a href=../parse_error/ class=md-nav__link> <span class=md-ellipsis> parse_error </span> </a> </li> <li class=md-nav__item> <a href=../parse_event_t/ class=md-nav__link> <span class=md-ellipsis> parse_event_t </span> </a> </li> <li class=md-nav__item> <a href=../parser_callback_t/ class=md-nav__link> <span class=md-ellipsis> parser_callback_t </span> </a> </li> <li class=md-nav__item> <a href=../patch/ class=md-nav__link> <span class=md-ellipsis> patch </span> </a> </li> <li class=md-nav__item> <a href=../patch_inplace/ class=md-nav__link> <span class=md-ellipsis> patch_inplace </span> </a> </li> <li class=md-nav__item> <a href=../push_back/ class=md-nav__link> <span class=md-ellipsis> push_back </span> </a> </li> <li class=md-nav__item> <a href=../rbegin/ class=md-nav__link> <span class=md-ellipsis> rbegin </span> </a> </li> <li class=md-nav__item> <a href=../rend/ class=md-nav__link> <span class=md-ellipsis> rend </span> </a> </li> <li class=md-nav__item> <a href=../sax_parse/ class=md-nav__link> <span class=md-ellipsis> sax_parse </span> </a> </li> <li class=md-nav__item> <a href=../size/ class=md-nav__link> <span class=md-ellipsis> size </span> </a> </li> <li class=md-nav__item> <a href=../start_pos/ class=md-nav__link> <span class=md-ellipsis> start_pos </span> </a> </li> <li class=md-nav__item> <a href=../string_t/ class=md-nav__link> <span class=md-ellipsis> string_t </span> </a> </li> <li class=md-nav__item> <a href=../swap/ class=md-nav__link> <span class=md-ellipsis> swap </span> </a> </li> <li class=md-nav__item> <a href=../std_swap/ class=md-nav__link> <span class=md-ellipsis> std::swap&lt;basic_json&gt; </span> </a> </li> <li class=md-nav__item> <a href=../to_bjdata/ class=md-nav__link> <span class=md-ellipsis> to_bjdata </span> </a> </li> <li class=md-nav__item> <a href=../to_bson/ class=md-nav__link> <span class=md-ellipsis> to_bson </span> </a> </li> <li class="md-nav__item md-nav__item--active"> <input class="md-nav__toggle md-toggle" type=checkbox id=__toc> <label class="md-nav__link md-nav__link--active" for=__toc> <span class=md-ellipsis> to_cbor </span> <span class="md-nav__icon md-icon"></span> </label> <a href=./ class="md-nav__link md-nav__link--active"> <span class=md-ellipsis> to_cbor </span> </a> <nav class="md-nav md-nav--secondary" aria-label="Table of contents"> <label class=md-nav__title for=__toc> <span class="md-nav__icon md-icon"></span> Table of contents </label> <ul class=md-nav__list data-md-component=toc data-md-scrollfix> <li class=md-nav__item> <a href=#parameters class=md-nav__link> <span class=md-ellipsis> Parameters </span> </a> </li> <li class=md-nav__item> <a href=#return-value class=md-nav__link> <span class=md-ellipsis> Return value </span> </a> </li> <li class=md-nav__item> <a href=#exception-safety class=md-nav__link> <span class=md-ellipsis> Exception safety </span> </a> </li> <li class=md-nav__item> <a href=#complexity class=md-nav__link> <span class=md-ellipsis> Complexity </span> </a> </li> <li class=md-nav__item> <a href=#examples class=md-nav__link> <span class=md-ellipsis> Examples </span> </a> </li> <li class=md-nav__item> <a href=#see-also class=md-nav__link> <span class=md-ellipsis> See also </span> </a> </li> <li class=md-nav__item> <a href=#version-history class=md-nav__link> <span class=md-ellipsis> Version history </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../to_msgpack/ class=md-nav__link> <span class=md-ellipsis> to_msgpack </span> </a> </li> <li class=md-nav__item> <a href=../to_string/ class=md-nav__link> <span class=md-ellipsis> to_string </span> </a> </li> <li class=md-nav__item> <a href=../to_ubjson/ class=md-nav__link> <span class=md-ellipsis> to_ubjson </span> </a> </li> <li class=md-nav__item> <a href=../type/ class=md-nav__link> <span class=md-ellipsis> type </span> </a> </li> <li class=md-nav__item> <a href=../type_error/ class=md-nav__link> <span class=md-ellipsis> type_error </span> </a> </li> <li class=md-nav__item> <a href=../type_name/ class=md-nav__link> <span class=md-ellipsis> type_name </span> </a> </li> <li class=md-nav__item> <a href=../unflatten/ class=md-nav__link> <span class=md-ellipsis> unflatten </span> </a> </li> <li class=md-nav__item> <a href=../update/ class=md-nav__link> <span class=md-ellipsis> update </span> </a> </li> <li class=md-nav__item> <a href=../value/ class=md-nav__link> <span class=md-ellipsis> value </span> </a> </li> <li class=md-nav__item> <a href=../value_t/ class=md-nav__link> <span class=md-ellipsis> value_t </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_2> <div class="md-nav__link md-nav__container"> <a href=../../byte_container_with_subtype/ class="md-nav__link "> <span class=md-ellipsis> byte_container_with_subtype </span> </a> <label class="md-nav__link " for=__nav_4_2 id=__nav_4_2_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_2_label aria-expanded=false> <label class=md-nav__title for=__nav_4_2> <span class="md-nav__icon md-icon"></span> byte_container_with_subtype </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../byte_container_with_subtype/byte_container_with_subtype/ class=md-nav__link> <span class=md-ellipsis> (constructor) </span> </a> </li> <li class=md-nav__item> <a href=../../byte_container_with_subtype/clear_subtype/ class=md-nav__link> <span class=md-ellipsis> clear_subtype </span> </a> </li> <li class=md-nav__item> <a href=../../byte_container_with_subtype/has_subtype/ class=md-nav__link> <span class=md-ellipsis> has_subtype </span> </a> </li> <li class=md-nav__item> <a href=../../byte_container_with_subtype/set_subtype/ class=md-nav__link> <span class=md-ellipsis> set_subtype </span> </a> </li> <li class=md-nav__item> <a href=../../byte_container_with_subtype/subtype/ class=md-nav__link> <span class=md-ellipsis> subtype </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_3> <div class="md-nav__link md-nav__container"> <a href=../../adl_serializer/ class="md-nav__link "> <span class=md-ellipsis> adl_serializer </span> </a> <label class="md-nav__link " for=__nav_4_3 id=__nav_4_3_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_3_label aria-expanded=false> <label class=md-nav__title for=__nav_4_3> <span class="md-nav__icon md-icon"></span> adl_serializer </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../adl_serializer/from_json/ class=md-nav__link> <span class=md-ellipsis> from_json </span> </a> </li> <li class=md-nav__item> <a href=../../adl_serializer/to_json/ class=md-nav__link> <span class=md-ellipsis> to_json </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../json/ class=md-nav__link> <span class=md-ellipsis> json </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_5> <div class="md-nav__link md-nav__container"> <a href=../../json_pointer/ class="md-nav__link "> <span class=md-ellipsis> json_pointer </span> </a> <label class="md-nav__link " for=__nav_4_5 id=__nav_4_5_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_5_label aria-expanded=false> <label class=md-nav__title for=__nav_4_5> <span class="md-nav__icon md-icon"></span> json_pointer </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../json_pointer/json_pointer/ class=md-nav__link> <span class=md-ellipsis> (Constructor) </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/back/ class=md-nav__link> <span class=md-ellipsis> back </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/empty/ class=md-nav__link> <span class=md-ellipsis> empty </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/front/ class=md-nav__link> <span class=md-ellipsis> front </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_string_t/ class=md-nav__link> <span class=md-ellipsis> operator string_t </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_eq/ class=md-nav__link> <span class=md-ellipsis> operator== </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_ne/ class=md-nav__link> <span class=md-ellipsis> operator!= </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_slash/ class=md-nav__link> <span class=md-ellipsis> operator/ </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_slasheq/ class=md-nav__link> <span class=md-ellipsis> operator/= </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/parent_pointer/ class=md-nav__link> <span class=md-ellipsis> parent_pointer </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/pop_back/ class=md-nav__link> <span class=md-ellipsis> pop_back </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/pop_front/ class=md-nav__link> <span class=md-ellipsis> pop_front </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/push_back/ class=md-nav__link> <span class=md-ellipsis> push_back </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/push_front/ class=md-nav__link> <span class=md-ellipsis> push_front </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/string_t/ class=md-nav__link> <span class=md-ellipsis> string_t </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/to_string/ class=md-nav__link> <span class=md-ellipsis> to_string </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_6> <div class="md-nav__link md-nav__container"> <a href=../../json_sax/ class="md-nav__link "> <span class=md-ellipsis> json_sax </span> </a> <label class="md-nav__link " for=__nav_4_6 id=__nav_4_6_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_6_label aria-expanded=false> <label class=md-nav__title for=__nav_4_6> <span class="md-nav__icon md-icon"></span> json_sax </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../json_sax/binary/ class=md-nav__link> <span class=md-ellipsis> binary </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/boolean/ class=md-nav__link> <span class=md-ellipsis> boolean </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/end_array/ class=md-nav__link> <span class=md-ellipsis> end_array </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/end_object/ class=md-nav__link> <span class=md-ellipsis> end_object </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/key/ class=md-nav__link> <span class=md-ellipsis> key </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/null/ class=md-nav__link> <span class=md-ellipsis> null </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/number_float/ class=md-nav__link> <span class=md-ellipsis> number_float </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/number_integer/ class=md-nav__link> <span class=md-ellipsis> number_integer </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/number_unsigned/ class=md-nav__link> <span class=md-ellipsis> number_unsigned </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/parse_error/ class=md-nav__link> <span class=md-ellipsis> parse_error </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/start_array/ class=md-nav__link> <span class=md-ellipsis> start_array </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/start_object/ class=md-nav__link> <span class=md-ellipsis> start_object </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/string/ class=md-nav__link> <span class=md-ellipsis> string </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../operator_ltlt/ class=md-nav__link> <span class=md-ellipsis> operator<<(basic_json), operator<<(json_pointer) </span> </a> </li> <li class=md-nav__item> <a href=../../operator_gtgt/ class=md-nav__link> <span class=md-ellipsis> operator>>(basic_json) </span> </a> </li> <li class=md-nav__item> <a href=../../operator_literal_json/ class=md-nav__link> <span class=md-ellipsis> operator""_json </span> </a> </li> <li class=md-nav__item> <a href=../../operator_literal_json_pointer/ class=md-nav__link> <span class=md-ellipsis> operator""_json_pointer </span> </a> </li> <li class=md-nav__item> <a href=../../ordered_json/ class=md-nav__link> <span class=md-ellipsis> ordered_json </span> </a> </li> <li class=md-nav__item> <a href=../../ordered_map/ class=md-nav__link> <span class=md-ellipsis> ordered_map </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_13> <div class="md-nav__link md-nav__container"> <a href=../../macros/ class="md-nav__link "> <span class=md-ellipsis> macros </span> </a> <label class="md-nav__link " for=__nav_4_13 id=__nav_4_13_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_13_label aria-expanded=false> <label class=md-nav__title for=__nav_4_13> <span class="md-nav__icon md-icon"></span> macros </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../macros/json_assert/ class=md-nav__link> <span class=md-ellipsis> JSON_ASSERT </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_brace_init_copy_semantics/ class=md-nav__link> <span class=md-ellipsis> JSON_BRACE_INIT_COPY_SEMANTICS </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_throw_user/ class=md-nav__link> <span class=md-ellipsis> JSON_CATCH_USER, JSON_THROW_USER, JSON_TRY_USER </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_diagnostics/ class=md-nav__link> <span class=md-ellipsis> JSON_DIAGNOSTICS </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_diagnostic_positions/ class=md-nav__link> <span class=md-ellipsis> JSON_DIAGNOSTIC_POSITIONS </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_disable_enum_serialization/ class=md-nav__link> <span class=md-ellipsis> JSON_DISABLE_ENUM_SERIALIZATION </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_has_cpp_11/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_CPP_11, JSON_HAS_CPP_14, JSON_HAS_CPP_17, JSON_HAS_CPP_20 </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_has_filesystem/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_EXPERIMENTAL_FILESYSTEM, JSON_HAS_FILESYSTEM </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_has_ranges/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_RANGES </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_has_static_rtti/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_STATIC_RTTI </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_has_three_way_comparison/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_THREE_WAY_COMPARISON </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_noexception/ class=md-nav__link> <span class=md-ellipsis> JSON_NOEXCEPTION </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_no_io/ class=md-nav__link> <span class=md-ellipsis> JSON_NO_IO </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_skip_library_version_check/ class=md-nav__link> <span class=md-ellipsis> JSON_SKIP_LIBRARY_VERSION_CHECK </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_skip_unsupported_compiler_check/ class=md-nav__link> <span class=md-ellipsis> JSON_SKIP_UNSUPPORTED_COMPILER_CHECK </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_use_global_udls/ class=md-nav__link> <span class=md-ellipsis> JSON_USE_GLOBAL_UDLS </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_use_implicit_conversions/ class=md-nav__link> <span class=md-ellipsis> JSON_USE_IMPLICIT_CONVERSIONS </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_use_legacy_discarded_value_comparison/ class=md-nav__link> <span class=md-ellipsis> JSON_USE_LEGACY_DISCARDED_VALUE_COMPARISON </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_define_derived_type/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_ONLY_SERIALIZE, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_define_type_intrusive/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_TYPE_INTRUSIVE, NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_TYPE_INTRUSIVE_ONLY_SERIALIZE </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_define_type_non_intrusive/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_define_type_with_names/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_TYPE_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_namespace/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_NAMESPACE </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_namespace_begin/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_NAMESPACE_BEGIN, NLOHMANN_JSON_NAMESPACE_END </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_namespace_no_version/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_NAMESPACE_NO_VERSION </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_serialize_enum/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_SERIALIZE_ENUM </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_serialize_enum_strict/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_SERIALIZE_ENUM_STRICT </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_version_major/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_VERSION_MAJOR, NLOHMANN_JSON_VERSION_MINOR, NLOHMANN_JSON_VERSION_PATCH </span> </a> </li> </ul> </nav> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_5> <div class="md-nav__link md-nav__container"> <a href=../../../community/ class="md-nav__link "> <span class=md-ellipsis> Community </span> </a> <label class="md-nav__link " for=__nav_5 id=__nav_5_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_5_label aria-expanded=false> <label class=md-nav__title for=__nav_5> <span class="md-nav__icon md-icon"></span> Community </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../community/code_of_conduct/ class=md-nav__link> <span class=md-ellipsis> Code of Conduct </span> </a> </li> <li class=md-nav__item> <a href=../../../community/contribution_guidelines/ class=md-nav__link> <span class=md-ellipsis> Contribution Guidelines </span> </a> </li> <li class=md-nav__item> <a href=../../../community/quality_assurance/ class=md-nav__link> <span class=md-ellipsis> Quality assurance </span> </a> </li> <li class=md-nav__item> <a href=../../../community/governance/ class=md-nav__link> <span class=md-ellipsis> Governance </span> </a> </li> <li class=md-nav__item> <a href=../../../community/security_policy/ class=md-nav__link> <span class=md-ellipsis> Security Policy </span> </a> </li> </ul> </nav> </li> </ul> </nav> </div> </div> </div> <div class="md-sidebar md-sidebar--secondary" data-md-component=sidebar data-md-type=toc> <div class=md-sidebar__scrollwrap> <div class=md-sidebar__inner> <nav class="md-nav md-nav--secondary" aria-label="Table of contents"> <label class=md-nav__title for=__toc> <span class="md-nav__icon md-icon"></span> Table of contents </label> <ul class=md-nav__list data-md-component=toc data-md-scrollfix> <li class=md-nav__item> <a href=#parameters class=md-nav__link> <span class=md-ellipsis> Parameters </span> </a> </li> <li class=md-nav__item> <a href=#return-value class=md-nav__link> <span class=md-ellipsis> Return value </span> </a> </li> <li class=md-nav__item> <a href=#exception-safety class=md-nav__link> <span class=md-ellipsis> Exception safety </span> </a> </li> <li class=md-nav__item> <a href=#complexity class=md-nav__link> <span class=md-ellipsis> Complexity </span> </a> </li> <li class=md-nav__item> <a href=#examples class=md-nav__link> <span class=md-ellipsis> Examples </span> </a> </li> <li class=md-nav__item> <a href=#see-also class=md-nav__link> <span class=md-ellipsis> See also </span> </a> </li> <li class=md-nav__item> <a href=#version-history class=md-nav__link> <span class=md-ellipsis> Version history </span> </a> </li> </ul> </nav> </div> </div> </div> <div class=md-content data-md-component=content> <article class="md-content__inner md-typeset"> <a href="https://github.com/nlohmann/json/edit/develop/docs/mkdocs/docs/api/basic_json/to_cbor.md" title="Edit this page" class="md-content__button md-icon" rel="edit"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M10 20H6V4h7v5h5v3.1l2-2V8l-6-6H6c-1.1 0-2 .9-2 2v16c0 1.1.9 2 2 2h4zm10.2-7c.1 0 .3.1.4.2l1.3 1.3c.2.2.2.6 0 .8l-1 1-2.1-2.1 1-1c.1-.1.2-.2.4-.2m0 3.9L14.1 23H12v-2.1l6.1-6.1z"/></svg> </a> <a href="https://github.com/nlohmann/json/raw/develop/docs/mkdocs/docs/api/basic_json/to_cbor.md" title="View source of this page" class="md-content__button md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M17 18c.56 0 1 .44 1 1s-.44 1-1 1-1-.44-1-1 .44-1 1-1m0-3c-2.73 0-5.06 1.66-6 4 .94 2.34 3.27 4 6 4s5.06-1.66 6-4c-.94-2.34-3.27-4-6-4m0 6.5a2.5 2.5 0 0 1-2.5-2.5 2.5 2.5 0 0 1 2.5-2.5 2.5 2.5 0 0 1 2.5 2.5 2.5 2.5 0 0 1-2.5 2.5M9.27 20H6V4h7v5h5v4.07c.7.08 1.36.25 2 .49V8l-6-6H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h4.5a8.2 8.2 0 0 1-1.23-2"/></svg> </a> <h1 id=nlohmannbasic_jsonto_cbor><small>nlohmann::basic_json::</small>to_cbor<a class=headerlink href=#nlohmannbasic_jsonto_cbor title="Permanent link">&para;</a></h1> <div class=highlight><pre><span></span><code><span class=c1>// (1)</span>
 <span class=k>static</span><span class=w> </span><span class=n>std</span><span class=o>::</span><span class=n>vector</span><span class=o>&lt;</span><span class=n>std</span><span class=o>::</span><span class=kt>uint8_t</span><span class=o>&gt;</span><span class=w> </span><span class=n>to_cbor</span><span class=p>(</span><span class=k>const</span><span class=w> </span><span class=n>basic_json</span><span class=o>&amp;</span><span class=w> </span><span class=n>j</span><span class=p>);</span>
 
 <span class=c1>// (2)</span>
@@ -27,4 +27,4 @@
 <span class=w>    </span><span class=n>std</span><span class=o>::</span><span class=n>cout</span><span class=w> </span><span class=o>&lt;&lt;</span><span class=w> </span><span class=n>std</span><span class=o>::</span><span class=n>endl</span><span class=p>;</span>
 <span class=p>}</span>
 </code></pre></div> <p>Output:</p> <div class=highlight><pre><span></span><code><span class=mi>0</span><span class=err>xa</span><span class=mi>2</span><span class=w> </span><span class=mi>0</span><span class=err>x</span><span class=mi>67</span><span class=w> </span><span class=mi>0</span><span class=err>x</span><span class=mi>63</span><span class=w> </span><span class=mi>0</span><span class=err>x</span><span class=mi>6</span><span class=kc>f</span><span class=w> </span><span class=mi>0</span><span class=err>x</span><span class=mi>6</span><span class=err>d</span><span class=w> </span><span class=mi>0</span><span class=err>x</span><span class=mi>70</span><span class=w> </span><span class=mi>0</span><span class=err>x</span><span class=mi>61</span><span class=w> </span><span class=mi>0</span><span class=err>x</span><span class=mi>63</span><span class=w> </span><span class=mi>0</span><span class=err>x</span><span class=mi>74</span><span class=w> </span><span class=mi>0</span><span class=err>x</span><span class=kc>f</span><span class=mi>5</span><span class=w> </span><span class=mi>0</span><span class=err>x</span><span class=mi>66</span><span class=w> </span><span class=mi>0</span><span class=err>x</span><span class=mi>73</span><span class=w> </span><span class=mi>0</span><span class=err>x</span><span class=mi>63</span><span class=w> </span><span class=mi>0</span><span class=err>x</span><span class=mi>68</span><span class=w> </span><span class=mi>0</span><span class=err>x</span><span class=mi>65</span><span class=w> </span><span class=mi>0</span><span class=err>x</span><span class=mi>6</span><span class=err>d</span><span class=w> </span><span class=mi>0</span><span class=err>x</span><span class=mi>61</span><span class=w> </span><span class=mi>0</span><span class=err>x</span><span class=mi>00</span><span class=w> </span>
-</code></pre></div> </details> <h2 id=version-history>Version history<a class=headerlink href=#version-history title="Permanent link">&para;</a></h2> <ul> <li>Added in version 2.0.9.</li> <li>Compact representation of floating-point numbers added in version 3.8.0.</li> </ul> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 23, 2026 11:16:18 UTC">June 23, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
+</code></pre></div> </details> <h2 id=see-also>See also<a class=headerlink href=#see-also title="Permanent link">&para;</a></h2> <ul> <li><a href=../from_cbor/ >from_cbor</a> create a <abbr title="JavaScript Object Notation">JSON</abbr> value from an input in <abbr title="Concise Binary Object Representation">CBOR</abbr> format</li> <li><a href=../to_msgpack/ >to_msgpack</a> create a MessagePack serialization of a <abbr title="JavaScript Object Notation">JSON</abbr> value</li> <li><a href=../to_bson/ >to_bson</a> create a <abbr title="Binary JSON">BSON</abbr> serialization of a <abbr title="JavaScript Object Notation">JSON</abbr> value</li> <li><a href=../to_ubjson/ >to_ubjson</a> create a <abbr title="Universal Binary JSON">UBJSON</abbr> serialization of a <abbr title="JavaScript Object Notation">JSON</abbr> value</li> <li><a href=../to_bjdata/ >to_bjdata</a> create a <abbr title="Binary JData">BJData</abbr> serialization of a <abbr title="JavaScript Object Notation">JSON</abbr> value</li> </ul> <h2 id=version-history>Version history<a class=headerlink href=#version-history title="Permanent link">&para;</a></h2> <ul> <li>Added in version 2.0.9.</li> <li>Compact representation of floating-point numbers added in version 3.8.0.</li> </ul> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 29, 2026 20:15:18 UTC">June 29, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
diff --git a/api/basic_json/to_msgpack/index.html b/api/basic_json/to_msgpack/index.html
index 8f20260..ea49fd8 100644
--- a/api/basic_json/to_msgpack/index.html
+++ b/api/basic_json/to_msgpack/index.html
@@ -1,4 +1,4 @@
-<!doctype html><html lang=en class=no-js> <head><meta charset=utf-8><meta name=viewport content="width=device-width,initial-scale=1"><meta name=author content="Niels Lohmann"><link href="https://json.nlohmann.me/api/basic_json/to_msgpack/" rel="canonical"><link href=../to_cbor/ rel=prev><link href=../to_string/ rel=next><link rel=icon href=../../../assets/images/favicon.png><meta name=generator content="mkdocs-1.6.1, mkdocs-material-9.7.6"><title>to_msgpack - JSON for Modern C++</title><link rel=stylesheet href=../../../assets/stylesheets/main.484c7ddc.min.css><link rel=stylesheet href=../../../assets/stylesheets/palette.ab4e12ef.min.css><link rel="stylesheet" href="../../../assets/external/fonts.googleapis.com/css.61a430c9.css"><style>:root{--md-text-font:"Roboto";--md-code-font:"JetBrains Mono"}</style><link rel=stylesheet href=../../../css/custom.css><script>__md_scope=new URL("../../..",location),__md_hash=e=>[...e].reduce(((e,_)=>(e<<5)-e+_.charCodeAt(0)),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script></head> <body dir=ltr data-md-color-scheme=default data-md-color-primary=indigo data-md-color-accent=indigo> <input class=md-toggle data-md-toggle=drawer type=checkbox id=__drawer autocomplete=off> <input class=md-toggle data-md-toggle=search type=checkbox id=__search autocomplete=off> <label class=md-overlay for=__drawer></label> <div data-md-component=skip> <a href=#nlohmannbasic_jsonto_msgpack class=md-skip> Skip to content </a> </div> <div data-md-component=announce> </div> <header class=md-header data-md-component=header> <nav class="md-header__inner md-grid" aria-label=Header> <a href=../../.. title="JSON for Modern C++" class="md-header__button md-logo" aria-label="JSON for Modern C++" data-md-component=logo> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54"/></svg> </a> <label class="md-header__button md-icon" for=__drawer> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M3 6h18v2H3zm0 5h18v2H3zm0 5h18v2H3z"/></svg> </label> <div class=md-header__title data-md-component=header-title> <div class=md-header__ellipsis> <div class=md-header__topic> <span class=md-ellipsis> JSON for Modern C++ </span> </div> <div class=md-header__topic data-md-component=header-topic> <span class=md-ellipsis> to_msgpack </span> </div> </div> </div> <form class=md-header__option data-md-component=palette> <input class=md-option data-md-color-media="(prefers-color-scheme: light)" data-md-color-scheme=default data-md-color-primary=indigo data-md-color-accent=indigo aria-label="Switch to dark mode" type=radio name=__palette id=__palette_0> <label class="md-header__button md-icon" title="Switch to dark mode" for=__palette_1 hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a4 4 0 0 0-4 4 4 4 0 0 0 4 4 4 4 0 0 0 4-4 4 4 0 0 0-4-4m0 10a6 6 0 0 1-6-6 6 6 0 0 1 6-6 6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12z"/></svg> </label> <input class=md-option data-md-color-media="(prefers-color-scheme: dark)" data-md-color-scheme=slate data-md-color-primary=indigo data-md-color-accent=indigo aria-label="Switch to light mode" type=radio name=__palette id=__palette_1> <label class="md-header__button md-icon" title="Switch to light mode" for=__palette_0 hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 18c-.89 0-1.74-.2-2.5-.55C11.56 16.5 13 14.42 13 12s-1.44-4.5-3.5-5.45C10.26 6.2 11.11 6 12 6a6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12z"/></svg> </label> </form> <script>var palette=__md_get("__palette");if(palette&&palette.color){if("(prefers-color-scheme)"===palette.color.media){var media=matchMedia("(prefers-color-scheme: light)"),input=document.querySelector(media.matches?"[data-md-color-media='(prefers-color-scheme: light)']":"[data-md-color-media='(prefers-color-scheme: dark)']");palette.color.media=input.getAttribute("data-md-color-media"),palette.color.scheme=input.getAttribute("data-md-color-scheme"),palette.color.primary=input.getAttribute("data-md-color-primary"),palette.color.accent=input.getAttribute("data-md-color-accent")}for(var[key,value]of Object.entries(palette.color))document.body.setAttribute("data-md-color-"+key,value)}</script> <label class="md-header__button md-icon" for=__search> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg> </label> <div class=md-search data-md-component=search role=dialog> <label class=md-search__overlay for=__search></label> <div class=md-search__inner role=search> <form class=md-search__form name=search> <input type=text class=md-search__input name=query aria-label=Search placeholder=Search autocapitalize=off autocorrect=off autocomplete=off spellcheck=false data-md-component=search-query required> <label class="md-search__icon md-icon" for=__search> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11z"/></svg> </label> <nav class=md-search__options aria-label=Search> <button type=reset class="md-search__icon md-icon" title=Clear aria-label=Clear tabindex=-1> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z"/></svg> </button> </nav> </form> <div class=md-search__output> <div class=md-search__scrollwrap tabindex=0 data-md-scrollfix> <div class=md-search-result data-md-component=search-result> <div class=md-search-result__meta> Initializing search </div> <ol class=md-search-result__list role=presentation></ol> </div> </div> </div> </div> </div> <div class=md-header__source> <a href="https://github.com/nlohmann/json" title="Go to repository" class="md-source" data-md-component="source"> <div class="md-source__icon md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </div> <div class=md-source__repository> nlohmann/json </div> </a> </div> </nav> </header> <div class=md-container data-md-component=container> <nav class=md-tabs aria-label=Tabs data-md-component=tabs> <div class=md-grid> <ul class=md-tabs__list> <li class=md-tabs__item> <a href=../../.. class=md-tabs__link> Home </a> </li> <li class=md-tabs__item> <a href=../../../features/arbitrary_types/ class=md-tabs__link> Features </a> </li> <li class=md-tabs__item> <a href=../../../integration/ class=md-tabs__link> Integration </a> </li> <li class="md-tabs__item md-tabs__item--active"> <a href=../ class=md-tabs__link> API Documentation </a> </li> <li class=md-tabs__item> <a href=../../../community/ class=md-tabs__link> Community </a> </li> </ul> </div> </nav> <main class=md-main data-md-component=main> <div class="md-main__inner md-grid"> <div class="md-sidebar md-sidebar--primary" data-md-component=sidebar data-md-type=navigation> <div class=md-sidebar__scrollwrap> <div class=md-sidebar__inner> <nav class="md-nav md-nav--primary md-nav--lifted" aria-label=Navigation data-md-level=0> <label class=md-nav__title for=__drawer> <a href=../../.. title="JSON for Modern C++" class="md-nav__button md-logo" aria-label="JSON for Modern C++" data-md-component=logo> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54"/></svg> </a> JSON for Modern C++ </label> <div class=md-nav__source> <a href="https://github.com/nlohmann/json" title="Go to repository" class="md-source" data-md-component="source"> <div class="md-source__icon md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </div> <div class=md-source__repository> nlohmann/json </div> </a> </div> <ul class=md-nav__list data-md-scrollfix> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_1> <div class="md-nav__link md-nav__container"> <a href=../../.. class="md-nav__link "> <span class=md-ellipsis> Home </span> </a> <label class="md-nav__link " for=__nav_1 id=__nav_1_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_1_label aria-expanded=false> <label class=md-nav__title for=__nav_1> <span class="md-nav__icon md-icon"></span> Home </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../home/license/ class=md-nav__link> <span class=md-ellipsis> License </span> </a> </li> <li class=md-nav__item> <a href=../../../home/faq/ class=md-nav__link> <span class=md-ellipsis> FAQ </span> </a> </li> <li class=md-nav__item> <a href=../../../home/exceptions/ class=md-nav__link> <span class=md-ellipsis> Exceptions </span> </a> </li> <li class=md-nav__item> <a href=../../../home/releases/ class=md-nav__link> <span class=md-ellipsis> Releases </span> </a> </li> <li class=md-nav__item> <a href=../../../home/design_goals/ class=md-nav__link> <span class=md-ellipsis> Design goals </span> </a> </li> <li class=md-nav__item> <a href=../../../home/architecture/ class=md-nav__link> <span class=md-ellipsis> Architecture </span> </a> </li> <li class=md-nav__item> <a href=../../../home/customers/ class=md-nav__link> <span class=md-ellipsis> Customers </span> </a> </li> <li class=md-nav__item> <a href=../../../home/sponsors/ class=md-nav__link> <span class=md-ellipsis> Sponsors </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2> <label class=md-nav__link for=__nav_2 id=__nav_2_label tabindex=0> <span class=md-ellipsis> Features </span> <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_2_label aria-expanded=false> <label class=md-nav__title for=__nav_2> <span class="md-nav__icon md-icon"></span> Features </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/arbitrary_types/ class=md-nav__link> <span class=md-ellipsis> Arbitrary Type Conversions </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_2> <div class="md-nav__link md-nav__container"> <a href=../../../features/binary_formats/ class="md-nav__link "> <span class=md-ellipsis> Binary Formats </span> </a> <label class="md-nav__link " for=__nav_2_2 id=__nav_2_2_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_2_label aria-expanded=false> <label class=md-nav__title for=__nav_2_2> <span class="md-nav__icon md-icon"></span> Binary Formats </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/binary_formats/bjdata/ class=md-nav__link> <span class=md-ellipsis> BJData </span> </a> </li> <li class=md-nav__item> <a href=../../../features/binary_formats/bson/ class=md-nav__link> <span class=md-ellipsis> BSON </span> </a> </li> <li class=md-nav__item> <a href=../../../features/binary_formats/cbor/ class=md-nav__link> <span class=md-ellipsis> CBOR </span> </a> </li> <li class=md-nav__item> <a href=../../../features/binary_formats/messagepack/ class=md-nav__link> <span class=md-ellipsis> MessagePack </span> </a> </li> <li class=md-nav__item> <a href=../../../features/binary_formats/ubjson/ class=md-nav__link> <span class=md-ellipsis> UBJSON </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../../features/binary_values/ class=md-nav__link> <span class=md-ellipsis> Binary Values </span> </a> </li> <li class=md-nav__item> <a href=../../../features/comments/ class=md-nav__link> <span class=md-ellipsis> Comments </span> </a> </li> <li class=md-nav__item> <a href=../../../features/trailing_commas/ class=md-nav__link> <span class=md-ellipsis> Trailing Commas </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_6> <div class="md-nav__link md-nav__container"> <a href=../../../features/element_access/ class="md-nav__link "> <span class=md-ellipsis> Element Access </span> </a> <label class="md-nav__link " for=__nav_2_6 id=__nav_2_6_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_6_label aria-expanded=false> <label class=md-nav__title for=__nav_2_6> <span class="md-nav__icon md-icon"></span> Element Access </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/element_access/unchecked_access/ class=md-nav__link> <span class=md-ellipsis> Unchecked access: operator[] </span> </a> </li> <li class=md-nav__item> <a href=../../../features/element_access/checked_access/ class=md-nav__link> <span class=md-ellipsis> Checked access: at </span> </a> </li> <li class=md-nav__item> <a href=../../../features/element_access/default_value/ class=md-nav__link> <span class=md-ellipsis> Access with default value: value </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../../features/iterators/ class=md-nav__link> <span class=md-ellipsis> Iterators </span> </a> </li> <li class=md-nav__item> <a href=../../../features/json_pointer/ class=md-nav__link> <span class=md-ellipsis> JSON Pointer </span> </a> </li> <li class=md-nav__item> <a href=../../../features/json_patch/ class=md-nav__link> <span class=md-ellipsis> JSON Patch and Diff </span> </a> </li> <li class=md-nav__item> <a href=../../../features/merge_patch/ class=md-nav__link> <span class=md-ellipsis> JSON Merge Patch </span> </a> </li> <li class=md-nav__item> <a href=../../../features/modules/ class=md-nav__link> <span class=md-ellipsis> Modules </span> </a> </li> <li class=md-nav__item> <a href=../../../features/namespace/ class=md-nav__link> <span class=md-ellipsis> nlohmann Namespace </span> </a> </li> <li class=md-nav__item> <a href=../../../features/object_order/ class=md-nav__link> <span class=md-ellipsis> Object Order </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_14> <div class="md-nav__link md-nav__container"> <a href=../../../features/parsing/ class="md-nav__link "> <span class=md-ellipsis> Parsing </span> </a> <label class="md-nav__link " for=__nav_2_14 id=__nav_2_14_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_14_label aria-expanded=false> <label class=md-nav__title for=__nav_2_14> <span class="md-nav__icon md-icon"></span> Parsing </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/parsing/json_lines/ class=md-nav__link> <span class=md-ellipsis> JSON Lines </span> </a> </li> <li class=md-nav__item> <a href=../../../features/parsing/parse_exceptions/ class=md-nav__link> <span class=md-ellipsis> Parsing and Exceptions </span> </a> </li> <li class=md-nav__item> <a href=../../../features/parsing/parser_callbacks/ class=md-nav__link> <span class=md-ellipsis> Parser Callbacks </span> </a> </li> <li class=md-nav__item> <a href=../../../features/parsing/sax_interface/ class=md-nav__link> <span class=md-ellipsis> SAX Interface </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../../features/assertions/ class=md-nav__link> <span class=md-ellipsis> Runtime Assertions </span> </a> </li> <li class=md-nav__item> <a href=../../../features/enum_conversion/ class=md-nav__link> <span class=md-ellipsis> Specializing enum conversion </span> </a> </li> <li class=md-nav__item> <a href=../../../features/macros/ class=md-nav__link> <span class=md-ellipsis> Supported Macros </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_18> <div class="md-nav__link md-nav__container"> <a href=../../../features/types/ class="md-nav__link "> <span class=md-ellipsis> Types </span> </a> <label class="md-nav__link " for=__nav_2_18 id=__nav_2_18_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_18_label aria-expanded=false> <label class=md-nav__title for=__nav_2_18> <span class="md-nav__icon md-icon"></span> Types </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/types/number_handling/ class=md-nav__link> <span class=md-ellipsis> Number Handling </span> </a> </li> </ul> </nav> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_3> <div class="md-nav__link md-nav__container"> <a href=../../../integration/ class="md-nav__link "> <span class=md-ellipsis> Integration </span> </a> <label class="md-nav__link " for=__nav_3 id=__nav_3_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_3_label aria-expanded=false> <label class=md-nav__title for=__nav_3> <span class="md-nav__icon md-icon"></span> Integration </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../integration/migration_guide/ class=md-nav__link> <span class=md-ellipsis> Migration Guide </span> </a> </li> <li class=md-nav__item> <a href=../../../integration/cmake/ class=md-nav__link> <span class=md-ellipsis> CMake </span> </a> </li> <li class=md-nav__item> <a href=../../../integration/package_managers/ class=md-nav__link> <span class=md-ellipsis> Package Managers </span> </a> </li> <li class=md-nav__item> <a href=../../../integration/pkg-config/ class=md-nav__link> <span class=md-ellipsis> Pkg-config </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--active md-nav__item--section md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4 checked> <label class=md-nav__link for=__nav_4 id=__nav_4_label tabindex> <span class=md-ellipsis> API Documentation </span> <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_4_label aria-expanded=true> <label class=md-nav__title for=__nav_4> <span class="md-nav__icon md-icon"></span> API Documentation </label> <ul class=md-nav__list data-md-scrollfix> <li class="md-nav__item md-nav__item--active md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_1 checked> <div class="md-nav__link md-nav__container"> <a href=../ class="md-nav__link "> <span class=md-ellipsis> basic_json </span> </a> <label class="md-nav__link " for=__nav_4_1 id=__nav_4_1_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_1_label aria-expanded=true> <label class=md-nav__title for=__nav_4_1> <span class="md-nav__icon md-icon"></span> basic_json </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../basic_json/ class=md-nav__link> <span class=md-ellipsis> (Constructor) </span> </a> </li> <li class=md-nav__item> <a href=../~basic_json/ class=md-nav__link> <span class=md-ellipsis> (Destructor) </span> </a> </li> <li class=md-nav__item> <a href=../accept/ class=md-nav__link> <span class=md-ellipsis> accept </span> </a> </li> <li class=md-nav__item> <a href=../array/ class=md-nav__link> <span class=md-ellipsis> array </span> </a> </li> <li class=md-nav__item> <a href=../array_t/ class=md-nav__link> <span class=md-ellipsis> array_t </span> </a> </li> <li class=md-nav__item> <a href=../at/ class=md-nav__link> <span class=md-ellipsis> at </span> </a> </li> <li class=md-nav__item> <a href=../back/ class=md-nav__link> <span class=md-ellipsis> back </span> </a> </li> <li class=md-nav__item> <a href=../begin/ class=md-nav__link> <span class=md-ellipsis> begin </span> </a> </li> <li class=md-nav__item> <a href=../binary/ class=md-nav__link> <span class=md-ellipsis> binary </span> </a> </li> <li class=md-nav__item> <a href=../binary_t/ class=md-nav__link> <span class=md-ellipsis> binary_t </span> </a> </li> <li class=md-nav__item> <a href=../boolean_t/ class=md-nav__link> <span class=md-ellipsis> boolean_t </span> </a> </li> <li class=md-nav__item> <a href=../cbegin/ class=md-nav__link> <span class=md-ellipsis> cbegin </span> </a> </li> <li class=md-nav__item> <a href=../cbor_tag_handler_t/ class=md-nav__link> <span class=md-ellipsis> cbor_tag_handler_t </span> </a> </li> <li class=md-nav__item> <a href=../cend/ class=md-nav__link> <span class=md-ellipsis> cend </span> </a> </li> <li class=md-nav__item> <a href=../clear/ class=md-nav__link> <span class=md-ellipsis> clear </span> </a> </li> <li class=md-nav__item> <a href=../contains/ class=md-nav__link> <span class=md-ellipsis> contains </span> </a> </li> <li class=md-nav__item> <a href=../count/ class=md-nav__link> <span class=md-ellipsis> count </span> </a> </li> <li class=md-nav__item> <a href=../crbegin/ class=md-nav__link> <span class=md-ellipsis> crbegin </span> </a> </li> <li class=md-nav__item> <a href=../crend/ class=md-nav__link> <span class=md-ellipsis> crend </span> </a> </li> <li class=md-nav__item> <a href=../default_object_comparator_t/ class=md-nav__link> <span class=md-ellipsis> default_object_comparator_t </span> </a> </li> <li class=md-nav__item> <a href=../diff/ class=md-nav__link> <span class=md-ellipsis> diff </span> </a> </li> <li class=md-nav__item> <a href=../dump/ class=md-nav__link> <span class=md-ellipsis> dump </span> </a> </li> <li class=md-nav__item> <a href=../emplace/ class=md-nav__link> <span class=md-ellipsis> emplace </span> </a> </li> <li class=md-nav__item> <a href=../emplace_back/ class=md-nav__link> <span class=md-ellipsis> emplace_back </span> </a> </li> <li class=md-nav__item> <a href=../empty/ class=md-nav__link> <span class=md-ellipsis> empty </span> </a> </li> <li class=md-nav__item> <a href=../end/ class=md-nav__link> <span class=md-ellipsis> end </span> </a> </li> <li class=md-nav__item> <a href=../end_pos/ class=md-nav__link> <span class=md-ellipsis> end_pos </span> </a> </li> <li class=md-nav__item> <a href=../erase/ class=md-nav__link> <span class=md-ellipsis> erase </span> </a> </li> <li class=md-nav__item> <a href=../error_handler_t/ class=md-nav__link> <span class=md-ellipsis> error_handler_t </span> </a> </li> <li class=md-nav__item> <a href=../exception/ class=md-nav__link> <span class=md-ellipsis> exception </span> </a> </li> <li class=md-nav__item> <a href=../find/ class=md-nav__link> <span class=md-ellipsis> find </span> </a> </li> <li class=md-nav__item> <a href=../flatten/ class=md-nav__link> <span class=md-ellipsis> flatten </span> </a> </li> <li class=md-nav__item> <a href=../from_bjdata/ class=md-nav__link> <span class=md-ellipsis> from_bjdata </span> </a> </li> <li class=md-nav__item> <a href=../from_bson/ class=md-nav__link> <span class=md-ellipsis> from_bson </span> </a> </li> <li class=md-nav__item> <a href=../from_cbor/ class=md-nav__link> <span class=md-ellipsis> from_cbor </span> </a> </li> <li class=md-nav__item> <a href=../from_msgpack/ class=md-nav__link> <span class=md-ellipsis> from_msgpack </span> </a> </li> <li class=md-nav__item> <a href=../from_ubjson/ class=md-nav__link> <span class=md-ellipsis> from_ubjson </span> </a> </li> <li class=md-nav__item> <a href=../front/ class=md-nav__link> <span class=md-ellipsis> front </span> </a> </li> <li class=md-nav__item> <a href=../get/ class=md-nav__link> <span class=md-ellipsis> get </span> </a> </li> <li class=md-nav__item> <a href=../get_allocator/ class=md-nav__link> <span class=md-ellipsis> get_allocator </span> </a> </li> <li class=md-nav__item> <a href=../get_binary/ class=md-nav__link> <span class=md-ellipsis> get_binary </span> </a> </li> <li class=md-nav__item> <a href=../get_ptr/ class=md-nav__link> <span class=md-ellipsis> get_ptr </span> </a> </li> <li class=md-nav__item> <a href=../get_ref/ class=md-nav__link> <span class=md-ellipsis> get_ref </span> </a> </li> <li class=md-nav__item> <a href=../get_to/ class=md-nav__link> <span class=md-ellipsis> get_to </span> </a> </li> <li class=md-nav__item> <a href=../std_hash/ class=md-nav__link> <span class=md-ellipsis> std::hash&lt;basic_json&gt; </span> </a> </li> <li class=md-nav__item> <a href=../input_format_t/ class=md-nav__link> <span class=md-ellipsis> input_format_t </span> </a> </li> <li class=md-nav__item> <a href=../insert/ class=md-nav__link> <span class=md-ellipsis> insert </span> </a> </li> <li class=md-nav__item> <a href=../invalid_iterator/ class=md-nav__link> <span class=md-ellipsis> invalid_iterator </span> </a> </li> <li class=md-nav__item> <a href=../is_array/ class=md-nav__link> <span class=md-ellipsis> is_array </span> </a> </li> <li class=md-nav__item> <a href=../is_binary/ class=md-nav__link> <span class=md-ellipsis> is_binary </span> </a> </li> <li class=md-nav__item> <a href=../is_boolean/ class=md-nav__link> <span class=md-ellipsis> is_boolean </span> </a> </li> <li class=md-nav__item> <a href=../is_discarded/ class=md-nav__link> <span class=md-ellipsis> is_discarded </span> </a> </li> <li class=md-nav__item> <a href=../is_null/ class=md-nav__link> <span class=md-ellipsis> is_null </span> </a> </li> <li class=md-nav__item> <a href=../is_number/ class=md-nav__link> <span class=md-ellipsis> is_number </span> </a> </li> <li class=md-nav__item> <a href=../is_number_float/ class=md-nav__link> <span class=md-ellipsis> is_number_float </span> </a> </li> <li class=md-nav__item> <a href=../is_number_integer/ class=md-nav__link> <span class=md-ellipsis> is_number_integer </span> </a> </li> <li class=md-nav__item> <a href=../is_number_unsigned/ class=md-nav__link> <span class=md-ellipsis> is_number_unsigned </span> </a> </li> <li class=md-nav__item> <a href=../is_object/ class=md-nav__link> <span class=md-ellipsis> is_object </span> </a> </li> <li class=md-nav__item> <a href=../is_primitive/ class=md-nav__link> <span class=md-ellipsis> is_primitive </span> </a> </li> <li class=md-nav__item> <a href=../is_string/ class=md-nav__link> <span class=md-ellipsis> is_string </span> </a> </li> <li class=md-nav__item> <a href=../is_structured/ class=md-nav__link> <span class=md-ellipsis> is_structured </span> </a> </li> <li class=md-nav__item> <a href=../items/ class=md-nav__link> <span class=md-ellipsis> items </span> </a> </li> <li class=md-nav__item> <a href=../json_base_class_t/ class=md-nav__link> <span class=md-ellipsis> json_base_class_t </span> </a> </li> <li class=md-nav__item> <a href=../json_serializer/ class=md-nav__link> <span class=md-ellipsis> json_serializer </span> </a> </li> <li class=md-nav__item> <a href=../max_size/ class=md-nav__link> <span class=md-ellipsis> max_size </span> </a> </li> <li class=md-nav__item> <a href=../meta/ class=md-nav__link> <span class=md-ellipsis> meta </span> </a> </li> <li class=md-nav__item> <a href=../merge_patch/ class=md-nav__link> <span class=md-ellipsis> merge_patch </span> </a> </li> <li class=md-nav__item> <a href=../number_float_t/ class=md-nav__link> <span class=md-ellipsis> number_float_t </span> </a> </li> <li class=md-nav__item> <a href=../number_integer_t/ class=md-nav__link> <span class=md-ellipsis> number_integer_t </span> </a> </li> <li class=md-nav__item> <a href=../number_unsigned_t/ class=md-nav__link> <span class=md-ellipsis> number_unsigned_t </span> </a> </li> <li class=md-nav__item> <a href=../object/ class=md-nav__link> <span class=md-ellipsis> object </span> </a> </li> <li class=md-nav__item> <a href=../object_comparator_t/ class=md-nav__link> <span class=md-ellipsis> object_comparator_t </span> </a> </li> <li class=md-nav__item> <a href=../object_t/ class=md-nav__link> <span class=md-ellipsis> object_t </span> </a> </li> <li class=md-nav__item> <a href=../operator_ValueType/ class=md-nav__link> <span class=md-ellipsis> operator ValueType </span> </a> </li> <li class=md-nav__item> <a href=../operator_value_t/ class=md-nav__link> <span class=md-ellipsis> operator value_t </span> </a> </li> <li class=md-nav__item> <a href=../operator%5B%5D/ class=md-nav__link> <span class=md-ellipsis> operator[] </span> </a> </li> <li class=md-nav__item> <a href=../operator%3D/ class=md-nav__link> <span class=md-ellipsis> operator= </span> </a> </li> <li class=md-nav__item> <a href=../operator%2B%3D/ class=md-nav__link> <span class=md-ellipsis> operator+= </span> </a> </li> <li class=md-nav__item> <a href=../operator_eq/ class=md-nav__link> <span class=md-ellipsis> operator== </span> </a> </li> <li class=md-nav__item> <a href=../operator_ne/ class=md-nav__link> <span class=md-ellipsis> operator!= </span> </a> </li> <li class=md-nav__item> <a href=../operator_lt/ class=md-nav__link> <span class=md-ellipsis> operator< </span> </a> </li> <li class=md-nav__item> <a href=../operator_gt/ class=md-nav__link> <span class=md-ellipsis> operator> </span> </a> </li> <li class=md-nav__item> <a href=../operator_le/ class=md-nav__link> <span class=md-ellipsis> operator<= </span> </a> </li> <li class=md-nav__item> <a href=../operator_ge/ class=md-nav__link> <span class=md-ellipsis> operator>= </span> </a> </li> <li class=md-nav__item> <a href=../operator_spaceship/ class=md-nav__link> <span class=md-ellipsis> operator<=> </span> </a> </li> <li class=md-nav__item> <a href=../out_of_range/ class=md-nav__link> <span class=md-ellipsis> out_of_range </span> </a> </li> <li class=md-nav__item> <a href=../other_error/ class=md-nav__link> <span class=md-ellipsis> other_error </span> </a> </li> <li class=md-nav__item> <a href=../parse/ class=md-nav__link> <span class=md-ellipsis> parse </span> </a> </li> <li class=md-nav__item> <a href=../parse_error/ class=md-nav__link> <span class=md-ellipsis> parse_error </span> </a> </li> <li class=md-nav__item> <a href=../parse_event_t/ class=md-nav__link> <span class=md-ellipsis> parse_event_t </span> </a> </li> <li class=md-nav__item> <a href=../parser_callback_t/ class=md-nav__link> <span class=md-ellipsis> parser_callback_t </span> </a> </li> <li class=md-nav__item> <a href=../patch/ class=md-nav__link> <span class=md-ellipsis> patch </span> </a> </li> <li class=md-nav__item> <a href=../patch_inplace/ class=md-nav__link> <span class=md-ellipsis> patch_inplace </span> </a> </li> <li class=md-nav__item> <a href=../push_back/ class=md-nav__link> <span class=md-ellipsis> push_back </span> </a> </li> <li class=md-nav__item> <a href=../rbegin/ class=md-nav__link> <span class=md-ellipsis> rbegin </span> </a> </li> <li class=md-nav__item> <a href=../rend/ class=md-nav__link> <span class=md-ellipsis> rend </span> </a> </li> <li class=md-nav__item> <a href=../sax_parse/ class=md-nav__link> <span class=md-ellipsis> sax_parse </span> </a> </li> <li class=md-nav__item> <a href=../size/ class=md-nav__link> <span class=md-ellipsis> size </span> </a> </li> <li class=md-nav__item> <a href=../start_pos/ class=md-nav__link> <span class=md-ellipsis> start_pos </span> </a> </li> <li class=md-nav__item> <a href=../string_t/ class=md-nav__link> <span class=md-ellipsis> string_t </span> </a> </li> <li class=md-nav__item> <a href=../swap/ class=md-nav__link> <span class=md-ellipsis> swap </span> </a> </li> <li class=md-nav__item> <a href=../std_swap/ class=md-nav__link> <span class=md-ellipsis> std::swap&lt;basic_json&gt; </span> </a> </li> <li class=md-nav__item> <a href=../to_bjdata/ class=md-nav__link> <span class=md-ellipsis> to_bjdata </span> </a> </li> <li class=md-nav__item> <a href=../to_bson/ class=md-nav__link> <span class=md-ellipsis> to_bson </span> </a> </li> <li class=md-nav__item> <a href=../to_cbor/ class=md-nav__link> <span class=md-ellipsis> to_cbor </span> </a> </li> <li class="md-nav__item md-nav__item--active"> <input class="md-nav__toggle md-toggle" type=checkbox id=__toc> <label class="md-nav__link md-nav__link--active" for=__toc> <span class=md-ellipsis> to_msgpack </span> <span class="md-nav__icon md-icon"></span> </label> <a href=./ class="md-nav__link md-nav__link--active"> <span class=md-ellipsis> to_msgpack </span> </a> <nav class="md-nav md-nav--secondary" aria-label="Table of contents"> <label class=md-nav__title for=__toc> <span class="md-nav__icon md-icon"></span> Table of contents </label> <ul class=md-nav__list data-md-component=toc data-md-scrollfix> <li class=md-nav__item> <a href=#parameters class=md-nav__link> <span class=md-ellipsis> Parameters </span> </a> </li> <li class=md-nav__item> <a href=#return-value class=md-nav__link> <span class=md-ellipsis> Return value </span> </a> </li> <li class=md-nav__item> <a href=#exception-safety class=md-nav__link> <span class=md-ellipsis> Exception safety </span> </a> </li> <li class=md-nav__item> <a href=#complexity class=md-nav__link> <span class=md-ellipsis> Complexity </span> </a> </li> <li class=md-nav__item> <a href=#examples class=md-nav__link> <span class=md-ellipsis> Examples </span> </a> </li> <li class=md-nav__item> <a href=#version-history class=md-nav__link> <span class=md-ellipsis> Version history </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../to_string/ class=md-nav__link> <span class=md-ellipsis> to_string </span> </a> </li> <li class=md-nav__item> <a href=../to_ubjson/ class=md-nav__link> <span class=md-ellipsis> to_ubjson </span> </a> </li> <li class=md-nav__item> <a href=../type/ class=md-nav__link> <span class=md-ellipsis> type </span> </a> </li> <li class=md-nav__item> <a href=../type_error/ class=md-nav__link> <span class=md-ellipsis> type_error </span> </a> </li> <li class=md-nav__item> <a href=../type_name/ class=md-nav__link> <span class=md-ellipsis> type_name </span> </a> </li> <li class=md-nav__item> <a href=../unflatten/ class=md-nav__link> <span class=md-ellipsis> unflatten </span> </a> </li> <li class=md-nav__item> <a href=../update/ class=md-nav__link> <span class=md-ellipsis> update </span> </a> </li> <li class=md-nav__item> <a href=../value/ class=md-nav__link> <span class=md-ellipsis> value </span> </a> </li> <li class=md-nav__item> <a href=../value_t/ class=md-nav__link> <span class=md-ellipsis> value_t </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_2> <div class="md-nav__link md-nav__container"> <a href=../../byte_container_with_subtype/ class="md-nav__link "> <span class=md-ellipsis> byte_container_with_subtype </span> </a> <label class="md-nav__link " for=__nav_4_2 id=__nav_4_2_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_2_label aria-expanded=false> <label class=md-nav__title for=__nav_4_2> <span class="md-nav__icon md-icon"></span> byte_container_with_subtype </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../byte_container_with_subtype/byte_container_with_subtype/ class=md-nav__link> <span class=md-ellipsis> (constructor) </span> </a> </li> <li class=md-nav__item> <a href=../../byte_container_with_subtype/clear_subtype/ class=md-nav__link> <span class=md-ellipsis> clear_subtype </span> </a> </li> <li class=md-nav__item> <a href=../../byte_container_with_subtype/has_subtype/ class=md-nav__link> <span class=md-ellipsis> has_subtype </span> </a> </li> <li class=md-nav__item> <a href=../../byte_container_with_subtype/set_subtype/ class=md-nav__link> <span class=md-ellipsis> set_subtype </span> </a> </li> <li class=md-nav__item> <a href=../../byte_container_with_subtype/subtype/ class=md-nav__link> <span class=md-ellipsis> subtype </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_3> <div class="md-nav__link md-nav__container"> <a href=../../adl_serializer/ class="md-nav__link "> <span class=md-ellipsis> adl_serializer </span> </a> <label class="md-nav__link " for=__nav_4_3 id=__nav_4_3_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_3_label aria-expanded=false> <label class=md-nav__title for=__nav_4_3> <span class="md-nav__icon md-icon"></span> adl_serializer </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../adl_serializer/from_json/ class=md-nav__link> <span class=md-ellipsis> from_json </span> </a> </li> <li class=md-nav__item> <a href=../../adl_serializer/to_json/ class=md-nav__link> <span class=md-ellipsis> to_json </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../json/ class=md-nav__link> <span class=md-ellipsis> json </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_5> <div class="md-nav__link md-nav__container"> <a href=../../json_pointer/ class="md-nav__link "> <span class=md-ellipsis> json_pointer </span> </a> <label class="md-nav__link " for=__nav_4_5 id=__nav_4_5_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_5_label aria-expanded=false> <label class=md-nav__title for=__nav_4_5> <span class="md-nav__icon md-icon"></span> json_pointer </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../json_pointer/json_pointer/ class=md-nav__link> <span class=md-ellipsis> (Constructor) </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/back/ class=md-nav__link> <span class=md-ellipsis> back </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/empty/ class=md-nav__link> <span class=md-ellipsis> empty </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/front/ class=md-nav__link> <span class=md-ellipsis> front </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_string_t/ class=md-nav__link> <span class=md-ellipsis> operator string_t </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_eq/ class=md-nav__link> <span class=md-ellipsis> operator== </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_ne/ class=md-nav__link> <span class=md-ellipsis> operator!= </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_slash/ class=md-nav__link> <span class=md-ellipsis> operator/ </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_slasheq/ class=md-nav__link> <span class=md-ellipsis> operator/= </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/parent_pointer/ class=md-nav__link> <span class=md-ellipsis> parent_pointer </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/pop_back/ class=md-nav__link> <span class=md-ellipsis> pop_back </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/pop_front/ class=md-nav__link> <span class=md-ellipsis> pop_front </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/push_back/ class=md-nav__link> <span class=md-ellipsis> push_back </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/push_front/ class=md-nav__link> <span class=md-ellipsis> push_front </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/string_t/ class=md-nav__link> <span class=md-ellipsis> string_t </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/to_string/ class=md-nav__link> <span class=md-ellipsis> to_string </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_6> <div class="md-nav__link md-nav__container"> <a href=../../json_sax/ class="md-nav__link "> <span class=md-ellipsis> json_sax </span> </a> <label class="md-nav__link " for=__nav_4_6 id=__nav_4_6_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_6_label aria-expanded=false> <label class=md-nav__title for=__nav_4_6> <span class="md-nav__icon md-icon"></span> json_sax </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../json_sax/binary/ class=md-nav__link> <span class=md-ellipsis> binary </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/boolean/ class=md-nav__link> <span class=md-ellipsis> boolean </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/end_array/ class=md-nav__link> <span class=md-ellipsis> end_array </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/end_object/ class=md-nav__link> <span class=md-ellipsis> end_object </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/key/ class=md-nav__link> <span class=md-ellipsis> key </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/null/ class=md-nav__link> <span class=md-ellipsis> null </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/number_float/ class=md-nav__link> <span class=md-ellipsis> number_float </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/number_integer/ class=md-nav__link> <span class=md-ellipsis> number_integer </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/number_unsigned/ class=md-nav__link> <span class=md-ellipsis> number_unsigned </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/parse_error/ class=md-nav__link> <span class=md-ellipsis> parse_error </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/start_array/ class=md-nav__link> <span class=md-ellipsis> start_array </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/start_object/ class=md-nav__link> <span class=md-ellipsis> start_object </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/string/ class=md-nav__link> <span class=md-ellipsis> string </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../operator_ltlt/ class=md-nav__link> <span class=md-ellipsis> operator<<(basic_json), operator<<(json_pointer) </span> </a> </li> <li class=md-nav__item> <a href=../../operator_gtgt/ class=md-nav__link> <span class=md-ellipsis> operator>>(basic_json) </span> </a> </li> <li class=md-nav__item> <a href=../../operator_literal_json/ class=md-nav__link> <span class=md-ellipsis> operator""_json </span> </a> </li> <li class=md-nav__item> <a href=../../operator_literal_json_pointer/ class=md-nav__link> <span class=md-ellipsis> operator""_json_pointer </span> </a> </li> <li class=md-nav__item> <a href=../../ordered_json/ class=md-nav__link> <span class=md-ellipsis> ordered_json </span> </a> </li> <li class=md-nav__item> <a href=../../ordered_map/ class=md-nav__link> <span class=md-ellipsis> ordered_map </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_13> <div class="md-nav__link md-nav__container"> <a href=../../macros/ class="md-nav__link "> <span class=md-ellipsis> macros </span> </a> <label class="md-nav__link " for=__nav_4_13 id=__nav_4_13_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_13_label aria-expanded=false> <label class=md-nav__title for=__nav_4_13> <span class="md-nav__icon md-icon"></span> macros </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../macros/json_assert/ class=md-nav__link> <span class=md-ellipsis> JSON_ASSERT </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_brace_init_copy_semantics/ class=md-nav__link> <span class=md-ellipsis> JSON_BRACE_INIT_COPY_SEMANTICS </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_throw_user/ class=md-nav__link> <span class=md-ellipsis> JSON_CATCH_USER, JSON_THROW_USER, JSON_TRY_USER </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_diagnostics/ class=md-nav__link> <span class=md-ellipsis> JSON_DIAGNOSTICS </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_diagnostic_positions/ class=md-nav__link> <span class=md-ellipsis> JSON_DIAGNOSTIC_POSITIONS </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_disable_enum_serialization/ class=md-nav__link> <span class=md-ellipsis> JSON_DISABLE_ENUM_SERIALIZATION </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_has_cpp_11/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_CPP_11, JSON_HAS_CPP_14, JSON_HAS_CPP_17, JSON_HAS_CPP_20 </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_has_filesystem/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_EXPERIMENTAL_FILESYSTEM, JSON_HAS_FILESYSTEM </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_has_ranges/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_RANGES </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_has_static_rtti/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_STATIC_RTTI </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_has_three_way_comparison/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_THREE_WAY_COMPARISON </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_noexception/ class=md-nav__link> <span class=md-ellipsis> JSON_NOEXCEPTION </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_no_io/ class=md-nav__link> <span class=md-ellipsis> JSON_NO_IO </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_skip_library_version_check/ class=md-nav__link> <span class=md-ellipsis> JSON_SKIP_LIBRARY_VERSION_CHECK </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_skip_unsupported_compiler_check/ class=md-nav__link> <span class=md-ellipsis> JSON_SKIP_UNSUPPORTED_COMPILER_CHECK </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_use_global_udls/ class=md-nav__link> <span class=md-ellipsis> JSON_USE_GLOBAL_UDLS </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_use_implicit_conversions/ class=md-nav__link> <span class=md-ellipsis> JSON_USE_IMPLICIT_CONVERSIONS </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_use_legacy_discarded_value_comparison/ class=md-nav__link> <span class=md-ellipsis> JSON_USE_LEGACY_DISCARDED_VALUE_COMPARISON </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_define_derived_type/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_ONLY_SERIALIZE, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_define_type_intrusive/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_TYPE_INTRUSIVE, NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_TYPE_INTRUSIVE_ONLY_SERIALIZE </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_define_type_non_intrusive/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_define_type_with_names/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_TYPE_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_namespace/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_NAMESPACE </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_namespace_begin/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_NAMESPACE_BEGIN, NLOHMANN_JSON_NAMESPACE_END </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_namespace_no_version/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_NAMESPACE_NO_VERSION </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_serialize_enum/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_SERIALIZE_ENUM </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_serialize_enum_strict/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_SERIALIZE_ENUM_STRICT </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_version_major/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_VERSION_MAJOR, NLOHMANN_JSON_VERSION_MINOR, NLOHMANN_JSON_VERSION_PATCH </span> </a> </li> </ul> </nav> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_5> <div class="md-nav__link md-nav__container"> <a href=../../../community/ class="md-nav__link "> <span class=md-ellipsis> Community </span> </a> <label class="md-nav__link " for=__nav_5 id=__nav_5_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_5_label aria-expanded=false> <label class=md-nav__title for=__nav_5> <span class="md-nav__icon md-icon"></span> Community </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../community/code_of_conduct/ class=md-nav__link> <span class=md-ellipsis> Code of Conduct </span> </a> </li> <li class=md-nav__item> <a href=../../../community/contribution_guidelines/ class=md-nav__link> <span class=md-ellipsis> Contribution Guidelines </span> </a> </li> <li class=md-nav__item> <a href=../../../community/quality_assurance/ class=md-nav__link> <span class=md-ellipsis> Quality assurance </span> </a> </li> <li class=md-nav__item> <a href=../../../community/governance/ class=md-nav__link> <span class=md-ellipsis> Governance </span> </a> </li> <li class=md-nav__item> <a href=../../../community/security_policy/ class=md-nav__link> <span class=md-ellipsis> Security Policy </span> </a> </li> </ul> </nav> </li> </ul> </nav> </div> </div> </div> <div class="md-sidebar md-sidebar--secondary" data-md-component=sidebar data-md-type=toc> <div class=md-sidebar__scrollwrap> <div class=md-sidebar__inner> <nav class="md-nav md-nav--secondary" aria-label="Table of contents"> <label class=md-nav__title for=__toc> <span class="md-nav__icon md-icon"></span> Table of contents </label> <ul class=md-nav__list data-md-component=toc data-md-scrollfix> <li class=md-nav__item> <a href=#parameters class=md-nav__link> <span class=md-ellipsis> Parameters </span> </a> </li> <li class=md-nav__item> <a href=#return-value class=md-nav__link> <span class=md-ellipsis> Return value </span> </a> </li> <li class=md-nav__item> <a href=#exception-safety class=md-nav__link> <span class=md-ellipsis> Exception safety </span> </a> </li> <li class=md-nav__item> <a href=#complexity class=md-nav__link> <span class=md-ellipsis> Complexity </span> </a> </li> <li class=md-nav__item> <a href=#examples class=md-nav__link> <span class=md-ellipsis> Examples </span> </a> </li> <li class=md-nav__item> <a href=#version-history class=md-nav__link> <span class=md-ellipsis> Version history </span> </a> </li> </ul> </nav> </div> </div> </div> <div class=md-content data-md-component=content> <article class="md-content__inner md-typeset"> <a href="https://github.com/nlohmann/json/edit/develop/docs/mkdocs/docs/api/basic_json/to_msgpack.md" title="Edit this page" class="md-content__button md-icon" rel="edit"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M10 20H6V4h7v5h5v3.1l2-2V8l-6-6H6c-1.1 0-2 .9-2 2v16c0 1.1.9 2 2 2h4zm10.2-7c.1 0 .3.1.4.2l1.3 1.3c.2.2.2.6 0 .8l-1 1-2.1-2.1 1-1c.1-.1.2-.2.4-.2m0 3.9L14.1 23H12v-2.1l6.1-6.1z"/></svg> </a> <a href="https://github.com/nlohmann/json/raw/develop/docs/mkdocs/docs/api/basic_json/to_msgpack.md" title="View source of this page" class="md-content__button md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M17 18c.56 0 1 .44 1 1s-.44 1-1 1-1-.44-1-1 .44-1 1-1m0-3c-2.73 0-5.06 1.66-6 4 .94 2.34 3.27 4 6 4s5.06-1.66 6-4c-.94-2.34-3.27-4-6-4m0 6.5a2.5 2.5 0 0 1-2.5-2.5 2.5 2.5 0 0 1 2.5-2.5 2.5 2.5 0 0 1 2.5 2.5 2.5 2.5 0 0 1-2.5 2.5M9.27 20H6V4h7v5h5v4.07c.7.08 1.36.25 2 .49V8l-6-6H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h4.5a8.2 8.2 0 0 1-1.23-2"/></svg> </a> <h1 id=nlohmannbasic_jsonto_msgpack><small>nlohmann::basic_json::</small>to_msgpack<a class=headerlink href=#nlohmannbasic_jsonto_msgpack title="Permanent link">&para;</a></h1> <div class=highlight><pre><span></span><code><span class=c1>// (1)</span>
+<!doctype html><html lang=en class=no-js> <head><meta charset=utf-8><meta name=viewport content="width=device-width,initial-scale=1"><meta name=author content="Niels Lohmann"><link href="https://json.nlohmann.me/api/basic_json/to_msgpack/" rel="canonical"><link href=../to_cbor/ rel=prev><link href=../to_string/ rel=next><link rel=icon href=../../../assets/images/favicon.png><meta name=generator content="mkdocs-1.6.1, mkdocs-material-9.7.6"><title>to_msgpack - JSON for Modern C++</title><link rel=stylesheet href=../../../assets/stylesheets/main.484c7ddc.min.css><link rel=stylesheet href=../../../assets/stylesheets/palette.ab4e12ef.min.css><link rel="stylesheet" href="../../../assets/external/fonts.googleapis.com/css.61a430c9.css"><style>:root{--md-text-font:"Roboto";--md-code-font:"JetBrains Mono"}</style><link rel=stylesheet href=../../../css/custom.css><script>__md_scope=new URL("../../..",location),__md_hash=e=>[...e].reduce(((e,_)=>(e<<5)-e+_.charCodeAt(0)),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script></head> <body dir=ltr data-md-color-scheme=default data-md-color-primary=indigo data-md-color-accent=indigo> <input class=md-toggle data-md-toggle=drawer type=checkbox id=__drawer autocomplete=off> <input class=md-toggle data-md-toggle=search type=checkbox id=__search autocomplete=off> <label class=md-overlay for=__drawer></label> <div data-md-component=skip> <a href=#nlohmannbasic_jsonto_msgpack class=md-skip> Skip to content </a> </div> <div data-md-component=announce> </div> <header class=md-header data-md-component=header> <nav class="md-header__inner md-grid" aria-label=Header> <a href=../../.. title="JSON for Modern C++" class="md-header__button md-logo" aria-label="JSON for Modern C++" data-md-component=logo> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54"/></svg> </a> <label class="md-header__button md-icon" for=__drawer> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M3 6h18v2H3zm0 5h18v2H3zm0 5h18v2H3z"/></svg> </label> <div class=md-header__title data-md-component=header-title> <div class=md-header__ellipsis> <div class=md-header__topic> <span class=md-ellipsis> JSON for Modern C++ </span> </div> <div class=md-header__topic data-md-component=header-topic> <span class=md-ellipsis> to_msgpack </span> </div> </div> </div> <form class=md-header__option data-md-component=palette> <input class=md-option data-md-color-media="(prefers-color-scheme: light)" data-md-color-scheme=default data-md-color-primary=indigo data-md-color-accent=indigo aria-label="Switch to dark mode" type=radio name=__palette id=__palette_0> <label class="md-header__button md-icon" title="Switch to dark mode" for=__palette_1 hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a4 4 0 0 0-4 4 4 4 0 0 0 4 4 4 4 0 0 0 4-4 4 4 0 0 0-4-4m0 10a6 6 0 0 1-6-6 6 6 0 0 1 6-6 6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12z"/></svg> </label> <input class=md-option data-md-color-media="(prefers-color-scheme: dark)" data-md-color-scheme=slate data-md-color-primary=indigo data-md-color-accent=indigo aria-label="Switch to light mode" type=radio name=__palette id=__palette_1> <label class="md-header__button md-icon" title="Switch to light mode" for=__palette_0 hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 18c-.89 0-1.74-.2-2.5-.55C11.56 16.5 13 14.42 13 12s-1.44-4.5-3.5-5.45C10.26 6.2 11.11 6 12 6a6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12z"/></svg> </label> </form> <script>var palette=__md_get("__palette");if(palette&&palette.color){if("(prefers-color-scheme)"===palette.color.media){var media=matchMedia("(prefers-color-scheme: light)"),input=document.querySelector(media.matches?"[data-md-color-media='(prefers-color-scheme: light)']":"[data-md-color-media='(prefers-color-scheme: dark)']");palette.color.media=input.getAttribute("data-md-color-media"),palette.color.scheme=input.getAttribute("data-md-color-scheme"),palette.color.primary=input.getAttribute("data-md-color-primary"),palette.color.accent=input.getAttribute("data-md-color-accent")}for(var[key,value]of Object.entries(palette.color))document.body.setAttribute("data-md-color-"+key,value)}</script> <label class="md-header__button md-icon" for=__search> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg> </label> <div class=md-search data-md-component=search role=dialog> <label class=md-search__overlay for=__search></label> <div class=md-search__inner role=search> <form class=md-search__form name=search> <input type=text class=md-search__input name=query aria-label=Search placeholder=Search autocapitalize=off autocorrect=off autocomplete=off spellcheck=false data-md-component=search-query required> <label class="md-search__icon md-icon" for=__search> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11z"/></svg> </label> <nav class=md-search__options aria-label=Search> <button type=reset class="md-search__icon md-icon" title=Clear aria-label=Clear tabindex=-1> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z"/></svg> </button> </nav> </form> <div class=md-search__output> <div class=md-search__scrollwrap tabindex=0 data-md-scrollfix> <div class=md-search-result data-md-component=search-result> <div class=md-search-result__meta> Initializing search </div> <ol class=md-search-result__list role=presentation></ol> </div> </div> </div> </div> </div> <div class=md-header__source> <a href="https://github.com/nlohmann/json" title="Go to repository" class="md-source" data-md-component="source"> <div class="md-source__icon md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </div> <div class=md-source__repository> nlohmann/json </div> </a> </div> </nav> </header> <div class=md-container data-md-component=container> <nav class=md-tabs aria-label=Tabs data-md-component=tabs> <div class=md-grid> <ul class=md-tabs__list> <li class=md-tabs__item> <a href=../../.. class=md-tabs__link> Home </a> </li> <li class=md-tabs__item> <a href=../../../features/arbitrary_types/ class=md-tabs__link> Features </a> </li> <li class=md-tabs__item> <a href=../../../integration/ class=md-tabs__link> Integration </a> </li> <li class="md-tabs__item md-tabs__item--active"> <a href=../ class=md-tabs__link> API Documentation </a> </li> <li class=md-tabs__item> <a href=../../../community/ class=md-tabs__link> Community </a> </li> </ul> </div> </nav> <main class=md-main data-md-component=main> <div class="md-main__inner md-grid"> <div class="md-sidebar md-sidebar--primary" data-md-component=sidebar data-md-type=navigation> <div class=md-sidebar__scrollwrap> <div class=md-sidebar__inner> <nav class="md-nav md-nav--primary md-nav--lifted" aria-label=Navigation data-md-level=0> <label class=md-nav__title for=__drawer> <a href=../../.. title="JSON for Modern C++" class="md-nav__button md-logo" aria-label="JSON for Modern C++" data-md-component=logo> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54"/></svg> </a> JSON for Modern C++ </label> <div class=md-nav__source> <a href="https://github.com/nlohmann/json" title="Go to repository" class="md-source" data-md-component="source"> <div class="md-source__icon md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </div> <div class=md-source__repository> nlohmann/json </div> </a> </div> <ul class=md-nav__list data-md-scrollfix> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_1> <div class="md-nav__link md-nav__container"> <a href=../../.. class="md-nav__link "> <span class=md-ellipsis> Home </span> </a> <label class="md-nav__link " for=__nav_1 id=__nav_1_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_1_label aria-expanded=false> <label class=md-nav__title for=__nav_1> <span class="md-nav__icon md-icon"></span> Home </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../home/license/ class=md-nav__link> <span class=md-ellipsis> License </span> </a> </li> <li class=md-nav__item> <a href=../../../home/faq/ class=md-nav__link> <span class=md-ellipsis> FAQ </span> </a> </li> <li class=md-nav__item> <a href=../../../home/exceptions/ class=md-nav__link> <span class=md-ellipsis> Exceptions </span> </a> </li> <li class=md-nav__item> <a href=../../../home/releases/ class=md-nav__link> <span class=md-ellipsis> Releases </span> </a> </li> <li class=md-nav__item> <a href=../../../home/design_goals/ class=md-nav__link> <span class=md-ellipsis> Design goals </span> </a> </li> <li class=md-nav__item> <a href=../../../home/architecture/ class=md-nav__link> <span class=md-ellipsis> Architecture </span> </a> </li> <li class=md-nav__item> <a href=../../../home/customers/ class=md-nav__link> <span class=md-ellipsis> Customers </span> </a> </li> <li class=md-nav__item> <a href=../../../home/sponsors/ class=md-nav__link> <span class=md-ellipsis> Sponsors </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2> <label class=md-nav__link for=__nav_2 id=__nav_2_label tabindex=0> <span class=md-ellipsis> Features </span> <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_2_label aria-expanded=false> <label class=md-nav__title for=__nav_2> <span class="md-nav__icon md-icon"></span> Features </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/arbitrary_types/ class=md-nav__link> <span class=md-ellipsis> Arbitrary Type Conversions </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_2> <div class="md-nav__link md-nav__container"> <a href=../../../features/binary_formats/ class="md-nav__link "> <span class=md-ellipsis> Binary Formats </span> </a> <label class="md-nav__link " for=__nav_2_2 id=__nav_2_2_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_2_label aria-expanded=false> <label class=md-nav__title for=__nav_2_2> <span class="md-nav__icon md-icon"></span> Binary Formats </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/binary_formats/bjdata/ class=md-nav__link> <span class=md-ellipsis> BJData </span> </a> </li> <li class=md-nav__item> <a href=../../../features/binary_formats/bson/ class=md-nav__link> <span class=md-ellipsis> BSON </span> </a> </li> <li class=md-nav__item> <a href=../../../features/binary_formats/cbor/ class=md-nav__link> <span class=md-ellipsis> CBOR </span> </a> </li> <li class=md-nav__item> <a href=../../../features/binary_formats/messagepack/ class=md-nav__link> <span class=md-ellipsis> MessagePack </span> </a> </li> <li class=md-nav__item> <a href=../../../features/binary_formats/ubjson/ class=md-nav__link> <span class=md-ellipsis> UBJSON </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../../features/binary_values/ class=md-nav__link> <span class=md-ellipsis> Binary Values </span> </a> </li> <li class=md-nav__item> <a href=../../../features/comments/ class=md-nav__link> <span class=md-ellipsis> Comments </span> </a> </li> <li class=md-nav__item> <a href=../../../features/trailing_commas/ class=md-nav__link> <span class=md-ellipsis> Trailing Commas </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_6> <div class="md-nav__link md-nav__container"> <a href=../../../features/element_access/ class="md-nav__link "> <span class=md-ellipsis> Element Access </span> </a> <label class="md-nav__link " for=__nav_2_6 id=__nav_2_6_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_6_label aria-expanded=false> <label class=md-nav__title for=__nav_2_6> <span class="md-nav__icon md-icon"></span> Element Access </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/element_access/unchecked_access/ class=md-nav__link> <span class=md-ellipsis> Unchecked access: operator[] </span> </a> </li> <li class=md-nav__item> <a href=../../../features/element_access/checked_access/ class=md-nav__link> <span class=md-ellipsis> Checked access: at </span> </a> </li> <li class=md-nav__item> <a href=../../../features/element_access/default_value/ class=md-nav__link> <span class=md-ellipsis> Access with default value: value </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../../features/iterators/ class=md-nav__link> <span class=md-ellipsis> Iterators </span> </a> </li> <li class=md-nav__item> <a href=../../../features/json_pointer/ class=md-nav__link> <span class=md-ellipsis> JSON Pointer </span> </a> </li> <li class=md-nav__item> <a href=../../../features/json_patch/ class=md-nav__link> <span class=md-ellipsis> JSON Patch and Diff </span> </a> </li> <li class=md-nav__item> <a href=../../../features/merge_patch/ class=md-nav__link> <span class=md-ellipsis> JSON Merge Patch </span> </a> </li> <li class=md-nav__item> <a href=../../../features/modules/ class=md-nav__link> <span class=md-ellipsis> Modules </span> </a> </li> <li class=md-nav__item> <a href=../../../features/namespace/ class=md-nav__link> <span class=md-ellipsis> nlohmann Namespace </span> </a> </li> <li class=md-nav__item> <a href=../../../features/object_order/ class=md-nav__link> <span class=md-ellipsis> Object Order </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_14> <div class="md-nav__link md-nav__container"> <a href=../../../features/parsing/ class="md-nav__link "> <span class=md-ellipsis> Parsing </span> </a> <label class="md-nav__link " for=__nav_2_14 id=__nav_2_14_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_14_label aria-expanded=false> <label class=md-nav__title for=__nav_2_14> <span class="md-nav__icon md-icon"></span> Parsing </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/parsing/json_lines/ class=md-nav__link> <span class=md-ellipsis> JSON Lines </span> </a> </li> <li class=md-nav__item> <a href=../../../features/parsing/parse_exceptions/ class=md-nav__link> <span class=md-ellipsis> Parsing and Exceptions </span> </a> </li> <li class=md-nav__item> <a href=../../../features/parsing/parser_callbacks/ class=md-nav__link> <span class=md-ellipsis> Parser Callbacks </span> </a> </li> <li class=md-nav__item> <a href=../../../features/parsing/sax_interface/ class=md-nav__link> <span class=md-ellipsis> SAX Interface </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../../features/assertions/ class=md-nav__link> <span class=md-ellipsis> Runtime Assertions </span> </a> </li> <li class=md-nav__item> <a href=../../../features/enum_conversion/ class=md-nav__link> <span class=md-ellipsis> Specializing enum conversion </span> </a> </li> <li class=md-nav__item> <a href=../../../features/macros/ class=md-nav__link> <span class=md-ellipsis> Supported Macros </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_18> <div class="md-nav__link md-nav__container"> <a href=../../../features/types/ class="md-nav__link "> <span class=md-ellipsis> Types </span> </a> <label class="md-nav__link " for=__nav_2_18 id=__nav_2_18_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_18_label aria-expanded=false> <label class=md-nav__title for=__nav_2_18> <span class="md-nav__icon md-icon"></span> Types </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/types/number_handling/ class=md-nav__link> <span class=md-ellipsis> Number Handling </span> </a> </li> </ul> </nav> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_3> <div class="md-nav__link md-nav__container"> <a href=../../../integration/ class="md-nav__link "> <span class=md-ellipsis> Integration </span> </a> <label class="md-nav__link " for=__nav_3 id=__nav_3_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_3_label aria-expanded=false> <label class=md-nav__title for=__nav_3> <span class="md-nav__icon md-icon"></span> Integration </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../integration/migration_guide/ class=md-nav__link> <span class=md-ellipsis> Migration Guide </span> </a> </li> <li class=md-nav__item> <a href=../../../integration/cmake/ class=md-nav__link> <span class=md-ellipsis> CMake </span> </a> </li> <li class=md-nav__item> <a href=../../../integration/package_managers/ class=md-nav__link> <span class=md-ellipsis> Package Managers </span> </a> </li> <li class=md-nav__item> <a href=../../../integration/pkg-config/ class=md-nav__link> <span class=md-ellipsis> Pkg-config </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--active md-nav__item--section md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4 checked> <label class=md-nav__link for=__nav_4 id=__nav_4_label tabindex> <span class=md-ellipsis> API Documentation </span> <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_4_label aria-expanded=true> <label class=md-nav__title for=__nav_4> <span class="md-nav__icon md-icon"></span> API Documentation </label> <ul class=md-nav__list data-md-scrollfix> <li class="md-nav__item md-nav__item--active md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_1 checked> <div class="md-nav__link md-nav__container"> <a href=../ class="md-nav__link "> <span class=md-ellipsis> basic_json </span> </a> <label class="md-nav__link " for=__nav_4_1 id=__nav_4_1_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_1_label aria-expanded=true> <label class=md-nav__title for=__nav_4_1> <span class="md-nav__icon md-icon"></span> basic_json </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../basic_json/ class=md-nav__link> <span class=md-ellipsis> (Constructor) </span> </a> </li> <li class=md-nav__item> <a href=../~basic_json/ class=md-nav__link> <span class=md-ellipsis> (Destructor) </span> </a> </li> <li class=md-nav__item> <a href=../accept/ class=md-nav__link> <span class=md-ellipsis> accept </span> </a> </li> <li class=md-nav__item> <a href=../array/ class=md-nav__link> <span class=md-ellipsis> array </span> </a> </li> <li class=md-nav__item> <a href=../array_t/ class=md-nav__link> <span class=md-ellipsis> array_t </span> </a> </li> <li class=md-nav__item> <a href=../at/ class=md-nav__link> <span class=md-ellipsis> at </span> </a> </li> <li class=md-nav__item> <a href=../back/ class=md-nav__link> <span class=md-ellipsis> back </span> </a> </li> <li class=md-nav__item> <a href=../begin/ class=md-nav__link> <span class=md-ellipsis> begin </span> </a> </li> <li class=md-nav__item> <a href=../binary/ class=md-nav__link> <span class=md-ellipsis> binary </span> </a> </li> <li class=md-nav__item> <a href=../binary_t/ class=md-nav__link> <span class=md-ellipsis> binary_t </span> </a> </li> <li class=md-nav__item> <a href=../boolean_t/ class=md-nav__link> <span class=md-ellipsis> boolean_t </span> </a> </li> <li class=md-nav__item> <a href=../cbegin/ class=md-nav__link> <span class=md-ellipsis> cbegin </span> </a> </li> <li class=md-nav__item> <a href=../cbor_tag_handler_t/ class=md-nav__link> <span class=md-ellipsis> cbor_tag_handler_t </span> </a> </li> <li class=md-nav__item> <a href=../cend/ class=md-nav__link> <span class=md-ellipsis> cend </span> </a> </li> <li class=md-nav__item> <a href=../clear/ class=md-nav__link> <span class=md-ellipsis> clear </span> </a> </li> <li class=md-nav__item> <a href=../contains/ class=md-nav__link> <span class=md-ellipsis> contains </span> </a> </li> <li class=md-nav__item> <a href=../count/ class=md-nav__link> <span class=md-ellipsis> count </span> </a> </li> <li class=md-nav__item> <a href=../crbegin/ class=md-nav__link> <span class=md-ellipsis> crbegin </span> </a> </li> <li class=md-nav__item> <a href=../crend/ class=md-nav__link> <span class=md-ellipsis> crend </span> </a> </li> <li class=md-nav__item> <a href=../default_object_comparator_t/ class=md-nav__link> <span class=md-ellipsis> default_object_comparator_t </span> </a> </li> <li class=md-nav__item> <a href=../diff/ class=md-nav__link> <span class=md-ellipsis> diff </span> </a> </li> <li class=md-nav__item> <a href=../dump/ class=md-nav__link> <span class=md-ellipsis> dump </span> </a> </li> <li class=md-nav__item> <a href=../emplace/ class=md-nav__link> <span class=md-ellipsis> emplace </span> </a> </li> <li class=md-nav__item> <a href=../emplace_back/ class=md-nav__link> <span class=md-ellipsis> emplace_back </span> </a> </li> <li class=md-nav__item> <a href=../empty/ class=md-nav__link> <span class=md-ellipsis> empty </span> </a> </li> <li class=md-nav__item> <a href=../end/ class=md-nav__link> <span class=md-ellipsis> end </span> </a> </li> <li class=md-nav__item> <a href=../end_pos/ class=md-nav__link> <span class=md-ellipsis> end_pos </span> </a> </li> <li class=md-nav__item> <a href=../erase/ class=md-nav__link> <span class=md-ellipsis> erase </span> </a> </li> <li class=md-nav__item> <a href=../error_handler_t/ class=md-nav__link> <span class=md-ellipsis> error_handler_t </span> </a> </li> <li class=md-nav__item> <a href=../exception/ class=md-nav__link> <span class=md-ellipsis> exception </span> </a> </li> <li class=md-nav__item> <a href=../find/ class=md-nav__link> <span class=md-ellipsis> find </span> </a> </li> <li class=md-nav__item> <a href=../flatten/ class=md-nav__link> <span class=md-ellipsis> flatten </span> </a> </li> <li class=md-nav__item> <a href=../from_bjdata/ class=md-nav__link> <span class=md-ellipsis> from_bjdata </span> </a> </li> <li class=md-nav__item> <a href=../from_bson/ class=md-nav__link> <span class=md-ellipsis> from_bson </span> </a> </li> <li class=md-nav__item> <a href=../from_cbor/ class=md-nav__link> <span class=md-ellipsis> from_cbor </span> </a> </li> <li class=md-nav__item> <a href=../from_msgpack/ class=md-nav__link> <span class=md-ellipsis> from_msgpack </span> </a> </li> <li class=md-nav__item> <a href=../from_ubjson/ class=md-nav__link> <span class=md-ellipsis> from_ubjson </span> </a> </li> <li class=md-nav__item> <a href=../front/ class=md-nav__link> <span class=md-ellipsis> front </span> </a> </li> <li class=md-nav__item> <a href=../get/ class=md-nav__link> <span class=md-ellipsis> get </span> </a> </li> <li class=md-nav__item> <a href=../get_allocator/ class=md-nav__link> <span class=md-ellipsis> get_allocator </span> </a> </li> <li class=md-nav__item> <a href=../get_binary/ class=md-nav__link> <span class=md-ellipsis> get_binary </span> </a> </li> <li class=md-nav__item> <a href=../get_ptr/ class=md-nav__link> <span class=md-ellipsis> get_ptr </span> </a> </li> <li class=md-nav__item> <a href=../get_ref/ class=md-nav__link> <span class=md-ellipsis> get_ref </span> </a> </li> <li class=md-nav__item> <a href=../get_to/ class=md-nav__link> <span class=md-ellipsis> get_to </span> </a> </li> <li class=md-nav__item> <a href=../std_hash/ class=md-nav__link> <span class=md-ellipsis> std::hash&lt;basic_json&gt; </span> </a> </li> <li class=md-nav__item> <a href=../input_format_t/ class=md-nav__link> <span class=md-ellipsis> input_format_t </span> </a> </li> <li class=md-nav__item> <a href=../insert/ class=md-nav__link> <span class=md-ellipsis> insert </span> </a> </li> <li class=md-nav__item> <a href=../invalid_iterator/ class=md-nav__link> <span class=md-ellipsis> invalid_iterator </span> </a> </li> <li class=md-nav__item> <a href=../is_array/ class=md-nav__link> <span class=md-ellipsis> is_array </span> </a> </li> <li class=md-nav__item> <a href=../is_binary/ class=md-nav__link> <span class=md-ellipsis> is_binary </span> </a> </li> <li class=md-nav__item> <a href=../is_boolean/ class=md-nav__link> <span class=md-ellipsis> is_boolean </span> </a> </li> <li class=md-nav__item> <a href=../is_discarded/ class=md-nav__link> <span class=md-ellipsis> is_discarded </span> </a> </li> <li class=md-nav__item> <a href=../is_null/ class=md-nav__link> <span class=md-ellipsis> is_null </span> </a> </li> <li class=md-nav__item> <a href=../is_number/ class=md-nav__link> <span class=md-ellipsis> is_number </span> </a> </li> <li class=md-nav__item> <a href=../is_number_float/ class=md-nav__link> <span class=md-ellipsis> is_number_float </span> </a> </li> <li class=md-nav__item> <a href=../is_number_integer/ class=md-nav__link> <span class=md-ellipsis> is_number_integer </span> </a> </li> <li class=md-nav__item> <a href=../is_number_unsigned/ class=md-nav__link> <span class=md-ellipsis> is_number_unsigned </span> </a> </li> <li class=md-nav__item> <a href=../is_object/ class=md-nav__link> <span class=md-ellipsis> is_object </span> </a> </li> <li class=md-nav__item> <a href=../is_primitive/ class=md-nav__link> <span class=md-ellipsis> is_primitive </span> </a> </li> <li class=md-nav__item> <a href=../is_string/ class=md-nav__link> <span class=md-ellipsis> is_string </span> </a> </li> <li class=md-nav__item> <a href=../is_structured/ class=md-nav__link> <span class=md-ellipsis> is_structured </span> </a> </li> <li class=md-nav__item> <a href=../items/ class=md-nav__link> <span class=md-ellipsis> items </span> </a> </li> <li class=md-nav__item> <a href=../json_base_class_t/ class=md-nav__link> <span class=md-ellipsis> json_base_class_t </span> </a> </li> <li class=md-nav__item> <a href=../json_serializer/ class=md-nav__link> <span class=md-ellipsis> json_serializer </span> </a> </li> <li class=md-nav__item> <a href=../max_size/ class=md-nav__link> <span class=md-ellipsis> max_size </span> </a> </li> <li class=md-nav__item> <a href=../meta/ class=md-nav__link> <span class=md-ellipsis> meta </span> </a> </li> <li class=md-nav__item> <a href=../merge_patch/ class=md-nav__link> <span class=md-ellipsis> merge_patch </span> </a> </li> <li class=md-nav__item> <a href=../number_float_t/ class=md-nav__link> <span class=md-ellipsis> number_float_t </span> </a> </li> <li class=md-nav__item> <a href=../number_integer_t/ class=md-nav__link> <span class=md-ellipsis> number_integer_t </span> </a> </li> <li class=md-nav__item> <a href=../number_unsigned_t/ class=md-nav__link> <span class=md-ellipsis> number_unsigned_t </span> </a> </li> <li class=md-nav__item> <a href=../object/ class=md-nav__link> <span class=md-ellipsis> object </span> </a> </li> <li class=md-nav__item> <a href=../object_comparator_t/ class=md-nav__link> <span class=md-ellipsis> object_comparator_t </span> </a> </li> <li class=md-nav__item> <a href=../object_t/ class=md-nav__link> <span class=md-ellipsis> object_t </span> </a> </li> <li class=md-nav__item> <a href=../operator_ValueType/ class=md-nav__link> <span class=md-ellipsis> operator ValueType </span> </a> </li> <li class=md-nav__item> <a href=../operator_value_t/ class=md-nav__link> <span class=md-ellipsis> operator value_t </span> </a> </li> <li class=md-nav__item> <a href=../operator%5B%5D/ class=md-nav__link> <span class=md-ellipsis> operator[] </span> </a> </li> <li class=md-nav__item> <a href=../operator%3D/ class=md-nav__link> <span class=md-ellipsis> operator= </span> </a> </li> <li class=md-nav__item> <a href=../operator%2B%3D/ class=md-nav__link> <span class=md-ellipsis> operator+= </span> </a> </li> <li class=md-nav__item> <a href=../operator_eq/ class=md-nav__link> <span class=md-ellipsis> operator== </span> </a> </li> <li class=md-nav__item> <a href=../operator_ne/ class=md-nav__link> <span class=md-ellipsis> operator!= </span> </a> </li> <li class=md-nav__item> <a href=../operator_lt/ class=md-nav__link> <span class=md-ellipsis> operator< </span> </a> </li> <li class=md-nav__item> <a href=../operator_gt/ class=md-nav__link> <span class=md-ellipsis> operator> </span> </a> </li> <li class=md-nav__item> <a href=../operator_le/ class=md-nav__link> <span class=md-ellipsis> operator<= </span> </a> </li> <li class=md-nav__item> <a href=../operator_ge/ class=md-nav__link> <span class=md-ellipsis> operator>= </span> </a> </li> <li class=md-nav__item> <a href=../operator_spaceship/ class=md-nav__link> <span class=md-ellipsis> operator<=> </span> </a> </li> <li class=md-nav__item> <a href=../out_of_range/ class=md-nav__link> <span class=md-ellipsis> out_of_range </span> </a> </li> <li class=md-nav__item> <a href=../other_error/ class=md-nav__link> <span class=md-ellipsis> other_error </span> </a> </li> <li class=md-nav__item> <a href=../parse/ class=md-nav__link> <span class=md-ellipsis> parse </span> </a> </li> <li class=md-nav__item> <a href=../parse_error/ class=md-nav__link> <span class=md-ellipsis> parse_error </span> </a> </li> <li class=md-nav__item> <a href=../parse_event_t/ class=md-nav__link> <span class=md-ellipsis> parse_event_t </span> </a> </li> <li class=md-nav__item> <a href=../parser_callback_t/ class=md-nav__link> <span class=md-ellipsis> parser_callback_t </span> </a> </li> <li class=md-nav__item> <a href=../patch/ class=md-nav__link> <span class=md-ellipsis> patch </span> </a> </li> <li class=md-nav__item> <a href=../patch_inplace/ class=md-nav__link> <span class=md-ellipsis> patch_inplace </span> </a> </li> <li class=md-nav__item> <a href=../push_back/ class=md-nav__link> <span class=md-ellipsis> push_back </span> </a> </li> <li class=md-nav__item> <a href=../rbegin/ class=md-nav__link> <span class=md-ellipsis> rbegin </span> </a> </li> <li class=md-nav__item> <a href=../rend/ class=md-nav__link> <span class=md-ellipsis> rend </span> </a> </li> <li class=md-nav__item> <a href=../sax_parse/ class=md-nav__link> <span class=md-ellipsis> sax_parse </span> </a> </li> <li class=md-nav__item> <a href=../size/ class=md-nav__link> <span class=md-ellipsis> size </span> </a> </li> <li class=md-nav__item> <a href=../start_pos/ class=md-nav__link> <span class=md-ellipsis> start_pos </span> </a> </li> <li class=md-nav__item> <a href=../string_t/ class=md-nav__link> <span class=md-ellipsis> string_t </span> </a> </li> <li class=md-nav__item> <a href=../swap/ class=md-nav__link> <span class=md-ellipsis> swap </span> </a> </li> <li class=md-nav__item> <a href=../std_swap/ class=md-nav__link> <span class=md-ellipsis> std::swap&lt;basic_json&gt; </span> </a> </li> <li class=md-nav__item> <a href=../to_bjdata/ class=md-nav__link> <span class=md-ellipsis> to_bjdata </span> </a> </li> <li class=md-nav__item> <a href=../to_bson/ class=md-nav__link> <span class=md-ellipsis> to_bson </span> </a> </li> <li class=md-nav__item> <a href=../to_cbor/ class=md-nav__link> <span class=md-ellipsis> to_cbor </span> </a> </li> <li class="md-nav__item md-nav__item--active"> <input class="md-nav__toggle md-toggle" type=checkbox id=__toc> <label class="md-nav__link md-nav__link--active" for=__toc> <span class=md-ellipsis> to_msgpack </span> <span class="md-nav__icon md-icon"></span> </label> <a href=./ class="md-nav__link md-nav__link--active"> <span class=md-ellipsis> to_msgpack </span> </a> <nav class="md-nav md-nav--secondary" aria-label="Table of contents"> <label class=md-nav__title for=__toc> <span class="md-nav__icon md-icon"></span> Table of contents </label> <ul class=md-nav__list data-md-component=toc data-md-scrollfix> <li class=md-nav__item> <a href=#parameters class=md-nav__link> <span class=md-ellipsis> Parameters </span> </a> </li> <li class=md-nav__item> <a href=#return-value class=md-nav__link> <span class=md-ellipsis> Return value </span> </a> </li> <li class=md-nav__item> <a href=#exception-safety class=md-nav__link> <span class=md-ellipsis> Exception safety </span> </a> </li> <li class=md-nav__item> <a href=#complexity class=md-nav__link> <span class=md-ellipsis> Complexity </span> </a> </li> <li class=md-nav__item> <a href=#examples class=md-nav__link> <span class=md-ellipsis> Examples </span> </a> </li> <li class=md-nav__item> <a href=#see-also class=md-nav__link> <span class=md-ellipsis> See also </span> </a> </li> <li class=md-nav__item> <a href=#version-history class=md-nav__link> <span class=md-ellipsis> Version history </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../to_string/ class=md-nav__link> <span class=md-ellipsis> to_string </span> </a> </li> <li class=md-nav__item> <a href=../to_ubjson/ class=md-nav__link> <span class=md-ellipsis> to_ubjson </span> </a> </li> <li class=md-nav__item> <a href=../type/ class=md-nav__link> <span class=md-ellipsis> type </span> </a> </li> <li class=md-nav__item> <a href=../type_error/ class=md-nav__link> <span class=md-ellipsis> type_error </span> </a> </li> <li class=md-nav__item> <a href=../type_name/ class=md-nav__link> <span class=md-ellipsis> type_name </span> </a> </li> <li class=md-nav__item> <a href=../unflatten/ class=md-nav__link> <span class=md-ellipsis> unflatten </span> </a> </li> <li class=md-nav__item> <a href=../update/ class=md-nav__link> <span class=md-ellipsis> update </span> </a> </li> <li class=md-nav__item> <a href=../value/ class=md-nav__link> <span class=md-ellipsis> value </span> </a> </li> <li class=md-nav__item> <a href=../value_t/ class=md-nav__link> <span class=md-ellipsis> value_t </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_2> <div class="md-nav__link md-nav__container"> <a href=../../byte_container_with_subtype/ class="md-nav__link "> <span class=md-ellipsis> byte_container_with_subtype </span> </a> <label class="md-nav__link " for=__nav_4_2 id=__nav_4_2_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_2_label aria-expanded=false> <label class=md-nav__title for=__nav_4_2> <span class="md-nav__icon md-icon"></span> byte_container_with_subtype </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../byte_container_with_subtype/byte_container_with_subtype/ class=md-nav__link> <span class=md-ellipsis> (constructor) </span> </a> </li> <li class=md-nav__item> <a href=../../byte_container_with_subtype/clear_subtype/ class=md-nav__link> <span class=md-ellipsis> clear_subtype </span> </a> </li> <li class=md-nav__item> <a href=../../byte_container_with_subtype/has_subtype/ class=md-nav__link> <span class=md-ellipsis> has_subtype </span> </a> </li> <li class=md-nav__item> <a href=../../byte_container_with_subtype/set_subtype/ class=md-nav__link> <span class=md-ellipsis> set_subtype </span> </a> </li> <li class=md-nav__item> <a href=../../byte_container_with_subtype/subtype/ class=md-nav__link> <span class=md-ellipsis> subtype </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_3> <div class="md-nav__link md-nav__container"> <a href=../../adl_serializer/ class="md-nav__link "> <span class=md-ellipsis> adl_serializer </span> </a> <label class="md-nav__link " for=__nav_4_3 id=__nav_4_3_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_3_label aria-expanded=false> <label class=md-nav__title for=__nav_4_3> <span class="md-nav__icon md-icon"></span> adl_serializer </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../adl_serializer/from_json/ class=md-nav__link> <span class=md-ellipsis> from_json </span> </a> </li> <li class=md-nav__item> <a href=../../adl_serializer/to_json/ class=md-nav__link> <span class=md-ellipsis> to_json </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../json/ class=md-nav__link> <span class=md-ellipsis> json </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_5> <div class="md-nav__link md-nav__container"> <a href=../../json_pointer/ class="md-nav__link "> <span class=md-ellipsis> json_pointer </span> </a> <label class="md-nav__link " for=__nav_4_5 id=__nav_4_5_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_5_label aria-expanded=false> <label class=md-nav__title for=__nav_4_5> <span class="md-nav__icon md-icon"></span> json_pointer </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../json_pointer/json_pointer/ class=md-nav__link> <span class=md-ellipsis> (Constructor) </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/back/ class=md-nav__link> <span class=md-ellipsis> back </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/empty/ class=md-nav__link> <span class=md-ellipsis> empty </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/front/ class=md-nav__link> <span class=md-ellipsis> front </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_string_t/ class=md-nav__link> <span class=md-ellipsis> operator string_t </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_eq/ class=md-nav__link> <span class=md-ellipsis> operator== </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_ne/ class=md-nav__link> <span class=md-ellipsis> operator!= </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_slash/ class=md-nav__link> <span class=md-ellipsis> operator/ </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_slasheq/ class=md-nav__link> <span class=md-ellipsis> operator/= </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/parent_pointer/ class=md-nav__link> <span class=md-ellipsis> parent_pointer </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/pop_back/ class=md-nav__link> <span class=md-ellipsis> pop_back </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/pop_front/ class=md-nav__link> <span class=md-ellipsis> pop_front </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/push_back/ class=md-nav__link> <span class=md-ellipsis> push_back </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/push_front/ class=md-nav__link> <span class=md-ellipsis> push_front </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/string_t/ class=md-nav__link> <span class=md-ellipsis> string_t </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/to_string/ class=md-nav__link> <span class=md-ellipsis> to_string </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_6> <div class="md-nav__link md-nav__container"> <a href=../../json_sax/ class="md-nav__link "> <span class=md-ellipsis> json_sax </span> </a> <label class="md-nav__link " for=__nav_4_6 id=__nav_4_6_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_6_label aria-expanded=false> <label class=md-nav__title for=__nav_4_6> <span class="md-nav__icon md-icon"></span> json_sax </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../json_sax/binary/ class=md-nav__link> <span class=md-ellipsis> binary </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/boolean/ class=md-nav__link> <span class=md-ellipsis> boolean </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/end_array/ class=md-nav__link> <span class=md-ellipsis> end_array </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/end_object/ class=md-nav__link> <span class=md-ellipsis> end_object </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/key/ class=md-nav__link> <span class=md-ellipsis> key </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/null/ class=md-nav__link> <span class=md-ellipsis> null </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/number_float/ class=md-nav__link> <span class=md-ellipsis> number_float </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/number_integer/ class=md-nav__link> <span class=md-ellipsis> number_integer </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/number_unsigned/ class=md-nav__link> <span class=md-ellipsis> number_unsigned </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/parse_error/ class=md-nav__link> <span class=md-ellipsis> parse_error </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/start_array/ class=md-nav__link> <span class=md-ellipsis> start_array </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/start_object/ class=md-nav__link> <span class=md-ellipsis> start_object </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/string/ class=md-nav__link> <span class=md-ellipsis> string </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../operator_ltlt/ class=md-nav__link> <span class=md-ellipsis> operator<<(basic_json), operator<<(json_pointer) </span> </a> </li> <li class=md-nav__item> <a href=../../operator_gtgt/ class=md-nav__link> <span class=md-ellipsis> operator>>(basic_json) </span> </a> </li> <li class=md-nav__item> <a href=../../operator_literal_json/ class=md-nav__link> <span class=md-ellipsis> operator""_json </span> </a> </li> <li class=md-nav__item> <a href=../../operator_literal_json_pointer/ class=md-nav__link> <span class=md-ellipsis> operator""_json_pointer </span> </a> </li> <li class=md-nav__item> <a href=../../ordered_json/ class=md-nav__link> <span class=md-ellipsis> ordered_json </span> </a> </li> <li class=md-nav__item> <a href=../../ordered_map/ class=md-nav__link> <span class=md-ellipsis> ordered_map </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_13> <div class="md-nav__link md-nav__container"> <a href=../../macros/ class="md-nav__link "> <span class=md-ellipsis> macros </span> </a> <label class="md-nav__link " for=__nav_4_13 id=__nav_4_13_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_13_label aria-expanded=false> <label class=md-nav__title for=__nav_4_13> <span class="md-nav__icon md-icon"></span> macros </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../macros/json_assert/ class=md-nav__link> <span class=md-ellipsis> JSON_ASSERT </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_brace_init_copy_semantics/ class=md-nav__link> <span class=md-ellipsis> JSON_BRACE_INIT_COPY_SEMANTICS </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_throw_user/ class=md-nav__link> <span class=md-ellipsis> JSON_CATCH_USER, JSON_THROW_USER, JSON_TRY_USER </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_diagnostics/ class=md-nav__link> <span class=md-ellipsis> JSON_DIAGNOSTICS </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_diagnostic_positions/ class=md-nav__link> <span class=md-ellipsis> JSON_DIAGNOSTIC_POSITIONS </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_disable_enum_serialization/ class=md-nav__link> <span class=md-ellipsis> JSON_DISABLE_ENUM_SERIALIZATION </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_has_cpp_11/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_CPP_11, JSON_HAS_CPP_14, JSON_HAS_CPP_17, JSON_HAS_CPP_20 </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_has_filesystem/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_EXPERIMENTAL_FILESYSTEM, JSON_HAS_FILESYSTEM </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_has_ranges/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_RANGES </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_has_static_rtti/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_STATIC_RTTI </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_has_three_way_comparison/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_THREE_WAY_COMPARISON </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_noexception/ class=md-nav__link> <span class=md-ellipsis> JSON_NOEXCEPTION </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_no_io/ class=md-nav__link> <span class=md-ellipsis> JSON_NO_IO </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_skip_library_version_check/ class=md-nav__link> <span class=md-ellipsis> JSON_SKIP_LIBRARY_VERSION_CHECK </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_skip_unsupported_compiler_check/ class=md-nav__link> <span class=md-ellipsis> JSON_SKIP_UNSUPPORTED_COMPILER_CHECK </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_use_global_udls/ class=md-nav__link> <span class=md-ellipsis> JSON_USE_GLOBAL_UDLS </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_use_implicit_conversions/ class=md-nav__link> <span class=md-ellipsis> JSON_USE_IMPLICIT_CONVERSIONS </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_use_legacy_discarded_value_comparison/ class=md-nav__link> <span class=md-ellipsis> JSON_USE_LEGACY_DISCARDED_VALUE_COMPARISON </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_define_derived_type/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_ONLY_SERIALIZE, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_define_type_intrusive/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_TYPE_INTRUSIVE, NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_TYPE_INTRUSIVE_ONLY_SERIALIZE </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_define_type_non_intrusive/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_define_type_with_names/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_TYPE_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_namespace/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_NAMESPACE </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_namespace_begin/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_NAMESPACE_BEGIN, NLOHMANN_JSON_NAMESPACE_END </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_namespace_no_version/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_NAMESPACE_NO_VERSION </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_serialize_enum/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_SERIALIZE_ENUM </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_serialize_enum_strict/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_SERIALIZE_ENUM_STRICT </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_version_major/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_VERSION_MAJOR, NLOHMANN_JSON_VERSION_MINOR, NLOHMANN_JSON_VERSION_PATCH </span> </a> </li> </ul> </nav> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_5> <div class="md-nav__link md-nav__container"> <a href=../../../community/ class="md-nav__link "> <span class=md-ellipsis> Community </span> </a> <label class="md-nav__link " for=__nav_5 id=__nav_5_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_5_label aria-expanded=false> <label class=md-nav__title for=__nav_5> <span class="md-nav__icon md-icon"></span> Community </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../community/code_of_conduct/ class=md-nav__link> <span class=md-ellipsis> Code of Conduct </span> </a> </li> <li class=md-nav__item> <a href=../../../community/contribution_guidelines/ class=md-nav__link> <span class=md-ellipsis> Contribution Guidelines </span> </a> </li> <li class=md-nav__item> <a href=../../../community/quality_assurance/ class=md-nav__link> <span class=md-ellipsis> Quality assurance </span> </a> </li> <li class=md-nav__item> <a href=../../../community/governance/ class=md-nav__link> <span class=md-ellipsis> Governance </span> </a> </li> <li class=md-nav__item> <a href=../../../community/security_policy/ class=md-nav__link> <span class=md-ellipsis> Security Policy </span> </a> </li> </ul> </nav> </li> </ul> </nav> </div> </div> </div> <div class="md-sidebar md-sidebar--secondary" data-md-component=sidebar data-md-type=toc> <div class=md-sidebar__scrollwrap> <div class=md-sidebar__inner> <nav class="md-nav md-nav--secondary" aria-label="Table of contents"> <label class=md-nav__title for=__toc> <span class="md-nav__icon md-icon"></span> Table of contents </label> <ul class=md-nav__list data-md-component=toc data-md-scrollfix> <li class=md-nav__item> <a href=#parameters class=md-nav__link> <span class=md-ellipsis> Parameters </span> </a> </li> <li class=md-nav__item> <a href=#return-value class=md-nav__link> <span class=md-ellipsis> Return value </span> </a> </li> <li class=md-nav__item> <a href=#exception-safety class=md-nav__link> <span class=md-ellipsis> Exception safety </span> </a> </li> <li class=md-nav__item> <a href=#complexity class=md-nav__link> <span class=md-ellipsis> Complexity </span> </a> </li> <li class=md-nav__item> <a href=#examples class=md-nav__link> <span class=md-ellipsis> Examples </span> </a> </li> <li class=md-nav__item> <a href=#see-also class=md-nav__link> <span class=md-ellipsis> See also </span> </a> </li> <li class=md-nav__item> <a href=#version-history class=md-nav__link> <span class=md-ellipsis> Version history </span> </a> </li> </ul> </nav> </div> </div> </div> <div class=md-content data-md-component=content> <article class="md-content__inner md-typeset"> <a href="https://github.com/nlohmann/json/edit/develop/docs/mkdocs/docs/api/basic_json/to_msgpack.md" title="Edit this page" class="md-content__button md-icon" rel="edit"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M10 20H6V4h7v5h5v3.1l2-2V8l-6-6H6c-1.1 0-2 .9-2 2v16c0 1.1.9 2 2 2h4zm10.2-7c.1 0 .3.1.4.2l1.3 1.3c.2.2.2.6 0 .8l-1 1-2.1-2.1 1-1c.1-.1.2-.2.4-.2m0 3.9L14.1 23H12v-2.1l6.1-6.1z"/></svg> </a> <a href="https://github.com/nlohmann/json/raw/develop/docs/mkdocs/docs/api/basic_json/to_msgpack.md" title="View source of this page" class="md-content__button md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M17 18c.56 0 1 .44 1 1s-.44 1-1 1-1-.44-1-1 .44-1 1-1m0-3c-2.73 0-5.06 1.66-6 4 .94 2.34 3.27 4 6 4s5.06-1.66 6-4c-.94-2.34-3.27-4-6-4m0 6.5a2.5 2.5 0 0 1-2.5-2.5 2.5 2.5 0 0 1 2.5-2.5 2.5 2.5 0 0 1 2.5 2.5 2.5 2.5 0 0 1-2.5 2.5M9.27 20H6V4h7v5h5v4.07c.7.08 1.36.25 2 .49V8l-6-6H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h4.5a8.2 8.2 0 0 1-1.23-2"/></svg> </a> <h1 id=nlohmannbasic_jsonto_msgpack><small>nlohmann::basic_json::</small>to_msgpack<a class=headerlink href=#nlohmannbasic_jsonto_msgpack title="Permanent link">&para;</a></h1> <div class=highlight><pre><span></span><code><span class=c1>// (1)</span>
 <span class=k>static</span><span class=w> </span><span class=n>std</span><span class=o>::</span><span class=n>vector</span><span class=o>&lt;</span><span class=n>std</span><span class=o>::</span><span class=kt>uint8_t</span><span class=o>&gt;</span><span class=w> </span><span class=n>to_msgpack</span><span class=p>(</span><span class=k>const</span><span class=w> </span><span class=n>basic_json</span><span class=o>&amp;</span><span class=w> </span><span class=n>j</span><span class=p>);</span>
 
 <span class=c1>// (2)</span>
@@ -27,4 +27,4 @@
 <span class=w>    </span><span class=n>std</span><span class=o>::</span><span class=n>cout</span><span class=w> </span><span class=o>&lt;&lt;</span><span class=w> </span><span class=n>std</span><span class=o>::</span><span class=n>endl</span><span class=p>;</span>
 <span class=p>}</span>
 </code></pre></div> <p>Output:</p> <div class=highlight><pre><span></span><code><span class=mi>0</span><span class=err>x</span><span class=mi>82</span><span class=w> </span><span class=mi>0</span><span class=err>xa</span><span class=mi>7</span><span class=w> </span><span class=mi>0</span><span class=err>x</span><span class=mi>63</span><span class=w> </span><span class=mi>0</span><span class=err>x</span><span class=mi>6</span><span class=kc>f</span><span class=w> </span><span class=mi>0</span><span class=err>x</span><span class=mi>6</span><span class=err>d</span><span class=w> </span><span class=mi>0</span><span class=err>x</span><span class=mi>70</span><span class=w> </span><span class=mi>0</span><span class=err>x</span><span class=mi>61</span><span class=w> </span><span class=mi>0</span><span class=err>x</span><span class=mi>63</span><span class=w> </span><span class=mi>0</span><span class=err>x</span><span class=mi>74</span><span class=w> </span><span class=mi>0</span><span class=err>xc</span><span class=mi>3</span><span class=w> </span><span class=mi>0</span><span class=err>xa</span><span class=mi>6</span><span class=w> </span><span class=mi>0</span><span class=err>x</span><span class=mi>73</span><span class=w> </span><span class=mi>0</span><span class=err>x</span><span class=mi>63</span><span class=w> </span><span class=mi>0</span><span class=err>x</span><span class=mi>68</span><span class=w> </span><span class=mi>0</span><span class=err>x</span><span class=mi>65</span><span class=w> </span><span class=mi>0</span><span class=err>x</span><span class=mi>6</span><span class=err>d</span><span class=w> </span><span class=mi>0</span><span class=err>x</span><span class=mi>61</span><span class=w> </span><span class=mi>0</span><span class=err>x</span><span class=mi>00</span><span class=w> </span>
-</code></pre></div> </details> <h2 id=version-history>Version history<a class=headerlink href=#version-history title="Permanent link">&para;</a></h2> <ul> <li>Added in version 2.0.9.</li> </ul> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 23, 2026 11:16:18 UTC">June 23, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
+</code></pre></div> </details> <h2 id=see-also>See also<a class=headerlink href=#see-also title="Permanent link">&para;</a></h2> <ul> <li><a href=../from_msgpack/ >from_msgpack</a> create a <abbr title="JavaScript Object Notation">JSON</abbr> value from an input in MessagePack format</li> <li><a href=../to_cbor/ >to_cbor</a> create a <abbr title="Concise Binary Object Representation">CBOR</abbr> serialization of a <abbr title="JavaScript Object Notation">JSON</abbr> value</li> <li><a href=../to_bson/ >to_bson</a> create a <abbr title="Binary JSON">BSON</abbr> serialization of a <abbr title="JavaScript Object Notation">JSON</abbr> value</li> <li><a href=../to_ubjson/ >to_ubjson</a> create a <abbr title="Universal Binary JSON">UBJSON</abbr> serialization of a <abbr title="JavaScript Object Notation">JSON</abbr> value</li> <li><a href=../to_bjdata/ >to_bjdata</a> create a <abbr title="Binary JData">BJData</abbr> serialization of a <abbr title="JavaScript Object Notation">JSON</abbr> value</li> </ul> <h2 id=version-history>Version history<a class=headerlink href=#version-history title="Permanent link">&para;</a></h2> <ul> <li>Added in version 2.0.9.</li> </ul> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 29, 2026 20:15:18 UTC">June 29, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
diff --git a/api/basic_json/to_string/index.html b/api/basic_json/to_string/index.html
index 41333fd..ba11e75 100644
--- a/api/basic_json/to_string/index.html
+++ b/api/basic_json/to_string/index.html
@@ -28,4 +28,4 @@
 </code></pre></div> <p>Output:</p> <div class=highlight><pre><span></span><code><span class=p>{</span><span class=nt>&quot;one&quot;</span><span class=p>:</span><span class=mi>1</span><span class=p>,</span><span class=nt>&quot;two&quot;</span><span class=p>:</span><span class=mi>2</span><span class=p>}</span>
 
 <span class=mi>42</span>
-</code></pre></div> </details> <h2 id=see-also>See also<a class=headerlink href=#see-also title="Permanent link">&para;</a></h2> <ul> <li><a href=../dump/ >dump</a></li> </ul> <h2 id=version-history>Version history<a class=headerlink href=#version-history title="Permanent link">&para;</a></h2> <p>Added in version 3.7.0.</p> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 23, 2026 11:16:18 UTC">June 23, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
+</code></pre></div> </details> <h2 id=see-also>See also<a class=headerlink href=#see-also title="Permanent link">&para;</a></h2> <ul> <li><a href=../dump/ >dump</a></li> </ul> <h2 id=version-history>Version history<a class=headerlink href=#version-history title="Permanent link">&para;</a></h2> <p>Added in version 3.7.0.</p> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 29, 2026 20:15:18 UTC">June 29, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
diff --git a/api/basic_json/to_ubjson/index.html b/api/basic_json/to_ubjson/index.html
index 82b2675..e87f4fe 100644
--- a/api/basic_json/to_ubjson/index.html
+++ b/api/basic_json/to_ubjson/index.html
@@ -1,4 +1,4 @@
-<!doctype html><html lang=en class=no-js> <head><meta charset=utf-8><meta name=viewport content="width=device-width,initial-scale=1"><meta name=author content="Niels Lohmann"><link href="https://json.nlohmann.me/api/basic_json/to_ubjson/" rel="canonical"><link href=../to_string/ rel=prev><link href=../type/ rel=next><link rel=icon href=../../../assets/images/favicon.png><meta name=generator content="mkdocs-1.6.1, mkdocs-material-9.7.6"><title>to_ubjson - JSON for Modern C++</title><link rel=stylesheet href=../../../assets/stylesheets/main.484c7ddc.min.css><link rel=stylesheet href=../../../assets/stylesheets/palette.ab4e12ef.min.css><link rel="stylesheet" href="../../../assets/external/fonts.googleapis.com/css.61a430c9.css"><style>:root{--md-text-font:"Roboto";--md-code-font:"JetBrains Mono"}</style><link rel=stylesheet href=../../../css/custom.css><script>__md_scope=new URL("../../..",location),__md_hash=e=>[...e].reduce(((e,_)=>(e<<5)-e+_.charCodeAt(0)),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script></head> <body dir=ltr data-md-color-scheme=default data-md-color-primary=indigo data-md-color-accent=indigo> <input class=md-toggle data-md-toggle=drawer type=checkbox id=__drawer autocomplete=off> <input class=md-toggle data-md-toggle=search type=checkbox id=__search autocomplete=off> <label class=md-overlay for=__drawer></label> <div data-md-component=skip> <a href=#nlohmannbasic_jsonto_ubjson class=md-skip> Skip to content </a> </div> <div data-md-component=announce> </div> <header class=md-header data-md-component=header> <nav class="md-header__inner md-grid" aria-label=Header> <a href=../../.. title="JSON for Modern C++" class="md-header__button md-logo" aria-label="JSON for Modern C++" data-md-component=logo> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54"/></svg> </a> <label class="md-header__button md-icon" for=__drawer> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M3 6h18v2H3zm0 5h18v2H3zm0 5h18v2H3z"/></svg> </label> <div class=md-header__title data-md-component=header-title> <div class=md-header__ellipsis> <div class=md-header__topic> <span class=md-ellipsis> JSON for Modern C++ </span> </div> <div class=md-header__topic data-md-component=header-topic> <span class=md-ellipsis> to_ubjson </span> </div> </div> </div> <form class=md-header__option data-md-component=palette> <input class=md-option data-md-color-media="(prefers-color-scheme: light)" data-md-color-scheme=default data-md-color-primary=indigo data-md-color-accent=indigo aria-label="Switch to dark mode" type=radio name=__palette id=__palette_0> <label class="md-header__button md-icon" title="Switch to dark mode" for=__palette_1 hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a4 4 0 0 0-4 4 4 4 0 0 0 4 4 4 4 0 0 0 4-4 4 4 0 0 0-4-4m0 10a6 6 0 0 1-6-6 6 6 0 0 1 6-6 6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12z"/></svg> </label> <input class=md-option data-md-color-media="(prefers-color-scheme: dark)" data-md-color-scheme=slate data-md-color-primary=indigo data-md-color-accent=indigo aria-label="Switch to light mode" type=radio name=__palette id=__palette_1> <label class="md-header__button md-icon" title="Switch to light mode" for=__palette_0 hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 18c-.89 0-1.74-.2-2.5-.55C11.56 16.5 13 14.42 13 12s-1.44-4.5-3.5-5.45C10.26 6.2 11.11 6 12 6a6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12z"/></svg> </label> </form> <script>var palette=__md_get("__palette");if(palette&&palette.color){if("(prefers-color-scheme)"===palette.color.media){var media=matchMedia("(prefers-color-scheme: light)"),input=document.querySelector(media.matches?"[data-md-color-media='(prefers-color-scheme: light)']":"[data-md-color-media='(prefers-color-scheme: dark)']");palette.color.media=input.getAttribute("data-md-color-media"),palette.color.scheme=input.getAttribute("data-md-color-scheme"),palette.color.primary=input.getAttribute("data-md-color-primary"),palette.color.accent=input.getAttribute("data-md-color-accent")}for(var[key,value]of Object.entries(palette.color))document.body.setAttribute("data-md-color-"+key,value)}</script> <label class="md-header__button md-icon" for=__search> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg> </label> <div class=md-search data-md-component=search role=dialog> <label class=md-search__overlay for=__search></label> <div class=md-search__inner role=search> <form class=md-search__form name=search> <input type=text class=md-search__input name=query aria-label=Search placeholder=Search autocapitalize=off autocorrect=off autocomplete=off spellcheck=false data-md-component=search-query required> <label class="md-search__icon md-icon" for=__search> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11z"/></svg> </label> <nav class=md-search__options aria-label=Search> <button type=reset class="md-search__icon md-icon" title=Clear aria-label=Clear tabindex=-1> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z"/></svg> </button> </nav> </form> <div class=md-search__output> <div class=md-search__scrollwrap tabindex=0 data-md-scrollfix> <div class=md-search-result data-md-component=search-result> <div class=md-search-result__meta> Initializing search </div> <ol class=md-search-result__list role=presentation></ol> </div> </div> </div> </div> </div> <div class=md-header__source> <a href="https://github.com/nlohmann/json" title="Go to repository" class="md-source" data-md-component="source"> <div class="md-source__icon md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </div> <div class=md-source__repository> nlohmann/json </div> </a> </div> </nav> </header> <div class=md-container data-md-component=container> <nav class=md-tabs aria-label=Tabs data-md-component=tabs> <div class=md-grid> <ul class=md-tabs__list> <li class=md-tabs__item> <a href=../../.. class=md-tabs__link> Home </a> </li> <li class=md-tabs__item> <a href=../../../features/arbitrary_types/ class=md-tabs__link> Features </a> </li> <li class=md-tabs__item> <a href=../../../integration/ class=md-tabs__link> Integration </a> </li> <li class="md-tabs__item md-tabs__item--active"> <a href=../ class=md-tabs__link> API Documentation </a> </li> <li class=md-tabs__item> <a href=../../../community/ class=md-tabs__link> Community </a> </li> </ul> </div> </nav> <main class=md-main data-md-component=main> <div class="md-main__inner md-grid"> <div class="md-sidebar md-sidebar--primary" data-md-component=sidebar data-md-type=navigation> <div class=md-sidebar__scrollwrap> <div class=md-sidebar__inner> <nav class="md-nav md-nav--primary md-nav--lifted" aria-label=Navigation data-md-level=0> <label class=md-nav__title for=__drawer> <a href=../../.. title="JSON for Modern C++" class="md-nav__button md-logo" aria-label="JSON for Modern C++" data-md-component=logo> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54"/></svg> </a> JSON for Modern C++ </label> <div class=md-nav__source> <a href="https://github.com/nlohmann/json" title="Go to repository" class="md-source" data-md-component="source"> <div class="md-source__icon md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </div> <div class=md-source__repository> nlohmann/json </div> </a> </div> <ul class=md-nav__list data-md-scrollfix> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_1> <div class="md-nav__link md-nav__container"> <a href=../../.. class="md-nav__link "> <span class=md-ellipsis> Home </span> </a> <label class="md-nav__link " for=__nav_1 id=__nav_1_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_1_label aria-expanded=false> <label class=md-nav__title for=__nav_1> <span class="md-nav__icon md-icon"></span> Home </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../home/license/ class=md-nav__link> <span class=md-ellipsis> License </span> </a> </li> <li class=md-nav__item> <a href=../../../home/faq/ class=md-nav__link> <span class=md-ellipsis> FAQ </span> </a> </li> <li class=md-nav__item> <a href=../../../home/exceptions/ class=md-nav__link> <span class=md-ellipsis> Exceptions </span> </a> </li> <li class=md-nav__item> <a href=../../../home/releases/ class=md-nav__link> <span class=md-ellipsis> Releases </span> </a> </li> <li class=md-nav__item> <a href=../../../home/design_goals/ class=md-nav__link> <span class=md-ellipsis> Design goals </span> </a> </li> <li class=md-nav__item> <a href=../../../home/architecture/ class=md-nav__link> <span class=md-ellipsis> Architecture </span> </a> </li> <li class=md-nav__item> <a href=../../../home/customers/ class=md-nav__link> <span class=md-ellipsis> Customers </span> </a> </li> <li class=md-nav__item> <a href=../../../home/sponsors/ class=md-nav__link> <span class=md-ellipsis> Sponsors </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2> <label class=md-nav__link for=__nav_2 id=__nav_2_label tabindex=0> <span class=md-ellipsis> Features </span> <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_2_label aria-expanded=false> <label class=md-nav__title for=__nav_2> <span class="md-nav__icon md-icon"></span> Features </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/arbitrary_types/ class=md-nav__link> <span class=md-ellipsis> Arbitrary Type Conversions </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_2> <div class="md-nav__link md-nav__container"> <a href=../../../features/binary_formats/ class="md-nav__link "> <span class=md-ellipsis> Binary Formats </span> </a> <label class="md-nav__link " for=__nav_2_2 id=__nav_2_2_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_2_label aria-expanded=false> <label class=md-nav__title for=__nav_2_2> <span class="md-nav__icon md-icon"></span> Binary Formats </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/binary_formats/bjdata/ class=md-nav__link> <span class=md-ellipsis> BJData </span> </a> </li> <li class=md-nav__item> <a href=../../../features/binary_formats/bson/ class=md-nav__link> <span class=md-ellipsis> BSON </span> </a> </li> <li class=md-nav__item> <a href=../../../features/binary_formats/cbor/ class=md-nav__link> <span class=md-ellipsis> CBOR </span> </a> </li> <li class=md-nav__item> <a href=../../../features/binary_formats/messagepack/ class=md-nav__link> <span class=md-ellipsis> MessagePack </span> </a> </li> <li class=md-nav__item> <a href=../../../features/binary_formats/ubjson/ class=md-nav__link> <span class=md-ellipsis> UBJSON </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../../features/binary_values/ class=md-nav__link> <span class=md-ellipsis> Binary Values </span> </a> </li> <li class=md-nav__item> <a href=../../../features/comments/ class=md-nav__link> <span class=md-ellipsis> Comments </span> </a> </li> <li class=md-nav__item> <a href=../../../features/trailing_commas/ class=md-nav__link> <span class=md-ellipsis> Trailing Commas </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_6> <div class="md-nav__link md-nav__container"> <a href=../../../features/element_access/ class="md-nav__link "> <span class=md-ellipsis> Element Access </span> </a> <label class="md-nav__link " for=__nav_2_6 id=__nav_2_6_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_6_label aria-expanded=false> <label class=md-nav__title for=__nav_2_6> <span class="md-nav__icon md-icon"></span> Element Access </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/element_access/unchecked_access/ class=md-nav__link> <span class=md-ellipsis> Unchecked access: operator[] </span> </a> </li> <li class=md-nav__item> <a href=../../../features/element_access/checked_access/ class=md-nav__link> <span class=md-ellipsis> Checked access: at </span> </a> </li> <li class=md-nav__item> <a href=../../../features/element_access/default_value/ class=md-nav__link> <span class=md-ellipsis> Access with default value: value </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../../features/iterators/ class=md-nav__link> <span class=md-ellipsis> Iterators </span> </a> </li> <li class=md-nav__item> <a href=../../../features/json_pointer/ class=md-nav__link> <span class=md-ellipsis> JSON Pointer </span> </a> </li> <li class=md-nav__item> <a href=../../../features/json_patch/ class=md-nav__link> <span class=md-ellipsis> JSON Patch and Diff </span> </a> </li> <li class=md-nav__item> <a href=../../../features/merge_patch/ class=md-nav__link> <span class=md-ellipsis> JSON Merge Patch </span> </a> </li> <li class=md-nav__item> <a href=../../../features/modules/ class=md-nav__link> <span class=md-ellipsis> Modules </span> </a> </li> <li class=md-nav__item> <a href=../../../features/namespace/ class=md-nav__link> <span class=md-ellipsis> nlohmann Namespace </span> </a> </li> <li class=md-nav__item> <a href=../../../features/object_order/ class=md-nav__link> <span class=md-ellipsis> Object Order </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_14> <div class="md-nav__link md-nav__container"> <a href=../../../features/parsing/ class="md-nav__link "> <span class=md-ellipsis> Parsing </span> </a> <label class="md-nav__link " for=__nav_2_14 id=__nav_2_14_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_14_label aria-expanded=false> <label class=md-nav__title for=__nav_2_14> <span class="md-nav__icon md-icon"></span> Parsing </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/parsing/json_lines/ class=md-nav__link> <span class=md-ellipsis> JSON Lines </span> </a> </li> <li class=md-nav__item> <a href=../../../features/parsing/parse_exceptions/ class=md-nav__link> <span class=md-ellipsis> Parsing and Exceptions </span> </a> </li> <li class=md-nav__item> <a href=../../../features/parsing/parser_callbacks/ class=md-nav__link> <span class=md-ellipsis> Parser Callbacks </span> </a> </li> <li class=md-nav__item> <a href=../../../features/parsing/sax_interface/ class=md-nav__link> <span class=md-ellipsis> SAX Interface </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../../features/assertions/ class=md-nav__link> <span class=md-ellipsis> Runtime Assertions </span> </a> </li> <li class=md-nav__item> <a href=../../../features/enum_conversion/ class=md-nav__link> <span class=md-ellipsis> Specializing enum conversion </span> </a> </li> <li class=md-nav__item> <a href=../../../features/macros/ class=md-nav__link> <span class=md-ellipsis> Supported Macros </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_18> <div class="md-nav__link md-nav__container"> <a href=../../../features/types/ class="md-nav__link "> <span class=md-ellipsis> Types </span> </a> <label class="md-nav__link " for=__nav_2_18 id=__nav_2_18_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_18_label aria-expanded=false> <label class=md-nav__title for=__nav_2_18> <span class="md-nav__icon md-icon"></span> Types </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/types/number_handling/ class=md-nav__link> <span class=md-ellipsis> Number Handling </span> </a> </li> </ul> </nav> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_3> <div class="md-nav__link md-nav__container"> <a href=../../../integration/ class="md-nav__link "> <span class=md-ellipsis> Integration </span> </a> <label class="md-nav__link " for=__nav_3 id=__nav_3_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_3_label aria-expanded=false> <label class=md-nav__title for=__nav_3> <span class="md-nav__icon md-icon"></span> Integration </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../integration/migration_guide/ class=md-nav__link> <span class=md-ellipsis> Migration Guide </span> </a> </li> <li class=md-nav__item> <a href=../../../integration/cmake/ class=md-nav__link> <span class=md-ellipsis> CMake </span> </a> </li> <li class=md-nav__item> <a href=../../../integration/package_managers/ class=md-nav__link> <span class=md-ellipsis> Package Managers </span> </a> </li> <li class=md-nav__item> <a href=../../../integration/pkg-config/ class=md-nav__link> <span class=md-ellipsis> Pkg-config </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--active md-nav__item--section md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4 checked> <label class=md-nav__link for=__nav_4 id=__nav_4_label tabindex> <span class=md-ellipsis> API Documentation </span> <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_4_label aria-expanded=true> <label class=md-nav__title for=__nav_4> <span class="md-nav__icon md-icon"></span> API Documentation </label> <ul class=md-nav__list data-md-scrollfix> <li class="md-nav__item md-nav__item--active md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_1 checked> <div class="md-nav__link md-nav__container"> <a href=../ class="md-nav__link "> <span class=md-ellipsis> basic_json </span> </a> <label class="md-nav__link " for=__nav_4_1 id=__nav_4_1_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_1_label aria-expanded=true> <label class=md-nav__title for=__nav_4_1> <span class="md-nav__icon md-icon"></span> basic_json </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../basic_json/ class=md-nav__link> <span class=md-ellipsis> (Constructor) </span> </a> </li> <li class=md-nav__item> <a href=../~basic_json/ class=md-nav__link> <span class=md-ellipsis> (Destructor) </span> </a> </li> <li class=md-nav__item> <a href=../accept/ class=md-nav__link> <span class=md-ellipsis> accept </span> </a> </li> <li class=md-nav__item> <a href=../array/ class=md-nav__link> <span class=md-ellipsis> array </span> </a> </li> <li class=md-nav__item> <a href=../array_t/ class=md-nav__link> <span class=md-ellipsis> array_t </span> </a> </li> <li class=md-nav__item> <a href=../at/ class=md-nav__link> <span class=md-ellipsis> at </span> </a> </li> <li class=md-nav__item> <a href=../back/ class=md-nav__link> <span class=md-ellipsis> back </span> </a> </li> <li class=md-nav__item> <a href=../begin/ class=md-nav__link> <span class=md-ellipsis> begin </span> </a> </li> <li class=md-nav__item> <a href=../binary/ class=md-nav__link> <span class=md-ellipsis> binary </span> </a> </li> <li class=md-nav__item> <a href=../binary_t/ class=md-nav__link> <span class=md-ellipsis> binary_t </span> </a> </li> <li class=md-nav__item> <a href=../boolean_t/ class=md-nav__link> <span class=md-ellipsis> boolean_t </span> </a> </li> <li class=md-nav__item> <a href=../cbegin/ class=md-nav__link> <span class=md-ellipsis> cbegin </span> </a> </li> <li class=md-nav__item> <a href=../cbor_tag_handler_t/ class=md-nav__link> <span class=md-ellipsis> cbor_tag_handler_t </span> </a> </li> <li class=md-nav__item> <a href=../cend/ class=md-nav__link> <span class=md-ellipsis> cend </span> </a> </li> <li class=md-nav__item> <a href=../clear/ class=md-nav__link> <span class=md-ellipsis> clear </span> </a> </li> <li class=md-nav__item> <a href=../contains/ class=md-nav__link> <span class=md-ellipsis> contains </span> </a> </li> <li class=md-nav__item> <a href=../count/ class=md-nav__link> <span class=md-ellipsis> count </span> </a> </li> <li class=md-nav__item> <a href=../crbegin/ class=md-nav__link> <span class=md-ellipsis> crbegin </span> </a> </li> <li class=md-nav__item> <a href=../crend/ class=md-nav__link> <span class=md-ellipsis> crend </span> </a> </li> <li class=md-nav__item> <a href=../default_object_comparator_t/ class=md-nav__link> <span class=md-ellipsis> default_object_comparator_t </span> </a> </li> <li class=md-nav__item> <a href=../diff/ class=md-nav__link> <span class=md-ellipsis> diff </span> </a> </li> <li class=md-nav__item> <a href=../dump/ class=md-nav__link> <span class=md-ellipsis> dump </span> </a> </li> <li class=md-nav__item> <a href=../emplace/ class=md-nav__link> <span class=md-ellipsis> emplace </span> </a> </li> <li class=md-nav__item> <a href=../emplace_back/ class=md-nav__link> <span class=md-ellipsis> emplace_back </span> </a> </li> <li class=md-nav__item> <a href=../empty/ class=md-nav__link> <span class=md-ellipsis> empty </span> </a> </li> <li class=md-nav__item> <a href=../end/ class=md-nav__link> <span class=md-ellipsis> end </span> </a> </li> <li class=md-nav__item> <a href=../end_pos/ class=md-nav__link> <span class=md-ellipsis> end_pos </span> </a> </li> <li class=md-nav__item> <a href=../erase/ class=md-nav__link> <span class=md-ellipsis> erase </span> </a> </li> <li class=md-nav__item> <a href=../error_handler_t/ class=md-nav__link> <span class=md-ellipsis> error_handler_t </span> </a> </li> <li class=md-nav__item> <a href=../exception/ class=md-nav__link> <span class=md-ellipsis> exception </span> </a> </li> <li class=md-nav__item> <a href=../find/ class=md-nav__link> <span class=md-ellipsis> find </span> </a> </li> <li class=md-nav__item> <a href=../flatten/ class=md-nav__link> <span class=md-ellipsis> flatten </span> </a> </li> <li class=md-nav__item> <a href=../from_bjdata/ class=md-nav__link> <span class=md-ellipsis> from_bjdata </span> </a> </li> <li class=md-nav__item> <a href=../from_bson/ class=md-nav__link> <span class=md-ellipsis> from_bson </span> </a> </li> <li class=md-nav__item> <a href=../from_cbor/ class=md-nav__link> <span class=md-ellipsis> from_cbor </span> </a> </li> <li class=md-nav__item> <a href=../from_msgpack/ class=md-nav__link> <span class=md-ellipsis> from_msgpack </span> </a> </li> <li class=md-nav__item> <a href=../from_ubjson/ class=md-nav__link> <span class=md-ellipsis> from_ubjson </span> </a> </li> <li class=md-nav__item> <a href=../front/ class=md-nav__link> <span class=md-ellipsis> front </span> </a> </li> <li class=md-nav__item> <a href=../get/ class=md-nav__link> <span class=md-ellipsis> get </span> </a> </li> <li class=md-nav__item> <a href=../get_allocator/ class=md-nav__link> <span class=md-ellipsis> get_allocator </span> </a> </li> <li class=md-nav__item> <a href=../get_binary/ class=md-nav__link> <span class=md-ellipsis> get_binary </span> </a> </li> <li class=md-nav__item> <a href=../get_ptr/ class=md-nav__link> <span class=md-ellipsis> get_ptr </span> </a> </li> <li class=md-nav__item> <a href=../get_ref/ class=md-nav__link> <span class=md-ellipsis> get_ref </span> </a> </li> <li class=md-nav__item> <a href=../get_to/ class=md-nav__link> <span class=md-ellipsis> get_to </span> </a> </li> <li class=md-nav__item> <a href=../std_hash/ class=md-nav__link> <span class=md-ellipsis> std::hash&lt;basic_json&gt; </span> </a> </li> <li class=md-nav__item> <a href=../input_format_t/ class=md-nav__link> <span class=md-ellipsis> input_format_t </span> </a> </li> <li class=md-nav__item> <a href=../insert/ class=md-nav__link> <span class=md-ellipsis> insert </span> </a> </li> <li class=md-nav__item> <a href=../invalid_iterator/ class=md-nav__link> <span class=md-ellipsis> invalid_iterator </span> </a> </li> <li class=md-nav__item> <a href=../is_array/ class=md-nav__link> <span class=md-ellipsis> is_array </span> </a> </li> <li class=md-nav__item> <a href=../is_binary/ class=md-nav__link> <span class=md-ellipsis> is_binary </span> </a> </li> <li class=md-nav__item> <a href=../is_boolean/ class=md-nav__link> <span class=md-ellipsis> is_boolean </span> </a> </li> <li class=md-nav__item> <a href=../is_discarded/ class=md-nav__link> <span class=md-ellipsis> is_discarded </span> </a> </li> <li class=md-nav__item> <a href=../is_null/ class=md-nav__link> <span class=md-ellipsis> is_null </span> </a> </li> <li class=md-nav__item> <a href=../is_number/ class=md-nav__link> <span class=md-ellipsis> is_number </span> </a> </li> <li class=md-nav__item> <a href=../is_number_float/ class=md-nav__link> <span class=md-ellipsis> is_number_float </span> </a> </li> <li class=md-nav__item> <a href=../is_number_integer/ class=md-nav__link> <span class=md-ellipsis> is_number_integer </span> </a> </li> <li class=md-nav__item> <a href=../is_number_unsigned/ class=md-nav__link> <span class=md-ellipsis> is_number_unsigned </span> </a> </li> <li class=md-nav__item> <a href=../is_object/ class=md-nav__link> <span class=md-ellipsis> is_object </span> </a> </li> <li class=md-nav__item> <a href=../is_primitive/ class=md-nav__link> <span class=md-ellipsis> is_primitive </span> </a> </li> <li class=md-nav__item> <a href=../is_string/ class=md-nav__link> <span class=md-ellipsis> is_string </span> </a> </li> <li class=md-nav__item> <a href=../is_structured/ class=md-nav__link> <span class=md-ellipsis> is_structured </span> </a> </li> <li class=md-nav__item> <a href=../items/ class=md-nav__link> <span class=md-ellipsis> items </span> </a> </li> <li class=md-nav__item> <a href=../json_base_class_t/ class=md-nav__link> <span class=md-ellipsis> json_base_class_t </span> </a> </li> <li class=md-nav__item> <a href=../json_serializer/ class=md-nav__link> <span class=md-ellipsis> json_serializer </span> </a> </li> <li class=md-nav__item> <a href=../max_size/ class=md-nav__link> <span class=md-ellipsis> max_size </span> </a> </li> <li class=md-nav__item> <a href=../meta/ class=md-nav__link> <span class=md-ellipsis> meta </span> </a> </li> <li class=md-nav__item> <a href=../merge_patch/ class=md-nav__link> <span class=md-ellipsis> merge_patch </span> </a> </li> <li class=md-nav__item> <a href=../number_float_t/ class=md-nav__link> <span class=md-ellipsis> number_float_t </span> </a> </li> <li class=md-nav__item> <a href=../number_integer_t/ class=md-nav__link> <span class=md-ellipsis> number_integer_t </span> </a> </li> <li class=md-nav__item> <a href=../number_unsigned_t/ class=md-nav__link> <span class=md-ellipsis> number_unsigned_t </span> </a> </li> <li class=md-nav__item> <a href=../object/ class=md-nav__link> <span class=md-ellipsis> object </span> </a> </li> <li class=md-nav__item> <a href=../object_comparator_t/ class=md-nav__link> <span class=md-ellipsis> object_comparator_t </span> </a> </li> <li class=md-nav__item> <a href=../object_t/ class=md-nav__link> <span class=md-ellipsis> object_t </span> </a> </li> <li class=md-nav__item> <a href=../operator_ValueType/ class=md-nav__link> <span class=md-ellipsis> operator ValueType </span> </a> </li> <li class=md-nav__item> <a href=../operator_value_t/ class=md-nav__link> <span class=md-ellipsis> operator value_t </span> </a> </li> <li class=md-nav__item> <a href=../operator%5B%5D/ class=md-nav__link> <span class=md-ellipsis> operator[] </span> </a> </li> <li class=md-nav__item> <a href=../operator%3D/ class=md-nav__link> <span class=md-ellipsis> operator= </span> </a> </li> <li class=md-nav__item> <a href=../operator%2B%3D/ class=md-nav__link> <span class=md-ellipsis> operator+= </span> </a> </li> <li class=md-nav__item> <a href=../operator_eq/ class=md-nav__link> <span class=md-ellipsis> operator== </span> </a> </li> <li class=md-nav__item> <a href=../operator_ne/ class=md-nav__link> <span class=md-ellipsis> operator!= </span> </a> </li> <li class=md-nav__item> <a href=../operator_lt/ class=md-nav__link> <span class=md-ellipsis> operator< </span> </a> </li> <li class=md-nav__item> <a href=../operator_gt/ class=md-nav__link> <span class=md-ellipsis> operator> </span> </a> </li> <li class=md-nav__item> <a href=../operator_le/ class=md-nav__link> <span class=md-ellipsis> operator<= </span> </a> </li> <li class=md-nav__item> <a href=../operator_ge/ class=md-nav__link> <span class=md-ellipsis> operator>= </span> </a> </li> <li class=md-nav__item> <a href=../operator_spaceship/ class=md-nav__link> <span class=md-ellipsis> operator<=> </span> </a> </li> <li class=md-nav__item> <a href=../out_of_range/ class=md-nav__link> <span class=md-ellipsis> out_of_range </span> </a> </li> <li class=md-nav__item> <a href=../other_error/ class=md-nav__link> <span class=md-ellipsis> other_error </span> </a> </li> <li class=md-nav__item> <a href=../parse/ class=md-nav__link> <span class=md-ellipsis> parse </span> </a> </li> <li class=md-nav__item> <a href=../parse_error/ class=md-nav__link> <span class=md-ellipsis> parse_error </span> </a> </li> <li class=md-nav__item> <a href=../parse_event_t/ class=md-nav__link> <span class=md-ellipsis> parse_event_t </span> </a> </li> <li class=md-nav__item> <a href=../parser_callback_t/ class=md-nav__link> <span class=md-ellipsis> parser_callback_t </span> </a> </li> <li class=md-nav__item> <a href=../patch/ class=md-nav__link> <span class=md-ellipsis> patch </span> </a> </li> <li class=md-nav__item> <a href=../patch_inplace/ class=md-nav__link> <span class=md-ellipsis> patch_inplace </span> </a> </li> <li class=md-nav__item> <a href=../push_back/ class=md-nav__link> <span class=md-ellipsis> push_back </span> </a> </li> <li class=md-nav__item> <a href=../rbegin/ class=md-nav__link> <span class=md-ellipsis> rbegin </span> </a> </li> <li class=md-nav__item> <a href=../rend/ class=md-nav__link> <span class=md-ellipsis> rend </span> </a> </li> <li class=md-nav__item> <a href=../sax_parse/ class=md-nav__link> <span class=md-ellipsis> sax_parse </span> </a> </li> <li class=md-nav__item> <a href=../size/ class=md-nav__link> <span class=md-ellipsis> size </span> </a> </li> <li class=md-nav__item> <a href=../start_pos/ class=md-nav__link> <span class=md-ellipsis> start_pos </span> </a> </li> <li class=md-nav__item> <a href=../string_t/ class=md-nav__link> <span class=md-ellipsis> string_t </span> </a> </li> <li class=md-nav__item> <a href=../swap/ class=md-nav__link> <span class=md-ellipsis> swap </span> </a> </li> <li class=md-nav__item> <a href=../std_swap/ class=md-nav__link> <span class=md-ellipsis> std::swap&lt;basic_json&gt; </span> </a> </li> <li class=md-nav__item> <a href=../to_bjdata/ class=md-nav__link> <span class=md-ellipsis> to_bjdata </span> </a> </li> <li class=md-nav__item> <a href=../to_bson/ class=md-nav__link> <span class=md-ellipsis> to_bson </span> </a> </li> <li class=md-nav__item> <a href=../to_cbor/ class=md-nav__link> <span class=md-ellipsis> to_cbor </span> </a> </li> <li class=md-nav__item> <a href=../to_msgpack/ class=md-nav__link> <span class=md-ellipsis> to_msgpack </span> </a> </li> <li class=md-nav__item> <a href=../to_string/ class=md-nav__link> <span class=md-ellipsis> to_string </span> </a> </li> <li class="md-nav__item md-nav__item--active"> <input class="md-nav__toggle md-toggle" type=checkbox id=__toc> <label class="md-nav__link md-nav__link--active" for=__toc> <span class=md-ellipsis> to_ubjson </span> <span class="md-nav__icon md-icon"></span> </label> <a href=./ class="md-nav__link md-nav__link--active"> <span class=md-ellipsis> to_ubjson </span> </a> <nav class="md-nav md-nav--secondary" aria-label="Table of contents"> <label class=md-nav__title for=__toc> <span class="md-nav__icon md-icon"></span> Table of contents </label> <ul class=md-nav__list data-md-component=toc data-md-scrollfix> <li class=md-nav__item> <a href=#parameters class=md-nav__link> <span class=md-ellipsis> Parameters </span> </a> </li> <li class=md-nav__item> <a href=#return-value class=md-nav__link> <span class=md-ellipsis> Return value </span> </a> </li> <li class=md-nav__item> <a href=#exception-safety class=md-nav__link> <span class=md-ellipsis> Exception safety </span> </a> </li> <li class=md-nav__item> <a href=#complexity class=md-nav__link> <span class=md-ellipsis> Complexity </span> </a> </li> <li class=md-nav__item> <a href=#examples class=md-nav__link> <span class=md-ellipsis> Examples </span> </a> </li> <li class=md-nav__item> <a href=#version-history class=md-nav__link> <span class=md-ellipsis> Version history </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../type/ class=md-nav__link> <span class=md-ellipsis> type </span> </a> </li> <li class=md-nav__item> <a href=../type_error/ class=md-nav__link> <span class=md-ellipsis> type_error </span> </a> </li> <li class=md-nav__item> <a href=../type_name/ class=md-nav__link> <span class=md-ellipsis> type_name </span> </a> </li> <li class=md-nav__item> <a href=../unflatten/ class=md-nav__link> <span class=md-ellipsis> unflatten </span> </a> </li> <li class=md-nav__item> <a href=../update/ class=md-nav__link> <span class=md-ellipsis> update </span> </a> </li> <li class=md-nav__item> <a href=../value/ class=md-nav__link> <span class=md-ellipsis> value </span> </a> </li> <li class=md-nav__item> <a href=../value_t/ class=md-nav__link> <span class=md-ellipsis> value_t </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_2> <div class="md-nav__link md-nav__container"> <a href=../../byte_container_with_subtype/ class="md-nav__link "> <span class=md-ellipsis> byte_container_with_subtype </span> </a> <label class="md-nav__link " for=__nav_4_2 id=__nav_4_2_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_2_label aria-expanded=false> <label class=md-nav__title for=__nav_4_2> <span class="md-nav__icon md-icon"></span> byte_container_with_subtype </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../byte_container_with_subtype/byte_container_with_subtype/ class=md-nav__link> <span class=md-ellipsis> (constructor) </span> </a> </li> <li class=md-nav__item> <a href=../../byte_container_with_subtype/clear_subtype/ class=md-nav__link> <span class=md-ellipsis> clear_subtype </span> </a> </li> <li class=md-nav__item> <a href=../../byte_container_with_subtype/has_subtype/ class=md-nav__link> <span class=md-ellipsis> has_subtype </span> </a> </li> <li class=md-nav__item> <a href=../../byte_container_with_subtype/set_subtype/ class=md-nav__link> <span class=md-ellipsis> set_subtype </span> </a> </li> <li class=md-nav__item> <a href=../../byte_container_with_subtype/subtype/ class=md-nav__link> <span class=md-ellipsis> subtype </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_3> <div class="md-nav__link md-nav__container"> <a href=../../adl_serializer/ class="md-nav__link "> <span class=md-ellipsis> adl_serializer </span> </a> <label class="md-nav__link " for=__nav_4_3 id=__nav_4_3_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_3_label aria-expanded=false> <label class=md-nav__title for=__nav_4_3> <span class="md-nav__icon md-icon"></span> adl_serializer </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../adl_serializer/from_json/ class=md-nav__link> <span class=md-ellipsis> from_json </span> </a> </li> <li class=md-nav__item> <a href=../../adl_serializer/to_json/ class=md-nav__link> <span class=md-ellipsis> to_json </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../json/ class=md-nav__link> <span class=md-ellipsis> json </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_5> <div class="md-nav__link md-nav__container"> <a href=../../json_pointer/ class="md-nav__link "> <span class=md-ellipsis> json_pointer </span> </a> <label class="md-nav__link " for=__nav_4_5 id=__nav_4_5_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_5_label aria-expanded=false> <label class=md-nav__title for=__nav_4_5> <span class="md-nav__icon md-icon"></span> json_pointer </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../json_pointer/json_pointer/ class=md-nav__link> <span class=md-ellipsis> (Constructor) </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/back/ class=md-nav__link> <span class=md-ellipsis> back </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/empty/ class=md-nav__link> <span class=md-ellipsis> empty </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/front/ class=md-nav__link> <span class=md-ellipsis> front </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_string_t/ class=md-nav__link> <span class=md-ellipsis> operator string_t </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_eq/ class=md-nav__link> <span class=md-ellipsis> operator== </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_ne/ class=md-nav__link> <span class=md-ellipsis> operator!= </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_slash/ class=md-nav__link> <span class=md-ellipsis> operator/ </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_slasheq/ class=md-nav__link> <span class=md-ellipsis> operator/= </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/parent_pointer/ class=md-nav__link> <span class=md-ellipsis> parent_pointer </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/pop_back/ class=md-nav__link> <span class=md-ellipsis> pop_back </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/pop_front/ class=md-nav__link> <span class=md-ellipsis> pop_front </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/push_back/ class=md-nav__link> <span class=md-ellipsis> push_back </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/push_front/ class=md-nav__link> <span class=md-ellipsis> push_front </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/string_t/ class=md-nav__link> <span class=md-ellipsis> string_t </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/to_string/ class=md-nav__link> <span class=md-ellipsis> to_string </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_6> <div class="md-nav__link md-nav__container"> <a href=../../json_sax/ class="md-nav__link "> <span class=md-ellipsis> json_sax </span> </a> <label class="md-nav__link " for=__nav_4_6 id=__nav_4_6_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_6_label aria-expanded=false> <label class=md-nav__title for=__nav_4_6> <span class="md-nav__icon md-icon"></span> json_sax </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../json_sax/binary/ class=md-nav__link> <span class=md-ellipsis> binary </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/boolean/ class=md-nav__link> <span class=md-ellipsis> boolean </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/end_array/ class=md-nav__link> <span class=md-ellipsis> end_array </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/end_object/ class=md-nav__link> <span class=md-ellipsis> end_object </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/key/ class=md-nav__link> <span class=md-ellipsis> key </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/null/ class=md-nav__link> <span class=md-ellipsis> null </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/number_float/ class=md-nav__link> <span class=md-ellipsis> number_float </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/number_integer/ class=md-nav__link> <span class=md-ellipsis> number_integer </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/number_unsigned/ class=md-nav__link> <span class=md-ellipsis> number_unsigned </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/parse_error/ class=md-nav__link> <span class=md-ellipsis> parse_error </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/start_array/ class=md-nav__link> <span class=md-ellipsis> start_array </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/start_object/ class=md-nav__link> <span class=md-ellipsis> start_object </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/string/ class=md-nav__link> <span class=md-ellipsis> string </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../operator_ltlt/ class=md-nav__link> <span class=md-ellipsis> operator<<(basic_json), operator<<(json_pointer) </span> </a> </li> <li class=md-nav__item> <a href=../../operator_gtgt/ class=md-nav__link> <span class=md-ellipsis> operator>>(basic_json) </span> </a> </li> <li class=md-nav__item> <a href=../../operator_literal_json/ class=md-nav__link> <span class=md-ellipsis> operator""_json </span> </a> </li> <li class=md-nav__item> <a href=../../operator_literal_json_pointer/ class=md-nav__link> <span class=md-ellipsis> operator""_json_pointer </span> </a> </li> <li class=md-nav__item> <a href=../../ordered_json/ class=md-nav__link> <span class=md-ellipsis> ordered_json </span> </a> </li> <li class=md-nav__item> <a href=../../ordered_map/ class=md-nav__link> <span class=md-ellipsis> ordered_map </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_13> <div class="md-nav__link md-nav__container"> <a href=../../macros/ class="md-nav__link "> <span class=md-ellipsis> macros </span> </a> <label class="md-nav__link " for=__nav_4_13 id=__nav_4_13_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_13_label aria-expanded=false> <label class=md-nav__title for=__nav_4_13> <span class="md-nav__icon md-icon"></span> macros </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../macros/json_assert/ class=md-nav__link> <span class=md-ellipsis> JSON_ASSERT </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_brace_init_copy_semantics/ class=md-nav__link> <span class=md-ellipsis> JSON_BRACE_INIT_COPY_SEMANTICS </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_throw_user/ class=md-nav__link> <span class=md-ellipsis> JSON_CATCH_USER, JSON_THROW_USER, JSON_TRY_USER </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_diagnostics/ class=md-nav__link> <span class=md-ellipsis> JSON_DIAGNOSTICS </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_diagnostic_positions/ class=md-nav__link> <span class=md-ellipsis> JSON_DIAGNOSTIC_POSITIONS </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_disable_enum_serialization/ class=md-nav__link> <span class=md-ellipsis> JSON_DISABLE_ENUM_SERIALIZATION </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_has_cpp_11/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_CPP_11, JSON_HAS_CPP_14, JSON_HAS_CPP_17, JSON_HAS_CPP_20 </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_has_filesystem/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_EXPERIMENTAL_FILESYSTEM, JSON_HAS_FILESYSTEM </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_has_ranges/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_RANGES </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_has_static_rtti/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_STATIC_RTTI </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_has_three_way_comparison/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_THREE_WAY_COMPARISON </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_noexception/ class=md-nav__link> <span class=md-ellipsis> JSON_NOEXCEPTION </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_no_io/ class=md-nav__link> <span class=md-ellipsis> JSON_NO_IO </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_skip_library_version_check/ class=md-nav__link> <span class=md-ellipsis> JSON_SKIP_LIBRARY_VERSION_CHECK </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_skip_unsupported_compiler_check/ class=md-nav__link> <span class=md-ellipsis> JSON_SKIP_UNSUPPORTED_COMPILER_CHECK </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_use_global_udls/ class=md-nav__link> <span class=md-ellipsis> JSON_USE_GLOBAL_UDLS </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_use_implicit_conversions/ class=md-nav__link> <span class=md-ellipsis> JSON_USE_IMPLICIT_CONVERSIONS </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_use_legacy_discarded_value_comparison/ class=md-nav__link> <span class=md-ellipsis> JSON_USE_LEGACY_DISCARDED_VALUE_COMPARISON </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_define_derived_type/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_ONLY_SERIALIZE, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_define_type_intrusive/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_TYPE_INTRUSIVE, NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_TYPE_INTRUSIVE_ONLY_SERIALIZE </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_define_type_non_intrusive/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_define_type_with_names/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_TYPE_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_namespace/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_NAMESPACE </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_namespace_begin/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_NAMESPACE_BEGIN, NLOHMANN_JSON_NAMESPACE_END </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_namespace_no_version/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_NAMESPACE_NO_VERSION </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_serialize_enum/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_SERIALIZE_ENUM </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_serialize_enum_strict/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_SERIALIZE_ENUM_STRICT </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_version_major/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_VERSION_MAJOR, NLOHMANN_JSON_VERSION_MINOR, NLOHMANN_JSON_VERSION_PATCH </span> </a> </li> </ul> </nav> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_5> <div class="md-nav__link md-nav__container"> <a href=../../../community/ class="md-nav__link "> <span class=md-ellipsis> Community </span> </a> <label class="md-nav__link " for=__nav_5 id=__nav_5_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_5_label aria-expanded=false> <label class=md-nav__title for=__nav_5> <span class="md-nav__icon md-icon"></span> Community </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../community/code_of_conduct/ class=md-nav__link> <span class=md-ellipsis> Code of Conduct </span> </a> </li> <li class=md-nav__item> <a href=../../../community/contribution_guidelines/ class=md-nav__link> <span class=md-ellipsis> Contribution Guidelines </span> </a> </li> <li class=md-nav__item> <a href=../../../community/quality_assurance/ class=md-nav__link> <span class=md-ellipsis> Quality assurance </span> </a> </li> <li class=md-nav__item> <a href=../../../community/governance/ class=md-nav__link> <span class=md-ellipsis> Governance </span> </a> </li> <li class=md-nav__item> <a href=../../../community/security_policy/ class=md-nav__link> <span class=md-ellipsis> Security Policy </span> </a> </li> </ul> </nav> </li> </ul> </nav> </div> </div> </div> <div class="md-sidebar md-sidebar--secondary" data-md-component=sidebar data-md-type=toc> <div class=md-sidebar__scrollwrap> <div class=md-sidebar__inner> <nav class="md-nav md-nav--secondary" aria-label="Table of contents"> <label class=md-nav__title for=__toc> <span class="md-nav__icon md-icon"></span> Table of contents </label> <ul class=md-nav__list data-md-component=toc data-md-scrollfix> <li class=md-nav__item> <a href=#parameters class=md-nav__link> <span class=md-ellipsis> Parameters </span> </a> </li> <li class=md-nav__item> <a href=#return-value class=md-nav__link> <span class=md-ellipsis> Return value </span> </a> </li> <li class=md-nav__item> <a href=#exception-safety class=md-nav__link> <span class=md-ellipsis> Exception safety </span> </a> </li> <li class=md-nav__item> <a href=#complexity class=md-nav__link> <span class=md-ellipsis> Complexity </span> </a> </li> <li class=md-nav__item> <a href=#examples class=md-nav__link> <span class=md-ellipsis> Examples </span> </a> </li> <li class=md-nav__item> <a href=#version-history class=md-nav__link> <span class=md-ellipsis> Version history </span> </a> </li> </ul> </nav> </div> </div> </div> <div class=md-content data-md-component=content> <article class="md-content__inner md-typeset"> <a href="https://github.com/nlohmann/json/edit/develop/docs/mkdocs/docs/api/basic_json/to_ubjson.md" title="Edit this page" class="md-content__button md-icon" rel="edit"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M10 20H6V4h7v5h5v3.1l2-2V8l-6-6H6c-1.1 0-2 .9-2 2v16c0 1.1.9 2 2 2h4zm10.2-7c.1 0 .3.1.4.2l1.3 1.3c.2.2.2.6 0 .8l-1 1-2.1-2.1 1-1c.1-.1.2-.2.4-.2m0 3.9L14.1 23H12v-2.1l6.1-6.1z"/></svg> </a> <a href="https://github.com/nlohmann/json/raw/develop/docs/mkdocs/docs/api/basic_json/to_ubjson.md" title="View source of this page" class="md-content__button md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M17 18c.56 0 1 .44 1 1s-.44 1-1 1-1-.44-1-1 .44-1 1-1m0-3c-2.73 0-5.06 1.66-6 4 .94 2.34 3.27 4 6 4s5.06-1.66 6-4c-.94-2.34-3.27-4-6-4m0 6.5a2.5 2.5 0 0 1-2.5-2.5 2.5 2.5 0 0 1 2.5-2.5 2.5 2.5 0 0 1 2.5 2.5 2.5 2.5 0 0 1-2.5 2.5M9.27 20H6V4h7v5h5v4.07c.7.08 1.36.25 2 .49V8l-6-6H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h4.5a8.2 8.2 0 0 1-1.23-2"/></svg> </a> <h1 id=nlohmannbasic_jsonto_ubjson><small>nlohmann::basic_json::</small>to_ubjson<a class=headerlink href=#nlohmannbasic_jsonto_ubjson title="Permanent link">&para;</a></h1> <div class=highlight><pre><span></span><code><span class=c1>// (1)</span>
+<!doctype html><html lang=en class=no-js> <head><meta charset=utf-8><meta name=viewport content="width=device-width,initial-scale=1"><meta name=author content="Niels Lohmann"><link href="https://json.nlohmann.me/api/basic_json/to_ubjson/" rel="canonical"><link href=../to_string/ rel=prev><link href=../type/ rel=next><link rel=icon href=../../../assets/images/favicon.png><meta name=generator content="mkdocs-1.6.1, mkdocs-material-9.7.6"><title>to_ubjson - JSON for Modern C++</title><link rel=stylesheet href=../../../assets/stylesheets/main.484c7ddc.min.css><link rel=stylesheet href=../../../assets/stylesheets/palette.ab4e12ef.min.css><link rel="stylesheet" href="../../../assets/external/fonts.googleapis.com/css.61a430c9.css"><style>:root{--md-text-font:"Roboto";--md-code-font:"JetBrains Mono"}</style><link rel=stylesheet href=../../../css/custom.css><script>__md_scope=new URL("../../..",location),__md_hash=e=>[...e].reduce(((e,_)=>(e<<5)-e+_.charCodeAt(0)),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script></head> <body dir=ltr data-md-color-scheme=default data-md-color-primary=indigo data-md-color-accent=indigo> <input class=md-toggle data-md-toggle=drawer type=checkbox id=__drawer autocomplete=off> <input class=md-toggle data-md-toggle=search type=checkbox id=__search autocomplete=off> <label class=md-overlay for=__drawer></label> <div data-md-component=skip> <a href=#nlohmannbasic_jsonto_ubjson class=md-skip> Skip to content </a> </div> <div data-md-component=announce> </div> <header class=md-header data-md-component=header> <nav class="md-header__inner md-grid" aria-label=Header> <a href=../../.. title="JSON for Modern C++" class="md-header__button md-logo" aria-label="JSON for Modern C++" data-md-component=logo> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54"/></svg> </a> <label class="md-header__button md-icon" for=__drawer> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M3 6h18v2H3zm0 5h18v2H3zm0 5h18v2H3z"/></svg> </label> <div class=md-header__title data-md-component=header-title> <div class=md-header__ellipsis> <div class=md-header__topic> <span class=md-ellipsis> JSON for Modern C++ </span> </div> <div class=md-header__topic data-md-component=header-topic> <span class=md-ellipsis> to_ubjson </span> </div> </div> </div> <form class=md-header__option data-md-component=palette> <input class=md-option data-md-color-media="(prefers-color-scheme: light)" data-md-color-scheme=default data-md-color-primary=indigo data-md-color-accent=indigo aria-label="Switch to dark mode" type=radio name=__palette id=__palette_0> <label class="md-header__button md-icon" title="Switch to dark mode" for=__palette_1 hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a4 4 0 0 0-4 4 4 4 0 0 0 4 4 4 4 0 0 0 4-4 4 4 0 0 0-4-4m0 10a6 6 0 0 1-6-6 6 6 0 0 1 6-6 6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12z"/></svg> </label> <input class=md-option data-md-color-media="(prefers-color-scheme: dark)" data-md-color-scheme=slate data-md-color-primary=indigo data-md-color-accent=indigo aria-label="Switch to light mode" type=radio name=__palette id=__palette_1> <label class="md-header__button md-icon" title="Switch to light mode" for=__palette_0 hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 18c-.89 0-1.74-.2-2.5-.55C11.56 16.5 13 14.42 13 12s-1.44-4.5-3.5-5.45C10.26 6.2 11.11 6 12 6a6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12z"/></svg> </label> </form> <script>var palette=__md_get("__palette");if(palette&&palette.color){if("(prefers-color-scheme)"===palette.color.media){var media=matchMedia("(prefers-color-scheme: light)"),input=document.querySelector(media.matches?"[data-md-color-media='(prefers-color-scheme: light)']":"[data-md-color-media='(prefers-color-scheme: dark)']");palette.color.media=input.getAttribute("data-md-color-media"),palette.color.scheme=input.getAttribute("data-md-color-scheme"),palette.color.primary=input.getAttribute("data-md-color-primary"),palette.color.accent=input.getAttribute("data-md-color-accent")}for(var[key,value]of Object.entries(palette.color))document.body.setAttribute("data-md-color-"+key,value)}</script> <label class="md-header__button md-icon" for=__search> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg> </label> <div class=md-search data-md-component=search role=dialog> <label class=md-search__overlay for=__search></label> <div class=md-search__inner role=search> <form class=md-search__form name=search> <input type=text class=md-search__input name=query aria-label=Search placeholder=Search autocapitalize=off autocorrect=off autocomplete=off spellcheck=false data-md-component=search-query required> <label class="md-search__icon md-icon" for=__search> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11z"/></svg> </label> <nav class=md-search__options aria-label=Search> <button type=reset class="md-search__icon md-icon" title=Clear aria-label=Clear tabindex=-1> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z"/></svg> </button> </nav> </form> <div class=md-search__output> <div class=md-search__scrollwrap tabindex=0 data-md-scrollfix> <div class=md-search-result data-md-component=search-result> <div class=md-search-result__meta> Initializing search </div> <ol class=md-search-result__list role=presentation></ol> </div> </div> </div> </div> </div> <div class=md-header__source> <a href="https://github.com/nlohmann/json" title="Go to repository" class="md-source" data-md-component="source"> <div class="md-source__icon md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </div> <div class=md-source__repository> nlohmann/json </div> </a> </div> </nav> </header> <div class=md-container data-md-component=container> <nav class=md-tabs aria-label=Tabs data-md-component=tabs> <div class=md-grid> <ul class=md-tabs__list> <li class=md-tabs__item> <a href=../../.. class=md-tabs__link> Home </a> </li> <li class=md-tabs__item> <a href=../../../features/arbitrary_types/ class=md-tabs__link> Features </a> </li> <li class=md-tabs__item> <a href=../../../integration/ class=md-tabs__link> Integration </a> </li> <li class="md-tabs__item md-tabs__item--active"> <a href=../ class=md-tabs__link> API Documentation </a> </li> <li class=md-tabs__item> <a href=../../../community/ class=md-tabs__link> Community </a> </li> </ul> </div> </nav> <main class=md-main data-md-component=main> <div class="md-main__inner md-grid"> <div class="md-sidebar md-sidebar--primary" data-md-component=sidebar data-md-type=navigation> <div class=md-sidebar__scrollwrap> <div class=md-sidebar__inner> <nav class="md-nav md-nav--primary md-nav--lifted" aria-label=Navigation data-md-level=0> <label class=md-nav__title for=__drawer> <a href=../../.. title="JSON for Modern C++" class="md-nav__button md-logo" aria-label="JSON for Modern C++" data-md-component=logo> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54"/></svg> </a> JSON for Modern C++ </label> <div class=md-nav__source> <a href="https://github.com/nlohmann/json" title="Go to repository" class="md-source" data-md-component="source"> <div class="md-source__icon md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </div> <div class=md-source__repository> nlohmann/json </div> </a> </div> <ul class=md-nav__list data-md-scrollfix> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_1> <div class="md-nav__link md-nav__container"> <a href=../../.. class="md-nav__link "> <span class=md-ellipsis> Home </span> </a> <label class="md-nav__link " for=__nav_1 id=__nav_1_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_1_label aria-expanded=false> <label class=md-nav__title for=__nav_1> <span class="md-nav__icon md-icon"></span> Home </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../home/license/ class=md-nav__link> <span class=md-ellipsis> License </span> </a> </li> <li class=md-nav__item> <a href=../../../home/faq/ class=md-nav__link> <span class=md-ellipsis> FAQ </span> </a> </li> <li class=md-nav__item> <a href=../../../home/exceptions/ class=md-nav__link> <span class=md-ellipsis> Exceptions </span> </a> </li> <li class=md-nav__item> <a href=../../../home/releases/ class=md-nav__link> <span class=md-ellipsis> Releases </span> </a> </li> <li class=md-nav__item> <a href=../../../home/design_goals/ class=md-nav__link> <span class=md-ellipsis> Design goals </span> </a> </li> <li class=md-nav__item> <a href=../../../home/architecture/ class=md-nav__link> <span class=md-ellipsis> Architecture </span> </a> </li> <li class=md-nav__item> <a href=../../../home/customers/ class=md-nav__link> <span class=md-ellipsis> Customers </span> </a> </li> <li class=md-nav__item> <a href=../../../home/sponsors/ class=md-nav__link> <span class=md-ellipsis> Sponsors </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2> <label class=md-nav__link for=__nav_2 id=__nav_2_label tabindex=0> <span class=md-ellipsis> Features </span> <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_2_label aria-expanded=false> <label class=md-nav__title for=__nav_2> <span class="md-nav__icon md-icon"></span> Features </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/arbitrary_types/ class=md-nav__link> <span class=md-ellipsis> Arbitrary Type Conversions </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_2> <div class="md-nav__link md-nav__container"> <a href=../../../features/binary_formats/ class="md-nav__link "> <span class=md-ellipsis> Binary Formats </span> </a> <label class="md-nav__link " for=__nav_2_2 id=__nav_2_2_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_2_label aria-expanded=false> <label class=md-nav__title for=__nav_2_2> <span class="md-nav__icon md-icon"></span> Binary Formats </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/binary_formats/bjdata/ class=md-nav__link> <span class=md-ellipsis> BJData </span> </a> </li> <li class=md-nav__item> <a href=../../../features/binary_formats/bson/ class=md-nav__link> <span class=md-ellipsis> BSON </span> </a> </li> <li class=md-nav__item> <a href=../../../features/binary_formats/cbor/ class=md-nav__link> <span class=md-ellipsis> CBOR </span> </a> </li> <li class=md-nav__item> <a href=../../../features/binary_formats/messagepack/ class=md-nav__link> <span class=md-ellipsis> MessagePack </span> </a> </li> <li class=md-nav__item> <a href=../../../features/binary_formats/ubjson/ class=md-nav__link> <span class=md-ellipsis> UBJSON </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../../features/binary_values/ class=md-nav__link> <span class=md-ellipsis> Binary Values </span> </a> </li> <li class=md-nav__item> <a href=../../../features/comments/ class=md-nav__link> <span class=md-ellipsis> Comments </span> </a> </li> <li class=md-nav__item> <a href=../../../features/trailing_commas/ class=md-nav__link> <span class=md-ellipsis> Trailing Commas </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_6> <div class="md-nav__link md-nav__container"> <a href=../../../features/element_access/ class="md-nav__link "> <span class=md-ellipsis> Element Access </span> </a> <label class="md-nav__link " for=__nav_2_6 id=__nav_2_6_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_6_label aria-expanded=false> <label class=md-nav__title for=__nav_2_6> <span class="md-nav__icon md-icon"></span> Element Access </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/element_access/unchecked_access/ class=md-nav__link> <span class=md-ellipsis> Unchecked access: operator[] </span> </a> </li> <li class=md-nav__item> <a href=../../../features/element_access/checked_access/ class=md-nav__link> <span class=md-ellipsis> Checked access: at </span> </a> </li> <li class=md-nav__item> <a href=../../../features/element_access/default_value/ class=md-nav__link> <span class=md-ellipsis> Access with default value: value </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../../features/iterators/ class=md-nav__link> <span class=md-ellipsis> Iterators </span> </a> </li> <li class=md-nav__item> <a href=../../../features/json_pointer/ class=md-nav__link> <span class=md-ellipsis> JSON Pointer </span> </a> </li> <li class=md-nav__item> <a href=../../../features/json_patch/ class=md-nav__link> <span class=md-ellipsis> JSON Patch and Diff </span> </a> </li> <li class=md-nav__item> <a href=../../../features/merge_patch/ class=md-nav__link> <span class=md-ellipsis> JSON Merge Patch </span> </a> </li> <li class=md-nav__item> <a href=../../../features/modules/ class=md-nav__link> <span class=md-ellipsis> Modules </span> </a> </li> <li class=md-nav__item> <a href=../../../features/namespace/ class=md-nav__link> <span class=md-ellipsis> nlohmann Namespace </span> </a> </li> <li class=md-nav__item> <a href=../../../features/object_order/ class=md-nav__link> <span class=md-ellipsis> Object Order </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_14> <div class="md-nav__link md-nav__container"> <a href=../../../features/parsing/ class="md-nav__link "> <span class=md-ellipsis> Parsing </span> </a> <label class="md-nav__link " for=__nav_2_14 id=__nav_2_14_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_14_label aria-expanded=false> <label class=md-nav__title for=__nav_2_14> <span class="md-nav__icon md-icon"></span> Parsing </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/parsing/json_lines/ class=md-nav__link> <span class=md-ellipsis> JSON Lines </span> </a> </li> <li class=md-nav__item> <a href=../../../features/parsing/parse_exceptions/ class=md-nav__link> <span class=md-ellipsis> Parsing and Exceptions </span> </a> </li> <li class=md-nav__item> <a href=../../../features/parsing/parser_callbacks/ class=md-nav__link> <span class=md-ellipsis> Parser Callbacks </span> </a> </li> <li class=md-nav__item> <a href=../../../features/parsing/sax_interface/ class=md-nav__link> <span class=md-ellipsis> SAX Interface </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../../features/assertions/ class=md-nav__link> <span class=md-ellipsis> Runtime Assertions </span> </a> </li> <li class=md-nav__item> <a href=../../../features/enum_conversion/ class=md-nav__link> <span class=md-ellipsis> Specializing enum conversion </span> </a> </li> <li class=md-nav__item> <a href=../../../features/macros/ class=md-nav__link> <span class=md-ellipsis> Supported Macros </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_18> <div class="md-nav__link md-nav__container"> <a href=../../../features/types/ class="md-nav__link "> <span class=md-ellipsis> Types </span> </a> <label class="md-nav__link " for=__nav_2_18 id=__nav_2_18_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_18_label aria-expanded=false> <label class=md-nav__title for=__nav_2_18> <span class="md-nav__icon md-icon"></span> Types </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/types/number_handling/ class=md-nav__link> <span class=md-ellipsis> Number Handling </span> </a> </li> </ul> </nav> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_3> <div class="md-nav__link md-nav__container"> <a href=../../../integration/ class="md-nav__link "> <span class=md-ellipsis> Integration </span> </a> <label class="md-nav__link " for=__nav_3 id=__nav_3_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_3_label aria-expanded=false> <label class=md-nav__title for=__nav_3> <span class="md-nav__icon md-icon"></span> Integration </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../integration/migration_guide/ class=md-nav__link> <span class=md-ellipsis> Migration Guide </span> </a> </li> <li class=md-nav__item> <a href=../../../integration/cmake/ class=md-nav__link> <span class=md-ellipsis> CMake </span> </a> </li> <li class=md-nav__item> <a href=../../../integration/package_managers/ class=md-nav__link> <span class=md-ellipsis> Package Managers </span> </a> </li> <li class=md-nav__item> <a href=../../../integration/pkg-config/ class=md-nav__link> <span class=md-ellipsis> Pkg-config </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--active md-nav__item--section md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4 checked> <label class=md-nav__link for=__nav_4 id=__nav_4_label tabindex> <span class=md-ellipsis> API Documentation </span> <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_4_label aria-expanded=true> <label class=md-nav__title for=__nav_4> <span class="md-nav__icon md-icon"></span> API Documentation </label> <ul class=md-nav__list data-md-scrollfix> <li class="md-nav__item md-nav__item--active md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_1 checked> <div class="md-nav__link md-nav__container"> <a href=../ class="md-nav__link "> <span class=md-ellipsis> basic_json </span> </a> <label class="md-nav__link " for=__nav_4_1 id=__nav_4_1_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_1_label aria-expanded=true> <label class=md-nav__title for=__nav_4_1> <span class="md-nav__icon md-icon"></span> basic_json </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../basic_json/ class=md-nav__link> <span class=md-ellipsis> (Constructor) </span> </a> </li> <li class=md-nav__item> <a href=../~basic_json/ class=md-nav__link> <span class=md-ellipsis> (Destructor) </span> </a> </li> <li class=md-nav__item> <a href=../accept/ class=md-nav__link> <span class=md-ellipsis> accept </span> </a> </li> <li class=md-nav__item> <a href=../array/ class=md-nav__link> <span class=md-ellipsis> array </span> </a> </li> <li class=md-nav__item> <a href=../array_t/ class=md-nav__link> <span class=md-ellipsis> array_t </span> </a> </li> <li class=md-nav__item> <a href=../at/ class=md-nav__link> <span class=md-ellipsis> at </span> </a> </li> <li class=md-nav__item> <a href=../back/ class=md-nav__link> <span class=md-ellipsis> back </span> </a> </li> <li class=md-nav__item> <a href=../begin/ class=md-nav__link> <span class=md-ellipsis> begin </span> </a> </li> <li class=md-nav__item> <a href=../binary/ class=md-nav__link> <span class=md-ellipsis> binary </span> </a> </li> <li class=md-nav__item> <a href=../binary_t/ class=md-nav__link> <span class=md-ellipsis> binary_t </span> </a> </li> <li class=md-nav__item> <a href=../boolean_t/ class=md-nav__link> <span class=md-ellipsis> boolean_t </span> </a> </li> <li class=md-nav__item> <a href=../cbegin/ class=md-nav__link> <span class=md-ellipsis> cbegin </span> </a> </li> <li class=md-nav__item> <a href=../cbor_tag_handler_t/ class=md-nav__link> <span class=md-ellipsis> cbor_tag_handler_t </span> </a> </li> <li class=md-nav__item> <a href=../cend/ class=md-nav__link> <span class=md-ellipsis> cend </span> </a> </li> <li class=md-nav__item> <a href=../clear/ class=md-nav__link> <span class=md-ellipsis> clear </span> </a> </li> <li class=md-nav__item> <a href=../contains/ class=md-nav__link> <span class=md-ellipsis> contains </span> </a> </li> <li class=md-nav__item> <a href=../count/ class=md-nav__link> <span class=md-ellipsis> count </span> </a> </li> <li class=md-nav__item> <a href=../crbegin/ class=md-nav__link> <span class=md-ellipsis> crbegin </span> </a> </li> <li class=md-nav__item> <a href=../crend/ class=md-nav__link> <span class=md-ellipsis> crend </span> </a> </li> <li class=md-nav__item> <a href=../default_object_comparator_t/ class=md-nav__link> <span class=md-ellipsis> default_object_comparator_t </span> </a> </li> <li class=md-nav__item> <a href=../diff/ class=md-nav__link> <span class=md-ellipsis> diff </span> </a> </li> <li class=md-nav__item> <a href=../dump/ class=md-nav__link> <span class=md-ellipsis> dump </span> </a> </li> <li class=md-nav__item> <a href=../emplace/ class=md-nav__link> <span class=md-ellipsis> emplace </span> </a> </li> <li class=md-nav__item> <a href=../emplace_back/ class=md-nav__link> <span class=md-ellipsis> emplace_back </span> </a> </li> <li class=md-nav__item> <a href=../empty/ class=md-nav__link> <span class=md-ellipsis> empty </span> </a> </li> <li class=md-nav__item> <a href=../end/ class=md-nav__link> <span class=md-ellipsis> end </span> </a> </li> <li class=md-nav__item> <a href=../end_pos/ class=md-nav__link> <span class=md-ellipsis> end_pos </span> </a> </li> <li class=md-nav__item> <a href=../erase/ class=md-nav__link> <span class=md-ellipsis> erase </span> </a> </li> <li class=md-nav__item> <a href=../error_handler_t/ class=md-nav__link> <span class=md-ellipsis> error_handler_t </span> </a> </li> <li class=md-nav__item> <a href=../exception/ class=md-nav__link> <span class=md-ellipsis> exception </span> </a> </li> <li class=md-nav__item> <a href=../find/ class=md-nav__link> <span class=md-ellipsis> find </span> </a> </li> <li class=md-nav__item> <a href=../flatten/ class=md-nav__link> <span class=md-ellipsis> flatten </span> </a> </li> <li class=md-nav__item> <a href=../from_bjdata/ class=md-nav__link> <span class=md-ellipsis> from_bjdata </span> </a> </li> <li class=md-nav__item> <a href=../from_bson/ class=md-nav__link> <span class=md-ellipsis> from_bson </span> </a> </li> <li class=md-nav__item> <a href=../from_cbor/ class=md-nav__link> <span class=md-ellipsis> from_cbor </span> </a> </li> <li class=md-nav__item> <a href=../from_msgpack/ class=md-nav__link> <span class=md-ellipsis> from_msgpack </span> </a> </li> <li class=md-nav__item> <a href=../from_ubjson/ class=md-nav__link> <span class=md-ellipsis> from_ubjson </span> </a> </li> <li class=md-nav__item> <a href=../front/ class=md-nav__link> <span class=md-ellipsis> front </span> </a> </li> <li class=md-nav__item> <a href=../get/ class=md-nav__link> <span class=md-ellipsis> get </span> </a> </li> <li class=md-nav__item> <a href=../get_allocator/ class=md-nav__link> <span class=md-ellipsis> get_allocator </span> </a> </li> <li class=md-nav__item> <a href=../get_binary/ class=md-nav__link> <span class=md-ellipsis> get_binary </span> </a> </li> <li class=md-nav__item> <a href=../get_ptr/ class=md-nav__link> <span class=md-ellipsis> get_ptr </span> </a> </li> <li class=md-nav__item> <a href=../get_ref/ class=md-nav__link> <span class=md-ellipsis> get_ref </span> </a> </li> <li class=md-nav__item> <a href=../get_to/ class=md-nav__link> <span class=md-ellipsis> get_to </span> </a> </li> <li class=md-nav__item> <a href=../std_hash/ class=md-nav__link> <span class=md-ellipsis> std::hash&lt;basic_json&gt; </span> </a> </li> <li class=md-nav__item> <a href=../input_format_t/ class=md-nav__link> <span class=md-ellipsis> input_format_t </span> </a> </li> <li class=md-nav__item> <a href=../insert/ class=md-nav__link> <span class=md-ellipsis> insert </span> </a> </li> <li class=md-nav__item> <a href=../invalid_iterator/ class=md-nav__link> <span class=md-ellipsis> invalid_iterator </span> </a> </li> <li class=md-nav__item> <a href=../is_array/ class=md-nav__link> <span class=md-ellipsis> is_array </span> </a> </li> <li class=md-nav__item> <a href=../is_binary/ class=md-nav__link> <span class=md-ellipsis> is_binary </span> </a> </li> <li class=md-nav__item> <a href=../is_boolean/ class=md-nav__link> <span class=md-ellipsis> is_boolean </span> </a> </li> <li class=md-nav__item> <a href=../is_discarded/ class=md-nav__link> <span class=md-ellipsis> is_discarded </span> </a> </li> <li class=md-nav__item> <a href=../is_null/ class=md-nav__link> <span class=md-ellipsis> is_null </span> </a> </li> <li class=md-nav__item> <a href=../is_number/ class=md-nav__link> <span class=md-ellipsis> is_number </span> </a> </li> <li class=md-nav__item> <a href=../is_number_float/ class=md-nav__link> <span class=md-ellipsis> is_number_float </span> </a> </li> <li class=md-nav__item> <a href=../is_number_integer/ class=md-nav__link> <span class=md-ellipsis> is_number_integer </span> </a> </li> <li class=md-nav__item> <a href=../is_number_unsigned/ class=md-nav__link> <span class=md-ellipsis> is_number_unsigned </span> </a> </li> <li class=md-nav__item> <a href=../is_object/ class=md-nav__link> <span class=md-ellipsis> is_object </span> </a> </li> <li class=md-nav__item> <a href=../is_primitive/ class=md-nav__link> <span class=md-ellipsis> is_primitive </span> </a> </li> <li class=md-nav__item> <a href=../is_string/ class=md-nav__link> <span class=md-ellipsis> is_string </span> </a> </li> <li class=md-nav__item> <a href=../is_structured/ class=md-nav__link> <span class=md-ellipsis> is_structured </span> </a> </li> <li class=md-nav__item> <a href=../items/ class=md-nav__link> <span class=md-ellipsis> items </span> </a> </li> <li class=md-nav__item> <a href=../json_base_class_t/ class=md-nav__link> <span class=md-ellipsis> json_base_class_t </span> </a> </li> <li class=md-nav__item> <a href=../json_serializer/ class=md-nav__link> <span class=md-ellipsis> json_serializer </span> </a> </li> <li class=md-nav__item> <a href=../max_size/ class=md-nav__link> <span class=md-ellipsis> max_size </span> </a> </li> <li class=md-nav__item> <a href=../meta/ class=md-nav__link> <span class=md-ellipsis> meta </span> </a> </li> <li class=md-nav__item> <a href=../merge_patch/ class=md-nav__link> <span class=md-ellipsis> merge_patch </span> </a> </li> <li class=md-nav__item> <a href=../number_float_t/ class=md-nav__link> <span class=md-ellipsis> number_float_t </span> </a> </li> <li class=md-nav__item> <a href=../number_integer_t/ class=md-nav__link> <span class=md-ellipsis> number_integer_t </span> </a> </li> <li class=md-nav__item> <a href=../number_unsigned_t/ class=md-nav__link> <span class=md-ellipsis> number_unsigned_t </span> </a> </li> <li class=md-nav__item> <a href=../object/ class=md-nav__link> <span class=md-ellipsis> object </span> </a> </li> <li class=md-nav__item> <a href=../object_comparator_t/ class=md-nav__link> <span class=md-ellipsis> object_comparator_t </span> </a> </li> <li class=md-nav__item> <a href=../object_t/ class=md-nav__link> <span class=md-ellipsis> object_t </span> </a> </li> <li class=md-nav__item> <a href=../operator_ValueType/ class=md-nav__link> <span class=md-ellipsis> operator ValueType </span> </a> </li> <li class=md-nav__item> <a href=../operator_value_t/ class=md-nav__link> <span class=md-ellipsis> operator value_t </span> </a> </li> <li class=md-nav__item> <a href=../operator%5B%5D/ class=md-nav__link> <span class=md-ellipsis> operator[] </span> </a> </li> <li class=md-nav__item> <a href=../operator%3D/ class=md-nav__link> <span class=md-ellipsis> operator= </span> </a> </li> <li class=md-nav__item> <a href=../operator%2B%3D/ class=md-nav__link> <span class=md-ellipsis> operator+= </span> </a> </li> <li class=md-nav__item> <a href=../operator_eq/ class=md-nav__link> <span class=md-ellipsis> operator== </span> </a> </li> <li class=md-nav__item> <a href=../operator_ne/ class=md-nav__link> <span class=md-ellipsis> operator!= </span> </a> </li> <li class=md-nav__item> <a href=../operator_lt/ class=md-nav__link> <span class=md-ellipsis> operator< </span> </a> </li> <li class=md-nav__item> <a href=../operator_gt/ class=md-nav__link> <span class=md-ellipsis> operator> </span> </a> </li> <li class=md-nav__item> <a href=../operator_le/ class=md-nav__link> <span class=md-ellipsis> operator<= </span> </a> </li> <li class=md-nav__item> <a href=../operator_ge/ class=md-nav__link> <span class=md-ellipsis> operator>= </span> </a> </li> <li class=md-nav__item> <a href=../operator_spaceship/ class=md-nav__link> <span class=md-ellipsis> operator<=> </span> </a> </li> <li class=md-nav__item> <a href=../out_of_range/ class=md-nav__link> <span class=md-ellipsis> out_of_range </span> </a> </li> <li class=md-nav__item> <a href=../other_error/ class=md-nav__link> <span class=md-ellipsis> other_error </span> </a> </li> <li class=md-nav__item> <a href=../parse/ class=md-nav__link> <span class=md-ellipsis> parse </span> </a> </li> <li class=md-nav__item> <a href=../parse_error/ class=md-nav__link> <span class=md-ellipsis> parse_error </span> </a> </li> <li class=md-nav__item> <a href=../parse_event_t/ class=md-nav__link> <span class=md-ellipsis> parse_event_t </span> </a> </li> <li class=md-nav__item> <a href=../parser_callback_t/ class=md-nav__link> <span class=md-ellipsis> parser_callback_t </span> </a> </li> <li class=md-nav__item> <a href=../patch/ class=md-nav__link> <span class=md-ellipsis> patch </span> </a> </li> <li class=md-nav__item> <a href=../patch_inplace/ class=md-nav__link> <span class=md-ellipsis> patch_inplace </span> </a> </li> <li class=md-nav__item> <a href=../push_back/ class=md-nav__link> <span class=md-ellipsis> push_back </span> </a> </li> <li class=md-nav__item> <a href=../rbegin/ class=md-nav__link> <span class=md-ellipsis> rbegin </span> </a> </li> <li class=md-nav__item> <a href=../rend/ class=md-nav__link> <span class=md-ellipsis> rend </span> </a> </li> <li class=md-nav__item> <a href=../sax_parse/ class=md-nav__link> <span class=md-ellipsis> sax_parse </span> </a> </li> <li class=md-nav__item> <a href=../size/ class=md-nav__link> <span class=md-ellipsis> size </span> </a> </li> <li class=md-nav__item> <a href=../start_pos/ class=md-nav__link> <span class=md-ellipsis> start_pos </span> </a> </li> <li class=md-nav__item> <a href=../string_t/ class=md-nav__link> <span class=md-ellipsis> string_t </span> </a> </li> <li class=md-nav__item> <a href=../swap/ class=md-nav__link> <span class=md-ellipsis> swap </span> </a> </li> <li class=md-nav__item> <a href=../std_swap/ class=md-nav__link> <span class=md-ellipsis> std::swap&lt;basic_json&gt; </span> </a> </li> <li class=md-nav__item> <a href=../to_bjdata/ class=md-nav__link> <span class=md-ellipsis> to_bjdata </span> </a> </li> <li class=md-nav__item> <a href=../to_bson/ class=md-nav__link> <span class=md-ellipsis> to_bson </span> </a> </li> <li class=md-nav__item> <a href=../to_cbor/ class=md-nav__link> <span class=md-ellipsis> to_cbor </span> </a> </li> <li class=md-nav__item> <a href=../to_msgpack/ class=md-nav__link> <span class=md-ellipsis> to_msgpack </span> </a> </li> <li class=md-nav__item> <a href=../to_string/ class=md-nav__link> <span class=md-ellipsis> to_string </span> </a> </li> <li class="md-nav__item md-nav__item--active"> <input class="md-nav__toggle md-toggle" type=checkbox id=__toc> <label class="md-nav__link md-nav__link--active" for=__toc> <span class=md-ellipsis> to_ubjson </span> <span class="md-nav__icon md-icon"></span> </label> <a href=./ class="md-nav__link md-nav__link--active"> <span class=md-ellipsis> to_ubjson </span> </a> <nav class="md-nav md-nav--secondary" aria-label="Table of contents"> <label class=md-nav__title for=__toc> <span class="md-nav__icon md-icon"></span> Table of contents </label> <ul class=md-nav__list data-md-component=toc data-md-scrollfix> <li class=md-nav__item> <a href=#parameters class=md-nav__link> <span class=md-ellipsis> Parameters </span> </a> </li> <li class=md-nav__item> <a href=#return-value class=md-nav__link> <span class=md-ellipsis> Return value </span> </a> </li> <li class=md-nav__item> <a href=#exception-safety class=md-nav__link> <span class=md-ellipsis> Exception safety </span> </a> </li> <li class=md-nav__item> <a href=#complexity class=md-nav__link> <span class=md-ellipsis> Complexity </span> </a> </li> <li class=md-nav__item> <a href=#examples class=md-nav__link> <span class=md-ellipsis> Examples </span> </a> </li> <li class=md-nav__item> <a href=#see-also class=md-nav__link> <span class=md-ellipsis> See also </span> </a> </li> <li class=md-nav__item> <a href=#version-history class=md-nav__link> <span class=md-ellipsis> Version history </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../type/ class=md-nav__link> <span class=md-ellipsis> type </span> </a> </li> <li class=md-nav__item> <a href=../type_error/ class=md-nav__link> <span class=md-ellipsis> type_error </span> </a> </li> <li class=md-nav__item> <a href=../type_name/ class=md-nav__link> <span class=md-ellipsis> type_name </span> </a> </li> <li class=md-nav__item> <a href=../unflatten/ class=md-nav__link> <span class=md-ellipsis> unflatten </span> </a> </li> <li class=md-nav__item> <a href=../update/ class=md-nav__link> <span class=md-ellipsis> update </span> </a> </li> <li class=md-nav__item> <a href=../value/ class=md-nav__link> <span class=md-ellipsis> value </span> </a> </li> <li class=md-nav__item> <a href=../value_t/ class=md-nav__link> <span class=md-ellipsis> value_t </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_2> <div class="md-nav__link md-nav__container"> <a href=../../byte_container_with_subtype/ class="md-nav__link "> <span class=md-ellipsis> byte_container_with_subtype </span> </a> <label class="md-nav__link " for=__nav_4_2 id=__nav_4_2_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_2_label aria-expanded=false> <label class=md-nav__title for=__nav_4_2> <span class="md-nav__icon md-icon"></span> byte_container_with_subtype </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../byte_container_with_subtype/byte_container_with_subtype/ class=md-nav__link> <span class=md-ellipsis> (constructor) </span> </a> </li> <li class=md-nav__item> <a href=../../byte_container_with_subtype/clear_subtype/ class=md-nav__link> <span class=md-ellipsis> clear_subtype </span> </a> </li> <li class=md-nav__item> <a href=../../byte_container_with_subtype/has_subtype/ class=md-nav__link> <span class=md-ellipsis> has_subtype </span> </a> </li> <li class=md-nav__item> <a href=../../byte_container_with_subtype/set_subtype/ class=md-nav__link> <span class=md-ellipsis> set_subtype </span> </a> </li> <li class=md-nav__item> <a href=../../byte_container_with_subtype/subtype/ class=md-nav__link> <span class=md-ellipsis> subtype </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_3> <div class="md-nav__link md-nav__container"> <a href=../../adl_serializer/ class="md-nav__link "> <span class=md-ellipsis> adl_serializer </span> </a> <label class="md-nav__link " for=__nav_4_3 id=__nav_4_3_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_3_label aria-expanded=false> <label class=md-nav__title for=__nav_4_3> <span class="md-nav__icon md-icon"></span> adl_serializer </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../adl_serializer/from_json/ class=md-nav__link> <span class=md-ellipsis> from_json </span> </a> </li> <li class=md-nav__item> <a href=../../adl_serializer/to_json/ class=md-nav__link> <span class=md-ellipsis> to_json </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../json/ class=md-nav__link> <span class=md-ellipsis> json </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_5> <div class="md-nav__link md-nav__container"> <a href=../../json_pointer/ class="md-nav__link "> <span class=md-ellipsis> json_pointer </span> </a> <label class="md-nav__link " for=__nav_4_5 id=__nav_4_5_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_5_label aria-expanded=false> <label class=md-nav__title for=__nav_4_5> <span class="md-nav__icon md-icon"></span> json_pointer </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../json_pointer/json_pointer/ class=md-nav__link> <span class=md-ellipsis> (Constructor) </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/back/ class=md-nav__link> <span class=md-ellipsis> back </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/empty/ class=md-nav__link> <span class=md-ellipsis> empty </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/front/ class=md-nav__link> <span class=md-ellipsis> front </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_string_t/ class=md-nav__link> <span class=md-ellipsis> operator string_t </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_eq/ class=md-nav__link> <span class=md-ellipsis> operator== </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_ne/ class=md-nav__link> <span class=md-ellipsis> operator!= </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_slash/ class=md-nav__link> <span class=md-ellipsis> operator/ </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_slasheq/ class=md-nav__link> <span class=md-ellipsis> operator/= </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/parent_pointer/ class=md-nav__link> <span class=md-ellipsis> parent_pointer </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/pop_back/ class=md-nav__link> <span class=md-ellipsis> pop_back </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/pop_front/ class=md-nav__link> <span class=md-ellipsis> pop_front </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/push_back/ class=md-nav__link> <span class=md-ellipsis> push_back </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/push_front/ class=md-nav__link> <span class=md-ellipsis> push_front </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/string_t/ class=md-nav__link> <span class=md-ellipsis> string_t </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/to_string/ class=md-nav__link> <span class=md-ellipsis> to_string </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_6> <div class="md-nav__link md-nav__container"> <a href=../../json_sax/ class="md-nav__link "> <span class=md-ellipsis> json_sax </span> </a> <label class="md-nav__link " for=__nav_4_6 id=__nav_4_6_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_6_label aria-expanded=false> <label class=md-nav__title for=__nav_4_6> <span class="md-nav__icon md-icon"></span> json_sax </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../json_sax/binary/ class=md-nav__link> <span class=md-ellipsis> binary </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/boolean/ class=md-nav__link> <span class=md-ellipsis> boolean </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/end_array/ class=md-nav__link> <span class=md-ellipsis> end_array </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/end_object/ class=md-nav__link> <span class=md-ellipsis> end_object </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/key/ class=md-nav__link> <span class=md-ellipsis> key </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/null/ class=md-nav__link> <span class=md-ellipsis> null </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/number_float/ class=md-nav__link> <span class=md-ellipsis> number_float </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/number_integer/ class=md-nav__link> <span class=md-ellipsis> number_integer </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/number_unsigned/ class=md-nav__link> <span class=md-ellipsis> number_unsigned </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/parse_error/ class=md-nav__link> <span class=md-ellipsis> parse_error </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/start_array/ class=md-nav__link> <span class=md-ellipsis> start_array </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/start_object/ class=md-nav__link> <span class=md-ellipsis> start_object </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/string/ class=md-nav__link> <span class=md-ellipsis> string </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../operator_ltlt/ class=md-nav__link> <span class=md-ellipsis> operator<<(basic_json), operator<<(json_pointer) </span> </a> </li> <li class=md-nav__item> <a href=../../operator_gtgt/ class=md-nav__link> <span class=md-ellipsis> operator>>(basic_json) </span> </a> </li> <li class=md-nav__item> <a href=../../operator_literal_json/ class=md-nav__link> <span class=md-ellipsis> operator""_json </span> </a> </li> <li class=md-nav__item> <a href=../../operator_literal_json_pointer/ class=md-nav__link> <span class=md-ellipsis> operator""_json_pointer </span> </a> </li> <li class=md-nav__item> <a href=../../ordered_json/ class=md-nav__link> <span class=md-ellipsis> ordered_json </span> </a> </li> <li class=md-nav__item> <a href=../../ordered_map/ class=md-nav__link> <span class=md-ellipsis> ordered_map </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_13> <div class="md-nav__link md-nav__container"> <a href=../../macros/ class="md-nav__link "> <span class=md-ellipsis> macros </span> </a> <label class="md-nav__link " for=__nav_4_13 id=__nav_4_13_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_13_label aria-expanded=false> <label class=md-nav__title for=__nav_4_13> <span class="md-nav__icon md-icon"></span> macros </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../macros/json_assert/ class=md-nav__link> <span class=md-ellipsis> JSON_ASSERT </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_brace_init_copy_semantics/ class=md-nav__link> <span class=md-ellipsis> JSON_BRACE_INIT_COPY_SEMANTICS </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_throw_user/ class=md-nav__link> <span class=md-ellipsis> JSON_CATCH_USER, JSON_THROW_USER, JSON_TRY_USER </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_diagnostics/ class=md-nav__link> <span class=md-ellipsis> JSON_DIAGNOSTICS </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_diagnostic_positions/ class=md-nav__link> <span class=md-ellipsis> JSON_DIAGNOSTIC_POSITIONS </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_disable_enum_serialization/ class=md-nav__link> <span class=md-ellipsis> JSON_DISABLE_ENUM_SERIALIZATION </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_has_cpp_11/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_CPP_11, JSON_HAS_CPP_14, JSON_HAS_CPP_17, JSON_HAS_CPP_20 </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_has_filesystem/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_EXPERIMENTAL_FILESYSTEM, JSON_HAS_FILESYSTEM </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_has_ranges/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_RANGES </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_has_static_rtti/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_STATIC_RTTI </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_has_three_way_comparison/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_THREE_WAY_COMPARISON </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_noexception/ class=md-nav__link> <span class=md-ellipsis> JSON_NOEXCEPTION </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_no_io/ class=md-nav__link> <span class=md-ellipsis> JSON_NO_IO </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_skip_library_version_check/ class=md-nav__link> <span class=md-ellipsis> JSON_SKIP_LIBRARY_VERSION_CHECK </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_skip_unsupported_compiler_check/ class=md-nav__link> <span class=md-ellipsis> JSON_SKIP_UNSUPPORTED_COMPILER_CHECK </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_use_global_udls/ class=md-nav__link> <span class=md-ellipsis> JSON_USE_GLOBAL_UDLS </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_use_implicit_conversions/ class=md-nav__link> <span class=md-ellipsis> JSON_USE_IMPLICIT_CONVERSIONS </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_use_legacy_discarded_value_comparison/ class=md-nav__link> <span class=md-ellipsis> JSON_USE_LEGACY_DISCARDED_VALUE_COMPARISON </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_define_derived_type/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_ONLY_SERIALIZE, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_define_type_intrusive/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_TYPE_INTRUSIVE, NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_TYPE_INTRUSIVE_ONLY_SERIALIZE </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_define_type_non_intrusive/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_define_type_with_names/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_TYPE_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_namespace/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_NAMESPACE </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_namespace_begin/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_NAMESPACE_BEGIN, NLOHMANN_JSON_NAMESPACE_END </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_namespace_no_version/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_NAMESPACE_NO_VERSION </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_serialize_enum/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_SERIALIZE_ENUM </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_serialize_enum_strict/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_SERIALIZE_ENUM_STRICT </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_version_major/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_VERSION_MAJOR, NLOHMANN_JSON_VERSION_MINOR, NLOHMANN_JSON_VERSION_PATCH </span> </a> </li> </ul> </nav> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_5> <div class="md-nav__link md-nav__container"> <a href=../../../community/ class="md-nav__link "> <span class=md-ellipsis> Community </span> </a> <label class="md-nav__link " for=__nav_5 id=__nav_5_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_5_label aria-expanded=false> <label class=md-nav__title for=__nav_5> <span class="md-nav__icon md-icon"></span> Community </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../community/code_of_conduct/ class=md-nav__link> <span class=md-ellipsis> Code of Conduct </span> </a> </li> <li class=md-nav__item> <a href=../../../community/contribution_guidelines/ class=md-nav__link> <span class=md-ellipsis> Contribution Guidelines </span> </a> </li> <li class=md-nav__item> <a href=../../../community/quality_assurance/ class=md-nav__link> <span class=md-ellipsis> Quality assurance </span> </a> </li> <li class=md-nav__item> <a href=../../../community/governance/ class=md-nav__link> <span class=md-ellipsis> Governance </span> </a> </li> <li class=md-nav__item> <a href=../../../community/security_policy/ class=md-nav__link> <span class=md-ellipsis> Security Policy </span> </a> </li> </ul> </nav> </li> </ul> </nav> </div> </div> </div> <div class="md-sidebar md-sidebar--secondary" data-md-component=sidebar data-md-type=toc> <div class=md-sidebar__scrollwrap> <div class=md-sidebar__inner> <nav class="md-nav md-nav--secondary" aria-label="Table of contents"> <label class=md-nav__title for=__toc> <span class="md-nav__icon md-icon"></span> Table of contents </label> <ul class=md-nav__list data-md-component=toc data-md-scrollfix> <li class=md-nav__item> <a href=#parameters class=md-nav__link> <span class=md-ellipsis> Parameters </span> </a> </li> <li class=md-nav__item> <a href=#return-value class=md-nav__link> <span class=md-ellipsis> Return value </span> </a> </li> <li class=md-nav__item> <a href=#exception-safety class=md-nav__link> <span class=md-ellipsis> Exception safety </span> </a> </li> <li class=md-nav__item> <a href=#complexity class=md-nav__link> <span class=md-ellipsis> Complexity </span> </a> </li> <li class=md-nav__item> <a href=#examples class=md-nav__link> <span class=md-ellipsis> Examples </span> </a> </li> <li class=md-nav__item> <a href=#see-also class=md-nav__link> <span class=md-ellipsis> See also </span> </a> </li> <li class=md-nav__item> <a href=#version-history class=md-nav__link> <span class=md-ellipsis> Version history </span> </a> </li> </ul> </nav> </div> </div> </div> <div class=md-content data-md-component=content> <article class="md-content__inner md-typeset"> <a href="https://github.com/nlohmann/json/edit/develop/docs/mkdocs/docs/api/basic_json/to_ubjson.md" title="Edit this page" class="md-content__button md-icon" rel="edit"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M10 20H6V4h7v5h5v3.1l2-2V8l-6-6H6c-1.1 0-2 .9-2 2v16c0 1.1.9 2 2 2h4zm10.2-7c.1 0 .3.1.4.2l1.3 1.3c.2.2.2.6 0 .8l-1 1-2.1-2.1 1-1c.1-.1.2-.2.4-.2m0 3.9L14.1 23H12v-2.1l6.1-6.1z"/></svg> </a> <a href="https://github.com/nlohmann/json/raw/develop/docs/mkdocs/docs/api/basic_json/to_ubjson.md" title="View source of this page" class="md-content__button md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M17 18c.56 0 1 .44 1 1s-.44 1-1 1-1-.44-1-1 .44-1 1-1m0-3c-2.73 0-5.06 1.66-6 4 .94 2.34 3.27 4 6 4s5.06-1.66 6-4c-.94-2.34-3.27-4-6-4m0 6.5a2.5 2.5 0 0 1-2.5-2.5 2.5 2.5 0 0 1 2.5-2.5 2.5 2.5 0 0 1 2.5 2.5 2.5 2.5 0 0 1-2.5 2.5M9.27 20H6V4h7v5h5v4.07c.7.08 1.36.25 2 .49V8l-6-6H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h4.5a8.2 8.2 0 0 1-1.23-2"/></svg> </a> <h1 id=nlohmannbasic_jsonto_ubjson><small>nlohmann::basic_json::</small>to_ubjson<a class=headerlink href=#nlohmannbasic_jsonto_ubjson title="Permanent link">&para;</a></h1> <div class=highlight><pre><span></span><code><span class=c1>// (1)</span>
 <span class=k>static</span><span class=w> </span><span class=n>std</span><span class=o>::</span><span class=n>vector</span><span class=o>&lt;</span><span class=n>std</span><span class=o>::</span><span class=kt>uint8_t</span><span class=o>&gt;</span><span class=w> </span><span class=n>to_ubjson</span><span class=p>(</span><span class=k>const</span><span class=w> </span><span class=n>basic_json</span><span class=o>&amp;</span><span class=w> </span><span class=n>j</span><span class=p>,</span>
 <span class=w>                                           </span><span class=k>const</span><span class=w> </span><span class=kt>bool</span><span class=w> </span><span class=n>use_size</span><span class=w> </span><span class=o>=</span><span class=w> </span><span class=nb>false</span><span class=p>,</span>
 <span class=w>                                           </span><span class=k>const</span><span class=w> </span><span class=kt>bool</span><span class=w> </span><span class=n>use_type</span><span class=w> </span><span class=o>=</span><span class=w> </span><span class=nb>false</span><span class=p>);</span>
@@ -76,4 +76,4 @@
 <span class=p>[</span><span class=err>i</span><span class=mi>1</span><span class=err>i</span><span class=mi>2</span><span class=err>i</span><span class=mi>3</span><span class=err>i</span><span class=mi>4</span><span class=err>i</span><span class=mi>5</span><span class=err>i</span><span class=mi>6</span><span class=err>i</span><span class=mi>7</span><span class=err>i</span><span class=mi>8</span><span class=p>]</span>
 <span class=p>[</span><span class=err>#i</span><span class=mi>8</span><span class=err>i</span><span class=mi>1</span><span class=err>i</span><span class=mi>2</span><span class=err>i</span><span class=mi>3</span><span class=err>i</span><span class=mi>4</span><span class=err>i</span><span class=mi>5</span><span class=err>i</span><span class=mi>6</span><span class=err>i</span><span class=mi>7</span><span class=err>i</span><span class=mi>8</span>
 <span class=p>[</span><span class=err>$i#i</span><span class=mi>812345678</span>
-</code></pre></div> </details> <h2 id=version-history>Version history<a class=headerlink href=#version-history title="Permanent link">&para;</a></h2> <ul> <li>Added in version 3.1.0.</li> </ul> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 23, 2026 11:16:18 UTC">June 23, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
+</code></pre></div> </details> <h2 id=see-also>See also<a class=headerlink href=#see-also title="Permanent link">&para;</a></h2> <ul> <li><a href=../from_ubjson/ >from_ubjson</a> create a <abbr title="JavaScript Object Notation">JSON</abbr> value from an input in <abbr title="Universal Binary JSON">UBJSON</abbr> format</li> <li><a href=../to_cbor/ >to_cbor</a> create a <abbr title="Concise Binary Object Representation">CBOR</abbr> serialization of a <abbr title="JavaScript Object Notation">JSON</abbr> value</li> <li><a href=../to_msgpack/ >to_msgpack</a> create a MessagePack serialization of a <abbr title="JavaScript Object Notation">JSON</abbr> value</li> <li><a href=../to_bson/ >to_bson</a> create a <abbr title="Binary JSON">BSON</abbr> serialization of a <abbr title="JavaScript Object Notation">JSON</abbr> value</li> <li><a href=../to_bjdata/ >to_bjdata</a> create a <abbr title="Binary JData">BJData</abbr> serialization of a <abbr title="JavaScript Object Notation">JSON</abbr> value</li> </ul> <h2 id=version-history>Version history<a class=headerlink href=#version-history title="Permanent link">&para;</a></h2> <ul> <li>Added in version 3.1.0.</li> </ul> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 29, 2026 20:15:18 UTC">June 29, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
diff --git a/api/basic_json/type/index.html b/api/basic_json/type/index.html
index e756699..a603bfb 100644
--- a/api/basic_json/type/index.html
+++ b/api/basic_json/type/index.html
@@ -35,4 +35,4 @@
 <span class=kc>true</span>
 <span class=kc>true</span>
 <span class=kc>true</span>
-</code></pre></div> </details> <h2 id=version-history>Version history<a class=headerlink href=#version-history title="Permanent link">&para;</a></h2> <ul> <li>Added in version 1.0.0.</li> <li>Added unsigned integer type in version 2.0.0.</li> <li>Added binary type in version 3.8.0.</li> </ul> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 23, 2026 11:16:18 UTC">June 23, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
+</code></pre></div> </details> <h2 id=version-history>Version history<a class=headerlink href=#version-history title="Permanent link">&para;</a></h2> <ul> <li>Added in version 1.0.0.</li> <li>Added unsigned integer type in version 2.0.0.</li> <li>Added binary type in version 3.8.0.</li> </ul> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 29, 2026 20:15:18 UTC">June 29, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
diff --git a/api/basic_json/type_error/index.html b/api/basic_json/type_error/index.html
index 352051c..7c133a6 100644
--- a/api/basic_json/type_error/index.html
+++ b/api/basic_json/type_error/index.html
@@ -49,4 +49,4 @@
 <span class=p>}</span>
 </code></pre></div> <p>Output:</p> <div class=highlight><pre><span></span><code><span class=err>message</span><span class=p>:</span><span class=w> </span><span class=p>[</span><span class=err>jso</span><span class=kc>n</span><span class=err>.excep</span><span class=kc>t</span><span class=err>io</span><span class=kc>n</span><span class=err>.</span><span class=kc>t</span><span class=err>ype_error.</span><span class=mi>308</span><span class=p>]</span><span class=w> </span><span class=err>ca</span><span class=kc>nn</span><span class=err>o</span><span class=kc>t</span><span class=w> </span><span class=err>use</span><span class=w> </span><span class=err>push_back()</span><span class=w> </span><span class=err>wi</span><span class=kc>t</span><span class=err>h</span><span class=w> </span><span class=err>s</span><span class=kc>tr</span><span class=err>i</span><span class=kc>n</span><span class=err>g</span>
 <span class=err>excep</span><span class=kc>t</span><span class=err>io</span><span class=kc>n</span><span class=w> </span><span class=err>id</span><span class=p>:</span><span class=w> </span><span class=mi>308</span>
-</code></pre></div> </details> <h2 id=see-also>See also<a class=headerlink href=#see-also title="Permanent link">&para;</a></h2> <ul> <li><a href=../../../home/exceptions/#type-errors>List of type errors</a></li> <li><a href=../parse_error/ ><code>parse_error</code></a> for exceptions indicating a parse error</li> <li><a href=../invalid_iterator/ ><code>invalid_iterator</code></a> for exceptions indicating errors with iterators</li> <li><a href=../out_of_range/ ><code>out_of_range</code></a> for exceptions indicating access out of the defined range</li> <li><a href=../other_error/ ><code>other_error</code></a> for exceptions indicating other library errors</li> </ul> <h2 id=version-history>Version history<a class=headerlink href=#version-history title="Permanent link">&para;</a></h2> <ul> <li>Since version 3.0.0.</li> </ul> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 23, 2026 11:16:18 UTC">June 23, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
+</code></pre></div> </details> <h2 id=see-also>See also<a class=headerlink href=#see-also title="Permanent link">&para;</a></h2> <ul> <li><a href=../exception/ ><code>exception</code></a> for the base class of all exceptions thrown by the library</li> <li><a href=../../../home/exceptions/#type-errors>List of type errors</a></li> <li><a href=../parse_error/ ><code>parse_error</code></a> for exceptions indicating a parse error</li> <li><a href=../invalid_iterator/ ><code>invalid_iterator</code></a> for exceptions indicating errors with iterators</li> <li><a href=../out_of_range/ ><code>out_of_range</code></a> for exceptions indicating access out of the defined range</li> <li><a href=../other_error/ ><code>other_error</code></a> for exceptions indicating other library errors</li> </ul> <h2 id=version-history>Version history<a class=headerlink href=#version-history title="Permanent link">&para;</a></h2> <ul> <li>Since version 3.0.0.</li> </ul> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 29, 2026 20:15:18 UTC">June 29, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
diff --git a/api/basic_json/type_name/index.html b/api/basic_json/type_name/index.html
index 48aff22..f439045 100644
--- a/api/basic_json/type_name/index.html
+++ b/api/basic_json/type_name/index.html
@@ -34,4 +34,4 @@
 <span class=p>{</span><span class=nt>&quot;one&quot;</span><span class=p>:</span><span class=mi>1</span><span class=p>,</span><span class=nt>&quot;two&quot;</span><span class=p>:</span><span class=mi>2</span><span class=p>}</span><span class=w> </span><span class=err>is</span><span class=w> </span><span class=err>a</span><span class=kc>n</span><span class=w> </span><span class=err>objec</span><span class=kc>t</span>
 <span class=p>[</span><span class=mi>1</span><span class=p>,</span><span class=mi>2</span><span class=p>,</span><span class=mi>4</span><span class=p>,</span><span class=mi>8</span><span class=p>,</span><span class=mi>16</span><span class=p>]</span><span class=w> </span><span class=err>is</span><span class=w> </span><span class=err>a</span><span class=kc>n</span><span class=w> </span><span class=err>array</span>
 <span class=s2>&quot;Hello, world&quot;</span><span class=w> </span><span class=err>is</span><span class=w> </span><span class=err>a</span><span class=w> </span><span class=err>s</span><span class=kc>tr</span><span class=err>i</span><span class=kc>n</span><span class=err>g</span>
-</code></pre></div> </details> <h2 id=version-history>Version history<a class=headerlink href=#version-history title="Permanent link">&para;</a></h2> <ul> <li>Added in version 1.0.0.</li> <li>Part of the public <abbr title="Application Programming Interfaces">API</abbr> version since 2.1.0.</li> <li>Changed return value to <code>const char*</code> and added <code>noexcept</code> in version 3.0.0.</li> <li>Added support for binary type in version 3.8.0.</li> </ul> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 23, 2026 11:16:18 UTC">June 23, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
+</code></pre></div> </details> <h2 id=version-history>Version history<a class=headerlink href=#version-history title="Permanent link">&para;</a></h2> <ul> <li>Added in version 1.0.0.</li> <li>Part of the public <abbr title="Application Programming Interfaces">API</abbr> version since 2.1.0.</li> <li>Changed return value to <code>const char*</code> and added <code>noexcept</code> in version 3.0.0.</li> <li>Added support for binary type in version 3.8.0.</li> </ul> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 29, 2026 20:15:18 UTC">June 29, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
diff --git a/api/basic_json/unflatten/index.html b/api/basic_json/unflatten/index.html
index 21ced55..e1d013f 100644
--- a/api/basic_json/unflatten/index.html
+++ b/api/basic_json/unflatten/index.html
@@ -1,5 +1,5 @@
 <!doctype html><html lang=en class=no-js> <head><meta charset=utf-8><meta name=viewport content="width=device-width,initial-scale=1"><meta name=author content="Niels Lohmann"><link href="https://json.nlohmann.me/api/basic_json/unflatten/" rel="canonical"><link href=../type_name/ rel=prev><link href=../update/ rel=next><link rel=icon href=../../../assets/images/favicon.png><meta name=generator content="mkdocs-1.6.1, mkdocs-material-9.7.6"><title>unflatten - JSON for Modern C++</title><link rel=stylesheet href=../../../assets/stylesheets/main.484c7ddc.min.css><link rel=stylesheet href=../../../assets/stylesheets/palette.ab4e12ef.min.css><link rel="stylesheet" href="../../../assets/external/fonts.googleapis.com/css.61a430c9.css"><style>:root{--md-text-font:"Roboto";--md-code-font:"JetBrains Mono"}</style><link rel=stylesheet href=../../../css/custom.css><script>__md_scope=new URL("../../..",location),__md_hash=e=>[...e].reduce(((e,_)=>(e<<5)-e+_.charCodeAt(0)),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script></head> <body dir=ltr data-md-color-scheme=default data-md-color-primary=indigo data-md-color-accent=indigo> <input class=md-toggle data-md-toggle=drawer type=checkbox id=__drawer autocomplete=off> <input class=md-toggle data-md-toggle=search type=checkbox id=__search autocomplete=off> <label class=md-overlay for=__drawer></label> <div data-md-component=skip> <a href=#nlohmannbasic_jsonunflatten class=md-skip> Skip to content </a> </div> <div data-md-component=announce> </div> <header class=md-header data-md-component=header> <nav class="md-header__inner md-grid" aria-label=Header> <a href=../../.. title="JSON for Modern C++" class="md-header__button md-logo" aria-label="JSON for Modern C++" data-md-component=logo> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54"/></svg> </a> <label class="md-header__button md-icon" for=__drawer> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M3 6h18v2H3zm0 5h18v2H3zm0 5h18v2H3z"/></svg> </label> <div class=md-header__title data-md-component=header-title> <div class=md-header__ellipsis> <div class=md-header__topic> <span class=md-ellipsis> JSON for Modern C++ </span> </div> <div class=md-header__topic data-md-component=header-topic> <span class=md-ellipsis> unflatten </span> </div> </div> </div> <form class=md-header__option data-md-component=palette> <input class=md-option data-md-color-media="(prefers-color-scheme: light)" data-md-color-scheme=default data-md-color-primary=indigo data-md-color-accent=indigo aria-label="Switch to dark mode" type=radio name=__palette id=__palette_0> <label class="md-header__button md-icon" title="Switch to dark mode" for=__palette_1 hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a4 4 0 0 0-4 4 4 4 0 0 0 4 4 4 4 0 0 0 4-4 4 4 0 0 0-4-4m0 10a6 6 0 0 1-6-6 6 6 0 0 1 6-6 6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12z"/></svg> </label> <input class=md-option data-md-color-media="(prefers-color-scheme: dark)" data-md-color-scheme=slate data-md-color-primary=indigo data-md-color-accent=indigo aria-label="Switch to light mode" type=radio name=__palette id=__palette_1> <label class="md-header__button md-icon" title="Switch to light mode" for=__palette_0 hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 18c-.89 0-1.74-.2-2.5-.55C11.56 16.5 13 14.42 13 12s-1.44-4.5-3.5-5.45C10.26 6.2 11.11 6 12 6a6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12z"/></svg> </label> </form> <script>var palette=__md_get("__palette");if(palette&&palette.color){if("(prefers-color-scheme)"===palette.color.media){var media=matchMedia("(prefers-color-scheme: light)"),input=document.querySelector(media.matches?"[data-md-color-media='(prefers-color-scheme: light)']":"[data-md-color-media='(prefers-color-scheme: dark)']");palette.color.media=input.getAttribute("data-md-color-media"),palette.color.scheme=input.getAttribute("data-md-color-scheme"),palette.color.primary=input.getAttribute("data-md-color-primary"),palette.color.accent=input.getAttribute("data-md-color-accent")}for(var[key,value]of Object.entries(palette.color))document.body.setAttribute("data-md-color-"+key,value)}</script> <label class="md-header__button md-icon" for=__search> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg> </label> <div class=md-search data-md-component=search role=dialog> <label class=md-search__overlay for=__search></label> <div class=md-search__inner role=search> <form class=md-search__form name=search> <input type=text class=md-search__input name=query aria-label=Search placeholder=Search autocapitalize=off autocorrect=off autocomplete=off spellcheck=false data-md-component=search-query required> <label class="md-search__icon md-icon" for=__search> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11z"/></svg> </label> <nav class=md-search__options aria-label=Search> <button type=reset class="md-search__icon md-icon" title=Clear aria-label=Clear tabindex=-1> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z"/></svg> </button> </nav> </form> <div class=md-search__output> <div class=md-search__scrollwrap tabindex=0 data-md-scrollfix> <div class=md-search-result data-md-component=search-result> <div class=md-search-result__meta> Initializing search </div> <ol class=md-search-result__list role=presentation></ol> </div> </div> </div> </div> </div> <div class=md-header__source> <a href="https://github.com/nlohmann/json" title="Go to repository" class="md-source" data-md-component="source"> <div class="md-source__icon md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </div> <div class=md-source__repository> nlohmann/json </div> </a> </div> </nav> </header> <div class=md-container data-md-component=container> <nav class=md-tabs aria-label=Tabs data-md-component=tabs> <div class=md-grid> <ul class=md-tabs__list> <li class=md-tabs__item> <a href=../../.. class=md-tabs__link> Home </a> </li> <li class=md-tabs__item> <a href=../../../features/arbitrary_types/ class=md-tabs__link> Features </a> </li> <li class=md-tabs__item> <a href=../../../integration/ class=md-tabs__link> Integration </a> </li> <li class="md-tabs__item md-tabs__item--active"> <a href=../ class=md-tabs__link> API Documentation </a> </li> <li class=md-tabs__item> <a href=../../../community/ class=md-tabs__link> Community </a> </li> </ul> </div> </nav> <main class=md-main data-md-component=main> <div class="md-main__inner md-grid"> <div class="md-sidebar md-sidebar--primary" data-md-component=sidebar data-md-type=navigation> <div class=md-sidebar__scrollwrap> <div class=md-sidebar__inner> <nav class="md-nav md-nav--primary md-nav--lifted" aria-label=Navigation data-md-level=0> <label class=md-nav__title for=__drawer> <a href=../../.. title="JSON for Modern C++" class="md-nav__button md-logo" aria-label="JSON for Modern C++" data-md-component=logo> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54"/></svg> </a> JSON for Modern C++ </label> <div class=md-nav__source> <a href="https://github.com/nlohmann/json" title="Go to repository" class="md-source" data-md-component="source"> <div class="md-source__icon md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </div> <div class=md-source__repository> nlohmann/json </div> </a> </div> <ul class=md-nav__list data-md-scrollfix> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_1> <div class="md-nav__link md-nav__container"> <a href=../../.. class="md-nav__link "> <span class=md-ellipsis> Home </span> </a> <label class="md-nav__link " for=__nav_1 id=__nav_1_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_1_label aria-expanded=false> <label class=md-nav__title for=__nav_1> <span class="md-nav__icon md-icon"></span> Home </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../home/license/ class=md-nav__link> <span class=md-ellipsis> License </span> </a> </li> <li class=md-nav__item> <a href=../../../home/faq/ class=md-nav__link> <span class=md-ellipsis> FAQ </span> </a> </li> <li class=md-nav__item> <a href=../../../home/exceptions/ class=md-nav__link> <span class=md-ellipsis> Exceptions </span> </a> </li> <li class=md-nav__item> <a href=../../../home/releases/ class=md-nav__link> <span class=md-ellipsis> Releases </span> </a> </li> <li class=md-nav__item> <a href=../../../home/design_goals/ class=md-nav__link> <span class=md-ellipsis> Design goals </span> </a> </li> <li class=md-nav__item> <a href=../../../home/architecture/ class=md-nav__link> <span class=md-ellipsis> Architecture </span> </a> </li> <li class=md-nav__item> <a href=../../../home/customers/ class=md-nav__link> <span class=md-ellipsis> Customers </span> </a> </li> <li class=md-nav__item> <a href=../../../home/sponsors/ class=md-nav__link> <span class=md-ellipsis> Sponsors </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2> <label class=md-nav__link for=__nav_2 id=__nav_2_label tabindex=0> <span class=md-ellipsis> Features </span> <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_2_label aria-expanded=false> <label class=md-nav__title for=__nav_2> <span class="md-nav__icon md-icon"></span> Features </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/arbitrary_types/ class=md-nav__link> <span class=md-ellipsis> Arbitrary Type Conversions </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_2> <div class="md-nav__link md-nav__container"> <a href=../../../features/binary_formats/ class="md-nav__link "> <span class=md-ellipsis> Binary Formats </span> </a> <label class="md-nav__link " for=__nav_2_2 id=__nav_2_2_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_2_label aria-expanded=false> <label class=md-nav__title for=__nav_2_2> <span class="md-nav__icon md-icon"></span> Binary Formats </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/binary_formats/bjdata/ class=md-nav__link> <span class=md-ellipsis> BJData </span> </a> </li> <li class=md-nav__item> <a href=../../../features/binary_formats/bson/ class=md-nav__link> <span class=md-ellipsis> BSON </span> </a> </li> <li class=md-nav__item> <a href=../../../features/binary_formats/cbor/ class=md-nav__link> <span class=md-ellipsis> CBOR </span> </a> </li> <li class=md-nav__item> <a href=../../../features/binary_formats/messagepack/ class=md-nav__link> <span class=md-ellipsis> MessagePack </span> </a> </li> <li class=md-nav__item> <a href=../../../features/binary_formats/ubjson/ class=md-nav__link> <span class=md-ellipsis> UBJSON </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../../features/binary_values/ class=md-nav__link> <span class=md-ellipsis> Binary Values </span> </a> </li> <li class=md-nav__item> <a href=../../../features/comments/ class=md-nav__link> <span class=md-ellipsis> Comments </span> </a> </li> <li class=md-nav__item> <a href=../../../features/trailing_commas/ class=md-nav__link> <span class=md-ellipsis> Trailing Commas </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_6> <div class="md-nav__link md-nav__container"> <a href=../../../features/element_access/ class="md-nav__link "> <span class=md-ellipsis> Element Access </span> </a> <label class="md-nav__link " for=__nav_2_6 id=__nav_2_6_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_6_label aria-expanded=false> <label class=md-nav__title for=__nav_2_6> <span class="md-nav__icon md-icon"></span> Element Access </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/element_access/unchecked_access/ class=md-nav__link> <span class=md-ellipsis> Unchecked access: operator[] </span> </a> </li> <li class=md-nav__item> <a href=../../../features/element_access/checked_access/ class=md-nav__link> <span class=md-ellipsis> Checked access: at </span> </a> </li> <li class=md-nav__item> <a href=../../../features/element_access/default_value/ class=md-nav__link> <span class=md-ellipsis> Access with default value: value </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../../features/iterators/ class=md-nav__link> <span class=md-ellipsis> Iterators </span> </a> </li> <li class=md-nav__item> <a href=../../../features/json_pointer/ class=md-nav__link> <span class=md-ellipsis> JSON Pointer </span> </a> </li> <li class=md-nav__item> <a href=../../../features/json_patch/ class=md-nav__link> <span class=md-ellipsis> JSON Patch and Diff </span> </a> </li> <li class=md-nav__item> <a href=../../../features/merge_patch/ class=md-nav__link> <span class=md-ellipsis> JSON Merge Patch </span> </a> </li> <li class=md-nav__item> <a href=../../../features/modules/ class=md-nav__link> <span class=md-ellipsis> Modules </span> </a> </li> <li class=md-nav__item> <a href=../../../features/namespace/ class=md-nav__link> <span class=md-ellipsis> nlohmann Namespace </span> </a> </li> <li class=md-nav__item> <a href=../../../features/object_order/ class=md-nav__link> <span class=md-ellipsis> Object Order </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_14> <div class="md-nav__link md-nav__container"> <a href=../../../features/parsing/ class="md-nav__link "> <span class=md-ellipsis> Parsing </span> </a> <label class="md-nav__link " for=__nav_2_14 id=__nav_2_14_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_14_label aria-expanded=false> <label class=md-nav__title for=__nav_2_14> <span class="md-nav__icon md-icon"></span> Parsing </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/parsing/json_lines/ class=md-nav__link> <span class=md-ellipsis> JSON Lines </span> </a> </li> <li class=md-nav__item> <a href=../../../features/parsing/parse_exceptions/ class=md-nav__link> <span class=md-ellipsis> Parsing and Exceptions </span> </a> </li> <li class=md-nav__item> <a href=../../../features/parsing/parser_callbacks/ class=md-nav__link> <span class=md-ellipsis> Parser Callbacks </span> </a> </li> <li class=md-nav__item> <a href=../../../features/parsing/sax_interface/ class=md-nav__link> <span class=md-ellipsis> SAX Interface </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../../features/assertions/ class=md-nav__link> <span class=md-ellipsis> Runtime Assertions </span> </a> </li> <li class=md-nav__item> <a href=../../../features/enum_conversion/ class=md-nav__link> <span class=md-ellipsis> Specializing enum conversion </span> </a> </li> <li class=md-nav__item> <a href=../../../features/macros/ class=md-nav__link> <span class=md-ellipsis> Supported Macros </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_18> <div class="md-nav__link md-nav__container"> <a href=../../../features/types/ class="md-nav__link "> <span class=md-ellipsis> Types </span> </a> <label class="md-nav__link " for=__nav_2_18 id=__nav_2_18_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_18_label aria-expanded=false> <label class=md-nav__title for=__nav_2_18> <span class="md-nav__icon md-icon"></span> Types </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/types/number_handling/ class=md-nav__link> <span class=md-ellipsis> Number Handling </span> </a> </li> </ul> </nav> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_3> <div class="md-nav__link md-nav__container"> <a href=../../../integration/ class="md-nav__link "> <span class=md-ellipsis> Integration </span> </a> <label class="md-nav__link " for=__nav_3 id=__nav_3_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_3_label aria-expanded=false> <label class=md-nav__title for=__nav_3> <span class="md-nav__icon md-icon"></span> Integration </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../integration/migration_guide/ class=md-nav__link> <span class=md-ellipsis> Migration Guide </span> </a> </li> <li class=md-nav__item> <a href=../../../integration/cmake/ class=md-nav__link> <span class=md-ellipsis> CMake </span> </a> </li> <li class=md-nav__item> <a href=../../../integration/package_managers/ class=md-nav__link> <span class=md-ellipsis> Package Managers </span> </a> </li> <li class=md-nav__item> <a href=../../../integration/pkg-config/ class=md-nav__link> <span class=md-ellipsis> Pkg-config </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--active md-nav__item--section md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4 checked> <label class=md-nav__link for=__nav_4 id=__nav_4_label tabindex> <span class=md-ellipsis> API Documentation </span> <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_4_label aria-expanded=true> <label class=md-nav__title for=__nav_4> <span class="md-nav__icon md-icon"></span> API Documentation </label> <ul class=md-nav__list data-md-scrollfix> <li class="md-nav__item md-nav__item--active md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_1 checked> <div class="md-nav__link md-nav__container"> <a href=../ class="md-nav__link "> <span class=md-ellipsis> basic_json </span> </a> <label class="md-nav__link " for=__nav_4_1 id=__nav_4_1_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_1_label aria-expanded=true> <label class=md-nav__title for=__nav_4_1> <span class="md-nav__icon md-icon"></span> basic_json </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../basic_json/ class=md-nav__link> <span class=md-ellipsis> (Constructor) </span> </a> </li> <li class=md-nav__item> <a href=../~basic_json/ class=md-nav__link> <span class=md-ellipsis> (Destructor) </span> </a> </li> <li class=md-nav__item> <a href=../accept/ class=md-nav__link> <span class=md-ellipsis> accept </span> </a> </li> <li class=md-nav__item> <a href=../array/ class=md-nav__link> <span class=md-ellipsis> array </span> </a> </li> <li class=md-nav__item> <a href=../array_t/ class=md-nav__link> <span class=md-ellipsis> array_t </span> </a> </li> <li class=md-nav__item> <a href=../at/ class=md-nav__link> <span class=md-ellipsis> at </span> </a> </li> <li class=md-nav__item> <a href=../back/ class=md-nav__link> <span class=md-ellipsis> back </span> </a> </li> <li class=md-nav__item> <a href=../begin/ class=md-nav__link> <span class=md-ellipsis> begin </span> </a> </li> <li class=md-nav__item> <a href=../binary/ class=md-nav__link> <span class=md-ellipsis> binary </span> </a> </li> <li class=md-nav__item> <a href=../binary_t/ class=md-nav__link> <span class=md-ellipsis> binary_t </span> </a> </li> <li class=md-nav__item> <a href=../boolean_t/ class=md-nav__link> <span class=md-ellipsis> boolean_t </span> </a> </li> <li class=md-nav__item> <a href=../cbegin/ class=md-nav__link> <span class=md-ellipsis> cbegin </span> </a> </li> <li class=md-nav__item> <a href=../cbor_tag_handler_t/ class=md-nav__link> <span class=md-ellipsis> cbor_tag_handler_t </span> </a> </li> <li class=md-nav__item> <a href=../cend/ class=md-nav__link> <span class=md-ellipsis> cend </span> </a> </li> <li class=md-nav__item> <a href=../clear/ class=md-nav__link> <span class=md-ellipsis> clear </span> </a> </li> <li class=md-nav__item> <a href=../contains/ class=md-nav__link> <span class=md-ellipsis> contains </span> </a> </li> <li class=md-nav__item> <a href=../count/ class=md-nav__link> <span class=md-ellipsis> count </span> </a> </li> <li class=md-nav__item> <a href=../crbegin/ class=md-nav__link> <span class=md-ellipsis> crbegin </span> </a> </li> <li class=md-nav__item> <a href=../crend/ class=md-nav__link> <span class=md-ellipsis> crend </span> </a> </li> <li class=md-nav__item> <a href=../default_object_comparator_t/ class=md-nav__link> <span class=md-ellipsis> default_object_comparator_t </span> </a> </li> <li class=md-nav__item> <a href=../diff/ class=md-nav__link> <span class=md-ellipsis> diff </span> </a> </li> <li class=md-nav__item> <a href=../dump/ class=md-nav__link> <span class=md-ellipsis> dump </span> </a> </li> <li class=md-nav__item> <a href=../emplace/ class=md-nav__link> <span class=md-ellipsis> emplace </span> </a> </li> <li class=md-nav__item> <a href=../emplace_back/ class=md-nav__link> <span class=md-ellipsis> emplace_back </span> </a> </li> <li class=md-nav__item> <a href=../empty/ class=md-nav__link> <span class=md-ellipsis> empty </span> </a> </li> <li class=md-nav__item> <a href=../end/ class=md-nav__link> <span class=md-ellipsis> end </span> </a> </li> <li class=md-nav__item> <a href=../end_pos/ class=md-nav__link> <span class=md-ellipsis> end_pos </span> </a> </li> <li class=md-nav__item> <a href=../erase/ class=md-nav__link> <span class=md-ellipsis> erase </span> </a> </li> <li class=md-nav__item> <a href=../error_handler_t/ class=md-nav__link> <span class=md-ellipsis> error_handler_t </span> </a> </li> <li class=md-nav__item> <a href=../exception/ class=md-nav__link> <span class=md-ellipsis> exception </span> </a> </li> <li class=md-nav__item> <a href=../find/ class=md-nav__link> <span class=md-ellipsis> find </span> </a> </li> <li class=md-nav__item> <a href=../flatten/ class=md-nav__link> <span class=md-ellipsis> flatten </span> </a> </li> <li class=md-nav__item> <a href=../from_bjdata/ class=md-nav__link> <span class=md-ellipsis> from_bjdata </span> </a> </li> <li class=md-nav__item> <a href=../from_bson/ class=md-nav__link> <span class=md-ellipsis> from_bson </span> </a> </li> <li class=md-nav__item> <a href=../from_cbor/ class=md-nav__link> <span class=md-ellipsis> from_cbor </span> </a> </li> <li class=md-nav__item> <a href=../from_msgpack/ class=md-nav__link> <span class=md-ellipsis> from_msgpack </span> </a> </li> <li class=md-nav__item> <a href=../from_ubjson/ class=md-nav__link> <span class=md-ellipsis> from_ubjson </span> </a> </li> <li class=md-nav__item> <a href=../front/ class=md-nav__link> <span class=md-ellipsis> front </span> </a> </li> <li class=md-nav__item> <a href=../get/ class=md-nav__link> <span class=md-ellipsis> get </span> </a> </li> <li class=md-nav__item> <a href=../get_allocator/ class=md-nav__link> <span class=md-ellipsis> get_allocator </span> </a> </li> <li class=md-nav__item> <a href=../get_binary/ class=md-nav__link> <span class=md-ellipsis> get_binary </span> </a> </li> <li class=md-nav__item> <a href=../get_ptr/ class=md-nav__link> <span class=md-ellipsis> get_ptr </span> </a> </li> <li class=md-nav__item> <a href=../get_ref/ class=md-nav__link> <span class=md-ellipsis> get_ref </span> </a> </li> <li class=md-nav__item> <a href=../get_to/ class=md-nav__link> <span class=md-ellipsis> get_to </span> </a> </li> <li class=md-nav__item> <a href=../std_hash/ class=md-nav__link> <span class=md-ellipsis> std::hash&lt;basic_json&gt; </span> </a> </li> <li class=md-nav__item> <a href=../input_format_t/ class=md-nav__link> <span class=md-ellipsis> input_format_t </span> </a> </li> <li class=md-nav__item> <a href=../insert/ class=md-nav__link> <span class=md-ellipsis> insert </span> </a> </li> <li class=md-nav__item> <a href=../invalid_iterator/ class=md-nav__link> <span class=md-ellipsis> invalid_iterator </span> </a> </li> <li class=md-nav__item> <a href=../is_array/ class=md-nav__link> <span class=md-ellipsis> is_array </span> </a> </li> <li class=md-nav__item> <a href=../is_binary/ class=md-nav__link> <span class=md-ellipsis> is_binary </span> </a> </li> <li class=md-nav__item> <a href=../is_boolean/ class=md-nav__link> <span class=md-ellipsis> is_boolean </span> </a> </li> <li class=md-nav__item> <a href=../is_discarded/ class=md-nav__link> <span class=md-ellipsis> is_discarded </span> </a> </li> <li class=md-nav__item> <a href=../is_null/ class=md-nav__link> <span class=md-ellipsis> is_null </span> </a> </li> <li class=md-nav__item> <a href=../is_number/ class=md-nav__link> <span class=md-ellipsis> is_number </span> </a> </li> <li class=md-nav__item> <a href=../is_number_float/ class=md-nav__link> <span class=md-ellipsis> is_number_float </span> </a> </li> <li class=md-nav__item> <a href=../is_number_integer/ class=md-nav__link> <span class=md-ellipsis> is_number_integer </span> </a> </li> <li class=md-nav__item> <a href=../is_number_unsigned/ class=md-nav__link> <span class=md-ellipsis> is_number_unsigned </span> </a> </li> <li class=md-nav__item> <a href=../is_object/ class=md-nav__link> <span class=md-ellipsis> is_object </span> </a> </li> <li class=md-nav__item> <a href=../is_primitive/ class=md-nav__link> <span class=md-ellipsis> is_primitive </span> </a> </li> <li class=md-nav__item> <a href=../is_string/ class=md-nav__link> <span class=md-ellipsis> is_string </span> </a> </li> <li class=md-nav__item> <a href=../is_structured/ class=md-nav__link> <span class=md-ellipsis> is_structured </span> </a> </li> <li class=md-nav__item> <a href=../items/ class=md-nav__link> <span class=md-ellipsis> items </span> </a> </li> <li class=md-nav__item> <a href=../json_base_class_t/ class=md-nav__link> <span class=md-ellipsis> json_base_class_t </span> </a> </li> <li class=md-nav__item> <a href=../json_serializer/ class=md-nav__link> <span class=md-ellipsis> json_serializer </span> </a> </li> <li class=md-nav__item> <a href=../max_size/ class=md-nav__link> <span class=md-ellipsis> max_size </span> </a> </li> <li class=md-nav__item> <a href=../meta/ class=md-nav__link> <span class=md-ellipsis> meta </span> </a> </li> <li class=md-nav__item> <a href=../merge_patch/ class=md-nav__link> <span class=md-ellipsis> merge_patch </span> </a> </li> <li class=md-nav__item> <a href=../number_float_t/ class=md-nav__link> <span class=md-ellipsis> number_float_t </span> </a> </li> <li class=md-nav__item> <a href=../number_integer_t/ class=md-nav__link> <span class=md-ellipsis> number_integer_t </span> </a> </li> <li class=md-nav__item> <a href=../number_unsigned_t/ class=md-nav__link> <span class=md-ellipsis> number_unsigned_t </span> </a> </li> <li class=md-nav__item> <a href=../object/ class=md-nav__link> <span class=md-ellipsis> object </span> </a> </li> <li class=md-nav__item> <a href=../object_comparator_t/ class=md-nav__link> <span class=md-ellipsis> object_comparator_t </span> </a> </li> <li class=md-nav__item> <a href=../object_t/ class=md-nav__link> <span class=md-ellipsis> object_t </span> </a> </li> <li class=md-nav__item> <a href=../operator_ValueType/ class=md-nav__link> <span class=md-ellipsis> operator ValueType </span> </a> </li> <li class=md-nav__item> <a href=../operator_value_t/ class=md-nav__link> <span class=md-ellipsis> operator value_t </span> </a> </li> <li class=md-nav__item> <a href=../operator%5B%5D/ class=md-nav__link> <span class=md-ellipsis> operator[] </span> </a> </li> <li class=md-nav__item> <a href=../operator%3D/ class=md-nav__link> <span class=md-ellipsis> operator= </span> </a> </li> <li class=md-nav__item> <a href=../operator%2B%3D/ class=md-nav__link> <span class=md-ellipsis> operator+= </span> </a> </li> <li class=md-nav__item> <a href=../operator_eq/ class=md-nav__link> <span class=md-ellipsis> operator== </span> </a> </li> <li class=md-nav__item> <a href=../operator_ne/ class=md-nav__link> <span class=md-ellipsis> operator!= </span> </a> </li> <li class=md-nav__item> <a href=../operator_lt/ class=md-nav__link> <span class=md-ellipsis> operator< </span> </a> </li> <li class=md-nav__item> <a href=../operator_gt/ class=md-nav__link> <span class=md-ellipsis> operator> </span> </a> </li> <li class=md-nav__item> <a href=../operator_le/ class=md-nav__link> <span class=md-ellipsis> operator<= </span> </a> </li> <li class=md-nav__item> <a href=../operator_ge/ class=md-nav__link> <span class=md-ellipsis> operator>= </span> </a> </li> <li class=md-nav__item> <a href=../operator_spaceship/ class=md-nav__link> <span class=md-ellipsis> operator<=> </span> </a> </li> <li class=md-nav__item> <a href=../out_of_range/ class=md-nav__link> <span class=md-ellipsis> out_of_range </span> </a> </li> <li class=md-nav__item> <a href=../other_error/ class=md-nav__link> <span class=md-ellipsis> other_error </span> </a> </li> <li class=md-nav__item> <a href=../parse/ class=md-nav__link> <span class=md-ellipsis> parse </span> </a> </li> <li class=md-nav__item> <a href=../parse_error/ class=md-nav__link> <span class=md-ellipsis> parse_error </span> </a> </li> <li class=md-nav__item> <a href=../parse_event_t/ class=md-nav__link> <span class=md-ellipsis> parse_event_t </span> </a> </li> <li class=md-nav__item> <a href=../parser_callback_t/ class=md-nav__link> <span class=md-ellipsis> parser_callback_t </span> </a> </li> <li class=md-nav__item> <a href=../patch/ class=md-nav__link> <span class=md-ellipsis> patch </span> </a> </li> <li class=md-nav__item> <a href=../patch_inplace/ class=md-nav__link> <span class=md-ellipsis> patch_inplace </span> </a> </li> <li class=md-nav__item> <a href=../push_back/ class=md-nav__link> <span class=md-ellipsis> push_back </span> </a> </li> <li class=md-nav__item> <a href=../rbegin/ class=md-nav__link> <span class=md-ellipsis> rbegin </span> </a> </li> <li class=md-nav__item> <a href=../rend/ class=md-nav__link> <span class=md-ellipsis> rend </span> </a> </li> <li class=md-nav__item> <a href=../sax_parse/ class=md-nav__link> <span class=md-ellipsis> sax_parse </span> </a> </li> <li class=md-nav__item> <a href=../size/ class=md-nav__link> <span class=md-ellipsis> size </span> </a> </li> <li class=md-nav__item> <a href=../start_pos/ class=md-nav__link> <span class=md-ellipsis> start_pos </span> </a> </li> <li class=md-nav__item> <a href=../string_t/ class=md-nav__link> <span class=md-ellipsis> string_t </span> </a> </li> <li class=md-nav__item> <a href=../swap/ class=md-nav__link> <span class=md-ellipsis> swap </span> </a> </li> <li class=md-nav__item> <a href=../std_swap/ class=md-nav__link> <span class=md-ellipsis> std::swap&lt;basic_json&gt; </span> </a> </li> <li class=md-nav__item> <a href=../to_bjdata/ class=md-nav__link> <span class=md-ellipsis> to_bjdata </span> </a> </li> <li class=md-nav__item> <a href=../to_bson/ class=md-nav__link> <span class=md-ellipsis> to_bson </span> </a> </li> <li class=md-nav__item> <a href=../to_cbor/ class=md-nav__link> <span class=md-ellipsis> to_cbor </span> </a> </li> <li class=md-nav__item> <a href=../to_msgpack/ class=md-nav__link> <span class=md-ellipsis> to_msgpack </span> </a> </li> <li class=md-nav__item> <a href=../to_string/ class=md-nav__link> <span class=md-ellipsis> to_string </span> </a> </li> <li class=md-nav__item> <a href=../to_ubjson/ class=md-nav__link> <span class=md-ellipsis> to_ubjson </span> </a> </li> <li class=md-nav__item> <a href=../type/ class=md-nav__link> <span class=md-ellipsis> type </span> </a> </li> <li class=md-nav__item> <a href=../type_error/ class=md-nav__link> <span class=md-ellipsis> type_error </span> </a> </li> <li class=md-nav__item> <a href=../type_name/ class=md-nav__link> <span class=md-ellipsis> type_name </span> </a> </li> <li class="md-nav__item md-nav__item--active"> <input class="md-nav__toggle md-toggle" type=checkbox id=__toc> <label class="md-nav__link md-nav__link--active" for=__toc> <span class=md-ellipsis> unflatten </span> <span class="md-nav__icon md-icon"></span> </label> <a href=./ class="md-nav__link md-nav__link--active"> <span class=md-ellipsis> unflatten </span> </a> <nav class="md-nav md-nav--secondary" aria-label="Table of contents"> <label class=md-nav__title for=__toc> <span class="md-nav__icon md-icon"></span> Table of contents </label> <ul class=md-nav__list data-md-component=toc data-md-scrollfix> <li class=md-nav__item> <a href=#return-value class=md-nav__link> <span class=md-ellipsis> Return value </span> </a> </li> <li class=md-nav__item> <a href=#exception-safety class=md-nav__link> <span class=md-ellipsis> Exception safety </span> </a> </li> <li class=md-nav__item> <a href=#exceptions class=md-nav__link> <span class=md-ellipsis> Exceptions </span> </a> </li> <li class=md-nav__item> <a href=#complexity class=md-nav__link> <span class=md-ellipsis> Complexity </span> </a> </li> <li class=md-nav__item> <a href=#notes class=md-nav__link> <span class=md-ellipsis> Notes </span> </a> </li> <li class=md-nav__item> <a href=#examples class=md-nav__link> <span class=md-ellipsis> Examples </span> </a> </li> <li class=md-nav__item> <a href=#see-also class=md-nav__link> <span class=md-ellipsis> See also </span> </a> </li> <li class=md-nav__item> <a href=#version-history class=md-nav__link> <span class=md-ellipsis> Version history </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../update/ class=md-nav__link> <span class=md-ellipsis> update </span> </a> </li> <li class=md-nav__item> <a href=../value/ class=md-nav__link> <span class=md-ellipsis> value </span> </a> </li> <li class=md-nav__item> <a href=../value_t/ class=md-nav__link> <span class=md-ellipsis> value_t </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_2> <div class="md-nav__link md-nav__container"> <a href=../../byte_container_with_subtype/ class="md-nav__link "> <span class=md-ellipsis> byte_container_with_subtype </span> </a> <label class="md-nav__link " for=__nav_4_2 id=__nav_4_2_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_2_label aria-expanded=false> <label class=md-nav__title for=__nav_4_2> <span class="md-nav__icon md-icon"></span> byte_container_with_subtype </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../byte_container_with_subtype/byte_container_with_subtype/ class=md-nav__link> <span class=md-ellipsis> (constructor) </span> </a> </li> <li class=md-nav__item> <a href=../../byte_container_with_subtype/clear_subtype/ class=md-nav__link> <span class=md-ellipsis> clear_subtype </span> </a> </li> <li class=md-nav__item> <a href=../../byte_container_with_subtype/has_subtype/ class=md-nav__link> <span class=md-ellipsis> has_subtype </span> </a> </li> <li class=md-nav__item> <a href=../../byte_container_with_subtype/set_subtype/ class=md-nav__link> <span class=md-ellipsis> set_subtype </span> </a> </li> <li class=md-nav__item> <a href=../../byte_container_with_subtype/subtype/ class=md-nav__link> <span class=md-ellipsis> subtype </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_3> <div class="md-nav__link md-nav__container"> <a href=../../adl_serializer/ class="md-nav__link "> <span class=md-ellipsis> adl_serializer </span> </a> <label class="md-nav__link " for=__nav_4_3 id=__nav_4_3_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_3_label aria-expanded=false> <label class=md-nav__title for=__nav_4_3> <span class="md-nav__icon md-icon"></span> adl_serializer </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../adl_serializer/from_json/ class=md-nav__link> <span class=md-ellipsis> from_json </span> </a> </li> <li class=md-nav__item> <a href=../../adl_serializer/to_json/ class=md-nav__link> <span class=md-ellipsis> to_json </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../json/ class=md-nav__link> <span class=md-ellipsis> json </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_5> <div class="md-nav__link md-nav__container"> <a href=../../json_pointer/ class="md-nav__link "> <span class=md-ellipsis> json_pointer </span> </a> <label class="md-nav__link " for=__nav_4_5 id=__nav_4_5_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_5_label aria-expanded=false> <label class=md-nav__title for=__nav_4_5> <span class="md-nav__icon md-icon"></span> json_pointer </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../json_pointer/json_pointer/ class=md-nav__link> <span class=md-ellipsis> (Constructor) </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/back/ class=md-nav__link> <span class=md-ellipsis> back </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/empty/ class=md-nav__link> <span class=md-ellipsis> empty </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/front/ class=md-nav__link> <span class=md-ellipsis> front </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_string_t/ class=md-nav__link> <span class=md-ellipsis> operator string_t </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_eq/ class=md-nav__link> <span class=md-ellipsis> operator== </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_ne/ class=md-nav__link> <span class=md-ellipsis> operator!= </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_slash/ class=md-nav__link> <span class=md-ellipsis> operator/ </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_slasheq/ class=md-nav__link> <span class=md-ellipsis> operator/= </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/parent_pointer/ class=md-nav__link> <span class=md-ellipsis> parent_pointer </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/pop_back/ class=md-nav__link> <span class=md-ellipsis> pop_back </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/pop_front/ class=md-nav__link> <span class=md-ellipsis> pop_front </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/push_back/ class=md-nav__link> <span class=md-ellipsis> push_back </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/push_front/ class=md-nav__link> <span class=md-ellipsis> push_front </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/string_t/ class=md-nav__link> <span class=md-ellipsis> string_t </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/to_string/ class=md-nav__link> <span class=md-ellipsis> to_string </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_6> <div class="md-nav__link md-nav__container"> <a href=../../json_sax/ class="md-nav__link "> <span class=md-ellipsis> json_sax </span> </a> <label class="md-nav__link " for=__nav_4_6 id=__nav_4_6_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_6_label aria-expanded=false> <label class=md-nav__title for=__nav_4_6> <span class="md-nav__icon md-icon"></span> json_sax </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../json_sax/binary/ class=md-nav__link> <span class=md-ellipsis> binary </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/boolean/ class=md-nav__link> <span class=md-ellipsis> boolean </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/end_array/ class=md-nav__link> <span class=md-ellipsis> end_array </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/end_object/ class=md-nav__link> <span class=md-ellipsis> end_object </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/key/ class=md-nav__link> <span class=md-ellipsis> key </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/null/ class=md-nav__link> <span class=md-ellipsis> null </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/number_float/ class=md-nav__link> <span class=md-ellipsis> number_float </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/number_integer/ class=md-nav__link> <span class=md-ellipsis> number_integer </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/number_unsigned/ class=md-nav__link> <span class=md-ellipsis> number_unsigned </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/parse_error/ class=md-nav__link> <span class=md-ellipsis> parse_error </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/start_array/ class=md-nav__link> <span class=md-ellipsis> start_array </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/start_object/ class=md-nav__link> <span class=md-ellipsis> start_object </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/string/ class=md-nav__link> <span class=md-ellipsis> string </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../operator_ltlt/ class=md-nav__link> <span class=md-ellipsis> operator<<(basic_json), operator<<(json_pointer) </span> </a> </li> <li class=md-nav__item> <a href=../../operator_gtgt/ class=md-nav__link> <span class=md-ellipsis> operator>>(basic_json) </span> </a> </li> <li class=md-nav__item> <a href=../../operator_literal_json/ class=md-nav__link> <span class=md-ellipsis> operator""_json </span> </a> </li> <li class=md-nav__item> <a href=../../operator_literal_json_pointer/ class=md-nav__link> <span class=md-ellipsis> operator""_json_pointer </span> </a> </li> <li class=md-nav__item> <a href=../../ordered_json/ class=md-nav__link> <span class=md-ellipsis> ordered_json </span> </a> </li> <li class=md-nav__item> <a href=../../ordered_map/ class=md-nav__link> <span class=md-ellipsis> ordered_map </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_13> <div class="md-nav__link md-nav__container"> <a href=../../macros/ class="md-nav__link "> <span class=md-ellipsis> macros </span> </a> <label class="md-nav__link " for=__nav_4_13 id=__nav_4_13_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_13_label aria-expanded=false> <label class=md-nav__title for=__nav_4_13> <span class="md-nav__icon md-icon"></span> macros </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../macros/json_assert/ class=md-nav__link> <span class=md-ellipsis> JSON_ASSERT </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_brace_init_copy_semantics/ class=md-nav__link> <span class=md-ellipsis> JSON_BRACE_INIT_COPY_SEMANTICS </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_throw_user/ class=md-nav__link> <span class=md-ellipsis> JSON_CATCH_USER, JSON_THROW_USER, JSON_TRY_USER </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_diagnostics/ class=md-nav__link> <span class=md-ellipsis> JSON_DIAGNOSTICS </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_diagnostic_positions/ class=md-nav__link> <span class=md-ellipsis> JSON_DIAGNOSTIC_POSITIONS </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_disable_enum_serialization/ class=md-nav__link> <span class=md-ellipsis> JSON_DISABLE_ENUM_SERIALIZATION </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_has_cpp_11/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_CPP_11, JSON_HAS_CPP_14, JSON_HAS_CPP_17, JSON_HAS_CPP_20 </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_has_filesystem/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_EXPERIMENTAL_FILESYSTEM, JSON_HAS_FILESYSTEM </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_has_ranges/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_RANGES </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_has_static_rtti/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_STATIC_RTTI </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_has_three_way_comparison/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_THREE_WAY_COMPARISON </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_noexception/ class=md-nav__link> <span class=md-ellipsis> JSON_NOEXCEPTION </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_no_io/ class=md-nav__link> <span class=md-ellipsis> JSON_NO_IO </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_skip_library_version_check/ class=md-nav__link> <span class=md-ellipsis> JSON_SKIP_LIBRARY_VERSION_CHECK </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_skip_unsupported_compiler_check/ class=md-nav__link> <span class=md-ellipsis> JSON_SKIP_UNSUPPORTED_COMPILER_CHECK </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_use_global_udls/ class=md-nav__link> <span class=md-ellipsis> JSON_USE_GLOBAL_UDLS </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_use_implicit_conversions/ class=md-nav__link> <span class=md-ellipsis> JSON_USE_IMPLICIT_CONVERSIONS </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_use_legacy_discarded_value_comparison/ class=md-nav__link> <span class=md-ellipsis> JSON_USE_LEGACY_DISCARDED_VALUE_COMPARISON </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_define_derived_type/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_ONLY_SERIALIZE, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_define_type_intrusive/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_TYPE_INTRUSIVE, NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_TYPE_INTRUSIVE_ONLY_SERIALIZE </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_define_type_non_intrusive/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_define_type_with_names/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_TYPE_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_namespace/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_NAMESPACE </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_namespace_begin/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_NAMESPACE_BEGIN, NLOHMANN_JSON_NAMESPACE_END </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_namespace_no_version/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_NAMESPACE_NO_VERSION </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_serialize_enum/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_SERIALIZE_ENUM </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_serialize_enum_strict/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_SERIALIZE_ENUM_STRICT </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_version_major/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_VERSION_MAJOR, NLOHMANN_JSON_VERSION_MINOR, NLOHMANN_JSON_VERSION_PATCH </span> </a> </li> </ul> </nav> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_5> <div class="md-nav__link md-nav__container"> <a href=../../../community/ class="md-nav__link "> <span class=md-ellipsis> Community </span> </a> <label class="md-nav__link " for=__nav_5 id=__nav_5_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_5_label aria-expanded=false> <label class=md-nav__title for=__nav_5> <span class="md-nav__icon md-icon"></span> Community </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../community/code_of_conduct/ class=md-nav__link> <span class=md-ellipsis> Code of Conduct </span> </a> </li> <li class=md-nav__item> <a href=../../../community/contribution_guidelines/ class=md-nav__link> <span class=md-ellipsis> Contribution Guidelines </span> </a> </li> <li class=md-nav__item> <a href=../../../community/quality_assurance/ class=md-nav__link> <span class=md-ellipsis> Quality assurance </span> </a> </li> <li class=md-nav__item> <a href=../../../community/governance/ class=md-nav__link> <span class=md-ellipsis> Governance </span> </a> </li> <li class=md-nav__item> <a href=../../../community/security_policy/ class=md-nav__link> <span class=md-ellipsis> Security Policy </span> </a> </li> </ul> </nav> </li> </ul> </nav> </div> </div> </div> <div class="md-sidebar md-sidebar--secondary" data-md-component=sidebar data-md-type=toc> <div class=md-sidebar__scrollwrap> <div class=md-sidebar__inner> <nav class="md-nav md-nav--secondary" aria-label="Table of contents"> <label class=md-nav__title for=__toc> <span class="md-nav__icon md-icon"></span> Table of contents </label> <ul class=md-nav__list data-md-component=toc data-md-scrollfix> <li class=md-nav__item> <a href=#return-value class=md-nav__link> <span class=md-ellipsis> Return value </span> </a> </li> <li class=md-nav__item> <a href=#exception-safety class=md-nav__link> <span class=md-ellipsis> Exception safety </span> </a> </li> <li class=md-nav__item> <a href=#exceptions class=md-nav__link> <span class=md-ellipsis> Exceptions </span> </a> </li> <li class=md-nav__item> <a href=#complexity class=md-nav__link> <span class=md-ellipsis> Complexity </span> </a> </li> <li class=md-nav__item> <a href=#notes class=md-nav__link> <span class=md-ellipsis> Notes </span> </a> </li> <li class=md-nav__item> <a href=#examples class=md-nav__link> <span class=md-ellipsis> Examples </span> </a> </li> <li class=md-nav__item> <a href=#see-also class=md-nav__link> <span class=md-ellipsis> See also </span> </a> </li> <li class=md-nav__item> <a href=#version-history class=md-nav__link> <span class=md-ellipsis> Version history </span> </a> </li> </ul> </nav> </div> </div> </div> <div class=md-content data-md-component=content> <article class="md-content__inner md-typeset"> <a href="https://github.com/nlohmann/json/edit/develop/docs/mkdocs/docs/api/basic_json/unflatten.md" title="Edit this page" class="md-content__button md-icon" rel="edit"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M10 20H6V4h7v5h5v3.1l2-2V8l-6-6H6c-1.1 0-2 .9-2 2v16c0 1.1.9 2 2 2h4zm10.2-7c.1 0 .3.1.4.2l1.3 1.3c.2.2.2.6 0 .8l-1 1-2.1-2.1 1-1c.1-.1.2-.2.4-.2m0 3.9L14.1 23H12v-2.1l6.1-6.1z"/></svg> </a> <a href="https://github.com/nlohmann/json/raw/develop/docs/mkdocs/docs/api/basic_json/unflatten.md" title="View source of this page" class="md-content__button md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M17 18c.56 0 1 .44 1 1s-.44 1-1 1-1-.44-1-1 .44-1 1-1m0-3c-2.73 0-5.06 1.66-6 4 .94 2.34 3.27 4 6 4s5.06-1.66 6-4c-.94-2.34-3.27-4-6-4m0 6.5a2.5 2.5 0 0 1-2.5-2.5 2.5 2.5 0 0 1 2.5-2.5 2.5 2.5 0 0 1 2.5 2.5 2.5 2.5 0 0 1-2.5 2.5M9.27 20H6V4h7v5h5v4.07c.7.08 1.36.25 2 .49V8l-6-6H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h4.5a8.2 8.2 0 0 1-1.23-2"/></svg> </a> <h1 id=nlohmannbasic_jsonunflatten><small>nlohmann::basic_json::</small>unflatten<a class=headerlink href=#nlohmannbasic_jsonunflatten title="Permanent link">&para;</a></h1> <div class=highlight><pre><span></span><code><span class=n>basic_json</span><span class=w> </span><span class=nf>unflatten</span><span class=p>()</span><span class=w> </span><span class=k>const</span><span class=p>;</span>
-</code></pre></div> <p>The function restores the arbitrary nesting of a <abbr title="JavaScript Object Notation">JSON</abbr> value that has been flattened before using the <a href=../flatten/ ><code>flatten()</code></a> function. The <abbr title="JavaScript Object Notation">JSON</abbr> value must meet certain constraints:</p> <ol> <li>The value must be an object.</li> <li>The keys must be <abbr title="JavaScript Object Notation">JSON</abbr> pointers (see <a href="https://tools.ietf.org/html/rfc6901"><abbr title="Request for Comments">RFC</abbr> 6901</a>)</li> <li>The mapped values must be primitive <abbr title="JavaScript Object Notation">JSON</abbr> types.</li> </ol> <h2 id=return-value>Return value<a class=headerlink href=#return-value title="Permanent link">&para;</a></h2> <p>the original <abbr title="JavaScript Object Notation">JSON</abbr> from a flattened version</p> <h2 id=exception-safety>Exception safety<a class=headerlink href=#exception-safety title="Permanent link">&para;</a></h2> <p>Strong exception safety: if an exception occurs, the original value stays intact.</p> <h2 id=exceptions>Exceptions<a class=headerlink href=#exceptions title="Permanent link">&para;</a></h2> <p>The function can throw the following exceptions:</p> <ul> <li>Throws <a href=../../../home/exceptions/#jsonexceptiontype_error314><code>type_error.314</code></a> if value is not an object</li> <li>Throws <a href=../../../home/exceptions/#jsonexceptiontype_error315><code>type_error.315</code></a> if object values are not primitive</li> </ul> <h2 id=complexity>Complexity<a class=headerlink href=#complexity title="Permanent link">&para;</a></h2> <p>Linear in the size of the <abbr title="JavaScript Object Notation">JSON</abbr> value.</p> <h2 id=notes>Notes<a class=headerlink href=#notes title="Permanent link">&para;</a></h2> <p>Empty objects and arrays are flattened by <a href=../flatten/ ><code>flatten()</code></a> to <code class=highlight><span class=kc>null</span></code> values and cannot unflattened to their original type. Apart from this example, for a <abbr title="JavaScript Object Notation">JSON</abbr> value <code>j</code>, the following is always true: <code class=highlight><span class=n>j</span><span class=w> </span><span class=o>==</span><span class=w> </span><span class=n>j</span><span class=p>.</span><span class=n>flatten</span><span class=p>().</span><span class=n>unflatten</span><span class=p>()</span></code>.</p> <h2 id=examples>Examples<a class=headerlink href=#examples title="Permanent link">&para;</a></h2> <details class=example> <summary>Example</summary> <p>The following code shows how a flattened <abbr title="JavaScript Object Notation">JSON</abbr> object is unflattened into the original nested <abbr title="JavaScript Object Notation">JSON</abbr> object.</p> <div class=highlight><pre><span></span><code><span class=cp>#include</span><span class=w> </span><span class=cpf>&lt;iostream&gt;</span>
+</code></pre></div> <p>The function restores the arbitrary nesting of a <abbr title="JavaScript Object Notation">JSON</abbr> value that has been flattened before using the <a href=../flatten/ ><code>flatten()</code></a> function. The <abbr title="JavaScript Object Notation">JSON</abbr> value must meet certain constraints:</p> <ol> <li>The value must be an object.</li> <li>The keys must be <abbr title="JavaScript Object Notation">JSON</abbr> pointers (see <a href="https://tools.ietf.org/html/rfc6901"><abbr title="Request for Comments">RFC</abbr> 6901</a>)</li> <li>The mapped values must be primitive <abbr title="JavaScript Object Notation">JSON</abbr> types.</li> </ol> <h2 id=return-value>Return value<a class=headerlink href=#return-value title="Permanent link">&para;</a></h2> <p>the original <abbr title="JavaScript Object Notation">JSON</abbr> from a flattened version</p> <h2 id=exception-safety>Exception safety<a class=headerlink href=#exception-safety title="Permanent link">&para;</a></h2> <p>Strong exception safety: if an exception occurs, the original value stays intact.</p> <h2 id=exceptions>Exceptions<a class=headerlink href=#exceptions title="Permanent link">&para;</a></h2> <p>The function can throw the following exceptions:</p> <ul> <li>Throws <a href=../../../home/exceptions/#jsonexceptiontype_error314><code>type_error.314</code></a> if value is not an object</li> <li>Throws <a href=../../../home/exceptions/#jsonexceptiontype_error315><code>type_error.315</code></a> if object values are not primitive</li> <li>Throws <a href=../../../home/exceptions/#jsonexceptiontype_error313><code>type_error.313</code></a> if a key (<abbr title="JavaScript Object Notation">JSON</abbr> pointer) leads to a conflicting nesting; example: <code>"invalid value to unflatten"</code></li> <li>Throws <a href=../../../home/exceptions/#jsonexceptionparse_error109><code>parse_error.109</code></a> if an array index in a key is not a number; example: <code>"array index 'one' is not a number"</code></li> </ul> <h2 id=complexity>Complexity<a class=headerlink href=#complexity title="Permanent link">&para;</a></h2> <p>Linear in the size of the <abbr title="JavaScript Object Notation">JSON</abbr> value.</p> <h2 id=notes>Notes<a class=headerlink href=#notes title="Permanent link">&para;</a></h2> <p>Empty objects and arrays are flattened by <a href=../flatten/ ><code>flatten()</code></a> to <code class=highlight><span class=kc>null</span></code> values and cannot unflattened to their original type. Apart from this example, for a <abbr title="JavaScript Object Notation">JSON</abbr> value <code>j</code>, the following is always true: <code class=highlight><span class=n>j</span><span class=w> </span><span class=o>==</span><span class=w> </span><span class=n>j</span><span class=p>.</span><span class=n>flatten</span><span class=p>().</span><span class=n>unflatten</span><span class=p>()</span></code>.</p> <h2 id=examples>Examples<a class=headerlink href=#examples title="Permanent link">&para;</a></h2> <details class=example> <summary>Example</summary> <p>The following code shows how a flattened <abbr title="JavaScript Object Notation">JSON</abbr> object is unflattened into the original nested <abbr title="JavaScript Object Notation">JSON</abbr> object.</p> <div class=highlight><pre><span></span><code><span class=cp>#include</span><span class=w> </span><span class=cpf>&lt;iostream&gt;</span>
 <span class=cp>#include</span><span class=w> </span><span class=cpf>&lt;iomanip&gt;</span>
 <span class=cp>#include</span><span class=w> </span><span class=cpf>&lt;nlohmann/json.hpp&gt;</span>
 
@@ -43,4 +43,4 @@
 <span class=w>    </span><span class=p>},</span>
 <span class=w>    </span><span class=nt>&quot;pi&quot;</span><span class=p>:</span><span class=w> </span><span class=mf>3.141</span>
 <span class=p>}</span>
-</code></pre></div> </details> <h2 id=see-also>See also<a class=headerlink href=#see-also title="Permanent link">&para;</a></h2> <ul> <li><a href=../flatten/ >flatten</a> the reverse function</li> </ul> <h2 id=version-history>Version history<a class=headerlink href=#version-history title="Permanent link">&para;</a></h2> <ul> <li>Added in version 2.0.0.</li> </ul> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 23, 2026 11:16:18 UTC">June 23, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
+</code></pre></div> </details> <h2 id=see-also>See also<a class=headerlink href=#see-also title="Permanent link">&para;</a></h2> <ul> <li><a href=../flatten/ >flatten</a> the reverse function</li> </ul> <h2 id=version-history>Version history<a class=headerlink href=#version-history title="Permanent link">&para;</a></h2> <ul> <li>Added in version 2.0.0.</li> </ul> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 29, 2026 20:15:18 UTC">June 29, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
diff --git a/api/basic_json/update/index.html b/api/basic_json/update/index.html
index 6125321..c5ffc4f 100644
--- a/api/basic_json/update/index.html
+++ b/api/basic_json/update/index.html
@@ -1,9 +1,9 @@
-<!doctype html><html lang=en class=no-js> <head><meta charset=utf-8><meta name=viewport content="width=device-width,initial-scale=1"><meta name=author content="Niels Lohmann"><link href="https://json.nlohmann.me/api/basic_json/update/" rel="canonical"><link href=../unflatten/ rel=prev><link href=../value/ rel=next><link rel=icon href=../../../assets/images/favicon.png><meta name=generator content="mkdocs-1.6.1, mkdocs-material-9.7.6"><title>update - JSON for Modern C++</title><link rel=stylesheet href=../../../assets/stylesheets/main.484c7ddc.min.css><link rel=stylesheet href=../../../assets/stylesheets/palette.ab4e12ef.min.css><link rel="stylesheet" href="../../../assets/external/fonts.googleapis.com/css.61a430c9.css"><style>:root{--md-text-font:"Roboto";--md-code-font:"JetBrains Mono"}</style><link rel=stylesheet href=../../../css/custom.css><script>__md_scope=new URL("../../..",location),__md_hash=e=>[...e].reduce(((e,_)=>(e<<5)-e+_.charCodeAt(0)),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script></head> <body dir=ltr data-md-color-scheme=default data-md-color-primary=indigo data-md-color-accent=indigo> <input class=md-toggle data-md-toggle=drawer type=checkbox id=__drawer autocomplete=off> <input class=md-toggle data-md-toggle=search type=checkbox id=__search autocomplete=off> <label class=md-overlay for=__drawer></label> <div data-md-component=skip> <a href=#nlohmannbasic_jsonupdate class=md-skip> Skip to content </a> </div> <div data-md-component=announce> </div> <header class=md-header data-md-component=header> <nav class="md-header__inner md-grid" aria-label=Header> <a href=../../.. title="JSON for Modern C++" class="md-header__button md-logo" aria-label="JSON for Modern C++" data-md-component=logo> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54"/></svg> </a> <label class="md-header__button md-icon" for=__drawer> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M3 6h18v2H3zm0 5h18v2H3zm0 5h18v2H3z"/></svg> </label> <div class=md-header__title data-md-component=header-title> <div class=md-header__ellipsis> <div class=md-header__topic> <span class=md-ellipsis> JSON for Modern C++ </span> </div> <div class=md-header__topic data-md-component=header-topic> <span class=md-ellipsis> update </span> </div> </div> </div> <form class=md-header__option data-md-component=palette> <input class=md-option data-md-color-media="(prefers-color-scheme: light)" data-md-color-scheme=default data-md-color-primary=indigo data-md-color-accent=indigo aria-label="Switch to dark mode" type=radio name=__palette id=__palette_0> <label class="md-header__button md-icon" title="Switch to dark mode" for=__palette_1 hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a4 4 0 0 0-4 4 4 4 0 0 0 4 4 4 4 0 0 0 4-4 4 4 0 0 0-4-4m0 10a6 6 0 0 1-6-6 6 6 0 0 1 6-6 6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12z"/></svg> </label> <input class=md-option data-md-color-media="(prefers-color-scheme: dark)" data-md-color-scheme=slate data-md-color-primary=indigo data-md-color-accent=indigo aria-label="Switch to light mode" type=radio name=__palette id=__palette_1> <label class="md-header__button md-icon" title="Switch to light mode" for=__palette_0 hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 18c-.89 0-1.74-.2-2.5-.55C11.56 16.5 13 14.42 13 12s-1.44-4.5-3.5-5.45C10.26 6.2 11.11 6 12 6a6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12z"/></svg> </label> </form> <script>var palette=__md_get("__palette");if(palette&&palette.color){if("(prefers-color-scheme)"===palette.color.media){var media=matchMedia("(prefers-color-scheme: light)"),input=document.querySelector(media.matches?"[data-md-color-media='(prefers-color-scheme: light)']":"[data-md-color-media='(prefers-color-scheme: dark)']");palette.color.media=input.getAttribute("data-md-color-media"),palette.color.scheme=input.getAttribute("data-md-color-scheme"),palette.color.primary=input.getAttribute("data-md-color-primary"),palette.color.accent=input.getAttribute("data-md-color-accent")}for(var[key,value]of Object.entries(palette.color))document.body.setAttribute("data-md-color-"+key,value)}</script> <label class="md-header__button md-icon" for=__search> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg> </label> <div class=md-search data-md-component=search role=dialog> <label class=md-search__overlay for=__search></label> <div class=md-search__inner role=search> <form class=md-search__form name=search> <input type=text class=md-search__input name=query aria-label=Search placeholder=Search autocapitalize=off autocorrect=off autocomplete=off spellcheck=false data-md-component=search-query required> <label class="md-search__icon md-icon" for=__search> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11z"/></svg> </label> <nav class=md-search__options aria-label=Search> <button type=reset class="md-search__icon md-icon" title=Clear aria-label=Clear tabindex=-1> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z"/></svg> </button> </nav> </form> <div class=md-search__output> <div class=md-search__scrollwrap tabindex=0 data-md-scrollfix> <div class=md-search-result data-md-component=search-result> <div class=md-search-result__meta> Initializing search </div> <ol class=md-search-result__list role=presentation></ol> </div> </div> </div> </div> </div> <div class=md-header__source> <a href="https://github.com/nlohmann/json" title="Go to repository" class="md-source" data-md-component="source"> <div class="md-source__icon md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </div> <div class=md-source__repository> nlohmann/json </div> </a> </div> </nav> </header> <div class=md-container data-md-component=container> <nav class=md-tabs aria-label=Tabs data-md-component=tabs> <div class=md-grid> <ul class=md-tabs__list> <li class=md-tabs__item> <a href=../../.. class=md-tabs__link> Home </a> </li> <li class=md-tabs__item> <a href=../../../features/arbitrary_types/ class=md-tabs__link> Features </a> </li> <li class=md-tabs__item> <a href=../../../integration/ class=md-tabs__link> Integration </a> </li> <li class="md-tabs__item md-tabs__item--active"> <a href=../ class=md-tabs__link> API Documentation </a> </li> <li class=md-tabs__item> <a href=../../../community/ class=md-tabs__link> Community </a> </li> </ul> </div> </nav> <main class=md-main data-md-component=main> <div class="md-main__inner md-grid"> <div class="md-sidebar md-sidebar--primary" data-md-component=sidebar data-md-type=navigation> <div class=md-sidebar__scrollwrap> <div class=md-sidebar__inner> <nav class="md-nav md-nav--primary md-nav--lifted" aria-label=Navigation data-md-level=0> <label class=md-nav__title for=__drawer> <a href=../../.. title="JSON for Modern C++" class="md-nav__button md-logo" aria-label="JSON for Modern C++" data-md-component=logo> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54"/></svg> </a> JSON for Modern C++ </label> <div class=md-nav__source> <a href="https://github.com/nlohmann/json" title="Go to repository" class="md-source" data-md-component="source"> <div class="md-source__icon md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </div> <div class=md-source__repository> nlohmann/json </div> </a> </div> <ul class=md-nav__list data-md-scrollfix> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_1> <div class="md-nav__link md-nav__container"> <a href=../../.. class="md-nav__link "> <span class=md-ellipsis> Home </span> </a> <label class="md-nav__link " for=__nav_1 id=__nav_1_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_1_label aria-expanded=false> <label class=md-nav__title for=__nav_1> <span class="md-nav__icon md-icon"></span> Home </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../home/license/ class=md-nav__link> <span class=md-ellipsis> License </span> </a> </li> <li class=md-nav__item> <a href=../../../home/faq/ class=md-nav__link> <span class=md-ellipsis> FAQ </span> </a> </li> <li class=md-nav__item> <a href=../../../home/exceptions/ class=md-nav__link> <span class=md-ellipsis> Exceptions </span> </a> </li> <li class=md-nav__item> <a href=../../../home/releases/ class=md-nav__link> <span class=md-ellipsis> Releases </span> </a> </li> <li class=md-nav__item> <a href=../../../home/design_goals/ class=md-nav__link> <span class=md-ellipsis> Design goals </span> </a> </li> <li class=md-nav__item> <a href=../../../home/architecture/ class=md-nav__link> <span class=md-ellipsis> Architecture </span> </a> </li> <li class=md-nav__item> <a href=../../../home/customers/ class=md-nav__link> <span class=md-ellipsis> Customers </span> </a> </li> <li class=md-nav__item> <a href=../../../home/sponsors/ class=md-nav__link> <span class=md-ellipsis> Sponsors </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2> <label class=md-nav__link for=__nav_2 id=__nav_2_label tabindex=0> <span class=md-ellipsis> Features </span> <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_2_label aria-expanded=false> <label class=md-nav__title for=__nav_2> <span class="md-nav__icon md-icon"></span> Features </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/arbitrary_types/ class=md-nav__link> <span class=md-ellipsis> Arbitrary Type Conversions </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_2> <div class="md-nav__link md-nav__container"> <a href=../../../features/binary_formats/ class="md-nav__link "> <span class=md-ellipsis> Binary Formats </span> </a> <label class="md-nav__link " for=__nav_2_2 id=__nav_2_2_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_2_label aria-expanded=false> <label class=md-nav__title for=__nav_2_2> <span class="md-nav__icon md-icon"></span> Binary Formats </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/binary_formats/bjdata/ class=md-nav__link> <span class=md-ellipsis> BJData </span> </a> </li> <li class=md-nav__item> <a href=../../../features/binary_formats/bson/ class=md-nav__link> <span class=md-ellipsis> BSON </span> </a> </li> <li class=md-nav__item> <a href=../../../features/binary_formats/cbor/ class=md-nav__link> <span class=md-ellipsis> CBOR </span> </a> </li> <li class=md-nav__item> <a href=../../../features/binary_formats/messagepack/ class=md-nav__link> <span class=md-ellipsis> MessagePack </span> </a> </li> <li class=md-nav__item> <a href=../../../features/binary_formats/ubjson/ class=md-nav__link> <span class=md-ellipsis> UBJSON </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../../features/binary_values/ class=md-nav__link> <span class=md-ellipsis> Binary Values </span> </a> </li> <li class=md-nav__item> <a href=../../../features/comments/ class=md-nav__link> <span class=md-ellipsis> Comments </span> </a> </li> <li class=md-nav__item> <a href=../../../features/trailing_commas/ class=md-nav__link> <span class=md-ellipsis> Trailing Commas </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_6> <div class="md-nav__link md-nav__container"> <a href=../../../features/element_access/ class="md-nav__link "> <span class=md-ellipsis> Element Access </span> </a> <label class="md-nav__link " for=__nav_2_6 id=__nav_2_6_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_6_label aria-expanded=false> <label class=md-nav__title for=__nav_2_6> <span class="md-nav__icon md-icon"></span> Element Access </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/element_access/unchecked_access/ class=md-nav__link> <span class=md-ellipsis> Unchecked access: operator[] </span> </a> </li> <li class=md-nav__item> <a href=../../../features/element_access/checked_access/ class=md-nav__link> <span class=md-ellipsis> Checked access: at </span> </a> </li> <li class=md-nav__item> <a href=../../../features/element_access/default_value/ class=md-nav__link> <span class=md-ellipsis> Access with default value: value </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../../features/iterators/ class=md-nav__link> <span class=md-ellipsis> Iterators </span> </a> </li> <li class=md-nav__item> <a href=../../../features/json_pointer/ class=md-nav__link> <span class=md-ellipsis> JSON Pointer </span> </a> </li> <li class=md-nav__item> <a href=../../../features/json_patch/ class=md-nav__link> <span class=md-ellipsis> JSON Patch and Diff </span> </a> </li> <li class=md-nav__item> <a href=../../../features/merge_patch/ class=md-nav__link> <span class=md-ellipsis> JSON Merge Patch </span> </a> </li> <li class=md-nav__item> <a href=../../../features/modules/ class=md-nav__link> <span class=md-ellipsis> Modules </span> </a> </li> <li class=md-nav__item> <a href=../../../features/namespace/ class=md-nav__link> <span class=md-ellipsis> nlohmann Namespace </span> </a> </li> <li class=md-nav__item> <a href=../../../features/object_order/ class=md-nav__link> <span class=md-ellipsis> Object Order </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_14> <div class="md-nav__link md-nav__container"> <a href=../../../features/parsing/ class="md-nav__link "> <span class=md-ellipsis> Parsing </span> </a> <label class="md-nav__link " for=__nav_2_14 id=__nav_2_14_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_14_label aria-expanded=false> <label class=md-nav__title for=__nav_2_14> <span class="md-nav__icon md-icon"></span> Parsing </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/parsing/json_lines/ class=md-nav__link> <span class=md-ellipsis> JSON Lines </span> </a> </li> <li class=md-nav__item> <a href=../../../features/parsing/parse_exceptions/ class=md-nav__link> <span class=md-ellipsis> Parsing and Exceptions </span> </a> </li> <li class=md-nav__item> <a href=../../../features/parsing/parser_callbacks/ class=md-nav__link> <span class=md-ellipsis> Parser Callbacks </span> </a> </li> <li class=md-nav__item> <a href=../../../features/parsing/sax_interface/ class=md-nav__link> <span class=md-ellipsis> SAX Interface </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../../features/assertions/ class=md-nav__link> <span class=md-ellipsis> Runtime Assertions </span> </a> </li> <li class=md-nav__item> <a href=../../../features/enum_conversion/ class=md-nav__link> <span class=md-ellipsis> Specializing enum conversion </span> </a> </li> <li class=md-nav__item> <a href=../../../features/macros/ class=md-nav__link> <span class=md-ellipsis> Supported Macros </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_18> <div class="md-nav__link md-nav__container"> <a href=../../../features/types/ class="md-nav__link "> <span class=md-ellipsis> Types </span> </a> <label class="md-nav__link " for=__nav_2_18 id=__nav_2_18_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_18_label aria-expanded=false> <label class=md-nav__title for=__nav_2_18> <span class="md-nav__icon md-icon"></span> Types </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/types/number_handling/ class=md-nav__link> <span class=md-ellipsis> Number Handling </span> </a> </li> </ul> </nav> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_3> <div class="md-nav__link md-nav__container"> <a href=../../../integration/ class="md-nav__link "> <span class=md-ellipsis> Integration </span> </a> <label class="md-nav__link " for=__nav_3 id=__nav_3_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_3_label aria-expanded=false> <label class=md-nav__title for=__nav_3> <span class="md-nav__icon md-icon"></span> Integration </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../integration/migration_guide/ class=md-nav__link> <span class=md-ellipsis> Migration Guide </span> </a> </li> <li class=md-nav__item> <a href=../../../integration/cmake/ class=md-nav__link> <span class=md-ellipsis> CMake </span> </a> </li> <li class=md-nav__item> <a href=../../../integration/package_managers/ class=md-nav__link> <span class=md-ellipsis> Package Managers </span> </a> </li> <li class=md-nav__item> <a href=../../../integration/pkg-config/ class=md-nav__link> <span class=md-ellipsis> Pkg-config </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--active md-nav__item--section md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4 checked> <label class=md-nav__link for=__nav_4 id=__nav_4_label tabindex> <span class=md-ellipsis> API Documentation </span> <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_4_label aria-expanded=true> <label class=md-nav__title for=__nav_4> <span class="md-nav__icon md-icon"></span> API Documentation </label> <ul class=md-nav__list data-md-scrollfix> <li class="md-nav__item md-nav__item--active md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_1 checked> <div class="md-nav__link md-nav__container"> <a href=../ class="md-nav__link "> <span class=md-ellipsis> basic_json </span> </a> <label class="md-nav__link " for=__nav_4_1 id=__nav_4_1_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_1_label aria-expanded=true> <label class=md-nav__title for=__nav_4_1> <span class="md-nav__icon md-icon"></span> basic_json </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../basic_json/ class=md-nav__link> <span class=md-ellipsis> (Constructor) </span> </a> </li> <li class=md-nav__item> <a href=../~basic_json/ class=md-nav__link> <span class=md-ellipsis> (Destructor) </span> </a> </li> <li class=md-nav__item> <a href=../accept/ class=md-nav__link> <span class=md-ellipsis> accept </span> </a> </li> <li class=md-nav__item> <a href=../array/ class=md-nav__link> <span class=md-ellipsis> array </span> </a> </li> <li class=md-nav__item> <a href=../array_t/ class=md-nav__link> <span class=md-ellipsis> array_t </span> </a> </li> <li class=md-nav__item> <a href=../at/ class=md-nav__link> <span class=md-ellipsis> at </span> </a> </li> <li class=md-nav__item> <a href=../back/ class=md-nav__link> <span class=md-ellipsis> back </span> </a> </li> <li class=md-nav__item> <a href=../begin/ class=md-nav__link> <span class=md-ellipsis> begin </span> </a> </li> <li class=md-nav__item> <a href=../binary/ class=md-nav__link> <span class=md-ellipsis> binary </span> </a> </li> <li class=md-nav__item> <a href=../binary_t/ class=md-nav__link> <span class=md-ellipsis> binary_t </span> </a> </li> <li class=md-nav__item> <a href=../boolean_t/ class=md-nav__link> <span class=md-ellipsis> boolean_t </span> </a> </li> <li class=md-nav__item> <a href=../cbegin/ class=md-nav__link> <span class=md-ellipsis> cbegin </span> </a> </li> <li class=md-nav__item> <a href=../cbor_tag_handler_t/ class=md-nav__link> <span class=md-ellipsis> cbor_tag_handler_t </span> </a> </li> <li class=md-nav__item> <a href=../cend/ class=md-nav__link> <span class=md-ellipsis> cend </span> </a> </li> <li class=md-nav__item> <a href=../clear/ class=md-nav__link> <span class=md-ellipsis> clear </span> </a> </li> <li class=md-nav__item> <a href=../contains/ class=md-nav__link> <span class=md-ellipsis> contains </span> </a> </li> <li class=md-nav__item> <a href=../count/ class=md-nav__link> <span class=md-ellipsis> count </span> </a> </li> <li class=md-nav__item> <a href=../crbegin/ class=md-nav__link> <span class=md-ellipsis> crbegin </span> </a> </li> <li class=md-nav__item> <a href=../crend/ class=md-nav__link> <span class=md-ellipsis> crend </span> </a> </li> <li class=md-nav__item> <a href=../default_object_comparator_t/ class=md-nav__link> <span class=md-ellipsis> default_object_comparator_t </span> </a> </li> <li class=md-nav__item> <a href=../diff/ class=md-nav__link> <span class=md-ellipsis> diff </span> </a> </li> <li class=md-nav__item> <a href=../dump/ class=md-nav__link> <span class=md-ellipsis> dump </span> </a> </li> <li class=md-nav__item> <a href=../emplace/ class=md-nav__link> <span class=md-ellipsis> emplace </span> </a> </li> <li class=md-nav__item> <a href=../emplace_back/ class=md-nav__link> <span class=md-ellipsis> emplace_back </span> </a> </li> <li class=md-nav__item> <a href=../empty/ class=md-nav__link> <span class=md-ellipsis> empty </span> </a> </li> <li class=md-nav__item> <a href=../end/ class=md-nav__link> <span class=md-ellipsis> end </span> </a> </li> <li class=md-nav__item> <a href=../end_pos/ class=md-nav__link> <span class=md-ellipsis> end_pos </span> </a> </li> <li class=md-nav__item> <a href=../erase/ class=md-nav__link> <span class=md-ellipsis> erase </span> </a> </li> <li class=md-nav__item> <a href=../error_handler_t/ class=md-nav__link> <span class=md-ellipsis> error_handler_t </span> </a> </li> <li class=md-nav__item> <a href=../exception/ class=md-nav__link> <span class=md-ellipsis> exception </span> </a> </li> <li class=md-nav__item> <a href=../find/ class=md-nav__link> <span class=md-ellipsis> find </span> </a> </li> <li class=md-nav__item> <a href=../flatten/ class=md-nav__link> <span class=md-ellipsis> flatten </span> </a> </li> <li class=md-nav__item> <a href=../from_bjdata/ class=md-nav__link> <span class=md-ellipsis> from_bjdata </span> </a> </li> <li class=md-nav__item> <a href=../from_bson/ class=md-nav__link> <span class=md-ellipsis> from_bson </span> </a> </li> <li class=md-nav__item> <a href=../from_cbor/ class=md-nav__link> <span class=md-ellipsis> from_cbor </span> </a> </li> <li class=md-nav__item> <a href=../from_msgpack/ class=md-nav__link> <span class=md-ellipsis> from_msgpack </span> </a> </li> <li class=md-nav__item> <a href=../from_ubjson/ class=md-nav__link> <span class=md-ellipsis> from_ubjson </span> </a> </li> <li class=md-nav__item> <a href=../front/ class=md-nav__link> <span class=md-ellipsis> front </span> </a> </li> <li class=md-nav__item> <a href=../get/ class=md-nav__link> <span class=md-ellipsis> get </span> </a> </li> <li class=md-nav__item> <a href=../get_allocator/ class=md-nav__link> <span class=md-ellipsis> get_allocator </span> </a> </li> <li class=md-nav__item> <a href=../get_binary/ class=md-nav__link> <span class=md-ellipsis> get_binary </span> </a> </li> <li class=md-nav__item> <a href=../get_ptr/ class=md-nav__link> <span class=md-ellipsis> get_ptr </span> </a> </li> <li class=md-nav__item> <a href=../get_ref/ class=md-nav__link> <span class=md-ellipsis> get_ref </span> </a> </li> <li class=md-nav__item> <a href=../get_to/ class=md-nav__link> <span class=md-ellipsis> get_to </span> </a> </li> <li class=md-nav__item> <a href=../std_hash/ class=md-nav__link> <span class=md-ellipsis> std::hash&lt;basic_json&gt; </span> </a> </li> <li class=md-nav__item> <a href=../input_format_t/ class=md-nav__link> <span class=md-ellipsis> input_format_t </span> </a> </li> <li class=md-nav__item> <a href=../insert/ class=md-nav__link> <span class=md-ellipsis> insert </span> </a> </li> <li class=md-nav__item> <a href=../invalid_iterator/ class=md-nav__link> <span class=md-ellipsis> invalid_iterator </span> </a> </li> <li class=md-nav__item> <a href=../is_array/ class=md-nav__link> <span class=md-ellipsis> is_array </span> </a> </li> <li class=md-nav__item> <a href=../is_binary/ class=md-nav__link> <span class=md-ellipsis> is_binary </span> </a> </li> <li class=md-nav__item> <a href=../is_boolean/ class=md-nav__link> <span class=md-ellipsis> is_boolean </span> </a> </li> <li class=md-nav__item> <a href=../is_discarded/ class=md-nav__link> <span class=md-ellipsis> is_discarded </span> </a> </li> <li class=md-nav__item> <a href=../is_null/ class=md-nav__link> <span class=md-ellipsis> is_null </span> </a> </li> <li class=md-nav__item> <a href=../is_number/ class=md-nav__link> <span class=md-ellipsis> is_number </span> </a> </li> <li class=md-nav__item> <a href=../is_number_float/ class=md-nav__link> <span class=md-ellipsis> is_number_float </span> </a> </li> <li class=md-nav__item> <a href=../is_number_integer/ class=md-nav__link> <span class=md-ellipsis> is_number_integer </span> </a> </li> <li class=md-nav__item> <a href=../is_number_unsigned/ class=md-nav__link> <span class=md-ellipsis> is_number_unsigned </span> </a> </li> <li class=md-nav__item> <a href=../is_object/ class=md-nav__link> <span class=md-ellipsis> is_object </span> </a> </li> <li class=md-nav__item> <a href=../is_primitive/ class=md-nav__link> <span class=md-ellipsis> is_primitive </span> </a> </li> <li class=md-nav__item> <a href=../is_string/ class=md-nav__link> <span class=md-ellipsis> is_string </span> </a> </li> <li class=md-nav__item> <a href=../is_structured/ class=md-nav__link> <span class=md-ellipsis> is_structured </span> </a> </li> <li class=md-nav__item> <a href=../items/ class=md-nav__link> <span class=md-ellipsis> items </span> </a> </li> <li class=md-nav__item> <a href=../json_base_class_t/ class=md-nav__link> <span class=md-ellipsis> json_base_class_t </span> </a> </li> <li class=md-nav__item> <a href=../json_serializer/ class=md-nav__link> <span class=md-ellipsis> json_serializer </span> </a> </li> <li class=md-nav__item> <a href=../max_size/ class=md-nav__link> <span class=md-ellipsis> max_size </span> </a> </li> <li class=md-nav__item> <a href=../meta/ class=md-nav__link> <span class=md-ellipsis> meta </span> </a> </li> <li class=md-nav__item> <a href=../merge_patch/ class=md-nav__link> <span class=md-ellipsis> merge_patch </span> </a> </li> <li class=md-nav__item> <a href=../number_float_t/ class=md-nav__link> <span class=md-ellipsis> number_float_t </span> </a> </li> <li class=md-nav__item> <a href=../number_integer_t/ class=md-nav__link> <span class=md-ellipsis> number_integer_t </span> </a> </li> <li class=md-nav__item> <a href=../number_unsigned_t/ class=md-nav__link> <span class=md-ellipsis> number_unsigned_t </span> </a> </li> <li class=md-nav__item> <a href=../object/ class=md-nav__link> <span class=md-ellipsis> object </span> </a> </li> <li class=md-nav__item> <a href=../object_comparator_t/ class=md-nav__link> <span class=md-ellipsis> object_comparator_t </span> </a> </li> <li class=md-nav__item> <a href=../object_t/ class=md-nav__link> <span class=md-ellipsis> object_t </span> </a> </li> <li class=md-nav__item> <a href=../operator_ValueType/ class=md-nav__link> <span class=md-ellipsis> operator ValueType </span> </a> </li> <li class=md-nav__item> <a href=../operator_value_t/ class=md-nav__link> <span class=md-ellipsis> operator value_t </span> </a> </li> <li class=md-nav__item> <a href=../operator%5B%5D/ class=md-nav__link> <span class=md-ellipsis> operator[] </span> </a> </li> <li class=md-nav__item> <a href=../operator%3D/ class=md-nav__link> <span class=md-ellipsis> operator= </span> </a> </li> <li class=md-nav__item> <a href=../operator%2B%3D/ class=md-nav__link> <span class=md-ellipsis> operator+= </span> </a> </li> <li class=md-nav__item> <a href=../operator_eq/ class=md-nav__link> <span class=md-ellipsis> operator== </span> </a> </li> <li class=md-nav__item> <a href=../operator_ne/ class=md-nav__link> <span class=md-ellipsis> operator!= </span> </a> </li> <li class=md-nav__item> <a href=../operator_lt/ class=md-nav__link> <span class=md-ellipsis> operator< </span> </a> </li> <li class=md-nav__item> <a href=../operator_gt/ class=md-nav__link> <span class=md-ellipsis> operator> </span> </a> </li> <li class=md-nav__item> <a href=../operator_le/ class=md-nav__link> <span class=md-ellipsis> operator<= </span> </a> </li> <li class=md-nav__item> <a href=../operator_ge/ class=md-nav__link> <span class=md-ellipsis> operator>= </span> </a> </li> <li class=md-nav__item> <a href=../operator_spaceship/ class=md-nav__link> <span class=md-ellipsis> operator<=> </span> </a> </li> <li class=md-nav__item> <a href=../out_of_range/ class=md-nav__link> <span class=md-ellipsis> out_of_range </span> </a> </li> <li class=md-nav__item> <a href=../other_error/ class=md-nav__link> <span class=md-ellipsis> other_error </span> </a> </li> <li class=md-nav__item> <a href=../parse/ class=md-nav__link> <span class=md-ellipsis> parse </span> </a> </li> <li class=md-nav__item> <a href=../parse_error/ class=md-nav__link> <span class=md-ellipsis> parse_error </span> </a> </li> <li class=md-nav__item> <a href=../parse_event_t/ class=md-nav__link> <span class=md-ellipsis> parse_event_t </span> </a> </li> <li class=md-nav__item> <a href=../parser_callback_t/ class=md-nav__link> <span class=md-ellipsis> parser_callback_t </span> </a> </li> <li class=md-nav__item> <a href=../patch/ class=md-nav__link> <span class=md-ellipsis> patch </span> </a> </li> <li class=md-nav__item> <a href=../patch_inplace/ class=md-nav__link> <span class=md-ellipsis> patch_inplace </span> </a> </li> <li class=md-nav__item> <a href=../push_back/ class=md-nav__link> <span class=md-ellipsis> push_back </span> </a> </li> <li class=md-nav__item> <a href=../rbegin/ class=md-nav__link> <span class=md-ellipsis> rbegin </span> </a> </li> <li class=md-nav__item> <a href=../rend/ class=md-nav__link> <span class=md-ellipsis> rend </span> </a> </li> <li class=md-nav__item> <a href=../sax_parse/ class=md-nav__link> <span class=md-ellipsis> sax_parse </span> </a> </li> <li class=md-nav__item> <a href=../size/ class=md-nav__link> <span class=md-ellipsis> size </span> </a> </li> <li class=md-nav__item> <a href=../start_pos/ class=md-nav__link> <span class=md-ellipsis> start_pos </span> </a> </li> <li class=md-nav__item> <a href=../string_t/ class=md-nav__link> <span class=md-ellipsis> string_t </span> </a> </li> <li class=md-nav__item> <a href=../swap/ class=md-nav__link> <span class=md-ellipsis> swap </span> </a> </li> <li class=md-nav__item> <a href=../std_swap/ class=md-nav__link> <span class=md-ellipsis> std::swap&lt;basic_json&gt; </span> </a> </li> <li class=md-nav__item> <a href=../to_bjdata/ class=md-nav__link> <span class=md-ellipsis> to_bjdata </span> </a> </li> <li class=md-nav__item> <a href=../to_bson/ class=md-nav__link> <span class=md-ellipsis> to_bson </span> </a> </li> <li class=md-nav__item> <a href=../to_cbor/ class=md-nav__link> <span class=md-ellipsis> to_cbor </span> </a> </li> <li class=md-nav__item> <a href=../to_msgpack/ class=md-nav__link> <span class=md-ellipsis> to_msgpack </span> </a> </li> <li class=md-nav__item> <a href=../to_string/ class=md-nav__link> <span class=md-ellipsis> to_string </span> </a> </li> <li class=md-nav__item> <a href=../to_ubjson/ class=md-nav__link> <span class=md-ellipsis> to_ubjson </span> </a> </li> <li class=md-nav__item> <a href=../type/ class=md-nav__link> <span class=md-ellipsis> type </span> </a> </li> <li class=md-nav__item> <a href=../type_error/ class=md-nav__link> <span class=md-ellipsis> type_error </span> </a> </li> <li class=md-nav__item> <a href=../type_name/ class=md-nav__link> <span class=md-ellipsis> type_name </span> </a> </li> <li class=md-nav__item> <a href=../unflatten/ class=md-nav__link> <span class=md-ellipsis> unflatten </span> </a> </li> <li class="md-nav__item md-nav__item--active"> <input class="md-nav__toggle md-toggle" type=checkbox id=__toc> <label class="md-nav__link md-nav__link--active" for=__toc> <span class=md-ellipsis> update </span> <span class="md-nav__icon md-icon"></span> </label> <a href=./ class="md-nav__link md-nav__link--active"> <span class=md-ellipsis> update </span> </a> <nav class="md-nav md-nav--secondary" aria-label="Table of contents"> <label class=md-nav__title for=__toc> <span class="md-nav__icon md-icon"></span> Table of contents </label> <ul class=md-nav__list data-md-component=toc data-md-scrollfix> <li class=md-nav__item> <a href=#iterator-invalidation class=md-nav__link> <span class=md-ellipsis> Iterator invalidation </span> </a> </li> <li class=md-nav__item> <a href=#parameters class=md-nav__link> <span class=md-ellipsis> Parameters </span> </a> </li> <li class=md-nav__item> <a href=#exceptions class=md-nav__link> <span class=md-ellipsis> Exceptions </span> </a> </li> <li class=md-nav__item> <a href=#complexity class=md-nav__link> <span class=md-ellipsis> Complexity </span> </a> </li> <li class=md-nav__item> <a href=#examples class=md-nav__link> <span class=md-ellipsis> Examples </span> </a> </li> <li class=md-nav__item> <a href=#version-history class=md-nav__link> <span class=md-ellipsis> Version history </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../value/ class=md-nav__link> <span class=md-ellipsis> value </span> </a> </li> <li class=md-nav__item> <a href=../value_t/ class=md-nav__link> <span class=md-ellipsis> value_t </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_2> <div class="md-nav__link md-nav__container"> <a href=../../byte_container_with_subtype/ class="md-nav__link "> <span class=md-ellipsis> byte_container_with_subtype </span> </a> <label class="md-nav__link " for=__nav_4_2 id=__nav_4_2_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_2_label aria-expanded=false> <label class=md-nav__title for=__nav_4_2> <span class="md-nav__icon md-icon"></span> byte_container_with_subtype </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../byte_container_with_subtype/byte_container_with_subtype/ class=md-nav__link> <span class=md-ellipsis> (constructor) </span> </a> </li> <li class=md-nav__item> <a href=../../byte_container_with_subtype/clear_subtype/ class=md-nav__link> <span class=md-ellipsis> clear_subtype </span> </a> </li> <li class=md-nav__item> <a href=../../byte_container_with_subtype/has_subtype/ class=md-nav__link> <span class=md-ellipsis> has_subtype </span> </a> </li> <li class=md-nav__item> <a href=../../byte_container_with_subtype/set_subtype/ class=md-nav__link> <span class=md-ellipsis> set_subtype </span> </a> </li> <li class=md-nav__item> <a href=../../byte_container_with_subtype/subtype/ class=md-nav__link> <span class=md-ellipsis> subtype </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_3> <div class="md-nav__link md-nav__container"> <a href=../../adl_serializer/ class="md-nav__link "> <span class=md-ellipsis> adl_serializer </span> </a> <label class="md-nav__link " for=__nav_4_3 id=__nav_4_3_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_3_label aria-expanded=false> <label class=md-nav__title for=__nav_4_3> <span class="md-nav__icon md-icon"></span> adl_serializer </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../adl_serializer/from_json/ class=md-nav__link> <span class=md-ellipsis> from_json </span> </a> </li> <li class=md-nav__item> <a href=../../adl_serializer/to_json/ class=md-nav__link> <span class=md-ellipsis> to_json </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../json/ class=md-nav__link> <span class=md-ellipsis> json </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_5> <div class="md-nav__link md-nav__container"> <a href=../../json_pointer/ class="md-nav__link "> <span class=md-ellipsis> json_pointer </span> </a> <label class="md-nav__link " for=__nav_4_5 id=__nav_4_5_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_5_label aria-expanded=false> <label class=md-nav__title for=__nav_4_5> <span class="md-nav__icon md-icon"></span> json_pointer </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../json_pointer/json_pointer/ class=md-nav__link> <span class=md-ellipsis> (Constructor) </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/back/ class=md-nav__link> <span class=md-ellipsis> back </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/empty/ class=md-nav__link> <span class=md-ellipsis> empty </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/front/ class=md-nav__link> <span class=md-ellipsis> front </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_string_t/ class=md-nav__link> <span class=md-ellipsis> operator string_t </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_eq/ class=md-nav__link> <span class=md-ellipsis> operator== </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_ne/ class=md-nav__link> <span class=md-ellipsis> operator!= </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_slash/ class=md-nav__link> <span class=md-ellipsis> operator/ </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_slasheq/ class=md-nav__link> <span class=md-ellipsis> operator/= </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/parent_pointer/ class=md-nav__link> <span class=md-ellipsis> parent_pointer </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/pop_back/ class=md-nav__link> <span class=md-ellipsis> pop_back </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/pop_front/ class=md-nav__link> <span class=md-ellipsis> pop_front </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/push_back/ class=md-nav__link> <span class=md-ellipsis> push_back </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/push_front/ class=md-nav__link> <span class=md-ellipsis> push_front </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/string_t/ class=md-nav__link> <span class=md-ellipsis> string_t </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/to_string/ class=md-nav__link> <span class=md-ellipsis> to_string </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_6> <div class="md-nav__link md-nav__container"> <a href=../../json_sax/ class="md-nav__link "> <span class=md-ellipsis> json_sax </span> </a> <label class="md-nav__link " for=__nav_4_6 id=__nav_4_6_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_6_label aria-expanded=false> <label class=md-nav__title for=__nav_4_6> <span class="md-nav__icon md-icon"></span> json_sax </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../json_sax/binary/ class=md-nav__link> <span class=md-ellipsis> binary </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/boolean/ class=md-nav__link> <span class=md-ellipsis> boolean </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/end_array/ class=md-nav__link> <span class=md-ellipsis> end_array </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/end_object/ class=md-nav__link> <span class=md-ellipsis> end_object </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/key/ class=md-nav__link> <span class=md-ellipsis> key </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/null/ class=md-nav__link> <span class=md-ellipsis> null </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/number_float/ class=md-nav__link> <span class=md-ellipsis> number_float </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/number_integer/ class=md-nav__link> <span class=md-ellipsis> number_integer </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/number_unsigned/ class=md-nav__link> <span class=md-ellipsis> number_unsigned </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/parse_error/ class=md-nav__link> <span class=md-ellipsis> parse_error </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/start_array/ class=md-nav__link> <span class=md-ellipsis> start_array </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/start_object/ class=md-nav__link> <span class=md-ellipsis> start_object </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/string/ class=md-nav__link> <span class=md-ellipsis> string </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../operator_ltlt/ class=md-nav__link> <span class=md-ellipsis> operator<<(basic_json), operator<<(json_pointer) </span> </a> </li> <li class=md-nav__item> <a href=../../operator_gtgt/ class=md-nav__link> <span class=md-ellipsis> operator>>(basic_json) </span> </a> </li> <li class=md-nav__item> <a href=../../operator_literal_json/ class=md-nav__link> <span class=md-ellipsis> operator""_json </span> </a> </li> <li class=md-nav__item> <a href=../../operator_literal_json_pointer/ class=md-nav__link> <span class=md-ellipsis> operator""_json_pointer </span> </a> </li> <li class=md-nav__item> <a href=../../ordered_json/ class=md-nav__link> <span class=md-ellipsis> ordered_json </span> </a> </li> <li class=md-nav__item> <a href=../../ordered_map/ class=md-nav__link> <span class=md-ellipsis> ordered_map </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_13> <div class="md-nav__link md-nav__container"> <a href=../../macros/ class="md-nav__link "> <span class=md-ellipsis> macros </span> </a> <label class="md-nav__link " for=__nav_4_13 id=__nav_4_13_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_13_label aria-expanded=false> <label class=md-nav__title for=__nav_4_13> <span class="md-nav__icon md-icon"></span> macros </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../macros/json_assert/ class=md-nav__link> <span class=md-ellipsis> JSON_ASSERT </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_brace_init_copy_semantics/ class=md-nav__link> <span class=md-ellipsis> JSON_BRACE_INIT_COPY_SEMANTICS </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_throw_user/ class=md-nav__link> <span class=md-ellipsis> JSON_CATCH_USER, JSON_THROW_USER, JSON_TRY_USER </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_diagnostics/ class=md-nav__link> <span class=md-ellipsis> JSON_DIAGNOSTICS </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_diagnostic_positions/ class=md-nav__link> <span class=md-ellipsis> JSON_DIAGNOSTIC_POSITIONS </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_disable_enum_serialization/ class=md-nav__link> <span class=md-ellipsis> JSON_DISABLE_ENUM_SERIALIZATION </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_has_cpp_11/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_CPP_11, JSON_HAS_CPP_14, JSON_HAS_CPP_17, JSON_HAS_CPP_20 </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_has_filesystem/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_EXPERIMENTAL_FILESYSTEM, JSON_HAS_FILESYSTEM </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_has_ranges/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_RANGES </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_has_static_rtti/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_STATIC_RTTI </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_has_three_way_comparison/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_THREE_WAY_COMPARISON </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_noexception/ class=md-nav__link> <span class=md-ellipsis> JSON_NOEXCEPTION </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_no_io/ class=md-nav__link> <span class=md-ellipsis> JSON_NO_IO </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_skip_library_version_check/ class=md-nav__link> <span class=md-ellipsis> JSON_SKIP_LIBRARY_VERSION_CHECK </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_skip_unsupported_compiler_check/ class=md-nav__link> <span class=md-ellipsis> JSON_SKIP_UNSUPPORTED_COMPILER_CHECK </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_use_global_udls/ class=md-nav__link> <span class=md-ellipsis> JSON_USE_GLOBAL_UDLS </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_use_implicit_conversions/ class=md-nav__link> <span class=md-ellipsis> JSON_USE_IMPLICIT_CONVERSIONS </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_use_legacy_discarded_value_comparison/ class=md-nav__link> <span class=md-ellipsis> JSON_USE_LEGACY_DISCARDED_VALUE_COMPARISON </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_define_derived_type/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_ONLY_SERIALIZE, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_define_type_intrusive/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_TYPE_INTRUSIVE, NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_TYPE_INTRUSIVE_ONLY_SERIALIZE </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_define_type_non_intrusive/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_define_type_with_names/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_TYPE_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_namespace/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_NAMESPACE </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_namespace_begin/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_NAMESPACE_BEGIN, NLOHMANN_JSON_NAMESPACE_END </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_namespace_no_version/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_NAMESPACE_NO_VERSION </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_serialize_enum/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_SERIALIZE_ENUM </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_serialize_enum_strict/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_SERIALIZE_ENUM_STRICT </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_version_major/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_VERSION_MAJOR, NLOHMANN_JSON_VERSION_MINOR, NLOHMANN_JSON_VERSION_PATCH </span> </a> </li> </ul> </nav> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_5> <div class="md-nav__link md-nav__container"> <a href=../../../community/ class="md-nav__link "> <span class=md-ellipsis> Community </span> </a> <label class="md-nav__link " for=__nav_5 id=__nav_5_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_5_label aria-expanded=false> <label class=md-nav__title for=__nav_5> <span class="md-nav__icon md-icon"></span> Community </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../community/code_of_conduct/ class=md-nav__link> <span class=md-ellipsis> Code of Conduct </span> </a> </li> <li class=md-nav__item> <a href=../../../community/contribution_guidelines/ class=md-nav__link> <span class=md-ellipsis> Contribution Guidelines </span> </a> </li> <li class=md-nav__item> <a href=../../../community/quality_assurance/ class=md-nav__link> <span class=md-ellipsis> Quality assurance </span> </a> </li> <li class=md-nav__item> <a href=../../../community/governance/ class=md-nav__link> <span class=md-ellipsis> Governance </span> </a> </li> <li class=md-nav__item> <a href=../../../community/security_policy/ class=md-nav__link> <span class=md-ellipsis> Security Policy </span> </a> </li> </ul> </nav> </li> </ul> </nav> </div> </div> </div> <div class="md-sidebar md-sidebar--secondary" data-md-component=sidebar data-md-type=toc> <div class=md-sidebar__scrollwrap> <div class=md-sidebar__inner> <nav class="md-nav md-nav--secondary" aria-label="Table of contents"> <label class=md-nav__title for=__toc> <span class="md-nav__icon md-icon"></span> Table of contents </label> <ul class=md-nav__list data-md-component=toc data-md-scrollfix> <li class=md-nav__item> <a href=#iterator-invalidation class=md-nav__link> <span class=md-ellipsis> Iterator invalidation </span> </a> </li> <li class=md-nav__item> <a href=#parameters class=md-nav__link> <span class=md-ellipsis> Parameters </span> </a> </li> <li class=md-nav__item> <a href=#exceptions class=md-nav__link> <span class=md-ellipsis> Exceptions </span> </a> </li> <li class=md-nav__item> <a href=#complexity class=md-nav__link> <span class=md-ellipsis> Complexity </span> </a> </li> <li class=md-nav__item> <a href=#examples class=md-nav__link> <span class=md-ellipsis> Examples </span> </a> </li> <li class=md-nav__item> <a href=#version-history class=md-nav__link> <span class=md-ellipsis> Version history </span> </a> </li> </ul> </nav> </div> </div> </div> <div class=md-content data-md-component=content> <article class="md-content__inner md-typeset"> <a href="https://github.com/nlohmann/json/edit/develop/docs/mkdocs/docs/api/basic_json/update.md" title="Edit this page" class="md-content__button md-icon" rel="edit"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M10 20H6V4h7v5h5v3.1l2-2V8l-6-6H6c-1.1 0-2 .9-2 2v16c0 1.1.9 2 2 2h4zm10.2-7c.1 0 .3.1.4.2l1.3 1.3c.2.2.2.6 0 .8l-1 1-2.1-2.1 1-1c.1-.1.2-.2.4-.2m0 3.9L14.1 23H12v-2.1l6.1-6.1z"/></svg> </a> <a href="https://github.com/nlohmann/json/raw/develop/docs/mkdocs/docs/api/basic_json/update.md" title="View source of this page" class="md-content__button md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M17 18c.56 0 1 .44 1 1s-.44 1-1 1-1-.44-1-1 .44-1 1-1m0-3c-2.73 0-5.06 1.66-6 4 .94 2.34 3.27 4 6 4s5.06-1.66 6-4c-.94-2.34-3.27-4-6-4m0 6.5a2.5 2.5 0 0 1-2.5-2.5 2.5 2.5 0 0 1 2.5-2.5 2.5 2.5 0 0 1 2.5 2.5 2.5 2.5 0 0 1-2.5 2.5M9.27 20H6V4h7v5h5v4.07c.7.08 1.36.25 2 .49V8l-6-6H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h4.5a8.2 8.2 0 0 1-1.23-2"/></svg> </a> <h1 id=nlohmannbasic_jsonupdate><small>nlohmann::basic_json::</small>update<a class=headerlink href=#nlohmannbasic_jsonupdate title="Permanent link">&para;</a></h1> <div class=highlight><pre><span></span><code><span class=c1>// (1)</span>
+<!doctype html><html lang=en class=no-js> <head><meta charset=utf-8><meta name=viewport content="width=device-width,initial-scale=1"><meta name=author content="Niels Lohmann"><link href="https://json.nlohmann.me/api/basic_json/update/" rel="canonical"><link href=../unflatten/ rel=prev><link href=../value/ rel=next><link rel=icon href=../../../assets/images/favicon.png><meta name=generator content="mkdocs-1.6.1, mkdocs-material-9.7.6"><title>update - JSON for Modern C++</title><link rel=stylesheet href=../../../assets/stylesheets/main.484c7ddc.min.css><link rel=stylesheet href=../../../assets/stylesheets/palette.ab4e12ef.min.css><link rel="stylesheet" href="../../../assets/external/fonts.googleapis.com/css.61a430c9.css"><style>:root{--md-text-font:"Roboto";--md-code-font:"JetBrains Mono"}</style><link rel=stylesheet href=../../../css/custom.css><script>__md_scope=new URL("../../..",location),__md_hash=e=>[...e].reduce(((e,_)=>(e<<5)-e+_.charCodeAt(0)),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script></head> <body dir=ltr data-md-color-scheme=default data-md-color-primary=indigo data-md-color-accent=indigo> <input class=md-toggle data-md-toggle=drawer type=checkbox id=__drawer autocomplete=off> <input class=md-toggle data-md-toggle=search type=checkbox id=__search autocomplete=off> <label class=md-overlay for=__drawer></label> <div data-md-component=skip> <a href=#nlohmannbasic_jsonupdate class=md-skip> Skip to content </a> </div> <div data-md-component=announce> </div> <header class=md-header data-md-component=header> <nav class="md-header__inner md-grid" aria-label=Header> <a href=../../.. title="JSON for Modern C++" class="md-header__button md-logo" aria-label="JSON for Modern C++" data-md-component=logo> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54"/></svg> </a> <label class="md-header__button md-icon" for=__drawer> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M3 6h18v2H3zm0 5h18v2H3zm0 5h18v2H3z"/></svg> </label> <div class=md-header__title data-md-component=header-title> <div class=md-header__ellipsis> <div class=md-header__topic> <span class=md-ellipsis> JSON for Modern C++ </span> </div> <div class=md-header__topic data-md-component=header-topic> <span class=md-ellipsis> update </span> </div> </div> </div> <form class=md-header__option data-md-component=palette> <input class=md-option data-md-color-media="(prefers-color-scheme: light)" data-md-color-scheme=default data-md-color-primary=indigo data-md-color-accent=indigo aria-label="Switch to dark mode" type=radio name=__palette id=__palette_0> <label class="md-header__button md-icon" title="Switch to dark mode" for=__palette_1 hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a4 4 0 0 0-4 4 4 4 0 0 0 4 4 4 4 0 0 0 4-4 4 4 0 0 0-4-4m0 10a6 6 0 0 1-6-6 6 6 0 0 1 6-6 6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12z"/></svg> </label> <input class=md-option data-md-color-media="(prefers-color-scheme: dark)" data-md-color-scheme=slate data-md-color-primary=indigo data-md-color-accent=indigo aria-label="Switch to light mode" type=radio name=__palette id=__palette_1> <label class="md-header__button md-icon" title="Switch to light mode" for=__palette_0 hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 18c-.89 0-1.74-.2-2.5-.55C11.56 16.5 13 14.42 13 12s-1.44-4.5-3.5-5.45C10.26 6.2 11.11 6 12 6a6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12z"/></svg> </label> </form> <script>var palette=__md_get("__palette");if(palette&&palette.color){if("(prefers-color-scheme)"===palette.color.media){var media=matchMedia("(prefers-color-scheme: light)"),input=document.querySelector(media.matches?"[data-md-color-media='(prefers-color-scheme: light)']":"[data-md-color-media='(prefers-color-scheme: dark)']");palette.color.media=input.getAttribute("data-md-color-media"),palette.color.scheme=input.getAttribute("data-md-color-scheme"),palette.color.primary=input.getAttribute("data-md-color-primary"),palette.color.accent=input.getAttribute("data-md-color-accent")}for(var[key,value]of Object.entries(palette.color))document.body.setAttribute("data-md-color-"+key,value)}</script> <label class="md-header__button md-icon" for=__search> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg> </label> <div class=md-search data-md-component=search role=dialog> <label class=md-search__overlay for=__search></label> <div class=md-search__inner role=search> <form class=md-search__form name=search> <input type=text class=md-search__input name=query aria-label=Search placeholder=Search autocapitalize=off autocorrect=off autocomplete=off spellcheck=false data-md-component=search-query required> <label class="md-search__icon md-icon" for=__search> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11z"/></svg> </label> <nav class=md-search__options aria-label=Search> <button type=reset class="md-search__icon md-icon" title=Clear aria-label=Clear tabindex=-1> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z"/></svg> </button> </nav> </form> <div class=md-search__output> <div class=md-search__scrollwrap tabindex=0 data-md-scrollfix> <div class=md-search-result data-md-component=search-result> <div class=md-search-result__meta> Initializing search </div> <ol class=md-search-result__list role=presentation></ol> </div> </div> </div> </div> </div> <div class=md-header__source> <a href="https://github.com/nlohmann/json" title="Go to repository" class="md-source" data-md-component="source"> <div class="md-source__icon md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </div> <div class=md-source__repository> nlohmann/json </div> </a> </div> </nav> </header> <div class=md-container data-md-component=container> <nav class=md-tabs aria-label=Tabs data-md-component=tabs> <div class=md-grid> <ul class=md-tabs__list> <li class=md-tabs__item> <a href=../../.. class=md-tabs__link> Home </a> </li> <li class=md-tabs__item> <a href=../../../features/arbitrary_types/ class=md-tabs__link> Features </a> </li> <li class=md-tabs__item> <a href=../../../integration/ class=md-tabs__link> Integration </a> </li> <li class="md-tabs__item md-tabs__item--active"> <a href=../ class=md-tabs__link> API Documentation </a> </li> <li class=md-tabs__item> <a href=../../../community/ class=md-tabs__link> Community </a> </li> </ul> </div> </nav> <main class=md-main data-md-component=main> <div class="md-main__inner md-grid"> <div class="md-sidebar md-sidebar--primary" data-md-component=sidebar data-md-type=navigation> <div class=md-sidebar__scrollwrap> <div class=md-sidebar__inner> <nav class="md-nav md-nav--primary md-nav--lifted" aria-label=Navigation data-md-level=0> <label class=md-nav__title for=__drawer> <a href=../../.. title="JSON for Modern C++" class="md-nav__button md-logo" aria-label="JSON for Modern C++" data-md-component=logo> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54"/></svg> </a> JSON for Modern C++ </label> <div class=md-nav__source> <a href="https://github.com/nlohmann/json" title="Go to repository" class="md-source" data-md-component="source"> <div class="md-source__icon md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </div> <div class=md-source__repository> nlohmann/json </div> </a> </div> <ul class=md-nav__list data-md-scrollfix> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_1> <div class="md-nav__link md-nav__container"> <a href=../../.. class="md-nav__link "> <span class=md-ellipsis> Home </span> </a> <label class="md-nav__link " for=__nav_1 id=__nav_1_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_1_label aria-expanded=false> <label class=md-nav__title for=__nav_1> <span class="md-nav__icon md-icon"></span> Home </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../home/license/ class=md-nav__link> <span class=md-ellipsis> License </span> </a> </li> <li class=md-nav__item> <a href=../../../home/faq/ class=md-nav__link> <span class=md-ellipsis> FAQ </span> </a> </li> <li class=md-nav__item> <a href=../../../home/exceptions/ class=md-nav__link> <span class=md-ellipsis> Exceptions </span> </a> </li> <li class=md-nav__item> <a href=../../../home/releases/ class=md-nav__link> <span class=md-ellipsis> Releases </span> </a> </li> <li class=md-nav__item> <a href=../../../home/design_goals/ class=md-nav__link> <span class=md-ellipsis> Design goals </span> </a> </li> <li class=md-nav__item> <a href=../../../home/architecture/ class=md-nav__link> <span class=md-ellipsis> Architecture </span> </a> </li> <li class=md-nav__item> <a href=../../../home/customers/ class=md-nav__link> <span class=md-ellipsis> Customers </span> </a> </li> <li class=md-nav__item> <a href=../../../home/sponsors/ class=md-nav__link> <span class=md-ellipsis> Sponsors </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2> <label class=md-nav__link for=__nav_2 id=__nav_2_label tabindex=0> <span class=md-ellipsis> Features </span> <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_2_label aria-expanded=false> <label class=md-nav__title for=__nav_2> <span class="md-nav__icon md-icon"></span> Features </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/arbitrary_types/ class=md-nav__link> <span class=md-ellipsis> Arbitrary Type Conversions </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_2> <div class="md-nav__link md-nav__container"> <a href=../../../features/binary_formats/ class="md-nav__link "> <span class=md-ellipsis> Binary Formats </span> </a> <label class="md-nav__link " for=__nav_2_2 id=__nav_2_2_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_2_label aria-expanded=false> <label class=md-nav__title for=__nav_2_2> <span class="md-nav__icon md-icon"></span> Binary Formats </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/binary_formats/bjdata/ class=md-nav__link> <span class=md-ellipsis> BJData </span> </a> </li> <li class=md-nav__item> <a href=../../../features/binary_formats/bson/ class=md-nav__link> <span class=md-ellipsis> BSON </span> </a> </li> <li class=md-nav__item> <a href=../../../features/binary_formats/cbor/ class=md-nav__link> <span class=md-ellipsis> CBOR </span> </a> </li> <li class=md-nav__item> <a href=../../../features/binary_formats/messagepack/ class=md-nav__link> <span class=md-ellipsis> MessagePack </span> </a> </li> <li class=md-nav__item> <a href=../../../features/binary_formats/ubjson/ class=md-nav__link> <span class=md-ellipsis> UBJSON </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../../features/binary_values/ class=md-nav__link> <span class=md-ellipsis> Binary Values </span> </a> </li> <li class=md-nav__item> <a href=../../../features/comments/ class=md-nav__link> <span class=md-ellipsis> Comments </span> </a> </li> <li class=md-nav__item> <a href=../../../features/trailing_commas/ class=md-nav__link> <span class=md-ellipsis> Trailing Commas </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_6> <div class="md-nav__link md-nav__container"> <a href=../../../features/element_access/ class="md-nav__link "> <span class=md-ellipsis> Element Access </span> </a> <label class="md-nav__link " for=__nav_2_6 id=__nav_2_6_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_6_label aria-expanded=false> <label class=md-nav__title for=__nav_2_6> <span class="md-nav__icon md-icon"></span> Element Access </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/element_access/unchecked_access/ class=md-nav__link> <span class=md-ellipsis> Unchecked access: operator[] </span> </a> </li> <li class=md-nav__item> <a href=../../../features/element_access/checked_access/ class=md-nav__link> <span class=md-ellipsis> Checked access: at </span> </a> </li> <li class=md-nav__item> <a href=../../../features/element_access/default_value/ class=md-nav__link> <span class=md-ellipsis> Access with default value: value </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../../features/iterators/ class=md-nav__link> <span class=md-ellipsis> Iterators </span> </a> </li> <li class=md-nav__item> <a href=../../../features/json_pointer/ class=md-nav__link> <span class=md-ellipsis> JSON Pointer </span> </a> </li> <li class=md-nav__item> <a href=../../../features/json_patch/ class=md-nav__link> <span class=md-ellipsis> JSON Patch and Diff </span> </a> </li> <li class=md-nav__item> <a href=../../../features/merge_patch/ class=md-nav__link> <span class=md-ellipsis> JSON Merge Patch </span> </a> </li> <li class=md-nav__item> <a href=../../../features/modules/ class=md-nav__link> <span class=md-ellipsis> Modules </span> </a> </li> <li class=md-nav__item> <a href=../../../features/namespace/ class=md-nav__link> <span class=md-ellipsis> nlohmann Namespace </span> </a> </li> <li class=md-nav__item> <a href=../../../features/object_order/ class=md-nav__link> <span class=md-ellipsis> Object Order </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_14> <div class="md-nav__link md-nav__container"> <a href=../../../features/parsing/ class="md-nav__link "> <span class=md-ellipsis> Parsing </span> </a> <label class="md-nav__link " for=__nav_2_14 id=__nav_2_14_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_14_label aria-expanded=false> <label class=md-nav__title for=__nav_2_14> <span class="md-nav__icon md-icon"></span> Parsing </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/parsing/json_lines/ class=md-nav__link> <span class=md-ellipsis> JSON Lines </span> </a> </li> <li class=md-nav__item> <a href=../../../features/parsing/parse_exceptions/ class=md-nav__link> <span class=md-ellipsis> Parsing and Exceptions </span> </a> </li> <li class=md-nav__item> <a href=../../../features/parsing/parser_callbacks/ class=md-nav__link> <span class=md-ellipsis> Parser Callbacks </span> </a> </li> <li class=md-nav__item> <a href=../../../features/parsing/sax_interface/ class=md-nav__link> <span class=md-ellipsis> SAX Interface </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../../features/assertions/ class=md-nav__link> <span class=md-ellipsis> Runtime Assertions </span> </a> </li> <li class=md-nav__item> <a href=../../../features/enum_conversion/ class=md-nav__link> <span class=md-ellipsis> Specializing enum conversion </span> </a> </li> <li class=md-nav__item> <a href=../../../features/macros/ class=md-nav__link> <span class=md-ellipsis> Supported Macros </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_18> <div class="md-nav__link md-nav__container"> <a href=../../../features/types/ class="md-nav__link "> <span class=md-ellipsis> Types </span> </a> <label class="md-nav__link " for=__nav_2_18 id=__nav_2_18_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_18_label aria-expanded=false> <label class=md-nav__title for=__nav_2_18> <span class="md-nav__icon md-icon"></span> Types </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/types/number_handling/ class=md-nav__link> <span class=md-ellipsis> Number Handling </span> </a> </li> </ul> </nav> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_3> <div class="md-nav__link md-nav__container"> <a href=../../../integration/ class="md-nav__link "> <span class=md-ellipsis> Integration </span> </a> <label class="md-nav__link " for=__nav_3 id=__nav_3_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_3_label aria-expanded=false> <label class=md-nav__title for=__nav_3> <span class="md-nav__icon md-icon"></span> Integration </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../integration/migration_guide/ class=md-nav__link> <span class=md-ellipsis> Migration Guide </span> </a> </li> <li class=md-nav__item> <a href=../../../integration/cmake/ class=md-nav__link> <span class=md-ellipsis> CMake </span> </a> </li> <li class=md-nav__item> <a href=../../../integration/package_managers/ class=md-nav__link> <span class=md-ellipsis> Package Managers </span> </a> </li> <li class=md-nav__item> <a href=../../../integration/pkg-config/ class=md-nav__link> <span class=md-ellipsis> Pkg-config </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--active md-nav__item--section md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4 checked> <label class=md-nav__link for=__nav_4 id=__nav_4_label tabindex> <span class=md-ellipsis> API Documentation </span> <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_4_label aria-expanded=true> <label class=md-nav__title for=__nav_4> <span class="md-nav__icon md-icon"></span> API Documentation </label> <ul class=md-nav__list data-md-scrollfix> <li class="md-nav__item md-nav__item--active md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_1 checked> <div class="md-nav__link md-nav__container"> <a href=../ class="md-nav__link "> <span class=md-ellipsis> basic_json </span> </a> <label class="md-nav__link " for=__nav_4_1 id=__nav_4_1_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_1_label aria-expanded=true> <label class=md-nav__title for=__nav_4_1> <span class="md-nav__icon md-icon"></span> basic_json </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../basic_json/ class=md-nav__link> <span class=md-ellipsis> (Constructor) </span> </a> </li> <li class=md-nav__item> <a href=../~basic_json/ class=md-nav__link> <span class=md-ellipsis> (Destructor) </span> </a> </li> <li class=md-nav__item> <a href=../accept/ class=md-nav__link> <span class=md-ellipsis> accept </span> </a> </li> <li class=md-nav__item> <a href=../array/ class=md-nav__link> <span class=md-ellipsis> array </span> </a> </li> <li class=md-nav__item> <a href=../array_t/ class=md-nav__link> <span class=md-ellipsis> array_t </span> </a> </li> <li class=md-nav__item> <a href=../at/ class=md-nav__link> <span class=md-ellipsis> at </span> </a> </li> <li class=md-nav__item> <a href=../back/ class=md-nav__link> <span class=md-ellipsis> back </span> </a> </li> <li class=md-nav__item> <a href=../begin/ class=md-nav__link> <span class=md-ellipsis> begin </span> </a> </li> <li class=md-nav__item> <a href=../binary/ class=md-nav__link> <span class=md-ellipsis> binary </span> </a> </li> <li class=md-nav__item> <a href=../binary_t/ class=md-nav__link> <span class=md-ellipsis> binary_t </span> </a> </li> <li class=md-nav__item> <a href=../boolean_t/ class=md-nav__link> <span class=md-ellipsis> boolean_t </span> </a> </li> <li class=md-nav__item> <a href=../cbegin/ class=md-nav__link> <span class=md-ellipsis> cbegin </span> </a> </li> <li class=md-nav__item> <a href=../cbor_tag_handler_t/ class=md-nav__link> <span class=md-ellipsis> cbor_tag_handler_t </span> </a> </li> <li class=md-nav__item> <a href=../cend/ class=md-nav__link> <span class=md-ellipsis> cend </span> </a> </li> <li class=md-nav__item> <a href=../clear/ class=md-nav__link> <span class=md-ellipsis> clear </span> </a> </li> <li class=md-nav__item> <a href=../contains/ class=md-nav__link> <span class=md-ellipsis> contains </span> </a> </li> <li class=md-nav__item> <a href=../count/ class=md-nav__link> <span class=md-ellipsis> count </span> </a> </li> <li class=md-nav__item> <a href=../crbegin/ class=md-nav__link> <span class=md-ellipsis> crbegin </span> </a> </li> <li class=md-nav__item> <a href=../crend/ class=md-nav__link> <span class=md-ellipsis> crend </span> </a> </li> <li class=md-nav__item> <a href=../default_object_comparator_t/ class=md-nav__link> <span class=md-ellipsis> default_object_comparator_t </span> </a> </li> <li class=md-nav__item> <a href=../diff/ class=md-nav__link> <span class=md-ellipsis> diff </span> </a> </li> <li class=md-nav__item> <a href=../dump/ class=md-nav__link> <span class=md-ellipsis> dump </span> </a> </li> <li class=md-nav__item> <a href=../emplace/ class=md-nav__link> <span class=md-ellipsis> emplace </span> </a> </li> <li class=md-nav__item> <a href=../emplace_back/ class=md-nav__link> <span class=md-ellipsis> emplace_back </span> </a> </li> <li class=md-nav__item> <a href=../empty/ class=md-nav__link> <span class=md-ellipsis> empty </span> </a> </li> <li class=md-nav__item> <a href=../end/ class=md-nav__link> <span class=md-ellipsis> end </span> </a> </li> <li class=md-nav__item> <a href=../end_pos/ class=md-nav__link> <span class=md-ellipsis> end_pos </span> </a> </li> <li class=md-nav__item> <a href=../erase/ class=md-nav__link> <span class=md-ellipsis> erase </span> </a> </li> <li class=md-nav__item> <a href=../error_handler_t/ class=md-nav__link> <span class=md-ellipsis> error_handler_t </span> </a> </li> <li class=md-nav__item> <a href=../exception/ class=md-nav__link> <span class=md-ellipsis> exception </span> </a> </li> <li class=md-nav__item> <a href=../find/ class=md-nav__link> <span class=md-ellipsis> find </span> </a> </li> <li class=md-nav__item> <a href=../flatten/ class=md-nav__link> <span class=md-ellipsis> flatten </span> </a> </li> <li class=md-nav__item> <a href=../from_bjdata/ class=md-nav__link> <span class=md-ellipsis> from_bjdata </span> </a> </li> <li class=md-nav__item> <a href=../from_bson/ class=md-nav__link> <span class=md-ellipsis> from_bson </span> </a> </li> <li class=md-nav__item> <a href=../from_cbor/ class=md-nav__link> <span class=md-ellipsis> from_cbor </span> </a> </li> <li class=md-nav__item> <a href=../from_msgpack/ class=md-nav__link> <span class=md-ellipsis> from_msgpack </span> </a> </li> <li class=md-nav__item> <a href=../from_ubjson/ class=md-nav__link> <span class=md-ellipsis> from_ubjson </span> </a> </li> <li class=md-nav__item> <a href=../front/ class=md-nav__link> <span class=md-ellipsis> front </span> </a> </li> <li class=md-nav__item> <a href=../get/ class=md-nav__link> <span class=md-ellipsis> get </span> </a> </li> <li class=md-nav__item> <a href=../get_allocator/ class=md-nav__link> <span class=md-ellipsis> get_allocator </span> </a> </li> <li class=md-nav__item> <a href=../get_binary/ class=md-nav__link> <span class=md-ellipsis> get_binary </span> </a> </li> <li class=md-nav__item> <a href=../get_ptr/ class=md-nav__link> <span class=md-ellipsis> get_ptr </span> </a> </li> <li class=md-nav__item> <a href=../get_ref/ class=md-nav__link> <span class=md-ellipsis> get_ref </span> </a> </li> <li class=md-nav__item> <a href=../get_to/ class=md-nav__link> <span class=md-ellipsis> get_to </span> </a> </li> <li class=md-nav__item> <a href=../std_hash/ class=md-nav__link> <span class=md-ellipsis> std::hash&lt;basic_json&gt; </span> </a> </li> <li class=md-nav__item> <a href=../input_format_t/ class=md-nav__link> <span class=md-ellipsis> input_format_t </span> </a> </li> <li class=md-nav__item> <a href=../insert/ class=md-nav__link> <span class=md-ellipsis> insert </span> </a> </li> <li class=md-nav__item> <a href=../invalid_iterator/ class=md-nav__link> <span class=md-ellipsis> invalid_iterator </span> </a> </li> <li class=md-nav__item> <a href=../is_array/ class=md-nav__link> <span class=md-ellipsis> is_array </span> </a> </li> <li class=md-nav__item> <a href=../is_binary/ class=md-nav__link> <span class=md-ellipsis> is_binary </span> </a> </li> <li class=md-nav__item> <a href=../is_boolean/ class=md-nav__link> <span class=md-ellipsis> is_boolean </span> </a> </li> <li class=md-nav__item> <a href=../is_discarded/ class=md-nav__link> <span class=md-ellipsis> is_discarded </span> </a> </li> <li class=md-nav__item> <a href=../is_null/ class=md-nav__link> <span class=md-ellipsis> is_null </span> </a> </li> <li class=md-nav__item> <a href=../is_number/ class=md-nav__link> <span class=md-ellipsis> is_number </span> </a> </li> <li class=md-nav__item> <a href=../is_number_float/ class=md-nav__link> <span class=md-ellipsis> is_number_float </span> </a> </li> <li class=md-nav__item> <a href=../is_number_integer/ class=md-nav__link> <span class=md-ellipsis> is_number_integer </span> </a> </li> <li class=md-nav__item> <a href=../is_number_unsigned/ class=md-nav__link> <span class=md-ellipsis> is_number_unsigned </span> </a> </li> <li class=md-nav__item> <a href=../is_object/ class=md-nav__link> <span class=md-ellipsis> is_object </span> </a> </li> <li class=md-nav__item> <a href=../is_primitive/ class=md-nav__link> <span class=md-ellipsis> is_primitive </span> </a> </li> <li class=md-nav__item> <a href=../is_string/ class=md-nav__link> <span class=md-ellipsis> is_string </span> </a> </li> <li class=md-nav__item> <a href=../is_structured/ class=md-nav__link> <span class=md-ellipsis> is_structured </span> </a> </li> <li class=md-nav__item> <a href=../items/ class=md-nav__link> <span class=md-ellipsis> items </span> </a> </li> <li class=md-nav__item> <a href=../json_base_class_t/ class=md-nav__link> <span class=md-ellipsis> json_base_class_t </span> </a> </li> <li class=md-nav__item> <a href=../json_serializer/ class=md-nav__link> <span class=md-ellipsis> json_serializer </span> </a> </li> <li class=md-nav__item> <a href=../max_size/ class=md-nav__link> <span class=md-ellipsis> max_size </span> </a> </li> <li class=md-nav__item> <a href=../meta/ class=md-nav__link> <span class=md-ellipsis> meta </span> </a> </li> <li class=md-nav__item> <a href=../merge_patch/ class=md-nav__link> <span class=md-ellipsis> merge_patch </span> </a> </li> <li class=md-nav__item> <a href=../number_float_t/ class=md-nav__link> <span class=md-ellipsis> number_float_t </span> </a> </li> <li class=md-nav__item> <a href=../number_integer_t/ class=md-nav__link> <span class=md-ellipsis> number_integer_t </span> </a> </li> <li class=md-nav__item> <a href=../number_unsigned_t/ class=md-nav__link> <span class=md-ellipsis> number_unsigned_t </span> </a> </li> <li class=md-nav__item> <a href=../object/ class=md-nav__link> <span class=md-ellipsis> object </span> </a> </li> <li class=md-nav__item> <a href=../object_comparator_t/ class=md-nav__link> <span class=md-ellipsis> object_comparator_t </span> </a> </li> <li class=md-nav__item> <a href=../object_t/ class=md-nav__link> <span class=md-ellipsis> object_t </span> </a> </li> <li class=md-nav__item> <a href=../operator_ValueType/ class=md-nav__link> <span class=md-ellipsis> operator ValueType </span> </a> </li> <li class=md-nav__item> <a href=../operator_value_t/ class=md-nav__link> <span class=md-ellipsis> operator value_t </span> </a> </li> <li class=md-nav__item> <a href=../operator%5B%5D/ class=md-nav__link> <span class=md-ellipsis> operator[] </span> </a> </li> <li class=md-nav__item> <a href=../operator%3D/ class=md-nav__link> <span class=md-ellipsis> operator= </span> </a> </li> <li class=md-nav__item> <a href=../operator%2B%3D/ class=md-nav__link> <span class=md-ellipsis> operator+= </span> </a> </li> <li class=md-nav__item> <a href=../operator_eq/ class=md-nav__link> <span class=md-ellipsis> operator== </span> </a> </li> <li class=md-nav__item> <a href=../operator_ne/ class=md-nav__link> <span class=md-ellipsis> operator!= </span> </a> </li> <li class=md-nav__item> <a href=../operator_lt/ class=md-nav__link> <span class=md-ellipsis> operator< </span> </a> </li> <li class=md-nav__item> <a href=../operator_gt/ class=md-nav__link> <span class=md-ellipsis> operator> </span> </a> </li> <li class=md-nav__item> <a href=../operator_le/ class=md-nav__link> <span class=md-ellipsis> operator<= </span> </a> </li> <li class=md-nav__item> <a href=../operator_ge/ class=md-nav__link> <span class=md-ellipsis> operator>= </span> </a> </li> <li class=md-nav__item> <a href=../operator_spaceship/ class=md-nav__link> <span class=md-ellipsis> operator<=> </span> </a> </li> <li class=md-nav__item> <a href=../out_of_range/ class=md-nav__link> <span class=md-ellipsis> out_of_range </span> </a> </li> <li class=md-nav__item> <a href=../other_error/ class=md-nav__link> <span class=md-ellipsis> other_error </span> </a> </li> <li class=md-nav__item> <a href=../parse/ class=md-nav__link> <span class=md-ellipsis> parse </span> </a> </li> <li class=md-nav__item> <a href=../parse_error/ class=md-nav__link> <span class=md-ellipsis> parse_error </span> </a> </li> <li class=md-nav__item> <a href=../parse_event_t/ class=md-nav__link> <span class=md-ellipsis> parse_event_t </span> </a> </li> <li class=md-nav__item> <a href=../parser_callback_t/ class=md-nav__link> <span class=md-ellipsis> parser_callback_t </span> </a> </li> <li class=md-nav__item> <a href=../patch/ class=md-nav__link> <span class=md-ellipsis> patch </span> </a> </li> <li class=md-nav__item> <a href=../patch_inplace/ class=md-nav__link> <span class=md-ellipsis> patch_inplace </span> </a> </li> <li class=md-nav__item> <a href=../push_back/ class=md-nav__link> <span class=md-ellipsis> push_back </span> </a> </li> <li class=md-nav__item> <a href=../rbegin/ class=md-nav__link> <span class=md-ellipsis> rbegin </span> </a> </li> <li class=md-nav__item> <a href=../rend/ class=md-nav__link> <span class=md-ellipsis> rend </span> </a> </li> <li class=md-nav__item> <a href=../sax_parse/ class=md-nav__link> <span class=md-ellipsis> sax_parse </span> </a> </li> <li class=md-nav__item> <a href=../size/ class=md-nav__link> <span class=md-ellipsis> size </span> </a> </li> <li class=md-nav__item> <a href=../start_pos/ class=md-nav__link> <span class=md-ellipsis> start_pos </span> </a> </li> <li class=md-nav__item> <a href=../string_t/ class=md-nav__link> <span class=md-ellipsis> string_t </span> </a> </li> <li class=md-nav__item> <a href=../swap/ class=md-nav__link> <span class=md-ellipsis> swap </span> </a> </li> <li class=md-nav__item> <a href=../std_swap/ class=md-nav__link> <span class=md-ellipsis> std::swap&lt;basic_json&gt; </span> </a> </li> <li class=md-nav__item> <a href=../to_bjdata/ class=md-nav__link> <span class=md-ellipsis> to_bjdata </span> </a> </li> <li class=md-nav__item> <a href=../to_bson/ class=md-nav__link> <span class=md-ellipsis> to_bson </span> </a> </li> <li class=md-nav__item> <a href=../to_cbor/ class=md-nav__link> <span class=md-ellipsis> to_cbor </span> </a> </li> <li class=md-nav__item> <a href=../to_msgpack/ class=md-nav__link> <span class=md-ellipsis> to_msgpack </span> </a> </li> <li class=md-nav__item> <a href=../to_string/ class=md-nav__link> <span class=md-ellipsis> to_string </span> </a> </li> <li class=md-nav__item> <a href=../to_ubjson/ class=md-nav__link> <span class=md-ellipsis> to_ubjson </span> </a> </li> <li class=md-nav__item> <a href=../type/ class=md-nav__link> <span class=md-ellipsis> type </span> </a> </li> <li class=md-nav__item> <a href=../type_error/ class=md-nav__link> <span class=md-ellipsis> type_error </span> </a> </li> <li class=md-nav__item> <a href=../type_name/ class=md-nav__link> <span class=md-ellipsis> type_name </span> </a> </li> <li class=md-nav__item> <a href=../unflatten/ class=md-nav__link> <span class=md-ellipsis> unflatten </span> </a> </li> <li class="md-nav__item md-nav__item--active"> <input class="md-nav__toggle md-toggle" type=checkbox id=__toc> <label class="md-nav__link md-nav__link--active" for=__toc> <span class=md-ellipsis> update </span> <span class="md-nav__icon md-icon"></span> </label> <a href=./ class="md-nav__link md-nav__link--active"> <span class=md-ellipsis> update </span> </a> <nav class="md-nav md-nav--secondary" aria-label="Table of contents"> <label class=md-nav__title for=__toc> <span class="md-nav__icon md-icon"></span> Table of contents </label> <ul class=md-nav__list data-md-component=toc data-md-scrollfix> <li class=md-nav__item> <a href=#iterator-invalidation class=md-nav__link> <span class=md-ellipsis> Iterator invalidation </span> </a> </li> <li class=md-nav__item> <a href=#parameters class=md-nav__link> <span class=md-ellipsis> Parameters </span> </a> </li> <li class=md-nav__item> <a href=#exception-safety class=md-nav__link> <span class=md-ellipsis> Exception safety </span> </a> </li> <li class=md-nav__item> <a href=#exceptions class=md-nav__link> <span class=md-ellipsis> Exceptions </span> </a> </li> <li class=md-nav__item> <a href=#complexity class=md-nav__link> <span class=md-ellipsis> Complexity </span> </a> </li> <li class=md-nav__item> <a href=#examples class=md-nav__link> <span class=md-ellipsis> Examples </span> </a> </li> <li class=md-nav__item> <a href=#see-also class=md-nav__link> <span class=md-ellipsis> See also </span> </a> </li> <li class=md-nav__item> <a href=#version-history class=md-nav__link> <span class=md-ellipsis> Version history </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../value/ class=md-nav__link> <span class=md-ellipsis> value </span> </a> </li> <li class=md-nav__item> <a href=../value_t/ class=md-nav__link> <span class=md-ellipsis> value_t </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_2> <div class="md-nav__link md-nav__container"> <a href=../../byte_container_with_subtype/ class="md-nav__link "> <span class=md-ellipsis> byte_container_with_subtype </span> </a> <label class="md-nav__link " for=__nav_4_2 id=__nav_4_2_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_2_label aria-expanded=false> <label class=md-nav__title for=__nav_4_2> <span class="md-nav__icon md-icon"></span> byte_container_with_subtype </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../byte_container_with_subtype/byte_container_with_subtype/ class=md-nav__link> <span class=md-ellipsis> (constructor) </span> </a> </li> <li class=md-nav__item> <a href=../../byte_container_with_subtype/clear_subtype/ class=md-nav__link> <span class=md-ellipsis> clear_subtype </span> </a> </li> <li class=md-nav__item> <a href=../../byte_container_with_subtype/has_subtype/ class=md-nav__link> <span class=md-ellipsis> has_subtype </span> </a> </li> <li class=md-nav__item> <a href=../../byte_container_with_subtype/set_subtype/ class=md-nav__link> <span class=md-ellipsis> set_subtype </span> </a> </li> <li class=md-nav__item> <a href=../../byte_container_with_subtype/subtype/ class=md-nav__link> <span class=md-ellipsis> subtype </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_3> <div class="md-nav__link md-nav__container"> <a href=../../adl_serializer/ class="md-nav__link "> <span class=md-ellipsis> adl_serializer </span> </a> <label class="md-nav__link " for=__nav_4_3 id=__nav_4_3_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_3_label aria-expanded=false> <label class=md-nav__title for=__nav_4_3> <span class="md-nav__icon md-icon"></span> adl_serializer </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../adl_serializer/from_json/ class=md-nav__link> <span class=md-ellipsis> from_json </span> </a> </li> <li class=md-nav__item> <a href=../../adl_serializer/to_json/ class=md-nav__link> <span class=md-ellipsis> to_json </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../json/ class=md-nav__link> <span class=md-ellipsis> json </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_5> <div class="md-nav__link md-nav__container"> <a href=../../json_pointer/ class="md-nav__link "> <span class=md-ellipsis> json_pointer </span> </a> <label class="md-nav__link " for=__nav_4_5 id=__nav_4_5_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_5_label aria-expanded=false> <label class=md-nav__title for=__nav_4_5> <span class="md-nav__icon md-icon"></span> json_pointer </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../json_pointer/json_pointer/ class=md-nav__link> <span class=md-ellipsis> (Constructor) </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/back/ class=md-nav__link> <span class=md-ellipsis> back </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/empty/ class=md-nav__link> <span class=md-ellipsis> empty </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/front/ class=md-nav__link> <span class=md-ellipsis> front </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_string_t/ class=md-nav__link> <span class=md-ellipsis> operator string_t </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_eq/ class=md-nav__link> <span class=md-ellipsis> operator== </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_ne/ class=md-nav__link> <span class=md-ellipsis> operator!= </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_slash/ class=md-nav__link> <span class=md-ellipsis> operator/ </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_slasheq/ class=md-nav__link> <span class=md-ellipsis> operator/= </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/parent_pointer/ class=md-nav__link> <span class=md-ellipsis> parent_pointer </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/pop_back/ class=md-nav__link> <span class=md-ellipsis> pop_back </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/pop_front/ class=md-nav__link> <span class=md-ellipsis> pop_front </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/push_back/ class=md-nav__link> <span class=md-ellipsis> push_back </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/push_front/ class=md-nav__link> <span class=md-ellipsis> push_front </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/string_t/ class=md-nav__link> <span class=md-ellipsis> string_t </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/to_string/ class=md-nav__link> <span class=md-ellipsis> to_string </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_6> <div class="md-nav__link md-nav__container"> <a href=../../json_sax/ class="md-nav__link "> <span class=md-ellipsis> json_sax </span> </a> <label class="md-nav__link " for=__nav_4_6 id=__nav_4_6_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_6_label aria-expanded=false> <label class=md-nav__title for=__nav_4_6> <span class="md-nav__icon md-icon"></span> json_sax </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../json_sax/binary/ class=md-nav__link> <span class=md-ellipsis> binary </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/boolean/ class=md-nav__link> <span class=md-ellipsis> boolean </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/end_array/ class=md-nav__link> <span class=md-ellipsis> end_array </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/end_object/ class=md-nav__link> <span class=md-ellipsis> end_object </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/key/ class=md-nav__link> <span class=md-ellipsis> key </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/null/ class=md-nav__link> <span class=md-ellipsis> null </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/number_float/ class=md-nav__link> <span class=md-ellipsis> number_float </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/number_integer/ class=md-nav__link> <span class=md-ellipsis> number_integer </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/number_unsigned/ class=md-nav__link> <span class=md-ellipsis> number_unsigned </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/parse_error/ class=md-nav__link> <span class=md-ellipsis> parse_error </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/start_array/ class=md-nav__link> <span class=md-ellipsis> start_array </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/start_object/ class=md-nav__link> <span class=md-ellipsis> start_object </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/string/ class=md-nav__link> <span class=md-ellipsis> string </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../operator_ltlt/ class=md-nav__link> <span class=md-ellipsis> operator<<(basic_json), operator<<(json_pointer) </span> </a> </li> <li class=md-nav__item> <a href=../../operator_gtgt/ class=md-nav__link> <span class=md-ellipsis> operator>>(basic_json) </span> </a> </li> <li class=md-nav__item> <a href=../../operator_literal_json/ class=md-nav__link> <span class=md-ellipsis> operator""_json </span> </a> </li> <li class=md-nav__item> <a href=../../operator_literal_json_pointer/ class=md-nav__link> <span class=md-ellipsis> operator""_json_pointer </span> </a> </li> <li class=md-nav__item> <a href=../../ordered_json/ class=md-nav__link> <span class=md-ellipsis> ordered_json </span> </a> </li> <li class=md-nav__item> <a href=../../ordered_map/ class=md-nav__link> <span class=md-ellipsis> ordered_map </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_13> <div class="md-nav__link md-nav__container"> <a href=../../macros/ class="md-nav__link "> <span class=md-ellipsis> macros </span> </a> <label class="md-nav__link " for=__nav_4_13 id=__nav_4_13_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_13_label aria-expanded=false> <label class=md-nav__title for=__nav_4_13> <span class="md-nav__icon md-icon"></span> macros </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../macros/json_assert/ class=md-nav__link> <span class=md-ellipsis> JSON_ASSERT </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_brace_init_copy_semantics/ class=md-nav__link> <span class=md-ellipsis> JSON_BRACE_INIT_COPY_SEMANTICS </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_throw_user/ class=md-nav__link> <span class=md-ellipsis> JSON_CATCH_USER, JSON_THROW_USER, JSON_TRY_USER </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_diagnostics/ class=md-nav__link> <span class=md-ellipsis> JSON_DIAGNOSTICS </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_diagnostic_positions/ class=md-nav__link> <span class=md-ellipsis> JSON_DIAGNOSTIC_POSITIONS </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_disable_enum_serialization/ class=md-nav__link> <span class=md-ellipsis> JSON_DISABLE_ENUM_SERIALIZATION </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_has_cpp_11/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_CPP_11, JSON_HAS_CPP_14, JSON_HAS_CPP_17, JSON_HAS_CPP_20 </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_has_filesystem/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_EXPERIMENTAL_FILESYSTEM, JSON_HAS_FILESYSTEM </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_has_ranges/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_RANGES </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_has_static_rtti/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_STATIC_RTTI </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_has_three_way_comparison/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_THREE_WAY_COMPARISON </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_noexception/ class=md-nav__link> <span class=md-ellipsis> JSON_NOEXCEPTION </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_no_io/ class=md-nav__link> <span class=md-ellipsis> JSON_NO_IO </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_skip_library_version_check/ class=md-nav__link> <span class=md-ellipsis> JSON_SKIP_LIBRARY_VERSION_CHECK </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_skip_unsupported_compiler_check/ class=md-nav__link> <span class=md-ellipsis> JSON_SKIP_UNSUPPORTED_COMPILER_CHECK </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_use_global_udls/ class=md-nav__link> <span class=md-ellipsis> JSON_USE_GLOBAL_UDLS </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_use_implicit_conversions/ class=md-nav__link> <span class=md-ellipsis> JSON_USE_IMPLICIT_CONVERSIONS </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_use_legacy_discarded_value_comparison/ class=md-nav__link> <span class=md-ellipsis> JSON_USE_LEGACY_DISCARDED_VALUE_COMPARISON </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_define_derived_type/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_ONLY_SERIALIZE, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_define_type_intrusive/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_TYPE_INTRUSIVE, NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_TYPE_INTRUSIVE_ONLY_SERIALIZE </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_define_type_non_intrusive/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_define_type_with_names/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_TYPE_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_namespace/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_NAMESPACE </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_namespace_begin/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_NAMESPACE_BEGIN, NLOHMANN_JSON_NAMESPACE_END </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_namespace_no_version/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_NAMESPACE_NO_VERSION </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_serialize_enum/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_SERIALIZE_ENUM </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_serialize_enum_strict/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_SERIALIZE_ENUM_STRICT </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_version_major/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_VERSION_MAJOR, NLOHMANN_JSON_VERSION_MINOR, NLOHMANN_JSON_VERSION_PATCH </span> </a> </li> </ul> </nav> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_5> <div class="md-nav__link md-nav__container"> <a href=../../../community/ class="md-nav__link "> <span class=md-ellipsis> Community </span> </a> <label class="md-nav__link " for=__nav_5 id=__nav_5_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_5_label aria-expanded=false> <label class=md-nav__title for=__nav_5> <span class="md-nav__icon md-icon"></span> Community </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../community/code_of_conduct/ class=md-nav__link> <span class=md-ellipsis> Code of Conduct </span> </a> </li> <li class=md-nav__item> <a href=../../../community/contribution_guidelines/ class=md-nav__link> <span class=md-ellipsis> Contribution Guidelines </span> </a> </li> <li class=md-nav__item> <a href=../../../community/quality_assurance/ class=md-nav__link> <span class=md-ellipsis> Quality assurance </span> </a> </li> <li class=md-nav__item> <a href=../../../community/governance/ class=md-nav__link> <span class=md-ellipsis> Governance </span> </a> </li> <li class=md-nav__item> <a href=../../../community/security_policy/ class=md-nav__link> <span class=md-ellipsis> Security Policy </span> </a> </li> </ul> </nav> </li> </ul> </nav> </div> </div> </div> <div class="md-sidebar md-sidebar--secondary" data-md-component=sidebar data-md-type=toc> <div class=md-sidebar__scrollwrap> <div class=md-sidebar__inner> <nav class="md-nav md-nav--secondary" aria-label="Table of contents"> <label class=md-nav__title for=__toc> <span class="md-nav__icon md-icon"></span> Table of contents </label> <ul class=md-nav__list data-md-component=toc data-md-scrollfix> <li class=md-nav__item> <a href=#iterator-invalidation class=md-nav__link> <span class=md-ellipsis> Iterator invalidation </span> </a> </li> <li class=md-nav__item> <a href=#parameters class=md-nav__link> <span class=md-ellipsis> Parameters </span> </a> </li> <li class=md-nav__item> <a href=#exception-safety class=md-nav__link> <span class=md-ellipsis> Exception safety </span> </a> </li> <li class=md-nav__item> <a href=#exceptions class=md-nav__link> <span class=md-ellipsis> Exceptions </span> </a> </li> <li class=md-nav__item> <a href=#complexity class=md-nav__link> <span class=md-ellipsis> Complexity </span> </a> </li> <li class=md-nav__item> <a href=#examples class=md-nav__link> <span class=md-ellipsis> Examples </span> </a> </li> <li class=md-nav__item> <a href=#see-also class=md-nav__link> <span class=md-ellipsis> See also </span> </a> </li> <li class=md-nav__item> <a href=#version-history class=md-nav__link> <span class=md-ellipsis> Version history </span> </a> </li> </ul> </nav> </div> </div> </div> <div class=md-content data-md-component=content> <article class="md-content__inner md-typeset"> <a href="https://github.com/nlohmann/json/edit/develop/docs/mkdocs/docs/api/basic_json/update.md" title="Edit this page" class="md-content__button md-icon" rel="edit"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M10 20H6V4h7v5h5v3.1l2-2V8l-6-6H6c-1.1 0-2 .9-2 2v16c0 1.1.9 2 2 2h4zm10.2-7c.1 0 .3.1.4.2l1.3 1.3c.2.2.2.6 0 .8l-1 1-2.1-2.1 1-1c.1-.1.2-.2.4-.2m0 3.9L14.1 23H12v-2.1l6.1-6.1z"/></svg> </a> <a href="https://github.com/nlohmann/json/raw/develop/docs/mkdocs/docs/api/basic_json/update.md" title="View source of this page" class="md-content__button md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M17 18c.56 0 1 .44 1 1s-.44 1-1 1-1-.44-1-1 .44-1 1-1m0-3c-2.73 0-5.06 1.66-6 4 .94 2.34 3.27 4 6 4s5.06-1.66 6-4c-.94-2.34-3.27-4-6-4m0 6.5a2.5 2.5 0 0 1-2.5-2.5 2.5 2.5 0 0 1 2.5-2.5 2.5 2.5 0 0 1 2.5 2.5 2.5 2.5 0 0 1-2.5 2.5M9.27 20H6V4h7v5h5v4.07c.7.08 1.36.25 2 .49V8l-6-6H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h4.5a8.2 8.2 0 0 1-1.23-2"/></svg> </a> <h1 id=nlohmannbasic_jsonupdate><small>nlohmann::basic_json::</small>update<a class=headerlink href=#nlohmannbasic_jsonupdate title="Permanent link">&para;</a></h1> <div class=highlight><pre><span></span><code><span class=c1>// (1)</span>
 <span class=kt>void</span><span class=w> </span><span class=nf>update</span><span class=p>(</span><span class=n>const_reference</span><span class=w> </span><span class=n>j</span><span class=p>,</span><span class=w> </span><span class=kt>bool</span><span class=w> </span><span class=n>merge_objects</span><span class=w> </span><span class=o>=</span><span class=w> </span><span class=nb>false</span><span class=p>);</span>
 
 <span class=c1>// (2)</span>
 <span class=kt>void</span><span class=w> </span><span class=nf>update</span><span class=p>(</span><span class=n>const_iterator</span><span class=w> </span><span class=n>first</span><span class=p>,</span><span class=w> </span><span class=n>const_iterator</span><span class=w> </span><span class=n>last</span><span class=p>,</span><span class=w> </span><span class=kt>bool</span><span class=w> </span><span class=n>merge_objects</span><span class=w> </span><span class=o>=</span><span class=w> </span><span class=nb>false</span><span class=p>);</span>
-</code></pre></div> <ol> <li>Inserts all values from <abbr title="JavaScript Object Notation">JSON</abbr> object <code>j</code>.</li> <li>Inserts all values from range <code>[first, last)</code></li> </ol> <p>When <code>merge_objects</code> is <code class=highlight><span class=nb>false</span></code> (default), existing keys are overwritten. When <code>merge_objects</code> is <code class=highlight><span class=nb>true</span></code>, recursively merges objects with common keys.</p> <p>The function is motivated by Python's <a href="https://docs.python.org/3.6/library/stdtypes.html#dict.update">dict.update</a> function.</p> <h2 id=iterator-invalidation>Iterator invalidation<a class=headerlink href=#iterator-invalidation title="Permanent link">&para;</a></h2> <p>For <a href=../../ordered_json/ ><code>ordered_json</code></a>, adding a value to an object can yield a reallocation, in which case all iterators (including the <code>end()</code> iterator) and all references to the elements are invalidated.</p> <h2 id=parameters>Parameters<a class=headerlink href=#parameters title="Permanent link">&para;</a></h2> <dl> <dt><code>j</code> (in)</dt> <dd><abbr title="JavaScript Object Notation">JSON</abbr> object to read values from</dd> <dt><code>merge_objects</code> (in)</dt> <dd>when <code class=highlight><span class=nb>true</span></code>, existing keys are not overwritten, but contents of objects are merged recursively (default: <code class=highlight><span class=nb>false</span></code>)</dd> <dt><code>first</code> (in)</dt> <dd>the beginning of the range of elements to insert</dd> <dt><code>last</code> (in)</dt> <dd>the end of the range of elements to insert</dd> </dl> <h2 id=exceptions>Exceptions<a class=headerlink href=#exceptions title="Permanent link">&para;</a></h2> <ol> <li>The function can throw the following exceptions:<ul> <li>Throws <a href=../../../home/exceptions/#jsonexceptiontype_error312><code>type_error.312</code></a> if called on <abbr title="JavaScript Object Notation">JSON</abbr> values other than objects; example: <code>"cannot use update() with string"</code></li> </ul> </li> <li>The function can throw the following exceptions:<ul> <li>Throws <a href=../../../home/exceptions/#jsonexceptiontype_error312><code>type_error.312</code></a> if called on <abbr title="JavaScript Object Notation">JSON</abbr> values other than objects; example: <code>"cannot use update() with string"</code></li> <li>Throws <a href=../../../home/exceptions/#jsonexceptioninvalid_iterator202><code>invalid_iterator.202</code></a> if called on an iterator which does not belong to the current <abbr title="JavaScript Object Notation">JSON</abbr> value; example: <code>"iterator does not fit current value"</code></li> <li>Throws <a href=../../../home/exceptions/#jsonexceptioninvalid_iterator210><code>invalid_iterator.210</code></a> if <code>first</code> and <code>last</code> do not belong to the same <abbr title="JavaScript Object Notation">JSON</abbr> value; example: <code>"iterators do not fit"</code></li> </ul> </li> </ol> <h2 id=complexity>Complexity<a class=headerlink href=#complexity title="Permanent link">&para;</a></h2> <ol> <li>O(N*log(size() + N)), where N is the number of elements to insert.</li> <li>O(N*log(size() + N)), where N is the number of elements to insert.</li> </ol> <h2 id=examples>Examples<a class=headerlink href=#examples title="Permanent link">&para;</a></h2> <details class=example> <summary>Example</summary> <p>The example shows how <code>update()</code> is used.</p> <div class=highlight><pre><span></span><code><span class=cp>#include</span><span class=w> </span><span class=cpf>&lt;iostream&gt;</span>
+</code></pre></div> <ol> <li>Inserts all values from <abbr title="JavaScript Object Notation">JSON</abbr> object <code>j</code>.</li> <li>Inserts all values from range <code>[first, last)</code></li> </ol> <p>When <code>merge_objects</code> is <code class=highlight><span class=nb>false</span></code> (default), existing keys are overwritten. When <code>merge_objects</code> is <code class=highlight><span class=nb>true</span></code>, recursively merges objects with common keys.</p> <p>If the <abbr title="JavaScript Object Notation">JSON</abbr> value is <code class=highlight><span class=kc>null</span></code>, it is implicitly converted to an empty object before the values are inserted.</p> <p>The function is motivated by Python's <a href="https://docs.python.org/3.6/library/stdtypes.html#dict.update">dict.update</a> function.</p> <h2 id=iterator-invalidation>Iterator invalidation<a class=headerlink href=#iterator-invalidation title="Permanent link">&para;</a></h2> <p>For <a href=../../ordered_json/ ><code>ordered_json</code></a>, adding a value to an object can yield a reallocation, in which case all iterators (including the <code>end()</code> iterator) and all references to the elements are invalidated.</p> <h2 id=parameters>Parameters<a class=headerlink href=#parameters title="Permanent link">&para;</a></h2> <dl> <dt><code>j</code> (in)</dt> <dd><abbr title="JavaScript Object Notation">JSON</abbr> object to read values from</dd> <dt><code>merge_objects</code> (in)</dt> <dd>when <code class=highlight><span class=nb>true</span></code>, keys that exist in both objects and whose value in the source is itself an object are merged recursively; all other values are overwritten as usual (default: <code class=highlight><span class=nb>false</span></code>)</dd> <dt><code>first</code> (in)</dt> <dd>the beginning of the range of elements to insert</dd> <dt><code>last</code> (in)</dt> <dd>the end of the range of elements to insert</dd> </dl> <h2 id=exception-safety>Exception safety<a class=headerlink href=#exception-safety title="Permanent link">&para;</a></h2> <p>Basic guarantee: if an exception is thrown during the operation, the <abbr title="JavaScript Object Notation">JSON</abbr> value may be partially modified.</p> <h2 id=exceptions>Exceptions<a class=headerlink href=#exceptions title="Permanent link">&para;</a></h2> <ol> <li>The function can throw the following exceptions:<ul> <li>Throws <a href=../../../home/exceptions/#jsonexceptiontype_error312><code>type_error.312</code></a> if called on <abbr title="JavaScript Object Notation">JSON</abbr> values other than objects; example: <code>"cannot use update() with string"</code></li> </ul> </li> <li>The function can throw the following exceptions:<ul> <li>Throws <a href=../../../home/exceptions/#jsonexceptiontype_error312><code>type_error.312</code></a> if called on <abbr title="JavaScript Object Notation">JSON</abbr> values other than objects; example: <code>"cannot use update() with string"</code></li> <li>Throws <a href=../../../home/exceptions/#jsonexceptioninvalid_iterator210><code>invalid_iterator.210</code></a> if <code>first</code> and <code>last</code> do not belong to the same <abbr title="JavaScript Object Notation">JSON</abbr> value; example: <code>"iterators do not fit"</code></li> </ul> </li> </ol> <h2 id=complexity>Complexity<a class=headerlink href=#complexity title="Permanent link">&para;</a></h2> <ol> <li>O(N*log(size() + N)), where N is the number of elements to insert.</li> <li>O(N*log(size() + N)), where N is the number of elements to insert.</li> </ol> <h2 id=examples>Examples<a class=headerlink href=#examples title="Permanent link">&para;</a></h2> <details class=example> <summary>Example</summary> <p>The example shows how <code>update()</code> is used.</p> <div class=highlight><pre><span></span><code><span class=cp>#include</span><span class=w> </span><span class=cpf>&lt;iostream&gt;</span>
 <span class=cp>#include</span><span class=w> </span><span class=cpf>&lt;iomanip&gt;</span>
 <span class=cp>#include</span><span class=w> </span><span class=cpf>&lt;nlohmann/json.hpp&gt;</span>
 
@@ -110,4 +110,4 @@
 <span class=w>    </span><span class=nt>&quot;active&quot;</span><span class=p>:</span><span class=w> </span><span class=kc>true</span><span class=p>,</span>
 <span class=w>    </span><span class=nt>&quot;name&quot;</span><span class=p>:</span><span class=w> </span><span class=p>{</span><span class=nt>&quot;de&quot;</span><span class=p>:</span><span class=w> </span><span class=s2>&quot;Maus&quot;</span><span class=p>,</span><span class=w> </span><span class=nt>&quot;en&quot;</span><span class=p>:</span><span class=w> </span><span class=s2>&quot;mouse&quot;</span><span class=p>,</span><span class=w> </span><span class=nt>&quot;es&quot;</span><span class=p>:</span><span class=w> </span><span class=s2>&quot;ratón&quot;</span><span class=p>}</span>
 <span class=p>}</span>
-</code></pre></div> </details> <h2 id=version-history>Version history<a class=headerlink href=#version-history title="Permanent link">&para;</a></h2> <ul> <li>Added in version 3.0.0.</li> <li>Added <code>merge_objects</code> parameter in 3.10.5.</li> </ul> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 23, 2026 11:16:18 UTC">June 23, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
+</code></pre></div> </details> <h2 id=see-also>See also<a class=headerlink href=#see-also title="Permanent link">&para;</a></h2> <ul> <li><a href=../insert/ >insert</a> add values to an array/object</li> <li><a href=../merge_patch/ >merge_patch</a> applies a <abbr title="JavaScript Object Notation">JSON</abbr> Merge Patch</li> </ul> <h2 id=version-history>Version history<a class=headerlink href=#version-history title="Permanent link">&para;</a></h2> <ul> <li>Added in version 3.0.0.</li> <li>Added <code>merge_objects</code> parameter in 3.10.5.</li> </ul> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 29, 2026 20:15:18 UTC">June 29, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
diff --git a/api/basic_json/value/index.html b/api/basic_json/value/index.html
index 0c8deaa..7667d10 100644
--- a/api/basic_json/value/index.html
+++ b/api/basic_json/value/index.html
@@ -22,7 +22,7 @@
 <span class=p>}</span><span class=w> </span><span class=k>catch</span><span class=p>(</span><span class=n>out_of_range</span><span class=p>)</span><span class=w> </span><span class=p>{</span>
 <span class=w>   </span><span class=k>return</span><span class=w> </span><span class=n>default_value</span><span class=p>;</span>
 <span class=p>}</span>
-</code></pre></div></p> </li> </ol> <div class="admonition note"> <p class=admonition-title>Differences to <code>at</code> and <code>operator[]</code></p> <ul> <li>Unlike <a href=../at/ ><code>at</code></a>, this function does not throw if the given <code>key</code>/<code>ptr</code> was not found.</li> <li>Unlike <a href=../operator%5B%5D/ ><code>operator[]</code></a>, this function does not implicitly add an element to the position defined by <code>key</code>/<code>ptr</code> key. This function is furthermore also applicable to const objects.</li> </ul> </div> <h2 id=template-parameters>Template parameters<a class=headerlink href=#template-parameters title="Permanent link">&para;</a></h2> <dl> <dt><code>KeyType</code></dt> <dd>A type for an object key other than <a href=../../json_pointer/ ><code>json_pointer</code></a> that is comparable with <a href=../string_t/ ><code>string_t</code></a> using <a href=../object_comparator_t/ ><code>object_comparator_t</code></a>. This can also be a string view (C++17).</dd> <dt><code>ValueType</code></dt> <dd>type compatible to <abbr title="JavaScript Object Notation">JSON</abbr> values, for instance <code class=highlight><span class=kt>int</span></code> for <abbr title="JavaScript Object Notation">JSON</abbr> integer numbers, <code class=highlight><span class=kt>bool</span></code> for <abbr title="JavaScript Object Notation">JSON</abbr> booleans, or <code class=highlight><span class=n>std</span><span class=o>::</span><span class=n>vector</span></code> types for <abbr title="JavaScript Object Notation">JSON</abbr> arrays. Note the type of the expected value at <code>key</code>/<code>ptr</code> and the default value <code>default_value</code> must be compatible.</dd> </dl> <h2 id=parameters>Parameters<a class=headerlink href=#parameters title="Permanent link">&para;</a></h2> <dl> <dt><code>key</code> (in)</dt> <dd>key of the element to access</dd> <dt><code>default_value</code> (in)</dt> <dd>the value to return if <code>key</code>/<code>ptr</code> found no value</dd> <dt><code>ptr</code> (in)</dt> <dd>a <abbr title="JavaScript Object Notation">JSON</abbr> pointer to the element to access</dd> </dl> <h2 id=return-value>Return value<a class=headerlink href=#return-value title="Permanent link">&para;</a></h2> <ol> <li>copy of the element at key <code>key</code> or <code>default_value</code> if <code>key</code> is not found</li> <li>copy of the element at key <code>key</code> or <code>default_value</code> if <code>key</code> is not found</li> <li>copy of the element at <abbr title="JavaScript Object Notation">JSON</abbr> Pointer <code>ptr</code> or <code>default_value</code> if no value for <code>ptr</code> is found</li> </ol> <h2 id=exception-safety>Exception safety<a class=headerlink href=#exception-safety title="Permanent link">&para;</a></h2> <p>Strong guarantee: if an exception is thrown, there are no changes to any <abbr title="JavaScript Object Notation">JSON</abbr> value.</p> <h2 id=exceptions>Exceptions<a class=headerlink href=#exceptions title="Permanent link">&para;</a></h2> <ol> <li>The function can throw the following exceptions:<ul> <li>Throws <a href=../../../home/exceptions/#jsonexceptiontype_error302><code>type_error.302</code></a> if <code>default_value</code> does not match the type of the value at <code>key</code></li> <li>Throws <a href=../../../home/exceptions/#jsonexceptiontype_error306><code>type_error.306</code></a> if the <abbr title="JavaScript Object Notation">JSON</abbr> value is not an object; in that case, using <code>value()</code> with a key makes no sense.</li> </ul> </li> <li>See 1.</li> <li>The function can throw the following exceptions:<ul> <li>Throws <a href=../../../home/exceptions/#jsonexceptiontype_error302><code>type_error.302</code></a> if <code>default_value</code> does not match the type of the value at <code>ptr</code></li> <li>Throws <a href=../../../home/exceptions/#jsonexceptiontype_error306><code>type_error.306</code></a> if the <abbr title="JavaScript Object Notation">JSON</abbr> value is not an object; in that case, using <code>value()</code> with a key makes no sense.</li> </ul> </li> </ol> <h2 id=complexity>Complexity<a class=headerlink href=#complexity title="Permanent link">&para;</a></h2> <ol> <li>Logarithmic in the size of the container.</li> <li>Logarithmic in the size of the container.</li> <li>Logarithmic in the size of the container.</li> </ol> <h2 id=notes>Notes<a class=headerlink href=#notes title="Permanent link">&para;</a></h2> <div class="admonition warning"> <p class=admonition-title>Return type</p> <p>The value function is a template, and the return type of the function is determined by the type of the provided default value unless otherwise specified. This can have unexpected effects. In the example below, we store a 64-bit unsigned integer. We get exactly that value when using <a href=../operator%5B%5D/ ><code>operator[]</code></a>. However, when we call <code>value</code> and provide <code class=highlight><span class=mi>0</span></code> as default value, then <code class=highlight><span class=mi>-1</span></code> is returned. This occurs, because <code class=highlight><span class=mi>0</span></code> has type <code class=highlight><span class=kt>int</span></code> which overflows when handling the value <code class=highlight><span class=mi>18446744073709551615</span></code>.</p> <p>To address this issue, either provide a correctly typed default value or use the template parameter to specify the desired return type. Note that this issue occurs even when a value is stored at the provided key, and the default value is not used as the return value.</p> <div class=highlight><pre><span></span><code><span class=cp>#include</span><span class=w> </span><span class=cpf>&lt;iostream&gt;</span>
+</code></pre></div></p> </li> </ol> <div class="admonition note"> <p class=admonition-title>Differences to <code>at</code> and <code>operator[]</code></p> <ul> <li>Unlike <a href=../at/ ><code>at</code></a>, this function does not throw if the given <code>key</code>/<code>ptr</code> was not found.</li> <li>Unlike <a href=../operator%5B%5D/ ><code>operator[]</code></a>, this function does not implicitly add an element to the position defined by <code>key</code>/<code>ptr</code> key. This function is furthermore also applicable to const objects.</li> </ul> </div> <h2 id=template-parameters>Template parameters<a class=headerlink href=#template-parameters title="Permanent link">&para;</a></h2> <dl> <dt><code>KeyType</code></dt> <dd>A type for an object key other than <a href=../../json_pointer/ ><code>json_pointer</code></a> that is comparable with <a href=../string_t/ ><code>string_t</code></a> using <a href=../object_comparator_t/ ><code>object_comparator_t</code></a>. This can also be a string view (C++17).</dd> <dt><code>ValueType</code></dt> <dd>type compatible to <abbr title="JavaScript Object Notation">JSON</abbr> values, for instance <code class=highlight><span class=kt>int</span></code> for <abbr title="JavaScript Object Notation">JSON</abbr> integer numbers, <code class=highlight><span class=kt>bool</span></code> for <abbr title="JavaScript Object Notation">JSON</abbr> booleans, or <code class=highlight><span class=n>std</span><span class=o>::</span><span class=n>vector</span></code> types for <abbr title="JavaScript Object Notation">JSON</abbr> arrays. Note the type of the expected value at <code>key</code>/<code>ptr</code> and the default value <code>default_value</code> must be compatible.</dd> </dl> <h2 id=parameters>Parameters<a class=headerlink href=#parameters title="Permanent link">&para;</a></h2> <dl> <dt><code>key</code> (in)</dt> <dd>key of the element to access</dd> <dt><code>default_value</code> (in)</dt> <dd>the value to return if <code>key</code>/<code>ptr</code> found no value</dd> <dt><code>ptr</code> (in)</dt> <dd>a <abbr title="JavaScript Object Notation">JSON</abbr> pointer to the element to access</dd> </dl> <h2 id=return-value>Return value<a class=headerlink href=#return-value title="Permanent link">&para;</a></h2> <ol> <li>copy of the element at key <code>key</code> or <code>default_value</code> if <code>key</code> is not found</li> <li>copy of the element at key <code>key</code> or <code>default_value</code> if <code>key</code> is not found</li> <li>copy of the element at <abbr title="JavaScript Object Notation">JSON</abbr> Pointer <code>ptr</code> or <code>default_value</code> if no value for <code>ptr</code> is found</li> </ol> <h2 id=exception-safety>Exception safety<a class=headerlink href=#exception-safety title="Permanent link">&para;</a></h2> <p>Strong guarantee: if an exception is thrown, there are no changes to any <abbr title="JavaScript Object Notation">JSON</abbr> value.</p> <h2 id=exceptions>Exceptions<a class=headerlink href=#exceptions title="Permanent link">&para;</a></h2> <ol> <li>The function can throw the following exceptions:<ul> <li>Throws <a href=../../../home/exceptions/#jsonexceptiontype_error302><code>type_error.302</code></a> if <code>default_value</code> does not match the type of the value at <code>key</code></li> <li>Throws <a href=../../../home/exceptions/#jsonexceptiontype_error306><code>type_error.306</code></a> if the <abbr title="JavaScript Object Notation">JSON</abbr> value is not an object; in that case, using <code>value()</code> with a key makes no sense.</li> </ul> </li> <li>See 1.</li> <li>The function can throw the following exceptions:<ul> <li>Throws <a href=../../../home/exceptions/#jsonexceptiontype_error302><code>type_error.302</code></a> if <code>default_value</code> does not match the type of the value at <code>ptr</code></li> <li>Throws <a href=../../../home/exceptions/#jsonexceptiontype_error306><code>type_error.306</code></a> if the <abbr title="JavaScript Object Notation">JSON</abbr> value is not an object; in that case, using <code>value()</code> with a <abbr title="JavaScript Object Notation">JSON</abbr> pointer makes no sense.</li> </ul> </li> </ol> <h2 id=complexity>Complexity<a class=headerlink href=#complexity title="Permanent link">&para;</a></h2> <ol> <li>Logarithmic in the size of the container.</li> <li>Logarithmic in the size of the container.</li> <li>Logarithmic in the size of the container.</li> </ol> <h2 id=notes>Notes<a class=headerlink href=#notes title="Permanent link">&para;</a></h2> <div class="admonition warning"> <p class=admonition-title>Return type</p> <p>The value function is a template, and the return type of the function is determined by the type of the provided default value unless otherwise specified. This can have unexpected effects. In the example below, we store a 64-bit unsigned integer. We get exactly that value when using <a href=../operator%5B%5D/ ><code>operator[]</code></a>. However, when we call <code>value</code> and provide <code class=highlight><span class=mi>0</span></code> as default value, then <code class=highlight><span class=mi>-1</span></code> is returned. This occurs, because <code class=highlight><span class=mi>0</span></code> has type <code class=highlight><span class=kt>int</span></code> which overflows when handling the value <code class=highlight><span class=mi>18446744073709551615</span></code>.</p> <p>To address this issue, either provide a correctly typed default value or use the template parameter to specify the desired return type. Note that this issue occurs even when a value is stored at the provided key, and the default value is not used as the return value.</p> <div class=highlight><pre><span></span><code><span class=cp>#include</span><span class=w> </span><span class=cpf>&lt;iostream&gt;</span>
 <span class=cp>#include</span><span class=w> </span><span class=cpf>&lt;nlohmann/json.hpp&gt;</span>
 
 <span class=k>using</span><span class=w> </span><span class=n>json</span><span class=w> </span><span class=o>=</span><span class=w> </span><span class=n>nlohmann</span><span class=o>::</span><span class=n>json</span><span class=p>;</span>
@@ -136,4 +136,4 @@
 <span class=w>              </span><span class=o>&lt;&lt;</span><span class=w> </span><span class=s>&quot; &quot;</span><span class=w> </span><span class=o>&lt;&lt;</span><span class=w> </span><span class=n>v_string</span><span class=w> </span><span class=o>&lt;&lt;</span><span class=w> </span><span class=s>&quot; &quot;</span><span class=w> </span><span class=o>&lt;&lt;</span><span class=w> </span><span class=n>v_boolean</span><span class=w> </span><span class=o>&lt;&lt;</span><span class=w> </span><span class=s>&quot;</span><span class=se>\n</span><span class=s>&quot;</span><span class=p>;</span>
 <span class=p>}</span>
 </code></pre></div> <p>Output:</p> <div class=highlight><pre><span></span><code><span class=mi>1</span><span class=w> </span><span class=mf>42.23</span><span class=w> </span><span class=err>oops</span><span class=w> </span><span class=kc>false</span>
-</code></pre></div> </details> <h2 id=see-also>See also<a class=headerlink href=#see-also title="Permanent link">&para;</a></h2> <ul> <li>see <a href=../at/ ><code>at</code></a> for access by reference with range checking</li> <li>see <a href=../operator%5B%5D/ ><code>operator[]</code></a> for unchecked access by reference</li> </ul> <h2 id=version-history>Version history<a class=headerlink href=#version-history title="Permanent link">&para;</a></h2> <ol> <li>Added in version 1.0.0. Changed parameter <code>default_value</code> type from <code>const ValueType&amp;</code> to <code>ValueType&amp;&amp;</code> in version 3.11.0.</li> <li>Added in version 3.11.0. Made <code>ValueType</code> the first template parameter in version 3.11.2.</li> <li>Added in version 2.0.2.</li> </ol> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 23, 2026 11:16:18 UTC">June 23, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
+</code></pre></div> </details> <h2 id=see-also>See also<a class=headerlink href=#see-also title="Permanent link">&para;</a></h2> <ul> <li>see <a href=../at/ ><code>at</code></a> for access by reference with range checking</li> <li>see <a href=../operator%5B%5D/ ><code>operator[]</code></a> for unchecked access by reference</li> </ul> <h2 id=version-history>Version history<a class=headerlink href=#version-history title="Permanent link">&para;</a></h2> <ol> <li>Added in version 1.0.0. Changed parameter <code>default_value</code> type from <code>const ValueType&amp;</code> to <code>ValueType&amp;&amp;</code> in version 3.11.0.</li> <li>Added in version 3.11.0. Made <code>ValueType</code> the first template parameter in version 3.11.2.</li> <li>Added in version 2.0.2.</li> </ol> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 29, 2026 20:15:18 UTC">June 29, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
diff --git a/api/basic_json/value_t/index.html b/api/basic_json/value_t/index.html
index f7a908b..13df071 100644
--- a/api/basic_json/value_t/index.html
+++ b/api/basic_json/value_t/index.html
@@ -46,4 +46,4 @@
 <span class=kc>true</span>
 <span class=kc>true</span>
 <span class=kc>true</span>
-</code></pre></div> </details> <h2 id=version-history>Version history<a class=headerlink href=#version-history title="Permanent link">&para;</a></h2> <ul> <li>Added in version 1.0.0.</li> <li>Added unsigned integer type in version 2.0.0.</li> <li>Added binary type in version 3.8.0.</li> </ul> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 23, 2026 11:16:18 UTC">June 23, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
+</code></pre></div> </details> <h2 id=version-history>Version history<a class=headerlink href=#version-history title="Permanent link">&para;</a></h2> <ul> <li>Added in version 1.0.0.</li> <li>Added unsigned integer type in version 2.0.0.</li> <li>Added binary type in version 3.8.0.</li> </ul> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 29, 2026 20:15:18 UTC">June 29, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
diff --git a/api/basic_json/~basic_json/index.html b/api/basic_json/~basic_json/index.html
index 0e4bb29..2fe51e3 100644
--- a/api/basic_json/~basic_json/index.html
+++ b/api/basic_json/~basic_json/index.html
@@ -1,2 +1,2 @@
 <!doctype html><html lang=en class=no-js> <head><meta charset=utf-8><meta name=viewport content="width=device-width,initial-scale=1"><meta name=author content="Niels Lohmann"><link href="https://json.nlohmann.me/api/basic_json/~basic_json/" rel="canonical"><link href=../basic_json/ rel=prev><link href=../accept/ rel=next><link rel=icon href=../../../assets/images/favicon.png><meta name=generator content="mkdocs-1.6.1, mkdocs-material-9.7.6"><title>(Destructor) - JSON for Modern C++</title><link rel=stylesheet href=../../../assets/stylesheets/main.484c7ddc.min.css><link rel=stylesheet href=../../../assets/stylesheets/palette.ab4e12ef.min.css><link rel="stylesheet" href="../../../assets/external/fonts.googleapis.com/css.61a430c9.css"><style>:root{--md-text-font:"Roboto";--md-code-font:"JetBrains Mono"}</style><link rel=stylesheet href=../../../css/custom.css><script>__md_scope=new URL("../../..",location),__md_hash=e=>[...e].reduce(((e,_)=>(e<<5)-e+_.charCodeAt(0)),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script></head> <body dir=ltr data-md-color-scheme=default data-md-color-primary=indigo data-md-color-accent=indigo> <input class=md-toggle data-md-toggle=drawer type=checkbox id=__drawer autocomplete=off> <input class=md-toggle data-md-toggle=search type=checkbox id=__search autocomplete=off> <label class=md-overlay for=__drawer></label> <div data-md-component=skip> <a href=#nlohmannbasic_jsonbasic_json class=md-skip> Skip to content </a> </div> <div data-md-component=announce> </div> <header class=md-header data-md-component=header> <nav class="md-header__inner md-grid" aria-label=Header> <a href=../../.. title="JSON for Modern C++" class="md-header__button md-logo" aria-label="JSON for Modern C++" data-md-component=logo> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54"/></svg> </a> <label class="md-header__button md-icon" for=__drawer> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M3 6h18v2H3zm0 5h18v2H3zm0 5h18v2H3z"/></svg> </label> <div class=md-header__title data-md-component=header-title> <div class=md-header__ellipsis> <div class=md-header__topic> <span class=md-ellipsis> JSON for Modern C++ </span> </div> <div class=md-header__topic data-md-component=header-topic> <span class=md-ellipsis> (Destructor) </span> </div> </div> </div> <form class=md-header__option data-md-component=palette> <input class=md-option data-md-color-media="(prefers-color-scheme: light)" data-md-color-scheme=default data-md-color-primary=indigo data-md-color-accent=indigo aria-label="Switch to dark mode" type=radio name=__palette id=__palette_0> <label class="md-header__button md-icon" title="Switch to dark mode" for=__palette_1 hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a4 4 0 0 0-4 4 4 4 0 0 0 4 4 4 4 0 0 0 4-4 4 4 0 0 0-4-4m0 10a6 6 0 0 1-6-6 6 6 0 0 1 6-6 6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12z"/></svg> </label> <input class=md-option data-md-color-media="(prefers-color-scheme: dark)" data-md-color-scheme=slate data-md-color-primary=indigo data-md-color-accent=indigo aria-label="Switch to light mode" type=radio name=__palette id=__palette_1> <label class="md-header__button md-icon" title="Switch to light mode" for=__palette_0 hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 18c-.89 0-1.74-.2-2.5-.55C11.56 16.5 13 14.42 13 12s-1.44-4.5-3.5-5.45C10.26 6.2 11.11 6 12 6a6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12z"/></svg> </label> </form> <script>var palette=__md_get("__palette");if(palette&&palette.color){if("(prefers-color-scheme)"===palette.color.media){var media=matchMedia("(prefers-color-scheme: light)"),input=document.querySelector(media.matches?"[data-md-color-media='(prefers-color-scheme: light)']":"[data-md-color-media='(prefers-color-scheme: dark)']");palette.color.media=input.getAttribute("data-md-color-media"),palette.color.scheme=input.getAttribute("data-md-color-scheme"),palette.color.primary=input.getAttribute("data-md-color-primary"),palette.color.accent=input.getAttribute("data-md-color-accent")}for(var[key,value]of Object.entries(palette.color))document.body.setAttribute("data-md-color-"+key,value)}</script> <label class="md-header__button md-icon" for=__search> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg> </label> <div class=md-search data-md-component=search role=dialog> <label class=md-search__overlay for=__search></label> <div class=md-search__inner role=search> <form class=md-search__form name=search> <input type=text class=md-search__input name=query aria-label=Search placeholder=Search autocapitalize=off autocorrect=off autocomplete=off spellcheck=false data-md-component=search-query required> <label class="md-search__icon md-icon" for=__search> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11z"/></svg> </label> <nav class=md-search__options aria-label=Search> <button type=reset class="md-search__icon md-icon" title=Clear aria-label=Clear tabindex=-1> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z"/></svg> </button> </nav> </form> <div class=md-search__output> <div class=md-search__scrollwrap tabindex=0 data-md-scrollfix> <div class=md-search-result data-md-component=search-result> <div class=md-search-result__meta> Initializing search </div> <ol class=md-search-result__list role=presentation></ol> </div> </div> </div> </div> </div> <div class=md-header__source> <a href="https://github.com/nlohmann/json" title="Go to repository" class="md-source" data-md-component="source"> <div class="md-source__icon md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </div> <div class=md-source__repository> nlohmann/json </div> </a> </div> </nav> </header> <div class=md-container data-md-component=container> <nav class=md-tabs aria-label=Tabs data-md-component=tabs> <div class=md-grid> <ul class=md-tabs__list> <li class=md-tabs__item> <a href=../../.. class=md-tabs__link> Home </a> </li> <li class=md-tabs__item> <a href=../../../features/arbitrary_types/ class=md-tabs__link> Features </a> </li> <li class=md-tabs__item> <a href=../../../integration/ class=md-tabs__link> Integration </a> </li> <li class="md-tabs__item md-tabs__item--active"> <a href=../ class=md-tabs__link> API Documentation </a> </li> <li class=md-tabs__item> <a href=../../../community/ class=md-tabs__link> Community </a> </li> </ul> </div> </nav> <main class=md-main data-md-component=main> <div class="md-main__inner md-grid"> <div class="md-sidebar md-sidebar--primary" data-md-component=sidebar data-md-type=navigation> <div class=md-sidebar__scrollwrap> <div class=md-sidebar__inner> <nav class="md-nav md-nav--primary md-nav--lifted" aria-label=Navigation data-md-level=0> <label class=md-nav__title for=__drawer> <a href=../../.. title="JSON for Modern C++" class="md-nav__button md-logo" aria-label="JSON for Modern C++" data-md-component=logo> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54"/></svg> </a> JSON for Modern C++ </label> <div class=md-nav__source> <a href="https://github.com/nlohmann/json" title="Go to repository" class="md-source" data-md-component="source"> <div class="md-source__icon md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </div> <div class=md-source__repository> nlohmann/json </div> </a> </div> <ul class=md-nav__list data-md-scrollfix> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_1> <div class="md-nav__link md-nav__container"> <a href=../../.. class="md-nav__link "> <span class=md-ellipsis> Home </span> </a> <label class="md-nav__link " for=__nav_1 id=__nav_1_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_1_label aria-expanded=false> <label class=md-nav__title for=__nav_1> <span class="md-nav__icon md-icon"></span> Home </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../home/license/ class=md-nav__link> <span class=md-ellipsis> License </span> </a> </li> <li class=md-nav__item> <a href=../../../home/faq/ class=md-nav__link> <span class=md-ellipsis> FAQ </span> </a> </li> <li class=md-nav__item> <a href=../../../home/exceptions/ class=md-nav__link> <span class=md-ellipsis> Exceptions </span> </a> </li> <li class=md-nav__item> <a href=../../../home/releases/ class=md-nav__link> <span class=md-ellipsis> Releases </span> </a> </li> <li class=md-nav__item> <a href=../../../home/design_goals/ class=md-nav__link> <span class=md-ellipsis> Design goals </span> </a> </li> <li class=md-nav__item> <a href=../../../home/architecture/ class=md-nav__link> <span class=md-ellipsis> Architecture </span> </a> </li> <li class=md-nav__item> <a href=../../../home/customers/ class=md-nav__link> <span class=md-ellipsis> Customers </span> </a> </li> <li class=md-nav__item> <a href=../../../home/sponsors/ class=md-nav__link> <span class=md-ellipsis> Sponsors </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2> <label class=md-nav__link for=__nav_2 id=__nav_2_label tabindex=0> <span class=md-ellipsis> Features </span> <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_2_label aria-expanded=false> <label class=md-nav__title for=__nav_2> <span class="md-nav__icon md-icon"></span> Features </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/arbitrary_types/ class=md-nav__link> <span class=md-ellipsis> Arbitrary Type Conversions </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_2> <div class="md-nav__link md-nav__container"> <a href=../../../features/binary_formats/ class="md-nav__link "> <span class=md-ellipsis> Binary Formats </span> </a> <label class="md-nav__link " for=__nav_2_2 id=__nav_2_2_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_2_label aria-expanded=false> <label class=md-nav__title for=__nav_2_2> <span class="md-nav__icon md-icon"></span> Binary Formats </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/binary_formats/bjdata/ class=md-nav__link> <span class=md-ellipsis> BJData </span> </a> </li> <li class=md-nav__item> <a href=../../../features/binary_formats/bson/ class=md-nav__link> <span class=md-ellipsis> BSON </span> </a> </li> <li class=md-nav__item> <a href=../../../features/binary_formats/cbor/ class=md-nav__link> <span class=md-ellipsis> CBOR </span> </a> </li> <li class=md-nav__item> <a href=../../../features/binary_formats/messagepack/ class=md-nav__link> <span class=md-ellipsis> MessagePack </span> </a> </li> <li class=md-nav__item> <a href=../../../features/binary_formats/ubjson/ class=md-nav__link> <span class=md-ellipsis> UBJSON </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../../features/binary_values/ class=md-nav__link> <span class=md-ellipsis> Binary Values </span> </a> </li> <li class=md-nav__item> <a href=../../../features/comments/ class=md-nav__link> <span class=md-ellipsis> Comments </span> </a> </li> <li class=md-nav__item> <a href=../../../features/trailing_commas/ class=md-nav__link> <span class=md-ellipsis> Trailing Commas </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_6> <div class="md-nav__link md-nav__container"> <a href=../../../features/element_access/ class="md-nav__link "> <span class=md-ellipsis> Element Access </span> </a> <label class="md-nav__link " for=__nav_2_6 id=__nav_2_6_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_6_label aria-expanded=false> <label class=md-nav__title for=__nav_2_6> <span class="md-nav__icon md-icon"></span> Element Access </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/element_access/unchecked_access/ class=md-nav__link> <span class=md-ellipsis> Unchecked access: operator[] </span> </a> </li> <li class=md-nav__item> <a href=../../../features/element_access/checked_access/ class=md-nav__link> <span class=md-ellipsis> Checked access: at </span> </a> </li> <li class=md-nav__item> <a href=../../../features/element_access/default_value/ class=md-nav__link> <span class=md-ellipsis> Access with default value: value </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../../features/iterators/ class=md-nav__link> <span class=md-ellipsis> Iterators </span> </a> </li> <li class=md-nav__item> <a href=../../../features/json_pointer/ class=md-nav__link> <span class=md-ellipsis> JSON Pointer </span> </a> </li> <li class=md-nav__item> <a href=../../../features/json_patch/ class=md-nav__link> <span class=md-ellipsis> JSON Patch and Diff </span> </a> </li> <li class=md-nav__item> <a href=../../../features/merge_patch/ class=md-nav__link> <span class=md-ellipsis> JSON Merge Patch </span> </a> </li> <li class=md-nav__item> <a href=../../../features/modules/ class=md-nav__link> <span class=md-ellipsis> Modules </span> </a> </li> <li class=md-nav__item> <a href=../../../features/namespace/ class=md-nav__link> <span class=md-ellipsis> nlohmann Namespace </span> </a> </li> <li class=md-nav__item> <a href=../../../features/object_order/ class=md-nav__link> <span class=md-ellipsis> Object Order </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_14> <div class="md-nav__link md-nav__container"> <a href=../../../features/parsing/ class="md-nav__link "> <span class=md-ellipsis> Parsing </span> </a> <label class="md-nav__link " for=__nav_2_14 id=__nav_2_14_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_14_label aria-expanded=false> <label class=md-nav__title for=__nav_2_14> <span class="md-nav__icon md-icon"></span> Parsing </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/parsing/json_lines/ class=md-nav__link> <span class=md-ellipsis> JSON Lines </span> </a> </li> <li class=md-nav__item> <a href=../../../features/parsing/parse_exceptions/ class=md-nav__link> <span class=md-ellipsis> Parsing and Exceptions </span> </a> </li> <li class=md-nav__item> <a href=../../../features/parsing/parser_callbacks/ class=md-nav__link> <span class=md-ellipsis> Parser Callbacks </span> </a> </li> <li class=md-nav__item> <a href=../../../features/parsing/sax_interface/ class=md-nav__link> <span class=md-ellipsis> SAX Interface </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../../features/assertions/ class=md-nav__link> <span class=md-ellipsis> Runtime Assertions </span> </a> </li> <li class=md-nav__item> <a href=../../../features/enum_conversion/ class=md-nav__link> <span class=md-ellipsis> Specializing enum conversion </span> </a> </li> <li class=md-nav__item> <a href=../../../features/macros/ class=md-nav__link> <span class=md-ellipsis> Supported Macros </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_18> <div class="md-nav__link md-nav__container"> <a href=../../../features/types/ class="md-nav__link "> <span class=md-ellipsis> Types </span> </a> <label class="md-nav__link " for=__nav_2_18 id=__nav_2_18_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_18_label aria-expanded=false> <label class=md-nav__title for=__nav_2_18> <span class="md-nav__icon md-icon"></span> Types </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/types/number_handling/ class=md-nav__link> <span class=md-ellipsis> Number Handling </span> </a> </li> </ul> </nav> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_3> <div class="md-nav__link md-nav__container"> <a href=../../../integration/ class="md-nav__link "> <span class=md-ellipsis> Integration </span> </a> <label class="md-nav__link " for=__nav_3 id=__nav_3_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_3_label aria-expanded=false> <label class=md-nav__title for=__nav_3> <span class="md-nav__icon md-icon"></span> Integration </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../integration/migration_guide/ class=md-nav__link> <span class=md-ellipsis> Migration Guide </span> </a> </li> <li class=md-nav__item> <a href=../../../integration/cmake/ class=md-nav__link> <span class=md-ellipsis> CMake </span> </a> </li> <li class=md-nav__item> <a href=../../../integration/package_managers/ class=md-nav__link> <span class=md-ellipsis> Package Managers </span> </a> </li> <li class=md-nav__item> <a href=../../../integration/pkg-config/ class=md-nav__link> <span class=md-ellipsis> Pkg-config </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--active md-nav__item--section md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4 checked> <label class=md-nav__link for=__nav_4 id=__nav_4_label tabindex> <span class=md-ellipsis> API Documentation </span> <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_4_label aria-expanded=true> <label class=md-nav__title for=__nav_4> <span class="md-nav__icon md-icon"></span> API Documentation </label> <ul class=md-nav__list data-md-scrollfix> <li class="md-nav__item md-nav__item--active md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_1 checked> <div class="md-nav__link md-nav__container"> <a href=../ class="md-nav__link "> <span class=md-ellipsis> basic_json </span> </a> <label class="md-nav__link " for=__nav_4_1 id=__nav_4_1_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_1_label aria-expanded=true> <label class=md-nav__title for=__nav_4_1> <span class="md-nav__icon md-icon"></span> basic_json </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../basic_json/ class=md-nav__link> <span class=md-ellipsis> (Constructor) </span> </a> </li> <li class="md-nav__item md-nav__item--active"> <input class="md-nav__toggle md-toggle" type=checkbox id=__toc> <label class="md-nav__link md-nav__link--active" for=__toc> <span class=md-ellipsis> (Destructor) </span> <span class="md-nav__icon md-icon"></span> </label> <a href=./ class="md-nav__link md-nav__link--active"> <span class=md-ellipsis> (Destructor) </span> </a> <nav class="md-nav md-nav--secondary" aria-label="Table of contents"> <label class=md-nav__title for=__toc> <span class="md-nav__icon md-icon"></span> Table of contents </label> <ul class=md-nav__list data-md-component=toc data-md-scrollfix> <li class=md-nav__item> <a href=#exception-safety class=md-nav__link> <span class=md-ellipsis> Exception safety </span> </a> </li> <li class=md-nav__item> <a href=#complexity class=md-nav__link> <span class=md-ellipsis> Complexity </span> </a> </li> <li class=md-nav__item> <a href=#version-history class=md-nav__link> <span class=md-ellipsis> Version history </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../accept/ class=md-nav__link> <span class=md-ellipsis> accept </span> </a> </li> <li class=md-nav__item> <a href=../array/ class=md-nav__link> <span class=md-ellipsis> array </span> </a> </li> <li class=md-nav__item> <a href=../array_t/ class=md-nav__link> <span class=md-ellipsis> array_t </span> </a> </li> <li class=md-nav__item> <a href=../at/ class=md-nav__link> <span class=md-ellipsis> at </span> </a> </li> <li class=md-nav__item> <a href=../back/ class=md-nav__link> <span class=md-ellipsis> back </span> </a> </li> <li class=md-nav__item> <a href=../begin/ class=md-nav__link> <span class=md-ellipsis> begin </span> </a> </li> <li class=md-nav__item> <a href=../binary/ class=md-nav__link> <span class=md-ellipsis> binary </span> </a> </li> <li class=md-nav__item> <a href=../binary_t/ class=md-nav__link> <span class=md-ellipsis> binary_t </span> </a> </li> <li class=md-nav__item> <a href=../boolean_t/ class=md-nav__link> <span class=md-ellipsis> boolean_t </span> </a> </li> <li class=md-nav__item> <a href=../cbegin/ class=md-nav__link> <span class=md-ellipsis> cbegin </span> </a> </li> <li class=md-nav__item> <a href=../cbor_tag_handler_t/ class=md-nav__link> <span class=md-ellipsis> cbor_tag_handler_t </span> </a> </li> <li class=md-nav__item> <a href=../cend/ class=md-nav__link> <span class=md-ellipsis> cend </span> </a> </li> <li class=md-nav__item> <a href=../clear/ class=md-nav__link> <span class=md-ellipsis> clear </span> </a> </li> <li class=md-nav__item> <a href=../contains/ class=md-nav__link> <span class=md-ellipsis> contains </span> </a> </li> <li class=md-nav__item> <a href=../count/ class=md-nav__link> <span class=md-ellipsis> count </span> </a> </li> <li class=md-nav__item> <a href=../crbegin/ class=md-nav__link> <span class=md-ellipsis> crbegin </span> </a> </li> <li class=md-nav__item> <a href=../crend/ class=md-nav__link> <span class=md-ellipsis> crend </span> </a> </li> <li class=md-nav__item> <a href=../default_object_comparator_t/ class=md-nav__link> <span class=md-ellipsis> default_object_comparator_t </span> </a> </li> <li class=md-nav__item> <a href=../diff/ class=md-nav__link> <span class=md-ellipsis> diff </span> </a> </li> <li class=md-nav__item> <a href=../dump/ class=md-nav__link> <span class=md-ellipsis> dump </span> </a> </li> <li class=md-nav__item> <a href=../emplace/ class=md-nav__link> <span class=md-ellipsis> emplace </span> </a> </li> <li class=md-nav__item> <a href=../emplace_back/ class=md-nav__link> <span class=md-ellipsis> emplace_back </span> </a> </li> <li class=md-nav__item> <a href=../empty/ class=md-nav__link> <span class=md-ellipsis> empty </span> </a> </li> <li class=md-nav__item> <a href=../end/ class=md-nav__link> <span class=md-ellipsis> end </span> </a> </li> <li class=md-nav__item> <a href=../end_pos/ class=md-nav__link> <span class=md-ellipsis> end_pos </span> </a> </li> <li class=md-nav__item> <a href=../erase/ class=md-nav__link> <span class=md-ellipsis> erase </span> </a> </li> <li class=md-nav__item> <a href=../error_handler_t/ class=md-nav__link> <span class=md-ellipsis> error_handler_t </span> </a> </li> <li class=md-nav__item> <a href=../exception/ class=md-nav__link> <span class=md-ellipsis> exception </span> </a> </li> <li class=md-nav__item> <a href=../find/ class=md-nav__link> <span class=md-ellipsis> find </span> </a> </li> <li class=md-nav__item> <a href=../flatten/ class=md-nav__link> <span class=md-ellipsis> flatten </span> </a> </li> <li class=md-nav__item> <a href=../from_bjdata/ class=md-nav__link> <span class=md-ellipsis> from_bjdata </span> </a> </li> <li class=md-nav__item> <a href=../from_bson/ class=md-nav__link> <span class=md-ellipsis> from_bson </span> </a> </li> <li class=md-nav__item> <a href=../from_cbor/ class=md-nav__link> <span class=md-ellipsis> from_cbor </span> </a> </li> <li class=md-nav__item> <a href=../from_msgpack/ class=md-nav__link> <span class=md-ellipsis> from_msgpack </span> </a> </li> <li class=md-nav__item> <a href=../from_ubjson/ class=md-nav__link> <span class=md-ellipsis> from_ubjson </span> </a> </li> <li class=md-nav__item> <a href=../front/ class=md-nav__link> <span class=md-ellipsis> front </span> </a> </li> <li class=md-nav__item> <a href=../get/ class=md-nav__link> <span class=md-ellipsis> get </span> </a> </li> <li class=md-nav__item> <a href=../get_allocator/ class=md-nav__link> <span class=md-ellipsis> get_allocator </span> </a> </li> <li class=md-nav__item> <a href=../get_binary/ class=md-nav__link> <span class=md-ellipsis> get_binary </span> </a> </li> <li class=md-nav__item> <a href=../get_ptr/ class=md-nav__link> <span class=md-ellipsis> get_ptr </span> </a> </li> <li class=md-nav__item> <a href=../get_ref/ class=md-nav__link> <span class=md-ellipsis> get_ref </span> </a> </li> <li class=md-nav__item> <a href=../get_to/ class=md-nav__link> <span class=md-ellipsis> get_to </span> </a> </li> <li class=md-nav__item> <a href=../std_hash/ class=md-nav__link> <span class=md-ellipsis> std::hash&lt;basic_json&gt; </span> </a> </li> <li class=md-nav__item> <a href=../input_format_t/ class=md-nav__link> <span class=md-ellipsis> input_format_t </span> </a> </li> <li class=md-nav__item> <a href=../insert/ class=md-nav__link> <span class=md-ellipsis> insert </span> </a> </li> <li class=md-nav__item> <a href=../invalid_iterator/ class=md-nav__link> <span class=md-ellipsis> invalid_iterator </span> </a> </li> <li class=md-nav__item> <a href=../is_array/ class=md-nav__link> <span class=md-ellipsis> is_array </span> </a> </li> <li class=md-nav__item> <a href=../is_binary/ class=md-nav__link> <span class=md-ellipsis> is_binary </span> </a> </li> <li class=md-nav__item> <a href=../is_boolean/ class=md-nav__link> <span class=md-ellipsis> is_boolean </span> </a> </li> <li class=md-nav__item> <a href=../is_discarded/ class=md-nav__link> <span class=md-ellipsis> is_discarded </span> </a> </li> <li class=md-nav__item> <a href=../is_null/ class=md-nav__link> <span class=md-ellipsis> is_null </span> </a> </li> <li class=md-nav__item> <a href=../is_number/ class=md-nav__link> <span class=md-ellipsis> is_number </span> </a> </li> <li class=md-nav__item> <a href=../is_number_float/ class=md-nav__link> <span class=md-ellipsis> is_number_float </span> </a> </li> <li class=md-nav__item> <a href=../is_number_integer/ class=md-nav__link> <span class=md-ellipsis> is_number_integer </span> </a> </li> <li class=md-nav__item> <a href=../is_number_unsigned/ class=md-nav__link> <span class=md-ellipsis> is_number_unsigned </span> </a> </li> <li class=md-nav__item> <a href=../is_object/ class=md-nav__link> <span class=md-ellipsis> is_object </span> </a> </li> <li class=md-nav__item> <a href=../is_primitive/ class=md-nav__link> <span class=md-ellipsis> is_primitive </span> </a> </li> <li class=md-nav__item> <a href=../is_string/ class=md-nav__link> <span class=md-ellipsis> is_string </span> </a> </li> <li class=md-nav__item> <a href=../is_structured/ class=md-nav__link> <span class=md-ellipsis> is_structured </span> </a> </li> <li class=md-nav__item> <a href=../items/ class=md-nav__link> <span class=md-ellipsis> items </span> </a> </li> <li class=md-nav__item> <a href=../json_base_class_t/ class=md-nav__link> <span class=md-ellipsis> json_base_class_t </span> </a> </li> <li class=md-nav__item> <a href=../json_serializer/ class=md-nav__link> <span class=md-ellipsis> json_serializer </span> </a> </li> <li class=md-nav__item> <a href=../max_size/ class=md-nav__link> <span class=md-ellipsis> max_size </span> </a> </li> <li class=md-nav__item> <a href=../meta/ class=md-nav__link> <span class=md-ellipsis> meta </span> </a> </li> <li class=md-nav__item> <a href=../merge_patch/ class=md-nav__link> <span class=md-ellipsis> merge_patch </span> </a> </li> <li class=md-nav__item> <a href=../number_float_t/ class=md-nav__link> <span class=md-ellipsis> number_float_t </span> </a> </li> <li class=md-nav__item> <a href=../number_integer_t/ class=md-nav__link> <span class=md-ellipsis> number_integer_t </span> </a> </li> <li class=md-nav__item> <a href=../number_unsigned_t/ class=md-nav__link> <span class=md-ellipsis> number_unsigned_t </span> </a> </li> <li class=md-nav__item> <a href=../object/ class=md-nav__link> <span class=md-ellipsis> object </span> </a> </li> <li class=md-nav__item> <a href=../object_comparator_t/ class=md-nav__link> <span class=md-ellipsis> object_comparator_t </span> </a> </li> <li class=md-nav__item> <a href=../object_t/ class=md-nav__link> <span class=md-ellipsis> object_t </span> </a> </li> <li class=md-nav__item> <a href=../operator_ValueType/ class=md-nav__link> <span class=md-ellipsis> operator ValueType </span> </a> </li> <li class=md-nav__item> <a href=../operator_value_t/ class=md-nav__link> <span class=md-ellipsis> operator value_t </span> </a> </li> <li class=md-nav__item> <a href=../operator%5B%5D/ class=md-nav__link> <span class=md-ellipsis> operator[] </span> </a> </li> <li class=md-nav__item> <a href=../operator%3D/ class=md-nav__link> <span class=md-ellipsis> operator= </span> </a> </li> <li class=md-nav__item> <a href=../operator%2B%3D/ class=md-nav__link> <span class=md-ellipsis> operator+= </span> </a> </li> <li class=md-nav__item> <a href=../operator_eq/ class=md-nav__link> <span class=md-ellipsis> operator== </span> </a> </li> <li class=md-nav__item> <a href=../operator_ne/ class=md-nav__link> <span class=md-ellipsis> operator!= </span> </a> </li> <li class=md-nav__item> <a href=../operator_lt/ class=md-nav__link> <span class=md-ellipsis> operator< </span> </a> </li> <li class=md-nav__item> <a href=../operator_gt/ class=md-nav__link> <span class=md-ellipsis> operator> </span> </a> </li> <li class=md-nav__item> <a href=../operator_le/ class=md-nav__link> <span class=md-ellipsis> operator<= </span> </a> </li> <li class=md-nav__item> <a href=../operator_ge/ class=md-nav__link> <span class=md-ellipsis> operator>= </span> </a> </li> <li class=md-nav__item> <a href=../operator_spaceship/ class=md-nav__link> <span class=md-ellipsis> operator<=> </span> </a> </li> <li class=md-nav__item> <a href=../out_of_range/ class=md-nav__link> <span class=md-ellipsis> out_of_range </span> </a> </li> <li class=md-nav__item> <a href=../other_error/ class=md-nav__link> <span class=md-ellipsis> other_error </span> </a> </li> <li class=md-nav__item> <a href=../parse/ class=md-nav__link> <span class=md-ellipsis> parse </span> </a> </li> <li class=md-nav__item> <a href=../parse_error/ class=md-nav__link> <span class=md-ellipsis> parse_error </span> </a> </li> <li class=md-nav__item> <a href=../parse_event_t/ class=md-nav__link> <span class=md-ellipsis> parse_event_t </span> </a> </li> <li class=md-nav__item> <a href=../parser_callback_t/ class=md-nav__link> <span class=md-ellipsis> parser_callback_t </span> </a> </li> <li class=md-nav__item> <a href=../patch/ class=md-nav__link> <span class=md-ellipsis> patch </span> </a> </li> <li class=md-nav__item> <a href=../patch_inplace/ class=md-nav__link> <span class=md-ellipsis> patch_inplace </span> </a> </li> <li class=md-nav__item> <a href=../push_back/ class=md-nav__link> <span class=md-ellipsis> push_back </span> </a> </li> <li class=md-nav__item> <a href=../rbegin/ class=md-nav__link> <span class=md-ellipsis> rbegin </span> </a> </li> <li class=md-nav__item> <a href=../rend/ class=md-nav__link> <span class=md-ellipsis> rend </span> </a> </li> <li class=md-nav__item> <a href=../sax_parse/ class=md-nav__link> <span class=md-ellipsis> sax_parse </span> </a> </li> <li class=md-nav__item> <a href=../size/ class=md-nav__link> <span class=md-ellipsis> size </span> </a> </li> <li class=md-nav__item> <a href=../start_pos/ class=md-nav__link> <span class=md-ellipsis> start_pos </span> </a> </li> <li class=md-nav__item> <a href=../string_t/ class=md-nav__link> <span class=md-ellipsis> string_t </span> </a> </li> <li class=md-nav__item> <a href=../swap/ class=md-nav__link> <span class=md-ellipsis> swap </span> </a> </li> <li class=md-nav__item> <a href=../std_swap/ class=md-nav__link> <span class=md-ellipsis> std::swap&lt;basic_json&gt; </span> </a> </li> <li class=md-nav__item> <a href=../to_bjdata/ class=md-nav__link> <span class=md-ellipsis> to_bjdata </span> </a> </li> <li class=md-nav__item> <a href=../to_bson/ class=md-nav__link> <span class=md-ellipsis> to_bson </span> </a> </li> <li class=md-nav__item> <a href=../to_cbor/ class=md-nav__link> <span class=md-ellipsis> to_cbor </span> </a> </li> <li class=md-nav__item> <a href=../to_msgpack/ class=md-nav__link> <span class=md-ellipsis> to_msgpack </span> </a> </li> <li class=md-nav__item> <a href=../to_string/ class=md-nav__link> <span class=md-ellipsis> to_string </span> </a> </li> <li class=md-nav__item> <a href=../to_ubjson/ class=md-nav__link> <span class=md-ellipsis> to_ubjson </span> </a> </li> <li class=md-nav__item> <a href=../type/ class=md-nav__link> <span class=md-ellipsis> type </span> </a> </li> <li class=md-nav__item> <a href=../type_error/ class=md-nav__link> <span class=md-ellipsis> type_error </span> </a> </li> <li class=md-nav__item> <a href=../type_name/ class=md-nav__link> <span class=md-ellipsis> type_name </span> </a> </li> <li class=md-nav__item> <a href=../unflatten/ class=md-nav__link> <span class=md-ellipsis> unflatten </span> </a> </li> <li class=md-nav__item> <a href=../update/ class=md-nav__link> <span class=md-ellipsis> update </span> </a> </li> <li class=md-nav__item> <a href=../value/ class=md-nav__link> <span class=md-ellipsis> value </span> </a> </li> <li class=md-nav__item> <a href=../value_t/ class=md-nav__link> <span class=md-ellipsis> value_t </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_2> <div class="md-nav__link md-nav__container"> <a href=../../byte_container_with_subtype/ class="md-nav__link "> <span class=md-ellipsis> byte_container_with_subtype </span> </a> <label class="md-nav__link " for=__nav_4_2 id=__nav_4_2_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_2_label aria-expanded=false> <label class=md-nav__title for=__nav_4_2> <span class="md-nav__icon md-icon"></span> byte_container_with_subtype </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../byte_container_with_subtype/byte_container_with_subtype/ class=md-nav__link> <span class=md-ellipsis> (constructor) </span> </a> </li> <li class=md-nav__item> <a href=../../byte_container_with_subtype/clear_subtype/ class=md-nav__link> <span class=md-ellipsis> clear_subtype </span> </a> </li> <li class=md-nav__item> <a href=../../byte_container_with_subtype/has_subtype/ class=md-nav__link> <span class=md-ellipsis> has_subtype </span> </a> </li> <li class=md-nav__item> <a href=../../byte_container_with_subtype/set_subtype/ class=md-nav__link> <span class=md-ellipsis> set_subtype </span> </a> </li> <li class=md-nav__item> <a href=../../byte_container_with_subtype/subtype/ class=md-nav__link> <span class=md-ellipsis> subtype </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_3> <div class="md-nav__link md-nav__container"> <a href=../../adl_serializer/ class="md-nav__link "> <span class=md-ellipsis> adl_serializer </span> </a> <label class="md-nav__link " for=__nav_4_3 id=__nav_4_3_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_3_label aria-expanded=false> <label class=md-nav__title for=__nav_4_3> <span class="md-nav__icon md-icon"></span> adl_serializer </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../adl_serializer/from_json/ class=md-nav__link> <span class=md-ellipsis> from_json </span> </a> </li> <li class=md-nav__item> <a href=../../adl_serializer/to_json/ class=md-nav__link> <span class=md-ellipsis> to_json </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../json/ class=md-nav__link> <span class=md-ellipsis> json </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_5> <div class="md-nav__link md-nav__container"> <a href=../../json_pointer/ class="md-nav__link "> <span class=md-ellipsis> json_pointer </span> </a> <label class="md-nav__link " for=__nav_4_5 id=__nav_4_5_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_5_label aria-expanded=false> <label class=md-nav__title for=__nav_4_5> <span class="md-nav__icon md-icon"></span> json_pointer </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../json_pointer/json_pointer/ class=md-nav__link> <span class=md-ellipsis> (Constructor) </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/back/ class=md-nav__link> <span class=md-ellipsis> back </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/empty/ class=md-nav__link> <span class=md-ellipsis> empty </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/front/ class=md-nav__link> <span class=md-ellipsis> front </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_string_t/ class=md-nav__link> <span class=md-ellipsis> operator string_t </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_eq/ class=md-nav__link> <span class=md-ellipsis> operator== </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_ne/ class=md-nav__link> <span class=md-ellipsis> operator!= </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_slash/ class=md-nav__link> <span class=md-ellipsis> operator/ </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_slasheq/ class=md-nav__link> <span class=md-ellipsis> operator/= </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/parent_pointer/ class=md-nav__link> <span class=md-ellipsis> parent_pointer </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/pop_back/ class=md-nav__link> <span class=md-ellipsis> pop_back </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/pop_front/ class=md-nav__link> <span class=md-ellipsis> pop_front </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/push_back/ class=md-nav__link> <span class=md-ellipsis> push_back </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/push_front/ class=md-nav__link> <span class=md-ellipsis> push_front </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/string_t/ class=md-nav__link> <span class=md-ellipsis> string_t </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/to_string/ class=md-nav__link> <span class=md-ellipsis> to_string </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_6> <div class="md-nav__link md-nav__container"> <a href=../../json_sax/ class="md-nav__link "> <span class=md-ellipsis> json_sax </span> </a> <label class="md-nav__link " for=__nav_4_6 id=__nav_4_6_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_6_label aria-expanded=false> <label class=md-nav__title for=__nav_4_6> <span class="md-nav__icon md-icon"></span> json_sax </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../json_sax/binary/ class=md-nav__link> <span class=md-ellipsis> binary </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/boolean/ class=md-nav__link> <span class=md-ellipsis> boolean </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/end_array/ class=md-nav__link> <span class=md-ellipsis> end_array </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/end_object/ class=md-nav__link> <span class=md-ellipsis> end_object </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/key/ class=md-nav__link> <span class=md-ellipsis> key </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/null/ class=md-nav__link> <span class=md-ellipsis> null </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/number_float/ class=md-nav__link> <span class=md-ellipsis> number_float </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/number_integer/ class=md-nav__link> <span class=md-ellipsis> number_integer </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/number_unsigned/ class=md-nav__link> <span class=md-ellipsis> number_unsigned </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/parse_error/ class=md-nav__link> <span class=md-ellipsis> parse_error </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/start_array/ class=md-nav__link> <span class=md-ellipsis> start_array </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/start_object/ class=md-nav__link> <span class=md-ellipsis> start_object </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/string/ class=md-nav__link> <span class=md-ellipsis> string </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../operator_ltlt/ class=md-nav__link> <span class=md-ellipsis> operator<<(basic_json), operator<<(json_pointer) </span> </a> </li> <li class=md-nav__item> <a href=../../operator_gtgt/ class=md-nav__link> <span class=md-ellipsis> operator>>(basic_json) </span> </a> </li> <li class=md-nav__item> <a href=../../operator_literal_json/ class=md-nav__link> <span class=md-ellipsis> operator""_json </span> </a> </li> <li class=md-nav__item> <a href=../../operator_literal_json_pointer/ class=md-nav__link> <span class=md-ellipsis> operator""_json_pointer </span> </a> </li> <li class=md-nav__item> <a href=../../ordered_json/ class=md-nav__link> <span class=md-ellipsis> ordered_json </span> </a> </li> <li class=md-nav__item> <a href=../../ordered_map/ class=md-nav__link> <span class=md-ellipsis> ordered_map </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_13> <div class="md-nav__link md-nav__container"> <a href=../../macros/ class="md-nav__link "> <span class=md-ellipsis> macros </span> </a> <label class="md-nav__link " for=__nav_4_13 id=__nav_4_13_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_13_label aria-expanded=false> <label class=md-nav__title for=__nav_4_13> <span class="md-nav__icon md-icon"></span> macros </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../macros/json_assert/ class=md-nav__link> <span class=md-ellipsis> JSON_ASSERT </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_brace_init_copy_semantics/ class=md-nav__link> <span class=md-ellipsis> JSON_BRACE_INIT_COPY_SEMANTICS </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_throw_user/ class=md-nav__link> <span class=md-ellipsis> JSON_CATCH_USER, JSON_THROW_USER, JSON_TRY_USER </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_diagnostics/ class=md-nav__link> <span class=md-ellipsis> JSON_DIAGNOSTICS </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_diagnostic_positions/ class=md-nav__link> <span class=md-ellipsis> JSON_DIAGNOSTIC_POSITIONS </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_disable_enum_serialization/ class=md-nav__link> <span class=md-ellipsis> JSON_DISABLE_ENUM_SERIALIZATION </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_has_cpp_11/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_CPP_11, JSON_HAS_CPP_14, JSON_HAS_CPP_17, JSON_HAS_CPP_20 </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_has_filesystem/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_EXPERIMENTAL_FILESYSTEM, JSON_HAS_FILESYSTEM </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_has_ranges/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_RANGES </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_has_static_rtti/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_STATIC_RTTI </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_has_three_way_comparison/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_THREE_WAY_COMPARISON </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_noexception/ class=md-nav__link> <span class=md-ellipsis> JSON_NOEXCEPTION </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_no_io/ class=md-nav__link> <span class=md-ellipsis> JSON_NO_IO </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_skip_library_version_check/ class=md-nav__link> <span class=md-ellipsis> JSON_SKIP_LIBRARY_VERSION_CHECK </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_skip_unsupported_compiler_check/ class=md-nav__link> <span class=md-ellipsis> JSON_SKIP_UNSUPPORTED_COMPILER_CHECK </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_use_global_udls/ class=md-nav__link> <span class=md-ellipsis> JSON_USE_GLOBAL_UDLS </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_use_implicit_conversions/ class=md-nav__link> <span class=md-ellipsis> JSON_USE_IMPLICIT_CONVERSIONS </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_use_legacy_discarded_value_comparison/ class=md-nav__link> <span class=md-ellipsis> JSON_USE_LEGACY_DISCARDED_VALUE_COMPARISON </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_define_derived_type/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_ONLY_SERIALIZE, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_define_type_intrusive/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_TYPE_INTRUSIVE, NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_TYPE_INTRUSIVE_ONLY_SERIALIZE </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_define_type_non_intrusive/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_define_type_with_names/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_TYPE_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_namespace/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_NAMESPACE </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_namespace_begin/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_NAMESPACE_BEGIN, NLOHMANN_JSON_NAMESPACE_END </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_namespace_no_version/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_NAMESPACE_NO_VERSION </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_serialize_enum/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_SERIALIZE_ENUM </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_serialize_enum_strict/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_SERIALIZE_ENUM_STRICT </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_version_major/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_VERSION_MAJOR, NLOHMANN_JSON_VERSION_MINOR, NLOHMANN_JSON_VERSION_PATCH </span> </a> </li> </ul> </nav> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_5> <div class="md-nav__link md-nav__container"> <a href=../../../community/ class="md-nav__link "> <span class=md-ellipsis> Community </span> </a> <label class="md-nav__link " for=__nav_5 id=__nav_5_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_5_label aria-expanded=false> <label class=md-nav__title for=__nav_5> <span class="md-nav__icon md-icon"></span> Community </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../community/code_of_conduct/ class=md-nav__link> <span class=md-ellipsis> Code of Conduct </span> </a> </li> <li class=md-nav__item> <a href=../../../community/contribution_guidelines/ class=md-nav__link> <span class=md-ellipsis> Contribution Guidelines </span> </a> </li> <li class=md-nav__item> <a href=../../../community/quality_assurance/ class=md-nav__link> <span class=md-ellipsis> Quality assurance </span> </a> </li> <li class=md-nav__item> <a href=../../../community/governance/ class=md-nav__link> <span class=md-ellipsis> Governance </span> </a> </li> <li class=md-nav__item> <a href=../../../community/security_policy/ class=md-nav__link> <span class=md-ellipsis> Security Policy </span> </a> </li> </ul> </nav> </li> </ul> </nav> </div> </div> </div> <div class="md-sidebar md-sidebar--secondary" data-md-component=sidebar data-md-type=toc> <div class=md-sidebar__scrollwrap> <div class=md-sidebar__inner> <nav class="md-nav md-nav--secondary" aria-label="Table of contents"> <label class=md-nav__title for=__toc> <span class="md-nav__icon md-icon"></span> Table of contents </label> <ul class=md-nav__list data-md-component=toc data-md-scrollfix> <li class=md-nav__item> <a href=#exception-safety class=md-nav__link> <span class=md-ellipsis> Exception safety </span> </a> </li> <li class=md-nav__item> <a href=#complexity class=md-nav__link> <span class=md-ellipsis> Complexity </span> </a> </li> <li class=md-nav__item> <a href=#version-history class=md-nav__link> <span class=md-ellipsis> Version history </span> </a> </li> </ul> </nav> </div> </div> </div> <div class=md-content data-md-component=content> <article class="md-content__inner md-typeset"> <a href="https://github.com/nlohmann/json/edit/develop/docs/mkdocs/docs/api/basic_json/~basic_json.md" title="Edit this page" class="md-content__button md-icon" rel="edit"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M10 20H6V4h7v5h5v3.1l2-2V8l-6-6H6c-1.1 0-2 .9-2 2v16c0 1.1.9 2 2 2h4zm10.2-7c.1 0 .3.1.4.2l1.3 1.3c.2.2.2.6 0 .8l-1 1-2.1-2.1 1-1c.1-.1.2-.2.4-.2m0 3.9L14.1 23H12v-2.1l6.1-6.1z"/></svg> </a> <a href="https://github.com/nlohmann/json/raw/develop/docs/mkdocs/docs/api/basic_json/~basic_json.md" title="View source of this page" class="md-content__button md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M17 18c.56 0 1 .44 1 1s-.44 1-1 1-1-.44-1-1 .44-1 1-1m0-3c-2.73 0-5.06 1.66-6 4 .94 2.34 3.27 4 6 4s5.06-1.66 6-4c-.94-2.34-3.27-4-6-4m0 6.5a2.5 2.5 0 0 1-2.5-2.5 2.5 2.5 0 0 1 2.5-2.5 2.5 2.5 0 0 1 2.5 2.5 2.5 2.5 0 0 1-2.5 2.5M9.27 20H6V4h7v5h5v4.07c.7.08 1.36.25 2 .49V8l-6-6H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h4.5a8.2 8.2 0 0 1-1.23-2"/></svg> </a> <h1 id=nlohmannbasic_jsonbasic_json><small>nlohmann::basic_json::</small>~basic_json<a class=headerlink href=#nlohmannbasic_jsonbasic_json title="Permanent link">&para;</a></h1> <div class=highlight><pre><span></span><code><span class=o>~</span><span class=n>basic_json</span><span class=p>()</span><span class=w> </span><span class=k>noexcept</span><span class=p>;</span>
-</code></pre></div> <p>Destroys the <abbr title="JavaScript Object Notation">JSON</abbr> value and frees all allocated memory.</p> <h2 id=exception-safety>Exception safety<a class=headerlink href=#exception-safety title="Permanent link">&para;</a></h2> <p>No-throw guarantee: this member function never throws exceptions.</p> <h2 id=complexity>Complexity<a class=headerlink href=#complexity title="Permanent link">&para;</a></h2> <p>Linear.</p> <!-- NOLINT Examples --> <h2 id=version-history>Version history<a class=headerlink href=#version-history title="Permanent link">&para;</a></h2> <ul> <li>Added in version 1.0.0.</li> </ul> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 23, 2026 11:16:18 UTC">June 23, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
+</code></pre></div> <p>Destroys the <abbr title="JavaScript Object Notation">JSON</abbr> value and frees all allocated memory.</p> <h2 id=exception-safety>Exception safety<a class=headerlink href=#exception-safety title="Permanent link">&para;</a></h2> <p>No-throw guarantee: this member function never throws exceptions.</p> <h2 id=complexity>Complexity<a class=headerlink href=#complexity title="Permanent link">&para;</a></h2> <p>Linear.</p> <!-- NOLINT Examples --> <h2 id=version-history>Version history<a class=headerlink href=#version-history title="Permanent link">&para;</a></h2> <ul> <li>Added in version 1.0.0.</li> </ul> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 29, 2026 20:15:18 UTC">June 29, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
diff --git a/api/byte_container_with_subtype/byte_container_with_subtype/index.html b/api/byte_container_with_subtype/byte_container_with_subtype/index.html
index d58365c..59bbbcb 100644
--- a/api/byte_container_with_subtype/byte_container_with_subtype/index.html
+++ b/api/byte_container_with_subtype/byte_container_with_subtype/index.html
@@ -34,4 +34,4 @@
 </code></pre></div> <p>Output:</p> <div class=highlight><pre><span></span><code><span class=p>{</span><span class=nt>&quot;bytes&quot;</span><span class=p>:[],</span><span class=nt>&quot;subtype&quot;</span><span class=p>:</span><span class=kc>null</span><span class=p>}</span>
 <span class=p>{</span><span class=nt>&quot;bytes&quot;</span><span class=p>:[</span><span class=mi>202</span><span class=p>,</span><span class=mi>254</span><span class=p>,</span><span class=mi>186</span><span class=p>,</span><span class=mi>190</span><span class=p>],</span><span class=nt>&quot;subtype&quot;</span><span class=p>:</span><span class=kc>null</span><span class=p>}</span>
 <span class=p>{</span><span class=nt>&quot;bytes&quot;</span><span class=p>:[</span><span class=mi>202</span><span class=p>,</span><span class=mi>254</span><span class=p>,</span><span class=mi>186</span><span class=p>,</span><span class=mi>190</span><span class=p>],</span><span class=nt>&quot;subtype&quot;</span><span class=p>:</span><span class=mi>42</span><span class=p>}</span>
-</code></pre></div> </details> <h2 id=version-history>Version history<a class=headerlink href=#version-history title="Permanent link">&para;</a></h2> <p>Since version 3.8.0.</p> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 23, 2026 11:16:18 UTC">June 23, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
+</code></pre></div> </details> <h2 id=version-history>Version history<a class=headerlink href=#version-history title="Permanent link">&para;</a></h2> <p>Since version 3.8.0.</p> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 29, 2026 20:15:18 UTC">June 29, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
diff --git a/api/byte_container_with_subtype/clear_subtype/index.html b/api/byte_container_with_subtype/clear_subtype/index.html
index 40893ca..70ce50c 100644
--- a/api/byte_container_with_subtype/clear_subtype/index.html
+++ b/api/byte_container_with_subtype/clear_subtype/index.html
@@ -22,4 +22,4 @@
 <span class=p>}</span>
 </code></pre></div> <p>Output:</p> <div class=highlight><pre><span></span><code><span class=err>be</span><span class=kc>f</span><span class=err>ore</span><span class=w> </span><span class=err>calli</span><span class=kc>n</span><span class=err>g</span><span class=w> </span><span class=err>clear_sub</span><span class=kc>t</span><span class=err>ype()</span><span class=p>:</span><span class=w> </span><span class=p>{</span><span class=nt>&quot;bytes&quot;</span><span class=p>:[</span><span class=mi>202</span><span class=p>,</span><span class=mi>254</span><span class=p>,</span><span class=mi>186</span><span class=p>,</span><span class=mi>190</span><span class=p>],</span><span class=nt>&quot;subtype&quot;</span><span class=p>:</span><span class=mi>42</span><span class=p>}</span>
 <span class=err>a</span><span class=kc>fter</span><span class=w> </span><span class=err>calli</span><span class=kc>n</span><span class=err>g</span><span class=w> </span><span class=err>clear_sub</span><span class=kc>t</span><span class=err>ype()</span><span class=p>:</span><span class=w> </span><span class=p>{</span><span class=nt>&quot;bytes&quot;</span><span class=p>:[</span><span class=mi>202</span><span class=p>,</span><span class=mi>254</span><span class=p>,</span><span class=mi>186</span><span class=p>,</span><span class=mi>190</span><span class=p>],</span><span class=nt>&quot;subtype&quot;</span><span class=p>:</span><span class=kc>null</span><span class=p>}</span>
-</code></pre></div> </details> <h2 id=version-history>Version history<a class=headerlink href=#version-history title="Permanent link">&para;</a></h2> <p>Since version 3.8.0.</p> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 23, 2026 11:16:18 UTC">June 23, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
+</code></pre></div> </details> <h2 id=version-history>Version history<a class=headerlink href=#version-history title="Permanent link">&para;</a></h2> <p>Since version 3.8.0.</p> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 29, 2026 20:15:18 UTC">June 29, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
diff --git a/api/byte_container_with_subtype/has_subtype/index.html b/api/byte_container_with_subtype/has_subtype/index.html
index 7ca31cf..fa1d175 100644
--- a/api/byte_container_with_subtype/has_subtype/index.html
+++ b/api/byte_container_with_subtype/has_subtype/index.html
@@ -20,4 +20,4 @@
 <span class=p>}</span>
 </code></pre></div> <p>Output:</p> <div class=highlight><pre><span></span><code><span class=err>c</span><span class=mf>1.</span><span class=err>has_sub</span><span class=kc>t</span><span class=err>ype()</span><span class=w> </span><span class=err>=</span><span class=w> </span><span class=kc>false</span>
 <span class=err>c</span><span class=mf>2.</span><span class=err>has_sub</span><span class=kc>t</span><span class=err>ype()</span><span class=w> </span><span class=err>=</span><span class=w> </span><span class=kc>true</span>
-</code></pre></div> </details> <h2 id=version-history>Version history<a class=headerlink href=#version-history title="Permanent link">&para;</a></h2> <p>Since version 3.8.0.</p> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 23, 2026 11:16:18 UTC">June 23, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
+</code></pre></div> </details> <h2 id=version-history>Version history<a class=headerlink href=#version-history title="Permanent link">&para;</a></h2> <p>Since version 3.8.0.</p> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 29, 2026 20:15:18 UTC">June 29, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
diff --git a/api/byte_container_with_subtype/index.html b/api/byte_container_with_subtype/index.html
index 1ae0d8f..ac2fb32 100644
--- a/api/byte_container_with_subtype/index.html
+++ b/api/byte_container_with_subtype/index.html
@@ -1,3 +1,3 @@
 <!doctype html><html lang=en class=no-js> <head><meta charset=utf-8><meta name=viewport content="width=device-width,initial-scale=1"><meta name=author content="Niels Lohmann"><link href="https://json.nlohmann.me/api/byte_container_with_subtype/" rel="canonical"><link href=../basic_json/value_t/ rel=prev><link href=byte_container_with_subtype/ rel=next><link rel=icon href=../../assets/images/favicon.png><meta name=generator content="mkdocs-1.6.1, mkdocs-material-9.7.6"><title>Overview - JSON for Modern C++</title><link rel=stylesheet href=../../assets/stylesheets/main.484c7ddc.min.css><link rel=stylesheet href=../../assets/stylesheets/palette.ab4e12ef.min.css><link rel="stylesheet" href="../../assets/external/fonts.googleapis.com/css.61a430c9.css"><style>:root{--md-text-font:"Roboto";--md-code-font:"JetBrains Mono"}</style><link rel=stylesheet href=../../css/custom.css><script>__md_scope=new URL("../..",location),__md_hash=e=>[...e].reduce(((e,_)=>(e<<5)-e+_.charCodeAt(0)),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script></head> <body dir=ltr data-md-color-scheme=default data-md-color-primary=indigo data-md-color-accent=indigo> <input class=md-toggle data-md-toggle=drawer type=checkbox id=__drawer autocomplete=off> <input class=md-toggle data-md-toggle=search type=checkbox id=__search autocomplete=off> <label class=md-overlay for=__drawer></label> <div data-md-component=skip> <a href=#nlohmannbyte_container_with_subtype class=md-skip> Skip to content </a> </div> <div data-md-component=announce> </div> <header class=md-header data-md-component=header> <nav class="md-header__inner md-grid" aria-label=Header> <a href=../.. title="JSON for Modern C++" class="md-header__button md-logo" aria-label="JSON for Modern C++" data-md-component=logo> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54"/></svg> </a> <label class="md-header__button md-icon" for=__drawer> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M3 6h18v2H3zm0 5h18v2H3zm0 5h18v2H3z"/></svg> </label> <div class=md-header__title data-md-component=header-title> <div class=md-header__ellipsis> <div class=md-header__topic> <span class=md-ellipsis> JSON for Modern C++ </span> </div> <div class=md-header__topic data-md-component=header-topic> <span class=md-ellipsis> Overview </span> </div> </div> </div> <form class=md-header__option data-md-component=palette> <input class=md-option data-md-color-media="(prefers-color-scheme: light)" data-md-color-scheme=default data-md-color-primary=indigo data-md-color-accent=indigo aria-label="Switch to dark mode" type=radio name=__palette id=__palette_0> <label class="md-header__button md-icon" title="Switch to dark mode" for=__palette_1 hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a4 4 0 0 0-4 4 4 4 0 0 0 4 4 4 4 0 0 0 4-4 4 4 0 0 0-4-4m0 10a6 6 0 0 1-6-6 6 6 0 0 1 6-6 6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12z"/></svg> </label> <input class=md-option data-md-color-media="(prefers-color-scheme: dark)" data-md-color-scheme=slate data-md-color-primary=indigo data-md-color-accent=indigo aria-label="Switch to light mode" type=radio name=__palette id=__palette_1> <label class="md-header__button md-icon" title="Switch to light mode" for=__palette_0 hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 18c-.89 0-1.74-.2-2.5-.55C11.56 16.5 13 14.42 13 12s-1.44-4.5-3.5-5.45C10.26 6.2 11.11 6 12 6a6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12z"/></svg> </label> </form> <script>var palette=__md_get("__palette");if(palette&&palette.color){if("(prefers-color-scheme)"===palette.color.media){var media=matchMedia("(prefers-color-scheme: light)"),input=document.querySelector(media.matches?"[data-md-color-media='(prefers-color-scheme: light)']":"[data-md-color-media='(prefers-color-scheme: dark)']");palette.color.media=input.getAttribute("data-md-color-media"),palette.color.scheme=input.getAttribute("data-md-color-scheme"),palette.color.primary=input.getAttribute("data-md-color-primary"),palette.color.accent=input.getAttribute("data-md-color-accent")}for(var[key,value]of Object.entries(palette.color))document.body.setAttribute("data-md-color-"+key,value)}</script> <label class="md-header__button md-icon" for=__search> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg> </label> <div class=md-search data-md-component=search role=dialog> <label class=md-search__overlay for=__search></label> <div class=md-search__inner role=search> <form class=md-search__form name=search> <input type=text class=md-search__input name=query aria-label=Search placeholder=Search autocapitalize=off autocorrect=off autocomplete=off spellcheck=false data-md-component=search-query required> <label class="md-search__icon md-icon" for=__search> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11z"/></svg> </label> <nav class=md-search__options aria-label=Search> <button type=reset class="md-search__icon md-icon" title=Clear aria-label=Clear tabindex=-1> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z"/></svg> </button> </nav> </form> <div class=md-search__output> <div class=md-search__scrollwrap tabindex=0 data-md-scrollfix> <div class=md-search-result data-md-component=search-result> <div class=md-search-result__meta> Initializing search </div> <ol class=md-search-result__list role=presentation></ol> </div> </div> </div> </div> </div> <div class=md-header__source> <a href="https://github.com/nlohmann/json" title="Go to repository" class="md-source" data-md-component="source"> <div class="md-source__icon md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </div> <div class=md-source__repository> nlohmann/json </div> </a> </div> </nav> </header> <div class=md-container data-md-component=container> <nav class=md-tabs aria-label=Tabs data-md-component=tabs> <div class=md-grid> <ul class=md-tabs__list> <li class=md-tabs__item> <a href=../.. class=md-tabs__link> Home </a> </li> <li class=md-tabs__item> <a href=../../features/arbitrary_types/ class=md-tabs__link> Features </a> </li> <li class=md-tabs__item> <a href=../../integration/ class=md-tabs__link> Integration </a> </li> <li class="md-tabs__item md-tabs__item--active"> <a href=../basic_json/ class=md-tabs__link> API Documentation </a> </li> <li class=md-tabs__item> <a href=../../community/ class=md-tabs__link> Community </a> </li> </ul> </div> </nav> <main class=md-main data-md-component=main> <div class="md-main__inner md-grid"> <div class="md-sidebar md-sidebar--primary" data-md-component=sidebar data-md-type=navigation> <div class=md-sidebar__scrollwrap> <div class=md-sidebar__inner> <nav class="md-nav md-nav--primary md-nav--lifted" aria-label=Navigation data-md-level=0> <label class=md-nav__title for=__drawer> <a href=../.. title="JSON for Modern C++" class="md-nav__button md-logo" aria-label="JSON for Modern C++" data-md-component=logo> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54"/></svg> </a> JSON for Modern C++ </label> <div class=md-nav__source> <a href="https://github.com/nlohmann/json" title="Go to repository" class="md-source" data-md-component="source"> <div class="md-source__icon md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </div> <div class=md-source__repository> nlohmann/json </div> </a> </div> <ul class=md-nav__list data-md-scrollfix> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_1> <div class="md-nav__link md-nav__container"> <a href=../.. class="md-nav__link "> <span class=md-ellipsis> Home </span> </a> <label class="md-nav__link " for=__nav_1 id=__nav_1_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_1_label aria-expanded=false> <label class=md-nav__title for=__nav_1> <span class="md-nav__icon md-icon"></span> Home </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../home/license/ class=md-nav__link> <span class=md-ellipsis> License </span> </a> </li> <li class=md-nav__item> <a href=../../home/faq/ class=md-nav__link> <span class=md-ellipsis> FAQ </span> </a> </li> <li class=md-nav__item> <a href=../../home/exceptions/ class=md-nav__link> <span class=md-ellipsis> Exceptions </span> </a> </li> <li class=md-nav__item> <a href=../../home/releases/ class=md-nav__link> <span class=md-ellipsis> Releases </span> </a> </li> <li class=md-nav__item> <a href=../../home/design_goals/ class=md-nav__link> <span class=md-ellipsis> Design goals </span> </a> </li> <li class=md-nav__item> <a href=../../home/architecture/ class=md-nav__link> <span class=md-ellipsis> Architecture </span> </a> </li> <li class=md-nav__item> <a href=../../home/customers/ class=md-nav__link> <span class=md-ellipsis> Customers </span> </a> </li> <li class=md-nav__item> <a href=../../home/sponsors/ class=md-nav__link> <span class=md-ellipsis> Sponsors </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2> <label class=md-nav__link for=__nav_2 id=__nav_2_label tabindex=0> <span class=md-ellipsis> Features </span> <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_2_label aria-expanded=false> <label class=md-nav__title for=__nav_2> <span class="md-nav__icon md-icon"></span> Features </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../features/arbitrary_types/ class=md-nav__link> <span class=md-ellipsis> Arbitrary Type Conversions </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_2> <div class="md-nav__link md-nav__container"> <a href=../../features/binary_formats/ class="md-nav__link "> <span class=md-ellipsis> Binary Formats </span> </a> <label class="md-nav__link " for=__nav_2_2 id=__nav_2_2_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_2_label aria-expanded=false> <label class=md-nav__title for=__nav_2_2> <span class="md-nav__icon md-icon"></span> Binary Formats </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../features/binary_formats/bjdata/ class=md-nav__link> <span class=md-ellipsis> BJData </span> </a> </li> <li class=md-nav__item> <a href=../../features/binary_formats/bson/ class=md-nav__link> <span class=md-ellipsis> BSON </span> </a> </li> <li class=md-nav__item> <a href=../../features/binary_formats/cbor/ class=md-nav__link> <span class=md-ellipsis> CBOR </span> </a> </li> <li class=md-nav__item> <a href=../../features/binary_formats/messagepack/ class=md-nav__link> <span class=md-ellipsis> MessagePack </span> </a> </li> <li class=md-nav__item> <a href=../../features/binary_formats/ubjson/ class=md-nav__link> <span class=md-ellipsis> UBJSON </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../features/binary_values/ class=md-nav__link> <span class=md-ellipsis> Binary Values </span> </a> </li> <li class=md-nav__item> <a href=../../features/comments/ class=md-nav__link> <span class=md-ellipsis> Comments </span> </a> </li> <li class=md-nav__item> <a href=../../features/trailing_commas/ class=md-nav__link> <span class=md-ellipsis> Trailing Commas </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_6> <div class="md-nav__link md-nav__container"> <a href=../../features/element_access/ class="md-nav__link "> <span class=md-ellipsis> Element Access </span> </a> <label class="md-nav__link " for=__nav_2_6 id=__nav_2_6_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_6_label aria-expanded=false> <label class=md-nav__title for=__nav_2_6> <span class="md-nav__icon md-icon"></span> Element Access </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../features/element_access/unchecked_access/ class=md-nav__link> <span class=md-ellipsis> Unchecked access: operator[] </span> </a> </li> <li class=md-nav__item> <a href=../../features/element_access/checked_access/ class=md-nav__link> <span class=md-ellipsis> Checked access: at </span> </a> </li> <li class=md-nav__item> <a href=../../features/element_access/default_value/ class=md-nav__link> <span class=md-ellipsis> Access with default value: value </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../features/iterators/ class=md-nav__link> <span class=md-ellipsis> Iterators </span> </a> </li> <li class=md-nav__item> <a href=../../features/json_pointer/ class=md-nav__link> <span class=md-ellipsis> JSON Pointer </span> </a> </li> <li class=md-nav__item> <a href=../../features/json_patch/ class=md-nav__link> <span class=md-ellipsis> JSON Patch and Diff </span> </a> </li> <li class=md-nav__item> <a href=../../features/merge_patch/ class=md-nav__link> <span class=md-ellipsis> JSON Merge Patch </span> </a> </li> <li class=md-nav__item> <a href=../../features/modules/ class=md-nav__link> <span class=md-ellipsis> Modules </span> </a> </li> <li class=md-nav__item> <a href=../../features/namespace/ class=md-nav__link> <span class=md-ellipsis> nlohmann Namespace </span> </a> </li> <li class=md-nav__item> <a href=../../features/object_order/ class=md-nav__link> <span class=md-ellipsis> Object Order </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_14> <div class="md-nav__link md-nav__container"> <a href=../../features/parsing/ class="md-nav__link "> <span class=md-ellipsis> Parsing </span> </a> <label class="md-nav__link " for=__nav_2_14 id=__nav_2_14_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_14_label aria-expanded=false> <label class=md-nav__title for=__nav_2_14> <span class="md-nav__icon md-icon"></span> Parsing </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../features/parsing/json_lines/ class=md-nav__link> <span class=md-ellipsis> JSON Lines </span> </a> </li> <li class=md-nav__item> <a href=../../features/parsing/parse_exceptions/ class=md-nav__link> <span class=md-ellipsis> Parsing and Exceptions </span> </a> </li> <li class=md-nav__item> <a href=../../features/parsing/parser_callbacks/ class=md-nav__link> <span class=md-ellipsis> Parser Callbacks </span> </a> </li> <li class=md-nav__item> <a href=../../features/parsing/sax_interface/ class=md-nav__link> <span class=md-ellipsis> SAX Interface </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../features/assertions/ class=md-nav__link> <span class=md-ellipsis> Runtime Assertions </span> </a> </li> <li class=md-nav__item> <a href=../../features/enum_conversion/ class=md-nav__link> <span class=md-ellipsis> Specializing enum conversion </span> </a> </li> <li class=md-nav__item> <a href=../../features/macros/ class=md-nav__link> <span class=md-ellipsis> Supported Macros </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_18> <div class="md-nav__link md-nav__container"> <a href=../../features/types/ class="md-nav__link "> <span class=md-ellipsis> Types </span> </a> <label class="md-nav__link " for=__nav_2_18 id=__nav_2_18_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_18_label aria-expanded=false> <label class=md-nav__title for=__nav_2_18> <span class="md-nav__icon md-icon"></span> Types </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../features/types/number_handling/ class=md-nav__link> <span class=md-ellipsis> Number Handling </span> </a> </li> </ul> </nav> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_3> <div class="md-nav__link md-nav__container"> <a href=../../integration/ class="md-nav__link "> <span class=md-ellipsis> Integration </span> </a> <label class="md-nav__link " for=__nav_3 id=__nav_3_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_3_label aria-expanded=false> <label class=md-nav__title for=__nav_3> <span class="md-nav__icon md-icon"></span> Integration </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../integration/migration_guide/ class=md-nav__link> <span class=md-ellipsis> Migration Guide </span> </a> </li> <li class=md-nav__item> <a href=../../integration/cmake/ class=md-nav__link> <span class=md-ellipsis> CMake </span> </a> </li> <li class=md-nav__item> <a href=../../integration/package_managers/ class=md-nav__link> <span class=md-ellipsis> Package Managers </span> </a> </li> <li class=md-nav__item> <a href=../../integration/pkg-config/ class=md-nav__link> <span class=md-ellipsis> Pkg-config </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--active md-nav__item--section md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4 checked> <label class=md-nav__link for=__nav_4 id=__nav_4_label tabindex> <span class=md-ellipsis> API Documentation </span> <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_4_label aria-expanded=true> <label class=md-nav__title for=__nav_4> <span class="md-nav__icon md-icon"></span> API Documentation </label> <ul class=md-nav__list data-md-scrollfix> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_1> <div class="md-nav__link md-nav__container"> <a href=../basic_json/ class="md-nav__link "> <span class=md-ellipsis> basic_json </span> </a> <label class="md-nav__link " for=__nav_4_1 id=__nav_4_1_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_1_label aria-expanded=false> <label class=md-nav__title for=__nav_4_1> <span class="md-nav__icon md-icon"></span> basic_json </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../basic_json/basic_json/ class=md-nav__link> <span class=md-ellipsis> (Constructor) </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/~basic_json/ class=md-nav__link> <span class=md-ellipsis> (Destructor) </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/accept/ class=md-nav__link> <span class=md-ellipsis> accept </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/array/ class=md-nav__link> <span class=md-ellipsis> array </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/array_t/ class=md-nav__link> <span class=md-ellipsis> array_t </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/at/ class=md-nav__link> <span class=md-ellipsis> at </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/back/ class=md-nav__link> <span class=md-ellipsis> back </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/begin/ class=md-nav__link> <span class=md-ellipsis> begin </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/binary/ class=md-nav__link> <span class=md-ellipsis> binary </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/binary_t/ class=md-nav__link> <span class=md-ellipsis> binary_t </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/boolean_t/ class=md-nav__link> <span class=md-ellipsis> boolean_t </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/cbegin/ class=md-nav__link> <span class=md-ellipsis> cbegin </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/cbor_tag_handler_t/ class=md-nav__link> <span class=md-ellipsis> cbor_tag_handler_t </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/cend/ class=md-nav__link> <span class=md-ellipsis> cend </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/clear/ class=md-nav__link> <span class=md-ellipsis> clear </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/contains/ class=md-nav__link> <span class=md-ellipsis> contains </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/count/ class=md-nav__link> <span class=md-ellipsis> count </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/crbegin/ class=md-nav__link> <span class=md-ellipsis> crbegin </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/crend/ class=md-nav__link> <span class=md-ellipsis> crend </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/default_object_comparator_t/ class=md-nav__link> <span class=md-ellipsis> default_object_comparator_t </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/diff/ class=md-nav__link> <span class=md-ellipsis> diff </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/dump/ class=md-nav__link> <span class=md-ellipsis> dump </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/emplace/ class=md-nav__link> <span class=md-ellipsis> emplace </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/emplace_back/ class=md-nav__link> <span class=md-ellipsis> emplace_back </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/empty/ class=md-nav__link> <span class=md-ellipsis> empty </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/end/ class=md-nav__link> <span class=md-ellipsis> end </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/end_pos/ class=md-nav__link> <span class=md-ellipsis> end_pos </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/erase/ class=md-nav__link> <span class=md-ellipsis> erase </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/error_handler_t/ class=md-nav__link> <span class=md-ellipsis> error_handler_t </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/exception/ class=md-nav__link> <span class=md-ellipsis> exception </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/find/ class=md-nav__link> <span class=md-ellipsis> find </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/flatten/ class=md-nav__link> <span class=md-ellipsis> flatten </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/from_bjdata/ class=md-nav__link> <span class=md-ellipsis> from_bjdata </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/from_bson/ class=md-nav__link> <span class=md-ellipsis> from_bson </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/from_cbor/ class=md-nav__link> <span class=md-ellipsis> from_cbor </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/from_msgpack/ class=md-nav__link> <span class=md-ellipsis> from_msgpack </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/from_ubjson/ class=md-nav__link> <span class=md-ellipsis> from_ubjson </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/front/ class=md-nav__link> <span class=md-ellipsis> front </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/get/ class=md-nav__link> <span class=md-ellipsis> get </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/get_allocator/ class=md-nav__link> <span class=md-ellipsis> get_allocator </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/get_binary/ class=md-nav__link> <span class=md-ellipsis> get_binary </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/get_ptr/ class=md-nav__link> <span class=md-ellipsis> get_ptr </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/get_ref/ class=md-nav__link> <span class=md-ellipsis> get_ref </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/get_to/ class=md-nav__link> <span class=md-ellipsis> get_to </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/std_hash/ class=md-nav__link> <span class=md-ellipsis> std::hash&lt;basic_json&gt; </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/input_format_t/ class=md-nav__link> <span class=md-ellipsis> input_format_t </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/insert/ class=md-nav__link> <span class=md-ellipsis> insert </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/invalid_iterator/ class=md-nav__link> <span class=md-ellipsis> invalid_iterator </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/is_array/ class=md-nav__link> <span class=md-ellipsis> is_array </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/is_binary/ class=md-nav__link> <span class=md-ellipsis> is_binary </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/is_boolean/ class=md-nav__link> <span class=md-ellipsis> is_boolean </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/is_discarded/ class=md-nav__link> <span class=md-ellipsis> is_discarded </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/is_null/ class=md-nav__link> <span class=md-ellipsis> is_null </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/is_number/ class=md-nav__link> <span class=md-ellipsis> is_number </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/is_number_float/ class=md-nav__link> <span class=md-ellipsis> is_number_float </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/is_number_integer/ class=md-nav__link> <span class=md-ellipsis> is_number_integer </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/is_number_unsigned/ class=md-nav__link> <span class=md-ellipsis> is_number_unsigned </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/is_object/ class=md-nav__link> <span class=md-ellipsis> is_object </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/is_primitive/ class=md-nav__link> <span class=md-ellipsis> is_primitive </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/is_string/ class=md-nav__link> <span class=md-ellipsis> is_string </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/is_structured/ class=md-nav__link> <span class=md-ellipsis> is_structured </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/items/ class=md-nav__link> <span class=md-ellipsis> items </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/json_base_class_t/ class=md-nav__link> <span class=md-ellipsis> json_base_class_t </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/json_serializer/ class=md-nav__link> <span class=md-ellipsis> json_serializer </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/max_size/ class=md-nav__link> <span class=md-ellipsis> max_size </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/meta/ class=md-nav__link> <span class=md-ellipsis> meta </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/merge_patch/ class=md-nav__link> <span class=md-ellipsis> merge_patch </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/number_float_t/ class=md-nav__link> <span class=md-ellipsis> number_float_t </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/number_integer_t/ class=md-nav__link> <span class=md-ellipsis> number_integer_t </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/number_unsigned_t/ class=md-nav__link> <span class=md-ellipsis> number_unsigned_t </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/object/ class=md-nav__link> <span class=md-ellipsis> object </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/object_comparator_t/ class=md-nav__link> <span class=md-ellipsis> object_comparator_t </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/object_t/ class=md-nav__link> <span class=md-ellipsis> object_t </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/operator_ValueType/ class=md-nav__link> <span class=md-ellipsis> operator ValueType </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/operator_value_t/ class=md-nav__link> <span class=md-ellipsis> operator value_t </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/operator%5B%5D/ class=md-nav__link> <span class=md-ellipsis> operator[] </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/operator%3D/ class=md-nav__link> <span class=md-ellipsis> operator= </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/operator%2B%3D/ class=md-nav__link> <span class=md-ellipsis> operator+= </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/operator_eq/ class=md-nav__link> <span class=md-ellipsis> operator== </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/operator_ne/ class=md-nav__link> <span class=md-ellipsis> operator!= </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/operator_lt/ class=md-nav__link> <span class=md-ellipsis> operator< </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/operator_gt/ class=md-nav__link> <span class=md-ellipsis> operator> </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/operator_le/ class=md-nav__link> <span class=md-ellipsis> operator<= </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/operator_ge/ class=md-nav__link> <span class=md-ellipsis> operator>= </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/operator_spaceship/ class=md-nav__link> <span class=md-ellipsis> operator<=> </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/out_of_range/ class=md-nav__link> <span class=md-ellipsis> out_of_range </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/other_error/ class=md-nav__link> <span class=md-ellipsis> other_error </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/parse/ class=md-nav__link> <span class=md-ellipsis> parse </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/parse_error/ class=md-nav__link> <span class=md-ellipsis> parse_error </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/parse_event_t/ class=md-nav__link> <span class=md-ellipsis> parse_event_t </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/parser_callback_t/ class=md-nav__link> <span class=md-ellipsis> parser_callback_t </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/patch/ class=md-nav__link> <span class=md-ellipsis> patch </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/patch_inplace/ class=md-nav__link> <span class=md-ellipsis> patch_inplace </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/push_back/ class=md-nav__link> <span class=md-ellipsis> push_back </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/rbegin/ class=md-nav__link> <span class=md-ellipsis> rbegin </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/rend/ class=md-nav__link> <span class=md-ellipsis> rend </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/sax_parse/ class=md-nav__link> <span class=md-ellipsis> sax_parse </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/size/ class=md-nav__link> <span class=md-ellipsis> size </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/start_pos/ class=md-nav__link> <span class=md-ellipsis> start_pos </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/string_t/ class=md-nav__link> <span class=md-ellipsis> string_t </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/swap/ class=md-nav__link> <span class=md-ellipsis> swap </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/std_swap/ class=md-nav__link> <span class=md-ellipsis> std::swap&lt;basic_json&gt; </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/to_bjdata/ class=md-nav__link> <span class=md-ellipsis> to_bjdata </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/to_bson/ class=md-nav__link> <span class=md-ellipsis> to_bson </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/to_cbor/ class=md-nav__link> <span class=md-ellipsis> to_cbor </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/to_msgpack/ class=md-nav__link> <span class=md-ellipsis> to_msgpack </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/to_string/ class=md-nav__link> <span class=md-ellipsis> to_string </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/to_ubjson/ class=md-nav__link> <span class=md-ellipsis> to_ubjson </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/type/ class=md-nav__link> <span class=md-ellipsis> type </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/type_error/ class=md-nav__link> <span class=md-ellipsis> type_error </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/type_name/ class=md-nav__link> <span class=md-ellipsis> type_name </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/unflatten/ class=md-nav__link> <span class=md-ellipsis> unflatten </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/update/ class=md-nav__link> <span class=md-ellipsis> update </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/value/ class=md-nav__link> <span class=md-ellipsis> value </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/value_t/ class=md-nav__link> <span class=md-ellipsis> value_t </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--active md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_2 checked> <div class="md-nav__link md-nav__container"> <a href=./ class="md-nav__link md-nav__link--active"> <span class=md-ellipsis> byte_container_with_subtype </span> </a> <label class="md-nav__link md-nav__link--active" for=__nav_4_2 id=__nav_4_2_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_2_label aria-expanded=true> <label class=md-nav__title for=__nav_4_2> <span class="md-nav__icon md-icon"></span> byte_container_with_subtype </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=byte_container_with_subtype/ class=md-nav__link> <span class=md-ellipsis> (constructor) </span> </a> </li> <li class=md-nav__item> <a href=clear_subtype/ class=md-nav__link> <span class=md-ellipsis> clear_subtype </span> </a> </li> <li class=md-nav__item> <a href=has_subtype/ class=md-nav__link> <span class=md-ellipsis> has_subtype </span> </a> </li> <li class=md-nav__item> <a href=set_subtype/ class=md-nav__link> <span class=md-ellipsis> set_subtype </span> </a> </li> <li class=md-nav__item> <a href=subtype/ class=md-nav__link> <span class=md-ellipsis> subtype </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_3> <div class="md-nav__link md-nav__container"> <a href=../adl_serializer/ class="md-nav__link "> <span class=md-ellipsis> adl_serializer </span> </a> <label class="md-nav__link " for=__nav_4_3 id=__nav_4_3_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_3_label aria-expanded=false> <label class=md-nav__title for=__nav_4_3> <span class="md-nav__icon md-icon"></span> adl_serializer </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../adl_serializer/from_json/ class=md-nav__link> <span class=md-ellipsis> from_json </span> </a> </li> <li class=md-nav__item> <a href=../adl_serializer/to_json/ class=md-nav__link> <span class=md-ellipsis> to_json </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../json/ class=md-nav__link> <span class=md-ellipsis> json </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_5> <div class="md-nav__link md-nav__container"> <a href=../json_pointer/ class="md-nav__link "> <span class=md-ellipsis> json_pointer </span> </a> <label class="md-nav__link " for=__nav_4_5 id=__nav_4_5_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_5_label aria-expanded=false> <label class=md-nav__title for=__nav_4_5> <span class="md-nav__icon md-icon"></span> json_pointer </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../json_pointer/json_pointer/ class=md-nav__link> <span class=md-ellipsis> (Constructor) </span> </a> </li> <li class=md-nav__item> <a href=../json_pointer/back/ class=md-nav__link> <span class=md-ellipsis> back </span> </a> </li> <li class=md-nav__item> <a href=../json_pointer/empty/ class=md-nav__link> <span class=md-ellipsis> empty </span> </a> </li> <li class=md-nav__item> <a href=../json_pointer/front/ class=md-nav__link> <span class=md-ellipsis> front </span> </a> </li> <li class=md-nav__item> <a href=../json_pointer/operator_string_t/ class=md-nav__link> <span class=md-ellipsis> operator string_t </span> </a> </li> <li class=md-nav__item> <a href=../json_pointer/operator_eq/ class=md-nav__link> <span class=md-ellipsis> operator== </span> </a> </li> <li class=md-nav__item> <a href=../json_pointer/operator_ne/ class=md-nav__link> <span class=md-ellipsis> operator!= </span> </a> </li> <li class=md-nav__item> <a href=../json_pointer/operator_slash/ class=md-nav__link> <span class=md-ellipsis> operator/ </span> </a> </li> <li class=md-nav__item> <a href=../json_pointer/operator_slasheq/ class=md-nav__link> <span class=md-ellipsis> operator/= </span> </a> </li> <li class=md-nav__item> <a href=../json_pointer/parent_pointer/ class=md-nav__link> <span class=md-ellipsis> parent_pointer </span> </a> </li> <li class=md-nav__item> <a href=../json_pointer/pop_back/ class=md-nav__link> <span class=md-ellipsis> pop_back </span> </a> </li> <li class=md-nav__item> <a href=../json_pointer/pop_front/ class=md-nav__link> <span class=md-ellipsis> pop_front </span> </a> </li> <li class=md-nav__item> <a href=../json_pointer/push_back/ class=md-nav__link> <span class=md-ellipsis> push_back </span> </a> </li> <li class=md-nav__item> <a href=../json_pointer/push_front/ class=md-nav__link> <span class=md-ellipsis> push_front </span> </a> </li> <li class=md-nav__item> <a href=../json_pointer/string_t/ class=md-nav__link> <span class=md-ellipsis> string_t </span> </a> </li> <li class=md-nav__item> <a href=../json_pointer/to_string/ class=md-nav__link> <span class=md-ellipsis> to_string </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_6> <div class="md-nav__link md-nav__container"> <a href=../json_sax/ class="md-nav__link "> <span class=md-ellipsis> json_sax </span> </a> <label class="md-nav__link " for=__nav_4_6 id=__nav_4_6_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_6_label aria-expanded=false> <label class=md-nav__title for=__nav_4_6> <span class="md-nav__icon md-icon"></span> json_sax </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../json_sax/binary/ class=md-nav__link> <span class=md-ellipsis> binary </span> </a> </li> <li class=md-nav__item> <a href=../json_sax/boolean/ class=md-nav__link> <span class=md-ellipsis> boolean </span> </a> </li> <li class=md-nav__item> <a href=../json_sax/end_array/ class=md-nav__link> <span class=md-ellipsis> end_array </span> </a> </li> <li class=md-nav__item> <a href=../json_sax/end_object/ class=md-nav__link> <span class=md-ellipsis> end_object </span> </a> </li> <li class=md-nav__item> <a href=../json_sax/key/ class=md-nav__link> <span class=md-ellipsis> key </span> </a> </li> <li class=md-nav__item> <a href=../json_sax/null/ class=md-nav__link> <span class=md-ellipsis> null </span> </a> </li> <li class=md-nav__item> <a href=../json_sax/number_float/ class=md-nav__link> <span class=md-ellipsis> number_float </span> </a> </li> <li class=md-nav__item> <a href=../json_sax/number_integer/ class=md-nav__link> <span class=md-ellipsis> number_integer </span> </a> </li> <li class=md-nav__item> <a href=../json_sax/number_unsigned/ class=md-nav__link> <span class=md-ellipsis> number_unsigned </span> </a> </li> <li class=md-nav__item> <a href=../json_sax/parse_error/ class=md-nav__link> <span class=md-ellipsis> parse_error </span> </a> </li> <li class=md-nav__item> <a href=../json_sax/start_array/ class=md-nav__link> <span class=md-ellipsis> start_array </span> </a> </li> <li class=md-nav__item> <a href=../json_sax/start_object/ class=md-nav__link> <span class=md-ellipsis> start_object </span> </a> </li> <li class=md-nav__item> <a href=../json_sax/string/ class=md-nav__link> <span class=md-ellipsis> string </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../operator_ltlt/ class=md-nav__link> <span class=md-ellipsis> operator<<(basic_json), operator<<(json_pointer) </span> </a> </li> <li class=md-nav__item> <a href=../operator_gtgt/ class=md-nav__link> <span class=md-ellipsis> operator>>(basic_json) </span> </a> </li> <li class=md-nav__item> <a href=../operator_literal_json/ class=md-nav__link> <span class=md-ellipsis> operator""_json </span> </a> </li> <li class=md-nav__item> <a href=../operator_literal_json_pointer/ class=md-nav__link> <span class=md-ellipsis> operator""_json_pointer </span> </a> </li> <li class=md-nav__item> <a href=../ordered_json/ class=md-nav__link> <span class=md-ellipsis> ordered_json </span> </a> </li> <li class=md-nav__item> <a href=../ordered_map/ class=md-nav__link> <span class=md-ellipsis> ordered_map </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_13> <div class="md-nav__link md-nav__container"> <a href=../macros/ class="md-nav__link "> <span class=md-ellipsis> macros </span> </a> <label class="md-nav__link " for=__nav_4_13 id=__nav_4_13_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_13_label aria-expanded=false> <label class=md-nav__title for=__nav_4_13> <span class="md-nav__icon md-icon"></span> macros </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../macros/json_assert/ class=md-nav__link> <span class=md-ellipsis> JSON_ASSERT </span> </a> </li> <li class=md-nav__item> <a href=../macros/json_brace_init_copy_semantics/ class=md-nav__link> <span class=md-ellipsis> JSON_BRACE_INIT_COPY_SEMANTICS </span> </a> </li> <li class=md-nav__item> <a href=../macros/json_throw_user/ class=md-nav__link> <span class=md-ellipsis> JSON_CATCH_USER, JSON_THROW_USER, JSON_TRY_USER </span> </a> </li> <li class=md-nav__item> <a href=../macros/json_diagnostics/ class=md-nav__link> <span class=md-ellipsis> JSON_DIAGNOSTICS </span> </a> </li> <li class=md-nav__item> <a href=../macros/json_diagnostic_positions/ class=md-nav__link> <span class=md-ellipsis> JSON_DIAGNOSTIC_POSITIONS </span> </a> </li> <li class=md-nav__item> <a href=../macros/json_disable_enum_serialization/ class=md-nav__link> <span class=md-ellipsis> JSON_DISABLE_ENUM_SERIALIZATION </span> </a> </li> <li class=md-nav__item> <a href=../macros/json_has_cpp_11/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_CPP_11, JSON_HAS_CPP_14, JSON_HAS_CPP_17, JSON_HAS_CPP_20 </span> </a> </li> <li class=md-nav__item> <a href=../macros/json_has_filesystem/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_EXPERIMENTAL_FILESYSTEM, JSON_HAS_FILESYSTEM </span> </a> </li> <li class=md-nav__item> <a href=../macros/json_has_ranges/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_RANGES </span> </a> </li> <li class=md-nav__item> <a href=../macros/json_has_static_rtti/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_STATIC_RTTI </span> </a> </li> <li class=md-nav__item> <a href=../macros/json_has_three_way_comparison/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_THREE_WAY_COMPARISON </span> </a> </li> <li class=md-nav__item> <a href=../macros/json_noexception/ class=md-nav__link> <span class=md-ellipsis> JSON_NOEXCEPTION </span> </a> </li> <li class=md-nav__item> <a href=../macros/json_no_io/ class=md-nav__link> <span class=md-ellipsis> JSON_NO_IO </span> </a> </li> <li class=md-nav__item> <a href=../macros/json_skip_library_version_check/ class=md-nav__link> <span class=md-ellipsis> JSON_SKIP_LIBRARY_VERSION_CHECK </span> </a> </li> <li class=md-nav__item> <a href=../macros/json_skip_unsupported_compiler_check/ class=md-nav__link> <span class=md-ellipsis> JSON_SKIP_UNSUPPORTED_COMPILER_CHECK </span> </a> </li> <li class=md-nav__item> <a href=../macros/json_use_global_udls/ class=md-nav__link> <span class=md-ellipsis> JSON_USE_GLOBAL_UDLS </span> </a> </li> <li class=md-nav__item> <a href=../macros/json_use_implicit_conversions/ class=md-nav__link> <span class=md-ellipsis> JSON_USE_IMPLICIT_CONVERSIONS </span> </a> </li> <li class=md-nav__item> <a href=../macros/json_use_legacy_discarded_value_comparison/ class=md-nav__link> <span class=md-ellipsis> JSON_USE_LEGACY_DISCARDED_VALUE_COMPARISON </span> </a> </li> <li class=md-nav__item> <a href=../macros/nlohmann_define_derived_type/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_ONLY_SERIALIZE, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE </span> </a> </li> <li class=md-nav__item> <a href=../macros/nlohmann_define_type_intrusive/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_TYPE_INTRUSIVE, NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_TYPE_INTRUSIVE_ONLY_SERIALIZE </span> </a> </li> <li class=md-nav__item> <a href=../macros/nlohmann_define_type_non_intrusive/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE </span> </a> </li> <li class=md-nav__item> <a href=../macros/nlohmann_define_type_with_names/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_TYPE_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES </span> </a> </li> <li class=md-nav__item> <a href=../macros/nlohmann_json_namespace/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_NAMESPACE </span> </a> </li> <li class=md-nav__item> <a href=../macros/nlohmann_json_namespace_begin/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_NAMESPACE_BEGIN, NLOHMANN_JSON_NAMESPACE_END </span> </a> </li> <li class=md-nav__item> <a href=../macros/nlohmann_json_namespace_no_version/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_NAMESPACE_NO_VERSION </span> </a> </li> <li class=md-nav__item> <a href=../macros/nlohmann_json_serialize_enum/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_SERIALIZE_ENUM </span> </a> </li> <li class=md-nav__item> <a href=../macros/nlohmann_json_serialize_enum_strict/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_SERIALIZE_ENUM_STRICT </span> </a> </li> <li class=md-nav__item> <a href=../macros/nlohmann_json_version_major/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_VERSION_MAJOR, NLOHMANN_JSON_VERSION_MINOR, NLOHMANN_JSON_VERSION_PATCH </span> </a> </li> </ul> </nav> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_5> <div class="md-nav__link md-nav__container"> <a href=../../community/ class="md-nav__link "> <span class=md-ellipsis> Community </span> </a> <label class="md-nav__link " for=__nav_5 id=__nav_5_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_5_label aria-expanded=false> <label class=md-nav__title for=__nav_5> <span class="md-nav__icon md-icon"></span> Community </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../community/code_of_conduct/ class=md-nav__link> <span class=md-ellipsis> Code of Conduct </span> </a> </li> <li class=md-nav__item> <a href=../../community/contribution_guidelines/ class=md-nav__link> <span class=md-ellipsis> Contribution Guidelines </span> </a> </li> <li class=md-nav__item> <a href=../../community/quality_assurance/ class=md-nav__link> <span class=md-ellipsis> Quality assurance </span> </a> </li> <li class=md-nav__item> <a href=../../community/governance/ class=md-nav__link> <span class=md-ellipsis> Governance </span> </a> </li> <li class=md-nav__item> <a href=../../community/security_policy/ class=md-nav__link> <span class=md-ellipsis> Security Policy </span> </a> </li> </ul> </nav> </li> </ul> </nav> </div> </div> </div> <div class="md-sidebar md-sidebar--secondary" data-md-component=sidebar data-md-type=toc> <div class=md-sidebar__scrollwrap> <div class=md-sidebar__inner> <nav class="md-nav md-nav--secondary" aria-label="Table of contents"> <label class=md-nav__title for=__toc> <span class="md-nav__icon md-icon"></span> Table of contents </label> <ul class=md-nav__list data-md-component=toc data-md-scrollfix> <li class=md-nav__item> <a href=#template-parameters class=md-nav__link> <span class=md-ellipsis> Template parameters </span> </a> </li> <li class=md-nav__item> <a href=#member-types class=md-nav__link> <span class=md-ellipsis> Member types </span> </a> </li> <li class=md-nav__item> <a href=#member-functions class=md-nav__link> <span class=md-ellipsis> Member functions </span> </a> </li> <li class=md-nav__item> <a href=#version-history class=md-nav__link> <span class=md-ellipsis> Version history </span> </a> </li> </ul> </nav> </div> </div> </div> <div class=md-content data-md-component=content> <article class="md-content__inner md-typeset"> <a href="https://github.com/nlohmann/json/edit/develop/docs/mkdocs/docs/api/byte_container_with_subtype/index.md" title="Edit this page" class="md-content__button md-icon" rel="edit"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M10 20H6V4h7v5h5v3.1l2-2V8l-6-6H6c-1.1 0-2 .9-2 2v16c0 1.1.9 2 2 2h4zm10.2-7c.1 0 .3.1.4.2l1.3 1.3c.2.2.2.6 0 .8l-1 1-2.1-2.1 1-1c.1-.1.2-.2.4-.2m0 3.9L14.1 23H12v-2.1l6.1-6.1z"/></svg> </a> <a href="https://github.com/nlohmann/json/raw/develop/docs/mkdocs/docs/api/byte_container_with_subtype/index.md" title="View source of this page" class="md-content__button md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M17 18c.56 0 1 .44 1 1s-.44 1-1 1-1-.44-1-1 .44-1 1-1m0-3c-2.73 0-5.06 1.66-6 4 .94 2.34 3.27 4 6 4s5.06-1.66 6-4c-.94-2.34-3.27-4-6-4m0 6.5a2.5 2.5 0 0 1-2.5-2.5 2.5 2.5 0 0 1 2.5-2.5 2.5 2.5 0 0 1 2.5 2.5 2.5 2.5 0 0 1-2.5 2.5M9.27 20H6V4h7v5h5v4.07c.7.08 1.36.25 2 .49V8l-6-6H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h4.5a8.2 8.2 0 0 1-1.23-2"/></svg> </a> <h1 id=nlohmannbyte_container_with_subtype><small>nlohmann::</small>byte_container_with_subtype<a class=headerlink href=#nlohmannbyte_container_with_subtype title="Permanent link">&para;</a></h1> <div class=highlight><pre><span></span><code><span class=k>template</span><span class=o>&lt;</span><span class=k>typename</span><span class=w> </span><span class=nc>BinaryType</span><span class=o>&gt;</span>
 <span class=k>class</span><span class=w> </span><span class=nc>byte_container_with_subtype</span><span class=w> </span><span class=o>:</span><span class=w> </span><span class=k>public</span><span class=w> </span><span class=n>BinaryType</span><span class=p>;</span>
-</code></pre></div> <p>This type extends the template parameter <code>BinaryType</code> provided to <a href=../basic_json/ ><code>basic_json</code></a> with a subtype used by <abbr title="Binary JSON">BSON</abbr> and MessagePack. This type exists so that the user does not have to specify a type themselves with a specific naming scheme in order to override the binary type.</p> <h2 id=template-parameters>Template parameters<a class=headerlink href=#template-parameters title="Permanent link">&para;</a></h2> <dl> <dt><code>BinaryType</code></dt> <dd>container to store bytes (<code class=highlight><span class=n>std</span><span class=o>::</span><span class=n>vector</span><span class=o>&lt;</span><span class=n>std</span><span class=o>::</span><span class=kt>uint8_t</span><span class=o>&gt;</span></code> by default)</dd> </dl> <h2 id=member-types>Member types<a class=headerlink href=#member-types title="Permanent link">&para;</a></h2> <ul> <li><strong>container_type</strong> - the type of the underlying container (<code>BinaryType</code>)</li> <li><strong>subtype_type</strong> - the type of the subtype (<code class=highlight><span class=n>std</span><span class=o>::</span><span class=kt>uint64_t</span></code>)</li> </ul> <h2 id=member-functions>Member functions<a class=headerlink href=#member-functions title="Permanent link">&para;</a></h2> <ul> <li><a href=byte_container_with_subtype/ >(constructor)</a></li> <li><strong>operator==</strong> - comparison: equal</li> <li><strong>operator!=</strong> - comparison: not equal</li> <li><a href=subtype/ ><strong>set_subtype</strong></a> - sets the binary subtype</li> <li><a href=subtype/ ><strong>subtype</strong></a> - return the binary subtype</li> <li><a href=has_subtype/ ><strong>has_subtype</strong></a> - return whether the value has a subtype</li> <li><a href=clear_subtype/ ><strong>clear_subtype</strong></a> - clears the binary subtype</li> </ul> <h2 id=version-history>Version history<a class=headerlink href=#version-history title="Permanent link">&para;</a></h2> <ul> <li>Added in version 3.8.0.</li> <li>Changed the type of subtypes to <code class=highlight><span class=n>std</span><span class=o>::</span><span class=kt>uint64_t</span></code> in 3.10.0.</li> </ul> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 23, 2026 11:16:18 UTC">June 23, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
+</code></pre></div> <p>This type extends the template parameter <code>BinaryType</code> provided to <a href=../basic_json/ ><code>basic_json</code></a> with a subtype used by <abbr title="Binary JSON">BSON</abbr> and MessagePack. This type exists so that the user does not have to specify a type themselves with a specific naming scheme in order to override the binary type.</p> <h2 id=template-parameters>Template parameters<a class=headerlink href=#template-parameters title="Permanent link">&para;</a></h2> <dl> <dt><code>BinaryType</code></dt> <dd>container to store bytes (<code class=highlight><span class=n>std</span><span class=o>::</span><span class=n>vector</span><span class=o>&lt;</span><span class=n>std</span><span class=o>::</span><span class=kt>uint8_t</span><span class=o>&gt;</span></code> by default)</dd> </dl> <h2 id=member-types>Member types<a class=headerlink href=#member-types title="Permanent link">&para;</a></h2> <ul> <li><strong>container_type</strong> - the type of the underlying container (<code>BinaryType</code>)</li> <li><strong>subtype_type</strong> - the type of the subtype (<code class=highlight><span class=n>std</span><span class=o>::</span><span class=kt>uint64_t</span></code>)</li> </ul> <h2 id=member-functions>Member functions<a class=headerlink href=#member-functions title="Permanent link">&para;</a></h2> <ul> <li><a href=byte_container_with_subtype/ >(constructor)</a></li> <li><strong>operator==</strong> - comparison: equal</li> <li><strong>operator!=</strong> - comparison: not equal</li> <li><a href=set_subtype/ ><strong>set_subtype</strong></a> - sets the binary subtype</li> <li><a href=subtype/ ><strong>subtype</strong></a> - return the binary subtype</li> <li><a href=has_subtype/ ><strong>has_subtype</strong></a> - return whether the value has a subtype</li> <li><a href=clear_subtype/ ><strong>clear_subtype</strong></a> - clears the binary subtype</li> </ul> <h2 id=version-history>Version history<a class=headerlink href=#version-history title="Permanent link">&para;</a></h2> <ul> <li>Added in version 3.8.0.</li> <li>Changed the type of subtypes to <code class=highlight><span class=n>std</span><span class=o>::</span><span class=kt>uint64_t</span></code> in 3.10.0.</li> </ul> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 29, 2026 20:15:18 UTC">June 29, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
diff --git a/api/byte_container_with_subtype/set_subtype/index.html b/api/byte_container_with_subtype/set_subtype/index.html
index d860beb..3c2e9e3 100644
--- a/api/byte_container_with_subtype/set_subtype/index.html
+++ b/api/byte_container_with_subtype/set_subtype/index.html
@@ -23,4 +23,4 @@
 <span class=p>}</span>
 </code></pre></div> <p>Output:</p> <div class=highlight><pre><span></span><code><span class=err>be</span><span class=kc>f</span><span class=err>ore</span><span class=w> </span><span class=err>calli</span><span class=kc>n</span><span class=err>g</span><span class=w> </span><span class=err>se</span><span class=kc>t</span><span class=err>_sub</span><span class=kc>t</span><span class=err>ype(</span><span class=mi>42</span><span class=err>)</span><span class=p>:</span><span class=w> </span><span class=p>{</span><span class=nt>&quot;bytes&quot;</span><span class=p>:[</span><span class=mi>202</span><span class=p>,</span><span class=mi>254</span><span class=p>,</span><span class=mi>186</span><span class=p>,</span><span class=mi>190</span><span class=p>],</span><span class=nt>&quot;subtype&quot;</span><span class=p>:</span><span class=kc>null</span><span class=p>}</span>
 <span class=err>a</span><span class=kc>fter</span><span class=w> </span><span class=err>calli</span><span class=kc>n</span><span class=err>g</span><span class=w> </span><span class=err>se</span><span class=kc>t</span><span class=err>_sub</span><span class=kc>t</span><span class=err>ype(</span><span class=mi>42</span><span class=err>)</span><span class=p>:</span><span class=w> </span><span class=p>{</span><span class=nt>&quot;bytes&quot;</span><span class=p>:[</span><span class=mi>202</span><span class=p>,</span><span class=mi>254</span><span class=p>,</span><span class=mi>186</span><span class=p>,</span><span class=mi>190</span><span class=p>],</span><span class=nt>&quot;subtype&quot;</span><span class=p>:</span><span class=mi>42</span><span class=p>}</span>
-</code></pre></div> </details> <h2 id=version-history>Version history<a class=headerlink href=#version-history title="Permanent link">&para;</a></h2> <p>Since version 3.8.0.</p> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 23, 2026 11:16:18 UTC">June 23, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
+</code></pre></div> </details> <h2 id=version-history>Version history<a class=headerlink href=#version-history title="Permanent link">&para;</a></h2> <p>Since version 3.8.0.</p> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 29, 2026 20:15:18 UTC">June 29, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
diff --git a/api/byte_container_with_subtype/subtype/index.html b/api/byte_container_with_subtype/subtype/index.html
index 54e8d81..529289c 100644
--- a/api/byte_container_with_subtype/subtype/index.html
+++ b/api/byte_container_with_subtype/subtype/index.html
@@ -23,4 +23,4 @@
 <span class=p>}</span>
 </code></pre></div> <p>Output:</p> <div class=highlight><pre><span></span><code><span class=err>c</span><span class=mf>1.</span><span class=err>sub</span><span class=kc>t</span><span class=err>ype()</span><span class=w> </span><span class=err>=</span><span class=w> </span><span class=mi>18446744073709551615</span>
 <span class=err>c</span><span class=mf>2.</span><span class=err>sub</span><span class=kc>t</span><span class=err>ype()</span><span class=w> </span><span class=err>=</span><span class=w> </span><span class=mi>42</span>
-</code></pre></div> </details> <h2 id=version-history>Version history<a class=headerlink href=#version-history title="Permanent link">&para;</a></h2> <ul> <li>Added in version 3.8.0</li> <li>Fixed return value to properly return <code>subtype_type(-1)</code> as documented in version 3.10.0.</li> </ul> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 23, 2026 11:16:18 UTC">June 23, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
+</code></pre></div> </details> <h2 id=version-history>Version history<a class=headerlink href=#version-history title="Permanent link">&para;</a></h2> <ul> <li>Added in version 3.8.0</li> <li>Fixed return value to properly return <code>subtype_type(-1)</code> as documented in version 3.10.0.</li> </ul> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 29, 2026 20:15:18 UTC">June 29, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
diff --git a/api/json/index.html b/api/json/index.html
index e4c55ab..186a6a3 100644
--- a/api/json/index.html
+++ b/api/json/index.html
@@ -65,4 +65,4 @@
 <span class=w>    </span><span class=nt>&quot;pi&quot;</span><span class=p>:</span><span class=w> </span><span class=mf>3.141</span><span class=p>,</span>
 <span class=w>    </span><span class=nt>&quot;size&quot;</span><span class=p>:</span><span class=w> </span><span class=mi>8</span>
 <span class=p>}</span>
-</code></pre></div> </details> <h2 id=version-history>Version history<a class=headerlink href=#version-history title="Permanent link">&para;</a></h2> <p>Since version 1.0.0.</p> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 23, 2026 11:16:18 UTC">June 23, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
+</code></pre></div> </details> <h2 id=version-history>Version history<a class=headerlink href=#version-history title="Permanent link">&para;</a></h2> <p>Since version 1.0.0.</p> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 29, 2026 20:15:18 UTC">June 29, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
diff --git a/api/json_pointer/back/index.html b/api/json_pointer/back/index.html
index ec9c352..08cf31a 100644
--- a/api/json_pointer/back/index.html
+++ b/api/json_pointer/back/index.html
@@ -16,4 +16,4 @@
 <span class=p>}</span>
 </code></pre></div> <p>Output:</p> <div class=highlight><pre><span></span><code><span class=err>las</span><span class=kc>t</span><span class=w> </span><span class=err>re</span><span class=kc>feren</span><span class=err>ce</span><span class=w> </span><span class=kc>t</span><span class=err>oke</span><span class=kc>n</span><span class=w> </span><span class=err>o</span><span class=kc>f</span><span class=w> </span><span class=s2>&quot;/foo&quot;</span><span class=w> </span><span class=err>is</span><span class=w> </span><span class=s2>&quot;foo&quot;</span>
 <span class=err>las</span><span class=kc>t</span><span class=w> </span><span class=err>re</span><span class=kc>feren</span><span class=err>ce</span><span class=w> </span><span class=kc>t</span><span class=err>oke</span><span class=kc>n</span><span class=w> </span><span class=err>o</span><span class=kc>f</span><span class=w> </span><span class=s2>&quot;/foo/0&quot;</span><span class=w> </span><span class=err>is</span><span class=w> </span><span class=s2>&quot;0&quot;</span>
-</code></pre></div> </details> <h2 id=version-history>Version history<a class=headerlink href=#version-history title="Permanent link">&para;</a></h2> <ul> <li>Added in version 3.6.0.</li> <li>Changed return type to <code>string_t</code> in version 3.11.0.</li> </ul> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 23, 2026 11:16:18 UTC">June 23, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
+</code></pre></div> </details> <h2 id=version-history>Version history<a class=headerlink href=#version-history title="Permanent link">&para;</a></h2> <ul> <li>Added in version 3.6.0.</li> <li>Changed return type to <code>string_t</code> in version 3.11.0.</li> </ul> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 29, 2026 20:15:18 UTC">June 29, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
diff --git a/api/json_pointer/empty/index.html b/api/json_pointer/empty/index.html
index b6ba3c5..39264aa 100644
--- a/api/json_pointer/empty/index.html
+++ b/api/json_pointer/empty/index.html
@@ -23,4 +23,4 @@
 <span class=nt>&quot;&quot;</span><span class=p>:</span><span class=w> </span><span class=kc>true</span>
 <span class=nt>&quot;/foo&quot;</span><span class=p>:</span><span class=w> </span><span class=kc>false</span>
 <span class=nt>&quot;/foo/0&quot;</span><span class=p>:</span><span class=w> </span><span class=kc>false</span>
-</code></pre></div> </details> <h2 id=version-history>Version history<a class=headerlink href=#version-history title="Permanent link">&para;</a></h2> <p>Added in version 3.6.0.</p> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 23, 2026 11:16:18 UTC">June 23, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
+</code></pre></div> </details> <h2 id=version-history>Version history<a class=headerlink href=#version-history title="Permanent link">&para;</a></h2> <p>Added in version 3.6.0.</p> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 29, 2026 20:15:18 UTC">June 29, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
diff --git a/api/json_pointer/front/index.html b/api/json_pointer/front/index.html
index 084de5a..7d8e3f8 100644
--- a/api/json_pointer/front/index.html
+++ b/api/json_pointer/front/index.html
@@ -16,4 +16,4 @@
 <span class=p>}</span>
 </code></pre></div> <p>Output:</p> <div class=highlight><pre><span></span><code><span class=kc>f</span><span class=err>irs</span><span class=kc>t</span><span class=w> </span><span class=err>re</span><span class=kc>feren</span><span class=err>ce</span><span class=w> </span><span class=kc>t</span><span class=err>oke</span><span class=kc>n</span><span class=w> </span><span class=err>o</span><span class=kc>f</span><span class=w> </span><span class=s2>&quot;/foo&quot;</span><span class=w> </span><span class=err>is</span><span class=w> </span><span class=s2>&quot;foo&quot;</span>
 <span class=kc>f</span><span class=err>irs</span><span class=kc>t</span><span class=w> </span><span class=err>re</span><span class=kc>feren</span><span class=err>ce</span><span class=w> </span><span class=kc>t</span><span class=err>oke</span><span class=kc>n</span><span class=w> </span><span class=err>o</span><span class=kc>f</span><span class=w> </span><span class=s2>&quot;/foo/0&quot;</span><span class=w> </span><span class=err>is</span><span class=w> </span><span class=s2>&quot;foo&quot;</span>
-</code></pre></div> </details> <h2 id=version-history>Version history<a class=headerlink href=#version-history title="Permanent link">&para;</a></h2> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 23, 2026 11:16:18 UTC">June 23, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
+</code></pre></div> </details> <h2 id=version-history>Version history<a class=headerlink href=#version-history title="Permanent link">&para;</a></h2> <ul> <li>Added in version 3.12.x.</li> </ul> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 29, 2026 20:15:18 UTC">June 29, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
diff --git a/api/json_pointer/index.html b/api/json_pointer/index.html
index 60dbcd7..ae4b8b5 100644
--- a/api/json_pointer/index.html
+++ b/api/json_pointer/index.html
@@ -1,3 +1,3 @@
 <!doctype html><html lang=en class=no-js> <head><meta charset=utf-8><meta name=viewport content="width=device-width,initial-scale=1"><meta name=author content="Niels Lohmann"><link href="https://json.nlohmann.me/api/json_pointer/" rel="canonical"><link href=../json/ rel=prev><link href=json_pointer/ rel=next><link rel=icon href=../../assets/images/favicon.png><meta name=generator content="mkdocs-1.6.1, mkdocs-material-9.7.6"><title>Overview - JSON for Modern C++</title><link rel=stylesheet href=../../assets/stylesheets/main.484c7ddc.min.css><link rel=stylesheet href=../../assets/stylesheets/palette.ab4e12ef.min.css><link rel="stylesheet" href="../../assets/external/fonts.googleapis.com/css.61a430c9.css"><style>:root{--md-text-font:"Roboto";--md-code-font:"JetBrains Mono"}</style><link rel=stylesheet href=../../css/custom.css><script>__md_scope=new URL("../..",location),__md_hash=e=>[...e].reduce(((e,_)=>(e<<5)-e+_.charCodeAt(0)),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script></head> <body dir=ltr data-md-color-scheme=default data-md-color-primary=indigo data-md-color-accent=indigo> <input class=md-toggle data-md-toggle=drawer type=checkbox id=__drawer autocomplete=off> <input class=md-toggle data-md-toggle=search type=checkbox id=__search autocomplete=off> <label class=md-overlay for=__drawer></label> <div data-md-component=skip> <a href=#nlohmannjson_pointer class=md-skip> Skip to content </a> </div> <div data-md-component=announce> </div> <header class=md-header data-md-component=header> <nav class="md-header__inner md-grid" aria-label=Header> <a href=../.. title="JSON for Modern C++" class="md-header__button md-logo" aria-label="JSON for Modern C++" data-md-component=logo> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54"/></svg> </a> <label class="md-header__button md-icon" for=__drawer> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M3 6h18v2H3zm0 5h18v2H3zm0 5h18v2H3z"/></svg> </label> <div class=md-header__title data-md-component=header-title> <div class=md-header__ellipsis> <div class=md-header__topic> <span class=md-ellipsis> JSON for Modern C++ </span> </div> <div class=md-header__topic data-md-component=header-topic> <span class=md-ellipsis> Overview </span> </div> </div> </div> <form class=md-header__option data-md-component=palette> <input class=md-option data-md-color-media="(prefers-color-scheme: light)" data-md-color-scheme=default data-md-color-primary=indigo data-md-color-accent=indigo aria-label="Switch to dark mode" type=radio name=__palette id=__palette_0> <label class="md-header__button md-icon" title="Switch to dark mode" for=__palette_1 hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a4 4 0 0 0-4 4 4 4 0 0 0 4 4 4 4 0 0 0 4-4 4 4 0 0 0-4-4m0 10a6 6 0 0 1-6-6 6 6 0 0 1 6-6 6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12z"/></svg> </label> <input class=md-option data-md-color-media="(prefers-color-scheme: dark)" data-md-color-scheme=slate data-md-color-primary=indigo data-md-color-accent=indigo aria-label="Switch to light mode" type=radio name=__palette id=__palette_1> <label class="md-header__button md-icon" title="Switch to light mode" for=__palette_0 hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 18c-.89 0-1.74-.2-2.5-.55C11.56 16.5 13 14.42 13 12s-1.44-4.5-3.5-5.45C10.26 6.2 11.11 6 12 6a6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12z"/></svg> </label> </form> <script>var palette=__md_get("__palette");if(palette&&palette.color){if("(prefers-color-scheme)"===palette.color.media){var media=matchMedia("(prefers-color-scheme: light)"),input=document.querySelector(media.matches?"[data-md-color-media='(prefers-color-scheme: light)']":"[data-md-color-media='(prefers-color-scheme: dark)']");palette.color.media=input.getAttribute("data-md-color-media"),palette.color.scheme=input.getAttribute("data-md-color-scheme"),palette.color.primary=input.getAttribute("data-md-color-primary"),palette.color.accent=input.getAttribute("data-md-color-accent")}for(var[key,value]of Object.entries(palette.color))document.body.setAttribute("data-md-color-"+key,value)}</script> <label class="md-header__button md-icon" for=__search> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg> </label> <div class=md-search data-md-component=search role=dialog> <label class=md-search__overlay for=__search></label> <div class=md-search__inner role=search> <form class=md-search__form name=search> <input type=text class=md-search__input name=query aria-label=Search placeholder=Search autocapitalize=off autocorrect=off autocomplete=off spellcheck=false data-md-component=search-query required> <label class="md-search__icon md-icon" for=__search> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11z"/></svg> </label> <nav class=md-search__options aria-label=Search> <button type=reset class="md-search__icon md-icon" title=Clear aria-label=Clear tabindex=-1> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z"/></svg> </button> </nav> </form> <div class=md-search__output> <div class=md-search__scrollwrap tabindex=0 data-md-scrollfix> <div class=md-search-result data-md-component=search-result> <div class=md-search-result__meta> Initializing search </div> <ol class=md-search-result__list role=presentation></ol> </div> </div> </div> </div> </div> <div class=md-header__source> <a href="https://github.com/nlohmann/json" title="Go to repository" class="md-source" data-md-component="source"> <div class="md-source__icon md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </div> <div class=md-source__repository> nlohmann/json </div> </a> </div> </nav> </header> <div class=md-container data-md-component=container> <nav class=md-tabs aria-label=Tabs data-md-component=tabs> <div class=md-grid> <ul class=md-tabs__list> <li class=md-tabs__item> <a href=../.. class=md-tabs__link> Home </a> </li> <li class=md-tabs__item> <a href=../../features/arbitrary_types/ class=md-tabs__link> Features </a> </li> <li class=md-tabs__item> <a href=../../integration/ class=md-tabs__link> Integration </a> </li> <li class="md-tabs__item md-tabs__item--active"> <a href=../basic_json/ class=md-tabs__link> API Documentation </a> </li> <li class=md-tabs__item> <a href=../../community/ class=md-tabs__link> Community </a> </li> </ul> </div> </nav> <main class=md-main data-md-component=main> <div class="md-main__inner md-grid"> <div class="md-sidebar md-sidebar--primary" data-md-component=sidebar data-md-type=navigation> <div class=md-sidebar__scrollwrap> <div class=md-sidebar__inner> <nav class="md-nav md-nav--primary md-nav--lifted" aria-label=Navigation data-md-level=0> <label class=md-nav__title for=__drawer> <a href=../.. title="JSON for Modern C++" class="md-nav__button md-logo" aria-label="JSON for Modern C++" data-md-component=logo> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54"/></svg> </a> JSON for Modern C++ </label> <div class=md-nav__source> <a href="https://github.com/nlohmann/json" title="Go to repository" class="md-source" data-md-component="source"> <div class="md-source__icon md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </div> <div class=md-source__repository> nlohmann/json </div> </a> </div> <ul class=md-nav__list data-md-scrollfix> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_1> <div class="md-nav__link md-nav__container"> <a href=../.. class="md-nav__link "> <span class=md-ellipsis> Home </span> </a> <label class="md-nav__link " for=__nav_1 id=__nav_1_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_1_label aria-expanded=false> <label class=md-nav__title for=__nav_1> <span class="md-nav__icon md-icon"></span> Home </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../home/license/ class=md-nav__link> <span class=md-ellipsis> License </span> </a> </li> <li class=md-nav__item> <a href=../../home/faq/ class=md-nav__link> <span class=md-ellipsis> FAQ </span> </a> </li> <li class=md-nav__item> <a href=../../home/exceptions/ class=md-nav__link> <span class=md-ellipsis> Exceptions </span> </a> </li> <li class=md-nav__item> <a href=../../home/releases/ class=md-nav__link> <span class=md-ellipsis> Releases </span> </a> </li> <li class=md-nav__item> <a href=../../home/design_goals/ class=md-nav__link> <span class=md-ellipsis> Design goals </span> </a> </li> <li class=md-nav__item> <a href=../../home/architecture/ class=md-nav__link> <span class=md-ellipsis> Architecture </span> </a> </li> <li class=md-nav__item> <a href=../../home/customers/ class=md-nav__link> <span class=md-ellipsis> Customers </span> </a> </li> <li class=md-nav__item> <a href=../../home/sponsors/ class=md-nav__link> <span class=md-ellipsis> Sponsors </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2> <label class=md-nav__link for=__nav_2 id=__nav_2_label tabindex=0> <span class=md-ellipsis> Features </span> <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_2_label aria-expanded=false> <label class=md-nav__title for=__nav_2> <span class="md-nav__icon md-icon"></span> Features </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../features/arbitrary_types/ class=md-nav__link> <span class=md-ellipsis> Arbitrary Type Conversions </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_2> <div class="md-nav__link md-nav__container"> <a href=../../features/binary_formats/ class="md-nav__link "> <span class=md-ellipsis> Binary Formats </span> </a> <label class="md-nav__link " for=__nav_2_2 id=__nav_2_2_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_2_label aria-expanded=false> <label class=md-nav__title for=__nav_2_2> <span class="md-nav__icon md-icon"></span> Binary Formats </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../features/binary_formats/bjdata/ class=md-nav__link> <span class=md-ellipsis> BJData </span> </a> </li> <li class=md-nav__item> <a href=../../features/binary_formats/bson/ class=md-nav__link> <span class=md-ellipsis> BSON </span> </a> </li> <li class=md-nav__item> <a href=../../features/binary_formats/cbor/ class=md-nav__link> <span class=md-ellipsis> CBOR </span> </a> </li> <li class=md-nav__item> <a href=../../features/binary_formats/messagepack/ class=md-nav__link> <span class=md-ellipsis> MessagePack </span> </a> </li> <li class=md-nav__item> <a href=../../features/binary_formats/ubjson/ class=md-nav__link> <span class=md-ellipsis> UBJSON </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../features/binary_values/ class=md-nav__link> <span class=md-ellipsis> Binary Values </span> </a> </li> <li class=md-nav__item> <a href=../../features/comments/ class=md-nav__link> <span class=md-ellipsis> Comments </span> </a> </li> <li class=md-nav__item> <a href=../../features/trailing_commas/ class=md-nav__link> <span class=md-ellipsis> Trailing Commas </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_6> <div class="md-nav__link md-nav__container"> <a href=../../features/element_access/ class="md-nav__link "> <span class=md-ellipsis> Element Access </span> </a> <label class="md-nav__link " for=__nav_2_6 id=__nav_2_6_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_6_label aria-expanded=false> <label class=md-nav__title for=__nav_2_6> <span class="md-nav__icon md-icon"></span> Element Access </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../features/element_access/unchecked_access/ class=md-nav__link> <span class=md-ellipsis> Unchecked access: operator[] </span> </a> </li> <li class=md-nav__item> <a href=../../features/element_access/checked_access/ class=md-nav__link> <span class=md-ellipsis> Checked access: at </span> </a> </li> <li class=md-nav__item> <a href=../../features/element_access/default_value/ class=md-nav__link> <span class=md-ellipsis> Access with default value: value </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../features/iterators/ class=md-nav__link> <span class=md-ellipsis> Iterators </span> </a> </li> <li class=md-nav__item> <a href=../../features/json_pointer/ class=md-nav__link> <span class=md-ellipsis> JSON Pointer </span> </a> </li> <li class=md-nav__item> <a href=../../features/json_patch/ class=md-nav__link> <span class=md-ellipsis> JSON Patch and Diff </span> </a> </li> <li class=md-nav__item> <a href=../../features/merge_patch/ class=md-nav__link> <span class=md-ellipsis> JSON Merge Patch </span> </a> </li> <li class=md-nav__item> <a href=../../features/modules/ class=md-nav__link> <span class=md-ellipsis> Modules </span> </a> </li> <li class=md-nav__item> <a href=../../features/namespace/ class=md-nav__link> <span class=md-ellipsis> nlohmann Namespace </span> </a> </li> <li class=md-nav__item> <a href=../../features/object_order/ class=md-nav__link> <span class=md-ellipsis> Object Order </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_14> <div class="md-nav__link md-nav__container"> <a href=../../features/parsing/ class="md-nav__link "> <span class=md-ellipsis> Parsing </span> </a> <label class="md-nav__link " for=__nav_2_14 id=__nav_2_14_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_14_label aria-expanded=false> <label class=md-nav__title for=__nav_2_14> <span class="md-nav__icon md-icon"></span> Parsing </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../features/parsing/json_lines/ class=md-nav__link> <span class=md-ellipsis> JSON Lines </span> </a> </li> <li class=md-nav__item> <a href=../../features/parsing/parse_exceptions/ class=md-nav__link> <span class=md-ellipsis> Parsing and Exceptions </span> </a> </li> <li class=md-nav__item> <a href=../../features/parsing/parser_callbacks/ class=md-nav__link> <span class=md-ellipsis> Parser Callbacks </span> </a> </li> <li class=md-nav__item> <a href=../../features/parsing/sax_interface/ class=md-nav__link> <span class=md-ellipsis> SAX Interface </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../features/assertions/ class=md-nav__link> <span class=md-ellipsis> Runtime Assertions </span> </a> </li> <li class=md-nav__item> <a href=../../features/enum_conversion/ class=md-nav__link> <span class=md-ellipsis> Specializing enum conversion </span> </a> </li> <li class=md-nav__item> <a href=../../features/macros/ class=md-nav__link> <span class=md-ellipsis> Supported Macros </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_18> <div class="md-nav__link md-nav__container"> <a href=../../features/types/ class="md-nav__link "> <span class=md-ellipsis> Types </span> </a> <label class="md-nav__link " for=__nav_2_18 id=__nav_2_18_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_18_label aria-expanded=false> <label class=md-nav__title for=__nav_2_18> <span class="md-nav__icon md-icon"></span> Types </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../features/types/number_handling/ class=md-nav__link> <span class=md-ellipsis> Number Handling </span> </a> </li> </ul> </nav> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_3> <div class="md-nav__link md-nav__container"> <a href=../../integration/ class="md-nav__link "> <span class=md-ellipsis> Integration </span> </a> <label class="md-nav__link " for=__nav_3 id=__nav_3_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_3_label aria-expanded=false> <label class=md-nav__title for=__nav_3> <span class="md-nav__icon md-icon"></span> Integration </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../integration/migration_guide/ class=md-nav__link> <span class=md-ellipsis> Migration Guide </span> </a> </li> <li class=md-nav__item> <a href=../../integration/cmake/ class=md-nav__link> <span class=md-ellipsis> CMake </span> </a> </li> <li class=md-nav__item> <a href=../../integration/package_managers/ class=md-nav__link> <span class=md-ellipsis> Package Managers </span> </a> </li> <li class=md-nav__item> <a href=../../integration/pkg-config/ class=md-nav__link> <span class=md-ellipsis> Pkg-config </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--active md-nav__item--section md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4 checked> <label class=md-nav__link for=__nav_4 id=__nav_4_label tabindex> <span class=md-ellipsis> API Documentation </span> <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_4_label aria-expanded=true> <label class=md-nav__title for=__nav_4> <span class="md-nav__icon md-icon"></span> API Documentation </label> <ul class=md-nav__list data-md-scrollfix> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_1> <div class="md-nav__link md-nav__container"> <a href=../basic_json/ class="md-nav__link "> <span class=md-ellipsis> basic_json </span> </a> <label class="md-nav__link " for=__nav_4_1 id=__nav_4_1_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_1_label aria-expanded=false> <label class=md-nav__title for=__nav_4_1> <span class="md-nav__icon md-icon"></span> basic_json </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../basic_json/basic_json/ class=md-nav__link> <span class=md-ellipsis> (Constructor) </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/~basic_json/ class=md-nav__link> <span class=md-ellipsis> (Destructor) </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/accept/ class=md-nav__link> <span class=md-ellipsis> accept </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/array/ class=md-nav__link> <span class=md-ellipsis> array </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/array_t/ class=md-nav__link> <span class=md-ellipsis> array_t </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/at/ class=md-nav__link> <span class=md-ellipsis> at </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/back/ class=md-nav__link> <span class=md-ellipsis> back </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/begin/ class=md-nav__link> <span class=md-ellipsis> begin </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/binary/ class=md-nav__link> <span class=md-ellipsis> binary </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/binary_t/ class=md-nav__link> <span class=md-ellipsis> binary_t </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/boolean_t/ class=md-nav__link> <span class=md-ellipsis> boolean_t </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/cbegin/ class=md-nav__link> <span class=md-ellipsis> cbegin </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/cbor_tag_handler_t/ class=md-nav__link> <span class=md-ellipsis> cbor_tag_handler_t </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/cend/ class=md-nav__link> <span class=md-ellipsis> cend </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/clear/ class=md-nav__link> <span class=md-ellipsis> clear </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/contains/ class=md-nav__link> <span class=md-ellipsis> contains </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/count/ class=md-nav__link> <span class=md-ellipsis> count </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/crbegin/ class=md-nav__link> <span class=md-ellipsis> crbegin </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/crend/ class=md-nav__link> <span class=md-ellipsis> crend </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/default_object_comparator_t/ class=md-nav__link> <span class=md-ellipsis> default_object_comparator_t </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/diff/ class=md-nav__link> <span class=md-ellipsis> diff </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/dump/ class=md-nav__link> <span class=md-ellipsis> dump </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/emplace/ class=md-nav__link> <span class=md-ellipsis> emplace </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/emplace_back/ class=md-nav__link> <span class=md-ellipsis> emplace_back </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/empty/ class=md-nav__link> <span class=md-ellipsis> empty </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/end/ class=md-nav__link> <span class=md-ellipsis> end </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/end_pos/ class=md-nav__link> <span class=md-ellipsis> end_pos </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/erase/ class=md-nav__link> <span class=md-ellipsis> erase </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/error_handler_t/ class=md-nav__link> <span class=md-ellipsis> error_handler_t </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/exception/ class=md-nav__link> <span class=md-ellipsis> exception </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/find/ class=md-nav__link> <span class=md-ellipsis> find </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/flatten/ class=md-nav__link> <span class=md-ellipsis> flatten </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/from_bjdata/ class=md-nav__link> <span class=md-ellipsis> from_bjdata </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/from_bson/ class=md-nav__link> <span class=md-ellipsis> from_bson </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/from_cbor/ class=md-nav__link> <span class=md-ellipsis> from_cbor </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/from_msgpack/ class=md-nav__link> <span class=md-ellipsis> from_msgpack </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/from_ubjson/ class=md-nav__link> <span class=md-ellipsis> from_ubjson </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/front/ class=md-nav__link> <span class=md-ellipsis> front </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/get/ class=md-nav__link> <span class=md-ellipsis> get </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/get_allocator/ class=md-nav__link> <span class=md-ellipsis> get_allocator </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/get_binary/ class=md-nav__link> <span class=md-ellipsis> get_binary </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/get_ptr/ class=md-nav__link> <span class=md-ellipsis> get_ptr </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/get_ref/ class=md-nav__link> <span class=md-ellipsis> get_ref </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/get_to/ class=md-nav__link> <span class=md-ellipsis> get_to </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/std_hash/ class=md-nav__link> <span class=md-ellipsis> std::hash&lt;basic_json&gt; </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/input_format_t/ class=md-nav__link> <span class=md-ellipsis> input_format_t </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/insert/ class=md-nav__link> <span class=md-ellipsis> insert </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/invalid_iterator/ class=md-nav__link> <span class=md-ellipsis> invalid_iterator </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/is_array/ class=md-nav__link> <span class=md-ellipsis> is_array </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/is_binary/ class=md-nav__link> <span class=md-ellipsis> is_binary </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/is_boolean/ class=md-nav__link> <span class=md-ellipsis> is_boolean </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/is_discarded/ class=md-nav__link> <span class=md-ellipsis> is_discarded </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/is_null/ class=md-nav__link> <span class=md-ellipsis> is_null </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/is_number/ class=md-nav__link> <span class=md-ellipsis> is_number </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/is_number_float/ class=md-nav__link> <span class=md-ellipsis> is_number_float </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/is_number_integer/ class=md-nav__link> <span class=md-ellipsis> is_number_integer </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/is_number_unsigned/ class=md-nav__link> <span class=md-ellipsis> is_number_unsigned </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/is_object/ class=md-nav__link> <span class=md-ellipsis> is_object </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/is_primitive/ class=md-nav__link> <span class=md-ellipsis> is_primitive </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/is_string/ class=md-nav__link> <span class=md-ellipsis> is_string </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/is_structured/ class=md-nav__link> <span class=md-ellipsis> is_structured </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/items/ class=md-nav__link> <span class=md-ellipsis> items </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/json_base_class_t/ class=md-nav__link> <span class=md-ellipsis> json_base_class_t </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/json_serializer/ class=md-nav__link> <span class=md-ellipsis> json_serializer </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/max_size/ class=md-nav__link> <span class=md-ellipsis> max_size </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/meta/ class=md-nav__link> <span class=md-ellipsis> meta </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/merge_patch/ class=md-nav__link> <span class=md-ellipsis> merge_patch </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/number_float_t/ class=md-nav__link> <span class=md-ellipsis> number_float_t </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/number_integer_t/ class=md-nav__link> <span class=md-ellipsis> number_integer_t </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/number_unsigned_t/ class=md-nav__link> <span class=md-ellipsis> number_unsigned_t </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/object/ class=md-nav__link> <span class=md-ellipsis> object </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/object_comparator_t/ class=md-nav__link> <span class=md-ellipsis> object_comparator_t </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/object_t/ class=md-nav__link> <span class=md-ellipsis> object_t </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/operator_ValueType/ class=md-nav__link> <span class=md-ellipsis> operator ValueType </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/operator_value_t/ class=md-nav__link> <span class=md-ellipsis> operator value_t </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/operator%5B%5D/ class=md-nav__link> <span class=md-ellipsis> operator[] </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/operator%3D/ class=md-nav__link> <span class=md-ellipsis> operator= </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/operator%2B%3D/ class=md-nav__link> <span class=md-ellipsis> operator+= </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/operator_eq/ class=md-nav__link> <span class=md-ellipsis> operator== </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/operator_ne/ class=md-nav__link> <span class=md-ellipsis> operator!= </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/operator_lt/ class=md-nav__link> <span class=md-ellipsis> operator< </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/operator_gt/ class=md-nav__link> <span class=md-ellipsis> operator> </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/operator_le/ class=md-nav__link> <span class=md-ellipsis> operator<= </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/operator_ge/ class=md-nav__link> <span class=md-ellipsis> operator>= </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/operator_spaceship/ class=md-nav__link> <span class=md-ellipsis> operator<=> </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/out_of_range/ class=md-nav__link> <span class=md-ellipsis> out_of_range </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/other_error/ class=md-nav__link> <span class=md-ellipsis> other_error </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/parse/ class=md-nav__link> <span class=md-ellipsis> parse </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/parse_error/ class=md-nav__link> <span class=md-ellipsis> parse_error </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/parse_event_t/ class=md-nav__link> <span class=md-ellipsis> parse_event_t </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/parser_callback_t/ class=md-nav__link> <span class=md-ellipsis> parser_callback_t </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/patch/ class=md-nav__link> <span class=md-ellipsis> patch </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/patch_inplace/ class=md-nav__link> <span class=md-ellipsis> patch_inplace </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/push_back/ class=md-nav__link> <span class=md-ellipsis> push_back </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/rbegin/ class=md-nav__link> <span class=md-ellipsis> rbegin </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/rend/ class=md-nav__link> <span class=md-ellipsis> rend </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/sax_parse/ class=md-nav__link> <span class=md-ellipsis> sax_parse </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/size/ class=md-nav__link> <span class=md-ellipsis> size </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/start_pos/ class=md-nav__link> <span class=md-ellipsis> start_pos </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/string_t/ class=md-nav__link> <span class=md-ellipsis> string_t </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/swap/ class=md-nav__link> <span class=md-ellipsis> swap </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/std_swap/ class=md-nav__link> <span class=md-ellipsis> std::swap&lt;basic_json&gt; </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/to_bjdata/ class=md-nav__link> <span class=md-ellipsis> to_bjdata </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/to_bson/ class=md-nav__link> <span class=md-ellipsis> to_bson </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/to_cbor/ class=md-nav__link> <span class=md-ellipsis> to_cbor </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/to_msgpack/ class=md-nav__link> <span class=md-ellipsis> to_msgpack </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/to_string/ class=md-nav__link> <span class=md-ellipsis> to_string </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/to_ubjson/ class=md-nav__link> <span class=md-ellipsis> to_ubjson </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/type/ class=md-nav__link> <span class=md-ellipsis> type </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/type_error/ class=md-nav__link> <span class=md-ellipsis> type_error </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/type_name/ class=md-nav__link> <span class=md-ellipsis> type_name </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/unflatten/ class=md-nav__link> <span class=md-ellipsis> unflatten </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/update/ class=md-nav__link> <span class=md-ellipsis> update </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/value/ class=md-nav__link> <span class=md-ellipsis> value </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/value_t/ class=md-nav__link> <span class=md-ellipsis> value_t </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_2> <div class="md-nav__link md-nav__container"> <a href=../byte_container_with_subtype/ class="md-nav__link "> <span class=md-ellipsis> byte_container_with_subtype </span> </a> <label class="md-nav__link " for=__nav_4_2 id=__nav_4_2_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_2_label aria-expanded=false> <label class=md-nav__title for=__nav_4_2> <span class="md-nav__icon md-icon"></span> byte_container_with_subtype </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../byte_container_with_subtype/byte_container_with_subtype/ class=md-nav__link> <span class=md-ellipsis> (constructor) </span> </a> </li> <li class=md-nav__item> <a href=../byte_container_with_subtype/clear_subtype/ class=md-nav__link> <span class=md-ellipsis> clear_subtype </span> </a> </li> <li class=md-nav__item> <a href=../byte_container_with_subtype/has_subtype/ class=md-nav__link> <span class=md-ellipsis> has_subtype </span> </a> </li> <li class=md-nav__item> <a href=../byte_container_with_subtype/set_subtype/ class=md-nav__link> <span class=md-ellipsis> set_subtype </span> </a> </li> <li class=md-nav__item> <a href=../byte_container_with_subtype/subtype/ class=md-nav__link> <span class=md-ellipsis> subtype </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_3> <div class="md-nav__link md-nav__container"> <a href=../adl_serializer/ class="md-nav__link "> <span class=md-ellipsis> adl_serializer </span> </a> <label class="md-nav__link " for=__nav_4_3 id=__nav_4_3_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_3_label aria-expanded=false> <label class=md-nav__title for=__nav_4_3> <span class="md-nav__icon md-icon"></span> adl_serializer </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../adl_serializer/from_json/ class=md-nav__link> <span class=md-ellipsis> from_json </span> </a> </li> <li class=md-nav__item> <a href=../adl_serializer/to_json/ class=md-nav__link> <span class=md-ellipsis> to_json </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../json/ class=md-nav__link> <span class=md-ellipsis> json </span> </a> </li> <li class="md-nav__item md-nav__item--active md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_5 checked> <div class="md-nav__link md-nav__container"> <a href=./ class="md-nav__link md-nav__link--active"> <span class=md-ellipsis> json_pointer </span> </a> <label class="md-nav__link md-nav__link--active" for=__nav_4_5 id=__nav_4_5_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_5_label aria-expanded=true> <label class=md-nav__title for=__nav_4_5> <span class="md-nav__icon md-icon"></span> json_pointer </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=json_pointer/ class=md-nav__link> <span class=md-ellipsis> (Constructor) </span> </a> </li> <li class=md-nav__item> <a href=back/ class=md-nav__link> <span class=md-ellipsis> back </span> </a> </li> <li class=md-nav__item> <a href=empty/ class=md-nav__link> <span class=md-ellipsis> empty </span> </a> </li> <li class=md-nav__item> <a href=front/ class=md-nav__link> <span class=md-ellipsis> front </span> </a> </li> <li class=md-nav__item> <a href=operator_string_t/ class=md-nav__link> <span class=md-ellipsis> operator string_t </span> </a> </li> <li class=md-nav__item> <a href=operator_eq/ class=md-nav__link> <span class=md-ellipsis> operator== </span> </a> </li> <li class=md-nav__item> <a href=operator_ne/ class=md-nav__link> <span class=md-ellipsis> operator!= </span> </a> </li> <li class=md-nav__item> <a href=operator_slash/ class=md-nav__link> <span class=md-ellipsis> operator/ </span> </a> </li> <li class=md-nav__item> <a href=operator_slasheq/ class=md-nav__link> <span class=md-ellipsis> operator/= </span> </a> </li> <li class=md-nav__item> <a href=parent_pointer/ class=md-nav__link> <span class=md-ellipsis> parent_pointer </span> </a> </li> <li class=md-nav__item> <a href=pop_back/ class=md-nav__link> <span class=md-ellipsis> pop_back </span> </a> </li> <li class=md-nav__item> <a href=pop_front/ class=md-nav__link> <span class=md-ellipsis> pop_front </span> </a> </li> <li class=md-nav__item> <a href=push_back/ class=md-nav__link> <span class=md-ellipsis> push_back </span> </a> </li> <li class=md-nav__item> <a href=push_front/ class=md-nav__link> <span class=md-ellipsis> push_front </span> </a> </li> <li class=md-nav__item> <a href=string_t/ class=md-nav__link> <span class=md-ellipsis> string_t </span> </a> </li> <li class=md-nav__item> <a href=to_string/ class=md-nav__link> <span class=md-ellipsis> to_string </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_6> <div class="md-nav__link md-nav__container"> <a href=../json_sax/ class="md-nav__link "> <span class=md-ellipsis> json_sax </span> </a> <label class="md-nav__link " for=__nav_4_6 id=__nav_4_6_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_6_label aria-expanded=false> <label class=md-nav__title for=__nav_4_6> <span class="md-nav__icon md-icon"></span> json_sax </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../json_sax/binary/ class=md-nav__link> <span class=md-ellipsis> binary </span> </a> </li> <li class=md-nav__item> <a href=../json_sax/boolean/ class=md-nav__link> <span class=md-ellipsis> boolean </span> </a> </li> <li class=md-nav__item> <a href=../json_sax/end_array/ class=md-nav__link> <span class=md-ellipsis> end_array </span> </a> </li> <li class=md-nav__item> <a href=../json_sax/end_object/ class=md-nav__link> <span class=md-ellipsis> end_object </span> </a> </li> <li class=md-nav__item> <a href=../json_sax/key/ class=md-nav__link> <span class=md-ellipsis> key </span> </a> </li> <li class=md-nav__item> <a href=../json_sax/null/ class=md-nav__link> <span class=md-ellipsis> null </span> </a> </li> <li class=md-nav__item> <a href=../json_sax/number_float/ class=md-nav__link> <span class=md-ellipsis> number_float </span> </a> </li> <li class=md-nav__item> <a href=../json_sax/number_integer/ class=md-nav__link> <span class=md-ellipsis> number_integer </span> </a> </li> <li class=md-nav__item> <a href=../json_sax/number_unsigned/ class=md-nav__link> <span class=md-ellipsis> number_unsigned </span> </a> </li> <li class=md-nav__item> <a href=../json_sax/parse_error/ class=md-nav__link> <span class=md-ellipsis> parse_error </span> </a> </li> <li class=md-nav__item> <a href=../json_sax/start_array/ class=md-nav__link> <span class=md-ellipsis> start_array </span> </a> </li> <li class=md-nav__item> <a href=../json_sax/start_object/ class=md-nav__link> <span class=md-ellipsis> start_object </span> </a> </li> <li class=md-nav__item> <a href=../json_sax/string/ class=md-nav__link> <span class=md-ellipsis> string </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../operator_ltlt/ class=md-nav__link> <span class=md-ellipsis> operator<<(basic_json), operator<<(json_pointer) </span> </a> </li> <li class=md-nav__item> <a href=../operator_gtgt/ class=md-nav__link> <span class=md-ellipsis> operator>>(basic_json) </span> </a> </li> <li class=md-nav__item> <a href=../operator_literal_json/ class=md-nav__link> <span class=md-ellipsis> operator""_json </span> </a> </li> <li class=md-nav__item> <a href=../operator_literal_json_pointer/ class=md-nav__link> <span class=md-ellipsis> operator""_json_pointer </span> </a> </li> <li class=md-nav__item> <a href=../ordered_json/ class=md-nav__link> <span class=md-ellipsis> ordered_json </span> </a> </li> <li class=md-nav__item> <a href=../ordered_map/ class=md-nav__link> <span class=md-ellipsis> ordered_map </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_13> <div class="md-nav__link md-nav__container"> <a href=../macros/ class="md-nav__link "> <span class=md-ellipsis> macros </span> </a> <label class="md-nav__link " for=__nav_4_13 id=__nav_4_13_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_13_label aria-expanded=false> <label class=md-nav__title for=__nav_4_13> <span class="md-nav__icon md-icon"></span> macros </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../macros/json_assert/ class=md-nav__link> <span class=md-ellipsis> JSON_ASSERT </span> </a> </li> <li class=md-nav__item> <a href=../macros/json_brace_init_copy_semantics/ class=md-nav__link> <span class=md-ellipsis> JSON_BRACE_INIT_COPY_SEMANTICS </span> </a> </li> <li class=md-nav__item> <a href=../macros/json_throw_user/ class=md-nav__link> <span class=md-ellipsis> JSON_CATCH_USER, JSON_THROW_USER, JSON_TRY_USER </span> </a> </li> <li class=md-nav__item> <a href=../macros/json_diagnostics/ class=md-nav__link> <span class=md-ellipsis> JSON_DIAGNOSTICS </span> </a> </li> <li class=md-nav__item> <a href=../macros/json_diagnostic_positions/ class=md-nav__link> <span class=md-ellipsis> JSON_DIAGNOSTIC_POSITIONS </span> </a> </li> <li class=md-nav__item> <a href=../macros/json_disable_enum_serialization/ class=md-nav__link> <span class=md-ellipsis> JSON_DISABLE_ENUM_SERIALIZATION </span> </a> </li> <li class=md-nav__item> <a href=../macros/json_has_cpp_11/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_CPP_11, JSON_HAS_CPP_14, JSON_HAS_CPP_17, JSON_HAS_CPP_20 </span> </a> </li> <li class=md-nav__item> <a href=../macros/json_has_filesystem/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_EXPERIMENTAL_FILESYSTEM, JSON_HAS_FILESYSTEM </span> </a> </li> <li class=md-nav__item> <a href=../macros/json_has_ranges/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_RANGES </span> </a> </li> <li class=md-nav__item> <a href=../macros/json_has_static_rtti/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_STATIC_RTTI </span> </a> </li> <li class=md-nav__item> <a href=../macros/json_has_three_way_comparison/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_THREE_WAY_COMPARISON </span> </a> </li> <li class=md-nav__item> <a href=../macros/json_noexception/ class=md-nav__link> <span class=md-ellipsis> JSON_NOEXCEPTION </span> </a> </li> <li class=md-nav__item> <a href=../macros/json_no_io/ class=md-nav__link> <span class=md-ellipsis> JSON_NO_IO </span> </a> </li> <li class=md-nav__item> <a href=../macros/json_skip_library_version_check/ class=md-nav__link> <span class=md-ellipsis> JSON_SKIP_LIBRARY_VERSION_CHECK </span> </a> </li> <li class=md-nav__item> <a href=../macros/json_skip_unsupported_compiler_check/ class=md-nav__link> <span class=md-ellipsis> JSON_SKIP_UNSUPPORTED_COMPILER_CHECK </span> </a> </li> <li class=md-nav__item> <a href=../macros/json_use_global_udls/ class=md-nav__link> <span class=md-ellipsis> JSON_USE_GLOBAL_UDLS </span> </a> </li> <li class=md-nav__item> <a href=../macros/json_use_implicit_conversions/ class=md-nav__link> <span class=md-ellipsis> JSON_USE_IMPLICIT_CONVERSIONS </span> </a> </li> <li class=md-nav__item> <a href=../macros/json_use_legacy_discarded_value_comparison/ class=md-nav__link> <span class=md-ellipsis> JSON_USE_LEGACY_DISCARDED_VALUE_COMPARISON </span> </a> </li> <li class=md-nav__item> <a href=../macros/nlohmann_define_derived_type/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_ONLY_SERIALIZE, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE </span> </a> </li> <li class=md-nav__item> <a href=../macros/nlohmann_define_type_intrusive/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_TYPE_INTRUSIVE, NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_TYPE_INTRUSIVE_ONLY_SERIALIZE </span> </a> </li> <li class=md-nav__item> <a href=../macros/nlohmann_define_type_non_intrusive/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE </span> </a> </li> <li class=md-nav__item> <a href=../macros/nlohmann_define_type_with_names/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_TYPE_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES </span> </a> </li> <li class=md-nav__item> <a href=../macros/nlohmann_json_namespace/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_NAMESPACE </span> </a> </li> <li class=md-nav__item> <a href=../macros/nlohmann_json_namespace_begin/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_NAMESPACE_BEGIN, NLOHMANN_JSON_NAMESPACE_END </span> </a> </li> <li class=md-nav__item> <a href=../macros/nlohmann_json_namespace_no_version/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_NAMESPACE_NO_VERSION </span> </a> </li> <li class=md-nav__item> <a href=../macros/nlohmann_json_serialize_enum/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_SERIALIZE_ENUM </span> </a> </li> <li class=md-nav__item> <a href=../macros/nlohmann_json_serialize_enum_strict/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_SERIALIZE_ENUM_STRICT </span> </a> </li> <li class=md-nav__item> <a href=../macros/nlohmann_json_version_major/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_VERSION_MAJOR, NLOHMANN_JSON_VERSION_MINOR, NLOHMANN_JSON_VERSION_PATCH </span> </a> </li> </ul> </nav> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_5> <div class="md-nav__link md-nav__container"> <a href=../../community/ class="md-nav__link "> <span class=md-ellipsis> Community </span> </a> <label class="md-nav__link " for=__nav_5 id=__nav_5_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_5_label aria-expanded=false> <label class=md-nav__title for=__nav_5> <span class="md-nav__icon md-icon"></span> Community </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../community/code_of_conduct/ class=md-nav__link> <span class=md-ellipsis> Code of Conduct </span> </a> </li> <li class=md-nav__item> <a href=../../community/contribution_guidelines/ class=md-nav__link> <span class=md-ellipsis> Contribution Guidelines </span> </a> </li> <li class=md-nav__item> <a href=../../community/quality_assurance/ class=md-nav__link> <span class=md-ellipsis> Quality assurance </span> </a> </li> <li class=md-nav__item> <a href=../../community/governance/ class=md-nav__link> <span class=md-ellipsis> Governance </span> </a> </li> <li class=md-nav__item> <a href=../../community/security_policy/ class=md-nav__link> <span class=md-ellipsis> Security Policy </span> </a> </li> </ul> </nav> </li> </ul> </nav> </div> </div> </div> <div class="md-sidebar md-sidebar--secondary" data-md-component=sidebar data-md-type=toc> <div class=md-sidebar__scrollwrap> <div class=md-sidebar__inner> <nav class="md-nav md-nav--secondary" aria-label="Table of contents"> <label class=md-nav__title for=__toc> <span class="md-nav__icon md-icon"></span> Table of contents </label> <ul class=md-nav__list data-md-component=toc data-md-scrollfix> <li class=md-nav__item> <a href=#template-parameters class=md-nav__link> <span class=md-ellipsis> Template parameters </span> </a> </li> <li class=md-nav__item> <a href=#member-types class=md-nav__link> <span class=md-ellipsis> Member types </span> </a> </li> <li class=md-nav__item> <a href=#member-functions class=md-nav__link> <span class=md-ellipsis> Member functions </span> </a> </li> <li class=md-nav__item> <a href=#literals class=md-nav__link> <span class=md-ellipsis> Literals </span> </a> </li> <li class=md-nav__item> <a href=#see-also class=md-nav__link> <span class=md-ellipsis> See also </span> </a> </li> <li class=md-nav__item> <a href=#version-history class=md-nav__link> <span class=md-ellipsis> Version history </span> </a> </li> </ul> </nav> </div> </div> </div> <div class=md-content data-md-component=content> <article class="md-content__inner md-typeset"> <a href="https://github.com/nlohmann/json/edit/develop/docs/mkdocs/docs/api/json_pointer/index.md" title="Edit this page" class="md-content__button md-icon" rel="edit"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M10 20H6V4h7v5h5v3.1l2-2V8l-6-6H6c-1.1 0-2 .9-2 2v16c0 1.1.9 2 2 2h4zm10.2-7c.1 0 .3.1.4.2l1.3 1.3c.2.2.2.6 0 .8l-1 1-2.1-2.1 1-1c.1-.1.2-.2.4-.2m0 3.9L14.1 23H12v-2.1l6.1-6.1z"/></svg> </a> <a href="https://github.com/nlohmann/json/raw/develop/docs/mkdocs/docs/api/json_pointer/index.md" title="View source of this page" class="md-content__button md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M17 18c.56 0 1 .44 1 1s-.44 1-1 1-1-.44-1-1 .44-1 1-1m0-3c-2.73 0-5.06 1.66-6 4 .94 2.34 3.27 4 6 4s5.06-1.66 6-4c-.94-2.34-3.27-4-6-4m0 6.5a2.5 2.5 0 0 1-2.5-2.5 2.5 2.5 0 0 1 2.5-2.5 2.5 2.5 0 0 1 2.5 2.5 2.5 2.5 0 0 1-2.5 2.5M9.27 20H6V4h7v5h5v4.07c.7.08 1.36.25 2 .49V8l-6-6H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h4.5a8.2 8.2 0 0 1-1.23-2"/></svg> </a> <h1 id=nlohmannjson_pointer><small>nlohmann::</small>json_pointer<a class=headerlink href=#nlohmannjson_pointer title="Permanent link">&para;</a></h1> <div class=highlight><pre><span></span><code><span class=k>template</span><span class=o>&lt;</span><span class=k>typename</span><span class=w> </span><span class=nc>RefStringType</span><span class=o>&gt;</span>
 <span class=k>class</span><span class=w> </span><span class=nc>json_pointer</span><span class=p>;</span>
-</code></pre></div> <p>A <abbr title="JavaScript Object Notation">JSON</abbr> pointer defines a string syntax for identifying a specific value within a <abbr title="JavaScript Object Notation">JSON</abbr> document. It can be used with functions <a href=../basic_json/at/ ><code>at</code></a> and <a href=../basic_json/operator%5B%5D/ ><code>operator[]</code></a>. Furthermore, <abbr title="JavaScript Object Notation">JSON</abbr> pointers are the base for <abbr title="JavaScript Object Notation">JSON</abbr> patches.</p> <h2 id=template-parameters>Template parameters<a class=headerlink href=#template-parameters title="Permanent link">&para;</a></h2> <dl> <dt><code>RefStringType</code></dt> <dd>the string type used for the reference tokens making up the <abbr title="JavaScript Object Notation">JSON</abbr> pointer</dd> </dl> <div class="admonition warning"> <p class=admonition-title>Deprecation</p> <p>For backwards compatibility <code>RefStringType</code> may also be a specialization of <a href=../basic_json/ ><code>basic_json</code></a> in which case <code>string_t</code> will be deduced as <a href=../basic_json/string_t/ ><code>basic_json::string_t</code></a>. This feature is deprecated and may be removed in a future major version.</p> </div> <h2 id=member-types>Member types<a class=headerlink href=#member-types title="Permanent link">&para;</a></h2> <ul> <li><a href=string_t/ ><strong>string_t</strong></a> - the string type used for the reference tokens</li> </ul> <h2 id=member-functions>Member functions<a class=headerlink href=#member-functions title="Permanent link">&para;</a></h2> <ul> <li><a href=json_pointer/ >(constructor)</a></li> <li><a href=to_string/ ><strong>to_string</strong></a> - return a string representation of the <abbr title="JavaScript Object Notation">JSON</abbr> pointer</li> <li><a href=operator_string_t/ ><strong>operator string_t</strong></a> - return a string representation of the <abbr title="JavaScript Object Notation">JSON</abbr> pointer</li> <li><a href=operator_eq/ ><strong>operator==</strong></a> - compare: equal</li> <li><a href=operator_ne/ ><strong>operator!=</strong></a> - compare: not equal</li> <li><a href=operator_slasheq/ ><strong>operator/=</strong></a> - append to the end of the <abbr title="JavaScript Object Notation">JSON</abbr> pointer</li> <li><a href=operator_slash/ ><strong>operator/</strong></a> - create <abbr title="JavaScript Object Notation">JSON</abbr> Pointer by appending</li> <li><a href=parent_pointer/ ><strong>parent_pointer</strong></a> - returns the parent of this <abbr title="JavaScript Object Notation">JSON</abbr> pointer</li> <li><a href=pop_back/ ><strong>pop_back</strong></a> - remove the last reference token</li> <li><a href=back/ ><strong>back</strong></a> - return last reference token</li> <li><a href=push_back/ ><strong>push_back</strong></a> - append an unescaped token at the end of the pointer</li> <li><a href=pop_front/ ><strong>pop_front</strong></a> - remove the first reference token</li> <li><a href=front/ ><strong>front</strong></a> - return first reference token</li> <li><a href=push_front/ ><strong>push_front</strong></a> - append an unescaped token at the start of the pointer</li> <li><a href=empty/ ><strong>empty</strong></a> - return whether the pointer points to the root document</li> </ul> <h2 id=literals>Literals<a class=headerlink href=#literals title="Permanent link">&para;</a></h2> <ul> <li><a href=../operator_literal_json_pointer/ ><strong>operator""_json_pointer</strong></a> - user-defined string literal for <abbr title="JavaScript Object Notation">JSON</abbr> pointers</li> </ul> <h2 id=see-also>See also<a class=headerlink href=#see-also title="Permanent link">&para;</a></h2> <ul> <li><a href="https://datatracker.ietf.org/doc/html/rfc6901"><abbr title="Request for Comments">RFC</abbr> 6901</a></li> </ul> <h2 id=version-history>Version history<a class=headerlink href=#version-history title="Permanent link">&para;</a></h2> <ul> <li>Added in version 2.0.0.</li> <li>Changed template parameter from <code>basic_json</code> to string type in version 3.11.0.</li> </ul> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 23, 2026 11:16:18 UTC">June 23, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
+</code></pre></div> <p>A <abbr title="JavaScript Object Notation">JSON</abbr> pointer defines a string syntax for identifying a specific value within a <abbr title="JavaScript Object Notation">JSON</abbr> document. It can be used with functions <a href=../basic_json/at/ ><code>at</code></a> and <a href=../basic_json/operator%5B%5D/ ><code>operator[]</code></a>. Furthermore, <abbr title="JavaScript Object Notation">JSON</abbr> pointers are the base for <abbr title="JavaScript Object Notation">JSON</abbr> patches.</p> <h2 id=template-parameters>Template parameters<a class=headerlink href=#template-parameters title="Permanent link">&para;</a></h2> <dl> <dt><code>RefStringType</code></dt> <dd>the string type used for the reference tokens making up the <abbr title="JavaScript Object Notation">JSON</abbr> pointer</dd> </dl> <div class="admonition warning"> <p class=admonition-title>Deprecation</p> <p>For backwards compatibility <code>RefStringType</code> may also be a specialization of <a href=../basic_json/ ><code>basic_json</code></a> in which case <code>string_t</code> will be deduced as <a href=../basic_json/string_t/ ><code>basic_json::string_t</code></a>. This feature is deprecated and may be removed in a future major version.</p> </div> <h2 id=member-types>Member types<a class=headerlink href=#member-types title="Permanent link">&para;</a></h2> <ul> <li><a href=string_t/ ><strong>string_t</strong></a> - the string type used for the reference tokens</li> </ul> <h2 id=member-functions>Member functions<a class=headerlink href=#member-functions title="Permanent link">&para;</a></h2> <ul> <li><a href=json_pointer/ >(constructor)</a></li> <li><a href=to_string/ ><strong>to_string</strong></a> - return a string representation of the <abbr title="JavaScript Object Notation">JSON</abbr> pointer</li> <li><a href=operator_string_t/ ><strong>operator string_t</strong></a> - return a string representation of the <abbr title="JavaScript Object Notation">JSON</abbr> pointer</li> <li><a href=operator_eq/ ><strong>operator==</strong></a> - compare: equal</li> <li><a href=operator_ne/ ><strong>operator!=</strong></a> - compare: not equal</li> <li><a href=operator_slasheq/ ><strong>operator/=</strong></a> - append to the end of the <abbr title="JavaScript Object Notation">JSON</abbr> pointer</li> <li><a href=operator_slash/ ><strong>operator/</strong></a> - create <abbr title="JavaScript Object Notation">JSON</abbr> Pointer by appending</li> <li><a href=parent_pointer/ ><strong>parent_pointer</strong></a> - returns the parent of this <abbr title="JavaScript Object Notation">JSON</abbr> pointer</li> <li><a href=pop_back/ ><strong>pop_back</strong></a> - remove the last reference token</li> <li><a href=back/ ><strong>back</strong></a> - return last reference token</li> <li><a href=push_back/ ><strong>push_back</strong></a> - append an unescaped token at the end of the pointer</li> <li><a href=pop_front/ ><strong>pop_front</strong></a> - remove the first reference token</li> <li><a href=front/ ><strong>front</strong></a> - return first reference token</li> <li><a href=push_front/ ><strong>push_front</strong></a> - append an unescaped token at the start of the pointer</li> <li><a href=empty/ ><strong>empty</strong></a> - return whether the pointer points to the root document</li> </ul> <h2 id=literals>Literals<a class=headerlink href=#literals title="Permanent link">&para;</a></h2> <ul> <li><a href=../operator_literal_json_pointer/ ><strong>operator""_json_pointer</strong></a> - user-defined string literal for <abbr title="JavaScript Object Notation">JSON</abbr> pointers</li> </ul> <h2 id=see-also>See also<a class=headerlink href=#see-also title="Permanent link">&para;</a></h2> <ul> <li><a href="https://datatracker.ietf.org/doc/html/rfc6901"><abbr title="Request for Comments">RFC</abbr> 6901</a></li> </ul> <h2 id=version-history>Version history<a class=headerlink href=#version-history title="Permanent link">&para;</a></h2> <ul> <li>Added in version 2.0.0.</li> <li>Changed template parameter from <code>basic_json</code> to string type in version 3.11.0.</li> </ul> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 29, 2026 20:15:18 UTC">June 29, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
diff --git a/api/json_pointer/json_pointer/index.html b/api/json_pointer/json_pointer/index.html
index cd38805..20fe7b0 100644
--- a/api/json_pointer/json_pointer/index.html
+++ b/api/json_pointer/json_pointer/index.html
@@ -49,4 +49,4 @@
 </code></pre></div> <p>Output:</p> <div class=highlight><pre><span></span><code><span class=p>[</span><span class=err>jso</span><span class=kc>n</span><span class=err>.excep</span><span class=kc>t</span><span class=err>io</span><span class=kc>n</span><span class=err>.parse_error.</span><span class=mi>107</span><span class=p>]</span><span class=w> </span><span class=err>parse</span><span class=w> </span><span class=err>error</span><span class=w> </span><span class=err>a</span><span class=kc>t</span><span class=w> </span><span class=err>by</span><span class=kc>te</span><span class=w> </span><span class=mi>1</span><span class=p>:</span><span class=w> </span><span class=err>JSON</span><span class=w> </span><span class=err>poi</span><span class=kc>nter</span><span class=w> </span><span class=err>mus</span><span class=kc>t</span><span class=w> </span><span class=err>be</span><span class=w> </span><span class=err>emp</span><span class=kc>t</span><span class=err>y</span><span class=w> </span><span class=err>or</span><span class=w> </span><span class=err>begi</span><span class=kc>n</span><span class=w> </span><span class=err>wi</span><span class=kc>t</span><span class=err>h</span><span class=w> </span><span class=err>&#39;/&#39;</span><span class=w> </span><span class=mi>-</span><span class=w> </span><span class=err>was</span><span class=p>:</span><span class=w> </span><span class=err>&#39;</span><span class=kc>f</span><span class=err>oo&#39;</span>
 <span class=p>[</span><span class=err>jso</span><span class=kc>n</span><span class=err>.excep</span><span class=kc>t</span><span class=err>io</span><span class=kc>n</span><span class=err>.parse_error.</span><span class=mi>108</span><span class=p>]</span><span class=w> </span><span class=err>parse</span><span class=w> </span><span class=err>error</span><span class=p>:</span><span class=w> </span><span class=err>escape</span><span class=w> </span><span class=err>charac</span><span class=kc>ter</span><span class=w> </span><span class=err>&#39;~&#39;</span><span class=w> </span><span class=err>mus</span><span class=kc>t</span><span class=w> </span><span class=err>be</span><span class=w> </span><span class=kc>f</span><span class=err>ollowed</span><span class=w> </span><span class=err>wi</span><span class=kc>t</span><span class=err>h</span><span class=w> </span><span class=err>&#39;</span><span class=mi>0</span><span class=err>&#39;</span><span class=w> </span><span class=err>or</span><span class=w> </span><span class=err>&#39;</span><span class=mi>1</span><span class=err>&#39;</span>
 <span class=p>[</span><span class=err>jso</span><span class=kc>n</span><span class=err>.excep</span><span class=kc>t</span><span class=err>io</span><span class=kc>n</span><span class=err>.parse_error.</span><span class=mi>108</span><span class=p>]</span><span class=w> </span><span class=err>parse</span><span class=w> </span><span class=err>error</span><span class=p>:</span><span class=w> </span><span class=err>escape</span><span class=w> </span><span class=err>charac</span><span class=kc>ter</span><span class=w> </span><span class=err>&#39;~&#39;</span><span class=w> </span><span class=err>mus</span><span class=kc>t</span><span class=w> </span><span class=err>be</span><span class=w> </span><span class=kc>f</span><span class=err>ollowed</span><span class=w> </span><span class=err>wi</span><span class=kc>t</span><span class=err>h</span><span class=w> </span><span class=err>&#39;</span><span class=mi>0</span><span class=err>&#39;</span><span class=w> </span><span class=err>or</span><span class=w> </span><span class=err>&#39;</span><span class=mi>1</span><span class=err>&#39;</span>
-</code></pre></div> </details> <h2 id=version-history>Version history<a class=headerlink href=#version-history title="Permanent link">&para;</a></h2> <ul> <li>Added in version 2.0.0.</li> <li>Changed type of <code>s</code> to <code>string_t</code> in version 3.11.0.</li> </ul> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 23, 2026 11:16:18 UTC">June 23, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
+</code></pre></div> </details> <h2 id=version-history>Version history<a class=headerlink href=#version-history title="Permanent link">&para;</a></h2> <ul> <li>Added in version 2.0.0.</li> <li>Changed type of <code>s</code> to <code>string_t</code> in version 3.11.0.</li> </ul> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 29, 2026 20:15:18 UTC">June 29, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
diff --git a/api/json_pointer/operator_eq/index.html b/api/json_pointer/operator_eq/index.html
index ff6724f..94a3cf6 100644
--- a/api/json_pointer/operator_eq/index.html
+++ b/api/json_pointer/operator_eq/index.html
@@ -82,4 +82,4 @@
 &quot;&quot; == &quot;&quot;: true
 &quot;/foo&quot; == &quot;/foo&quot;: true
 &quot;bar&quot; == &quot;/foo&quot;: [json.exception.parse_error.107] parse error at byte 1: JSON pointer must be empty or begin with &#39;/&#39; - was: &#39;bar&#39;
-</code></pre></div> </details> <h2 id=version-history>Version history<a class=headerlink href=#version-history title="Permanent link">&para;</a></h2> <ol> <li>Added in version 2.1.0. Added C++20 member functions in version 3.11.2.</li> <li>Added for backward compatibility and deprecated in version 3.11.2.</li> </ol> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 23, 2026 11:16:18 UTC">June 23, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
+</code></pre></div> </details> <h2 id=version-history>Version history<a class=headerlink href=#version-history title="Permanent link">&para;</a></h2> <ol> <li>Added in version 2.1.0. Added C++20 member functions in version 3.11.2.</li> <li>Added for backward compatibility and deprecated in version 3.11.2.</li> </ol> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 29, 2026 20:15:18 UTC">June 29, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
diff --git a/api/json_pointer/operator_ne/index.html b/api/json_pointer/operator_ne/index.html
index 3b020b8..247154a 100644
--- a/api/json_pointer/operator_ne/index.html
+++ b/api/json_pointer/operator_ne/index.html
@@ -72,4 +72,4 @@
 &quot;&quot; != &quot;&quot;: false
 &quot;/foo&quot; != &quot;/foo&quot;: false
 &quot;bar&quot; != &quot;/foo&quot;: [json.exception.parse_error.107] parse error at byte 1: JSON pointer must be empty or begin with &#39;/&#39; - was: &#39;bar&#39;
-</code></pre></div> </details> <h2 id=version-history>Version history<a class=headerlink href=#version-history title="Permanent link">&para;</a></h2> <ol> <li>Added in version 2.1.0.</li> <li>Added for backward compatibility and deprecated in version 3.11.2.</li> </ol> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 23, 2026 11:16:18 UTC">June 23, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
+</code></pre></div> </details> <h2 id=version-history>Version history<a class=headerlink href=#version-history title="Permanent link">&para;</a></h2> <ol> <li>Added in version 2.1.0.</li> <li>Added for backward compatibility and deprecated in version 3.11.2.</li> </ol> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 29, 2026 20:15:18 UTC">June 29, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
diff --git a/api/json_pointer/operator_slash/index.html b/api/json_pointer/operator_slash/index.html
index 3bfd991..8fe24e5 100644
--- a/api/json_pointer/operator_slash/index.html
+++ b/api/json_pointer/operator_slash/index.html
@@ -28,4 +28,4 @@
 </code></pre></div> <p>Output:</p> <div class=highlight><pre><span></span><code><span class=s2>&quot;/foo/bar/baz&quot;</span>
 <span class=s2>&quot;/foo/fob&quot;</span>
 <span class=s2>&quot;/foo/42&quot;</span>
-</code></pre></div> </details> <h2 id=version-history>Version history<a class=headerlink href=#version-history title="Permanent link">&para;</a></h2> <ol> <li>Added in version 3.6.0.</li> <li>Added in version 3.6.0. Changed type of <code>token</code> to <code>string_t</code> in version 3.11.0.</li> <li>Added in version 3.6.0.</li> </ol> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 23, 2026 11:16:18 UTC">June 23, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
+</code></pre></div> </details> <h2 id=version-history>Version history<a class=headerlink href=#version-history title="Permanent link">&para;</a></h2> <ol> <li>Added in version 3.6.0.</li> <li>Added in version 3.6.0. Changed type of <code>token</code> to <code>string_t</code> in version 3.11.0.</li> <li>Added in version 3.6.0.</li> </ol> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 29, 2026 20:15:18 UTC">June 29, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
diff --git a/api/json_pointer/operator_slasheq/index.html b/api/json_pointer/operator_slasheq/index.html
index 1994853..8316bbe 100644
--- a/api/json_pointer/operator_slasheq/index.html
+++ b/api/json_pointer/operator_slasheq/index.html
@@ -33,4 +33,4 @@
 <span class=s2>&quot;/foo/bar/baz&quot;</span>
 <span class=s2>&quot;/foo/bar/baz/fob&quot;</span>
 <span class=s2>&quot;/foo/bar/baz/fob/42&quot;</span>
-</code></pre></div> </details> <h2 id=version-history>Version history<a class=headerlink href=#version-history title="Permanent link">&para;</a></h2> <ol> <li>Added in version 3.6.0.</li> <li>Added in version 3.6.0. Changed type of <code>token</code> to <code>string_t</code> in version 3.11.0.</li> <li>Added in version 3.6.0.</li> </ol> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 23, 2026 11:16:18 UTC">June 23, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
+</code></pre></div> </details> <h2 id=version-history>Version history<a class=headerlink href=#version-history title="Permanent link">&para;</a></h2> <ol> <li>Added in version 3.6.0.</li> <li>Added in version 3.6.0. Changed type of <code>token</code> to <code>string_t</code> in version 3.11.0.</li> <li>Added in version 3.6.0.</li> </ol> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 29, 2026 20:15:18 UTC">June 29, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
diff --git a/api/json_pointer/operator_string_t/index.html b/api/json_pointer/operator_string_t/index.html
index 9ebc75d..f1accc6 100644
--- a/api/json_pointer/operator_string_t/index.html
+++ b/api/json_pointer/operator_string_t/index.html
@@ -24,4 +24,4 @@
 <span class=p>}</span>
 </code></pre></div> <p>Output:</p> <div class=highlight><pre><span></span><code><span class=err>/</span><span class=kc>f</span><span class=err>oo/</span><span class=mi>0</span>
 <span class=err>/a~</span><span class=mi>1</span><span class=err>b</span>
-</code></pre></div> </details> <h2 id=see-also>See also<a class=headerlink href=#see-also title="Permanent link">&para;</a></h2> <ul> <li><a href=../../basic_json/string_t/ >string_t</a>- type for strings</li> </ul> <h2 id=version-history>Version history<a class=headerlink href=#version-history title="Permanent link">&para;</a></h2> <ul> <li>Since version 2.0.0.</li> <li>Changed type to <code>string_t</code> and deprecated in version 3.11.0.</li> </ul> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 23, 2026 11:16:18 UTC">June 23, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
+</code></pre></div> </details> <h2 id=see-also>See also<a class=headerlink href=#see-also title="Permanent link">&para;</a></h2> <ul> <li><a href=../../basic_json/string_t/ >string_t</a>- type for strings</li> </ul> <h2 id=version-history>Version history<a class=headerlink href=#version-history title="Permanent link">&para;</a></h2> <ul> <li>Since version 2.0.0.</li> <li>Changed type to <code>string_t</code> and deprecated in version 3.11.0.</li> </ul> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 29, 2026 20:15:18 UTC">June 29, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
diff --git a/api/json_pointer/parent_pointer/index.html b/api/json_pointer/parent_pointer/index.html
index 849873b..cb980f8 100644
--- a/api/json_pointer/parent_pointer/index.html
+++ b/api/json_pointer/parent_pointer/index.html
@@ -1,5 +1,5 @@
-<!doctype html><html lang=en class=no-js> <head><meta charset=utf-8><meta name=viewport content="width=device-width,initial-scale=1"><meta name=author content="Niels Lohmann"><link href="https://json.nlohmann.me/api/json_pointer/parent_pointer/" rel="canonical"><link href=../operator_slasheq/ rel=prev><link href=../pop_back/ rel=next><link rel=icon href=../../../assets/images/favicon.png><meta name=generator content="mkdocs-1.6.1, mkdocs-material-9.7.6"><title>parent_pointer - JSON for Modern C++</title><link rel=stylesheet href=../../../assets/stylesheets/main.484c7ddc.min.css><link rel=stylesheet href=../../../assets/stylesheets/palette.ab4e12ef.min.css><link rel="stylesheet" href="../../../assets/external/fonts.googleapis.com/css.61a430c9.css"><style>:root{--md-text-font:"Roboto";--md-code-font:"JetBrains Mono"}</style><link rel=stylesheet href=../../../css/custom.css><script>__md_scope=new URL("../../..",location),__md_hash=e=>[...e].reduce(((e,_)=>(e<<5)-e+_.charCodeAt(0)),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script></head> <body dir=ltr data-md-color-scheme=default data-md-color-primary=indigo data-md-color-accent=indigo> <input class=md-toggle data-md-toggle=drawer type=checkbox id=__drawer autocomplete=off> <input class=md-toggle data-md-toggle=search type=checkbox id=__search autocomplete=off> <label class=md-overlay for=__drawer></label> <div data-md-component=skip> <a href=#nlohmannjson_pointerparent_pointer class=md-skip> Skip to content </a> </div> <div data-md-component=announce> </div> <header class=md-header data-md-component=header> <nav class="md-header__inner md-grid" aria-label=Header> <a href=../../.. title="JSON for Modern C++" class="md-header__button md-logo" aria-label="JSON for Modern C++" data-md-component=logo> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54"/></svg> </a> <label class="md-header__button md-icon" for=__drawer> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M3 6h18v2H3zm0 5h18v2H3zm0 5h18v2H3z"/></svg> </label> <div class=md-header__title data-md-component=header-title> <div class=md-header__ellipsis> <div class=md-header__topic> <span class=md-ellipsis> JSON for Modern C++ </span> </div> <div class=md-header__topic data-md-component=header-topic> <span class=md-ellipsis> parent_pointer </span> </div> </div> </div> <form class=md-header__option data-md-component=palette> <input class=md-option data-md-color-media="(prefers-color-scheme: light)" data-md-color-scheme=default data-md-color-primary=indigo data-md-color-accent=indigo aria-label="Switch to dark mode" type=radio name=__palette id=__palette_0> <label class="md-header__button md-icon" title="Switch to dark mode" for=__palette_1 hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a4 4 0 0 0-4 4 4 4 0 0 0 4 4 4 4 0 0 0 4-4 4 4 0 0 0-4-4m0 10a6 6 0 0 1-6-6 6 6 0 0 1 6-6 6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12z"/></svg> </label> <input class=md-option data-md-color-media="(prefers-color-scheme: dark)" data-md-color-scheme=slate data-md-color-primary=indigo data-md-color-accent=indigo aria-label="Switch to light mode" type=radio name=__palette id=__palette_1> <label class="md-header__button md-icon" title="Switch to light mode" for=__palette_0 hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 18c-.89 0-1.74-.2-2.5-.55C11.56 16.5 13 14.42 13 12s-1.44-4.5-3.5-5.45C10.26 6.2 11.11 6 12 6a6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12z"/></svg> </label> </form> <script>var palette=__md_get("__palette");if(palette&&palette.color){if("(prefers-color-scheme)"===palette.color.media){var media=matchMedia("(prefers-color-scheme: light)"),input=document.querySelector(media.matches?"[data-md-color-media='(prefers-color-scheme: light)']":"[data-md-color-media='(prefers-color-scheme: dark)']");palette.color.media=input.getAttribute("data-md-color-media"),palette.color.scheme=input.getAttribute("data-md-color-scheme"),palette.color.primary=input.getAttribute("data-md-color-primary"),palette.color.accent=input.getAttribute("data-md-color-accent")}for(var[key,value]of Object.entries(palette.color))document.body.setAttribute("data-md-color-"+key,value)}</script> <label class="md-header__button md-icon" for=__search> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg> </label> <div class=md-search data-md-component=search role=dialog> <label class=md-search__overlay for=__search></label> <div class=md-search__inner role=search> <form class=md-search__form name=search> <input type=text class=md-search__input name=query aria-label=Search placeholder=Search autocapitalize=off autocorrect=off autocomplete=off spellcheck=false data-md-component=search-query required> <label class="md-search__icon md-icon" for=__search> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11z"/></svg> </label> <nav class=md-search__options aria-label=Search> <button type=reset class="md-search__icon md-icon" title=Clear aria-label=Clear tabindex=-1> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z"/></svg> </button> </nav> </form> <div class=md-search__output> <div class=md-search__scrollwrap tabindex=0 data-md-scrollfix> <div class=md-search-result data-md-component=search-result> <div class=md-search-result__meta> Initializing search </div> <ol class=md-search-result__list role=presentation></ol> </div> </div> </div> </div> </div> <div class=md-header__source> <a href="https://github.com/nlohmann/json" title="Go to repository" class="md-source" data-md-component="source"> <div class="md-source__icon md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </div> <div class=md-source__repository> nlohmann/json </div> </a> </div> </nav> </header> <div class=md-container data-md-component=container> <nav class=md-tabs aria-label=Tabs data-md-component=tabs> <div class=md-grid> <ul class=md-tabs__list> <li class=md-tabs__item> <a href=../../.. class=md-tabs__link> Home </a> </li> <li class=md-tabs__item> <a href=../../../features/arbitrary_types/ class=md-tabs__link> Features </a> </li> <li class=md-tabs__item> <a href=../../../integration/ class=md-tabs__link> Integration </a> </li> <li class="md-tabs__item md-tabs__item--active"> <a href=../../basic_json/ class=md-tabs__link> API Documentation </a> </li> <li class=md-tabs__item> <a href=../../../community/ class=md-tabs__link> Community </a> </li> </ul> </div> </nav> <main class=md-main data-md-component=main> <div class="md-main__inner md-grid"> <div class="md-sidebar md-sidebar--primary" data-md-component=sidebar data-md-type=navigation> <div class=md-sidebar__scrollwrap> <div class=md-sidebar__inner> <nav class="md-nav md-nav--primary md-nav--lifted" aria-label=Navigation data-md-level=0> <label class=md-nav__title for=__drawer> <a href=../../.. title="JSON for Modern C++" class="md-nav__button md-logo" aria-label="JSON for Modern C++" data-md-component=logo> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54"/></svg> </a> JSON for Modern C++ </label> <div class=md-nav__source> <a href="https://github.com/nlohmann/json" title="Go to repository" class="md-source" data-md-component="source"> <div class="md-source__icon md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </div> <div class=md-source__repository> nlohmann/json </div> </a> </div> <ul class=md-nav__list data-md-scrollfix> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_1> <div class="md-nav__link md-nav__container"> <a href=../../.. class="md-nav__link "> <span class=md-ellipsis> Home </span> </a> <label class="md-nav__link " for=__nav_1 id=__nav_1_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_1_label aria-expanded=false> <label class=md-nav__title for=__nav_1> <span class="md-nav__icon md-icon"></span> Home </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../home/license/ class=md-nav__link> <span class=md-ellipsis> License </span> </a> </li> <li class=md-nav__item> <a href=../../../home/faq/ class=md-nav__link> <span class=md-ellipsis> FAQ </span> </a> </li> <li class=md-nav__item> <a href=../../../home/exceptions/ class=md-nav__link> <span class=md-ellipsis> Exceptions </span> </a> </li> <li class=md-nav__item> <a href=../../../home/releases/ class=md-nav__link> <span class=md-ellipsis> Releases </span> </a> </li> <li class=md-nav__item> <a href=../../../home/design_goals/ class=md-nav__link> <span class=md-ellipsis> Design goals </span> </a> </li> <li class=md-nav__item> <a href=../../../home/architecture/ class=md-nav__link> <span class=md-ellipsis> Architecture </span> </a> </li> <li class=md-nav__item> <a href=../../../home/customers/ class=md-nav__link> <span class=md-ellipsis> Customers </span> </a> </li> <li class=md-nav__item> <a href=../../../home/sponsors/ class=md-nav__link> <span class=md-ellipsis> Sponsors </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2> <label class=md-nav__link for=__nav_2 id=__nav_2_label tabindex=0> <span class=md-ellipsis> Features </span> <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_2_label aria-expanded=false> <label class=md-nav__title for=__nav_2> <span class="md-nav__icon md-icon"></span> Features </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/arbitrary_types/ class=md-nav__link> <span class=md-ellipsis> Arbitrary Type Conversions </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_2> <div class="md-nav__link md-nav__container"> <a href=../../../features/binary_formats/ class="md-nav__link "> <span class=md-ellipsis> Binary Formats </span> </a> <label class="md-nav__link " for=__nav_2_2 id=__nav_2_2_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_2_label aria-expanded=false> <label class=md-nav__title for=__nav_2_2> <span class="md-nav__icon md-icon"></span> Binary Formats </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/binary_formats/bjdata/ class=md-nav__link> <span class=md-ellipsis> BJData </span> </a> </li> <li class=md-nav__item> <a href=../../../features/binary_formats/bson/ class=md-nav__link> <span class=md-ellipsis> BSON </span> </a> </li> <li class=md-nav__item> <a href=../../../features/binary_formats/cbor/ class=md-nav__link> <span class=md-ellipsis> CBOR </span> </a> </li> <li class=md-nav__item> <a href=../../../features/binary_formats/messagepack/ class=md-nav__link> <span class=md-ellipsis> MessagePack </span> </a> </li> <li class=md-nav__item> <a href=../../../features/binary_formats/ubjson/ class=md-nav__link> <span class=md-ellipsis> UBJSON </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../../features/binary_values/ class=md-nav__link> <span class=md-ellipsis> Binary Values </span> </a> </li> <li class=md-nav__item> <a href=../../../features/comments/ class=md-nav__link> <span class=md-ellipsis> Comments </span> </a> </li> <li class=md-nav__item> <a href=../../../features/trailing_commas/ class=md-nav__link> <span class=md-ellipsis> Trailing Commas </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_6> <div class="md-nav__link md-nav__container"> <a href=../../../features/element_access/ class="md-nav__link "> <span class=md-ellipsis> Element Access </span> </a> <label class="md-nav__link " for=__nav_2_6 id=__nav_2_6_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_6_label aria-expanded=false> <label class=md-nav__title for=__nav_2_6> <span class="md-nav__icon md-icon"></span> Element Access </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/element_access/unchecked_access/ class=md-nav__link> <span class=md-ellipsis> Unchecked access: operator[] </span> </a> </li> <li class=md-nav__item> <a href=../../../features/element_access/checked_access/ class=md-nav__link> <span class=md-ellipsis> Checked access: at </span> </a> </li> <li class=md-nav__item> <a href=../../../features/element_access/default_value/ class=md-nav__link> <span class=md-ellipsis> Access with default value: value </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../../features/iterators/ class=md-nav__link> <span class=md-ellipsis> Iterators </span> </a> </li> <li class=md-nav__item> <a href=../../../features/json_pointer/ class=md-nav__link> <span class=md-ellipsis> JSON Pointer </span> </a> </li> <li class=md-nav__item> <a href=../../../features/json_patch/ class=md-nav__link> <span class=md-ellipsis> JSON Patch and Diff </span> </a> </li> <li class=md-nav__item> <a href=../../../features/merge_patch/ class=md-nav__link> <span class=md-ellipsis> JSON Merge Patch </span> </a> </li> <li class=md-nav__item> <a href=../../../features/modules/ class=md-nav__link> <span class=md-ellipsis> Modules </span> </a> </li> <li class=md-nav__item> <a href=../../../features/namespace/ class=md-nav__link> <span class=md-ellipsis> nlohmann Namespace </span> </a> </li> <li class=md-nav__item> <a href=../../../features/object_order/ class=md-nav__link> <span class=md-ellipsis> Object Order </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_14> <div class="md-nav__link md-nav__container"> <a href=../../../features/parsing/ class="md-nav__link "> <span class=md-ellipsis> Parsing </span> </a> <label class="md-nav__link " for=__nav_2_14 id=__nav_2_14_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_14_label aria-expanded=false> <label class=md-nav__title for=__nav_2_14> <span class="md-nav__icon md-icon"></span> Parsing </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/parsing/json_lines/ class=md-nav__link> <span class=md-ellipsis> JSON Lines </span> </a> </li> <li class=md-nav__item> <a href=../../../features/parsing/parse_exceptions/ class=md-nav__link> <span class=md-ellipsis> Parsing and Exceptions </span> </a> </li> <li class=md-nav__item> <a href=../../../features/parsing/parser_callbacks/ class=md-nav__link> <span class=md-ellipsis> Parser Callbacks </span> </a> </li> <li class=md-nav__item> <a href=../../../features/parsing/sax_interface/ class=md-nav__link> <span class=md-ellipsis> SAX Interface </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../../features/assertions/ class=md-nav__link> <span class=md-ellipsis> Runtime Assertions </span> </a> </li> <li class=md-nav__item> <a href=../../../features/enum_conversion/ class=md-nav__link> <span class=md-ellipsis> Specializing enum conversion </span> </a> </li> <li class=md-nav__item> <a href=../../../features/macros/ class=md-nav__link> <span class=md-ellipsis> Supported Macros </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_18> <div class="md-nav__link md-nav__container"> <a href=../../../features/types/ class="md-nav__link "> <span class=md-ellipsis> Types </span> </a> <label class="md-nav__link " for=__nav_2_18 id=__nav_2_18_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_18_label aria-expanded=false> <label class=md-nav__title for=__nav_2_18> <span class="md-nav__icon md-icon"></span> Types </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/types/number_handling/ class=md-nav__link> <span class=md-ellipsis> Number Handling </span> </a> </li> </ul> </nav> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_3> <div class="md-nav__link md-nav__container"> <a href=../../../integration/ class="md-nav__link "> <span class=md-ellipsis> Integration </span> </a> <label class="md-nav__link " for=__nav_3 id=__nav_3_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_3_label aria-expanded=false> <label class=md-nav__title for=__nav_3> <span class="md-nav__icon md-icon"></span> Integration </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../integration/migration_guide/ class=md-nav__link> <span class=md-ellipsis> Migration Guide </span> </a> </li> <li class=md-nav__item> <a href=../../../integration/cmake/ class=md-nav__link> <span class=md-ellipsis> CMake </span> </a> </li> <li class=md-nav__item> <a href=../../../integration/package_managers/ class=md-nav__link> <span class=md-ellipsis> Package Managers </span> </a> </li> <li class=md-nav__item> <a href=../../../integration/pkg-config/ class=md-nav__link> <span class=md-ellipsis> Pkg-config </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--active md-nav__item--section md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4 checked> <label class=md-nav__link for=__nav_4 id=__nav_4_label tabindex> <span class=md-ellipsis> API Documentation </span> <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_4_label aria-expanded=true> <label class=md-nav__title for=__nav_4> <span class="md-nav__icon md-icon"></span> API Documentation </label> <ul class=md-nav__list data-md-scrollfix> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_1> <div class="md-nav__link md-nav__container"> <a href=../../basic_json/ class="md-nav__link "> <span class=md-ellipsis> basic_json </span> </a> <label class="md-nav__link " for=__nav_4_1 id=__nav_4_1_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_1_label aria-expanded=false> <label class=md-nav__title for=__nav_4_1> <span class="md-nav__icon md-icon"></span> basic_json </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../basic_json/basic_json/ class=md-nav__link> <span class=md-ellipsis> (Constructor) </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/~basic_json/ class=md-nav__link> <span class=md-ellipsis> (Destructor) </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/accept/ class=md-nav__link> <span class=md-ellipsis> accept </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/array/ class=md-nav__link> <span class=md-ellipsis> array </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/array_t/ class=md-nav__link> <span class=md-ellipsis> array_t </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/at/ class=md-nav__link> <span class=md-ellipsis> at </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/back/ class=md-nav__link> <span class=md-ellipsis> back </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/begin/ class=md-nav__link> <span class=md-ellipsis> begin </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/binary/ class=md-nav__link> <span class=md-ellipsis> binary </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/binary_t/ class=md-nav__link> <span class=md-ellipsis> binary_t </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/boolean_t/ class=md-nav__link> <span class=md-ellipsis> boolean_t </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/cbegin/ class=md-nav__link> <span class=md-ellipsis> cbegin </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/cbor_tag_handler_t/ class=md-nav__link> <span class=md-ellipsis> cbor_tag_handler_t </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/cend/ class=md-nav__link> <span class=md-ellipsis> cend </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/clear/ class=md-nav__link> <span class=md-ellipsis> clear </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/contains/ class=md-nav__link> <span class=md-ellipsis> contains </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/count/ class=md-nav__link> <span class=md-ellipsis> count </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/crbegin/ class=md-nav__link> <span class=md-ellipsis> crbegin </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/crend/ class=md-nav__link> <span class=md-ellipsis> crend </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/default_object_comparator_t/ class=md-nav__link> <span class=md-ellipsis> default_object_comparator_t </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/diff/ class=md-nav__link> <span class=md-ellipsis> diff </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/dump/ class=md-nav__link> <span class=md-ellipsis> dump </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/emplace/ class=md-nav__link> <span class=md-ellipsis> emplace </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/emplace_back/ class=md-nav__link> <span class=md-ellipsis> emplace_back </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/empty/ class=md-nav__link> <span class=md-ellipsis> empty </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/end/ class=md-nav__link> <span class=md-ellipsis> end </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/end_pos/ class=md-nav__link> <span class=md-ellipsis> end_pos </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/erase/ class=md-nav__link> <span class=md-ellipsis> erase </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/error_handler_t/ class=md-nav__link> <span class=md-ellipsis> error_handler_t </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/exception/ class=md-nav__link> <span class=md-ellipsis> exception </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/find/ class=md-nav__link> <span class=md-ellipsis> find </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/flatten/ class=md-nav__link> <span class=md-ellipsis> flatten </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/from_bjdata/ class=md-nav__link> <span class=md-ellipsis> from_bjdata </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/from_bson/ class=md-nav__link> <span class=md-ellipsis> from_bson </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/from_cbor/ class=md-nav__link> <span class=md-ellipsis> from_cbor </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/from_msgpack/ class=md-nav__link> <span class=md-ellipsis> from_msgpack </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/from_ubjson/ class=md-nav__link> <span class=md-ellipsis> from_ubjson </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/front/ class=md-nav__link> <span class=md-ellipsis> front </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/get/ class=md-nav__link> <span class=md-ellipsis> get </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/get_allocator/ class=md-nav__link> <span class=md-ellipsis> get_allocator </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/get_binary/ class=md-nav__link> <span class=md-ellipsis> get_binary </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/get_ptr/ class=md-nav__link> <span class=md-ellipsis> get_ptr </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/get_ref/ class=md-nav__link> <span class=md-ellipsis> get_ref </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/get_to/ class=md-nav__link> <span class=md-ellipsis> get_to </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/std_hash/ class=md-nav__link> <span class=md-ellipsis> std::hash&lt;basic_json&gt; </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/input_format_t/ class=md-nav__link> <span class=md-ellipsis> input_format_t </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/insert/ class=md-nav__link> <span class=md-ellipsis> insert </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/invalid_iterator/ class=md-nav__link> <span class=md-ellipsis> invalid_iterator </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/is_array/ class=md-nav__link> <span class=md-ellipsis> is_array </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/is_binary/ class=md-nav__link> <span class=md-ellipsis> is_binary </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/is_boolean/ class=md-nav__link> <span class=md-ellipsis> is_boolean </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/is_discarded/ class=md-nav__link> <span class=md-ellipsis> is_discarded </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/is_null/ class=md-nav__link> <span class=md-ellipsis> is_null </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/is_number/ class=md-nav__link> <span class=md-ellipsis> is_number </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/is_number_float/ class=md-nav__link> <span class=md-ellipsis> is_number_float </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/is_number_integer/ class=md-nav__link> <span class=md-ellipsis> is_number_integer </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/is_number_unsigned/ class=md-nav__link> <span class=md-ellipsis> is_number_unsigned </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/is_object/ class=md-nav__link> <span class=md-ellipsis> is_object </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/is_primitive/ class=md-nav__link> <span class=md-ellipsis> is_primitive </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/is_string/ class=md-nav__link> <span class=md-ellipsis> is_string </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/is_structured/ class=md-nav__link> <span class=md-ellipsis> is_structured </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/items/ class=md-nav__link> <span class=md-ellipsis> items </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/json_base_class_t/ class=md-nav__link> <span class=md-ellipsis> json_base_class_t </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/json_serializer/ class=md-nav__link> <span class=md-ellipsis> json_serializer </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/max_size/ class=md-nav__link> <span class=md-ellipsis> max_size </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/meta/ class=md-nav__link> <span class=md-ellipsis> meta </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/merge_patch/ class=md-nav__link> <span class=md-ellipsis> merge_patch </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/number_float_t/ class=md-nav__link> <span class=md-ellipsis> number_float_t </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/number_integer_t/ class=md-nav__link> <span class=md-ellipsis> number_integer_t </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/number_unsigned_t/ class=md-nav__link> <span class=md-ellipsis> number_unsigned_t </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/object/ class=md-nav__link> <span class=md-ellipsis> object </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/object_comparator_t/ class=md-nav__link> <span class=md-ellipsis> object_comparator_t </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/object_t/ class=md-nav__link> <span class=md-ellipsis> object_t </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/operator_ValueType/ class=md-nav__link> <span class=md-ellipsis> operator ValueType </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/operator_value_t/ class=md-nav__link> <span class=md-ellipsis> operator value_t </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/operator%5B%5D/ class=md-nav__link> <span class=md-ellipsis> operator[] </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/operator%3D/ class=md-nav__link> <span class=md-ellipsis> operator= </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/operator%2B%3D/ class=md-nav__link> <span class=md-ellipsis> operator+= </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/operator_eq/ class=md-nav__link> <span class=md-ellipsis> operator== </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/operator_ne/ class=md-nav__link> <span class=md-ellipsis> operator!= </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/operator_lt/ class=md-nav__link> <span class=md-ellipsis> operator< </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/operator_gt/ class=md-nav__link> <span class=md-ellipsis> operator> </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/operator_le/ class=md-nav__link> <span class=md-ellipsis> operator<= </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/operator_ge/ class=md-nav__link> <span class=md-ellipsis> operator>= </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/operator_spaceship/ class=md-nav__link> <span class=md-ellipsis> operator<=> </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/out_of_range/ class=md-nav__link> <span class=md-ellipsis> out_of_range </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/other_error/ class=md-nav__link> <span class=md-ellipsis> other_error </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/parse/ class=md-nav__link> <span class=md-ellipsis> parse </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/parse_error/ class=md-nav__link> <span class=md-ellipsis> parse_error </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/parse_event_t/ class=md-nav__link> <span class=md-ellipsis> parse_event_t </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/parser_callback_t/ class=md-nav__link> <span class=md-ellipsis> parser_callback_t </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/patch/ class=md-nav__link> <span class=md-ellipsis> patch </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/patch_inplace/ class=md-nav__link> <span class=md-ellipsis> patch_inplace </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/push_back/ class=md-nav__link> <span class=md-ellipsis> push_back </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/rbegin/ class=md-nav__link> <span class=md-ellipsis> rbegin </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/rend/ class=md-nav__link> <span class=md-ellipsis> rend </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/sax_parse/ class=md-nav__link> <span class=md-ellipsis> sax_parse </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/size/ class=md-nav__link> <span class=md-ellipsis> size </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/start_pos/ class=md-nav__link> <span class=md-ellipsis> start_pos </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/string_t/ class=md-nav__link> <span class=md-ellipsis> string_t </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/swap/ class=md-nav__link> <span class=md-ellipsis> swap </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/std_swap/ class=md-nav__link> <span class=md-ellipsis> std::swap&lt;basic_json&gt; </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/to_bjdata/ class=md-nav__link> <span class=md-ellipsis> to_bjdata </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/to_bson/ class=md-nav__link> <span class=md-ellipsis> to_bson </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/to_cbor/ class=md-nav__link> <span class=md-ellipsis> to_cbor </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/to_msgpack/ class=md-nav__link> <span class=md-ellipsis> to_msgpack </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/to_string/ class=md-nav__link> <span class=md-ellipsis> to_string </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/to_ubjson/ class=md-nav__link> <span class=md-ellipsis> to_ubjson </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/type/ class=md-nav__link> <span class=md-ellipsis> type </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/type_error/ class=md-nav__link> <span class=md-ellipsis> type_error </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/type_name/ class=md-nav__link> <span class=md-ellipsis> type_name </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/unflatten/ class=md-nav__link> <span class=md-ellipsis> unflatten </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/update/ class=md-nav__link> <span class=md-ellipsis> update </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/value/ class=md-nav__link> <span class=md-ellipsis> value </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/value_t/ class=md-nav__link> <span class=md-ellipsis> value_t </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_2> <div class="md-nav__link md-nav__container"> <a href=../../byte_container_with_subtype/ class="md-nav__link "> <span class=md-ellipsis> byte_container_with_subtype </span> </a> <label class="md-nav__link " for=__nav_4_2 id=__nav_4_2_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_2_label aria-expanded=false> <label class=md-nav__title for=__nav_4_2> <span class="md-nav__icon md-icon"></span> byte_container_with_subtype </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../byte_container_with_subtype/byte_container_with_subtype/ class=md-nav__link> <span class=md-ellipsis> (constructor) </span> </a> </li> <li class=md-nav__item> <a href=../../byte_container_with_subtype/clear_subtype/ class=md-nav__link> <span class=md-ellipsis> clear_subtype </span> </a> </li> <li class=md-nav__item> <a href=../../byte_container_with_subtype/has_subtype/ class=md-nav__link> <span class=md-ellipsis> has_subtype </span> </a> </li> <li class=md-nav__item> <a href=../../byte_container_with_subtype/set_subtype/ class=md-nav__link> <span class=md-ellipsis> set_subtype </span> </a> </li> <li class=md-nav__item> <a href=../../byte_container_with_subtype/subtype/ class=md-nav__link> <span class=md-ellipsis> subtype </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_3> <div class="md-nav__link md-nav__container"> <a href=../../adl_serializer/ class="md-nav__link "> <span class=md-ellipsis> adl_serializer </span> </a> <label class="md-nav__link " for=__nav_4_3 id=__nav_4_3_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_3_label aria-expanded=false> <label class=md-nav__title for=__nav_4_3> <span class="md-nav__icon md-icon"></span> adl_serializer </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../adl_serializer/from_json/ class=md-nav__link> <span class=md-ellipsis> from_json </span> </a> </li> <li class=md-nav__item> <a href=../../adl_serializer/to_json/ class=md-nav__link> <span class=md-ellipsis> to_json </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../json/ class=md-nav__link> <span class=md-ellipsis> json </span> </a> </li> <li class="md-nav__item md-nav__item--active md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_5 checked> <div class="md-nav__link md-nav__container"> <a href=../ class="md-nav__link "> <span class=md-ellipsis> json_pointer </span> </a> <label class="md-nav__link " for=__nav_4_5 id=__nav_4_5_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_5_label aria-expanded=true> <label class=md-nav__title for=__nav_4_5> <span class="md-nav__icon md-icon"></span> json_pointer </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../json_pointer/ class=md-nav__link> <span class=md-ellipsis> (Constructor) </span> </a> </li> <li class=md-nav__item> <a href=../back/ class=md-nav__link> <span class=md-ellipsis> back </span> </a> </li> <li class=md-nav__item> <a href=../empty/ class=md-nav__link> <span class=md-ellipsis> empty </span> </a> </li> <li class=md-nav__item> <a href=../front/ class=md-nav__link> <span class=md-ellipsis> front </span> </a> </li> <li class=md-nav__item> <a href=../operator_string_t/ class=md-nav__link> <span class=md-ellipsis> operator string_t </span> </a> </li> <li class=md-nav__item> <a href=../operator_eq/ class=md-nav__link> <span class=md-ellipsis> operator== </span> </a> </li> <li class=md-nav__item> <a href=../operator_ne/ class=md-nav__link> <span class=md-ellipsis> operator!= </span> </a> </li> <li class=md-nav__item> <a href=../operator_slash/ class=md-nav__link> <span class=md-ellipsis> operator/ </span> </a> </li> <li class=md-nav__item> <a href=../operator_slasheq/ class=md-nav__link> <span class=md-ellipsis> operator/= </span> </a> </li> <li class="md-nav__item md-nav__item--active"> <input class="md-nav__toggle md-toggle" type=checkbox id=__toc> <label class="md-nav__link md-nav__link--active" for=__toc> <span class=md-ellipsis> parent_pointer </span> <span class="md-nav__icon md-icon"></span> </label> <a href=./ class="md-nav__link md-nav__link--active"> <span class=md-ellipsis> parent_pointer </span> </a> <nav class="md-nav md-nav--secondary" aria-label="Table of contents"> <label class=md-nav__title for=__toc> <span class="md-nav__icon md-icon"></span> Table of contents </label> <ul class=md-nav__list data-md-component=toc data-md-scrollfix> <li class=md-nav__item> <a href=#return-value class=md-nav__link> <span class=md-ellipsis> Return value </span> </a> </li> <li class=md-nav__item> <a href=#complexity class=md-nav__link> <span class=md-ellipsis> Complexity </span> </a> </li> <li class=md-nav__item> <a href=#examples class=md-nav__link> <span class=md-ellipsis> Examples </span> </a> </li> <li class=md-nav__item> <a href=#version-history class=md-nav__link> <span class=md-ellipsis> Version history </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../pop_back/ class=md-nav__link> <span class=md-ellipsis> pop_back </span> </a> </li> <li class=md-nav__item> <a href=../pop_front/ class=md-nav__link> <span class=md-ellipsis> pop_front </span> </a> </li> <li class=md-nav__item> <a href=../push_back/ class=md-nav__link> <span class=md-ellipsis> push_back </span> </a> </li> <li class=md-nav__item> <a href=../push_front/ class=md-nav__link> <span class=md-ellipsis> push_front </span> </a> </li> <li class=md-nav__item> <a href=../string_t/ class=md-nav__link> <span class=md-ellipsis> string_t </span> </a> </li> <li class=md-nav__item> <a href=../to_string/ class=md-nav__link> <span class=md-ellipsis> to_string </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_6> <div class="md-nav__link md-nav__container"> <a href=../../json_sax/ class="md-nav__link "> <span class=md-ellipsis> json_sax </span> </a> <label class="md-nav__link " for=__nav_4_6 id=__nav_4_6_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_6_label aria-expanded=false> <label class=md-nav__title for=__nav_4_6> <span class="md-nav__icon md-icon"></span> json_sax </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../json_sax/binary/ class=md-nav__link> <span class=md-ellipsis> binary </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/boolean/ class=md-nav__link> <span class=md-ellipsis> boolean </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/end_array/ class=md-nav__link> <span class=md-ellipsis> end_array </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/end_object/ class=md-nav__link> <span class=md-ellipsis> end_object </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/key/ class=md-nav__link> <span class=md-ellipsis> key </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/null/ class=md-nav__link> <span class=md-ellipsis> null </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/number_float/ class=md-nav__link> <span class=md-ellipsis> number_float </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/number_integer/ class=md-nav__link> <span class=md-ellipsis> number_integer </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/number_unsigned/ class=md-nav__link> <span class=md-ellipsis> number_unsigned </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/parse_error/ class=md-nav__link> <span class=md-ellipsis> parse_error </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/start_array/ class=md-nav__link> <span class=md-ellipsis> start_array </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/start_object/ class=md-nav__link> <span class=md-ellipsis> start_object </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/string/ class=md-nav__link> <span class=md-ellipsis> string </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../operator_ltlt/ class=md-nav__link> <span class=md-ellipsis> operator<<(basic_json), operator<<(json_pointer) </span> </a> </li> <li class=md-nav__item> <a href=../../operator_gtgt/ class=md-nav__link> <span class=md-ellipsis> operator>>(basic_json) </span> </a> </li> <li class=md-nav__item> <a href=../../operator_literal_json/ class=md-nav__link> <span class=md-ellipsis> operator""_json </span> </a> </li> <li class=md-nav__item> <a href=../../operator_literal_json_pointer/ class=md-nav__link> <span class=md-ellipsis> operator""_json_pointer </span> </a> </li> <li class=md-nav__item> <a href=../../ordered_json/ class=md-nav__link> <span class=md-ellipsis> ordered_json </span> </a> </li> <li class=md-nav__item> <a href=../../ordered_map/ class=md-nav__link> <span class=md-ellipsis> ordered_map </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_13> <div class="md-nav__link md-nav__container"> <a href=../../macros/ class="md-nav__link "> <span class=md-ellipsis> macros </span> </a> <label class="md-nav__link " for=__nav_4_13 id=__nav_4_13_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_13_label aria-expanded=false> <label class=md-nav__title for=__nav_4_13> <span class="md-nav__icon md-icon"></span> macros </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../macros/json_assert/ class=md-nav__link> <span class=md-ellipsis> JSON_ASSERT </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_brace_init_copy_semantics/ class=md-nav__link> <span class=md-ellipsis> JSON_BRACE_INIT_COPY_SEMANTICS </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_throw_user/ class=md-nav__link> <span class=md-ellipsis> JSON_CATCH_USER, JSON_THROW_USER, JSON_TRY_USER </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_diagnostics/ class=md-nav__link> <span class=md-ellipsis> JSON_DIAGNOSTICS </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_diagnostic_positions/ class=md-nav__link> <span class=md-ellipsis> JSON_DIAGNOSTIC_POSITIONS </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_disable_enum_serialization/ class=md-nav__link> <span class=md-ellipsis> JSON_DISABLE_ENUM_SERIALIZATION </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_has_cpp_11/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_CPP_11, JSON_HAS_CPP_14, JSON_HAS_CPP_17, JSON_HAS_CPP_20 </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_has_filesystem/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_EXPERIMENTAL_FILESYSTEM, JSON_HAS_FILESYSTEM </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_has_ranges/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_RANGES </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_has_static_rtti/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_STATIC_RTTI </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_has_three_way_comparison/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_THREE_WAY_COMPARISON </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_noexception/ class=md-nav__link> <span class=md-ellipsis> JSON_NOEXCEPTION </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_no_io/ class=md-nav__link> <span class=md-ellipsis> JSON_NO_IO </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_skip_library_version_check/ class=md-nav__link> <span class=md-ellipsis> JSON_SKIP_LIBRARY_VERSION_CHECK </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_skip_unsupported_compiler_check/ class=md-nav__link> <span class=md-ellipsis> JSON_SKIP_UNSUPPORTED_COMPILER_CHECK </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_use_global_udls/ class=md-nav__link> <span class=md-ellipsis> JSON_USE_GLOBAL_UDLS </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_use_implicit_conversions/ class=md-nav__link> <span class=md-ellipsis> JSON_USE_IMPLICIT_CONVERSIONS </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_use_legacy_discarded_value_comparison/ class=md-nav__link> <span class=md-ellipsis> JSON_USE_LEGACY_DISCARDED_VALUE_COMPARISON </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_define_derived_type/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_ONLY_SERIALIZE, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_define_type_intrusive/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_TYPE_INTRUSIVE, NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_TYPE_INTRUSIVE_ONLY_SERIALIZE </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_define_type_non_intrusive/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_define_type_with_names/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_TYPE_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_namespace/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_NAMESPACE </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_namespace_begin/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_NAMESPACE_BEGIN, NLOHMANN_JSON_NAMESPACE_END </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_namespace_no_version/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_NAMESPACE_NO_VERSION </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_serialize_enum/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_SERIALIZE_ENUM </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_serialize_enum_strict/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_SERIALIZE_ENUM_STRICT </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_version_major/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_VERSION_MAJOR, NLOHMANN_JSON_VERSION_MINOR, NLOHMANN_JSON_VERSION_PATCH </span> </a> </li> </ul> </nav> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_5> <div class="md-nav__link md-nav__container"> <a href=../../../community/ class="md-nav__link "> <span class=md-ellipsis> Community </span> </a> <label class="md-nav__link " for=__nav_5 id=__nav_5_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_5_label aria-expanded=false> <label class=md-nav__title for=__nav_5> <span class="md-nav__icon md-icon"></span> Community </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../community/code_of_conduct/ class=md-nav__link> <span class=md-ellipsis> Code of Conduct </span> </a> </li> <li class=md-nav__item> <a href=../../../community/contribution_guidelines/ class=md-nav__link> <span class=md-ellipsis> Contribution Guidelines </span> </a> </li> <li class=md-nav__item> <a href=../../../community/quality_assurance/ class=md-nav__link> <span class=md-ellipsis> Quality assurance </span> </a> </li> <li class=md-nav__item> <a href=../../../community/governance/ class=md-nav__link> <span class=md-ellipsis> Governance </span> </a> </li> <li class=md-nav__item> <a href=../../../community/security_policy/ class=md-nav__link> <span class=md-ellipsis> Security Policy </span> </a> </li> </ul> </nav> </li> </ul> </nav> </div> </div> </div> <div class="md-sidebar md-sidebar--secondary" data-md-component=sidebar data-md-type=toc> <div class=md-sidebar__scrollwrap> <div class=md-sidebar__inner> <nav class="md-nav md-nav--secondary" aria-label="Table of contents"> <label class=md-nav__title for=__toc> <span class="md-nav__icon md-icon"></span> Table of contents </label> <ul class=md-nav__list data-md-component=toc data-md-scrollfix> <li class=md-nav__item> <a href=#return-value class=md-nav__link> <span class=md-ellipsis> Return value </span> </a> </li> <li class=md-nav__item> <a href=#complexity class=md-nav__link> <span class=md-ellipsis> Complexity </span> </a> </li> <li class=md-nav__item> <a href=#examples class=md-nav__link> <span class=md-ellipsis> Examples </span> </a> </li> <li class=md-nav__item> <a href=#version-history class=md-nav__link> <span class=md-ellipsis> Version history </span> </a> </li> </ul> </nav> </div> </div> </div> <div class=md-content data-md-component=content> <article class="md-content__inner md-typeset"> <a href="https://github.com/nlohmann/json/edit/develop/docs/mkdocs/docs/api/json_pointer/parent_pointer.md" title="Edit this page" class="md-content__button md-icon" rel="edit"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M10 20H6V4h7v5h5v3.1l2-2V8l-6-6H6c-1.1 0-2 .9-2 2v16c0 1.1.9 2 2 2h4zm10.2-7c.1 0 .3.1.4.2l1.3 1.3c.2.2.2.6 0 .8l-1 1-2.1-2.1 1-1c.1-.1.2-.2.4-.2m0 3.9L14.1 23H12v-2.1l6.1-6.1z"/></svg> </a> <a href="https://github.com/nlohmann/json/raw/develop/docs/mkdocs/docs/api/json_pointer/parent_pointer.md" title="View source of this page" class="md-content__button md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M17 18c.56 0 1 .44 1 1s-.44 1-1 1-1-.44-1-1 .44-1 1-1m0-3c-2.73 0-5.06 1.66-6 4 .94 2.34 3.27 4 6 4s5.06-1.66 6-4c-.94-2.34-3.27-4-6-4m0 6.5a2.5 2.5 0 0 1-2.5-2.5 2.5 2.5 0 0 1 2.5-2.5 2.5 2.5 0 0 1 2.5 2.5 2.5 2.5 0 0 1-2.5 2.5M9.27 20H6V4h7v5h5v4.07c.7.08 1.36.25 2 .49V8l-6-6H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h4.5a8.2 8.2 0 0 1-1.23-2"/></svg> </a> <h1 id=nlohmannjson_pointerparent_pointer><small>nlohmann::json_pointer::</small>parent_pointer<a class=headerlink href=#nlohmannjson_pointerparent_pointer title="Permanent link">&para;</a></h1> <div class=highlight><pre><span></span><code><span class=n>json_pointer</span><span class=w> </span><span class=nf>parent_pointer</span><span class=p>()</span><span class=w> </span><span class=k>const</span><span class=p>;</span>
-</code></pre></div> <p>Returns the parent of this <abbr title="JavaScript Object Notation">JSON</abbr> pointer.</p> <h2 id=return-value>Return value<a class=headerlink href=#return-value title="Permanent link">&para;</a></h2> <p>Parent of this <abbr title="JavaScript Object Notation">JSON</abbr> pointer; in case this <abbr title="JavaScript Object Notation">JSON</abbr> pointer is the root, the root itself is returned.</p> <h2 id=complexity>Complexity<a class=headerlink href=#complexity title="Permanent link">&para;</a></h2> <p>Linear in the length of the <abbr title="JavaScript Object Notation">JSON</abbr> pointer.</p> <h2 id=examples>Examples<a class=headerlink href=#examples title="Permanent link">&para;</a></h2> <details class=example> <summary>Example</summary> <p>The example shows the result of <code>parent_pointer</code> for different <abbr title="JavaScript Object Notation">JSON</abbr> Pointers.</p> <div class=highlight><pre><span></span><code><span class=cp>#include</span><span class=w> </span><span class=cpf>&lt;iostream&gt;</span>
+<!doctype html><html lang=en class=no-js> <head><meta charset=utf-8><meta name=viewport content="width=device-width,initial-scale=1"><meta name=author content="Niels Lohmann"><link href="https://json.nlohmann.me/api/json_pointer/parent_pointer/" rel="canonical"><link href=../operator_slasheq/ rel=prev><link href=../pop_back/ rel=next><link rel=icon href=../../../assets/images/favicon.png><meta name=generator content="mkdocs-1.6.1, mkdocs-material-9.7.6"><title>parent_pointer - JSON for Modern C++</title><link rel=stylesheet href=../../../assets/stylesheets/main.484c7ddc.min.css><link rel=stylesheet href=../../../assets/stylesheets/palette.ab4e12ef.min.css><link rel="stylesheet" href="../../../assets/external/fonts.googleapis.com/css.61a430c9.css"><style>:root{--md-text-font:"Roboto";--md-code-font:"JetBrains Mono"}</style><link rel=stylesheet href=../../../css/custom.css><script>__md_scope=new URL("../../..",location),__md_hash=e=>[...e].reduce(((e,_)=>(e<<5)-e+_.charCodeAt(0)),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script></head> <body dir=ltr data-md-color-scheme=default data-md-color-primary=indigo data-md-color-accent=indigo> <input class=md-toggle data-md-toggle=drawer type=checkbox id=__drawer autocomplete=off> <input class=md-toggle data-md-toggle=search type=checkbox id=__search autocomplete=off> <label class=md-overlay for=__drawer></label> <div data-md-component=skip> <a href=#nlohmannjson_pointerparent_pointer class=md-skip> Skip to content </a> </div> <div data-md-component=announce> </div> <header class=md-header data-md-component=header> <nav class="md-header__inner md-grid" aria-label=Header> <a href=../../.. title="JSON for Modern C++" class="md-header__button md-logo" aria-label="JSON for Modern C++" data-md-component=logo> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54"/></svg> </a> <label class="md-header__button md-icon" for=__drawer> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M3 6h18v2H3zm0 5h18v2H3zm0 5h18v2H3z"/></svg> </label> <div class=md-header__title data-md-component=header-title> <div class=md-header__ellipsis> <div class=md-header__topic> <span class=md-ellipsis> JSON for Modern C++ </span> </div> <div class=md-header__topic data-md-component=header-topic> <span class=md-ellipsis> parent_pointer </span> </div> </div> </div> <form class=md-header__option data-md-component=palette> <input class=md-option data-md-color-media="(prefers-color-scheme: light)" data-md-color-scheme=default data-md-color-primary=indigo data-md-color-accent=indigo aria-label="Switch to dark mode" type=radio name=__palette id=__palette_0> <label class="md-header__button md-icon" title="Switch to dark mode" for=__palette_1 hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a4 4 0 0 0-4 4 4 4 0 0 0 4 4 4 4 0 0 0 4-4 4 4 0 0 0-4-4m0 10a6 6 0 0 1-6-6 6 6 0 0 1 6-6 6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12z"/></svg> </label> <input class=md-option data-md-color-media="(prefers-color-scheme: dark)" data-md-color-scheme=slate data-md-color-primary=indigo data-md-color-accent=indigo aria-label="Switch to light mode" type=radio name=__palette id=__palette_1> <label class="md-header__button md-icon" title="Switch to light mode" for=__palette_0 hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 18c-.89 0-1.74-.2-2.5-.55C11.56 16.5 13 14.42 13 12s-1.44-4.5-3.5-5.45C10.26 6.2 11.11 6 12 6a6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12z"/></svg> </label> </form> <script>var palette=__md_get("__palette");if(palette&&palette.color){if("(prefers-color-scheme)"===palette.color.media){var media=matchMedia("(prefers-color-scheme: light)"),input=document.querySelector(media.matches?"[data-md-color-media='(prefers-color-scheme: light)']":"[data-md-color-media='(prefers-color-scheme: dark)']");palette.color.media=input.getAttribute("data-md-color-media"),palette.color.scheme=input.getAttribute("data-md-color-scheme"),palette.color.primary=input.getAttribute("data-md-color-primary"),palette.color.accent=input.getAttribute("data-md-color-accent")}for(var[key,value]of Object.entries(palette.color))document.body.setAttribute("data-md-color-"+key,value)}</script> <label class="md-header__button md-icon" for=__search> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg> </label> <div class=md-search data-md-component=search role=dialog> <label class=md-search__overlay for=__search></label> <div class=md-search__inner role=search> <form class=md-search__form name=search> <input type=text class=md-search__input name=query aria-label=Search placeholder=Search autocapitalize=off autocorrect=off autocomplete=off spellcheck=false data-md-component=search-query required> <label class="md-search__icon md-icon" for=__search> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11z"/></svg> </label> <nav class=md-search__options aria-label=Search> <button type=reset class="md-search__icon md-icon" title=Clear aria-label=Clear tabindex=-1> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z"/></svg> </button> </nav> </form> <div class=md-search__output> <div class=md-search__scrollwrap tabindex=0 data-md-scrollfix> <div class=md-search-result data-md-component=search-result> <div class=md-search-result__meta> Initializing search </div> <ol class=md-search-result__list role=presentation></ol> </div> </div> </div> </div> </div> <div class=md-header__source> <a href="https://github.com/nlohmann/json" title="Go to repository" class="md-source" data-md-component="source"> <div class="md-source__icon md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </div> <div class=md-source__repository> nlohmann/json </div> </a> </div> </nav> </header> <div class=md-container data-md-component=container> <nav class=md-tabs aria-label=Tabs data-md-component=tabs> <div class=md-grid> <ul class=md-tabs__list> <li class=md-tabs__item> <a href=../../.. class=md-tabs__link> Home </a> </li> <li class=md-tabs__item> <a href=../../../features/arbitrary_types/ class=md-tabs__link> Features </a> </li> <li class=md-tabs__item> <a href=../../../integration/ class=md-tabs__link> Integration </a> </li> <li class="md-tabs__item md-tabs__item--active"> <a href=../../basic_json/ class=md-tabs__link> API Documentation </a> </li> <li class=md-tabs__item> <a href=../../../community/ class=md-tabs__link> Community </a> </li> </ul> </div> </nav> <main class=md-main data-md-component=main> <div class="md-main__inner md-grid"> <div class="md-sidebar md-sidebar--primary" data-md-component=sidebar data-md-type=navigation> <div class=md-sidebar__scrollwrap> <div class=md-sidebar__inner> <nav class="md-nav md-nav--primary md-nav--lifted" aria-label=Navigation data-md-level=0> <label class=md-nav__title for=__drawer> <a href=../../.. title="JSON for Modern C++" class="md-nav__button md-logo" aria-label="JSON for Modern C++" data-md-component=logo> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54"/></svg> </a> JSON for Modern C++ </label> <div class=md-nav__source> <a href="https://github.com/nlohmann/json" title="Go to repository" class="md-source" data-md-component="source"> <div class="md-source__icon md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </div> <div class=md-source__repository> nlohmann/json </div> </a> </div> <ul class=md-nav__list data-md-scrollfix> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_1> <div class="md-nav__link md-nav__container"> <a href=../../.. class="md-nav__link "> <span class=md-ellipsis> Home </span> </a> <label class="md-nav__link " for=__nav_1 id=__nav_1_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_1_label aria-expanded=false> <label class=md-nav__title for=__nav_1> <span class="md-nav__icon md-icon"></span> Home </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../home/license/ class=md-nav__link> <span class=md-ellipsis> License </span> </a> </li> <li class=md-nav__item> <a href=../../../home/faq/ class=md-nav__link> <span class=md-ellipsis> FAQ </span> </a> </li> <li class=md-nav__item> <a href=../../../home/exceptions/ class=md-nav__link> <span class=md-ellipsis> Exceptions </span> </a> </li> <li class=md-nav__item> <a href=../../../home/releases/ class=md-nav__link> <span class=md-ellipsis> Releases </span> </a> </li> <li class=md-nav__item> <a href=../../../home/design_goals/ class=md-nav__link> <span class=md-ellipsis> Design goals </span> </a> </li> <li class=md-nav__item> <a href=../../../home/architecture/ class=md-nav__link> <span class=md-ellipsis> Architecture </span> </a> </li> <li class=md-nav__item> <a href=../../../home/customers/ class=md-nav__link> <span class=md-ellipsis> Customers </span> </a> </li> <li class=md-nav__item> <a href=../../../home/sponsors/ class=md-nav__link> <span class=md-ellipsis> Sponsors </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2> <label class=md-nav__link for=__nav_2 id=__nav_2_label tabindex=0> <span class=md-ellipsis> Features </span> <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_2_label aria-expanded=false> <label class=md-nav__title for=__nav_2> <span class="md-nav__icon md-icon"></span> Features </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/arbitrary_types/ class=md-nav__link> <span class=md-ellipsis> Arbitrary Type Conversions </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_2> <div class="md-nav__link md-nav__container"> <a href=../../../features/binary_formats/ class="md-nav__link "> <span class=md-ellipsis> Binary Formats </span> </a> <label class="md-nav__link " for=__nav_2_2 id=__nav_2_2_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_2_label aria-expanded=false> <label class=md-nav__title for=__nav_2_2> <span class="md-nav__icon md-icon"></span> Binary Formats </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/binary_formats/bjdata/ class=md-nav__link> <span class=md-ellipsis> BJData </span> </a> </li> <li class=md-nav__item> <a href=../../../features/binary_formats/bson/ class=md-nav__link> <span class=md-ellipsis> BSON </span> </a> </li> <li class=md-nav__item> <a href=../../../features/binary_formats/cbor/ class=md-nav__link> <span class=md-ellipsis> CBOR </span> </a> </li> <li class=md-nav__item> <a href=../../../features/binary_formats/messagepack/ class=md-nav__link> <span class=md-ellipsis> MessagePack </span> </a> </li> <li class=md-nav__item> <a href=../../../features/binary_formats/ubjson/ class=md-nav__link> <span class=md-ellipsis> UBJSON </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../../features/binary_values/ class=md-nav__link> <span class=md-ellipsis> Binary Values </span> </a> </li> <li class=md-nav__item> <a href=../../../features/comments/ class=md-nav__link> <span class=md-ellipsis> Comments </span> </a> </li> <li class=md-nav__item> <a href=../../../features/trailing_commas/ class=md-nav__link> <span class=md-ellipsis> Trailing Commas </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_6> <div class="md-nav__link md-nav__container"> <a href=../../../features/element_access/ class="md-nav__link "> <span class=md-ellipsis> Element Access </span> </a> <label class="md-nav__link " for=__nav_2_6 id=__nav_2_6_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_6_label aria-expanded=false> <label class=md-nav__title for=__nav_2_6> <span class="md-nav__icon md-icon"></span> Element Access </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/element_access/unchecked_access/ class=md-nav__link> <span class=md-ellipsis> Unchecked access: operator[] </span> </a> </li> <li class=md-nav__item> <a href=../../../features/element_access/checked_access/ class=md-nav__link> <span class=md-ellipsis> Checked access: at </span> </a> </li> <li class=md-nav__item> <a href=../../../features/element_access/default_value/ class=md-nav__link> <span class=md-ellipsis> Access with default value: value </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../../features/iterators/ class=md-nav__link> <span class=md-ellipsis> Iterators </span> </a> </li> <li class=md-nav__item> <a href=../../../features/json_pointer/ class=md-nav__link> <span class=md-ellipsis> JSON Pointer </span> </a> </li> <li class=md-nav__item> <a href=../../../features/json_patch/ class=md-nav__link> <span class=md-ellipsis> JSON Patch and Diff </span> </a> </li> <li class=md-nav__item> <a href=../../../features/merge_patch/ class=md-nav__link> <span class=md-ellipsis> JSON Merge Patch </span> </a> </li> <li class=md-nav__item> <a href=../../../features/modules/ class=md-nav__link> <span class=md-ellipsis> Modules </span> </a> </li> <li class=md-nav__item> <a href=../../../features/namespace/ class=md-nav__link> <span class=md-ellipsis> nlohmann Namespace </span> </a> </li> <li class=md-nav__item> <a href=../../../features/object_order/ class=md-nav__link> <span class=md-ellipsis> Object Order </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_14> <div class="md-nav__link md-nav__container"> <a href=../../../features/parsing/ class="md-nav__link "> <span class=md-ellipsis> Parsing </span> </a> <label class="md-nav__link " for=__nav_2_14 id=__nav_2_14_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_14_label aria-expanded=false> <label class=md-nav__title for=__nav_2_14> <span class="md-nav__icon md-icon"></span> Parsing </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/parsing/json_lines/ class=md-nav__link> <span class=md-ellipsis> JSON Lines </span> </a> </li> <li class=md-nav__item> <a href=../../../features/parsing/parse_exceptions/ class=md-nav__link> <span class=md-ellipsis> Parsing and Exceptions </span> </a> </li> <li class=md-nav__item> <a href=../../../features/parsing/parser_callbacks/ class=md-nav__link> <span class=md-ellipsis> Parser Callbacks </span> </a> </li> <li class=md-nav__item> <a href=../../../features/parsing/sax_interface/ class=md-nav__link> <span class=md-ellipsis> SAX Interface </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../../features/assertions/ class=md-nav__link> <span class=md-ellipsis> Runtime Assertions </span> </a> </li> <li class=md-nav__item> <a href=../../../features/enum_conversion/ class=md-nav__link> <span class=md-ellipsis> Specializing enum conversion </span> </a> </li> <li class=md-nav__item> <a href=../../../features/macros/ class=md-nav__link> <span class=md-ellipsis> Supported Macros </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_18> <div class="md-nav__link md-nav__container"> <a href=../../../features/types/ class="md-nav__link "> <span class=md-ellipsis> Types </span> </a> <label class="md-nav__link " for=__nav_2_18 id=__nav_2_18_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_18_label aria-expanded=false> <label class=md-nav__title for=__nav_2_18> <span class="md-nav__icon md-icon"></span> Types </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/types/number_handling/ class=md-nav__link> <span class=md-ellipsis> Number Handling </span> </a> </li> </ul> </nav> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_3> <div class="md-nav__link md-nav__container"> <a href=../../../integration/ class="md-nav__link "> <span class=md-ellipsis> Integration </span> </a> <label class="md-nav__link " for=__nav_3 id=__nav_3_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_3_label aria-expanded=false> <label class=md-nav__title for=__nav_3> <span class="md-nav__icon md-icon"></span> Integration </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../integration/migration_guide/ class=md-nav__link> <span class=md-ellipsis> Migration Guide </span> </a> </li> <li class=md-nav__item> <a href=../../../integration/cmake/ class=md-nav__link> <span class=md-ellipsis> CMake </span> </a> </li> <li class=md-nav__item> <a href=../../../integration/package_managers/ class=md-nav__link> <span class=md-ellipsis> Package Managers </span> </a> </li> <li class=md-nav__item> <a href=../../../integration/pkg-config/ class=md-nav__link> <span class=md-ellipsis> Pkg-config </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--active md-nav__item--section md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4 checked> <label class=md-nav__link for=__nav_4 id=__nav_4_label tabindex> <span class=md-ellipsis> API Documentation </span> <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_4_label aria-expanded=true> <label class=md-nav__title for=__nav_4> <span class="md-nav__icon md-icon"></span> API Documentation </label> <ul class=md-nav__list data-md-scrollfix> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_1> <div class="md-nav__link md-nav__container"> <a href=../../basic_json/ class="md-nav__link "> <span class=md-ellipsis> basic_json </span> </a> <label class="md-nav__link " for=__nav_4_1 id=__nav_4_1_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_1_label aria-expanded=false> <label class=md-nav__title for=__nav_4_1> <span class="md-nav__icon md-icon"></span> basic_json </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../basic_json/basic_json/ class=md-nav__link> <span class=md-ellipsis> (Constructor) </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/~basic_json/ class=md-nav__link> <span class=md-ellipsis> (Destructor) </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/accept/ class=md-nav__link> <span class=md-ellipsis> accept </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/array/ class=md-nav__link> <span class=md-ellipsis> array </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/array_t/ class=md-nav__link> <span class=md-ellipsis> array_t </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/at/ class=md-nav__link> <span class=md-ellipsis> at </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/back/ class=md-nav__link> <span class=md-ellipsis> back </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/begin/ class=md-nav__link> <span class=md-ellipsis> begin </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/binary/ class=md-nav__link> <span class=md-ellipsis> binary </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/binary_t/ class=md-nav__link> <span class=md-ellipsis> binary_t </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/boolean_t/ class=md-nav__link> <span class=md-ellipsis> boolean_t </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/cbegin/ class=md-nav__link> <span class=md-ellipsis> cbegin </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/cbor_tag_handler_t/ class=md-nav__link> <span class=md-ellipsis> cbor_tag_handler_t </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/cend/ class=md-nav__link> <span class=md-ellipsis> cend </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/clear/ class=md-nav__link> <span class=md-ellipsis> clear </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/contains/ class=md-nav__link> <span class=md-ellipsis> contains </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/count/ class=md-nav__link> <span class=md-ellipsis> count </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/crbegin/ class=md-nav__link> <span class=md-ellipsis> crbegin </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/crend/ class=md-nav__link> <span class=md-ellipsis> crend </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/default_object_comparator_t/ class=md-nav__link> <span class=md-ellipsis> default_object_comparator_t </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/diff/ class=md-nav__link> <span class=md-ellipsis> diff </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/dump/ class=md-nav__link> <span class=md-ellipsis> dump </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/emplace/ class=md-nav__link> <span class=md-ellipsis> emplace </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/emplace_back/ class=md-nav__link> <span class=md-ellipsis> emplace_back </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/empty/ class=md-nav__link> <span class=md-ellipsis> empty </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/end/ class=md-nav__link> <span class=md-ellipsis> end </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/end_pos/ class=md-nav__link> <span class=md-ellipsis> end_pos </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/erase/ class=md-nav__link> <span class=md-ellipsis> erase </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/error_handler_t/ class=md-nav__link> <span class=md-ellipsis> error_handler_t </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/exception/ class=md-nav__link> <span class=md-ellipsis> exception </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/find/ class=md-nav__link> <span class=md-ellipsis> find </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/flatten/ class=md-nav__link> <span class=md-ellipsis> flatten </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/from_bjdata/ class=md-nav__link> <span class=md-ellipsis> from_bjdata </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/from_bson/ class=md-nav__link> <span class=md-ellipsis> from_bson </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/from_cbor/ class=md-nav__link> <span class=md-ellipsis> from_cbor </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/from_msgpack/ class=md-nav__link> <span class=md-ellipsis> from_msgpack </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/from_ubjson/ class=md-nav__link> <span class=md-ellipsis> from_ubjson </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/front/ class=md-nav__link> <span class=md-ellipsis> front </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/get/ class=md-nav__link> <span class=md-ellipsis> get </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/get_allocator/ class=md-nav__link> <span class=md-ellipsis> get_allocator </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/get_binary/ class=md-nav__link> <span class=md-ellipsis> get_binary </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/get_ptr/ class=md-nav__link> <span class=md-ellipsis> get_ptr </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/get_ref/ class=md-nav__link> <span class=md-ellipsis> get_ref </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/get_to/ class=md-nav__link> <span class=md-ellipsis> get_to </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/std_hash/ class=md-nav__link> <span class=md-ellipsis> std::hash&lt;basic_json&gt; </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/input_format_t/ class=md-nav__link> <span class=md-ellipsis> input_format_t </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/insert/ class=md-nav__link> <span class=md-ellipsis> insert </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/invalid_iterator/ class=md-nav__link> <span class=md-ellipsis> invalid_iterator </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/is_array/ class=md-nav__link> <span class=md-ellipsis> is_array </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/is_binary/ class=md-nav__link> <span class=md-ellipsis> is_binary </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/is_boolean/ class=md-nav__link> <span class=md-ellipsis> is_boolean </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/is_discarded/ class=md-nav__link> <span class=md-ellipsis> is_discarded </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/is_null/ class=md-nav__link> <span class=md-ellipsis> is_null </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/is_number/ class=md-nav__link> <span class=md-ellipsis> is_number </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/is_number_float/ class=md-nav__link> <span class=md-ellipsis> is_number_float </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/is_number_integer/ class=md-nav__link> <span class=md-ellipsis> is_number_integer </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/is_number_unsigned/ class=md-nav__link> <span class=md-ellipsis> is_number_unsigned </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/is_object/ class=md-nav__link> <span class=md-ellipsis> is_object </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/is_primitive/ class=md-nav__link> <span class=md-ellipsis> is_primitive </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/is_string/ class=md-nav__link> <span class=md-ellipsis> is_string </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/is_structured/ class=md-nav__link> <span class=md-ellipsis> is_structured </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/items/ class=md-nav__link> <span class=md-ellipsis> items </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/json_base_class_t/ class=md-nav__link> <span class=md-ellipsis> json_base_class_t </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/json_serializer/ class=md-nav__link> <span class=md-ellipsis> json_serializer </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/max_size/ class=md-nav__link> <span class=md-ellipsis> max_size </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/meta/ class=md-nav__link> <span class=md-ellipsis> meta </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/merge_patch/ class=md-nav__link> <span class=md-ellipsis> merge_patch </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/number_float_t/ class=md-nav__link> <span class=md-ellipsis> number_float_t </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/number_integer_t/ class=md-nav__link> <span class=md-ellipsis> number_integer_t </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/number_unsigned_t/ class=md-nav__link> <span class=md-ellipsis> number_unsigned_t </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/object/ class=md-nav__link> <span class=md-ellipsis> object </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/object_comparator_t/ class=md-nav__link> <span class=md-ellipsis> object_comparator_t </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/object_t/ class=md-nav__link> <span class=md-ellipsis> object_t </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/operator_ValueType/ class=md-nav__link> <span class=md-ellipsis> operator ValueType </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/operator_value_t/ class=md-nav__link> <span class=md-ellipsis> operator value_t </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/operator%5B%5D/ class=md-nav__link> <span class=md-ellipsis> operator[] </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/operator%3D/ class=md-nav__link> <span class=md-ellipsis> operator= </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/operator%2B%3D/ class=md-nav__link> <span class=md-ellipsis> operator+= </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/operator_eq/ class=md-nav__link> <span class=md-ellipsis> operator== </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/operator_ne/ class=md-nav__link> <span class=md-ellipsis> operator!= </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/operator_lt/ class=md-nav__link> <span class=md-ellipsis> operator< </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/operator_gt/ class=md-nav__link> <span class=md-ellipsis> operator> </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/operator_le/ class=md-nav__link> <span class=md-ellipsis> operator<= </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/operator_ge/ class=md-nav__link> <span class=md-ellipsis> operator>= </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/operator_spaceship/ class=md-nav__link> <span class=md-ellipsis> operator<=> </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/out_of_range/ class=md-nav__link> <span class=md-ellipsis> out_of_range </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/other_error/ class=md-nav__link> <span class=md-ellipsis> other_error </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/parse/ class=md-nav__link> <span class=md-ellipsis> parse </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/parse_error/ class=md-nav__link> <span class=md-ellipsis> parse_error </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/parse_event_t/ class=md-nav__link> <span class=md-ellipsis> parse_event_t </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/parser_callback_t/ class=md-nav__link> <span class=md-ellipsis> parser_callback_t </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/patch/ class=md-nav__link> <span class=md-ellipsis> patch </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/patch_inplace/ class=md-nav__link> <span class=md-ellipsis> patch_inplace </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/push_back/ class=md-nav__link> <span class=md-ellipsis> push_back </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/rbegin/ class=md-nav__link> <span class=md-ellipsis> rbegin </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/rend/ class=md-nav__link> <span class=md-ellipsis> rend </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/sax_parse/ class=md-nav__link> <span class=md-ellipsis> sax_parse </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/size/ class=md-nav__link> <span class=md-ellipsis> size </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/start_pos/ class=md-nav__link> <span class=md-ellipsis> start_pos </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/string_t/ class=md-nav__link> <span class=md-ellipsis> string_t </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/swap/ class=md-nav__link> <span class=md-ellipsis> swap </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/std_swap/ class=md-nav__link> <span class=md-ellipsis> std::swap&lt;basic_json&gt; </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/to_bjdata/ class=md-nav__link> <span class=md-ellipsis> to_bjdata </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/to_bson/ class=md-nav__link> <span class=md-ellipsis> to_bson </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/to_cbor/ class=md-nav__link> <span class=md-ellipsis> to_cbor </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/to_msgpack/ class=md-nav__link> <span class=md-ellipsis> to_msgpack </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/to_string/ class=md-nav__link> <span class=md-ellipsis> to_string </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/to_ubjson/ class=md-nav__link> <span class=md-ellipsis> to_ubjson </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/type/ class=md-nav__link> <span class=md-ellipsis> type </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/type_error/ class=md-nav__link> <span class=md-ellipsis> type_error </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/type_name/ class=md-nav__link> <span class=md-ellipsis> type_name </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/unflatten/ class=md-nav__link> <span class=md-ellipsis> unflatten </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/update/ class=md-nav__link> <span class=md-ellipsis> update </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/value/ class=md-nav__link> <span class=md-ellipsis> value </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/value_t/ class=md-nav__link> <span class=md-ellipsis> value_t </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_2> <div class="md-nav__link md-nav__container"> <a href=../../byte_container_with_subtype/ class="md-nav__link "> <span class=md-ellipsis> byte_container_with_subtype </span> </a> <label class="md-nav__link " for=__nav_4_2 id=__nav_4_2_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_2_label aria-expanded=false> <label class=md-nav__title for=__nav_4_2> <span class="md-nav__icon md-icon"></span> byte_container_with_subtype </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../byte_container_with_subtype/byte_container_with_subtype/ class=md-nav__link> <span class=md-ellipsis> (constructor) </span> </a> </li> <li class=md-nav__item> <a href=../../byte_container_with_subtype/clear_subtype/ class=md-nav__link> <span class=md-ellipsis> clear_subtype </span> </a> </li> <li class=md-nav__item> <a href=../../byte_container_with_subtype/has_subtype/ class=md-nav__link> <span class=md-ellipsis> has_subtype </span> </a> </li> <li class=md-nav__item> <a href=../../byte_container_with_subtype/set_subtype/ class=md-nav__link> <span class=md-ellipsis> set_subtype </span> </a> </li> <li class=md-nav__item> <a href=../../byte_container_with_subtype/subtype/ class=md-nav__link> <span class=md-ellipsis> subtype </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_3> <div class="md-nav__link md-nav__container"> <a href=../../adl_serializer/ class="md-nav__link "> <span class=md-ellipsis> adl_serializer </span> </a> <label class="md-nav__link " for=__nav_4_3 id=__nav_4_3_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_3_label aria-expanded=false> <label class=md-nav__title for=__nav_4_3> <span class="md-nav__icon md-icon"></span> adl_serializer </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../adl_serializer/from_json/ class=md-nav__link> <span class=md-ellipsis> from_json </span> </a> </li> <li class=md-nav__item> <a href=../../adl_serializer/to_json/ class=md-nav__link> <span class=md-ellipsis> to_json </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../json/ class=md-nav__link> <span class=md-ellipsis> json </span> </a> </li> <li class="md-nav__item md-nav__item--active md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_5 checked> <div class="md-nav__link md-nav__container"> <a href=../ class="md-nav__link "> <span class=md-ellipsis> json_pointer </span> </a> <label class="md-nav__link " for=__nav_4_5 id=__nav_4_5_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_5_label aria-expanded=true> <label class=md-nav__title for=__nav_4_5> <span class="md-nav__icon md-icon"></span> json_pointer </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../json_pointer/ class=md-nav__link> <span class=md-ellipsis> (Constructor) </span> </a> </li> <li class=md-nav__item> <a href=../back/ class=md-nav__link> <span class=md-ellipsis> back </span> </a> </li> <li class=md-nav__item> <a href=../empty/ class=md-nav__link> <span class=md-ellipsis> empty </span> </a> </li> <li class=md-nav__item> <a href=../front/ class=md-nav__link> <span class=md-ellipsis> front </span> </a> </li> <li class=md-nav__item> <a href=../operator_string_t/ class=md-nav__link> <span class=md-ellipsis> operator string_t </span> </a> </li> <li class=md-nav__item> <a href=../operator_eq/ class=md-nav__link> <span class=md-ellipsis> operator== </span> </a> </li> <li class=md-nav__item> <a href=../operator_ne/ class=md-nav__link> <span class=md-ellipsis> operator!= </span> </a> </li> <li class=md-nav__item> <a href=../operator_slash/ class=md-nav__link> <span class=md-ellipsis> operator/ </span> </a> </li> <li class=md-nav__item> <a href=../operator_slasheq/ class=md-nav__link> <span class=md-ellipsis> operator/= </span> </a> </li> <li class="md-nav__item md-nav__item--active"> <input class="md-nav__toggle md-toggle" type=checkbox id=__toc> <label class="md-nav__link md-nav__link--active" for=__toc> <span class=md-ellipsis> parent_pointer </span> <span class="md-nav__icon md-icon"></span> </label> <a href=./ class="md-nav__link md-nav__link--active"> <span class=md-ellipsis> parent_pointer </span> </a> <nav class="md-nav md-nav--secondary" aria-label="Table of contents"> <label class=md-nav__title for=__toc> <span class="md-nav__icon md-icon"></span> Table of contents </label> <ul class=md-nav__list data-md-component=toc data-md-scrollfix> <li class=md-nav__item> <a href=#return-value class=md-nav__link> <span class=md-ellipsis> Return value </span> </a> </li> <li class=md-nav__item> <a href=#exception-safety class=md-nav__link> <span class=md-ellipsis> Exception safety </span> </a> </li> <li class=md-nav__item> <a href=#complexity class=md-nav__link> <span class=md-ellipsis> Complexity </span> </a> </li> <li class=md-nav__item> <a href=#examples class=md-nav__link> <span class=md-ellipsis> Examples </span> </a> </li> <li class=md-nav__item> <a href=#see-also class=md-nav__link> <span class=md-ellipsis> See also </span> </a> </li> <li class=md-nav__item> <a href=#version-history class=md-nav__link> <span class=md-ellipsis> Version history </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../pop_back/ class=md-nav__link> <span class=md-ellipsis> pop_back </span> </a> </li> <li class=md-nav__item> <a href=../pop_front/ class=md-nav__link> <span class=md-ellipsis> pop_front </span> </a> </li> <li class=md-nav__item> <a href=../push_back/ class=md-nav__link> <span class=md-ellipsis> push_back </span> </a> </li> <li class=md-nav__item> <a href=../push_front/ class=md-nav__link> <span class=md-ellipsis> push_front </span> </a> </li> <li class=md-nav__item> <a href=../string_t/ class=md-nav__link> <span class=md-ellipsis> string_t </span> </a> </li> <li class=md-nav__item> <a href=../to_string/ class=md-nav__link> <span class=md-ellipsis> to_string </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_6> <div class="md-nav__link md-nav__container"> <a href=../../json_sax/ class="md-nav__link "> <span class=md-ellipsis> json_sax </span> </a> <label class="md-nav__link " for=__nav_4_6 id=__nav_4_6_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_6_label aria-expanded=false> <label class=md-nav__title for=__nav_4_6> <span class="md-nav__icon md-icon"></span> json_sax </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../json_sax/binary/ class=md-nav__link> <span class=md-ellipsis> binary </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/boolean/ class=md-nav__link> <span class=md-ellipsis> boolean </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/end_array/ class=md-nav__link> <span class=md-ellipsis> end_array </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/end_object/ class=md-nav__link> <span class=md-ellipsis> end_object </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/key/ class=md-nav__link> <span class=md-ellipsis> key </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/null/ class=md-nav__link> <span class=md-ellipsis> null </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/number_float/ class=md-nav__link> <span class=md-ellipsis> number_float </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/number_integer/ class=md-nav__link> <span class=md-ellipsis> number_integer </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/number_unsigned/ class=md-nav__link> <span class=md-ellipsis> number_unsigned </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/parse_error/ class=md-nav__link> <span class=md-ellipsis> parse_error </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/start_array/ class=md-nav__link> <span class=md-ellipsis> start_array </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/start_object/ class=md-nav__link> <span class=md-ellipsis> start_object </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/string/ class=md-nav__link> <span class=md-ellipsis> string </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../operator_ltlt/ class=md-nav__link> <span class=md-ellipsis> operator<<(basic_json), operator<<(json_pointer) </span> </a> </li> <li class=md-nav__item> <a href=../../operator_gtgt/ class=md-nav__link> <span class=md-ellipsis> operator>>(basic_json) </span> </a> </li> <li class=md-nav__item> <a href=../../operator_literal_json/ class=md-nav__link> <span class=md-ellipsis> operator""_json </span> </a> </li> <li class=md-nav__item> <a href=../../operator_literal_json_pointer/ class=md-nav__link> <span class=md-ellipsis> operator""_json_pointer </span> </a> </li> <li class=md-nav__item> <a href=../../ordered_json/ class=md-nav__link> <span class=md-ellipsis> ordered_json </span> </a> </li> <li class=md-nav__item> <a href=../../ordered_map/ class=md-nav__link> <span class=md-ellipsis> ordered_map </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_13> <div class="md-nav__link md-nav__container"> <a href=../../macros/ class="md-nav__link "> <span class=md-ellipsis> macros </span> </a> <label class="md-nav__link " for=__nav_4_13 id=__nav_4_13_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_13_label aria-expanded=false> <label class=md-nav__title for=__nav_4_13> <span class="md-nav__icon md-icon"></span> macros </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../macros/json_assert/ class=md-nav__link> <span class=md-ellipsis> JSON_ASSERT </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_brace_init_copy_semantics/ class=md-nav__link> <span class=md-ellipsis> JSON_BRACE_INIT_COPY_SEMANTICS </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_throw_user/ class=md-nav__link> <span class=md-ellipsis> JSON_CATCH_USER, JSON_THROW_USER, JSON_TRY_USER </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_diagnostics/ class=md-nav__link> <span class=md-ellipsis> JSON_DIAGNOSTICS </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_diagnostic_positions/ class=md-nav__link> <span class=md-ellipsis> JSON_DIAGNOSTIC_POSITIONS </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_disable_enum_serialization/ class=md-nav__link> <span class=md-ellipsis> JSON_DISABLE_ENUM_SERIALIZATION </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_has_cpp_11/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_CPP_11, JSON_HAS_CPP_14, JSON_HAS_CPP_17, JSON_HAS_CPP_20 </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_has_filesystem/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_EXPERIMENTAL_FILESYSTEM, JSON_HAS_FILESYSTEM </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_has_ranges/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_RANGES </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_has_static_rtti/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_STATIC_RTTI </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_has_three_way_comparison/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_THREE_WAY_COMPARISON </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_noexception/ class=md-nav__link> <span class=md-ellipsis> JSON_NOEXCEPTION </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_no_io/ class=md-nav__link> <span class=md-ellipsis> JSON_NO_IO </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_skip_library_version_check/ class=md-nav__link> <span class=md-ellipsis> JSON_SKIP_LIBRARY_VERSION_CHECK </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_skip_unsupported_compiler_check/ class=md-nav__link> <span class=md-ellipsis> JSON_SKIP_UNSUPPORTED_COMPILER_CHECK </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_use_global_udls/ class=md-nav__link> <span class=md-ellipsis> JSON_USE_GLOBAL_UDLS </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_use_implicit_conversions/ class=md-nav__link> <span class=md-ellipsis> JSON_USE_IMPLICIT_CONVERSIONS </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_use_legacy_discarded_value_comparison/ class=md-nav__link> <span class=md-ellipsis> JSON_USE_LEGACY_DISCARDED_VALUE_COMPARISON </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_define_derived_type/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_ONLY_SERIALIZE, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_define_type_intrusive/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_TYPE_INTRUSIVE, NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_TYPE_INTRUSIVE_ONLY_SERIALIZE </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_define_type_non_intrusive/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_define_type_with_names/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_TYPE_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_namespace/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_NAMESPACE </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_namespace_begin/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_NAMESPACE_BEGIN, NLOHMANN_JSON_NAMESPACE_END </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_namespace_no_version/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_NAMESPACE_NO_VERSION </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_serialize_enum/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_SERIALIZE_ENUM </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_serialize_enum_strict/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_SERIALIZE_ENUM_STRICT </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_version_major/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_VERSION_MAJOR, NLOHMANN_JSON_VERSION_MINOR, NLOHMANN_JSON_VERSION_PATCH </span> </a> </li> </ul> </nav> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_5> <div class="md-nav__link md-nav__container"> <a href=../../../community/ class="md-nav__link "> <span class=md-ellipsis> Community </span> </a> <label class="md-nav__link " for=__nav_5 id=__nav_5_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_5_label aria-expanded=false> <label class=md-nav__title for=__nav_5> <span class="md-nav__icon md-icon"></span> Community </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../community/code_of_conduct/ class=md-nav__link> <span class=md-ellipsis> Code of Conduct </span> </a> </li> <li class=md-nav__item> <a href=../../../community/contribution_guidelines/ class=md-nav__link> <span class=md-ellipsis> Contribution Guidelines </span> </a> </li> <li class=md-nav__item> <a href=../../../community/quality_assurance/ class=md-nav__link> <span class=md-ellipsis> Quality assurance </span> </a> </li> <li class=md-nav__item> <a href=../../../community/governance/ class=md-nav__link> <span class=md-ellipsis> Governance </span> </a> </li> <li class=md-nav__item> <a href=../../../community/security_policy/ class=md-nav__link> <span class=md-ellipsis> Security Policy </span> </a> </li> </ul> </nav> </li> </ul> </nav> </div> </div> </div> <div class="md-sidebar md-sidebar--secondary" data-md-component=sidebar data-md-type=toc> <div class=md-sidebar__scrollwrap> <div class=md-sidebar__inner> <nav class="md-nav md-nav--secondary" aria-label="Table of contents"> <label class=md-nav__title for=__toc> <span class="md-nav__icon md-icon"></span> Table of contents </label> <ul class=md-nav__list data-md-component=toc data-md-scrollfix> <li class=md-nav__item> <a href=#return-value class=md-nav__link> <span class=md-ellipsis> Return value </span> </a> </li> <li class=md-nav__item> <a href=#exception-safety class=md-nav__link> <span class=md-ellipsis> Exception safety </span> </a> </li> <li class=md-nav__item> <a href=#complexity class=md-nav__link> <span class=md-ellipsis> Complexity </span> </a> </li> <li class=md-nav__item> <a href=#examples class=md-nav__link> <span class=md-ellipsis> Examples </span> </a> </li> <li class=md-nav__item> <a href=#see-also class=md-nav__link> <span class=md-ellipsis> See also </span> </a> </li> <li class=md-nav__item> <a href=#version-history class=md-nav__link> <span class=md-ellipsis> Version history </span> </a> </li> </ul> </nav> </div> </div> </div> <div class=md-content data-md-component=content> <article class="md-content__inner md-typeset"> <a href="https://github.com/nlohmann/json/edit/develop/docs/mkdocs/docs/api/json_pointer/parent_pointer.md" title="Edit this page" class="md-content__button md-icon" rel="edit"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M10 20H6V4h7v5h5v3.1l2-2V8l-6-6H6c-1.1 0-2 .9-2 2v16c0 1.1.9 2 2 2h4zm10.2-7c.1 0 .3.1.4.2l1.3 1.3c.2.2.2.6 0 .8l-1 1-2.1-2.1 1-1c.1-.1.2-.2.4-.2m0 3.9L14.1 23H12v-2.1l6.1-6.1z"/></svg> </a> <a href="https://github.com/nlohmann/json/raw/develop/docs/mkdocs/docs/api/json_pointer/parent_pointer.md" title="View source of this page" class="md-content__button md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M17 18c.56 0 1 .44 1 1s-.44 1-1 1-1-.44-1-1 .44-1 1-1m0-3c-2.73 0-5.06 1.66-6 4 .94 2.34 3.27 4 6 4s5.06-1.66 6-4c-.94-2.34-3.27-4-6-4m0 6.5a2.5 2.5 0 0 1-2.5-2.5 2.5 2.5 0 0 1 2.5-2.5 2.5 2.5 0 0 1 2.5 2.5 2.5 2.5 0 0 1-2.5 2.5M9.27 20H6V4h7v5h5v4.07c.7.08 1.36.25 2 .49V8l-6-6H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h4.5a8.2 8.2 0 0 1-1.23-2"/></svg> </a> <h1 id=nlohmannjson_pointerparent_pointer><small>nlohmann::json_pointer::</small>parent_pointer<a class=headerlink href=#nlohmannjson_pointerparent_pointer title="Permanent link">&para;</a></h1> <div class=highlight><pre><span></span><code><span class=n>json_pointer</span><span class=w> </span><span class=nf>parent_pointer</span><span class=p>()</span><span class=w> </span><span class=k>const</span><span class=p>;</span>
+</code></pre></div> <p>Returns the parent of this <abbr title="JavaScript Object Notation">JSON</abbr> pointer.</p> <h2 id=return-value>Return value<a class=headerlink href=#return-value title="Permanent link">&para;</a></h2> <p>Parent of this <abbr title="JavaScript Object Notation">JSON</abbr> pointer; in case this <abbr title="JavaScript Object Notation">JSON</abbr> pointer is the root, the root itself is returned.</p> <h2 id=exception-safety>Exception safety<a class=headerlink href=#exception-safety title="Permanent link">&para;</a></h2> <p>No-throw guarantee: this function never throws exceptions.</p> <h2 id=complexity>Complexity<a class=headerlink href=#complexity title="Permanent link">&para;</a></h2> <p>Linear in the length of the <abbr title="JavaScript Object Notation">JSON</abbr> pointer.</p> <h2 id=examples>Examples<a class=headerlink href=#examples title="Permanent link">&para;</a></h2> <details class=example> <summary>Example</summary> <p>The example shows the result of <code>parent_pointer</code> for different <abbr title="JavaScript Object Notation">JSON</abbr> Pointers.</p> <div class=highlight><pre><span></span><code><span class=cp>#include</span><span class=w> </span><span class=cpf>&lt;iostream&gt;</span>
 <span class=cp>#include</span><span class=w> </span><span class=cpf>&lt;nlohmann/json.hpp&gt;</span>
 
 <span class=k>using</span><span class=w> </span><span class=n>json</span><span class=w> </span><span class=o>=</span><span class=w> </span><span class=n>nlohmann</span><span class=o>::</span><span class=n>json</span><span class=p>;</span>
@@ -20,4 +20,4 @@
 </code></pre></div> <p>Output:</p> <div class=highlight><pre><span></span><code><span class=err>pare</span><span class=kc>nt</span><span class=w> </span><span class=err>o</span><span class=kc>f</span><span class=w> </span><span class=s2>&quot;&quot;</span><span class=w> </span><span class=err>is</span><span class=w> </span><span class=s2>&quot;&quot;</span>
 <span class=err>pare</span><span class=kc>nt</span><span class=w> </span><span class=err>o</span><span class=kc>f</span><span class=w> </span><span class=s2>&quot;/foo&quot;</span><span class=w> </span><span class=err>is</span><span class=w> </span><span class=s2>&quot;&quot;</span>
 <span class=err>pare</span><span class=kc>nt</span><span class=w> </span><span class=err>o</span><span class=kc>f</span><span class=w> </span><span class=s2>&quot;/foo/0&quot;</span><span class=w> </span><span class=err>is</span><span class=w> </span><span class=s2>&quot;/foo&quot;</span>
-</code></pre></div> </details> <h2 id=version-history>Version history<a class=headerlink href=#version-history title="Permanent link">&para;</a></h2> <p>Added in version 3.6.0.</p> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 23, 2026 11:16:18 UTC">June 23, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
+</code></pre></div> </details> <h2 id=see-also>See also<a class=headerlink href=#see-also title="Permanent link">&para;</a></h2> <ul> <li><a href=../pop_back/ >pop_back</a> remove the last reference token</li> <li><a href=../back/ >back</a> return the last reference token</li> </ul> <h2 id=version-history>Version history<a class=headerlink href=#version-history title="Permanent link">&para;</a></h2> <p>Added in version 3.6.0.</p> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 29, 2026 20:15:18 UTC">June 29, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
diff --git a/api/json_pointer/pop_back/index.html b/api/json_pointer/pop_back/index.html
index 7a10cbf..2545f07 100644
--- a/api/json_pointer/pop_back/index.html
+++ b/api/json_pointer/pop_back/index.html
@@ -24,4 +24,4 @@
 <span class=s2>&quot;/foo/bar&quot;</span>
 <span class=s2>&quot;/foo&quot;</span>
 <span class=s2>&quot;&quot;</span>
-</code></pre></div> </details> <h2 id=version-history>Version history<a class=headerlink href=#version-history title="Permanent link">&para;</a></h2> <p>Added in version 3.6.0.</p> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 23, 2026 11:16:18 UTC">June 23, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
+</code></pre></div> </details> <h2 id=version-history>Version history<a class=headerlink href=#version-history title="Permanent link">&para;</a></h2> <p>Added in version 3.6.0.</p> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 29, 2026 20:15:18 UTC">June 29, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
diff --git a/api/json_pointer/pop_front/index.html b/api/json_pointer/pop_front/index.html
index 91b9ef2..9a819ef 100644
--- a/api/json_pointer/pop_front/index.html
+++ b/api/json_pointer/pop_front/index.html
@@ -24,4 +24,4 @@
 <span class=s2>&quot;/bar/baz&quot;</span>
 <span class=s2>&quot;/baz&quot;</span>
 <span class=s2>&quot;&quot;</span>
-</code></pre></div> </details> <h2 id=version-history>Version history<a class=headerlink href=#version-history title="Permanent link">&para;</a></h2> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 23, 2026 11:16:18 UTC">June 23, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
+</code></pre></div> </details> <h2 id=version-history>Version history<a class=headerlink href=#version-history title="Permanent link">&para;</a></h2> <ul> <li>Added in version 3.12.x.</li> </ul> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 29, 2026 20:15:18 UTC">June 29, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
diff --git a/api/json_pointer/push_back/index.html b/api/json_pointer/push_back/index.html
index 1539b18..48c3044 100644
--- a/api/json_pointer/push_back/index.html
+++ b/api/json_pointer/push_back/index.html
@@ -26,4 +26,4 @@
 <span class=s2>&quot;/foo&quot;</span>
 <span class=s2>&quot;/foo/0&quot;</span>
 <span class=s2>&quot;/foo/0/bar&quot;</span>
-</code></pre></div> </details> <h2 id=version-history>Version history<a class=headerlink href=#version-history title="Permanent link">&para;</a></h2> <ul> <li>Added in version 3.6.0.</li> <li>Changed type of <code>token</code> to <code>string_t</code> in version 3.11.0.</li> </ul> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 23, 2026 11:16:18 UTC">June 23, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
+</code></pre></div> </details> <h2 id=version-history>Version history<a class=headerlink href=#version-history title="Permanent link">&para;</a></h2> <ul> <li>Added in version 3.6.0.</li> <li>Changed type of <code>token</code> to <code>string_t</code> in version 3.11.0.</li> </ul> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 29, 2026 20:15:18 UTC">June 29, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
diff --git a/api/json_pointer/push_front/index.html b/api/json_pointer/push_front/index.html
index 907b9c7..5e4b4a0 100644
--- a/api/json_pointer/push_front/index.html
+++ b/api/json_pointer/push_front/index.html
@@ -26,4 +26,4 @@
 <span class=s2>&quot;/foo&quot;</span>
 <span class=s2>&quot;/0/foo&quot;</span>
 <span class=s2>&quot;/bar/0/foo&quot;</span>
-</code></pre></div> </details> <h2 id=version-history>Version history<a class=headerlink href=#version-history title="Permanent link">&para;</a></h2> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 23, 2026 11:16:18 UTC">June 23, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
+</code></pre></div> </details> <h2 id=version-history>Version history<a class=headerlink href=#version-history title="Permanent link">&para;</a></h2> <ul> <li>Added in version 3.12.x.</li> </ul> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 29, 2026 20:15:18 UTC">June 29, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
diff --git a/api/json_pointer/string_t/index.html b/api/json_pointer/string_t/index.html
index 893007a..fb1cc66 100644
--- a/api/json_pointer/string_t/index.html
+++ b/api/json_pointer/string_t/index.html
@@ -14,4 +14,4 @@
 <span class=p>}</span>
 </code></pre></div> <p>Output:</p> <div class=highlight><pre><span></span><code><span class=err>This</span><span class=w> </span><span class=err>is</span><span class=w> </span><span class=err>a</span><span class=w> </span><span class=err>s</span><span class=kc>tr</span><span class=err>i</span><span class=kc>n</span><span class=err>g.</span>
 <span class=kc>true</span>
-</code></pre></div> </details> <h2 id=version-history>Version history<a class=headerlink href=#version-history title="Permanent link">&para;</a></h2> <ul> <li>Added in version 3.11.0.</li> </ul> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 23, 2026 11:16:18 UTC">June 23, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
+</code></pre></div> </details> <h2 id=version-history>Version history<a class=headerlink href=#version-history title="Permanent link">&para;</a></h2> <ul> <li>Added in version 3.11.0.</li> </ul> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 29, 2026 20:15:18 UTC">June 29, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
diff --git a/api/json_pointer/to_string/index.html b/api/json_pointer/to_string/index.html
index f74277d..8b76edb 100644
--- a/api/json_pointer/to_string/index.html
+++ b/api/json_pointer/to_string/index.html
@@ -46,4 +46,4 @@
 <span class=s2>&quot;/k&quot;</span><span class=err>l</span><span class=s2>&quot;</span>
 <span class=s2>&quot;</span><span class=err>/</span><span class=w> </span><span class=s2>&quot;</span>
 <span class=s2>&quot;</span><span class=err>/m~</span><span class=mi>0</span><span class=kc>n</span><span class=err>&quot;</span>
-</code></pre></div> </details> <h2 id=version-history>Version history<a class=headerlink href=#version-history title="Permanent link">&para;</a></h2> <ul> <li>Since version 2.0.0.</li> <li>Changed return type to <code>string_t</code> in version 3.11.0.</li> </ul> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 23, 2026 11:16:18 UTC">June 23, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
+</code></pre></div> </details> <h2 id=version-history>Version history<a class=headerlink href=#version-history title="Permanent link">&para;</a></h2> <ul> <li>Since version 2.0.0.</li> <li>Changed return type to <code>string_t</code> in version 3.11.0.</li> </ul> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 29, 2026 20:15:18 UTC">June 29, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
diff --git a/api/json_sax/binary/index.html b/api/json_sax/binary/index.html
index 2f02429..c96ba3f 100644
--- a/api/json_sax/binary/index.html
+++ b/api/json_sax/binary/index.html
@@ -116,4 +116,4 @@
 </code></pre></div> <p>Output:</p> <div class=highlight><pre><span></span><code><span class=err>bi</span><span class=kc>nar</span><span class=err>y(val=</span><span class=p>[</span><span class=err>...</span><span class=p>]</span><span class=err>)</span>
 
 <span class=err>resul</span><span class=kc>t</span><span class=p>:</span><span class=w> </span><span class=kc>true</span>
-</code></pre></div> </details> <h2 id=version-history>Version history<a class=headerlink href=#version-history title="Permanent link">&para;</a></h2> <ul> <li>Added in version 3.8.0.</li> </ul> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 23, 2026 11:16:18 UTC">June 23, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
+</code></pre></div> </details> <h2 id=version-history>Version history<a class=headerlink href=#version-history title="Permanent link">&para;</a></h2> <ul> <li>Added in version 3.8.0.</li> </ul> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 29, 2026 20:15:18 UTC">June 29, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
diff --git a/api/json_sax/boolean/index.html b/api/json_sax/boolean/index.html
index 869a5a5..072905f 100644
--- a/api/json_sax/boolean/index.html
+++ b/api/json_sax/boolean/index.html
@@ -167,4 +167,4 @@
 <span class=w>            </span><span class=err>ex=</span><span class=p>[</span><span class=err>jso</span><span class=kc>n</span><span class=err>.excep</span><span class=kc>t</span><span class=err>io</span><span class=kc>n</span><span class=err>.parse_error.</span><span class=mi>101</span><span class=p>]</span><span class=w> </span><span class=err>parse</span><span class=w> </span><span class=err>error</span><span class=w> </span><span class=err>a</span><span class=kc>t</span><span class=w> </span><span class=err>li</span><span class=kc>ne</span><span class=w> </span><span class=mi>17</span><span class=p>,</span><span class=w> </span><span class=err>colum</span><span class=kc>n</span><span class=w> </span><span class=mi>6</span><span class=p>:</span><span class=w> </span><span class=err>sy</span><span class=kc>nta</span><span class=err>x</span><span class=w> </span><span class=err>error</span><span class=w> </span><span class=err>while</span><span class=w> </span><span class=err>parsi</span><span class=kc>n</span><span class=err>g</span><span class=w> </span><span class=err>value</span><span class=w> </span><span class=mi>-</span><span class=w> </span><span class=err>u</span><span class=kc>ne</span><span class=err>xpec</span><span class=kc>te</span><span class=err>d</span><span class=w> </span><span class=err>&#39;</span><span class=p>]</span><span class=err>&#39;;</span><span class=w> </span><span class=err>expec</span><span class=kc>te</span><span class=err>d</span><span class=w> </span><span class=err>e</span><span class=kc>n</span><span class=err>d</span><span class=w> </span><span class=err>o</span><span class=kc>f</span><span class=w> </span><span class=err>i</span><span class=kc>n</span><span class=err>pu</span><span class=kc>t</span><span class=err>)</span>
 
 <span class=err>resul</span><span class=kc>t</span><span class=p>:</span><span class=w> </span><span class=kc>false</span>
-</code></pre></div> </details> <h2 id=version-history>Version history<a class=headerlink href=#version-history title="Permanent link">&para;</a></h2> <ul> <li>Added in version 3.2.0.</li> </ul> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 23, 2026 11:16:18 UTC">June 23, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
+</code></pre></div> </details> <h2 id=version-history>Version history<a class=headerlink href=#version-history title="Permanent link">&para;</a></h2> <ul> <li>Added in version 3.2.0.</li> </ul> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 29, 2026 20:15:18 UTC">June 29, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
diff --git a/api/json_sax/end_array/index.html b/api/json_sax/end_array/index.html
index 63c5312..85ebb53 100644
--- a/api/json_sax/end_array/index.html
+++ b/api/json_sax/end_array/index.html
@@ -167,4 +167,4 @@
 <span class=w>            </span><span class=err>ex=</span><span class=p>[</span><span class=err>jso</span><span class=kc>n</span><span class=err>.excep</span><span class=kc>t</span><span class=err>io</span><span class=kc>n</span><span class=err>.parse_error.</span><span class=mi>101</span><span class=p>]</span><span class=w> </span><span class=err>parse</span><span class=w> </span><span class=err>error</span><span class=w> </span><span class=err>a</span><span class=kc>t</span><span class=w> </span><span class=err>li</span><span class=kc>ne</span><span class=w> </span><span class=mi>17</span><span class=p>,</span><span class=w> </span><span class=err>colum</span><span class=kc>n</span><span class=w> </span><span class=mi>6</span><span class=p>:</span><span class=w> </span><span class=err>sy</span><span class=kc>nta</span><span class=err>x</span><span class=w> </span><span class=err>error</span><span class=w> </span><span class=err>while</span><span class=w> </span><span class=err>parsi</span><span class=kc>n</span><span class=err>g</span><span class=w> </span><span class=err>value</span><span class=w> </span><span class=mi>-</span><span class=w> </span><span class=err>u</span><span class=kc>ne</span><span class=err>xpec</span><span class=kc>te</span><span class=err>d</span><span class=w> </span><span class=err>&#39;</span><span class=p>]</span><span class=err>&#39;;</span><span class=w> </span><span class=err>expec</span><span class=kc>te</span><span class=err>d</span><span class=w> </span><span class=err>e</span><span class=kc>n</span><span class=err>d</span><span class=w> </span><span class=err>o</span><span class=kc>f</span><span class=w> </span><span class=err>i</span><span class=kc>n</span><span class=err>pu</span><span class=kc>t</span><span class=err>)</span>
 
 <span class=err>resul</span><span class=kc>t</span><span class=p>:</span><span class=w> </span><span class=kc>false</span>
-</code></pre></div> </details> <h2 id=version-history>Version history<a class=headerlink href=#version-history title="Permanent link">&para;</a></h2> <ul> <li>Added in version 3.2.0.</li> </ul> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 23, 2026 11:16:18 UTC">June 23, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
+</code></pre></div> </details> <h2 id=version-history>Version history<a class=headerlink href=#version-history title="Permanent link">&para;</a></h2> <ul> <li>Added in version 3.2.0.</li> </ul> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 29, 2026 20:15:18 UTC">June 29, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
diff --git a/api/json_sax/end_object/index.html b/api/json_sax/end_object/index.html
index 30289a5..e9df10d 100644
--- a/api/json_sax/end_object/index.html
+++ b/api/json_sax/end_object/index.html
@@ -167,4 +167,4 @@
 <span class=w>            </span><span class=err>ex=</span><span class=p>[</span><span class=err>jso</span><span class=kc>n</span><span class=err>.excep</span><span class=kc>t</span><span class=err>io</span><span class=kc>n</span><span class=err>.parse_error.</span><span class=mi>101</span><span class=p>]</span><span class=w> </span><span class=err>parse</span><span class=w> </span><span class=err>error</span><span class=w> </span><span class=err>a</span><span class=kc>t</span><span class=w> </span><span class=err>li</span><span class=kc>ne</span><span class=w> </span><span class=mi>17</span><span class=p>,</span><span class=w> </span><span class=err>colum</span><span class=kc>n</span><span class=w> </span><span class=mi>6</span><span class=p>:</span><span class=w> </span><span class=err>sy</span><span class=kc>nta</span><span class=err>x</span><span class=w> </span><span class=err>error</span><span class=w> </span><span class=err>while</span><span class=w> </span><span class=err>parsi</span><span class=kc>n</span><span class=err>g</span><span class=w> </span><span class=err>value</span><span class=w> </span><span class=mi>-</span><span class=w> </span><span class=err>u</span><span class=kc>ne</span><span class=err>xpec</span><span class=kc>te</span><span class=err>d</span><span class=w> </span><span class=err>&#39;</span><span class=p>]</span><span class=err>&#39;;</span><span class=w> </span><span class=err>expec</span><span class=kc>te</span><span class=err>d</span><span class=w> </span><span class=err>e</span><span class=kc>n</span><span class=err>d</span><span class=w> </span><span class=err>o</span><span class=kc>f</span><span class=w> </span><span class=err>i</span><span class=kc>n</span><span class=err>pu</span><span class=kc>t</span><span class=err>)</span>
 
 <span class=err>resul</span><span class=kc>t</span><span class=p>:</span><span class=w> </span><span class=kc>false</span>
-</code></pre></div> </details> <h2 id=version-history>Version history<a class=headerlink href=#version-history title="Permanent link">&para;</a></h2> <ul> <li>Added in version 3.2.0.</li> </ul> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 23, 2026 11:16:18 UTC">June 23, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
+</code></pre></div> </details> <h2 id=version-history>Version history<a class=headerlink href=#version-history title="Permanent link">&para;</a></h2> <ul> <li>Added in version 3.2.0.</li> </ul> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 29, 2026 20:15:18 UTC">June 29, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
diff --git a/api/json_sax/index.html b/api/json_sax/index.html
index e3465d4..dd3d0e3 100644
--- a/api/json_sax/index.html
+++ b/api/json_sax/index.html
@@ -1,3 +1,3 @@
 <!doctype html><html lang=en class=no-js> <head><meta charset=utf-8><meta name=viewport content="width=device-width,initial-scale=1"><meta name=author content="Niels Lohmann"><link href="https://json.nlohmann.me/api/json_sax/" rel="canonical"><link href=../json_pointer/to_string/ rel=prev><link href=binary/ rel=next><link rel=icon href=../../assets/images/favicon.png><meta name=generator content="mkdocs-1.6.1, mkdocs-material-9.7.6"><title>Overview - JSON for Modern C++</title><link rel=stylesheet href=../../assets/stylesheets/main.484c7ddc.min.css><link rel=stylesheet href=../../assets/stylesheets/palette.ab4e12ef.min.css><link rel="stylesheet" href="../../assets/external/fonts.googleapis.com/css.61a430c9.css"><style>:root{--md-text-font:"Roboto";--md-code-font:"JetBrains Mono"}</style><link rel=stylesheet href=../../css/custom.css><script>__md_scope=new URL("../..",location),__md_hash=e=>[...e].reduce(((e,_)=>(e<<5)-e+_.charCodeAt(0)),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script></head> <body dir=ltr data-md-color-scheme=default data-md-color-primary=indigo data-md-color-accent=indigo> <input class=md-toggle data-md-toggle=drawer type=checkbox id=__drawer autocomplete=off> <input class=md-toggle data-md-toggle=search type=checkbox id=__search autocomplete=off> <label class=md-overlay for=__drawer></label> <div data-md-component=skip> <a href=#nlohmannjson_sax class=md-skip> Skip to content </a> </div> <div data-md-component=announce> </div> <header class=md-header data-md-component=header> <nav class="md-header__inner md-grid" aria-label=Header> <a href=../.. title="JSON for Modern C++" class="md-header__button md-logo" aria-label="JSON for Modern C++" data-md-component=logo> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54"/></svg> </a> <label class="md-header__button md-icon" for=__drawer> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M3 6h18v2H3zm0 5h18v2H3zm0 5h18v2H3z"/></svg> </label> <div class=md-header__title data-md-component=header-title> <div class=md-header__ellipsis> <div class=md-header__topic> <span class=md-ellipsis> JSON for Modern C++ </span> </div> <div class=md-header__topic data-md-component=header-topic> <span class=md-ellipsis> Overview </span> </div> </div> </div> <form class=md-header__option data-md-component=palette> <input class=md-option data-md-color-media="(prefers-color-scheme: light)" data-md-color-scheme=default data-md-color-primary=indigo data-md-color-accent=indigo aria-label="Switch to dark mode" type=radio name=__palette id=__palette_0> <label class="md-header__button md-icon" title="Switch to dark mode" for=__palette_1 hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a4 4 0 0 0-4 4 4 4 0 0 0 4 4 4 4 0 0 0 4-4 4 4 0 0 0-4-4m0 10a6 6 0 0 1-6-6 6 6 0 0 1 6-6 6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12z"/></svg> </label> <input class=md-option data-md-color-media="(prefers-color-scheme: dark)" data-md-color-scheme=slate data-md-color-primary=indigo data-md-color-accent=indigo aria-label="Switch to light mode" type=radio name=__palette id=__palette_1> <label class="md-header__button md-icon" title="Switch to light mode" for=__palette_0 hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 18c-.89 0-1.74-.2-2.5-.55C11.56 16.5 13 14.42 13 12s-1.44-4.5-3.5-5.45C10.26 6.2 11.11 6 12 6a6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12z"/></svg> </label> </form> <script>var palette=__md_get("__palette");if(palette&&palette.color){if("(prefers-color-scheme)"===palette.color.media){var media=matchMedia("(prefers-color-scheme: light)"),input=document.querySelector(media.matches?"[data-md-color-media='(prefers-color-scheme: light)']":"[data-md-color-media='(prefers-color-scheme: dark)']");palette.color.media=input.getAttribute("data-md-color-media"),palette.color.scheme=input.getAttribute("data-md-color-scheme"),palette.color.primary=input.getAttribute("data-md-color-primary"),palette.color.accent=input.getAttribute("data-md-color-accent")}for(var[key,value]of Object.entries(palette.color))document.body.setAttribute("data-md-color-"+key,value)}</script> <label class="md-header__button md-icon" for=__search> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg> </label> <div class=md-search data-md-component=search role=dialog> <label class=md-search__overlay for=__search></label> <div class=md-search__inner role=search> <form class=md-search__form name=search> <input type=text class=md-search__input name=query aria-label=Search placeholder=Search autocapitalize=off autocorrect=off autocomplete=off spellcheck=false data-md-component=search-query required> <label class="md-search__icon md-icon" for=__search> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11z"/></svg> </label> <nav class=md-search__options aria-label=Search> <button type=reset class="md-search__icon md-icon" title=Clear aria-label=Clear tabindex=-1> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z"/></svg> </button> </nav> </form> <div class=md-search__output> <div class=md-search__scrollwrap tabindex=0 data-md-scrollfix> <div class=md-search-result data-md-component=search-result> <div class=md-search-result__meta> Initializing search </div> <ol class=md-search-result__list role=presentation></ol> </div> </div> </div> </div> </div> <div class=md-header__source> <a href="https://github.com/nlohmann/json" title="Go to repository" class="md-source" data-md-component="source"> <div class="md-source__icon md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </div> <div class=md-source__repository> nlohmann/json </div> </a> </div> </nav> </header> <div class=md-container data-md-component=container> <nav class=md-tabs aria-label=Tabs data-md-component=tabs> <div class=md-grid> <ul class=md-tabs__list> <li class=md-tabs__item> <a href=../.. class=md-tabs__link> Home </a> </li> <li class=md-tabs__item> <a href=../../features/arbitrary_types/ class=md-tabs__link> Features </a> </li> <li class=md-tabs__item> <a href=../../integration/ class=md-tabs__link> Integration </a> </li> <li class="md-tabs__item md-tabs__item--active"> <a href=../basic_json/ class=md-tabs__link> API Documentation </a> </li> <li class=md-tabs__item> <a href=../../community/ class=md-tabs__link> Community </a> </li> </ul> </div> </nav> <main class=md-main data-md-component=main> <div class="md-main__inner md-grid"> <div class="md-sidebar md-sidebar--primary" data-md-component=sidebar data-md-type=navigation> <div class=md-sidebar__scrollwrap> <div class=md-sidebar__inner> <nav class="md-nav md-nav--primary md-nav--lifted" aria-label=Navigation data-md-level=0> <label class=md-nav__title for=__drawer> <a href=../.. title="JSON for Modern C++" class="md-nav__button md-logo" aria-label="JSON for Modern C++" data-md-component=logo> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54"/></svg> </a> JSON for Modern C++ </label> <div class=md-nav__source> <a href="https://github.com/nlohmann/json" title="Go to repository" class="md-source" data-md-component="source"> <div class="md-source__icon md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </div> <div class=md-source__repository> nlohmann/json </div> </a> </div> <ul class=md-nav__list data-md-scrollfix> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_1> <div class="md-nav__link md-nav__container"> <a href=../.. class="md-nav__link "> <span class=md-ellipsis> Home </span> </a> <label class="md-nav__link " for=__nav_1 id=__nav_1_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_1_label aria-expanded=false> <label class=md-nav__title for=__nav_1> <span class="md-nav__icon md-icon"></span> Home </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../home/license/ class=md-nav__link> <span class=md-ellipsis> License </span> </a> </li> <li class=md-nav__item> <a href=../../home/faq/ class=md-nav__link> <span class=md-ellipsis> FAQ </span> </a> </li> <li class=md-nav__item> <a href=../../home/exceptions/ class=md-nav__link> <span class=md-ellipsis> Exceptions </span> </a> </li> <li class=md-nav__item> <a href=../../home/releases/ class=md-nav__link> <span class=md-ellipsis> Releases </span> </a> </li> <li class=md-nav__item> <a href=../../home/design_goals/ class=md-nav__link> <span class=md-ellipsis> Design goals </span> </a> </li> <li class=md-nav__item> <a href=../../home/architecture/ class=md-nav__link> <span class=md-ellipsis> Architecture </span> </a> </li> <li class=md-nav__item> <a href=../../home/customers/ class=md-nav__link> <span class=md-ellipsis> Customers </span> </a> </li> <li class=md-nav__item> <a href=../../home/sponsors/ class=md-nav__link> <span class=md-ellipsis> Sponsors </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2> <label class=md-nav__link for=__nav_2 id=__nav_2_label tabindex=0> <span class=md-ellipsis> Features </span> <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_2_label aria-expanded=false> <label class=md-nav__title for=__nav_2> <span class="md-nav__icon md-icon"></span> Features </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../features/arbitrary_types/ class=md-nav__link> <span class=md-ellipsis> Arbitrary Type Conversions </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_2> <div class="md-nav__link md-nav__container"> <a href=../../features/binary_formats/ class="md-nav__link "> <span class=md-ellipsis> Binary Formats </span> </a> <label class="md-nav__link " for=__nav_2_2 id=__nav_2_2_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_2_label aria-expanded=false> <label class=md-nav__title for=__nav_2_2> <span class="md-nav__icon md-icon"></span> Binary Formats </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../features/binary_formats/bjdata/ class=md-nav__link> <span class=md-ellipsis> BJData </span> </a> </li> <li class=md-nav__item> <a href=../../features/binary_formats/bson/ class=md-nav__link> <span class=md-ellipsis> BSON </span> </a> </li> <li class=md-nav__item> <a href=../../features/binary_formats/cbor/ class=md-nav__link> <span class=md-ellipsis> CBOR </span> </a> </li> <li class=md-nav__item> <a href=../../features/binary_formats/messagepack/ class=md-nav__link> <span class=md-ellipsis> MessagePack </span> </a> </li> <li class=md-nav__item> <a href=../../features/binary_formats/ubjson/ class=md-nav__link> <span class=md-ellipsis> UBJSON </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../features/binary_values/ class=md-nav__link> <span class=md-ellipsis> Binary Values </span> </a> </li> <li class=md-nav__item> <a href=../../features/comments/ class=md-nav__link> <span class=md-ellipsis> Comments </span> </a> </li> <li class=md-nav__item> <a href=../../features/trailing_commas/ class=md-nav__link> <span class=md-ellipsis> Trailing Commas </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_6> <div class="md-nav__link md-nav__container"> <a href=../../features/element_access/ class="md-nav__link "> <span class=md-ellipsis> Element Access </span> </a> <label class="md-nav__link " for=__nav_2_6 id=__nav_2_6_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_6_label aria-expanded=false> <label class=md-nav__title for=__nav_2_6> <span class="md-nav__icon md-icon"></span> Element Access </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../features/element_access/unchecked_access/ class=md-nav__link> <span class=md-ellipsis> Unchecked access: operator[] </span> </a> </li> <li class=md-nav__item> <a href=../../features/element_access/checked_access/ class=md-nav__link> <span class=md-ellipsis> Checked access: at </span> </a> </li> <li class=md-nav__item> <a href=../../features/element_access/default_value/ class=md-nav__link> <span class=md-ellipsis> Access with default value: value </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../features/iterators/ class=md-nav__link> <span class=md-ellipsis> Iterators </span> </a> </li> <li class=md-nav__item> <a href=../../features/json_pointer/ class=md-nav__link> <span class=md-ellipsis> JSON Pointer </span> </a> </li> <li class=md-nav__item> <a href=../../features/json_patch/ class=md-nav__link> <span class=md-ellipsis> JSON Patch and Diff </span> </a> </li> <li class=md-nav__item> <a href=../../features/merge_patch/ class=md-nav__link> <span class=md-ellipsis> JSON Merge Patch </span> </a> </li> <li class=md-nav__item> <a href=../../features/modules/ class=md-nav__link> <span class=md-ellipsis> Modules </span> </a> </li> <li class=md-nav__item> <a href=../../features/namespace/ class=md-nav__link> <span class=md-ellipsis> nlohmann Namespace </span> </a> </li> <li class=md-nav__item> <a href=../../features/object_order/ class=md-nav__link> <span class=md-ellipsis> Object Order </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_14> <div class="md-nav__link md-nav__container"> <a href=../../features/parsing/ class="md-nav__link "> <span class=md-ellipsis> Parsing </span> </a> <label class="md-nav__link " for=__nav_2_14 id=__nav_2_14_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_14_label aria-expanded=false> <label class=md-nav__title for=__nav_2_14> <span class="md-nav__icon md-icon"></span> Parsing </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../features/parsing/json_lines/ class=md-nav__link> <span class=md-ellipsis> JSON Lines </span> </a> </li> <li class=md-nav__item> <a href=../../features/parsing/parse_exceptions/ class=md-nav__link> <span class=md-ellipsis> Parsing and Exceptions </span> </a> </li> <li class=md-nav__item> <a href=../../features/parsing/parser_callbacks/ class=md-nav__link> <span class=md-ellipsis> Parser Callbacks </span> </a> </li> <li class=md-nav__item> <a href=../../features/parsing/sax_interface/ class=md-nav__link> <span class=md-ellipsis> SAX Interface </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../features/assertions/ class=md-nav__link> <span class=md-ellipsis> Runtime Assertions </span> </a> </li> <li class=md-nav__item> <a href=../../features/enum_conversion/ class=md-nav__link> <span class=md-ellipsis> Specializing enum conversion </span> </a> </li> <li class=md-nav__item> <a href=../../features/macros/ class=md-nav__link> <span class=md-ellipsis> Supported Macros </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_18> <div class="md-nav__link md-nav__container"> <a href=../../features/types/ class="md-nav__link "> <span class=md-ellipsis> Types </span> </a> <label class="md-nav__link " for=__nav_2_18 id=__nav_2_18_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_18_label aria-expanded=false> <label class=md-nav__title for=__nav_2_18> <span class="md-nav__icon md-icon"></span> Types </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../features/types/number_handling/ class=md-nav__link> <span class=md-ellipsis> Number Handling </span> </a> </li> </ul> </nav> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_3> <div class="md-nav__link md-nav__container"> <a href=../../integration/ class="md-nav__link "> <span class=md-ellipsis> Integration </span> </a> <label class="md-nav__link " for=__nav_3 id=__nav_3_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_3_label aria-expanded=false> <label class=md-nav__title for=__nav_3> <span class="md-nav__icon md-icon"></span> Integration </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../integration/migration_guide/ class=md-nav__link> <span class=md-ellipsis> Migration Guide </span> </a> </li> <li class=md-nav__item> <a href=../../integration/cmake/ class=md-nav__link> <span class=md-ellipsis> CMake </span> </a> </li> <li class=md-nav__item> <a href=../../integration/package_managers/ class=md-nav__link> <span class=md-ellipsis> Package Managers </span> </a> </li> <li class=md-nav__item> <a href=../../integration/pkg-config/ class=md-nav__link> <span class=md-ellipsis> Pkg-config </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--active md-nav__item--section md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4 checked> <label class=md-nav__link for=__nav_4 id=__nav_4_label tabindex> <span class=md-ellipsis> API Documentation </span> <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_4_label aria-expanded=true> <label class=md-nav__title for=__nav_4> <span class="md-nav__icon md-icon"></span> API Documentation </label> <ul class=md-nav__list data-md-scrollfix> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_1> <div class="md-nav__link md-nav__container"> <a href=../basic_json/ class="md-nav__link "> <span class=md-ellipsis> basic_json </span> </a> <label class="md-nav__link " for=__nav_4_1 id=__nav_4_1_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_1_label aria-expanded=false> <label class=md-nav__title for=__nav_4_1> <span class="md-nav__icon md-icon"></span> basic_json </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../basic_json/basic_json/ class=md-nav__link> <span class=md-ellipsis> (Constructor) </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/~basic_json/ class=md-nav__link> <span class=md-ellipsis> (Destructor) </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/accept/ class=md-nav__link> <span class=md-ellipsis> accept </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/array/ class=md-nav__link> <span class=md-ellipsis> array </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/array_t/ class=md-nav__link> <span class=md-ellipsis> array_t </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/at/ class=md-nav__link> <span class=md-ellipsis> at </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/back/ class=md-nav__link> <span class=md-ellipsis> back </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/begin/ class=md-nav__link> <span class=md-ellipsis> begin </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/binary/ class=md-nav__link> <span class=md-ellipsis> binary </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/binary_t/ class=md-nav__link> <span class=md-ellipsis> binary_t </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/boolean_t/ class=md-nav__link> <span class=md-ellipsis> boolean_t </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/cbegin/ class=md-nav__link> <span class=md-ellipsis> cbegin </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/cbor_tag_handler_t/ class=md-nav__link> <span class=md-ellipsis> cbor_tag_handler_t </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/cend/ class=md-nav__link> <span class=md-ellipsis> cend </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/clear/ class=md-nav__link> <span class=md-ellipsis> clear </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/contains/ class=md-nav__link> <span class=md-ellipsis> contains </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/count/ class=md-nav__link> <span class=md-ellipsis> count </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/crbegin/ class=md-nav__link> <span class=md-ellipsis> crbegin </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/crend/ class=md-nav__link> <span class=md-ellipsis> crend </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/default_object_comparator_t/ class=md-nav__link> <span class=md-ellipsis> default_object_comparator_t </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/diff/ class=md-nav__link> <span class=md-ellipsis> diff </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/dump/ class=md-nav__link> <span class=md-ellipsis> dump </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/emplace/ class=md-nav__link> <span class=md-ellipsis> emplace </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/emplace_back/ class=md-nav__link> <span class=md-ellipsis> emplace_back </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/empty/ class=md-nav__link> <span class=md-ellipsis> empty </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/end/ class=md-nav__link> <span class=md-ellipsis> end </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/end_pos/ class=md-nav__link> <span class=md-ellipsis> end_pos </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/erase/ class=md-nav__link> <span class=md-ellipsis> erase </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/error_handler_t/ class=md-nav__link> <span class=md-ellipsis> error_handler_t </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/exception/ class=md-nav__link> <span class=md-ellipsis> exception </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/find/ class=md-nav__link> <span class=md-ellipsis> find </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/flatten/ class=md-nav__link> <span class=md-ellipsis> flatten </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/from_bjdata/ class=md-nav__link> <span class=md-ellipsis> from_bjdata </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/from_bson/ class=md-nav__link> <span class=md-ellipsis> from_bson </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/from_cbor/ class=md-nav__link> <span class=md-ellipsis> from_cbor </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/from_msgpack/ class=md-nav__link> <span class=md-ellipsis> from_msgpack </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/from_ubjson/ class=md-nav__link> <span class=md-ellipsis> from_ubjson </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/front/ class=md-nav__link> <span class=md-ellipsis> front </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/get/ class=md-nav__link> <span class=md-ellipsis> get </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/get_allocator/ class=md-nav__link> <span class=md-ellipsis> get_allocator </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/get_binary/ class=md-nav__link> <span class=md-ellipsis> get_binary </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/get_ptr/ class=md-nav__link> <span class=md-ellipsis> get_ptr </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/get_ref/ class=md-nav__link> <span class=md-ellipsis> get_ref </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/get_to/ class=md-nav__link> <span class=md-ellipsis> get_to </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/std_hash/ class=md-nav__link> <span class=md-ellipsis> std::hash&lt;basic_json&gt; </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/input_format_t/ class=md-nav__link> <span class=md-ellipsis> input_format_t </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/insert/ class=md-nav__link> <span class=md-ellipsis> insert </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/invalid_iterator/ class=md-nav__link> <span class=md-ellipsis> invalid_iterator </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/is_array/ class=md-nav__link> <span class=md-ellipsis> is_array </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/is_binary/ class=md-nav__link> <span class=md-ellipsis> is_binary </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/is_boolean/ class=md-nav__link> <span class=md-ellipsis> is_boolean </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/is_discarded/ class=md-nav__link> <span class=md-ellipsis> is_discarded </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/is_null/ class=md-nav__link> <span class=md-ellipsis> is_null </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/is_number/ class=md-nav__link> <span class=md-ellipsis> is_number </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/is_number_float/ class=md-nav__link> <span class=md-ellipsis> is_number_float </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/is_number_integer/ class=md-nav__link> <span class=md-ellipsis> is_number_integer </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/is_number_unsigned/ class=md-nav__link> <span class=md-ellipsis> is_number_unsigned </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/is_object/ class=md-nav__link> <span class=md-ellipsis> is_object </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/is_primitive/ class=md-nav__link> <span class=md-ellipsis> is_primitive </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/is_string/ class=md-nav__link> <span class=md-ellipsis> is_string </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/is_structured/ class=md-nav__link> <span class=md-ellipsis> is_structured </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/items/ class=md-nav__link> <span class=md-ellipsis> items </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/json_base_class_t/ class=md-nav__link> <span class=md-ellipsis> json_base_class_t </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/json_serializer/ class=md-nav__link> <span class=md-ellipsis> json_serializer </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/max_size/ class=md-nav__link> <span class=md-ellipsis> max_size </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/meta/ class=md-nav__link> <span class=md-ellipsis> meta </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/merge_patch/ class=md-nav__link> <span class=md-ellipsis> merge_patch </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/number_float_t/ class=md-nav__link> <span class=md-ellipsis> number_float_t </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/number_integer_t/ class=md-nav__link> <span class=md-ellipsis> number_integer_t </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/number_unsigned_t/ class=md-nav__link> <span class=md-ellipsis> number_unsigned_t </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/object/ class=md-nav__link> <span class=md-ellipsis> object </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/object_comparator_t/ class=md-nav__link> <span class=md-ellipsis> object_comparator_t </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/object_t/ class=md-nav__link> <span class=md-ellipsis> object_t </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/operator_ValueType/ class=md-nav__link> <span class=md-ellipsis> operator ValueType </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/operator_value_t/ class=md-nav__link> <span class=md-ellipsis> operator value_t </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/operator%5B%5D/ class=md-nav__link> <span class=md-ellipsis> operator[] </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/operator%3D/ class=md-nav__link> <span class=md-ellipsis> operator= </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/operator%2B%3D/ class=md-nav__link> <span class=md-ellipsis> operator+= </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/operator_eq/ class=md-nav__link> <span class=md-ellipsis> operator== </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/operator_ne/ class=md-nav__link> <span class=md-ellipsis> operator!= </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/operator_lt/ class=md-nav__link> <span class=md-ellipsis> operator< </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/operator_gt/ class=md-nav__link> <span class=md-ellipsis> operator> </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/operator_le/ class=md-nav__link> <span class=md-ellipsis> operator<= </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/operator_ge/ class=md-nav__link> <span class=md-ellipsis> operator>= </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/operator_spaceship/ class=md-nav__link> <span class=md-ellipsis> operator<=> </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/out_of_range/ class=md-nav__link> <span class=md-ellipsis> out_of_range </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/other_error/ class=md-nav__link> <span class=md-ellipsis> other_error </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/parse/ class=md-nav__link> <span class=md-ellipsis> parse </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/parse_error/ class=md-nav__link> <span class=md-ellipsis> parse_error </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/parse_event_t/ class=md-nav__link> <span class=md-ellipsis> parse_event_t </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/parser_callback_t/ class=md-nav__link> <span class=md-ellipsis> parser_callback_t </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/patch/ class=md-nav__link> <span class=md-ellipsis> patch </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/patch_inplace/ class=md-nav__link> <span class=md-ellipsis> patch_inplace </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/push_back/ class=md-nav__link> <span class=md-ellipsis> push_back </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/rbegin/ class=md-nav__link> <span class=md-ellipsis> rbegin </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/rend/ class=md-nav__link> <span class=md-ellipsis> rend </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/sax_parse/ class=md-nav__link> <span class=md-ellipsis> sax_parse </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/size/ class=md-nav__link> <span class=md-ellipsis> size </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/start_pos/ class=md-nav__link> <span class=md-ellipsis> start_pos </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/string_t/ class=md-nav__link> <span class=md-ellipsis> string_t </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/swap/ class=md-nav__link> <span class=md-ellipsis> swap </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/std_swap/ class=md-nav__link> <span class=md-ellipsis> std::swap&lt;basic_json&gt; </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/to_bjdata/ class=md-nav__link> <span class=md-ellipsis> to_bjdata </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/to_bson/ class=md-nav__link> <span class=md-ellipsis> to_bson </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/to_cbor/ class=md-nav__link> <span class=md-ellipsis> to_cbor </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/to_msgpack/ class=md-nav__link> <span class=md-ellipsis> to_msgpack </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/to_string/ class=md-nav__link> <span class=md-ellipsis> to_string </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/to_ubjson/ class=md-nav__link> <span class=md-ellipsis> to_ubjson </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/type/ class=md-nav__link> <span class=md-ellipsis> type </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/type_error/ class=md-nav__link> <span class=md-ellipsis> type_error </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/type_name/ class=md-nav__link> <span class=md-ellipsis> type_name </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/unflatten/ class=md-nav__link> <span class=md-ellipsis> unflatten </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/update/ class=md-nav__link> <span class=md-ellipsis> update </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/value/ class=md-nav__link> <span class=md-ellipsis> value </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/value_t/ class=md-nav__link> <span class=md-ellipsis> value_t </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_2> <div class="md-nav__link md-nav__container"> <a href=../byte_container_with_subtype/ class="md-nav__link "> <span class=md-ellipsis> byte_container_with_subtype </span> </a> <label class="md-nav__link " for=__nav_4_2 id=__nav_4_2_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_2_label aria-expanded=false> <label class=md-nav__title for=__nav_4_2> <span class="md-nav__icon md-icon"></span> byte_container_with_subtype </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../byte_container_with_subtype/byte_container_with_subtype/ class=md-nav__link> <span class=md-ellipsis> (constructor) </span> </a> </li> <li class=md-nav__item> <a href=../byte_container_with_subtype/clear_subtype/ class=md-nav__link> <span class=md-ellipsis> clear_subtype </span> </a> </li> <li class=md-nav__item> <a href=../byte_container_with_subtype/has_subtype/ class=md-nav__link> <span class=md-ellipsis> has_subtype </span> </a> </li> <li class=md-nav__item> <a href=../byte_container_with_subtype/set_subtype/ class=md-nav__link> <span class=md-ellipsis> set_subtype </span> </a> </li> <li class=md-nav__item> <a href=../byte_container_with_subtype/subtype/ class=md-nav__link> <span class=md-ellipsis> subtype </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_3> <div class="md-nav__link md-nav__container"> <a href=../adl_serializer/ class="md-nav__link "> <span class=md-ellipsis> adl_serializer </span> </a> <label class="md-nav__link " for=__nav_4_3 id=__nav_4_3_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_3_label aria-expanded=false> <label class=md-nav__title for=__nav_4_3> <span class="md-nav__icon md-icon"></span> adl_serializer </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../adl_serializer/from_json/ class=md-nav__link> <span class=md-ellipsis> from_json </span> </a> </li> <li class=md-nav__item> <a href=../adl_serializer/to_json/ class=md-nav__link> <span class=md-ellipsis> to_json </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../json/ class=md-nav__link> <span class=md-ellipsis> json </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_5> <div class="md-nav__link md-nav__container"> <a href=../json_pointer/ class="md-nav__link "> <span class=md-ellipsis> json_pointer </span> </a> <label class="md-nav__link " for=__nav_4_5 id=__nav_4_5_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_5_label aria-expanded=false> <label class=md-nav__title for=__nav_4_5> <span class="md-nav__icon md-icon"></span> json_pointer </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../json_pointer/json_pointer/ class=md-nav__link> <span class=md-ellipsis> (Constructor) </span> </a> </li> <li class=md-nav__item> <a href=../json_pointer/back/ class=md-nav__link> <span class=md-ellipsis> back </span> </a> </li> <li class=md-nav__item> <a href=../json_pointer/empty/ class=md-nav__link> <span class=md-ellipsis> empty </span> </a> </li> <li class=md-nav__item> <a href=../json_pointer/front/ class=md-nav__link> <span class=md-ellipsis> front </span> </a> </li> <li class=md-nav__item> <a href=../json_pointer/operator_string_t/ class=md-nav__link> <span class=md-ellipsis> operator string_t </span> </a> </li> <li class=md-nav__item> <a href=../json_pointer/operator_eq/ class=md-nav__link> <span class=md-ellipsis> operator== </span> </a> </li> <li class=md-nav__item> <a href=../json_pointer/operator_ne/ class=md-nav__link> <span class=md-ellipsis> operator!= </span> </a> </li> <li class=md-nav__item> <a href=../json_pointer/operator_slash/ class=md-nav__link> <span class=md-ellipsis> operator/ </span> </a> </li> <li class=md-nav__item> <a href=../json_pointer/operator_slasheq/ class=md-nav__link> <span class=md-ellipsis> operator/= </span> </a> </li> <li class=md-nav__item> <a href=../json_pointer/parent_pointer/ class=md-nav__link> <span class=md-ellipsis> parent_pointer </span> </a> </li> <li class=md-nav__item> <a href=../json_pointer/pop_back/ class=md-nav__link> <span class=md-ellipsis> pop_back </span> </a> </li> <li class=md-nav__item> <a href=../json_pointer/pop_front/ class=md-nav__link> <span class=md-ellipsis> pop_front </span> </a> </li> <li class=md-nav__item> <a href=../json_pointer/push_back/ class=md-nav__link> <span class=md-ellipsis> push_back </span> </a> </li> <li class=md-nav__item> <a href=../json_pointer/push_front/ class=md-nav__link> <span class=md-ellipsis> push_front </span> </a> </li> <li class=md-nav__item> <a href=../json_pointer/string_t/ class=md-nav__link> <span class=md-ellipsis> string_t </span> </a> </li> <li class=md-nav__item> <a href=../json_pointer/to_string/ class=md-nav__link> <span class=md-ellipsis> to_string </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--active md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_6 checked> <div class="md-nav__link md-nav__container"> <a href=./ class="md-nav__link md-nav__link--active"> <span class=md-ellipsis> json_sax </span> </a> <label class="md-nav__link md-nav__link--active" for=__nav_4_6 id=__nav_4_6_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_6_label aria-expanded=true> <label class=md-nav__title for=__nav_4_6> <span class="md-nav__icon md-icon"></span> json_sax </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=binary/ class=md-nav__link> <span class=md-ellipsis> binary </span> </a> </li> <li class=md-nav__item> <a href=boolean/ class=md-nav__link> <span class=md-ellipsis> boolean </span> </a> </li> <li class=md-nav__item> <a href=end_array/ class=md-nav__link> <span class=md-ellipsis> end_array </span> </a> </li> <li class=md-nav__item> <a href=end_object/ class=md-nav__link> <span class=md-ellipsis> end_object </span> </a> </li> <li class=md-nav__item> <a href=key/ class=md-nav__link> <span class=md-ellipsis> key </span> </a> </li> <li class=md-nav__item> <a href=null/ class=md-nav__link> <span class=md-ellipsis> null </span> </a> </li> <li class=md-nav__item> <a href=number_float/ class=md-nav__link> <span class=md-ellipsis> number_float </span> </a> </li> <li class=md-nav__item> <a href=number_integer/ class=md-nav__link> <span class=md-ellipsis> number_integer </span> </a> </li> <li class=md-nav__item> <a href=number_unsigned/ class=md-nav__link> <span class=md-ellipsis> number_unsigned </span> </a> </li> <li class=md-nav__item> <a href=parse_error/ class=md-nav__link> <span class=md-ellipsis> parse_error </span> </a> </li> <li class=md-nav__item> <a href=start_array/ class=md-nav__link> <span class=md-ellipsis> start_array </span> </a> </li> <li class=md-nav__item> <a href=start_object/ class=md-nav__link> <span class=md-ellipsis> start_object </span> </a> </li> <li class=md-nav__item> <a href=string/ class=md-nav__link> <span class=md-ellipsis> string </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../operator_ltlt/ class=md-nav__link> <span class=md-ellipsis> operator<<(basic_json), operator<<(json_pointer) </span> </a> </li> <li class=md-nav__item> <a href=../operator_gtgt/ class=md-nav__link> <span class=md-ellipsis> operator>>(basic_json) </span> </a> </li> <li class=md-nav__item> <a href=../operator_literal_json/ class=md-nav__link> <span class=md-ellipsis> operator""_json </span> </a> </li> <li class=md-nav__item> <a href=../operator_literal_json_pointer/ class=md-nav__link> <span class=md-ellipsis> operator""_json_pointer </span> </a> </li> <li class=md-nav__item> <a href=../ordered_json/ class=md-nav__link> <span class=md-ellipsis> ordered_json </span> </a> </li> <li class=md-nav__item> <a href=../ordered_map/ class=md-nav__link> <span class=md-ellipsis> ordered_map </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_13> <div class="md-nav__link md-nav__container"> <a href=../macros/ class="md-nav__link "> <span class=md-ellipsis> macros </span> </a> <label class="md-nav__link " for=__nav_4_13 id=__nav_4_13_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_13_label aria-expanded=false> <label class=md-nav__title for=__nav_4_13> <span class="md-nav__icon md-icon"></span> macros </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../macros/json_assert/ class=md-nav__link> <span class=md-ellipsis> JSON_ASSERT </span> </a> </li> <li class=md-nav__item> <a href=../macros/json_brace_init_copy_semantics/ class=md-nav__link> <span class=md-ellipsis> JSON_BRACE_INIT_COPY_SEMANTICS </span> </a> </li> <li class=md-nav__item> <a href=../macros/json_throw_user/ class=md-nav__link> <span class=md-ellipsis> JSON_CATCH_USER, JSON_THROW_USER, JSON_TRY_USER </span> </a> </li> <li class=md-nav__item> <a href=../macros/json_diagnostics/ class=md-nav__link> <span class=md-ellipsis> JSON_DIAGNOSTICS </span> </a> </li> <li class=md-nav__item> <a href=../macros/json_diagnostic_positions/ class=md-nav__link> <span class=md-ellipsis> JSON_DIAGNOSTIC_POSITIONS </span> </a> </li> <li class=md-nav__item> <a href=../macros/json_disable_enum_serialization/ class=md-nav__link> <span class=md-ellipsis> JSON_DISABLE_ENUM_SERIALIZATION </span> </a> </li> <li class=md-nav__item> <a href=../macros/json_has_cpp_11/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_CPP_11, JSON_HAS_CPP_14, JSON_HAS_CPP_17, JSON_HAS_CPP_20 </span> </a> </li> <li class=md-nav__item> <a href=../macros/json_has_filesystem/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_EXPERIMENTAL_FILESYSTEM, JSON_HAS_FILESYSTEM </span> </a> </li> <li class=md-nav__item> <a href=../macros/json_has_ranges/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_RANGES </span> </a> </li> <li class=md-nav__item> <a href=../macros/json_has_static_rtti/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_STATIC_RTTI </span> </a> </li> <li class=md-nav__item> <a href=../macros/json_has_three_way_comparison/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_THREE_WAY_COMPARISON </span> </a> </li> <li class=md-nav__item> <a href=../macros/json_noexception/ class=md-nav__link> <span class=md-ellipsis> JSON_NOEXCEPTION </span> </a> </li> <li class=md-nav__item> <a href=../macros/json_no_io/ class=md-nav__link> <span class=md-ellipsis> JSON_NO_IO </span> </a> </li> <li class=md-nav__item> <a href=../macros/json_skip_library_version_check/ class=md-nav__link> <span class=md-ellipsis> JSON_SKIP_LIBRARY_VERSION_CHECK </span> </a> </li> <li class=md-nav__item> <a href=../macros/json_skip_unsupported_compiler_check/ class=md-nav__link> <span class=md-ellipsis> JSON_SKIP_UNSUPPORTED_COMPILER_CHECK </span> </a> </li> <li class=md-nav__item> <a href=../macros/json_use_global_udls/ class=md-nav__link> <span class=md-ellipsis> JSON_USE_GLOBAL_UDLS </span> </a> </li> <li class=md-nav__item> <a href=../macros/json_use_implicit_conversions/ class=md-nav__link> <span class=md-ellipsis> JSON_USE_IMPLICIT_CONVERSIONS </span> </a> </li> <li class=md-nav__item> <a href=../macros/json_use_legacy_discarded_value_comparison/ class=md-nav__link> <span class=md-ellipsis> JSON_USE_LEGACY_DISCARDED_VALUE_COMPARISON </span> </a> </li> <li class=md-nav__item> <a href=../macros/nlohmann_define_derived_type/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_ONLY_SERIALIZE, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE </span> </a> </li> <li class=md-nav__item> <a href=../macros/nlohmann_define_type_intrusive/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_TYPE_INTRUSIVE, NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_TYPE_INTRUSIVE_ONLY_SERIALIZE </span> </a> </li> <li class=md-nav__item> <a href=../macros/nlohmann_define_type_non_intrusive/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE </span> </a> </li> <li class=md-nav__item> <a href=../macros/nlohmann_define_type_with_names/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_TYPE_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES </span> </a> </li> <li class=md-nav__item> <a href=../macros/nlohmann_json_namespace/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_NAMESPACE </span> </a> </li> <li class=md-nav__item> <a href=../macros/nlohmann_json_namespace_begin/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_NAMESPACE_BEGIN, NLOHMANN_JSON_NAMESPACE_END </span> </a> </li> <li class=md-nav__item> <a href=../macros/nlohmann_json_namespace_no_version/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_NAMESPACE_NO_VERSION </span> </a> </li> <li class=md-nav__item> <a href=../macros/nlohmann_json_serialize_enum/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_SERIALIZE_ENUM </span> </a> </li> <li class=md-nav__item> <a href=../macros/nlohmann_json_serialize_enum_strict/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_SERIALIZE_ENUM_STRICT </span> </a> </li> <li class=md-nav__item> <a href=../macros/nlohmann_json_version_major/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_VERSION_MAJOR, NLOHMANN_JSON_VERSION_MINOR, NLOHMANN_JSON_VERSION_PATCH </span> </a> </li> </ul> </nav> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_5> <div class="md-nav__link md-nav__container"> <a href=../../community/ class="md-nav__link "> <span class=md-ellipsis> Community </span> </a> <label class="md-nav__link " for=__nav_5 id=__nav_5_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_5_label aria-expanded=false> <label class=md-nav__title for=__nav_5> <span class="md-nav__icon md-icon"></span> Community </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../community/code_of_conduct/ class=md-nav__link> <span class=md-ellipsis> Code of Conduct </span> </a> </li> <li class=md-nav__item> <a href=../../community/contribution_guidelines/ class=md-nav__link> <span class=md-ellipsis> Contribution Guidelines </span> </a> </li> <li class=md-nav__item> <a href=../../community/quality_assurance/ class=md-nav__link> <span class=md-ellipsis> Quality assurance </span> </a> </li> <li class=md-nav__item> <a href=../../community/governance/ class=md-nav__link> <span class=md-ellipsis> Governance </span> </a> </li> <li class=md-nav__item> <a href=../../community/security_policy/ class=md-nav__link> <span class=md-ellipsis> Security Policy </span> </a> </li> </ul> </nav> </li> </ul> </nav> </div> </div> </div> <div class="md-sidebar md-sidebar--secondary" data-md-component=sidebar data-md-type=toc> <div class=md-sidebar__scrollwrap> <div class=md-sidebar__inner> <nav class="md-nav md-nav--secondary" aria-label="Table of contents"> <label class=md-nav__title for=__toc> <span class="md-nav__icon md-icon"></span> Table of contents </label> <ul class=md-nav__list data-md-component=toc data-md-scrollfix> <li class=md-nav__item> <a href=#template-parameters class=md-nav__link> <span class=md-ellipsis> Template parameters </span> </a> </li> <li class=md-nav__item> <a href=#member-types class=md-nav__link> <span class=md-ellipsis> Member types </span> </a> </li> <li class=md-nav__item> <a href=#member-functions class=md-nav__link> <span class=md-ellipsis> Member functions </span> </a> </li> <li class=md-nav__item> <a href=#version-history class=md-nav__link> <span class=md-ellipsis> Version history </span> </a> </li> </ul> </nav> </div> </div> </div> <div class=md-content data-md-component=content> <article class="md-content__inner md-typeset"> <a href="https://github.com/nlohmann/json/edit/develop/docs/mkdocs/docs/api/json_sax/index.md" title="Edit this page" class="md-content__button md-icon" rel="edit"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M10 20H6V4h7v5h5v3.1l2-2V8l-6-6H6c-1.1 0-2 .9-2 2v16c0 1.1.9 2 2 2h4zm10.2-7c.1 0 .3.1.4.2l1.3 1.3c.2.2.2.6 0 .8l-1 1-2.1-2.1 1-1c.1-.1.2-.2.4-.2m0 3.9L14.1 23H12v-2.1l6.1-6.1z"/></svg> </a> <a href="https://github.com/nlohmann/json/raw/develop/docs/mkdocs/docs/api/json_sax/index.md" title="View source of this page" class="md-content__button md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M17 18c.56 0 1 .44 1 1s-.44 1-1 1-1-.44-1-1 .44-1 1-1m0-3c-2.73 0-5.06 1.66-6 4 .94 2.34 3.27 4 6 4s5.06-1.66 6-4c-.94-2.34-3.27-4-6-4m0 6.5a2.5 2.5 0 0 1-2.5-2.5 2.5 2.5 0 0 1 2.5-2.5 2.5 2.5 0 0 1 2.5 2.5 2.5 2.5 0 0 1-2.5 2.5M9.27 20H6V4h7v5h5v4.07c.7.08 1.36.25 2 .49V8l-6-6H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h4.5a8.2 8.2 0 0 1-1.23-2"/></svg> </a> <h1 id=nlohmannjson_sax><small>nlohmann::</small>json_sax<a class=headerlink href=#nlohmannjson_sax title="Permanent link">&para;</a></h1> <div class=highlight><pre><span></span><code><span class=k>template</span><span class=o>&lt;</span><span class=k>typename</span><span class=w> </span><span class=nc>BasicJsonType</span><span class=o>&gt;</span>
 <span class=k>struct</span><span class=w> </span><span class=nc>json_sax</span><span class=p>;</span>
-</code></pre></div> <p>This class describes the <abbr title="Simple API for XML">SAX</abbr> interface used by <a href=../basic_json/sax_parse/ >sax_parse</a>. Each function is called in different situations while the input is parsed. The boolean return value informs the parser whether to continue processing the input.</p> <h2 id=template-parameters>Template parameters<a class=headerlink href=#template-parameters title="Permanent link">&para;</a></h2> <dl> <dt><code>BasicJsonType</code></dt> <dd>a specialization of <a href=../basic_json/ ><code>basic_json</code></a></dd> </dl> <h2 id=member-types>Member types<a class=headerlink href=#member-types title="Permanent link">&para;</a></h2> <ul> <li><a href=../basic_json/number_integer_t/ ><strong>number_integer_t</strong></a> - <code>BasicJsonType</code>'s type for numbers (integer)</li> <li><a href=../basic_json/number_unsigned_t/ ><strong>number_unsigned_t</strong></a> - <code>BasicJsonType</code>'s type for numbers (unsigned)</li> <li><a href=../basic_json/number_float_t/ ><strong>number_float_t</strong></a> - <code>BasicJsonType</code>'s type for numbers (floating-point)</li> <li><a href=../basic_json/string_t/ ><strong>string_t</strong></a> - <code>BasicJsonType</code>'s type for strings</li> <li><a href=../basic_json/binary_t/ ><strong>binary_t</strong></a> - <code>BasicJsonType</code>'s type for binary arrays</li> </ul> <h2 id=member-functions>Member functions<a class=headerlink href=#member-functions title="Permanent link">&para;</a></h2> <ul> <li><a href=binary/ ><strong>binary</strong></a> (<em>virtual</em>) - a binary value was read</li> <li><a href=boolean/ ><strong>boolean</strong></a> (<em>virtual</em>) - a boolean value was read</li> <li><a href=end_array/ ><strong>end_array</strong></a> (<em>virtual</em>) - the end of an array was read</li> <li><a href=end_object/ ><strong>end_object</strong></a> (<em>virtual</em>) - the end of an object was read</li> <li><a href=key/ ><strong>key</strong></a> (<em>virtual</em>) - an object key was read</li> <li><a href=null/ ><strong>null</strong></a> (<em>virtual</em>) - a null value was read</li> <li><a href=number_float/ ><strong>number_float</strong></a> (<em>virtual</em>) - a floating-point number was read</li> <li><a href=number_integer/ ><strong>number_integer</strong></a> (<em>virtual</em>) - an integer number was read</li> <li><a href=number_unsigned/ ><strong>number_unsigned</strong></a> (<em>virtual</em>) - an unsigned integer number was read</li> <li><a href=parse_error/ ><strong>parse_error</strong></a> (<em>virtual</em>) - a parse error occurred</li> <li><a href=start_array/ ><strong>start_array</strong></a> (<em>virtual</em>) - the beginning of an array was read</li> <li><a href=start_object/ ><strong>start_object</strong></a> (<em>virtual</em>) - the beginning of an object was read</li> <li><a href=string/ ><strong>string</strong></a> (<em>virtual</em>) - a string value was read</li> </ul> <h2 id=version-history>Version history<a class=headerlink href=#version-history title="Permanent link">&para;</a></h2> <ul> <li>Added in version 3.2.0.</li> <li>Support for binary values (<code>binary_t</code>, <code>binary</code>) added in version 3.8.0.</li> </ul> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 23, 2026 11:16:18 UTC">June 23, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
+</code></pre></div> <p>This class describes the <abbr title="Simple API for XML">SAX</abbr> interface used by <a href=../basic_json/sax_parse/ >sax_parse</a>. Each function is called in different situations while the input is parsed. The boolean return value informs the parser whether to continue processing the input.</p> <h2 id=template-parameters>Template parameters<a class=headerlink href=#template-parameters title="Permanent link">&para;</a></h2> <dl> <dt><code>BasicJsonType</code></dt> <dd>a specialization of <a href=../basic_json/ ><code>basic_json</code></a></dd> </dl> <h2 id=member-types>Member types<a class=headerlink href=#member-types title="Permanent link">&para;</a></h2> <ul> <li><a href=../basic_json/number_integer_t/ ><strong>number_integer_t</strong></a> - <code>BasicJsonType</code>'s type for numbers (integer)</li> <li><a href=../basic_json/number_unsigned_t/ ><strong>number_unsigned_t</strong></a> - <code>BasicJsonType</code>'s type for numbers (unsigned)</li> <li><a href=../basic_json/number_float_t/ ><strong>number_float_t</strong></a> - <code>BasicJsonType</code>'s type for numbers (floating-point)</li> <li><a href=../basic_json/string_t/ ><strong>string_t</strong></a> - <code>BasicJsonType</code>'s type for strings</li> <li><a href=../basic_json/binary_t/ ><strong>binary_t</strong></a> - <code>BasicJsonType</code>'s type for binary arrays</li> </ul> <h2 id=member-functions>Member functions<a class=headerlink href=#member-functions title="Permanent link">&para;</a></h2> <ul> <li><a href=binary/ ><strong>binary</strong></a> (<em>virtual</em>) - a binary value was read</li> <li><a href=boolean/ ><strong>boolean</strong></a> (<em>virtual</em>) - a boolean value was read</li> <li><a href=end_array/ ><strong>end_array</strong></a> (<em>virtual</em>) - the end of an array was read</li> <li><a href=end_object/ ><strong>end_object</strong></a> (<em>virtual</em>) - the end of an object was read</li> <li><a href=key/ ><strong>key</strong></a> (<em>virtual</em>) - an object key was read</li> <li><a href=null/ ><strong>null</strong></a> (<em>virtual</em>) - a null value was read</li> <li><a href=number_float/ ><strong>number_float</strong></a> (<em>virtual</em>) - a floating-point number was read</li> <li><a href=number_integer/ ><strong>number_integer</strong></a> (<em>virtual</em>) - an integer number was read</li> <li><a href=number_unsigned/ ><strong>number_unsigned</strong></a> (<em>virtual</em>) - an unsigned integer number was read</li> <li><a href=parse_error/ ><strong>parse_error</strong></a> (<em>virtual</em>) - a parse error occurred</li> <li><a href=start_array/ ><strong>start_array</strong></a> (<em>virtual</em>) - the beginning of an array was read</li> <li><a href=start_object/ ><strong>start_object</strong></a> (<em>virtual</em>) - the beginning of an object was read</li> <li><a href=string/ ><strong>string</strong></a> (<em>virtual</em>) - a string value was read</li> </ul> <h2 id=version-history>Version history<a class=headerlink href=#version-history title="Permanent link">&para;</a></h2> <ul> <li>Added in version 3.2.0.</li> <li>Support for binary values (<code>binary_t</code>, <code>binary</code>) added in version 3.8.0.</li> </ul> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 29, 2026 20:15:18 UTC">June 29, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
diff --git a/api/json_sax/key/index.html b/api/json_sax/key/index.html
index 9c79608..9057f15 100644
--- a/api/json_sax/key/index.html
+++ b/api/json_sax/key/index.html
@@ -167,4 +167,4 @@
 <span class=w>            </span><span class=err>ex=</span><span class=p>[</span><span class=err>jso</span><span class=kc>n</span><span class=err>.excep</span><span class=kc>t</span><span class=err>io</span><span class=kc>n</span><span class=err>.parse_error.</span><span class=mi>101</span><span class=p>]</span><span class=w> </span><span class=err>parse</span><span class=w> </span><span class=err>error</span><span class=w> </span><span class=err>a</span><span class=kc>t</span><span class=w> </span><span class=err>li</span><span class=kc>ne</span><span class=w> </span><span class=mi>17</span><span class=p>,</span><span class=w> </span><span class=err>colum</span><span class=kc>n</span><span class=w> </span><span class=mi>6</span><span class=p>:</span><span class=w> </span><span class=err>sy</span><span class=kc>nta</span><span class=err>x</span><span class=w> </span><span class=err>error</span><span class=w> </span><span class=err>while</span><span class=w> </span><span class=err>parsi</span><span class=kc>n</span><span class=err>g</span><span class=w> </span><span class=err>value</span><span class=w> </span><span class=mi>-</span><span class=w> </span><span class=err>u</span><span class=kc>ne</span><span class=err>xpec</span><span class=kc>te</span><span class=err>d</span><span class=w> </span><span class=err>&#39;</span><span class=p>]</span><span class=err>&#39;;</span><span class=w> </span><span class=err>expec</span><span class=kc>te</span><span class=err>d</span><span class=w> </span><span class=err>e</span><span class=kc>n</span><span class=err>d</span><span class=w> </span><span class=err>o</span><span class=kc>f</span><span class=w> </span><span class=err>i</span><span class=kc>n</span><span class=err>pu</span><span class=kc>t</span><span class=err>)</span>
 
 <span class=err>resul</span><span class=kc>t</span><span class=p>:</span><span class=w> </span><span class=kc>false</span>
-</code></pre></div> </details> <h2 id=version-history>Version history<a class=headerlink href=#version-history title="Permanent link">&para;</a></h2> <ul> <li>Added in version 3.2.0.</li> </ul> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 23, 2026 11:16:18 UTC">June 23, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
+</code></pre></div> </details> <h2 id=version-history>Version history<a class=headerlink href=#version-history title="Permanent link">&para;</a></h2> <ul> <li>Added in version 3.2.0.</li> </ul> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 29, 2026 20:15:18 UTC">June 29, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
diff --git a/api/json_sax/null/index.html b/api/json_sax/null/index.html
index 7e373b8..24cdd70 100644
--- a/api/json_sax/null/index.html
+++ b/api/json_sax/null/index.html
@@ -167,4 +167,4 @@
 <span class=w>            </span><span class=err>ex=</span><span class=p>[</span><span class=err>jso</span><span class=kc>n</span><span class=err>.excep</span><span class=kc>t</span><span class=err>io</span><span class=kc>n</span><span class=err>.parse_error.</span><span class=mi>101</span><span class=p>]</span><span class=w> </span><span class=err>parse</span><span class=w> </span><span class=err>error</span><span class=w> </span><span class=err>a</span><span class=kc>t</span><span class=w> </span><span class=err>li</span><span class=kc>ne</span><span class=w> </span><span class=mi>17</span><span class=p>,</span><span class=w> </span><span class=err>colum</span><span class=kc>n</span><span class=w> </span><span class=mi>6</span><span class=p>:</span><span class=w> </span><span class=err>sy</span><span class=kc>nta</span><span class=err>x</span><span class=w> </span><span class=err>error</span><span class=w> </span><span class=err>while</span><span class=w> </span><span class=err>parsi</span><span class=kc>n</span><span class=err>g</span><span class=w> </span><span class=err>value</span><span class=w> </span><span class=mi>-</span><span class=w> </span><span class=err>u</span><span class=kc>ne</span><span class=err>xpec</span><span class=kc>te</span><span class=err>d</span><span class=w> </span><span class=err>&#39;</span><span class=p>]</span><span class=err>&#39;;</span><span class=w> </span><span class=err>expec</span><span class=kc>te</span><span class=err>d</span><span class=w> </span><span class=err>e</span><span class=kc>n</span><span class=err>d</span><span class=w> </span><span class=err>o</span><span class=kc>f</span><span class=w> </span><span class=err>i</span><span class=kc>n</span><span class=err>pu</span><span class=kc>t</span><span class=err>)</span>
 
 <span class=err>resul</span><span class=kc>t</span><span class=p>:</span><span class=w> </span><span class=kc>false</span>
-</code></pre></div> </details> <h2 id=version-history>Version history<a class=headerlink href=#version-history title="Permanent link">&para;</a></h2> <ul> <li>Added in version 3.2.0.</li> </ul> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 23, 2026 11:16:18 UTC">June 23, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
+</code></pre></div> </details> <h2 id=version-history>Version history<a class=headerlink href=#version-history title="Permanent link">&para;</a></h2> <ul> <li>Added in version 3.2.0.</li> </ul> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 29, 2026 20:15:18 UTC">June 29, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
diff --git a/api/json_sax/number_float/index.html b/api/json_sax/number_float/index.html
index bb50f46..290ec33 100644
--- a/api/json_sax/number_float/index.html
+++ b/api/json_sax/number_float/index.html
@@ -167,4 +167,4 @@
 <span class=w>            </span><span class=err>ex=</span><span class=p>[</span><span class=err>jso</span><span class=kc>n</span><span class=err>.excep</span><span class=kc>t</span><span class=err>io</span><span class=kc>n</span><span class=err>.parse_error.</span><span class=mi>101</span><span class=p>]</span><span class=w> </span><span class=err>parse</span><span class=w> </span><span class=err>error</span><span class=w> </span><span class=err>a</span><span class=kc>t</span><span class=w> </span><span class=err>li</span><span class=kc>ne</span><span class=w> </span><span class=mi>17</span><span class=p>,</span><span class=w> </span><span class=err>colum</span><span class=kc>n</span><span class=w> </span><span class=mi>6</span><span class=p>:</span><span class=w> </span><span class=err>sy</span><span class=kc>nta</span><span class=err>x</span><span class=w> </span><span class=err>error</span><span class=w> </span><span class=err>while</span><span class=w> </span><span class=err>parsi</span><span class=kc>n</span><span class=err>g</span><span class=w> </span><span class=err>value</span><span class=w> </span><span class=mi>-</span><span class=w> </span><span class=err>u</span><span class=kc>ne</span><span class=err>xpec</span><span class=kc>te</span><span class=err>d</span><span class=w> </span><span class=err>&#39;</span><span class=p>]</span><span class=err>&#39;;</span><span class=w> </span><span class=err>expec</span><span class=kc>te</span><span class=err>d</span><span class=w> </span><span class=err>e</span><span class=kc>n</span><span class=err>d</span><span class=w> </span><span class=err>o</span><span class=kc>f</span><span class=w> </span><span class=err>i</span><span class=kc>n</span><span class=err>pu</span><span class=kc>t</span><span class=err>)</span>
 
 <span class=err>resul</span><span class=kc>t</span><span class=p>:</span><span class=w> </span><span class=kc>false</span>
-</code></pre></div> </details> <h2 id=version-history>Version history<a class=headerlink href=#version-history title="Permanent link">&para;</a></h2> <ul> <li>Added in version 3.2.0.</li> </ul> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 23, 2026 11:16:18 UTC">June 23, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
+</code></pre></div> </details> <h2 id=version-history>Version history<a class=headerlink href=#version-history title="Permanent link">&para;</a></h2> <ul> <li>Added in version 3.2.0.</li> </ul> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 29, 2026 20:15:18 UTC">June 29, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
diff --git a/api/json_sax/number_integer/index.html b/api/json_sax/number_integer/index.html
index 6b2aedc..9ef0c68 100644
--- a/api/json_sax/number_integer/index.html
+++ b/api/json_sax/number_integer/index.html
@@ -167,4 +167,4 @@
 <span class=w>            </span><span class=err>ex=</span><span class=p>[</span><span class=err>jso</span><span class=kc>n</span><span class=err>.excep</span><span class=kc>t</span><span class=err>io</span><span class=kc>n</span><span class=err>.parse_error.</span><span class=mi>101</span><span class=p>]</span><span class=w> </span><span class=err>parse</span><span class=w> </span><span class=err>error</span><span class=w> </span><span class=err>a</span><span class=kc>t</span><span class=w> </span><span class=err>li</span><span class=kc>ne</span><span class=w> </span><span class=mi>17</span><span class=p>,</span><span class=w> </span><span class=err>colum</span><span class=kc>n</span><span class=w> </span><span class=mi>6</span><span class=p>:</span><span class=w> </span><span class=err>sy</span><span class=kc>nta</span><span class=err>x</span><span class=w> </span><span class=err>error</span><span class=w> </span><span class=err>while</span><span class=w> </span><span class=err>parsi</span><span class=kc>n</span><span class=err>g</span><span class=w> </span><span class=err>value</span><span class=w> </span><span class=mi>-</span><span class=w> </span><span class=err>u</span><span class=kc>ne</span><span class=err>xpec</span><span class=kc>te</span><span class=err>d</span><span class=w> </span><span class=err>&#39;</span><span class=p>]</span><span class=err>&#39;;</span><span class=w> </span><span class=err>expec</span><span class=kc>te</span><span class=err>d</span><span class=w> </span><span class=err>e</span><span class=kc>n</span><span class=err>d</span><span class=w> </span><span class=err>o</span><span class=kc>f</span><span class=w> </span><span class=err>i</span><span class=kc>n</span><span class=err>pu</span><span class=kc>t</span><span class=err>)</span>
 
 <span class=err>resul</span><span class=kc>t</span><span class=p>:</span><span class=w> </span><span class=kc>false</span>
-</code></pre></div> </details> <h2 id=version-history>Version history<a class=headerlink href=#version-history title="Permanent link">&para;</a></h2> <ul> <li>Added in version 3.2.0.</li> </ul> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 23, 2026 11:16:18 UTC">June 23, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
+</code></pre></div> </details> <h2 id=version-history>Version history<a class=headerlink href=#version-history title="Permanent link">&para;</a></h2> <ul> <li>Added in version 3.2.0.</li> </ul> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 29, 2026 20:15:18 UTC">June 29, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
diff --git a/api/json_sax/number_unsigned/index.html b/api/json_sax/number_unsigned/index.html
index 4c948c6..f32d530 100644
--- a/api/json_sax/number_unsigned/index.html
+++ b/api/json_sax/number_unsigned/index.html
@@ -167,4 +167,4 @@
 <span class=w>            </span><span class=err>ex=</span><span class=p>[</span><span class=err>jso</span><span class=kc>n</span><span class=err>.excep</span><span class=kc>t</span><span class=err>io</span><span class=kc>n</span><span class=err>.parse_error.</span><span class=mi>101</span><span class=p>]</span><span class=w> </span><span class=err>parse</span><span class=w> </span><span class=err>error</span><span class=w> </span><span class=err>a</span><span class=kc>t</span><span class=w> </span><span class=err>li</span><span class=kc>ne</span><span class=w> </span><span class=mi>17</span><span class=p>,</span><span class=w> </span><span class=err>colum</span><span class=kc>n</span><span class=w> </span><span class=mi>6</span><span class=p>:</span><span class=w> </span><span class=err>sy</span><span class=kc>nta</span><span class=err>x</span><span class=w> </span><span class=err>error</span><span class=w> </span><span class=err>while</span><span class=w> </span><span class=err>parsi</span><span class=kc>n</span><span class=err>g</span><span class=w> </span><span class=err>value</span><span class=w> </span><span class=mi>-</span><span class=w> </span><span class=err>u</span><span class=kc>ne</span><span class=err>xpec</span><span class=kc>te</span><span class=err>d</span><span class=w> </span><span class=err>&#39;</span><span class=p>]</span><span class=err>&#39;;</span><span class=w> </span><span class=err>expec</span><span class=kc>te</span><span class=err>d</span><span class=w> </span><span class=err>e</span><span class=kc>n</span><span class=err>d</span><span class=w> </span><span class=err>o</span><span class=kc>f</span><span class=w> </span><span class=err>i</span><span class=kc>n</span><span class=err>pu</span><span class=kc>t</span><span class=err>)</span>
 
 <span class=err>resul</span><span class=kc>t</span><span class=p>:</span><span class=w> </span><span class=kc>false</span>
-</code></pre></div> </details> <h2 id=version-history>Version history<a class=headerlink href=#version-history title="Permanent link">&para;</a></h2> <ul> <li>Added in version 3.2.0.</li> </ul> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 23, 2026 11:16:18 UTC">June 23, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
+</code></pre></div> </details> <h2 id=version-history>Version history<a class=headerlink href=#version-history title="Permanent link">&para;</a></h2> <ul> <li>Added in version 3.2.0.</li> </ul> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 29, 2026 20:15:18 UTC">June 29, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
diff --git a/api/json_sax/parse_error/index.html b/api/json_sax/parse_error/index.html
index fcc56cb..572ce02 100644
--- a/api/json_sax/parse_error/index.html
+++ b/api/json_sax/parse_error/index.html
@@ -169,4 +169,4 @@
 <span class=w>            </span><span class=err>ex=</span><span class=p>[</span><span class=err>jso</span><span class=kc>n</span><span class=err>.excep</span><span class=kc>t</span><span class=err>io</span><span class=kc>n</span><span class=err>.parse_error.</span><span class=mi>101</span><span class=p>]</span><span class=w> </span><span class=err>parse</span><span class=w> </span><span class=err>error</span><span class=w> </span><span class=err>a</span><span class=kc>t</span><span class=w> </span><span class=err>li</span><span class=kc>ne</span><span class=w> </span><span class=mi>17</span><span class=p>,</span><span class=w> </span><span class=err>colum</span><span class=kc>n</span><span class=w> </span><span class=mi>6</span><span class=p>:</span><span class=w> </span><span class=err>sy</span><span class=kc>nta</span><span class=err>x</span><span class=w> </span><span class=err>error</span><span class=w> </span><span class=err>while</span><span class=w> </span><span class=err>parsi</span><span class=kc>n</span><span class=err>g</span><span class=w> </span><span class=err>value</span><span class=w> </span><span class=mi>-</span><span class=w> </span><span class=err>u</span><span class=kc>ne</span><span class=err>xpec</span><span class=kc>te</span><span class=err>d</span><span class=w> </span><span class=err>&#39;</span><span class=p>]</span><span class=err>&#39;;</span><span class=w> </span><span class=err>expec</span><span class=kc>te</span><span class=err>d</span><span class=w> </span><span class=err>e</span><span class=kc>n</span><span class=err>d</span><span class=w> </span><span class=err>o</span><span class=kc>f</span><span class=w> </span><span class=err>i</span><span class=kc>n</span><span class=err>pu</span><span class=kc>t</span><span class=err>)</span>
 
 <span class=err>resul</span><span class=kc>t</span><span class=p>:</span><span class=w> </span><span class=kc>false</span>
-</code></pre></div> </details> <h2 id=version-history>Version history<a class=headerlink href=#version-history title="Permanent link">&para;</a></h2> <ul> <li>Added in version 3.2.0.</li> </ul> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 23, 2026 11:16:18 UTC">June 23, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
+</code></pre></div> </details> <h2 id=version-history>Version history<a class=headerlink href=#version-history title="Permanent link">&para;</a></h2> <ul> <li>Added in version 3.2.0.</li> </ul> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 29, 2026 20:15:18 UTC">June 29, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
diff --git a/api/json_sax/start_array/index.html b/api/json_sax/start_array/index.html
index a7fb4a4..88b038f 100644
--- a/api/json_sax/start_array/index.html
+++ b/api/json_sax/start_array/index.html
@@ -1,5 +1,5 @@
 <!doctype html><html lang=en class=no-js> <head><meta charset=utf-8><meta name=viewport content="width=device-width,initial-scale=1"><meta name=author content="Niels Lohmann"><link href="https://json.nlohmann.me/api/json_sax/start_array/" rel="canonical"><link href=../parse_error/ rel=prev><link href=../start_object/ rel=next><link rel=icon href=../../../assets/images/favicon.png><meta name=generator content="mkdocs-1.6.1, mkdocs-material-9.7.6"><title>start_array - JSON for Modern C++</title><link rel=stylesheet href=../../../assets/stylesheets/main.484c7ddc.min.css><link rel=stylesheet href=../../../assets/stylesheets/palette.ab4e12ef.min.css><link rel="stylesheet" href="../../../assets/external/fonts.googleapis.com/css.61a430c9.css"><style>:root{--md-text-font:"Roboto";--md-code-font:"JetBrains Mono"}</style><link rel=stylesheet href=../../../css/custom.css><script>__md_scope=new URL("../../..",location),__md_hash=e=>[...e].reduce(((e,_)=>(e<<5)-e+_.charCodeAt(0)),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script></head> <body dir=ltr data-md-color-scheme=default data-md-color-primary=indigo data-md-color-accent=indigo> <input class=md-toggle data-md-toggle=drawer type=checkbox id=__drawer autocomplete=off> <input class=md-toggle data-md-toggle=search type=checkbox id=__search autocomplete=off> <label class=md-overlay for=__drawer></label> <div data-md-component=skip> <a href=#nlohmannjson_saxstart_array class=md-skip> Skip to content </a> </div> <div data-md-component=announce> </div> <header class=md-header data-md-component=header> <nav class="md-header__inner md-grid" aria-label=Header> <a href=../../.. title="JSON for Modern C++" class="md-header__button md-logo" aria-label="JSON for Modern C++" data-md-component=logo> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54"/></svg> </a> <label class="md-header__button md-icon" for=__drawer> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M3 6h18v2H3zm0 5h18v2H3zm0 5h18v2H3z"/></svg> </label> <div class=md-header__title data-md-component=header-title> <div class=md-header__ellipsis> <div class=md-header__topic> <span class=md-ellipsis> JSON for Modern C++ </span> </div> <div class=md-header__topic data-md-component=header-topic> <span class=md-ellipsis> start_array </span> </div> </div> </div> <form class=md-header__option data-md-component=palette> <input class=md-option data-md-color-media="(prefers-color-scheme: light)" data-md-color-scheme=default data-md-color-primary=indigo data-md-color-accent=indigo aria-label="Switch to dark mode" type=radio name=__palette id=__palette_0> <label class="md-header__button md-icon" title="Switch to dark mode" for=__palette_1 hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a4 4 0 0 0-4 4 4 4 0 0 0 4 4 4 4 0 0 0 4-4 4 4 0 0 0-4-4m0 10a6 6 0 0 1-6-6 6 6 0 0 1 6-6 6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12z"/></svg> </label> <input class=md-option data-md-color-media="(prefers-color-scheme: dark)" data-md-color-scheme=slate data-md-color-primary=indigo data-md-color-accent=indigo aria-label="Switch to light mode" type=radio name=__palette id=__palette_1> <label class="md-header__button md-icon" title="Switch to light mode" for=__palette_0 hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 18c-.89 0-1.74-.2-2.5-.55C11.56 16.5 13 14.42 13 12s-1.44-4.5-3.5-5.45C10.26 6.2 11.11 6 12 6a6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12z"/></svg> </label> </form> <script>var palette=__md_get("__palette");if(palette&&palette.color){if("(prefers-color-scheme)"===palette.color.media){var media=matchMedia("(prefers-color-scheme: light)"),input=document.querySelector(media.matches?"[data-md-color-media='(prefers-color-scheme: light)']":"[data-md-color-media='(prefers-color-scheme: dark)']");palette.color.media=input.getAttribute("data-md-color-media"),palette.color.scheme=input.getAttribute("data-md-color-scheme"),palette.color.primary=input.getAttribute("data-md-color-primary"),palette.color.accent=input.getAttribute("data-md-color-accent")}for(var[key,value]of Object.entries(palette.color))document.body.setAttribute("data-md-color-"+key,value)}</script> <label class="md-header__button md-icon" for=__search> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg> </label> <div class=md-search data-md-component=search role=dialog> <label class=md-search__overlay for=__search></label> <div class=md-search__inner role=search> <form class=md-search__form name=search> <input type=text class=md-search__input name=query aria-label=Search placeholder=Search autocapitalize=off autocorrect=off autocomplete=off spellcheck=false data-md-component=search-query required> <label class="md-search__icon md-icon" for=__search> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11z"/></svg> </label> <nav class=md-search__options aria-label=Search> <button type=reset class="md-search__icon md-icon" title=Clear aria-label=Clear tabindex=-1> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z"/></svg> </button> </nav> </form> <div class=md-search__output> <div class=md-search__scrollwrap tabindex=0 data-md-scrollfix> <div class=md-search-result data-md-component=search-result> <div class=md-search-result__meta> Initializing search </div> <ol class=md-search-result__list role=presentation></ol> </div> </div> </div> </div> </div> <div class=md-header__source> <a href="https://github.com/nlohmann/json" title="Go to repository" class="md-source" data-md-component="source"> <div class="md-source__icon md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </div> <div class=md-source__repository> nlohmann/json </div> </a> </div> </nav> </header> <div class=md-container data-md-component=container> <nav class=md-tabs aria-label=Tabs data-md-component=tabs> <div class=md-grid> <ul class=md-tabs__list> <li class=md-tabs__item> <a href=../../.. class=md-tabs__link> Home </a> </li> <li class=md-tabs__item> <a href=../../../features/arbitrary_types/ class=md-tabs__link> Features </a> </li> <li class=md-tabs__item> <a href=../../../integration/ class=md-tabs__link> Integration </a> </li> <li class="md-tabs__item md-tabs__item--active"> <a href=../../basic_json/ class=md-tabs__link> API Documentation </a> </li> <li class=md-tabs__item> <a href=../../../community/ class=md-tabs__link> Community </a> </li> </ul> </div> </nav> <main class=md-main data-md-component=main> <div class="md-main__inner md-grid"> <div class="md-sidebar md-sidebar--primary" data-md-component=sidebar data-md-type=navigation> <div class=md-sidebar__scrollwrap> <div class=md-sidebar__inner> <nav class="md-nav md-nav--primary md-nav--lifted" aria-label=Navigation data-md-level=0> <label class=md-nav__title for=__drawer> <a href=../../.. title="JSON for Modern C++" class="md-nav__button md-logo" aria-label="JSON for Modern C++" data-md-component=logo> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54"/></svg> </a> JSON for Modern C++ </label> <div class=md-nav__source> <a href="https://github.com/nlohmann/json" title="Go to repository" class="md-source" data-md-component="source"> <div class="md-source__icon md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </div> <div class=md-source__repository> nlohmann/json </div> </a> </div> <ul class=md-nav__list data-md-scrollfix> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_1> <div class="md-nav__link md-nav__container"> <a href=../../.. class="md-nav__link "> <span class=md-ellipsis> Home </span> </a> <label class="md-nav__link " for=__nav_1 id=__nav_1_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_1_label aria-expanded=false> <label class=md-nav__title for=__nav_1> <span class="md-nav__icon md-icon"></span> Home </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../home/license/ class=md-nav__link> <span class=md-ellipsis> License </span> </a> </li> <li class=md-nav__item> <a href=../../../home/faq/ class=md-nav__link> <span class=md-ellipsis> FAQ </span> </a> </li> <li class=md-nav__item> <a href=../../../home/exceptions/ class=md-nav__link> <span class=md-ellipsis> Exceptions </span> </a> </li> <li class=md-nav__item> <a href=../../../home/releases/ class=md-nav__link> <span class=md-ellipsis> Releases </span> </a> </li> <li class=md-nav__item> <a href=../../../home/design_goals/ class=md-nav__link> <span class=md-ellipsis> Design goals </span> </a> </li> <li class=md-nav__item> <a href=../../../home/architecture/ class=md-nav__link> <span class=md-ellipsis> Architecture </span> </a> </li> <li class=md-nav__item> <a href=../../../home/customers/ class=md-nav__link> <span class=md-ellipsis> Customers </span> </a> </li> <li class=md-nav__item> <a href=../../../home/sponsors/ class=md-nav__link> <span class=md-ellipsis> Sponsors </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2> <label class=md-nav__link for=__nav_2 id=__nav_2_label tabindex=0> <span class=md-ellipsis> Features </span> <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_2_label aria-expanded=false> <label class=md-nav__title for=__nav_2> <span class="md-nav__icon md-icon"></span> Features </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/arbitrary_types/ class=md-nav__link> <span class=md-ellipsis> Arbitrary Type Conversions </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_2> <div class="md-nav__link md-nav__container"> <a href=../../../features/binary_formats/ class="md-nav__link "> <span class=md-ellipsis> Binary Formats </span> </a> <label class="md-nav__link " for=__nav_2_2 id=__nav_2_2_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_2_label aria-expanded=false> <label class=md-nav__title for=__nav_2_2> <span class="md-nav__icon md-icon"></span> Binary Formats </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/binary_formats/bjdata/ class=md-nav__link> <span class=md-ellipsis> BJData </span> </a> </li> <li class=md-nav__item> <a href=../../../features/binary_formats/bson/ class=md-nav__link> <span class=md-ellipsis> BSON </span> </a> </li> <li class=md-nav__item> <a href=../../../features/binary_formats/cbor/ class=md-nav__link> <span class=md-ellipsis> CBOR </span> </a> </li> <li class=md-nav__item> <a href=../../../features/binary_formats/messagepack/ class=md-nav__link> <span class=md-ellipsis> MessagePack </span> </a> </li> <li class=md-nav__item> <a href=../../../features/binary_formats/ubjson/ class=md-nav__link> <span class=md-ellipsis> UBJSON </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../../features/binary_values/ class=md-nav__link> <span class=md-ellipsis> Binary Values </span> </a> </li> <li class=md-nav__item> <a href=../../../features/comments/ class=md-nav__link> <span class=md-ellipsis> Comments </span> </a> </li> <li class=md-nav__item> <a href=../../../features/trailing_commas/ class=md-nav__link> <span class=md-ellipsis> Trailing Commas </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_6> <div class="md-nav__link md-nav__container"> <a href=../../../features/element_access/ class="md-nav__link "> <span class=md-ellipsis> Element Access </span> </a> <label class="md-nav__link " for=__nav_2_6 id=__nav_2_6_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_6_label aria-expanded=false> <label class=md-nav__title for=__nav_2_6> <span class="md-nav__icon md-icon"></span> Element Access </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/element_access/unchecked_access/ class=md-nav__link> <span class=md-ellipsis> Unchecked access: operator[] </span> </a> </li> <li class=md-nav__item> <a href=../../../features/element_access/checked_access/ class=md-nav__link> <span class=md-ellipsis> Checked access: at </span> </a> </li> <li class=md-nav__item> <a href=../../../features/element_access/default_value/ class=md-nav__link> <span class=md-ellipsis> Access with default value: value </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../../features/iterators/ class=md-nav__link> <span class=md-ellipsis> Iterators </span> </a> </li> <li class=md-nav__item> <a href=../../../features/json_pointer/ class=md-nav__link> <span class=md-ellipsis> JSON Pointer </span> </a> </li> <li class=md-nav__item> <a href=../../../features/json_patch/ class=md-nav__link> <span class=md-ellipsis> JSON Patch and Diff </span> </a> </li> <li class=md-nav__item> <a href=../../../features/merge_patch/ class=md-nav__link> <span class=md-ellipsis> JSON Merge Patch </span> </a> </li> <li class=md-nav__item> <a href=../../../features/modules/ class=md-nav__link> <span class=md-ellipsis> Modules </span> </a> </li> <li class=md-nav__item> <a href=../../../features/namespace/ class=md-nav__link> <span class=md-ellipsis> nlohmann Namespace </span> </a> </li> <li class=md-nav__item> <a href=../../../features/object_order/ class=md-nav__link> <span class=md-ellipsis> Object Order </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_14> <div class="md-nav__link md-nav__container"> <a href=../../../features/parsing/ class="md-nav__link "> <span class=md-ellipsis> Parsing </span> </a> <label class="md-nav__link " for=__nav_2_14 id=__nav_2_14_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_14_label aria-expanded=false> <label class=md-nav__title for=__nav_2_14> <span class="md-nav__icon md-icon"></span> Parsing </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/parsing/json_lines/ class=md-nav__link> <span class=md-ellipsis> JSON Lines </span> </a> </li> <li class=md-nav__item> <a href=../../../features/parsing/parse_exceptions/ class=md-nav__link> <span class=md-ellipsis> Parsing and Exceptions </span> </a> </li> <li class=md-nav__item> <a href=../../../features/parsing/parser_callbacks/ class=md-nav__link> <span class=md-ellipsis> Parser Callbacks </span> </a> </li> <li class=md-nav__item> <a href=../../../features/parsing/sax_interface/ class=md-nav__link> <span class=md-ellipsis> SAX Interface </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../../features/assertions/ class=md-nav__link> <span class=md-ellipsis> Runtime Assertions </span> </a> </li> <li class=md-nav__item> <a href=../../../features/enum_conversion/ class=md-nav__link> <span class=md-ellipsis> Specializing enum conversion </span> </a> </li> <li class=md-nav__item> <a href=../../../features/macros/ class=md-nav__link> <span class=md-ellipsis> Supported Macros </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_18> <div class="md-nav__link md-nav__container"> <a href=../../../features/types/ class="md-nav__link "> <span class=md-ellipsis> Types </span> </a> <label class="md-nav__link " for=__nav_2_18 id=__nav_2_18_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_18_label aria-expanded=false> <label class=md-nav__title for=__nav_2_18> <span class="md-nav__icon md-icon"></span> Types </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/types/number_handling/ class=md-nav__link> <span class=md-ellipsis> Number Handling </span> </a> </li> </ul> </nav> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_3> <div class="md-nav__link md-nav__container"> <a href=../../../integration/ class="md-nav__link "> <span class=md-ellipsis> Integration </span> </a> <label class="md-nav__link " for=__nav_3 id=__nav_3_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_3_label aria-expanded=false> <label class=md-nav__title for=__nav_3> <span class="md-nav__icon md-icon"></span> Integration </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../integration/migration_guide/ class=md-nav__link> <span class=md-ellipsis> Migration Guide </span> </a> </li> <li class=md-nav__item> <a href=../../../integration/cmake/ class=md-nav__link> <span class=md-ellipsis> CMake </span> </a> </li> <li class=md-nav__item> <a href=../../../integration/package_managers/ class=md-nav__link> <span class=md-ellipsis> Package Managers </span> </a> </li> <li class=md-nav__item> <a href=../../../integration/pkg-config/ class=md-nav__link> <span class=md-ellipsis> Pkg-config </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--active md-nav__item--section md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4 checked> <label class=md-nav__link for=__nav_4 id=__nav_4_label tabindex> <span class=md-ellipsis> API Documentation </span> <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_4_label aria-expanded=true> <label class=md-nav__title for=__nav_4> <span class="md-nav__icon md-icon"></span> API Documentation </label> <ul class=md-nav__list data-md-scrollfix> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_1> <div class="md-nav__link md-nav__container"> <a href=../../basic_json/ class="md-nav__link "> <span class=md-ellipsis> basic_json </span> </a> <label class="md-nav__link " for=__nav_4_1 id=__nav_4_1_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_1_label aria-expanded=false> <label class=md-nav__title for=__nav_4_1> <span class="md-nav__icon md-icon"></span> basic_json </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../basic_json/basic_json/ class=md-nav__link> <span class=md-ellipsis> (Constructor) </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/~basic_json/ class=md-nav__link> <span class=md-ellipsis> (Destructor) </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/accept/ class=md-nav__link> <span class=md-ellipsis> accept </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/array/ class=md-nav__link> <span class=md-ellipsis> array </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/array_t/ class=md-nav__link> <span class=md-ellipsis> array_t </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/at/ class=md-nav__link> <span class=md-ellipsis> at </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/back/ class=md-nav__link> <span class=md-ellipsis> back </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/begin/ class=md-nav__link> <span class=md-ellipsis> begin </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/binary/ class=md-nav__link> <span class=md-ellipsis> binary </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/binary_t/ class=md-nav__link> <span class=md-ellipsis> binary_t </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/boolean_t/ class=md-nav__link> <span class=md-ellipsis> boolean_t </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/cbegin/ class=md-nav__link> <span class=md-ellipsis> cbegin </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/cbor_tag_handler_t/ class=md-nav__link> <span class=md-ellipsis> cbor_tag_handler_t </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/cend/ class=md-nav__link> <span class=md-ellipsis> cend </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/clear/ class=md-nav__link> <span class=md-ellipsis> clear </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/contains/ class=md-nav__link> <span class=md-ellipsis> contains </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/count/ class=md-nav__link> <span class=md-ellipsis> count </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/crbegin/ class=md-nav__link> <span class=md-ellipsis> crbegin </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/crend/ class=md-nav__link> <span class=md-ellipsis> crend </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/default_object_comparator_t/ class=md-nav__link> <span class=md-ellipsis> default_object_comparator_t </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/diff/ class=md-nav__link> <span class=md-ellipsis> diff </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/dump/ class=md-nav__link> <span class=md-ellipsis> dump </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/emplace/ class=md-nav__link> <span class=md-ellipsis> emplace </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/emplace_back/ class=md-nav__link> <span class=md-ellipsis> emplace_back </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/empty/ class=md-nav__link> <span class=md-ellipsis> empty </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/end/ class=md-nav__link> <span class=md-ellipsis> end </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/end_pos/ class=md-nav__link> <span class=md-ellipsis> end_pos </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/erase/ class=md-nav__link> <span class=md-ellipsis> erase </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/error_handler_t/ class=md-nav__link> <span class=md-ellipsis> error_handler_t </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/exception/ class=md-nav__link> <span class=md-ellipsis> exception </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/find/ class=md-nav__link> <span class=md-ellipsis> find </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/flatten/ class=md-nav__link> <span class=md-ellipsis> flatten </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/from_bjdata/ class=md-nav__link> <span class=md-ellipsis> from_bjdata </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/from_bson/ class=md-nav__link> <span class=md-ellipsis> from_bson </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/from_cbor/ class=md-nav__link> <span class=md-ellipsis> from_cbor </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/from_msgpack/ class=md-nav__link> <span class=md-ellipsis> from_msgpack </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/from_ubjson/ class=md-nav__link> <span class=md-ellipsis> from_ubjson </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/front/ class=md-nav__link> <span class=md-ellipsis> front </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/get/ class=md-nav__link> <span class=md-ellipsis> get </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/get_allocator/ class=md-nav__link> <span class=md-ellipsis> get_allocator </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/get_binary/ class=md-nav__link> <span class=md-ellipsis> get_binary </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/get_ptr/ class=md-nav__link> <span class=md-ellipsis> get_ptr </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/get_ref/ class=md-nav__link> <span class=md-ellipsis> get_ref </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/get_to/ class=md-nav__link> <span class=md-ellipsis> get_to </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/std_hash/ class=md-nav__link> <span class=md-ellipsis> std::hash&lt;basic_json&gt; </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/input_format_t/ class=md-nav__link> <span class=md-ellipsis> input_format_t </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/insert/ class=md-nav__link> <span class=md-ellipsis> insert </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/invalid_iterator/ class=md-nav__link> <span class=md-ellipsis> invalid_iterator </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/is_array/ class=md-nav__link> <span class=md-ellipsis> is_array </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/is_binary/ class=md-nav__link> <span class=md-ellipsis> is_binary </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/is_boolean/ class=md-nav__link> <span class=md-ellipsis> is_boolean </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/is_discarded/ class=md-nav__link> <span class=md-ellipsis> is_discarded </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/is_null/ class=md-nav__link> <span class=md-ellipsis> is_null </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/is_number/ class=md-nav__link> <span class=md-ellipsis> is_number </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/is_number_float/ class=md-nav__link> <span class=md-ellipsis> is_number_float </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/is_number_integer/ class=md-nav__link> <span class=md-ellipsis> is_number_integer </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/is_number_unsigned/ class=md-nav__link> <span class=md-ellipsis> is_number_unsigned </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/is_object/ class=md-nav__link> <span class=md-ellipsis> is_object </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/is_primitive/ class=md-nav__link> <span class=md-ellipsis> is_primitive </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/is_string/ class=md-nav__link> <span class=md-ellipsis> is_string </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/is_structured/ class=md-nav__link> <span class=md-ellipsis> is_structured </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/items/ class=md-nav__link> <span class=md-ellipsis> items </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/json_base_class_t/ class=md-nav__link> <span class=md-ellipsis> json_base_class_t </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/json_serializer/ class=md-nav__link> <span class=md-ellipsis> json_serializer </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/max_size/ class=md-nav__link> <span class=md-ellipsis> max_size </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/meta/ class=md-nav__link> <span class=md-ellipsis> meta </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/merge_patch/ class=md-nav__link> <span class=md-ellipsis> merge_patch </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/number_float_t/ class=md-nav__link> <span class=md-ellipsis> number_float_t </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/number_integer_t/ class=md-nav__link> <span class=md-ellipsis> number_integer_t </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/number_unsigned_t/ class=md-nav__link> <span class=md-ellipsis> number_unsigned_t </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/object/ class=md-nav__link> <span class=md-ellipsis> object </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/object_comparator_t/ class=md-nav__link> <span class=md-ellipsis> object_comparator_t </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/object_t/ class=md-nav__link> <span class=md-ellipsis> object_t </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/operator_ValueType/ class=md-nav__link> <span class=md-ellipsis> operator ValueType </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/operator_value_t/ class=md-nav__link> <span class=md-ellipsis> operator value_t </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/operator%5B%5D/ class=md-nav__link> <span class=md-ellipsis> operator[] </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/operator%3D/ class=md-nav__link> <span class=md-ellipsis> operator= </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/operator%2B%3D/ class=md-nav__link> <span class=md-ellipsis> operator+= </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/operator_eq/ class=md-nav__link> <span class=md-ellipsis> operator== </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/operator_ne/ class=md-nav__link> <span class=md-ellipsis> operator!= </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/operator_lt/ class=md-nav__link> <span class=md-ellipsis> operator< </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/operator_gt/ class=md-nav__link> <span class=md-ellipsis> operator> </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/operator_le/ class=md-nav__link> <span class=md-ellipsis> operator<= </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/operator_ge/ class=md-nav__link> <span class=md-ellipsis> operator>= </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/operator_spaceship/ class=md-nav__link> <span class=md-ellipsis> operator<=> </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/out_of_range/ class=md-nav__link> <span class=md-ellipsis> out_of_range </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/other_error/ class=md-nav__link> <span class=md-ellipsis> other_error </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/parse/ class=md-nav__link> <span class=md-ellipsis> parse </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/parse_error/ class=md-nav__link> <span class=md-ellipsis> parse_error </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/parse_event_t/ class=md-nav__link> <span class=md-ellipsis> parse_event_t </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/parser_callback_t/ class=md-nav__link> <span class=md-ellipsis> parser_callback_t </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/patch/ class=md-nav__link> <span class=md-ellipsis> patch </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/patch_inplace/ class=md-nav__link> <span class=md-ellipsis> patch_inplace </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/push_back/ class=md-nav__link> <span class=md-ellipsis> push_back </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/rbegin/ class=md-nav__link> <span class=md-ellipsis> rbegin </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/rend/ class=md-nav__link> <span class=md-ellipsis> rend </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/sax_parse/ class=md-nav__link> <span class=md-ellipsis> sax_parse </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/size/ class=md-nav__link> <span class=md-ellipsis> size </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/start_pos/ class=md-nav__link> <span class=md-ellipsis> start_pos </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/string_t/ class=md-nav__link> <span class=md-ellipsis> string_t </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/swap/ class=md-nav__link> <span class=md-ellipsis> swap </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/std_swap/ class=md-nav__link> <span class=md-ellipsis> std::swap&lt;basic_json&gt; </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/to_bjdata/ class=md-nav__link> <span class=md-ellipsis> to_bjdata </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/to_bson/ class=md-nav__link> <span class=md-ellipsis> to_bson </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/to_cbor/ class=md-nav__link> <span class=md-ellipsis> to_cbor </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/to_msgpack/ class=md-nav__link> <span class=md-ellipsis> to_msgpack </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/to_string/ class=md-nav__link> <span class=md-ellipsis> to_string </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/to_ubjson/ class=md-nav__link> <span class=md-ellipsis> to_ubjson </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/type/ class=md-nav__link> <span class=md-ellipsis> type </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/type_error/ class=md-nav__link> <span class=md-ellipsis> type_error </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/type_name/ class=md-nav__link> <span class=md-ellipsis> type_name </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/unflatten/ class=md-nav__link> <span class=md-ellipsis> unflatten </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/update/ class=md-nav__link> <span class=md-ellipsis> update </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/value/ class=md-nav__link> <span class=md-ellipsis> value </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/value_t/ class=md-nav__link> <span class=md-ellipsis> value_t </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_2> <div class="md-nav__link md-nav__container"> <a href=../../byte_container_with_subtype/ class="md-nav__link "> <span class=md-ellipsis> byte_container_with_subtype </span> </a> <label class="md-nav__link " for=__nav_4_2 id=__nav_4_2_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_2_label aria-expanded=false> <label class=md-nav__title for=__nav_4_2> <span class="md-nav__icon md-icon"></span> byte_container_with_subtype </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../byte_container_with_subtype/byte_container_with_subtype/ class=md-nav__link> <span class=md-ellipsis> (constructor) </span> </a> </li> <li class=md-nav__item> <a href=../../byte_container_with_subtype/clear_subtype/ class=md-nav__link> <span class=md-ellipsis> clear_subtype </span> </a> </li> <li class=md-nav__item> <a href=../../byte_container_with_subtype/has_subtype/ class=md-nav__link> <span class=md-ellipsis> has_subtype </span> </a> </li> <li class=md-nav__item> <a href=../../byte_container_with_subtype/set_subtype/ class=md-nav__link> <span class=md-ellipsis> set_subtype </span> </a> </li> <li class=md-nav__item> <a href=../../byte_container_with_subtype/subtype/ class=md-nav__link> <span class=md-ellipsis> subtype </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_3> <div class="md-nav__link md-nav__container"> <a href=../../adl_serializer/ class="md-nav__link "> <span class=md-ellipsis> adl_serializer </span> </a> <label class="md-nav__link " for=__nav_4_3 id=__nav_4_3_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_3_label aria-expanded=false> <label class=md-nav__title for=__nav_4_3> <span class="md-nav__icon md-icon"></span> adl_serializer </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../adl_serializer/from_json/ class=md-nav__link> <span class=md-ellipsis> from_json </span> </a> </li> <li class=md-nav__item> <a href=../../adl_serializer/to_json/ class=md-nav__link> <span class=md-ellipsis> to_json </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../json/ class=md-nav__link> <span class=md-ellipsis> json </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_5> <div class="md-nav__link md-nav__container"> <a href=../../json_pointer/ class="md-nav__link "> <span class=md-ellipsis> json_pointer </span> </a> <label class="md-nav__link " for=__nav_4_5 id=__nav_4_5_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_5_label aria-expanded=false> <label class=md-nav__title for=__nav_4_5> <span class="md-nav__icon md-icon"></span> json_pointer </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../json_pointer/json_pointer/ class=md-nav__link> <span class=md-ellipsis> (Constructor) </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/back/ class=md-nav__link> <span class=md-ellipsis> back </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/empty/ class=md-nav__link> <span class=md-ellipsis> empty </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/front/ class=md-nav__link> <span class=md-ellipsis> front </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_string_t/ class=md-nav__link> <span class=md-ellipsis> operator string_t </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_eq/ class=md-nav__link> <span class=md-ellipsis> operator== </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_ne/ class=md-nav__link> <span class=md-ellipsis> operator!= </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_slash/ class=md-nav__link> <span class=md-ellipsis> operator/ </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_slasheq/ class=md-nav__link> <span class=md-ellipsis> operator/= </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/parent_pointer/ class=md-nav__link> <span class=md-ellipsis> parent_pointer </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/pop_back/ class=md-nav__link> <span class=md-ellipsis> pop_back </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/pop_front/ class=md-nav__link> <span class=md-ellipsis> pop_front </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/push_back/ class=md-nav__link> <span class=md-ellipsis> push_back </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/push_front/ class=md-nav__link> <span class=md-ellipsis> push_front </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/string_t/ class=md-nav__link> <span class=md-ellipsis> string_t </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/to_string/ class=md-nav__link> <span class=md-ellipsis> to_string </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--active md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_6 checked> <div class="md-nav__link md-nav__container"> <a href=../ class="md-nav__link "> <span class=md-ellipsis> json_sax </span> </a> <label class="md-nav__link " for=__nav_4_6 id=__nav_4_6_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_6_label aria-expanded=true> <label class=md-nav__title for=__nav_4_6> <span class="md-nav__icon md-icon"></span> json_sax </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../binary/ class=md-nav__link> <span class=md-ellipsis> binary </span> </a> </li> <li class=md-nav__item> <a href=../boolean/ class=md-nav__link> <span class=md-ellipsis> boolean </span> </a> </li> <li class=md-nav__item> <a href=../end_array/ class=md-nav__link> <span class=md-ellipsis> end_array </span> </a> </li> <li class=md-nav__item> <a href=../end_object/ class=md-nav__link> <span class=md-ellipsis> end_object </span> </a> </li> <li class=md-nav__item> <a href=../key/ class=md-nav__link> <span class=md-ellipsis> key </span> </a> </li> <li class=md-nav__item> <a href=../null/ class=md-nav__link> <span class=md-ellipsis> null </span> </a> </li> <li class=md-nav__item> <a href=../number_float/ class=md-nav__link> <span class=md-ellipsis> number_float </span> </a> </li> <li class=md-nav__item> <a href=../number_integer/ class=md-nav__link> <span class=md-ellipsis> number_integer </span> </a> </li> <li class=md-nav__item> <a href=../number_unsigned/ class=md-nav__link> <span class=md-ellipsis> number_unsigned </span> </a> </li> <li class=md-nav__item> <a href=../parse_error/ class=md-nav__link> <span class=md-ellipsis> parse_error </span> </a> </li> <li class="md-nav__item md-nav__item--active"> <input class="md-nav__toggle md-toggle" type=checkbox id=__toc> <label class="md-nav__link md-nav__link--active" for=__toc> <span class=md-ellipsis> start_array </span> <span class="md-nav__icon md-icon"></span> </label> <a href=./ class="md-nav__link md-nav__link--active"> <span class=md-ellipsis> start_array </span> </a> <nav class="md-nav md-nav--secondary" aria-label="Table of contents"> <label class=md-nav__title for=__toc> <span class="md-nav__icon md-icon"></span> Table of contents </label> <ul class=md-nav__list data-md-component=toc data-md-scrollfix> <li class=md-nav__item> <a href=#parameters class=md-nav__link> <span class=md-ellipsis> Parameters </span> </a> </li> <li class=md-nav__item> <a href=#return-value class=md-nav__link> <span class=md-ellipsis> Return value </span> </a> </li> <li class=md-nav__item> <a href=#notes class=md-nav__link> <span class=md-ellipsis> Notes </span> </a> </li> <li class=md-nav__item> <a href=#examples class=md-nav__link> <span class=md-ellipsis> Examples </span> </a> </li> <li class=md-nav__item> <a href=#version-history class=md-nav__link> <span class=md-ellipsis> Version history </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../start_object/ class=md-nav__link> <span class=md-ellipsis> start_object </span> </a> </li> <li class=md-nav__item> <a href=../string/ class=md-nav__link> <span class=md-ellipsis> string </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../operator_ltlt/ class=md-nav__link> <span class=md-ellipsis> operator<<(basic_json), operator<<(json_pointer) </span> </a> </li> <li class=md-nav__item> <a href=../../operator_gtgt/ class=md-nav__link> <span class=md-ellipsis> operator>>(basic_json) </span> </a> </li> <li class=md-nav__item> <a href=../../operator_literal_json/ class=md-nav__link> <span class=md-ellipsis> operator""_json </span> </a> </li> <li class=md-nav__item> <a href=../../operator_literal_json_pointer/ class=md-nav__link> <span class=md-ellipsis> operator""_json_pointer </span> </a> </li> <li class=md-nav__item> <a href=../../ordered_json/ class=md-nav__link> <span class=md-ellipsis> ordered_json </span> </a> </li> <li class=md-nav__item> <a href=../../ordered_map/ class=md-nav__link> <span class=md-ellipsis> ordered_map </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_13> <div class="md-nav__link md-nav__container"> <a href=../../macros/ class="md-nav__link "> <span class=md-ellipsis> macros </span> </a> <label class="md-nav__link " for=__nav_4_13 id=__nav_4_13_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_13_label aria-expanded=false> <label class=md-nav__title for=__nav_4_13> <span class="md-nav__icon md-icon"></span> macros </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../macros/json_assert/ class=md-nav__link> <span class=md-ellipsis> JSON_ASSERT </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_brace_init_copy_semantics/ class=md-nav__link> <span class=md-ellipsis> JSON_BRACE_INIT_COPY_SEMANTICS </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_throw_user/ class=md-nav__link> <span class=md-ellipsis> JSON_CATCH_USER, JSON_THROW_USER, JSON_TRY_USER </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_diagnostics/ class=md-nav__link> <span class=md-ellipsis> JSON_DIAGNOSTICS </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_diagnostic_positions/ class=md-nav__link> <span class=md-ellipsis> JSON_DIAGNOSTIC_POSITIONS </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_disable_enum_serialization/ class=md-nav__link> <span class=md-ellipsis> JSON_DISABLE_ENUM_SERIALIZATION </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_has_cpp_11/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_CPP_11, JSON_HAS_CPP_14, JSON_HAS_CPP_17, JSON_HAS_CPP_20 </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_has_filesystem/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_EXPERIMENTAL_FILESYSTEM, JSON_HAS_FILESYSTEM </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_has_ranges/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_RANGES </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_has_static_rtti/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_STATIC_RTTI </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_has_three_way_comparison/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_THREE_WAY_COMPARISON </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_noexception/ class=md-nav__link> <span class=md-ellipsis> JSON_NOEXCEPTION </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_no_io/ class=md-nav__link> <span class=md-ellipsis> JSON_NO_IO </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_skip_library_version_check/ class=md-nav__link> <span class=md-ellipsis> JSON_SKIP_LIBRARY_VERSION_CHECK </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_skip_unsupported_compiler_check/ class=md-nav__link> <span class=md-ellipsis> JSON_SKIP_UNSUPPORTED_COMPILER_CHECK </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_use_global_udls/ class=md-nav__link> <span class=md-ellipsis> JSON_USE_GLOBAL_UDLS </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_use_implicit_conversions/ class=md-nav__link> <span class=md-ellipsis> JSON_USE_IMPLICIT_CONVERSIONS </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_use_legacy_discarded_value_comparison/ class=md-nav__link> <span class=md-ellipsis> JSON_USE_LEGACY_DISCARDED_VALUE_COMPARISON </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_define_derived_type/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_ONLY_SERIALIZE, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_define_type_intrusive/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_TYPE_INTRUSIVE, NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_TYPE_INTRUSIVE_ONLY_SERIALIZE </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_define_type_non_intrusive/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_define_type_with_names/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_TYPE_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_namespace/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_NAMESPACE </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_namespace_begin/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_NAMESPACE_BEGIN, NLOHMANN_JSON_NAMESPACE_END </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_namespace_no_version/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_NAMESPACE_NO_VERSION </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_serialize_enum/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_SERIALIZE_ENUM </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_serialize_enum_strict/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_SERIALIZE_ENUM_STRICT </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_version_major/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_VERSION_MAJOR, NLOHMANN_JSON_VERSION_MINOR, NLOHMANN_JSON_VERSION_PATCH </span> </a> </li> </ul> </nav> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_5> <div class="md-nav__link md-nav__container"> <a href=../../../community/ class="md-nav__link "> <span class=md-ellipsis> Community </span> </a> <label class="md-nav__link " for=__nav_5 id=__nav_5_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_5_label aria-expanded=false> <label class=md-nav__title for=__nav_5> <span class="md-nav__icon md-icon"></span> Community </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../community/code_of_conduct/ class=md-nav__link> <span class=md-ellipsis> Code of Conduct </span> </a> </li> <li class=md-nav__item> <a href=../../../community/contribution_guidelines/ class=md-nav__link> <span class=md-ellipsis> Contribution Guidelines </span> </a> </li> <li class=md-nav__item> <a href=../../../community/quality_assurance/ class=md-nav__link> <span class=md-ellipsis> Quality assurance </span> </a> </li> <li class=md-nav__item> <a href=../../../community/governance/ class=md-nav__link> <span class=md-ellipsis> Governance </span> </a> </li> <li class=md-nav__item> <a href=../../../community/security_policy/ class=md-nav__link> <span class=md-ellipsis> Security Policy </span> </a> </li> </ul> </nav> </li> </ul> </nav> </div> </div> </div> <div class="md-sidebar md-sidebar--secondary" data-md-component=sidebar data-md-type=toc> <div class=md-sidebar__scrollwrap> <div class=md-sidebar__inner> <nav class="md-nav md-nav--secondary" aria-label="Table of contents"> <label class=md-nav__title for=__toc> <span class="md-nav__icon md-icon"></span> Table of contents </label> <ul class=md-nav__list data-md-component=toc data-md-scrollfix> <li class=md-nav__item> <a href=#parameters class=md-nav__link> <span class=md-ellipsis> Parameters </span> </a> </li> <li class=md-nav__item> <a href=#return-value class=md-nav__link> <span class=md-ellipsis> Return value </span> </a> </li> <li class=md-nav__item> <a href=#notes class=md-nav__link> <span class=md-ellipsis> Notes </span> </a> </li> <li class=md-nav__item> <a href=#examples class=md-nav__link> <span class=md-ellipsis> Examples </span> </a> </li> <li class=md-nav__item> <a href=#version-history class=md-nav__link> <span class=md-ellipsis> Version history </span> </a> </li> </ul> </nav> </div> </div> </div> <div class=md-content data-md-component=content> <article class="md-content__inner md-typeset"> <a href="https://github.com/nlohmann/json/edit/develop/docs/mkdocs/docs/api/json_sax/start_array.md" title="Edit this page" class="md-content__button md-icon" rel="edit"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M10 20H6V4h7v5h5v3.1l2-2V8l-6-6H6c-1.1 0-2 .9-2 2v16c0 1.1.9 2 2 2h4zm10.2-7c.1 0 .3.1.4.2l1.3 1.3c.2.2.2.6 0 .8l-1 1-2.1-2.1 1-1c.1-.1.2-.2.4-.2m0 3.9L14.1 23H12v-2.1l6.1-6.1z"/></svg> </a> <a href="https://github.com/nlohmann/json/raw/develop/docs/mkdocs/docs/api/json_sax/start_array.md" title="View source of this page" class="md-content__button md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M17 18c.56 0 1 .44 1 1s-.44 1-1 1-1-.44-1-1 .44-1 1-1m0-3c-2.73 0-5.06 1.66-6 4 .94 2.34 3.27 4 6 4s5.06-1.66 6-4c-.94-2.34-3.27-4-6-4m0 6.5a2.5 2.5 0 0 1-2.5-2.5 2.5 2.5 0 0 1 2.5-2.5 2.5 2.5 0 0 1 2.5 2.5 2.5 2.5 0 0 1-2.5 2.5M9.27 20H6V4h7v5h5v4.07c.7.08 1.36.25 2 .49V8l-6-6H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h4.5a8.2 8.2 0 0 1-1.23-2"/></svg> </a> <h1 id=nlohmannjson_saxstart_array><small>nlohmann::json_sax::</small>start_array<a class=headerlink href=#nlohmannjson_saxstart_array title="Permanent link">&para;</a></h1> <div class=highlight><pre><span></span><code><span class=k>virtual</span><span class=w> </span><span class=kt>bool</span><span class=w> </span><span class=nf>start_array</span><span class=p>(</span><span class=n>std</span><span class=o>::</span><span class=kt>size_t</span><span class=w> </span><span class=n>elements</span><span class=p>)</span><span class=w> </span><span class=o>=</span><span class=w> </span><span class=mi>0</span><span class=p>;</span>
-</code></pre></div> <p>The beginning of an array was read.</p> <h2 id=parameters>Parameters<a class=headerlink href=#parameters title="Permanent link">&para;</a></h2> <dl> <dt><code>elements</code> (in)</dt> <dd>number of object elements or <code class=highlight><span class=mi>-1</span></code> if unknown</dd> </dl> <h2 id=return-value>Return value<a class=headerlink href=#return-value title="Permanent link">&para;</a></h2> <p>Whether parsing should proceed.</p> <h2 id=notes>Notes<a class=headerlink href=#notes title="Permanent link">&para;</a></h2> <p>Binary formats may report the number of elements.</p> <h2 id=examples>Examples<a class=headerlink href=#examples title="Permanent link">&para;</a></h2> <details class=example> <summary>Example</summary> <p>The example below shows how the <abbr title="Simple API for XML">SAX</abbr> interface is used.</p> <div class=highlight><pre><span></span><code><span class=cp>#include</span><span class=w> </span><span class=cpf>&lt;iostream&gt;</span>
+</code></pre></div> <p>The beginning of an array was read.</p> <h2 id=parameters>Parameters<a class=headerlink href=#parameters title="Permanent link">&para;</a></h2> <dl> <dt><code>elements</code> (in)</dt> <dd>number of array elements, or <code class=highlight><span class=n>std</span><span class=o>::</span><span class=n>numeric_limits</span><span class=o>&lt;</span><span class=n>std</span><span class=o>::</span><span class=kt>size_t</span><span class=o>&gt;::</span><span class=n>max</span><span class=p>()</span></code> if unknown</dd> </dl> <h2 id=return-value>Return value<a class=headerlink href=#return-value title="Permanent link">&para;</a></h2> <p>Whether parsing should proceed.</p> <h2 id=notes>Notes<a class=headerlink href=#notes title="Permanent link">&para;</a></h2> <p>Binary formats may report the number of elements.</p> <h2 id=examples>Examples<a class=headerlink href=#examples title="Permanent link">&para;</a></h2> <details class=example> <summary>Example</summary> <p>The example below shows how the <abbr title="Simple API for XML">SAX</abbr> interface is used.</p> <div class=highlight><pre><span></span><code><span class=cp>#include</span><span class=w> </span><span class=cpf>&lt;iostream&gt;</span>
 <span class=cp>#include</span><span class=w> </span><span class=cpf>&lt;iomanip&gt;</span>
 <span class=cp>#include</span><span class=w> </span><span class=cpf>&lt;sstream&gt;</span>
 <span class=cp>#include</span><span class=w> </span><span class=cpf>&lt;nlohmann/json.hpp&gt;</span>
@@ -167,4 +167,4 @@
 <span class=w>            </span><span class=err>ex=</span><span class=p>[</span><span class=err>jso</span><span class=kc>n</span><span class=err>.excep</span><span class=kc>t</span><span class=err>io</span><span class=kc>n</span><span class=err>.parse_error.</span><span class=mi>101</span><span class=p>]</span><span class=w> </span><span class=err>parse</span><span class=w> </span><span class=err>error</span><span class=w> </span><span class=err>a</span><span class=kc>t</span><span class=w> </span><span class=err>li</span><span class=kc>ne</span><span class=w> </span><span class=mi>17</span><span class=p>,</span><span class=w> </span><span class=err>colum</span><span class=kc>n</span><span class=w> </span><span class=mi>6</span><span class=p>:</span><span class=w> </span><span class=err>sy</span><span class=kc>nta</span><span class=err>x</span><span class=w> </span><span class=err>error</span><span class=w> </span><span class=err>while</span><span class=w> </span><span class=err>parsi</span><span class=kc>n</span><span class=err>g</span><span class=w> </span><span class=err>value</span><span class=w> </span><span class=mi>-</span><span class=w> </span><span class=err>u</span><span class=kc>ne</span><span class=err>xpec</span><span class=kc>te</span><span class=err>d</span><span class=w> </span><span class=err>&#39;</span><span class=p>]</span><span class=err>&#39;;</span><span class=w> </span><span class=err>expec</span><span class=kc>te</span><span class=err>d</span><span class=w> </span><span class=err>e</span><span class=kc>n</span><span class=err>d</span><span class=w> </span><span class=err>o</span><span class=kc>f</span><span class=w> </span><span class=err>i</span><span class=kc>n</span><span class=err>pu</span><span class=kc>t</span><span class=err>)</span>
 
 <span class=err>resul</span><span class=kc>t</span><span class=p>:</span><span class=w> </span><span class=kc>false</span>
-</code></pre></div> </details> <h2 id=version-history>Version history<a class=headerlink href=#version-history title="Permanent link">&para;</a></h2> <ul> <li>Added in version 3.2.0.</li> </ul> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 23, 2026 11:16:18 UTC">June 23, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
+</code></pre></div> </details> <h2 id=version-history>Version history<a class=headerlink href=#version-history title="Permanent link">&para;</a></h2> <ul> <li>Added in version 3.2.0.</li> </ul> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 29, 2026 20:15:18 UTC">June 29, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
diff --git a/api/json_sax/start_object/index.html b/api/json_sax/start_object/index.html
index 835dc91..ee82b64 100644
--- a/api/json_sax/start_object/index.html
+++ b/api/json_sax/start_object/index.html
@@ -1,5 +1,5 @@
 <!doctype html><html lang=en class=no-js> <head><meta charset=utf-8><meta name=viewport content="width=device-width,initial-scale=1"><meta name=author content="Niels Lohmann"><link href="https://json.nlohmann.me/api/json_sax/start_object/" rel="canonical"><link href=../start_array/ rel=prev><link href=../string/ rel=next><link rel=icon href=../../../assets/images/favicon.png><meta name=generator content="mkdocs-1.6.1, mkdocs-material-9.7.6"><title>start_object - JSON for Modern C++</title><link rel=stylesheet href=../../../assets/stylesheets/main.484c7ddc.min.css><link rel=stylesheet href=../../../assets/stylesheets/palette.ab4e12ef.min.css><link rel="stylesheet" href="../../../assets/external/fonts.googleapis.com/css.61a430c9.css"><style>:root{--md-text-font:"Roboto";--md-code-font:"JetBrains Mono"}</style><link rel=stylesheet href=../../../css/custom.css><script>__md_scope=new URL("../../..",location),__md_hash=e=>[...e].reduce(((e,_)=>(e<<5)-e+_.charCodeAt(0)),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script></head> <body dir=ltr data-md-color-scheme=default data-md-color-primary=indigo data-md-color-accent=indigo> <input class=md-toggle data-md-toggle=drawer type=checkbox id=__drawer autocomplete=off> <input class=md-toggle data-md-toggle=search type=checkbox id=__search autocomplete=off> <label class=md-overlay for=__drawer></label> <div data-md-component=skip> <a href=#nlohmannjson_saxstart_object class=md-skip> Skip to content </a> </div> <div data-md-component=announce> </div> <header class=md-header data-md-component=header> <nav class="md-header__inner md-grid" aria-label=Header> <a href=../../.. title="JSON for Modern C++" class="md-header__button md-logo" aria-label="JSON for Modern C++" data-md-component=logo> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54"/></svg> </a> <label class="md-header__button md-icon" for=__drawer> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M3 6h18v2H3zm0 5h18v2H3zm0 5h18v2H3z"/></svg> </label> <div class=md-header__title data-md-component=header-title> <div class=md-header__ellipsis> <div class=md-header__topic> <span class=md-ellipsis> JSON for Modern C++ </span> </div> <div class=md-header__topic data-md-component=header-topic> <span class=md-ellipsis> start_object </span> </div> </div> </div> <form class=md-header__option data-md-component=palette> <input class=md-option data-md-color-media="(prefers-color-scheme: light)" data-md-color-scheme=default data-md-color-primary=indigo data-md-color-accent=indigo aria-label="Switch to dark mode" type=radio name=__palette id=__palette_0> <label class="md-header__button md-icon" title="Switch to dark mode" for=__palette_1 hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a4 4 0 0 0-4 4 4 4 0 0 0 4 4 4 4 0 0 0 4-4 4 4 0 0 0-4-4m0 10a6 6 0 0 1-6-6 6 6 0 0 1 6-6 6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12z"/></svg> </label> <input class=md-option data-md-color-media="(prefers-color-scheme: dark)" data-md-color-scheme=slate data-md-color-primary=indigo data-md-color-accent=indigo aria-label="Switch to light mode" type=radio name=__palette id=__palette_1> <label class="md-header__button md-icon" title="Switch to light mode" for=__palette_0 hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 18c-.89 0-1.74-.2-2.5-.55C11.56 16.5 13 14.42 13 12s-1.44-4.5-3.5-5.45C10.26 6.2 11.11 6 12 6a6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12z"/></svg> </label> </form> <script>var palette=__md_get("__palette");if(palette&&palette.color){if("(prefers-color-scheme)"===palette.color.media){var media=matchMedia("(prefers-color-scheme: light)"),input=document.querySelector(media.matches?"[data-md-color-media='(prefers-color-scheme: light)']":"[data-md-color-media='(prefers-color-scheme: dark)']");palette.color.media=input.getAttribute("data-md-color-media"),palette.color.scheme=input.getAttribute("data-md-color-scheme"),palette.color.primary=input.getAttribute("data-md-color-primary"),palette.color.accent=input.getAttribute("data-md-color-accent")}for(var[key,value]of Object.entries(palette.color))document.body.setAttribute("data-md-color-"+key,value)}</script> <label class="md-header__button md-icon" for=__search> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg> </label> <div class=md-search data-md-component=search role=dialog> <label class=md-search__overlay for=__search></label> <div class=md-search__inner role=search> <form class=md-search__form name=search> <input type=text class=md-search__input name=query aria-label=Search placeholder=Search autocapitalize=off autocorrect=off autocomplete=off spellcheck=false data-md-component=search-query required> <label class="md-search__icon md-icon" for=__search> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11z"/></svg> </label> <nav class=md-search__options aria-label=Search> <button type=reset class="md-search__icon md-icon" title=Clear aria-label=Clear tabindex=-1> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z"/></svg> </button> </nav> </form> <div class=md-search__output> <div class=md-search__scrollwrap tabindex=0 data-md-scrollfix> <div class=md-search-result data-md-component=search-result> <div class=md-search-result__meta> Initializing search </div> <ol class=md-search-result__list role=presentation></ol> </div> </div> </div> </div> </div> <div class=md-header__source> <a href="https://github.com/nlohmann/json" title="Go to repository" class="md-source" data-md-component="source"> <div class="md-source__icon md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </div> <div class=md-source__repository> nlohmann/json </div> </a> </div> </nav> </header> <div class=md-container data-md-component=container> <nav class=md-tabs aria-label=Tabs data-md-component=tabs> <div class=md-grid> <ul class=md-tabs__list> <li class=md-tabs__item> <a href=../../.. class=md-tabs__link> Home </a> </li> <li class=md-tabs__item> <a href=../../../features/arbitrary_types/ class=md-tabs__link> Features </a> </li> <li class=md-tabs__item> <a href=../../../integration/ class=md-tabs__link> Integration </a> </li> <li class="md-tabs__item md-tabs__item--active"> <a href=../../basic_json/ class=md-tabs__link> API Documentation </a> </li> <li class=md-tabs__item> <a href=../../../community/ class=md-tabs__link> Community </a> </li> </ul> </div> </nav> <main class=md-main data-md-component=main> <div class="md-main__inner md-grid"> <div class="md-sidebar md-sidebar--primary" data-md-component=sidebar data-md-type=navigation> <div class=md-sidebar__scrollwrap> <div class=md-sidebar__inner> <nav class="md-nav md-nav--primary md-nav--lifted" aria-label=Navigation data-md-level=0> <label class=md-nav__title for=__drawer> <a href=../../.. title="JSON for Modern C++" class="md-nav__button md-logo" aria-label="JSON for Modern C++" data-md-component=logo> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54"/></svg> </a> JSON for Modern C++ </label> <div class=md-nav__source> <a href="https://github.com/nlohmann/json" title="Go to repository" class="md-source" data-md-component="source"> <div class="md-source__icon md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </div> <div class=md-source__repository> nlohmann/json </div> </a> </div> <ul class=md-nav__list data-md-scrollfix> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_1> <div class="md-nav__link md-nav__container"> <a href=../../.. class="md-nav__link "> <span class=md-ellipsis> Home </span> </a> <label class="md-nav__link " for=__nav_1 id=__nav_1_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_1_label aria-expanded=false> <label class=md-nav__title for=__nav_1> <span class="md-nav__icon md-icon"></span> Home </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../home/license/ class=md-nav__link> <span class=md-ellipsis> License </span> </a> </li> <li class=md-nav__item> <a href=../../../home/faq/ class=md-nav__link> <span class=md-ellipsis> FAQ </span> </a> </li> <li class=md-nav__item> <a href=../../../home/exceptions/ class=md-nav__link> <span class=md-ellipsis> Exceptions </span> </a> </li> <li class=md-nav__item> <a href=../../../home/releases/ class=md-nav__link> <span class=md-ellipsis> Releases </span> </a> </li> <li class=md-nav__item> <a href=../../../home/design_goals/ class=md-nav__link> <span class=md-ellipsis> Design goals </span> </a> </li> <li class=md-nav__item> <a href=../../../home/architecture/ class=md-nav__link> <span class=md-ellipsis> Architecture </span> </a> </li> <li class=md-nav__item> <a href=../../../home/customers/ class=md-nav__link> <span class=md-ellipsis> Customers </span> </a> </li> <li class=md-nav__item> <a href=../../../home/sponsors/ class=md-nav__link> <span class=md-ellipsis> Sponsors </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2> <label class=md-nav__link for=__nav_2 id=__nav_2_label tabindex=0> <span class=md-ellipsis> Features </span> <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_2_label aria-expanded=false> <label class=md-nav__title for=__nav_2> <span class="md-nav__icon md-icon"></span> Features </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/arbitrary_types/ class=md-nav__link> <span class=md-ellipsis> Arbitrary Type Conversions </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_2> <div class="md-nav__link md-nav__container"> <a href=../../../features/binary_formats/ class="md-nav__link "> <span class=md-ellipsis> Binary Formats </span> </a> <label class="md-nav__link " for=__nav_2_2 id=__nav_2_2_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_2_label aria-expanded=false> <label class=md-nav__title for=__nav_2_2> <span class="md-nav__icon md-icon"></span> Binary Formats </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/binary_formats/bjdata/ class=md-nav__link> <span class=md-ellipsis> BJData </span> </a> </li> <li class=md-nav__item> <a href=../../../features/binary_formats/bson/ class=md-nav__link> <span class=md-ellipsis> BSON </span> </a> </li> <li class=md-nav__item> <a href=../../../features/binary_formats/cbor/ class=md-nav__link> <span class=md-ellipsis> CBOR </span> </a> </li> <li class=md-nav__item> <a href=../../../features/binary_formats/messagepack/ class=md-nav__link> <span class=md-ellipsis> MessagePack </span> </a> </li> <li class=md-nav__item> <a href=../../../features/binary_formats/ubjson/ class=md-nav__link> <span class=md-ellipsis> UBJSON </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../../features/binary_values/ class=md-nav__link> <span class=md-ellipsis> Binary Values </span> </a> </li> <li class=md-nav__item> <a href=../../../features/comments/ class=md-nav__link> <span class=md-ellipsis> Comments </span> </a> </li> <li class=md-nav__item> <a href=../../../features/trailing_commas/ class=md-nav__link> <span class=md-ellipsis> Trailing Commas </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_6> <div class="md-nav__link md-nav__container"> <a href=../../../features/element_access/ class="md-nav__link "> <span class=md-ellipsis> Element Access </span> </a> <label class="md-nav__link " for=__nav_2_6 id=__nav_2_6_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_6_label aria-expanded=false> <label class=md-nav__title for=__nav_2_6> <span class="md-nav__icon md-icon"></span> Element Access </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/element_access/unchecked_access/ class=md-nav__link> <span class=md-ellipsis> Unchecked access: operator[] </span> </a> </li> <li class=md-nav__item> <a href=../../../features/element_access/checked_access/ class=md-nav__link> <span class=md-ellipsis> Checked access: at </span> </a> </li> <li class=md-nav__item> <a href=../../../features/element_access/default_value/ class=md-nav__link> <span class=md-ellipsis> Access with default value: value </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../../features/iterators/ class=md-nav__link> <span class=md-ellipsis> Iterators </span> </a> </li> <li class=md-nav__item> <a href=../../../features/json_pointer/ class=md-nav__link> <span class=md-ellipsis> JSON Pointer </span> </a> </li> <li class=md-nav__item> <a href=../../../features/json_patch/ class=md-nav__link> <span class=md-ellipsis> JSON Patch and Diff </span> </a> </li> <li class=md-nav__item> <a href=../../../features/merge_patch/ class=md-nav__link> <span class=md-ellipsis> JSON Merge Patch </span> </a> </li> <li class=md-nav__item> <a href=../../../features/modules/ class=md-nav__link> <span class=md-ellipsis> Modules </span> </a> </li> <li class=md-nav__item> <a href=../../../features/namespace/ class=md-nav__link> <span class=md-ellipsis> nlohmann Namespace </span> </a> </li> <li class=md-nav__item> <a href=../../../features/object_order/ class=md-nav__link> <span class=md-ellipsis> Object Order </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_14> <div class="md-nav__link md-nav__container"> <a href=../../../features/parsing/ class="md-nav__link "> <span class=md-ellipsis> Parsing </span> </a> <label class="md-nav__link " for=__nav_2_14 id=__nav_2_14_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_14_label aria-expanded=false> <label class=md-nav__title for=__nav_2_14> <span class="md-nav__icon md-icon"></span> Parsing </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/parsing/json_lines/ class=md-nav__link> <span class=md-ellipsis> JSON Lines </span> </a> </li> <li class=md-nav__item> <a href=../../../features/parsing/parse_exceptions/ class=md-nav__link> <span class=md-ellipsis> Parsing and Exceptions </span> </a> </li> <li class=md-nav__item> <a href=../../../features/parsing/parser_callbacks/ class=md-nav__link> <span class=md-ellipsis> Parser Callbacks </span> </a> </li> <li class=md-nav__item> <a href=../../../features/parsing/sax_interface/ class=md-nav__link> <span class=md-ellipsis> SAX Interface </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../../features/assertions/ class=md-nav__link> <span class=md-ellipsis> Runtime Assertions </span> </a> </li> <li class=md-nav__item> <a href=../../../features/enum_conversion/ class=md-nav__link> <span class=md-ellipsis> Specializing enum conversion </span> </a> </li> <li class=md-nav__item> <a href=../../../features/macros/ class=md-nav__link> <span class=md-ellipsis> Supported Macros </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_18> <div class="md-nav__link md-nav__container"> <a href=../../../features/types/ class="md-nav__link "> <span class=md-ellipsis> Types </span> </a> <label class="md-nav__link " for=__nav_2_18 id=__nav_2_18_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_18_label aria-expanded=false> <label class=md-nav__title for=__nav_2_18> <span class="md-nav__icon md-icon"></span> Types </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/types/number_handling/ class=md-nav__link> <span class=md-ellipsis> Number Handling </span> </a> </li> </ul> </nav> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_3> <div class="md-nav__link md-nav__container"> <a href=../../../integration/ class="md-nav__link "> <span class=md-ellipsis> Integration </span> </a> <label class="md-nav__link " for=__nav_3 id=__nav_3_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_3_label aria-expanded=false> <label class=md-nav__title for=__nav_3> <span class="md-nav__icon md-icon"></span> Integration </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../integration/migration_guide/ class=md-nav__link> <span class=md-ellipsis> Migration Guide </span> </a> </li> <li class=md-nav__item> <a href=../../../integration/cmake/ class=md-nav__link> <span class=md-ellipsis> CMake </span> </a> </li> <li class=md-nav__item> <a href=../../../integration/package_managers/ class=md-nav__link> <span class=md-ellipsis> Package Managers </span> </a> </li> <li class=md-nav__item> <a href=../../../integration/pkg-config/ class=md-nav__link> <span class=md-ellipsis> Pkg-config </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--active md-nav__item--section md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4 checked> <label class=md-nav__link for=__nav_4 id=__nav_4_label tabindex> <span class=md-ellipsis> API Documentation </span> <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_4_label aria-expanded=true> <label class=md-nav__title for=__nav_4> <span class="md-nav__icon md-icon"></span> API Documentation </label> <ul class=md-nav__list data-md-scrollfix> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_1> <div class="md-nav__link md-nav__container"> <a href=../../basic_json/ class="md-nav__link "> <span class=md-ellipsis> basic_json </span> </a> <label class="md-nav__link " for=__nav_4_1 id=__nav_4_1_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_1_label aria-expanded=false> <label class=md-nav__title for=__nav_4_1> <span class="md-nav__icon md-icon"></span> basic_json </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../basic_json/basic_json/ class=md-nav__link> <span class=md-ellipsis> (Constructor) </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/~basic_json/ class=md-nav__link> <span class=md-ellipsis> (Destructor) </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/accept/ class=md-nav__link> <span class=md-ellipsis> accept </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/array/ class=md-nav__link> <span class=md-ellipsis> array </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/array_t/ class=md-nav__link> <span class=md-ellipsis> array_t </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/at/ class=md-nav__link> <span class=md-ellipsis> at </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/back/ class=md-nav__link> <span class=md-ellipsis> back </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/begin/ class=md-nav__link> <span class=md-ellipsis> begin </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/binary/ class=md-nav__link> <span class=md-ellipsis> binary </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/binary_t/ class=md-nav__link> <span class=md-ellipsis> binary_t </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/boolean_t/ class=md-nav__link> <span class=md-ellipsis> boolean_t </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/cbegin/ class=md-nav__link> <span class=md-ellipsis> cbegin </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/cbor_tag_handler_t/ class=md-nav__link> <span class=md-ellipsis> cbor_tag_handler_t </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/cend/ class=md-nav__link> <span class=md-ellipsis> cend </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/clear/ class=md-nav__link> <span class=md-ellipsis> clear </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/contains/ class=md-nav__link> <span class=md-ellipsis> contains </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/count/ class=md-nav__link> <span class=md-ellipsis> count </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/crbegin/ class=md-nav__link> <span class=md-ellipsis> crbegin </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/crend/ class=md-nav__link> <span class=md-ellipsis> crend </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/default_object_comparator_t/ class=md-nav__link> <span class=md-ellipsis> default_object_comparator_t </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/diff/ class=md-nav__link> <span class=md-ellipsis> diff </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/dump/ class=md-nav__link> <span class=md-ellipsis> dump </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/emplace/ class=md-nav__link> <span class=md-ellipsis> emplace </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/emplace_back/ class=md-nav__link> <span class=md-ellipsis> emplace_back </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/empty/ class=md-nav__link> <span class=md-ellipsis> empty </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/end/ class=md-nav__link> <span class=md-ellipsis> end </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/end_pos/ class=md-nav__link> <span class=md-ellipsis> end_pos </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/erase/ class=md-nav__link> <span class=md-ellipsis> erase </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/error_handler_t/ class=md-nav__link> <span class=md-ellipsis> error_handler_t </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/exception/ class=md-nav__link> <span class=md-ellipsis> exception </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/find/ class=md-nav__link> <span class=md-ellipsis> find </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/flatten/ class=md-nav__link> <span class=md-ellipsis> flatten </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/from_bjdata/ class=md-nav__link> <span class=md-ellipsis> from_bjdata </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/from_bson/ class=md-nav__link> <span class=md-ellipsis> from_bson </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/from_cbor/ class=md-nav__link> <span class=md-ellipsis> from_cbor </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/from_msgpack/ class=md-nav__link> <span class=md-ellipsis> from_msgpack </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/from_ubjson/ class=md-nav__link> <span class=md-ellipsis> from_ubjson </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/front/ class=md-nav__link> <span class=md-ellipsis> front </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/get/ class=md-nav__link> <span class=md-ellipsis> get </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/get_allocator/ class=md-nav__link> <span class=md-ellipsis> get_allocator </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/get_binary/ class=md-nav__link> <span class=md-ellipsis> get_binary </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/get_ptr/ class=md-nav__link> <span class=md-ellipsis> get_ptr </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/get_ref/ class=md-nav__link> <span class=md-ellipsis> get_ref </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/get_to/ class=md-nav__link> <span class=md-ellipsis> get_to </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/std_hash/ class=md-nav__link> <span class=md-ellipsis> std::hash&lt;basic_json&gt; </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/input_format_t/ class=md-nav__link> <span class=md-ellipsis> input_format_t </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/insert/ class=md-nav__link> <span class=md-ellipsis> insert </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/invalid_iterator/ class=md-nav__link> <span class=md-ellipsis> invalid_iterator </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/is_array/ class=md-nav__link> <span class=md-ellipsis> is_array </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/is_binary/ class=md-nav__link> <span class=md-ellipsis> is_binary </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/is_boolean/ class=md-nav__link> <span class=md-ellipsis> is_boolean </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/is_discarded/ class=md-nav__link> <span class=md-ellipsis> is_discarded </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/is_null/ class=md-nav__link> <span class=md-ellipsis> is_null </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/is_number/ class=md-nav__link> <span class=md-ellipsis> is_number </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/is_number_float/ class=md-nav__link> <span class=md-ellipsis> is_number_float </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/is_number_integer/ class=md-nav__link> <span class=md-ellipsis> is_number_integer </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/is_number_unsigned/ class=md-nav__link> <span class=md-ellipsis> is_number_unsigned </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/is_object/ class=md-nav__link> <span class=md-ellipsis> is_object </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/is_primitive/ class=md-nav__link> <span class=md-ellipsis> is_primitive </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/is_string/ class=md-nav__link> <span class=md-ellipsis> is_string </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/is_structured/ class=md-nav__link> <span class=md-ellipsis> is_structured </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/items/ class=md-nav__link> <span class=md-ellipsis> items </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/json_base_class_t/ class=md-nav__link> <span class=md-ellipsis> json_base_class_t </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/json_serializer/ class=md-nav__link> <span class=md-ellipsis> json_serializer </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/max_size/ class=md-nav__link> <span class=md-ellipsis> max_size </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/meta/ class=md-nav__link> <span class=md-ellipsis> meta </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/merge_patch/ class=md-nav__link> <span class=md-ellipsis> merge_patch </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/number_float_t/ class=md-nav__link> <span class=md-ellipsis> number_float_t </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/number_integer_t/ class=md-nav__link> <span class=md-ellipsis> number_integer_t </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/number_unsigned_t/ class=md-nav__link> <span class=md-ellipsis> number_unsigned_t </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/object/ class=md-nav__link> <span class=md-ellipsis> object </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/object_comparator_t/ class=md-nav__link> <span class=md-ellipsis> object_comparator_t </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/object_t/ class=md-nav__link> <span class=md-ellipsis> object_t </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/operator_ValueType/ class=md-nav__link> <span class=md-ellipsis> operator ValueType </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/operator_value_t/ class=md-nav__link> <span class=md-ellipsis> operator value_t </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/operator%5B%5D/ class=md-nav__link> <span class=md-ellipsis> operator[] </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/operator%3D/ class=md-nav__link> <span class=md-ellipsis> operator= </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/operator%2B%3D/ class=md-nav__link> <span class=md-ellipsis> operator+= </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/operator_eq/ class=md-nav__link> <span class=md-ellipsis> operator== </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/operator_ne/ class=md-nav__link> <span class=md-ellipsis> operator!= </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/operator_lt/ class=md-nav__link> <span class=md-ellipsis> operator< </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/operator_gt/ class=md-nav__link> <span class=md-ellipsis> operator> </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/operator_le/ class=md-nav__link> <span class=md-ellipsis> operator<= </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/operator_ge/ class=md-nav__link> <span class=md-ellipsis> operator>= </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/operator_spaceship/ class=md-nav__link> <span class=md-ellipsis> operator<=> </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/out_of_range/ class=md-nav__link> <span class=md-ellipsis> out_of_range </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/other_error/ class=md-nav__link> <span class=md-ellipsis> other_error </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/parse/ class=md-nav__link> <span class=md-ellipsis> parse </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/parse_error/ class=md-nav__link> <span class=md-ellipsis> parse_error </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/parse_event_t/ class=md-nav__link> <span class=md-ellipsis> parse_event_t </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/parser_callback_t/ class=md-nav__link> <span class=md-ellipsis> parser_callback_t </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/patch/ class=md-nav__link> <span class=md-ellipsis> patch </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/patch_inplace/ class=md-nav__link> <span class=md-ellipsis> patch_inplace </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/push_back/ class=md-nav__link> <span class=md-ellipsis> push_back </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/rbegin/ class=md-nav__link> <span class=md-ellipsis> rbegin </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/rend/ class=md-nav__link> <span class=md-ellipsis> rend </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/sax_parse/ class=md-nav__link> <span class=md-ellipsis> sax_parse </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/size/ class=md-nav__link> <span class=md-ellipsis> size </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/start_pos/ class=md-nav__link> <span class=md-ellipsis> start_pos </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/string_t/ class=md-nav__link> <span class=md-ellipsis> string_t </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/swap/ class=md-nav__link> <span class=md-ellipsis> swap </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/std_swap/ class=md-nav__link> <span class=md-ellipsis> std::swap&lt;basic_json&gt; </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/to_bjdata/ class=md-nav__link> <span class=md-ellipsis> to_bjdata </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/to_bson/ class=md-nav__link> <span class=md-ellipsis> to_bson </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/to_cbor/ class=md-nav__link> <span class=md-ellipsis> to_cbor </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/to_msgpack/ class=md-nav__link> <span class=md-ellipsis> to_msgpack </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/to_string/ class=md-nav__link> <span class=md-ellipsis> to_string </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/to_ubjson/ class=md-nav__link> <span class=md-ellipsis> to_ubjson </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/type/ class=md-nav__link> <span class=md-ellipsis> type </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/type_error/ class=md-nav__link> <span class=md-ellipsis> type_error </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/type_name/ class=md-nav__link> <span class=md-ellipsis> type_name </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/unflatten/ class=md-nav__link> <span class=md-ellipsis> unflatten </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/update/ class=md-nav__link> <span class=md-ellipsis> update </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/value/ class=md-nav__link> <span class=md-ellipsis> value </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/value_t/ class=md-nav__link> <span class=md-ellipsis> value_t </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_2> <div class="md-nav__link md-nav__container"> <a href=../../byte_container_with_subtype/ class="md-nav__link "> <span class=md-ellipsis> byte_container_with_subtype </span> </a> <label class="md-nav__link " for=__nav_4_2 id=__nav_4_2_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_2_label aria-expanded=false> <label class=md-nav__title for=__nav_4_2> <span class="md-nav__icon md-icon"></span> byte_container_with_subtype </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../byte_container_with_subtype/byte_container_with_subtype/ class=md-nav__link> <span class=md-ellipsis> (constructor) </span> </a> </li> <li class=md-nav__item> <a href=../../byte_container_with_subtype/clear_subtype/ class=md-nav__link> <span class=md-ellipsis> clear_subtype </span> </a> </li> <li class=md-nav__item> <a href=../../byte_container_with_subtype/has_subtype/ class=md-nav__link> <span class=md-ellipsis> has_subtype </span> </a> </li> <li class=md-nav__item> <a href=../../byte_container_with_subtype/set_subtype/ class=md-nav__link> <span class=md-ellipsis> set_subtype </span> </a> </li> <li class=md-nav__item> <a href=../../byte_container_with_subtype/subtype/ class=md-nav__link> <span class=md-ellipsis> subtype </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_3> <div class="md-nav__link md-nav__container"> <a href=../../adl_serializer/ class="md-nav__link "> <span class=md-ellipsis> adl_serializer </span> </a> <label class="md-nav__link " for=__nav_4_3 id=__nav_4_3_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_3_label aria-expanded=false> <label class=md-nav__title for=__nav_4_3> <span class="md-nav__icon md-icon"></span> adl_serializer </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../adl_serializer/from_json/ class=md-nav__link> <span class=md-ellipsis> from_json </span> </a> </li> <li class=md-nav__item> <a href=../../adl_serializer/to_json/ class=md-nav__link> <span class=md-ellipsis> to_json </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../json/ class=md-nav__link> <span class=md-ellipsis> json </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_5> <div class="md-nav__link md-nav__container"> <a href=../../json_pointer/ class="md-nav__link "> <span class=md-ellipsis> json_pointer </span> </a> <label class="md-nav__link " for=__nav_4_5 id=__nav_4_5_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_5_label aria-expanded=false> <label class=md-nav__title for=__nav_4_5> <span class="md-nav__icon md-icon"></span> json_pointer </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../json_pointer/json_pointer/ class=md-nav__link> <span class=md-ellipsis> (Constructor) </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/back/ class=md-nav__link> <span class=md-ellipsis> back </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/empty/ class=md-nav__link> <span class=md-ellipsis> empty </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/front/ class=md-nav__link> <span class=md-ellipsis> front </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_string_t/ class=md-nav__link> <span class=md-ellipsis> operator string_t </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_eq/ class=md-nav__link> <span class=md-ellipsis> operator== </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_ne/ class=md-nav__link> <span class=md-ellipsis> operator!= </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_slash/ class=md-nav__link> <span class=md-ellipsis> operator/ </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_slasheq/ class=md-nav__link> <span class=md-ellipsis> operator/= </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/parent_pointer/ class=md-nav__link> <span class=md-ellipsis> parent_pointer </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/pop_back/ class=md-nav__link> <span class=md-ellipsis> pop_back </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/pop_front/ class=md-nav__link> <span class=md-ellipsis> pop_front </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/push_back/ class=md-nav__link> <span class=md-ellipsis> push_back </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/push_front/ class=md-nav__link> <span class=md-ellipsis> push_front </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/string_t/ class=md-nav__link> <span class=md-ellipsis> string_t </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/to_string/ class=md-nav__link> <span class=md-ellipsis> to_string </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--active md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_6 checked> <div class="md-nav__link md-nav__container"> <a href=../ class="md-nav__link "> <span class=md-ellipsis> json_sax </span> </a> <label class="md-nav__link " for=__nav_4_6 id=__nav_4_6_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_6_label aria-expanded=true> <label class=md-nav__title for=__nav_4_6> <span class="md-nav__icon md-icon"></span> json_sax </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../binary/ class=md-nav__link> <span class=md-ellipsis> binary </span> </a> </li> <li class=md-nav__item> <a href=../boolean/ class=md-nav__link> <span class=md-ellipsis> boolean </span> </a> </li> <li class=md-nav__item> <a href=../end_array/ class=md-nav__link> <span class=md-ellipsis> end_array </span> </a> </li> <li class=md-nav__item> <a href=../end_object/ class=md-nav__link> <span class=md-ellipsis> end_object </span> </a> </li> <li class=md-nav__item> <a href=../key/ class=md-nav__link> <span class=md-ellipsis> key </span> </a> </li> <li class=md-nav__item> <a href=../null/ class=md-nav__link> <span class=md-ellipsis> null </span> </a> </li> <li class=md-nav__item> <a href=../number_float/ class=md-nav__link> <span class=md-ellipsis> number_float </span> </a> </li> <li class=md-nav__item> <a href=../number_integer/ class=md-nav__link> <span class=md-ellipsis> number_integer </span> </a> </li> <li class=md-nav__item> <a href=../number_unsigned/ class=md-nav__link> <span class=md-ellipsis> number_unsigned </span> </a> </li> <li class=md-nav__item> <a href=../parse_error/ class=md-nav__link> <span class=md-ellipsis> parse_error </span> </a> </li> <li class=md-nav__item> <a href=../start_array/ class=md-nav__link> <span class=md-ellipsis> start_array </span> </a> </li> <li class="md-nav__item md-nav__item--active"> <input class="md-nav__toggle md-toggle" type=checkbox id=__toc> <label class="md-nav__link md-nav__link--active" for=__toc> <span class=md-ellipsis> start_object </span> <span class="md-nav__icon md-icon"></span> </label> <a href=./ class="md-nav__link md-nav__link--active"> <span class=md-ellipsis> start_object </span> </a> <nav class="md-nav md-nav--secondary" aria-label="Table of contents"> <label class=md-nav__title for=__toc> <span class="md-nav__icon md-icon"></span> Table of contents </label> <ul class=md-nav__list data-md-component=toc data-md-scrollfix> <li class=md-nav__item> <a href=#parameters class=md-nav__link> <span class=md-ellipsis> Parameters </span> </a> </li> <li class=md-nav__item> <a href=#return-value class=md-nav__link> <span class=md-ellipsis> Return value </span> </a> </li> <li class=md-nav__item> <a href=#notes class=md-nav__link> <span class=md-ellipsis> Notes </span> </a> </li> <li class=md-nav__item> <a href=#examples class=md-nav__link> <span class=md-ellipsis> Examples </span> </a> </li> <li class=md-nav__item> <a href=#version-history class=md-nav__link> <span class=md-ellipsis> Version history </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../string/ class=md-nav__link> <span class=md-ellipsis> string </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../operator_ltlt/ class=md-nav__link> <span class=md-ellipsis> operator<<(basic_json), operator<<(json_pointer) </span> </a> </li> <li class=md-nav__item> <a href=../../operator_gtgt/ class=md-nav__link> <span class=md-ellipsis> operator>>(basic_json) </span> </a> </li> <li class=md-nav__item> <a href=../../operator_literal_json/ class=md-nav__link> <span class=md-ellipsis> operator""_json </span> </a> </li> <li class=md-nav__item> <a href=../../operator_literal_json_pointer/ class=md-nav__link> <span class=md-ellipsis> operator""_json_pointer </span> </a> </li> <li class=md-nav__item> <a href=../../ordered_json/ class=md-nav__link> <span class=md-ellipsis> ordered_json </span> </a> </li> <li class=md-nav__item> <a href=../../ordered_map/ class=md-nav__link> <span class=md-ellipsis> ordered_map </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_13> <div class="md-nav__link md-nav__container"> <a href=../../macros/ class="md-nav__link "> <span class=md-ellipsis> macros </span> </a> <label class="md-nav__link " for=__nav_4_13 id=__nav_4_13_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_13_label aria-expanded=false> <label class=md-nav__title for=__nav_4_13> <span class="md-nav__icon md-icon"></span> macros </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../macros/json_assert/ class=md-nav__link> <span class=md-ellipsis> JSON_ASSERT </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_brace_init_copy_semantics/ class=md-nav__link> <span class=md-ellipsis> JSON_BRACE_INIT_COPY_SEMANTICS </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_throw_user/ class=md-nav__link> <span class=md-ellipsis> JSON_CATCH_USER, JSON_THROW_USER, JSON_TRY_USER </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_diagnostics/ class=md-nav__link> <span class=md-ellipsis> JSON_DIAGNOSTICS </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_diagnostic_positions/ class=md-nav__link> <span class=md-ellipsis> JSON_DIAGNOSTIC_POSITIONS </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_disable_enum_serialization/ class=md-nav__link> <span class=md-ellipsis> JSON_DISABLE_ENUM_SERIALIZATION </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_has_cpp_11/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_CPP_11, JSON_HAS_CPP_14, JSON_HAS_CPP_17, JSON_HAS_CPP_20 </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_has_filesystem/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_EXPERIMENTAL_FILESYSTEM, JSON_HAS_FILESYSTEM </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_has_ranges/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_RANGES </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_has_static_rtti/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_STATIC_RTTI </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_has_three_way_comparison/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_THREE_WAY_COMPARISON </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_noexception/ class=md-nav__link> <span class=md-ellipsis> JSON_NOEXCEPTION </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_no_io/ class=md-nav__link> <span class=md-ellipsis> JSON_NO_IO </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_skip_library_version_check/ class=md-nav__link> <span class=md-ellipsis> JSON_SKIP_LIBRARY_VERSION_CHECK </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_skip_unsupported_compiler_check/ class=md-nav__link> <span class=md-ellipsis> JSON_SKIP_UNSUPPORTED_COMPILER_CHECK </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_use_global_udls/ class=md-nav__link> <span class=md-ellipsis> JSON_USE_GLOBAL_UDLS </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_use_implicit_conversions/ class=md-nav__link> <span class=md-ellipsis> JSON_USE_IMPLICIT_CONVERSIONS </span> </a> </li> <li class=md-nav__item> <a href=../../macros/json_use_legacy_discarded_value_comparison/ class=md-nav__link> <span class=md-ellipsis> JSON_USE_LEGACY_DISCARDED_VALUE_COMPARISON </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_define_derived_type/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_ONLY_SERIALIZE, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_define_type_intrusive/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_TYPE_INTRUSIVE, NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_TYPE_INTRUSIVE_ONLY_SERIALIZE </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_define_type_non_intrusive/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_define_type_with_names/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_TYPE_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_namespace/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_NAMESPACE </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_namespace_begin/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_NAMESPACE_BEGIN, NLOHMANN_JSON_NAMESPACE_END </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_namespace_no_version/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_NAMESPACE_NO_VERSION </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_serialize_enum/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_SERIALIZE_ENUM </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_serialize_enum_strict/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_SERIALIZE_ENUM_STRICT </span> </a> </li> <li class=md-nav__item> <a href=../../macros/nlohmann_json_version_major/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_VERSION_MAJOR, NLOHMANN_JSON_VERSION_MINOR, NLOHMANN_JSON_VERSION_PATCH </span> </a> </li> </ul> </nav> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_5> <div class="md-nav__link md-nav__container"> <a href=../../../community/ class="md-nav__link "> <span class=md-ellipsis> Community </span> </a> <label class="md-nav__link " for=__nav_5 id=__nav_5_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_5_label aria-expanded=false> <label class=md-nav__title for=__nav_5> <span class="md-nav__icon md-icon"></span> Community </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../community/code_of_conduct/ class=md-nav__link> <span class=md-ellipsis> Code of Conduct </span> </a> </li> <li class=md-nav__item> <a href=../../../community/contribution_guidelines/ class=md-nav__link> <span class=md-ellipsis> Contribution Guidelines </span> </a> </li> <li class=md-nav__item> <a href=../../../community/quality_assurance/ class=md-nav__link> <span class=md-ellipsis> Quality assurance </span> </a> </li> <li class=md-nav__item> <a href=../../../community/governance/ class=md-nav__link> <span class=md-ellipsis> Governance </span> </a> </li> <li class=md-nav__item> <a href=../../../community/security_policy/ class=md-nav__link> <span class=md-ellipsis> Security Policy </span> </a> </li> </ul> </nav> </li> </ul> </nav> </div> </div> </div> <div class="md-sidebar md-sidebar--secondary" data-md-component=sidebar data-md-type=toc> <div class=md-sidebar__scrollwrap> <div class=md-sidebar__inner> <nav class="md-nav md-nav--secondary" aria-label="Table of contents"> <label class=md-nav__title for=__toc> <span class="md-nav__icon md-icon"></span> Table of contents </label> <ul class=md-nav__list data-md-component=toc data-md-scrollfix> <li class=md-nav__item> <a href=#parameters class=md-nav__link> <span class=md-ellipsis> Parameters </span> </a> </li> <li class=md-nav__item> <a href=#return-value class=md-nav__link> <span class=md-ellipsis> Return value </span> </a> </li> <li class=md-nav__item> <a href=#notes class=md-nav__link> <span class=md-ellipsis> Notes </span> </a> </li> <li class=md-nav__item> <a href=#examples class=md-nav__link> <span class=md-ellipsis> Examples </span> </a> </li> <li class=md-nav__item> <a href=#version-history class=md-nav__link> <span class=md-ellipsis> Version history </span> </a> </li> </ul> </nav> </div> </div> </div> <div class=md-content data-md-component=content> <article class="md-content__inner md-typeset"> <a href="https://github.com/nlohmann/json/edit/develop/docs/mkdocs/docs/api/json_sax/start_object.md" title="Edit this page" class="md-content__button md-icon" rel="edit"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M10 20H6V4h7v5h5v3.1l2-2V8l-6-6H6c-1.1 0-2 .9-2 2v16c0 1.1.9 2 2 2h4zm10.2-7c.1 0 .3.1.4.2l1.3 1.3c.2.2.2.6 0 .8l-1 1-2.1-2.1 1-1c.1-.1.2-.2.4-.2m0 3.9L14.1 23H12v-2.1l6.1-6.1z"/></svg> </a> <a href="https://github.com/nlohmann/json/raw/develop/docs/mkdocs/docs/api/json_sax/start_object.md" title="View source of this page" class="md-content__button md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M17 18c.56 0 1 .44 1 1s-.44 1-1 1-1-.44-1-1 .44-1 1-1m0-3c-2.73 0-5.06 1.66-6 4 .94 2.34 3.27 4 6 4s5.06-1.66 6-4c-.94-2.34-3.27-4-6-4m0 6.5a2.5 2.5 0 0 1-2.5-2.5 2.5 2.5 0 0 1 2.5-2.5 2.5 2.5 0 0 1 2.5 2.5 2.5 2.5 0 0 1-2.5 2.5M9.27 20H6V4h7v5h5v4.07c.7.08 1.36.25 2 .49V8l-6-6H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h4.5a8.2 8.2 0 0 1-1.23-2"/></svg> </a> <h1 id=nlohmannjson_saxstart_object><small>nlohmann::json_sax::</small>start_object<a class=headerlink href=#nlohmannjson_saxstart_object title="Permanent link">&para;</a></h1> <div class=highlight><pre><span></span><code><span class=k>virtual</span><span class=w> </span><span class=kt>bool</span><span class=w> </span><span class=nf>start_object</span><span class=p>(</span><span class=n>std</span><span class=o>::</span><span class=kt>size_t</span><span class=w> </span><span class=n>elements</span><span class=p>)</span><span class=w> </span><span class=o>=</span><span class=w> </span><span class=mi>0</span><span class=p>;</span>
-</code></pre></div> <p>The beginning of an object was read.</p> <h2 id=parameters>Parameters<a class=headerlink href=#parameters title="Permanent link">&para;</a></h2> <dl> <dt><code>elements</code> (in)</dt> <dd>number of object elements or <code class=highlight><span class=mi>-1</span></code> if unknown</dd> </dl> <h2 id=return-value>Return value<a class=headerlink href=#return-value title="Permanent link">&para;</a></h2> <p>Whether parsing should proceed.</p> <h2 id=notes>Notes<a class=headerlink href=#notes title="Permanent link">&para;</a></h2> <p>Binary formats may report the number of elements.</p> <h2 id=examples>Examples<a class=headerlink href=#examples title="Permanent link">&para;</a></h2> <details class=example> <summary>Example</summary> <p>The example below shows how the <abbr title="Simple API for XML">SAX</abbr> interface is used.</p> <div class=highlight><pre><span></span><code><span class=cp>#include</span><span class=w> </span><span class=cpf>&lt;iostream&gt;</span>
+</code></pre></div> <p>The beginning of an object was read.</p> <h2 id=parameters>Parameters<a class=headerlink href=#parameters title="Permanent link">&para;</a></h2> <dl> <dt><code>elements</code> (in)</dt> <dd>number of object elements, or <code class=highlight><span class=n>std</span><span class=o>::</span><span class=n>numeric_limits</span><span class=o>&lt;</span><span class=n>std</span><span class=o>::</span><span class=kt>size_t</span><span class=o>&gt;::</span><span class=n>max</span><span class=p>()</span></code> if unknown</dd> </dl> <h2 id=return-value>Return value<a class=headerlink href=#return-value title="Permanent link">&para;</a></h2> <p>Whether parsing should proceed.</p> <h2 id=notes>Notes<a class=headerlink href=#notes title="Permanent link">&para;</a></h2> <p>Binary formats may report the number of elements.</p> <h2 id=examples>Examples<a class=headerlink href=#examples title="Permanent link">&para;</a></h2> <details class=example> <summary>Example</summary> <p>The example below shows how the <abbr title="Simple API for XML">SAX</abbr> interface is used.</p> <div class=highlight><pre><span></span><code><span class=cp>#include</span><span class=w> </span><span class=cpf>&lt;iostream&gt;</span>
 <span class=cp>#include</span><span class=w> </span><span class=cpf>&lt;iomanip&gt;</span>
 <span class=cp>#include</span><span class=w> </span><span class=cpf>&lt;sstream&gt;</span>
 <span class=cp>#include</span><span class=w> </span><span class=cpf>&lt;nlohmann/json.hpp&gt;</span>
@@ -167,4 +167,4 @@
 <span class=w>            </span><span class=err>ex=</span><span class=p>[</span><span class=err>jso</span><span class=kc>n</span><span class=err>.excep</span><span class=kc>t</span><span class=err>io</span><span class=kc>n</span><span class=err>.parse_error.</span><span class=mi>101</span><span class=p>]</span><span class=w> </span><span class=err>parse</span><span class=w> </span><span class=err>error</span><span class=w> </span><span class=err>a</span><span class=kc>t</span><span class=w> </span><span class=err>li</span><span class=kc>ne</span><span class=w> </span><span class=mi>17</span><span class=p>,</span><span class=w> </span><span class=err>colum</span><span class=kc>n</span><span class=w> </span><span class=mi>6</span><span class=p>:</span><span class=w> </span><span class=err>sy</span><span class=kc>nta</span><span class=err>x</span><span class=w> </span><span class=err>error</span><span class=w> </span><span class=err>while</span><span class=w> </span><span class=err>parsi</span><span class=kc>n</span><span class=err>g</span><span class=w> </span><span class=err>value</span><span class=w> </span><span class=mi>-</span><span class=w> </span><span class=err>u</span><span class=kc>ne</span><span class=err>xpec</span><span class=kc>te</span><span class=err>d</span><span class=w> </span><span class=err>&#39;</span><span class=p>]</span><span class=err>&#39;;</span><span class=w> </span><span class=err>expec</span><span class=kc>te</span><span class=err>d</span><span class=w> </span><span class=err>e</span><span class=kc>n</span><span class=err>d</span><span class=w> </span><span class=err>o</span><span class=kc>f</span><span class=w> </span><span class=err>i</span><span class=kc>n</span><span class=err>pu</span><span class=kc>t</span><span class=err>)</span>
 
 <span class=err>resul</span><span class=kc>t</span><span class=p>:</span><span class=w> </span><span class=kc>false</span>
-</code></pre></div> </details> <h2 id=version-history>Version history<a class=headerlink href=#version-history title="Permanent link">&para;</a></h2> <ul> <li>Added in version 3.2.0.</li> </ul> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 23, 2026 11:16:18 UTC">June 23, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
+</code></pre></div> </details> <h2 id=version-history>Version history<a class=headerlink href=#version-history title="Permanent link">&para;</a></h2> <ul> <li>Added in version 3.2.0.</li> </ul> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 29, 2026 20:15:18 UTC">June 29, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
diff --git a/api/json_sax/string/index.html b/api/json_sax/string/index.html
index f4c018c..72d0ffc 100644
--- a/api/json_sax/string/index.html
+++ b/api/json_sax/string/index.html
@@ -167,4 +167,4 @@
 <span class=w>            </span><span class=err>ex=</span><span class=p>[</span><span class=err>jso</span><span class=kc>n</span><span class=err>.excep</span><span class=kc>t</span><span class=err>io</span><span class=kc>n</span><span class=err>.parse_error.</span><span class=mi>101</span><span class=p>]</span><span class=w> </span><span class=err>parse</span><span class=w> </span><span class=err>error</span><span class=w> </span><span class=err>a</span><span class=kc>t</span><span class=w> </span><span class=err>li</span><span class=kc>ne</span><span class=w> </span><span class=mi>17</span><span class=p>,</span><span class=w> </span><span class=err>colum</span><span class=kc>n</span><span class=w> </span><span class=mi>6</span><span class=p>:</span><span class=w> </span><span class=err>sy</span><span class=kc>nta</span><span class=err>x</span><span class=w> </span><span class=err>error</span><span class=w> </span><span class=err>while</span><span class=w> </span><span class=err>parsi</span><span class=kc>n</span><span class=err>g</span><span class=w> </span><span class=err>value</span><span class=w> </span><span class=mi>-</span><span class=w> </span><span class=err>u</span><span class=kc>ne</span><span class=err>xpec</span><span class=kc>te</span><span class=err>d</span><span class=w> </span><span class=err>&#39;</span><span class=p>]</span><span class=err>&#39;;</span><span class=w> </span><span class=err>expec</span><span class=kc>te</span><span class=err>d</span><span class=w> </span><span class=err>e</span><span class=kc>n</span><span class=err>d</span><span class=w> </span><span class=err>o</span><span class=kc>f</span><span class=w> </span><span class=err>i</span><span class=kc>n</span><span class=err>pu</span><span class=kc>t</span><span class=err>)</span>
 
 <span class=err>resul</span><span class=kc>t</span><span class=p>:</span><span class=w> </span><span class=kc>false</span>
-</code></pre></div> </details> <h2 id=version-history>Version history<a class=headerlink href=#version-history title="Permanent link">&para;</a></h2> <ul> <li>Added in version 3.2.0.</li> </ul> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 23, 2026 11:16:18 UTC">June 23, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
+</code></pre></div> </details> <h2 id=version-history>Version history<a class=headerlink href=#version-history title="Permanent link">&para;</a></h2> <ul> <li>Added in version 3.2.0.</li> </ul> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 29, 2026 20:15:18 UTC">June 29, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
diff --git a/api/macros/index.html b/api/macros/index.html
index 0ccecfe..4df927d 100644
--- a/api/macros/index.html
+++ b/api/macros/index.html
@@ -1 +1 @@
-<!doctype html><html lang=en class=no-js> <head><meta charset=utf-8><meta name=viewport content="width=device-width,initial-scale=1"><meta name=author content="Niels Lohmann"><link href="https://json.nlohmann.me/api/macros/" rel="canonical"><link href=../ordered_map/ rel=prev><link href=json_assert/ rel=next><link rel=icon href=../../assets/images/favicon.png><meta name=generator content="mkdocs-1.6.1, mkdocs-material-9.7.6"><title>Overview - JSON for Modern C++</title><link rel=stylesheet href=../../assets/stylesheets/main.484c7ddc.min.css><link rel=stylesheet href=../../assets/stylesheets/palette.ab4e12ef.min.css><link rel="stylesheet" href="../../assets/external/fonts.googleapis.com/css.61a430c9.css"><style>:root{--md-text-font:"Roboto";--md-code-font:"JetBrains Mono"}</style><link rel=stylesheet href=../../css/custom.css><script>__md_scope=new URL("../..",location),__md_hash=e=>[...e].reduce(((e,_)=>(e<<5)-e+_.charCodeAt(0)),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script></head> <body dir=ltr data-md-color-scheme=default data-md-color-primary=indigo data-md-color-accent=indigo> <input class=md-toggle data-md-toggle=drawer type=checkbox id=__drawer autocomplete=off> <input class=md-toggle data-md-toggle=search type=checkbox id=__search autocomplete=off> <label class=md-overlay for=__drawer></label> <div data-md-component=skip> <a href=#macros class=md-skip> Skip to content </a> </div> <div data-md-component=announce> </div> <header class=md-header data-md-component=header> <nav class="md-header__inner md-grid" aria-label=Header> <a href=../.. title="JSON for Modern C++" class="md-header__button md-logo" aria-label="JSON for Modern C++" data-md-component=logo> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54"/></svg> </a> <label class="md-header__button md-icon" for=__drawer> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M3 6h18v2H3zm0 5h18v2H3zm0 5h18v2H3z"/></svg> </label> <div class=md-header__title data-md-component=header-title> <div class=md-header__ellipsis> <div class=md-header__topic> <span class=md-ellipsis> JSON for Modern C++ </span> </div> <div class=md-header__topic data-md-component=header-topic> <span class=md-ellipsis> Overview </span> </div> </div> </div> <form class=md-header__option data-md-component=palette> <input class=md-option data-md-color-media="(prefers-color-scheme: light)" data-md-color-scheme=default data-md-color-primary=indigo data-md-color-accent=indigo aria-label="Switch to dark mode" type=radio name=__palette id=__palette_0> <label class="md-header__button md-icon" title="Switch to dark mode" for=__palette_1 hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a4 4 0 0 0-4 4 4 4 0 0 0 4 4 4 4 0 0 0 4-4 4 4 0 0 0-4-4m0 10a6 6 0 0 1-6-6 6 6 0 0 1 6-6 6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12z"/></svg> </label> <input class=md-option data-md-color-media="(prefers-color-scheme: dark)" data-md-color-scheme=slate data-md-color-primary=indigo data-md-color-accent=indigo aria-label="Switch to light mode" type=radio name=__palette id=__palette_1> <label class="md-header__button md-icon" title="Switch to light mode" for=__palette_0 hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 18c-.89 0-1.74-.2-2.5-.55C11.56 16.5 13 14.42 13 12s-1.44-4.5-3.5-5.45C10.26 6.2 11.11 6 12 6a6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12z"/></svg> </label> </form> <script>var palette=__md_get("__palette");if(palette&&palette.color){if("(prefers-color-scheme)"===palette.color.media){var media=matchMedia("(prefers-color-scheme: light)"),input=document.querySelector(media.matches?"[data-md-color-media='(prefers-color-scheme: light)']":"[data-md-color-media='(prefers-color-scheme: dark)']");palette.color.media=input.getAttribute("data-md-color-media"),palette.color.scheme=input.getAttribute("data-md-color-scheme"),palette.color.primary=input.getAttribute("data-md-color-primary"),palette.color.accent=input.getAttribute("data-md-color-accent")}for(var[key,value]of Object.entries(palette.color))document.body.setAttribute("data-md-color-"+key,value)}</script> <label class="md-header__button md-icon" for=__search> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg> </label> <div class=md-search data-md-component=search role=dialog> <label class=md-search__overlay for=__search></label> <div class=md-search__inner role=search> <form class=md-search__form name=search> <input type=text class=md-search__input name=query aria-label=Search placeholder=Search autocapitalize=off autocorrect=off autocomplete=off spellcheck=false data-md-component=search-query required> <label class="md-search__icon md-icon" for=__search> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11z"/></svg> </label> <nav class=md-search__options aria-label=Search> <button type=reset class="md-search__icon md-icon" title=Clear aria-label=Clear tabindex=-1> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z"/></svg> </button> </nav> </form> <div class=md-search__output> <div class=md-search__scrollwrap tabindex=0 data-md-scrollfix> <div class=md-search-result data-md-component=search-result> <div class=md-search-result__meta> Initializing search </div> <ol class=md-search-result__list role=presentation></ol> </div> </div> </div> </div> </div> <div class=md-header__source> <a href="https://github.com/nlohmann/json" title="Go to repository" class="md-source" data-md-component="source"> <div class="md-source__icon md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </div> <div class=md-source__repository> nlohmann/json </div> </a> </div> </nav> </header> <div class=md-container data-md-component=container> <nav class=md-tabs aria-label=Tabs data-md-component=tabs> <div class=md-grid> <ul class=md-tabs__list> <li class=md-tabs__item> <a href=../.. class=md-tabs__link> Home </a> </li> <li class=md-tabs__item> <a href=../../features/arbitrary_types/ class=md-tabs__link> Features </a> </li> <li class=md-tabs__item> <a href=../../integration/ class=md-tabs__link> Integration </a> </li> <li class="md-tabs__item md-tabs__item--active"> <a href=../basic_json/ class=md-tabs__link> API Documentation </a> </li> <li class=md-tabs__item> <a href=../../community/ class=md-tabs__link> Community </a> </li> </ul> </div> </nav> <main class=md-main data-md-component=main> <div class="md-main__inner md-grid"> <div class="md-sidebar md-sidebar--primary" data-md-component=sidebar data-md-type=navigation> <div class=md-sidebar__scrollwrap> <div class=md-sidebar__inner> <nav class="md-nav md-nav--primary md-nav--lifted" aria-label=Navigation data-md-level=0> <label class=md-nav__title for=__drawer> <a href=../.. title="JSON for Modern C++" class="md-nav__button md-logo" aria-label="JSON for Modern C++" data-md-component=logo> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54"/></svg> </a> JSON for Modern C++ </label> <div class=md-nav__source> <a href="https://github.com/nlohmann/json" title="Go to repository" class="md-source" data-md-component="source"> <div class="md-source__icon md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </div> <div class=md-source__repository> nlohmann/json </div> </a> </div> <ul class=md-nav__list data-md-scrollfix> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_1> <div class="md-nav__link md-nav__container"> <a href=../.. class="md-nav__link "> <span class=md-ellipsis> Home </span> </a> <label class="md-nav__link " for=__nav_1 id=__nav_1_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_1_label aria-expanded=false> <label class=md-nav__title for=__nav_1> <span class="md-nav__icon md-icon"></span> Home </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../home/license/ class=md-nav__link> <span class=md-ellipsis> License </span> </a> </li> <li class=md-nav__item> <a href=../../home/faq/ class=md-nav__link> <span class=md-ellipsis> FAQ </span> </a> </li> <li class=md-nav__item> <a href=../../home/exceptions/ class=md-nav__link> <span class=md-ellipsis> Exceptions </span> </a> </li> <li class=md-nav__item> <a href=../../home/releases/ class=md-nav__link> <span class=md-ellipsis> Releases </span> </a> </li> <li class=md-nav__item> <a href=../../home/design_goals/ class=md-nav__link> <span class=md-ellipsis> Design goals </span> </a> </li> <li class=md-nav__item> <a href=../../home/architecture/ class=md-nav__link> <span class=md-ellipsis> Architecture </span> </a> </li> <li class=md-nav__item> <a href=../../home/customers/ class=md-nav__link> <span class=md-ellipsis> Customers </span> </a> </li> <li class=md-nav__item> <a href=../../home/sponsors/ class=md-nav__link> <span class=md-ellipsis> Sponsors </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2> <label class=md-nav__link for=__nav_2 id=__nav_2_label tabindex=0> <span class=md-ellipsis> Features </span> <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_2_label aria-expanded=false> <label class=md-nav__title for=__nav_2> <span class="md-nav__icon md-icon"></span> Features </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../features/arbitrary_types/ class=md-nav__link> <span class=md-ellipsis> Arbitrary Type Conversions </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_2> <div class="md-nav__link md-nav__container"> <a href=../../features/binary_formats/ class="md-nav__link "> <span class=md-ellipsis> Binary Formats </span> </a> <label class="md-nav__link " for=__nav_2_2 id=__nav_2_2_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_2_label aria-expanded=false> <label class=md-nav__title for=__nav_2_2> <span class="md-nav__icon md-icon"></span> Binary Formats </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../features/binary_formats/bjdata/ class=md-nav__link> <span class=md-ellipsis> BJData </span> </a> </li> <li class=md-nav__item> <a href=../../features/binary_formats/bson/ class=md-nav__link> <span class=md-ellipsis> BSON </span> </a> </li> <li class=md-nav__item> <a href=../../features/binary_formats/cbor/ class=md-nav__link> <span class=md-ellipsis> CBOR </span> </a> </li> <li class=md-nav__item> <a href=../../features/binary_formats/messagepack/ class=md-nav__link> <span class=md-ellipsis> MessagePack </span> </a> </li> <li class=md-nav__item> <a href=../../features/binary_formats/ubjson/ class=md-nav__link> <span class=md-ellipsis> UBJSON </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../features/binary_values/ class=md-nav__link> <span class=md-ellipsis> Binary Values </span> </a> </li> <li class=md-nav__item> <a href=../../features/comments/ class=md-nav__link> <span class=md-ellipsis> Comments </span> </a> </li> <li class=md-nav__item> <a href=../../features/trailing_commas/ class=md-nav__link> <span class=md-ellipsis> Trailing Commas </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_6> <div class="md-nav__link md-nav__container"> <a href=../../features/element_access/ class="md-nav__link "> <span class=md-ellipsis> Element Access </span> </a> <label class="md-nav__link " for=__nav_2_6 id=__nav_2_6_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_6_label aria-expanded=false> <label class=md-nav__title for=__nav_2_6> <span class="md-nav__icon md-icon"></span> Element Access </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../features/element_access/unchecked_access/ class=md-nav__link> <span class=md-ellipsis> Unchecked access: operator[] </span> </a> </li> <li class=md-nav__item> <a href=../../features/element_access/checked_access/ class=md-nav__link> <span class=md-ellipsis> Checked access: at </span> </a> </li> <li class=md-nav__item> <a href=../../features/element_access/default_value/ class=md-nav__link> <span class=md-ellipsis> Access with default value: value </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../features/iterators/ class=md-nav__link> <span class=md-ellipsis> Iterators </span> </a> </li> <li class=md-nav__item> <a href=../../features/json_pointer/ class=md-nav__link> <span class=md-ellipsis> JSON Pointer </span> </a> </li> <li class=md-nav__item> <a href=../../features/json_patch/ class=md-nav__link> <span class=md-ellipsis> JSON Patch and Diff </span> </a> </li> <li class=md-nav__item> <a href=../../features/merge_patch/ class=md-nav__link> <span class=md-ellipsis> JSON Merge Patch </span> </a> </li> <li class=md-nav__item> <a href=../../features/modules/ class=md-nav__link> <span class=md-ellipsis> Modules </span> </a> </li> <li class=md-nav__item> <a href=../../features/namespace/ class=md-nav__link> <span class=md-ellipsis> nlohmann Namespace </span> </a> </li> <li class=md-nav__item> <a href=../../features/object_order/ class=md-nav__link> <span class=md-ellipsis> Object Order </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_14> <div class="md-nav__link md-nav__container"> <a href=../../features/parsing/ class="md-nav__link "> <span class=md-ellipsis> Parsing </span> </a> <label class="md-nav__link " for=__nav_2_14 id=__nav_2_14_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_14_label aria-expanded=false> <label class=md-nav__title for=__nav_2_14> <span class="md-nav__icon md-icon"></span> Parsing </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../features/parsing/json_lines/ class=md-nav__link> <span class=md-ellipsis> JSON Lines </span> </a> </li> <li class=md-nav__item> <a href=../../features/parsing/parse_exceptions/ class=md-nav__link> <span class=md-ellipsis> Parsing and Exceptions </span> </a> </li> <li class=md-nav__item> <a href=../../features/parsing/parser_callbacks/ class=md-nav__link> <span class=md-ellipsis> Parser Callbacks </span> </a> </li> <li class=md-nav__item> <a href=../../features/parsing/sax_interface/ class=md-nav__link> <span class=md-ellipsis> SAX Interface </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../features/assertions/ class=md-nav__link> <span class=md-ellipsis> Runtime Assertions </span> </a> </li> <li class=md-nav__item> <a href=../../features/enum_conversion/ class=md-nav__link> <span class=md-ellipsis> Specializing enum conversion </span> </a> </li> <li class=md-nav__item> <a href=../../features/macros/ class=md-nav__link> <span class=md-ellipsis> Supported Macros </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_18> <div class="md-nav__link md-nav__container"> <a href=../../features/types/ class="md-nav__link "> <span class=md-ellipsis> Types </span> </a> <label class="md-nav__link " for=__nav_2_18 id=__nav_2_18_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_18_label aria-expanded=false> <label class=md-nav__title for=__nav_2_18> <span class="md-nav__icon md-icon"></span> Types </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../features/types/number_handling/ class=md-nav__link> <span class=md-ellipsis> Number Handling </span> </a> </li> </ul> </nav> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_3> <div class="md-nav__link md-nav__container"> <a href=../../integration/ class="md-nav__link "> <span class=md-ellipsis> Integration </span> </a> <label class="md-nav__link " for=__nav_3 id=__nav_3_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_3_label aria-expanded=false> <label class=md-nav__title for=__nav_3> <span class="md-nav__icon md-icon"></span> Integration </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../integration/migration_guide/ class=md-nav__link> <span class=md-ellipsis> Migration Guide </span> </a> </li> <li class=md-nav__item> <a href=../../integration/cmake/ class=md-nav__link> <span class=md-ellipsis> CMake </span> </a> </li> <li class=md-nav__item> <a href=../../integration/package_managers/ class=md-nav__link> <span class=md-ellipsis> Package Managers </span> </a> </li> <li class=md-nav__item> <a href=../../integration/pkg-config/ class=md-nav__link> <span class=md-ellipsis> Pkg-config </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--active md-nav__item--section md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4 checked> <label class=md-nav__link for=__nav_4 id=__nav_4_label tabindex> <span class=md-ellipsis> API Documentation </span> <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_4_label aria-expanded=true> <label class=md-nav__title for=__nav_4> <span class="md-nav__icon md-icon"></span> API Documentation </label> <ul class=md-nav__list data-md-scrollfix> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_1> <div class="md-nav__link md-nav__container"> <a href=../basic_json/ class="md-nav__link "> <span class=md-ellipsis> basic_json </span> </a> <label class="md-nav__link " for=__nav_4_1 id=__nav_4_1_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_1_label aria-expanded=false> <label class=md-nav__title for=__nav_4_1> <span class="md-nav__icon md-icon"></span> basic_json </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../basic_json/basic_json/ class=md-nav__link> <span class=md-ellipsis> (Constructor) </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/~basic_json/ class=md-nav__link> <span class=md-ellipsis> (Destructor) </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/accept/ class=md-nav__link> <span class=md-ellipsis> accept </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/array/ class=md-nav__link> <span class=md-ellipsis> array </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/array_t/ class=md-nav__link> <span class=md-ellipsis> array_t </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/at/ class=md-nav__link> <span class=md-ellipsis> at </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/back/ class=md-nav__link> <span class=md-ellipsis> back </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/begin/ class=md-nav__link> <span class=md-ellipsis> begin </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/binary/ class=md-nav__link> <span class=md-ellipsis> binary </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/binary_t/ class=md-nav__link> <span class=md-ellipsis> binary_t </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/boolean_t/ class=md-nav__link> <span class=md-ellipsis> boolean_t </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/cbegin/ class=md-nav__link> <span class=md-ellipsis> cbegin </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/cbor_tag_handler_t/ class=md-nav__link> <span class=md-ellipsis> cbor_tag_handler_t </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/cend/ class=md-nav__link> <span class=md-ellipsis> cend </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/clear/ class=md-nav__link> <span class=md-ellipsis> clear </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/contains/ class=md-nav__link> <span class=md-ellipsis> contains </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/count/ class=md-nav__link> <span class=md-ellipsis> count </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/crbegin/ class=md-nav__link> <span class=md-ellipsis> crbegin </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/crend/ class=md-nav__link> <span class=md-ellipsis> crend </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/default_object_comparator_t/ class=md-nav__link> <span class=md-ellipsis> default_object_comparator_t </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/diff/ class=md-nav__link> <span class=md-ellipsis> diff </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/dump/ class=md-nav__link> <span class=md-ellipsis> dump </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/emplace/ class=md-nav__link> <span class=md-ellipsis> emplace </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/emplace_back/ class=md-nav__link> <span class=md-ellipsis> emplace_back </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/empty/ class=md-nav__link> <span class=md-ellipsis> empty </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/end/ class=md-nav__link> <span class=md-ellipsis> end </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/end_pos/ class=md-nav__link> <span class=md-ellipsis> end_pos </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/erase/ class=md-nav__link> <span class=md-ellipsis> erase </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/error_handler_t/ class=md-nav__link> <span class=md-ellipsis> error_handler_t </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/exception/ class=md-nav__link> <span class=md-ellipsis> exception </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/find/ class=md-nav__link> <span class=md-ellipsis> find </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/flatten/ class=md-nav__link> <span class=md-ellipsis> flatten </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/from_bjdata/ class=md-nav__link> <span class=md-ellipsis> from_bjdata </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/from_bson/ class=md-nav__link> <span class=md-ellipsis> from_bson </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/from_cbor/ class=md-nav__link> <span class=md-ellipsis> from_cbor </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/from_msgpack/ class=md-nav__link> <span class=md-ellipsis> from_msgpack </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/from_ubjson/ class=md-nav__link> <span class=md-ellipsis> from_ubjson </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/front/ class=md-nav__link> <span class=md-ellipsis> front </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/get/ class=md-nav__link> <span class=md-ellipsis> get </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/get_allocator/ class=md-nav__link> <span class=md-ellipsis> get_allocator </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/get_binary/ class=md-nav__link> <span class=md-ellipsis> get_binary </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/get_ptr/ class=md-nav__link> <span class=md-ellipsis> get_ptr </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/get_ref/ class=md-nav__link> <span class=md-ellipsis> get_ref </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/get_to/ class=md-nav__link> <span class=md-ellipsis> get_to </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/std_hash/ class=md-nav__link> <span class=md-ellipsis> std::hash&lt;basic_json&gt; </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/input_format_t/ class=md-nav__link> <span class=md-ellipsis> input_format_t </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/insert/ class=md-nav__link> <span class=md-ellipsis> insert </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/invalid_iterator/ class=md-nav__link> <span class=md-ellipsis> invalid_iterator </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/is_array/ class=md-nav__link> <span class=md-ellipsis> is_array </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/is_binary/ class=md-nav__link> <span class=md-ellipsis> is_binary </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/is_boolean/ class=md-nav__link> <span class=md-ellipsis> is_boolean </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/is_discarded/ class=md-nav__link> <span class=md-ellipsis> is_discarded </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/is_null/ class=md-nav__link> <span class=md-ellipsis> is_null </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/is_number/ class=md-nav__link> <span class=md-ellipsis> is_number </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/is_number_float/ class=md-nav__link> <span class=md-ellipsis> is_number_float </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/is_number_integer/ class=md-nav__link> <span class=md-ellipsis> is_number_integer </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/is_number_unsigned/ class=md-nav__link> <span class=md-ellipsis> is_number_unsigned </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/is_object/ class=md-nav__link> <span class=md-ellipsis> is_object </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/is_primitive/ class=md-nav__link> <span class=md-ellipsis> is_primitive </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/is_string/ class=md-nav__link> <span class=md-ellipsis> is_string </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/is_structured/ class=md-nav__link> <span class=md-ellipsis> is_structured </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/items/ class=md-nav__link> <span class=md-ellipsis> items </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/json_base_class_t/ class=md-nav__link> <span class=md-ellipsis> json_base_class_t </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/json_serializer/ class=md-nav__link> <span class=md-ellipsis> json_serializer </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/max_size/ class=md-nav__link> <span class=md-ellipsis> max_size </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/meta/ class=md-nav__link> <span class=md-ellipsis> meta </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/merge_patch/ class=md-nav__link> <span class=md-ellipsis> merge_patch </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/number_float_t/ class=md-nav__link> <span class=md-ellipsis> number_float_t </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/number_integer_t/ class=md-nav__link> <span class=md-ellipsis> number_integer_t </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/number_unsigned_t/ class=md-nav__link> <span class=md-ellipsis> number_unsigned_t </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/object/ class=md-nav__link> <span class=md-ellipsis> object </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/object_comparator_t/ class=md-nav__link> <span class=md-ellipsis> object_comparator_t </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/object_t/ class=md-nav__link> <span class=md-ellipsis> object_t </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/operator_ValueType/ class=md-nav__link> <span class=md-ellipsis> operator ValueType </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/operator_value_t/ class=md-nav__link> <span class=md-ellipsis> operator value_t </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/operator%5B%5D/ class=md-nav__link> <span class=md-ellipsis> operator[] </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/operator%3D/ class=md-nav__link> <span class=md-ellipsis> operator= </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/operator%2B%3D/ class=md-nav__link> <span class=md-ellipsis> operator+= </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/operator_eq/ class=md-nav__link> <span class=md-ellipsis> operator== </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/operator_ne/ class=md-nav__link> <span class=md-ellipsis> operator!= </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/operator_lt/ class=md-nav__link> <span class=md-ellipsis> operator< </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/operator_gt/ class=md-nav__link> <span class=md-ellipsis> operator> </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/operator_le/ class=md-nav__link> <span class=md-ellipsis> operator<= </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/operator_ge/ class=md-nav__link> <span class=md-ellipsis> operator>= </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/operator_spaceship/ class=md-nav__link> <span class=md-ellipsis> operator<=> </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/out_of_range/ class=md-nav__link> <span class=md-ellipsis> out_of_range </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/other_error/ class=md-nav__link> <span class=md-ellipsis> other_error </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/parse/ class=md-nav__link> <span class=md-ellipsis> parse </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/parse_error/ class=md-nav__link> <span class=md-ellipsis> parse_error </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/parse_event_t/ class=md-nav__link> <span class=md-ellipsis> parse_event_t </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/parser_callback_t/ class=md-nav__link> <span class=md-ellipsis> parser_callback_t </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/patch/ class=md-nav__link> <span class=md-ellipsis> patch </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/patch_inplace/ class=md-nav__link> <span class=md-ellipsis> patch_inplace </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/push_back/ class=md-nav__link> <span class=md-ellipsis> push_back </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/rbegin/ class=md-nav__link> <span class=md-ellipsis> rbegin </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/rend/ class=md-nav__link> <span class=md-ellipsis> rend </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/sax_parse/ class=md-nav__link> <span class=md-ellipsis> sax_parse </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/size/ class=md-nav__link> <span class=md-ellipsis> size </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/start_pos/ class=md-nav__link> <span class=md-ellipsis> start_pos </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/string_t/ class=md-nav__link> <span class=md-ellipsis> string_t </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/swap/ class=md-nav__link> <span class=md-ellipsis> swap </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/std_swap/ class=md-nav__link> <span class=md-ellipsis> std::swap&lt;basic_json&gt; </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/to_bjdata/ class=md-nav__link> <span class=md-ellipsis> to_bjdata </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/to_bson/ class=md-nav__link> <span class=md-ellipsis> to_bson </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/to_cbor/ class=md-nav__link> <span class=md-ellipsis> to_cbor </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/to_msgpack/ class=md-nav__link> <span class=md-ellipsis> to_msgpack </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/to_string/ class=md-nav__link> <span class=md-ellipsis> to_string </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/to_ubjson/ class=md-nav__link> <span class=md-ellipsis> to_ubjson </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/type/ class=md-nav__link> <span class=md-ellipsis> type </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/type_error/ class=md-nav__link> <span class=md-ellipsis> type_error </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/type_name/ class=md-nav__link> <span class=md-ellipsis> type_name </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/unflatten/ class=md-nav__link> <span class=md-ellipsis> unflatten </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/update/ class=md-nav__link> <span class=md-ellipsis> update </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/value/ class=md-nav__link> <span class=md-ellipsis> value </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/value_t/ class=md-nav__link> <span class=md-ellipsis> value_t </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_2> <div class="md-nav__link md-nav__container"> <a href=../byte_container_with_subtype/ class="md-nav__link "> <span class=md-ellipsis> byte_container_with_subtype </span> </a> <label class="md-nav__link " for=__nav_4_2 id=__nav_4_2_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_2_label aria-expanded=false> <label class=md-nav__title for=__nav_4_2> <span class="md-nav__icon md-icon"></span> byte_container_with_subtype </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../byte_container_with_subtype/byte_container_with_subtype/ class=md-nav__link> <span class=md-ellipsis> (constructor) </span> </a> </li> <li class=md-nav__item> <a href=../byte_container_with_subtype/clear_subtype/ class=md-nav__link> <span class=md-ellipsis> clear_subtype </span> </a> </li> <li class=md-nav__item> <a href=../byte_container_with_subtype/has_subtype/ class=md-nav__link> <span class=md-ellipsis> has_subtype </span> </a> </li> <li class=md-nav__item> <a href=../byte_container_with_subtype/set_subtype/ class=md-nav__link> <span class=md-ellipsis> set_subtype </span> </a> </li> <li class=md-nav__item> <a href=../byte_container_with_subtype/subtype/ class=md-nav__link> <span class=md-ellipsis> subtype </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_3> <div class="md-nav__link md-nav__container"> <a href=../adl_serializer/ class="md-nav__link "> <span class=md-ellipsis> adl_serializer </span> </a> <label class="md-nav__link " for=__nav_4_3 id=__nav_4_3_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_3_label aria-expanded=false> <label class=md-nav__title for=__nav_4_3> <span class="md-nav__icon md-icon"></span> adl_serializer </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../adl_serializer/from_json/ class=md-nav__link> <span class=md-ellipsis> from_json </span> </a> </li> <li class=md-nav__item> <a href=../adl_serializer/to_json/ class=md-nav__link> <span class=md-ellipsis> to_json </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../json/ class=md-nav__link> <span class=md-ellipsis> json </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_5> <div class="md-nav__link md-nav__container"> <a href=../json_pointer/ class="md-nav__link "> <span class=md-ellipsis> json_pointer </span> </a> <label class="md-nav__link " for=__nav_4_5 id=__nav_4_5_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_5_label aria-expanded=false> <label class=md-nav__title for=__nav_4_5> <span class="md-nav__icon md-icon"></span> json_pointer </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../json_pointer/json_pointer/ class=md-nav__link> <span class=md-ellipsis> (Constructor) </span> </a> </li> <li class=md-nav__item> <a href=../json_pointer/back/ class=md-nav__link> <span class=md-ellipsis> back </span> </a> </li> <li class=md-nav__item> <a href=../json_pointer/empty/ class=md-nav__link> <span class=md-ellipsis> empty </span> </a> </li> <li class=md-nav__item> <a href=../json_pointer/front/ class=md-nav__link> <span class=md-ellipsis> front </span> </a> </li> <li class=md-nav__item> <a href=../json_pointer/operator_string_t/ class=md-nav__link> <span class=md-ellipsis> operator string_t </span> </a> </li> <li class=md-nav__item> <a href=../json_pointer/operator_eq/ class=md-nav__link> <span class=md-ellipsis> operator== </span> </a> </li> <li class=md-nav__item> <a href=../json_pointer/operator_ne/ class=md-nav__link> <span class=md-ellipsis> operator!= </span> </a> </li> <li class=md-nav__item> <a href=../json_pointer/operator_slash/ class=md-nav__link> <span class=md-ellipsis> operator/ </span> </a> </li> <li class=md-nav__item> <a href=../json_pointer/operator_slasheq/ class=md-nav__link> <span class=md-ellipsis> operator/= </span> </a> </li> <li class=md-nav__item> <a href=../json_pointer/parent_pointer/ class=md-nav__link> <span class=md-ellipsis> parent_pointer </span> </a> </li> <li class=md-nav__item> <a href=../json_pointer/pop_back/ class=md-nav__link> <span class=md-ellipsis> pop_back </span> </a> </li> <li class=md-nav__item> <a href=../json_pointer/pop_front/ class=md-nav__link> <span class=md-ellipsis> pop_front </span> </a> </li> <li class=md-nav__item> <a href=../json_pointer/push_back/ class=md-nav__link> <span class=md-ellipsis> push_back </span> </a> </li> <li class=md-nav__item> <a href=../json_pointer/push_front/ class=md-nav__link> <span class=md-ellipsis> push_front </span> </a> </li> <li class=md-nav__item> <a href=../json_pointer/string_t/ class=md-nav__link> <span class=md-ellipsis> string_t </span> </a> </li> <li class=md-nav__item> <a href=../json_pointer/to_string/ class=md-nav__link> <span class=md-ellipsis> to_string </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_6> <div class="md-nav__link md-nav__container"> <a href=../json_sax/ class="md-nav__link "> <span class=md-ellipsis> json_sax </span> </a> <label class="md-nav__link " for=__nav_4_6 id=__nav_4_6_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_6_label aria-expanded=false> <label class=md-nav__title for=__nav_4_6> <span class="md-nav__icon md-icon"></span> json_sax </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../json_sax/binary/ class=md-nav__link> <span class=md-ellipsis> binary </span> </a> </li> <li class=md-nav__item> <a href=../json_sax/boolean/ class=md-nav__link> <span class=md-ellipsis> boolean </span> </a> </li> <li class=md-nav__item> <a href=../json_sax/end_array/ class=md-nav__link> <span class=md-ellipsis> end_array </span> </a> </li> <li class=md-nav__item> <a href=../json_sax/end_object/ class=md-nav__link> <span class=md-ellipsis> end_object </span> </a> </li> <li class=md-nav__item> <a href=../json_sax/key/ class=md-nav__link> <span class=md-ellipsis> key </span> </a> </li> <li class=md-nav__item> <a href=../json_sax/null/ class=md-nav__link> <span class=md-ellipsis> null </span> </a> </li> <li class=md-nav__item> <a href=../json_sax/number_float/ class=md-nav__link> <span class=md-ellipsis> number_float </span> </a> </li> <li class=md-nav__item> <a href=../json_sax/number_integer/ class=md-nav__link> <span class=md-ellipsis> number_integer </span> </a> </li> <li class=md-nav__item> <a href=../json_sax/number_unsigned/ class=md-nav__link> <span class=md-ellipsis> number_unsigned </span> </a> </li> <li class=md-nav__item> <a href=../json_sax/parse_error/ class=md-nav__link> <span class=md-ellipsis> parse_error </span> </a> </li> <li class=md-nav__item> <a href=../json_sax/start_array/ class=md-nav__link> <span class=md-ellipsis> start_array </span> </a> </li> <li class=md-nav__item> <a href=../json_sax/start_object/ class=md-nav__link> <span class=md-ellipsis> start_object </span> </a> </li> <li class=md-nav__item> <a href=../json_sax/string/ class=md-nav__link> <span class=md-ellipsis> string </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../operator_ltlt/ class=md-nav__link> <span class=md-ellipsis> operator<<(basic_json), operator<<(json_pointer) </span> </a> </li> <li class=md-nav__item> <a href=../operator_gtgt/ class=md-nav__link> <span class=md-ellipsis> operator>>(basic_json) </span> </a> </li> <li class=md-nav__item> <a href=../operator_literal_json/ class=md-nav__link> <span class=md-ellipsis> operator""_json </span> </a> </li> <li class=md-nav__item> <a href=../operator_literal_json_pointer/ class=md-nav__link> <span class=md-ellipsis> operator""_json_pointer </span> </a> </li> <li class=md-nav__item> <a href=../ordered_json/ class=md-nav__link> <span class=md-ellipsis> ordered_json </span> </a> </li> <li class=md-nav__item> <a href=../ordered_map/ class=md-nav__link> <span class=md-ellipsis> ordered_map </span> </a> </li> <li class="md-nav__item md-nav__item--active md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_13 checked> <div class="md-nav__link md-nav__container"> <a href=./ class="md-nav__link md-nav__link--active"> <span class=md-ellipsis> macros </span> </a> <label class="md-nav__link md-nav__link--active" for=__nav_4_13 id=__nav_4_13_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_13_label aria-expanded=true> <label class=md-nav__title for=__nav_4_13> <span class="md-nav__icon md-icon"></span> macros </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=json_assert/ class=md-nav__link> <span class=md-ellipsis> JSON_ASSERT </span> </a> </li> <li class=md-nav__item> <a href=json_brace_init_copy_semantics/ class=md-nav__link> <span class=md-ellipsis> JSON_BRACE_INIT_COPY_SEMANTICS </span> </a> </li> <li class=md-nav__item> <a href=json_throw_user/ class=md-nav__link> <span class=md-ellipsis> JSON_CATCH_USER, JSON_THROW_USER, JSON_TRY_USER </span> </a> </li> <li class=md-nav__item> <a href=json_diagnostics/ class=md-nav__link> <span class=md-ellipsis> JSON_DIAGNOSTICS </span> </a> </li> <li class=md-nav__item> <a href=json_diagnostic_positions/ class=md-nav__link> <span class=md-ellipsis> JSON_DIAGNOSTIC_POSITIONS </span> </a> </li> <li class=md-nav__item> <a href=json_disable_enum_serialization/ class=md-nav__link> <span class=md-ellipsis> JSON_DISABLE_ENUM_SERIALIZATION </span> </a> </li> <li class=md-nav__item> <a href=json_has_cpp_11/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_CPP_11, JSON_HAS_CPP_14, JSON_HAS_CPP_17, JSON_HAS_CPP_20 </span> </a> </li> <li class=md-nav__item> <a href=json_has_filesystem/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_EXPERIMENTAL_FILESYSTEM, JSON_HAS_FILESYSTEM </span> </a> </li> <li class=md-nav__item> <a href=json_has_ranges/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_RANGES </span> </a> </li> <li class=md-nav__item> <a href=json_has_static_rtti/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_STATIC_RTTI </span> </a> </li> <li class=md-nav__item> <a href=json_has_three_way_comparison/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_THREE_WAY_COMPARISON </span> </a> </li> <li class=md-nav__item> <a href=json_noexception/ class=md-nav__link> <span class=md-ellipsis> JSON_NOEXCEPTION </span> </a> </li> <li class=md-nav__item> <a href=json_no_io/ class=md-nav__link> <span class=md-ellipsis> JSON_NO_IO </span> </a> </li> <li class=md-nav__item> <a href=json_skip_library_version_check/ class=md-nav__link> <span class=md-ellipsis> JSON_SKIP_LIBRARY_VERSION_CHECK </span> </a> </li> <li class=md-nav__item> <a href=json_skip_unsupported_compiler_check/ class=md-nav__link> <span class=md-ellipsis> JSON_SKIP_UNSUPPORTED_COMPILER_CHECK </span> </a> </li> <li class=md-nav__item> <a href=json_use_global_udls/ class=md-nav__link> <span class=md-ellipsis> JSON_USE_GLOBAL_UDLS </span> </a> </li> <li class=md-nav__item> <a href=json_use_implicit_conversions/ class=md-nav__link> <span class=md-ellipsis> JSON_USE_IMPLICIT_CONVERSIONS </span> </a> </li> <li class=md-nav__item> <a href=json_use_legacy_discarded_value_comparison/ class=md-nav__link> <span class=md-ellipsis> JSON_USE_LEGACY_DISCARDED_VALUE_COMPARISON </span> </a> </li> <li class=md-nav__item> <a href=nlohmann_define_derived_type/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_ONLY_SERIALIZE, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE </span> </a> </li> <li class=md-nav__item> <a href=nlohmann_define_type_intrusive/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_TYPE_INTRUSIVE, NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_TYPE_INTRUSIVE_ONLY_SERIALIZE </span> </a> </li> <li class=md-nav__item> <a href=nlohmann_define_type_non_intrusive/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE </span> </a> </li> <li class=md-nav__item> <a href=nlohmann_define_type_with_names/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_TYPE_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES </span> </a> </li> <li class=md-nav__item> <a href=nlohmann_json_namespace/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_NAMESPACE </span> </a> </li> <li class=md-nav__item> <a href=nlohmann_json_namespace_begin/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_NAMESPACE_BEGIN, NLOHMANN_JSON_NAMESPACE_END </span> </a> </li> <li class=md-nav__item> <a href=nlohmann_json_namespace_no_version/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_NAMESPACE_NO_VERSION </span> </a> </li> <li class=md-nav__item> <a href=nlohmann_json_serialize_enum/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_SERIALIZE_ENUM </span> </a> </li> <li class=md-nav__item> <a href=nlohmann_json_serialize_enum_strict/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_SERIALIZE_ENUM_STRICT </span> </a> </li> <li class=md-nav__item> <a href=nlohmann_json_version_major/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_VERSION_MAJOR, NLOHMANN_JSON_VERSION_MINOR, NLOHMANN_JSON_VERSION_PATCH </span> </a> </li> </ul> </nav> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_5> <div class="md-nav__link md-nav__container"> <a href=../../community/ class="md-nav__link "> <span class=md-ellipsis> Community </span> </a> <label class="md-nav__link " for=__nav_5 id=__nav_5_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_5_label aria-expanded=false> <label class=md-nav__title for=__nav_5> <span class="md-nav__icon md-icon"></span> Community </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../community/code_of_conduct/ class=md-nav__link> <span class=md-ellipsis> Code of Conduct </span> </a> </li> <li class=md-nav__item> <a href=../../community/contribution_guidelines/ class=md-nav__link> <span class=md-ellipsis> Contribution Guidelines </span> </a> </li> <li class=md-nav__item> <a href=../../community/quality_assurance/ class=md-nav__link> <span class=md-ellipsis> Quality assurance </span> </a> </li> <li class=md-nav__item> <a href=../../community/governance/ class=md-nav__link> <span class=md-ellipsis> Governance </span> </a> </li> <li class=md-nav__item> <a href=../../community/security_policy/ class=md-nav__link> <span class=md-ellipsis> Security Policy </span> </a> </li> </ul> </nav> </li> </ul> </nav> </div> </div> </div> <div class="md-sidebar md-sidebar--secondary" data-md-component=sidebar data-md-type=toc> <div class=md-sidebar__scrollwrap> <div class=md-sidebar__inner> <nav class="md-nav md-nav--secondary" aria-label="Table of contents"> <label class=md-nav__title for=__toc> <span class="md-nav__icon md-icon"></span> Table of contents </label> <ul class=md-nav__list data-md-component=toc data-md-scrollfix> <li class=md-nav__item> <a href=#runtime-assertions class=md-nav__link> <span class=md-ellipsis> Runtime assertions </span> </a> </li> <li class=md-nav__item> <a href=#exceptions class=md-nav__link> <span class=md-ellipsis> Exceptions </span> </a> </li> <li class=md-nav__item> <a href=#language-support class=md-nav__link> <span class=md-ellipsis> Language support </span> </a> </li> <li class=md-nav__item> <a href=#library-version class=md-nav__link> <span class=md-ellipsis> Library version </span> </a> </li> <li class=md-nav__item> <a href=#library-namespace class=md-nav__link> <span class=md-ellipsis> Library namespace </span> </a> </li> <li class=md-nav__item> <a href=#type-conversions class=md-nav__link> <span class=md-ellipsis> Type conversions </span> </a> </li> <li class=md-nav__item> <a href=#comparison-behavior class=md-nav__link> <span class=md-ellipsis> Comparison behavior </span> </a> </li> <li class=md-nav__item> <a href=#serializationdeserialization-macros class=md-nav__link> <span class=md-ellipsis> Serialization/deserialization macros </span> </a> <nav class=md-nav aria-label="Serialization/deserialization macros"> <ul class=md-nav__list> <li class=md-nav__item> <a href=#enums class=md-nav__link> <span class=md-ellipsis> Enums </span> </a> </li> <li class=md-nav__item> <a href=#classes-and-structs class=md-nav__link> <span class=md-ellipsis> Classes and structs </span> </a> </li> </ul> </nav> </li> </ul> </nav> </div> </div> </div> <div class=md-content data-md-component=content> <article class="md-content__inner md-typeset"> <a href="https://github.com/nlohmann/json/edit/develop/docs/mkdocs/docs/api/macros/index.md" title="Edit this page" class="md-content__button md-icon" rel="edit"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M10 20H6V4h7v5h5v3.1l2-2V8l-6-6H6c-1.1 0-2 .9-2 2v16c0 1.1.9 2 2 2h4zm10.2-7c.1 0 .3.1.4.2l1.3 1.3c.2.2.2.6 0 .8l-1 1-2.1-2.1 1-1c.1-.1.2-.2.4-.2m0 3.9L14.1 23H12v-2.1l6.1-6.1z"/></svg> </a> <a href="https://github.com/nlohmann/json/raw/develop/docs/mkdocs/docs/api/macros/index.md" title="View source of this page" class="md-content__button md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M17 18c.56 0 1 .44 1 1s-.44 1-1 1-1-.44-1-1 .44-1 1-1m0-3c-2.73 0-5.06 1.66-6 4 .94 2.34 3.27 4 6 4s5.06-1.66 6-4c-.94-2.34-3.27-4-6-4m0 6.5a2.5 2.5 0 0 1-2.5-2.5 2.5 2.5 0 0 1 2.5-2.5 2.5 2.5 0 0 1 2.5 2.5 2.5 2.5 0 0 1-2.5 2.5M9.27 20H6V4h7v5h5v4.07c.7.08 1.36.25 2 .49V8l-6-6H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h4.5a8.2 8.2 0 0 1-1.23-2"/></svg> </a> <h1 id=macros>Macros<a class=headerlink href=#macros title="Permanent link">&para;</a></h1> <p>Some aspects of the library can be configured by defining preprocessor macros <strong>before</strong> including the <code>json.hpp</code> header. See also the <a href=../../features/macros/ >macro overview page</a>.</p> <h2 id=runtime-assertions>Runtime assertions<a class=headerlink href=#runtime-assertions title="Permanent link">&para;</a></h2> <ul> <li><a href=json_assert/ ><strong>JSON_ASSERT(x)</strong></a> - control behavior of runtime assertions</li> </ul> <h2 id=exceptions>Exceptions<a class=headerlink href=#exceptions title="Permanent link">&para;</a></h2> <ul> <li><a href=json_throw_user/ ><strong>JSON_CATCH_USER(exception)</strong><br><strong>JSON_THROW_USER(exception)</strong><br><strong>JSON_TRY_USER</strong></a> - control exceptions</li> <li><a href=json_diagnostics/ ><strong>JSON_DIAGNOSTICS</strong></a> - control extended diagnostics</li> <li><a href=json_diagnostic_positions/ ><strong>JSON_DIAGNOSTIC_POSITIONS</strong></a> - access positions of elements</li> <li><a href=json_noexception/ ><strong>JSON_NOEXCEPTION</strong></a> - switch off exceptions</li> </ul> <h2 id=language-support>Language support<a class=headerlink href=#language-support title="Permanent link">&para;</a></h2> <ul> <li><a href=json_has_cpp_11/ ><strong>JSON_HAS_CPP_11</strong><br><strong>JSON_HAS_CPP_14</strong><br><strong>JSON_HAS_CPP_17</strong><br><strong>JSON_HAS_CPP_20</strong></a> - set supported C++ standard</li> <li><a href=json_has_filesystem/ ><strong>JSON_HAS_FILESYSTEM</strong><br><strong>JSON_HAS_EXPERIMENTAL_FILESYSTEM</strong></a> - control <code>std::filesystem</code> support</li> <li><a href=json_has_ranges/ ><strong>JSON_HAS_RANGES</strong></a> - control <code>std::ranges</code> support</li> <li><a href=json_has_three_way_comparison/ ><strong>JSON_HAS_THREE_WAY_COMPARISON</strong></a> - control 3-way comparison support</li> <li><a href=json_no_io/ ><strong>JSON_NO_IO</strong></a> - switch off functions relying on certain C++ I/O headers</li> <li><a href=json_skip_unsupported_compiler_check/ ><strong>JSON_SKIP_UNSUPPORTED_COMPILER_CHECK</strong></a> - do not warn about unsupported compilers</li> <li><a href=json_use_global_udls/ ><strong>JSON_USE_GLOBAL_UDLS</strong></a> - place user-defined string literals (UDLs) into the global namespace</li> </ul> <h2 id=library-version>Library version<a class=headerlink href=#library-version title="Permanent link">&para;</a></h2> <ul> <li><a href=json_skip_library_version_check/ ><strong>JSON_SKIP_LIBRARY_VERSION_CHECK</strong></a> - skip library version check</li> <li><a href=nlohmann_json_version_major/ ><strong>NLOHMANN_JSON_VERSION_MAJOR</strong><br><strong>NLOHMANN_JSON_VERSION_MINOR</strong><br><strong>NLOHMANN_JSON_VERSION_PATCH</strong></a> - library version information</li> </ul> <h2 id=library-namespace>Library namespace<a class=headerlink href=#library-namespace title="Permanent link">&para;</a></h2> <ul> <li><a href=nlohmann_json_namespace/ ><strong>NLOHMANN_JSON_NAMESPACE</strong></a> - full name of the <code>nlohmann</code> namespace</li> <li><a href=nlohmann_json_namespace_begin/ ><strong>NLOHMANN_JSON_NAMESPACE_BEGIN</strong><br><strong>NLOHMANN_JSON_NAMESPACE_END</strong></a> - open and close the library namespace</li> <li><a href=nlohmann_json_namespace_no_version/ ><strong>NLOHMANN_JSON_NAMESPACE_NO_VERSION</strong></a> - disable the version component of the inline namespace</li> </ul> <h2 id=type-conversions>Type conversions<a class=headerlink href=#type-conversions title="Permanent link">&para;</a></h2> <ul> <li><a href=json_brace_init_copy_semantics/ ><strong>JSON_BRACE_INIT_COPY_SEMANTICS</strong></a> - opt in to copy/move semantics for single-element brace initialization</li> <li><a href=json_disable_enum_serialization/ ><strong>JSON_DISABLE_ENUM_SERIALIZATION</strong></a> - switch off default serialization/deserialization functions for enums</li> <li><a href=json_use_implicit_conversions/ ><strong>JSON_USE_IMPLICIT_CONVERSIONS</strong></a> - control implicit conversions</li> </ul> <h2 id=comparison-behavior>Comparison behavior<a class=headerlink href=#comparison-behavior title="Permanent link">&para;</a></h2> <ul> <li><a href=json_use_legacy_discarded_value_comparison/ ><strong>JSON_USE_LEGACY_DISCARDED_VALUE_COMPARISON</strong></a> - control comparison of discarded values</li> </ul> <h2 id=serializationdeserialization-macros>Serialization/deserialization macros<a class=headerlink href=#serializationdeserialization-macros title="Permanent link">&para;</a></h2> <h3 id=enums>Enums<a class=headerlink href=#enums title="Permanent link">&para;</a></h3> <ul> <li><a href=nlohmann_json_serialize_enum/ ><strong>NLOHMANN_JSON_SERIALIZE_ENUM</strong></a> - serialize/deserialize an enum</li> <li><a href=nlohmann_json_serialize_enum_strict/ ><strong>NLOHMANN_JSON_SERIALIZE_ENUM_STRICT</strong></a> - serialize/deserialize an enum with exceptions</li> </ul> <h3 id=classes-and-structs>Classes and structs<a class=headerlink href=#classes-and-structs title="Permanent link">&para;</a></h3> <ul> <li><a href=nlohmann_define_type_intrusive/ ><strong>NLOHMANN_DEFINE_TYPE_INTRUSIVE</strong></a> - serialize/deserialize a non-derived class with private members</li> <li><a href=nlohmann_define_type_intrusive/ ><strong>NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT</strong></a> - serialize/deserialize a non-derived class with private members; uses default values</li> <li><a href=nlohmann_define_type_intrusive/ ><strong>NLOHMANN_DEFINE_TYPE_INTRUSIVE_ONLY_SERIALIZE</strong></a> - serialize a non-derived class with private members</li> <li><a href=nlohmann_define_type_non_intrusive/ ><strong>NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE</strong></a> - serialize/deserialize a non-derived class</li> <li><a href=nlohmann_define_type_non_intrusive/ ><strong>NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT</strong></a> - serialize/deserialize a non-derived class; uses default values</li> <li> <p><a href=nlohmann_define_type_non_intrusive/ ><strong>NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE</strong></a> - serialize a non-derived class</p> </li> <li> <p><a href=nlohmann_define_derived_type/ ><strong>NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE</strong></a> - serialize/deserialize a derived class with private members</p> </li> <li><a href=nlohmann_define_derived_type/ ><strong>NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_DEFAULT</strong></a> - serialize/deserialize a derived class with private members; uses default values</li> <li><a href=nlohmann_define_derived_type/ ><strong>NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_ONLY_SERIALIZE</strong></a> - serialize a derived class with private members</li> <li><a href=nlohmann_define_derived_type/ ><strong>NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE</strong></a> - serialize/deserialize a derived class</li> <li><a href=nlohmann_define_derived_type/ ><strong>NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_DEFAULT</strong></a> - serialize/deserialize a derived class; uses default values</li> <li><a href=nlohmann_define_derived_type/ ><strong>NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE</strong></a> - serialize a derived class</li> <li><a href=nlohmann_define_type_with_names/ ><strong>NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_NAMES</strong></a> - serialize/deserialize a non-derived class with private members; uses custom names</li> <li><a href=nlohmann_define_type_with_names/ ><strong>NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT_WITH_NAMES</strong></a> - serialize/deserialize a non-derived class with private members; uses default values; uses custom names</li> <li><a href=nlohmann_define_type_with_names/ ><strong>NLOHMANN_DEFINE_TYPE_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES</strong></a> - serialize a non-derived class with private members; uses custom names</li> <li><a href=nlohmann_define_type_with_names/ ><strong>NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_NAMES</strong></a> - serialize/deserialize a non-derived class; uses custom names</li> <li><a href=nlohmann_define_type_with_names/ ><strong>NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT_WITH_NAMES</strong></a> - serialize/deserialize a non-derived class; uses default values; uses custom names</li> <li> <p><a href=nlohmann_define_type_with_names/ ><strong>NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES</strong></a> - serialize a non-derived class; uses custom names</p> </li> <li> <p><a href=nlohmann_define_type_with_names/ ><strong>NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_NAMES</strong></a> - serialize/deserialize a derived class with private members; uses custom names</p> </li> <li><a href=nlohmann_define_type_with_names/ ><strong>NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_DEFAULT_WITH_NAMES</strong></a> - serialize/deserialize a derived class with private members; uses default values; uses custom names</li> <li><a href=nlohmann_define_type_with_names/ ><strong>NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES</strong></a> - serialize a derived class with private members; uses custom names</li> <li><a href=nlohmann_define_type_with_names/ ><strong>NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_NAMES</strong></a> - serialize/deserialize a derived class; uses custom names</li> <li><a href=nlohmann_define_type_with_names/ ><strong>NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_DEFAULT_WITH_NAMES</strong></a> - serialize/deserialize a derived class; uses default values; uses custom names</li> <li><a href=nlohmann_define_type_with_names/ ><strong>NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES</strong></a> - serialize a derived class; uses custom names</li> </ul> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 23, 2026 11:16:18 UTC">June 23, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
+<!doctype html><html lang=en class=no-js> <head><meta charset=utf-8><meta name=viewport content="width=device-width,initial-scale=1"><meta name=author content="Niels Lohmann"><link href="https://json.nlohmann.me/api/macros/" rel="canonical"><link href=../ordered_map/ rel=prev><link href=json_assert/ rel=next><link rel=icon href=../../assets/images/favicon.png><meta name=generator content="mkdocs-1.6.1, mkdocs-material-9.7.6"><title>Overview - JSON for Modern C++</title><link rel=stylesheet href=../../assets/stylesheets/main.484c7ddc.min.css><link rel=stylesheet href=../../assets/stylesheets/palette.ab4e12ef.min.css><link rel="stylesheet" href="../../assets/external/fonts.googleapis.com/css.61a430c9.css"><style>:root{--md-text-font:"Roboto";--md-code-font:"JetBrains Mono"}</style><link rel=stylesheet href=../../css/custom.css><script>__md_scope=new URL("../..",location),__md_hash=e=>[...e].reduce(((e,_)=>(e<<5)-e+_.charCodeAt(0)),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script></head> <body dir=ltr data-md-color-scheme=default data-md-color-primary=indigo data-md-color-accent=indigo> <input class=md-toggle data-md-toggle=drawer type=checkbox id=__drawer autocomplete=off> <input class=md-toggle data-md-toggle=search type=checkbox id=__search autocomplete=off> <label class=md-overlay for=__drawer></label> <div data-md-component=skip> <a href=#macros class=md-skip> Skip to content </a> </div> <div data-md-component=announce> </div> <header class=md-header data-md-component=header> <nav class="md-header__inner md-grid" aria-label=Header> <a href=../.. title="JSON for Modern C++" class="md-header__button md-logo" aria-label="JSON for Modern C++" data-md-component=logo> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54"/></svg> </a> <label class="md-header__button md-icon" for=__drawer> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M3 6h18v2H3zm0 5h18v2H3zm0 5h18v2H3z"/></svg> </label> <div class=md-header__title data-md-component=header-title> <div class=md-header__ellipsis> <div class=md-header__topic> <span class=md-ellipsis> JSON for Modern C++ </span> </div> <div class=md-header__topic data-md-component=header-topic> <span class=md-ellipsis> Overview </span> </div> </div> </div> <form class=md-header__option data-md-component=palette> <input class=md-option data-md-color-media="(prefers-color-scheme: light)" data-md-color-scheme=default data-md-color-primary=indigo data-md-color-accent=indigo aria-label="Switch to dark mode" type=radio name=__palette id=__palette_0> <label class="md-header__button md-icon" title="Switch to dark mode" for=__palette_1 hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a4 4 0 0 0-4 4 4 4 0 0 0 4 4 4 4 0 0 0 4-4 4 4 0 0 0-4-4m0 10a6 6 0 0 1-6-6 6 6 0 0 1 6-6 6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12z"/></svg> </label> <input class=md-option data-md-color-media="(prefers-color-scheme: dark)" data-md-color-scheme=slate data-md-color-primary=indigo data-md-color-accent=indigo aria-label="Switch to light mode" type=radio name=__palette id=__palette_1> <label class="md-header__button md-icon" title="Switch to light mode" for=__palette_0 hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 18c-.89 0-1.74-.2-2.5-.55C11.56 16.5 13 14.42 13 12s-1.44-4.5-3.5-5.45C10.26 6.2 11.11 6 12 6a6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12z"/></svg> </label> </form> <script>var palette=__md_get("__palette");if(palette&&palette.color){if("(prefers-color-scheme)"===palette.color.media){var media=matchMedia("(prefers-color-scheme: light)"),input=document.querySelector(media.matches?"[data-md-color-media='(prefers-color-scheme: light)']":"[data-md-color-media='(prefers-color-scheme: dark)']");palette.color.media=input.getAttribute("data-md-color-media"),palette.color.scheme=input.getAttribute("data-md-color-scheme"),palette.color.primary=input.getAttribute("data-md-color-primary"),palette.color.accent=input.getAttribute("data-md-color-accent")}for(var[key,value]of Object.entries(palette.color))document.body.setAttribute("data-md-color-"+key,value)}</script> <label class="md-header__button md-icon" for=__search> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg> </label> <div class=md-search data-md-component=search role=dialog> <label class=md-search__overlay for=__search></label> <div class=md-search__inner role=search> <form class=md-search__form name=search> <input type=text class=md-search__input name=query aria-label=Search placeholder=Search autocapitalize=off autocorrect=off autocomplete=off spellcheck=false data-md-component=search-query required> <label class="md-search__icon md-icon" for=__search> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11z"/></svg> </label> <nav class=md-search__options aria-label=Search> <button type=reset class="md-search__icon md-icon" title=Clear aria-label=Clear tabindex=-1> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z"/></svg> </button> </nav> </form> <div class=md-search__output> <div class=md-search__scrollwrap tabindex=0 data-md-scrollfix> <div class=md-search-result data-md-component=search-result> <div class=md-search-result__meta> Initializing search </div> <ol class=md-search-result__list role=presentation></ol> </div> </div> </div> </div> </div> <div class=md-header__source> <a href="https://github.com/nlohmann/json" title="Go to repository" class="md-source" data-md-component="source"> <div class="md-source__icon md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </div> <div class=md-source__repository> nlohmann/json </div> </a> </div> </nav> </header> <div class=md-container data-md-component=container> <nav class=md-tabs aria-label=Tabs data-md-component=tabs> <div class=md-grid> <ul class=md-tabs__list> <li class=md-tabs__item> <a href=../.. class=md-tabs__link> Home </a> </li> <li class=md-tabs__item> <a href=../../features/arbitrary_types/ class=md-tabs__link> Features </a> </li> <li class=md-tabs__item> <a href=../../integration/ class=md-tabs__link> Integration </a> </li> <li class="md-tabs__item md-tabs__item--active"> <a href=../basic_json/ class=md-tabs__link> API Documentation </a> </li> <li class=md-tabs__item> <a href=../../community/ class=md-tabs__link> Community </a> </li> </ul> </div> </nav> <main class=md-main data-md-component=main> <div class="md-main__inner md-grid"> <div class="md-sidebar md-sidebar--primary" data-md-component=sidebar data-md-type=navigation> <div class=md-sidebar__scrollwrap> <div class=md-sidebar__inner> <nav class="md-nav md-nav--primary md-nav--lifted" aria-label=Navigation data-md-level=0> <label class=md-nav__title for=__drawer> <a href=../.. title="JSON for Modern C++" class="md-nav__button md-logo" aria-label="JSON for Modern C++" data-md-component=logo> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54"/></svg> </a> JSON for Modern C++ </label> <div class=md-nav__source> <a href="https://github.com/nlohmann/json" title="Go to repository" class="md-source" data-md-component="source"> <div class="md-source__icon md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </div> <div class=md-source__repository> nlohmann/json </div> </a> </div> <ul class=md-nav__list data-md-scrollfix> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_1> <div class="md-nav__link md-nav__container"> <a href=../.. class="md-nav__link "> <span class=md-ellipsis> Home </span> </a> <label class="md-nav__link " for=__nav_1 id=__nav_1_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_1_label aria-expanded=false> <label class=md-nav__title for=__nav_1> <span class="md-nav__icon md-icon"></span> Home </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../home/license/ class=md-nav__link> <span class=md-ellipsis> License </span> </a> </li> <li class=md-nav__item> <a href=../../home/faq/ class=md-nav__link> <span class=md-ellipsis> FAQ </span> </a> </li> <li class=md-nav__item> <a href=../../home/exceptions/ class=md-nav__link> <span class=md-ellipsis> Exceptions </span> </a> </li> <li class=md-nav__item> <a href=../../home/releases/ class=md-nav__link> <span class=md-ellipsis> Releases </span> </a> </li> <li class=md-nav__item> <a href=../../home/design_goals/ class=md-nav__link> <span class=md-ellipsis> Design goals </span> </a> </li> <li class=md-nav__item> <a href=../../home/architecture/ class=md-nav__link> <span class=md-ellipsis> Architecture </span> </a> </li> <li class=md-nav__item> <a href=../../home/customers/ class=md-nav__link> <span class=md-ellipsis> Customers </span> </a> </li> <li class=md-nav__item> <a href=../../home/sponsors/ class=md-nav__link> <span class=md-ellipsis> Sponsors </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2> <label class=md-nav__link for=__nav_2 id=__nav_2_label tabindex=0> <span class=md-ellipsis> Features </span> <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_2_label aria-expanded=false> <label class=md-nav__title for=__nav_2> <span class="md-nav__icon md-icon"></span> Features </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../features/arbitrary_types/ class=md-nav__link> <span class=md-ellipsis> Arbitrary Type Conversions </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_2> <div class="md-nav__link md-nav__container"> <a href=../../features/binary_formats/ class="md-nav__link "> <span class=md-ellipsis> Binary Formats </span> </a> <label class="md-nav__link " for=__nav_2_2 id=__nav_2_2_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_2_label aria-expanded=false> <label class=md-nav__title for=__nav_2_2> <span class="md-nav__icon md-icon"></span> Binary Formats </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../features/binary_formats/bjdata/ class=md-nav__link> <span class=md-ellipsis> BJData </span> </a> </li> <li class=md-nav__item> <a href=../../features/binary_formats/bson/ class=md-nav__link> <span class=md-ellipsis> BSON </span> </a> </li> <li class=md-nav__item> <a href=../../features/binary_formats/cbor/ class=md-nav__link> <span class=md-ellipsis> CBOR </span> </a> </li> <li class=md-nav__item> <a href=../../features/binary_formats/messagepack/ class=md-nav__link> <span class=md-ellipsis> MessagePack </span> </a> </li> <li class=md-nav__item> <a href=../../features/binary_formats/ubjson/ class=md-nav__link> <span class=md-ellipsis> UBJSON </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../features/binary_values/ class=md-nav__link> <span class=md-ellipsis> Binary Values </span> </a> </li> <li class=md-nav__item> <a href=../../features/comments/ class=md-nav__link> <span class=md-ellipsis> Comments </span> </a> </li> <li class=md-nav__item> <a href=../../features/trailing_commas/ class=md-nav__link> <span class=md-ellipsis> Trailing Commas </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_6> <div class="md-nav__link md-nav__container"> <a href=../../features/element_access/ class="md-nav__link "> <span class=md-ellipsis> Element Access </span> </a> <label class="md-nav__link " for=__nav_2_6 id=__nav_2_6_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_6_label aria-expanded=false> <label class=md-nav__title for=__nav_2_6> <span class="md-nav__icon md-icon"></span> Element Access </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../features/element_access/unchecked_access/ class=md-nav__link> <span class=md-ellipsis> Unchecked access: operator[] </span> </a> </li> <li class=md-nav__item> <a href=../../features/element_access/checked_access/ class=md-nav__link> <span class=md-ellipsis> Checked access: at </span> </a> </li> <li class=md-nav__item> <a href=../../features/element_access/default_value/ class=md-nav__link> <span class=md-ellipsis> Access with default value: value </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../features/iterators/ class=md-nav__link> <span class=md-ellipsis> Iterators </span> </a> </li> <li class=md-nav__item> <a href=../../features/json_pointer/ class=md-nav__link> <span class=md-ellipsis> JSON Pointer </span> </a> </li> <li class=md-nav__item> <a href=../../features/json_patch/ class=md-nav__link> <span class=md-ellipsis> JSON Patch and Diff </span> </a> </li> <li class=md-nav__item> <a href=../../features/merge_patch/ class=md-nav__link> <span class=md-ellipsis> JSON Merge Patch </span> </a> </li> <li class=md-nav__item> <a href=../../features/modules/ class=md-nav__link> <span class=md-ellipsis> Modules </span> </a> </li> <li class=md-nav__item> <a href=../../features/namespace/ class=md-nav__link> <span class=md-ellipsis> nlohmann Namespace </span> </a> </li> <li class=md-nav__item> <a href=../../features/object_order/ class=md-nav__link> <span class=md-ellipsis> Object Order </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_14> <div class="md-nav__link md-nav__container"> <a href=../../features/parsing/ class="md-nav__link "> <span class=md-ellipsis> Parsing </span> </a> <label class="md-nav__link " for=__nav_2_14 id=__nav_2_14_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_14_label aria-expanded=false> <label class=md-nav__title for=__nav_2_14> <span class="md-nav__icon md-icon"></span> Parsing </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../features/parsing/json_lines/ class=md-nav__link> <span class=md-ellipsis> JSON Lines </span> </a> </li> <li class=md-nav__item> <a href=../../features/parsing/parse_exceptions/ class=md-nav__link> <span class=md-ellipsis> Parsing and Exceptions </span> </a> </li> <li class=md-nav__item> <a href=../../features/parsing/parser_callbacks/ class=md-nav__link> <span class=md-ellipsis> Parser Callbacks </span> </a> </li> <li class=md-nav__item> <a href=../../features/parsing/sax_interface/ class=md-nav__link> <span class=md-ellipsis> SAX Interface </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../features/assertions/ class=md-nav__link> <span class=md-ellipsis> Runtime Assertions </span> </a> </li> <li class=md-nav__item> <a href=../../features/enum_conversion/ class=md-nav__link> <span class=md-ellipsis> Specializing enum conversion </span> </a> </li> <li class=md-nav__item> <a href=../../features/macros/ class=md-nav__link> <span class=md-ellipsis> Supported Macros </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_18> <div class="md-nav__link md-nav__container"> <a href=../../features/types/ class="md-nav__link "> <span class=md-ellipsis> Types </span> </a> <label class="md-nav__link " for=__nav_2_18 id=__nav_2_18_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_18_label aria-expanded=false> <label class=md-nav__title for=__nav_2_18> <span class="md-nav__icon md-icon"></span> Types </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../features/types/number_handling/ class=md-nav__link> <span class=md-ellipsis> Number Handling </span> </a> </li> </ul> </nav> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_3> <div class="md-nav__link md-nav__container"> <a href=../../integration/ class="md-nav__link "> <span class=md-ellipsis> Integration </span> </a> <label class="md-nav__link " for=__nav_3 id=__nav_3_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_3_label aria-expanded=false> <label class=md-nav__title for=__nav_3> <span class="md-nav__icon md-icon"></span> Integration </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../integration/migration_guide/ class=md-nav__link> <span class=md-ellipsis> Migration Guide </span> </a> </li> <li class=md-nav__item> <a href=../../integration/cmake/ class=md-nav__link> <span class=md-ellipsis> CMake </span> </a> </li> <li class=md-nav__item> <a href=../../integration/package_managers/ class=md-nav__link> <span class=md-ellipsis> Package Managers </span> </a> </li> <li class=md-nav__item> <a href=../../integration/pkg-config/ class=md-nav__link> <span class=md-ellipsis> Pkg-config </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--active md-nav__item--section md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4 checked> <label class=md-nav__link for=__nav_4 id=__nav_4_label tabindex> <span class=md-ellipsis> API Documentation </span> <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_4_label aria-expanded=true> <label class=md-nav__title for=__nav_4> <span class="md-nav__icon md-icon"></span> API Documentation </label> <ul class=md-nav__list data-md-scrollfix> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_1> <div class="md-nav__link md-nav__container"> <a href=../basic_json/ class="md-nav__link "> <span class=md-ellipsis> basic_json </span> </a> <label class="md-nav__link " for=__nav_4_1 id=__nav_4_1_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_1_label aria-expanded=false> <label class=md-nav__title for=__nav_4_1> <span class="md-nav__icon md-icon"></span> basic_json </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../basic_json/basic_json/ class=md-nav__link> <span class=md-ellipsis> (Constructor) </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/~basic_json/ class=md-nav__link> <span class=md-ellipsis> (Destructor) </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/accept/ class=md-nav__link> <span class=md-ellipsis> accept </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/array/ class=md-nav__link> <span class=md-ellipsis> array </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/array_t/ class=md-nav__link> <span class=md-ellipsis> array_t </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/at/ class=md-nav__link> <span class=md-ellipsis> at </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/back/ class=md-nav__link> <span class=md-ellipsis> back </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/begin/ class=md-nav__link> <span class=md-ellipsis> begin </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/binary/ class=md-nav__link> <span class=md-ellipsis> binary </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/binary_t/ class=md-nav__link> <span class=md-ellipsis> binary_t </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/boolean_t/ class=md-nav__link> <span class=md-ellipsis> boolean_t </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/cbegin/ class=md-nav__link> <span class=md-ellipsis> cbegin </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/cbor_tag_handler_t/ class=md-nav__link> <span class=md-ellipsis> cbor_tag_handler_t </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/cend/ class=md-nav__link> <span class=md-ellipsis> cend </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/clear/ class=md-nav__link> <span class=md-ellipsis> clear </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/contains/ class=md-nav__link> <span class=md-ellipsis> contains </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/count/ class=md-nav__link> <span class=md-ellipsis> count </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/crbegin/ class=md-nav__link> <span class=md-ellipsis> crbegin </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/crend/ class=md-nav__link> <span class=md-ellipsis> crend </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/default_object_comparator_t/ class=md-nav__link> <span class=md-ellipsis> default_object_comparator_t </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/diff/ class=md-nav__link> <span class=md-ellipsis> diff </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/dump/ class=md-nav__link> <span class=md-ellipsis> dump </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/emplace/ class=md-nav__link> <span class=md-ellipsis> emplace </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/emplace_back/ class=md-nav__link> <span class=md-ellipsis> emplace_back </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/empty/ class=md-nav__link> <span class=md-ellipsis> empty </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/end/ class=md-nav__link> <span class=md-ellipsis> end </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/end_pos/ class=md-nav__link> <span class=md-ellipsis> end_pos </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/erase/ class=md-nav__link> <span class=md-ellipsis> erase </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/error_handler_t/ class=md-nav__link> <span class=md-ellipsis> error_handler_t </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/exception/ class=md-nav__link> <span class=md-ellipsis> exception </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/find/ class=md-nav__link> <span class=md-ellipsis> find </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/flatten/ class=md-nav__link> <span class=md-ellipsis> flatten </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/from_bjdata/ class=md-nav__link> <span class=md-ellipsis> from_bjdata </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/from_bson/ class=md-nav__link> <span class=md-ellipsis> from_bson </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/from_cbor/ class=md-nav__link> <span class=md-ellipsis> from_cbor </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/from_msgpack/ class=md-nav__link> <span class=md-ellipsis> from_msgpack </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/from_ubjson/ class=md-nav__link> <span class=md-ellipsis> from_ubjson </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/front/ class=md-nav__link> <span class=md-ellipsis> front </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/get/ class=md-nav__link> <span class=md-ellipsis> get </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/get_allocator/ class=md-nav__link> <span class=md-ellipsis> get_allocator </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/get_binary/ class=md-nav__link> <span class=md-ellipsis> get_binary </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/get_ptr/ class=md-nav__link> <span class=md-ellipsis> get_ptr </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/get_ref/ class=md-nav__link> <span class=md-ellipsis> get_ref </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/get_to/ class=md-nav__link> <span class=md-ellipsis> get_to </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/std_hash/ class=md-nav__link> <span class=md-ellipsis> std::hash&lt;basic_json&gt; </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/input_format_t/ class=md-nav__link> <span class=md-ellipsis> input_format_t </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/insert/ class=md-nav__link> <span class=md-ellipsis> insert </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/invalid_iterator/ class=md-nav__link> <span class=md-ellipsis> invalid_iterator </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/is_array/ class=md-nav__link> <span class=md-ellipsis> is_array </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/is_binary/ class=md-nav__link> <span class=md-ellipsis> is_binary </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/is_boolean/ class=md-nav__link> <span class=md-ellipsis> is_boolean </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/is_discarded/ class=md-nav__link> <span class=md-ellipsis> is_discarded </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/is_null/ class=md-nav__link> <span class=md-ellipsis> is_null </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/is_number/ class=md-nav__link> <span class=md-ellipsis> is_number </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/is_number_float/ class=md-nav__link> <span class=md-ellipsis> is_number_float </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/is_number_integer/ class=md-nav__link> <span class=md-ellipsis> is_number_integer </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/is_number_unsigned/ class=md-nav__link> <span class=md-ellipsis> is_number_unsigned </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/is_object/ class=md-nav__link> <span class=md-ellipsis> is_object </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/is_primitive/ class=md-nav__link> <span class=md-ellipsis> is_primitive </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/is_string/ class=md-nav__link> <span class=md-ellipsis> is_string </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/is_structured/ class=md-nav__link> <span class=md-ellipsis> is_structured </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/items/ class=md-nav__link> <span class=md-ellipsis> items </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/json_base_class_t/ class=md-nav__link> <span class=md-ellipsis> json_base_class_t </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/json_serializer/ class=md-nav__link> <span class=md-ellipsis> json_serializer </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/max_size/ class=md-nav__link> <span class=md-ellipsis> max_size </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/meta/ class=md-nav__link> <span class=md-ellipsis> meta </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/merge_patch/ class=md-nav__link> <span class=md-ellipsis> merge_patch </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/number_float_t/ class=md-nav__link> <span class=md-ellipsis> number_float_t </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/number_integer_t/ class=md-nav__link> <span class=md-ellipsis> number_integer_t </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/number_unsigned_t/ class=md-nav__link> <span class=md-ellipsis> number_unsigned_t </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/object/ class=md-nav__link> <span class=md-ellipsis> object </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/object_comparator_t/ class=md-nav__link> <span class=md-ellipsis> object_comparator_t </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/object_t/ class=md-nav__link> <span class=md-ellipsis> object_t </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/operator_ValueType/ class=md-nav__link> <span class=md-ellipsis> operator ValueType </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/operator_value_t/ class=md-nav__link> <span class=md-ellipsis> operator value_t </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/operator%5B%5D/ class=md-nav__link> <span class=md-ellipsis> operator[] </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/operator%3D/ class=md-nav__link> <span class=md-ellipsis> operator= </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/operator%2B%3D/ class=md-nav__link> <span class=md-ellipsis> operator+= </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/operator_eq/ class=md-nav__link> <span class=md-ellipsis> operator== </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/operator_ne/ class=md-nav__link> <span class=md-ellipsis> operator!= </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/operator_lt/ class=md-nav__link> <span class=md-ellipsis> operator< </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/operator_gt/ class=md-nav__link> <span class=md-ellipsis> operator> </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/operator_le/ class=md-nav__link> <span class=md-ellipsis> operator<= </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/operator_ge/ class=md-nav__link> <span class=md-ellipsis> operator>= </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/operator_spaceship/ class=md-nav__link> <span class=md-ellipsis> operator<=> </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/out_of_range/ class=md-nav__link> <span class=md-ellipsis> out_of_range </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/other_error/ class=md-nav__link> <span class=md-ellipsis> other_error </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/parse/ class=md-nav__link> <span class=md-ellipsis> parse </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/parse_error/ class=md-nav__link> <span class=md-ellipsis> parse_error </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/parse_event_t/ class=md-nav__link> <span class=md-ellipsis> parse_event_t </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/parser_callback_t/ class=md-nav__link> <span class=md-ellipsis> parser_callback_t </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/patch/ class=md-nav__link> <span class=md-ellipsis> patch </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/patch_inplace/ class=md-nav__link> <span class=md-ellipsis> patch_inplace </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/push_back/ class=md-nav__link> <span class=md-ellipsis> push_back </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/rbegin/ class=md-nav__link> <span class=md-ellipsis> rbegin </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/rend/ class=md-nav__link> <span class=md-ellipsis> rend </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/sax_parse/ class=md-nav__link> <span class=md-ellipsis> sax_parse </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/size/ class=md-nav__link> <span class=md-ellipsis> size </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/start_pos/ class=md-nav__link> <span class=md-ellipsis> start_pos </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/string_t/ class=md-nav__link> <span class=md-ellipsis> string_t </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/swap/ class=md-nav__link> <span class=md-ellipsis> swap </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/std_swap/ class=md-nav__link> <span class=md-ellipsis> std::swap&lt;basic_json&gt; </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/to_bjdata/ class=md-nav__link> <span class=md-ellipsis> to_bjdata </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/to_bson/ class=md-nav__link> <span class=md-ellipsis> to_bson </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/to_cbor/ class=md-nav__link> <span class=md-ellipsis> to_cbor </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/to_msgpack/ class=md-nav__link> <span class=md-ellipsis> to_msgpack </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/to_string/ class=md-nav__link> <span class=md-ellipsis> to_string </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/to_ubjson/ class=md-nav__link> <span class=md-ellipsis> to_ubjson </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/type/ class=md-nav__link> <span class=md-ellipsis> type </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/type_error/ class=md-nav__link> <span class=md-ellipsis> type_error </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/type_name/ class=md-nav__link> <span class=md-ellipsis> type_name </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/unflatten/ class=md-nav__link> <span class=md-ellipsis> unflatten </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/update/ class=md-nav__link> <span class=md-ellipsis> update </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/value/ class=md-nav__link> <span class=md-ellipsis> value </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/value_t/ class=md-nav__link> <span class=md-ellipsis> value_t </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_2> <div class="md-nav__link md-nav__container"> <a href=../byte_container_with_subtype/ class="md-nav__link "> <span class=md-ellipsis> byte_container_with_subtype </span> </a> <label class="md-nav__link " for=__nav_4_2 id=__nav_4_2_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_2_label aria-expanded=false> <label class=md-nav__title for=__nav_4_2> <span class="md-nav__icon md-icon"></span> byte_container_with_subtype </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../byte_container_with_subtype/byte_container_with_subtype/ class=md-nav__link> <span class=md-ellipsis> (constructor) </span> </a> </li> <li class=md-nav__item> <a href=../byte_container_with_subtype/clear_subtype/ class=md-nav__link> <span class=md-ellipsis> clear_subtype </span> </a> </li> <li class=md-nav__item> <a href=../byte_container_with_subtype/has_subtype/ class=md-nav__link> <span class=md-ellipsis> has_subtype </span> </a> </li> <li class=md-nav__item> <a href=../byte_container_with_subtype/set_subtype/ class=md-nav__link> <span class=md-ellipsis> set_subtype </span> </a> </li> <li class=md-nav__item> <a href=../byte_container_with_subtype/subtype/ class=md-nav__link> <span class=md-ellipsis> subtype </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_3> <div class="md-nav__link md-nav__container"> <a href=../adl_serializer/ class="md-nav__link "> <span class=md-ellipsis> adl_serializer </span> </a> <label class="md-nav__link " for=__nav_4_3 id=__nav_4_3_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_3_label aria-expanded=false> <label class=md-nav__title for=__nav_4_3> <span class="md-nav__icon md-icon"></span> adl_serializer </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../adl_serializer/from_json/ class=md-nav__link> <span class=md-ellipsis> from_json </span> </a> </li> <li class=md-nav__item> <a href=../adl_serializer/to_json/ class=md-nav__link> <span class=md-ellipsis> to_json </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../json/ class=md-nav__link> <span class=md-ellipsis> json </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_5> <div class="md-nav__link md-nav__container"> <a href=../json_pointer/ class="md-nav__link "> <span class=md-ellipsis> json_pointer </span> </a> <label class="md-nav__link " for=__nav_4_5 id=__nav_4_5_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_5_label aria-expanded=false> <label class=md-nav__title for=__nav_4_5> <span class="md-nav__icon md-icon"></span> json_pointer </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../json_pointer/json_pointer/ class=md-nav__link> <span class=md-ellipsis> (Constructor) </span> </a> </li> <li class=md-nav__item> <a href=../json_pointer/back/ class=md-nav__link> <span class=md-ellipsis> back </span> </a> </li> <li class=md-nav__item> <a href=../json_pointer/empty/ class=md-nav__link> <span class=md-ellipsis> empty </span> </a> </li> <li class=md-nav__item> <a href=../json_pointer/front/ class=md-nav__link> <span class=md-ellipsis> front </span> </a> </li> <li class=md-nav__item> <a href=../json_pointer/operator_string_t/ class=md-nav__link> <span class=md-ellipsis> operator string_t </span> </a> </li> <li class=md-nav__item> <a href=../json_pointer/operator_eq/ class=md-nav__link> <span class=md-ellipsis> operator== </span> </a> </li> <li class=md-nav__item> <a href=../json_pointer/operator_ne/ class=md-nav__link> <span class=md-ellipsis> operator!= </span> </a> </li> <li class=md-nav__item> <a href=../json_pointer/operator_slash/ class=md-nav__link> <span class=md-ellipsis> operator/ </span> </a> </li> <li class=md-nav__item> <a href=../json_pointer/operator_slasheq/ class=md-nav__link> <span class=md-ellipsis> operator/= </span> </a> </li> <li class=md-nav__item> <a href=../json_pointer/parent_pointer/ class=md-nav__link> <span class=md-ellipsis> parent_pointer </span> </a> </li> <li class=md-nav__item> <a href=../json_pointer/pop_back/ class=md-nav__link> <span class=md-ellipsis> pop_back </span> </a> </li> <li class=md-nav__item> <a href=../json_pointer/pop_front/ class=md-nav__link> <span class=md-ellipsis> pop_front </span> </a> </li> <li class=md-nav__item> <a href=../json_pointer/push_back/ class=md-nav__link> <span class=md-ellipsis> push_back </span> </a> </li> <li class=md-nav__item> <a href=../json_pointer/push_front/ class=md-nav__link> <span class=md-ellipsis> push_front </span> </a> </li> <li class=md-nav__item> <a href=../json_pointer/string_t/ class=md-nav__link> <span class=md-ellipsis> string_t </span> </a> </li> <li class=md-nav__item> <a href=../json_pointer/to_string/ class=md-nav__link> <span class=md-ellipsis> to_string </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_6> <div class="md-nav__link md-nav__container"> <a href=../json_sax/ class="md-nav__link "> <span class=md-ellipsis> json_sax </span> </a> <label class="md-nav__link " for=__nav_4_6 id=__nav_4_6_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_6_label aria-expanded=false> <label class=md-nav__title for=__nav_4_6> <span class="md-nav__icon md-icon"></span> json_sax </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../json_sax/binary/ class=md-nav__link> <span class=md-ellipsis> binary </span> </a> </li> <li class=md-nav__item> <a href=../json_sax/boolean/ class=md-nav__link> <span class=md-ellipsis> boolean </span> </a> </li> <li class=md-nav__item> <a href=../json_sax/end_array/ class=md-nav__link> <span class=md-ellipsis> end_array </span> </a> </li> <li class=md-nav__item> <a href=../json_sax/end_object/ class=md-nav__link> <span class=md-ellipsis> end_object </span> </a> </li> <li class=md-nav__item> <a href=../json_sax/key/ class=md-nav__link> <span class=md-ellipsis> key </span> </a> </li> <li class=md-nav__item> <a href=../json_sax/null/ class=md-nav__link> <span class=md-ellipsis> null </span> </a> </li> <li class=md-nav__item> <a href=../json_sax/number_float/ class=md-nav__link> <span class=md-ellipsis> number_float </span> </a> </li> <li class=md-nav__item> <a href=../json_sax/number_integer/ class=md-nav__link> <span class=md-ellipsis> number_integer </span> </a> </li> <li class=md-nav__item> <a href=../json_sax/number_unsigned/ class=md-nav__link> <span class=md-ellipsis> number_unsigned </span> </a> </li> <li class=md-nav__item> <a href=../json_sax/parse_error/ class=md-nav__link> <span class=md-ellipsis> parse_error </span> </a> </li> <li class=md-nav__item> <a href=../json_sax/start_array/ class=md-nav__link> <span class=md-ellipsis> start_array </span> </a> </li> <li class=md-nav__item> <a href=../json_sax/start_object/ class=md-nav__link> <span class=md-ellipsis> start_object </span> </a> </li> <li class=md-nav__item> <a href=../json_sax/string/ class=md-nav__link> <span class=md-ellipsis> string </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../operator_ltlt/ class=md-nav__link> <span class=md-ellipsis> operator<<(basic_json), operator<<(json_pointer) </span> </a> </li> <li class=md-nav__item> <a href=../operator_gtgt/ class=md-nav__link> <span class=md-ellipsis> operator>>(basic_json) </span> </a> </li> <li class=md-nav__item> <a href=../operator_literal_json/ class=md-nav__link> <span class=md-ellipsis> operator""_json </span> </a> </li> <li class=md-nav__item> <a href=../operator_literal_json_pointer/ class=md-nav__link> <span class=md-ellipsis> operator""_json_pointer </span> </a> </li> <li class=md-nav__item> <a href=../ordered_json/ class=md-nav__link> <span class=md-ellipsis> ordered_json </span> </a> </li> <li class=md-nav__item> <a href=../ordered_map/ class=md-nav__link> <span class=md-ellipsis> ordered_map </span> </a> </li> <li class="md-nav__item md-nav__item--active md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_13 checked> <div class="md-nav__link md-nav__container"> <a href=./ class="md-nav__link md-nav__link--active"> <span class=md-ellipsis> macros </span> </a> <label class="md-nav__link md-nav__link--active" for=__nav_4_13 id=__nav_4_13_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_13_label aria-expanded=true> <label class=md-nav__title for=__nav_4_13> <span class="md-nav__icon md-icon"></span> macros </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=json_assert/ class=md-nav__link> <span class=md-ellipsis> JSON_ASSERT </span> </a> </li> <li class=md-nav__item> <a href=json_brace_init_copy_semantics/ class=md-nav__link> <span class=md-ellipsis> JSON_BRACE_INIT_COPY_SEMANTICS </span> </a> </li> <li class=md-nav__item> <a href=json_throw_user/ class=md-nav__link> <span class=md-ellipsis> JSON_CATCH_USER, JSON_THROW_USER, JSON_TRY_USER </span> </a> </li> <li class=md-nav__item> <a href=json_diagnostics/ class=md-nav__link> <span class=md-ellipsis> JSON_DIAGNOSTICS </span> </a> </li> <li class=md-nav__item> <a href=json_diagnostic_positions/ class=md-nav__link> <span class=md-ellipsis> JSON_DIAGNOSTIC_POSITIONS </span> </a> </li> <li class=md-nav__item> <a href=json_disable_enum_serialization/ class=md-nav__link> <span class=md-ellipsis> JSON_DISABLE_ENUM_SERIALIZATION </span> </a> </li> <li class=md-nav__item> <a href=json_has_cpp_11/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_CPP_11, JSON_HAS_CPP_14, JSON_HAS_CPP_17, JSON_HAS_CPP_20 </span> </a> </li> <li class=md-nav__item> <a href=json_has_filesystem/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_EXPERIMENTAL_FILESYSTEM, JSON_HAS_FILESYSTEM </span> </a> </li> <li class=md-nav__item> <a href=json_has_ranges/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_RANGES </span> </a> </li> <li class=md-nav__item> <a href=json_has_static_rtti/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_STATIC_RTTI </span> </a> </li> <li class=md-nav__item> <a href=json_has_three_way_comparison/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_THREE_WAY_COMPARISON </span> </a> </li> <li class=md-nav__item> <a href=json_noexception/ class=md-nav__link> <span class=md-ellipsis> JSON_NOEXCEPTION </span> </a> </li> <li class=md-nav__item> <a href=json_no_io/ class=md-nav__link> <span class=md-ellipsis> JSON_NO_IO </span> </a> </li> <li class=md-nav__item> <a href=json_skip_library_version_check/ class=md-nav__link> <span class=md-ellipsis> JSON_SKIP_LIBRARY_VERSION_CHECK </span> </a> </li> <li class=md-nav__item> <a href=json_skip_unsupported_compiler_check/ class=md-nav__link> <span class=md-ellipsis> JSON_SKIP_UNSUPPORTED_COMPILER_CHECK </span> </a> </li> <li class=md-nav__item> <a href=json_use_global_udls/ class=md-nav__link> <span class=md-ellipsis> JSON_USE_GLOBAL_UDLS </span> </a> </li> <li class=md-nav__item> <a href=json_use_implicit_conversions/ class=md-nav__link> <span class=md-ellipsis> JSON_USE_IMPLICIT_CONVERSIONS </span> </a> </li> <li class=md-nav__item> <a href=json_use_legacy_discarded_value_comparison/ class=md-nav__link> <span class=md-ellipsis> JSON_USE_LEGACY_DISCARDED_VALUE_COMPARISON </span> </a> </li> <li class=md-nav__item> <a href=nlohmann_define_derived_type/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_ONLY_SERIALIZE, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE </span> </a> </li> <li class=md-nav__item> <a href=nlohmann_define_type_intrusive/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_TYPE_INTRUSIVE, NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_TYPE_INTRUSIVE_ONLY_SERIALIZE </span> </a> </li> <li class=md-nav__item> <a href=nlohmann_define_type_non_intrusive/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE </span> </a> </li> <li class=md-nav__item> <a href=nlohmann_define_type_with_names/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_TYPE_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES </span> </a> </li> <li class=md-nav__item> <a href=nlohmann_json_namespace/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_NAMESPACE </span> </a> </li> <li class=md-nav__item> <a href=nlohmann_json_namespace_begin/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_NAMESPACE_BEGIN, NLOHMANN_JSON_NAMESPACE_END </span> </a> </li> <li class=md-nav__item> <a href=nlohmann_json_namespace_no_version/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_NAMESPACE_NO_VERSION </span> </a> </li> <li class=md-nav__item> <a href=nlohmann_json_serialize_enum/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_SERIALIZE_ENUM </span> </a> </li> <li class=md-nav__item> <a href=nlohmann_json_serialize_enum_strict/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_SERIALIZE_ENUM_STRICT </span> </a> </li> <li class=md-nav__item> <a href=nlohmann_json_version_major/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_VERSION_MAJOR, NLOHMANN_JSON_VERSION_MINOR, NLOHMANN_JSON_VERSION_PATCH </span> </a> </li> </ul> </nav> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_5> <div class="md-nav__link md-nav__container"> <a href=../../community/ class="md-nav__link "> <span class=md-ellipsis> Community </span> </a> <label class="md-nav__link " for=__nav_5 id=__nav_5_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_5_label aria-expanded=false> <label class=md-nav__title for=__nav_5> <span class="md-nav__icon md-icon"></span> Community </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../community/code_of_conduct/ class=md-nav__link> <span class=md-ellipsis> Code of Conduct </span> </a> </li> <li class=md-nav__item> <a href=../../community/contribution_guidelines/ class=md-nav__link> <span class=md-ellipsis> Contribution Guidelines </span> </a> </li> <li class=md-nav__item> <a href=../../community/quality_assurance/ class=md-nav__link> <span class=md-ellipsis> Quality assurance </span> </a> </li> <li class=md-nav__item> <a href=../../community/governance/ class=md-nav__link> <span class=md-ellipsis> Governance </span> </a> </li> <li class=md-nav__item> <a href=../../community/security_policy/ class=md-nav__link> <span class=md-ellipsis> Security Policy </span> </a> </li> </ul> </nav> </li> </ul> </nav> </div> </div> </div> <div class="md-sidebar md-sidebar--secondary" data-md-component=sidebar data-md-type=toc> <div class=md-sidebar__scrollwrap> <div class=md-sidebar__inner> <nav class="md-nav md-nav--secondary" aria-label="Table of contents"> <label class=md-nav__title for=__toc> <span class="md-nav__icon md-icon"></span> Table of contents </label> <ul class=md-nav__list data-md-component=toc data-md-scrollfix> <li class=md-nav__item> <a href=#runtime-assertions class=md-nav__link> <span class=md-ellipsis> Runtime assertions </span> </a> </li> <li class=md-nav__item> <a href=#exceptions class=md-nav__link> <span class=md-ellipsis> Exceptions </span> </a> </li> <li class=md-nav__item> <a href=#language-support class=md-nav__link> <span class=md-ellipsis> Language support </span> </a> </li> <li class=md-nav__item> <a href=#library-version class=md-nav__link> <span class=md-ellipsis> Library version </span> </a> </li> <li class=md-nav__item> <a href=#library-namespace class=md-nav__link> <span class=md-ellipsis> Library namespace </span> </a> </li> <li class=md-nav__item> <a href=#type-conversions class=md-nav__link> <span class=md-ellipsis> Type conversions </span> </a> </li> <li class=md-nav__item> <a href=#comparison-behavior class=md-nav__link> <span class=md-ellipsis> Comparison behavior </span> </a> </li> <li class=md-nav__item> <a href=#serializationdeserialization-macros class=md-nav__link> <span class=md-ellipsis> Serialization/deserialization macros </span> </a> <nav class=md-nav aria-label="Serialization/deserialization macros"> <ul class=md-nav__list> <li class=md-nav__item> <a href=#enums class=md-nav__link> <span class=md-ellipsis> Enums </span> </a> </li> <li class=md-nav__item> <a href=#classes-and-structs class=md-nav__link> <span class=md-ellipsis> Classes and structs </span> </a> </li> </ul> </nav> </li> </ul> </nav> </div> </div> </div> <div class=md-content data-md-component=content> <article class="md-content__inner md-typeset"> <a href="https://github.com/nlohmann/json/edit/develop/docs/mkdocs/docs/api/macros/index.md" title="Edit this page" class="md-content__button md-icon" rel="edit"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M10 20H6V4h7v5h5v3.1l2-2V8l-6-6H6c-1.1 0-2 .9-2 2v16c0 1.1.9 2 2 2h4zm10.2-7c.1 0 .3.1.4.2l1.3 1.3c.2.2.2.6 0 .8l-1 1-2.1-2.1 1-1c.1-.1.2-.2.4-.2m0 3.9L14.1 23H12v-2.1l6.1-6.1z"/></svg> </a> <a href="https://github.com/nlohmann/json/raw/develop/docs/mkdocs/docs/api/macros/index.md" title="View source of this page" class="md-content__button md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M17 18c.56 0 1 .44 1 1s-.44 1-1 1-1-.44-1-1 .44-1 1-1m0-3c-2.73 0-5.06 1.66-6 4 .94 2.34 3.27 4 6 4s5.06-1.66 6-4c-.94-2.34-3.27-4-6-4m0 6.5a2.5 2.5 0 0 1-2.5-2.5 2.5 2.5 0 0 1 2.5-2.5 2.5 2.5 0 0 1 2.5 2.5 2.5 2.5 0 0 1-2.5 2.5M9.27 20H6V4h7v5h5v4.07c.7.08 1.36.25 2 .49V8l-6-6H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h4.5a8.2 8.2 0 0 1-1.23-2"/></svg> </a> <h1 id=macros>Macros<a class=headerlink href=#macros title="Permanent link">&para;</a></h1> <p>Some aspects of the library can be configured by defining preprocessor macros <strong>before</strong> including the <code>json.hpp</code> header. See also the <a href=../../features/macros/ >macro overview page</a>.</p> <h2 id=runtime-assertions>Runtime assertions<a class=headerlink href=#runtime-assertions title="Permanent link">&para;</a></h2> <ul> <li><a href=json_assert/ ><strong>JSON_ASSERT(x)</strong></a> - control behavior of runtime assertions</li> </ul> <h2 id=exceptions>Exceptions<a class=headerlink href=#exceptions title="Permanent link">&para;</a></h2> <ul> <li><a href=json_throw_user/ ><strong>JSON_CATCH_USER(exception)</strong><br><strong>JSON_THROW_USER(exception)</strong><br><strong>JSON_TRY_USER</strong></a> - control exceptions</li> <li><a href=json_diagnostics/ ><strong>JSON_DIAGNOSTICS</strong></a> - control extended diagnostics</li> <li><a href=json_diagnostic_positions/ ><strong>JSON_DIAGNOSTIC_POSITIONS</strong></a> - access positions of elements</li> <li><a href=json_noexception/ ><strong>JSON_NOEXCEPTION</strong></a> - switch off exceptions</li> </ul> <h2 id=language-support>Language support<a class=headerlink href=#language-support title="Permanent link">&para;</a></h2> <ul> <li><a href=json_has_cpp_11/ ><strong>JSON_HAS_CPP_11</strong><br><strong>JSON_HAS_CPP_14</strong><br><strong>JSON_HAS_CPP_17</strong><br><strong>JSON_HAS_CPP_20</strong></a> - set supported C++ standard</li> <li><a href=json_has_filesystem/ ><strong>JSON_HAS_FILESYSTEM</strong><br><strong>JSON_HAS_EXPERIMENTAL_FILESYSTEM</strong></a> - control <code>std::filesystem</code> support</li> <li><a href=json_has_ranges/ ><strong>JSON_HAS_RANGES</strong></a> - control <code>std::ranges</code> support</li> <li><a href=json_has_three_way_comparison/ ><strong>JSON_HAS_THREE_WAY_COMPARISON</strong></a> - control 3-way comparison support</li> <li><a href=json_no_io/ ><strong>JSON_NO_IO</strong></a> - switch off functions relying on certain C++ I/O headers</li> <li><a href=json_skip_unsupported_compiler_check/ ><strong>JSON_SKIP_UNSUPPORTED_COMPILER_CHECK</strong></a> - do not warn about unsupported compilers</li> <li><a href=json_use_global_udls/ ><strong>JSON_USE_GLOBAL_UDLS</strong></a> - place user-defined string literals (UDLs) into the global namespace</li> </ul> <h2 id=library-version>Library version<a class=headerlink href=#library-version title="Permanent link">&para;</a></h2> <ul> <li><a href=json_skip_library_version_check/ ><strong>JSON_SKIP_LIBRARY_VERSION_CHECK</strong></a> - skip library version check</li> <li><a href=nlohmann_json_version_major/ ><strong>NLOHMANN_JSON_VERSION_MAJOR</strong><br><strong>NLOHMANN_JSON_VERSION_MINOR</strong><br><strong>NLOHMANN_JSON_VERSION_PATCH</strong></a> - library version information</li> </ul> <h2 id=library-namespace>Library namespace<a class=headerlink href=#library-namespace title="Permanent link">&para;</a></h2> <ul> <li><a href=nlohmann_json_namespace/ ><strong>NLOHMANN_JSON_NAMESPACE</strong></a> - full name of the <code>nlohmann</code> namespace</li> <li><a href=nlohmann_json_namespace_begin/ ><strong>NLOHMANN_JSON_NAMESPACE_BEGIN</strong><br><strong>NLOHMANN_JSON_NAMESPACE_END</strong></a> - open and close the library namespace</li> <li><a href=nlohmann_json_namespace_no_version/ ><strong>NLOHMANN_JSON_NAMESPACE_NO_VERSION</strong></a> - disable the version component of the inline namespace</li> </ul> <h2 id=type-conversions>Type conversions<a class=headerlink href=#type-conversions title="Permanent link">&para;</a></h2> <ul> <li><a href=json_brace_init_copy_semantics/ ><strong>JSON_BRACE_INIT_COPY_SEMANTICS</strong></a> - opt in to copy/move semantics for single-element brace initialization</li> <li><a href=json_disable_enum_serialization/ ><strong>JSON_DISABLE_ENUM_SERIALIZATION</strong></a> - switch off default serialization/deserialization functions for enums</li> <li><a href=json_use_implicit_conversions/ ><strong>JSON_USE_IMPLICIT_CONVERSIONS</strong></a> - control implicit conversions</li> </ul> <h2 id=comparison-behavior>Comparison behavior<a class=headerlink href=#comparison-behavior title="Permanent link">&para;</a></h2> <ul> <li><a href=json_use_legacy_discarded_value_comparison/ ><strong>JSON_USE_LEGACY_DISCARDED_VALUE_COMPARISON</strong></a> - control comparison of discarded values</li> </ul> <h2 id=serializationdeserialization-macros>Serialization/deserialization macros<a class=headerlink href=#serializationdeserialization-macros title="Permanent link">&para;</a></h2> <h3 id=enums>Enums<a class=headerlink href=#enums title="Permanent link">&para;</a></h3> <ul> <li><a href=nlohmann_json_serialize_enum/ ><strong>NLOHMANN_JSON_SERIALIZE_ENUM</strong></a> - serialize/deserialize an enum</li> <li><a href=nlohmann_json_serialize_enum_strict/ ><strong>NLOHMANN_JSON_SERIALIZE_ENUM_STRICT</strong></a> - serialize/deserialize an enum with exceptions</li> </ul> <h3 id=classes-and-structs>Classes and structs<a class=headerlink href=#classes-and-structs title="Permanent link">&para;</a></h3> <ul> <li><a href=nlohmann_define_type_intrusive/ ><strong>NLOHMANN_DEFINE_TYPE_INTRUSIVE</strong></a> - serialize/deserialize a non-derived class with private members</li> <li><a href=nlohmann_define_type_intrusive/ ><strong>NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT</strong></a> - serialize/deserialize a non-derived class with private members; uses default values</li> <li><a href=nlohmann_define_type_intrusive/ ><strong>NLOHMANN_DEFINE_TYPE_INTRUSIVE_ONLY_SERIALIZE</strong></a> - serialize a non-derived class with private members</li> <li><a href=nlohmann_define_type_non_intrusive/ ><strong>NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE</strong></a> - serialize/deserialize a non-derived class</li> <li><a href=nlohmann_define_type_non_intrusive/ ><strong>NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT</strong></a> - serialize/deserialize a non-derived class; uses default values</li> <li> <p><a href=nlohmann_define_type_non_intrusive/ ><strong>NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE</strong></a> - serialize a non-derived class</p> </li> <li> <p><a href=nlohmann_define_derived_type/ ><strong>NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE</strong></a> - serialize/deserialize a derived class with private members</p> </li> <li><a href=nlohmann_define_derived_type/ ><strong>NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_DEFAULT</strong></a> - serialize/deserialize a derived class with private members; uses default values</li> <li><a href=nlohmann_define_derived_type/ ><strong>NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_ONLY_SERIALIZE</strong></a> - serialize a derived class with private members</li> <li><a href=nlohmann_define_derived_type/ ><strong>NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE</strong></a> - serialize/deserialize a derived class</li> <li><a href=nlohmann_define_derived_type/ ><strong>NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_DEFAULT</strong></a> - serialize/deserialize a derived class; uses default values</li> <li><a href=nlohmann_define_derived_type/ ><strong>NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE</strong></a> - serialize a derived class</li> <li><a href=nlohmann_define_type_with_names/ ><strong>NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_NAMES</strong></a> - serialize/deserialize a non-derived class with private members; uses custom names</li> <li><a href=nlohmann_define_type_with_names/ ><strong>NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT_WITH_NAMES</strong></a> - serialize/deserialize a non-derived class with private members; uses default values; uses custom names</li> <li><a href=nlohmann_define_type_with_names/ ><strong>NLOHMANN_DEFINE_TYPE_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES</strong></a> - serialize a non-derived class with private members; uses custom names</li> <li><a href=nlohmann_define_type_with_names/ ><strong>NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_NAMES</strong></a> - serialize/deserialize a non-derived class; uses custom names</li> <li><a href=nlohmann_define_type_with_names/ ><strong>NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT_WITH_NAMES</strong></a> - serialize/deserialize a non-derived class; uses default values; uses custom names</li> <li> <p><a href=nlohmann_define_type_with_names/ ><strong>NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES</strong></a> - serialize a non-derived class; uses custom names</p> </li> <li> <p><a href=nlohmann_define_type_with_names/ ><strong>NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_NAMES</strong></a> - serialize/deserialize a derived class with private members; uses custom names</p> </li> <li><a href=nlohmann_define_type_with_names/ ><strong>NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_DEFAULT_WITH_NAMES</strong></a> - serialize/deserialize a derived class with private members; uses default values; uses custom names</li> <li><a href=nlohmann_define_type_with_names/ ><strong>NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES</strong></a> - serialize a derived class with private members; uses custom names</li> <li><a href=nlohmann_define_type_with_names/ ><strong>NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_NAMES</strong></a> - serialize/deserialize a derived class; uses custom names</li> <li><a href=nlohmann_define_type_with_names/ ><strong>NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_DEFAULT_WITH_NAMES</strong></a> - serialize/deserialize a derived class; uses default values; uses custom names</li> <li><a href=nlohmann_define_type_with_names/ ><strong>NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES</strong></a> - serialize a derived class; uses custom names</li> </ul> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 29, 2026 20:15:18 UTC">June 29, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
diff --git a/api/macros/json_assert/index.html b/api/macros/json_assert/index.html
index e550dad..e6dd531 100644
--- a/api/macros/json_assert/index.html
+++ b/api/macros/json_assert/index.html
@@ -24,4 +24,4 @@
 <span class=w>    </span><span class=k>auto</span><span class=w> </span><span class=n>v</span><span class=w> </span><span class=o>=</span><span class=w> </span><span class=n>j</span><span class=p>[</span><span class=s>&quot;missing&quot;</span><span class=p>];</span>
 <span class=p>}</span>
 </code></pre></div> <p>Output:</p> <div class=highlight><pre><span></span><code>assertion error in operator[]
-</code></pre></div> </details> <h2 id=see-also>See also<a class=headerlink href=#see-also title="Permanent link">&para;</a></h2> <ul> <li><a href=../../../features/assertions/ >Runtime Assertions</a> - overview documentation</li> </ul> <h2 id=version-history>Version history<a class=headerlink href=#version-history title="Permanent link">&para;</a></h2> <ul> <li>Added in version 3.9.0.</li> </ul> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 23, 2026 11:16:18 UTC">June 23, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
+</code></pre></div> </details> <h2 id=see-also>See also<a class=headerlink href=#see-also title="Permanent link">&para;</a></h2> <ul> <li><a href=../../../features/assertions/ >Runtime Assertions</a> - overview documentation</li> </ul> <h2 id=version-history>Version history<a class=headerlink href=#version-history title="Permanent link">&para;</a></h2> <ul> <li>Added in version 3.9.0.</li> </ul> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 29, 2026 20:15:18 UTC">June 29, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
diff --git a/api/macros/json_brace_init_copy_semantics/index.html b/api/macros/json_brace_init_copy_semantics/index.html
index 64f1da5..0449a0e 100644
--- a/api/macros/json_brace_init_copy_semantics/index.html
+++ b/api/macros/json_brace_init_copy_semantics/index.html
@@ -26,4 +26,4 @@
 <span class=w>    </span><span class=n>json</span><span class=w> </span><span class=n>j</span><span class=p>{</span><span class=n>obj</span><span class=p>};</span>
 <span class=w>    </span><span class=c1>// j is {&quot;key&quot;:&quot;value&quot;}  -- copy of obj</span>
 <span class=p>}</span>
-</code></pre></div> </details> <h2 id=see-also>See also<a class=headerlink href=#see-also title="Permanent link">&para;</a></h2> <ul> <li><a href=../../../home/faq/#brace-initialization-yields-arrays><abbr title="Frequently Asked Questions">FAQ</abbr>: Brace initialization yields arrays</a></li> <li><a href=../../basic_json/basic_json/ ><strong>basic_json(initializer_list_t)</strong></a> - the affected constructor</li> </ul> <h2 id=version-history>Version history<a class=headerlink href=#version-history title="Permanent link">&para;</a></h2> <ul> <li>Added in version 3.12.0.</li> </ul> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 23, 2026 11:16:18 UTC">June 23, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
+</code></pre></div> </details> <h2 id=see-also>See also<a class=headerlink href=#see-also title="Permanent link">&para;</a></h2> <ul> <li><a href=../../../home/faq/#brace-initialization-yields-arrays><abbr title="Frequently Asked Questions">FAQ</abbr>: Brace initialization yields arrays</a></li> <li><a href=../../basic_json/basic_json/ ><strong>basic_json(initializer_list_t)</strong></a> - the affected constructor</li> </ul> <h2 id=version-history>Version history<a class=headerlink href=#version-history title="Permanent link">&para;</a></h2> <ul> <li>Added in version 3.12.x.</li> </ul> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 29, 2026 20:15:18 UTC">June 29, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
diff --git a/api/macros/json_diagnostic_positions/index.html b/api/macros/json_diagnostic_positions/index.html
index e4422d2..d676a0b 100644
--- a/api/macros/json_diagnostic_positions/index.html
+++ b/api/macros/json_diagnostic_positions/index.html
@@ -165,4 +165,4 @@
 <span class=p>}</span>
 </code></pre></div> <p>Output:</p> <div class=highlight><pre><span></span><code>[json.exception.type_error.302] (/address/housenumber) (bytes 92-95) type must be number, but is string
 </code></pre></div> <div class=codehilite><pre><span></span><code>The output shows the exception with diagnostic path info and start/end positions.
-</code></pre></div> </details> <h2 id=see-also>See also<a class=headerlink href=#see-also title="Permanent link">&para;</a></h2> <ul> <li><a href=../../../integration/cmake/#json_diagnostic_positions><span class=twemoji><svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M11.769.066.067 23.206l12.76-10.843zm11.438 23.868L7.471 17.587 0 23.934zm.793-.198L12.298.463l1.719 19.24zM12.893 12.959l-5.025 4.298 5.62 2.248z"/></svg></span> JSON_Diagnostic_Positions</a> - CMake option to control the macro</li> <li><a href=../json_diagnostics/ >JSON_DIAGNOSTICS</a> - macro to control extended diagnostics</li> </ul> <h2 id=version-history>Version history<a class=headerlink href=#version-history title="Permanent link">&para;</a></h2> <ul> <li>Added in version 3.12.0.</li> </ul> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 23, 2026 11:16:18 UTC">June 23, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
+</code></pre></div> </details> <h2 id=see-also>See also<a class=headerlink href=#see-also title="Permanent link">&para;</a></h2> <ul> <li><a href=../../../integration/cmake/#json_diagnostic_positions><span class=twemoji><svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M11.769.066.067 23.206l12.76-10.843zm11.438 23.868L7.471 17.587 0 23.934zm.793-.198L12.298.463l1.719 19.24zM12.893 12.959l-5.025 4.298 5.62 2.248z"/></svg></span> JSON_Diagnostic_Positions</a> - CMake option to control the macro</li> <li><a href=../json_diagnostics/ >JSON_DIAGNOSTICS</a> - macro to control extended diagnostics</li> </ul> <h2 id=version-history>Version history<a class=headerlink href=#version-history title="Permanent link">&para;</a></h2> <ul> <li>Added in version 3.12.0.</li> </ul> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 29, 2026 20:15:18 UTC">June 29, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
diff --git a/api/macros/json_diagnostics/index.html b/api/macros/json_diagnostics/index.html
index 0d5b7dc..7a425da 100644
--- a/api/macros/json_diagnostics/index.html
+++ b/api/macros/json_diagnostics/index.html
@@ -75,4 +75,4 @@
 <span class=w>    </span><span class=p>}</span>
 <span class=p>}</span>
 </code></pre></div> <p>Output:</p> <p><div class=highlight><pre><span></span><code>[json.exception.type_error.302] (bytes 92-95) type must be number, but is string
-</code></pre></div> The output shows the exception with start/end positions only.</p> </details> <h2 id=see-also>See also<a class=headerlink href=#see-also title="Permanent link">&para;</a></h2> <ul> <li><a href=../../../integration/cmake/#json_diagnostics><span class=twemoji><svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M11.769.066.067 23.206l12.76-10.843zm11.438 23.868L7.471 17.587 0 23.934zm.793-.198L12.298.463l1.719 19.24zM12.893 12.959l-5.025 4.298 5.62 2.248z"/></svg></span> JSON_Diagnostics</a> - CMake option to control the macro</li> <li><a href=../json_diagnostic_positions/ >JSON_DIAGNOSTIC_POSITIONS</a> - macro to access positions of elements</li> </ul> <h2 id=version-history>Version history<a class=headerlink href=#version-history title="Permanent link">&para;</a></h2> <ul> <li>Added in version 3.10.0.</li> <li>As of version 3.11.0, the definition is allowed to vary between translation units.</li> </ul> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 23, 2026 11:16:18 UTC">June 23, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
+</code></pre></div> The output shows the exception with start/end positions only.</p> </details> <h2 id=see-also>See also<a class=headerlink href=#see-also title="Permanent link">&para;</a></h2> <ul> <li><a href=../../../integration/cmake/#json_diagnostics><span class=twemoji><svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M11.769.066.067 23.206l12.76-10.843zm11.438 23.868L7.471 17.587 0 23.934zm.793-.198L12.298.463l1.719 19.24zM12.893 12.959l-5.025 4.298 5.62 2.248z"/></svg></span> JSON_Diagnostics</a> - CMake option to control the macro</li> <li><a href=../json_diagnostic_positions/ >JSON_DIAGNOSTIC_POSITIONS</a> - macro to access positions of elements</li> </ul> <h2 id=version-history>Version history<a class=headerlink href=#version-history title="Permanent link">&para;</a></h2> <ul> <li>Added in version 3.10.0.</li> <li>As of version 3.11.0, the definition is allowed to vary between translation units.</li> </ul> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 29, 2026 20:15:18 UTC">June 29, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
diff --git a/api/macros/json_disable_enum_serialization/index.html b/api/macros/json_disable_enum_serialization/index.html
index ddf2f27..0aeb3dd 100644
--- a/api/macros/json_disable_enum_serialization/index.html
+++ b/api/macros/json_disable_enum_serialization/index.html
@@ -70,14 +70,13 @@
 
 <span class=kt>void</span><span class=w> </span><span class=nf>to_json</span><span class=p>(</span><span class=n>json</span><span class=o>&amp;</span><span class=w> </span><span class=n>j</span><span class=p>,</span><span class=w> </span><span class=k>const</span><span class=w> </span><span class=n>Choice</span><span class=o>&amp;</span><span class=w> </span><span class=n>ch</span><span class=p>)</span>
 <span class=p>{</span>
-<span class=w>    </span><span class=k>auto</span><span class=w> </span><span class=n>value</span><span class=w> </span><span class=o>=</span><span class=w> </span><span class=n>j</span><span class=p>.</span><span class=n>get</span><span class=o>&lt;</span><span class=n>std</span><span class=o>::</span><span class=n>string</span><span class=o>&gt;</span><span class=p>();</span>
-<span class=w>    </span><span class=k>if</span><span class=w> </span><span class=p>(</span><span class=n>value</span><span class=w> </span><span class=o>==</span><span class=w> </span><span class=s>&quot;first&quot;</span><span class=p>)</span>
+<span class=w>    </span><span class=k>if</span><span class=w> </span><span class=p>(</span><span class=n>ch</span><span class=w> </span><span class=o>==</span><span class=w> </span><span class=n>Choice</span><span class=o>::</span><span class=n>first</span><span class=p>)</span>
 <span class=w>    </span><span class=p>{</span>
-<span class=w>        </span><span class=n>ch</span><span class=w> </span><span class=o>=</span><span class=w> </span><span class=n>Choice</span><span class=o>::</span><span class=n>first</span><span class=p>;</span>
+<span class=w>        </span><span class=n>j</span><span class=w> </span><span class=o>=</span><span class=w> </span><span class=s>&quot;first&quot;</span><span class=p>;</span>
 <span class=w>    </span><span class=p>}</span>
-<span class=w>    </span><span class=k>else</span><span class=w> </span><span class=k>if</span><span class=w> </span><span class=p>(</span><span class=n>value</span><span class=w> </span><span class=o>==</span><span class=w> </span><span class=s>&quot;second&quot;</span><span class=p>)</span>
+<span class=w>    </span><span class=k>else</span><span class=w> </span><span class=k>if</span><span class=w> </span><span class=p>(</span><span class=n>ch</span><span class=w> </span><span class=o>==</span><span class=w> </span><span class=n>Choice</span><span class=o>::</span><span class=n>second</span><span class=p>)</span>
 <span class=w>    </span><span class=p>{</span>
-<span class=w>        </span><span class=n>ch</span><span class=w> </span><span class=o>=</span><span class=w> </span><span class=n>Choice</span><span class=o>::</span><span class=n>second</span><span class=p>;</span>
+<span class=w>        </span><span class=n>j</span><span class=w> </span><span class=o>=</span><span class=w> </span><span class=s>&quot;second&quot;</span><span class=p>;</span>
 <span class=w>    </span><span class=p>}</span>
 <span class=p>}</span>
 
@@ -89,4 +88,4 @@
 <span class=w>    </span><span class=c1>// uses user-defined from_json function</span>
 <span class=w>    </span><span class=n>Choice</span><span class=w> </span><span class=n>ch</span><span class=w> </span><span class=o>=</span><span class=w> </span><span class=n>j</span><span class=p>.</span><span class=n>get</span><span class=o>&lt;</span><span class=n>Choice</span><span class=o>&gt;</span><span class=p>();</span>
 <span class=p>}</span>
-</code></pre></div> </details> <h2 id=see-also>See also<a class=headerlink href=#see-also title="Permanent link">&para;</a></h2> <ul> <li><a href=../../../integration/cmake/#json_disableenumserialization><span class=twemoji><svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M11.769.066.067 23.206l12.76-10.843zm11.438 23.868L7.471 17.587 0 23.934zm.793-.198L12.298.463l1.719 19.24zM12.893 12.959l-5.025 4.298 5.62 2.248z"/></svg></span> JSON_DisableEnumSerialization</a> - CMake option to control the macro</li> <li><a href=../nlohmann_json_serialize_enum/ ><code>NLOHMANN_JSON_SERIALIZE_ENUM</code></a> - serialize/deserialize an enum</li> </ul> <h2 id=version-history>Version history<a class=headerlink href=#version-history title="Permanent link">&para;</a></h2> <ul> <li>Added in version 3.11.0.</li> </ul> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 23, 2026 11:16:18 UTC">June 23, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
+</code></pre></div> </details> <h2 id=see-also>See also<a class=headerlink href=#see-also title="Permanent link">&para;</a></h2> <ul> <li><a href=../../../integration/cmake/#json_disableenumserialization><span class=twemoji><svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M11.769.066.067 23.206l12.76-10.843zm11.438 23.868L7.471 17.587 0 23.934zm.793-.198L12.298.463l1.719 19.24zM12.893 12.959l-5.025 4.298 5.62 2.248z"/></svg></span> JSON_DisableEnumSerialization</a> - CMake option to control the macro</li> <li><a href=../nlohmann_json_serialize_enum/ ><code>NLOHMANN_JSON_SERIALIZE_ENUM</code></a> - serialize/deserialize an enum</li> </ul> <h2 id=version-history>Version history<a class=headerlink href=#version-history title="Permanent link">&para;</a></h2> <ul> <li>Added in version 3.11.0.</li> </ul> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 29, 2026 20:15:18 UTC">June 29, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
diff --git a/api/macros/json_has_cpp_11/index.html b/api/macros/json_has_cpp_11/index.html
index 8c7e063..6805fb1 100644
--- a/api/macros/json_has_cpp_11/index.html
+++ b/api/macros/json_has_cpp_11/index.html
@@ -1,9 +1,11 @@
-<!doctype html><html lang=en class=no-js> <head><meta charset=utf-8><meta name=viewport content="width=device-width,initial-scale=1"><meta name=author content="Niels Lohmann"><link href="https://json.nlohmann.me/api/macros/json_has_cpp_11/" rel="canonical"><link href=../json_disable_enum_serialization/ rel=prev><link href=../json_has_filesystem/ rel=next><link rel=icon href=../../../assets/images/favicon.png><meta name=generator content="mkdocs-1.6.1, mkdocs-material-9.7.6"><title>JSON_HAS_CPP_11, JSON_HAS_CPP_14, JSON_HAS_CPP_17, JSON_HAS_CPP_20 - JSON for Modern C++</title><link rel=stylesheet href=../../../assets/stylesheets/main.484c7ddc.min.css><link rel=stylesheet href=../../../assets/stylesheets/palette.ab4e12ef.min.css><link rel="stylesheet" href="../../../assets/external/fonts.googleapis.com/css.61a430c9.css"><style>:root{--md-text-font:"Roboto";--md-code-font:"JetBrains Mono"}</style><link rel=stylesheet href=../../../css/custom.css><script>__md_scope=new URL("../../..",location),__md_hash=e=>[...e].reduce(((e,_)=>(e<<5)-e+_.charCodeAt(0)),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script></head> <body dir=ltr data-md-color-scheme=default data-md-color-primary=indigo data-md-color-accent=indigo> <input class=md-toggle data-md-toggle=drawer type=checkbox id=__drawer autocomplete=off> <input class=md-toggle data-md-toggle=search type=checkbox id=__search autocomplete=off> <label class=md-overlay for=__drawer></label> <div data-md-component=skip> <a href=#json_has_cpp_11-json_has_cpp_14-json_has_cpp_17-json_has_cpp_20 class=md-skip> Skip to content </a> </div> <div data-md-component=announce> </div> <header class=md-header data-md-component=header> <nav class="md-header__inner md-grid" aria-label=Header> <a href=../../.. title="JSON for Modern C++" class="md-header__button md-logo" aria-label="JSON for Modern C++" data-md-component=logo> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54"/></svg> </a> <label class="md-header__button md-icon" for=__drawer> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M3 6h18v2H3zm0 5h18v2H3zm0 5h18v2H3z"/></svg> </label> <div class=md-header__title data-md-component=header-title> <div class=md-header__ellipsis> <div class=md-header__topic> <span class=md-ellipsis> JSON for Modern C++ </span> </div> <div class=md-header__topic data-md-component=header-topic> <span class=md-ellipsis> JSON_HAS_CPP_11, JSON_HAS_CPP_14, JSON_HAS_CPP_17, JSON_HAS_CPP_20 </span> </div> </div> </div> <form class=md-header__option data-md-component=palette> <input class=md-option data-md-color-media="(prefers-color-scheme: light)" data-md-color-scheme=default data-md-color-primary=indigo data-md-color-accent=indigo aria-label="Switch to dark mode" type=radio name=__palette id=__palette_0> <label class="md-header__button md-icon" title="Switch to dark mode" for=__palette_1 hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a4 4 0 0 0-4 4 4 4 0 0 0 4 4 4 4 0 0 0 4-4 4 4 0 0 0-4-4m0 10a6 6 0 0 1-6-6 6 6 0 0 1 6-6 6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12z"/></svg> </label> <input class=md-option data-md-color-media="(prefers-color-scheme: dark)" data-md-color-scheme=slate data-md-color-primary=indigo data-md-color-accent=indigo aria-label="Switch to light mode" type=radio name=__palette id=__palette_1> <label class="md-header__button md-icon" title="Switch to light mode" for=__palette_0 hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 18c-.89 0-1.74-.2-2.5-.55C11.56 16.5 13 14.42 13 12s-1.44-4.5-3.5-5.45C10.26 6.2 11.11 6 12 6a6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12z"/></svg> </label> </form> <script>var palette=__md_get("__palette");if(palette&&palette.color){if("(prefers-color-scheme)"===palette.color.media){var media=matchMedia("(prefers-color-scheme: light)"),input=document.querySelector(media.matches?"[data-md-color-media='(prefers-color-scheme: light)']":"[data-md-color-media='(prefers-color-scheme: dark)']");palette.color.media=input.getAttribute("data-md-color-media"),palette.color.scheme=input.getAttribute("data-md-color-scheme"),palette.color.primary=input.getAttribute("data-md-color-primary"),palette.color.accent=input.getAttribute("data-md-color-accent")}for(var[key,value]of Object.entries(palette.color))document.body.setAttribute("data-md-color-"+key,value)}</script> <label class="md-header__button md-icon" for=__search> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg> </label> <div class=md-search data-md-component=search role=dialog> <label class=md-search__overlay for=__search></label> <div class=md-search__inner role=search> <form class=md-search__form name=search> <input type=text class=md-search__input name=query aria-label=Search placeholder=Search autocapitalize=off autocorrect=off autocomplete=off spellcheck=false data-md-component=search-query required> <label class="md-search__icon md-icon" for=__search> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11z"/></svg> </label> <nav class=md-search__options aria-label=Search> <button type=reset class="md-search__icon md-icon" title=Clear aria-label=Clear tabindex=-1> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z"/></svg> </button> </nav> </form> <div class=md-search__output> <div class=md-search__scrollwrap tabindex=0 data-md-scrollfix> <div class=md-search-result data-md-component=search-result> <div class=md-search-result__meta> Initializing search </div> <ol class=md-search-result__list role=presentation></ol> </div> </div> </div> </div> </div> <div class=md-header__source> <a href="https://github.com/nlohmann/json" title="Go to repository" class="md-source" data-md-component="source"> <div class="md-source__icon md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </div> <div class=md-source__repository> nlohmann/json </div> </a> </div> </nav> </header> <div class=md-container data-md-component=container> <nav class=md-tabs aria-label=Tabs data-md-component=tabs> <div class=md-grid> <ul class=md-tabs__list> <li class=md-tabs__item> <a href=../../.. class=md-tabs__link> Home </a> </li> <li class=md-tabs__item> <a href=../../../features/arbitrary_types/ class=md-tabs__link> Features </a> </li> <li class=md-tabs__item> <a href=../../../integration/ class=md-tabs__link> Integration </a> </li> <li class="md-tabs__item md-tabs__item--active"> <a href=../../basic_json/ class=md-tabs__link> API Documentation </a> </li> <li class=md-tabs__item> <a href=../../../community/ class=md-tabs__link> Community </a> </li> </ul> </div> </nav> <main class=md-main data-md-component=main> <div class="md-main__inner md-grid"> <div class="md-sidebar md-sidebar--primary" data-md-component=sidebar data-md-type=navigation> <div class=md-sidebar__scrollwrap> <div class=md-sidebar__inner> <nav class="md-nav md-nav--primary md-nav--lifted" aria-label=Navigation data-md-level=0> <label class=md-nav__title for=__drawer> <a href=../../.. title="JSON for Modern C++" class="md-nav__button md-logo" aria-label="JSON for Modern C++" data-md-component=logo> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54"/></svg> </a> JSON for Modern C++ </label> <div class=md-nav__source> <a href="https://github.com/nlohmann/json" title="Go to repository" class="md-source" data-md-component="source"> <div class="md-source__icon md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </div> <div class=md-source__repository> nlohmann/json </div> </a> </div> <ul class=md-nav__list data-md-scrollfix> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_1> <div class="md-nav__link md-nav__container"> <a href=../../.. class="md-nav__link "> <span class=md-ellipsis> Home </span> </a> <label class="md-nav__link " for=__nav_1 id=__nav_1_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_1_label aria-expanded=false> <label class=md-nav__title for=__nav_1> <span class="md-nav__icon md-icon"></span> Home </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../home/license/ class=md-nav__link> <span class=md-ellipsis> License </span> </a> </li> <li class=md-nav__item> <a href=../../../home/faq/ class=md-nav__link> <span class=md-ellipsis> FAQ </span> </a> </li> <li class=md-nav__item> <a href=../../../home/exceptions/ class=md-nav__link> <span class=md-ellipsis> Exceptions </span> </a> </li> <li class=md-nav__item> <a href=../../../home/releases/ class=md-nav__link> <span class=md-ellipsis> Releases </span> </a> </li> <li class=md-nav__item> <a href=../../../home/design_goals/ class=md-nav__link> <span class=md-ellipsis> Design goals </span> </a> </li> <li class=md-nav__item> <a href=../../../home/architecture/ class=md-nav__link> <span class=md-ellipsis> Architecture </span> </a> </li> <li class=md-nav__item> <a href=../../../home/customers/ class=md-nav__link> <span class=md-ellipsis> Customers </span> </a> </li> <li class=md-nav__item> <a href=../../../home/sponsors/ class=md-nav__link> <span class=md-ellipsis> Sponsors </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2> <label class=md-nav__link for=__nav_2 id=__nav_2_label tabindex=0> <span class=md-ellipsis> Features </span> <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_2_label aria-expanded=false> <label class=md-nav__title for=__nav_2> <span class="md-nav__icon md-icon"></span> Features </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/arbitrary_types/ class=md-nav__link> <span class=md-ellipsis> Arbitrary Type Conversions </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_2> <div class="md-nav__link md-nav__container"> <a href=../../../features/binary_formats/ class="md-nav__link "> <span class=md-ellipsis> Binary Formats </span> </a> <label class="md-nav__link " for=__nav_2_2 id=__nav_2_2_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_2_label aria-expanded=false> <label class=md-nav__title for=__nav_2_2> <span class="md-nav__icon md-icon"></span> Binary Formats </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/binary_formats/bjdata/ class=md-nav__link> <span class=md-ellipsis> BJData </span> </a> </li> <li class=md-nav__item> <a href=../../../features/binary_formats/bson/ class=md-nav__link> <span class=md-ellipsis> BSON </span> </a> </li> <li class=md-nav__item> <a href=../../../features/binary_formats/cbor/ class=md-nav__link> <span class=md-ellipsis> CBOR </span> </a> </li> <li class=md-nav__item> <a href=../../../features/binary_formats/messagepack/ class=md-nav__link> <span class=md-ellipsis> MessagePack </span> </a> </li> <li class=md-nav__item> <a href=../../../features/binary_formats/ubjson/ class=md-nav__link> <span class=md-ellipsis> UBJSON </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../../features/binary_values/ class=md-nav__link> <span class=md-ellipsis> Binary Values </span> </a> </li> <li class=md-nav__item> <a href=../../../features/comments/ class=md-nav__link> <span class=md-ellipsis> Comments </span> </a> </li> <li class=md-nav__item> <a href=../../../features/trailing_commas/ class=md-nav__link> <span class=md-ellipsis> Trailing Commas </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_6> <div class="md-nav__link md-nav__container"> <a href=../../../features/element_access/ class="md-nav__link "> <span class=md-ellipsis> Element Access </span> </a> <label class="md-nav__link " for=__nav_2_6 id=__nav_2_6_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_6_label aria-expanded=false> <label class=md-nav__title for=__nav_2_6> <span class="md-nav__icon md-icon"></span> Element Access </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/element_access/unchecked_access/ class=md-nav__link> <span class=md-ellipsis> Unchecked access: operator[] </span> </a> </li> <li class=md-nav__item> <a href=../../../features/element_access/checked_access/ class=md-nav__link> <span class=md-ellipsis> Checked access: at </span> </a> </li> <li class=md-nav__item> <a href=../../../features/element_access/default_value/ class=md-nav__link> <span class=md-ellipsis> Access with default value: value </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../../features/iterators/ class=md-nav__link> <span class=md-ellipsis> Iterators </span> </a> </li> <li class=md-nav__item> <a href=../../../features/json_pointer/ class=md-nav__link> <span class=md-ellipsis> JSON Pointer </span> </a> </li> <li class=md-nav__item> <a href=../../../features/json_patch/ class=md-nav__link> <span class=md-ellipsis> JSON Patch and Diff </span> </a> </li> <li class=md-nav__item> <a href=../../../features/merge_patch/ class=md-nav__link> <span class=md-ellipsis> JSON Merge Patch </span> </a> </li> <li class=md-nav__item> <a href=../../../features/modules/ class=md-nav__link> <span class=md-ellipsis> Modules </span> </a> </li> <li class=md-nav__item> <a href=../../../features/namespace/ class=md-nav__link> <span class=md-ellipsis> nlohmann Namespace </span> </a> </li> <li class=md-nav__item> <a href=../../../features/object_order/ class=md-nav__link> <span class=md-ellipsis> Object Order </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_14> <div class="md-nav__link md-nav__container"> <a href=../../../features/parsing/ class="md-nav__link "> <span class=md-ellipsis> Parsing </span> </a> <label class="md-nav__link " for=__nav_2_14 id=__nav_2_14_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_14_label aria-expanded=false> <label class=md-nav__title for=__nav_2_14> <span class="md-nav__icon md-icon"></span> Parsing </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/parsing/json_lines/ class=md-nav__link> <span class=md-ellipsis> JSON Lines </span> </a> </li> <li class=md-nav__item> <a href=../../../features/parsing/parse_exceptions/ class=md-nav__link> <span class=md-ellipsis> Parsing and Exceptions </span> </a> </li> <li class=md-nav__item> <a href=../../../features/parsing/parser_callbacks/ class=md-nav__link> <span class=md-ellipsis> Parser Callbacks </span> </a> </li> <li class=md-nav__item> <a href=../../../features/parsing/sax_interface/ class=md-nav__link> <span class=md-ellipsis> SAX Interface </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../../features/assertions/ class=md-nav__link> <span class=md-ellipsis> Runtime Assertions </span> </a> </li> <li class=md-nav__item> <a href=../../../features/enum_conversion/ class=md-nav__link> <span class=md-ellipsis> Specializing enum conversion </span> </a> </li> <li class=md-nav__item> <a href=../../../features/macros/ class=md-nav__link> <span class=md-ellipsis> Supported Macros </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_18> <div class="md-nav__link md-nav__container"> <a href=../../../features/types/ class="md-nav__link "> <span class=md-ellipsis> Types </span> </a> <label class="md-nav__link " for=__nav_2_18 id=__nav_2_18_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_18_label aria-expanded=false> <label class=md-nav__title for=__nav_2_18> <span class="md-nav__icon md-icon"></span> Types </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/types/number_handling/ class=md-nav__link> <span class=md-ellipsis> Number Handling </span> </a> </li> </ul> </nav> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_3> <div class="md-nav__link md-nav__container"> <a href=../../../integration/ class="md-nav__link "> <span class=md-ellipsis> Integration </span> </a> <label class="md-nav__link " for=__nav_3 id=__nav_3_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_3_label aria-expanded=false> <label class=md-nav__title for=__nav_3> <span class="md-nav__icon md-icon"></span> Integration </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../integration/migration_guide/ class=md-nav__link> <span class=md-ellipsis> Migration Guide </span> </a> </li> <li class=md-nav__item> <a href=../../../integration/cmake/ class=md-nav__link> <span class=md-ellipsis> CMake </span> </a> </li> <li class=md-nav__item> <a href=../../../integration/package_managers/ class=md-nav__link> <span class=md-ellipsis> Package Managers </span> </a> </li> <li class=md-nav__item> <a href=../../../integration/pkg-config/ class=md-nav__link> <span class=md-ellipsis> Pkg-config </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--active md-nav__item--section md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4 checked> <label class=md-nav__link for=__nav_4 id=__nav_4_label tabindex> <span class=md-ellipsis> API Documentation </span> <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_4_label aria-expanded=true> <label class=md-nav__title for=__nav_4> <span class="md-nav__icon md-icon"></span> API Documentation </label> <ul class=md-nav__list data-md-scrollfix> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_1> <div class="md-nav__link md-nav__container"> <a href=../../basic_json/ class="md-nav__link "> <span class=md-ellipsis> basic_json </span> </a> <label class="md-nav__link " for=__nav_4_1 id=__nav_4_1_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_1_label aria-expanded=false> <label class=md-nav__title for=__nav_4_1> <span class="md-nav__icon md-icon"></span> basic_json </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../basic_json/basic_json/ class=md-nav__link> <span class=md-ellipsis> (Constructor) </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/~basic_json/ class=md-nav__link> <span class=md-ellipsis> (Destructor) </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/accept/ class=md-nav__link> <span class=md-ellipsis> accept </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/array/ class=md-nav__link> <span class=md-ellipsis> array </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/array_t/ class=md-nav__link> <span class=md-ellipsis> array_t </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/at/ class=md-nav__link> <span class=md-ellipsis> at </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/back/ class=md-nav__link> <span class=md-ellipsis> back </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/begin/ class=md-nav__link> <span class=md-ellipsis> begin </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/binary/ class=md-nav__link> <span class=md-ellipsis> binary </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/binary_t/ class=md-nav__link> <span class=md-ellipsis> binary_t </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/boolean_t/ class=md-nav__link> <span class=md-ellipsis> boolean_t </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/cbegin/ class=md-nav__link> <span class=md-ellipsis> cbegin </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/cbor_tag_handler_t/ class=md-nav__link> <span class=md-ellipsis> cbor_tag_handler_t </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/cend/ class=md-nav__link> <span class=md-ellipsis> cend </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/clear/ class=md-nav__link> <span class=md-ellipsis> clear </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/contains/ class=md-nav__link> <span class=md-ellipsis> contains </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/count/ class=md-nav__link> <span class=md-ellipsis> count </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/crbegin/ class=md-nav__link> <span class=md-ellipsis> crbegin </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/crend/ class=md-nav__link> <span class=md-ellipsis> crend </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/default_object_comparator_t/ class=md-nav__link> <span class=md-ellipsis> default_object_comparator_t </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/diff/ class=md-nav__link> <span class=md-ellipsis> diff </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/dump/ class=md-nav__link> <span class=md-ellipsis> dump </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/emplace/ class=md-nav__link> <span class=md-ellipsis> emplace </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/emplace_back/ class=md-nav__link> <span class=md-ellipsis> emplace_back </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/empty/ class=md-nav__link> <span class=md-ellipsis> empty </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/end/ class=md-nav__link> <span class=md-ellipsis> end </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/end_pos/ class=md-nav__link> <span class=md-ellipsis> end_pos </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/erase/ class=md-nav__link> <span class=md-ellipsis> erase </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/error_handler_t/ class=md-nav__link> <span class=md-ellipsis> error_handler_t </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/exception/ class=md-nav__link> <span class=md-ellipsis> exception </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/find/ class=md-nav__link> <span class=md-ellipsis> find </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/flatten/ class=md-nav__link> <span class=md-ellipsis> flatten </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/from_bjdata/ class=md-nav__link> <span class=md-ellipsis> from_bjdata </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/from_bson/ class=md-nav__link> <span class=md-ellipsis> from_bson </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/from_cbor/ class=md-nav__link> <span class=md-ellipsis> from_cbor </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/from_msgpack/ class=md-nav__link> <span class=md-ellipsis> from_msgpack </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/from_ubjson/ class=md-nav__link> <span class=md-ellipsis> from_ubjson </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/front/ class=md-nav__link> <span class=md-ellipsis> front </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/get/ class=md-nav__link> <span class=md-ellipsis> get </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/get_allocator/ class=md-nav__link> <span class=md-ellipsis> get_allocator </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/get_binary/ class=md-nav__link> <span class=md-ellipsis> get_binary </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/get_ptr/ class=md-nav__link> <span class=md-ellipsis> get_ptr </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/get_ref/ class=md-nav__link> <span class=md-ellipsis> get_ref </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/get_to/ class=md-nav__link> <span class=md-ellipsis> get_to </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/std_hash/ class=md-nav__link> <span class=md-ellipsis> std::hash&lt;basic_json&gt; </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/input_format_t/ class=md-nav__link> <span class=md-ellipsis> input_format_t </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/insert/ class=md-nav__link> <span class=md-ellipsis> insert </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/invalid_iterator/ class=md-nav__link> <span class=md-ellipsis> invalid_iterator </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/is_array/ class=md-nav__link> <span class=md-ellipsis> is_array </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/is_binary/ class=md-nav__link> <span class=md-ellipsis> is_binary </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/is_boolean/ class=md-nav__link> <span class=md-ellipsis> is_boolean </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/is_discarded/ class=md-nav__link> <span class=md-ellipsis> is_discarded </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/is_null/ class=md-nav__link> <span class=md-ellipsis> is_null </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/is_number/ class=md-nav__link> <span class=md-ellipsis> is_number </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/is_number_float/ class=md-nav__link> <span class=md-ellipsis> is_number_float </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/is_number_integer/ class=md-nav__link> <span class=md-ellipsis> is_number_integer </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/is_number_unsigned/ class=md-nav__link> <span class=md-ellipsis> is_number_unsigned </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/is_object/ class=md-nav__link> <span class=md-ellipsis> is_object </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/is_primitive/ class=md-nav__link> <span class=md-ellipsis> is_primitive </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/is_string/ class=md-nav__link> <span class=md-ellipsis> is_string </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/is_structured/ class=md-nav__link> <span class=md-ellipsis> is_structured </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/items/ class=md-nav__link> <span class=md-ellipsis> items </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/json_base_class_t/ class=md-nav__link> <span class=md-ellipsis> json_base_class_t </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/json_serializer/ class=md-nav__link> <span class=md-ellipsis> json_serializer </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/max_size/ class=md-nav__link> <span class=md-ellipsis> max_size </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/meta/ class=md-nav__link> <span class=md-ellipsis> meta </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/merge_patch/ class=md-nav__link> <span class=md-ellipsis> merge_patch </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/number_float_t/ class=md-nav__link> <span class=md-ellipsis> number_float_t </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/number_integer_t/ class=md-nav__link> <span class=md-ellipsis> number_integer_t </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/number_unsigned_t/ class=md-nav__link> <span class=md-ellipsis> number_unsigned_t </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/object/ class=md-nav__link> <span class=md-ellipsis> object </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/object_comparator_t/ class=md-nav__link> <span class=md-ellipsis> object_comparator_t </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/object_t/ class=md-nav__link> <span class=md-ellipsis> object_t </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/operator_ValueType/ class=md-nav__link> <span class=md-ellipsis> operator ValueType </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/operator_value_t/ class=md-nav__link> <span class=md-ellipsis> operator value_t </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/operator%5B%5D/ class=md-nav__link> <span class=md-ellipsis> operator[] </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/operator%3D/ class=md-nav__link> <span class=md-ellipsis> operator= </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/operator%2B%3D/ class=md-nav__link> <span class=md-ellipsis> operator+= </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/operator_eq/ class=md-nav__link> <span class=md-ellipsis> operator== </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/operator_ne/ class=md-nav__link> <span class=md-ellipsis> operator!= </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/operator_lt/ class=md-nav__link> <span class=md-ellipsis> operator< </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/operator_gt/ class=md-nav__link> <span class=md-ellipsis> operator> </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/operator_le/ class=md-nav__link> <span class=md-ellipsis> operator<= </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/operator_ge/ class=md-nav__link> <span class=md-ellipsis> operator>= </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/operator_spaceship/ class=md-nav__link> <span class=md-ellipsis> operator<=> </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/out_of_range/ class=md-nav__link> <span class=md-ellipsis> out_of_range </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/other_error/ class=md-nav__link> <span class=md-ellipsis> other_error </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/parse/ class=md-nav__link> <span class=md-ellipsis> parse </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/parse_error/ class=md-nav__link> <span class=md-ellipsis> parse_error </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/parse_event_t/ class=md-nav__link> <span class=md-ellipsis> parse_event_t </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/parser_callback_t/ class=md-nav__link> <span class=md-ellipsis> parser_callback_t </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/patch/ class=md-nav__link> <span class=md-ellipsis> patch </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/patch_inplace/ class=md-nav__link> <span class=md-ellipsis> patch_inplace </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/push_back/ class=md-nav__link> <span class=md-ellipsis> push_back </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/rbegin/ class=md-nav__link> <span class=md-ellipsis> rbegin </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/rend/ class=md-nav__link> <span class=md-ellipsis> rend </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/sax_parse/ class=md-nav__link> <span class=md-ellipsis> sax_parse </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/size/ class=md-nav__link> <span class=md-ellipsis> size </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/start_pos/ class=md-nav__link> <span class=md-ellipsis> start_pos </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/string_t/ class=md-nav__link> <span class=md-ellipsis> string_t </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/swap/ class=md-nav__link> <span class=md-ellipsis> swap </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/std_swap/ class=md-nav__link> <span class=md-ellipsis> std::swap&lt;basic_json&gt; </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/to_bjdata/ class=md-nav__link> <span class=md-ellipsis> to_bjdata </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/to_bson/ class=md-nav__link> <span class=md-ellipsis> to_bson </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/to_cbor/ class=md-nav__link> <span class=md-ellipsis> to_cbor </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/to_msgpack/ class=md-nav__link> <span class=md-ellipsis> to_msgpack </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/to_string/ class=md-nav__link> <span class=md-ellipsis> to_string </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/to_ubjson/ class=md-nav__link> <span class=md-ellipsis> to_ubjson </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/type/ class=md-nav__link> <span class=md-ellipsis> type </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/type_error/ class=md-nav__link> <span class=md-ellipsis> type_error </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/type_name/ class=md-nav__link> <span class=md-ellipsis> type_name </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/unflatten/ class=md-nav__link> <span class=md-ellipsis> unflatten </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/update/ class=md-nav__link> <span class=md-ellipsis> update </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/value/ class=md-nav__link> <span class=md-ellipsis> value </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/value_t/ class=md-nav__link> <span class=md-ellipsis> value_t </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_2> <div class="md-nav__link md-nav__container"> <a href=../../byte_container_with_subtype/ class="md-nav__link "> <span class=md-ellipsis> byte_container_with_subtype </span> </a> <label class="md-nav__link " for=__nav_4_2 id=__nav_4_2_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_2_label aria-expanded=false> <label class=md-nav__title for=__nav_4_2> <span class="md-nav__icon md-icon"></span> byte_container_with_subtype </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../byte_container_with_subtype/byte_container_with_subtype/ class=md-nav__link> <span class=md-ellipsis> (constructor) </span> </a> </li> <li class=md-nav__item> <a href=../../byte_container_with_subtype/clear_subtype/ class=md-nav__link> <span class=md-ellipsis> clear_subtype </span> </a> </li> <li class=md-nav__item> <a href=../../byte_container_with_subtype/has_subtype/ class=md-nav__link> <span class=md-ellipsis> has_subtype </span> </a> </li> <li class=md-nav__item> <a href=../../byte_container_with_subtype/set_subtype/ class=md-nav__link> <span class=md-ellipsis> set_subtype </span> </a> </li> <li class=md-nav__item> <a href=../../byte_container_with_subtype/subtype/ class=md-nav__link> <span class=md-ellipsis> subtype </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_3> <div class="md-nav__link md-nav__container"> <a href=../../adl_serializer/ class="md-nav__link "> <span class=md-ellipsis> adl_serializer </span> </a> <label class="md-nav__link " for=__nav_4_3 id=__nav_4_3_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_3_label aria-expanded=false> <label class=md-nav__title for=__nav_4_3> <span class="md-nav__icon md-icon"></span> adl_serializer </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../adl_serializer/from_json/ class=md-nav__link> <span class=md-ellipsis> from_json </span> </a> </li> <li class=md-nav__item> <a href=../../adl_serializer/to_json/ class=md-nav__link> <span class=md-ellipsis> to_json </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../json/ class=md-nav__link> <span class=md-ellipsis> json </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_5> <div class="md-nav__link md-nav__container"> <a href=../../json_pointer/ class="md-nav__link "> <span class=md-ellipsis> json_pointer </span> </a> <label class="md-nav__link " for=__nav_4_5 id=__nav_4_5_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_5_label aria-expanded=false> <label class=md-nav__title for=__nav_4_5> <span class="md-nav__icon md-icon"></span> json_pointer </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../json_pointer/json_pointer/ class=md-nav__link> <span class=md-ellipsis> (Constructor) </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/back/ class=md-nav__link> <span class=md-ellipsis> back </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/empty/ class=md-nav__link> <span class=md-ellipsis> empty </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/front/ class=md-nav__link> <span class=md-ellipsis> front </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_string_t/ class=md-nav__link> <span class=md-ellipsis> operator string_t </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_eq/ class=md-nav__link> <span class=md-ellipsis> operator== </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_ne/ class=md-nav__link> <span class=md-ellipsis> operator!= </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_slash/ class=md-nav__link> <span class=md-ellipsis> operator/ </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_slasheq/ class=md-nav__link> <span class=md-ellipsis> operator/= </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/parent_pointer/ class=md-nav__link> <span class=md-ellipsis> parent_pointer </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/pop_back/ class=md-nav__link> <span class=md-ellipsis> pop_back </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/pop_front/ class=md-nav__link> <span class=md-ellipsis> pop_front </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/push_back/ class=md-nav__link> <span class=md-ellipsis> push_back </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/push_front/ class=md-nav__link> <span class=md-ellipsis> push_front </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/string_t/ class=md-nav__link> <span class=md-ellipsis> string_t </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/to_string/ class=md-nav__link> <span class=md-ellipsis> to_string </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_6> <div class="md-nav__link md-nav__container"> <a href=../../json_sax/ class="md-nav__link "> <span class=md-ellipsis> json_sax </span> </a> <label class="md-nav__link " for=__nav_4_6 id=__nav_4_6_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_6_label aria-expanded=false> <label class=md-nav__title for=__nav_4_6> <span class="md-nav__icon md-icon"></span> json_sax </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../json_sax/binary/ class=md-nav__link> <span class=md-ellipsis> binary </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/boolean/ class=md-nav__link> <span class=md-ellipsis> boolean </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/end_array/ class=md-nav__link> <span class=md-ellipsis> end_array </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/end_object/ class=md-nav__link> <span class=md-ellipsis> end_object </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/key/ class=md-nav__link> <span class=md-ellipsis> key </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/null/ class=md-nav__link> <span class=md-ellipsis> null </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/number_float/ class=md-nav__link> <span class=md-ellipsis> number_float </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/number_integer/ class=md-nav__link> <span class=md-ellipsis> number_integer </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/number_unsigned/ class=md-nav__link> <span class=md-ellipsis> number_unsigned </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/parse_error/ class=md-nav__link> <span class=md-ellipsis> parse_error </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/start_array/ class=md-nav__link> <span class=md-ellipsis> start_array </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/start_object/ class=md-nav__link> <span class=md-ellipsis> start_object </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/string/ class=md-nav__link> <span class=md-ellipsis> string </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../operator_ltlt/ class=md-nav__link> <span class=md-ellipsis> operator<<(basic_json), operator<<(json_pointer) </span> </a> </li> <li class=md-nav__item> <a href=../../operator_gtgt/ class=md-nav__link> <span class=md-ellipsis> operator>>(basic_json) </span> </a> </li> <li class=md-nav__item> <a href=../../operator_literal_json/ class=md-nav__link> <span class=md-ellipsis> operator""_json </span> </a> </li> <li class=md-nav__item> <a href=../../operator_literal_json_pointer/ class=md-nav__link> <span class=md-ellipsis> operator""_json_pointer </span> </a> </li> <li class=md-nav__item> <a href=../../ordered_json/ class=md-nav__link> <span class=md-ellipsis> ordered_json </span> </a> </li> <li class=md-nav__item> <a href=../../ordered_map/ class=md-nav__link> <span class=md-ellipsis> ordered_map </span> </a> </li> <li class="md-nav__item md-nav__item--active md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_13 checked> <div class="md-nav__link md-nav__container"> <a href=../ class="md-nav__link "> <span class=md-ellipsis> macros </span> </a> <label class="md-nav__link " for=__nav_4_13 id=__nav_4_13_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_13_label aria-expanded=true> <label class=md-nav__title for=__nav_4_13> <span class="md-nav__icon md-icon"></span> macros </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../json_assert/ class=md-nav__link> <span class=md-ellipsis> JSON_ASSERT </span> </a> </li> <li class=md-nav__item> <a href=../json_brace_init_copy_semantics/ class=md-nav__link> <span class=md-ellipsis> JSON_BRACE_INIT_COPY_SEMANTICS </span> </a> </li> <li class=md-nav__item> <a href=../json_throw_user/ class=md-nav__link> <span class=md-ellipsis> JSON_CATCH_USER, JSON_THROW_USER, JSON_TRY_USER </span> </a> </li> <li class=md-nav__item> <a href=../json_diagnostics/ class=md-nav__link> <span class=md-ellipsis> JSON_DIAGNOSTICS </span> </a> </li> <li class=md-nav__item> <a href=../json_diagnostic_positions/ class=md-nav__link> <span class=md-ellipsis> JSON_DIAGNOSTIC_POSITIONS </span> </a> </li> <li class=md-nav__item> <a href=../json_disable_enum_serialization/ class=md-nav__link> <span class=md-ellipsis> JSON_DISABLE_ENUM_SERIALIZATION </span> </a> </li> <li class="md-nav__item md-nav__item--active"> <input class="md-nav__toggle md-toggle" type=checkbox id=__toc> <label class="md-nav__link md-nav__link--active" for=__toc> <span class=md-ellipsis> JSON_HAS_CPP_11, JSON_HAS_CPP_14, JSON_HAS_CPP_17, JSON_HAS_CPP_20 </span> <span class="md-nav__icon md-icon"></span> </label> <a href=./ class="md-nav__link md-nav__link--active"> <span class=md-ellipsis> JSON_HAS_CPP_11, JSON_HAS_CPP_14, JSON_HAS_CPP_17, JSON_HAS_CPP_20 </span> </a> <nav class="md-nav md-nav--secondary" aria-label="Table of contents"> <label class=md-nav__title for=__toc> <span class="md-nav__icon md-icon"></span> Table of contents </label> <ul class=md-nav__list data-md-component=toc data-md-scrollfix> <li class=md-nav__item> <a href=#default-definition class=md-nav__link> <span class=md-ellipsis> Default definition </span> </a> </li> <li class=md-nav__item> <a href=#notes class=md-nav__link> <span class=md-ellipsis> Notes </span> </a> </li> <li class=md-nav__item> <a href=#examples class=md-nav__link> <span class=md-ellipsis> Examples </span> </a> </li> <li class=md-nav__item> <a href=#version-history class=md-nav__link> <span class=md-ellipsis> Version history </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../json_has_filesystem/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_EXPERIMENTAL_FILESYSTEM, JSON_HAS_FILESYSTEM </span> </a> </li> <li class=md-nav__item> <a href=../json_has_ranges/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_RANGES </span> </a> </li> <li class=md-nav__item> <a href=../json_has_static_rtti/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_STATIC_RTTI </span> </a> </li> <li class=md-nav__item> <a href=../json_has_three_way_comparison/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_THREE_WAY_COMPARISON </span> </a> </li> <li class=md-nav__item> <a href=../json_noexception/ class=md-nav__link> <span class=md-ellipsis> JSON_NOEXCEPTION </span> </a> </li> <li class=md-nav__item> <a href=../json_no_io/ class=md-nav__link> <span class=md-ellipsis> JSON_NO_IO </span> </a> </li> <li class=md-nav__item> <a href=../json_skip_library_version_check/ class=md-nav__link> <span class=md-ellipsis> JSON_SKIP_LIBRARY_VERSION_CHECK </span> </a> </li> <li class=md-nav__item> <a href=../json_skip_unsupported_compiler_check/ class=md-nav__link> <span class=md-ellipsis> JSON_SKIP_UNSUPPORTED_COMPILER_CHECK </span> </a> </li> <li class=md-nav__item> <a href=../json_use_global_udls/ class=md-nav__link> <span class=md-ellipsis> JSON_USE_GLOBAL_UDLS </span> </a> </li> <li class=md-nav__item> <a href=../json_use_implicit_conversions/ class=md-nav__link> <span class=md-ellipsis> JSON_USE_IMPLICIT_CONVERSIONS </span> </a> </li> <li class=md-nav__item> <a href=../json_use_legacy_discarded_value_comparison/ class=md-nav__link> <span class=md-ellipsis> JSON_USE_LEGACY_DISCARDED_VALUE_COMPARISON </span> </a> </li> <li class=md-nav__item> <a href=../nlohmann_define_derived_type/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_ONLY_SERIALIZE, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE </span> </a> </li> <li class=md-nav__item> <a href=../nlohmann_define_type_intrusive/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_TYPE_INTRUSIVE, NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_TYPE_INTRUSIVE_ONLY_SERIALIZE </span> </a> </li> <li class=md-nav__item> <a href=../nlohmann_define_type_non_intrusive/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE </span> </a> </li> <li class=md-nav__item> <a href=../nlohmann_define_type_with_names/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_TYPE_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES </span> </a> </li> <li class=md-nav__item> <a href=../nlohmann_json_namespace/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_NAMESPACE </span> </a> </li> <li class=md-nav__item> <a href=../nlohmann_json_namespace_begin/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_NAMESPACE_BEGIN, NLOHMANN_JSON_NAMESPACE_END </span> </a> </li> <li class=md-nav__item> <a href=../nlohmann_json_namespace_no_version/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_NAMESPACE_NO_VERSION </span> </a> </li> <li class=md-nav__item> <a href=../nlohmann_json_serialize_enum/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_SERIALIZE_ENUM </span> </a> </li> <li class=md-nav__item> <a href=../nlohmann_json_serialize_enum_strict/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_SERIALIZE_ENUM_STRICT </span> </a> </li> <li class=md-nav__item> <a href=../nlohmann_json_version_major/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_VERSION_MAJOR, NLOHMANN_JSON_VERSION_MINOR, NLOHMANN_JSON_VERSION_PATCH </span> </a> </li> </ul> </nav> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_5> <div class="md-nav__link md-nav__container"> <a href=../../../community/ class="md-nav__link "> <span class=md-ellipsis> Community </span> </a> <label class="md-nav__link " for=__nav_5 id=__nav_5_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_5_label aria-expanded=false> <label class=md-nav__title for=__nav_5> <span class="md-nav__icon md-icon"></span> Community </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../community/code_of_conduct/ class=md-nav__link> <span class=md-ellipsis> Code of Conduct </span> </a> </li> <li class=md-nav__item> <a href=../../../community/contribution_guidelines/ class=md-nav__link> <span class=md-ellipsis> Contribution Guidelines </span> </a> </li> <li class=md-nav__item> <a href=../../../community/quality_assurance/ class=md-nav__link> <span class=md-ellipsis> Quality assurance </span> </a> </li> <li class=md-nav__item> <a href=../../../community/governance/ class=md-nav__link> <span class=md-ellipsis> Governance </span> </a> </li> <li class=md-nav__item> <a href=../../../community/security_policy/ class=md-nav__link> <span class=md-ellipsis> Security Policy </span> </a> </li> </ul> </nav> </li> </ul> </nav> </div> </div> </div> <div class="md-sidebar md-sidebar--secondary" data-md-component=sidebar data-md-type=toc> <div class=md-sidebar__scrollwrap> <div class=md-sidebar__inner> <nav class="md-nav md-nav--secondary" aria-label="Table of contents"> <label class=md-nav__title for=__toc> <span class="md-nav__icon md-icon"></span> Table of contents </label> <ul class=md-nav__list data-md-component=toc data-md-scrollfix> <li class=md-nav__item> <a href=#default-definition class=md-nav__link> <span class=md-ellipsis> Default definition </span> </a> </li> <li class=md-nav__item> <a href=#notes class=md-nav__link> <span class=md-ellipsis> Notes </span> </a> </li> <li class=md-nav__item> <a href=#examples class=md-nav__link> <span class=md-ellipsis> Examples </span> </a> </li> <li class=md-nav__item> <a href=#version-history class=md-nav__link> <span class=md-ellipsis> Version history </span> </a> </li> </ul> </nav> </div> </div> </div> <div class=md-content data-md-component=content> <article class="md-content__inner md-typeset"> <a href="https://github.com/nlohmann/json/edit/develop/docs/mkdocs/docs/api/macros/json_has_cpp_11.md" title="Edit this page" class="md-content__button md-icon" rel="edit"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M10 20H6V4h7v5h5v3.1l2-2V8l-6-6H6c-1.1 0-2 .9-2 2v16c0 1.1.9 2 2 2h4zm10.2-7c.1 0 .3.1.4.2l1.3 1.3c.2.2.2.6 0 .8l-1 1-2.1-2.1 1-1c.1-.1.2-.2.4-.2m0 3.9L14.1 23H12v-2.1l6.1-6.1z"/></svg> </a> <a href="https://github.com/nlohmann/json/raw/develop/docs/mkdocs/docs/api/macros/json_has_cpp_11.md" title="View source of this page" class="md-content__button md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M17 18c.56 0 1 .44 1 1s-.44 1-1 1-1-.44-1-1 .44-1 1-1m0-3c-2.73 0-5.06 1.66-6 4 .94 2.34 3.27 4 6 4s5.06-1.66 6-4c-.94-2.34-3.27-4-6-4m0 6.5a2.5 2.5 0 0 1-2.5-2.5 2.5 2.5 0 0 1 2.5-2.5 2.5 2.5 0 0 1 2.5 2.5 2.5 2.5 0 0 1-2.5 2.5M9.27 20H6V4h7v5h5v4.07c.7.08 1.36.25 2 .49V8l-6-6H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h4.5a8.2 8.2 0 0 1-1.23-2"/></svg> </a> <h1 id=json_has_cpp_11-json_has_cpp_14-json_has_cpp_17-json_has_cpp_20>JSON_HAS_CPP_11, JSON_HAS_CPP_14, JSON_HAS_CPP_17, JSON_HAS_CPP_20<a class=headerlink href=#json_has_cpp_11-json_has_cpp_14-json_has_cpp_17-json_has_cpp_20 title="Permanent link">&para;</a></h1> <div class=highlight><pre><span></span><code><span class=cp>#define JSON_HAS_CPP_11</span>
+<!doctype html><html lang=en class=no-js> <head><meta charset=utf-8><meta name=viewport content="width=device-width,initial-scale=1"><meta name=author content="Niels Lohmann"><link href="https://json.nlohmann.me/api/macros/json_has_cpp_11/" rel="canonical"><link href=../json_disable_enum_serialization/ rel=prev><link href=../json_has_filesystem/ rel=next><link rel=icon href=../../../assets/images/favicon.png><meta name=generator content="mkdocs-1.6.1, mkdocs-material-9.7.6"><title>JSON_HAS_CPP_11, JSON_HAS_CPP_14, JSON_HAS_CPP_17, JSON_HAS_CPP_20 - JSON for Modern C++</title><link rel=stylesheet href=../../../assets/stylesheets/main.484c7ddc.min.css><link rel=stylesheet href=../../../assets/stylesheets/palette.ab4e12ef.min.css><link rel="stylesheet" href="../../../assets/external/fonts.googleapis.com/css.61a430c9.css"><style>:root{--md-text-font:"Roboto";--md-code-font:"JetBrains Mono"}</style><link rel=stylesheet href=../../../css/custom.css><script>__md_scope=new URL("../../..",location),__md_hash=e=>[...e].reduce(((e,_)=>(e<<5)-e+_.charCodeAt(0)),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script></head> <body dir=ltr data-md-color-scheme=default data-md-color-primary=indigo data-md-color-accent=indigo> <input class=md-toggle data-md-toggle=drawer type=checkbox id=__drawer autocomplete=off> <input class=md-toggle data-md-toggle=search type=checkbox id=__search autocomplete=off> <label class=md-overlay for=__drawer></label> <div data-md-component=skip> <a href=#json_has_cpp_11-json_has_cpp_14-json_has_cpp_17-json_has_cpp_20-json_has_cpp_23-json_has_cpp_26 class=md-skip> Skip to content </a> </div> <div data-md-component=announce> </div> <header class=md-header data-md-component=header> <nav class="md-header__inner md-grid" aria-label=Header> <a href=../../.. title="JSON for Modern C++" class="md-header__button md-logo" aria-label="JSON for Modern C++" data-md-component=logo> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54"/></svg> </a> <label class="md-header__button md-icon" for=__drawer> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M3 6h18v2H3zm0 5h18v2H3zm0 5h18v2H3z"/></svg> </label> <div class=md-header__title data-md-component=header-title> <div class=md-header__ellipsis> <div class=md-header__topic> <span class=md-ellipsis> JSON for Modern C++ </span> </div> <div class=md-header__topic data-md-component=header-topic> <span class=md-ellipsis> JSON_HAS_CPP_11, JSON_HAS_CPP_14, JSON_HAS_CPP_17, JSON_HAS_CPP_20 </span> </div> </div> </div> <form class=md-header__option data-md-component=palette> <input class=md-option data-md-color-media="(prefers-color-scheme: light)" data-md-color-scheme=default data-md-color-primary=indigo data-md-color-accent=indigo aria-label="Switch to dark mode" type=radio name=__palette id=__palette_0> <label class="md-header__button md-icon" title="Switch to dark mode" for=__palette_1 hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a4 4 0 0 0-4 4 4 4 0 0 0 4 4 4 4 0 0 0 4-4 4 4 0 0 0-4-4m0 10a6 6 0 0 1-6-6 6 6 0 0 1 6-6 6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12z"/></svg> </label> <input class=md-option data-md-color-media="(prefers-color-scheme: dark)" data-md-color-scheme=slate data-md-color-primary=indigo data-md-color-accent=indigo aria-label="Switch to light mode" type=radio name=__palette id=__palette_1> <label class="md-header__button md-icon" title="Switch to light mode" for=__palette_0 hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 18c-.89 0-1.74-.2-2.5-.55C11.56 16.5 13 14.42 13 12s-1.44-4.5-3.5-5.45C10.26 6.2 11.11 6 12 6a6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12z"/></svg> </label> </form> <script>var palette=__md_get("__palette");if(palette&&palette.color){if("(prefers-color-scheme)"===palette.color.media){var media=matchMedia("(prefers-color-scheme: light)"),input=document.querySelector(media.matches?"[data-md-color-media='(prefers-color-scheme: light)']":"[data-md-color-media='(prefers-color-scheme: dark)']");palette.color.media=input.getAttribute("data-md-color-media"),palette.color.scheme=input.getAttribute("data-md-color-scheme"),palette.color.primary=input.getAttribute("data-md-color-primary"),palette.color.accent=input.getAttribute("data-md-color-accent")}for(var[key,value]of Object.entries(palette.color))document.body.setAttribute("data-md-color-"+key,value)}</script> <label class="md-header__button md-icon" for=__search> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg> </label> <div class=md-search data-md-component=search role=dialog> <label class=md-search__overlay for=__search></label> <div class=md-search__inner role=search> <form class=md-search__form name=search> <input type=text class=md-search__input name=query aria-label=Search placeholder=Search autocapitalize=off autocorrect=off autocomplete=off spellcheck=false data-md-component=search-query required> <label class="md-search__icon md-icon" for=__search> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11z"/></svg> </label> <nav class=md-search__options aria-label=Search> <button type=reset class="md-search__icon md-icon" title=Clear aria-label=Clear tabindex=-1> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z"/></svg> </button> </nav> </form> <div class=md-search__output> <div class=md-search__scrollwrap tabindex=0 data-md-scrollfix> <div class=md-search-result data-md-component=search-result> <div class=md-search-result__meta> Initializing search </div> <ol class=md-search-result__list role=presentation></ol> </div> </div> </div> </div> </div> <div class=md-header__source> <a href="https://github.com/nlohmann/json" title="Go to repository" class="md-source" data-md-component="source"> <div class="md-source__icon md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </div> <div class=md-source__repository> nlohmann/json </div> </a> </div> </nav> </header> <div class=md-container data-md-component=container> <nav class=md-tabs aria-label=Tabs data-md-component=tabs> <div class=md-grid> <ul class=md-tabs__list> <li class=md-tabs__item> <a href=../../.. class=md-tabs__link> Home </a> </li> <li class=md-tabs__item> <a href=../../../features/arbitrary_types/ class=md-tabs__link> Features </a> </li> <li class=md-tabs__item> <a href=../../../integration/ class=md-tabs__link> Integration </a> </li> <li class="md-tabs__item md-tabs__item--active"> <a href=../../basic_json/ class=md-tabs__link> API Documentation </a> </li> <li class=md-tabs__item> <a href=../../../community/ class=md-tabs__link> Community </a> </li> </ul> </div> </nav> <main class=md-main data-md-component=main> <div class="md-main__inner md-grid"> <div class="md-sidebar md-sidebar--primary" data-md-component=sidebar data-md-type=navigation> <div class=md-sidebar__scrollwrap> <div class=md-sidebar__inner> <nav class="md-nav md-nav--primary md-nav--lifted" aria-label=Navigation data-md-level=0> <label class=md-nav__title for=__drawer> <a href=../../.. title="JSON for Modern C++" class="md-nav__button md-logo" aria-label="JSON for Modern C++" data-md-component=logo> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54"/></svg> </a> JSON for Modern C++ </label> <div class=md-nav__source> <a href="https://github.com/nlohmann/json" title="Go to repository" class="md-source" data-md-component="source"> <div class="md-source__icon md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </div> <div class=md-source__repository> nlohmann/json </div> </a> </div> <ul class=md-nav__list data-md-scrollfix> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_1> <div class="md-nav__link md-nav__container"> <a href=../../.. class="md-nav__link "> <span class=md-ellipsis> Home </span> </a> <label class="md-nav__link " for=__nav_1 id=__nav_1_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_1_label aria-expanded=false> <label class=md-nav__title for=__nav_1> <span class="md-nav__icon md-icon"></span> Home </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../home/license/ class=md-nav__link> <span class=md-ellipsis> License </span> </a> </li> <li class=md-nav__item> <a href=../../../home/faq/ class=md-nav__link> <span class=md-ellipsis> FAQ </span> </a> </li> <li class=md-nav__item> <a href=../../../home/exceptions/ class=md-nav__link> <span class=md-ellipsis> Exceptions </span> </a> </li> <li class=md-nav__item> <a href=../../../home/releases/ class=md-nav__link> <span class=md-ellipsis> Releases </span> </a> </li> <li class=md-nav__item> <a href=../../../home/design_goals/ class=md-nav__link> <span class=md-ellipsis> Design goals </span> </a> </li> <li class=md-nav__item> <a href=../../../home/architecture/ class=md-nav__link> <span class=md-ellipsis> Architecture </span> </a> </li> <li class=md-nav__item> <a href=../../../home/customers/ class=md-nav__link> <span class=md-ellipsis> Customers </span> </a> </li> <li class=md-nav__item> <a href=../../../home/sponsors/ class=md-nav__link> <span class=md-ellipsis> Sponsors </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2> <label class=md-nav__link for=__nav_2 id=__nav_2_label tabindex=0> <span class=md-ellipsis> Features </span> <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_2_label aria-expanded=false> <label class=md-nav__title for=__nav_2> <span class="md-nav__icon md-icon"></span> Features </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/arbitrary_types/ class=md-nav__link> <span class=md-ellipsis> Arbitrary Type Conversions </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_2> <div class="md-nav__link md-nav__container"> <a href=../../../features/binary_formats/ class="md-nav__link "> <span class=md-ellipsis> Binary Formats </span> </a> <label class="md-nav__link " for=__nav_2_2 id=__nav_2_2_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_2_label aria-expanded=false> <label class=md-nav__title for=__nav_2_2> <span class="md-nav__icon md-icon"></span> Binary Formats </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/binary_formats/bjdata/ class=md-nav__link> <span class=md-ellipsis> BJData </span> </a> </li> <li class=md-nav__item> <a href=../../../features/binary_formats/bson/ class=md-nav__link> <span class=md-ellipsis> BSON </span> </a> </li> <li class=md-nav__item> <a href=../../../features/binary_formats/cbor/ class=md-nav__link> <span class=md-ellipsis> CBOR </span> </a> </li> <li class=md-nav__item> <a href=../../../features/binary_formats/messagepack/ class=md-nav__link> <span class=md-ellipsis> MessagePack </span> </a> </li> <li class=md-nav__item> <a href=../../../features/binary_formats/ubjson/ class=md-nav__link> <span class=md-ellipsis> UBJSON </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../../features/binary_values/ class=md-nav__link> <span class=md-ellipsis> Binary Values </span> </a> </li> <li class=md-nav__item> <a href=../../../features/comments/ class=md-nav__link> <span class=md-ellipsis> Comments </span> </a> </li> <li class=md-nav__item> <a href=../../../features/trailing_commas/ class=md-nav__link> <span class=md-ellipsis> Trailing Commas </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_6> <div class="md-nav__link md-nav__container"> <a href=../../../features/element_access/ class="md-nav__link "> <span class=md-ellipsis> Element Access </span> </a> <label class="md-nav__link " for=__nav_2_6 id=__nav_2_6_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_6_label aria-expanded=false> <label class=md-nav__title for=__nav_2_6> <span class="md-nav__icon md-icon"></span> Element Access </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/element_access/unchecked_access/ class=md-nav__link> <span class=md-ellipsis> Unchecked access: operator[] </span> </a> </li> <li class=md-nav__item> <a href=../../../features/element_access/checked_access/ class=md-nav__link> <span class=md-ellipsis> Checked access: at </span> </a> </li> <li class=md-nav__item> <a href=../../../features/element_access/default_value/ class=md-nav__link> <span class=md-ellipsis> Access with default value: value </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../../features/iterators/ class=md-nav__link> <span class=md-ellipsis> Iterators </span> </a> </li> <li class=md-nav__item> <a href=../../../features/json_pointer/ class=md-nav__link> <span class=md-ellipsis> JSON Pointer </span> </a> </li> <li class=md-nav__item> <a href=../../../features/json_patch/ class=md-nav__link> <span class=md-ellipsis> JSON Patch and Diff </span> </a> </li> <li class=md-nav__item> <a href=../../../features/merge_patch/ class=md-nav__link> <span class=md-ellipsis> JSON Merge Patch </span> </a> </li> <li class=md-nav__item> <a href=../../../features/modules/ class=md-nav__link> <span class=md-ellipsis> Modules </span> </a> </li> <li class=md-nav__item> <a href=../../../features/namespace/ class=md-nav__link> <span class=md-ellipsis> nlohmann Namespace </span> </a> </li> <li class=md-nav__item> <a href=../../../features/object_order/ class=md-nav__link> <span class=md-ellipsis> Object Order </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_14> <div class="md-nav__link md-nav__container"> <a href=../../../features/parsing/ class="md-nav__link "> <span class=md-ellipsis> Parsing </span> </a> <label class="md-nav__link " for=__nav_2_14 id=__nav_2_14_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_14_label aria-expanded=false> <label class=md-nav__title for=__nav_2_14> <span class="md-nav__icon md-icon"></span> Parsing </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/parsing/json_lines/ class=md-nav__link> <span class=md-ellipsis> JSON Lines </span> </a> </li> <li class=md-nav__item> <a href=../../../features/parsing/parse_exceptions/ class=md-nav__link> <span class=md-ellipsis> Parsing and Exceptions </span> </a> </li> <li class=md-nav__item> <a href=../../../features/parsing/parser_callbacks/ class=md-nav__link> <span class=md-ellipsis> Parser Callbacks </span> </a> </li> <li class=md-nav__item> <a href=../../../features/parsing/sax_interface/ class=md-nav__link> <span class=md-ellipsis> SAX Interface </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../../features/assertions/ class=md-nav__link> <span class=md-ellipsis> Runtime Assertions </span> </a> </li> <li class=md-nav__item> <a href=../../../features/enum_conversion/ class=md-nav__link> <span class=md-ellipsis> Specializing enum conversion </span> </a> </li> <li class=md-nav__item> <a href=../../../features/macros/ class=md-nav__link> <span class=md-ellipsis> Supported Macros </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_18> <div class="md-nav__link md-nav__container"> <a href=../../../features/types/ class="md-nav__link "> <span class=md-ellipsis> Types </span> </a> <label class="md-nav__link " for=__nav_2_18 id=__nav_2_18_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_18_label aria-expanded=false> <label class=md-nav__title for=__nav_2_18> <span class="md-nav__icon md-icon"></span> Types </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/types/number_handling/ class=md-nav__link> <span class=md-ellipsis> Number Handling </span> </a> </li> </ul> </nav> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_3> <div class="md-nav__link md-nav__container"> <a href=../../../integration/ class="md-nav__link "> <span class=md-ellipsis> Integration </span> </a> <label class="md-nav__link " for=__nav_3 id=__nav_3_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_3_label aria-expanded=false> <label class=md-nav__title for=__nav_3> <span class="md-nav__icon md-icon"></span> Integration </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../integration/migration_guide/ class=md-nav__link> <span class=md-ellipsis> Migration Guide </span> </a> </li> <li class=md-nav__item> <a href=../../../integration/cmake/ class=md-nav__link> <span class=md-ellipsis> CMake </span> </a> </li> <li class=md-nav__item> <a href=../../../integration/package_managers/ class=md-nav__link> <span class=md-ellipsis> Package Managers </span> </a> </li> <li class=md-nav__item> <a href=../../../integration/pkg-config/ class=md-nav__link> <span class=md-ellipsis> Pkg-config </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--active md-nav__item--section md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4 checked> <label class=md-nav__link for=__nav_4 id=__nav_4_label tabindex> <span class=md-ellipsis> API Documentation </span> <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_4_label aria-expanded=true> <label class=md-nav__title for=__nav_4> <span class="md-nav__icon md-icon"></span> API Documentation </label> <ul class=md-nav__list data-md-scrollfix> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_1> <div class="md-nav__link md-nav__container"> <a href=../../basic_json/ class="md-nav__link "> <span class=md-ellipsis> basic_json </span> </a> <label class="md-nav__link " for=__nav_4_1 id=__nav_4_1_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_1_label aria-expanded=false> <label class=md-nav__title for=__nav_4_1> <span class="md-nav__icon md-icon"></span> basic_json </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../basic_json/basic_json/ class=md-nav__link> <span class=md-ellipsis> (Constructor) </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/~basic_json/ class=md-nav__link> <span class=md-ellipsis> (Destructor) </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/accept/ class=md-nav__link> <span class=md-ellipsis> accept </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/array/ class=md-nav__link> <span class=md-ellipsis> array </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/array_t/ class=md-nav__link> <span class=md-ellipsis> array_t </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/at/ class=md-nav__link> <span class=md-ellipsis> at </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/back/ class=md-nav__link> <span class=md-ellipsis> back </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/begin/ class=md-nav__link> <span class=md-ellipsis> begin </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/binary/ class=md-nav__link> <span class=md-ellipsis> binary </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/binary_t/ class=md-nav__link> <span class=md-ellipsis> binary_t </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/boolean_t/ class=md-nav__link> <span class=md-ellipsis> boolean_t </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/cbegin/ class=md-nav__link> <span class=md-ellipsis> cbegin </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/cbor_tag_handler_t/ class=md-nav__link> <span class=md-ellipsis> cbor_tag_handler_t </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/cend/ class=md-nav__link> <span class=md-ellipsis> cend </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/clear/ class=md-nav__link> <span class=md-ellipsis> clear </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/contains/ class=md-nav__link> <span class=md-ellipsis> contains </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/count/ class=md-nav__link> <span class=md-ellipsis> count </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/crbegin/ class=md-nav__link> <span class=md-ellipsis> crbegin </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/crend/ class=md-nav__link> <span class=md-ellipsis> crend </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/default_object_comparator_t/ class=md-nav__link> <span class=md-ellipsis> default_object_comparator_t </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/diff/ class=md-nav__link> <span class=md-ellipsis> diff </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/dump/ class=md-nav__link> <span class=md-ellipsis> dump </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/emplace/ class=md-nav__link> <span class=md-ellipsis> emplace </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/emplace_back/ class=md-nav__link> <span class=md-ellipsis> emplace_back </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/empty/ class=md-nav__link> <span class=md-ellipsis> empty </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/end/ class=md-nav__link> <span class=md-ellipsis> end </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/end_pos/ class=md-nav__link> <span class=md-ellipsis> end_pos </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/erase/ class=md-nav__link> <span class=md-ellipsis> erase </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/error_handler_t/ class=md-nav__link> <span class=md-ellipsis> error_handler_t </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/exception/ class=md-nav__link> <span class=md-ellipsis> exception </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/find/ class=md-nav__link> <span class=md-ellipsis> find </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/flatten/ class=md-nav__link> <span class=md-ellipsis> flatten </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/from_bjdata/ class=md-nav__link> <span class=md-ellipsis> from_bjdata </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/from_bson/ class=md-nav__link> <span class=md-ellipsis> from_bson </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/from_cbor/ class=md-nav__link> <span class=md-ellipsis> from_cbor </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/from_msgpack/ class=md-nav__link> <span class=md-ellipsis> from_msgpack </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/from_ubjson/ class=md-nav__link> <span class=md-ellipsis> from_ubjson </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/front/ class=md-nav__link> <span class=md-ellipsis> front </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/get/ class=md-nav__link> <span class=md-ellipsis> get </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/get_allocator/ class=md-nav__link> <span class=md-ellipsis> get_allocator </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/get_binary/ class=md-nav__link> <span class=md-ellipsis> get_binary </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/get_ptr/ class=md-nav__link> <span class=md-ellipsis> get_ptr </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/get_ref/ class=md-nav__link> <span class=md-ellipsis> get_ref </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/get_to/ class=md-nav__link> <span class=md-ellipsis> get_to </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/std_hash/ class=md-nav__link> <span class=md-ellipsis> std::hash&lt;basic_json&gt; </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/input_format_t/ class=md-nav__link> <span class=md-ellipsis> input_format_t </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/insert/ class=md-nav__link> <span class=md-ellipsis> insert </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/invalid_iterator/ class=md-nav__link> <span class=md-ellipsis> invalid_iterator </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/is_array/ class=md-nav__link> <span class=md-ellipsis> is_array </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/is_binary/ class=md-nav__link> <span class=md-ellipsis> is_binary </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/is_boolean/ class=md-nav__link> <span class=md-ellipsis> is_boolean </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/is_discarded/ class=md-nav__link> <span class=md-ellipsis> is_discarded </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/is_null/ class=md-nav__link> <span class=md-ellipsis> is_null </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/is_number/ class=md-nav__link> <span class=md-ellipsis> is_number </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/is_number_float/ class=md-nav__link> <span class=md-ellipsis> is_number_float </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/is_number_integer/ class=md-nav__link> <span class=md-ellipsis> is_number_integer </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/is_number_unsigned/ class=md-nav__link> <span class=md-ellipsis> is_number_unsigned </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/is_object/ class=md-nav__link> <span class=md-ellipsis> is_object </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/is_primitive/ class=md-nav__link> <span class=md-ellipsis> is_primitive </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/is_string/ class=md-nav__link> <span class=md-ellipsis> is_string </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/is_structured/ class=md-nav__link> <span class=md-ellipsis> is_structured </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/items/ class=md-nav__link> <span class=md-ellipsis> items </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/json_base_class_t/ class=md-nav__link> <span class=md-ellipsis> json_base_class_t </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/json_serializer/ class=md-nav__link> <span class=md-ellipsis> json_serializer </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/max_size/ class=md-nav__link> <span class=md-ellipsis> max_size </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/meta/ class=md-nav__link> <span class=md-ellipsis> meta </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/merge_patch/ class=md-nav__link> <span class=md-ellipsis> merge_patch </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/number_float_t/ class=md-nav__link> <span class=md-ellipsis> number_float_t </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/number_integer_t/ class=md-nav__link> <span class=md-ellipsis> number_integer_t </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/number_unsigned_t/ class=md-nav__link> <span class=md-ellipsis> number_unsigned_t </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/object/ class=md-nav__link> <span class=md-ellipsis> object </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/object_comparator_t/ class=md-nav__link> <span class=md-ellipsis> object_comparator_t </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/object_t/ class=md-nav__link> <span class=md-ellipsis> object_t </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/operator_ValueType/ class=md-nav__link> <span class=md-ellipsis> operator ValueType </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/operator_value_t/ class=md-nav__link> <span class=md-ellipsis> operator value_t </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/operator%5B%5D/ class=md-nav__link> <span class=md-ellipsis> operator[] </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/operator%3D/ class=md-nav__link> <span class=md-ellipsis> operator= </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/operator%2B%3D/ class=md-nav__link> <span class=md-ellipsis> operator+= </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/operator_eq/ class=md-nav__link> <span class=md-ellipsis> operator== </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/operator_ne/ class=md-nav__link> <span class=md-ellipsis> operator!= </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/operator_lt/ class=md-nav__link> <span class=md-ellipsis> operator< </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/operator_gt/ class=md-nav__link> <span class=md-ellipsis> operator> </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/operator_le/ class=md-nav__link> <span class=md-ellipsis> operator<= </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/operator_ge/ class=md-nav__link> <span class=md-ellipsis> operator>= </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/operator_spaceship/ class=md-nav__link> <span class=md-ellipsis> operator<=> </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/out_of_range/ class=md-nav__link> <span class=md-ellipsis> out_of_range </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/other_error/ class=md-nav__link> <span class=md-ellipsis> other_error </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/parse/ class=md-nav__link> <span class=md-ellipsis> parse </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/parse_error/ class=md-nav__link> <span class=md-ellipsis> parse_error </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/parse_event_t/ class=md-nav__link> <span class=md-ellipsis> parse_event_t </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/parser_callback_t/ class=md-nav__link> <span class=md-ellipsis> parser_callback_t </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/patch/ class=md-nav__link> <span class=md-ellipsis> patch </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/patch_inplace/ class=md-nav__link> <span class=md-ellipsis> patch_inplace </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/push_back/ class=md-nav__link> <span class=md-ellipsis> push_back </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/rbegin/ class=md-nav__link> <span class=md-ellipsis> rbegin </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/rend/ class=md-nav__link> <span class=md-ellipsis> rend </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/sax_parse/ class=md-nav__link> <span class=md-ellipsis> sax_parse </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/size/ class=md-nav__link> <span class=md-ellipsis> size </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/start_pos/ class=md-nav__link> <span class=md-ellipsis> start_pos </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/string_t/ class=md-nav__link> <span class=md-ellipsis> string_t </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/swap/ class=md-nav__link> <span class=md-ellipsis> swap </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/std_swap/ class=md-nav__link> <span class=md-ellipsis> std::swap&lt;basic_json&gt; </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/to_bjdata/ class=md-nav__link> <span class=md-ellipsis> to_bjdata </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/to_bson/ class=md-nav__link> <span class=md-ellipsis> to_bson </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/to_cbor/ class=md-nav__link> <span class=md-ellipsis> to_cbor </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/to_msgpack/ class=md-nav__link> <span class=md-ellipsis> to_msgpack </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/to_string/ class=md-nav__link> <span class=md-ellipsis> to_string </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/to_ubjson/ class=md-nav__link> <span class=md-ellipsis> to_ubjson </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/type/ class=md-nav__link> <span class=md-ellipsis> type </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/type_error/ class=md-nav__link> <span class=md-ellipsis> type_error </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/type_name/ class=md-nav__link> <span class=md-ellipsis> type_name </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/unflatten/ class=md-nav__link> <span class=md-ellipsis> unflatten </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/update/ class=md-nav__link> <span class=md-ellipsis> update </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/value/ class=md-nav__link> <span class=md-ellipsis> value </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/value_t/ class=md-nav__link> <span class=md-ellipsis> value_t </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_2> <div class="md-nav__link md-nav__container"> <a href=../../byte_container_with_subtype/ class="md-nav__link "> <span class=md-ellipsis> byte_container_with_subtype </span> </a> <label class="md-nav__link " for=__nav_4_2 id=__nav_4_2_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_2_label aria-expanded=false> <label class=md-nav__title for=__nav_4_2> <span class="md-nav__icon md-icon"></span> byte_container_with_subtype </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../byte_container_with_subtype/byte_container_with_subtype/ class=md-nav__link> <span class=md-ellipsis> (constructor) </span> </a> </li> <li class=md-nav__item> <a href=../../byte_container_with_subtype/clear_subtype/ class=md-nav__link> <span class=md-ellipsis> clear_subtype </span> </a> </li> <li class=md-nav__item> <a href=../../byte_container_with_subtype/has_subtype/ class=md-nav__link> <span class=md-ellipsis> has_subtype </span> </a> </li> <li class=md-nav__item> <a href=../../byte_container_with_subtype/set_subtype/ class=md-nav__link> <span class=md-ellipsis> set_subtype </span> </a> </li> <li class=md-nav__item> <a href=../../byte_container_with_subtype/subtype/ class=md-nav__link> <span class=md-ellipsis> subtype </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_3> <div class="md-nav__link md-nav__container"> <a href=../../adl_serializer/ class="md-nav__link "> <span class=md-ellipsis> adl_serializer </span> </a> <label class="md-nav__link " for=__nav_4_3 id=__nav_4_3_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_3_label aria-expanded=false> <label class=md-nav__title for=__nav_4_3> <span class="md-nav__icon md-icon"></span> adl_serializer </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../adl_serializer/from_json/ class=md-nav__link> <span class=md-ellipsis> from_json </span> </a> </li> <li class=md-nav__item> <a href=../../adl_serializer/to_json/ class=md-nav__link> <span class=md-ellipsis> to_json </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../json/ class=md-nav__link> <span class=md-ellipsis> json </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_5> <div class="md-nav__link md-nav__container"> <a href=../../json_pointer/ class="md-nav__link "> <span class=md-ellipsis> json_pointer </span> </a> <label class="md-nav__link " for=__nav_4_5 id=__nav_4_5_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_5_label aria-expanded=false> <label class=md-nav__title for=__nav_4_5> <span class="md-nav__icon md-icon"></span> json_pointer </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../json_pointer/json_pointer/ class=md-nav__link> <span class=md-ellipsis> (Constructor) </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/back/ class=md-nav__link> <span class=md-ellipsis> back </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/empty/ class=md-nav__link> <span class=md-ellipsis> empty </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/front/ class=md-nav__link> <span class=md-ellipsis> front </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_string_t/ class=md-nav__link> <span class=md-ellipsis> operator string_t </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_eq/ class=md-nav__link> <span class=md-ellipsis> operator== </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_ne/ class=md-nav__link> <span class=md-ellipsis> operator!= </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_slash/ class=md-nav__link> <span class=md-ellipsis> operator/ </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_slasheq/ class=md-nav__link> <span class=md-ellipsis> operator/= </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/parent_pointer/ class=md-nav__link> <span class=md-ellipsis> parent_pointer </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/pop_back/ class=md-nav__link> <span class=md-ellipsis> pop_back </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/pop_front/ class=md-nav__link> <span class=md-ellipsis> pop_front </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/push_back/ class=md-nav__link> <span class=md-ellipsis> push_back </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/push_front/ class=md-nav__link> <span class=md-ellipsis> push_front </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/string_t/ class=md-nav__link> <span class=md-ellipsis> string_t </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/to_string/ class=md-nav__link> <span class=md-ellipsis> to_string </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_6> <div class="md-nav__link md-nav__container"> <a href=../../json_sax/ class="md-nav__link "> <span class=md-ellipsis> json_sax </span> </a> <label class="md-nav__link " for=__nav_4_6 id=__nav_4_6_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_6_label aria-expanded=false> <label class=md-nav__title for=__nav_4_6> <span class="md-nav__icon md-icon"></span> json_sax </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../json_sax/binary/ class=md-nav__link> <span class=md-ellipsis> binary </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/boolean/ class=md-nav__link> <span class=md-ellipsis> boolean </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/end_array/ class=md-nav__link> <span class=md-ellipsis> end_array </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/end_object/ class=md-nav__link> <span class=md-ellipsis> end_object </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/key/ class=md-nav__link> <span class=md-ellipsis> key </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/null/ class=md-nav__link> <span class=md-ellipsis> null </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/number_float/ class=md-nav__link> <span class=md-ellipsis> number_float </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/number_integer/ class=md-nav__link> <span class=md-ellipsis> number_integer </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/number_unsigned/ class=md-nav__link> <span class=md-ellipsis> number_unsigned </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/parse_error/ class=md-nav__link> <span class=md-ellipsis> parse_error </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/start_array/ class=md-nav__link> <span class=md-ellipsis> start_array </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/start_object/ class=md-nav__link> <span class=md-ellipsis> start_object </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/string/ class=md-nav__link> <span class=md-ellipsis> string </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../operator_ltlt/ class=md-nav__link> <span class=md-ellipsis> operator<<(basic_json), operator<<(json_pointer) </span> </a> </li> <li class=md-nav__item> <a href=../../operator_gtgt/ class=md-nav__link> <span class=md-ellipsis> operator>>(basic_json) </span> </a> </li> <li class=md-nav__item> <a href=../../operator_literal_json/ class=md-nav__link> <span class=md-ellipsis> operator""_json </span> </a> </li> <li class=md-nav__item> <a href=../../operator_literal_json_pointer/ class=md-nav__link> <span class=md-ellipsis> operator""_json_pointer </span> </a> </li> <li class=md-nav__item> <a href=../../ordered_json/ class=md-nav__link> <span class=md-ellipsis> ordered_json </span> </a> </li> <li class=md-nav__item> <a href=../../ordered_map/ class=md-nav__link> <span class=md-ellipsis> ordered_map </span> </a> </li> <li class="md-nav__item md-nav__item--active md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_13 checked> <div class="md-nav__link md-nav__container"> <a href=../ class="md-nav__link "> <span class=md-ellipsis> macros </span> </a> <label class="md-nav__link " for=__nav_4_13 id=__nav_4_13_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_13_label aria-expanded=true> <label class=md-nav__title for=__nav_4_13> <span class="md-nav__icon md-icon"></span> macros </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../json_assert/ class=md-nav__link> <span class=md-ellipsis> JSON_ASSERT </span> </a> </li> <li class=md-nav__item> <a href=../json_brace_init_copy_semantics/ class=md-nav__link> <span class=md-ellipsis> JSON_BRACE_INIT_COPY_SEMANTICS </span> </a> </li> <li class=md-nav__item> <a href=../json_throw_user/ class=md-nav__link> <span class=md-ellipsis> JSON_CATCH_USER, JSON_THROW_USER, JSON_TRY_USER </span> </a> </li> <li class=md-nav__item> <a href=../json_diagnostics/ class=md-nav__link> <span class=md-ellipsis> JSON_DIAGNOSTICS </span> </a> </li> <li class=md-nav__item> <a href=../json_diagnostic_positions/ class=md-nav__link> <span class=md-ellipsis> JSON_DIAGNOSTIC_POSITIONS </span> </a> </li> <li class=md-nav__item> <a href=../json_disable_enum_serialization/ class=md-nav__link> <span class=md-ellipsis> JSON_DISABLE_ENUM_SERIALIZATION </span> </a> </li> <li class="md-nav__item md-nav__item--active"> <input class="md-nav__toggle md-toggle" type=checkbox id=__toc> <label class="md-nav__link md-nav__link--active" for=__toc> <span class=md-ellipsis> JSON_HAS_CPP_11, JSON_HAS_CPP_14, JSON_HAS_CPP_17, JSON_HAS_CPP_20 </span> <span class="md-nav__icon md-icon"></span> </label> <a href=./ class="md-nav__link md-nav__link--active"> <span class=md-ellipsis> JSON_HAS_CPP_11, JSON_HAS_CPP_14, JSON_HAS_CPP_17, JSON_HAS_CPP_20 </span> </a> <nav class="md-nav md-nav--secondary" aria-label="Table of contents"> <label class=md-nav__title for=__toc> <span class="md-nav__icon md-icon"></span> Table of contents </label> <ul class=md-nav__list data-md-component=toc data-md-scrollfix> <li class=md-nav__item> <a href=#default-definition class=md-nav__link> <span class=md-ellipsis> Default definition </span> </a> </li> <li class=md-nav__item> <a href=#notes class=md-nav__link> <span class=md-ellipsis> Notes </span> </a> </li> <li class=md-nav__item> <a href=#examples class=md-nav__link> <span class=md-ellipsis> Examples </span> </a> </li> <li class=md-nav__item> <a href=#version-history class=md-nav__link> <span class=md-ellipsis> Version history </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../json_has_filesystem/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_EXPERIMENTAL_FILESYSTEM, JSON_HAS_FILESYSTEM </span> </a> </li> <li class=md-nav__item> <a href=../json_has_ranges/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_RANGES </span> </a> </li> <li class=md-nav__item> <a href=../json_has_static_rtti/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_STATIC_RTTI </span> </a> </li> <li class=md-nav__item> <a href=../json_has_three_way_comparison/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_THREE_WAY_COMPARISON </span> </a> </li> <li class=md-nav__item> <a href=../json_noexception/ class=md-nav__link> <span class=md-ellipsis> JSON_NOEXCEPTION </span> </a> </li> <li class=md-nav__item> <a href=../json_no_io/ class=md-nav__link> <span class=md-ellipsis> JSON_NO_IO </span> </a> </li> <li class=md-nav__item> <a href=../json_skip_library_version_check/ class=md-nav__link> <span class=md-ellipsis> JSON_SKIP_LIBRARY_VERSION_CHECK </span> </a> </li> <li class=md-nav__item> <a href=../json_skip_unsupported_compiler_check/ class=md-nav__link> <span class=md-ellipsis> JSON_SKIP_UNSUPPORTED_COMPILER_CHECK </span> </a> </li> <li class=md-nav__item> <a href=../json_use_global_udls/ class=md-nav__link> <span class=md-ellipsis> JSON_USE_GLOBAL_UDLS </span> </a> </li> <li class=md-nav__item> <a href=../json_use_implicit_conversions/ class=md-nav__link> <span class=md-ellipsis> JSON_USE_IMPLICIT_CONVERSIONS </span> </a> </li> <li class=md-nav__item> <a href=../json_use_legacy_discarded_value_comparison/ class=md-nav__link> <span class=md-ellipsis> JSON_USE_LEGACY_DISCARDED_VALUE_COMPARISON </span> </a> </li> <li class=md-nav__item> <a href=../nlohmann_define_derived_type/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_ONLY_SERIALIZE, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE </span> </a> </li> <li class=md-nav__item> <a href=../nlohmann_define_type_intrusive/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_TYPE_INTRUSIVE, NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_TYPE_INTRUSIVE_ONLY_SERIALIZE </span> </a> </li> <li class=md-nav__item> <a href=../nlohmann_define_type_non_intrusive/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE </span> </a> </li> <li class=md-nav__item> <a href=../nlohmann_define_type_with_names/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_TYPE_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES </span> </a> </li> <li class=md-nav__item> <a href=../nlohmann_json_namespace/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_NAMESPACE </span> </a> </li> <li class=md-nav__item> <a href=../nlohmann_json_namespace_begin/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_NAMESPACE_BEGIN, NLOHMANN_JSON_NAMESPACE_END </span> </a> </li> <li class=md-nav__item> <a href=../nlohmann_json_namespace_no_version/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_NAMESPACE_NO_VERSION </span> </a> </li> <li class=md-nav__item> <a href=../nlohmann_json_serialize_enum/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_SERIALIZE_ENUM </span> </a> </li> <li class=md-nav__item> <a href=../nlohmann_json_serialize_enum_strict/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_SERIALIZE_ENUM_STRICT </span> </a> </li> <li class=md-nav__item> <a href=../nlohmann_json_version_major/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_VERSION_MAJOR, NLOHMANN_JSON_VERSION_MINOR, NLOHMANN_JSON_VERSION_PATCH </span> </a> </li> </ul> </nav> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_5> <div class="md-nav__link md-nav__container"> <a href=../../../community/ class="md-nav__link "> <span class=md-ellipsis> Community </span> </a> <label class="md-nav__link " for=__nav_5 id=__nav_5_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_5_label aria-expanded=false> <label class=md-nav__title for=__nav_5> <span class="md-nav__icon md-icon"></span> Community </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../community/code_of_conduct/ class=md-nav__link> <span class=md-ellipsis> Code of Conduct </span> </a> </li> <li class=md-nav__item> <a href=../../../community/contribution_guidelines/ class=md-nav__link> <span class=md-ellipsis> Contribution Guidelines </span> </a> </li> <li class=md-nav__item> <a href=../../../community/quality_assurance/ class=md-nav__link> <span class=md-ellipsis> Quality assurance </span> </a> </li> <li class=md-nav__item> <a href=../../../community/governance/ class=md-nav__link> <span class=md-ellipsis> Governance </span> </a> </li> <li class=md-nav__item> <a href=../../../community/security_policy/ class=md-nav__link> <span class=md-ellipsis> Security Policy </span> </a> </li> </ul> </nav> </li> </ul> </nav> </div> </div> </div> <div class="md-sidebar md-sidebar--secondary" data-md-component=sidebar data-md-type=toc> <div class=md-sidebar__scrollwrap> <div class=md-sidebar__inner> <nav class="md-nav md-nav--secondary" aria-label="Table of contents"> <label class=md-nav__title for=__toc> <span class="md-nav__icon md-icon"></span> Table of contents </label> <ul class=md-nav__list data-md-component=toc data-md-scrollfix> <li class=md-nav__item> <a href=#default-definition class=md-nav__link> <span class=md-ellipsis> Default definition </span> </a> </li> <li class=md-nav__item> <a href=#notes class=md-nav__link> <span class=md-ellipsis> Notes </span> </a> </li> <li class=md-nav__item> <a href=#examples class=md-nav__link> <span class=md-ellipsis> Examples </span> </a> </li> <li class=md-nav__item> <a href=#version-history class=md-nav__link> <span class=md-ellipsis> Version history </span> </a> </li> </ul> </nav> </div> </div> </div> <div class=md-content data-md-component=content> <article class="md-content__inner md-typeset"> <a href="https://github.com/nlohmann/json/edit/develop/docs/mkdocs/docs/api/macros/json_has_cpp_11.md" title="Edit this page" class="md-content__button md-icon" rel="edit"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M10 20H6V4h7v5h5v3.1l2-2V8l-6-6H6c-1.1 0-2 .9-2 2v16c0 1.1.9 2 2 2h4zm10.2-7c.1 0 .3.1.4.2l1.3 1.3c.2.2.2.6 0 .8l-1 1-2.1-2.1 1-1c.1-.1.2-.2.4-.2m0 3.9L14.1 23H12v-2.1l6.1-6.1z"/></svg> </a> <a href="https://github.com/nlohmann/json/raw/develop/docs/mkdocs/docs/api/macros/json_has_cpp_11.md" title="View source of this page" class="md-content__button md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M17 18c.56 0 1 .44 1 1s-.44 1-1 1-1-.44-1-1 .44-1 1-1m0-3c-2.73 0-5.06 1.66-6 4 .94 2.34 3.27 4 6 4s5.06-1.66 6-4c-.94-2.34-3.27-4-6-4m0 6.5a2.5 2.5 0 0 1-2.5-2.5 2.5 2.5 0 0 1 2.5-2.5 2.5 2.5 0 0 1 2.5 2.5 2.5 2.5 0 0 1-2.5 2.5M9.27 20H6V4h7v5h5v4.07c.7.08 1.36.25 2 .49V8l-6-6H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h4.5a8.2 8.2 0 0 1-1.23-2"/></svg> </a> <h1 id=json_has_cpp_11-json_has_cpp_14-json_has_cpp_17-json_has_cpp_20-json_has_cpp_23-json_has_cpp_26>JSON_HAS_CPP_11, JSON_HAS_CPP_14, JSON_HAS_CPP_17, JSON_HAS_CPP_20, JSON_HAS_CPP_23, JSON_HAS_CPP_26<a class=headerlink href=#json_has_cpp_11-json_has_cpp_14-json_has_cpp_17-json_has_cpp_20-json_has_cpp_23-json_has_cpp_26 title="Permanent link">&para;</a></h1> <div class=highlight><pre><span></span><code><span class=cp>#define JSON_HAS_CPP_11</span>
 <span class=cp>#define JSON_HAS_CPP_14</span>
 <span class=cp>#define JSON_HAS_CPP_17</span>
 <span class=cp>#define JSON_HAS_CPP_20</span>
-</code></pre></div> <p>The library targets C++11, but also supports some features introduced in later C++ versions (e.g., <code>std::string_view</code> support for C++17). For these new features, the library implements some preprocessor checks to determine the C++ standard. By defining any of these symbols, the internal check is overridden and the provided C++ version is unconditionally assumed. This can be helpful for compilers that only implement parts of the standard and would be detected incorrectly.</p> <h2 id=default-definition>Default definition<a class=headerlink href=#default-definition title="Permanent link">&para;</a></h2> <p>The default value is detected based on preprocessor macros such as <code class=highlight><span class=n>__cplusplus</span></code>, <code class=highlight><span class=n>_HAS_CXX17</span></code>, or <code class=highlight><span class=n>_MSVC_LANG</span></code>.</p> <h2 id=notes>Notes<a class=headerlink href=#notes title="Permanent link">&para;</a></h2> <ul> <li><code class=highlight><span class=n>JSON_HAS_CPP_11</span></code> is always defined.</li> <li>All macros are undefined outside the library.</li> </ul> <h2 id=examples>Examples<a class=headerlink href=#examples title="Permanent link">&para;</a></h2> <details class=example> <summary>Example</summary> <p>The code below forces the library to use the C++14 standard:</p> <div class=highlight><pre><span></span><code><span class=cp>#define JSON_HAS_CPP_14 1</span>
+<span class=cp>#define JSON_HAS_CPP_23</span>
+<span class=cp>#define JSON_HAS_CPP_26</span>
+</code></pre></div> <p>The library targets C++11, but also supports some features introduced in later C++ versions (e.g., <code>std::string_view</code> support for C++17). For these new features, the library implements some preprocessor checks to determine the C++ standard. By defining any of these symbols, the internal check is overridden and the provided C++ version is unconditionally assumed. This can be helpful for compilers that only implement parts of the standard and would be detected incorrectly.</p> <h2 id=default-definition>Default definition<a class=headerlink href=#default-definition title="Permanent link">&para;</a></h2> <p>The default value is detected based on preprocessor macros such as <code class=highlight><span class=n>__cplusplus</span></code>, <code class=highlight><span class=n>_HAS_CXX17</span></code>, or <code class=highlight><span class=n>_MSVC_LANG</span></code>.</p> <h2 id=notes>Notes<a class=headerlink href=#notes title="Permanent link">&para;</a></h2> <ul> <li>When the C++ standard is detected automatically, <code class=highlight><span class=n>JSON_HAS_CPP_11</span></code> is always defined. When you override the detection by defining one of these macros manually, the automatic detection is skipped entirely, so you should define all applicable macros (including <code class=highlight><span class=n>JSON_HAS_CPP_11</span></code>) yourself.</li> <li>All macros are undefined outside the library.</li> </ul> <h2 id=examples>Examples<a class=headerlink href=#examples title="Permanent link">&para;</a></h2> <details class=example> <summary>Example</summary> <p>The code below forces the library to use the C++14 standard:</p> <div class=highlight><pre><span></span><code><span class=cp>#define JSON_HAS_CPP_14 1</span>
 <span class=cp>#include</span><span class=w> </span><span class=cpf>&lt;nlohmann/json.hpp&gt;</span>
 
 <span class=p>...</span>
-</code></pre></div> </details> <h2 id=version-history>Version history<a class=headerlink href=#version-history title="Permanent link">&para;</a></h2> <ul> <li>Added in version 3.10.5.</li> </ul> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 23, 2026 11:16:18 UTC">June 23, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
+</code></pre></div> </details> <h2 id=version-history>Version history<a class=headerlink href=#version-history title="Permanent link">&para;</a></h2> <ul> <li>Added in version 3.10.5.</li> <li>Added <code>JSON_HAS_CPP_23</code> in version 3.12.0.</li> <li>Added <code>JSON_HAS_CPP_26</code> in version 3.12.x.</li> </ul> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 29, 2026 20:15:18 UTC">June 29, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
diff --git a/api/macros/json_has_filesystem/index.html b/api/macros/json_has_filesystem/index.html
index f6edd42..7577e5f 100644
--- a/api/macros/json_has_filesystem/index.html
+++ b/api/macros/json_has_filesystem/index.html
@@ -1,7 +1,7 @@
 <!doctype html><html lang=en class=no-js> <head><meta charset=utf-8><meta name=viewport content="width=device-width,initial-scale=1"><meta name=author content="Niels Lohmann"><link href="https://json.nlohmann.me/api/macros/json_has_filesystem/" rel="canonical"><link href=../json_has_cpp_11/ rel=prev><link href=../json_has_ranges/ rel=next><link rel=icon href=../../../assets/images/favicon.png><meta name=generator content="mkdocs-1.6.1, mkdocs-material-9.7.6"><title>JSON_HAS_EXPERIMENTAL_FILESYSTEM, JSON_HAS_FILESYSTEM - JSON for Modern C++</title><link rel=stylesheet href=../../../assets/stylesheets/main.484c7ddc.min.css><link rel=stylesheet href=../../../assets/stylesheets/palette.ab4e12ef.min.css><link rel="stylesheet" href="../../../assets/external/fonts.googleapis.com/css.61a430c9.css"><style>:root{--md-text-font:"Roboto";--md-code-font:"JetBrains Mono"}</style><link rel=stylesheet href=../../../css/custom.css><script>__md_scope=new URL("../../..",location),__md_hash=e=>[...e].reduce(((e,_)=>(e<<5)-e+_.charCodeAt(0)),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script></head> <body dir=ltr data-md-color-scheme=default data-md-color-primary=indigo data-md-color-accent=indigo> <input class=md-toggle data-md-toggle=drawer type=checkbox id=__drawer autocomplete=off> <input class=md-toggle data-md-toggle=search type=checkbox id=__search autocomplete=off> <label class=md-overlay for=__drawer></label> <div data-md-component=skip> <a href=#json_has_filesystem-json_has_experimental_filesystem class=md-skip> Skip to content </a> </div> <div data-md-component=announce> </div> <header class=md-header data-md-component=header> <nav class="md-header__inner md-grid" aria-label=Header> <a href=../../.. title="JSON for Modern C++" class="md-header__button md-logo" aria-label="JSON for Modern C++" data-md-component=logo> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54"/></svg> </a> <label class="md-header__button md-icon" for=__drawer> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M3 6h18v2H3zm0 5h18v2H3zm0 5h18v2H3z"/></svg> </label> <div class=md-header__title data-md-component=header-title> <div class=md-header__ellipsis> <div class=md-header__topic> <span class=md-ellipsis> JSON for Modern C++ </span> </div> <div class=md-header__topic data-md-component=header-topic> <span class=md-ellipsis> JSON_HAS_EXPERIMENTAL_FILESYSTEM, JSON_HAS_FILESYSTEM </span> </div> </div> </div> <form class=md-header__option data-md-component=palette> <input class=md-option data-md-color-media="(prefers-color-scheme: light)" data-md-color-scheme=default data-md-color-primary=indigo data-md-color-accent=indigo aria-label="Switch to dark mode" type=radio name=__palette id=__palette_0> <label class="md-header__button md-icon" title="Switch to dark mode" for=__palette_1 hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a4 4 0 0 0-4 4 4 4 0 0 0 4 4 4 4 0 0 0 4-4 4 4 0 0 0-4-4m0 10a6 6 0 0 1-6-6 6 6 0 0 1 6-6 6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12z"/></svg> </label> <input class=md-option data-md-color-media="(prefers-color-scheme: dark)" data-md-color-scheme=slate data-md-color-primary=indigo data-md-color-accent=indigo aria-label="Switch to light mode" type=radio name=__palette id=__palette_1> <label class="md-header__button md-icon" title="Switch to light mode" for=__palette_0 hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 18c-.89 0-1.74-.2-2.5-.55C11.56 16.5 13 14.42 13 12s-1.44-4.5-3.5-5.45C10.26 6.2 11.11 6 12 6a6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12z"/></svg> </label> </form> <script>var palette=__md_get("__palette");if(palette&&palette.color){if("(prefers-color-scheme)"===palette.color.media){var media=matchMedia("(prefers-color-scheme: light)"),input=document.querySelector(media.matches?"[data-md-color-media='(prefers-color-scheme: light)']":"[data-md-color-media='(prefers-color-scheme: dark)']");palette.color.media=input.getAttribute("data-md-color-media"),palette.color.scheme=input.getAttribute("data-md-color-scheme"),palette.color.primary=input.getAttribute("data-md-color-primary"),palette.color.accent=input.getAttribute("data-md-color-accent")}for(var[key,value]of Object.entries(palette.color))document.body.setAttribute("data-md-color-"+key,value)}</script> <label class="md-header__button md-icon" for=__search> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg> </label> <div class=md-search data-md-component=search role=dialog> <label class=md-search__overlay for=__search></label> <div class=md-search__inner role=search> <form class=md-search__form name=search> <input type=text class=md-search__input name=query aria-label=Search placeholder=Search autocapitalize=off autocorrect=off autocomplete=off spellcheck=false data-md-component=search-query required> <label class="md-search__icon md-icon" for=__search> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11z"/></svg> </label> <nav class=md-search__options aria-label=Search> <button type=reset class="md-search__icon md-icon" title=Clear aria-label=Clear tabindex=-1> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z"/></svg> </button> </nav> </form> <div class=md-search__output> <div class=md-search__scrollwrap tabindex=0 data-md-scrollfix> <div class=md-search-result data-md-component=search-result> <div class=md-search-result__meta> Initializing search </div> <ol class=md-search-result__list role=presentation></ol> </div> </div> </div> </div> </div> <div class=md-header__source> <a href="https://github.com/nlohmann/json" title="Go to repository" class="md-source" data-md-component="source"> <div class="md-source__icon md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </div> <div class=md-source__repository> nlohmann/json </div> </a> </div> </nav> </header> <div class=md-container data-md-component=container> <nav class=md-tabs aria-label=Tabs data-md-component=tabs> <div class=md-grid> <ul class=md-tabs__list> <li class=md-tabs__item> <a href=../../.. class=md-tabs__link> Home </a> </li> <li class=md-tabs__item> <a href=../../../features/arbitrary_types/ class=md-tabs__link> Features </a> </li> <li class=md-tabs__item> <a href=../../../integration/ class=md-tabs__link> Integration </a> </li> <li class="md-tabs__item md-tabs__item--active"> <a href=../../basic_json/ class=md-tabs__link> API Documentation </a> </li> <li class=md-tabs__item> <a href=../../../community/ class=md-tabs__link> Community </a> </li> </ul> </div> </nav> <main class=md-main data-md-component=main> <div class="md-main__inner md-grid"> <div class="md-sidebar md-sidebar--primary" data-md-component=sidebar data-md-type=navigation> <div class=md-sidebar__scrollwrap> <div class=md-sidebar__inner> <nav class="md-nav md-nav--primary md-nav--lifted" aria-label=Navigation data-md-level=0> <label class=md-nav__title for=__drawer> <a href=../../.. title="JSON for Modern C++" class="md-nav__button md-logo" aria-label="JSON for Modern C++" data-md-component=logo> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54"/></svg> </a> JSON for Modern C++ </label> <div class=md-nav__source> <a href="https://github.com/nlohmann/json" title="Go to repository" class="md-source" data-md-component="source"> <div class="md-source__icon md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </div> <div class=md-source__repository> nlohmann/json </div> </a> </div> <ul class=md-nav__list data-md-scrollfix> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_1> <div class="md-nav__link md-nav__container"> <a href=../../.. class="md-nav__link "> <span class=md-ellipsis> Home </span> </a> <label class="md-nav__link " for=__nav_1 id=__nav_1_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_1_label aria-expanded=false> <label class=md-nav__title for=__nav_1> <span class="md-nav__icon md-icon"></span> Home </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../home/license/ class=md-nav__link> <span class=md-ellipsis> License </span> </a> </li> <li class=md-nav__item> <a href=../../../home/faq/ class=md-nav__link> <span class=md-ellipsis> FAQ </span> </a> </li> <li class=md-nav__item> <a href=../../../home/exceptions/ class=md-nav__link> <span class=md-ellipsis> Exceptions </span> </a> </li> <li class=md-nav__item> <a href=../../../home/releases/ class=md-nav__link> <span class=md-ellipsis> Releases </span> </a> </li> <li class=md-nav__item> <a href=../../../home/design_goals/ class=md-nav__link> <span class=md-ellipsis> Design goals </span> </a> </li> <li class=md-nav__item> <a href=../../../home/architecture/ class=md-nav__link> <span class=md-ellipsis> Architecture </span> </a> </li> <li class=md-nav__item> <a href=../../../home/customers/ class=md-nav__link> <span class=md-ellipsis> Customers </span> </a> </li> <li class=md-nav__item> <a href=../../../home/sponsors/ class=md-nav__link> <span class=md-ellipsis> Sponsors </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2> <label class=md-nav__link for=__nav_2 id=__nav_2_label tabindex=0> <span class=md-ellipsis> Features </span> <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_2_label aria-expanded=false> <label class=md-nav__title for=__nav_2> <span class="md-nav__icon md-icon"></span> Features </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/arbitrary_types/ class=md-nav__link> <span class=md-ellipsis> Arbitrary Type Conversions </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_2> <div class="md-nav__link md-nav__container"> <a href=../../../features/binary_formats/ class="md-nav__link "> <span class=md-ellipsis> Binary Formats </span> </a> <label class="md-nav__link " for=__nav_2_2 id=__nav_2_2_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_2_label aria-expanded=false> <label class=md-nav__title for=__nav_2_2> <span class="md-nav__icon md-icon"></span> Binary Formats </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/binary_formats/bjdata/ class=md-nav__link> <span class=md-ellipsis> BJData </span> </a> </li> <li class=md-nav__item> <a href=../../../features/binary_formats/bson/ class=md-nav__link> <span class=md-ellipsis> BSON </span> </a> </li> <li class=md-nav__item> <a href=../../../features/binary_formats/cbor/ class=md-nav__link> <span class=md-ellipsis> CBOR </span> </a> </li> <li class=md-nav__item> <a href=../../../features/binary_formats/messagepack/ class=md-nav__link> <span class=md-ellipsis> MessagePack </span> </a> </li> <li class=md-nav__item> <a href=../../../features/binary_formats/ubjson/ class=md-nav__link> <span class=md-ellipsis> UBJSON </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../../features/binary_values/ class=md-nav__link> <span class=md-ellipsis> Binary Values </span> </a> </li> <li class=md-nav__item> <a href=../../../features/comments/ class=md-nav__link> <span class=md-ellipsis> Comments </span> </a> </li> <li class=md-nav__item> <a href=../../../features/trailing_commas/ class=md-nav__link> <span class=md-ellipsis> Trailing Commas </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_6> <div class="md-nav__link md-nav__container"> <a href=../../../features/element_access/ class="md-nav__link "> <span class=md-ellipsis> Element Access </span> </a> <label class="md-nav__link " for=__nav_2_6 id=__nav_2_6_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_6_label aria-expanded=false> <label class=md-nav__title for=__nav_2_6> <span class="md-nav__icon md-icon"></span> Element Access </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/element_access/unchecked_access/ class=md-nav__link> <span class=md-ellipsis> Unchecked access: operator[] </span> </a> </li> <li class=md-nav__item> <a href=../../../features/element_access/checked_access/ class=md-nav__link> <span class=md-ellipsis> Checked access: at </span> </a> </li> <li class=md-nav__item> <a href=../../../features/element_access/default_value/ class=md-nav__link> <span class=md-ellipsis> Access with default value: value </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../../features/iterators/ class=md-nav__link> <span class=md-ellipsis> Iterators </span> </a> </li> <li class=md-nav__item> <a href=../../../features/json_pointer/ class=md-nav__link> <span class=md-ellipsis> JSON Pointer </span> </a> </li> <li class=md-nav__item> <a href=../../../features/json_patch/ class=md-nav__link> <span class=md-ellipsis> JSON Patch and Diff </span> </a> </li> <li class=md-nav__item> <a href=../../../features/merge_patch/ class=md-nav__link> <span class=md-ellipsis> JSON Merge Patch </span> </a> </li> <li class=md-nav__item> <a href=../../../features/modules/ class=md-nav__link> <span class=md-ellipsis> Modules </span> </a> </li> <li class=md-nav__item> <a href=../../../features/namespace/ class=md-nav__link> <span class=md-ellipsis> nlohmann Namespace </span> </a> </li> <li class=md-nav__item> <a href=../../../features/object_order/ class=md-nav__link> <span class=md-ellipsis> Object Order </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_14> <div class="md-nav__link md-nav__container"> <a href=../../../features/parsing/ class="md-nav__link "> <span class=md-ellipsis> Parsing </span> </a> <label class="md-nav__link " for=__nav_2_14 id=__nav_2_14_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_14_label aria-expanded=false> <label class=md-nav__title for=__nav_2_14> <span class="md-nav__icon md-icon"></span> Parsing </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/parsing/json_lines/ class=md-nav__link> <span class=md-ellipsis> JSON Lines </span> </a> </li> <li class=md-nav__item> <a href=../../../features/parsing/parse_exceptions/ class=md-nav__link> <span class=md-ellipsis> Parsing and Exceptions </span> </a> </li> <li class=md-nav__item> <a href=../../../features/parsing/parser_callbacks/ class=md-nav__link> <span class=md-ellipsis> Parser Callbacks </span> </a> </li> <li class=md-nav__item> <a href=../../../features/parsing/sax_interface/ class=md-nav__link> <span class=md-ellipsis> SAX Interface </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../../features/assertions/ class=md-nav__link> <span class=md-ellipsis> Runtime Assertions </span> </a> </li> <li class=md-nav__item> <a href=../../../features/enum_conversion/ class=md-nav__link> <span class=md-ellipsis> Specializing enum conversion </span> </a> </li> <li class=md-nav__item> <a href=../../../features/macros/ class=md-nav__link> <span class=md-ellipsis> Supported Macros </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_18> <div class="md-nav__link md-nav__container"> <a href=../../../features/types/ class="md-nav__link "> <span class=md-ellipsis> Types </span> </a> <label class="md-nav__link " for=__nav_2_18 id=__nav_2_18_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_18_label aria-expanded=false> <label class=md-nav__title for=__nav_2_18> <span class="md-nav__icon md-icon"></span> Types </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/types/number_handling/ class=md-nav__link> <span class=md-ellipsis> Number Handling </span> </a> </li> </ul> </nav> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_3> <div class="md-nav__link md-nav__container"> <a href=../../../integration/ class="md-nav__link "> <span class=md-ellipsis> Integration </span> </a> <label class="md-nav__link " for=__nav_3 id=__nav_3_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_3_label aria-expanded=false> <label class=md-nav__title for=__nav_3> <span class="md-nav__icon md-icon"></span> Integration </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../integration/migration_guide/ class=md-nav__link> <span class=md-ellipsis> Migration Guide </span> </a> </li> <li class=md-nav__item> <a href=../../../integration/cmake/ class=md-nav__link> <span class=md-ellipsis> CMake </span> </a> </li> <li class=md-nav__item> <a href=../../../integration/package_managers/ class=md-nav__link> <span class=md-ellipsis> Package Managers </span> </a> </li> <li class=md-nav__item> <a href=../../../integration/pkg-config/ class=md-nav__link> <span class=md-ellipsis> Pkg-config </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--active md-nav__item--section md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4 checked> <label class=md-nav__link for=__nav_4 id=__nav_4_label tabindex> <span class=md-ellipsis> API Documentation </span> <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_4_label aria-expanded=true> <label class=md-nav__title for=__nav_4> <span class="md-nav__icon md-icon"></span> API Documentation </label> <ul class=md-nav__list data-md-scrollfix> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_1> <div class="md-nav__link md-nav__container"> <a href=../../basic_json/ class="md-nav__link "> <span class=md-ellipsis> basic_json </span> </a> <label class="md-nav__link " for=__nav_4_1 id=__nav_4_1_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_1_label aria-expanded=false> <label class=md-nav__title for=__nav_4_1> <span class="md-nav__icon md-icon"></span> basic_json </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../basic_json/basic_json/ class=md-nav__link> <span class=md-ellipsis> (Constructor) </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/~basic_json/ class=md-nav__link> <span class=md-ellipsis> (Destructor) </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/accept/ class=md-nav__link> <span class=md-ellipsis> accept </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/array/ class=md-nav__link> <span class=md-ellipsis> array </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/array_t/ class=md-nav__link> <span class=md-ellipsis> array_t </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/at/ class=md-nav__link> <span class=md-ellipsis> at </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/back/ class=md-nav__link> <span class=md-ellipsis> back </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/begin/ class=md-nav__link> <span class=md-ellipsis> begin </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/binary/ class=md-nav__link> <span class=md-ellipsis> binary </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/binary_t/ class=md-nav__link> <span class=md-ellipsis> binary_t </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/boolean_t/ class=md-nav__link> <span class=md-ellipsis> boolean_t </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/cbegin/ class=md-nav__link> <span class=md-ellipsis> cbegin </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/cbor_tag_handler_t/ class=md-nav__link> <span class=md-ellipsis> cbor_tag_handler_t </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/cend/ class=md-nav__link> <span class=md-ellipsis> cend </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/clear/ class=md-nav__link> <span class=md-ellipsis> clear </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/contains/ class=md-nav__link> <span class=md-ellipsis> contains </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/count/ class=md-nav__link> <span class=md-ellipsis> count </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/crbegin/ class=md-nav__link> <span class=md-ellipsis> crbegin </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/crend/ class=md-nav__link> <span class=md-ellipsis> crend </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/default_object_comparator_t/ class=md-nav__link> <span class=md-ellipsis> default_object_comparator_t </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/diff/ class=md-nav__link> <span class=md-ellipsis> diff </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/dump/ class=md-nav__link> <span class=md-ellipsis> dump </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/emplace/ class=md-nav__link> <span class=md-ellipsis> emplace </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/emplace_back/ class=md-nav__link> <span class=md-ellipsis> emplace_back </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/empty/ class=md-nav__link> <span class=md-ellipsis> empty </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/end/ class=md-nav__link> <span class=md-ellipsis> end </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/end_pos/ class=md-nav__link> <span class=md-ellipsis> end_pos </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/erase/ class=md-nav__link> <span class=md-ellipsis> erase </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/error_handler_t/ class=md-nav__link> <span class=md-ellipsis> error_handler_t </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/exception/ class=md-nav__link> <span class=md-ellipsis> exception </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/find/ class=md-nav__link> <span class=md-ellipsis> find </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/flatten/ class=md-nav__link> <span class=md-ellipsis> flatten </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/from_bjdata/ class=md-nav__link> <span class=md-ellipsis> from_bjdata </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/from_bson/ class=md-nav__link> <span class=md-ellipsis> from_bson </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/from_cbor/ class=md-nav__link> <span class=md-ellipsis> from_cbor </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/from_msgpack/ class=md-nav__link> <span class=md-ellipsis> from_msgpack </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/from_ubjson/ class=md-nav__link> <span class=md-ellipsis> from_ubjson </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/front/ class=md-nav__link> <span class=md-ellipsis> front </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/get/ class=md-nav__link> <span class=md-ellipsis> get </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/get_allocator/ class=md-nav__link> <span class=md-ellipsis> get_allocator </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/get_binary/ class=md-nav__link> <span class=md-ellipsis> get_binary </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/get_ptr/ class=md-nav__link> <span class=md-ellipsis> get_ptr </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/get_ref/ class=md-nav__link> <span class=md-ellipsis> get_ref </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/get_to/ class=md-nav__link> <span class=md-ellipsis> get_to </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/std_hash/ class=md-nav__link> <span class=md-ellipsis> std::hash&lt;basic_json&gt; </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/input_format_t/ class=md-nav__link> <span class=md-ellipsis> input_format_t </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/insert/ class=md-nav__link> <span class=md-ellipsis> insert </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/invalid_iterator/ class=md-nav__link> <span class=md-ellipsis> invalid_iterator </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/is_array/ class=md-nav__link> <span class=md-ellipsis> is_array </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/is_binary/ class=md-nav__link> <span class=md-ellipsis> is_binary </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/is_boolean/ class=md-nav__link> <span class=md-ellipsis> is_boolean </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/is_discarded/ class=md-nav__link> <span class=md-ellipsis> is_discarded </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/is_null/ class=md-nav__link> <span class=md-ellipsis> is_null </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/is_number/ class=md-nav__link> <span class=md-ellipsis> is_number </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/is_number_float/ class=md-nav__link> <span class=md-ellipsis> is_number_float </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/is_number_integer/ class=md-nav__link> <span class=md-ellipsis> is_number_integer </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/is_number_unsigned/ class=md-nav__link> <span class=md-ellipsis> is_number_unsigned </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/is_object/ class=md-nav__link> <span class=md-ellipsis> is_object </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/is_primitive/ class=md-nav__link> <span class=md-ellipsis> is_primitive </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/is_string/ class=md-nav__link> <span class=md-ellipsis> is_string </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/is_structured/ class=md-nav__link> <span class=md-ellipsis> is_structured </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/items/ class=md-nav__link> <span class=md-ellipsis> items </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/json_base_class_t/ class=md-nav__link> <span class=md-ellipsis> json_base_class_t </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/json_serializer/ class=md-nav__link> <span class=md-ellipsis> json_serializer </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/max_size/ class=md-nav__link> <span class=md-ellipsis> max_size </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/meta/ class=md-nav__link> <span class=md-ellipsis> meta </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/merge_patch/ class=md-nav__link> <span class=md-ellipsis> merge_patch </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/number_float_t/ class=md-nav__link> <span class=md-ellipsis> number_float_t </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/number_integer_t/ class=md-nav__link> <span class=md-ellipsis> number_integer_t </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/number_unsigned_t/ class=md-nav__link> <span class=md-ellipsis> number_unsigned_t </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/object/ class=md-nav__link> <span class=md-ellipsis> object </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/object_comparator_t/ class=md-nav__link> <span class=md-ellipsis> object_comparator_t </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/object_t/ class=md-nav__link> <span class=md-ellipsis> object_t </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/operator_ValueType/ class=md-nav__link> <span class=md-ellipsis> operator ValueType </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/operator_value_t/ class=md-nav__link> <span class=md-ellipsis> operator value_t </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/operator%5B%5D/ class=md-nav__link> <span class=md-ellipsis> operator[] </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/operator%3D/ class=md-nav__link> <span class=md-ellipsis> operator= </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/operator%2B%3D/ class=md-nav__link> <span class=md-ellipsis> operator+= </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/operator_eq/ class=md-nav__link> <span class=md-ellipsis> operator== </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/operator_ne/ class=md-nav__link> <span class=md-ellipsis> operator!= </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/operator_lt/ class=md-nav__link> <span class=md-ellipsis> operator< </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/operator_gt/ class=md-nav__link> <span class=md-ellipsis> operator> </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/operator_le/ class=md-nav__link> <span class=md-ellipsis> operator<= </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/operator_ge/ class=md-nav__link> <span class=md-ellipsis> operator>= </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/operator_spaceship/ class=md-nav__link> <span class=md-ellipsis> operator<=> </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/out_of_range/ class=md-nav__link> <span class=md-ellipsis> out_of_range </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/other_error/ class=md-nav__link> <span class=md-ellipsis> other_error </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/parse/ class=md-nav__link> <span class=md-ellipsis> parse </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/parse_error/ class=md-nav__link> <span class=md-ellipsis> parse_error </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/parse_event_t/ class=md-nav__link> <span class=md-ellipsis> parse_event_t </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/parser_callback_t/ class=md-nav__link> <span class=md-ellipsis> parser_callback_t </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/patch/ class=md-nav__link> <span class=md-ellipsis> patch </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/patch_inplace/ class=md-nav__link> <span class=md-ellipsis> patch_inplace </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/push_back/ class=md-nav__link> <span class=md-ellipsis> push_back </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/rbegin/ class=md-nav__link> <span class=md-ellipsis> rbegin </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/rend/ class=md-nav__link> <span class=md-ellipsis> rend </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/sax_parse/ class=md-nav__link> <span class=md-ellipsis> sax_parse </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/size/ class=md-nav__link> <span class=md-ellipsis> size </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/start_pos/ class=md-nav__link> <span class=md-ellipsis> start_pos </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/string_t/ class=md-nav__link> <span class=md-ellipsis> string_t </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/swap/ class=md-nav__link> <span class=md-ellipsis> swap </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/std_swap/ class=md-nav__link> <span class=md-ellipsis> std::swap&lt;basic_json&gt; </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/to_bjdata/ class=md-nav__link> <span class=md-ellipsis> to_bjdata </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/to_bson/ class=md-nav__link> <span class=md-ellipsis> to_bson </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/to_cbor/ class=md-nav__link> <span class=md-ellipsis> to_cbor </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/to_msgpack/ class=md-nav__link> <span class=md-ellipsis> to_msgpack </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/to_string/ class=md-nav__link> <span class=md-ellipsis> to_string </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/to_ubjson/ class=md-nav__link> <span class=md-ellipsis> to_ubjson </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/type/ class=md-nav__link> <span class=md-ellipsis> type </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/type_error/ class=md-nav__link> <span class=md-ellipsis> type_error </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/type_name/ class=md-nav__link> <span class=md-ellipsis> type_name </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/unflatten/ class=md-nav__link> <span class=md-ellipsis> unflatten </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/update/ class=md-nav__link> <span class=md-ellipsis> update </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/value/ class=md-nav__link> <span class=md-ellipsis> value </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/value_t/ class=md-nav__link> <span class=md-ellipsis> value_t </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_2> <div class="md-nav__link md-nav__container"> <a href=../../byte_container_with_subtype/ class="md-nav__link "> <span class=md-ellipsis> byte_container_with_subtype </span> </a> <label class="md-nav__link " for=__nav_4_2 id=__nav_4_2_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_2_label aria-expanded=false> <label class=md-nav__title for=__nav_4_2> <span class="md-nav__icon md-icon"></span> byte_container_with_subtype </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../byte_container_with_subtype/byte_container_with_subtype/ class=md-nav__link> <span class=md-ellipsis> (constructor) </span> </a> </li> <li class=md-nav__item> <a href=../../byte_container_with_subtype/clear_subtype/ class=md-nav__link> <span class=md-ellipsis> clear_subtype </span> </a> </li> <li class=md-nav__item> <a href=../../byte_container_with_subtype/has_subtype/ class=md-nav__link> <span class=md-ellipsis> has_subtype </span> </a> </li> <li class=md-nav__item> <a href=../../byte_container_with_subtype/set_subtype/ class=md-nav__link> <span class=md-ellipsis> set_subtype </span> </a> </li> <li class=md-nav__item> <a href=../../byte_container_with_subtype/subtype/ class=md-nav__link> <span class=md-ellipsis> subtype </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_3> <div class="md-nav__link md-nav__container"> <a href=../../adl_serializer/ class="md-nav__link "> <span class=md-ellipsis> adl_serializer </span> </a> <label class="md-nav__link " for=__nav_4_3 id=__nav_4_3_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_3_label aria-expanded=false> <label class=md-nav__title for=__nav_4_3> <span class="md-nav__icon md-icon"></span> adl_serializer </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../adl_serializer/from_json/ class=md-nav__link> <span class=md-ellipsis> from_json </span> </a> </li> <li class=md-nav__item> <a href=../../adl_serializer/to_json/ class=md-nav__link> <span class=md-ellipsis> to_json </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../json/ class=md-nav__link> <span class=md-ellipsis> json </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_5> <div class="md-nav__link md-nav__container"> <a href=../../json_pointer/ class="md-nav__link "> <span class=md-ellipsis> json_pointer </span> </a> <label class="md-nav__link " for=__nav_4_5 id=__nav_4_5_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_5_label aria-expanded=false> <label class=md-nav__title for=__nav_4_5> <span class="md-nav__icon md-icon"></span> json_pointer </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../json_pointer/json_pointer/ class=md-nav__link> <span class=md-ellipsis> (Constructor) </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/back/ class=md-nav__link> <span class=md-ellipsis> back </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/empty/ class=md-nav__link> <span class=md-ellipsis> empty </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/front/ class=md-nav__link> <span class=md-ellipsis> front </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_string_t/ class=md-nav__link> <span class=md-ellipsis> operator string_t </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_eq/ class=md-nav__link> <span class=md-ellipsis> operator== </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_ne/ class=md-nav__link> <span class=md-ellipsis> operator!= </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_slash/ class=md-nav__link> <span class=md-ellipsis> operator/ </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_slasheq/ class=md-nav__link> <span class=md-ellipsis> operator/= </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/parent_pointer/ class=md-nav__link> <span class=md-ellipsis> parent_pointer </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/pop_back/ class=md-nav__link> <span class=md-ellipsis> pop_back </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/pop_front/ class=md-nav__link> <span class=md-ellipsis> pop_front </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/push_back/ class=md-nav__link> <span class=md-ellipsis> push_back </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/push_front/ class=md-nav__link> <span class=md-ellipsis> push_front </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/string_t/ class=md-nav__link> <span class=md-ellipsis> string_t </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/to_string/ class=md-nav__link> <span class=md-ellipsis> to_string </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_6> <div class="md-nav__link md-nav__container"> <a href=../../json_sax/ class="md-nav__link "> <span class=md-ellipsis> json_sax </span> </a> <label class="md-nav__link " for=__nav_4_6 id=__nav_4_6_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_6_label aria-expanded=false> <label class=md-nav__title for=__nav_4_6> <span class="md-nav__icon md-icon"></span> json_sax </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../json_sax/binary/ class=md-nav__link> <span class=md-ellipsis> binary </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/boolean/ class=md-nav__link> <span class=md-ellipsis> boolean </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/end_array/ class=md-nav__link> <span class=md-ellipsis> end_array </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/end_object/ class=md-nav__link> <span class=md-ellipsis> end_object </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/key/ class=md-nav__link> <span class=md-ellipsis> key </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/null/ class=md-nav__link> <span class=md-ellipsis> null </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/number_float/ class=md-nav__link> <span class=md-ellipsis> number_float </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/number_integer/ class=md-nav__link> <span class=md-ellipsis> number_integer </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/number_unsigned/ class=md-nav__link> <span class=md-ellipsis> number_unsigned </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/parse_error/ class=md-nav__link> <span class=md-ellipsis> parse_error </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/start_array/ class=md-nav__link> <span class=md-ellipsis> start_array </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/start_object/ class=md-nav__link> <span class=md-ellipsis> start_object </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/string/ class=md-nav__link> <span class=md-ellipsis> string </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../operator_ltlt/ class=md-nav__link> <span class=md-ellipsis> operator<<(basic_json), operator<<(json_pointer) </span> </a> </li> <li class=md-nav__item> <a href=../../operator_gtgt/ class=md-nav__link> <span class=md-ellipsis> operator>>(basic_json) </span> </a> </li> <li class=md-nav__item> <a href=../../operator_literal_json/ class=md-nav__link> <span class=md-ellipsis> operator""_json </span> </a> </li> <li class=md-nav__item> <a href=../../operator_literal_json_pointer/ class=md-nav__link> <span class=md-ellipsis> operator""_json_pointer </span> </a> </li> <li class=md-nav__item> <a href=../../ordered_json/ class=md-nav__link> <span class=md-ellipsis> ordered_json </span> </a> </li> <li class=md-nav__item> <a href=../../ordered_map/ class=md-nav__link> <span class=md-ellipsis> ordered_map </span> </a> </li> <li class="md-nav__item md-nav__item--active md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_13 checked> <div class="md-nav__link md-nav__container"> <a href=../ class="md-nav__link "> <span class=md-ellipsis> macros </span> </a> <label class="md-nav__link " for=__nav_4_13 id=__nav_4_13_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_13_label aria-expanded=true> <label class=md-nav__title for=__nav_4_13> <span class="md-nav__icon md-icon"></span> macros </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../json_assert/ class=md-nav__link> <span class=md-ellipsis> JSON_ASSERT </span> </a> </li> <li class=md-nav__item> <a href=../json_brace_init_copy_semantics/ class=md-nav__link> <span class=md-ellipsis> JSON_BRACE_INIT_COPY_SEMANTICS </span> </a> </li> <li class=md-nav__item> <a href=../json_throw_user/ class=md-nav__link> <span class=md-ellipsis> JSON_CATCH_USER, JSON_THROW_USER, JSON_TRY_USER </span> </a> </li> <li class=md-nav__item> <a href=../json_diagnostics/ class=md-nav__link> <span class=md-ellipsis> JSON_DIAGNOSTICS </span> </a> </li> <li class=md-nav__item> <a href=../json_diagnostic_positions/ class=md-nav__link> <span class=md-ellipsis> JSON_DIAGNOSTIC_POSITIONS </span> </a> </li> <li class=md-nav__item> <a href=../json_disable_enum_serialization/ class=md-nav__link> <span class=md-ellipsis> JSON_DISABLE_ENUM_SERIALIZATION </span> </a> </li> <li class=md-nav__item> <a href=../json_has_cpp_11/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_CPP_11, JSON_HAS_CPP_14, JSON_HAS_CPP_17, JSON_HAS_CPP_20 </span> </a> </li> <li class="md-nav__item md-nav__item--active"> <input class="md-nav__toggle md-toggle" type=checkbox id=__toc> <label class="md-nav__link md-nav__link--active" for=__toc> <span class=md-ellipsis> JSON_HAS_EXPERIMENTAL_FILESYSTEM, JSON_HAS_FILESYSTEM </span> <span class="md-nav__icon md-icon"></span> </label> <a href=./ class="md-nav__link md-nav__link--active"> <span class=md-ellipsis> JSON_HAS_EXPERIMENTAL_FILESYSTEM, JSON_HAS_FILESYSTEM </span> </a> <nav class="md-nav md-nav--secondary" aria-label="Table of contents"> <label class=md-nav__title for=__toc> <span class="md-nav__icon md-icon"></span> Table of contents </label> <ul class=md-nav__list data-md-component=toc data-md-scrollfix> <li class=md-nav__item> <a href=#default-definition class=md-nav__link> <span class=md-ellipsis> Default definition </span> </a> </li> <li class=md-nav__item> <a href=#notes class=md-nav__link> <span class=md-ellipsis> Notes </span> </a> </li> <li class=md-nav__item> <a href=#examples class=md-nav__link> <span class=md-ellipsis> Examples </span> </a> </li> <li class=md-nav__item> <a href=#version-history class=md-nav__link> <span class=md-ellipsis> Version history </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../json_has_ranges/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_RANGES </span> </a> </li> <li class=md-nav__item> <a href=../json_has_static_rtti/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_STATIC_RTTI </span> </a> </li> <li class=md-nav__item> <a href=../json_has_three_way_comparison/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_THREE_WAY_COMPARISON </span> </a> </li> <li class=md-nav__item> <a href=../json_noexception/ class=md-nav__link> <span class=md-ellipsis> JSON_NOEXCEPTION </span> </a> </li> <li class=md-nav__item> <a href=../json_no_io/ class=md-nav__link> <span class=md-ellipsis> JSON_NO_IO </span> </a> </li> <li class=md-nav__item> <a href=../json_skip_library_version_check/ class=md-nav__link> <span class=md-ellipsis> JSON_SKIP_LIBRARY_VERSION_CHECK </span> </a> </li> <li class=md-nav__item> <a href=../json_skip_unsupported_compiler_check/ class=md-nav__link> <span class=md-ellipsis> JSON_SKIP_UNSUPPORTED_COMPILER_CHECK </span> </a> </li> <li class=md-nav__item> <a href=../json_use_global_udls/ class=md-nav__link> <span class=md-ellipsis> JSON_USE_GLOBAL_UDLS </span> </a> </li> <li class=md-nav__item> <a href=../json_use_implicit_conversions/ class=md-nav__link> <span class=md-ellipsis> JSON_USE_IMPLICIT_CONVERSIONS </span> </a> </li> <li class=md-nav__item> <a href=../json_use_legacy_discarded_value_comparison/ class=md-nav__link> <span class=md-ellipsis> JSON_USE_LEGACY_DISCARDED_VALUE_COMPARISON </span> </a> </li> <li class=md-nav__item> <a href=../nlohmann_define_derived_type/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_ONLY_SERIALIZE, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE </span> </a> </li> <li class=md-nav__item> <a href=../nlohmann_define_type_intrusive/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_TYPE_INTRUSIVE, NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_TYPE_INTRUSIVE_ONLY_SERIALIZE </span> </a> </li> <li class=md-nav__item> <a href=../nlohmann_define_type_non_intrusive/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE </span> </a> </li> <li class=md-nav__item> <a href=../nlohmann_define_type_with_names/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_TYPE_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES </span> </a> </li> <li class=md-nav__item> <a href=../nlohmann_json_namespace/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_NAMESPACE </span> </a> </li> <li class=md-nav__item> <a href=../nlohmann_json_namespace_begin/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_NAMESPACE_BEGIN, NLOHMANN_JSON_NAMESPACE_END </span> </a> </li> <li class=md-nav__item> <a href=../nlohmann_json_namespace_no_version/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_NAMESPACE_NO_VERSION </span> </a> </li> <li class=md-nav__item> <a href=../nlohmann_json_serialize_enum/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_SERIALIZE_ENUM </span> </a> </li> <li class=md-nav__item> <a href=../nlohmann_json_serialize_enum_strict/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_SERIALIZE_ENUM_STRICT </span> </a> </li> <li class=md-nav__item> <a href=../nlohmann_json_version_major/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_VERSION_MAJOR, NLOHMANN_JSON_VERSION_MINOR, NLOHMANN_JSON_VERSION_PATCH </span> </a> </li> </ul> </nav> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_5> <div class="md-nav__link md-nav__container"> <a href=../../../community/ class="md-nav__link "> <span class=md-ellipsis> Community </span> </a> <label class="md-nav__link " for=__nav_5 id=__nav_5_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_5_label aria-expanded=false> <label class=md-nav__title for=__nav_5> <span class="md-nav__icon md-icon"></span> Community </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../community/code_of_conduct/ class=md-nav__link> <span class=md-ellipsis> Code of Conduct </span> </a> </li> <li class=md-nav__item> <a href=../../../community/contribution_guidelines/ class=md-nav__link> <span class=md-ellipsis> Contribution Guidelines </span> </a> </li> <li class=md-nav__item> <a href=../../../community/quality_assurance/ class=md-nav__link> <span class=md-ellipsis> Quality assurance </span> </a> </li> <li class=md-nav__item> <a href=../../../community/governance/ class=md-nav__link> <span class=md-ellipsis> Governance </span> </a> </li> <li class=md-nav__item> <a href=../../../community/security_policy/ class=md-nav__link> <span class=md-ellipsis> Security Policy </span> </a> </li> </ul> </nav> </li> </ul> </nav> </div> </div> </div> <div class="md-sidebar md-sidebar--secondary" data-md-component=sidebar data-md-type=toc> <div class=md-sidebar__scrollwrap> <div class=md-sidebar__inner> <nav class="md-nav md-nav--secondary" aria-label="Table of contents"> <label class=md-nav__title for=__toc> <span class="md-nav__icon md-icon"></span> Table of contents </label> <ul class=md-nav__list data-md-component=toc data-md-scrollfix> <li class=md-nav__item> <a href=#default-definition class=md-nav__link> <span class=md-ellipsis> Default definition </span> </a> </li> <li class=md-nav__item> <a href=#notes class=md-nav__link> <span class=md-ellipsis> Notes </span> </a> </li> <li class=md-nav__item> <a href=#examples class=md-nav__link> <span class=md-ellipsis> Examples </span> </a> </li> <li class=md-nav__item> <a href=#version-history class=md-nav__link> <span class=md-ellipsis> Version history </span> </a> </li> </ul> </nav> </div> </div> </div> <div class=md-content data-md-component=content> <article class="md-content__inner md-typeset"> <a href="https://github.com/nlohmann/json/edit/develop/docs/mkdocs/docs/api/macros/json_has_filesystem.md" title="Edit this page" class="md-content__button md-icon" rel="edit"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M10 20H6V4h7v5h5v3.1l2-2V8l-6-6H6c-1.1 0-2 .9-2 2v16c0 1.1.9 2 2 2h4zm10.2-7c.1 0 .3.1.4.2l1.3 1.3c.2.2.2.6 0 .8l-1 1-2.1-2.1 1-1c.1-.1.2-.2.4-.2m0 3.9L14.1 23H12v-2.1l6.1-6.1z"/></svg> </a> <a href="https://github.com/nlohmann/json/raw/develop/docs/mkdocs/docs/api/macros/json_has_filesystem.md" title="View source of this page" class="md-content__button md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M17 18c.56 0 1 .44 1 1s-.44 1-1 1-1-.44-1-1 .44-1 1-1m0-3c-2.73 0-5.06 1.66-6 4 .94 2.34 3.27 4 6 4s5.06-1.66 6-4c-.94-2.34-3.27-4-6-4m0 6.5a2.5 2.5 0 0 1-2.5-2.5 2.5 2.5 0 0 1 2.5-2.5 2.5 2.5 0 0 1 2.5 2.5 2.5 2.5 0 0 1-2.5 2.5M9.27 20H6V4h7v5h5v4.07c.7.08 1.36.25 2 .49V8l-6-6H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h4.5a8.2 8.2 0 0 1-1.23-2"/></svg> </a> <h1 id=json_has_filesystem-json_has_experimental_filesystem>JSON_HAS_FILESYSTEM / JSON_HAS_EXPERIMENTAL_FILESYSTEM<a class=headerlink href=#json_has_filesystem-json_has_experimental_filesystem title="Permanent link">&para;</a></h1> <div class=highlight><pre><span></span><code><span class=cp>#define JSON_HAS_FILESYSTEM </span><span class=cm>/* value */</span>
 <span class=cp>#define JSON_HAS_EXPERIMENTAL_FILESYSTEM </span><span class=cm>/* value */</span>
-</code></pre></div> <p>When compiling with C++17, the library provides conversions from and to <a href="https://en.cppreference.com/w/cpp/filesystem/path"><code>std::filesystem::path</code></a>. As compiler support for filesystem is limited, the library tries to detect whether <a href="https://en.cppreference.com/w/cpp/header/filesystem"><code>&lt;filesystem&gt;</code>/<code>std::filesystem</code></a> (<code>JSON_HAS_FILESYSTEM</code>) or <a href="https://en.cppreference.com/w/cpp/header/experimental/filesystem"><code>&lt;experimental/filesystem&gt;</code>/<code>std::experimental::filesystem</code></a> (<code>JSON_HAS_EXPERIMENTAL_FILESYSTEM</code>) should be used. To override the built-in check, define <code>JSON_HAS_FILESYSTEM</code> or <code>JSON_HAS_EXPERIMENTAL_FILESYSTEM</code> to <code>1</code>.</p> <h2 id=default-definition>Default definition<a class=headerlink href=#default-definition title="Permanent link">&para;</a></h2> <p>The default value is detected based on the preprocessor macros <code class=highlight><span class=n>__cpp_lib_filesystem</span></code>, <code class=highlight><span class=n>__cpp_lib_experimental_filesystem</span></code>, <code class=highlight><span class=n>__has_include</span><span class=p>(</span><span class=o>&lt;</span><span class=n>filesystem</span><span class=o>&gt;</span><span class=p>)</span></code>, or <code class=highlight><span class=n>__has_include</span><span class=p>(</span><span class=o>&lt;</span><span class=n>experimental</span><span class=o>/</span><span class=n>filesystem</span><span class=o>&gt;</span><span class=p>)</span></code>.</p> <h2 id=notes>Notes<a class=headerlink href=#notes title="Permanent link">&para;</a></h2> <ul> <li>Note that older compilers or older versions of libstd++ also require the library <code>stdc++fs</code> to be linked to for filesystem support.</li> <li>Both macros are undefined outside the library.</li> </ul> <h2 id=examples>Examples<a class=headerlink href=#examples title="Permanent link">&para;</a></h2> <details class=example> <summary>Example</summary> <p>The code below forces the library to use the header <code>&lt;experimental/filesystem&gt;</code>.</p> <div class=highlight><pre><span></span><code><span class=cp>#define JSON_HAS_EXPERIMENTAL_FILESYSTEM 1</span>
+</code></pre></div> <p>When compiling with C++17, the library provides conversions from and to <a href="https://en.cppreference.com/w/cpp/filesystem/path"><code>std::filesystem::path</code></a>. As compiler support for filesystem is limited, the library tries to detect whether <a href="https://en.cppreference.com/w/cpp/header/filesystem"><code>&lt;filesystem&gt;</code>/<code>std::filesystem</code></a> (<code>JSON_HAS_FILESYSTEM</code>) or <a href="https://en.cppreference.com/w/cpp/header/experimental/filesystem"><code>&lt;experimental/filesystem&gt;</code>/<code>std::experimental::filesystem</code></a> (<code>JSON_HAS_EXPERIMENTAL_FILESYSTEM</code>) should be used. To override the built-in check, define <code>JSON_HAS_FILESYSTEM</code> or <code>JSON_HAS_EXPERIMENTAL_FILESYSTEM</code> to <code>1</code>.</p> <h2 id=default-definition>Default definition<a class=headerlink href=#default-definition title="Permanent link">&para;</a></h2> <p>The default value is detected based on the preprocessor macros <code class=highlight><span class=n>__cpp_lib_filesystem</span></code>, <code class=highlight><span class=n>__cpp_lib_experimental_filesystem</span></code>, <code class=highlight><span class=n>__has_include</span><span class=p>(</span><span class=o>&lt;</span><span class=n>filesystem</span><span class=o>&gt;</span><span class=p>)</span></code>, or <code class=highlight><span class=n>__has_include</span><span class=p>(</span><span class=o>&lt;</span><span class=n>experimental</span><span class=o>/</span><span class=n>filesystem</span><span class=o>&gt;</span><span class=p>)</span></code>.</p> <h2 id=notes>Notes<a class=headerlink href=#notes title="Permanent link">&para;</a></h2> <ul> <li>Note that older compilers or older versions of libstdc++ also require the library <code>stdc++fs</code> to be linked to for filesystem support.</li> <li>Both macros are undefined outside the library.</li> </ul> <h2 id=examples>Examples<a class=headerlink href=#examples title="Permanent link">&para;</a></h2> <details class=example> <summary>Example</summary> <p>The code below forces the library to use the header <code>&lt;experimental/filesystem&gt;</code>.</p> <div class=highlight><pre><span></span><code><span class=cp>#define JSON_HAS_EXPERIMENTAL_FILESYSTEM 1</span>
 <span class=cp>#include</span><span class=w> </span><span class=cpf>&lt;nlohmann/json.hpp&gt;</span>
 
 <span class=p>...</span>
-</code></pre></div> </details> <h2 id=version-history>Version history<a class=headerlink href=#version-history title="Permanent link">&para;</a></h2> <ul> <li>Added in version 3.10.5.</li> </ul> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 23, 2026 11:16:18 UTC">June 23, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
+</code></pre></div> </details> <h2 id=version-history>Version history<a class=headerlink href=#version-history title="Permanent link">&para;</a></h2> <ul> <li>Added in version 3.10.5.</li> </ul> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 29, 2026 20:15:18 UTC">June 29, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
diff --git a/api/macros/json_has_ranges/index.html b/api/macros/json_has_ranges/index.html
index 8c22da0..9176c66 100644
--- a/api/macros/json_has_ranges/index.html
+++ b/api/macros/json_has_ranges/index.html
@@ -3,4 +3,4 @@
 <span class=cp>#include</span><span class=w> </span><span class=cpf>&lt;nlohmann/json.hpp&gt;</span>
 
 <span class=p>...</span>
-</code></pre></div> </details> <h2 id=version-history>Version history<a class=headerlink href=#version-history title="Permanent link">&para;</a></h2> <ul> <li>Added in version 3.11.0.</li> </ul> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 23, 2026 11:16:18 UTC">June 23, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
+</code></pre></div> </details> <h2 id=version-history>Version history<a class=headerlink href=#version-history title="Permanent link">&para;</a></h2> <ul> <li>Added in version 3.11.0.</li> </ul> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 29, 2026 20:15:18 UTC">June 29, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
diff --git a/api/macros/json_has_static_rtti/index.html b/api/macros/json_has_static_rtti/index.html
index 110de33..fcbb66a 100644
--- a/api/macros/json_has_static_rtti/index.html
+++ b/api/macros/json_has_static_rtti/index.html
@@ -3,4 +3,4 @@
 <span class=cp>#include</span><span class=w> </span><span class=cpf>&lt;nlohmann/json.hpp&gt;</span>
 
 <span class=p>...</span>
-</code></pre></div> </details> <h2 id=version-history>Version history<a class=headerlink href=#version-history title="Permanent link">&para;</a></h2> <ul> <li>Added in version 3.11.3.</li> </ul> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 23, 2026 11:16:18 UTC">June 23, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
+</code></pre></div> </details> <h2 id=version-history>Version history<a class=headerlink href=#version-history title="Permanent link">&para;</a></h2> <ul> <li>Added in version 3.11.3.</li> </ul> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 29, 2026 20:15:18 UTC">June 29, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
diff --git a/api/macros/json_has_three_way_comparison/index.html b/api/macros/json_has_three_way_comparison/index.html
index dc92021..b671390 100644
--- a/api/macros/json_has_three_way_comparison/index.html
+++ b/api/macros/json_has_three_way_comparison/index.html
@@ -3,4 +3,4 @@
 <span class=cp>#include</span><span class=w> </span><span class=cpf>&lt;nlohmann/json.hpp&gt;</span>
 
 <span class=p>...</span>
-</code></pre></div> </details> <h2 id=version-history>Version history<a class=headerlink href=#version-history title="Permanent link">&para;</a></h2> <ul> <li>Added in version 3.11.0.</li> </ul> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 23, 2026 11:16:18 UTC">June 23, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
+</code></pre></div> </details> <h2 id=version-history>Version history<a class=headerlink href=#version-history title="Permanent link">&para;</a></h2> <ul> <li>Added in version 3.11.0.</li> </ul> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 29, 2026 20:15:18 UTC">June 29, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
diff --git a/api/macros/json_no_io/index.html b/api/macros/json_no_io/index.html
index 31e788b..8996ebc 100644
--- a/api/macros/json_no_io/index.html
+++ b/api/macros/json_no_io/index.html
@@ -4,4 +4,4 @@
 <span class=cp>#include</span><span class=w> </span><span class=cpf>&lt;nlohmann/json.hpp&gt;</span>
 
 <span class=p>...</span>
-</code></pre></div> </details> <h2 id=version-history>Version history<a class=headerlink href=#version-history title="Permanent link">&para;</a></h2> <ul> <li>Added in version 3.10.0.</li> </ul> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 23, 2026 11:16:18 UTC">June 23, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
+</code></pre></div> </details> <h2 id=version-history>Version history<a class=headerlink href=#version-history title="Permanent link">&para;</a></h2> <ul> <li>Added in version 3.10.0.</li> </ul> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 29, 2026 20:15:18 UTC">June 29, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
diff --git a/api/macros/json_noexception/index.html b/api/macros/json_noexception/index.html
index e2c9f76..0162476 100644
--- a/api/macros/json_noexception/index.html
+++ b/api/macros/json_noexception/index.html
@@ -4,4 +4,4 @@
 <span class=cp>#include</span><span class=w> </span><span class=cpf>&lt;nlohmann/json.hpp&gt;</span>
 
 <span class=p>...</span>
-</code></pre></div> </details> <h2 id=see-also>See also<a class=headerlink href=#see-also title="Permanent link">&para;</a></h2> <ul> <li><a href=../../../home/exceptions/#switch-off-exceptions>Switch off exceptions</a> for more information how to switch off exceptions</li> </ul> <h2 id=version-history>Version history<a class=headerlink href=#version-history title="Permanent link">&para;</a></h2> <p>Added in version 2.1.0.</p> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 23, 2026 11:16:18 UTC">June 23, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
+</code></pre></div> </details> <h2 id=see-also>See also<a class=headerlink href=#see-also title="Permanent link">&para;</a></h2> <ul> <li><a href=../../../home/exceptions/#switch-off-exceptions>Switch off exceptions</a> for more information how to switch off exceptions</li> </ul> <h2 id=version-history>Version history<a class=headerlink href=#version-history title="Permanent link">&para;</a></h2> <p>Added in version 2.1.0.</p> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 29, 2026 20:15:18 UTC">June 29, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
diff --git a/api/macros/json_skip_library_version_check/index.html b/api/macros/json_skip_library_version_check/index.html
index 88238c7..439193d 100644
--- a/api/macros/json_skip_library_version_check/index.html
+++ b/api/macros/json_skip_library_version_check/index.html
@@ -1,4 +1,8 @@
 <!doctype html><html lang=en class=no-js> <head><meta charset=utf-8><meta name=viewport content="width=device-width,initial-scale=1"><meta name=author content="Niels Lohmann"><link href="https://json.nlohmann.me/api/macros/json_skip_library_version_check/" rel="canonical"><link href=../json_no_io/ rel=prev><link href=../json_skip_unsupported_compiler_check/ rel=next><link rel=icon href=../../../assets/images/favicon.png><meta name=generator content="mkdocs-1.6.1, mkdocs-material-9.7.6"><title>JSON_SKIP_LIBRARY_VERSION_CHECK - JSON for Modern C++</title><link rel=stylesheet href=../../../assets/stylesheets/main.484c7ddc.min.css><link rel=stylesheet href=../../../assets/stylesheets/palette.ab4e12ef.min.css><link rel="stylesheet" href="../../../assets/external/fonts.googleapis.com/css.61a430c9.css"><style>:root{--md-text-font:"Roboto";--md-code-font:"JetBrains Mono"}</style><link rel=stylesheet href=../../../css/custom.css><script>__md_scope=new URL("../../..",location),__md_hash=e=>[...e].reduce(((e,_)=>(e<<5)-e+_.charCodeAt(0)),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script></head> <body dir=ltr data-md-color-scheme=default data-md-color-primary=indigo data-md-color-accent=indigo> <input class=md-toggle data-md-toggle=drawer type=checkbox id=__drawer autocomplete=off> <input class=md-toggle data-md-toggle=search type=checkbox id=__search autocomplete=off> <label class=md-overlay for=__drawer></label> <div data-md-component=skip> <a href=#json_skip_library_version_check class=md-skip> Skip to content </a> </div> <div data-md-component=announce> </div> <header class=md-header data-md-component=header> <nav class="md-header__inner md-grid" aria-label=Header> <a href=../../.. title="JSON for Modern C++" class="md-header__button md-logo" aria-label="JSON for Modern C++" data-md-component=logo> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54"/></svg> </a> <label class="md-header__button md-icon" for=__drawer> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M3 6h18v2H3zm0 5h18v2H3zm0 5h18v2H3z"/></svg> </label> <div class=md-header__title data-md-component=header-title> <div class=md-header__ellipsis> <div class=md-header__topic> <span class=md-ellipsis> JSON for Modern C++ </span> </div> <div class=md-header__topic data-md-component=header-topic> <span class=md-ellipsis> JSON_SKIP_LIBRARY_VERSION_CHECK </span> </div> </div> </div> <form class=md-header__option data-md-component=palette> <input class=md-option data-md-color-media="(prefers-color-scheme: light)" data-md-color-scheme=default data-md-color-primary=indigo data-md-color-accent=indigo aria-label="Switch to dark mode" type=radio name=__palette id=__palette_0> <label class="md-header__button md-icon" title="Switch to dark mode" for=__palette_1 hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a4 4 0 0 0-4 4 4 4 0 0 0 4 4 4 4 0 0 0 4-4 4 4 0 0 0-4-4m0 10a6 6 0 0 1-6-6 6 6 0 0 1 6-6 6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12z"/></svg> </label> <input class=md-option data-md-color-media="(prefers-color-scheme: dark)" data-md-color-scheme=slate data-md-color-primary=indigo data-md-color-accent=indigo aria-label="Switch to light mode" type=radio name=__palette id=__palette_1> <label class="md-header__button md-icon" title="Switch to light mode" for=__palette_0 hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 18c-.89 0-1.74-.2-2.5-.55C11.56 16.5 13 14.42 13 12s-1.44-4.5-3.5-5.45C10.26 6.2 11.11 6 12 6a6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12z"/></svg> </label> </form> <script>var palette=__md_get("__palette");if(palette&&palette.color){if("(prefers-color-scheme)"===palette.color.media){var media=matchMedia("(prefers-color-scheme: light)"),input=document.querySelector(media.matches?"[data-md-color-media='(prefers-color-scheme: light)']":"[data-md-color-media='(prefers-color-scheme: dark)']");palette.color.media=input.getAttribute("data-md-color-media"),palette.color.scheme=input.getAttribute("data-md-color-scheme"),palette.color.primary=input.getAttribute("data-md-color-primary"),palette.color.accent=input.getAttribute("data-md-color-accent")}for(var[key,value]of Object.entries(palette.color))document.body.setAttribute("data-md-color-"+key,value)}</script> <label class="md-header__button md-icon" for=__search> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg> </label> <div class=md-search data-md-component=search role=dialog> <label class=md-search__overlay for=__search></label> <div class=md-search__inner role=search> <form class=md-search__form name=search> <input type=text class=md-search__input name=query aria-label=Search placeholder=Search autocapitalize=off autocorrect=off autocomplete=off spellcheck=false data-md-component=search-query required> <label class="md-search__icon md-icon" for=__search> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11z"/></svg> </label> <nav class=md-search__options aria-label=Search> <button type=reset class="md-search__icon md-icon" title=Clear aria-label=Clear tabindex=-1> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z"/></svg> </button> </nav> </form> <div class=md-search__output> <div class=md-search__scrollwrap tabindex=0 data-md-scrollfix> <div class=md-search-result data-md-component=search-result> <div class=md-search-result__meta> Initializing search </div> <ol class=md-search-result__list role=presentation></ol> </div> </div> </div> </div> </div> <div class=md-header__source> <a href="https://github.com/nlohmann/json" title="Go to repository" class="md-source" data-md-component="source"> <div class="md-source__icon md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </div> <div class=md-source__repository> nlohmann/json </div> </a> </div> </nav> </header> <div class=md-container data-md-component=container> <nav class=md-tabs aria-label=Tabs data-md-component=tabs> <div class=md-grid> <ul class=md-tabs__list> <li class=md-tabs__item> <a href=../../.. class=md-tabs__link> Home </a> </li> <li class=md-tabs__item> <a href=../../../features/arbitrary_types/ class=md-tabs__link> Features </a> </li> <li class=md-tabs__item> <a href=../../../integration/ class=md-tabs__link> Integration </a> </li> <li class="md-tabs__item md-tabs__item--active"> <a href=../../basic_json/ class=md-tabs__link> API Documentation </a> </li> <li class=md-tabs__item> <a href=../../../community/ class=md-tabs__link> Community </a> </li> </ul> </div> </nav> <main class=md-main data-md-component=main> <div class="md-main__inner md-grid"> <div class="md-sidebar md-sidebar--primary" data-md-component=sidebar data-md-type=navigation> <div class=md-sidebar__scrollwrap> <div class=md-sidebar__inner> <nav class="md-nav md-nav--primary md-nav--lifted" aria-label=Navigation data-md-level=0> <label class=md-nav__title for=__drawer> <a href=../../.. title="JSON for Modern C++" class="md-nav__button md-logo" aria-label="JSON for Modern C++" data-md-component=logo> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54"/></svg> </a> JSON for Modern C++ </label> <div class=md-nav__source> <a href="https://github.com/nlohmann/json" title="Go to repository" class="md-source" data-md-component="source"> <div class="md-source__icon md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </div> <div class=md-source__repository> nlohmann/json </div> </a> </div> <ul class=md-nav__list data-md-scrollfix> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_1> <div class="md-nav__link md-nav__container"> <a href=../../.. class="md-nav__link "> <span class=md-ellipsis> Home </span> </a> <label class="md-nav__link " for=__nav_1 id=__nav_1_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_1_label aria-expanded=false> <label class=md-nav__title for=__nav_1> <span class="md-nav__icon md-icon"></span> Home </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../home/license/ class=md-nav__link> <span class=md-ellipsis> License </span> </a> </li> <li class=md-nav__item> <a href=../../../home/faq/ class=md-nav__link> <span class=md-ellipsis> FAQ </span> </a> </li> <li class=md-nav__item> <a href=../../../home/exceptions/ class=md-nav__link> <span class=md-ellipsis> Exceptions </span> </a> </li> <li class=md-nav__item> <a href=../../../home/releases/ class=md-nav__link> <span class=md-ellipsis> Releases </span> </a> </li> <li class=md-nav__item> <a href=../../../home/design_goals/ class=md-nav__link> <span class=md-ellipsis> Design goals </span> </a> </li> <li class=md-nav__item> <a href=../../../home/architecture/ class=md-nav__link> <span class=md-ellipsis> Architecture </span> </a> </li> <li class=md-nav__item> <a href=../../../home/customers/ class=md-nav__link> <span class=md-ellipsis> Customers </span> </a> </li> <li class=md-nav__item> <a href=../../../home/sponsors/ class=md-nav__link> <span class=md-ellipsis> Sponsors </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2> <label class=md-nav__link for=__nav_2 id=__nav_2_label tabindex=0> <span class=md-ellipsis> Features </span> <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_2_label aria-expanded=false> <label class=md-nav__title for=__nav_2> <span class="md-nav__icon md-icon"></span> Features </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/arbitrary_types/ class=md-nav__link> <span class=md-ellipsis> Arbitrary Type Conversions </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_2> <div class="md-nav__link md-nav__container"> <a href=../../../features/binary_formats/ class="md-nav__link "> <span class=md-ellipsis> Binary Formats </span> </a> <label class="md-nav__link " for=__nav_2_2 id=__nav_2_2_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_2_label aria-expanded=false> <label class=md-nav__title for=__nav_2_2> <span class="md-nav__icon md-icon"></span> Binary Formats </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/binary_formats/bjdata/ class=md-nav__link> <span class=md-ellipsis> BJData </span> </a> </li> <li class=md-nav__item> <a href=../../../features/binary_formats/bson/ class=md-nav__link> <span class=md-ellipsis> BSON </span> </a> </li> <li class=md-nav__item> <a href=../../../features/binary_formats/cbor/ class=md-nav__link> <span class=md-ellipsis> CBOR </span> </a> </li> <li class=md-nav__item> <a href=../../../features/binary_formats/messagepack/ class=md-nav__link> <span class=md-ellipsis> MessagePack </span> </a> </li> <li class=md-nav__item> <a href=../../../features/binary_formats/ubjson/ class=md-nav__link> <span class=md-ellipsis> UBJSON </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../../features/binary_values/ class=md-nav__link> <span class=md-ellipsis> Binary Values </span> </a> </li> <li class=md-nav__item> <a href=../../../features/comments/ class=md-nav__link> <span class=md-ellipsis> Comments </span> </a> </li> <li class=md-nav__item> <a href=../../../features/trailing_commas/ class=md-nav__link> <span class=md-ellipsis> Trailing Commas </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_6> <div class="md-nav__link md-nav__container"> <a href=../../../features/element_access/ class="md-nav__link "> <span class=md-ellipsis> Element Access </span> </a> <label class="md-nav__link " for=__nav_2_6 id=__nav_2_6_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_6_label aria-expanded=false> <label class=md-nav__title for=__nav_2_6> <span class="md-nav__icon md-icon"></span> Element Access </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/element_access/unchecked_access/ class=md-nav__link> <span class=md-ellipsis> Unchecked access: operator[] </span> </a> </li> <li class=md-nav__item> <a href=../../../features/element_access/checked_access/ class=md-nav__link> <span class=md-ellipsis> Checked access: at </span> </a> </li> <li class=md-nav__item> <a href=../../../features/element_access/default_value/ class=md-nav__link> <span class=md-ellipsis> Access with default value: value </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../../features/iterators/ class=md-nav__link> <span class=md-ellipsis> Iterators </span> </a> </li> <li class=md-nav__item> <a href=../../../features/json_pointer/ class=md-nav__link> <span class=md-ellipsis> JSON Pointer </span> </a> </li> <li class=md-nav__item> <a href=../../../features/json_patch/ class=md-nav__link> <span class=md-ellipsis> JSON Patch and Diff </span> </a> </li> <li class=md-nav__item> <a href=../../../features/merge_patch/ class=md-nav__link> <span class=md-ellipsis> JSON Merge Patch </span> </a> </li> <li class=md-nav__item> <a href=../../../features/modules/ class=md-nav__link> <span class=md-ellipsis> Modules </span> </a> </li> <li class=md-nav__item> <a href=../../../features/namespace/ class=md-nav__link> <span class=md-ellipsis> nlohmann Namespace </span> </a> </li> <li class=md-nav__item> <a href=../../../features/object_order/ class=md-nav__link> <span class=md-ellipsis> Object Order </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_14> <div class="md-nav__link md-nav__container"> <a href=../../../features/parsing/ class="md-nav__link "> <span class=md-ellipsis> Parsing </span> </a> <label class="md-nav__link " for=__nav_2_14 id=__nav_2_14_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_14_label aria-expanded=false> <label class=md-nav__title for=__nav_2_14> <span class="md-nav__icon md-icon"></span> Parsing </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/parsing/json_lines/ class=md-nav__link> <span class=md-ellipsis> JSON Lines </span> </a> </li> <li class=md-nav__item> <a href=../../../features/parsing/parse_exceptions/ class=md-nav__link> <span class=md-ellipsis> Parsing and Exceptions </span> </a> </li> <li class=md-nav__item> <a href=../../../features/parsing/parser_callbacks/ class=md-nav__link> <span class=md-ellipsis> Parser Callbacks </span> </a> </li> <li class=md-nav__item> <a href=../../../features/parsing/sax_interface/ class=md-nav__link> <span class=md-ellipsis> SAX Interface </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../../features/assertions/ class=md-nav__link> <span class=md-ellipsis> Runtime Assertions </span> </a> </li> <li class=md-nav__item> <a href=../../../features/enum_conversion/ class=md-nav__link> <span class=md-ellipsis> Specializing enum conversion </span> </a> </li> <li class=md-nav__item> <a href=../../../features/macros/ class=md-nav__link> <span class=md-ellipsis> Supported Macros </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_18> <div class="md-nav__link md-nav__container"> <a href=../../../features/types/ class="md-nav__link "> <span class=md-ellipsis> Types </span> </a> <label class="md-nav__link " for=__nav_2_18 id=__nav_2_18_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_18_label aria-expanded=false> <label class=md-nav__title for=__nav_2_18> <span class="md-nav__icon md-icon"></span> Types </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/types/number_handling/ class=md-nav__link> <span class=md-ellipsis> Number Handling </span> </a> </li> </ul> </nav> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_3> <div class="md-nav__link md-nav__container"> <a href=../../../integration/ class="md-nav__link "> <span class=md-ellipsis> Integration </span> </a> <label class="md-nav__link " for=__nav_3 id=__nav_3_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_3_label aria-expanded=false> <label class=md-nav__title for=__nav_3> <span class="md-nav__icon md-icon"></span> Integration </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../integration/migration_guide/ class=md-nav__link> <span class=md-ellipsis> Migration Guide </span> </a> </li> <li class=md-nav__item> <a href=../../../integration/cmake/ class=md-nav__link> <span class=md-ellipsis> CMake </span> </a> </li> <li class=md-nav__item> <a href=../../../integration/package_managers/ class=md-nav__link> <span class=md-ellipsis> Package Managers </span> </a> </li> <li class=md-nav__item> <a href=../../../integration/pkg-config/ class=md-nav__link> <span class=md-ellipsis> Pkg-config </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--active md-nav__item--section md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4 checked> <label class=md-nav__link for=__nav_4 id=__nav_4_label tabindex> <span class=md-ellipsis> API Documentation </span> <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_4_label aria-expanded=true> <label class=md-nav__title for=__nav_4> <span class="md-nav__icon md-icon"></span> API Documentation </label> <ul class=md-nav__list data-md-scrollfix> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_1> <div class="md-nav__link md-nav__container"> <a href=../../basic_json/ class="md-nav__link "> <span class=md-ellipsis> basic_json </span> </a> <label class="md-nav__link " for=__nav_4_1 id=__nav_4_1_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_1_label aria-expanded=false> <label class=md-nav__title for=__nav_4_1> <span class="md-nav__icon md-icon"></span> basic_json </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../basic_json/basic_json/ class=md-nav__link> <span class=md-ellipsis> (Constructor) </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/~basic_json/ class=md-nav__link> <span class=md-ellipsis> (Destructor) </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/accept/ class=md-nav__link> <span class=md-ellipsis> accept </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/array/ class=md-nav__link> <span class=md-ellipsis> array </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/array_t/ class=md-nav__link> <span class=md-ellipsis> array_t </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/at/ class=md-nav__link> <span class=md-ellipsis> at </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/back/ class=md-nav__link> <span class=md-ellipsis> back </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/begin/ class=md-nav__link> <span class=md-ellipsis> begin </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/binary/ class=md-nav__link> <span class=md-ellipsis> binary </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/binary_t/ class=md-nav__link> <span class=md-ellipsis> binary_t </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/boolean_t/ class=md-nav__link> <span class=md-ellipsis> boolean_t </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/cbegin/ class=md-nav__link> <span class=md-ellipsis> cbegin </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/cbor_tag_handler_t/ class=md-nav__link> <span class=md-ellipsis> cbor_tag_handler_t </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/cend/ class=md-nav__link> <span class=md-ellipsis> cend </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/clear/ class=md-nav__link> <span class=md-ellipsis> clear </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/contains/ class=md-nav__link> <span class=md-ellipsis> contains </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/count/ class=md-nav__link> <span class=md-ellipsis> count </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/crbegin/ class=md-nav__link> <span class=md-ellipsis> crbegin </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/crend/ class=md-nav__link> <span class=md-ellipsis> crend </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/default_object_comparator_t/ class=md-nav__link> <span class=md-ellipsis> default_object_comparator_t </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/diff/ class=md-nav__link> <span class=md-ellipsis> diff </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/dump/ class=md-nav__link> <span class=md-ellipsis> dump </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/emplace/ class=md-nav__link> <span class=md-ellipsis> emplace </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/emplace_back/ class=md-nav__link> <span class=md-ellipsis> emplace_back </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/empty/ class=md-nav__link> <span class=md-ellipsis> empty </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/end/ class=md-nav__link> <span class=md-ellipsis> end </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/end_pos/ class=md-nav__link> <span class=md-ellipsis> end_pos </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/erase/ class=md-nav__link> <span class=md-ellipsis> erase </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/error_handler_t/ class=md-nav__link> <span class=md-ellipsis> error_handler_t </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/exception/ class=md-nav__link> <span class=md-ellipsis> exception </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/find/ class=md-nav__link> <span class=md-ellipsis> find </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/flatten/ class=md-nav__link> <span class=md-ellipsis> flatten </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/from_bjdata/ class=md-nav__link> <span class=md-ellipsis> from_bjdata </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/from_bson/ class=md-nav__link> <span class=md-ellipsis> from_bson </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/from_cbor/ class=md-nav__link> <span class=md-ellipsis> from_cbor </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/from_msgpack/ class=md-nav__link> <span class=md-ellipsis> from_msgpack </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/from_ubjson/ class=md-nav__link> <span class=md-ellipsis> from_ubjson </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/front/ class=md-nav__link> <span class=md-ellipsis> front </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/get/ class=md-nav__link> <span class=md-ellipsis> get </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/get_allocator/ class=md-nav__link> <span class=md-ellipsis> get_allocator </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/get_binary/ class=md-nav__link> <span class=md-ellipsis> get_binary </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/get_ptr/ class=md-nav__link> <span class=md-ellipsis> get_ptr </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/get_ref/ class=md-nav__link> <span class=md-ellipsis> get_ref </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/get_to/ class=md-nav__link> <span class=md-ellipsis> get_to </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/std_hash/ class=md-nav__link> <span class=md-ellipsis> std::hash&lt;basic_json&gt; </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/input_format_t/ class=md-nav__link> <span class=md-ellipsis> input_format_t </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/insert/ class=md-nav__link> <span class=md-ellipsis> insert </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/invalid_iterator/ class=md-nav__link> <span class=md-ellipsis> invalid_iterator </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/is_array/ class=md-nav__link> <span class=md-ellipsis> is_array </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/is_binary/ class=md-nav__link> <span class=md-ellipsis> is_binary </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/is_boolean/ class=md-nav__link> <span class=md-ellipsis> is_boolean </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/is_discarded/ class=md-nav__link> <span class=md-ellipsis> is_discarded </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/is_null/ class=md-nav__link> <span class=md-ellipsis> is_null </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/is_number/ class=md-nav__link> <span class=md-ellipsis> is_number </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/is_number_float/ class=md-nav__link> <span class=md-ellipsis> is_number_float </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/is_number_integer/ class=md-nav__link> <span class=md-ellipsis> is_number_integer </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/is_number_unsigned/ class=md-nav__link> <span class=md-ellipsis> is_number_unsigned </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/is_object/ class=md-nav__link> <span class=md-ellipsis> is_object </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/is_primitive/ class=md-nav__link> <span class=md-ellipsis> is_primitive </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/is_string/ class=md-nav__link> <span class=md-ellipsis> is_string </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/is_structured/ class=md-nav__link> <span class=md-ellipsis> is_structured </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/items/ class=md-nav__link> <span class=md-ellipsis> items </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/json_base_class_t/ class=md-nav__link> <span class=md-ellipsis> json_base_class_t </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/json_serializer/ class=md-nav__link> <span class=md-ellipsis> json_serializer </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/max_size/ class=md-nav__link> <span class=md-ellipsis> max_size </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/meta/ class=md-nav__link> <span class=md-ellipsis> meta </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/merge_patch/ class=md-nav__link> <span class=md-ellipsis> merge_patch </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/number_float_t/ class=md-nav__link> <span class=md-ellipsis> number_float_t </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/number_integer_t/ class=md-nav__link> <span class=md-ellipsis> number_integer_t </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/number_unsigned_t/ class=md-nav__link> <span class=md-ellipsis> number_unsigned_t </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/object/ class=md-nav__link> <span class=md-ellipsis> object </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/object_comparator_t/ class=md-nav__link> <span class=md-ellipsis> object_comparator_t </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/object_t/ class=md-nav__link> <span class=md-ellipsis> object_t </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/operator_ValueType/ class=md-nav__link> <span class=md-ellipsis> operator ValueType </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/operator_value_t/ class=md-nav__link> <span class=md-ellipsis> operator value_t </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/operator%5B%5D/ class=md-nav__link> <span class=md-ellipsis> operator[] </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/operator%3D/ class=md-nav__link> <span class=md-ellipsis> operator= </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/operator%2B%3D/ class=md-nav__link> <span class=md-ellipsis> operator+= </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/operator_eq/ class=md-nav__link> <span class=md-ellipsis> operator== </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/operator_ne/ class=md-nav__link> <span class=md-ellipsis> operator!= </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/operator_lt/ class=md-nav__link> <span class=md-ellipsis> operator< </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/operator_gt/ class=md-nav__link> <span class=md-ellipsis> operator> </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/operator_le/ class=md-nav__link> <span class=md-ellipsis> operator<= </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/operator_ge/ class=md-nav__link> <span class=md-ellipsis> operator>= </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/operator_spaceship/ class=md-nav__link> <span class=md-ellipsis> operator<=> </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/out_of_range/ class=md-nav__link> <span class=md-ellipsis> out_of_range </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/other_error/ class=md-nav__link> <span class=md-ellipsis> other_error </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/parse/ class=md-nav__link> <span class=md-ellipsis> parse </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/parse_error/ class=md-nav__link> <span class=md-ellipsis> parse_error </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/parse_event_t/ class=md-nav__link> <span class=md-ellipsis> parse_event_t </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/parser_callback_t/ class=md-nav__link> <span class=md-ellipsis> parser_callback_t </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/patch/ class=md-nav__link> <span class=md-ellipsis> patch </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/patch_inplace/ class=md-nav__link> <span class=md-ellipsis> patch_inplace </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/push_back/ class=md-nav__link> <span class=md-ellipsis> push_back </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/rbegin/ class=md-nav__link> <span class=md-ellipsis> rbegin </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/rend/ class=md-nav__link> <span class=md-ellipsis> rend </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/sax_parse/ class=md-nav__link> <span class=md-ellipsis> sax_parse </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/size/ class=md-nav__link> <span class=md-ellipsis> size </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/start_pos/ class=md-nav__link> <span class=md-ellipsis> start_pos </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/string_t/ class=md-nav__link> <span class=md-ellipsis> string_t </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/swap/ class=md-nav__link> <span class=md-ellipsis> swap </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/std_swap/ class=md-nav__link> <span class=md-ellipsis> std::swap&lt;basic_json&gt; </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/to_bjdata/ class=md-nav__link> <span class=md-ellipsis> to_bjdata </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/to_bson/ class=md-nav__link> <span class=md-ellipsis> to_bson </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/to_cbor/ class=md-nav__link> <span class=md-ellipsis> to_cbor </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/to_msgpack/ class=md-nav__link> <span class=md-ellipsis> to_msgpack </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/to_string/ class=md-nav__link> <span class=md-ellipsis> to_string </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/to_ubjson/ class=md-nav__link> <span class=md-ellipsis> to_ubjson </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/type/ class=md-nav__link> <span class=md-ellipsis> type </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/type_error/ class=md-nav__link> <span class=md-ellipsis> type_error </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/type_name/ class=md-nav__link> <span class=md-ellipsis> type_name </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/unflatten/ class=md-nav__link> <span class=md-ellipsis> unflatten </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/update/ class=md-nav__link> <span class=md-ellipsis> update </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/value/ class=md-nav__link> <span class=md-ellipsis> value </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/value_t/ class=md-nav__link> <span class=md-ellipsis> value_t </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_2> <div class="md-nav__link md-nav__container"> <a href=../../byte_container_with_subtype/ class="md-nav__link "> <span class=md-ellipsis> byte_container_with_subtype </span> </a> <label class="md-nav__link " for=__nav_4_2 id=__nav_4_2_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_2_label aria-expanded=false> <label class=md-nav__title for=__nav_4_2> <span class="md-nav__icon md-icon"></span> byte_container_with_subtype </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../byte_container_with_subtype/byte_container_with_subtype/ class=md-nav__link> <span class=md-ellipsis> (constructor) </span> </a> </li> <li class=md-nav__item> <a href=../../byte_container_with_subtype/clear_subtype/ class=md-nav__link> <span class=md-ellipsis> clear_subtype </span> </a> </li> <li class=md-nav__item> <a href=../../byte_container_with_subtype/has_subtype/ class=md-nav__link> <span class=md-ellipsis> has_subtype </span> </a> </li> <li class=md-nav__item> <a href=../../byte_container_with_subtype/set_subtype/ class=md-nav__link> <span class=md-ellipsis> set_subtype </span> </a> </li> <li class=md-nav__item> <a href=../../byte_container_with_subtype/subtype/ class=md-nav__link> <span class=md-ellipsis> subtype </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_3> <div class="md-nav__link md-nav__container"> <a href=../../adl_serializer/ class="md-nav__link "> <span class=md-ellipsis> adl_serializer </span> </a> <label class="md-nav__link " for=__nav_4_3 id=__nav_4_3_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_3_label aria-expanded=false> <label class=md-nav__title for=__nav_4_3> <span class="md-nav__icon md-icon"></span> adl_serializer </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../adl_serializer/from_json/ class=md-nav__link> <span class=md-ellipsis> from_json </span> </a> </li> <li class=md-nav__item> <a href=../../adl_serializer/to_json/ class=md-nav__link> <span class=md-ellipsis> to_json </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../json/ class=md-nav__link> <span class=md-ellipsis> json </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_5> <div class="md-nav__link md-nav__container"> <a href=../../json_pointer/ class="md-nav__link "> <span class=md-ellipsis> json_pointer </span> </a> <label class="md-nav__link " for=__nav_4_5 id=__nav_4_5_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_5_label aria-expanded=false> <label class=md-nav__title for=__nav_4_5> <span class="md-nav__icon md-icon"></span> json_pointer </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../json_pointer/json_pointer/ class=md-nav__link> <span class=md-ellipsis> (Constructor) </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/back/ class=md-nav__link> <span class=md-ellipsis> back </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/empty/ class=md-nav__link> <span class=md-ellipsis> empty </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/front/ class=md-nav__link> <span class=md-ellipsis> front </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_string_t/ class=md-nav__link> <span class=md-ellipsis> operator string_t </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_eq/ class=md-nav__link> <span class=md-ellipsis> operator== </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_ne/ class=md-nav__link> <span class=md-ellipsis> operator!= </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_slash/ class=md-nav__link> <span class=md-ellipsis> operator/ </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_slasheq/ class=md-nav__link> <span class=md-ellipsis> operator/= </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/parent_pointer/ class=md-nav__link> <span class=md-ellipsis> parent_pointer </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/pop_back/ class=md-nav__link> <span class=md-ellipsis> pop_back </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/pop_front/ class=md-nav__link> <span class=md-ellipsis> pop_front </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/push_back/ class=md-nav__link> <span class=md-ellipsis> push_back </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/push_front/ class=md-nav__link> <span class=md-ellipsis> push_front </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/string_t/ class=md-nav__link> <span class=md-ellipsis> string_t </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/to_string/ class=md-nav__link> <span class=md-ellipsis> to_string </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_6> <div class="md-nav__link md-nav__container"> <a href=../../json_sax/ class="md-nav__link "> <span class=md-ellipsis> json_sax </span> </a> <label class="md-nav__link " for=__nav_4_6 id=__nav_4_6_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_6_label aria-expanded=false> <label class=md-nav__title for=__nav_4_6> <span class="md-nav__icon md-icon"></span> json_sax </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../json_sax/binary/ class=md-nav__link> <span class=md-ellipsis> binary </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/boolean/ class=md-nav__link> <span class=md-ellipsis> boolean </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/end_array/ class=md-nav__link> <span class=md-ellipsis> end_array </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/end_object/ class=md-nav__link> <span class=md-ellipsis> end_object </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/key/ class=md-nav__link> <span class=md-ellipsis> key </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/null/ class=md-nav__link> <span class=md-ellipsis> null </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/number_float/ class=md-nav__link> <span class=md-ellipsis> number_float </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/number_integer/ class=md-nav__link> <span class=md-ellipsis> number_integer </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/number_unsigned/ class=md-nav__link> <span class=md-ellipsis> number_unsigned </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/parse_error/ class=md-nav__link> <span class=md-ellipsis> parse_error </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/start_array/ class=md-nav__link> <span class=md-ellipsis> start_array </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/start_object/ class=md-nav__link> <span class=md-ellipsis> start_object </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/string/ class=md-nav__link> <span class=md-ellipsis> string </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../operator_ltlt/ class=md-nav__link> <span class=md-ellipsis> operator<<(basic_json), operator<<(json_pointer) </span> </a> </li> <li class=md-nav__item> <a href=../../operator_gtgt/ class=md-nav__link> <span class=md-ellipsis> operator>>(basic_json) </span> </a> </li> <li class=md-nav__item> <a href=../../operator_literal_json/ class=md-nav__link> <span class=md-ellipsis> operator""_json </span> </a> </li> <li class=md-nav__item> <a href=../../operator_literal_json_pointer/ class=md-nav__link> <span class=md-ellipsis> operator""_json_pointer </span> </a> </li> <li class=md-nav__item> <a href=../../ordered_json/ class=md-nav__link> <span class=md-ellipsis> ordered_json </span> </a> </li> <li class=md-nav__item> <a href=../../ordered_map/ class=md-nav__link> <span class=md-ellipsis> ordered_map </span> </a> </li> <li class="md-nav__item md-nav__item--active md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_13 checked> <div class="md-nav__link md-nav__container"> <a href=../ class="md-nav__link "> <span class=md-ellipsis> macros </span> </a> <label class="md-nav__link " for=__nav_4_13 id=__nav_4_13_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_13_label aria-expanded=true> <label class=md-nav__title for=__nav_4_13> <span class="md-nav__icon md-icon"></span> macros </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../json_assert/ class=md-nav__link> <span class=md-ellipsis> JSON_ASSERT </span> </a> </li> <li class=md-nav__item> <a href=../json_brace_init_copy_semantics/ class=md-nav__link> <span class=md-ellipsis> JSON_BRACE_INIT_COPY_SEMANTICS </span> </a> </li> <li class=md-nav__item> <a href=../json_throw_user/ class=md-nav__link> <span class=md-ellipsis> JSON_CATCH_USER, JSON_THROW_USER, JSON_TRY_USER </span> </a> </li> <li class=md-nav__item> <a href=../json_diagnostics/ class=md-nav__link> <span class=md-ellipsis> JSON_DIAGNOSTICS </span> </a> </li> <li class=md-nav__item> <a href=../json_diagnostic_positions/ class=md-nav__link> <span class=md-ellipsis> JSON_DIAGNOSTIC_POSITIONS </span> </a> </li> <li class=md-nav__item> <a href=../json_disable_enum_serialization/ class=md-nav__link> <span class=md-ellipsis> JSON_DISABLE_ENUM_SERIALIZATION </span> </a> </li> <li class=md-nav__item> <a href=../json_has_cpp_11/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_CPP_11, JSON_HAS_CPP_14, JSON_HAS_CPP_17, JSON_HAS_CPP_20 </span> </a> </li> <li class=md-nav__item> <a href=../json_has_filesystem/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_EXPERIMENTAL_FILESYSTEM, JSON_HAS_FILESYSTEM </span> </a> </li> <li class=md-nav__item> <a href=../json_has_ranges/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_RANGES </span> </a> </li> <li class=md-nav__item> <a href=../json_has_static_rtti/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_STATIC_RTTI </span> </a> </li> <li class=md-nav__item> <a href=../json_has_three_way_comparison/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_THREE_WAY_COMPARISON </span> </a> </li> <li class=md-nav__item> <a href=../json_noexception/ class=md-nav__link> <span class=md-ellipsis> JSON_NOEXCEPTION </span> </a> </li> <li class=md-nav__item> <a href=../json_no_io/ class=md-nav__link> <span class=md-ellipsis> JSON_NO_IO </span> </a> </li> <li class="md-nav__item md-nav__item--active"> <input class="md-nav__toggle md-toggle" type=checkbox id=__toc> <label class="md-nav__link md-nav__link--active" for=__toc> <span class=md-ellipsis> JSON_SKIP_LIBRARY_VERSION_CHECK </span> <span class="md-nav__icon md-icon"></span> </label> <a href=./ class="md-nav__link md-nav__link--active"> <span class=md-ellipsis> JSON_SKIP_LIBRARY_VERSION_CHECK </span> </a> <nav class="md-nav md-nav--secondary" aria-label="Table of contents"> <label class=md-nav__title for=__toc> <span class="md-nav__icon md-icon"></span> Table of contents </label> <ul class=md-nav__list data-md-component=toc data-md-scrollfix> <li class=md-nav__item> <a href=#default-definition class=md-nav__link> <span class=md-ellipsis> Default definition </span> </a> </li> <li class=md-nav__item> <a href=#notes class=md-nav__link> <span class=md-ellipsis> Notes </span> </a> </li> <li class=md-nav__item> <a href=#examples class=md-nav__link> <span class=md-ellipsis> Examples </span> </a> </li> <li class=md-nav__item> <a href=#version-history class=md-nav__link> <span class=md-ellipsis> Version history </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../json_skip_unsupported_compiler_check/ class=md-nav__link> <span class=md-ellipsis> JSON_SKIP_UNSUPPORTED_COMPILER_CHECK </span> </a> </li> <li class=md-nav__item> <a href=../json_use_global_udls/ class=md-nav__link> <span class=md-ellipsis> JSON_USE_GLOBAL_UDLS </span> </a> </li> <li class=md-nav__item> <a href=../json_use_implicit_conversions/ class=md-nav__link> <span class=md-ellipsis> JSON_USE_IMPLICIT_CONVERSIONS </span> </a> </li> <li class=md-nav__item> <a href=../json_use_legacy_discarded_value_comparison/ class=md-nav__link> <span class=md-ellipsis> JSON_USE_LEGACY_DISCARDED_VALUE_COMPARISON </span> </a> </li> <li class=md-nav__item> <a href=../nlohmann_define_derived_type/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_ONLY_SERIALIZE, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE </span> </a> </li> <li class=md-nav__item> <a href=../nlohmann_define_type_intrusive/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_TYPE_INTRUSIVE, NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_TYPE_INTRUSIVE_ONLY_SERIALIZE </span> </a> </li> <li class=md-nav__item> <a href=../nlohmann_define_type_non_intrusive/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE </span> </a> </li> <li class=md-nav__item> <a href=../nlohmann_define_type_with_names/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_TYPE_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES </span> </a> </li> <li class=md-nav__item> <a href=../nlohmann_json_namespace/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_NAMESPACE </span> </a> </li> <li class=md-nav__item> <a href=../nlohmann_json_namespace_begin/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_NAMESPACE_BEGIN, NLOHMANN_JSON_NAMESPACE_END </span> </a> </li> <li class=md-nav__item> <a href=../nlohmann_json_namespace_no_version/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_NAMESPACE_NO_VERSION </span> </a> </li> <li class=md-nav__item> <a href=../nlohmann_json_serialize_enum/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_SERIALIZE_ENUM </span> </a> </li> <li class=md-nav__item> <a href=../nlohmann_json_serialize_enum_strict/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_SERIALIZE_ENUM_STRICT </span> </a> </li> <li class=md-nav__item> <a href=../nlohmann_json_version_major/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_VERSION_MAJOR, NLOHMANN_JSON_VERSION_MINOR, NLOHMANN_JSON_VERSION_PATCH </span> </a> </li> </ul> </nav> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_5> <div class="md-nav__link md-nav__container"> <a href=../../../community/ class="md-nav__link "> <span class=md-ellipsis> Community </span> </a> <label class="md-nav__link " for=__nav_5 id=__nav_5_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_5_label aria-expanded=false> <label class=md-nav__title for=__nav_5> <span class="md-nav__icon md-icon"></span> Community </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../community/code_of_conduct/ class=md-nav__link> <span class=md-ellipsis> Code of Conduct </span> </a> </li> <li class=md-nav__item> <a href=../../../community/contribution_guidelines/ class=md-nav__link> <span class=md-ellipsis> Contribution Guidelines </span> </a> </li> <li class=md-nav__item> <a href=../../../community/quality_assurance/ class=md-nav__link> <span class=md-ellipsis> Quality assurance </span> </a> </li> <li class=md-nav__item> <a href=../../../community/governance/ class=md-nav__link> <span class=md-ellipsis> Governance </span> </a> </li> <li class=md-nav__item> <a href=../../../community/security_policy/ class=md-nav__link> <span class=md-ellipsis> Security Policy </span> </a> </li> </ul> </nav> </li> </ul> </nav> </div> </div> </div> <div class="md-sidebar md-sidebar--secondary" data-md-component=sidebar data-md-type=toc> <div class=md-sidebar__scrollwrap> <div class=md-sidebar__inner> <nav class="md-nav md-nav--secondary" aria-label="Table of contents"> <label class=md-nav__title for=__toc> <span class="md-nav__icon md-icon"></span> Table of contents </label> <ul class=md-nav__list data-md-component=toc data-md-scrollfix> <li class=md-nav__item> <a href=#default-definition class=md-nav__link> <span class=md-ellipsis> Default definition </span> </a> </li> <li class=md-nav__item> <a href=#notes class=md-nav__link> <span class=md-ellipsis> Notes </span> </a> </li> <li class=md-nav__item> <a href=#examples class=md-nav__link> <span class=md-ellipsis> Examples </span> </a> </li> <li class=md-nav__item> <a href=#version-history class=md-nav__link> <span class=md-ellipsis> Version history </span> </a> </li> </ul> </nav> </div> </div> </div> <div class=md-content data-md-component=content> <article class="md-content__inner md-typeset"> <a href="https://github.com/nlohmann/json/edit/develop/docs/mkdocs/docs/api/macros/json_skip_library_version_check.md" title="Edit this page" class="md-content__button md-icon" rel="edit"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M10 20H6V4h7v5h5v3.1l2-2V8l-6-6H6c-1.1 0-2 .9-2 2v16c0 1.1.9 2 2 2h4zm10.2-7c.1 0 .3.1.4.2l1.3 1.3c.2.2.2.6 0 .8l-1 1-2.1-2.1 1-1c.1-.1.2-.2.4-.2m0 3.9L14.1 23H12v-2.1l6.1-6.1z"/></svg> </a> <a href="https://github.com/nlohmann/json/raw/develop/docs/mkdocs/docs/api/macros/json_skip_library_version_check.md" title="View source of this page" class="md-content__button md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M17 18c.56 0 1 .44 1 1s-.44 1-1 1-1-.44-1-1 .44-1 1-1m0-3c-2.73 0-5.06 1.66-6 4 .94 2.34 3.27 4 6 4s5.06-1.66 6-4c-.94-2.34-3.27-4-6-4m0 6.5a2.5 2.5 0 0 1-2.5-2.5 2.5 2.5 0 0 1 2.5-2.5 2.5 2.5 0 0 1 2.5 2.5 2.5 2.5 0 0 1-2.5 2.5M9.27 20H6V4h7v5h5v4.07c.7.08 1.36.25 2 .49V8l-6-6H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h4.5a8.2 8.2 0 0 1-1.23-2"/></svg> </a> <h1 id=json_skip_library_version_check>JSON_SKIP_LIBRARY_VERSION_CHECK<a class=headerlink href=#json_skip_library_version_check title="Permanent link">&para;</a></h1> <div class=highlight><pre><span></span><code><span class=cp>#define JSON_SKIP_LIBRARY_VERSION_CHECK</span>
 </code></pre></div> <p>When defined, the library will not create a compiler warning when a different version of the library was already included.</p> <h2 id=default-definition>Default definition<a class=headerlink href=#default-definition title="Permanent link">&para;</a></h2> <p>By default, the macro is not defined.</p> <div class=highlight><pre><span></span><code><span class=cp>#undef JSON_SKIP_LIBRARY_VERSION_CHECK</span>
-</code></pre></div> <h2 id=notes>Notes<a class=headerlink href=#notes title="Permanent link">&para;</a></h2> <div class="admonition danger"> <p class=admonition-title>ABI compatibility</p> <p>Mixing different library versions in the same code can be a problem as the different versions may not be ABI compatible.</p> </div> <h2 id=examples>Examples<a class=headerlink href=#examples title="Permanent link">&para;</a></h2> <div class="admonition example"> <p class=admonition-title>Example</p> <p>The following warning will be shown in case a different version of the library was already included:</p> <div class=highlight><pre><span></span><code>Already included a different version of the library!
-</code></pre></div> </div> <h2 id=version-history>Version history<a class=headerlink href=#version-history title="Permanent link">&para;</a></h2> <p>Added in version 3.11.0.</p> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 23, 2026 11:16:18 UTC">June 23, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
+</code></pre></div> <h2 id=notes>Notes<a class=headerlink href=#notes title="Permanent link">&para;</a></h2> <div class="admonition danger"> <p class=admonition-title>ABI compatibility</p> <p>Mixing different library versions in the same code can be a problem as the different versions may not be ABI compatible.</p> </div> <h2 id=examples>Examples<a class=headerlink href=#examples title="Permanent link">&para;</a></h2> <details class=example> <summary>Example</summary> <p>The code below switches off the warning about including a different version of the library.</p> <div class=highlight><pre><span></span><code><span class=cp>#define JSON_SKIP_LIBRARY_VERSION_CHECK 1</span>
+<span class=cp>#include</span><span class=w> </span><span class=cpf>&lt;nlohmann/json.hpp&gt;</span>
+
+<span class=p>...</span>
+</code></pre></div> </details> <div class="admonition example"> <p class=admonition-title>Example</p> <p>The following warning will be shown in case a different version of the library was already included:</p> <div class=highlight><pre><span></span><code>Already included a different version of the library!
+</code></pre></div> </div> <h2 id=version-history>Version history<a class=headerlink href=#version-history title="Permanent link">&para;</a></h2> <p>Added in version 3.11.0.</p> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 29, 2026 20:15:18 UTC">June 29, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
diff --git a/api/macros/json_skip_unsupported_compiler_check/index.html b/api/macros/json_skip_unsupported_compiler_check/index.html
index a2cb392..fef5340 100644
--- a/api/macros/json_skip_unsupported_compiler_check/index.html
+++ b/api/macros/json_skip_unsupported_compiler_check/index.html
@@ -4,4 +4,4 @@
 <span class=cp>#include</span><span class=w> </span><span class=cpf>&lt;nlohmann/json.hpp&gt;</span>
 
 <span class=p>...</span>
-</code></pre></div> </details> <h2 id=version-history>Version history<a class=headerlink href=#version-history title="Permanent link">&para;</a></h2> <p>Added in version 3.2.0.</p> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 23, 2026 11:16:18 UTC">June 23, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
+</code></pre></div> </details> <h2 id=version-history>Version history<a class=headerlink href=#version-history title="Permanent link">&para;</a></h2> <p>Added in version 3.2.0.</p> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 29, 2026 20:15:18 UTC">June 29, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
diff --git a/api/macros/json_throw_user/index.html b/api/macros/json_throw_user/index.html
index 17fe791..0911733 100644
--- a/api/macros/json_throw_user/index.html
+++ b/api/macros/json_throw_user/index.html
@@ -21,4 +21,4 @@
 <span class=cp>     std::abort();}</span>
 
 <span class=cp>#include</span><span class=w> </span><span class=cpf>&lt;nlohmann/json.hpp&gt;</span>
-</code></pre></div> </details> <h2 id=see-also>See also<a class=headerlink href=#see-also title="Permanent link">&para;</a></h2> <ul> <li><a href=../../../home/exceptions/#switch-off-exceptions>Switch off exceptions</a> for more information how to switch off exceptions</li> <li><a href=../json_noexception/ >JSON_NOEXCEPTION</a> - switch off exceptions</li> </ul> <h2 id=version-history>Version history<a class=headerlink href=#version-history title="Permanent link">&para;</a></h2> <ul> <li>Added in version 3.1.0.</li> </ul> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 23, 2026 11:16:18 UTC">June 23, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
+</code></pre></div> </details> <h2 id=see-also>See also<a class=headerlink href=#see-also title="Permanent link">&para;</a></h2> <ul> <li><a href=../../../home/exceptions/#switch-off-exceptions>Switch off exceptions</a> for more information how to switch off exceptions</li> <li><a href=../json_noexception/ >JSON_NOEXCEPTION</a> - switch off exceptions</li> </ul> <h2 id=version-history>Version history<a class=headerlink href=#version-history title="Permanent link">&para;</a></h2> <ul> <li>Added in version 3.1.0.</li> </ul> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 29, 2026 20:15:18 UTC">June 29, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
diff --git a/api/macros/json_use_global_udls/index.html b/api/macros/json_use_global_udls/index.html
index bca0499..51359dc 100644
--- a/api/macros/json_use_global_udls/index.html
+++ b/api/macros/json_use_global_udls/index.html
@@ -29,4 +29,4 @@
 <span class=w>    </span><span class=n>std</span><span class=o>::</span><span class=n>cout</span><span class=w> </span><span class=o>&lt;&lt;</span><span class=w> </span><span class=n>j</span><span class=w> </span><span class=o>&lt;&lt;</span><span class=w> </span><span class=n>std</span><span class=o>::</span><span class=n>endl</span><span class=p>;</span>
 <span class=p>}</span>
 </code></pre></div> <p>Output:</p> <div class=highlight><pre><span></span><code><span class=mi>42</span>
-</code></pre></div> </details> <h2 id=see-also>See also<a class=headerlink href=#see-also title="Permanent link">&para;</a></h2> <ul> <li><a href=../../operator_literal_json/ ><code>operator""_json</code></a></li> <li><a href=../../operator_literal_json_pointer/ ><code>operator""_json_pointer</code></a></li> <li><a href=../../../integration/cmake/#json_globaludls><span class=twemoji><svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M11.769.066.067 23.206l12.76-10.843zm11.438 23.868L7.471 17.587 0 23.934zm.793-.198L12.298.463l1.719 19.24zM12.893 12.959l-5.025 4.298 5.62 2.248z"/></svg></span> JSON_GlobalUDLs</a> - CMake option to control the macro</li> </ul> <h2 id=version-history>Version history<a class=headerlink href=#version-history title="Permanent link">&para;</a></h2> <ul> <li>Added in version 3.11.0.</li> </ul> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 23, 2026 11:16:18 UTC">June 23, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
+</code></pre></div> </details> <h2 id=see-also>See also<a class=headerlink href=#see-also title="Permanent link">&para;</a></h2> <ul> <li><a href=../../operator_literal_json/ ><code>operator""_json</code></a></li> <li><a href=../../operator_literal_json_pointer/ ><code>operator""_json_pointer</code></a></li> <li><a href=../../../integration/cmake/#json_globaludls><span class=twemoji><svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M11.769.066.067 23.206l12.76-10.843zm11.438 23.868L7.471 17.587 0 23.934zm.793-.198L12.298.463l1.719 19.24zM12.893 12.959l-5.025 4.298 5.62 2.248z"/></svg></span> JSON_GlobalUDLs</a> - CMake option to control the macro</li> </ul> <h2 id=version-history>Version history<a class=headerlink href=#version-history title="Permanent link">&para;</a></h2> <ul> <li>Added in version 3.11.0.</li> </ul> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 29, 2026 20:15:18 UTC">June 29, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
diff --git a/api/macros/json_use_implicit_conversions/index.html b/api/macros/json_use_implicit_conversions/index.html
index ff60394..c5f80ad 100644
--- a/api/macros/json_use_implicit_conversions/index.html
+++ b/api/macros/json_use_implicit_conversions/index.html
@@ -4,4 +4,4 @@
 <span class=n>std</span><span class=o>::</span><span class=n>string</span><span class=w> </span><span class=n>s</span><span class=w> </span><span class=o>=</span><span class=w> </span><span class=n>j</span><span class=p>;</span>
 </code></pre></div> <p>When <code>JSON_USE_IMPLICIT_CONVERSIONS</code> is defined to <code>0</code>, the code above does no longer compile. Instead, it must be written like this:</p> <div class=highlight><pre><span></span><code><span class=n>json</span><span class=w> </span><span class=n>j</span><span class=w> </span><span class=o>=</span><span class=w> </span><span class=s>&quot;Hello, world!&quot;</span><span class=p>;</span>
 <span class=k>auto</span><span class=w> </span><span class=n>s</span><span class=w> </span><span class=o>=</span><span class=w> </span><span class=n>j</span><span class=p>.</span><span class=n>get</span><span class=o>&lt;</span><span class=n>std</span><span class=o>::</span><span class=n>string</span><span class=o>&gt;</span><span class=p>();</span>
-</code></pre></div> </details> <h2 id=see-also>See also<a class=headerlink href=#see-also title="Permanent link">&para;</a></h2> <ul> <li><a href=../../basic_json/operator_ValueType/ ><strong>operator ValueType</strong></a> - get a value (implicit)</li> <li><a href=../../basic_json/get/ ><strong>get</strong></a> - get a value (explicit)</li> <li><a href=../../../integration/cmake/#json_implicitconversions><span class=twemoji><svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M11.769.066.067 23.206l12.76-10.843zm11.438 23.868L7.471 17.587 0 23.934zm.793-.198L12.298.463l1.719 19.24zM12.893 12.959l-5.025 4.298 5.62 2.248z"/></svg></span> JSON_ImplicitConversions</a> - CMake option to control the macro</li> </ul> <h2 id=version-history>Version history<a class=headerlink href=#version-history title="Permanent link">&para;</a></h2> <ul> <li>Added in version 3.9.0.</li> </ul> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 23, 2026 11:16:18 UTC">June 23, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
+</code></pre></div> </details> <h2 id=see-also>See also<a class=headerlink href=#see-also title="Permanent link">&para;</a></h2> <ul> <li><a href=../../basic_json/operator_ValueType/ ><strong>operator ValueType</strong></a> - get a value (implicit)</li> <li><a href=../../basic_json/get/ ><strong>get</strong></a> - get a value (explicit)</li> <li><a href=../../../integration/cmake/#json_implicitconversions><span class=twemoji><svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M11.769.066.067 23.206l12.76-10.843zm11.438 23.868L7.471 17.587 0 23.934zm.793-.198L12.298.463l1.719 19.24zM12.893 12.959l-5.025 4.298 5.62 2.248z"/></svg></span> JSON_ImplicitConversions</a> - CMake option to control the macro</li> </ul> <h2 id=version-history>Version history<a class=headerlink href=#version-history title="Permanent link">&para;</a></h2> <ul> <li>Added in version 3.9.0.</li> </ul> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 29, 2026 20:15:18 UTC">June 29, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
diff --git a/api/macros/json_use_legacy_discarded_value_comparison/index.html b/api/macros/json_use_legacy_discarded_value_comparison/index.html
index 148127e..5acef89 100644
--- a/api/macros/json_use_legacy_discarded_value_comparison/index.html
+++ b/api/macros/json_use_legacy_discarded_value_comparison/index.html
@@ -1,7 +1,7 @@
-<!doctype html><html lang=en class=no-js> <head><meta charset=utf-8><meta name=viewport content="width=device-width,initial-scale=1"><meta name=author content="Niels Lohmann"><link href="https://json.nlohmann.me/api/macros/json_use_legacy_discarded_value_comparison/" rel="canonical"><link href=../json_use_implicit_conversions/ rel=prev><link href=../nlohmann_define_derived_type/ rel=next><link rel=icon href=../../../assets/images/favicon.png><meta name=generator content="mkdocs-1.6.1, mkdocs-material-9.7.6"><title>JSON_USE_LEGACY_DISCARDED_VALUE_COMPARISON - JSON for Modern C++</title><link rel=stylesheet href=../../../assets/stylesheets/main.484c7ddc.min.css><link rel=stylesheet href=../../../assets/stylesheets/palette.ab4e12ef.min.css><link rel="stylesheet" href="../../../assets/external/fonts.googleapis.com/css.61a430c9.css"><style>:root{--md-text-font:"Roboto";--md-code-font:"JetBrains Mono"}</style><link rel=stylesheet href=../../../css/custom.css><script>__md_scope=new URL("../../..",location),__md_hash=e=>[...e].reduce(((e,_)=>(e<<5)-e+_.charCodeAt(0)),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script></head> <body dir=ltr data-md-color-scheme=default data-md-color-primary=indigo data-md-color-accent=indigo> <input class=md-toggle data-md-toggle=drawer type=checkbox id=__drawer autocomplete=off> <input class=md-toggle data-md-toggle=search type=checkbox id=__search autocomplete=off> <label class=md-overlay for=__drawer></label> <div data-md-component=skip> <a href=#json_use_legacy_discarded_value_comparison class=md-skip> Skip to content </a> </div> <div data-md-component=announce> </div> <header class=md-header data-md-component=header> <nav class="md-header__inner md-grid" aria-label=Header> <a href=../../.. title="JSON for Modern C++" class="md-header__button md-logo" aria-label="JSON for Modern C++" data-md-component=logo> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54"/></svg> </a> <label class="md-header__button md-icon" for=__drawer> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M3 6h18v2H3zm0 5h18v2H3zm0 5h18v2H3z"/></svg> </label> <div class=md-header__title data-md-component=header-title> <div class=md-header__ellipsis> <div class=md-header__topic> <span class=md-ellipsis> JSON for Modern C++ </span> </div> <div class=md-header__topic data-md-component=header-topic> <span class=md-ellipsis> JSON_USE_LEGACY_DISCARDED_VALUE_COMPARISON </span> </div> </div> </div> <form class=md-header__option data-md-component=palette> <input class=md-option data-md-color-media="(prefers-color-scheme: light)" data-md-color-scheme=default data-md-color-primary=indigo data-md-color-accent=indigo aria-label="Switch to dark mode" type=radio name=__palette id=__palette_0> <label class="md-header__button md-icon" title="Switch to dark mode" for=__palette_1 hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a4 4 0 0 0-4 4 4 4 0 0 0 4 4 4 4 0 0 0 4-4 4 4 0 0 0-4-4m0 10a6 6 0 0 1-6-6 6 6 0 0 1 6-6 6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12z"/></svg> </label> <input class=md-option data-md-color-media="(prefers-color-scheme: dark)" data-md-color-scheme=slate data-md-color-primary=indigo data-md-color-accent=indigo aria-label="Switch to light mode" type=radio name=__palette id=__palette_1> <label class="md-header__button md-icon" title="Switch to light mode" for=__palette_0 hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 18c-.89 0-1.74-.2-2.5-.55C11.56 16.5 13 14.42 13 12s-1.44-4.5-3.5-5.45C10.26 6.2 11.11 6 12 6a6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12z"/></svg> </label> </form> <script>var palette=__md_get("__palette");if(palette&&palette.color){if("(prefers-color-scheme)"===palette.color.media){var media=matchMedia("(prefers-color-scheme: light)"),input=document.querySelector(media.matches?"[data-md-color-media='(prefers-color-scheme: light)']":"[data-md-color-media='(prefers-color-scheme: dark)']");palette.color.media=input.getAttribute("data-md-color-media"),palette.color.scheme=input.getAttribute("data-md-color-scheme"),palette.color.primary=input.getAttribute("data-md-color-primary"),palette.color.accent=input.getAttribute("data-md-color-accent")}for(var[key,value]of Object.entries(palette.color))document.body.setAttribute("data-md-color-"+key,value)}</script> <label class="md-header__button md-icon" for=__search> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg> </label> <div class=md-search data-md-component=search role=dialog> <label class=md-search__overlay for=__search></label> <div class=md-search__inner role=search> <form class=md-search__form name=search> <input type=text class=md-search__input name=query aria-label=Search placeholder=Search autocapitalize=off autocorrect=off autocomplete=off spellcheck=false data-md-component=search-query required> <label class="md-search__icon md-icon" for=__search> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11z"/></svg> </label> <nav class=md-search__options aria-label=Search> <button type=reset class="md-search__icon md-icon" title=Clear aria-label=Clear tabindex=-1> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z"/></svg> </button> </nav> </form> <div class=md-search__output> <div class=md-search__scrollwrap tabindex=0 data-md-scrollfix> <div class=md-search-result data-md-component=search-result> <div class=md-search-result__meta> Initializing search </div> <ol class=md-search-result__list role=presentation></ol> </div> </div> </div> </div> </div> <div class=md-header__source> <a href="https://github.com/nlohmann/json" title="Go to repository" class="md-source" data-md-component="source"> <div class="md-source__icon md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </div> <div class=md-source__repository> nlohmann/json </div> </a> </div> </nav> </header> <div class=md-container data-md-component=container> <nav class=md-tabs aria-label=Tabs data-md-component=tabs> <div class=md-grid> <ul class=md-tabs__list> <li class=md-tabs__item> <a href=../../.. class=md-tabs__link> Home </a> </li> <li class=md-tabs__item> <a href=../../../features/arbitrary_types/ class=md-tabs__link> Features </a> </li> <li class=md-tabs__item> <a href=../../../integration/ class=md-tabs__link> Integration </a> </li> <li class="md-tabs__item md-tabs__item--active"> <a href=../../basic_json/ class=md-tabs__link> API Documentation </a> </li> <li class=md-tabs__item> <a href=../../../community/ class=md-tabs__link> Community </a> </li> </ul> </div> </nav> <main class=md-main data-md-component=main> <div class="md-main__inner md-grid"> <div class="md-sidebar md-sidebar--primary" data-md-component=sidebar data-md-type=navigation> <div class=md-sidebar__scrollwrap> <div class=md-sidebar__inner> <nav class="md-nav md-nav--primary md-nav--lifted" aria-label=Navigation data-md-level=0> <label class=md-nav__title for=__drawer> <a href=../../.. title="JSON for Modern C++" class="md-nav__button md-logo" aria-label="JSON for Modern C++" data-md-component=logo> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54"/></svg> </a> JSON for Modern C++ </label> <div class=md-nav__source> <a href="https://github.com/nlohmann/json" title="Go to repository" class="md-source" data-md-component="source"> <div class="md-source__icon md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </div> <div class=md-source__repository> nlohmann/json </div> </a> </div> <ul class=md-nav__list data-md-scrollfix> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_1> <div class="md-nav__link md-nav__container"> <a href=../../.. class="md-nav__link "> <span class=md-ellipsis> Home </span> </a> <label class="md-nav__link " for=__nav_1 id=__nav_1_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_1_label aria-expanded=false> <label class=md-nav__title for=__nav_1> <span class="md-nav__icon md-icon"></span> Home </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../home/license/ class=md-nav__link> <span class=md-ellipsis> License </span> </a> </li> <li class=md-nav__item> <a href=../../../home/faq/ class=md-nav__link> <span class=md-ellipsis> FAQ </span> </a> </li> <li class=md-nav__item> <a href=../../../home/exceptions/ class=md-nav__link> <span class=md-ellipsis> Exceptions </span> </a> </li> <li class=md-nav__item> <a href=../../../home/releases/ class=md-nav__link> <span class=md-ellipsis> Releases </span> </a> </li> <li class=md-nav__item> <a href=../../../home/design_goals/ class=md-nav__link> <span class=md-ellipsis> Design goals </span> </a> </li> <li class=md-nav__item> <a href=../../../home/architecture/ class=md-nav__link> <span class=md-ellipsis> Architecture </span> </a> </li> <li class=md-nav__item> <a href=../../../home/customers/ class=md-nav__link> <span class=md-ellipsis> Customers </span> </a> </li> <li class=md-nav__item> <a href=../../../home/sponsors/ class=md-nav__link> <span class=md-ellipsis> Sponsors </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2> <label class=md-nav__link for=__nav_2 id=__nav_2_label tabindex=0> <span class=md-ellipsis> Features </span> <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_2_label aria-expanded=false> <label class=md-nav__title for=__nav_2> <span class="md-nav__icon md-icon"></span> Features </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/arbitrary_types/ class=md-nav__link> <span class=md-ellipsis> Arbitrary Type Conversions </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_2> <div class="md-nav__link md-nav__container"> <a href=../../../features/binary_formats/ class="md-nav__link "> <span class=md-ellipsis> Binary Formats </span> </a> <label class="md-nav__link " for=__nav_2_2 id=__nav_2_2_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_2_label aria-expanded=false> <label class=md-nav__title for=__nav_2_2> <span class="md-nav__icon md-icon"></span> Binary Formats </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/binary_formats/bjdata/ class=md-nav__link> <span class=md-ellipsis> BJData </span> </a> </li> <li class=md-nav__item> <a href=../../../features/binary_formats/bson/ class=md-nav__link> <span class=md-ellipsis> BSON </span> </a> </li> <li class=md-nav__item> <a href=../../../features/binary_formats/cbor/ class=md-nav__link> <span class=md-ellipsis> CBOR </span> </a> </li> <li class=md-nav__item> <a href=../../../features/binary_formats/messagepack/ class=md-nav__link> <span class=md-ellipsis> MessagePack </span> </a> </li> <li class=md-nav__item> <a href=../../../features/binary_formats/ubjson/ class=md-nav__link> <span class=md-ellipsis> UBJSON </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../../features/binary_values/ class=md-nav__link> <span class=md-ellipsis> Binary Values </span> </a> </li> <li class=md-nav__item> <a href=../../../features/comments/ class=md-nav__link> <span class=md-ellipsis> Comments </span> </a> </li> <li class=md-nav__item> <a href=../../../features/trailing_commas/ class=md-nav__link> <span class=md-ellipsis> Trailing Commas </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_6> <div class="md-nav__link md-nav__container"> <a href=../../../features/element_access/ class="md-nav__link "> <span class=md-ellipsis> Element Access </span> </a> <label class="md-nav__link " for=__nav_2_6 id=__nav_2_6_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_6_label aria-expanded=false> <label class=md-nav__title for=__nav_2_6> <span class="md-nav__icon md-icon"></span> Element Access </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/element_access/unchecked_access/ class=md-nav__link> <span class=md-ellipsis> Unchecked access: operator[] </span> </a> </li> <li class=md-nav__item> <a href=../../../features/element_access/checked_access/ class=md-nav__link> <span class=md-ellipsis> Checked access: at </span> </a> </li> <li class=md-nav__item> <a href=../../../features/element_access/default_value/ class=md-nav__link> <span class=md-ellipsis> Access with default value: value </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../../features/iterators/ class=md-nav__link> <span class=md-ellipsis> Iterators </span> </a> </li> <li class=md-nav__item> <a href=../../../features/json_pointer/ class=md-nav__link> <span class=md-ellipsis> JSON Pointer </span> </a> </li> <li class=md-nav__item> <a href=../../../features/json_patch/ class=md-nav__link> <span class=md-ellipsis> JSON Patch and Diff </span> </a> </li> <li class=md-nav__item> <a href=../../../features/merge_patch/ class=md-nav__link> <span class=md-ellipsis> JSON Merge Patch </span> </a> </li> <li class=md-nav__item> <a href=../../../features/modules/ class=md-nav__link> <span class=md-ellipsis> Modules </span> </a> </li> <li class=md-nav__item> <a href=../../../features/namespace/ class=md-nav__link> <span class=md-ellipsis> nlohmann Namespace </span> </a> </li> <li class=md-nav__item> <a href=../../../features/object_order/ class=md-nav__link> <span class=md-ellipsis> Object Order </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_14> <div class="md-nav__link md-nav__container"> <a href=../../../features/parsing/ class="md-nav__link "> <span class=md-ellipsis> Parsing </span> </a> <label class="md-nav__link " for=__nav_2_14 id=__nav_2_14_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_14_label aria-expanded=false> <label class=md-nav__title for=__nav_2_14> <span class="md-nav__icon md-icon"></span> Parsing </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/parsing/json_lines/ class=md-nav__link> <span class=md-ellipsis> JSON Lines </span> </a> </li> <li class=md-nav__item> <a href=../../../features/parsing/parse_exceptions/ class=md-nav__link> <span class=md-ellipsis> Parsing and Exceptions </span> </a> </li> <li class=md-nav__item> <a href=../../../features/parsing/parser_callbacks/ class=md-nav__link> <span class=md-ellipsis> Parser Callbacks </span> </a> </li> <li class=md-nav__item> <a href=../../../features/parsing/sax_interface/ class=md-nav__link> <span class=md-ellipsis> SAX Interface </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../../features/assertions/ class=md-nav__link> <span class=md-ellipsis> Runtime Assertions </span> </a> </li> <li class=md-nav__item> <a href=../../../features/enum_conversion/ class=md-nav__link> <span class=md-ellipsis> Specializing enum conversion </span> </a> </li> <li class=md-nav__item> <a href=../../../features/macros/ class=md-nav__link> <span class=md-ellipsis> Supported Macros </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_18> <div class="md-nav__link md-nav__container"> <a href=../../../features/types/ class="md-nav__link "> <span class=md-ellipsis> Types </span> </a> <label class="md-nav__link " for=__nav_2_18 id=__nav_2_18_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_18_label aria-expanded=false> <label class=md-nav__title for=__nav_2_18> <span class="md-nav__icon md-icon"></span> Types </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/types/number_handling/ class=md-nav__link> <span class=md-ellipsis> Number Handling </span> </a> </li> </ul> </nav> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_3> <div class="md-nav__link md-nav__container"> <a href=../../../integration/ class="md-nav__link "> <span class=md-ellipsis> Integration </span> </a> <label class="md-nav__link " for=__nav_3 id=__nav_3_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_3_label aria-expanded=false> <label class=md-nav__title for=__nav_3> <span class="md-nav__icon md-icon"></span> Integration </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../integration/migration_guide/ class=md-nav__link> <span class=md-ellipsis> Migration Guide </span> </a> </li> <li class=md-nav__item> <a href=../../../integration/cmake/ class=md-nav__link> <span class=md-ellipsis> CMake </span> </a> </li> <li class=md-nav__item> <a href=../../../integration/package_managers/ class=md-nav__link> <span class=md-ellipsis> Package Managers </span> </a> </li> <li class=md-nav__item> <a href=../../../integration/pkg-config/ class=md-nav__link> <span class=md-ellipsis> Pkg-config </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--active md-nav__item--section md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4 checked> <label class=md-nav__link for=__nav_4 id=__nav_4_label tabindex> <span class=md-ellipsis> API Documentation </span> <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_4_label aria-expanded=true> <label class=md-nav__title for=__nav_4> <span class="md-nav__icon md-icon"></span> API Documentation </label> <ul class=md-nav__list data-md-scrollfix> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_1> <div class="md-nav__link md-nav__container"> <a href=../../basic_json/ class="md-nav__link "> <span class=md-ellipsis> basic_json </span> </a> <label class="md-nav__link " for=__nav_4_1 id=__nav_4_1_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_1_label aria-expanded=false> <label class=md-nav__title for=__nav_4_1> <span class="md-nav__icon md-icon"></span> basic_json </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../basic_json/basic_json/ class=md-nav__link> <span class=md-ellipsis> (Constructor) </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/~basic_json/ class=md-nav__link> <span class=md-ellipsis> (Destructor) </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/accept/ class=md-nav__link> <span class=md-ellipsis> accept </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/array/ class=md-nav__link> <span class=md-ellipsis> array </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/array_t/ class=md-nav__link> <span class=md-ellipsis> array_t </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/at/ class=md-nav__link> <span class=md-ellipsis> at </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/back/ class=md-nav__link> <span class=md-ellipsis> back </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/begin/ class=md-nav__link> <span class=md-ellipsis> begin </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/binary/ class=md-nav__link> <span class=md-ellipsis> binary </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/binary_t/ class=md-nav__link> <span class=md-ellipsis> binary_t </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/boolean_t/ class=md-nav__link> <span class=md-ellipsis> boolean_t </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/cbegin/ class=md-nav__link> <span class=md-ellipsis> cbegin </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/cbor_tag_handler_t/ class=md-nav__link> <span class=md-ellipsis> cbor_tag_handler_t </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/cend/ class=md-nav__link> <span class=md-ellipsis> cend </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/clear/ class=md-nav__link> <span class=md-ellipsis> clear </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/contains/ class=md-nav__link> <span class=md-ellipsis> contains </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/count/ class=md-nav__link> <span class=md-ellipsis> count </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/crbegin/ class=md-nav__link> <span class=md-ellipsis> crbegin </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/crend/ class=md-nav__link> <span class=md-ellipsis> crend </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/default_object_comparator_t/ class=md-nav__link> <span class=md-ellipsis> default_object_comparator_t </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/diff/ class=md-nav__link> <span class=md-ellipsis> diff </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/dump/ class=md-nav__link> <span class=md-ellipsis> dump </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/emplace/ class=md-nav__link> <span class=md-ellipsis> emplace </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/emplace_back/ class=md-nav__link> <span class=md-ellipsis> emplace_back </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/empty/ class=md-nav__link> <span class=md-ellipsis> empty </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/end/ class=md-nav__link> <span class=md-ellipsis> end </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/end_pos/ class=md-nav__link> <span class=md-ellipsis> end_pos </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/erase/ class=md-nav__link> <span class=md-ellipsis> erase </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/error_handler_t/ class=md-nav__link> <span class=md-ellipsis> error_handler_t </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/exception/ class=md-nav__link> <span class=md-ellipsis> exception </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/find/ class=md-nav__link> <span class=md-ellipsis> find </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/flatten/ class=md-nav__link> <span class=md-ellipsis> flatten </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/from_bjdata/ class=md-nav__link> <span class=md-ellipsis> from_bjdata </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/from_bson/ class=md-nav__link> <span class=md-ellipsis> from_bson </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/from_cbor/ class=md-nav__link> <span class=md-ellipsis> from_cbor </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/from_msgpack/ class=md-nav__link> <span class=md-ellipsis> from_msgpack </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/from_ubjson/ class=md-nav__link> <span class=md-ellipsis> from_ubjson </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/front/ class=md-nav__link> <span class=md-ellipsis> front </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/get/ class=md-nav__link> <span class=md-ellipsis> get </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/get_allocator/ class=md-nav__link> <span class=md-ellipsis> get_allocator </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/get_binary/ class=md-nav__link> <span class=md-ellipsis> get_binary </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/get_ptr/ class=md-nav__link> <span class=md-ellipsis> get_ptr </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/get_ref/ class=md-nav__link> <span class=md-ellipsis> get_ref </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/get_to/ class=md-nav__link> <span class=md-ellipsis> get_to </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/std_hash/ class=md-nav__link> <span class=md-ellipsis> std::hash&lt;basic_json&gt; </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/input_format_t/ class=md-nav__link> <span class=md-ellipsis> input_format_t </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/insert/ class=md-nav__link> <span class=md-ellipsis> insert </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/invalid_iterator/ class=md-nav__link> <span class=md-ellipsis> invalid_iterator </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/is_array/ class=md-nav__link> <span class=md-ellipsis> is_array </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/is_binary/ class=md-nav__link> <span class=md-ellipsis> is_binary </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/is_boolean/ class=md-nav__link> <span class=md-ellipsis> is_boolean </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/is_discarded/ class=md-nav__link> <span class=md-ellipsis> is_discarded </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/is_null/ class=md-nav__link> <span class=md-ellipsis> is_null </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/is_number/ class=md-nav__link> <span class=md-ellipsis> is_number </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/is_number_float/ class=md-nav__link> <span class=md-ellipsis> is_number_float </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/is_number_integer/ class=md-nav__link> <span class=md-ellipsis> is_number_integer </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/is_number_unsigned/ class=md-nav__link> <span class=md-ellipsis> is_number_unsigned </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/is_object/ class=md-nav__link> <span class=md-ellipsis> is_object </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/is_primitive/ class=md-nav__link> <span class=md-ellipsis> is_primitive </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/is_string/ class=md-nav__link> <span class=md-ellipsis> is_string </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/is_structured/ class=md-nav__link> <span class=md-ellipsis> is_structured </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/items/ class=md-nav__link> <span class=md-ellipsis> items </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/json_base_class_t/ class=md-nav__link> <span class=md-ellipsis> json_base_class_t </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/json_serializer/ class=md-nav__link> <span class=md-ellipsis> json_serializer </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/max_size/ class=md-nav__link> <span class=md-ellipsis> max_size </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/meta/ class=md-nav__link> <span class=md-ellipsis> meta </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/merge_patch/ class=md-nav__link> <span class=md-ellipsis> merge_patch </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/number_float_t/ class=md-nav__link> <span class=md-ellipsis> number_float_t </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/number_integer_t/ class=md-nav__link> <span class=md-ellipsis> number_integer_t </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/number_unsigned_t/ class=md-nav__link> <span class=md-ellipsis> number_unsigned_t </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/object/ class=md-nav__link> <span class=md-ellipsis> object </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/object_comparator_t/ class=md-nav__link> <span class=md-ellipsis> object_comparator_t </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/object_t/ class=md-nav__link> <span class=md-ellipsis> object_t </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/operator_ValueType/ class=md-nav__link> <span class=md-ellipsis> operator ValueType </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/operator_value_t/ class=md-nav__link> <span class=md-ellipsis> operator value_t </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/operator%5B%5D/ class=md-nav__link> <span class=md-ellipsis> operator[] </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/operator%3D/ class=md-nav__link> <span class=md-ellipsis> operator= </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/operator%2B%3D/ class=md-nav__link> <span class=md-ellipsis> operator+= </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/operator_eq/ class=md-nav__link> <span class=md-ellipsis> operator== </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/operator_ne/ class=md-nav__link> <span class=md-ellipsis> operator!= </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/operator_lt/ class=md-nav__link> <span class=md-ellipsis> operator< </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/operator_gt/ class=md-nav__link> <span class=md-ellipsis> operator> </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/operator_le/ class=md-nav__link> <span class=md-ellipsis> operator<= </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/operator_ge/ class=md-nav__link> <span class=md-ellipsis> operator>= </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/operator_spaceship/ class=md-nav__link> <span class=md-ellipsis> operator<=> </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/out_of_range/ class=md-nav__link> <span class=md-ellipsis> out_of_range </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/other_error/ class=md-nav__link> <span class=md-ellipsis> other_error </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/parse/ class=md-nav__link> <span class=md-ellipsis> parse </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/parse_error/ class=md-nav__link> <span class=md-ellipsis> parse_error </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/parse_event_t/ class=md-nav__link> <span class=md-ellipsis> parse_event_t </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/parser_callback_t/ class=md-nav__link> <span class=md-ellipsis> parser_callback_t </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/patch/ class=md-nav__link> <span class=md-ellipsis> patch </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/patch_inplace/ class=md-nav__link> <span class=md-ellipsis> patch_inplace </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/push_back/ class=md-nav__link> <span class=md-ellipsis> push_back </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/rbegin/ class=md-nav__link> <span class=md-ellipsis> rbegin </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/rend/ class=md-nav__link> <span class=md-ellipsis> rend </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/sax_parse/ class=md-nav__link> <span class=md-ellipsis> sax_parse </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/size/ class=md-nav__link> <span class=md-ellipsis> size </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/start_pos/ class=md-nav__link> <span class=md-ellipsis> start_pos </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/string_t/ class=md-nav__link> <span class=md-ellipsis> string_t </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/swap/ class=md-nav__link> <span class=md-ellipsis> swap </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/std_swap/ class=md-nav__link> <span class=md-ellipsis> std::swap&lt;basic_json&gt; </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/to_bjdata/ class=md-nav__link> <span class=md-ellipsis> to_bjdata </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/to_bson/ class=md-nav__link> <span class=md-ellipsis> to_bson </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/to_cbor/ class=md-nav__link> <span class=md-ellipsis> to_cbor </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/to_msgpack/ class=md-nav__link> <span class=md-ellipsis> to_msgpack </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/to_string/ class=md-nav__link> <span class=md-ellipsis> to_string </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/to_ubjson/ class=md-nav__link> <span class=md-ellipsis> to_ubjson </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/type/ class=md-nav__link> <span class=md-ellipsis> type </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/type_error/ class=md-nav__link> <span class=md-ellipsis> type_error </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/type_name/ class=md-nav__link> <span class=md-ellipsis> type_name </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/unflatten/ class=md-nav__link> <span class=md-ellipsis> unflatten </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/update/ class=md-nav__link> <span class=md-ellipsis> update </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/value/ class=md-nav__link> <span class=md-ellipsis> value </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/value_t/ class=md-nav__link> <span class=md-ellipsis> value_t </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_2> <div class="md-nav__link md-nav__container"> <a href=../../byte_container_with_subtype/ class="md-nav__link "> <span class=md-ellipsis> byte_container_with_subtype </span> </a> <label class="md-nav__link " for=__nav_4_2 id=__nav_4_2_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_2_label aria-expanded=false> <label class=md-nav__title for=__nav_4_2> <span class="md-nav__icon md-icon"></span> byte_container_with_subtype </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../byte_container_with_subtype/byte_container_with_subtype/ class=md-nav__link> <span class=md-ellipsis> (constructor) </span> </a> </li> <li class=md-nav__item> <a href=../../byte_container_with_subtype/clear_subtype/ class=md-nav__link> <span class=md-ellipsis> clear_subtype </span> </a> </li> <li class=md-nav__item> <a href=../../byte_container_with_subtype/has_subtype/ class=md-nav__link> <span class=md-ellipsis> has_subtype </span> </a> </li> <li class=md-nav__item> <a href=../../byte_container_with_subtype/set_subtype/ class=md-nav__link> <span class=md-ellipsis> set_subtype </span> </a> </li> <li class=md-nav__item> <a href=../../byte_container_with_subtype/subtype/ class=md-nav__link> <span class=md-ellipsis> subtype </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_3> <div class="md-nav__link md-nav__container"> <a href=../../adl_serializer/ class="md-nav__link "> <span class=md-ellipsis> adl_serializer </span> </a> <label class="md-nav__link " for=__nav_4_3 id=__nav_4_3_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_3_label aria-expanded=false> <label class=md-nav__title for=__nav_4_3> <span class="md-nav__icon md-icon"></span> adl_serializer </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../adl_serializer/from_json/ class=md-nav__link> <span class=md-ellipsis> from_json </span> </a> </li> <li class=md-nav__item> <a href=../../adl_serializer/to_json/ class=md-nav__link> <span class=md-ellipsis> to_json </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../json/ class=md-nav__link> <span class=md-ellipsis> json </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_5> <div class="md-nav__link md-nav__container"> <a href=../../json_pointer/ class="md-nav__link "> <span class=md-ellipsis> json_pointer </span> </a> <label class="md-nav__link " for=__nav_4_5 id=__nav_4_5_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_5_label aria-expanded=false> <label class=md-nav__title for=__nav_4_5> <span class="md-nav__icon md-icon"></span> json_pointer </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../json_pointer/json_pointer/ class=md-nav__link> <span class=md-ellipsis> (Constructor) </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/back/ class=md-nav__link> <span class=md-ellipsis> back </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/empty/ class=md-nav__link> <span class=md-ellipsis> empty </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/front/ class=md-nav__link> <span class=md-ellipsis> front </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_string_t/ class=md-nav__link> <span class=md-ellipsis> operator string_t </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_eq/ class=md-nav__link> <span class=md-ellipsis> operator== </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_ne/ class=md-nav__link> <span class=md-ellipsis> operator!= </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_slash/ class=md-nav__link> <span class=md-ellipsis> operator/ </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_slasheq/ class=md-nav__link> <span class=md-ellipsis> operator/= </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/parent_pointer/ class=md-nav__link> <span class=md-ellipsis> parent_pointer </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/pop_back/ class=md-nav__link> <span class=md-ellipsis> pop_back </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/pop_front/ class=md-nav__link> <span class=md-ellipsis> pop_front </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/push_back/ class=md-nav__link> <span class=md-ellipsis> push_back </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/push_front/ class=md-nav__link> <span class=md-ellipsis> push_front </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/string_t/ class=md-nav__link> <span class=md-ellipsis> string_t </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/to_string/ class=md-nav__link> <span class=md-ellipsis> to_string </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_6> <div class="md-nav__link md-nav__container"> <a href=../../json_sax/ class="md-nav__link "> <span class=md-ellipsis> json_sax </span> </a> <label class="md-nav__link " for=__nav_4_6 id=__nav_4_6_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_6_label aria-expanded=false> <label class=md-nav__title for=__nav_4_6> <span class="md-nav__icon md-icon"></span> json_sax </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../json_sax/binary/ class=md-nav__link> <span class=md-ellipsis> binary </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/boolean/ class=md-nav__link> <span class=md-ellipsis> boolean </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/end_array/ class=md-nav__link> <span class=md-ellipsis> end_array </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/end_object/ class=md-nav__link> <span class=md-ellipsis> end_object </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/key/ class=md-nav__link> <span class=md-ellipsis> key </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/null/ class=md-nav__link> <span class=md-ellipsis> null </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/number_float/ class=md-nav__link> <span class=md-ellipsis> number_float </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/number_integer/ class=md-nav__link> <span class=md-ellipsis> number_integer </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/number_unsigned/ class=md-nav__link> <span class=md-ellipsis> number_unsigned </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/parse_error/ class=md-nav__link> <span class=md-ellipsis> parse_error </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/start_array/ class=md-nav__link> <span class=md-ellipsis> start_array </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/start_object/ class=md-nav__link> <span class=md-ellipsis> start_object </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/string/ class=md-nav__link> <span class=md-ellipsis> string </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../operator_ltlt/ class=md-nav__link> <span class=md-ellipsis> operator<<(basic_json), operator<<(json_pointer) </span> </a> </li> <li class=md-nav__item> <a href=../../operator_gtgt/ class=md-nav__link> <span class=md-ellipsis> operator>>(basic_json) </span> </a> </li> <li class=md-nav__item> <a href=../../operator_literal_json/ class=md-nav__link> <span class=md-ellipsis> operator""_json </span> </a> </li> <li class=md-nav__item> <a href=../../operator_literal_json_pointer/ class=md-nav__link> <span class=md-ellipsis> operator""_json_pointer </span> </a> </li> <li class=md-nav__item> <a href=../../ordered_json/ class=md-nav__link> <span class=md-ellipsis> ordered_json </span> </a> </li> <li class=md-nav__item> <a href=../../ordered_map/ class=md-nav__link> <span class=md-ellipsis> ordered_map </span> </a> </li> <li class="md-nav__item md-nav__item--active md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_13 checked> <div class="md-nav__link md-nav__container"> <a href=../ class="md-nav__link "> <span class=md-ellipsis> macros </span> </a> <label class="md-nav__link " for=__nav_4_13 id=__nav_4_13_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_13_label aria-expanded=true> <label class=md-nav__title for=__nav_4_13> <span class="md-nav__icon md-icon"></span> macros </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../json_assert/ class=md-nav__link> <span class=md-ellipsis> JSON_ASSERT </span> </a> </li> <li class=md-nav__item> <a href=../json_brace_init_copy_semantics/ class=md-nav__link> <span class=md-ellipsis> JSON_BRACE_INIT_COPY_SEMANTICS </span> </a> </li> <li class=md-nav__item> <a href=../json_throw_user/ class=md-nav__link> <span class=md-ellipsis> JSON_CATCH_USER, JSON_THROW_USER, JSON_TRY_USER </span> </a> </li> <li class=md-nav__item> <a href=../json_diagnostics/ class=md-nav__link> <span class=md-ellipsis> JSON_DIAGNOSTICS </span> </a> </li> <li class=md-nav__item> <a href=../json_diagnostic_positions/ class=md-nav__link> <span class=md-ellipsis> JSON_DIAGNOSTIC_POSITIONS </span> </a> </li> <li class=md-nav__item> <a href=../json_disable_enum_serialization/ class=md-nav__link> <span class=md-ellipsis> JSON_DISABLE_ENUM_SERIALIZATION </span> </a> </li> <li class=md-nav__item> <a href=../json_has_cpp_11/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_CPP_11, JSON_HAS_CPP_14, JSON_HAS_CPP_17, JSON_HAS_CPP_20 </span> </a> </li> <li class=md-nav__item> <a href=../json_has_filesystem/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_EXPERIMENTAL_FILESYSTEM, JSON_HAS_FILESYSTEM </span> </a> </li> <li class=md-nav__item> <a href=../json_has_ranges/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_RANGES </span> </a> </li> <li class=md-nav__item> <a href=../json_has_static_rtti/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_STATIC_RTTI </span> </a> </li> <li class=md-nav__item> <a href=../json_has_three_way_comparison/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_THREE_WAY_COMPARISON </span> </a> </li> <li class=md-nav__item> <a href=../json_noexception/ class=md-nav__link> <span class=md-ellipsis> JSON_NOEXCEPTION </span> </a> </li> <li class=md-nav__item> <a href=../json_no_io/ class=md-nav__link> <span class=md-ellipsis> JSON_NO_IO </span> </a> </li> <li class=md-nav__item> <a href=../json_skip_library_version_check/ class=md-nav__link> <span class=md-ellipsis> JSON_SKIP_LIBRARY_VERSION_CHECK </span> </a> </li> <li class=md-nav__item> <a href=../json_skip_unsupported_compiler_check/ class=md-nav__link> <span class=md-ellipsis> JSON_SKIP_UNSUPPORTED_COMPILER_CHECK </span> </a> </li> <li class=md-nav__item> <a href=../json_use_global_udls/ class=md-nav__link> <span class=md-ellipsis> JSON_USE_GLOBAL_UDLS </span> </a> </li> <li class=md-nav__item> <a href=../json_use_implicit_conversions/ class=md-nav__link> <span class=md-ellipsis> JSON_USE_IMPLICIT_CONVERSIONS </span> </a> </li> <li class="md-nav__item md-nav__item--active"> <input class="md-nav__toggle md-toggle" type=checkbox id=__toc> <label class="md-nav__link md-nav__link--active" for=__toc> <span class=md-ellipsis> JSON_USE_LEGACY_DISCARDED_VALUE_COMPARISON </span> <span class="md-nav__icon md-icon"></span> </label> <a href=./ class="md-nav__link md-nav__link--active"> <span class=md-ellipsis> JSON_USE_LEGACY_DISCARDED_VALUE_COMPARISON </span> </a> <nav class="md-nav md-nav--secondary" aria-label="Table of contents"> <label class=md-nav__title for=__toc> <span class="md-nav__icon md-icon"></span> Table of contents </label> <ul class=md-nav__list data-md-component=toc data-md-scrollfix> <li class=md-nav__item> <a href=#default-definition class=md-nav__link> <span class=md-ellipsis> Default definition </span> </a> </li> <li class=md-nav__item> <a href=#notes class=md-nav__link> <span class=md-ellipsis> Notes </span> </a> </li> <li class=md-nav__item> <a href=#examples class=md-nav__link> <span class=md-ellipsis> Examples </span> </a> <nav class=md-nav aria-label=Examples> <ul class=md-nav__list> <li class=md-nav__item> <a href=#see-also class=md-nav__link> <span class=md-ellipsis> See also </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=#version-history class=md-nav__link> <span class=md-ellipsis> Version history </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../nlohmann_define_derived_type/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_ONLY_SERIALIZE, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE </span> </a> </li> <li class=md-nav__item> <a href=../nlohmann_define_type_intrusive/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_TYPE_INTRUSIVE, NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_TYPE_INTRUSIVE_ONLY_SERIALIZE </span> </a> </li> <li class=md-nav__item> <a href=../nlohmann_define_type_non_intrusive/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE </span> </a> </li> <li class=md-nav__item> <a href=../nlohmann_define_type_with_names/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_TYPE_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES </span> </a> </li> <li class=md-nav__item> <a href=../nlohmann_json_namespace/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_NAMESPACE </span> </a> </li> <li class=md-nav__item> <a href=../nlohmann_json_namespace_begin/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_NAMESPACE_BEGIN, NLOHMANN_JSON_NAMESPACE_END </span> </a> </li> <li class=md-nav__item> <a href=../nlohmann_json_namespace_no_version/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_NAMESPACE_NO_VERSION </span> </a> </li> <li class=md-nav__item> <a href=../nlohmann_json_serialize_enum/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_SERIALIZE_ENUM </span> </a> </li> <li class=md-nav__item> <a href=../nlohmann_json_serialize_enum_strict/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_SERIALIZE_ENUM_STRICT </span> </a> </li> <li class=md-nav__item> <a href=../nlohmann_json_version_major/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_VERSION_MAJOR, NLOHMANN_JSON_VERSION_MINOR, NLOHMANN_JSON_VERSION_PATCH </span> </a> </li> </ul> </nav> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_5> <div class="md-nav__link md-nav__container"> <a href=../../../community/ class="md-nav__link "> <span class=md-ellipsis> Community </span> </a> <label class="md-nav__link " for=__nav_5 id=__nav_5_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_5_label aria-expanded=false> <label class=md-nav__title for=__nav_5> <span class="md-nav__icon md-icon"></span> Community </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../community/code_of_conduct/ class=md-nav__link> <span class=md-ellipsis> Code of Conduct </span> </a> </li> <li class=md-nav__item> <a href=../../../community/contribution_guidelines/ class=md-nav__link> <span class=md-ellipsis> Contribution Guidelines </span> </a> </li> <li class=md-nav__item> <a href=../../../community/quality_assurance/ class=md-nav__link> <span class=md-ellipsis> Quality assurance </span> </a> </li> <li class=md-nav__item> <a href=../../../community/governance/ class=md-nav__link> <span class=md-ellipsis> Governance </span> </a> </li> <li class=md-nav__item> <a href=../../../community/security_policy/ class=md-nav__link> <span class=md-ellipsis> Security Policy </span> </a> </li> </ul> </nav> </li> </ul> </nav> </div> </div> </div> <div class="md-sidebar md-sidebar--secondary" data-md-component=sidebar data-md-type=toc> <div class=md-sidebar__scrollwrap> <div class=md-sidebar__inner> <nav class="md-nav md-nav--secondary" aria-label="Table of contents"> <label class=md-nav__title for=__toc> <span class="md-nav__icon md-icon"></span> Table of contents </label> <ul class=md-nav__list data-md-component=toc data-md-scrollfix> <li class=md-nav__item> <a href=#default-definition class=md-nav__link> <span class=md-ellipsis> Default definition </span> </a> </li> <li class=md-nav__item> <a href=#notes class=md-nav__link> <span class=md-ellipsis> Notes </span> </a> </li> <li class=md-nav__item> <a href=#examples class=md-nav__link> <span class=md-ellipsis> Examples </span> </a> <nav class=md-nav aria-label=Examples> <ul class=md-nav__list> <li class=md-nav__item> <a href=#see-also class=md-nav__link> <span class=md-ellipsis> See also </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=#version-history class=md-nav__link> <span class=md-ellipsis> Version history </span> </a> </li> </ul> </nav> </div> </div> </div> <div class=md-content data-md-component=content> <article class="md-content__inner md-typeset"> <a href="https://github.com/nlohmann/json/edit/develop/docs/mkdocs/docs/api/macros/json_use_legacy_discarded_value_comparison.md" title="Edit this page" class="md-content__button md-icon" rel="edit"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M10 20H6V4h7v5h5v3.1l2-2V8l-6-6H6c-1.1 0-2 .9-2 2v16c0 1.1.9 2 2 2h4zm10.2-7c.1 0 .3.1.4.2l1.3 1.3c.2.2.2.6 0 .8l-1 1-2.1-2.1 1-1c.1-.1.2-.2.4-.2m0 3.9L14.1 23H12v-2.1l6.1-6.1z"/></svg> </a> <a href="https://github.com/nlohmann/json/raw/develop/docs/mkdocs/docs/api/macros/json_use_legacy_discarded_value_comparison.md" title="View source of this page" class="md-content__button md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M17 18c.56 0 1 .44 1 1s-.44 1-1 1-1-.44-1-1 .44-1 1-1m0-3c-2.73 0-5.06 1.66-6 4 .94 2.34 3.27 4 6 4s5.06-1.66 6-4c-.94-2.34-3.27-4-6-4m0 6.5a2.5 2.5 0 0 1-2.5-2.5 2.5 2.5 0 0 1 2.5-2.5 2.5 2.5 0 0 1 2.5 2.5 2.5 2.5 0 0 1-2.5 2.5M9.27 20H6V4h7v5h5v4.07c.7.08 1.36.25 2 .49V8l-6-6H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h4.5a8.2 8.2 0 0 1-1.23-2"/></svg> </a> <h1 id=json_use_legacy_discarded_value_comparison>JSON_USE_LEGACY_DISCARDED_VALUE_COMPARISON<a class=headerlink href=#json_use_legacy_discarded_value_comparison title="Permanent link">&para;</a></h1> <div class=highlight><pre><span></span><code><span class=cp>#define JSON_USE_LEGACY_DISCARDED_VALUE_COMPARISON </span><span class=cm>/* value */</span>
+<!doctype html><html lang=en class=no-js> <head><meta charset=utf-8><meta name=viewport content="width=device-width,initial-scale=1"><meta name=author content="Niels Lohmann"><link href="https://json.nlohmann.me/api/macros/json_use_legacy_discarded_value_comparison/" rel="canonical"><link href=../json_use_implicit_conversions/ rel=prev><link href=../nlohmann_define_derived_type/ rel=next><link rel=icon href=../../../assets/images/favicon.png><meta name=generator content="mkdocs-1.6.1, mkdocs-material-9.7.6"><title>JSON_USE_LEGACY_DISCARDED_VALUE_COMPARISON - JSON for Modern C++</title><link rel=stylesheet href=../../../assets/stylesheets/main.484c7ddc.min.css><link rel=stylesheet href=../../../assets/stylesheets/palette.ab4e12ef.min.css><link rel="stylesheet" href="../../../assets/external/fonts.googleapis.com/css.61a430c9.css"><style>:root{--md-text-font:"Roboto";--md-code-font:"JetBrains Mono"}</style><link rel=stylesheet href=../../../css/custom.css><script>__md_scope=new URL("../../..",location),__md_hash=e=>[...e].reduce(((e,_)=>(e<<5)-e+_.charCodeAt(0)),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script></head> <body dir=ltr data-md-color-scheme=default data-md-color-primary=indigo data-md-color-accent=indigo> <input class=md-toggle data-md-toggle=drawer type=checkbox id=__drawer autocomplete=off> <input class=md-toggle data-md-toggle=search type=checkbox id=__search autocomplete=off> <label class=md-overlay for=__drawer></label> <div data-md-component=skip> <a href=#json_use_legacy_discarded_value_comparison class=md-skip> Skip to content </a> </div> <div data-md-component=announce> </div> <header class=md-header data-md-component=header> <nav class="md-header__inner md-grid" aria-label=Header> <a href=../../.. title="JSON for Modern C++" class="md-header__button md-logo" aria-label="JSON for Modern C++" data-md-component=logo> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54"/></svg> </a> <label class="md-header__button md-icon" for=__drawer> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M3 6h18v2H3zm0 5h18v2H3zm0 5h18v2H3z"/></svg> </label> <div class=md-header__title data-md-component=header-title> <div class=md-header__ellipsis> <div class=md-header__topic> <span class=md-ellipsis> JSON for Modern C++ </span> </div> <div class=md-header__topic data-md-component=header-topic> <span class=md-ellipsis> JSON_USE_LEGACY_DISCARDED_VALUE_COMPARISON </span> </div> </div> </div> <form class=md-header__option data-md-component=palette> <input class=md-option data-md-color-media="(prefers-color-scheme: light)" data-md-color-scheme=default data-md-color-primary=indigo data-md-color-accent=indigo aria-label="Switch to dark mode" type=radio name=__palette id=__palette_0> <label class="md-header__button md-icon" title="Switch to dark mode" for=__palette_1 hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a4 4 0 0 0-4 4 4 4 0 0 0 4 4 4 4 0 0 0 4-4 4 4 0 0 0-4-4m0 10a6 6 0 0 1-6-6 6 6 0 0 1 6-6 6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12z"/></svg> </label> <input class=md-option data-md-color-media="(prefers-color-scheme: dark)" data-md-color-scheme=slate data-md-color-primary=indigo data-md-color-accent=indigo aria-label="Switch to light mode" type=radio name=__palette id=__palette_1> <label class="md-header__button md-icon" title="Switch to light mode" for=__palette_0 hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 18c-.89 0-1.74-.2-2.5-.55C11.56 16.5 13 14.42 13 12s-1.44-4.5-3.5-5.45C10.26 6.2 11.11 6 12 6a6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12z"/></svg> </label> </form> <script>var palette=__md_get("__palette");if(palette&&palette.color){if("(prefers-color-scheme)"===palette.color.media){var media=matchMedia("(prefers-color-scheme: light)"),input=document.querySelector(media.matches?"[data-md-color-media='(prefers-color-scheme: light)']":"[data-md-color-media='(prefers-color-scheme: dark)']");palette.color.media=input.getAttribute("data-md-color-media"),palette.color.scheme=input.getAttribute("data-md-color-scheme"),palette.color.primary=input.getAttribute("data-md-color-primary"),palette.color.accent=input.getAttribute("data-md-color-accent")}for(var[key,value]of Object.entries(palette.color))document.body.setAttribute("data-md-color-"+key,value)}</script> <label class="md-header__button md-icon" for=__search> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg> </label> <div class=md-search data-md-component=search role=dialog> <label class=md-search__overlay for=__search></label> <div class=md-search__inner role=search> <form class=md-search__form name=search> <input type=text class=md-search__input name=query aria-label=Search placeholder=Search autocapitalize=off autocorrect=off autocomplete=off spellcheck=false data-md-component=search-query required> <label class="md-search__icon md-icon" for=__search> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11z"/></svg> </label> <nav class=md-search__options aria-label=Search> <button type=reset class="md-search__icon md-icon" title=Clear aria-label=Clear tabindex=-1> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z"/></svg> </button> </nav> </form> <div class=md-search__output> <div class=md-search__scrollwrap tabindex=0 data-md-scrollfix> <div class=md-search-result data-md-component=search-result> <div class=md-search-result__meta> Initializing search </div> <ol class=md-search-result__list role=presentation></ol> </div> </div> </div> </div> </div> <div class=md-header__source> <a href="https://github.com/nlohmann/json" title="Go to repository" class="md-source" data-md-component="source"> <div class="md-source__icon md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </div> <div class=md-source__repository> nlohmann/json </div> </a> </div> </nav> </header> <div class=md-container data-md-component=container> <nav class=md-tabs aria-label=Tabs data-md-component=tabs> <div class=md-grid> <ul class=md-tabs__list> <li class=md-tabs__item> <a href=../../.. class=md-tabs__link> Home </a> </li> <li class=md-tabs__item> <a href=../../../features/arbitrary_types/ class=md-tabs__link> Features </a> </li> <li class=md-tabs__item> <a href=../../../integration/ class=md-tabs__link> Integration </a> </li> <li class="md-tabs__item md-tabs__item--active"> <a href=../../basic_json/ class=md-tabs__link> API Documentation </a> </li> <li class=md-tabs__item> <a href=../../../community/ class=md-tabs__link> Community </a> </li> </ul> </div> </nav> <main class=md-main data-md-component=main> <div class="md-main__inner md-grid"> <div class="md-sidebar md-sidebar--primary" data-md-component=sidebar data-md-type=navigation> <div class=md-sidebar__scrollwrap> <div class=md-sidebar__inner> <nav class="md-nav md-nav--primary md-nav--lifted" aria-label=Navigation data-md-level=0> <label class=md-nav__title for=__drawer> <a href=../../.. title="JSON for Modern C++" class="md-nav__button md-logo" aria-label="JSON for Modern C++" data-md-component=logo> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54"/></svg> </a> JSON for Modern C++ </label> <div class=md-nav__source> <a href="https://github.com/nlohmann/json" title="Go to repository" class="md-source" data-md-component="source"> <div class="md-source__icon md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </div> <div class=md-source__repository> nlohmann/json </div> </a> </div> <ul class=md-nav__list data-md-scrollfix> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_1> <div class="md-nav__link md-nav__container"> <a href=../../.. class="md-nav__link "> <span class=md-ellipsis> Home </span> </a> <label class="md-nav__link " for=__nav_1 id=__nav_1_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_1_label aria-expanded=false> <label class=md-nav__title for=__nav_1> <span class="md-nav__icon md-icon"></span> Home </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../home/license/ class=md-nav__link> <span class=md-ellipsis> License </span> </a> </li> <li class=md-nav__item> <a href=../../../home/faq/ class=md-nav__link> <span class=md-ellipsis> FAQ </span> </a> </li> <li class=md-nav__item> <a href=../../../home/exceptions/ class=md-nav__link> <span class=md-ellipsis> Exceptions </span> </a> </li> <li class=md-nav__item> <a href=../../../home/releases/ class=md-nav__link> <span class=md-ellipsis> Releases </span> </a> </li> <li class=md-nav__item> <a href=../../../home/design_goals/ class=md-nav__link> <span class=md-ellipsis> Design goals </span> </a> </li> <li class=md-nav__item> <a href=../../../home/architecture/ class=md-nav__link> <span class=md-ellipsis> Architecture </span> </a> </li> <li class=md-nav__item> <a href=../../../home/customers/ class=md-nav__link> <span class=md-ellipsis> Customers </span> </a> </li> <li class=md-nav__item> <a href=../../../home/sponsors/ class=md-nav__link> <span class=md-ellipsis> Sponsors </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2> <label class=md-nav__link for=__nav_2 id=__nav_2_label tabindex=0> <span class=md-ellipsis> Features </span> <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_2_label aria-expanded=false> <label class=md-nav__title for=__nav_2> <span class="md-nav__icon md-icon"></span> Features </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/arbitrary_types/ class=md-nav__link> <span class=md-ellipsis> Arbitrary Type Conversions </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_2> <div class="md-nav__link md-nav__container"> <a href=../../../features/binary_formats/ class="md-nav__link "> <span class=md-ellipsis> Binary Formats </span> </a> <label class="md-nav__link " for=__nav_2_2 id=__nav_2_2_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_2_label aria-expanded=false> <label class=md-nav__title for=__nav_2_2> <span class="md-nav__icon md-icon"></span> Binary Formats </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/binary_formats/bjdata/ class=md-nav__link> <span class=md-ellipsis> BJData </span> </a> </li> <li class=md-nav__item> <a href=../../../features/binary_formats/bson/ class=md-nav__link> <span class=md-ellipsis> BSON </span> </a> </li> <li class=md-nav__item> <a href=../../../features/binary_formats/cbor/ class=md-nav__link> <span class=md-ellipsis> CBOR </span> </a> </li> <li class=md-nav__item> <a href=../../../features/binary_formats/messagepack/ class=md-nav__link> <span class=md-ellipsis> MessagePack </span> </a> </li> <li class=md-nav__item> <a href=../../../features/binary_formats/ubjson/ class=md-nav__link> <span class=md-ellipsis> UBJSON </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../../features/binary_values/ class=md-nav__link> <span class=md-ellipsis> Binary Values </span> </a> </li> <li class=md-nav__item> <a href=../../../features/comments/ class=md-nav__link> <span class=md-ellipsis> Comments </span> </a> </li> <li class=md-nav__item> <a href=../../../features/trailing_commas/ class=md-nav__link> <span class=md-ellipsis> Trailing Commas </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_6> <div class="md-nav__link md-nav__container"> <a href=../../../features/element_access/ class="md-nav__link "> <span class=md-ellipsis> Element Access </span> </a> <label class="md-nav__link " for=__nav_2_6 id=__nav_2_6_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_6_label aria-expanded=false> <label class=md-nav__title for=__nav_2_6> <span class="md-nav__icon md-icon"></span> Element Access </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/element_access/unchecked_access/ class=md-nav__link> <span class=md-ellipsis> Unchecked access: operator[] </span> </a> </li> <li class=md-nav__item> <a href=../../../features/element_access/checked_access/ class=md-nav__link> <span class=md-ellipsis> Checked access: at </span> </a> </li> <li class=md-nav__item> <a href=../../../features/element_access/default_value/ class=md-nav__link> <span class=md-ellipsis> Access with default value: value </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../../features/iterators/ class=md-nav__link> <span class=md-ellipsis> Iterators </span> </a> </li> <li class=md-nav__item> <a href=../../../features/json_pointer/ class=md-nav__link> <span class=md-ellipsis> JSON Pointer </span> </a> </li> <li class=md-nav__item> <a href=../../../features/json_patch/ class=md-nav__link> <span class=md-ellipsis> JSON Patch and Diff </span> </a> </li> <li class=md-nav__item> <a href=../../../features/merge_patch/ class=md-nav__link> <span class=md-ellipsis> JSON Merge Patch </span> </a> </li> <li class=md-nav__item> <a href=../../../features/modules/ class=md-nav__link> <span class=md-ellipsis> Modules </span> </a> </li> <li class=md-nav__item> <a href=../../../features/namespace/ class=md-nav__link> <span class=md-ellipsis> nlohmann Namespace </span> </a> </li> <li class=md-nav__item> <a href=../../../features/object_order/ class=md-nav__link> <span class=md-ellipsis> Object Order </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_14> <div class="md-nav__link md-nav__container"> <a href=../../../features/parsing/ class="md-nav__link "> <span class=md-ellipsis> Parsing </span> </a> <label class="md-nav__link " for=__nav_2_14 id=__nav_2_14_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_14_label aria-expanded=false> <label class=md-nav__title for=__nav_2_14> <span class="md-nav__icon md-icon"></span> Parsing </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/parsing/json_lines/ class=md-nav__link> <span class=md-ellipsis> JSON Lines </span> </a> </li> <li class=md-nav__item> <a href=../../../features/parsing/parse_exceptions/ class=md-nav__link> <span class=md-ellipsis> Parsing and Exceptions </span> </a> </li> <li class=md-nav__item> <a href=../../../features/parsing/parser_callbacks/ class=md-nav__link> <span class=md-ellipsis> Parser Callbacks </span> </a> </li> <li class=md-nav__item> <a href=../../../features/parsing/sax_interface/ class=md-nav__link> <span class=md-ellipsis> SAX Interface </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../../features/assertions/ class=md-nav__link> <span class=md-ellipsis> Runtime Assertions </span> </a> </li> <li class=md-nav__item> <a href=../../../features/enum_conversion/ class=md-nav__link> <span class=md-ellipsis> Specializing enum conversion </span> </a> </li> <li class=md-nav__item> <a href=../../../features/macros/ class=md-nav__link> <span class=md-ellipsis> Supported Macros </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_18> <div class="md-nav__link md-nav__container"> <a href=../../../features/types/ class="md-nav__link "> <span class=md-ellipsis> Types </span> </a> <label class="md-nav__link " for=__nav_2_18 id=__nav_2_18_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_18_label aria-expanded=false> <label class=md-nav__title for=__nav_2_18> <span class="md-nav__icon md-icon"></span> Types </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/types/number_handling/ class=md-nav__link> <span class=md-ellipsis> Number Handling </span> </a> </li> </ul> </nav> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_3> <div class="md-nav__link md-nav__container"> <a href=../../../integration/ class="md-nav__link "> <span class=md-ellipsis> Integration </span> </a> <label class="md-nav__link " for=__nav_3 id=__nav_3_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_3_label aria-expanded=false> <label class=md-nav__title for=__nav_3> <span class="md-nav__icon md-icon"></span> Integration </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../integration/migration_guide/ class=md-nav__link> <span class=md-ellipsis> Migration Guide </span> </a> </li> <li class=md-nav__item> <a href=../../../integration/cmake/ class=md-nav__link> <span class=md-ellipsis> CMake </span> </a> </li> <li class=md-nav__item> <a href=../../../integration/package_managers/ class=md-nav__link> <span class=md-ellipsis> Package Managers </span> </a> </li> <li class=md-nav__item> <a href=../../../integration/pkg-config/ class=md-nav__link> <span class=md-ellipsis> Pkg-config </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--active md-nav__item--section md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4 checked> <label class=md-nav__link for=__nav_4 id=__nav_4_label tabindex> <span class=md-ellipsis> API Documentation </span> <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_4_label aria-expanded=true> <label class=md-nav__title for=__nav_4> <span class="md-nav__icon md-icon"></span> API Documentation </label> <ul class=md-nav__list data-md-scrollfix> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_1> <div class="md-nav__link md-nav__container"> <a href=../../basic_json/ class="md-nav__link "> <span class=md-ellipsis> basic_json </span> </a> <label class="md-nav__link " for=__nav_4_1 id=__nav_4_1_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_1_label aria-expanded=false> <label class=md-nav__title for=__nav_4_1> <span class="md-nav__icon md-icon"></span> basic_json </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../basic_json/basic_json/ class=md-nav__link> <span class=md-ellipsis> (Constructor) </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/~basic_json/ class=md-nav__link> <span class=md-ellipsis> (Destructor) </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/accept/ class=md-nav__link> <span class=md-ellipsis> accept </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/array/ class=md-nav__link> <span class=md-ellipsis> array </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/array_t/ class=md-nav__link> <span class=md-ellipsis> array_t </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/at/ class=md-nav__link> <span class=md-ellipsis> at </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/back/ class=md-nav__link> <span class=md-ellipsis> back </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/begin/ class=md-nav__link> <span class=md-ellipsis> begin </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/binary/ class=md-nav__link> <span class=md-ellipsis> binary </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/binary_t/ class=md-nav__link> <span class=md-ellipsis> binary_t </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/boolean_t/ class=md-nav__link> <span class=md-ellipsis> boolean_t </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/cbegin/ class=md-nav__link> <span class=md-ellipsis> cbegin </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/cbor_tag_handler_t/ class=md-nav__link> <span class=md-ellipsis> cbor_tag_handler_t </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/cend/ class=md-nav__link> <span class=md-ellipsis> cend </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/clear/ class=md-nav__link> <span class=md-ellipsis> clear </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/contains/ class=md-nav__link> <span class=md-ellipsis> contains </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/count/ class=md-nav__link> <span class=md-ellipsis> count </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/crbegin/ class=md-nav__link> <span class=md-ellipsis> crbegin </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/crend/ class=md-nav__link> <span class=md-ellipsis> crend </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/default_object_comparator_t/ class=md-nav__link> <span class=md-ellipsis> default_object_comparator_t </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/diff/ class=md-nav__link> <span class=md-ellipsis> diff </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/dump/ class=md-nav__link> <span class=md-ellipsis> dump </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/emplace/ class=md-nav__link> <span class=md-ellipsis> emplace </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/emplace_back/ class=md-nav__link> <span class=md-ellipsis> emplace_back </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/empty/ class=md-nav__link> <span class=md-ellipsis> empty </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/end/ class=md-nav__link> <span class=md-ellipsis> end </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/end_pos/ class=md-nav__link> <span class=md-ellipsis> end_pos </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/erase/ class=md-nav__link> <span class=md-ellipsis> erase </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/error_handler_t/ class=md-nav__link> <span class=md-ellipsis> error_handler_t </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/exception/ class=md-nav__link> <span class=md-ellipsis> exception </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/find/ class=md-nav__link> <span class=md-ellipsis> find </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/flatten/ class=md-nav__link> <span class=md-ellipsis> flatten </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/from_bjdata/ class=md-nav__link> <span class=md-ellipsis> from_bjdata </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/from_bson/ class=md-nav__link> <span class=md-ellipsis> from_bson </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/from_cbor/ class=md-nav__link> <span class=md-ellipsis> from_cbor </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/from_msgpack/ class=md-nav__link> <span class=md-ellipsis> from_msgpack </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/from_ubjson/ class=md-nav__link> <span class=md-ellipsis> from_ubjson </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/front/ class=md-nav__link> <span class=md-ellipsis> front </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/get/ class=md-nav__link> <span class=md-ellipsis> get </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/get_allocator/ class=md-nav__link> <span class=md-ellipsis> get_allocator </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/get_binary/ class=md-nav__link> <span class=md-ellipsis> get_binary </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/get_ptr/ class=md-nav__link> <span class=md-ellipsis> get_ptr </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/get_ref/ class=md-nav__link> <span class=md-ellipsis> get_ref </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/get_to/ class=md-nav__link> <span class=md-ellipsis> get_to </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/std_hash/ class=md-nav__link> <span class=md-ellipsis> std::hash&lt;basic_json&gt; </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/input_format_t/ class=md-nav__link> <span class=md-ellipsis> input_format_t </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/insert/ class=md-nav__link> <span class=md-ellipsis> insert </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/invalid_iterator/ class=md-nav__link> <span class=md-ellipsis> invalid_iterator </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/is_array/ class=md-nav__link> <span class=md-ellipsis> is_array </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/is_binary/ class=md-nav__link> <span class=md-ellipsis> is_binary </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/is_boolean/ class=md-nav__link> <span class=md-ellipsis> is_boolean </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/is_discarded/ class=md-nav__link> <span class=md-ellipsis> is_discarded </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/is_null/ class=md-nav__link> <span class=md-ellipsis> is_null </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/is_number/ class=md-nav__link> <span class=md-ellipsis> is_number </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/is_number_float/ class=md-nav__link> <span class=md-ellipsis> is_number_float </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/is_number_integer/ class=md-nav__link> <span class=md-ellipsis> is_number_integer </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/is_number_unsigned/ class=md-nav__link> <span class=md-ellipsis> is_number_unsigned </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/is_object/ class=md-nav__link> <span class=md-ellipsis> is_object </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/is_primitive/ class=md-nav__link> <span class=md-ellipsis> is_primitive </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/is_string/ class=md-nav__link> <span class=md-ellipsis> is_string </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/is_structured/ class=md-nav__link> <span class=md-ellipsis> is_structured </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/items/ class=md-nav__link> <span class=md-ellipsis> items </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/json_base_class_t/ class=md-nav__link> <span class=md-ellipsis> json_base_class_t </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/json_serializer/ class=md-nav__link> <span class=md-ellipsis> json_serializer </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/max_size/ class=md-nav__link> <span class=md-ellipsis> max_size </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/meta/ class=md-nav__link> <span class=md-ellipsis> meta </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/merge_patch/ class=md-nav__link> <span class=md-ellipsis> merge_patch </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/number_float_t/ class=md-nav__link> <span class=md-ellipsis> number_float_t </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/number_integer_t/ class=md-nav__link> <span class=md-ellipsis> number_integer_t </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/number_unsigned_t/ class=md-nav__link> <span class=md-ellipsis> number_unsigned_t </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/object/ class=md-nav__link> <span class=md-ellipsis> object </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/object_comparator_t/ class=md-nav__link> <span class=md-ellipsis> object_comparator_t </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/object_t/ class=md-nav__link> <span class=md-ellipsis> object_t </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/operator_ValueType/ class=md-nav__link> <span class=md-ellipsis> operator ValueType </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/operator_value_t/ class=md-nav__link> <span class=md-ellipsis> operator value_t </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/operator%5B%5D/ class=md-nav__link> <span class=md-ellipsis> operator[] </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/operator%3D/ class=md-nav__link> <span class=md-ellipsis> operator= </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/operator%2B%3D/ class=md-nav__link> <span class=md-ellipsis> operator+= </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/operator_eq/ class=md-nav__link> <span class=md-ellipsis> operator== </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/operator_ne/ class=md-nav__link> <span class=md-ellipsis> operator!= </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/operator_lt/ class=md-nav__link> <span class=md-ellipsis> operator< </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/operator_gt/ class=md-nav__link> <span class=md-ellipsis> operator> </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/operator_le/ class=md-nav__link> <span class=md-ellipsis> operator<= </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/operator_ge/ class=md-nav__link> <span class=md-ellipsis> operator>= </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/operator_spaceship/ class=md-nav__link> <span class=md-ellipsis> operator<=> </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/out_of_range/ class=md-nav__link> <span class=md-ellipsis> out_of_range </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/other_error/ class=md-nav__link> <span class=md-ellipsis> other_error </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/parse/ class=md-nav__link> <span class=md-ellipsis> parse </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/parse_error/ class=md-nav__link> <span class=md-ellipsis> parse_error </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/parse_event_t/ class=md-nav__link> <span class=md-ellipsis> parse_event_t </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/parser_callback_t/ class=md-nav__link> <span class=md-ellipsis> parser_callback_t </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/patch/ class=md-nav__link> <span class=md-ellipsis> patch </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/patch_inplace/ class=md-nav__link> <span class=md-ellipsis> patch_inplace </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/push_back/ class=md-nav__link> <span class=md-ellipsis> push_back </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/rbegin/ class=md-nav__link> <span class=md-ellipsis> rbegin </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/rend/ class=md-nav__link> <span class=md-ellipsis> rend </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/sax_parse/ class=md-nav__link> <span class=md-ellipsis> sax_parse </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/size/ class=md-nav__link> <span class=md-ellipsis> size </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/start_pos/ class=md-nav__link> <span class=md-ellipsis> start_pos </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/string_t/ class=md-nav__link> <span class=md-ellipsis> string_t </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/swap/ class=md-nav__link> <span class=md-ellipsis> swap </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/std_swap/ class=md-nav__link> <span class=md-ellipsis> std::swap&lt;basic_json&gt; </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/to_bjdata/ class=md-nav__link> <span class=md-ellipsis> to_bjdata </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/to_bson/ class=md-nav__link> <span class=md-ellipsis> to_bson </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/to_cbor/ class=md-nav__link> <span class=md-ellipsis> to_cbor </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/to_msgpack/ class=md-nav__link> <span class=md-ellipsis> to_msgpack </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/to_string/ class=md-nav__link> <span class=md-ellipsis> to_string </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/to_ubjson/ class=md-nav__link> <span class=md-ellipsis> to_ubjson </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/type/ class=md-nav__link> <span class=md-ellipsis> type </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/type_error/ class=md-nav__link> <span class=md-ellipsis> type_error </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/type_name/ class=md-nav__link> <span class=md-ellipsis> type_name </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/unflatten/ class=md-nav__link> <span class=md-ellipsis> unflatten </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/update/ class=md-nav__link> <span class=md-ellipsis> update </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/value/ class=md-nav__link> <span class=md-ellipsis> value </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/value_t/ class=md-nav__link> <span class=md-ellipsis> value_t </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_2> <div class="md-nav__link md-nav__container"> <a href=../../byte_container_with_subtype/ class="md-nav__link "> <span class=md-ellipsis> byte_container_with_subtype </span> </a> <label class="md-nav__link " for=__nav_4_2 id=__nav_4_2_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_2_label aria-expanded=false> <label class=md-nav__title for=__nav_4_2> <span class="md-nav__icon md-icon"></span> byte_container_with_subtype </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../byte_container_with_subtype/byte_container_with_subtype/ class=md-nav__link> <span class=md-ellipsis> (constructor) </span> </a> </li> <li class=md-nav__item> <a href=../../byte_container_with_subtype/clear_subtype/ class=md-nav__link> <span class=md-ellipsis> clear_subtype </span> </a> </li> <li class=md-nav__item> <a href=../../byte_container_with_subtype/has_subtype/ class=md-nav__link> <span class=md-ellipsis> has_subtype </span> </a> </li> <li class=md-nav__item> <a href=../../byte_container_with_subtype/set_subtype/ class=md-nav__link> <span class=md-ellipsis> set_subtype </span> </a> </li> <li class=md-nav__item> <a href=../../byte_container_with_subtype/subtype/ class=md-nav__link> <span class=md-ellipsis> subtype </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_3> <div class="md-nav__link md-nav__container"> <a href=../../adl_serializer/ class="md-nav__link "> <span class=md-ellipsis> adl_serializer </span> </a> <label class="md-nav__link " for=__nav_4_3 id=__nav_4_3_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_3_label aria-expanded=false> <label class=md-nav__title for=__nav_4_3> <span class="md-nav__icon md-icon"></span> adl_serializer </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../adl_serializer/from_json/ class=md-nav__link> <span class=md-ellipsis> from_json </span> </a> </li> <li class=md-nav__item> <a href=../../adl_serializer/to_json/ class=md-nav__link> <span class=md-ellipsis> to_json </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../json/ class=md-nav__link> <span class=md-ellipsis> json </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_5> <div class="md-nav__link md-nav__container"> <a href=../../json_pointer/ class="md-nav__link "> <span class=md-ellipsis> json_pointer </span> </a> <label class="md-nav__link " for=__nav_4_5 id=__nav_4_5_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_5_label aria-expanded=false> <label class=md-nav__title for=__nav_4_5> <span class="md-nav__icon md-icon"></span> json_pointer </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../json_pointer/json_pointer/ class=md-nav__link> <span class=md-ellipsis> (Constructor) </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/back/ class=md-nav__link> <span class=md-ellipsis> back </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/empty/ class=md-nav__link> <span class=md-ellipsis> empty </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/front/ class=md-nav__link> <span class=md-ellipsis> front </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_string_t/ class=md-nav__link> <span class=md-ellipsis> operator string_t </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_eq/ class=md-nav__link> <span class=md-ellipsis> operator== </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_ne/ class=md-nav__link> <span class=md-ellipsis> operator!= </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_slash/ class=md-nav__link> <span class=md-ellipsis> operator/ </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_slasheq/ class=md-nav__link> <span class=md-ellipsis> operator/= </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/parent_pointer/ class=md-nav__link> <span class=md-ellipsis> parent_pointer </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/pop_back/ class=md-nav__link> <span class=md-ellipsis> pop_back </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/pop_front/ class=md-nav__link> <span class=md-ellipsis> pop_front </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/push_back/ class=md-nav__link> <span class=md-ellipsis> push_back </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/push_front/ class=md-nav__link> <span class=md-ellipsis> push_front </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/string_t/ class=md-nav__link> <span class=md-ellipsis> string_t </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/to_string/ class=md-nav__link> <span class=md-ellipsis> to_string </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_6> <div class="md-nav__link md-nav__container"> <a href=../../json_sax/ class="md-nav__link "> <span class=md-ellipsis> json_sax </span> </a> <label class="md-nav__link " for=__nav_4_6 id=__nav_4_6_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_6_label aria-expanded=false> <label class=md-nav__title for=__nav_4_6> <span class="md-nav__icon md-icon"></span> json_sax </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../json_sax/binary/ class=md-nav__link> <span class=md-ellipsis> binary </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/boolean/ class=md-nav__link> <span class=md-ellipsis> boolean </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/end_array/ class=md-nav__link> <span class=md-ellipsis> end_array </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/end_object/ class=md-nav__link> <span class=md-ellipsis> end_object </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/key/ class=md-nav__link> <span class=md-ellipsis> key </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/null/ class=md-nav__link> <span class=md-ellipsis> null </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/number_float/ class=md-nav__link> <span class=md-ellipsis> number_float </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/number_integer/ class=md-nav__link> <span class=md-ellipsis> number_integer </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/number_unsigned/ class=md-nav__link> <span class=md-ellipsis> number_unsigned </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/parse_error/ class=md-nav__link> <span class=md-ellipsis> parse_error </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/start_array/ class=md-nav__link> <span class=md-ellipsis> start_array </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/start_object/ class=md-nav__link> <span class=md-ellipsis> start_object </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/string/ class=md-nav__link> <span class=md-ellipsis> string </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../operator_ltlt/ class=md-nav__link> <span class=md-ellipsis> operator<<(basic_json), operator<<(json_pointer) </span> </a> </li> <li class=md-nav__item> <a href=../../operator_gtgt/ class=md-nav__link> <span class=md-ellipsis> operator>>(basic_json) </span> </a> </li> <li class=md-nav__item> <a href=../../operator_literal_json/ class=md-nav__link> <span class=md-ellipsis> operator""_json </span> </a> </li> <li class=md-nav__item> <a href=../../operator_literal_json_pointer/ class=md-nav__link> <span class=md-ellipsis> operator""_json_pointer </span> </a> </li> <li class=md-nav__item> <a href=../../ordered_json/ class=md-nav__link> <span class=md-ellipsis> ordered_json </span> </a> </li> <li class=md-nav__item> <a href=../../ordered_map/ class=md-nav__link> <span class=md-ellipsis> ordered_map </span> </a> </li> <li class="md-nav__item md-nav__item--active md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_13 checked> <div class="md-nav__link md-nav__container"> <a href=../ class="md-nav__link "> <span class=md-ellipsis> macros </span> </a> <label class="md-nav__link " for=__nav_4_13 id=__nav_4_13_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_13_label aria-expanded=true> <label class=md-nav__title for=__nav_4_13> <span class="md-nav__icon md-icon"></span> macros </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../json_assert/ class=md-nav__link> <span class=md-ellipsis> JSON_ASSERT </span> </a> </li> <li class=md-nav__item> <a href=../json_brace_init_copy_semantics/ class=md-nav__link> <span class=md-ellipsis> JSON_BRACE_INIT_COPY_SEMANTICS </span> </a> </li> <li class=md-nav__item> <a href=../json_throw_user/ class=md-nav__link> <span class=md-ellipsis> JSON_CATCH_USER, JSON_THROW_USER, JSON_TRY_USER </span> </a> </li> <li class=md-nav__item> <a href=../json_diagnostics/ class=md-nav__link> <span class=md-ellipsis> JSON_DIAGNOSTICS </span> </a> </li> <li class=md-nav__item> <a href=../json_diagnostic_positions/ class=md-nav__link> <span class=md-ellipsis> JSON_DIAGNOSTIC_POSITIONS </span> </a> </li> <li class=md-nav__item> <a href=../json_disable_enum_serialization/ class=md-nav__link> <span class=md-ellipsis> JSON_DISABLE_ENUM_SERIALIZATION </span> </a> </li> <li class=md-nav__item> <a href=../json_has_cpp_11/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_CPP_11, JSON_HAS_CPP_14, JSON_HAS_CPP_17, JSON_HAS_CPP_20 </span> </a> </li> <li class=md-nav__item> <a href=../json_has_filesystem/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_EXPERIMENTAL_FILESYSTEM, JSON_HAS_FILESYSTEM </span> </a> </li> <li class=md-nav__item> <a href=../json_has_ranges/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_RANGES </span> </a> </li> <li class=md-nav__item> <a href=../json_has_static_rtti/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_STATIC_RTTI </span> </a> </li> <li class=md-nav__item> <a href=../json_has_three_way_comparison/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_THREE_WAY_COMPARISON </span> </a> </li> <li class=md-nav__item> <a href=../json_noexception/ class=md-nav__link> <span class=md-ellipsis> JSON_NOEXCEPTION </span> </a> </li> <li class=md-nav__item> <a href=../json_no_io/ class=md-nav__link> <span class=md-ellipsis> JSON_NO_IO </span> </a> </li> <li class=md-nav__item> <a href=../json_skip_library_version_check/ class=md-nav__link> <span class=md-ellipsis> JSON_SKIP_LIBRARY_VERSION_CHECK </span> </a> </li> <li class=md-nav__item> <a href=../json_skip_unsupported_compiler_check/ class=md-nav__link> <span class=md-ellipsis> JSON_SKIP_UNSUPPORTED_COMPILER_CHECK </span> </a> </li> <li class=md-nav__item> <a href=../json_use_global_udls/ class=md-nav__link> <span class=md-ellipsis> JSON_USE_GLOBAL_UDLS </span> </a> </li> <li class=md-nav__item> <a href=../json_use_implicit_conversions/ class=md-nav__link> <span class=md-ellipsis> JSON_USE_IMPLICIT_CONVERSIONS </span> </a> </li> <li class="md-nav__item md-nav__item--active"> <input class="md-nav__toggle md-toggle" type=checkbox id=__toc> <label class="md-nav__link md-nav__link--active" for=__toc> <span class=md-ellipsis> JSON_USE_LEGACY_DISCARDED_VALUE_COMPARISON </span> <span class="md-nav__icon md-icon"></span> </label> <a href=./ class="md-nav__link md-nav__link--active"> <span class=md-ellipsis> JSON_USE_LEGACY_DISCARDED_VALUE_COMPARISON </span> </a> <nav class="md-nav md-nav--secondary" aria-label="Table of contents"> <label class=md-nav__title for=__toc> <span class="md-nav__icon md-icon"></span> Table of contents </label> <ul class=md-nav__list data-md-component=toc data-md-scrollfix> <li class=md-nav__item> <a href=#default-definition class=md-nav__link> <span class=md-ellipsis> Default definition </span> </a> </li> <li class=md-nav__item> <a href=#notes class=md-nav__link> <span class=md-ellipsis> Notes </span> </a> </li> <li class=md-nav__item> <a href=#examples class=md-nav__link> <span class=md-ellipsis> Examples </span> </a> </li> <li class=md-nav__item> <a href=#see-also class=md-nav__link> <span class=md-ellipsis> See also </span> </a> </li> <li class=md-nav__item> <a href=#version-history class=md-nav__link> <span class=md-ellipsis> Version history </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../nlohmann_define_derived_type/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_ONLY_SERIALIZE, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE </span> </a> </li> <li class=md-nav__item> <a href=../nlohmann_define_type_intrusive/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_TYPE_INTRUSIVE, NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_TYPE_INTRUSIVE_ONLY_SERIALIZE </span> </a> </li> <li class=md-nav__item> <a href=../nlohmann_define_type_non_intrusive/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE </span> </a> </li> <li class=md-nav__item> <a href=../nlohmann_define_type_with_names/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_TYPE_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES </span> </a> </li> <li class=md-nav__item> <a href=../nlohmann_json_namespace/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_NAMESPACE </span> </a> </li> <li class=md-nav__item> <a href=../nlohmann_json_namespace_begin/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_NAMESPACE_BEGIN, NLOHMANN_JSON_NAMESPACE_END </span> </a> </li> <li class=md-nav__item> <a href=../nlohmann_json_namespace_no_version/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_NAMESPACE_NO_VERSION </span> </a> </li> <li class=md-nav__item> <a href=../nlohmann_json_serialize_enum/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_SERIALIZE_ENUM </span> </a> </li> <li class=md-nav__item> <a href=../nlohmann_json_serialize_enum_strict/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_SERIALIZE_ENUM_STRICT </span> </a> </li> <li class=md-nav__item> <a href=../nlohmann_json_version_major/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_VERSION_MAJOR, NLOHMANN_JSON_VERSION_MINOR, NLOHMANN_JSON_VERSION_PATCH </span> </a> </li> </ul> </nav> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_5> <div class="md-nav__link md-nav__container"> <a href=../../../community/ class="md-nav__link "> <span class=md-ellipsis> Community </span> </a> <label class="md-nav__link " for=__nav_5 id=__nav_5_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_5_label aria-expanded=false> <label class=md-nav__title for=__nav_5> <span class="md-nav__icon md-icon"></span> Community </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../community/code_of_conduct/ class=md-nav__link> <span class=md-ellipsis> Code of Conduct </span> </a> </li> <li class=md-nav__item> <a href=../../../community/contribution_guidelines/ class=md-nav__link> <span class=md-ellipsis> Contribution Guidelines </span> </a> </li> <li class=md-nav__item> <a href=../../../community/quality_assurance/ class=md-nav__link> <span class=md-ellipsis> Quality assurance </span> </a> </li> <li class=md-nav__item> <a href=../../../community/governance/ class=md-nav__link> <span class=md-ellipsis> Governance </span> </a> </li> <li class=md-nav__item> <a href=../../../community/security_policy/ class=md-nav__link> <span class=md-ellipsis> Security Policy </span> </a> </li> </ul> </nav> </li> </ul> </nav> </div> </div> </div> <div class="md-sidebar md-sidebar--secondary" data-md-component=sidebar data-md-type=toc> <div class=md-sidebar__scrollwrap> <div class=md-sidebar__inner> <nav class="md-nav md-nav--secondary" aria-label="Table of contents"> <label class=md-nav__title for=__toc> <span class="md-nav__icon md-icon"></span> Table of contents </label> <ul class=md-nav__list data-md-component=toc data-md-scrollfix> <li class=md-nav__item> <a href=#default-definition class=md-nav__link> <span class=md-ellipsis> Default definition </span> </a> </li> <li class=md-nav__item> <a href=#notes class=md-nav__link> <span class=md-ellipsis> Notes </span> </a> </li> <li class=md-nav__item> <a href=#examples class=md-nav__link> <span class=md-ellipsis> Examples </span> </a> </li> <li class=md-nav__item> <a href=#see-also class=md-nav__link> <span class=md-ellipsis> See also </span> </a> </li> <li class=md-nav__item> <a href=#version-history class=md-nav__link> <span class=md-ellipsis> Version history </span> </a> </li> </ul> </nav> </div> </div> </div> <div class=md-content data-md-component=content> <article class="md-content__inner md-typeset"> <a href="https://github.com/nlohmann/json/edit/develop/docs/mkdocs/docs/api/macros/json_use_legacy_discarded_value_comparison.md" title="Edit this page" class="md-content__button md-icon" rel="edit"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M10 20H6V4h7v5h5v3.1l2-2V8l-6-6H6c-1.1 0-2 .9-2 2v16c0 1.1.9 2 2 2h4zm10.2-7c.1 0 .3.1.4.2l1.3 1.3c.2.2.2.6 0 .8l-1 1-2.1-2.1 1-1c.1-.1.2-.2.4-.2m0 3.9L14.1 23H12v-2.1l6.1-6.1z"/></svg> </a> <a href="https://github.com/nlohmann/json/raw/develop/docs/mkdocs/docs/api/macros/json_use_legacy_discarded_value_comparison.md" title="View source of this page" class="md-content__button md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M17 18c.56 0 1 .44 1 1s-.44 1-1 1-1-.44-1-1 .44-1 1-1m0-3c-2.73 0-5.06 1.66-6 4 .94 2.34 3.27 4 6 4s5.06-1.66 6-4c-.94-2.34-3.27-4-6-4m0 6.5a2.5 2.5 0 0 1-2.5-2.5 2.5 2.5 0 0 1 2.5-2.5 2.5 2.5 0 0 1 2.5 2.5 2.5 2.5 0 0 1-2.5 2.5M9.27 20H6V4h7v5h5v4.07c.7.08 1.36.25 2 .49V8l-6-6H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h4.5a8.2 8.2 0 0 1-1.23-2"/></svg> </a> <h1 id=json_use_legacy_discarded_value_comparison>JSON_USE_LEGACY_DISCARDED_VALUE_COMPARISON<a class=headerlink href=#json_use_legacy_discarded_value_comparison title="Permanent link">&para;</a></h1> <div class=highlight><pre><span></span><code><span class=cp>#define JSON_USE_LEGACY_DISCARDED_VALUE_COMPARISON </span><span class=cm>/* value */</span>
 </code></pre></div> <p>This macro enables the (incorrect) legacy comparison behavior of discarded <abbr title="JavaScript Object Notation">JSON</abbr> values. Possible values are <code>1</code> to enable or <code>0</code> to disable (default).</p> <p>When enabled, comparisons involving at least one discarded <abbr title="JavaScript Object Notation">JSON</abbr> value yield results as follows:</p> <table> <thead> <tr> <th><strong>Operator</strong></th> <th><strong>Result</strong></th> </tr> </thead> <tbody> <tr> <td><code>==</code></td> <td><code class=highlight><span class=nb>false</span></code></td> </tr> <tr> <td><code>!=</code></td> <td><code class=highlight><span class=nb>true</span></code></td> </tr> <tr> <td><code>&lt;</code></td> <td><code class=highlight><span class=nb>false</span></code></td> </tr> <tr> <td><code>&lt;=</code></td> <td><code class=highlight><span class=nb>true</span></code></td> </tr> <tr> <td><code>&gt;=</code></td> <td><code class=highlight><span class=nb>true</span></code></td> </tr> <tr> <td><code>&gt;</code></td> <td><code class=highlight><span class=nb>false</span></code></td> </tr> </tbody> </table> <p>Otherwise, comparisons involving at least one discarded <abbr title="JavaScript Object Notation">JSON</abbr> value always yield <code class=highlight><span class=nb>false</span></code>.</p> <h2 id=default-definition>Default definition<a class=headerlink href=#default-definition title="Permanent link">&para;</a></h2> <p>The default value is <code>0</code>.</p> <div class=highlight><pre><span></span><code><span class=cp>#define JSON_USE_LEGACY_DISCARDED_VALUE_COMPARISON 0</span>
-</code></pre></div> <p>When the macro is not defined, the library will define it to its default value.</p> <h2 id=notes>Notes<a class=headerlink href=#notes title="Permanent link">&para;</a></h2> <div class="admonition warning"> <p class=admonition-title>Inconsistent behavior in C++20 and beyond</p> <p>When targeting C++20 or above, enabling the legacy comparison behavior is <em>strongly</em> discouraged.</p> <ul> <li>The 3-way comparison operator (<code>&lt;=&gt;</code>) will always give the correct result (<code class=highlight><span class=n>std</span><span class=o>::</span><span class=n>partial_ordering</span><span class=o>::</span><span class=n>unordered</span></code>) regardless of the value of <code>JSON_USE_LEGACY_DISCARDED_VALUE_COMPARISON</code>.</li> <li>Overloads for the equality and relational operators emulate the legacy behavior.</li> </ul> <p>Code outside your control may use either 3-way comparison or the equality and relational operators, resulting in inconsistent and unpredictable behavior.</p> <p>See <a href=../../basic_json/operator_spaceship/ ><code>operator&lt;=&gt;</code></a> for more information on 3-way comparison.</p> </div> <div class="admonition warning"> <p class=admonition-title>Deprecation</p> <p>The legacy comparison behavior is deprecated and may be removed in a future major version release.</p> <p>New code should not depend on it and existing code should try to remove or rewrite expressions relying on it.</p> </div> <div class="admonition hint"> <p class=admonition-title>CMake option</p> <p>Legacy comparison can also be controlled with the CMake option <a href=../../../integration/cmake/#json_implicitconversions><code>JSON_LegacyDiscardedValueComparison</code></a> (<code>OFF</code> by default) which defines <code>JSON_USE_LEGACY_DISCARDED_VALUE_COMPARISON</code> accordingly.</p> </div> <h2 id=examples>Examples<a class=headerlink href=#examples title="Permanent link">&para;</a></h2> <details class=example> <summary>Example</summary> <p>The code below switches on the legacy discarded value comparison behavior in the library.</p> <div class=highlight><pre><span></span><code><span class=cp>#define JSON_USE_LEGACY_DISCARDED_VALUE_COMPARISON 1</span>
+</code></pre></div> <p>When the macro is not defined, the library will define it to its default value.</p> <h2 id=notes>Notes<a class=headerlink href=#notes title="Permanent link">&para;</a></h2> <div class="admonition warning"> <p class=admonition-title>Inconsistent behavior in C++20 and beyond</p> <p>When targeting C++20 or above, enabling the legacy comparison behavior is <em>strongly</em> discouraged.</p> <ul> <li>The 3-way comparison operator (<code>&lt;=&gt;</code>) will always give the correct result (<code class=highlight><span class=n>std</span><span class=o>::</span><span class=n>partial_ordering</span><span class=o>::</span><span class=n>unordered</span></code>) regardless of the value of <code>JSON_USE_LEGACY_DISCARDED_VALUE_COMPARISON</code>.</li> <li>Overloads for the equality and relational operators emulate the legacy behavior.</li> </ul> <p>Code outside your control may use either 3-way comparison or the equality and relational operators, resulting in inconsistent and unpredictable behavior.</p> <p>See <a href=../../basic_json/operator_spaceship/ ><code>operator&lt;=&gt;</code></a> for more information on 3-way comparison.</p> </div> <div class="admonition warning"> <p class=admonition-title>Deprecation</p> <p>The legacy comparison behavior is deprecated and may be removed in a future major version release.</p> <p>New code should not depend on it and existing code should try to remove or rewrite expressions relying on it.</p> </div> <div class="admonition hint"> <p class=admonition-title>CMake option</p> <p>Legacy comparison can also be controlled with the CMake option <a href=../../../integration/cmake/#json_legacydiscardedvaluecomparison><code>JSON_LegacyDiscardedValueComparison</code></a> (<code>OFF</code> by default) which defines <code>JSON_USE_LEGACY_DISCARDED_VALUE_COMPARISON</code> accordingly.</p> </div> <h2 id=examples>Examples<a class=headerlink href=#examples title="Permanent link">&para;</a></h2> <details class=example> <summary>Example</summary> <p>The code below switches on the legacy discarded value comparison behavior in the library.</p> <div class=highlight><pre><span></span><code><span class=cp>#define JSON_USE_LEGACY_DISCARDED_VALUE_COMPARISON 1</span>
 <span class=cp>#include</span><span class=w> </span><span class=cpf>&lt;nlohmann/json.hpp&gt;</span>
 
 <span class=p>...</span>
-</code></pre></div> </details> <h3 id=see-also>See also<a class=headerlink href=#see-also title="Permanent link">&para;</a></h3> <ul> <li><a href=../../../integration/cmake/#json_legacydiscardedvaluecomparison><span class=twemoji><svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M11.769.066.067 23.206l12.76-10.843zm11.438 23.868L7.471 17.587 0 23.934zm.793-.198L12.298.463l1.719 19.24zM12.893 12.959l-5.025 4.298 5.62 2.248z"/></svg></span> JSON_LegacyDiscardedValueComparison</a> - CMake option to control the macro</li> </ul> <h2 id=version-history>Version history<a class=headerlink href=#version-history title="Permanent link">&para;</a></h2> <ul> <li>Added in version 3.11.0.</li> </ul> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 23, 2026 11:16:18 UTC">June 23, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
+</code></pre></div> </details> <h2 id=see-also>See also<a class=headerlink href=#see-also title="Permanent link">&para;</a></h2> <ul> <li><a href=../../../integration/cmake/#json_legacydiscardedvaluecomparison><span class=twemoji><svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M11.769.066.067 23.206l12.76-10.843zm11.438 23.868L7.471 17.587 0 23.934zm.793-.198L12.298.463l1.719 19.24zM12.893 12.959l-5.025 4.298 5.62 2.248z"/></svg></span> JSON_LegacyDiscardedValueComparison</a> - CMake option to control the macro</li> </ul> <h2 id=version-history>Version history<a class=headerlink href=#version-history title="Permanent link">&para;</a></h2> <ul> <li>Added in version 3.11.0.</li> </ul> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 29, 2026 20:15:18 UTC">June 29, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
diff --git a/api/macros/nlohmann_define_derived_type/index.html b/api/macros/nlohmann_define_derived_type/index.html
index 3db33f9..3932820 100644
--- a/api/macros/nlohmann_define_derived_type/index.html
+++ b/api/macros/nlohmann_define_derived_type/index.html
@@ -11,7 +11,7 @@
 <span class=cp>#define NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_DEFAULT(type, base_type, member...)</span>
 <span class=c1>// (6)</span>
 <span class=cp>#define NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE(type, base_type, member...)</span>
-</code></pre></div> <p>These macros can be used to simplify the serialization/deserialization of derived types if you want to use a <abbr title="JavaScript Object Notation">JSON</abbr> object as serialization and want to use the member variable names as object keys in that object.</p> <ul> <li>Macros 1, 2, and 3 are to be defined <strong>inside</strong> the class/struct to create code for. Like <a href=../nlohmann_define_type_intrusive/ ><code>NLOHMANN_DEFINE_TYPE_INTRUSIVE</code></a>, they can access private members.</li> <li>Macros 4, 5, and 6 are to be defined <strong>outside</strong> the class/struct to create code for, but <strong>inside</strong> its namespace. Like <a href=../nlohmann_define_type_non_intrusive/ ><code>NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE</code></a>, they <strong>cannot</strong> access private members.</li> </ul> <p>The first parameter is the name of the derived class/struct, the second parameter is the name of the base class/struct and all remaining parameters name the members. The base type <strong>must</strong> be already serializable/deserializable.</p> <ul> <li>Macros 1 and 4 will use <a href=../../basic_json/at/ ><code>at</code></a> during deserialization and will throw <a href=../../../home/exceptions/#jsonexceptionout_of_range403><code>out_of_range.403</code></a> if a key is missing in the <abbr title="JavaScript Object Notation">JSON</abbr> object.</li> <li>Macros 2 and 5 will use <a href=../../basic_json/value/ ><code>value</code></a> during deserialization and fall back to the default value for the respective type of the member variable if a key in the <abbr title="JavaScript Object Notation">JSON</abbr> object is missing. The generated <code>from_json()</code> function default constructs an object and uses its values as the defaults when calling the <code>value</code> function.</li> </ul> <p>Summary:</p> <table> <thead> <tr> <th>Need access to private members</th> <th>Need only de-serialization</th> <th>Allow missing values when de-serializing</th> <th>macro</th> </tr> </thead> <tbody> <tr> <td><div style="color: green;"><span class=twemoji><svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M1 12C1 5.925 5.925 1 12 1s11 4.925 11 11-4.925 11-11 11S1 18.075 1 12m16.28-2.72a.75.75 0 0 0-.018-1.042.75.75 0 0 0-1.042-.018l-5.97 5.97-2.47-2.47a.75.75 0 0 0-1.042.018.75.75 0 0 0-.018 1.042l3 3a.75.75 0 0 0 1.06 0Z"/></svg></span></div></td> <td><div style="color: red;"><span class=twemoji><svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M1 12C1 5.925 5.925 1 12 1s11 4.925 11 11-4.925 11-11 11S1 18.075 1 12m8.036-4.024a.75.75 0 0 0-1.042.018.75.75 0 0 0-.018 1.042L10.939 12l-2.963 2.963a.749.749 0 0 0 .326 1.275.75.75 0 0 0 .734-.215L12 13.06l2.963 2.964a.75.75 0 0 0 1.061-1.06L13.061 12l2.963-2.964a.749.749 0 0 0-.326-1.275.75.75 0 0 0-.734.215L12 10.939Z"/></svg></span></div></td> <td><div style="color: red;"><span class=twemoji><svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M1 12C1 5.925 5.925 1 12 1s11 4.925 11 11-4.925 11-11 11S1 18.075 1 12m8.036-4.024a.75.75 0 0 0-1.042.018.75.75 0 0 0-.018 1.042L10.939 12l-2.963 2.963a.749.749 0 0 0 .326 1.275.75.75 0 0 0 .734-.215L12 13.06l2.963 2.964a.75.75 0 0 0 1.061-1.06L13.061 12l2.963-2.964a.749.749 0 0 0-.326-1.275.75.75 0 0 0-.734.215L12 10.939Z"/></svg></span></div></td> <td><strong>NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE</strong></td> </tr> <tr> <td><div style="color: green;"><span class=twemoji><svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M1 12C1 5.925 5.925 1 12 1s11 4.925 11 11-4.925 11-11 11S1 18.075 1 12m16.28-2.72a.75.75 0 0 0-.018-1.042.75.75 0 0 0-1.042-.018l-5.97 5.97-2.47-2.47a.75.75 0 0 0-1.042.018.75.75 0 0 0-.018 1.042l3 3a.75.75 0 0 0 1.06 0Z"/></svg></span></div></td> <td><div style="color: red;"><span class=twemoji><svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M1 12C1 5.925 5.925 1 12 1s11 4.925 11 11-4.925 11-11 11S1 18.075 1 12m8.036-4.024a.75.75 0 0 0-1.042.018.75.75 0 0 0-.018 1.042L10.939 12l-2.963 2.963a.749.749 0 0 0 .326 1.275.75.75 0 0 0 .734-.215L12 13.06l2.963 2.964a.75.75 0 0 0 1.061-1.06L13.061 12l2.963-2.964a.749.749 0 0 0-.326-1.275.75.75 0 0 0-.734.215L12 10.939Z"/></svg></span></div></td> <td><div style="color: green;"><span class=twemoji><svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M1 12C1 5.925 5.925 1 12 1s11 4.925 11 11-4.925 11-11 11S1 18.075 1 12m16.28-2.72a.75.75 0 0 0-.018-1.042.75.75 0 0 0-1.042-.018l-5.97 5.97-2.47-2.47a.75.75 0 0 0-1.042.018.75.75 0 0 0-.018 1.042l3 3a.75.75 0 0 0 1.06 0Z"/></svg></span></div></td> <td><strong>NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_DEFAULT</strong></td> </tr> <tr> <td><div style="color: green;"><span class=twemoji><svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M1 12C1 5.925 5.925 1 12 1s11 4.925 11 11-4.925 11-11 11S1 18.075 1 12m16.28-2.72a.75.75 0 0 0-.018-1.042.75.75 0 0 0-1.042-.018l-5.97 5.97-2.47-2.47a.75.75 0 0 0-1.042.018.75.75 0 0 0-.018 1.042l3 3a.75.75 0 0 0 1.06 0Z"/></svg></span></div></td> <td><div style="color: green;"><span class=twemoji><svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M1 12C1 5.925 5.925 1 12 1s11 4.925 11 11-4.925 11-11 11S1 18.075 1 12m16.28-2.72a.75.75 0 0 0-.018-1.042.75.75 0 0 0-1.042-.018l-5.97 5.97-2.47-2.47a.75.75 0 0 0-1.042.018.75.75 0 0 0-.018 1.042l3 3a.75.75 0 0 0 1.06 0Z"/></svg></span></div></td> <td><div style="color: grey;"><span class=twemoji><svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M1 12C1 5.925 5.925 1 12 1s11 4.925 11 11-4.925 11-11 11S1 18.075 1 12m16.333-4.167a.825.825 0 0 0-1.166-1.166l-9.5 9.5a.825.825 0 0 0 1.166 1.166Z"/></svg></span></div></td> <td><strong>NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_ONLY_SERIALIZE</strong></td> </tr> <tr> <td><div style="color: red;"><span class=twemoji><svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M1 12C1 5.925 5.925 1 12 1s11 4.925 11 11-4.925 11-11 11S1 18.075 1 12m8.036-4.024a.75.75 0 0 0-1.042.018.75.75 0 0 0-.018 1.042L10.939 12l-2.963 2.963a.749.749 0 0 0 .326 1.275.75.75 0 0 0 .734-.215L12 13.06l2.963 2.964a.75.75 0 0 0 1.061-1.06L13.061 12l2.963-2.964a.749.749 0 0 0-.326-1.275.75.75 0 0 0-.734.215L12 10.939Z"/></svg></span></div></td> <td><div style="color: red;"><span class=twemoji><svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M1 12C1 5.925 5.925 1 12 1s11 4.925 11 11-4.925 11-11 11S1 18.075 1 12m8.036-4.024a.75.75 0 0 0-1.042.018.75.75 0 0 0-.018 1.042L10.939 12l-2.963 2.963a.749.749 0 0 0 .326 1.275.75.75 0 0 0 .734-.215L12 13.06l2.963 2.964a.75.75 0 0 0 1.061-1.06L13.061 12l2.963-2.964a.749.749 0 0 0-.326-1.275.75.75 0 0 0-.734.215L12 10.939Z"/></svg></span></div></td> <td><div style="color: red;"><span class=twemoji><svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M1 12C1 5.925 5.925 1 12 1s11 4.925 11 11-4.925 11-11 11S1 18.075 1 12m8.036-4.024a.75.75 0 0 0-1.042.018.75.75 0 0 0-.018 1.042L10.939 12l-2.963 2.963a.749.749 0 0 0 .326 1.275.75.75 0 0 0 .734-.215L12 13.06l2.963 2.964a.75.75 0 0 0 1.061-1.06L13.061 12l2.963-2.964a.749.749 0 0 0-.326-1.275.75.75 0 0 0-.734.215L12 10.939Z"/></svg></span></div></td> <td><strong>NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE</strong></td> </tr> <tr> <td><div style="color: red;"><span class=twemoji><svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M1 12C1 5.925 5.925 1 12 1s11 4.925 11 11-4.925 11-11 11S1 18.075 1 12m8.036-4.024a.75.75 0 0 0-1.042.018.75.75 0 0 0-.018 1.042L10.939 12l-2.963 2.963a.749.749 0 0 0 .326 1.275.75.75 0 0 0 .734-.215L12 13.06l2.963 2.964a.75.75 0 0 0 1.061-1.06L13.061 12l2.963-2.964a.749.749 0 0 0-.326-1.275.75.75 0 0 0-.734.215L12 10.939Z"/></svg></span></div></td> <td><div style="color: red;"><span class=twemoji><svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M1 12C1 5.925 5.925 1 12 1s11 4.925 11 11-4.925 11-11 11S1 18.075 1 12m8.036-4.024a.75.75 0 0 0-1.042.018.75.75 0 0 0-.018 1.042L10.939 12l-2.963 2.963a.749.749 0 0 0 .326 1.275.75.75 0 0 0 .734-.215L12 13.06l2.963 2.964a.75.75 0 0 0 1.061-1.06L13.061 12l2.963-2.964a.749.749 0 0 0-.326-1.275.75.75 0 0 0-.734.215L12 10.939Z"/></svg></span></div></td> <td><div style="color: green;"><span class=twemoji><svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M1 12C1 5.925 5.925 1 12 1s11 4.925 11 11-4.925 11-11 11S1 18.075 1 12m16.28-2.72a.75.75 0 0 0-.018-1.042.75.75 0 0 0-1.042-.018l-5.97 5.97-2.47-2.47a.75.75 0 0 0-1.042.018.75.75 0 0 0-.018 1.042l3 3a.75.75 0 0 0 1.06 0Z"/></svg></span></div></td> <td><strong>NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_DEFAULT</strong></td> </tr> <tr> <td><div style="color: red;"><span class=twemoji><svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M1 12C1 5.925 5.925 1 12 1s11 4.925 11 11-4.925 11-11 11S1 18.075 1 12m8.036-4.024a.75.75 0 0 0-1.042.018.75.75 0 0 0-.018 1.042L10.939 12l-2.963 2.963a.749.749 0 0 0 .326 1.275.75.75 0 0 0 .734-.215L12 13.06l2.963 2.964a.75.75 0 0 0 1.061-1.06L13.061 12l2.963-2.964a.749.749 0 0 0-.326-1.275.75.75 0 0 0-.734.215L12 10.939Z"/></svg></span></div></td> <td><div style="color: green;"><span class=twemoji><svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M1 12C1 5.925 5.925 1 12 1s11 4.925 11 11-4.925 11-11 11S1 18.075 1 12m16.28-2.72a.75.75 0 0 0-.018-1.042.75.75 0 0 0-1.042-.018l-5.97 5.97-2.47-2.47a.75.75 0 0 0-1.042.018.75.75 0 0 0-.018 1.042l3 3a.75.75 0 0 0 1.06 0Z"/></svg></span></div></td> <td><div style="color: grey;"><span class=twemoji><svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M1 12C1 5.925 5.925 1 12 1s11 4.925 11 11-4.925 11-11 11S1 18.075 1 12m16.333-4.167a.825.825 0 0 0-1.166-1.166l-9.5 9.5a.825.825 0 0 0 1.166 1.166Z"/></svg></span></div></td> <td><strong>NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE</strong></td> </tr> </tbody> </table> <h2 id=parameters>Parameters<a class=headerlink href=#parameters title="Permanent link">&para;</a></h2> <dl> <dt><code>type</code> (in)</dt> <dd>name of the type (class, struct) to serialize/deserialize</dd> <dt><code>base_type</code> (in)</dt> <dd>name of the base type (class, struct) <code>type</code> is derived from</dd> <dt><code>member</code> (in)</dt> <dd>name of the member variable to serialize/deserialize; up to 63 members can be given as a comma-separated list</dd> </dl> <h2 id=default-definition>Default definition<a class=headerlink href=#default-definition title="Permanent link">&para;</a></h2> <p>Macros 1 and 2 add two friend functions to the class which take care of the serialization and deserialization:</p> <div class=highlight><pre><span></span><code><span class=k>template</span><span class=o>&lt;</span><span class=k>typename</span><span class=w> </span><span class=nc>BasicJsonType</span><span class=o>&gt;</span>
+</code></pre></div> <p>These macros can be used to simplify the serialization/deserialization of derived types if you want to use a <abbr title="JavaScript Object Notation">JSON</abbr> object as serialization and want to use the member variable names as object keys in that object.</p> <ul> <li>Macros 1, 2, and 3 are to be defined <strong>inside</strong> the class/struct to create code for. Like <a href=../nlohmann_define_type_intrusive/ ><code>NLOHMANN_DEFINE_TYPE_INTRUSIVE</code></a>, they can access private members.</li> <li>Macros 4, 5, and 6 are to be defined <strong>outside</strong> the class/struct to create code for, but <strong>inside</strong> its namespace. Like <a href=../nlohmann_define_type_non_intrusive/ ><code>NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE</code></a>, they <strong>cannot</strong> access private members.</li> </ul> <p>The first parameter is the name of the derived class/struct, the second parameter is the name of the base class/struct and all remaining parameters name the members. The base type <strong>must</strong> be already serializable/deserializable.</p> <ul> <li>Macros 1 and 4 will use <a href=../../basic_json/at/ ><code>at</code></a> during deserialization and will throw <a href=../../../home/exceptions/#jsonexceptionout_of_range403><code>out_of_range.403</code></a> if a key is missing in the <abbr title="JavaScript Object Notation">JSON</abbr> object.</li> <li>Macros 2 and 5 will use <a href=../../basic_json/value/ ><code>value</code></a> during deserialization and fall back to the default value for the respective type of the member variable if a key in the <abbr title="JavaScript Object Notation">JSON</abbr> object is missing. The generated <code>from_json()</code> function default constructs an object and uses its values as the defaults when calling the <code>value</code> function.</li> </ul> <p>Summary:</p> <table> <thead> <tr> <th>Need access to private members</th> <th>Need only serialization</th> <th>Allow missing values when de-serializing</th> <th>macro</th> </tr> </thead> <tbody> <tr> <td><div style="color: green;"><span class=twemoji><svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M1 12C1 5.925 5.925 1 12 1s11 4.925 11 11-4.925 11-11 11S1 18.075 1 12m16.28-2.72a.75.75 0 0 0-.018-1.042.75.75 0 0 0-1.042-.018l-5.97 5.97-2.47-2.47a.75.75 0 0 0-1.042.018.75.75 0 0 0-.018 1.042l3 3a.75.75 0 0 0 1.06 0Z"/></svg></span></div></td> <td><div style="color: red;"><span class=twemoji><svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M1 12C1 5.925 5.925 1 12 1s11 4.925 11 11-4.925 11-11 11S1 18.075 1 12m8.036-4.024a.75.75 0 0 0-1.042.018.75.75 0 0 0-.018 1.042L10.939 12l-2.963 2.963a.749.749 0 0 0 .326 1.275.75.75 0 0 0 .734-.215L12 13.06l2.963 2.964a.75.75 0 0 0 1.061-1.06L13.061 12l2.963-2.964a.749.749 0 0 0-.326-1.275.75.75 0 0 0-.734.215L12 10.939Z"/></svg></span></div></td> <td><div style="color: red;"><span class=twemoji><svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M1 12C1 5.925 5.925 1 12 1s11 4.925 11 11-4.925 11-11 11S1 18.075 1 12m8.036-4.024a.75.75 0 0 0-1.042.018.75.75 0 0 0-.018 1.042L10.939 12l-2.963 2.963a.749.749 0 0 0 .326 1.275.75.75 0 0 0 .734-.215L12 13.06l2.963 2.964a.75.75 0 0 0 1.061-1.06L13.061 12l2.963-2.964a.749.749 0 0 0-.326-1.275.75.75 0 0 0-.734.215L12 10.939Z"/></svg></span></div></td> <td><strong>NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE</strong></td> </tr> <tr> <td><div style="color: green;"><span class=twemoji><svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M1 12C1 5.925 5.925 1 12 1s11 4.925 11 11-4.925 11-11 11S1 18.075 1 12m16.28-2.72a.75.75 0 0 0-.018-1.042.75.75 0 0 0-1.042-.018l-5.97 5.97-2.47-2.47a.75.75 0 0 0-1.042.018.75.75 0 0 0-.018 1.042l3 3a.75.75 0 0 0 1.06 0Z"/></svg></span></div></td> <td><div style="color: red;"><span class=twemoji><svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M1 12C1 5.925 5.925 1 12 1s11 4.925 11 11-4.925 11-11 11S1 18.075 1 12m8.036-4.024a.75.75 0 0 0-1.042.018.75.75 0 0 0-.018 1.042L10.939 12l-2.963 2.963a.749.749 0 0 0 .326 1.275.75.75 0 0 0 .734-.215L12 13.06l2.963 2.964a.75.75 0 0 0 1.061-1.06L13.061 12l2.963-2.964a.749.749 0 0 0-.326-1.275.75.75 0 0 0-.734.215L12 10.939Z"/></svg></span></div></td> <td><div style="color: green;"><span class=twemoji><svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M1 12C1 5.925 5.925 1 12 1s11 4.925 11 11-4.925 11-11 11S1 18.075 1 12m16.28-2.72a.75.75 0 0 0-.018-1.042.75.75 0 0 0-1.042-.018l-5.97 5.97-2.47-2.47a.75.75 0 0 0-1.042.018.75.75 0 0 0-.018 1.042l3 3a.75.75 0 0 0 1.06 0Z"/></svg></span></div></td> <td><strong>NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_DEFAULT</strong></td> </tr> <tr> <td><div style="color: green;"><span class=twemoji><svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M1 12C1 5.925 5.925 1 12 1s11 4.925 11 11-4.925 11-11 11S1 18.075 1 12m16.28-2.72a.75.75 0 0 0-.018-1.042.75.75 0 0 0-1.042-.018l-5.97 5.97-2.47-2.47a.75.75 0 0 0-1.042.018.75.75 0 0 0-.018 1.042l3 3a.75.75 0 0 0 1.06 0Z"/></svg></span></div></td> <td><div style="color: green;"><span class=twemoji><svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M1 12C1 5.925 5.925 1 12 1s11 4.925 11 11-4.925 11-11 11S1 18.075 1 12m16.28-2.72a.75.75 0 0 0-.018-1.042.75.75 0 0 0-1.042-.018l-5.97 5.97-2.47-2.47a.75.75 0 0 0-1.042.018.75.75 0 0 0-.018 1.042l3 3a.75.75 0 0 0 1.06 0Z"/></svg></span></div></td> <td><div style="color: grey;"><span class=twemoji><svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M1 12C1 5.925 5.925 1 12 1s11 4.925 11 11-4.925 11-11 11S1 18.075 1 12m16.333-4.167a.825.825 0 0 0-1.166-1.166l-9.5 9.5a.825.825 0 0 0 1.166 1.166Z"/></svg></span></div></td> <td><strong>NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_ONLY_SERIALIZE</strong></td> </tr> <tr> <td><div style="color: red;"><span class=twemoji><svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M1 12C1 5.925 5.925 1 12 1s11 4.925 11 11-4.925 11-11 11S1 18.075 1 12m8.036-4.024a.75.75 0 0 0-1.042.018.75.75 0 0 0-.018 1.042L10.939 12l-2.963 2.963a.749.749 0 0 0 .326 1.275.75.75 0 0 0 .734-.215L12 13.06l2.963 2.964a.75.75 0 0 0 1.061-1.06L13.061 12l2.963-2.964a.749.749 0 0 0-.326-1.275.75.75 0 0 0-.734.215L12 10.939Z"/></svg></span></div></td> <td><div style="color: red;"><span class=twemoji><svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M1 12C1 5.925 5.925 1 12 1s11 4.925 11 11-4.925 11-11 11S1 18.075 1 12m8.036-4.024a.75.75 0 0 0-1.042.018.75.75 0 0 0-.018 1.042L10.939 12l-2.963 2.963a.749.749 0 0 0 .326 1.275.75.75 0 0 0 .734-.215L12 13.06l2.963 2.964a.75.75 0 0 0 1.061-1.06L13.061 12l2.963-2.964a.749.749 0 0 0-.326-1.275.75.75 0 0 0-.734.215L12 10.939Z"/></svg></span></div></td> <td><div style="color: red;"><span class=twemoji><svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M1 12C1 5.925 5.925 1 12 1s11 4.925 11 11-4.925 11-11 11S1 18.075 1 12m8.036-4.024a.75.75 0 0 0-1.042.018.75.75 0 0 0-.018 1.042L10.939 12l-2.963 2.963a.749.749 0 0 0 .326 1.275.75.75 0 0 0 .734-.215L12 13.06l2.963 2.964a.75.75 0 0 0 1.061-1.06L13.061 12l2.963-2.964a.749.749 0 0 0-.326-1.275.75.75 0 0 0-.734.215L12 10.939Z"/></svg></span></div></td> <td><strong>NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE</strong></td> </tr> <tr> <td><div style="color: red;"><span class=twemoji><svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M1 12C1 5.925 5.925 1 12 1s11 4.925 11 11-4.925 11-11 11S1 18.075 1 12m8.036-4.024a.75.75 0 0 0-1.042.018.75.75 0 0 0-.018 1.042L10.939 12l-2.963 2.963a.749.749 0 0 0 .326 1.275.75.75 0 0 0 .734-.215L12 13.06l2.963 2.964a.75.75 0 0 0 1.061-1.06L13.061 12l2.963-2.964a.749.749 0 0 0-.326-1.275.75.75 0 0 0-.734.215L12 10.939Z"/></svg></span></div></td> <td><div style="color: red;"><span class=twemoji><svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M1 12C1 5.925 5.925 1 12 1s11 4.925 11 11-4.925 11-11 11S1 18.075 1 12m8.036-4.024a.75.75 0 0 0-1.042.018.75.75 0 0 0-.018 1.042L10.939 12l-2.963 2.963a.749.749 0 0 0 .326 1.275.75.75 0 0 0 .734-.215L12 13.06l2.963 2.964a.75.75 0 0 0 1.061-1.06L13.061 12l2.963-2.964a.749.749 0 0 0-.326-1.275.75.75 0 0 0-.734.215L12 10.939Z"/></svg></span></div></td> <td><div style="color: green;"><span class=twemoji><svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M1 12C1 5.925 5.925 1 12 1s11 4.925 11 11-4.925 11-11 11S1 18.075 1 12m16.28-2.72a.75.75 0 0 0-.018-1.042.75.75 0 0 0-1.042-.018l-5.97 5.97-2.47-2.47a.75.75 0 0 0-1.042.018.75.75 0 0 0-.018 1.042l3 3a.75.75 0 0 0 1.06 0Z"/></svg></span></div></td> <td><strong>NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_DEFAULT</strong></td> </tr> <tr> <td><div style="color: red;"><span class=twemoji><svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M1 12C1 5.925 5.925 1 12 1s11 4.925 11 11-4.925 11-11 11S1 18.075 1 12m8.036-4.024a.75.75 0 0 0-1.042.018.75.75 0 0 0-.018 1.042L10.939 12l-2.963 2.963a.749.749 0 0 0 .326 1.275.75.75 0 0 0 .734-.215L12 13.06l2.963 2.964a.75.75 0 0 0 1.061-1.06L13.061 12l2.963-2.964a.749.749 0 0 0-.326-1.275.75.75 0 0 0-.734.215L12 10.939Z"/></svg></span></div></td> <td><div style="color: green;"><span class=twemoji><svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M1 12C1 5.925 5.925 1 12 1s11 4.925 11 11-4.925 11-11 11S1 18.075 1 12m16.28-2.72a.75.75 0 0 0-.018-1.042.75.75 0 0 0-1.042-.018l-5.97 5.97-2.47-2.47a.75.75 0 0 0-1.042.018.75.75 0 0 0-.018 1.042l3 3a.75.75 0 0 0 1.06 0Z"/></svg></span></div></td> <td><div style="color: grey;"><span class=twemoji><svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M1 12C1 5.925 5.925 1 12 1s11 4.925 11 11-4.925 11-11 11S1 18.075 1 12m16.333-4.167a.825.825 0 0 0-1.166-1.166l-9.5 9.5a.825.825 0 0 0 1.166 1.166Z"/></svg></span></div></td> <td><strong>NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE</strong></td> </tr> </tbody> </table> <h2 id=parameters>Parameters<a class=headerlink href=#parameters title="Permanent link">&para;</a></h2> <dl> <dt><code>type</code> (in)</dt> <dd>name of the type (class, struct) to serialize/deserialize</dd> <dt><code>base_type</code> (in)</dt> <dd>name of the base type (class, struct) <code>type</code> is derived from</dd> <dt><code>member</code> (in)</dt> <dd>name of the member variable to serialize/deserialize; up to 63 members can be given as a comma-separated list</dd> </dl> <h2 id=default-definition>Default definition<a class=headerlink href=#default-definition title="Permanent link">&para;</a></h2> <p>Macros 1 and 2 add two friend functions to the class which take care of the serialization and deserialization:</p> <div class=highlight><pre><span></span><code><span class=k>template</span><span class=o>&lt;</span><span class=k>typename</span><span class=w> </span><span class=nc>BasicJsonType</span><span class=o>&gt;</span>
 <span class=k>friend</span><span class=w> </span><span class=kt>void</span><span class=w> </span><span class=n>to_json</span><span class=p>(</span><span class=n>BasicJsonType</span><span class=o>&amp;</span><span class=p>,</span><span class=w> </span><span class=k>const</span><span class=w> </span><span class=n>type</span><span class=o>&amp;</span><span class=p>);</span>
 <span class=k>template</span><span class=o>&lt;</span><span class=k>typename</span><span class=w> </span><span class=nc>BasicJsonType</span><span class=o>&gt;</span>
 <span class=k>friend</span><span class=w> </span><span class=kt>void</span><span class=w> </span><span class=n>from_json</span><span class=p>(</span><span class=k>const</span><span class=w> </span><span class=n>BasicJsonType</span><span class=o>&amp;</span><span class=p>,</span><span class=w> </span><span class=n>type</span><span class=o>&amp;</span><span class=p>);</span>
@@ -86,4 +86,4 @@
 <span class=w>    </span><span class=nt>&quot;Ba&quot;</span><span class=p>:</span><span class=w> </span><span class=mi>23</span><span class=p>,</span>
 <span class=w>    </span><span class=nt>&quot;Bb&quot;</span><span class=p>:</span><span class=w> </span><span class=mi>42</span>
 <span class=p>}</span>
-</code></pre></div> <p>Notes:</p> <ul> <li><code>A</code> and <code>B</code> are default-constructible. This is a requirement for using the macro.</li> <li><code>A</code> has private members and is not a derived class. Hence, macro <code>NLOHMANN_DEFINE_TYPE_INTRUSIVE</code> is used.</li> <li>As <code>B</code> is a derived class, <code>NLOHMANN_DEFINE_TYPE_INTRUSIVE</code> is not applicable, but <code>NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE</code> must be used.</li> <li>The macro <code>NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE</code> is used <em>inside</em> the class use as <code>NLOHMANN_DEFINE_TYPE_INTRUSIVE</code>.</li> </ul> </details> <h2 id=see-also>See also<a class=headerlink href=#see-also title="Permanent link">&para;</a></h2> <ul> <li><a href=../nlohmann_define_type_intrusive/ >NLOHMANN_DEFINE_TYPE_INTRUSIVE / NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT / NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_ONLY_SERIALIZE</a> for similar macros that can be defined <em>inside</em> a non-derived type.</li> <li><a href=../nlohmann_define_type_non_intrusive/ >NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE / NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT / NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE</a> for similar macros that can be defined <em>outside</em> a non-derived type.</li> <li><a href=../../../features/arbitrary_types/ >Arbitrary Type Conversions</a> for an overview.</li> </ul> <h2 id=version-history>Version history<a class=headerlink href=#version-history title="Permanent link">&para;</a></h2> <ol> <li>Added in version 3.12.0.</li> <li>Added in version 3.12.0.</li> <li>Added in version 3.12.0.</li> <li>Added in version 3.12.0.</li> <li>Added in version 3.12.0.</li> <li>Added in version 3.12.0.</li> </ol> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 23, 2026 11:16:18 UTC">June 23, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
+</code></pre></div> <p>Notes:</p> <ul> <li><code>A</code> and <code>B</code> are default-constructible. This is a requirement for using the macro.</li> <li><code>A</code> has private members and is not a derived class. Hence, macro <code>NLOHMANN_DEFINE_TYPE_INTRUSIVE</code> is used.</li> <li>As <code>B</code> is a derived class, <code>NLOHMANN_DEFINE_TYPE_INTRUSIVE</code> is not applicable, but <code>NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE</code> must be used.</li> <li>The macro <code>NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE</code> is used <em>inside</em> the class use as <code>NLOHMANN_DEFINE_TYPE_INTRUSIVE</code>.</li> </ul> </details> <h2 id=see-also>See also<a class=headerlink href=#see-also title="Permanent link">&para;</a></h2> <ul> <li><a href=../nlohmann_define_type_intrusive/ >NLOHMANN_DEFINE_TYPE_INTRUSIVE / NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT / NLOHMANN_DEFINE_TYPE_INTRUSIVE_ONLY_SERIALIZE</a> for similar macros that can be defined <em>inside</em> a non-derived type.</li> <li><a href=../nlohmann_define_type_non_intrusive/ >NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE / NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT / NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE</a> for similar macros that can be defined <em>outside</em> a non-derived type.</li> <li><a href=../../../features/arbitrary_types/ >Arbitrary Type Conversions</a> for an overview.</li> </ul> <h2 id=version-history>Version history<a class=headerlink href=#version-history title="Permanent link">&para;</a></h2> <ol> <li>Added in version 3.12.0.</li> <li>Added in version 3.12.0.</li> <li>Added in version 3.12.0.</li> <li>Added in version 3.12.0.</li> <li>Added in version 3.12.0.</li> <li>Added in version 3.12.0.</li> </ol> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 29, 2026 20:15:18 UTC">June 29, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
diff --git a/api/macros/nlohmann_define_type_intrusive/index.html b/api/macros/nlohmann_define_type_intrusive/index.html
index 53e4b7d..aa14e38 100644
--- a/api/macros/nlohmann_define_type_intrusive/index.html
+++ b/api/macros/nlohmann_define_type_intrusive/index.html
@@ -1,7 +1,7 @@
 <!doctype html><html lang=en class=no-js> <head><meta charset=utf-8><meta name=viewport content="width=device-width,initial-scale=1"><meta name=author content="Niels Lohmann"><link href="https://json.nlohmann.me/api/macros/nlohmann_define_type_intrusive/" rel="canonical"><link href=../nlohmann_define_derived_type/ rel=prev><link href=../nlohmann_define_type_non_intrusive/ rel=next><link rel=icon href=../../../assets/images/favicon.png><meta name=generator content="mkdocs-1.6.1, mkdocs-material-9.7.6"><title>NLOHMANN_DEFINE_TYPE_INTRUSIVE, NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_TYPE_INTRUSIVE_ONLY_SERIALIZE - JSON for Modern C++</title><link rel=stylesheet href=../../../assets/stylesheets/main.484c7ddc.min.css><link rel=stylesheet href=../../../assets/stylesheets/palette.ab4e12ef.min.css><link rel="stylesheet" href="../../../assets/external/fonts.googleapis.com/css.61a430c9.css"><style>:root{--md-text-font:"Roboto";--md-code-font:"JetBrains Mono"}</style><link rel=stylesheet href=../../../css/custom.css><script>__md_scope=new URL("../../..",location),__md_hash=e=>[...e].reduce(((e,_)=>(e<<5)-e+_.charCodeAt(0)),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script></head> <body dir=ltr data-md-color-scheme=default data-md-color-primary=indigo data-md-color-accent=indigo> <input class=md-toggle data-md-toggle=drawer type=checkbox id=__drawer autocomplete=off> <input class=md-toggle data-md-toggle=search type=checkbox id=__search autocomplete=off> <label class=md-overlay for=__drawer></label> <div data-md-component=skip> <a href=#nlohmann_define_type_intrusive-nlohmann_define_type_intrusive_with_default-nlohmann_define_type_intrusive_only_serialize class=md-skip> Skip to content </a> </div> <div data-md-component=announce> </div> <header class=md-header data-md-component=header> <nav class="md-header__inner md-grid" aria-label=Header> <a href=../../.. title="JSON for Modern C++" class="md-header__button md-logo" aria-label="JSON for Modern C++" data-md-component=logo> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54"/></svg> </a> <label class="md-header__button md-icon" for=__drawer> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M3 6h18v2H3zm0 5h18v2H3zm0 5h18v2H3z"/></svg> </label> <div class=md-header__title data-md-component=header-title> <div class=md-header__ellipsis> <div class=md-header__topic> <span class=md-ellipsis> JSON for Modern C++ </span> </div> <div class=md-header__topic data-md-component=header-topic> <span class=md-ellipsis> NLOHMANN_DEFINE_TYPE_INTRUSIVE, NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_TYPE_INTRUSIVE_ONLY_SERIALIZE </span> </div> </div> </div> <form class=md-header__option data-md-component=palette> <input class=md-option data-md-color-media="(prefers-color-scheme: light)" data-md-color-scheme=default data-md-color-primary=indigo data-md-color-accent=indigo aria-label="Switch to dark mode" type=radio name=__palette id=__palette_0> <label class="md-header__button md-icon" title="Switch to dark mode" for=__palette_1 hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a4 4 0 0 0-4 4 4 4 0 0 0 4 4 4 4 0 0 0 4-4 4 4 0 0 0-4-4m0 10a6 6 0 0 1-6-6 6 6 0 0 1 6-6 6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12z"/></svg> </label> <input class=md-option data-md-color-media="(prefers-color-scheme: dark)" data-md-color-scheme=slate data-md-color-primary=indigo data-md-color-accent=indigo aria-label="Switch to light mode" type=radio name=__palette id=__palette_1> <label class="md-header__button md-icon" title="Switch to light mode" for=__palette_0 hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 18c-.89 0-1.74-.2-2.5-.55C11.56 16.5 13 14.42 13 12s-1.44-4.5-3.5-5.45C10.26 6.2 11.11 6 12 6a6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12z"/></svg> </label> </form> <script>var palette=__md_get("__palette");if(palette&&palette.color){if("(prefers-color-scheme)"===palette.color.media){var media=matchMedia("(prefers-color-scheme: light)"),input=document.querySelector(media.matches?"[data-md-color-media='(prefers-color-scheme: light)']":"[data-md-color-media='(prefers-color-scheme: dark)']");palette.color.media=input.getAttribute("data-md-color-media"),palette.color.scheme=input.getAttribute("data-md-color-scheme"),palette.color.primary=input.getAttribute("data-md-color-primary"),palette.color.accent=input.getAttribute("data-md-color-accent")}for(var[key,value]of Object.entries(palette.color))document.body.setAttribute("data-md-color-"+key,value)}</script> <label class="md-header__button md-icon" for=__search> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg> </label> <div class=md-search data-md-component=search role=dialog> <label class=md-search__overlay for=__search></label> <div class=md-search__inner role=search> <form class=md-search__form name=search> <input type=text class=md-search__input name=query aria-label=Search placeholder=Search autocapitalize=off autocorrect=off autocomplete=off spellcheck=false data-md-component=search-query required> <label class="md-search__icon md-icon" for=__search> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11z"/></svg> </label> <nav class=md-search__options aria-label=Search> <button type=reset class="md-search__icon md-icon" title=Clear aria-label=Clear tabindex=-1> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z"/></svg> </button> </nav> </form> <div class=md-search__output> <div class=md-search__scrollwrap tabindex=0 data-md-scrollfix> <div class=md-search-result data-md-component=search-result> <div class=md-search-result__meta> Initializing search </div> <ol class=md-search-result__list role=presentation></ol> </div> </div> </div> </div> </div> <div class=md-header__source> <a href="https://github.com/nlohmann/json" title="Go to repository" class="md-source" data-md-component="source"> <div class="md-source__icon md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </div> <div class=md-source__repository> nlohmann/json </div> </a> </div> </nav> </header> <div class=md-container data-md-component=container> <nav class=md-tabs aria-label=Tabs data-md-component=tabs> <div class=md-grid> <ul class=md-tabs__list> <li class=md-tabs__item> <a href=../../.. class=md-tabs__link> Home </a> </li> <li class=md-tabs__item> <a href=../../../features/arbitrary_types/ class=md-tabs__link> Features </a> </li> <li class=md-tabs__item> <a href=../../../integration/ class=md-tabs__link> Integration </a> </li> <li class="md-tabs__item md-tabs__item--active"> <a href=../../basic_json/ class=md-tabs__link> API Documentation </a> </li> <li class=md-tabs__item> <a href=../../../community/ class=md-tabs__link> Community </a> </li> </ul> </div> </nav> <main class=md-main data-md-component=main> <div class="md-main__inner md-grid"> <div class="md-sidebar md-sidebar--primary" data-md-component=sidebar data-md-type=navigation> <div class=md-sidebar__scrollwrap> <div class=md-sidebar__inner> <nav class="md-nav md-nav--primary md-nav--lifted" aria-label=Navigation data-md-level=0> <label class=md-nav__title for=__drawer> <a href=../../.. title="JSON for Modern C++" class="md-nav__button md-logo" aria-label="JSON for Modern C++" data-md-component=logo> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54"/></svg> </a> JSON for Modern C++ </label> <div class=md-nav__source> <a href="https://github.com/nlohmann/json" title="Go to repository" class="md-source" data-md-component="source"> <div class="md-source__icon md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </div> <div class=md-source__repository> nlohmann/json </div> </a> </div> <ul class=md-nav__list data-md-scrollfix> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_1> <div class="md-nav__link md-nav__container"> <a href=../../.. class="md-nav__link "> <span class=md-ellipsis> Home </span> </a> <label class="md-nav__link " for=__nav_1 id=__nav_1_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_1_label aria-expanded=false> <label class=md-nav__title for=__nav_1> <span class="md-nav__icon md-icon"></span> Home </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../home/license/ class=md-nav__link> <span class=md-ellipsis> License </span> </a> </li> <li class=md-nav__item> <a href=../../../home/faq/ class=md-nav__link> <span class=md-ellipsis> FAQ </span> </a> </li> <li class=md-nav__item> <a href=../../../home/exceptions/ class=md-nav__link> <span class=md-ellipsis> Exceptions </span> </a> </li> <li class=md-nav__item> <a href=../../../home/releases/ class=md-nav__link> <span class=md-ellipsis> Releases </span> </a> </li> <li class=md-nav__item> <a href=../../../home/design_goals/ class=md-nav__link> <span class=md-ellipsis> Design goals </span> </a> </li> <li class=md-nav__item> <a href=../../../home/architecture/ class=md-nav__link> <span class=md-ellipsis> Architecture </span> </a> </li> <li class=md-nav__item> <a href=../../../home/customers/ class=md-nav__link> <span class=md-ellipsis> Customers </span> </a> </li> <li class=md-nav__item> <a href=../../../home/sponsors/ class=md-nav__link> <span class=md-ellipsis> Sponsors </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2> <label class=md-nav__link for=__nav_2 id=__nav_2_label tabindex=0> <span class=md-ellipsis> Features </span> <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_2_label aria-expanded=false> <label class=md-nav__title for=__nav_2> <span class="md-nav__icon md-icon"></span> Features </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/arbitrary_types/ class=md-nav__link> <span class=md-ellipsis> Arbitrary Type Conversions </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_2> <div class="md-nav__link md-nav__container"> <a href=../../../features/binary_formats/ class="md-nav__link "> <span class=md-ellipsis> Binary Formats </span> </a> <label class="md-nav__link " for=__nav_2_2 id=__nav_2_2_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_2_label aria-expanded=false> <label class=md-nav__title for=__nav_2_2> <span class="md-nav__icon md-icon"></span> Binary Formats </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/binary_formats/bjdata/ class=md-nav__link> <span class=md-ellipsis> BJData </span> </a> </li> <li class=md-nav__item> <a href=../../../features/binary_formats/bson/ class=md-nav__link> <span class=md-ellipsis> BSON </span> </a> </li> <li class=md-nav__item> <a href=../../../features/binary_formats/cbor/ class=md-nav__link> <span class=md-ellipsis> CBOR </span> </a> </li> <li class=md-nav__item> <a href=../../../features/binary_formats/messagepack/ class=md-nav__link> <span class=md-ellipsis> MessagePack </span> </a> </li> <li class=md-nav__item> <a href=../../../features/binary_formats/ubjson/ class=md-nav__link> <span class=md-ellipsis> UBJSON </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../../features/binary_values/ class=md-nav__link> <span class=md-ellipsis> Binary Values </span> </a> </li> <li class=md-nav__item> <a href=../../../features/comments/ class=md-nav__link> <span class=md-ellipsis> Comments </span> </a> </li> <li class=md-nav__item> <a href=../../../features/trailing_commas/ class=md-nav__link> <span class=md-ellipsis> Trailing Commas </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_6> <div class="md-nav__link md-nav__container"> <a href=../../../features/element_access/ class="md-nav__link "> <span class=md-ellipsis> Element Access </span> </a> <label class="md-nav__link " for=__nav_2_6 id=__nav_2_6_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_6_label aria-expanded=false> <label class=md-nav__title for=__nav_2_6> <span class="md-nav__icon md-icon"></span> Element Access </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/element_access/unchecked_access/ class=md-nav__link> <span class=md-ellipsis> Unchecked access: operator[] </span> </a> </li> <li class=md-nav__item> <a href=../../../features/element_access/checked_access/ class=md-nav__link> <span class=md-ellipsis> Checked access: at </span> </a> </li> <li class=md-nav__item> <a href=../../../features/element_access/default_value/ class=md-nav__link> <span class=md-ellipsis> Access with default value: value </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../../features/iterators/ class=md-nav__link> <span class=md-ellipsis> Iterators </span> </a> </li> <li class=md-nav__item> <a href=../../../features/json_pointer/ class=md-nav__link> <span class=md-ellipsis> JSON Pointer </span> </a> </li> <li class=md-nav__item> <a href=../../../features/json_patch/ class=md-nav__link> <span class=md-ellipsis> JSON Patch and Diff </span> </a> </li> <li class=md-nav__item> <a href=../../../features/merge_patch/ class=md-nav__link> <span class=md-ellipsis> JSON Merge Patch </span> </a> </li> <li class=md-nav__item> <a href=../../../features/modules/ class=md-nav__link> <span class=md-ellipsis> Modules </span> </a> </li> <li class=md-nav__item> <a href=../../../features/namespace/ class=md-nav__link> <span class=md-ellipsis> nlohmann Namespace </span> </a> </li> <li class=md-nav__item> <a href=../../../features/object_order/ class=md-nav__link> <span class=md-ellipsis> Object Order </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_14> <div class="md-nav__link md-nav__container"> <a href=../../../features/parsing/ class="md-nav__link "> <span class=md-ellipsis> Parsing </span> </a> <label class="md-nav__link " for=__nav_2_14 id=__nav_2_14_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_14_label aria-expanded=false> <label class=md-nav__title for=__nav_2_14> <span class="md-nav__icon md-icon"></span> Parsing </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/parsing/json_lines/ class=md-nav__link> <span class=md-ellipsis> JSON Lines </span> </a> </li> <li class=md-nav__item> <a href=../../../features/parsing/parse_exceptions/ class=md-nav__link> <span class=md-ellipsis> Parsing and Exceptions </span> </a> </li> <li class=md-nav__item> <a href=../../../features/parsing/parser_callbacks/ class=md-nav__link> <span class=md-ellipsis> Parser Callbacks </span> </a> </li> <li class=md-nav__item> <a href=../../../features/parsing/sax_interface/ class=md-nav__link> <span class=md-ellipsis> SAX Interface </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../../features/assertions/ class=md-nav__link> <span class=md-ellipsis> Runtime Assertions </span> </a> </li> <li class=md-nav__item> <a href=../../../features/enum_conversion/ class=md-nav__link> <span class=md-ellipsis> Specializing enum conversion </span> </a> </li> <li class=md-nav__item> <a href=../../../features/macros/ class=md-nav__link> <span class=md-ellipsis> Supported Macros </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_18> <div class="md-nav__link md-nav__container"> <a href=../../../features/types/ class="md-nav__link "> <span class=md-ellipsis> Types </span> </a> <label class="md-nav__link " for=__nav_2_18 id=__nav_2_18_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_18_label aria-expanded=false> <label class=md-nav__title for=__nav_2_18> <span class="md-nav__icon md-icon"></span> Types </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/types/number_handling/ class=md-nav__link> <span class=md-ellipsis> Number Handling </span> </a> </li> </ul> </nav> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_3> <div class="md-nav__link md-nav__container"> <a href=../../../integration/ class="md-nav__link "> <span class=md-ellipsis> Integration </span> </a> <label class="md-nav__link " for=__nav_3 id=__nav_3_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_3_label aria-expanded=false> <label class=md-nav__title for=__nav_3> <span class="md-nav__icon md-icon"></span> Integration </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../integration/migration_guide/ class=md-nav__link> <span class=md-ellipsis> Migration Guide </span> </a> </li> <li class=md-nav__item> <a href=../../../integration/cmake/ class=md-nav__link> <span class=md-ellipsis> CMake </span> </a> </li> <li class=md-nav__item> <a href=../../../integration/package_managers/ class=md-nav__link> <span class=md-ellipsis> Package Managers </span> </a> </li> <li class=md-nav__item> <a href=../../../integration/pkg-config/ class=md-nav__link> <span class=md-ellipsis> Pkg-config </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--active md-nav__item--section md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4 checked> <label class=md-nav__link for=__nav_4 id=__nav_4_label tabindex> <span class=md-ellipsis> API Documentation </span> <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_4_label aria-expanded=true> <label class=md-nav__title for=__nav_4> <span class="md-nav__icon md-icon"></span> API Documentation </label> <ul class=md-nav__list data-md-scrollfix> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_1> <div class="md-nav__link md-nav__container"> <a href=../../basic_json/ class="md-nav__link "> <span class=md-ellipsis> basic_json </span> </a> <label class="md-nav__link " for=__nav_4_1 id=__nav_4_1_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_1_label aria-expanded=false> <label class=md-nav__title for=__nav_4_1> <span class="md-nav__icon md-icon"></span> basic_json </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../basic_json/basic_json/ class=md-nav__link> <span class=md-ellipsis> (Constructor) </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/~basic_json/ class=md-nav__link> <span class=md-ellipsis> (Destructor) </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/accept/ class=md-nav__link> <span class=md-ellipsis> accept </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/array/ class=md-nav__link> <span class=md-ellipsis> array </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/array_t/ class=md-nav__link> <span class=md-ellipsis> array_t </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/at/ class=md-nav__link> <span class=md-ellipsis> at </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/back/ class=md-nav__link> <span class=md-ellipsis> back </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/begin/ class=md-nav__link> <span class=md-ellipsis> begin </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/binary/ class=md-nav__link> <span class=md-ellipsis> binary </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/binary_t/ class=md-nav__link> <span class=md-ellipsis> binary_t </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/boolean_t/ class=md-nav__link> <span class=md-ellipsis> boolean_t </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/cbegin/ class=md-nav__link> <span class=md-ellipsis> cbegin </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/cbor_tag_handler_t/ class=md-nav__link> <span class=md-ellipsis> cbor_tag_handler_t </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/cend/ class=md-nav__link> <span class=md-ellipsis> cend </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/clear/ class=md-nav__link> <span class=md-ellipsis> clear </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/contains/ class=md-nav__link> <span class=md-ellipsis> contains </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/count/ class=md-nav__link> <span class=md-ellipsis> count </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/crbegin/ class=md-nav__link> <span class=md-ellipsis> crbegin </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/crend/ class=md-nav__link> <span class=md-ellipsis> crend </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/default_object_comparator_t/ class=md-nav__link> <span class=md-ellipsis> default_object_comparator_t </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/diff/ class=md-nav__link> <span class=md-ellipsis> diff </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/dump/ class=md-nav__link> <span class=md-ellipsis> dump </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/emplace/ class=md-nav__link> <span class=md-ellipsis> emplace </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/emplace_back/ class=md-nav__link> <span class=md-ellipsis> emplace_back </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/empty/ class=md-nav__link> <span class=md-ellipsis> empty </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/end/ class=md-nav__link> <span class=md-ellipsis> end </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/end_pos/ class=md-nav__link> <span class=md-ellipsis> end_pos </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/erase/ class=md-nav__link> <span class=md-ellipsis> erase </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/error_handler_t/ class=md-nav__link> <span class=md-ellipsis> error_handler_t </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/exception/ class=md-nav__link> <span class=md-ellipsis> exception </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/find/ class=md-nav__link> <span class=md-ellipsis> find </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/flatten/ class=md-nav__link> <span class=md-ellipsis> flatten </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/from_bjdata/ class=md-nav__link> <span class=md-ellipsis> from_bjdata </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/from_bson/ class=md-nav__link> <span class=md-ellipsis> from_bson </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/from_cbor/ class=md-nav__link> <span class=md-ellipsis> from_cbor </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/from_msgpack/ class=md-nav__link> <span class=md-ellipsis> from_msgpack </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/from_ubjson/ class=md-nav__link> <span class=md-ellipsis> from_ubjson </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/front/ class=md-nav__link> <span class=md-ellipsis> front </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/get/ class=md-nav__link> <span class=md-ellipsis> get </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/get_allocator/ class=md-nav__link> <span class=md-ellipsis> get_allocator </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/get_binary/ class=md-nav__link> <span class=md-ellipsis> get_binary </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/get_ptr/ class=md-nav__link> <span class=md-ellipsis> get_ptr </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/get_ref/ class=md-nav__link> <span class=md-ellipsis> get_ref </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/get_to/ class=md-nav__link> <span class=md-ellipsis> get_to </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/std_hash/ class=md-nav__link> <span class=md-ellipsis> std::hash&lt;basic_json&gt; </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/input_format_t/ class=md-nav__link> <span class=md-ellipsis> input_format_t </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/insert/ class=md-nav__link> <span class=md-ellipsis> insert </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/invalid_iterator/ class=md-nav__link> <span class=md-ellipsis> invalid_iterator </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/is_array/ class=md-nav__link> <span class=md-ellipsis> is_array </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/is_binary/ class=md-nav__link> <span class=md-ellipsis> is_binary </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/is_boolean/ class=md-nav__link> <span class=md-ellipsis> is_boolean </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/is_discarded/ class=md-nav__link> <span class=md-ellipsis> is_discarded </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/is_null/ class=md-nav__link> <span class=md-ellipsis> is_null </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/is_number/ class=md-nav__link> <span class=md-ellipsis> is_number </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/is_number_float/ class=md-nav__link> <span class=md-ellipsis> is_number_float </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/is_number_integer/ class=md-nav__link> <span class=md-ellipsis> is_number_integer </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/is_number_unsigned/ class=md-nav__link> <span class=md-ellipsis> is_number_unsigned </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/is_object/ class=md-nav__link> <span class=md-ellipsis> is_object </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/is_primitive/ class=md-nav__link> <span class=md-ellipsis> is_primitive </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/is_string/ class=md-nav__link> <span class=md-ellipsis> is_string </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/is_structured/ class=md-nav__link> <span class=md-ellipsis> is_structured </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/items/ class=md-nav__link> <span class=md-ellipsis> items </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/json_base_class_t/ class=md-nav__link> <span class=md-ellipsis> json_base_class_t </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/json_serializer/ class=md-nav__link> <span class=md-ellipsis> json_serializer </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/max_size/ class=md-nav__link> <span class=md-ellipsis> max_size </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/meta/ class=md-nav__link> <span class=md-ellipsis> meta </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/merge_patch/ class=md-nav__link> <span class=md-ellipsis> merge_patch </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/number_float_t/ class=md-nav__link> <span class=md-ellipsis> number_float_t </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/number_integer_t/ class=md-nav__link> <span class=md-ellipsis> number_integer_t </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/number_unsigned_t/ class=md-nav__link> <span class=md-ellipsis> number_unsigned_t </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/object/ class=md-nav__link> <span class=md-ellipsis> object </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/object_comparator_t/ class=md-nav__link> <span class=md-ellipsis> object_comparator_t </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/object_t/ class=md-nav__link> <span class=md-ellipsis> object_t </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/operator_ValueType/ class=md-nav__link> <span class=md-ellipsis> operator ValueType </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/operator_value_t/ class=md-nav__link> <span class=md-ellipsis> operator value_t </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/operator%5B%5D/ class=md-nav__link> <span class=md-ellipsis> operator[] </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/operator%3D/ class=md-nav__link> <span class=md-ellipsis> operator= </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/operator%2B%3D/ class=md-nav__link> <span class=md-ellipsis> operator+= </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/operator_eq/ class=md-nav__link> <span class=md-ellipsis> operator== </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/operator_ne/ class=md-nav__link> <span class=md-ellipsis> operator!= </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/operator_lt/ class=md-nav__link> <span class=md-ellipsis> operator< </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/operator_gt/ class=md-nav__link> <span class=md-ellipsis> operator> </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/operator_le/ class=md-nav__link> <span class=md-ellipsis> operator<= </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/operator_ge/ class=md-nav__link> <span class=md-ellipsis> operator>= </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/operator_spaceship/ class=md-nav__link> <span class=md-ellipsis> operator<=> </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/out_of_range/ class=md-nav__link> <span class=md-ellipsis> out_of_range </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/other_error/ class=md-nav__link> <span class=md-ellipsis> other_error </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/parse/ class=md-nav__link> <span class=md-ellipsis> parse </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/parse_error/ class=md-nav__link> <span class=md-ellipsis> parse_error </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/parse_event_t/ class=md-nav__link> <span class=md-ellipsis> parse_event_t </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/parser_callback_t/ class=md-nav__link> <span class=md-ellipsis> parser_callback_t </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/patch/ class=md-nav__link> <span class=md-ellipsis> patch </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/patch_inplace/ class=md-nav__link> <span class=md-ellipsis> patch_inplace </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/push_back/ class=md-nav__link> <span class=md-ellipsis> push_back </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/rbegin/ class=md-nav__link> <span class=md-ellipsis> rbegin </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/rend/ class=md-nav__link> <span class=md-ellipsis> rend </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/sax_parse/ class=md-nav__link> <span class=md-ellipsis> sax_parse </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/size/ class=md-nav__link> <span class=md-ellipsis> size </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/start_pos/ class=md-nav__link> <span class=md-ellipsis> start_pos </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/string_t/ class=md-nav__link> <span class=md-ellipsis> string_t </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/swap/ class=md-nav__link> <span class=md-ellipsis> swap </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/std_swap/ class=md-nav__link> <span class=md-ellipsis> std::swap&lt;basic_json&gt; </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/to_bjdata/ class=md-nav__link> <span class=md-ellipsis> to_bjdata </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/to_bson/ class=md-nav__link> <span class=md-ellipsis> to_bson </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/to_cbor/ class=md-nav__link> <span class=md-ellipsis> to_cbor </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/to_msgpack/ class=md-nav__link> <span class=md-ellipsis> to_msgpack </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/to_string/ class=md-nav__link> <span class=md-ellipsis> to_string </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/to_ubjson/ class=md-nav__link> <span class=md-ellipsis> to_ubjson </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/type/ class=md-nav__link> <span class=md-ellipsis> type </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/type_error/ class=md-nav__link> <span class=md-ellipsis> type_error </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/type_name/ class=md-nav__link> <span class=md-ellipsis> type_name </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/unflatten/ class=md-nav__link> <span class=md-ellipsis> unflatten </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/update/ class=md-nav__link> <span class=md-ellipsis> update </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/value/ class=md-nav__link> <span class=md-ellipsis> value </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/value_t/ class=md-nav__link> <span class=md-ellipsis> value_t </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_2> <div class="md-nav__link md-nav__container"> <a href=../../byte_container_with_subtype/ class="md-nav__link "> <span class=md-ellipsis> byte_container_with_subtype </span> </a> <label class="md-nav__link " for=__nav_4_2 id=__nav_4_2_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_2_label aria-expanded=false> <label class=md-nav__title for=__nav_4_2> <span class="md-nav__icon md-icon"></span> byte_container_with_subtype </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../byte_container_with_subtype/byte_container_with_subtype/ class=md-nav__link> <span class=md-ellipsis> (constructor) </span> </a> </li> <li class=md-nav__item> <a href=../../byte_container_with_subtype/clear_subtype/ class=md-nav__link> <span class=md-ellipsis> clear_subtype </span> </a> </li> <li class=md-nav__item> <a href=../../byte_container_with_subtype/has_subtype/ class=md-nav__link> <span class=md-ellipsis> has_subtype </span> </a> </li> <li class=md-nav__item> <a href=../../byte_container_with_subtype/set_subtype/ class=md-nav__link> <span class=md-ellipsis> set_subtype </span> </a> </li> <li class=md-nav__item> <a href=../../byte_container_with_subtype/subtype/ class=md-nav__link> <span class=md-ellipsis> subtype </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_3> <div class="md-nav__link md-nav__container"> <a href=../../adl_serializer/ class="md-nav__link "> <span class=md-ellipsis> adl_serializer </span> </a> <label class="md-nav__link " for=__nav_4_3 id=__nav_4_3_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_3_label aria-expanded=false> <label class=md-nav__title for=__nav_4_3> <span class="md-nav__icon md-icon"></span> adl_serializer </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../adl_serializer/from_json/ class=md-nav__link> <span class=md-ellipsis> from_json </span> </a> </li> <li class=md-nav__item> <a href=../../adl_serializer/to_json/ class=md-nav__link> <span class=md-ellipsis> to_json </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../json/ class=md-nav__link> <span class=md-ellipsis> json </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_5> <div class="md-nav__link md-nav__container"> <a href=../../json_pointer/ class="md-nav__link "> <span class=md-ellipsis> json_pointer </span> </a> <label class="md-nav__link " for=__nav_4_5 id=__nav_4_5_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_5_label aria-expanded=false> <label class=md-nav__title for=__nav_4_5> <span class="md-nav__icon md-icon"></span> json_pointer </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../json_pointer/json_pointer/ class=md-nav__link> <span class=md-ellipsis> (Constructor) </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/back/ class=md-nav__link> <span class=md-ellipsis> back </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/empty/ class=md-nav__link> <span class=md-ellipsis> empty </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/front/ class=md-nav__link> <span class=md-ellipsis> front </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_string_t/ class=md-nav__link> <span class=md-ellipsis> operator string_t </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_eq/ class=md-nav__link> <span class=md-ellipsis> operator== </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_ne/ class=md-nav__link> <span class=md-ellipsis> operator!= </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_slash/ class=md-nav__link> <span class=md-ellipsis> operator/ </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_slasheq/ class=md-nav__link> <span class=md-ellipsis> operator/= </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/parent_pointer/ class=md-nav__link> <span class=md-ellipsis> parent_pointer </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/pop_back/ class=md-nav__link> <span class=md-ellipsis> pop_back </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/pop_front/ class=md-nav__link> <span class=md-ellipsis> pop_front </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/push_back/ class=md-nav__link> <span class=md-ellipsis> push_back </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/push_front/ class=md-nav__link> <span class=md-ellipsis> push_front </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/string_t/ class=md-nav__link> <span class=md-ellipsis> string_t </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/to_string/ class=md-nav__link> <span class=md-ellipsis> to_string </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_6> <div class="md-nav__link md-nav__container"> <a href=../../json_sax/ class="md-nav__link "> <span class=md-ellipsis> json_sax </span> </a> <label class="md-nav__link " for=__nav_4_6 id=__nav_4_6_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_6_label aria-expanded=false> <label class=md-nav__title for=__nav_4_6> <span class="md-nav__icon md-icon"></span> json_sax </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../json_sax/binary/ class=md-nav__link> <span class=md-ellipsis> binary </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/boolean/ class=md-nav__link> <span class=md-ellipsis> boolean </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/end_array/ class=md-nav__link> <span class=md-ellipsis> end_array </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/end_object/ class=md-nav__link> <span class=md-ellipsis> end_object </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/key/ class=md-nav__link> <span class=md-ellipsis> key </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/null/ class=md-nav__link> <span class=md-ellipsis> null </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/number_float/ class=md-nav__link> <span class=md-ellipsis> number_float </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/number_integer/ class=md-nav__link> <span class=md-ellipsis> number_integer </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/number_unsigned/ class=md-nav__link> <span class=md-ellipsis> number_unsigned </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/parse_error/ class=md-nav__link> <span class=md-ellipsis> parse_error </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/start_array/ class=md-nav__link> <span class=md-ellipsis> start_array </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/start_object/ class=md-nav__link> <span class=md-ellipsis> start_object </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/string/ class=md-nav__link> <span class=md-ellipsis> string </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../operator_ltlt/ class=md-nav__link> <span class=md-ellipsis> operator<<(basic_json), operator<<(json_pointer) </span> </a> </li> <li class=md-nav__item> <a href=../../operator_gtgt/ class=md-nav__link> <span class=md-ellipsis> operator>>(basic_json) </span> </a> </li> <li class=md-nav__item> <a href=../../operator_literal_json/ class=md-nav__link> <span class=md-ellipsis> operator""_json </span> </a> </li> <li class=md-nav__item> <a href=../../operator_literal_json_pointer/ class=md-nav__link> <span class=md-ellipsis> operator""_json_pointer </span> </a> </li> <li class=md-nav__item> <a href=../../ordered_json/ class=md-nav__link> <span class=md-ellipsis> ordered_json </span> </a> </li> <li class=md-nav__item> <a href=../../ordered_map/ class=md-nav__link> <span class=md-ellipsis> ordered_map </span> </a> </li> <li class="md-nav__item md-nav__item--active md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_13 checked> <div class="md-nav__link md-nav__container"> <a href=../ class="md-nav__link "> <span class=md-ellipsis> macros </span> </a> <label class="md-nav__link " for=__nav_4_13 id=__nav_4_13_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_13_label aria-expanded=true> <label class=md-nav__title for=__nav_4_13> <span class="md-nav__icon md-icon"></span> macros </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../json_assert/ class=md-nav__link> <span class=md-ellipsis> JSON_ASSERT </span> </a> </li> <li class=md-nav__item> <a href=../json_brace_init_copy_semantics/ class=md-nav__link> <span class=md-ellipsis> JSON_BRACE_INIT_COPY_SEMANTICS </span> </a> </li> <li class=md-nav__item> <a href=../json_throw_user/ class=md-nav__link> <span class=md-ellipsis> JSON_CATCH_USER, JSON_THROW_USER, JSON_TRY_USER </span> </a> </li> <li class=md-nav__item> <a href=../json_diagnostics/ class=md-nav__link> <span class=md-ellipsis> JSON_DIAGNOSTICS </span> </a> </li> <li class=md-nav__item> <a href=../json_diagnostic_positions/ class=md-nav__link> <span class=md-ellipsis> JSON_DIAGNOSTIC_POSITIONS </span> </a> </li> <li class=md-nav__item> <a href=../json_disable_enum_serialization/ class=md-nav__link> <span class=md-ellipsis> JSON_DISABLE_ENUM_SERIALIZATION </span> </a> </li> <li class=md-nav__item> <a href=../json_has_cpp_11/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_CPP_11, JSON_HAS_CPP_14, JSON_HAS_CPP_17, JSON_HAS_CPP_20 </span> </a> </li> <li class=md-nav__item> <a href=../json_has_filesystem/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_EXPERIMENTAL_FILESYSTEM, JSON_HAS_FILESYSTEM </span> </a> </li> <li class=md-nav__item> <a href=../json_has_ranges/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_RANGES </span> </a> </li> <li class=md-nav__item> <a href=../json_has_static_rtti/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_STATIC_RTTI </span> </a> </li> <li class=md-nav__item> <a href=../json_has_three_way_comparison/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_THREE_WAY_COMPARISON </span> </a> </li> <li class=md-nav__item> <a href=../json_noexception/ class=md-nav__link> <span class=md-ellipsis> JSON_NOEXCEPTION </span> </a> </li> <li class=md-nav__item> <a href=../json_no_io/ class=md-nav__link> <span class=md-ellipsis> JSON_NO_IO </span> </a> </li> <li class=md-nav__item> <a href=../json_skip_library_version_check/ class=md-nav__link> <span class=md-ellipsis> JSON_SKIP_LIBRARY_VERSION_CHECK </span> </a> </li> <li class=md-nav__item> <a href=../json_skip_unsupported_compiler_check/ class=md-nav__link> <span class=md-ellipsis> JSON_SKIP_UNSUPPORTED_COMPILER_CHECK </span> </a> </li> <li class=md-nav__item> <a href=../json_use_global_udls/ class=md-nav__link> <span class=md-ellipsis> JSON_USE_GLOBAL_UDLS </span> </a> </li> <li class=md-nav__item> <a href=../json_use_implicit_conversions/ class=md-nav__link> <span class=md-ellipsis> JSON_USE_IMPLICIT_CONVERSIONS </span> </a> </li> <li class=md-nav__item> <a href=../json_use_legacy_discarded_value_comparison/ class=md-nav__link> <span class=md-ellipsis> JSON_USE_LEGACY_DISCARDED_VALUE_COMPARISON </span> </a> </li> <li class=md-nav__item> <a href=../nlohmann_define_derived_type/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_ONLY_SERIALIZE, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE </span> </a> </li> <li class="md-nav__item md-nav__item--active"> <input class="md-nav__toggle md-toggle" type=checkbox id=__toc> <label class="md-nav__link md-nav__link--active" for=__toc> <span class=md-ellipsis> NLOHMANN_DEFINE_TYPE_INTRUSIVE, NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_TYPE_INTRUSIVE_ONLY_SERIALIZE </span> <span class="md-nav__icon md-icon"></span> </label> <a href=./ class="md-nav__link md-nav__link--active"> <span class=md-ellipsis> NLOHMANN_DEFINE_TYPE_INTRUSIVE, NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_TYPE_INTRUSIVE_ONLY_SERIALIZE </span> </a> <nav class="md-nav md-nav--secondary" aria-label="Table of contents"> <label class=md-nav__title for=__toc> <span class="md-nav__icon md-icon"></span> Table of contents </label> <ul class=md-nav__list data-md-component=toc data-md-scrollfix> <li class=md-nav__item> <a href=#parameters class=md-nav__link> <span class=md-ellipsis> Parameters </span> </a> </li> <li class=md-nav__item> <a href=#default-definition class=md-nav__link> <span class=md-ellipsis> Default definition </span> </a> </li> <li class=md-nav__item> <a href=#notes class=md-nav__link> <span class=md-ellipsis> Notes </span> </a> </li> <li class=md-nav__item> <a href=#examples class=md-nav__link> <span class=md-ellipsis> Examples </span> </a> </li> <li class=md-nav__item> <a href=#see-also class=md-nav__link> <span class=md-ellipsis> See also </span> </a> </li> <li class=md-nav__item> <a href=#version-history class=md-nav__link> <span class=md-ellipsis> Version history </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../nlohmann_define_type_non_intrusive/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE </span> </a> </li> <li class=md-nav__item> <a href=../nlohmann_define_type_with_names/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_TYPE_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES </span> </a> </li> <li class=md-nav__item> <a href=../nlohmann_json_namespace/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_NAMESPACE </span> </a> </li> <li class=md-nav__item> <a href=../nlohmann_json_namespace_begin/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_NAMESPACE_BEGIN, NLOHMANN_JSON_NAMESPACE_END </span> </a> </li> <li class=md-nav__item> <a href=../nlohmann_json_namespace_no_version/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_NAMESPACE_NO_VERSION </span> </a> </li> <li class=md-nav__item> <a href=../nlohmann_json_serialize_enum/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_SERIALIZE_ENUM </span> </a> </li> <li class=md-nav__item> <a href=../nlohmann_json_serialize_enum_strict/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_SERIALIZE_ENUM_STRICT </span> </a> </li> <li class=md-nav__item> <a href=../nlohmann_json_version_major/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_VERSION_MAJOR, NLOHMANN_JSON_VERSION_MINOR, NLOHMANN_JSON_VERSION_PATCH </span> </a> </li> </ul> </nav> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_5> <div class="md-nav__link md-nav__container"> <a href=../../../community/ class="md-nav__link "> <span class=md-ellipsis> Community </span> </a> <label class="md-nav__link " for=__nav_5 id=__nav_5_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_5_label aria-expanded=false> <label class=md-nav__title for=__nav_5> <span class="md-nav__icon md-icon"></span> Community </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../community/code_of_conduct/ class=md-nav__link> <span class=md-ellipsis> Code of Conduct </span> </a> </li> <li class=md-nav__item> <a href=../../../community/contribution_guidelines/ class=md-nav__link> <span class=md-ellipsis> Contribution Guidelines </span> </a> </li> <li class=md-nav__item> <a href=../../../community/quality_assurance/ class=md-nav__link> <span class=md-ellipsis> Quality assurance </span> </a> </li> <li class=md-nav__item> <a href=../../../community/governance/ class=md-nav__link> <span class=md-ellipsis> Governance </span> </a> </li> <li class=md-nav__item> <a href=../../../community/security_policy/ class=md-nav__link> <span class=md-ellipsis> Security Policy </span> </a> </li> </ul> </nav> </li> </ul> </nav> </div> </div> </div> <div class="md-sidebar md-sidebar--secondary" data-md-component=sidebar data-md-type=toc> <div class=md-sidebar__scrollwrap> <div class=md-sidebar__inner> <nav class="md-nav md-nav--secondary" aria-label="Table of contents"> <label class=md-nav__title for=__toc> <span class="md-nav__icon md-icon"></span> Table of contents </label> <ul class=md-nav__list data-md-component=toc data-md-scrollfix> <li class=md-nav__item> <a href=#parameters class=md-nav__link> <span class=md-ellipsis> Parameters </span> </a> </li> <li class=md-nav__item> <a href=#default-definition class=md-nav__link> <span class=md-ellipsis> Default definition </span> </a> </li> <li class=md-nav__item> <a href=#notes class=md-nav__link> <span class=md-ellipsis> Notes </span> </a> </li> <li class=md-nav__item> <a href=#examples class=md-nav__link> <span class=md-ellipsis> Examples </span> </a> </li> <li class=md-nav__item> <a href=#see-also class=md-nav__link> <span class=md-ellipsis> See also </span> </a> </li> <li class=md-nav__item> <a href=#version-history class=md-nav__link> <span class=md-ellipsis> Version history </span> </a> </li> </ul> </nav> </div> </div> </div> <div class=md-content data-md-component=content> <article class="md-content__inner md-typeset"> <a href="https://github.com/nlohmann/json/edit/develop/docs/mkdocs/docs/api/macros/nlohmann_define_type_intrusive.md" title="Edit this page" class="md-content__button md-icon" rel="edit"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M10 20H6V4h7v5h5v3.1l2-2V8l-6-6H6c-1.1 0-2 .9-2 2v16c0 1.1.9 2 2 2h4zm10.2-7c.1 0 .3.1.4.2l1.3 1.3c.2.2.2.6 0 .8l-1 1-2.1-2.1 1-1c.1-.1.2-.2.4-.2m0 3.9L14.1 23H12v-2.1l6.1-6.1z"/></svg> </a> <a href="https://github.com/nlohmann/json/raw/develop/docs/mkdocs/docs/api/macros/nlohmann_define_type_intrusive.md" title="View source of this page" class="md-content__button md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M17 18c.56 0 1 .44 1 1s-.44 1-1 1-1-.44-1-1 .44-1 1-1m0-3c-2.73 0-5.06 1.66-6 4 .94 2.34 3.27 4 6 4s5.06-1.66 6-4c-.94-2.34-3.27-4-6-4m0 6.5a2.5 2.5 0 0 1-2.5-2.5 2.5 2.5 0 0 1 2.5-2.5 2.5 2.5 0 0 1 2.5 2.5 2.5 2.5 0 0 1-2.5 2.5M9.27 20H6V4h7v5h5v4.07c.7.08 1.36.25 2 .49V8l-6-6H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h4.5a8.2 8.2 0 0 1-1.23-2"/></svg> </a> <h1 id=nlohmann_define_type_intrusive-nlohmann_define_type_intrusive_with_default-nlohmann_define_type_intrusive_only_serialize>NLOHMANN_DEFINE_TYPE_INTRUSIVE, NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_TYPE_INTRUSIVE_ONLY_SERIALIZE<a class=headerlink href=#nlohmann_define_type_intrusive-nlohmann_define_type_intrusive_with_default-nlohmann_define_type_intrusive_only_serialize title="Permanent link">&para;</a></h1> <div class=highlight><pre><span></span><code><span class=cp>#define NLOHMANN_DEFINE_TYPE_INTRUSIVE(type, member...)              </span><span class=c1>// (1)</span>
 <span class=cp>#define NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT(type, member...) </span><span class=c1>// (2)</span>
 <span class=cp>#define NLOHMANN_DEFINE_TYPE_INTRUSIVE_ONLY_SERIALIZE(type, member...) </span><span class=c1>// (3)</span>
-</code></pre></div> <p>These macros can be used to simplify the serialization/deserialization of types if you want to use a <abbr title="JavaScript Object Notation">JSON</abbr> object as serialization and want to use the member variable names as object keys in that object. The macro is to be defined <strong>inside</strong> the class/struct to create code for. Unlike <a href=../nlohmann_define_type_non_intrusive/ ><code>NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE</code></a>, it can access private members. The first parameter is the name of the class/struct, and all remaining parameters name the members.</p> <ol> <li>Will use <a href=../../basic_json/at/ ><code>at</code></a> during deserialization and will throw <a href=../../../home/exceptions/#jsonexceptionout_of_range403><code>out_of_range.403</code></a> if a key is missing in the <abbr title="JavaScript Object Notation">JSON</abbr> object.</li> <li>Will use <a href=../../basic_json/value/ ><code>value</code></a> during deserialization and fall back to the default value for the respective type of the member variable if a key in the <abbr title="JavaScript Object Notation">JSON</abbr> object is missing. The generated <code>from_json()</code> function default constructs an object and uses its values as the defaults when calling the <code>value</code> function.</li> <li>Only defines the serialization. Useful in cases when the type does not have a default constructor and only serialization is required.</li> </ol> <p>Summary:</p> <table> <thead> <tr> <th>Need access to private members</th> <th>Need only de-serialization</th> <th>Allow missing values when de-serializing</th> <th>macro</th> </tr> </thead> <tbody> <tr> <td><div style="color: green;"><span class=twemoji><svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M1 12C1 5.925 5.925 1 12 1s11 4.925 11 11-4.925 11-11 11S1 18.075 1 12m16.28-2.72a.75.75 0 0 0-.018-1.042.75.75 0 0 0-1.042-.018l-5.97 5.97-2.47-2.47a.75.75 0 0 0-1.042.018.75.75 0 0 0-.018 1.042l3 3a.75.75 0 0 0 1.06 0Z"/></svg></span></div></td> <td><div style="color: red;"><span class=twemoji><svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M1 12C1 5.925 5.925 1 12 1s11 4.925 11 11-4.925 11-11 11S1 18.075 1 12m8.036-4.024a.75.75 0 0 0-1.042.018.75.75 0 0 0-.018 1.042L10.939 12l-2.963 2.963a.749.749 0 0 0 .326 1.275.75.75 0 0 0 .734-.215L12 13.06l2.963 2.964a.75.75 0 0 0 1.061-1.06L13.061 12l2.963-2.964a.749.749 0 0 0-.326-1.275.75.75 0 0 0-.734.215L12 10.939Z"/></svg></span></div></td> <td><div style="color: red;"><span class=twemoji><svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M1 12C1 5.925 5.925 1 12 1s11 4.925 11 11-4.925 11-11 11S1 18.075 1 12m8.036-4.024a.75.75 0 0 0-1.042.018.75.75 0 0 0-.018 1.042L10.939 12l-2.963 2.963a.749.749 0 0 0 .326 1.275.75.75 0 0 0 .734-.215L12 13.06l2.963 2.964a.75.75 0 0 0 1.061-1.06L13.061 12l2.963-2.964a.749.749 0 0 0-.326-1.275.75.75 0 0 0-.734.215L12 10.939Z"/></svg></span></div></td> <td><strong>NLOHMANN_DEFINE_TYPE_INTRUSIVE</strong></td> </tr> <tr> <td><div style="color: green;"><span class=twemoji><svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M1 12C1 5.925 5.925 1 12 1s11 4.925 11 11-4.925 11-11 11S1 18.075 1 12m16.28-2.72a.75.75 0 0 0-.018-1.042.75.75 0 0 0-1.042-.018l-5.97 5.97-2.47-2.47a.75.75 0 0 0-1.042.018.75.75 0 0 0-.018 1.042l3 3a.75.75 0 0 0 1.06 0Z"/></svg></span></div></td> <td><div style="color: red;"><span class=twemoji><svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M1 12C1 5.925 5.925 1 12 1s11 4.925 11 11-4.925 11-11 11S1 18.075 1 12m8.036-4.024a.75.75 0 0 0-1.042.018.75.75 0 0 0-.018 1.042L10.939 12l-2.963 2.963a.749.749 0 0 0 .326 1.275.75.75 0 0 0 .734-.215L12 13.06l2.963 2.964a.75.75 0 0 0 1.061-1.06L13.061 12l2.963-2.964a.749.749 0 0 0-.326-1.275.75.75 0 0 0-.734.215L12 10.939Z"/></svg></span></div></td> <td><div style="color: green;"><span class=twemoji><svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M1 12C1 5.925 5.925 1 12 1s11 4.925 11 11-4.925 11-11 11S1 18.075 1 12m16.28-2.72a.75.75 0 0 0-.018-1.042.75.75 0 0 0-1.042-.018l-5.97 5.97-2.47-2.47a.75.75 0 0 0-1.042.018.75.75 0 0 0-.018 1.042l3 3a.75.75 0 0 0 1.06 0Z"/></svg></span></div></td> <td><strong>NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT</strong></td> </tr> <tr> <td><div style="color: green;"><span class=twemoji><svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M1 12C1 5.925 5.925 1 12 1s11 4.925 11 11-4.925 11-11 11S1 18.075 1 12m16.28-2.72a.75.75 0 0 0-.018-1.042.75.75 0 0 0-1.042-.018l-5.97 5.97-2.47-2.47a.75.75 0 0 0-1.042.018.75.75 0 0 0-.018 1.042l3 3a.75.75 0 0 0 1.06 0Z"/></svg></span></div></td> <td><div style="color: green;"><span class=twemoji><svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M1 12C1 5.925 5.925 1 12 1s11 4.925 11 11-4.925 11-11 11S1 18.075 1 12m16.28-2.72a.75.75 0 0 0-.018-1.042.75.75 0 0 0-1.042-.018l-5.97 5.97-2.47-2.47a.75.75 0 0 0-1.042.018.75.75 0 0 0-.018 1.042l3 3a.75.75 0 0 0 1.06 0Z"/></svg></span></div></td> <td><div style="color: grey;"><span class=twemoji><svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M1 12C1 5.925 5.925 1 12 1s11 4.925 11 11-4.925 11-11 11S1 18.075 1 12m16.333-4.167a.825.825 0 0 0-1.166-1.166l-9.5 9.5a.825.825 0 0 0 1.166 1.166Z"/></svg></span></div></td> <td><strong>NLOHMANN_DEFINE_TYPE_INTRUSIVE_ONLY_SERIALIZE</strong></td> </tr> </tbody> </table> <h2 id=parameters>Parameters<a class=headerlink href=#parameters title="Permanent link">&para;</a></h2> <dl> <dt><code>type</code> (in)</dt> <dd>name of the type (class, struct) to serialize/deserialize</dd> <dt><code>member</code> (in)</dt> <dd>name of the member variable to serialize/deserialize; up to 63 members can be given as a comma-separated list</dd> </dl> <h2 id=default-definition>Default definition<a class=headerlink href=#default-definition title="Permanent link">&para;</a></h2> <p>The macros add two friend functions to the class which take care of the serialization and deserialization:</p> <div class=highlight><pre><span></span><code><span class=k>template</span><span class=o>&lt;</span><span class=k>typename</span><span class=w> </span><span class=nc>BasicJsonType</span><span class=o>&gt;</span>
+</code></pre></div> <p>These macros can be used to simplify the serialization/deserialization of types if you want to use a <abbr title="JavaScript Object Notation">JSON</abbr> object as serialization and want to use the member variable names as object keys in that object. The macro is to be defined <strong>inside</strong> the class/struct to create code for. Unlike <a href=../nlohmann_define_type_non_intrusive/ ><code>NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE</code></a>, it can access private members. The first parameter is the name of the class/struct, and all remaining parameters name the members.</p> <ol> <li>Will use <a href=../../basic_json/at/ ><code>at</code></a> during deserialization and will throw <a href=../../../home/exceptions/#jsonexceptionout_of_range403><code>out_of_range.403</code></a> if a key is missing in the <abbr title="JavaScript Object Notation">JSON</abbr> object.</li> <li>Will use <a href=../../basic_json/value/ ><code>value</code></a> during deserialization and fall back to the default value for the respective type of the member variable if a key in the <abbr title="JavaScript Object Notation">JSON</abbr> object is missing. The generated <code>from_json()</code> function default constructs an object and uses its values as the defaults when calling the <code>value</code> function.</li> <li>Only defines the serialization. Useful in cases when the type does not have a default constructor and only serialization is required.</li> </ol> <p>Summary:</p> <table> <thead> <tr> <th>Need access to private members</th> <th>Need only serialization</th> <th>Allow missing values when de-serializing</th> <th>macro</th> </tr> </thead> <tbody> <tr> <td><div style="color: green;"><span class=twemoji><svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M1 12C1 5.925 5.925 1 12 1s11 4.925 11 11-4.925 11-11 11S1 18.075 1 12m16.28-2.72a.75.75 0 0 0-.018-1.042.75.75 0 0 0-1.042-.018l-5.97 5.97-2.47-2.47a.75.75 0 0 0-1.042.018.75.75 0 0 0-.018 1.042l3 3a.75.75 0 0 0 1.06 0Z"/></svg></span></div></td> <td><div style="color: red;"><span class=twemoji><svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M1 12C1 5.925 5.925 1 12 1s11 4.925 11 11-4.925 11-11 11S1 18.075 1 12m8.036-4.024a.75.75 0 0 0-1.042.018.75.75 0 0 0-.018 1.042L10.939 12l-2.963 2.963a.749.749 0 0 0 .326 1.275.75.75 0 0 0 .734-.215L12 13.06l2.963 2.964a.75.75 0 0 0 1.061-1.06L13.061 12l2.963-2.964a.749.749 0 0 0-.326-1.275.75.75 0 0 0-.734.215L12 10.939Z"/></svg></span></div></td> <td><div style="color: red;"><span class=twemoji><svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M1 12C1 5.925 5.925 1 12 1s11 4.925 11 11-4.925 11-11 11S1 18.075 1 12m8.036-4.024a.75.75 0 0 0-1.042.018.75.75 0 0 0-.018 1.042L10.939 12l-2.963 2.963a.749.749 0 0 0 .326 1.275.75.75 0 0 0 .734-.215L12 13.06l2.963 2.964a.75.75 0 0 0 1.061-1.06L13.061 12l2.963-2.964a.749.749 0 0 0-.326-1.275.75.75 0 0 0-.734.215L12 10.939Z"/></svg></span></div></td> <td><strong>NLOHMANN_DEFINE_TYPE_INTRUSIVE</strong></td> </tr> <tr> <td><div style="color: green;"><span class=twemoji><svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M1 12C1 5.925 5.925 1 12 1s11 4.925 11 11-4.925 11-11 11S1 18.075 1 12m16.28-2.72a.75.75 0 0 0-.018-1.042.75.75 0 0 0-1.042-.018l-5.97 5.97-2.47-2.47a.75.75 0 0 0-1.042.018.75.75 0 0 0-.018 1.042l3 3a.75.75 0 0 0 1.06 0Z"/></svg></span></div></td> <td><div style="color: red;"><span class=twemoji><svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M1 12C1 5.925 5.925 1 12 1s11 4.925 11 11-4.925 11-11 11S1 18.075 1 12m8.036-4.024a.75.75 0 0 0-1.042.018.75.75 0 0 0-.018 1.042L10.939 12l-2.963 2.963a.749.749 0 0 0 .326 1.275.75.75 0 0 0 .734-.215L12 13.06l2.963 2.964a.75.75 0 0 0 1.061-1.06L13.061 12l2.963-2.964a.749.749 0 0 0-.326-1.275.75.75 0 0 0-.734.215L12 10.939Z"/></svg></span></div></td> <td><div style="color: green;"><span class=twemoji><svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M1 12C1 5.925 5.925 1 12 1s11 4.925 11 11-4.925 11-11 11S1 18.075 1 12m16.28-2.72a.75.75 0 0 0-.018-1.042.75.75 0 0 0-1.042-.018l-5.97 5.97-2.47-2.47a.75.75 0 0 0-1.042.018.75.75 0 0 0-.018 1.042l3 3a.75.75 0 0 0 1.06 0Z"/></svg></span></div></td> <td><strong>NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT</strong></td> </tr> <tr> <td><div style="color: green;"><span class=twemoji><svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M1 12C1 5.925 5.925 1 12 1s11 4.925 11 11-4.925 11-11 11S1 18.075 1 12m16.28-2.72a.75.75 0 0 0-.018-1.042.75.75 0 0 0-1.042-.018l-5.97 5.97-2.47-2.47a.75.75 0 0 0-1.042.018.75.75 0 0 0-.018 1.042l3 3a.75.75 0 0 0 1.06 0Z"/></svg></span></div></td> <td><div style="color: green;"><span class=twemoji><svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M1 12C1 5.925 5.925 1 12 1s11 4.925 11 11-4.925 11-11 11S1 18.075 1 12m16.28-2.72a.75.75 0 0 0-.018-1.042.75.75 0 0 0-1.042-.018l-5.97 5.97-2.47-2.47a.75.75 0 0 0-1.042.018.75.75 0 0 0-.018 1.042l3 3a.75.75 0 0 0 1.06 0Z"/></svg></span></div></td> <td><div style="color: grey;"><span class=twemoji><svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M1 12C1 5.925 5.925 1 12 1s11 4.925 11 11-4.925 11-11 11S1 18.075 1 12m16.333-4.167a.825.825 0 0 0-1.166-1.166l-9.5 9.5a.825.825 0 0 0 1.166 1.166Z"/></svg></span></div></td> <td><strong>NLOHMANN_DEFINE_TYPE_INTRUSIVE_ONLY_SERIALIZE</strong></td> </tr> </tbody> </table> <h2 id=parameters>Parameters<a class=headerlink href=#parameters title="Permanent link">&para;</a></h2> <dl> <dt><code>type</code> (in)</dt> <dd>name of the type (class, struct) to serialize/deserialize</dd> <dt><code>member</code> (in)</dt> <dd>name of the member variable to serialize/deserialize; up to 63 members can be given as a comma-separated list</dd> </dl> <h2 id=default-definition>Default definition<a class=headerlink href=#default-definition title="Permanent link">&para;</a></h2> <p>The macros add two friend functions to the class which take care of the serialization and deserialization:</p> <div class=highlight><pre><span></span><code><span class=k>template</span><span class=o>&lt;</span><span class=k>typename</span><span class=w> </span><span class=nc>BasicJsonType</span><span class=o>&gt;</span>
 <span class=k>friend</span><span class=w> </span><span class=kt>void</span><span class=w> </span><span class=n>to_json</span><span class=p>(</span><span class=n>BasicJsonType</span><span class=o>&amp;</span><span class=p>,</span><span class=w> </span><span class=k>const</span><span class=w> </span><span class=n>type</span><span class=o>&amp;</span><span class=p>);</span>
 <span class=k>template</span><span class=o>&lt;</span><span class=k>typename</span><span class=w> </span><span class=nc>BasicJsonType</span><span class=o>&gt;</span>
 <span class=k>friend</span><span class=w> </span><span class=kt>void</span><span class=w> </span><span class=n>from_json</span><span class=p>(</span><span class=k>const</span><span class=w> </span><span class=n>BasicJsonType</span><span class=o>&amp;</span><span class=p>,</span><span class=w> </span><span class=n>type</span><span class=o>&amp;</span><span class=p>);</span><span class=w> </span><span class=c1>// except (3)</span>
@@ -291,4 +291,4 @@
 <span class=w>    </span><span class=n>json</span><span class=w> </span><span class=n>j</span><span class=w> </span><span class=o>=</span><span class=w> </span><span class=n>p</span><span class=p>;</span>
 <span class=w>    </span><span class=n>std</span><span class=o>::</span><span class=n>cout</span><span class=w> </span><span class=o>&lt;&lt;</span><span class=w> </span><span class=s>&quot;serialization: &quot;</span><span class=w> </span><span class=o>&lt;&lt;</span><span class=w> </span><span class=n>j</span><span class=w> </span><span class=o>&lt;&lt;</span><span class=w> </span><span class=n>std</span><span class=o>::</span><span class=n>endl</span><span class=p>;</span>
 <span class=p>}</span>
-</code></pre></div> </details> <h2 id=see-also>See also<a class=headerlink href=#see-also title="Permanent link">&para;</a></h2> <ul> <li><a href=../nlohmann_define_type_non_intrusive/ >NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE</a> for a similar macro that can be defined <em>outside</em> the type.</li> <li><a href=../nlohmann_define_derived_type/ >NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_ONLY_SERIALIZE, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE</a> for similar macros for derived types</li> <li><a href=../../../features/arbitrary_types/ >Arbitrary Type Conversions</a> for an overview.</li> </ul> <h2 id=version-history>Version history<a class=headerlink href=#version-history title="Permanent link">&para;</a></h2> <ol> <li>Added in version 3.9.0.</li> <li>Added in version 3.11.0.</li> <li>Added in version 3.11.3.</li> </ol> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 23, 2026 11:16:18 UTC">June 23, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
+</code></pre></div> </details> <h2 id=see-also>See also<a class=headerlink href=#see-also title="Permanent link">&para;</a></h2> <ul> <li><a href=../nlohmann_define_type_non_intrusive/ >NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE</a> for a similar macro that can be defined <em>outside</em> the type.</li> <li><a href=../nlohmann_define_derived_type/ >NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_ONLY_SERIALIZE, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE</a> for similar macros for derived types</li> <li><a href=../../../features/arbitrary_types/ >Arbitrary Type Conversions</a> for an overview.</li> </ul> <h2 id=version-history>Version history<a class=headerlink href=#version-history title="Permanent link">&para;</a></h2> <ol> <li>Added in version 3.9.0.</li> <li>Added in version 3.11.0.</li> <li>Added in version 3.11.3.</li> </ol> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 29, 2026 20:15:18 UTC">June 29, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
diff --git a/api/macros/nlohmann_define_type_non_intrusive/index.html b/api/macros/nlohmann_define_type_non_intrusive/index.html
index 119e527..7aa1fe3 100644
--- a/api/macros/nlohmann_define_type_non_intrusive/index.html
+++ b/api/macros/nlohmann_define_type_non_intrusive/index.html
@@ -1,7 +1,7 @@
 <!doctype html><html lang=en class=no-js> <head><meta charset=utf-8><meta name=viewport content="width=device-width,initial-scale=1"><meta name=author content="Niels Lohmann"><link href="https://json.nlohmann.me/api/macros/nlohmann_define_type_non_intrusive/" rel="canonical"><link href=../nlohmann_define_type_intrusive/ rel=prev><link href=../nlohmann_define_type_with_names/ rel=next><link rel=icon href=../../../assets/images/favicon.png><meta name=generator content="mkdocs-1.6.1, mkdocs-material-9.7.6"><title>NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE - JSON for Modern C++</title><link rel=stylesheet href=../../../assets/stylesheets/main.484c7ddc.min.css><link rel=stylesheet href=../../../assets/stylesheets/palette.ab4e12ef.min.css><link rel="stylesheet" href="../../../assets/external/fonts.googleapis.com/css.61a430c9.css"><style>:root{--md-text-font:"Roboto";--md-code-font:"JetBrains Mono"}</style><link rel=stylesheet href=../../../css/custom.css><script>__md_scope=new URL("../../..",location),__md_hash=e=>[...e].reduce(((e,_)=>(e<<5)-e+_.charCodeAt(0)),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script></head> <body dir=ltr data-md-color-scheme=default data-md-color-primary=indigo data-md-color-accent=indigo> <input class=md-toggle data-md-toggle=drawer type=checkbox id=__drawer autocomplete=off> <input class=md-toggle data-md-toggle=search type=checkbox id=__search autocomplete=off> <label class=md-overlay for=__drawer></label> <div data-md-component=skip> <a href=#nlohmann_define_type_non_intrusive-nlohmann_define_type_non_intrusive_with_default-nlohmann_define_type_non_intrusive_only_serialize class=md-skip> Skip to content </a> </div> <div data-md-component=announce> </div> <header class=md-header data-md-component=header> <nav class="md-header__inner md-grid" aria-label=Header> <a href=../../.. title="JSON for Modern C++" class="md-header__button md-logo" aria-label="JSON for Modern C++" data-md-component=logo> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54"/></svg> </a> <label class="md-header__button md-icon" for=__drawer> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M3 6h18v2H3zm0 5h18v2H3zm0 5h18v2H3z"/></svg> </label> <div class=md-header__title data-md-component=header-title> <div class=md-header__ellipsis> <div class=md-header__topic> <span class=md-ellipsis> JSON for Modern C++ </span> </div> <div class=md-header__topic data-md-component=header-topic> <span class=md-ellipsis> NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE </span> </div> </div> </div> <form class=md-header__option data-md-component=palette> <input class=md-option data-md-color-media="(prefers-color-scheme: light)" data-md-color-scheme=default data-md-color-primary=indigo data-md-color-accent=indigo aria-label="Switch to dark mode" type=radio name=__palette id=__palette_0> <label class="md-header__button md-icon" title="Switch to dark mode" for=__palette_1 hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a4 4 0 0 0-4 4 4 4 0 0 0 4 4 4 4 0 0 0 4-4 4 4 0 0 0-4-4m0 10a6 6 0 0 1-6-6 6 6 0 0 1 6-6 6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12z"/></svg> </label> <input class=md-option data-md-color-media="(prefers-color-scheme: dark)" data-md-color-scheme=slate data-md-color-primary=indigo data-md-color-accent=indigo aria-label="Switch to light mode" type=radio name=__palette id=__palette_1> <label class="md-header__button md-icon" title="Switch to light mode" for=__palette_0 hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 18c-.89 0-1.74-.2-2.5-.55C11.56 16.5 13 14.42 13 12s-1.44-4.5-3.5-5.45C10.26 6.2 11.11 6 12 6a6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12z"/></svg> </label> </form> <script>var palette=__md_get("__palette");if(palette&&palette.color){if("(prefers-color-scheme)"===palette.color.media){var media=matchMedia("(prefers-color-scheme: light)"),input=document.querySelector(media.matches?"[data-md-color-media='(prefers-color-scheme: light)']":"[data-md-color-media='(prefers-color-scheme: dark)']");palette.color.media=input.getAttribute("data-md-color-media"),palette.color.scheme=input.getAttribute("data-md-color-scheme"),palette.color.primary=input.getAttribute("data-md-color-primary"),palette.color.accent=input.getAttribute("data-md-color-accent")}for(var[key,value]of Object.entries(palette.color))document.body.setAttribute("data-md-color-"+key,value)}</script> <label class="md-header__button md-icon" for=__search> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg> </label> <div class=md-search data-md-component=search role=dialog> <label class=md-search__overlay for=__search></label> <div class=md-search__inner role=search> <form class=md-search__form name=search> <input type=text class=md-search__input name=query aria-label=Search placeholder=Search autocapitalize=off autocorrect=off autocomplete=off spellcheck=false data-md-component=search-query required> <label class="md-search__icon md-icon" for=__search> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11z"/></svg> </label> <nav class=md-search__options aria-label=Search> <button type=reset class="md-search__icon md-icon" title=Clear aria-label=Clear tabindex=-1> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z"/></svg> </button> </nav> </form> <div class=md-search__output> <div class=md-search__scrollwrap tabindex=0 data-md-scrollfix> <div class=md-search-result data-md-component=search-result> <div class=md-search-result__meta> Initializing search </div> <ol class=md-search-result__list role=presentation></ol> </div> </div> </div> </div> </div> <div class=md-header__source> <a href="https://github.com/nlohmann/json" title="Go to repository" class="md-source" data-md-component="source"> <div class="md-source__icon md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </div> <div class=md-source__repository> nlohmann/json </div> </a> </div> </nav> </header> <div class=md-container data-md-component=container> <nav class=md-tabs aria-label=Tabs data-md-component=tabs> <div class=md-grid> <ul class=md-tabs__list> <li class=md-tabs__item> <a href=../../.. class=md-tabs__link> Home </a> </li> <li class=md-tabs__item> <a href=../../../features/arbitrary_types/ class=md-tabs__link> Features </a> </li> <li class=md-tabs__item> <a href=../../../integration/ class=md-tabs__link> Integration </a> </li> <li class="md-tabs__item md-tabs__item--active"> <a href=../../basic_json/ class=md-tabs__link> API Documentation </a> </li> <li class=md-tabs__item> <a href=../../../community/ class=md-tabs__link> Community </a> </li> </ul> </div> </nav> <main class=md-main data-md-component=main> <div class="md-main__inner md-grid"> <div class="md-sidebar md-sidebar--primary" data-md-component=sidebar data-md-type=navigation> <div class=md-sidebar__scrollwrap> <div class=md-sidebar__inner> <nav class="md-nav md-nav--primary md-nav--lifted" aria-label=Navigation data-md-level=0> <label class=md-nav__title for=__drawer> <a href=../../.. title="JSON for Modern C++" class="md-nav__button md-logo" aria-label="JSON for Modern C++" data-md-component=logo> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54"/></svg> </a> JSON for Modern C++ </label> <div class=md-nav__source> <a href="https://github.com/nlohmann/json" title="Go to repository" class="md-source" data-md-component="source"> <div class="md-source__icon md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </div> <div class=md-source__repository> nlohmann/json </div> </a> </div> <ul class=md-nav__list data-md-scrollfix> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_1> <div class="md-nav__link md-nav__container"> <a href=../../.. class="md-nav__link "> <span class=md-ellipsis> Home </span> </a> <label class="md-nav__link " for=__nav_1 id=__nav_1_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_1_label aria-expanded=false> <label class=md-nav__title for=__nav_1> <span class="md-nav__icon md-icon"></span> Home </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../home/license/ class=md-nav__link> <span class=md-ellipsis> License </span> </a> </li> <li class=md-nav__item> <a href=../../../home/faq/ class=md-nav__link> <span class=md-ellipsis> FAQ </span> </a> </li> <li class=md-nav__item> <a href=../../../home/exceptions/ class=md-nav__link> <span class=md-ellipsis> Exceptions </span> </a> </li> <li class=md-nav__item> <a href=../../../home/releases/ class=md-nav__link> <span class=md-ellipsis> Releases </span> </a> </li> <li class=md-nav__item> <a href=../../../home/design_goals/ class=md-nav__link> <span class=md-ellipsis> Design goals </span> </a> </li> <li class=md-nav__item> <a href=../../../home/architecture/ class=md-nav__link> <span class=md-ellipsis> Architecture </span> </a> </li> <li class=md-nav__item> <a href=../../../home/customers/ class=md-nav__link> <span class=md-ellipsis> Customers </span> </a> </li> <li class=md-nav__item> <a href=../../../home/sponsors/ class=md-nav__link> <span class=md-ellipsis> Sponsors </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2> <label class=md-nav__link for=__nav_2 id=__nav_2_label tabindex=0> <span class=md-ellipsis> Features </span> <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_2_label aria-expanded=false> <label class=md-nav__title for=__nav_2> <span class="md-nav__icon md-icon"></span> Features </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/arbitrary_types/ class=md-nav__link> <span class=md-ellipsis> Arbitrary Type Conversions </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_2> <div class="md-nav__link md-nav__container"> <a href=../../../features/binary_formats/ class="md-nav__link "> <span class=md-ellipsis> Binary Formats </span> </a> <label class="md-nav__link " for=__nav_2_2 id=__nav_2_2_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_2_label aria-expanded=false> <label class=md-nav__title for=__nav_2_2> <span class="md-nav__icon md-icon"></span> Binary Formats </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/binary_formats/bjdata/ class=md-nav__link> <span class=md-ellipsis> BJData </span> </a> </li> <li class=md-nav__item> <a href=../../../features/binary_formats/bson/ class=md-nav__link> <span class=md-ellipsis> BSON </span> </a> </li> <li class=md-nav__item> <a href=../../../features/binary_formats/cbor/ class=md-nav__link> <span class=md-ellipsis> CBOR </span> </a> </li> <li class=md-nav__item> <a href=../../../features/binary_formats/messagepack/ class=md-nav__link> <span class=md-ellipsis> MessagePack </span> </a> </li> <li class=md-nav__item> <a href=../../../features/binary_formats/ubjson/ class=md-nav__link> <span class=md-ellipsis> UBJSON </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../../features/binary_values/ class=md-nav__link> <span class=md-ellipsis> Binary Values </span> </a> </li> <li class=md-nav__item> <a href=../../../features/comments/ class=md-nav__link> <span class=md-ellipsis> Comments </span> </a> </li> <li class=md-nav__item> <a href=../../../features/trailing_commas/ class=md-nav__link> <span class=md-ellipsis> Trailing Commas </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_6> <div class="md-nav__link md-nav__container"> <a href=../../../features/element_access/ class="md-nav__link "> <span class=md-ellipsis> Element Access </span> </a> <label class="md-nav__link " for=__nav_2_6 id=__nav_2_6_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_6_label aria-expanded=false> <label class=md-nav__title for=__nav_2_6> <span class="md-nav__icon md-icon"></span> Element Access </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/element_access/unchecked_access/ class=md-nav__link> <span class=md-ellipsis> Unchecked access: operator[] </span> </a> </li> <li class=md-nav__item> <a href=../../../features/element_access/checked_access/ class=md-nav__link> <span class=md-ellipsis> Checked access: at </span> </a> </li> <li class=md-nav__item> <a href=../../../features/element_access/default_value/ class=md-nav__link> <span class=md-ellipsis> Access with default value: value </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../../features/iterators/ class=md-nav__link> <span class=md-ellipsis> Iterators </span> </a> </li> <li class=md-nav__item> <a href=../../../features/json_pointer/ class=md-nav__link> <span class=md-ellipsis> JSON Pointer </span> </a> </li> <li class=md-nav__item> <a href=../../../features/json_patch/ class=md-nav__link> <span class=md-ellipsis> JSON Patch and Diff </span> </a> </li> <li class=md-nav__item> <a href=../../../features/merge_patch/ class=md-nav__link> <span class=md-ellipsis> JSON Merge Patch </span> </a> </li> <li class=md-nav__item> <a href=../../../features/modules/ class=md-nav__link> <span class=md-ellipsis> Modules </span> </a> </li> <li class=md-nav__item> <a href=../../../features/namespace/ class=md-nav__link> <span class=md-ellipsis> nlohmann Namespace </span> </a> </li> <li class=md-nav__item> <a href=../../../features/object_order/ class=md-nav__link> <span class=md-ellipsis> Object Order </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_14> <div class="md-nav__link md-nav__container"> <a href=../../../features/parsing/ class="md-nav__link "> <span class=md-ellipsis> Parsing </span> </a> <label class="md-nav__link " for=__nav_2_14 id=__nav_2_14_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_14_label aria-expanded=false> <label class=md-nav__title for=__nav_2_14> <span class="md-nav__icon md-icon"></span> Parsing </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/parsing/json_lines/ class=md-nav__link> <span class=md-ellipsis> JSON Lines </span> </a> </li> <li class=md-nav__item> <a href=../../../features/parsing/parse_exceptions/ class=md-nav__link> <span class=md-ellipsis> Parsing and Exceptions </span> </a> </li> <li class=md-nav__item> <a href=../../../features/parsing/parser_callbacks/ class=md-nav__link> <span class=md-ellipsis> Parser Callbacks </span> </a> </li> <li class=md-nav__item> <a href=../../../features/parsing/sax_interface/ class=md-nav__link> <span class=md-ellipsis> SAX Interface </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../../features/assertions/ class=md-nav__link> <span class=md-ellipsis> Runtime Assertions </span> </a> </li> <li class=md-nav__item> <a href=../../../features/enum_conversion/ class=md-nav__link> <span class=md-ellipsis> Specializing enum conversion </span> </a> </li> <li class=md-nav__item> <a href=../../../features/macros/ class=md-nav__link> <span class=md-ellipsis> Supported Macros </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_18> <div class="md-nav__link md-nav__container"> <a href=../../../features/types/ class="md-nav__link "> <span class=md-ellipsis> Types </span> </a> <label class="md-nav__link " for=__nav_2_18 id=__nav_2_18_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_18_label aria-expanded=false> <label class=md-nav__title for=__nav_2_18> <span class="md-nav__icon md-icon"></span> Types </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../features/types/number_handling/ class=md-nav__link> <span class=md-ellipsis> Number Handling </span> </a> </li> </ul> </nav> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_3> <div class="md-nav__link md-nav__container"> <a href=../../../integration/ class="md-nav__link "> <span class=md-ellipsis> Integration </span> </a> <label class="md-nav__link " for=__nav_3 id=__nav_3_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_3_label aria-expanded=false> <label class=md-nav__title for=__nav_3> <span class="md-nav__icon md-icon"></span> Integration </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../integration/migration_guide/ class=md-nav__link> <span class=md-ellipsis> Migration Guide </span> </a> </li> <li class=md-nav__item> <a href=../../../integration/cmake/ class=md-nav__link> <span class=md-ellipsis> CMake </span> </a> </li> <li class=md-nav__item> <a href=../../../integration/package_managers/ class=md-nav__link> <span class=md-ellipsis> Package Managers </span> </a> </li> <li class=md-nav__item> <a href=../../../integration/pkg-config/ class=md-nav__link> <span class=md-ellipsis> Pkg-config </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--active md-nav__item--section md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4 checked> <label class=md-nav__link for=__nav_4 id=__nav_4_label tabindex> <span class=md-ellipsis> API Documentation </span> <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_4_label aria-expanded=true> <label class=md-nav__title for=__nav_4> <span class="md-nav__icon md-icon"></span> API Documentation </label> <ul class=md-nav__list data-md-scrollfix> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_1> <div class="md-nav__link md-nav__container"> <a href=../../basic_json/ class="md-nav__link "> <span class=md-ellipsis> basic_json </span> </a> <label class="md-nav__link " for=__nav_4_1 id=__nav_4_1_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_1_label aria-expanded=false> <label class=md-nav__title for=__nav_4_1> <span class="md-nav__icon md-icon"></span> basic_json </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../basic_json/basic_json/ class=md-nav__link> <span class=md-ellipsis> (Constructor) </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/~basic_json/ class=md-nav__link> <span class=md-ellipsis> (Destructor) </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/accept/ class=md-nav__link> <span class=md-ellipsis> accept </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/array/ class=md-nav__link> <span class=md-ellipsis> array </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/array_t/ class=md-nav__link> <span class=md-ellipsis> array_t </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/at/ class=md-nav__link> <span class=md-ellipsis> at </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/back/ class=md-nav__link> <span class=md-ellipsis> back </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/begin/ class=md-nav__link> <span class=md-ellipsis> begin </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/binary/ class=md-nav__link> <span class=md-ellipsis> binary </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/binary_t/ class=md-nav__link> <span class=md-ellipsis> binary_t </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/boolean_t/ class=md-nav__link> <span class=md-ellipsis> boolean_t </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/cbegin/ class=md-nav__link> <span class=md-ellipsis> cbegin </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/cbor_tag_handler_t/ class=md-nav__link> <span class=md-ellipsis> cbor_tag_handler_t </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/cend/ class=md-nav__link> <span class=md-ellipsis> cend </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/clear/ class=md-nav__link> <span class=md-ellipsis> clear </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/contains/ class=md-nav__link> <span class=md-ellipsis> contains </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/count/ class=md-nav__link> <span class=md-ellipsis> count </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/crbegin/ class=md-nav__link> <span class=md-ellipsis> crbegin </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/crend/ class=md-nav__link> <span class=md-ellipsis> crend </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/default_object_comparator_t/ class=md-nav__link> <span class=md-ellipsis> default_object_comparator_t </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/diff/ class=md-nav__link> <span class=md-ellipsis> diff </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/dump/ class=md-nav__link> <span class=md-ellipsis> dump </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/emplace/ class=md-nav__link> <span class=md-ellipsis> emplace </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/emplace_back/ class=md-nav__link> <span class=md-ellipsis> emplace_back </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/empty/ class=md-nav__link> <span class=md-ellipsis> empty </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/end/ class=md-nav__link> <span class=md-ellipsis> end </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/end_pos/ class=md-nav__link> <span class=md-ellipsis> end_pos </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/erase/ class=md-nav__link> <span class=md-ellipsis> erase </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/error_handler_t/ class=md-nav__link> <span class=md-ellipsis> error_handler_t </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/exception/ class=md-nav__link> <span class=md-ellipsis> exception </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/find/ class=md-nav__link> <span class=md-ellipsis> find </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/flatten/ class=md-nav__link> <span class=md-ellipsis> flatten </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/from_bjdata/ class=md-nav__link> <span class=md-ellipsis> from_bjdata </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/from_bson/ class=md-nav__link> <span class=md-ellipsis> from_bson </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/from_cbor/ class=md-nav__link> <span class=md-ellipsis> from_cbor </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/from_msgpack/ class=md-nav__link> <span class=md-ellipsis> from_msgpack </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/from_ubjson/ class=md-nav__link> <span class=md-ellipsis> from_ubjson </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/front/ class=md-nav__link> <span class=md-ellipsis> front </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/get/ class=md-nav__link> <span class=md-ellipsis> get </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/get_allocator/ class=md-nav__link> <span class=md-ellipsis> get_allocator </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/get_binary/ class=md-nav__link> <span class=md-ellipsis> get_binary </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/get_ptr/ class=md-nav__link> <span class=md-ellipsis> get_ptr </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/get_ref/ class=md-nav__link> <span class=md-ellipsis> get_ref </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/get_to/ class=md-nav__link> <span class=md-ellipsis> get_to </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/std_hash/ class=md-nav__link> <span class=md-ellipsis> std::hash&lt;basic_json&gt; </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/input_format_t/ class=md-nav__link> <span class=md-ellipsis> input_format_t </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/insert/ class=md-nav__link> <span class=md-ellipsis> insert </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/invalid_iterator/ class=md-nav__link> <span class=md-ellipsis> invalid_iterator </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/is_array/ class=md-nav__link> <span class=md-ellipsis> is_array </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/is_binary/ class=md-nav__link> <span class=md-ellipsis> is_binary </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/is_boolean/ class=md-nav__link> <span class=md-ellipsis> is_boolean </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/is_discarded/ class=md-nav__link> <span class=md-ellipsis> is_discarded </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/is_null/ class=md-nav__link> <span class=md-ellipsis> is_null </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/is_number/ class=md-nav__link> <span class=md-ellipsis> is_number </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/is_number_float/ class=md-nav__link> <span class=md-ellipsis> is_number_float </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/is_number_integer/ class=md-nav__link> <span class=md-ellipsis> is_number_integer </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/is_number_unsigned/ class=md-nav__link> <span class=md-ellipsis> is_number_unsigned </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/is_object/ class=md-nav__link> <span class=md-ellipsis> is_object </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/is_primitive/ class=md-nav__link> <span class=md-ellipsis> is_primitive </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/is_string/ class=md-nav__link> <span class=md-ellipsis> is_string </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/is_structured/ class=md-nav__link> <span class=md-ellipsis> is_structured </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/items/ class=md-nav__link> <span class=md-ellipsis> items </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/json_base_class_t/ class=md-nav__link> <span class=md-ellipsis> json_base_class_t </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/json_serializer/ class=md-nav__link> <span class=md-ellipsis> json_serializer </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/max_size/ class=md-nav__link> <span class=md-ellipsis> max_size </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/meta/ class=md-nav__link> <span class=md-ellipsis> meta </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/merge_patch/ class=md-nav__link> <span class=md-ellipsis> merge_patch </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/number_float_t/ class=md-nav__link> <span class=md-ellipsis> number_float_t </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/number_integer_t/ class=md-nav__link> <span class=md-ellipsis> number_integer_t </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/number_unsigned_t/ class=md-nav__link> <span class=md-ellipsis> number_unsigned_t </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/object/ class=md-nav__link> <span class=md-ellipsis> object </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/object_comparator_t/ class=md-nav__link> <span class=md-ellipsis> object_comparator_t </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/object_t/ class=md-nav__link> <span class=md-ellipsis> object_t </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/operator_ValueType/ class=md-nav__link> <span class=md-ellipsis> operator ValueType </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/operator_value_t/ class=md-nav__link> <span class=md-ellipsis> operator value_t </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/operator%5B%5D/ class=md-nav__link> <span class=md-ellipsis> operator[] </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/operator%3D/ class=md-nav__link> <span class=md-ellipsis> operator= </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/operator%2B%3D/ class=md-nav__link> <span class=md-ellipsis> operator+= </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/operator_eq/ class=md-nav__link> <span class=md-ellipsis> operator== </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/operator_ne/ class=md-nav__link> <span class=md-ellipsis> operator!= </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/operator_lt/ class=md-nav__link> <span class=md-ellipsis> operator< </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/operator_gt/ class=md-nav__link> <span class=md-ellipsis> operator> </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/operator_le/ class=md-nav__link> <span class=md-ellipsis> operator<= </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/operator_ge/ class=md-nav__link> <span class=md-ellipsis> operator>= </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/operator_spaceship/ class=md-nav__link> <span class=md-ellipsis> operator<=> </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/out_of_range/ class=md-nav__link> <span class=md-ellipsis> out_of_range </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/other_error/ class=md-nav__link> <span class=md-ellipsis> other_error </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/parse/ class=md-nav__link> <span class=md-ellipsis> parse </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/parse_error/ class=md-nav__link> <span class=md-ellipsis> parse_error </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/parse_event_t/ class=md-nav__link> <span class=md-ellipsis> parse_event_t </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/parser_callback_t/ class=md-nav__link> <span class=md-ellipsis> parser_callback_t </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/patch/ class=md-nav__link> <span class=md-ellipsis> patch </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/patch_inplace/ class=md-nav__link> <span class=md-ellipsis> patch_inplace </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/push_back/ class=md-nav__link> <span class=md-ellipsis> push_back </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/rbegin/ class=md-nav__link> <span class=md-ellipsis> rbegin </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/rend/ class=md-nav__link> <span class=md-ellipsis> rend </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/sax_parse/ class=md-nav__link> <span class=md-ellipsis> sax_parse </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/size/ class=md-nav__link> <span class=md-ellipsis> size </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/start_pos/ class=md-nav__link> <span class=md-ellipsis> start_pos </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/string_t/ class=md-nav__link> <span class=md-ellipsis> string_t </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/swap/ class=md-nav__link> <span class=md-ellipsis> swap </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/std_swap/ class=md-nav__link> <span class=md-ellipsis> std::swap&lt;basic_json&gt; </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/to_bjdata/ class=md-nav__link> <span class=md-ellipsis> to_bjdata </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/to_bson/ class=md-nav__link> <span class=md-ellipsis> to_bson </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/to_cbor/ class=md-nav__link> <span class=md-ellipsis> to_cbor </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/to_msgpack/ class=md-nav__link> <span class=md-ellipsis> to_msgpack </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/to_string/ class=md-nav__link> <span class=md-ellipsis> to_string </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/to_ubjson/ class=md-nav__link> <span class=md-ellipsis> to_ubjson </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/type/ class=md-nav__link> <span class=md-ellipsis> type </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/type_error/ class=md-nav__link> <span class=md-ellipsis> type_error </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/type_name/ class=md-nav__link> <span class=md-ellipsis> type_name </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/unflatten/ class=md-nav__link> <span class=md-ellipsis> unflatten </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/update/ class=md-nav__link> <span class=md-ellipsis> update </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/value/ class=md-nav__link> <span class=md-ellipsis> value </span> </a> </li> <li class=md-nav__item> <a href=../../basic_json/value_t/ class=md-nav__link> <span class=md-ellipsis> value_t </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_2> <div class="md-nav__link md-nav__container"> <a href=../../byte_container_with_subtype/ class="md-nav__link "> <span class=md-ellipsis> byte_container_with_subtype </span> </a> <label class="md-nav__link " for=__nav_4_2 id=__nav_4_2_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_2_label aria-expanded=false> <label class=md-nav__title for=__nav_4_2> <span class="md-nav__icon md-icon"></span> byte_container_with_subtype </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../byte_container_with_subtype/byte_container_with_subtype/ class=md-nav__link> <span class=md-ellipsis> (constructor) </span> </a> </li> <li class=md-nav__item> <a href=../../byte_container_with_subtype/clear_subtype/ class=md-nav__link> <span class=md-ellipsis> clear_subtype </span> </a> </li> <li class=md-nav__item> <a href=../../byte_container_with_subtype/has_subtype/ class=md-nav__link> <span class=md-ellipsis> has_subtype </span> </a> </li> <li class=md-nav__item> <a href=../../byte_container_with_subtype/set_subtype/ class=md-nav__link> <span class=md-ellipsis> set_subtype </span> </a> </li> <li class=md-nav__item> <a href=../../byte_container_with_subtype/subtype/ class=md-nav__link> <span class=md-ellipsis> subtype </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_3> <div class="md-nav__link md-nav__container"> <a href=../../adl_serializer/ class="md-nav__link "> <span class=md-ellipsis> adl_serializer </span> </a> <label class="md-nav__link " for=__nav_4_3 id=__nav_4_3_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_3_label aria-expanded=false> <label class=md-nav__title for=__nav_4_3> <span class="md-nav__icon md-icon"></span> adl_serializer </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../adl_serializer/from_json/ class=md-nav__link> <span class=md-ellipsis> from_json </span> </a> </li> <li class=md-nav__item> <a href=../../adl_serializer/to_json/ class=md-nav__link> <span class=md-ellipsis> to_json </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../json/ class=md-nav__link> <span class=md-ellipsis> json </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_5> <div class="md-nav__link md-nav__container"> <a href=../../json_pointer/ class="md-nav__link "> <span class=md-ellipsis> json_pointer </span> </a> <label class="md-nav__link " for=__nav_4_5 id=__nav_4_5_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_5_label aria-expanded=false> <label class=md-nav__title for=__nav_4_5> <span class="md-nav__icon md-icon"></span> json_pointer </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../json_pointer/json_pointer/ class=md-nav__link> <span class=md-ellipsis> (Constructor) </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/back/ class=md-nav__link> <span class=md-ellipsis> back </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/empty/ class=md-nav__link> <span class=md-ellipsis> empty </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/front/ class=md-nav__link> <span class=md-ellipsis> front </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_string_t/ class=md-nav__link> <span class=md-ellipsis> operator string_t </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_eq/ class=md-nav__link> <span class=md-ellipsis> operator== </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_ne/ class=md-nav__link> <span class=md-ellipsis> operator!= </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_slash/ class=md-nav__link> <span class=md-ellipsis> operator/ </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/operator_slasheq/ class=md-nav__link> <span class=md-ellipsis> operator/= </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/parent_pointer/ class=md-nav__link> <span class=md-ellipsis> parent_pointer </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/pop_back/ class=md-nav__link> <span class=md-ellipsis> pop_back </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/pop_front/ class=md-nav__link> <span class=md-ellipsis> pop_front </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/push_back/ class=md-nav__link> <span class=md-ellipsis> push_back </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/push_front/ class=md-nav__link> <span class=md-ellipsis> push_front </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/string_t/ class=md-nav__link> <span class=md-ellipsis> string_t </span> </a> </li> <li class=md-nav__item> <a href=../../json_pointer/to_string/ class=md-nav__link> <span class=md-ellipsis> to_string </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_6> <div class="md-nav__link md-nav__container"> <a href=../../json_sax/ class="md-nav__link "> <span class=md-ellipsis> json_sax </span> </a> <label class="md-nav__link " for=__nav_4_6 id=__nav_4_6_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_6_label aria-expanded=false> <label class=md-nav__title for=__nav_4_6> <span class="md-nav__icon md-icon"></span> json_sax </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../json_sax/binary/ class=md-nav__link> <span class=md-ellipsis> binary </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/boolean/ class=md-nav__link> <span class=md-ellipsis> boolean </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/end_array/ class=md-nav__link> <span class=md-ellipsis> end_array </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/end_object/ class=md-nav__link> <span class=md-ellipsis> end_object </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/key/ class=md-nav__link> <span class=md-ellipsis> key </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/null/ class=md-nav__link> <span class=md-ellipsis> null </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/number_float/ class=md-nav__link> <span class=md-ellipsis> number_float </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/number_integer/ class=md-nav__link> <span class=md-ellipsis> number_integer </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/number_unsigned/ class=md-nav__link> <span class=md-ellipsis> number_unsigned </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/parse_error/ class=md-nav__link> <span class=md-ellipsis> parse_error </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/start_array/ class=md-nav__link> <span class=md-ellipsis> start_array </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/start_object/ class=md-nav__link> <span class=md-ellipsis> start_object </span> </a> </li> <li class=md-nav__item> <a href=../../json_sax/string/ class=md-nav__link> <span class=md-ellipsis> string </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../operator_ltlt/ class=md-nav__link> <span class=md-ellipsis> operator<<(basic_json), operator<<(json_pointer) </span> </a> </li> <li class=md-nav__item> <a href=../../operator_gtgt/ class=md-nav__link> <span class=md-ellipsis> operator>>(basic_json) </span> </a> </li> <li class=md-nav__item> <a href=../../operator_literal_json/ class=md-nav__link> <span class=md-ellipsis> operator""_json </span> </a> </li> <li class=md-nav__item> <a href=../../operator_literal_json_pointer/ class=md-nav__link> <span class=md-ellipsis> operator""_json_pointer </span> </a> </li> <li class=md-nav__item> <a href=../../ordered_json/ class=md-nav__link> <span class=md-ellipsis> ordered_json </span> </a> </li> <li class=md-nav__item> <a href=../../ordered_map/ class=md-nav__link> <span class=md-ellipsis> ordered_map </span> </a> </li> <li class="md-nav__item md-nav__item--active md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_13 checked> <div class="md-nav__link md-nav__container"> <a href=../ class="md-nav__link "> <span class=md-ellipsis> macros </span> </a> <label class="md-nav__link " for=__nav_4_13 id=__nav_4_13_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_13_label aria-expanded=true> <label class=md-nav__title for=__nav_4_13> <span class="md-nav__icon md-icon"></span> macros </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../json_assert/ class=md-nav__link> <span class=md-ellipsis> JSON_ASSERT </span> </a> </li> <li class=md-nav__item> <a href=../json_brace_init_copy_semantics/ class=md-nav__link> <span class=md-ellipsis> JSON_BRACE_INIT_COPY_SEMANTICS </span> </a> </li> <li class=md-nav__item> <a href=../json_throw_user/ class=md-nav__link> <span class=md-ellipsis> JSON_CATCH_USER, JSON_THROW_USER, JSON_TRY_USER </span> </a> </li> <li class=md-nav__item> <a href=../json_diagnostics/ class=md-nav__link> <span class=md-ellipsis> JSON_DIAGNOSTICS </span> </a> </li> <li class=md-nav__item> <a href=../json_diagnostic_positions/ class=md-nav__link> <span class=md-ellipsis> JSON_DIAGNOSTIC_POSITIONS </span> </a> </li> <li class=md-nav__item> <a href=../json_disable_enum_serialization/ class=md-nav__link> <span class=md-ellipsis> JSON_DISABLE_ENUM_SERIALIZATION </span> </a> </li> <li class=md-nav__item> <a href=../json_has_cpp_11/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_CPP_11, JSON_HAS_CPP_14, JSON_HAS_CPP_17, JSON_HAS_CPP_20 </span> </a> </li> <li class=md-nav__item> <a href=../json_has_filesystem/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_EXPERIMENTAL_FILESYSTEM, JSON_HAS_FILESYSTEM </span> </a> </li> <li class=md-nav__item> <a href=../json_has_ranges/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_RANGES </span> </a> </li> <li class=md-nav__item> <a href=../json_has_static_rtti/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_STATIC_RTTI </span> </a> </li> <li class=md-nav__item> <a href=../json_has_three_way_comparison/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_THREE_WAY_COMPARISON </span> </a> </li> <li class=md-nav__item> <a href=../json_noexception/ class=md-nav__link> <span class=md-ellipsis> JSON_NOEXCEPTION </span> </a> </li> <li class=md-nav__item> <a href=../json_no_io/ class=md-nav__link> <span class=md-ellipsis> JSON_NO_IO </span> </a> </li> <li class=md-nav__item> <a href=../json_skip_library_version_check/ class=md-nav__link> <span class=md-ellipsis> JSON_SKIP_LIBRARY_VERSION_CHECK </span> </a> </li> <li class=md-nav__item> <a href=../json_skip_unsupported_compiler_check/ class=md-nav__link> <span class=md-ellipsis> JSON_SKIP_UNSUPPORTED_COMPILER_CHECK </span> </a> </li> <li class=md-nav__item> <a href=../json_use_global_udls/ class=md-nav__link> <span class=md-ellipsis> JSON_USE_GLOBAL_UDLS </span> </a> </li> <li class=md-nav__item> <a href=../json_use_implicit_conversions/ class=md-nav__link> <span class=md-ellipsis> JSON_USE_IMPLICIT_CONVERSIONS </span> </a> </li> <li class=md-nav__item> <a href=../json_use_legacy_discarded_value_comparison/ class=md-nav__link> <span class=md-ellipsis> JSON_USE_LEGACY_DISCARDED_VALUE_COMPARISON </span> </a> </li> <li class=md-nav__item> <a href=../nlohmann_define_derived_type/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_ONLY_SERIALIZE, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE </span> </a> </li> <li class=md-nav__item> <a href=../nlohmann_define_type_intrusive/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_TYPE_INTRUSIVE, NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_TYPE_INTRUSIVE_ONLY_SERIALIZE </span> </a> </li> <li class="md-nav__item md-nav__item--active"> <input class="md-nav__toggle md-toggle" type=checkbox id=__toc> <label class="md-nav__link md-nav__link--active" for=__toc> <span class=md-ellipsis> NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE </span> <span class="md-nav__icon md-icon"></span> </label> <a href=./ class="md-nav__link md-nav__link--active"> <span class=md-ellipsis> NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE </span> </a> <nav class="md-nav md-nav--secondary" aria-label="Table of contents"> <label class=md-nav__title for=__toc> <span class="md-nav__icon md-icon"></span> Table of contents </label> <ul class=md-nav__list data-md-component=toc data-md-scrollfix> <li class=md-nav__item> <a href=#parameters class=md-nav__link> <span class=md-ellipsis> Parameters </span> </a> </li> <li class=md-nav__item> <a href=#default-definition class=md-nav__link> <span class=md-ellipsis> Default definition </span> </a> </li> <li class=md-nav__item> <a href=#notes class=md-nav__link> <span class=md-ellipsis> Notes </span> </a> </li> <li class=md-nav__item> <a href=#examples class=md-nav__link> <span class=md-ellipsis> Examples </span> </a> </li> <li class=md-nav__item> <a href=#see-also class=md-nav__link> <span class=md-ellipsis> See also </span> </a> </li> <li class=md-nav__item> <a href=#version-history class=md-nav__link> <span class=md-ellipsis> Version history </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../nlohmann_define_type_with_names/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_TYPE_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES </span> </a> </li> <li class=md-nav__item> <a href=../nlohmann_json_namespace/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_NAMESPACE </span> </a> </li> <li class=md-nav__item> <a href=../nlohmann_json_namespace_begin/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_NAMESPACE_BEGIN, NLOHMANN_JSON_NAMESPACE_END </span> </a> </li> <li class=md-nav__item> <a href=../nlohmann_json_namespace_no_version/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_NAMESPACE_NO_VERSION </span> </a> </li> <li class=md-nav__item> <a href=../nlohmann_json_serialize_enum/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_SERIALIZE_ENUM </span> </a> </li> <li class=md-nav__item> <a href=../nlohmann_json_serialize_enum_strict/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_SERIALIZE_ENUM_STRICT </span> </a> </li> <li class=md-nav__item> <a href=../nlohmann_json_version_major/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_VERSION_MAJOR, NLOHMANN_JSON_VERSION_MINOR, NLOHMANN_JSON_VERSION_PATCH </span> </a> </li> </ul> </nav> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_5> <div class="md-nav__link md-nav__container"> <a href=../../../community/ class="md-nav__link "> <span class=md-ellipsis> Community </span> </a> <label class="md-nav__link " for=__nav_5 id=__nav_5_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_5_label aria-expanded=false> <label class=md-nav__title for=__nav_5> <span class="md-nav__icon md-icon"></span> Community </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../community/code_of_conduct/ class=md-nav__link> <span class=md-ellipsis> Code of Conduct </span> </a> </li> <li class=md-nav__item> <a href=../../../community/contribution_guidelines/ class=md-nav__link> <span class=md-ellipsis> Contribution Guidelines </span> </a> </li> <li class=md-nav__item> <a href=../../../community/quality_assurance/ class=md-nav__link> <span class=md-ellipsis> Quality assurance </span> </a> </li> <li class=md-nav__item> <a href=../../../community/governance/ class=md-nav__link> <span class=md-ellipsis> Governance </span> </a> </li> <li class=md-nav__item> <a href=../../../community/security_policy/ class=md-nav__link> <span class=md-ellipsis> Security Policy </span> </a> </li> </ul> </nav> </li> </ul> </nav> </div> </div> </div> <div class="md-sidebar md-sidebar--secondary" data-md-component=sidebar data-md-type=toc> <div class=md-sidebar__scrollwrap> <div class=md-sidebar__inner> <nav class="md-nav md-nav--secondary" aria-label="Table of contents"> <label class=md-nav__title for=__toc> <span class="md-nav__icon md-icon"></span> Table of contents </label> <ul class=md-nav__list data-md-component=toc data-md-scrollfix> <li class=md-nav__item> <a href=#parameters class=md-nav__link> <span class=md-ellipsis> Parameters </span> </a> </li> <li class=md-nav__item> <a href=#default-definition class=md-nav__link> <span class=md-ellipsis> Default definition </span> </a> </li> <li class=md-nav__item> <a href=#notes class=md-nav__link> <span class=md-ellipsis> Notes </span> </a> </li> <li class=md-nav__item> <a href=#examples class=md-nav__link> <span class=md-ellipsis> Examples </span> </a> </li> <li class=md-nav__item> <a href=#see-also class=md-nav__link> <span class=md-ellipsis> See also </span> </a> </li> <li class=md-nav__item> <a href=#version-history class=md-nav__link> <span class=md-ellipsis> Version history </span> </a> </li> </ul> </nav> </div> </div> </div> <div class=md-content data-md-component=content> <article class="md-content__inner md-typeset"> <a href="https://github.com/nlohmann/json/edit/develop/docs/mkdocs/docs/api/macros/nlohmann_define_type_non_intrusive.md" title="Edit this page" class="md-content__button md-icon" rel="edit"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M10 20H6V4h7v5h5v3.1l2-2V8l-6-6H6c-1.1 0-2 .9-2 2v16c0 1.1.9 2 2 2h4zm10.2-7c.1 0 .3.1.4.2l1.3 1.3c.2.2.2.6 0 .8l-1 1-2.1-2.1 1-1c.1-.1.2-.2.4-.2m0 3.9L14.1 23H12v-2.1l6.1-6.1z"/></svg> </a> <a href="https://github.com/nlohmann/json/raw/develop/docs/mkdocs/docs/api/macros/nlohmann_define_type_non_intrusive.md" title="View source of this page" class="md-content__button md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M17 18c.56 0 1 .44 1 1s-.44 1-1 1-1-.44-1-1 .44-1 1-1m0-3c-2.73 0-5.06 1.66-6 4 .94 2.34 3.27 4 6 4s5.06-1.66 6-4c-.94-2.34-3.27-4-6-4m0 6.5a2.5 2.5 0 0 1-2.5-2.5 2.5 2.5 0 0 1 2.5-2.5 2.5 2.5 0 0 1 2.5 2.5 2.5 2.5 0 0 1-2.5 2.5M9.27 20H6V4h7v5h5v4.07c.7.08 1.36.25 2 .49V8l-6-6H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h4.5a8.2 8.2 0 0 1-1.23-2"/></svg> </a> <h1 id=nlohmann_define_type_non_intrusive-nlohmann_define_type_non_intrusive_with_default-nlohmann_define_type_non_intrusive_only_serialize>NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE<a class=headerlink href=#nlohmann_define_type_non_intrusive-nlohmann_define_type_non_intrusive_with_default-nlohmann_define_type_non_intrusive_only_serialize title="Permanent link">&para;</a></h1> <div class=highlight><pre><span></span><code><span class=cp>#define NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE(type, member...)              </span><span class=c1>// (1)</span>
 <span class=cp>#define NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT(type, member...) </span><span class=c1>// (2)</span>
 <span class=cp>#define NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE(type, member...) </span><span class=c1>// (3)</span>
-</code></pre></div> <p>These macros can be used to simplify the serialization/deserialization of types if you want to use a <abbr title="JavaScript Object Notation">JSON</abbr> object as serialization and want to use the member variable names as object keys in that object. The macro is to be defined <strong>outside</strong> the class/struct to create code for, but <strong>inside</strong> its namespace. Unlike <a href=../nlohmann_define_type_intrusive/ ><code>NLOHMANN_DEFINE_TYPE_INTRUSIVE</code></a>, it <strong>cannot</strong> access private members. The first parameter is the name of the class/struct, and all remaining parameters name the members.</p> <ol> <li>Will use <a href=../../basic_json/at/ ><code>at</code></a> during deserialization and will throw <a href=../../../home/exceptions/#jsonexceptionout_of_range403><code>out_of_range.403</code></a> if a key is missing in the <abbr title="JavaScript Object Notation">JSON</abbr> object.</li> <li>Will use <a href=../../basic_json/value/ ><code>value</code></a> during deserialization and fall back to the default value for the respective type of the member variable if a key in the <abbr title="JavaScript Object Notation">JSON</abbr> object is missing. The generated <code>from_json()</code> function default constructs an object and uses its values as the defaults when calling the <code>value</code> function.</li> <li>Only defines the serialization. Useful in cases when the type does not have a default constructor and only serialization is required.</li> </ol> <p>Summary:</p> <table> <thead> <tr> <th>Need access to private members</th> <th>Need only de-serialization</th> <th>Allow missing values when de-serializing</th> <th>macro</th> </tr> </thead> <tbody> <tr> <td><div style="color: red;"><span class=twemoji><svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M1 12C1 5.925 5.925 1 12 1s11 4.925 11 11-4.925 11-11 11S1 18.075 1 12m8.036-4.024a.75.75 0 0 0-1.042.018.75.75 0 0 0-.018 1.042L10.939 12l-2.963 2.963a.749.749 0 0 0 .326 1.275.75.75 0 0 0 .734-.215L12 13.06l2.963 2.964a.75.75 0 0 0 1.061-1.06L13.061 12l2.963-2.964a.749.749 0 0 0-.326-1.275.75.75 0 0 0-.734.215L12 10.939Z"/></svg></span></div></td> <td><div style="color: red;"><span class=twemoji><svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M1 12C1 5.925 5.925 1 12 1s11 4.925 11 11-4.925 11-11 11S1 18.075 1 12m8.036-4.024a.75.75 0 0 0-1.042.018.75.75 0 0 0-.018 1.042L10.939 12l-2.963 2.963a.749.749 0 0 0 .326 1.275.75.75 0 0 0 .734-.215L12 13.06l2.963 2.964a.75.75 0 0 0 1.061-1.06L13.061 12l2.963-2.964a.749.749 0 0 0-.326-1.275.75.75 0 0 0-.734.215L12 10.939Z"/></svg></span></div></td> <td><div style="color: red;"><span class=twemoji><svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M1 12C1 5.925 5.925 1 12 1s11 4.925 11 11-4.925 11-11 11S1 18.075 1 12m8.036-4.024a.75.75 0 0 0-1.042.018.75.75 0 0 0-.018 1.042L10.939 12l-2.963 2.963a.749.749 0 0 0 .326 1.275.75.75 0 0 0 .734-.215L12 13.06l2.963 2.964a.75.75 0 0 0 1.061-1.06L13.061 12l2.963-2.964a.749.749 0 0 0-.326-1.275.75.75 0 0 0-.734.215L12 10.939Z"/></svg></span></div></td> <td><strong>NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE</strong></td> </tr> <tr> <td><div style="color: red;"><span class=twemoji><svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M1 12C1 5.925 5.925 1 12 1s11 4.925 11 11-4.925 11-11 11S1 18.075 1 12m8.036-4.024a.75.75 0 0 0-1.042.018.75.75 0 0 0-.018 1.042L10.939 12l-2.963 2.963a.749.749 0 0 0 .326 1.275.75.75 0 0 0 .734-.215L12 13.06l2.963 2.964a.75.75 0 0 0 1.061-1.06L13.061 12l2.963-2.964a.749.749 0 0 0-.326-1.275.75.75 0 0 0-.734.215L12 10.939Z"/></svg></span></div></td> <td><div style="color: red;"><span class=twemoji><svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M1 12C1 5.925 5.925 1 12 1s11 4.925 11 11-4.925 11-11 11S1 18.075 1 12m8.036-4.024a.75.75 0 0 0-1.042.018.75.75 0 0 0-.018 1.042L10.939 12l-2.963 2.963a.749.749 0 0 0 .326 1.275.75.75 0 0 0 .734-.215L12 13.06l2.963 2.964a.75.75 0 0 0 1.061-1.06L13.061 12l2.963-2.964a.749.749 0 0 0-.326-1.275.75.75 0 0 0-.734.215L12 10.939Z"/></svg></span></div></td> <td><div style="color: green;"><span class=twemoji><svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M1 12C1 5.925 5.925 1 12 1s11 4.925 11 11-4.925 11-11 11S1 18.075 1 12m16.28-2.72a.75.75 0 0 0-.018-1.042.75.75 0 0 0-1.042-.018l-5.97 5.97-2.47-2.47a.75.75 0 0 0-1.042.018.75.75 0 0 0-.018 1.042l3 3a.75.75 0 0 0 1.06 0Z"/></svg></span></div></td> <td><strong>NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT</strong></td> </tr> <tr> <td><div style="color: red;"><span class=twemoji><svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M1 12C1 5.925 5.925 1 12 1s11 4.925 11 11-4.925 11-11 11S1 18.075 1 12m8.036-4.024a.75.75 0 0 0-1.042.018.75.75 0 0 0-.018 1.042L10.939 12l-2.963 2.963a.749.749 0 0 0 .326 1.275.75.75 0 0 0 .734-.215L12 13.06l2.963 2.964a.75.75 0 0 0 1.061-1.06L13.061 12l2.963-2.964a.749.749 0 0 0-.326-1.275.75.75 0 0 0-.734.215L12 10.939Z"/></svg></span></div></td> <td><div style="color: green;"><span class=twemoji><svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M1 12C1 5.925 5.925 1 12 1s11 4.925 11 11-4.925 11-11 11S1 18.075 1 12m16.28-2.72a.75.75 0 0 0-.018-1.042.75.75 0 0 0-1.042-.018l-5.97 5.97-2.47-2.47a.75.75 0 0 0-1.042.018.75.75 0 0 0-.018 1.042l3 3a.75.75 0 0 0 1.06 0Z"/></svg></span></div></td> <td><div style="color: grey;"><span class=twemoji><svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M1 12C1 5.925 5.925 1 12 1s11 4.925 11 11-4.925 11-11 11S1 18.075 1 12m16.333-4.167a.825.825 0 0 0-1.166-1.166l-9.5 9.5a.825.825 0 0 0 1.166 1.166Z"/></svg></span></div></td> <td><strong>NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE</strong></td> </tr> </tbody> </table> <h2 id=parameters>Parameters<a class=headerlink href=#parameters title="Permanent link">&para;</a></h2> <dl> <dt><code>type</code> (in)</dt> <dd>name of the type (class, struct) to serialize/deserialize</dd> <dt><code>member</code> (in)</dt> <dd>name of the (public) member variable to serialize/deserialize; up to 63 members can be given as a comma-separated list</dd> </dl> <h2 id=default-definition>Default definition<a class=headerlink href=#default-definition title="Permanent link">&para;</a></h2> <p>The macros add two functions to the namespace which take care of the serialization and deserialization:</p> <div class=highlight><pre><span></span><code><span class=k>template</span><span class=o>&lt;</span><span class=k>typename</span><span class=w> </span><span class=nc>BasicJsonType</span><span class=o>&gt;</span>
+</code></pre></div> <p>These macros can be used to simplify the serialization/deserialization of types if you want to use a <abbr title="JavaScript Object Notation">JSON</abbr> object as serialization and want to use the member variable names as object keys in that object. The macro is to be defined <strong>outside</strong> the class/struct to create code for, but <strong>inside</strong> its namespace. Unlike <a href=../nlohmann_define_type_intrusive/ ><code>NLOHMANN_DEFINE_TYPE_INTRUSIVE</code></a>, it <strong>cannot</strong> access private members. The first parameter is the name of the class/struct, and all remaining parameters name the members.</p> <ol> <li>Will use <a href=../../basic_json/at/ ><code>at</code></a> during deserialization and will throw <a href=../../../home/exceptions/#jsonexceptionout_of_range403><code>out_of_range.403</code></a> if a key is missing in the <abbr title="JavaScript Object Notation">JSON</abbr> object.</li> <li>Will use <a href=../../basic_json/value/ ><code>value</code></a> during deserialization and fall back to the default value for the respective type of the member variable if a key in the <abbr title="JavaScript Object Notation">JSON</abbr> object is missing. The generated <code>from_json()</code> function default constructs an object and uses its values as the defaults when calling the <code>value</code> function.</li> <li>Only defines the serialization. Useful in cases when the type does not have a default constructor and only serialization is required.</li> </ol> <p>Summary:</p> <table> <thead> <tr> <th>Need access to private members</th> <th>Need only serialization</th> <th>Allow missing values when de-serializing</th> <th>macro</th> </tr> </thead> <tbody> <tr> <td><div style="color: red;"><span class=twemoji><svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M1 12C1 5.925 5.925 1 12 1s11 4.925 11 11-4.925 11-11 11S1 18.075 1 12m8.036-4.024a.75.75 0 0 0-1.042.018.75.75 0 0 0-.018 1.042L10.939 12l-2.963 2.963a.749.749 0 0 0 .326 1.275.75.75 0 0 0 .734-.215L12 13.06l2.963 2.964a.75.75 0 0 0 1.061-1.06L13.061 12l2.963-2.964a.749.749 0 0 0-.326-1.275.75.75 0 0 0-.734.215L12 10.939Z"/></svg></span></div></td> <td><div style="color: red;"><span class=twemoji><svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M1 12C1 5.925 5.925 1 12 1s11 4.925 11 11-4.925 11-11 11S1 18.075 1 12m8.036-4.024a.75.75 0 0 0-1.042.018.75.75 0 0 0-.018 1.042L10.939 12l-2.963 2.963a.749.749 0 0 0 .326 1.275.75.75 0 0 0 .734-.215L12 13.06l2.963 2.964a.75.75 0 0 0 1.061-1.06L13.061 12l2.963-2.964a.749.749 0 0 0-.326-1.275.75.75 0 0 0-.734.215L12 10.939Z"/></svg></span></div></td> <td><div style="color: red;"><span class=twemoji><svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M1 12C1 5.925 5.925 1 12 1s11 4.925 11 11-4.925 11-11 11S1 18.075 1 12m8.036-4.024a.75.75 0 0 0-1.042.018.75.75 0 0 0-.018 1.042L10.939 12l-2.963 2.963a.749.749 0 0 0 .326 1.275.75.75 0 0 0 .734-.215L12 13.06l2.963 2.964a.75.75 0 0 0 1.061-1.06L13.061 12l2.963-2.964a.749.749 0 0 0-.326-1.275.75.75 0 0 0-.734.215L12 10.939Z"/></svg></span></div></td> <td><strong>NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE</strong></td> </tr> <tr> <td><div style="color: red;"><span class=twemoji><svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M1 12C1 5.925 5.925 1 12 1s11 4.925 11 11-4.925 11-11 11S1 18.075 1 12m8.036-4.024a.75.75 0 0 0-1.042.018.75.75 0 0 0-.018 1.042L10.939 12l-2.963 2.963a.749.749 0 0 0 .326 1.275.75.75 0 0 0 .734-.215L12 13.06l2.963 2.964a.75.75 0 0 0 1.061-1.06L13.061 12l2.963-2.964a.749.749 0 0 0-.326-1.275.75.75 0 0 0-.734.215L12 10.939Z"/></svg></span></div></td> <td><div style="color: red;"><span class=twemoji><svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M1 12C1 5.925 5.925 1 12 1s11 4.925 11 11-4.925 11-11 11S1 18.075 1 12m8.036-4.024a.75.75 0 0 0-1.042.018.75.75 0 0 0-.018 1.042L10.939 12l-2.963 2.963a.749.749 0 0 0 .326 1.275.75.75 0 0 0 .734-.215L12 13.06l2.963 2.964a.75.75 0 0 0 1.061-1.06L13.061 12l2.963-2.964a.749.749 0 0 0-.326-1.275.75.75 0 0 0-.734.215L12 10.939Z"/></svg></span></div></td> <td><div style="color: green;"><span class=twemoji><svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M1 12C1 5.925 5.925 1 12 1s11 4.925 11 11-4.925 11-11 11S1 18.075 1 12m16.28-2.72a.75.75 0 0 0-.018-1.042.75.75 0 0 0-1.042-.018l-5.97 5.97-2.47-2.47a.75.75 0 0 0-1.042.018.75.75 0 0 0-.018 1.042l3 3a.75.75 0 0 0 1.06 0Z"/></svg></span></div></td> <td><strong>NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT</strong></td> </tr> <tr> <td><div style="color: red;"><span class=twemoji><svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M1 12C1 5.925 5.925 1 12 1s11 4.925 11 11-4.925 11-11 11S1 18.075 1 12m8.036-4.024a.75.75 0 0 0-1.042.018.75.75 0 0 0-.018 1.042L10.939 12l-2.963 2.963a.749.749 0 0 0 .326 1.275.75.75 0 0 0 .734-.215L12 13.06l2.963 2.964a.75.75 0 0 0 1.061-1.06L13.061 12l2.963-2.964a.749.749 0 0 0-.326-1.275.75.75 0 0 0-.734.215L12 10.939Z"/></svg></span></div></td> <td><div style="color: green;"><span class=twemoji><svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M1 12C1 5.925 5.925 1 12 1s11 4.925 11 11-4.925 11-11 11S1 18.075 1 12m16.28-2.72a.75.75 0 0 0-.018-1.042.75.75 0 0 0-1.042-.018l-5.97 5.97-2.47-2.47a.75.75 0 0 0-1.042.018.75.75 0 0 0-.018 1.042l3 3a.75.75 0 0 0 1.06 0Z"/></svg></span></div></td> <td><div style="color: grey;"><span class=twemoji><svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M1 12C1 5.925 5.925 1 12 1s11 4.925 11 11-4.925 11-11 11S1 18.075 1 12m16.333-4.167a.825.825 0 0 0-1.166-1.166l-9.5 9.5a.825.825 0 0 0 1.166 1.166Z"/></svg></span></div></td> <td><strong>NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE</strong></td> </tr> </tbody> </table> <h2 id=parameters>Parameters<a class=headerlink href=#parameters title="Permanent link">&para;</a></h2> <dl> <dt><code>type</code> (in)</dt> <dd>name of the type (class, struct) to serialize/deserialize</dd> <dt><code>member</code> (in)</dt> <dd>name of the (public) member variable to serialize/deserialize; up to 63 members can be given as a comma-separated list</dd> </dl> <h2 id=default-definition>Default definition<a class=headerlink href=#default-definition title="Permanent link">&para;</a></h2> <p>The macros add two functions to the namespace which take care of the serialization and deserialization:</p> <div class=highlight><pre><span></span><code><span class=k>template</span><span class=o>&lt;</span><span class=k>typename</span><span class=w> </span><span class=nc>BasicJsonType</span><span class=o>&gt;</span>
 <span class=kt>void</span><span class=w> </span><span class=n>to_json</span><span class=p>(</span><span class=n>BasicJsonType</span><span class=o>&amp;</span><span class=p>,</span><span class=w> </span><span class=k>const</span><span class=w> </span><span class=n>type</span><span class=o>&amp;</span><span class=p>);</span>
 <span class=k>template</span><span class=o>&lt;</span><span class=k>typename</span><span class=w> </span><span class=nc>BasicJsonType</span><span class=o>&gt;</span>
 <span class=kt>void</span><span class=w> </span><span class=n>from_json</span><span class=p>(</span><span class=k>const</span><span class=w> </span><span class=n>BasicJsonType</span><span class=o>&amp;</span><span class=p>,</span><span class=w> </span><span class=n>type</span><span class=o>&amp;</span><span class=p>);</span><span class=w> </span><span class=c1>// except (3)</span>
@@ -259,4 +259,4 @@
 <span class=w>    </span><span class=n>json</span><span class=w> </span><span class=n>j</span><span class=w> </span><span class=o>=</span><span class=w> </span><span class=n>p</span><span class=p>;</span>
 <span class=w>    </span><span class=n>std</span><span class=o>::</span><span class=n>cout</span><span class=w> </span><span class=o>&lt;&lt;</span><span class=w> </span><span class=s>&quot;serialization: &quot;</span><span class=w> </span><span class=o>&lt;&lt;</span><span class=w> </span><span class=n>j</span><span class=w> </span><span class=o>&lt;&lt;</span><span class=w> </span><span class=n>std</span><span class=o>::</span><span class=n>endl</span><span class=p>;</span>
 <span class=p>}</span>
-</code></pre></div> </details> <h2 id=see-also>See also<a class=headerlink href=#see-also title="Permanent link">&para;</a></h2> <ul> <li><a href=../nlohmann_define_type_intrusive/ >NLOHMANN_DEFINE_TYPE_INTRUSIVE, NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_TYPE_INTRUSIVE_ONLY_SERIALIZE</a> for a similar macro that can be defined <em>inside</em> the type.</li> <li><a href=../nlohmann_define_derived_type/ >NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_ONLY_SERIALIZE, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE</a> for similar macros for derived types</li> <li><a href=../../../features/arbitrary_types/ >Arbitrary Type Conversions</a> for an overview.</li> </ul> <h2 id=version-history>Version history<a class=headerlink href=#version-history title="Permanent link">&para;</a></h2> <ol> <li>Added in version 3.9.0.</li> <li>Added in version 3.11.0.</li> <li>Added in version 3.11.3.</li> </ol> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 23, 2026 11:16:18 UTC">June 23, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
+</code></pre></div> </details> <h2 id=see-also>See also<a class=headerlink href=#see-also title="Permanent link">&para;</a></h2> <ul> <li><a href=../nlohmann_define_type_intrusive/ >NLOHMANN_DEFINE_TYPE_INTRUSIVE, NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_TYPE_INTRUSIVE_ONLY_SERIALIZE</a> for a similar macro that can be defined <em>inside</em> the type.</li> <li><a href=../nlohmann_define_derived_type/ >NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_ONLY_SERIALIZE, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE</a> for similar macros for derived types</li> <li><a href=../../../features/arbitrary_types/ >Arbitrary Type Conversions</a> for an overview.</li> </ul> <h2 id=version-history>Version history<a class=headerlink href=#version-history title="Permanent link">&para;</a></h2> <ol> <li>Added in version 3.9.0.</li> <li>Added in version 3.11.0.</li> <li>Added in version 3.11.3.</li> </ol> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 29, 2026 20:15:18 UTC">June 29, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
diff --git a/api/macros/nlohmann_define_type_with_names/index.html b/api/macros/nlohmann_define_type_with_names/index.html
index 13ffae8..42a729f 100644
--- a/api/macros/nlohmann_define_type_with_names/index.html
+++ b/api/macros/nlohmann_define_type_with_names/index.html
@@ -108,4 +108,4 @@
 <span class=w>        </span><span class=n>std</span><span class=o>::</span><span class=n>cout</span><span class=w> </span><span class=o>&lt;&lt;</span><span class=w> </span><span class=s>&quot;deserialization failed: &quot;</span><span class=w> </span><span class=o>&lt;&lt;</span><span class=w> </span><span class=n>e</span><span class=p>.</span><span class=n>what</span><span class=p>()</span><span class=w> </span><span class=o>&lt;&lt;</span><span class=w> </span><span class=n>std</span><span class=o>::</span><span class=n>endl</span><span class=p>;</span>
 <span class=w>    </span><span class=p>}</span>
 <span class=p>}</span>
-</code></pre></div> </details> <h2 id=version-history>Version history<a class=headerlink href=#version-history title="Permanent link">&para;</a></h2> <ol> <li>Added in version 3.11.x.</li> </ol> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 23, 2026 11:16:18 UTC">June 23, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
+</code></pre></div> </details> <h2 id=version-history>Version history<a class=headerlink href=#version-history title="Permanent link">&para;</a></h2> <ol> <li>Added in version 3.12.x.</li> </ol> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 29, 2026 20:15:18 UTC">June 29, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
diff --git a/api/macros/nlohmann_json_namespace/index.html b/api/macros/nlohmann_json_namespace/index.html
index 1cac3c1..49328e1 100644
--- a/api/macros/nlohmann_json_namespace/index.html
+++ b/api/macros/nlohmann_json_namespace/index.html
@@ -14,4 +14,4 @@
 <span class=w>    </span><span class=n>std</span><span class=o>::</span><span class=n>cout</span><span class=w> </span><span class=o>&lt;&lt;</span><span class=w> </span><span class=n>QUOTE</span><span class=p>(</span><span class=n>NLOHMANN_JSON_NAMESPACE</span><span class=p>)</span><span class=w> </span><span class=o>&lt;&lt;</span><span class=w> </span><span class=n>std</span><span class=o>::</span><span class=n>endl</span><span class=p>;</span>
 <span class=p>}</span>
 </code></pre></div> <p>Output:</p> <div class=highlight><pre><span></span><code><span class=kc>nl</span><span class=err>ohma</span><span class=kc>nn</span><span class=p>::</span><span class=err>jso</span><span class=kc>n</span><span class=err>_abi_v</span><span class=mi>3</span><span class=err>_</span><span class=mi>12</span><span class=err>_</span><span class=mi>0</span>
-</code></pre></div> </details> <h2 id=see-also>See also<a class=headerlink href=#see-also title="Permanent link">&para;</a></h2> <ul> <li><a href=../nlohmann_json_namespace_begin/ ><code>NLOHMANN_JSON_NAMESPACE_BEGIN, NLOHMANN_JSON_NAMESPACE_END</code></a></li> <li><a href=../nlohmann_json_namespace_no_version/ ><code>NLOHMANN_JSON_NAMESPACE_NO_VERSION</code></a></li> </ul> <h2 id=version-history>Version history<a class=headerlink href=#version-history title="Permanent link">&para;</a></h2> <ul> <li>Added in version 3.11.0. Changed inline namespace name in version 3.11.2.</li> </ul> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 23, 2026 11:16:18 UTC">June 23, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
+</code></pre></div> </details> <h2 id=see-also>See also<a class=headerlink href=#see-also title="Permanent link">&para;</a></h2> <ul> <li><a href=../nlohmann_json_namespace_begin/ ><code>NLOHMANN_JSON_NAMESPACE_BEGIN, NLOHMANN_JSON_NAMESPACE_END</code></a></li> <li><a href=../nlohmann_json_namespace_no_version/ ><code>NLOHMANN_JSON_NAMESPACE_NO_VERSION</code></a></li> </ul> <h2 id=version-history>Version history<a class=headerlink href=#version-history title="Permanent link">&para;</a></h2> <ul> <li>Added in version 3.11.0. Changed inline namespace name in version 3.11.2.</li> </ul> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 29, 2026 20:15:18 UTC">June 29, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
diff --git a/api/macros/nlohmann_json_namespace_begin/index.html b/api/macros/nlohmann_json_namespace_begin/index.html
index 82eab9e..2dc203e 100644
--- a/api/macros/nlohmann_json_namespace_begin/index.html
+++ b/api/macros/nlohmann_json_namespace_begin/index.html
@@ -2,9 +2,9 @@
 <span class=cp>#define NLOHMANN_JSON_NAMESPACE_END   </span><span class=cm>/* value */</span><span class=cp>  </span><span class=c1>// (2)</span>
 </code></pre></div> <p>These macros can be used to open and close the <code>nlohmann</code> namespace. See <a href=../../../features/namespace/#structure><code>nlohmann</code> Namespace</a> for details.</p> <ol> <li>Opens the namespace.</li> <li>Closes the namespace.</li> </ol> <h2 id=default-definition>Default definition<a class=headerlink href=#default-definition title="Permanent link">&para;</a></h2> <p>The default definitions open and close the <code>nlohmann</code> namespace. The precise definition of [<code>NLOHMANN_JSON_NAMESPACE_BEGIN</code>] varies as described <a href=../../../features/namespace/#structure>here</a>.</p> <ol> <li> <p>Default definition of <code>NLOHMANN_JSON_NAMESPACE_BEGIN</code>:</p> <div class=highlight><pre><span></span><code><span class=k>namespace</span><span class=w> </span><span class=nn>nlohmann</span>
 <span class=p>{</span>
-<span class=kr>inline</span><span class=w> </span><span class=k>namespace</span><span class=w> </span><span class=nn>json_abi_v3_11_2</span>
+<span class=kr>inline</span><span class=w> </span><span class=k>namespace</span><span class=w> </span><span class=nn>json_abi_v3_12_0</span>
 <span class=p>{</span>
-</code></pre></div> </li> <li> <p>Default definition of <code>NLOHMANN_JSON_NAMESPACE_END</code>: <div class=highlight><pre><span></span><code><span class=p>}</span><span class=w>  </span><span class=c1>// namespace json_abi_v3_11_2</span>
+</code></pre></div> </li> <li> <p>Default definition of <code>NLOHMANN_JSON_NAMESPACE_END</code>: <div class=highlight><pre><span></span><code><span class=p>}</span><span class=w>  </span><span class=c1>// namespace json_abi_v3_12_0</span>
 <span class=p>}</span><span class=w>  </span><span class=c1>// namespace nlohmann</span>
 </code></pre></div></p> </li> </ol> <p>When these macros are not defined, the library will define them to their default definitions.</p> <h2 id=examples>Examples<a class=headerlink href=#examples title="Permanent link">&para;</a></h2> <details class=example> <summary>Example</summary> <p>The example shows how to use <code>NLOHMANN_JSON_NAMESPACE_BEGIN</code>/<code>NLOHMANN_JSON_NAMESPACE_END</code> from the <a href=../../../features/arbitrary_types/#how-do-i-convert-third-party-types>How do I convert third-party types?</a> page.</p> <div class=highlight><pre><span></span><code><span class=cp>#include</span><span class=w> </span><span class=cpf>&lt;iostream&gt;</span>
 <span class=cp>#include</span><span class=w> </span><span class=cpf>&lt;optional&gt;</span>
@@ -40,4 +40,4 @@
 <span class=w>    </span><span class=n>std</span><span class=o>::</span><span class=n>cout</span><span class=w> </span><span class=o>&lt;&lt;</span><span class=w> </span><span class=n>j</span><span class=w> </span><span class=o>&lt;&lt;</span><span class=w> </span><span class=n>std</span><span class=o>::</span><span class=n>endl</span><span class=p>;</span>
 <span class=p>}</span>
 </code></pre></div> <p>Output:</p> <div class=highlight><pre><span></span><code><span class=p>[</span><span class=mi>1</span><span class=p>,</span><span class=kc>null</span><span class=p>]</span>
-</code></pre></div> </details> <h2 id=see-also>See also<a class=headerlink href=#see-also title="Permanent link">&para;</a></h2> <ul> <li><a href=../../../features/namespace/ ><code>nlohmann</code> Namespace</a></li> <li><a href=../nlohmann_json_namespace/ >NLOHMANN_JSON_NAMESPACE</a></li> <li><a href=../nlohmann_json_namespace_no_version/ ><code>NLOHMANN_JSON_NAMESPACE_NO_VERSION</code></a></li> </ul> <h2 id=version-history>Version history<a class=headerlink href=#version-history title="Permanent link">&para;</a></h2> <ul> <li>Added in version 3.11.0. Changed inline namespace name in version 3.11.2.</li> </ul> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 23, 2026 11:16:18 UTC">June 23, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
+</code></pre></div> </details> <h2 id=see-also>See also<a class=headerlink href=#see-also title="Permanent link">&para;</a></h2> <ul> <li><a href=../../../features/namespace/ ><code>nlohmann</code> Namespace</a></li> <li><a href=../nlohmann_json_namespace/ >NLOHMANN_JSON_NAMESPACE</a></li> <li><a href=../nlohmann_json_namespace_no_version/ ><code>NLOHMANN_JSON_NAMESPACE_NO_VERSION</code></a></li> </ul> <h2 id=version-history>Version history<a class=headerlink href=#version-history title="Permanent link">&para;</a></h2> <ul> <li>Added in version 3.11.0. Changed inline namespace name in version 3.11.2.</li> </ul> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 29, 2026 20:15:18 UTC">June 29, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
diff --git a/api/macros/nlohmann_json_namespace_no_version/index.html b/api/macros/nlohmann_json_namespace_no_version/index.html
index 93da0fe..bba3868 100644
--- a/api/macros/nlohmann_json_namespace_no_version/index.html
+++ b/api/macros/nlohmann_json_namespace_no_version/index.html
@@ -14,4 +14,4 @@
 <span class=w>    </span><span class=n>std</span><span class=o>::</span><span class=n>cout</span><span class=w> </span><span class=o>&lt;&lt;</span><span class=w> </span><span class=n>QUOTE</span><span class=p>(</span><span class=n>NLOHMANN_JSON_NAMESPACE</span><span class=p>)</span><span class=w> </span><span class=o>&lt;&lt;</span><span class=w> </span><span class=n>std</span><span class=o>::</span><span class=n>endl</span><span class=p>;</span>
 <span class=p>}</span>
 </code></pre></div> <p>Output:</p> <div class=highlight><pre><span></span><code><span class=kc>nl</span><span class=err>ohma</span><span class=kc>nn</span><span class=p>::</span><span class=err>jso</span><span class=kc>n</span><span class=err>_abi</span>
-</code></pre></div> </details> <h2 id=see-also>See also<a class=headerlink href=#see-also title="Permanent link">&para;</a></h2> <ul> <li><a href=../../../features/namespace/ ><code>nlohmann</code> Namespace</a></li> <li><a href=../nlohmann_json_namespace/ ><code>NLOHMANN_JSON_NAMESPACE</code></a></li> <li><a href=../nlohmann_json_namespace_begin/ ><code>NLOHMANN_JSON_NAMESPACE_BEGIN, NLOHMANN_JSON_NAMESPACE_END</code></a></li> </ul> <h2 id=version-history>Version history<a class=headerlink href=#version-history title="Permanent link">&para;</a></h2> <ul> <li>Added in version 3.11.2.</li> </ul> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 23, 2026 11:16:18 UTC">June 23, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
+</code></pre></div> </details> <h2 id=see-also>See also<a class=headerlink href=#see-also title="Permanent link">&para;</a></h2> <ul> <li><a href=../../../features/namespace/ ><code>nlohmann</code> Namespace</a></li> <li><a href=../nlohmann_json_namespace/ ><code>NLOHMANN_JSON_NAMESPACE</code></a></li> <li><a href=../nlohmann_json_namespace_begin/ ><code>NLOHMANN_JSON_NAMESPACE_BEGIN, NLOHMANN_JSON_NAMESPACE_END</code></a></li> </ul> <h2 id=version-history>Version history<a class=headerlink href=#version-history title="Permanent link">&para;</a></h2> <ul> <li>Added in version 3.11.2.</li> </ul> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 29, 2026 20:15:18 UTC">June 29, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
diff --git a/api/macros/nlohmann_json_serialize_enum/index.html b/api/macros/nlohmann_json_serialize_enum/index.html
index dd369d1..6616f71 100644
--- a/api/macros/nlohmann_json_serialize_enum/index.html
+++ b/api/macros/nlohmann_json_serialize_enum/index.html
@@ -101,4 +101,4 @@
 </code></pre></div> <p>Output:</p> <div class=highlight><pre><span></span><code><span class=mi>0</span><span class=w> </span><span class=mi>-</span><span class=err>&gt;</span><span class=w> </span><span class=s2>&quot;red&quot;</span>
 <span class=s2>&quot;rot&quot;</span><span class=w> </span><span class=mi>-</span><span class=err>&gt;</span><span class=w> </span><span class=mi>0</span>
 <span class=s2>&quot;red&quot;</span><span class=w> </span><span class=mi>-</span><span class=err>&gt;</span><span class=w> </span><span class=mi>0</span>
-</code></pre></div> </details> <h2 id=see-also>See also<a class=headerlink href=#see-also title="Permanent link">&para;</a></h2> <ul> <li><a href=../../../features/enum_conversion/ >Specializing enum conversion</a></li> <li><a href=../nlohmann_json_serialize_enum_strict/ ><code>NLOHMANN_JSON_SERIALIZE_ENUM_STRICT</code></a></li> <li><a href=../json_disable_enum_serialization/ ><code>JSON_DISABLE_ENUM_SERIALIZATION</code></a></li> </ul> <h2 id=version-history>Version history<a class=headerlink href=#version-history title="Permanent link">&para;</a></h2> <p>Added in version 3.4.0.</p> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 23, 2026 11:16:18 UTC">June 23, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
+</code></pre></div> </details> <h2 id=see-also>See also<a class=headerlink href=#see-also title="Permanent link">&para;</a></h2> <ul> <li><a href=../../../features/enum_conversion/ >Specializing enum conversion</a></li> <li><a href=../nlohmann_json_serialize_enum_strict/ ><code>NLOHMANN_JSON_SERIALIZE_ENUM_STRICT</code></a></li> <li><a href=../json_disable_enum_serialization/ ><code>JSON_DISABLE_ENUM_SERIALIZATION</code></a></li> </ul> <h2 id=version-history>Version history<a class=headerlink href=#version-history title="Permanent link">&para;</a></h2> <p>Added in version 3.4.0.</p> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 29, 2026 20:15:18 UTC">June 29, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
diff --git a/api/macros/nlohmann_json_serialize_enum_strict/index.html b/api/macros/nlohmann_json_serialize_enum_strict/index.html
index 149c6f2..96da43a 100644
--- a/api/macros/nlohmann_json_serialize_enum_strict/index.html
+++ b/api/macros/nlohmann_json_serialize_enum_strict/index.html
@@ -3,7 +3,7 @@
 <span class=kr>inline</span><span class=w> </span><span class=kt>void</span><span class=w> </span><span class=n>to_json</span><span class=p>(</span><span class=n>BasicJsonType</span><span class=o>&amp;</span><span class=w> </span><span class=n>j</span><span class=p>,</span><span class=w> </span><span class=k>const</span><span class=w> </span><span class=n>type</span><span class=o>&amp;</span><span class=w> </span><span class=n>e</span><span class=p>);</span>
 <span class=k>template</span><span class=o>&lt;</span><span class=k>typename</span><span class=w> </span><span class=nc>BasicJsonType</span><span class=o>&gt;</span>
 <span class=kr>inline</span><span class=w> </span><span class=kt>void</span><span class=w> </span><span class=n>from_json</span><span class=p>(</span><span class=k>const</span><span class=w> </span><span class=n>BasicJsonType</span><span class=o>&amp;</span><span class=w> </span><span class=n>j</span><span class=p>,</span><span class=w> </span><span class=n>type</span><span class=o>&amp;</span><span class=w> </span><span class=n>e</span><span class=p>);</span>
-</code></pre></div> <h2 id=notes>Notes<a class=headerlink href=#notes title="Permanent link">&para;</a></h2> <div class="admonition info"> <p class=admonition-title>Prerequisites</p> <p>The macro must be used inside the namespace of the enum.</p> </div> <div class="admonition important"> <p class=admonition-title>Important notes</p> <ul> <li>When using <a href=../../basic_json/get/ ><code>get&lt;ENUM_TYPE&gt;()</code></a>, undefined <abbr title="JavaScript Object Notation">JSON</abbr> values will throw an exception.</li> <li>If an enum or <abbr title="JavaScript Object Notation">JSON</abbr> value is specified in multiple conversions, the first matching conversion from the top of the list will be returned when converting to or from <abbr title="JavaScript Object Notation">JSON</abbr>. See example 2 below.</li> </ul> </div> <h2 id=examples>Examples<a class=headerlink href=#examples title="Permanent link">&para;</a></h2> <details class=example> <summary>Example 1: Basic usage</summary> <p>The example shows how <code>NLOHMANN_JSON_SERIALIZE_ENUM_STRICT</code> can be used to serialize/deserialize both classical enums and C++11 enum classes:</p> <div class=highlight><pre><span></span><code><span class=cp>#include</span><span class=w> </span><span class=cpf>&lt;iostream&gt;</span>
+</code></pre></div> <h2 id=notes>Notes<a class=headerlink href=#notes title="Permanent link">&para;</a></h2> <div class="admonition info"> <p class=admonition-title>Prerequisites</p> <p>The macro must be used inside the namespace of the enum.</p> </div> <div class="admonition important"> <p class=admonition-title>Important notes</p> <ul> <li>Undefined input throws <a href=../../../home/exceptions/#jsonexceptionout_of_range410><code>out_of_range.410</code></a> in both directions: when serializing an enum value not listed in the conversions, and when deserializing (e.g., via <a href=../../basic_json/get/ ><code>get&lt;ENUM_TYPE&gt;()</code></a>) a <abbr title="JavaScript Object Notation">JSON</abbr> value that matches no conversion; example: <code>"enum value out of range for &lt;type&gt;"</code>.</li> <li>If an enum or <abbr title="JavaScript Object Notation">JSON</abbr> value is specified in multiple conversions, the first matching conversion from the top of the list will be returned when converting to or from <abbr title="JavaScript Object Notation">JSON</abbr>. See example 2 below.</li> </ul> </div> <h2 id=examples>Examples<a class=headerlink href=#examples title="Permanent link">&para;</a></h2> <details class=example> <summary>Example 1: Basic usage</summary> <p>The example shows how <code>NLOHMANN_JSON_SERIALIZE_ENUM_STRICT</code> can be used to serialize/deserialize both classical enums and C++11 enum classes:</p> <div class=highlight><pre><span></span><code><span class=cp>#include</span><span class=w> </span><span class=cpf>&lt;iostream&gt;</span>
 <span class=cp>#include</span><span class=w> </span><span class=cpf>&lt;nlohmann/json.hpp&gt;</span>
 
 <span class=k>using</span><span class=w> </span><span class=n>json</span><span class=w> </span><span class=o>=</span><span class=w> </span><span class=n>nlohmann</span><span class=o>::</span><span class=n>json</span><span class=p>;</span>
@@ -148,4 +148,4 @@
 <span class=p>}</span>
 </code></pre></div> <p>Output: <div class=highlight><pre><span></span><code><span class=err>deserializa</span><span class=kc>t</span><span class=err>io</span><span class=kc>n</span><span class=w> </span><span class=kc>fa</span><span class=err>iled</span><span class=p>:</span><span class=w> </span><span class=p>[</span><span class=err>jso</span><span class=kc>n</span><span class=err>.excep</span><span class=kc>t</span><span class=err>io</span><span class=kc>n</span><span class=err>.ou</span><span class=kc>t</span><span class=err>_o</span><span class=kc>f</span><span class=err>_ra</span><span class=kc>n</span><span class=err>ge.</span><span class=mi>410</span><span class=p>]</span><span class=w> </span><span class=err>e</span><span class=kc>nu</span><span class=err>m</span><span class=w> </span><span class=err>value</span><span class=w> </span><span class=err>ou</span><span class=kc>t</span><span class=w> </span><span class=err>o</span><span class=kc>f</span><span class=w> </span><span class=err>ra</span><span class=kc>n</span><span class=err>ge</span><span class=w> </span><span class=kc>f</span><span class=err>or</span><span class=w> </span><span class=err>Color</span>
 <span class=err>deserializa</span><span class=kc>t</span><span class=err>io</span><span class=kc>n</span><span class=w> </span><span class=kc>fa</span><span class=err>iled</span><span class=p>:</span><span class=w> </span><span class=p>[</span><span class=err>jso</span><span class=kc>n</span><span class=err>.excep</span><span class=kc>t</span><span class=err>io</span><span class=kc>n</span><span class=err>.ou</span><span class=kc>t</span><span class=err>_o</span><span class=kc>f</span><span class=err>_ra</span><span class=kc>n</span><span class=err>ge.</span><span class=mi>410</span><span class=p>]</span><span class=w> </span><span class=err>e</span><span class=kc>nu</span><span class=err>m</span><span class=w> </span><span class=err>value</span><span class=w> </span><span class=err>ou</span><span class=kc>t</span><span class=w> </span><span class=err>o</span><span class=kc>f</span><span class=w> </span><span class=err>ra</span><span class=kc>n</span><span class=err>ge</span><span class=w> </span><span class=kc>f</span><span class=err>or</span><span class=w> </span><span class=err>Color</span><span class=p>:</span><span class=w> </span><span class=s2>&quot;what&quot;</span>
-</code></pre></div></p> </details> <h2 id=see-also>See also<a class=headerlink href=#see-also title="Permanent link">&para;</a></h2> <ul> <li><a href=../../../features/enum_conversion/ >Specializing enum conversion</a></li> <li><a href=../nlohmann_json_serialize_enum/ ><code>NLOHMANN_JSON_SERIALIZE_ENUM</code></a></li> <li><a href=../json_disable_enum_serialization/ ><code>JSON_DISABLE_ENUM_SERIALIZATION</code></a></li> </ul> <h2 id=version-history>Version history<a class=headerlink href=#version-history title="Permanent link">&para;</a></h2> <p>Added in version 3.12.0.</p> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 23, 2026 11:16:18 UTC">June 23, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
+</code></pre></div></p> </details> <h2 id=see-also>See also<a class=headerlink href=#see-also title="Permanent link">&para;</a></h2> <ul> <li><a href=../../../features/enum_conversion/ >Specializing enum conversion</a></li> <li><a href=../nlohmann_json_serialize_enum/ ><code>NLOHMANN_JSON_SERIALIZE_ENUM</code></a></li> <li><a href=../json_disable_enum_serialization/ ><code>JSON_DISABLE_ENUM_SERIALIZATION</code></a></li> </ul> <h2 id=version-history>Version history<a class=headerlink href=#version-history title="Permanent link">&para;</a></h2> <p>Added in version 3.12.x.</p> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 29, 2026 20:15:18 UTC">June 29, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
diff --git a/api/macros/nlohmann_json_version_major/index.html b/api/macros/nlohmann_json_version_major/index.html
index c984c52..19f37ea 100644
--- a/api/macros/nlohmann_json_version_major/index.html
+++ b/api/macros/nlohmann_json_version_major/index.html
@@ -14,4 +14,4 @@
 <span class=w>              </span><span class=o>&lt;&lt;</span><span class=w> </span><span class=n>NLOHMANN_JSON_VERSION_PATCH</span><span class=w> </span><span class=o>&lt;&lt;</span><span class=w> </span><span class=n>std</span><span class=o>::</span><span class=n>endl</span><span class=p>;</span>
 <span class=p>}</span>
 </code></pre></div> <p>Output:</p> <div class=highlight><pre><span></span><code><span class=err>JSON</span><span class=w> </span><span class=kc>f</span><span class=err>or</span><span class=w> </span><span class=err>Moder</span><span class=kc>n</span><span class=w> </span><span class=err>C++</span><span class=w> </span><span class=err>versio</span><span class=kc>n</span><span class=w> </span><span class=mf>3.12.0</span>
-</code></pre></div> </details> <h2 id=see-also>See also<a class=headerlink href=#see-also title="Permanent link">&para;</a></h2> <ul> <li><a href=../../basic_json/meta/ >meta</a> - returns version information on the library</li> <li><a href=../json_skip_library_version_check/ >JSON_SKIP_LIBRARY_VERSION_CHECK</a> - skip library version check</li> </ul> <h2 id=version-history>Version history<a class=headerlink href=#version-history title="Permanent link">&para;</a></h2> <ul> <li>Added in version 3.1.0.</li> </ul> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 23, 2026 11:16:18 UTC">June 23, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
+</code></pre></div> </details> <h2 id=see-also>See also<a class=headerlink href=#see-also title="Permanent link">&para;</a></h2> <ul> <li><a href=../../basic_json/meta/ >meta</a> - returns version information on the library</li> <li><a href=../json_skip_library_version_check/ >JSON_SKIP_LIBRARY_VERSION_CHECK</a> - skip library version check</li> </ul> <h2 id=version-history>Version history<a class=headerlink href=#version-history title="Permanent link">&para;</a></h2> <ul> <li>Added in version 3.1.0.</li> </ul> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 29, 2026 20:15:18 UTC">June 29, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
diff --git a/api/operator_gtgt/index.html b/api/operator_gtgt/index.html
index aa1305e..dc6cb66 100644
--- a/api/operator_gtgt/index.html
+++ b/api/operator_gtgt/index.html
@@ -1,5 +1,5 @@
 <!doctype html><html lang=en class=no-js> <head><meta charset=utf-8><meta name=viewport content="width=device-width,initial-scale=1"><meta name=author content="Niels Lohmann"><link href="https://json.nlohmann.me/api/operator_gtgt/" rel="canonical"><link href=../operator_ltlt/ rel=prev><link href=../operator_literal_json/ rel=next><link rel=icon href=../../assets/images/favicon.png><meta name=generator content="mkdocs-1.6.1, mkdocs-material-9.7.6"><title>operator>>(basic_json) - JSON for Modern C++</title><link rel=stylesheet href=../../assets/stylesheets/main.484c7ddc.min.css><link rel=stylesheet href=../../assets/stylesheets/palette.ab4e12ef.min.css><link rel="stylesheet" href="../../assets/external/fonts.googleapis.com/css.61a430c9.css"><style>:root{--md-text-font:"Roboto";--md-code-font:"JetBrains Mono"}</style><link rel=stylesheet href=../../css/custom.css><script>__md_scope=new URL("../..",location),__md_hash=e=>[...e].reduce(((e,_)=>(e<<5)-e+_.charCodeAt(0)),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script></head> <body dir=ltr data-md-color-scheme=default data-md-color-primary=indigo data-md-color-accent=indigo> <input class=md-toggle data-md-toggle=drawer type=checkbox id=__drawer autocomplete=off> <input class=md-toggle data-md-toggle=search type=checkbox id=__search autocomplete=off> <label class=md-overlay for=__drawer></label> <div data-md-component=skip> <a href=#nlohmannoperatorbasic_json class=md-skip> Skip to content </a> </div> <div data-md-component=announce> </div> <header class=md-header data-md-component=header> <nav class="md-header__inner md-grid" aria-label=Header> <a href=../.. title="JSON for Modern C++" class="md-header__button md-logo" aria-label="JSON for Modern C++" data-md-component=logo> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54"/></svg> </a> <label class="md-header__button md-icon" for=__drawer> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M3 6h18v2H3zm0 5h18v2H3zm0 5h18v2H3z"/></svg> </label> <div class=md-header__title data-md-component=header-title> <div class=md-header__ellipsis> <div class=md-header__topic> <span class=md-ellipsis> JSON for Modern C++ </span> </div> <div class=md-header__topic data-md-component=header-topic> <span class=md-ellipsis> operator>>(basic_json) </span> </div> </div> </div> <form class=md-header__option data-md-component=palette> <input class=md-option data-md-color-media="(prefers-color-scheme: light)" data-md-color-scheme=default data-md-color-primary=indigo data-md-color-accent=indigo aria-label="Switch to dark mode" type=radio name=__palette id=__palette_0> <label class="md-header__button md-icon" title="Switch to dark mode" for=__palette_1 hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a4 4 0 0 0-4 4 4 4 0 0 0 4 4 4 4 0 0 0 4-4 4 4 0 0 0-4-4m0 10a6 6 0 0 1-6-6 6 6 0 0 1 6-6 6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12z"/></svg> </label> <input class=md-option data-md-color-media="(prefers-color-scheme: dark)" data-md-color-scheme=slate data-md-color-primary=indigo data-md-color-accent=indigo aria-label="Switch to light mode" type=radio name=__palette id=__palette_1> <label class="md-header__button md-icon" title="Switch to light mode" for=__palette_0 hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 18c-.89 0-1.74-.2-2.5-.55C11.56 16.5 13 14.42 13 12s-1.44-4.5-3.5-5.45C10.26 6.2 11.11 6 12 6a6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12z"/></svg> </label> </form> <script>var palette=__md_get("__palette");if(palette&&palette.color){if("(prefers-color-scheme)"===palette.color.media){var media=matchMedia("(prefers-color-scheme: light)"),input=document.querySelector(media.matches?"[data-md-color-media='(prefers-color-scheme: light)']":"[data-md-color-media='(prefers-color-scheme: dark)']");palette.color.media=input.getAttribute("data-md-color-media"),palette.color.scheme=input.getAttribute("data-md-color-scheme"),palette.color.primary=input.getAttribute("data-md-color-primary"),palette.color.accent=input.getAttribute("data-md-color-accent")}for(var[key,value]of Object.entries(palette.color))document.body.setAttribute("data-md-color-"+key,value)}</script> <label class="md-header__button md-icon" for=__search> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg> </label> <div class=md-search data-md-component=search role=dialog> <label class=md-search__overlay for=__search></label> <div class=md-search__inner role=search> <form class=md-search__form name=search> <input type=text class=md-search__input name=query aria-label=Search placeholder=Search autocapitalize=off autocorrect=off autocomplete=off spellcheck=false data-md-component=search-query required> <label class="md-search__icon md-icon" for=__search> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11z"/></svg> </label> <nav class=md-search__options aria-label=Search> <button type=reset class="md-search__icon md-icon" title=Clear aria-label=Clear tabindex=-1> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z"/></svg> </button> </nav> </form> <div class=md-search__output> <div class=md-search__scrollwrap tabindex=0 data-md-scrollfix> <div class=md-search-result data-md-component=search-result> <div class=md-search-result__meta> Initializing search </div> <ol class=md-search-result__list role=presentation></ol> </div> </div> </div> </div> </div> <div class=md-header__source> <a href="https://github.com/nlohmann/json" title="Go to repository" class="md-source" data-md-component="source"> <div class="md-source__icon md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </div> <div class=md-source__repository> nlohmann/json </div> </a> </div> </nav> </header> <div class=md-container data-md-component=container> <nav class=md-tabs aria-label=Tabs data-md-component=tabs> <div class=md-grid> <ul class=md-tabs__list> <li class=md-tabs__item> <a href=../.. class=md-tabs__link> Home </a> </li> <li class=md-tabs__item> <a href=../../features/arbitrary_types/ class=md-tabs__link> Features </a> </li> <li class=md-tabs__item> <a href=../../integration/ class=md-tabs__link> Integration </a> </li> <li class="md-tabs__item md-tabs__item--active"> <a href=../basic_json/ class=md-tabs__link> API Documentation </a> </li> <li class=md-tabs__item> <a href=../../community/ class=md-tabs__link> Community </a> </li> </ul> </div> </nav> <main class=md-main data-md-component=main> <div class="md-main__inner md-grid"> <div class="md-sidebar md-sidebar--primary" data-md-component=sidebar data-md-type=navigation> <div class=md-sidebar__scrollwrap> <div class=md-sidebar__inner> <nav class="md-nav md-nav--primary md-nav--lifted" aria-label=Navigation data-md-level=0> <label class=md-nav__title for=__drawer> <a href=../.. title="JSON for Modern C++" class="md-nav__button md-logo" aria-label="JSON for Modern C++" data-md-component=logo> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54"/></svg> </a> JSON for Modern C++ </label> <div class=md-nav__source> <a href="https://github.com/nlohmann/json" title="Go to repository" class="md-source" data-md-component="source"> <div class="md-source__icon md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </div> <div class=md-source__repository> nlohmann/json </div> </a> </div> <ul class=md-nav__list data-md-scrollfix> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_1> <div class="md-nav__link md-nav__container"> <a href=../.. class="md-nav__link "> <span class=md-ellipsis> Home </span> </a> <label class="md-nav__link " for=__nav_1 id=__nav_1_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_1_label aria-expanded=false> <label class=md-nav__title for=__nav_1> <span class="md-nav__icon md-icon"></span> Home </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../home/license/ class=md-nav__link> <span class=md-ellipsis> License </span> </a> </li> <li class=md-nav__item> <a href=../../home/faq/ class=md-nav__link> <span class=md-ellipsis> FAQ </span> </a> </li> <li class=md-nav__item> <a href=../../home/exceptions/ class=md-nav__link> <span class=md-ellipsis> Exceptions </span> </a> </li> <li class=md-nav__item> <a href=../../home/releases/ class=md-nav__link> <span class=md-ellipsis> Releases </span> </a> </li> <li class=md-nav__item> <a href=../../home/design_goals/ class=md-nav__link> <span class=md-ellipsis> Design goals </span> </a> </li> <li class=md-nav__item> <a href=../../home/architecture/ class=md-nav__link> <span class=md-ellipsis> Architecture </span> </a> </li> <li class=md-nav__item> <a href=../../home/customers/ class=md-nav__link> <span class=md-ellipsis> Customers </span> </a> </li> <li class=md-nav__item> <a href=../../home/sponsors/ class=md-nav__link> <span class=md-ellipsis> Sponsors </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2> <label class=md-nav__link for=__nav_2 id=__nav_2_label tabindex=0> <span class=md-ellipsis> Features </span> <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_2_label aria-expanded=false> <label class=md-nav__title for=__nav_2> <span class="md-nav__icon md-icon"></span> Features </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../features/arbitrary_types/ class=md-nav__link> <span class=md-ellipsis> Arbitrary Type Conversions </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_2> <div class="md-nav__link md-nav__container"> <a href=../../features/binary_formats/ class="md-nav__link "> <span class=md-ellipsis> Binary Formats </span> </a> <label class="md-nav__link " for=__nav_2_2 id=__nav_2_2_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_2_label aria-expanded=false> <label class=md-nav__title for=__nav_2_2> <span class="md-nav__icon md-icon"></span> Binary Formats </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../features/binary_formats/bjdata/ class=md-nav__link> <span class=md-ellipsis> BJData </span> </a> </li> <li class=md-nav__item> <a href=../../features/binary_formats/bson/ class=md-nav__link> <span class=md-ellipsis> BSON </span> </a> </li> <li class=md-nav__item> <a href=../../features/binary_formats/cbor/ class=md-nav__link> <span class=md-ellipsis> CBOR </span> </a> </li> <li class=md-nav__item> <a href=../../features/binary_formats/messagepack/ class=md-nav__link> <span class=md-ellipsis> MessagePack </span> </a> </li> <li class=md-nav__item> <a href=../../features/binary_formats/ubjson/ class=md-nav__link> <span class=md-ellipsis> UBJSON </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../features/binary_values/ class=md-nav__link> <span class=md-ellipsis> Binary Values </span> </a> </li> <li class=md-nav__item> <a href=../../features/comments/ class=md-nav__link> <span class=md-ellipsis> Comments </span> </a> </li> <li class=md-nav__item> <a href=../../features/trailing_commas/ class=md-nav__link> <span class=md-ellipsis> Trailing Commas </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_6> <div class="md-nav__link md-nav__container"> <a href=../../features/element_access/ class="md-nav__link "> <span class=md-ellipsis> Element Access </span> </a> <label class="md-nav__link " for=__nav_2_6 id=__nav_2_6_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_6_label aria-expanded=false> <label class=md-nav__title for=__nav_2_6> <span class="md-nav__icon md-icon"></span> Element Access </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../features/element_access/unchecked_access/ class=md-nav__link> <span class=md-ellipsis> Unchecked access: operator[] </span> </a> </li> <li class=md-nav__item> <a href=../../features/element_access/checked_access/ class=md-nav__link> <span class=md-ellipsis> Checked access: at </span> </a> </li> <li class=md-nav__item> <a href=../../features/element_access/default_value/ class=md-nav__link> <span class=md-ellipsis> Access with default value: value </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../features/iterators/ class=md-nav__link> <span class=md-ellipsis> Iterators </span> </a> </li> <li class=md-nav__item> <a href=../../features/json_pointer/ class=md-nav__link> <span class=md-ellipsis> JSON Pointer </span> </a> </li> <li class=md-nav__item> <a href=../../features/json_patch/ class=md-nav__link> <span class=md-ellipsis> JSON Patch and Diff </span> </a> </li> <li class=md-nav__item> <a href=../../features/merge_patch/ class=md-nav__link> <span class=md-ellipsis> JSON Merge Patch </span> </a> </li> <li class=md-nav__item> <a href=../../features/modules/ class=md-nav__link> <span class=md-ellipsis> Modules </span> </a> </li> <li class=md-nav__item> <a href=../../features/namespace/ class=md-nav__link> <span class=md-ellipsis> nlohmann Namespace </span> </a> </li> <li class=md-nav__item> <a href=../../features/object_order/ class=md-nav__link> <span class=md-ellipsis> Object Order </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_14> <div class="md-nav__link md-nav__container"> <a href=../../features/parsing/ class="md-nav__link "> <span class=md-ellipsis> Parsing </span> </a> <label class="md-nav__link " for=__nav_2_14 id=__nav_2_14_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_14_label aria-expanded=false> <label class=md-nav__title for=__nav_2_14> <span class="md-nav__icon md-icon"></span> Parsing </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../features/parsing/json_lines/ class=md-nav__link> <span class=md-ellipsis> JSON Lines </span> </a> </li> <li class=md-nav__item> <a href=../../features/parsing/parse_exceptions/ class=md-nav__link> <span class=md-ellipsis> Parsing and Exceptions </span> </a> </li> <li class=md-nav__item> <a href=../../features/parsing/parser_callbacks/ class=md-nav__link> <span class=md-ellipsis> Parser Callbacks </span> </a> </li> <li class=md-nav__item> <a href=../../features/parsing/sax_interface/ class=md-nav__link> <span class=md-ellipsis> SAX Interface </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../features/assertions/ class=md-nav__link> <span class=md-ellipsis> Runtime Assertions </span> </a> </li> <li class=md-nav__item> <a href=../../features/enum_conversion/ class=md-nav__link> <span class=md-ellipsis> Specializing enum conversion </span> </a> </li> <li class=md-nav__item> <a href=../../features/macros/ class=md-nav__link> <span class=md-ellipsis> Supported Macros </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_18> <div class="md-nav__link md-nav__container"> <a href=../../features/types/ class="md-nav__link "> <span class=md-ellipsis> Types </span> </a> <label class="md-nav__link " for=__nav_2_18 id=__nav_2_18_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_18_label aria-expanded=false> <label class=md-nav__title for=__nav_2_18> <span class="md-nav__icon md-icon"></span> Types </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../features/types/number_handling/ class=md-nav__link> <span class=md-ellipsis> Number Handling </span> </a> </li> </ul> </nav> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_3> <div class="md-nav__link md-nav__container"> <a href=../../integration/ class="md-nav__link "> <span class=md-ellipsis> Integration </span> </a> <label class="md-nav__link " for=__nav_3 id=__nav_3_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_3_label aria-expanded=false> <label class=md-nav__title for=__nav_3> <span class="md-nav__icon md-icon"></span> Integration </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../integration/migration_guide/ class=md-nav__link> <span class=md-ellipsis> Migration Guide </span> </a> </li> <li class=md-nav__item> <a href=../../integration/cmake/ class=md-nav__link> <span class=md-ellipsis> CMake </span> </a> </li> <li class=md-nav__item> <a href=../../integration/package_managers/ class=md-nav__link> <span class=md-ellipsis> Package Managers </span> </a> </li> <li class=md-nav__item> <a href=../../integration/pkg-config/ class=md-nav__link> <span class=md-ellipsis> Pkg-config </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--active md-nav__item--section md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4 checked> <label class=md-nav__link for=__nav_4 id=__nav_4_label tabindex> <span class=md-ellipsis> API Documentation </span> <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_4_label aria-expanded=true> <label class=md-nav__title for=__nav_4> <span class="md-nav__icon md-icon"></span> API Documentation </label> <ul class=md-nav__list data-md-scrollfix> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_1> <div class="md-nav__link md-nav__container"> <a href=../basic_json/ class="md-nav__link "> <span class=md-ellipsis> basic_json </span> </a> <label class="md-nav__link " for=__nav_4_1 id=__nav_4_1_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_1_label aria-expanded=false> <label class=md-nav__title for=__nav_4_1> <span class="md-nav__icon md-icon"></span> basic_json </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../basic_json/basic_json/ class=md-nav__link> <span class=md-ellipsis> (Constructor) </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/~basic_json/ class=md-nav__link> <span class=md-ellipsis> (Destructor) </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/accept/ class=md-nav__link> <span class=md-ellipsis> accept </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/array/ class=md-nav__link> <span class=md-ellipsis> array </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/array_t/ class=md-nav__link> <span class=md-ellipsis> array_t </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/at/ class=md-nav__link> <span class=md-ellipsis> at </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/back/ class=md-nav__link> <span class=md-ellipsis> back </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/begin/ class=md-nav__link> <span class=md-ellipsis> begin </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/binary/ class=md-nav__link> <span class=md-ellipsis> binary </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/binary_t/ class=md-nav__link> <span class=md-ellipsis> binary_t </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/boolean_t/ class=md-nav__link> <span class=md-ellipsis> boolean_t </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/cbegin/ class=md-nav__link> <span class=md-ellipsis> cbegin </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/cbor_tag_handler_t/ class=md-nav__link> <span class=md-ellipsis> cbor_tag_handler_t </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/cend/ class=md-nav__link> <span class=md-ellipsis> cend </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/clear/ class=md-nav__link> <span class=md-ellipsis> clear </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/contains/ class=md-nav__link> <span class=md-ellipsis> contains </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/count/ class=md-nav__link> <span class=md-ellipsis> count </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/crbegin/ class=md-nav__link> <span class=md-ellipsis> crbegin </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/crend/ class=md-nav__link> <span class=md-ellipsis> crend </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/default_object_comparator_t/ class=md-nav__link> <span class=md-ellipsis> default_object_comparator_t </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/diff/ class=md-nav__link> <span class=md-ellipsis> diff </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/dump/ class=md-nav__link> <span class=md-ellipsis> dump </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/emplace/ class=md-nav__link> <span class=md-ellipsis> emplace </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/emplace_back/ class=md-nav__link> <span class=md-ellipsis> emplace_back </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/empty/ class=md-nav__link> <span class=md-ellipsis> empty </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/end/ class=md-nav__link> <span class=md-ellipsis> end </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/end_pos/ class=md-nav__link> <span class=md-ellipsis> end_pos </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/erase/ class=md-nav__link> <span class=md-ellipsis> erase </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/error_handler_t/ class=md-nav__link> <span class=md-ellipsis> error_handler_t </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/exception/ class=md-nav__link> <span class=md-ellipsis> exception </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/find/ class=md-nav__link> <span class=md-ellipsis> find </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/flatten/ class=md-nav__link> <span class=md-ellipsis> flatten </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/from_bjdata/ class=md-nav__link> <span class=md-ellipsis> from_bjdata </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/from_bson/ class=md-nav__link> <span class=md-ellipsis> from_bson </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/from_cbor/ class=md-nav__link> <span class=md-ellipsis> from_cbor </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/from_msgpack/ class=md-nav__link> <span class=md-ellipsis> from_msgpack </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/from_ubjson/ class=md-nav__link> <span class=md-ellipsis> from_ubjson </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/front/ class=md-nav__link> <span class=md-ellipsis> front </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/get/ class=md-nav__link> <span class=md-ellipsis> get </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/get_allocator/ class=md-nav__link> <span class=md-ellipsis> get_allocator </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/get_binary/ class=md-nav__link> <span class=md-ellipsis> get_binary </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/get_ptr/ class=md-nav__link> <span class=md-ellipsis> get_ptr </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/get_ref/ class=md-nav__link> <span class=md-ellipsis> get_ref </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/get_to/ class=md-nav__link> <span class=md-ellipsis> get_to </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/std_hash/ class=md-nav__link> <span class=md-ellipsis> std::hash&lt;basic_json&gt; </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/input_format_t/ class=md-nav__link> <span class=md-ellipsis> input_format_t </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/insert/ class=md-nav__link> <span class=md-ellipsis> insert </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/invalid_iterator/ class=md-nav__link> <span class=md-ellipsis> invalid_iterator </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/is_array/ class=md-nav__link> <span class=md-ellipsis> is_array </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/is_binary/ class=md-nav__link> <span class=md-ellipsis> is_binary </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/is_boolean/ class=md-nav__link> <span class=md-ellipsis> is_boolean </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/is_discarded/ class=md-nav__link> <span class=md-ellipsis> is_discarded </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/is_null/ class=md-nav__link> <span class=md-ellipsis> is_null </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/is_number/ class=md-nav__link> <span class=md-ellipsis> is_number </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/is_number_float/ class=md-nav__link> <span class=md-ellipsis> is_number_float </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/is_number_integer/ class=md-nav__link> <span class=md-ellipsis> is_number_integer </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/is_number_unsigned/ class=md-nav__link> <span class=md-ellipsis> is_number_unsigned </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/is_object/ class=md-nav__link> <span class=md-ellipsis> is_object </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/is_primitive/ class=md-nav__link> <span class=md-ellipsis> is_primitive </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/is_string/ class=md-nav__link> <span class=md-ellipsis> is_string </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/is_structured/ class=md-nav__link> <span class=md-ellipsis> is_structured </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/items/ class=md-nav__link> <span class=md-ellipsis> items </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/json_base_class_t/ class=md-nav__link> <span class=md-ellipsis> json_base_class_t </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/json_serializer/ class=md-nav__link> <span class=md-ellipsis> json_serializer </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/max_size/ class=md-nav__link> <span class=md-ellipsis> max_size </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/meta/ class=md-nav__link> <span class=md-ellipsis> meta </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/merge_patch/ class=md-nav__link> <span class=md-ellipsis> merge_patch </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/number_float_t/ class=md-nav__link> <span class=md-ellipsis> number_float_t </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/number_integer_t/ class=md-nav__link> <span class=md-ellipsis> number_integer_t </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/number_unsigned_t/ class=md-nav__link> <span class=md-ellipsis> number_unsigned_t </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/object/ class=md-nav__link> <span class=md-ellipsis> object </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/object_comparator_t/ class=md-nav__link> <span class=md-ellipsis> object_comparator_t </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/object_t/ class=md-nav__link> <span class=md-ellipsis> object_t </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/operator_ValueType/ class=md-nav__link> <span class=md-ellipsis> operator ValueType </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/operator_value_t/ class=md-nav__link> <span class=md-ellipsis> operator value_t </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/operator%5B%5D/ class=md-nav__link> <span class=md-ellipsis> operator[] </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/operator%3D/ class=md-nav__link> <span class=md-ellipsis> operator= </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/operator%2B%3D/ class=md-nav__link> <span class=md-ellipsis> operator+= </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/operator_eq/ class=md-nav__link> <span class=md-ellipsis> operator== </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/operator_ne/ class=md-nav__link> <span class=md-ellipsis> operator!= </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/operator_lt/ class=md-nav__link> <span class=md-ellipsis> operator< </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/operator_gt/ class=md-nav__link> <span class=md-ellipsis> operator> </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/operator_le/ class=md-nav__link> <span class=md-ellipsis> operator<= </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/operator_ge/ class=md-nav__link> <span class=md-ellipsis> operator>= </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/operator_spaceship/ class=md-nav__link> <span class=md-ellipsis> operator<=> </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/out_of_range/ class=md-nav__link> <span class=md-ellipsis> out_of_range </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/other_error/ class=md-nav__link> <span class=md-ellipsis> other_error </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/parse/ class=md-nav__link> <span class=md-ellipsis> parse </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/parse_error/ class=md-nav__link> <span class=md-ellipsis> parse_error </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/parse_event_t/ class=md-nav__link> <span class=md-ellipsis> parse_event_t </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/parser_callback_t/ class=md-nav__link> <span class=md-ellipsis> parser_callback_t </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/patch/ class=md-nav__link> <span class=md-ellipsis> patch </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/patch_inplace/ class=md-nav__link> <span class=md-ellipsis> patch_inplace </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/push_back/ class=md-nav__link> <span class=md-ellipsis> push_back </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/rbegin/ class=md-nav__link> <span class=md-ellipsis> rbegin </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/rend/ class=md-nav__link> <span class=md-ellipsis> rend </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/sax_parse/ class=md-nav__link> <span class=md-ellipsis> sax_parse </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/size/ class=md-nav__link> <span class=md-ellipsis> size </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/start_pos/ class=md-nav__link> <span class=md-ellipsis> start_pos </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/string_t/ class=md-nav__link> <span class=md-ellipsis> string_t </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/swap/ class=md-nav__link> <span class=md-ellipsis> swap </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/std_swap/ class=md-nav__link> <span class=md-ellipsis> std::swap&lt;basic_json&gt; </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/to_bjdata/ class=md-nav__link> <span class=md-ellipsis> to_bjdata </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/to_bson/ class=md-nav__link> <span class=md-ellipsis> to_bson </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/to_cbor/ class=md-nav__link> <span class=md-ellipsis> to_cbor </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/to_msgpack/ class=md-nav__link> <span class=md-ellipsis> to_msgpack </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/to_string/ class=md-nav__link> <span class=md-ellipsis> to_string </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/to_ubjson/ class=md-nav__link> <span class=md-ellipsis> to_ubjson </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/type/ class=md-nav__link> <span class=md-ellipsis> type </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/type_error/ class=md-nav__link> <span class=md-ellipsis> type_error </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/type_name/ class=md-nav__link> <span class=md-ellipsis> type_name </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/unflatten/ class=md-nav__link> <span class=md-ellipsis> unflatten </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/update/ class=md-nav__link> <span class=md-ellipsis> update </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/value/ class=md-nav__link> <span class=md-ellipsis> value </span> </a> </li> <li class=md-nav__item> <a href=../basic_json/value_t/ class=md-nav__link> <span class=md-ellipsis> value_t </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_2> <div class="md-nav__link md-nav__container"> <a href=../byte_container_with_subtype/ class="md-nav__link "> <span class=md-ellipsis> byte_container_with_subtype </span> </a> <label class="md-nav__link " for=__nav_4_2 id=__nav_4_2_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_2_label aria-expanded=false> <label class=md-nav__title for=__nav_4_2> <span class="md-nav__icon md-icon"></span> byte_container_with_subtype </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../byte_container_with_subtype/byte_container_with_subtype/ class=md-nav__link> <span class=md-ellipsis> (constructor) </span> </a> </li> <li class=md-nav__item> <a href=../byte_container_with_subtype/clear_subtype/ class=md-nav__link> <span class=md-ellipsis> clear_subtype </span> </a> </li> <li class=md-nav__item> <a href=../byte_container_with_subtype/has_subtype/ class=md-nav__link> <span class=md-ellipsis> has_subtype </span> </a> </li> <li class=md-nav__item> <a href=../byte_container_with_subtype/set_subtype/ class=md-nav__link> <span class=md-ellipsis> set_subtype </span> </a> </li> <li class=md-nav__item> <a href=../byte_container_with_subtype/subtype/ class=md-nav__link> <span class=md-ellipsis> subtype </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_3> <div class="md-nav__link md-nav__container"> <a href=../adl_serializer/ class="md-nav__link "> <span class=md-ellipsis> adl_serializer </span> </a> <label class="md-nav__link " for=__nav_4_3 id=__nav_4_3_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_3_label aria-expanded=false> <label class=md-nav__title for=__nav_4_3> <span class="md-nav__icon md-icon"></span> adl_serializer </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../adl_serializer/from_json/ class=md-nav__link> <span class=md-ellipsis> from_json </span> </a> </li> <li class=md-nav__item> <a href=../adl_serializer/to_json/ class=md-nav__link> <span class=md-ellipsis> to_json </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../json/ class=md-nav__link> <span class=md-ellipsis> json </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_5> <div class="md-nav__link md-nav__container"> <a href=../json_pointer/ class="md-nav__link "> <span class=md-ellipsis> json_pointer </span> </a> <label class="md-nav__link " for=__nav_4_5 id=__nav_4_5_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_5_label aria-expanded=false> <label class=md-nav__title for=__nav_4_5> <span class="md-nav__icon md-icon"></span> json_pointer </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../json_pointer/json_pointer/ class=md-nav__link> <span class=md-ellipsis> (Constructor) </span> </a> </li> <li class=md-nav__item> <a href=../json_pointer/back/ class=md-nav__link> <span class=md-ellipsis> back </span> </a> </li> <li class=md-nav__item> <a href=../json_pointer/empty/ class=md-nav__link> <span class=md-ellipsis> empty </span> </a> </li> <li class=md-nav__item> <a href=../json_pointer/front/ class=md-nav__link> <span class=md-ellipsis> front </span> </a> </li> <li class=md-nav__item> <a href=../json_pointer/operator_string_t/ class=md-nav__link> <span class=md-ellipsis> operator string_t </span> </a> </li> <li class=md-nav__item> <a href=../json_pointer/operator_eq/ class=md-nav__link> <span class=md-ellipsis> operator== </span> </a> </li> <li class=md-nav__item> <a href=../json_pointer/operator_ne/ class=md-nav__link> <span class=md-ellipsis> operator!= </span> </a> </li> <li class=md-nav__item> <a href=../json_pointer/operator_slash/ class=md-nav__link> <span class=md-ellipsis> operator/ </span> </a> </li> <li class=md-nav__item> <a href=../json_pointer/operator_slasheq/ class=md-nav__link> <span class=md-ellipsis> operator/= </span> </a> </li> <li class=md-nav__item> <a href=../json_pointer/parent_pointer/ class=md-nav__link> <span class=md-ellipsis> parent_pointer </span> </a> </li> <li class=md-nav__item> <a href=../json_pointer/pop_back/ class=md-nav__link> <span class=md-ellipsis> pop_back </span> </a> </li> <li class=md-nav__item> <a href=../json_pointer/pop_front/ class=md-nav__link> <span class=md-ellipsis> pop_front </span> </a> </li> <li class=md-nav__item> <a href=../json_pointer/push_back/ class=md-nav__link> <span class=md-ellipsis> push_back </span> </a> </li> <li class=md-nav__item> <a href=../json_pointer/push_front/ class=md-nav__link> <span class=md-ellipsis> push_front </span> </a> </li> <li class=md-nav__item> <a href=../json_pointer/string_t/ class=md-nav__link> <span class=md-ellipsis> string_t </span> </a> </li> <li class=md-nav__item> <a href=../json_pointer/to_string/ class=md-nav__link> <span class=md-ellipsis> to_string </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_6> <div class="md-nav__link md-nav__container"> <a href=../json_sax/ class="md-nav__link "> <span class=md-ellipsis> json_sax </span> </a> <label class="md-nav__link " for=__nav_4_6 id=__nav_4_6_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_6_label aria-expanded=false> <label class=md-nav__title for=__nav_4_6> <span class="md-nav__icon md-icon"></span> json_sax </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../json_sax/binary/ class=md-nav__link> <span class=md-ellipsis> binary </span> </a> </li> <li class=md-nav__item> <a href=../json_sax/boolean/ class=md-nav__link> <span class=md-ellipsis> boolean </span> </a> </li> <li class=md-nav__item> <a href=../json_sax/end_array/ class=md-nav__link> <span class=md-ellipsis> end_array </span> </a> </li> <li class=md-nav__item> <a href=../json_sax/end_object/ class=md-nav__link> <span class=md-ellipsis> end_object </span> </a> </li> <li class=md-nav__item> <a href=../json_sax/key/ class=md-nav__link> <span class=md-ellipsis> key </span> </a> </li> <li class=md-nav__item> <a href=../json_sax/null/ class=md-nav__link> <span class=md-ellipsis> null </span> </a> </li> <li class=md-nav__item> <a href=../json_sax/number_float/ class=md-nav__link> <span class=md-ellipsis> number_float </span> </a> </li> <li class=md-nav__item> <a href=../json_sax/number_integer/ class=md-nav__link> <span class=md-ellipsis> number_integer </span> </a> </li> <li class=md-nav__item> <a href=../json_sax/number_unsigned/ class=md-nav__link> <span class=md-ellipsis> number_unsigned </span> </a> </li> <li class=md-nav__item> <a href=../json_sax/parse_error/ class=md-nav__link> <span class=md-ellipsis> parse_error </span> </a> </li> <li class=md-nav__item> <a href=../json_sax/start_array/ class=md-nav__link> <span class=md-ellipsis> start_array </span> </a> </li> <li class=md-nav__item> <a href=../json_sax/start_object/ class=md-nav__link> <span class=md-ellipsis> start_object </span> </a> </li> <li class=md-nav__item> <a href=../json_sax/string/ class=md-nav__link> <span class=md-ellipsis> string </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../operator_ltlt/ class=md-nav__link> <span class=md-ellipsis> operator<<(basic_json), operator<<(json_pointer) </span> </a> </li> <li class="md-nav__item md-nav__item--active"> <input class="md-nav__toggle md-toggle" type=checkbox id=__toc> <label class="md-nav__link md-nav__link--active" for=__toc> <span class=md-ellipsis> operator>>(basic_json) </span> <span class="md-nav__icon md-icon"></span> </label> <a href=./ class="md-nav__link md-nav__link--active"> <span class=md-ellipsis> operator>>(basic_json) </span> </a> <nav class="md-nav md-nav--secondary" aria-label="Table of contents"> <label class=md-nav__title for=__toc> <span class="md-nav__icon md-icon"></span> Table of contents </label> <ul class=md-nav__list data-md-component=toc data-md-scrollfix> <li class=md-nav__item> <a href=#parameters class=md-nav__link> <span class=md-ellipsis> Parameters </span> </a> </li> <li class=md-nav__item> <a href=#return-value class=md-nav__link> <span class=md-ellipsis> Return value </span> </a> </li> <li class=md-nav__item> <a href=#exceptions class=md-nav__link> <span class=md-ellipsis> Exceptions </span> </a> </li> <li class=md-nav__item> <a href=#complexity class=md-nav__link> <span class=md-ellipsis> Complexity </span> </a> </li> <li class=md-nav__item> <a href=#notes class=md-nav__link> <span class=md-ellipsis> Notes </span> </a> </li> <li class=md-nav__item> <a href=#examples class=md-nav__link> <span class=md-ellipsis> Examples </span> </a> </li> <li class=md-nav__item> <a href=#see-also class=md-nav__link> <span class=md-ellipsis> See also </span> </a> </li> <li class=md-nav__item> <a href=#version-history class=md-nav__link> <span class=md-ellipsis> Version history </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../operator_literal_json/ class=md-nav__link> <span class=md-ellipsis> operator""_json </span> </a> </li> <li class=md-nav__item> <a href=../operator_literal_json_pointer/ class=md-nav__link> <span class=md-ellipsis> operator""_json_pointer </span> </a> </li> <li class=md-nav__item> <a href=../ordered_json/ class=md-nav__link> <span class=md-ellipsis> ordered_json </span> </a> </li> <li class=md-nav__item> <a href=../ordered_map/ class=md-nav__link> <span class=md-ellipsis> ordered_map </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_13> <div class="md-nav__link md-nav__container"> <a href=../macros/ class="md-nav__link "> <span class=md-ellipsis> macros </span> </a> <label class="md-nav__link " for=__nav_4_13 id=__nav_4_13_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_13_label aria-expanded=false> <label class=md-nav__title for=__nav_4_13> <span class="md-nav__icon md-icon"></span> macros </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../macros/json_assert/ class=md-nav__link> <span class=md-ellipsis> JSON_ASSERT </span> </a> </li> <li class=md-nav__item> <a href=../macros/json_brace_init_copy_semantics/ class=md-nav__link> <span class=md-ellipsis> JSON_BRACE_INIT_COPY_SEMANTICS </span> </a> </li> <li class=md-nav__item> <a href=../macros/json_throw_user/ class=md-nav__link> <span class=md-ellipsis> JSON_CATCH_USER, JSON_THROW_USER, JSON_TRY_USER </span> </a> </li> <li class=md-nav__item> <a href=../macros/json_diagnostics/ class=md-nav__link> <span class=md-ellipsis> JSON_DIAGNOSTICS </span> </a> </li> <li class=md-nav__item> <a href=../macros/json_diagnostic_positions/ class=md-nav__link> <span class=md-ellipsis> JSON_DIAGNOSTIC_POSITIONS </span> </a> </li> <li class=md-nav__item> <a href=../macros/json_disable_enum_serialization/ class=md-nav__link> <span class=md-ellipsis> JSON_DISABLE_ENUM_SERIALIZATION </span> </a> </li> <li class=md-nav__item> <a href=../macros/json_has_cpp_11/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_CPP_11, JSON_HAS_CPP_14, JSON_HAS_CPP_17, JSON_HAS_CPP_20 </span> </a> </li> <li class=md-nav__item> <a href=../macros/json_has_filesystem/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_EXPERIMENTAL_FILESYSTEM, JSON_HAS_FILESYSTEM </span> </a> </li> <li class=md-nav__item> <a href=../macros/json_has_ranges/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_RANGES </span> </a> </li> <li class=md-nav__item> <a href=../macros/json_has_static_rtti/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_STATIC_RTTI </span> </a> </li> <li class=md-nav__item> <a href=../macros/json_has_three_way_comparison/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_THREE_WAY_COMPARISON </span> </a> </li> <li class=md-nav__item> <a href=../macros/json_noexception/ class=md-nav__link> <span class=md-ellipsis> JSON_NOEXCEPTION </span> </a> </li> <li class=md-nav__item> <a href=../macros/json_no_io/ class=md-nav__link> <span class=md-ellipsis> JSON_NO_IO </span> </a> </li> <li class=md-nav__item> <a href=../macros/json_skip_library_version_check/ class=md-nav__link> <span class=md-ellipsis> JSON_SKIP_LIBRARY_VERSION_CHECK </span> </a> </li> <li class=md-nav__item> <a href=../macros/json_skip_unsupported_compiler_check/ class=md-nav__link> <span class=md-ellipsis> JSON_SKIP_UNSUPPORTED_COMPILER_CHECK </span> </a> </li> <li class=md-nav__item> <a href=../macros/json_use_global_udls/ class=md-nav__link> <span class=md-ellipsis> JSON_USE_GLOBAL_UDLS </span> </a> </li> <li class=md-nav__item> <a href=../macros/json_use_implicit_conversions/ class=md-nav__link> <span class=md-ellipsis> JSON_USE_IMPLICIT_CONVERSIONS </span> </a> </li> <li class=md-nav__item> <a href=../macros/json_use_legacy_discarded_value_comparison/ class=md-nav__link> <span class=md-ellipsis> JSON_USE_LEGACY_DISCARDED_VALUE_COMPARISON </span> </a> </li> <li class=md-nav__item> <a href=../macros/nlohmann_define_derived_type/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_ONLY_SERIALIZE, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE </span> </a> </li> <li class=md-nav__item> <a href=../macros/nlohmann_define_type_intrusive/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_TYPE_INTRUSIVE, NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_TYPE_INTRUSIVE_ONLY_SERIALIZE </span> </a> </li> <li class=md-nav__item> <a href=../macros/nlohmann_define_type_non_intrusive/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE </span> </a> </li> <li class=md-nav__item> <a href=../macros/nlohmann_define_type_with_names/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_TYPE_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES </span> </a> </li> <li class=md-nav__item> <a href=../macros/nlohmann_json_namespace/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_NAMESPACE </span> </a> </li> <li class=md-nav__item> <a href=../macros/nlohmann_json_namespace_begin/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_NAMESPACE_BEGIN, NLOHMANN_JSON_NAMESPACE_END </span> </a> </li> <li class=md-nav__item> <a href=../macros/nlohmann_json_namespace_no_version/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_NAMESPACE_NO_VERSION </span> </a> </li> <li class=md-nav__item> <a href=../macros/nlohmann_json_serialize_enum/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_SERIALIZE_ENUM </span> </a> </li> <li class=md-nav__item> <a href=../macros/nlohmann_json_serialize_enum_strict/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_SERIALIZE_ENUM_STRICT </span> </a> </li> <li class=md-nav__item> <a href=../macros/nlohmann_json_version_major/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_VERSION_MAJOR, NLOHMANN_JSON_VERSION_MINOR, NLOHMANN_JSON_VERSION_PATCH </span> </a> </li> </ul> </nav> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_5> <div class="md-nav__link md-nav__container"> <a href=../../community/ class="md-nav__link "> <span class=md-ellipsis> Community </span> </a> <label class="md-nav__link " for=__nav_5 id=__nav_5_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_5_label aria-expanded=false> <label class=md-nav__title for=__nav_5> <span class="md-nav__icon md-icon"></span> Community </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../community/code_of_conduct/ class=md-nav__link> <span class=md-ellipsis> Code of Conduct </span> </a> </li> <li class=md-nav__item> <a href=../../community/contribution_guidelines/ class=md-nav__link> <span class=md-ellipsis> Contribution Guidelines </span> </a> </li> <li class=md-nav__item> <a href=../../community/quality_assurance/ class=md-nav__link> <span class=md-ellipsis> Quality assurance </span> </a> </li> <li class=md-nav__item> <a href=../../community/governance/ class=md-nav__link> <span class=md-ellipsis> Governance </span> </a> </li> <li class=md-nav__item> <a href=../../community/security_policy/ class=md-nav__link> <span class=md-ellipsis> Security Policy </span> </a> </li> </ul> </nav> </li> </ul> </nav> </div> </div> </div> <div class="md-sidebar md-sidebar--secondary" data-md-component=sidebar data-md-type=toc> <div class=md-sidebar__scrollwrap> <div class=md-sidebar__inner> <nav class="md-nav md-nav--secondary" aria-label="Table of contents"> <label class=md-nav__title for=__toc> <span class="md-nav__icon md-icon"></span> Table of contents </label> <ul class=md-nav__list data-md-component=toc data-md-scrollfix> <li class=md-nav__item> <a href=#parameters class=md-nav__link> <span class=md-ellipsis> Parameters </span> </a> </li> <li class=md-nav__item> <a href=#return-value class=md-nav__link> <span class=md-ellipsis> Return value </span> </a> </li> <li class=md-nav__item> <a href=#exceptions class=md-nav__link> <span class=md-ellipsis> Exceptions </span> </a> </li> <li class=md-nav__item> <a href=#complexity class=md-nav__link> <span class=md-ellipsis> Complexity </span> </a> </li> <li class=md-nav__item> <a href=#notes class=md-nav__link> <span class=md-ellipsis> Notes </span> </a> </li> <li class=md-nav__item> <a href=#examples class=md-nav__link> <span class=md-ellipsis> Examples </span> </a> </li> <li class=md-nav__item> <a href=#see-also class=md-nav__link> <span class=md-ellipsis> See also </span> </a> </li> <li class=md-nav__item> <a href=#version-history class=md-nav__link> <span class=md-ellipsis> Version history </span> </a> </li> </ul> </nav> </div> </div> </div> <div class=md-content data-md-component=content> <article class="md-content__inner md-typeset"> <a href="https://github.com/nlohmann/json/edit/develop/docs/mkdocs/docs/api/operator_gtgt.md" title="Edit this page" class="md-content__button md-icon" rel="edit"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M10 20H6V4h7v5h5v3.1l2-2V8l-6-6H6c-1.1 0-2 .9-2 2v16c0 1.1.9 2 2 2h4zm10.2-7c.1 0 .3.1.4.2l1.3 1.3c.2.2.2.6 0 .8l-1 1-2.1-2.1 1-1c.1-.1.2-.2.4-.2m0 3.9L14.1 23H12v-2.1l6.1-6.1z"/></svg> </a> <a href="https://github.com/nlohmann/json/raw/develop/docs/mkdocs/docs/api/operator_gtgt.md" title="View source of this page" class="md-content__button md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M17 18c.56 0 1 .44 1 1s-.44 1-1 1-1-.44-1-1 .44-1 1-1m0-3c-2.73 0-5.06 1.66-6 4 .94 2.34 3.27 4 6 4s5.06-1.66 6-4c-.94-2.34-3.27-4-6-4m0 6.5a2.5 2.5 0 0 1-2.5-2.5 2.5 2.5 0 0 1 2.5-2.5 2.5 2.5 0 0 1 2.5 2.5 2.5 2.5 0 0 1-2.5 2.5M9.27 20H6V4h7v5h5v4.07c.7.08 1.36.25 2 .49V8l-6-6H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h4.5a8.2 8.2 0 0 1-1.23-2"/></svg> </a> <h1 id=nlohmannoperatorbasic_json><small>nlohmann::</small>operator&gt;&gt;(basic_json)<a class=headerlink href=#nlohmannoperatorbasic_json title="Permanent link">&para;</a></h1> <div class=highlight><pre><span></span><code><span class=n>std</span><span class=o>::</span><span class=n>istream</span><span class=o>&amp;</span><span class=w> </span><span class=k>operator</span><span class=o>&gt;&gt;</span><span class=p>(</span><span class=n>std</span><span class=o>::</span><span class=n>istream</span><span class=o>&amp;</span><span class=w> </span><span class=n>i</span><span class=p>,</span><span class=w> </span><span class=n>basic_json</span><span class=o>&amp;</span><span class=w> </span><span class=n>j</span><span class=p>);</span>
-</code></pre></div> <p>Deserializes an input stream to a <abbr title="JavaScript Object Notation">JSON</abbr> value.</p> <h2 id=parameters>Parameters<a class=headerlink href=#parameters title="Permanent link">&para;</a></h2> <dl> <dt><code>i</code> (in, out)</dt> <dd>input stream to read a serialized <abbr title="JavaScript Object Notation">JSON</abbr> value from</dd> <dt><code>j</code> (in, out)</dt> <dd><abbr title="JavaScript Object Notation">JSON</abbr> value to write the deserialized input to</dd> </dl> <h2 id=return-value>Return value<a class=headerlink href=#return-value title="Permanent link">&para;</a></h2> <p>the stream <code>i</code></p> <h2 id=exceptions>Exceptions<a class=headerlink href=#exceptions title="Permanent link">&para;</a></h2> <ul> <li>Throws <a href=../../home/exceptions/#jsonexceptionparse_error101><code>parse_error.101</code></a> in case of an unexpected token.</li> <li>Throws <a href=../../home/exceptions/#jsonexceptionparse_error102><code>parse_error.102</code></a> if <code>to_unicode</code> fails or surrogate error.</li> <li>Throws <a href=../../home/exceptions/#jsonexceptionparse_error103><code>parse_error.103</code></a> if <code>to_unicode</code> fails.</li> </ul> <h2 id=complexity>Complexity<a class=headerlink href=#complexity title="Permanent link">&para;</a></h2> <p>Linear in the length of the input. The parser is a predictive LL(1) parser.</p> <h2 id=notes>Notes<a class=headerlink href=#notes title="Permanent link">&para;</a></h2> <p>A <abbr title="Unicode Transformation Format">UTF</abbr>-8 byte order mark is silently ignored.</p> <div class="admonition warning"> <p class=admonition-title>Deprecation</p> <p>This function replaces function <code class=highlight><span class=n>std</span><span class=o>::</span><span class=n>istream</span><span class=o>&amp;</span><span class=w> </span><span class=k>operator</span><span class=o>&lt;&lt;</span><span class=p>(</span><span class=n>basic_json</span><span class=o>&amp;</span><span class=w> </span><span class=n>j</span><span class=p>,</span><span class=w> </span><span class=n>std</span><span class=o>::</span><span class=n>istream</span><span class=o>&amp;</span><span class=w> </span><span class=n>i</span><span class=p>)</span></code> which has been deprecated in version 3.0.0. It will be removed in version 4.0.0. Please replace calls like <code class=highlight><span class=n>j</span><span class=w> </span><span class=o>&lt;&lt;</span><span class=w> </span><span class=n>i</span><span class=p>;</span></code> with <code class=highlight><span class=n>i</span><span class=w> </span><span class=o>&gt;&gt;</span><span class=w> </span><span class=n>j</span><span class=p>;</span></code>.</p> </div> <h2 id=examples>Examples<a class=headerlink href=#examples title="Permanent link">&para;</a></h2> <details class=example> <summary>Example</summary> <p>The example below shows how a <abbr title="JavaScript Object Notation">JSON</abbr> value is constructed by reading a serialization from a stream.</p> <div class=highlight><pre><span></span><code><span class=cp>#include</span><span class=w> </span><span class=cpf>&lt;iostream&gt;</span>
+</code></pre></div> <p>Deserializes an input stream to a <abbr title="JavaScript Object Notation">JSON</abbr> value.</p> <h2 id=parameters>Parameters<a class=headerlink href=#parameters title="Permanent link">&para;</a></h2> <dl> <dt><code>i</code> (in, out)</dt> <dd>input stream to read a serialized <abbr title="JavaScript Object Notation">JSON</abbr> value from</dd> <dt><code>j</code> (in, out)</dt> <dd><abbr title="JavaScript Object Notation">JSON</abbr> value to write the deserialized input to</dd> </dl> <h2 id=return-value>Return value<a class=headerlink href=#return-value title="Permanent link">&para;</a></h2> <p>the stream <code>i</code></p> <h2 id=exceptions>Exceptions<a class=headerlink href=#exceptions title="Permanent link">&para;</a></h2> <ul> <li>Throws <a href=../../home/exceptions/#jsonexceptionparse_error101><code>parse_error.101</code></a> in case of an unexpected token.</li> </ul> <h2 id=complexity>Complexity<a class=headerlink href=#complexity title="Permanent link">&para;</a></h2> <p>Linear in the length of the input. The parser is a predictive LL(1) parser.</p> <h2 id=notes>Notes<a class=headerlink href=#notes title="Permanent link">&para;</a></h2> <p>A <abbr title="Unicode Transformation Format">UTF</abbr>-8 byte order mark is silently ignored.</p> <p>Invalid Unicode escapes and unpaired surrogates in the input are reported as <a href=../../home/exceptions/#jsonexceptionparse_error101><code>parse_error.101</code></a> with a detailed message.</p> <div class="admonition warning"> <p class=admonition-title>Deprecation</p> <p>This function replaces function <code class=highlight><span class=n>std</span><span class=o>::</span><span class=n>istream</span><span class=o>&amp;</span><span class=w> </span><span class=k>operator</span><span class=o>&lt;&lt;</span><span class=p>(</span><span class=n>basic_json</span><span class=o>&amp;</span><span class=w> </span><span class=n>j</span><span class=p>,</span><span class=w> </span><span class=n>std</span><span class=o>::</span><span class=n>istream</span><span class=o>&amp;</span><span class=w> </span><span class=n>i</span><span class=p>)</span></code> which has been deprecated in version 3.0.0. It will be removed in version 4.0.0. Please replace calls like <code class=highlight><span class=n>j</span><span class=w> </span><span class=o>&lt;&lt;</span><span class=w> </span><span class=n>i</span><span class=p>;</span></code> with <code class=highlight><span class=n>i</span><span class=w> </span><span class=o>&gt;&gt;</span><span class=w> </span><span class=n>j</span><span class=p>;</span></code>.</p> </div> <h2 id=examples>Examples<a class=headerlink href=#examples title="Permanent link">&para;</a></h2> <details class=example> <summary>Example</summary> <p>The example below shows how a <abbr title="JavaScript Object Notation">JSON</abbr> value is constructed by reading a serialization from a stream.</p> <div class=highlight><pre><span></span><code><span class=cp>#include</span><span class=w> </span><span class=cpf>&lt;iostream&gt;</span>
 <span class=cp>#include</span><span class=w> </span><span class=cpf>&lt;iomanip&gt;</span>
 <span class=cp>#include</span><span class=w> </span><span class=cpf>&lt;sstream&gt;</span>
 <span class=cp>#include</span><span class=w> </span><span class=cpf>&lt;nlohmann/json.hpp&gt;</span>
@@ -38,4 +38,4 @@
 <span class=w>  </span><span class=nt>&quot;number&quot;</span><span class=p>:</span><span class=w> </span><span class=mi>23</span><span class=p>,</span>
 <span class=w>  </span><span class=nt>&quot;string&quot;</span><span class=p>:</span><span class=w> </span><span class=s2>&quot;Hello, world!&quot;</span>
 <span class=p>}</span>
-</code></pre></div> </details> <h2 id=see-also>See also<a class=headerlink href=#see-also title="Permanent link">&para;</a></h2> <ul> <li><a href=../basic_json/accept/ >accept</a> - check if the input is valid <abbr title="JavaScript Object Notation">JSON</abbr></li> <li><a href=../basic_json/parse/ >parse</a> - deserialize from a compatible input</li> </ul> <h2 id=version-history>Version history<a class=headerlink href=#version-history title="Permanent link">&para;</a></h2> <ul> <li>Added in version 1.0.0. Deprecated in version 3.0.0.</li> </ul> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 23, 2026 11:16:18 UTC">June 23, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
+</code></pre></div> </details> <h2 id=see-also>See also<a class=headerlink href=#see-also title="Permanent link">&para;</a></h2> <ul> <li><a href=../basic_json/accept/ >accept</a> - check if the input is valid <abbr title="JavaScript Object Notation">JSON</abbr></li> <li><a href=../basic_json/parse/ >parse</a> - deserialize from a compatible input</li> </ul> <h2 id=version-history>Version history<a class=headerlink href=#version-history title="Permanent link">&para;</a></h2> <ul> <li>Added in version 1.0.0.</li> </ul> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 29, 2026 20:15:18 UTC">June 29, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
diff --git a/api/operator_literal_json/index.html b/api/operator_literal_json/index.html
index f473cd3..69822b0 100644
--- a/api/operator_literal_json/index.html
+++ b/api/operator_literal_json/index.html
@@ -22,4 +22,4 @@
 <span class=w>  </span><span class=nt>&quot;answer&quot;</span><span class=p>:</span><span class=w> </span><span class=mi>42</span><span class=p>,</span>
 <span class=w>  </span><span class=nt>&quot;hello&quot;</span><span class=p>:</span><span class=w> </span><span class=s2>&quot;world&quot;</span>
 <span class=p>}</span>
-</code></pre></div> </details> <h2 id=version-history>Version history<a class=headerlink href=#version-history title="Permanent link">&para;</a></h2> <ul> <li>Added in version 1.0.0.</li> <li>Moved to namespace <code>nlohmann::literals::json_literals</code> in 3.11.0.</li> <li>Added <code>char8_t*</code> overload in 3.12.1.</li> </ul> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 23, 2026 11:16:18 UTC">June 23, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
+</code></pre></div> </details> <h2 id=version-history>Version history<a class=headerlink href=#version-history title="Permanent link">&para;</a></h2> <ul> <li>Added in version 1.0.0.</li> <li>Moved to namespace <code>nlohmann::literals::json_literals</code> in 3.11.0.</li> <li>Added <code>char8_t*</code> overload in 3.12.x.</li> </ul> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 29, 2026 20:15:18 UTC">June 29, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
diff --git a/api/operator_literal_json_pointer/index.html b/api/operator_literal_json_pointer/index.html
index a51d0f6..f35d913 100644
--- a/api/operator_literal_json_pointer/index.html
+++ b/api/operator_literal_json_pointer/index.html
@@ -20,4 +20,4 @@
 <span class=w>    </span><span class=n>std</span><span class=o>::</span><span class=n>cout</span><span class=w> </span><span class=o>&lt;&lt;</span><span class=w> </span><span class=n>std</span><span class=o>::</span><span class=n>setw</span><span class=p>(</span><span class=mi>2</span><span class=p>)</span><span class=w> </span><span class=o>&lt;&lt;</span><span class=w> </span><span class=n>val</span><span class=w> </span><span class=o>&lt;&lt;</span><span class=w> </span><span class=sc>&#39;\n&#39;</span><span class=p>;</span>
 <span class=p>}</span>
 </code></pre></div> <p>Output:</p> <div class=highlight><pre><span></span><code><span class=s2>&quot;world&quot;</span>
-</code></pre></div> </details> <h2 id=see-also>See also<a class=headerlink href=#see-also title="Permanent link">&para;</a></h2> <ul> <li><a href=../json_pointer/ >json_pointer</a> - type to represent <abbr title="JavaScript Object Notation">JSON</abbr> Pointers</li> </ul> <h2 id=version-history>Version history<a class=headerlink href=#version-history title="Permanent link">&para;</a></h2> <ul> <li>Added in version 2.0.0.</li> <li>Moved to namespace <code>nlohmann::literals::json_literals</code> in 3.11.0.</li> <li>Added <code>char8_t*</code> overload in 3.12.1.</li> </ul> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 23, 2026 11:16:18 UTC">June 23, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
+</code></pre></div> </details> <h2 id=see-also>See also<a class=headerlink href=#see-also title="Permanent link">&para;</a></h2> <ul> <li><a href=../json_pointer/ >json_pointer</a> - type to represent <abbr title="JavaScript Object Notation">JSON</abbr> Pointers</li> </ul> <h2 id=version-history>Version history<a class=headerlink href=#version-history title="Permanent link">&para;</a></h2> <ul> <li>Added in version 2.0.0.</li> <li>Moved to namespace <code>nlohmann::literals::json_literals</code> in 3.11.0.</li> <li>Added <code>char8_t*</code> overload in 3.12.x.</li> </ul> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 29, 2026 20:15:18 UTC">June 29, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
diff --git a/api/operator_ltlt/index.html b/api/operator_ltlt/index.html
index 81a61cd..f895950 100644
--- a/api/operator_ltlt/index.html
+++ b/api/operator_ltlt/index.html
@@ -57,4 +57,4 @@
 <span class=w>    </span><span class=n>std</span><span class=o>::</span><span class=n>cout</span><span class=w> </span><span class=o>&lt;&lt;</span><span class=w> </span><span class=n>ptr</span><span class=w> </span><span class=o>&lt;&lt;</span><span class=w> </span><span class=n>std</span><span class=o>::</span><span class=n>endl</span><span class=p>;</span>
 <span class=p>}</span>
 </code></pre></div> <p>Output:</p> <div class=highlight><pre><span></span><code><span class=err>/</span><span class=kc>f</span><span class=err>oo/bar/baz</span>
-</code></pre></div> </details> <h2 id=version-history>Version history<a class=headerlink href=#version-history title="Permanent link">&para;</a></h2> <ol> <li>Added in version 1.0.0. Added support for indentation character and deprecated <code class=highlight><span class=n>std</span><span class=o>::</span><span class=n>ostream</span><span class=o>&amp;</span><span class=w> </span><span class=k>operator</span><span class=o>&gt;&gt;</span><span class=p>(</span><span class=k>const</span><span class=w> </span><span class=n>basic_json</span><span class=o>&amp;</span><span class=w> </span><span class=n>j</span><span class=p>,</span><span class=w> </span><span class=n>std</span><span class=o>::</span><span class=n>ostream</span><span class=o>&amp;</span><span class=w> </span><span class=n>o</span><span class=p>)</span></code> in version 3.0.0.</li> <li>Added in version 3.11.0.</li> </ol> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 23, 2026 11:16:18 UTC">June 23, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
+</code></pre></div> </details> <h2 id=version-history>Version history<a class=headerlink href=#version-history title="Permanent link">&para;</a></h2> <ol> <li>Added in version 1.0.0. Added support for indentation character and deprecated <code class=highlight><span class=n>std</span><span class=o>::</span><span class=n>ostream</span><span class=o>&amp;</span><span class=w> </span><span class=k>operator</span><span class=o>&gt;&gt;</span><span class=p>(</span><span class=k>const</span><span class=w> </span><span class=n>basic_json</span><span class=o>&amp;</span><span class=w> </span><span class=n>j</span><span class=p>,</span><span class=w> </span><span class=n>std</span><span class=o>::</span><span class=n>ostream</span><span class=o>&amp;</span><span class=w> </span><span class=n>o</span><span class=p>)</span></code> in version 3.0.0.</li> <li>Added in version 3.11.0.</li> </ol> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 29, 2026 20:15:18 UTC">June 29, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
diff --git a/api/ordered_json/index.html b/api/ordered_json/index.html
index d271e8d..8250c2e 100644
--- a/api/ordered_json/index.html
+++ b/api/ordered_json/index.html
@@ -18,4 +18,4 @@
 <span class=w>  </span><span class=nt>&quot;two&quot;</span><span class=p>:</span><span class=w> </span><span class=mi>2</span><span class=p>,</span>
 <span class=w>  </span><span class=nt>&quot;three&quot;</span><span class=p>:</span><span class=w> </span><span class=mi>3</span>
 <span class=p>}</span>
-</code></pre></div> </details> <h2 id=see-also>See also<a class=headerlink href=#see-also title="Permanent link">&para;</a></h2> <ul> <li><a href=../ordered_map/ >ordered_map</a></li> <li><a href=../../features/object_order/ >Object Order</a></li> </ul> <h2 id=version-history>Version history<a class=headerlink href=#version-history title="Permanent link">&para;</a></h2> <p>Since version 3.9.0.</p> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 23, 2026 11:16:18 UTC">June 23, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
+</code></pre></div> </details> <h2 id=see-also>See also<a class=headerlink href=#see-also title="Permanent link">&para;</a></h2> <ul> <li><a href=../ordered_map/ >ordered_map</a></li> <li><a href=../../features/object_order/ >Object Order</a></li> </ul> <h2 id=version-history>Version history<a class=headerlink href=#version-history title="Permanent link">&para;</a></h2> <p>Since version 3.9.0.</p> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 29, 2026 20:15:18 UTC">June 29, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
diff --git a/api/ordered_map/index.html b/api/ordered_map/index.html
index 5b6bc59..c9471cf 100644
--- a/api/ordered_map/index.html
+++ b/api/ordered_map/index.html
@@ -51,4 +51,4 @@
 <span class=err>m_s</span><span class=kc>t</span><span class=err>d</span><span class=w> </span><span class=err>=</span><span class=w> </span><span class=p>{</span><span class=w> </span><span class=err>o</span><span class=kc>ne</span><span class=p>:</span><span class=err>ei</span><span class=kc>ns</span><span class=w> </span><span class=kc>t</span><span class=err>hree</span><span class=p>:</span><span class=err>drei</span><span class=w> </span><span class=kc>t</span><span class=err>wo</span><span class=p>:</span><span class=err>zwei</span><span class=w> </span><span class=p>}</span>
 <span class=err>m_ordered</span><span class=w> </span><span class=err>=</span><span class=w> </span><span class=p>{</span><span class=w> </span><span class=kc>t</span><span class=err>wo</span><span class=p>:</span><span class=err>zwei</span><span class=w> </span><span class=kc>t</span><span class=err>hree</span><span class=p>:</span><span class=err>drei</span><span class=w> </span><span class=err>o</span><span class=kc>ne</span><span class=p>:</span><span class=err>ei</span><span class=kc>ns</span><span class=w> </span><span class=p>}</span>
 <span class=err>m_s</span><span class=kc>t</span><span class=err>d</span><span class=w> </span><span class=err>=</span><span class=w> </span><span class=p>{</span><span class=w> </span><span class=err>o</span><span class=kc>ne</span><span class=p>:</span><span class=err>ei</span><span class=kc>ns</span><span class=w> </span><span class=kc>t</span><span class=err>hree</span><span class=p>:</span><span class=err>drei</span><span class=w> </span><span class=kc>t</span><span class=err>wo</span><span class=p>:</span><span class=err>zwei</span><span class=w> </span><span class=p>}</span>
-</code></pre></div> </details> <h2 id=see-also>See also<a class=headerlink href=#see-also title="Permanent link">&para;</a></h2> <ul> <li><a href=../ordered_json/ >ordered_json</a></li> </ul> <h2 id=version-history>Version history<a class=headerlink href=#version-history title="Permanent link">&para;</a></h2> <ul> <li>Added in version 3.9.0 to implement <a href=../ordered_json/ ><code>nlohmann::ordered_json</code></a>.</li> <li>Added <strong>key_compare</strong> member in version 3.11.0.</li> </ul> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 23, 2026 11:16:18 UTC">June 23, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
+</code></pre></div> </details> <h2 id=see-also>See also<a class=headerlink href=#see-also title="Permanent link">&para;</a></h2> <ul> <li><a href=../ordered_json/ >ordered_json</a></li> </ul> <h2 id=version-history>Version history<a class=headerlink href=#version-history title="Permanent link">&para;</a></h2> <ul> <li>Added in version 3.9.0 to implement <a href=../ordered_json/ ><code>nlohmann::ordered_json</code></a>.</li> <li>Added <strong>key_compare</strong> member in version 3.11.0.</li> </ul> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 29, 2026 20:15:18 UTC">June 29, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
diff --git a/assets/external/bestpractices.coreinfrastructure.org/assets/questions_page_badge-17b338c0e8528d695d8676e23f39f17ca2b89bb88176370803ee69aeebcb5be4.png b/assets/external/bestpractices.coreinfrastructure.org/assets/questions_page_badge-17b338c0e8528d695d8676e23f39f17ca2b89bb88176370803ee69aeebcb5be4.png
deleted file mode 100644
index 25cea22..0000000
--- a/assets/external/bestpractices.coreinfrastructure.org/assets/questions_page_badge-17b338c0e8528d695d8676e23f39f17ca2b89bb88176370803ee69aeebcb5be4.png
+++ /dev/null
Binary files differ
diff --git a/assets/external/cdn.jsdelivr.net/gh/jdecked/twemoji@16.0.1/assets/svg/1f41b.svg b/assets/external/cdn.jsdelivr.net/gh/jdecked/twemoji@16.0.1/assets/svg/1f41b.svg
deleted file mode 100644
index f8986dd..0000000
--- a/assets/external/cdn.jsdelivr.net/gh/jdecked/twemoji@16.0.1/assets/svg/1f41b.svg
+++ /dev/null
@@ -1 +0,0 @@
-<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#AA8DD8" d="M7.415 4c1-1 .25-4-1.438-4s-1.562 2-.562 2 1 2 1 3 1-1 1-1zM3.232 5.72c1-1 .25-4-1.438-4s-1.562 2-.562 2 1 2 1 3 1-1 1-1z"/><path fill="#744EAA" d="M29.607 32.856c.189.808 1.227 2.28 2.032 2.091.806-.19 1.077-1.971.888-2.777-.189-.808-.998-1.307-1.804-1.117-.805.19-1.306.997-1.116 1.803zm-5.434.649c.003.83.681 2.498 1.509 2.495.828-.004 1.494-1.677 1.491-2.506-.003-.829-.677-1.497-1.505-1.495-.828.004-1.498.677-1.495 1.506zm-5.271-2.446c-.326.764-.365 2.563.396 2.89.763.324 2.037-.947 2.363-1.71.325-.762-.028-1.643-.789-1.97-.762-.325-1.643.027-1.97.79zm-5.031-11.04c-.812.172-2.308 1.173-2.139 1.983.173.81 1.945 1.124 2.757.953.811-.171 1.329-.967 1.16-1.777-.172-.81-.965-1.33-1.778-1.159zm-2.037-5c-.812.172-2.308 1.173-2.139 1.983.173.81 1.945 1.124 2.757.953.811-.171 1.329-.967 1.16-1.777-.172-.81-.966-1.33-1.778-1.159z"/><path fill="#9266CC" d="M27.244 34c2.831 0 4.926-.877 5.266-1.027 2.271-1.01 3.293-3.669 2.284-5.939-.999-2.25-3.616-3.275-5.872-2.314-.133.05-1.793.649-3.343-.072-1.851-.861-2.995-3.309-3.628-5.209-.144-.43-.385-1.274-.686-2.316-1.866-6.471-2.832-8.285-3.983-9.82C13.571 2.352 7.69 2.007 4.799 2.587c-2.437.487-4.018 2.858-3.53 5.295.488 2.438 2.86 4.02 5.296 3.53.162-.026 2.204-.306 3.424 1.169.643 1.287 2.08 5.128 2.63 7.034.346 1.199.629 2.171.794 2.667 1.773 5.317 4.666 8.893 8.603 10.629C23.868 33.729 25.67 34 27.244 34z"/><circle fill="#FFF" cx="6.682" cy="5" r="1"/><path d="M30.923 32.964c-.089 0-.18-.012-.269-.036-.532-.148-.844-.699-.696-1.231.757-2.722-.77-4.542-.785-4.56-.359-.419-.312-1.051.107-1.41.418-.359 1.051-.312 1.41.107.092.107 2.234 2.66 1.195 6.397-.122.443-.525.733-.962.733zm-7.199-.563c-.245 0-.49-.089-.684-.27-.403-.378-.424-1.011-.047-1.414 1.485-1.587 1.453-4.193 1.452-4.22-.016-.552.419-1.012.972-1.028.542-.005 1.013.419 1.028.972.004.139.073 3.437-1.991 5.644-.197.21-.464.316-.73.316zm-8.542-8.696c-.48 0-.904-.347-.985-.837-.09-.544.278-1.06.823-1.149 3.074-.51 4.774-2.377 4.791-2.396.365-.41.998-.449 1.409-.084.412.365.453.993.091 1.406-.087.099-2.156 2.415-5.964 3.046-.056.01-.111.014-.165.014zm2.921 4.857c-.425 0-.819-.272-.954-.698-.166-.526.126-1.089.652-1.255 2.693-.853 3.88-2.83 3.892-2.85.28-.477.892-.637 1.368-.357.477.279.636.893.357 1.368-.063.108-1.595 2.663-5.013 3.744-.101.033-.203.048-.302.048zm-4.619-10.67c-.496 0-.927-.369-.991-.875-.069-.548.319-1.048.867-1.118 2.689-.34 4.657-1.971 4.676-1.988.422-.354 1.053-.303 1.408.119.356.421.305 1.05-.115 1.407-.097.083-2.42 2.029-5.718 2.446-.043.006-.085.009-.127.009zm-1.821-4.767c-.425 0-.819-.273-.954-.701-.165-.527.127-1.088.654-1.254 3.13-.983 4.253-2.692 4.299-2.764.295-.462.911-.605 1.375-.312.465.292.611.899.324 1.366-.06.097-1.506 2.396-5.399 3.619-.099.031-.2.046-.299.046z" fill="#744EAA"/></svg>
\ No newline at end of file
diff --git a/assets/external/cdn.jsdelivr.net/gh/jdecked/twemoji@16.0.1/assets/svg/1f477.svg b/assets/external/cdn.jsdelivr.net/gh/jdecked/twemoji@16.0.1/assets/svg/1f477.svg
deleted file mode 100644
index 5843060..0000000
--- a/assets/external/cdn.jsdelivr.net/gh/jdecked/twemoji@16.0.1/assets/svg/1f477.svg
+++ /dev/null
@@ -1 +0,0 @@
-<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#F2760F" d="M32.043 36L32 35c0-4-2.957-7-7.957-7h-12C7.043 28 4 31 4 35l.043 1h28z"/><path fill="#FFF75F" d="M9 28.298V36h3v-8c-1.103 0-2.102.103-3 .298zM24 28v8h3v-7.702c-.898-.195-1.897-.298-3-.298z"/><path fill="#292F33" d="M13 27h10v4H13z"/><path fill="#292F33" d="M14 27h8s-1.018 7-4 7-4-7-4-7"/><path fill="#FFDC5D" d="M13.64 30.038c1.745 1.268 2.849 1.963 4.36 1.963s2.615-.696 4.359-1.963v-5.749h-8.72v5.749z"/><path fill="#F9CA55" d="M13.632 25.973c1.216 1.374 2.724 1.746 4.364 1.746 1.639 0 3.146-.373 4.363-1.746v-3.491h-8.728v3.491z"/><path fill="#FFAC33" d="M21.513 4.15c-1.881-.608-6.306-.443-7.412.996-2.876.055-6.25 2.654-6.693 6.084-.438 3.394.538 4.97.885 7.523.393 2.892 2.019 3.817 3.319 4.204 1.87 2.47 3.858 2.365 7.195 2.365 6.518 0 9.622-4.361 9.896-11.768.167-4.481-2.462-7.874-7.19-9.404z"/><path fill="#FFDC5D" d="M25.24 13.87c-.631-.873-1.438-1.576-3.208-1.825.664.304 1.3 1.355 1.383 1.936.083.581.166 1.051-.359.47-2.105-2.327-4.397-1.411-6.669-2.832-1.587-.993-2.07-2.091-2.07-2.091s-.194 1.466-2.6 2.959c-.697.433-1.53 1.397-1.991 2.821-.332 1.023-.229 1.936-.229 3.496 0 4.553 3.752 8.38 8.38 8.38s8.38-3.861 8.38-8.38c-.001-2.833-.297-3.939-1.017-4.934z"/><path fill="#C1694F" d="M18.807 21.131h-1.862c-.257 0-.466-.208-.466-.466s.208-.466.466-.466h1.862c.257 0 .466.208.466.466s-.208.466-.466.466zM18 24.467c-2.754 0-3.6-.705-3.74-.848-.257-.256-.257-.671 0-.927.248-.248.644-.255.902-.023.051.037.721.487 2.838.487 2.201 0 2.836-.485 2.842-.49.256-.255.658-.243.914.015.256.256.242.683-.014.938-.142.143-.988.848-3.742.848"/><path fill="#662113" d="M14.152 17.872c-.514 0-.931-.417-.931-.931v-.931c0-.514.417-.931.931-.931s.931.417.931.931v.931c0 .514-.417.931-.931.931zm7.449 0c-.514 0-.931-.417-.931-.931v-.931c0-.514.417-.931.931-.931s.931.417.931.931v.931c0 .514-.417.931-.931.931z"/><path fill="#292F33" d="M19 34.938l-1 1.061-1-1v-3h2z"/><path fill="#55ACEE" d="M11 28c0 1 1 3 3 5 1.582 1.581 4 3 4 3 0-3.063-1-4-2-5s-3-2-3-4c0-1-2 1-2 1m14 0c0 1-1 3-3 5-1.58 1.581-4 3-4 3 0-3.063 1-4 2-5s3-2 3-4c0-1 2 1 2 1"/><path fill="#FFF75F" d="M30 11c-3-2-1.008-4.169-3-7-1.873-2.663-5-4-9.002-4C13 0 10.874 1.337 9 4c-1.992 2.831 0 5-3 7-1.861 1.24 6 2.313 12 2.313S31.861 12.24 30 11"/><path fill="#FFAC33" d="M16 11.5V.088c-.35.032-.683.074-1 .124v10.281c-2.09-.05-5.124-.396-7.653-.853-.174.297-.41.59-.73.877 2.91.566 6.596.983 8.883.983h.5zm12.855-1.553c-2.853.304-5.839.517-7.855.549V.292c-.323-.066-.66-.112-1-.155V11.5h.5c2.018 0 5.796-.261 9.289-.657-.402-.295-.708-.593-.934-.896z"/></svg>
\ No newline at end of file
diff --git a/assets/external/cdn.jsdelivr.net/gh/jdecked/twemoji@16.0.1/assets/svg/1f4a5.svg b/assets/external/cdn.jsdelivr.net/gh/jdecked/twemoji@16.0.1/assets/svg/1f4a5.svg
deleted file mode 100644
index 36c50d6..0000000
--- a/assets/external/cdn.jsdelivr.net/gh/jdecked/twemoji@16.0.1/assets/svg/1f4a5.svg
+++ /dev/null
@@ -1 +0,0 @@
-<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#BB1A34" d="M22 0l-4 8.028-5-5.018v7.024L3 8.028l8 8.028-11 6.02h12L6 34.118l12-8.028 11 10.035-3-14.049h10l-8-6.021 8-9.031-12 3.01L22 0z"/><path fill="#FCAB40" d="M22.914 12.924l1.86-.467L30 11.146l-3.381 3.816-1.319 1.49 1.59 1.195 2.925 2.202h-5.918l.473 2.218 1.551 7.26-5.845-5.332-1.056-.964-1.188.795-5.24 3.506 2.406-4.828 1.322-2.655H9.564l3.759-2.059 2.145-1.172-1.727-1.735-3.044-3.053 3.221.646 2.186.439V8.686l1.45 1.455 1.794 1.799 1.133-2.276 1.273-2.556"/><path fill="#F5F8FA" d="M21.512 14.301l.767-.193 2.158-.541-1.396 1.576-.545.615.656.493 1.208.909h-2.443l.195.916.641 2.997-2.413-2.201-.437-.398-.49.328-2.163 1.448.993-1.994.546-1.096H16l1.553-.85.885-.484-.713-.716-1.257-1.261 1.329.267.903.181v-1.745l.599.6.74.743.468-.939.525-1.056"/></svg>
\ No newline at end of file
diff --git a/assets/external/cdn.jsdelivr.net/gh/jdecked/twemoji@16.0.1/assets/svg/1f4c8.svg b/assets/external/cdn.jsdelivr.net/gh/jdecked/twemoji@16.0.1/assets/svg/1f4c8.svg
deleted file mode 100644
index cbf108f..0000000
--- a/assets/external/cdn.jsdelivr.net/gh/jdecked/twemoji@16.0.1/assets/svg/1f4c8.svg
+++ /dev/null
@@ -1 +0,0 @@
-<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#CCD6DD" d="M31 2H5C3.343 2 2 3.343 2 5v26c0 1.657 1.343 3 3 3h26c1.657 0 3-1.343 3-3V5c0-1.657-1.343-3-3-3z"/><path fill="#E1E8ED" d="M31 1H5C2.791 1 1 2.791 1 5v26c0 2.209 1.791 4 4 4h26c2.209 0 4-1.791 4-4V5c0-2.209-1.791-4-4-4zm0 2c1.103 0 2 .897 2 2v4h-6V3h4zm-4 16h6v6h-6v-6zm0-2v-6h6v6h-6zM25 3v6h-6V3h6zm-6 8h6v6h-6v-6zm0 8h6v6h-6v-6zM17 3v6h-6V3h6zm-6 8h6v6h-6v-6zm0 8h6v6h-6v-6zM3 5c0-1.103.897-2 2-2h4v6H3V5zm0 6h6v6H3v-6zm0 8h6v6H3v-6zm2 14c-1.103 0-2-.897-2-2v-4h6v6H5zm6 0v-6h6v6h-6zm8 0v-6h6v6h-6zm12 0h-4v-6h6v4c0 1.103-.897 2-2 2z"/><path fill="#DD2E44" d="M4.998 33c-.32 0-.645-.076-.946-.239-.973-.523-1.336-1.736-.813-2.709l7-13c.299-.557.845-.939 1.47-1.031.626-.092 1.258.118 1.705.565l6.076 6.076 9.738-18.59c.512-.978 1.721-1.357 2.699-.843.979.512 1.356 1.721.844 2.7l-11 21c-.295.564-.841.953-1.47 1.05-.627.091-1.266-.113-1.716-.563l-6.1-6.099-5.724 10.631C6.4 32.619 5.71 33 4.998 33z"/></svg>
\ No newline at end of file
diff --git a/assets/external/cdn.jsdelivr.net/gh/jdecked/twemoji@16.0.1/assets/svg/1f4dd.svg b/assets/external/cdn.jsdelivr.net/gh/jdecked/twemoji@16.0.1/assets/svg/1f4dd.svg
deleted file mode 100644
index 1697ffb..0000000
--- a/assets/external/cdn.jsdelivr.net/gh/jdecked/twemoji@16.0.1/assets/svg/1f4dd.svg
+++ /dev/null
@@ -1 +0,0 @@
-<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#CCD6DD" d="M31 32c0 2.209-1.791 4-4 4H5c-2.209 0-4-1.791-4-4V4c0-2.209 1.791-4 4-4h22c2.209 0 4 1.791 4 4v28z"/><path fill="#99AAB5" d="M27 24c0 .553-.447 1-1 1H6c-.552 0-1-.447-1-1 0-.553.448-1 1-1h20c.553 0 1 .447 1 1zm-16 4c0 .553-.448 1-1 1H6c-.552 0-1-.447-1-1 0-.553.448-1 1-1h4c.552 0 1 .447 1 1zM27 8c0 .552-.447 1-1 1H6c-.552 0-1-.448-1-1s.448-1 1-1h20c.553 0 1 .448 1 1zm0 4c0 .553-.447 1-1 1H6c-.552 0-1-.447-1-1 0-.553.448-1 1-1h20c.553 0 1 .447 1 1zm0 4c0 .553-.447 1-1 1H6c-.552 0-1-.447-1-1 0-.553.448-1 1-1h20c.553 0 1 .447 1 1zm0 4c0 .553-.447 1-1 1H6c-.552 0-1-.447-1-1 0-.553.448-1 1-1h20c.553 0 1 .447 1 1z"/><path fill="#66757F" d="M31 6.272c-.827-.535-1.837-.579-2.521-.023l-.792.646-1.484 1.211-.1.08-2.376 1.938-11.878 9.686c-.437.357-.793 1.219-1.173 2.074-.378.85-.969 2.852-1.443 4.391-.148.25-1.065 1.846-.551 2.453.52.615 2.326.01 2.568-.076 1.626-.174 3.731-.373 4.648-.58.924-.211 1.854-.395 2.291-.752.008-.006.01-.018.017-.023l11.858-9.666.792-.646.144-.118V6.272z"/><path fill="#D99E82" d="M18.145 22.526s-1.274-1.881-2.117-2.553c-.672-.843-2.549-2.116-2.549-2.116-.448-.446-1.191-.48-1.629-.043-.437.438-.793 1.366-1.173 2.291-.472 1.146-1.276 4.154-1.768 5.752-.083.272.517-.45.503-.21-.01.187.027.394.074.581l-.146.159.208.067c.025.082.05.154.068.21l.159-.146c.187.047.394.084.58.074.24-.014-.483.587-.21.503 1.598-.493 4.607-1.296 5.752-1.768.924-.381 1.854-.736 2.291-1.174.439-.435.406-1.178-.043-1.627z"/><path fill="#EA596E" d="M25.312 4.351c-.876.875-.876 2.293 0 3.168l3.167 3.168c.876.874 2.294.874 3.168 0l3.169-3.168c.874-.875.874-2.293 0-3.168l-3.169-3.168c-.874-.875-2.292-.875-3.168 0l-3.167 3.168z"/><path fill="#FFCC4D" d="M11.849 17.815l3.17 3.17 3.165 3.166 11.881-11.879-6.337-6.336-11.879 11.879z"/><path fill="#292F33" d="M11.298 26.742s-2.06 1.133-2.616.576c-.557-.558.581-2.611.581-2.611s1.951.036 2.035 2.035z"/><path fill="#CCD6DD" d="M23.728 5.935l3.96-3.96 6.336 6.337-3.96 3.96z"/><path fill="#99AAB5" d="M26.103 3.558l.792-.792 6.336 6.335-.792.792zM24.52 5.142l.791-.791 6.336 6.335-.792.792z"/></svg>
\ No newline at end of file
diff --git a/assets/external/cdn.jsdelivr.net/gh/jdecked/twemoji@16.0.1/assets/svg/1f512.svg b/assets/external/cdn.jsdelivr.net/gh/jdecked/twemoji@16.0.1/assets/svg/1f512.svg
deleted file mode 100644
index 4cd1fac..0000000
--- a/assets/external/cdn.jsdelivr.net/gh/jdecked/twemoji@16.0.1/assets/svg/1f512.svg
+++ /dev/null
@@ -1 +0,0 @@
-<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#AAB8C2" d="M18 0C12.477 0 8 4.477 8 10v10h4V10a6 6 0 0 1 12 0v10h4V10c0-5.523-4.477-10-10-10Z"/><path fill="#FFAC33" d="M32 32a4 4 0 0 1-4 4H8a4 4 0 0 1-4-4V18a4 4 0 0 1 4-4h20a4 4 0 0 1 4 4v14Z"/></svg>
\ No newline at end of file
diff --git a/assets/external/cdn.jsdelivr.net/gh/jdecked/twemoji@16.0.1/assets/svg/1f525.svg b/assets/external/cdn.jsdelivr.net/gh/jdecked/twemoji@16.0.1/assets/svg/1f525.svg
deleted file mode 100644
index e7dee6d..0000000
--- a/assets/external/cdn.jsdelivr.net/gh/jdecked/twemoji@16.0.1/assets/svg/1f525.svg
+++ /dev/null
@@ -1 +0,0 @@
-<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#F4900C" d="M35 19c0-2.062-.367-4.039-1.04-5.868-.46 5.389-3.333 8.157-6.335 6.868-2.812-1.208-.917-5.917-.777-8.164.236-3.809-.012-8.169-6.931-11.794 2.875 5.5.333 8.917-2.333 9.125-2.958.231-5.667-2.542-4.667-7.042-3.238 2.386-3.332 6.402-2.333 9 1.042 2.708-.042 4.958-2.583 5.208-2.84.28-4.418-3.041-2.963-8.333C2.52 10.965 1 14.805 1 19c0 9.389 7.611 17 17 17s17-7.611 17-17z"/><path fill="#FFCC4D" d="M28.394 23.999c.148 3.084-2.561 4.293-4.019 3.709-2.106-.843-1.541-2.291-2.083-5.291s-2.625-5.083-5.708-6c2.25 6.333-1.247 8.667-3.08 9.084-1.872.426-3.753-.001-3.968-4.007C7.352 23.668 6 26.676 6 30c0 .368.023.73.055 1.09C9.125 34.124 13.342 36 18 36s8.875-1.876 11.945-4.91c.032-.36.055-.722.055-1.09 0-2.187-.584-4.236-1.606-6.001z"/></svg>
\ No newline at end of file
diff --git a/assets/external/cdn.jsdelivr.net/gh/jdecked/twemoji@16.0.1/assets/svg/1f527.svg b/assets/external/cdn.jsdelivr.net/gh/jdecked/twemoji@16.0.1/assets/svg/1f527.svg
deleted file mode 100644
index 73a06d0..0000000
--- a/assets/external/cdn.jsdelivr.net/gh/jdecked/twemoji@16.0.1/assets/svg/1f527.svg
+++ /dev/null
@@ -1 +0,0 @@
-<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#8899A6" d="M27.989 19.977c-.622 0-1.225.078-1.806.213L15.811 9.818c.134-.581.212-1.184.212-1.806C16.023 3.587 12.436 0 8.012 0 7.11 0 5.91.916 6.909 1.915l2.997 2.997s.999 1.998-.999 3.995-3.996.998-3.996.998L1.915 6.909C.916 5.91 0 7.105 0 8.012c0 4.425 3.587 8.012 8.012 8.012.622 0 1.225-.078 1.806-.212l10.371 10.371c-.135.581-.213 1.184-.213 1.806 0 4.425 3.588 8.011 8.012 8.011.901 0 2.101-.916 1.102-1.915l-2.997-2.997s-.999-1.998.999-3.995 3.995-.999 3.995-.999l2.997 2.997c1 .999 1.916-.196 1.916-1.102 0-4.425-3.587-8.012-8.011-8.012z"/></svg>
\ No newline at end of file
diff --git a/assets/external/cdn.jsdelivr.net/gh/jdecked/twemoji@16.0.1/assets/svg/1f528.svg b/assets/external/cdn.jsdelivr.net/gh/jdecked/twemoji@16.0.1/assets/svg/1f528.svg
deleted file mode 100644
index 1a0485e..0000000
--- a/assets/external/cdn.jsdelivr.net/gh/jdecked/twemoji@16.0.1/assets/svg/1f528.svg
+++ /dev/null
@@ -1 +0,0 @@
-<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#F4900C" d="M29.879 33.879C31.045 35.045 32.9 35.1 34 34s1.045-2.955-.121-4.121L12.121 8.121C10.955 6.955 9.1 6.9 8 8s-1.045 2.955.121 4.121l21.758 21.758z"/><path fill="#66757F" d="M22 3s-6-3-11 2l-7 7s-1-1-2 0l-1 1s-1 1 0 2l4 4s1 1 2 0l1-1s1-1 0-2l-.078-.078c.77-.743 1.923-1.5 3.078-.922l4-4s-1-3 1-5 3-2 5-2 1-1 1-1z"/></svg>
\ No newline at end of file
diff --git a/assets/external/cdn.jsdelivr.net/gh/jdecked/twemoji@16.0.1/assets/svg/1f69a.svg b/assets/external/cdn.jsdelivr.net/gh/jdecked/twemoji@16.0.1/assets/svg/1f69a.svg
deleted file mode 100644
index 7441d1b..0000000
--- a/assets/external/cdn.jsdelivr.net/gh/jdecked/twemoji@16.0.1/assets/svg/1f69a.svg
+++ /dev/null
@@ -1 +0,0 @@
-<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#DD2E44" d="M36 27c0 2.209-1.791 4-4 4H4c-2.209 0-4-1.791-4-4v-3c0-2.209 1.791-4 4-4h28c2.209 0 4 1.791 4 4v3z"/><path fill="#FFCC4D" d="M19 13l-.979-1H7.146C4 12 3 14 3 14l-3 5.959V25h19V13z"/><path fill="#55ACEE" d="M9 20H2l2-4s1-2 3-2h2v6z"/><circle fill="#292F33" cx="9" cy="31" r="4"/><circle fill="#CCD6DD" cx="9" cy="31" r="2"/><circle fill="#292F33" cx="27" cy="31" r="4"/><circle fill="#CCD6DD" cx="27" cy="31" r="2"/><path fill="#CCD6DD" d="M32 8H17c-2.209 0-4 1.791-4 4v13h23V12c0-2.209-1.791-4-4-4z"/></svg>
\ No newline at end of file
diff --git a/assets/external/cdn.jsdelivr.net/gh/jdecked/twemoji@16.0.1/assets/svg/1f6a8.svg b/assets/external/cdn.jsdelivr.net/gh/jdecked/twemoji@16.0.1/assets/svg/1f6a8.svg
deleted file mode 100644
index 5ed7ec8..0000000
--- a/assets/external/cdn.jsdelivr.net/gh/jdecked/twemoji@16.0.1/assets/svg/1f6a8.svg
+++ /dev/null
@@ -1 +0,0 @@
-<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#DD2E44" d="M34.16 28.812L31.244 2.678C31.074 1.153 29.785 0 28.251 0H7.664C6.119 0 4.825 1.168 4.667 2.704l-2.67 26.108H34.16z"/><circle fill="#BE1931" cx="18.069" cy="14" r="9.366"/><path fill="#99AAB5" d="M35.521 29.18H.479L0 34c0 2 2 2 2 2h32s2 0 2-2l-.479-4.82z"/><path fill="#CCD6DD" d="M35.594 29.912l-.073-.732C35.38 28.442 34.751 28 34 28H2c-.751 0-1.38.442-1.521 1.18l-.073.732h35.188z"/><path fill="#EC9DAD" d="M29.647 13.63l-7.668-1.248 4.539-6.308c.107-.148.091-.354-.039-.484-.131-.129-.336-.146-.484-.039l-6.309 4.538-1.247-7.667c-.029-.181-.187-.314-.37-.314s-.341.133-.37.314l-1.248 7.667-6.308-4.538c-.149-.107-.353-.09-.484.039-.13.131-.146.335-.039.484l4.538 6.308L6.49 13.63c-.181.029-.314.186-.314.37s.133.341.314.37l7.668 1.248-4.538 6.308c-.107.149-.091.354.039.484.131.129.335.146.484.039l6.308-4.538 1.248 7.667c.029.182.187.314.37.314s.341-.134.37-.314l1.247-7.667 6.308 4.538c.148.106.354.09.484-.039.13-.131.146-.335.039-.484l-4.538-6.308 7.668-1.248c.182-.029.314-.187.314-.37s-.132-.341-.314-.37z"/></svg>
\ No newline at end of file
diff --git a/assets/external/cdn.jsdelivr.net/gh/jdecked/twemoji@16.0.1/assets/svg/26a1.svg b/assets/external/cdn.jsdelivr.net/gh/jdecked/twemoji@16.0.1/assets/svg/26a1.svg
deleted file mode 100644
index 9d9ae7d..0000000
--- a/assets/external/cdn.jsdelivr.net/gh/jdecked/twemoji@16.0.1/assets/svg/26a1.svg
+++ /dev/null
@@ -1 +0,0 @@
-<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#FFAC33" d="M32.938 15.651C32.792 15.26 32.418 15 32 15H19.925L26.89 1.458c.219-.426.106-.947-.271-1.243C26.437.071 26.218 0 26 0c-.233 0-.466.082-.653.243L18 6.588 3.347 19.243c-.316.273-.43.714-.284 1.105S3.582 21 4 21h12.075L9.11 34.542c-.219.426-.106.947.271 1.243.182.144.401.215.619.215.233 0 .466-.082.653-.243L18 29.412l14.653-12.655c.317-.273.43-.714.285-1.106z"/></svg>
\ No newline at end of file
diff --git a/assets/external/cdn.jsdelivr.net/gh/jdecked/twemoji@16.0.1/assets/svg/2705.svg b/assets/external/cdn.jsdelivr.net/gh/jdecked/twemoji@16.0.1/assets/svg/2705.svg
deleted file mode 100644
index 9817a09..0000000
--- a/assets/external/cdn.jsdelivr.net/gh/jdecked/twemoji@16.0.1/assets/svg/2705.svg
+++ /dev/null
@@ -1 +0,0 @@
-<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#77B255" d="M36 32c0 2.209-1.791 4-4 4H4c-2.209 0-4-1.791-4-4V4c0-2.209 1.791-4 4-4h28c2.209 0 4 1.791 4 4v28z"/><path fill="#FFF" d="M29.28 6.362c-1.156-.751-2.704-.422-3.458.736L14.936 23.877l-5.029-4.65c-1.014-.938-2.596-.875-3.533.138-.937 1.014-.875 2.596.139 3.533l7.209 6.666c.48.445 1.09.665 1.696.665.673 0 1.534-.282 2.099-1.139.332-.506 12.5-19.27 12.5-19.27.751-1.159.421-2.707-.737-3.458z"/></svg>
\ No newline at end of file
diff --git a/assets/external/cdn.jsdelivr.net/gh/jdecked/twemoji@16.0.1/assets/svg/270f.svg b/assets/external/cdn.jsdelivr.net/gh/jdecked/twemoji@16.0.1/assets/svg/270f.svg
deleted file mode 100644
index a9b69e1..0000000
--- a/assets/external/cdn.jsdelivr.net/gh/jdecked/twemoji@16.0.1/assets/svg/270f.svg
+++ /dev/null
@@ -1 +0,0 @@
-<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#D99E82" d="M35.222 33.598c-.647-2.101-1.705-6.059-2.325-7.566-.501-1.216-.969-2.438-1.544-3.014-.575-.575-1.553-.53-2.143.058 0 0-2.469 1.675-3.354 2.783-1.108.882-2.785 3.357-2.785 3.357-.59.59-.635 1.567-.06 2.143.576.575 1.798 1.043 3.015 1.544 1.506.62 5.465 1.676 7.566 2.325.359.11 1.74-1.271 1.63-1.63z"/><path fill="#EA596E" d="M13.643 5.308c1.151 1.151 1.151 3.016 0 4.167l-4.167 4.168c-1.151 1.15-3.018 1.15-4.167 0L1.141 9.475c-1.15-1.151-1.15-3.016 0-4.167l4.167-4.167c1.15-1.151 3.016-1.151 4.167 0l4.168 4.167z"/><path fill="#FFCC4D" d="M31.353 23.018l-4.17 4.17-4.163 4.165L7.392 15.726l8.335-8.334 15.626 15.626z"/><path fill="#292F33" d="M32.078 34.763s2.709 1.489 3.441.757c.732-.732-.765-3.435-.765-3.435s-2.566.048-2.676 2.678z"/><path fill="#CCD6DD" d="M2.183 10.517l8.335-8.335 5.208 5.209-8.334 8.335z"/><path fill="#99AAB5" d="M3.225 11.558l8.334-8.334 1.042 1.042L4.267 12.6zm2.083 2.086l8.335-8.335 1.042 1.042-8.335 8.334z"/></svg>
\ No newline at end of file
diff --git a/assets/external/cdn.jsdelivr.net/gh/jdecked/twemoji@16.0.1/assets/svg/2728.svg b/assets/external/cdn.jsdelivr.net/gh/jdecked/twemoji@16.0.1/assets/svg/2728.svg
deleted file mode 100644
index 347ad12..0000000
--- a/assets/external/cdn.jsdelivr.net/gh/jdecked/twemoji@16.0.1/assets/svg/2728.svg
+++ /dev/null
@@ -1 +0,0 @@
-<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#FFAC33" d="M34.347 16.893l-8.899-3.294-3.323-10.891c-.128-.42-.517-.708-.956-.708-.439 0-.828.288-.956.708l-3.322 10.891-8.9 3.294c-.393.146-.653.519-.653.938 0 .418.26.793.653.938l8.895 3.293 3.324 11.223c.126.424.516.715.959.715.442 0 .833-.291.959-.716l3.324-11.223 8.896-3.293c.391-.144.652-.518.652-.937 0-.418-.261-.792-.653-.938z"/><path fill="#FFCC4D" d="M14.347 27.894l-2.314-.856-.9-3.3c-.118-.436-.513-.738-.964-.738-.451 0-.846.302-.965.737l-.9 3.3-2.313.856c-.393.145-.653.52-.653.938 0 .418.26.793.653.938l2.301.853.907 3.622c.112.444.511.756.97.756.459 0 .858-.312.97-.757l.907-3.622 2.301-.853c.393-.144.653-.519.653-.937 0-.418-.26-.793-.653-.937zM10.009 6.231l-2.364-.875-.876-2.365c-.145-.393-.519-.653-.938-.653-.418 0-.792.26-.938.653l-.875 2.365-2.365.875c-.393.146-.653.52-.653.938 0 .418.26.793.653.938l2.365.875.875 2.365c.146.393.52.653.938.653.418 0 .792-.26.938-.653l.875-2.365 2.365-.875c.393-.146.653-.52.653-.938 0-.418-.26-.792-.653-.938z"/></svg>
\ No newline at end of file
diff --git a/assets/external/cdn.jsdelivr.net/gh/jdecked/twemoji@16.0.1/assets/svg/2795.svg b/assets/external/cdn.jsdelivr.net/gh/jdecked/twemoji@16.0.1/assets/svg/2795.svg
deleted file mode 100644
index 5d55ec2..0000000
--- a/assets/external/cdn.jsdelivr.net/gh/jdecked/twemoji@16.0.1/assets/svg/2795.svg
+++ /dev/null
@@ -1 +0,0 @@
-<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#31373D" d="M31 15H21V5c0-1.657-1.343-3-3-3s-3 1.343-3 3v10H5c-1.657 0-3 1.343-3 3s1.343 3 3 3h10v10c0 1.657 1.343 3 3 3s3-1.343 3-3V21h10c1.657 0 3-1.343 3-3s-1.343-3-3-3z"/></svg>
\ No newline at end of file
diff --git a/assets/external/cdn.jsdelivr.net/gh/jdecked/twemoji@16.0.1/assets/svg/2b06.svg b/assets/external/cdn.jsdelivr.net/gh/jdecked/twemoji@16.0.1/assets/svg/2b06.svg
deleted file mode 100644
index 080ca19..0000000
--- a/assets/external/cdn.jsdelivr.net/gh/jdecked/twemoji@16.0.1/assets/svg/2b06.svg
+++ /dev/null
@@ -1 +0,0 @@
-<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#3B88C3" d="M36 32c0 2.209-1.791 4-4 4H4c-2.209 0-4-1.791-4-4V4c0-2.209 1.791-4 4-4h28c2.209 0 4 1.791 4 4v28z"/><path fill="#FFF" d="M22 29v-9h7L18 7 7 20h7v9z"/></svg>
\ No newline at end of file
diff --git a/assets/external/cloud.githubusercontent.com/assets/159488/22399173/aebe8f7a-e597-11e6-930f-7494ee615827.png b/assets/external/cloud.githubusercontent.com/assets/159488/22399173/aebe8f7a-e597-11e6-930f-7494ee615827.png
deleted file mode 100644
index 3c75535..0000000
--- a/assets/external/cloud.githubusercontent.com/assets/159488/22399173/aebe8f7a-e597-11e6-930f-7494ee615827.png
+++ /dev/null
Binary files differ
diff --git a/assets/external/cloud.githubusercontent.com/assets/159488/22399181/d4d60d32-e597-11e6-8dcb-825abcf9ac2a.png b/assets/external/cloud.githubusercontent.com/assets/159488/22399181/d4d60d32-e597-11e6-8dcb-825abcf9ac2a.png
deleted file mode 100644
index 7aac46b..0000000
--- a/assets/external/cloud.githubusercontent.com/assets/159488/22399181/d4d60d32-e597-11e6-8dcb-825abcf9ac2a.png
+++ /dev/null
Binary files differ
diff --git a/assets/external/unpkg.com/mermaid@11/dist/mermaid.min.js b/assets/external/unpkg.com/mermaid@11/dist/mermaid.min.js
index dd3209b..055db5c 100644
--- a/assets/external/unpkg.com/mermaid@11/dist/mermaid.min.js
+++ b/assets/external/unpkg.com/mermaid@11/dist/mermaid.min.js
@@ -1,5 +1,5 @@
-"use strict";var __esbuild_esm_mermaid_nm;(__esbuild_esm_mermaid_nm||={}).mermaid=(()=>{var sNe=Object.create;var Ky=Object.defineProperty;var oNe=Object.getOwnPropertyDescriptor;var lNe=Object.getOwnPropertyNames;var cNe=Object.getPrototypeOf,uNe=Object.prototype.hasOwnProperty;var o=(e,t)=>Ky(e,"name",{value:t,configurable:!0});var z=(e,t)=>()=>(e&&(t=e(e=0)),t);var Js=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports),xr=(e,t)=>{for(var r in t)Ky(e,r,{get:t[r],enumerable:!0})},AU=(e,t,r,i)=>{if(t&&typeof t=="object"||typeof t=="function")for(let n of lNe(t))!uNe.call(e,n)&&n!==r&&Ky(e,n,{get:()=>t[n],enumerable:!(i=oNe(t,n))||i.enumerable});return e};var ys=(e,t,r)=>(r=e!=null?sNe(cNe(e)):{},AU(t||!e||!e.__esModule?Ky(r,"default",{value:e,enumerable:!0}):r,e)),hNe=e=>AU(Ky({},"__esModule",{value:!0}),e);var dNe,_m,Q_,_U,CC=z(()=>{"use strict";dNe=Object.freeze({left:0,top:0,width:16,height:16}),_m=Object.freeze({rotate:0,vFlip:!1,hFlip:!1}),Q_=Object.freeze({...dNe,..._m}),_U=Object.freeze({...Q_,body:"",hidden:!1})});var fNe,DU,RU=z(()=>{"use strict";CC();fNe=Object.freeze({width:null,height:null}),DU=Object.freeze({...fNe,..._m})});var J_,kC,LU=z(()=>{"use strict";J_=o((e,t,r,i="")=>{let n=e.split(":");if(e.slice(0,1)==="@"){if(n.length<2||n.length>3)return null;i=n.shift().slice(1)}if(n.length>3||!n.length)return null;if(n.length>1){let l=n.pop(),u=n.pop(),h={provider:n.length>0?n[0]:i,prefix:u,name:l};return t&&!kC(h)?null:h}let a=n[0],s=a.split("-");if(s.length>1){let l={provider:i,prefix:s.shift(),name:s.join("-")};return t&&!kC(l)?null:l}if(r&&i===""){let l={provider:i,prefix:"",name:a};return t&&!kC(l,r)?null:l}return null},"stringToIcon"),kC=o((e,t)=>e?!!((t&&e.prefix===""||e.prefix)&&e.name):!1,"validateIconName")});function MU(e,t){let r={};!e.hFlip!=!t.hFlip&&(r.hFlip=!0),!e.vFlip!=!t.vFlip&&(r.vFlip=!0);let i=((e.rotate||0)+(t.rotate||0))%4;return i&&(r.rotate=i),r}var NU=z(()=>{"use strict";o(MU,"mergeIconTransformations")});function e7(e,t){let r=MU(e,t);for(let i in _U)i in _m?i in e&&!(i in r)&&(r[i]=_m[i]):i in t?r[i]=t[i]:i in e&&(r[i]=e[i]);return r}var IU=z(()=>{"use strict";CC();NU();o(e7,"mergeIconData")});function OU(e,t){let r=e.icons,i=e.aliases||Object.create(null),n=Object.create(null);function a(s){if(r[s])return n[s]=[];if(!(s in n)){n[s]=null;let l=i[s]&&i[s].parent,u=l&&a(l);u&&(n[s]=[l].concat(u))}return n[s]}return o(a,"resolve"),(t||Object.keys(r).concat(Object.keys(i))).forEach(a),n}var PU=z(()=>{"use strict";o(OU,"getIconsTree")});function BU(e,t,r){let i=e.icons,n=e.aliases||Object.create(null),a={};function s(l){a=e7(i[l]||n[l],a)}return o(s,"parse"),s(t),r.forEach(s),e7(e,a)}function t7(e,t){if(e.icons[t])return BU(e,t,[]);let r=OU(e,[t])[t];return r?BU(e,t,r):null}var FU=z(()=>{"use strict";IU();PU();o(BU,"internalGetIconData");o(t7,"getIconData")});function r7(e,t,r){if(t===1)return e;if(r=r||100,typeof e=="number")return Math.ceil(e*t*r)/r;if(typeof e!="string")return e;let i=e.split(pNe);if(i===null||!i.length)return e;let n=[],a=i.shift(),s=mNe.test(a);for(;;){if(s){let l=parseFloat(a);isNaN(l)?n.push(a):n.push(Math.ceil(l*t*r)/r)}else n.push(a);if(a=i.shift(),a===void 0)return n.join("");s=!s}}var pNe,mNe,$U=z(()=>{"use strict";pNe=/(-?[0-9.]*[0-9]+[0-9.]*)/g,mNe=/^-?[0-9.]*[0-9]+[0-9.]*$/g;o(r7,"calculateSize")});function gNe(e,t="defs"){let r="",i=e.indexOf("<"+t);for(;i>=0;){let n=e.indexOf(">",i),a=e.indexOf("</"+t);if(n===-1||a===-1)break;let s=e.indexOf(">",a);if(s===-1)break;r+=e.slice(n+1,a).trim(),e=e.slice(0,i).trim()+e.slice(s+1)}return{defs:r,content:e}}function yNe(e,t){return e?"<defs>"+e+"</defs>"+t:t}function zU(e,t,r){let i=gNe(e);return yNe(i.defs,t+i.content+r)}var GU=z(()=>{"use strict";o(gNe,"splitSVGDefs");o(yNe,"mergeDefsAndContent");o(zU,"wrapSVGContent")});function i7(e,t){let r={...Q_,...e},i={...DU,...t},n={left:r.left,top:r.top,width:r.width,height:r.height},a=r.body;[r,i].forEach(y=>{let v=[],x=y.hFlip,b=y.vFlip,T=y.rotate;x?b?T+=2:(v.push("translate("+(n.width+n.left).toString()+" "+(0-n.top).toString()+")"),v.push("scale(-1 1)"),n.top=n.left=0):b&&(v.push("translate("+(0-n.left).toString()+" "+(n.height+n.top).toString()+")"),v.push("scale(1 -1)"),n.top=n.left=0);let w;switch(T<0&&(T-=Math.floor(T/4)*4),T=T%4,T){case 1:w=n.height/2+n.top,v.unshift("rotate(90 "+w.toString()+" "+w.toString()+")");break;case 2:v.unshift("rotate(180 "+(n.width/2+n.left).toString()+" "+(n.height/2+n.top).toString()+")");break;case 3:w=n.width/2+n.left,v.unshift("rotate(-90 "+w.toString()+" "+w.toString()+")");break}T%2===1&&(n.left!==n.top&&(w=n.left,n.left=n.top,n.top=w),n.width!==n.height&&(w=n.width,n.width=n.height,n.height=w)),v.length&&(a=zU(a,'<g transform="'+v.join(" ")+'">',"</g>"))});let s=i.width,l=i.height,u=n.width,h=n.height,d,f;s===null?(f=l===null?"1em":l==="auto"?h:l,d=r7(f,u/h)):(d=s==="auto"?u:s,f=l===null?r7(d,h/u):l==="auto"?h:l);let p={},m=o((y,v)=>{vNe(v)||(p[y]=v.toString())},"setAttr");m("width",d),m("height",f);let g=[n.left,n.top,u,h];return p.viewBox=g.join(" "),{attributes:p,viewBox:g,body:a}}var vNe,VU=z(()=>{"use strict";CC();RU();$U();GU();vNe=o(e=>e==="unset"||e==="undefined"||e==="none","isUnsetKeyword");o(i7,"iconToSVG")});function n7(e,t=bNe){let r=[],i;for(;i=xNe.exec(e);)r.push(i[1]);if(!r.length)return e;let n="suffix"+(Math.random()*16777216|Date.now()).toString(16);return r.forEach(a=>{let s=typeof t=="function"?t(a):t+(TNe++).toString(),l=a.replace(/[.*+?^${}()|[\]\\]/g,"\\$&");e=e.replace(new RegExp('([#;"])('+l+')([")]|\\.[a-z])',"g"),"$1"+s+n+"$3")}),e=e.replace(new RegExp(n,"g"),""),e}var xNe,bNe,TNe,WU=z(()=>{"use strict";xNe=/\sid="(\S+)"/g,bNe="IconifyId"+Date.now().toString(16)+(Math.random()*16777216|0).toString(16),TNe=0;o(n7,"replaceIDs")});function a7(e,t){let r=e.indexOf("xlink:")===-1?"":' xmlns:xlink="http://www.w3.org/1999/xlink"';for(let i in t)r+=" "+i+'="'+t[i]+'"';return'<svg xmlns="http://www.w3.org/2000/svg"'+r+">"+e+"</svg>"}var qU=z(()=>{"use strict";o(a7,"iconToHTML")});var UU=z(()=>{"use strict";LU();FU();VU();WU();qU()});var s7,Ai,Dm=z(()=>{"use strict";s7=o((e,t,{depth:r=2,clobber:i=!1}={})=>{let n={depth:r,clobber:i};return Array.isArray(t)&&!Array.isArray(e)?(t.forEach(a=>s7(e,a,n)),e):Array.isArray(t)&&Array.isArray(e)?(t.forEach(a=>{e.includes(a)||e.push(a)}),e):e===void 0||r<=0?e!=null&&typeof e=="object"&&typeof t=="object"?Object.assign(e,t):t:(t!==void 0&&typeof e=="object"&&typeof t=="object"&&Object.keys(t).forEach(a=>{typeof t[a]=="object"&&t[a]!==null&&(e[a]===void 0||typeof e[a]=="object")?(e[a]===void 0&&(e[a]=Array.isArray(t[a])?[]:{}),e[a]=s7(e[a],t[a],{depth:r-1,clobber:i})):(i||typeof e[a]!="object"&&typeof t[a]!="object")&&(e[a]=t[a])}),e)},"assignWithDepth"),Ai=s7});var wC=Js((o7,l7)=>{"use strict";(function(e,t){typeof o7=="object"&&typeof l7<"u"?l7.exports=t():typeof define=="function"&&define.amd?define(t):(e=typeof globalThis<"u"?globalThis:e||self).dayjs=t()})(o7,(function(){"use strict";var e=1e3,t=6e4,r=36e5,i="millisecond",n="second",a="minute",s="hour",l="day",u="week",h="month",d="quarter",f="year",p="date",m="Invalid Date",g=/^(\d{4})[-/]?(\d{1,2})?[-/]?(\d{0,2})[Tt\s]*(\d{1,2})?:?(\d{1,2})?:?(\d{1,2})?[.:]?(\d+)?$/,y=/\[([^\]]+)]|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g,v={name:"en",weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),ordinal:o(function(D){var _=["th","st","nd","rd"],R=D%100;return"["+D+(_[(R-20)%10]||_[R]||_[0])+"]"},"ordinal")},x=o(function(D,_,R){var M=String(D);return!M||M.length>=_?D:""+Array(_+1-M.length).join(R)+D},"m"),b={s:x,z:o(function(D){var _=-D.utcOffset(),R=Math.abs(_),M=Math.floor(R/60),L=R%60;return(_<=0?"+":"-")+x(M,2,"0")+":"+x(L,2,"0")},"z"),m:o(function D(_,R){if(_.date()<R.date())return-D(R,_);var M=12*(R.year()-_.year())+(R.month()-_.month()),L=_.clone().add(M,h),B=R-L<0,O=_.clone().add(M+(B?-1:1),h);return+(-(M+(R-L)/(B?L-O:O-L))||0)},"t"),a:o(function(D){return D<0?Math.ceil(D)||0:Math.floor(D)},"a"),p:o(function(D){return{M:h,y:f,w:u,d:l,D:p,h:s,m:a,s:n,ms:i,Q:d}[D]||String(D||"").toLowerCase().replace(/s$/,"")},"p"),u:o(function(D){return D===void 0},"u")},T="en",w={};w[T]=v;var C="$isDayjsObject",k=o(function(D){return D instanceof P||!(!D||!D[C])},"S"),E=o(function D(_,R,M){var L;if(!_)return T;if(typeof _=="string"){var B=_.toLowerCase();w[B]&&(L=B),R&&(w[B]=R,L=B);var O=_.split("-");if(!L&&O.length>1)return D(O[0])}else{var $=_.name;w[$]=_,L=$}return!M&&L&&(T=L),L||!M&&T},"t"),A=o(function(D,_){if(k(D))return D.clone();var R=typeof _=="object"?_:{};return R.date=D,R.args=arguments,new P(R)},"O"),N=b;N.l=E,N.i=k,N.w=function(D,_){return A(D,{locale:_.$L,utc:_.$u,x:_.$x,$offset:_.$offset})};var P=(function(){function D(R){this.$L=E(R.locale,null,!0),this.parse(R),this.$x=this.$x||R.x||{},this[C]=!0}o(D,"M");var _=D.prototype;return _.parse=function(R){this.$d=(function(M){var L=M.date,B=M.utc;if(L===null)return new Date(NaN);if(N.u(L))return new Date;if(L instanceof Date)return new Date(L);if(typeof L=="string"&&!/Z$/i.test(L)){var O=L.match(g);if(O){var $=O[2]-1||0,G=(O[7]||"0").substring(0,3);return B?new Date(Date.UTC(O[1],$,O[3]||1,O[4]||0,O[5]||0,O[6]||0,G)):new Date(O[1],$,O[3]||1,O[4]||0,O[5]||0,O[6]||0,G)}}return new Date(L)})(R),this.init()},_.init=function(){var R=this.$d;this.$y=R.getFullYear(),this.$M=R.getMonth(),this.$D=R.getDate(),this.$W=R.getDay(),this.$H=R.getHours(),this.$m=R.getMinutes(),this.$s=R.getSeconds(),this.$ms=R.getMilliseconds()},_.$utils=function(){return N},_.isValid=function(){return this.$d.toString()!==m},_.isSame=function(R,M){var L=A(R);return this.startOf(M)<=L&&L<=this.endOf(M)},_.isAfter=function(R,M){return A(R)<this.startOf(M)},_.isBefore=function(R,M){return this.endOf(M)<A(R)},_.$g=function(R,M,L){return N.u(R)?this[M]:this.set(L,R)},_.unix=function(){return Math.floor(this.valueOf()/1e3)},_.valueOf=function(){return this.$d.getTime()},_.startOf=function(R,M){var L=this,B=!!N.u(M)||M,O=N.p(R),$=o(function(Y,ae){var J=N.w(L.$u?Date.UTC(L.$y,ae,Y):new Date(L.$y,ae,Y),L);return B?J:J.endOf(l)},"l"),G=o(function(Y,ae){return N.w(L.toDate()[Y].apply(L.toDate("s"),(B?[0,0,0,0]:[23,59,59,999]).slice(ae)),L)},"$"),F=this.$W,V=this.$M,H=this.$D,j="set"+(this.$u?"UTC":"");switch(O){case f:return B?$(1,0):$(31,11);case h:return B?$(1,V):$(0,V+1);case u:var U=this.$locale().weekStart||0,Q=(F<U?F+7:F)-U;return $(B?H-Q:H+(6-Q),V);case l:case p:return G(j+"Hours",0);case s:return G(j+"Minutes",1);case a:return G(j+"Seconds",2);case n:return G(j+"Milliseconds",3);default:return this.clone()}},_.endOf=function(R){return this.startOf(R,!1)},_.$set=function(R,M){var L,B=N.p(R),O="set"+(this.$u?"UTC":""),$=(L={},L[l]=O+"Date",L[p]=O+"Date",L[h]=O+"Month",L[f]=O+"FullYear",L[s]=O+"Hours",L[a]=O+"Minutes",L[n]=O+"Seconds",L[i]=O+"Milliseconds",L)[B],G=B===l?this.$D+(M-this.$W):M;if(B===h||B===f){var F=this.clone().set(p,1);F.$d[$](G),F.init(),this.$d=F.set(p,Math.min(this.$D,F.daysInMonth())).$d}else $&&this.$d[$](G);return this.init(),this},_.set=function(R,M){return this.clone().$set(R,M)},_.get=function(R){return this[N.p(R)]()},_.add=function(R,M){var L,B=this;R=Number(R);var O=N.p(M),$=o(function(V){var H=A(B);return N.w(H.date(H.date()+Math.round(V*R)),B)},"y");if(O===h)return this.set(h,this.$M+R);if(O===f)return this.set(f,this.$y+R);if(O===l)return $(1);if(O===u)return $(7);var G=(L={},L[a]=t,L[s]=r,L[n]=e,L)[O]||1,F=this.$d.getTime()+R*G;return N.w(F,this)},_.subtract=function(R,M){return this.add(-1*R,M)},_.format=function(R){var M=this,L=this.$locale();if(!this.isValid())return L.invalidDate||m;var B=R||"YYYY-MM-DDTHH:mm:ssZ",O=N.z(this),$=this.$H,G=this.$m,F=this.$M,V=L.weekdays,H=L.months,j=L.meridiem,U=o(function(ae,J,te,re){return ae&&(ae[J]||ae(M,B))||te[J].slice(0,re)},"h"),Q=o(function(ae){return N.s($%12||12,ae,"0")},"d"),Y=j||function(ae,J,te){var re=ae<12?"AM":"PM";return te?re.toLowerCase():re};return B.replace(y,(function(ae,J){return J||(function(te){switch(te){case"YY":return String(M.$y).slice(-2);case"YYYY":return N.s(M.$y,4,"0");case"M":return F+1;case"MM":return N.s(F+1,2,"0");case"MMM":return U(L.monthsShort,F,H,3);case"MMMM":return U(H,F);case"D":return M.$D;case"DD":return N.s(M.$D,2,"0");case"d":return String(M.$W);case"dd":return U(L.weekdaysMin,M.$W,V,2);case"ddd":return U(L.weekdaysShort,M.$W,V,3);case"dddd":return V[M.$W];case"H":return String($);case"HH":return N.s($,2,"0");case"h":return Q(1);case"hh":return Q(2);case"a":return Y($,G,!0);case"A":return Y($,G,!1);case"m":return String(G);case"mm":return N.s(G,2,"0");case"s":return String(M.$s);case"ss":return N.s(M.$s,2,"0");case"SSS":return N.s(M.$ms,3,"0");case"Z":return O}return null})(ae)||O.replace(":","")}))},_.utcOffset=function(){return 15*-Math.round(this.$d.getTimezoneOffset()/15)},_.diff=function(R,M,L){var B,O=this,$=N.p(M),G=A(R),F=(G.utcOffset()-this.utcOffset())*t,V=this-G,H=o(function(){return N.m(O,G)},"D");switch($){case f:B=H()/12;break;case h:B=H();break;case d:B=H()/3;break;case u:B=(V-F)/6048e5;break;case l:B=(V-F)/864e5;break;case s:B=V/r;break;case a:B=V/t;break;case n:B=V/e;break;default:B=V}return L?B:N.a(B)},_.daysInMonth=function(){return this.endOf(h).$D},_.$locale=function(){return w[this.$L]},_.locale=function(R,M){if(!R)return this.$L;var L=this.clone(),B=E(R,M,!0);return B&&(L.$L=B),L},_.clone=function(){return N.w(this.$d,this)},_.toDate=function(){return new Date(this.valueOf())},_.toJSON=function(){return this.isValid()?this.toISOString():null},_.toISOString=function(){return this.$d.toISOString()},_.toString=function(){return this.$d.toUTCString()},D})(),I=P.prototype;return A.prototype=I,[["$ms",i],["$s",n],["$m",a],["$H",s],["$W",l],["$M",h],["$y",f],["$D",p]].forEach((function(D){I[D[1]]=function(_){return this.$g(_,D[0],D[1])}})),A.extend=function(D,_){return D.$i||(D(_,P,A),D.$i=!0),A},A.locale=E,A.isDayjs=k,A.unix=function(D){return A(1e3*D)},A.en=w[T],A.Ls=w,A.p={},A}))});var HU,du,Z,Zy,So,St=z(()=>{"use strict";HU=ys(wC(),1),du={trace:0,debug:1,info:2,warn:3,error:4,fatal:5},Z={trace:o((...e)=>{},"trace"),debug:o((...e)=>{},"debug"),info:o((...e)=>{},"info"),warn:o((...e)=>{},"warn"),error:o((...e)=>{},"error"),fatal:o((...e)=>{},"fatal")},Zy=o(function(e="fatal"){let t=du.fatal;typeof e=="string"?e.toLowerCase()in du&&(t=du[e]):typeof e=="number"&&(t=e),Z.trace=()=>{},Z.debug=()=>{},Z.info=()=>{},Z.warn=()=>{},Z.error=()=>{},Z.fatal=()=>{},t<=du.fatal&&(Z.fatal=console.error?console.error.bind(console,So("FATAL"),"color: orange"):console.log.bind(console,"\x1B[35m",So("FATAL"))),t<=du.error&&(Z.error=console.error?console.error.bind(console,So("ERROR"),"color: orange"):console.log.bind(console,"\x1B[31m",So("ERROR"))),t<=du.warn&&(Z.warn=console.warn?console.warn.bind(console,So("WARN"),"color: orange"):console.log.bind(console,"\x1B[33m",So("WARN"))),t<=du.info&&(Z.info=console.info?console.info.bind(console,So("INFO"),"color: lightblue"):console.log.bind(console,"\x1B[34m",So("INFO"))),t<=du.debug&&(Z.debug=console.debug?console.debug.bind(console,So("DEBUG"),"color: lightgreen"):console.log.bind(console,"\x1B[32m",So("DEBUG"))),t<=du.trace&&(Z.trace=console.debug?console.debug.bind(console,So("TRACE"),"color: lightgreen"):console.log.bind(console,"\x1B[32m",So("TRACE")))},"setLogLevel"),So=o(e=>`%c${(0,HU.default)().format("ss.SSS")} : ${e} : `,"format")});var SC,YU,jU=z(()=>{"use strict";SC={min:{r:0,g:0,b:0,s:0,l:0,a:0},max:{r:255,g:255,b:255,h:360,s:100,l:100,a:1},clamp:{r:o(e=>e>=255?255:e<0?0:e,"r"),g:o(e=>e>=255?255:e<0?0:e,"g"),b:o(e=>e>=255?255:e<0?0:e,"b"),h:o(e=>e%360,"h"),s:o(e=>e>=100?100:e<0?0:e,"s"),l:o(e=>e>=100?100:e<0?0:e,"l"),a:o(e=>e>=1?1:e<0?0:e,"a")},toLinear:o(e=>{let t=e/255;return e>.03928?Math.pow((t+.055)/1.055,2.4):t/12.92},"toLinear"),hue2rgb:o((e,t,r)=>(r<0&&(r+=1),r>1&&(r-=1),r<.16666666666666666?e+(t-e)*6*r:r<.5?t:r<.6666666666666666?e+(t-e)*(.6666666666666666-r)*6:e),"hue2rgb"),hsl2rgb:o(({h:e,s:t,l:r},i)=>{if(!t)return r*2.55;e/=360,t/=100,r/=100;let n=r<.5?r*(1+t):r+t-r*t,a=2*r-n;switch(i){case"r":return SC.hue2rgb(a,n,e+.3333333333333333)*255;case"g":return SC.hue2rgb(a,n,e)*255;case"b":return SC.hue2rgb(a,n,e-.3333333333333333)*255}},"hsl2rgb"),rgb2hsl:o(({r:e,g:t,b:r},i)=>{e/=255,t/=255,r/=255;let n=Math.max(e,t,r),a=Math.min(e,t,r),s=(n+a)/2;if(i==="l")return s*100;if(n===a)return 0;let l=n-a,u=s>.5?l/(2-n-a):l/(n+a);if(i==="s")return u*100;switch(n){case e:return((t-r)/l+(t<r?6:0))*60;case t:return((r-e)/l+2)*60;case r:return((e-t)/l+4)*60;default:return-1}},"rgb2hsl")},YU=SC});var CNe,XU,KU=z(()=>{"use strict";CNe={clamp:o((e,t,r)=>t>r?Math.min(t,Math.max(r,e)):Math.min(r,Math.max(t,e)),"clamp"),round:o(e=>Math.round(e*1e10)/1e10,"round")},XU=CNe});var kNe,ZU,QU=z(()=>{"use strict";kNe={dec2hex:o(e=>{let t=Math.round(e).toString(16);return t.length>1?t:`0${t}`},"dec2hex")},ZU=kNe});var wNe,ir,ec=z(()=>{"use strict";jU();KU();QU();wNe={channel:YU,lang:XU,unit:ZU},ir=wNe});var fu,On,Qy=z(()=>{"use strict";ec();fu={};for(let e=0;e<=255;e++)fu[e]=ir.unit.dec2hex(e);On={ALL:0,RGB:1,HSL:2}});var c7,JU,eH=z(()=>{"use strict";Qy();c7=class{static{o(this,"Type")}constructor(){this.type=On.ALL}get(){return this.type}set(t){if(this.type&&this.type!==t)throw new Error("Cannot change both RGB and HSL channels at the same time");this.type=t}reset(){this.type=On.ALL}is(t){return this.type===t}},JU=c7});var u7,tH,rH=z(()=>{"use strict";ec();eH();Qy();u7=class{static{o(this,"Channels")}constructor(t,r){this.color=r,this.changed=!1,this.data=t,this.type=new JU}set(t,r){return this.color=r,this.changed=!1,this.data=t,this.type.type=On.ALL,this}_ensureHSL(){let t=this.data,{h:r,s:i,l:n}=t;r===void 0&&(t.h=ir.channel.rgb2hsl(t,"h")),i===void 0&&(t.s=ir.channel.rgb2hsl(t,"s")),n===void 0&&(t.l=ir.channel.rgb2hsl(t,"l"))}_ensureRGB(){let t=this.data,{r,g:i,b:n}=t;r===void 0&&(t.r=ir.channel.hsl2rgb(t,"r")),i===void 0&&(t.g=ir.channel.hsl2rgb(t,"g")),n===void 0&&(t.b=ir.channel.hsl2rgb(t,"b"))}get r(){let t=this.data,r=t.r;return!this.type.is(On.HSL)&&r!==void 0?r:(this._ensureHSL(),ir.channel.hsl2rgb(t,"r"))}get g(){let t=this.data,r=t.g;return!this.type.is(On.HSL)&&r!==void 0?r:(this._ensureHSL(),ir.channel.hsl2rgb(t,"g"))}get b(){let t=this.data,r=t.b;return!this.type.is(On.HSL)&&r!==void 0?r:(this._ensureHSL(),ir.channel.hsl2rgb(t,"b"))}get h(){let t=this.data,r=t.h;return!this.type.is(On.RGB)&&r!==void 0?r:(this._ensureRGB(),ir.channel.rgb2hsl(t,"h"))}get s(){let t=this.data,r=t.s;return!this.type.is(On.RGB)&&r!==void 0?r:(this._ensureRGB(),ir.channel.rgb2hsl(t,"s"))}get l(){let t=this.data,r=t.l;return!this.type.is(On.RGB)&&r!==void 0?r:(this._ensureRGB(),ir.channel.rgb2hsl(t,"l"))}get a(){return this.data.a}set r(t){this.type.set(On.RGB),this.changed=!0,this.data.r=t}set g(t){this.type.set(On.RGB),this.changed=!0,this.data.g=t}set b(t){this.type.set(On.RGB),this.changed=!0,this.data.b=t}set h(t){this.type.set(On.HSL),this.changed=!0,this.data.h=t}set s(t){this.type.set(On.HSL),this.changed=!0,this.data.s=t}set l(t){this.type.set(On.HSL),this.changed=!0,this.data.l=t}set a(t){this.changed=!0,this.data.a=t}},tH=u7});var SNe,Oh,Jy=z(()=>{"use strict";rH();SNe=new tH({r:0,g:0,b:0,a:0},"transparent"),Oh=SNe});var iH,Bf,h7=z(()=>{"use strict";Jy();Qy();iH={re:/^#((?:[a-f0-9]{2}){2,4}|[a-f0-9]{3})$/i,parse:o(e=>{if(e.charCodeAt(0)!==35)return;let t=e.match(iH.re);if(!t)return;let r=t[1],i=parseInt(r,16),n=r.length,a=n%4===0,s=n>4,l=s?1:17,u=s?8:4,h=a?0:-1,d=s?255:15;return Oh.set({r:(i>>u*(h+3)&d)*l,g:(i>>u*(h+2)&d)*l,b:(i>>u*(h+1)&d)*l,a:a?(i&d)*l/255:1},e)},"parse"),stringify:o(e=>{let{r:t,g:r,b:i,a:n}=e;return n<1?`#${fu[Math.round(t)]}${fu[Math.round(r)]}${fu[Math.round(i)]}${fu[Math.round(n*255)]}`:`#${fu[Math.round(t)]}${fu[Math.round(r)]}${fu[Math.round(i)]}`},"stringify")},Bf=iH});var EC,ev,nH=z(()=>{"use strict";ec();Jy();EC={re:/^hsla?\(\s*?(-?(?:\d+(?:\.\d+)?|(?:\.\d+))(?:e-?\d+)?(?:deg|grad|rad|turn)?)\s*?(?:,|\s)\s*?(-?(?:\d+(?:\.\d+)?|(?:\.\d+))(?:e-?\d+)?%)\s*?(?:,|\s)\s*?(-?(?:\d+(?:\.\d+)?|(?:\.\d+))(?:e-?\d+)?%)(?:\s*?(?:,|\/)\s*?\+?(-?(?:\d+(?:\.\d+)?|(?:\.\d+))(?:e-?\d+)?(%)?))?\s*?\)$/i,hueRe:/^(.+?)(deg|grad|rad|turn)$/i,_hue2deg:o(e=>{let t=e.match(EC.hueRe);if(t){let[,r,i]=t;switch(i){case"grad":return ir.channel.clamp.h(parseFloat(r)*.9);case"rad":return ir.channel.clamp.h(parseFloat(r)*180/Math.PI);case"turn":return ir.channel.clamp.h(parseFloat(r)*360)}}return ir.channel.clamp.h(parseFloat(e))},"_hue2deg"),parse:o(e=>{let t=e.charCodeAt(0);if(t!==104&&t!==72)return;let r=e.match(EC.re);if(!r)return;let[,i,n,a,s,l]=r;return Oh.set({h:EC._hue2deg(i),s:ir.channel.clamp.s(parseFloat(n)),l:ir.channel.clamp.l(parseFloat(a)),a:s?ir.channel.clamp.a(l?parseFloat(s)/100:parseFloat(s)):1},e)},"parse"),stringify:o(e=>{let{h:t,s:r,l:i,a:n}=e;return n<1?`hsla(${ir.lang.round(t)}, ${ir.lang.round(r)}%, ${ir.lang.round(i)}%, ${n})`:`hsl(${ir.lang.round(t)}, ${ir.lang.round(r)}%, ${ir.lang.round(i)}%)`},"stringify")},ev=EC});var AC,d7,aH=z(()=>{"use strict";h7();AC={colors:{aliceblue:"#f0f8ff",antiquewhite:"#faebd7",aqua:"#00ffff",aquamarine:"#7fffd4",azure:"#f0ffff",beige:"#f5f5dc",bisque:"#ffe4c4",black:"#000000",blanchedalmond:"#ffebcd",blue:"#0000ff",blueviolet:"#8a2be2",brown:"#a52a2a",burlywood:"#deb887",cadetblue:"#5f9ea0",chartreuse:"#7fff00",chocolate:"#d2691e",coral:"#ff7f50",cornflowerblue:"#6495ed",cornsilk:"#fff8dc",crimson:"#dc143c",cyanaqua:"#00ffff",darkblue:"#00008b",darkcyan:"#008b8b",darkgoldenrod:"#b8860b",darkgray:"#a9a9a9",darkgreen:"#006400",darkgrey:"#a9a9a9",darkkhaki:"#bdb76b",darkmagenta:"#8b008b",darkolivegreen:"#556b2f",darkorange:"#ff8c00",darkorchid:"#9932cc",darkred:"#8b0000",darksalmon:"#e9967a",darkseagreen:"#8fbc8f",darkslateblue:"#483d8b",darkslategray:"#2f4f4f",darkslategrey:"#2f4f4f",darkturquoise:"#00ced1",darkviolet:"#9400d3",deeppink:"#ff1493",deepskyblue:"#00bfff",dimgray:"#696969",dimgrey:"#696969",dodgerblue:"#1e90ff",firebrick:"#b22222",floralwhite:"#fffaf0",forestgreen:"#228b22",fuchsia:"#ff00ff",gainsboro:"#dcdcdc",ghostwhite:"#f8f8ff",gold:"#ffd700",goldenrod:"#daa520",gray:"#808080",green:"#008000",greenyellow:"#adff2f",grey:"#808080",honeydew:"#f0fff0",hotpink:"#ff69b4",indianred:"#cd5c5c",indigo:"#4b0082",ivory:"#fffff0",khaki:"#f0e68c",lavender:"#e6e6fa",lavenderblush:"#fff0f5",lawngreen:"#7cfc00",lemonchiffon:"#fffacd",lightblue:"#add8e6",lightcoral:"#f08080",lightcyan:"#e0ffff",lightgoldenrodyellow:"#fafad2",lightgray:"#d3d3d3",lightgreen:"#90ee90",lightgrey:"#d3d3d3",lightpink:"#ffb6c1",lightsalmon:"#ffa07a",lightseagreen:"#20b2aa",lightskyblue:"#87cefa",lightslategray:"#778899",lightslategrey:"#778899",lightsteelblue:"#b0c4de",lightyellow:"#ffffe0",lime:"#00ff00",limegreen:"#32cd32",linen:"#faf0e6",magenta:"#ff00ff",maroon:"#800000",mediumaquamarine:"#66cdaa",mediumblue:"#0000cd",mediumorchid:"#ba55d3",mediumpurple:"#9370db",mediumseagreen:"#3cb371",mediumslateblue:"#7b68ee",mediumspringgreen:"#00fa9a",mediumturquoise:"#48d1cc",mediumvioletred:"#c71585",midnightblue:"#191970",mintcream:"#f5fffa",mistyrose:"#ffe4e1",moccasin:"#ffe4b5",navajowhite:"#ffdead",navy:"#000080",oldlace:"#fdf5e6",olive:"#808000",olivedrab:"#6b8e23",orange:"#ffa500",orangered:"#ff4500",orchid:"#da70d6",palegoldenrod:"#eee8aa",palegreen:"#98fb98",paleturquoise:"#afeeee",palevioletred:"#db7093",papayawhip:"#ffefd5",peachpuff:"#ffdab9",peru:"#cd853f",pink:"#ffc0cb",plum:"#dda0dd",powderblue:"#b0e0e6",purple:"#800080",rebeccapurple:"#663399",red:"#ff0000",rosybrown:"#bc8f8f",royalblue:"#4169e1",saddlebrown:"#8b4513",salmon:"#fa8072",sandybrown:"#f4a460",seagreen:"#2e8b57",seashell:"#fff5ee",sienna:"#a0522d",silver:"#c0c0c0",skyblue:"#87ceeb",slateblue:"#6a5acd",slategray:"#708090",slategrey:"#708090",snow:"#fffafa",springgreen:"#00ff7f",tan:"#d2b48c",teal:"#008080",thistle:"#d8bfd8",transparent:"#00000000",turquoise:"#40e0d0",violet:"#ee82ee",wheat:"#f5deb3",white:"#ffffff",whitesmoke:"#f5f5f5",yellow:"#ffff00",yellowgreen:"#9acd32"},parse:o(e=>{e=e.toLowerCase();let t=AC.colors[e];if(t)return Bf.parse(t)},"parse"),stringify:o(e=>{let t=Bf.stringify(e);for(let r in AC.colors)if(AC.colors[r]===t)return r},"stringify")},d7=AC});var sH,tv,oH=z(()=>{"use strict";ec();Jy();sH={re:/^rgba?\(\s*?(-?(?:\d+(?:\.\d+)?|(?:\.\d+))(?:e\d+)?(%?))\s*?(?:,|\s)\s*?(-?(?:\d+(?:\.\d+)?|(?:\.\d+))(?:e\d+)?(%?))\s*?(?:,|\s)\s*?(-?(?:\d+(?:\.\d+)?|(?:\.\d+))(?:e\d+)?(%?))(?:\s*?(?:,|\/)\s*?\+?(-?(?:\d+(?:\.\d+)?|(?:\.\d+))(?:e\d+)?(%?)))?\s*?\)$/i,parse:o(e=>{let t=e.charCodeAt(0);if(t!==114&&t!==82)return;let r=e.match(sH.re);if(!r)return;let[,i,n,a,s,l,u,h,d]=r;return Oh.set({r:ir.channel.clamp.r(n?parseFloat(i)*2.55:parseFloat(i)),g:ir.channel.clamp.g(s?parseFloat(a)*2.55:parseFloat(a)),b:ir.channel.clamp.b(u?parseFloat(l)*2.55:parseFloat(l)),a:h?ir.channel.clamp.a(d?parseFloat(h)/100:parseFloat(h)):1},e)},"parse"),stringify:o(e=>{let{r:t,g:r,b:i,a:n}=e;return n<1?`rgba(${ir.lang.round(t)}, ${ir.lang.round(r)}, ${ir.lang.round(i)}, ${ir.lang.round(n)})`:`rgb(${ir.lang.round(t)}, ${ir.lang.round(r)}, ${ir.lang.round(i)})`},"stringify")},tv=sH});var ENe,Pn,pu=z(()=>{"use strict";h7();nH();aH();oH();Qy();ENe={format:{keyword:d7,hex:Bf,rgb:tv,rgba:tv,hsl:ev,hsla:ev},parse:o(e=>{if(typeof e!="string")return e;let t=Bf.parse(e)||tv.parse(e)||ev.parse(e)||d7.parse(e);if(t)return t;throw new Error(`Unsupported color format: "${e}"`)},"parse"),stringify:o(e=>!e.changed&&e.color?e.color:e.type.is(On.HSL)||e.data.r===void 0?ev.stringify(e):e.a<1||!Number.isInteger(e.r)||!Number.isInteger(e.g)||!Number.isInteger(e.b)?tv.stringify(e):Bf.stringify(e),"stringify")},Pn=ENe});var ANe,_C,f7=z(()=>{"use strict";ec();pu();ANe=o((e,t)=>{let r=Pn.parse(e);for(let i in t)r[i]=ir.channel.clamp[i](t[i]);return Pn.stringify(r)},"change"),_C=ANe});var _Ne,mn,p7=z(()=>{"use strict";ec();Jy();pu();f7();_Ne=o((e,t,r=0,i=1)=>{if(typeof e!="number")return _C(e,{a:t});let n=Oh.set({r:ir.channel.clamp.r(e),g:ir.channel.clamp.g(t),b:ir.channel.clamp.b(r),a:ir.channel.clamp.a(i)});return Pn.stringify(n)},"rgba"),mn=_Ne});var DNe,Ff,lH=z(()=>{"use strict";ec();pu();DNe=o((e,t)=>ir.lang.round(Pn.parse(e)[t]),"channel"),Ff=DNe});var RNe,cH,uH=z(()=>{"use strict";ec();pu();RNe=o(e=>{let{r:t,g:r,b:i}=Pn.parse(e),n=.2126*ir.channel.toLinear(t)+.7152*ir.channel.toLinear(r)+.0722*ir.channel.toLinear(i);return ir.lang.round(n)},"luminance"),cH=RNe});var LNe,hH,dH=z(()=>{"use strict";uH();LNe=o(e=>cH(e)>=.5,"isLight"),hH=LNe});var MNe,ri,fH=z(()=>{"use strict";dH();MNe=o(e=>!hH(e),"isDark"),ri=MNe});var NNe,Rm,DC=z(()=>{"use strict";ec();pu();NNe=o((e,t,r)=>{let i=Pn.parse(e),n=i[t],a=ir.channel.clamp[t](n+r);return n!==a&&(i[t]=a),Pn.stringify(i)},"adjustChannel"),Rm=NNe});var INe,je,pH=z(()=>{"use strict";DC();INe=o((e,t)=>Rm(e,"l",t),"lighten"),je=INe});var ONe,Xe,mH=z(()=>{"use strict";DC();ONe=o((e,t)=>Rm(e,"l",-t),"darken"),Xe=ONe});var PNe,RC,gH=z(()=>{"use strict";DC();PNe=o((e,t)=>Rm(e,"a",-t),"transparentize"),RC=PNe});var BNe,ne,yH=z(()=>{"use strict";pu();f7();BNe=o((e,t)=>{let r=Pn.parse(e),i={};for(let n in t)t[n]&&(i[n]=r[n]+t[n]);return _C(e,i)},"adjust"),ne=BNe});var FNe,vH,xH=z(()=>{"use strict";pu();p7();FNe=o((e,t,r=50)=>{let{r:i,g:n,b:a,a:s}=Pn.parse(e),{r:l,g:u,b:h,a:d}=Pn.parse(t),f=r/100,p=f*2-1,m=s-d,y=((p*m===-1?p:(p+m)/(1+p*m))+1)/2,v=1-y,x=i*y+l*v,b=n*y+u*v,T=a*y+h*v,w=s*f+d*(1-f);return mn(x,b,T,w)},"mix"),vH=FNe});var $Ne,Ge,bH=z(()=>{"use strict";pu();xH();$Ne=o((e,t=100)=>{let r=Pn.parse(e);return r.r=255-r.r,r.g=255-r.g,r.b=255-r.b,vH(r,e,t)},"invert"),Ge=$Ne});var TH=z(()=>{"use strict";p7();lH();fH();pH();mH();gH();yH();bH()});var Cn=z(()=>{"use strict";TH()});var kn,wn,dl=z(()=>{"use strict";kn="#ffffff",wn="#f2f2f2"});var Jt,Eo=z(()=>{"use strict";Cn();Jt=o((e,t)=>t?ne(e,{s:-40,l:10}):ne(e,{s:-40,l:-10}),"mkBorder")});var g7,CH,kH=z(()=>{"use strict";Cn();dl();Eo();g7=class{static{o(this,"Theme")}constructor(){this.background="#f4f4f4",this.primaryColor="#fff4dd",this.noteBkgColor="#fff5ad",this.noteTextColor="#333",this.THEME_COLOR_LIMIT=12,this.radius=5,this.strokeWidth=1,this.fontFamily='"trebuchet ms", verdana, arial, sans-serif',this.fontSize="16px",this.useGradient=!0,this.dropShadow="drop-shadow( 1px 2px 2px rgba(185,185,185,1))"}updateColors(){if(this.primaryTextColor=this.primaryTextColor||(this.darkMode?"#eee":"#333"),this.secondaryColor=this.secondaryColor||ne(this.primaryColor,{h:-120}),this.tertiaryColor=this.tertiaryColor||ne(this.primaryColor,{h:180,l:5}),this.primaryBorderColor=this.primaryBorderColor||Jt(this.primaryColor,this.darkMode),this.secondaryBorderColor=this.secondaryBorderColor||Jt(this.secondaryColor,this.darkMode),this.tertiaryBorderColor=this.tertiaryBorderColor||Jt(this.tertiaryColor,this.darkMode),this.noteBorderColor=this.noteBorderColor||Jt(this.noteBkgColor,this.darkMode),this.noteBkgColor=this.noteBkgColor||"#fff5ad",this.noteTextColor=this.noteTextColor||"#333",this.secondaryTextColor=this.secondaryTextColor||Ge(this.secondaryColor),this.tertiaryTextColor=this.tertiaryTextColor||Ge(this.tertiaryColor),this.lineColor=this.lineColor||Ge(this.background),this.arrowheadColor=this.arrowheadColor||Ge(this.background),this.textColor=this.textColor||this.primaryTextColor,this.border2=this.border2||this.tertiaryBorderColor,this.nodeBkg=this.nodeBkg||this.primaryColor,this.mainBkg=this.mainBkg||this.primaryColor,this.nodeBorder=this.nodeBorder||this.primaryBorderColor,this.clusterBkg=this.clusterBkg||this.tertiaryColor,this.clusterBorder=this.clusterBorder||this.tertiaryBorderColor,this.defaultLinkColor=this.defaultLinkColor||this.lineColor,this.titleColor=this.titleColor||this.tertiaryTextColor,this.edgeLabelBackground=this.edgeLabelBackground||(this.darkMode?Xe(this.secondaryColor,30):this.secondaryColor),this.nodeTextColor=this.nodeTextColor||this.primaryTextColor,this.actorBorder=this.actorBorder||this.primaryBorderColor,this.actorBkg=this.actorBkg||this.mainBkg,this.actorTextColor=this.actorTextColor||this.primaryTextColor,this.actorLineColor=this.actorLineColor||this.actorBorder,this.labelBoxBkgColor=this.labelBoxBkgColor||this.actorBkg,this.signalColor=this.signalColor||this.textColor,this.signalTextColor=this.signalTextColor||this.textColor,this.labelBoxBorderColor=this.labelBoxBorderColor||this.actorBorder,this.labelTextColor=this.labelTextColor||this.actorTextColor,this.loopTextColor=this.loopTextColor||this.actorTextColor,this.activationBorderColor=this.activationBorderColor||Xe(this.secondaryColor,10),this.activationBkgColor=this.activationBkgColor||this.secondaryColor,this.sequenceNumberColor=this.sequenceNumberColor||Ge(this.lineColor),this.sectionBkgColor=this.sectionBkgColor||this.tertiaryColor,this.altSectionBkgColor=this.altSectionBkgColor||"white",this.sectionBkgColor=this.sectionBkgColor||this.secondaryColor,this.sectionBkgColor2=this.sectionBkgColor2||this.primaryColor,this.excludeBkgColor=this.excludeBkgColor||"#eeeeee",this.taskBorderColor=this.taskBorderColor||this.primaryBorderColor,this.taskBkgColor=this.taskBkgColor||this.primaryColor,this.activeTaskBorderColor=this.activeTaskBorderColor||this.primaryColor,this.activeTaskBkgColor=this.activeTaskBkgColor||je(this.primaryColor,23),this.gridColor=this.gridColor||"lightgrey",this.doneTaskBkgColor=this.doneTaskBkgColor||"lightgrey",this.doneTaskBorderColor=this.doneTaskBorderColor||"grey",this.critBorderColor=this.critBorderColor||"#ff8888",this.critBkgColor=this.critBkgColor||"red",this.todayLineColor=this.todayLineColor||"red",this.vertLineColor=this.vertLineColor||"navy",this.taskTextColor=this.taskTextColor||this.textColor,this.taskTextOutsideColor=this.taskTextOutsideColor||this.textColor,this.taskTextLightColor=this.taskTextLightColor||this.textColor,this.taskTextColor=this.taskTextColor||this.primaryTextColor,this.taskTextDarkColor=this.taskTextDarkColor||this.textColor,this.taskTextClickableColor=this.taskTextClickableColor||"#003163",this.noteFontWeight=this.noteFontWeight||"normal",this.fontWeight=this.fontWeight||"normal",this.personBorder=this.personBorder||this.primaryBorderColor,this.personBkg=this.personBkg||this.mainBkg,this.darkMode?(this.rowOdd=this.rowOdd||Xe(this.mainBkg,5)||"#ffffff",this.rowEven=this.rowEven||Xe(this.mainBkg,10)):(this.rowOdd=this.rowOdd||je(this.mainBkg,75)||"#ffffff",this.rowEven=this.rowEven||je(this.mainBkg,5)),this.transitionColor=this.transitionColor||this.lineColor,this.transitionLabelColor=this.transitionLabelColor||this.textColor,this.stateLabelColor=this.stateLabelColor||this.stateBkg||this.primaryTextColor,this.stateBkg=this.stateBkg||this.mainBkg,this.labelBackgroundColor=this.labelBackgroundColor||this.stateBkg,this.compositeBackground=this.compositeBackground||this.background||this.tertiaryColor,this.altBackground=this.altBackground||this.tertiaryColor,this.compositeTitleBackground=this.compositeTitleBackground||this.mainBkg,this.compositeBorder=this.compositeBorder||this.nodeBorder,this.innerEndBackground=this.nodeBorder,this.errorBkgColor=this.errorBkgColor||this.tertiaryColor,this.errorTextColor=this.errorTextColor||this.tertiaryTextColor,this.transitionColor=this.transitionColor||this.lineColor,this.specialStateColor=this.lineColor,this.cScale0=this.cScale0||this.primaryColor,this.cScale1=this.cScale1||this.secondaryColor,this.cScale2=this.cScale2||this.tertiaryColor,this.cScale3=this.cScale3||ne(this.primaryColor,{h:30}),this.cScale4=this.cScale4||ne(this.primaryColor,{h:60}),this.cScale5=this.cScale5||ne(this.primaryColor,{h:90}),this.cScale6=this.cScale6||ne(this.primaryColor,{h:120}),this.cScale7=this.cScale7||ne(this.primaryColor,{h:150}),this.cScale8=this.cScale8||ne(this.primaryColor,{h:210,l:150}),this.cScale9=this.cScale9||ne(this.primaryColor,{h:270}),this.cScale10=this.cScale10||ne(this.primaryColor,{h:300}),this.cScale11=this.cScale11||ne(this.primaryColor,{h:330}),this.darkMode)for(let r=0;r<this.THEME_COLOR_LIMIT;r++)this["cScale"+r]=Xe(this["cScale"+r],75);else for(let r=0;r<this.THEME_COLOR_LIMIT;r++)this["cScale"+r]=Xe(this["cScale"+r],25);for(let r=0;r<this.THEME_COLOR_LIMIT;r++)this["cScaleInv"+r]=this["cScaleInv"+r]||Ge(this["cScale"+r]);for(let r=0;r<this.THEME_COLOR_LIMIT;r++)this.darkMode?this["cScalePeer"+r]=this["cScalePeer"+r]||je(this["cScale"+r],10):this["cScalePeer"+r]=this["cScalePeer"+r]||Xe(this["cScale"+r],10);this.scaleLabelColor=this.scaleLabelColor||this.labelTextColor;for(let r=0;r<this.THEME_COLOR_LIMIT;r++)this["cScaleLabel"+r]=this["cScaleLabel"+r]||this.scaleLabelColor;let t=this.darkMode?-4:-1;for(let r=0;r<5;r++)this["surface"+r]=this["surface"+r]||ne(this.mainBkg,{h:180,s:-15,l:t*(5+r*3)}),this["surfacePeer"+r]=this["surfacePeer"+r]||ne(this.mainBkg,{h:180,s:-15,l:t*(8+r*3)});this.classText=this.classText||this.textColor,this.fillType0=this.fillType0||this.primaryColor,this.fillType1=this.fillType1||this.secondaryColor,this.fillType2=this.fillType2||ne(this.primaryColor,{h:64}),this.fillType3=this.fillType3||ne(this.secondaryColor,{h:64}),this.fillType4=this.fillType4||ne(this.primaryColor,{h:-64}),this.fillType5=this.fillType5||ne(this.secondaryColor,{h:-64}),this.fillType6=this.fillType6||ne(this.primaryColor,{h:128}),this.fillType7=this.fillType7||ne(this.secondaryColor,{h:128}),this.pie1=this.pie1||this.primaryColor,this.pie2=this.pie2||this.secondaryColor,this.pie3=this.pie3||this.tertiaryColor,this.pie4=this.pie4||ne(this.primaryColor,{l:-10}),this.pie5=this.pie5||ne(this.secondaryColor,{l:-10}),this.pie6=this.pie6||ne(this.tertiaryColor,{l:-10}),this.pie7=this.pie7||ne(this.primaryColor,{h:60,l:-10}),this.pie8=this.pie8||ne(this.primaryColor,{h:-60,l:-10}),this.pie9=this.pie9||ne(this.primaryColor,{h:120,l:0}),this.pie10=this.pie10||ne(this.primaryColor,{h:60,l:-20}),this.pie11=this.pie11||ne(this.primaryColor,{h:-60,l:-20}),this.pie12=this.pie12||ne(this.primaryColor,{h:120,l:-10}),this.pieTitleTextSize=this.pieTitleTextSize||"25px",this.pieTitleTextColor=this.pieTitleTextColor||this.taskTextDarkColor,this.pieSectionTextSize=this.pieSectionTextSize||"17px",this.pieSectionTextColor=this.pieSectionTextColor||this.textColor,this.pieLegendTextSize=this.pieLegendTextSize||"17px",this.pieLegendTextColor=this.pieLegendTextColor||this.taskTextDarkColor,this.pieStrokeColor=this.pieStrokeColor||"black",this.pieStrokeWidth=this.pieStrokeWidth||"2px",this.pieOuterStrokeWidth=this.pieOuterStrokeWidth||"2px",this.pieOuterStrokeColor=this.pieOuterStrokeColor||"black",this.pieOpacity=this.pieOpacity||"0.7",this.venn1=this.venn1??ne(this.primaryColor,{l:-30}),this.venn2=this.venn2??ne(this.secondaryColor,{l:-30}),this.venn3=this.venn3??ne(this.tertiaryColor,{l:-30}),this.venn4=this.venn4??ne(this.primaryColor,{h:60,l:-30}),this.venn5=this.venn5??ne(this.primaryColor,{h:-60,l:-30}),this.venn6=this.venn6??ne(this.secondaryColor,{h:60,l:-30}),this.venn7=this.venn7??ne(this.primaryColor,{h:120,l:-30}),this.venn8=this.venn8??ne(this.secondaryColor,{h:120,l:-30}),this.vennTitleTextColor=this.vennTitleTextColor??this.titleColor,this.vennSetTextColor=this.vennSetTextColor??this.textColor,this.radar={axisColor:this.radar?.axisColor||this.lineColor,axisStrokeWidth:this.radar?.axisStrokeWidth||2,axisLabelFontSize:this.radar?.axisLabelFontSize||12,curveOpacity:this.radar?.curveOpacity||.5,curveStrokeWidth:this.radar?.curveStrokeWidth||2,graticuleColor:this.radar?.graticuleColor||"#DEDEDE",graticuleStrokeWidth:this.radar?.graticuleStrokeWidth||1,graticuleOpacity:this.radar?.graticuleOpacity||.3,legendBoxSize:this.radar?.legendBoxSize||12,legendFontSize:this.radar?.legendFontSize||12},this.wardleyEvolutionColor=this.wardleyEvolutionColor||"#dc3545",this.wardley={backgroundColor:this.wardley?.backgroundColor||this.background,axisColor:this.wardley?.axisColor||this.lineColor,axisTextColor:this.wardley?.axisTextColor||this.primaryTextColor,gridColor:this.wardley?.gridColor||this.gridColor,componentFill:this.wardley?.componentFill||this.background,componentStroke:this.wardley?.componentStroke||this.lineColor,componentLabelColor:this.wardley?.componentLabelColor||this.primaryTextColor,linkStroke:this.wardley?.linkStroke||this.lineColor,evolutionStroke:this.wardley?.evolutionStroke||this.wardleyEvolutionColor,annotationStroke:this.wardley?.annotationStroke||this.lineColor,annotationTextColor:this.wardley?.annotationTextColor||this.primaryTextColor,annotationFill:this.wardley?.annotationFill||this.background},this.archEdgeColor=this.archEdgeColor||"#777",this.archEdgeArrowColor=this.archEdgeArrowColor||"#777",this.archEdgeWidth=this.archEdgeWidth||"3",this.archGroupBorderColor=this.archGroupBorderColor||"#000",this.archGroupBorderWidth=this.archGroupBorderWidth||"2px",this.quadrant1Fill=this.quadrant1Fill||this.primaryColor,this.quadrant2Fill=this.quadrant2Fill||ne(this.primaryColor,{r:5,g:5,b:5}),this.quadrant3Fill=this.quadrant3Fill||ne(this.primaryColor,{r:10,g:10,b:10}),this.quadrant4Fill=this.quadrant4Fill||ne(this.primaryColor,{r:15,g:15,b:15}),this.quadrant1TextFill=this.quadrant1TextFill||this.primaryTextColor,this.quadrant2TextFill=this.quadrant2TextFill||ne(this.primaryTextColor,{r:-5,g:-5,b:-5}),this.quadrant3TextFill=this.quadrant3TextFill||ne(this.primaryTextColor,{r:-10,g:-10,b:-10}),this.quadrant4TextFill=this.quadrant4TextFill||ne(this.primaryTextColor,{r:-15,g:-15,b:-15}),this.quadrantPointFill=this.quadrantPointFill||ri(this.quadrant1Fill)?je(this.quadrant1Fill):Xe(this.quadrant1Fill),this.quadrantPointTextFill=this.quadrantPointTextFill||this.primaryTextColor,this.quadrantXAxisTextFill=this.quadrantXAxisTextFill||this.primaryTextColor,this.quadrantYAxisTextFill=this.quadrantYAxisTextFill||this.primaryTextColor,this.quadrantInternalBorderStrokeFill=this.quadrantInternalBorderStrokeFill||this.primaryBorderColor,this.quadrantExternalBorderStrokeFill=this.quadrantExternalBorderStrokeFill||this.primaryBorderColor,this.quadrantTitleFill=this.quadrantTitleFill||this.primaryTextColor,this.xyChart={backgroundColor:this.xyChart?.backgroundColor||this.background,titleColor:this.xyChart?.titleColor||this.primaryTextColor,dataLabelColor:this.xyChart?.dataLabelColor||this.primaryTextColor,xAxisTitleColor:this.xyChart?.xAxisTitleColor||this.primaryTextColor,xAxisLabelColor:this.xyChart?.xAxisLabelColor||this.primaryTextColor,xAxisTickColor:this.xyChart?.xAxisTickColor||this.primaryTextColor,xAxisLineColor:this.xyChart?.xAxisLineColor||this.primaryTextColor,yAxisTitleColor:this.xyChart?.yAxisTitleColor||this.primaryTextColor,yAxisLabelColor:this.xyChart?.yAxisLabelColor||this.primaryTextColor,yAxisTickColor:this.xyChart?.yAxisTickColor||this.primaryTextColor,yAxisLineColor:this.xyChart?.yAxisLineColor||this.primaryTextColor,plotColorPalette:this.xyChart?.plotColorPalette||"#FFF4DD,#FFD8B1,#FFA07A,#ECEFF1,#D6DBDF,#C3E0A8,#FFB6A4,#FFD74D,#738FA7,#FFFFF0"},this.requirementBackground=this.requirementBackground||this.primaryColor,this.requirementBorderColor=this.requirementBorderColor||this.primaryBorderColor,this.requirementBorderSize=this.requirementBorderSize||"1",this.requirementTextColor=this.requirementTextColor||this.primaryTextColor,this.relationColor=this.relationColor||this.lineColor,this.relationLabelBackground=this.relationLabelBackground||(this.darkMode?Xe(this.secondaryColor,30):this.secondaryColor),this.relationLabelColor=this.relationLabelColor||this.actorTextColor,this.git0=this.git0||this.primaryColor,this.git1=this.git1||this.secondaryColor,this.git2=this.git2||this.tertiaryColor,this.git3=this.git3||ne(this.primaryColor,{h:-30}),this.git4=this.git4||ne(this.primaryColor,{h:-60}),this.git5=this.git5||ne(this.primaryColor,{h:-90}),this.git6=this.git6||ne(this.primaryColor,{h:60}),this.git7=this.git7||ne(this.primaryColor,{h:120}),this.darkMode?(this.git0=je(this.git0,25),this.git1=je(this.git1,25),this.git2=je(this.git2,25),this.git3=je(this.git3,25),this.git4=je(this.git4,25),this.git5=je(this.git5,25),this.git6=je(this.git6,25),this.git7=je(this.git7,25)):(this.git0=Xe(this.git0,25),this.git1=Xe(this.git1,25),this.git2=Xe(this.git2,25),this.git3=Xe(this.git3,25),this.git4=Xe(this.git4,25),this.git5=Xe(this.git5,25),this.git6=Xe(this.git6,25),this.git7=Xe(this.git7,25)),this.gitInv0=this.gitInv0||Ge(this.git0),this.gitInv1=this.gitInv1||Ge(this.git1),this.gitInv2=this.gitInv2||Ge(this.git2),this.gitInv3=this.gitInv3||Ge(this.git3),this.gitInv4=this.gitInv4||Ge(this.git4),this.gitInv5=this.gitInv5||Ge(this.git5),this.gitInv6=this.gitInv6||Ge(this.git6),this.gitInv7=this.gitInv7||Ge(this.git7),this.branchLabelColor=this.branchLabelColor||(this.darkMode?"black":this.labelTextColor),this.gitBranchLabel0=this.gitBranchLabel0||this.branchLabelColor,this.gitBranchLabel1=this.gitBranchLabel1||this.branchLabelColor,this.gitBranchLabel2=this.gitBranchLabel2||this.branchLabelColor,this.gitBranchLabel3=this.gitBranchLabel3||this.branchLabelColor,this.gitBranchLabel4=this.gitBranchLabel4||this.branchLabelColor,this.gitBranchLabel5=this.gitBranchLabel5||this.branchLabelColor,this.gitBranchLabel6=this.gitBranchLabel6||this.branchLabelColor,this.gitBranchLabel7=this.gitBranchLabel7||this.branchLabelColor,this.tagLabelColor=this.tagLabelColor||this.primaryTextColor,this.tagLabelBackground=this.tagLabelBackground||this.primaryColor,this.tagLabelBorder=this.tagBorder||this.primaryBorderColor,this.tagLabelFontSize=this.tagLabelFontSize||"10px",this.commitLabelColor=this.commitLabelColor||this.secondaryTextColor,this.commitLabelBackground=this.commitLabelBackground||this.secondaryColor,this.commitLabelFontSize=this.commitLabelFontSize||"10px",this.emUiFill=this.emUiFill||"white",this.emUiStroke=this.emUiStroke||"#dbdada",this.emProcessorFill=this.emProcessorFill||"#edb3f6",this.emProcessorStroke=this.emProcessorStroke||"#b88cbf",this.emReadModelFill=this.emReadModelFill||"#d3f1a2",this.emReadModelStroke=this.emReadModelStroke||"#a3b732",this.emCommandFill=this.emCommandFill||"#bcd6fe",this.emCommandStroke=this.emCommandStroke||"#679ac3",this.emEventFill=this.emEventFill||"#ffb778",this.emEventStroke=this.emEventStroke||"#c19a0f",this.emSwimlaneBackgroundOdd=this.emSwimlaneBackgroundOdd||"rgb(250,250,250)",this.emSwimlaneBackgroundStroke=this.emSwimlaneBackgroundStroke||"rgb(240,240,240)",this.emArrowhead=this.emArrowhead||this.lineColor,this.emRelationStroke=this.emRelationStroke||this.lineColor,this.attributeBackgroundColorOdd=this.attributeBackgroundColorOdd||kn,this.attributeBackgroundColorEven=this.attributeBackgroundColorEven||wn,this.gradientStart=this.primaryBorderColor,this.gradientStop=this.secondaryBorderColor}calculate(t){if(typeof t!="object"){this.updateColors();return}let r=Object.keys(t);r.forEach(i=>{this[i]=t[i]}),this.updateColors(),r.forEach(i=>{this[i]=t[i]})}},CH=o(e=>{let t=new g7;return t.calculate(e),t},"getThemeVariables")});var y7,wH,SH=z(()=>{"use strict";Cn();Eo();y7=class{static{o(this,"Theme")}constructor(){this.background="#333",this.primaryColor="#1f2020",this.secondaryColor=je(this.primaryColor,16),this.tertiaryColor=ne(this.primaryColor,{h:-160}),this.primaryBorderColor=Ge(this.background),this.secondaryBorderColor=Jt(this.secondaryColor,this.darkMode),this.tertiaryBorderColor=Jt(this.tertiaryColor,this.darkMode),this.primaryTextColor=Ge(this.primaryColor),this.secondaryTextColor=Ge(this.secondaryColor),this.tertiaryTextColor=Ge(this.tertiaryColor),this.lineColor=Ge(this.background),this.textColor=Ge(this.background),this.mainBkg="#1f2020",this.secondBkg="calculated",this.mainContrastColor="lightgrey",this.darkTextColor=je(Ge("#323D47"),10),this.lineColor="calculated",this.border1="#ccc",this.border2=mn(255,255,255,.25),this.arrowheadColor="calculated",this.fontFamily='"trebuchet ms", verdana, arial, sans-serif',this.fontSize="16px",this.labelBackground="#181818",this.textColor="#ccc",this.THEME_COLOR_LIMIT=12,this.radius=5,this.strokeWidth=1,this.nodeBkg="calculated",this.nodeBorder="calculated",this.clusterBkg="calculated",this.clusterBorder="calculated",this.defaultLinkColor="calculated",this.titleColor="#F9FFFE",this.edgeLabelBackground="calculated",this.actorBorder="calculated",this.actorBkg="calculated",this.actorTextColor="calculated",this.actorLineColor="calculated",this.signalColor="calculated",this.signalTextColor="calculated",this.labelBoxBkgColor="calculated",this.labelBoxBorderColor="calculated",this.labelTextColor="calculated",this.loopTextColor="calculated",this.noteBorderColor="calculated",this.noteBkgColor="#fff5ad",this.noteTextColor="calculated",this.activationBorderColor="calculated",this.activationBkgColor="calculated",this.sequenceNumberColor="black",this.clusterBkg="#302F3D",this.sectionBkgColor=Xe("#EAE8D9",30),this.altSectionBkgColor="calculated",this.sectionBkgColor2="#EAE8D9",this.excludeBkgColor=Xe(this.sectionBkgColor,10),this.taskBorderColor=mn(255,255,255,70),this.taskBkgColor="calculated",this.taskTextColor="calculated",this.taskTextLightColor="calculated",this.taskTextOutsideColor="calculated",this.taskTextClickableColor="#003163",this.activeTaskBorderColor=mn(255,255,255,50),this.activeTaskBkgColor="#81B1DB",this.gridColor="calculated",this.doneTaskBkgColor="calculated",this.doneTaskBorderColor="grey",this.critBorderColor="#E83737",this.critBkgColor="#E83737",this.taskTextDarkColor="calculated",this.todayLineColor="#DB5757",this.vertLineColor="#00BFFF",this.personBorder=this.primaryBorderColor,this.personBkg=this.mainBkg,this.archEdgeColor="calculated",this.archEdgeArrowColor="calculated",this.archEdgeWidth="3",this.archGroupBorderColor=this.primaryBorderColor,this.archGroupBorderWidth="2px",this.rowOdd=this.rowOdd||je(this.mainBkg,5)||"#ffffff",this.rowEven=this.rowEven||Xe(this.mainBkg,10),this.labelColor="calculated",this.errorBkgColor="#a44141",this.errorTextColor="#ddd",this.useGradient=!0,this.gradientStart=this.primaryBorderColor,this.gradientStop=this.secondaryBorderColor,this.dropShadow="drop-shadow( 1px 2px 2px rgba(185,185,185,1))",this.noteFontWeight=this.noteFontWeight||"normal",this.fontWeight=this.fontWeight||"normal"}updateColors(){this.secondBkg=je(this.mainBkg,16),this.lineColor=this.mainContrastColor,this.arrowheadColor=this.mainContrastColor,this.nodeBkg=this.mainBkg,this.nodeBorder=this.border1,this.clusterBkg=this.secondBkg,this.clusterBorder=this.border2,this.defaultLinkColor=this.lineColor,this.edgeLabelBackground=je(this.labelBackground,25),this.actorBorder=this.border1,this.actorBkg=this.mainBkg,this.actorTextColor=this.mainContrastColor,this.actorLineColor=this.actorBorder,this.signalColor=this.mainContrastColor,this.signalTextColor=this.mainContrastColor,this.labelBoxBkgColor=this.actorBkg,this.labelBoxBorderColor=this.actorBorder,this.labelTextColor=this.mainContrastColor,this.loopTextColor=this.mainContrastColor,this.noteBorderColor=this.secondaryBorderColor,this.noteBkgColor=this.secondBkg,this.noteTextColor=this.secondaryTextColor,this.activationBorderColor=this.border1,this.activationBkgColor=this.secondBkg,this.altSectionBkgColor=this.background,this.taskBkgColor=je(this.mainBkg,23),this.taskTextColor=this.darkTextColor,this.taskTextLightColor=this.mainContrastColor,this.taskTextOutsideColor=this.taskTextLightColor,this.gridColor=this.mainContrastColor,this.doneTaskBkgColor=this.mainContrastColor,this.taskTextDarkColor=Ge(this.doneTaskBkgColor),this.archEdgeColor=this.lineColor,this.archEdgeArrowColor=this.lineColor,this.transitionColor=this.transitionColor||this.lineColor,this.transitionLabelColor=this.transitionLabelColor||this.textColor,this.stateLabelColor=this.stateLabelColor||this.stateBkg||this.primaryTextColor,this.stateBkg=this.stateBkg||this.mainBkg,this.labelBackgroundColor=this.labelBackgroundColor||this.stateBkg,this.compositeBackground=this.compositeBackground||this.background||this.tertiaryColor,this.altBackground=this.altBackground||"#555",this.compositeTitleBackground=this.compositeTitleBackground||this.mainBkg,this.compositeBorder=this.compositeBorder||this.nodeBorder,this.innerEndBackground=this.primaryBorderColor,this.specialStateColor="#f4f4f4",this.errorBkgColor=this.errorBkgColor||this.tertiaryColor,this.errorTextColor=this.errorTextColor||this.tertiaryTextColor,this.fillType0=this.primaryColor,this.fillType1=this.secondaryColor,this.fillType2=ne(this.primaryColor,{h:64}),this.fillType3=ne(this.secondaryColor,{h:64}),this.fillType4=ne(this.primaryColor,{h:-64}),this.fillType5=ne(this.secondaryColor,{h:-64}),this.fillType6=ne(this.primaryColor,{h:128}),this.fillType7=ne(this.secondaryColor,{h:128}),this.cScale1=this.cScale1||"#0b0000",this.cScale2=this.cScale2||"#4d1037",this.cScale3=this.cScale3||"#3f5258",this.cScale4=this.cScale4||"#4f2f1b",this.cScale5=this.cScale5||"#6e0a0a",this.cScale6=this.cScale6||"#3b0048",this.cScale7=this.cScale7||"#995a01",this.cScale8=this.cScale8||"#154706",this.cScale9=this.cScale9||"#161722",this.cScale10=this.cScale10||"#00296f",this.cScale11=this.cScale11||"#01629c",this.cScale12=this.cScale12||"#010029",this.cScale0=this.cScale0||this.primaryColor,this.cScale1=this.cScale1||this.secondaryColor,this.cScale2=this.cScale2||this.tertiaryColor,this.cScale3=this.cScale3||ne(this.primaryColor,{h:30}),this.cScale4=this.cScale4||ne(this.primaryColor,{h:60}),this.cScale5=this.cScale5||ne(this.primaryColor,{h:90}),this.cScale6=this.cScale6||ne(this.primaryColor,{h:120}),this.cScale7=this.cScale7||ne(this.primaryColor,{h:150}),this.cScale8=this.cScale8||ne(this.primaryColor,{h:210}),this.cScale9=this.cScale9||ne(this.primaryColor,{h:270}),this.cScale10=this.cScale10||ne(this.primaryColor,{h:300}),this.cScale11=this.cScale11||ne(this.primaryColor,{h:330});for(let t=0;t<this.THEME_COLOR_LIMIT;t++)this["cScaleInv"+t]=this["cScaleInv"+t]||Ge(this["cScale"+t]);for(let t=0;t<this.THEME_COLOR_LIMIT;t++)this["cScalePeer"+t]=this["cScalePeer"+t]||je(this["cScale"+t],10);for(let t=0;t<5;t++)this["surface"+t]=this["surface"+t]||ne(this.mainBkg,{h:30,s:-30,l:-(-10+t*4)}),this["surfacePeer"+t]=this["surfacePeer"+t]||ne(this.mainBkg,{h:30,s:-30,l:-(-7+t*4)});this.scaleLabelColor=this.scaleLabelColor||(this.darkMode?"black":this.labelTextColor);for(let t=0;t<this.THEME_COLOR_LIMIT;t++)this["cScaleLabel"+t]=this["cScaleLabel"+t]||this.scaleLabelColor;for(let t=0;t<this.THEME_COLOR_LIMIT;t++)this["pie"+t]=this["cScale"+t];this.pieTitleTextSize=this.pieTitleTextSize||"25px",this.pieTitleTextColor=this.pieTitleTextColor||this.mainContrastColor,this.pieSectionTextSize=this.pieSectionTextSize||"17px",this.pieSectionTextColor=this.pieSectionTextColor||this.textColor,this.pieLegendTextSize=this.pieLegendTextSize||"17px",this.pieLegendTextColor=this.pieLegendTextColor||this.mainContrastColor,this.pieStrokeColor=this.pieStrokeColor||"black",this.pieStrokeWidth=this.pieStrokeWidth||"2px",this.pieOuterStrokeWidth=this.pieOuterStrokeWidth||"2px",this.pieOuterStrokeColor=this.pieOuterStrokeColor||"black",this.pieOpacity=this.pieOpacity||"0.7";for(let t=0;t<8;t++)this["venn"+(t+1)]=this["venn"+(t+1)]??je(this["cScale"+t],30);this.vennTitleTextColor=this.vennTitleTextColor??this.titleColor,this.vennSetTextColor=this.vennSetTextColor??this.textColor,this.quadrant1Fill=this.quadrant1Fill||this.primaryColor,this.quadrant2Fill=this.quadrant2Fill||ne(this.primaryColor,{r:5,g:5,b:5}),this.quadrant3Fill=this.quadrant3Fill||ne(this.primaryColor,{r:10,g:10,b:10}),this.quadrant4Fill=this.quadrant4Fill||ne(this.primaryColor,{r:15,g:15,b:15}),this.quadrant1TextFill=this.quadrant1TextFill||this.primaryTextColor,this.quadrant2TextFill=this.quadrant2TextFill||ne(this.primaryTextColor,{r:-5,g:-5,b:-5}),this.quadrant3TextFill=this.quadrant3TextFill||ne(this.primaryTextColor,{r:-10,g:-10,b:-10}),this.quadrant4TextFill=this.quadrant4TextFill||ne(this.primaryTextColor,{r:-15,g:-15,b:-15}),this.quadrantPointFill=this.quadrantPointFill||ri(this.quadrant1Fill)?je(this.quadrant1Fill):Xe(this.quadrant1Fill),this.quadrantPointTextFill=this.quadrantPointTextFill||this.primaryTextColor,this.quadrantXAxisTextFill=this.quadrantXAxisTextFill||this.primaryTextColor,this.quadrantYAxisTextFill=this.quadrantYAxisTextFill||this.primaryTextColor,this.quadrantInternalBorderStrokeFill=this.quadrantInternalBorderStrokeFill||this.primaryBorderColor,this.quadrantExternalBorderStrokeFill=this.quadrantExternalBorderStrokeFill||this.primaryBorderColor,this.quadrantTitleFill=this.quadrantTitleFill||this.primaryTextColor,this.xyChart={backgroundColor:this.xyChart?.backgroundColor||this.background,titleColor:this.xyChart?.titleColor||this.primaryTextColor,dataLabelColor:this.xyChart?.dataLabelColor||this.primaryTextColor,xAxisTitleColor:this.xyChart?.xAxisTitleColor||this.primaryTextColor,xAxisLabelColor:this.xyChart?.xAxisLabelColor||this.primaryTextColor,xAxisTickColor:this.xyChart?.xAxisTickColor||this.primaryTextColor,xAxisLineColor:this.xyChart?.xAxisLineColor||this.primaryTextColor,yAxisTitleColor:this.xyChart?.yAxisTitleColor||this.primaryTextColor,yAxisLabelColor:this.xyChart?.yAxisLabelColor||this.primaryTextColor,yAxisTickColor:this.xyChart?.yAxisTickColor||this.primaryTextColor,yAxisLineColor:this.xyChart?.yAxisLineColor||this.primaryTextColor,plotColorPalette:this.xyChart?.plotColorPalette||"#3498db,#2ecc71,#e74c3c,#f1c40f,#bdc3c7,#ffffff,#34495e,#9b59b6,#1abc9c,#e67e22"},this.packet={startByteColor:this.primaryTextColor,endByteColor:this.primaryTextColor,labelColor:this.primaryTextColor,titleColor:this.primaryTextColor,blockStrokeColor:this.primaryTextColor,blockFillColor:this.background},this.radar={axisColor:this.radar?.axisColor||this.lineColor,axisStrokeWidth:this.radar?.axisStrokeWidth||2,axisLabelFontSize:this.radar?.axisLabelFontSize||12,curveOpacity:this.radar?.curveOpacity||.5,curveStrokeWidth:this.radar?.curveStrokeWidth||2,graticuleColor:this.radar?.graticuleColor||"#DEDEDE",graticuleStrokeWidth:this.radar?.graticuleStrokeWidth||1,graticuleOpacity:this.radar?.graticuleOpacity||.3,legendBoxSize:this.radar?.legendBoxSize||12,legendFontSize:this.radar?.legendFontSize||12},this.wardleyEvolutionColor=this.wardleyEvolutionColor||"#ff6b6b",this.wardley={backgroundColor:this.wardley?.backgroundColor||this.background,axisColor:this.wardley?.axisColor||this.lineColor,axisTextColor:this.wardley?.axisTextColor||this.primaryTextColor,gridColor:this.wardley?.gridColor||this.gridColor,componentFill:this.wardley?.componentFill||this.mainBkg,componentStroke:this.wardley?.componentStroke||this.lineColor,componentLabelColor:this.wardley?.componentLabelColor||this.primaryTextColor,linkStroke:this.wardley?.linkStroke||this.lineColor,evolutionStroke:this.wardley?.evolutionStroke||this.wardleyEvolutionColor,annotationStroke:this.wardley?.annotationStroke||this.lineColor,annotationTextColor:this.wardley?.annotationTextColor||this.primaryTextColor,annotationFill:this.wardley?.annotationFill||this.mainBkg},this.classText=this.primaryTextColor,this.requirementBackground=this.requirementBackground||this.primaryColor,this.requirementBorderColor=this.requirementBorderColor||this.primaryBorderColor,this.requirementBorderSize=this.requirementBorderSize||"1",this.requirementTextColor=this.requirementTextColor||this.primaryTextColor,this.relationColor=this.relationColor||this.lineColor,this.relationLabelBackground=this.relationLabelBackground||(this.darkMode?Xe(this.secondaryColor,30):this.secondaryColor),this.relationLabelColor=this.relationLabelColor||this.actorTextColor,this.git0=je(this.secondaryColor,20),this.git1=je(this.pie2||this.secondaryColor,20),this.git2=je(this.pie3||this.tertiaryColor,20),this.git3=je(this.pie4||ne(this.primaryColor,{h:-30}),20),this.git4=je(this.pie5||ne(this.primaryColor,{h:-60}),20),this.git5=je(this.pie6||ne(this.primaryColor,{h:-90}),10),this.git6=je(this.pie7||ne(this.primaryColor,{h:60}),10),this.git7=je(this.pie8||ne(this.primaryColor,{h:120}),20),this.gitInv0=this.gitInv0||Ge(this.git0),this.gitInv1=this.gitInv1||Ge(this.git1),this.gitInv2=this.gitInv2||Ge(this.git2),this.gitInv3=this.gitInv3||Ge(this.git3),this.gitInv4=this.gitInv4||Ge(this.git4),this.gitInv5=this.gitInv5||Ge(this.git5),this.gitInv6=this.gitInv6||Ge(this.git6),this.gitInv7=this.gitInv7||Ge(this.git7),this.gitBranchLabel0=this.gitBranchLabel0||Ge(this.labelTextColor),this.gitBranchLabel1=this.gitBranchLabel1||this.labelTextColor,this.gitBranchLabel2=this.gitBranchLabel2||this.labelTextColor,this.gitBranchLabel3=this.gitBranchLabel3||Ge(this.labelTextColor),this.gitBranchLabel4=this.gitBranchLabel4||this.labelTextColor,this.gitBranchLabel5=this.gitBranchLabel5||this.labelTextColor,this.gitBranchLabel6=this.gitBranchLabel6||this.labelTextColor,this.gitBranchLabel7=this.gitBranchLabel7||this.labelTextColor,this.tagLabelColor=this.tagLabelColor||this.primaryTextColor,this.tagLabelBackground=this.tagLabelBackground||this.primaryColor,this.tagLabelBorder=this.tagBorder||this.primaryBorderColor,this.tagLabelFontSize=this.tagLabelFontSize||"10px",this.commitLabelColor=this.commitLabelColor||this.secondaryTextColor,this.commitLabelBackground=this.commitLabelBackground||this.secondaryColor,this.commitLabelFontSize=this.commitLabelFontSize||"10px",this.emUiFill=this.emUiFill||"#2d2d2d",this.emUiStroke=this.emUiStroke||"#555",this.emProcessorFill=this.emProcessorFill||je("#5a3d5c",10),this.emProcessorStroke=this.emProcessorStroke||"#8a6d8c",this.emReadModelFill=this.emReadModelFill||je("#3d5a2d",10),this.emReadModelStroke=this.emReadModelStroke||"#6d8c5c",this.emCommandFill=this.emCommandFill||je("#2d3d5a",10),this.emCommandStroke=this.emCommandStroke||"#5c6d8c",this.emEventFill=this.emEventFill||je("#5a452d",10),this.emEventStroke=this.emEventStroke||"#8c755c",this.emSwimlaneBackgroundOdd=this.emSwimlaneBackgroundOdd||je(this.background,5),this.emSwimlaneBackgroundStroke=this.emSwimlaneBackgroundStroke||je(this.background,12),this.emArrowhead=this.emArrowhead||this.lineColor,this.emRelationStroke=this.emRelationStroke||this.lineColor,this.attributeBackgroundColorOdd=this.attributeBackgroundColorOdd||je(this.background,12),this.attributeBackgroundColorEven=this.attributeBackgroundColorEven||je(this.background,2),this.nodeBorder=this.nodeBorder||"#999"}calculate(t){if(typeof t!="object"){this.updateColors();return}let r=Object.keys(t);r.forEach(i=>{this[i]=t[i]}),this.updateColors(),r.forEach(i=>{this[i]=t[i]})}},wH=o(e=>{let t=new y7;return t.calculate(e),t},"getThemeVariables")});var v7,Ao,$f=z(()=>{"use strict";Cn();Eo();dl();v7=class{static{o(this,"Theme")}constructor(){this.background="#f4f4f4",this.primaryColor="#ECECFF",this.secondaryColor=ne(this.primaryColor,{h:120}),this.secondaryColor="#ffffde",this.tertiaryColor=ne(this.primaryColor,{h:-160}),this.primaryBorderColor=Jt(this.primaryColor,this.darkMode),this.secondaryBorderColor=Jt(this.secondaryColor,this.darkMode),this.tertiaryBorderColor=Jt(this.tertiaryColor,this.darkMode),this.primaryTextColor=Ge(this.primaryColor),this.secondaryTextColor=Ge(this.secondaryColor),this.tertiaryTextColor=Ge(this.tertiaryColor),this.lineColor=Ge(this.background),this.textColor=Ge(this.background),this.background="white",this.mainBkg="#ECECFF",this.secondBkg="#ffffde",this.lineColor="#333333",this.border1="#9370DB",this.primaryBorderColor=Jt(this.primaryColor,this.darkMode),this.border2="#aaaa33",this.arrowheadColor="#333333",this.fontFamily='"trebuchet ms", verdana, arial, sans-serif',this.fontSize="16px",this.labelBackground="rgba(232,232,232, 0.8)",this.textColor="#333",this.THEME_COLOR_LIMIT=12,this.radius=5,this.strokeWidth=1,this.nodeBkg="calculated",this.nodeBorder="calculated",this.clusterBkg="calculated",this.clusterBorder="calculated",this.defaultLinkColor="calculated",this.titleColor="calculated",this.edgeLabelBackground="calculated",this.actorBorder="calculated",this.actorBkg="calculated",this.actorTextColor="black",this.actorLineColor="calculated",this.signalColor="calculated",this.signalTextColor="calculated",this.labelBoxBkgColor="calculated",this.labelBoxBorderColor="calculated",this.labelTextColor="calculated",this.loopTextColor="calculated",this.noteBorderColor="calculated",this.noteBkgColor="#fff5ad",this.noteTextColor="calculated",this.activationBorderColor="#666",this.activationBkgColor="#f4f4f4",this.sequenceNumberColor="white",this.clusterBkg="#FBFBFF",this.sectionBkgColor="calculated",this.altSectionBkgColor="calculated",this.sectionBkgColor2="calculated",this.excludeBkgColor="#eeeeee",this.taskBorderColor="calculated",this.taskBkgColor="calculated",this.taskTextLightColor="calculated",this.taskTextColor=this.taskTextLightColor,this.taskTextDarkColor="calculated",this.taskTextOutsideColor=this.taskTextDarkColor,this.taskTextClickableColor="calculated",this.activeTaskBorderColor="calculated",this.activeTaskBkgColor="calculated",this.gridColor="calculated",this.doneTaskBkgColor="calculated",this.doneTaskBorderColor="calculated",this.critBorderColor="calculated",this.critBkgColor="calculated",this.todayLineColor="calculated",this.vertLineColor="calculated",this.sectionBkgColor=mn(102,102,255,.49),this.altSectionBkgColor="white",this.sectionBkgColor2="#fff400",this.taskBorderColor="#534fbc",this.taskBkgColor="#8a90dd",this.taskTextLightColor="white",this.taskTextColor="calculated",this.taskTextDarkColor="black",this.taskTextOutsideColor="calculated",this.taskTextClickableColor="#003163",this.activeTaskBorderColor="#534fbc",this.activeTaskBkgColor="#bfc7ff",this.gridColor="lightgrey",this.doneTaskBkgColor="lightgrey",this.doneTaskBorderColor="grey",this.critBorderColor="#ff8888",this.critBkgColor="red",this.todayLineColor="red",this.vertLineColor="navy",this.noteFontWeight=this.noteFontWeight||"normal",this.fontWeight=this.fontWeight||"normal",this.personBorder=this.primaryBorderColor,this.personBkg=this.mainBkg,this.archEdgeColor="calculated",this.archEdgeArrowColor="calculated",this.archEdgeWidth="3",this.archGroupBorderColor=this.primaryBorderColor,this.archGroupBorderWidth="2px",this.rowOdd="calculated",this.rowEven="calculated",this.labelColor="black",this.errorBkgColor="#552222",this.errorTextColor="#552222",this.useGradient=!1,this.gradientStart=this.primaryBorderColor,this.gradientStop=this.secondaryBorderColor,this.dropShadow="drop-shadow(1px 2px 2px rgba(185, 185, 185, 1))",this.updateColors()}updateColors(){this.cScale0=this.cScale0||this.primaryColor,this.cScale1=this.cScale1||this.secondaryColor,this.cScale2=this.cScale2||this.tertiaryColor,this.cScale3=this.cScale3||ne(this.primaryColor,{h:30}),this.cScale4=this.cScale4||ne(this.primaryColor,{h:60}),this.cScale5=this.cScale5||ne(this.primaryColor,{h:90}),this.cScale6=this.cScale6||ne(this.primaryColor,{h:120}),this.cScale7=this.cScale7||ne(this.primaryColor,{h:150}),this.cScale8=this.cScale8||ne(this.primaryColor,{h:210}),this.cScale9=this.cScale9||ne(this.primaryColor,{h:270}),this.cScale10=this.cScale10||ne(this.primaryColor,{h:300}),this.cScale11=this.cScale11||ne(this.primaryColor,{h:330}),this.cScalePeer1=this.cScalePeer1||Xe(this.secondaryColor,45),this.cScalePeer2=this.cScalePeer2||Xe(this.tertiaryColor,40);for(let t=0;t<this.THEME_COLOR_LIMIT;t++)this["cScale"+t]=Xe(this["cScale"+t],10),this["cScalePeer"+t]=this["cScalePeer"+t]||Xe(this["cScale"+t],25);for(let t=0;t<this.THEME_COLOR_LIMIT;t++)this["cScaleInv"+t]=this["cScaleInv"+t]||ne(this["cScale"+t],{h:180});for(let t=0;t<5;t++)this["surface"+t]=this["surface"+t]||ne(this.mainBkg,{h:30,l:-(5+t*5)}),this["surfacePeer"+t]=this["surfacePeer"+t]||ne(this.mainBkg,{h:30,l:-(7+t*5)});if(this.scaleLabelColor=this.scaleLabelColor!=="calculated"&&this.scaleLabelColor?this.scaleLabelColor:this.labelTextColor,this.labelTextColor!=="calculated"){this.cScaleLabel0=this.cScaleLabel0||Ge(this.labelTextColor),this.cScaleLabel3=this.cScaleLabel3||Ge(this.labelTextColor);for(let t=0;t<this.THEME_COLOR_LIMIT;t++)this["cScaleLabel"+t]=this["cScaleLabel"+t]||this.labelTextColor}this.nodeBkg=this.mainBkg,this.nodeBorder=this.border1,this.clusterBkg=this.secondBkg,this.clusterBorder=this.border2,this.defaultLinkColor=this.lineColor,this.titleColor=this.textColor,this.edgeLabelBackground=this.labelBackground,this.actorBorder=this.border1,this.actorBkg=this.mainBkg,this.labelBoxBkgColor=this.actorBkg,this.signalColor=this.textColor,this.signalTextColor=this.textColor,this.labelBoxBorderColor=this.actorBorder,this.labelTextColor=this.actorTextColor,this.loopTextColor=this.actorTextColor,this.noteBorderColor=this.border2,this.noteTextColor=this.actorTextColor,this.actorLineColor=this.actorBorder,this.taskTextColor=this.taskTextLightColor,this.taskTextOutsideColor=this.taskTextDarkColor,this.archEdgeColor=this.lineColor,this.archEdgeArrowColor=this.lineColor,this.rowOdd=this.rowOdd||je(this.primaryColor,75)||"#ffffff",this.rowEven=this.rowEven||je(this.primaryColor,1),this.transitionColor=this.transitionColor||this.lineColor,this.transitionLabelColor=this.transitionLabelColor||this.textColor,this.stateLabelColor=this.stateLabelColor||this.stateBkg||this.primaryTextColor,this.stateBkg=this.stateBkg||this.mainBkg,this.labelBackgroundColor=this.labelBackgroundColor||this.stateBkg,this.compositeBackground=this.compositeBackground||this.background||this.tertiaryColor,this.altBackground=this.altBackground||"#f0f0f0",this.compositeTitleBackground=this.compositeTitleBackground||this.mainBkg,this.compositeBorder=this.compositeBorder||this.nodeBorder,this.innerEndBackground=this.nodeBorder,this.specialStateColor=this.lineColor,this.errorBkgColor=this.errorBkgColor||this.tertiaryColor,this.errorTextColor=this.errorTextColor||this.tertiaryTextColor,this.transitionColor=this.transitionColor||this.lineColor,this.classText=this.primaryTextColor,this.fillType0=this.primaryColor,this.fillType1=this.secondaryColor,this.fillType2=ne(this.primaryColor,{h:64}),this.fillType3=ne(this.secondaryColor,{h:64}),this.fillType4=ne(this.primaryColor,{h:-64}),this.fillType5=ne(this.secondaryColor,{h:-64}),this.fillType6=ne(this.primaryColor,{h:128}),this.fillType7=ne(this.secondaryColor,{h:128}),this.pie1=this.pie1||this.primaryColor,this.pie2=this.pie2||this.secondaryColor,this.pie3=this.pie3||ne(this.tertiaryColor,{l:-40}),this.pie4=this.pie4||ne(this.primaryColor,{l:-10}),this.pie5=this.pie5||ne(this.secondaryColor,{l:-30}),this.pie6=this.pie6||ne(this.tertiaryColor,{l:-20}),this.pie7=this.pie7||ne(this.primaryColor,{h:60,l:-20}),this.pie8=this.pie8||ne(this.primaryColor,{h:-60,l:-40}),this.pie9=this.pie9||ne(this.primaryColor,{h:120,l:-40}),this.pie10=this.pie10||ne(this.primaryColor,{h:60,l:-40}),this.pie11=this.pie11||ne(this.primaryColor,{h:-90,l:-40}),this.pie12=this.pie12||ne(this.primaryColor,{h:120,l:-30}),this.pieTitleTextSize=this.pieTitleTextSize||"25px",this.pieTitleTextColor=this.pieTitleTextColor||this.taskTextDarkColor,this.pieSectionTextSize=this.pieSectionTextSize||"17px",this.pieSectionTextColor=this.pieSectionTextColor||this.textColor,this.pieLegendTextSize=this.pieLegendTextSize||"17px",this.pieLegendTextColor=this.pieLegendTextColor||this.taskTextDarkColor,this.pieStrokeColor=this.pieStrokeColor||"black",this.pieStrokeWidth=this.pieStrokeWidth||"2px",this.pieOuterStrokeWidth=this.pieOuterStrokeWidth||"2px",this.pieOuterStrokeColor=this.pieOuterStrokeColor||"black",this.pieOpacity=this.pieOpacity||"0.7",this.venn1=this.venn1??ne(this.primaryColor,{l:-30}),this.venn2=this.venn2??ne(this.secondaryColor,{l:-30}),this.venn3=this.venn3??ne(this.tertiaryColor,{l:-40}),this.venn4=this.venn4??ne(this.primaryColor,{h:60,l:-30}),this.venn5=this.venn5??ne(this.primaryColor,{h:-60,l:-30}),this.venn6=this.venn6??ne(this.secondaryColor,{h:60,l:-30}),this.venn7=this.venn7??ne(this.primaryColor,{h:120,l:-30}),this.venn8=this.venn8??ne(this.secondaryColor,{h:120,l:-30}),this.vennTitleTextColor=this.vennTitleTextColor??this.titleColor,this.vennSetTextColor=this.vennSetTextColor??this.textColor,this.quadrant1Fill=this.quadrant1Fill||this.primaryColor,this.quadrant2Fill=this.quadrant2Fill||ne(this.primaryColor,{r:5,g:5,b:5}),this.quadrant3Fill=this.quadrant3Fill||ne(this.primaryColor,{r:10,g:10,b:10}),this.quadrant4Fill=this.quadrant4Fill||ne(this.primaryColor,{r:15,g:15,b:15}),this.quadrant1TextFill=this.quadrant1TextFill||this.primaryTextColor,this.quadrant2TextFill=this.quadrant2TextFill||ne(this.primaryTextColor,{r:-5,g:-5,b:-5}),this.quadrant3TextFill=this.quadrant3TextFill||ne(this.primaryTextColor,{r:-10,g:-10,b:-10}),this.quadrant4TextFill=this.quadrant4TextFill||ne(this.primaryTextColor,{r:-15,g:-15,b:-15}),this.quadrantPointFill=this.quadrantPointFill||ri(this.quadrant1Fill)?je(this.quadrant1Fill):Xe(this.quadrant1Fill),this.quadrantPointTextFill=this.quadrantPointTextFill||this.primaryTextColor,this.quadrantXAxisTextFill=this.quadrantXAxisTextFill||this.primaryTextColor,this.quadrantYAxisTextFill=this.quadrantYAxisTextFill||this.primaryTextColor,this.quadrantInternalBorderStrokeFill=this.quadrantInternalBorderStrokeFill||this.primaryBorderColor,this.quadrantExternalBorderStrokeFill=this.quadrantExternalBorderStrokeFill||this.primaryBorderColor,this.quadrantTitleFill=this.quadrantTitleFill||this.primaryTextColor,this.radar={axisColor:this.radar?.axisColor||this.lineColor,axisStrokeWidth:this.radar?.axisStrokeWidth||2,axisLabelFontSize:this.radar?.axisLabelFontSize||12,curveOpacity:this.radar?.curveOpacity||.5,curveStrokeWidth:this.radar?.curveStrokeWidth||2,graticuleColor:this.radar?.graticuleColor||"#DEDEDE",graticuleStrokeWidth:this.radar?.graticuleStrokeWidth||1,graticuleOpacity:this.radar?.graticuleOpacity||.3,legendBoxSize:this.radar?.legendBoxSize||12,legendFontSize:this.radar?.legendFontSize||12},this.wardleyEvolutionColor=this.wardleyEvolutionColor||"#dc3545",this.wardley={backgroundColor:this.wardley?.backgroundColor||this.background,axisColor:this.wardley?.axisColor||this.lineColor,axisTextColor:this.wardley?.axisTextColor||this.primaryTextColor,gridColor:this.wardley?.gridColor||this.gridColor,componentFill:this.wardley?.componentFill||this.background,componentStroke:this.wardley?.componentStroke||this.lineColor,componentLabelColor:this.wardley?.componentLabelColor||this.primaryTextColor,linkStroke:this.wardley?.linkStroke||this.lineColor,evolutionStroke:this.wardley?.evolutionStroke||this.wardleyEvolutionColor,annotationStroke:this.wardley?.annotationStroke||this.lineColor,annotationTextColor:this.wardley?.annotationTextColor||this.primaryTextColor,annotationFill:this.wardley?.annotationFill||this.background},this.xyChart={backgroundColor:this.xyChart?.backgroundColor||this.background,titleColor:this.xyChart?.titleColor||this.primaryTextColor,dataLabelColor:this.xyChart?.dataLabelColor||this.primaryTextColor,xAxisTitleColor:this.xyChart?.xAxisTitleColor||this.primaryTextColor,xAxisLabelColor:this.xyChart?.xAxisLabelColor||this.primaryTextColor,xAxisTickColor:this.xyChart?.xAxisTickColor||this.primaryTextColor,xAxisLineColor:this.xyChart?.xAxisLineColor||this.primaryTextColor,yAxisTitleColor:this.xyChart?.yAxisTitleColor||this.primaryTextColor,yAxisLabelColor:this.xyChart?.yAxisLabelColor||this.primaryTextColor,yAxisTickColor:this.xyChart?.yAxisTickColor||this.primaryTextColor,yAxisLineColor:this.xyChart?.yAxisLineColor||this.primaryTextColor,plotColorPalette:this.xyChart?.plotColorPalette||"#ECECFF,#8493A6,#FFC3A0,#DCDDE1,#B8E994,#D1A36F,#C3CDE6,#FFB6C1,#496078,#F8F3E3"},this.requirementBackground=this.requirementBackground||this.primaryColor,this.requirementBorderColor=this.requirementBorderColor||this.primaryBorderColor,this.requirementBorderSize=this.requirementBorderSize||"1",this.requirementTextColor=this.requirementTextColor||this.primaryTextColor,this.relationColor=this.relationColor||this.lineColor,this.relationLabelBackground=this.relationLabelBackground||this.labelBackground,this.relationLabelColor=this.relationLabelColor||this.actorTextColor,this.git0=this.git0||this.primaryColor,this.git1=this.git1||this.secondaryColor,this.git2=this.git2||this.tertiaryColor,this.git3=this.git3||ne(this.primaryColor,{h:-30}),this.git4=this.git4||ne(this.primaryColor,{h:-60}),this.git5=this.git5||ne(this.primaryColor,{h:-90}),this.git6=this.git6||ne(this.primaryColor,{h:60}),this.git7=this.git7||ne(this.primaryColor,{h:120}),this.darkMode?(this.git0=je(this.git0,25),this.git1=je(this.git1,25),this.git2=je(this.git2,25),this.git3=je(this.git3,25),this.git4=je(this.git4,25),this.git5=je(this.git5,25),this.git6=je(this.git6,25),this.git7=je(this.git7,25)):(this.git0=Xe(this.git0,25),this.git1=Xe(this.git1,25),this.git2=Xe(this.git2,25),this.git3=Xe(this.git3,25),this.git4=Xe(this.git4,25),this.git5=Xe(this.git5,25),this.git6=Xe(this.git6,25),this.git7=Xe(this.git7,25)),this.gitInv0=this.gitInv0||Xe(Ge(this.git0),25),this.gitInv1=this.gitInv1||Ge(this.git1),this.gitInv2=this.gitInv2||Ge(this.git2),this.gitInv3=this.gitInv3||Ge(this.git3),this.gitInv4=this.gitInv4||Ge(this.git4),this.gitInv5=this.gitInv5||Ge(this.git5),this.gitInv6=this.gitInv6||Ge(this.git6),this.gitInv7=this.gitInv7||Ge(this.git7),this.gitBranchLabel0=this.gitBranchLabel0||Ge(this.labelTextColor),this.gitBranchLabel1=this.gitBranchLabel1||this.labelTextColor,this.gitBranchLabel2=this.gitBranchLabel2||this.labelTextColor,this.gitBranchLabel3=this.gitBranchLabel3||Ge(this.labelTextColor),this.gitBranchLabel4=this.gitBranchLabel4||this.labelTextColor,this.gitBranchLabel5=this.gitBranchLabel5||this.labelTextColor,this.gitBranchLabel6=this.gitBranchLabel6||this.labelTextColor,this.gitBranchLabel7=this.gitBranchLabel7||this.labelTextColor,this.tagLabelColor=this.tagLabelColor||this.primaryTextColor,this.tagLabelBackground=this.tagLabelBackground||this.primaryColor,this.tagLabelBorder=this.tagBorder||this.primaryBorderColor,this.tagLabelFontSize=this.tagLabelFontSize||"10px",this.commitLabelColor=this.commitLabelColor||this.secondaryTextColor,this.commitLabelBackground=this.commitLabelBackground||this.secondaryColor,this.commitLabelFontSize=this.commitLabelFontSize||"10px",this.emUiFill=this.emUiFill||"white",this.emUiStroke=this.emUiStroke||"#dbdada",this.emProcessorFill=this.emProcessorFill||"#edb3f6",this.emProcessorStroke=this.emProcessorStroke||"#b88cbf",this.emReadModelFill=this.emReadModelFill||"#d3f1a2",this.emReadModelStroke=this.emReadModelStroke||"#a3b732",this.emCommandFill=this.emCommandFill||"#bcd6fe",this.emCommandStroke=this.emCommandStroke||"#679ac3",this.emEventFill=this.emEventFill||"#ffb778",this.emEventStroke=this.emEventStroke||"#c19a0f",this.emSwimlaneBackgroundOdd=this.emSwimlaneBackgroundOdd||"rgb(250,250,250)",this.emSwimlaneBackgroundStroke=this.emSwimlaneBackgroundStroke||"rgb(240,240,240)",this.emArrowhead=this.emArrowhead||this.lineColor,this.emRelationStroke=this.emRelationStroke||this.lineColor,this.attributeBackgroundColorOdd=this.attributeBackgroundColorOdd||kn,this.attributeBackgroundColorEven=this.attributeBackgroundColorEven||wn}calculate(t){if(Object.keys(this).forEach(i=>{this[i]==="calculated"&&(this[i]=void 0)}),typeof t!="object"){this.updateColors();return}let r=Object.keys(t);r.forEach(i=>{this[i]=t[i]}),this.updateColors(),r.forEach(i=>{this[i]=t[i]})}},Ao=o(e=>{let t=new v7;return t.calculate(e),t},"getThemeVariables")});var x7,EH,AH=z(()=>{"use strict";Cn();dl();Eo();x7=class{static{o(this,"Theme")}constructor(){this.background="#f4f4f4",this.primaryColor="#cde498",this.secondaryColor="#cdffb2",this.background="white",this.mainBkg="#cde498",this.secondBkg="#cdffb2",this.lineColor="green",this.border1="#13540c",this.border2="#6eaa49",this.arrowheadColor="green",this.fontFamily='"trebuchet ms", verdana, arial, sans-serif',this.fontSize="16px",this.tertiaryColor=je("#cde498",10),this.primaryBorderColor=Jt(this.primaryColor,this.darkMode),this.secondaryBorderColor=Jt(this.secondaryColor,this.darkMode),this.tertiaryBorderColor=Jt(this.tertiaryColor,this.darkMode),this.primaryTextColor=Ge(this.primaryColor),this.secondaryTextColor=Ge(this.secondaryColor),this.tertiaryTextColor=Ge(this.primaryColor),this.lineColor=Ge(this.background),this.textColor=Ge(this.background),this.THEME_COLOR_LIMIT=12,this.radius=5,this.strokeWidth=1,this.nodeBkg="calculated",this.nodeBorder="calculated",this.clusterBkg="calculated",this.clusterBorder="calculated",this.defaultLinkColor="calculated",this.titleColor="#333",this.edgeLabelBackground="#e8e8e8",this.actorBorder="calculated",this.actorBkg="calculated",this.actorTextColor="black",this.actorLineColor="calculated",this.signalColor="#333",this.signalTextColor="#333",this.labelBoxBkgColor="calculated",this.labelBoxBorderColor="#326932",this.labelTextColor="calculated",this.loopTextColor="calculated",this.noteBorderColor="calculated",this.noteBkgColor="#fff5ad",this.noteTextColor="calculated",this.activationBorderColor="#666",this.activationBkgColor="#f4f4f4",this.sequenceNumberColor="white",this.sectionBkgColor="#6eaa49",this.altSectionBkgColor="white",this.sectionBkgColor2="#6eaa49",this.excludeBkgColor="#eeeeee",this.taskBorderColor="calculated",this.taskBkgColor="#487e3a",this.taskTextLightColor="white",this.taskTextColor="calculated",this.taskTextDarkColor="black",this.taskTextOutsideColor="calculated",this.taskTextClickableColor="#003163",this.activeTaskBorderColor="calculated",this.activeTaskBkgColor="calculated",this.gridColor="lightgrey",this.doneTaskBkgColor="lightgrey",this.doneTaskBorderColor="grey",this.critBorderColor="#ff8888",this.critBkgColor="red",this.todayLineColor="red",this.vertLineColor="#00BFFF",this.personBorder=this.primaryBorderColor,this.personBkg=this.mainBkg,this.archEdgeColor="calculated",this.archEdgeArrowColor="calculated",this.archEdgeWidth="3",this.archGroupBorderColor=this.primaryBorderColor,this.archGroupBorderWidth="2px",this.noteFontWeight="normal",this.fontWeight="normal",this.labelColor="black",this.errorBkgColor="#552222",this.errorTextColor="#552222",this.useGradient=!0,this.gradientStart=this.primaryBorderColor,this.gradientStop=this.secondaryBorderColor,this.dropShadow="drop-shadow( 1px 2px 2px rgba(185,185,185,0.5))"}updateColors(){this.actorBorder=Xe(this.mainBkg,20),this.actorBkg=this.mainBkg,this.labelBoxBkgColor=this.actorBkg,this.labelTextColor=this.actorTextColor,this.loopTextColor=this.actorTextColor,this.noteBorderColor=this.border2,this.noteTextColor=this.actorTextColor,this.actorLineColor=this.actorBorder,this.cScale0=this.cScale0||this.primaryColor,this.cScale1=this.cScale1||this.secondaryColor,this.cScale2=this.cScale2||this.tertiaryColor,this.cScale3=this.cScale3||ne(this.primaryColor,{h:30}),this.cScale4=this.cScale4||ne(this.primaryColor,{h:60}),this.cScale5=this.cScale5||ne(this.primaryColor,{h:90}),this.cScale6=this.cScale6||ne(this.primaryColor,{h:120}),this.cScale7=this.cScale7||ne(this.primaryColor,{h:150}),this.cScale8=this.cScale8||ne(this.primaryColor,{h:210}),this.cScale9=this.cScale9||ne(this.primaryColor,{h:270}),this.cScale10=this.cScale10||ne(this.primaryColor,{h:300}),this.cScale11=this.cScale11||ne(this.primaryColor,{h:330}),this.cScalePeer1=this.cScalePeer1||Xe(this.secondaryColor,45),this.cScalePeer2=this.cScalePeer2||Xe(this.tertiaryColor,40);for(let t=0;t<this.THEME_COLOR_LIMIT;t++)this["cScale"+t]=Xe(this["cScale"+t],10),this["cScalePeer"+t]=this["cScalePeer"+t]||Xe(this["cScale"+t],25);for(let t=0;t<this.THEME_COLOR_LIMIT;t++)this["cScaleInv"+t]=this["cScaleInv"+t]||ne(this["cScale"+t],{h:180});this.scaleLabelColor=this.scaleLabelColor!=="calculated"&&this.scaleLabelColor?this.scaleLabelColor:this.labelTextColor;for(let t=0;t<this.THEME_COLOR_LIMIT;t++)this["cScaleLabel"+t]=this["cScaleLabel"+t]||this.scaleLabelColor;for(let t=0;t<5;t++)this["surface"+t]=this["surface"+t]||ne(this.mainBkg,{h:30,s:-30,l:-(5+t*5)}),this["surfacePeer"+t]=this["surfacePeer"+t]||ne(this.mainBkg,{h:30,s:-30,l:-(8+t*5)});this.nodeBkg=this.mainBkg,this.nodeBorder=this.border1,this.clusterBkg=this.secondBkg,this.clusterBorder=this.border2,this.defaultLinkColor=this.lineColor,this.taskBorderColor=this.border1,this.taskTextColor=this.taskTextLightColor,this.taskTextOutsideColor=this.taskTextDarkColor,this.activeTaskBorderColor=this.taskBorderColor,this.activeTaskBkgColor=this.mainBkg,this.archEdgeColor=this.lineColor,this.archEdgeArrowColor=this.lineColor,this.rowOdd=this.rowOdd||je(this.mainBkg,75)||"#ffffff",this.rowEven=this.rowEven||je(this.mainBkg,20),this.transitionColor=this.transitionColor||this.lineColor,this.transitionLabelColor=this.transitionLabelColor||this.textColor,this.stateLabelColor=this.stateLabelColor||this.stateBkg||this.primaryTextColor,this.stateBkg=this.stateBkg||this.mainBkg,this.labelBackgroundColor=this.labelBackgroundColor||this.stateBkg,this.compositeBackground=this.compositeBackground||this.background||this.tertiaryColor,this.altBackground=this.altBackground||"#f0f0f0",this.compositeTitleBackground=this.compositeTitleBackground||this.mainBkg,this.compositeBorder=this.compositeBorder||this.nodeBorder,this.innerEndBackground=this.primaryBorderColor,this.specialStateColor=this.lineColor,this.errorBkgColor=this.errorBkgColor||this.tertiaryColor,this.errorTextColor=this.errorTextColor||this.tertiaryTextColor,this.transitionColor=this.transitionColor||this.lineColor,this.classText=this.primaryTextColor,this.fillType0=this.primaryColor,this.fillType1=this.secondaryColor,this.fillType2=ne(this.primaryColor,{h:64}),this.fillType3=ne(this.secondaryColor,{h:64}),this.fillType4=ne(this.primaryColor,{h:-64}),this.fillType5=ne(this.secondaryColor,{h:-64}),this.fillType6=ne(this.primaryColor,{h:128}),this.fillType7=ne(this.secondaryColor,{h:128}),this.pie1=this.pie1||this.primaryColor,this.pie2=this.pie2||this.secondaryColor,this.pie3=this.pie3||this.tertiaryColor,this.pie4=this.pie4||ne(this.primaryColor,{l:-30}),this.pie5=this.pie5||ne(this.secondaryColor,{l:-30}),this.pie6=this.pie6||ne(this.tertiaryColor,{h:40,l:-40}),this.pie7=this.pie7||ne(this.primaryColor,{h:60,l:-10}),this.pie8=this.pie8||ne(this.primaryColor,{h:-60,l:-10}),this.pie9=this.pie9||ne(this.primaryColor,{h:120,l:0}),this.pie10=this.pie10||ne(this.primaryColor,{h:60,l:-50}),this.pie11=this.pie11||ne(this.primaryColor,{h:-60,l:-50}),this.pie12=this.pie12||ne(this.primaryColor,{h:120,l:-50}),this.pieTitleTextSize=this.pieTitleTextSize||"25px",this.pieTitleTextColor=this.pieTitleTextColor||this.taskTextDarkColor,this.pieSectionTextSize=this.pieSectionTextSize||"17px",this.pieSectionTextColor=this.pieSectionTextColor||this.textColor,this.pieLegendTextSize=this.pieLegendTextSize||"17px",this.pieLegendTextColor=this.pieLegendTextColor||this.taskTextDarkColor,this.pieStrokeColor=this.pieStrokeColor||"black",this.pieStrokeWidth=this.pieStrokeWidth||"2px",this.pieOuterStrokeWidth=this.pieOuterStrokeWidth||"2px",this.pieOuterStrokeColor=this.pieOuterStrokeColor||"black",this.pieOpacity=this.pieOpacity||"0.7",this.venn1=this.venn1??ne(this.primaryColor,{l:-30}),this.venn2=this.venn2??ne(this.secondaryColor,{l:-30}),this.venn3=this.venn3??ne(this.tertiaryColor,{l:-30}),this.venn4=this.venn4??ne(this.primaryColor,{h:60,l:-30}),this.venn5=this.venn5??ne(this.primaryColor,{h:-60,l:-30}),this.venn6=this.venn6??ne(this.secondaryColor,{h:60,l:-30}),this.venn7=this.venn7??ne(this.primaryColor,{h:120,l:-30}),this.venn8=this.venn8??ne(this.secondaryColor,{h:120,l:-30}),this.vennTitleTextColor=this.vennTitleTextColor??this.titleColor,this.vennSetTextColor=this.vennSetTextColor??this.textColor,this.quadrant1Fill=this.quadrant1Fill||this.primaryColor,this.quadrant2Fill=this.quadrant2Fill||ne(this.primaryColor,{r:5,g:5,b:5}),this.quadrant3Fill=this.quadrant3Fill||ne(this.primaryColor,{r:10,g:10,b:10}),this.quadrant4Fill=this.quadrant4Fill||ne(this.primaryColor,{r:15,g:15,b:15}),this.quadrant1TextFill=this.quadrant1TextFill||this.primaryTextColor,this.quadrant2TextFill=this.quadrant2TextFill||ne(this.primaryTextColor,{r:-5,g:-5,b:-5}),this.quadrant3TextFill=this.quadrant3TextFill||ne(this.primaryTextColor,{r:-10,g:-10,b:-10}),this.quadrant4TextFill=this.quadrant4TextFill||ne(this.primaryTextColor,{r:-15,g:-15,b:-15}),this.quadrantPointFill=this.quadrantPointFill||ri(this.quadrant1Fill)?je(this.quadrant1Fill):Xe(this.quadrant1Fill),this.quadrantPointTextFill=this.quadrantPointTextFill||this.primaryTextColor,this.quadrantXAxisTextFill=this.quadrantXAxisTextFill||this.primaryTextColor,this.quadrantYAxisTextFill=this.quadrantYAxisTextFill||this.primaryTextColor,this.quadrantInternalBorderStrokeFill=this.quadrantInternalBorderStrokeFill||this.primaryBorderColor,this.quadrantExternalBorderStrokeFill=this.quadrantExternalBorderStrokeFill||this.primaryBorderColor,this.quadrantTitleFill=this.quadrantTitleFill||this.primaryTextColor,this.packet={startByteColor:this.primaryTextColor,endByteColor:this.primaryTextColor,labelColor:this.primaryTextColor,titleColor:this.primaryTextColor,blockStrokeColor:this.primaryTextColor,blockFillColor:this.mainBkg},this.radar={axisColor:this.radar?.axisColor||this.lineColor,axisStrokeWidth:this.radar?.axisStrokeWidth||2,axisLabelFontSize:this.radar?.axisLabelFontSize||12,curveOpacity:this.radar?.curveOpacity||.5,curveStrokeWidth:this.radar?.curveStrokeWidth||2,graticuleColor:this.radar?.graticuleColor||"#DEDEDE",graticuleStrokeWidth:this.radar?.graticuleStrokeWidth||1,graticuleOpacity:this.radar?.graticuleOpacity||.3,legendBoxSize:this.radar?.legendBoxSize||12,legendFontSize:this.radar?.legendFontSize||12},this.wardleyEvolutionColor=this.wardleyEvolutionColor||"#dc3545",this.wardley={backgroundColor:this.wardley?.backgroundColor||this.background,axisColor:this.wardley?.axisColor||this.lineColor,axisTextColor:this.wardley?.axisTextColor||this.primaryTextColor,gridColor:this.wardley?.gridColor||this.gridColor,componentFill:this.wardley?.componentFill||this.background,componentStroke:this.wardley?.componentStroke||this.lineColor,componentLabelColor:this.wardley?.componentLabelColor||this.primaryTextColor,linkStroke:this.wardley?.linkStroke||this.lineColor,evolutionStroke:this.wardley?.evolutionStroke||this.wardleyEvolutionColor,annotationStroke:this.wardley?.annotationStroke||this.lineColor,annotationTextColor:this.wardley?.annotationTextColor||this.primaryTextColor,annotationFill:this.wardley?.annotationFill||this.background},this.xyChart={backgroundColor:this.xyChart?.backgroundColor||this.background,titleColor:this.xyChart?.titleColor||this.primaryTextColor,dataLabelColor:this.xyChart?.dataLabelColor||this.primaryTextColor,xAxisTitleColor:this.xyChart?.xAxisTitleColor||this.primaryTextColor,xAxisLabelColor:this.xyChart?.xAxisLabelColor||this.primaryTextColor,xAxisTickColor:this.xyChart?.xAxisTickColor||this.primaryTextColor,xAxisLineColor:this.xyChart?.xAxisLineColor||this.primaryTextColor,yAxisTitleColor:this.xyChart?.yAxisTitleColor||this.primaryTextColor,yAxisLabelColor:this.xyChart?.yAxisLabelColor||this.primaryTextColor,yAxisTickColor:this.xyChart?.yAxisTickColor||this.primaryTextColor,yAxisLineColor:this.xyChart?.yAxisLineColor||this.primaryTextColor,plotColorPalette:this.xyChart?.plotColorPalette||"#CDE498,#FF6B6B,#A0D2DB,#D7BDE2,#F0F0F0,#FFC3A0,#7FD8BE,#FF9A8B,#FAF3E0,#FFF176"},this.requirementBackground=this.requirementBackground||this.primaryColor,this.requirementBorderColor=this.requirementBorderColor||this.primaryBorderColor,this.requirementBorderSize=this.requirementBorderSize||"1",this.requirementTextColor=this.requirementTextColor||this.primaryTextColor,this.relationColor=this.relationColor||this.lineColor,this.relationLabelBackground=this.relationLabelBackground||this.edgeLabelBackground,this.relationLabelColor=this.relationLabelColor||this.actorTextColor,this.git0=this.git0||this.primaryColor,this.git1=this.git1||this.secondaryColor,this.git2=this.git2||this.tertiaryColor,this.git3=this.git3||ne(this.primaryColor,{h:-30}),this.git4=this.git4||ne(this.primaryColor,{h:-60}),this.git5=this.git5||ne(this.primaryColor,{h:-90}),this.git6=this.git6||ne(this.primaryColor,{h:60}),this.git7=this.git7||ne(this.primaryColor,{h:120}),this.darkMode?(this.git0=je(this.git0,25),this.git1=je(this.git1,25),this.git2=je(this.git2,25),this.git3=je(this.git3,25),this.git4=je(this.git4,25),this.git5=je(this.git5,25),this.git6=je(this.git6,25),this.git7=je(this.git7,25)):(this.git0=Xe(this.git0,25),this.git1=Xe(this.git1,25),this.git2=Xe(this.git2,25),this.git3=Xe(this.git3,25),this.git4=Xe(this.git4,25),this.git5=Xe(this.git5,25),this.git6=Xe(this.git6,25),this.git7=Xe(this.git7,25)),this.gitInv0=this.gitInv0||Ge(this.git0),this.gitInv1=this.gitInv1||Ge(this.git1),this.gitInv2=this.gitInv2||Ge(this.git2),this.gitInv3=this.gitInv3||Ge(this.git3),this.gitInv4=this.gitInv4||Ge(this.git4),this.gitInv5=this.gitInv5||Ge(this.git5),this.gitInv6=this.gitInv6||Ge(this.git6),this.gitInv7=this.gitInv7||Ge(this.git7),this.gitBranchLabel0=this.gitBranchLabel0||Ge(this.labelTextColor),this.gitBranchLabel1=this.gitBranchLabel1||this.labelTextColor,this.gitBranchLabel2=this.gitBranchLabel2||this.labelTextColor,this.gitBranchLabel3=this.gitBranchLabel3||Ge(this.labelTextColor),this.gitBranchLabel4=this.gitBranchLabel4||this.labelTextColor,this.gitBranchLabel5=this.gitBranchLabel5||this.labelTextColor,this.gitBranchLabel6=this.gitBranchLabel6||this.labelTextColor,this.gitBranchLabel7=this.gitBranchLabel7||this.labelTextColor,this.tagLabelColor=this.tagLabelColor||this.primaryTextColor,this.tagLabelBackground=this.tagLabelBackground||this.primaryColor,this.tagLabelBorder=this.tagBorder||this.primaryBorderColor,this.tagLabelFontSize=this.tagLabelFontSize||"10px",this.commitLabelColor=this.commitLabelColor||this.secondaryTextColor,this.commitLabelBackground=this.commitLabelBackground||this.secondaryColor,this.commitLabelFontSize=this.commitLabelFontSize||"10px",this.emUiFill=this.emUiFill||"white",this.emUiStroke=this.emUiStroke||"#dbdada",this.emProcessorFill=this.emProcessorFill||"#edb3f6",this.emProcessorStroke=this.emProcessorStroke||"#b88cbf",this.emReadModelFill=this.emReadModelFill||"#d3f1a2",this.emReadModelStroke=this.emReadModelStroke||"#a3b732",this.emCommandFill=this.emCommandFill||"#bcd6fe",this.emCommandStroke=this.emCommandStroke||"#679ac3",this.emEventFill=this.emEventFill||"#ffb778",this.emEventStroke=this.emEventStroke||"#c19a0f",this.emSwimlaneBackgroundOdd=this.emSwimlaneBackgroundOdd||"rgb(250,250,250)",this.emSwimlaneBackgroundStroke=this.emSwimlaneBackgroundStroke||"rgb(240,240,240)",this.emArrowhead=this.emArrowhead||this.lineColor,this.emRelationStroke=this.emRelationStroke||this.lineColor,this.attributeBackgroundColorOdd=this.attributeBackgroundColorOdd||kn,this.attributeBackgroundColorEven=this.attributeBackgroundColorEven||wn}calculate(t){if(typeof t!="object"){this.updateColors();return}let r=Object.keys(t);r.forEach(i=>{this[i]=t[i]}),this.updateColors(),r.forEach(i=>{this[i]=t[i]})}},EH=o(e=>{let t=new x7;return t.calculate(e),t},"getThemeVariables")});var b7,_H,DH=z(()=>{"use strict";Cn();Eo();dl();b7=class{static{o(this,"Theme")}constructor(){this.primaryColor="#eee",this.contrast="#707070",this.secondaryColor=je(this.contrast,55),this.background="#ffffff",this.tertiaryColor=ne(this.primaryColor,{h:-160}),this.primaryBorderColor=Jt(this.primaryColor,this.darkMode),this.secondaryBorderColor=Jt(this.secondaryColor,this.darkMode),this.tertiaryBorderColor=Jt(this.tertiaryColor,this.darkMode),this.primaryTextColor=Ge(this.primaryColor),this.secondaryTextColor=Ge(this.secondaryColor),this.tertiaryTextColor=Ge(this.tertiaryColor),this.lineColor=Ge(this.background),this.textColor=Ge(this.background),this.mainBkg="#eee",this.secondBkg="calculated",this.lineColor="#666",this.border1="#999",this.border2="calculated",this.note="#ffa",this.text="#333",this.critical="#d42",this.done="#bbb",this.arrowheadColor="#333333",this.fontFamily='"trebuchet ms", verdana, arial, sans-serif',this.fontSize="16px",this.THEME_COLOR_LIMIT=12,this.radius=5,this.strokeWidth=1,this.nodeBkg="calculated",this.nodeBorder="calculated",this.clusterBkg="calculated",this.clusterBorder="calculated",this.defaultLinkColor="calculated",this.titleColor="calculated",this.edgeLabelBackground="white",this.actorBorder="calculated",this.actorBkg="calculated",this.actorTextColor="calculated",this.actorLineColor=this.actorBorder,this.signalColor="calculated",this.signalTextColor="calculated",this.labelBoxBkgColor="calculated",this.labelBoxBorderColor="calculated",this.labelTextColor="calculated",this.loopTextColor="calculated",this.noteBorderColor="calculated",this.noteBkgColor="calculated",this.noteTextColor="calculated",this.activationBorderColor="#666",this.activationBkgColor="#f4f4f4",this.sequenceNumberColor="white",this.sectionBkgColor="calculated",this.altSectionBkgColor="white",this.sectionBkgColor2="calculated",this.excludeBkgColor="#eeeeee",this.taskBorderColor="calculated",this.taskBkgColor="calculated",this.taskTextLightColor="white",this.taskTextColor="calculated",this.taskTextDarkColor="calculated",this.taskTextOutsideColor="calculated",this.taskTextClickableColor="#003163",this.activeTaskBorderColor="calculated",this.activeTaskBkgColor="calculated",this.gridColor="calculated",this.doneTaskBkgColor="calculated",this.doneTaskBorderColor="calculated",this.critBkgColor="calculated",this.critBorderColor="calculated",this.todayLineColor="calculated",this.vertLineColor="calculated",this.personBorder=this.primaryBorderColor,this.personBkg=this.mainBkg,this.archEdgeColor="calculated",this.archEdgeArrowColor="calculated",this.archEdgeWidth="3",this.archGroupBorderColor=this.primaryBorderColor,this.archGroupBorderWidth="2px",this.noteFontWeight="normal",this.fontWeight="normal",this.rowOdd=this.rowOdd||je(this.mainBkg,75)||"#ffffff",this.rowEven=this.rowEven||"#f4f4f4",this.labelColor="black",this.errorBkgColor="#552222",this.errorTextColor="#552222",this.useGradient=!0,this.gradientStart=this.primaryBorderColor,this.gradientStop=this.secondaryBorderColor,this.dropShadow="drop-shadow( 1px 2px 2px rgba(185,185,185,1))"}updateColors(){this.secondBkg=je(this.contrast,55),this.border2=this.contrast,this.actorBorder=je(this.border1,23),this.actorBkg=this.mainBkg,this.actorTextColor=this.text,this.actorLineColor=this.actorBorder,this.signalColor=this.text,this.signalTextColor=this.text,this.labelBoxBkgColor=this.actorBkg,this.labelBoxBorderColor=this.actorBorder,this.labelTextColor=this.text,this.loopTextColor=this.text,this.noteBorderColor="#999",this.noteBkgColor="#666",this.noteTextColor="#fff",this.cScale0=this.cScale0||"#555",this.cScale1=this.cScale1||"#F4F4F4",this.cScale2=this.cScale2||"#555",this.cScale3=this.cScale3||"#BBB",this.cScale4=this.cScale4||"#777",this.cScale5=this.cScale5||"#999",this.cScale6=this.cScale6||"#DDD",this.cScale7=this.cScale7||"#FFF",this.cScale8=this.cScale8||"#DDD",this.cScale9=this.cScale9||"#BBB",this.cScale10=this.cScale10||"#999",this.cScale11=this.cScale11||"#777";for(let t=0;t<this.THEME_COLOR_LIMIT;t++)this["cScaleInv"+t]=this["cScaleInv"+t]||Ge(this["cScale"+t]);for(let t=0;t<this.THEME_COLOR_LIMIT;t++)this.darkMode?this["cScalePeer"+t]=this["cScalePeer"+t]||je(this["cScale"+t],10):this["cScalePeer"+t]=this["cScalePeer"+t]||Xe(this["cScale"+t],10);this.scaleLabelColor=this.scaleLabelColor||(this.darkMode?"black":this.labelTextColor),this.cScaleLabel0=this.cScaleLabel0||this.cScale1,this.cScaleLabel2=this.cScaleLabel2||this.cScale1;for(let t=0;t<this.THEME_COLOR_LIMIT;t++)this["cScaleLabel"+t]=this["cScaleLabel"+t]||this.scaleLabelColor;for(let t=0;t<5;t++)this["surface"+t]=this["surface"+t]||ne(this.mainBkg,{l:-(5+t*5)}),this["surfacePeer"+t]=this["surfacePeer"+t]||ne(this.mainBkg,{l:-(8+t*5)});this.nodeBkg=this.mainBkg,this.nodeBorder=this.border1,this.clusterBkg=this.secondBkg,this.clusterBorder=this.border2,this.defaultLinkColor=this.lineColor,this.titleColor=this.text,this.sectionBkgColor=je(this.contrast,30),this.sectionBkgColor2=je(this.contrast,30),this.taskBorderColor=Xe(this.contrast,10),this.taskBkgColor=this.contrast,this.taskTextColor=this.taskTextLightColor,this.taskTextDarkColor=this.text,this.taskTextOutsideColor=this.taskTextDarkColor,this.activeTaskBorderColor=this.taskBorderColor,this.activeTaskBkgColor=this.mainBkg,this.gridColor=je(this.border1,30),this.doneTaskBkgColor=this.done,this.doneTaskBorderColor=this.lineColor,this.critBkgColor=this.critical,this.critBorderColor=Xe(this.critBkgColor,10),this.todayLineColor=this.critBkgColor,this.vertLineColor=this.critBkgColor,this.archEdgeColor=this.lineColor,this.archEdgeArrowColor=this.lineColor,this.transitionColor=this.transitionColor||"#000",this.transitionLabelColor=this.transitionLabelColor||this.textColor,this.stateLabelColor=this.stateLabelColor||this.stateBkg||this.primaryTextColor,this.stateBkg=this.stateBkg||this.mainBkg,this.labelBackgroundColor=this.labelBackgroundColor||this.stateBkg,this.compositeBackground=this.compositeBackground||this.background||this.tertiaryColor,this.altBackground=this.altBackground||"#f4f4f4",this.compositeTitleBackground=this.compositeTitleBackground||this.mainBkg,this.stateBorder=this.stateBorder||"#000",this.innerEndBackground=this.primaryBorderColor,this.specialStateColor="#222",this.errorBkgColor=this.errorBkgColor||this.tertiaryColor,this.errorTextColor=this.errorTextColor||this.tertiaryTextColor,this.classText=this.primaryTextColor,this.fillType0=this.primaryColor,this.fillType1=this.secondaryColor,this.fillType2=ne(this.primaryColor,{h:64}),this.fillType3=ne(this.secondaryColor,{h:64}),this.fillType4=ne(this.primaryColor,{h:-64}),this.fillType5=ne(this.secondaryColor,{h:-64}),this.fillType6=ne(this.primaryColor,{h:128}),this.fillType7=ne(this.secondaryColor,{h:128});for(let t=0;t<this.THEME_COLOR_LIMIT;t++)this["pie"+t]=this["cScale"+t];this.pie12=this.pie0,this.pieTitleTextSize=this.pieTitleTextSize||"25px",this.pieTitleTextColor=this.pieTitleTextColor||this.taskTextDarkColor,this.pieSectionTextSize=this.pieSectionTextSize||"17px",this.pieSectionTextColor=this.pieSectionTextColor||this.textColor,this.pieLegendTextSize=this.pieLegendTextSize||"17px",this.pieLegendTextColor=this.pieLegendTextColor||this.taskTextDarkColor,this.pieStrokeColor=this.pieStrokeColor||"black",this.pieStrokeWidth=this.pieStrokeWidth||"2px",this.pieOuterStrokeWidth=this.pieOuterStrokeWidth||"2px",this.pieOuterStrokeColor=this.pieOuterStrokeColor||"black",this.pieOpacity=this.pieOpacity||"0.7";for(let t=0;t<8;t++)this["venn"+(t+1)]=this["venn"+(t+1)]??this["cScale"+t];this.vennTitleTextColor=this.vennTitleTextColor??this.titleColor,this.vennSetTextColor=this.vennSetTextColor??this.textColor,this.quadrant1Fill=this.quadrant1Fill||this.primaryColor,this.quadrant2Fill=this.quadrant2Fill||ne(this.primaryColor,{r:5,g:5,b:5}),this.quadrant3Fill=this.quadrant3Fill||ne(this.primaryColor,{r:10,g:10,b:10}),this.quadrant4Fill=this.quadrant4Fill||ne(this.primaryColor,{r:15,g:15,b:15}),this.quadrant1TextFill=this.quadrant1TextFill||this.primaryTextColor,this.quadrant2TextFill=this.quadrant2TextFill||ne(this.primaryTextColor,{r:-5,g:-5,b:-5}),this.quadrant3TextFill=this.quadrant3TextFill||ne(this.primaryTextColor,{r:-10,g:-10,b:-10}),this.quadrant4TextFill=this.quadrant4TextFill||ne(this.primaryTextColor,{r:-15,g:-15,b:-15}),this.quadrantPointFill=this.quadrantPointFill||ri(this.quadrant1Fill)?je(this.quadrant1Fill):Xe(this.quadrant1Fill),this.quadrantPointTextFill=this.quadrantPointTextFill||this.primaryTextColor,this.quadrantXAxisTextFill=this.quadrantXAxisTextFill||this.primaryTextColor,this.quadrantYAxisTextFill=this.quadrantYAxisTextFill||this.primaryTextColor,this.quadrantInternalBorderStrokeFill=this.quadrantInternalBorderStrokeFill||this.primaryBorderColor,this.quadrantExternalBorderStrokeFill=this.quadrantExternalBorderStrokeFill||this.primaryBorderColor,this.quadrantTitleFill=this.quadrantTitleFill||this.primaryTextColor,this.xyChart={backgroundColor:this.xyChart?.backgroundColor||this.background,titleColor:this.xyChart?.titleColor||this.primaryTextColor,dataLabelColor:this.xyChart?.dataLabelColor||this.primaryTextColor,xAxisTitleColor:this.xyChart?.xAxisTitleColor||this.primaryTextColor,xAxisLabelColor:this.xyChart?.xAxisLabelColor||this.primaryTextColor,xAxisTickColor:this.xyChart?.xAxisTickColor||this.primaryTextColor,xAxisLineColor:this.xyChart?.xAxisLineColor||this.primaryTextColor,yAxisTitleColor:this.xyChart?.yAxisTitleColor||this.primaryTextColor,yAxisLabelColor:this.xyChart?.yAxisLabelColor||this.primaryTextColor,yAxisTickColor:this.xyChart?.yAxisTickColor||this.primaryTextColor,yAxisLineColor:this.xyChart?.yAxisLineColor||this.primaryTextColor,plotColorPalette:this.xyChart?.plotColorPalette||"#EEE,#6BB8E4,#8ACB88,#C7ACD6,#E8DCC2,#FFB2A8,#FFF380,#7E8D91,#FFD8B1,#FAF3E0"},this.radar={axisColor:this.radar?.axisColor||this.lineColor,axisStrokeWidth:this.radar?.axisStrokeWidth||2,axisLabelFontSize:this.radar?.axisLabelFontSize||12,curveOpacity:this.radar?.curveOpacity||.5,curveStrokeWidth:this.radar?.curveStrokeWidth||2,graticuleColor:this.radar?.graticuleColor||"#DEDEDE",graticuleStrokeWidth:this.radar?.graticuleStrokeWidth||1,graticuleOpacity:this.radar?.graticuleOpacity||.3,legendBoxSize:this.radar?.legendBoxSize||12,legendFontSize:this.radar?.legendFontSize||12},this.wardleyEvolutionColor=this.wardleyEvolutionColor||"#dc3545",this.wardley={backgroundColor:this.wardley?.backgroundColor||this.background,axisColor:this.wardley?.axisColor||this.lineColor,axisTextColor:this.wardley?.axisTextColor||this.primaryTextColor,gridColor:this.wardley?.gridColor||this.gridColor,componentFill:this.wardley?.componentFill||this.background,componentStroke:this.wardley?.componentStroke||this.lineColor,componentLabelColor:this.wardley?.componentLabelColor||this.primaryTextColor,linkStroke:this.wardley?.linkStroke||this.lineColor,evolutionStroke:this.wardley?.evolutionStroke||this.wardleyEvolutionColor,annotationStroke:this.wardley?.annotationStroke||this.lineColor,annotationTextColor:this.wardley?.annotationTextColor||this.primaryTextColor,annotationFill:this.wardley?.annotationFill||this.background},this.requirementBackground=this.requirementBackground||this.primaryColor,this.requirementBorderColor=this.requirementBorderColor||this.primaryBorderColor,this.requirementBorderSize=this.requirementBorderSize||"1",this.requirementTextColor=this.requirementTextColor||this.primaryTextColor,this.relationColor=this.relationColor||this.lineColor,this.relationLabelBackground=this.relationLabelBackground||this.edgeLabelBackground,this.relationLabelColor=this.relationLabelColor||this.actorTextColor,this.git0=Xe(this.pie1,25)||this.primaryColor,this.git1=this.pie2||this.secondaryColor,this.git2=this.pie3||this.tertiaryColor,this.git3=this.pie4||ne(this.primaryColor,{h:-30}),this.git4=this.pie5||ne(this.primaryColor,{h:-60}),this.git5=this.pie6||ne(this.primaryColor,{h:-90}),this.git6=this.pie7||ne(this.primaryColor,{h:60}),this.git7=this.pie8||ne(this.primaryColor,{h:120}),this.gitInv0=this.gitInv0||Ge(this.git0),this.gitInv1=this.gitInv1||Ge(this.git1),this.gitInv2=this.gitInv2||Ge(this.git2),this.gitInv3=this.gitInv3||Ge(this.git3),this.gitInv4=this.gitInv4||Ge(this.git4),this.gitInv5=this.gitInv5||Ge(this.git5),this.gitInv6=this.gitInv6||Ge(this.git6),this.gitInv7=this.gitInv7||Ge(this.git7),this.branchLabelColor=this.branchLabelColor||this.labelTextColor,this.gitBranchLabel0=this.branchLabelColor,this.gitBranchLabel1="white",this.gitBranchLabel2=this.branchLabelColor,this.gitBranchLabel3="white",this.gitBranchLabel4=this.branchLabelColor,this.gitBranchLabel5=this.branchLabelColor,this.gitBranchLabel6=this.branchLabelColor,this.gitBranchLabel7=this.branchLabelColor,this.tagLabelColor=this.tagLabelColor||this.primaryTextColor,this.tagLabelBackground=this.tagLabelBackground||this.primaryColor,this.tagLabelBorder=this.tagBorder||this.primaryBorderColor,this.tagLabelFontSize=this.tagLabelFontSize||"10px",this.commitLabelColor=this.commitLabelColor||this.secondaryTextColor,this.commitLabelBackground=this.commitLabelBackground||this.secondaryColor,this.commitLabelFontSize=this.commitLabelFontSize||"10px",this.emUiFill=this.emUiFill||"white",this.emUiStroke=this.emUiStroke||"#dbdada",this.emProcessorFill=this.emProcessorFill||"#edb3f6",this.emProcessorStroke=this.emProcessorStroke||"#b88cbf",this.emReadModelFill=this.emReadModelFill||"#d3f1a2",this.emReadModelStroke=this.emReadModelStroke||"#a3b732",this.emCommandFill=this.emCommandFill||"#bcd6fe",this.emCommandStroke=this.emCommandStroke||"#679ac3",this.emEventFill=this.emEventFill||"#ffb778",this.emEventStroke=this.emEventStroke||"#c19a0f",this.emSwimlaneBackgroundOdd=this.emSwimlaneBackgroundOdd||"rgb(250,250,250)",this.emSwimlaneBackgroundStroke=this.emSwimlaneBackgroundStroke||"rgb(240,240,240)",this.emArrowhead=this.emArrowhead||this.lineColor,this.emRelationStroke=this.emRelationStroke||this.lineColor,this.attributeBackgroundColorOdd=this.attributeBackgroundColorOdd||kn,this.attributeBackgroundColorEven=this.attributeBackgroundColorEven||wn}calculate(t){if(typeof t!="object"){this.updateColors();return}let r=Object.keys(t);r.forEach(i=>{this[i]=t[i]}),this.updateColors(),r.forEach(i=>{this[i]=t[i]})}},_H=o(e=>{let t=new b7;return t.calculate(e),t},"getThemeVariables")});var T7,RH,LH=z(()=>{"use strict";Cn();Eo();dl();T7=class{static{o(this,"Theme")}constructor(){this.background="#ffffff",this.primaryColor="#cccccc",this.mainBkg="#ffffff",this.noteBkgColor="#fff5ad",this.noteTextColor="#333",this.THEME_COLOR_LIMIT=12,this.radius=3,this.strokeWidth=2,this.primaryBorderColor=Jt(this.primaryColor,this.darkMode),this.fontFamily="arial, sans-serif",this.fontSize="14px",this.nodeBorder="#000000",this.stateBorder="#000000",this.useGradient=!0,this.gradientStart="#0042eb",this.gradientStop="#eb0042",this.dropShadow="drop-shadow( 0px 1px 2px rgba(0, 0, 0, 0.25));",this.tertiaryColor="#ffffff",this.archEdgeColor="calculated",this.archEdgeArrowColor="calculated",this.archEdgeWidth="3",this.archGroupBorderColor=this.primaryBorderColor,this.archGroupBorderWidth="2px",this.noteFontWeight="normal",this.fontWeight="normal"}updateColors(){this.primaryTextColor=this.primaryTextColor||(this.darkMode?"#eee":"#333"),this.secondaryColor=this.secondaryColor||ne(this.primaryColor,{h:-120}),this.tertiaryColor=this.tertiaryColor||ne(this.primaryColor,{h:180,l:5}),this.primaryBorderColor=this.primaryBorderColor||Jt(this.primaryColor,this.darkMode),this.secondaryBorderColor=this.secondaryBorderColor||Jt(this.secondaryColor,this.darkMode),this.tertiaryBorderColor=this.tertiaryBorderColor||Jt(this.tertiaryColor,this.darkMode),this.noteBorderColor=this.noteBorderColor||Jt(this.noteBkgColor,this.darkMode),this.noteBkgColor=this.noteBkgColor||"#fff5ad",this.noteTextColor=this.noteTextColor||"#333",this.secondaryTextColor=this.secondaryTextColor||Ge(this.secondaryColor),this.tertiaryTextColor=this.tertiaryTextColor||Ge(this.tertiaryColor),this.lineColor=this.lineColor||Ge(this.background),this.arrowheadColor=this.arrowheadColor||Ge(this.background),this.textColor=this.textColor||this.primaryTextColor,this.border2=this.border2||this.tertiaryBorderColor,this.nodeBkg=this.nodeBkg||this.primaryColor,this.mainBkg=this.mainBkg||this.primaryColor,this.nodeBorder=this.nodeBorder||this.primaryBorderColor,this.clusterBkg=this.clusterBkg||this.tertiaryColor,this.clusterBorder=this.clusterBorder||this.tertiaryBorderColor,this.defaultLinkColor=this.defaultLinkColor||this.lineColor,this.titleColor=this.titleColor||this.tertiaryTextColor,this.edgeLabelBackground=this.edgeLabelBackground||(this.darkMode?Xe(this.secondaryColor,30):this.secondaryColor),this.nodeTextColor=this.nodeTextColor||this.primaryTextColor,this.actorBorder=this.actorBorder||this.primaryBorderColor,this.actorBkg=this.actorBkg||this.mainBkg,this.actorTextColor=this.actorTextColor||this.primaryTextColor,this.actorLineColor=this.actorLineColor||this.actorBorder,this.labelBoxBkgColor=this.labelBoxBkgColor||this.actorBkg,this.signalColor=this.signalColor||this.textColor,this.signalTextColor=this.signalTextColor||this.textColor,this.labelBoxBorderColor=this.labelBoxBorderColor||this.actorBorder,this.labelTextColor=this.labelTextColor||this.actorTextColor,this.loopTextColor=this.loopTextColor||this.actorTextColor,this.activationBorderColor=this.activationBorderColor||Xe(this.secondaryColor,10),this.activationBkgColor=this.activationBkgColor||this.secondaryColor,this.sequenceNumberColor=this.sequenceNumberColor||Ge(this.lineColor);let t="#ECECFE",r="#E9E9F1",i=ne(t,{h:180,l:5});if(this.sectionBkgColor=this.sectionBkgColor||i,this.altSectionBkgColor=this.altSectionBkgColor||"white",this.sectionBkgColor=this.sectionBkgColor||r,this.sectionBkgColor2=this.sectionBkgColor2||t,this.excludeBkgColor=this.excludeBkgColor||"#eeeeee",this.taskBorderColor=this.taskBorderColor||this.primaryBorderColor,this.taskBkgColor=this.taskBkgColor||t,this.activeTaskBorderColor=this.activeTaskBorderColor||t,this.activeTaskBkgColor=this.activeTaskBkgColor||je(t,23),this.gridColor=this.gridColor||"lightgrey",this.doneTaskBkgColor=this.doneTaskBkgColor||"lightgrey",this.doneTaskBorderColor=this.doneTaskBorderColor||"grey",this.critBorderColor=this.critBorderColor||"#ff8888",this.critBkgColor=this.critBkgColor||"red",this.todayLineColor=this.todayLineColor||"red",this.taskTextColor=this.taskTextColor||this.textColor,this.taskTextOutsideColor=this.taskTextOutsideColor||this.textColor,this.vertLineColor=this.vertLineColor||this.primaryBorderColor,this.taskTextLightColor=this.taskTextLightColor||this.textColor,this.taskTextColor=this.taskTextColor||this.primaryTextColor,this.taskTextDarkColor=this.taskTextDarkColor||this.textColor,this.taskTextClickableColor=this.taskTextClickableColor||"#003163",this.archEdgeColor=this.lineColor,this.archEdgeArrowColor=this.lineColor,this.personBorder=this.personBorder||this.primaryBorderColor,this.personBkg=this.personBkg||this.mainBkg,this.transitionColor=this.transitionColor||this.lineColor,this.transitionLabelColor=this.transitionLabelColor||this.textColor,this.stateLabelColor=this.stateLabelColor||this.stateBkg||this.primaryTextColor,this.stateBkg=this.stateBkg||this.mainBkg,this.labelBackgroundColor=this.labelBackgroundColor||this.stateBkg,this.compositeBackground=this.compositeBackground||this.background||this.tertiaryColor,this.altBackground=this.altBackground||"#f0f0f0",this.compositeTitleBackground=this.compositeTitleBackground||this.mainBkg,this.compositeBorder=this.compositeBorder||this.nodeBorder,this.innerEndBackground=this.nodeBorder,this.errorBkgColor=this.errorBkgColor||this.tertiaryColor,this.errorTextColor=this.errorTextColor||this.tertiaryTextColor,this.transitionColor=this.transitionColor||this.lineColor,this.specialStateColor=this.lineColor,this.cScale0=this.cScale0||t,this.cScale1=this.cScale1||r,this.cScale2=this.cScale2||i,this.cScale3=this.cScale3||ne(t,{h:30}),this.cScale4=this.cScale4||ne(t,{h:60}),this.cScale5=this.cScale5||ne(t,{h:90}),this.cScale6=this.cScale6||ne(t,{h:120}),this.cScale7=this.cScale7||ne(t,{h:150}),this.cScale8=this.cScale8||ne(t,{h:210,l:150}),this.cScale9=this.cScale9||ne(t,{h:270}),this.cScale10=this.cScale10||ne(t,{h:300}),this.cScale11=this.cScale11||ne(t,{h:330}),this.darkMode)for(let a=0;a<this.THEME_COLOR_LIMIT;a++)this["cScale"+a]=Xe(this["cScale"+a],75);else for(let a=0;a<this.THEME_COLOR_LIMIT;a++)this["cScale"+a]=Xe(this["cScale"+a],25);for(let a=0;a<this.THEME_COLOR_LIMIT;a++)this["cScaleInv"+a]=this["cScaleInv"+a]||Ge(this["cScale"+a]);for(let a=0;a<this.THEME_COLOR_LIMIT;a++)this.darkMode?this["cScalePeer"+a]=this["cScalePeer"+a]||je(this["cScale"+a],10):this["cScalePeer"+a]=this["cScalePeer"+a]||Xe(this["cScale"+a],10);this.scaleLabelColor=this.scaleLabelColor||this.labelTextColor;for(let a=0;a<this.THEME_COLOR_LIMIT;a++)this["cScaleLabel"+a]=this["cScaleLabel"+a]||this.scaleLabelColor;let n=this.darkMode?-4:-1;for(let a=0;a<5;a++)this["surface"+a]=this["surface"+a]||ne(this.mainBkg,{h:180,s:-15,l:n*(5+a*3)}),this["surfacePeer"+a]=this["surfacePeer"+a]||ne(this.mainBkg,{h:180,s:-15,l:n*(8+a*3)});this.classText=this.classText||this.textColor,this.fillType0=this.fillType0||t,this.fillType1=this.fillType1||r,this.fillType2=this.fillType2||ne(t,{h:64}),this.fillType3=this.fillType3||ne(r,{h:64}),this.fillType4=this.fillType4||ne(t,{h:-64}),this.fillType5=this.fillType5||ne(r,{h:-64}),this.fillType6=this.fillType6||ne(t,{h:128}),this.fillType7=this.fillType7||ne(r,{h:128}),this.pie1=this.pie1||t,this.pie2=this.pie2||r,this.pie3=this.pie3||i,this.pie4=this.pie4||ne(t,{l:-10}),this.pie5=this.pie5||ne(r,{l:-10}),this.pie6=this.pie6||ne(i,{l:-10}),this.pie7=this.pie7||ne(t,{h:60,l:-10}),this.pie8=this.pie8||ne(t,{h:-60,l:-10}),this.pie9=this.pie9||ne(t,{h:120,l:0}),this.pie10=this.pie10||ne(t,{h:60,l:-20}),this.pie11=this.pie11||ne(t,{h:-60,l:-20}),this.pie12=this.pie12||ne(t,{h:120,l:-10}),this.pieTitleTextSize=this.pieTitleTextSize||"25px",this.pieTitleTextColor=this.pieTitleTextColor||this.taskTextDarkColor,this.pieSectionTextSize=this.pieSectionTextSize||"17px",this.pieSectionTextColor=this.pieSectionTextColor||this.textColor,this.pieLegendTextSize=this.pieLegendTextSize||"17px",this.pieLegendTextColor=this.pieLegendTextColor||this.taskTextDarkColor,this.pieStrokeColor=this.pieStrokeColor||"black",this.pieStrokeWidth=this.pieStrokeWidth||"2px",this.pieOuterStrokeWidth=this.pieOuterStrokeWidth||"2px",this.pieOuterStrokeColor=this.pieOuterStrokeColor||"black",this.pieOpacity=this.pieOpacity||"0.7",this.vennTitleTextColor=this.vennTitleTextColor??this.titleColor,this.vennSetTextColor=this.vennSetTextColor??this.textColor,this.quadrant1Fill=this.quadrant1Fill||t,this.quadrant2Fill=this.quadrant2Fill||ne(t,{r:5,g:5,b:5}),this.quadrant3Fill=this.quadrant3Fill||ne(t,{r:10,g:10,b:10}),this.quadrant4Fill=this.quadrant4Fill||ne(t,{r:15,g:15,b:15}),this.quadrant1TextFill=this.quadrant1TextFill||this.primaryTextColor,this.quadrant2TextFill=this.quadrant2TextFill||ne(this.primaryTextColor,{r:-5,g:-5,b:-5}),this.quadrant3TextFill=this.quadrant3TextFill||ne(this.primaryTextColor,{r:-10,g:-10,b:-10}),this.quadrant4TextFill=this.quadrant4TextFill||ne(this.primaryTextColor,{r:-15,g:-15,b:-15}),this.quadrantPointFill=this.quadrantPointFill||ri(this.quadrant1Fill)?je(this.quadrant1Fill):Xe(this.quadrant1Fill),this.quadrantPointTextFill=this.quadrantPointTextFill||this.primaryTextColor,this.quadrantXAxisTextFill=this.quadrantXAxisTextFill||this.primaryTextColor,this.quadrantYAxisTextFill=this.quadrantYAxisTextFill||this.primaryTextColor,this.quadrantInternalBorderStrokeFill=this.quadrantInternalBorderStrokeFill||this.primaryBorderColor,this.quadrantExternalBorderStrokeFill=this.quadrantExternalBorderStrokeFill||this.primaryBorderColor,this.quadrantTitleFill=this.quadrantTitleFill||this.primaryTextColor,this.xyChart={backgroundColor:this.xyChart?.backgroundColor||this.background,titleColor:this.xyChart?.titleColor||this.primaryTextColor,xAxisTitleColor:this.xyChart?.xAxisTitleColor||this.primaryTextColor,xAxisLabelColor:this.xyChart?.xAxisLabelColor||this.primaryTextColor,xAxisTickColor:this.xyChart?.xAxisTickColor||this.primaryTextColor,xAxisLineColor:this.xyChart?.xAxisLineColor||this.primaryTextColor,yAxisTitleColor:this.xyChart?.yAxisTitleColor||this.primaryTextColor,yAxisLabelColor:this.xyChart?.yAxisLabelColor||this.primaryTextColor,yAxisTickColor:this.xyChart?.yAxisTickColor||this.primaryTextColor,yAxisLineColor:this.xyChart?.yAxisLineColor||this.primaryTextColor,plotColorPalette:this.xyChart?.plotColorPalette||"#FFF4DD,#FFD8B1,#FFA07A,#ECEFF1,#D6DBDF,#C3E0A8,#FFB6A4,#FFD74D,#738FA7,#FFFFF0"},this.requirementBackground=this.requirementBackground||t,this.requirementBorderColor=this.requirementBorderColor||this.primaryBorderColor,this.requirementBorderSize=this.requirementBorderSize||"1",this.requirementTextColor=this.requirementTextColor||this.primaryTextColor,this.relationColor=this.relationColor||this.lineColor,this.relationLabelBackground=this.relationLabelBackground||(this.darkMode?Xe(this.secondaryColor,30):this.secondaryColor),this.relationLabelColor=this.relationLabelColor||this.actorTextColor,this.git0=this.git0||t,this.git1=this.git1||r,this.git2=this.git2||i,this.git3=this.git3||ne(t,{h:-30}),this.git4=this.git4||ne(t,{h:-60}),this.git5=this.git5||ne(t,{h:-90}),this.git6=this.git6||ne(t,{h:60}),this.git7=this.git7||ne(t,{h:120}),this.darkMode?(this.git0=je(this.git0,25),this.git1=je(this.git1,25),this.git2=je(this.git2,25),this.git3=je(this.git3,25),this.git4=je(this.git4,25),this.git5=je(this.git5,25),this.git6=je(this.git6,25),this.git7=je(this.git7,25)):(this.git0=Xe(this.git0,25),this.git1=Xe(this.git1,25),this.git2=Xe(this.git2,25),this.git3=Xe(this.git3,25),this.git4=Xe(this.git4,25),this.git5=Xe(this.git5,25),this.git6=Xe(this.git6,25),this.git7=Xe(this.git7,25)),this.gitInv0=this.gitInv0||Ge(this.git0),this.gitInv1=this.gitInv1||Ge(this.git1),this.gitInv2=this.gitInv2||Ge(this.git2),this.gitInv3=this.gitInv3||Ge(this.git3),this.gitInv4=this.gitInv4||Ge(this.git4),this.gitInv5=this.gitInv5||Ge(this.git5),this.gitInv6=this.gitInv6||Ge(this.git6),this.gitInv7=this.gitInv7||Ge(this.git7),this.branchLabelColor=this.branchLabelColor||(this.darkMode?"black":this.labelTextColor),this.gitBranchLabel0=this.gitBranchLabel0||this.branchLabelColor,this.gitBranchLabel1=this.gitBranchLabel1||this.branchLabelColor,this.gitBranchLabel2=this.gitBranchLabel2||this.branchLabelColor,this.gitBranchLabel3=this.gitBranchLabel3||this.branchLabelColor,this.gitBranchLabel4=this.gitBranchLabel4||this.branchLabelColor,this.gitBranchLabel5=this.gitBranchLabel5||this.branchLabelColor,this.gitBranchLabel6=this.gitBranchLabel6||this.branchLabelColor,this.gitBranchLabel7=this.gitBranchLabel7||this.branchLabelColor,this.tagLabelColor=this.tagLabelColor||this.primaryTextColor,this.tagLabelBackground=this.tagLabelBackground||this.primaryColor,this.tagLabelBorder=this.tagBorder||this.primaryBorderColor,this.tagLabelFontSize=this.tagLabelFontSize||"10px",this.commitLabelColor=this.commitLabelColor||this.secondaryTextColor,this.commitLabelBackground=this.commitLabelBackground||this.secondaryColor,this.commitLabelFontSize=this.commitLabelFontSize||"10px",this.attributeBackgroundColorOdd=this.attributeBackgroundColorOdd||kn,this.attributeBackgroundColorEven=this.attributeBackgroundColorEven||wn}calculate(t){if(typeof t!="object"){this.updateColors();return}let r=Object.keys(t);r.forEach(i=>{this[i]=t[i]}),this.updateColors(),r.forEach(i=>{this[i]=t[i]})}},RH=o(e=>{let t=new T7;return t.calculate(e),t},"getThemeVariables")});var C7,MH,NH=z(()=>{"use strict";Cn();Eo();dl();C7=class{static{o(this,"Theme")}constructor(){this.background="#333",this.primaryColor="#1f2020",this.secondaryColor=je(this.primaryColor,16),this.tertiaryColor=ne(this.primaryColor,{h:-160}),this.primaryBorderColor=Ge(this.background),this.secondaryBorderColor=Jt(this.secondaryColor,this.darkMode),this.tertiaryBorderColor=Jt(this.tertiaryColor,this.darkMode),this.primaryTextColor=Ge(this.primaryColor),this.secondaryTextColor=Ge(this.secondaryColor),this.tertiaryTextColor=Ge(this.tertiaryColor),this.mainBkg="#2a2020",this.secondBkg="calculated",this.mainContrastColor="lightgrey",this.darkTextColor=je(Ge("#323D47"),10),this.border1="#ccc",this.border2=mn(255,255,255,.25),this.arrowheadColor=Ge(this.background),this.fontFamily="arial, sans-serif",this.fontSize="14px",this.labelBackground="#181818",this.textColor="#ccc",this.THEME_COLOR_LIMIT=12,this.radius=3,this.strokeWidth=1,this.noteBkgColor="#fff5ad",this.noteTextColor="#333",this.THEME_COLOR_LIMIT=12,this.fontFamily="arial, sans-serif",this.fontSize="14px",this.useGradient=!0,this.gradientStart="#0042eb",this.gradientStop="#eb0042",this.dropShadow="drop-shadow( 1px 2px 2px rgba(185,185,185,0.2))",this.archEdgeColor="calculated",this.archEdgeArrowColor="calculated",this.archEdgeWidth="3",this.archGroupBorderColor=this.primaryBorderColor,this.archGroupBorderWidth="2px",this.noteFontWeight="normal",this.fontWeight="normal"}updateColors(){if(this.primaryTextColor=this.primaryTextColor||(this.darkMode?"#eee":"#333"),this.secondaryColor=this.secondaryColor||ne(this.primaryColor,{h:-120}),this.tertiaryColor=this.tertiaryColor||ne(this.primaryColor,{h:180,l:5}),this.primaryBorderColor=this.primaryBorderColor||Jt(this.primaryColor,this.darkMode),this.secondaryBorderColor=this.secondaryBorderColor||Jt(this.secondaryColor,this.darkMode),this.tertiaryBorderColor=this.tertiaryBorderColor||Jt(this.tertiaryColor,this.darkMode),this.noteBorderColor=this.noteBorderColor||Jt(this.noteBkgColor,this.darkMode),this.noteBkgColor=this.noteBkgColor||"#fff5ad",this.noteTextColor=this.noteTextColor||"#333",this.secondaryTextColor=this.secondaryTextColor||Ge(this.secondaryColor),this.tertiaryTextColor=this.tertiaryTextColor||Ge(this.tertiaryColor),this.lineColor=this.lineColor||Ge(this.background),this.arrowheadColor=this.arrowheadColor||Ge(this.background),this.textColor=this.textColor||this.primaryTextColor,this.border2=this.border2||this.tertiaryBorderColor,this.nodeBkg=this.nodeBkg||this.primaryColor,this.mainBkg=this.mainBkg||this.primaryColor,this.nodeBorder=this.nodeBorder||this.border1,this.clusterBkg=this.clusterBkg||this.tertiaryColor,this.clusterBorder=this.clusterBorder||this.tertiaryBorderColor,this.defaultLinkColor=this.defaultLinkColor||this.lineColor,this.titleColor=this.titleColor||this.tertiaryTextColor,this.edgeLabelBackground=this.edgeLabelBackground||(this.darkMode?Xe(this.secondaryColor,30):this.secondaryColor),this.nodeTextColor=this.nodeTextColor||this.primaryTextColor,this.actorBorder=this.actorBorder||this.primaryBorderColor,this.actorBkg=this.actorBkg||this.mainBkg,this.actorTextColor=this.actorTextColor||this.primaryTextColor,this.actorLineColor=this.actorLineColor||this.actorBorder,this.labelBoxBkgColor=this.labelBoxBkgColor||this.actorBkg,this.signalColor=this.signalColor||this.textColor,this.signalTextColor=this.signalTextColor||this.textColor,this.labelBoxBorderColor=this.labelBoxBorderColor||this.actorBorder,this.labelTextColor=this.labelTextColor||this.actorTextColor,this.loopTextColor=this.loopTextColor||this.actorTextColor,this.activationBorderColor=this.activationBorderColor||Xe(this.secondaryColor,10),this.activationBkgColor=this.activationBkgColor||this.secondaryColor,this.sequenceNumberColor=this.sequenceNumberColor||Ge(this.lineColor),this.sectionBkgColor=this.sectionBkgColor||this.tertiaryColor,this.altSectionBkgColor=this.altSectionBkgColor||"white",this.sectionBkgColor=this.sectionBkgColor||this.secondaryColor,this.sectionBkgColor2=this.sectionBkgColor2||this.primaryColor,this.excludeBkgColor=this.excludeBkgColor||"#eeeeee",this.taskBorderColor=this.taskBorderColor||this.primaryBorderColor,this.taskBkgColor=this.taskBkgColor||this.primaryColor,this.activeTaskBorderColor=this.activeTaskBorderColor||this.primaryColor,this.activeTaskBkgColor=this.activeTaskBkgColor||je(this.primaryColor,23),this.gridColor=this.gridColor||"lightgrey",this.doneTaskBkgColor=this.doneTaskBkgColor||"lightgrey",this.doneTaskBorderColor=this.doneTaskBorderColor||"grey",this.critBorderColor=this.critBorderColor||"#ff8888",this.critBkgColor=this.critBkgColor||"red",this.todayLineColor=this.todayLineColor||"red",this.vertLineColor=this.vertLineColor||this.primaryBorderColor,this.taskTextColor=this.taskTextColor||this.textColor,this.taskTextOutsideColor=this.taskTextOutsideColor||this.textColor,this.taskTextLightColor=this.taskTextLightColor||this.textColor,this.taskTextColor=this.taskTextColor||this.primaryTextColor,this.taskTextDarkColor=this.taskTextDarkColor||this.textColor,this.taskTextClickableColor=this.taskTextClickableColor||"#003163",this.archEdgeColor=this.lineColor,this.archEdgeArrowColor=this.lineColor,this.personBorder=this.personBorder||this.primaryBorderColor,this.personBkg=this.personBkg||this.mainBkg,this.transitionColor=this.transitionColor||this.lineColor,this.transitionLabelColor=this.transitionLabelColor||this.textColor,this.stateLabelColor=this.stateLabelColor||this.stateBkg||this.primaryTextColor,this.stateBkg=this.stateBkg||this.mainBkg,this.labelBackgroundColor=this.labelBackgroundColor||this.stateBkg,this.compositeBackground=this.compositeBackground||this.background||this.tertiaryColor,this.altBackground=this.altBackground||"#f0f0f0",this.compositeTitleBackground=this.compositeTitleBackground||this.mainBkg,this.compositeBorder=this.compositeBorder||this.nodeBorder,this.innerEndBackground=this.nodeBorder,this.errorBkgColor=this.errorBkgColor||this.tertiaryColor,this.errorTextColor=this.errorTextColor||this.tertiaryTextColor,this.transitionColor=this.transitionColor||this.lineColor,this.specialStateColor=this.lineColor,this.cScale0=this.cScale0||this.primaryColor,this.cScale1=this.cScale1||this.secondaryColor,this.cScale2=this.cScale2||this.tertiaryColor,this.cScale3=this.cScale3||ne(this.primaryColor,{h:30}),this.cScale4=this.cScale4||ne(this.primaryColor,{h:60}),this.cScale5=this.cScale5||ne(this.primaryColor,{h:90}),this.cScale6=this.cScale6||ne(this.primaryColor,{h:120}),this.cScale7=this.cScale7||ne(this.primaryColor,{h:150}),this.cScale8=this.cScale8||ne(this.primaryColor,{h:210,l:150}),this.cScale9=this.cScale9||ne(this.primaryColor,{h:270}),this.cScale10=this.cScale10||ne(this.primaryColor,{h:300}),this.cScale11=this.cScale11||ne(this.primaryColor,{h:330}),this.darkMode)for(let r=0;r<this.THEME_COLOR_LIMIT;r++)this["cScale"+r]=Xe(this["cScale"+r],75);else for(let r=0;r<this.THEME_COLOR_LIMIT;r++)this["cScale"+r]=Xe(this["cScale"+r],25);for(let r=0;r<this.THEME_COLOR_LIMIT;r++)this["cScaleInv"+r]=this["cScaleInv"+r]||Ge(this["cScale"+r]);for(let r=0;r<this.THEME_COLOR_LIMIT;r++)this.darkMode?this["cScalePeer"+r]=this["cScalePeer"+r]||je(this["cScale"+r],10):this["cScalePeer"+r]=this["cScalePeer"+r]||Xe(this["cScale"+r],10);this.scaleLabelColor=this.scaleLabelColor||this.labelTextColor;for(let r=0;r<this.THEME_COLOR_LIMIT;r++)this["cScaleLabel"+r]=this["cScaleLabel"+r]||this.scaleLabelColor;let t=this.darkMode?-4:-1;for(let r=0;r<5;r++)this["surface"+r]=this["surface"+r]||ne(this.mainBkg,{h:180,s:-15,l:t*(5+r*3)}),this["surfacePeer"+r]=this["surfacePeer"+r]||ne(this.mainBkg,{h:180,s:-15,l:t*(8+r*3)});this.classText=this.classText||this.textColor,this.fillType0=this.fillType0||this.primaryColor,this.fillType1=this.fillType1||this.secondaryColor,this.fillType2=this.fillType2||ne(this.primaryColor,{h:64}),this.fillType3=this.fillType3||ne(this.secondaryColor,{h:64}),this.fillType4=this.fillType4||ne(this.primaryColor,{h:-64}),this.fillType5=this.fillType5||ne(this.secondaryColor,{h:-64}),this.fillType6=this.fillType6||ne(this.primaryColor,{h:128}),this.fillType7=this.fillType7||ne(this.secondaryColor,{h:128}),this.pie1=this.pie1||this.primaryColor,this.pie2=this.pie2||this.secondaryColor,this.pie3=this.pie3||this.tertiaryColor,this.pie4=this.pie4||ne(this.primaryColor,{l:-10}),this.pie5=this.pie5||ne(this.secondaryColor,{l:-10}),this.pie6=this.pie6||ne(this.tertiaryColor,{l:-10}),this.pie7=this.pie7||ne(this.primaryColor,{h:60,l:-10}),this.pie8=this.pie8||ne(this.primaryColor,{h:-60,l:-10}),this.pie9=this.pie9||ne(this.primaryColor,{h:120,l:0}),this.pie10=this.pie10||ne(this.primaryColor,{h:60,l:-20}),this.pie11=this.pie11||ne(this.primaryColor,{h:-60,l:-20}),this.pie12=this.pie12||ne(this.primaryColor,{h:120,l:-10}),this.pieTitleTextSize=this.pieTitleTextSize||"25px",this.pieTitleTextColor=this.pieTitleTextColor||this.taskTextDarkColor,this.pieSectionTextSize=this.pieSectionTextSize||"17px",this.pieSectionTextColor=this.pieSectionTextColor||this.textColor,this.pieLegendTextSize=this.pieLegendTextSize||"17px",this.pieLegendTextColor=this.pieLegendTextColor||this.taskTextDarkColor,this.pieStrokeColor=this.pieStrokeColor||"black",this.pieStrokeWidth=this.pieStrokeWidth||"2px",this.pieOuterStrokeWidth=this.pieOuterStrokeWidth||"2px",this.pieOuterStrokeColor=this.pieOuterStrokeColor||"black",this.pieOpacity=this.pieOpacity||"0.7",this.vennTitleTextColor=this.vennTitleTextColor??this.titleColor,this.vennSetTextColor=this.vennSetTextColor??this.textColor,this.quadrant1Fill=this.quadrant1Fill||this.primaryColor,this.quadrant2Fill=this.quadrant2Fill||ne(this.primaryColor,{r:5,g:5,b:5}),this.quadrant3Fill=this.quadrant3Fill||ne(this.primaryColor,{r:10,g:10,b:10}),this.quadrant4Fill=this.quadrant4Fill||ne(this.primaryColor,{r:15,g:15,b:15}),this.quadrant1TextFill=this.quadrant1TextFill||this.primaryTextColor,this.quadrant2TextFill=this.quadrant2TextFill||ne(this.primaryTextColor,{r:-5,g:-5,b:-5}),this.quadrant3TextFill=this.quadrant3TextFill||ne(this.primaryTextColor,{r:-10,g:-10,b:-10}),this.quadrant4TextFill=this.quadrant4TextFill||ne(this.primaryTextColor,{r:-15,g:-15,b:-15}),this.quadrantPointFill=this.quadrantPointFill||ri(this.quadrant1Fill)?je(this.quadrant1Fill):Xe(this.quadrant1Fill),this.quadrantPointTextFill=this.quadrantPointTextFill||this.primaryTextColor,this.quadrantXAxisTextFill=this.quadrantXAxisTextFill||this.primaryTextColor,this.quadrantYAxisTextFill=this.quadrantYAxisTextFill||this.primaryTextColor,this.quadrantInternalBorderStrokeFill=this.quadrantInternalBorderStrokeFill||this.primaryBorderColor,this.quadrantExternalBorderStrokeFill=this.quadrantExternalBorderStrokeFill||this.primaryBorderColor,this.quadrantTitleFill=this.quadrantTitleFill||this.primaryTextColor,this.xyChart={backgroundColor:this.xyChart?.backgroundColor||this.background,titleColor:this.xyChart?.titleColor||this.primaryTextColor,xAxisTitleColor:this.xyChart?.xAxisTitleColor||this.primaryTextColor,xAxisLabelColor:this.xyChart?.xAxisLabelColor||this.primaryTextColor,xAxisTickColor:this.xyChart?.xAxisTickColor||this.primaryTextColor,xAxisLineColor:this.xyChart?.xAxisLineColor||this.primaryTextColor,yAxisTitleColor:this.xyChart?.yAxisTitleColor||this.primaryTextColor,yAxisLabelColor:this.xyChart?.yAxisLabelColor||this.primaryTextColor,yAxisTickColor:this.xyChart?.yAxisTickColor||this.primaryTextColor,yAxisLineColor:this.xyChart?.yAxisLineColor||this.primaryTextColor,plotColorPalette:this.xyChart?.plotColorPalette||"#FFF4DD,#FFD8B1,#FFA07A,#ECEFF1,#D6DBDF,#C3E0A8,#FFB6A4,#FFD74D,#738FA7,#FFFFF0"},this.requirementBackground=this.requirementBackground||this.primaryColor,this.requirementBorderColor=this.requirementBorderColor||this.primaryBorderColor,this.requirementBorderSize=this.requirementBorderSize||"1",this.requirementTextColor=this.requirementTextColor||this.primaryTextColor,this.relationColor=this.relationColor||this.lineColor,this.relationLabelBackground=this.relationLabelBackground||(this.darkMode?Xe(this.secondaryColor,30):this.secondaryColor),this.relationLabelColor=this.relationLabelColor||this.actorTextColor,this.git0=this.git0||"#0b0000",this.git1=this.git1||"#4d1037",this.git2=this.git2||"#3f5258",this.git3=this.git3||"#4f2f1b",this.git4=this.git4||"#6e0a0a",this.git5=this.git5||"#3b0048",this.git6=this.git6||"#995a01",this.git7=this.git7||"#154706",this.gitDarkMode=!0,this.gitDarkMode?(this.git0=je(this.git0,25),this.git1=je(this.git1,25),this.git2=je(this.git2,25),this.git3=je(this.git3,25),this.git4=je(this.git4,25),this.git5=je(this.git5,25),this.git6=je(this.git6,25),this.git7=je(this.git7,25)):(this.git0=Xe(this.git0,25),this.git1=Xe(this.git1,25),this.git2=Xe(this.git2,25),this.git3=Xe(this.git3,25),this.git4=Xe(this.git4,25),this.git5=Xe(this.git5,25),this.git6=Xe(this.git6,25),this.git7=Xe(this.git7,25)),this.gitInv0=this.gitInv0||Ge(this.git0),this.gitInv1=this.gitInv1||Ge(this.git1),this.gitInv2=this.gitInv2||Ge(this.git2),this.gitInv3=this.gitInv3||Ge(this.git3),this.gitInv4=this.gitInv4||Ge(this.git4),this.gitInv5=this.gitInv5||Ge(this.git5),this.gitInv6=this.gitInv6||Ge(this.git6),this.gitInv7=this.gitInv7||Ge(this.git7),this.branchLabelColor=this.branchLabelColor||(this.darkMode?"black":this.labelTextColor),this.gitBranchLabel0=this.gitBranchLabel0||this.branchLabelColor,this.gitBranchLabel1=this.gitBranchLabel1||this.branchLabelColor,this.gitBranchLabel2=this.gitBranchLabel2||this.branchLabelColor,this.gitBranchLabel3=this.gitBranchLabel3||this.branchLabelColor,this.gitBranchLabel4=this.gitBranchLabel4||this.branchLabelColor,this.gitBranchLabel5=this.gitBranchLabel5||this.branchLabelColor,this.gitBranchLabel6=this.gitBranchLabel6||this.branchLabelColor,this.gitBranchLabel7=this.gitBranchLabel7||this.branchLabelColor,this.tagLabelColor=this.tagLabelColor||this.primaryTextColor,this.tagLabelBackground=this.tagLabelBackground||this.primaryColor,this.tagLabelBorder=this.tagBorder||this.primaryBorderColor,this.tagLabelFontSize=this.tagLabelFontSize||"10px",this.commitLabelColor=this.commitLabelColor||this.secondaryTextColor,this.commitLabelBackground=this.commitLabelBackground||this.secondaryColor,this.commitLabelFontSize=this.commitLabelFontSize||"10px",this.attributeBackgroundColorOdd=this.attributeBackgroundColorOdd||kn,this.attributeBackgroundColorEven=this.attributeBackgroundColorEven||wn}calculate(t){if(typeof t!="object"){this.updateColors();return}let r=Object.keys(t);r.forEach(i=>{this[i]=t[i]}),this.updateColors(),r.forEach(i=>{this[i]=t[i]})}},MH=o(e=>{let t=new C7;return t.calculate(e),t},"getThemeVariables")});var k7,IH,OH=z(()=>{"use strict";Cn();Eo();dl();k7=class{static{o(this,"Theme")}constructor(){this.background="#ffffff",this.primaryColor="#cccccc",this.mainBkg="#ffffff",this.noteBkgColor="#fff5ad",this.noteTextColor="#28253D",this.THEME_COLOR_LIMIT=12,this.radius=12,this.strokeWidth=2,this.primaryBorderColor=Jt("#28253D",this.darkMode),this.fontFamily='"Recursive Variable", arial, sans-serif',this.fontSize="14px",this.nodeBorder="#28253D",this.stateBorder="#28253D",this.useGradient=!1,this.gradientStart="#0042eb",this.gradientStop="#eb0042",this.dropShadow="url(#drop-shadow)",this.nodeShadow=!0,this.tertiaryColor="#ffffff",this.clusterBkg="#F9F9FB",this.clusterBorder="#BDBCCC",this.noteBorderColor="#FACC15",this.archEdgeColor="calculated",this.archEdgeArrowColor="calculated",this.archEdgeWidth="3",this.archGroupBorderColor=this.primaryBorderColor,this.archGroupBorderWidth="2px",this.actorBorder="#28253D",this.filterColor="#000000"}updateColors(){this.primaryTextColor=this.primaryTextColor||(this.darkMode?"#eee":"#28253D"),this.secondaryColor=this.secondaryColor||ne(this.primaryColor,{h:-120}),this.tertiaryColor=this.tertiaryColor||ne(this.primaryColor,{h:180,l:5}),this.primaryBorderColor=this.primaryBorderColor||Jt(this.primaryColor,this.darkMode),this.secondaryBorderColor=this.secondaryBorderColor||Jt(this.secondaryColor,this.darkMode),this.tertiaryBorderColor=this.tertiaryBorderColor||Jt(this.tertiaryColor,this.darkMode),this.noteBorderColor=this.noteBorderColor||Jt(this.noteBkgColor,this.darkMode),this.noteBkgColor=this.noteBkgColor||"#FEF9C3",this.noteTextColor=this.noteTextColor||"#28253D",this.secondaryTextColor=this.secondaryTextColor||Ge(this.secondaryColor),this.tertiaryTextColor=this.tertiaryTextColor||Ge(this.tertiaryColor),this.lineColor=this.lineColor||Ge(this.background),this.arrowheadColor=this.arrowheadColor||Ge(this.background),this.textColor=this.textColor||this.primaryTextColor,this.border2=this.border2||this.tertiaryBorderColor,this.nodeBkg=this.nodeBkg||this.primaryColor,this.mainBkg=this.mainBkg||this.primaryColor,this.nodeBorder=this.nodeBorder||this.primaryBorderColor,this.clusterBkg=this.clusterBkg||this.tertiaryColor,this.clusterBorder=this.clusterBorder||this.tertiaryBorderColor,this.defaultLinkColor=this.defaultLinkColor||this.lineColor,this.titleColor=this.titleColor||this.tertiaryTextColor,this.edgeLabelBackground=this.edgeLabelBackground||(this.darkMode?Xe(this.secondaryColor,30):this.secondaryColor),this.nodeTextColor=this.nodeTextColor||this.primaryTextColor,this.noteFontWeight=600,this.actorBorder=this.actorBorder||this.primaryBorderColor,this.actorBkg=this.actorBkg||this.mainBkg,this.actorTextColor=this.actorTextColor||this.primaryTextColor,this.actorLineColor=this.actorLineColor||this.actorBorder,this.labelBoxBkgColor=this.labelBoxBkgColor||this.actorBkg,this.signalColor=this.signalColor||this.textColor,this.signalTextColor=this.signalTextColor||this.textColor,this.labelBoxBorderColor=this.labelBoxBorderColor||this.actorBorder,this.labelTextColor=this.labelTextColor||this.actorTextColor,this.loopTextColor=this.loopTextColor||this.actorTextColor,this.activationBorderColor=this.activationBorderColor||Xe(this.secondaryColor,10),this.activationBkgColor=this.activationBkgColor||this.secondaryColor,this.sequenceNumberColor=this.sequenceNumberColor||Ge(this.lineColor);let t="#ECECFE",r="#E9E9F1",i=ne(t,{h:180,l:5});this.sectionBkgColor=this.sectionBkgColor||i,this.altSectionBkgColor=this.altSectionBkgColor||"white",this.sectionBkgColor=this.sectionBkgColor||r,this.sectionBkgColor2=this.sectionBkgColor2||t,this.excludeBkgColor=this.excludeBkgColor||"#eeeeee",this.taskBorderColor=this.taskBorderColor||this.primaryBorderColor,this.taskBkgColor=this.taskBkgColor||t,this.activeTaskBorderColor=this.activeTaskBorderColor||t,this.activeTaskBkgColor=this.activeTaskBkgColor||je(t,23),this.gridColor=this.gridColor||"lightgrey",this.doneTaskBkgColor=this.doneTaskBkgColor||"lightgrey",this.doneTaskBorderColor=this.doneTaskBorderColor||"grey",this.critBorderColor=this.critBorderColor||"#ff8888",this.critBkgColor=this.critBkgColor||"red",this.todayLineColor=this.todayLineColor||"red",this.taskTextColor=this.taskTextColor||this.textColor,this.vertLineColor=this.vertLineColor||this.primaryBorderColor,this.taskTextOutsideColor=this.taskTextOutsideColor||this.textColor,this.taskTextLightColor=this.taskTextLightColor||this.textColor,this.taskTextColor=this.taskTextColor||this.primaryTextColor,this.taskTextDarkColor=this.taskTextDarkColor||this.textColor,this.taskTextClickableColor=this.taskTextClickableColor||"#003163",this.archEdgeColor=this.lineColor,this.archEdgeArrowColor=this.lineColor,this.personBorder=this.personBorder||this.primaryBorderColor,this.personBkg=this.personBkg||this.mainBkg,this.transitionColor=this.transitionColor||this.lineColor,this.transitionLabelColor=this.transitionLabelColor||this.textColor,this.stateLabelColor=this.stateLabelColor||this.stateBkg||this.primaryTextColor,this.compositeTitleBackground="#F9F9FB",this.altBackground="#F9F9FB",this.stateEdgeLabelBackground="#FFFFFF",this.fontWeight=600,this.stateBkg=this.stateBkg||this.mainBkg,this.labelBackgroundColor=this.labelBackgroundColor||this.stateBkg,this.compositeBackground=this.compositeBackground||this.background||this.tertiaryColor,this.altBackground=this.altBackground||"#f0f0f0",this.compositeTitleBackground=this.compositeTitleBackground||this.mainBkg,this.compositeBorder=this.compositeBorder||this.nodeBorder,this.innerEndBackground=this.nodeBorder,this.errorBkgColor=this.errorBkgColor||this.tertiaryColor,this.errorTextColor=this.errorTextColor||this.tertiaryTextColor,this.transitionColor=this.transitionColor||this.lineColor,this.specialStateColor=this.lineColor;for(let a=0;a<this.THEME_COLOR_LIMIT;a++)this["cScale"+a]=this.mainBkg;if(this.darkMode)for(let a=0;a<this.THEME_COLOR_LIMIT;a++)this["cScale"+a]=Xe(this["cScale"+a],75);else for(let a=0;a<this.THEME_COLOR_LIMIT;a++)this["cScale"+a]=Xe(this["cScale"+a],25);for(let a=0;a<this.THEME_COLOR_LIMIT;a++)this["cScaleInv"+a]=this["cScaleInv"+a]||Ge(this["cScale"+a]);for(let a=0;a<this.THEME_COLOR_LIMIT;a++)this.darkMode?this["cScalePeer"+a]=this["cScalePeer"+a]||je(this["cScale"+a],10):this["cScalePeer"+a]=this["cScalePeer"+a]||Xe(this["cScale"+a],10);this.scaleLabelColor=this.scaleLabelColor||this.labelTextColor;for(let a=0;a<this.THEME_COLOR_LIMIT;a++)this["cScaleLabel"+a]=this["cScaleLabel"+a]||this.scaleLabelColor;let n=this.darkMode?-4:-1;for(let a=0;a<5;a++)this["surface"+a]=this["surface"+a]||ne(this.mainBkg,{h:180,s:-15,l:n*(5+a*3)}),this["surfacePeer"+a]=this["surfacePeer"+a]||ne(this.mainBkg,{h:180,s:-15,l:n*(8+a*3)});this.classText=this.classText||this.textColor,this.fillType0=this.fillType0||t,this.fillType1=this.fillType1||r,this.fillType2=this.fillType2||ne(t,{h:64}),this.fillType3=this.fillType3||ne(r,{h:64}),this.fillType4=this.fillType4||ne(t,{h:-64}),this.fillType5=this.fillType5||ne(r,{h:-64}),this.fillType6=this.fillType6||ne(t,{h:128}),this.fillType7=this.fillType7||ne(r,{h:128}),this.pie1=this.pie1||t,this.pie2=this.pie2||r,this.pie3=this.pie3||i,this.pie4=this.pie4||ne(t,{l:-10}),this.pie5=this.pie5||ne(r,{l:-10}),this.pie6=this.pie6||ne(i,{l:-10}),this.pie7=this.pie7||ne(t,{h:60,l:-10}),this.pie8=this.pie8||ne(t,{h:-60,l:-10}),this.pie9=this.pie9||ne(t,{h:120,l:0}),this.pie10=this.pie10||ne(t,{h:60,l:-20}),this.pie11=this.pie11||ne(t,{h:-60,l:-20}),this.pie12=this.pie12||ne(t,{h:120,l:-10}),this.pieTitleTextSize=this.pieTitleTextSize||"25px",this.pieTitleTextColor=this.pieTitleTextColor||this.taskTextDarkColor,this.pieSectionTextSize=this.pieSectionTextSize||"17px",this.pieSectionTextColor=this.pieSectionTextColor||this.textColor,this.pieLegendTextSize=this.pieLegendTextSize||"17px",this.pieLegendTextColor=this.pieLegendTextColor||this.taskTextDarkColor,this.pieStrokeColor=this.pieStrokeColor||"black",this.pieStrokeWidth=this.pieStrokeWidth||"2px",this.pieOuterStrokeWidth=this.pieOuterStrokeWidth||"2px",this.pieOuterStrokeColor=this.pieOuterStrokeColor||"black",this.pieOpacity=this.pieOpacity||"0.7",this.vennTitleTextColor=this.vennTitleTextColor??this.titleColor,this.vennSetTextColor=this.vennSetTextColor??this.textColor,this.quadrant1Fill=this.quadrant1Fill||t,this.quadrant2Fill=this.quadrant2Fill||ne(t,{r:5,g:5,b:5}),this.quadrant3Fill=this.quadrant3Fill||ne(t,{r:10,g:10,b:10}),this.quadrant4Fill=this.quadrant4Fill||ne(t,{r:15,g:15,b:15}),this.quadrant1TextFill=this.quadrant1TextFill||this.primaryTextColor,this.quadrant2TextFill=this.quadrant2TextFill||ne(this.primaryTextColor,{r:-5,g:-5,b:-5}),this.quadrant3TextFill=this.quadrant3TextFill||ne(this.primaryTextColor,{r:-10,g:-10,b:-10}),this.quadrant4TextFill=this.quadrant4TextFill||ne(this.primaryTextColor,{r:-15,g:-15,b:-15}),this.quadrantPointFill=this.quadrantPointFill||ri(this.quadrant1Fill)?je(this.quadrant1Fill):Xe(this.quadrant1Fill),this.quadrantPointTextFill=this.quadrantPointTextFill||this.primaryTextColor,this.quadrantXAxisTextFill=this.quadrantXAxisTextFill||this.primaryTextColor,this.quadrantYAxisTextFill=this.quadrantYAxisTextFill||this.primaryTextColor,this.quadrantInternalBorderStrokeFill=this.quadrantInternalBorderStrokeFill||this.primaryBorderColor,this.quadrantExternalBorderStrokeFill=this.quadrantExternalBorderStrokeFill||this.primaryBorderColor,this.quadrantTitleFill=this.quadrantTitleFill||this.primaryTextColor,this.xyChart={backgroundColor:this.xyChart?.backgroundColor||this.background,titleColor:this.xyChart?.titleColor||this.primaryTextColor,xAxisTitleColor:this.xyChart?.xAxisTitleColor||this.primaryTextColor,xAxisLabelColor:this.xyChart?.xAxisLabelColor||this.primaryTextColor,xAxisTickColor:this.xyChart?.xAxisTickColor||this.primaryTextColor,xAxisLineColor:this.xyChart?.xAxisLineColor||this.primaryTextColor,yAxisTitleColor:this.xyChart?.yAxisTitleColor||this.primaryTextColor,yAxisLabelColor:this.xyChart?.yAxisLabelColor||this.primaryTextColor,yAxisTickColor:this.xyChart?.yAxisTickColor||this.primaryTextColor,yAxisLineColor:this.xyChart?.yAxisLineColor||this.primaryTextColor,plotColorPalette:this.xyChart?.plotColorPalette||"#FFF4DD,#FFD8B1,#FFA07A,#ECEFF1,#D6DBDF,#C3E0A8,#FFB6A4,#FFD74D,#738FA7,#FFFFF0"},this.requirementBackground=this.requirementBackground||t,this.requirementBorderColor=this.requirementBorderColor||this.primaryBorderColor,this.requirementBorderSize=this.requirementBorderSize||"1",this.requirementTextColor=this.requirementTextColor||this.primaryTextColor,this.relationColor=this.relationColor||this.lineColor,this.relationLabelBackground=this.relationLabelBackground||(this.darkMode?Xe(this.secondaryColor,30):this.secondaryColor),this.relationLabelColor=this.relationLabelColor||this.actorTextColor,this.requirementEdgeLabelBackground="#FFFFFF",this.git0=this.git0||t,this.git1=this.git1||r,this.git2=this.git2||i,this.git3=this.git3||ne(t,{h:-30}),this.git4=this.git4||ne(t,{h:-60}),this.git5=this.git5||ne(t,{h:-90}),this.git6=this.git6||ne(t,{h:60}),this.git7=this.git7||ne(t,{h:120}),this.darkMode?(this.git0=je(this.git0,25),this.git1=je(this.git1,25),this.git2=je(this.git2,25),this.git3=je(this.git3,25),this.git4=je(this.git4,25),this.git5=je(this.git5,25),this.git6=je(this.git6,25),this.git7=je(this.git7,25)):(this.git0=Xe(this.git0,25),this.git1=Xe(this.git1,25),this.git2=Xe(this.git2,25),this.git3=Xe(this.git3,25),this.git4=Xe(this.git4,25),this.git5=Xe(this.git5,25),this.git6=Xe(this.git6,25),this.git7=Xe(this.git7,25)),this.gitInv0=this.gitInv0||Ge(this.git0),this.gitInv1=this.gitInv1||Ge(this.git1),this.gitInv2=this.gitInv2||Ge(this.git2),this.gitInv3=this.gitInv3||Ge(this.git3),this.gitInv4=this.gitInv4||Ge(this.git4),this.gitInv5=this.gitInv5||Ge(this.git5),this.gitInv6=this.gitInv6||Ge(this.git6),this.gitInv7=this.gitInv7||Ge(this.git7),this.branchLabelColor=this.branchLabelColor||(this.darkMode?"black":this.labelTextColor),this.gitBranchLabel0=this.gitBranchLabel0||this.branchLabelColor,this.gitBranchLabel1=this.gitBranchLabel1||this.branchLabelColor,this.gitBranchLabel2=this.gitBranchLabel2||this.branchLabelColor,this.gitBranchLabel3=this.gitBranchLabel3||this.branchLabelColor,this.gitBranchLabel4=this.gitBranchLabel4||this.branchLabelColor,this.gitBranchLabel5=this.gitBranchLabel5||this.branchLabelColor,this.gitBranchLabel6=this.gitBranchLabel6||this.branchLabelColor,this.gitBranchLabel7=this.gitBranchLabel7||this.branchLabelColor,this.tagLabelColor=this.tagLabelColor||this.primaryTextColor,this.tagLabelBackground=this.tagLabelBackground||this.primaryColor,this.tagLabelBorder=this.tagBorder||this.primaryBorderColor,this.tagLabelFontSize=this.tagLabelFontSize||"10px",this.commitLabelColor=this.commitLabelColor||this.secondaryTextColor,this.commitLabelBackground=this.commitLabelBackground||this.secondaryColor,this.commitLabelFontSize=this.commitLabelFontSize||"10px",this.commitLineColor=this.commitLineColor??"#BDBCCC",this.erEdgeLabelBackground="#FFFFFF",this.attributeBackgroundColorOdd=this.attributeBackgroundColorOdd||kn,this.attributeBackgroundColorEven=this.attributeBackgroundColorEven||wn}calculate(t){if(typeof t!="object"){this.updateColors();return}let r=Object.keys(t);r.forEach(i=>{this[i]=t[i]}),this.updateColors(),r.forEach(i=>{this[i]=t[i]})}},IH=o(e=>{let t=new k7;return t.calculate(e),t},"getThemeVariables")});var w7,PH,BH=z(()=>{"use strict";Cn();Eo();dl();w7=class{static{o(this,"Theme")}constructor(){this.background="#333",this.primaryColor="#1f2020",this.secondaryColor=je(this.primaryColor,16),this.tertiaryColor=ne(this.primaryColor,{h:-160}),this.primaryBorderColor=Ge(this.background),this.secondaryBorderColor=Jt(this.secondaryColor,this.darkMode),this.tertiaryBorderColor=Jt(this.tertiaryColor,this.darkMode),this.primaryTextColor=Ge(this.primaryColor),this.secondaryTextColor=Ge(this.secondaryColor),this.tertiaryTextColor=Ge(this.tertiaryColor),this.mainBkg="#111113",this.secondBkg="calculated",this.mainContrastColor="lightgrey",this.darkTextColor=je(Ge("#323D47"),10),this.border1="#ccc",this.border2=mn(255,255,255,.25),this.arrowheadColor=Ge(this.background),this.fontFamily='"Recursive Variable", arial, sans-serif',this.fontSize="14px",this.labelBackground="#111113",this.textColor="#ccc",this.THEME_COLOR_LIMIT=12,this.radius=12,this.strokeWidth=2,this.noteBkgColor=this.noteBkgColor??"#FEF9C3",this.noteTextColor=this.noteTextColor??"#28253D",this.THEME_COLOR_LIMIT=12,this.fontFamily='"Recursive Variable", arial, sans-serif',this.fontSize="14px",this.nodeBorder="#FFFFFF",this.stateBorder="#FFFFFF",this.useGradient=!1,this.gradientStart="#0042eb",this.gradientStop="#eb0042",this.dropShadow="url(#drop-shadow)",this.nodeShadow=!0,this.archEdgeColor="calculated",this.archEdgeArrowColor="calculated",this.archEdgeWidth="3",this.archGroupBorderColor=this.primaryBorderColor,this.archGroupBorderWidth="2px",this.clusterBkg="#1E1A2E",this.clusterBorder="#BDBCCC",this.noteBorderColor="#FACC15",this.noteFontWeight=600,this.filterColor="#FFFFFF"}updateColors(){if(this.primaryTextColor=this.primaryTextColor||(this.darkMode?"#eee":"#FFFFFF"),this.secondaryColor=this.secondaryColor||ne(this.primaryColor,{h:-120}),this.tertiaryColor=this.tertiaryColor||ne(this.primaryColor,{h:180,l:5}),this.primaryBorderColor=this.primaryBorderColor||Jt(this.primaryColor,this.darkMode),this.secondaryBorderColor=this.secondaryBorderColor||Jt(this.secondaryColor,this.darkMode),this.tertiaryBorderColor=this.tertiaryBorderColor||Jt(this.tertiaryColor,this.darkMode),this.noteBorderColor=this.noteBorderColor||Jt(this.noteBkgColor,this.darkMode),this.noteBkgColor=this.noteBkgColor||"#fff5ad",this.noteTextColor=this.noteTextColor||"#FFFFFF",this.secondaryTextColor=this.secondaryTextColor||Ge(this.secondaryColor),this.tertiaryTextColor=this.tertiaryTextColor||Ge(this.tertiaryColor),this.lineColor=this.lineColor||Ge(this.background),this.arrowheadColor=this.arrowheadColor||Ge(this.background),this.textColor=this.textColor||this.primaryTextColor,this.border2=this.border2||this.tertiaryBorderColor,this.nodeBkg=this.nodeBkg||this.primaryColor,this.mainBkg=this.mainBkg||this.primaryColor,this.nodeBorder=this.nodeBorder||this.border1,this.clusterBkg=this.clusterBkg||this.tertiaryColor,this.clusterBorder=this.clusterBorder||this.tertiaryBorderColor,this.defaultLinkColor=this.defaultLinkColor||this.lineColor,this.titleColor=this.titleColor||this.tertiaryTextColor,this.edgeLabelBackground=this.edgeLabelBackground||(this.darkMode?Xe(this.secondaryColor,30):this.secondaryColor),this.nodeTextColor=this.nodeTextColor||this.primaryTextColor,this.actorBorder="#FFFFFF",this.signalColor="#FFFFFF",this.labelBoxBorderColor="#BDBCCC",this.actorBorder=this.actorBorder||this.primaryBorderColor,this.actorBkg=this.actorBkg||this.mainBkg,this.actorTextColor=this.actorTextColor||this.primaryTextColor,this.actorLineColor=this.actorLineColor||this.actorBorder,this.labelBoxBkgColor=this.labelBoxBkgColor||this.actorBkg,this.signalColor=this.signalColor||this.textColor,this.signalTextColor=this.signalTextColor||this.textColor,this.labelBoxBorderColor=this.labelBoxBorderColor||this.actorBorder,this.labelTextColor=this.labelTextColor||this.actorTextColor,this.loopTextColor=this.loopTextColor||this.actorTextColor,this.activationBorderColor=this.activationBorderColor||Xe(this.secondaryColor,10),this.activationBkgColor=this.activationBkgColor||this.secondaryColor,this.sequenceNumberColor=this.sequenceNumberColor||Ge(this.lineColor),this.sectionBkgColor=this.sectionBkgColor||this.tertiaryColor,this.altSectionBkgColor=this.altSectionBkgColor||"white",this.sectionBkgColor=this.sectionBkgColor||this.secondaryColor,this.sectionBkgColor2=this.sectionBkgColor2||this.primaryColor,this.excludeBkgColor=this.excludeBkgColor||"#eeeeee",this.taskBorderColor=this.taskBorderColor||this.primaryBorderColor,this.taskBkgColor=this.taskBkgColor||this.primaryColor,this.activeTaskBorderColor=this.activeTaskBorderColor||this.primaryColor,this.activeTaskBkgColor=this.activeTaskBkgColor||je(this.primaryColor,23),this.gridColor=this.gridColor||"lightgrey",this.doneTaskBkgColor=this.doneTaskBkgColor||"lightgrey",this.doneTaskBorderColor=this.doneTaskBorderColor||"grey",this.critBorderColor=this.critBorderColor||"#ff8888",this.critBkgColor=this.critBkgColor||"red",this.todayLineColor=this.todayLineColor||"red",this.taskTextColor=this.taskTextColor||this.textColor,this.taskTextOutsideColor=this.taskTextOutsideColor||this.textColor,this.taskTextLightColor=this.taskTextLightColor||this.textColor,this.taskTextColor=this.taskTextColor||this.primaryTextColor,this.taskTextDarkColor=this.taskTextDarkColor||this.textColor,this.taskTextClickableColor=this.taskTextClickableColor||"#003163",this.archEdgeColor=this.lineColor,this.archEdgeArrowColor=this.lineColor,this.personBorder=this.personBorder||this.primaryBorderColor,this.personBkg=this.personBkg||this.mainBkg,this.transitionColor=this.transitionColor||this.lineColor,this.transitionLabelColor=this.transitionLabelColor||this.textColor,this.stateLabelColor=this.stateLabelColor||this.stateBkg||this.primaryTextColor,this.vertLineColor=this.vertLineColor||this.primaryBorderColor,this.compositeBackground="#16141F",this.altBackground="#16141F",this.compositeTitleBackground="#16141F",this.stateEdgeLabelBackground="#16141F",this.fontWeight=600,this.stateBkg=this.stateBkg||this.mainBkg,this.labelBackgroundColor=this.labelBackgroundColor||this.stateBkg,this.compositeBackground=this.compositeBackground||this.background||this.tertiaryColor,this.altBackground=this.altBackground||"#f0f0f0",this.compositeTitleBackground=this.compositeTitleBackground||this.mainBkg,this.compositeBorder=this.compositeBorder||this.nodeBorder,this.innerEndBackground=this.nodeBorder,this.errorBkgColor=this.errorBkgColor||this.tertiaryColor,this.errorTextColor=this.errorTextColor||this.tertiaryTextColor,this.transitionColor=this.transitionColor||this.lineColor,this.specialStateColor=this.lineColor,this.cScale0=this.cScale0||this.primaryColor,this.cScale1=this.cScale1||this.secondaryColor,this.cScale2=this.cScale2||this.tertiaryColor,this.cScale3=this.cScale3||ne(this.primaryColor,{h:30}),this.cScale4=this.cScale4||ne(this.primaryColor,{h:60}),this.cScale5=this.cScale5||ne(this.primaryColor,{h:90}),this.cScale6=this.cScale6||ne(this.primaryColor,{h:120}),this.cScale7=this.cScale7||ne(this.primaryColor,{h:150}),this.cScale8=this.cScale8||ne(this.primaryColor,{h:210,l:150}),this.cScale9=this.cScale9||ne(this.primaryColor,{h:270}),this.cScale10=this.cScale10||ne(this.primaryColor,{h:300}),this.cScale11=this.cScale11||ne(this.primaryColor,{h:330}),this.darkMode)for(let r=0;r<this.THEME_COLOR_LIMIT;r++)this["cScale"+r]=Xe(this["cScale"+r],75);else for(let r=0;r<this.THEME_COLOR_LIMIT;r++)this["cScale"+r]=Xe(this["cScale"+r],25);for(let r=0;r<this.THEME_COLOR_LIMIT;r++)this["cScaleInv"+r]=this["cScaleInv"+r]||Ge(this["cScale"+r]);for(let r=0;r<this.THEME_COLOR_LIMIT;r++)this.darkMode?this["cScalePeer"+r]=this["cScalePeer"+r]||je(this["cScale"+r],10):this["cScalePeer"+r]=this["cScalePeer"+r]||Xe(this["cScale"+r],10);this.scaleLabelColor=this.scaleLabelColor||this.labelTextColor;for(let r=0;r<this.THEME_COLOR_LIMIT;r++)this["cScaleLabel"+r]=this["cScaleLabel"+r]||this.scaleLabelColor;let t=this.darkMode?-4:-1;for(let r=0;r<5;r++)this["surface"+r]=this["surface"+r]||ne(this.mainBkg,{h:180,s:-15,l:t*(5+r*3)}),this["surfacePeer"+r]=this["surfacePeer"+r]||ne(this.mainBkg,{h:180,s:-15,l:t*(8+r*3)});this.classText=this.classText||this.textColor,this.fillType0=this.fillType0||this.primaryColor,this.fillType1=this.fillType1||this.secondaryColor,this.fillType2=this.fillType2||ne(this.primaryColor,{h:64}),this.fillType3=this.fillType3||ne(this.secondaryColor,{h:64}),this.fillType4=this.fillType4||ne(this.primaryColor,{h:-64}),this.fillType5=this.fillType5||ne(this.secondaryColor,{h:-64}),this.fillType6=this.fillType6||ne(this.primaryColor,{h:128}),this.fillType7=this.fillType7||ne(this.secondaryColor,{h:128}),this.pie1=this.pie1||this.primaryColor,this.pie2=this.pie2||this.secondaryColor,this.pie3=this.pie3||this.tertiaryColor,this.pie4=this.pie4||ne(this.primaryColor,{l:-10}),this.pie5=this.pie5||ne(this.secondaryColor,{l:-10}),this.pie6=this.pie6||ne(this.tertiaryColor,{l:-10}),this.pie7=this.pie7||ne(this.primaryColor,{h:60,l:-10}),this.pie8=this.pie8||ne(this.primaryColor,{h:-60,l:-10}),this.pie9=this.pie9||ne(this.primaryColor,{h:120,l:0}),this.pie10=this.pie10||ne(this.primaryColor,{h:60,l:-20}),this.pie11=this.pie11||ne(this.primaryColor,{h:-60,l:-20}),this.pie12=this.pie12||ne(this.primaryColor,{h:120,l:-10}),this.pieTitleTextSize=this.pieTitleTextSize||"25px",this.pieTitleTextColor=this.pieTitleTextColor||this.taskTextDarkColor,this.pieSectionTextSize=this.pieSectionTextSize||"17px",this.pieSectionTextColor=this.pieSectionTextColor||this.textColor,this.pieLegendTextSize=this.pieLegendTextSize||"17px",this.pieLegendTextColor=this.pieLegendTextColor||this.taskTextDarkColor,this.pieStrokeColor=this.pieStrokeColor||"black",this.pieStrokeWidth=this.pieStrokeWidth||"2px",this.pieOuterStrokeWidth=this.pieOuterStrokeWidth||"2px",this.pieOuterStrokeColor=this.pieOuterStrokeColor||"black",this.pieOpacity=this.pieOpacity||"0.7",this.vennTitleTextColor=this.vennTitleTextColor??this.titleColor,this.vennSetTextColor=this.vennSetTextColor??this.textColor,this.quadrant1Fill=this.quadrant1Fill||this.primaryColor,this.quadrant2Fill=this.quadrant2Fill||ne(this.primaryColor,{r:5,g:5,b:5}),this.quadrant3Fill=this.quadrant3Fill||ne(this.primaryColor,{r:10,g:10,b:10}),this.quadrant4Fill=this.quadrant4Fill||ne(this.primaryColor,{r:15,g:15,b:15}),this.quadrant1TextFill=this.quadrant1TextFill||this.primaryTextColor,this.quadrant2TextFill=this.quadrant2TextFill||ne(this.primaryTextColor,{r:-5,g:-5,b:-5}),this.quadrant3TextFill=this.quadrant3TextFill||ne(this.primaryTextColor,{r:-10,g:-10,b:-10}),this.quadrant4TextFill=this.quadrant4TextFill||ne(this.primaryTextColor,{r:-15,g:-15,b:-15}),this.quadrantPointFill=this.quadrantPointFill||ri(this.quadrant1Fill)?je(this.quadrant1Fill):Xe(this.quadrant1Fill),this.quadrantPointTextFill=this.quadrantPointTextFill||this.primaryTextColor,this.quadrantXAxisTextFill=this.quadrantXAxisTextFill||this.primaryTextColor,this.quadrantYAxisTextFill=this.quadrantYAxisTextFill||this.primaryTextColor,this.quadrantInternalBorderStrokeFill=this.quadrantInternalBorderStrokeFill||this.primaryBorderColor,this.quadrantExternalBorderStrokeFill=this.quadrantExternalBorderStrokeFill||this.primaryBorderColor,this.quadrantTitleFill=this.quadrantTitleFill||this.primaryTextColor,this.xyChart={backgroundColor:this.xyChart?.backgroundColor||this.background,titleColor:this.xyChart?.titleColor||this.primaryTextColor,xAxisTitleColor:this.xyChart?.xAxisTitleColor||this.primaryTextColor,xAxisLabelColor:this.xyChart?.xAxisLabelColor||this.primaryTextColor,xAxisTickColor:this.xyChart?.xAxisTickColor||this.primaryTextColor,xAxisLineColor:this.xyChart?.xAxisLineColor||this.primaryTextColor,yAxisTitleColor:this.xyChart?.yAxisTitleColor||this.primaryTextColor,yAxisLabelColor:this.xyChart?.yAxisLabelColor||this.primaryTextColor,yAxisTickColor:this.xyChart?.yAxisTickColor||this.primaryTextColor,yAxisLineColor:this.xyChart?.yAxisLineColor||this.primaryTextColor,plotColorPalette:this.xyChart?.plotColorPalette||"#FFF4DD,#FFD8B1,#FFA07A,#ECEFF1,#D6DBDF,#C3E0A8,#FFB6A4,#FFD74D,#738FA7,#FFFFF0"},this.requirementBackground=this.requirementBackground||this.primaryColor,this.requirementBorderColor=this.requirementBorderColor||this.primaryBorderColor,this.requirementBorderSize=this.requirementBorderSize||"1",this.requirementTextColor=this.requirementTextColor||this.primaryTextColor,this.relationColor=this.relationColor||this.lineColor,this.relationLabelBackground=this.relationLabelBackground||(this.darkMode?Xe(this.secondaryColor,30):this.secondaryColor),this.relationLabelColor=this.relationLabelColor||this.actorTextColor,this.requirementEdgeLabelBackground="#16141F",this.git0=this.git0||this.primaryColor,this.git1=this.git1||this.secondaryColor,this.git2=this.git2||this.tertiaryColor,this.git3=this.git3||ne(this.primaryColor,{h:-30}),this.git4=this.git4||ne(this.primaryColor,{h:-60}),this.git5=this.git5||ne(this.primaryColor,{h:-90}),this.git6=this.git6||ne(this.primaryColor,{h:60}),this.git7=this.git7||ne(this.primaryColor,{h:120}),this.darkMode?(this.git0=je(this.git0,25),this.git1=je(this.git1,25),this.git2=je(this.git2,25),this.git3=je(this.git3,25),this.git4=je(this.git4,25),this.git5=je(this.git5,25),this.git6=je(this.git6,25),this.git7=je(this.git7,25)):(this.git0=Xe(this.git0,25),this.git1=Xe(this.git1,25),this.git2=Xe(this.git2,25),this.git3=Xe(this.git3,25),this.git4=Xe(this.git4,25),this.git5=Xe(this.git5,25),this.git6=Xe(this.git6,25),this.git7=Xe(this.git7,25)),this.gitInv0=this.gitInv0||Ge(this.git0),this.gitInv1=this.gitInv1||Ge(this.git1),this.gitInv2=this.gitInv2||Ge(this.git2),this.gitInv3=this.gitInv3||Ge(this.git3),this.gitInv4=this.gitInv4||Ge(this.git4),this.gitInv5=this.gitInv5||Ge(this.git5),this.gitInv6=this.gitInv6||Ge(this.git6),this.gitInv7=this.gitInv7||Ge(this.git7),this.branchLabelColor=this.branchLabelColor||(this.darkMode?"black":this.labelTextColor),this.gitBranchLabel0=this.gitBranchLabel0||this.branchLabelColor,this.gitBranchLabel1=this.gitBranchLabel1||this.branchLabelColor,this.gitBranchLabel2=this.gitBranchLabel2||this.branchLabelColor,this.gitBranchLabel3=this.gitBranchLabel3||this.branchLabelColor,this.gitBranchLabel4=this.gitBranchLabel4||this.branchLabelColor,this.gitBranchLabel5=this.gitBranchLabel5||this.branchLabelColor,this.gitBranchLabel6=this.gitBranchLabel6||this.branchLabelColor,this.gitBranchLabel7=this.gitBranchLabel7||this.branchLabelColor,this.tagLabelColor=this.tagLabelColor||this.primaryTextColor,this.tagLabelBackground=this.tagLabelBackground||this.primaryColor,this.tagLabelBorder=this.tagBorder||this.primaryBorderColor,this.tagLabelFontSize=this.tagLabelFontSize||"10px",this.commitLabelColor=this.commitLabelColor||this.secondaryTextColor,this.commitLabelBackground=this.commitLabelBackground||this.secondaryColor,this.commitLabelFontSize=this.commitLabelFontSize||"10px",this.commitLineColor=this.commitLineColor??"#BDBCCC",this.erEdgeLabelBackground="#16141F",this.attributeBackgroundColorOdd=this.attributeBackgroundColorOdd||kn,this.attributeBackgroundColorEven=this.attributeBackgroundColorEven||wn}calculate(t){if(typeof t!="object"){this.updateColors();return}let r=Object.keys(t);r.forEach(i=>{this[i]=t[i]}),this.updateColors(),r.forEach(i=>{this[i]=t[i]})}},PH=o(e=>{let t=new w7;return t.calculate(e),t},"getThemeVariables")});var S7,FH,$H=z(()=>{"use strict";Cn();Eo();dl();S7=class{static{o(this,"Theme")}constructor(){this.background="#ffffff",this.primaryColor="#cccccc",this.mainBkg="#ffffff",this.noteBkgColor="#fff5ad",this.noteTextColor="#28253D",this.THEME_COLOR_LIMIT=12,this.radius=12,this.strokeWidth=2,this.primaryBorderColor=Jt(this.primaryColor,this.darkMode),this.fontFamily='"Recursive Variable", arial, sans-serif',this.fontSize="14px",this.nodeBorder="#28253D",this.stateBorder="#28253D",this.useGradient=!1,this.gradientStart="#0042eb",this.gradientStop="#eb0042",this.dropShadow="url(#drop-shadow)",this.nodeShadow=!0,this.tertiaryColor="#ffffff",this.archEdgeColor="calculated",this.archEdgeArrowColor="calculated",this.archEdgeWidth="3",this.archGroupBorderColor=this.primaryBorderColor,this.archGroupBorderWidth="2px",this.actorBorder="#28253D",this.noteBorderColor="#FACC15",this.noteFontWeight=600,this.borderColorArray=["#E879F9","#2DD4BF","#FB923C","#22D3EE","#4ADE80","#A78BFA","#F87171","#FACC15","#818CF8","#A3E635 ","#38BDF8","#FB7185"],this.bkgColorArray=["#FDF4FF","#F0FDFA","#FFF7ED","#ECFEFF","#F0FDF4","#F5F3FF","#FEF2F2","#FEFCE8","#EEF2FF","#F7FEE7","#F0F9FF","#FFF1F2"],this.filterColor="#000000"}updateColors(){this.primaryTextColor=this.primaryTextColor||(this.darkMode?"#eee":"#28253D"),this.secondaryColor=this.secondaryColor||ne(this.primaryColor,{h:-120}),this.tertiaryColor=this.tertiaryColor||ne(this.primaryColor,{h:180,l:5}),this.primaryBorderColor=this.primaryBorderColor||Jt(this.primaryColor,this.darkMode),this.secondaryBorderColor=this.secondaryBorderColor||Jt(this.secondaryColor,this.darkMode),this.tertiaryBorderColor=this.tertiaryBorderColor||Jt(this.tertiaryColor,this.darkMode),this.noteBorderColor=this.noteBorderColor||Jt(this.noteBkgColor,this.darkMode),this.noteBkgColor=this.noteBkgColor||"#fff5ad",this.noteTextColor=this.noteTextColor||"#28253D",this.secondaryTextColor=this.secondaryTextColor||Ge(this.secondaryColor),this.tertiaryTextColor=this.tertiaryTextColor||Ge(this.tertiaryColor),this.lineColor=this.lineColor||Ge(this.background),this.arrowheadColor=this.arrowheadColor||Ge(this.background),this.textColor=this.textColor||this.primaryTextColor,this.border2=this.border2||this.tertiaryBorderColor,this.nodeBkg=this.nodeBkg||this.primaryColor,this.mainBkg=this.mainBkg||this.primaryColor,this.nodeBorder=this.nodeBorder||this.primaryBorderColor,this.clusterBkg=this.clusterBkg||this.tertiaryColor,this.clusterBorder=this.clusterBorder||this.tertiaryBorderColor,this.defaultLinkColor=this.defaultLinkColor||this.lineColor,this.titleColor=this.titleColor||this.tertiaryTextColor,this.edgeLabelBackground=this.edgeLabelBackground||(this.darkMode?Xe(this.secondaryColor,30):this.secondaryColor),this.nodeTextColor=this.nodeTextColor||this.primaryTextColor,this.actorBorder=this.actorBorder||this.primaryBorderColor,this.actorBkg=this.actorBkg||this.mainBkg,this.actorTextColor=this.actorTextColor||this.primaryTextColor,this.actorLineColor=this.actorLineColor||this.actorBorder,this.labelBoxBkgColor=this.labelBoxBkgColor||this.actorBkg,this.signalColor=this.signalColor||this.textColor,this.signalTextColor=this.signalTextColor||this.textColor,this.labelBoxBorderColor=this.labelBoxBorderColor||this.actorBorder,this.labelTextColor=this.labelTextColor||this.actorTextColor,this.loopTextColor=this.loopTextColor||this.actorTextColor,this.activationBorderColor=this.activationBorderColor||Xe(this.secondaryColor,10),this.activationBkgColor=this.activationBkgColor||this.secondaryColor,this.sequenceNumberColor=this.sequenceNumberColor||Ge(this.lineColor);let t="#ECECFE",r="#E9E9F1",i=ne(t,{h:180,l:5});this.sectionBkgColor=this.sectionBkgColor||i,this.altSectionBkgColor=this.altSectionBkgColor||"white",this.sectionBkgColor=this.sectionBkgColor||r,this.sectionBkgColor2=this.sectionBkgColor2||t,this.excludeBkgColor=this.excludeBkgColor||"#eeeeee",this.taskBorderColor=this.taskBorderColor||this.primaryBorderColor,this.taskBkgColor=this.taskBkgColor||t,this.activeTaskBorderColor=this.activeTaskBorderColor||t,this.activeTaskBkgColor=this.activeTaskBkgColor||je(t,23),this.gridColor=this.gridColor||"lightgrey",this.doneTaskBkgColor=this.doneTaskBkgColor||"lightgrey",this.doneTaskBorderColor=this.doneTaskBorderColor||"grey",this.critBorderColor=this.critBorderColor||"#ff8888",this.critBkgColor=this.critBkgColor||"red",this.todayLineColor=this.todayLineColor||"red",this.taskTextColor=this.taskTextColor||this.textColor,this.vertLineColor=this.vertLineColor||this.primaryBorderColor,this.taskTextOutsideColor=this.taskTextOutsideColor||this.textColor,this.taskTextLightColor=this.taskTextLightColor||this.textColor,this.taskTextColor=this.taskTextColor||this.primaryTextColor,this.taskTextDarkColor=this.taskTextDarkColor||this.textColor,this.taskTextClickableColor=this.taskTextClickableColor||"#003163",this.archEdgeColor=this.lineColor,this.archEdgeArrowColor=this.lineColor,this.personBorder=this.personBorder||this.primaryBorderColor,this.personBkg=this.personBkg||this.mainBkg,this.transitionColor=this.transitionColor||this.lineColor,this.transitionLabelColor=this.transitionLabelColor||this.textColor,this.stateLabelColor=this.stateLabelColor||this.stateBkg||this.primaryTextColor,this.stateBkg=this.stateBkg||this.mainBkg,this.labelBackgroundColor=this.labelBackgroundColor||this.stateBkg,this.compositeBackground=this.compositeBackground||this.background||this.tertiaryColor,this.altBackground=this.altBackground||"#f0f0f0",this.compositeTitleBackground=this.compositeTitleBackground||this.mainBkg,this.compositeBorder=this.compositeBorder||this.nodeBorder,this.innerEndBackground=this.nodeBorder,this.errorBkgColor=this.errorBkgColor||this.tertiaryColor,this.errorTextColor=this.errorTextColor||this.tertiaryTextColor,this.transitionColor=this.transitionColor||this.lineColor,this.specialStateColor=this.lineColor,this.cScale0=this.cScale0||"#f4a8ff",this.cScale1=this.cScale1||"#46ecd5",this.cScale2=this.cScale2||"#ffb86a",this.cScale3=this.cScale3||"#dab2ff",this.cScale4=this.cScale4||"#7bf1a8",this.cScale5=this.cScale5||"#c4b4ff",this.cScale6=this.cScale6||"#ffa2a2",this.cScale7=this.cScale7||"#ffdf20",this.cScale8=this.cScale8||"#a3b3ff",this.cScale9=this.cScale9||"#bbf451",this.cScale10=this.cScale10||"#74d4ff",this.cScale11=this.cScale11||"#ffa1ad";for(let a=0;a<this.THEME_COLOR_LIMIT;a++)this["cScaleInv"+a]=this["cScaleInv"+a]||Ge(this["cScale"+a]);for(let a=0;a<this.THEME_COLOR_LIMIT;a++)this.darkMode?this["cScalePeer"+a]=this["cScalePeer"+a]||je(this["cScale"+a],10):this["cScalePeer"+a]=this["cScalePeer"+a]||Xe(this["cScale"+a],10);this.scaleLabelColor=this.scaleLabelColor||this.labelTextColor;for(let a=0;a<this.THEME_COLOR_LIMIT;a++)this["cScaleLabel"+a]=this["cScaleLabel"+a]||this.scaleLabelColor;let n=this.darkMode?-4:-1;for(let a=0;a<5;a++)this["surface"+a]=this["surface"+a]||ne(this.mainBkg,{h:180,s:-15,l:n*(5+a*3)}),this["surfacePeer"+a]=this["surfacePeer"+a]||ne(this.mainBkg,{h:180,s:-15,l:n*(8+a*3)});this.classText=this.classText||this.textColor,this.fillType0=this.fillType0||t,this.fillType1=this.fillType1||r,this.fillType2=this.fillType2||ne(t,{h:64}),this.fillType3=this.fillType3||ne(r,{h:64}),this.fillType4=this.fillType4||ne(t,{h:-64}),this.fillType5=this.fillType5||ne(r,{h:-64}),this.fillType6=this.fillType6||ne(t,{h:128}),this.fillType7=this.fillType7||ne(r,{h:128}),this.pie1=this.pie1||t,this.pie2=this.pie2||r,this.pie3=this.pie3||i,this.pie4=this.pie4||ne(t,{l:-10}),this.pie5=this.pie5||ne(r,{l:-10}),this.pie6=this.pie6||ne(i,{l:-10}),this.pie7=this.pie7||ne(t,{h:60,l:-10}),this.pie8=this.pie8||ne(t,{h:-60,l:-10}),this.pie9=this.pie9||ne(t,{h:120,l:0}),this.pie10=this.pie10||ne(t,{h:60,l:-20}),this.pie11=this.pie11||ne(t,{h:-60,l:-20}),this.pie12=this.pie12||ne(t,{h:120,l:-10}),this.pieTitleTextSize=this.pieTitleTextSize||"25px",this.pieTitleTextColor=this.pieTitleTextColor||this.taskTextDarkColor,this.pieSectionTextSize=this.pieSectionTextSize||"17px",this.pieSectionTextColor=this.pieSectionTextColor||this.textColor,this.pieLegendTextSize=this.pieLegendTextSize||"17px",this.pieLegendTextColor=this.pieLegendTextColor||this.taskTextDarkColor,this.pieStrokeColor=this.pieStrokeColor||"black",this.pieStrokeWidth=this.pieStrokeWidth||"2px",this.pieOuterStrokeWidth=this.pieOuterStrokeWidth||"2px",this.pieOuterStrokeColor=this.pieOuterStrokeColor||"black",this.pieOpacity=this.pieOpacity||"0.7",this.vennTitleTextColor=this.vennTitleTextColor??this.titleColor,this.vennSetTextColor=this.vennSetTextColor??this.textColor,this.quadrant1Fill=this.quadrant1Fill||t,this.quadrant2Fill=this.quadrant2Fill||ne(t,{r:5,g:5,b:5}),this.quadrant3Fill=this.quadrant3Fill||ne(t,{r:10,g:10,b:10}),this.quadrant4Fill=this.quadrant4Fill||ne(t,{r:15,g:15,b:15}),this.quadrant1TextFill=this.quadrant1TextFill||this.primaryTextColor,this.quadrant2TextFill=this.quadrant2TextFill||ne(this.primaryTextColor,{r:-5,g:-5,b:-5}),this.quadrant3TextFill=this.quadrant3TextFill||ne(this.primaryTextColor,{r:-10,g:-10,b:-10}),this.quadrant4TextFill=this.quadrant4TextFill||ne(this.primaryTextColor,{r:-15,g:-15,b:-15}),this.quadrantPointFill=this.quadrantPointFill||ri(this.quadrant1Fill)?je(this.quadrant1Fill):Xe(this.quadrant1Fill),this.quadrantPointTextFill=this.quadrantPointTextFill||this.primaryTextColor,this.quadrantXAxisTextFill=this.quadrantXAxisTextFill||this.primaryTextColor,this.quadrantYAxisTextFill=this.quadrantYAxisTextFill||this.primaryTextColor,this.quadrantInternalBorderStrokeFill=this.quadrantInternalBorderStrokeFill||this.primaryBorderColor,this.quadrantExternalBorderStrokeFill=this.quadrantExternalBorderStrokeFill||this.primaryBorderColor,this.quadrantTitleFill=this.quadrantTitleFill||this.primaryTextColor,this.xyChart={backgroundColor:this.xyChart?.backgroundColor||this.background,titleColor:this.xyChart?.titleColor||this.primaryTextColor,xAxisTitleColor:this.xyChart?.xAxisTitleColor||this.primaryTextColor,xAxisLabelColor:this.xyChart?.xAxisLabelColor||this.primaryTextColor,xAxisTickColor:this.xyChart?.xAxisTickColor||this.primaryTextColor,xAxisLineColor:this.xyChart?.xAxisLineColor||this.primaryTextColor,yAxisTitleColor:this.xyChart?.yAxisTitleColor||this.primaryTextColor,yAxisLabelColor:this.xyChart?.yAxisLabelColor||this.primaryTextColor,yAxisTickColor:this.xyChart?.yAxisTickColor||this.primaryTextColor,yAxisLineColor:this.xyChart?.yAxisLineColor||this.primaryTextColor,plotColorPalette:this.xyChart?.plotColorPalette||"#FFF4DD,#FFD8B1,#FFA07A,#ECEFF1,#D6DBDF,#C3E0A8,#FFB6A4,#FFD74D,#738FA7,#FFFFF0"},this.requirementBackground=this.requirementBackground||t,this.requirementBorderColor=this.requirementBorderColor||this.primaryBorderColor,this.requirementBorderSize=this.requirementBorderSize||"1",this.requirementTextColor=this.requirementTextColor||this.primaryTextColor,this.relationColor=this.relationColor||this.lineColor,this.relationLabelBackground=this.relationLabelBackground||(this.darkMode?Xe(this.secondaryColor,30):this.secondaryColor),this.relationLabelColor=this.relationLabelColor||this.actorTextColor,this.git0=this.git0||t,this.git1=this.git1||r,this.git2=this.git2||i,this.git3=this.git3||ne(t,{h:-30}),this.git4=this.git4||ne(t,{h:-60}),this.git5=this.git5||ne(t,{h:-90}),this.git6=this.git6||ne(t,{h:60}),this.git7=this.git7||ne(t,{h:120}),this.darkMode?(this.git0=je(this.git0,25),this.git1=je(this.git1,25),this.git2=je(this.git2,25),this.git3=je(this.git3,25),this.git4=je(this.git4,25),this.git5=je(this.git5,25),this.git6=je(this.git6,25),this.git7=je(this.git7,25)):(this.git0=Xe(this.git0,25),this.git1=Xe(this.git1,25),this.git2=Xe(this.git2,25),this.git3=Xe(this.git3,25),this.git4=Xe(this.git4,25),this.git5=Xe(this.git5,25),this.git6=Xe(this.git6,25),this.git7=Xe(this.git7,25)),this.gitInv0=this.gitInv0||Ge(this.git0),this.gitInv1=this.gitInv1||Ge(this.git1),this.gitInv2=this.gitInv2||Ge(this.git2),this.gitInv3=this.gitInv3||Ge(this.git3),this.gitInv4=this.gitInv4||Ge(this.git4),this.gitInv5=this.gitInv5||Ge(this.git5),this.gitInv6=this.gitInv6||Ge(this.git6),this.gitInv7=this.gitInv7||Ge(this.git7),this.branchLabelColor=this.branchLabelColor||(this.darkMode?"black":this.labelTextColor),this.gitBranchLabel0=this.gitBranchLabel0||this.branchLabelColor,this.gitBranchLabel1=this.gitBranchLabel1||this.branchLabelColor,this.gitBranchLabel2=this.gitBranchLabel2||this.branchLabelColor,this.gitBranchLabel3=this.gitBranchLabel3||this.branchLabelColor,this.gitBranchLabel4=this.gitBranchLabel4||this.branchLabelColor,this.gitBranchLabel5=this.gitBranchLabel5||this.branchLabelColor,this.gitBranchLabel6=this.gitBranchLabel6||this.branchLabelColor,this.gitBranchLabel7=this.gitBranchLabel7||this.branchLabelColor,this.tagLabelColor=this.tagLabelColor||this.primaryTextColor,this.tagLabelBackground=this.tagLabelBackground||this.primaryColor,this.tagLabelBorder=this.tagBorder||this.primaryBorderColor,this.tagLabelFontSize=this.tagLabelFontSize||"10px",this.commitLabelColor=this.commitLabelColor||this.secondaryTextColor,this.commitLabelBackground=this.commitLabelBackground||this.secondaryColor,this.commitLineColor=this.commitLineColor??"#BDBCCC",this.commitLabelFontSize=this.commitLabelFontSize||"10px",this.fontWeight=600,this.erEdgeLabelBackground="#FFFFFF",this.attributeBackgroundColorOdd=this.attributeBackgroundColorOdd||kn,this.attributeBackgroundColorEven=this.attributeBackgroundColorEven||wn}calculate(t){if(typeof t!="object"){this.updateColors();return}let r=Object.keys(t);r.forEach(i=>{this[i]=t[i]}),this.updateColors(),r.forEach(i=>{this[i]=t[i]})}},FH=o(e=>{let t=new S7;return t.calculate(e),t},"getThemeVariables")});var E7,zH,GH=z(()=>{"use strict";Cn();Eo();dl();E7=class{static{o(this,"Theme")}constructor(){this.background="#333",this.primaryColor="#1f2020",this.secondaryColor=je(this.primaryColor,16),this.tertiaryColor=ne(this.primaryColor,{h:-160}),this.primaryBorderColor=Ge(this.background),this.secondaryBorderColor=Jt(this.secondaryColor,this.darkMode),this.tertiaryBorderColor=Jt(this.tertiaryColor,this.darkMode),this.primaryTextColor=Ge(this.primaryColor),this.secondaryTextColor=Ge(this.secondaryColor),this.tertiaryTextColor=Ge(this.tertiaryColor),this.mainBkg="#111113",this.secondBkg="calculated",this.mainContrastColor="lightgrey",this.darkTextColor=je(Ge("#323D47"),10),this.border1="#ccc",this.border2=mn(255,255,255,.25),this.arrowheadColor=Ge(this.background),this.fontFamily='"Recursive Variable", arial, sans-serif',this.fontSize="14px",this.labelBackground="#111113",this.textColor="#ccc",this.THEME_COLOR_LIMIT=12,this.radius=12,this.strokeWidth=2,this.noteBkgColor=this.noteBkgColor??"#FEF9C3",this.noteTextColor=this.noteTextColor??"#28253D",this.THEME_COLOR_LIMIT=12,this.fontFamily='"Recursive Variable", arial, sans-serif',this.fontSize="14px",this.nodeBorder="#FFFFFF",this.stateBorder="#FFFFFF",this.useGradient=!1,this.gradientStart="#0042eb",this.gradientStop="#eb0042",this.dropShadow="url(#drop-shadow)",this.nodeShadow=!0,this.archEdgeColor="calculated",this.archEdgeArrowColor="calculated",this.archEdgeWidth="3",this.archGroupBorderColor=this.primaryBorderColor,this.archGroupBorderWidth="2px",this.clusterBkg="#1E1A2E",this.clusterBorder="#BDBCCC",this.noteBorderColor="#FACC15",this.noteFontWeight=600,this.borderColorArray=["#E879F9","#2DD4BF","#FB923C","#22D3EE","#4ADE80","#A78BFA","#F87171","#FACC15","#818CF8","#A3E635 ","#38BDF8","#FB7185"],this.bkgColorArray=[],this.filterColor="#FFFFFF"}updateColors(){this.primaryTextColor=this.primaryTextColor||(this.darkMode?"#eee":"#FFFFFF"),this.secondaryColor=this.secondaryColor||ne(this.primaryColor,{h:-120}),this.tertiaryColor=this.tertiaryColor||ne(this.primaryColor,{h:180,l:5}),this.primaryBorderColor=this.primaryBorderColor||Jt(this.primaryColor,this.darkMode),this.secondaryBorderColor=this.secondaryBorderColor||Jt(this.secondaryColor,this.darkMode),this.tertiaryBorderColor=this.tertiaryBorderColor||Jt(this.tertiaryColor,this.darkMode),this.noteBorderColor=this.noteBorderColor||Jt(this.noteBkgColor,this.darkMode),this.noteBkgColor=this.noteBkgColor||"#fff5ad",this.noteTextColor=this.noteTextColor||"#FFFFFF",this.secondaryTextColor=this.secondaryTextColor||Ge(this.secondaryColor),this.tertiaryTextColor=this.tertiaryTextColor||Ge(this.tertiaryColor),this.lineColor=this.lineColor||Ge(this.background),this.arrowheadColor=this.arrowheadColor||Ge(this.background),this.textColor=this.textColor||this.primaryTextColor,this.border2=this.border2||this.tertiaryBorderColor,this.nodeBkg=this.nodeBkg||this.primaryColor,this.mainBkg=this.mainBkg||this.primaryColor,this.nodeBorder=this.nodeBorder||this.border1,this.clusterBkg=this.clusterBkg||this.tertiaryColor,this.clusterBorder=this.clusterBorder||this.tertiaryBorderColor,this.defaultLinkColor=this.defaultLinkColor||this.lineColor,this.titleColor=this.titleColor||this.tertiaryTextColor,this.edgeLabelBackground=this.edgeLabelBackground||(this.darkMode?Xe(this.secondaryColor,30):this.secondaryColor),this.nodeTextColor=this.nodeTextColor||this.primaryTextColor,this.actorBorder="#FFFFFF",this.signalColor="#FFFFFF",this.labelBoxBorderColor="#BDBCCC",this.actorBorder=this.actorBorder||this.primaryBorderColor,this.actorBkg=this.actorBkg||this.mainBkg,this.actorTextColor=this.actorTextColor||this.primaryTextColor,this.actorLineColor=this.actorLineColor||this.actorBorder,this.labelBoxBkgColor=this.labelBoxBkgColor||this.actorBkg,this.signalColor=this.signalColor||this.textColor,this.signalTextColor=this.signalTextColor||this.textColor,this.labelBoxBorderColor=this.labelBoxBorderColor||this.actorBorder,this.labelTextColor=this.labelTextColor||this.actorTextColor,this.loopTextColor=this.loopTextColor||this.actorTextColor,this.activationBorderColor=this.activationBorderColor||Xe(this.secondaryColor,10),this.activationBkgColor=this.activationBkgColor||this.secondaryColor,this.sequenceNumberColor=this.sequenceNumberColor||Ge(this.lineColor),this.rootLabelColor="#FFFFFF",this.sectionBkgColor=this.sectionBkgColor||this.tertiaryColor,this.altSectionBkgColor=this.altSectionBkgColor||"white",this.sectionBkgColor=this.sectionBkgColor||this.secondaryColor,this.sectionBkgColor2=this.sectionBkgColor2||this.primaryColor,this.excludeBkgColor=this.excludeBkgColor||"#eeeeee",this.taskBorderColor=this.taskBorderColor||this.primaryBorderColor,this.taskBkgColor=this.taskBkgColor||this.primaryColor,this.activeTaskBorderColor=this.activeTaskBorderColor||this.primaryColor,this.activeTaskBkgColor=this.activeTaskBkgColor||je(this.primaryColor,23),this.gridColor=this.gridColor||"lightgrey",this.doneTaskBkgColor=this.doneTaskBkgColor||"lightgrey",this.doneTaskBorderColor=this.doneTaskBorderColor||"grey",this.critBorderColor=this.critBorderColor||"#ff8888",this.critBkgColor=this.critBkgColor||"red",this.todayLineColor=this.todayLineColor||"red",this.taskTextColor=this.taskTextColor||this.textColor,this.vertLineColor=this.vertLineColor||this.primaryBorderColor,this.taskTextOutsideColor=this.taskTextOutsideColor||this.textColor,this.taskTextLightColor=this.taskTextLightColor||this.textColor,this.taskTextColor=this.taskTextColor||this.primaryTextColor,this.taskTextDarkColor=this.taskTextDarkColor||this.textColor,this.taskTextClickableColor=this.taskTextClickableColor||"#003163",this.archEdgeColor=this.lineColor,this.archEdgeArrowColor=this.lineColor,this.personBorder=this.personBorder||this.primaryBorderColor,this.personBkg=this.personBkg||this.mainBkg,this.transitionColor=this.transitionColor||this.lineColor,this.transitionLabelColor=this.transitionLabelColor||this.textColor,this.stateLabelColor=this.stateLabelColor||this.stateBkg||this.primaryTextColor,this.stateBkg=this.stateBkg||this.mainBkg,this.labelBackgroundColor=this.labelBackgroundColor||this.stateBkg,this.compositeBackground=this.compositeBackground||this.background||this.tertiaryColor,this.altBackground=this.altBackground||"#f0f0f0",this.compositeTitleBackground=this.compositeTitleBackground||this.mainBkg,this.compositeBorder=this.compositeBorder||this.nodeBorder,this.innerEndBackground=this.nodeBorder,this.errorBkgColor=this.errorBkgColor||this.tertiaryColor,this.errorTextColor=this.errorTextColor||this.tertiaryTextColor,this.transitionColor=this.transitionColor||this.lineColor,this.specialStateColor=this.lineColor,this.cScale0=this.cScale0||"#f4a8ff",this.cScale1=this.cScale1||"#46ecd5",this.cScale2=this.cScale2||"#ffb86a",this.cScale3=this.cScale3||"#dab2ff",this.cScale4=this.cScale4||"#7bf1a8",this.cScale5=this.cScale5||"#c4b4ff",this.cScale6=this.cScale6||"#ffa2a2",this.cScale7=this.cScale7||"#ffdf20",this.cScale8=this.cScale8||"#a3b3ff",this.cScale9=this.cScale9||"#bbf451",this.cScale10=this.cScale10||"#74d4ff",this.cScale11=this.cScale11||"#ffa1ad";for(let r=0;r<this.THEME_COLOR_LIMIT;r++)this["cScaleInv"+r]=this["cScaleInv"+r]||Ge(this["cScale"+r]);for(let r=0;r<this.THEME_COLOR_LIMIT;r++)this.darkMode?this["cScalePeer"+r]=this["cScalePeer"+r]||je(this["cScale"+r],10):this["cScalePeer"+r]=this["cScalePeer"+r]||Xe(this["cScale"+r],10);this.scaleLabelColor=this.scaleLabelColor||this.labelTextColor;for(let r=0;r<this.THEME_COLOR_LIMIT;r++)this["cScaleLabel"+r]=Xe(this["cScale"+r],75);let t=this.darkMode?-4:-1;for(let r=0;r<5;r++)this["surface"+r]=this["surface"+r]||ne(this.mainBkg,{h:180,s:-15,l:t*(5+r*3)}),this["surfacePeer"+r]=this["surfacePeer"+r]||ne(this.mainBkg,{h:180,s:-15,l:t*(8+r*3)});this.classText=this.classText||this.textColor,this.fillType0=this.fillType0||this.primaryColor,this.fillType1=this.fillType1||this.secondaryColor,this.fillType2=this.fillType2||ne(this.primaryColor,{h:64}),this.fillType3=this.fillType3||ne(this.secondaryColor,{h:64}),this.fillType4=this.fillType4||ne(this.primaryColor,{h:-64}),this.fillType5=this.fillType5||ne(this.secondaryColor,{h:-64}),this.fillType6=this.fillType6||ne(this.primaryColor,{h:128}),this.fillType7=this.fillType7||ne(this.secondaryColor,{h:128}),this.pie1=this.pie1||this.primaryColor,this.pie2=this.pie2||this.secondaryColor,this.pie3=this.pie3||this.tertiaryColor,this.pie4=this.pie4||ne(this.primaryColor,{l:-10}),this.pie5=this.pie5||ne(this.secondaryColor,{l:-10}),this.pie6=this.pie6||ne(this.tertiaryColor,{l:-10}),this.pie7=this.pie7||ne(this.primaryColor,{h:60,l:-10}),this.pie8=this.pie8||ne(this.primaryColor,{h:-60,l:-10}),this.pie9=this.pie9||ne(this.primaryColor,{h:120,l:0}),this.pie10=this.pie10||ne(this.primaryColor,{h:60,l:-20}),this.pie11=this.pie11||ne(this.primaryColor,{h:-60,l:-20}),this.pie12=this.pie12||ne(this.primaryColor,{h:120,l:-10}),this.pieTitleTextSize=this.pieTitleTextSize||"25px",this.pieTitleTextColor=this.pieTitleTextColor||this.taskTextDarkColor,this.pieSectionTextSize=this.pieSectionTextSize||"17px",this.pieSectionTextColor=this.pieSectionTextColor||this.textColor,this.pieLegendTextSize=this.pieLegendTextSize||"17px",this.pieLegendTextColor=this.pieLegendTextColor||this.taskTextDarkColor,this.pieStrokeColor=this.pieStrokeColor||"black",this.pieStrokeWidth=this.pieStrokeWidth||"2px",this.pieOuterStrokeWidth=this.pieOuterStrokeWidth||"2px",this.pieOuterStrokeColor=this.pieOuterStrokeColor||"black",this.pieOpacity=this.pieOpacity||"0.7",this.vennTitleTextColor=this.vennTitleTextColor??this.titleColor,this.vennSetTextColor=this.vennSetTextColor??this.textColor,this.quadrant1Fill=this.quadrant1Fill||this.primaryColor,this.quadrant2Fill=this.quadrant2Fill||ne(this.primaryColor,{r:5,g:5,b:5}),this.quadrant3Fill=this.quadrant3Fill||ne(this.primaryColor,{r:10,g:10,b:10}),this.quadrant4Fill=this.quadrant4Fill||ne(this.primaryColor,{r:15,g:15,b:15}),this.quadrant1TextFill=this.quadrant1TextFill||this.primaryTextColor,this.quadrant2TextFill=this.quadrant2TextFill||ne(this.primaryTextColor,{r:-5,g:-5,b:-5}),this.quadrant3TextFill=this.quadrant3TextFill||ne(this.primaryTextColor,{r:-10,g:-10,b:-10}),this.quadrant4TextFill=this.quadrant4TextFill||ne(this.primaryTextColor,{r:-15,g:-15,b:-15}),this.quadrantPointFill=this.quadrantPointFill||ri(this.quadrant1Fill)?je(this.quadrant1Fill):Xe(this.quadrant1Fill),this.quadrantPointTextFill=this.quadrantPointTextFill||this.primaryTextColor,this.quadrantXAxisTextFill=this.quadrantXAxisTextFill||this.primaryTextColor,this.quadrantYAxisTextFill=this.quadrantYAxisTextFill||this.primaryTextColor,this.quadrantInternalBorderStrokeFill=this.quadrantInternalBorderStrokeFill||this.primaryBorderColor,this.quadrantExternalBorderStrokeFill=this.quadrantExternalBorderStrokeFill||this.primaryBorderColor,this.quadrantTitleFill=this.quadrantTitleFill||this.primaryTextColor,this.xyChart={backgroundColor:this.xyChart?.backgroundColor||this.background,titleColor:this.xyChart?.titleColor||this.primaryTextColor,xAxisTitleColor:this.xyChart?.xAxisTitleColor||this.primaryTextColor,xAxisLabelColor:this.xyChart?.xAxisLabelColor||this.primaryTextColor,xAxisTickColor:this.xyChart?.xAxisTickColor||this.primaryTextColor,xAxisLineColor:this.xyChart?.xAxisLineColor||this.primaryTextColor,yAxisTitleColor:this.xyChart?.yAxisTitleColor||this.primaryTextColor,yAxisLabelColor:this.xyChart?.yAxisLabelColor||this.primaryTextColor,yAxisTickColor:this.xyChart?.yAxisTickColor||this.primaryTextColor,yAxisLineColor:this.xyChart?.yAxisLineColor||this.primaryTextColor,plotColorPalette:this.xyChart?.plotColorPalette||"#FFF4DD,#FFD8B1,#FFA07A,#ECEFF1,#D6DBDF,#C3E0A8,#FFB6A4,#FFD74D,#738FA7,#FFFFF0"},this.requirementBackground=this.requirementBackground||this.primaryColor,this.requirementBorderColor=this.requirementBorderColor||this.primaryBorderColor,this.requirementBorderSize=this.requirementBorderSize||"1",this.requirementTextColor=this.requirementTextColor||this.primaryTextColor,this.relationColor=this.relationColor||this.lineColor,this.relationLabelBackground=this.relationLabelBackground||(this.darkMode?Xe(this.secondaryColor,30):this.secondaryColor),this.relationLabelColor=this.relationLabelColor||this.actorTextColor,this.git0=this.git0||this.primaryColor,this.git1=this.git1||this.secondaryColor,this.git2=this.git2||this.tertiaryColor,this.git3=this.git3||ne(this.primaryColor,{h:-30}),this.git4=this.git4||ne(this.primaryColor,{h:-60}),this.git5=this.git5||ne(this.primaryColor,{h:-90}),this.git6=this.git6||ne(this.primaryColor,{h:60}),this.git7=this.git7||ne(this.primaryColor,{h:120}),this.darkMode?(this.git0=je(this.git0,25),this.git1=je(this.git1,25),this.git2=je(this.git2,25),this.git3=je(this.git3,25),this.git4=je(this.git4,25),this.git5=je(this.git5,25),this.git6=je(this.git6,25),this.git7=je(this.git7,25)):(this.git0=Xe(this.git0,25),this.git1=Xe(this.git1,25),this.git2=Xe(this.git2,25),this.git3=Xe(this.git3,25),this.git4=Xe(this.git4,25),this.git5=Xe(this.git5,25),this.git6=Xe(this.git6,25),this.git7=Xe(this.git7,25)),this.gitInv0=this.gitInv0||Ge(this.git0),this.gitInv1=this.gitInv1||Ge(this.git1),this.gitInv2=this.gitInv2||Ge(this.git2),this.gitInv3=this.gitInv3||Ge(this.git3),this.gitInv4=this.gitInv4||Ge(this.git4),this.gitInv5=this.gitInv5||Ge(this.git5),this.gitInv6=this.gitInv6||Ge(this.git6),this.gitInv7=this.gitInv7||Ge(this.git7),this.branchLabelColor=this.branchLabelColor||(this.darkMode?"black":this.labelTextColor),this.gitBranchLabel0=this.gitBranchLabel0||this.branchLabelColor,this.gitBranchLabel1=this.gitBranchLabel1||this.branchLabelColor,this.gitBranchLabel2=this.gitBranchLabel2||this.branchLabelColor,this.gitBranchLabel3=this.gitBranchLabel3||this.branchLabelColor,this.gitBranchLabel4=this.gitBranchLabel4||this.branchLabelColor,this.gitBranchLabel5=this.gitBranchLabel5||this.branchLabelColor,this.gitBranchLabel6=this.gitBranchLabel6||this.branchLabelColor,this.gitBranchLabel7=this.gitBranchLabel7||this.branchLabelColor,this.tagLabelColor=this.tagLabelColor||this.primaryTextColor,this.tagLabelBackground=this.tagLabelBackground||this.primaryColor,this.tagLabelBorder=this.tagBorder||this.primaryBorderColor,this.tagLabelFontSize=this.tagLabelFontSize||"10px",this.commitLabelColor=this.commitLabelColor||this.secondaryTextColor,this.commitLabelBackground=this.commitLabelBackground||this.secondaryColor,this.commitLabelFontSize=this.commitLabelFontSize||"10px",this.commitLineColor=this.commitLineColor??"#BDBCCC",this.fontWeight=600,this.erEdgeLabelBackground="#16141F",this.attributeBackgroundColorOdd=this.attributeBackgroundColorOdd||kn,this.attributeBackgroundColorEven=this.attributeBackgroundColorEven||wn}calculate(t){if(typeof t!="object"){this.updateColors();return}let r=Object.keys(t);r.forEach(i=>{this[i]=t[i]}),this.updateColors(),r.forEach(i=>{this[i]=t[i]})}},zH=o(e=>{let t=new E7;return t.calculate(e),t},"getThemeVariables")});var _o,LC=z(()=>{"use strict";kH();SH();$f();AH();DH();LH();NH();OH();BH();$H();GH();_o={base:{getThemeVariables:CH},dark:{getThemeVariables:wH},default:{getThemeVariables:Ao},forest:{getThemeVariables:EH},neutral:{getThemeVariables:_H},neo:{getThemeVariables:RH},"neo-dark":{getThemeVariables:MH},redux:{getThemeVariables:IH},"redux-dark":{getThemeVariables:PH},"redux-color":{getThemeVariables:FH},"redux-dark-color":{getThemeVariables:zH}}});var Ea,VH=z(()=>{"use strict";Ea={flowchart:{useMaxWidth:!0,titleTopMargin:25,subGraphTitleMargin:{top:0,bottom:0},diagramPadding:8,htmlLabels:null,nodeSpacing:50,rankSpacing:50,curve:"basis",padding:15,defaultRenderer:"dagre-wrapper",wrappingWidth:200,inheritDir:!1},sequence:{useMaxWidth:!0,hideUnusedParticipants:!1,activationWidth:10,diagramMarginX:50,diagramMarginY:10,actorMargin:50,width:150,height:65,boxMargin:10,boxTextMargin:5,noteMargin:10,messageMargin:35,messageAlign:"center",mirrorActors:!0,forceMenus:!1,bottomMarginAdj:1,rightAngles:!1,showSequenceNumbers:!1,actorFontSize:14,actorFontFamily:'"Open Sans", sans-serif',actorFontWeight:400,noteFontSize:14,noteFontFamily:'"trebuchet ms", verdana, arial, sans-serif',noteFontWeight:400,noteAlign:"center",messageFontSize:16,messageFontFamily:'"trebuchet ms", verdana, arial, sans-serif',messageFontWeight:400,wrap:!1,wrapPadding:10,labelBoxWidth:50,labelBoxHeight:20},gantt:{useMaxWidth:!0,titleTopMargin:25,barHeight:20,barGap:4,topPadding:50,rightPadding:75,leftPadding:75,gridLineStartPadding:35,fontSize:11,sectionFontSize:11,numberSectionStyles:4,axisFormat:"%Y-%m-%d",topAxis:!1,displayMode:"",weekday:"sunday"},journey:{useMaxWidth:!0,diagramMarginX:50,diagramMarginY:10,leftMargin:150,maxLabelWidth:360,width:150,height:50,boxMargin:10,boxTextMargin:5,noteMargin:10,messageMargin:35,messageAlign:"center",bottomMarginAdj:1,rightAngles:!1,taskFontSize:14,taskFontFamily:'"Open Sans", sans-serif',taskMargin:50,activationWidth:10,textPlacement:"fo",actorColours:["#8FBC8F","#7CFC00","#00FFFF","#20B2AA","#B0E0E6","#FFFFE0"],sectionFills:["#191970","#8B008B","#4B0082","#2F4F4F","#800000","#8B4513","#00008B"],sectionColours:["#fff"],titleColor:"",titleFontFamily:'"trebuchet ms", verdana, arial, sans-serif',titleFontSize:"4ex"},class:{useMaxWidth:!0,titleTopMargin:25,arrowMarkerAbsolute:!1,dividerMargin:10,padding:5,textHeight:10,defaultRenderer:"dagre-wrapper",htmlLabels:!1,hideEmptyMembersBox:!1,hierarchicalNamespaces:!0},state:{useMaxWidth:!0,titleTopMargin:25,dividerMargin:10,sizeUnit:5,padding:8,textHeight:10,titleShift:-15,noteMargin:10,forkWidth:70,forkHeight:7,miniPadding:2,fontSizeFactor:5.02,fontSize:24,labelHeight:16,edgeLengthFactor:"20",compositTitleSize:35,radius:5,defaultRenderer:"dagre-wrapper"},er:{useMaxWidth:!0,titleTopMargin:25,diagramPadding:20,layoutDirection:"TB",minEntityWidth:100,minEntityHeight:75,entityPadding:15,nodeSpacing:140,rankSpacing:80,stroke:"gray",fill:"honeydew",fontSize:12},pie:{useMaxWidth:!0,textPosition:.75},quadrantChart:{useMaxWidth:!0,chartWidth:500,chartHeight:500,titleFontSize:20,titlePadding:10,quadrantPadding:5,xAxisLabelPadding:5,yAxisLabelPadding:5,xAxisLabelFontSize:16,yAxisLabelFontSize:16,quadrantLabelFontSize:16,quadrantTextTopPadding:5,pointTextPadding:5,pointLabelFontSize:12,pointRadius:5,xAxisPosition:"top",yAxisPosition:"left",quadrantInternalBorderStrokeWidth:1,quadrantExternalBorderStrokeWidth:2},xyChart:{useMaxWidth:!0,width:700,height:500,titleFontSize:20,titlePadding:10,showDataLabel:!1,showDataLabelOutsideBar:!1,showTitle:!0,xAxis:{$ref:"#/$defs/XYChartAxisConfig",showLabel:!0,labelFontSize:14,labelPadding:5,showTitle:!0,titleFontSize:16,titlePadding:5,showTick:!0,tickLength:5,tickWidth:2,showAxisLine:!0,axisLineWidth:2},yAxis:{$ref:"#/$defs/XYChartAxisConfig",showLabel:!0,labelFontSize:14,labelPadding:5,showTitle:!0,titleFontSize:16,titlePadding:5,showTick:!0,tickLength:5,tickWidth:2,showAxisLine:!0,axisLineWidth:2},chartOrientation:"vertical",plotReservedSpacePercent:50},requirement:{useMaxWidth:!0,rect_fill:"#f9f9f9",text_color:"#333",rect_border_size:"0.5px",rect_border_color:"#bbb",rect_min_width:200,rect_min_height:200,fontSize:14,rect_padding:10,line_height:20},mindmap:{useMaxWidth:!0,padding:10,maxNodeWidth:200,layoutAlgorithm:"cose-bilkent"},ishikawa:{useMaxWidth:!0,diagramPadding:20},kanban:{useMaxWidth:!0,padding:8,sectionWidth:200,ticketBaseUrl:""},timeline:{useMaxWidth:!0,diagramMarginX:50,diagramMarginY:10,leftMargin:150,width:150,height:50,boxMargin:10,boxTextMargin:5,noteMargin:10,messageMargin:35,messageAlign:"center",bottomMarginAdj:1,rightAngles:!1,taskFontSize:14,taskFontFamily:'"Open Sans", sans-serif',taskMargin:50,activationWidth:10,textPlacement:"fo",actorColours:["#8FBC8F","#7CFC00","#00FFFF","#20B2AA","#B0E0E6","#FFFFE0"],sectionFills:["#191970","#8B008B","#4B0082","#2F4F4F","#800000","#8B4513","#00008B"],sectionColours:["#fff"],disableMulticolor:!1},gitGraph:{useMaxWidth:!0,titleTopMargin:25,diagramPadding:8,nodeLabel:{width:75,height:100,x:-25,y:0},mainBranchName:"main",mainBranchOrder:0,showCommitLabel:!0,showBranches:!0,rotateCommitLabel:!0,parallelCommits:!1,arrowMarkerAbsolute:!1},c4:{useMaxWidth:!0,diagramMarginX:50,diagramMarginY:10,c4ShapeMargin:50,c4ShapePadding:20,width:216,height:60,boxMargin:10,c4ShapeInRow:4,nextLinePaddingX:0,c4BoundaryInRow:2,personFontSize:14,personFontFamily:'"Open Sans", sans-serif',personFontWeight:"normal",external_personFontSize:14,external_personFontFamily:'"Open Sans", sans-serif',external_personFontWeight:"normal",systemFontSize:14,systemFontFamily:'"Open Sans", sans-serif',systemFontWeight:"normal",external_systemFontSize:14,external_systemFontFamily:'"Open Sans", sans-serif',external_systemFontWeight:"normal",system_dbFontSize:14,system_dbFontFamily:'"Open Sans", sans-serif',system_dbFontWeight:"normal",external_system_dbFontSize:14,external_system_dbFontFamily:'"Open Sans", sans-serif',external_system_dbFontWeight:"normal",system_queueFontSize:14,system_queueFontFamily:'"Open Sans", sans-serif',system_queueFontWeight:"normal",external_system_queueFontSize:14,external_system_queueFontFamily:'"Open Sans", sans-serif',external_system_queueFontWeight:"normal",boundaryFontSize:14,boundaryFontFamily:'"Open Sans", sans-serif',boundaryFontWeight:"normal",messageFontSize:12,messageFontFamily:'"Open Sans", sans-serif',messageFontWeight:"normal",containerFontSize:14,containerFontFamily:'"Open Sans", sans-serif',containerFontWeight:"normal",external_containerFontSize:14,external_containerFontFamily:'"Open Sans", sans-serif',external_containerFontWeight:"normal",container_dbFontSize:14,container_dbFontFamily:'"Open Sans", sans-serif',container_dbFontWeight:"normal",external_container_dbFontSize:14,external_container_dbFontFamily:'"Open Sans", sans-serif',external_container_dbFontWeight:"normal",container_queueFontSize:14,container_queueFontFamily:'"Open Sans", sans-serif',container_queueFontWeight:"normal",external_container_queueFontSize:14,external_container_queueFontFamily:'"Open Sans", sans-serif',external_container_queueFontWeight:"normal",componentFontSize:14,componentFontFamily:'"Open Sans", sans-serif',componentFontWeight:"normal",external_componentFontSize:14,external_componentFontFamily:'"Open Sans", sans-serif',external_componentFontWeight:"normal",component_dbFontSize:14,component_dbFontFamily:'"Open Sans", sans-serif',component_dbFontWeight:"normal",external_component_dbFontSize:14,external_component_dbFontFamily:'"Open Sans", sans-serif',external_component_dbFontWeight:"normal",component_queueFontSize:14,component_queueFontFamily:'"Open Sans", sans-serif',component_queueFontWeight:"normal",external_component_queueFontSize:14,external_component_queueFontFamily:'"Open Sans", sans-serif',external_component_queueFontWeight:"normal",wrap:!0,wrapPadding:10,person_bg_color:"#08427B",person_border_color:"#073B6F",external_person_bg_color:"#686868",external_person_border_color:"#8A8A8A",system_bg_color:"#1168BD",system_border_color:"#3C7FC0",system_db_bg_color:"#1168BD",system_db_border_color:"#3C7FC0",system_queue_bg_color:"#1168BD",system_queue_border_color:"#3C7FC0",external_system_bg_color:"#999999",external_system_border_color:"#8A8A8A",external_system_db_bg_color:"#999999",external_system_db_border_color:"#8A8A8A",external_system_queue_bg_color:"#999999",external_system_queue_border_color:"#8A8A8A",container_bg_color:"#438DD5",container_border_color:"#3C7FC0",container_db_bg_color:"#438DD5",container_db_border_color:"#3C7FC0",container_queue_bg_color:"#438DD5",container_queue_border_color:"#3C7FC0",external_container_bg_color:"#B3B3B3",external_container_border_color:"#A6A6A6",external_container_db_bg_color:"#B3B3B3",external_container_db_border_color:"#A6A6A6",external_container_queue_bg_color:"#B3B3B3",external_container_queue_border_color:"#A6A6A6",component_bg_color:"#85BBF0",component_border_color:"#78A8D8",component_db_bg_color:"#85BBF0",component_db_border_color:"#78A8D8",component_queue_bg_color:"#85BBF0",component_queue_border_color:"#78A8D8",external_component_bg_color:"#CCCCCC",external_component_border_color:"#BFBFBF",external_component_db_bg_color:"#CCCCCC",external_component_db_border_color:"#BFBFBF",external_component_queue_bg_color:"#CCCCCC",external_component_queue_border_color:"#BFBFBF"},sankey:{useMaxWidth:!0,width:600,height:400,linkColor:"gradient",nodeAlignment:"justify",showValues:!0,prefix:"",suffix:"",nodeWidth:10,nodePadding:12,labelStyle:"legacy"},block:{useMaxWidth:!0,padding:8},packet:{useMaxWidth:!0,rowHeight:32,bitWidth:32,bitsPerRow:32,showBits:!0,paddingX:5,paddingY:5},treeView:{useMaxWidth:!0,rowIndent:10,paddingX:5,paddingY:5,lineThickness:1},architecture:{useMaxWidth:!0,padding:40,iconSize:80,fontSize:16,randomize:!1,nodeSeparation:75,idealEdgeLengthMultiplier:1.5,edgeElasticity:.45,numIter:2500},eventmodeling:{useMaxWidth:!0,padding:30,rowHeight:32},radar:{useMaxWidth:!0,width:600,height:600,marginTop:50,marginRight:50,marginBottom:50,marginLeft:50,axisScaleFactor:1,axisLabelFactor:1.05,curveTension:.17},venn:{useMaxWidth:!0,width:800,height:450,padding:8,useDebugLayout:!1},theme:"default",look:"classic",handDrawnSeed:0,layout:"dagre",maxTextSize:5e4,maxEdges:500,darkMode:!1,fontFamily:'"trebuchet ms", verdana, arial, sans-serif;',logLevel:5,securityLevel:"strict",startOnLoad:!0,arrowMarkerAbsolute:!1,secure:["secure","securityLevel","startOnLoad","maxTextSize","suppressErrorRendering","maxEdges"],legacyMathML:!1,forceLegacyMathML:!1,deterministicIds:!1,fontSize:16,markdownAutoWrap:!0,suppressErrorRendering:!1}});var WH,qH,UH,or,Bn=z(()=>{"use strict";LC();VH();WH={...Ea,deterministicIDSeed:void 0,elk:{mergeEdges:!1,nodePlacementStrategy:"BRANDES_KOEPF",forceNodeModelOrder:!1,considerModelOrder:"NODES_AND_EDGES"},themeCSS:void 0,themeVariables:_o.default.getThemeVariables(),sequence:{...Ea.sequence,messageFont:o(function(){return{fontFamily:this.messageFontFamily,fontSize:this.messageFontSize,fontWeight:this.messageFontWeight}},"messageFont"),noteFont:o(function(){return{fontFamily:this.noteFontFamily,fontSize:this.noteFontSize,fontWeight:this.noteFontWeight}},"noteFont"),actorFont:o(function(){return{fontFamily:this.actorFontFamily,fontSize:this.actorFontSize,fontWeight:this.actorFontWeight}},"actorFont")},class:{hideEmptyMembersBox:!1,hierarchicalNamespaces:!0},gantt:{...Ea.gantt,tickInterval:void 0,useWidth:void 0},c4:{...Ea.c4,useWidth:void 0,personFont:o(function(){return{fontFamily:this.personFontFamily,fontSize:this.personFontSize,fontWeight:this.personFontWeight}},"personFont"),flowchart:{...Ea.flowchart,inheritDir:!1},external_personFont:o(function(){return{fontFamily:this.external_personFontFamily,fontSize:this.external_personFontSize,fontWeight:this.external_personFontWeight}},"external_personFont"),systemFont:o(function(){return{fontFamily:this.systemFontFamily,fontSize:this.systemFontSize,fontWeight:this.systemFontWeight}},"systemFont"),external_systemFont:o(function(){return{fontFamily:this.external_systemFontFamily,fontSize:this.external_systemFontSize,fontWeight:this.external_systemFontWeight}},"external_systemFont"),system_dbFont:o(function(){return{fontFamily:this.system_dbFontFamily,fontSize:this.system_dbFontSize,fontWeight:this.system_dbFontWeight}},"system_dbFont"),external_system_dbFont:o(function(){return{fontFamily:this.external_system_dbFontFamily,fontSize:this.external_system_dbFontSize,fontWeight:this.external_system_dbFontWeight}},"external_system_dbFont"),system_queueFont:o(function(){return{fontFamily:this.system_queueFontFamily,fontSize:this.system_queueFontSize,fontWeight:this.system_queueFontWeight}},"system_queueFont"),external_system_queueFont:o(function(){return{fontFamily:this.external_system_queueFontFamily,fontSize:this.external_system_queueFontSize,fontWeight:this.external_system_queueFontWeight}},"external_system_queueFont"),containerFont:o(function(){return{fontFamily:this.containerFontFamily,fontSize:this.containerFontSize,fontWeight:this.containerFontWeight}},"containerFont"),external_containerFont:o(function(){return{fontFamily:this.external_containerFontFamily,fontSize:this.external_containerFontSize,fontWeight:this.external_containerFontWeight}},"external_containerFont"),container_dbFont:o(function(){return{fontFamily:this.container_dbFontFamily,fontSize:this.container_dbFontSize,fontWeight:this.container_dbFontWeight}},"container_dbFont"),external_container_dbFont:o(function(){return{fontFamily:this.external_container_dbFontFamily,fontSize:this.external_container_dbFontSize,fontWeight:this.external_container_dbFontWeight}},"external_container_dbFont"),container_queueFont:o(function(){return{fontFamily:this.container_queueFontFamily,fontSize:this.container_queueFontSize,fontWeight:this.container_queueFontWeight}},"container_queueFont"),external_container_queueFont:o(function(){return{fontFamily:this.external_container_queueFontFamily,fontSize:this.external_container_queueFontSize,fontWeight:this.external_container_queueFontWeight}},"external_container_queueFont"),componentFont:o(function(){return{fontFamily:this.componentFontFamily,fontSize:this.componentFontSize,fontWeight:this.componentFontWeight}},"componentFont"),external_componentFont:o(function(){return{fontFamily:this.external_componentFontFamily,fontSize:this.external_componentFontSize,fontWeight:this.external_componentFontWeight}},"external_componentFont"),component_dbFont:o(function(){return{fontFamily:this.component_dbFontFamily,fontSize:this.component_dbFontSize,fontWeight:this.component_dbFontWeight}},"component_dbFont"),external_component_dbFont:o(function(){return{fontFamily:this.external_component_dbFontFamily,fontSize:this.external_component_dbFontSize,fontWeight:this.external_component_dbFontWeight}},"external_component_dbFont"),component_queueFont:o(function(){return{fontFamily:this.component_queueFontFamily,fontSize:this.component_queueFontSize,fontWeight:this.component_queueFontWeight}},"component_queueFont"),external_component_queueFont:o(function(){return{fontFamily:this.external_component_queueFontFamily,fontSize:this.external_component_queueFontSize,fontWeight:this.external_component_queueFontWeight}},"external_component_queueFont"),boundaryFont:o(function(){return{fontFamily:this.boundaryFontFamily,fontSize:this.boundaryFontSize,fontWeight:this.boundaryFontWeight}},"boundaryFont"),messageFont:o(function(){return{fontFamily:this.messageFontFamily,fontSize:this.messageFontSize,fontWeight:this.messageFontWeight}},"messageFont")},pie:{...Ea.pie,useWidth:984},xyChart:{...Ea.xyChart,useWidth:void 0},requirement:{...Ea.requirement,useWidth:void 0},packet:{...Ea.packet},eventmodeling:{...Ea.eventmodeling},treeView:{...Ea.treeView,useWidth:void 0},radar:{...Ea.radar},ishikawa:{...Ea.ishikawa},sankey:{...Ea.sankey,nodeColors:void 0},treemap:{useMaxWidth:!0,padding:10,diagramPadding:8,showValues:!0,nodeWidth:100,nodeHeight:40,borderWidth:1,valueFontSize:12,labelFontSize:14,valueFormat:","},venn:{...Ea.venn}},qH=o((e,t="")=>Object.keys(e).reduce((r,i)=>Array.isArray(e[i])?r:typeof e[i]=="object"&&e[i]!==null?[...r,t+i,...qH(e[i],"")]:[...r,t+i],[]),"keyify"),UH=new Set(qH(WH,"")),or=WH});var Lm,A7,MC=z(()=>{"use strict";Bn();St();Lm=o(e=>{if(Z.debug("sanitizeDirective called with",e),!(typeof e!="object"||e==null)){if(Array.isArray(e)){e.forEach(t=>Lm(t));return}for(let t of Object.keys(e)){if(Z.debug("Checking key",t),t.startsWith("__")||t.includes("proto")||t.includes("constr")||!UH.has(t)||e[t]==null){Z.debug("sanitize deleting key: ",t),delete e[t];continue}if(typeof e[t]=="object"){if(t==="nodeColors"){let i=/^#[\da-f]{3,8}$|^rgb\([\d\s%,.]+\)$|^hsl\([\d\s%,.]+\)$|^[a-z]+$/i;for(let n of Object.keys(e[t]))(typeof e[t][n]!="string"||!i.test(e[t][n]))&&(Z.debug("sanitize deleting invalid color:",n,e[t][n]),delete e[t][n])}else Z.debug("sanitizing object",t),Lm(e[t]);continue}let r=["themeCSS","fontFamily","altFontFamily"];for(let i of r)t.includes(i)&&(Z.debug("sanitizing css option",t),e[t]=A7(e[t]))}if(e.themeVariables)for(let t of Object.keys(e.themeVariables)){let r=e.themeVariables[t];r?.match&&!r.match(/^[\d "#%(),.;A-Za-z]+$/)&&(e.themeVariables[t]="")}Z.debug("After sanitization",e)}},"sanitizeDirective"),A7=o(e=>{let t=0,r=0;for(let i of e){if(t<r)return"{ /* ERROR: Unbalanced CSS */ }";i==="{"?t++:i==="}"&&r++}return t!==r?"{ /* ERROR: Unbalanced CSS */ }":e},"sanitizeCss")});var Ph,Aa,vs,NC,zf,rv,IC,_7,YH,jH,D7,OC,Nt,XH,KH,iv,zNe,HH,ZH,QH,JH,Mr,br=z(()=>{"use strict";Dm();St();LC();Bn();MC();Ph=Object.freeze(or),Aa=o(e=>!(e===!1||["false","null","0"].includes(String(e).trim().toLowerCase())),"evaluate"),vs=Ai({},Ph),zf=[],rv=Ai({},Ph),IC=o((e,t)=>{let r=Ai({},e),i={};for(let n of t)XH(n),i=Ai(i,n);if(r=Ai(r,i),i.theme&&i.theme in _o){let n=Ai({},NC),a=Ai(n.themeVariables||{},i.themeVariables);r.theme&&r.theme in _o&&(r.themeVariables=_o[r.theme].getThemeVariables(a))}return rv=r,QH(rv),rv},"updateCurrentConfig"),_7=o(e=>(vs=Ai({},Ph),vs=Ai(vs,e),e.theme&&_o[e.theme]&&(vs.themeVariables=_o[e.theme].getThemeVariables(e.themeVariables)),IC(vs,zf),vs),"setSiteConfig"),YH=o(e=>{NC=Ai({},e)},"saveConfigFromInitialize"),jH=o(e=>(vs=Ai(vs,e),IC(vs,zf),vs),"updateSiteConfig"),D7=o(()=>Ai({},vs),"getSiteConfig"),OC=o(e=>(QH(e),Ai(rv,e),Nt()),"setConfig"),Nt=o(()=>Ai({},rv),"getConfig"),XH=o(e=>{e&&(["secure",...vs.secure??[]].forEach(t=>{Object.hasOwn(e,t)&&(Z.debug(`Denied attempt to modify a secure key ${t}`,e[t]),delete e[t])}),Object.keys(e).forEach(t=>{t.startsWith("__")&&delete e[t]}),Object.keys(e).forEach(t=>{typeof e[t]=="string"&&(e[t].includes("<")||e[t].includes(">")||e[t].includes("url(data:"))&&delete e[t],typeof e[t]=="object"&&XH(e[t])}))},"sanitize"),KH=o(e=>{Lm(e),e.fontFamily&&!e.themeVariables?.fontFamily&&(e.themeVariables={...e.themeVariables,fontFamily:e.fontFamily}),zf.push(e),IC(vs,zf)},"addDirective"),iv=o((e=vs)=>{zf=[],IC(e,zf)},"reset"),zNe={LAZY_LOAD_DEPRECATED:"The configuration options lazyLoadedDiagrams and loadExternalDiagramsAtStartup are deprecated. Please use registerExternalDiagrams instead.",FLOWCHART_HTML_LABELS_DEPRECATED:"flowchart.htmlLabels is deprecated. Please use global htmlLabels instead."},HH={},ZH=o(e=>{HH[e]||(Z.warn(zNe[e]),HH[e]=!0)},"issueWarning"),QH=o(e=>{e&&(e.lazyLoadedDiagrams||e.loadExternalDiagramsAtStartup)&&ZH("LAZY_LOAD_DEPRECATED")},"checkConfig"),JH=o(()=>{let e={};NC&&(e=Ai(e,NC));for(let t of zf)e=Ai(e,t);return e},"getUserDefinedConfig"),Mr=o(e=>(e.flowchart?.htmlLabels!=null&&ZH("FLOWCHART_HTML_LABELS_DEPRECATED"),Aa(e.htmlLabels??e.flowchart?.htmlLabels??!0)),"getEffectiveHtmlLabels")});function Ua(e){return function(t){t instanceof RegExp&&(t.lastIndex=0);for(var r=arguments.length,i=new Array(r>1?r-1:0),n=1;n<r;n++)i[n-1]=arguments[n];return P7(e,t,i)}}function jNe(e){return function(){for(var t=arguments.length,r=new Array(t),i=0;i<t;i++)r[i]=arguments[i];return B7(e,r)}}function $r(e,t){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:BC;eY&&eY(e,null);let i=t.length;for(;i--;){let n=t[i];if(typeof n=="string"){let a=r(n);a!==n&&(GNe(t)||(t[i]=a),n=a)}e[n]=!0}return e}function XNe(e){for(let t=0;t<e.length;t++)fl(e,t)||(e[t]=null);return e}function tc(e){let t=cv(null);for(let[r,i]of lY(e))fl(e,r)&&(Array.isArray(i)?t[r]=XNe(i):i&&typeof i=="object"&&i.constructor===Object?t[r]=tc(i):t[r]=i);return t}function ov(e,t){for(;e!==null;){let i=WNe(e,t);if(i){if(i.get)return Ua(i.get);if(typeof i.value=="function")return Ua(i.value)}e=VNe(e)}function r(){return null}return o(r,"fallbackValue"),r}function hY(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:sIe(),t=o(pt=>hY(pt),"DOMPurify");if(t.version="3.4.0",t.removed=[],!e||!e.document||e.document.nodeType!==lv.document||!e.Element)return t.isSupported=!1,t;let{document:r}=e,i=r,n=i.currentScript,{DocumentFragment:a,HTMLTemplateElement:s,Node:l,Element:u,NodeFilter:h,NamedNodeMap:d=e.NamedNodeMap||e.MozNamedAttrMap,HTMLFormElement:f,DOMParser:p,trustedTypes:m}=e,g=u.prototype,y=ov(g,"cloneNode"),v=ov(g,"remove"),x=ov(g,"nextSibling"),b=ov(g,"childNodes"),T=ov(g,"parentNode");if(typeof s=="function"){let pt=r.createElement("template");pt.content&&pt.content.ownerDocument&&(r=pt.content.ownerDocument)}let w,C="",{implementation:k,createNodeIterator:E,createDocumentFragment:A,getElementsByTagName:N}=r,{importNode:P}=i,I=oY();t.isSupported=typeof lY=="function"&&typeof T=="function"&&k&&k.createHTMLDocument!==void 0;let{MUSTACHE_EXPR:D,ERB_EXPR:_,TMPLIT_EXPR:R,DATA_ATTR:M,ARIA_ATTR:L,IS_SCRIPT_OR_DATA:B,ATTR_WHITESPACE:O,CUSTOM_ELEMENT:$}=sY,{IS_ALLOWED_URI:G}=sY,F=null,V=$r({},[...rY,...M7,...N7,...I7,...iY]),H=null,j=$r({},[...nY,...O7,...aY,...PC]),U=Object.seal(cv(null,{tagNameCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},attributeNameCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},allowCustomizedBuiltInElements:{writable:!0,configurable:!1,enumerable:!0,value:!1}})),Q=null,Y=null,ae=Object.seal(cv(null,{tagCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},attributeCheck:{writable:!0,configurable:!1,enumerable:!0,value:null}})),J=!0,te=!0,re=!1,ee=!0,Te=!1,ue=!0,De=!1,Ie=!1,Ee=!1,we=!1,Me=!1,$e=!1,de=!0,rt=!1,ke="user-content-",Fe=!0,He=!1,at={},qe=null,Ue=$r({},["annotation-xml","audio","colgroup","desc","foreignobject","head","iframe","math","mi","mn","mo","ms","mtext","noembed","noframes","noscript","plaintext","script","style","svg","template","thead","title","video","xmp"]),ye=null,ve=$r({},["audio","video","img","source","image","track"]),ie=null,fe=$r({},["alt","class","for","id","label","name","pattern","placeholder","role","summary","title","value","style","xmlns"]),W="http://www.w3.org/1998/Math/MathML",ce="http://www.w3.org/2000/svg",K="http://www.w3.org/1999/xhtml",Re=K,xe=!1,Oe=null,be=$r({},[W,ce,K],R7),Be=$r({},["mi","mo","mn","ms","mtext"]),Ae=$r({},["annotation-xml"]),Ve=$r({},["title","style","font","a","script"]),Pe=null,Ye=["application/xhtml+xml","text/html"],le="text/html",st=null,me=null,ot=r.createElement("form"),kt=o(function(Se){return Se instanceof RegExp||Se instanceof Function},"isRegexOrFunction"),Gt=o(function(){let Se=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};if(!(me&&me===Se)){if((!Se||typeof Se!="object")&&(Se={}),Se=tc(Se),Pe=Ye.indexOf(Se.PARSER_MEDIA_TYPE)===-1?le:Se.PARSER_MEDIA_TYPE,st=Pe==="application/xhtml+xml"?R7:BC,F=fl(Se,"ALLOWED_TAGS")?$r({},Se.ALLOWED_TAGS,st):V,H=fl(Se,"ALLOWED_ATTR")?$r({},Se.ALLOWED_ATTR,st):j,Oe=fl(Se,"ALLOWED_NAMESPACES")?$r({},Se.ALLOWED_NAMESPACES,R7):be,ie=fl(Se,"ADD_URI_SAFE_ATTR")?$r(tc(fe),Se.ADD_URI_SAFE_ATTR,st):fe,ye=fl(Se,"ADD_DATA_URI_TAGS")?$r(tc(ve),Se.ADD_DATA_URI_TAGS,st):ve,qe=fl(Se,"FORBID_CONTENTS")?$r({},Se.FORBID_CONTENTS,st):Ue,Q=fl(Se,"FORBID_TAGS")?$r({},Se.FORBID_TAGS,st):tc({}),Y=fl(Se,"FORBID_ATTR")?$r({},Se.FORBID_ATTR,st):tc({}),at=fl(Se,"USE_PROFILES")?Se.USE_PROFILES:!1,J=Se.ALLOW_ARIA_ATTR!==!1,te=Se.ALLOW_DATA_ATTR!==!1,re=Se.ALLOW_UNKNOWN_PROTOCOLS||!1,ee=Se.ALLOW_SELF_CLOSE_IN_ATTR!==!1,Te=Se.SAFE_FOR_TEMPLATES||!1,ue=Se.SAFE_FOR_XML!==!1,De=Se.WHOLE_DOCUMENT||!1,we=Se.RETURN_DOM||!1,Me=Se.RETURN_DOM_FRAGMENT||!1,$e=Se.RETURN_TRUSTED_TYPE||!1,Ee=Se.FORCE_BODY||!1,de=Se.SANITIZE_DOM!==!1,rt=Se.SANITIZE_NAMED_PROPS||!1,Fe=Se.KEEP_CONTENT!==!1,He=Se.IN_PLACE||!1,G=Se.ALLOWED_URI_REGEXP||cY,Re=Se.NAMESPACE||K,Be=Se.MATHML_TEXT_INTEGRATION_POINTS||Be,Ae=Se.HTML_INTEGRATION_POINTS||Ae,U=Se.CUSTOM_ELEMENT_HANDLING||cv(null),Se.CUSTOM_ELEMENT_HANDLING&&kt(Se.CUSTOM_ELEMENT_HANDLING.tagNameCheck)&&(U.tagNameCheck=Se.CUSTOM_ELEMENT_HANDLING.tagNameCheck),Se.CUSTOM_ELEMENT_HANDLING&&kt(Se.CUSTOM_ELEMENT_HANDLING.attributeNameCheck)&&(U.attributeNameCheck=Se.CUSTOM_ELEMENT_HANDLING.attributeNameCheck),Se.CUSTOM_ELEMENT_HANDLING&&typeof Se.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements=="boolean"&&(U.allowCustomizedBuiltInElements=Se.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements),Te&&(te=!1),Me&&(we=!0),at&&(F=$r({},iY),H=cv(null),at.html===!0&&($r(F,rY),$r(H,nY)),at.svg===!0&&($r(F,M7),$r(H,O7),$r(H,PC)),at.svgFilters===!0&&($r(F,N7),$r(H,O7),$r(H,PC)),at.mathMl===!0&&($r(F,I7),$r(H,aY),$r(H,PC))),ae.tagCheck=null,ae.attributeCheck=null,Se.ADD_TAGS&&(typeof Se.ADD_TAGS=="function"?ae.tagCheck=Se.ADD_TAGS:(F===V&&(F=tc(F)),$r(F,Se.ADD_TAGS,st))),Se.ADD_ATTR&&(typeof Se.ADD_ATTR=="function"?ae.attributeCheck=Se.ADD_ATTR:(H===j&&(H=tc(H)),$r(H,Se.ADD_ATTR,st))),Se.ADD_URI_SAFE_ATTR&&$r(ie,Se.ADD_URI_SAFE_ATTR,st),Se.FORBID_CONTENTS&&(qe===Ue&&(qe=tc(qe)),$r(qe,Se.FORBID_CONTENTS,st)),Se.ADD_FORBID_CONTENTS&&(qe===Ue&&(qe=tc(qe)),$r(qe,Se.ADD_FORBID_CONTENTS,st)),Fe&&(F["#text"]=!0),De&&$r(F,["html","head","body"]),F.table&&($r(F,["tbody"]),delete Q.tbody),Se.TRUSTED_TYPES_POLICY){if(typeof Se.TRUSTED_TYPES_POLICY.createHTML!="function")throw sv('TRUSTED_TYPES_POLICY configuration option must provide a "createHTML" hook.');if(typeof Se.TRUSTED_TYPES_POLICY.createScriptURL!="function")throw sv('TRUSTED_TYPES_POLICY configuration option must provide a "createScriptURL" hook.');w=Se.TRUSTED_TYPES_POLICY,C=w.createHTML("")}else w===void 0&&(w=oIe(m,n)),w!==null&&typeof C=="string"&&(C=w.createHTML(""));qa&&qa(Se),me=Se}},"_parseConfig"),Tt=$r({},[...M7,...N7,...KNe]),Et=$r({},[...I7,...ZNe]),yt=o(function(Se){let it=T(Se);(!it||!it.tagName)&&(it={namespaceURI:Re,tagName:"template"});let xt=BC(Se.tagName),rr=BC(it.tagName);return Oe[Se.namespaceURI]?Se.namespaceURI===ce?it.namespaceURI===K?xt==="svg":it.namespaceURI===W?xt==="svg"&&(rr==="annotation-xml"||Be[rr]):!!Tt[xt]:Se.namespaceURI===W?it.namespaceURI===K?xt==="math":it.namespaceURI===ce?xt==="math"&&Ae[rr]:!!Et[xt]:Se.namespaceURI===K?it.namespaceURI===ce&&!Ae[rr]||it.namespaceURI===W&&!Be[rr]?!1:!Et[xt]&&(Ve[xt]||!Tt[xt]):!!(Pe==="application/xhtml+xml"&&Oe[Se.namespaceURI]):!1},"_checkValidNamespace"),oe=o(function(Se){av(t.removed,{element:Se});try{T(Se).removeChild(Se)}catch{v(Se)}},"_forceRemove"),ht=o(function(Se,it){try{av(t.removed,{attribute:it.getAttributeNode(Se),from:it})}catch{av(t.removed,{attribute:null,from:it})}if(it.removeAttribute(Se),Se==="is")if(we||Me)try{oe(it)}catch{}else try{it.setAttribute(Se,"")}catch{}},"_removeAttribute"),gt=o(function(Se){let it=null,xt=null;if(Ee)Se="<remove></remove>"+Se;else{let Ur=L7(Se,/^[\r\n\t ]+/);xt=Ur&&Ur[0]}Pe==="application/xhtml+xml"&&Re===K&&(Se='<html xmlns="http://www.w3.org/1999/xhtml"><head></head><body>'+Se+"</body></html>");let rr=w?w.createHTML(Se):Se;if(Re===K)try{it=new p().parseFromString(rr,Pe)}catch{}if(!it||!it.documentElement){it=k.createDocument(Re,"template",null);try{it.documentElement.innerHTML=xe?C:rr}catch{}}let _r=it.body||it.documentElement;return Se&&xt&&_r.insertBefore(r.createTextNode(xt),_r.childNodes[0]||null),Re===K?N.call(it,De?"html":"body")[0]:De?it.documentElement:_r},"_initDocument"),et=o(function(Se){return E.call(Se.ownerDocument||Se,Se,h.SHOW_ELEMENT|h.SHOW_COMMENT|h.SHOW_TEXT|h.SHOW_PROCESSING_INSTRUCTION|h.SHOW_CDATA_SECTION,null)},"_createNodeIterator"),pe=o(function(Se){return Se instanceof f&&(typeof Se.nodeName!="string"||typeof Se.textContent!="string"||typeof Se.removeChild!="function"||!(Se.attributes instanceof d)||typeof Se.removeAttribute!="function"||typeof Se.setAttribute!="function"||typeof Se.namespaceURI!="string"||typeof Se.insertBefore!="function"||typeof Se.hasChildNodes!="function")},"_isClobbered"),Qe=o(function(Se){return typeof l=="function"&&Se instanceof l},"_isNode");function nt(pt,Se,it){nv(pt,xt=>{xt.call(t,Se,it,me)})}o(nt,"_executeHooks");let dt=o(function(Se){let it=null;if(nt(I.beforeSanitizeElements,Se,null),pe(Se))return oe(Se),!0;let xt=st(Se.nodeName);if(nt(I.uponSanitizeElement,Se,{tagName:xt,allowedTags:F}),ue&&Se.hasChildNodes()&&!Qe(Se.firstElementChild)&&Wa(/<[/\w!]/g,Se.innerHTML)&&Wa(/<[/\w!]/g,Se.textContent)||ue&&Se.namespaceURI===K&&xt==="style"&&Qe(Se.firstElementChild)||Se.nodeType===lv.progressingInstruction||ue&&Se.nodeType===lv.comment&&Wa(/<[/\w]/g,Se.data))return oe(Se),!0;if(Q[xt]||!(ae.tagCheck instanceof Function&&ae.tagCheck(xt))&&!F[xt]){if(!Q[xt]&&Rt(xt)&&(U.tagNameCheck instanceof RegExp&&Wa(U.tagNameCheck,xt)||U.tagNameCheck instanceof Function&&U.tagNameCheck(xt)))return!1;if(Fe&&!qe[xt]){let rr=T(Se)||Se.parentNode,_r=b(Se)||Se.childNodes;if(_r&&rr){let Ur=_r.length;for(let Dr=Ur-1;Dr>=0;--Dr){let Xi=y(_r[Dr],!0);Xi.__removalCount=(Se.__removalCount||0)+1,rr.insertBefore(Xi,x(Se))}}}return oe(Se),!0}return Se instanceof u&&!yt(Se)||(xt==="noscript"||xt==="noembed"||xt==="noframes")&&Wa(/<\/no(script|embed|frames)/i,Se.innerHTML)?(oe(Se),!0):(Te&&Se.nodeType===lv.text&&(it=Se.textContent,nv([D,_,R],rr=>{it=Mm(it,rr," ")}),Se.textContent!==it&&(av(t.removed,{element:Se.cloneNode()}),Se.textContent=it)),nt(I.afterSanitizeElements,Se,null),!1)},"_sanitizeElements"),Ft=o(function(Se,it,xt){if(Y[it]||de&&(it==="id"||it==="name")&&(xt in r||xt in ot))return!1;if(!(te&&!Y[it]&&Wa(M,it))){if(!(J&&Wa(L,it))){if(!(ae.attributeCheck instanceof Function&&ae.attributeCheck(it,Se))){if(!H[it]||Y[it]){if(!(Rt(Se)&&(U.tagNameCheck instanceof RegExp&&Wa(U.tagNameCheck,Se)||U.tagNameCheck instanceof Function&&U.tagNameCheck(Se))&&(U.attributeNameCheck instanceof RegExp&&Wa(U.attributeNameCheck,it)||U.attributeNameCheck instanceof Function&&U.attributeNameCheck(it,Se))||it==="is"&&U.allowCustomizedBuiltInElements&&(U.tagNameCheck instanceof RegExp&&Wa(U.tagNameCheck,xt)||U.tagNameCheck instanceof Function&&U.tagNameCheck(xt))))return!1}else if(!ie[it]){if(!Wa(G,Mm(xt,O,""))){if(!((it==="src"||it==="xlink:href"||it==="href")&&Se!=="script"&&HNe(xt,"data:")===0&&ye[Se])){if(!(re&&!Wa(B,Mm(xt,O,"")))){if(xt)return!1}}}}}}}return!0},"_isValidAttribute"),Rt=o(function(Se){return Se!=="annotation-xml"&&L7(Se,$)},"_isBasicCustomElement"),$t=o(function(Se){nt(I.beforeSanitizeAttributes,Se,null);let{attributes:it}=Se;if(!it||pe(Se))return;let xt={attrName:"",attrValue:"",keepAttr:!0,allowedAttributes:H,forceKeepAttr:void 0},rr=it.length;for(;rr--;){let _r=it[rr],{name:Ur,namespaceURI:Dr,value:Xi}=_r,In=st(Ur),pi=Xi,zt=Ur==="value"?pi:YNe(pi);if(xt.attrName=In,xt.attrValue=zt,xt.keepAttr=!0,xt.forceKeepAttr=void 0,nt(I.uponSanitizeAttribute,Se,xt),zt=xt.attrValue,rt&&(In==="id"||In==="name")&&(ht(Ur,Se),zt=ke+zt),ue&&Wa(/((--!?|])>)|<\/(style|script|title|xmp|textarea|noscript|iframe|noembed|noframes)/i,zt)){ht(Ur,Se);continue}if(In==="attributename"&&L7(zt,"href")){ht(Ur,Se);continue}if(xt.forceKeepAttr)continue;if(!xt.keepAttr){ht(Ur,Se);continue}if(!ee&&Wa(/\/>/i,zt)){ht(Ur,Se);continue}Te&&nv([D,_,R],qt=>{zt=Mm(zt,qt," ")});let Mt=st(Se.nodeName);if(!Ft(Mt,In,zt)){ht(Ur,Se);continue}if(w&&typeof m=="object"&&typeof m.getAttributeType=="function"&&!Dr)switch(m.getAttributeType(Mt,In)){case"TrustedHTML":{zt=w.createHTML(zt);break}case"TrustedScriptURL":{zt=w.createScriptURL(zt);break}}if(zt!==pi)try{Dr?Se.setAttributeNS(Dr,Ur,zt):Se.setAttribute(Ur,zt),pe(Se)?oe(Se):tY(t.removed)}catch{ht(Ur,Se)}}nt(I.afterSanitizeAttributes,Se,null)},"_sanitizeAttributes"),lr=o(function(Se){let it=null,xt=et(Se);for(nt(I.beforeSanitizeShadowDOM,Se,null);it=xt.nextNode();)nt(I.uponSanitizeShadowNode,it,null),dt(it),$t(it),it.content instanceof a&&lr(it.content);nt(I.afterSanitizeShadowDOM,Se,null)},"_sanitizeShadowDOM");return t.sanitize=function(pt){let Se=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},it=null,xt=null,rr=null,_r=null;if(xe=!pt,xe&&(pt="<!-->"),typeof pt!="string"&&!Qe(pt))if(typeof pt.toString=="function"){if(pt=pt.toString(),typeof pt!="string")throw sv("dirty is not a string, aborting")}else throw sv("toString is not a function");if(!t.isSupported)return pt;if(Ie||Gt(Se),t.removed=[],typeof pt=="string"&&(He=!1),He){if(pt.nodeName){let Xi=st(pt.nodeName);if(!F[Xi]||Q[Xi])throw sv("root node is forbidden and cannot be sanitized in-place")}}else if(pt instanceof l)it=gt("<!---->"),xt=it.ownerDocument.importNode(pt,!0),xt.nodeType===lv.element&&xt.nodeName==="BODY"||xt.nodeName==="HTML"?it=xt:it.appendChild(xt);else{if(!we&&!Te&&!De&&pt.indexOf("<")===-1)return w&&$e?w.createHTML(pt):pt;if(it=gt(pt),!it)return we?null:$e?C:""}it&&Ee&&oe(it.firstChild);let Ur=et(He?pt:it);for(;rr=Ur.nextNode();)dt(rr),$t(rr),rr.content instanceof a&&lr(rr.content);if(He)return pt;if(we){if(Te){it.normalize();let Xi=it.innerHTML;nv([D,_,R],In=>{Xi=Mm(Xi,In," ")}),it.innerHTML=Xi}if(Me)for(_r=A.call(it.ownerDocument);it.firstChild;)_r.appendChild(it.firstChild);else _r=it;return(H.shadowroot||H.shadowrootmode)&&(_r=P.call(i,_r,!0)),_r}let Dr=De?it.outerHTML:it.innerHTML;return De&&F["!doctype"]&&it.ownerDocument&&it.ownerDocument.doctype&&it.ownerDocument.doctype.name&&Wa(uY,it.ownerDocument.doctype.name)&&(Dr="<!DOCTYPE "+it.ownerDocument.doctype.name+`>
-`+Dr),Te&&nv([D,_,R],Xi=>{Dr=Mm(Dr,Xi," ")}),w&&$e?w.createHTML(Dr):Dr},t.setConfig=function(){let pt=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};Gt(pt),Ie=!0},t.clearConfig=function(){me=null,Ie=!1},t.isValidAttribute=function(pt,Se,it){me||Gt({});let xt=st(pt),rr=st(Se);return Ft(xt,rr,it)},t.addHook=function(pt,Se){typeof Se=="function"&&av(I[pt],Se)},t.removeHook=function(pt,Se){if(Se!==void 0){let it=qNe(I[pt],Se);return it===-1?void 0:UNe(I[pt],it,1)[0]}return tY(I[pt])},t.removeHooks=function(pt){I[pt]=[]},t.removeAllHooks=function(){I=oY()},t}var lY,eY,GNe,VNe,WNe,qa,Do,cv,P7,B7,nv,qNe,tY,av,UNe,BC,R7,L7,Mm,HNe,YNe,fl,Wa,sv,rY,M7,N7,KNe,I7,ZNe,iY,nY,O7,aY,PC,QNe,JNe,eIe,tIe,rIe,cY,iIe,nIe,uY,aIe,sY,lv,sIe,oIe,oY,Ro,uv=z(()=>{"use strict";({entries:lY,setPrototypeOf:eY,isFrozen:GNe,getPrototypeOf:VNe,getOwnPropertyDescriptor:WNe}=Object),{freeze:qa,seal:Do,create:cv}=Object,{apply:P7,construct:B7}=typeof Reflect<"u"&&Reflect;qa||(qa=o(function(t){return t},"freeze"));Do||(Do=o(function(t){return t},"seal"));P7||(P7=o(function(t,r){for(var i=arguments.length,n=new Array(i>2?i-2:0),a=2;a<i;a++)n[a-2]=arguments[a];return t.apply(r,n)},"apply"));B7||(B7=o(function(t){for(var r=arguments.length,i=new Array(r>1?r-1:0),n=1;n<r;n++)i[n-1]=arguments[n];return new t(...i)},"construct"));nv=Ua(Array.prototype.forEach),qNe=Ua(Array.prototype.lastIndexOf),tY=Ua(Array.prototype.pop),av=Ua(Array.prototype.push),UNe=Ua(Array.prototype.splice),BC=Ua(String.prototype.toLowerCase),R7=Ua(String.prototype.toString),L7=Ua(String.prototype.match),Mm=Ua(String.prototype.replace),HNe=Ua(String.prototype.indexOf),YNe=Ua(String.prototype.trim),fl=Ua(Object.prototype.hasOwnProperty),Wa=Ua(RegExp.prototype.test),sv=jNe(TypeError);o(Ua,"unapply");o(jNe,"unconstruct");o($r,"addToSet");o(XNe,"cleanArray");o(tc,"clone");o(ov,"lookupGetter");rY=qa(["a","abbr","acronym","address","area","article","aside","audio","b","bdi","bdo","big","blink","blockquote","body","br","button","canvas","caption","center","cite","code","col","colgroup","content","data","datalist","dd","decorator","del","details","dfn","dialog","dir","div","dl","dt","element","em","fieldset","figcaption","figure","font","footer","form","h1","h2","h3","h4","h5","h6","head","header","hgroup","hr","html","i","img","input","ins","kbd","label","legend","li","main","map","mark","marquee","menu","menuitem","meter","nav","nobr","ol","optgroup","option","output","p","picture","pre","progress","q","rp","rt","ruby","s","samp","search","section","select","shadow","slot","small","source","spacer","span","strike","strong","style","sub","summary","sup","table","tbody","td","template","textarea","tfoot","th","thead","time","tr","track","tt","u","ul","var","video","wbr"]),M7=qa(["svg","a","altglyph","altglyphdef","altglyphitem","animatecolor","animatemotion","animatetransform","circle","clippath","defs","desc","ellipse","enterkeyhint","exportparts","filter","font","g","glyph","glyphref","hkern","image","inputmode","line","lineargradient","marker","mask","metadata","mpath","part","path","pattern","polygon","polyline","radialgradient","rect","stop","style","switch","symbol","text","textpath","title","tref","tspan","view","vkern"]),N7=qa(["feBlend","feColorMatrix","feComponentTransfer","feComposite","feConvolveMatrix","feDiffuseLighting","feDisplacementMap","feDistantLight","feDropShadow","feFlood","feFuncA","feFuncB","feFuncG","feFuncR","feGaussianBlur","feImage","feMerge","feMergeNode","feMorphology","feOffset","fePointLight","feSpecularLighting","feSpotLight","feTile","feTurbulence"]),KNe=qa(["animate","color-profile","cursor","discard","font-face","font-face-format","font-face-name","font-face-src","font-face-uri","foreignobject","hatch","hatchpath","mesh","meshgradient","meshpatch","meshrow","missing-glyph","script","set","solidcolor","unknown","use"]),I7=qa(["math","menclose","merror","mfenced","mfrac","mglyph","mi","mlabeledtr","mmultiscripts","mn","mo","mover","mpadded","mphantom","mroot","mrow","ms","mspace","msqrt","mstyle","msub","msup","msubsup","mtable","mtd","mtext","mtr","munder","munderover","mprescripts"]),ZNe=qa(["maction","maligngroup","malignmark","mlongdiv","mscarries","mscarry","msgroup","mstack","msline","msrow","semantics","annotation","annotation-xml","mprescripts","none"]),iY=qa(["#text"]),nY=qa(["accept","action","align","alt","autocapitalize","autocomplete","autopictureinpicture","autoplay","background","bgcolor","border","capture","cellpadding","cellspacing","checked","cite","class","clear","color","cols","colspan","controls","controlslist","coords","crossorigin","datetime","decoding","default","dir","disabled","disablepictureinpicture","disableremoteplayback","download","draggable","enctype","enterkeyhint","exportparts","face","for","headers","height","hidden","high","href","hreflang","id","inert","inputmode","integrity","ismap","kind","label","lang","list","loading","loop","low","max","maxlength","media","method","min","minlength","multiple","muted","name","nonce","noshade","novalidate","nowrap","open","optimum","part","pattern","placeholder","playsinline","popover","popovertarget","popovertargetaction","poster","preload","pubdate","radiogroup","readonly","rel","required","rev","reversed","role","rows","rowspan","spellcheck","scope","selected","shape","size","sizes","slot","span","srclang","start","src","srcset","step","style","summary","tabindex","title","translate","type","usemap","valign","value","width","wrap","xmlns","slot"]),O7=qa(["accent-height","accumulate","additive","alignment-baseline","amplitude","ascent","attributename","attributetype","azimuth","basefrequency","baseline-shift","begin","bias","by","class","clip","clippathunits","clip-path","clip-rule","color","color-interpolation","color-interpolation-filters","color-profile","color-rendering","cx","cy","d","dx","dy","diffuseconstant","direction","display","divisor","dur","edgemode","elevation","end","exponent","fill","fill-opacity","fill-rule","filter","filterunits","flood-color","flood-opacity","font-family","font-size","font-size-adjust","font-stretch","font-style","font-variant","font-weight","fx","fy","g1","g2","glyph-name","glyphref","gradientunits","gradienttransform","height","href","id","image-rendering","in","in2","intercept","k","k1","k2","k3","k4","kerning","keypoints","keysplines","keytimes","lang","lengthadjust","letter-spacing","kernelmatrix","kernelunitlength","lighting-color","local","marker-end","marker-mid","marker-start","markerheight","markerunits","markerwidth","maskcontentunits","maskunits","max","mask","mask-type","media","method","mode","min","name","numoctaves","offset","operator","opacity","order","orient","orientation","origin","overflow","paint-order","path","pathlength","patterncontentunits","patterntransform","patternunits","points","preservealpha","preserveaspectratio","primitiveunits","r","rx","ry","radius","refx","refy","repeatcount","repeatdur","restart","result","rotate","scale","seed","shape-rendering","slope","specularconstant","specularexponent","spreadmethod","startoffset","stddeviation","stitchtiles","stop-color","stop-opacity","stroke-dasharray","stroke-dashoffset","stroke-linecap","stroke-linejoin","stroke-miterlimit","stroke-opacity","stroke","stroke-width","style","surfacescale","systemlanguage","tabindex","tablevalues","targetx","targety","transform","transform-origin","text-anchor","text-decoration","text-rendering","textlength","type","u1","u2","unicode","values","viewbox","visibility","version","vert-adv-y","vert-origin-x","vert-origin-y","width","word-spacing","wrap","writing-mode","xchannelselector","ychannelselector","x","x1","x2","xmlns","y","y1","y2","z","zoomandpan"]),aY=qa(["accent","accentunder","align","bevelled","close","columnalign","columnlines","columnspacing","columnspan","denomalign","depth","dir","display","displaystyle","encoding","fence","frame","height","href","id","largeop","length","linethickness","lquote","lspace","mathbackground","mathcolor","mathsize","mathvariant","maxsize","minsize","movablelimits","notation","numalign","open","rowalign","rowlines","rowspacing","rowspan","rspace","rquote","scriptlevel","scriptminsize","scriptsizemultiplier","selection","separator","separators","stretchy","subscriptshift","supscriptshift","symmetric","voffset","width","xmlns"]),PC=qa(["xlink:href","xml:id","xlink:title","xml:space","xmlns:xlink"]),QNe=Do(/\{\{[\w\W]*|[\w\W]*\}\}/gm),JNe=Do(/<%[\w\W]*|[\w\W]*%>/gm),eIe=Do(/\$\{[\w\W]*/gm),tIe=Do(/^data-[\-\w.\u00B7-\uFFFF]+$/),rIe=Do(/^aria-[\-\w]+$/),cY=Do(/^(?:(?:(?:f|ht)tps?|mailto|tel|callto|sms|cid|xmpp|matrix):|[^a-z]|[a-z+.\-]+(?:[^a-z+.\-:]|$))/i),iIe=Do(/^(?:\w+script|data):/i),nIe=Do(/[\u0000-\u0020\u00A0\u1680\u180E\u2000-\u2029\u205F\u3000]/g),uY=Do(/^html$/i),aIe=Do(/^[a-z][.\w]*(-[.\w]+)+$/i),sY=Object.freeze({__proto__:null,ARIA_ATTR:rIe,ATTR_WHITESPACE:nIe,CUSTOM_ELEMENT:aIe,DATA_ATTR:tIe,DOCTYPE_NAME:uY,ERB_EXPR:JNe,IS_ALLOWED_URI:cY,IS_SCRIPT_OR_DATA:iIe,MUSTACHE_EXPR:QNe,TMPLIT_EXPR:eIe}),lv={element:1,text:3,progressingInstruction:7,comment:8,document:9},sIe=o(function(){return typeof window>"u"?null:window},"getGlobal"),oIe=o(function(t,r){if(typeof t!="object"||typeof t.createPolicy!="function")return null;let i=null,n="data-tt-policy-suffix";r&&r.hasAttribute(n)&&(i=r.getAttribute(n));let a="dompurify"+(i?"#"+i:"");try{return t.createPolicy(a,{createHTML(s){return s},createScriptURL(s){return s}})}catch{return console.warn("TrustedTypes policy "+a+" could not be created."),null}},"_createTrustedTypesPolicy"),oY=o(function(){return{afterSanitizeAttributes:[],afterSanitizeElements:[],afterSanitizeShadowDOM:[],beforeSanitizeAttributes:[],beforeSanitizeElements:[],beforeSanitizeShadowDOM:[],uponSanitizeAttribute:[],uponSanitizeElement:[],uponSanitizeShadowNode:[]}},"_createHooksMap");o(hY,"createDOMPurify");Ro=hY()});var Wj={};xr(Wj,{ParseError:()=>Lt,SETTINGS_SCHEMA:()=>pv,__defineFunction:()=>Bt,__defineMacro:()=>he,__defineSymbol:()=>q,__domTree:()=>Vj,__parse:()=>Fj,__renderToDomTree:()=>uk,__renderToHTMLTree:()=>zj,__setFontMetrics:()=>UY,default:()=>Z9e,render:()=>ED,renderToString:()=>Bj,version:()=>Gj});function fIe(e){return String(e).replace(dIe,t=>hIe[t])}function yIe(e){if(e.default)return e.default;var t=e.type,r=Array.isArray(t)?t[0]:t;if(typeof r!="string")return r.enum[0];switch(r){case"boolean":return!1;case"string":return"";case"number":return 0;case"object":return{}}}function wIe(e){for(var t=0;t<Z7.length;t++)for(var r=Z7[t],i=0;i<r.blocks.length;i++){var n=r.blocks[i];if(e>=n[0]&&e<=n[1])return r.name}return null}function qY(e){for(var t=0;t<XC.length;t+=2)if(e>=XC[t]&&e<=XC[t+1])return!0;return!1}function UY(e,t){nc[e]=t}function uD(e,t,r){if(!nc[t])throw new Error("Font metrics not found for font: "+t+".");var i=e.charCodeAt(0),n=nc[t][i];if(!n&&e[0]in fY&&(i=fY[e[0]].charCodeAt(0),n=nc[t][i]),!n&&r==="text"&&qY(i)&&(n=nc[t][77]),n)return{depth:n[0],height:n[1],italic:n[2],skew:n[3],width:n[4]}}function OIe(e){var t;if(e>=5?t=0:e>=3?t=1:t=2,!F7[t]){var r=F7[t]={cssEmPerMu:FC.quad[t]/18};for(var i in FC)FC.hasOwnProperty(i)&&(r[i]=FC[i][t])}return F7[t]}function gY(e){if(e instanceof Ts)return e;throw new Error("Expected symbolNode but got "+String(e)+".")}function zIe(e){if(e instanceof Wf)return e;throw new Error("Expected span<HtmlDomNode> but got "+String(e)+".")}function q(e,t,r,i,n,a){_i[e][n]={font:t,group:r,replace:i},a&&i&&(_i[e][i]=_i[e][n])}function Bt(e){for(var{type:t,names:r,props:i,handler:n,htmlBuilder:a,mathmlBuilder:s}=e,l={type:t,numArgs:i.numArgs,argTypes:i.argTypes,allowedInArgument:!!i.allowedInArgument,allowedInText:!!i.allowedInText,allowedInMath:i.allowedInMath===void 0?!0:i.allowedInMath,numOptionalArgs:i.numOptionalArgs||0,infix:!!i.infix,primitive:!!i.primitive,handler:n},u=0;u<r.length;++u)tj[r[u]]=l;t&&(a&&(JC[t]=a),s&&(ek[t]=s))}function qf(e){var{type:t,htmlBuilder:r,mathmlBuilder:i}=e;Bt({type:t,names:[],props:{numArgs:0},handler(){throw new Error("Should never be called.")},htmlBuilder:r,mathmlBuilder:i})}function UC(e,t){var r=bu(["base"],e,t),i=bu(["strut"]);return i.style.height=It(r.height+r.depth),r.depth&&(i.style.verticalAlign=It(-r.depth)),r.children.unshift(i),r}function rD(e,t){var r=null;e.length===1&&e[0].type==="tag"&&(r=e[0].tag,e=e[0].body);var i=Fn(e,t,"root"),n;i.length===2&&i[1].hasClass("tag")&&(n=i.pop());for(var a=[],s=[],l=0;l<i.length;l++)if(s.push(i[l]),i[l].hasClass("mbin")||i[l].hasClass("mrel")||i[l].hasClass("allowbreak")){for(var u=!1;l<i.length-1&&i[l+1].hasClass("mspace")&&!i[l+1].hasClass("newline");)l++,s.push(i[l]),i[l].hasClass("nobreak")&&(u=!0);u||(a.push(UC(s,t)),s=[])}else i[l].hasClass("newline")&&(s.pop(),s.length>0&&(a.push(UC(s,t)),s=[]),a.push(i[l]));s.length>0&&a.push(UC(s,t));var h;r?(h=UC(Fn(r,t,!0)),h.classes=["tag"],a.push(h)):n&&a.push(n);var d=bu(["katex-html"],a);if(d.setAttribute("aria-hidden","true"),h){var f=h.children[0];f.style.height=It(d.height+d.depth),d.depth&&(f.style.verticalAlign=It(-d.depth))}return d}function ij(e){return new Vf(e)}function G7(e){if(!e)return!1;if(e.type==="mi"&&e.children.length===1){var t=e.children[0];return t instanceof Mo&&t.text==="."}else if(e.type==="mo"&&e.children.length===1&&e.getAttribute("separator")==="true"&&e.getAttribute("lspace")==="0em"&&e.getAttribute("rspace")==="0em"){var r=e.children[0];return r instanceof Mo&&r.text===","}else return!1}function TY(e,t,r,i,n){var a=Cs(e,r),s;a.length===1&&a[0]instanceof Ha&&["mrow","mtable"].includes(a[0].type)?s=a[0]:s=new Dt.MathNode("mrow",a);var l=new Dt.MathNode("annotation",[new Dt.TextNode(t)]);l.setAttribute("encoding","application/x-tex");var u=new Dt.MathNode("semantics",[s,l]),h=new Dt.MathNode("math",[u]);h.setAttribute("xmlns","http://www.w3.org/1998/Math/MathML"),i&&h.setAttribute("display","block");var d=n?"katex":"katex-mathml";return Ke.makeSpan([d],[h])}function Nr(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 pD(e){var t=sk(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 sk(e){return e&&(e.type==="atom"||VIe.hasOwnProperty(e.type))?e:null}function oj(e,t){var r=Fn(e.body,t,!0);return v9e([e.mclass],r,t)}function lj(e,t){var r,i=Cs(e.body,t);return e.mclass==="minner"?r=new Dt.MathNode("mpadded",i):e.mclass==="mord"?e.isCharacterBox?(r=i[0],r.type="mi"):r=new Dt.MathNode("mi",i):(e.isCharacterBox?(r=i[0],r.type="mo"):r=new Dt.MathNode("mo",i),e.mclass==="mbin"?(r.attributes.lspace="0.22em",r.attributes.rspace="0.22em"):e.mclass==="mpunct"?(r.attributes.lspace="0em",r.attributes.rspace="0.17em"):e.mclass==="mopen"||e.mclass==="mclose"?(r.attributes.lspace="0em",r.attributes.rspace="0em"):e.mclass==="minner"&&(r.attributes.lspace="0.0556em",r.attributes.width="+0.1111em")),r}function T9e(e,t,r){var i=x9e[e];switch(i){case"\\\\cdrightarrow":case"\\\\cdleftarrow":return r.callFunction(i,[t[0]],[t[1]]);case"\\uparrow":case"\\downarrow":{var n=r.callFunction("\\\\cdleft",[t[0]],[]),a={type:"atom",text:i,mode:"math",family:"rel"},s=r.callFunction("\\Big",[a],[]),l=r.callFunction("\\\\cdright",[t[1]],[]),u={type:"ordgroup",mode:"math",body:[n,s,l]};return r.callFunction("\\\\cdparent",[u],[])}case"\\\\cdlongequal":return r.callFunction("\\\\cdlongequal",[],[]);case"\\Vert":{var h={type:"textord",text:"\\Vert",mode:"math"};return r.callFunction("\\Big",[h],[])}default:return{type:"textord",text:" ",mode:"math"}}}function C9e(e){var t=[];for(e.gullet.beginGroup(),e.gullet.macros.set("\\cr","\\\\\\relax"),e.gullet.beginGroup();;){t.push(e.parseExpression(!1,"\\\\")),e.gullet.endGroup(),e.gullet.beginGroup();var r=e.fetch().text;if(r==="&"||r==="\\\\")e.consume();else if(r==="\\end"){t[t.length-1].length===0&&t.pop();break}else throw new Lt("Expected \\\\ or \\cr or \\end",e.nextToken)}for(var i=[],n=[i],a=0;a<t.length;a++){for(var s=t[a],l=CY(),u=0;u<s.length;u++)if(!kY(s[u]))l.body.push(s[u]);else{i.push(l),u+=1;var h=pD(s[u]).text,d=new Array(2);if(d[0]={type:"ordgroup",mode:"math",body:[]},d[1]={type:"ordgroup",mode:"math",body:[]},!("=|.".indexOf(h)>-1))if("<>AV".indexOf(h)>-1)for(var f=0;f<2;f++){for(var p=!0,m=u+1;m<s.length;m++){if(b9e(s[m],h)){p=!1,u=m;break}if(kY(s[m]))throw new Lt("Missing a "+h+" character to complete a CD arrow.",s[m]);d[f].body.push(s[m])}if(p)throw new Lt("Missing a "+h+" character to complete a CD arrow.",s[u])}else throw new Lt('Expected one of "<>AV=|." after @',s[u]);var g=T9e(h,d,e),y={type:"styling",body:[g],mode:"math",style:"display"};i.push(y),l=CY()}a%2===0?i.push(l):i.shift(),i=[],n.push(i)}e.gullet.endGroup(),e.gullet.endGroup();var v=new Array(n[0].length).fill({type:"align",align:"c",pregap:.25,postgap:.25});return{type:"array",mode:"math",body:n,arraystretch:1,addJot:!0,rowGaps:[null],cols:v,colSeparationType:"CD",hLinesBeforeRow:new Array(n.length+1).fill([])}}function lk(e,t){var r=sk(e);if(r&&O9e.includes(r.text))return r;throw r?new Lt("Invalid delimiter '"+r.text+"' after '"+t.funcName+"'",e):new Lt("Invalid delimiter type '"+e.type+"'",e)}function SY(e){if(!e.body)throw new Error("Bug: The leftright ParseNode wasn't fully parsed.")}function sc(e){for(var{type:t,names:r,props:i,handler:n,htmlBuilder:a,mathmlBuilder:s}=e,l={type:t,numArgs:i.numArgs||0,allowedInText:!1,numOptionalArgs:0,handler:n},u=0;u<r.length;++u)Tj[r[u]]=l;a&&(JC[t]=a),s&&(ek[t]=s)}function he(e,t){Cj[e]=t}function EY(e){var t=[];e.consumeSpaces();var r=e.fetch().text;for(r==="\\relax"&&(e.consume(),e.consumeSpaces(),r=e.fetch().text);r==="\\hline"||r==="\\hdashline";)e.consume(),t.push(r==="\\hdashline"),e.consumeSpaces(),r=e.fetch().text;return t}function xD(e){if(e.indexOf("ed")===-1)return e.indexOf("*")===-1}function Gh(e,t,r){var{hskipBeforeAndAfter:i,addJot:n,cols:a,arraystretch:s,colSeparationType:l,autoTag:u,singleRow:h,emptySingleRow:d,maxNumCols:f,leqno:p}=t;if(e.gullet.beginGroup(),h||e.gullet.macros.set("\\cr","\\\\\\relax"),!s){var m=e.gullet.expandMacroAsText("\\arraystretch");if(m==null)s=1;else if(s=parseFloat(m),!s||s<0)throw new Lt("Invalid \\arraystretch: "+m)}e.gullet.beginGroup();var g=[],y=[g],v=[],x=[],b=u!=null?[]:void 0;function T(){u&&e.gullet.macros.set("\\@eqnsw","1",!0)}o(T,"beginRow");function w(){b&&(e.gullet.macros.get("\\df@tag")?(b.push(e.subparse([new eo("\\df@tag")])),e.gullet.macros.set("\\df@tag",void 0,!0)):b.push(!!u&&e.gullet.macros.get("\\@eqnsw")==="1"))}for(o(w,"endRow"),T(),x.push(EY(e));;){var C=e.parseExpression(!1,h?"\\end":"\\\\");e.gullet.endGroup(),e.gullet.beginGroup(),C={type:"ordgroup",mode:e.mode,body:C},r&&(C={type:"styling",mode:e.mode,style:r,body:[C]}),g.push(C);var k=e.fetch().text;if(k==="&"){if(f&&g.length===f){if(h||l)throw new Lt("Too many tab characters: &",e.nextToken);e.settings.reportNonstrict("textEnv","Too few columns specified in the {array} column argument.")}e.consume()}else if(k==="\\end"){w(),g.length===1&&C.type==="styling"&&C.body[0].body.length===0&&(y.length>1||!d)&&y.pop(),x.length<y.length+1&&x.push([]);break}else if(k==="\\\\"){e.consume();var E=void 0;e.gullet.future().text!==" "&&(E=e.parseSizeGroup(!0)),v.push(E?E.value:null),w(),x.push(EY(e)),g=[],y.push(g),T()}else throw new Lt("Expected & or \\\\ or \\cr or \\end",e.nextToken)}return e.gullet.endGroup(),e.gullet.endGroup(),{type:"array",mode:e.mode,addJot:n,arraystretch:s,body:y,cols:a,rowGaps:v,hskipBeforeAndAfter:i,hLinesBeforeRow:x,colSeparationType:l,tags:b,leqno:p}}function bD(e){return e.slice(0,1)==="d"?"display":"text"}function Lj(e,t,r){for(var i=Fn(e,t,!1),n=t.sizeMultiplier/r.sizeMultiplier,a=0;a<i.length;a++){var s=i[a].classes.indexOf("sizing");s<0?Array.prototype.push.apply(i[a].classes,t.sizingClasses(r)):i[a].classes[s+1]==="reset-size"+t.size&&(i[a].classes[s+1]="reset-size"+r.size),i[a].height*=n,i[a].depth*=n}return Ke.makeFragment(i)}var bs,eo,Lt,lIe,cIe,uIe,hIe,dIe,WY,pIe,mIe,gIe,Zr,pv,gv,rc,cD,KC,Im,vu,yv,Lo,Om,Ya,ic,vIe,xIe,bIe,TIe,CIe,kIe,ur,Z7,XC,Nm,SIe,EIe,AIe,_Ie,DIe,RIe,LIe,MIe,NIe,dY,IIe,Vf,nc,FC,fY,F7,PIe,pY,mY,ZC,Q7,BIe,HY,Qi,It,$h,YY,jY,FIe,XY,Wf,vv,J7,$Ie,Ts,ml,ac,xv,GIe,VIe,_i,X,wt,se,Le,qi,Vt,ja,Pm,cr,Sn,to,nk,Ne,Cu,ze,KY,yY,$7,$C,vY,z7,zC,QC,hv,GC,Tr,Ki,_a,gu,Bh,eD,dv,VC,WC,xY,WIe,ak,pl,qIe,UIe,HIe,YIe,jIe,hD,xs,ZY,XIe,KIe,QY,ZIe,QIe,JIe,e9e,qC,JY,ej,t9e,Ke,Zi,Gf,yu,r9e,i9e,tj,JC,ek,tk,gn,bu,n9e,a9e,s9e,o9e,Fn,bY,rj,l9e,tD,bv,Yr,Ha,Mo,iD,Dt,No,dD,fD,Cs,zh,Ti,nj,aj,c9e,u9e,h9e,d9e,f9e,p9e,m9e,g9e,Tu,mD,sj,y9e,HC,v9e,ok,x9e,CY,kY,b9e,cj,uj,nD,hj,k9e,dj,fv,gD,fj,w9e,S9e,pj,V7,W7,aD,YC,E9e,A9e,mj,q7,U7,H7,_9e,gj,D9e,yj,mv,R9e,L9e,M9e,vj,N9e,xj,bj,I9e,xu,wY,O9e,yD,vD,Tj,Cj,ck,oc,P9e,lc,kj,AY,wj,Sj,_Y,Ej,TD,CD,DY,RY,Aj,B9e,Y7,LY,_j,Dj,Bm,Tv,F9e,$9e,Rj,z9e,MY,G9e,NY,V9e,Mj,j7,X7,IY,OY,PY,W9e,BY,FY,Fh,Nj,q9e,U9e,H9e,Y9e,sD,j9e,X9e,rk,oD,K9e,$Y,kD,zY,wD,Ij,Oj,Pj,lD,GY,jC,K7,VY,ik,SD,ED,Bj,Fj,$j,uk,zj,Gj,Vj,Z9e,qj=z(()=>{"use strict";bs=class e{static{o(this,"SourceLocation")}constructor(t,r,i){this.lexer=void 0,this.start=void 0,this.end=void 0,this.lexer=t,this.start=r,this.end=i}static range(t,r){return r?!t||!t.loc||!r.loc||t.loc.lexer!==r.loc.lexer?null:new e(t.loc.lexer,t.loc.start,r.loc.end):t&&t.loc}},eo=class e{static{o(this,"Token")}constructor(t,r){this.text=void 0,this.loc=void 0,this.noexpand=void 0,this.treatAsRelax=void 0,this.text=t,this.loc=r}range(t,r){return new e(r,bs.range(this,t))}},Lt=class e{static{o(this,"ParseError")}constructor(t,r){this.name=void 0,this.position=void 0,this.length=void 0,this.rawMessage=void 0;var i="KaTeX parse error: "+t,n,a,s=r&&r.loc;if(s&&s.start<=s.end){var l=s.lexer.input;n=s.start,a=s.end,n===l.length?i+=" at end of input: ":i+=" at position "+(n+1)+": ";var u=l.slice(n,a).replace(/[^]/g,"$&\u0332"),h;n>15?h="\u2026"+l.slice(n-15,n):h=l.slice(0,n);var d;a+15<l.length?d=l.slice(a,a+15)+"\u2026":d=l.slice(a),i+=h+u+d}var f=new Error(i);return f.name="ParseError",f.__proto__=e.prototype,f.position=n,n!=null&&a!=null&&(f.length=a-n),f.rawMessage=t,f}};Lt.prototype.__proto__=Error.prototype;lIe=o(function(t,r){return t===void 0?r:t},"deflt"),cIe=/([A-Z])/g,uIe=o(function(t){return t.replace(cIe,"-$1").toLowerCase()},"hyphenate"),hIe={"&":"&amp;",">":"&gt;","<":"&lt;",'"':"&quot;","'":"&#x27;"},dIe=/[&><"']/g;o(fIe,"escape");WY=o(function e(t){return t.type==="ordgroup"||t.type==="color"?t.body.length===1?e(t.body[0]):t:t.type==="font"?e(t.body):t},"getBaseElem"),pIe=o(function(t){var r=WY(t);return r.type==="mathord"||r.type==="textord"||r.type==="atom"},"isCharacterBox"),mIe=o(function(t){if(!t)throw new Error("Expected non-null, but got "+String(t));return t},"assert"),gIe=o(function(t){var r=/^[\x00-\x20]*([^\\/#?]*?)(:|&#0*58|&#x0*3a|&colon)/i.exec(t);return r?r[2]!==":"||!/^[a-zA-Z][a-zA-Z0-9+\-.]*$/.test(r[1])?null:r[1].toLowerCase():"_relative"},"protocolFromUrl"),Zr={deflt:lIe,escape:fIe,hyphenate:uIe,getBaseElem:WY,isCharacterBox:pIe,protocolFromUrl:gIe},pv={displayMode:{type:"boolean",description:"Render math in display mode, which puts the math in display style (so \\int and \\sum are large, for example), and centers the math on the page on its own line.",cli:"-d, --display-mode"},output:{type:{enum:["htmlAndMathml","html","mathml"]},description:"Determines the markup language of the output.",cli:"-F, --format <type>"},leqno:{type:"boolean",description:"Render display math in leqno style (left-justified tags)."},fleqn:{type:"boolean",description:"Render display math flush left."},throwOnError:{type:"boolean",default:!0,cli:"-t, --no-throw-on-error",cliDescription:"Render errors (in the color given by --error-color) instead of throwing a ParseError exception when encountering an error."},errorColor:{type:"string",default:"#cc0000",cli:"-c, --error-color <color>",cliDescription:"A color string given in the format 'rgb' or 'rrggbb' (no #). This option determines the color of errors rendered by the -t option.",cliProcessor:o(e=>"#"+e,"cliProcessor")},macros:{type:"object",cli:"-m, --macro <def>",cliDescription:"Define custom macro of the form '\\foo:expansion' (use multiple -m arguments for multiple macros).",cliDefault:[],cliProcessor:o((e,t)=>(t.push(e),t),"cliProcessor")},minRuleThickness:{type:"number",description:"Specifies a minimum thickness, in ems, for fraction lines, `\\sqrt` top lines, `{array}` vertical lines, `\\hline`, `\\hdashline`, `\\underline`, `\\overline`, and the borders of `\\fbox`, `\\boxed`, and `\\fcolorbox`.",processor:o(e=>Math.max(0,e),"processor"),cli:"--min-rule-thickness <size>",cliProcessor:parseFloat},colorIsTextColor:{type:"boolean",description:"Makes \\color behave like LaTeX's 2-argument \\textcolor, instead of LaTeX's one-argument \\color mode change.",cli:"-b, --color-is-text-color"},strict:{type:[{enum:["warn","ignore","error"]},"boolean","function"],description:"Turn on strict / LaTeX faithfulness mode, which throws an error if the input uses features that are not supported by LaTeX.",cli:"-S, --strict",cliDefault:!1},trust:{type:["boolean","function"],description:"Trust the input, enabling all HTML features such as \\url.",cli:"-T, --trust"},maxSize:{type:"number",default:1/0,description:"If non-zero, all user-specified sizes, e.g. in \\rule{500em}{500em}, will be capped to maxSize ems. Otherwise, elements and spaces can be arbitrarily large",processor:o(e=>Math.max(0,e),"processor"),cli:"-s, --max-size <n>",cliProcessor:parseInt},maxExpand:{type:"number",default:1e3,description:"Limit the number of macro expansions to the specified number, to prevent e.g. infinite macro loops. If set to Infinity, the macro expander will try to fully expand as in LaTeX.",processor:o(e=>Math.max(0,e),"processor"),cli:"-e, --max-expand <n>",cliProcessor:o(e=>e==="Infinity"?1/0:parseInt(e),"cliProcessor")},globalGroup:{type:"boolean",cli:!1}};o(yIe,"getDefaultValue");gv=class{static{o(this,"Settings")}constructor(t){this.displayMode=void 0,this.output=void 0,this.leqno=void 0,this.fleqn=void 0,this.throwOnError=void 0,this.errorColor=void 0,this.macros=void 0,this.minRuleThickness=void 0,this.colorIsTextColor=void 0,this.strict=void 0,this.trust=void 0,this.maxSize=void 0,this.maxExpand=void 0,this.globalGroup=void 0,t=t||{};for(var r in pv)if(pv.hasOwnProperty(r)){var i=pv[r];this[r]=t[r]!==void 0?i.processor?i.processor(t[r]):t[r]:yIe(i)}}reportNonstrict(t,r,i){var n=this.strict;if(typeof n=="function"&&(n=n(t,r,i)),!(!n||n==="ignore")){if(n===!0||n==="error")throw new Lt("LaTeX-incompatible input and strict mode is set to 'error': "+(r+" ["+t+"]"),i);n==="warn"?typeof console<"u"&&console.warn("LaTeX-incompatible input and strict mode is set to 'warn': "+(r+" ["+t+"]")):typeof console<"u"&&console.warn("LaTeX-incompatible input and strict mode is set to "+("unrecognized '"+n+"': "+r+" ["+t+"]"))}}useStrictBehavior(t,r,i){var n=this.strict;if(typeof n=="function")try{n=n(t,r,i)}catch{n="error"}return!n||n==="ignore"?!1:n===!0||n==="error"?!0:n==="warn"?(typeof console<"u"&&console.warn("LaTeX-incompatible input and strict mode is set to 'warn': "+(r+" ["+t+"]")),!1):(typeof console<"u"&&console.warn("LaTeX-incompatible input and strict mode is set to "+("unrecognized '"+n+"': "+r+" ["+t+"]")),!1)}isTrusted(t){if(t.url&&!t.protocol){var r=Zr.protocolFromUrl(t.url);if(r==null)return!1;t.protocol=r}var i=typeof this.trust=="function"?this.trust(t):this.trust;return!!i}},rc=class{static{o(this,"Style")}constructor(t,r,i){this.id=void 0,this.size=void 0,this.cramped=void 0,this.id=t,this.size=r,this.cramped=i}sup(){return ic[vIe[this.id]]}sub(){return ic[xIe[this.id]]}fracNum(){return ic[bIe[this.id]]}fracDen(){return ic[TIe[this.id]]}cramp(){return ic[CIe[this.id]]}text(){return ic[kIe[this.id]]}isTight(){return this.size>=2}},cD=0,KC=1,Im=2,vu=3,yv=4,Lo=5,Om=6,Ya=7,ic=[new rc(cD,0,!1),new rc(KC,0,!0),new rc(Im,1,!1),new rc(vu,1,!0),new rc(yv,2,!1),new rc(Lo,2,!0),new rc(Om,3,!1),new rc(Ya,3,!0)],vIe=[yv,Lo,yv,Lo,Om,Ya,Om,Ya],xIe=[Lo,Lo,Lo,Lo,Ya,Ya,Ya,Ya],bIe=[Im,vu,yv,Lo,Om,Ya,Om,Ya],TIe=[vu,vu,Lo,Lo,Ya,Ya,Ya,Ya],CIe=[KC,KC,vu,vu,Lo,Lo,Ya,Ya],kIe=[cD,KC,Im,vu,Im,vu,Im,vu],ur={DISPLAY:ic[cD],TEXT:ic[Im],SCRIPT:ic[yv],SCRIPTSCRIPT:ic[Om]},Z7=[{name:"latin",blocks:[[256,591],[768,879]]},{name:"cyrillic",blocks:[[1024,1279]]},{name:"armenian",blocks:[[1328,1423]]},{name:"brahmic",blocks:[[2304,4255]]},{name:"georgian",blocks:[[4256,4351]]},{name:"cjk",blocks:[[12288,12543],[19968,40879],[65280,65376]]},{name:"hangul",blocks:[[44032,55215]]}];o(wIe,"scriptFromCodepoint");XC=[];Z7.forEach(e=>e.blocks.forEach(t=>XC.push(...t)));o(qY,"supportedCodepoint");Nm=80,SIe=o(function(t,r){return"M95,"+(622+t+r)+`
+"use strict";var __esbuild_esm_mermaid_nm;(__esbuild_esm_mermaid_nm||={}).mermaid=(()=>{var ize=Object.create;var Ox=Object.defineProperty;var aze=Object.getOwnPropertyDescriptor;var sze=Object.getOwnPropertyNames;var oze=Object.getPrototypeOf,lze=Object.prototype.hasOwnProperty;var o=(e,t)=>Ox(e,"name",{value:t,configurable:!0});var F=(e,t)=>()=>(e&&(t=e(e=0)),t);var Io=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports),ir=(e,t)=>{for(var r in t)Ox(e,r,{get:t[r],enumerable:!0})},BX=(e,t,r,n)=>{if(t&&typeof t=="object"||typeof t=="function")for(let i of sze(t))!lze.call(e,i)&&i!==r&&Ox(e,i,{get:()=>t[i],enumerable:!(n=aze(t,i))||n.enumerable});return e};var Xs=(e,t,r)=>(r=e!=null?ize(oze(e)):{},BX(t||!e||!e.__esModule?Ox(r,"default",{value:e,enumerable:!0}):r,e)),cze=e=>BX(Ox({},"__esModule",{value:!0}),e);var uze,z0,ID,$X,gk=F(()=>{"use strict";uze=Object.freeze({left:0,top:0,width:16,height:16}),z0=Object.freeze({rotate:0,vFlip:!1,hFlip:!1}),ID=Object.freeze({...uze,...z0}),$X=Object.freeze({...ID,body:"",hidden:!1})});var hze,FX,zX=F(()=>{"use strict";gk();hze=Object.freeze({width:null,height:null}),FX=Object.freeze({...hze,...z0})});var MD,yk,GX=F(()=>{"use strict";MD=o((e,t,r,n="")=>{let i=e.split(":");if(e.slice(0,1)==="@"){if(i.length<2||i.length>3)return null;n=i.shift().slice(1)}if(i.length>3||!i.length)return null;if(i.length>1){let l=i.pop(),u=i.pop(),h={provider:i.length>0?i[0]:n,prefix:u,name:l};return t&&!yk(h)?null:h}let a=i[0],s=a.split("-");if(s.length>1){let l={provider:n,prefix:s.shift(),name:s.join("-")};return t&&!yk(l)?null:l}if(r&&n===""){let l={provider:n,prefix:"",name:a};return t&&!yk(l,r)?null:l}return null},"stringToIcon"),yk=o((e,t)=>e?!!((t&&e.prefix===""||e.prefix)&&e.name):!1,"validateIconName")});function VX(e,t){let r={};!e.hFlip!=!t.hFlip&&(r.hFlip=!0),!e.vFlip!=!t.vFlip&&(r.vFlip=!0);let n=((e.rotate||0)+(t.rotate||0))%4;return n&&(r.rotate=n),r}var WX=F(()=>{"use strict";o(VX,"mergeIconTransformations")});function ND(e,t){let r=VX(e,t);for(let n in $X)n in z0?n in e&&!(n in r)&&(r[n]=z0[n]):n in t?r[n]=t[n]:n in e&&(r[n]=e[n]);return r}var qX=F(()=>{"use strict";gk();WX();o(ND,"mergeIconData")});function HX(e,t){let r=e.icons,n=e.aliases||Object.create(null),i=Object.create(null);function a(s){if(r[s])return i[s]=[];if(!(s in i)){i[s]=null;let l=n[s]&&n[s].parent,u=l&&a(l);u&&(i[s]=[l].concat(u))}return i[s]}return o(a,"resolve"),(t||Object.keys(r).concat(Object.keys(n))).forEach(a),i}var UX=F(()=>{"use strict";o(HX,"getIconsTree")});function YX(e,t,r){let n=e.icons,i=e.aliases||Object.create(null),a={};function s(l){a=ND(n[l]||i[l],a)}return o(s,"parse"),s(t),r.forEach(s),ND(e,a)}function PD(e,t){if(e.icons[t])return YX(e,t,[]);let r=HX(e,[t])[t];return r?YX(e,t,r):null}var jX=F(()=>{"use strict";qX();UX();o(YX,"internalGetIconData");o(PD,"getIconData")});function OD(e,t,r){if(t===1)return e;if(r=r||100,typeof e=="number")return Math.ceil(e*t*r)/r;if(typeof e!="string")return e;let n=e.split(dze);if(n===null||!n.length)return e;let i=[],a=n.shift(),s=fze.test(a);for(;;){if(s){let l=parseFloat(a);isNaN(l)?i.push(a):i.push(Math.ceil(l*t*r)/r)}else i.push(a);if(a=n.shift(),a===void 0)return i.join("");s=!s}}var dze,fze,XX=F(()=>{"use strict";dze=/(-?[0-9.]*[0-9]+[0-9.]*)/g,fze=/^-?[0-9.]*[0-9]+[0-9.]*$/g;o(OD,"calculateSize")});function pze(e,t="defs"){let r="",n=e.indexOf("<"+t);for(;n>=0;){let i=e.indexOf(">",n),a=e.indexOf("</"+t);if(i===-1||a===-1)break;let s=e.indexOf(">",a);if(s===-1)break;r+=e.slice(i+1,a).trim(),e=e.slice(0,n).trim()+e.slice(s+1)}return{defs:r,content:e}}function mze(e,t){return e?"<defs>"+e+"</defs>"+t:t}function KX(e,t,r){let n=pze(e);return mze(n.defs,t+n.content+r)}var ZX=F(()=>{"use strict";o(pze,"splitSVGDefs");o(mze,"mergeDefsAndContent");o(KX,"wrapSVGContent")});function BD(e,t){let r={...ID,...e},n={...FX,...t},i={left:r.left,top:r.top,width:r.width,height:r.height},a=r.body;[r,n].forEach(y=>{let v=[],x=y.hFlip,b=y.vFlip,T=y.rotate;x?b?T+=2:(v.push("translate("+(i.width+i.left).toString()+" "+(0-i.top).toString()+")"),v.push("scale(-1 1)"),i.top=i.left=0):b&&(v.push("translate("+(0-i.left).toString()+" "+(i.height+i.top).toString()+")"),v.push("scale(1 -1)"),i.top=i.left=0);let k;switch(T<0&&(T-=Math.floor(T/4)*4),T=T%4,T){case 1:k=i.height/2+i.top,v.unshift("rotate(90 "+k.toString()+" "+k.toString()+")");break;case 2:v.unshift("rotate(180 "+(i.width/2+i.left).toString()+" "+(i.height/2+i.top).toString()+")");break;case 3:k=i.width/2+i.left,v.unshift("rotate(-90 "+k.toString()+" "+k.toString()+")");break}T%2===1&&(i.left!==i.top&&(k=i.left,i.left=i.top,i.top=k),i.width!==i.height&&(k=i.width,i.width=i.height,i.height=k)),v.length&&(a=KX(a,'<g transform="'+v.join(" ")+'">',"</g>"))});let s=n.width,l=n.height,u=i.width,h=i.height,d,f;s===null?(f=l===null?"1em":l==="auto"?h:l,d=OD(f,u/h)):(d=s==="auto"?u:s,f=l===null?OD(d,h/u):l==="auto"?h:l);let p={},m=o((y,v)=>{gze(v)||(p[y]=v.toString())},"setAttr");m("width",d),m("height",f);let g=[i.left,i.top,u,h];return p.viewBox=g.join(" "),{attributes:p,viewBox:g,body:a}}var gze,QX=F(()=>{"use strict";gk();zX();XX();ZX();gze=o(e=>e==="unset"||e==="undefined"||e==="none","isUnsetKeyword");o(BD,"iconToSVG")});function $D(e,t=vze){let r=[],n;for(;n=yze.exec(e);)r.push(n[1]);if(!r.length)return e;let i="suffix"+(Math.random()*16777216|Date.now()).toString(16);return r.forEach(a=>{let s=typeof t=="function"?t(a):t+(xze++).toString(),l=a.replace(/[.*+?^${}()|[\]\\]/g,"\\$&");e=e.replace(new RegExp('([#;"])('+l+')([")]|\\.[a-z])',"g"),"$1"+s+i+"$3")}),e=e.replace(new RegExp(i,"g"),""),e}var yze,vze,xze,JX=F(()=>{"use strict";yze=/\sid="(\S+)"/g,vze="IconifyId"+Date.now().toString(16)+(Math.random()*16777216|0).toString(16),xze=0;o($D,"replaceIDs")});function FD(e,t){let r=e.indexOf("xlink:")===-1?"":' xmlns:xlink="http://www.w3.org/1999/xlink"';for(let n in t)r+=" "+n+'="'+t[n]+'"';return'<svg xmlns="http://www.w3.org/2000/svg"'+r+">"+e+"</svg>"}var eK=F(()=>{"use strict";o(FD,"iconToHTML")});var tK=F(()=>{"use strict";GX();jX();QX();JX();eK()});var zD,Yn,G0=F(()=>{"use strict";zD=o((e,t,{depth:r=2,clobber:n=!1}={})=>{let i={depth:r,clobber:n};return Array.isArray(t)&&!Array.isArray(e)?(t.forEach(a=>zD(e,a,i)),e):Array.isArray(t)&&Array.isArray(e)?(t.forEach(a=>{e.includes(a)||e.push(a)}),e):e===void 0||r<=0?e!=null&&typeof e=="object"&&typeof t=="object"?Object.assign(e,t):t:(t!==void 0&&typeof e=="object"&&typeof t=="object"&&Object.keys(t).forEach(a=>{typeof t[a]=="object"&&t[a]!==null&&(e[a]===void 0||typeof e[a]=="object")?(e[a]===void 0&&(e[a]=Array.isArray(t[a])?[]:{}),e[a]=zD(e[a],t[a],{depth:r-1,clobber:n})):(n||typeof e[a]!="object"&&typeof t[a]!="object")&&(e[a]=t[a])}),e)},"assignWithDepth"),Yn=zD});var vk=Io((GD,VD)=>{"use strict";(function(e,t){typeof GD=="object"&&typeof VD<"u"?VD.exports=t():typeof define=="function"&&define.amd?define(t):(e=typeof globalThis<"u"?globalThis:e||self).dayjs=t()})(GD,(function(){"use strict";var e=1e3,t=6e4,r=36e5,n="millisecond",i="second",a="minute",s="hour",l="day",u="week",h="month",d="quarter",f="year",p="date",m="Invalid Date",g=/^(\d{4})[-/]?(\d{1,2})?[-/]?(\d{0,2})[Tt\s]*(\d{1,2})?:?(\d{1,2})?:?(\d{1,2})?[.:]?(\d+)?$/,y=/\[([^\]]+)]|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g,v={name:"en",weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),ordinal:o(function(_){var A=["th","st","nd","rd"],M=_%100;return"["+_+(A[(M-20)%10]||A[M]||A[0])+"]"},"ordinal")},x=o(function(_,A,M){var D=String(_);return!D||D.length>=A?_:""+Array(A+1-D.length).join(M)+_},"m"),b={s:x,z:o(function(_){var A=-_.utcOffset(),M=Math.abs(A),D=Math.floor(M/60),P=M%60;return(A<=0?"+":"-")+x(D,2,"0")+":"+x(P,2,"0")},"z"),m:o(function _(A,M){if(A.date()<M.date())return-_(M,A);var D=12*(M.year()-A.year())+(M.month()-A.month()),P=A.clone().add(D,h),B=M-P<0,O=A.clone().add(D+(B?-1:1),h);return+(-(D+(M-P)/(B?P-O:O-P))||0)},"t"),a:o(function(_){return _<0?Math.ceil(_)||0:Math.floor(_)},"a"),p:o(function(_){return{M:h,y:f,w:u,d:l,D:p,h:s,m:a,s:i,ms:n,Q:d}[_]||String(_||"").toLowerCase().replace(/s$/,"")},"p"),u:o(function(_){return _===void 0},"u")},T="en",k={};k[T]=v;var C="$isDayjsObject",w=o(function(_){return _ instanceof N||!(!_||!_[C])},"S"),S=o(function _(A,M,D){var P;if(!A)return T;if(typeof A=="string"){var B=A.toLowerCase();k[B]&&(P=B),M&&(k[B]=M,P=B);var O=A.split("-");if(!P&&O.length>1)return _(O[0])}else{var $=A.name;k[$]=A,P=$}return!D&&P&&(T=P),P||!D&&T},"t"),R=o(function(_,A){if(w(_))return _.clone();var M=typeof A=="object"?A:{};return M.date=_,M.args=arguments,new N(M)},"O"),L=b;L.l=S,L.i=w,L.w=function(_,A){return R(_,{locale:A.$L,utc:A.$u,x:A.$x,$offset:A.$offset})};var N=(function(){function _(M){this.$L=S(M.locale,null,!0),this.parse(M),this.$x=this.$x||M.x||{},this[C]=!0}o(_,"M");var A=_.prototype;return A.parse=function(M){this.$d=(function(D){var P=D.date,B=D.utc;if(P===null)return new Date(NaN);if(L.u(P))return new Date;if(P instanceof Date)return new Date(P);if(typeof P=="string"&&!/Z$/i.test(P)){var O=P.match(g);if(O){var $=O[2]-1||0,V=(O[7]||"0").substring(0,3);return B?new Date(Date.UTC(O[1],$,O[3]||1,O[4]||0,O[5]||0,O[6]||0,V)):new Date(O[1],$,O[3]||1,O[4]||0,O[5]||0,O[6]||0,V)}}return new Date(P)})(M),this.init()},A.init=function(){var M=this.$d;this.$y=M.getFullYear(),this.$M=M.getMonth(),this.$D=M.getDate(),this.$W=M.getDay(),this.$H=M.getHours(),this.$m=M.getMinutes(),this.$s=M.getSeconds(),this.$ms=M.getMilliseconds()},A.$utils=function(){return L},A.isValid=function(){return this.$d.toString()!==m},A.isSame=function(M,D){var P=R(M);return this.startOf(D)<=P&&P<=this.endOf(D)},A.isAfter=function(M,D){return R(M)<this.startOf(D)},A.isBefore=function(M,D){return this.endOf(D)<R(M)},A.$g=function(M,D,P){return L.u(M)?this[D]:this.set(P,M)},A.unix=function(){return Math.floor(this.valueOf()/1e3)},A.valueOf=function(){return this.$d.getTime()},A.startOf=function(M,D){var P=this,B=!!L.u(D)||D,O=L.p(M),$=o(function(U,oe){var te=L.w(P.$u?Date.UTC(P.$y,oe,U):new Date(P.$y,oe,U),P);return B?te:te.endOf(l)},"l"),V=o(function(U,oe){return L.w(P.toDate()[U].apply(P.toDate("s"),(B?[0,0,0,0]:[23,59,59,999]).slice(oe)),P)},"$"),G=this.$W,z=this.$M,W=this.$D,H="set"+(this.$u?"UTC":"");switch(O){case f:return B?$(1,0):$(31,11);case h:return B?$(1,z):$(0,z+1);case u:var j=this.$locale().weekStart||0,Q=(G<j?G+7:G)-j;return $(B?W-Q:W+(6-Q),z);case l:case p:return V(H+"Hours",0);case s:return V(H+"Minutes",1);case a:return V(H+"Seconds",2);case i:return V(H+"Milliseconds",3);default:return this.clone()}},A.endOf=function(M){return this.startOf(M,!1)},A.$set=function(M,D){var P,B=L.p(M),O="set"+(this.$u?"UTC":""),$=(P={},P[l]=O+"Date",P[p]=O+"Date",P[h]=O+"Month",P[f]=O+"FullYear",P[s]=O+"Hours",P[a]=O+"Minutes",P[i]=O+"Seconds",P[n]=O+"Milliseconds",P)[B],V=B===l?this.$D+(D-this.$W):D;if(B===h||B===f){var G=this.clone().set(p,1);G.$d[$](V),G.init(),this.$d=G.set(p,Math.min(this.$D,G.daysInMonth())).$d}else $&&this.$d[$](V);return this.init(),this},A.set=function(M,D){return this.clone().$set(M,D)},A.get=function(M){return this[L.p(M)]()},A.add=function(M,D){var P,B=this;M=Number(M);var O=L.p(D),$=o(function(z){var W=R(B);return L.w(W.date(W.date()+Math.round(z*M)),B)},"y");if(O===h)return this.set(h,this.$M+M);if(O===f)return this.set(f,this.$y+M);if(O===l)return $(1);if(O===u)return $(7);var V=(P={},P[a]=t,P[s]=r,P[i]=e,P)[O]||1,G=this.$d.getTime()+M*V;return L.w(G,this)},A.subtract=function(M,D){return this.add(-1*M,D)},A.format=function(M){var D=this,P=this.$locale();if(!this.isValid())return P.invalidDate||m;var B=M||"YYYY-MM-DDTHH:mm:ssZ",O=L.z(this),$=this.$H,V=this.$m,G=this.$M,z=P.weekdays,W=P.months,H=P.meridiem,j=o(function(oe,te,le,ie){return oe&&(oe[te]||oe(D,B))||le[te].slice(0,ie)},"h"),Q=o(function(oe){return L.s($%12||12,oe,"0")},"d"),U=H||function(oe,te,le){var ie=oe<12?"AM":"PM";return le?ie.toLowerCase():ie};return B.replace(y,(function(oe,te){return te||(function(le){switch(le){case"YY":return String(D.$y).slice(-2);case"YYYY":return L.s(D.$y,4,"0");case"M":return G+1;case"MM":return L.s(G+1,2,"0");case"MMM":return j(P.monthsShort,G,W,3);case"MMMM":return j(W,G);case"D":return D.$D;case"DD":return L.s(D.$D,2,"0");case"d":return String(D.$W);case"dd":return j(P.weekdaysMin,D.$W,z,2);case"ddd":return j(P.weekdaysShort,D.$W,z,3);case"dddd":return z[D.$W];case"H":return String($);case"HH":return L.s($,2,"0");case"h":return Q(1);case"hh":return Q(2);case"a":return U($,V,!0);case"A":return U($,V,!1);case"m":return String(V);case"mm":return L.s(V,2,"0");case"s":return String(D.$s);case"ss":return L.s(D.$s,2,"0");case"SSS":return L.s(D.$ms,3,"0");case"Z":return O}return null})(oe)||O.replace(":","")}))},A.utcOffset=function(){return 15*-Math.round(this.$d.getTimezoneOffset()/15)},A.diff=function(M,D,P){var B,O=this,$=L.p(D),V=R(M),G=(V.utcOffset()-this.utcOffset())*t,z=this-V,W=o(function(){return L.m(O,V)},"D");switch($){case f:B=W()/12;break;case h:B=W();break;case d:B=W()/3;break;case u:B=(z-G)/6048e5;break;case l:B=(z-G)/864e5;break;case s:B=z/r;break;case a:B=z/t;break;case i:B=z/e;break;default:B=z}return P?B:L.a(B)},A.daysInMonth=function(){return this.endOf(h).$D},A.$locale=function(){return k[this.$L]},A.locale=function(M,D){if(!M)return this.$L;var P=this.clone(),B=S(M,D,!0);return B&&(P.$L=B),P},A.clone=function(){return L.w(this.$d,this)},A.toDate=function(){return new Date(this.valueOf())},A.toJSON=function(){return this.isValid()?this.toISOString():null},A.toISOString=function(){return this.$d.toISOString()},A.toString=function(){return this.$d.toUTCString()},_})(),I=N.prototype;return R.prototype=I,[["$ms",n],["$s",i],["$m",a],["$H",s],["$W",l],["$M",h],["$y",f],["$D",p]].forEach((function(_){I[_[1]]=function(A){return this.$g(A,_[0],_[1])}})),R.extend=function(_,A){return _.$i||(_(A,N,R),_.$i=!0),R},R.locale=S,R.isDayjs=w,R.unix=function(_){return R(1e3*_)},R.en=k[T],R.Ls=k,R.p={},R}))});var rK,Zu,Z,Bx,il,vt=F(()=>{"use strict";rK=Xs(vk(),1),Zu={trace:0,debug:1,info:2,warn:3,error:4,fatal:5},Z={trace:o((...e)=>{},"trace"),debug:o((...e)=>{},"debug"),info:o((...e)=>{},"info"),warn:o((...e)=>{},"warn"),error:o((...e)=>{},"error"),fatal:o((...e)=>{},"fatal")},Bx=o(function(e="fatal"){let t=Zu.fatal;typeof e=="string"?e.toLowerCase()in Zu&&(t=Zu[e]):typeof e=="number"&&(t=e),Z.trace=()=>{},Z.debug=()=>{},Z.info=()=>{},Z.warn=()=>{},Z.error=()=>{},Z.fatal=()=>{},t<=Zu.fatal&&(Z.fatal=console.error?console.error.bind(console,il("FATAL"),"color: orange"):console.log.bind(console,"\x1B[35m",il("FATAL"))),t<=Zu.error&&(Z.error=console.error?console.error.bind(console,il("ERROR"),"color: orange"):console.log.bind(console,"\x1B[31m",il("ERROR"))),t<=Zu.warn&&(Z.warn=console.warn?console.warn.bind(console,il("WARN"),"color: orange"):console.log.bind(console,"\x1B[33m",il("WARN"))),t<=Zu.info&&(Z.info=console.info?console.info.bind(console,il("INFO"),"color: lightblue"):console.log.bind(console,"\x1B[34m",il("INFO"))),t<=Zu.debug&&(Z.debug=console.debug?console.debug.bind(console,il("DEBUG"),"color: lightgreen"):console.log.bind(console,"\x1B[32m",il("DEBUG"))),t<=Zu.trace&&(Z.trace=console.debug?console.debug.bind(console,il("TRACE"),"color: lightgreen"):console.log.bind(console,"\x1B[32m",il("TRACE")))},"setLogLevel"),il=o(e=>`%c${(0,rK.default)().format("ss.SSS")} : ${e} : `,"format")});var xk,nK,iK=F(()=>{"use strict";xk={min:{r:0,g:0,b:0,s:0,l:0,a:0},max:{r:255,g:255,b:255,h:360,s:100,l:100,a:1},clamp:{r:o(e=>e>=255?255:e<0?0:e,"r"),g:o(e=>e>=255?255:e<0?0:e,"g"),b:o(e=>e>=255?255:e<0?0:e,"b"),h:o(e=>e%360,"h"),s:o(e=>e>=100?100:e<0?0:e,"s"),l:o(e=>e>=100?100:e<0?0:e,"l"),a:o(e=>e>=1?1:e<0?0:e,"a")},toLinear:o(e=>{let t=e/255;return e>.03928?Math.pow((t+.055)/1.055,2.4):t/12.92},"toLinear"),hue2rgb:o((e,t,r)=>(r<0&&(r+=1),r>1&&(r-=1),r<.16666666666666666?e+(t-e)*6*r:r<.5?t:r<.6666666666666666?e+(t-e)*(.6666666666666666-r)*6:e),"hue2rgb"),hsl2rgb:o(({h:e,s:t,l:r},n)=>{if(!t)return r*2.55;e/=360,t/=100,r/=100;let i=r<.5?r*(1+t):r+t-r*t,a=2*r-i;switch(n){case"r":return xk.hue2rgb(a,i,e+.3333333333333333)*255;case"g":return xk.hue2rgb(a,i,e)*255;case"b":return xk.hue2rgb(a,i,e-.3333333333333333)*255}},"hsl2rgb"),rgb2hsl:o(({r:e,g:t,b:r},n)=>{e/=255,t/=255,r/=255;let i=Math.max(e,t,r),a=Math.min(e,t,r),s=(i+a)/2;if(n==="l")return s*100;if(i===a)return 0;let l=i-a,u=s>.5?l/(2-i-a):l/(i+a);if(n==="s")return u*100;switch(i){case e:return((t-r)/l+(t<r?6:0))*60;case t:return((r-e)/l+2)*60;case r:return((e-t)/l+4)*60;default:return-1}},"rgb2hsl")},nK=xk});var bze,aK,sK=F(()=>{"use strict";bze={clamp:o((e,t,r)=>t>r?Math.min(t,Math.max(r,e)):Math.min(r,Math.max(t,e)),"clamp"),round:o(e=>Math.round(e*1e10)/1e10,"round")},aK=bze});var Tze,oK,lK=F(()=>{"use strict";Tze={dec2hex:o(e=>{let t=Math.round(e).toString(16);return t.length>1?t:`0${t}`},"dec2hex")},oK=Tze});var Cze,lr,Nc=F(()=>{"use strict";iK();sK();lK();Cze={channel:nK,lang:aK,unit:oK},lr=Cze});var Qu,ta,$x=F(()=>{"use strict";Nc();Qu={};for(let e=0;e<=255;e++)Qu[e]=lr.unit.dec2hex(e);ta={ALL:0,RGB:1,HSL:2}});var WD,cK,uK=F(()=>{"use strict";$x();WD=class{static{o(this,"Type")}constructor(){this.type=ta.ALL}get(){return this.type}set(t){if(this.type&&this.type!==t)throw new Error("Cannot change both RGB and HSL channels at the same time");this.type=t}reset(){this.type=ta.ALL}is(t){return this.type===t}},cK=WD});var qD,hK,dK=F(()=>{"use strict";Nc();uK();$x();qD=class{static{o(this,"Channels")}constructor(t,r){this.color=r,this.changed=!1,this.data=t,this.type=new cK}set(t,r){return this.color=r,this.changed=!1,this.data=t,this.type.type=ta.ALL,this}_ensureHSL(){let t=this.data,{h:r,s:n,l:i}=t;r===void 0&&(t.h=lr.channel.rgb2hsl(t,"h")),n===void 0&&(t.s=lr.channel.rgb2hsl(t,"s")),i===void 0&&(t.l=lr.channel.rgb2hsl(t,"l"))}_ensureRGB(){let t=this.data,{r,g:n,b:i}=t;r===void 0&&(t.r=lr.channel.hsl2rgb(t,"r")),n===void 0&&(t.g=lr.channel.hsl2rgb(t,"g")),i===void 0&&(t.b=lr.channel.hsl2rgb(t,"b"))}get r(){let t=this.data,r=t.r;return!this.type.is(ta.HSL)&&r!==void 0?r:(this._ensureHSL(),lr.channel.hsl2rgb(t,"r"))}get g(){let t=this.data,r=t.g;return!this.type.is(ta.HSL)&&r!==void 0?r:(this._ensureHSL(),lr.channel.hsl2rgb(t,"g"))}get b(){let t=this.data,r=t.b;return!this.type.is(ta.HSL)&&r!==void 0?r:(this._ensureHSL(),lr.channel.hsl2rgb(t,"b"))}get h(){let t=this.data,r=t.h;return!this.type.is(ta.RGB)&&r!==void 0?r:(this._ensureRGB(),lr.channel.rgb2hsl(t,"h"))}get s(){let t=this.data,r=t.s;return!this.type.is(ta.RGB)&&r!==void 0?r:(this._ensureRGB(),lr.channel.rgb2hsl(t,"s"))}get l(){let t=this.data,r=t.l;return!this.type.is(ta.RGB)&&r!==void 0?r:(this._ensureRGB(),lr.channel.rgb2hsl(t,"l"))}get a(){return this.data.a}set r(t){this.type.set(ta.RGB),this.changed=!0,this.data.r=t}set g(t){this.type.set(ta.RGB),this.changed=!0,this.data.g=t}set b(t){this.type.set(ta.RGB),this.changed=!0,this.data.b=t}set h(t){this.type.set(ta.HSL),this.changed=!0,this.data.h=t}set s(t){this.type.set(ta.HSL),this.changed=!0,this.data.s=t}set l(t){this.type.set(ta.HSL),this.changed=!0,this.data.l=t}set a(t){this.changed=!0,this.data.a=t}},hK=qD});var wze,Td,Fx=F(()=>{"use strict";dK();wze=new hK({r:0,g:0,b:0,a:0},"transparent"),Td=wze});var fK,Bp,HD=F(()=>{"use strict";Fx();$x();fK={re:/^#((?:[a-f0-9]{2}){2,4}|[a-f0-9]{3})$/i,parse:o(e=>{if(e.charCodeAt(0)!==35)return;let t=e.match(fK.re);if(!t)return;let r=t[1],n=parseInt(r,16),i=r.length,a=i%4===0,s=i>4,l=s?1:17,u=s?8:4,h=a?0:-1,d=s?255:15;return Td.set({r:(n>>u*(h+3)&d)*l,g:(n>>u*(h+2)&d)*l,b:(n>>u*(h+1)&d)*l,a:a?(n&d)*l/255:1},e)},"parse"),stringify:o(e=>{let{r:t,g:r,b:n,a:i}=e;return i<1?`#${Qu[Math.round(t)]}${Qu[Math.round(r)]}${Qu[Math.round(n)]}${Qu[Math.round(i*255)]}`:`#${Qu[Math.round(t)]}${Qu[Math.round(r)]}${Qu[Math.round(n)]}`},"stringify")},Bp=fK});var bk,zx,pK=F(()=>{"use strict";Nc();Fx();bk={re:/^hsla?\(\s*?(-?(?:\d+(?:\.\d+)?|(?:\.\d+))(?:e-?\d+)?(?:deg|grad|rad|turn)?)\s*?(?:,|\s)\s*?(-?(?:\d+(?:\.\d+)?|(?:\.\d+))(?:e-?\d+)?%)\s*?(?:,|\s)\s*?(-?(?:\d+(?:\.\d+)?|(?:\.\d+))(?:e-?\d+)?%)(?:\s*?(?:,|\/)\s*?\+?(-?(?:\d+(?:\.\d+)?|(?:\.\d+))(?:e-?\d+)?(%)?))?\s*?\)$/i,hueRe:/^(.+?)(deg|grad|rad|turn)$/i,_hue2deg:o(e=>{let t=e.match(bk.hueRe);if(t){let[,r,n]=t;switch(n){case"grad":return lr.channel.clamp.h(parseFloat(r)*.9);case"rad":return lr.channel.clamp.h(parseFloat(r)*180/Math.PI);case"turn":return lr.channel.clamp.h(parseFloat(r)*360)}}return lr.channel.clamp.h(parseFloat(e))},"_hue2deg"),parse:o(e=>{let t=e.charCodeAt(0);if(t!==104&&t!==72)return;let r=e.match(bk.re);if(!r)return;let[,n,i,a,s,l]=r;return Td.set({h:bk._hue2deg(n),s:lr.channel.clamp.s(parseFloat(i)),l:lr.channel.clamp.l(parseFloat(a)),a:s?lr.channel.clamp.a(l?parseFloat(s)/100:parseFloat(s)):1},e)},"parse"),stringify:o(e=>{let{h:t,s:r,l:n,a:i}=e;return i<1?`hsla(${lr.lang.round(t)}, ${lr.lang.round(r)}%, ${lr.lang.round(n)}%, ${i})`:`hsl(${lr.lang.round(t)}, ${lr.lang.round(r)}%, ${lr.lang.round(n)}%)`},"stringify")},zx=bk});var Tk,UD,mK=F(()=>{"use strict";HD();Tk={colors:{aliceblue:"#f0f8ff",antiquewhite:"#faebd7",aqua:"#00ffff",aquamarine:"#7fffd4",azure:"#f0ffff",beige:"#f5f5dc",bisque:"#ffe4c4",black:"#000000",blanchedalmond:"#ffebcd",blue:"#0000ff",blueviolet:"#8a2be2",brown:"#a52a2a",burlywood:"#deb887",cadetblue:"#5f9ea0",chartreuse:"#7fff00",chocolate:"#d2691e",coral:"#ff7f50",cornflowerblue:"#6495ed",cornsilk:"#fff8dc",crimson:"#dc143c",cyanaqua:"#00ffff",darkblue:"#00008b",darkcyan:"#008b8b",darkgoldenrod:"#b8860b",darkgray:"#a9a9a9",darkgreen:"#006400",darkgrey:"#a9a9a9",darkkhaki:"#bdb76b",darkmagenta:"#8b008b",darkolivegreen:"#556b2f",darkorange:"#ff8c00",darkorchid:"#9932cc",darkred:"#8b0000",darksalmon:"#e9967a",darkseagreen:"#8fbc8f",darkslateblue:"#483d8b",darkslategray:"#2f4f4f",darkslategrey:"#2f4f4f",darkturquoise:"#00ced1",darkviolet:"#9400d3",deeppink:"#ff1493",deepskyblue:"#00bfff",dimgray:"#696969",dimgrey:"#696969",dodgerblue:"#1e90ff",firebrick:"#b22222",floralwhite:"#fffaf0",forestgreen:"#228b22",fuchsia:"#ff00ff",gainsboro:"#dcdcdc",ghostwhite:"#f8f8ff",gold:"#ffd700",goldenrod:"#daa520",gray:"#808080",green:"#008000",greenyellow:"#adff2f",grey:"#808080",honeydew:"#f0fff0",hotpink:"#ff69b4",indianred:"#cd5c5c",indigo:"#4b0082",ivory:"#fffff0",khaki:"#f0e68c",lavender:"#e6e6fa",lavenderblush:"#fff0f5",lawngreen:"#7cfc00",lemonchiffon:"#fffacd",lightblue:"#add8e6",lightcoral:"#f08080",lightcyan:"#e0ffff",lightgoldenrodyellow:"#fafad2",lightgray:"#d3d3d3",lightgreen:"#90ee90",lightgrey:"#d3d3d3",lightpink:"#ffb6c1",lightsalmon:"#ffa07a",lightseagreen:"#20b2aa",lightskyblue:"#87cefa",lightslategray:"#778899",lightslategrey:"#778899",lightsteelblue:"#b0c4de",lightyellow:"#ffffe0",lime:"#00ff00",limegreen:"#32cd32",linen:"#faf0e6",magenta:"#ff00ff",maroon:"#800000",mediumaquamarine:"#66cdaa",mediumblue:"#0000cd",mediumorchid:"#ba55d3",mediumpurple:"#9370db",mediumseagreen:"#3cb371",mediumslateblue:"#7b68ee",mediumspringgreen:"#00fa9a",mediumturquoise:"#48d1cc",mediumvioletred:"#c71585",midnightblue:"#191970",mintcream:"#f5fffa",mistyrose:"#ffe4e1",moccasin:"#ffe4b5",navajowhite:"#ffdead",navy:"#000080",oldlace:"#fdf5e6",olive:"#808000",olivedrab:"#6b8e23",orange:"#ffa500",orangered:"#ff4500",orchid:"#da70d6",palegoldenrod:"#eee8aa",palegreen:"#98fb98",paleturquoise:"#afeeee",palevioletred:"#db7093",papayawhip:"#ffefd5",peachpuff:"#ffdab9",peru:"#cd853f",pink:"#ffc0cb",plum:"#dda0dd",powderblue:"#b0e0e6",purple:"#800080",rebeccapurple:"#663399",red:"#ff0000",rosybrown:"#bc8f8f",royalblue:"#4169e1",saddlebrown:"#8b4513",salmon:"#fa8072",sandybrown:"#f4a460",seagreen:"#2e8b57",seashell:"#fff5ee",sienna:"#a0522d",silver:"#c0c0c0",skyblue:"#87ceeb",slateblue:"#6a5acd",slategray:"#708090",slategrey:"#708090",snow:"#fffafa",springgreen:"#00ff7f",tan:"#d2b48c",teal:"#008080",thistle:"#d8bfd8",transparent:"#00000000",turquoise:"#40e0d0",violet:"#ee82ee",wheat:"#f5deb3",white:"#ffffff",whitesmoke:"#f5f5f5",yellow:"#ffff00",yellowgreen:"#9acd32"},parse:o(e=>{e=e.toLowerCase();let t=Tk.colors[e];if(t)return Bp.parse(t)},"parse"),stringify:o(e=>{let t=Bp.stringify(e);for(let r in Tk.colors)if(Tk.colors[r]===t)return r},"stringify")},UD=Tk});var gK,Gx,yK=F(()=>{"use strict";Nc();Fx();gK={re:/^rgba?\(\s*?(-?(?:\d+(?:\.\d+)?|(?:\.\d+))(?:e\d+)?(%?))\s*?(?:,|\s)\s*?(-?(?:\d+(?:\.\d+)?|(?:\.\d+))(?:e\d+)?(%?))\s*?(?:,|\s)\s*?(-?(?:\d+(?:\.\d+)?|(?:\.\d+))(?:e\d+)?(%?))(?:\s*?(?:,|\/)\s*?\+?(-?(?:\d+(?:\.\d+)?|(?:\.\d+))(?:e\d+)?(%?)))?\s*?\)$/i,parse:o(e=>{let t=e.charCodeAt(0);if(t!==114&&t!==82)return;let r=e.match(gK.re);if(!r)return;let[,n,i,a,s,l,u,h,d]=r;return Td.set({r:lr.channel.clamp.r(i?parseFloat(n)*2.55:parseFloat(n)),g:lr.channel.clamp.g(s?parseFloat(a)*2.55:parseFloat(a)),b:lr.channel.clamp.b(u?parseFloat(l)*2.55:parseFloat(l)),a:h?lr.channel.clamp.a(d?parseFloat(h)/100:parseFloat(h)):1},e)},"parse"),stringify:o(e=>{let{r:t,g:r,b:n,a:i}=e;return i<1?`rgba(${lr.lang.round(t)}, ${lr.lang.round(r)}, ${lr.lang.round(n)}, ${lr.lang.round(i)})`:`rgb(${lr.lang.round(t)}, ${lr.lang.round(r)}, ${lr.lang.round(n)})`},"stringify")},Gx=gK});var kze,ra,Ju=F(()=>{"use strict";HD();pK();mK();yK();$x();kze={format:{keyword:UD,hex:Bp,rgb:Gx,rgba:Gx,hsl:zx,hsla:zx},parse:o(e=>{if(typeof e!="string")return e;let t=Bp.parse(e)||Gx.parse(e)||zx.parse(e)||UD.parse(e);if(t)return t;throw new Error(`Unsupported color format: "${e}"`)},"parse"),stringify:o(e=>!e.changed&&e.color?e.color:e.type.is(ta.HSL)||e.data.r===void 0?zx.stringify(e):e.a<1||!Number.isInteger(e.r)||!Number.isInteger(e.g)||!Number.isInteger(e.b)?Gx.stringify(e):Bp.stringify(e),"stringify")},ra=kze});var Sze,Ck,YD=F(()=>{"use strict";Nc();Ju();Sze=o((e,t)=>{let r=ra.parse(e);for(let n in t)r[n]=lr.channel.clamp[n](t[n]);return ra.stringify(r)},"change"),Ck=Sze});var Eze,Oi,jD=F(()=>{"use strict";Nc();Fx();Ju();YD();Eze=o((e,t,r=0,n=1)=>{if(typeof e!="number")return Ck(e,{a:t});let i=Td.set({r:lr.channel.clamp.r(e),g:lr.channel.clamp.g(t),b:lr.channel.clamp.b(r),a:lr.channel.clamp.a(n)});return ra.stringify(i)},"rgba"),Oi=Eze});var Aze,$p,vK=F(()=>{"use strict";Nc();Ju();Aze=o((e,t)=>lr.lang.round(ra.parse(e)[t]),"channel"),$p=Aze});var Rze,xK,bK=F(()=>{"use strict";Nc();Ju();Rze=o(e=>{let{r:t,g:r,b:n}=ra.parse(e),i=.2126*lr.channel.toLinear(t)+.7152*lr.channel.toLinear(r)+.0722*lr.channel.toLinear(n);return lr.lang.round(i)},"luminance"),xK=Rze});var _ze,TK,CK=F(()=>{"use strict";bK();_ze=o(e=>xK(e)>=.5,"isLight"),TK=_ze});var Lze,Tn,wK=F(()=>{"use strict";CK();Lze=o(e=>!TK(e),"isDark"),Tn=Lze});var Dze,V0,wk=F(()=>{"use strict";Nc();Ju();Dze=o((e,t,r)=>{let n=ra.parse(e),i=n[t],a=lr.channel.clamp[t](i+r);return i!==a&&(n[t]=a),ra.stringify(n)},"adjustChannel"),V0=Dze});var Ize,Qe,kK=F(()=>{"use strict";wk();Ize=o((e,t)=>V0(e,"l",t),"lighten"),Qe=Ize});var Mze,Je,SK=F(()=>{"use strict";wk();Mze=o((e,t)=>V0(e,"l",-t),"darken"),Je=Mze});var Nze,kk,EK=F(()=>{"use strict";wk();Nze=o((e,t)=>V0(e,"a",-t),"transparentize"),kk=Nze});var Pze,de,AK=F(()=>{"use strict";Ju();YD();Pze=o((e,t)=>{let r=ra.parse(e),n={};for(let i in t)t[i]&&(n[i]=r[i]+t[i]);return Ck(e,n)},"adjust"),de=Pze});var Oze,RK,_K=F(()=>{"use strict";Ju();jD();Oze=o((e,t,r=50)=>{let{r:n,g:i,b:a,a:s}=ra.parse(e),{r:l,g:u,b:h,a:d}=ra.parse(t),f=r/100,p=f*2-1,m=s-d,y=((p*m===-1?p:(p+m)/(1+p*m))+1)/2,v=1-y,x=n*y+l*v,b=i*y+u*v,T=a*y+h*v,k=s*f+d*(1-f);return Oi(x,b,T,k)},"mix"),RK=Oze});var Bze,Ye,LK=F(()=>{"use strict";Ju();_K();Bze=o((e,t=100)=>{let r=ra.parse(e);return r.r=255-r.r,r.g=255-r.g,r.b=255-r.b,RK(r,e,t)},"invert"),Ye=Bze});var DK=F(()=>{"use strict";jD();vK();wK();kK();SK();EK();AK();LK()});var zi=F(()=>{"use strict";DK()});var Gi,Vi,Fl=F(()=>{"use strict";Gi="#ffffff",Vi="#f2f2f2"});var ar,al=F(()=>{"use strict";zi();ar=o((e,t)=>t?de(e,{s:-40,l:10}):de(e,{s:-40,l:-10}),"mkBorder")});var KD,IK,MK=F(()=>{"use strict";zi();Fl();al();KD=class{static{o(this,"Theme")}constructor(){this.background="#f4f4f4",this.primaryColor="#fff4dd",this.noteBkgColor="#fff5ad",this.noteTextColor="#333",this.THEME_COLOR_LIMIT=12,this.radius=5,this.strokeWidth=1,this.fontFamily='"trebuchet ms", verdana, arial, sans-serif',this.fontSize="16px",this.useGradient=!0,this.dropShadow="drop-shadow( 1px 2px 2px rgba(185,185,185,1))"}updateColors(){if(this.primaryTextColor=this.primaryTextColor||(this.darkMode?"#eee":"#333"),this.secondaryColor=this.secondaryColor||de(this.primaryColor,{h:-120}),this.tertiaryColor=this.tertiaryColor||de(this.primaryColor,{h:180,l:5}),this.primaryBorderColor=this.primaryBorderColor||ar(this.primaryColor,this.darkMode),this.secondaryBorderColor=this.secondaryBorderColor||ar(this.secondaryColor,this.darkMode),this.tertiaryBorderColor=this.tertiaryBorderColor||ar(this.tertiaryColor,this.darkMode),this.noteBorderColor=this.noteBorderColor||ar(this.noteBkgColor,this.darkMode),this.noteBkgColor=this.noteBkgColor||"#fff5ad",this.noteTextColor=this.noteTextColor||"#333",this.secondaryTextColor=this.secondaryTextColor||Ye(this.secondaryColor),this.tertiaryTextColor=this.tertiaryTextColor||Ye(this.tertiaryColor),this.lineColor=this.lineColor||Ye(this.background),this.arrowheadColor=this.arrowheadColor||Ye(this.background),this.textColor=this.textColor||this.primaryTextColor,this.border2=this.border2||this.tertiaryBorderColor,this.nodeBkg=this.nodeBkg||this.primaryColor,this.mainBkg=this.mainBkg||this.primaryColor,this.nodeBorder=this.nodeBorder||this.primaryBorderColor,this.clusterBkg=this.clusterBkg||this.tertiaryColor,this.clusterBorder=this.clusterBorder||this.tertiaryBorderColor,this.defaultLinkColor=this.defaultLinkColor||this.lineColor,this.titleColor=this.titleColor||this.tertiaryTextColor,this.edgeLabelBackground=this.edgeLabelBackground||(this.darkMode?Je(this.secondaryColor,30):this.secondaryColor),this.nodeTextColor=this.nodeTextColor||this.primaryTextColor,this.actorBorder=this.actorBorder||this.primaryBorderColor,this.actorBkg=this.actorBkg||this.mainBkg,this.actorTextColor=this.actorTextColor||this.primaryTextColor,this.actorLineColor=this.actorLineColor||this.actorBorder,this.labelBoxBkgColor=this.labelBoxBkgColor||this.actorBkg,this.signalColor=this.signalColor||this.textColor,this.signalTextColor=this.signalTextColor||this.textColor,this.labelBoxBorderColor=this.labelBoxBorderColor||this.actorBorder,this.labelTextColor=this.labelTextColor||this.actorTextColor,this.loopTextColor=this.loopTextColor||this.actorTextColor,this.activationBorderColor=this.activationBorderColor||Je(this.secondaryColor,10),this.activationBkgColor=this.activationBkgColor||this.secondaryColor,this.sequenceNumberColor=this.sequenceNumberColor||Ye(this.lineColor),this.rectBkgColor=this.rectBkgColor||this.tertiaryColor,this.sectionBkgColor=this.sectionBkgColor||this.tertiaryColor,this.altSectionBkgColor=this.altSectionBkgColor||"white",this.sectionBkgColor=this.sectionBkgColor||this.secondaryColor,this.sectionBkgColor2=this.sectionBkgColor2||this.primaryColor,this.excludeBkgColor=this.excludeBkgColor||"#eeeeee",this.taskBorderColor=this.taskBorderColor||this.primaryBorderColor,this.taskBkgColor=this.taskBkgColor||this.primaryColor,this.activeTaskBorderColor=this.activeTaskBorderColor||this.primaryColor,this.activeTaskBkgColor=this.activeTaskBkgColor||Qe(this.primaryColor,23),this.gridColor=this.gridColor||"lightgrey",this.doneTaskBkgColor=this.doneTaskBkgColor||"lightgrey",this.doneTaskBorderColor=this.doneTaskBorderColor||"grey",this.critBorderColor=this.critBorderColor||"#ff8888",this.critBkgColor=this.critBkgColor||"red",this.todayLineColor=this.todayLineColor||"red",this.vertLineColor=this.vertLineColor||"navy",this.taskTextColor=this.taskTextColor||this.textColor,this.taskTextOutsideColor=this.taskTextOutsideColor||this.textColor,this.taskTextLightColor=this.taskTextLightColor||this.textColor,this.taskTextColor=this.taskTextColor||this.primaryTextColor,this.taskTextDarkColor=this.taskTextDarkColor||this.textColor,this.taskTextClickableColor=this.taskTextClickableColor||"#003163",this.noteFontWeight=this.noteFontWeight||"normal",this.fontWeight=this.fontWeight||"normal",this.personBorder=this.personBorder||this.primaryBorderColor,this.personBkg=this.personBkg||this.mainBkg,this.darkMode?(this.rowOdd=this.rowOdd||Je(this.mainBkg,5)||"#ffffff",this.rowEven=this.rowEven||Je(this.mainBkg,10)):(this.rowOdd=this.rowOdd||Qe(this.mainBkg,75)||"#ffffff",this.rowEven=this.rowEven||Qe(this.mainBkg,5)),this.transitionColor=this.transitionColor||this.lineColor,this.transitionLabelColor=this.transitionLabelColor||this.textColor,this.stateLabelColor=this.stateLabelColor||this.stateBkg||this.primaryTextColor,this.stateBkg=this.stateBkg||this.mainBkg,this.labelBackgroundColor=this.labelBackgroundColor||this.stateBkg,this.compositeBackground=this.compositeBackground||this.background||this.tertiaryColor,this.altBackground=this.altBackground||this.tertiaryColor,this.compositeTitleBackground=this.compositeTitleBackground||this.mainBkg,this.compositeBorder=this.compositeBorder||this.nodeBorder,this.innerEndBackground=this.nodeBorder,this.errorBkgColor=this.errorBkgColor||this.tertiaryColor,this.errorTextColor=this.errorTextColor||this.tertiaryTextColor,this.transitionColor=this.transitionColor||this.lineColor,this.specialStateColor=this.lineColor,this.cScale0=this.cScale0||this.primaryColor,this.cScale1=this.cScale1||this.secondaryColor,this.cScale2=this.cScale2||this.tertiaryColor,this.cScale3=this.cScale3||de(this.primaryColor,{h:30}),this.cScale4=this.cScale4||de(this.primaryColor,{h:60}),this.cScale5=this.cScale5||de(this.primaryColor,{h:90}),this.cScale6=this.cScale6||de(this.primaryColor,{h:120}),this.cScale7=this.cScale7||de(this.primaryColor,{h:150}),this.cScale8=this.cScale8||de(this.primaryColor,{h:210,l:150}),this.cScale9=this.cScale9||de(this.primaryColor,{h:270}),this.cScale10=this.cScale10||de(this.primaryColor,{h:300}),this.cScale11=this.cScale11||de(this.primaryColor,{h:330}),this.darkMode)for(let r=0;r<this.THEME_COLOR_LIMIT;r++)this["cScale"+r]=Je(this["cScale"+r],75);else for(let r=0;r<this.THEME_COLOR_LIMIT;r++)this["cScale"+r]=Je(this["cScale"+r],25);for(let r=0;r<this.THEME_COLOR_LIMIT;r++)this["cScaleInv"+r]=this["cScaleInv"+r]||Ye(this["cScale"+r]);for(let r=0;r<this.THEME_COLOR_LIMIT;r++)this.darkMode?this["cScalePeer"+r]=this["cScalePeer"+r]||Qe(this["cScale"+r],10):this["cScalePeer"+r]=this["cScalePeer"+r]||Je(this["cScale"+r],10);this.scaleLabelColor=this.scaleLabelColor||this.labelTextColor;for(let r=0;r<this.THEME_COLOR_LIMIT;r++)this["cScaleLabel"+r]=this["cScaleLabel"+r]||this.scaleLabelColor;let t=this.darkMode?-4:-1;for(let r=0;r<5;r++)this["surface"+r]=this["surface"+r]||de(this.mainBkg,{h:180,s:-15,l:t*(5+r*3)}),this["surfacePeer"+r]=this["surfacePeer"+r]||de(this.mainBkg,{h:180,s:-15,l:t*(8+r*3)});this.classText=this.classText||this.textColor,this.fillType0=this.fillType0||this.primaryColor,this.fillType1=this.fillType1||this.secondaryColor,this.fillType2=this.fillType2||de(this.primaryColor,{h:64}),this.fillType3=this.fillType3||de(this.secondaryColor,{h:64}),this.fillType4=this.fillType4||de(this.primaryColor,{h:-64}),this.fillType5=this.fillType5||de(this.secondaryColor,{h:-64}),this.fillType6=this.fillType6||de(this.primaryColor,{h:128}),this.fillType7=this.fillType7||de(this.secondaryColor,{h:128}),this.pie1=this.pie1||this.primaryColor,this.pie2=this.pie2||this.secondaryColor,this.pie3=this.pie3||this.tertiaryColor,this.pie4=this.pie4||de(this.primaryColor,{l:-10}),this.pie5=this.pie5||de(this.secondaryColor,{l:-10}),this.pie6=this.pie6||de(this.tertiaryColor,{l:-10}),this.pie7=this.pie7||de(this.primaryColor,{h:60,l:-10}),this.pie8=this.pie8||de(this.primaryColor,{h:-60,l:-10}),this.pie9=this.pie9||de(this.primaryColor,{h:120,l:0}),this.pie10=this.pie10||de(this.primaryColor,{h:60,l:-20}),this.pie11=this.pie11||de(this.primaryColor,{h:-60,l:-20}),this.pie12=this.pie12||de(this.primaryColor,{h:120,l:-10}),this.pieTitleTextSize=this.pieTitleTextSize||"25px",this.pieTitleTextColor=this.pieTitleTextColor||this.taskTextDarkColor,this.pieSectionTextSize=this.pieSectionTextSize||"17px",this.pieSectionTextColor=this.pieSectionTextColor||this.textColor,this.pieLegendTextSize=this.pieLegendTextSize||"17px",this.pieLegendTextColor=this.pieLegendTextColor||this.taskTextDarkColor,this.pieStrokeColor=this.pieStrokeColor||"black",this.pieStrokeWidth=this.pieStrokeWidth||"2px",this.pieOuterStrokeWidth=this.pieOuterStrokeWidth||"2px",this.pieOuterStrokeColor=this.pieOuterStrokeColor||"black",this.pieOpacity=this.pieOpacity||"0.7",this.venn1=this.venn1??de(this.primaryColor,{l:-30}),this.venn2=this.venn2??de(this.secondaryColor,{l:-30}),this.venn3=this.venn3??de(this.tertiaryColor,{l:-30}),this.venn4=this.venn4??de(this.primaryColor,{h:60,l:-30}),this.venn5=this.venn5??de(this.primaryColor,{h:-60,l:-30}),this.venn6=this.venn6??de(this.secondaryColor,{h:60,l:-30}),this.venn7=this.venn7??de(this.primaryColor,{h:120,l:-30}),this.venn8=this.venn8??de(this.secondaryColor,{h:120,l:-30}),this.vennTitleTextColor=this.vennTitleTextColor??this.titleColor,this.vennSetTextColor=this.vennSetTextColor??this.textColor,this.cynefin={domainFontSize:this.cynefin?.domainFontSize||16,itemFontSize:this.cynefin?.itemFontSize||12,boundaryColor:this.cynefin?.boundaryColor||this.lineColor,boundaryWidth:this.cynefin?.boundaryWidth||2,cliffColor:this.cynefin?.cliffColor||"#8B0000",cliffWidth:this.cynefin?.cliffWidth||4,arrowColor:this.cynefin?.arrowColor||this.lineColor,arrowWidth:this.cynefin?.arrowWidth||2,complexBg:this.cynefin?.complexBg||"#E8F5E9",complicatedBg:this.cynefin?.complicatedBg||"#E3F2FD",chaoticBg:this.cynefin?.chaoticBg||"#FBE9E7",clearBg:this.cynefin?.clearBg||"#FFF8E1",confusionBg:this.cynefin?.confusionBg||"#F3E5F5",textColor:this.cynefin?.textColor||this.textColor,labelColor:this.cynefin?.labelColor||this.primaryTextColor},this.radar={axisColor:this.radar?.axisColor||this.lineColor,axisStrokeWidth:this.radar?.axisStrokeWidth||2,axisLabelFontSize:this.radar?.axisLabelFontSize||12,curveOpacity:this.radar?.curveOpacity||.5,curveStrokeWidth:this.radar?.curveStrokeWidth||2,graticuleColor:this.radar?.graticuleColor||"#DEDEDE",graticuleStrokeWidth:this.radar?.graticuleStrokeWidth||1,graticuleOpacity:this.radar?.graticuleOpacity||.3,legendBoxSize:this.radar?.legendBoxSize||12,legendFontSize:this.radar?.legendFontSize||12},this.wardleyEvolutionColor=this.wardleyEvolutionColor||"#dc3545",this.wardley={backgroundColor:this.wardley?.backgroundColor||this.background,axisColor:this.wardley?.axisColor||this.lineColor,axisTextColor:this.wardley?.axisTextColor||this.primaryTextColor,gridColor:this.wardley?.gridColor||this.gridColor,componentFill:this.wardley?.componentFill||this.background,componentStroke:this.wardley?.componentStroke||this.lineColor,componentLabelColor:this.wardley?.componentLabelColor||this.primaryTextColor,linkStroke:this.wardley?.linkStroke||this.lineColor,evolutionStroke:this.wardley?.evolutionStroke||this.wardleyEvolutionColor,annotationStroke:this.wardley?.annotationStroke||this.lineColor,annotationTextColor:this.wardley?.annotationTextColor||this.primaryTextColor,annotationFill:this.wardley?.annotationFill||this.background},this.archEdgeColor=this.archEdgeColor||"#777",this.archEdgeArrowColor=this.archEdgeArrowColor||"#777",this.archEdgeWidth=this.archEdgeWidth||"3",this.archGroupBorderColor=this.archGroupBorderColor||"#000",this.archGroupBorderWidth=this.archGroupBorderWidth||"2px",this.quadrant1Fill=this.quadrant1Fill||this.primaryColor,this.quadrant2Fill=this.quadrant2Fill||de(this.primaryColor,{r:5,g:5,b:5}),this.quadrant3Fill=this.quadrant3Fill||de(this.primaryColor,{r:10,g:10,b:10}),this.quadrant4Fill=this.quadrant4Fill||de(this.primaryColor,{r:15,g:15,b:15}),this.quadrant1TextFill=this.quadrant1TextFill||this.primaryTextColor,this.quadrant2TextFill=this.quadrant2TextFill||de(this.primaryTextColor,{r:-5,g:-5,b:-5}),this.quadrant3TextFill=this.quadrant3TextFill||de(this.primaryTextColor,{r:-10,g:-10,b:-10}),this.quadrant4TextFill=this.quadrant4TextFill||de(this.primaryTextColor,{r:-15,g:-15,b:-15}),this.quadrantPointFill=this.quadrantPointFill||Tn(this.quadrant1Fill)?Qe(this.quadrant1Fill):Je(this.quadrant1Fill),this.quadrantPointTextFill=this.quadrantPointTextFill||this.primaryTextColor,this.quadrantXAxisTextFill=this.quadrantXAxisTextFill||this.primaryTextColor,this.quadrantYAxisTextFill=this.quadrantYAxisTextFill||this.primaryTextColor,this.quadrantInternalBorderStrokeFill=this.quadrantInternalBorderStrokeFill||this.primaryBorderColor,this.quadrantExternalBorderStrokeFill=this.quadrantExternalBorderStrokeFill||this.primaryBorderColor,this.quadrantTitleFill=this.quadrantTitleFill||this.primaryTextColor,this.xyChart={backgroundColor:this.xyChart?.backgroundColor||this.background,titleColor:this.xyChart?.titleColor||this.primaryTextColor,dataLabelColor:this.xyChart?.dataLabelColor||this.primaryTextColor,xAxisTitleColor:this.xyChart?.xAxisTitleColor||this.primaryTextColor,xAxisLabelColor:this.xyChart?.xAxisLabelColor||this.primaryTextColor,xAxisTickColor:this.xyChart?.xAxisTickColor||this.primaryTextColor,xAxisLineColor:this.xyChart?.xAxisLineColor||this.primaryTextColor,yAxisTitleColor:this.xyChart?.yAxisTitleColor||this.primaryTextColor,yAxisLabelColor:this.xyChart?.yAxisLabelColor||this.primaryTextColor,yAxisTickColor:this.xyChart?.yAxisTickColor||this.primaryTextColor,yAxisLineColor:this.xyChart?.yAxisLineColor||this.primaryTextColor,plotColorPalette:this.xyChart?.plotColorPalette||"#FFF4DD,#FFD8B1,#FFA07A,#ECEFF1,#D6DBDF,#C3E0A8,#FFB6A4,#FFD74D,#738FA7,#FFFFF0"},this.requirementBackground=this.requirementBackground||this.primaryColor,this.requirementBorderColor=this.requirementBorderColor||this.primaryBorderColor,this.requirementBorderSize=this.requirementBorderSize||"1",this.requirementTextColor=this.requirementTextColor||this.primaryTextColor,this.relationColor=this.relationColor||this.lineColor,this.relationLabelBackground=this.relationLabelBackground||(this.darkMode?Je(this.secondaryColor,30):this.secondaryColor),this.relationLabelColor=this.relationLabelColor||this.actorTextColor,this.git0=this.git0||this.primaryColor,this.git1=this.git1||this.secondaryColor,this.git2=this.git2||this.tertiaryColor,this.git3=this.git3||de(this.primaryColor,{h:-30}),this.git4=this.git4||de(this.primaryColor,{h:-60}),this.git5=this.git5||de(this.primaryColor,{h:-90}),this.git6=this.git6||de(this.primaryColor,{h:60}),this.git7=this.git7||de(this.primaryColor,{h:120}),this.darkMode?(this.git0=Qe(this.git0,25),this.git1=Qe(this.git1,25),this.git2=Qe(this.git2,25),this.git3=Qe(this.git3,25),this.git4=Qe(this.git4,25),this.git5=Qe(this.git5,25),this.git6=Qe(this.git6,25),this.git7=Qe(this.git7,25)):(this.git0=Je(this.git0,25),this.git1=Je(this.git1,25),this.git2=Je(this.git2,25),this.git3=Je(this.git3,25),this.git4=Je(this.git4,25),this.git5=Je(this.git5,25),this.git6=Je(this.git6,25),this.git7=Je(this.git7,25)),this.gitInv0=this.gitInv0||Ye(this.git0),this.gitInv1=this.gitInv1||Ye(this.git1),this.gitInv2=this.gitInv2||Ye(this.git2),this.gitInv3=this.gitInv3||Ye(this.git3),this.gitInv4=this.gitInv4||Ye(this.git4),this.gitInv5=this.gitInv5||Ye(this.git5),this.gitInv6=this.gitInv6||Ye(this.git6),this.gitInv7=this.gitInv7||Ye(this.git7),this.branchLabelColor=this.branchLabelColor||(this.darkMode?"black":this.labelTextColor),this.gitBranchLabel0=this.gitBranchLabel0||this.branchLabelColor,this.gitBranchLabel1=this.gitBranchLabel1||this.branchLabelColor,this.gitBranchLabel2=this.gitBranchLabel2||this.branchLabelColor,this.gitBranchLabel3=this.gitBranchLabel3||this.branchLabelColor,this.gitBranchLabel4=this.gitBranchLabel4||this.branchLabelColor,this.gitBranchLabel5=this.gitBranchLabel5||this.branchLabelColor,this.gitBranchLabel6=this.gitBranchLabel6||this.branchLabelColor,this.gitBranchLabel7=this.gitBranchLabel7||this.branchLabelColor,this.tagLabelColor=this.tagLabelColor||this.primaryTextColor,this.tagLabelBackground=this.tagLabelBackground||this.primaryColor,this.tagLabelBorder=this.tagBorder||this.primaryBorderColor,this.tagLabelFontSize=this.tagLabelFontSize||"10px",this.commitLabelColor=this.commitLabelColor||this.secondaryTextColor,this.commitLabelBackground=this.commitLabelBackground||this.secondaryColor,this.commitLabelFontSize=this.commitLabelFontSize||"10px",this.emUiFill=this.emUiFill||"white",this.emUiStroke=this.emUiStroke||"#dbdada",this.emProcessorFill=this.emProcessorFill||"#edb3f6",this.emProcessorStroke=this.emProcessorStroke||"#b88cbf",this.emReadModelFill=this.emReadModelFill||"#d3f1a2",this.emReadModelStroke=this.emReadModelStroke||"#a3b732",this.emCommandFill=this.emCommandFill||"#bcd6fe",this.emCommandStroke=this.emCommandStroke||"#679ac3",this.emEventFill=this.emEventFill||"#ffb778",this.emEventStroke=this.emEventStroke||"#c19a0f",this.emSwimlaneBackgroundOdd=this.emSwimlaneBackgroundOdd||"rgb(250,250,250)",this.emSwimlaneBackgroundStroke=this.emSwimlaneBackgroundStroke||"rgb(240,240,240)",this.emArrowhead=this.emArrowhead||this.lineColor,this.emRelationStroke=this.emRelationStroke||this.lineColor,this.attributeBackgroundColorOdd=this.attributeBackgroundColorOdd||Gi,this.attributeBackgroundColorEven=this.attributeBackgroundColorEven||Vi,this.gradientStart=this.primaryBorderColor,this.gradientStop=this.secondaryBorderColor}calculate(t){if(typeof t!="object"){this.updateColors();return}let r=Object.keys(t);r.forEach(n=>{this[n]=t[n]}),this.updateColors(),r.forEach(n=>{this[n]=t[n]})}},IK=o(e=>{let t=new KD;return t.calculate(e),t},"getThemeVariables")});var ZD,NK,PK=F(()=>{"use strict";zi();al();ZD=class{static{o(this,"Theme")}constructor(){this.background="#333",this.primaryColor="#1f2020",this.secondaryColor=Qe(this.primaryColor,16),this.tertiaryColor=de(this.primaryColor,{h:-160}),this.primaryBorderColor=Ye(this.background),this.secondaryBorderColor=ar(this.secondaryColor,this.darkMode),this.tertiaryBorderColor=ar(this.tertiaryColor,this.darkMode),this.primaryTextColor=Ye(this.primaryColor),this.secondaryTextColor=Ye(this.secondaryColor),this.tertiaryTextColor=Ye(this.tertiaryColor),this.lineColor=Ye(this.background),this.textColor=Ye(this.background),this.mainBkg="#1f2020",this.secondBkg="calculated",this.mainContrastColor="lightgrey",this.darkTextColor=Qe(Ye("#323D47"),10),this.lineColor="calculated",this.border1="#ccc",this.border2=Oi(255,255,255,.25),this.arrowheadColor="calculated",this.fontFamily='"trebuchet ms", verdana, arial, sans-serif',this.fontSize="16px",this.labelBackground="#181818",this.textColor="#ccc",this.THEME_COLOR_LIMIT=12,this.radius=5,this.strokeWidth=1,this.nodeBkg="calculated",this.nodeBorder="calculated",this.clusterBkg="calculated",this.clusterBorder="calculated",this.defaultLinkColor="calculated",this.titleColor="#F9FFFE",this.edgeLabelBackground="calculated",this.actorBorder="calculated",this.actorBkg="calculated",this.actorTextColor="calculated",this.actorLineColor="calculated",this.signalColor="calculated",this.signalTextColor="calculated",this.labelBoxBkgColor="calculated",this.labelBoxBorderColor="calculated",this.labelTextColor="calculated",this.loopTextColor="calculated",this.noteBorderColor="calculated",this.noteBkgColor="#fff5ad",this.noteTextColor="calculated",this.activationBorderColor="calculated",this.activationBkgColor="calculated",this.sequenceNumberColor="black",this.clusterBkg="#302F3D",this.sectionBkgColor=Je("#EAE8D9",30),this.altSectionBkgColor="calculated",this.sectionBkgColor2="#EAE8D9",this.excludeBkgColor=Je(this.sectionBkgColor,10),this.taskBorderColor=Oi(255,255,255,70),this.taskBkgColor="calculated",this.taskTextColor="calculated",this.taskTextLightColor="calculated",this.taskTextOutsideColor="calculated",this.taskTextClickableColor="#003163",this.activeTaskBorderColor=Oi(255,255,255,50),this.activeTaskBkgColor="#81B1DB",this.gridColor="calculated",this.doneTaskBkgColor="calculated",this.doneTaskBorderColor="grey",this.critBorderColor="#E83737",this.critBkgColor="#E83737",this.taskTextDarkColor="calculated",this.todayLineColor="#DB5757",this.vertLineColor="#00BFFF",this.personBorder=this.primaryBorderColor,this.personBkg=this.mainBkg,this.archEdgeColor="calculated",this.archEdgeArrowColor="calculated",this.archEdgeWidth="3",this.archGroupBorderColor=this.primaryBorderColor,this.archGroupBorderWidth="2px",this.rowOdd=this.rowOdd||Qe(this.mainBkg,5)||"#ffffff",this.rowEven=this.rowEven||Je(this.mainBkg,10),this.labelColor="calculated",this.errorBkgColor="#a44141",this.errorTextColor="#ddd",this.useGradient=!0,this.gradientStart=this.primaryBorderColor,this.gradientStop=this.secondaryBorderColor,this.dropShadow="drop-shadow( 1px 2px 2px rgba(185,185,185,1))",this.noteFontWeight=this.noteFontWeight||"normal",this.fontWeight=this.fontWeight||"normal"}updateColors(){this.secondBkg=Qe(this.mainBkg,16),this.lineColor=this.mainContrastColor,this.arrowheadColor=this.mainContrastColor,this.nodeBkg=this.mainBkg,this.nodeBorder=this.border1,this.clusterBkg=this.secondBkg,this.clusterBorder=this.border2,this.defaultLinkColor=this.lineColor,this.edgeLabelBackground=Qe(this.labelBackground,25),this.actorBorder=this.border1,this.actorBkg=this.mainBkg,this.actorTextColor=this.mainContrastColor,this.actorLineColor=this.actorBorder,this.signalColor=this.mainContrastColor,this.signalTextColor=this.mainContrastColor,this.labelBoxBkgColor=this.actorBkg,this.labelBoxBorderColor=this.actorBorder,this.labelTextColor=this.mainContrastColor,this.loopTextColor=this.mainContrastColor,this.noteBorderColor=this.secondaryBorderColor,this.noteBkgColor=this.secondBkg,this.noteTextColor=this.secondaryTextColor,this.activationBorderColor=this.border1,this.activationBkgColor=this.secondBkg,this.rectBkgColor=this.rectBkgColor||this.tertiaryColor,this.altSectionBkgColor=this.background,this.taskBkgColor=Qe(this.mainBkg,23),this.taskTextColor=this.darkTextColor,this.taskTextLightColor=this.mainContrastColor,this.taskTextOutsideColor=this.taskTextLightColor,this.gridColor=this.mainContrastColor,this.doneTaskBkgColor=this.mainContrastColor,this.taskTextDarkColor=Ye(this.doneTaskBkgColor),this.archEdgeColor=this.lineColor,this.archEdgeArrowColor=this.lineColor,this.transitionColor=this.transitionColor||this.lineColor,this.transitionLabelColor=this.transitionLabelColor||this.textColor,this.stateLabelColor=this.stateLabelColor||this.stateBkg||this.primaryTextColor,this.stateBkg=this.stateBkg||this.mainBkg,this.labelBackgroundColor=this.labelBackgroundColor||this.stateBkg,this.compositeBackground=this.compositeBackground||this.background||this.tertiaryColor,this.altBackground=this.altBackground||"#555",this.compositeTitleBackground=this.compositeTitleBackground||this.mainBkg,this.compositeBorder=this.compositeBorder||this.nodeBorder,this.innerEndBackground=this.primaryBorderColor,this.specialStateColor="#f4f4f4",this.errorBkgColor=this.errorBkgColor||this.tertiaryColor,this.errorTextColor=this.errorTextColor||this.tertiaryTextColor,this.fillType0=this.primaryColor,this.fillType1=this.secondaryColor,this.fillType2=de(this.primaryColor,{h:64}),this.fillType3=de(this.secondaryColor,{h:64}),this.fillType4=de(this.primaryColor,{h:-64}),this.fillType5=de(this.secondaryColor,{h:-64}),this.fillType6=de(this.primaryColor,{h:128}),this.fillType7=de(this.secondaryColor,{h:128}),this.cScale1=this.cScale1||"#0b0000",this.cScale2=this.cScale2||"#4d1037",this.cScale3=this.cScale3||"#3f5258",this.cScale4=this.cScale4||"#4f2f1b",this.cScale5=this.cScale5||"#6e0a0a",this.cScale6=this.cScale6||"#3b0048",this.cScale7=this.cScale7||"#995a01",this.cScale8=this.cScale8||"#154706",this.cScale9=this.cScale9||"#161722",this.cScale10=this.cScale10||"#00296f",this.cScale11=this.cScale11||"#01629c",this.cScale12=this.cScale12||"#010029",this.cScale0=this.cScale0||this.primaryColor,this.cScale1=this.cScale1||this.secondaryColor,this.cScale2=this.cScale2||this.tertiaryColor,this.cScale3=this.cScale3||de(this.primaryColor,{h:30}),this.cScale4=this.cScale4||de(this.primaryColor,{h:60}),this.cScale5=this.cScale5||de(this.primaryColor,{h:90}),this.cScale6=this.cScale6||de(this.primaryColor,{h:120}),this.cScale7=this.cScale7||de(this.primaryColor,{h:150}),this.cScale8=this.cScale8||de(this.primaryColor,{h:210}),this.cScale9=this.cScale9||de(this.primaryColor,{h:270}),this.cScale10=this.cScale10||de(this.primaryColor,{h:300}),this.cScale11=this.cScale11||de(this.primaryColor,{h:330});for(let t=0;t<this.THEME_COLOR_LIMIT;t++)this["cScaleInv"+t]=this["cScaleInv"+t]||Ye(this["cScale"+t]);for(let t=0;t<this.THEME_COLOR_LIMIT;t++)this["cScalePeer"+t]=this["cScalePeer"+t]||Qe(this["cScale"+t],10);for(let t=0;t<5;t++)this["surface"+t]=this["surface"+t]||de(this.mainBkg,{h:30,s:-30,l:-(-10+t*4)}),this["surfacePeer"+t]=this["surfacePeer"+t]||de(this.mainBkg,{h:30,s:-30,l:-(-7+t*4)});this.scaleLabelColor=this.scaleLabelColor||(this.darkMode?"black":this.labelTextColor);for(let t=0;t<this.THEME_COLOR_LIMIT;t++)this["cScaleLabel"+t]=this["cScaleLabel"+t]||this.scaleLabelColor;for(let t=0;t<this.THEME_COLOR_LIMIT;t++)this["pie"+t]=this["cScale"+t];this.pieTitleTextSize=this.pieTitleTextSize||"25px",this.pieTitleTextColor=this.pieTitleTextColor||this.mainContrastColor,this.pieSectionTextSize=this.pieSectionTextSize||"17px",this.pieSectionTextColor=this.pieSectionTextColor||this.textColor,this.pieLegendTextSize=this.pieLegendTextSize||"17px",this.pieLegendTextColor=this.pieLegendTextColor||this.mainContrastColor,this.pieStrokeColor=this.pieStrokeColor||"black",this.pieStrokeWidth=this.pieStrokeWidth||"2px",this.pieOuterStrokeWidth=this.pieOuterStrokeWidth||"2px",this.pieOuterStrokeColor=this.pieOuterStrokeColor||"black",this.pieOpacity=this.pieOpacity||"0.7";for(let t=0;t<8;t++)this["venn"+(t+1)]=this["venn"+(t+1)]??Qe(this["cScale"+t],30);this.vennTitleTextColor=this.vennTitleTextColor??this.titleColor,this.vennSetTextColor=this.vennSetTextColor??this.textColor,this.cynefin={domainFontSize:this.cynefin?.domainFontSize||16,itemFontSize:this.cynefin?.itemFontSize||12,boundaryColor:this.cynefin?.boundaryColor||this.lineColor,boundaryWidth:this.cynefin?.boundaryWidth||2,cliffColor:this.cynefin?.cliffColor||"#FF6B6B",cliffWidth:this.cynefin?.cliffWidth||4,arrowColor:this.cynefin?.arrowColor||this.lineColor,arrowWidth:this.cynefin?.arrowWidth||2,complexBg:this.cynefin?.complexBg||"#1B5E20",complicatedBg:this.cynefin?.complicatedBg||"#0D47A1",chaoticBg:this.cynefin?.chaoticBg||"#BF360C",clearBg:this.cynefin?.clearBg||"#F57F17",confusionBg:this.cynefin?.confusionBg||"#4A148C",textColor:this.cynefin?.textColor||this.textColor,labelColor:this.cynefin?.labelColor||this.primaryTextColor},this.quadrant1Fill=this.quadrant1Fill||this.primaryColor,this.quadrant2Fill=this.quadrant2Fill||de(this.primaryColor,{r:5,g:5,b:5}),this.quadrant3Fill=this.quadrant3Fill||de(this.primaryColor,{r:10,g:10,b:10}),this.quadrant4Fill=this.quadrant4Fill||de(this.primaryColor,{r:15,g:15,b:15}),this.quadrant1TextFill=this.quadrant1TextFill||this.primaryTextColor,this.quadrant2TextFill=this.quadrant2TextFill||de(this.primaryTextColor,{r:-5,g:-5,b:-5}),this.quadrant3TextFill=this.quadrant3TextFill||de(this.primaryTextColor,{r:-10,g:-10,b:-10}),this.quadrant4TextFill=this.quadrant4TextFill||de(this.primaryTextColor,{r:-15,g:-15,b:-15}),this.quadrantPointFill=this.quadrantPointFill||Tn(this.quadrant1Fill)?Qe(this.quadrant1Fill):Je(this.quadrant1Fill),this.quadrantPointTextFill=this.quadrantPointTextFill||this.primaryTextColor,this.quadrantXAxisTextFill=this.quadrantXAxisTextFill||this.primaryTextColor,this.quadrantYAxisTextFill=this.quadrantYAxisTextFill||this.primaryTextColor,this.quadrantInternalBorderStrokeFill=this.quadrantInternalBorderStrokeFill||this.primaryBorderColor,this.quadrantExternalBorderStrokeFill=this.quadrantExternalBorderStrokeFill||this.primaryBorderColor,this.quadrantTitleFill=this.quadrantTitleFill||this.primaryTextColor,this.xyChart={backgroundColor:this.xyChart?.backgroundColor||this.background,titleColor:this.xyChart?.titleColor||this.primaryTextColor,dataLabelColor:this.xyChart?.dataLabelColor||this.primaryTextColor,xAxisTitleColor:this.xyChart?.xAxisTitleColor||this.primaryTextColor,xAxisLabelColor:this.xyChart?.xAxisLabelColor||this.primaryTextColor,xAxisTickColor:this.xyChart?.xAxisTickColor||this.primaryTextColor,xAxisLineColor:this.xyChart?.xAxisLineColor||this.primaryTextColor,yAxisTitleColor:this.xyChart?.yAxisTitleColor||this.primaryTextColor,yAxisLabelColor:this.xyChart?.yAxisLabelColor||this.primaryTextColor,yAxisTickColor:this.xyChart?.yAxisTickColor||this.primaryTextColor,yAxisLineColor:this.xyChart?.yAxisLineColor||this.primaryTextColor,plotColorPalette:this.xyChart?.plotColorPalette||"#3498db,#2ecc71,#e74c3c,#f1c40f,#bdc3c7,#ffffff,#34495e,#9b59b6,#1abc9c,#e67e22"},this.packet={startByteColor:this.primaryTextColor,endByteColor:this.primaryTextColor,labelColor:this.primaryTextColor,titleColor:this.primaryTextColor,blockStrokeColor:this.primaryTextColor,blockFillColor:this.background},this.radar={axisColor:this.radar?.axisColor||this.lineColor,axisStrokeWidth:this.radar?.axisStrokeWidth||2,axisLabelFontSize:this.radar?.axisLabelFontSize||12,curveOpacity:this.radar?.curveOpacity||.5,curveStrokeWidth:this.radar?.curveStrokeWidth||2,graticuleColor:this.radar?.graticuleColor||"#DEDEDE",graticuleStrokeWidth:this.radar?.graticuleStrokeWidth||1,graticuleOpacity:this.radar?.graticuleOpacity||.3,legendBoxSize:this.radar?.legendBoxSize||12,legendFontSize:this.radar?.legendFontSize||12},this.wardleyEvolutionColor=this.wardleyEvolutionColor||"#ff6b6b",this.wardley={backgroundColor:this.wardley?.backgroundColor||this.background,axisColor:this.wardley?.axisColor||this.lineColor,axisTextColor:this.wardley?.axisTextColor||this.primaryTextColor,gridColor:this.wardley?.gridColor||this.gridColor,componentFill:this.wardley?.componentFill||this.mainBkg,componentStroke:this.wardley?.componentStroke||this.lineColor,componentLabelColor:this.wardley?.componentLabelColor||this.primaryTextColor,linkStroke:this.wardley?.linkStroke||this.lineColor,evolutionStroke:this.wardley?.evolutionStroke||this.wardleyEvolutionColor,annotationStroke:this.wardley?.annotationStroke||this.lineColor,annotationTextColor:this.wardley?.annotationTextColor||this.primaryTextColor,annotationFill:this.wardley?.annotationFill||this.mainBkg},this.classText=this.primaryTextColor,this.requirementBackground=this.requirementBackground||this.primaryColor,this.requirementBorderColor=this.requirementBorderColor||this.primaryBorderColor,this.requirementBorderSize=this.requirementBorderSize||"1",this.requirementTextColor=this.requirementTextColor||this.primaryTextColor,this.relationColor=this.relationColor||this.lineColor,this.relationLabelBackground=this.relationLabelBackground||(this.darkMode?Je(this.secondaryColor,30):this.secondaryColor),this.relationLabelColor=this.relationLabelColor||this.actorTextColor,this.git0=Qe(this.secondaryColor,20),this.git1=Qe(this.pie2||this.secondaryColor,20),this.git2=Qe(this.pie3||this.tertiaryColor,20),this.git3=Qe(this.pie4||de(this.primaryColor,{h:-30}),20),this.git4=Qe(this.pie5||de(this.primaryColor,{h:-60}),20),this.git5=Qe(this.pie6||de(this.primaryColor,{h:-90}),10),this.git6=Qe(this.pie7||de(this.primaryColor,{h:60}),10),this.git7=Qe(this.pie8||de(this.primaryColor,{h:120}),20),this.gitInv0=this.gitInv0||Ye(this.git0),this.gitInv1=this.gitInv1||Ye(this.git1),this.gitInv2=this.gitInv2||Ye(this.git2),this.gitInv3=this.gitInv3||Ye(this.git3),this.gitInv4=this.gitInv4||Ye(this.git4),this.gitInv5=this.gitInv5||Ye(this.git5),this.gitInv6=this.gitInv6||Ye(this.git6),this.gitInv7=this.gitInv7||Ye(this.git7),this.gitBranchLabel0=this.gitBranchLabel0||Ye(this.labelTextColor),this.gitBranchLabel1=this.gitBranchLabel1||this.labelTextColor,this.gitBranchLabel2=this.gitBranchLabel2||this.labelTextColor,this.gitBranchLabel3=this.gitBranchLabel3||Ye(this.labelTextColor),this.gitBranchLabel4=this.gitBranchLabel4||this.labelTextColor,this.gitBranchLabel5=this.gitBranchLabel5||this.labelTextColor,this.gitBranchLabel6=this.gitBranchLabel6||this.labelTextColor,this.gitBranchLabel7=this.gitBranchLabel7||this.labelTextColor,this.tagLabelColor=this.tagLabelColor||this.primaryTextColor,this.tagLabelBackground=this.tagLabelBackground||this.primaryColor,this.tagLabelBorder=this.tagBorder||this.primaryBorderColor,this.tagLabelFontSize=this.tagLabelFontSize||"10px",this.commitLabelColor=this.commitLabelColor||this.secondaryTextColor,this.commitLabelBackground=this.commitLabelBackground||this.secondaryColor,this.commitLabelFontSize=this.commitLabelFontSize||"10px",this.emUiFill=this.emUiFill||"#2d2d2d",this.emUiStroke=this.emUiStroke||"#555",this.emProcessorFill=this.emProcessorFill||Qe("#5a3d5c",10),this.emProcessorStroke=this.emProcessorStroke||"#8a6d8c",this.emReadModelFill=this.emReadModelFill||Qe("#3d5a2d",10),this.emReadModelStroke=this.emReadModelStroke||"#6d8c5c",this.emCommandFill=this.emCommandFill||Qe("#2d3d5a",10),this.emCommandStroke=this.emCommandStroke||"#5c6d8c",this.emEventFill=this.emEventFill||Qe("#5a452d",10),this.emEventStroke=this.emEventStroke||"#8c755c",this.emSwimlaneBackgroundOdd=this.emSwimlaneBackgroundOdd||Qe(this.background,5),this.emSwimlaneBackgroundStroke=this.emSwimlaneBackgroundStroke||Qe(this.background,12),this.emArrowhead=this.emArrowhead||this.lineColor,this.emRelationStroke=this.emRelationStroke||this.lineColor,this.attributeBackgroundColorOdd=this.attributeBackgroundColorOdd||Qe(this.background,12),this.attributeBackgroundColorEven=this.attributeBackgroundColorEven||Qe(this.background,2),this.nodeBorder=this.nodeBorder||"#999"}calculate(t){if(typeof t!="object"){this.updateColors();return}let r=Object.keys(t);r.forEach(n=>{this[n]=t[n]}),this.updateColors(),r.forEach(n=>{this[n]=t[n]})}},NK=o(e=>{let t=new ZD;return t.calculate(e),t},"getThemeVariables")});var QD,ma,Pc=F(()=>{"use strict";zi();al();Fl();QD=class{static{o(this,"Theme")}constructor(){this.background="#f4f4f4",this.primaryColor="#ECECFF",this.secondaryColor=de(this.primaryColor,{h:120}),this.secondaryColor="#ffffde",this.tertiaryColor=de(this.primaryColor,{h:-160}),this.primaryBorderColor=ar(this.primaryColor,this.darkMode),this.secondaryBorderColor=ar(this.secondaryColor,this.darkMode),this.tertiaryBorderColor=ar(this.tertiaryColor,this.darkMode),this.primaryTextColor=Ye(this.primaryColor),this.secondaryTextColor=Ye(this.secondaryColor),this.tertiaryTextColor=Ye(this.tertiaryColor),this.lineColor=Ye(this.background),this.textColor=Ye(this.background),this.background="white",this.mainBkg="#ECECFF",this.secondBkg="#ffffde",this.lineColor="#333333",this.border1="#9370DB",this.primaryBorderColor=ar(this.primaryColor,this.darkMode),this.border2="#aaaa33",this.arrowheadColor="#333333",this.fontFamily='"trebuchet ms", verdana, arial, sans-serif',this.fontSize="16px",this.labelBackground="rgba(232,232,232, 0.8)",this.textColor="#333",this.THEME_COLOR_LIMIT=12,this.radius=5,this.strokeWidth=1,this.nodeBkg="calculated",this.nodeBorder="calculated",this.clusterBkg="calculated",this.clusterBorder="calculated",this.defaultLinkColor="calculated",this.titleColor="calculated",this.edgeLabelBackground="calculated",this.actorBorder="calculated",this.actorBkg="calculated",this.actorTextColor="black",this.actorLineColor="calculated",this.signalColor="calculated",this.signalTextColor="calculated",this.labelBoxBkgColor="calculated",this.labelBoxBorderColor="calculated",this.labelTextColor="calculated",this.loopTextColor="calculated",this.noteBorderColor="calculated",this.noteBkgColor="#fff5ad",this.noteTextColor="calculated",this.activationBorderColor="#666",this.activationBkgColor="#f4f4f4",this.sequenceNumberColor="white",this.clusterBkg="#FBFBFF",this.sectionBkgColor="calculated",this.altSectionBkgColor="calculated",this.sectionBkgColor2="calculated",this.excludeBkgColor="#eeeeee",this.taskBorderColor="calculated",this.taskBkgColor="calculated",this.taskTextLightColor="calculated",this.taskTextColor=this.taskTextLightColor,this.taskTextDarkColor="calculated",this.taskTextOutsideColor=this.taskTextDarkColor,this.taskTextClickableColor="calculated",this.activeTaskBorderColor="calculated",this.activeTaskBkgColor="calculated",this.gridColor="calculated",this.doneTaskBkgColor="calculated",this.doneTaskBorderColor="calculated",this.critBorderColor="calculated",this.critBkgColor="calculated",this.todayLineColor="calculated",this.vertLineColor="calculated",this.sectionBkgColor=Oi(102,102,255,.49),this.altSectionBkgColor="white",this.sectionBkgColor2="#fff400",this.taskBorderColor="#534fbc",this.taskBkgColor="#8a90dd",this.taskTextLightColor="white",this.taskTextColor="calculated",this.taskTextDarkColor="black",this.taskTextOutsideColor="calculated",this.taskTextClickableColor="#003163",this.activeTaskBorderColor="#534fbc",this.activeTaskBkgColor="#bfc7ff",this.gridColor="lightgrey",this.doneTaskBkgColor="lightgrey",this.doneTaskBorderColor="grey",this.critBorderColor="#ff8888",this.critBkgColor="red",this.todayLineColor="red",this.vertLineColor="navy",this.noteFontWeight=this.noteFontWeight||"normal",this.fontWeight=this.fontWeight||"normal",this.personBorder=this.primaryBorderColor,this.personBkg=this.mainBkg,this.archEdgeColor="calculated",this.archEdgeArrowColor="calculated",this.archEdgeWidth="3",this.archGroupBorderColor=this.primaryBorderColor,this.archGroupBorderWidth="2px",this.rowOdd="calculated",this.rowEven="calculated",this.labelColor="black",this.errorBkgColor="#552222",this.errorTextColor="#552222",this.useGradient=!1,this.gradientStart=this.primaryBorderColor,this.gradientStop=this.secondaryBorderColor,this.dropShadow="drop-shadow(1px 2px 2px rgba(185, 185, 185, 1))",this.updateColors()}updateColors(){this.cScale0=this.cScale0||this.primaryColor,this.cScale1=this.cScale1||this.secondaryColor,this.cScale2=this.cScale2||this.tertiaryColor,this.cScale3=this.cScale3||de(this.primaryColor,{h:30}),this.cScale4=this.cScale4||de(this.primaryColor,{h:60}),this.cScale5=this.cScale5||de(this.primaryColor,{h:90}),this.cScale6=this.cScale6||de(this.primaryColor,{h:120}),this.cScale7=this.cScale7||de(this.primaryColor,{h:150}),this.cScale8=this.cScale8||de(this.primaryColor,{h:210}),this.cScale9=this.cScale9||de(this.primaryColor,{h:270}),this.cScale10=this.cScale10||de(this.primaryColor,{h:300}),this.cScale11=this.cScale11||de(this.primaryColor,{h:330}),this.cScalePeer1=this.cScalePeer1||Je(this.secondaryColor,45),this.cScalePeer2=this.cScalePeer2||Je(this.tertiaryColor,40);for(let t=0;t<this.THEME_COLOR_LIMIT;t++)this["cScale"+t]=Je(this["cScale"+t],10),this["cScalePeer"+t]=this["cScalePeer"+t]||Je(this["cScale"+t],25);for(let t=0;t<this.THEME_COLOR_LIMIT;t++)this["cScaleInv"+t]=this["cScaleInv"+t]||de(this["cScale"+t],{h:180});for(let t=0;t<5;t++)this["surface"+t]=this["surface"+t]||de(this.mainBkg,{h:30,l:-(5+t*5)}),this["surfacePeer"+t]=this["surfacePeer"+t]||de(this.mainBkg,{h:30,l:-(7+t*5)});if(this.scaleLabelColor=this.scaleLabelColor!=="calculated"&&this.scaleLabelColor?this.scaleLabelColor:this.labelTextColor,this.labelTextColor!=="calculated"){this.cScaleLabel0=this.cScaleLabel0||Ye(this.labelTextColor),this.cScaleLabel3=this.cScaleLabel3||Ye(this.labelTextColor);for(let t=0;t<this.THEME_COLOR_LIMIT;t++)this["cScaleLabel"+t]=this["cScaleLabel"+t]||this.labelTextColor}this.nodeBkg=this.mainBkg,this.nodeBorder=this.border1,this.clusterBkg=this.secondBkg,this.clusterBorder=this.border2,this.defaultLinkColor=this.lineColor,this.titleColor=this.textColor,this.edgeLabelBackground=this.labelBackground,this.actorBorder=this.border1,this.actorBkg=this.mainBkg,this.labelBoxBkgColor=this.actorBkg,this.signalColor=this.textColor,this.signalTextColor=this.textColor,this.labelBoxBorderColor=this.actorBorder,this.labelTextColor=this.actorTextColor,this.loopTextColor=this.actorTextColor,this.noteBorderColor=this.border2,this.noteTextColor=this.actorTextColor,this.actorLineColor=this.actorBorder,this.rectBkgColor=this.rectBkgColor||this.tertiaryColor,this.taskTextColor=this.taskTextLightColor,this.taskTextOutsideColor=this.taskTextDarkColor,this.archEdgeColor=this.lineColor,this.archEdgeArrowColor=this.lineColor,this.rowOdd=this.rowOdd||Qe(this.primaryColor,75)||"#ffffff",this.rowEven=this.rowEven||Qe(this.primaryColor,1),this.transitionColor=this.transitionColor||this.lineColor,this.transitionLabelColor=this.transitionLabelColor||this.textColor,this.stateLabelColor=this.stateLabelColor||this.stateBkg||this.primaryTextColor,this.stateBkg=this.stateBkg||this.mainBkg,this.labelBackgroundColor=this.labelBackgroundColor||this.stateBkg,this.compositeBackground=this.compositeBackground||this.background||this.tertiaryColor,this.altBackground=this.altBackground||"#f0f0f0",this.compositeTitleBackground=this.compositeTitleBackground||this.mainBkg,this.compositeBorder=this.compositeBorder||this.nodeBorder,this.innerEndBackground=this.nodeBorder,this.specialStateColor=this.lineColor,this.errorBkgColor=this.errorBkgColor||this.tertiaryColor,this.errorTextColor=this.errorTextColor||this.tertiaryTextColor,this.transitionColor=this.transitionColor||this.lineColor,this.classText=this.primaryTextColor,this.fillType0=this.primaryColor,this.fillType1=this.secondaryColor,this.fillType2=de(this.primaryColor,{h:64}),this.fillType3=de(this.secondaryColor,{h:64}),this.fillType4=de(this.primaryColor,{h:-64}),this.fillType5=de(this.secondaryColor,{h:-64}),this.fillType6=de(this.primaryColor,{h:128}),this.fillType7=de(this.secondaryColor,{h:128}),this.pie1=this.pie1||this.primaryColor,this.pie2=this.pie2||this.secondaryColor,this.pie3=this.pie3||de(this.tertiaryColor,{l:-40}),this.pie4=this.pie4||de(this.primaryColor,{l:-10}),this.pie5=this.pie5||de(this.secondaryColor,{l:-30}),this.pie6=this.pie6||de(this.tertiaryColor,{l:-20}),this.pie7=this.pie7||de(this.primaryColor,{h:60,l:-20}),this.pie8=this.pie8||de(this.primaryColor,{h:-60,l:-40}),this.pie9=this.pie9||de(this.primaryColor,{h:120,l:-40}),this.pie10=this.pie10||de(this.primaryColor,{h:60,l:-40}),this.pie11=this.pie11||de(this.primaryColor,{h:-90,l:-40}),this.pie12=this.pie12||de(this.primaryColor,{h:120,l:-30}),this.pieTitleTextSize=this.pieTitleTextSize||"25px",this.pieTitleTextColor=this.pieTitleTextColor||this.taskTextDarkColor,this.pieSectionTextSize=this.pieSectionTextSize||"17px",this.pieSectionTextColor=this.pieSectionTextColor||this.textColor,this.pieLegendTextSize=this.pieLegendTextSize||"17px",this.pieLegendTextColor=this.pieLegendTextColor||this.taskTextDarkColor,this.pieStrokeColor=this.pieStrokeColor||"black",this.pieStrokeWidth=this.pieStrokeWidth||"2px",this.pieOuterStrokeWidth=this.pieOuterStrokeWidth||"2px",this.pieOuterStrokeColor=this.pieOuterStrokeColor||"black",this.pieOpacity=this.pieOpacity||"0.7",this.venn1=this.venn1??de(this.primaryColor,{l:-30}),this.venn2=this.venn2??de(this.secondaryColor,{l:-30}),this.venn3=this.venn3??de(this.tertiaryColor,{l:-40}),this.venn4=this.venn4??de(this.primaryColor,{h:60,l:-30}),this.venn5=this.venn5??de(this.primaryColor,{h:-60,l:-30}),this.venn6=this.venn6??de(this.secondaryColor,{h:60,l:-30}),this.venn7=this.venn7??de(this.primaryColor,{h:120,l:-30}),this.venn8=this.venn8??de(this.secondaryColor,{h:120,l:-30}),this.vennTitleTextColor=this.vennTitleTextColor??this.titleColor,this.vennSetTextColor=this.vennSetTextColor??this.textColor,this.cynefin={domainFontSize:this.cynefin?.domainFontSize||16,itemFontSize:this.cynefin?.itemFontSize||12,boundaryColor:this.cynefin?.boundaryColor||this.lineColor,boundaryWidth:this.cynefin?.boundaryWidth||2,cliffColor:this.cynefin?.cliffColor||"#8B0000",cliffWidth:this.cynefin?.cliffWidth||4,arrowColor:this.cynefin?.arrowColor||this.lineColor,arrowWidth:this.cynefin?.arrowWidth||2,complexBg:this.cynefin?.complexBg||"#E8F5E9",complicatedBg:this.cynefin?.complicatedBg||"#E3F2FD",chaoticBg:this.cynefin?.chaoticBg||"#FBE9E7",clearBg:this.cynefin?.clearBg||"#FFF8E1",confusionBg:this.cynefin?.confusionBg||"#F3E5F5",textColor:this.cynefin?.textColor||this.textColor,labelColor:this.cynefin?.labelColor||this.primaryTextColor},this.quadrant1Fill=this.quadrant1Fill||this.primaryColor,this.quadrant2Fill=this.quadrant2Fill||de(this.primaryColor,{r:5,g:5,b:5}),this.quadrant3Fill=this.quadrant3Fill||de(this.primaryColor,{r:10,g:10,b:10}),this.quadrant4Fill=this.quadrant4Fill||de(this.primaryColor,{r:15,g:15,b:15}),this.quadrant1TextFill=this.quadrant1TextFill||this.primaryTextColor,this.quadrant2TextFill=this.quadrant2TextFill||de(this.primaryTextColor,{r:-5,g:-5,b:-5}),this.quadrant3TextFill=this.quadrant3TextFill||de(this.primaryTextColor,{r:-10,g:-10,b:-10}),this.quadrant4TextFill=this.quadrant4TextFill||de(this.primaryTextColor,{r:-15,g:-15,b:-15}),this.quadrantPointFill=this.quadrantPointFill||Tn(this.quadrant1Fill)?Qe(this.quadrant1Fill):Je(this.quadrant1Fill),this.quadrantPointTextFill=this.quadrantPointTextFill||this.primaryTextColor,this.quadrantXAxisTextFill=this.quadrantXAxisTextFill||this.primaryTextColor,this.quadrantYAxisTextFill=this.quadrantYAxisTextFill||this.primaryTextColor,this.quadrantInternalBorderStrokeFill=this.quadrantInternalBorderStrokeFill||this.primaryBorderColor,this.quadrantExternalBorderStrokeFill=this.quadrantExternalBorderStrokeFill||this.primaryBorderColor,this.quadrantTitleFill=this.quadrantTitleFill||this.primaryTextColor,this.radar={axisColor:this.radar?.axisColor||this.lineColor,axisStrokeWidth:this.radar?.axisStrokeWidth||2,axisLabelFontSize:this.radar?.axisLabelFontSize||12,curveOpacity:this.radar?.curveOpacity||.5,curveStrokeWidth:this.radar?.curveStrokeWidth||2,graticuleColor:this.radar?.graticuleColor||"#DEDEDE",graticuleStrokeWidth:this.radar?.graticuleStrokeWidth||1,graticuleOpacity:this.radar?.graticuleOpacity||.3,legendBoxSize:this.radar?.legendBoxSize||12,legendFontSize:this.radar?.legendFontSize||12},this.wardleyEvolutionColor=this.wardleyEvolutionColor||"#dc3545",this.wardley={backgroundColor:this.wardley?.backgroundColor||this.background,axisColor:this.wardley?.axisColor||this.lineColor,axisTextColor:this.wardley?.axisTextColor||this.primaryTextColor,gridColor:this.wardley?.gridColor||this.gridColor,componentFill:this.wardley?.componentFill||this.background,componentStroke:this.wardley?.componentStroke||this.lineColor,componentLabelColor:this.wardley?.componentLabelColor||this.primaryTextColor,linkStroke:this.wardley?.linkStroke||this.lineColor,evolutionStroke:this.wardley?.evolutionStroke||this.wardleyEvolutionColor,annotationStroke:this.wardley?.annotationStroke||this.lineColor,annotationTextColor:this.wardley?.annotationTextColor||this.primaryTextColor,annotationFill:this.wardley?.annotationFill||this.background},this.xyChart={backgroundColor:this.xyChart?.backgroundColor||this.background,titleColor:this.xyChart?.titleColor||this.primaryTextColor,dataLabelColor:this.xyChart?.dataLabelColor||this.primaryTextColor,xAxisTitleColor:this.xyChart?.xAxisTitleColor||this.primaryTextColor,xAxisLabelColor:this.xyChart?.xAxisLabelColor||this.primaryTextColor,xAxisTickColor:this.xyChart?.xAxisTickColor||this.primaryTextColor,xAxisLineColor:this.xyChart?.xAxisLineColor||this.primaryTextColor,yAxisTitleColor:this.xyChart?.yAxisTitleColor||this.primaryTextColor,yAxisLabelColor:this.xyChart?.yAxisLabelColor||this.primaryTextColor,yAxisTickColor:this.xyChart?.yAxisTickColor||this.primaryTextColor,yAxisLineColor:this.xyChart?.yAxisLineColor||this.primaryTextColor,plotColorPalette:this.xyChart?.plotColorPalette||"#ECECFF,#8493A6,#FFC3A0,#DCDDE1,#B8E994,#D1A36F,#C3CDE6,#FFB6C1,#496078,#F8F3E3"},this.requirementBackground=this.requirementBackground||this.primaryColor,this.requirementBorderColor=this.requirementBorderColor||this.primaryBorderColor,this.requirementBorderSize=this.requirementBorderSize||"1",this.requirementTextColor=this.requirementTextColor||this.primaryTextColor,this.relationColor=this.relationColor||this.lineColor,this.relationLabelBackground=this.relationLabelBackground||this.labelBackground,this.relationLabelColor=this.relationLabelColor||this.actorTextColor,this.git0=this.git0||this.primaryColor,this.git1=this.git1||this.secondaryColor,this.git2=this.git2||this.tertiaryColor,this.git3=this.git3||de(this.primaryColor,{h:-30}),this.git4=this.git4||de(this.primaryColor,{h:-60}),this.git5=this.git5||de(this.primaryColor,{h:-90}),this.git6=this.git6||de(this.primaryColor,{h:60}),this.git7=this.git7||de(this.primaryColor,{h:120}),this.darkMode?(this.git0=Qe(this.git0,25),this.git1=Qe(this.git1,25),this.git2=Qe(this.git2,25),this.git3=Qe(this.git3,25),this.git4=Qe(this.git4,25),this.git5=Qe(this.git5,25),this.git6=Qe(this.git6,25),this.git7=Qe(this.git7,25)):(this.git0=Je(this.git0,25),this.git1=Je(this.git1,25),this.git2=Je(this.git2,25),this.git3=Je(this.git3,25),this.git4=Je(this.git4,25),this.git5=Je(this.git5,25),this.git6=Je(this.git6,25),this.git7=Je(this.git7,25)),this.gitInv0=this.gitInv0||Je(Ye(this.git0),25),this.gitInv1=this.gitInv1||Ye(this.git1),this.gitInv2=this.gitInv2||Ye(this.git2),this.gitInv3=this.gitInv3||Ye(this.git3),this.gitInv4=this.gitInv4||Ye(this.git4),this.gitInv5=this.gitInv5||Ye(this.git5),this.gitInv6=this.gitInv6||Ye(this.git6),this.gitInv7=this.gitInv7||Ye(this.git7),this.gitBranchLabel0=this.gitBranchLabel0||Ye(this.labelTextColor),this.gitBranchLabel1=this.gitBranchLabel1||this.labelTextColor,this.gitBranchLabel2=this.gitBranchLabel2||this.labelTextColor,this.gitBranchLabel3=this.gitBranchLabel3||Ye(this.labelTextColor),this.gitBranchLabel4=this.gitBranchLabel4||this.labelTextColor,this.gitBranchLabel5=this.gitBranchLabel5||this.labelTextColor,this.gitBranchLabel6=this.gitBranchLabel6||this.labelTextColor,this.gitBranchLabel7=this.gitBranchLabel7||this.labelTextColor,this.tagLabelColor=this.tagLabelColor||this.primaryTextColor,this.tagLabelBackground=this.tagLabelBackground||this.primaryColor,this.tagLabelBorder=this.tagBorder||this.primaryBorderColor,this.tagLabelFontSize=this.tagLabelFontSize||"10px",this.commitLabelColor=this.commitLabelColor||this.secondaryTextColor,this.commitLabelBackground=this.commitLabelBackground||this.secondaryColor,this.commitLabelFontSize=this.commitLabelFontSize||"10px",this.emUiFill=this.emUiFill||"white",this.emUiStroke=this.emUiStroke||"#dbdada",this.emProcessorFill=this.emProcessorFill||"#edb3f6",this.emProcessorStroke=this.emProcessorStroke||"#b88cbf",this.emReadModelFill=this.emReadModelFill||"#d3f1a2",this.emReadModelStroke=this.emReadModelStroke||"#a3b732",this.emCommandFill=this.emCommandFill||"#bcd6fe",this.emCommandStroke=this.emCommandStroke||"#679ac3",this.emEventFill=this.emEventFill||"#ffb778",this.emEventStroke=this.emEventStroke||"#c19a0f",this.emSwimlaneBackgroundOdd=this.emSwimlaneBackgroundOdd||"rgb(250,250,250)",this.emSwimlaneBackgroundStroke=this.emSwimlaneBackgroundStroke||"rgb(240,240,240)",this.emArrowhead=this.emArrowhead||this.lineColor,this.emRelationStroke=this.emRelationStroke||this.lineColor,this.attributeBackgroundColorOdd=this.attributeBackgroundColorOdd||Gi,this.attributeBackgroundColorEven=this.attributeBackgroundColorEven||Vi}calculate(t){if(Object.keys(this).forEach(n=>{this[n]==="calculated"&&(this[n]=void 0)}),typeof t!="object"){this.updateColors();return}let r=Object.keys(t);r.forEach(n=>{this[n]=t[n]}),this.updateColors(),r.forEach(n=>{this[n]=t[n]})}},ma=o(e=>{let t=new QD;return t.calculate(e),t},"getThemeVariables")});var JD,OK,BK=F(()=>{"use strict";zi();Fl();al();JD=class{static{o(this,"Theme")}constructor(){this.background="#f4f4f4",this.primaryColor="#cde498",this.secondaryColor="#cdffb2",this.background="white",this.mainBkg="#cde498",this.secondBkg="#cdffb2",this.lineColor="green",this.border1="#13540c",this.border2="#6eaa49",this.arrowheadColor="green",this.fontFamily='"trebuchet ms", verdana, arial, sans-serif',this.fontSize="16px",this.tertiaryColor=Qe("#cde498",10),this.primaryBorderColor=ar(this.primaryColor,this.darkMode),this.secondaryBorderColor=ar(this.secondaryColor,this.darkMode),this.tertiaryBorderColor=ar(this.tertiaryColor,this.darkMode),this.primaryTextColor=Ye(this.primaryColor),this.secondaryTextColor=Ye(this.secondaryColor),this.tertiaryTextColor=Ye(this.primaryColor),this.lineColor=Ye(this.background),this.textColor=Ye(this.background),this.THEME_COLOR_LIMIT=12,this.radius=5,this.strokeWidth=1,this.nodeBkg="calculated",this.nodeBorder="calculated",this.clusterBkg="calculated",this.clusterBorder="calculated",this.defaultLinkColor="calculated",this.titleColor="#333",this.edgeLabelBackground="#e8e8e8",this.actorBorder="calculated",this.actorBkg="calculated",this.actorTextColor="black",this.actorLineColor="calculated",this.signalColor="#333",this.signalTextColor="#333",this.labelBoxBkgColor="calculated",this.labelBoxBorderColor="#326932",this.labelTextColor="calculated",this.loopTextColor="calculated",this.noteBorderColor="calculated",this.noteBkgColor="#fff5ad",this.noteTextColor="calculated",this.activationBorderColor="#666",this.activationBkgColor="#f4f4f4",this.sequenceNumberColor="white",this.sectionBkgColor="#6eaa49",this.altSectionBkgColor="white",this.sectionBkgColor2="#6eaa49",this.excludeBkgColor="#eeeeee",this.taskBorderColor="calculated",this.taskBkgColor="#487e3a",this.taskTextLightColor="white",this.taskTextColor="calculated",this.taskTextDarkColor="black",this.taskTextOutsideColor="calculated",this.taskTextClickableColor="#003163",this.activeTaskBorderColor="calculated",this.activeTaskBkgColor="calculated",this.gridColor="lightgrey",this.doneTaskBkgColor="lightgrey",this.doneTaskBorderColor="grey",this.critBorderColor="#ff8888",this.critBkgColor="red",this.todayLineColor="red",this.vertLineColor="#00BFFF",this.personBorder=this.primaryBorderColor,this.personBkg=this.mainBkg,this.archEdgeColor="calculated",this.archEdgeArrowColor="calculated",this.archEdgeWidth="3",this.archGroupBorderColor=this.primaryBorderColor,this.archGroupBorderWidth="2px",this.noteFontWeight="normal",this.fontWeight="normal",this.labelColor="black",this.errorBkgColor="#552222",this.errorTextColor="#552222",this.useGradient=!0,this.gradientStart=this.primaryBorderColor,this.gradientStop=this.secondaryBorderColor,this.dropShadow="drop-shadow( 1px 2px 2px rgba(185,185,185,0.5))"}updateColors(){this.actorBorder=Je(this.mainBkg,20),this.actorBkg=this.mainBkg,this.labelBoxBkgColor=this.actorBkg,this.labelTextColor=this.actorTextColor,this.loopTextColor=this.actorTextColor,this.noteBorderColor=this.border2,this.noteTextColor=this.actorTextColor,this.actorLineColor=this.actorBorder,this.rectBkgColor=this.rectBkgColor||this.tertiaryColor,this.cScale0=this.cScale0||this.primaryColor,this.cScale1=this.cScale1||this.secondaryColor,this.cScale2=this.cScale2||this.tertiaryColor,this.cScale3=this.cScale3||de(this.primaryColor,{h:30}),this.cScale4=this.cScale4||de(this.primaryColor,{h:60}),this.cScale5=this.cScale5||de(this.primaryColor,{h:90}),this.cScale6=this.cScale6||de(this.primaryColor,{h:120}),this.cScale7=this.cScale7||de(this.primaryColor,{h:150}),this.cScale8=this.cScale8||de(this.primaryColor,{h:210}),this.cScale9=this.cScale9||de(this.primaryColor,{h:270}),this.cScale10=this.cScale10||de(this.primaryColor,{h:300}),this.cScale11=this.cScale11||de(this.primaryColor,{h:330}),this.cScalePeer1=this.cScalePeer1||Je(this.secondaryColor,45),this.cScalePeer2=this.cScalePeer2||Je(this.tertiaryColor,40);for(let t=0;t<this.THEME_COLOR_LIMIT;t++)this["cScale"+t]=Je(this["cScale"+t],10),this["cScalePeer"+t]=this["cScalePeer"+t]||Je(this["cScale"+t],25);for(let t=0;t<this.THEME_COLOR_LIMIT;t++)this["cScaleInv"+t]=this["cScaleInv"+t]||de(this["cScale"+t],{h:180});this.scaleLabelColor=this.scaleLabelColor!=="calculated"&&this.scaleLabelColor?this.scaleLabelColor:this.labelTextColor;for(let t=0;t<this.THEME_COLOR_LIMIT;t++)this["cScaleLabel"+t]=this["cScaleLabel"+t]||this.scaleLabelColor;for(let t=0;t<5;t++)this["surface"+t]=this["surface"+t]||de(this.mainBkg,{h:30,s:-30,l:-(5+t*5)}),this["surfacePeer"+t]=this["surfacePeer"+t]||de(this.mainBkg,{h:30,s:-30,l:-(8+t*5)});this.nodeBkg=this.mainBkg,this.nodeBorder=this.border1,this.clusterBkg=this.secondBkg,this.clusterBorder=this.border2,this.defaultLinkColor=this.lineColor,this.taskBorderColor=this.border1,this.taskTextColor=this.taskTextLightColor,this.taskTextOutsideColor=this.taskTextDarkColor,this.activeTaskBorderColor=this.taskBorderColor,this.activeTaskBkgColor=this.mainBkg,this.archEdgeColor=this.lineColor,this.archEdgeArrowColor=this.lineColor,this.rowOdd=this.rowOdd||Qe(this.mainBkg,75)||"#ffffff",this.rowEven=this.rowEven||Qe(this.mainBkg,20),this.transitionColor=this.transitionColor||this.lineColor,this.transitionLabelColor=this.transitionLabelColor||this.textColor,this.stateLabelColor=this.stateLabelColor||this.stateBkg||this.primaryTextColor,this.stateBkg=this.stateBkg||this.mainBkg,this.labelBackgroundColor=this.labelBackgroundColor||this.stateBkg,this.compositeBackground=this.compositeBackground||this.background||this.tertiaryColor,this.altBackground=this.altBackground||"#f0f0f0",this.compositeTitleBackground=this.compositeTitleBackground||this.mainBkg,this.compositeBorder=this.compositeBorder||this.nodeBorder,this.innerEndBackground=this.primaryBorderColor,this.specialStateColor=this.lineColor,this.errorBkgColor=this.errorBkgColor||this.tertiaryColor,this.errorTextColor=this.errorTextColor||this.tertiaryTextColor,this.transitionColor=this.transitionColor||this.lineColor,this.classText=this.primaryTextColor,this.fillType0=this.primaryColor,this.fillType1=this.secondaryColor,this.fillType2=de(this.primaryColor,{h:64}),this.fillType3=de(this.secondaryColor,{h:64}),this.fillType4=de(this.primaryColor,{h:-64}),this.fillType5=de(this.secondaryColor,{h:-64}),this.fillType6=de(this.primaryColor,{h:128}),this.fillType7=de(this.secondaryColor,{h:128}),this.pie1=this.pie1||this.primaryColor,this.pie2=this.pie2||this.secondaryColor,this.pie3=this.pie3||this.tertiaryColor,this.pie4=this.pie4||de(this.primaryColor,{l:-30}),this.pie5=this.pie5||de(this.secondaryColor,{l:-30}),this.pie6=this.pie6||de(this.tertiaryColor,{h:40,l:-40}),this.pie7=this.pie7||de(this.primaryColor,{h:60,l:-10}),this.pie8=this.pie8||de(this.primaryColor,{h:-60,l:-10}),this.pie9=this.pie9||de(this.primaryColor,{h:120,l:0}),this.pie10=this.pie10||de(this.primaryColor,{h:60,l:-50}),this.pie11=this.pie11||de(this.primaryColor,{h:-60,l:-50}),this.pie12=this.pie12||de(this.primaryColor,{h:120,l:-50}),this.pieTitleTextSize=this.pieTitleTextSize||"25px",this.pieTitleTextColor=this.pieTitleTextColor||this.taskTextDarkColor,this.pieSectionTextSize=this.pieSectionTextSize||"17px",this.pieSectionTextColor=this.pieSectionTextColor||this.textColor,this.pieLegendTextSize=this.pieLegendTextSize||"17px",this.pieLegendTextColor=this.pieLegendTextColor||this.taskTextDarkColor,this.pieStrokeColor=this.pieStrokeColor||"black",this.pieStrokeWidth=this.pieStrokeWidth||"2px",this.pieOuterStrokeWidth=this.pieOuterStrokeWidth||"2px",this.pieOuterStrokeColor=this.pieOuterStrokeColor||"black",this.pieOpacity=this.pieOpacity||"0.7",this.venn1=this.venn1??de(this.primaryColor,{l:-30}),this.venn2=this.venn2??de(this.secondaryColor,{l:-30}),this.venn3=this.venn3??de(this.tertiaryColor,{l:-30}),this.venn4=this.venn4??de(this.primaryColor,{h:60,l:-30}),this.venn5=this.venn5??de(this.primaryColor,{h:-60,l:-30}),this.venn6=this.venn6??de(this.secondaryColor,{h:60,l:-30}),this.venn7=this.venn7??de(this.primaryColor,{h:120,l:-30}),this.venn8=this.venn8??de(this.secondaryColor,{h:120,l:-30}),this.vennTitleTextColor=this.vennTitleTextColor??this.titleColor,this.vennSetTextColor=this.vennSetTextColor??this.textColor,this.cynefin={domainFontSize:this.cynefin?.domainFontSize||16,itemFontSize:this.cynefin?.itemFontSize||12,boundaryColor:this.cynefin?.boundaryColor||this.lineColor,boundaryWidth:this.cynefin?.boundaryWidth||2,cliffColor:this.cynefin?.cliffColor||"#8B4513",cliffWidth:this.cynefin?.cliffWidth||4,arrowColor:this.cynefin?.arrowColor||this.lineColor,arrowWidth:this.cynefin?.arrowWidth||2,complexBg:this.cynefin?.complexBg||"#C8E6C9",complicatedBg:this.cynefin?.complicatedBg||"#DCEDC8",chaoticBg:this.cynefin?.chaoticBg||"#FFE0B2",clearBg:this.cynefin?.clearBg||"#FFF9C4",confusionBg:this.cynefin?.confusionBg||"#D7CCC8",textColor:this.cynefin?.textColor||this.textColor,labelColor:this.cynefin?.labelColor||this.primaryTextColor},this.quadrant1Fill=this.quadrant1Fill||this.primaryColor,this.quadrant2Fill=this.quadrant2Fill||de(this.primaryColor,{r:5,g:5,b:5}),this.quadrant3Fill=this.quadrant3Fill||de(this.primaryColor,{r:10,g:10,b:10}),this.quadrant4Fill=this.quadrant4Fill||de(this.primaryColor,{r:15,g:15,b:15}),this.quadrant1TextFill=this.quadrant1TextFill||this.primaryTextColor,this.quadrant2TextFill=this.quadrant2TextFill||de(this.primaryTextColor,{r:-5,g:-5,b:-5}),this.quadrant3TextFill=this.quadrant3TextFill||de(this.primaryTextColor,{r:-10,g:-10,b:-10}),this.quadrant4TextFill=this.quadrant4TextFill||de(this.primaryTextColor,{r:-15,g:-15,b:-15}),this.quadrantPointFill=this.quadrantPointFill||Tn(this.quadrant1Fill)?Qe(this.quadrant1Fill):Je(this.quadrant1Fill),this.quadrantPointTextFill=this.quadrantPointTextFill||this.primaryTextColor,this.quadrantXAxisTextFill=this.quadrantXAxisTextFill||this.primaryTextColor,this.quadrantYAxisTextFill=this.quadrantYAxisTextFill||this.primaryTextColor,this.quadrantInternalBorderStrokeFill=this.quadrantInternalBorderStrokeFill||this.primaryBorderColor,this.quadrantExternalBorderStrokeFill=this.quadrantExternalBorderStrokeFill||this.primaryBorderColor,this.quadrantTitleFill=this.quadrantTitleFill||this.primaryTextColor,this.packet={startByteColor:this.primaryTextColor,endByteColor:this.primaryTextColor,labelColor:this.primaryTextColor,titleColor:this.primaryTextColor,blockStrokeColor:this.primaryTextColor,blockFillColor:this.mainBkg},this.radar={axisColor:this.radar?.axisColor||this.lineColor,axisStrokeWidth:this.radar?.axisStrokeWidth||2,axisLabelFontSize:this.radar?.axisLabelFontSize||12,curveOpacity:this.radar?.curveOpacity||.5,curveStrokeWidth:this.radar?.curveStrokeWidth||2,graticuleColor:this.radar?.graticuleColor||"#DEDEDE",graticuleStrokeWidth:this.radar?.graticuleStrokeWidth||1,graticuleOpacity:this.radar?.graticuleOpacity||.3,legendBoxSize:this.radar?.legendBoxSize||12,legendFontSize:this.radar?.legendFontSize||12},this.wardleyEvolutionColor=this.wardleyEvolutionColor||"#dc3545",this.wardley={backgroundColor:this.wardley?.backgroundColor||this.background,axisColor:this.wardley?.axisColor||this.lineColor,axisTextColor:this.wardley?.axisTextColor||this.primaryTextColor,gridColor:this.wardley?.gridColor||this.gridColor,componentFill:this.wardley?.componentFill||this.background,componentStroke:this.wardley?.componentStroke||this.lineColor,componentLabelColor:this.wardley?.componentLabelColor||this.primaryTextColor,linkStroke:this.wardley?.linkStroke||this.lineColor,evolutionStroke:this.wardley?.evolutionStroke||this.wardleyEvolutionColor,annotationStroke:this.wardley?.annotationStroke||this.lineColor,annotationTextColor:this.wardley?.annotationTextColor||this.primaryTextColor,annotationFill:this.wardley?.annotationFill||this.background},this.xyChart={backgroundColor:this.xyChart?.backgroundColor||this.background,titleColor:this.xyChart?.titleColor||this.primaryTextColor,dataLabelColor:this.xyChart?.dataLabelColor||this.primaryTextColor,xAxisTitleColor:this.xyChart?.xAxisTitleColor||this.primaryTextColor,xAxisLabelColor:this.xyChart?.xAxisLabelColor||this.primaryTextColor,xAxisTickColor:this.xyChart?.xAxisTickColor||this.primaryTextColor,xAxisLineColor:this.xyChart?.xAxisLineColor||this.primaryTextColor,yAxisTitleColor:this.xyChart?.yAxisTitleColor||this.primaryTextColor,yAxisLabelColor:this.xyChart?.yAxisLabelColor||this.primaryTextColor,yAxisTickColor:this.xyChart?.yAxisTickColor||this.primaryTextColor,yAxisLineColor:this.xyChart?.yAxisLineColor||this.primaryTextColor,plotColorPalette:this.xyChart?.plotColorPalette||"#CDE498,#FF6B6B,#A0D2DB,#D7BDE2,#F0F0F0,#FFC3A0,#7FD8BE,#FF9A8B,#FAF3E0,#FFF176"},this.requirementBackground=this.requirementBackground||this.primaryColor,this.requirementBorderColor=this.requirementBorderColor||this.primaryBorderColor,this.requirementBorderSize=this.requirementBorderSize||"1",this.requirementTextColor=this.requirementTextColor||this.primaryTextColor,this.relationColor=this.relationColor||this.lineColor,this.relationLabelBackground=this.relationLabelBackground||this.edgeLabelBackground,this.relationLabelColor=this.relationLabelColor||this.actorTextColor,this.git0=this.git0||this.primaryColor,this.git1=this.git1||this.secondaryColor,this.git2=this.git2||this.tertiaryColor,this.git3=this.git3||de(this.primaryColor,{h:-30}),this.git4=this.git4||de(this.primaryColor,{h:-60}),this.git5=this.git5||de(this.primaryColor,{h:-90}),this.git6=this.git6||de(this.primaryColor,{h:60}),this.git7=this.git7||de(this.primaryColor,{h:120}),this.darkMode?(this.git0=Qe(this.git0,25),this.git1=Qe(this.git1,25),this.git2=Qe(this.git2,25),this.git3=Qe(this.git3,25),this.git4=Qe(this.git4,25),this.git5=Qe(this.git5,25),this.git6=Qe(this.git6,25),this.git7=Qe(this.git7,25)):(this.git0=Je(this.git0,25),this.git1=Je(this.git1,25),this.git2=Je(this.git2,25),this.git3=Je(this.git3,25),this.git4=Je(this.git4,25),this.git5=Je(this.git5,25),this.git6=Je(this.git6,25),this.git7=Je(this.git7,25)),this.gitInv0=this.gitInv0||Ye(this.git0),this.gitInv1=this.gitInv1||Ye(this.git1),this.gitInv2=this.gitInv2||Ye(this.git2),this.gitInv3=this.gitInv3||Ye(this.git3),this.gitInv4=this.gitInv4||Ye(this.git4),this.gitInv5=this.gitInv5||Ye(this.git5),this.gitInv6=this.gitInv6||Ye(this.git6),this.gitInv7=this.gitInv7||Ye(this.git7),this.gitBranchLabel0=this.gitBranchLabel0||Ye(this.labelTextColor),this.gitBranchLabel1=this.gitBranchLabel1||this.labelTextColor,this.gitBranchLabel2=this.gitBranchLabel2||this.labelTextColor,this.gitBranchLabel3=this.gitBranchLabel3||Ye(this.labelTextColor),this.gitBranchLabel4=this.gitBranchLabel4||this.labelTextColor,this.gitBranchLabel5=this.gitBranchLabel5||this.labelTextColor,this.gitBranchLabel6=this.gitBranchLabel6||this.labelTextColor,this.gitBranchLabel7=this.gitBranchLabel7||this.labelTextColor,this.tagLabelColor=this.tagLabelColor||this.primaryTextColor,this.tagLabelBackground=this.tagLabelBackground||this.primaryColor,this.tagLabelBorder=this.tagBorder||this.primaryBorderColor,this.tagLabelFontSize=this.tagLabelFontSize||"10px",this.commitLabelColor=this.commitLabelColor||this.secondaryTextColor,this.commitLabelBackground=this.commitLabelBackground||this.secondaryColor,this.commitLabelFontSize=this.commitLabelFontSize||"10px",this.emUiFill=this.emUiFill||"white",this.emUiStroke=this.emUiStroke||"#dbdada",this.emProcessorFill=this.emProcessorFill||"#edb3f6",this.emProcessorStroke=this.emProcessorStroke||"#b88cbf",this.emReadModelFill=this.emReadModelFill||"#d3f1a2",this.emReadModelStroke=this.emReadModelStroke||"#a3b732",this.emCommandFill=this.emCommandFill||"#bcd6fe",this.emCommandStroke=this.emCommandStroke||"#679ac3",this.emEventFill=this.emEventFill||"#ffb778",this.emEventStroke=this.emEventStroke||"#c19a0f",this.emSwimlaneBackgroundOdd=this.emSwimlaneBackgroundOdd||"rgb(250,250,250)",this.emSwimlaneBackgroundStroke=this.emSwimlaneBackgroundStroke||"rgb(240,240,240)",this.emArrowhead=this.emArrowhead||this.lineColor,this.emRelationStroke=this.emRelationStroke||this.lineColor,this.attributeBackgroundColorOdd=this.attributeBackgroundColorOdd||Gi,this.attributeBackgroundColorEven=this.attributeBackgroundColorEven||Vi}calculate(t){if(typeof t!="object"){this.updateColors();return}let r=Object.keys(t);r.forEach(n=>{this[n]=t[n]}),this.updateColors(),r.forEach(n=>{this[n]=t[n]})}},OK=o(e=>{let t=new JD;return t.calculate(e),t},"getThemeVariables")});var e7,$K,FK=F(()=>{"use strict";zi();al();Fl();e7=class{static{o(this,"Theme")}constructor(){this.primaryColor="#eee",this.contrast="#707070",this.secondaryColor=Qe(this.contrast,55),this.background="#ffffff",this.tertiaryColor=de(this.primaryColor,{h:-160}),this.primaryBorderColor=ar(this.primaryColor,this.darkMode),this.secondaryBorderColor=ar(this.secondaryColor,this.darkMode),this.tertiaryBorderColor=ar(this.tertiaryColor,this.darkMode),this.primaryTextColor=Ye(this.primaryColor),this.secondaryTextColor=Ye(this.secondaryColor),this.tertiaryTextColor=Ye(this.tertiaryColor),this.lineColor=Ye(this.background),this.textColor=Ye(this.background),this.mainBkg="#eee",this.secondBkg="calculated",this.lineColor="#666",this.border1="#999",this.border2="calculated",this.note="#ffa",this.text="#333",this.critical="#d42",this.done="#bbb",this.arrowheadColor="#333333",this.fontFamily='"trebuchet ms", verdana, arial, sans-serif',this.fontSize="16px",this.THEME_COLOR_LIMIT=12,this.radius=5,this.strokeWidth=1,this.nodeBkg="calculated",this.nodeBorder="calculated",this.clusterBkg="calculated",this.clusterBorder="calculated",this.defaultLinkColor="calculated",this.titleColor="calculated",this.edgeLabelBackground="white",this.actorBorder="calculated",this.actorBkg="calculated",this.actorTextColor="calculated",this.actorLineColor=this.actorBorder,this.signalColor="calculated",this.signalTextColor="calculated",this.labelBoxBkgColor="calculated",this.labelBoxBorderColor="calculated",this.labelTextColor="calculated",this.loopTextColor="calculated",this.noteBorderColor="calculated",this.noteBkgColor="calculated",this.noteTextColor="calculated",this.activationBorderColor="#666",this.activationBkgColor="#f4f4f4",this.sequenceNumberColor="white",this.sectionBkgColor="calculated",this.altSectionBkgColor="white",this.sectionBkgColor2="calculated",this.excludeBkgColor="#eeeeee",this.taskBorderColor="calculated",this.taskBkgColor="calculated",this.taskTextLightColor="white",this.taskTextColor="calculated",this.taskTextDarkColor="calculated",this.taskTextOutsideColor="calculated",this.taskTextClickableColor="#003163",this.activeTaskBorderColor="calculated",this.activeTaskBkgColor="calculated",this.gridColor="calculated",this.doneTaskBkgColor="calculated",this.doneTaskBorderColor="calculated",this.critBkgColor="calculated",this.critBorderColor="calculated",this.todayLineColor="calculated",this.vertLineColor="calculated",this.personBorder=this.primaryBorderColor,this.personBkg=this.mainBkg,this.archEdgeColor="calculated",this.archEdgeArrowColor="calculated",this.archEdgeWidth="3",this.archGroupBorderColor=this.primaryBorderColor,this.archGroupBorderWidth="2px",this.noteFontWeight="normal",this.fontWeight="normal",this.rowOdd=this.rowOdd||Qe(this.mainBkg,75)||"#ffffff",this.rowEven=this.rowEven||"#f4f4f4",this.labelColor="black",this.errorBkgColor="#552222",this.errorTextColor="#552222",this.useGradient=!0,this.gradientStart=this.primaryBorderColor,this.gradientStop=this.secondaryBorderColor,this.dropShadow="drop-shadow( 1px 2px 2px rgba(185,185,185,1))"}updateColors(){this.secondBkg=Qe(this.contrast,55),this.border2=this.contrast,this.actorBorder=Qe(this.border1,23),this.actorBkg=this.mainBkg,this.actorTextColor=this.text,this.actorLineColor=this.actorBorder,this.rectBkgColor=this.rectBkgColor||this.tertiaryColor,this.signalColor=this.text,this.signalTextColor=this.text,this.labelBoxBkgColor=this.actorBkg,this.labelBoxBorderColor=this.actorBorder,this.labelTextColor=this.text,this.loopTextColor=this.text,this.noteBorderColor="#999",this.noteBkgColor="#666",this.noteTextColor="#fff",this.cScale0=this.cScale0||"#555",this.cScale1=this.cScale1||"#F4F4F4",this.cScale2=this.cScale2||"#555",this.cScale3=this.cScale3||"#BBB",this.cScale4=this.cScale4||"#777",this.cScale5=this.cScale5||"#999",this.cScale6=this.cScale6||"#DDD",this.cScale7=this.cScale7||"#FFF",this.cScale8=this.cScale8||"#DDD",this.cScale9=this.cScale9||"#BBB",this.cScale10=this.cScale10||"#999",this.cScale11=this.cScale11||"#777";for(let t=0;t<this.THEME_COLOR_LIMIT;t++)this["cScaleInv"+t]=this["cScaleInv"+t]||Ye(this["cScale"+t]);for(let t=0;t<this.THEME_COLOR_LIMIT;t++)this.darkMode?this["cScalePeer"+t]=this["cScalePeer"+t]||Qe(this["cScale"+t],10):this["cScalePeer"+t]=this["cScalePeer"+t]||Je(this["cScale"+t],10);this.scaleLabelColor=this.scaleLabelColor||(this.darkMode?"black":this.labelTextColor),this.cScaleLabel0=this.cScaleLabel0||this.cScale1,this.cScaleLabel2=this.cScaleLabel2||this.cScale1;for(let t=0;t<this.THEME_COLOR_LIMIT;t++)this["cScaleLabel"+t]=this["cScaleLabel"+t]||this.scaleLabelColor;for(let t=0;t<5;t++)this["surface"+t]=this["surface"+t]||de(this.mainBkg,{l:-(5+t*5)}),this["surfacePeer"+t]=this["surfacePeer"+t]||de(this.mainBkg,{l:-(8+t*5)});this.nodeBkg=this.mainBkg,this.nodeBorder=this.border1,this.clusterBkg=this.secondBkg,this.clusterBorder=this.border2,this.defaultLinkColor=this.lineColor,this.titleColor=this.text,this.sectionBkgColor=Qe(this.contrast,30),this.sectionBkgColor2=Qe(this.contrast,30),this.taskBorderColor=Je(this.contrast,10),this.taskBkgColor=this.contrast,this.taskTextColor=this.taskTextLightColor,this.taskTextDarkColor=this.text,this.taskTextOutsideColor=this.taskTextDarkColor,this.activeTaskBorderColor=this.taskBorderColor,this.activeTaskBkgColor=this.mainBkg,this.gridColor=Qe(this.border1,30),this.doneTaskBkgColor=this.done,this.doneTaskBorderColor=this.lineColor,this.critBkgColor=this.critical,this.critBorderColor=Je(this.critBkgColor,10),this.todayLineColor=this.critBkgColor,this.vertLineColor=this.critBkgColor,this.archEdgeColor=this.lineColor,this.archEdgeArrowColor=this.lineColor,this.transitionColor=this.transitionColor||"#000",this.transitionLabelColor=this.transitionLabelColor||this.textColor,this.stateLabelColor=this.stateLabelColor||this.stateBkg||this.primaryTextColor,this.stateBkg=this.stateBkg||this.mainBkg,this.labelBackgroundColor=this.labelBackgroundColor||this.stateBkg,this.compositeBackground=this.compositeBackground||this.background||this.tertiaryColor,this.altBackground=this.altBackground||"#f4f4f4",this.compositeTitleBackground=this.compositeTitleBackground||this.mainBkg,this.stateBorder=this.stateBorder||"#000",this.innerEndBackground=this.primaryBorderColor,this.specialStateColor="#222",this.errorBkgColor=this.errorBkgColor||this.tertiaryColor,this.errorTextColor=this.errorTextColor||this.tertiaryTextColor,this.classText=this.primaryTextColor,this.fillType0=this.primaryColor,this.fillType1=this.secondaryColor,this.fillType2=de(this.primaryColor,{h:64}),this.fillType3=de(this.secondaryColor,{h:64}),this.fillType4=de(this.primaryColor,{h:-64}),this.fillType5=de(this.secondaryColor,{h:-64}),this.fillType6=de(this.primaryColor,{h:128}),this.fillType7=de(this.secondaryColor,{h:128});for(let t=0;t<this.THEME_COLOR_LIMIT;t++)this["pie"+t]=this["cScale"+t];this.pie12=this.pie0,this.pieTitleTextSize=this.pieTitleTextSize||"25px",this.pieTitleTextColor=this.pieTitleTextColor||this.taskTextDarkColor,this.pieSectionTextSize=this.pieSectionTextSize||"17px",this.pieSectionTextColor=this.pieSectionTextColor||this.textColor,this.pieLegendTextSize=this.pieLegendTextSize||"17px",this.pieLegendTextColor=this.pieLegendTextColor||this.taskTextDarkColor,this.pieStrokeColor=this.pieStrokeColor||"black",this.pieStrokeWidth=this.pieStrokeWidth||"2px",this.pieOuterStrokeWidth=this.pieOuterStrokeWidth||"2px",this.pieOuterStrokeColor=this.pieOuterStrokeColor||"black",this.pieOpacity=this.pieOpacity||"0.7";for(let t=0;t<8;t++)this["venn"+(t+1)]=this["venn"+(t+1)]??this["cScale"+t];this.vennTitleTextColor=this.vennTitleTextColor??this.titleColor,this.vennSetTextColor=this.vennSetTextColor??this.textColor,this.cynefin={domainFontSize:this.cynefin?.domainFontSize||16,itemFontSize:this.cynefin?.itemFontSize||12,boundaryColor:this.cynefin?.boundaryColor||this.lineColor,boundaryWidth:this.cynefin?.boundaryWidth||2,cliffColor:this.cynefin?.cliffColor||"#8B0000",cliffWidth:this.cynefin?.cliffWidth||4,arrowColor:this.cynefin?.arrowColor||this.lineColor,arrowWidth:this.cynefin?.arrowWidth||2,complexBg:this.cynefin?.complexBg||"#E8F5E9",complicatedBg:this.cynefin?.complicatedBg||"#E3F2FD",chaoticBg:this.cynefin?.chaoticBg||"#FBE9E7",clearBg:this.cynefin?.clearBg||"#FFF8E1",confusionBg:this.cynefin?.confusionBg||"#F3E5F5",textColor:this.cynefin?.textColor||this.textColor,labelColor:this.cynefin?.labelColor||this.primaryTextColor},this.quadrant1Fill=this.quadrant1Fill||this.primaryColor,this.quadrant2Fill=this.quadrant2Fill||de(this.primaryColor,{r:5,g:5,b:5}),this.quadrant3Fill=this.quadrant3Fill||de(this.primaryColor,{r:10,g:10,b:10}),this.quadrant4Fill=this.quadrant4Fill||de(this.primaryColor,{r:15,g:15,b:15}),this.quadrant1TextFill=this.quadrant1TextFill||this.primaryTextColor,this.quadrant2TextFill=this.quadrant2TextFill||de(this.primaryTextColor,{r:-5,g:-5,b:-5}),this.quadrant3TextFill=this.quadrant3TextFill||de(this.primaryTextColor,{r:-10,g:-10,b:-10}),this.quadrant4TextFill=this.quadrant4TextFill||de(this.primaryTextColor,{r:-15,g:-15,b:-15}),this.quadrantPointFill=this.quadrantPointFill||Tn(this.quadrant1Fill)?Qe(this.quadrant1Fill):Je(this.quadrant1Fill),this.quadrantPointTextFill=this.quadrantPointTextFill||this.primaryTextColor,this.quadrantXAxisTextFill=this.quadrantXAxisTextFill||this.primaryTextColor,this.quadrantYAxisTextFill=this.quadrantYAxisTextFill||this.primaryTextColor,this.quadrantInternalBorderStrokeFill=this.quadrantInternalBorderStrokeFill||this.primaryBorderColor,this.quadrantExternalBorderStrokeFill=this.quadrantExternalBorderStrokeFill||this.primaryBorderColor,this.quadrantTitleFill=this.quadrantTitleFill||this.primaryTextColor,this.xyChart={backgroundColor:this.xyChart?.backgroundColor||this.background,titleColor:this.xyChart?.titleColor||this.primaryTextColor,dataLabelColor:this.xyChart?.dataLabelColor||this.primaryTextColor,xAxisTitleColor:this.xyChart?.xAxisTitleColor||this.primaryTextColor,xAxisLabelColor:this.xyChart?.xAxisLabelColor||this.primaryTextColor,xAxisTickColor:this.xyChart?.xAxisTickColor||this.primaryTextColor,xAxisLineColor:this.xyChart?.xAxisLineColor||this.primaryTextColor,yAxisTitleColor:this.xyChart?.yAxisTitleColor||this.primaryTextColor,yAxisLabelColor:this.xyChart?.yAxisLabelColor||this.primaryTextColor,yAxisTickColor:this.xyChart?.yAxisTickColor||this.primaryTextColor,yAxisLineColor:this.xyChart?.yAxisLineColor||this.primaryTextColor,plotColorPalette:this.xyChart?.plotColorPalette||"#EEE,#6BB8E4,#8ACB88,#C7ACD6,#E8DCC2,#FFB2A8,#FFF380,#7E8D91,#FFD8B1,#FAF3E0"},this.radar={axisColor:this.radar?.axisColor||this.lineColor,axisStrokeWidth:this.radar?.axisStrokeWidth||2,axisLabelFontSize:this.radar?.axisLabelFontSize||12,curveOpacity:this.radar?.curveOpacity||.5,curveStrokeWidth:this.radar?.curveStrokeWidth||2,graticuleColor:this.radar?.graticuleColor||"#DEDEDE",graticuleStrokeWidth:this.radar?.graticuleStrokeWidth||1,graticuleOpacity:this.radar?.graticuleOpacity||.3,legendBoxSize:this.radar?.legendBoxSize||12,legendFontSize:this.radar?.legendFontSize||12},this.wardleyEvolutionColor=this.wardleyEvolutionColor||"#dc3545",this.wardley={backgroundColor:this.wardley?.backgroundColor||this.background,axisColor:this.wardley?.axisColor||this.lineColor,axisTextColor:this.wardley?.axisTextColor||this.primaryTextColor,gridColor:this.wardley?.gridColor||this.gridColor,componentFill:this.wardley?.componentFill||this.background,componentStroke:this.wardley?.componentStroke||this.lineColor,componentLabelColor:this.wardley?.componentLabelColor||this.primaryTextColor,linkStroke:this.wardley?.linkStroke||this.lineColor,evolutionStroke:this.wardley?.evolutionStroke||this.wardleyEvolutionColor,annotationStroke:this.wardley?.annotationStroke||this.lineColor,annotationTextColor:this.wardley?.annotationTextColor||this.primaryTextColor,annotationFill:this.wardley?.annotationFill||this.background},this.requirementBackground=this.requirementBackground||this.primaryColor,this.requirementBorderColor=this.requirementBorderColor||this.primaryBorderColor,this.requirementBorderSize=this.requirementBorderSize||"1",this.requirementTextColor=this.requirementTextColor||this.primaryTextColor,this.relationColor=this.relationColor||this.lineColor,this.relationLabelBackground=this.relationLabelBackground||this.edgeLabelBackground,this.relationLabelColor=this.relationLabelColor||this.actorTextColor,this.git0=Je(this.pie1,25)||this.primaryColor,this.git1=this.pie2||this.secondaryColor,this.git2=this.pie3||this.tertiaryColor,this.git3=this.pie4||de(this.primaryColor,{h:-30}),this.git4=this.pie5||de(this.primaryColor,{h:-60}),this.git5=this.pie6||de(this.primaryColor,{h:-90}),this.git6=this.pie7||de(this.primaryColor,{h:60}),this.git7=this.pie8||de(this.primaryColor,{h:120}),this.gitInv0=this.gitInv0||Ye(this.git0),this.gitInv1=this.gitInv1||Ye(this.git1),this.gitInv2=this.gitInv2||Ye(this.git2),this.gitInv3=this.gitInv3||Ye(this.git3),this.gitInv4=this.gitInv4||Ye(this.git4),this.gitInv5=this.gitInv5||Ye(this.git5),this.gitInv6=this.gitInv6||Ye(this.git6),this.gitInv7=this.gitInv7||Ye(this.git7),this.branchLabelColor=this.branchLabelColor||this.labelTextColor,this.gitBranchLabel0=this.branchLabelColor,this.gitBranchLabel1="white",this.gitBranchLabel2=this.branchLabelColor,this.gitBranchLabel3="white",this.gitBranchLabel4=this.branchLabelColor,this.gitBranchLabel5=this.branchLabelColor,this.gitBranchLabel6=this.branchLabelColor,this.gitBranchLabel7=this.branchLabelColor,this.tagLabelColor=this.tagLabelColor||this.primaryTextColor,this.tagLabelBackground=this.tagLabelBackground||this.primaryColor,this.tagLabelBorder=this.tagBorder||this.primaryBorderColor,this.tagLabelFontSize=this.tagLabelFontSize||"10px",this.commitLabelColor=this.commitLabelColor||this.secondaryTextColor,this.commitLabelBackground=this.commitLabelBackground||this.secondaryColor,this.commitLabelFontSize=this.commitLabelFontSize||"10px",this.emUiFill=this.emUiFill||"white",this.emUiStroke=this.emUiStroke||"#dbdada",this.emProcessorFill=this.emProcessorFill||"#edb3f6",this.emProcessorStroke=this.emProcessorStroke||"#b88cbf",this.emReadModelFill=this.emReadModelFill||"#d3f1a2",this.emReadModelStroke=this.emReadModelStroke||"#a3b732",this.emCommandFill=this.emCommandFill||"#bcd6fe",this.emCommandStroke=this.emCommandStroke||"#679ac3",this.emEventFill=this.emEventFill||"#ffb778",this.emEventStroke=this.emEventStroke||"#c19a0f",this.emSwimlaneBackgroundOdd=this.emSwimlaneBackgroundOdd||"rgb(250,250,250)",this.emSwimlaneBackgroundStroke=this.emSwimlaneBackgroundStroke||"rgb(240,240,240)",this.emArrowhead=this.emArrowhead||this.lineColor,this.emRelationStroke=this.emRelationStroke||this.lineColor,this.attributeBackgroundColorOdd=this.attributeBackgroundColorOdd||Gi,this.attributeBackgroundColorEven=this.attributeBackgroundColorEven||Vi}calculate(t){if(typeof t!="object"){this.updateColors();return}let r=Object.keys(t);r.forEach(n=>{this[n]=t[n]}),this.updateColors(),r.forEach(n=>{this[n]=t[n]})}},$K=o(e=>{let t=new e7;return t.calculate(e),t},"getThemeVariables")});var t7,zK,GK=F(()=>{"use strict";zi();al();Fl();t7=class{static{o(this,"Theme")}constructor(){this.background="#ffffff",this.primaryColor="#cccccc",this.mainBkg="#ffffff",this.noteBkgColor="#fff5ad",this.noteTextColor="#333",this.THEME_COLOR_LIMIT=12,this.radius=3,this.strokeWidth=2,this.primaryBorderColor=ar(this.primaryColor,this.darkMode),this.fontFamily="arial, sans-serif",this.fontSize="14px",this.nodeBorder="#000000",this.stateBorder="#000000",this.useGradient=!0,this.gradientStart="#0042eb",this.gradientStop="#eb0042",this.dropShadow="drop-shadow( 0px 1px 2px rgba(0, 0, 0, 0.25));",this.tertiaryColor="#ffffff",this.archEdgeColor="calculated",this.archEdgeArrowColor="calculated",this.archEdgeWidth="3",this.archGroupBorderColor=this.primaryBorderColor,this.archGroupBorderWidth="2px",this.noteFontWeight="normal",this.fontWeight="normal"}updateColors(){this.primaryTextColor=this.primaryTextColor||(this.darkMode?"#eee":"#333"),this.secondaryColor=this.secondaryColor||de(this.primaryColor,{h:-120}),this.tertiaryColor=this.tertiaryColor||de(this.primaryColor,{h:180,l:5}),this.primaryBorderColor=this.primaryBorderColor||ar(this.primaryColor,this.darkMode),this.secondaryBorderColor=this.secondaryBorderColor||ar(this.secondaryColor,this.darkMode),this.tertiaryBorderColor=this.tertiaryBorderColor||ar(this.tertiaryColor,this.darkMode),this.noteBorderColor=this.noteBorderColor||ar(this.noteBkgColor,this.darkMode),this.noteBkgColor=this.noteBkgColor||"#fff5ad",this.noteTextColor=this.noteTextColor||"#333",this.secondaryTextColor=this.secondaryTextColor||Ye(this.secondaryColor),this.tertiaryTextColor=this.tertiaryTextColor||Ye(this.tertiaryColor),this.lineColor=this.lineColor||Ye(this.background),this.arrowheadColor=this.arrowheadColor||Ye(this.background),this.textColor=this.textColor||this.primaryTextColor,this.border2=this.border2||this.tertiaryBorderColor,this.nodeBkg=this.nodeBkg||this.primaryColor,this.mainBkg=this.mainBkg||this.primaryColor,this.nodeBorder=this.nodeBorder||this.primaryBorderColor,this.clusterBkg=this.clusterBkg||this.tertiaryColor,this.clusterBorder=this.clusterBorder||this.tertiaryBorderColor,this.defaultLinkColor=this.defaultLinkColor||this.lineColor,this.titleColor=this.titleColor||this.tertiaryTextColor,this.edgeLabelBackground=this.edgeLabelBackground||(this.darkMode?Je(this.secondaryColor,30):this.secondaryColor),this.nodeTextColor=this.nodeTextColor||this.primaryTextColor,this.actorBorder=this.actorBorder||this.primaryBorderColor,this.actorBkg=this.actorBkg||this.mainBkg,this.actorTextColor=this.actorTextColor||this.primaryTextColor,this.actorLineColor=this.actorLineColor||this.actorBorder,this.labelBoxBkgColor=this.labelBoxBkgColor||this.actorBkg,this.signalColor=this.signalColor||this.textColor,this.signalTextColor=this.signalTextColor||this.textColor,this.labelBoxBorderColor=this.labelBoxBorderColor||this.actorBorder,this.labelTextColor=this.labelTextColor||this.actorTextColor,this.loopTextColor=this.loopTextColor||this.actorTextColor,this.activationBorderColor=this.activationBorderColor||Je(this.secondaryColor,10),this.activationBkgColor=this.activationBkgColor||this.secondaryColor,this.sequenceNumberColor=this.sequenceNumberColor||Ye(this.lineColor),this.rectBkgColor=this.rectBkgColor||this.tertiaryColor;let t="#ECECFE",r="#E9E9F1",n=de(t,{h:180,l:5});if(this.sectionBkgColor=this.sectionBkgColor||n,this.altSectionBkgColor=this.altSectionBkgColor||"white",this.sectionBkgColor=this.sectionBkgColor||r,this.sectionBkgColor2=this.sectionBkgColor2||t,this.excludeBkgColor=this.excludeBkgColor||"#eeeeee",this.taskBorderColor=this.taskBorderColor||this.primaryBorderColor,this.taskBkgColor=this.taskBkgColor||t,this.activeTaskBorderColor=this.activeTaskBorderColor||t,this.activeTaskBkgColor=this.activeTaskBkgColor||Qe(t,23),this.gridColor=this.gridColor||"lightgrey",this.doneTaskBkgColor=this.doneTaskBkgColor||"lightgrey",this.doneTaskBorderColor=this.doneTaskBorderColor||"grey",this.critBorderColor=this.critBorderColor||"#ff8888",this.critBkgColor=this.critBkgColor||"red",this.todayLineColor=this.todayLineColor||"red",this.taskTextColor=this.taskTextColor||this.textColor,this.taskTextOutsideColor=this.taskTextOutsideColor||this.textColor,this.vertLineColor=this.vertLineColor||this.primaryBorderColor,this.taskTextLightColor=this.taskTextLightColor||this.textColor,this.taskTextColor=this.taskTextColor||this.primaryTextColor,this.taskTextDarkColor=this.taskTextDarkColor||this.textColor,this.taskTextClickableColor=this.taskTextClickableColor||"#003163",this.archEdgeColor=this.lineColor,this.archEdgeArrowColor=this.lineColor,this.personBorder=this.personBorder||this.primaryBorderColor,this.personBkg=this.personBkg||this.mainBkg,this.transitionColor=this.transitionColor||this.lineColor,this.transitionLabelColor=this.transitionLabelColor||this.textColor,this.stateLabelColor=this.stateLabelColor||this.stateBkg||this.primaryTextColor,this.stateBkg=this.stateBkg||this.mainBkg,this.labelBackgroundColor=this.labelBackgroundColor||this.stateBkg,this.compositeBackground=this.compositeBackground||this.background||this.tertiaryColor,this.altBackground=this.altBackground||"#f0f0f0",this.compositeTitleBackground=this.compositeTitleBackground||this.mainBkg,this.compositeBorder=this.compositeBorder||this.nodeBorder,this.innerEndBackground=this.nodeBorder,this.errorBkgColor=this.errorBkgColor||this.tertiaryColor,this.errorTextColor=this.errorTextColor||this.tertiaryTextColor,this.transitionColor=this.transitionColor||this.lineColor,this.specialStateColor=this.lineColor,this.cScale0=this.cScale0||t,this.cScale1=this.cScale1||r,this.cScale2=this.cScale2||n,this.cScale3=this.cScale3||de(t,{h:30}),this.cScale4=this.cScale4||de(t,{h:60}),this.cScale5=this.cScale5||de(t,{h:90}),this.cScale6=this.cScale6||de(t,{h:120}),this.cScale7=this.cScale7||de(t,{h:150}),this.cScale8=this.cScale8||de(t,{h:210,l:150}),this.cScale9=this.cScale9||de(t,{h:270}),this.cScale10=this.cScale10||de(t,{h:300}),this.cScale11=this.cScale11||de(t,{h:330}),this.darkMode)for(let a=0;a<this.THEME_COLOR_LIMIT;a++)this["cScale"+a]=Je(this["cScale"+a],75);else for(let a=0;a<this.THEME_COLOR_LIMIT;a++)this["cScale"+a]=Je(this["cScale"+a],25);for(let a=0;a<this.THEME_COLOR_LIMIT;a++)this["cScaleInv"+a]=this["cScaleInv"+a]||Ye(this["cScale"+a]);for(let a=0;a<this.THEME_COLOR_LIMIT;a++)this.darkMode?this["cScalePeer"+a]=this["cScalePeer"+a]||Qe(this["cScale"+a],10):this["cScalePeer"+a]=this["cScalePeer"+a]||Je(this["cScale"+a],10);this.scaleLabelColor=this.scaleLabelColor||this.labelTextColor;for(let a=0;a<this.THEME_COLOR_LIMIT;a++)this["cScaleLabel"+a]=this["cScaleLabel"+a]||this.scaleLabelColor;let i=this.darkMode?-4:-1;for(let a=0;a<5;a++)this["surface"+a]=this["surface"+a]||de(this.mainBkg,{h:180,s:-15,l:i*(5+a*3)}),this["surfacePeer"+a]=this["surfacePeer"+a]||de(this.mainBkg,{h:180,s:-15,l:i*(8+a*3)});this.classText=this.classText||this.textColor,this.fillType0=this.fillType0||t,this.fillType1=this.fillType1||r,this.fillType2=this.fillType2||de(t,{h:64}),this.fillType3=this.fillType3||de(r,{h:64}),this.fillType4=this.fillType4||de(t,{h:-64}),this.fillType5=this.fillType5||de(r,{h:-64}),this.fillType6=this.fillType6||de(t,{h:128}),this.fillType7=this.fillType7||de(r,{h:128}),this.pie1=this.pie1||t,this.pie2=this.pie2||r,this.pie3=this.pie3||n,this.pie4=this.pie4||de(t,{l:-10}),this.pie5=this.pie5||de(r,{l:-10}),this.pie6=this.pie6||de(n,{l:-10}),this.pie7=this.pie7||de(t,{h:60,l:-10}),this.pie8=this.pie8||de(t,{h:-60,l:-10}),this.pie9=this.pie9||de(t,{h:120,l:0}),this.pie10=this.pie10||de(t,{h:60,l:-20}),this.pie11=this.pie11||de(t,{h:-60,l:-20}),this.pie12=this.pie12||de(t,{h:120,l:-10}),this.pieTitleTextSize=this.pieTitleTextSize||"25px",this.pieTitleTextColor=this.pieTitleTextColor||this.taskTextDarkColor,this.pieSectionTextSize=this.pieSectionTextSize||"17px",this.pieSectionTextColor=this.pieSectionTextColor||this.textColor,this.pieLegendTextSize=this.pieLegendTextSize||"17px",this.pieLegendTextColor=this.pieLegendTextColor||this.taskTextDarkColor,this.pieStrokeColor=this.pieStrokeColor||"black",this.pieStrokeWidth=this.pieStrokeWidth||"2px",this.pieOuterStrokeWidth=this.pieOuterStrokeWidth||"2px",this.pieOuterStrokeColor=this.pieOuterStrokeColor||"black",this.pieOpacity=this.pieOpacity||"0.7",this.vennTitleTextColor=this.vennTitleTextColor??this.titleColor,this.vennSetTextColor=this.vennSetTextColor??this.textColor,this.quadrant1Fill=this.quadrant1Fill||t,this.quadrant2Fill=this.quadrant2Fill||de(t,{r:5,g:5,b:5}),this.quadrant3Fill=this.quadrant3Fill||de(t,{r:10,g:10,b:10}),this.quadrant4Fill=this.quadrant4Fill||de(t,{r:15,g:15,b:15}),this.quadrant1TextFill=this.quadrant1TextFill||this.primaryTextColor,this.quadrant2TextFill=this.quadrant2TextFill||de(this.primaryTextColor,{r:-5,g:-5,b:-5}),this.quadrant3TextFill=this.quadrant3TextFill||de(this.primaryTextColor,{r:-10,g:-10,b:-10}),this.quadrant4TextFill=this.quadrant4TextFill||de(this.primaryTextColor,{r:-15,g:-15,b:-15}),this.quadrantPointFill=this.quadrantPointFill||Tn(this.quadrant1Fill)?Qe(this.quadrant1Fill):Je(this.quadrant1Fill),this.quadrantPointTextFill=this.quadrantPointTextFill||this.primaryTextColor,this.quadrantXAxisTextFill=this.quadrantXAxisTextFill||this.primaryTextColor,this.quadrantYAxisTextFill=this.quadrantYAxisTextFill||this.primaryTextColor,this.quadrantInternalBorderStrokeFill=this.quadrantInternalBorderStrokeFill||this.primaryBorderColor,this.quadrantExternalBorderStrokeFill=this.quadrantExternalBorderStrokeFill||this.primaryBorderColor,this.quadrantTitleFill=this.quadrantTitleFill||this.primaryTextColor,this.xyChart={backgroundColor:this.xyChart?.backgroundColor||this.background,titleColor:this.xyChart?.titleColor||this.primaryTextColor,xAxisTitleColor:this.xyChart?.xAxisTitleColor||this.primaryTextColor,xAxisLabelColor:this.xyChart?.xAxisLabelColor||this.primaryTextColor,xAxisTickColor:this.xyChart?.xAxisTickColor||this.primaryTextColor,xAxisLineColor:this.xyChart?.xAxisLineColor||this.primaryTextColor,yAxisTitleColor:this.xyChart?.yAxisTitleColor||this.primaryTextColor,yAxisLabelColor:this.xyChart?.yAxisLabelColor||this.primaryTextColor,yAxisTickColor:this.xyChart?.yAxisTickColor||this.primaryTextColor,yAxisLineColor:this.xyChart?.yAxisLineColor||this.primaryTextColor,plotColorPalette:this.xyChart?.plotColorPalette||"#FFF4DD,#FFD8B1,#FFA07A,#ECEFF1,#D6DBDF,#C3E0A8,#FFB6A4,#FFD74D,#738FA7,#FFFFF0"},this.requirementBackground=this.requirementBackground||t,this.requirementBorderColor=this.requirementBorderColor||this.primaryBorderColor,this.requirementBorderSize=this.requirementBorderSize||"1",this.requirementTextColor=this.requirementTextColor||this.primaryTextColor,this.relationColor=this.relationColor||this.lineColor,this.relationLabelBackground=this.relationLabelBackground||(this.darkMode?Je(this.secondaryColor,30):this.secondaryColor),this.relationLabelColor=this.relationLabelColor||this.actorTextColor,this.git0=this.git0||t,this.git1=this.git1||r,this.git2=this.git2||n,this.git3=this.git3||de(t,{h:-30}),this.git4=this.git4||de(t,{h:-60}),this.git5=this.git5||de(t,{h:-90}),this.git6=this.git6||de(t,{h:60}),this.git7=this.git7||de(t,{h:120}),this.darkMode?(this.git0=Qe(this.git0,25),this.git1=Qe(this.git1,25),this.git2=Qe(this.git2,25),this.git3=Qe(this.git3,25),this.git4=Qe(this.git4,25),this.git5=Qe(this.git5,25),this.git6=Qe(this.git6,25),this.git7=Qe(this.git7,25)):(this.git0=Je(this.git0,25),this.git1=Je(this.git1,25),this.git2=Je(this.git2,25),this.git3=Je(this.git3,25),this.git4=Je(this.git4,25),this.git5=Je(this.git5,25),this.git6=Je(this.git6,25),this.git7=Je(this.git7,25)),this.gitInv0=this.gitInv0||Ye(this.git0),this.gitInv1=this.gitInv1||Ye(this.git1),this.gitInv2=this.gitInv2||Ye(this.git2),this.gitInv3=this.gitInv3||Ye(this.git3),this.gitInv4=this.gitInv4||Ye(this.git4),this.gitInv5=this.gitInv5||Ye(this.git5),this.gitInv6=this.gitInv6||Ye(this.git6),this.gitInv7=this.gitInv7||Ye(this.git7),this.branchLabelColor=this.branchLabelColor||(this.darkMode?"black":this.labelTextColor),this.gitBranchLabel0=this.gitBranchLabel0||this.branchLabelColor,this.gitBranchLabel1=this.gitBranchLabel1||this.branchLabelColor,this.gitBranchLabel2=this.gitBranchLabel2||this.branchLabelColor,this.gitBranchLabel3=this.gitBranchLabel3||this.branchLabelColor,this.gitBranchLabel4=this.gitBranchLabel4||this.branchLabelColor,this.gitBranchLabel5=this.gitBranchLabel5||this.branchLabelColor,this.gitBranchLabel6=this.gitBranchLabel6||this.branchLabelColor,this.gitBranchLabel7=this.gitBranchLabel7||this.branchLabelColor,this.tagLabelColor=this.tagLabelColor||this.primaryTextColor,this.tagLabelBackground=this.tagLabelBackground||this.primaryColor,this.tagLabelBorder=this.tagBorder||this.primaryBorderColor,this.tagLabelFontSize=this.tagLabelFontSize||"10px",this.commitLabelColor=this.commitLabelColor||this.secondaryTextColor,this.commitLabelBackground=this.commitLabelBackground||this.secondaryColor,this.commitLabelFontSize=this.commitLabelFontSize||"10px",this.attributeBackgroundColorOdd=this.attributeBackgroundColorOdd||Gi,this.attributeBackgroundColorEven=this.attributeBackgroundColorEven||Vi}calculate(t){if(typeof t!="object"){this.updateColors();return}let r=Object.keys(t);r.forEach(n=>{this[n]=t[n]}),this.updateColors(),r.forEach(n=>{this[n]=t[n]})}},zK=o(e=>{let t=new t7;return t.calculate(e),t},"getThemeVariables")});var r7,VK,WK=F(()=>{"use strict";zi();al();Fl();r7=class{static{o(this,"Theme")}constructor(){this.background="#333",this.primaryColor="#1f2020",this.secondaryColor=Qe(this.primaryColor,16),this.tertiaryColor=de(this.primaryColor,{h:-160}),this.primaryBorderColor=Ye(this.background),this.secondaryBorderColor=ar(this.secondaryColor,this.darkMode),this.tertiaryBorderColor=ar(this.tertiaryColor,this.darkMode),this.primaryTextColor=Ye(this.primaryColor),this.secondaryTextColor=Ye(this.secondaryColor),this.tertiaryTextColor=Ye(this.tertiaryColor),this.mainBkg="#2a2020",this.secondBkg="calculated",this.mainContrastColor="lightgrey",this.darkTextColor=Qe(Ye("#323D47"),10),this.border1="#ccc",this.border2=Oi(255,255,255,.25),this.arrowheadColor=Ye(this.background),this.fontFamily="arial, sans-serif",this.fontSize="14px",this.labelBackground="#181818",this.textColor="#ccc",this.THEME_COLOR_LIMIT=12,this.radius=3,this.strokeWidth=1,this.noteBkgColor="#fff5ad",this.noteTextColor="#333",this.THEME_COLOR_LIMIT=12,this.fontFamily="arial, sans-serif",this.fontSize="14px",this.useGradient=!0,this.gradientStart="#0042eb",this.gradientStop="#eb0042",this.dropShadow="drop-shadow( 1px 2px 2px rgba(185,185,185,0.2))",this.archEdgeColor="calculated",this.archEdgeArrowColor="calculated",this.archEdgeWidth="3",this.archGroupBorderColor=this.primaryBorderColor,this.archGroupBorderWidth="2px",this.noteFontWeight="normal",this.fontWeight="normal"}updateColors(){if(this.primaryTextColor=this.primaryTextColor||(this.darkMode?"#eee":"#333"),this.secondaryColor=this.secondaryColor||de(this.primaryColor,{h:-120}),this.tertiaryColor=this.tertiaryColor||de(this.primaryColor,{h:180,l:5}),this.primaryBorderColor=this.primaryBorderColor||ar(this.primaryColor,this.darkMode),this.secondaryBorderColor=this.secondaryBorderColor||ar(this.secondaryColor,this.darkMode),this.tertiaryBorderColor=this.tertiaryBorderColor||ar(this.tertiaryColor,this.darkMode),this.noteBorderColor=this.noteBorderColor||ar(this.noteBkgColor,this.darkMode),this.noteBkgColor=this.noteBkgColor||"#fff5ad",this.noteTextColor=this.noteTextColor||"#333",this.secondaryTextColor=this.secondaryTextColor||Ye(this.secondaryColor),this.tertiaryTextColor=this.tertiaryTextColor||Ye(this.tertiaryColor),this.lineColor=this.lineColor||Ye(this.background),this.arrowheadColor=this.arrowheadColor||Ye(this.background),this.textColor=this.textColor||this.primaryTextColor,this.border2=this.border2||this.tertiaryBorderColor,this.nodeBkg=this.nodeBkg||this.primaryColor,this.mainBkg=this.mainBkg||this.primaryColor,this.nodeBorder=this.nodeBorder||this.border1,this.clusterBkg=this.clusterBkg||this.tertiaryColor,this.clusterBorder=this.clusterBorder||this.tertiaryBorderColor,this.defaultLinkColor=this.defaultLinkColor||this.lineColor,this.titleColor=this.titleColor||this.tertiaryTextColor,this.edgeLabelBackground=this.edgeLabelBackground||(this.darkMode?Je(this.secondaryColor,30):this.secondaryColor),this.nodeTextColor=this.nodeTextColor||this.primaryTextColor,this.actorBorder=this.actorBorder||this.primaryBorderColor,this.actorBkg=this.actorBkg||this.mainBkg,this.actorTextColor=this.actorTextColor||this.primaryTextColor,this.actorLineColor=this.actorLineColor||this.actorBorder,this.labelBoxBkgColor=this.labelBoxBkgColor||this.actorBkg,this.signalColor=this.signalColor||this.textColor,this.signalTextColor=this.signalTextColor||this.textColor,this.labelBoxBorderColor=this.labelBoxBorderColor||this.actorBorder,this.labelTextColor=this.labelTextColor||this.actorTextColor,this.loopTextColor=this.loopTextColor||this.actorTextColor,this.activationBorderColor=this.activationBorderColor||Je(this.secondaryColor,10),this.activationBkgColor=this.activationBkgColor||this.secondaryColor,this.sequenceNumberColor=this.sequenceNumberColor||Ye(this.lineColor),this.rectBkgColor=this.rectBkgColor||this.tertiaryColor,this.sectionBkgColor=this.sectionBkgColor||this.tertiaryColor,this.altSectionBkgColor=this.altSectionBkgColor||"white",this.sectionBkgColor=this.sectionBkgColor||this.secondaryColor,this.sectionBkgColor2=this.sectionBkgColor2||this.primaryColor,this.excludeBkgColor=this.excludeBkgColor||"#eeeeee",this.taskBorderColor=this.taskBorderColor||this.primaryBorderColor,this.taskBkgColor=this.taskBkgColor||this.primaryColor,this.activeTaskBorderColor=this.activeTaskBorderColor||this.primaryColor,this.activeTaskBkgColor=this.activeTaskBkgColor||Qe(this.primaryColor,23),this.gridColor=this.gridColor||"lightgrey",this.doneTaskBkgColor=this.doneTaskBkgColor||"lightgrey",this.doneTaskBorderColor=this.doneTaskBorderColor||"grey",this.critBorderColor=this.critBorderColor||"#ff8888",this.critBkgColor=this.critBkgColor||"red",this.todayLineColor=this.todayLineColor||"red",this.vertLineColor=this.vertLineColor||this.primaryBorderColor,this.taskTextColor=this.taskTextColor||this.textColor,this.taskTextOutsideColor=this.taskTextOutsideColor||this.textColor,this.taskTextLightColor=this.taskTextLightColor||this.textColor,this.taskTextColor=this.taskTextColor||this.primaryTextColor,this.taskTextDarkColor=this.taskTextDarkColor||this.textColor,this.taskTextClickableColor=this.taskTextClickableColor||"#003163",this.archEdgeColor=this.lineColor,this.archEdgeArrowColor=this.lineColor,this.personBorder=this.personBorder||this.primaryBorderColor,this.personBkg=this.personBkg||this.mainBkg,this.transitionColor=this.transitionColor||this.lineColor,this.transitionLabelColor=this.transitionLabelColor||this.textColor,this.stateLabelColor=this.stateLabelColor||this.stateBkg||this.primaryTextColor,this.stateBkg=this.stateBkg||this.mainBkg,this.labelBackgroundColor=this.labelBackgroundColor||this.stateBkg,this.compositeBackground=this.compositeBackground||this.background||this.tertiaryColor,this.altBackground=this.altBackground||"#f0f0f0",this.compositeTitleBackground=this.compositeTitleBackground||this.mainBkg,this.compositeBorder=this.compositeBorder||this.nodeBorder,this.innerEndBackground=this.nodeBorder,this.errorBkgColor=this.errorBkgColor||this.tertiaryColor,this.errorTextColor=this.errorTextColor||this.tertiaryTextColor,this.transitionColor=this.transitionColor||this.lineColor,this.specialStateColor=this.lineColor,this.cScale0=this.cScale0||this.primaryColor,this.cScale1=this.cScale1||this.secondaryColor,this.cScale2=this.cScale2||this.tertiaryColor,this.cScale3=this.cScale3||de(this.primaryColor,{h:30}),this.cScale4=this.cScale4||de(this.primaryColor,{h:60}),this.cScale5=this.cScale5||de(this.primaryColor,{h:90}),this.cScale6=this.cScale6||de(this.primaryColor,{h:120}),this.cScale7=this.cScale7||de(this.primaryColor,{h:150}),this.cScale8=this.cScale8||de(this.primaryColor,{h:210,l:150}),this.cScale9=this.cScale9||de(this.primaryColor,{h:270}),this.cScale10=this.cScale10||de(this.primaryColor,{h:300}),this.cScale11=this.cScale11||de(this.primaryColor,{h:330}),this.darkMode)for(let r=0;r<this.THEME_COLOR_LIMIT;r++)this["cScale"+r]=Je(this["cScale"+r],75);else for(let r=0;r<this.THEME_COLOR_LIMIT;r++)this["cScale"+r]=Je(this["cScale"+r],25);for(let r=0;r<this.THEME_COLOR_LIMIT;r++)this["cScaleInv"+r]=this["cScaleInv"+r]||Ye(this["cScale"+r]);for(let r=0;r<this.THEME_COLOR_LIMIT;r++)this.darkMode?this["cScalePeer"+r]=this["cScalePeer"+r]||Qe(this["cScale"+r],10):this["cScalePeer"+r]=this["cScalePeer"+r]||Je(this["cScale"+r],10);this.scaleLabelColor=this.scaleLabelColor||this.labelTextColor;for(let r=0;r<this.THEME_COLOR_LIMIT;r++)this["cScaleLabel"+r]=this["cScaleLabel"+r]||this.scaleLabelColor;let t=this.darkMode?-4:-1;for(let r=0;r<5;r++)this["surface"+r]=this["surface"+r]||de(this.mainBkg,{h:180,s:-15,l:t*(5+r*3)}),this["surfacePeer"+r]=this["surfacePeer"+r]||de(this.mainBkg,{h:180,s:-15,l:t*(8+r*3)});this.classText=this.classText||this.textColor,this.fillType0=this.fillType0||this.primaryColor,this.fillType1=this.fillType1||this.secondaryColor,this.fillType2=this.fillType2||de(this.primaryColor,{h:64}),this.fillType3=this.fillType3||de(this.secondaryColor,{h:64}),this.fillType4=this.fillType4||de(this.primaryColor,{h:-64}),this.fillType5=this.fillType5||de(this.secondaryColor,{h:-64}),this.fillType6=this.fillType6||de(this.primaryColor,{h:128}),this.fillType7=this.fillType7||de(this.secondaryColor,{h:128}),this.pie1=this.pie1||this.primaryColor,this.pie2=this.pie2||this.secondaryColor,this.pie3=this.pie3||this.tertiaryColor,this.pie4=this.pie4||de(this.primaryColor,{l:-10}),this.pie5=this.pie5||de(this.secondaryColor,{l:-10}),this.pie6=this.pie6||de(this.tertiaryColor,{l:-10}),this.pie7=this.pie7||de(this.primaryColor,{h:60,l:-10}),this.pie8=this.pie8||de(this.primaryColor,{h:-60,l:-10}),this.pie9=this.pie9||de(this.primaryColor,{h:120,l:0}),this.pie10=this.pie10||de(this.primaryColor,{h:60,l:-20}),this.pie11=this.pie11||de(this.primaryColor,{h:-60,l:-20}),this.pie12=this.pie12||de(this.primaryColor,{h:120,l:-10}),this.pieTitleTextSize=this.pieTitleTextSize||"25px",this.pieTitleTextColor=this.pieTitleTextColor||this.taskTextDarkColor,this.pieSectionTextSize=this.pieSectionTextSize||"17px",this.pieSectionTextColor=this.pieSectionTextColor||this.textColor,this.pieLegendTextSize=this.pieLegendTextSize||"17px",this.pieLegendTextColor=this.pieLegendTextColor||this.taskTextDarkColor,this.pieStrokeColor=this.pieStrokeColor||"black",this.pieStrokeWidth=this.pieStrokeWidth||"2px",this.pieOuterStrokeWidth=this.pieOuterStrokeWidth||"2px",this.pieOuterStrokeColor=this.pieOuterStrokeColor||"black",this.pieOpacity=this.pieOpacity||"0.7",this.vennTitleTextColor=this.vennTitleTextColor??this.titleColor,this.vennSetTextColor=this.vennSetTextColor??this.textColor,this.quadrant1Fill=this.quadrant1Fill||this.primaryColor,this.quadrant2Fill=this.quadrant2Fill||de(this.primaryColor,{r:5,g:5,b:5}),this.quadrant3Fill=this.quadrant3Fill||de(this.primaryColor,{r:10,g:10,b:10}),this.quadrant4Fill=this.quadrant4Fill||de(this.primaryColor,{r:15,g:15,b:15}),this.quadrant1TextFill=this.quadrant1TextFill||this.primaryTextColor,this.quadrant2TextFill=this.quadrant2TextFill||de(this.primaryTextColor,{r:-5,g:-5,b:-5}),this.quadrant3TextFill=this.quadrant3TextFill||de(this.primaryTextColor,{r:-10,g:-10,b:-10}),this.quadrant4TextFill=this.quadrant4TextFill||de(this.primaryTextColor,{r:-15,g:-15,b:-15}),this.quadrantPointFill=this.quadrantPointFill||Tn(this.quadrant1Fill)?Qe(this.quadrant1Fill):Je(this.quadrant1Fill),this.quadrantPointTextFill=this.quadrantPointTextFill||this.primaryTextColor,this.quadrantXAxisTextFill=this.quadrantXAxisTextFill||this.primaryTextColor,this.quadrantYAxisTextFill=this.quadrantYAxisTextFill||this.primaryTextColor,this.quadrantInternalBorderStrokeFill=this.quadrantInternalBorderStrokeFill||this.primaryBorderColor,this.quadrantExternalBorderStrokeFill=this.quadrantExternalBorderStrokeFill||this.primaryBorderColor,this.quadrantTitleFill=this.quadrantTitleFill||this.primaryTextColor,this.xyChart={backgroundColor:this.xyChart?.backgroundColor||this.background,titleColor:this.xyChart?.titleColor||this.primaryTextColor,xAxisTitleColor:this.xyChart?.xAxisTitleColor||this.primaryTextColor,xAxisLabelColor:this.xyChart?.xAxisLabelColor||this.primaryTextColor,xAxisTickColor:this.xyChart?.xAxisTickColor||this.primaryTextColor,xAxisLineColor:this.xyChart?.xAxisLineColor||this.primaryTextColor,yAxisTitleColor:this.xyChart?.yAxisTitleColor||this.primaryTextColor,yAxisLabelColor:this.xyChart?.yAxisLabelColor||this.primaryTextColor,yAxisTickColor:this.xyChart?.yAxisTickColor||this.primaryTextColor,yAxisLineColor:this.xyChart?.yAxisLineColor||this.primaryTextColor,plotColorPalette:this.xyChart?.plotColorPalette||"#FFF4DD,#FFD8B1,#FFA07A,#ECEFF1,#D6DBDF,#C3E0A8,#FFB6A4,#FFD74D,#738FA7,#FFFFF0"},this.requirementBackground=this.requirementBackground||this.primaryColor,this.requirementBorderColor=this.requirementBorderColor||this.primaryBorderColor,this.requirementBorderSize=this.requirementBorderSize||"1",this.requirementTextColor=this.requirementTextColor||this.primaryTextColor,this.relationColor=this.relationColor||this.lineColor,this.relationLabelBackground=this.relationLabelBackground||(this.darkMode?Je(this.secondaryColor,30):this.secondaryColor),this.relationLabelColor=this.relationLabelColor||this.actorTextColor,this.git0=this.git0||"#0b0000",this.git1=this.git1||"#4d1037",this.git2=this.git2||"#3f5258",this.git3=this.git3||"#4f2f1b",this.git4=this.git4||"#6e0a0a",this.git5=this.git5||"#3b0048",this.git6=this.git6||"#995a01",this.git7=this.git7||"#154706",this.gitDarkMode=!0,this.gitDarkMode?(this.git0=Qe(this.git0,25),this.git1=Qe(this.git1,25),this.git2=Qe(this.git2,25),this.git3=Qe(this.git3,25),this.git4=Qe(this.git4,25),this.git5=Qe(this.git5,25),this.git6=Qe(this.git6,25),this.git7=Qe(this.git7,25)):(this.git0=Je(this.git0,25),this.git1=Je(this.git1,25),this.git2=Je(this.git2,25),this.git3=Je(this.git3,25),this.git4=Je(this.git4,25),this.git5=Je(this.git5,25),this.git6=Je(this.git6,25),this.git7=Je(this.git7,25)),this.gitInv0=this.gitInv0||Ye(this.git0),this.gitInv1=this.gitInv1||Ye(this.git1),this.gitInv2=this.gitInv2||Ye(this.git2),this.gitInv3=this.gitInv3||Ye(this.git3),this.gitInv4=this.gitInv4||Ye(this.git4),this.gitInv5=this.gitInv5||Ye(this.git5),this.gitInv6=this.gitInv6||Ye(this.git6),this.gitInv7=this.gitInv7||Ye(this.git7),this.branchLabelColor=this.branchLabelColor||(this.darkMode?"black":this.labelTextColor),this.gitBranchLabel0=this.gitBranchLabel0||this.branchLabelColor,this.gitBranchLabel1=this.gitBranchLabel1||this.branchLabelColor,this.gitBranchLabel2=this.gitBranchLabel2||this.branchLabelColor,this.gitBranchLabel3=this.gitBranchLabel3||this.branchLabelColor,this.gitBranchLabel4=this.gitBranchLabel4||this.branchLabelColor,this.gitBranchLabel5=this.gitBranchLabel5||this.branchLabelColor,this.gitBranchLabel6=this.gitBranchLabel6||this.branchLabelColor,this.gitBranchLabel7=this.gitBranchLabel7||this.branchLabelColor,this.tagLabelColor=this.tagLabelColor||this.primaryTextColor,this.tagLabelBackground=this.tagLabelBackground||this.primaryColor,this.tagLabelBorder=this.tagBorder||this.primaryBorderColor,this.tagLabelFontSize=this.tagLabelFontSize||"10px",this.commitLabelColor=this.commitLabelColor||this.secondaryTextColor,this.commitLabelBackground=this.commitLabelBackground||this.secondaryColor,this.commitLabelFontSize=this.commitLabelFontSize||"10px",this.attributeBackgroundColorOdd=this.attributeBackgroundColorOdd||Gi,this.attributeBackgroundColorEven=this.attributeBackgroundColorEven||Vi}calculate(t){if(typeof t!="object"){this.updateColors();return}let r=Object.keys(t);r.forEach(n=>{this[n]=t[n]}),this.updateColors(),r.forEach(n=>{this[n]=t[n]})}},VK=o(e=>{let t=new r7;return t.calculate(e),t},"getThemeVariables")});var n7,qK,HK=F(()=>{"use strict";zi();al();Fl();n7=class{static{o(this,"Theme")}constructor(){this.background="#ffffff",this.primaryColor="#cccccc",this.mainBkg="#ffffff",this.noteBkgColor="#fff5ad",this.noteTextColor="#28253D",this.THEME_COLOR_LIMIT=12,this.radius=12,this.strokeWidth=2,this.primaryBorderColor=ar("#28253D",this.darkMode),this.fontFamily='"Recursive Variable", arial, sans-serif',this.fontSize="14px",this.nodeBorder="#28253D",this.stateBorder="#28253D",this.useGradient=!1,this.gradientStart="#0042eb",this.gradientStop="#eb0042",this.dropShadow="url(#drop-shadow)",this.nodeShadow=!0,this.tertiaryColor="#ffffff",this.clusterBkg="#F9F9FB",this.clusterBorder="#BDBCCC",this.noteBorderColor="#FACC15",this.archEdgeColor="calculated",this.archEdgeArrowColor="calculated",this.archEdgeWidth="3",this.archGroupBorderColor=this.primaryBorderColor,this.archGroupBorderWidth="2px",this.actorBorder="#28253D",this.filterColor="#000000"}updateColors(){this.primaryTextColor=this.primaryTextColor||(this.darkMode?"#eee":"#28253D"),this.secondaryColor=this.secondaryColor||de(this.primaryColor,{h:-120}),this.tertiaryColor=this.tertiaryColor||de(this.primaryColor,{h:180,l:5}),this.primaryBorderColor=this.primaryBorderColor||ar(this.primaryColor,this.darkMode),this.secondaryBorderColor=this.secondaryBorderColor||ar(this.secondaryColor,this.darkMode),this.tertiaryBorderColor=this.tertiaryBorderColor||ar(this.tertiaryColor,this.darkMode),this.noteBorderColor=this.noteBorderColor||ar(this.noteBkgColor,this.darkMode),this.noteBkgColor=this.noteBkgColor||"#FEF9C3",this.noteTextColor=this.noteTextColor||"#28253D",this.secondaryTextColor=this.secondaryTextColor||Ye(this.secondaryColor),this.tertiaryTextColor=this.tertiaryTextColor||Ye(this.tertiaryColor),this.lineColor=this.lineColor||Ye(this.background),this.arrowheadColor=this.arrowheadColor||Ye(this.background),this.textColor=this.textColor||this.primaryTextColor,this.border2=this.border2||this.tertiaryBorderColor,this.nodeBkg=this.nodeBkg||this.primaryColor,this.mainBkg=this.mainBkg||this.primaryColor,this.nodeBorder=this.nodeBorder||this.primaryBorderColor,this.clusterBkg=this.clusterBkg||this.tertiaryColor,this.clusterBorder=this.clusterBorder||this.tertiaryBorderColor,this.defaultLinkColor=this.defaultLinkColor||this.lineColor,this.titleColor=this.titleColor||this.tertiaryTextColor,this.edgeLabelBackground=this.edgeLabelBackground||(this.darkMode?Je(this.secondaryColor,30):this.secondaryColor),this.nodeTextColor=this.nodeTextColor||this.primaryTextColor,this.noteFontWeight=600,this.actorBorder=this.actorBorder||this.primaryBorderColor,this.actorBkg=this.actorBkg||this.mainBkg,this.actorTextColor=this.actorTextColor||this.primaryTextColor,this.actorLineColor=this.actorLineColor||this.actorBorder,this.labelBoxBkgColor=this.labelBoxBkgColor||this.actorBkg,this.signalColor=this.signalColor||this.textColor,this.signalTextColor=this.signalTextColor||this.textColor,this.labelBoxBorderColor=this.labelBoxBorderColor||this.actorBorder,this.labelTextColor=this.labelTextColor||this.actorTextColor,this.loopTextColor=this.loopTextColor||this.actorTextColor,this.activationBorderColor=this.activationBorderColor||Je(this.secondaryColor,10),this.activationBkgColor=this.activationBkgColor||this.secondaryColor,this.sequenceNumberColor=this.sequenceNumberColor||Ye(this.lineColor),this.rectBkgColor=this.rectBkgColor||this.tertiaryColor;let t="#ECECFE",r="#E9E9F1",n=de(t,{h:180,l:5});this.sectionBkgColor=this.sectionBkgColor||n,this.altSectionBkgColor=this.altSectionBkgColor||"white",this.sectionBkgColor=this.sectionBkgColor||r,this.sectionBkgColor2=this.sectionBkgColor2||t,this.excludeBkgColor=this.excludeBkgColor||"#eeeeee",this.taskBorderColor=this.taskBorderColor||this.primaryBorderColor,this.taskBkgColor=this.taskBkgColor||t,this.activeTaskBorderColor=this.activeTaskBorderColor||t,this.activeTaskBkgColor=this.activeTaskBkgColor||Qe(t,23),this.gridColor=this.gridColor||"lightgrey",this.doneTaskBkgColor=this.doneTaskBkgColor||"lightgrey",this.doneTaskBorderColor=this.doneTaskBorderColor||"grey",this.critBorderColor=this.critBorderColor||"#ff8888",this.critBkgColor=this.critBkgColor||"red",this.todayLineColor=this.todayLineColor||"red",this.taskTextColor=this.taskTextColor||this.textColor,this.vertLineColor=this.vertLineColor||this.primaryBorderColor,this.taskTextOutsideColor=this.taskTextOutsideColor||this.textColor,this.taskTextLightColor=this.taskTextLightColor||this.textColor,this.taskTextColor=this.taskTextColor||this.primaryTextColor,this.taskTextDarkColor=this.taskTextDarkColor||this.textColor,this.taskTextClickableColor=this.taskTextClickableColor||"#003163",this.archEdgeColor=this.lineColor,this.archEdgeArrowColor=this.lineColor,this.personBorder=this.personBorder||this.primaryBorderColor,this.personBkg=this.personBkg||this.mainBkg,this.transitionColor=this.transitionColor||this.lineColor,this.transitionLabelColor=this.transitionLabelColor||this.textColor,this.stateLabelColor=this.stateLabelColor||this.stateBkg||this.primaryTextColor,this.compositeTitleBackground="#F9F9FB",this.altBackground="#F9F9FB",this.stateEdgeLabelBackground="#FFFFFF",this.fontWeight=600,this.stateBkg=this.stateBkg||this.mainBkg,this.labelBackgroundColor=this.labelBackgroundColor||this.stateBkg,this.compositeBackground=this.compositeBackground||this.background||this.tertiaryColor,this.altBackground=this.altBackground||"#f0f0f0",this.compositeTitleBackground=this.compositeTitleBackground||this.mainBkg,this.compositeBorder=this.compositeBorder||this.nodeBorder,this.innerEndBackground=this.nodeBorder,this.errorBkgColor=this.errorBkgColor||this.tertiaryColor,this.errorTextColor=this.errorTextColor||this.tertiaryTextColor,this.transitionColor=this.transitionColor||this.lineColor,this.specialStateColor=this.lineColor;for(let a=0;a<this.THEME_COLOR_LIMIT;a++)this["cScale"+a]=this.mainBkg;if(this.darkMode)for(let a=0;a<this.THEME_COLOR_LIMIT;a++)this["cScale"+a]=Je(this["cScale"+a],75);else for(let a=0;a<this.THEME_COLOR_LIMIT;a++)this["cScale"+a]=Je(this["cScale"+a],25);for(let a=0;a<this.THEME_COLOR_LIMIT;a++)this["cScaleInv"+a]=this["cScaleInv"+a]||Ye(this["cScale"+a]);for(let a=0;a<this.THEME_COLOR_LIMIT;a++)this.darkMode?this["cScalePeer"+a]=this["cScalePeer"+a]||Qe(this["cScale"+a],10):this["cScalePeer"+a]=this["cScalePeer"+a]||Je(this["cScale"+a],10);this.scaleLabelColor=this.scaleLabelColor||this.labelTextColor;for(let a=0;a<this.THEME_COLOR_LIMIT;a++)this["cScaleLabel"+a]=this["cScaleLabel"+a]||this.scaleLabelColor;let i=this.darkMode?-4:-1;for(let a=0;a<5;a++)this["surface"+a]=this["surface"+a]||de(this.mainBkg,{h:180,s:-15,l:i*(5+a*3)}),this["surfacePeer"+a]=this["surfacePeer"+a]||de(this.mainBkg,{h:180,s:-15,l:i*(8+a*3)});this.classText=this.classText||this.textColor,this.fillType0=this.fillType0||t,this.fillType1=this.fillType1||r,this.fillType2=this.fillType2||de(t,{h:64}),this.fillType3=this.fillType3||de(r,{h:64}),this.fillType4=this.fillType4||de(t,{h:-64}),this.fillType5=this.fillType5||de(r,{h:-64}),this.fillType6=this.fillType6||de(t,{h:128}),this.fillType7=this.fillType7||de(r,{h:128}),this.pie1=this.pie1||t,this.pie2=this.pie2||r,this.pie3=this.pie3||n,this.pie4=this.pie4||de(t,{l:-10}),this.pie5=this.pie5||de(r,{l:-10}),this.pie6=this.pie6||de(n,{l:-10}),this.pie7=this.pie7||de(t,{h:60,l:-10}),this.pie8=this.pie8||de(t,{h:-60,l:-10}),this.pie9=this.pie9||de(t,{h:120,l:0}),this.pie10=this.pie10||de(t,{h:60,l:-20}),this.pie11=this.pie11||de(t,{h:-60,l:-20}),this.pie12=this.pie12||de(t,{h:120,l:-10}),this.pieTitleTextSize=this.pieTitleTextSize||"25px",this.pieTitleTextColor=this.pieTitleTextColor||this.taskTextDarkColor,this.pieSectionTextSize=this.pieSectionTextSize||"17px",this.pieSectionTextColor=this.pieSectionTextColor||this.textColor,this.pieLegendTextSize=this.pieLegendTextSize||"17px",this.pieLegendTextColor=this.pieLegendTextColor||this.taskTextDarkColor,this.pieStrokeColor=this.pieStrokeColor||"black",this.pieStrokeWidth=this.pieStrokeWidth||"2px",this.pieOuterStrokeWidth=this.pieOuterStrokeWidth||"2px",this.pieOuterStrokeColor=this.pieOuterStrokeColor||"black",this.pieOpacity=this.pieOpacity||"0.7",this.vennTitleTextColor=this.vennTitleTextColor??this.titleColor,this.vennSetTextColor=this.vennSetTextColor??this.textColor,this.quadrant1Fill=this.quadrant1Fill||t,this.quadrant2Fill=this.quadrant2Fill||de(t,{r:5,g:5,b:5}),this.quadrant3Fill=this.quadrant3Fill||de(t,{r:10,g:10,b:10}),this.quadrant4Fill=this.quadrant4Fill||de(t,{r:15,g:15,b:15}),this.quadrant1TextFill=this.quadrant1TextFill||this.primaryTextColor,this.quadrant2TextFill=this.quadrant2TextFill||de(this.primaryTextColor,{r:-5,g:-5,b:-5}),this.quadrant3TextFill=this.quadrant3TextFill||de(this.primaryTextColor,{r:-10,g:-10,b:-10}),this.quadrant4TextFill=this.quadrant4TextFill||de(this.primaryTextColor,{r:-15,g:-15,b:-15}),this.quadrantPointFill=this.quadrantPointFill||Tn(this.quadrant1Fill)?Qe(this.quadrant1Fill):Je(this.quadrant1Fill),this.quadrantPointTextFill=this.quadrantPointTextFill||this.primaryTextColor,this.quadrantXAxisTextFill=this.quadrantXAxisTextFill||this.primaryTextColor,this.quadrantYAxisTextFill=this.quadrantYAxisTextFill||this.primaryTextColor,this.quadrantInternalBorderStrokeFill=this.quadrantInternalBorderStrokeFill||this.primaryBorderColor,this.quadrantExternalBorderStrokeFill=this.quadrantExternalBorderStrokeFill||this.primaryBorderColor,this.quadrantTitleFill=this.quadrantTitleFill||this.primaryTextColor,this.xyChart={backgroundColor:this.xyChart?.backgroundColor||this.background,titleColor:this.xyChart?.titleColor||this.primaryTextColor,xAxisTitleColor:this.xyChart?.xAxisTitleColor||this.primaryTextColor,xAxisLabelColor:this.xyChart?.xAxisLabelColor||this.primaryTextColor,xAxisTickColor:this.xyChart?.xAxisTickColor||this.primaryTextColor,xAxisLineColor:this.xyChart?.xAxisLineColor||this.primaryTextColor,yAxisTitleColor:this.xyChart?.yAxisTitleColor||this.primaryTextColor,yAxisLabelColor:this.xyChart?.yAxisLabelColor||this.primaryTextColor,yAxisTickColor:this.xyChart?.yAxisTickColor||this.primaryTextColor,yAxisLineColor:this.xyChart?.yAxisLineColor||this.primaryTextColor,plotColorPalette:this.xyChart?.plotColorPalette||"#FFF4DD,#FFD8B1,#FFA07A,#ECEFF1,#D6DBDF,#C3E0A8,#FFB6A4,#FFD74D,#738FA7,#FFFFF0"},this.requirementBackground=this.requirementBackground||t,this.requirementBorderColor=this.requirementBorderColor||this.primaryBorderColor,this.requirementBorderSize=this.requirementBorderSize||"1",this.requirementTextColor=this.requirementTextColor||this.primaryTextColor,this.relationColor=this.relationColor||this.lineColor,this.relationLabelBackground=this.relationLabelBackground||(this.darkMode?Je(this.secondaryColor,30):this.secondaryColor),this.relationLabelColor=this.relationLabelColor||this.actorTextColor,this.requirementEdgeLabelBackground="#FFFFFF",this.git0=this.git0||t,this.git1=this.git1||r,this.git2=this.git2||n,this.git3=this.git3||de(t,{h:-30}),this.git4=this.git4||de(t,{h:-60}),this.git5=this.git5||de(t,{h:-90}),this.git6=this.git6||de(t,{h:60}),this.git7=this.git7||de(t,{h:120}),this.darkMode?(this.git0=Qe(this.git0,25),this.git1=Qe(this.git1,25),this.git2=Qe(this.git2,25),this.git3=Qe(this.git3,25),this.git4=Qe(this.git4,25),this.git5=Qe(this.git5,25),this.git6=Qe(this.git6,25),this.git7=Qe(this.git7,25)):(this.git0=Je(this.git0,25),this.git1=Je(this.git1,25),this.git2=Je(this.git2,25),this.git3=Je(this.git3,25),this.git4=Je(this.git4,25),this.git5=Je(this.git5,25),this.git6=Je(this.git6,25),this.git7=Je(this.git7,25)),this.gitInv0=this.gitInv0||Ye(this.git0),this.gitInv1=this.gitInv1||Ye(this.git1),this.gitInv2=this.gitInv2||Ye(this.git2),this.gitInv3=this.gitInv3||Ye(this.git3),this.gitInv4=this.gitInv4||Ye(this.git4),this.gitInv5=this.gitInv5||Ye(this.git5),this.gitInv6=this.gitInv6||Ye(this.git6),this.gitInv7=this.gitInv7||Ye(this.git7),this.branchLabelColor=this.branchLabelColor||(this.darkMode?"black":this.labelTextColor),this.gitBranchLabel0=this.gitBranchLabel0||this.branchLabelColor,this.gitBranchLabel1=this.gitBranchLabel1||this.branchLabelColor,this.gitBranchLabel2=this.gitBranchLabel2||this.branchLabelColor,this.gitBranchLabel3=this.gitBranchLabel3||this.branchLabelColor,this.gitBranchLabel4=this.gitBranchLabel4||this.branchLabelColor,this.gitBranchLabel5=this.gitBranchLabel5||this.branchLabelColor,this.gitBranchLabel6=this.gitBranchLabel6||this.branchLabelColor,this.gitBranchLabel7=this.gitBranchLabel7||this.branchLabelColor,this.tagLabelColor=this.tagLabelColor||this.primaryTextColor,this.tagLabelBackground=this.tagLabelBackground||this.primaryColor,this.tagLabelBorder=this.tagBorder||this.primaryBorderColor,this.tagLabelFontSize=this.tagLabelFontSize||"10px",this.commitLabelColor=this.commitLabelColor||this.secondaryTextColor,this.commitLabelBackground=this.commitLabelBackground||this.secondaryColor,this.commitLabelFontSize=this.commitLabelFontSize||"10px",this.commitLineColor=this.commitLineColor??"#BDBCCC",this.erEdgeLabelBackground="#FFFFFF",this.attributeBackgroundColorOdd=this.attributeBackgroundColorOdd||Gi,this.attributeBackgroundColorEven=this.attributeBackgroundColorEven||Vi}calculate(t){if(typeof t!="object"){this.updateColors();return}let r=Object.keys(t);r.forEach(n=>{this[n]=t[n]}),this.updateColors(),r.forEach(n=>{this[n]=t[n]})}},qK=o(e=>{let t=new n7;return t.calculate(e),t},"getThemeVariables")});var i7,UK,YK=F(()=>{"use strict";zi();al();Fl();i7=class{static{o(this,"Theme")}constructor(){this.background="#333",this.primaryColor="#1f2020",this.secondaryColor=Qe(this.primaryColor,16),this.tertiaryColor=de(this.primaryColor,{h:-160}),this.primaryBorderColor=Ye(this.background),this.secondaryBorderColor=ar(this.secondaryColor,this.darkMode),this.tertiaryBorderColor=ar(this.tertiaryColor,this.darkMode),this.primaryTextColor=Ye(this.primaryColor),this.secondaryTextColor=Ye(this.secondaryColor),this.tertiaryTextColor=Ye(this.tertiaryColor),this.mainBkg="#111113",this.secondBkg="calculated",this.mainContrastColor="lightgrey",this.darkTextColor=Qe(Ye("#323D47"),10),this.border1="#ccc",this.border2=Oi(255,255,255,.25),this.arrowheadColor=Ye(this.background),this.fontFamily='"Recursive Variable", arial, sans-serif',this.fontSize="14px",this.labelBackground="#111113",this.textColor="#ccc",this.THEME_COLOR_LIMIT=12,this.radius=12,this.strokeWidth=2,this.noteBkgColor=this.noteBkgColor??"#FEF9C3",this.noteTextColor=this.noteTextColor??"#28253D",this.THEME_COLOR_LIMIT=12,this.fontFamily='"Recursive Variable", arial, sans-serif',this.fontSize="14px",this.nodeBorder="#FFFFFF",this.stateBorder="#FFFFFF",this.useGradient=!1,this.gradientStart="#0042eb",this.gradientStop="#eb0042",this.dropShadow="url(#drop-shadow)",this.nodeShadow=!0,this.archEdgeColor="calculated",this.archEdgeArrowColor="calculated",this.archEdgeWidth="3",this.archGroupBorderColor=this.primaryBorderColor,this.archGroupBorderWidth="2px",this.clusterBkg="#1E1A2E",this.clusterBorder="#BDBCCC",this.noteBorderColor="#FACC15",this.noteFontWeight=600,this.filterColor="#FFFFFF"}updateColors(){if(this.primaryTextColor=this.primaryTextColor||(this.darkMode?"#eee":"#FFFFFF"),this.secondaryColor=this.secondaryColor||de(this.primaryColor,{h:-120}),this.tertiaryColor=this.tertiaryColor||de(this.primaryColor,{h:180,l:5}),this.primaryBorderColor=this.primaryBorderColor||ar(this.primaryColor,this.darkMode),this.secondaryBorderColor=this.secondaryBorderColor||ar(this.secondaryColor,this.darkMode),this.tertiaryBorderColor=this.tertiaryBorderColor||ar(this.tertiaryColor,this.darkMode),this.noteBorderColor=this.noteBorderColor||ar(this.noteBkgColor,this.darkMode),this.noteBkgColor=this.noteBkgColor||"#fff5ad",this.noteTextColor=this.noteTextColor||"#FFFFFF",this.secondaryTextColor=this.secondaryTextColor||Ye(this.secondaryColor),this.tertiaryTextColor=this.tertiaryTextColor||Ye(this.tertiaryColor),this.lineColor=this.lineColor||Ye(this.background),this.arrowheadColor=this.arrowheadColor||Ye(this.background),this.textColor=this.textColor||this.primaryTextColor,this.border2=this.border2||this.tertiaryBorderColor,this.nodeBkg=this.nodeBkg||this.primaryColor,this.mainBkg=this.mainBkg||this.primaryColor,this.nodeBorder=this.nodeBorder||this.border1,this.clusterBkg=this.clusterBkg||this.tertiaryColor,this.clusterBorder=this.clusterBorder||this.tertiaryBorderColor,this.defaultLinkColor=this.defaultLinkColor||this.lineColor,this.titleColor=this.titleColor||this.tertiaryTextColor,this.edgeLabelBackground=this.edgeLabelBackground||(this.darkMode?Je(this.secondaryColor,30):this.secondaryColor),this.nodeTextColor=this.nodeTextColor||this.primaryTextColor,this.actorBorder="#FFFFFF",this.signalColor="#FFFFFF",this.labelBoxBorderColor="#BDBCCC",this.actorBorder=this.actorBorder||this.primaryBorderColor,this.actorBkg=this.actorBkg||this.mainBkg,this.actorTextColor=this.actorTextColor||this.primaryTextColor,this.actorLineColor=this.actorLineColor||this.actorBorder,this.labelBoxBkgColor=this.labelBoxBkgColor||this.actorBkg,this.signalColor=this.signalColor||this.textColor,this.signalTextColor=this.signalTextColor||this.textColor,this.labelBoxBorderColor=this.labelBoxBorderColor||this.actorBorder,this.labelTextColor=this.labelTextColor||this.actorTextColor,this.loopTextColor=this.loopTextColor||this.actorTextColor,this.activationBorderColor=this.activationBorderColor||Je(this.secondaryColor,10),this.activationBkgColor=this.activationBkgColor||this.secondaryColor,this.sequenceNumberColor=this.sequenceNumberColor||Ye(this.lineColor),this.rectBkgColor=this.rectBkgColor||this.tertiaryColor,this.sectionBkgColor=this.sectionBkgColor||this.tertiaryColor,this.altSectionBkgColor=this.altSectionBkgColor||"white",this.sectionBkgColor=this.sectionBkgColor||this.secondaryColor,this.sectionBkgColor2=this.sectionBkgColor2||this.primaryColor,this.excludeBkgColor=this.excludeBkgColor||"#eeeeee",this.taskBorderColor=this.taskBorderColor||this.primaryBorderColor,this.taskBkgColor=this.taskBkgColor||this.primaryColor,this.activeTaskBorderColor=this.activeTaskBorderColor||this.primaryColor,this.activeTaskBkgColor=this.activeTaskBkgColor||Qe(this.primaryColor,23),this.gridColor=this.gridColor||"lightgrey",this.doneTaskBkgColor=this.doneTaskBkgColor||"lightgrey",this.doneTaskBorderColor=this.doneTaskBorderColor||"grey",this.critBorderColor=this.critBorderColor||"#ff8888",this.critBkgColor=this.critBkgColor||"red",this.todayLineColor=this.todayLineColor||"red",this.taskTextColor=this.taskTextColor||this.textColor,this.taskTextOutsideColor=this.taskTextOutsideColor||this.textColor,this.taskTextLightColor=this.taskTextLightColor||this.textColor,this.taskTextColor=this.taskTextColor||this.primaryTextColor,this.taskTextDarkColor=this.taskTextDarkColor||this.textColor,this.taskTextClickableColor=this.taskTextClickableColor||"#003163",this.archEdgeColor=this.lineColor,this.archEdgeArrowColor=this.lineColor,this.personBorder=this.personBorder||this.primaryBorderColor,this.personBkg=this.personBkg||this.mainBkg,this.transitionColor=this.transitionColor||this.lineColor,this.transitionLabelColor=this.transitionLabelColor||this.textColor,this.stateLabelColor=this.stateLabelColor||this.stateBkg||this.primaryTextColor,this.vertLineColor=this.vertLineColor||this.primaryBorderColor,this.compositeBackground="#16141F",this.altBackground="#16141F",this.compositeTitleBackground="#16141F",this.stateEdgeLabelBackground="#16141F",this.fontWeight=600,this.stateBkg=this.stateBkg||this.mainBkg,this.labelBackgroundColor=this.labelBackgroundColor||this.stateBkg,this.compositeBackground=this.compositeBackground||this.background||this.tertiaryColor,this.altBackground=this.altBackground||"#f0f0f0",this.compositeTitleBackground=this.compositeTitleBackground||this.mainBkg,this.compositeBorder=this.compositeBorder||this.nodeBorder,this.innerEndBackground=this.nodeBorder,this.errorBkgColor=this.errorBkgColor||this.tertiaryColor,this.errorTextColor=this.errorTextColor||this.tertiaryTextColor,this.transitionColor=this.transitionColor||this.lineColor,this.specialStateColor=this.lineColor,this.cScale0=this.cScale0||this.primaryColor,this.cScale1=this.cScale1||this.secondaryColor,this.cScale2=this.cScale2||this.tertiaryColor,this.cScale3=this.cScale3||de(this.primaryColor,{h:30}),this.cScale4=this.cScale4||de(this.primaryColor,{h:60}),this.cScale5=this.cScale5||de(this.primaryColor,{h:90}),this.cScale6=this.cScale6||de(this.primaryColor,{h:120}),this.cScale7=this.cScale7||de(this.primaryColor,{h:150}),this.cScale8=this.cScale8||de(this.primaryColor,{h:210,l:150}),this.cScale9=this.cScale9||de(this.primaryColor,{h:270}),this.cScale10=this.cScale10||de(this.primaryColor,{h:300}),this.cScale11=this.cScale11||de(this.primaryColor,{h:330}),this.darkMode)for(let r=0;r<this.THEME_COLOR_LIMIT;r++)this["cScale"+r]=Je(this["cScale"+r],75);else for(let r=0;r<this.THEME_COLOR_LIMIT;r++)this["cScale"+r]=Je(this["cScale"+r],25);for(let r=0;r<this.THEME_COLOR_LIMIT;r++)this["cScaleInv"+r]=this["cScaleInv"+r]||Ye(this["cScale"+r]);for(let r=0;r<this.THEME_COLOR_LIMIT;r++)this.darkMode?this["cScalePeer"+r]=this["cScalePeer"+r]||Qe(this["cScale"+r],10):this["cScalePeer"+r]=this["cScalePeer"+r]||Je(this["cScale"+r],10);this.scaleLabelColor=this.scaleLabelColor||this.labelTextColor;for(let r=0;r<this.THEME_COLOR_LIMIT;r++)this["cScaleLabel"+r]=this["cScaleLabel"+r]||this.scaleLabelColor;let t=this.darkMode?-4:-1;for(let r=0;r<5;r++)this["surface"+r]=this["surface"+r]||de(this.mainBkg,{h:180,s:-15,l:t*(5+r*3)}),this["surfacePeer"+r]=this["surfacePeer"+r]||de(this.mainBkg,{h:180,s:-15,l:t*(8+r*3)});this.classText=this.classText||this.textColor,this.fillType0=this.fillType0||this.primaryColor,this.fillType1=this.fillType1||this.secondaryColor,this.fillType2=this.fillType2||de(this.primaryColor,{h:64}),this.fillType3=this.fillType3||de(this.secondaryColor,{h:64}),this.fillType4=this.fillType4||de(this.primaryColor,{h:-64}),this.fillType5=this.fillType5||de(this.secondaryColor,{h:-64}),this.fillType6=this.fillType6||de(this.primaryColor,{h:128}),this.fillType7=this.fillType7||de(this.secondaryColor,{h:128}),this.pie1=this.pie1||this.primaryColor,this.pie2=this.pie2||this.secondaryColor,this.pie3=this.pie3||this.tertiaryColor,this.pie4=this.pie4||de(this.primaryColor,{l:-10}),this.pie5=this.pie5||de(this.secondaryColor,{l:-10}),this.pie6=this.pie6||de(this.tertiaryColor,{l:-10}),this.pie7=this.pie7||de(this.primaryColor,{h:60,l:-10}),this.pie8=this.pie8||de(this.primaryColor,{h:-60,l:-10}),this.pie9=this.pie9||de(this.primaryColor,{h:120,l:0}),this.pie10=this.pie10||de(this.primaryColor,{h:60,l:-20}),this.pie11=this.pie11||de(this.primaryColor,{h:-60,l:-20}),this.pie12=this.pie12||de(this.primaryColor,{h:120,l:-10}),this.pieTitleTextSize=this.pieTitleTextSize||"25px",this.pieTitleTextColor=this.pieTitleTextColor||this.taskTextDarkColor,this.pieSectionTextSize=this.pieSectionTextSize||"17px",this.pieSectionTextColor=this.pieSectionTextColor||this.textColor,this.pieLegendTextSize=this.pieLegendTextSize||"17px",this.pieLegendTextColor=this.pieLegendTextColor||this.taskTextDarkColor,this.pieStrokeColor=this.pieStrokeColor||"black",this.pieStrokeWidth=this.pieStrokeWidth||"2px",this.pieOuterStrokeWidth=this.pieOuterStrokeWidth||"2px",this.pieOuterStrokeColor=this.pieOuterStrokeColor||"black",this.pieOpacity=this.pieOpacity||"0.7",this.vennTitleTextColor=this.vennTitleTextColor??this.titleColor,this.vennSetTextColor=this.vennSetTextColor??this.textColor,this.quadrant1Fill=this.quadrant1Fill||this.primaryColor,this.quadrant2Fill=this.quadrant2Fill||de(this.primaryColor,{r:5,g:5,b:5}),this.quadrant3Fill=this.quadrant3Fill||de(this.primaryColor,{r:10,g:10,b:10}),this.quadrant4Fill=this.quadrant4Fill||de(this.primaryColor,{r:15,g:15,b:15}),this.quadrant1TextFill=this.quadrant1TextFill||this.primaryTextColor,this.quadrant2TextFill=this.quadrant2TextFill||de(this.primaryTextColor,{r:-5,g:-5,b:-5}),this.quadrant3TextFill=this.quadrant3TextFill||de(this.primaryTextColor,{r:-10,g:-10,b:-10}),this.quadrant4TextFill=this.quadrant4TextFill||de(this.primaryTextColor,{r:-15,g:-15,b:-15}),this.quadrantPointFill=this.quadrantPointFill||Tn(this.quadrant1Fill)?Qe(this.quadrant1Fill):Je(this.quadrant1Fill),this.quadrantPointTextFill=this.quadrantPointTextFill||this.primaryTextColor,this.quadrantXAxisTextFill=this.quadrantXAxisTextFill||this.primaryTextColor,this.quadrantYAxisTextFill=this.quadrantYAxisTextFill||this.primaryTextColor,this.quadrantInternalBorderStrokeFill=this.quadrantInternalBorderStrokeFill||this.primaryBorderColor,this.quadrantExternalBorderStrokeFill=this.quadrantExternalBorderStrokeFill||this.primaryBorderColor,this.quadrantTitleFill=this.quadrantTitleFill||this.primaryTextColor,this.xyChart={backgroundColor:this.xyChart?.backgroundColor||this.background,titleColor:this.xyChart?.titleColor||this.primaryTextColor,xAxisTitleColor:this.xyChart?.xAxisTitleColor||this.primaryTextColor,xAxisLabelColor:this.xyChart?.xAxisLabelColor||this.primaryTextColor,xAxisTickColor:this.xyChart?.xAxisTickColor||this.primaryTextColor,xAxisLineColor:this.xyChart?.xAxisLineColor||this.primaryTextColor,yAxisTitleColor:this.xyChart?.yAxisTitleColor||this.primaryTextColor,yAxisLabelColor:this.xyChart?.yAxisLabelColor||this.primaryTextColor,yAxisTickColor:this.xyChart?.yAxisTickColor||this.primaryTextColor,yAxisLineColor:this.xyChart?.yAxisLineColor||this.primaryTextColor,plotColorPalette:this.xyChart?.plotColorPalette||"#FFF4DD,#FFD8B1,#FFA07A,#ECEFF1,#D6DBDF,#C3E0A8,#FFB6A4,#FFD74D,#738FA7,#FFFFF0"},this.requirementBackground=this.requirementBackground||this.primaryColor,this.requirementBorderColor=this.requirementBorderColor||this.primaryBorderColor,this.requirementBorderSize=this.requirementBorderSize||"1",this.requirementTextColor=this.requirementTextColor||this.primaryTextColor,this.relationColor=this.relationColor||this.lineColor,this.relationLabelBackground=this.relationLabelBackground||(this.darkMode?Je(this.secondaryColor,30):this.secondaryColor),this.relationLabelColor=this.relationLabelColor||this.actorTextColor,this.requirementEdgeLabelBackground="#16141F",this.git0=this.git0||this.primaryColor,this.git1=this.git1||this.secondaryColor,this.git2=this.git2||this.tertiaryColor,this.git3=this.git3||de(this.primaryColor,{h:-30}),this.git4=this.git4||de(this.primaryColor,{h:-60}),this.git5=this.git5||de(this.primaryColor,{h:-90}),this.git6=this.git6||de(this.primaryColor,{h:60}),this.git7=this.git7||de(this.primaryColor,{h:120}),this.darkMode?(this.git0=Qe(this.git0,25),this.git1=Qe(this.git1,25),this.git2=Qe(this.git2,25),this.git3=Qe(this.git3,25),this.git4=Qe(this.git4,25),this.git5=Qe(this.git5,25),this.git6=Qe(this.git6,25),this.git7=Qe(this.git7,25)):(this.git0=Je(this.git0,25),this.git1=Je(this.git1,25),this.git2=Je(this.git2,25),this.git3=Je(this.git3,25),this.git4=Je(this.git4,25),this.git5=Je(this.git5,25),this.git6=Je(this.git6,25),this.git7=Je(this.git7,25)),this.gitInv0=this.gitInv0||Ye(this.git0),this.gitInv1=this.gitInv1||Ye(this.git1),this.gitInv2=this.gitInv2||Ye(this.git2),this.gitInv3=this.gitInv3||Ye(this.git3),this.gitInv4=this.gitInv4||Ye(this.git4),this.gitInv5=this.gitInv5||Ye(this.git5),this.gitInv6=this.gitInv6||Ye(this.git6),this.gitInv7=this.gitInv7||Ye(this.git7),this.branchLabelColor=this.branchLabelColor||(this.darkMode?"black":this.labelTextColor),this.gitBranchLabel0=this.gitBranchLabel0||this.branchLabelColor,this.gitBranchLabel1=this.gitBranchLabel1||this.branchLabelColor,this.gitBranchLabel2=this.gitBranchLabel2||this.branchLabelColor,this.gitBranchLabel3=this.gitBranchLabel3||this.branchLabelColor,this.gitBranchLabel4=this.gitBranchLabel4||this.branchLabelColor,this.gitBranchLabel5=this.gitBranchLabel5||this.branchLabelColor,this.gitBranchLabel6=this.gitBranchLabel6||this.branchLabelColor,this.gitBranchLabel7=this.gitBranchLabel7||this.branchLabelColor,this.tagLabelColor=this.tagLabelColor||this.primaryTextColor,this.tagLabelBackground=this.tagLabelBackground||this.primaryColor,this.tagLabelBorder=this.tagBorder||this.primaryBorderColor,this.tagLabelFontSize=this.tagLabelFontSize||"10px",this.commitLabelColor=this.commitLabelColor||this.secondaryTextColor,this.commitLabelBackground=this.commitLabelBackground||this.secondaryColor,this.commitLabelFontSize=this.commitLabelFontSize||"10px",this.commitLineColor=this.commitLineColor??"#BDBCCC",this.erEdgeLabelBackground="#16141F",this.attributeBackgroundColorOdd=this.attributeBackgroundColorOdd||Gi,this.attributeBackgroundColorEven=this.attributeBackgroundColorEven||Vi}calculate(t){if(typeof t!="object"){this.updateColors();return}let r=Object.keys(t);r.forEach(n=>{this[n]=t[n]}),this.updateColors(),r.forEach(n=>{this[n]=t[n]})}},UK=o(e=>{let t=new i7;return t.calculate(e),t},"getThemeVariables")});var a7,jK,XK=F(()=>{"use strict";zi();al();Fl();a7=class{static{o(this,"Theme")}constructor(){this.background="#ffffff",this.primaryColor="#cccccc",this.mainBkg="#ffffff",this.noteBkgColor="#fff5ad",this.noteTextColor="#28253D",this.THEME_COLOR_LIMIT=12,this.radius=12,this.strokeWidth=2,this.primaryBorderColor=ar(this.primaryColor,this.darkMode),this.fontFamily='"Recursive Variable", arial, sans-serif',this.fontSize="14px",this.nodeBorder="#28253D",this.stateBorder="#28253D",this.useGradient=!1,this.gradientStart="#0042eb",this.gradientStop="#eb0042",this.dropShadow="url(#drop-shadow)",this.nodeShadow=!0,this.tertiaryColor="#ffffff",this.archEdgeColor="calculated",this.archEdgeArrowColor="calculated",this.archEdgeWidth="3",this.archGroupBorderColor=this.primaryBorderColor,this.archGroupBorderWidth="2px",this.actorBorder="#28253D",this.noteBorderColor="#FACC15",this.noteFontWeight=600,this.borderColorArray=["#E879F9","#2DD4BF","#FB923C","#22D3EE","#4ADE80","#A78BFA","#F87171","#FACC15","#818CF8","#A3E635 ","#38BDF8","#FB7185"],this.bkgColorArray=["#FDF4FF","#F0FDFA","#FFF7ED","#ECFEFF","#F0FDF4","#F5F3FF","#FEF2F2","#FEFCE8","#EEF2FF","#F7FEE7","#F0F9FF","#FFF1F2"],this.filterColor="#000000"}updateColors(){this.primaryTextColor=this.primaryTextColor||(this.darkMode?"#eee":"#28253D"),this.secondaryColor=this.secondaryColor||de(this.primaryColor,{h:-120}),this.tertiaryColor=this.tertiaryColor||de(this.primaryColor,{h:180,l:5}),this.primaryBorderColor=this.primaryBorderColor||ar(this.primaryColor,this.darkMode),this.secondaryBorderColor=this.secondaryBorderColor||ar(this.secondaryColor,this.darkMode),this.tertiaryBorderColor=this.tertiaryBorderColor||ar(this.tertiaryColor,this.darkMode),this.noteBorderColor=this.noteBorderColor||ar(this.noteBkgColor,this.darkMode),this.noteBkgColor=this.noteBkgColor||"#fff5ad",this.noteTextColor=this.noteTextColor||"#28253D",this.secondaryTextColor=this.secondaryTextColor||Ye(this.secondaryColor),this.tertiaryTextColor=this.tertiaryTextColor||Ye(this.tertiaryColor),this.lineColor=this.lineColor||Ye(this.background),this.arrowheadColor=this.arrowheadColor||Ye(this.background),this.textColor=this.textColor||this.primaryTextColor,this.border2=this.border2||this.tertiaryBorderColor,this.nodeBkg=this.nodeBkg||this.primaryColor,this.mainBkg=this.mainBkg||this.primaryColor,this.nodeBorder=this.nodeBorder||this.primaryBorderColor,this.clusterBkg=this.clusterBkg||this.tertiaryColor,this.clusterBorder=this.clusterBorder||this.tertiaryBorderColor,this.defaultLinkColor=this.defaultLinkColor||this.lineColor,this.titleColor=this.titleColor||this.tertiaryTextColor,this.edgeLabelBackground=this.edgeLabelBackground||(this.darkMode?Je(this.secondaryColor,30):this.secondaryColor),this.nodeTextColor=this.nodeTextColor||this.primaryTextColor,this.actorBorder=this.actorBorder||this.primaryBorderColor,this.actorBkg=this.actorBkg||this.mainBkg,this.actorTextColor=this.actorTextColor||this.primaryTextColor,this.actorLineColor=this.actorLineColor||this.actorBorder,this.labelBoxBkgColor=this.labelBoxBkgColor||this.actorBkg,this.signalColor=this.signalColor||this.textColor,this.signalTextColor=this.signalTextColor||this.textColor,this.labelBoxBorderColor=this.labelBoxBorderColor||this.actorBorder,this.labelTextColor=this.labelTextColor||this.actorTextColor,this.loopTextColor=this.loopTextColor||this.actorTextColor,this.activationBorderColor=this.activationBorderColor||Je(this.secondaryColor,10),this.activationBkgColor=this.activationBkgColor||this.secondaryColor,this.sequenceNumberColor=this.sequenceNumberColor||Ye(this.lineColor),this.rectBkgColor=this.rectBkgColor||this.tertiaryColor;let t="#ECECFE",r="#E9E9F1",n=de(t,{h:180,l:5});this.sectionBkgColor=this.sectionBkgColor||n,this.altSectionBkgColor=this.altSectionBkgColor||"white",this.sectionBkgColor=this.sectionBkgColor||r,this.sectionBkgColor2=this.sectionBkgColor2||t,this.excludeBkgColor=this.excludeBkgColor||"#eeeeee",this.taskBorderColor=this.taskBorderColor||this.primaryBorderColor,this.taskBkgColor=this.taskBkgColor||t,this.activeTaskBorderColor=this.activeTaskBorderColor||t,this.activeTaskBkgColor=this.activeTaskBkgColor||Qe(t,23),this.gridColor=this.gridColor||"lightgrey",this.doneTaskBkgColor=this.doneTaskBkgColor||"lightgrey",this.doneTaskBorderColor=this.doneTaskBorderColor||"grey",this.critBorderColor=this.critBorderColor||"#ff8888",this.critBkgColor=this.critBkgColor||"red",this.todayLineColor=this.todayLineColor||"red",this.taskTextColor=this.taskTextColor||this.textColor,this.vertLineColor=this.vertLineColor||this.primaryBorderColor,this.taskTextOutsideColor=this.taskTextOutsideColor||this.textColor,this.taskTextLightColor=this.taskTextLightColor||this.textColor,this.taskTextColor=this.taskTextColor||this.primaryTextColor,this.taskTextDarkColor=this.taskTextDarkColor||this.textColor,this.taskTextClickableColor=this.taskTextClickableColor||"#003163",this.archEdgeColor=this.lineColor,this.archEdgeArrowColor=this.lineColor,this.personBorder=this.personBorder||this.primaryBorderColor,this.personBkg=this.personBkg||this.mainBkg,this.transitionColor=this.transitionColor||this.lineColor,this.transitionLabelColor=this.transitionLabelColor||this.textColor,this.stateLabelColor=this.stateLabelColor||this.stateBkg||this.primaryTextColor,this.stateBkg=this.stateBkg||this.mainBkg,this.labelBackgroundColor=this.labelBackgroundColor||this.stateBkg,this.compositeBackground=this.compositeBackground||this.background||this.tertiaryColor,this.altBackground=this.altBackground||"#f0f0f0",this.compositeTitleBackground=this.compositeTitleBackground||this.mainBkg,this.compositeBorder=this.compositeBorder||this.nodeBorder,this.innerEndBackground=this.nodeBorder,this.errorBkgColor=this.errorBkgColor||this.tertiaryColor,this.errorTextColor=this.errorTextColor||this.tertiaryTextColor,this.transitionColor=this.transitionColor||this.lineColor,this.specialStateColor=this.lineColor,this.cScale0=this.cScale0||"#f4a8ff",this.cScale1=this.cScale1||"#46ecd5",this.cScale2=this.cScale2||"#ffb86a",this.cScale3=this.cScale3||"#dab2ff",this.cScale4=this.cScale4||"#7bf1a8",this.cScale5=this.cScale5||"#c4b4ff",this.cScale6=this.cScale6||"#ffa2a2",this.cScale7=this.cScale7||"#ffdf20",this.cScale8=this.cScale8||"#a3b3ff",this.cScale9=this.cScale9||"#bbf451",this.cScale10=this.cScale10||"#74d4ff",this.cScale11=this.cScale11||"#ffa1ad";for(let a=0;a<this.THEME_COLOR_LIMIT;a++)this["cScaleInv"+a]=this["cScaleInv"+a]||Ye(this["cScale"+a]);for(let a=0;a<this.THEME_COLOR_LIMIT;a++)this.darkMode?this["cScalePeer"+a]=this["cScalePeer"+a]||Qe(this["cScale"+a],10):this["cScalePeer"+a]=this["cScalePeer"+a]||Je(this["cScale"+a],10);this.scaleLabelColor=this.scaleLabelColor||this.labelTextColor;for(let a=0;a<this.THEME_COLOR_LIMIT;a++)this["cScaleLabel"+a]=this["cScaleLabel"+a]||this.scaleLabelColor;let i=this.darkMode?-4:-1;for(let a=0;a<5;a++)this["surface"+a]=this["surface"+a]||de(this.mainBkg,{h:180,s:-15,l:i*(5+a*3)}),this["surfacePeer"+a]=this["surfacePeer"+a]||de(this.mainBkg,{h:180,s:-15,l:i*(8+a*3)});this.classText=this.classText||this.textColor,this.fillType0=this.fillType0||t,this.fillType1=this.fillType1||r,this.fillType2=this.fillType2||de(t,{h:64}),this.fillType3=this.fillType3||de(r,{h:64}),this.fillType4=this.fillType4||de(t,{h:-64}),this.fillType5=this.fillType5||de(r,{h:-64}),this.fillType6=this.fillType6||de(t,{h:128}),this.fillType7=this.fillType7||de(r,{h:128}),this.pie1=this.pie1||t,this.pie2=this.pie2||r,this.pie3=this.pie3||n,this.pie4=this.pie4||de(t,{l:-10}),this.pie5=this.pie5||de(r,{l:-10}),this.pie6=this.pie6||de(n,{l:-10}),this.pie7=this.pie7||de(t,{h:60,l:-10}),this.pie8=this.pie8||de(t,{h:-60,l:-10}),this.pie9=this.pie9||de(t,{h:120,l:0}),this.pie10=this.pie10||de(t,{h:60,l:-20}),this.pie11=this.pie11||de(t,{h:-60,l:-20}),this.pie12=this.pie12||de(t,{h:120,l:-10}),this.pieTitleTextSize=this.pieTitleTextSize||"25px",this.pieTitleTextColor=this.pieTitleTextColor||this.taskTextDarkColor,this.pieSectionTextSize=this.pieSectionTextSize||"17px",this.pieSectionTextColor=this.pieSectionTextColor||this.textColor,this.pieLegendTextSize=this.pieLegendTextSize||"17px",this.pieLegendTextColor=this.pieLegendTextColor||this.taskTextDarkColor,this.pieStrokeColor=this.pieStrokeColor||"black",this.pieStrokeWidth=this.pieStrokeWidth||"2px",this.pieOuterStrokeWidth=this.pieOuterStrokeWidth||"2px",this.pieOuterStrokeColor=this.pieOuterStrokeColor||"black",this.pieOpacity=this.pieOpacity||"0.7",this.vennTitleTextColor=this.vennTitleTextColor??this.titleColor,this.vennSetTextColor=this.vennSetTextColor??this.textColor,this.quadrant1Fill=this.quadrant1Fill||t,this.quadrant2Fill=this.quadrant2Fill||de(t,{r:5,g:5,b:5}),this.quadrant3Fill=this.quadrant3Fill||de(t,{r:10,g:10,b:10}),this.quadrant4Fill=this.quadrant4Fill||de(t,{r:15,g:15,b:15}),this.quadrant1TextFill=this.quadrant1TextFill||this.primaryTextColor,this.quadrant2TextFill=this.quadrant2TextFill||de(this.primaryTextColor,{r:-5,g:-5,b:-5}),this.quadrant3TextFill=this.quadrant3TextFill||de(this.primaryTextColor,{r:-10,g:-10,b:-10}),this.quadrant4TextFill=this.quadrant4TextFill||de(this.primaryTextColor,{r:-15,g:-15,b:-15}),this.quadrantPointFill=this.quadrantPointFill||Tn(this.quadrant1Fill)?Qe(this.quadrant1Fill):Je(this.quadrant1Fill),this.quadrantPointTextFill=this.quadrantPointTextFill||this.primaryTextColor,this.quadrantXAxisTextFill=this.quadrantXAxisTextFill||this.primaryTextColor,this.quadrantYAxisTextFill=this.quadrantYAxisTextFill||this.primaryTextColor,this.quadrantInternalBorderStrokeFill=this.quadrantInternalBorderStrokeFill||this.primaryBorderColor,this.quadrantExternalBorderStrokeFill=this.quadrantExternalBorderStrokeFill||this.primaryBorderColor,this.quadrantTitleFill=this.quadrantTitleFill||this.primaryTextColor,this.xyChart={backgroundColor:this.xyChart?.backgroundColor||this.background,titleColor:this.xyChart?.titleColor||this.primaryTextColor,xAxisTitleColor:this.xyChart?.xAxisTitleColor||this.primaryTextColor,xAxisLabelColor:this.xyChart?.xAxisLabelColor||this.primaryTextColor,xAxisTickColor:this.xyChart?.xAxisTickColor||this.primaryTextColor,xAxisLineColor:this.xyChart?.xAxisLineColor||this.primaryTextColor,yAxisTitleColor:this.xyChart?.yAxisTitleColor||this.primaryTextColor,yAxisLabelColor:this.xyChart?.yAxisLabelColor||this.primaryTextColor,yAxisTickColor:this.xyChart?.yAxisTickColor||this.primaryTextColor,yAxisLineColor:this.xyChart?.yAxisLineColor||this.primaryTextColor,plotColorPalette:this.xyChart?.plotColorPalette||"#FFF4DD,#FFD8B1,#FFA07A,#ECEFF1,#D6DBDF,#C3E0A8,#FFB6A4,#FFD74D,#738FA7,#FFFFF0"},this.requirementBackground=this.requirementBackground||t,this.requirementBorderColor=this.requirementBorderColor||this.primaryBorderColor,this.requirementBorderSize=this.requirementBorderSize||"1",this.requirementTextColor=this.requirementTextColor||this.primaryTextColor,this.relationColor=this.relationColor||this.lineColor,this.relationLabelBackground=this.relationLabelBackground||(this.darkMode?Je(this.secondaryColor,30):this.secondaryColor),this.relationLabelColor=this.relationLabelColor||this.actorTextColor,this.git0=this.git0||t,this.git1=this.git1||r,this.git2=this.git2||n,this.git3=this.git3||de(t,{h:-30}),this.git4=this.git4||de(t,{h:-60}),this.git5=this.git5||de(t,{h:-90}),this.git6=this.git6||de(t,{h:60}),this.git7=this.git7||de(t,{h:120}),this.darkMode?(this.git0=Qe(this.git0,25),this.git1=Qe(this.git1,25),this.git2=Qe(this.git2,25),this.git3=Qe(this.git3,25),this.git4=Qe(this.git4,25),this.git5=Qe(this.git5,25),this.git6=Qe(this.git6,25),this.git7=Qe(this.git7,25)):(this.git0=Je(this.git0,25),this.git1=Je(this.git1,25),this.git2=Je(this.git2,25),this.git3=Je(this.git3,25),this.git4=Je(this.git4,25),this.git5=Je(this.git5,25),this.git6=Je(this.git6,25),this.git7=Je(this.git7,25)),this.gitInv0=this.gitInv0||Ye(this.git0),this.gitInv1=this.gitInv1||Ye(this.git1),this.gitInv2=this.gitInv2||Ye(this.git2),this.gitInv3=this.gitInv3||Ye(this.git3),this.gitInv4=this.gitInv4||Ye(this.git4),this.gitInv5=this.gitInv5||Ye(this.git5),this.gitInv6=this.gitInv6||Ye(this.git6),this.gitInv7=this.gitInv7||Ye(this.git7),this.branchLabelColor=this.branchLabelColor||(this.darkMode?"black":this.labelTextColor),this.gitBranchLabel0=this.gitBranchLabel0||this.branchLabelColor,this.gitBranchLabel1=this.gitBranchLabel1||this.branchLabelColor,this.gitBranchLabel2=this.gitBranchLabel2||this.branchLabelColor,this.gitBranchLabel3=this.gitBranchLabel3||this.branchLabelColor,this.gitBranchLabel4=this.gitBranchLabel4||this.branchLabelColor,this.gitBranchLabel5=this.gitBranchLabel5||this.branchLabelColor,this.gitBranchLabel6=this.gitBranchLabel6||this.branchLabelColor,this.gitBranchLabel7=this.gitBranchLabel7||this.branchLabelColor,this.tagLabelColor=this.tagLabelColor||this.primaryTextColor,this.tagLabelBackground=this.tagLabelBackground||this.primaryColor,this.tagLabelBorder=this.tagBorder||this.primaryBorderColor,this.tagLabelFontSize=this.tagLabelFontSize||"10px",this.commitLabelColor=this.commitLabelColor||this.secondaryTextColor,this.commitLabelBackground=this.commitLabelBackground||this.secondaryColor,this.commitLineColor=this.commitLineColor??"#BDBCCC",this.commitLabelFontSize=this.commitLabelFontSize||"10px",this.fontWeight=600,this.erEdgeLabelBackground="#FFFFFF",this.attributeBackgroundColorOdd=this.attributeBackgroundColorOdd||Gi,this.attributeBackgroundColorEven=this.attributeBackgroundColorEven||Vi}calculate(t){if(typeof t!="object"){this.updateColors();return}let r=Object.keys(t);r.forEach(n=>{this[n]=t[n]}),this.updateColors(),r.forEach(n=>{this[n]=t[n]})}},jK=o(e=>{let t=new a7;return t.calculate(e),t},"getThemeVariables")});var s7,KK,ZK=F(()=>{"use strict";zi();al();Fl();s7=class{static{o(this,"Theme")}constructor(){this.background="#333",this.primaryColor="#1f2020",this.secondaryColor=Qe(this.primaryColor,16),this.tertiaryColor=de(this.primaryColor,{h:-160}),this.primaryBorderColor=Ye(this.background),this.secondaryBorderColor=ar(this.secondaryColor,this.darkMode),this.tertiaryBorderColor=ar(this.tertiaryColor,this.darkMode),this.primaryTextColor=Ye(this.primaryColor),this.secondaryTextColor=Ye(this.secondaryColor),this.tertiaryTextColor=Ye(this.tertiaryColor),this.mainBkg="#111113",this.secondBkg="calculated",this.mainContrastColor="lightgrey",this.darkTextColor=Qe(Ye("#323D47"),10),this.border1="#ccc",this.border2=Oi(255,255,255,.25),this.arrowheadColor=Ye(this.background),this.fontFamily='"Recursive Variable", arial, sans-serif',this.fontSize="14px",this.labelBackground="#111113",this.textColor="#ccc",this.THEME_COLOR_LIMIT=12,this.radius=12,this.strokeWidth=2,this.noteBkgColor=this.noteBkgColor??"#FEF9C3",this.noteTextColor=this.noteTextColor??"#28253D",this.THEME_COLOR_LIMIT=12,this.fontFamily='"Recursive Variable", arial, sans-serif',this.fontSize="14px",this.nodeBorder="#FFFFFF",this.stateBorder="#FFFFFF",this.useGradient=!1,this.gradientStart="#0042eb",this.gradientStop="#eb0042",this.dropShadow="url(#drop-shadow)",this.nodeShadow=!0,this.archEdgeColor="calculated",this.archEdgeArrowColor="calculated",this.archEdgeWidth="3",this.archGroupBorderColor=this.primaryBorderColor,this.archGroupBorderWidth="2px",this.clusterBkg="#1E1A2E",this.clusterBorder="#BDBCCC",this.noteBorderColor="#FACC15",this.noteFontWeight=600,this.borderColorArray=["#E879F9","#2DD4BF","#FB923C","#22D3EE","#4ADE80","#A78BFA","#F87171","#FACC15","#818CF8","#A3E635 ","#38BDF8","#FB7185"],this.bkgColorArray=[],this.filterColor="#FFFFFF"}updateColors(){this.primaryTextColor=this.primaryTextColor||(this.darkMode?"#eee":"#FFFFFF"),this.secondaryColor=this.secondaryColor||de(this.primaryColor,{h:-120}),this.tertiaryColor=this.tertiaryColor||de(this.primaryColor,{h:180,l:5}),this.primaryBorderColor=this.primaryBorderColor||ar(this.primaryColor,this.darkMode),this.secondaryBorderColor=this.secondaryBorderColor||ar(this.secondaryColor,this.darkMode),this.tertiaryBorderColor=this.tertiaryBorderColor||ar(this.tertiaryColor,this.darkMode),this.noteBorderColor=this.noteBorderColor||ar(this.noteBkgColor,this.darkMode),this.noteBkgColor=this.noteBkgColor||"#fff5ad",this.noteTextColor=this.noteTextColor||"#FFFFFF",this.secondaryTextColor=this.secondaryTextColor||Ye(this.secondaryColor),this.tertiaryTextColor=this.tertiaryTextColor||Ye(this.tertiaryColor),this.lineColor=this.lineColor||Ye(this.background),this.arrowheadColor=this.arrowheadColor||Ye(this.background),this.textColor=this.textColor||this.primaryTextColor,this.border2=this.border2||this.tertiaryBorderColor,this.nodeBkg=this.nodeBkg||this.primaryColor,this.mainBkg=this.mainBkg||this.primaryColor,this.nodeBorder=this.nodeBorder||this.border1,this.clusterBkg=this.clusterBkg||this.tertiaryColor,this.clusterBorder=this.clusterBorder||this.tertiaryBorderColor,this.defaultLinkColor=this.defaultLinkColor||this.lineColor,this.titleColor=this.titleColor||this.tertiaryTextColor,this.edgeLabelBackground=this.edgeLabelBackground||(this.darkMode?Je(this.secondaryColor,30):this.secondaryColor),this.nodeTextColor=this.nodeTextColor||this.primaryTextColor,this.actorBorder="#FFFFFF",this.signalColor="#FFFFFF",this.labelBoxBorderColor="#BDBCCC",this.actorBorder=this.actorBorder||this.primaryBorderColor,this.actorBkg=this.actorBkg||this.mainBkg,this.actorTextColor=this.actorTextColor||this.primaryTextColor,this.actorLineColor=this.actorLineColor||this.actorBorder,this.labelBoxBkgColor=this.labelBoxBkgColor||this.actorBkg,this.signalColor=this.signalColor||this.textColor,this.signalTextColor=this.signalTextColor||this.textColor,this.labelBoxBorderColor=this.labelBoxBorderColor||this.actorBorder,this.labelTextColor=this.labelTextColor||this.actorTextColor,this.loopTextColor=this.loopTextColor||this.actorTextColor,this.activationBorderColor=this.activationBorderColor||Je(this.secondaryColor,10),this.activationBkgColor=this.activationBkgColor||this.secondaryColor,this.sequenceNumberColor=this.sequenceNumberColor||Ye(this.lineColor),this.rectBkgColor=this.rectBkgColor||this.tertiaryColor,this.rootLabelColor="#FFFFFF",this.sectionBkgColor=this.sectionBkgColor||this.tertiaryColor,this.altSectionBkgColor=this.altSectionBkgColor||"white",this.sectionBkgColor=this.sectionBkgColor||this.secondaryColor,this.sectionBkgColor2=this.sectionBkgColor2||this.primaryColor,this.excludeBkgColor=this.excludeBkgColor||"#eeeeee",this.taskBorderColor=this.taskBorderColor||this.primaryBorderColor,this.taskBkgColor=this.taskBkgColor||this.primaryColor,this.activeTaskBorderColor=this.activeTaskBorderColor||this.primaryColor,this.activeTaskBkgColor=this.activeTaskBkgColor||Qe(this.primaryColor,23),this.gridColor=this.gridColor||"lightgrey",this.doneTaskBkgColor=this.doneTaskBkgColor||"lightgrey",this.doneTaskBorderColor=this.doneTaskBorderColor||"grey",this.critBorderColor=this.critBorderColor||"#ff8888",this.critBkgColor=this.critBkgColor||"red",this.todayLineColor=this.todayLineColor||"red",this.taskTextColor=this.taskTextColor||this.textColor,this.vertLineColor=this.vertLineColor||this.primaryBorderColor,this.taskTextOutsideColor=this.taskTextOutsideColor||this.textColor,this.taskTextLightColor=this.taskTextLightColor||this.textColor,this.taskTextColor=this.taskTextColor||this.primaryTextColor,this.taskTextDarkColor=this.taskTextDarkColor||this.textColor,this.taskTextClickableColor=this.taskTextClickableColor||"#003163",this.archEdgeColor=this.lineColor,this.archEdgeArrowColor=this.lineColor,this.personBorder=this.personBorder||this.primaryBorderColor,this.personBkg=this.personBkg||this.mainBkg,this.transitionColor=this.transitionColor||this.lineColor,this.transitionLabelColor=this.transitionLabelColor||this.textColor,this.stateLabelColor=this.stateLabelColor||this.stateBkg||this.primaryTextColor,this.stateBkg=this.stateBkg||this.mainBkg,this.labelBackgroundColor=this.labelBackgroundColor||this.stateBkg,this.compositeBackground=this.compositeBackground||this.background||this.tertiaryColor,this.altBackground=this.altBackground||"#f0f0f0",this.compositeTitleBackground=this.compositeTitleBackground||this.mainBkg,this.compositeBorder=this.compositeBorder||this.nodeBorder,this.innerEndBackground=this.nodeBorder,this.errorBkgColor=this.errorBkgColor||this.tertiaryColor,this.errorTextColor=this.errorTextColor||this.tertiaryTextColor,this.transitionColor=this.transitionColor||this.lineColor,this.specialStateColor=this.lineColor,this.cScale0=this.cScale0||"#f4a8ff",this.cScale1=this.cScale1||"#46ecd5",this.cScale2=this.cScale2||"#ffb86a",this.cScale3=this.cScale3||"#dab2ff",this.cScale4=this.cScale4||"#7bf1a8",this.cScale5=this.cScale5||"#c4b4ff",this.cScale6=this.cScale6||"#ffa2a2",this.cScale7=this.cScale7||"#ffdf20",this.cScale8=this.cScale8||"#a3b3ff",this.cScale9=this.cScale9||"#bbf451",this.cScale10=this.cScale10||"#74d4ff",this.cScale11=this.cScale11||"#ffa1ad";for(let r=0;r<this.THEME_COLOR_LIMIT;r++)this["cScaleInv"+r]=this["cScaleInv"+r]||Ye(this["cScale"+r]);for(let r=0;r<this.THEME_COLOR_LIMIT;r++)this.darkMode?this["cScalePeer"+r]=this["cScalePeer"+r]||Qe(this["cScale"+r],10):this["cScalePeer"+r]=this["cScalePeer"+r]||Je(this["cScale"+r],10);this.scaleLabelColor=this.scaleLabelColor||this.labelTextColor;for(let r=0;r<this.THEME_COLOR_LIMIT;r++)this["cScaleLabel"+r]=Je(this["cScale"+r],75);let t=this.darkMode?-4:-1;for(let r=0;r<5;r++)this["surface"+r]=this["surface"+r]||de(this.mainBkg,{h:180,s:-15,l:t*(5+r*3)}),this["surfacePeer"+r]=this["surfacePeer"+r]||de(this.mainBkg,{h:180,s:-15,l:t*(8+r*3)});this.classText=this.classText||this.textColor,this.fillType0=this.fillType0||this.primaryColor,this.fillType1=this.fillType1||this.secondaryColor,this.fillType2=this.fillType2||de(this.primaryColor,{h:64}),this.fillType3=this.fillType3||de(this.secondaryColor,{h:64}),this.fillType4=this.fillType4||de(this.primaryColor,{h:-64}),this.fillType5=this.fillType5||de(this.secondaryColor,{h:-64}),this.fillType6=this.fillType6||de(this.primaryColor,{h:128}),this.fillType7=this.fillType7||de(this.secondaryColor,{h:128}),this.pie1=this.pie1||this.primaryColor,this.pie2=this.pie2||this.secondaryColor,this.pie3=this.pie3||this.tertiaryColor,this.pie4=this.pie4||de(this.primaryColor,{l:-10}),this.pie5=this.pie5||de(this.secondaryColor,{l:-10}),this.pie6=this.pie6||de(this.tertiaryColor,{l:-10}),this.pie7=this.pie7||de(this.primaryColor,{h:60,l:-10}),this.pie8=this.pie8||de(this.primaryColor,{h:-60,l:-10}),this.pie9=this.pie9||de(this.primaryColor,{h:120,l:0}),this.pie10=this.pie10||de(this.primaryColor,{h:60,l:-20}),this.pie11=this.pie11||de(this.primaryColor,{h:-60,l:-20}),this.pie12=this.pie12||de(this.primaryColor,{h:120,l:-10}),this.pieTitleTextSize=this.pieTitleTextSize||"25px",this.pieTitleTextColor=this.pieTitleTextColor||this.taskTextDarkColor,this.pieSectionTextSize=this.pieSectionTextSize||"17px",this.pieSectionTextColor=this.pieSectionTextColor||this.textColor,this.pieLegendTextSize=this.pieLegendTextSize||"17px",this.pieLegendTextColor=this.pieLegendTextColor||this.taskTextDarkColor,this.pieStrokeColor=this.pieStrokeColor||"black",this.pieStrokeWidth=this.pieStrokeWidth||"2px",this.pieOuterStrokeWidth=this.pieOuterStrokeWidth||"2px",this.pieOuterStrokeColor=this.pieOuterStrokeColor||"black",this.pieOpacity=this.pieOpacity||"0.7",this.vennTitleTextColor=this.vennTitleTextColor??this.titleColor,this.vennSetTextColor=this.vennSetTextColor??this.textColor,this.quadrant1Fill=this.quadrant1Fill||this.primaryColor,this.quadrant2Fill=this.quadrant2Fill||de(this.primaryColor,{r:5,g:5,b:5}),this.quadrant3Fill=this.quadrant3Fill||de(this.primaryColor,{r:10,g:10,b:10}),this.quadrant4Fill=this.quadrant4Fill||de(this.primaryColor,{r:15,g:15,b:15}),this.quadrant1TextFill=this.quadrant1TextFill||this.primaryTextColor,this.quadrant2TextFill=this.quadrant2TextFill||de(this.primaryTextColor,{r:-5,g:-5,b:-5}),this.quadrant3TextFill=this.quadrant3TextFill||de(this.primaryTextColor,{r:-10,g:-10,b:-10}),this.quadrant4TextFill=this.quadrant4TextFill||de(this.primaryTextColor,{r:-15,g:-15,b:-15}),this.quadrantPointFill=this.quadrantPointFill||Tn(this.quadrant1Fill)?Qe(this.quadrant1Fill):Je(this.quadrant1Fill),this.quadrantPointTextFill=this.quadrantPointTextFill||this.primaryTextColor,this.quadrantXAxisTextFill=this.quadrantXAxisTextFill||this.primaryTextColor,this.quadrantYAxisTextFill=this.quadrantYAxisTextFill||this.primaryTextColor,this.quadrantInternalBorderStrokeFill=this.quadrantInternalBorderStrokeFill||this.primaryBorderColor,this.quadrantExternalBorderStrokeFill=this.quadrantExternalBorderStrokeFill||this.primaryBorderColor,this.quadrantTitleFill=this.quadrantTitleFill||this.primaryTextColor,this.xyChart={backgroundColor:this.xyChart?.backgroundColor||this.background,titleColor:this.xyChart?.titleColor||this.primaryTextColor,xAxisTitleColor:this.xyChart?.xAxisTitleColor||this.primaryTextColor,xAxisLabelColor:this.xyChart?.xAxisLabelColor||this.primaryTextColor,xAxisTickColor:this.xyChart?.xAxisTickColor||this.primaryTextColor,xAxisLineColor:this.xyChart?.xAxisLineColor||this.primaryTextColor,yAxisTitleColor:this.xyChart?.yAxisTitleColor||this.primaryTextColor,yAxisLabelColor:this.xyChart?.yAxisLabelColor||this.primaryTextColor,yAxisTickColor:this.xyChart?.yAxisTickColor||this.primaryTextColor,yAxisLineColor:this.xyChart?.yAxisLineColor||this.primaryTextColor,plotColorPalette:this.xyChart?.plotColorPalette||"#FFF4DD,#FFD8B1,#FFA07A,#ECEFF1,#D6DBDF,#C3E0A8,#FFB6A4,#FFD74D,#738FA7,#FFFFF0"},this.requirementBackground=this.requirementBackground||this.primaryColor,this.requirementBorderColor=this.requirementBorderColor||this.primaryBorderColor,this.requirementBorderSize=this.requirementBorderSize||"1",this.requirementTextColor=this.requirementTextColor||this.primaryTextColor,this.relationColor=this.relationColor||this.lineColor,this.relationLabelBackground=this.relationLabelBackground||(this.darkMode?Je(this.secondaryColor,30):this.secondaryColor),this.relationLabelColor=this.relationLabelColor||this.actorTextColor,this.git0=this.git0||this.primaryColor,this.git1=this.git1||this.secondaryColor,this.git2=this.git2||this.tertiaryColor,this.git3=this.git3||de(this.primaryColor,{h:-30}),this.git4=this.git4||de(this.primaryColor,{h:-60}),this.git5=this.git5||de(this.primaryColor,{h:-90}),this.git6=this.git6||de(this.primaryColor,{h:60}),this.git7=this.git7||de(this.primaryColor,{h:120}),this.darkMode?(this.git0=Qe(this.git0,25),this.git1=Qe(this.git1,25),this.git2=Qe(this.git2,25),this.git3=Qe(this.git3,25),this.git4=Qe(this.git4,25),this.git5=Qe(this.git5,25),this.git6=Qe(this.git6,25),this.git7=Qe(this.git7,25)):(this.git0=Je(this.git0,25),this.git1=Je(this.git1,25),this.git2=Je(this.git2,25),this.git3=Je(this.git3,25),this.git4=Je(this.git4,25),this.git5=Je(this.git5,25),this.git6=Je(this.git6,25),this.git7=Je(this.git7,25)),this.gitInv0=this.gitInv0||Ye(this.git0),this.gitInv1=this.gitInv1||Ye(this.git1),this.gitInv2=this.gitInv2||Ye(this.git2),this.gitInv3=this.gitInv3||Ye(this.git3),this.gitInv4=this.gitInv4||Ye(this.git4),this.gitInv5=this.gitInv5||Ye(this.git5),this.gitInv6=this.gitInv6||Ye(this.git6),this.gitInv7=this.gitInv7||Ye(this.git7),this.branchLabelColor=this.branchLabelColor||(this.darkMode?"black":this.labelTextColor),this.gitBranchLabel0=this.gitBranchLabel0||this.branchLabelColor,this.gitBranchLabel1=this.gitBranchLabel1||this.branchLabelColor,this.gitBranchLabel2=this.gitBranchLabel2||this.branchLabelColor,this.gitBranchLabel3=this.gitBranchLabel3||this.branchLabelColor,this.gitBranchLabel4=this.gitBranchLabel4||this.branchLabelColor,this.gitBranchLabel5=this.gitBranchLabel5||this.branchLabelColor,this.gitBranchLabel6=this.gitBranchLabel6||this.branchLabelColor,this.gitBranchLabel7=this.gitBranchLabel7||this.branchLabelColor,this.tagLabelColor=this.tagLabelColor||this.primaryTextColor,this.tagLabelBackground=this.tagLabelBackground||this.primaryColor,this.tagLabelBorder=this.tagBorder||this.primaryBorderColor,this.tagLabelFontSize=this.tagLabelFontSize||"10px",this.commitLabelColor=this.commitLabelColor||this.secondaryTextColor,this.commitLabelBackground=this.commitLabelBackground||this.secondaryColor,this.commitLabelFontSize=this.commitLabelFontSize||"10px",this.commitLineColor=this.commitLineColor??"#BDBCCC",this.fontWeight=600,this.erEdgeLabelBackground="#16141F",this.attributeBackgroundColorOdd=this.attributeBackgroundColorOdd||Gi,this.attributeBackgroundColorEven=this.attributeBackgroundColorEven||Vi}calculate(t){if(typeof t!="object"){this.updateColors();return}let r=Object.keys(t);r.forEach(n=>{this[n]=t[n]}),this.updateColors(),r.forEach(n=>{this[n]=t[n]})}},KK=o(e=>{let t=new s7;return t.calculate(e),t},"getThemeVariables")});var sl,Sk=F(()=>{"use strict";MK();PK();Pc();BK();FK();GK();WK();HK();YK();XK();ZK();sl={base:{getThemeVariables:IK},dark:{getThemeVariables:NK},default:{getThemeVariables:ma},forest:{getThemeVariables:OK},neutral:{getThemeVariables:$K},neo:{getThemeVariables:zK},"neo-dark":{getThemeVariables:VK},redux:{getThemeVariables:qK},"redux-dark":{getThemeVariables:UK},"redux-color":{getThemeVariables:jK},"redux-dark-color":{getThemeVariables:KK}}});var ga,QK=F(()=>{"use strict";ga={flowchart:{useMaxWidth:!0,titleTopMargin:25,subGraphTitleMargin:{top:0,bottom:0},diagramPadding:8,htmlLabels:null,nodeSpacing:50,rankSpacing:50,curve:"basis",padding:15,defaultRenderer:"dagre-wrapper",wrappingWidth:200,inheritDir:!1},swimlane:{useMaxWidth:!0,lineHops:"arc",ignoreCrossLaneEdges:!0,optimizeRanksByCrossings:!0,automaticLaneOrdering:!1},sequence:{useMaxWidth:!0,hideUnusedParticipants:!1,activationWidth:10,diagramMarginX:50,diagramMarginY:10,actorMargin:50,width:150,height:65,boxMargin:10,boxTextMargin:5,noteMargin:10,messageMargin:35,messageAlign:"center",mirrorActors:!0,forceMenus:!1,bottomMarginAdj:1,rightAngles:!1,showSequenceNumbers:!1,actorFontSize:14,actorFontFamily:'"Open Sans", sans-serif',actorFontWeight:400,noteFontSize:14,noteFontFamily:'"trebuchet ms", verdana, arial, sans-serif',noteFontWeight:400,noteAlign:"center",messageFontSize:16,messageFontFamily:'"trebuchet ms", verdana, arial, sans-serif',messageFontWeight:400,wrap:!1,wrapPadding:10,labelBoxWidth:50,labelBoxHeight:20},gantt:{useMaxWidth:!0,titleTopMargin:25,barHeight:20,barGap:4,topPadding:50,rightPadding:75,leftPadding:75,gridLineStartPadding:35,fontSize:11,sectionFontSize:11,numberSectionStyles:4,axisFormat:"%Y-%m-%d",topAxis:!1,displayMode:"",weekday:"sunday"},journey:{useMaxWidth:!0,diagramMarginX:50,diagramMarginY:10,leftMargin:150,maxLabelWidth:360,width:150,height:50,boxMargin:10,boxTextMargin:5,noteMargin:10,messageMargin:35,messageAlign:"center",bottomMarginAdj:1,rightAngles:!1,taskFontSize:14,taskFontFamily:'"Open Sans", sans-serif',taskMargin:50,activationWidth:10,textPlacement:"fo",actorColours:["#8FBC8F","#7CFC00","#00FFFF","#20B2AA","#B0E0E6","#FFFFE0"],sectionFills:["#191970","#8B008B","#4B0082","#2F4F4F","#800000","#8B4513","#00008B"],sectionColours:["#fff"],titleColor:"",titleFontFamily:'"trebuchet ms", verdana, arial, sans-serif',titleFontSize:"4ex"},class:{useMaxWidth:!0,titleTopMargin:25,arrowMarkerAbsolute:!1,dividerMargin:10,padding:5,textHeight:10,defaultRenderer:"dagre-wrapper",htmlLabels:!1,hideEmptyMembersBox:!1,hierarchicalNamespaces:!0},state:{useMaxWidth:!0,titleTopMargin:25,dividerMargin:10,sizeUnit:5,padding:8,textHeight:10,titleShift:-15,noteMargin:10,forkWidth:70,forkHeight:7,miniPadding:2,fontSizeFactor:5.02,fontSize:24,labelHeight:16,edgeLengthFactor:"20",compositTitleSize:35,radius:5,defaultRenderer:"dagre-wrapper"},er:{useMaxWidth:!0,titleTopMargin:25,diagramPadding:20,layoutDirection:"TB",minEntityWidth:100,minEntityHeight:75,entityPadding:15,nodeSpacing:140,rankSpacing:80,stroke:"gray",fill:"honeydew",fontSize:12},pie:{useMaxWidth:!0,textPosition:.75,donutHole:0,legendPosition:"right",highlightSlice:""},quadrantChart:{useMaxWidth:!0,chartWidth:500,chartHeight:500,titleFontSize:20,titlePadding:10,quadrantPadding:5,xAxisLabelPadding:5,yAxisLabelPadding:5,xAxisLabelFontSize:16,yAxisLabelFontSize:16,quadrantLabelFontSize:16,quadrantTextTopPadding:5,pointTextPadding:5,pointLabelFontSize:12,pointRadius:5,xAxisPosition:"top",yAxisPosition:"left",quadrantInternalBorderStrokeWidth:1,quadrantExternalBorderStrokeWidth:2},xyChart:{useMaxWidth:!0,width:700,height:500,titleFontSize:20,titlePadding:10,showDataLabel:!1,showDataLabelOutsideBar:!1,showTitle:!0,xAxis:{$ref:"#/$defs/XYChartAxisConfig",showLabel:!0,labelFontSize:14,labelPadding:5,showTitle:!0,titleFontSize:16,titlePadding:5,showTick:!0,tickLength:5,tickWidth:2,showAxisLine:!0,axisLineWidth:2,labelRotation:0},yAxis:{$ref:"#/$defs/XYChartAxisConfig",showLabel:!0,labelFontSize:14,labelPadding:5,showTitle:!0,titleFontSize:16,titlePadding:5,showTick:!0,tickLength:5,tickWidth:2,showAxisLine:!0,axisLineWidth:2,labelRotation:0},chartOrientation:"vertical",plotReservedSpacePercent:50},requirement:{useMaxWidth:!0,rect_fill:"#f9f9f9",text_color:"#333",rect_border_size:"0.5px",rect_border_color:"#bbb",rect_min_width:200,rect_min_height:200,fontSize:14,rect_padding:10,line_height:20},mindmap:{useMaxWidth:!0,padding:10,maxNodeWidth:200,layoutAlgorithm:"cose-bilkent"},ishikawa:{useMaxWidth:!0,diagramPadding:20},kanban:{useMaxWidth:!0,padding:8,sectionWidth:200,ticketBaseUrl:""},timeline:{useMaxWidth:!0,diagramMarginX:50,diagramMarginY:10,leftMargin:150,width:150,height:50,boxMargin:10,boxTextMargin:5,noteMargin:10,messageMargin:35,messageAlign:"center",bottomMarginAdj:1,rightAngles:!1,taskFontSize:14,taskFontFamily:'"Open Sans", sans-serif',taskMargin:50,activationWidth:10,textPlacement:"fo",actorColours:["#8FBC8F","#7CFC00","#00FFFF","#20B2AA","#B0E0E6","#FFFFE0"],sectionFills:["#191970","#8B008B","#4B0082","#2F4F4F","#800000","#8B4513","#00008B"],sectionColours:["#fff"],disableMulticolor:!1},gitGraph:{useMaxWidth:!0,titleTopMargin:25,diagramPadding:8,nodeLabel:{width:75,height:100,x:-25,y:0},mainBranchName:"main",mainBranchOrder:0,showCommitLabel:!0,showBranches:!0,rotateCommitLabel:!0,parallelCommits:!1,arrowMarkerAbsolute:!1},c4:{useMaxWidth:!0,diagramMarginX:50,diagramMarginY:10,c4ShapeMargin:50,c4ShapePadding:20,width:216,height:60,boxMargin:10,c4ShapeInRow:4,nextLinePaddingX:0,c4BoundaryInRow:2,personFontSize:14,personFontFamily:'"Open Sans", sans-serif',personFontWeight:"normal",external_personFontSize:14,external_personFontFamily:'"Open Sans", sans-serif',external_personFontWeight:"normal",systemFontSize:14,systemFontFamily:'"Open Sans", sans-serif',systemFontWeight:"normal",external_systemFontSize:14,external_systemFontFamily:'"Open Sans", sans-serif',external_systemFontWeight:"normal",system_dbFontSize:14,system_dbFontFamily:'"Open Sans", sans-serif',system_dbFontWeight:"normal",external_system_dbFontSize:14,external_system_dbFontFamily:'"Open Sans", sans-serif',external_system_dbFontWeight:"normal",system_queueFontSize:14,system_queueFontFamily:'"Open Sans", sans-serif',system_queueFontWeight:"normal",external_system_queueFontSize:14,external_system_queueFontFamily:'"Open Sans", sans-serif',external_system_queueFontWeight:"normal",boundaryFontSize:14,boundaryFontFamily:'"Open Sans", sans-serif',boundaryFontWeight:"normal",messageFontSize:12,messageFontFamily:'"Open Sans", sans-serif',messageFontWeight:"normal",containerFontSize:14,containerFontFamily:'"Open Sans", sans-serif',containerFontWeight:"normal",external_containerFontSize:14,external_containerFontFamily:'"Open Sans", sans-serif',external_containerFontWeight:"normal",container_dbFontSize:14,container_dbFontFamily:'"Open Sans", sans-serif',container_dbFontWeight:"normal",external_container_dbFontSize:14,external_container_dbFontFamily:'"Open Sans", sans-serif',external_container_dbFontWeight:"normal",container_queueFontSize:14,container_queueFontFamily:'"Open Sans", sans-serif',container_queueFontWeight:"normal",external_container_queueFontSize:14,external_container_queueFontFamily:'"Open Sans", sans-serif',external_container_queueFontWeight:"normal",componentFontSize:14,componentFontFamily:'"Open Sans", sans-serif',componentFontWeight:"normal",external_componentFontSize:14,external_componentFontFamily:'"Open Sans", sans-serif',external_componentFontWeight:"normal",component_dbFontSize:14,component_dbFontFamily:'"Open Sans", sans-serif',component_dbFontWeight:"normal",external_component_dbFontSize:14,external_component_dbFontFamily:'"Open Sans", sans-serif',external_component_dbFontWeight:"normal",component_queueFontSize:14,component_queueFontFamily:'"Open Sans", sans-serif',component_queueFontWeight:"normal",external_component_queueFontSize:14,external_component_queueFontFamily:'"Open Sans", sans-serif',external_component_queueFontWeight:"normal",wrap:!0,wrapPadding:10,person_bg_color:"#08427B",person_border_color:"#073B6F",external_person_bg_color:"#686868",external_person_border_color:"#8A8A8A",system_bg_color:"#1168BD",system_border_color:"#3C7FC0",system_db_bg_color:"#1168BD",system_db_border_color:"#3C7FC0",system_queue_bg_color:"#1168BD",system_queue_border_color:"#3C7FC0",external_system_bg_color:"#999999",external_system_border_color:"#8A8A8A",external_system_db_bg_color:"#999999",external_system_db_border_color:"#8A8A8A",external_system_queue_bg_color:"#999999",external_system_queue_border_color:"#8A8A8A",container_bg_color:"#438DD5",container_border_color:"#3C7FC0",container_db_bg_color:"#438DD5",container_db_border_color:"#3C7FC0",container_queue_bg_color:"#438DD5",container_queue_border_color:"#3C7FC0",external_container_bg_color:"#B3B3B3",external_container_border_color:"#A6A6A6",external_container_db_bg_color:"#B3B3B3",external_container_db_border_color:"#A6A6A6",external_container_queue_bg_color:"#B3B3B3",external_container_queue_border_color:"#A6A6A6",component_bg_color:"#85BBF0",component_border_color:"#78A8D8",component_db_bg_color:"#85BBF0",component_db_border_color:"#78A8D8",component_queue_bg_color:"#85BBF0",component_queue_border_color:"#78A8D8",external_component_bg_color:"#CCCCCC",external_component_border_color:"#BFBFBF",external_component_db_bg_color:"#CCCCCC",external_component_db_border_color:"#BFBFBF",external_component_queue_bg_color:"#CCCCCC",external_component_queue_border_color:"#BFBFBF"},sankey:{useMaxWidth:!0,width:600,height:400,linkColor:"gradient",nodeAlignment:"justify",showValues:!0,prefix:"",suffix:"",nodeWidth:10,nodePadding:12,labelStyle:"legacy"},block:{useMaxWidth:!0,padding:8},packet:{useMaxWidth:!0,rowHeight:32,bitWidth:32,bitsPerRow:32,showBits:!0,paddingX:5,paddingY:5},treeView:{useMaxWidth:!0,rowIndent:10,paddingX:5,paddingY:5,lineThickness:1,showIcons:!1,defaultIconPack:"",filenameIcons:{},extensionIcons:{}},architecture:{useMaxWidth:!0,padding:40,iconSize:80,fontSize:16,randomize:!1,nodeSeparation:75,idealEdgeLengthMultiplier:1.5,edgeElasticity:.45,numIter:2500,seed:1},eventmodeling:{useMaxWidth:!0,padding:30,rowHeight:32},radar:{useMaxWidth:!0,width:600,height:600,marginTop:50,marginRight:50,marginBottom:50,marginLeft:50,axisScaleFactor:1,axisLabelFactor:1.05,curveTension:.17},venn:{useMaxWidth:!0,width:800,height:450,padding:8,useDebugLayout:!1},cynefin:{useMaxWidth:!0,width:800,height:600,padding:40,showDomainDescriptions:!0,boundaryAmplitude:8,seed:0},theme:"default",look:"classic",handDrawnSeed:0,layout:"dagre",maxTextSize:5e4,maxEdges:500,darkMode:!1,fontFamily:'"trebuchet ms", verdana, arial, sans-serif;',logLevel:5,securityLevel:"strict",startOnLoad:!0,arrowMarkerAbsolute:!1,secure:["secure","securityLevel","startOnLoad","maxTextSize","suppressErrorRendering","maxEdges"],legacyMathML:!1,forceLegacyMathML:!1,deterministicIds:!1,fontSize:16,markdownAutoWrap:!0,suppressErrorRendering:!1}});var JK,eZ,tZ,cr,Wi=F(()=>{"use strict";Sk();QK();JK={...ga,deterministicIDSeed:void 0,elk:{mergeEdges:!1,nodePlacementStrategy:"BRANDES_KOEPF",forceNodeModelOrder:!1,considerModelOrder:"NODES_AND_EDGES"},themeCSS:void 0,themeVariables:sl.default.getThemeVariables(),sequence:{...ga.sequence,messageFont:o(function(){return{fontFamily:this.messageFontFamily,fontSize:this.messageFontSize,fontWeight:this.messageFontWeight}},"messageFont"),noteFont:o(function(){return{fontFamily:this.noteFontFamily,fontSize:this.noteFontSize,fontWeight:this.noteFontWeight}},"noteFont"),actorFont:o(function(){return{fontFamily:this.actorFontFamily,fontSize:this.actorFontSize,fontWeight:this.actorFontWeight}},"actorFont")},class:{hideEmptyMembersBox:!1,hierarchicalNamespaces:!0},gantt:{...ga.gantt,tickInterval:void 0,useWidth:void 0},c4:{...ga.c4,useWidth:void 0,personFont:o(function(){return{fontFamily:this.personFontFamily,fontSize:this.personFontSize,fontWeight:this.personFontWeight}},"personFont"),flowchart:{...ga.flowchart,inheritDir:!1},external_personFont:o(function(){return{fontFamily:this.external_personFontFamily,fontSize:this.external_personFontSize,fontWeight:this.external_personFontWeight}},"external_personFont"),systemFont:o(function(){return{fontFamily:this.systemFontFamily,fontSize:this.systemFontSize,fontWeight:this.systemFontWeight}},"systemFont"),external_systemFont:o(function(){return{fontFamily:this.external_systemFontFamily,fontSize:this.external_systemFontSize,fontWeight:this.external_systemFontWeight}},"external_systemFont"),system_dbFont:o(function(){return{fontFamily:this.system_dbFontFamily,fontSize:this.system_dbFontSize,fontWeight:this.system_dbFontWeight}},"system_dbFont"),external_system_dbFont:o(function(){return{fontFamily:this.external_system_dbFontFamily,fontSize:this.external_system_dbFontSize,fontWeight:this.external_system_dbFontWeight}},"external_system_dbFont"),system_queueFont:o(function(){return{fontFamily:this.system_queueFontFamily,fontSize:this.system_queueFontSize,fontWeight:this.system_queueFontWeight}},"system_queueFont"),external_system_queueFont:o(function(){return{fontFamily:this.external_system_queueFontFamily,fontSize:this.external_system_queueFontSize,fontWeight:this.external_system_queueFontWeight}},"external_system_queueFont"),containerFont:o(function(){return{fontFamily:this.containerFontFamily,fontSize:this.containerFontSize,fontWeight:this.containerFontWeight}},"containerFont"),external_containerFont:o(function(){return{fontFamily:this.external_containerFontFamily,fontSize:this.external_containerFontSize,fontWeight:this.external_containerFontWeight}},"external_containerFont"),container_dbFont:o(function(){return{fontFamily:this.container_dbFontFamily,fontSize:this.container_dbFontSize,fontWeight:this.container_dbFontWeight}},"container_dbFont"),external_container_dbFont:o(function(){return{fontFamily:this.external_container_dbFontFamily,fontSize:this.external_container_dbFontSize,fontWeight:this.external_container_dbFontWeight}},"external_container_dbFont"),container_queueFont:o(function(){return{fontFamily:this.container_queueFontFamily,fontSize:this.container_queueFontSize,fontWeight:this.container_queueFontWeight}},"container_queueFont"),external_container_queueFont:o(function(){return{fontFamily:this.external_container_queueFontFamily,fontSize:this.external_container_queueFontSize,fontWeight:this.external_container_queueFontWeight}},"external_container_queueFont"),componentFont:o(function(){return{fontFamily:this.componentFontFamily,fontSize:this.componentFontSize,fontWeight:this.componentFontWeight}},"componentFont"),external_componentFont:o(function(){return{fontFamily:this.external_componentFontFamily,fontSize:this.external_componentFontSize,fontWeight:this.external_componentFontWeight}},"external_componentFont"),component_dbFont:o(function(){return{fontFamily:this.component_dbFontFamily,fontSize:this.component_dbFontSize,fontWeight:this.component_dbFontWeight}},"component_dbFont"),external_component_dbFont:o(function(){return{fontFamily:this.external_component_dbFontFamily,fontSize:this.external_component_dbFontSize,fontWeight:this.external_component_dbFontWeight}},"external_component_dbFont"),component_queueFont:o(function(){return{fontFamily:this.component_queueFontFamily,fontSize:this.component_queueFontSize,fontWeight:this.component_queueFontWeight}},"component_queueFont"),external_component_queueFont:o(function(){return{fontFamily:this.external_component_queueFontFamily,fontSize:this.external_component_queueFontSize,fontWeight:this.external_component_queueFontWeight}},"external_component_queueFont"),boundaryFont:o(function(){return{fontFamily:this.boundaryFontFamily,fontSize:this.boundaryFontSize,fontWeight:this.boundaryFontWeight}},"boundaryFont"),messageFont:o(function(){return{fontFamily:this.messageFontFamily,fontSize:this.messageFontSize,fontWeight:this.messageFontWeight}},"messageFont")},pie:{...ga.pie,useWidth:984},xyChart:{...ga.xyChart,useWidth:void 0},requirement:{...ga.requirement,useWidth:void 0},packet:{...ga.packet},eventmodeling:{...ga.eventmodeling},treeView:{...ga.treeView,useWidth:void 0},radar:{...ga.radar},railroad:{...ga.railroad,fontSize:void 0,fontFamily:void 0,terminalFill:void 0,terminalStroke:void 0,terminalTextColor:void 0,nonTerminalFill:void 0,nonTerminalStroke:void 0,nonTerminalTextColor:void 0,lineColor:void 0,markerFill:void 0,commentFill:void 0,commentStroke:void 0,commentTextColor:void 0,specialFill:void 0,specialStroke:void 0,ruleNameColor:void 0},ishikawa:{...ga.ishikawa},sankey:{...ga.sankey,nodeColors:void 0},treemap:{useMaxWidth:!0,padding:10,diagramPadding:8,showValues:!0,nodeWidth:100,nodeHeight:40,borderWidth:1,valueFontSize:12,labelFontSize:14,valueFormat:","},venn:{...ga.venn},cynefin:{...ga.cynefin}},eZ=o((e,t="")=>Object.keys(e).reduce((r,n)=>Array.isArray(e[n])?r:typeof e[n]=="object"&&e[n]!==null?[...r,t+n,...eZ(e[n],"")]:[...r,t+n],[]),"keyify"),tZ=new Set(eZ(JK,"")),cr=JK});var $ze,Fze,W0,o7,Ek=F(()=>{"use strict";Wi();vt();$ze={nodeColors:/^#[\da-f]{3,8}$|^rgb\([\d\s%,.]+\)$|^hsl\([\d\s%,.]+\)$|^[a-z]+$/i,filenameIcons:/^[\w-]+(?::[\w-]+)?$/,extensionIcons:/^[\w-]+(?::[\w-]+)?$/},Fze=o((e,t)=>{for(let r of Object.keys(e)){let n=e[r];(r.startsWith("__")||r.includes("proto")||r.includes("constr")||typeof n!="string"||!t.test(n))&&(Z.debug("sanitize deleting dictionary entry:",r,n),delete e[r])}},"sanitizeDictionaryConfig"),W0=o(e=>{if(Z.debug("sanitizeDirective called with",e),!(typeof e!="object"||e==null)){if(Array.isArray(e)){e.forEach(t=>W0(t));return}for(let t of Object.keys(e)){if(Z.debug("Checking key",t),t.startsWith("__")||t.includes("proto")||t.includes("constr")||!tZ.has(t)||e[t]==null){Z.debug("sanitize deleting key: ",t),delete e[t];continue}if(typeof e[t]=="object"){let n=$ze[t];n?Fze(e[t],n):(Z.debug("sanitizing object",t),W0(e[t]));continue}let r=["themeCSS","fontFamily","altFontFamily"];for(let n of r)t.includes(n)&&(Z.debug("sanitizing css option",t),e[t]=o7(e[t]))}if(e.themeVariables)for(let t of Object.keys(e.themeVariables)){let r=e.themeVariables[t];r?.match&&!r.match(/^[\d "#%(),.;A-Za-z]+$/)&&(e.themeVariables[t]="")}Z.debug("After sanitization",e)}},"sanitizeDirective"),o7=o(e=>{let t=0,r=0;for(let n of e){if(t<r)return"{ /* ERROR: Unbalanced CSS */ }";n==="{"?t++:n==="}"&&r++}return t!==r?"{ /* ERROR: Unbalanced CSS */ }":e},"sanitizeCss")});var Cd,ya,Ks,Ak,Fp,Vx,Rk,l7,nZ,iZ,c7,_k,_t,aZ,sZ,Wx,zze,rZ,oZ,lZ,Lk,Gr,ur=F(()=>{"use strict";G0();vt();Sk();Wi();Ek();Cd=Object.freeze(cr),ya=o(e=>!(e===!1||["false","null","0"].includes(String(e).trim().toLowerCase())),"evaluate"),Ks=Yn({},Cd),Fp=[],Vx=Yn({},Cd),Rk=o((e,t)=>{let r=Yn({},e),n={};for(let i of t)aZ(i),n=Yn(n,i);if(r=Yn(r,n),n.theme&&n.theme in sl){let i=Yn({},Ak),a=Yn(i.themeVariables||{},n.themeVariables);r.theme&&r.theme in sl&&(r.themeVariables=sl[r.theme].getThemeVariables(a))}return Vx=r,lZ(Vx),Vx},"updateCurrentConfig"),l7=o(e=>(Ks=Yn({},Cd),Ks=Yn(Ks,e),e.theme&&sl[e.theme]&&(Ks.themeVariables=sl[e.theme].getThemeVariables(e.themeVariables)),Rk(Ks,Fp),Ks),"setSiteConfig"),nZ=o(e=>{Ak=Yn({},e)},"saveConfigFromInitialize"),iZ=o(e=>(Ks=Yn(Ks,e),Rk(Ks,Fp),Ks),"updateSiteConfig"),c7=o(()=>Yn({},Ks),"getSiteConfig"),_k=o(e=>(lZ(e),Yn(Vx,e),_t()),"setConfig"),_t=o(()=>Yn({},Vx),"getConfig"),aZ=o(e=>{e&&(["secure",...Ks.secure??[]].forEach(t=>{Object.hasOwn(e,t)&&(Z.debug(`Denied attempt to modify a secure key ${t}`,e[t]),delete e[t])}),Object.keys(e).forEach(t=>{t.startsWith("__")&&delete e[t]}),Object.keys(e).forEach(t=>{typeof e[t]=="string"&&(e[t].includes("<")||e[t].includes(">")||e[t].includes("url(data:"))&&delete e[t],typeof e[t]=="object"&&aZ(e[t])}))},"sanitize"),sZ=o(e=>{W0(e),e.fontFamily&&!e.themeVariables?.fontFamily&&(e.themeVariables={...e.themeVariables,fontFamily:e.fontFamily}),Fp.push(e),Rk(Ks,Fp)},"addDirective"),Wx=o((e=Ks)=>{Fp=[],Rk(e,Fp)},"reset"),zze={LAZY_LOAD_DEPRECATED:"The configuration options lazyLoadedDiagrams and loadExternalDiagramsAtStartup are deprecated. Please use registerExternalDiagrams instead.",FLOWCHART_HTML_LABELS_DEPRECATED:"flowchart.htmlLabels is deprecated. Please use global htmlLabels instead."},rZ={},oZ=o(e=>{rZ[e]||(Z.warn(zze[e]),rZ[e]=!0)},"issueWarning"),lZ=o(e=>{e&&(e.lazyLoadedDiagrams||e.loadExternalDiagramsAtStartup)&&oZ("LAZY_LOAD_DEPRECATED")},"checkConfig"),Lk=o(()=>{let e={};Ak&&(e=Yn(e,Ak));for(let t of Fp)e=Yn(e,t);return e},"getUserDefinedConfig"),Gr=o(e=>(e.flowchart?.htmlLabels!=null&&oZ("FLOWCHART_HTML_LABELS_DEPRECATED"),ya(e.htmlLabels??e.flowchart?.htmlLabels??!0)),"getEffectiveHtmlLabels")});function bs(e){return function(t){t instanceof RegExp&&(t.lastIndex=0);for(var r=arguments.length,n=new Array(r>1?r-1:0),i=1;i<r;i++)n[i-1]=arguments[i];return g7(e,t,n)}}function jze(e){return function(){for(var t=arguments.length,r=new Array(t),n=0;n<t;n++)r[n]=arguments[n];return y7(e,r)}}function Zr(e,t){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:Ik;cZ&&cZ(e,null);let n=t.length;for(;n--;){let i=t[n];if(typeof i=="string"){let a=r(i);a!==i&&(Gze(t)||(t[n]=a),i=a)}e[i]=!0}return e}function Xze(e){for(let t=0;t<e.length;t++)zl(e,t)||(e[t]=null);return e}function Oc(e){let t=Xx(null);for(let[r,n]of yZ(e))zl(e,r)&&(Array.isArray(n)?t[r]=Xze(n):n&&typeof n=="object"&&n.constructor===Object?t[r]=Oc(n):t[r]=n);return t}function Yx(e,t){for(;e!==null;){let n=Wze(e,t);if(n){if(n.get)return bs(n.get);if(typeof n.value=="function")return bs(n.value)}e=Vze(e)}function r(){return null}return o(r,"fallbackValue"),r}function bZ(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:sGe(),t=o(Tt=>bZ(Tt),"DOMPurify");if(t.version="3.4.0",t.removed=[],!e||!e.document||e.document.nodeType!==jx.document||!e.Element)return t.isSupported=!1,t;let{document:r}=e,n=r,i=n.currentScript,{DocumentFragment:a,HTMLTemplateElement:s,Node:l,Element:u,NodeFilter:h,NamedNodeMap:d=e.NamedNodeMap||e.MozNamedAttrMap,HTMLFormElement:f,DOMParser:p,trustedTypes:m}=e,g=u.prototype,y=Yx(g,"cloneNode"),v=Yx(g,"remove"),x=Yx(g,"nextSibling"),b=Yx(g,"childNodes"),T=Yx(g,"parentNode");if(typeof s=="function"){let Tt=r.createElement("template");Tt.content&&Tt.content.ownerDocument&&(r=Tt.content.ownerDocument)}let k,C="",{implementation:w,createNodeIterator:S,createDocumentFragment:R,getElementsByTagName:L}=r,{importNode:N}=n,I=gZ();t.isSupported=typeof yZ=="function"&&typeof T=="function"&&w&&w.createHTMLDocument!==void 0;let{MUSTACHE_EXPR:_,ERB_EXPR:A,TMPLIT_EXPR:M,DATA_ATTR:D,ARIA_ATTR:P,IS_SCRIPT_OR_DATA:B,ATTR_WHITESPACE:O,CUSTOM_ELEMENT:$}=mZ,{IS_ALLOWED_URI:V}=mZ,G=null,z=Zr({},[...hZ,...d7,...f7,...p7,...dZ]),W=null,H=Zr({},[...fZ,...m7,...pZ,...Dk]),j=Object.seal(Xx(null,{tagNameCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},attributeNameCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},allowCustomizedBuiltInElements:{writable:!0,configurable:!1,enumerable:!0,value:!1}})),Q=null,U=null,oe=Object.seal(Xx(null,{tagCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},attributeCheck:{writable:!0,configurable:!1,enumerable:!0,value:null}})),te=!0,le=!0,ie=!1,ae=!0,Re=!1,be=!0,Pe=!1,Ge=!1,Oe=!1,ue=!1,ye=!1,ke=!1,ce=!0,re=!1,J="user-content-",se=!0,ge=!1,Te={},we=null,Me=Zr({},["annotation-xml","audio","colgroup","desc","foreignobject","head","iframe","math","mi","mn","mo","ms","mtext","noembed","noframes","noscript","plaintext","script","style","svg","template","thead","title","video","xmp"]),ve=null,ne=Zr({},["audio","video","img","source","image","track"]),q=null,he=Zr({},["alt","class","for","id","label","name","pattern","placeholder","role","summary","title","value","style","xmlns"]),X="http://www.w3.org/1998/Math/MathML",fe="http://www.w3.org/2000/svg",K="http://www.w3.org/1999/xhtml",qe=K,_e=!1,Be=null,Ne=Zr({},[X,fe,K],u7),He=Zr({},["mi","mo","mn","ms","mtext"]),$e=Zr({},["annotation-xml"]),Xe=Zr({},["title","style","font","a","script"]),Fe=null,Ke=["application/xhtml+xml","text/html"],xe="text/html",mt=null,Le=null,ft=r.createElement("form"),wt=o(function(De){return De instanceof RegExp||De instanceof Function},"isRegexOrFunction"),zt=o(function(){let De=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};if(!(Le&&Le===De)){if((!De||typeof De!="object")&&(De={}),De=Oc(De),Fe=Ke.indexOf(De.PARSER_MEDIA_TYPE)===-1?xe:De.PARSER_MEDIA_TYPE,mt=Fe==="application/xhtml+xml"?u7:Ik,G=zl(De,"ALLOWED_TAGS")?Zr({},De.ALLOWED_TAGS,mt):z,W=zl(De,"ALLOWED_ATTR")?Zr({},De.ALLOWED_ATTR,mt):H,Be=zl(De,"ALLOWED_NAMESPACES")?Zr({},De.ALLOWED_NAMESPACES,u7):Ne,q=zl(De,"ADD_URI_SAFE_ATTR")?Zr(Oc(he),De.ADD_URI_SAFE_ATTR,mt):he,ve=zl(De,"ADD_DATA_URI_TAGS")?Zr(Oc(ne),De.ADD_DATA_URI_TAGS,mt):ne,we=zl(De,"FORBID_CONTENTS")?Zr({},De.FORBID_CONTENTS,mt):Me,Q=zl(De,"FORBID_TAGS")?Zr({},De.FORBID_TAGS,mt):Oc({}),U=zl(De,"FORBID_ATTR")?Zr({},De.FORBID_ATTR,mt):Oc({}),Te=zl(De,"USE_PROFILES")?De.USE_PROFILES:!1,te=De.ALLOW_ARIA_ATTR!==!1,le=De.ALLOW_DATA_ATTR!==!1,ie=De.ALLOW_UNKNOWN_PROTOCOLS||!1,ae=De.ALLOW_SELF_CLOSE_IN_ATTR!==!1,Re=De.SAFE_FOR_TEMPLATES||!1,be=De.SAFE_FOR_XML!==!1,Pe=De.WHOLE_DOCUMENT||!1,ue=De.RETURN_DOM||!1,ye=De.RETURN_DOM_FRAGMENT||!1,ke=De.RETURN_TRUSTED_TYPE||!1,Oe=De.FORCE_BODY||!1,ce=De.SANITIZE_DOM!==!1,re=De.SANITIZE_NAMED_PROPS||!1,se=De.KEEP_CONTENT!==!1,ge=De.IN_PLACE||!1,V=De.ALLOWED_URI_REGEXP||vZ,qe=De.NAMESPACE||K,He=De.MATHML_TEXT_INTEGRATION_POINTS||He,$e=De.HTML_INTEGRATION_POINTS||$e,j=De.CUSTOM_ELEMENT_HANDLING||Xx(null),De.CUSTOM_ELEMENT_HANDLING&&wt(De.CUSTOM_ELEMENT_HANDLING.tagNameCheck)&&(j.tagNameCheck=De.CUSTOM_ELEMENT_HANDLING.tagNameCheck),De.CUSTOM_ELEMENT_HANDLING&&wt(De.CUSTOM_ELEMENT_HANDLING.attributeNameCheck)&&(j.attributeNameCheck=De.CUSTOM_ELEMENT_HANDLING.attributeNameCheck),De.CUSTOM_ELEMENT_HANDLING&&typeof De.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements=="boolean"&&(j.allowCustomizedBuiltInElements=De.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements),Re&&(le=!1),ye&&(ue=!0),Te&&(G=Zr({},dZ),W=Xx(null),Te.html===!0&&(Zr(G,hZ),Zr(W,fZ)),Te.svg===!0&&(Zr(G,d7),Zr(W,m7),Zr(W,Dk)),Te.svgFilters===!0&&(Zr(G,f7),Zr(W,m7),Zr(W,Dk)),Te.mathMl===!0&&(Zr(G,p7),Zr(W,pZ),Zr(W,Dk))),oe.tagCheck=null,oe.attributeCheck=null,De.ADD_TAGS&&(typeof De.ADD_TAGS=="function"?oe.tagCheck=De.ADD_TAGS:(G===z&&(G=Oc(G)),Zr(G,De.ADD_TAGS,mt))),De.ADD_ATTR&&(typeof De.ADD_ATTR=="function"?oe.attributeCheck=De.ADD_ATTR:(W===H&&(W=Oc(W)),Zr(W,De.ADD_ATTR,mt))),De.ADD_URI_SAFE_ATTR&&Zr(q,De.ADD_URI_SAFE_ATTR,mt),De.FORBID_CONTENTS&&(we===Me&&(we=Oc(we)),Zr(we,De.FORBID_CONTENTS,mt)),De.ADD_FORBID_CONTENTS&&(we===Me&&(we=Oc(we)),Zr(we,De.ADD_FORBID_CONTENTS,mt)),se&&(G["#text"]=!0),Pe&&Zr(G,["html","head","body"]),G.table&&(Zr(G,["tbody"]),delete Q.tbody),De.TRUSTED_TYPES_POLICY){if(typeof De.TRUSTED_TYPES_POLICY.createHTML!="function")throw Ux('TRUSTED_TYPES_POLICY configuration option must provide a "createHTML" hook.');if(typeof De.TRUSTED_TYPES_POLICY.createScriptURL!="function")throw Ux('TRUSTED_TYPES_POLICY configuration option must provide a "createScriptURL" hook.');k=De.TRUSTED_TYPES_POLICY,C=k.createHTML("")}else k===void 0&&(k=oGe(m,i)),k!==null&&typeof C=="string"&&(C=k.createHTML(""));xs&&xs(De),Le=De}},"_parseConfig"),St=Zr({},[...d7,...f7,...Kze]),At=Zr({},[...p7,...Zze]),bt=o(function(De){let it=T(De);(!it||!it.tagName)&&(it={namespaceURI:qe,tagName:"template"});let We=Ik(De.tagName),rt=Ik(it.tagName);return Be[De.namespaceURI]?De.namespaceURI===fe?it.namespaceURI===K?We==="svg":it.namespaceURI===X?We==="svg"&&(rt==="annotation-xml"||He[rt]):!!St[We]:De.namespaceURI===X?it.namespaceURI===K?We==="math":it.namespaceURI===fe?We==="math"&&$e[rt]:!!At[We]:De.namespaceURI===K?it.namespaceURI===fe&&!$e[rt]||it.namespaceURI===X&&!He[rt]?!1:!At[We]&&(Xe[We]||!St[We]):!!(Fe==="application/xhtml+xml"&&Be[De.namespaceURI]):!1},"_checkValidNamespace"),me=o(function(De){Hx(t.removed,{element:De});try{T(De).removeChild(De)}catch{v(De)}},"_forceRemove"),lt=o(function(De,it){try{Hx(t.removed,{attribute:it.getAttributeNode(De),from:it})}catch{Hx(t.removed,{attribute:null,from:it})}if(it.removeAttribute(De),De==="is")if(ue||ye)try{me(it)}catch{}else try{it.setAttribute(De,"")}catch{}},"_removeAttribute"),gt=o(function(De){let it=null,We=null;if(Oe)De="<remove></remove>"+De;else{let Yt=h7(De,/^[\r\n\t ]+/);We=Yt&&Yt[0]}Fe==="application/xhtml+xml"&&qe===K&&(De='<html xmlns="http://www.w3.org/1999/xhtml"><head></head><body>'+De+"</body></html>");let rt=k?k.createHTML(De):De;if(qe===K)try{it=new p().parseFromString(rt,Fe)}catch{}if(!it||!it.documentElement){it=w.createDocument(qe,"template",null);try{it.documentElement.innerHTML=_e?C:rt}catch{}}let yt=it.body||it.documentElement;return De&&We&&yt.insertBefore(r.createTextNode(We),yt.childNodes[0]||null),qe===K?L.call(it,Pe?"html":"body")[0]:Pe?it.documentElement:yt},"_initDocument"),Ze=o(function(De){return S.call(De.ownerDocument||De,De,h.SHOW_ELEMENT|h.SHOW_COMMENT|h.SHOW_TEXT|h.SHOW_PROCESSING_INSTRUCTION|h.SHOW_CDATA_SECTION,null)},"_createNodeIterator"),Ee=o(function(De){return De instanceof f&&(typeof De.nodeName!="string"||typeof De.textContent!="string"||typeof De.removeChild!="function"||!(De.attributes instanceof d)||typeof De.removeAttribute!="function"||typeof De.setAttribute!="function"||typeof De.namespaceURI!="string"||typeof De.insertBefore!="function"||typeof De.hasChildNodes!="function")},"_isClobbered"),tt=o(function(De){return typeof l=="function"&&De instanceof l},"_isNode");function at(Tt,De,it){qx(Tt,We=>{We.call(t,De,it,Le)})}o(at,"_executeHooks");let ot=o(function(De){let it=null;if(at(I.beforeSanitizeElements,De,null),Ee(De))return me(De),!0;let We=mt(De.nodeName);if(at(I.uponSanitizeElement,De,{tagName:We,allowedTags:G}),be&&De.hasChildNodes()&&!tt(De.firstElementChild)&&vs(/<[/\w!]/g,De.innerHTML)&&vs(/<[/\w!]/g,De.textContent)||be&&De.namespaceURI===K&&We==="style"&&tt(De.firstElementChild)||De.nodeType===jx.progressingInstruction||be&&De.nodeType===jx.comment&&vs(/<[/\w]/g,De.data))return me(De),!0;if(Q[We]||!(oe.tagCheck instanceof Function&&oe.tagCheck(We))&&!G[We]){if(!Q[We]&&Bt(We)&&(j.tagNameCheck instanceof RegExp&&vs(j.tagNameCheck,We)||j.tagNameCheck instanceof Function&&j.tagNameCheck(We)))return!1;if(se&&!we[We]){let rt=T(De)||De.parentNode,yt=b(De)||De.childNodes;if(yt&&rt){let Yt=yt.length;for(let Ht=Yt-1;Ht>=0;--Ht){let pr=y(yt[Ht],!0);pr.__removalCount=(De.__removalCount||0)+1,rt.insertBefore(pr,x(De))}}}return me(De),!0}return De instanceof u&&!bt(De)||(We==="noscript"||We==="noembed"||We==="noframes")&&vs(/<\/no(script|embed|frames)/i,De.innerHTML)?(me(De),!0):(Re&&De.nodeType===jx.text&&(it=De.textContent,qx([_,A,M],rt=>{it=q0(it,rt," ")}),De.textContent!==it&&(Hx(t.removed,{element:De.cloneNode()}),De.textContent=it)),at(I.afterSanitizeElements,De,null),!1)},"_sanitizeElements"),Wt=o(function(De,it,We){if(U[it]||ce&&(it==="id"||it==="name")&&(We in r||We in ft))return!1;if(!(le&&!U[it]&&vs(D,it))){if(!(te&&vs(P,it))){if(!(oe.attributeCheck instanceof Function&&oe.attributeCheck(it,De))){if(!W[it]||U[it]){if(!(Bt(De)&&(j.tagNameCheck instanceof RegExp&&vs(j.tagNameCheck,De)||j.tagNameCheck instanceof Function&&j.tagNameCheck(De))&&(j.attributeNameCheck instanceof RegExp&&vs(j.attributeNameCheck,it)||j.attributeNameCheck instanceof Function&&j.attributeNameCheck(it,De))||it==="is"&&j.allowCustomizedBuiltInElements&&(j.tagNameCheck instanceof RegExp&&vs(j.tagNameCheck,We)||j.tagNameCheck instanceof Function&&j.tagNameCheck(We))))return!1}else if(!q[it]){if(!vs(V,q0(We,O,""))){if(!((it==="src"||it==="xlink:href"||it==="href")&&De!=="script"&&Uze(We,"data:")===0&&ve[De])){if(!(ie&&!vs(B,q0(We,O,"")))){if(We)return!1}}}}}}}return!0},"_isValidAttribute"),Bt=o(function(De){return De!=="annotation-xml"&&h7(De,$)},"_isBasicCustomElement"),qt=o(function(De){at(I.beforeSanitizeAttributes,De,null);let{attributes:it}=De;if(!it||Ee(De))return;let We={attrName:"",attrValue:"",keepAttr:!0,allowedAttributes:W,forceKeepAttr:void 0},rt=it.length;for(;rt--;){let yt=it[rt],{name:Yt,namespaceURI:Ht,value:pr}=yt,Hr=mt(Yt),Er=pr,kt=Yt==="value"?Er:Yze(Er);if(We.attrName=Hr,We.attrValue=kt,We.keepAttr=!0,We.forceKeepAttr=void 0,at(I.uponSanitizeAttribute,De,We),kt=We.attrValue,re&&(Hr==="id"||Hr==="name")&&(lt(Yt,De),kt=J+kt),be&&vs(/((--!?|])>)|<\/(style|script|title|xmp|textarea|noscript|iframe|noembed|noframes)/i,kt)){lt(Yt,De);continue}if(Hr==="attributename"&&h7(kt,"href")){lt(Yt,De);continue}if(We.forceKeepAttr)continue;if(!We.keepAttr){lt(Yt,De);continue}if(!ae&&vs(/\/>/i,kt)){lt(Yt,De);continue}Re&&qx([_,A,M],Ot=>{kt=q0(kt,Ot," ")});let Ct=mt(De.nodeName);if(!Wt(Ct,Hr,kt)){lt(Yt,De);continue}if(k&&typeof m=="object"&&typeof m.getAttributeType=="function"&&!Ht)switch(m.getAttributeType(Ct,Hr)){case"TrustedHTML":{kt=k.createHTML(kt);break}case"TrustedScriptURL":{kt=k.createScriptURL(kt);break}}if(kt!==Er)try{Ht?De.setAttributeNS(Ht,Yt,kt):De.setAttribute(Yt,kt),Ee(De)?me(De):uZ(t.removed)}catch{lt(Yt,De)}}at(I.afterSanitizeAttributes,De,null)},"_sanitizeAttributes"),vr=o(function(De){let it=null,We=Ze(De);for(at(I.beforeSanitizeShadowDOM,De,null);it=We.nextNode();)at(I.uponSanitizeShadowNode,it,null),ot(it),qt(it),it.content instanceof a&&vr(it.content);at(I.afterSanitizeShadowDOM,De,null)},"_sanitizeShadowDOM");return t.sanitize=function(Tt){let De=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},it=null,We=null,rt=null,yt=null;if(_e=!Tt,_e&&(Tt="<!-->"),typeof Tt!="string"&&!tt(Tt))if(typeof Tt.toString=="function"){if(Tt=Tt.toString(),typeof Tt!="string")throw Ux("dirty is not a string, aborting")}else throw Ux("toString is not a function");if(!t.isSupported)return Tt;if(Ge||zt(De),t.removed=[],typeof Tt=="string"&&(ge=!1),ge){if(Tt.nodeName){let pr=mt(Tt.nodeName);if(!G[pr]||Q[pr])throw Ux("root node is forbidden and cannot be sanitized in-place")}}else if(Tt instanceof l)it=gt("<!---->"),We=it.ownerDocument.importNode(Tt,!0),We.nodeType===jx.element&&We.nodeName==="BODY"||We.nodeName==="HTML"?it=We:it.appendChild(We);else{if(!ue&&!Re&&!Pe&&Tt.indexOf("<")===-1)return k&&ke?k.createHTML(Tt):Tt;if(it=gt(Tt),!it)return ue?null:ke?C:""}it&&Oe&&me(it.firstChild);let Yt=Ze(ge?Tt:it);for(;rt=Yt.nextNode();)ot(rt),qt(rt),rt.content instanceof a&&vr(rt.content);if(ge)return Tt;if(ue){if(Re){it.normalize();let pr=it.innerHTML;qx([_,A,M],Hr=>{pr=q0(pr,Hr," ")}),it.innerHTML=pr}if(ye)for(yt=R.call(it.ownerDocument);it.firstChild;)yt.appendChild(it.firstChild);else yt=it;return(W.shadowroot||W.shadowrootmode)&&(yt=N.call(n,yt,!0)),yt}let Ht=Pe?it.outerHTML:it.innerHTML;return Pe&&G["!doctype"]&&it.ownerDocument&&it.ownerDocument.doctype&&it.ownerDocument.doctype.name&&vs(xZ,it.ownerDocument.doctype.name)&&(Ht="<!DOCTYPE "+it.ownerDocument.doctype.name+`>
+`+Ht),Re&&qx([_,A,M],pr=>{Ht=q0(Ht,pr," ")}),k&&ke?k.createHTML(Ht):Ht},t.setConfig=function(){let Tt=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};zt(Tt),Ge=!0},t.clearConfig=function(){Le=null,Ge=!1},t.isValidAttribute=function(Tt,De,it){Le||zt({});let We=mt(Tt),rt=mt(De);return Wt(We,rt,it)},t.addHook=function(Tt,De){typeof De=="function"&&Hx(I[Tt],De)},t.removeHook=function(Tt,De){if(De!==void 0){let it=qze(I[Tt],De);return it===-1?void 0:Hze(I[Tt],it,1)[0]}return uZ(I[Tt])},t.removeHooks=function(Tt){I[Tt]=[]},t.removeAllHooks=function(){I=gZ()},t}var yZ,cZ,Gze,Vze,Wze,xs,ol,Xx,g7,y7,qx,qze,uZ,Hx,Hze,Ik,u7,h7,q0,Uze,Yze,zl,vs,Ux,hZ,d7,f7,Kze,p7,Zze,dZ,fZ,m7,pZ,Dk,Qze,Jze,eGe,tGe,rGe,vZ,nGe,iGe,xZ,aGe,mZ,jx,sGe,oGe,gZ,Zs,H0=F(()=>{"use strict";({entries:yZ,setPrototypeOf:cZ,isFrozen:Gze,getPrototypeOf:Vze,getOwnPropertyDescriptor:Wze}=Object),{freeze:xs,seal:ol,create:Xx}=Object,{apply:g7,construct:y7}=typeof Reflect<"u"&&Reflect;xs||(xs=o(function(t){return t},"freeze"));ol||(ol=o(function(t){return t},"seal"));g7||(g7=o(function(t,r){for(var n=arguments.length,i=new Array(n>2?n-2:0),a=2;a<n;a++)i[a-2]=arguments[a];return t.apply(r,i)},"apply"));y7||(y7=o(function(t){for(var r=arguments.length,n=new Array(r>1?r-1:0),i=1;i<r;i++)n[i-1]=arguments[i];return new t(...n)},"construct"));qx=bs(Array.prototype.forEach),qze=bs(Array.prototype.lastIndexOf),uZ=bs(Array.prototype.pop),Hx=bs(Array.prototype.push),Hze=bs(Array.prototype.splice),Ik=bs(String.prototype.toLowerCase),u7=bs(String.prototype.toString),h7=bs(String.prototype.match),q0=bs(String.prototype.replace),Uze=bs(String.prototype.indexOf),Yze=bs(String.prototype.trim),zl=bs(Object.prototype.hasOwnProperty),vs=bs(RegExp.prototype.test),Ux=jze(TypeError);o(bs,"unapply");o(jze,"unconstruct");o(Zr,"addToSet");o(Xze,"cleanArray");o(Oc,"clone");o(Yx,"lookupGetter");hZ=xs(["a","abbr","acronym","address","area","article","aside","audio","b","bdi","bdo","big","blink","blockquote","body","br","button","canvas","caption","center","cite","code","col","colgroup","content","data","datalist","dd","decorator","del","details","dfn","dialog","dir","div","dl","dt","element","em","fieldset","figcaption","figure","font","footer","form","h1","h2","h3","h4","h5","h6","head","header","hgroup","hr","html","i","img","input","ins","kbd","label","legend","li","main","map","mark","marquee","menu","menuitem","meter","nav","nobr","ol","optgroup","option","output","p","picture","pre","progress","q","rp","rt","ruby","s","samp","search","section","select","shadow","slot","small","source","spacer","span","strike","strong","style","sub","summary","sup","table","tbody","td","template","textarea","tfoot","th","thead","time","tr","track","tt","u","ul","var","video","wbr"]),d7=xs(["svg","a","altglyph","altglyphdef","altglyphitem","animatecolor","animatemotion","animatetransform","circle","clippath","defs","desc","ellipse","enterkeyhint","exportparts","filter","font","g","glyph","glyphref","hkern","image","inputmode","line","lineargradient","marker","mask","metadata","mpath","part","path","pattern","polygon","polyline","radialgradient","rect","stop","style","switch","symbol","text","textpath","title","tref","tspan","view","vkern"]),f7=xs(["feBlend","feColorMatrix","feComponentTransfer","feComposite","feConvolveMatrix","feDiffuseLighting","feDisplacementMap","feDistantLight","feDropShadow","feFlood","feFuncA","feFuncB","feFuncG","feFuncR","feGaussianBlur","feImage","feMerge","feMergeNode","feMorphology","feOffset","fePointLight","feSpecularLighting","feSpotLight","feTile","feTurbulence"]),Kze=xs(["animate","color-profile","cursor","discard","font-face","font-face-format","font-face-name","font-face-src","font-face-uri","foreignobject","hatch","hatchpath","mesh","meshgradient","meshpatch","meshrow","missing-glyph","script","set","solidcolor","unknown","use"]),p7=xs(["math","menclose","merror","mfenced","mfrac","mglyph","mi","mlabeledtr","mmultiscripts","mn","mo","mover","mpadded","mphantom","mroot","mrow","ms","mspace","msqrt","mstyle","msub","msup","msubsup","mtable","mtd","mtext","mtr","munder","munderover","mprescripts"]),Zze=xs(["maction","maligngroup","malignmark","mlongdiv","mscarries","mscarry","msgroup","mstack","msline","msrow","semantics","annotation","annotation-xml","mprescripts","none"]),dZ=xs(["#text"]),fZ=xs(["accept","action","align","alt","autocapitalize","autocomplete","autopictureinpicture","autoplay","background","bgcolor","border","capture","cellpadding","cellspacing","checked","cite","class","clear","color","cols","colspan","controls","controlslist","coords","crossorigin","datetime","decoding","default","dir","disabled","disablepictureinpicture","disableremoteplayback","download","draggable","enctype","enterkeyhint","exportparts","face","for","headers","height","hidden","high","href","hreflang","id","inert","inputmode","integrity","ismap","kind","label","lang","list","loading","loop","low","max","maxlength","media","method","min","minlength","multiple","muted","name","nonce","noshade","novalidate","nowrap","open","optimum","part","pattern","placeholder","playsinline","popover","popovertarget","popovertargetaction","poster","preload","pubdate","radiogroup","readonly","rel","required","rev","reversed","role","rows","rowspan","spellcheck","scope","selected","shape","size","sizes","slot","span","srclang","start","src","srcset","step","style","summary","tabindex","title","translate","type","usemap","valign","value","width","wrap","xmlns","slot"]),m7=xs(["accent-height","accumulate","additive","alignment-baseline","amplitude","ascent","attributename","attributetype","azimuth","basefrequency","baseline-shift","begin","bias","by","class","clip","clippathunits","clip-path","clip-rule","color","color-interpolation","color-interpolation-filters","color-profile","color-rendering","cx","cy","d","dx","dy","diffuseconstant","direction","display","divisor","dur","edgemode","elevation","end","exponent","fill","fill-opacity","fill-rule","filter","filterunits","flood-color","flood-opacity","font-family","font-size","font-size-adjust","font-stretch","font-style","font-variant","font-weight","fx","fy","g1","g2","glyph-name","glyphref","gradientunits","gradienttransform","height","href","id","image-rendering","in","in2","intercept","k","k1","k2","k3","k4","kerning","keypoints","keysplines","keytimes","lang","lengthadjust","letter-spacing","kernelmatrix","kernelunitlength","lighting-color","local","marker-end","marker-mid","marker-start","markerheight","markerunits","markerwidth","maskcontentunits","maskunits","max","mask","mask-type","media","method","mode","min","name","numoctaves","offset","operator","opacity","order","orient","orientation","origin","overflow","paint-order","path","pathlength","patterncontentunits","patterntransform","patternunits","points","preservealpha","preserveaspectratio","primitiveunits","r","rx","ry","radius","refx","refy","repeatcount","repeatdur","restart","result","rotate","scale","seed","shape-rendering","slope","specularconstant","specularexponent","spreadmethod","startoffset","stddeviation","stitchtiles","stop-color","stop-opacity","stroke-dasharray","stroke-dashoffset","stroke-linecap","stroke-linejoin","stroke-miterlimit","stroke-opacity","stroke","stroke-width","style","surfacescale","systemlanguage","tabindex","tablevalues","targetx","targety","transform","transform-origin","text-anchor","text-decoration","text-rendering","textlength","type","u1","u2","unicode","values","viewbox","visibility","version","vert-adv-y","vert-origin-x","vert-origin-y","width","word-spacing","wrap","writing-mode","xchannelselector","ychannelselector","x","x1","x2","xmlns","y","y1","y2","z","zoomandpan"]),pZ=xs(["accent","accentunder","align","bevelled","close","columnalign","columnlines","columnspacing","columnspan","denomalign","depth","dir","display","displaystyle","encoding","fence","frame","height","href","id","largeop","length","linethickness","lquote","lspace","mathbackground","mathcolor","mathsize","mathvariant","maxsize","minsize","movablelimits","notation","numalign","open","rowalign","rowlines","rowspacing","rowspan","rspace","rquote","scriptlevel","scriptminsize","scriptsizemultiplier","selection","separator","separators","stretchy","subscriptshift","supscriptshift","symmetric","voffset","width","xmlns"]),Dk=xs(["xlink:href","xml:id","xlink:title","xml:space","xmlns:xlink"]),Qze=ol(/\{\{[\w\W]*|[\w\W]*\}\}/gm),Jze=ol(/<%[\w\W]*|[\w\W]*%>/gm),eGe=ol(/\$\{[\w\W]*/gm),tGe=ol(/^data-[\-\w.\u00B7-\uFFFF]+$/),rGe=ol(/^aria-[\-\w]+$/),vZ=ol(/^(?:(?:(?:f|ht)tps?|mailto|tel|callto|sms|cid|xmpp|matrix):|[^a-z]|[a-z+.\-]+(?:[^a-z+.\-:]|$))/i),nGe=ol(/^(?:\w+script|data):/i),iGe=ol(/[\u0000-\u0020\u00A0\u1680\u180E\u2000-\u2029\u205F\u3000]/g),xZ=ol(/^html$/i),aGe=ol(/^[a-z][.\w]*(-[.\w]+)+$/i),mZ=Object.freeze({__proto__:null,ARIA_ATTR:rGe,ATTR_WHITESPACE:iGe,CUSTOM_ELEMENT:aGe,DATA_ATTR:tGe,DOCTYPE_NAME:xZ,ERB_EXPR:Jze,IS_ALLOWED_URI:vZ,IS_SCRIPT_OR_DATA:nGe,MUSTACHE_EXPR:Qze,TMPLIT_EXPR:eGe}),jx={element:1,text:3,progressingInstruction:7,comment:8,document:9},sGe=o(function(){return typeof window>"u"?null:window},"getGlobal"),oGe=o(function(t,r){if(typeof t!="object"||typeof t.createPolicy!="function")return null;let n=null,i="data-tt-policy-suffix";r&&r.hasAttribute(i)&&(n=r.getAttribute(i));let a="dompurify"+(n?"#"+n:"");try{return t.createPolicy(a,{createHTML(s){return s},createScriptURL(s){return s}})}catch{return console.warn("TrustedTypes policy "+a+" could not be created."),null}},"_createTrustedTypesPolicy"),gZ=o(function(){return{afterSanitizeAttributes:[],afterSanitizeElements:[],afterSanitizeShadowDOM:[],beforeSanitizeAttributes:[],beforeSanitizeElements:[],beforeSanitizeShadowDOM:[],uponSanitizeAttribute:[],uponSanitizeElement:[],uponSanitizeShadowNode:[]}},"_createHooksMap");o(bZ,"createDOMPurify");Zs=bZ()});var KQ={};ir(KQ,{ParseError:()=>Pt,SETTINGS_SCHEMA:()=>Uk,__defineFunction:()=>Ut,__defineMacro:()=>Ce,__defineSymbol:()=>Y,__domTree:()=>XQ,__parse:()=>HQ,__renderToDomTree:()=>fS,__renderToHTMLTree:()=>YQ,__setFontMetrics:()=>tQ,default:()=>GVe,render:()=>o8,renderToString:()=>qQ,version:()=>jQ});function fGe(e){if("default"in e)return e.default;var t=e.type,r=Array.isArray(t)?t[0]:t;if(typeof r!="string")return r.enum[0];switch(r){case"boolean":return!1;case"string":return"";case"number":return 0;case"object":return{}}}function bGe(e){for(var t=0;t<I7.length;t++)for(var r=I7[t],n=0;n<r.blocks.length;n++){var i=r.blocks[n];if(e>=i[0]&&e<=i[1])return r.name}return null}function KZ(e){for(var t=0;t<Hk.length;t+=2)if(e>=Hk[t]&&e<=Hk[t+1])return!0;return!1}function NGe(e){if(e instanceof ws)return e;throw new Error("Expected symbolNode but got "+String(e)+".")}function PGe(e){if(e instanceof Ad)return e;throw new Error("Expected span<HtmlDomNode> but got "+String(e)+".")}function tQ(e,t){Fc[e]=t}function X7(e,t,r){if(!Fc[t])throw new Error("Font metrics not found for font: "+t+".");var n=e.charCodeAt(0),i=Fc[t][n];if(!i&&e[0]in CZ&&(n=CZ[e[0]].charCodeAt(0),i=Fc[t][n]),!i&&r==="text"&&KZ(n)&&(i=Fc[t][77]),i)return{depth:i[0],height:i[1],italic:i[2],skew:i[3],width:i[4]}}function BGe(e){var t;if(e>=5?t=0:e>=3?t=1:t=2,!v7[t]){var r=v7[t]={cssEmPerMu:Mk.quad[t]/18};for(var n in Mk)Mk.hasOwnProperty(n)&&(r[n]=Mk[n][t])}return v7[t]}function Y(e,t,r,n,i,a){ui[e][i]={font:t,group:r,replace:n},a&&n&&(ui[e][n]=ui[e][i])}function Ut(e){for(var{type:t,names:r,props:n,handler:i,htmlBuilder:a,mathmlBuilder:s}=e,l={type:t,numArgs:n.numArgs,argTypes:n.argTypes,allowedInArgument:!!n.allowedInArgument,allowedInText:!!n.allowedInText,allowedInMath:n.allowedInMath===void 0?!0:n.allowedInMath,numOptionalArgs:n.numOptionalArgs||0,infix:!!n.infix,primitive:!!n.primitive,handler:i},u=0;u<r.length;++u)oQ[r[u]]=l;t&&(a&&(Xk[t]=a),s&&(Kk[t]=s))}function Gp(e){var{type:t,htmlBuilder:r,mathmlBuilder:n}=e;Ut({type:t,names:[],props:{numArgs:0},handler(){throw new Error("Should never be called.")},htmlBuilder:r,mathmlBuilder:n})}function zk(e,t){var r=Mt(["base"],e,t),n=Mt(["strut"]);return n.style.height=$t(r.height+r.depth),r.depth&&(n.style.verticalAlign=$t(-r.depth)),r.children.unshift(n),r}function z7(e,t){var r=null;e.length===1&&e[0].type==="tag"&&(r=e[0].tag,e=e[0].body);var n=ia(e,t,"root"),i;n.length===2&&n[1].hasClass("tag")&&(i=n.pop());for(var a=[],s=[],l=0;l<n.length;l++)if(s.push(n[l]),n[l].hasClass("mbin")||n[l].hasClass("mrel")||n[l].hasClass("allowbreak")){for(var u=!1;l<n.length-1&&n[l+1].hasClass("mspace")&&!n[l+1].hasClass("newline");)l++,s.push(n[l]),n[l].hasClass("nobreak")&&(u=!0);u||(a.push(zk(s,t)),s=[])}else n[l].hasClass("newline")&&(s.pop(),s.length>0&&(a.push(zk(s,t)),s=[]),a.push(n[l]));s.length>0&&a.push(zk(s,t));var h;r?(h=zk(ia(r,t,!0),t),h.classes=["tag"],a.push(h)):i&&a.push(i);var d=Mt(["katex-html"],a);if(d.setAttribute("aria-hidden","true"),h){var f=h.children[0];f.style.height=$t(d.height+d.depth),d.depth&&(f.style.verticalAlign=$t(-d.depth))}return d}function cQ(e){return new Sd(e)}function T7(e){if(!e)return!1;if(e.type==="mi"&&e.children.length===1){var t=e.children[0];return t instanceof Ei&&t.text==="."}else if(e.type==="mo"&&e.children.length===1&&e.getAttribute("separator")==="true"&&e.getAttribute("lspace")==="0em"&&e.getAttribute("rspace")==="0em"){var r=e.children[0];return r instanceof Ei&&r.text===","}else return!1}function EZ(e,t,r,n,i){var a=Po(e,r),s;a.length===1&&a[0]instanceof Nt&&QGe.has(a[0].type)?s=a[0]:s=new Nt("mrow",a);var l=new Nt("annotation",[new Ei(t)]);l.setAttribute("encoding","application/x-tex");var u=new Nt("semantics",[s,l]),h=new Nt("math",[u]);h.setAttribute("xmlns","http://www.w3.org/1998/Math/MathML"),n&&h.setAttribute("display","block");var d=i?"katex":"katex-mathml";return Mt([d],[h])}function Ur(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 sS(e){var t=oS(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 oS(e){return e&&(e.type==="atom"||FGe.hasOwnProperty(e.type))?e:null}function pQ(e,t){var r=ia(e.body,t,!0);return Mt([e.mclass],r,t)}function mQ(e,t){var r,n=Po(e.body,t);return e.mclass==="minner"?r=new Nt("mpadded",n):e.mclass==="mord"?e.isCharacterBox?(r=n[0],r.type="mi"):r=new Nt("mi",n):(e.isCharacterBox?(r=n[0],r.type="mo"):r=new Nt("mo",n),e.mclass==="mbin"?(r.attributes.lspace="0.22em",r.attributes.rspace="0.22em"):e.mclass==="mpunct"?(r.attributes.lspace="0em",r.attributes.rspace="0.17em"):e.mclass==="mopen"||e.mclass==="mclose"?(r.attributes.lspace="0em",r.attributes.rspace="0em"):e.mclass==="minner"&&(r.attributes.lspace="0.0556em",r.attributes.width="+0.1111em")),r}function cVe(e,t,r){var n=oVe[e];switch(n){case"\\\\cdrightarrow":case"\\\\cdleftarrow":return r.callFunction(n,[t[0]],[t[1]]);case"\\uparrow":case"\\downarrow":{var i=r.callFunction("\\\\cdleft",[t[0]],[]),a={type:"atom",text:n,mode:"math",family:"rel"},s=r.callFunction("\\Big",[a],[]),l=r.callFunction("\\\\cdright",[t[1]],[]),u={type:"ordgroup",mode:"math",body:[i,s,l]};return r.callFunction("\\\\cdparent",[u],[])}case"\\\\cdlongequal":return r.callFunction("\\\\cdlongequal",[],[]);case"\\Vert":{var h={type:"textord",text:"\\Vert",mode:"math"};return r.callFunction("\\Big",[h],[])}default:return{type:"textord",text:" ",mode:"math"}}}function uVe(e){var t=[];for(e.gullet.beginGroup(),e.gullet.macros.set("\\cr","\\\\\\relax"),e.gullet.beginGroup();;){t.push(e.parseExpression(!1,"\\\\")),e.gullet.endGroup(),e.gullet.beginGroup();var r=e.fetch().text;if(r==="&"||r==="\\\\")e.consume();else if(r==="\\end"){t[t.length-1].length===0&&t.pop();break}else throw new Pt("Expected \\\\ or \\cr or \\end",e.nextToken)}for(var n=[],i=[n],a=0;a<t.length;a++){for(var s=t[a],l=_Z(),u=0;u<s.length;u++)if(!LZ(s[u]))l.body.push(s[u]);else{n.push(l),u+=1;var h=sS(s[u]).text,d=new Array(2);if(d[0]={type:"ordgroup",mode:"math",body:[]},d[1]={type:"ordgroup",mode:"math",body:[]},!"=|.".includes(h))if("<>AV".includes(h))for(var f=0;f<2;f++){for(var p=!0,m=u+1;m<s.length;m++){if(lVe(s[m],h)){p=!1,u=m;break}if(LZ(s[m]))throw new Pt("Missing a "+h+" character to complete a CD arrow.",s[m]);d[f].body.push(s[m])}if(p)throw new Pt("Missing a "+h+" character to complete a CD arrow.",s[u])}else throw new Pt('Expected one of "<>AV=|." after @',s[u]);var g=cVe(h,d,e),y={type:"styling",body:[g],mode:"math",style:"display"};n.push(y),l=_Z()}a%2===0?n.push(l):n.shift(),n=[],i.push(n)}e.gullet.endGroup(),e.gullet.endGroup();var v=new Array(i[0].length).fill({type:"align",align:"c",pregap:.25,postgap:.25});return{type:"array",mode:"math",body:i,arraystretch:1,addJot:!0,rowGaps:[null],cols:v,colSeparationType:"CD",hLinesBeforeRow:new Array(i.length+1).fill([])}}function cS(e,t){var r=oS(e);if(r&&TVe.has(r.text))return r;throw r?new Pt("Invalid delimiter '"+r.text+"' after '"+t.funcName+"'",e):new Pt("Invalid delimiter type '"+e.type+"'",e)}function IZ(e){if(!e.body)throw new Error("Bug: The leftright ParseNode wasn't fully parsed.")}function Gc(e){for(var{type:t,names:r,props:n,handler:i,htmlBuilder:a,mathmlBuilder:s}=e,l={type:t,numArgs:n.numArgs||0,allowedInText:!1,numOptionalArgs:0,handler:i},u=0;u<r.length;++u)RQ[r[u]]=l;a&&(Xk[t]=a),s&&(Kk[t]=s)}function Ce(e,t){_Q[e]=t}function MZ(e){var t=[];e.consumeSpaces();var r=e.fetch().text;for(r==="\\relax"&&(e.consume(),e.consumeSpaces(),r=e.fetch().text);r==="\\hline"||r==="\\hdashline";)e.consume(),t.push(r==="\\hdashline"),e.consumeSpaces(),r=e.fetch().text;return t}function r8(e){if(!e.includes("ed"))return!e.includes("*")}function Ld(e,t,r){var{hskipBeforeAndAfter:n,addJot:i,cols:a,arraystretch:s,colSeparationType:l,autoTag:u,singleRow:h,emptySingleRow:d,maxNumCols:f,leqno:p}=t;if(e.gullet.beginGroup(),h||e.gullet.macros.set("\\cr","\\\\\\relax"),!s){var m=e.gullet.expandMacroAsText("\\arraystretch");if(m==null)s=1;else if(s=parseFloat(m),!s||s<0)throw new Pt("Invalid \\arraystretch: "+m)}e.gullet.beginGroup();var g=[],y=[g],v=[],x=[],b=u!=null?[]:void 0;function T(){u&&e.gullet.macros.set("\\@eqnsw","1",!0)}o(T,"beginRow");function k(){b&&(e.gullet.macros.get("\\df@tag")?(b.push(e.subparse([new Mo("\\df@tag")])),e.gullet.macros.set("\\df@tag",void 0,!0)):b.push(!!u&&e.gullet.macros.get("\\@eqnsw")==="1"))}for(o(k,"endRow"),T(),x.push(MZ(e));;){var C=e.parseExpression(!1,h?"\\end":"\\\\");e.gullet.endGroup(),e.gullet.beginGroup();var w={type:"ordgroup",mode:e.mode,body:C};r&&(w={type:"styling",mode:e.mode,style:r,body:[w]}),g.push(w);var S=e.fetch().text;if(S==="&"){if(f&&g.length===f){if(h||l)throw new Pt("Too many tab characters: &",e.nextToken);e.settings.reportNonstrict("textEnv","Too few columns specified in the {array} column argument.")}e.consume()}else if(S==="\\end"){k(),g.length===1&&w.type==="styling"&&w.body.length===1&&w.body[0].type==="ordgroup"&&w.body[0].body.length===0&&(y.length>1||!d)&&y.pop(),x.length<y.length+1&&x.push([]);break}else if(S==="\\\\"){e.consume();var R=void 0;e.gullet.future().text!==" "&&(R=e.parseSizeGroup(!0)),v.push(R?R.value:null),k(),x.push(MZ(e)),g=[],y.push(g),T()}else throw new Pt("Expected & or \\\\ or \\cr or \\end",e.nextToken)}return e.gullet.endGroup(),e.gullet.endGroup(),{type:"array",mode:e.mode,addJot:i,arraystretch:s,body:y,cols:a,rowGaps:v,hskipBeforeAndAfter:n,hLinesBeforeRow:x,colSeparationType:l,tags:b,leqno:p}}function n8(e){return e.slice(0,1)==="d"?"display":"text"}function $Q(e,t,r){for(var n=ia(e,t,!1),i=t.sizeMultiplier/r.sizeMultiplier,a=0;a<n.length;a++){var s=n[a].classes.indexOf("sizing");s<0?Array.prototype.push.apply(n[a].classes,t.sizingClasses(r)):n[a].classes[s+1]==="reset-size"+t.size&&(n[a].classes[s+1]="reset-size"+r.size),n[a].height*=i,n[a].depth*=i}return sh(n)}var Pt,lGe,Y7,cGe,uGe,es,qk,hGe,ih,dGe,Uk,eb,Bc,j7,Yk,Y0,nh,tb,ll,j0,Cs,$c,pGe,mGe,gGe,yGe,vGe,xGe,Fr,I7,Hk,na,U0,TGe,CGe,wGe,kGe,SGe,EGe,AGe,RGe,_Ge,TZ,LGe,Sd,M7,DGe,ZZ,xi,$t,Ed,QZ,JZ,IGe,eQ,Ad,X0,N7,MGe,ws,Gl,zc,rb,OGe,Fc,Mk,CZ,v7,$Ge,FGe,ui,ee,Lt,pe,ze,hi,jt,ks,Q0,xr,Hi,No,ib,Ve,ah,Ue,rQ,wZ,x7,Nk,kZ,b7,Pk,jk,Kx,Ok,Pr,gi,Ja,th,wd,P7,Zx,Bk,$k,SZ,zGe,rS,Ts,K7,GGe,nS,VGe,nQ,Z7,Mt,Rd,K0,WGe,sh,Z0,qGe,Cn,iQ,Fk,O7,aQ,sQ,yi,zp,rh,HGe,UGe,oQ,Xk,Kk,Zk,qi,YGe,jGe,XGe,KGe,ia,B7,lQ,$7,F7,nb,wn,Nt,Ei,Qk,ZGe,QGe,cl,Q7,J7,Po,_d,Wn,JGe,AZ,RZ,Jk,uQ,hQ,eVe,tVe,rVe,iS,nVe,iVe,aS,aVe,dQ,e8,fQ,sVe,Gk,lS,oVe,_Z,LZ,lVe,gQ,yQ,G7,vQ,hVe,xQ,Qx,t8,bQ,dVe,fVe,TQ,C7,w7,V7,Vk,pVe,mVe,CQ,k7,S7,E7,gVe,wQ,yVe,kQ,Jx,SQ,vVe,xVe,EQ,bVe,AQ,W7,A7,DZ,TVe,uS,hS,RQ,_Q,Qs,Mo,dS,CVe,Vc,wVe,Wc,LQ,NZ,DQ,IQ,PZ,kVe,SVe,MQ,OZ,BZ,NQ,EVe,R7,$Z,PQ,OQ,J0,ab,AVe,RVe,BQ,_Ve,FZ,LVe,zZ,DVe,FQ,_7,L7,GZ,VZ,WZ,IVe,qZ,HZ,kd,zQ,MVe,NVe,PVe,OVe,q7,BVe,$Ve,eS,H7,FVe,UZ,i8,YZ,zVe,a8,GQ,VQ,WQ,U7,jZ,Wk,D7,XZ,tS,s8,o8,qQ,HQ,UQ,fS,YQ,jQ,XQ,GVe,ZQ=F(()=>{"use strict";Pt=class e extends Error{static{o(this,"ParseError")}constructor(t,r){var n="KaTeX parse error: "+t,i,a,s=r&&r.loc;if(s&&s.start<=s.end){var l=s.lexer.input;i=s.start,a=s.end,i===l.length?n+=" at end of input: ":n+=" at position "+(i+1)+": ";var u=l.slice(i,a).replace(/[^]/g,"$&\u0332"),h;i>15?h="\u2026"+l.slice(i-15,i):h=l.slice(0,i);var d;a+15<l.length?d=l.slice(a,a+15)+"\u2026":d=l.slice(a),n+=h+u+d}super(n),this.name="ParseError",Object.setPrototypeOf(this,e.prototype),this.position=i,i!=null&&a!=null&&(this.length=a-i),this.rawMessage=t}},lGe=/([A-Z])/g,Y7=o(e=>e.replace(lGe,"-$1").toLowerCase(),"hyphenate"),cGe={"&":"&amp;",">":"&gt;","<":"&lt;",'"':"&quot;","'":"&#x27;"},uGe=/[&><"']/g,es=o(e=>String(e).replace(uGe,t=>cGe[t]),"escape"),qk=o(e=>e.type==="ordgroup"||e.type==="color"?e.body.length===1?qk(e.body[0]):e:e.type==="font"?qk(e.body):e,"getBaseElem"),hGe=new Set(["mathord","textord","atom"]),ih=o(e=>hGe.has(qk(e).type),"isCharacterBox"),dGe=o(e=>{var t=/^[\x00-\x20]*([^\\/#?]*?)(:|&#0*58|&#x0*3a|&colon)/i.exec(e);return t?t[2]!==":"||!/^[a-zA-Z][a-zA-Z0-9+\-.]*$/.test(t[1])?null:t[1].toLowerCase():"_relative"},"protocolFromUrl"),Uk={displayMode:{type:"boolean",description:"Render math in display mode, which puts the math in display style (so \\int and \\sum are large, for example), and centers the math on the page on its own line.",cli:"-d, --display-mode"},output:{type:{enum:["htmlAndMathml","html","mathml"]},description:"Determines the markup language of the output.",cli:"-F, --format <type>"},leqno:{type:"boolean",description:"Render display math in leqno style (left-justified tags)."},fleqn:{type:"boolean",description:"Render display math flush left."},throwOnError:{type:"boolean",default:!0,cli:"-t, --no-throw-on-error",cliDescription:"Render errors (in the color given by --error-color) instead of throwing a ParseError exception when encountering an error."},errorColor:{type:"string",default:"#cc0000",cli:"-c, --error-color <color>",cliDescription:"A color string given in the format 'rgb' or 'rrggbb' (no #). This option determines the color of errors rendered by the -t option.",cliProcessor:o(e=>"#"+e,"cliProcessor")},macros:{type:"object",cli:"-m, --macro <def>",cliDescription:"Define custom macro of the form '\\foo:expansion' (use multiple -m arguments for multiple macros).",cliDefault:[],cliProcessor:o((e,t)=>(t.push(e),t),"cliProcessor")},minRuleThickness:{type:"number",description:"Specifies a minimum thickness, in ems, for fraction lines, `\\sqrt` top lines, `{array}` vertical lines, `\\hline`, `\\hdashline`, `\\underline`, `\\overline`, and the borders of `\\fbox`, `\\boxed`, and `\\fcolorbox`.",processor:o(e=>Math.max(0,e),"processor"),cli:"--min-rule-thickness <size>",cliProcessor:parseFloat},colorIsTextColor:{type:"boolean",description:"Makes \\color behave like LaTeX's 2-argument \\textcolor, instead of LaTeX's one-argument \\color mode change.",cli:"-b, --color-is-text-color"},strict:{type:[{enum:["warn","ignore","error"]},"boolean","function"],description:"Turn on strict / LaTeX faithfulness mode, which throws an error if the input uses features that are not supported by LaTeX.",cli:"-S, --strict",cliDefault:!1},trust:{type:["boolean","function"],description:"Trust the input, enabling all HTML features such as \\url.",cli:"-T, --trust"},maxSize:{type:"number",default:1/0,description:"If non-zero, all user-specified sizes, e.g. in \\rule{500em}{500em}, will be capped to maxSize ems. Otherwise, elements and spaces can be arbitrarily large",processor:o(e=>Math.max(0,e),"processor"),cli:"-s, --max-size <n>",cliProcessor:parseInt},maxExpand:{type:"number",default:1e3,description:"Limit the number of macro expansions to the specified number, to prevent e.g. infinite macro loops. If set to Infinity, the macro expander will try to fully expand as in LaTeX.",processor:o(e=>Math.max(0,e),"processor"),cli:"-e, --max-expand <n>",cliProcessor:o(e=>e==="Infinity"?1/0:parseInt(e),"cliProcessor")},globalGroup:{type:"boolean",cli:!1}};o(fGe,"getDefaultValue");eb=class{static{o(this,"Settings")}constructor(t){t===void 0&&(t={}),t=t||{};for(var r of Object.keys(Uk)){var n=Uk[r],i=t[r];this[r]=i!==void 0?n.processor?n.processor(i):i:fGe(n)}}reportNonstrict(t,r,n){var i=this.strict;if(typeof i=="function"&&(i=i(t,r,n)),!(!i||i==="ignore")){if(i===!0||i==="error")throw new Pt("LaTeX-incompatible input and strict mode is set to 'error': "+(r+" ["+t+"]"),n);i==="warn"?typeof console<"u"&&console.warn("LaTeX-incompatible input and strict mode is set to 'warn': "+(r+" ["+t+"]")):typeof console<"u"&&console.warn("LaTeX-incompatible input and strict mode is set to "+("unrecognized '"+i+"': "+r+" ["+t+"]"))}}useStrictBehavior(t,r,n){var i=this.strict;if(typeof i=="function")try{i=i(t,r,n)}catch{i="error"}return!i||i==="ignore"?!1:i===!0||i==="error"?!0:i==="warn"?(typeof console<"u"&&console.warn("LaTeX-incompatible input and strict mode is set to 'warn': "+(r+" ["+t+"]")),!1):(typeof console<"u"&&console.warn("LaTeX-incompatible input and strict mode is set to "+("unrecognized '"+i+"': "+r+" ["+t+"]")),!1)}isTrusted(t){if("url"in t&&t.url&&!t.protocol){var r=dGe(t.url);if(r==null)return!1;t.protocol=r}var n=typeof this.trust=="function"?this.trust(t):this.trust;return!!n}},Bc=class{static{o(this,"Style")}constructor(t,r,n){this.id=t,this.size=r,this.cramped=n}sup(){return $c[pGe[this.id]]}sub(){return $c[mGe[this.id]]}fracNum(){return $c[gGe[this.id]]}fracDen(){return $c[yGe[this.id]]}cramp(){return $c[vGe[this.id]]}text(){return $c[xGe[this.id]]}isTight(){return this.size>=2}},j7=0,Yk=1,Y0=2,nh=3,tb=4,ll=5,j0=6,Cs=7,$c=[new Bc(j7,0,!1),new Bc(Yk,0,!0),new Bc(Y0,1,!1),new Bc(nh,1,!0),new Bc(tb,2,!1),new Bc(ll,2,!0),new Bc(j0,3,!1),new Bc(Cs,3,!0)],pGe=[tb,ll,tb,ll,j0,Cs,j0,Cs],mGe=[ll,ll,ll,ll,Cs,Cs,Cs,Cs],gGe=[Y0,nh,tb,ll,j0,Cs,j0,Cs],yGe=[nh,nh,ll,ll,Cs,Cs,Cs,Cs],vGe=[Yk,Yk,nh,nh,ll,ll,Cs,Cs],xGe=[j7,Yk,Y0,nh,Y0,nh,Y0,nh],Fr={DISPLAY:$c[j7],TEXT:$c[Y0],SCRIPT:$c[tb],SCRIPTSCRIPT:$c[j0]},I7=[{name:"latin",blocks:[[256,591],[768,879]]},{name:"cyrillic",blocks:[[1024,1279]]},{name:"armenian",blocks:[[1328,1423]]},{name:"brahmic",blocks:[[2304,4255]]},{name:"georgian",blocks:[[4256,4351]]},{name:"cjk",blocks:[[12288,12543],[19968,40879],[65280,65376]]},{name:"hangul",blocks:[[44032,55215]]}];o(bGe,"scriptFromCodepoint");Hk=[];I7.forEach(e=>e.blocks.forEach(t=>Hk.push(...t)));o(KZ,"supportedCodepoint");na=o(e=>e+" "+e,"doubleBrushStroke"),U0=80,TGe=o(function(t,r){return"M95,"+(622+t+r)+`
 c-2.7,0,-7.17,-2.7,-13.5,-8c-5.8,-5.3,-9.5,-10,-9.5,-14
 c0,-2,0.3,-3.3,1,-4c1.3,-2.7,23.83,-20.7,67.5,-54
 c44.2,-33.3,65.8,-50.3,66.5,-51c1.3,-1.3,3,-2,5,-2c4.7,0,8.7,3.3,12,10
@@ -10,7 +10,7 @@
 H400000v`+(40+t)+`H845.2724
 s-225.272,467,-225.272,467s-235,486,-235,486c-2.7,4.7,-9,7,-19,7
 c-6,0,-10,-1,-12,-3s-194,-422,-194,-422s-65,47,-65,47z
-M`+(834+t)+" "+r+"h400000v"+(40+t)+"h-400000z"},"sqrtMain"),EIe=o(function(t,r){return"M263,"+(601+t+r)+`c0.7,0,18,39.7,52,119
+M`+(834+t)+" "+r+"h400000v"+(40+t)+"h-400000z"},"sqrtMain"),CGe=o(function(t,r){return"M263,"+(601+t+r)+`c0.7,0,18,39.7,52,119
 c34,79.3,68.167,158.7,102.5,238c34.3,79.3,51.8,119.3,52.5,120
 c340,-704.7,510.7,-1060.3,512,-1067
 l`+t/2.084+" -"+t+`
@@ -20,7 +20,7 @@
 c-22.3,46.7,-33.8,70.3,-34.5,71c-4.7,4.7,-12.3,7,-23,7s-12,-1,-12,-1
 s-109,-253,-109,-253c-72.7,-168,-109.3,-252,-110,-252c-10.7,8,-22,16.7,-34,26
 c-22,17.3,-33.3,26,-34,26s-26,-26,-26,-26s76,-59,76,-59s76,-60,76,-60z
-M`+(1001+t)+" "+r+"h400000v"+(40+t)+"h-400000z"},"sqrtSize1"),AIe=o(function(t,r){return"M983 "+(10+t+r)+`
+M`+(1001+t)+" "+r+"h400000v"+(40+t)+"h-400000z"},"sqrtSize1"),wGe=o(function(t,r){return"M983 "+(10+t+r)+`
 l`+t/3.13+" -"+t+`
 c4,-6.7,10,-10,18,-10 H400000v`+(40+t)+`
 H1013.1s-83.4,268,-264.1,840c-180.7,572,-277,876.3,-289,913c-4.7,4.7,-12.7,7,-24,7
@@ -29,7 +29,7 @@
 c26.7,-32.7,52,-63,76,-91s52,-60,52,-60s208,722,208,722
 c56,-175.3,126.3,-397.3,211,-666c84.7,-268.7,153.8,-488.2,207.5,-658.5
 c53.7,-170.3,84.5,-266.8,92.5,-289.5z
-M`+(1001+t)+" "+r+"h400000v"+(40+t)+"h-400000z"},"sqrtSize2"),_Ie=o(function(t,r){return"M424,"+(2398+t+r)+`
+M`+(1001+t)+" "+r+"h400000v"+(40+t)+"h-400000z"},"sqrtSize2"),kGe=o(function(t,r){return"M424,"+(2398+t+r)+`
 c-1.3,-0.7,-38.5,-172,-111.5,-514c-73,-342,-109.8,-513.3,-110.5,-514
 c0,-2,-10.7,14.3,-32,49c-4.7,7.3,-9.8,15.7,-15.5,25c-5.7,9.3,-9.8,16,-12.5,20
 s-5,7,-5,7c-4,-3.3,-8.3,-7.7,-13,-13s-13,-13,-13,-13s76,-122,76,-122s77,-121,77,-121
@@ -39,18 +39,18 @@
 s-87.3,378.7,-272.6,1166c-185.3,787.3,-279.3,1182.3,-282,1185
 c-2,6,-10,9,-24,9
 c-8,0,-12,-0.7,-12,-2z M`+(1001+t)+" "+r+`
-h400000v`+(40+t)+"h-400000z"},"sqrtSize3"),DIe=o(function(t,r){return"M473,"+(2713+t+r)+`
+h400000v`+(40+t)+"h-400000z"},"sqrtSize3"),SGe=o(function(t,r){return"M473,"+(2713+t+r)+`
 c339.3,-1799.3,509.3,-2700,510,-2702 l`+t/5.298+" -"+t+`
 c3.3,-7.3,9.3,-11,18,-11 H400000v`+(40+t)+`H1017.7
 s-90.5,478,-276.2,1466c-185.7,988,-279.5,1483,-281.5,1485c-2,6,-10,9,-24,9
 c-8,0,-12,-0.7,-12,-2c0,-1.3,-5.3,-32,-16,-92c-50.7,-293.3,-119.7,-693.3,-207,-1200
 c0,-1.3,-5.3,8.7,-16,30c-10.7,21.3,-21.3,42.7,-32,64s-16,33,-16,33s-26,-26,-26,-26
 s76,-153,76,-153s77,-151,77,-151c0.7,0.7,35.7,202,105,604c67.3,400.7,102,602.7,104,
-606zM`+(1001+t)+" "+r+"h400000v"+(40+t)+"H1017.7z"},"sqrtSize4"),RIe=o(function(t){var r=t/2;return"M400000 "+t+" H0 L"+r+" 0 l65 45 L145 "+(t-80)+" H400000z"},"phasePath"),LIe=o(function(t,r,i){var n=i-54-r-t;return"M702 "+(t+r)+"H400000"+(40+t)+`
-H742v`+n+`l-4 4-4 4c-.667.7 -2 1.5-4 2.5s-4.167 1.833-6.5 2.5-5.5 1-9.5 1
+606zM`+(1001+t)+" "+r+"h400000v"+(40+t)+"H1017.7z"},"sqrtSize4"),EGe=o(function(t){var r=t/2;return"M400000 "+t+" H0 L"+r+" 0 l65 45 L145 "+(t-80)+" H400000z"},"phasePath"),AGe=o(function(t,r,n){var i=n-54-r-t;return"M702 "+(t+r)+"H400000"+(40+t)+`
+H742v`+i+`l-4 4-4 4c-.667.7 -2 1.5-4 2.5s-4.167 1.833-6.5 2.5-5.5 1-9.5 1
 h-12l-28-84c-16.667-52-96.667 -294.333-240-727l-212 -643 -85 170
 c-4-3.333-8.333-7.667-13 -13l-13-13l77-155 77-156c66 199.333 139 419.667
-219 661 l218 661zM702 `+r+"H400000v"+(40+t)+"H742z"},"sqrtTall"),MIe=o(function(t,r,i){r=1e3*r;var n="";switch(t){case"sqrtMain":n=SIe(r,Nm);break;case"sqrtSize1":n=EIe(r,Nm);break;case"sqrtSize2":n=AIe(r,Nm);break;case"sqrtSize3":n=_Ie(r,Nm);break;case"sqrtSize4":n=DIe(r,Nm);break;case"sqrtTall":n=LIe(r,Nm,i)}return n},"sqrtPath"),NIe=o(function(t,r){switch(t){case"\u239C":return"M291 0 H417 V"+r+" H291z M291 0 H417 V"+r+" H291z";case"\u2223":return"M145 0 H188 V"+r+" H145z M145 0 H188 V"+r+" H145z";case"\u2225":return"M145 0 H188 V"+r+" H145z M145 0 H188 V"+r+" H145z"+("M367 0 H410 V"+r+" H367z M367 0 H410 V"+r+" H367z");case"\u239F":return"M457 0 H583 V"+r+" H457z M457 0 H583 V"+r+" H457z";case"\u23A2":return"M319 0 H403 V"+r+" H319z M319 0 H403 V"+r+" H319z";case"\u23A5":return"M263 0 H347 V"+r+" H263z M263 0 H347 V"+r+" H263z";case"\u23AA":return"M384 0 H504 V"+r+" H384z M384 0 H504 V"+r+" H384z";case"\u23D0":return"M312 0 H355 V"+r+" H312z M312 0 H355 V"+r+" H312z";case"\u2016":return"M257 0 H300 V"+r+" H257z M257 0 H300 V"+r+" H257z"+("M478 0 H521 V"+r+" H478z M478 0 H521 V"+r+" H478z");default:return""}},"innerPath"),dY={doubleleftarrow:`M262 157
+219 661 l218 661zM702 `+r+"H400000v"+(40+t)+"H742z"},"sqrtTall"),RGe=o(function(t,r,n){r=1e3*r;var i="";switch(t){case"sqrtMain":i=TGe(r,U0);break;case"sqrtSize1":i=CGe(r,U0);break;case"sqrtSize2":i=wGe(r,U0);break;case"sqrtSize3":i=kGe(r,U0);break;case"sqrtSize4":i=SGe(r,U0);break;case"sqrtTall":i=AGe(r,U0,n)}return i},"sqrtPath"),_Ge=o(function(t,r){switch(t){case"\u239C":return na("M291 0 H417 V"+r+" H291z");case"\u2223":return na("M145 0 H188 V"+r+" H145z");case"\u2225":return na("M145 0 H188 V"+r+" H145z")+na("M367 0 H410 V"+r+" H367z");case"\u239F":return na("M457 0 H583 V"+r+" H457z");case"\u23A2":return na("M319 0 H403 V"+r+" H319z");case"\u23A5":return na("M263 0 H347 V"+r+" H263z");case"\u23AA":return na("M384 0 H504 V"+r+" H384z");case"\u23D0":return na("M312 0 H355 V"+r+" H312z");case"\u2016":return na("M257 0 H300 V"+r+" H257z")+na("M478 0 H521 V"+r+" H478z");default:return""}},"innerPath"),TZ={doubleleftarrow:`M262 157
 l10-10c34-36 62.7-77 86-123 3.3-8 5-13.3 5-16 0-5.3-6.7-8-20-8-7.3
  0-12.2.5-14.5 1.5-2.3 1-4.8 4.5-7.5 10.5-49.3 97.3-121.7 169.3-217 216-28
  14-57.3 25-88 33-6.7 2-11 3.8-13 5.5-2 1.7-3 4.2-3 7.5s1 5.8 3 7.5
@@ -96,13 +96,10 @@
 v40h399900v-40zM0 241v40h399900v-40zm0 0v40h399900v-40z`,lefthook:`M400000 281 H103s-33-11.2-61-33.5S0 197.3 0 164s14.2-61.2 42.5
 -83.5C70.8 58.2 104 47 142 47 c16.7 0 25 6.7 25 20 0 12-8.7 18.7-26 20-40 3.3
 -68.7 15.7-86 37-10 12-15 25.3-15 40 0 22.7 9.8 40.7 29.5 54 19.7 13.3 43.5 21
- 71.5 23h399859zM103 281v-40h399897v40z`,leftlinesegment:`M40 281 V428 H0 V94 H40 V241 H400000 v40z
-M40 281 V428 H0 V94 H40 V241 H400000 v40z`,leftmapsto:`M40 281 V448H0V74H40V241H400000v40z
-M40 281 V448H0V74H40V241H400000v40z`,leftToFrom:`M0 147h400000v40H0zm0 214c68 40 115.7 95.7 143 167h22c15.3 0 23
+ 71.5 23h399859zM103 281v-40h399897v40z`,leftlinesegment:na("M40 281 V428 H0 V94 H40 V241 H400000 v40z"),leftbracketunder:na("M0 0 h120 V290 H399995 v120 H0z"),leftbracketover:na("M0 440 h120 V150 H399995 v-120 H0z"),leftmapsto:na("M40 281 V448H0V74H40V241H400000v40z"),leftToFrom:`M0 147h400000v40H0zm0 214c68 40 115.7 95.7 143 167h22c15.3 0 23
 -.3 23-1 0-1.3-5.3-13.7-16-37-18-35.3-41.3-69-70-101l-7-8h399905v-40H95l7-8
 c28.7-32 52-65.7 70-101 10.7-23.3 16-35.7 16-37 0-.7-7.7-1-23-1h-22C115.7 265.3
- 68 321 0 361zm0-174v-40h399900v40zm100 154v40h399900v-40z`,longequal:`M0 50 h400000 v40H0z m0 194h40000v40H0z
-M0 50 h400000 v40H0z m0 194h40000v40H0z`,midbrace:`M200428 334
+ 68 321 0 361zm0-174v-40h399900v40zm100 154v40h399900v-40z`,longequal:na("M0 50 h400000 v40H0z m0 194h40000v40H0z"),midbrace:`M200428 334
 c-100.7-8.3-195.3-44-280-108-55.3-42-101.7-93-139-153l-9-14c-2.7 4-5.7 8.7-9 14
 -53.3 86.7-123.7 153-211 199-66.7 36-137.3 56.3-212 62H0V214h199568c178.3-11.7
  311.7-78.3 403-201 6-8 9.7-12 11-12 .7-.7 6.7-1 18-1s17.3.3 18 1c1.3 0 5 4 11
@@ -151,8 +148,7 @@
 m0-194v40h400000v-40zm0 0v40h400000v-40z`,righthook:`M399859 241c-764 0 0 0 0 0 40-3.3 68.7-15.7 86-37 10-12 15-25.3
  15-40 0-22.7-9.8-40.7-29.5-54-19.7-13.3-43.5-21-71.5-23-17.3-1.3-26-8-26-20 0
 -13.3 8.7-20 26-20 38 0 71 11.2 99 33.5 0 0 7 5.6 21 16.7 14 11.2 21 33.5 21
- 66.8s-14 61.2-42 83.5c-28 22.3-61 33.5-99 33.5L0 241z M0 281v-40h399859v40z`,rightlinesegment:`M399960 241 V94 h40 V428 h-40 V281 H0 v-40z
-M399960 241 V94 h40 V428 h-40 V281 H0 v-40z`,rightToFrom:`M400000 167c-70.7-42-118-97.7-142-167h-23c-15.3 0-23 .3-23
+ 66.8s-14 61.2-42 83.5c-28 22.3-61 33.5-99 33.5L0 241z M0 281v-40h399859v40z`,rightlinesegment:na("M399960 241 V94 h40 V428 h-40 V281 H0 v-40z"),rightbracketunder:na("M399995 0 h-120 V290 H0 v120 H400000z"),rightbracketover:na("M399995 440 h-120 V150 H0 v-120 H399995z"),rightToFrom:`M400000 167c-70.7-42-118-97.7-142-167h-23c-15.3 0-23 .3-23
  1 0 1.3 5.3 13.7 16 37 18 35.3 41.3 69 70 101l7 8H0v40h399905l-7 8c-28.7 32
 -52 65.7-70 101-10.7 23.3-16 35.7-16 37 0 .7 7.7 1 23 1h23c24-69.3 71.3-125 142
 -167z M100 147v40h399900v-40zM0 341v40h399900v-40z`,twoheadleftarrow:`M0 167c68 40
@@ -225,7 +221,7 @@
 c4.7,-4.7,7,-9.3,7,-14c0,-9.3,-3.7,-15.3,-11,-18c-92.7,-56.7,-159,-133.7,-199,
 -231c-3.3,-9.3,-6,-14.7,-8,-16c-2,-1.3,-7,-2,-15,-2c-10.7,0,-16.7,2,-18,6
 c-2,2.7,-1,9.7,3,21c15.3,42,36.7,81.8,64,119.5c27.3,37.7,58,69.2,92,94.5z
-M500 241 v40 H399408 v-40z M500 435 v40 H400000 v-40z`},IIe=o(function(t,r){switch(t){case"lbrack":return"M403 1759 V84 H666 V0 H319 V1759 v"+r+` v1759 h347 v-84
+M500 241 v40 H399408 v-40z M500 435 v40 H400000 v-40z`},LGe=o(function(t,r){switch(t){case"lbrack":return"M403 1759 V84 H666 V0 H319 V1759 v"+r+` v1759 h347 v-84
 H403z M403 1759 V0 H319 V1759 v`+r+" v1759 h84z";case"rbrack":return"M347 1759 V0 H0 V84 H263 V1759 v"+r+` v1759 H0 v84 H347z
 M347 1759 V0 H263 V1759 v`+r+" v1759 h84z";case"vert":return"M145 15 v585 v"+r+` v585 c2.667,10,9.667,15,21,15
 c10,0,16.667,-5,20,-15 v-585 v`+-r+` v-585 c-2.667,-10,-9.667,-15,-21,-15
@@ -253,25 +249,25 @@
 c0,7.3,5.7,11,17,11c0,0,11,0,11,0c9.3,0,14.3,-0.3,15,-1c5.3,-5.3,10.3,-11,15,-17
 c242.7,-294.7,395.3,-681.7,458,-1161c21.3,-164.7,33.3,-350.7,36,-558
 l0,-`+(r+144)+`c-2,-159.3,-10,-310.7,-24,-454c-53.3,-528,-210,-949.7,
--470,-1265c-4.7,-6,-9.7,-11.7,-15,-17c-0.7,-0.7,-6.7,-1,-18,-1z`;default:throw new Error("Unknown stretchy delimiter.")}},"tallDelim"),Vf=class{static{o(this,"DocumentFragment")}constructor(t){this.children=void 0,this.classes=void 0,this.height=void 0,this.depth=void 0,this.maxFontSize=void 0,this.style=void 0,this.children=t,this.classes=[],this.height=0,this.depth=0,this.maxFontSize=0,this.style={}}hasClass(t){return this.classes.includes(t)}toNode(){for(var t=document.createDocumentFragment(),r=0;r<this.children.length;r++)t.appendChild(this.children[r].toNode());return t}toMarkup(){for(var t="",r=0;r<this.children.length;r++)t+=this.children[r].toMarkup();return t}toText(){var t=o(r=>r.toText(),"toText");return this.children.map(t).join("")}},nc={"AMS-Regular":{32:[0,0,0,0,.25],65:[0,.68889,0,0,.72222],66:[0,.68889,0,0,.66667],67:[0,.68889,0,0,.72222],68:[0,.68889,0,0,.72222],69:[0,.68889,0,0,.66667],70:[0,.68889,0,0,.61111],71:[0,.68889,0,0,.77778],72:[0,.68889,0,0,.77778],73:[0,.68889,0,0,.38889],74:[.16667,.68889,0,0,.5],75:[0,.68889,0,0,.77778],76:[0,.68889,0,0,.66667],77:[0,.68889,0,0,.94445],78:[0,.68889,0,0,.72222],79:[.16667,.68889,0,0,.77778],80:[0,.68889,0,0,.61111],81:[.16667,.68889,0,0,.77778],82:[0,.68889,0,0,.72222],83:[0,.68889,0,0,.55556],84:[0,.68889,0,0,.66667],85:[0,.68889,0,0,.72222],86:[0,.68889,0,0,.72222],87:[0,.68889,0,0,1],88:[0,.68889,0,0,.72222],89:[0,.68889,0,0,.72222],90:[0,.68889,0,0,.66667],107:[0,.68889,0,0,.55556],160:[0,0,0,0,.25],165:[0,.675,.025,0,.75],174:[.15559,.69224,0,0,.94666],240:[0,.68889,0,0,.55556],295:[0,.68889,0,0,.54028],710:[0,.825,0,0,2.33334],732:[0,.9,0,0,2.33334],770:[0,.825,0,0,2.33334],771:[0,.9,0,0,2.33334],989:[.08167,.58167,0,0,.77778],1008:[0,.43056,.04028,0,.66667],8245:[0,.54986,0,0,.275],8463:[0,.68889,0,0,.54028],8487:[0,.68889,0,0,.72222],8498:[0,.68889,0,0,.55556],8502:[0,.68889,0,0,.66667],8503:[0,.68889,0,0,.44445],8504:[0,.68889,0,0,.66667],8513:[0,.68889,0,0,.63889],8592:[-.03598,.46402,0,0,.5],8594:[-.03598,.46402,0,0,.5],8602:[-.13313,.36687,0,0,1],8603:[-.13313,.36687,0,0,1],8606:[.01354,.52239,0,0,1],8608:[.01354,.52239,0,0,1],8610:[.01354,.52239,0,0,1.11111],8611:[.01354,.52239,0,0,1.11111],8619:[0,.54986,0,0,1],8620:[0,.54986,0,0,1],8621:[-.13313,.37788,0,0,1.38889],8622:[-.13313,.36687,0,0,1],8624:[0,.69224,0,0,.5],8625:[0,.69224,0,0,.5],8630:[0,.43056,0,0,1],8631:[0,.43056,0,0,1],8634:[.08198,.58198,0,0,.77778],8635:[.08198,.58198,0,0,.77778],8638:[.19444,.69224,0,0,.41667],8639:[.19444,.69224,0,0,.41667],8642:[.19444,.69224,0,0,.41667],8643:[.19444,.69224,0,0,.41667],8644:[.1808,.675,0,0,1],8646:[.1808,.675,0,0,1],8647:[.1808,.675,0,0,1],8648:[.19444,.69224,0,0,.83334],8649:[.1808,.675,0,0,1],8650:[.19444,.69224,0,0,.83334],8651:[.01354,.52239,0,0,1],8652:[.01354,.52239,0,0,1],8653:[-.13313,.36687,0,0,1],8654:[-.13313,.36687,0,0,1],8655:[-.13313,.36687,0,0,1],8666:[.13667,.63667,0,0,1],8667:[.13667,.63667,0,0,1],8669:[-.13313,.37788,0,0,1],8672:[-.064,.437,0,0,1.334],8674:[-.064,.437,0,0,1.334],8705:[0,.825,0,0,.5],8708:[0,.68889,0,0,.55556],8709:[.08167,.58167,0,0,.77778],8717:[0,.43056,0,0,.42917],8722:[-.03598,.46402,0,0,.5],8724:[.08198,.69224,0,0,.77778],8726:[.08167,.58167,0,0,.77778],8733:[0,.69224,0,0,.77778],8736:[0,.69224,0,0,.72222],8737:[0,.69224,0,0,.72222],8738:[.03517,.52239,0,0,.72222],8739:[.08167,.58167,0,0,.22222],8740:[.25142,.74111,0,0,.27778],8741:[.08167,.58167,0,0,.38889],8742:[.25142,.74111,0,0,.5],8756:[0,.69224,0,0,.66667],8757:[0,.69224,0,0,.66667],8764:[-.13313,.36687,0,0,.77778],8765:[-.13313,.37788,0,0,.77778],8769:[-.13313,.36687,0,0,.77778],8770:[-.03625,.46375,0,0,.77778],8774:[.30274,.79383,0,0,.77778],8776:[-.01688,.48312,0,0,.77778],8778:[.08167,.58167,0,0,.77778],8782:[.06062,.54986,0,0,.77778],8783:[.06062,.54986,0,0,.77778],8785:[.08198,.58198,0,0,.77778],8786:[.08198,.58198,0,0,.77778],8787:[.08198,.58198,0,0,.77778],8790:[0,.69224,0,0,.77778],8791:[.22958,.72958,0,0,.77778],8796:[.08198,.91667,0,0,.77778],8806:[.25583,.75583,0,0,.77778],8807:[.25583,.75583,0,0,.77778],8808:[.25142,.75726,0,0,.77778],8809:[.25142,.75726,0,0,.77778],8812:[.25583,.75583,0,0,.5],8814:[.20576,.70576,0,0,.77778],8815:[.20576,.70576,0,0,.77778],8816:[.30274,.79383,0,0,.77778],8817:[.30274,.79383,0,0,.77778],8818:[.22958,.72958,0,0,.77778],8819:[.22958,.72958,0,0,.77778],8822:[.1808,.675,0,0,.77778],8823:[.1808,.675,0,0,.77778],8828:[.13667,.63667,0,0,.77778],8829:[.13667,.63667,0,0,.77778],8830:[.22958,.72958,0,0,.77778],8831:[.22958,.72958,0,0,.77778],8832:[.20576,.70576,0,0,.77778],8833:[.20576,.70576,0,0,.77778],8840:[.30274,.79383,0,0,.77778],8841:[.30274,.79383,0,0,.77778],8842:[.13597,.63597,0,0,.77778],8843:[.13597,.63597,0,0,.77778],8847:[.03517,.54986,0,0,.77778],8848:[.03517,.54986,0,0,.77778],8858:[.08198,.58198,0,0,.77778],8859:[.08198,.58198,0,0,.77778],8861:[.08198,.58198,0,0,.77778],8862:[0,.675,0,0,.77778],8863:[0,.675,0,0,.77778],8864:[0,.675,0,0,.77778],8865:[0,.675,0,0,.77778],8872:[0,.69224,0,0,.61111],8873:[0,.69224,0,0,.72222],8874:[0,.69224,0,0,.88889],8876:[0,.68889,0,0,.61111],8877:[0,.68889,0,0,.61111],8878:[0,.68889,0,0,.72222],8879:[0,.68889,0,0,.72222],8882:[.03517,.54986,0,0,.77778],8883:[.03517,.54986,0,0,.77778],8884:[.13667,.63667,0,0,.77778],8885:[.13667,.63667,0,0,.77778],8888:[0,.54986,0,0,1.11111],8890:[.19444,.43056,0,0,.55556],8891:[.19444,.69224,0,0,.61111],8892:[.19444,.69224,0,0,.61111],8901:[0,.54986,0,0,.27778],8903:[.08167,.58167,0,0,.77778],8905:[.08167,.58167,0,0,.77778],8906:[.08167,.58167,0,0,.77778],8907:[0,.69224,0,0,.77778],8908:[0,.69224,0,0,.77778],8909:[-.03598,.46402,0,0,.77778],8910:[0,.54986,0,0,.76042],8911:[0,.54986,0,0,.76042],8912:[.03517,.54986,0,0,.77778],8913:[.03517,.54986,0,0,.77778],8914:[0,.54986,0,0,.66667],8915:[0,.54986,0,0,.66667],8916:[0,.69224,0,0,.66667],8918:[.0391,.5391,0,0,.77778],8919:[.0391,.5391,0,0,.77778],8920:[.03517,.54986,0,0,1.33334],8921:[.03517,.54986,0,0,1.33334],8922:[.38569,.88569,0,0,.77778],8923:[.38569,.88569,0,0,.77778],8926:[.13667,.63667,0,0,.77778],8927:[.13667,.63667,0,0,.77778],8928:[.30274,.79383,0,0,.77778],8929:[.30274,.79383,0,0,.77778],8934:[.23222,.74111,0,0,.77778],8935:[.23222,.74111,0,0,.77778],8936:[.23222,.74111,0,0,.77778],8937:[.23222,.74111,0,0,.77778],8938:[.20576,.70576,0,0,.77778],8939:[.20576,.70576,0,0,.77778],8940:[.30274,.79383,0,0,.77778],8941:[.30274,.79383,0,0,.77778],8994:[.19444,.69224,0,0,.77778],8995:[.19444,.69224,0,0,.77778],9416:[.15559,.69224,0,0,.90222],9484:[0,.69224,0,0,.5],9488:[0,.69224,0,0,.5],9492:[0,.37788,0,0,.5],9496:[0,.37788,0,0,.5],9585:[.19444,.68889,0,0,.88889],9586:[.19444,.74111,0,0,.88889],9632:[0,.675,0,0,.77778],9633:[0,.675,0,0,.77778],9650:[0,.54986,0,0,.72222],9651:[0,.54986,0,0,.72222],9654:[.03517,.54986,0,0,.77778],9660:[0,.54986,0,0,.72222],9661:[0,.54986,0,0,.72222],9664:[.03517,.54986,0,0,.77778],9674:[.11111,.69224,0,0,.66667],9733:[.19444,.69224,0,0,.94445],10003:[0,.69224,0,0,.83334],10016:[0,.69224,0,0,.83334],10731:[.11111,.69224,0,0,.66667],10846:[.19444,.75583,0,0,.61111],10877:[.13667,.63667,0,0,.77778],10878:[.13667,.63667,0,0,.77778],10885:[.25583,.75583,0,0,.77778],10886:[.25583,.75583,0,0,.77778],10887:[.13597,.63597,0,0,.77778],10888:[.13597,.63597,0,0,.77778],10889:[.26167,.75726,0,0,.77778],10890:[.26167,.75726,0,0,.77778],10891:[.48256,.98256,0,0,.77778],10892:[.48256,.98256,0,0,.77778],10901:[.13667,.63667,0,0,.77778],10902:[.13667,.63667,0,0,.77778],10933:[.25142,.75726,0,0,.77778],10934:[.25142,.75726,0,0,.77778],10935:[.26167,.75726,0,0,.77778],10936:[.26167,.75726,0,0,.77778],10937:[.26167,.75726,0,0,.77778],10938:[.26167,.75726,0,0,.77778],10949:[.25583,.75583,0,0,.77778],10950:[.25583,.75583,0,0,.77778],10955:[.28481,.79383,0,0,.77778],10956:[.28481,.79383,0,0,.77778],57350:[.08167,.58167,0,0,.22222],57351:[.08167,.58167,0,0,.38889],57352:[.08167,.58167,0,0,.77778],57353:[0,.43056,.04028,0,.66667],57356:[.25142,.75726,0,0,.77778],57357:[.25142,.75726,0,0,.77778],57358:[.41951,.91951,0,0,.77778],57359:[.30274,.79383,0,0,.77778],57360:[.30274,.79383,0,0,.77778],57361:[.41951,.91951,0,0,.77778],57366:[.25142,.75726,0,0,.77778],57367:[.25142,.75726,0,0,.77778],57368:[.25142,.75726,0,0,.77778],57369:[.25142,.75726,0,0,.77778],57370:[.13597,.63597,0,0,.77778],57371:[.13597,.63597,0,0,.77778]},"Caligraphic-Regular":{32:[0,0,0,0,.25],65:[0,.68333,0,.19445,.79847],66:[0,.68333,.03041,.13889,.65681],67:[0,.68333,.05834,.13889,.52653],68:[0,.68333,.02778,.08334,.77139],69:[0,.68333,.08944,.11111,.52778],70:[0,.68333,.09931,.11111,.71875],71:[.09722,.68333,.0593,.11111,.59487],72:[0,.68333,.00965,.11111,.84452],73:[0,.68333,.07382,0,.54452],74:[.09722,.68333,.18472,.16667,.67778],75:[0,.68333,.01445,.05556,.76195],76:[0,.68333,0,.13889,.68972],77:[0,.68333,0,.13889,1.2009],78:[0,.68333,.14736,.08334,.82049],79:[0,.68333,.02778,.11111,.79611],80:[0,.68333,.08222,.08334,.69556],81:[.09722,.68333,0,.11111,.81667],82:[0,.68333,0,.08334,.8475],83:[0,.68333,.075,.13889,.60556],84:[0,.68333,.25417,0,.54464],85:[0,.68333,.09931,.08334,.62583],86:[0,.68333,.08222,0,.61278],87:[0,.68333,.08222,.08334,.98778],88:[0,.68333,.14643,.13889,.7133],89:[.09722,.68333,.08222,.08334,.66834],90:[0,.68333,.07944,.13889,.72473],160:[0,0,0,0,.25]},"Fraktur-Regular":{32:[0,0,0,0,.25],33:[0,.69141,0,0,.29574],34:[0,.69141,0,0,.21471],38:[0,.69141,0,0,.73786],39:[0,.69141,0,0,.21201],40:[.24982,.74947,0,0,.38865],41:[.24982,.74947,0,0,.38865],42:[0,.62119,0,0,.27764],43:[.08319,.58283,0,0,.75623],44:[0,.10803,0,0,.27764],45:[.08319,.58283,0,0,.75623],46:[0,.10803,0,0,.27764],47:[.24982,.74947,0,0,.50181],48:[0,.47534,0,0,.50181],49:[0,.47534,0,0,.50181],50:[0,.47534,0,0,.50181],51:[.18906,.47534,0,0,.50181],52:[.18906,.47534,0,0,.50181],53:[.18906,.47534,0,0,.50181],54:[0,.69141,0,0,.50181],55:[.18906,.47534,0,0,.50181],56:[0,.69141,0,0,.50181],57:[.18906,.47534,0,0,.50181],58:[0,.47534,0,0,.21606],59:[.12604,.47534,0,0,.21606],61:[-.13099,.36866,0,0,.75623],63:[0,.69141,0,0,.36245],65:[0,.69141,0,0,.7176],66:[0,.69141,0,0,.88397],67:[0,.69141,0,0,.61254],68:[0,.69141,0,0,.83158],69:[0,.69141,0,0,.66278],70:[.12604,.69141,0,0,.61119],71:[0,.69141,0,0,.78539],72:[.06302,.69141,0,0,.7203],73:[0,.69141,0,0,.55448],74:[.12604,.69141,0,0,.55231],75:[0,.69141,0,0,.66845],76:[0,.69141,0,0,.66602],77:[0,.69141,0,0,1.04953],78:[0,.69141,0,0,.83212],79:[0,.69141,0,0,.82699],80:[.18906,.69141,0,0,.82753],81:[.03781,.69141,0,0,.82699],82:[0,.69141,0,0,.82807],83:[0,.69141,0,0,.82861],84:[0,.69141,0,0,.66899],85:[0,.69141,0,0,.64576],86:[0,.69141,0,0,.83131],87:[0,.69141,0,0,1.04602],88:[0,.69141,0,0,.71922],89:[.18906,.69141,0,0,.83293],90:[.12604,.69141,0,0,.60201],91:[.24982,.74947,0,0,.27764],93:[.24982,.74947,0,0,.27764],94:[0,.69141,0,0,.49965],97:[0,.47534,0,0,.50046],98:[0,.69141,0,0,.51315],99:[0,.47534,0,0,.38946],100:[0,.62119,0,0,.49857],101:[0,.47534,0,0,.40053],102:[.18906,.69141,0,0,.32626],103:[.18906,.47534,0,0,.5037],104:[.18906,.69141,0,0,.52126],105:[0,.69141,0,0,.27899],106:[0,.69141,0,0,.28088],107:[0,.69141,0,0,.38946],108:[0,.69141,0,0,.27953],109:[0,.47534,0,0,.76676],110:[0,.47534,0,0,.52666],111:[0,.47534,0,0,.48885],112:[.18906,.52396,0,0,.50046],113:[.18906,.47534,0,0,.48912],114:[0,.47534,0,0,.38919],115:[0,.47534,0,0,.44266],116:[0,.62119,0,0,.33301],117:[0,.47534,0,0,.5172],118:[0,.52396,0,0,.5118],119:[0,.52396,0,0,.77351],120:[.18906,.47534,0,0,.38865],121:[.18906,.47534,0,0,.49884],122:[.18906,.47534,0,0,.39054],160:[0,0,0,0,.25],8216:[0,.69141,0,0,.21471],8217:[0,.69141,0,0,.21471],58112:[0,.62119,0,0,.49749],58113:[0,.62119,0,0,.4983],58114:[.18906,.69141,0,0,.33328],58115:[.18906,.69141,0,0,.32923],58116:[.18906,.47534,0,0,.50343],58117:[0,.69141,0,0,.33301],58118:[0,.62119,0,0,.33409],58119:[0,.47534,0,0,.50073]},"Main-Bold":{32:[0,0,0,0,.25],33:[0,.69444,0,0,.35],34:[0,.69444,0,0,.60278],35:[.19444,.69444,0,0,.95833],36:[.05556,.75,0,0,.575],37:[.05556,.75,0,0,.95833],38:[0,.69444,0,0,.89444],39:[0,.69444,0,0,.31944],40:[.25,.75,0,0,.44722],41:[.25,.75,0,0,.44722],42:[0,.75,0,0,.575],43:[.13333,.63333,0,0,.89444],44:[.19444,.15556,0,0,.31944],45:[0,.44444,0,0,.38333],46:[0,.15556,0,0,.31944],47:[.25,.75,0,0,.575],48:[0,.64444,0,0,.575],49:[0,.64444,0,0,.575],50:[0,.64444,0,0,.575],51:[0,.64444,0,0,.575],52:[0,.64444,0,0,.575],53:[0,.64444,0,0,.575],54:[0,.64444,0,0,.575],55:[0,.64444,0,0,.575],56:[0,.64444,0,0,.575],57:[0,.64444,0,0,.575],58:[0,.44444,0,0,.31944],59:[.19444,.44444,0,0,.31944],60:[.08556,.58556,0,0,.89444],61:[-.10889,.39111,0,0,.89444],62:[.08556,.58556,0,0,.89444],63:[0,.69444,0,0,.54305],64:[0,.69444,0,0,.89444],65:[0,.68611,0,0,.86944],66:[0,.68611,0,0,.81805],67:[0,.68611,0,0,.83055],68:[0,.68611,0,0,.88194],69:[0,.68611,0,0,.75555],70:[0,.68611,0,0,.72361],71:[0,.68611,0,0,.90416],72:[0,.68611,0,0,.9],73:[0,.68611,0,0,.43611],74:[0,.68611,0,0,.59444],75:[0,.68611,0,0,.90138],76:[0,.68611,0,0,.69166],77:[0,.68611,0,0,1.09166],78:[0,.68611,0,0,.9],79:[0,.68611,0,0,.86388],80:[0,.68611,0,0,.78611],81:[.19444,.68611,0,0,.86388],82:[0,.68611,0,0,.8625],83:[0,.68611,0,0,.63889],84:[0,.68611,0,0,.8],85:[0,.68611,0,0,.88472],86:[0,.68611,.01597,0,.86944],87:[0,.68611,.01597,0,1.18888],88:[0,.68611,0,0,.86944],89:[0,.68611,.02875,0,.86944],90:[0,.68611,0,0,.70277],91:[.25,.75,0,0,.31944],92:[.25,.75,0,0,.575],93:[.25,.75,0,0,.31944],94:[0,.69444,0,0,.575],95:[.31,.13444,.03194,0,.575],97:[0,.44444,0,0,.55902],98:[0,.69444,0,0,.63889],99:[0,.44444,0,0,.51111],100:[0,.69444,0,0,.63889],101:[0,.44444,0,0,.52708],102:[0,.69444,.10903,0,.35139],103:[.19444,.44444,.01597,0,.575],104:[0,.69444,0,0,.63889],105:[0,.69444,0,0,.31944],106:[.19444,.69444,0,0,.35139],107:[0,.69444,0,0,.60694],108:[0,.69444,0,0,.31944],109:[0,.44444,0,0,.95833],110:[0,.44444,0,0,.63889],111:[0,.44444,0,0,.575],112:[.19444,.44444,0,0,.63889],113:[.19444,.44444,0,0,.60694],114:[0,.44444,0,0,.47361],115:[0,.44444,0,0,.45361],116:[0,.63492,0,0,.44722],117:[0,.44444,0,0,.63889],118:[0,.44444,.01597,0,.60694],119:[0,.44444,.01597,0,.83055],120:[0,.44444,0,0,.60694],121:[.19444,.44444,.01597,0,.60694],122:[0,.44444,0,0,.51111],123:[.25,.75,0,0,.575],124:[.25,.75,0,0,.31944],125:[.25,.75,0,0,.575],126:[.35,.34444,0,0,.575],160:[0,0,0,0,.25],163:[0,.69444,0,0,.86853],168:[0,.69444,0,0,.575],172:[0,.44444,0,0,.76666],176:[0,.69444,0,0,.86944],177:[.13333,.63333,0,0,.89444],184:[.17014,0,0,0,.51111],198:[0,.68611,0,0,1.04166],215:[.13333,.63333,0,0,.89444],216:[.04861,.73472,0,0,.89444],223:[0,.69444,0,0,.59722],230:[0,.44444,0,0,.83055],247:[.13333,.63333,0,0,.89444],248:[.09722,.54167,0,0,.575],305:[0,.44444,0,0,.31944],338:[0,.68611,0,0,1.16944],339:[0,.44444,0,0,.89444],567:[.19444,.44444,0,0,.35139],710:[0,.69444,0,0,.575],711:[0,.63194,0,0,.575],713:[0,.59611,0,0,.575],714:[0,.69444,0,0,.575],715:[0,.69444,0,0,.575],728:[0,.69444,0,0,.575],729:[0,.69444,0,0,.31944],730:[0,.69444,0,0,.86944],732:[0,.69444,0,0,.575],733:[0,.69444,0,0,.575],915:[0,.68611,0,0,.69166],916:[0,.68611,0,0,.95833],920:[0,.68611,0,0,.89444],923:[0,.68611,0,0,.80555],926:[0,.68611,0,0,.76666],928:[0,.68611,0,0,.9],931:[0,.68611,0,0,.83055],933:[0,.68611,0,0,.89444],934:[0,.68611,0,0,.83055],936:[0,.68611,0,0,.89444],937:[0,.68611,0,0,.83055],8211:[0,.44444,.03194,0,.575],8212:[0,.44444,.03194,0,1.14999],8216:[0,.69444,0,0,.31944],8217:[0,.69444,0,0,.31944],8220:[0,.69444,0,0,.60278],8221:[0,.69444,0,0,.60278],8224:[.19444,.69444,0,0,.51111],8225:[.19444,.69444,0,0,.51111],8242:[0,.55556,0,0,.34444],8407:[0,.72444,.15486,0,.575],8463:[0,.69444,0,0,.66759],8465:[0,.69444,0,0,.83055],8467:[0,.69444,0,0,.47361],8472:[.19444,.44444,0,0,.74027],8476:[0,.69444,0,0,.83055],8501:[0,.69444,0,0,.70277],8592:[-.10889,.39111,0,0,1.14999],8593:[.19444,.69444,0,0,.575],8594:[-.10889,.39111,0,0,1.14999],8595:[.19444,.69444,0,0,.575],8596:[-.10889,.39111,0,0,1.14999],8597:[.25,.75,0,0,.575],8598:[.19444,.69444,0,0,1.14999],8599:[.19444,.69444,0,0,1.14999],8600:[.19444,.69444,0,0,1.14999],8601:[.19444,.69444,0,0,1.14999],8636:[-.10889,.39111,0,0,1.14999],8637:[-.10889,.39111,0,0,1.14999],8640:[-.10889,.39111,0,0,1.14999],8641:[-.10889,.39111,0,0,1.14999],8656:[-.10889,.39111,0,0,1.14999],8657:[.19444,.69444,0,0,.70277],8658:[-.10889,.39111,0,0,1.14999],8659:[.19444,.69444,0,0,.70277],8660:[-.10889,.39111,0,0,1.14999],8661:[.25,.75,0,0,.70277],8704:[0,.69444,0,0,.63889],8706:[0,.69444,.06389,0,.62847],8707:[0,.69444,0,0,.63889],8709:[.05556,.75,0,0,.575],8711:[0,.68611,0,0,.95833],8712:[.08556,.58556,0,0,.76666],8715:[.08556,.58556,0,0,.76666],8722:[.13333,.63333,0,0,.89444],8723:[.13333,.63333,0,0,.89444],8725:[.25,.75,0,0,.575],8726:[.25,.75,0,0,.575],8727:[-.02778,.47222,0,0,.575],8728:[-.02639,.47361,0,0,.575],8729:[-.02639,.47361,0,0,.575],8730:[.18,.82,0,0,.95833],8733:[0,.44444,0,0,.89444],8734:[0,.44444,0,0,1.14999],8736:[0,.69224,0,0,.72222],8739:[.25,.75,0,0,.31944],8741:[.25,.75,0,0,.575],8743:[0,.55556,0,0,.76666],8744:[0,.55556,0,0,.76666],8745:[0,.55556,0,0,.76666],8746:[0,.55556,0,0,.76666],8747:[.19444,.69444,.12778,0,.56875],8764:[-.10889,.39111,0,0,.89444],8768:[.19444,.69444,0,0,.31944],8771:[.00222,.50222,0,0,.89444],8773:[.027,.638,0,0,.894],8776:[.02444,.52444,0,0,.89444],8781:[.00222,.50222,0,0,.89444],8801:[.00222,.50222,0,0,.89444],8804:[.19667,.69667,0,0,.89444],8805:[.19667,.69667,0,0,.89444],8810:[.08556,.58556,0,0,1.14999],8811:[.08556,.58556,0,0,1.14999],8826:[.08556,.58556,0,0,.89444],8827:[.08556,.58556,0,0,.89444],8834:[.08556,.58556,0,0,.89444],8835:[.08556,.58556,0,0,.89444],8838:[.19667,.69667,0,0,.89444],8839:[.19667,.69667,0,0,.89444],8846:[0,.55556,0,0,.76666],8849:[.19667,.69667,0,0,.89444],8850:[.19667,.69667,0,0,.89444],8851:[0,.55556,0,0,.76666],8852:[0,.55556,0,0,.76666],8853:[.13333,.63333,0,0,.89444],8854:[.13333,.63333,0,0,.89444],8855:[.13333,.63333,0,0,.89444],8856:[.13333,.63333,0,0,.89444],8857:[.13333,.63333,0,0,.89444],8866:[0,.69444,0,0,.70277],8867:[0,.69444,0,0,.70277],8868:[0,.69444,0,0,.89444],8869:[0,.69444,0,0,.89444],8900:[-.02639,.47361,0,0,.575],8901:[-.02639,.47361,0,0,.31944],8902:[-.02778,.47222,0,0,.575],8968:[.25,.75,0,0,.51111],8969:[.25,.75,0,0,.51111],8970:[.25,.75,0,0,.51111],8971:[.25,.75,0,0,.51111],8994:[-.13889,.36111,0,0,1.14999],8995:[-.13889,.36111,0,0,1.14999],9651:[.19444,.69444,0,0,1.02222],9657:[-.02778,.47222,0,0,.575],9661:[.19444,.69444,0,0,1.02222],9667:[-.02778,.47222,0,0,.575],9711:[.19444,.69444,0,0,1.14999],9824:[.12963,.69444,0,0,.89444],9825:[.12963,.69444,0,0,.89444],9826:[.12963,.69444,0,0,.89444],9827:[.12963,.69444,0,0,.89444],9837:[0,.75,0,0,.44722],9838:[.19444,.69444,0,0,.44722],9839:[.19444,.69444,0,0,.44722],10216:[.25,.75,0,0,.44722],10217:[.25,.75,0,0,.44722],10815:[0,.68611,0,0,.9],10927:[.19667,.69667,0,0,.89444],10928:[.19667,.69667,0,0,.89444],57376:[.19444,.69444,0,0,0]},"Main-BoldItalic":{32:[0,0,0,0,.25],33:[0,.69444,.11417,0,.38611],34:[0,.69444,.07939,0,.62055],35:[.19444,.69444,.06833,0,.94444],37:[.05556,.75,.12861,0,.94444],38:[0,.69444,.08528,0,.88555],39:[0,.69444,.12945,0,.35555],40:[.25,.75,.15806,0,.47333],41:[.25,.75,.03306,0,.47333],42:[0,.75,.14333,0,.59111],43:[.10333,.60333,.03306,0,.88555],44:[.19444,.14722,0,0,.35555],45:[0,.44444,.02611,0,.41444],46:[0,.14722,0,0,.35555],47:[.25,.75,.15806,0,.59111],48:[0,.64444,.13167,0,.59111],49:[0,.64444,.13167,0,.59111],50:[0,.64444,.13167,0,.59111],51:[0,.64444,.13167,0,.59111],52:[.19444,.64444,.13167,0,.59111],53:[0,.64444,.13167,0,.59111],54:[0,.64444,.13167,0,.59111],55:[.19444,.64444,.13167,0,.59111],56:[0,.64444,.13167,0,.59111],57:[0,.64444,.13167,0,.59111],58:[0,.44444,.06695,0,.35555],59:[.19444,.44444,.06695,0,.35555],61:[-.10889,.39111,.06833,0,.88555],63:[0,.69444,.11472,0,.59111],64:[0,.69444,.09208,0,.88555],65:[0,.68611,0,0,.86555],66:[0,.68611,.0992,0,.81666],67:[0,.68611,.14208,0,.82666],68:[0,.68611,.09062,0,.87555],69:[0,.68611,.11431,0,.75666],70:[0,.68611,.12903,0,.72722],71:[0,.68611,.07347,0,.89527],72:[0,.68611,.17208,0,.8961],73:[0,.68611,.15681,0,.47166],74:[0,.68611,.145,0,.61055],75:[0,.68611,.14208,0,.89499],76:[0,.68611,0,0,.69777],77:[0,.68611,.17208,0,1.07277],78:[0,.68611,.17208,0,.8961],79:[0,.68611,.09062,0,.85499],80:[0,.68611,.0992,0,.78721],81:[.19444,.68611,.09062,0,.85499],82:[0,.68611,.02559,0,.85944],83:[0,.68611,.11264,0,.64999],84:[0,.68611,.12903,0,.7961],85:[0,.68611,.17208,0,.88083],86:[0,.68611,.18625,0,.86555],87:[0,.68611,.18625,0,1.15999],88:[0,.68611,.15681,0,.86555],89:[0,.68611,.19803,0,.86555],90:[0,.68611,.14208,0,.70888],91:[.25,.75,.1875,0,.35611],93:[.25,.75,.09972,0,.35611],94:[0,.69444,.06709,0,.59111],95:[.31,.13444,.09811,0,.59111],97:[0,.44444,.09426,0,.59111],98:[0,.69444,.07861,0,.53222],99:[0,.44444,.05222,0,.53222],100:[0,.69444,.10861,0,.59111],101:[0,.44444,.085,0,.53222],102:[.19444,.69444,.21778,0,.4],103:[.19444,.44444,.105,0,.53222],104:[0,.69444,.09426,0,.59111],105:[0,.69326,.11387,0,.35555],106:[.19444,.69326,.1672,0,.35555],107:[0,.69444,.11111,0,.53222],108:[0,.69444,.10861,0,.29666],109:[0,.44444,.09426,0,.94444],110:[0,.44444,.09426,0,.64999],111:[0,.44444,.07861,0,.59111],112:[.19444,.44444,.07861,0,.59111],113:[.19444,.44444,.105,0,.53222],114:[0,.44444,.11111,0,.50167],115:[0,.44444,.08167,0,.48694],116:[0,.63492,.09639,0,.385],117:[0,.44444,.09426,0,.62055],118:[0,.44444,.11111,0,.53222],119:[0,.44444,.11111,0,.76777],120:[0,.44444,.12583,0,.56055],121:[.19444,.44444,.105,0,.56166],122:[0,.44444,.13889,0,.49055],126:[.35,.34444,.11472,0,.59111],160:[0,0,0,0,.25],168:[0,.69444,.11473,0,.59111],176:[0,.69444,0,0,.94888],184:[.17014,0,0,0,.53222],198:[0,.68611,.11431,0,1.02277],216:[.04861,.73472,.09062,0,.88555],223:[.19444,.69444,.09736,0,.665],230:[0,.44444,.085,0,.82666],248:[.09722,.54167,.09458,0,.59111],305:[0,.44444,.09426,0,.35555],338:[0,.68611,.11431,0,1.14054],339:[0,.44444,.085,0,.82666],567:[.19444,.44444,.04611,0,.385],710:[0,.69444,.06709,0,.59111],711:[0,.63194,.08271,0,.59111],713:[0,.59444,.10444,0,.59111],714:[0,.69444,.08528,0,.59111],715:[0,.69444,0,0,.59111],728:[0,.69444,.10333,0,.59111],729:[0,.69444,.12945,0,.35555],730:[0,.69444,0,0,.94888],732:[0,.69444,.11472,0,.59111],733:[0,.69444,.11472,0,.59111],915:[0,.68611,.12903,0,.69777],916:[0,.68611,0,0,.94444],920:[0,.68611,.09062,0,.88555],923:[0,.68611,0,0,.80666],926:[0,.68611,.15092,0,.76777],928:[0,.68611,.17208,0,.8961],931:[0,.68611,.11431,0,.82666],933:[0,.68611,.10778,0,.88555],934:[0,.68611,.05632,0,.82666],936:[0,.68611,.10778,0,.88555],937:[0,.68611,.0992,0,.82666],8211:[0,.44444,.09811,0,.59111],8212:[0,.44444,.09811,0,1.18221],8216:[0,.69444,.12945,0,.35555],8217:[0,.69444,.12945,0,.35555],8220:[0,.69444,.16772,0,.62055],8221:[0,.69444,.07939,0,.62055]},"Main-Italic":{32:[0,0,0,0,.25],33:[0,.69444,.12417,0,.30667],34:[0,.69444,.06961,0,.51444],35:[.19444,.69444,.06616,0,.81777],37:[.05556,.75,.13639,0,.81777],38:[0,.69444,.09694,0,.76666],39:[0,.69444,.12417,0,.30667],40:[.25,.75,.16194,0,.40889],41:[.25,.75,.03694,0,.40889],42:[0,.75,.14917,0,.51111],43:[.05667,.56167,.03694,0,.76666],44:[.19444,.10556,0,0,.30667],45:[0,.43056,.02826,0,.35778],46:[0,.10556,0,0,.30667],47:[.25,.75,.16194,0,.51111],48:[0,.64444,.13556,0,.51111],49:[0,.64444,.13556,0,.51111],50:[0,.64444,.13556,0,.51111],51:[0,.64444,.13556,0,.51111],52:[.19444,.64444,.13556,0,.51111],53:[0,.64444,.13556,0,.51111],54:[0,.64444,.13556,0,.51111],55:[.19444,.64444,.13556,0,.51111],56:[0,.64444,.13556,0,.51111],57:[0,.64444,.13556,0,.51111],58:[0,.43056,.0582,0,.30667],59:[.19444,.43056,.0582,0,.30667],61:[-.13313,.36687,.06616,0,.76666],63:[0,.69444,.1225,0,.51111],64:[0,.69444,.09597,0,.76666],65:[0,.68333,0,0,.74333],66:[0,.68333,.10257,0,.70389],67:[0,.68333,.14528,0,.71555],68:[0,.68333,.09403,0,.755],69:[0,.68333,.12028,0,.67833],70:[0,.68333,.13305,0,.65277],71:[0,.68333,.08722,0,.77361],72:[0,.68333,.16389,0,.74333],73:[0,.68333,.15806,0,.38555],74:[0,.68333,.14028,0,.525],75:[0,.68333,.14528,0,.76888],76:[0,.68333,0,0,.62722],77:[0,.68333,.16389,0,.89666],78:[0,.68333,.16389,0,.74333],79:[0,.68333,.09403,0,.76666],80:[0,.68333,.10257,0,.67833],81:[.19444,.68333,.09403,0,.76666],82:[0,.68333,.03868,0,.72944],83:[0,.68333,.11972,0,.56222],84:[0,.68333,.13305,0,.71555],85:[0,.68333,.16389,0,.74333],86:[0,.68333,.18361,0,.74333],87:[0,.68333,.18361,0,.99888],88:[0,.68333,.15806,0,.74333],89:[0,.68333,.19383,0,.74333],90:[0,.68333,.14528,0,.61333],91:[.25,.75,.1875,0,.30667],93:[.25,.75,.10528,0,.30667],94:[0,.69444,.06646,0,.51111],95:[.31,.12056,.09208,0,.51111],97:[0,.43056,.07671,0,.51111],98:[0,.69444,.06312,0,.46],99:[0,.43056,.05653,0,.46],100:[0,.69444,.10333,0,.51111],101:[0,.43056,.07514,0,.46],102:[.19444,.69444,.21194,0,.30667],103:[.19444,.43056,.08847,0,.46],104:[0,.69444,.07671,0,.51111],105:[0,.65536,.1019,0,.30667],106:[.19444,.65536,.14467,0,.30667],107:[0,.69444,.10764,0,.46],108:[0,.69444,.10333,0,.25555],109:[0,.43056,.07671,0,.81777],110:[0,.43056,.07671,0,.56222],111:[0,.43056,.06312,0,.51111],112:[.19444,.43056,.06312,0,.51111],113:[.19444,.43056,.08847,0,.46],114:[0,.43056,.10764,0,.42166],115:[0,.43056,.08208,0,.40889],116:[0,.61508,.09486,0,.33222],117:[0,.43056,.07671,0,.53666],118:[0,.43056,.10764,0,.46],119:[0,.43056,.10764,0,.66444],120:[0,.43056,.12042,0,.46389],121:[.19444,.43056,.08847,0,.48555],122:[0,.43056,.12292,0,.40889],126:[.35,.31786,.11585,0,.51111],160:[0,0,0,0,.25],168:[0,.66786,.10474,0,.51111],176:[0,.69444,0,0,.83129],184:[.17014,0,0,0,.46],198:[0,.68333,.12028,0,.88277],216:[.04861,.73194,.09403,0,.76666],223:[.19444,.69444,.10514,0,.53666],230:[0,.43056,.07514,0,.71555],248:[.09722,.52778,.09194,0,.51111],338:[0,.68333,.12028,0,.98499],339:[0,.43056,.07514,0,.71555],710:[0,.69444,.06646,0,.51111],711:[0,.62847,.08295,0,.51111],713:[0,.56167,.10333,0,.51111],714:[0,.69444,.09694,0,.51111],715:[0,.69444,0,0,.51111],728:[0,.69444,.10806,0,.51111],729:[0,.66786,.11752,0,.30667],730:[0,.69444,0,0,.83129],732:[0,.66786,.11585,0,.51111],733:[0,.69444,.1225,0,.51111],915:[0,.68333,.13305,0,.62722],916:[0,.68333,0,0,.81777],920:[0,.68333,.09403,0,.76666],923:[0,.68333,0,0,.69222],926:[0,.68333,.15294,0,.66444],928:[0,.68333,.16389,0,.74333],931:[0,.68333,.12028,0,.71555],933:[0,.68333,.11111,0,.76666],934:[0,.68333,.05986,0,.71555],936:[0,.68333,.11111,0,.76666],937:[0,.68333,.10257,0,.71555],8211:[0,.43056,.09208,0,.51111],8212:[0,.43056,.09208,0,1.02222],8216:[0,.69444,.12417,0,.30667],8217:[0,.69444,.12417,0,.30667],8220:[0,.69444,.1685,0,.51444],8221:[0,.69444,.06961,0,.51444],8463:[0,.68889,0,0,.54028]},"Main-Regular":{32:[0,0,0,0,.25],33:[0,.69444,0,0,.27778],34:[0,.69444,0,0,.5],35:[.19444,.69444,0,0,.83334],36:[.05556,.75,0,0,.5],37:[.05556,.75,0,0,.83334],38:[0,.69444,0,0,.77778],39:[0,.69444,0,0,.27778],40:[.25,.75,0,0,.38889],41:[.25,.75,0,0,.38889],42:[0,.75,0,0,.5],43:[.08333,.58333,0,0,.77778],44:[.19444,.10556,0,0,.27778],45:[0,.43056,0,0,.33333],46:[0,.10556,0,0,.27778],47:[.25,.75,0,0,.5],48:[0,.64444,0,0,.5],49:[0,.64444,0,0,.5],50:[0,.64444,0,0,.5],51:[0,.64444,0,0,.5],52:[0,.64444,0,0,.5],53:[0,.64444,0,0,.5],54:[0,.64444,0,0,.5],55:[0,.64444,0,0,.5],56:[0,.64444,0,0,.5],57:[0,.64444,0,0,.5],58:[0,.43056,0,0,.27778],59:[.19444,.43056,0,0,.27778],60:[.0391,.5391,0,0,.77778],61:[-.13313,.36687,0,0,.77778],62:[.0391,.5391,0,0,.77778],63:[0,.69444,0,0,.47222],64:[0,.69444,0,0,.77778],65:[0,.68333,0,0,.75],66:[0,.68333,0,0,.70834],67:[0,.68333,0,0,.72222],68:[0,.68333,0,0,.76389],69:[0,.68333,0,0,.68056],70:[0,.68333,0,0,.65278],71:[0,.68333,0,0,.78472],72:[0,.68333,0,0,.75],73:[0,.68333,0,0,.36111],74:[0,.68333,0,0,.51389],75:[0,.68333,0,0,.77778],76:[0,.68333,0,0,.625],77:[0,.68333,0,0,.91667],78:[0,.68333,0,0,.75],79:[0,.68333,0,0,.77778],80:[0,.68333,0,0,.68056],81:[.19444,.68333,0,0,.77778],82:[0,.68333,0,0,.73611],83:[0,.68333,0,0,.55556],84:[0,.68333,0,0,.72222],85:[0,.68333,0,0,.75],86:[0,.68333,.01389,0,.75],87:[0,.68333,.01389,0,1.02778],88:[0,.68333,0,0,.75],89:[0,.68333,.025,0,.75],90:[0,.68333,0,0,.61111],91:[.25,.75,0,0,.27778],92:[.25,.75,0,0,.5],93:[.25,.75,0,0,.27778],94:[0,.69444,0,0,.5],95:[.31,.12056,.02778,0,.5],97:[0,.43056,0,0,.5],98:[0,.69444,0,0,.55556],99:[0,.43056,0,0,.44445],100:[0,.69444,0,0,.55556],101:[0,.43056,0,0,.44445],102:[0,.69444,.07778,0,.30556],103:[.19444,.43056,.01389,0,.5],104:[0,.69444,0,0,.55556],105:[0,.66786,0,0,.27778],106:[.19444,.66786,0,0,.30556],107:[0,.69444,0,0,.52778],108:[0,.69444,0,0,.27778],109:[0,.43056,0,0,.83334],110:[0,.43056,0,0,.55556],111:[0,.43056,0,0,.5],112:[.19444,.43056,0,0,.55556],113:[.19444,.43056,0,0,.52778],114:[0,.43056,0,0,.39167],115:[0,.43056,0,0,.39445],116:[0,.61508,0,0,.38889],117:[0,.43056,0,0,.55556],118:[0,.43056,.01389,0,.52778],119:[0,.43056,.01389,0,.72222],120:[0,.43056,0,0,.52778],121:[.19444,.43056,.01389,0,.52778],122:[0,.43056,0,0,.44445],123:[.25,.75,0,0,.5],124:[.25,.75,0,0,.27778],125:[.25,.75,0,0,.5],126:[.35,.31786,0,0,.5],160:[0,0,0,0,.25],163:[0,.69444,0,0,.76909],167:[.19444,.69444,0,0,.44445],168:[0,.66786,0,0,.5],172:[0,.43056,0,0,.66667],176:[0,.69444,0,0,.75],177:[.08333,.58333,0,0,.77778],182:[.19444,.69444,0,0,.61111],184:[.17014,0,0,0,.44445],198:[0,.68333,0,0,.90278],215:[.08333,.58333,0,0,.77778],216:[.04861,.73194,0,0,.77778],223:[0,.69444,0,0,.5],230:[0,.43056,0,0,.72222],247:[.08333,.58333,0,0,.77778],248:[.09722,.52778,0,0,.5],305:[0,.43056,0,0,.27778],338:[0,.68333,0,0,1.01389],339:[0,.43056,0,0,.77778],567:[.19444,.43056,0,0,.30556],710:[0,.69444,0,0,.5],711:[0,.62847,0,0,.5],713:[0,.56778,0,0,.5],714:[0,.69444,0,0,.5],715:[0,.69444,0,0,.5],728:[0,.69444,0,0,.5],729:[0,.66786,0,0,.27778],730:[0,.69444,0,0,.75],732:[0,.66786,0,0,.5],733:[0,.69444,0,0,.5],915:[0,.68333,0,0,.625],916:[0,.68333,0,0,.83334],920:[0,.68333,0,0,.77778],923:[0,.68333,0,0,.69445],926:[0,.68333,0,0,.66667],928:[0,.68333,0,0,.75],931:[0,.68333,0,0,.72222],933:[0,.68333,0,0,.77778],934:[0,.68333,0,0,.72222],936:[0,.68333,0,0,.77778],937:[0,.68333,0,0,.72222],8211:[0,.43056,.02778,0,.5],8212:[0,.43056,.02778,0,1],8216:[0,.69444,0,0,.27778],8217:[0,.69444,0,0,.27778],8220:[0,.69444,0,0,.5],8221:[0,.69444,0,0,.5],8224:[.19444,.69444,0,0,.44445],8225:[.19444,.69444,0,0,.44445],8230:[0,.123,0,0,1.172],8242:[0,.55556,0,0,.275],8407:[0,.71444,.15382,0,.5],8463:[0,.68889,0,0,.54028],8465:[0,.69444,0,0,.72222],8467:[0,.69444,0,.11111,.41667],8472:[.19444,.43056,0,.11111,.63646],8476:[0,.69444,0,0,.72222],8501:[0,.69444,0,0,.61111],8592:[-.13313,.36687,0,0,1],8593:[.19444,.69444,0,0,.5],8594:[-.13313,.36687,0,0,1],8595:[.19444,.69444,0,0,.5],8596:[-.13313,.36687,0,0,1],8597:[.25,.75,0,0,.5],8598:[.19444,.69444,0,0,1],8599:[.19444,.69444,0,0,1],8600:[.19444,.69444,0,0,1],8601:[.19444,.69444,0,0,1],8614:[.011,.511,0,0,1],8617:[.011,.511,0,0,1.126],8618:[.011,.511,0,0,1.126],8636:[-.13313,.36687,0,0,1],8637:[-.13313,.36687,0,0,1],8640:[-.13313,.36687,0,0,1],8641:[-.13313,.36687,0,0,1],8652:[.011,.671,0,0,1],8656:[-.13313,.36687,0,0,1],8657:[.19444,.69444,0,0,.61111],8658:[-.13313,.36687,0,0,1],8659:[.19444,.69444,0,0,.61111],8660:[-.13313,.36687,0,0,1],8661:[.25,.75,0,0,.61111],8704:[0,.69444,0,0,.55556],8706:[0,.69444,.05556,.08334,.5309],8707:[0,.69444,0,0,.55556],8709:[.05556,.75,0,0,.5],8711:[0,.68333,0,0,.83334],8712:[.0391,.5391,0,0,.66667],8715:[.0391,.5391,0,0,.66667],8722:[.08333,.58333,0,0,.77778],8723:[.08333,.58333,0,0,.77778],8725:[.25,.75,0,0,.5],8726:[.25,.75,0,0,.5],8727:[-.03472,.46528,0,0,.5],8728:[-.05555,.44445,0,0,.5],8729:[-.05555,.44445,0,0,.5],8730:[.2,.8,0,0,.83334],8733:[0,.43056,0,0,.77778],8734:[0,.43056,0,0,1],8736:[0,.69224,0,0,.72222],8739:[.25,.75,0,0,.27778],8741:[.25,.75,0,0,.5],8743:[0,.55556,0,0,.66667],8744:[0,.55556,0,0,.66667],8745:[0,.55556,0,0,.66667],8746:[0,.55556,0,0,.66667],8747:[.19444,.69444,.11111,0,.41667],8764:[-.13313,.36687,0,0,.77778],8768:[.19444,.69444,0,0,.27778],8771:[-.03625,.46375,0,0,.77778],8773:[-.022,.589,0,0,.778],8776:[-.01688,.48312,0,0,.77778],8781:[-.03625,.46375,0,0,.77778],8784:[-.133,.673,0,0,.778],8801:[-.03625,.46375,0,0,.77778],8804:[.13597,.63597,0,0,.77778],8805:[.13597,.63597,0,0,.77778],8810:[.0391,.5391,0,0,1],8811:[.0391,.5391,0,0,1],8826:[.0391,.5391,0,0,.77778],8827:[.0391,.5391,0,0,.77778],8834:[.0391,.5391,0,0,.77778],8835:[.0391,.5391,0,0,.77778],8838:[.13597,.63597,0,0,.77778],8839:[.13597,.63597,0,0,.77778],8846:[0,.55556,0,0,.66667],8849:[.13597,.63597,0,0,.77778],8850:[.13597,.63597,0,0,.77778],8851:[0,.55556,0,0,.66667],8852:[0,.55556,0,0,.66667],8853:[.08333,.58333,0,0,.77778],8854:[.08333,.58333,0,0,.77778],8855:[.08333,.58333,0,0,.77778],8856:[.08333,.58333,0,0,.77778],8857:[.08333,.58333,0,0,.77778],8866:[0,.69444,0,0,.61111],8867:[0,.69444,0,0,.61111],8868:[0,.69444,0,0,.77778],8869:[0,.69444,0,0,.77778],8872:[.249,.75,0,0,.867],8900:[-.05555,.44445,0,0,.5],8901:[-.05555,.44445,0,0,.27778],8902:[-.03472,.46528,0,0,.5],8904:[.005,.505,0,0,.9],8942:[.03,.903,0,0,.278],8943:[-.19,.313,0,0,1.172],8945:[-.1,.823,0,0,1.282],8968:[.25,.75,0,0,.44445],8969:[.25,.75,0,0,.44445],8970:[.25,.75,0,0,.44445],8971:[.25,.75,0,0,.44445],8994:[-.14236,.35764,0,0,1],8995:[-.14236,.35764,0,0,1],9136:[.244,.744,0,0,.412],9137:[.244,.745,0,0,.412],9651:[.19444,.69444,0,0,.88889],9657:[-.03472,.46528,0,0,.5],9661:[.19444,.69444,0,0,.88889],9667:[-.03472,.46528,0,0,.5],9711:[.19444,.69444,0,0,1],9824:[.12963,.69444,0,0,.77778],9825:[.12963,.69444,0,0,.77778],9826:[.12963,.69444,0,0,.77778],9827:[.12963,.69444,0,0,.77778],9837:[0,.75,0,0,.38889],9838:[.19444,.69444,0,0,.38889],9839:[.19444,.69444,0,0,.38889],10216:[.25,.75,0,0,.38889],10217:[.25,.75,0,0,.38889],10222:[.244,.744,0,0,.412],10223:[.244,.745,0,0,.412],10229:[.011,.511,0,0,1.609],10230:[.011,.511,0,0,1.638],10231:[.011,.511,0,0,1.859],10232:[.024,.525,0,0,1.609],10233:[.024,.525,0,0,1.638],10234:[.024,.525,0,0,1.858],10236:[.011,.511,0,0,1.638],10815:[0,.68333,0,0,.75],10927:[.13597,.63597,0,0,.77778],10928:[.13597,.63597,0,0,.77778],57376:[.19444,.69444,0,0,0]},"Math-BoldItalic":{32:[0,0,0,0,.25],48:[0,.44444,0,0,.575],49:[0,.44444,0,0,.575],50:[0,.44444,0,0,.575],51:[.19444,.44444,0,0,.575],52:[.19444,.44444,0,0,.575],53:[.19444,.44444,0,0,.575],54:[0,.64444,0,0,.575],55:[.19444,.44444,0,0,.575],56:[0,.64444,0,0,.575],57:[.19444,.44444,0,0,.575],65:[0,.68611,0,0,.86944],66:[0,.68611,.04835,0,.8664],67:[0,.68611,.06979,0,.81694],68:[0,.68611,.03194,0,.93812],69:[0,.68611,.05451,0,.81007],70:[0,.68611,.15972,0,.68889],71:[0,.68611,0,0,.88673],72:[0,.68611,.08229,0,.98229],73:[0,.68611,.07778,0,.51111],74:[0,.68611,.10069,0,.63125],75:[0,.68611,.06979,0,.97118],76:[0,.68611,0,0,.75555],77:[0,.68611,.11424,0,1.14201],78:[0,.68611,.11424,0,.95034],79:[0,.68611,.03194,0,.83666],80:[0,.68611,.15972,0,.72309],81:[.19444,.68611,0,0,.86861],82:[0,.68611,.00421,0,.87235],83:[0,.68611,.05382,0,.69271],84:[0,.68611,.15972,0,.63663],85:[0,.68611,.11424,0,.80027],86:[0,.68611,.25555,0,.67778],87:[0,.68611,.15972,0,1.09305],88:[0,.68611,.07778,0,.94722],89:[0,.68611,.25555,0,.67458],90:[0,.68611,.06979,0,.77257],97:[0,.44444,0,0,.63287],98:[0,.69444,0,0,.52083],99:[0,.44444,0,0,.51342],100:[0,.69444,0,0,.60972],101:[0,.44444,0,0,.55361],102:[.19444,.69444,.11042,0,.56806],103:[.19444,.44444,.03704,0,.5449],104:[0,.69444,0,0,.66759],105:[0,.69326,0,0,.4048],106:[.19444,.69326,.0622,0,.47083],107:[0,.69444,.01852,0,.6037],108:[0,.69444,.0088,0,.34815],109:[0,.44444,0,0,1.0324],110:[0,.44444,0,0,.71296],111:[0,.44444,0,0,.58472],112:[.19444,.44444,0,0,.60092],113:[.19444,.44444,.03704,0,.54213],114:[0,.44444,.03194,0,.5287],115:[0,.44444,0,0,.53125],116:[0,.63492,0,0,.41528],117:[0,.44444,0,0,.68102],118:[0,.44444,.03704,0,.56666],119:[0,.44444,.02778,0,.83148],120:[0,.44444,0,0,.65903],121:[.19444,.44444,.03704,0,.59028],122:[0,.44444,.04213,0,.55509],160:[0,0,0,0,.25],915:[0,.68611,.15972,0,.65694],916:[0,.68611,0,0,.95833],920:[0,.68611,.03194,0,.86722],923:[0,.68611,0,0,.80555],926:[0,.68611,.07458,0,.84125],928:[0,.68611,.08229,0,.98229],931:[0,.68611,.05451,0,.88507],933:[0,.68611,.15972,0,.67083],934:[0,.68611,0,0,.76666],936:[0,.68611,.11653,0,.71402],937:[0,.68611,.04835,0,.8789],945:[0,.44444,0,0,.76064],946:[.19444,.69444,.03403,0,.65972],947:[.19444,.44444,.06389,0,.59003],948:[0,.69444,.03819,0,.52222],949:[0,.44444,0,0,.52882],950:[.19444,.69444,.06215,0,.50833],951:[.19444,.44444,.03704,0,.6],952:[0,.69444,.03194,0,.5618],953:[0,.44444,0,0,.41204],954:[0,.44444,0,0,.66759],955:[0,.69444,0,0,.67083],956:[.19444,.44444,0,0,.70787],957:[0,.44444,.06898,0,.57685],958:[.19444,.69444,.03021,0,.50833],959:[0,.44444,0,0,.58472],960:[0,.44444,.03704,0,.68241],961:[.19444,.44444,0,0,.6118],962:[.09722,.44444,.07917,0,.42361],963:[0,.44444,.03704,0,.68588],964:[0,.44444,.13472,0,.52083],965:[0,.44444,.03704,0,.63055],966:[.19444,.44444,0,0,.74722],967:[.19444,.44444,0,0,.71805],968:[.19444,.69444,.03704,0,.75833],969:[0,.44444,.03704,0,.71782],977:[0,.69444,0,0,.69155],981:[.19444,.69444,0,0,.7125],982:[0,.44444,.03194,0,.975],1009:[.19444,.44444,0,0,.6118],1013:[0,.44444,0,0,.48333],57649:[0,.44444,0,0,.39352],57911:[.19444,.44444,0,0,.43889]},"Math-Italic":{32:[0,0,0,0,.25],48:[0,.43056,0,0,.5],49:[0,.43056,0,0,.5],50:[0,.43056,0,0,.5],51:[.19444,.43056,0,0,.5],52:[.19444,.43056,0,0,.5],53:[.19444,.43056,0,0,.5],54:[0,.64444,0,0,.5],55:[.19444,.43056,0,0,.5],56:[0,.64444,0,0,.5],57:[.19444,.43056,0,0,.5],65:[0,.68333,0,.13889,.75],66:[0,.68333,.05017,.08334,.75851],67:[0,.68333,.07153,.08334,.71472],68:[0,.68333,.02778,.05556,.82792],69:[0,.68333,.05764,.08334,.7382],70:[0,.68333,.13889,.08334,.64306],71:[0,.68333,0,.08334,.78625],72:[0,.68333,.08125,.05556,.83125],73:[0,.68333,.07847,.11111,.43958],74:[0,.68333,.09618,.16667,.55451],75:[0,.68333,.07153,.05556,.84931],76:[0,.68333,0,.02778,.68056],77:[0,.68333,.10903,.08334,.97014],78:[0,.68333,.10903,.08334,.80347],79:[0,.68333,.02778,.08334,.76278],80:[0,.68333,.13889,.08334,.64201],81:[.19444,.68333,0,.08334,.79056],82:[0,.68333,.00773,.08334,.75929],83:[0,.68333,.05764,.08334,.6132],84:[0,.68333,.13889,.08334,.58438],85:[0,.68333,.10903,.02778,.68278],86:[0,.68333,.22222,0,.58333],87:[0,.68333,.13889,0,.94445],88:[0,.68333,.07847,.08334,.82847],89:[0,.68333,.22222,0,.58056],90:[0,.68333,.07153,.08334,.68264],97:[0,.43056,0,0,.52859],98:[0,.69444,0,0,.42917],99:[0,.43056,0,.05556,.43276],100:[0,.69444,0,.16667,.52049],101:[0,.43056,0,.05556,.46563],102:[.19444,.69444,.10764,.16667,.48959],103:[.19444,.43056,.03588,.02778,.47697],104:[0,.69444,0,0,.57616],105:[0,.65952,0,0,.34451],106:[.19444,.65952,.05724,0,.41181],107:[0,.69444,.03148,0,.5206],108:[0,.69444,.01968,.08334,.29838],109:[0,.43056,0,0,.87801],110:[0,.43056,0,0,.60023],111:[0,.43056,0,.05556,.48472],112:[.19444,.43056,0,.08334,.50313],113:[.19444,.43056,.03588,.08334,.44641],114:[0,.43056,.02778,.05556,.45116],115:[0,.43056,0,.05556,.46875],116:[0,.61508,0,.08334,.36111],117:[0,.43056,0,.02778,.57246],118:[0,.43056,.03588,.02778,.48472],119:[0,.43056,.02691,.08334,.71592],120:[0,.43056,0,.02778,.57153],121:[.19444,.43056,.03588,.05556,.49028],122:[0,.43056,.04398,.05556,.46505],160:[0,0,0,0,.25],915:[0,.68333,.13889,.08334,.61528],916:[0,.68333,0,.16667,.83334],920:[0,.68333,.02778,.08334,.76278],923:[0,.68333,0,.16667,.69445],926:[0,.68333,.07569,.08334,.74236],928:[0,.68333,.08125,.05556,.83125],931:[0,.68333,.05764,.08334,.77986],933:[0,.68333,.13889,.05556,.58333],934:[0,.68333,0,.08334,.66667],936:[0,.68333,.11,.05556,.61222],937:[0,.68333,.05017,.08334,.7724],945:[0,.43056,.0037,.02778,.6397],946:[.19444,.69444,.05278,.08334,.56563],947:[.19444,.43056,.05556,0,.51773],948:[0,.69444,.03785,.05556,.44444],949:[0,.43056,0,.08334,.46632],950:[.19444,.69444,.07378,.08334,.4375],951:[.19444,.43056,.03588,.05556,.49653],952:[0,.69444,.02778,.08334,.46944],953:[0,.43056,0,.05556,.35394],954:[0,.43056,0,0,.57616],955:[0,.69444,0,0,.58334],956:[.19444,.43056,0,.02778,.60255],957:[0,.43056,.06366,.02778,.49398],958:[.19444,.69444,.04601,.11111,.4375],959:[0,.43056,0,.05556,.48472],960:[0,.43056,.03588,0,.57003],961:[.19444,.43056,0,.08334,.51702],962:[.09722,.43056,.07986,.08334,.36285],963:[0,.43056,.03588,0,.57141],964:[0,.43056,.1132,.02778,.43715],965:[0,.43056,.03588,.02778,.54028],966:[.19444,.43056,0,.08334,.65417],967:[.19444,.43056,0,.05556,.62569],968:[.19444,.69444,.03588,.11111,.65139],969:[0,.43056,.03588,0,.62245],977:[0,.69444,0,.08334,.59144],981:[.19444,.69444,0,.08334,.59583],982:[0,.43056,.02778,0,.82813],1009:[.19444,.43056,0,.08334,.51702],1013:[0,.43056,0,.05556,.4059],57649:[0,.43056,0,.02778,.32246],57911:[.19444,.43056,0,.08334,.38403]},"SansSerif-Bold":{32:[0,0,0,0,.25],33:[0,.69444,0,0,.36667],34:[0,.69444,0,0,.55834],35:[.19444,.69444,0,0,.91667],36:[.05556,.75,0,0,.55],37:[.05556,.75,0,0,1.02912],38:[0,.69444,0,0,.83056],39:[0,.69444,0,0,.30556],40:[.25,.75,0,0,.42778],41:[.25,.75,0,0,.42778],42:[0,.75,0,0,.55],43:[.11667,.61667,0,0,.85556],44:[.10556,.13056,0,0,.30556],45:[0,.45833,0,0,.36667],46:[0,.13056,0,0,.30556],47:[.25,.75,0,0,.55],48:[0,.69444,0,0,.55],49:[0,.69444,0,0,.55],50:[0,.69444,0,0,.55],51:[0,.69444,0,0,.55],52:[0,.69444,0,0,.55],53:[0,.69444,0,0,.55],54:[0,.69444,0,0,.55],55:[0,.69444,0,0,.55],56:[0,.69444,0,0,.55],57:[0,.69444,0,0,.55],58:[0,.45833,0,0,.30556],59:[.10556,.45833,0,0,.30556],61:[-.09375,.40625,0,0,.85556],63:[0,.69444,0,0,.51945],64:[0,.69444,0,0,.73334],65:[0,.69444,0,0,.73334],66:[0,.69444,0,0,.73334],67:[0,.69444,0,0,.70278],68:[0,.69444,0,0,.79445],69:[0,.69444,0,0,.64167],70:[0,.69444,0,0,.61111],71:[0,.69444,0,0,.73334],72:[0,.69444,0,0,.79445],73:[0,.69444,0,0,.33056],74:[0,.69444,0,0,.51945],75:[0,.69444,0,0,.76389],76:[0,.69444,0,0,.58056],77:[0,.69444,0,0,.97778],78:[0,.69444,0,0,.79445],79:[0,.69444,0,0,.79445],80:[0,.69444,0,0,.70278],81:[.10556,.69444,0,0,.79445],82:[0,.69444,0,0,.70278],83:[0,.69444,0,0,.61111],84:[0,.69444,0,0,.73334],85:[0,.69444,0,0,.76389],86:[0,.69444,.01528,0,.73334],87:[0,.69444,.01528,0,1.03889],88:[0,.69444,0,0,.73334],89:[0,.69444,.0275,0,.73334],90:[0,.69444,0,0,.67223],91:[.25,.75,0,0,.34306],93:[.25,.75,0,0,.34306],94:[0,.69444,0,0,.55],95:[.35,.10833,.03056,0,.55],97:[0,.45833,0,0,.525],98:[0,.69444,0,0,.56111],99:[0,.45833,0,0,.48889],100:[0,.69444,0,0,.56111],101:[0,.45833,0,0,.51111],102:[0,.69444,.07639,0,.33611],103:[.19444,.45833,.01528,0,.55],104:[0,.69444,0,0,.56111],105:[0,.69444,0,0,.25556],106:[.19444,.69444,0,0,.28611],107:[0,.69444,0,0,.53056],108:[0,.69444,0,0,.25556],109:[0,.45833,0,0,.86667],110:[0,.45833,0,0,.56111],111:[0,.45833,0,0,.55],112:[.19444,.45833,0,0,.56111],113:[.19444,.45833,0,0,.56111],114:[0,.45833,.01528,0,.37222],115:[0,.45833,0,0,.42167],116:[0,.58929,0,0,.40417],117:[0,.45833,0,0,.56111],118:[0,.45833,.01528,0,.5],119:[0,.45833,.01528,0,.74445],120:[0,.45833,0,0,.5],121:[.19444,.45833,.01528,0,.5],122:[0,.45833,0,0,.47639],126:[.35,.34444,0,0,.55],160:[0,0,0,0,.25],168:[0,.69444,0,0,.55],176:[0,.69444,0,0,.73334],180:[0,.69444,0,0,.55],184:[.17014,0,0,0,.48889],305:[0,.45833,0,0,.25556],567:[.19444,.45833,0,0,.28611],710:[0,.69444,0,0,.55],711:[0,.63542,0,0,.55],713:[0,.63778,0,0,.55],728:[0,.69444,0,0,.55],729:[0,.69444,0,0,.30556],730:[0,.69444,0,0,.73334],732:[0,.69444,0,0,.55],733:[0,.69444,0,0,.55],915:[0,.69444,0,0,.58056],916:[0,.69444,0,0,.91667],920:[0,.69444,0,0,.85556],923:[0,.69444,0,0,.67223],926:[0,.69444,0,0,.73334],928:[0,.69444,0,0,.79445],931:[0,.69444,0,0,.79445],933:[0,.69444,0,0,.85556],934:[0,.69444,0,0,.79445],936:[0,.69444,0,0,.85556],937:[0,.69444,0,0,.79445],8211:[0,.45833,.03056,0,.55],8212:[0,.45833,.03056,0,1.10001],8216:[0,.69444,0,0,.30556],8217:[0,.69444,0,0,.30556],8220:[0,.69444,0,0,.55834],8221:[0,.69444,0,0,.55834]},"SansSerif-Italic":{32:[0,0,0,0,.25],33:[0,.69444,.05733,0,.31945],34:[0,.69444,.00316,0,.5],35:[.19444,.69444,.05087,0,.83334],36:[.05556,.75,.11156,0,.5],37:[.05556,.75,.03126,0,.83334],38:[0,.69444,.03058,0,.75834],39:[0,.69444,.07816,0,.27778],40:[.25,.75,.13164,0,.38889],41:[.25,.75,.02536,0,.38889],42:[0,.75,.11775,0,.5],43:[.08333,.58333,.02536,0,.77778],44:[.125,.08333,0,0,.27778],45:[0,.44444,.01946,0,.33333],46:[0,.08333,0,0,.27778],47:[.25,.75,.13164,0,.5],48:[0,.65556,.11156,0,.5],49:[0,.65556,.11156,0,.5],50:[0,.65556,.11156,0,.5],51:[0,.65556,.11156,0,.5],52:[0,.65556,.11156,0,.5],53:[0,.65556,.11156,0,.5],54:[0,.65556,.11156,0,.5],55:[0,.65556,.11156,0,.5],56:[0,.65556,.11156,0,.5],57:[0,.65556,.11156,0,.5],58:[0,.44444,.02502,0,.27778],59:[.125,.44444,.02502,0,.27778],61:[-.13,.37,.05087,0,.77778],63:[0,.69444,.11809,0,.47222],64:[0,.69444,.07555,0,.66667],65:[0,.69444,0,0,.66667],66:[0,.69444,.08293,0,.66667],67:[0,.69444,.11983,0,.63889],68:[0,.69444,.07555,0,.72223],69:[0,.69444,.11983,0,.59722],70:[0,.69444,.13372,0,.56945],71:[0,.69444,.11983,0,.66667],72:[0,.69444,.08094,0,.70834],73:[0,.69444,.13372,0,.27778],74:[0,.69444,.08094,0,.47222],75:[0,.69444,.11983,0,.69445],76:[0,.69444,0,0,.54167],77:[0,.69444,.08094,0,.875],78:[0,.69444,.08094,0,.70834],79:[0,.69444,.07555,0,.73611],80:[0,.69444,.08293,0,.63889],81:[.125,.69444,.07555,0,.73611],82:[0,.69444,.08293,0,.64584],83:[0,.69444,.09205,0,.55556],84:[0,.69444,.13372,0,.68056],85:[0,.69444,.08094,0,.6875],86:[0,.69444,.1615,0,.66667],87:[0,.69444,.1615,0,.94445],88:[0,.69444,.13372,0,.66667],89:[0,.69444,.17261,0,.66667],90:[0,.69444,.11983,0,.61111],91:[.25,.75,.15942,0,.28889],93:[.25,.75,.08719,0,.28889],94:[0,.69444,.0799,0,.5],95:[.35,.09444,.08616,0,.5],97:[0,.44444,.00981,0,.48056],98:[0,.69444,.03057,0,.51667],99:[0,.44444,.08336,0,.44445],100:[0,.69444,.09483,0,.51667],101:[0,.44444,.06778,0,.44445],102:[0,.69444,.21705,0,.30556],103:[.19444,.44444,.10836,0,.5],104:[0,.69444,.01778,0,.51667],105:[0,.67937,.09718,0,.23889],106:[.19444,.67937,.09162,0,.26667],107:[0,.69444,.08336,0,.48889],108:[0,.69444,.09483,0,.23889],109:[0,.44444,.01778,0,.79445],110:[0,.44444,.01778,0,.51667],111:[0,.44444,.06613,0,.5],112:[.19444,.44444,.0389,0,.51667],113:[.19444,.44444,.04169,0,.51667],114:[0,.44444,.10836,0,.34167],115:[0,.44444,.0778,0,.38333],116:[0,.57143,.07225,0,.36111],117:[0,.44444,.04169,0,.51667],118:[0,.44444,.10836,0,.46111],119:[0,.44444,.10836,0,.68334],120:[0,.44444,.09169,0,.46111],121:[.19444,.44444,.10836,0,.46111],122:[0,.44444,.08752,0,.43472],126:[.35,.32659,.08826,0,.5],160:[0,0,0,0,.25],168:[0,.67937,.06385,0,.5],176:[0,.69444,0,0,.73752],184:[.17014,0,0,0,.44445],305:[0,.44444,.04169,0,.23889],567:[.19444,.44444,.04169,0,.26667],710:[0,.69444,.0799,0,.5],711:[0,.63194,.08432,0,.5],713:[0,.60889,.08776,0,.5],714:[0,.69444,.09205,0,.5],715:[0,.69444,0,0,.5],728:[0,.69444,.09483,0,.5],729:[0,.67937,.07774,0,.27778],730:[0,.69444,0,0,.73752],732:[0,.67659,.08826,0,.5],733:[0,.69444,.09205,0,.5],915:[0,.69444,.13372,0,.54167],916:[0,.69444,0,0,.83334],920:[0,.69444,.07555,0,.77778],923:[0,.69444,0,0,.61111],926:[0,.69444,.12816,0,.66667],928:[0,.69444,.08094,0,.70834],931:[0,.69444,.11983,0,.72222],933:[0,.69444,.09031,0,.77778],934:[0,.69444,.04603,0,.72222],936:[0,.69444,.09031,0,.77778],937:[0,.69444,.08293,0,.72222],8211:[0,.44444,.08616,0,.5],8212:[0,.44444,.08616,0,1],8216:[0,.69444,.07816,0,.27778],8217:[0,.69444,.07816,0,.27778],8220:[0,.69444,.14205,0,.5],8221:[0,.69444,.00316,0,.5]},"SansSerif-Regular":{32:[0,0,0,0,.25],33:[0,.69444,0,0,.31945],34:[0,.69444,0,0,.5],35:[.19444,.69444,0,0,.83334],36:[.05556,.75,0,0,.5],37:[.05556,.75,0,0,.83334],38:[0,.69444,0,0,.75834],39:[0,.69444,0,0,.27778],40:[.25,.75,0,0,.38889],41:[.25,.75,0,0,.38889],42:[0,.75,0,0,.5],43:[.08333,.58333,0,0,.77778],44:[.125,.08333,0,0,.27778],45:[0,.44444,0,0,.33333],46:[0,.08333,0,0,.27778],47:[.25,.75,0,0,.5],48:[0,.65556,0,0,.5],49:[0,.65556,0,0,.5],50:[0,.65556,0,0,.5],51:[0,.65556,0,0,.5],52:[0,.65556,0,0,.5],53:[0,.65556,0,0,.5],54:[0,.65556,0,0,.5],55:[0,.65556,0,0,.5],56:[0,.65556,0,0,.5],57:[0,.65556,0,0,.5],58:[0,.44444,0,0,.27778],59:[.125,.44444,0,0,.27778],61:[-.13,.37,0,0,.77778],63:[0,.69444,0,0,.47222],64:[0,.69444,0,0,.66667],65:[0,.69444,0,0,.66667],66:[0,.69444,0,0,.66667],67:[0,.69444,0,0,.63889],68:[0,.69444,0,0,.72223],69:[0,.69444,0,0,.59722],70:[0,.69444,0,0,.56945],71:[0,.69444,0,0,.66667],72:[0,.69444,0,0,.70834],73:[0,.69444,0,0,.27778],74:[0,.69444,0,0,.47222],75:[0,.69444,0,0,.69445],76:[0,.69444,0,0,.54167],77:[0,.69444,0,0,.875],78:[0,.69444,0,0,.70834],79:[0,.69444,0,0,.73611],80:[0,.69444,0,0,.63889],81:[.125,.69444,0,0,.73611],82:[0,.69444,0,0,.64584],83:[0,.69444,0,0,.55556],84:[0,.69444,0,0,.68056],85:[0,.69444,0,0,.6875],86:[0,.69444,.01389,0,.66667],87:[0,.69444,.01389,0,.94445],88:[0,.69444,0,0,.66667],89:[0,.69444,.025,0,.66667],90:[0,.69444,0,0,.61111],91:[.25,.75,0,0,.28889],93:[.25,.75,0,0,.28889],94:[0,.69444,0,0,.5],95:[.35,.09444,.02778,0,.5],97:[0,.44444,0,0,.48056],98:[0,.69444,0,0,.51667],99:[0,.44444,0,0,.44445],100:[0,.69444,0,0,.51667],101:[0,.44444,0,0,.44445],102:[0,.69444,.06944,0,.30556],103:[.19444,.44444,.01389,0,.5],104:[0,.69444,0,0,.51667],105:[0,.67937,0,0,.23889],106:[.19444,.67937,0,0,.26667],107:[0,.69444,0,0,.48889],108:[0,.69444,0,0,.23889],109:[0,.44444,0,0,.79445],110:[0,.44444,0,0,.51667],111:[0,.44444,0,0,.5],112:[.19444,.44444,0,0,.51667],113:[.19444,.44444,0,0,.51667],114:[0,.44444,.01389,0,.34167],115:[0,.44444,0,0,.38333],116:[0,.57143,0,0,.36111],117:[0,.44444,0,0,.51667],118:[0,.44444,.01389,0,.46111],119:[0,.44444,.01389,0,.68334],120:[0,.44444,0,0,.46111],121:[.19444,.44444,.01389,0,.46111],122:[0,.44444,0,0,.43472],126:[.35,.32659,0,0,.5],160:[0,0,0,0,.25],168:[0,.67937,0,0,.5],176:[0,.69444,0,0,.66667],184:[.17014,0,0,0,.44445],305:[0,.44444,0,0,.23889],567:[.19444,.44444,0,0,.26667],710:[0,.69444,0,0,.5],711:[0,.63194,0,0,.5],713:[0,.60889,0,0,.5],714:[0,.69444,0,0,.5],715:[0,.69444,0,0,.5],728:[0,.69444,0,0,.5],729:[0,.67937,0,0,.27778],730:[0,.69444,0,0,.66667],732:[0,.67659,0,0,.5],733:[0,.69444,0,0,.5],915:[0,.69444,0,0,.54167],916:[0,.69444,0,0,.83334],920:[0,.69444,0,0,.77778],923:[0,.69444,0,0,.61111],926:[0,.69444,0,0,.66667],928:[0,.69444,0,0,.70834],931:[0,.69444,0,0,.72222],933:[0,.69444,0,0,.77778],934:[0,.69444,0,0,.72222],936:[0,.69444,0,0,.77778],937:[0,.69444,0,0,.72222],8211:[0,.44444,.02778,0,.5],8212:[0,.44444,.02778,0,1],8216:[0,.69444,0,0,.27778],8217:[0,.69444,0,0,.27778],8220:[0,.69444,0,0,.5],8221:[0,.69444,0,0,.5]},"Script-Regular":{32:[0,0,0,0,.25],65:[0,.7,.22925,0,.80253],66:[0,.7,.04087,0,.90757],67:[0,.7,.1689,0,.66619],68:[0,.7,.09371,0,.77443],69:[0,.7,.18583,0,.56162],70:[0,.7,.13634,0,.89544],71:[0,.7,.17322,0,.60961],72:[0,.7,.29694,0,.96919],73:[0,.7,.19189,0,.80907],74:[.27778,.7,.19189,0,1.05159],75:[0,.7,.31259,0,.91364],76:[0,.7,.19189,0,.87373],77:[0,.7,.15981,0,1.08031],78:[0,.7,.3525,0,.9015],79:[0,.7,.08078,0,.73787],80:[0,.7,.08078,0,1.01262],81:[0,.7,.03305,0,.88282],82:[0,.7,.06259,0,.85],83:[0,.7,.19189,0,.86767],84:[0,.7,.29087,0,.74697],85:[0,.7,.25815,0,.79996],86:[0,.7,.27523,0,.62204],87:[0,.7,.27523,0,.80532],88:[0,.7,.26006,0,.94445],89:[0,.7,.2939,0,.70961],90:[0,.7,.24037,0,.8212],160:[0,0,0,0,.25]},"Size1-Regular":{32:[0,0,0,0,.25],40:[.35001,.85,0,0,.45834],41:[.35001,.85,0,0,.45834],47:[.35001,.85,0,0,.57778],91:[.35001,.85,0,0,.41667],92:[.35001,.85,0,0,.57778],93:[.35001,.85,0,0,.41667],123:[.35001,.85,0,0,.58334],125:[.35001,.85,0,0,.58334],160:[0,0,0,0,.25],710:[0,.72222,0,0,.55556],732:[0,.72222,0,0,.55556],770:[0,.72222,0,0,.55556],771:[0,.72222,0,0,.55556],8214:[-99e-5,.601,0,0,.77778],8593:[1e-5,.6,0,0,.66667],8595:[1e-5,.6,0,0,.66667],8657:[1e-5,.6,0,0,.77778],8659:[1e-5,.6,0,0,.77778],8719:[.25001,.75,0,0,.94445],8720:[.25001,.75,0,0,.94445],8721:[.25001,.75,0,0,1.05556],8730:[.35001,.85,0,0,1],8739:[-.00599,.606,0,0,.33333],8741:[-.00599,.606,0,0,.55556],8747:[.30612,.805,.19445,0,.47222],8748:[.306,.805,.19445,0,.47222],8749:[.306,.805,.19445,0,.47222],8750:[.30612,.805,.19445,0,.47222],8896:[.25001,.75,0,0,.83334],8897:[.25001,.75,0,0,.83334],8898:[.25001,.75,0,0,.83334],8899:[.25001,.75,0,0,.83334],8968:[.35001,.85,0,0,.47222],8969:[.35001,.85,0,0,.47222],8970:[.35001,.85,0,0,.47222],8971:[.35001,.85,0,0,.47222],9168:[-99e-5,.601,0,0,.66667],10216:[.35001,.85,0,0,.47222],10217:[.35001,.85,0,0,.47222],10752:[.25001,.75,0,0,1.11111],10753:[.25001,.75,0,0,1.11111],10754:[.25001,.75,0,0,1.11111],10756:[.25001,.75,0,0,.83334],10758:[.25001,.75,0,0,.83334]},"Size2-Regular":{32:[0,0,0,0,.25],40:[.65002,1.15,0,0,.59722],41:[.65002,1.15,0,0,.59722],47:[.65002,1.15,0,0,.81111],91:[.65002,1.15,0,0,.47222],92:[.65002,1.15,0,0,.81111],93:[.65002,1.15,0,0,.47222],123:[.65002,1.15,0,0,.66667],125:[.65002,1.15,0,0,.66667],160:[0,0,0,0,.25],710:[0,.75,0,0,1],732:[0,.75,0,0,1],770:[0,.75,0,0,1],771:[0,.75,0,0,1],8719:[.55001,1.05,0,0,1.27778],8720:[.55001,1.05,0,0,1.27778],8721:[.55001,1.05,0,0,1.44445],8730:[.65002,1.15,0,0,1],8747:[.86225,1.36,.44445,0,.55556],8748:[.862,1.36,.44445,0,.55556],8749:[.862,1.36,.44445,0,.55556],8750:[.86225,1.36,.44445,0,.55556],8896:[.55001,1.05,0,0,1.11111],8897:[.55001,1.05,0,0,1.11111],8898:[.55001,1.05,0,0,1.11111],8899:[.55001,1.05,0,0,1.11111],8968:[.65002,1.15,0,0,.52778],8969:[.65002,1.15,0,0,.52778],8970:[.65002,1.15,0,0,.52778],8971:[.65002,1.15,0,0,.52778],10216:[.65002,1.15,0,0,.61111],10217:[.65002,1.15,0,0,.61111],10752:[.55001,1.05,0,0,1.51112],10753:[.55001,1.05,0,0,1.51112],10754:[.55001,1.05,0,0,1.51112],10756:[.55001,1.05,0,0,1.11111],10758:[.55001,1.05,0,0,1.11111]},"Size3-Regular":{32:[0,0,0,0,.25],40:[.95003,1.45,0,0,.73611],41:[.95003,1.45,0,0,.73611],47:[.95003,1.45,0,0,1.04445],91:[.95003,1.45,0,0,.52778],92:[.95003,1.45,0,0,1.04445],93:[.95003,1.45,0,0,.52778],123:[.95003,1.45,0,0,.75],125:[.95003,1.45,0,0,.75],160:[0,0,0,0,.25],710:[0,.75,0,0,1.44445],732:[0,.75,0,0,1.44445],770:[0,.75,0,0,1.44445],771:[0,.75,0,0,1.44445],8730:[.95003,1.45,0,0,1],8968:[.95003,1.45,0,0,.58334],8969:[.95003,1.45,0,0,.58334],8970:[.95003,1.45,0,0,.58334],8971:[.95003,1.45,0,0,.58334],10216:[.95003,1.45,0,0,.75],10217:[.95003,1.45,0,0,.75]},"Size4-Regular":{32:[0,0,0,0,.25],40:[1.25003,1.75,0,0,.79167],41:[1.25003,1.75,0,0,.79167],47:[1.25003,1.75,0,0,1.27778],91:[1.25003,1.75,0,0,.58334],92:[1.25003,1.75,0,0,1.27778],93:[1.25003,1.75,0,0,.58334],123:[1.25003,1.75,0,0,.80556],125:[1.25003,1.75,0,0,.80556],160:[0,0,0,0,.25],710:[0,.825,0,0,1.8889],732:[0,.825,0,0,1.8889],770:[0,.825,0,0,1.8889],771:[0,.825,0,0,1.8889],8730:[1.25003,1.75,0,0,1],8968:[1.25003,1.75,0,0,.63889],8969:[1.25003,1.75,0,0,.63889],8970:[1.25003,1.75,0,0,.63889],8971:[1.25003,1.75,0,0,.63889],9115:[.64502,1.155,0,0,.875],9116:[1e-5,.6,0,0,.875],9117:[.64502,1.155,0,0,.875],9118:[.64502,1.155,0,0,.875],9119:[1e-5,.6,0,0,.875],9120:[.64502,1.155,0,0,.875],9121:[.64502,1.155,0,0,.66667],9122:[-99e-5,.601,0,0,.66667],9123:[.64502,1.155,0,0,.66667],9124:[.64502,1.155,0,0,.66667],9125:[-99e-5,.601,0,0,.66667],9126:[.64502,1.155,0,0,.66667],9127:[1e-5,.9,0,0,.88889],9128:[.65002,1.15,0,0,.88889],9129:[.90001,0,0,0,.88889],9130:[0,.3,0,0,.88889],9131:[1e-5,.9,0,0,.88889],9132:[.65002,1.15,0,0,.88889],9133:[.90001,0,0,0,.88889],9143:[.88502,.915,0,0,1.05556],10216:[1.25003,1.75,0,0,.80556],10217:[1.25003,1.75,0,0,.80556],57344:[-.00499,.605,0,0,1.05556],57345:[-.00499,.605,0,0,1.05556],57680:[0,.12,0,0,.45],57681:[0,.12,0,0,.45],57682:[0,.12,0,0,.45],57683:[0,.12,0,0,.45]},"Typewriter-Regular":{32:[0,0,0,0,.525],33:[0,.61111,0,0,.525],34:[0,.61111,0,0,.525],35:[0,.61111,0,0,.525],36:[.08333,.69444,0,0,.525],37:[.08333,.69444,0,0,.525],38:[0,.61111,0,0,.525],39:[0,.61111,0,0,.525],40:[.08333,.69444,0,0,.525],41:[.08333,.69444,0,0,.525],42:[0,.52083,0,0,.525],43:[-.08056,.53055,0,0,.525],44:[.13889,.125,0,0,.525],45:[-.08056,.53055,0,0,.525],46:[0,.125,0,0,.525],47:[.08333,.69444,0,0,.525],48:[0,.61111,0,0,.525],49:[0,.61111,0,0,.525],50:[0,.61111,0,0,.525],51:[0,.61111,0,0,.525],52:[0,.61111,0,0,.525],53:[0,.61111,0,0,.525],54:[0,.61111,0,0,.525],55:[0,.61111,0,0,.525],56:[0,.61111,0,0,.525],57:[0,.61111,0,0,.525],58:[0,.43056,0,0,.525],59:[.13889,.43056,0,0,.525],60:[-.05556,.55556,0,0,.525],61:[-.19549,.41562,0,0,.525],62:[-.05556,.55556,0,0,.525],63:[0,.61111,0,0,.525],64:[0,.61111,0,0,.525],65:[0,.61111,0,0,.525],66:[0,.61111,0,0,.525],67:[0,.61111,0,0,.525],68:[0,.61111,0,0,.525],69:[0,.61111,0,0,.525],70:[0,.61111,0,0,.525],71:[0,.61111,0,0,.525],72:[0,.61111,0,0,.525],73:[0,.61111,0,0,.525],74:[0,.61111,0,0,.525],75:[0,.61111,0,0,.525],76:[0,.61111,0,0,.525],77:[0,.61111,0,0,.525],78:[0,.61111,0,0,.525],79:[0,.61111,0,0,.525],80:[0,.61111,0,0,.525],81:[.13889,.61111,0,0,.525],82:[0,.61111,0,0,.525],83:[0,.61111,0,0,.525],84:[0,.61111,0,0,.525],85:[0,.61111,0,0,.525],86:[0,.61111,0,0,.525],87:[0,.61111,0,0,.525],88:[0,.61111,0,0,.525],89:[0,.61111,0,0,.525],90:[0,.61111,0,0,.525],91:[.08333,.69444,0,0,.525],92:[.08333,.69444,0,0,.525],93:[.08333,.69444,0,0,.525],94:[0,.61111,0,0,.525],95:[.09514,0,0,0,.525],96:[0,.61111,0,0,.525],97:[0,.43056,0,0,.525],98:[0,.61111,0,0,.525],99:[0,.43056,0,0,.525],100:[0,.61111,0,0,.525],101:[0,.43056,0,0,.525],102:[0,.61111,0,0,.525],103:[.22222,.43056,0,0,.525],104:[0,.61111,0,0,.525],105:[0,.61111,0,0,.525],106:[.22222,.61111,0,0,.525],107:[0,.61111,0,0,.525],108:[0,.61111,0,0,.525],109:[0,.43056,0,0,.525],110:[0,.43056,0,0,.525],111:[0,.43056,0,0,.525],112:[.22222,.43056,0,0,.525],113:[.22222,.43056,0,0,.525],114:[0,.43056,0,0,.525],115:[0,.43056,0,0,.525],116:[0,.55358,0,0,.525],117:[0,.43056,0,0,.525],118:[0,.43056,0,0,.525],119:[0,.43056,0,0,.525],120:[0,.43056,0,0,.525],121:[.22222,.43056,0,0,.525],122:[0,.43056,0,0,.525],123:[.08333,.69444,0,0,.525],124:[.08333,.69444,0,0,.525],125:[.08333,.69444,0,0,.525],126:[0,.61111,0,0,.525],127:[0,.61111,0,0,.525],160:[0,0,0,0,.525],176:[0,.61111,0,0,.525],184:[.19445,0,0,0,.525],305:[0,.43056,0,0,.525],567:[.22222,.43056,0,0,.525],711:[0,.56597,0,0,.525],713:[0,.56555,0,0,.525],714:[0,.61111,0,0,.525],715:[0,.61111,0,0,.525],728:[0,.61111,0,0,.525],730:[0,.61111,0,0,.525],770:[0,.61111,0,0,.525],771:[0,.61111,0,0,.525],776:[0,.61111,0,0,.525],915:[0,.61111,0,0,.525],916:[0,.61111,0,0,.525],920:[0,.61111,0,0,.525],923:[0,.61111,0,0,.525],926:[0,.61111,0,0,.525],928:[0,.61111,0,0,.525],931:[0,.61111,0,0,.525],933:[0,.61111,0,0,.525],934:[0,.61111,0,0,.525],936:[0,.61111,0,0,.525],937:[0,.61111,0,0,.525],8216:[0,.61111,0,0,.525],8217:[0,.61111,0,0,.525],8242:[0,.61111,0,0,.525],9251:[.11111,.21944,0,0,.525]}},FC={slant:[.25,.25,.25],space:[0,0,0],stretch:[0,0,0],shrink:[0,0,0],xHeight:[.431,.431,.431],quad:[1,1.171,1.472],extraSpace:[0,0,0],num1:[.677,.732,.925],num2:[.394,.384,.387],num3:[.444,.471,.504],denom1:[.686,.752,1.025],denom2:[.345,.344,.532],sup1:[.413,.503,.504],sup2:[.363,.431,.404],sup3:[.289,.286,.294],sub1:[.15,.143,.2],sub2:[.247,.286,.4],supDrop:[.386,.353,.494],subDrop:[.05,.071,.1],delim1:[2.39,1.7,1.98],delim2:[1.01,1.157,1.42],axisHeight:[.25,.25,.25],defaultRuleThickness:[.04,.049,.049],bigOpSpacing1:[.111,.111,.111],bigOpSpacing2:[.166,.166,.166],bigOpSpacing3:[.2,.2,.2],bigOpSpacing4:[.6,.611,.611],bigOpSpacing5:[.1,.143,.143],sqrtRuleThickness:[.04,.04,.04],ptPerEm:[10,10,10],doubleRuleSep:[.2,.2,.2],arrayRuleWidth:[.04,.04,.04],fboxsep:[.3,.3,.3],fboxrule:[.04,.04,.04]},fY={\u00C5:"A",\u00D0:"D",\u00DE:"o",\u00E5:"a",\u00F0:"d",\u00FE:"o",\u0410:"A",\u0411:"B",\u0412:"B",\u0413:"F",\u0414:"A",\u0415:"E",\u0416:"K",\u0417:"3",\u0418:"N",\u0419:"N",\u041A:"K",\u041B:"N",\u041C:"M",\u041D:"H",\u041E:"O",\u041F:"N",\u0420:"P",\u0421:"C",\u0422:"T",\u0423:"y",\u0424:"O",\u0425:"X",\u0426:"U",\u0427:"h",\u0428:"W",\u0429:"W",\u042A:"B",\u042B:"X",\u042C:"B",\u042D:"3",\u042E:"X",\u042F:"R",\u0430:"a",\u0431:"b",\u0432:"a",\u0433:"r",\u0434:"y",\u0435:"e",\u0436:"m",\u0437:"e",\u0438:"n",\u0439:"n",\u043A:"n",\u043B:"n",\u043C:"m",\u043D:"n",\u043E:"o",\u043F:"n",\u0440:"p",\u0441:"c",\u0442:"o",\u0443:"y",\u0444:"b",\u0445:"x",\u0446:"n",\u0447:"n",\u0448:"w",\u0449:"w",\u044A:"a",\u044B:"m",\u044C:"a",\u044D:"e",\u044E:"m",\u044F:"r"};o(UY,"setFontMetrics");o(uD,"getCharacterMetrics");F7={};o(OIe,"getGlobalMetrics");PIe=[[1,1,1],[2,1,1],[3,1,1],[4,2,1],[5,2,1],[6,3,1],[7,4,2],[8,6,3],[9,7,6],[10,8,7],[11,10,9]],pY=[.5,.6,.7,.8,.9,1,1.2,1.44,1.728,2.074,2.488],mY=o(function(t,r){return r.size<2?t:PIe[t-1][r.size-1]},"sizeAtStyle"),ZC=class e{static{o(this,"Options")}constructor(t){this.style=void 0,this.color=void 0,this.size=void 0,this.textSize=void 0,this.phantom=void 0,this.font=void 0,this.fontFamily=void 0,this.fontWeight=void 0,this.fontShape=void 0,this.sizeMultiplier=void 0,this.maxSize=void 0,this.minRuleThickness=void 0,this._fontMetrics=void 0,this.style=t.style,this.color=t.color,this.size=t.size||e.BASESIZE,this.textSize=t.textSize||this.size,this.phantom=!!t.phantom,this.font=t.font||"",this.fontFamily=t.fontFamily||"",this.fontWeight=t.fontWeight||"",this.fontShape=t.fontShape||"",this.sizeMultiplier=pY[this.size-1],this.maxSize=t.maxSize,this.minRuleThickness=t.minRuleThickness,this._fontMetrics=void 0}extend(t){var r={style:this.style,size:this.size,textSize:this.textSize,color:this.color,phantom:this.phantom,font:this.font,fontFamily:this.fontFamily,fontWeight:this.fontWeight,fontShape:this.fontShape,maxSize:this.maxSize,minRuleThickness:this.minRuleThickness};for(var i in t)t.hasOwnProperty(i)&&(r[i]=t[i]);return new e(r)}havingStyle(t){return this.style===t?this:this.extend({style:t,size:mY(this.textSize,t)})}havingCrampedStyle(){return this.havingStyle(this.style.cramp())}havingSize(t){return this.size===t&&this.textSize===t?this:this.extend({style:this.style.text(),size:t,textSize:t,sizeMultiplier:pY[t-1]})}havingBaseStyle(t){t=t||this.style.text();var r=mY(e.BASESIZE,t);return this.size===r&&this.textSize===e.BASESIZE&&this.style===t?this:this.extend({style:t,size:r})}havingBaseSizing(){var t;switch(this.style.id){case 4:case 5:t=3;break;case 6:case 7:t=1;break;default:t=6}return this.extend({style:this.style.text(),size:t})}withColor(t){return this.extend({color:t})}withPhantom(){return this.extend({phantom:!0})}withFont(t){return this.extend({font:t})}withTextFontFamily(t){return this.extend({fontFamily:t,font:""})}withTextFontWeight(t){return this.extend({fontWeight:t,font:""})}withTextFontShape(t){return this.extend({fontShape:t,font:""})}sizingClasses(t){return t.size!==this.size?["sizing","reset-size"+t.size,"size"+this.size]:[]}baseSizingClasses(){return this.size!==e.BASESIZE?["sizing","reset-size"+this.size,"size"+e.BASESIZE]:[]}fontMetrics(){return this._fontMetrics||(this._fontMetrics=OIe(this.size)),this._fontMetrics}getColor(){return this.phantom?"transparent":this.color}};ZC.BASESIZE=6;Q7={pt:1,mm:7227/2540,cm:7227/254,in:72.27,bp:803/800,pc:12,dd:1238/1157,cc:14856/1157,nd:685/642,nc:1370/107,sp:1/65536,px:803/800},BIe={ex:!0,em:!0,mu:!0},HY=o(function(t){return typeof t!="string"&&(t=t.unit),t in Q7||t in BIe||t==="ex"},"validUnit"),Qi=o(function(t,r){var i;if(t.unit in Q7)i=Q7[t.unit]/r.fontMetrics().ptPerEm/r.sizeMultiplier;else if(t.unit==="mu")i=r.fontMetrics().cssEmPerMu;else{var n;if(r.style.isTight()?n=r.havingStyle(r.style.text()):n=r,t.unit==="ex")i=n.fontMetrics().xHeight;else if(t.unit==="em")i=n.fontMetrics().quad;else throw new Lt("Invalid unit: '"+t.unit+"'");n!==r&&(i*=n.sizeMultiplier/r.sizeMultiplier)}return Math.min(t.number*i,r.maxSize)},"calculateSize"),It=o(function(t){return+t.toFixed(4)+"em"},"makeEm"),$h=o(function(t){return t.filter(r=>r).join(" ")},"createClass"),YY=o(function(t,r,i){if(this.classes=t||[],this.attributes={},this.height=0,this.depth=0,this.maxFontSize=0,this.style=i||{},r){r.style.isTight()&&this.classes.push("mtight");var n=r.getColor();n&&(this.style.color=n)}},"initNode"),jY=o(function(t){var r=document.createElement(t);r.className=$h(this.classes);for(var i in this.style)this.style.hasOwnProperty(i)&&(r.style[i]=this.style[i]);for(var n in this.attributes)this.attributes.hasOwnProperty(n)&&r.setAttribute(n,this.attributes[n]);for(var a=0;a<this.children.length;a++)r.appendChild(this.children[a].toNode());return r},"toNode"),FIe=/[\s"'>/=\x00-\x1f]/,XY=o(function(t){var r="<"+t;this.classes.length&&(r+=' class="'+Zr.escape($h(this.classes))+'"');var i="";for(var n in this.style)this.style.hasOwnProperty(n)&&(i+=Zr.hyphenate(n)+":"+this.style[n]+";");i&&(r+=' style="'+Zr.escape(i)+'"');for(var a in this.attributes)if(this.attributes.hasOwnProperty(a)){if(FIe.test(a))throw new Lt("Invalid attribute name '"+a+"'");r+=" "+a+'="'+Zr.escape(this.attributes[a])+'"'}r+=">";for(var s=0;s<this.children.length;s++)r+=this.children[s].toMarkup();return r+="</"+t+">",r},"toMarkup"),Wf=class{static{o(this,"Span")}constructor(t,r,i,n){this.children=void 0,this.attributes=void 0,this.classes=void 0,this.height=void 0,this.depth=void 0,this.width=void 0,this.maxFontSize=void 0,this.style=void 0,YY.call(this,t,i,n),this.children=r||[]}setAttribute(t,r){this.attributes[t]=r}hasClass(t){return this.classes.includes(t)}toNode(){return jY.call(this,"span")}toMarkup(){return XY.call(this,"span")}},vv=class{static{o(this,"Anchor")}constructor(t,r,i,n){this.children=void 0,this.attributes=void 0,this.classes=void 0,this.height=void 0,this.depth=void 0,this.maxFontSize=void 0,this.style=void 0,YY.call(this,r,n),this.children=i||[],this.setAttribute("href",t)}setAttribute(t,r){this.attributes[t]=r}hasClass(t){return this.classes.includes(t)}toNode(){return jY.call(this,"a")}toMarkup(){return XY.call(this,"a")}},J7=class{static{o(this,"Img")}constructor(t,r,i){this.src=void 0,this.alt=void 0,this.classes=void 0,this.height=void 0,this.depth=void 0,this.maxFontSize=void 0,this.style=void 0,this.alt=r,this.src=t,this.classes=["mord"],this.style=i}hasClass(t){return this.classes.includes(t)}toNode(){var t=document.createElement("img");t.src=this.src,t.alt=this.alt,t.className="mord";for(var r in this.style)this.style.hasOwnProperty(r)&&(t.style[r]=this.style[r]);return t}toMarkup(){var t='<img src="'+Zr.escape(this.src)+'"'+(' alt="'+Zr.escape(this.alt)+'"'),r="";for(var i in this.style)this.style.hasOwnProperty(i)&&(r+=Zr.hyphenate(i)+":"+this.style[i]+";");return r&&(t+=' style="'+Zr.escape(r)+'"'),t+="'/>",t}},$Ie={\u00EE:"\u0131\u0302",\u00EF:"\u0131\u0308",\u00ED:"\u0131\u0301",\u00EC:"\u0131\u0300"},Ts=class{static{o(this,"SymbolNode")}constructor(t,r,i,n,a,s,l,u){this.text=void 0,this.height=void 0,this.depth=void 0,this.italic=void 0,this.skew=void 0,this.width=void 0,this.maxFontSize=void 0,this.classes=void 0,this.style=void 0,this.text=t,this.height=r||0,this.depth=i||0,this.italic=n||0,this.skew=a||0,this.width=s||0,this.classes=l||[],this.style=u||{},this.maxFontSize=0;var h=wIe(this.text.charCodeAt(0));h&&this.classes.push(h+"_fallback"),/[îïíì]/.test(this.text)&&(this.text=$Ie[this.text])}hasClass(t){return this.classes.includes(t)}toNode(){var t=document.createTextNode(this.text),r=null;this.italic>0&&(r=document.createElement("span"),r.style.marginRight=It(this.italic)),this.classes.length>0&&(r=r||document.createElement("span"),r.className=$h(this.classes));for(var i in this.style)this.style.hasOwnProperty(i)&&(r=r||document.createElement("span"),r.style[i]=this.style[i]);return r?(r.appendChild(t),r):t}toMarkup(){var t=!1,r="<span";this.classes.length&&(t=!0,r+=' class="',r+=Zr.escape($h(this.classes)),r+='"');var i="";this.italic>0&&(i+="margin-right:"+this.italic+"em;");for(var n in this.style)this.style.hasOwnProperty(n)&&(i+=Zr.hyphenate(n)+":"+this.style[n]+";");i&&(t=!0,r+=' style="'+Zr.escape(i)+'"');var a=Zr.escape(this.text);return t?(r+=">",r+=a,r+="</span>",r):a}},ml=class{static{o(this,"SvgNode")}constructor(t,r){this.children=void 0,this.attributes=void 0,this.children=t||[],this.attributes=r||{}}toNode(){var t="http://www.w3.org/2000/svg",r=document.createElementNS(t,"svg");for(var i in this.attributes)Object.prototype.hasOwnProperty.call(this.attributes,i)&&r.setAttribute(i,this.attributes[i]);for(var n=0;n<this.children.length;n++)r.appendChild(this.children[n].toNode());return r}toMarkup(){var t='<svg xmlns="http://www.w3.org/2000/svg"';for(var r in this.attributes)Object.prototype.hasOwnProperty.call(this.attributes,r)&&(t+=" "+r+'="'+Zr.escape(this.attributes[r])+'"');t+=">";for(var i=0;i<this.children.length;i++)t+=this.children[i].toMarkup();return t+="</svg>",t}},ac=class{static{o(this,"PathNode")}constructor(t,r){this.pathName=void 0,this.alternate=void 0,this.pathName=t,this.alternate=r}toNode(){var t="http://www.w3.org/2000/svg",r=document.createElementNS(t,"path");return this.alternate?r.setAttribute("d",this.alternate):r.setAttribute("d",dY[this.pathName]),r}toMarkup(){return this.alternate?'<path d="'+Zr.escape(this.alternate)+'"/>':'<path d="'+Zr.escape(dY[this.pathName])+'"/>'}},xv=class{static{o(this,"LineNode")}constructor(t){this.attributes=void 0,this.attributes=t||{}}toNode(){var t="http://www.w3.org/2000/svg",r=document.createElementNS(t,"line");for(var i in this.attributes)Object.prototype.hasOwnProperty.call(this.attributes,i)&&r.setAttribute(i,this.attributes[i]);return r}toMarkup(){var t="<line";for(var r in this.attributes)Object.prototype.hasOwnProperty.call(this.attributes,r)&&(t+=" "+r+'="'+Zr.escape(this.attributes[r])+'"');return t+="/>",t}};o(gY,"assertSymbolDomNode");o(zIe,"assertSpan");GIe={bin:1,close:1,inner:1,open:1,punct:1,rel:1},VIe={"accent-token":1,mathord:1,"op-token":1,spacing:1,textord:1},_i={math:{},text:{}};o(q,"defineSymbol");X="math",wt="text",se="main",Le="ams",qi="accent-token",Vt="bin",ja="close",Pm="inner",cr="mathord",Sn="op-token",to="open",nk="punct",Ne="rel",Cu="spacing",ze="textord";q(X,se,Ne,"\u2261","\\equiv",!0);q(X,se,Ne,"\u227A","\\prec",!0);q(X,se,Ne,"\u227B","\\succ",!0);q(X,se,Ne,"\u223C","\\sim",!0);q(X,se,Ne,"\u22A5","\\perp");q(X,se,Ne,"\u2AAF","\\preceq",!0);q(X,se,Ne,"\u2AB0","\\succeq",!0);q(X,se,Ne,"\u2243","\\simeq",!0);q(X,se,Ne,"\u2223","\\mid",!0);q(X,se,Ne,"\u226A","\\ll",!0);q(X,se,Ne,"\u226B","\\gg",!0);q(X,se,Ne,"\u224D","\\asymp",!0);q(X,se,Ne,"\u2225","\\parallel");q(X,se,Ne,"\u22C8","\\bowtie",!0);q(X,se,Ne,"\u2323","\\smile",!0);q(X,se,Ne,"\u2291","\\sqsubseteq",!0);q(X,se,Ne,"\u2292","\\sqsupseteq",!0);q(X,se,Ne,"\u2250","\\doteq",!0);q(X,se,Ne,"\u2322","\\frown",!0);q(X,se,Ne,"\u220B","\\ni",!0);q(X,se,Ne,"\u221D","\\propto",!0);q(X,se,Ne,"\u22A2","\\vdash",!0);q(X,se,Ne,"\u22A3","\\dashv",!0);q(X,se,Ne,"\u220B","\\owns");q(X,se,nk,".","\\ldotp");q(X,se,nk,"\u22C5","\\cdotp");q(X,se,ze,"#","\\#");q(wt,se,ze,"#","\\#");q(X,se,ze,"&","\\&");q(wt,se,ze,"&","\\&");q(X,se,ze,"\u2135","\\aleph",!0);q(X,se,ze,"\u2200","\\forall",!0);q(X,se,ze,"\u210F","\\hbar",!0);q(X,se,ze,"\u2203","\\exists",!0);q(X,se,ze,"\u2207","\\nabla",!0);q(X,se,ze,"\u266D","\\flat",!0);q(X,se,ze,"\u2113","\\ell",!0);q(X,se,ze,"\u266E","\\natural",!0);q(X,se,ze,"\u2663","\\clubsuit",!0);q(X,se,ze,"\u2118","\\wp",!0);q(X,se,ze,"\u266F","\\sharp",!0);q(X,se,ze,"\u2662","\\diamondsuit",!0);q(X,se,ze,"\u211C","\\Re",!0);q(X,se,ze,"\u2661","\\heartsuit",!0);q(X,se,ze,"\u2111","\\Im",!0);q(X,se,ze,"\u2660","\\spadesuit",!0);q(X,se,ze,"\xA7","\\S",!0);q(wt,se,ze,"\xA7","\\S");q(X,se,ze,"\xB6","\\P",!0);q(wt,se,ze,"\xB6","\\P");q(X,se,ze,"\u2020","\\dag");q(wt,se,ze,"\u2020","\\dag");q(wt,se,ze,"\u2020","\\textdagger");q(X,se,ze,"\u2021","\\ddag");q(wt,se,ze,"\u2021","\\ddag");q(wt,se,ze,"\u2021","\\textdaggerdbl");q(X,se,ja,"\u23B1","\\rmoustache",!0);q(X,se,to,"\u23B0","\\lmoustache",!0);q(X,se,ja,"\u27EF","\\rgroup",!0);q(X,se,to,"\u27EE","\\lgroup",!0);q(X,se,Vt,"\u2213","\\mp",!0);q(X,se,Vt,"\u2296","\\ominus",!0);q(X,se,Vt,"\u228E","\\uplus",!0);q(X,se,Vt,"\u2293","\\sqcap",!0);q(X,se,Vt,"\u2217","\\ast");q(X,se,Vt,"\u2294","\\sqcup",!0);q(X,se,Vt,"\u25EF","\\bigcirc",!0);q(X,se,Vt,"\u2219","\\bullet",!0);q(X,se,Vt,"\u2021","\\ddagger");q(X,se,Vt,"\u2240","\\wr",!0);q(X,se,Vt,"\u2A3F","\\amalg");q(X,se,Vt,"&","\\And");q(X,se,Ne,"\u27F5","\\longleftarrow",!0);q(X,se,Ne,"\u21D0","\\Leftarrow",!0);q(X,se,Ne,"\u27F8","\\Longleftarrow",!0);q(X,se,Ne,"\u27F6","\\longrightarrow",!0);q(X,se,Ne,"\u21D2","\\Rightarrow",!0);q(X,se,Ne,"\u27F9","\\Longrightarrow",!0);q(X,se,Ne,"\u2194","\\leftrightarrow",!0);q(X,se,Ne,"\u27F7","\\longleftrightarrow",!0);q(X,se,Ne,"\u21D4","\\Leftrightarrow",!0);q(X,se,Ne,"\u27FA","\\Longleftrightarrow",!0);q(X,se,Ne,"\u21A6","\\mapsto",!0);q(X,se,Ne,"\u27FC","\\longmapsto",!0);q(X,se,Ne,"\u2197","\\nearrow",!0);q(X,se,Ne,"\u21A9","\\hookleftarrow",!0);q(X,se,Ne,"\u21AA","\\hookrightarrow",!0);q(X,se,Ne,"\u2198","\\searrow",!0);q(X,se,Ne,"\u21BC","\\leftharpoonup",!0);q(X,se,Ne,"\u21C0","\\rightharpoonup",!0);q(X,se,Ne,"\u2199","\\swarrow",!0);q(X,se,Ne,"\u21BD","\\leftharpoondown",!0);q(X,se,Ne,"\u21C1","\\rightharpoondown",!0);q(X,se,Ne,"\u2196","\\nwarrow",!0);q(X,se,Ne,"\u21CC","\\rightleftharpoons",!0);q(X,Le,Ne,"\u226E","\\nless",!0);q(X,Le,Ne,"\uE010","\\@nleqslant");q(X,Le,Ne,"\uE011","\\@nleqq");q(X,Le,Ne,"\u2A87","\\lneq",!0);q(X,Le,Ne,"\u2268","\\lneqq",!0);q(X,Le,Ne,"\uE00C","\\@lvertneqq");q(X,Le,Ne,"\u22E6","\\lnsim",!0);q(X,Le,Ne,"\u2A89","\\lnapprox",!0);q(X,Le,Ne,"\u2280","\\nprec",!0);q(X,Le,Ne,"\u22E0","\\npreceq",!0);q(X,Le,Ne,"\u22E8","\\precnsim",!0);q(X,Le,Ne,"\u2AB9","\\precnapprox",!0);q(X,Le,Ne,"\u2241","\\nsim",!0);q(X,Le,Ne,"\uE006","\\@nshortmid");q(X,Le,Ne,"\u2224","\\nmid",!0);q(X,Le,Ne,"\u22AC","\\nvdash",!0);q(X,Le,Ne,"\u22AD","\\nvDash",!0);q(X,Le,Ne,"\u22EA","\\ntriangleleft");q(X,Le,Ne,"\u22EC","\\ntrianglelefteq",!0);q(X,Le,Ne,"\u228A","\\subsetneq",!0);q(X,Le,Ne,"\uE01A","\\@varsubsetneq");q(X,Le,Ne,"\u2ACB","\\subsetneqq",!0);q(X,Le,Ne,"\uE017","\\@varsubsetneqq");q(X,Le,Ne,"\u226F","\\ngtr",!0);q(X,Le,Ne,"\uE00F","\\@ngeqslant");q(X,Le,Ne,"\uE00E","\\@ngeqq");q(X,Le,Ne,"\u2A88","\\gneq",!0);q(X,Le,Ne,"\u2269","\\gneqq",!0);q(X,Le,Ne,"\uE00D","\\@gvertneqq");q(X,Le,Ne,"\u22E7","\\gnsim",!0);q(X,Le,Ne,"\u2A8A","\\gnapprox",!0);q(X,Le,Ne,"\u2281","\\nsucc",!0);q(X,Le,Ne,"\u22E1","\\nsucceq",!0);q(X,Le,Ne,"\u22E9","\\succnsim",!0);q(X,Le,Ne,"\u2ABA","\\succnapprox",!0);q(X,Le,Ne,"\u2246","\\ncong",!0);q(X,Le,Ne,"\uE007","\\@nshortparallel");q(X,Le,Ne,"\u2226","\\nparallel",!0);q(X,Le,Ne,"\u22AF","\\nVDash",!0);q(X,Le,Ne,"\u22EB","\\ntriangleright");q(X,Le,Ne,"\u22ED","\\ntrianglerighteq",!0);q(X,Le,Ne,"\uE018","\\@nsupseteqq");q(X,Le,Ne,"\u228B","\\supsetneq",!0);q(X,Le,Ne,"\uE01B","\\@varsupsetneq");q(X,Le,Ne,"\u2ACC","\\supsetneqq",!0);q(X,Le,Ne,"\uE019","\\@varsupsetneqq");q(X,Le,Ne,"\u22AE","\\nVdash",!0);q(X,Le,Ne,"\u2AB5","\\precneqq",!0);q(X,Le,Ne,"\u2AB6","\\succneqq",!0);q(X,Le,Ne,"\uE016","\\@nsubseteqq");q(X,Le,Vt,"\u22B4","\\unlhd");q(X,Le,Vt,"\u22B5","\\unrhd");q(X,Le,Ne,"\u219A","\\nleftarrow",!0);q(X,Le,Ne,"\u219B","\\nrightarrow",!0);q(X,Le,Ne,"\u21CD","\\nLeftarrow",!0);q(X,Le,Ne,"\u21CF","\\nRightarrow",!0);q(X,Le,Ne,"\u21AE","\\nleftrightarrow",!0);q(X,Le,Ne,"\u21CE","\\nLeftrightarrow",!0);q(X,Le,Ne,"\u25B3","\\vartriangle");q(X,Le,ze,"\u210F","\\hslash");q(X,Le,ze,"\u25BD","\\triangledown");q(X,Le,ze,"\u25CA","\\lozenge");q(X,Le,ze,"\u24C8","\\circledS");q(X,Le,ze,"\xAE","\\circledR");q(wt,Le,ze,"\xAE","\\circledR");q(X,Le,ze,"\u2221","\\measuredangle",!0);q(X,Le,ze,"\u2204","\\nexists");q(X,Le,ze,"\u2127","\\mho");q(X,Le,ze,"\u2132","\\Finv",!0);q(X,Le,ze,"\u2141","\\Game",!0);q(X,Le,ze,"\u2035","\\backprime");q(X,Le,ze,"\u25B2","\\blacktriangle");q(X,Le,ze,"\u25BC","\\blacktriangledown");q(X,Le,ze,"\u25A0","\\blacksquare");q(X,Le,ze,"\u29EB","\\blacklozenge");q(X,Le,ze,"\u2605","\\bigstar");q(X,Le,ze,"\u2222","\\sphericalangle",!0);q(X,Le,ze,"\u2201","\\complement",!0);q(X,Le,ze,"\xF0","\\eth",!0);q(wt,se,ze,"\xF0","\xF0");q(X,Le,ze,"\u2571","\\diagup");q(X,Le,ze,"\u2572","\\diagdown");q(X,Le,ze,"\u25A1","\\square");q(X,Le,ze,"\u25A1","\\Box");q(X,Le,ze,"\u25CA","\\Diamond");q(X,Le,ze,"\xA5","\\yen",!0);q(wt,Le,ze,"\xA5","\\yen",!0);q(X,Le,ze,"\u2713","\\checkmark",!0);q(wt,Le,ze,"\u2713","\\checkmark");q(X,Le,ze,"\u2136","\\beth",!0);q(X,Le,ze,"\u2138","\\daleth",!0);q(X,Le,ze,"\u2137","\\gimel",!0);q(X,Le,ze,"\u03DD","\\digamma",!0);q(X,Le,ze,"\u03F0","\\varkappa");q(X,Le,to,"\u250C","\\@ulcorner",!0);q(X,Le,ja,"\u2510","\\@urcorner",!0);q(X,Le,to,"\u2514","\\@llcorner",!0);q(X,Le,ja,"\u2518","\\@lrcorner",!0);q(X,Le,Ne,"\u2266","\\leqq",!0);q(X,Le,Ne,"\u2A7D","\\leqslant",!0);q(X,Le,Ne,"\u2A95","\\eqslantless",!0);q(X,Le,Ne,"\u2272","\\lesssim",!0);q(X,Le,Ne,"\u2A85","\\lessapprox",!0);q(X,Le,Ne,"\u224A","\\approxeq",!0);q(X,Le,Vt,"\u22D6","\\lessdot");q(X,Le,Ne,"\u22D8","\\lll",!0);q(X,Le,Ne,"\u2276","\\lessgtr",!0);q(X,Le,Ne,"\u22DA","\\lesseqgtr",!0);q(X,Le,Ne,"\u2A8B","\\lesseqqgtr",!0);q(X,Le,Ne,"\u2251","\\doteqdot");q(X,Le,Ne,"\u2253","\\risingdotseq",!0);q(X,Le,Ne,"\u2252","\\fallingdotseq",!0);q(X,Le,Ne,"\u223D","\\backsim",!0);q(X,Le,Ne,"\u22CD","\\backsimeq",!0);q(X,Le,Ne,"\u2AC5","\\subseteqq",!0);q(X,Le,Ne,"\u22D0","\\Subset",!0);q(X,Le,Ne,"\u228F","\\sqsubset",!0);q(X,Le,Ne,"\u227C","\\preccurlyeq",!0);q(X,Le,Ne,"\u22DE","\\curlyeqprec",!0);q(X,Le,Ne,"\u227E","\\precsim",!0);q(X,Le,Ne,"\u2AB7","\\precapprox",!0);q(X,Le,Ne,"\u22B2","\\vartriangleleft");q(X,Le,Ne,"\u22B4","\\trianglelefteq");q(X,Le,Ne,"\u22A8","\\vDash",!0);q(X,Le,Ne,"\u22AA","\\Vvdash",!0);q(X,Le,Ne,"\u2323","\\smallsmile");q(X,Le,Ne,"\u2322","\\smallfrown");q(X,Le,Ne,"\u224F","\\bumpeq",!0);q(X,Le,Ne,"\u224E","\\Bumpeq",!0);q(X,Le,Ne,"\u2267","\\geqq",!0);q(X,Le,Ne,"\u2A7E","\\geqslant",!0);q(X,Le,Ne,"\u2A96","\\eqslantgtr",!0);q(X,Le,Ne,"\u2273","\\gtrsim",!0);q(X,Le,Ne,"\u2A86","\\gtrapprox",!0);q(X,Le,Vt,"\u22D7","\\gtrdot");q(X,Le,Ne,"\u22D9","\\ggg",!0);q(X,Le,Ne,"\u2277","\\gtrless",!0);q(X,Le,Ne,"\u22DB","\\gtreqless",!0);q(X,Le,Ne,"\u2A8C","\\gtreqqless",!0);q(X,Le,Ne,"\u2256","\\eqcirc",!0);q(X,Le,Ne,"\u2257","\\circeq",!0);q(X,Le,Ne,"\u225C","\\triangleq",!0);q(X,Le,Ne,"\u223C","\\thicksim");q(X,Le,Ne,"\u2248","\\thickapprox");q(X,Le,Ne,"\u2AC6","\\supseteqq",!0);q(X,Le,Ne,"\u22D1","\\Supset",!0);q(X,Le,Ne,"\u2290","\\sqsupset",!0);q(X,Le,Ne,"\u227D","\\succcurlyeq",!0);q(X,Le,Ne,"\u22DF","\\curlyeqsucc",!0);q(X,Le,Ne,"\u227F","\\succsim",!0);q(X,Le,Ne,"\u2AB8","\\succapprox",!0);q(X,Le,Ne,"\u22B3","\\vartriangleright");q(X,Le,Ne,"\u22B5","\\trianglerighteq");q(X,Le,Ne,"\u22A9","\\Vdash",!0);q(X,Le,Ne,"\u2223","\\shortmid");q(X,Le,Ne,"\u2225","\\shortparallel");q(X,Le,Ne,"\u226C","\\between",!0);q(X,Le,Ne,"\u22D4","\\pitchfork",!0);q(X,Le,Ne,"\u221D","\\varpropto");q(X,Le,Ne,"\u25C0","\\blacktriangleleft");q(X,Le,Ne,"\u2234","\\therefore",!0);q(X,Le,Ne,"\u220D","\\backepsilon");q(X,Le,Ne,"\u25B6","\\blacktriangleright");q(X,Le,Ne,"\u2235","\\because",!0);q(X,Le,Ne,"\u22D8","\\llless");q(X,Le,Ne,"\u22D9","\\gggtr");q(X,Le,Vt,"\u22B2","\\lhd");q(X,Le,Vt,"\u22B3","\\rhd");q(X,Le,Ne,"\u2242","\\eqsim",!0);q(X,se,Ne,"\u22C8","\\Join");q(X,Le,Ne,"\u2251","\\Doteq",!0);q(X,Le,Vt,"\u2214","\\dotplus",!0);q(X,Le,Vt,"\u2216","\\smallsetminus");q(X,Le,Vt,"\u22D2","\\Cap",!0);q(X,Le,Vt,"\u22D3","\\Cup",!0);q(X,Le,Vt,"\u2A5E","\\doublebarwedge",!0);q(X,Le,Vt,"\u229F","\\boxminus",!0);q(X,Le,Vt,"\u229E","\\boxplus",!0);q(X,Le,Vt,"\u22C7","\\divideontimes",!0);q(X,Le,Vt,"\u22C9","\\ltimes",!0);q(X,Le,Vt,"\u22CA","\\rtimes",!0);q(X,Le,Vt,"\u22CB","\\leftthreetimes",!0);q(X,Le,Vt,"\u22CC","\\rightthreetimes",!0);q(X,Le,Vt,"\u22CF","\\curlywedge",!0);q(X,Le,Vt,"\u22CE","\\curlyvee",!0);q(X,Le,Vt,"\u229D","\\circleddash",!0);q(X,Le,Vt,"\u229B","\\circledast",!0);q(X,Le,Vt,"\u22C5","\\centerdot");q(X,Le,Vt,"\u22BA","\\intercal",!0);q(X,Le,Vt,"\u22D2","\\doublecap");q(X,Le,Vt,"\u22D3","\\doublecup");q(X,Le,Vt,"\u22A0","\\boxtimes",!0);q(X,Le,Ne,"\u21E2","\\dashrightarrow",!0);q(X,Le,Ne,"\u21E0","\\dashleftarrow",!0);q(X,Le,Ne,"\u21C7","\\leftleftarrows",!0);q(X,Le,Ne,"\u21C6","\\leftrightarrows",!0);q(X,Le,Ne,"\u21DA","\\Lleftarrow",!0);q(X,Le,Ne,"\u219E","\\twoheadleftarrow",!0);q(X,Le,Ne,"\u21A2","\\leftarrowtail",!0);q(X,Le,Ne,"\u21AB","\\looparrowleft",!0);q(X,Le,Ne,"\u21CB","\\leftrightharpoons",!0);q(X,Le,Ne,"\u21B6","\\curvearrowleft",!0);q(X,Le,Ne,"\u21BA","\\circlearrowleft",!0);q(X,Le,Ne,"\u21B0","\\Lsh",!0);q(X,Le,Ne,"\u21C8","\\upuparrows",!0);q(X,Le,Ne,"\u21BF","\\upharpoonleft",!0);q(X,Le,Ne,"\u21C3","\\downharpoonleft",!0);q(X,se,Ne,"\u22B6","\\origof",!0);q(X,se,Ne,"\u22B7","\\imageof",!0);q(X,Le,Ne,"\u22B8","\\multimap",!0);q(X,Le,Ne,"\u21AD","\\leftrightsquigarrow",!0);q(X,Le,Ne,"\u21C9","\\rightrightarrows",!0);q(X,Le,Ne,"\u21C4","\\rightleftarrows",!0);q(X,Le,Ne,"\u21A0","\\twoheadrightarrow",!0);q(X,Le,Ne,"\u21A3","\\rightarrowtail",!0);q(X,Le,Ne,"\u21AC","\\looparrowright",!0);q(X,Le,Ne,"\u21B7","\\curvearrowright",!0);q(X,Le,Ne,"\u21BB","\\circlearrowright",!0);q(X,Le,Ne,"\u21B1","\\Rsh",!0);q(X,Le,Ne,"\u21CA","\\downdownarrows",!0);q(X,Le,Ne,"\u21BE","\\upharpoonright",!0);q(X,Le,Ne,"\u21C2","\\downharpoonright",!0);q(X,Le,Ne,"\u21DD","\\rightsquigarrow",!0);q(X,Le,Ne,"\u21DD","\\leadsto");q(X,Le,Ne,"\u21DB","\\Rrightarrow",!0);q(X,Le,Ne,"\u21BE","\\restriction");q(X,se,ze,"\u2018","`");q(X,se,ze,"$","\\$");q(wt,se,ze,"$","\\$");q(wt,se,ze,"$","\\textdollar");q(X,se,ze,"%","\\%");q(wt,se,ze,"%","\\%");q(X,se,ze,"_","\\_");q(wt,se,ze,"_","\\_");q(wt,se,ze,"_","\\textunderscore");q(X,se,ze,"\u2220","\\angle",!0);q(X,se,ze,"\u221E","\\infty",!0);q(X,se,ze,"\u2032","\\prime");q(X,se,ze,"\u25B3","\\triangle");q(X,se,ze,"\u0393","\\Gamma",!0);q(X,se,ze,"\u0394","\\Delta",!0);q(X,se,ze,"\u0398","\\Theta",!0);q(X,se,ze,"\u039B","\\Lambda",!0);q(X,se,ze,"\u039E","\\Xi",!0);q(X,se,ze,"\u03A0","\\Pi",!0);q(X,se,ze,"\u03A3","\\Sigma",!0);q(X,se,ze,"\u03A5","\\Upsilon",!0);q(X,se,ze,"\u03A6","\\Phi",!0);q(X,se,ze,"\u03A8","\\Psi",!0);q(X,se,ze,"\u03A9","\\Omega",!0);q(X,se,ze,"A","\u0391");q(X,se,ze,"B","\u0392");q(X,se,ze,"E","\u0395");q(X,se,ze,"Z","\u0396");q(X,se,ze,"H","\u0397");q(X,se,ze,"I","\u0399");q(X,se,ze,"K","\u039A");q(X,se,ze,"M","\u039C");q(X,se,ze,"N","\u039D");q(X,se,ze,"O","\u039F");q(X,se,ze,"P","\u03A1");q(X,se,ze,"T","\u03A4");q(X,se,ze,"X","\u03A7");q(X,se,ze,"\xAC","\\neg",!0);q(X,se,ze,"\xAC","\\lnot");q(X,se,ze,"\u22A4","\\top");q(X,se,ze,"\u22A5","\\bot");q(X,se,ze,"\u2205","\\emptyset");q(X,Le,ze,"\u2205","\\varnothing");q(X,se,cr,"\u03B1","\\alpha",!0);q(X,se,cr,"\u03B2","\\beta",!0);q(X,se,cr,"\u03B3","\\gamma",!0);q(X,se,cr,"\u03B4","\\delta",!0);q(X,se,cr,"\u03F5","\\epsilon",!0);q(X,se,cr,"\u03B6","\\zeta",!0);q(X,se,cr,"\u03B7","\\eta",!0);q(X,se,cr,"\u03B8","\\theta",!0);q(X,se,cr,"\u03B9","\\iota",!0);q(X,se,cr,"\u03BA","\\kappa",!0);q(X,se,cr,"\u03BB","\\lambda",!0);q(X,se,cr,"\u03BC","\\mu",!0);q(X,se,cr,"\u03BD","\\nu",!0);q(X,se,cr,"\u03BE","\\xi",!0);q(X,se,cr,"\u03BF","\\omicron",!0);q(X,se,cr,"\u03C0","\\pi",!0);q(X,se,cr,"\u03C1","\\rho",!0);q(X,se,cr,"\u03C3","\\sigma",!0);q(X,se,cr,"\u03C4","\\tau",!0);q(X,se,cr,"\u03C5","\\upsilon",!0);q(X,se,cr,"\u03D5","\\phi",!0);q(X,se,cr,"\u03C7","\\chi",!0);q(X,se,cr,"\u03C8","\\psi",!0);q(X,se,cr,"\u03C9","\\omega",!0);q(X,se,cr,"\u03B5","\\varepsilon",!0);q(X,se,cr,"\u03D1","\\vartheta",!0);q(X,se,cr,"\u03D6","\\varpi",!0);q(X,se,cr,"\u03F1","\\varrho",!0);q(X,se,cr,"\u03C2","\\varsigma",!0);q(X,se,cr,"\u03C6","\\varphi",!0);q(X,se,Vt,"\u2217","*",!0);q(X,se,Vt,"+","+");q(X,se,Vt,"\u2212","-",!0);q(X,se,Vt,"\u22C5","\\cdot",!0);q(X,se,Vt,"\u2218","\\circ",!0);q(X,se,Vt,"\xF7","\\div",!0);q(X,se,Vt,"\xB1","\\pm",!0);q(X,se,Vt,"\xD7","\\times",!0);q(X,se,Vt,"\u2229","\\cap",!0);q(X,se,Vt,"\u222A","\\cup",!0);q(X,se,Vt,"\u2216","\\setminus",!0);q(X,se,Vt,"\u2227","\\land");q(X,se,Vt,"\u2228","\\lor");q(X,se,Vt,"\u2227","\\wedge",!0);q(X,se,Vt,"\u2228","\\vee",!0);q(X,se,ze,"\u221A","\\surd");q(X,se,to,"\u27E8","\\langle",!0);q(X,se,to,"\u2223","\\lvert");q(X,se,to,"\u2225","\\lVert");q(X,se,ja,"?","?");q(X,se,ja,"!","!");q(X,se,ja,"\u27E9","\\rangle",!0);q(X,se,ja,"\u2223","\\rvert");q(X,se,ja,"\u2225","\\rVert");q(X,se,Ne,"=","=");q(X,se,Ne,":",":");q(X,se,Ne,"\u2248","\\approx",!0);q(X,se,Ne,"\u2245","\\cong",!0);q(X,se,Ne,"\u2265","\\ge");q(X,se,Ne,"\u2265","\\geq",!0);q(X,se,Ne,"\u2190","\\gets");q(X,se,Ne,">","\\gt",!0);q(X,se,Ne,"\u2208","\\in",!0);q(X,se,Ne,"\uE020","\\@not");q(X,se,Ne,"\u2282","\\subset",!0);q(X,se,Ne,"\u2283","\\supset",!0);q(X,se,Ne,"\u2286","\\subseteq",!0);q(X,se,Ne,"\u2287","\\supseteq",!0);q(X,Le,Ne,"\u2288","\\nsubseteq",!0);q(X,Le,Ne,"\u2289","\\nsupseteq",!0);q(X,se,Ne,"\u22A8","\\models");q(X,se,Ne,"\u2190","\\leftarrow",!0);q(X,se,Ne,"\u2264","\\le");q(X,se,Ne,"\u2264","\\leq",!0);q(X,se,Ne,"<","\\lt",!0);q(X,se,Ne,"\u2192","\\rightarrow",!0);q(X,se,Ne,"\u2192","\\to");q(X,Le,Ne,"\u2271","\\ngeq",!0);q(X,Le,Ne,"\u2270","\\nleq",!0);q(X,se,Cu,"\xA0","\\ ");q(X,se,Cu,"\xA0","\\space");q(X,se,Cu,"\xA0","\\nobreakspace");q(wt,se,Cu,"\xA0","\\ ");q(wt,se,Cu,"\xA0"," ");q(wt,se,Cu,"\xA0","\\space");q(wt,se,Cu,"\xA0","\\nobreakspace");q(X,se,Cu,null,"\\nobreak");q(X,se,Cu,null,"\\allowbreak");q(X,se,nk,",",",");q(X,se,nk,";",";");q(X,Le,Vt,"\u22BC","\\barwedge",!0);q(X,Le,Vt,"\u22BB","\\veebar",!0);q(X,se,Vt,"\u2299","\\odot",!0);q(X,se,Vt,"\u2295","\\oplus",!0);q(X,se,Vt,"\u2297","\\otimes",!0);q(X,se,ze,"\u2202","\\partial",!0);q(X,se,Vt,"\u2298","\\oslash",!0);q(X,Le,Vt,"\u229A","\\circledcirc",!0);q(X,Le,Vt,"\u22A1","\\boxdot",!0);q(X,se,Vt,"\u25B3","\\bigtriangleup");q(X,se,Vt,"\u25BD","\\bigtriangledown");q(X,se,Vt,"\u2020","\\dagger");q(X,se,Vt,"\u22C4","\\diamond");q(X,se,Vt,"\u22C6","\\star");q(X,se,Vt,"\u25C3","\\triangleleft");q(X,se,Vt,"\u25B9","\\triangleright");q(X,se,to,"{","\\{");q(wt,se,ze,"{","\\{");q(wt,se,ze,"{","\\textbraceleft");q(X,se,ja,"}","\\}");q(wt,se,ze,"}","\\}");q(wt,se,ze,"}","\\textbraceright");q(X,se,to,"{","\\lbrace");q(X,se,ja,"}","\\rbrace");q(X,se,to,"[","\\lbrack",!0);q(wt,se,ze,"[","\\lbrack",!0);q(X,se,ja,"]","\\rbrack",!0);q(wt,se,ze,"]","\\rbrack",!0);q(X,se,to,"(","\\lparen",!0);q(X,se,ja,")","\\rparen",!0);q(wt,se,ze,"<","\\textless",!0);q(wt,se,ze,">","\\textgreater",!0);q(X,se,to,"\u230A","\\lfloor",!0);q(X,se,ja,"\u230B","\\rfloor",!0);q(X,se,to,"\u2308","\\lceil",!0);q(X,se,ja,"\u2309","\\rceil",!0);q(X,se,ze,"\\","\\backslash");q(X,se,ze,"\u2223","|");q(X,se,ze,"\u2223","\\vert");q(wt,se,ze,"|","\\textbar",!0);q(X,se,ze,"\u2225","\\|");q(X,se,ze,"\u2225","\\Vert");q(wt,se,ze,"\u2225","\\textbardbl");q(wt,se,ze,"~","\\textasciitilde");q(wt,se,ze,"\\","\\textbackslash");q(wt,se,ze,"^","\\textasciicircum");q(X,se,Ne,"\u2191","\\uparrow",!0);q(X,se,Ne,"\u21D1","\\Uparrow",!0);q(X,se,Ne,"\u2193","\\downarrow",!0);q(X,se,Ne,"\u21D3","\\Downarrow",!0);q(X,se,Ne,"\u2195","\\updownarrow",!0);q(X,se,Ne,"\u21D5","\\Updownarrow",!0);q(X,se,Sn,"\u2210","\\coprod");q(X,se,Sn,"\u22C1","\\bigvee");q(X,se,Sn,"\u22C0","\\bigwedge");q(X,se,Sn,"\u2A04","\\biguplus");q(X,se,Sn,"\u22C2","\\bigcap");q(X,se,Sn,"\u22C3","\\bigcup");q(X,se,Sn,"\u222B","\\int");q(X,se,Sn,"\u222B","\\intop");q(X,se,Sn,"\u222C","\\iint");q(X,se,Sn,"\u222D","\\iiint");q(X,se,Sn,"\u220F","\\prod");q(X,se,Sn,"\u2211","\\sum");q(X,se,Sn,"\u2A02","\\bigotimes");q(X,se,Sn,"\u2A01","\\bigoplus");q(X,se,Sn,"\u2A00","\\bigodot");q(X,se,Sn,"\u222E","\\oint");q(X,se,Sn,"\u222F","\\oiint");q(X,se,Sn,"\u2230","\\oiiint");q(X,se,Sn,"\u2A06","\\bigsqcup");q(X,se,Sn,"\u222B","\\smallint");q(wt,se,Pm,"\u2026","\\textellipsis");q(X,se,Pm,"\u2026","\\mathellipsis");q(wt,se,Pm,"\u2026","\\ldots",!0);q(X,se,Pm,"\u2026","\\ldots",!0);q(X,se,Pm,"\u22EF","\\@cdots",!0);q(X,se,Pm,"\u22F1","\\ddots",!0);q(X,se,ze,"\u22EE","\\varvdots");q(wt,se,ze,"\u22EE","\\varvdots");q(X,se,qi,"\u02CA","\\acute");q(X,se,qi,"\u02CB","\\grave");q(X,se,qi,"\xA8","\\ddot");q(X,se,qi,"~","\\tilde");q(X,se,qi,"\u02C9","\\bar");q(X,se,qi,"\u02D8","\\breve");q(X,se,qi,"\u02C7","\\check");q(X,se,qi,"^","\\hat");q(X,se,qi,"\u20D7","\\vec");q(X,se,qi,"\u02D9","\\dot");q(X,se,qi,"\u02DA","\\mathring");q(X,se,cr,"\uE131","\\@imath");q(X,se,cr,"\uE237","\\@jmath");q(X,se,ze,"\u0131","\u0131");q(X,se,ze,"\u0237","\u0237");q(wt,se,ze,"\u0131","\\i",!0);q(wt,se,ze,"\u0237","\\j",!0);q(wt,se,ze,"\xDF","\\ss",!0);q(wt,se,ze,"\xE6","\\ae",!0);q(wt,se,ze,"\u0153","\\oe",!0);q(wt,se,ze,"\xF8","\\o",!0);q(wt,se,ze,"\xC6","\\AE",!0);q(wt,se,ze,"\u0152","\\OE",!0);q(wt,se,ze,"\xD8","\\O",!0);q(wt,se,qi,"\u02CA","\\'");q(wt,se,qi,"\u02CB","\\`");q(wt,se,qi,"\u02C6","\\^");q(wt,se,qi,"\u02DC","\\~");q(wt,se,qi,"\u02C9","\\=");q(wt,se,qi,"\u02D8","\\u");q(wt,se,qi,"\u02D9","\\.");q(wt,se,qi,"\xB8","\\c");q(wt,se,qi,"\u02DA","\\r");q(wt,se,qi,"\u02C7","\\v");q(wt,se,qi,"\xA8",'\\"');q(wt,se,qi,"\u02DD","\\H");q(wt,se,qi,"\u25EF","\\textcircled");KY={"--":!0,"---":!0,"``":!0,"''":!0};q(wt,se,ze,"\u2013","--",!0);q(wt,se,ze,"\u2013","\\textendash");q(wt,se,ze,"\u2014","---",!0);q(wt,se,ze,"\u2014","\\textemdash");q(wt,se,ze,"\u2018","`",!0);q(wt,se,ze,"\u2018","\\textquoteleft");q(wt,se,ze,"\u2019","'",!0);q(wt,se,ze,"\u2019","\\textquoteright");q(wt,se,ze,"\u201C","``",!0);q(wt,se,ze,"\u201C","\\textquotedblleft");q(wt,se,ze,"\u201D","''",!0);q(wt,se,ze,"\u201D","\\textquotedblright");q(X,se,ze,"\xB0","\\degree",!0);q(wt,se,ze,"\xB0","\\degree");q(wt,se,ze,"\xB0","\\textdegree",!0);q(X,se,ze,"\xA3","\\pounds");q(X,se,ze,"\xA3","\\mathsterling",!0);q(wt,se,ze,"\xA3","\\pounds");q(wt,se,ze,"\xA3","\\textsterling",!0);q(X,Le,ze,"\u2720","\\maltese");q(wt,Le,ze,"\u2720","\\maltese");yY='0123456789/@."';for($C=0;$C<yY.length;$C++)$7=yY.charAt($C),q(X,se,ze,$7,$7);vY='0123456789!@*()-=+";:?/.,';for(zC=0;zC<vY.length;zC++)z7=vY.charAt(zC),q(wt,se,ze,z7,z7);QC="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";for(GC=0;GC<QC.length;GC++)hv=QC.charAt(GC),q(X,se,cr,hv,hv),q(wt,se,ze,hv,hv);q(X,Le,ze,"C","\u2102");q(wt,Le,ze,"C","\u2102");q(X,Le,ze,"H","\u210D");q(wt,Le,ze,"H","\u210D");q(X,Le,ze,"N","\u2115");q(wt,Le,ze,"N","\u2115");q(X,Le,ze,"P","\u2119");q(wt,Le,ze,"P","\u2119");q(X,Le,ze,"Q","\u211A");q(wt,Le,ze,"Q","\u211A");q(X,Le,ze,"R","\u211D");q(wt,Le,ze,"R","\u211D");q(X,Le,ze,"Z","\u2124");q(wt,Le,ze,"Z","\u2124");q(X,se,cr,"h","\u210E");q(wt,se,cr,"h","\u210E");Tr="";for(_a=0;_a<QC.length;_a++)Ki=QC.charAt(_a),Tr=String.fromCharCode(55349,56320+_a),q(X,se,cr,Ki,Tr),q(wt,se,ze,Ki,Tr),Tr=String.fromCharCode(55349,56372+_a),q(X,se,cr,Ki,Tr),q(wt,se,ze,Ki,Tr),Tr=String.fromCharCode(55349,56424+_a),q(X,se,cr,Ki,Tr),q(wt,se,ze,Ki,Tr),Tr=String.fromCharCode(55349,56580+_a),q(X,se,cr,Ki,Tr),q(wt,se,ze,Ki,Tr),Tr=String.fromCharCode(55349,56684+_a),q(X,se,cr,Ki,Tr),q(wt,se,ze,Ki,Tr),Tr=String.fromCharCode(55349,56736+_a),q(X,se,cr,Ki,Tr),q(wt,se,ze,Ki,Tr),Tr=String.fromCharCode(55349,56788+_a),q(X,se,cr,Ki,Tr),q(wt,se,ze,Ki,Tr),Tr=String.fromCharCode(55349,56840+_a),q(X,se,cr,Ki,Tr),q(wt,se,ze,Ki,Tr),Tr=String.fromCharCode(55349,56944+_a),q(X,se,cr,Ki,Tr),q(wt,se,ze,Ki,Tr),_a<26&&(Tr=String.fromCharCode(55349,56632+_a),q(X,se,cr,Ki,Tr),q(wt,se,ze,Ki,Tr),Tr=String.fromCharCode(55349,56476+_a),q(X,se,cr,Ki,Tr),q(wt,se,ze,Ki,Tr));Tr="\u{1D55C}";q(X,se,cr,"k",Tr);q(wt,se,ze,"k",Tr);for(Bh=0;Bh<10;Bh++)gu=Bh.toString(),Tr=String.fromCharCode(55349,57294+Bh),q(X,se,cr,gu,Tr),q(wt,se,ze,gu,Tr),Tr=String.fromCharCode(55349,57314+Bh),q(X,se,cr,gu,Tr),q(wt,se,ze,gu,Tr),Tr=String.fromCharCode(55349,57324+Bh),q(X,se,cr,gu,Tr),q(wt,se,ze,gu,Tr),Tr=String.fromCharCode(55349,57334+Bh),q(X,se,cr,gu,Tr),q(wt,se,ze,gu,Tr);eD="\xD0\xDE\xFE";for(VC=0;VC<eD.length;VC++)dv=eD.charAt(VC),q(X,se,cr,dv,dv),q(wt,se,ze,dv,dv);WC=[["mathbf","textbf","Main-Bold"],["mathbf","textbf","Main-Bold"],["mathnormal","textit","Math-Italic"],["mathnormal","textit","Math-Italic"],["boldsymbol","boldsymbol","Main-BoldItalic"],["boldsymbol","boldsymbol","Main-BoldItalic"],["mathscr","textscr","Script-Regular"],["","",""],["","",""],["","",""],["mathfrak","textfrak","Fraktur-Regular"],["mathfrak","textfrak","Fraktur-Regular"],["mathbb","textbb","AMS-Regular"],["mathbb","textbb","AMS-Regular"],["mathboldfrak","textboldfrak","Fraktur-Regular"],["mathboldfrak","textboldfrak","Fraktur-Regular"],["mathsf","textsf","SansSerif-Regular"],["mathsf","textsf","SansSerif-Regular"],["mathboldsf","textboldsf","SansSerif-Bold"],["mathboldsf","textboldsf","SansSerif-Bold"],["mathitsf","textitsf","SansSerif-Italic"],["mathitsf","textitsf","SansSerif-Italic"],["","",""],["","",""],["mathtt","texttt","Typewriter-Regular"],["mathtt","texttt","Typewriter-Regular"]],xY=[["mathbf","textbf","Main-Bold"],["","",""],["mathsf","textsf","SansSerif-Regular"],["mathboldsf","textboldsf","SansSerif-Bold"],["mathtt","texttt","Typewriter-Regular"]],WIe=o(function(t,r){var i=t.charCodeAt(0),n=t.charCodeAt(1),a=(i-55296)*1024+(n-56320)+65536,s=r==="math"?0:1;if(119808<=a&&a<120484){var l=Math.floor((a-119808)/26);return[WC[l][2],WC[l][s]]}else if(120782<=a&&a<=120831){var u=Math.floor((a-120782)/10);return[xY[u][2],xY[u][s]]}else{if(a===120485||a===120486)return[WC[0][2],WC[0][s]];if(120486<a&&a<120782)return["",""];throw new Lt("Unsupported character: "+t)}},"wideCharacterFont"),ak=o(function(t,r,i){return _i[i][t]&&_i[i][t].replace&&(t=_i[i][t].replace),{value:t,metrics:uD(t,r,i)}},"lookupSymbol"),pl=o(function(t,r,i,n,a){var s=ak(t,r,i),l=s.metrics;t=s.value;var u;if(l){var h=l.italic;(i==="text"||n&&n.font==="mathit")&&(h=0),u=new Ts(t,l.height,l.depth,h,l.skew,l.width,a)}else typeof console<"u"&&console.warn("No character metrics "+("for '"+t+"' in style '"+r+"' and mode '"+i+"'")),u=new Ts(t,0,0,0,0,0,a);if(n){u.maxFontSize=n.sizeMultiplier,n.style.isTight()&&u.classes.push("mtight");var d=n.getColor();d&&(u.style.color=d)}return u},"makeSymbol"),qIe=o(function(t,r,i,n){return n===void 0&&(n=[]),i.font==="boldsymbol"&&ak(t,"Main-Bold",r).metrics?pl(t,"Main-Bold",r,i,n.concat(["mathbf"])):t==="\\"||_i[r][t].font==="main"?pl(t,"Main-Regular",r,i,n):pl(t,"AMS-Regular",r,i,n.concat(["amsrm"]))},"mathsym"),UIe=o(function(t,r,i,n,a){return a!=="textord"&&ak(t,"Math-BoldItalic",r).metrics?{fontName:"Math-BoldItalic",fontClass:"boldsymbol"}:{fontName:"Main-Bold",fontClass:"mathbf"}},"boldsymbol"),HIe=o(function(t,r,i){var n=t.mode,a=t.text,s=["mord"],l=n==="math"||n==="text"&&r.font,u=l?r.font:r.fontFamily,h="",d="";if(a.charCodeAt(0)===55349&&([h,d]=WIe(a,n)),h.length>0)return pl(a,h,n,r,s.concat(d));if(u){var f,p;if(u==="boldsymbol"){var m=UIe(a,n,r,s,i);f=m.fontName,p=[m.fontClass]}else l?(f=JY[u].fontName,p=[u]):(f=qC(u,r.fontWeight,r.fontShape),p=[u,r.fontWeight,r.fontShape]);if(ak(a,f,n).metrics)return pl(a,f,n,r,s.concat(p));if(KY.hasOwnProperty(a)&&f.slice(0,10)==="Typewriter"){for(var g=[],y=0;y<a.length;y++)g.push(pl(a[y],f,n,r,s.concat(p)));return QY(g)}}if(i==="mathord")return pl(a,"Math-Italic",n,r,s.concat(["mathnormal"]));if(i==="textord"){var v=_i[n][a]&&_i[n][a].font;if(v==="ams"){var x=qC("amsrm",r.fontWeight,r.fontShape);return pl(a,x,n,r,s.concat("amsrm",r.fontWeight,r.fontShape))}else if(v==="main"||!v){var b=qC("textrm",r.fontWeight,r.fontShape);return pl(a,b,n,r,s.concat(r.fontWeight,r.fontShape))}else{var T=qC(v,r.fontWeight,r.fontShape);return pl(a,T,n,r,s.concat(T,r.fontWeight,r.fontShape))}}else throw new Error("unexpected type: "+i+" in makeOrd")},"makeOrd"),YIe=o((e,t)=>{if($h(e.classes)!==$h(t.classes)||e.skew!==t.skew||e.maxFontSize!==t.maxFontSize)return!1;if(e.classes.length===1){var r=e.classes[0];if(r==="mbin"||r==="mord")return!1}for(var i in e.style)if(e.style.hasOwnProperty(i)&&e.style[i]!==t.style[i])return!1;for(var n in t.style)if(t.style.hasOwnProperty(n)&&e.style[n]!==t.style[n])return!1;return!0},"canCombine"),jIe=o(e=>{for(var t=0;t<e.length-1;t++){var r=e[t],i=e[t+1];r instanceof Ts&&i instanceof Ts&&YIe(r,i)&&(r.text+=i.text,r.height=Math.max(r.height,i.height),r.depth=Math.max(r.depth,i.depth),r.italic=i.italic,e.splice(t+1,1),t--)}return e},"tryCombineChars"),hD=o(function(t){for(var r=0,i=0,n=0,a=0;a<t.children.length;a++){var s=t.children[a];s.height>r&&(r=s.height),s.depth>i&&(i=s.depth),s.maxFontSize>n&&(n=s.maxFontSize)}t.height=r,t.depth=i,t.maxFontSize=n},"sizeElementFromChildren"),xs=o(function(t,r,i,n){var a=new Wf(t,r,i,n);return hD(a),a},"makeSpan"),ZY=o((e,t,r,i)=>new Wf(e,t,r,i),"makeSvgSpan"),XIe=o(function(t,r,i){var n=xs([t],[],r);return n.height=Math.max(i||r.fontMetrics().defaultRuleThickness,r.minRuleThickness),n.style.borderBottomWidth=It(n.height),n.maxFontSize=1,n},"makeLineSpan"),KIe=o(function(t,r,i,n){var a=new vv(t,r,i,n);return hD(a),a},"makeAnchor"),QY=o(function(t){var r=new Vf(t);return hD(r),r},"makeFragment"),ZIe=o(function(t,r){return t instanceof Vf?xs([],[t],r):t},"wrapFragment"),QIe=o(function(t){if(t.positionType==="individualShift"){for(var r=t.children,i=[r[0]],n=-r[0].shift-r[0].elem.depth,a=n,s=1;s<r.length;s++){var l=-r[s].shift-a-r[s].elem.depth,u=l-(r[s-1].elem.height+r[s-1].elem.depth);a=a+l,i.push({type:"kern",size:u}),i.push(r[s])}return{children:i,depth:n}}var h;if(t.positionType==="top"){for(var d=t.positionData,f=0;f<t.children.length;f++){var p=t.children[f];d-=p.type==="kern"?p.size:p.elem.height+p.elem.depth}h=d}else if(t.positionType==="bottom")h=-t.positionData;else{var m=t.children[0];if(m.type!=="elem")throw new Error('First child must have type "elem".');if(t.positionType==="shift")h=-m.elem.depth-t.positionData;else if(t.positionType==="firstBaseline")h=-m.elem.depth;else throw new Error("Invalid positionType "+t.positionType+".")}return{children:t.children,depth:h}},"getVListChildrenAndDepth"),JIe=o(function(t,r){for(var{children:i,depth:n}=QIe(t),a=0,s=0;s<i.length;s++){var l=i[s];if(l.type==="elem"){var u=l.elem;a=Math.max(a,u.maxFontSize,u.height)}}a+=2;var h=xs(["pstrut"],[]);h.style.height=It(a);for(var d=[],f=n,p=n,m=n,g=0;g<i.length;g++){var y=i[g];if(y.type==="kern")m+=y.size;else{var v=y.elem,x=y.wrapperClasses||[],b=y.wrapperStyle||{},T=xs(x,[h,v],void 0,b);T.style.top=It(-a-m-v.depth),y.marginLeft&&(T.style.marginLeft=y.marginLeft),y.marginRight&&(T.style.marginRight=y.marginRight),d.push(T),m+=v.height+v.depth}f=Math.min(f,m),p=Math.max(p,m)}var w=xs(["vlist"],d);w.style.height=It(p);var C;if(f<0){var k=xs([],[]),E=xs(["vlist"],[k]);E.style.height=It(-f);var A=xs(["vlist-s"],[new Ts("\u200B")]);C=[xs(["vlist-r"],[w,A]),xs(["vlist-r"],[E])]}else C=[xs(["vlist-r"],[w])];var N=xs(["vlist-t"],C);return C.length===2&&N.classes.push("vlist-t2"),N.height=p,N.depth=-f,N},"makeVList"),e9e=o((e,t)=>{var r=xs(["mspace"],[],t),i=Qi(e,t);return r.style.marginRight=It(i),r},"makeGlue"),qC=o(function(t,r,i){var n="";switch(t){case"amsrm":n="AMS";break;case"textrm":n="Main";break;case"textsf":n="SansSerif";break;case"texttt":n="Typewriter";break;default:n=t}var a;return r==="textbf"&&i==="textit"?a="BoldItalic":r==="textbf"?a="Bold":r==="textit"?a="Italic":a="Regular",n+"-"+a},"retrieveTextFontName"),JY={mathbf:{variant:"bold",fontName:"Main-Bold"},mathrm:{variant:"normal",fontName:"Main-Regular"},textit:{variant:"italic",fontName:"Main-Italic"},mathit:{variant:"italic",fontName:"Main-Italic"},mathnormal:{variant:"italic",fontName:"Math-Italic"},mathsfit:{variant:"sans-serif-italic",fontName:"SansSerif-Italic"},mathbb:{variant:"double-struck",fontName:"AMS-Regular"},mathcal:{variant:"script",fontName:"Caligraphic-Regular"},mathfrak:{variant:"fraktur",fontName:"Fraktur-Regular"},mathscr:{variant:"script",fontName:"Script-Regular"},mathsf:{variant:"sans-serif",fontName:"SansSerif-Regular"},mathtt:{variant:"monospace",fontName:"Typewriter-Regular"}},ej={vec:["vec",.471,.714],oiintSize1:["oiintSize1",.957,.499],oiintSize2:["oiintSize2",1.472,.659],oiiintSize1:["oiiintSize1",1.304,.499],oiiintSize2:["oiiintSize2",1.98,.659]},t9e=o(function(t,r){var[i,n,a]=ej[t],s=new ac(i),l=new ml([s],{width:It(n),height:It(a),style:"width:"+It(n),viewBox:"0 0 "+1e3*n+" "+1e3*a,preserveAspectRatio:"xMinYMin"}),u=ZY(["overlay"],[l],r);return u.height=a,u.style.height=It(a),u.style.width=It(n),u},"staticSvg"),Ke={fontMap:JY,makeSymbol:pl,mathsym:qIe,makeSpan:xs,makeSvgSpan:ZY,makeLineSpan:XIe,makeAnchor:KIe,makeFragment:QY,wrapFragment:ZIe,makeVList:JIe,makeOrd:HIe,makeGlue:e9e,staticSvg:t9e,svgData:ej,tryCombineChars:jIe},Zi={number:3,unit:"mu"},Gf={number:4,unit:"mu"},yu={number:5,unit:"mu"},r9e={mord:{mop:Zi,mbin:Gf,mrel:yu,minner:Zi},mop:{mord:Zi,mop:Zi,mrel:yu,minner:Zi},mbin:{mord:Gf,mop:Gf,mopen:Gf,minner:Gf},mrel:{mord:yu,mop:yu,mopen:yu,minner:yu},mopen:{},mclose:{mop:Zi,mbin:Gf,mrel:yu,minner:Zi},mpunct:{mord:Zi,mop:Zi,mrel:yu,mopen:Zi,mclose:Zi,mpunct:Zi,minner:Zi},minner:{mord:Zi,mop:Zi,mbin:Gf,mrel:yu,mopen:Zi,mpunct:Zi,minner:Zi}},i9e={mord:{mop:Zi},mop:{mord:Zi,mop:Zi},mbin:{},mrel:{},mopen:{},mclose:{mop:Zi},mpunct:{},minner:{mop:Zi}},tj={},JC={},ek={};o(Bt,"defineFunction");o(qf,"defineFunctionBuilders");tk=o(function(t){return t.type==="ordgroup"&&t.body.length===1?t.body[0]:t},"normalizeArgument"),gn=o(function(t){return t.type==="ordgroup"?t.body:[t]},"ordargument"),bu=Ke.makeSpan,n9e=["leftmost","mbin","mopen","mrel","mop","mpunct"],a9e=["rightmost","mrel","mclose","mpunct"],s9e={display:ur.DISPLAY,text:ur.TEXT,script:ur.SCRIPT,scriptscript:ur.SCRIPTSCRIPT},o9e={mord:"mord",mop:"mop",mbin:"mbin",mrel:"mrel",mopen:"mopen",mclose:"mclose",mpunct:"mpunct",minner:"minner"},Fn=o(function(t,r,i,n){n===void 0&&(n=[null,null]);for(var a=[],s=0;s<t.length;s++){var l=Yr(t[s],r);if(l instanceof Vf){var u=l.children;a.push(...u)}else a.push(l)}if(Ke.tryCombineChars(a),!i)return a;var h=r;if(t.length===1){var d=t[0];d.type==="sizing"?h=r.havingSize(d.size):d.type==="styling"&&(h=r.havingStyle(s9e[d.style]))}var f=bu([n[0]||"leftmost"],[],r),p=bu([n[1]||"rightmost"],[],r),m=i==="root";return bY(a,(g,y)=>{var v=y.classes[0],x=g.classes[0];v==="mbin"&&a9e.includes(x)?y.classes[0]="mord":x==="mbin"&&n9e.includes(v)&&(g.classes[0]="mord")},{node:f},p,m),bY(a,(g,y)=>{var v=tD(y),x=tD(g),b=v&&x?g.hasClass("mtight")?i9e[v][x]:r9e[v][x]:null;if(b)return Ke.makeGlue(b,h)},{node:f},p,m),a},"buildExpression"),bY=o(function e(t,r,i,n,a){n&&t.push(n);for(var s=0;s<t.length;s++){var l=t[s],u=rj(l);if(u){e(u.children,r,i,null,a);continue}var h=!l.hasClass("mspace");if(h){var d=r(l,i.node);d&&(i.insertAfter?i.insertAfter(d):(t.unshift(d),s++))}h?i.node=l:a&&l.hasClass("newline")&&(i.node=bu(["leftmost"])),i.insertAfter=(f=>p=>{t.splice(f+1,0,p),s++})(s)}n&&t.pop()},"traverseNonSpaceNodes"),rj=o(function(t){return t instanceof Vf||t instanceof vv||t instanceof Wf&&t.hasClass("enclosing")?t:null},"checkPartialGroup"),l9e=o(function e(t,r){var i=rj(t);if(i){var n=i.children;if(n.length){if(r==="right")return e(n[n.length-1],"right");if(r==="left")return e(n[0],"left")}}return t},"getOutermostNode"),tD=o(function(t,r){return t?(r&&(t=l9e(t,r)),o9e[t.classes[0]]||null):null},"getTypeOfDomTree"),bv=o(function(t,r){var i=["nulldelimiter"].concat(t.baseSizingClasses());return bu(r.concat(i))},"makeNullDelimiter"),Yr=o(function(t,r,i){if(!t)return bu();if(JC[t.type]){var n=JC[t.type](t,r);if(i&&r.size!==i.size){n=bu(r.sizingClasses(i),[n],r);var a=r.sizeMultiplier/i.sizeMultiplier;n.height*=a,n.depth*=a}return n}else throw new Lt("Got group of unknown type: '"+t.type+"'")},"buildGroup");o(UC,"buildHTMLUnbreakable");o(rD,"buildHTML");o(ij,"newDocumentFragment");Ha=class{static{o(this,"MathNode")}constructor(t,r,i){this.type=void 0,this.attributes=void 0,this.children=void 0,this.classes=void 0,this.type=t,this.attributes={},this.children=r||[],this.classes=i||[]}setAttribute(t,r){this.attributes[t]=r}getAttribute(t){return this.attributes[t]}toNode(){var t=document.createElementNS("http://www.w3.org/1998/Math/MathML",this.type);for(var r in this.attributes)Object.prototype.hasOwnProperty.call(this.attributes,r)&&t.setAttribute(r,this.attributes[r]);this.classes.length>0&&(t.className=$h(this.classes));for(var i=0;i<this.children.length;i++)if(this.children[i]instanceof Mo&&this.children[i+1]instanceof Mo){for(var n=this.children[i].toText()+this.children[++i].toText();this.children[i+1]instanceof Mo;)n+=this.children[++i].toText();t.appendChild(new Mo(n).toNode())}else t.appendChild(this.children[i].toNode());return t}toMarkup(){var t="<"+this.type;for(var r in this.attributes)Object.prototype.hasOwnProperty.call(this.attributes,r)&&(t+=" "+r+'="',t+=Zr.escape(this.attributes[r]),t+='"');this.classes.length>0&&(t+=' class ="'+Zr.escape($h(this.classes))+'"'),t+=">";for(var i=0;i<this.children.length;i++)t+=this.children[i].toMarkup();return t+="</"+this.type+">",t}toText(){return this.children.map(t=>t.toText()).join("")}},Mo=class{static{o(this,"TextNode")}constructor(t){this.text=void 0,this.text=t}toNode(){return document.createTextNode(this.text)}toMarkup(){return Zr.escape(this.toText())}toText(){return this.text}},iD=class{static{o(this,"SpaceNode")}constructor(t){this.width=void 0,this.character=void 0,this.width=t,t>=.05555&&t<=.05556?this.character="\u200A":t>=.1666&&t<=.1667?this.character="\u2009":t>=.2222&&t<=.2223?this.character="\u2005":t>=.2777&&t<=.2778?this.character="\u2005\u200A":t>=-.05556&&t<=-.05555?this.character="\u200A\u2063":t>=-.1667&&t<=-.1666?this.character="\u2009\u2063":t>=-.2223&&t<=-.2222?this.character="\u205F\u2063":t>=-.2778&&t<=-.2777?this.character="\u2005\u2063":this.character=null}toNode(){if(this.character)return document.createTextNode(this.character);var t=document.createElementNS("http://www.w3.org/1998/Math/MathML","mspace");return t.setAttribute("width",It(this.width)),t}toMarkup(){return this.character?"<mtext>"+this.character+"</mtext>":'<mspace width="'+It(this.width)+'"/>'}toText(){return this.character?this.character:" "}},Dt={MathNode:Ha,TextNode:Mo,SpaceNode:iD,newDocumentFragment:ij},No=o(function(t,r,i){return _i[r][t]&&_i[r][t].replace&&t.charCodeAt(0)!==55349&&!(KY.hasOwnProperty(t)&&i&&(i.fontFamily&&i.fontFamily.slice(4,6)==="tt"||i.font&&i.font.slice(4,6)==="tt"))&&(t=_i[r][t].replace),new Dt.TextNode(t)},"makeText"),dD=o(function(t){return t.length===1?t[0]:new Dt.MathNode("mrow",t)},"makeRow"),fD=o(function(t,r){if(r.fontFamily==="texttt")return"monospace";if(r.fontFamily==="textsf")return r.fontShape==="textit"&&r.fontWeight==="textbf"?"sans-serif-bold-italic":r.fontShape==="textit"?"sans-serif-italic":r.fontWeight==="textbf"?"bold-sans-serif":"sans-serif";if(r.fontShape==="textit"&&r.fontWeight==="textbf")return"bold-italic";if(r.fontShape==="textit")return"italic";if(r.fontWeight==="textbf")return"bold";var i=r.font;if(!i||i==="mathnormal")return null;var n=t.mode;if(i==="mathit")return"italic";if(i==="boldsymbol")return t.type==="textord"?"bold":"bold-italic";if(i==="mathbf")return"bold";if(i==="mathbb")return"double-struck";if(i==="mathsfit")return"sans-serif-italic";if(i==="mathfrak")return"fraktur";if(i==="mathscr"||i==="mathcal")return"script";if(i==="mathsf")return"sans-serif";if(i==="mathtt")return"monospace";var a=t.text;if(["\\imath","\\jmath"].includes(a))return null;_i[n][a]&&_i[n][a].replace&&(a=_i[n][a].replace);var s=Ke.fontMap[i].fontName;return uD(a,s,n)?Ke.fontMap[i].variant:null},"getVariant");o(G7,"isNumberPunctuation");Cs=o(function(t,r,i){if(t.length===1){var n=Ti(t[0],r);return i&&n instanceof Ha&&n.type==="mo"&&(n.setAttribute("lspace","0em"),n.setAttribute("rspace","0em")),[n]}for(var a=[],s,l=0;l<t.length;l++){var u=Ti(t[l],r);if(u instanceof Ha&&s instanceof Ha){if(u.type==="mtext"&&s.type==="mtext"&&u.getAttribute("mathvariant")===s.getAttribute("mathvariant")){s.children.push(...u.children);continue}else if(u.type==="mn"&&s.type==="mn"){s.children.push(...u.children);continue}else if(G7(u)&&s.type==="mn"){s.children.push(...u.children);continue}else if(u.type==="mn"&&G7(s))u.children=[...s.children,...u.children],a.pop();else if((u.type==="msup"||u.type==="msub")&&u.children.length>=1&&(s.type==="mn"||G7(s))){var h=u.children[0];h instanceof Ha&&h.type==="mn"&&(h.children=[...s.children,...h.children],a.pop())}else if(s.type==="mi"&&s.children.length===1){var d=s.children[0];if(d instanceof Mo&&d.text==="\u0338"&&(u.type==="mo"||u.type==="mi"||u.type==="mn")){var f=u.children[0];f instanceof Mo&&f.text.length>0&&(f.text=f.text.slice(0,1)+"\u0338"+f.text.slice(1),a.pop())}}}a.push(u),s=u}return a},"buildExpression"),zh=o(function(t,r,i){return dD(Cs(t,r,i))},"buildExpressionRow"),Ti=o(function(t,r){if(!t)return new Dt.MathNode("mrow");if(ek[t.type]){var i=ek[t.type](t,r);return i}else throw new Lt("Got group of unknown type: '"+t.type+"'")},"buildGroup");o(TY,"buildMathML");nj=o(function(t){return new ZC({style:t.displayMode?ur.DISPLAY:ur.TEXT,maxSize:t.maxSize,minRuleThickness:t.minRuleThickness})},"optionsFromSettings"),aj=o(function(t,r){if(r.displayMode){var i=["katex-display"];r.leqno&&i.push("leqno"),r.fleqn&&i.push("fleqn"),t=Ke.makeSpan(i,[t])}return t},"displayWrap"),c9e=o(function(t,r,i){var n=nj(i),a;if(i.output==="mathml")return TY(t,r,n,i.displayMode,!0);if(i.output==="html"){var s=rD(t,n);a=Ke.makeSpan(["katex"],[s])}else{var l=TY(t,r,n,i.displayMode,!1),u=rD(t,n);a=Ke.makeSpan(["katex"],[l,u])}return aj(a,i)},"buildTree"),u9e=o(function(t,r,i){var n=nj(i),a=rD(t,n),s=Ke.makeSpan(["katex"],[a]);return aj(s,i)},"buildHTMLTree"),h9e={widehat:"^",widecheck:"\u02C7",widetilde:"~",utilde:"~",overleftarrow:"\u2190",underleftarrow:"\u2190",xleftarrow:"\u2190",overrightarrow:"\u2192",underrightarrow:"\u2192",xrightarrow:"\u2192",underbrace:"\u23DF",overbrace:"\u23DE",overgroup:"\u23E0",undergroup:"\u23E1",overleftrightarrow:"\u2194",underleftrightarrow:"\u2194",xleftrightarrow:"\u2194",Overrightarrow:"\u21D2",xRightarrow:"\u21D2",overleftharpoon:"\u21BC",xleftharpoonup:"\u21BC",overrightharpoon:"\u21C0",xrightharpoonup:"\u21C0",xLeftarrow:"\u21D0",xLeftrightarrow:"\u21D4",xhookleftarrow:"\u21A9",xhookrightarrow:"\u21AA",xmapsto:"\u21A6",xrightharpoondown:"\u21C1",xleftharpoondown:"\u21BD",xrightleftharpoons:"\u21CC",xleftrightharpoons:"\u21CB",xtwoheadleftarrow:"\u219E",xtwoheadrightarrow:"\u21A0",xlongequal:"=",xtofrom:"\u21C4",xrightleftarrows:"\u21C4",xrightequilibrium:"\u21CC",xleftequilibrium:"\u21CB","\\cdrightarrow":"\u2192","\\cdleftarrow":"\u2190","\\cdlongequal":"="},d9e=o(function(t){var r=new Dt.MathNode("mo",[new Dt.TextNode(h9e[t.replace(/^\\/,"")])]);return r.setAttribute("stretchy","true"),r},"mathMLnode"),f9e={overrightarrow:[["rightarrow"],.888,522,"xMaxYMin"],overleftarrow:[["leftarrow"],.888,522,"xMinYMin"],underrightarrow:[["rightarrow"],.888,522,"xMaxYMin"],underleftarrow:[["leftarrow"],.888,522,"xMinYMin"],xrightarrow:[["rightarrow"],1.469,522,"xMaxYMin"],"\\cdrightarrow":[["rightarrow"],3,522,"xMaxYMin"],xleftarrow:[["leftarrow"],1.469,522,"xMinYMin"],"\\cdleftarrow":[["leftarrow"],3,522,"xMinYMin"],Overrightarrow:[["doublerightarrow"],.888,560,"xMaxYMin"],xRightarrow:[["doublerightarrow"],1.526,560,"xMaxYMin"],xLeftarrow:[["doubleleftarrow"],1.526,560,"xMinYMin"],overleftharpoon:[["leftharpoon"],.888,522,"xMinYMin"],xleftharpoonup:[["leftharpoon"],.888,522,"xMinYMin"],xleftharpoondown:[["leftharpoondown"],.888,522,"xMinYMin"],overrightharpoon:[["rightharpoon"],.888,522,"xMaxYMin"],xrightharpoonup:[["rightharpoon"],.888,522,"xMaxYMin"],xrightharpoondown:[["rightharpoondown"],.888,522,"xMaxYMin"],xlongequal:[["longequal"],.888,334,"xMinYMin"],"\\cdlongequal":[["longequal"],3,334,"xMinYMin"],xtwoheadleftarrow:[["twoheadleftarrow"],.888,334,"xMinYMin"],xtwoheadrightarrow:[["twoheadrightarrow"],.888,334,"xMaxYMin"],overleftrightarrow:[["leftarrow","rightarrow"],.888,522],overbrace:[["leftbrace","midbrace","rightbrace"],1.6,548],underbrace:[["leftbraceunder","midbraceunder","rightbraceunder"],1.6,548],underleftrightarrow:[["leftarrow","rightarrow"],.888,522],xleftrightarrow:[["leftarrow","rightarrow"],1.75,522],xLeftrightarrow:[["doubleleftarrow","doublerightarrow"],1.75,560],xrightleftharpoons:[["leftharpoondownplus","rightharpoonplus"],1.75,716],xleftrightharpoons:[["leftharpoonplus","rightharpoondownplus"],1.75,716],xhookleftarrow:[["leftarrow","righthook"],1.08,522],xhookrightarrow:[["lefthook","rightarrow"],1.08,522],overlinesegment:[["leftlinesegment","rightlinesegment"],.888,522],underlinesegment:[["leftlinesegment","rightlinesegment"],.888,522],overgroup:[["leftgroup","rightgroup"],.888,342],undergroup:[["leftgroupunder","rightgroupunder"],.888,342],xmapsto:[["leftmapsto","rightarrow"],1.5,522],xtofrom:[["leftToFrom","rightToFrom"],1.75,528],xrightleftarrows:[["baraboveleftarrow","rightarrowabovebar"],1.75,901],xrightequilibrium:[["baraboveshortleftharpoon","rightharpoonaboveshortbar"],1.75,716],xleftequilibrium:[["shortbaraboveleftharpoon","shortrightharpoonabovebar"],1.75,716]},p9e=o(function(t){return t.type==="ordgroup"?t.body.length:1},"groupLength"),m9e=o(function(t,r){function i(){var l=4e5,u=t.label.slice(1);if(["widehat","widecheck","widetilde","utilde"].includes(u)){var h=t,d=p9e(h.base),f,p,m;if(d>5)u==="widehat"||u==="widecheck"?(f=420,l=2364,m=.42,p=u+"4"):(f=312,l=2340,m=.34,p="tilde4");else{var g=[1,1,2,2,3,3][d];u==="widehat"||u==="widecheck"?(l=[0,1062,2364,2364,2364][g],f=[0,239,300,360,420][g],m=[0,.24,.3,.3,.36,.42][g],p=u+g):(l=[0,600,1033,2339,2340][g],f=[0,260,286,306,312][g],m=[0,.26,.286,.3,.306,.34][g],p="tilde"+g)}var y=new ac(p),v=new ml([y],{width:"100%",height:It(m),viewBox:"0 0 "+l+" "+f,preserveAspectRatio:"none"});return{span:Ke.makeSvgSpan([],[v],r),minWidth:0,height:m}}else{var x=[],b=f9e[u],[T,w,C]=b,k=C/1e3,E=T.length,A,N;if(E===1){var P=b[3];A=["hide-tail"],N=[P]}else if(E===2)A=["halfarrow-left","halfarrow-right"],N=["xMinYMin","xMaxYMin"];else if(E===3)A=["brace-left","brace-center","brace-right"],N=["xMinYMin","xMidYMin","xMaxYMin"];else throw new Error(`Correct katexImagesData or update code here to support
-                    `+E+" children.");for(var I=0;I<E;I++){var D=new ac(T[I]),_=new ml([D],{width:"400em",height:It(k),viewBox:"0 0 "+l+" "+C,preserveAspectRatio:N[I]+" slice"}),R=Ke.makeSvgSpan([A[I]],[_],r);if(E===1)return{span:R,minWidth:w,height:k};R.style.height=It(k),x.push(R)}return{span:Ke.makeSpan(["stretchy"],x,r),minWidth:w,height:k}}}o(i,"buildSvgSpan_");var{span:n,minWidth:a,height:s}=i();return n.height=s,n.style.height=It(s),a>0&&(n.style.minWidth=It(a)),n},"svgSpan"),g9e=o(function(t,r,i,n,a){var s,l=t.height+t.depth+i+n;if(/fbox|color|angl/.test(r)){if(s=Ke.makeSpan(["stretchy",r],[],a),r==="fbox"){var u=a.color&&a.getColor();u&&(s.style.borderColor=u)}}else{var h=[];/^[bx]cancel$/.test(r)&&h.push(new xv({x1:"0",y1:"0",x2:"100%",y2:"100%","stroke-width":"0.046em"})),/^x?cancel$/.test(r)&&h.push(new xv({x1:"0",y1:"100%",x2:"100%",y2:"0","stroke-width":"0.046em"}));var d=new ml(h,{width:"100%",height:It(l)});s=Ke.makeSvgSpan([],[d],a)}return s.height=l,s.style.height=It(l),s},"encloseSpan"),Tu={encloseSpan:g9e,mathMLnode:d9e,svgSpan:m9e};o(Nr,"assertNodeType");o(pD,"assertSymbolNodeType");o(sk,"checkSymbolNodeType");mD=o((e,t)=>{var r,i,n;e&&e.type==="supsub"?(i=Nr(e.base,"accent"),r=i.base,e.base=r,n=zIe(Yr(e,t)),e.base=i):(i=Nr(e,"accent"),r=i.base);var a=Yr(r,t.havingCrampedStyle()),s=i.isShifty&&Zr.isCharacterBox(r),l=0;if(s){var u=Zr.getBaseElem(r),h=Yr(u,t.havingCrampedStyle());l=gY(h).skew}var d=i.label==="\\c",f=d?a.height+a.depth:Math.min(a.height,t.fontMetrics().xHeight),p;if(i.isStretchy)p=Tu.svgSpan(i,t),p=Ke.makeVList({positionType:"firstBaseline",children:[{type:"elem",elem:a},{type:"elem",elem:p,wrapperClasses:["svg-align"],wrapperStyle:l>0?{width:"calc(100% - "+It(2*l)+")",marginLeft:It(2*l)}:void 0}]},t);else{var m,g;i.label==="\\vec"?(m=Ke.staticSvg("vec",t),g=Ke.svgData.vec[1]):(m=Ke.makeOrd({mode:i.mode,text:i.label},t,"textord"),m=gY(m),m.italic=0,g=m.width,d&&(f+=m.depth)),p=Ke.makeSpan(["accent-body"],[m]);var y=i.label==="\\textcircled";y&&(p.classes.push("accent-full"),f=a.height);var v=l;y||(v-=g/2),p.style.left=It(v),i.label==="\\textcircled"&&(p.style.top=".2em"),p=Ke.makeVList({positionType:"firstBaseline",children:[{type:"elem",elem:a},{type:"kern",size:-f},{type:"elem",elem:p}]},t)}var x=Ke.makeSpan(["mord","accent"],[p],t);return n?(n.children[0]=x,n.height=Math.max(x.height,n.height),n.classes[0]="mord",n):x},"htmlBuilder$a"),sj=o((e,t)=>{var r=e.isStretchy?Tu.mathMLnode(e.label):new Dt.MathNode("mo",[No(e.label,e.mode)]),i=new Dt.MathNode("mover",[Ti(e.base,t),r]);return i.setAttribute("accent","true"),i},"mathmlBuilder$9"),y9e=new RegExp(["\\acute","\\grave","\\ddot","\\tilde","\\bar","\\breve","\\check","\\hat","\\vec","\\dot","\\mathring"].map(e=>"\\"+e).join("|"));Bt({type:"accent",names:["\\acute","\\grave","\\ddot","\\tilde","\\bar","\\breve","\\check","\\hat","\\vec","\\dot","\\mathring","\\widecheck","\\widehat","\\widetilde","\\overrightarrow","\\overleftarrow","\\Overrightarrow","\\overleftrightarrow","\\overgroup","\\overlinesegment","\\overleftharpoon","\\overrightharpoon"],props:{numArgs:1},handler:o((e,t)=>{var r=tk(t[0]),i=!y9e.test(e.funcName),n=!i||e.funcName==="\\widehat"||e.funcName==="\\widetilde"||e.funcName==="\\widecheck";return{type:"accent",mode:e.parser.mode,label:e.funcName,isStretchy:i,isShifty:n,base:r}},"handler"),htmlBuilder:mD,mathmlBuilder:sj});Bt({type:"accent",names:["\\'","\\`","\\^","\\~","\\=","\\u","\\.",'\\"',"\\c","\\r","\\H","\\v","\\textcircled"],props:{numArgs:1,allowedInText:!0,allowedInMath:!0,argTypes:["primitive"]},handler:o((e,t)=>{var r=t[0],i=e.parser.mode;return i==="math"&&(e.parser.settings.reportNonstrict("mathVsTextAccents","LaTeX's accent "+e.funcName+" works only in text mode"),i="text"),{type:"accent",mode:i,label:e.funcName,isStretchy:!1,isShifty:!0,base:r}},"handler"),htmlBuilder:mD,mathmlBuilder:sj});Bt({type:"accentUnder",names:["\\underleftarrow","\\underrightarrow","\\underleftrightarrow","\\undergroup","\\underlinesegment","\\utilde"],props:{numArgs:1},handler:o((e,t)=>{var{parser:r,funcName:i}=e,n=t[0];return{type:"accentUnder",mode:r.mode,label:i,base:n}},"handler"),htmlBuilder:o((e,t)=>{var r=Yr(e.base,t),i=Tu.svgSpan(e,t),n=e.label==="\\utilde"?.12:0,a=Ke.makeVList({positionType:"top",positionData:r.height,children:[{type:"elem",elem:i,wrapperClasses:["svg-align"]},{type:"kern",size:n},{type:"elem",elem:r}]},t);return Ke.makeSpan(["mord","accentunder"],[a],t)},"htmlBuilder"),mathmlBuilder:o((e,t)=>{var r=Tu.mathMLnode(e.label),i=new Dt.MathNode("munder",[Ti(e.base,t),r]);return i.setAttribute("accentunder","true"),i},"mathmlBuilder")});HC=o(e=>{var t=new Dt.MathNode("mpadded",e?[e]:[]);return t.setAttribute("width","+0.6em"),t.setAttribute("lspace","0.3em"),t},"paddedNode");Bt({type:"xArrow",names:["\\xleftarrow","\\xrightarrow","\\xLeftarrow","\\xRightarrow","\\xleftrightarrow","\\xLeftrightarrow","\\xhookleftarrow","\\xhookrightarrow","\\xmapsto","\\xrightharpoondown","\\xrightharpoonup","\\xleftharpoondown","\\xleftharpoonup","\\xrightleftharpoons","\\xleftrightharpoons","\\xlongequal","\\xtwoheadrightarrow","\\xtwoheadleftarrow","\\xtofrom","\\xrightleftarrows","\\xrightequilibrium","\\xleftequilibrium","\\\\cdrightarrow","\\\\cdleftarrow","\\\\cdlongequal"],props:{numArgs:1,numOptionalArgs:1},handler(e,t,r){var{parser:i,funcName:n}=e;return{type:"xArrow",mode:i.mode,label:n,body:t[0],below:r[0]}},htmlBuilder(e,t){var r=t.style,i=t.havingStyle(r.sup()),n=Ke.wrapFragment(Yr(e.body,i,t),t),a=e.label.slice(0,2)==="\\x"?"x":"cd";n.classes.push(a+"-arrow-pad");var s;e.below&&(i=t.havingStyle(r.sub()),s=Ke.wrapFragment(Yr(e.below,i,t),t),s.classes.push(a+"-arrow-pad"));var l=Tu.svgSpan(e,t),u=-t.fontMetrics().axisHeight+.5*l.height,h=-t.fontMetrics().axisHeight-.5*l.height-.111;(n.depth>.25||e.label==="\\xleftequilibrium")&&(h-=n.depth);var d;if(s){var f=-t.fontMetrics().axisHeight+s.height+.5*l.height+.111;d=Ke.makeVList({positionType:"individualShift",children:[{type:"elem",elem:n,shift:h},{type:"elem",elem:l,shift:u},{type:"elem",elem:s,shift:f}]},t)}else d=Ke.makeVList({positionType:"individualShift",children:[{type:"elem",elem:n,shift:h},{type:"elem",elem:l,shift:u}]},t);return d.children[0].children[0].children[1].classes.push("svg-align"),Ke.makeSpan(["mrel","x-arrow"],[d],t)},mathmlBuilder(e,t){var r=Tu.mathMLnode(e.label);r.setAttribute("minsize",e.label.charAt(0)==="x"?"1.75em":"3.0em");var i;if(e.body){var n=HC(Ti(e.body,t));if(e.below){var a=HC(Ti(e.below,t));i=new Dt.MathNode("munderover",[r,a,n])}else i=new Dt.MathNode("mover",[r,n])}else if(e.below){var s=HC(Ti(e.below,t));i=new Dt.MathNode("munder",[r,s])}else i=HC(),i=new Dt.MathNode("mover",[r,i]);return i}});v9e=Ke.makeSpan;o(oj,"htmlBuilder$9");o(lj,"mathmlBuilder$8");Bt({type:"mclass",names:["\\mathord","\\mathbin","\\mathrel","\\mathopen","\\mathclose","\\mathpunct","\\mathinner"],props:{numArgs:1,primitive:!0},handler(e,t){var{parser:r,funcName:i}=e,n=t[0];return{type:"mclass",mode:r.mode,mclass:"m"+i.slice(5),body:gn(n),isCharacterBox:Zr.isCharacterBox(n)}},htmlBuilder:oj,mathmlBuilder:lj});ok=o(e=>{var t=e.type==="ordgroup"&&e.body.length?e.body[0]:e;return t.type==="atom"&&(t.family==="bin"||t.family==="rel")?"m"+t.family:"mord"},"binrelClass");Bt({type:"mclass",names:["\\@binrel"],props:{numArgs:2},handler(e,t){var{parser:r}=e;return{type:"mclass",mode:r.mode,mclass:ok(t[0]),body:gn(t[1]),isCharacterBox:Zr.isCharacterBox(t[1])}}});Bt({type:"mclass",names:["\\stackrel","\\overset","\\underset"],props:{numArgs:2},handler(e,t){var{parser:r,funcName:i}=e,n=t[1],a=t[0],s;i!=="\\stackrel"?s=ok(n):s="mrel";var l={type:"op",mode:n.mode,limits:!0,alwaysHandleSupSub:!0,parentIsSupSub:!1,symbol:!1,suppressBaseShift:i!=="\\stackrel",body:gn(n)},u={type:"supsub",mode:a.mode,base:l,sup:i==="\\underset"?null:a,sub:i==="\\underset"?a:null};return{type:"mclass",mode:r.mode,mclass:s,body:[u],isCharacterBox:Zr.isCharacterBox(u)}},htmlBuilder:oj,mathmlBuilder:lj});Bt({type:"pmb",names:["\\pmb"],props:{numArgs:1,allowedInText:!0},handler(e,t){var{parser:r}=e;return{type:"pmb",mode:r.mode,mclass:ok(t[0]),body:gn(t[0])}},htmlBuilder(e,t){var r=Fn(e.body,t,!0),i=Ke.makeSpan([e.mclass],r,t);return i.style.textShadow="0.02em 0.01em 0.04px",i},mathmlBuilder(e,t){var r=Cs(e.body,t),i=new Dt.MathNode("mstyle",r);return i.setAttribute("style","text-shadow: 0.02em 0.01em 0.04px"),i}});x9e={">":"\\\\cdrightarrow","<":"\\\\cdleftarrow","=":"\\\\cdlongequal",A:"\\uparrow",V:"\\downarrow","|":"\\Vert",".":"no arrow"},CY=o(()=>({type:"styling",body:[],mode:"math",style:"display"}),"newCell"),kY=o(e=>e.type==="textord"&&e.text==="@","isStartOfArrow"),b9e=o((e,t)=>(e.type==="mathord"||e.type==="atom")&&e.text===t,"isLabelEnd");o(T9e,"cdArrow");o(C9e,"parseCD");Bt({type:"cdlabel",names:["\\\\cdleft","\\\\cdright"],props:{numArgs:1},handler(e,t){var{parser:r,funcName:i}=e;return{type:"cdlabel",mode:r.mode,side:i.slice(4),label:t[0]}},htmlBuilder(e,t){var r=t.havingStyle(t.style.sup()),i=Ke.wrapFragment(Yr(e.label,r,t),t);return i.classes.push("cd-label-"+e.side),i.style.bottom=It(.8-i.depth),i.height=0,i.depth=0,i},mathmlBuilder(e,t){var r=new Dt.MathNode("mrow",[Ti(e.label,t)]);return r=new Dt.MathNode("mpadded",[r]),r.setAttribute("width","0"),e.side==="left"&&r.setAttribute("lspace","-1width"),r.setAttribute("voffset","0.7em"),r=new Dt.MathNode("mstyle",[r]),r.setAttribute("displaystyle","false"),r.setAttribute("scriptlevel","1"),r}});Bt({type:"cdlabelparent",names:["\\\\cdparent"],props:{numArgs:1},handler(e,t){var{parser:r}=e;return{type:"cdlabelparent",mode:r.mode,fragment:t[0]}},htmlBuilder(e,t){var r=Ke.wrapFragment(Yr(e.fragment,t),t);return r.classes.push("cd-vert-arrow"),r},mathmlBuilder(e,t){return new Dt.MathNode("mrow",[Ti(e.fragment,t)])}});Bt({type:"textord",names:["\\@char"],props:{numArgs:1,allowedInText:!0},handler(e,t){for(var{parser:r}=e,i=Nr(t[0],"ordgroup"),n=i.body,a="",s=0;s<n.length;s++){var l=Nr(n[s],"textord");a+=l.text}var u=parseInt(a),h;if(isNaN(u))throw new Lt("\\@char has non-numeric argument "+a);if(u<0||u>=1114111)throw new Lt("\\@char with invalid code point "+a);return u<=65535?h=String.fromCharCode(u):(u-=65536,h=String.fromCharCode((u>>10)+55296,(u&1023)+56320)),{type:"textord",mode:r.mode,text:h}}});cj=o((e,t)=>{var r=Fn(e.body,t.withColor(e.color),!1);return Ke.makeFragment(r)},"htmlBuilder$8"),uj=o((e,t)=>{var r=Cs(e.body,t.withColor(e.color)),i=new Dt.MathNode("mstyle",r);return i.setAttribute("mathcolor",e.color),i},"mathmlBuilder$7");Bt({type:"color",names:["\\textcolor"],props:{numArgs:2,allowedInText:!0,argTypes:["color","original"]},handler(e,t){var{parser:r}=e,i=Nr(t[0],"color-token").color,n=t[1];return{type:"color",mode:r.mode,color:i,body:gn(n)}},htmlBuilder:cj,mathmlBuilder:uj});Bt({type:"color",names:["\\color"],props:{numArgs:1,allowedInText:!0,argTypes:["color"]},handler(e,t){var{parser:r,breakOnTokenText:i}=e,n=Nr(t[0],"color-token").color;r.gullet.macros.set("\\current@color",n);var a=r.parseExpression(!0,i);return{type:"color",mode:r.mode,color:n,body:a}},htmlBuilder:cj,mathmlBuilder:uj});Bt({type:"cr",names:["\\\\"],props:{numArgs:0,numOptionalArgs:0,allowedInText:!0},handler(e,t,r){var{parser:i}=e,n=i.gullet.future().text==="["?i.parseSizeGroup(!0):null,a=!i.settings.displayMode||!i.settings.useStrictBehavior("newLineInDisplayMode","In LaTeX, \\\\ or \\newline does nothing in display mode");return{type:"cr",mode:i.mode,newLine:a,size:n&&Nr(n,"size").value}},htmlBuilder(e,t){var r=Ke.makeSpan(["mspace"],[],t);return e.newLine&&(r.classes.push("newline"),e.size&&(r.style.marginTop=It(Qi(e.size,t)))),r},mathmlBuilder(e,t){var r=new Dt.MathNode("mspace");return e.newLine&&(r.setAttribute("linebreak","newline"),e.size&&r.setAttribute("height",It(Qi(e.size,t)))),r}});nD={"\\global":"\\global","\\long":"\\\\globallong","\\\\globallong":"\\\\globallong","\\def":"\\gdef","\\gdef":"\\gdef","\\edef":"\\xdef","\\xdef":"\\xdef","\\let":"\\\\globallet","\\futurelet":"\\\\globalfuture"},hj=o(e=>{var t=e.text;if(/^(?:[\\{}$&#^_]|EOF)$/.test(t))throw new Lt("Expected a control sequence",e);return t},"checkControlSequence"),k9e=o(e=>{var t=e.gullet.popToken();return t.text==="="&&(t=e.gullet.popToken(),t.text===" "&&(t=e.gullet.popToken())),t},"getRHS"),dj=o((e,t,r,i)=>{var n=e.gullet.macros.get(r.text);n==null&&(r.noexpand=!0,n={tokens:[r],numArgs:0,unexpandable:!e.gullet.isExpandable(r.text)}),e.gullet.macros.set(t,n,i)},"letCommand");Bt({type:"internal",names:["\\global","\\long","\\\\globallong"],props:{numArgs:0,allowedInText:!0},handler(e){var{parser:t,funcName:r}=e;t.consumeSpaces();var i=t.fetch();if(nD[i.text])return(r==="\\global"||r==="\\\\globallong")&&(i.text=nD[i.text]),Nr(t.parseFunction(),"internal");throw new Lt("Invalid token after macro prefix",i)}});Bt({type:"internal",names:["\\def","\\gdef","\\edef","\\xdef"],props:{numArgs:0,allowedInText:!0,primitive:!0},handler(e){var{parser:t,funcName:r}=e,i=t.gullet.popToken(),n=i.text;if(/^(?:[\\{}$&#^_]|EOF)$/.test(n))throw new Lt("Expected a control sequence",i);for(var a=0,s,l=[[]];t.gullet.future().text!=="{";)if(i=t.gullet.popToken(),i.text==="#"){if(t.gullet.future().text==="{"){s=t.gullet.future(),l[a].push("{");break}if(i=t.gullet.popToken(),!/^[1-9]$/.test(i.text))throw new Lt('Invalid argument number "'+i.text+'"');if(parseInt(i.text)!==a+1)throw new Lt('Argument number "'+i.text+'" out of order');a++,l.push([])}else{if(i.text==="EOF")throw new Lt("Expected a macro definition");l[a].push(i.text)}var{tokens:u}=t.gullet.consumeArg();return s&&u.unshift(s),(r==="\\edef"||r==="\\xdef")&&(u=t.gullet.expandTokens(u),u.reverse()),t.gullet.macros.set(n,{tokens:u,numArgs:a,delimiters:l},r===nD[r]),{type:"internal",mode:t.mode}}});Bt({type:"internal",names:["\\let","\\\\globallet"],props:{numArgs:0,allowedInText:!0,primitive:!0},handler(e){var{parser:t,funcName:r}=e,i=hj(t.gullet.popToken());t.gullet.consumeSpaces();var n=k9e(t);return dj(t,i,n,r==="\\\\globallet"),{type:"internal",mode:t.mode}}});Bt({type:"internal",names:["\\futurelet","\\\\globalfuture"],props:{numArgs:0,allowedInText:!0,primitive:!0},handler(e){var{parser:t,funcName:r}=e,i=hj(t.gullet.popToken()),n=t.gullet.popToken(),a=t.gullet.popToken();return dj(t,i,a,r==="\\\\globalfuture"),t.gullet.pushToken(a),t.gullet.pushToken(n),{type:"internal",mode:t.mode}}});fv=o(function(t,r,i){var n=_i.math[t]&&_i.math[t].replace,a=uD(n||t,r,i);if(!a)throw new Error("Unsupported symbol "+t+" and font size "+r+".");return a},"getMetrics"),gD=o(function(t,r,i,n){var a=i.havingBaseStyle(r),s=Ke.makeSpan(n.concat(a.sizingClasses(i)),[t],i),l=a.sizeMultiplier/i.sizeMultiplier;return s.height*=l,s.depth*=l,s.maxFontSize=a.sizeMultiplier,s},"styleWrap"),fj=o(function(t,r,i){var n=r.havingBaseStyle(i),a=(1-r.sizeMultiplier/n.sizeMultiplier)*r.fontMetrics().axisHeight;t.classes.push("delimcenter"),t.style.top=It(a),t.height-=a,t.depth+=a},"centerSpan"),w9e=o(function(t,r,i,n,a,s){var l=Ke.makeSymbol(t,"Main-Regular",a,n),u=gD(l,r,n,s);return i&&fj(u,n,r),u},"makeSmallDelim"),S9e=o(function(t,r,i,n){return Ke.makeSymbol(t,"Size"+r+"-Regular",i,n)},"mathrmSize"),pj=o(function(t,r,i,n,a,s){var l=S9e(t,r,a,n),u=gD(Ke.makeSpan(["delimsizing","size"+r],[l],n),ur.TEXT,n,s);return i&&fj(u,n,ur.TEXT),u},"makeLargeDelim"),V7=o(function(t,r,i){var n;r==="Size1-Regular"?n="delim-size1":n="delim-size4";var a=Ke.makeSpan(["delimsizinginner",n],[Ke.makeSpan([],[Ke.makeSymbol(t,r,i)])]);return{type:"elem",elem:a}},"makeGlyphSpan"),W7=o(function(t,r,i){var n=nc["Size4-Regular"][t.charCodeAt(0)]?nc["Size4-Regular"][t.charCodeAt(0)][4]:nc["Size1-Regular"][t.charCodeAt(0)][4],a=new ac("inner",NIe(t,Math.round(1e3*r))),s=new ml([a],{width:It(n),height:It(r),style:"width:"+It(n),viewBox:"0 0 "+1e3*n+" "+Math.round(1e3*r),preserveAspectRatio:"xMinYMin"}),l=Ke.makeSvgSpan([],[s],i);return l.height=r,l.style.height=It(r),l.style.width=It(n),{type:"elem",elem:l}},"makeInner"),aD=.008,YC={type:"kern",size:-1*aD},E9e=["|","\\lvert","\\rvert","\\vert"],A9e=["\\|","\\lVert","\\rVert","\\Vert"],mj=o(function(t,r,i,n,a,s){var l,u,h,d,f="",p=0;l=h=d=t,u=null;var m="Size1-Regular";t==="\\uparrow"?h=d="\u23D0":t==="\\Uparrow"?h=d="\u2016":t==="\\downarrow"?l=h="\u23D0":t==="\\Downarrow"?l=h="\u2016":t==="\\updownarrow"?(l="\\uparrow",h="\u23D0",d="\\downarrow"):t==="\\Updownarrow"?(l="\\Uparrow",h="\u2016",d="\\Downarrow"):E9e.includes(t)?(h="\u2223",f="vert",p=333):A9e.includes(t)?(h="\u2225",f="doublevert",p=556):t==="["||t==="\\lbrack"?(l="\u23A1",h="\u23A2",d="\u23A3",m="Size4-Regular",f="lbrack",p=667):t==="]"||t==="\\rbrack"?(l="\u23A4",h="\u23A5",d="\u23A6",m="Size4-Regular",f="rbrack",p=667):t==="\\lfloor"||t==="\u230A"?(h=l="\u23A2",d="\u23A3",m="Size4-Regular",f="lfloor",p=667):t==="\\lceil"||t==="\u2308"?(l="\u23A1",h=d="\u23A2",m="Size4-Regular",f="lceil",p=667):t==="\\rfloor"||t==="\u230B"?(h=l="\u23A5",d="\u23A6",m="Size4-Regular",f="rfloor",p=667):t==="\\rceil"||t==="\u2309"?(l="\u23A4",h=d="\u23A5",m="Size4-Regular",f="rceil",p=667):t==="("||t==="\\lparen"?(l="\u239B",h="\u239C",d="\u239D",m="Size4-Regular",f="lparen",p=875):t===")"||t==="\\rparen"?(l="\u239E",h="\u239F",d="\u23A0",m="Size4-Regular",f="rparen",p=875):t==="\\{"||t==="\\lbrace"?(l="\u23A7",u="\u23A8",d="\u23A9",h="\u23AA",m="Size4-Regular"):t==="\\}"||t==="\\rbrace"?(l="\u23AB",u="\u23AC",d="\u23AD",h="\u23AA",m="Size4-Regular"):t==="\\lgroup"||t==="\u27EE"?(l="\u23A7",d="\u23A9",h="\u23AA",m="Size4-Regular"):t==="\\rgroup"||t==="\u27EF"?(l="\u23AB",d="\u23AD",h="\u23AA",m="Size4-Regular"):t==="\\lmoustache"||t==="\u23B0"?(l="\u23A7",d="\u23AD",h="\u23AA",m="Size4-Regular"):(t==="\\rmoustache"||t==="\u23B1")&&(l="\u23AB",d="\u23A9",h="\u23AA",m="Size4-Regular");var g=fv(l,m,a),y=g.height+g.depth,v=fv(h,m,a),x=v.height+v.depth,b=fv(d,m,a),T=b.height+b.depth,w=0,C=1;if(u!==null){var k=fv(u,m,a);w=k.height+k.depth,C=2}var E=y+T+w,A=Math.max(0,Math.ceil((r-E)/(C*x))),N=E+A*C*x,P=n.fontMetrics().axisHeight;i&&(P*=n.sizeMultiplier);var I=N/2-P,D=[];if(f.length>0){var _=N-y-T,R=Math.round(N*1e3),M=IIe(f,Math.round(_*1e3)),L=new ac(f,M),B=(p/1e3).toFixed(3)+"em",O=(R/1e3).toFixed(3)+"em",$=new ml([L],{width:B,height:O,viewBox:"0 0 "+p+" "+R}),G=Ke.makeSvgSpan([],[$],n);G.height=R/1e3,G.style.width=B,G.style.height=O,D.push({type:"elem",elem:G})}else{if(D.push(V7(d,m,a)),D.push(YC),u===null){var F=N-y-T+2*aD;D.push(W7(h,F,n))}else{var V=(N-y-T-w)/2+2*aD;D.push(W7(h,V,n)),D.push(YC),D.push(V7(u,m,a)),D.push(YC),D.push(W7(h,V,n))}D.push(YC),D.push(V7(l,m,a))}var H=n.havingBaseStyle(ur.TEXT),j=Ke.makeVList({positionType:"bottom",positionData:I,children:D},H);return gD(Ke.makeSpan(["delimsizing","mult"],[j],H),ur.TEXT,n,s)},"makeStackedDelim"),q7=80,U7=.08,H7=o(function(t,r,i,n,a){var s=MIe(t,n,i),l=new ac(t,s),u=new ml([l],{width:"400em",height:It(r),viewBox:"0 0 400000 "+i,preserveAspectRatio:"xMinYMin slice"});return Ke.makeSvgSpan(["hide-tail"],[u],a)},"sqrtSvg"),_9e=o(function(t,r){var i=r.havingBaseSizing(),n=xj("\\surd",t*i.sizeMultiplier,vj,i),a=i.sizeMultiplier,s=Math.max(0,r.minRuleThickness-r.fontMetrics().sqrtRuleThickness),l,u=0,h=0,d=0,f;return n.type==="small"?(d=1e3+1e3*s+q7,t<1?a=1:t<1.4&&(a=.7),u=(1+s+U7)/a,h=(1+s)/a,l=H7("sqrtMain",u,d,s,r),l.style.minWidth="0.853em",f=.833/a):n.type==="large"?(d=(1e3+q7)*mv[n.size],h=(mv[n.size]+s)/a,u=(mv[n.size]+s+U7)/a,l=H7("sqrtSize"+n.size,u,d,s,r),l.style.minWidth="1.02em",f=1/a):(u=t+s+U7,h=t+s,d=Math.floor(1e3*t+s)+q7,l=H7("sqrtTall",u,d,s,r),l.style.minWidth="0.742em",f=1.056),l.height=h,l.style.height=It(u),{span:l,advanceWidth:f,ruleWidth:(r.fontMetrics().sqrtRuleThickness+s)*a}},"makeSqrtImage"),gj=["(","\\lparen",")","\\rparen","[","\\lbrack","]","\\rbrack","\\{","\\lbrace","\\}","\\rbrace","\\lfloor","\\rfloor","\u230A","\u230B","\\lceil","\\rceil","\u2308","\u2309","\\surd"],D9e=["\\uparrow","\\downarrow","\\updownarrow","\\Uparrow","\\Downarrow","\\Updownarrow","|","\\|","\\vert","\\Vert","\\lvert","\\rvert","\\lVert","\\rVert","\\lgroup","\\rgroup","\u27EE","\u27EF","\\lmoustache","\\rmoustache","\u23B0","\u23B1"],yj=["<",">","\\langle","\\rangle","/","\\backslash","\\lt","\\gt"],mv=[0,1.2,1.8,2.4,3],R9e=o(function(t,r,i,n,a){if(t==="<"||t==="\\lt"||t==="\u27E8"?t="\\langle":(t===">"||t==="\\gt"||t==="\u27E9")&&(t="\\rangle"),gj.includes(t)||yj.includes(t))return pj(t,r,!1,i,n,a);if(D9e.includes(t))return mj(t,mv[r],!1,i,n,a);throw new Lt("Illegal delimiter: '"+t+"'")},"makeSizedDelim"),L9e=[{type:"small",style:ur.SCRIPTSCRIPT},{type:"small",style:ur.SCRIPT},{type:"small",style:ur.TEXT},{type:"large",size:1},{type:"large",size:2},{type:"large",size:3},{type:"large",size:4}],M9e=[{type:"small",style:ur.SCRIPTSCRIPT},{type:"small",style:ur.SCRIPT},{type:"small",style:ur.TEXT},{type:"stack"}],vj=[{type:"small",style:ur.SCRIPTSCRIPT},{type:"small",style:ur.SCRIPT},{type:"small",style:ur.TEXT},{type:"large",size:1},{type:"large",size:2},{type:"large",size:3},{type:"large",size:4},{type:"stack"}],N9e=o(function(t){if(t.type==="small")return"Main-Regular";if(t.type==="large")return"Size"+t.size+"-Regular";if(t.type==="stack")return"Size4-Regular";throw new Error("Add support for delim type '"+t.type+"' here.")},"delimTypeToFont"),xj=o(function(t,r,i,n){for(var a=Math.min(2,3-n.style.size),s=a;s<i.length&&i[s].type!=="stack";s++){var l=fv(t,N9e(i[s]),"math"),u=l.height+l.depth;if(i[s].type==="small"){var h=n.havingBaseStyle(i[s].style);u*=h.sizeMultiplier}if(u>r)return i[s]}return i[i.length-1]},"traverseSequence"),bj=o(function(t,r,i,n,a,s){t==="<"||t==="\\lt"||t==="\u27E8"?t="\\langle":(t===">"||t==="\\gt"||t==="\u27E9")&&(t="\\rangle");var l;yj.includes(t)?l=L9e:gj.includes(t)?l=vj:l=M9e;var u=xj(t,r,l,n);return u.type==="small"?w9e(t,u.style,i,n,a,s):u.type==="large"?pj(t,u.size,i,n,a,s):mj(t,r,i,n,a,s)},"makeCustomSizedDelim"),I9e=o(function(t,r,i,n,a,s){var l=n.fontMetrics().axisHeight*n.sizeMultiplier,u=901,h=5/n.fontMetrics().ptPerEm,d=Math.max(r-l,i+l),f=Math.max(d/500*u,2*d-h);return bj(t,f,!0,n,a,s)},"makeLeftRightDelim"),xu={sqrtImage:_9e,sizedDelim:R9e,sizeToMaxHeight:mv,customSizedDelim:bj,leftRightDelim:I9e},wY={"\\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}},O9e=["(","\\lparen",")","\\rparen","[","\\lbrack","]","\\rbrack","\\{","\\lbrace","\\}","\\rbrace","\\lfloor","\\rfloor","\u230A","\u230B","\\lceil","\\rceil","\u2308","\u2309","<",">","\\langle","\u27E8","\\rangle","\u27E9","\\lt","\\gt","\\lvert","\\rvert","\\lVert","\\rVert","\\lgroup","\\rgroup","\u27EE","\u27EF","\\lmoustache","\\rmoustache","\u23B0","\u23B1","/","\\backslash","|","\\vert","\\|","\\Vert","\\uparrow","\\Uparrow","\\downarrow","\\Downarrow","\\updownarrow","\\Updownarrow","."];o(lk,"checkDelimiter");Bt({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:o((e,t)=>{var r=lk(t[0],e);return{type:"delimsizing",mode:e.parser.mode,size:wY[e.funcName].size,mclass:wY[e.funcName].mclass,delim:r.text}},"handler"),htmlBuilder:o((e,t)=>e.delim==="."?Ke.makeSpan([e.mclass]):xu.sizedDelim(e.delim,e.size,t,e.mode,[e.mclass]),"htmlBuilder"),mathmlBuilder:o(e=>{var t=[];e.delim!=="."&&t.push(No(e.delim,e.mode));var r=new Dt.MathNode("mo",t);e.mclass==="mopen"||e.mclass==="mclose"?r.setAttribute("fence","true"):r.setAttribute("fence","false"),r.setAttribute("stretchy","true");var i=It(xu.sizeToMaxHeight[e.size]);return r.setAttribute("minsize",i),r.setAttribute("maxsize",i),r},"mathmlBuilder")});o(SY,"assertParsed");Bt({type:"leftright-right",names:["\\right"],props:{numArgs:1,primitive:!0},handler:o((e,t)=>{var r=e.parser.gullet.macros.get("\\current@color");if(r&&typeof r!="string")throw new Lt("\\current@color set to non-string in \\right");return{type:"leftright-right",mode:e.parser.mode,delim:lk(t[0],e).text,color:r}},"handler")});Bt({type:"leftright",names:["\\left"],props:{numArgs:1,primitive:!0},handler:o((e,t)=>{var r=lk(t[0],e),i=e.parser;++i.leftrightDepth;var n=i.parseExpression(!1);--i.leftrightDepth,i.expect("\\right",!1);var a=Nr(i.parseFunction(),"leftright-right");return{type:"leftright",mode:i.mode,body:n,left:r.text,right:a.delim,rightColor:a.color}},"handler"),htmlBuilder:o((e,t)=>{SY(e);for(var r=Fn(e.body,t,!0,["mopen","mclose"]),i=0,n=0,a=!1,s=0;s<r.length;s++)r[s].isMiddle?a=!0:(i=Math.max(r[s].height,i),n=Math.max(r[s].depth,n));i*=t.sizeMultiplier,n*=t.sizeMultiplier;var l;if(e.left==="."?l=bv(t,["mopen"]):l=xu.leftRightDelim(e.left,i,n,t,e.mode,["mopen"]),r.unshift(l),a)for(var u=1;u<r.length;u++){var h=r[u],d=h.isMiddle;d&&(r[u]=xu.leftRightDelim(d.delim,i,n,d.options,e.mode,[]))}var f;if(e.right===".")f=bv(t,["mclose"]);else{var p=e.rightColor?t.withColor(e.rightColor):t;f=xu.leftRightDelim(e.right,i,n,p,e.mode,["mclose"])}return r.push(f),Ke.makeSpan(["minner"],r,t)},"htmlBuilder"),mathmlBuilder:o((e,t)=>{SY(e);var r=Cs(e.body,t);if(e.left!=="."){var i=new Dt.MathNode("mo",[No(e.left,e.mode)]);i.setAttribute("fence","true"),r.unshift(i)}if(e.right!=="."){var n=new Dt.MathNode("mo",[No(e.right,e.mode)]);n.setAttribute("fence","true"),e.rightColor&&n.setAttribute("mathcolor",e.rightColor),r.push(n)}return dD(r)},"mathmlBuilder")});Bt({type:"middle",names:["\\middle"],props:{numArgs:1,primitive:!0},handler:o((e,t)=>{var r=lk(t[0],e);if(!e.parser.leftrightDepth)throw new Lt("\\middle without preceding \\left",r);return{type:"middle",mode:e.parser.mode,delim:r.text}},"handler"),htmlBuilder:o((e,t)=>{var r;if(e.delim===".")r=bv(t,[]);else{r=xu.sizedDelim(e.delim,1,t,e.mode,[]);var i={delim:e.delim,options:t};r.isMiddle=i}return r},"htmlBuilder"),mathmlBuilder:o((e,t)=>{var r=e.delim==="\\vert"||e.delim==="|"?No("|","text"):No(e.delim,e.mode),i=new Dt.MathNode("mo",[r]);return i.setAttribute("fence","true"),i.setAttribute("lspace","0.05em"),i.setAttribute("rspace","0.05em"),i},"mathmlBuilder")});yD=o((e,t)=>{var r=Ke.wrapFragment(Yr(e.body,t),t),i=e.label.slice(1),n=t.sizeMultiplier,a,s=0,l=Zr.isCharacterBox(e.body);if(i==="sout")a=Ke.makeSpan(["stretchy","sout"]),a.height=t.fontMetrics().defaultRuleThickness/n,s=-.5*t.fontMetrics().xHeight;else if(i==="phase"){var u=Qi({number:.6,unit:"pt"},t),h=Qi({number:.35,unit:"ex"},t),d=t.havingBaseSizing();n=n/d.sizeMultiplier;var f=r.height+r.depth+u+h;r.style.paddingLeft=It(f/2+u);var p=Math.floor(1e3*f*n),m=RIe(p),g=new ml([new ac("phase",m)],{width:"400em",height:It(p/1e3),viewBox:"0 0 400000 "+p,preserveAspectRatio:"xMinYMin slice"});a=Ke.makeSvgSpan(["hide-tail"],[g],t),a.style.height=It(f),s=r.depth+u+h}else{/cancel/.test(i)?l||r.classes.push("cancel-pad"):i==="angl"?r.classes.push("anglpad"):r.classes.push("boxpad");var y=0,v=0,x=0;/box/.test(i)?(x=Math.max(t.fontMetrics().fboxrule,t.minRuleThickness),y=t.fontMetrics().fboxsep+(i==="colorbox"?0:x),v=y):i==="angl"?(x=Math.max(t.fontMetrics().defaultRuleThickness,t.minRuleThickness),y=4*x,v=Math.max(0,.25-r.depth)):(y=l?.2:0,v=y),a=Tu.encloseSpan(r,i,y,v,t),/fbox|boxed|fcolorbox/.test(i)?(a.style.borderStyle="solid",a.style.borderWidth=It(x)):i==="angl"&&x!==.049&&(a.style.borderTopWidth=It(x),a.style.borderRightWidth=It(x)),s=r.depth+v,e.backgroundColor&&(a.style.backgroundColor=e.backgroundColor,e.borderColor&&(a.style.borderColor=e.borderColor))}var b;if(e.backgroundColor)b=Ke.makeVList({positionType:"individualShift",children:[{type:"elem",elem:a,shift:s},{type:"elem",elem:r,shift:0}]},t);else{var T=/cancel|phase/.test(i)?["svg-align"]:[];b=Ke.makeVList({positionType:"individualShift",children:[{type:"elem",elem:r,shift:0},{type:"elem",elem:a,shift:s,wrapperClasses:T}]},t)}return/cancel/.test(i)&&(b.height=r.height,b.depth=r.depth),/cancel/.test(i)&&!l?Ke.makeSpan(["mord","cancel-lap"],[b],t):Ke.makeSpan(["mord"],[b],t)},"htmlBuilder$7"),vD=o((e,t)=>{var r=0,i=new Dt.MathNode(e.label.indexOf("colorbox")>-1?"mpadded":"menclose",[Ti(e.body,t)]);switch(e.label){case"\\cancel":i.setAttribute("notation","updiagonalstrike");break;case"\\bcancel":i.setAttribute("notation","downdiagonalstrike");break;case"\\phase":i.setAttribute("notation","phasorangle");break;case"\\sout":i.setAttribute("notation","horizontalstrike");break;case"\\fbox":i.setAttribute("notation","box");break;case"\\angl":i.setAttribute("notation","actuarial");break;case"\\fcolorbox":case"\\colorbox":if(r=t.fontMetrics().fboxsep*t.fontMetrics().ptPerEm,i.setAttribute("width","+"+2*r+"pt"),i.setAttribute("height","+"+2*r+"pt"),i.setAttribute("lspace",r+"pt"),i.setAttribute("voffset",r+"pt"),e.label==="\\fcolorbox"){var n=Math.max(t.fontMetrics().fboxrule,t.minRuleThickness);i.setAttribute("style","border: "+n+"em solid "+String(e.borderColor))}break;case"\\xcancel":i.setAttribute("notation","updiagonalstrike downdiagonalstrike");break}return e.backgroundColor&&i.setAttribute("mathbackground",e.backgroundColor),i},"mathmlBuilder$6");Bt({type:"enclose",names:["\\colorbox"],props:{numArgs:2,allowedInText:!0,argTypes:["color","text"]},handler(e,t,r){var{parser:i,funcName:n}=e,a=Nr(t[0],"color-token").color,s=t[1];return{type:"enclose",mode:i.mode,label:n,backgroundColor:a,body:s}},htmlBuilder:yD,mathmlBuilder:vD});Bt({type:"enclose",names:["\\fcolorbox"],props:{numArgs:3,allowedInText:!0,argTypes:["color","color","text"]},handler(e,t,r){var{parser:i,funcName:n}=e,a=Nr(t[0],"color-token").color,s=Nr(t[1],"color-token").color,l=t[2];return{type:"enclose",mode:i.mode,label:n,backgroundColor:s,borderColor:a,body:l}},htmlBuilder:yD,mathmlBuilder:vD});Bt({type:"enclose",names:["\\fbox"],props:{numArgs:1,argTypes:["hbox"],allowedInText:!0},handler(e,t){var{parser:r}=e;return{type:"enclose",mode:r.mode,label:"\\fbox",body:t[0]}}});Bt({type:"enclose",names:["\\cancel","\\bcancel","\\xcancel","\\sout","\\phase"],props:{numArgs:1},handler(e,t){var{parser:r,funcName:i}=e,n=t[0];return{type:"enclose",mode:r.mode,label:i,body:n}},htmlBuilder:yD,mathmlBuilder:vD});Bt({type:"enclose",names:["\\angl"],props:{numArgs:1,argTypes:["hbox"],allowedInText:!1},handler(e,t){var{parser:r}=e;return{type:"enclose",mode:r.mode,label:"\\angl",body:t[0]}}});Tj={};o(sc,"defineEnvironment");Cj={};o(he,"defineMacro");o(EY,"getHLines");ck=o(e=>{var t=e.parser.settings;if(!t.displayMode)throw new Lt("{"+e.envName+"} can be used only in display mode.")},"validateAmsEnvironmentContext");o(xD,"getAutoTag");o(Gh,"parseArray");o(bD,"dCellStyle");oc=o(function(t,r){var i,n,a=t.body.length,s=t.hLinesBeforeRow,l=0,u=new Array(a),h=[],d=Math.max(r.fontMetrics().arrayRuleWidth,r.minRuleThickness),f=1/r.fontMetrics().ptPerEm,p=5*f;if(t.colSeparationType&&t.colSeparationType==="small"){var m=r.havingStyle(ur.SCRIPT).sizeMultiplier;p=.2778*(m/r.sizeMultiplier)}var g=t.colSeparationType==="CD"?Qi({number:3,unit:"ex"},r):12*f,y=3*f,v=t.arraystretch*g,x=.7*v,b=.3*v,T=0;function w(we){for(var Me=0;Me<we.length;++Me)Me>0&&(T+=.25),h.push({pos:T,isDashed:we[Me]})}for(o(w,"setHLinePos"),w(s[0]),i=0;i<t.body.length;++i){var C=t.body[i],k=x,E=b;l<C.length&&(l=C.length);var A=new Array(C.length);for(n=0;n<C.length;++n){var N=Yr(C[n],r);E<N.depth&&(E=N.depth),k<N.height&&(k=N.height),A[n]=N}var P=t.rowGaps[i],I=0;P&&(I=Qi(P,r),I>0&&(I+=b,E<I&&(E=I),I=0)),t.addJot&&(E+=y),A.height=k,A.depth=E,T+=k,A.pos=T,T+=E+I,u[i]=A,w(s[i+1])}var D=T/2+r.fontMetrics().axisHeight,_=t.cols||[],R=[],M,L,B=[];if(t.tags&&t.tags.some(we=>we))for(i=0;i<a;++i){var O=u[i],$=O.pos-D,G=t.tags[i],F=void 0;G===!0?F=Ke.makeSpan(["eqn-num"],[],r):G===!1?F=Ke.makeSpan([],[],r):F=Ke.makeSpan([],Fn(G,r,!0),r),F.depth=O.depth,F.height=O.height,B.push({type:"elem",elem:F,shift:$})}for(n=0,L=0;n<l||L<_.length;++n,++L){for(var V=_[L]||{},H=!0;V.type==="separator";){if(H||(M=Ke.makeSpan(["arraycolsep"],[]),M.style.width=It(r.fontMetrics().doubleRuleSep),R.push(M)),V.separator==="|"||V.separator===":"){var j=V.separator==="|"?"solid":"dashed",U=Ke.makeSpan(["vertical-separator"],[],r);U.style.height=It(T),U.style.borderRightWidth=It(d),U.style.borderRightStyle=j,U.style.margin="0 "+It(-d/2);var Q=T-D;Q&&(U.style.verticalAlign=It(-Q)),R.push(U)}else throw new Lt("Invalid separator type: "+V.separator);L++,V=_[L]||{},H=!1}if(!(n>=l)){var Y=void 0;(n>0||t.hskipBeforeAndAfter)&&(Y=Zr.deflt(V.pregap,p),Y!==0&&(M=Ke.makeSpan(["arraycolsep"],[]),M.style.width=It(Y),R.push(M)));var ae=[];for(i=0;i<a;++i){var J=u[i],te=J[n];if(te){var re=J.pos-D;te.depth=J.depth,te.height=J.height,ae.push({type:"elem",elem:te,shift:re})}}ae=Ke.makeVList({positionType:"individualShift",children:ae},r),ae=Ke.makeSpan(["col-align-"+(V.align||"c")],[ae]),R.push(ae),(n<l-1||t.hskipBeforeAndAfter)&&(Y=Zr.deflt(V.postgap,p),Y!==0&&(M=Ke.makeSpan(["arraycolsep"],[]),M.style.width=It(Y),R.push(M)))}}if(u=Ke.makeSpan(["mtable"],R),h.length>0){for(var ee=Ke.makeLineSpan("hline",r,d),Te=Ke.makeLineSpan("hdashline",r,d),ue=[{type:"elem",elem:u,shift:0}];h.length>0;){var De=h.pop(),Ie=De.pos-D;De.isDashed?ue.push({type:"elem",elem:Te,shift:Ie}):ue.push({type:"elem",elem:ee,shift:Ie})}u=Ke.makeVList({positionType:"individualShift",children:ue},r)}if(B.length===0)return Ke.makeSpan(["mord"],[u],r);var Ee=Ke.makeVList({positionType:"individualShift",children:B},r);return Ee=Ke.makeSpan(["tag"],[Ee],r),Ke.makeFragment([u,Ee])},"htmlBuilder"),P9e={c:"center ",l:"left ",r:"right "},lc=o(function(t,r){for(var i=[],n=new Dt.MathNode("mtd",[],["mtr-glue"]),a=new Dt.MathNode("mtd",[],["mml-eqn-num"]),s=0;s<t.body.length;s++){for(var l=t.body[s],u=[],h=0;h<l.length;h++)u.push(new Dt.MathNode("mtd",[Ti(l[h],r)]));t.tags&&t.tags[s]&&(u.unshift(n),u.push(n),t.leqno?u.unshift(a):u.push(a)),i.push(new Dt.MathNode("mtr",u))}var d=new Dt.MathNode("mtable",i),f=t.arraystretch===.5?.1:.16+t.arraystretch-1+(t.addJot?.09:0);d.setAttribute("rowspacing",It(f));var p="",m="";if(t.cols&&t.cols.length>0){var g=t.cols,y="",v=!1,x=0,b=g.length;g[0].type==="separator"&&(p+="top ",x=1),g[g.length-1].type==="separator"&&(p+="bottom ",b-=1);for(var T=x;T<b;T++)g[T].type==="align"?(m+=P9e[g[T].align],v&&(y+="none "),v=!0):g[T].type==="separator"&&v&&(y+=g[T].separator==="|"?"solid ":"dashed ",v=!1);d.setAttribute("columnalign",m.trim()),/[sd]/.test(y)&&d.setAttribute("columnlines",y.trim())}if(t.colSeparationType==="align"){for(var w=t.cols||[],C="",k=1;k<w.length;k++)C+=k%2?"0em ":"1em ";d.setAttribute("columnspacing",C.trim())}else t.colSeparationType==="alignat"||t.colSeparationType==="gather"?d.setAttribute("columnspacing","0em"):t.colSeparationType==="small"?d.setAttribute("columnspacing","0.2778em"):t.colSeparationType==="CD"?d.setAttribute("columnspacing","0.5em"):d.setAttribute("columnspacing","1em");var E="",A=t.hLinesBeforeRow;p+=A[0].length>0?"left ":"",p+=A[A.length-1].length>0?"right ":"";for(var N=1;N<A.length-1;N++)E+=A[N].length===0?"none ":A[N][0]?"dashed ":"solid ";return/[sd]/.test(E)&&d.setAttribute("rowlines",E.trim()),p!==""&&(d=new Dt.MathNode("menclose",[d]),d.setAttribute("notation",p.trim())),t.arraystretch&&t.arraystretch<1&&(d=new Dt.MathNode("mstyle",[d]),d.setAttribute("scriptlevel","1")),d},"mathmlBuilder"),kj=o(function(t,r){t.envName.indexOf("ed")===-1&&ck(t);var i=[],n=t.envName.indexOf("at")>-1?"alignat":"align",a=t.envName==="split",s=Gh(t.parser,{cols:i,addJot:!0,autoTag:a?void 0:xD(t.envName),emptySingleRow:!0,colSeparationType:n,maxNumCols:a?2:void 0,leqno:t.parser.settings.leqno},"display"),l,u=0,h={type:"ordgroup",mode:t.mode,body:[]};if(r[0]&&r[0].type==="ordgroup"){for(var d="",f=0;f<r[0].body.length;f++){var p=Nr(r[0].body[f],"textord");d+=p.text}l=Number(d),u=l*2}var m=!u;s.body.forEach(function(x){for(var b=1;b<x.length;b+=2){var T=Nr(x[b],"styling"),w=Nr(T.body[0],"ordgroup");w.body.unshift(h)}if(m)u<x.length&&(u=x.length);else{var C=x.length/2;if(l<C)throw new Lt("Too many math in a row: "+("expected "+l+", but got "+C),x[0])}});for(var g=0;g<u;++g){var y="r",v=0;g%2===1?y="l":g>0&&m&&(v=1),i[g]={type:"align",align:y,pregap:v,postgap:0}}return s.colSeparationType=m?"align":"alignat",s},"alignedHandler");sc({type:"array",names:["array","darray"],props:{numArgs:1},handler(e,t){var r=sk(t[0]),i=r?[t[0]]:Nr(t[0],"ordgroup").body,n=i.map(function(s){var l=pD(s),u=l.text;if("lcr".indexOf(u)!==-1)return{type:"align",align:u};if(u==="|")return{type:"separator",separator:"|"};if(u===":")return{type:"separator",separator:":"};throw new Lt("Unknown column alignment: "+u,s)}),a={cols:n,hskipBeforeAndAfter:!0,maxNumCols:n.length};return Gh(e.parser,a,bD(e.envName))},htmlBuilder:oc,mathmlBuilder:lc});sc({type:"array",names:["matrix","pmatrix","bmatrix","Bmatrix","vmatrix","Vmatrix","matrix*","pmatrix*","bmatrix*","Bmatrix*","vmatrix*","Vmatrix*"],props:{numArgs:0},handler(e){var t={matrix:null,pmatrix:["(",")"],bmatrix:["[","]"],Bmatrix:["\\{","\\}"],vmatrix:["|","|"],Vmatrix:["\\Vert","\\Vert"]}[e.envName.replace("*","")],r="c",i={hskipBeforeAndAfter:!1,cols:[{type:"align",align:r}]};if(e.envName.charAt(e.envName.length-1)==="*"){var n=e.parser;if(n.consumeSpaces(),n.fetch().text==="["){if(n.consume(),n.consumeSpaces(),r=n.fetch().text,"lcr".indexOf(r)===-1)throw new Lt("Expected l or c or r",n.nextToken);n.consume(),n.consumeSpaces(),n.expect("]"),n.consume(),i.cols=[{type:"align",align:r}]}}var a=Gh(e.parser,i,bD(e.envName)),s=Math.max(0,...a.body.map(l=>l.length));return a.cols=new Array(s).fill({type:"align",align:r}),t?{type:"leftright",mode:e.mode,body:[a],left:t[0],right:t[1],rightColor:void 0}:a},htmlBuilder:oc,mathmlBuilder:lc});sc({type:"array",names:["smallmatrix"],props:{numArgs:0},handler(e){var t={arraystretch:.5},r=Gh(e.parser,t,"script");return r.colSeparationType="small",r},htmlBuilder:oc,mathmlBuilder:lc});sc({type:"array",names:["subarray"],props:{numArgs:1},handler(e,t){var r=sk(t[0]),i=r?[t[0]]:Nr(t[0],"ordgroup").body,n=i.map(function(s){var l=pD(s),u=l.text;if("lc".indexOf(u)!==-1)return{type:"align",align:u};throw new Lt("Unknown column alignment: "+u,s)});if(n.length>1)throw new Lt("{subarray} can contain only one column");var a={cols:n,hskipBeforeAndAfter:!1,arraystretch:.5};if(a=Gh(e.parser,a,"script"),a.body.length>0&&a.body[0].length>1)throw new Lt("{subarray} can contain only one column");return a},htmlBuilder:oc,mathmlBuilder:lc});sc({type:"array",names:["cases","dcases","rcases","drcases"],props:{numArgs:0},handler(e){var t={arraystretch:1.2,cols:[{type:"align",align:"l",pregap:0,postgap:1},{type:"align",align:"l",pregap:0,postgap:0}]},r=Gh(e.parser,t,bD(e.envName));return{type:"leftright",mode:e.mode,body:[r],left:e.envName.indexOf("r")>-1?".":"\\{",right:e.envName.indexOf("r")>-1?"\\}":".",rightColor:void 0}},htmlBuilder:oc,mathmlBuilder:lc});sc({type:"array",names:["align","align*","aligned","split"],props:{numArgs:0},handler:kj,htmlBuilder:oc,mathmlBuilder:lc});sc({type:"array",names:["gathered","gather","gather*"],props:{numArgs:0},handler(e){["gather","gather*"].includes(e.envName)&&ck(e);var t={cols:[{type:"align",align:"c"}],addJot:!0,colSeparationType:"gather",autoTag:xD(e.envName),emptySingleRow:!0,leqno:e.parser.settings.leqno};return Gh(e.parser,t,"display")},htmlBuilder:oc,mathmlBuilder:lc});sc({type:"array",names:["alignat","alignat*","alignedat"],props:{numArgs:1},handler:kj,htmlBuilder:oc,mathmlBuilder:lc});sc({type:"array",names:["equation","equation*"],props:{numArgs:0},handler(e){ck(e);var t={autoTag:xD(e.envName),emptySingleRow:!0,singleRow:!0,maxNumCols:1,leqno:e.parser.settings.leqno};return Gh(e.parser,t,"display")},htmlBuilder:oc,mathmlBuilder:lc});sc({type:"array",names:["CD"],props:{numArgs:0},handler(e){return ck(e),C9e(e.parser)},htmlBuilder:oc,mathmlBuilder:lc});he("\\nonumber","\\gdef\\@eqnsw{0}");he("\\notag","\\nonumber");Bt({type:"text",names:["\\hline","\\hdashline"],props:{numArgs:0,allowedInText:!0,allowedInMath:!0},handler(e,t){throw new Lt(e.funcName+" valid only within array environment")}});AY=Tj;Bt({type:"environment",names:["\\begin","\\end"],props:{numArgs:1,argTypes:["text"]},handler(e,t){var{parser:r,funcName:i}=e,n=t[0];if(n.type!=="ordgroup")throw new Lt("Invalid environment name",n);for(var a="",s=0;s<n.body.length;++s)a+=Nr(n.body[s],"textord").text;if(i==="\\begin"){if(!AY.hasOwnProperty(a))throw new Lt("No such environment: "+a,n);var l=AY[a],{args:u,optArgs:h}=r.parseArguments("\\begin{"+a+"}",l),d={mode:r.mode,envName:a,parser:r},f=l.handler(d,u,h);r.expect("\\end",!1);var p=r.nextToken,m=Nr(r.parseFunction(),"environment");if(m.name!==a)throw new Lt("Mismatch: \\begin{"+a+"} matched by \\end{"+m.name+"}",p);return f}return{type:"environment",mode:r.mode,name:a,nameGroup:n}}});wj=o((e,t)=>{var r=e.font,i=t.withFont(r);return Yr(e.body,i)},"htmlBuilder$5"),Sj=o((e,t)=>{var r=e.font,i=t.withFont(r);return Ti(e.body,i)},"mathmlBuilder$4"),_Y={"\\Bbb":"\\mathbb","\\bold":"\\mathbf","\\frak":"\\mathfrak","\\bm":"\\boldsymbol"};Bt({type:"font",names:["\\mathrm","\\mathit","\\mathbf","\\mathnormal","\\mathsfit","\\mathbb","\\mathcal","\\mathfrak","\\mathscr","\\mathsf","\\mathtt","\\Bbb","\\bold","\\frak"],props:{numArgs:1,allowedInArgument:!0},handler:o((e,t)=>{var{parser:r,funcName:i}=e,n=tk(t[0]),a=i;return a in _Y&&(a=_Y[a]),{type:"font",mode:r.mode,font:a.slice(1),body:n}},"handler"),htmlBuilder:wj,mathmlBuilder:Sj});Bt({type:"mclass",names:["\\boldsymbol","\\bm"],props:{numArgs:1},handler:o((e,t)=>{var{parser:r}=e,i=t[0],n=Zr.isCharacterBox(i);return{type:"mclass",mode:r.mode,mclass:ok(i),body:[{type:"font",mode:r.mode,font:"boldsymbol",body:i}],isCharacterBox:n}},"handler")});Bt({type:"font",names:["\\rm","\\sf","\\tt","\\bf","\\it","\\cal"],props:{numArgs:0,allowedInText:!0},handler:o((e,t)=>{var{parser:r,funcName:i,breakOnTokenText:n}=e,{mode:a}=r,s=r.parseExpression(!0,n),l="math"+i.slice(1);return{type:"font",mode:a,font:l,body:{type:"ordgroup",mode:r.mode,body:s}}},"handler"),htmlBuilder:wj,mathmlBuilder:Sj});Ej=o((e,t)=>{var r=t;return e==="display"?r=r.id>=ur.SCRIPT.id?r.text():ur.DISPLAY:e==="text"&&r.size===ur.DISPLAY.size?r=ur.TEXT:e==="script"?r=ur.SCRIPT:e==="scriptscript"&&(r=ur.SCRIPTSCRIPT),r},"adjustStyle"),TD=o((e,t)=>{var r=Ej(e.size,t.style),i=r.fracNum(),n=r.fracDen(),a;a=t.havingStyle(i);var s=Yr(e.numer,a,t);if(e.continued){var l=8.5/t.fontMetrics().ptPerEm,u=3.5/t.fontMetrics().ptPerEm;s.height=s.height<l?l:s.height,s.depth=s.depth<u?u:s.depth}a=t.havingStyle(n);var h=Yr(e.denom,a,t),d,f,p;e.hasBarLine?(e.barSize?(f=Qi(e.barSize,t),d=Ke.makeLineSpan("frac-line",t,f)):d=Ke.makeLineSpan("frac-line",t),f=d.height,p=d.height):(d=null,f=0,p=t.fontMetrics().defaultRuleThickness);var m,g,y;r.size===ur.DISPLAY.size||e.size==="display"?(m=t.fontMetrics().num1,f>0?g=3*p:g=7*p,y=t.fontMetrics().denom1):(f>0?(m=t.fontMetrics().num2,g=p):(m=t.fontMetrics().num3,g=3*p),y=t.fontMetrics().denom2);var v;if(d){var b=t.fontMetrics().axisHeight;m-s.depth-(b+.5*f)<g&&(m+=g-(m-s.depth-(b+.5*f))),b-.5*f-(h.height-y)<g&&(y+=g-(b-.5*f-(h.height-y)));var T=-(b-.5*f);v=Ke.makeVList({positionType:"individualShift",children:[{type:"elem",elem:h,shift:y},{type:"elem",elem:d,shift:T},{type:"elem",elem:s,shift:-m}]},t)}else{var x=m-s.depth-(h.height-y);x<g&&(m+=.5*(g-x),y+=.5*(g-x)),v=Ke.makeVList({positionType:"individualShift",children:[{type:"elem",elem:h,shift:y},{type:"elem",elem:s,shift:-m}]},t)}a=t.havingStyle(r),v.height*=a.sizeMultiplier/t.sizeMultiplier,v.depth*=a.sizeMultiplier/t.sizeMultiplier;var w;r.size===ur.DISPLAY.size?w=t.fontMetrics().delim1:r.size===ur.SCRIPTSCRIPT.size?w=t.havingStyle(ur.SCRIPT).fontMetrics().delim2:w=t.fontMetrics().delim2;var C,k;return e.leftDelim==null?C=bv(t,["mopen"]):C=xu.customSizedDelim(e.leftDelim,w,!0,t.havingStyle(r),e.mode,["mopen"]),e.continued?k=Ke.makeSpan([]):e.rightDelim==null?k=bv(t,["mclose"]):k=xu.customSizedDelim(e.rightDelim,w,!0,t.havingStyle(r),e.mode,["mclose"]),Ke.makeSpan(["mord"].concat(a.sizingClasses(t)),[C,Ke.makeSpan(["mfrac"],[v]),k],t)},"htmlBuilder$4"),CD=o((e,t)=>{var r=new Dt.MathNode("mfrac",[Ti(e.numer,t),Ti(e.denom,t)]);if(!e.hasBarLine)r.setAttribute("linethickness","0px");else if(e.barSize){var i=Qi(e.barSize,t);r.setAttribute("linethickness",It(i))}var n=Ej(e.size,t.style);if(n.size!==t.style.size){r=new Dt.MathNode("mstyle",[r]);var a=n.size===ur.DISPLAY.size?"true":"false";r.setAttribute("displaystyle",a),r.setAttribute("scriptlevel","0")}if(e.leftDelim!=null||e.rightDelim!=null){var s=[];if(e.leftDelim!=null){var l=new Dt.MathNode("mo",[new Dt.TextNode(e.leftDelim.replace("\\",""))]);l.setAttribute("fence","true"),s.push(l)}if(s.push(r),e.rightDelim!=null){var u=new Dt.MathNode("mo",[new Dt.TextNode(e.rightDelim.replace("\\",""))]);u.setAttribute("fence","true"),s.push(u)}return dD(s)}return r},"mathmlBuilder$3");Bt({type:"genfrac",names:["\\dfrac","\\frac","\\tfrac","\\dbinom","\\binom","\\tbinom","\\\\atopfrac","\\\\bracefrac","\\\\brackfrac"],props:{numArgs:2,allowedInArgument:!0},handler:o((e,t)=>{var{parser:r,funcName:i}=e,n=t[0],a=t[1],s,l=null,u=null,h="auto";switch(i){case"\\dfrac":case"\\frac":case"\\tfrac":s=!0;break;case"\\\\atopfrac":s=!1;break;case"\\dbinom":case"\\binom":case"\\tbinom":s=!1,l="(",u=")";break;case"\\\\bracefrac":s=!1,l="\\{",u="\\}";break;case"\\\\brackfrac":s=!1,l="[",u="]";break;default:throw new Error("Unrecognized genfrac command")}switch(i){case"\\dfrac":case"\\dbinom":h="display";break;case"\\tfrac":case"\\tbinom":h="text";break}return{type:"genfrac",mode:r.mode,continued:!1,numer:n,denom:a,hasBarLine:s,leftDelim:l,rightDelim:u,size:h,barSize:null}},"handler"),htmlBuilder:TD,mathmlBuilder:CD});Bt({type:"genfrac",names:["\\cfrac"],props:{numArgs:2},handler:o((e,t)=>{var{parser:r,funcName:i}=e,n=t[0],a=t[1];return{type:"genfrac",mode:r.mode,continued:!0,numer:n,denom:a,hasBarLine:!0,leftDelim:null,rightDelim:null,size:"display",barSize:null}},"handler")});Bt({type:"infix",names:["\\over","\\choose","\\atop","\\brace","\\brack"],props:{numArgs:0,infix:!0},handler(e){var{parser:t,funcName:r,token:i}=e,n;switch(r){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:t.mode,replaceWith:n,token:i}}});DY=["display","text","script","scriptscript"],RY=o(function(t){var r=null;return t.length>0&&(r=t,r=r==="."?null:r),r},"delimFromValue");Bt({type:"genfrac",names:["\\genfrac"],props:{numArgs:6,allowedInArgument:!0,argTypes:["math","math","size","text","math","math"]},handler(e,t){var{parser:r}=e,i=t[4],n=t[5],a=tk(t[0]),s=a.type==="atom"&&a.family==="open"?RY(a.text):null,l=tk(t[1]),u=l.type==="atom"&&l.family==="close"?RY(l.text):null,h=Nr(t[2],"size"),d,f=null;h.isBlank?d=!0:(f=h.value,d=f.number>0);var p="auto",m=t[3];if(m.type==="ordgroup"){if(m.body.length>0){var g=Nr(m.body[0],"textord");p=DY[Number(g.text)]}}else m=Nr(m,"textord"),p=DY[Number(m.text)];return{type:"genfrac",mode:r.mode,numer:i,denom:n,continued:!1,hasBarLine:d,barSize:f,leftDelim:s,rightDelim:u,size:p}},htmlBuilder:TD,mathmlBuilder:CD});Bt({type:"infix",names:["\\above"],props:{numArgs:1,argTypes:["size"],infix:!0},handler(e,t){var{parser:r,funcName:i,token:n}=e;return{type:"infix",mode:r.mode,replaceWith:"\\\\abovefrac",size:Nr(t[0],"size").value,token:n}}});Bt({type:"genfrac",names:["\\\\abovefrac"],props:{numArgs:3,argTypes:["math","size","math"]},handler:o((e,t)=>{var{parser:r,funcName:i}=e,n=t[0],a=mIe(Nr(t[1],"infix").size),s=t[2],l=a.number>0;return{type:"genfrac",mode:r.mode,numer:n,denom:s,continued:!1,hasBarLine:l,barSize:a,leftDelim:null,rightDelim:null,size:"auto"}},"handler"),htmlBuilder:TD,mathmlBuilder:CD});Aj=o((e,t)=>{var r=t.style,i,n;e.type==="supsub"?(i=e.sup?Yr(e.sup,t.havingStyle(r.sup()),t):Yr(e.sub,t.havingStyle(r.sub()),t),n=Nr(e.base,"horizBrace")):n=Nr(e,"horizBrace");var a=Yr(n.base,t.havingBaseStyle(ur.DISPLAY)),s=Tu.svgSpan(n,t),l;if(n.isOver?(l=Ke.makeVList({positionType:"firstBaseline",children:[{type:"elem",elem:a},{type:"kern",size:.1},{type:"elem",elem:s}]},t),l.children[0].children[0].children[1].classes.push("svg-align")):(l=Ke.makeVList({positionType:"bottom",positionData:a.depth+.1+s.height,children:[{type:"elem",elem:s},{type:"kern",size:.1},{type:"elem",elem:a}]},t),l.children[0].children[0].children[0].classes.push("svg-align")),i){var u=Ke.makeSpan(["mord",n.isOver?"mover":"munder"],[l],t);n.isOver?l=Ke.makeVList({positionType:"firstBaseline",children:[{type:"elem",elem:u},{type:"kern",size:.2},{type:"elem",elem:i}]},t):l=Ke.makeVList({positionType:"bottom",positionData:u.depth+.2+i.height+i.depth,children:[{type:"elem",elem:i},{type:"kern",size:.2},{type:"elem",elem:u}]},t)}return Ke.makeSpan(["mord",n.isOver?"mover":"munder"],[l],t)},"htmlBuilder$3"),B9e=o((e,t)=>{var r=Tu.mathMLnode(e.label);return new Dt.MathNode(e.isOver?"mover":"munder",[Ti(e.base,t),r])},"mathmlBuilder$2");Bt({type:"horizBrace",names:["\\overbrace","\\underbrace"],props:{numArgs:1},handler(e,t){var{parser:r,funcName:i}=e;return{type:"horizBrace",mode:r.mode,label:i,isOver:/^\\over/.test(i),base:t[0]}},htmlBuilder:Aj,mathmlBuilder:B9e});Bt({type:"href",names:["\\href"],props:{numArgs:2,argTypes:["url","original"],allowedInText:!0},handler:o((e,t)=>{var{parser:r}=e,i=t[1],n=Nr(t[0],"url").url;return r.settings.isTrusted({command:"\\href",url:n})?{type:"href",mode:r.mode,href:n,body:gn(i)}:r.formatUnsupportedCmd("\\href")},"handler"),htmlBuilder:o((e,t)=>{var r=Fn(e.body,t,!1);return Ke.makeAnchor(e.href,[],r,t)},"htmlBuilder"),mathmlBuilder:o((e,t)=>{var r=zh(e.body,t);return r instanceof Ha||(r=new Ha("mrow",[r])),r.setAttribute("href",e.href),r},"mathmlBuilder")});Bt({type:"href",names:["\\url"],props:{numArgs:1,argTypes:["url"],allowedInText:!0},handler:o((e,t)=>{var{parser:r}=e,i=Nr(t[0],"url").url;if(!r.settings.isTrusted({command:"\\url",url:i}))return r.formatUnsupportedCmd("\\url");for(var n=[],a=0;a<i.length;a++){var s=i[a];s==="~"&&(s="\\textasciitilde"),n.push({type:"textord",mode:"text",text:s})}var l={type:"text",mode:r.mode,font:"\\texttt",body:n};return{type:"href",mode:r.mode,href:i,body:gn(l)}},"handler")});Bt({type:"hbox",names:["\\hbox"],props:{numArgs:1,argTypes:["text"],allowedInText:!0,primitive:!0},handler(e,t){var{parser:r}=e;return{type:"hbox",mode:r.mode,body:gn(t[0])}},htmlBuilder(e,t){var r=Fn(e.body,t,!1);return Ke.makeFragment(r)},mathmlBuilder(e,t){return new Dt.MathNode("mrow",Cs(e.body,t))}});Bt({type:"html",names:["\\htmlClass","\\htmlId","\\htmlStyle","\\htmlData"],props:{numArgs:2,argTypes:["raw","original"],allowedInText:!0},handler:o((e,t)=>{var{parser:r,funcName:i,token:n}=e,a=Nr(t[0],"raw").string,s=t[1];r.settings.strict&&r.settings.reportNonstrict("htmlExtension","HTML extension is disabled on strict mode");var l,u={};switch(i){case"\\htmlClass":u.class=a,l={command:"\\htmlClass",class:a};break;case"\\htmlId":u.id=a,l={command:"\\htmlId",id:a};break;case"\\htmlStyle":u.style=a,l={command:"\\htmlStyle",style:a};break;case"\\htmlData":{for(var h=a.split(","),d=0;d<h.length;d++){var f=h[d].split("=");if(f.length!==2)throw new Lt("Error parsing key-value for \\htmlData");u["data-"+f[0].trim()]=f[1].trim()}l={command:"\\htmlData",attributes:u};break}default:throw new Error("Unrecognized html command")}return r.settings.isTrusted(l)?{type:"html",mode:r.mode,attributes:u,body:gn(s)}:r.formatUnsupportedCmd(i)},"handler"),htmlBuilder:o((e,t)=>{var r=Fn(e.body,t,!1),i=["enclosing"];e.attributes.class&&i.push(...e.attributes.class.trim().split(/\s+/));var n=Ke.makeSpan(i,r,t);for(var a in e.attributes)a!=="class"&&e.attributes.hasOwnProperty(a)&&n.setAttribute(a,e.attributes[a]);return n},"htmlBuilder"),mathmlBuilder:o((e,t)=>zh(e.body,t),"mathmlBuilder")});Bt({type:"htmlmathml",names:["\\html@mathml"],props:{numArgs:2,allowedInText:!0},handler:o((e,t)=>{var{parser:r}=e;return{type:"htmlmathml",mode:r.mode,html:gn(t[0]),mathml:gn(t[1])}},"handler"),htmlBuilder:o((e,t)=>{var r=Fn(e.html,t,!1);return Ke.makeFragment(r)},"htmlBuilder"),mathmlBuilder:o((e,t)=>zh(e.mathml,t),"mathmlBuilder")});Y7=o(function(t){if(/^[-+]? *(\d+(\.\d*)?|\.\d+)$/.test(t))return{number:+t,unit:"bp"};var r=/([-+]?) *(\d+(?:\.\d*)?|\.\d+) *([a-z]{2})/.exec(t);if(!r)throw new Lt("Invalid size: '"+t+"' in \\includegraphics");var i={number:+(r[1]+r[2]),unit:r[3]};if(!HY(i))throw new Lt("Invalid unit: '"+i.unit+"' in \\includegraphics.");return i},"sizeData");Bt({type:"includegraphics",names:["\\includegraphics"],props:{numArgs:1,numOptionalArgs:1,argTypes:["raw","url"],allowedInText:!1},handler:o((e,t,r)=>{var{parser:i}=e,n={number:0,unit:"em"},a={number:.9,unit:"em"},s={number:0,unit:"em"},l="";if(r[0])for(var u=Nr(r[0],"raw").string,h=u.split(","),d=0;d<h.length;d++){var f=h[d].split("=");if(f.length===2){var p=f[1].trim();switch(f[0].trim()){case"alt":l=p;break;case"width":n=Y7(p);break;case"height":a=Y7(p);break;case"totalheight":s=Y7(p);break;default:throw new Lt("Invalid key: '"+f[0]+"' in \\includegraphics.")}}}var m=Nr(t[0],"url").url;return l===""&&(l=m,l=l.replace(/^.*[\\/]/,""),l=l.substring(0,l.lastIndexOf("."))),i.settings.isTrusted({command:"\\includegraphics",url:m})?{type:"includegraphics",mode:i.mode,alt:l,width:n,height:a,totalheight:s,src:m}:i.formatUnsupportedCmd("\\includegraphics")},"handler"),htmlBuilder:o((e,t)=>{var r=Qi(e.height,t),i=0;e.totalheight.number>0&&(i=Qi(e.totalheight,t)-r);var n=0;e.width.number>0&&(n=Qi(e.width,t));var a={height:It(r+i)};n>0&&(a.width=It(n)),i>0&&(a.verticalAlign=It(-i));var s=new J7(e.src,e.alt,a);return s.height=r,s.depth=i,s},"htmlBuilder"),mathmlBuilder:o((e,t)=>{var r=new Dt.MathNode("mglyph",[]);r.setAttribute("alt",e.alt);var i=Qi(e.height,t),n=0;if(e.totalheight.number>0&&(n=Qi(e.totalheight,t)-i,r.setAttribute("valign",It(-n))),r.setAttribute("height",It(i+n)),e.width.number>0){var a=Qi(e.width,t);r.setAttribute("width",It(a))}return r.setAttribute("src",e.src),r},"mathmlBuilder")});Bt({type:"kern",names:["\\kern","\\mkern","\\hskip","\\mskip"],props:{numArgs:1,argTypes:["size"],primitive:!0,allowedInText:!0},handler(e,t){var{parser:r,funcName:i}=e,n=Nr(t[0],"size");if(r.settings.strict){var a=i[1]==="m",s=n.value.unit==="mu";a?(s||r.settings.reportNonstrict("mathVsTextUnits","LaTeX's "+i+" supports only mu units, "+("not "+n.value.unit+" units")),r.mode!=="math"&&r.settings.reportNonstrict("mathVsTextUnits","LaTeX's "+i+" works only in math mode")):s&&r.settings.reportNonstrict("mathVsTextUnits","LaTeX's "+i+" doesn't support mu units")}return{type:"kern",mode:r.mode,dimension:n.value}},htmlBuilder(e,t){return Ke.makeGlue(e.dimension,t)},mathmlBuilder(e,t){var r=Qi(e.dimension,t);return new Dt.SpaceNode(r)}});Bt({type:"lap",names:["\\mathllap","\\mathrlap","\\mathclap"],props:{numArgs:1,allowedInText:!0},handler:o((e,t)=>{var{parser:r,funcName:i}=e,n=t[0];return{type:"lap",mode:r.mode,alignment:i.slice(5),body:n}},"handler"),htmlBuilder:o((e,t)=>{var r;e.alignment==="clap"?(r=Ke.makeSpan([],[Yr(e.body,t)]),r=Ke.makeSpan(["inner"],[r],t)):r=Ke.makeSpan(["inner"],[Yr(e.body,t)]);var i=Ke.makeSpan(["fix"],[]),n=Ke.makeSpan([e.alignment],[r,i],t),a=Ke.makeSpan(["strut"]);return a.style.height=It(n.height+n.depth),n.depth&&(a.style.verticalAlign=It(-n.depth)),n.children.unshift(a),n=Ke.makeSpan(["thinbox"],[n],t),Ke.makeSpan(["mord","vbox"],[n],t)},"htmlBuilder"),mathmlBuilder:o((e,t)=>{var r=new Dt.MathNode("mpadded",[Ti(e.body,t)]);if(e.alignment!=="rlap"){var i=e.alignment==="llap"?"-1":"-0.5";r.setAttribute("lspace",i+"width")}return r.setAttribute("width","0px"),r},"mathmlBuilder")});Bt({type:"styling",names:["\\(","$"],props:{numArgs:0,allowedInText:!0,allowedInMath:!1},handler(e,t){var{funcName:r,parser:i}=e,n=i.mode;i.switchMode("math");var a=r==="\\("?"\\)":"$",s=i.parseExpression(!1,a);return i.expect(a),i.switchMode(n),{type:"styling",mode:i.mode,style:"text",body:s}}});Bt({type:"text",names:["\\)","\\]"],props:{numArgs:0,allowedInText:!0,allowedInMath:!1},handler(e,t){throw new Lt("Mismatched "+e.funcName)}});LY=o((e,t)=>{switch(t.style.size){case ur.DISPLAY.size:return e.display;case ur.TEXT.size:return e.text;case ur.SCRIPT.size:return e.script;case ur.SCRIPTSCRIPT.size:return e.scriptscript;default:return e.text}},"chooseMathStyle");Bt({type:"mathchoice",names:["\\mathchoice"],props:{numArgs:4,primitive:!0},handler:o((e,t)=>{var{parser:r}=e;return{type:"mathchoice",mode:r.mode,display:gn(t[0]),text:gn(t[1]),script:gn(t[2]),scriptscript:gn(t[3])}},"handler"),htmlBuilder:o((e,t)=>{var r=LY(e,t),i=Fn(r,t,!1);return Ke.makeFragment(i)},"htmlBuilder"),mathmlBuilder:o((e,t)=>{var r=LY(e,t);return zh(r,t)},"mathmlBuilder")});_j=o((e,t,r,i,n,a,s)=>{e=Ke.makeSpan([],[e]);var l=r&&Zr.isCharacterBox(r),u,h;if(t){var d=Yr(t,i.havingStyle(n.sup()),i);h={elem:d,kern:Math.max(i.fontMetrics().bigOpSpacing1,i.fontMetrics().bigOpSpacing3-d.depth)}}if(r){var f=Yr(r,i.havingStyle(n.sub()),i);u={elem:f,kern:Math.max(i.fontMetrics().bigOpSpacing2,i.fontMetrics().bigOpSpacing4-f.height)}}var p;if(h&&u){var m=i.fontMetrics().bigOpSpacing5+u.elem.height+u.elem.depth+u.kern+e.depth+s;p=Ke.makeVList({positionType:"bottom",positionData:m,children:[{type:"kern",size:i.fontMetrics().bigOpSpacing5},{type:"elem",elem:u.elem,marginLeft:It(-a)},{type:"kern",size:u.kern},{type:"elem",elem:e},{type:"kern",size:h.kern},{type:"elem",elem:h.elem,marginLeft:It(a)},{type:"kern",size:i.fontMetrics().bigOpSpacing5}]},i)}else if(u){var g=e.height-s;p=Ke.makeVList({positionType:"top",positionData:g,children:[{type:"kern",size:i.fontMetrics().bigOpSpacing5},{type:"elem",elem:u.elem,marginLeft:It(-a)},{type:"kern",size:u.kern},{type:"elem",elem:e}]},i)}else if(h){var y=e.depth+s;p=Ke.makeVList({positionType:"bottom",positionData:y,children:[{type:"elem",elem:e},{type:"kern",size:h.kern},{type:"elem",elem:h.elem,marginLeft:It(a)},{type:"kern",size:i.fontMetrics().bigOpSpacing5}]},i)}else return e;var v=[p];if(u&&a!==0&&!l){var x=Ke.makeSpan(["mspace"],[],i);x.style.marginRight=It(a),v.unshift(x)}return Ke.makeSpan(["mop","op-limits"],v,i)},"assembleSupSub"),Dj=["\\smallint"],Bm=o((e,t)=>{var r,i,n=!1,a;e.type==="supsub"?(r=e.sup,i=e.sub,a=Nr(e.base,"op"),n=!0):a=Nr(e,"op");var s=t.style,l=!1;s.size===ur.DISPLAY.size&&a.symbol&&!Dj.includes(a.name)&&(l=!0);var u;if(a.symbol){var h=l?"Size2-Regular":"Size1-Regular",d="";if((a.name==="\\oiint"||a.name==="\\oiiint")&&(d=a.name.slice(1),a.name=d==="oiint"?"\\iint":"\\iiint"),u=Ke.makeSymbol(a.name,h,"math",t,["mop","op-symbol",l?"large-op":"small-op"]),d.length>0){var f=u.italic,p=Ke.staticSvg(d+"Size"+(l?"2":"1"),t);u=Ke.makeVList({positionType:"individualShift",children:[{type:"elem",elem:u,shift:0},{type:"elem",elem:p,shift:l?.08:0}]},t),a.name="\\"+d,u.classes.unshift("mop"),u.italic=f}}else if(a.body){var m=Fn(a.body,t,!0);m.length===1&&m[0]instanceof Ts?(u=m[0],u.classes[0]="mop"):u=Ke.makeSpan(["mop"],m,t)}else{for(var g=[],y=1;y<a.name.length;y++)g.push(Ke.mathsym(a.name[y],a.mode,t));u=Ke.makeSpan(["mop"],g,t)}var v=0,x=0;return(u instanceof Ts||a.name==="\\oiint"||a.name==="\\oiiint")&&!a.suppressBaseShift&&(v=(u.height-u.depth)/2-t.fontMetrics().axisHeight,x=u.italic),n?_j(u,r,i,t,s,x,v):(v&&(u.style.position="relative",u.style.top=It(v)),u)},"htmlBuilder$2"),Tv=o((e,t)=>{var r;if(e.symbol)r=new Ha("mo",[No(e.name,e.mode)]),Dj.includes(e.name)&&r.setAttribute("largeop","false");else if(e.body)r=new Ha("mo",Cs(e.body,t));else{r=new Ha("mi",[new Mo(e.name.slice(1))]);var i=new Ha("mo",[No("\u2061","text")]);e.parentIsSupSub?r=new Ha("mrow",[r,i]):r=ij([r,i])}return r},"mathmlBuilder$1"),F9e={"\u220F":"\\prod","\u2210":"\\coprod","\u2211":"\\sum","\u22C0":"\\bigwedge","\u22C1":"\\bigvee","\u22C2":"\\bigcap","\u22C3":"\\bigcup","\u2A00":"\\bigodot","\u2A01":"\\bigoplus","\u2A02":"\\bigotimes","\u2A04":"\\biguplus","\u2A06":"\\bigsqcup"};Bt({type:"op",names:["\\coprod","\\bigvee","\\bigwedge","\\biguplus","\\bigcap","\\bigcup","\\intop","\\prod","\\sum","\\bigotimes","\\bigoplus","\\bigodot","\\bigsqcup","\\smallint","\u220F","\u2210","\u2211","\u22C0","\u22C1","\u22C2","\u22C3","\u2A00","\u2A01","\u2A02","\u2A04","\u2A06"],props:{numArgs:0},handler:o((e,t)=>{var{parser:r,funcName:i}=e,n=i;return n.length===1&&(n=F9e[n]),{type:"op",mode:r.mode,limits:!0,parentIsSupSub:!1,symbol:!0,name:n}},"handler"),htmlBuilder:Bm,mathmlBuilder:Tv});Bt({type:"op",names:["\\mathop"],props:{numArgs:1,primitive:!0},handler:o((e,t)=>{var{parser:r}=e,i=t[0];return{type:"op",mode:r.mode,limits:!1,parentIsSupSub:!1,symbol:!1,body:gn(i)}},"handler"),htmlBuilder:Bm,mathmlBuilder:Tv});$9e={"\u222B":"\\int","\u222C":"\\iint","\u222D":"\\iiint","\u222E":"\\oint","\u222F":"\\oiint","\u2230":"\\oiiint"};Bt({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","\\tan","\\tanh","\\tg","\\th"],props:{numArgs:0},handler(e){var{parser:t,funcName:r}=e;return{type:"op",mode:t.mode,limits:!1,parentIsSupSub:!1,symbol:!1,name:r}},htmlBuilder:Bm,mathmlBuilder:Tv});Bt({type:"op",names:["\\det","\\gcd","\\inf","\\lim","\\max","\\min","\\Pr","\\sup"],props:{numArgs:0},handler(e){var{parser:t,funcName:r}=e;return{type:"op",mode:t.mode,limits:!0,parentIsSupSub:!1,symbol:!1,name:r}},htmlBuilder:Bm,mathmlBuilder:Tv});Bt({type:"op",names:["\\int","\\iint","\\iiint","\\oint","\\oiint","\\oiiint","\u222B","\u222C","\u222D","\u222E","\u222F","\u2230"],props:{numArgs:0},handler(e){var{parser:t,funcName:r}=e,i=r;return i.length===1&&(i=$9e[i]),{type:"op",mode:t.mode,limits:!1,parentIsSupSub:!1,symbol:!0,name:i}},htmlBuilder:Bm,mathmlBuilder:Tv});Rj=o((e,t)=>{var r,i,n=!1,a;e.type==="supsub"?(r=e.sup,i=e.sub,a=Nr(e.base,"operatorname"),n=!0):a=Nr(e,"operatorname");var s;if(a.body.length>0){for(var l=a.body.map(f=>{var p=f.text;return typeof p=="string"?{type:"textord",mode:f.mode,text:p}:f}),u=Fn(l,t.withFont("mathrm"),!0),h=0;h<u.length;h++){var d=u[h];d instanceof Ts&&(d.text=d.text.replace(/\u2212/,"-").replace(/\u2217/,"*"))}s=Ke.makeSpan(["mop"],u,t)}else s=Ke.makeSpan(["mop"],[],t);return n?_j(s,r,i,t,t.style,0,0):s},"htmlBuilder$1"),z9e=o((e,t)=>{for(var r=Cs(e.body,t.withFont("mathrm")),i=!0,n=0;n<r.length;n++){var a=r[n];if(!(a instanceof Dt.SpaceNode))if(a instanceof Dt.MathNode)switch(a.type){case"mi":case"mn":case"ms":case"mspace":case"mtext":break;case"mo":{var s=a.children[0];a.children.length===1&&s instanceof Dt.TextNode?s.text=s.text.replace(/\u2212/,"-").replace(/\u2217/,"*"):i=!1;break}default:i=!1}else i=!1}if(i){var l=r.map(d=>d.toText()).join("");r=[new Dt.TextNode(l)]}var u=new Dt.MathNode("mi",r);u.setAttribute("mathvariant","normal");var h=new Dt.MathNode("mo",[No("\u2061","text")]);return e.parentIsSupSub?new Dt.MathNode("mrow",[u,h]):Dt.newDocumentFragment([u,h])},"mathmlBuilder");Bt({type:"operatorname",names:["\\operatorname@","\\operatornamewithlimits"],props:{numArgs:1},handler:o((e,t)=>{var{parser:r,funcName:i}=e,n=t[0];return{type:"operatorname",mode:r.mode,body:gn(n),alwaysHandleSupSub:i==="\\operatornamewithlimits",limits:!1,parentIsSupSub:!1}},"handler"),htmlBuilder:Rj,mathmlBuilder:z9e});he("\\operatorname","\\@ifstar\\operatornamewithlimits\\operatorname@");qf({type:"ordgroup",htmlBuilder(e,t){return e.semisimple?Ke.makeFragment(Fn(e.body,t,!1)):Ke.makeSpan(["mord"],Fn(e.body,t,!0),t)},mathmlBuilder(e,t){return zh(e.body,t,!0)}});Bt({type:"overline",names:["\\overline"],props:{numArgs:1},handler(e,t){var{parser:r}=e,i=t[0];return{type:"overline",mode:r.mode,body:i}},htmlBuilder(e,t){var r=Yr(e.body,t.havingCrampedStyle()),i=Ke.makeLineSpan("overline-line",t),n=t.fontMetrics().defaultRuleThickness,a=Ke.makeVList({positionType:"firstBaseline",children:[{type:"elem",elem:r},{type:"kern",size:3*n},{type:"elem",elem:i},{type:"kern",size:n}]},t);return Ke.makeSpan(["mord","overline"],[a],t)},mathmlBuilder(e,t){var r=new Dt.MathNode("mo",[new Dt.TextNode("\u203E")]);r.setAttribute("stretchy","true");var i=new Dt.MathNode("mover",[Ti(e.body,t),r]);return i.setAttribute("accent","true"),i}});Bt({type:"phantom",names:["\\phantom"],props:{numArgs:1,allowedInText:!0},handler:o((e,t)=>{var{parser:r}=e,i=t[0];return{type:"phantom",mode:r.mode,body:gn(i)}},"handler"),htmlBuilder:o((e,t)=>{var r=Fn(e.body,t.withPhantom(),!1);return Ke.makeFragment(r)},"htmlBuilder"),mathmlBuilder:o((e,t)=>{var r=Cs(e.body,t);return new Dt.MathNode("mphantom",r)},"mathmlBuilder")});Bt({type:"hphantom",names:["\\hphantom"],props:{numArgs:1,allowedInText:!0},handler:o((e,t)=>{var{parser:r}=e,i=t[0];return{type:"hphantom",mode:r.mode,body:i}},"handler"),htmlBuilder:o((e,t)=>{var r=Ke.makeSpan([],[Yr(e.body,t.withPhantom())]);if(r.height=0,r.depth=0,r.children)for(var i=0;i<r.children.length;i++)r.children[i].height=0,r.children[i].depth=0;return r=Ke.makeVList({positionType:"firstBaseline",children:[{type:"elem",elem:r}]},t),Ke.makeSpan(["mord"],[r],t)},"htmlBuilder"),mathmlBuilder:o((e,t)=>{var r=Cs(gn(e.body),t),i=new Dt.MathNode("mphantom",r),n=new Dt.MathNode("mpadded",[i]);return n.setAttribute("height","0px"),n.setAttribute("depth","0px"),n},"mathmlBuilder")});Bt({type:"vphantom",names:["\\vphantom"],props:{numArgs:1,allowedInText:!0},handler:o((e,t)=>{var{parser:r}=e,i=t[0];return{type:"vphantom",mode:r.mode,body:i}},"handler"),htmlBuilder:o((e,t)=>{var r=Ke.makeSpan(["inner"],[Yr(e.body,t.withPhantom())]),i=Ke.makeSpan(["fix"],[]);return Ke.makeSpan(["mord","rlap"],[r,i],t)},"htmlBuilder"),mathmlBuilder:o((e,t)=>{var r=Cs(gn(e.body),t),i=new Dt.MathNode("mphantom",r),n=new Dt.MathNode("mpadded",[i]);return n.setAttribute("width","0px"),n},"mathmlBuilder")});Bt({type:"raisebox",names:["\\raisebox"],props:{numArgs:2,argTypes:["size","hbox"],allowedInText:!0},handler(e,t){var{parser:r}=e,i=Nr(t[0],"size").value,n=t[1];return{type:"raisebox",mode:r.mode,dy:i,body:n}},htmlBuilder(e,t){var r=Yr(e.body,t),i=Qi(e.dy,t);return Ke.makeVList({positionType:"shift",positionData:-i,children:[{type:"elem",elem:r}]},t)},mathmlBuilder(e,t){var r=new Dt.MathNode("mpadded",[Ti(e.body,t)]),i=e.dy.number+e.dy.unit;return r.setAttribute("voffset",i),r}});Bt({type:"internal",names:["\\relax"],props:{numArgs:0,allowedInText:!0,allowedInArgument:!0},handler(e){var{parser:t}=e;return{type:"internal",mode:t.mode}}});Bt({type:"rule",names:["\\rule"],props:{numArgs:2,numOptionalArgs:1,allowedInText:!0,allowedInMath:!0,argTypes:["size","size","size"]},handler(e,t,r){var{parser:i}=e,n=r[0],a=Nr(t[0],"size"),s=Nr(t[1],"size");return{type:"rule",mode:i.mode,shift:n&&Nr(n,"size").value,width:a.value,height:s.value}},htmlBuilder(e,t){var r=Ke.makeSpan(["mord","rule"],[],t),i=Qi(e.width,t),n=Qi(e.height,t),a=e.shift?Qi(e.shift,t):0;return r.style.borderRightWidth=It(i),r.style.borderTopWidth=It(n),r.style.bottom=It(a),r.width=i,r.height=n+a,r.depth=-a,r.maxFontSize=n*1.125*t.sizeMultiplier,r},mathmlBuilder(e,t){var r=Qi(e.width,t),i=Qi(e.height,t),n=e.shift?Qi(e.shift,t):0,a=t.color&&t.getColor()||"black",s=new Dt.MathNode("mspace");s.setAttribute("mathbackground",a),s.setAttribute("width",It(r)),s.setAttribute("height",It(i));var l=new Dt.MathNode("mpadded",[s]);return n>=0?l.setAttribute("height",It(n)):(l.setAttribute("height",It(n)),l.setAttribute("depth",It(-n))),l.setAttribute("voffset",It(n)),l}});o(Lj,"sizingGroup");MY=["\\tiny","\\sixptsize","\\scriptsize","\\footnotesize","\\small","\\normalsize","\\large","\\Large","\\LARGE","\\huge","\\Huge"],G9e=o((e,t)=>{var r=t.havingSize(e.size);return Lj(e.body,r,t)},"htmlBuilder");Bt({type:"sizing",names:MY,props:{numArgs:0,allowedInText:!0},handler:o((e,t)=>{var{breakOnTokenText:r,funcName:i,parser:n}=e,a=n.parseExpression(!1,r);return{type:"sizing",mode:n.mode,size:MY.indexOf(i)+1,body:a}},"handler"),htmlBuilder:G9e,mathmlBuilder:o((e,t)=>{var r=t.havingSize(e.size),i=Cs(e.body,r),n=new Dt.MathNode("mstyle",i);return n.setAttribute("mathsize",It(r.sizeMultiplier)),n},"mathmlBuilder")});Bt({type:"smash",names:["\\smash"],props:{numArgs:1,numOptionalArgs:1,allowedInText:!0},handler:o((e,t,r)=>{var{parser:i}=e,n=!1,a=!1,s=r[0]&&Nr(r[0],"ordgroup");if(s)for(var l="",u=0;u<s.body.length;++u){var h=s.body[u];if(l=h.text,l==="t")n=!0;else if(l==="b")a=!0;else{n=!1,a=!1;break}}else n=!0,a=!0;var d=t[0];return{type:"smash",mode:i.mode,body:d,smashHeight:n,smashDepth:a}},"handler"),htmlBuilder:o((e,t)=>{var r=Ke.makeSpan([],[Yr(e.body,t)]);if(!e.smashHeight&&!e.smashDepth)return r;if(e.smashHeight&&(r.height=0,r.children))for(var i=0;i<r.children.length;i++)r.children[i].height=0;if(e.smashDepth&&(r.depth=0,r.children))for(var n=0;n<r.children.length;n++)r.children[n].depth=0;var a=Ke.makeVList({positionType:"firstBaseline",children:[{type:"elem",elem:r}]},t);return Ke.makeSpan(["mord"],[a],t)},"htmlBuilder"),mathmlBuilder:o((e,t)=>{var r=new Dt.MathNode("mpadded",[Ti(e.body,t)]);return e.smashHeight&&r.setAttribute("height","0px"),e.smashDepth&&r.setAttribute("depth","0px"),r},"mathmlBuilder")});Bt({type:"sqrt",names:["\\sqrt"],props:{numArgs:1,numOptionalArgs:1},handler(e,t,r){var{parser:i}=e,n=r[0],a=t[0];return{type:"sqrt",mode:i.mode,body:a,index:n}},htmlBuilder(e,t){var r=Yr(e.body,t.havingCrampedStyle());r.height===0&&(r.height=t.fontMetrics().xHeight),r=Ke.wrapFragment(r,t);var i=t.fontMetrics(),n=i.defaultRuleThickness,a=n;t.style.id<ur.TEXT.id&&(a=t.fontMetrics().xHeight);var s=n+a/4,l=r.height+r.depth+s+n,{span:u,ruleWidth:h,advanceWidth:d}=xu.sqrtImage(l,t),f=u.height-h;f>r.height+r.depth+s&&(s=(s+f-r.height-r.depth)/2);var p=u.height-r.height-s-h;r.style.paddingLeft=It(d);var m=Ke.makeVList({positionType:"firstBaseline",children:[{type:"elem",elem:r,wrapperClasses:["svg-align"]},{type:"kern",size:-(r.height+p)},{type:"elem",elem:u},{type:"kern",size:h}]},t);if(e.index){var g=t.havingStyle(ur.SCRIPTSCRIPT),y=Yr(e.index,g,t),v=.6*(m.height-m.depth),x=Ke.makeVList({positionType:"shift",positionData:-v,children:[{type:"elem",elem:y}]},t),b=Ke.makeSpan(["root"],[x]);return Ke.makeSpan(["mord","sqrt"],[b,m],t)}else return Ke.makeSpan(["mord","sqrt"],[m],t)},mathmlBuilder(e,t){var{body:r,index:i}=e;return i?new Dt.MathNode("mroot",[Ti(r,t),Ti(i,t)]):new Dt.MathNode("msqrt",[Ti(r,t)])}});NY={display:ur.DISPLAY,text:ur.TEXT,script:ur.SCRIPT,scriptscript:ur.SCRIPTSCRIPT};Bt({type:"styling",names:["\\displaystyle","\\textstyle","\\scriptstyle","\\scriptscriptstyle"],props:{numArgs:0,allowedInText:!0,primitive:!0},handler(e,t){var{breakOnTokenText:r,funcName:i,parser:n}=e,a=n.parseExpression(!0,r),s=i.slice(1,i.length-5);return{type:"styling",mode:n.mode,style:s,body:a}},htmlBuilder(e,t){var r=NY[e.style],i=t.havingStyle(r).withFont("");return Lj(e.body,i,t)},mathmlBuilder(e,t){var r=NY[e.style],i=t.havingStyle(r),n=Cs(e.body,i),a=new Dt.MathNode("mstyle",n),s={display:["0","true"],text:["0","false"],script:["1","false"],scriptscript:["2","false"]},l=s[e.style];return a.setAttribute("scriptlevel",l[0]),a.setAttribute("displaystyle",l[1]),a}});V9e=o(function(t,r){var i=t.base;if(i)if(i.type==="op"){var n=i.limits&&(r.style.size===ur.DISPLAY.size||i.alwaysHandleSupSub);return n?Bm:null}else if(i.type==="operatorname"){var a=i.alwaysHandleSupSub&&(r.style.size===ur.DISPLAY.size||i.limits);return a?Rj:null}else{if(i.type==="accent")return Zr.isCharacterBox(i.base)?mD:null;if(i.type==="horizBrace"){var s=!t.sub;return s===i.isOver?Aj:null}else return null}else return null},"htmlBuilderDelegate");qf({type:"supsub",htmlBuilder(e,t){var r=V9e(e,t);if(r)return r(e,t);var{base:i,sup:n,sub:a}=e,s=Yr(i,t),l,u,h=t.fontMetrics(),d=0,f=0,p=i&&Zr.isCharacterBox(i);if(n){var m=t.havingStyle(t.style.sup());l=Yr(n,m,t),p||(d=s.height-m.fontMetrics().supDrop*m.sizeMultiplier/t.sizeMultiplier)}if(a){var g=t.havingStyle(t.style.sub());u=Yr(a,g,t),p||(f=s.depth+g.fontMetrics().subDrop*g.sizeMultiplier/t.sizeMultiplier)}var y;t.style===ur.DISPLAY?y=h.sup1:t.style.cramped?y=h.sup3:y=h.sup2;var v=t.sizeMultiplier,x=It(.5/h.ptPerEm/v),b=null;if(u){var T=e.base&&e.base.type==="op"&&e.base.name&&(e.base.name==="\\oiint"||e.base.name==="\\oiiint");(s instanceof Ts||T)&&(b=It(-s.italic))}var w;if(l&&u){d=Math.max(d,y,l.depth+.25*h.xHeight),f=Math.max(f,h.sub2);var C=h.defaultRuleThickness,k=4*C;if(d-l.depth-(u.height-f)<k){f=k-(d-l.depth)+u.height;var E=.8*h.xHeight-(d-l.depth);E>0&&(d+=E,f-=E)}var A=[{type:"elem",elem:u,shift:f,marginRight:x,marginLeft:b},{type:"elem",elem:l,shift:-d,marginRight:x}];w=Ke.makeVList({positionType:"individualShift",children:A},t)}else if(u){f=Math.max(f,h.sub1,u.height-.8*h.xHeight);var N=[{type:"elem",elem:u,marginLeft:b,marginRight:x}];w=Ke.makeVList({positionType:"shift",positionData:f,children:N},t)}else if(l)d=Math.max(d,y,l.depth+.25*h.xHeight),w=Ke.makeVList({positionType:"shift",positionData:-d,children:[{type:"elem",elem:l,marginRight:x}]},t);else throw new Error("supsub must have either sup or sub.");var P=tD(s,"right")||"mord";return Ke.makeSpan([P],[s,Ke.makeSpan(["msupsub"],[w])],t)},mathmlBuilder(e,t){var r=!1,i,n;e.base&&e.base.type==="horizBrace"&&(n=!!e.sup,n===e.base.isOver&&(r=!0,i=e.base.isOver)),e.base&&(e.base.type==="op"||e.base.type==="operatorname")&&(e.base.parentIsSupSub=!0);var a=[Ti(e.base,t)];e.sub&&a.push(Ti(e.sub,t)),e.sup&&a.push(Ti(e.sup,t));var s;if(r)s=i?"mover":"munder";else if(e.sub)if(e.sup){var h=e.base;h&&h.type==="op"&&h.limits&&t.style===ur.DISPLAY||h&&h.type==="operatorname"&&h.alwaysHandleSupSub&&(t.style===ur.DISPLAY||h.limits)?s="munderover":s="msubsup"}else{var u=e.base;u&&u.type==="op"&&u.limits&&(t.style===ur.DISPLAY||u.alwaysHandleSupSub)||u&&u.type==="operatorname"&&u.alwaysHandleSupSub&&(u.limits||t.style===ur.DISPLAY)?s="munder":s="msub"}else{var l=e.base;l&&l.type==="op"&&l.limits&&(t.style===ur.DISPLAY||l.alwaysHandleSupSub)||l&&l.type==="operatorname"&&l.alwaysHandleSupSub&&(l.limits||t.style===ur.DISPLAY)?s="mover":s="msup"}return new Dt.MathNode(s,a)}});qf({type:"atom",htmlBuilder(e,t){return Ke.mathsym(e.text,e.mode,t,["m"+e.family])},mathmlBuilder(e,t){var r=new Dt.MathNode("mo",[No(e.text,e.mode)]);if(e.family==="bin"){var i=fD(e,t);i==="bold-italic"&&r.setAttribute("mathvariant",i)}else e.family==="punct"?r.setAttribute("separator","true"):(e.family==="open"||e.family==="close")&&r.setAttribute("stretchy","false");return r}});Mj={mi:"italic",mn:"normal",mtext:"normal"};qf({type:"mathord",htmlBuilder(e,t){return Ke.makeOrd(e,t,"mathord")},mathmlBuilder(e,t){var r=new Dt.MathNode("mi",[No(e.text,e.mode,t)]),i=fD(e,t)||"italic";return i!==Mj[r.type]&&r.setAttribute("mathvariant",i),r}});qf({type:"textord",htmlBuilder(e,t){return Ke.makeOrd(e,t,"textord")},mathmlBuilder(e,t){var r=No(e.text,e.mode,t),i=fD(e,t)||"normal",n;return e.mode==="text"?n=new Dt.MathNode("mtext",[r]):/[0-9]/.test(e.text)?n=new Dt.MathNode("mn",[r]):e.text==="\\prime"?n=new Dt.MathNode("mo",[r]):n=new Dt.MathNode("mi",[r]),i!==Mj[n.type]&&n.setAttribute("mathvariant",i),n}});j7={"\\nobreak":"nobreak","\\allowbreak":"allowbreak"},X7={" ":{},"\\ ":{},"~":{className:"nobreak"},"\\space":{},"\\nobreakspace":{className:"nobreak"}};qf({type:"spacing",htmlBuilder(e,t){if(X7.hasOwnProperty(e.text)){var r=X7[e.text].className||"";if(e.mode==="text"){var i=Ke.makeOrd(e,t,"textord");return i.classes.push(r),i}else return Ke.makeSpan(["mspace",r],[Ke.mathsym(e.text,e.mode,t)],t)}else{if(j7.hasOwnProperty(e.text))return Ke.makeSpan(["mspace",j7[e.text]],[],t);throw new Lt('Unknown type of space "'+e.text+'"')}},mathmlBuilder(e,t){var r;if(X7.hasOwnProperty(e.text))r=new Dt.MathNode("mtext",[new Dt.TextNode("\xA0")]);else{if(j7.hasOwnProperty(e.text))return new Dt.MathNode("mspace");throw new Lt('Unknown type of space "'+e.text+'"')}return r}});IY=o(()=>{var e=new Dt.MathNode("mtd",[]);return e.setAttribute("width","50%"),e},"pad");qf({type:"tag",mathmlBuilder(e,t){var r=new Dt.MathNode("mtable",[new Dt.MathNode("mtr",[IY(),new Dt.MathNode("mtd",[zh(e.body,t)]),IY(),new Dt.MathNode("mtd",[zh(e.tag,t)])])]);return r.setAttribute("width","100%"),r}});OY={"\\text":void 0,"\\textrm":"textrm","\\textsf":"textsf","\\texttt":"texttt","\\textnormal":"textrm"},PY={"\\textbf":"textbf","\\textmd":"textmd"},W9e={"\\textit":"textit","\\textup":"textup"},BY=o((e,t)=>{var r=e.font;if(r){if(OY[r])return t.withTextFontFamily(OY[r]);if(PY[r])return t.withTextFontWeight(PY[r]);if(r==="\\emph")return t.fontShape==="textit"?t.withTextFontShape("textup"):t.withTextFontShape("textit")}else return t;return t.withTextFontShape(W9e[r])},"optionsWithFont");Bt({type:"text",names:["\\text","\\textrm","\\textsf","\\texttt","\\textnormal","\\textbf","\\textmd","\\textit","\\textup","\\emph"],props:{numArgs:1,argTypes:["text"],allowedInArgument:!0,allowedInText:!0},handler(e,t){var{parser:r,funcName:i}=e,n=t[0];return{type:"text",mode:r.mode,body:gn(n),font:i}},htmlBuilder(e,t){var r=BY(e,t),i=Fn(e.body,r,!0);return Ke.makeSpan(["mord","text"],i,r)},mathmlBuilder(e,t){var r=BY(e,t);return zh(e.body,r)}});Bt({type:"underline",names:["\\underline"],props:{numArgs:1,allowedInText:!0},handler(e,t){var{parser:r}=e;return{type:"underline",mode:r.mode,body:t[0]}},htmlBuilder(e,t){var r=Yr(e.body,t),i=Ke.makeLineSpan("underline-line",t),n=t.fontMetrics().defaultRuleThickness,a=Ke.makeVList({positionType:"top",positionData:r.height,children:[{type:"kern",size:n},{type:"elem",elem:i},{type:"kern",size:3*n},{type:"elem",elem:r}]},t);return Ke.makeSpan(["mord","underline"],[a],t)},mathmlBuilder(e,t){var r=new Dt.MathNode("mo",[new Dt.TextNode("\u203E")]);r.setAttribute("stretchy","true");var i=new Dt.MathNode("munder",[Ti(e.body,t),r]);return i.setAttribute("accentunder","true"),i}});Bt({type:"vcenter",names:["\\vcenter"],props:{numArgs:1,argTypes:["original"],allowedInText:!1},handler(e,t){var{parser:r}=e;return{type:"vcenter",mode:r.mode,body:t[0]}},htmlBuilder(e,t){var r=Yr(e.body,t),i=t.fontMetrics().axisHeight,n=.5*(r.height-i-(r.depth+i));return Ke.makeVList({positionType:"shift",positionData:n,children:[{type:"elem",elem:r}]},t)},mathmlBuilder(e,t){return new Dt.MathNode("mpadded",[Ti(e.body,t)],["vcenter"])}});Bt({type:"verb",names:["\\verb"],props:{numArgs:0,allowedInText:!0},handler(e,t,r){throw new Lt("\\verb ended by end of line instead of matching delimiter")},htmlBuilder(e,t){for(var r=FY(e),i=[],n=t.havingStyle(t.style.text()),a=0;a<r.length;a++){var s=r[a];s==="~"&&(s="\\textasciitilde"),i.push(Ke.makeSymbol(s,"Typewriter-Regular",e.mode,n,["mord","texttt"]))}return Ke.makeSpan(["mord","text"].concat(n.sizingClasses(t)),Ke.tryCombineChars(i),n)},mathmlBuilder(e,t){var r=new Dt.TextNode(FY(e)),i=new Dt.MathNode("mtext",[r]);return i.setAttribute("mathvariant","monospace"),i}});FY=o(e=>e.body.replace(/ /g,e.star?"\u2423":"\xA0"),"makeVerb"),Fh=tj,Nj=`[ \r
-	]`,q9e="\\\\[a-zA-Z@]+",U9e="\\\\[^\uD800-\uDFFF]",H9e="("+q9e+")"+Nj+"*",Y9e=`\\\\(
+-470,-1265c-4.7,-6,-9.7,-11.7,-15,-17c-0.7,-0.7,-6.7,-1,-18,-1z`;default:throw new Error("Unknown stretchy delimiter.")}},"tallDelim"),Sd=class{static{o(this,"DocumentFragment")}constructor(t){this.children=t,this.classes=[],this.height=0,this.depth=0,this.maxFontSize=0,this.style={}}hasClass(t){return this.classes.includes(t)}toNode(){for(var t=document.createDocumentFragment(),r=0;r<this.children.length;r++)t.appendChild(this.children[r].toNode());return t}toMarkup(){for(var t="",r=0;r<this.children.length;r++)t+=this.children[r].toMarkup();return t}toText(){var t=o(r=>r.toText(),"toText");return this.children.map(t).join("")}},M7={pt:1,mm:7227/2540,cm:7227/254,in:72.27,bp:803/800,pc:12,dd:1238/1157,cc:14856/1157,nd:685/642,nc:1370/107,sp:1/65536,px:803/800},DGe={ex:!0,em:!0,mu:!0},ZZ=o(function(t){return typeof t!="string"&&(t=t.unit),t in M7||t in DGe||t==="ex"},"validUnit"),xi=o(function(t,r){var n;if(t.unit in M7)n=M7[t.unit]/r.fontMetrics().ptPerEm/r.sizeMultiplier;else if(t.unit==="mu")n=r.fontMetrics().cssEmPerMu;else{var i;if(r.style.isTight()?i=r.havingStyle(r.style.text()):i=r,t.unit==="ex")n=i.fontMetrics().xHeight;else if(t.unit==="em")n=i.fontMetrics().quad;else throw new Pt("Invalid unit: '"+t.unit+"'");i!==r&&(n*=i.sizeMultiplier/r.sizeMultiplier)}return Math.min(t.number*n,r.maxSize)},"calculateSize"),$t=o(function(t){return+t.toFixed(4)+"em"},"makeEm"),Ed=o(function(t){return t.filter(r=>r).join(" ")},"createClass"),QZ=o(function(t,r,n){if(this.classes=t||[],this.attributes={},this.height=0,this.depth=0,this.maxFontSize=0,this.style=n||{},r){r.style.isTight()&&this.classes.push("mtight");var i=r.getColor();i&&(this.style.color=i)}},"initNode"),JZ=o(function(t){var r=document.createElement(t);r.className=Ed(this.classes);for(var n of Object.keys(this.style))r.style[n]=this.style[n];for(var i of Object.keys(this.attributes))r.setAttribute(i,this.attributes[i]);for(var a=0;a<this.children.length;a++)r.appendChild(this.children[a].toNode());return r},"toNode"),IGe=/[\s"'>/=\x00-\x1f]/,eQ=o(function(t){var r="<"+t;this.classes.length&&(r+=' class="'+es(Ed(this.classes))+'"');var n="";for(var i of Object.keys(this.style))n+=Y7(i)+":"+this.style[i]+";";n&&(r+=' style="'+es(n)+'"');for(var a of Object.keys(this.attributes)){if(IGe.test(a))throw new Pt("Invalid attribute name '"+a+"'");r+=" "+a+'="'+es(this.attributes[a])+'"'}r+=">";for(var s=0;s<this.children.length;s++)r+=this.children[s].toMarkup();return r+="</"+t+">",r},"toMarkup"),Ad=class{static{o(this,"Span")}constructor(t,r,n,i){QZ.call(this,t,n,i),this.children=r||[]}setAttribute(t,r){this.attributes[t]=r}hasClass(t){return this.classes.includes(t)}toNode(){return JZ.call(this,"span")}toMarkup(){return eQ.call(this,"span")}},X0=class{static{o(this,"Anchor")}constructor(t,r,n,i){QZ.call(this,r,i),this.children=n||[],this.setAttribute("href",t)}setAttribute(t,r){this.attributes[t]=r}hasClass(t){return this.classes.includes(t)}toNode(){return JZ.call(this,"a")}toMarkup(){return eQ.call(this,"a")}},N7=class{static{o(this,"Img")}constructor(t,r,n){this.alt=r,this.src=t,this.classes=["mord"],this.height=0,this.depth=0,this.maxFontSize=0,this.style=n}hasClass(t){return this.classes.includes(t)}toNode(){var t=document.createElement("img");t.src=this.src,t.alt=this.alt,t.className="mord";for(var r of Object.keys(this.style))t.style[r]=this.style[r];return t}toMarkup(){var t='<img src="'+es(this.src)+'"'+(' alt="'+es(this.alt)+'"'),r="";for(var n of Object.keys(this.style))r+=Y7(n)+":"+this.style[n]+";";return r&&(t+=' style="'+es(r)+'"'),t+="'/>",t}},MGe={\u00EE:"\u0131\u0302",\u00EF:"\u0131\u0308",\u00ED:"\u0131\u0301",\u00EC:"\u0131\u0300"},ws=class{static{o(this,"SymbolNode")}constructor(t,r,n,i,a,s,l,u){this.text=t,this.height=r||0,this.depth=n||0,this.italic=i||0,this.skew=a||0,this.width=s||0,this.classes=l||[],this.style=u||{},this.maxFontSize=0;var h=bGe(this.text.charCodeAt(0));h&&this.classes.push(h+"_fallback"),/[îïíì]/.test(this.text)&&(this.text=MGe[this.text])}hasClass(t){return this.classes.includes(t)}toNode(){var t=document.createTextNode(this.text),r=null;this.italic>0&&(r=document.createElement("span"),r.style.marginRight=$t(this.italic)),this.classes.length>0&&(r=r||document.createElement("span"),r.className=Ed(this.classes));for(var n of Object.keys(this.style))r=r||document.createElement("span"),r.style[n]=this.style[n];return r?(r.appendChild(t),r):t}toMarkup(){var t=!1,r="<span";this.classes.length&&(t=!0,r+=' class="',r+=es(Ed(this.classes)),r+='"');var n="";this.italic>0&&(n+="margin-right:"+$t(this.italic)+";");for(var i of Object.keys(this.style))n+=Y7(i)+":"+this.style[i]+";";n&&(t=!0,r+=' style="'+es(n)+'"');var a=es(this.text);return t?(r+=">",r+=a,r+="</span>",r):a}},Gl=class{static{o(this,"SvgNode")}constructor(t,r){this.children=t||[],this.attributes=r||{}}toNode(){var t="http://www.w3.org/2000/svg",r=document.createElementNS(t,"svg");for(var n of Object.keys(this.attributes))r.setAttribute(n,this.attributes[n]);for(var i=0;i<this.children.length;i++)r.appendChild(this.children[i].toNode());return r}toMarkup(){var t='<svg xmlns="http://www.w3.org/2000/svg"';for(var r of Object.keys(this.attributes))t+=" "+r+'="'+es(this.attributes[r])+'"';t+=">";for(var n=0;n<this.children.length;n++)t+=this.children[n].toMarkup();return t+="</svg>",t}},zc=class{static{o(this,"PathNode")}constructor(t,r){this.pathName=t,this.alternate=r}toNode(){var t="http://www.w3.org/2000/svg",r=document.createElementNS(t,"path");return this.alternate?r.setAttribute("d",this.alternate):r.setAttribute("d",TZ[this.pathName]),r}toMarkup(){return this.alternate?'<path d="'+es(this.alternate)+'"/>':'<path d="'+es(TZ[this.pathName])+'"/>'}},rb=class{static{o(this,"LineNode")}constructor(t){this.attributes=t||{}}toNode(){var t="http://www.w3.org/2000/svg",r=document.createElementNS(t,"line");for(var n of Object.keys(this.attributes))r.setAttribute(n,this.attributes[n]);return r}toMarkup(){var t="<line";for(var r of Object.keys(this.attributes))t+=" "+r+'="'+es(this.attributes[r])+'"';return t+="/>",t}};o(NGe,"assertSymbolDomNode");o(PGe,"assertSpan");OGe=o(e=>e instanceof Ad||e instanceof X0||e instanceof Sd,"hasHtmlDomChildren"),Fc={"AMS-Regular":{32:[0,0,0,0,.25],65:[0,.68889,0,0,.72222],66:[0,.68889,0,0,.66667],67:[0,.68889,0,0,.72222],68:[0,.68889,0,0,.72222],69:[0,.68889,0,0,.66667],70:[0,.68889,0,0,.61111],71:[0,.68889,0,0,.77778],72:[0,.68889,0,0,.77778],73:[0,.68889,0,0,.38889],74:[.16667,.68889,0,0,.5],75:[0,.68889,0,0,.77778],76:[0,.68889,0,0,.66667],77:[0,.68889,0,0,.94445],78:[0,.68889,0,0,.72222],79:[.16667,.68889,0,0,.77778],80:[0,.68889,0,0,.61111],81:[.16667,.68889,0,0,.77778],82:[0,.68889,0,0,.72222],83:[0,.68889,0,0,.55556],84:[0,.68889,0,0,.66667],85:[0,.68889,0,0,.72222],86:[0,.68889,0,0,.72222],87:[0,.68889,0,0,1],88:[0,.68889,0,0,.72222],89:[0,.68889,0,0,.72222],90:[0,.68889,0,0,.66667],107:[0,.68889,0,0,.55556],160:[0,0,0,0,.25],165:[0,.675,.025,0,.75],174:[.15559,.69224,0,0,.94666],240:[0,.68889,0,0,.55556],295:[0,.68889,0,0,.54028],710:[0,.825,0,0,2.33334],732:[0,.9,0,0,2.33334],770:[0,.825,0,0,2.33334],771:[0,.9,0,0,2.33334],989:[.08167,.58167,0,0,.77778],1008:[0,.43056,.04028,0,.66667],8245:[0,.54986,0,0,.275],8463:[0,.68889,0,0,.54028],8487:[0,.68889,0,0,.72222],8498:[0,.68889,0,0,.55556],8502:[0,.68889,0,0,.66667],8503:[0,.68889,0,0,.44445],8504:[0,.68889,0,0,.66667],8513:[0,.68889,0,0,.63889],8592:[-.03598,.46402,0,0,.5],8594:[-.03598,.46402,0,0,.5],8602:[-.13313,.36687,0,0,1],8603:[-.13313,.36687,0,0,1],8606:[.01354,.52239,0,0,1],8608:[.01354,.52239,0,0,1],8610:[.01354,.52239,0,0,1.11111],8611:[.01354,.52239,0,0,1.11111],8619:[0,.54986,0,0,1],8620:[0,.54986,0,0,1],8621:[-.13313,.37788,0,0,1.38889],8622:[-.13313,.36687,0,0,1],8624:[0,.69224,0,0,.5],8625:[0,.69224,0,0,.5],8630:[0,.43056,0,0,1],8631:[0,.43056,0,0,1],8634:[.08198,.58198,0,0,.77778],8635:[.08198,.58198,0,0,.77778],8638:[.19444,.69224,0,0,.41667],8639:[.19444,.69224,0,0,.41667],8642:[.19444,.69224,0,0,.41667],8643:[.19444,.69224,0,0,.41667],8644:[.1808,.675,0,0,1],8646:[.1808,.675,0,0,1],8647:[.1808,.675,0,0,1],8648:[.19444,.69224,0,0,.83334],8649:[.1808,.675,0,0,1],8650:[.19444,.69224,0,0,.83334],8651:[.01354,.52239,0,0,1],8652:[.01354,.52239,0,0,1],8653:[-.13313,.36687,0,0,1],8654:[-.13313,.36687,0,0,1],8655:[-.13313,.36687,0,0,1],8666:[.13667,.63667,0,0,1],8667:[.13667,.63667,0,0,1],8669:[-.13313,.37788,0,0,1],8672:[-.064,.437,0,0,1.334],8674:[-.064,.437,0,0,1.334],8705:[0,.825,0,0,.5],8708:[0,.68889,0,0,.55556],8709:[.08167,.58167,0,0,.77778],8717:[0,.43056,0,0,.42917],8722:[-.03598,.46402,0,0,.5],8724:[.08198,.69224,0,0,.77778],8726:[.08167,.58167,0,0,.77778],8733:[0,.69224,0,0,.77778],8736:[0,.69224,0,0,.72222],8737:[0,.69224,0,0,.72222],8738:[.03517,.52239,0,0,.72222],8739:[.08167,.58167,0,0,.22222],8740:[.25142,.74111,0,0,.27778],8741:[.08167,.58167,0,0,.38889],8742:[.25142,.74111,0,0,.5],8756:[0,.69224,0,0,.66667],8757:[0,.69224,0,0,.66667],8764:[-.13313,.36687,0,0,.77778],8765:[-.13313,.37788,0,0,.77778],8769:[-.13313,.36687,0,0,.77778],8770:[-.03625,.46375,0,0,.77778],8774:[.30274,.79383,0,0,.77778],8776:[-.01688,.48312,0,0,.77778],8778:[.08167,.58167,0,0,.77778],8782:[.06062,.54986,0,0,.77778],8783:[.06062,.54986,0,0,.77778],8785:[.08198,.58198,0,0,.77778],8786:[.08198,.58198,0,0,.77778],8787:[.08198,.58198,0,0,.77778],8790:[0,.69224,0,0,.77778],8791:[.22958,.72958,0,0,.77778],8796:[.08198,.91667,0,0,.77778],8806:[.25583,.75583,0,0,.77778],8807:[.25583,.75583,0,0,.77778],8808:[.25142,.75726,0,0,.77778],8809:[.25142,.75726,0,0,.77778],8812:[.25583,.75583,0,0,.5],8814:[.20576,.70576,0,0,.77778],8815:[.20576,.70576,0,0,.77778],8816:[.30274,.79383,0,0,.77778],8817:[.30274,.79383,0,0,.77778],8818:[.22958,.72958,0,0,.77778],8819:[.22958,.72958,0,0,.77778],8822:[.1808,.675,0,0,.77778],8823:[.1808,.675,0,0,.77778],8828:[.13667,.63667,0,0,.77778],8829:[.13667,.63667,0,0,.77778],8830:[.22958,.72958,0,0,.77778],8831:[.22958,.72958,0,0,.77778],8832:[.20576,.70576,0,0,.77778],8833:[.20576,.70576,0,0,.77778],8840:[.30274,.79383,0,0,.77778],8841:[.30274,.79383,0,0,.77778],8842:[.13597,.63597,0,0,.77778],8843:[.13597,.63597,0,0,.77778],8847:[.03517,.54986,0,0,.77778],8848:[.03517,.54986,0,0,.77778],8858:[.08198,.58198,0,0,.77778],8859:[.08198,.58198,0,0,.77778],8861:[.08198,.58198,0,0,.77778],8862:[0,.675,0,0,.77778],8863:[0,.675,0,0,.77778],8864:[0,.675,0,0,.77778],8865:[0,.675,0,0,.77778],8872:[0,.69224,0,0,.61111],8873:[0,.69224,0,0,.72222],8874:[0,.69224,0,0,.88889],8876:[0,.68889,0,0,.61111],8877:[0,.68889,0,0,.61111],8878:[0,.68889,0,0,.72222],8879:[0,.68889,0,0,.72222],8882:[.03517,.54986,0,0,.77778],8883:[.03517,.54986,0,0,.77778],8884:[.13667,.63667,0,0,.77778],8885:[.13667,.63667,0,0,.77778],8888:[0,.54986,0,0,1.11111],8890:[.19444,.43056,0,0,.55556],8891:[.19444,.69224,0,0,.61111],8892:[.19444,.69224,0,0,.61111],8901:[0,.54986,0,0,.27778],8903:[.08167,.58167,0,0,.77778],8905:[.08167,.58167,0,0,.77778],8906:[.08167,.58167,0,0,.77778],8907:[0,.69224,0,0,.77778],8908:[0,.69224,0,0,.77778],8909:[-.03598,.46402,0,0,.77778],8910:[0,.54986,0,0,.76042],8911:[0,.54986,0,0,.76042],8912:[.03517,.54986,0,0,.77778],8913:[.03517,.54986,0,0,.77778],8914:[0,.54986,0,0,.66667],8915:[0,.54986,0,0,.66667],8916:[0,.69224,0,0,.66667],8918:[.0391,.5391,0,0,.77778],8919:[.0391,.5391,0,0,.77778],8920:[.03517,.54986,0,0,1.33334],8921:[.03517,.54986,0,0,1.33334],8922:[.38569,.88569,0,0,.77778],8923:[.38569,.88569,0,0,.77778],8926:[.13667,.63667,0,0,.77778],8927:[.13667,.63667,0,0,.77778],8928:[.30274,.79383,0,0,.77778],8929:[.30274,.79383,0,0,.77778],8934:[.23222,.74111,0,0,.77778],8935:[.23222,.74111,0,0,.77778],8936:[.23222,.74111,0,0,.77778],8937:[.23222,.74111,0,0,.77778],8938:[.20576,.70576,0,0,.77778],8939:[.20576,.70576,0,0,.77778],8940:[.30274,.79383,0,0,.77778],8941:[.30274,.79383,0,0,.77778],8994:[.19444,.69224,0,0,.77778],8995:[.19444,.69224,0,0,.77778],9416:[.15559,.69224,0,0,.90222],9484:[0,.69224,0,0,.5],9488:[0,.69224,0,0,.5],9492:[0,.37788,0,0,.5],9496:[0,.37788,0,0,.5],9585:[.19444,.68889,0,0,.88889],9586:[.19444,.74111,0,0,.88889],9632:[0,.675,0,0,.77778],9633:[0,.675,0,0,.77778],9650:[0,.54986,0,0,.72222],9651:[0,.54986,0,0,.72222],9654:[.03517,.54986,0,0,.77778],9660:[0,.54986,0,0,.72222],9661:[0,.54986,0,0,.72222],9664:[.03517,.54986,0,0,.77778],9674:[.11111,.69224,0,0,.66667],9733:[.19444,.69224,0,0,.94445],10003:[0,.69224,0,0,.83334],10016:[0,.69224,0,0,.83334],10731:[.11111,.69224,0,0,.66667],10846:[.19444,.75583,0,0,.61111],10877:[.13667,.63667,0,0,.77778],10878:[.13667,.63667,0,0,.77778],10885:[.25583,.75583,0,0,.77778],10886:[.25583,.75583,0,0,.77778],10887:[.13597,.63597,0,0,.77778],10888:[.13597,.63597,0,0,.77778],10889:[.26167,.75726,0,0,.77778],10890:[.26167,.75726,0,0,.77778],10891:[.48256,.98256,0,0,.77778],10892:[.48256,.98256,0,0,.77778],10901:[.13667,.63667,0,0,.77778],10902:[.13667,.63667,0,0,.77778],10933:[.25142,.75726,0,0,.77778],10934:[.25142,.75726,0,0,.77778],10935:[.26167,.75726,0,0,.77778],10936:[.26167,.75726,0,0,.77778],10937:[.26167,.75726,0,0,.77778],10938:[.26167,.75726,0,0,.77778],10949:[.25583,.75583,0,0,.77778],10950:[.25583,.75583,0,0,.77778],10955:[.28481,.79383,0,0,.77778],10956:[.28481,.79383,0,0,.77778],57350:[.08167,.58167,0,0,.22222],57351:[.08167,.58167,0,0,.38889],57352:[.08167,.58167,0,0,.77778],57353:[0,.43056,.04028,0,.66667],57356:[.25142,.75726,0,0,.77778],57357:[.25142,.75726,0,0,.77778],57358:[.41951,.91951,0,0,.77778],57359:[.30274,.79383,0,0,.77778],57360:[.30274,.79383,0,0,.77778],57361:[.41951,.91951,0,0,.77778],57366:[.25142,.75726,0,0,.77778],57367:[.25142,.75726,0,0,.77778],57368:[.25142,.75726,0,0,.77778],57369:[.25142,.75726,0,0,.77778],57370:[.13597,.63597,0,0,.77778],57371:[.13597,.63597,0,0,.77778]},"Caligraphic-Regular":{32:[0,0,0,0,.25],65:[0,.68333,0,.19445,.79847],66:[0,.68333,.03041,.13889,.65681],67:[0,.68333,.05834,.13889,.52653],68:[0,.68333,.02778,.08334,.77139],69:[0,.68333,.08944,.11111,.52778],70:[0,.68333,.09931,.11111,.71875],71:[.09722,.68333,.0593,.11111,.59487],72:[0,.68333,.00965,.11111,.84452],73:[0,.68333,.07382,0,.54452],74:[.09722,.68333,.18472,.16667,.67778],75:[0,.68333,.01445,.05556,.76195],76:[0,.68333,0,.13889,.68972],77:[0,.68333,0,.13889,1.2009],78:[0,.68333,.14736,.08334,.82049],79:[0,.68333,.02778,.11111,.79611],80:[0,.68333,.08222,.08334,.69556],81:[.09722,.68333,0,.11111,.81667],82:[0,.68333,0,.08334,.8475],83:[0,.68333,.075,.13889,.60556],84:[0,.68333,.25417,0,.54464],85:[0,.68333,.09931,.08334,.62583],86:[0,.68333,.08222,0,.61278],87:[0,.68333,.08222,.08334,.98778],88:[0,.68333,.14643,.13889,.7133],89:[.09722,.68333,.08222,.08334,.66834],90:[0,.68333,.07944,.13889,.72473],160:[0,0,0,0,.25]},"Fraktur-Regular":{32:[0,0,0,0,.25],33:[0,.69141,0,0,.29574],34:[0,.69141,0,0,.21471],38:[0,.69141,0,0,.73786],39:[0,.69141,0,0,.21201],40:[.24982,.74947,0,0,.38865],41:[.24982,.74947,0,0,.38865],42:[0,.62119,0,0,.27764],43:[.08319,.58283,0,0,.75623],44:[0,.10803,0,0,.27764],45:[.08319,.58283,0,0,.75623],46:[0,.10803,0,0,.27764],47:[.24982,.74947,0,0,.50181],48:[0,.47534,0,0,.50181],49:[0,.47534,0,0,.50181],50:[0,.47534,0,0,.50181],51:[.18906,.47534,0,0,.50181],52:[.18906,.47534,0,0,.50181],53:[.18906,.47534,0,0,.50181],54:[0,.69141,0,0,.50181],55:[.18906,.47534,0,0,.50181],56:[0,.69141,0,0,.50181],57:[.18906,.47534,0,0,.50181],58:[0,.47534,0,0,.21606],59:[.12604,.47534,0,0,.21606],61:[-.13099,.36866,0,0,.75623],63:[0,.69141,0,0,.36245],65:[0,.69141,0,0,.7176],66:[0,.69141,0,0,.88397],67:[0,.69141,0,0,.61254],68:[0,.69141,0,0,.83158],69:[0,.69141,0,0,.66278],70:[.12604,.69141,0,0,.61119],71:[0,.69141,0,0,.78539],72:[.06302,.69141,0,0,.7203],73:[0,.69141,0,0,.55448],74:[.12604,.69141,0,0,.55231],75:[0,.69141,0,0,.66845],76:[0,.69141,0,0,.66602],77:[0,.69141,0,0,1.04953],78:[0,.69141,0,0,.83212],79:[0,.69141,0,0,.82699],80:[.18906,.69141,0,0,.82753],81:[.03781,.69141,0,0,.82699],82:[0,.69141,0,0,.82807],83:[0,.69141,0,0,.82861],84:[0,.69141,0,0,.66899],85:[0,.69141,0,0,.64576],86:[0,.69141,0,0,.83131],87:[0,.69141,0,0,1.04602],88:[0,.69141,0,0,.71922],89:[.18906,.69141,0,0,.83293],90:[.12604,.69141,0,0,.60201],91:[.24982,.74947,0,0,.27764],93:[.24982,.74947,0,0,.27764],94:[0,.69141,0,0,.49965],97:[0,.47534,0,0,.50046],98:[0,.69141,0,0,.51315],99:[0,.47534,0,0,.38946],100:[0,.62119,0,0,.49857],101:[0,.47534,0,0,.40053],102:[.18906,.69141,0,0,.32626],103:[.18906,.47534,0,0,.5037],104:[.18906,.69141,0,0,.52126],105:[0,.69141,0,0,.27899],106:[0,.69141,0,0,.28088],107:[0,.69141,0,0,.38946],108:[0,.69141,0,0,.27953],109:[0,.47534,0,0,.76676],110:[0,.47534,0,0,.52666],111:[0,.47534,0,0,.48885],112:[.18906,.52396,0,0,.50046],113:[.18906,.47534,0,0,.48912],114:[0,.47534,0,0,.38919],115:[0,.47534,0,0,.44266],116:[0,.62119,0,0,.33301],117:[0,.47534,0,0,.5172],118:[0,.52396,0,0,.5118],119:[0,.52396,0,0,.77351],120:[.18906,.47534,0,0,.38865],121:[.18906,.47534,0,0,.49884],122:[.18906,.47534,0,0,.39054],160:[0,0,0,0,.25],8216:[0,.69141,0,0,.21471],8217:[0,.69141,0,0,.21471],58112:[0,.62119,0,0,.49749],58113:[0,.62119,0,0,.4983],58114:[.18906,.69141,0,0,.33328],58115:[.18906,.69141,0,0,.32923],58116:[.18906,.47534,0,0,.50343],58117:[0,.69141,0,0,.33301],58118:[0,.62119,0,0,.33409],58119:[0,.47534,0,0,.50073]},"Main-Bold":{32:[0,0,0,0,.25],33:[0,.69444,0,0,.35],34:[0,.69444,0,0,.60278],35:[.19444,.69444,0,0,.95833],36:[.05556,.75,0,0,.575],37:[.05556,.75,0,0,.95833],38:[0,.69444,0,0,.89444],39:[0,.69444,0,0,.31944],40:[.25,.75,0,0,.44722],41:[.25,.75,0,0,.44722],42:[0,.75,0,0,.575],43:[.13333,.63333,0,0,.89444],44:[.19444,.15556,0,0,.31944],45:[0,.44444,0,0,.38333],46:[0,.15556,0,0,.31944],47:[.25,.75,0,0,.575],48:[0,.64444,0,0,.575],49:[0,.64444,0,0,.575],50:[0,.64444,0,0,.575],51:[0,.64444,0,0,.575],52:[0,.64444,0,0,.575],53:[0,.64444,0,0,.575],54:[0,.64444,0,0,.575],55:[0,.64444,0,0,.575],56:[0,.64444,0,0,.575],57:[0,.64444,0,0,.575],58:[0,.44444,0,0,.31944],59:[.19444,.44444,0,0,.31944],60:[.08556,.58556,0,0,.89444],61:[-.10889,.39111,0,0,.89444],62:[.08556,.58556,0,0,.89444],63:[0,.69444,0,0,.54305],64:[0,.69444,0,0,.89444],65:[0,.68611,0,0,.86944],66:[0,.68611,0,0,.81805],67:[0,.68611,0,0,.83055],68:[0,.68611,0,0,.88194],69:[0,.68611,0,0,.75555],70:[0,.68611,0,0,.72361],71:[0,.68611,0,0,.90416],72:[0,.68611,0,0,.9],73:[0,.68611,0,0,.43611],74:[0,.68611,0,0,.59444],75:[0,.68611,0,0,.90138],76:[0,.68611,0,0,.69166],77:[0,.68611,0,0,1.09166],78:[0,.68611,0,0,.9],79:[0,.68611,0,0,.86388],80:[0,.68611,0,0,.78611],81:[.19444,.68611,0,0,.86388],82:[0,.68611,0,0,.8625],83:[0,.68611,0,0,.63889],84:[0,.68611,0,0,.8],85:[0,.68611,0,0,.88472],86:[0,.68611,.01597,0,.86944],87:[0,.68611,.01597,0,1.18888],88:[0,.68611,0,0,.86944],89:[0,.68611,.02875,0,.86944],90:[0,.68611,0,0,.70277],91:[.25,.75,0,0,.31944],92:[.25,.75,0,0,.575],93:[.25,.75,0,0,.31944],94:[0,.69444,0,0,.575],95:[.31,.13444,.03194,0,.575],97:[0,.44444,0,0,.55902],98:[0,.69444,0,0,.63889],99:[0,.44444,0,0,.51111],100:[0,.69444,0,0,.63889],101:[0,.44444,0,0,.52708],102:[0,.69444,.10903,0,.35139],103:[.19444,.44444,.01597,0,.575],104:[0,.69444,0,0,.63889],105:[0,.69444,0,0,.31944],106:[.19444,.69444,0,0,.35139],107:[0,.69444,0,0,.60694],108:[0,.69444,0,0,.31944],109:[0,.44444,0,0,.95833],110:[0,.44444,0,0,.63889],111:[0,.44444,0,0,.575],112:[.19444,.44444,0,0,.63889],113:[.19444,.44444,0,0,.60694],114:[0,.44444,0,0,.47361],115:[0,.44444,0,0,.45361],116:[0,.63492,0,0,.44722],117:[0,.44444,0,0,.63889],118:[0,.44444,.01597,0,.60694],119:[0,.44444,.01597,0,.83055],120:[0,.44444,0,0,.60694],121:[.19444,.44444,.01597,0,.60694],122:[0,.44444,0,0,.51111],123:[.25,.75,0,0,.575],124:[.25,.75,0,0,.31944],125:[.25,.75,0,0,.575],126:[.35,.34444,0,0,.575],160:[0,0,0,0,.25],163:[0,.69444,0,0,.86853],168:[0,.69444,0,0,.575],172:[0,.44444,0,0,.76666],176:[0,.69444,0,0,.86944],177:[.13333,.63333,0,0,.89444],184:[.17014,0,0,0,.51111],198:[0,.68611,0,0,1.04166],215:[.13333,.63333,0,0,.89444],216:[.04861,.73472,0,0,.89444],223:[0,.69444,0,0,.59722],230:[0,.44444,0,0,.83055],247:[.13333,.63333,0,0,.89444],248:[.09722,.54167,0,0,.575],305:[0,.44444,0,0,.31944],338:[0,.68611,0,0,1.16944],339:[0,.44444,0,0,.89444],567:[.19444,.44444,0,0,.35139],710:[0,.69444,0,0,.575],711:[0,.63194,0,0,.575],713:[0,.59611,0,0,.575],714:[0,.69444,0,0,.575],715:[0,.69444,0,0,.575],728:[0,.69444,0,0,.575],729:[0,.69444,0,0,.31944],730:[0,.69444,0,0,.86944],732:[0,.69444,0,0,.575],733:[0,.69444,0,0,.575],915:[0,.68611,0,0,.69166],916:[0,.68611,0,0,.95833],920:[0,.68611,0,0,.89444],923:[0,.68611,0,0,.80555],926:[0,.68611,0,0,.76666],928:[0,.68611,0,0,.9],931:[0,.68611,0,0,.83055],933:[0,.68611,0,0,.89444],934:[0,.68611,0,0,.83055],936:[0,.68611,0,0,.89444],937:[0,.68611,0,0,.83055],8211:[0,.44444,.03194,0,.575],8212:[0,.44444,.03194,0,1.14999],8216:[0,.69444,0,0,.31944],8217:[0,.69444,0,0,.31944],8220:[0,.69444,0,0,.60278],8221:[0,.69444,0,0,.60278],8224:[.19444,.69444,0,0,.51111],8225:[.19444,.69444,0,0,.51111],8242:[0,.55556,0,0,.34444],8407:[0,.72444,.15486,0,.575],8463:[0,.69444,0,0,.66759],8465:[0,.69444,0,0,.83055],8467:[0,.69444,0,0,.47361],8472:[.19444,.44444,0,0,.74027],8476:[0,.69444,0,0,.83055],8501:[0,.69444,0,0,.70277],8592:[-.10889,.39111,0,0,1.14999],8593:[.19444,.69444,0,0,.575],8594:[-.10889,.39111,0,0,1.14999],8595:[.19444,.69444,0,0,.575],8596:[-.10889,.39111,0,0,1.14999],8597:[.25,.75,0,0,.575],8598:[.19444,.69444,0,0,1.14999],8599:[.19444,.69444,0,0,1.14999],8600:[.19444,.69444,0,0,1.14999],8601:[.19444,.69444,0,0,1.14999],8636:[-.10889,.39111,0,0,1.14999],8637:[-.10889,.39111,0,0,1.14999],8640:[-.10889,.39111,0,0,1.14999],8641:[-.10889,.39111,0,0,1.14999],8656:[-.10889,.39111,0,0,1.14999],8657:[.19444,.69444,0,0,.70277],8658:[-.10889,.39111,0,0,1.14999],8659:[.19444,.69444,0,0,.70277],8660:[-.10889,.39111,0,0,1.14999],8661:[.25,.75,0,0,.70277],8704:[0,.69444,0,0,.63889],8706:[0,.69444,.06389,0,.62847],8707:[0,.69444,0,0,.63889],8709:[.05556,.75,0,0,.575],8711:[0,.68611,0,0,.95833],8712:[.08556,.58556,0,0,.76666],8715:[.08556,.58556,0,0,.76666],8722:[.13333,.63333,0,0,.89444],8723:[.13333,.63333,0,0,.89444],8725:[.25,.75,0,0,.575],8726:[.25,.75,0,0,.575],8727:[-.02778,.47222,0,0,.575],8728:[-.02639,.47361,0,0,.575],8729:[-.02639,.47361,0,0,.575],8730:[.18,.82,0,0,.95833],8733:[0,.44444,0,0,.89444],8734:[0,.44444,0,0,1.14999],8736:[0,.69224,0,0,.72222],8739:[.25,.75,0,0,.31944],8741:[.25,.75,0,0,.575],8743:[0,.55556,0,0,.76666],8744:[0,.55556,0,0,.76666],8745:[0,.55556,0,0,.76666],8746:[0,.55556,0,0,.76666],8747:[.19444,.69444,.12778,0,.56875],8764:[-.10889,.39111,0,0,.89444],8768:[.19444,.69444,0,0,.31944],8771:[.00222,.50222,0,0,.89444],8773:[.027,.638,0,0,.894],8776:[.02444,.52444,0,0,.89444],8781:[.00222,.50222,0,0,.89444],8801:[.00222,.50222,0,0,.89444],8804:[.19667,.69667,0,0,.89444],8805:[.19667,.69667,0,0,.89444],8810:[.08556,.58556,0,0,1.14999],8811:[.08556,.58556,0,0,1.14999],8826:[.08556,.58556,0,0,.89444],8827:[.08556,.58556,0,0,.89444],8834:[.08556,.58556,0,0,.89444],8835:[.08556,.58556,0,0,.89444],8838:[.19667,.69667,0,0,.89444],8839:[.19667,.69667,0,0,.89444],8846:[0,.55556,0,0,.76666],8849:[.19667,.69667,0,0,.89444],8850:[.19667,.69667,0,0,.89444],8851:[0,.55556,0,0,.76666],8852:[0,.55556,0,0,.76666],8853:[.13333,.63333,0,0,.89444],8854:[.13333,.63333,0,0,.89444],8855:[.13333,.63333,0,0,.89444],8856:[.13333,.63333,0,0,.89444],8857:[.13333,.63333,0,0,.89444],8866:[0,.69444,0,0,.70277],8867:[0,.69444,0,0,.70277],8868:[0,.69444,0,0,.89444],8869:[0,.69444,0,0,.89444],8900:[-.02639,.47361,0,0,.575],8901:[-.02639,.47361,0,0,.31944],8902:[-.02778,.47222,0,0,.575],8968:[.25,.75,0,0,.51111],8969:[.25,.75,0,0,.51111],8970:[.25,.75,0,0,.51111],8971:[.25,.75,0,0,.51111],8994:[-.13889,.36111,0,0,1.14999],8995:[-.13889,.36111,0,0,1.14999],9651:[.19444,.69444,0,0,1.02222],9657:[-.02778,.47222,0,0,.575],9661:[.19444,.69444,0,0,1.02222],9667:[-.02778,.47222,0,0,.575],9711:[.19444,.69444,0,0,1.14999],9824:[.12963,.69444,0,0,.89444],9825:[.12963,.69444,0,0,.89444],9826:[.12963,.69444,0,0,.89444],9827:[.12963,.69444,0,0,.89444],9837:[0,.75,0,0,.44722],9838:[.19444,.69444,0,0,.44722],9839:[.19444,.69444,0,0,.44722],10216:[.25,.75,0,0,.44722],10217:[.25,.75,0,0,.44722],10815:[0,.68611,0,0,.9],10927:[.19667,.69667,0,0,.89444],10928:[.19667,.69667,0,0,.89444],57376:[.19444,.69444,0,0,0]},"Main-BoldItalic":{32:[0,0,0,0,.25],33:[0,.69444,.11417,0,.38611],34:[0,.69444,.07939,0,.62055],35:[.19444,.69444,.06833,0,.94444],37:[.05556,.75,.12861,0,.94444],38:[0,.69444,.08528,0,.88555],39:[0,.69444,.12945,0,.35555],40:[.25,.75,.15806,0,.47333],41:[.25,.75,.03306,0,.47333],42:[0,.75,.14333,0,.59111],43:[.10333,.60333,.03306,0,.88555],44:[.19444,.14722,0,0,.35555],45:[0,.44444,.02611,0,.41444],46:[0,.14722,0,0,.35555],47:[.25,.75,.15806,0,.59111],48:[0,.64444,.13167,0,.59111],49:[0,.64444,.13167,0,.59111],50:[0,.64444,.13167,0,.59111],51:[0,.64444,.13167,0,.59111],52:[.19444,.64444,.13167,0,.59111],53:[0,.64444,.13167,0,.59111],54:[0,.64444,.13167,0,.59111],55:[.19444,.64444,.13167,0,.59111],56:[0,.64444,.13167,0,.59111],57:[0,.64444,.13167,0,.59111],58:[0,.44444,.06695,0,.35555],59:[.19444,.44444,.06695,0,.35555],61:[-.10889,.39111,.06833,0,.88555],63:[0,.69444,.11472,0,.59111],64:[0,.69444,.09208,0,.88555],65:[0,.68611,0,0,.86555],66:[0,.68611,.0992,0,.81666],67:[0,.68611,.14208,0,.82666],68:[0,.68611,.09062,0,.87555],69:[0,.68611,.11431,0,.75666],70:[0,.68611,.12903,0,.72722],71:[0,.68611,.07347,0,.89527],72:[0,.68611,.17208,0,.8961],73:[0,.68611,.15681,0,.47166],74:[0,.68611,.145,0,.61055],75:[0,.68611,.14208,0,.89499],76:[0,.68611,0,0,.69777],77:[0,.68611,.17208,0,1.07277],78:[0,.68611,.17208,0,.8961],79:[0,.68611,.09062,0,.85499],80:[0,.68611,.0992,0,.78721],81:[.19444,.68611,.09062,0,.85499],82:[0,.68611,.02559,0,.85944],83:[0,.68611,.11264,0,.64999],84:[0,.68611,.12903,0,.7961],85:[0,.68611,.17208,0,.88083],86:[0,.68611,.18625,0,.86555],87:[0,.68611,.18625,0,1.15999],88:[0,.68611,.15681,0,.86555],89:[0,.68611,.19803,0,.86555],90:[0,.68611,.14208,0,.70888],91:[.25,.75,.1875,0,.35611],93:[.25,.75,.09972,0,.35611],94:[0,.69444,.06709,0,.59111],95:[.31,.13444,.09811,0,.59111],97:[0,.44444,.09426,0,.59111],98:[0,.69444,.07861,0,.53222],99:[0,.44444,.05222,0,.53222],100:[0,.69444,.10861,0,.59111],101:[0,.44444,.085,0,.53222],102:[.19444,.69444,.21778,0,.4],103:[.19444,.44444,.105,0,.53222],104:[0,.69444,.09426,0,.59111],105:[0,.69326,.11387,0,.35555],106:[.19444,.69326,.1672,0,.35555],107:[0,.69444,.11111,0,.53222],108:[0,.69444,.10861,0,.29666],109:[0,.44444,.09426,0,.94444],110:[0,.44444,.09426,0,.64999],111:[0,.44444,.07861,0,.59111],112:[.19444,.44444,.07861,0,.59111],113:[.19444,.44444,.105,0,.53222],114:[0,.44444,.11111,0,.50167],115:[0,.44444,.08167,0,.48694],116:[0,.63492,.09639,0,.385],117:[0,.44444,.09426,0,.62055],118:[0,.44444,.11111,0,.53222],119:[0,.44444,.11111,0,.76777],120:[0,.44444,.12583,0,.56055],121:[.19444,.44444,.105,0,.56166],122:[0,.44444,.13889,0,.49055],126:[.35,.34444,.11472,0,.59111],160:[0,0,0,0,.25],168:[0,.69444,.11473,0,.59111],176:[0,.69444,0,0,.94888],184:[.17014,0,0,0,.53222],198:[0,.68611,.11431,0,1.02277],216:[.04861,.73472,.09062,0,.88555],223:[.19444,.69444,.09736,0,.665],230:[0,.44444,.085,0,.82666],248:[.09722,.54167,.09458,0,.59111],305:[0,.44444,.09426,0,.35555],338:[0,.68611,.11431,0,1.14054],339:[0,.44444,.085,0,.82666],567:[.19444,.44444,.04611,0,.385],710:[0,.69444,.06709,0,.59111],711:[0,.63194,.08271,0,.59111],713:[0,.59444,.10444,0,.59111],714:[0,.69444,.08528,0,.59111],715:[0,.69444,0,0,.59111],728:[0,.69444,.10333,0,.59111],729:[0,.69444,.12945,0,.35555],730:[0,.69444,0,0,.94888],732:[0,.69444,.11472,0,.59111],733:[0,.69444,.11472,0,.59111],915:[0,.68611,.12903,0,.69777],916:[0,.68611,0,0,.94444],920:[0,.68611,.09062,0,.88555],923:[0,.68611,0,0,.80666],926:[0,.68611,.15092,0,.76777],928:[0,.68611,.17208,0,.8961],931:[0,.68611,.11431,0,.82666],933:[0,.68611,.10778,0,.88555],934:[0,.68611,.05632,0,.82666],936:[0,.68611,.10778,0,.88555],937:[0,.68611,.0992,0,.82666],8211:[0,.44444,.09811,0,.59111],8212:[0,.44444,.09811,0,1.18221],8216:[0,.69444,.12945,0,.35555],8217:[0,.69444,.12945,0,.35555],8220:[0,.69444,.16772,0,.62055],8221:[0,.69444,.07939,0,.62055]},"Main-Italic":{32:[0,0,0,0,.25],33:[0,.69444,.12417,0,.30667],34:[0,.69444,.06961,0,.51444],35:[.19444,.69444,.06616,0,.81777],37:[.05556,.75,.13639,0,.81777],38:[0,.69444,.09694,0,.76666],39:[0,.69444,.12417,0,.30667],40:[.25,.75,.16194,0,.40889],41:[.25,.75,.03694,0,.40889],42:[0,.75,.14917,0,.51111],43:[.05667,.56167,.03694,0,.76666],44:[.19444,.10556,0,0,.30667],45:[0,.43056,.02826,0,.35778],46:[0,.10556,0,0,.30667],47:[.25,.75,.16194,0,.51111],48:[0,.64444,.13556,0,.51111],49:[0,.64444,.13556,0,.51111],50:[0,.64444,.13556,0,.51111],51:[0,.64444,.13556,0,.51111],52:[.19444,.64444,.13556,0,.51111],53:[0,.64444,.13556,0,.51111],54:[0,.64444,.13556,0,.51111],55:[.19444,.64444,.13556,0,.51111],56:[0,.64444,.13556,0,.51111],57:[0,.64444,.13556,0,.51111],58:[0,.43056,.0582,0,.30667],59:[.19444,.43056,.0582,0,.30667],61:[-.13313,.36687,.06616,0,.76666],63:[0,.69444,.1225,0,.51111],64:[0,.69444,.09597,0,.76666],65:[0,.68333,0,0,.74333],66:[0,.68333,.10257,0,.70389],67:[0,.68333,.14528,0,.71555],68:[0,.68333,.09403,0,.755],69:[0,.68333,.12028,0,.67833],70:[0,.68333,.13305,0,.65277],71:[0,.68333,.08722,0,.77361],72:[0,.68333,.16389,0,.74333],73:[0,.68333,.15806,0,.38555],74:[0,.68333,.14028,0,.525],75:[0,.68333,.14528,0,.76888],76:[0,.68333,0,0,.62722],77:[0,.68333,.16389,0,.89666],78:[0,.68333,.16389,0,.74333],79:[0,.68333,.09403,0,.76666],80:[0,.68333,.10257,0,.67833],81:[.19444,.68333,.09403,0,.76666],82:[0,.68333,.03868,0,.72944],83:[0,.68333,.11972,0,.56222],84:[0,.68333,.13305,0,.71555],85:[0,.68333,.16389,0,.74333],86:[0,.68333,.18361,0,.74333],87:[0,.68333,.18361,0,.99888],88:[0,.68333,.15806,0,.74333],89:[0,.68333,.19383,0,.74333],90:[0,.68333,.14528,0,.61333],91:[.25,.75,.1875,0,.30667],93:[.25,.75,.10528,0,.30667],94:[0,.69444,.06646,0,.51111],95:[.31,.12056,.09208,0,.51111],97:[0,.43056,.07671,0,.51111],98:[0,.69444,.06312,0,.46],99:[0,.43056,.05653,0,.46],100:[0,.69444,.10333,0,.51111],101:[0,.43056,.07514,0,.46],102:[.19444,.69444,.21194,0,.30667],103:[.19444,.43056,.08847,0,.46],104:[0,.69444,.07671,0,.51111],105:[0,.65536,.1019,0,.30667],106:[.19444,.65536,.14467,0,.30667],107:[0,.69444,.10764,0,.46],108:[0,.69444,.10333,0,.25555],109:[0,.43056,.07671,0,.81777],110:[0,.43056,.07671,0,.56222],111:[0,.43056,.06312,0,.51111],112:[.19444,.43056,.06312,0,.51111],113:[.19444,.43056,.08847,0,.46],114:[0,.43056,.10764,0,.42166],115:[0,.43056,.08208,0,.40889],116:[0,.61508,.09486,0,.33222],117:[0,.43056,.07671,0,.53666],118:[0,.43056,.10764,0,.46],119:[0,.43056,.10764,0,.66444],120:[0,.43056,.12042,0,.46389],121:[.19444,.43056,.08847,0,.48555],122:[0,.43056,.12292,0,.40889],126:[.35,.31786,.11585,0,.51111],160:[0,0,0,0,.25],168:[0,.66786,.10474,0,.51111],176:[0,.69444,0,0,.83129],184:[.17014,0,0,0,.46],198:[0,.68333,.12028,0,.88277],216:[.04861,.73194,.09403,0,.76666],223:[.19444,.69444,.10514,0,.53666],230:[0,.43056,.07514,0,.71555],248:[.09722,.52778,.09194,0,.51111],338:[0,.68333,.12028,0,.98499],339:[0,.43056,.07514,0,.71555],710:[0,.69444,.06646,0,.51111],711:[0,.62847,.08295,0,.51111],713:[0,.56167,.10333,0,.51111],714:[0,.69444,.09694,0,.51111],715:[0,.69444,0,0,.51111],728:[0,.69444,.10806,0,.51111],729:[0,.66786,.11752,0,.30667],730:[0,.69444,0,0,.83129],732:[0,.66786,.11585,0,.51111],733:[0,.69444,.1225,0,.51111],915:[0,.68333,.13305,0,.62722],916:[0,.68333,0,0,.81777],920:[0,.68333,.09403,0,.76666],923:[0,.68333,0,0,.69222],926:[0,.68333,.15294,0,.66444],928:[0,.68333,.16389,0,.74333],931:[0,.68333,.12028,0,.71555],933:[0,.68333,.11111,0,.76666],934:[0,.68333,.05986,0,.71555],936:[0,.68333,.11111,0,.76666],937:[0,.68333,.10257,0,.71555],8211:[0,.43056,.09208,0,.51111],8212:[0,.43056,.09208,0,1.02222],8216:[0,.69444,.12417,0,.30667],8217:[0,.69444,.12417,0,.30667],8220:[0,.69444,.1685,0,.51444],8221:[0,.69444,.06961,0,.51444],8463:[0,.68889,0,0,.54028]},"Main-Regular":{32:[0,0,0,0,.25],33:[0,.69444,0,0,.27778],34:[0,.69444,0,0,.5],35:[.19444,.69444,0,0,.83334],36:[.05556,.75,0,0,.5],37:[.05556,.75,0,0,.83334],38:[0,.69444,0,0,.77778],39:[0,.69444,0,0,.27778],40:[.25,.75,0,0,.38889],41:[.25,.75,0,0,.38889],42:[0,.75,0,0,.5],43:[.08333,.58333,0,0,.77778],44:[.19444,.10556,0,0,.27778],45:[0,.43056,0,0,.33333],46:[0,.10556,0,0,.27778],47:[.25,.75,0,0,.5],48:[0,.64444,0,0,.5],49:[0,.64444,0,0,.5],50:[0,.64444,0,0,.5],51:[0,.64444,0,0,.5],52:[0,.64444,0,0,.5],53:[0,.64444,0,0,.5],54:[0,.64444,0,0,.5],55:[0,.64444,0,0,.5],56:[0,.64444,0,0,.5],57:[0,.64444,0,0,.5],58:[0,.43056,0,0,.27778],59:[.19444,.43056,0,0,.27778],60:[.0391,.5391,0,0,.77778],61:[-.13313,.36687,0,0,.77778],62:[.0391,.5391,0,0,.77778],63:[0,.69444,0,0,.47222],64:[0,.69444,0,0,.77778],65:[0,.68333,0,0,.75],66:[0,.68333,0,0,.70834],67:[0,.68333,0,0,.72222],68:[0,.68333,0,0,.76389],69:[0,.68333,0,0,.68056],70:[0,.68333,0,0,.65278],71:[0,.68333,0,0,.78472],72:[0,.68333,0,0,.75],73:[0,.68333,0,0,.36111],74:[0,.68333,0,0,.51389],75:[0,.68333,0,0,.77778],76:[0,.68333,0,0,.625],77:[0,.68333,0,0,.91667],78:[0,.68333,0,0,.75],79:[0,.68333,0,0,.77778],80:[0,.68333,0,0,.68056],81:[.19444,.68333,0,0,.77778],82:[0,.68333,0,0,.73611],83:[0,.68333,0,0,.55556],84:[0,.68333,0,0,.72222],85:[0,.68333,0,0,.75],86:[0,.68333,.01389,0,.75],87:[0,.68333,.01389,0,1.02778],88:[0,.68333,0,0,.75],89:[0,.68333,.025,0,.75],90:[0,.68333,0,0,.61111],91:[.25,.75,0,0,.27778],92:[.25,.75,0,0,.5],93:[.25,.75,0,0,.27778],94:[0,.69444,0,0,.5],95:[.31,.12056,.02778,0,.5],97:[0,.43056,0,0,.5],98:[0,.69444,0,0,.55556],99:[0,.43056,0,0,.44445],100:[0,.69444,0,0,.55556],101:[0,.43056,0,0,.44445],102:[0,.69444,.07778,0,.30556],103:[.19444,.43056,.01389,0,.5],104:[0,.69444,0,0,.55556],105:[0,.66786,0,0,.27778],106:[.19444,.66786,0,0,.30556],107:[0,.69444,0,0,.52778],108:[0,.69444,0,0,.27778],109:[0,.43056,0,0,.83334],110:[0,.43056,0,0,.55556],111:[0,.43056,0,0,.5],112:[.19444,.43056,0,0,.55556],113:[.19444,.43056,0,0,.52778],114:[0,.43056,0,0,.39167],115:[0,.43056,0,0,.39445],116:[0,.61508,0,0,.38889],117:[0,.43056,0,0,.55556],118:[0,.43056,.01389,0,.52778],119:[0,.43056,.01389,0,.72222],120:[0,.43056,0,0,.52778],121:[.19444,.43056,.01389,0,.52778],122:[0,.43056,0,0,.44445],123:[.25,.75,0,0,.5],124:[.25,.75,0,0,.27778],125:[.25,.75,0,0,.5],126:[.35,.31786,0,0,.5],160:[0,0,0,0,.25],163:[0,.69444,0,0,.76909],167:[.19444,.69444,0,0,.44445],168:[0,.66786,0,0,.5],172:[0,.43056,0,0,.66667],176:[0,.69444,0,0,.75],177:[.08333,.58333,0,0,.77778],182:[.19444,.69444,0,0,.61111],184:[.17014,0,0,0,.44445],198:[0,.68333,0,0,.90278],215:[.08333,.58333,0,0,.77778],216:[.04861,.73194,0,0,.77778],223:[0,.69444,0,0,.5],230:[0,.43056,0,0,.72222],247:[.08333,.58333,0,0,.77778],248:[.09722,.52778,0,0,.5],305:[0,.43056,0,0,.27778],338:[0,.68333,0,0,1.01389],339:[0,.43056,0,0,.77778],567:[.19444,.43056,0,0,.30556],710:[0,.69444,0,0,.5],711:[0,.62847,0,0,.5],713:[0,.56778,0,0,.5],714:[0,.69444,0,0,.5],715:[0,.69444,0,0,.5],728:[0,.69444,0,0,.5],729:[0,.66786,0,0,.27778],730:[0,.69444,0,0,.75],732:[0,.66786,0,0,.5],733:[0,.69444,0,0,.5],915:[0,.68333,0,0,.625],916:[0,.68333,0,0,.83334],920:[0,.68333,0,0,.77778],923:[0,.68333,0,0,.69445],926:[0,.68333,0,0,.66667],928:[0,.68333,0,0,.75],931:[0,.68333,0,0,.72222],933:[0,.68333,0,0,.77778],934:[0,.68333,0,0,.72222],936:[0,.68333,0,0,.77778],937:[0,.68333,0,0,.72222],8211:[0,.43056,.02778,0,.5],8212:[0,.43056,.02778,0,1],8216:[0,.69444,0,0,.27778],8217:[0,.69444,0,0,.27778],8220:[0,.69444,0,0,.5],8221:[0,.69444,0,0,.5],8224:[.19444,.69444,0,0,.44445],8225:[.19444,.69444,0,0,.44445],8230:[0,.123,0,0,1.172],8242:[0,.55556,0,0,.275],8407:[0,.71444,.15382,0,.5],8463:[0,.68889,0,0,.54028],8465:[0,.69444,0,0,.72222],8467:[0,.69444,0,.11111,.41667],8472:[.19444,.43056,0,.11111,.63646],8476:[0,.69444,0,0,.72222],8501:[0,.69444,0,0,.61111],8592:[-.13313,.36687,0,0,1],8593:[.19444,.69444,0,0,.5],8594:[-.13313,.36687,0,0,1],8595:[.19444,.69444,0,0,.5],8596:[-.13313,.36687,0,0,1],8597:[.25,.75,0,0,.5],8598:[.19444,.69444,0,0,1],8599:[.19444,.69444,0,0,1],8600:[.19444,.69444,0,0,1],8601:[.19444,.69444,0,0,1],8614:[.011,.511,0,0,1],8617:[.011,.511,0,0,1.126],8618:[.011,.511,0,0,1.126],8636:[-.13313,.36687,0,0,1],8637:[-.13313,.36687,0,0,1],8640:[-.13313,.36687,0,0,1],8641:[-.13313,.36687,0,0,1],8652:[.011,.671,0,0,1],8656:[-.13313,.36687,0,0,1],8657:[.19444,.69444,0,0,.61111],8658:[-.13313,.36687,0,0,1],8659:[.19444,.69444,0,0,.61111],8660:[-.13313,.36687,0,0,1],8661:[.25,.75,0,0,.61111],8704:[0,.69444,0,0,.55556],8706:[0,.69444,.05556,.08334,.5309],8707:[0,.69444,0,0,.55556],8709:[.05556,.75,0,0,.5],8711:[0,.68333,0,0,.83334],8712:[.0391,.5391,0,0,.66667],8715:[.0391,.5391,0,0,.66667],8722:[.08333,.58333,0,0,.77778],8723:[.08333,.58333,0,0,.77778],8725:[.25,.75,0,0,.5],8726:[.25,.75,0,0,.5],8727:[-.03472,.46528,0,0,.5],8728:[-.05555,.44445,0,0,.5],8729:[-.05555,.44445,0,0,.5],8730:[.2,.8,0,0,.83334],8733:[0,.43056,0,0,.77778],8734:[0,.43056,0,0,1],8736:[0,.69224,0,0,.72222],8739:[.25,.75,0,0,.27778],8741:[.25,.75,0,0,.5],8743:[0,.55556,0,0,.66667],8744:[0,.55556,0,0,.66667],8745:[0,.55556,0,0,.66667],8746:[0,.55556,0,0,.66667],8747:[.19444,.69444,.11111,0,.41667],8764:[-.13313,.36687,0,0,.77778],8768:[.19444,.69444,0,0,.27778],8771:[-.03625,.46375,0,0,.77778],8773:[-.022,.589,0,0,.778],8776:[-.01688,.48312,0,0,.77778],8781:[-.03625,.46375,0,0,.77778],8784:[-.133,.673,0,0,.778],8801:[-.03625,.46375,0,0,.77778],8804:[.13597,.63597,0,0,.77778],8805:[.13597,.63597,0,0,.77778],8810:[.0391,.5391,0,0,1],8811:[.0391,.5391,0,0,1],8826:[.0391,.5391,0,0,.77778],8827:[.0391,.5391,0,0,.77778],8834:[.0391,.5391,0,0,.77778],8835:[.0391,.5391,0,0,.77778],8838:[.13597,.63597,0,0,.77778],8839:[.13597,.63597,0,0,.77778],8846:[0,.55556,0,0,.66667],8849:[.13597,.63597,0,0,.77778],8850:[.13597,.63597,0,0,.77778],8851:[0,.55556,0,0,.66667],8852:[0,.55556,0,0,.66667],8853:[.08333,.58333,0,0,.77778],8854:[.08333,.58333,0,0,.77778],8855:[.08333,.58333,0,0,.77778],8856:[.08333,.58333,0,0,.77778],8857:[.08333,.58333,0,0,.77778],8866:[0,.69444,0,0,.61111],8867:[0,.69444,0,0,.61111],8868:[0,.69444,0,0,.77778],8869:[0,.69444,0,0,.77778],8872:[.249,.75,0,0,.867],8900:[-.05555,.44445,0,0,.5],8901:[-.05555,.44445,0,0,.27778],8902:[-.03472,.46528,0,0,.5],8904:[.005,.505,0,0,.9],8942:[.03,.903,0,0,.278],8943:[-.19,.313,0,0,1.172],8945:[-.1,.823,0,0,1.282],8968:[.25,.75,0,0,.44445],8969:[.25,.75,0,0,.44445],8970:[.25,.75,0,0,.44445],8971:[.25,.75,0,0,.44445],8994:[-.14236,.35764,0,0,1],8995:[-.14236,.35764,0,0,1],9136:[.244,.744,0,0,.412],9137:[.244,.745,0,0,.412],9651:[.19444,.69444,0,0,.88889],9657:[-.03472,.46528,0,0,.5],9661:[.19444,.69444,0,0,.88889],9667:[-.03472,.46528,0,0,.5],9711:[.19444,.69444,0,0,1],9824:[.12963,.69444,0,0,.77778],9825:[.12963,.69444,0,0,.77778],9826:[.12963,.69444,0,0,.77778],9827:[.12963,.69444,0,0,.77778],9837:[0,.75,0,0,.38889],9838:[.19444,.69444,0,0,.38889],9839:[.19444,.69444,0,0,.38889],10216:[.25,.75,0,0,.38889],10217:[.25,.75,0,0,.38889],10222:[.244,.744,0,0,.412],10223:[.244,.745,0,0,.412],10229:[.011,.511,0,0,1.609],10230:[.011,.511,0,0,1.638],10231:[.011,.511,0,0,1.859],10232:[.024,.525,0,0,1.609],10233:[.024,.525,0,0,1.638],10234:[.024,.525,0,0,1.858],10236:[.011,.511,0,0,1.638],10815:[0,.68333,0,0,.75],10927:[.13597,.63597,0,0,.77778],10928:[.13597,.63597,0,0,.77778],57376:[.19444,.69444,0,0,0]},"Math-BoldItalic":{32:[0,0,0,0,.25],48:[0,.44444,0,0,.575],49:[0,.44444,0,0,.575],50:[0,.44444,0,0,.575],51:[.19444,.44444,0,0,.575],52:[.19444,.44444,0,0,.575],53:[.19444,.44444,0,0,.575],54:[0,.64444,0,0,.575],55:[.19444,.44444,0,0,.575],56:[0,.64444,0,0,.575],57:[.19444,.44444,0,0,.575],65:[0,.68611,0,0,.86944],66:[0,.68611,.04835,0,.8664],67:[0,.68611,.06979,0,.81694],68:[0,.68611,.03194,0,.93812],69:[0,.68611,.05451,0,.81007],70:[0,.68611,.15972,0,.68889],71:[0,.68611,0,0,.88673],72:[0,.68611,.08229,0,.98229],73:[0,.68611,.07778,0,.51111],74:[0,.68611,.10069,0,.63125],75:[0,.68611,.06979,0,.97118],76:[0,.68611,0,0,.75555],77:[0,.68611,.11424,0,1.14201],78:[0,.68611,.11424,0,.95034],79:[0,.68611,.03194,0,.83666],80:[0,.68611,.15972,0,.72309],81:[.19444,.68611,0,0,.86861],82:[0,.68611,.00421,0,.87235],83:[0,.68611,.05382,0,.69271],84:[0,.68611,.15972,0,.63663],85:[0,.68611,.11424,0,.80027],86:[0,.68611,.25555,0,.67778],87:[0,.68611,.15972,0,1.09305],88:[0,.68611,.07778,0,.94722],89:[0,.68611,.25555,0,.67458],90:[0,.68611,.06979,0,.77257],97:[0,.44444,0,0,.63287],98:[0,.69444,0,0,.52083],99:[0,.44444,0,0,.51342],100:[0,.69444,0,0,.60972],101:[0,.44444,0,0,.55361],102:[.19444,.69444,.11042,0,.56806],103:[.19444,.44444,.03704,0,.5449],104:[0,.69444,0,0,.66759],105:[0,.69326,0,0,.4048],106:[.19444,.69326,.0622,0,.47083],107:[0,.69444,.01852,0,.6037],108:[0,.69444,.0088,0,.34815],109:[0,.44444,0,0,1.0324],110:[0,.44444,0,0,.71296],111:[0,.44444,0,0,.58472],112:[.19444,.44444,0,0,.60092],113:[.19444,.44444,.03704,0,.54213],114:[0,.44444,.03194,0,.5287],115:[0,.44444,0,0,.53125],116:[0,.63492,0,0,.41528],117:[0,.44444,0,0,.68102],118:[0,.44444,.03704,0,.56666],119:[0,.44444,.02778,0,.83148],120:[0,.44444,0,0,.65903],121:[.19444,.44444,.03704,0,.59028],122:[0,.44444,.04213,0,.55509],160:[0,0,0,0,.25],915:[0,.68611,.15972,0,.65694],916:[0,.68611,0,0,.95833],920:[0,.68611,.03194,0,.86722],923:[0,.68611,0,0,.80555],926:[0,.68611,.07458,0,.84125],928:[0,.68611,.08229,0,.98229],931:[0,.68611,.05451,0,.88507],933:[0,.68611,.15972,0,.67083],934:[0,.68611,0,0,.76666],936:[0,.68611,.11653,0,.71402],937:[0,.68611,.04835,0,.8789],945:[0,.44444,0,0,.76064],946:[.19444,.69444,.03403,0,.65972],947:[.19444,.44444,.06389,0,.59003],948:[0,.69444,.03819,0,.52222],949:[0,.44444,0,0,.52882],950:[.19444,.69444,.06215,0,.50833],951:[.19444,.44444,.03704,0,.6],952:[0,.69444,.03194,0,.5618],953:[0,.44444,0,0,.41204],954:[0,.44444,0,0,.66759],955:[0,.69444,0,0,.67083],956:[.19444,.44444,0,0,.70787],957:[0,.44444,.06898,0,.57685],958:[.19444,.69444,.03021,0,.50833],959:[0,.44444,0,0,.58472],960:[0,.44444,.03704,0,.68241],961:[.19444,.44444,0,0,.6118],962:[.09722,.44444,.07917,0,.42361],963:[0,.44444,.03704,0,.68588],964:[0,.44444,.13472,0,.52083],965:[0,.44444,.03704,0,.63055],966:[.19444,.44444,0,0,.74722],967:[.19444,.44444,0,0,.71805],968:[.19444,.69444,.03704,0,.75833],969:[0,.44444,.03704,0,.71782],977:[0,.69444,0,0,.69155],981:[.19444,.69444,0,0,.7125],982:[0,.44444,.03194,0,.975],1009:[.19444,.44444,0,0,.6118],1013:[0,.44444,0,0,.48333],57649:[0,.44444,0,0,.39352],57911:[.19444,.44444,0,0,.43889]},"Math-Italic":{32:[0,0,0,0,.25],48:[0,.43056,0,0,.5],49:[0,.43056,0,0,.5],50:[0,.43056,0,0,.5],51:[.19444,.43056,0,0,.5],52:[.19444,.43056,0,0,.5],53:[.19444,.43056,0,0,.5],54:[0,.64444,0,0,.5],55:[.19444,.43056,0,0,.5],56:[0,.64444,0,0,.5],57:[.19444,.43056,0,0,.5],65:[0,.68333,0,.13889,.75],66:[0,.68333,.05017,.08334,.75851],67:[0,.68333,.07153,.08334,.71472],68:[0,.68333,.02778,.05556,.82792],69:[0,.68333,.05764,.08334,.7382],70:[0,.68333,.13889,.08334,.64306],71:[0,.68333,0,.08334,.78625],72:[0,.68333,.08125,.05556,.83125],73:[0,.68333,.07847,.11111,.43958],74:[0,.68333,.09618,.16667,.55451],75:[0,.68333,.07153,.05556,.84931],76:[0,.68333,0,.02778,.68056],77:[0,.68333,.10903,.08334,.97014],78:[0,.68333,.10903,.08334,.80347],79:[0,.68333,.02778,.08334,.76278],80:[0,.68333,.13889,.08334,.64201],81:[.19444,.68333,0,.08334,.79056],82:[0,.68333,.00773,.08334,.75929],83:[0,.68333,.05764,.08334,.6132],84:[0,.68333,.13889,.08334,.58438],85:[0,.68333,.10903,.02778,.68278],86:[0,.68333,.22222,0,.58333],87:[0,.68333,.13889,0,.94445],88:[0,.68333,.07847,.08334,.82847],89:[0,.68333,.22222,0,.58056],90:[0,.68333,.07153,.08334,.68264],97:[0,.43056,0,0,.52859],98:[0,.69444,0,0,.42917],99:[0,.43056,0,.05556,.43276],100:[0,.69444,0,.16667,.52049],101:[0,.43056,0,.05556,.46563],102:[.19444,.69444,.10764,.16667,.48959],103:[.19444,.43056,.03588,.02778,.47697],104:[0,.69444,0,0,.57616],105:[0,.65952,0,0,.34451],106:[.19444,.65952,.05724,0,.41181],107:[0,.69444,.03148,0,.5206],108:[0,.69444,.01968,.08334,.29838],109:[0,.43056,0,0,.87801],110:[0,.43056,0,0,.60023],111:[0,.43056,0,.05556,.48472],112:[.19444,.43056,0,.08334,.50313],113:[.19444,.43056,.03588,.08334,.44641],114:[0,.43056,.02778,.05556,.45116],115:[0,.43056,0,.05556,.46875],116:[0,.61508,0,.08334,.36111],117:[0,.43056,0,.02778,.57246],118:[0,.43056,.03588,.02778,.48472],119:[0,.43056,.02691,.08334,.71592],120:[0,.43056,0,.02778,.57153],121:[.19444,.43056,.03588,.05556,.49028],122:[0,.43056,.04398,.05556,.46505],160:[0,0,0,0,.25],915:[0,.68333,.13889,.08334,.61528],916:[0,.68333,0,.16667,.83334],920:[0,.68333,.02778,.08334,.76278],923:[0,.68333,0,.16667,.69445],926:[0,.68333,.07569,.08334,.74236],928:[0,.68333,.08125,.05556,.83125],931:[0,.68333,.05764,.08334,.77986],933:[0,.68333,.13889,.05556,.58333],934:[0,.68333,0,.08334,.66667],936:[0,.68333,.11,.05556,.61222],937:[0,.68333,.05017,.08334,.7724],945:[0,.43056,.0037,.02778,.6397],946:[.19444,.69444,.05278,.08334,.56563],947:[.19444,.43056,.05556,0,.51773],948:[0,.69444,.03785,.05556,.44444],949:[0,.43056,0,.08334,.46632],950:[.19444,.69444,.07378,.08334,.4375],951:[.19444,.43056,.03588,.05556,.49653],952:[0,.69444,.02778,.08334,.46944],953:[0,.43056,0,.05556,.35394],954:[0,.43056,0,0,.57616],955:[0,.69444,0,0,.58334],956:[.19444,.43056,0,.02778,.60255],957:[0,.43056,.06366,.02778,.49398],958:[.19444,.69444,.04601,.11111,.4375],959:[0,.43056,0,.05556,.48472],960:[0,.43056,.03588,0,.57003],961:[.19444,.43056,0,.08334,.51702],962:[.09722,.43056,.07986,.08334,.36285],963:[0,.43056,.03588,0,.57141],964:[0,.43056,.1132,.02778,.43715],965:[0,.43056,.03588,.02778,.54028],966:[.19444,.43056,0,.08334,.65417],967:[.19444,.43056,0,.05556,.62569],968:[.19444,.69444,.03588,.11111,.65139],969:[0,.43056,.03588,0,.62245],977:[0,.69444,0,.08334,.59144],981:[.19444,.69444,0,.08334,.59583],982:[0,.43056,.02778,0,.82813],1009:[.19444,.43056,0,.08334,.51702],1013:[0,.43056,0,.05556,.4059],57649:[0,.43056,0,.02778,.32246],57911:[.19444,.43056,0,.08334,.38403]},"SansSerif-Bold":{32:[0,0,0,0,.25],33:[0,.69444,0,0,.36667],34:[0,.69444,0,0,.55834],35:[.19444,.69444,0,0,.91667],36:[.05556,.75,0,0,.55],37:[.05556,.75,0,0,1.02912],38:[0,.69444,0,0,.83056],39:[0,.69444,0,0,.30556],40:[.25,.75,0,0,.42778],41:[.25,.75,0,0,.42778],42:[0,.75,0,0,.55],43:[.11667,.61667,0,0,.85556],44:[.10556,.13056,0,0,.30556],45:[0,.45833,0,0,.36667],46:[0,.13056,0,0,.30556],47:[.25,.75,0,0,.55],48:[0,.69444,0,0,.55],49:[0,.69444,0,0,.55],50:[0,.69444,0,0,.55],51:[0,.69444,0,0,.55],52:[0,.69444,0,0,.55],53:[0,.69444,0,0,.55],54:[0,.69444,0,0,.55],55:[0,.69444,0,0,.55],56:[0,.69444,0,0,.55],57:[0,.69444,0,0,.55],58:[0,.45833,0,0,.30556],59:[.10556,.45833,0,0,.30556],61:[-.09375,.40625,0,0,.85556],63:[0,.69444,0,0,.51945],64:[0,.69444,0,0,.73334],65:[0,.69444,0,0,.73334],66:[0,.69444,0,0,.73334],67:[0,.69444,0,0,.70278],68:[0,.69444,0,0,.79445],69:[0,.69444,0,0,.64167],70:[0,.69444,0,0,.61111],71:[0,.69444,0,0,.73334],72:[0,.69444,0,0,.79445],73:[0,.69444,0,0,.33056],74:[0,.69444,0,0,.51945],75:[0,.69444,0,0,.76389],76:[0,.69444,0,0,.58056],77:[0,.69444,0,0,.97778],78:[0,.69444,0,0,.79445],79:[0,.69444,0,0,.79445],80:[0,.69444,0,0,.70278],81:[.10556,.69444,0,0,.79445],82:[0,.69444,0,0,.70278],83:[0,.69444,0,0,.61111],84:[0,.69444,0,0,.73334],85:[0,.69444,0,0,.76389],86:[0,.69444,.01528,0,.73334],87:[0,.69444,.01528,0,1.03889],88:[0,.69444,0,0,.73334],89:[0,.69444,.0275,0,.73334],90:[0,.69444,0,0,.67223],91:[.25,.75,0,0,.34306],93:[.25,.75,0,0,.34306],94:[0,.69444,0,0,.55],95:[.35,.10833,.03056,0,.55],97:[0,.45833,0,0,.525],98:[0,.69444,0,0,.56111],99:[0,.45833,0,0,.48889],100:[0,.69444,0,0,.56111],101:[0,.45833,0,0,.51111],102:[0,.69444,.07639,0,.33611],103:[.19444,.45833,.01528,0,.55],104:[0,.69444,0,0,.56111],105:[0,.69444,0,0,.25556],106:[.19444,.69444,0,0,.28611],107:[0,.69444,0,0,.53056],108:[0,.69444,0,0,.25556],109:[0,.45833,0,0,.86667],110:[0,.45833,0,0,.56111],111:[0,.45833,0,0,.55],112:[.19444,.45833,0,0,.56111],113:[.19444,.45833,0,0,.56111],114:[0,.45833,.01528,0,.37222],115:[0,.45833,0,0,.42167],116:[0,.58929,0,0,.40417],117:[0,.45833,0,0,.56111],118:[0,.45833,.01528,0,.5],119:[0,.45833,.01528,0,.74445],120:[0,.45833,0,0,.5],121:[.19444,.45833,.01528,0,.5],122:[0,.45833,0,0,.47639],126:[.35,.34444,0,0,.55],160:[0,0,0,0,.25],168:[0,.69444,0,0,.55],176:[0,.69444,0,0,.73334],180:[0,.69444,0,0,.55],184:[.17014,0,0,0,.48889],305:[0,.45833,0,0,.25556],567:[.19444,.45833,0,0,.28611],710:[0,.69444,0,0,.55],711:[0,.63542,0,0,.55],713:[0,.63778,0,0,.55],728:[0,.69444,0,0,.55],729:[0,.69444,0,0,.30556],730:[0,.69444,0,0,.73334],732:[0,.69444,0,0,.55],733:[0,.69444,0,0,.55],915:[0,.69444,0,0,.58056],916:[0,.69444,0,0,.91667],920:[0,.69444,0,0,.85556],923:[0,.69444,0,0,.67223],926:[0,.69444,0,0,.73334],928:[0,.69444,0,0,.79445],931:[0,.69444,0,0,.79445],933:[0,.69444,0,0,.85556],934:[0,.69444,0,0,.79445],936:[0,.69444,0,0,.85556],937:[0,.69444,0,0,.79445],8211:[0,.45833,.03056,0,.55],8212:[0,.45833,.03056,0,1.10001],8216:[0,.69444,0,0,.30556],8217:[0,.69444,0,0,.30556],8220:[0,.69444,0,0,.55834],8221:[0,.69444,0,0,.55834]},"SansSerif-Italic":{32:[0,0,0,0,.25],33:[0,.69444,.05733,0,.31945],34:[0,.69444,.00316,0,.5],35:[.19444,.69444,.05087,0,.83334],36:[.05556,.75,.11156,0,.5],37:[.05556,.75,.03126,0,.83334],38:[0,.69444,.03058,0,.75834],39:[0,.69444,.07816,0,.27778],40:[.25,.75,.13164,0,.38889],41:[.25,.75,.02536,0,.38889],42:[0,.75,.11775,0,.5],43:[.08333,.58333,.02536,0,.77778],44:[.125,.08333,0,0,.27778],45:[0,.44444,.01946,0,.33333],46:[0,.08333,0,0,.27778],47:[.25,.75,.13164,0,.5],48:[0,.65556,.11156,0,.5],49:[0,.65556,.11156,0,.5],50:[0,.65556,.11156,0,.5],51:[0,.65556,.11156,0,.5],52:[0,.65556,.11156,0,.5],53:[0,.65556,.11156,0,.5],54:[0,.65556,.11156,0,.5],55:[0,.65556,.11156,0,.5],56:[0,.65556,.11156,0,.5],57:[0,.65556,.11156,0,.5],58:[0,.44444,.02502,0,.27778],59:[.125,.44444,.02502,0,.27778],61:[-.13,.37,.05087,0,.77778],63:[0,.69444,.11809,0,.47222],64:[0,.69444,.07555,0,.66667],65:[0,.69444,0,0,.66667],66:[0,.69444,.08293,0,.66667],67:[0,.69444,.11983,0,.63889],68:[0,.69444,.07555,0,.72223],69:[0,.69444,.11983,0,.59722],70:[0,.69444,.13372,0,.56945],71:[0,.69444,.11983,0,.66667],72:[0,.69444,.08094,0,.70834],73:[0,.69444,.13372,0,.27778],74:[0,.69444,.08094,0,.47222],75:[0,.69444,.11983,0,.69445],76:[0,.69444,0,0,.54167],77:[0,.69444,.08094,0,.875],78:[0,.69444,.08094,0,.70834],79:[0,.69444,.07555,0,.73611],80:[0,.69444,.08293,0,.63889],81:[.125,.69444,.07555,0,.73611],82:[0,.69444,.08293,0,.64584],83:[0,.69444,.09205,0,.55556],84:[0,.69444,.13372,0,.68056],85:[0,.69444,.08094,0,.6875],86:[0,.69444,.1615,0,.66667],87:[0,.69444,.1615,0,.94445],88:[0,.69444,.13372,0,.66667],89:[0,.69444,.17261,0,.66667],90:[0,.69444,.11983,0,.61111],91:[.25,.75,.15942,0,.28889],93:[.25,.75,.08719,0,.28889],94:[0,.69444,.0799,0,.5],95:[.35,.09444,.08616,0,.5],97:[0,.44444,.00981,0,.48056],98:[0,.69444,.03057,0,.51667],99:[0,.44444,.08336,0,.44445],100:[0,.69444,.09483,0,.51667],101:[0,.44444,.06778,0,.44445],102:[0,.69444,.21705,0,.30556],103:[.19444,.44444,.10836,0,.5],104:[0,.69444,.01778,0,.51667],105:[0,.67937,.09718,0,.23889],106:[.19444,.67937,.09162,0,.26667],107:[0,.69444,.08336,0,.48889],108:[0,.69444,.09483,0,.23889],109:[0,.44444,.01778,0,.79445],110:[0,.44444,.01778,0,.51667],111:[0,.44444,.06613,0,.5],112:[.19444,.44444,.0389,0,.51667],113:[.19444,.44444,.04169,0,.51667],114:[0,.44444,.10836,0,.34167],115:[0,.44444,.0778,0,.38333],116:[0,.57143,.07225,0,.36111],117:[0,.44444,.04169,0,.51667],118:[0,.44444,.10836,0,.46111],119:[0,.44444,.10836,0,.68334],120:[0,.44444,.09169,0,.46111],121:[.19444,.44444,.10836,0,.46111],122:[0,.44444,.08752,0,.43472],126:[.35,.32659,.08826,0,.5],160:[0,0,0,0,.25],168:[0,.67937,.06385,0,.5],176:[0,.69444,0,0,.73752],184:[.17014,0,0,0,.44445],305:[0,.44444,.04169,0,.23889],567:[.19444,.44444,.04169,0,.26667],710:[0,.69444,.0799,0,.5],711:[0,.63194,.08432,0,.5],713:[0,.60889,.08776,0,.5],714:[0,.69444,.09205,0,.5],715:[0,.69444,0,0,.5],728:[0,.69444,.09483,0,.5],729:[0,.67937,.07774,0,.27778],730:[0,.69444,0,0,.73752],732:[0,.67659,.08826,0,.5],733:[0,.69444,.09205,0,.5],915:[0,.69444,.13372,0,.54167],916:[0,.69444,0,0,.83334],920:[0,.69444,.07555,0,.77778],923:[0,.69444,0,0,.61111],926:[0,.69444,.12816,0,.66667],928:[0,.69444,.08094,0,.70834],931:[0,.69444,.11983,0,.72222],933:[0,.69444,.09031,0,.77778],934:[0,.69444,.04603,0,.72222],936:[0,.69444,.09031,0,.77778],937:[0,.69444,.08293,0,.72222],8211:[0,.44444,.08616,0,.5],8212:[0,.44444,.08616,0,1],8216:[0,.69444,.07816,0,.27778],8217:[0,.69444,.07816,0,.27778],8220:[0,.69444,.14205,0,.5],8221:[0,.69444,.00316,0,.5]},"SansSerif-Regular":{32:[0,0,0,0,.25],33:[0,.69444,0,0,.31945],34:[0,.69444,0,0,.5],35:[.19444,.69444,0,0,.83334],36:[.05556,.75,0,0,.5],37:[.05556,.75,0,0,.83334],38:[0,.69444,0,0,.75834],39:[0,.69444,0,0,.27778],40:[.25,.75,0,0,.38889],41:[.25,.75,0,0,.38889],42:[0,.75,0,0,.5],43:[.08333,.58333,0,0,.77778],44:[.125,.08333,0,0,.27778],45:[0,.44444,0,0,.33333],46:[0,.08333,0,0,.27778],47:[.25,.75,0,0,.5],48:[0,.65556,0,0,.5],49:[0,.65556,0,0,.5],50:[0,.65556,0,0,.5],51:[0,.65556,0,0,.5],52:[0,.65556,0,0,.5],53:[0,.65556,0,0,.5],54:[0,.65556,0,0,.5],55:[0,.65556,0,0,.5],56:[0,.65556,0,0,.5],57:[0,.65556,0,0,.5],58:[0,.44444,0,0,.27778],59:[.125,.44444,0,0,.27778],61:[-.13,.37,0,0,.77778],63:[0,.69444,0,0,.47222],64:[0,.69444,0,0,.66667],65:[0,.69444,0,0,.66667],66:[0,.69444,0,0,.66667],67:[0,.69444,0,0,.63889],68:[0,.69444,0,0,.72223],69:[0,.69444,0,0,.59722],70:[0,.69444,0,0,.56945],71:[0,.69444,0,0,.66667],72:[0,.69444,0,0,.70834],73:[0,.69444,0,0,.27778],74:[0,.69444,0,0,.47222],75:[0,.69444,0,0,.69445],76:[0,.69444,0,0,.54167],77:[0,.69444,0,0,.875],78:[0,.69444,0,0,.70834],79:[0,.69444,0,0,.73611],80:[0,.69444,0,0,.63889],81:[.125,.69444,0,0,.73611],82:[0,.69444,0,0,.64584],83:[0,.69444,0,0,.55556],84:[0,.69444,0,0,.68056],85:[0,.69444,0,0,.6875],86:[0,.69444,.01389,0,.66667],87:[0,.69444,.01389,0,.94445],88:[0,.69444,0,0,.66667],89:[0,.69444,.025,0,.66667],90:[0,.69444,0,0,.61111],91:[.25,.75,0,0,.28889],93:[.25,.75,0,0,.28889],94:[0,.69444,0,0,.5],95:[.35,.09444,.02778,0,.5],97:[0,.44444,0,0,.48056],98:[0,.69444,0,0,.51667],99:[0,.44444,0,0,.44445],100:[0,.69444,0,0,.51667],101:[0,.44444,0,0,.44445],102:[0,.69444,.06944,0,.30556],103:[.19444,.44444,.01389,0,.5],104:[0,.69444,0,0,.51667],105:[0,.67937,0,0,.23889],106:[.19444,.67937,0,0,.26667],107:[0,.69444,0,0,.48889],108:[0,.69444,0,0,.23889],109:[0,.44444,0,0,.79445],110:[0,.44444,0,0,.51667],111:[0,.44444,0,0,.5],112:[.19444,.44444,0,0,.51667],113:[.19444,.44444,0,0,.51667],114:[0,.44444,.01389,0,.34167],115:[0,.44444,0,0,.38333],116:[0,.57143,0,0,.36111],117:[0,.44444,0,0,.51667],118:[0,.44444,.01389,0,.46111],119:[0,.44444,.01389,0,.68334],120:[0,.44444,0,0,.46111],121:[.19444,.44444,.01389,0,.46111],122:[0,.44444,0,0,.43472],126:[.35,.32659,0,0,.5],160:[0,0,0,0,.25],168:[0,.67937,0,0,.5],176:[0,.69444,0,0,.66667],184:[.17014,0,0,0,.44445],305:[0,.44444,0,0,.23889],567:[.19444,.44444,0,0,.26667],710:[0,.69444,0,0,.5],711:[0,.63194,0,0,.5],713:[0,.60889,0,0,.5],714:[0,.69444,0,0,.5],715:[0,.69444,0,0,.5],728:[0,.69444,0,0,.5],729:[0,.67937,0,0,.27778],730:[0,.69444,0,0,.66667],732:[0,.67659,0,0,.5],733:[0,.69444,0,0,.5],915:[0,.69444,0,0,.54167],916:[0,.69444,0,0,.83334],920:[0,.69444,0,0,.77778],923:[0,.69444,0,0,.61111],926:[0,.69444,0,0,.66667],928:[0,.69444,0,0,.70834],931:[0,.69444,0,0,.72222],933:[0,.69444,0,0,.77778],934:[0,.69444,0,0,.72222],936:[0,.69444,0,0,.77778],937:[0,.69444,0,0,.72222],8211:[0,.44444,.02778,0,.5],8212:[0,.44444,.02778,0,1],8216:[0,.69444,0,0,.27778],8217:[0,.69444,0,0,.27778],8220:[0,.69444,0,0,.5],8221:[0,.69444,0,0,.5]},"Script-Regular":{32:[0,0,0,0,.25],65:[0,.7,.22925,0,.80253],66:[0,.7,.04087,0,.90757],67:[0,.7,.1689,0,.66619],68:[0,.7,.09371,0,.77443],69:[0,.7,.18583,0,.56162],70:[0,.7,.13634,0,.89544],71:[0,.7,.17322,0,.60961],72:[0,.7,.29694,0,.96919],73:[0,.7,.19189,0,.80907],74:[.27778,.7,.19189,0,1.05159],75:[0,.7,.31259,0,.91364],76:[0,.7,.19189,0,.87373],77:[0,.7,.15981,0,1.08031],78:[0,.7,.3525,0,.9015],79:[0,.7,.08078,0,.73787],80:[0,.7,.08078,0,1.01262],81:[0,.7,.03305,0,.88282],82:[0,.7,.06259,0,.85],83:[0,.7,.19189,0,.86767],84:[0,.7,.29087,0,.74697],85:[0,.7,.25815,0,.79996],86:[0,.7,.27523,0,.62204],87:[0,.7,.27523,0,.80532],88:[0,.7,.26006,0,.94445],89:[0,.7,.2939,0,.70961],90:[0,.7,.24037,0,.8212],160:[0,0,0,0,.25]},"Size1-Regular":{32:[0,0,0,0,.25],40:[.35001,.85,0,0,.45834],41:[.35001,.85,0,0,.45834],47:[.35001,.85,0,0,.57778],91:[.35001,.85,0,0,.41667],92:[.35001,.85,0,0,.57778],93:[.35001,.85,0,0,.41667],123:[.35001,.85,0,0,.58334],125:[.35001,.85,0,0,.58334],160:[0,0,0,0,.25],710:[0,.72222,0,0,.55556],732:[0,.72222,0,0,.55556],770:[0,.72222,0,0,.55556],771:[0,.72222,0,0,.55556],8214:[-99e-5,.601,0,0,.77778],8593:[1e-5,.6,0,0,.66667],8595:[1e-5,.6,0,0,.66667],8657:[1e-5,.6,0,0,.77778],8659:[1e-5,.6,0,0,.77778],8719:[.25001,.75,0,0,.94445],8720:[.25001,.75,0,0,.94445],8721:[.25001,.75,0,0,1.05556],8730:[.35001,.85,0,0,1],8739:[-.00599,.606,0,0,.33333],8741:[-.00599,.606,0,0,.55556],8747:[.30612,.805,.19445,0,.47222],8748:[.306,.805,.19445,0,.47222],8749:[.306,.805,.19445,0,.47222],8750:[.30612,.805,.19445,0,.47222],8896:[.25001,.75,0,0,.83334],8897:[.25001,.75,0,0,.83334],8898:[.25001,.75,0,0,.83334],8899:[.25001,.75,0,0,.83334],8968:[.35001,.85,0,0,.47222],8969:[.35001,.85,0,0,.47222],8970:[.35001,.85,0,0,.47222],8971:[.35001,.85,0,0,.47222],9168:[-99e-5,.601,0,0,.66667],10216:[.35001,.85,0,0,.47222],10217:[.35001,.85,0,0,.47222],10752:[.25001,.75,0,0,1.11111],10753:[.25001,.75,0,0,1.11111],10754:[.25001,.75,0,0,1.11111],10756:[.25001,.75,0,0,.83334],10758:[.25001,.75,0,0,.83334]},"Size2-Regular":{32:[0,0,0,0,.25],40:[.65002,1.15,0,0,.59722],41:[.65002,1.15,0,0,.59722],47:[.65002,1.15,0,0,.81111],91:[.65002,1.15,0,0,.47222],92:[.65002,1.15,0,0,.81111],93:[.65002,1.15,0,0,.47222],123:[.65002,1.15,0,0,.66667],125:[.65002,1.15,0,0,.66667],160:[0,0,0,0,.25],710:[0,.75,0,0,1],732:[0,.75,0,0,1],770:[0,.75,0,0,1],771:[0,.75,0,0,1],8719:[.55001,1.05,0,0,1.27778],8720:[.55001,1.05,0,0,1.27778],8721:[.55001,1.05,0,0,1.44445],8730:[.65002,1.15,0,0,1],8747:[.86225,1.36,.44445,0,.55556],8748:[.862,1.36,.44445,0,.55556],8749:[.862,1.36,.44445,0,.55556],8750:[.86225,1.36,.44445,0,.55556],8896:[.55001,1.05,0,0,1.11111],8897:[.55001,1.05,0,0,1.11111],8898:[.55001,1.05,0,0,1.11111],8899:[.55001,1.05,0,0,1.11111],8968:[.65002,1.15,0,0,.52778],8969:[.65002,1.15,0,0,.52778],8970:[.65002,1.15,0,0,.52778],8971:[.65002,1.15,0,0,.52778],10216:[.65002,1.15,0,0,.61111],10217:[.65002,1.15,0,0,.61111],10752:[.55001,1.05,0,0,1.51112],10753:[.55001,1.05,0,0,1.51112],10754:[.55001,1.05,0,0,1.51112],10756:[.55001,1.05,0,0,1.11111],10758:[.55001,1.05,0,0,1.11111]},"Size3-Regular":{32:[0,0,0,0,.25],40:[.95003,1.45,0,0,.73611],41:[.95003,1.45,0,0,.73611],47:[.95003,1.45,0,0,1.04445],91:[.95003,1.45,0,0,.52778],92:[.95003,1.45,0,0,1.04445],93:[.95003,1.45,0,0,.52778],123:[.95003,1.45,0,0,.75],125:[.95003,1.45,0,0,.75],160:[0,0,0,0,.25],710:[0,.75,0,0,1.44445],732:[0,.75,0,0,1.44445],770:[0,.75,0,0,1.44445],771:[0,.75,0,0,1.44445],8730:[.95003,1.45,0,0,1],8968:[.95003,1.45,0,0,.58334],8969:[.95003,1.45,0,0,.58334],8970:[.95003,1.45,0,0,.58334],8971:[.95003,1.45,0,0,.58334],10216:[.95003,1.45,0,0,.75],10217:[.95003,1.45,0,0,.75]},"Size4-Regular":{32:[0,0,0,0,.25],40:[1.25003,1.75,0,0,.79167],41:[1.25003,1.75,0,0,.79167],47:[1.25003,1.75,0,0,1.27778],91:[1.25003,1.75,0,0,.58334],92:[1.25003,1.75,0,0,1.27778],93:[1.25003,1.75,0,0,.58334],123:[1.25003,1.75,0,0,.80556],125:[1.25003,1.75,0,0,.80556],160:[0,0,0,0,.25],710:[0,.825,0,0,1.8889],732:[0,.825,0,0,1.8889],770:[0,.825,0,0,1.8889],771:[0,.825,0,0,1.8889],8730:[1.25003,1.75,0,0,1],8968:[1.25003,1.75,0,0,.63889],8969:[1.25003,1.75,0,0,.63889],8970:[1.25003,1.75,0,0,.63889],8971:[1.25003,1.75,0,0,.63889],9115:[.64502,1.155,0,0,.875],9116:[1e-5,.6,0,0,.875],9117:[.64502,1.155,0,0,.875],9118:[.64502,1.155,0,0,.875],9119:[1e-5,.6,0,0,.875],9120:[.64502,1.155,0,0,.875],9121:[.64502,1.155,0,0,.66667],9122:[-99e-5,.601,0,0,.66667],9123:[.64502,1.155,0,0,.66667],9124:[.64502,1.155,0,0,.66667],9125:[-99e-5,.601,0,0,.66667],9126:[.64502,1.155,0,0,.66667],9127:[1e-5,.9,0,0,.88889],9128:[.65002,1.15,0,0,.88889],9129:[.90001,0,0,0,.88889],9130:[0,.3,0,0,.88889],9131:[1e-5,.9,0,0,.88889],9132:[.65002,1.15,0,0,.88889],9133:[.90001,0,0,0,.88889],9143:[.88502,.915,0,0,1.05556],10216:[1.25003,1.75,0,0,.80556],10217:[1.25003,1.75,0,0,.80556],57344:[-.00499,.605,0,0,1.05556],57345:[-.00499,.605,0,0,1.05556],57680:[0,.12,0,0,.45],57681:[0,.12,0,0,.45],57682:[0,.12,0,0,.45],57683:[0,.12,0,0,.45]},"Typewriter-Regular":{32:[0,0,0,0,.525],33:[0,.61111,0,0,.525],34:[0,.61111,0,0,.525],35:[0,.61111,0,0,.525],36:[.08333,.69444,0,0,.525],37:[.08333,.69444,0,0,.525],38:[0,.61111,0,0,.525],39:[0,.61111,0,0,.525],40:[.08333,.69444,0,0,.525],41:[.08333,.69444,0,0,.525],42:[0,.52083,0,0,.525],43:[-.08056,.53055,0,0,.525],44:[.13889,.125,0,0,.525],45:[-.08056,.53055,0,0,.525],46:[0,.125,0,0,.525],47:[.08333,.69444,0,0,.525],48:[0,.61111,0,0,.525],49:[0,.61111,0,0,.525],50:[0,.61111,0,0,.525],51:[0,.61111,0,0,.525],52:[0,.61111,0,0,.525],53:[0,.61111,0,0,.525],54:[0,.61111,0,0,.525],55:[0,.61111,0,0,.525],56:[0,.61111,0,0,.525],57:[0,.61111,0,0,.525],58:[0,.43056,0,0,.525],59:[.13889,.43056,0,0,.525],60:[-.05556,.55556,0,0,.525],61:[-.19549,.41562,0,0,.525],62:[-.05556,.55556,0,0,.525],63:[0,.61111,0,0,.525],64:[0,.61111,0,0,.525],65:[0,.61111,0,0,.525],66:[0,.61111,0,0,.525],67:[0,.61111,0,0,.525],68:[0,.61111,0,0,.525],69:[0,.61111,0,0,.525],70:[0,.61111,0,0,.525],71:[0,.61111,0,0,.525],72:[0,.61111,0,0,.525],73:[0,.61111,0,0,.525],74:[0,.61111,0,0,.525],75:[0,.61111,0,0,.525],76:[0,.61111,0,0,.525],77:[0,.61111,0,0,.525],78:[0,.61111,0,0,.525],79:[0,.61111,0,0,.525],80:[0,.61111,0,0,.525],81:[.13889,.61111,0,0,.525],82:[0,.61111,0,0,.525],83:[0,.61111,0,0,.525],84:[0,.61111,0,0,.525],85:[0,.61111,0,0,.525],86:[0,.61111,0,0,.525],87:[0,.61111,0,0,.525],88:[0,.61111,0,0,.525],89:[0,.61111,0,0,.525],90:[0,.61111,0,0,.525],91:[.08333,.69444,0,0,.525],92:[.08333,.69444,0,0,.525],93:[.08333,.69444,0,0,.525],94:[0,.61111,0,0,.525],95:[.09514,0,0,0,.525],96:[0,.61111,0,0,.525],97:[0,.43056,0,0,.525],98:[0,.61111,0,0,.525],99:[0,.43056,0,0,.525],100:[0,.61111,0,0,.525],101:[0,.43056,0,0,.525],102:[0,.61111,0,0,.525],103:[.22222,.43056,0,0,.525],104:[0,.61111,0,0,.525],105:[0,.61111,0,0,.525],106:[.22222,.61111,0,0,.525],107:[0,.61111,0,0,.525],108:[0,.61111,0,0,.525],109:[0,.43056,0,0,.525],110:[0,.43056,0,0,.525],111:[0,.43056,0,0,.525],112:[.22222,.43056,0,0,.525],113:[.22222,.43056,0,0,.525],114:[0,.43056,0,0,.525],115:[0,.43056,0,0,.525],116:[0,.55358,0,0,.525],117:[0,.43056,0,0,.525],118:[0,.43056,0,0,.525],119:[0,.43056,0,0,.525],120:[0,.43056,0,0,.525],121:[.22222,.43056,0,0,.525],122:[0,.43056,0,0,.525],123:[.08333,.69444,0,0,.525],124:[.08333,.69444,0,0,.525],125:[.08333,.69444,0,0,.525],126:[0,.61111,0,0,.525],127:[0,.61111,0,0,.525],160:[0,0,0,0,.525],176:[0,.61111,0,0,.525],184:[.19445,0,0,0,.525],305:[0,.43056,0,0,.525],567:[.22222,.43056,0,0,.525],711:[0,.56597,0,0,.525],713:[0,.56555,0,0,.525],714:[0,.61111,0,0,.525],715:[0,.61111,0,0,.525],728:[0,.61111,0,0,.525],730:[0,.61111,0,0,.525],770:[0,.61111,0,0,.525],771:[0,.61111,0,0,.525],776:[0,.61111,0,0,.525],915:[0,.61111,0,0,.525],916:[0,.61111,0,0,.525],920:[0,.61111,0,0,.525],923:[0,.61111,0,0,.525],926:[0,.61111,0,0,.525],928:[0,.61111,0,0,.525],931:[0,.61111,0,0,.525],933:[0,.61111,0,0,.525],934:[0,.61111,0,0,.525],936:[0,.61111,0,0,.525],937:[0,.61111,0,0,.525],8216:[0,.61111,0,0,.525],8217:[0,.61111,0,0,.525],8242:[0,.61111,0,0,.525],9251:[.11111,.21944,0,0,.525]}},Mk={slant:[.25,.25,.25],space:[0,0,0],stretch:[0,0,0],shrink:[0,0,0],xHeight:[.431,.431,.431],quad:[1,1.171,1.472],extraSpace:[0,0,0],num1:[.677,.732,.925],num2:[.394,.384,.387],num3:[.444,.471,.504],denom1:[.686,.752,1.025],denom2:[.345,.344,.532],sup1:[.413,.503,.504],sup2:[.363,.431,.404],sup3:[.289,.286,.294],sub1:[.15,.143,.2],sub2:[.247,.286,.4],supDrop:[.386,.353,.494],subDrop:[.05,.071,.1],delim1:[2.39,1.7,1.98],delim2:[1.01,1.157,1.42],axisHeight:[.25,.25,.25],defaultRuleThickness:[.04,.049,.049],bigOpSpacing1:[.111,.111,.111],bigOpSpacing2:[.166,.166,.166],bigOpSpacing3:[.2,.2,.2],bigOpSpacing4:[.6,.611,.611],bigOpSpacing5:[.1,.143,.143],sqrtRuleThickness:[.04,.04,.04],ptPerEm:[10,10,10],doubleRuleSep:[.2,.2,.2],arrayRuleWidth:[.04,.04,.04],fboxsep:[.3,.3,.3],fboxrule:[.04,.04,.04]},CZ={\u00C5:"A",\u00D0:"D",\u00DE:"o",\u00E5:"a",\u00F0:"d",\u00FE:"o",\u0410:"A",\u0411:"B",\u0412:"B",\u0413:"F",\u0414:"A",\u0415:"E",\u0416:"K",\u0417:"3",\u0418:"N",\u0419:"N",\u041A:"K",\u041B:"N",\u041C:"M",\u041D:"H",\u041E:"O",\u041F:"N",\u0420:"P",\u0421:"C",\u0422:"T",\u0423:"y",\u0424:"O",\u0425:"X",\u0426:"U",\u0427:"h",\u0428:"W",\u0429:"W",\u042A:"B",\u042B:"X",\u042C:"B",\u042D:"3",\u042E:"X",\u042F:"R",\u0430:"a",\u0431:"b",\u0432:"a",\u0433:"r",\u0434:"y",\u0435:"e",\u0436:"m",\u0437:"e",\u0438:"n",\u0439:"n",\u043A:"n",\u043B:"n",\u043C:"m",\u043D:"n",\u043E:"o",\u043F:"n",\u0440:"p",\u0441:"c",\u0442:"o",\u0443:"y",\u0444:"b",\u0445:"x",\u0446:"n",\u0447:"n",\u0448:"w",\u0449:"w",\u044A:"a",\u044B:"m",\u044C:"a",\u044D:"e",\u044E:"m",\u044F:"r"};o(tQ,"setFontMetrics");o(X7,"getCharacterMetrics");v7={};o(BGe,"getGlobalMetrics");$Ge={bin:1,close:1,inner:1,open:1,punct:1,rel:1},FGe={"accent-token":1,mathord:1,"op-token":1,spacing:1,textord:1},ui={math:{},text:{}};o(Y,"defineSymbol");ee="math",Lt="text",pe="main",ze="ams",hi="accent-token",jt="bin",ks="close",Q0="inner",xr="mathord",Hi="op-token",No="open",ib="punct",Ve="rel",ah="spacing",Ue="textord";Y(ee,pe,Ve,"\u2261","\\equiv",!0);Y(ee,pe,Ve,"\u227A","\\prec",!0);Y(ee,pe,Ve,"\u227B","\\succ",!0);Y(ee,pe,Ve,"\u223C","\\sim",!0);Y(ee,pe,Ve,"\u22A5","\\perp");Y(ee,pe,Ve,"\u2AAF","\\preceq",!0);Y(ee,pe,Ve,"\u2AB0","\\succeq",!0);Y(ee,pe,Ve,"\u2243","\\simeq",!0);Y(ee,pe,Ve,"\u2223","\\mid",!0);Y(ee,pe,Ve,"\u226A","\\ll",!0);Y(ee,pe,Ve,"\u226B","\\gg",!0);Y(ee,pe,Ve,"\u224D","\\asymp",!0);Y(ee,pe,Ve,"\u2225","\\parallel");Y(ee,pe,Ve,"\u22C8","\\bowtie",!0);Y(ee,pe,Ve,"\u2323","\\smile",!0);Y(ee,pe,Ve,"\u2291","\\sqsubseteq",!0);Y(ee,pe,Ve,"\u2292","\\sqsupseteq",!0);Y(ee,pe,Ve,"\u2250","\\doteq",!0);Y(ee,pe,Ve,"\u2322","\\frown",!0);Y(ee,pe,Ve,"\u220B","\\ni",!0);Y(ee,pe,Ve,"\u221D","\\propto",!0);Y(ee,pe,Ve,"\u22A2","\\vdash",!0);Y(ee,pe,Ve,"\u22A3","\\dashv",!0);Y(ee,pe,Ve,"\u220B","\\owns");Y(ee,pe,ib,".","\\ldotp");Y(ee,pe,ib,"\u22C5","\\cdotp");Y(ee,pe,ib,"\u22C5","\xB7");Y(Lt,pe,Ue,"\u22C5","\xB7");Y(ee,pe,Ue,"#","\\#");Y(Lt,pe,Ue,"#","\\#");Y(ee,pe,Ue,"&","\\&");Y(Lt,pe,Ue,"&","\\&");Y(ee,pe,Ue,"\u2135","\\aleph",!0);Y(ee,pe,Ue,"\u2200","\\forall",!0);Y(ee,pe,Ue,"\u210F","\\hbar",!0);Y(ee,pe,Ue,"\u2203","\\exists",!0);Y(ee,pe,Ue,"\u2207","\\nabla",!0);Y(ee,pe,Ue,"\u266D","\\flat",!0);Y(ee,pe,Ue,"\u2113","\\ell",!0);Y(ee,pe,Ue,"\u266E","\\natural",!0);Y(ee,pe,Ue,"\u2663","\\clubsuit",!0);Y(ee,pe,Ue,"\u2118","\\wp",!0);Y(ee,pe,Ue,"\u266F","\\sharp",!0);Y(ee,pe,Ue,"\u2662","\\diamondsuit",!0);Y(ee,pe,Ue,"\u211C","\\Re",!0);Y(ee,pe,Ue,"\u2661","\\heartsuit",!0);Y(ee,pe,Ue,"\u2111","\\Im",!0);Y(ee,pe,Ue,"\u2660","\\spadesuit",!0);Y(ee,pe,Ue,"\xA7","\\S",!0);Y(Lt,pe,Ue,"\xA7","\\S");Y(ee,pe,Ue,"\xB6","\\P",!0);Y(Lt,pe,Ue,"\xB6","\\P");Y(ee,pe,Ue,"\u2020","\\dag");Y(Lt,pe,Ue,"\u2020","\\dag");Y(Lt,pe,Ue,"\u2020","\\textdagger");Y(ee,pe,Ue,"\u2021","\\ddag");Y(Lt,pe,Ue,"\u2021","\\ddag");Y(Lt,pe,Ue,"\u2021","\\textdaggerdbl");Y(ee,pe,ks,"\u23B1","\\rmoustache",!0);Y(ee,pe,No,"\u23B0","\\lmoustache",!0);Y(ee,pe,ks,"\u27EF","\\rgroup",!0);Y(ee,pe,No,"\u27EE","\\lgroup",!0);Y(ee,pe,jt,"\u2213","\\mp",!0);Y(ee,pe,jt,"\u2296","\\ominus",!0);Y(ee,pe,jt,"\u228E","\\uplus",!0);Y(ee,pe,jt,"\u2293","\\sqcap",!0);Y(ee,pe,jt,"\u2217","\\ast");Y(ee,pe,jt,"\u2294","\\sqcup",!0);Y(ee,pe,jt,"\u25EF","\\bigcirc",!0);Y(ee,pe,jt,"\u2219","\\bullet",!0);Y(ee,pe,jt,"\u2021","\\ddagger");Y(ee,pe,jt,"\u2240","\\wr",!0);Y(ee,pe,jt,"\u2A3F","\\amalg");Y(ee,pe,jt,"&","\\And");Y(ee,pe,Ve,"\u27F5","\\longleftarrow",!0);Y(ee,pe,Ve,"\u21D0","\\Leftarrow",!0);Y(ee,pe,Ve,"\u27F8","\\Longleftarrow",!0);Y(ee,pe,Ve,"\u27F6","\\longrightarrow",!0);Y(ee,pe,Ve,"\u21D2","\\Rightarrow",!0);Y(ee,pe,Ve,"\u27F9","\\Longrightarrow",!0);Y(ee,pe,Ve,"\u2194","\\leftrightarrow",!0);Y(ee,pe,Ve,"\u27F7","\\longleftrightarrow",!0);Y(ee,pe,Ve,"\u21D4","\\Leftrightarrow",!0);Y(ee,pe,Ve,"\u27FA","\\Longleftrightarrow",!0);Y(ee,pe,Ve,"\u21A6","\\mapsto",!0);Y(ee,pe,Ve,"\u27FC","\\longmapsto",!0);Y(ee,pe,Ve,"\u2197","\\nearrow",!0);Y(ee,pe,Ve,"\u21A9","\\hookleftarrow",!0);Y(ee,pe,Ve,"\u21AA","\\hookrightarrow",!0);Y(ee,pe,Ve,"\u2198","\\searrow",!0);Y(ee,pe,Ve,"\u21BC","\\leftharpoonup",!0);Y(ee,pe,Ve,"\u21C0","\\rightharpoonup",!0);Y(ee,pe,Ve,"\u2199","\\swarrow",!0);Y(ee,pe,Ve,"\u21BD","\\leftharpoondown",!0);Y(ee,pe,Ve,"\u21C1","\\rightharpoondown",!0);Y(ee,pe,Ve,"\u2196","\\nwarrow",!0);Y(ee,pe,Ve,"\u21CC","\\rightleftharpoons",!0);Y(ee,ze,Ve,"\u226E","\\nless",!0);Y(ee,ze,Ve,"\uE010","\\@nleqslant");Y(ee,ze,Ve,"\uE011","\\@nleqq");Y(ee,ze,Ve,"\u2A87","\\lneq",!0);Y(ee,ze,Ve,"\u2268","\\lneqq",!0);Y(ee,ze,Ve,"\uE00C","\\@lvertneqq");Y(ee,ze,Ve,"\u22E6","\\lnsim",!0);Y(ee,ze,Ve,"\u2A89","\\lnapprox",!0);Y(ee,ze,Ve,"\u2280","\\nprec",!0);Y(ee,ze,Ve,"\u22E0","\\npreceq",!0);Y(ee,ze,Ve,"\u22E8","\\precnsim",!0);Y(ee,ze,Ve,"\u2AB9","\\precnapprox",!0);Y(ee,ze,Ve,"\u2241","\\nsim",!0);Y(ee,ze,Ve,"\uE006","\\@nshortmid");Y(ee,ze,Ve,"\u2224","\\nmid",!0);Y(ee,ze,Ve,"\u22AC","\\nvdash",!0);Y(ee,ze,Ve,"\u22AD","\\nvDash",!0);Y(ee,ze,Ve,"\u22EA","\\ntriangleleft");Y(ee,ze,Ve,"\u22EC","\\ntrianglelefteq",!0);Y(ee,ze,Ve,"\u228A","\\subsetneq",!0);Y(ee,ze,Ve,"\uE01A","\\@varsubsetneq");Y(ee,ze,Ve,"\u2ACB","\\subsetneqq",!0);Y(ee,ze,Ve,"\uE017","\\@varsubsetneqq");Y(ee,ze,Ve,"\u226F","\\ngtr",!0);Y(ee,ze,Ve,"\uE00F","\\@ngeqslant");Y(ee,ze,Ve,"\uE00E","\\@ngeqq");Y(ee,ze,Ve,"\u2A88","\\gneq",!0);Y(ee,ze,Ve,"\u2269","\\gneqq",!0);Y(ee,ze,Ve,"\uE00D","\\@gvertneqq");Y(ee,ze,Ve,"\u22E7","\\gnsim",!0);Y(ee,ze,Ve,"\u2A8A","\\gnapprox",!0);Y(ee,ze,Ve,"\u2281","\\nsucc",!0);Y(ee,ze,Ve,"\u22E1","\\nsucceq",!0);Y(ee,ze,Ve,"\u22E9","\\succnsim",!0);Y(ee,ze,Ve,"\u2ABA","\\succnapprox",!0);Y(ee,ze,Ve,"\u2246","\\ncong",!0);Y(ee,ze,Ve,"\uE007","\\@nshortparallel");Y(ee,ze,Ve,"\u2226","\\nparallel",!0);Y(ee,ze,Ve,"\u22AF","\\nVDash",!0);Y(ee,ze,Ve,"\u22EB","\\ntriangleright");Y(ee,ze,Ve,"\u22ED","\\ntrianglerighteq",!0);Y(ee,ze,Ve,"\uE018","\\@nsupseteqq");Y(ee,ze,Ve,"\u228B","\\supsetneq",!0);Y(ee,ze,Ve,"\uE01B","\\@varsupsetneq");Y(ee,ze,Ve,"\u2ACC","\\supsetneqq",!0);Y(ee,ze,Ve,"\uE019","\\@varsupsetneqq");Y(ee,ze,Ve,"\u22AE","\\nVdash",!0);Y(ee,ze,Ve,"\u2AB5","\\precneqq",!0);Y(ee,ze,Ve,"\u2AB6","\\succneqq",!0);Y(ee,ze,Ve,"\uE016","\\@nsubseteqq");Y(ee,ze,jt,"\u22B4","\\unlhd");Y(ee,ze,jt,"\u22B5","\\unrhd");Y(ee,ze,Ve,"\u219A","\\nleftarrow",!0);Y(ee,ze,Ve,"\u219B","\\nrightarrow",!0);Y(ee,ze,Ve,"\u21CD","\\nLeftarrow",!0);Y(ee,ze,Ve,"\u21CF","\\nRightarrow",!0);Y(ee,ze,Ve,"\u21AE","\\nleftrightarrow",!0);Y(ee,ze,Ve,"\u21CE","\\nLeftrightarrow",!0);Y(ee,ze,Ve,"\u25B3","\\vartriangle");Y(ee,ze,Ue,"\u210F","\\hslash");Y(ee,ze,Ue,"\u25BD","\\triangledown");Y(ee,ze,Ue,"\u25CA","\\lozenge");Y(ee,ze,Ue,"\u24C8","\\circledS");Y(ee,ze,Ue,"\xAE","\\circledR");Y(Lt,ze,Ue,"\xAE","\\circledR");Y(ee,ze,Ue,"\u2221","\\measuredangle",!0);Y(ee,ze,Ue,"\u2204","\\nexists");Y(ee,ze,Ue,"\u2127","\\mho");Y(ee,ze,Ue,"\u2132","\\Finv",!0);Y(ee,ze,Ue,"\u2141","\\Game",!0);Y(ee,ze,Ue,"\u2035","\\backprime");Y(ee,ze,Ue,"\u25B2","\\blacktriangle");Y(ee,ze,Ue,"\u25BC","\\blacktriangledown");Y(ee,ze,Ue,"\u25A0","\\blacksquare");Y(ee,ze,Ue,"\u29EB","\\blacklozenge");Y(ee,ze,Ue,"\u2605","\\bigstar");Y(ee,ze,Ue,"\u2222","\\sphericalangle",!0);Y(ee,ze,Ue,"\u2201","\\complement",!0);Y(ee,ze,Ue,"\xF0","\\eth",!0);Y(Lt,pe,Ue,"\xF0","\xF0");Y(ee,ze,Ue,"\u2571","\\diagup");Y(ee,ze,Ue,"\u2572","\\diagdown");Y(ee,ze,Ue,"\u25A1","\\square");Y(ee,ze,Ue,"\u25A1","\\Box");Y(ee,ze,Ue,"\u25CA","\\Diamond");Y(ee,ze,Ue,"\xA5","\\yen",!0);Y(Lt,ze,Ue,"\xA5","\\yen",!0);Y(ee,ze,Ue,"\u2713","\\checkmark",!0);Y(Lt,ze,Ue,"\u2713","\\checkmark");Y(ee,ze,Ue,"\u2136","\\beth",!0);Y(ee,ze,Ue,"\u2138","\\daleth",!0);Y(ee,ze,Ue,"\u2137","\\gimel",!0);Y(ee,ze,Ue,"\u03DD","\\digamma",!0);Y(ee,ze,Ue,"\u03F0","\\varkappa");Y(ee,ze,No,"\u250C","\\@ulcorner",!0);Y(ee,ze,ks,"\u2510","\\@urcorner",!0);Y(ee,ze,No,"\u2514","\\@llcorner",!0);Y(ee,ze,ks,"\u2518","\\@lrcorner",!0);Y(ee,ze,Ve,"\u2266","\\leqq",!0);Y(ee,ze,Ve,"\u2A7D","\\leqslant",!0);Y(ee,ze,Ve,"\u2A95","\\eqslantless",!0);Y(ee,ze,Ve,"\u2272","\\lesssim",!0);Y(ee,ze,Ve,"\u2A85","\\lessapprox",!0);Y(ee,ze,Ve,"\u224A","\\approxeq",!0);Y(ee,ze,jt,"\u22D6","\\lessdot");Y(ee,ze,Ve,"\u22D8","\\lll",!0);Y(ee,ze,Ve,"\u2276","\\lessgtr",!0);Y(ee,ze,Ve,"\u22DA","\\lesseqgtr",!0);Y(ee,ze,Ve,"\u2A8B","\\lesseqqgtr",!0);Y(ee,ze,Ve,"\u2251","\\doteqdot");Y(ee,ze,Ve,"\u2253","\\risingdotseq",!0);Y(ee,ze,Ve,"\u2252","\\fallingdotseq",!0);Y(ee,ze,Ve,"\u223D","\\backsim",!0);Y(ee,ze,Ve,"\u22CD","\\backsimeq",!0);Y(ee,ze,Ve,"\u2AC5","\\subseteqq",!0);Y(ee,ze,Ve,"\u22D0","\\Subset",!0);Y(ee,ze,Ve,"\u228F","\\sqsubset",!0);Y(ee,ze,Ve,"\u227C","\\preccurlyeq",!0);Y(ee,ze,Ve,"\u22DE","\\curlyeqprec",!0);Y(ee,ze,Ve,"\u227E","\\precsim",!0);Y(ee,ze,Ve,"\u2AB7","\\precapprox",!0);Y(ee,ze,Ve,"\u22B2","\\vartriangleleft");Y(ee,ze,Ve,"\u22B4","\\trianglelefteq");Y(ee,ze,Ve,"\u22A8","\\vDash",!0);Y(ee,ze,Ve,"\u22AA","\\Vvdash",!0);Y(ee,ze,Ve,"\u2323","\\smallsmile");Y(ee,ze,Ve,"\u2322","\\smallfrown");Y(ee,ze,Ve,"\u224F","\\bumpeq",!0);Y(ee,ze,Ve,"\u224E","\\Bumpeq",!0);Y(ee,ze,Ve,"\u2267","\\geqq",!0);Y(ee,ze,Ve,"\u2A7E","\\geqslant",!0);Y(ee,ze,Ve,"\u2A96","\\eqslantgtr",!0);Y(ee,ze,Ve,"\u2273","\\gtrsim",!0);Y(ee,ze,Ve,"\u2A86","\\gtrapprox",!0);Y(ee,ze,jt,"\u22D7","\\gtrdot");Y(ee,ze,Ve,"\u22D9","\\ggg",!0);Y(ee,ze,Ve,"\u2277","\\gtrless",!0);Y(ee,ze,Ve,"\u22DB","\\gtreqless",!0);Y(ee,ze,Ve,"\u2A8C","\\gtreqqless",!0);Y(ee,ze,Ve,"\u2256","\\eqcirc",!0);Y(ee,ze,Ve,"\u2257","\\circeq",!0);Y(ee,ze,Ve,"\u225C","\\triangleq",!0);Y(ee,ze,Ve,"\u223C","\\thicksim");Y(ee,ze,Ve,"\u2248","\\thickapprox");Y(ee,ze,Ve,"\u2AC6","\\supseteqq",!0);Y(ee,ze,Ve,"\u22D1","\\Supset",!0);Y(ee,ze,Ve,"\u2290","\\sqsupset",!0);Y(ee,ze,Ve,"\u227D","\\succcurlyeq",!0);Y(ee,ze,Ve,"\u22DF","\\curlyeqsucc",!0);Y(ee,ze,Ve,"\u227F","\\succsim",!0);Y(ee,ze,Ve,"\u2AB8","\\succapprox",!0);Y(ee,ze,Ve,"\u22B3","\\vartriangleright");Y(ee,ze,Ve,"\u22B5","\\trianglerighteq");Y(ee,ze,Ve,"\u22A9","\\Vdash",!0);Y(ee,ze,Ve,"\u2223","\\shortmid");Y(ee,ze,Ve,"\u2225","\\shortparallel");Y(ee,ze,Ve,"\u226C","\\between",!0);Y(ee,ze,Ve,"\u22D4","\\pitchfork",!0);Y(ee,ze,Ve,"\u221D","\\varpropto");Y(ee,ze,Ve,"\u25C0","\\blacktriangleleft");Y(ee,ze,Ve,"\u2234","\\therefore",!0);Y(ee,ze,Ve,"\u220D","\\backepsilon");Y(ee,ze,Ve,"\u25B6","\\blacktriangleright");Y(ee,ze,Ve,"\u2235","\\because",!0);Y(ee,ze,Ve,"\u22D8","\\llless");Y(ee,ze,Ve,"\u22D9","\\gggtr");Y(ee,ze,jt,"\u22B2","\\lhd");Y(ee,ze,jt,"\u22B3","\\rhd");Y(ee,ze,Ve,"\u2242","\\eqsim",!0);Y(ee,pe,Ve,"\u22C8","\\Join");Y(ee,ze,Ve,"\u2251","\\Doteq",!0);Y(ee,ze,jt,"\u2214","\\dotplus",!0);Y(ee,ze,jt,"\u2216","\\smallsetminus");Y(ee,ze,jt,"\u22D2","\\Cap",!0);Y(ee,ze,jt,"\u22D3","\\Cup",!0);Y(ee,ze,jt,"\u2A5E","\\doublebarwedge",!0);Y(ee,ze,jt,"\u229F","\\boxminus",!0);Y(ee,ze,jt,"\u229E","\\boxplus",!0);Y(ee,ze,jt,"\u22C7","\\divideontimes",!0);Y(ee,ze,jt,"\u22C9","\\ltimes",!0);Y(ee,ze,jt,"\u22CA","\\rtimes",!0);Y(ee,ze,jt,"\u22CB","\\leftthreetimes",!0);Y(ee,ze,jt,"\u22CC","\\rightthreetimes",!0);Y(ee,ze,jt,"\u22CF","\\curlywedge",!0);Y(ee,ze,jt,"\u22CE","\\curlyvee",!0);Y(ee,ze,jt,"\u229D","\\circleddash",!0);Y(ee,ze,jt,"\u229B","\\circledast",!0);Y(ee,ze,jt,"\u22C5","\\centerdot");Y(ee,ze,jt,"\u22BA","\\intercal",!0);Y(ee,ze,jt,"\u22D2","\\doublecap");Y(ee,ze,jt,"\u22D3","\\doublecup");Y(ee,ze,jt,"\u22A0","\\boxtimes",!0);Y(ee,ze,Ve,"\u21E2","\\dashrightarrow",!0);Y(ee,ze,Ve,"\u21E0","\\dashleftarrow",!0);Y(ee,ze,Ve,"\u21C7","\\leftleftarrows",!0);Y(ee,ze,Ve,"\u21C6","\\leftrightarrows",!0);Y(ee,ze,Ve,"\u21DA","\\Lleftarrow",!0);Y(ee,ze,Ve,"\u219E","\\twoheadleftarrow",!0);Y(ee,ze,Ve,"\u21A2","\\leftarrowtail",!0);Y(ee,ze,Ve,"\u21AB","\\looparrowleft",!0);Y(ee,ze,Ve,"\u21CB","\\leftrightharpoons",!0);Y(ee,ze,Ve,"\u21B6","\\curvearrowleft",!0);Y(ee,ze,Ve,"\u21BA","\\circlearrowleft",!0);Y(ee,ze,Ve,"\u21B0","\\Lsh",!0);Y(ee,ze,Ve,"\u21C8","\\upuparrows",!0);Y(ee,ze,Ve,"\u21BF","\\upharpoonleft",!0);Y(ee,ze,Ve,"\u21C3","\\downharpoonleft",!0);Y(ee,pe,Ve,"\u22B6","\\origof",!0);Y(ee,pe,Ve,"\u22B7","\\imageof",!0);Y(ee,ze,Ve,"\u22B8","\\multimap",!0);Y(ee,ze,Ve,"\u21AD","\\leftrightsquigarrow",!0);Y(ee,ze,Ve,"\u21C9","\\rightrightarrows",!0);Y(ee,ze,Ve,"\u21C4","\\rightleftarrows",!0);Y(ee,ze,Ve,"\u21A0","\\twoheadrightarrow",!0);Y(ee,ze,Ve,"\u21A3","\\rightarrowtail",!0);Y(ee,ze,Ve,"\u21AC","\\looparrowright",!0);Y(ee,ze,Ve,"\u21B7","\\curvearrowright",!0);Y(ee,ze,Ve,"\u21BB","\\circlearrowright",!0);Y(ee,ze,Ve,"\u21B1","\\Rsh",!0);Y(ee,ze,Ve,"\u21CA","\\downdownarrows",!0);Y(ee,ze,Ve,"\u21BE","\\upharpoonright",!0);Y(ee,ze,Ve,"\u21C2","\\downharpoonright",!0);Y(ee,ze,Ve,"\u21DD","\\rightsquigarrow",!0);Y(ee,ze,Ve,"\u21DD","\\leadsto");Y(ee,ze,Ve,"\u21DB","\\Rrightarrow",!0);Y(ee,ze,Ve,"\u21BE","\\restriction");Y(ee,pe,Ue,"\u2018","`");Y(ee,pe,Ue,"$","\\$");Y(Lt,pe,Ue,"$","\\$");Y(Lt,pe,Ue,"$","\\textdollar");Y(ee,pe,Ue,"%","\\%");Y(Lt,pe,Ue,"%","\\%");Y(ee,pe,Ue,"_","\\_");Y(Lt,pe,Ue,"_","\\_");Y(Lt,pe,Ue,"_","\\textunderscore");Y(ee,pe,Ue,"\u2220","\\angle",!0);Y(ee,pe,Ue,"\u221E","\\infty",!0);Y(ee,pe,Ue,"\u2032","\\prime");Y(ee,pe,Ue,"\u25B3","\\triangle");Y(ee,pe,Ue,"\u0393","\\Gamma",!0);Y(ee,pe,Ue,"\u0394","\\Delta",!0);Y(ee,pe,Ue,"\u0398","\\Theta",!0);Y(ee,pe,Ue,"\u039B","\\Lambda",!0);Y(ee,pe,Ue,"\u039E","\\Xi",!0);Y(ee,pe,Ue,"\u03A0","\\Pi",!0);Y(ee,pe,Ue,"\u03A3","\\Sigma",!0);Y(ee,pe,Ue,"\u03A5","\\Upsilon",!0);Y(ee,pe,Ue,"\u03A6","\\Phi",!0);Y(ee,pe,Ue,"\u03A8","\\Psi",!0);Y(ee,pe,Ue,"\u03A9","\\Omega",!0);Y(ee,pe,Ue,"A","\u0391");Y(ee,pe,Ue,"B","\u0392");Y(ee,pe,Ue,"E","\u0395");Y(ee,pe,Ue,"Z","\u0396");Y(ee,pe,Ue,"H","\u0397");Y(ee,pe,Ue,"I","\u0399");Y(ee,pe,Ue,"K","\u039A");Y(ee,pe,Ue,"M","\u039C");Y(ee,pe,Ue,"N","\u039D");Y(ee,pe,Ue,"O","\u039F");Y(ee,pe,Ue,"P","\u03A1");Y(ee,pe,Ue,"T","\u03A4");Y(ee,pe,Ue,"X","\u03A7");Y(ee,pe,Ue,"\xAC","\\neg",!0);Y(ee,pe,Ue,"\xAC","\\lnot");Y(ee,pe,Ue,"\u22A4","\\top");Y(ee,pe,Ue,"\u22A5","\\bot");Y(ee,pe,Ue,"\u2205","\\emptyset");Y(ee,ze,Ue,"\u2205","\\varnothing");Y(ee,pe,xr,"\u03B1","\\alpha",!0);Y(ee,pe,xr,"\u03B2","\\beta",!0);Y(ee,pe,xr,"\u03B3","\\gamma",!0);Y(ee,pe,xr,"\u03B4","\\delta",!0);Y(ee,pe,xr,"\u03F5","\\epsilon",!0);Y(ee,pe,xr,"\u03B6","\\zeta",!0);Y(ee,pe,xr,"\u03B7","\\eta",!0);Y(ee,pe,xr,"\u03B8","\\theta",!0);Y(ee,pe,xr,"\u03B9","\\iota",!0);Y(ee,pe,xr,"\u03BA","\\kappa",!0);Y(ee,pe,xr,"\u03BB","\\lambda",!0);Y(ee,pe,xr,"\u03BC","\\mu",!0);Y(ee,pe,xr,"\u03BD","\\nu",!0);Y(ee,pe,xr,"\u03BE","\\xi",!0);Y(ee,pe,xr,"\u03BF","\\omicron",!0);Y(ee,pe,xr,"\u03C0","\\pi",!0);Y(ee,pe,xr,"\u03C1","\\rho",!0);Y(ee,pe,xr,"\u03C3","\\sigma",!0);Y(ee,pe,xr,"\u03C4","\\tau",!0);Y(ee,pe,xr,"\u03C5","\\upsilon",!0);Y(ee,pe,xr,"\u03D5","\\phi",!0);Y(ee,pe,xr,"\u03C7","\\chi",!0);Y(ee,pe,xr,"\u03C8","\\psi",!0);Y(ee,pe,xr,"\u03C9","\\omega",!0);Y(ee,pe,xr,"\u03B5","\\varepsilon",!0);Y(ee,pe,xr,"\u03D1","\\vartheta",!0);Y(ee,pe,xr,"\u03D6","\\varpi",!0);Y(ee,pe,xr,"\u03F1","\\varrho",!0);Y(ee,pe,xr,"\u03C2","\\varsigma",!0);Y(ee,pe,xr,"\u03C6","\\varphi",!0);Y(ee,pe,jt,"\u2217","*",!0);Y(ee,pe,jt,"+","+");Y(ee,pe,jt,"\u2212","-",!0);Y(ee,pe,jt,"\u22C5","\\cdot",!0);Y(ee,pe,jt,"\u2218","\\circ",!0);Y(ee,pe,jt,"\xF7","\\div",!0);Y(ee,pe,jt,"\xB1","\\pm",!0);Y(ee,pe,jt,"\xD7","\\times",!0);Y(ee,pe,jt,"\u2229","\\cap",!0);Y(ee,pe,jt,"\u222A","\\cup",!0);Y(ee,pe,jt,"\u2216","\\setminus",!0);Y(ee,pe,jt,"\u2227","\\land");Y(ee,pe,jt,"\u2228","\\lor");Y(ee,pe,jt,"\u2227","\\wedge",!0);Y(ee,pe,jt,"\u2228","\\vee",!0);Y(ee,pe,Ue,"\u221A","\\surd");Y(ee,pe,No,"\u27E8","\\langle",!0);Y(ee,pe,No,"\u2223","\\lvert");Y(ee,pe,No,"\u2225","\\lVert");Y(ee,pe,ks,"?","?");Y(ee,pe,ks,"!","!");Y(ee,pe,ks,"\u27E9","\\rangle",!0);Y(ee,pe,ks,"\u2223","\\rvert");Y(ee,pe,ks,"\u2225","\\rVert");Y(ee,pe,Ve,"=","=");Y(ee,pe,Ve,":",":");Y(ee,pe,Ve,"\u2248","\\approx",!0);Y(ee,pe,Ve,"\u2245","\\cong",!0);Y(ee,pe,Ve,"\u2265","\\ge");Y(ee,pe,Ve,"\u2265","\\geq",!0);Y(ee,pe,Ve,"\u2190","\\gets");Y(ee,pe,Ve,">","\\gt",!0);Y(ee,pe,Ve,"\u2208","\\in",!0);Y(ee,pe,Ve,"\uE020","\\@not");Y(ee,pe,Ve,"\u2282","\\subset",!0);Y(ee,pe,Ve,"\u2283","\\supset",!0);Y(ee,pe,Ve,"\u2286","\\subseteq",!0);Y(ee,pe,Ve,"\u2287","\\supseteq",!0);Y(ee,ze,Ve,"\u2288","\\nsubseteq",!0);Y(ee,ze,Ve,"\u2289","\\nsupseteq",!0);Y(ee,pe,Ve,"\u22A8","\\models");Y(ee,pe,Ve,"\u2190","\\leftarrow",!0);Y(ee,pe,Ve,"\u2264","\\le");Y(ee,pe,Ve,"\u2264","\\leq",!0);Y(ee,pe,Ve,"<","\\lt",!0);Y(ee,pe,Ve,"\u2192","\\rightarrow",!0);Y(ee,pe,Ve,"\u2192","\\to");Y(ee,ze,Ve,"\u2271","\\ngeq",!0);Y(ee,ze,Ve,"\u2270","\\nleq",!0);Y(ee,pe,ah,"\xA0","\\ ");Y(ee,pe,ah,"\xA0","\\space");Y(ee,pe,ah,"\xA0","\\nobreakspace");Y(Lt,pe,ah,"\xA0","\\ ");Y(Lt,pe,ah,"\xA0"," ");Y(Lt,pe,ah,"\xA0","\\space");Y(Lt,pe,ah,"\xA0","\\nobreakspace");Y(ee,pe,ah,null,"\\nobreak");Y(ee,pe,ah,null,"\\allowbreak");Y(ee,pe,ib,",",",");Y(ee,pe,ib,";",";");Y(ee,ze,jt,"\u22BC","\\barwedge",!0);Y(ee,ze,jt,"\u22BB","\\veebar",!0);Y(ee,pe,jt,"\u2299","\\odot",!0);Y(ee,pe,jt,"\u2295","\\oplus",!0);Y(ee,pe,jt,"\u2297","\\otimes",!0);Y(ee,pe,Ue,"\u2202","\\partial",!0);Y(ee,pe,jt,"\u2298","\\oslash",!0);Y(ee,ze,jt,"\u229A","\\circledcirc",!0);Y(ee,ze,jt,"\u22A1","\\boxdot",!0);Y(ee,pe,jt,"\u25B3","\\bigtriangleup");Y(ee,pe,jt,"\u25BD","\\bigtriangledown");Y(ee,pe,jt,"\u2020","\\dagger");Y(ee,pe,jt,"\u22C4","\\diamond");Y(ee,pe,jt,"\u22C6","\\star");Y(ee,pe,jt,"\u25C3","\\triangleleft");Y(ee,pe,jt,"\u25B9","\\triangleright");Y(ee,pe,No,"{","\\{");Y(Lt,pe,Ue,"{","\\{");Y(Lt,pe,Ue,"{","\\textbraceleft");Y(ee,pe,ks,"}","\\}");Y(Lt,pe,Ue,"}","\\}");Y(Lt,pe,Ue,"}","\\textbraceright");Y(ee,pe,No,"{","\\lbrace");Y(ee,pe,ks,"}","\\rbrace");Y(ee,pe,No,"[","\\lbrack",!0);Y(Lt,pe,Ue,"[","\\lbrack",!0);Y(ee,pe,ks,"]","\\rbrack",!0);Y(Lt,pe,Ue,"]","\\rbrack",!0);Y(ee,pe,No,"(","\\lparen",!0);Y(ee,pe,ks,")","\\rparen",!0);Y(Lt,pe,Ue,"<","\\textless",!0);Y(Lt,pe,Ue,">","\\textgreater",!0);Y(ee,pe,No,"\u230A","\\lfloor",!0);Y(ee,pe,ks,"\u230B","\\rfloor",!0);Y(ee,pe,No,"\u2308","\\lceil",!0);Y(ee,pe,ks,"\u2309","\\rceil",!0);Y(ee,pe,Ue,"\\","\\backslash");Y(ee,pe,Ue,"\u2223","|");Y(ee,pe,Ue,"\u2223","\\vert");Y(Lt,pe,Ue,"|","\\textbar",!0);Y(ee,pe,Ue,"\u2225","\\|");Y(ee,pe,Ue,"\u2225","\\Vert");Y(Lt,pe,Ue,"\u2225","\\textbardbl");Y(Lt,pe,Ue,"~","\\textasciitilde");Y(Lt,pe,Ue,"\\","\\textbackslash");Y(Lt,pe,Ue,"^","\\textasciicircum");Y(ee,pe,Ve,"\u2191","\\uparrow",!0);Y(ee,pe,Ve,"\u21D1","\\Uparrow",!0);Y(ee,pe,Ve,"\u2193","\\downarrow",!0);Y(ee,pe,Ve,"\u21D3","\\Downarrow",!0);Y(ee,pe,Ve,"\u2195","\\updownarrow",!0);Y(ee,pe,Ve,"\u21D5","\\Updownarrow",!0);Y(ee,pe,Hi,"\u2210","\\coprod");Y(ee,pe,Hi,"\u22C1","\\bigvee");Y(ee,pe,Hi,"\u22C0","\\bigwedge");Y(ee,pe,Hi,"\u2A04","\\biguplus");Y(ee,pe,Hi,"\u22C2","\\bigcap");Y(ee,pe,Hi,"\u22C3","\\bigcup");Y(ee,pe,Hi,"\u222B","\\int");Y(ee,pe,Hi,"\u222B","\\intop");Y(ee,pe,Hi,"\u222C","\\iint");Y(ee,pe,Hi,"\u222D","\\iiint");Y(ee,pe,Hi,"\u220F","\\prod");Y(ee,pe,Hi,"\u2211","\\sum");Y(ee,pe,Hi,"\u2A02","\\bigotimes");Y(ee,pe,Hi,"\u2A01","\\bigoplus");Y(ee,pe,Hi,"\u2A00","\\bigodot");Y(ee,pe,Hi,"\u222E","\\oint");Y(ee,pe,Hi,"\u222F","\\oiint");Y(ee,pe,Hi,"\u2230","\\oiiint");Y(ee,pe,Hi,"\u2A06","\\bigsqcup");Y(ee,pe,Hi,"\u222B","\\smallint");Y(Lt,pe,Q0,"\u2026","\\textellipsis");Y(ee,pe,Q0,"\u2026","\\mathellipsis");Y(Lt,pe,Q0,"\u2026","\\ldots",!0);Y(ee,pe,Q0,"\u2026","\\ldots",!0);Y(ee,pe,Q0,"\u22EF","\\@cdots",!0);Y(ee,pe,Q0,"\u22F1","\\ddots",!0);Y(ee,pe,Ue,"\u22EE","\\varvdots");Y(Lt,pe,Ue,"\u22EE","\\varvdots");Y(ee,pe,hi,"\u02CA","\\acute");Y(ee,pe,hi,"\u02CB","\\grave");Y(ee,pe,hi,"\xA8","\\ddot");Y(ee,pe,hi,"~","\\tilde");Y(ee,pe,hi,"\u02C9","\\bar");Y(ee,pe,hi,"\u02D8","\\breve");Y(ee,pe,hi,"\u02C7","\\check");Y(ee,pe,hi,"^","\\hat");Y(ee,pe,hi,"\u20D7","\\vec");Y(ee,pe,hi,"\u02D9","\\dot");Y(ee,pe,hi,"\u02DA","\\mathring");Y(ee,pe,xr,"\uE131","\\@imath");Y(ee,pe,xr,"\uE237","\\@jmath");Y(ee,pe,Ue,"\u0131","\u0131");Y(ee,pe,Ue,"\u0237","\u0237");Y(Lt,pe,Ue,"\u0131","\\i",!0);Y(Lt,pe,Ue,"\u0237","\\j",!0);Y(Lt,pe,Ue,"\xDF","\\ss",!0);Y(Lt,pe,Ue,"\xE6","\\ae",!0);Y(Lt,pe,Ue,"\u0153","\\oe",!0);Y(Lt,pe,Ue,"\xF8","\\o",!0);Y(Lt,pe,Ue,"\xC6","\\AE",!0);Y(Lt,pe,Ue,"\u0152","\\OE",!0);Y(Lt,pe,Ue,"\xD8","\\O",!0);Y(Lt,pe,hi,"\u02CA","\\'");Y(Lt,pe,hi,"\u02CB","\\`");Y(Lt,pe,hi,"\u02C6","\\^");Y(Lt,pe,hi,"\u02DC","\\~");Y(Lt,pe,hi,"\u02C9","\\=");Y(Lt,pe,hi,"\u02D8","\\u");Y(Lt,pe,hi,"\u02D9","\\.");Y(Lt,pe,hi,"\xB8","\\c");Y(Lt,pe,hi,"\u02DA","\\r");Y(Lt,pe,hi,"\u02C7","\\v");Y(Lt,pe,hi,"\xA8",'\\"');Y(Lt,pe,hi,"\u02DD","\\H");Y(Lt,pe,hi,"\u25EF","\\textcircled");rQ={"--":!0,"---":!0,"``":!0,"''":!0};Y(Lt,pe,Ue,"\u2013","--",!0);Y(Lt,pe,Ue,"\u2013","\\textendash");Y(Lt,pe,Ue,"\u2014","---",!0);Y(Lt,pe,Ue,"\u2014","\\textemdash");Y(Lt,pe,Ue,"\u2018","`",!0);Y(Lt,pe,Ue,"\u2018","\\textquoteleft");Y(Lt,pe,Ue,"\u2019","'",!0);Y(Lt,pe,Ue,"\u2019","\\textquoteright");Y(Lt,pe,Ue,"\u201C","``",!0);Y(Lt,pe,Ue,"\u201C","\\textquotedblleft");Y(Lt,pe,Ue,"\u201D","''",!0);Y(Lt,pe,Ue,"\u201D","\\textquotedblright");Y(ee,pe,Ue,"\xB0","\\degree",!0);Y(Lt,pe,Ue,"\xB0","\\degree");Y(Lt,pe,Ue,"\xB0","\\textdegree",!0);Y(ee,pe,Ue,"\xA3","\\pounds");Y(ee,pe,Ue,"\xA3","\\mathsterling",!0);Y(Lt,pe,Ue,"\xA3","\\pounds");Y(Lt,pe,Ue,"\xA3","\\textsterling",!0);Y(ee,ze,Ue,"\u2720","\\maltese");Y(Lt,ze,Ue,"\u2720","\\maltese");wZ='0123456789/@."';for(Nk=0;Nk<wZ.length;Nk++)x7=wZ.charAt(Nk),Y(ee,pe,Ue,x7,x7);kZ='0123456789!@*()-=+";:?/.,';for(Pk=0;Pk<kZ.length;Pk++)b7=kZ.charAt(Pk),Y(Lt,pe,Ue,b7,b7);jk="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";for(Ok=0;Ok<jk.length;Ok++)Kx=jk.charAt(Ok),Y(ee,pe,xr,Kx,Kx),Y(Lt,pe,Ue,Kx,Kx);Y(ee,ze,Ue,"C","\u2102");Y(Lt,ze,Ue,"C","\u2102");Y(ee,ze,Ue,"H","\u210D");Y(Lt,ze,Ue,"H","\u210D");Y(ee,ze,Ue,"N","\u2115");Y(Lt,ze,Ue,"N","\u2115");Y(ee,ze,Ue,"P","\u2119");Y(Lt,ze,Ue,"P","\u2119");Y(ee,ze,Ue,"Q","\u211A");Y(Lt,ze,Ue,"Q","\u211A");Y(ee,ze,Ue,"R","\u211D");Y(Lt,ze,Ue,"R","\u211D");Y(ee,ze,Ue,"Z","\u2124");Y(Lt,ze,Ue,"Z","\u2124");Y(ee,pe,xr,"h","\u210E");Y(Lt,pe,xr,"h","\u210E");Pr="";for(Ja=0;Ja<jk.length;Ja++)gi=jk.charAt(Ja),Pr=String.fromCharCode(55349,56320+Ja),Y(ee,pe,xr,gi,Pr),Y(Lt,pe,Ue,gi,Pr),Pr=String.fromCharCode(55349,56372+Ja),Y(ee,pe,xr,gi,Pr),Y(Lt,pe,Ue,gi,Pr),Pr=String.fromCharCode(55349,56424+Ja),Y(ee,pe,xr,gi,Pr),Y(Lt,pe,Ue,gi,Pr),Pr=String.fromCharCode(55349,56580+Ja),Y(ee,pe,xr,gi,Pr),Y(Lt,pe,Ue,gi,Pr),Pr=String.fromCharCode(55349,56684+Ja),Y(ee,pe,xr,gi,Pr),Y(Lt,pe,Ue,gi,Pr),Pr=String.fromCharCode(55349,56736+Ja),Y(ee,pe,xr,gi,Pr),Y(Lt,pe,Ue,gi,Pr),Pr=String.fromCharCode(55349,56788+Ja),Y(ee,pe,xr,gi,Pr),Y(Lt,pe,Ue,gi,Pr),Pr=String.fromCharCode(55349,56840+Ja),Y(ee,pe,xr,gi,Pr),Y(Lt,pe,Ue,gi,Pr),Pr=String.fromCharCode(55349,56944+Ja),Y(ee,pe,xr,gi,Pr),Y(Lt,pe,Ue,gi,Pr),Ja<26&&(Pr=String.fromCharCode(55349,56632+Ja),Y(ee,pe,xr,gi,Pr),Y(Lt,pe,Ue,gi,Pr),Pr=String.fromCharCode(55349,56476+Ja),Y(ee,pe,xr,gi,Pr),Y(Lt,pe,Ue,gi,Pr));Pr="\u{1D55C}";Y(ee,pe,xr,"k",Pr);Y(Lt,pe,Ue,"k",Pr);for(wd=0;wd<10;wd++)th=wd.toString(),Pr=String.fromCharCode(55349,57294+wd),Y(ee,pe,xr,th,Pr),Y(Lt,pe,Ue,th,Pr),Pr=String.fromCharCode(55349,57314+wd),Y(ee,pe,xr,th,Pr),Y(Lt,pe,Ue,th,Pr),Pr=String.fromCharCode(55349,57324+wd),Y(ee,pe,xr,th,Pr),Y(Lt,pe,Ue,th,Pr),Pr=String.fromCharCode(55349,57334+wd),Y(ee,pe,xr,th,Pr),Y(Lt,pe,Ue,th,Pr);P7="\xD0\xDE\xFE";for(Bk=0;Bk<P7.length;Bk++)Zx=P7.charAt(Bk),Y(ee,pe,xr,Zx,Zx),Y(Lt,pe,Ue,Zx,Zx);$k=[["mathbf","textbf","Main-Bold"],["mathbf","textbf","Main-Bold"],["mathnormal","textit","Math-Italic"],["mathnormal","textit","Math-Italic"],["boldsymbol","boldsymbol","Main-BoldItalic"],["boldsymbol","boldsymbol","Main-BoldItalic"],["mathscr","textscr","Script-Regular"],["","",""],["","",""],["","",""],["mathfrak","textfrak","Fraktur-Regular"],["mathfrak","textfrak","Fraktur-Regular"],["mathbb","textbb","AMS-Regular"],["mathbb","textbb","AMS-Regular"],["mathboldfrak","textboldfrak","Fraktur-Regular"],["mathboldfrak","textboldfrak","Fraktur-Regular"],["mathsf","textsf","SansSerif-Regular"],["mathsf","textsf","SansSerif-Regular"],["mathboldsf","textboldsf","SansSerif-Bold"],["mathboldsf","textboldsf","SansSerif-Bold"],["mathitsf","textitsf","SansSerif-Italic"],["mathitsf","textitsf","SansSerif-Italic"],["","",""],["","",""],["mathtt","texttt","Typewriter-Regular"],["mathtt","texttt","Typewriter-Regular"]],SZ=[["mathbf","textbf","Main-Bold"],["","",""],["mathsf","textsf","SansSerif-Regular"],["mathboldsf","textboldsf","SansSerif-Bold"],["mathtt","texttt","Typewriter-Regular"]],zGe=o((e,t)=>{var r=e.charCodeAt(0),n=e.charCodeAt(1),i=(r-55296)*1024+(n-56320)+65536,a=t==="math"?0:1;if(119808<=i&&i<120484){var s=Math.floor((i-119808)/26);return[$k[s][2],$k[s][a]]}else if(120782<=i&&i<=120831){var l=Math.floor((i-120782)/10);return[SZ[l][2],SZ[l][a]]}else{if(i===120485||i===120486)return[$k[0][2],$k[0][a]];if(120486<i&&i<120782)return["",""];throw new Pt("Unsupported character: "+e)}},"wideCharacterFont"),rS=o(function(t,r,n){if(ui[n][t]){var i=ui[n][t].replace;i&&(t=i)}return{value:t,metrics:X7(t,r,n)}},"lookupSymbol"),Ts=o(function(t,r,n,i,a){var s=rS(t,r,n),l=s.metrics;t=s.value;var u;if(l){var h=l.italic;(n==="text"||i&&i.font==="mathit")&&(h=0),u=new ws(t,l.height,l.depth,h,l.skew,l.width,a)}else typeof console<"u"&&console.warn("No character metrics "+("for '"+t+"' in style '"+r+"' and mode '"+n+"'")),u=new ws(t,0,0,0,0,0,a);if(i){u.maxFontSize=i.sizeMultiplier,i.style.isTight()&&u.classes.push("mtight");var d=i.getColor();d&&(u.style.color=d)}return u},"makeSymbol"),K7=o(function(t,r,n,i){return i===void 0&&(i=[]),n.font==="boldsymbol"&&rS(t,"Main-Bold",r).metrics?Ts(t,"Main-Bold",r,n,i.concat(["mathbf"])):t==="\\"||ui[r][t].font==="main"?Ts(t,"Main-Regular",r,n,i):Ts(t,"AMS-Regular",r,n,i.concat(["amsrm"]))},"mathsym"),GGe=o(function(t,r,n,i,a){return a!=="textord"&&rS(t,"Math-BoldItalic",r).metrics?{fontName:"Math-BoldItalic",fontClass:"boldsymbol"}:{fontName:"Main-Bold",fontClass:"mathbf"}},"boldsymbol"),nS=o(function(t,r,n){var i=t.mode,a=t.text,s=["mord"],l=i==="math"||i==="text"&&r.font,u=l?r.font:r.fontFamily,h="",d="";if(a.charCodeAt(0)===55349&&([h,d]=zGe(a,i)),h.length>0)return Ts(a,h,i,r,s.concat(d));if(u){var f,p;if(u==="boldsymbol"){var m=GGe(a,i,r,s,n);f=m.fontName,p=[m.fontClass]}else l?(f=O7[u].fontName,p=[u]):(f=Fk(u,r.fontWeight,r.fontShape),p=[u,r.fontWeight,r.fontShape]);if(rS(a,f,i).metrics)return Ts(a,f,i,r,s.concat(p));if(rQ.hasOwnProperty(a)&&f.slice(0,10)==="Typewriter"){for(var g=[],y=0;y<a.length;y++)g.push(Ts(a[y],f,i,r,s.concat(p)));return sh(g)}}if(n==="mathord")return Ts(a,"Math-Italic",i,r,s.concat(["mathnormal"]));if(n==="textord"){var v=ui[i][a]&&ui[i][a].font;if(v==="ams"){var x=Fk("amsrm",r.fontWeight,r.fontShape);return Ts(a,x,i,r,s.concat("amsrm",r.fontWeight,r.fontShape))}else if(v==="main"||!v){var b=Fk("textrm",r.fontWeight,r.fontShape);return Ts(a,b,i,r,s.concat(r.fontWeight,r.fontShape))}else{var T=Fk(v,r.fontWeight,r.fontShape);return Ts(a,T,i,r,s.concat(T,r.fontWeight,r.fontShape))}}else throw new Error("unexpected type: "+n+" in makeOrd")},"makeOrd"),VGe=o((e,t)=>{if(Ed(e.classes)!==Ed(t.classes)||e.skew!==t.skew||e.maxFontSize!==t.maxFontSize||e.italic!==0&&e.hasClass("mathnormal"))return!1;if(e.classes.length===1){var r=e.classes[0];if(r==="mbin"||r==="mord")return!1}for(var n of Object.keys(e.style))if(e.style[n]!==t.style[n])return!1;for(var i of Object.keys(t.style))if(e.style[i]!==t.style[i])return!1;return!0},"canCombine"),nQ=o(e=>{for(var t=0;t<e.length-1;t++){var r=e[t],n=e[t+1];r instanceof ws&&n instanceof ws&&VGe(r,n)&&(r.text+=n.text,r.height=Math.max(r.height,n.height),r.depth=Math.max(r.depth,n.depth),r.italic=n.italic,e.splice(t+1,1),t--)}return e},"tryCombineChars"),Z7=o(function(t){for(var r=0,n=0,i=0,a=0;a<t.children.length;a++){var s=t.children[a];s.height>r&&(r=s.height),s.depth>n&&(n=s.depth),s.maxFontSize>i&&(i=s.maxFontSize)}t.height=r,t.depth=n,t.maxFontSize=i},"sizeElementFromChildren"),Mt=o(function(t,r,n,i){var a=new Ad(t,r,n,i);return Z7(a),a},"makeSpan"),Rd=o((e,t,r,n)=>new Ad(e,t,r,n),"makeSvgSpan"),K0=o(function(t,r,n){var i=Mt([t],[],r);return i.height=Math.max(n||r.fontMetrics().defaultRuleThickness,r.minRuleThickness),i.style.borderBottomWidth=$t(i.height),i.maxFontSize=1,i},"makeLineSpan"),WGe=o(function(t,r,n,i){var a=new X0(t,r,n,i);return Z7(a),a},"makeAnchor"),sh=o(function(t){var r=new Sd(t);return Z7(r),r},"makeFragment"),Z0=o(function(t,r){return t instanceof Sd?Mt([],[t],r):t},"wrapFragment"),qGe=o(function(t){if(t.positionType==="individualShift"){for(var r=t.children,n=[r[0]],i=-r[0].shift-r[0].elem.depth,a=i,s=1;s<r.length;s++){var l=-r[s].shift-a-r[s].elem.depth,u=l-(r[s-1].elem.height+r[s-1].elem.depth);a=a+l,n.push({type:"kern",size:u}),n.push(r[s])}return{children:n,depth:i}}var h;if(t.positionType==="top"){for(var d=t.positionData,f=0;f<t.children.length;f++){var p=t.children[f];d-=p.type==="kern"?p.size:p.elem.height+p.elem.depth}h=d}else if(t.positionType==="bottom")h=-t.positionData;else{var m=t.children[0];if(m.type!=="elem")throw new Error('First child must have type "elem".');if(t.positionType==="shift")h=-m.elem.depth-t.positionData;else if(t.positionType==="firstBaseline")h=-m.elem.depth;else throw new Error("Invalid positionType "+t.positionType+".")}return{children:t.children,depth:h}},"getVListChildrenAndDepth"),Cn=o(function(t,r){for(var{children:n,depth:i}=qGe(t),a=0,s=0;s<n.length;s++){var l=n[s];if(l.type==="elem"){var u=l.elem;a=Math.max(a,u.maxFontSize,u.height)}}a+=2;var h=Mt(["pstrut"],[]);h.style.height=$t(a);for(var d=[],f=i,p=i,m=i,g=0;g<n.length;g++){var y=n[g];if(y.type==="kern")m+=y.size;else{var v=y.elem,x=y.wrapperClasses||[],b=y.wrapperStyle||{},T=Mt(x,[h,v],void 0,b);T.style.top=$t(-a-m-v.depth),y.marginLeft&&(T.style.marginLeft=y.marginLeft),y.marginRight&&(T.style.marginRight=y.marginRight),d.push(T),m+=v.height+v.depth}f=Math.min(f,m),p=Math.max(p,m)}var k=Mt(["vlist"],d);k.style.height=$t(p);var C;if(f<0){var w=Mt([],[]),S=Mt(["vlist"],[w]);S.style.height=$t(-f);var R=Mt(["vlist-s"],[new ws("\u200B")]);C=[Mt(["vlist-r"],[k,R]),Mt(["vlist-r"],[S])]}else C=[Mt(["vlist-r"],[k])];var L=Mt(["vlist-t"],C);return C.length===2&&L.classes.push("vlist-t2"),L.height=p,L.depth=-f,L},"makeVList"),iQ=o((e,t)=>{var r=Mt(["mspace"],[],t),n=xi(e,t);return r.style.marginRight=$t(n),r},"makeGlue"),Fk=o(function(t,r,n){var i="";switch(t){case"amsrm":i="AMS";break;case"textrm":i="Main";break;case"textsf":i="SansSerif";break;case"texttt":i="Typewriter";break;default:i=t}var a;return r==="textbf"&&n==="textit"?a="BoldItalic":r==="textbf"?a="Bold":r==="textit"?a="Italic":a="Regular",i+"-"+a},"retrieveTextFontName"),O7={mathbf:{variant:"bold",fontName:"Main-Bold"},mathrm:{variant:"normal",fontName:"Main-Regular"},textit:{variant:"italic",fontName:"Main-Italic"},mathit:{variant:"italic",fontName:"Main-Italic"},mathnormal:{variant:"italic",fontName:"Math-Italic"},mathsfit:{variant:"sans-serif-italic",fontName:"SansSerif-Italic"},mathbb:{variant:"double-struck",fontName:"AMS-Regular"},mathcal:{variant:"script",fontName:"Caligraphic-Regular"},mathfrak:{variant:"fraktur",fontName:"Fraktur-Regular"},mathscr:{variant:"script",fontName:"Script-Regular"},mathsf:{variant:"sans-serif",fontName:"SansSerif-Regular"},mathtt:{variant:"monospace",fontName:"Typewriter-Regular"}},aQ={vec:["vec",.471,.714],oiintSize1:["oiintSize1",.957,.499],oiintSize2:["oiintSize2",1.472,.659],oiiintSize1:["oiiintSize1",1.304,.499],oiiintSize2:["oiiintSize2",1.98,.659]},sQ=o(function(t,r){var[n,i,a]=aQ[t],s=new zc(n),l=new Gl([s],{width:$t(i),height:$t(a),style:"width:"+$t(i),viewBox:"0 0 "+1e3*i+" "+1e3*a,preserveAspectRatio:"xMinYMin"}),u=Rd(["overlay"],[l],r);return u.height=a,u.style.height=$t(a),u.style.width=$t(i),u},"staticSvg"),yi={number:3,unit:"mu"},zp={number:4,unit:"mu"},rh={number:5,unit:"mu"},HGe={mord:{mop:yi,mbin:zp,mrel:rh,minner:yi},mop:{mord:yi,mop:yi,mrel:rh,minner:yi},mbin:{mord:zp,mop:zp,mopen:zp,minner:zp},mrel:{mord:rh,mop:rh,mopen:rh,minner:rh},mopen:{},mclose:{mop:yi,mbin:zp,mrel:rh,minner:yi},mpunct:{mord:yi,mop:yi,mrel:rh,mopen:yi,mclose:yi,mpunct:yi,minner:yi},minner:{mord:yi,mop:yi,mbin:zp,mrel:rh,mopen:yi,mpunct:yi,minner:yi}},UGe={mord:{mop:yi},mop:{mord:yi,mop:yi},mbin:{},mrel:{},mopen:{},mclose:{mop:yi},mpunct:{},minner:{mop:yi}},oQ={},Xk={},Kk={};o(Ut,"defineFunction");o(Gp,"defineFunctionBuilders");Zk=o(function(t){return t.type==="ordgroup"&&t.body.length===1?t.body[0]:t},"normalizeArgument"),qi=o(function(t){return t.type==="ordgroup"?t.body:[t]},"ordargument"),YGe=new Set(["leftmost","mbin","mopen","mrel","mop","mpunct"]),jGe=new Set(["rightmost","mrel","mclose","mpunct"]),XGe={display:Fr.DISPLAY,text:Fr.TEXT,script:Fr.SCRIPT,scriptscript:Fr.SCRIPTSCRIPT},KGe={mord:"mord",mop:"mop",mbin:"mbin",mrel:"mrel",mopen:"mopen",mclose:"mclose",mpunct:"mpunct",minner:"minner"},ia=o(function(t,r,n,i){i===void 0&&(i=[null,null]);for(var a=[],s=0;s<t.length;s++){var l=wn(t[s],r);if(l instanceof Sd){var u=l.children;a.push(...u)}else a.push(l)}if(nQ(a),!n)return a;var h=r;if(t.length===1){var d=t[0];d.type==="sizing"?h=r.havingSize(d.size):d.type==="styling"&&(h=r.havingStyle(XGe[d.style]))}var f=Mt([i[0]||"leftmost"],[],r),p=Mt([i[1]||"rightmost"],[],r),m=n==="root";return B7(a,(g,y)=>{var v=y.classes[0],x=g.classes[0];v==="mbin"&&jGe.has(x)?y.classes[0]="mord":x==="mbin"&&YGe.has(v)&&(g.classes[0]="mord")},{node:f},p,m),B7(a,(g,y)=>{var v,x,b=F7(y),T=F7(g),k=b&&T?g.hasClass("mtight")?(v=UGe[b])==null?void 0:v[T]:(x=HGe[b])==null?void 0:x[T]:null;if(k)return iQ(k,h)},{node:f},p,m),a},"buildExpression"),B7=o(function(t,r,n,i,a){i&&t.push(i);for(var s=0;s<t.length;s++){var l=t[s],u=lQ(l);if(u){B7(u.children,r,n,null,a);continue}var h=!l.hasClass("mspace");if(h){var d=r(l,n.node);d&&(n.insertAfter?n.insertAfter(d):(t.unshift(d),s++))}h?n.node=l:a&&l.hasClass("newline")&&(n.node=Mt(["leftmost"])),n.insertAfter=(f=>p=>{t.splice(f+1,0,p),s++})(s)}i&&t.pop()},"traverseNonSpaceNodes"),lQ=o(function(t){return t instanceof Sd||t instanceof X0||t instanceof Ad&&t.hasClass("enclosing")?t:null},"checkPartialGroup"),$7=o(function(t,r){var n=lQ(t);if(n){var i=n.children;if(i.length){if(r==="right")return $7(i[i.length-1],"right");if(r==="left")return $7(i[0],"left")}}return t},"getOutermostNode"),F7=o(function(t,r){if(!t)return null;r&&(t=$7(t,r));var n=t.classes[0];return KGe[n]||null},"getTypeOfDomTree"),nb=o(function(t,r){var n=["nulldelimiter"].concat(t.baseSizingClasses());return Mt(r.concat(n))},"makeNullDelimiter"),wn=o(function(t,r,n){if(!t)return Mt();if(Xk[t.type]){var i=Xk[t.type](t,r);if(n&&r.size!==n.size){i=Mt(r.sizingClasses(n),[i],r);var a=r.sizeMultiplier/n.sizeMultiplier;i.height*=a,i.depth*=a}return i}else throw new Pt("Got group of unknown type: '"+t.type+"'")},"buildGroup");o(zk,"buildHTMLUnbreakable");o(z7,"buildHTML");o(cQ,"newDocumentFragment");Nt=class{static{o(this,"MathNode")}constructor(t,r,n){this.type=t,this.attributes={},this.children=r||[],this.classes=n||[]}setAttribute(t,r){this.attributes[t]=r}getAttribute(t){return this.attributes[t]}toNode(){var t=document.createElementNS("http://www.w3.org/1998/Math/MathML",this.type);for(var r in this.attributes)Object.prototype.hasOwnProperty.call(this.attributes,r)&&t.setAttribute(r,this.attributes[r]);this.classes.length>0&&(t.className=Ed(this.classes));for(var n=0;n<this.children.length;n++)if(this.children[n]instanceof Ei&&this.children[n+1]instanceof Ei){for(var i=this.children[n].toText()+this.children[++n].toText();this.children[n+1]instanceof Ei;)i+=this.children[++n].toText();t.appendChild(new Ei(i).toNode())}else t.appendChild(this.children[n].toNode());return t}toMarkup(){var t="<"+this.type;for(var r in this.attributes)Object.prototype.hasOwnProperty.call(this.attributes,r)&&(t+=" "+r+'="',t+=es(this.attributes[r]),t+='"');this.classes.length>0&&(t+=' class ="'+es(Ed(this.classes))+'"'),t+=">";for(var n=0;n<this.children.length;n++)t+=this.children[n].toMarkup();return t+="</"+this.type+">",t}toText(){return this.children.map(t=>t.toText()).join("")}},Ei=class{static{o(this,"TextNode")}constructor(t){this.text=t}toNode(){return document.createTextNode(this.text)}toMarkup(){return es(this.toText())}toText(){return this.text}},Qk=class{static{o(this,"SpaceNode")}constructor(t){this.width=t,t>=.05555&&t<=.05556?this.character="\u200A":t>=.1666&&t<=.1667?this.character="\u2009":t>=.2222&&t<=.2223?this.character="\u2005":t>=.2777&&t<=.2778?this.character="\u2005\u200A":t>=-.05556&&t<=-.05555?this.character="\u200A\u2063":t>=-.1667&&t<=-.1666?this.character="\u2009\u2063":t>=-.2223&&t<=-.2222?this.character="\u205F\u2063":t>=-.2778&&t<=-.2777?this.character="\u2005\u2063":this.character=null}toNode(){if(this.character)return document.createTextNode(this.character);var t=document.createElementNS("http://www.w3.org/1998/Math/MathML","mspace");return t.setAttribute("width",$t(this.width)),t}toMarkup(){return this.character?"<mtext>"+this.character+"</mtext>":'<mspace width="'+$t(this.width)+'"/>'}toText(){return this.character?this.character:" "}},ZGe=new Set(["\\imath","\\jmath"]),QGe=new Set(["mrow","mtable"]),cl=o(function(t,r,n){return ui[r][t]&&ui[r][t].replace&&t.charCodeAt(0)!==55349&&!(rQ.hasOwnProperty(t)&&n&&(n.fontFamily&&n.fontFamily.slice(4,6)==="tt"||n.font&&n.font.slice(4,6)==="tt"))&&(t=ui[r][t].replace),new Ei(t)},"makeText"),Q7=o(function(t){return t.length===1?t[0]:new Nt("mrow",t)},"makeRow"),J7=o(function(t,r){if(r.fontFamily==="texttt")return"monospace";if(r.fontFamily==="textsf")return r.fontShape==="textit"&&r.fontWeight==="textbf"?"sans-serif-bold-italic":r.fontShape==="textit"?"sans-serif-italic":r.fontWeight==="textbf"?"bold-sans-serif":"sans-serif";if(r.fontShape==="textit"&&r.fontWeight==="textbf")return"bold-italic";if(r.fontShape==="textit")return"italic";if(r.fontWeight==="textbf")return"bold";var n=r.font;if(!n||n==="mathnormal")return null;var i=t.mode;if(n==="mathit")return"italic";if(n==="boldsymbol")return t.type==="textord"?"bold":"bold-italic";if(n==="mathbf")return"bold";if(n==="mathbb")return"double-struck";if(n==="mathsfit")return"sans-serif-italic";if(n==="mathfrak")return"fraktur";if(n==="mathscr"||n==="mathcal")return"script";if(n==="mathsf")return"sans-serif";if(n==="mathtt")return"monospace";var a=t.text;if(ZGe.has(a))return null;if(ui[i][a]){var s=ui[i][a].replace;s&&(a=s)}var l=O7[n].fontName;return X7(a,l,i)?O7[n].variant:null},"getVariant");o(T7,"isNumberPunctuation");Po=o(function(t,r,n){if(t.length===1){var i=Wn(t[0],r);return n&&i instanceof Nt&&i.type==="mo"&&(i.setAttribute("lspace","0em"),i.setAttribute("rspace","0em")),[i]}for(var a=[],s,l=0;l<t.length;l++){var u=Wn(t[l],r);if(u instanceof Nt&&s instanceof Nt){if(u.type==="mtext"&&s.type==="mtext"&&u.getAttribute("mathvariant")===s.getAttribute("mathvariant")){s.children.push(...u.children);continue}else if(u.type==="mn"&&s.type==="mn"){s.children.push(...u.children);continue}else if(T7(u)&&s.type==="mn"){s.children.push(...u.children);continue}else if(u.type==="mn"&&T7(s))u.children=[...s.children,...u.children],a.pop();else if((u.type==="msup"||u.type==="msub")&&u.children.length>=1&&(s.type==="mn"||T7(s))){var h=u.children[0];h instanceof Nt&&h.type==="mn"&&(h.children=[...s.children,...h.children],a.pop())}else if(s.type==="mi"&&s.children.length===1){var d=s.children[0];if(d instanceof Ei&&d.text==="\u0338"&&(u.type==="mo"||u.type==="mi"||u.type==="mn")){var f=u.children[0];f instanceof Ei&&f.text.length>0&&(f.text=f.text.slice(0,1)+"\u0338"+f.text.slice(1),a.pop())}}}a.push(u),s=u}return a},"buildExpression"),_d=o(function(t,r,n){return Q7(Po(t,r,n))},"buildExpressionRow"),Wn=o(function(t,r){if(!t)return new Nt("mrow");if(Kk[t.type]){var n=Kk[t.type](t,r);return n}else throw new Pt("Got group of unknown type: '"+t.type+"'")},"buildGroup");o(EZ,"buildMathML");JGe=[[1,1,1],[2,1,1],[3,1,1],[4,2,1],[5,2,1],[6,3,1],[7,4,2],[8,6,3],[9,7,6],[10,8,7],[11,10,9]],AZ=[.5,.6,.7,.8,.9,1,1.2,1.44,1.728,2.074,2.488],RZ=o(function(t,r){return r.size<2?t:JGe[t-1][r.size-1]},"sizeAtStyle"),Jk=class e{static{o(this,"Options")}constructor(t){this.style=t.style,this.color=t.color,this.size=t.size||e.BASESIZE,this.textSize=t.textSize||this.size,this.phantom=!!t.phantom,this.font=t.font||"",this.fontFamily=t.fontFamily||"",this.fontWeight=t.fontWeight||"",this.fontShape=t.fontShape||"",this.sizeMultiplier=AZ[this.size-1],this.maxSize=t.maxSize,this.minRuleThickness=t.minRuleThickness,this._fontMetrics=void 0}extend(t){var r={style:this.style,size:this.size,textSize:this.textSize,color:this.color,phantom:this.phantom,font:this.font,fontFamily:this.fontFamily,fontWeight:this.fontWeight,fontShape:this.fontShape,maxSize:this.maxSize,minRuleThickness:this.minRuleThickness};return Object.assign(r,t),new e(r)}havingStyle(t){return this.style===t?this:this.extend({style:t,size:RZ(this.textSize,t)})}havingCrampedStyle(){return this.havingStyle(this.style.cramp())}havingSize(t){return this.size===t&&this.textSize===t?this:this.extend({style:this.style.text(),size:t,textSize:t,sizeMultiplier:AZ[t-1]})}havingBaseStyle(t){t=t||this.style.text();var r=RZ(e.BASESIZE,t);return this.size===r&&this.textSize===e.BASESIZE&&this.style===t?this:this.extend({style:t,size:r})}havingBaseSizing(){var t;switch(this.style.id){case 4:case 5:t=3;break;case 6:case 7:t=1;break;default:t=6}return this.extend({style:this.style.text(),size:t})}withColor(t){return this.extend({color:t})}withPhantom(){return this.extend({phantom:!0})}withFont(t){return this.extend({font:t})}withTextFontFamily(t){return this.extend({fontFamily:t,font:""})}withTextFontWeight(t){return this.extend({fontWeight:t,font:""})}withTextFontShape(t){return this.extend({fontShape:t,font:""})}sizingClasses(t){return t.size!==this.size?["sizing","reset-size"+t.size,"size"+this.size]:[]}baseSizingClasses(){return this.size!==e.BASESIZE?["sizing","reset-size"+this.size,"size"+e.BASESIZE]:[]}fontMetrics(){return this._fontMetrics||(this._fontMetrics=BGe(this.size)),this._fontMetrics}getColor(){return this.phantom?"transparent":this.color}};Jk.BASESIZE=6;uQ=o(function(t){return new Jk({style:t.displayMode?Fr.DISPLAY:Fr.TEXT,maxSize:t.maxSize,minRuleThickness:t.minRuleThickness})},"optionsFromSettings"),hQ=o(function(t,r){if(r.displayMode){var n=["katex-display"];r.leqno&&n.push("leqno"),r.fleqn&&n.push("fleqn"),t=Mt(n,[t])}return t},"displayWrap"),eVe=o(function(t,r,n){var i=uQ(n),a;if(n.output==="mathml")return EZ(t,r,i,n.displayMode,!0);if(n.output==="html"){var s=z7(t,i);a=Mt(["katex"],[s])}else{var l=EZ(t,r,i,n.displayMode,!1),u=z7(t,i);a=Mt(["katex"],[l,u])}return hQ(a,n)},"buildTree"),tVe=o(function(t,r,n){var i=uQ(n),a=z7(t,i),s=Mt(["katex"],[a]);return hQ(s,n)},"buildHTMLTree"),rVe={widehat:"^",widecheck:"\u02C7",widetilde:"~",utilde:"~",overleftarrow:"\u2190",underleftarrow:"\u2190",xleftarrow:"\u2190",overrightarrow:"\u2192",underrightarrow:"\u2192",xrightarrow:"\u2192",underbrace:"\u23DF",overbrace:"\u23DE",underbracket:"\u23B5",overbracket:"\u23B4",overgroup:"\u23E0",undergroup:"\u23E1",overleftrightarrow:"\u2194",underleftrightarrow:"\u2194",xleftrightarrow:"\u2194",Overrightarrow:"\u21D2",xRightarrow:"\u21D2",overleftharpoon:"\u21BC",xleftharpoonup:"\u21BC",overrightharpoon:"\u21C0",xrightharpoonup:"\u21C0",xLeftarrow:"\u21D0",xLeftrightarrow:"\u21D4",xhookleftarrow:"\u21A9",xhookrightarrow:"\u21AA",xmapsto:"\u21A6",xrightharpoondown:"\u21C1",xleftharpoondown:"\u21BD",xrightleftharpoons:"\u21CC",xleftrightharpoons:"\u21CB",xtwoheadleftarrow:"\u219E",xtwoheadrightarrow:"\u21A0",xlongequal:"=",xtofrom:"\u21C4",xrightleftarrows:"\u21C4",xrightequilibrium:"\u21CC",xleftequilibrium:"\u21CB","\\cdrightarrow":"\u2192","\\cdleftarrow":"\u2190","\\cdlongequal":"="},iS=o(function(t){var r=new Nt("mo",[new Ei(rVe[t.replace(/^\\/,"")])]);return r.setAttribute("stretchy","true"),r},"stretchyMathML"),nVe={overrightarrow:[["rightarrow"],.888,522,"xMaxYMin"],overleftarrow:[["leftarrow"],.888,522,"xMinYMin"],underrightarrow:[["rightarrow"],.888,522,"xMaxYMin"],underleftarrow:[["leftarrow"],.888,522,"xMinYMin"],xrightarrow:[["rightarrow"],1.469,522,"xMaxYMin"],"\\cdrightarrow":[["rightarrow"],3,522,"xMaxYMin"],xleftarrow:[["leftarrow"],1.469,522,"xMinYMin"],"\\cdleftarrow":[["leftarrow"],3,522,"xMinYMin"],Overrightarrow:[["doublerightarrow"],.888,560,"xMaxYMin"],xRightarrow:[["doublerightarrow"],1.526,560,"xMaxYMin"],xLeftarrow:[["doubleleftarrow"],1.526,560,"xMinYMin"],overleftharpoon:[["leftharpoon"],.888,522,"xMinYMin"],xleftharpoonup:[["leftharpoon"],.888,522,"xMinYMin"],xleftharpoondown:[["leftharpoondown"],.888,522,"xMinYMin"],overrightharpoon:[["rightharpoon"],.888,522,"xMaxYMin"],xrightharpoonup:[["rightharpoon"],.888,522,"xMaxYMin"],xrightharpoondown:[["rightharpoondown"],.888,522,"xMaxYMin"],xlongequal:[["longequal"],.888,334,"xMinYMin"],"\\cdlongequal":[["longequal"],3,334,"xMinYMin"],xtwoheadleftarrow:[["twoheadleftarrow"],.888,334,"xMinYMin"],xtwoheadrightarrow:[["twoheadrightarrow"],.888,334,"xMaxYMin"],overleftrightarrow:[["leftarrow","rightarrow"],.888,522],overbrace:[["leftbrace","midbrace","rightbrace"],1.6,548],underbrace:[["leftbraceunder","midbraceunder","rightbraceunder"],1.6,548],underleftrightarrow:[["leftarrow","rightarrow"],.888,522],xleftrightarrow:[["leftarrow","rightarrow"],1.75,522],xLeftrightarrow:[["doubleleftarrow","doublerightarrow"],1.75,560],xrightleftharpoons:[["leftharpoondownplus","rightharpoonplus"],1.75,716],xleftrightharpoons:[["leftharpoonplus","rightharpoondownplus"],1.75,716],xhookleftarrow:[["leftarrow","righthook"],1.08,522],xhookrightarrow:[["lefthook","rightarrow"],1.08,522],overlinesegment:[["leftlinesegment","rightlinesegment"],.888,522],underlinesegment:[["leftlinesegment","rightlinesegment"],.888,522],overbracket:[["leftbracketover","rightbracketover"],1.6,440],underbracket:[["leftbracketunder","rightbracketunder"],1.6,410],overgroup:[["leftgroup","rightgroup"],.888,342],undergroup:[["leftgroupunder","rightgroupunder"],.888,342],xmapsto:[["leftmapsto","rightarrow"],1.5,522],xtofrom:[["leftToFrom","rightToFrom"],1.75,528],xrightleftarrows:[["baraboveleftarrow","rightarrowabovebar"],1.75,901],xrightequilibrium:[["baraboveshortleftharpoon","rightharpoonaboveshortbar"],1.75,716],xleftequilibrium:[["shortbaraboveleftharpoon","shortrightharpoonabovebar"],1.75,716]},iVe=new Set(["widehat","widecheck","widetilde","utilde"]),aS=o(function(t,r){function n(){var l=4e5,u=t.label.slice(1);if(iVe.has(u)){var h=t,d=h.base.type==="ordgroup"?h.base.body.length:1,f,p,m;if(d>5)u==="widehat"||u==="widecheck"?(f=420,l=2364,m=.42,p=u+"4"):(f=312,l=2340,m=.34,p="tilde4");else{var g=[1,1,2,2,3,3][d];u==="widehat"||u==="widecheck"?(l=[0,1062,2364,2364,2364][g],f=[0,239,300,360,420][g],m=[0,.24,.3,.3,.36,.42][g],p=u+g):(l=[0,600,1033,2339,2340][g],f=[0,260,286,306,312][g],m=[0,.26,.286,.3,.306,.34][g],p="tilde"+g)}var y=new zc(p),v=new Gl([y],{width:"100%",height:$t(m),viewBox:"0 0 "+l+" "+f,preserveAspectRatio:"none"});return{span:Rd([],[v],r),minWidth:0,height:m}}else{var x=[],b=nVe[u],[T,k,C]=b,w=C/1e3,S=T.length,R,L;if(S===1){var N=b[3];R=["hide-tail"],L=[N]}else if(S===2)R=["halfarrow-left","halfarrow-right"],L=["xMinYMin","xMaxYMin"];else if(S===3)R=["brace-left","brace-center","brace-right"],L=["xMinYMin","xMidYMin","xMaxYMin"];else throw new Error(`Correct katexImagesData or update code here to support
+                    `+S+" children.");for(var I=0;I<S;I++){var _=new zc(T[I]),A=new Gl([_],{width:"400em",height:$t(w),viewBox:"0 0 "+l+" "+C,preserveAspectRatio:L[I]+" slice"}),M=Rd([R[I]],[A],r);if(S===1)return{span:M,minWidth:k,height:w};M.style.height=$t(w),x.push(M)}return{span:Mt(["stretchy"],x,r),minWidth:k,height:w}}}o(n,"buildSvgSpan_");var{span:i,minWidth:a,height:s}=n();return i.height=s,i.style.height=$t(s),a>0&&(i.style.minWidth=$t(a)),i},"stretchySvg"),aVe=o(function(t,r,n,i,a){var s,l=t.height+t.depth+n+i;if(/fbox|color|angl/.test(r)){if(s=Mt(["stretchy",r],[],a),r==="fbox"){var u=a.color&&a.getColor();u&&(s.style.borderColor=u)}}else{var h=[];/^[bx]cancel$/.test(r)&&h.push(new rb({x1:"0",y1:"0",x2:"100%",y2:"100%","stroke-width":"0.046em"})),/^x?cancel$/.test(r)&&h.push(new rb({x1:"0",y1:"100%",x2:"100%",y2:"0","stroke-width":"0.046em"}));var d=new Gl(h,{width:"100%",height:$t(l)});s=Rd([],[d],a)}return s.height=l,s.style.height=$t(l),s},"stretchyEnclose");o(Ur,"assertNodeType");o(sS,"assertSymbolNodeType");o(oS,"checkSymbolNodeType");dQ=o(e=>{if(e instanceof ws)return e;if(OGe(e)&&e.children.length===1)return dQ(e.children[0])},"getBaseSymbol"),e8=o((e,t)=>{var r,n,i;e&&e.type==="supsub"?(n=Ur(e.base,"accent"),r=n.base,e.base=r,i=PGe(wn(e,t)),e.base=n):(n=Ur(e,"accent"),r=n.base);var a=wn(r,t.havingCrampedStyle()),s=n.isShifty&&ih(r),l=0;if(s){var u,h;l=(u=(h=dQ(a))==null?void 0:h.skew)!=null?u:0}var d=n.label==="\\c",f=d?a.height+a.depth:Math.min(a.height,t.fontMetrics().xHeight),p;if(n.isStretchy)p=aS(n,t),p=Cn({positionType:"firstBaseline",children:[{type:"elem",elem:a},{type:"elem",elem:p,wrapperClasses:["svg-align"],wrapperStyle:l>0?{width:"calc(100% - "+$t(2*l)+")",marginLeft:$t(2*l)}:void 0}]});else{var m,g;n.label==="\\vec"?(m=sQ("vec",t),g=aQ.vec[1]):(m=nS({type:"textord",mode:n.mode,text:n.label},t,"textord"),m=NGe(m),m.italic=0,g=m.width,d&&(f+=m.depth)),p=Mt(["accent-body"],[m]);var y=n.label==="\\textcircled";y&&(p.classes.push("accent-full"),f=a.height);var v=l;y||(v-=g/2),p.style.left=$t(v),n.label==="\\textcircled"&&(p.style.top=".2em"),p=Cn({positionType:"firstBaseline",children:[{type:"elem",elem:a},{type:"kern",size:-f},{type:"elem",elem:p}]})}var x=Mt(["mord","accent"],[p],t);return i?(i.children[0]=x,i.height=Math.max(x.height,i.height),i.classes[0]="mord",i):x},"htmlBuilder$a"),fQ=o((e,t)=>{var r=e.isStretchy?iS(e.label):new Nt("mo",[cl(e.label,e.mode)]),n=new Nt("mover",[Wn(e.base,t),r]);return n.setAttribute("accent","true"),n},"mathmlBuilder$9"),sVe=new RegExp(["\\acute","\\grave","\\ddot","\\tilde","\\bar","\\breve","\\check","\\hat","\\vec","\\dot","\\mathring"].map(e=>"\\"+e).join("|"));Ut({type:"accent",names:["\\acute","\\grave","\\ddot","\\tilde","\\bar","\\breve","\\check","\\hat","\\vec","\\dot","\\mathring","\\widecheck","\\widehat","\\widetilde","\\overrightarrow","\\overleftarrow","\\Overrightarrow","\\overleftrightarrow","\\overgroup","\\overlinesegment","\\overleftharpoon","\\overrightharpoon"],props:{numArgs:1},handler:o((e,t)=>{var r=Zk(t[0]),n=!sVe.test(e.funcName),i=!n||e.funcName==="\\widehat"||e.funcName==="\\widetilde"||e.funcName==="\\widecheck";return{type:"accent",mode:e.parser.mode,label:e.funcName,isStretchy:n,isShifty:i,base:r}},"handler"),htmlBuilder:e8,mathmlBuilder:fQ});Ut({type:"accent",names:["\\'","\\`","\\^","\\~","\\=","\\u","\\.",'\\"',"\\c","\\r","\\H","\\v","\\textcircled"],props:{numArgs:1,allowedInText:!0,allowedInMath:!0,argTypes:["primitive"]},handler:o((e,t)=>{var r=t[0],n=e.parser.mode;return n==="math"&&(e.parser.settings.reportNonstrict("mathVsTextAccents","LaTeX's accent "+e.funcName+" works only in text mode"),n="text"),{type:"accent",mode:n,label:e.funcName,isStretchy:!1,isShifty:!0,base:r}},"handler"),htmlBuilder:e8,mathmlBuilder:fQ});Ut({type:"accentUnder",names:["\\underleftarrow","\\underrightarrow","\\underleftrightarrow","\\undergroup","\\underlinesegment","\\utilde"],props:{numArgs:1},handler:o((e,t)=>{var{parser:r,funcName:n}=e,i=t[0];return{type:"accentUnder",mode:r.mode,label:n,base:i}},"handler"),htmlBuilder:o((e,t)=>{var r=wn(e.base,t),n=aS(e,t),i=e.label==="\\utilde"?.12:0,a=Cn({positionType:"top",positionData:r.height,children:[{type:"elem",elem:n,wrapperClasses:["svg-align"]},{type:"kern",size:i},{type:"elem",elem:r}]});return Mt(["mord","accentunder"],[a],t)},"htmlBuilder"),mathmlBuilder:o((e,t)=>{var r=iS(e.label),n=new Nt("munder",[Wn(e.base,t),r]);return n.setAttribute("accentunder","true"),n},"mathmlBuilder")});Gk=o(e=>{var t=new Nt("mpadded",e?[e]:[]);return t.setAttribute("width","+0.6em"),t.setAttribute("lspace","0.3em"),t},"paddedNode");Ut({type:"xArrow",names:["\\xleftarrow","\\xrightarrow","\\xLeftarrow","\\xRightarrow","\\xleftrightarrow","\\xLeftrightarrow","\\xhookleftarrow","\\xhookrightarrow","\\xmapsto","\\xrightharpoondown","\\xrightharpoonup","\\xleftharpoondown","\\xleftharpoonup","\\xrightleftharpoons","\\xleftrightharpoons","\\xlongequal","\\xtwoheadrightarrow","\\xtwoheadleftarrow","\\xtofrom","\\xrightleftarrows","\\xrightequilibrium","\\xleftequilibrium","\\\\cdrightarrow","\\\\cdleftarrow","\\\\cdlongequal"],props:{numArgs:1,numOptionalArgs:1},handler(e,t,r){var{parser:n,funcName:i}=e;return{type:"xArrow",mode:n.mode,label:i,body:t[0],below:r[0]}},htmlBuilder(e,t){var r=t.style,n=t.havingStyle(r.sup()),i=Z0(wn(e.body,n,t),t),a=e.label.slice(0,2)==="\\x"?"x":"cd";i.classes.push(a+"-arrow-pad");var s;e.below&&(n=t.havingStyle(r.sub()),s=Z0(wn(e.below,n,t),t),s.classes.push(a+"-arrow-pad"));var l=aS(e,t),u=-t.fontMetrics().axisHeight+.5*l.height,h=-t.fontMetrics().axisHeight-.5*l.height-.111;(i.depth>.25||e.label==="\\xleftequilibrium")&&(h-=i.depth);var d;if(s){var f=-t.fontMetrics().axisHeight+s.height+.5*l.height+.111;d=Cn({positionType:"individualShift",children:[{type:"elem",elem:i,shift:h},{type:"elem",elem:l,shift:u},{type:"elem",elem:s,shift:f}]})}else d=Cn({positionType:"individualShift",children:[{type:"elem",elem:i,shift:h},{type:"elem",elem:l,shift:u}]});return d.children[0].children[0].children[1].classes.push("svg-align"),Mt(["mrel","x-arrow"],[d],t)},mathmlBuilder(e,t){var r=iS(e.label);r.setAttribute("minsize",e.label.charAt(0)==="x"?"1.75em":"3.0em");var n;if(e.body){var i=Gk(Wn(e.body,t));if(e.below){var a=Gk(Wn(e.below,t));n=new Nt("munderover",[r,a,i])}else n=new Nt("mover",[r,i])}else if(e.below){var s=Gk(Wn(e.below,t));n=new Nt("munder",[r,s])}else n=Gk(),n=new Nt("mover",[r,n]);return n}});o(pQ,"htmlBuilder$9");o(mQ,"mathmlBuilder$8");Ut({type:"mclass",names:["\\mathord","\\mathbin","\\mathrel","\\mathopen","\\mathclose","\\mathpunct","\\mathinner"],props:{numArgs:1,primitive:!0},handler(e,t){var{parser:r,funcName:n}=e,i=t[0];return{type:"mclass",mode:r.mode,mclass:"m"+n.slice(5),body:qi(i),isCharacterBox:ih(i)}},htmlBuilder:pQ,mathmlBuilder:mQ});lS=o(e=>{var t=e.type==="ordgroup"&&e.body.length?e.body[0]:e;return t.type==="atom"&&(t.family==="bin"||t.family==="rel")?"m"+t.family:"mord"},"binrelClass");Ut({type:"mclass",names:["\\@binrel"],props:{numArgs:2},handler(e,t){var{parser:r}=e;return{type:"mclass",mode:r.mode,mclass:lS(t[0]),body:qi(t[1]),isCharacterBox:ih(t[1])}}});Ut({type:"mclass",names:["\\stackrel","\\overset","\\underset"],props:{numArgs:2},handler(e,t){var{parser:r,funcName:n}=e,i=t[1],a=t[0],s;n!=="\\stackrel"?s=lS(i):s="mrel";var l={type:"op",mode:i.mode,limits:!0,alwaysHandleSupSub:!0,parentIsSupSub:!1,symbol:!1,suppressBaseShift:n!=="\\stackrel",body:qi(i)},u={type:"supsub",mode:a.mode,base:l,sup:n==="\\underset"?null:a,sub:n==="\\underset"?a:null};return{type:"mclass",mode:r.mode,mclass:s,body:[u],isCharacterBox:ih(u)}},htmlBuilder:pQ,mathmlBuilder:mQ});Ut({type:"pmb",names:["\\pmb"],props:{numArgs:1,allowedInText:!0},handler(e,t){var{parser:r}=e;return{type:"pmb",mode:r.mode,mclass:lS(t[0]),body:qi(t[0])}},htmlBuilder(e,t){var r=ia(e.body,t,!0),n=Mt([e.mclass],r,t);return n.style.textShadow="0.02em 0.01em 0.04px",n},mathmlBuilder(e,t){var r=Po(e.body,t),n=new Nt("mstyle",r);return n.setAttribute("style","text-shadow: 0.02em 0.01em 0.04px"),n}});oVe={">":"\\\\cdrightarrow","<":"\\\\cdleftarrow","=":"\\\\cdlongequal",A:"\\uparrow",V:"\\downarrow","|":"\\Vert",".":"no arrow"},_Z=o(()=>({type:"styling",body:[],mode:"math",style:"display"}),"newCell"),LZ=o(e=>e.type==="textord"&&e.text==="@","isStartOfArrow"),lVe=o((e,t)=>(e.type==="mathord"||e.type==="atom")&&e.text===t,"isLabelEnd");o(cVe,"cdArrow");o(uVe,"parseCD");Ut({type:"cdlabel",names:["\\\\cdleft","\\\\cdright"],props:{numArgs:1},handler(e,t){var{parser:r,funcName:n}=e;return{type:"cdlabel",mode:r.mode,side:n.slice(4),label:t[0]}},htmlBuilder(e,t){var r=t.havingStyle(t.style.sup()),n=Z0(wn(e.label,r,t),t);return n.classes.push("cd-label-"+e.side),n.style.bottom=$t(.8-n.depth),n.height=0,n.depth=0,n},mathmlBuilder(e,t){var r=new Nt("mrow",[Wn(e.label,t)]);return r=new Nt("mpadded",[r]),r.setAttribute("width","0"),e.side==="left"&&r.setAttribute("lspace","-1width"),r.setAttribute("voffset","0.7em"),r=new Nt("mstyle",[r]),r.setAttribute("displaystyle","false"),r.setAttribute("scriptlevel","1"),r}});Ut({type:"cdlabelparent",names:["\\\\cdparent"],props:{numArgs:1},handler(e,t){var{parser:r}=e;return{type:"cdlabelparent",mode:r.mode,fragment:t[0]}},htmlBuilder(e,t){var r=Z0(wn(e.fragment,t),t);return r.classes.push("cd-vert-arrow"),r},mathmlBuilder(e,t){return new Nt("mrow",[Wn(e.fragment,t)])}});Ut({type:"textord",names:["\\@char"],props:{numArgs:1,allowedInText:!0},handler(e,t){for(var{parser:r}=e,n=Ur(t[0],"ordgroup"),i=n.body,a="",s=0;s<i.length;s++){var l=Ur(i[s],"textord");a+=l.text}var u=parseInt(a),h;if(isNaN(u))throw new Pt("\\@char has non-numeric argument "+a);if(u<0||u>=1114111)throw new Pt("\\@char with invalid code point "+a);return u<=65535?h=String.fromCharCode(u):(u-=65536,h=String.fromCharCode((u>>10)+55296,(u&1023)+56320)),{type:"textord",mode:r.mode,text:h}}});gQ=o((e,t)=>{var r=ia(e.body,t.withColor(e.color),!1);return sh(r)},"htmlBuilder$8"),yQ=o((e,t)=>{var r=Po(e.body,t.withColor(e.color)),n=new Nt("mstyle",r);return n.setAttribute("mathcolor",e.color),n},"mathmlBuilder$7");Ut({type:"color",names:["\\textcolor"],props:{numArgs:2,allowedInText:!0,argTypes:["color","original"]},handler(e,t){var{parser:r}=e,n=Ur(t[0],"color-token").color,i=t[1];return{type:"color",mode:r.mode,color:n,body:qi(i)}},htmlBuilder:gQ,mathmlBuilder:yQ});Ut({type:"color",names:["\\color"],props:{numArgs:1,allowedInText:!0,argTypes:["color"]},handler(e,t){var{parser:r,breakOnTokenText:n}=e,i=Ur(t[0],"color-token").color;r.gullet.macros.set("\\current@color",i);var a=r.parseExpression(!0,n);return{type:"color",mode:r.mode,color:i,body:a}},htmlBuilder:gQ,mathmlBuilder:yQ});Ut({type:"cr",names:["\\\\"],props:{numArgs:0,numOptionalArgs:0,allowedInText:!0},handler(e,t,r){var{parser:n}=e,i=n.gullet.future().text==="["?n.parseSizeGroup(!0):null,a=!n.settings.displayMode||!n.settings.useStrictBehavior("newLineInDisplayMode","In LaTeX, \\\\ or \\newline does nothing in display mode");return{type:"cr",mode:n.mode,newLine:a,size:i&&Ur(i,"size").value}},htmlBuilder(e,t){var r=Mt(["mspace"],[],t);return e.newLine&&(r.classes.push("newline"),e.size&&(r.style.marginTop=$t(xi(e.size,t)))),r},mathmlBuilder(e,t){var r=new Nt("mspace");return e.newLine&&(r.setAttribute("linebreak","newline"),e.size&&r.setAttribute("height",$t(xi(e.size,t)))),r}});G7={"\\global":"\\global","\\long":"\\\\globallong","\\\\globallong":"\\\\globallong","\\def":"\\gdef","\\gdef":"\\gdef","\\edef":"\\xdef","\\xdef":"\\xdef","\\let":"\\\\globallet","\\futurelet":"\\\\globalfuture"},vQ=o(e=>{var t=e.text;if(/^(?:[\\{}$&#^_]|EOF)$/.test(t))throw new Pt("Expected a control sequence",e);return t},"checkControlSequence"),hVe=o(e=>{var t=e.gullet.popToken();return t.text==="="&&(t=e.gullet.popToken(),t.text===" "&&(t=e.gullet.popToken())),t},"getRHS"),xQ=o((e,t,r,n)=>{var i=e.gullet.macros.get(r.text);i==null&&(r.noexpand=!0,i={tokens:[r],numArgs:0,unexpandable:!e.gullet.isExpandable(r.text)}),e.gullet.macros.set(t,i,n)},"letCommand");Ut({type:"internal",names:["\\global","\\long","\\\\globallong"],props:{numArgs:0,allowedInText:!0},handler(e){var{parser:t,funcName:r}=e;t.consumeSpaces();var n=t.fetch();if(G7[n.text])return(r==="\\global"||r==="\\\\globallong")&&(n.text=G7[n.text]),Ur(t.parseFunction(),"internal");throw new Pt("Invalid token after macro prefix",n)}});Ut({type:"internal",names:["\\def","\\gdef","\\edef","\\xdef"],props:{numArgs:0,allowedInText:!0,primitive:!0},handler(e){var{parser:t,funcName:r}=e,n=t.gullet.popToken(),i=n.text;if(/^(?:[\\{}$&#^_]|EOF)$/.test(i))throw new Pt("Expected a control sequence",n);for(var a=0,s,l=[[]];t.gullet.future().text!=="{";)if(n=t.gullet.popToken(),n.text==="#"){if(t.gullet.future().text==="{"){s=t.gullet.future(),l[a].push("{");break}if(n=t.gullet.popToken(),!/^[1-9]$/.test(n.text))throw new Pt('Invalid argument number "'+n.text+'"');if(parseInt(n.text)!==a+1)throw new Pt('Argument number "'+n.text+'" out of order');a++,l.push([])}else{if(n.text==="EOF")throw new Pt("Expected a macro definition");l[a].push(n.text)}var{tokens:u}=t.gullet.consumeArg();return s&&u.unshift(s),(r==="\\edef"||r==="\\xdef")&&(u=t.gullet.expandTokens(u),u.reverse()),t.gullet.macros.set(i,{tokens:u,numArgs:a,delimiters:l},r===G7[r]),{type:"internal",mode:t.mode}}});Ut({type:"internal",names:["\\let","\\\\globallet"],props:{numArgs:0,allowedInText:!0,primitive:!0},handler(e){var{parser:t,funcName:r}=e,n=vQ(t.gullet.popToken());t.gullet.consumeSpaces();var i=hVe(t);return xQ(t,n,i,r==="\\\\globallet"),{type:"internal",mode:t.mode}}});Ut({type:"internal",names:["\\futurelet","\\\\globalfuture"],props:{numArgs:0,allowedInText:!0,primitive:!0},handler(e){var{parser:t,funcName:r}=e,n=vQ(t.gullet.popToken()),i=t.gullet.popToken(),a=t.gullet.popToken();return xQ(t,n,a,r==="\\\\globalfuture"),t.gullet.pushToken(a),t.gullet.pushToken(i),{type:"internal",mode:t.mode}}});Qx=o(function(t,r,n){var i=ui.math[t]&&ui.math[t].replace,a=X7(i||t,r,n);if(!a)throw new Error("Unsupported symbol "+t+" and font size "+r+".");return a},"getMetrics"),t8=o(function(t,r,n,i){var a=n.havingBaseStyle(r),s=Mt(i.concat(a.sizingClasses(n)),[t],n),l=a.sizeMultiplier/n.sizeMultiplier;return s.height*=l,s.depth*=l,s.maxFontSize=a.sizeMultiplier,s},"styleWrap"),bQ=o(function(t,r,n){var i=r.havingBaseStyle(n),a=(1-r.sizeMultiplier/i.sizeMultiplier)*r.fontMetrics().axisHeight;t.classes.push("delimcenter"),t.style.top=$t(a),t.height-=a,t.depth+=a},"centerSpan"),dVe=o(function(t,r,n,i,a,s){var l=Ts(t,"Main-Regular",a,i),u=t8(l,r,i,s);return n&&bQ(u,i,r),u},"makeSmallDelim"),fVe=o(function(t,r,n,i){return Ts(t,"Size"+r+"-Regular",n,i)},"mathrmSize"),TQ=o(function(t,r,n,i,a,s){var l=fVe(t,r,a,i),u=t8(Mt(["delimsizing","size"+r],[l],i),Fr.TEXT,i,s);return n&&bQ(u,i,Fr.TEXT),u},"makeLargeDelim"),C7=o(function(t,r,n){var i;r==="Size1-Regular"?i="delim-size1":i="delim-size4";var a=Mt(["delimsizinginner",i],[Mt([],[Ts(t,r,n)])]);return{type:"elem",elem:a}},"makeGlyphSpan"),w7=o(function(t,r,n){var i=Fc["Size4-Regular"][t.charCodeAt(0)]?Fc["Size4-Regular"][t.charCodeAt(0)][4]:Fc["Size1-Regular"][t.charCodeAt(0)][4],a=new zc("inner",_Ge(t,Math.round(1e3*r))),s=new Gl([a],{width:$t(i),height:$t(r),style:"width:"+$t(i),viewBox:"0 0 "+1e3*i+" "+Math.round(1e3*r),preserveAspectRatio:"xMinYMin"}),l=Rd([],[s],n);return l.height=r,l.style.height=$t(r),l.style.width=$t(i),{type:"elem",elem:l}},"makeInner"),V7=.008,Vk={type:"kern",size:-1*V7},pVe=new Set(["|","\\lvert","\\rvert","\\vert"]),mVe=new Set(["\\|","\\lVert","\\rVert","\\Vert"]),CQ=o(function(t,r,n,i,a,s){var l,u,h,d,f="",p=0;l=h=d=t,u=null;var m="Size1-Regular";t==="\\uparrow"?h=d="\u23D0":t==="\\Uparrow"?h=d="\u2016":t==="\\downarrow"?l=h="\u23D0":t==="\\Downarrow"?l=h="\u2016":t==="\\updownarrow"?(l="\\uparrow",h="\u23D0",d="\\downarrow"):t==="\\Updownarrow"?(l="\\Uparrow",h="\u2016",d="\\Downarrow"):pVe.has(t)?(h="\u2223",f="vert",p=333):mVe.has(t)?(h="\u2225",f="doublevert",p=556):t==="["||t==="\\lbrack"?(l="\u23A1",h="\u23A2",d="\u23A3",m="Size4-Regular",f="lbrack",p=667):t==="]"||t==="\\rbrack"?(l="\u23A4",h="\u23A5",d="\u23A6",m="Size4-Regular",f="rbrack",p=667):t==="\\lfloor"||t==="\u230A"?(h=l="\u23A2",d="\u23A3",m="Size4-Regular",f="lfloor",p=667):t==="\\lceil"||t==="\u2308"?(l="\u23A1",h=d="\u23A2",m="Size4-Regular",f="lceil",p=667):t==="\\rfloor"||t==="\u230B"?(h=l="\u23A5",d="\u23A6",m="Size4-Regular",f="rfloor",p=667):t==="\\rceil"||t==="\u2309"?(l="\u23A4",h=d="\u23A5",m="Size4-Regular",f="rceil",p=667):t==="("||t==="\\lparen"?(l="\u239B",h="\u239C",d="\u239D",m="Size4-Regular",f="lparen",p=875):t===")"||t==="\\rparen"?(l="\u239E",h="\u239F",d="\u23A0",m="Size4-Regular",f="rparen",p=875):t==="\\{"||t==="\\lbrace"?(l="\u23A7",u="\u23A8",d="\u23A9",h="\u23AA",m="Size4-Regular"):t==="\\}"||t==="\\rbrace"?(l="\u23AB",u="\u23AC",d="\u23AD",h="\u23AA",m="Size4-Regular"):t==="\\lgroup"||t==="\u27EE"?(l="\u23A7",d="\u23A9",h="\u23AA",m="Size4-Regular"):t==="\\rgroup"||t==="\u27EF"?(l="\u23AB",d="\u23AD",h="\u23AA",m="Size4-Regular"):t==="\\lmoustache"||t==="\u23B0"?(l="\u23A7",d="\u23AD",h="\u23AA",m="Size4-Regular"):(t==="\\rmoustache"||t==="\u23B1")&&(l="\u23AB",d="\u23A9",h="\u23AA",m="Size4-Regular");var g=Qx(l,m,a),y=g.height+g.depth,v=Qx(h,m,a),x=v.height+v.depth,b=Qx(d,m,a),T=b.height+b.depth,k=0,C=1;if(u!==null){var w=Qx(u,m,a);k=w.height+w.depth,C=2}var S=y+T+k,R=Math.max(0,Math.ceil((r-S)/(C*x))),L=S+R*C*x,N=i.fontMetrics().axisHeight;n&&(N*=i.sizeMultiplier);var I=L/2-N,_=[];if(f.length>0){var A=L-y-T,M=Math.round(L*1e3),D=LGe(f,Math.round(A*1e3)),P=new zc(f,D),B=$t(p/1e3),O=$t(M/1e3),$=new Gl([P],{width:B,height:O,viewBox:"0 0 "+p+" "+M}),V=Rd([],[$],i);V.height=M/1e3,V.style.width=B,V.style.height=O,_.push({type:"elem",elem:V})}else{if(_.push(C7(d,m,a)),_.push(Vk),u===null){var G=L-y-T+2*V7;_.push(w7(h,G,i))}else{var z=(L-y-T-k)/2+2*V7;_.push(w7(h,z,i)),_.push(Vk),_.push(C7(u,m,a)),_.push(Vk),_.push(w7(h,z,i))}_.push(Vk),_.push(C7(l,m,a))}var W=i.havingBaseStyle(Fr.TEXT),H=Cn({positionType:"bottom",positionData:I,children:_});return t8(Mt(["delimsizing","mult"],[H],W),Fr.TEXT,i,s)},"makeStackedDelim"),k7=80,S7=.08,E7=o(function(t,r,n,i,a){var s=RGe(t,i,n),l=new zc(t,s),u=new Gl([l],{width:"400em",height:$t(r),viewBox:"0 0 400000 "+n,preserveAspectRatio:"xMinYMin slice"});return Rd(["hide-tail"],[u],a)},"sqrtSvg"),gVe=o(function(t,r){var n=r.havingBaseSizing(),i=AQ("\\surd",t*n.sizeMultiplier,EQ,n),a=n.sizeMultiplier,s=Math.max(0,r.minRuleThickness-r.fontMetrics().sqrtRuleThickness),l,u=0,h=0,d=0,f;return i.type==="small"?(d=1e3+1e3*s+k7,t<1?a=1:t<1.4&&(a=.7),u=(1+s+S7)/a,h=(1+s)/a,l=E7("sqrtMain",u,d,s,r),l.style.minWidth="0.853em",f=.833/a):i.type==="large"?(d=(1e3+k7)*Jx[i.size],h=(Jx[i.size]+s)/a,u=(Jx[i.size]+s+S7)/a,l=E7("sqrtSize"+i.size,u,d,s,r),l.style.minWidth="1.02em",f=1/a):(u=t+s+S7,h=t+s,d=Math.floor(1e3*t+s)+k7,l=E7("sqrtTall",u,d,s,r),l.style.minWidth="0.742em",f=1.056),l.height=h,l.style.height=$t(u),{span:l,advanceWidth:f,ruleWidth:(r.fontMetrics().sqrtRuleThickness+s)*a}},"makeSqrtImage"),wQ=new Set(["(","\\lparen",")","\\rparen","[","\\lbrack","]","\\rbrack","\\{","\\lbrace","\\}","\\rbrace","\\lfloor","\\rfloor","\u230A","\u230B","\\lceil","\\rceil","\u2308","\u2309","\\surd"]),yVe=new Set(["\\uparrow","\\downarrow","\\updownarrow","\\Uparrow","\\Downarrow","\\Updownarrow","|","\\|","\\vert","\\Vert","\\lvert","\\rvert","\\lVert","\\rVert","\\lgroup","\\rgroup","\u27EE","\u27EF","\\lmoustache","\\rmoustache","\u23B0","\u23B1"]),kQ=new Set(["<",">","\\langle","\\rangle","/","\\backslash","\\lt","\\gt"]),Jx=[0,1.2,1.8,2.4,3],SQ=o(function(t,r,n,i,a){if(t==="<"||t==="\\lt"||t==="\u27E8"?t="\\langle":(t===">"||t==="\\gt"||t==="\u27E9")&&(t="\\rangle"),wQ.has(t)||kQ.has(t))return TQ(t,r,!1,n,i,a);if(yVe.has(t))return CQ(t,Jx[r],!1,n,i,a);throw new Pt("Illegal delimiter: '"+t+"'")},"makeSizedDelim"),vVe=[{type:"small",style:Fr.SCRIPTSCRIPT},{type:"small",style:Fr.SCRIPT},{type:"small",style:Fr.TEXT},{type:"large",size:1},{type:"large",size:2},{type:"large",size:3},{type:"large",size:4}],xVe=[{type:"small",style:Fr.SCRIPTSCRIPT},{type:"small",style:Fr.SCRIPT},{type:"small",style:Fr.TEXT},{type:"stack"}],EQ=[{type:"small",style:Fr.SCRIPTSCRIPT},{type:"small",style:Fr.SCRIPT},{type:"small",style:Fr.TEXT},{type:"large",size:1},{type:"large",size:2},{type:"large",size:3},{type:"large",size:4},{type:"stack"}],bVe=o(function(t){if(t.type==="small")return"Main-Regular";if(t.type==="large")return"Size"+t.size+"-Regular";if(t.type==="stack")return"Size4-Regular";var r=t.type;throw new Error("Add support for delim type '"+r+"' here.")},"delimTypeToFont"),AQ=o(function(t,r,n,i){for(var a=Math.min(2,3-i.style.size),s=a;s<n.length;s++){var l=n[s];if(l.type==="stack")break;var u=Qx(t,bVe(l),"math"),h=u.height+u.depth;if(l.type==="small"){var d=i.havingBaseStyle(l.style);h*=d.sizeMultiplier}if(h>r)return l}return n[n.length-1]},"traverseSequence"),W7=o(function(t,r,n,i,a,s){t==="<"||t==="\\lt"||t==="\u27E8"?t="\\langle":(t===">"||t==="\\gt"||t==="\u27E9")&&(t="\\rangle");var l;kQ.has(t)?l=vVe:wQ.has(t)?l=EQ:l=xVe;var u=AQ(t,r,l,i);return u.type==="small"?dVe(t,u.style,n,i,a,s):u.type==="large"?TQ(t,u.size,n,i,a,s):CQ(t,r,n,i,a,s)},"makeCustomSizedDelim"),A7=o(function(t,r,n,i,a,s){var l=i.fontMetrics().axisHeight*i.sizeMultiplier,u=901,h=5/i.fontMetrics().ptPerEm,d=Math.max(r-l,n+l),f=Math.max(d/500*u,2*d-h);return W7(t,f,!0,i,a,s)},"makeLeftRightDelim"),DZ={"\\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}},TVe=new Set(["(","\\lparen",")","\\rparen","[","\\lbrack","]","\\rbrack","\\{","\\lbrace","\\}","\\rbrace","\\lfloor","\\rfloor","\u230A","\u230B","\\lceil","\\rceil","\u2308","\u2309","<",">","\\langle","\u27E8","\\rangle","\u27E9","\\lt","\\gt","\\lvert","\\rvert","\\lVert","\\rVert","\\lgroup","\\rgroup","\u27EE","\u27EF","\\lmoustache","\\rmoustache","\u23B0","\u23B1","/","\\backslash","|","\\vert","\\|","\\Vert","\\uparrow","\\Uparrow","\\downarrow","\\Downarrow","\\updownarrow","\\Updownarrow","."]);o(cS,"checkDelimiter");Ut({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:o((e,t)=>{var r=cS(t[0],e);return{type:"delimsizing",mode:e.parser.mode,size:DZ[e.funcName].size,mclass:DZ[e.funcName].mclass,delim:r.text}},"handler"),htmlBuilder:o((e,t)=>e.delim==="."?Mt([e.mclass]):SQ(e.delim,e.size,t,e.mode,[e.mclass]),"htmlBuilder"),mathmlBuilder:o(e=>{var t=[];e.delim!=="."&&t.push(cl(e.delim,e.mode));var r=new Nt("mo",t);e.mclass==="mopen"||e.mclass==="mclose"?r.setAttribute("fence","true"):r.setAttribute("fence","false"),r.setAttribute("stretchy","true");var n=$t(Jx[e.size]);return r.setAttribute("minsize",n),r.setAttribute("maxsize",n),r},"mathmlBuilder")});o(IZ,"assertParsed");Ut({type:"leftright-right",names:["\\right"],props:{numArgs:1,primitive:!0},handler:o((e,t)=>{var r=e.parser.gullet.macros.get("\\current@color");if(r&&typeof r!="string")throw new Pt("\\current@color set to non-string in \\right");return{type:"leftright-right",mode:e.parser.mode,delim:cS(t[0],e).text,color:r}},"handler")});Ut({type:"leftright",names:["\\left"],props:{numArgs:1,primitive:!0},handler:o((e,t)=>{var r=cS(t[0],e),n=e.parser;++n.leftrightDepth;var i=n.parseExpression(!1);--n.leftrightDepth,n.expect("\\right",!1);var a=Ur(n.parseFunction(),"leftright-right");return{type:"leftright",mode:n.mode,body:i,left:r.text,right:a.delim,rightColor:a.color}},"handler"),htmlBuilder:o((e,t)=>{IZ(e);for(var r=ia(e.body,t,!0,["mopen","mclose"]),n=0,i=0,a=!1,s=0;s<r.length;s++)r[s].isMiddle?a=!0:(n=Math.max(r[s].height,n),i=Math.max(r[s].depth,i));n*=t.sizeMultiplier,i*=t.sizeMultiplier;var l;if(e.left==="."?l=nb(t,["mopen"]):l=A7(e.left,n,i,t,e.mode,["mopen"]),r.unshift(l),a)for(var u=1;u<r.length;u++){var h=r[u],d=h.isMiddle;d&&(r[u]=A7(d.delim,n,i,d.options,e.mode,[]))}var f;if(e.right===".")f=nb(t,["mclose"]);else{var p=e.rightColor?t.withColor(e.rightColor):t;f=A7(e.right,n,i,p,e.mode,["mclose"])}return r.push(f),Mt(["minner"],r,t)},"htmlBuilder"),mathmlBuilder:o((e,t)=>{IZ(e);var r=Po(e.body,t);if(e.left!=="."){var n=new Nt("mo",[cl(e.left,e.mode)]);n.setAttribute("fence","true"),r.unshift(n)}if(e.right!=="."){var i=new Nt("mo",[cl(e.right,e.mode)]);i.setAttribute("fence","true"),e.rightColor&&i.setAttribute("mathcolor",e.rightColor),r.push(i)}return Q7(r)},"mathmlBuilder")});Ut({type:"middle",names:["\\middle"],props:{numArgs:1,primitive:!0},handler:o((e,t)=>{var r=cS(t[0],e);if(!e.parser.leftrightDepth)throw new Pt("\\middle without preceding \\left",r);return{type:"middle",mode:e.parser.mode,delim:r.text}},"handler"),htmlBuilder:o((e,t)=>{var r;if(e.delim===".")r=nb(t,[]);else{r=SQ(e.delim,1,t,e.mode,[]);var n={delim:e.delim,options:t};r.isMiddle=n}return r},"htmlBuilder"),mathmlBuilder:o((e,t)=>{var r=e.delim==="\\vert"||e.delim==="|"?cl("|","text"):cl(e.delim,e.mode),n=new Nt("mo",[r]);return n.setAttribute("fence","true"),n.setAttribute("lspace","0.05em"),n.setAttribute("rspace","0.05em"),n},"mathmlBuilder")});uS=o((e,t)=>{var r=Z0(wn(e.body,t),t),n=e.label.slice(1),i=t.sizeMultiplier,a,s=0,l=ih(e.body);if(n==="sout")a=Mt(["stretchy","sout"]),a.height=t.fontMetrics().defaultRuleThickness/i,s=-.5*t.fontMetrics().xHeight;else if(n==="phase"){var u=xi({number:.6,unit:"pt"},t),h=xi({number:.35,unit:"ex"},t),d=t.havingBaseSizing();i=i/d.sizeMultiplier;var f=r.height+r.depth+u+h;r.style.paddingLeft=$t(f/2+u);var p=Math.floor(1e3*f*i),m=EGe(p),g=new Gl([new zc("phase",m)],{width:"400em",height:$t(p/1e3),viewBox:"0 0 400000 "+p,preserveAspectRatio:"xMinYMin slice"});a=Rd(["hide-tail"],[g],t),a.style.height=$t(f),s=r.depth+u+h}else{/cancel/.test(n)?l||r.classes.push("cancel-pad"):n==="angl"?r.classes.push("anglpad"):r.classes.push("boxpad");var y=0,v=0,x=0;/box/.test(n)?(x=Math.max(t.fontMetrics().fboxrule,t.minRuleThickness),y=t.fontMetrics().fboxsep+(n==="colorbox"?0:x),v=y):n==="angl"?(x=Math.max(t.fontMetrics().defaultRuleThickness,t.minRuleThickness),y=4*x,v=Math.max(0,.25-r.depth)):(y=l?.2:0,v=y),a=aVe(r,n,y,v,t),/fbox|boxed|fcolorbox/.test(n)?(a.style.borderStyle="solid",a.style.borderWidth=$t(x)):n==="angl"&&x!==.049&&(a.style.borderTopWidth=$t(x),a.style.borderRightWidth=$t(x)),s=r.depth+v,e.backgroundColor&&(a.style.backgroundColor=e.backgroundColor,e.borderColor&&(a.style.borderColor=e.borderColor))}var b;if(e.backgroundColor)b=Cn({positionType:"individualShift",children:[{type:"elem",elem:a,shift:s},{type:"elem",elem:r,shift:0}]});else{var T=/cancel|phase/.test(n)?["svg-align"]:[];b=Cn({positionType:"individualShift",children:[{type:"elem",elem:r,shift:0},{type:"elem",elem:a,shift:s,wrapperClasses:T}]})}return/cancel/.test(n)&&(b.height=r.height,b.depth=r.depth),/cancel/.test(n)&&!l?Mt(["mord","cancel-lap"],[b],t):Mt(["mord"],[b],t)},"htmlBuilder$7"),hS=o((e,t)=>{var r=0,n=new Nt(e.label.includes("colorbox")?"mpadded":"menclose",[Wn(e.body,t)]);switch(e.label){case"\\cancel":n.setAttribute("notation","updiagonalstrike");break;case"\\bcancel":n.setAttribute("notation","downdiagonalstrike");break;case"\\phase":n.setAttribute("notation","phasorangle");break;case"\\sout":n.setAttribute("notation","horizontalstrike");break;case"\\fbox":n.setAttribute("notation","box");break;case"\\angl":n.setAttribute("notation","actuarial");break;case"\\fcolorbox":case"\\colorbox":if(r=t.fontMetrics().fboxsep*t.fontMetrics().ptPerEm,n.setAttribute("width","+"+2*r+"pt"),n.setAttribute("height","+"+2*r+"pt"),n.setAttribute("lspace",r+"pt"),n.setAttribute("voffset",r+"pt"),e.label==="\\fcolorbox"){var i=Math.max(t.fontMetrics().fboxrule,t.minRuleThickness);n.setAttribute("style","border: "+$t(i)+" solid "+e.borderColor)}break;case"\\xcancel":n.setAttribute("notation","updiagonalstrike downdiagonalstrike");break}return e.backgroundColor&&n.setAttribute("mathbackground",e.backgroundColor),n},"mathmlBuilder$6");Ut({type:"enclose",names:["\\colorbox"],props:{numArgs:2,allowedInText:!0,argTypes:["color","text"]},handler(e,t,r){var{parser:n,funcName:i}=e,a=Ur(t[0],"color-token").color,s=t[1];return{type:"enclose",mode:n.mode,label:i,backgroundColor:a,body:s}},htmlBuilder:uS,mathmlBuilder:hS});Ut({type:"enclose",names:["\\fcolorbox"],props:{numArgs:3,allowedInText:!0,argTypes:["color","color","text"]},handler(e,t,r){var{parser:n,funcName:i}=e,a=Ur(t[0],"color-token").color,s=Ur(t[1],"color-token").color,l=t[2];return{type:"enclose",mode:n.mode,label:i,backgroundColor:s,borderColor:a,body:l}},htmlBuilder:uS,mathmlBuilder:hS});Ut({type:"enclose",names:["\\fbox"],props:{numArgs:1,argTypes:["hbox"],allowedInText:!0},handler(e,t){var{parser:r}=e;return{type:"enclose",mode:r.mode,label:"\\fbox",body:t[0]}}});Ut({type:"enclose",names:["\\cancel","\\bcancel","\\xcancel","\\phase"],props:{numArgs:1},handler(e,t){var{parser:r,funcName:n}=e,i=t[0];return{type:"enclose",mode:r.mode,label:n,body:i}},htmlBuilder:uS,mathmlBuilder:hS});Ut({type:"enclose",names:["\\sout"],props:{numArgs:1,allowedInText:!0},handler(e,t){var{parser:r,funcName:n}=e;r.mode==="math"&&r.settings.reportNonstrict("mathVsSout","LaTeX's \\sout works only in text mode");var i=t[0];return{type:"enclose",mode:r.mode,label:n,body:i}},htmlBuilder:uS,mathmlBuilder:hS});Ut({type:"enclose",names:["\\angl"],props:{numArgs:1,argTypes:["hbox"],allowedInText:!1},handler(e,t){var{parser:r}=e;return{type:"enclose",mode:r.mode,label:"\\angl",body:t[0]}}});RQ={};o(Gc,"defineEnvironment");_Q={};o(Ce,"defineMacro");Qs=class e{static{o(this,"SourceLocation")}constructor(t,r,n){this.lexer=t,this.start=r,this.end=n}static range(t,r){return r?!t||!t.loc||!r.loc||t.loc.lexer!==r.loc.lexer?null:new e(t.loc.lexer,t.loc.start,r.loc.end):t&&t.loc}},Mo=class e{static{o(this,"Token")}constructor(t,r){this.text=t,this.loc=r}range(t,r){return new e(r,Qs.range(this,t))}};o(MZ,"getHLines");dS=o(e=>{var t=e.parser.settings;if(!t.displayMode)throw new Pt("{"+e.envName+"} can be used only in display mode.")},"validateAmsEnvironmentContext"),CVe=new Set(["gather","gather*"]);o(r8,"getAutoTag");o(Ld,"parseArray");o(n8,"dCellStyle");Vc=o(function(t,r){var n,i,a=t.body.length,s=t.hLinesBeforeRow,l=0,u=new Array(a),h=[],d=Math.max(r.fontMetrics().arrayRuleWidth,r.minRuleThickness),f=1/r.fontMetrics().ptPerEm,p=5*f;if(t.colSeparationType&&t.colSeparationType==="small"){var m=r.havingStyle(Fr.SCRIPT).sizeMultiplier;p=.2778*(m/r.sizeMultiplier)}var g=t.colSeparationType==="CD"?xi({number:3,unit:"ex"},r):12*f,y=3*f,v=t.arraystretch*g,x=.7*v,b=.3*v,T=0;function k(Me){for(var ve=0;ve<Me.length;++ve)ve>0&&(T+=.25),h.push({pos:T,isDashed:Me[ve]})}for(o(k,"setHLinePos"),k(s[0]),n=0;n<t.body.length;++n){var C=t.body[n],w=x,S=b;l<C.length&&(l=C.length);var R=new Array(C.length);for(i=0;i<C.length;++i){var L=wn(C[i],r);S<L.depth&&(S=L.depth),w<L.height&&(w=L.height),R[i]=L}var N=t.rowGaps[n],I=0;N&&(I=xi(N,r),I>0&&(I+=b,S<I&&(S=I),I=0)),t.addJot&&n<t.body.length-1&&(S+=y),R.height=w,R.depth=S,T+=w,R.pos=T,T+=S+I,u[n]=R,k(s[n+1])}var _=T/2+r.fontMetrics().axisHeight,A=t.cols||[],M=[],D,P,B=[];if(t.tags&&t.tags.some(Me=>Me))for(n=0;n<a;++n){var O=u[n],$=O.pos-_,V=t.tags[n],G=void 0;V===!0?G=Mt(["eqn-num"],[],r):V===!1?G=Mt([],[],r):G=Mt([],ia(V,r,!0),r),G.depth=O.depth,G.height=O.height,B.push({type:"elem",elem:G,shift:$})}for(i=0,P=0;i<l||P<A.length;++i,++P){for(var z,W=A[P],H=!0;((j=W)==null?void 0:j.type)==="separator";){var j;if(H||(D=Mt(["arraycolsep"],[]),D.style.width=$t(r.fontMetrics().doubleRuleSep),M.push(D)),W.separator==="|"||W.separator===":"){var Q=W.separator==="|"?"solid":"dashed",U=Mt(["vertical-separator"],[],r);U.style.height=$t(T),U.style.borderRightWidth=$t(d),U.style.borderRightStyle=Q,U.style.margin="0 "+$t(-d/2);var oe=T-_;oe&&(U.style.verticalAlign=$t(-oe)),M.push(U)}else throw new Pt("Invalid separator type: "+W.separator);P++,W=A[P],H=!1}if(!(i>=l)){var te=void 0;if(i>0||t.hskipBeforeAndAfter){var le,ie;te=(le=(ie=W)==null?void 0:ie.pregap)!=null?le:p,te!==0&&(D=Mt(["arraycolsep"],[]),D.style.width=$t(te),M.push(D))}var ae=[];for(n=0;n<a;++n){var Re=u[n],be=Re[i];if(be){var Pe=Re.pos-_;be.depth=Re.depth,be.height=Re.height,ae.push({type:"elem",elem:be,shift:Pe})}}var Ge=Cn({positionType:"individualShift",children:ae}),Oe=Mt(["col-align-"+(((z=W)==null?void 0:z.align)||"c")],[Ge]);if(M.push(Oe),i<l-1||t.hskipBeforeAndAfter){var ue,ye;te=(ue=(ye=W)==null?void 0:ye.postgap)!=null?ue:p,te!==0&&(D=Mt(["arraycolsep"],[]),D.style.width=$t(te),M.push(D))}}}var ke=Mt(["mtable"],M);if(h.length>0){for(var ce=K0("hline",r,d),re=K0("hdashline",r,d),J=[{type:"elem",elem:ke,shift:0}];h.length>0;){var se=h.pop(),ge=se.pos-_;se.isDashed?J.push({type:"elem",elem:re,shift:ge}):J.push({type:"elem",elem:ce,shift:ge})}ke=Cn({positionType:"individualShift",children:J})}if(B.length===0)return Mt(["mord"],[ke],r);var Te=Cn({positionType:"individualShift",children:B}),we=Mt(["tag"],[Te],r);return sh([ke,we])},"htmlBuilder"),wVe={c:"center ",l:"left ",r:"right "},Wc=o(function(t,r){for(var n=[],i=new Nt("mtd",[],["mtr-glue"]),a=new Nt("mtd",[],["mml-eqn-num"]),s=0;s<t.body.length;s++){for(var l=t.body[s],u=[],h=0;h<l.length;h++)u.push(new Nt("mtd",[Wn(l[h],r)]));t.tags&&t.tags[s]&&(u.unshift(i),u.push(i),t.leqno?u.unshift(a):u.push(a)),n.push(new Nt("mtr",u))}var d=new Nt("mtable",n),f=t.arraystretch===.5?.1:.16+t.arraystretch-1+(t.addJot?.09:0);d.setAttribute("rowspacing",$t(f));var p="",m="";if(t.cols&&t.cols.length>0){var g=t.cols,y="",v=!1,x=0,b=g.length;g[0].type==="separator"&&(p+="top ",x=1),g[g.length-1].type==="separator"&&(p+="bottom ",b-=1);for(var T=x;T<b;T++){var k=g[T];k.type==="align"?(m+=wVe[k.align],v&&(y+="none "),v=!0):k.type==="separator"&&v&&(y+=k.separator==="|"?"solid ":"dashed ",v=!1)}d.setAttribute("columnalign",m.trim()),/[sd]/.test(y)&&d.setAttribute("columnlines",y.trim())}if(t.colSeparationType==="align"){for(var C=t.cols||[],w="",S=1;S<C.length;S++)w+=S%2?"0em ":"1em ";d.setAttribute("columnspacing",w.trim())}else t.colSeparationType==="alignat"||t.colSeparationType==="gather"?d.setAttribute("columnspacing","0em"):t.colSeparationType==="small"?d.setAttribute("columnspacing","0.2778em"):t.colSeparationType==="CD"?d.setAttribute("columnspacing","0.5em"):d.setAttribute("columnspacing","1em");var R="",L=t.hLinesBeforeRow;p+=L[0].length>0?"left ":"",p+=L[L.length-1].length>0?"right ":"";for(var N=1;N<L.length-1;N++)R+=L[N].length===0?"none ":L[N][0]?"dashed ":"solid ";return/[sd]/.test(R)&&d.setAttribute("rowlines",R.trim()),p!==""&&(d=new Nt("menclose",[d]),d.setAttribute("notation",p.trim())),t.arraystretch&&t.arraystretch<1&&(d=new Nt("mstyle",[d]),d.setAttribute("scriptlevel","1")),d},"mathmlBuilder"),LQ=o(function(t,r){t.envName.includes("ed")||dS(t);var n=[],i=t.envName.includes("at")?"alignat":"align",a=t.envName==="split",s=Ld(t.parser,{cols:n,addJot:!0,autoTag:a?void 0:r8(t.envName),emptySingleRow:!0,colSeparationType:i,maxNumCols:a?2:void 0,leqno:t.parser.settings.leqno},"display"),l=0,u=0,h={type:"ordgroup",mode:t.mode,body:[]};if(r[0]&&r[0].type==="ordgroup"){for(var d="",f=0;f<r[0].body.length;f++){var p=Ur(r[0].body[f],"textord");d+=p.text}l=Number(d),u=l*2}var m=!u;s.body.forEach(function(x){for(var b=1;b<x.length;b+=2){var T=Ur(x[b],"styling"),k=Ur(T.body[0],"ordgroup");k.body.unshift(h)}if(m)u<x.length&&(u=x.length);else{var C=x.length/2;if(l<C)throw new Pt("Too many math in a row: "+("expected "+l+", but got "+C),x[0])}});for(var g=0;g<u;++g){var y="r",v=0;g%2===1?y="l":g>0&&m&&(v=1),n[g]={type:"align",align:y,pregap:v,postgap:0}}return s.colSeparationType=m?"align":"alignat",s},"alignedHandler");Gc({type:"array",names:["array","darray"],props:{numArgs:1},handler(e,t){var r=oS(t[0]),n=r?[t[0]]:Ur(t[0],"ordgroup").body,i=n.map(function(s){var l=sS(s),u=l.text;if("lcr".includes(u))return{type:"align",align:u};if(u==="|")return{type:"separator",separator:"|"};if(u===":")return{type:"separator",separator:":"};throw new Pt("Unknown column alignment: "+u,s)}),a={cols:i,hskipBeforeAndAfter:!0,maxNumCols:i.length};return Ld(e.parser,a,n8(e.envName))},htmlBuilder:Vc,mathmlBuilder:Wc});Gc({type:"array",names:["matrix","pmatrix","bmatrix","Bmatrix","vmatrix","Vmatrix","matrix*","pmatrix*","bmatrix*","Bmatrix*","vmatrix*","Vmatrix*"],props:{numArgs:0},handler(e){var t={matrix:null,pmatrix:["(",")"],bmatrix:["[","]"],Bmatrix:["\\{","\\}"],vmatrix:["|","|"],Vmatrix:["\\Vert","\\Vert"]}[e.envName.replace("*","")],r="c",n={hskipBeforeAndAfter:!1,cols:[{type:"align",align:r}]};if(e.envName.charAt(e.envName.length-1)==="*"){var i=e.parser;if(i.consumeSpaces(),i.fetch().text==="["){if(i.consume(),i.consumeSpaces(),r=i.fetch().text,!"lcr".includes(r))throw new Pt("Expected l or c or r",i.nextToken);i.consume(),i.consumeSpaces(),i.expect("]"),i.consume(),n.cols=[{type:"align",align:r}]}}var a=Ld(e.parser,n,n8(e.envName)),s=Math.max(0,...a.body.map(l=>l.length));return a.cols=new Array(s).fill({type:"align",align:r}),t?{type:"leftright",mode:e.mode,body:[a],left:t[0],right:t[1],rightColor:void 0}:a},htmlBuilder:Vc,mathmlBuilder:Wc});Gc({type:"array",names:["smallmatrix"],props:{numArgs:0},handler(e){var t={arraystretch:.5},r=Ld(e.parser,t,"script");return r.colSeparationType="small",r},htmlBuilder:Vc,mathmlBuilder:Wc});Gc({type:"array",names:["subarray"],props:{numArgs:1},handler(e,t){var r=oS(t[0]),n=r?[t[0]]:Ur(t[0],"ordgroup").body,i=n.map(function(l){var u=sS(l),h=u.text;if("lc".includes(h))return{type:"align",align:h};throw new Pt("Unknown column alignment: "+h,l)});if(i.length>1)throw new Pt("{subarray} can contain only one column");var a={cols:i,hskipBeforeAndAfter:!1,arraystretch:.5},s=Ld(e.parser,a,"script");if(s.body.length>0&&s.body[0].length>1)throw new Pt("{subarray} can contain only one column");return s},htmlBuilder:Vc,mathmlBuilder:Wc});Gc({type:"array",names:["cases","dcases","rcases","drcases"],props:{numArgs:0},handler(e){var t={arraystretch:1.2,cols:[{type:"align",align:"l",pregap:0,postgap:1},{type:"align",align:"l",pregap:0,postgap:0}]},r=Ld(e.parser,t,n8(e.envName));return{type:"leftright",mode:e.mode,body:[r],left:e.envName.includes("r")?".":"\\{",right:e.envName.includes("r")?"\\}":".",rightColor:void 0}},htmlBuilder:Vc,mathmlBuilder:Wc});Gc({type:"array",names:["align","align*","aligned","split"],props:{numArgs:0},handler:LQ,htmlBuilder:Vc,mathmlBuilder:Wc});Gc({type:"array",names:["gathered","gather","gather*"],props:{numArgs:0},handler(e){CVe.has(e.envName)&&dS(e);var t={cols:[{type:"align",align:"c"}],addJot:!0,colSeparationType:"gather",autoTag:r8(e.envName),emptySingleRow:!0,leqno:e.parser.settings.leqno};return Ld(e.parser,t,"display")},htmlBuilder:Vc,mathmlBuilder:Wc});Gc({type:"array",names:["alignat","alignat*","alignedat"],props:{numArgs:1},handler:LQ,htmlBuilder:Vc,mathmlBuilder:Wc});Gc({type:"array",names:["equation","equation*"],props:{numArgs:0},handler(e){dS(e);var t={autoTag:r8(e.envName),emptySingleRow:!0,singleRow:!0,maxNumCols:1,leqno:e.parser.settings.leqno};return Ld(e.parser,t,"display")},htmlBuilder:Vc,mathmlBuilder:Wc});Gc({type:"array",names:["CD"],props:{numArgs:0},handler(e){return dS(e),uVe(e.parser)},htmlBuilder:Vc,mathmlBuilder:Wc});Ce("\\nonumber","\\gdef\\@eqnsw{0}");Ce("\\notag","\\nonumber");Ut({type:"text",names:["\\hline","\\hdashline"],props:{numArgs:0,allowedInText:!0,allowedInMath:!0},handler(e,t){throw new Pt(e.funcName+" valid only within array environment")}});NZ=RQ;Ut({type:"environment",names:["\\begin","\\end"],props:{numArgs:1,argTypes:["text"]},handler(e,t){var{parser:r,funcName:n}=e,i=t[0];if(i.type!=="ordgroup")throw new Pt("Invalid environment name",i);for(var a="",s=0;s<i.body.length;++s)a+=Ur(i.body[s],"textord").text;if(n==="\\begin"){if(!NZ.hasOwnProperty(a))throw new Pt("No such environment: "+a,i);var l=NZ[a],{args:u,optArgs:h}=r.parseArguments("\\begin{"+a+"}",l),d={mode:r.mode,envName:a,parser:r},f=l.handler(d,u,h);r.expect("\\end",!1);var p=r.nextToken,m=Ur(r.parseFunction(),"environment");if(m.name!==a)throw new Pt("Mismatch: \\begin{"+a+"} matched by \\end{"+m.name+"}",p);return f}return{type:"environment",mode:r.mode,name:a,nameGroup:i}}});DQ=o((e,t)=>{var r=e.font,n=t.withFont(r);return wn(e.body,n)},"htmlBuilder$5"),IQ=o((e,t)=>{var r=e.font,n=t.withFont(r);return Wn(e.body,n)},"mathmlBuilder$4"),PZ={"\\Bbb":"\\mathbb","\\bold":"\\mathbf","\\frak":"\\mathfrak","\\bm":"\\boldsymbol"};Ut({type:"font",names:["\\mathrm","\\mathit","\\mathbf","\\mathnormal","\\mathsfit","\\mathbb","\\mathcal","\\mathfrak","\\mathscr","\\mathsf","\\mathtt","\\Bbb","\\bold","\\frak"],props:{numArgs:1,allowedInArgument:!0},handler:o((e,t)=>{var{parser:r,funcName:n}=e,i=Zk(t[0]),a=n;return a in PZ&&(a=PZ[a]),{type:"font",mode:r.mode,font:a.slice(1),body:i}},"handler"),htmlBuilder:DQ,mathmlBuilder:IQ});Ut({type:"mclass",names:["\\boldsymbol","\\bm"],props:{numArgs:1},handler:o((e,t)=>{var{parser:r}=e,n=t[0];return{type:"mclass",mode:r.mode,mclass:lS(n),body:[{type:"font",mode:r.mode,font:"boldsymbol",body:n}],isCharacterBox:ih(n)}},"handler")});Ut({type:"font",names:["\\rm","\\sf","\\tt","\\bf","\\it","\\cal"],props:{numArgs:0,allowedInText:!0},handler:o((e,t)=>{var{parser:r,funcName:n,breakOnTokenText:i}=e,{mode:a}=r,s=r.parseExpression(!0,i),l="math"+n.slice(1);return{type:"font",mode:a,font:l,body:{type:"ordgroup",mode:r.mode,body:s}}},"handler"),htmlBuilder:DQ,mathmlBuilder:IQ});kVe=o((e,t)=>{var r=t.style,n=r.fracNum(),i=r.fracDen(),a;a=t.havingStyle(n);var s=wn(e.numer,a,t);if(e.continued){var l=8.5/t.fontMetrics().ptPerEm,u=3.5/t.fontMetrics().ptPerEm;s.height=s.height<l?l:s.height,s.depth=s.depth<u?u:s.depth}a=t.havingStyle(i);var h=wn(e.denom,a,t),d,f,p;e.hasBarLine?(e.barSize?(f=xi(e.barSize,t),d=K0("frac-line",t,f)):d=K0("frac-line",t),f=d.height,p=d.height):(d=null,f=0,p=t.fontMetrics().defaultRuleThickness);var m,g,y;r.size===Fr.DISPLAY.size?(m=t.fontMetrics().num1,f>0?g=3*p:g=7*p,y=t.fontMetrics().denom1):(f>0?(m=t.fontMetrics().num2,g=p):(m=t.fontMetrics().num3,g=3*p),y=t.fontMetrics().denom2);var v;if(d){var b=t.fontMetrics().axisHeight;m-s.depth-(b+.5*f)<g&&(m+=g-(m-s.depth-(b+.5*f))),b-.5*f-(h.height-y)<g&&(y+=g-(b-.5*f-(h.height-y)));var T=-(b-.5*f);v=Cn({positionType:"individualShift",children:[{type:"elem",elem:h,shift:y},{type:"elem",elem:d,shift:T},{type:"elem",elem:s,shift:-m}]})}else{var x=m-s.depth-(h.height-y);x<g&&(m+=.5*(g-x),y+=.5*(g-x)),v=Cn({positionType:"individualShift",children:[{type:"elem",elem:h,shift:y},{type:"elem",elem:s,shift:-m}]})}a=t.havingStyle(r),v.height*=a.sizeMultiplier/t.sizeMultiplier,v.depth*=a.sizeMultiplier/t.sizeMultiplier;var k;r.size===Fr.DISPLAY.size?k=t.fontMetrics().delim1:r.size===Fr.SCRIPTSCRIPT.size?k=t.havingStyle(Fr.SCRIPT).fontMetrics().delim2:k=t.fontMetrics().delim2;var C,w;return e.leftDelim==null?C=nb(t,["mopen"]):C=W7(e.leftDelim,k,!0,t.havingStyle(r),e.mode,["mopen"]),e.continued?w=Mt([]):e.rightDelim==null?w=nb(t,["mclose"]):w=W7(e.rightDelim,k,!0,t.havingStyle(r),e.mode,["mclose"]),Mt(["mord"].concat(a.sizingClasses(t)),[C,Mt(["mfrac"],[v]),w],t)},"htmlBuilder$4"),SVe=o((e,t)=>{var r=new Nt("mfrac",[Wn(e.numer,t),Wn(e.denom,t)]);if(!e.hasBarLine)r.setAttribute("linethickness","0px");else if(e.barSize){var n=xi(e.barSize,t);r.setAttribute("linethickness",$t(n))}if(e.leftDelim!=null||e.rightDelim!=null){var i=[];if(e.leftDelim!=null){var a=new Nt("mo",[new Ei(e.leftDelim.replace("\\",""))]);a.setAttribute("fence","true"),i.push(a)}if(i.push(r),e.rightDelim!=null){var s=new Nt("mo",[new Ei(e.rightDelim.replace("\\",""))]);s.setAttribute("fence","true"),i.push(s)}return Q7(i)}return r},"mathmlBuilder$3"),MQ=o((e,t)=>{if(!t)return e;var r={type:"styling",mode:e.mode,style:t,body:[e]};return r},"wrapWithStyle");Ut({type:"genfrac",names:["\\cfrac","\\dfrac","\\frac","\\tfrac","\\dbinom","\\binom","\\tbinom","\\\\atopfrac","\\\\bracefrac","\\\\brackfrac"],props:{numArgs:2,allowedInArgument:!0},handler:o((e,t)=>{var{parser:r,funcName:n}=e,i=t[0],a=t[1],s,l=null,u=null;switch(n){case"\\cfrac":case"\\dfrac":case"\\frac":case"\\tfrac":s=!0;break;case"\\\\atopfrac":s=!1;break;case"\\dbinom":case"\\binom":case"\\tbinom":s=!1,l="(",u=")";break;case"\\\\bracefrac":s=!1,l="\\{",u="\\}";break;case"\\\\brackfrac":s=!1,l="[",u="]";break;default:throw new Error("Unrecognized genfrac command")}var h=n==="\\cfrac",d=null;return h||n.startsWith("\\d")?d="display":n.startsWith("\\t")&&(d="text"),MQ({type:"genfrac",mode:r.mode,numer:i,denom:a,continued:h,hasBarLine:s,leftDelim:l,rightDelim:u,barSize:null},d)},"handler"),htmlBuilder:kVe,mathmlBuilder:SVe});Ut({type:"infix",names:["\\over","\\choose","\\atop","\\brace","\\brack"],props:{numArgs:0,infix:!0},handler(e){var{parser:t,funcName:r,token:n}=e,i;switch(r){case"\\over":i="\\frac";break;case"\\choose":i="\\binom";break;case"\\atop":i="\\\\atopfrac";break;case"\\brace":i="\\\\bracefrac";break;case"\\brack":i="\\\\brackfrac";break;default:throw new Error("Unrecognized infix genfrac command")}return{type:"infix",mode:t.mode,replaceWith:i,token:n}}});OZ=["display","text","script","scriptscript"],BZ=o(function(t){var r=null;return t.length>0&&(r=t,r=r==="."?null:r),r},"delimFromValue");Ut({type:"genfrac",names:["\\genfrac"],props:{numArgs:6,allowedInArgument:!0,argTypes:["math","math","size","text","math","math"]},handler(e,t){var{parser:r}=e,n=t[4],i=t[5],a=Zk(t[0]),s=a.type==="atom"&&a.family==="open"?BZ(a.text):null,l=Zk(t[1]),u=l.type==="atom"&&l.family==="close"?BZ(l.text):null,h=Ur(t[2],"size"),d,f=null;h.isBlank?d=!0:(f=h.value,d=f.number>0);var p=null,m=t[3];if(m.type==="ordgroup"){if(m.body.length>0){var g=Ur(m.body[0],"textord");p=OZ[Number(g.text)]}}else m=Ur(m,"textord"),p=OZ[Number(m.text)];return MQ({type:"genfrac",mode:r.mode,numer:n,denom:i,continued:!1,hasBarLine:d,barSize:f,leftDelim:s,rightDelim:u},p)}});Ut({type:"infix",names:["\\above"],props:{numArgs:1,argTypes:["size"],infix:!0},handler(e,t){var{parser:r,funcName:n,token:i}=e;return{type:"infix",mode:r.mode,replaceWith:"\\\\abovefrac",size:Ur(t[0],"size").value,token:i}}});Ut({type:"genfrac",names:["\\\\abovefrac"],props:{numArgs:3,argTypes:["math","size","math"]},handler:o((e,t)=>{var{parser:r,funcName:n}=e,i=t[0],a=Ur(t[1],"infix").size;if(!a)throw new Error("\\\\abovefrac expected size, but got "+String(a));var s=t[2],l=a.number>0;return{type:"genfrac",mode:r.mode,numer:i,denom:s,continued:!1,hasBarLine:l,barSize:a,leftDelim:null,rightDelim:null}},"handler")});NQ=o((e,t)=>{var r=t.style,n,i;e.type==="supsub"?(n=e.sup?wn(e.sup,t.havingStyle(r.sup()),t):wn(e.sub,t.havingStyle(r.sub()),t),i=Ur(e.base,"horizBrace")):i=Ur(e,"horizBrace");var a=wn(i.base,t.havingBaseStyle(Fr.DISPLAY)),s=aS(i,t),l;if(i.isOver?(l=Cn({positionType:"firstBaseline",children:[{type:"elem",elem:a},{type:"kern",size:.1},{type:"elem",elem:s}]}),l.children[0].children[0].children[1].classes.push("svg-align")):(l=Cn({positionType:"bottom",positionData:a.depth+.1+s.height,children:[{type:"elem",elem:s},{type:"kern",size:.1},{type:"elem",elem:a}]}),l.children[0].children[0].children[0].classes.push("svg-align")),n){var u=Mt(["minner",i.isOver?"mover":"munder"],[l],t);i.isOver?l=Cn({positionType:"firstBaseline",children:[{type:"elem",elem:u},{type:"kern",size:.2},{type:"elem",elem:n}]}):l=Cn({positionType:"bottom",positionData:u.depth+.2+n.height+n.depth,children:[{type:"elem",elem:n},{type:"kern",size:.2},{type:"elem",elem:u}]})}return Mt(["minner",i.isOver?"mover":"munder"],[l],t)},"htmlBuilder$3"),EVe=o((e,t)=>{var r=iS(e.label);return new Nt(e.isOver?"mover":"munder",[Wn(e.base,t),r])},"mathmlBuilder$2");Ut({type:"horizBrace",names:["\\overbrace","\\underbrace","\\overbracket","\\underbracket"],props:{numArgs:1},handler(e,t){var{parser:r,funcName:n}=e;return{type:"horizBrace",mode:r.mode,label:n,isOver:n.includes("\\over"),base:t[0]}},htmlBuilder:NQ,mathmlBuilder:EVe});Ut({type:"href",names:["\\href"],props:{numArgs:2,argTypes:["url","original"],allowedInText:!0},handler:o((e,t)=>{var{parser:r}=e,n=t[1],i=Ur(t[0],"url").url;return r.settings.isTrusted({command:"\\href",url:i})?{type:"href",mode:r.mode,href:i,body:qi(n)}:r.formatUnsupportedCmd("\\href")},"handler"),htmlBuilder:o((e,t)=>{var r=ia(e.body,t,!1);return WGe(e.href,[],r,t)},"htmlBuilder"),mathmlBuilder:o((e,t)=>{var r=_d(e.body,t);return r instanceof Nt||(r=new Nt("mrow",[r])),r.setAttribute("href",e.href),r},"mathmlBuilder")});Ut({type:"href",names:["\\url"],props:{numArgs:1,argTypes:["url"],allowedInText:!0},handler:o((e,t)=>{var{parser:r}=e,n=Ur(t[0],"url").url;if(!r.settings.isTrusted({command:"\\url",url:n}))return r.formatUnsupportedCmd("\\url");for(var i=[],a=0;a<n.length;a++){var s=n[a];s==="~"&&(s="\\textasciitilde"),i.push({type:"textord",mode:"text",text:s})}var l={type:"text",mode:r.mode,font:"\\texttt",body:i};return{type:"href",mode:r.mode,href:n,body:qi(l)}},"handler")});Ut({type:"hbox",names:["\\hbox"],props:{numArgs:1,argTypes:["text"],allowedInText:!0,primitive:!0},handler(e,t){var{parser:r}=e;return{type:"hbox",mode:r.mode,body:qi(t[0])}},htmlBuilder(e,t){var r=ia(e.body,t,!1);return sh(r)},mathmlBuilder(e,t){return new Nt("mrow",Po(e.body,t))}});Ut({type:"html",names:["\\htmlClass","\\htmlId","\\htmlStyle","\\htmlData"],props:{numArgs:2,argTypes:["raw","original"],allowedInText:!0},handler:o((e,t)=>{var{parser:r,funcName:n,token:i}=e,a=Ur(t[0],"raw").string,s=t[1];r.settings.strict&&r.settings.reportNonstrict("htmlExtension","HTML extension is disabled on strict mode");var l,u={};switch(n){case"\\htmlClass":u.class=a,l={command:"\\htmlClass",class:a};break;case"\\htmlId":u.id=a,l={command:"\\htmlId",id:a};break;case"\\htmlStyle":u.style=a,l={command:"\\htmlStyle",style:a};break;case"\\htmlData":{for(var h=a.split(","),d=0;d<h.length;d++){var f=h[d],p=f.indexOf("=");if(p<0)throw new Pt("\\htmlData key/value '"+f+"' missing equals sign");var m=f.slice(0,p),g=f.slice(p+1);u["data-"+m.trim()]=g}l={command:"\\htmlData",attributes:u};break}default:throw new Error("Unrecognized html command")}return r.settings.isTrusted(l)?{type:"html",mode:r.mode,attributes:u,body:qi(s)}:r.formatUnsupportedCmd(n)},"handler"),htmlBuilder:o((e,t)=>{var r=ia(e.body,t,!1),n=["enclosing"];e.attributes.class&&n.push(...e.attributes.class.trim().split(/\s+/));var i=Mt(n,r,t);for(var a in e.attributes)a!=="class"&&e.attributes.hasOwnProperty(a)&&i.setAttribute(a,e.attributes[a]);return i},"htmlBuilder"),mathmlBuilder:o((e,t)=>_d(e.body,t),"mathmlBuilder")});Ut({type:"htmlmathml",names:["\\html@mathml"],props:{numArgs:2,allowedInArgument:!0,allowedInText:!0},handler:o((e,t)=>{var{parser:r}=e;return{type:"htmlmathml",mode:r.mode,html:qi(t[0]),mathml:qi(t[1])}},"handler"),htmlBuilder:o((e,t)=>{var r=ia(e.html,t,!1);return sh(r)},"htmlBuilder"),mathmlBuilder:o((e,t)=>_d(e.mathml,t),"mathmlBuilder")});R7=o(function(t){if(/^[-+]? *(\d+(\.\d*)?|\.\d+)$/.test(t))return{number:+t,unit:"bp"};var r=/([-+]?) *(\d+(?:\.\d*)?|\.\d+) *([a-z]{2})/.exec(t);if(!r)throw new Pt("Invalid size: '"+t+"' in \\includegraphics");var n={number:+(r[1]+r[2]),unit:r[3]};if(!ZZ(n))throw new Pt("Invalid unit: '"+n.unit+"' in \\includegraphics.");return n},"sizeData");Ut({type:"includegraphics",names:["\\includegraphics"],props:{numArgs:1,numOptionalArgs:1,argTypes:["raw","url"],allowedInText:!1},handler:o((e,t,r)=>{var{parser:n}=e,i={number:0,unit:"em"},a={number:.9,unit:"em"},s={number:0,unit:"em"},l="";if(r[0])for(var u=Ur(r[0],"raw").string,h=u.split(","),d=0;d<h.length;d++){var f=h[d].split("=");if(f.length===2){var p=f[1].trim();switch(f[0].trim()){case"alt":l=p;break;case"width":i=R7(p);break;case"height":a=R7(p);break;case"totalheight":s=R7(p);break;default:throw new Pt("Invalid key: '"+f[0]+"' in \\includegraphics.")}}}var m=Ur(t[0],"url").url;return l===""&&(l=m,l=l.replace(/^.*[\\/]/,""),l=l.substring(0,l.lastIndexOf("."))),n.settings.isTrusted({command:"\\includegraphics",url:m})?{type:"includegraphics",mode:n.mode,alt:l,width:i,height:a,totalheight:s,src:m}:n.formatUnsupportedCmd("\\includegraphics")},"handler"),htmlBuilder:o((e,t)=>{var r=xi(e.height,t),n=0;e.totalheight.number>0&&(n=xi(e.totalheight,t)-r);var i=0;e.width.number>0&&(i=xi(e.width,t));var a={height:$t(r+n)};i>0&&(a.width=$t(i)),n>0&&(a.verticalAlign=$t(-n));var s=new N7(e.src,e.alt,a);return s.height=r,s.depth=n,s},"htmlBuilder"),mathmlBuilder:o((e,t)=>{var r=new Nt("mglyph",[]);r.setAttribute("alt",e.alt);var n=xi(e.height,t),i=0;if(e.totalheight.number>0&&(i=xi(e.totalheight,t)-n,r.setAttribute("valign",$t(-i))),r.setAttribute("height",$t(n+i)),e.width.number>0){var a=xi(e.width,t);r.setAttribute("width",$t(a))}return r.setAttribute("src",e.src),r},"mathmlBuilder")});Ut({type:"kern",names:["\\kern","\\mkern","\\hskip","\\mskip"],props:{numArgs:1,argTypes:["size"],primitive:!0,allowedInText:!0},handler(e,t){var{parser:r,funcName:n}=e,i=Ur(t[0],"size");if(r.settings.strict){var a=n[1]==="m",s=i.value.unit==="mu";a?(s||r.settings.reportNonstrict("mathVsTextUnits","LaTeX's "+n+" supports only mu units, "+("not "+i.value.unit+" units")),r.mode!=="math"&&r.settings.reportNonstrict("mathVsTextUnits","LaTeX's "+n+" works only in math mode")):s&&r.settings.reportNonstrict("mathVsTextUnits","LaTeX's "+n+" doesn't support mu units")}return{type:"kern",mode:r.mode,dimension:i.value}},htmlBuilder(e,t){return iQ(e.dimension,t)},mathmlBuilder(e,t){var r=xi(e.dimension,t);return new Qk(r)}});Ut({type:"lap",names:["\\mathllap","\\mathrlap","\\mathclap"],props:{numArgs:1,allowedInText:!0},handler:o((e,t)=>{var{parser:r,funcName:n}=e,i=t[0];return{type:"lap",mode:r.mode,alignment:n.slice(5),body:i}},"handler"),htmlBuilder:o((e,t)=>{var r;e.alignment==="clap"?(r=Mt([],[wn(e.body,t)]),r=Mt(["inner"],[r],t)):r=Mt(["inner"],[wn(e.body,t)]);var n=Mt(["fix"],[]),i=Mt([e.alignment],[r,n],t),a=Mt(["strut"]);return a.style.height=$t(i.height+i.depth),i.depth&&(a.style.verticalAlign=$t(-i.depth)),i.children.unshift(a),i=Mt(["thinbox"],[i],t),Mt(["mord","vbox"],[i],t)},"htmlBuilder"),mathmlBuilder:o((e,t)=>{var r=new Nt("mpadded",[Wn(e.body,t)]);if(e.alignment!=="rlap"){var n=e.alignment==="llap"?"-1":"-0.5";r.setAttribute("lspace",n+"width")}return r.setAttribute("width","0px"),r},"mathmlBuilder")});Ut({type:"styling",names:["\\(","$"],props:{numArgs:0,allowedInText:!0,allowedInMath:!1},handler(e,t){var{funcName:r,parser:n}=e,i=n.mode;n.switchMode("math");var a=r==="\\("?"\\)":"$",s=n.parseExpression(!1,a);return n.expect(a),n.switchMode(i),{type:"styling",mode:n.mode,style:"text",body:s}}});Ut({type:"text",names:["\\)","\\]"],props:{numArgs:0,allowedInText:!0,allowedInMath:!1},handler(e,t){throw new Pt("Mismatched "+e.funcName)}});$Z=o((e,t)=>{switch(t.style.size){case Fr.DISPLAY.size:return e.display;case Fr.TEXT.size:return e.text;case Fr.SCRIPT.size:return e.script;case Fr.SCRIPTSCRIPT.size:return e.scriptscript;default:return e.text}},"chooseMathStyle");Ut({type:"mathchoice",names:["\\mathchoice"],props:{numArgs:4,primitive:!0},handler:o((e,t)=>{var{parser:r}=e;return{type:"mathchoice",mode:r.mode,display:qi(t[0]),text:qi(t[1]),script:qi(t[2]),scriptscript:qi(t[3])}},"handler"),htmlBuilder:o((e,t)=>{var r=$Z(e,t),n=ia(r,t,!1);return sh(n)},"htmlBuilder"),mathmlBuilder:o((e,t)=>{var r=$Z(e,t);return _d(r,t)},"mathmlBuilder")});PQ=o((e,t,r,n,i,a,s)=>{e=Mt([],[e]);var l=r&&ih(r),u,h;if(t){var d=wn(t,n.havingStyle(i.sup()),n);h={elem:d,kern:Math.max(n.fontMetrics().bigOpSpacing1,n.fontMetrics().bigOpSpacing3-d.depth)}}if(r){var f=wn(r,n.havingStyle(i.sub()),n);u={elem:f,kern:Math.max(n.fontMetrics().bigOpSpacing2,n.fontMetrics().bigOpSpacing4-f.height)}}var p;if(h&&u){var m=n.fontMetrics().bigOpSpacing5+u.elem.height+u.elem.depth+u.kern+e.depth+s;p=Cn({positionType:"bottom",positionData:m,children:[{type:"kern",size:n.fontMetrics().bigOpSpacing5},{type:"elem",elem:u.elem,marginLeft:$t(-a)},{type:"kern",size:u.kern},{type:"elem",elem:e},{type:"kern",size:h.kern},{type:"elem",elem:h.elem,marginLeft:$t(a)},{type:"kern",size:n.fontMetrics().bigOpSpacing5}]})}else if(u){var g=e.height-s;p=Cn({positionType:"top",positionData:g,children:[{type:"kern",size:n.fontMetrics().bigOpSpacing5},{type:"elem",elem:u.elem,marginLeft:$t(-a)},{type:"kern",size:u.kern},{type:"elem",elem:e}]})}else if(h){var y=e.depth+s;p=Cn({positionType:"bottom",positionData:y,children:[{type:"elem",elem:e},{type:"kern",size:h.kern},{type:"elem",elem:h.elem,marginLeft:$t(a)},{type:"kern",size:n.fontMetrics().bigOpSpacing5}]})}else return e;var v=[p];if(u&&a!==0&&!l){var x=Mt(["mspace"],[],n);x.style.marginRight=$t(a),v.unshift(x)}return Mt(["mop","op-limits"],v,n)},"assembleSupSub"),OQ=new Set(["\\smallint"]),J0=o((e,t)=>{var r,n,i=!1,a;e.type==="supsub"?(r=e.sup,n=e.sub,a=Ur(e.base,"op"),i=!0):a=Ur(e,"op");var s=t.style,l=!1;s.size===Fr.DISPLAY.size&&a.symbol&&!OQ.has(a.name)&&(l=!0);var u;if(a.symbol){var h=l?"Size2-Regular":"Size1-Regular",d="";if((a.name==="\\oiint"||a.name==="\\oiiint")&&(d=a.name.slice(1),a.name=d==="oiint"?"\\iint":"\\iiint"),u=Ts(a.name,h,"math",t,["mop","op-symbol",l?"large-op":"small-op"]),d.length>0){var f=u.italic,p=sQ(d+"Size"+(l?"2":"1"),t);u=Cn({positionType:"individualShift",children:[{type:"elem",elem:u,shift:0},{type:"elem",elem:p,shift:l?.08:0}]}),a.name="\\"+d,u.classes.unshift("mop"),u.italic=f}}else if(a.body){var m=ia(a.body,t,!0);m.length===1&&m[0]instanceof ws?(u=m[0],u.classes[0]="mop"):u=Mt(["mop"],m,t)}else{for(var g=[],y=1;y<a.name.length;y++)g.push(K7(a.name[y],a.mode,t));u=Mt(["mop"],g,t)}var v=0,x=0;return(u instanceof ws||a.name==="\\oiint"||a.name==="\\oiiint")&&!a.suppressBaseShift&&(v=(u.height-u.depth)/2-t.fontMetrics().axisHeight,x=u.italic||0),i?PQ(u,r,n,t,s,x,v):(v&&(u.style.position="relative",u.style.top=$t(v)),u)},"htmlBuilder$2"),ab=o((e,t)=>{var r;if(e.symbol)r=new Nt("mo",[cl(e.name,e.mode)]),OQ.has(e.name)&&r.setAttribute("largeop","false");else if(e.body)r=new Nt("mo",Po(e.body,t));else{r=new Nt("mi",[new Ei(e.name.slice(1))]);var n=new Nt("mo",[cl("\u2061","text")]);e.parentIsSupSub?r=new Nt("mrow",[r,n]):r=cQ([r,n])}return r},"mathmlBuilder$1"),AVe={"\u220F":"\\prod","\u2210":"\\coprod","\u2211":"\\sum","\u22C0":"\\bigwedge","\u22C1":"\\bigvee","\u22C2":"\\bigcap","\u22C3":"\\bigcup","\u2A00":"\\bigodot","\u2A01":"\\bigoplus","\u2A02":"\\bigotimes","\u2A04":"\\biguplus","\u2A06":"\\bigsqcup"};Ut({type:"op",names:["\\coprod","\\bigvee","\\bigwedge","\\biguplus","\\bigcap","\\bigcup","\\intop","\\prod","\\sum","\\bigotimes","\\bigoplus","\\bigodot","\\bigsqcup","\\smallint","\u220F","\u2210","\u2211","\u22C0","\u22C1","\u22C2","\u22C3","\u2A00","\u2A01","\u2A02","\u2A04","\u2A06"],props:{numArgs:0},handler:o((e,t)=>{var{parser:r,funcName:n}=e,i=n;return i.length===1&&(i=AVe[i]),{type:"op",mode:r.mode,limits:!0,parentIsSupSub:!1,symbol:!0,name:i}},"handler"),htmlBuilder:J0,mathmlBuilder:ab});Ut({type:"op",names:["\\mathop"],props:{numArgs:1,primitive:!0},handler:o((e,t)=>{var{parser:r}=e,n=t[0];return{type:"op",mode:r.mode,limits:!1,parentIsSupSub:!1,symbol:!1,body:qi(n)}},"handler"),htmlBuilder:J0,mathmlBuilder:ab});RVe={"\u222B":"\\int","\u222C":"\\iint","\u222D":"\\iiint","\u222E":"\\oint","\u222F":"\\oiint","\u2230":"\\oiiint"};Ut({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","\\tan","\\tanh","\\tg","\\th"],props:{numArgs:0},handler(e){var{parser:t,funcName:r}=e;return{type:"op",mode:t.mode,limits:!1,parentIsSupSub:!1,symbol:!1,name:r}},htmlBuilder:J0,mathmlBuilder:ab});Ut({type:"op",names:["\\det","\\gcd","\\inf","\\lim","\\max","\\min","\\Pr","\\sup"],props:{numArgs:0},handler(e){var{parser:t,funcName:r}=e;return{type:"op",mode:t.mode,limits:!0,parentIsSupSub:!1,symbol:!1,name:r}},htmlBuilder:J0,mathmlBuilder:ab});Ut({type:"op",names:["\\int","\\iint","\\iiint","\\oint","\\oiint","\\oiiint","\u222B","\u222C","\u222D","\u222E","\u222F","\u2230"],props:{numArgs:0,allowedInArgument:!0},handler(e){var{parser:t,funcName:r}=e,n=r;return n.length===1&&(n=RVe[n]),{type:"op",mode:t.mode,limits:!1,parentIsSupSub:!1,symbol:!0,name:n}},htmlBuilder:J0,mathmlBuilder:ab});BQ=o((e,t)=>{var r,n,i=!1,a;e.type==="supsub"?(r=e.sup,n=e.sub,a=Ur(e.base,"operatorname"),i=!0):a=Ur(e,"operatorname");var s;if(a.body.length>0){for(var l=a.body.map(f=>{var p="text"in f?f.text:void 0;return typeof p=="string"?{type:"textord",mode:f.mode,text:p}:f}),u=ia(l,t.withFont("mathrm"),!0),h=0;h<u.length;h++){var d=u[h];d instanceof ws&&(d.text=d.text.replace(/\u2212/,"-").replace(/\u2217/,"*"))}s=Mt(["mop"],u,t)}else s=Mt(["mop"],[],t);return i?PQ(s,r,n,t,t.style,0,0):s},"htmlBuilder$1"),_Ve=o((e,t)=>{for(var r=Po(e.body,t.withFont("mathrm")),n=!0,i=0;i<r.length;i++){var a=r[i];if(!(a instanceof Qk))if(a instanceof Nt)switch(a.type){case"mi":case"mn":case"mspace":case"mtext":break;case"mo":{var s=a.children[0];a.children.length===1&&s instanceof Ei?s.text=s.text.replace(/\u2212/,"-").replace(/\u2217/,"*"):n=!1;break}default:n=!1}else n=!1}if(n){var l=r.map(d=>d.toText()).join("");r=[new Ei(l)]}var u=new Nt("mi",r);u.setAttribute("mathvariant","normal");var h=new Nt("mo",[cl("\u2061","text")]);return e.parentIsSupSub?new Nt("mrow",[u,h]):cQ([u,h])},"mathmlBuilder");Ut({type:"operatorname",names:["\\operatorname@","\\operatornamewithlimits"],props:{numArgs:1},handler:o((e,t)=>{var{parser:r,funcName:n}=e,i=t[0];return{type:"operatorname",mode:r.mode,body:qi(i),alwaysHandleSupSub:n==="\\operatornamewithlimits",limits:!1,parentIsSupSub:!1}},"handler"),htmlBuilder:BQ,mathmlBuilder:_Ve});Ce("\\operatorname","\\@ifstar\\operatornamewithlimits\\operatorname@");Gp({type:"ordgroup",htmlBuilder(e,t){return e.semisimple?sh(ia(e.body,t,!1)):Mt(["mord"],ia(e.body,t,!0),t)},mathmlBuilder(e,t){return _d(e.body,t,!0)}});Ut({type:"overline",names:["\\overline"],props:{numArgs:1},handler(e,t){var{parser:r}=e,n=t[0];return{type:"overline",mode:r.mode,body:n}},htmlBuilder(e,t){var r=wn(e.body,t.havingCrampedStyle()),n=K0("overline-line",t),i=t.fontMetrics().defaultRuleThickness,a=Cn({positionType:"firstBaseline",children:[{type:"elem",elem:r},{type:"kern",size:3*i},{type:"elem",elem:n},{type:"kern",size:i}]});return Mt(["mord","overline"],[a],t)},mathmlBuilder(e,t){var r=new Nt("mo",[new Ei("\u203E")]);r.setAttribute("stretchy","true");var n=new Nt("mover",[Wn(e.body,t),r]);return n.setAttribute("accent","true"),n}});Ut({type:"phantom",names:["\\phantom"],props:{numArgs:1,allowedInText:!0},handler:o((e,t)=>{var{parser:r}=e,n=t[0];return{type:"phantom",mode:r.mode,body:qi(n)}},"handler"),htmlBuilder:o((e,t)=>{var r=ia(e.body,t.withPhantom(),!1);return sh(r)},"htmlBuilder"),mathmlBuilder:o((e,t)=>{var r=Po(e.body,t);return new Nt("mphantom",r)},"mathmlBuilder")});Ce("\\hphantom","\\smash{\\phantom{#1}}");Ut({type:"vphantom",names:["\\vphantom"],props:{numArgs:1,allowedInText:!0},handler:o((e,t)=>{var{parser:r}=e,n=t[0];return{type:"vphantom",mode:r.mode,body:n}},"handler"),htmlBuilder:o((e,t)=>{var r=Mt(["inner"],[wn(e.body,t.withPhantom())]),n=Mt(["fix"],[]);return Mt(["mord","rlap"],[r,n],t)},"htmlBuilder"),mathmlBuilder:o((e,t)=>{var r=Po(qi(e.body),t),n=new Nt("mphantom",r),i=new Nt("mpadded",[n]);return i.setAttribute("width","0px"),i},"mathmlBuilder")});Ut({type:"raisebox",names:["\\raisebox"],props:{numArgs:2,argTypes:["size","hbox"],allowedInText:!0},handler(e,t){var{parser:r}=e,n=Ur(t[0],"size").value,i=t[1];return{type:"raisebox",mode:r.mode,dy:n,body:i}},htmlBuilder(e,t){var r=wn(e.body,t),n=xi(e.dy,t);return Cn({positionType:"shift",positionData:-n,children:[{type:"elem",elem:r}]})},mathmlBuilder(e,t){var r=new Nt("mpadded",[Wn(e.body,t)]),n=e.dy.number+e.dy.unit;return r.setAttribute("voffset",n),r}});Ut({type:"internal",names:["\\relax"],props:{numArgs:0,allowedInText:!0,allowedInArgument:!0},handler(e){var{parser:t}=e;return{type:"internal",mode:t.mode}}});Ut({type:"rule",names:["\\rule"],props:{numArgs:2,numOptionalArgs:1,allowedInText:!0,allowedInMath:!0,argTypes:["size","size","size"]},handler(e,t,r){var{parser:n}=e,i=r[0],a=Ur(t[0],"size"),s=Ur(t[1],"size");return{type:"rule",mode:n.mode,shift:i&&Ur(i,"size").value,width:a.value,height:s.value}},htmlBuilder(e,t){var r=Mt(["mord","rule"],[],t),n=xi(e.width,t),i=xi(e.height,t),a=e.shift?xi(e.shift,t):0;return r.style.borderRightWidth=$t(n),r.style.borderTopWidth=$t(i),r.style.bottom=$t(a),r.width=n,r.height=i+a,r.depth=-a,r.maxFontSize=i*1.125*t.sizeMultiplier,r},mathmlBuilder(e,t){var r=xi(e.width,t),n=xi(e.height,t),i=e.shift?xi(e.shift,t):0,a=t.color&&t.getColor()||"black",s=new Nt("mspace");s.setAttribute("mathbackground",a),s.setAttribute("width",$t(r)),s.setAttribute("height",$t(n));var l=new Nt("mpadded",[s]);return i>=0?l.setAttribute("height",$t(i)):(l.setAttribute("height",$t(i)),l.setAttribute("depth",$t(-i))),l.setAttribute("voffset",$t(i)),l}});o($Q,"sizingGroup");FZ=["\\tiny","\\sixptsize","\\scriptsize","\\footnotesize","\\small","\\normalsize","\\large","\\Large","\\LARGE","\\huge","\\Huge"],LVe=o((e,t)=>{var r=t.havingSize(e.size);return $Q(e.body,r,t)},"htmlBuilder");Ut({type:"sizing",names:FZ,props:{numArgs:0,allowedInText:!0},handler:o((e,t)=>{var{breakOnTokenText:r,funcName:n,parser:i}=e,a=i.parseExpression(!1,r);return{type:"sizing",mode:i.mode,size:FZ.indexOf(n)+1,body:a}},"handler"),htmlBuilder:LVe,mathmlBuilder:o((e,t)=>{var r=t.havingSize(e.size),n=Po(e.body,r),i=new Nt("mstyle",n);return i.setAttribute("mathsize",$t(r.sizeMultiplier)),i},"mathmlBuilder")});Ut({type:"smash",names:["\\smash"],props:{numArgs:1,numOptionalArgs:1,allowedInText:!0},handler:o((e,t,r)=>{var{parser:n}=e,i=!1,a=!1,s=r[0]&&Ur(r[0],"ordgroup");if(s)for(var l="",u=0;u<s.body.length;++u){var h=s.body[u];if(l=sS(h).text,l==="t")i=!0;else if(l==="b")a=!0;else{i=!1,a=!1;break}}else i=!0,a=!0;var d=t[0];return{type:"smash",mode:n.mode,body:d,smashHeight:i,smashDepth:a}},"handler"),htmlBuilder:o((e,t)=>{var r=Mt([],[wn(e.body,t)]);if(!e.smashHeight&&!e.smashDepth)return r;if(e.smashHeight&&(r.height=0),e.smashDepth&&(r.depth=0),e.smashHeight&&e.smashDepth)return Mt(["mord","smash"],[r],t);if(r.children)for(var n=0;n<r.children.length;n++)e.smashHeight&&(r.children[n].height=0),e.smashDepth&&(r.children[n].depth=0);var i=Cn({positionType:"firstBaseline",children:[{type:"elem",elem:r}]});return Mt(["mord"],[i],t)},"htmlBuilder"),mathmlBuilder:o((e,t)=>{var r=new Nt("mpadded",[Wn(e.body,t)]);return e.smashHeight&&r.setAttribute("height","0px"),e.smashDepth&&r.setAttribute("depth","0px"),r},"mathmlBuilder")});Ut({type:"sqrt",names:["\\sqrt"],props:{numArgs:1,numOptionalArgs:1},handler(e,t,r){var{parser:n}=e,i=r[0],a=t[0];return{type:"sqrt",mode:n.mode,body:a,index:i}},htmlBuilder(e,t){var r=wn(e.body,t.havingCrampedStyle());r.height===0&&(r.height=t.fontMetrics().xHeight),r=Z0(r,t);var n=t.fontMetrics(),i=n.defaultRuleThickness,a=i;t.style.id<Fr.TEXT.id&&(a=t.fontMetrics().xHeight);var s=i+a/4,l=r.height+r.depth+s+i,{span:u,ruleWidth:h,advanceWidth:d}=gVe(l,t),f=u.height-h;f>r.height+r.depth+s&&(s=(s+f-r.height-r.depth)/2);var p=u.height-r.height-s-h;r.style.paddingLeft=$t(d);var m=Cn({positionType:"firstBaseline",children:[{type:"elem",elem:r,wrapperClasses:["svg-align"]},{type:"kern",size:-(r.height+p)},{type:"elem",elem:u},{type:"kern",size:h}]});if(e.index){var g=t.havingStyle(Fr.SCRIPTSCRIPT),y=wn(e.index,g,t),v=.6*(m.height-m.depth),x=Cn({positionType:"shift",positionData:-v,children:[{type:"elem",elem:y}]}),b=Mt(["root"],[x]);return Mt(["mord","sqrt"],[b,m],t)}else return Mt(["mord","sqrt"],[m],t)},mathmlBuilder(e,t){var{body:r,index:n}=e;return n?new Nt("mroot",[Wn(r,t),Wn(n,t)]):new Nt("msqrt",[Wn(r,t)])}});zZ={display:Fr.DISPLAY,text:Fr.TEXT,script:Fr.SCRIPT,scriptscript:Fr.SCRIPTSCRIPT};Ut({type:"styling",names:["\\displaystyle","\\textstyle","\\scriptstyle","\\scriptscriptstyle"],props:{numArgs:0,allowedInText:!0,primitive:!0},handler(e,t){var{breakOnTokenText:r,funcName:n,parser:i}=e,a=i.parseExpression(!0,r),s=n.slice(1,n.length-5);return{type:"styling",mode:i.mode,style:s,body:a}},htmlBuilder(e,t){var r=zZ[e.style],n=t.havingStyle(r).withFont("");return $Q(e.body,n,t)},mathmlBuilder(e,t){var r=zZ[e.style],n=t.havingStyle(r),i=Po(e.body,n),a=new Nt("mstyle",i),s={display:["0","true"],text:["0","false"],script:["1","false"],scriptscript:["2","false"]},l=s[e.style];return a.setAttribute("scriptlevel",l[0]),a.setAttribute("displaystyle",l[1]),a}});DVe=o(function(t,r){var n=t.base;if(n)if(n.type==="op"){var i=n.limits&&(r.style.size===Fr.DISPLAY.size||n.alwaysHandleSupSub);return i?J0:null}else if(n.type==="operatorname"){var a=n.alwaysHandleSupSub&&(r.style.size===Fr.DISPLAY.size||n.limits);return a?BQ:null}else{if(n.type==="accent")return ih(n.base)?e8:null;if(n.type==="horizBrace"){var s=!t.sub;return s===n.isOver?NQ:null}else return null}else return null},"htmlBuilderDelegate");Gp({type:"supsub",htmlBuilder(e,t){var r=DVe(e,t);if(r)return r(e,t);var{base:n,sup:i,sub:a}=e,s=wn(n,t),l,u,h=t.fontMetrics(),d=0,f=0,p=n&&ih(n);if(i){var m=t.havingStyle(t.style.sup());l=wn(i,m,t),p||(d=s.height-m.fontMetrics().supDrop*m.sizeMultiplier/t.sizeMultiplier)}if(a){var g=t.havingStyle(t.style.sub());u=wn(a,g,t),p||(f=s.depth+g.fontMetrics().subDrop*g.sizeMultiplier/t.sizeMultiplier)}var y;t.style===Fr.DISPLAY?y=h.sup1:t.style.cramped?y=h.sup3:y=h.sup2;var v=t.sizeMultiplier,x=$t(.5/h.ptPerEm/v),b=null;if(u){var T=e.base&&e.base.type==="op"&&e.base.name&&(e.base.name==="\\oiint"||e.base.name==="\\oiiint");(s instanceof ws||T)&&(b=$t(-s.italic))}var k;if(l&&u){d=Math.max(d,y,l.depth+.25*h.xHeight),f=Math.max(f,h.sub2);var C=h.defaultRuleThickness,w=4*C;if(d-l.depth-(u.height-f)<w){f=w-(d-l.depth)+u.height;var S=.8*h.xHeight-(d-l.depth);S>0&&(d+=S,f-=S)}var R=[{type:"elem",elem:u,shift:f,marginRight:x,marginLeft:b},{type:"elem",elem:l,shift:-d,marginRight:x}];k=Cn({positionType:"individualShift",children:R})}else if(u){f=Math.max(f,h.sub1,u.height-.8*h.xHeight);var L=[{type:"elem",elem:u,marginLeft:b,marginRight:x}];k=Cn({positionType:"shift",positionData:f,children:L})}else if(l)d=Math.max(d,y,l.depth+.25*h.xHeight),k=Cn({positionType:"shift",positionData:-d,children:[{type:"elem",elem:l,marginRight:x}]});else throw new Error("supsub must have either sup or sub.");var N=F7(s,"right")||"mord";return Mt([N],[s,Mt(["msupsub"],[k])],t)},mathmlBuilder(e,t){var r=!1,n,i;e.base&&e.base.type==="horizBrace"&&(i=!!e.sup,i===e.base.isOver&&(r=!0,n=e.base.isOver)),e.base&&(e.base.type==="op"||e.base.type==="operatorname")&&(e.base.parentIsSupSub=!0);var a=[Wn(e.base,t)];e.sub&&a.push(Wn(e.sub,t)),e.sup&&a.push(Wn(e.sup,t));var s;if(r)s=n?"mover":"munder";else if(e.sub)if(e.sup){var h=e.base;h&&h.type==="op"&&h.limits&&t.style===Fr.DISPLAY||h&&h.type==="operatorname"&&h.alwaysHandleSupSub&&(t.style===Fr.DISPLAY||h.limits)?s="munderover":s="msubsup"}else{var u=e.base;u&&u.type==="op"&&u.limits&&(t.style===Fr.DISPLAY||u.alwaysHandleSupSub)||u&&u.type==="operatorname"&&u.alwaysHandleSupSub&&(u.limits||t.style===Fr.DISPLAY)?s="munder":s="msub"}else{var l=e.base;l&&l.type==="op"&&l.limits&&(t.style===Fr.DISPLAY||l.alwaysHandleSupSub)||l&&l.type==="operatorname"&&l.alwaysHandleSupSub&&(l.limits||t.style===Fr.DISPLAY)?s="mover":s="msup"}return new Nt(s,a)}});Gp({type:"atom",htmlBuilder(e,t){return K7(e.text,e.mode,t,["m"+e.family])},mathmlBuilder(e,t){var r=new Nt("mo",[cl(e.text,e.mode)]);if(e.family==="bin"){var n=J7(e,t);n==="bold-italic"&&r.setAttribute("mathvariant",n)}else e.family==="punct"?r.setAttribute("separator","true"):(e.family==="open"||e.family==="close")&&r.setAttribute("stretchy","false");return r}});FQ={mi:"italic",mn:"normal",mtext:"normal"};Gp({type:"mathord",htmlBuilder(e,t){return nS(e,t,"mathord")},mathmlBuilder(e,t){var r=new Nt("mi",[cl(e.text,e.mode,t)]),n=J7(e,t)||"italic";return n!==FQ[r.type]&&r.setAttribute("mathvariant",n),r}});Gp({type:"textord",htmlBuilder(e,t){return nS(e,t,"textord")},mathmlBuilder(e,t){var r=cl(e.text,e.mode,t),n=J7(e,t)||"normal",i;return e.mode==="text"?i=new Nt("mtext",[r]):/[0-9]/.test(e.text)?i=new Nt("mn",[r]):e.text==="\\prime"?i=new Nt("mo",[r]):i=new Nt("mi",[r]),n!==FQ[i.type]&&i.setAttribute("mathvariant",n),i}});_7={"\\nobreak":"nobreak","\\allowbreak":"allowbreak"},L7={" ":{},"\\ ":{},"~":{className:"nobreak"},"\\space":{},"\\nobreakspace":{className:"nobreak"}};Gp({type:"spacing",htmlBuilder(e,t){if(L7.hasOwnProperty(e.text)){var r=L7[e.text].className||"";if(e.mode==="text"){var n=nS(e,t,"textord");return n.classes.push(r),n}else return Mt(["mspace",r],[K7(e.text,e.mode,t)],t)}else{if(_7.hasOwnProperty(e.text))return Mt(["mspace",_7[e.text]],[],t);throw new Pt('Unknown type of space "'+e.text+'"')}},mathmlBuilder(e,t){var r;if(L7.hasOwnProperty(e.text))r=new Nt("mtext",[new Ei("\xA0")]);else{if(_7.hasOwnProperty(e.text))return new Nt("mspace");throw new Pt('Unknown type of space "'+e.text+'"')}return r}});GZ=o(()=>{var e=new Nt("mtd",[]);return e.setAttribute("width","50%"),e},"pad");Gp({type:"tag",mathmlBuilder(e,t){var r=new Nt("mtable",[new Nt("mtr",[GZ(),new Nt("mtd",[_d(e.body,t)]),GZ(),new Nt("mtd",[_d(e.tag,t)])])]);return r.setAttribute("width","100%"),r}});VZ={"\\text":void 0,"\\textrm":"textrm","\\textsf":"textsf","\\texttt":"texttt","\\textnormal":"textrm"},WZ={"\\textbf":"textbf","\\textmd":"textmd"},IVe={"\\textit":"textit","\\textup":"textup"},qZ=o((e,t)=>{var r=e.font;if(r){if(VZ[r])return t.withTextFontFamily(VZ[r]);if(WZ[r])return t.withTextFontWeight(WZ[r]);if(r==="\\emph")return t.fontShape==="textit"?t.withTextFontShape("textup"):t.withTextFontShape("textit")}else return t;return t.withTextFontShape(IVe[r])},"optionsWithFont");Ut({type:"text",names:["\\text","\\textrm","\\textsf","\\texttt","\\textnormal","\\textbf","\\textmd","\\textit","\\textup","\\emph"],props:{numArgs:1,argTypes:["text"],allowedInArgument:!0,allowedInText:!0},handler(e,t){var{parser:r,funcName:n}=e,i=t[0];return{type:"text",mode:r.mode,body:qi(i),font:n}},htmlBuilder(e,t){var r=qZ(e,t),n=ia(e.body,r,!0);return Mt(["mord","text"],n,r)},mathmlBuilder(e,t){var r=qZ(e,t);return _d(e.body,r)}});Ut({type:"underline",names:["\\underline"],props:{numArgs:1,allowedInText:!0},handler(e,t){var{parser:r}=e;return{type:"underline",mode:r.mode,body:t[0]}},htmlBuilder(e,t){var r=wn(e.body,t),n=K0("underline-line",t),i=t.fontMetrics().defaultRuleThickness,a=Cn({positionType:"top",positionData:r.height,children:[{type:"kern",size:i},{type:"elem",elem:n},{type:"kern",size:3*i},{type:"elem",elem:r}]});return Mt(["mord","underline"],[a],t)},mathmlBuilder(e,t){var r=new Nt("mo",[new Ei("\u203E")]);r.setAttribute("stretchy","true");var n=new Nt("munder",[Wn(e.body,t),r]);return n.setAttribute("accentunder","true"),n}});Ut({type:"vcenter",names:["\\vcenter"],props:{numArgs:1,argTypes:["original"],allowedInText:!1},handler(e,t){var{parser:r}=e;return{type:"vcenter",mode:r.mode,body:t[0]}},htmlBuilder(e,t){var r=wn(e.body,t),n=t.fontMetrics().axisHeight,i=.5*(r.height-n-(r.depth+n));return Cn({positionType:"shift",positionData:i,children:[{type:"elem",elem:r}]})},mathmlBuilder(e,t){var r=new Nt("mpadded",[Wn(e.body,t)],["vcenter"]);return new Nt("mrow",[r])}});Ut({type:"verb",names:["\\verb"],props:{numArgs:0,allowedInText:!0},handler(e,t,r){throw new Pt("\\verb ended by end of line instead of matching delimiter")},htmlBuilder(e,t){for(var r=HZ(e),n=[],i=t.havingStyle(t.style.text()),a=0;a<r.length;a++){var s=r[a];s==="~"&&(s="\\textasciitilde"),n.push(Ts(s,"Typewriter-Regular",e.mode,i,["mord","texttt"]))}return Mt(["mord","text"].concat(i.sizingClasses(t)),nQ(n),i)},mathmlBuilder(e,t){var r=new Ei(HZ(e)),n=new Nt("mtext",[r]);return n.setAttribute("mathvariant","monospace"),n}});HZ=o(e=>e.body.replace(/ /g,e.star?"\u2423":"\xA0"),"makeVerb"),kd=oQ,zQ=`[ \r
+	]`,MVe="\\\\[a-zA-Z@]+",NVe="\\\\[^\uD800-\uDFFF]",PVe="("+MVe+")"+zQ+"*",OVe=`\\\\(
 |[ \r	]+
-?)[ \r	]*`,sD="[\u0300-\u036F]",j9e=new RegExp(sD+"+$"),X9e="("+Nj+"+)|"+(Y9e+"|")+"([!-\\[\\]-\u2027\u202A-\uD7FF\uF900-\uFFFF]"+(sD+"*")+"|[\uD800-\uDBFF][\uDC00-\uDFFF]"+(sD+"*")+"|\\\\verb\\*([^]).*?\\4|\\\\verb([^*a-zA-Z]).*?\\5"+("|"+H9e)+("|"+U9e+")"),rk=class{static{o(this,"Lexer")}constructor(t,r){this.input=void 0,this.settings=void 0,this.tokenRegex=void 0,this.catcodes=void 0,this.input=t,this.settings=r,this.tokenRegex=new RegExp(X9e,"g"),this.catcodes={"%":14,"~":13}}setCatcode(t,r){this.catcodes[t]=r}lex(){var t=this.input,r=this.tokenRegex.lastIndex;if(r===t.length)return new eo("EOF",new bs(this,r,r));var i=this.tokenRegex.exec(t);if(i===null||i.index!==r)throw new Lt("Unexpected character: '"+t[r]+"'",new eo(t[r],new bs(this,r,r+1)));var n=i[6]||i[3]||(i[2]?"\\ ":" ");if(this.catcodes[n]===14){var a=t.indexOf(`
-`,this.tokenRegex.lastIndex);return a===-1?(this.tokenRegex.lastIndex=t.length,this.settings.reportNonstrict("commentAtEnd","% comment has no terminating newline; LaTeX would fail because of commenting the end of math mode (e.g. $)")):this.tokenRegex.lastIndex=a+1,this.lex()}return new eo(n,new bs(this,r,this.tokenRegex.lastIndex))}},oD=class{static{o(this,"Namespace")}constructor(t,r){t===void 0&&(t={}),r===void 0&&(r={}),this.current=void 0,this.builtins=void 0,this.undefStack=void 0,this.current=r,this.builtins=t,this.undefStack=[]}beginGroup(){this.undefStack.push({})}endGroup(){if(this.undefStack.length===0)throw new Lt("Unbalanced namespace destruction: attempt to pop global namespace; please report this as a bug");var t=this.undefStack.pop();for(var r in t)t.hasOwnProperty(r)&&(t[r]==null?delete this.current[r]:this.current[r]=t[r])}endGroups(){for(;this.undefStack.length>0;)this.endGroup()}has(t){return this.current.hasOwnProperty(t)||this.builtins.hasOwnProperty(t)}get(t){return this.current.hasOwnProperty(t)?this.current[t]:this.builtins[t]}set(t,r,i){if(i===void 0&&(i=!1),i){for(var n=0;n<this.undefStack.length;n++)delete this.undefStack[n][t];this.undefStack.length>0&&(this.undefStack[this.undefStack.length-1][t]=r)}else{var a=this.undefStack[this.undefStack.length-1];a&&!a.hasOwnProperty(t)&&(a[t]=this.current[t])}r==null?delete this.current[t]:this.current[t]=r}},K9e=Cj;he("\\noexpand",function(e){var t=e.popToken();return e.isExpandable(t.text)&&(t.noexpand=!0,t.treatAsRelax=!0),{tokens:[t],numArgs:0}});he("\\expandafter",function(e){var t=e.popToken();return e.expandOnce(!0),{tokens:[t],numArgs:0}});he("\\@firstoftwo",function(e){var t=e.consumeArgs(2);return{tokens:t[0],numArgs:0}});he("\\@secondoftwo",function(e){var t=e.consumeArgs(2);return{tokens:t[1],numArgs:0}});he("\\@ifnextchar",function(e){var t=e.consumeArgs(3);e.consumeSpaces();var r=e.future();return t[0].length===1&&t[0][0].text===r.text?{tokens:t[1],numArgs:0}:{tokens:t[2],numArgs:0}});he("\\@ifstar","\\@ifnextchar *{\\@firstoftwo{#1}}");he("\\TextOrMath",function(e){var t=e.consumeArgs(2);return e.mode==="text"?{tokens:t[0],numArgs:0}:{tokens:t[1],numArgs:0}});$Y={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};he("\\char",function(e){var t=e.popToken(),r,i="";if(t.text==="'")r=8,t=e.popToken();else if(t.text==='"')r=16,t=e.popToken();else if(t.text==="`")if(t=e.popToken(),t.text[0]==="\\")i=t.text.charCodeAt(1);else{if(t.text==="EOF")throw new Lt("\\char` missing argument");i=t.text.charCodeAt(0)}else r=10;if(r){if(i=$Y[t.text],i==null||i>=r)throw new Lt("Invalid base-"+r+" digit "+t.text);for(var n;(n=$Y[e.future().text])!=null&&n<r;)i*=r,i+=n,e.popToken()}return"\\@char{"+i+"}"});kD=o((e,t,r,i)=>{var n=e.consumeArg().tokens;if(n.length!==1)throw new Lt("\\newcommand's first argument must be a macro name");var a=n[0].text,s=e.isDefined(a);if(s&&!t)throw new Lt("\\newcommand{"+a+"} attempting to redefine "+(a+"; use \\renewcommand"));if(!s&&!r)throw new Lt("\\renewcommand{"+a+"} when command "+a+" does not yet exist; use \\newcommand");var l=0;if(n=e.consumeArg().tokens,n.length===1&&n[0].text==="["){for(var u="",h=e.expandNextToken();h.text!=="]"&&h.text!=="EOF";)u+=h.text,h=e.expandNextToken();if(!u.match(/^\s*[0-9]+\s*$/))throw new Lt("Invalid number of arguments: "+u);l=parseInt(u),n=e.consumeArg().tokens}return s&&i||e.macros.set(a,{tokens:n,numArgs:l}),""},"newcommand");he("\\newcommand",e=>kD(e,!1,!0,!1));he("\\renewcommand",e=>kD(e,!0,!1,!1));he("\\providecommand",e=>kD(e,!0,!0,!0));he("\\message",e=>{var t=e.consumeArgs(1)[0];return console.log(t.reverse().map(r=>r.text).join("")),""});he("\\errmessage",e=>{var t=e.consumeArgs(1)[0];return console.error(t.reverse().map(r=>r.text).join("")),""});he("\\show",e=>{var t=e.popToken(),r=t.text;return console.log(t,e.macros.get(r),Fh[r],_i.math[r],_i.text[r]),""});he("\\bgroup","{");he("\\egroup","}");he("~","\\nobreakspace");he("\\lq","`");he("\\rq","'");he("\\aa","\\r a");he("\\AA","\\r A");he("\\textcopyright","\\html@mathml{\\textcircled{c}}{\\char`\xA9}");he("\\copyright","\\TextOrMath{\\textcopyright}{\\text{\\textcopyright}}");he("\\textregistered","\\html@mathml{\\textcircled{\\scriptsize R}}{\\char`\xAE}");he("\u212C","\\mathscr{B}");he("\u2130","\\mathscr{E}");he("\u2131","\\mathscr{F}");he("\u210B","\\mathscr{H}");he("\u2110","\\mathscr{I}");he("\u2112","\\mathscr{L}");he("\u2133","\\mathscr{M}");he("\u211B","\\mathscr{R}");he("\u212D","\\mathfrak{C}");he("\u210C","\\mathfrak{H}");he("\u2128","\\mathfrak{Z}");he("\\Bbbk","\\Bbb{k}");he("\xB7","\\cdotp");he("\\llap","\\mathllap{\\textrm{#1}}");he("\\rlap","\\mathrlap{\\textrm{#1}}");he("\\clap","\\mathclap{\\textrm{#1}}");he("\\mathstrut","\\vphantom{(}");he("\\underbar","\\underline{\\text{#1}}");he("\\not",'\\html@mathml{\\mathrel{\\mathrlap\\@not}}{\\char"338}');he("\\neq","\\html@mathml{\\mathrel{\\not=}}{\\mathrel{\\char`\u2260}}");he("\\ne","\\neq");he("\u2260","\\neq");he("\\notin","\\html@mathml{\\mathrel{{\\in}\\mathllap{/\\mskip1mu}}}{\\mathrel{\\char`\u2209}}");he("\u2209","\\notin");he("\u2258","\\html@mathml{\\mathrel{=\\kern{-1em}\\raisebox{0.4em}{$\\scriptsize\\frown$}}}{\\mathrel{\\char`\u2258}}");he("\u2259","\\html@mathml{\\stackrel{\\tiny\\wedge}{=}}{\\mathrel{\\char`\u2258}}");he("\u225A","\\html@mathml{\\stackrel{\\tiny\\vee}{=}}{\\mathrel{\\char`\u225A}}");he("\u225B","\\html@mathml{\\stackrel{\\scriptsize\\star}{=}}{\\mathrel{\\char`\u225B}}");he("\u225D","\\html@mathml{\\stackrel{\\tiny\\mathrm{def}}{=}}{\\mathrel{\\char`\u225D}}");he("\u225E","\\html@mathml{\\stackrel{\\tiny\\mathrm{m}}{=}}{\\mathrel{\\char`\u225E}}");he("\u225F","\\html@mathml{\\stackrel{\\tiny?}{=}}{\\mathrel{\\char`\u225F}}");he("\u27C2","\\perp");he("\u203C","\\mathclose{!\\mkern-0.8mu!}");he("\u220C","\\notni");he("\u231C","\\ulcorner");he("\u231D","\\urcorner");he("\u231E","\\llcorner");he("\u231F","\\lrcorner");he("\xA9","\\copyright");he("\xAE","\\textregistered");he("\uFE0F","\\textregistered");he("\\ulcorner",'\\html@mathml{\\@ulcorner}{\\mathop{\\char"231c}}');he("\\urcorner",'\\html@mathml{\\@urcorner}{\\mathop{\\char"231d}}');he("\\llcorner",'\\html@mathml{\\@llcorner}{\\mathop{\\char"231e}}');he("\\lrcorner",'\\html@mathml{\\@lrcorner}{\\mathop{\\char"231f}}');he("\\vdots","{\\varvdots\\rule{0pt}{15pt}}");he("\u22EE","\\vdots");he("\\varGamma","\\mathit{\\Gamma}");he("\\varDelta","\\mathit{\\Delta}");he("\\varTheta","\\mathit{\\Theta}");he("\\varLambda","\\mathit{\\Lambda}");he("\\varXi","\\mathit{\\Xi}");he("\\varPi","\\mathit{\\Pi}");he("\\varSigma","\\mathit{\\Sigma}");he("\\varUpsilon","\\mathit{\\Upsilon}");he("\\varPhi","\\mathit{\\Phi}");he("\\varPsi","\\mathit{\\Psi}");he("\\varOmega","\\mathit{\\Omega}");he("\\substack","\\begin{subarray}{c}#1\\end{subarray}");he("\\colon","\\nobreak\\mskip2mu\\mathpunct{}\\mathchoice{\\mkern-3mu}{\\mkern-3mu}{}{}{:}\\mskip6mu\\relax");he("\\boxed","\\fbox{$\\displaystyle{#1}$}");he("\\iff","\\DOTSB\\;\\Longleftrightarrow\\;");he("\\implies","\\DOTSB\\;\\Longrightarrow\\;");he("\\impliedby","\\DOTSB\\;\\Longleftarrow\\;");he("\\dddot","{\\overset{\\raisebox{-0.1ex}{\\normalsize ...}}{#1}}");he("\\ddddot","{\\overset{\\raisebox{-0.1ex}{\\normalsize ....}}{#1}}");zY={",":"\\dotsc","\\not":"\\dotsb","+":"\\dotsb","=":"\\dotsb","<":"\\dotsb",">":"\\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","\\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"};he("\\dots",function(e){var t="\\dotso",r=e.expandAfterFuture().text;return r in zY?t=zY[r]:(r.slice(0,4)==="\\not"||r in _i.math&&["bin","rel"].includes(_i.math[r].group))&&(t="\\dotsb"),t});wD={")":!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};he("\\dotso",function(e){var t=e.future().text;return t in wD?"\\ldots\\,":"\\ldots"});he("\\dotsc",function(e){var t=e.future().text;return t in wD&&t!==","?"\\ldots\\,":"\\ldots"});he("\\cdots",function(e){var t=e.future().text;return t in wD?"\\@cdots\\,":"\\@cdots"});he("\\dotsb","\\cdots");he("\\dotsm","\\cdots");he("\\dotsi","\\!\\cdots");he("\\dotsx","\\ldots\\,");he("\\DOTSI","\\relax");he("\\DOTSB","\\relax");he("\\DOTSX","\\relax");he("\\tmspace","\\TextOrMath{\\kern#1#3}{\\mskip#1#2}\\relax");he("\\,","\\tmspace+{3mu}{.1667em}");he("\\thinspace","\\,");he("\\>","\\mskip{4mu}");he("\\:","\\tmspace+{4mu}{.2222em}");he("\\medspace","\\:");he("\\;","\\tmspace+{5mu}{.2777em}");he("\\thickspace","\\;");he("\\!","\\tmspace-{3mu}{.1667em}");he("\\negthinspace","\\!");he("\\negmedspace","\\tmspace-{4mu}{.2222em}");he("\\negthickspace","\\tmspace-{5mu}{.277em}");he("\\enspace","\\kern.5em ");he("\\enskip","\\hskip.5em\\relax");he("\\quad","\\hskip1em\\relax");he("\\qquad","\\hskip2em\\relax");he("\\tag","\\@ifstar\\tag@literal\\tag@paren");he("\\tag@paren","\\tag@literal{({#1})}");he("\\tag@literal",e=>{if(e.macros.get("\\df@tag"))throw new Lt("Multiple \\tag");return"\\gdef\\df@tag{\\text{#1}}"});he("\\bmod","\\mathchoice{\\mskip1mu}{\\mskip1mu}{\\mskip5mu}{\\mskip5mu}\\mathbin{\\rm mod}\\mathchoice{\\mskip1mu}{\\mskip1mu}{\\mskip5mu}{\\mskip5mu}");he("\\pod","\\allowbreak\\mathchoice{\\mkern18mu}{\\mkern8mu}{\\mkern8mu}{\\mkern8mu}(#1)");he("\\pmod","\\pod{{\\rm mod}\\mkern6mu#1}");he("\\mod","\\allowbreak\\mathchoice{\\mkern18mu}{\\mkern12mu}{\\mkern12mu}{\\mkern12mu}{\\rm mod}\\,\\,#1");he("\\newline","\\\\\\relax");he("\\TeX","\\textrm{\\html@mathml{T\\kern-.1667em\\raisebox{-.5ex}{E}\\kern-.125emX}{TeX}}");Ij=It(nc["Main-Regular"][84][1]-.7*nc["Main-Regular"][65][1]);he("\\LaTeX","\\textrm{\\html@mathml{"+("L\\kern-.36em\\raisebox{"+Ij+"}{\\scriptstyle A}")+"\\kern-.15em\\TeX}{LaTeX}}");he("\\KaTeX","\\textrm{\\html@mathml{"+("K\\kern-.17em\\raisebox{"+Ij+"}{\\scriptstyle A}")+"\\kern-.15em\\TeX}{KaTeX}}");he("\\hspace","\\@ifstar\\@hspacer\\@hspace");he("\\@hspace","\\hskip #1\\relax");he("\\@hspacer","\\rule{0pt}{0pt}\\hskip #1\\relax");he("\\ordinarycolon",":");he("\\vcentcolon","\\mathrel{\\mathop\\ordinarycolon}");he("\\dblcolon",'\\html@mathml{\\mathrel{\\vcentcolon\\mathrel{\\mkern-.9mu}\\vcentcolon}}{\\mathop{\\char"2237}}');he("\\coloneqq",'\\html@mathml{\\mathrel{\\vcentcolon\\mathrel{\\mkern-1.2mu}=}}{\\mathop{\\char"2254}}');he("\\Coloneqq",'\\html@mathml{\\mathrel{\\dblcolon\\mathrel{\\mkern-1.2mu}=}}{\\mathop{\\char"2237\\char"3d}}');he("\\coloneq",'\\html@mathml{\\mathrel{\\vcentcolon\\mathrel{\\mkern-1.2mu}\\mathrel{-}}}{\\mathop{\\char"3a\\char"2212}}');he("\\Coloneq",'\\html@mathml{\\mathrel{\\dblcolon\\mathrel{\\mkern-1.2mu}\\mathrel{-}}}{\\mathop{\\char"2237\\char"2212}}');he("\\eqqcolon",'\\html@mathml{\\mathrel{=\\mathrel{\\mkern-1.2mu}\\vcentcolon}}{\\mathop{\\char"2255}}');he("\\Eqqcolon",'\\html@mathml{\\mathrel{=\\mathrel{\\mkern-1.2mu}\\dblcolon}}{\\mathop{\\char"3d\\char"2237}}');he("\\eqcolon",'\\html@mathml{\\mathrel{\\mathrel{-}\\mathrel{\\mkern-1.2mu}\\vcentcolon}}{\\mathop{\\char"2239}}');he("\\Eqcolon",'\\html@mathml{\\mathrel{\\mathrel{-}\\mathrel{\\mkern-1.2mu}\\dblcolon}}{\\mathop{\\char"2212\\char"2237}}');he("\\colonapprox",'\\html@mathml{\\mathrel{\\vcentcolon\\mathrel{\\mkern-1.2mu}\\approx}}{\\mathop{\\char"3a\\char"2248}}');he("\\Colonapprox",'\\html@mathml{\\mathrel{\\dblcolon\\mathrel{\\mkern-1.2mu}\\approx}}{\\mathop{\\char"2237\\char"2248}}');he("\\colonsim",'\\html@mathml{\\mathrel{\\vcentcolon\\mathrel{\\mkern-1.2mu}\\sim}}{\\mathop{\\char"3a\\char"223c}}');he("\\Colonsim",'\\html@mathml{\\mathrel{\\dblcolon\\mathrel{\\mkern-1.2mu}\\sim}}{\\mathop{\\char"2237\\char"223c}}');he("\u2237","\\dblcolon");he("\u2239","\\eqcolon");he("\u2254","\\coloneqq");he("\u2255","\\eqqcolon");he("\u2A74","\\Coloneqq");he("\\ratio","\\vcentcolon");he("\\coloncolon","\\dblcolon");he("\\colonequals","\\coloneqq");he("\\coloncolonequals","\\Coloneqq");he("\\equalscolon","\\eqqcolon");he("\\equalscoloncolon","\\Eqqcolon");he("\\colonminus","\\coloneq");he("\\coloncolonminus","\\Coloneq");he("\\minuscolon","\\eqcolon");he("\\minuscoloncolon","\\Eqcolon");he("\\coloncolonapprox","\\Colonapprox");he("\\coloncolonsim","\\Colonsim");he("\\simcolon","\\mathrel{\\sim\\mathrel{\\mkern-1.2mu}\\vcentcolon}");he("\\simcoloncolon","\\mathrel{\\sim\\mathrel{\\mkern-1.2mu}\\dblcolon}");he("\\approxcolon","\\mathrel{\\approx\\mathrel{\\mkern-1.2mu}\\vcentcolon}");he("\\approxcoloncolon","\\mathrel{\\approx\\mathrel{\\mkern-1.2mu}\\dblcolon}");he("\\notni","\\html@mathml{\\not\\ni}{\\mathrel{\\char`\u220C}}");he("\\limsup","\\DOTSB\\operatorname*{lim\\,sup}");he("\\liminf","\\DOTSB\\operatorname*{lim\\,inf}");he("\\injlim","\\DOTSB\\operatorname*{inj\\,lim}");he("\\projlim","\\DOTSB\\operatorname*{proj\\,lim}");he("\\varlimsup","\\DOTSB\\operatorname*{\\overline{lim}}");he("\\varliminf","\\DOTSB\\operatorname*{\\underline{lim}}");he("\\varinjlim","\\DOTSB\\operatorname*{\\underrightarrow{lim}}");he("\\varprojlim","\\DOTSB\\operatorname*{\\underleftarrow{lim}}");he("\\gvertneqq","\\html@mathml{\\@gvertneqq}{\u2269}");he("\\lvertneqq","\\html@mathml{\\@lvertneqq}{\u2268}");he("\\ngeqq","\\html@mathml{\\@ngeqq}{\u2271}");he("\\ngeqslant","\\html@mathml{\\@ngeqslant}{\u2271}");he("\\nleqq","\\html@mathml{\\@nleqq}{\u2270}");he("\\nleqslant","\\html@mathml{\\@nleqslant}{\u2270}");he("\\nshortmid","\\html@mathml{\\@nshortmid}{\u2224}");he("\\nshortparallel","\\html@mathml{\\@nshortparallel}{\u2226}");he("\\nsubseteqq","\\html@mathml{\\@nsubseteqq}{\u2288}");he("\\nsupseteqq","\\html@mathml{\\@nsupseteqq}{\u2289}");he("\\varsubsetneq","\\html@mathml{\\@varsubsetneq}{\u228A}");he("\\varsubsetneqq","\\html@mathml{\\@varsubsetneqq}{\u2ACB}");he("\\varsupsetneq","\\html@mathml{\\@varsupsetneq}{\u228B}");he("\\varsupsetneqq","\\html@mathml{\\@varsupsetneqq}{\u2ACC}");he("\\imath","\\html@mathml{\\@imath}{\u0131}");he("\\jmath","\\html@mathml{\\@jmath}{\u0237}");he("\\llbracket","\\html@mathml{\\mathopen{[\\mkern-3.2mu[}}{\\mathopen{\\char`\u27E6}}");he("\\rrbracket","\\html@mathml{\\mathclose{]\\mkern-3.2mu]}}{\\mathclose{\\char`\u27E7}}");he("\u27E6","\\llbracket");he("\u27E7","\\rrbracket");he("\\lBrace","\\html@mathml{\\mathopen{\\{\\mkern-3.2mu[}}{\\mathopen{\\char`\u2983}}");he("\\rBrace","\\html@mathml{\\mathclose{]\\mkern-3.2mu\\}}}{\\mathclose{\\char`\u2984}}");he("\u2983","\\lBrace");he("\u2984","\\rBrace");he("\\minuso","\\mathbin{\\html@mathml{{\\mathrlap{\\mathchoice{\\kern{0.145em}}{\\kern{0.145em}}{\\kern{0.1015em}}{\\kern{0.0725em}}\\circ}{-}}}{\\char`\u29B5}}");he("\u29B5","\\minuso");he("\\darr","\\downarrow");he("\\dArr","\\Downarrow");he("\\Darr","\\Downarrow");he("\\lang","\\langle");he("\\rang","\\rangle");he("\\uarr","\\uparrow");he("\\uArr","\\Uparrow");he("\\Uarr","\\Uparrow");he("\\N","\\mathbb{N}");he("\\R","\\mathbb{R}");he("\\Z","\\mathbb{Z}");he("\\alef","\\aleph");he("\\alefsym","\\aleph");he("\\Alpha","\\mathrm{A}");he("\\Beta","\\mathrm{B}");he("\\bull","\\bullet");he("\\Chi","\\mathrm{X}");he("\\clubs","\\clubsuit");he("\\cnums","\\mathbb{C}");he("\\Complex","\\mathbb{C}");he("\\Dagger","\\ddagger");he("\\diamonds","\\diamondsuit");he("\\empty","\\emptyset");he("\\Epsilon","\\mathrm{E}");he("\\Eta","\\mathrm{H}");he("\\exist","\\exists");he("\\harr","\\leftrightarrow");he("\\hArr","\\Leftrightarrow");he("\\Harr","\\Leftrightarrow");he("\\hearts","\\heartsuit");he("\\image","\\Im");he("\\infin","\\infty");he("\\Iota","\\mathrm{I}");he("\\isin","\\in");he("\\Kappa","\\mathrm{K}");he("\\larr","\\leftarrow");he("\\lArr","\\Leftarrow");he("\\Larr","\\Leftarrow");he("\\lrarr","\\leftrightarrow");he("\\lrArr","\\Leftrightarrow");he("\\Lrarr","\\Leftrightarrow");he("\\Mu","\\mathrm{M}");he("\\natnums","\\mathbb{N}");he("\\Nu","\\mathrm{N}");he("\\Omicron","\\mathrm{O}");he("\\plusmn","\\pm");he("\\rarr","\\rightarrow");he("\\rArr","\\Rightarrow");he("\\Rarr","\\Rightarrow");he("\\real","\\Re");he("\\reals","\\mathbb{R}");he("\\Reals","\\mathbb{R}");he("\\Rho","\\mathrm{P}");he("\\sdot","\\cdot");he("\\sect","\\S");he("\\spades","\\spadesuit");he("\\sub","\\subset");he("\\sube","\\subseteq");he("\\supe","\\supseteq");he("\\Tau","\\mathrm{T}");he("\\thetasym","\\vartheta");he("\\weierp","\\wp");he("\\Zeta","\\mathrm{Z}");he("\\argmin","\\DOTSB\\operatorname*{arg\\,min}");he("\\argmax","\\DOTSB\\operatorname*{arg\\,max}");he("\\plim","\\DOTSB\\mathop{\\operatorname{plim}}\\limits");he("\\bra","\\mathinner{\\langle{#1}|}");he("\\ket","\\mathinner{|{#1}\\rangle}");he("\\braket","\\mathinner{\\langle{#1}\\rangle}");he("\\Bra","\\left\\langle#1\\right|");he("\\Ket","\\left|#1\\right\\rangle");Oj=o(e=>t=>{var r=t.consumeArg().tokens,i=t.consumeArg().tokens,n=t.consumeArg().tokens,a=t.consumeArg().tokens,s=t.macros.get("|"),l=t.macros.get("\\|");t.macros.beginGroup();var u=o(f=>p=>{e&&(p.macros.set("|",s),n.length&&p.macros.set("\\|",l));var m=f;if(!f&&n.length){var g=p.future();g.text==="|"&&(p.popToken(),m=!0)}return{tokens:m?n:i,numArgs:0}},"midMacro");t.macros.set("|",u(!1)),n.length&&t.macros.set("\\|",u(!0));var h=t.consumeArg().tokens,d=t.expandTokens([...a,...h,...r]);return t.macros.endGroup(),{tokens:d.reverse(),numArgs:0}},"braketHelper");he("\\bra@ket",Oj(!1));he("\\bra@set",Oj(!0));he("\\Braket","\\bra@ket{\\left\\langle}{\\,\\middle\\vert\\,}{\\,\\middle\\vert\\,}{\\right\\rangle}");he("\\Set","\\bra@set{\\left\\{\\:}{\\;\\middle\\vert\\;}{\\;\\middle\\Vert\\;}{\\:\\right\\}}");he("\\set","\\bra@set{\\{\\,}{\\mid}{}{\\,\\}}");he("\\angln","{\\angl n}");he("\\blue","\\textcolor{##6495ed}{#1}");he("\\orange","\\textcolor{##ffa500}{#1}");he("\\pink","\\textcolor{##ff00af}{#1}");he("\\red","\\textcolor{##df0030}{#1}");he("\\green","\\textcolor{##28ae7b}{#1}");he("\\gray","\\textcolor{gray}{#1}");he("\\purple","\\textcolor{##9d38bd}{#1}");he("\\blueA","\\textcolor{##ccfaff}{#1}");he("\\blueB","\\textcolor{##80f6ff}{#1}");he("\\blueC","\\textcolor{##63d9ea}{#1}");he("\\blueD","\\textcolor{##11accd}{#1}");he("\\blueE","\\textcolor{##0c7f99}{#1}");he("\\tealA","\\textcolor{##94fff5}{#1}");he("\\tealB","\\textcolor{##26edd5}{#1}");he("\\tealC","\\textcolor{##01d1c1}{#1}");he("\\tealD","\\textcolor{##01a995}{#1}");he("\\tealE","\\textcolor{##208170}{#1}");he("\\greenA","\\textcolor{##b6ffb0}{#1}");he("\\greenB","\\textcolor{##8af281}{#1}");he("\\greenC","\\textcolor{##74cf70}{#1}");he("\\greenD","\\textcolor{##1fab54}{#1}");he("\\greenE","\\textcolor{##0d923f}{#1}");he("\\goldA","\\textcolor{##ffd0a9}{#1}");he("\\goldB","\\textcolor{##ffbb71}{#1}");he("\\goldC","\\textcolor{##ff9c39}{#1}");he("\\goldD","\\textcolor{##e07d10}{#1}");he("\\goldE","\\textcolor{##a75a05}{#1}");he("\\redA","\\textcolor{##fca9a9}{#1}");he("\\redB","\\textcolor{##ff8482}{#1}");he("\\redC","\\textcolor{##f9685d}{#1}");he("\\redD","\\textcolor{##e84d39}{#1}");he("\\redE","\\textcolor{##bc2612}{#1}");he("\\maroonA","\\textcolor{##ffbde0}{#1}");he("\\maroonB","\\textcolor{##ff92c6}{#1}");he("\\maroonC","\\textcolor{##ed5fa6}{#1}");he("\\maroonD","\\textcolor{##ca337c}{#1}");he("\\maroonE","\\textcolor{##9e034e}{#1}");he("\\purpleA","\\textcolor{##ddd7ff}{#1}");he("\\purpleB","\\textcolor{##c6b9fc}{#1}");he("\\purpleC","\\textcolor{##aa87ff}{#1}");he("\\purpleD","\\textcolor{##7854ab}{#1}");he("\\purpleE","\\textcolor{##543b78}{#1}");he("\\mintA","\\textcolor{##f5f9e8}{#1}");he("\\mintB","\\textcolor{##edf2df}{#1}");he("\\mintC","\\textcolor{##e0e5cc}{#1}");he("\\grayA","\\textcolor{##f6f7f7}{#1}");he("\\grayB","\\textcolor{##f0f1f2}{#1}");he("\\grayC","\\textcolor{##e3e5e6}{#1}");he("\\grayD","\\textcolor{##d6d8da}{#1}");he("\\grayE","\\textcolor{##babec2}{#1}");he("\\grayF","\\textcolor{##888d93}{#1}");he("\\grayG","\\textcolor{##626569}{#1}");he("\\grayH","\\textcolor{##3b3e40}{#1}");he("\\grayI","\\textcolor{##21242c}{#1}");he("\\kaBlue","\\textcolor{##314453}{#1}");he("\\kaGreen","\\textcolor{##71B307}{#1}");Pj={"^":!0,_:!0,"\\limits":!0,"\\nolimits":!0},lD=class{static{o(this,"MacroExpander")}constructor(t,r,i){this.settings=void 0,this.expansionCount=void 0,this.lexer=void 0,this.macros=void 0,this.stack=void 0,this.mode=void 0,this.settings=r,this.expansionCount=0,this.feed(t),this.macros=new oD(K9e,r.macros),this.mode=i,this.stack=[]}feed(t){this.lexer=new rk(t,this.settings)}switchMode(t){this.mode=t}beginGroup(){this.macros.beginGroup()}endGroup(){this.macros.endGroup()}endGroups(){this.macros.endGroups()}future(){return this.stack.length===0&&this.pushToken(this.lexer.lex()),this.stack[this.stack.length-1]}popToken(){return this.future(),this.stack.pop()}pushToken(t){this.stack.push(t)}pushTokens(t){this.stack.push(...t)}scanArgument(t){var r,i,n;if(t){if(this.consumeSpaces(),this.future().text!=="[")return null;r=this.popToken(),{tokens:n,end:i}=this.consumeArg(["]"])}else({tokens:n,start:r,end:i}=this.consumeArg());return this.pushToken(new eo("EOF",i.loc)),this.pushTokens(n),new eo("",bs.range(r,i))}consumeSpaces(){for(;;){var t=this.future();if(t.text===" ")this.stack.pop();else break}}consumeArg(t){var r=[],i=t&&t.length>0;i||this.consumeSpaces();var n=this.future(),a,s=0,l=0;do{if(a=this.popToken(),r.push(a),a.text==="{")++s;else if(a.text==="}"){if(--s,s===-1)throw new Lt("Extra }",a)}else if(a.text==="EOF")throw new Lt("Unexpected end of input in a macro argument, expected '"+(t&&i?t[l]:"}")+"'",a);if(t&&i)if((s===0||s===1&&t[l]==="{")&&a.text===t[l]){if(++l,l===t.length){r.splice(-l,l);break}}else l=0}while(s!==0||i);return n.text==="{"&&r[r.length-1].text==="}"&&(r.pop(),r.shift()),r.reverse(),{tokens:r,start:n,end:a}}consumeArgs(t,r){if(r){if(r.length!==t+1)throw new Lt("The length of delimiters doesn't match the number of args!");for(var i=r[0],n=0;n<i.length;n++){var a=this.popToken();if(i[n]!==a.text)throw new Lt("Use of the macro doesn't match its definition",a)}}for(var s=[],l=0;l<t;l++)s.push(this.consumeArg(r&&r[l+1]).tokens);return s}countExpansion(t){if(this.expansionCount+=t,this.expansionCount>this.settings.maxExpand)throw new Lt("Too many expansions: infinite loop or need to increase maxExpand setting")}expandOnce(t){var r=this.popToken(),i=r.text,n=r.noexpand?null:this._getExpansion(i);if(n==null||t&&n.unexpandable){if(t&&n==null&&i[0]==="\\"&&!this.isDefined(i))throw new Lt("Undefined control sequence: "+i);return this.pushToken(r),!1}this.countExpansion(1);var a=n.tokens,s=this.consumeArgs(n.numArgs,n.delimiters);if(n.numArgs){a=a.slice();for(var l=a.length-1;l>=0;--l){var u=a[l];if(u.text==="#"){if(l===0)throw new Lt("Incomplete placeholder at end of macro body",u);if(u=a[--l],u.text==="#")a.splice(l+1,1);else if(/^[1-9]$/.test(u.text))a.splice(l,2,...s[+u.text-1]);else throw new Lt("Not a valid argument number",u)}}}return this.pushTokens(a),a.length}expandAfterFuture(){return this.expandOnce(),this.future()}expandNextToken(){for(;;)if(this.expandOnce()===!1){var t=this.stack.pop();return t.treatAsRelax&&(t.text="\\relax"),t}throw new Error}expandMacro(t){return this.macros.has(t)?this.expandTokens([new eo(t)]):void 0}expandTokens(t){var r=[],i=this.stack.length;for(this.pushTokens(t);this.stack.length>i;)if(this.expandOnce(!0)===!1){var n=this.stack.pop();n.treatAsRelax&&(n.noexpand=!1,n.treatAsRelax=!1),r.push(n)}return this.countExpansion(r.length),r}expandMacroAsText(t){var r=this.expandMacro(t);return r&&r.map(i=>i.text).join("")}_getExpansion(t){var r=this.macros.get(t);if(r==null)return r;if(t.length===1){var i=this.lexer.catcodes[t];if(i!=null&&i!==13)return}var n=typeof r=="function"?r(this):r;if(typeof n=="string"){var a=0;if(n.indexOf("#")!==-1)for(var s=n.replace(/##/g,"");s.indexOf("#"+(a+1))!==-1;)++a;for(var l=new rk(n,this.settings),u=[],h=l.lex();h.text!=="EOF";)u.push(h),h=l.lex();u.reverse();var d={tokens:u,numArgs:a};return d}return n}isDefined(t){return this.macros.has(t)||Fh.hasOwnProperty(t)||_i.math.hasOwnProperty(t)||_i.text.hasOwnProperty(t)||Pj.hasOwnProperty(t)}isExpandable(t){var r=this.macros.get(t);return r!=null?typeof r=="string"||typeof r=="function"||!r.unexpandable:Fh.hasOwnProperty(t)&&!Fh[t].primitive}},GY=/^[₊₋₌₍₎₀₁₂₃₄₅₆₇₈₉ₐₑₕᵢⱼₖₗₘₙₒₚᵣₛₜᵤᵥₓᵦᵧᵨᵩᵪ]/,jC=Object.freeze({"\u208A":"+","\u208B":"-","\u208C":"=","\u208D":"(","\u208E":")","\u2080":"0","\u2081":"1","\u2082":"2","\u2083":"3","\u2084":"4","\u2085":"5","\u2086":"6","\u2087":"7","\u2088":"8","\u2089":"9","\u2090":"a","\u2091":"e","\u2095":"h","\u1D62":"i","\u2C7C":"j","\u2096":"k","\u2097":"l","\u2098":"m","\u2099":"n","\u2092":"o","\u209A":"p","\u1D63":"r","\u209B":"s","\u209C":"t","\u1D64":"u","\u1D65":"v","\u2093":"x","\u1D66":"\u03B2","\u1D67":"\u03B3","\u1D68":"\u03C1","\u1D69":"\u03D5","\u1D6A":"\u03C7","\u207A":"+","\u207B":"-","\u207C":"=","\u207D":"(","\u207E":")","\u2070":"0","\xB9":"1","\xB2":"2","\xB3":"3","\u2074":"4","\u2075":"5","\u2076":"6","\u2077":"7","\u2078":"8","\u2079":"9","\u1D2C":"A","\u1D2E":"B","\u1D30":"D","\u1D31":"E","\u1D33":"G","\u1D34":"H","\u1D35":"I","\u1D36":"J","\u1D37":"K","\u1D38":"L","\u1D39":"M","\u1D3A":"N","\u1D3C":"O","\u1D3E":"P","\u1D3F":"R","\u1D40":"T","\u1D41":"U","\u2C7D":"V","\u1D42":"W","\u1D43":"a","\u1D47":"b","\u1D9C":"c","\u1D48":"d","\u1D49":"e","\u1DA0":"f","\u1D4D":"g",\u02B0:"h","\u2071":"i",\u02B2:"j","\u1D4F":"k",\u02E1:"l","\u1D50":"m",\u207F:"n","\u1D52":"o","\u1D56":"p",\u02B3:"r",\u02E2:"s","\u1D57":"t","\u1D58":"u","\u1D5B":"v",\u02B7:"w",\u02E3:"x",\u02B8:"y","\u1DBB":"z","\u1D5D":"\u03B2","\u1D5E":"\u03B3","\u1D5F":"\u03B4","\u1D60":"\u03D5","\u1D61":"\u03C7","\u1DBF":"\u03B8"}),K7={"\u0301":{text:"\\'",math:"\\acute"},"\u0300":{text:"\\`",math:"\\grave"},"\u0308":{text:'\\"',math:"\\ddot"},"\u0303":{text:"\\~",math:"\\tilde"},"\u0304":{text:"\\=",math:"\\bar"},"\u0306":{text:"\\u",math:"\\breve"},"\u030C":{text:"\\v",math:"\\check"},"\u0302":{text:"\\^",math:"\\hat"},"\u0307":{text:"\\.",math:"\\dot"},"\u030A":{text:"\\r",math:"\\mathring"},"\u030B":{text:"\\H"},"\u0327":{text:"\\c"}},VY={\u00E1:"a\u0301",\u00E0:"a\u0300",\u00E4:"a\u0308",\u01DF:"a\u0308\u0304",\u00E3:"a\u0303",\u0101:"a\u0304",\u0103:"a\u0306",\u1EAF:"a\u0306\u0301",\u1EB1:"a\u0306\u0300",\u1EB5:"a\u0306\u0303",\u01CE:"a\u030C",\u00E2:"a\u0302",\u1EA5:"a\u0302\u0301",\u1EA7:"a\u0302\u0300",\u1EAB:"a\u0302\u0303",\u0227:"a\u0307",\u01E1:"a\u0307\u0304",\u00E5:"a\u030A",\u01FB:"a\u030A\u0301",\u1E03:"b\u0307",\u0107:"c\u0301",\u1E09:"c\u0327\u0301",\u010D:"c\u030C",\u0109:"c\u0302",\u010B:"c\u0307",\u00E7:"c\u0327",\u010F:"d\u030C",\u1E0B:"d\u0307",\u1E11:"d\u0327",\u00E9:"e\u0301",\u00E8:"e\u0300",\u00EB:"e\u0308",\u1EBD:"e\u0303",\u0113:"e\u0304",\u1E17:"e\u0304\u0301",\u1E15:"e\u0304\u0300",\u0115:"e\u0306",\u1E1D:"e\u0327\u0306",\u011B:"e\u030C",\u00EA:"e\u0302",\u1EBF:"e\u0302\u0301",\u1EC1:"e\u0302\u0300",\u1EC5:"e\u0302\u0303",\u0117:"e\u0307",\u0229:"e\u0327",\u1E1F:"f\u0307",\u01F5:"g\u0301",\u1E21:"g\u0304",\u011F:"g\u0306",\u01E7:"g\u030C",\u011D:"g\u0302",\u0121:"g\u0307",\u0123:"g\u0327",\u1E27:"h\u0308",\u021F:"h\u030C",\u0125:"h\u0302",\u1E23:"h\u0307",\u1E29:"h\u0327",\u00ED:"i\u0301",\u00EC:"i\u0300",\u00EF:"i\u0308",\u1E2F:"i\u0308\u0301",\u0129:"i\u0303",\u012B:"i\u0304",\u012D:"i\u0306",\u01D0:"i\u030C",\u00EE:"i\u0302",\u01F0:"j\u030C",\u0135:"j\u0302",\u1E31:"k\u0301",\u01E9:"k\u030C",\u0137:"k\u0327",\u013A:"l\u0301",\u013E:"l\u030C",\u013C:"l\u0327",\u1E3F:"m\u0301",\u1E41:"m\u0307",\u0144:"n\u0301",\u01F9:"n\u0300",\u00F1:"n\u0303",\u0148:"n\u030C",\u1E45:"n\u0307",\u0146:"n\u0327",\u00F3:"o\u0301",\u00F2:"o\u0300",\u00F6:"o\u0308",\u022B:"o\u0308\u0304",\u00F5:"o\u0303",\u1E4D:"o\u0303\u0301",\u1E4F:"o\u0303\u0308",\u022D:"o\u0303\u0304",\u014D:"o\u0304",\u1E53:"o\u0304\u0301",\u1E51:"o\u0304\u0300",\u014F:"o\u0306",\u01D2:"o\u030C",\u00F4:"o\u0302",\u1ED1:"o\u0302\u0301",\u1ED3:"o\u0302\u0300",\u1ED7:"o\u0302\u0303",\u022F:"o\u0307",\u0231:"o\u0307\u0304",\u0151:"o\u030B",\u1E55:"p\u0301",\u1E57:"p\u0307",\u0155:"r\u0301",\u0159:"r\u030C",\u1E59:"r\u0307",\u0157:"r\u0327",\u015B:"s\u0301",\u1E65:"s\u0301\u0307",\u0161:"s\u030C",\u1E67:"s\u030C\u0307",\u015D:"s\u0302",\u1E61:"s\u0307",\u015F:"s\u0327",\u1E97:"t\u0308",\u0165:"t\u030C",\u1E6B:"t\u0307",\u0163:"t\u0327",\u00FA:"u\u0301",\u00F9:"u\u0300",\u00FC:"u\u0308",\u01D8:"u\u0308\u0301",\u01DC:"u\u0308\u0300",\u01D6:"u\u0308\u0304",\u01DA:"u\u0308\u030C",\u0169:"u\u0303",\u1E79:"u\u0303\u0301",\u016B:"u\u0304",\u1E7B:"u\u0304\u0308",\u016D:"u\u0306",\u01D4:"u\u030C",\u00FB:"u\u0302",\u016F:"u\u030A",\u0171:"u\u030B",\u1E7D:"v\u0303",\u1E83:"w\u0301",\u1E81:"w\u0300",\u1E85:"w\u0308",\u0175:"w\u0302",\u1E87:"w\u0307",\u1E98:"w\u030A",\u1E8D:"x\u0308",\u1E8B:"x\u0307",\u00FD:"y\u0301",\u1EF3:"y\u0300",\u00FF:"y\u0308",\u1EF9:"y\u0303",\u0233:"y\u0304",\u0177:"y\u0302",\u1E8F:"y\u0307",\u1E99:"y\u030A",\u017A:"z\u0301",\u017E:"z\u030C",\u1E91:"z\u0302",\u017C:"z\u0307",\u00C1:"A\u0301",\u00C0:"A\u0300",\u00C4:"A\u0308",\u01DE:"A\u0308\u0304",\u00C3:"A\u0303",\u0100:"A\u0304",\u0102:"A\u0306",\u1EAE:"A\u0306\u0301",\u1EB0:"A\u0306\u0300",\u1EB4:"A\u0306\u0303",\u01CD:"A\u030C",\u00C2:"A\u0302",\u1EA4:"A\u0302\u0301",\u1EA6:"A\u0302\u0300",\u1EAA:"A\u0302\u0303",\u0226:"A\u0307",\u01E0:"A\u0307\u0304",\u00C5:"A\u030A",\u01FA:"A\u030A\u0301",\u1E02:"B\u0307",\u0106:"C\u0301",\u1E08:"C\u0327\u0301",\u010C:"C\u030C",\u0108:"C\u0302",\u010A:"C\u0307",\u00C7:"C\u0327",\u010E:"D\u030C",\u1E0A:"D\u0307",\u1E10:"D\u0327",\u00C9:"E\u0301",\u00C8:"E\u0300",\u00CB:"E\u0308",\u1EBC:"E\u0303",\u0112:"E\u0304",\u1E16:"E\u0304\u0301",\u1E14:"E\u0304\u0300",\u0114:"E\u0306",\u1E1C:"E\u0327\u0306",\u011A:"E\u030C",\u00CA:"E\u0302",\u1EBE:"E\u0302\u0301",\u1EC0:"E\u0302\u0300",\u1EC4:"E\u0302\u0303",\u0116:"E\u0307",\u0228:"E\u0327",\u1E1E:"F\u0307",\u01F4:"G\u0301",\u1E20:"G\u0304",\u011E:"G\u0306",\u01E6:"G\u030C",\u011C:"G\u0302",\u0120:"G\u0307",\u0122:"G\u0327",\u1E26:"H\u0308",\u021E:"H\u030C",\u0124:"H\u0302",\u1E22:"H\u0307",\u1E28:"H\u0327",\u00CD:"I\u0301",\u00CC:"I\u0300",\u00CF:"I\u0308",\u1E2E:"I\u0308\u0301",\u0128:"I\u0303",\u012A:"I\u0304",\u012C:"I\u0306",\u01CF:"I\u030C",\u00CE:"I\u0302",\u0130:"I\u0307",\u0134:"J\u0302",\u1E30:"K\u0301",\u01E8:"K\u030C",\u0136:"K\u0327",\u0139:"L\u0301",\u013D:"L\u030C",\u013B:"L\u0327",\u1E3E:"M\u0301",\u1E40:"M\u0307",\u0143:"N\u0301",\u01F8:"N\u0300",\u00D1:"N\u0303",\u0147:"N\u030C",\u1E44:"N\u0307",\u0145:"N\u0327",\u00D3:"O\u0301",\u00D2:"O\u0300",\u00D6:"O\u0308",\u022A:"O\u0308\u0304",\u00D5:"O\u0303",\u1E4C:"O\u0303\u0301",\u1E4E:"O\u0303\u0308",\u022C:"O\u0303\u0304",\u014C:"O\u0304",\u1E52:"O\u0304\u0301",\u1E50:"O\u0304\u0300",\u014E:"O\u0306",\u01D1:"O\u030C",\u00D4:"O\u0302",\u1ED0:"O\u0302\u0301",\u1ED2:"O\u0302\u0300",\u1ED6:"O\u0302\u0303",\u022E:"O\u0307",\u0230:"O\u0307\u0304",\u0150:"O\u030B",\u1E54:"P\u0301",\u1E56:"P\u0307",\u0154:"R\u0301",\u0158:"R\u030C",\u1E58:"R\u0307",\u0156:"R\u0327",\u015A:"S\u0301",\u1E64:"S\u0301\u0307",\u0160:"S\u030C",\u1E66:"S\u030C\u0307",\u015C:"S\u0302",\u1E60:"S\u0307",\u015E:"S\u0327",\u0164:"T\u030C",\u1E6A:"T\u0307",\u0162:"T\u0327",\u00DA:"U\u0301",\u00D9:"U\u0300",\u00DC:"U\u0308",\u01D7:"U\u0308\u0301",\u01DB:"U\u0308\u0300",\u01D5:"U\u0308\u0304",\u01D9:"U\u0308\u030C",\u0168:"U\u0303",\u1E78:"U\u0303\u0301",\u016A:"U\u0304",\u1E7A:"U\u0304\u0308",\u016C:"U\u0306",\u01D3:"U\u030C",\u00DB:"U\u0302",\u016E:"U\u030A",\u0170:"U\u030B",\u1E7C:"V\u0303",\u1E82:"W\u0301",\u1E80:"W\u0300",\u1E84:"W\u0308",\u0174:"W\u0302",\u1E86:"W\u0307",\u1E8C:"X\u0308",\u1E8A:"X\u0307",\u00DD:"Y\u0301",\u1EF2:"Y\u0300",\u0178:"Y\u0308",\u1EF8:"Y\u0303",\u0232:"Y\u0304",\u0176:"Y\u0302",\u1E8E:"Y\u0307",\u0179:"Z\u0301",\u017D:"Z\u030C",\u1E90:"Z\u0302",\u017B:"Z\u0307",\u03AC:"\u03B1\u0301",\u1F70:"\u03B1\u0300",\u1FB1:"\u03B1\u0304",\u1FB0:"\u03B1\u0306",\u03AD:"\u03B5\u0301",\u1F72:"\u03B5\u0300",\u03AE:"\u03B7\u0301",\u1F74:"\u03B7\u0300",\u03AF:"\u03B9\u0301",\u1F76:"\u03B9\u0300",\u03CA:"\u03B9\u0308",\u0390:"\u03B9\u0308\u0301",\u1FD2:"\u03B9\u0308\u0300",\u1FD1:"\u03B9\u0304",\u1FD0:"\u03B9\u0306",\u03CC:"\u03BF\u0301",\u1F78:"\u03BF\u0300",\u03CD:"\u03C5\u0301",\u1F7A:"\u03C5\u0300",\u03CB:"\u03C5\u0308",\u03B0:"\u03C5\u0308\u0301",\u1FE2:"\u03C5\u0308\u0300",\u1FE1:"\u03C5\u0304",\u1FE0:"\u03C5\u0306",\u03CE:"\u03C9\u0301",\u1F7C:"\u03C9\u0300",\u038E:"\u03A5\u0301",\u1FEA:"\u03A5\u0300",\u03AB:"\u03A5\u0308",\u1FE9:"\u03A5\u0304",\u1FE8:"\u03A5\u0306",\u038F:"\u03A9\u0301",\u1FFA:"\u03A9\u0300"},ik=class e{static{o(this,"Parser")}constructor(t,r){this.mode=void 0,this.gullet=void 0,this.settings=void 0,this.leftrightDepth=void 0,this.nextToken=void 0,this.mode="math",this.gullet=new lD(t,r,this.mode),this.settings=r,this.leftrightDepth=0}expect(t,r){if(r===void 0&&(r=!0),this.fetch().text!==t)throw new Lt("Expected '"+t+"', got '"+this.fetch().text+"'",this.fetch());r&&this.consume()}consume(){this.nextToken=null}fetch(){return this.nextToken==null&&(this.nextToken=this.gullet.expandNextToken()),this.nextToken}switchMode(t){this.mode=t,this.gullet.switchMode(t)}parse(){this.settings.globalGroup||this.gullet.beginGroup(),this.settings.colorIsTextColor&&this.gullet.macros.set("\\color","\\textcolor");try{var t=this.parseExpression(!1);return this.expect("EOF"),this.settings.globalGroup||this.gullet.endGroup(),t}finally{this.gullet.endGroups()}}subparse(t){var r=this.nextToken;this.consume(),this.gullet.pushToken(new eo("}")),this.gullet.pushTokens(t);var i=this.parseExpression(!1);return this.expect("}"),this.nextToken=r,i}parseExpression(t,r){for(var i=[];;){this.mode==="math"&&this.consumeSpaces();var n=this.fetch();if(e.endOfExpression.indexOf(n.text)!==-1||r&&n.text===r||t&&Fh[n.text]&&Fh[n.text].infix)break;var a=this.parseAtom(r);if(a){if(a.type==="internal")continue}else break;i.push(a)}return this.mode==="text"&&this.formLigatures(i),this.handleInfixNodes(i)}handleInfixNodes(t){for(var r=-1,i,n=0;n<t.length;n++)if(t[n].type==="infix"){if(r!==-1)throw new Lt("only one infix operator per group",t[n].token);r=n,i=t[n].replaceWith}if(r!==-1&&i){var a,s,l=t.slice(0,r),u=t.slice(r+1);l.length===1&&l[0].type==="ordgroup"?a=l[0]:a={type:"ordgroup",mode:this.mode,body:l},u.length===1&&u[0].type==="ordgroup"?s=u[0]:s={type:"ordgroup",mode:this.mode,body:u};var h;return i==="\\\\abovefrac"?h=this.callFunction(i,[a,t[r],s],[]):h=this.callFunction(i,[a,s],[]),[h]}else return t}handleSupSubscript(t){var r=this.fetch(),i=r.text;this.consume(),this.consumeSpaces();var n;do{var a;n=this.parseGroup(t)}while(((a=n)==null?void 0:a.type)==="internal");if(!n)throw new Lt("Expected group after '"+i+"'",r);return n}formatUnsupportedCmd(t){for(var r=[],i=0;i<t.length;i++)r.push({type:"textord",mode:"text",text:t[i]});var n={type:"text",mode:this.mode,body:r},a={type:"color",mode:this.mode,color:this.settings.errorColor,body:[n]};return a}parseAtom(t){var r=this.parseGroup("atom",t);if(r?.type==="internal"||this.mode==="text")return r;for(var i,n;;){this.consumeSpaces();var a=this.fetch();if(a.text==="\\limits"||a.text==="\\nolimits"){if(r&&r.type==="op"){var s=a.text==="\\limits";r.limits=s,r.alwaysHandleSupSub=!0}else if(r&&r.type==="operatorname")r.alwaysHandleSupSub&&(r.limits=a.text==="\\limits");else throw new Lt("Limit controls must follow a math operator",a);this.consume()}else if(a.text==="^"){if(i)throw new Lt("Double superscript",a);i=this.handleSupSubscript("superscript")}else if(a.text==="_"){if(n)throw new Lt("Double subscript",a);n=this.handleSupSubscript("subscript")}else if(a.text==="'"){if(i)throw new Lt("Double superscript",a);var l={type:"textord",mode:this.mode,text:"\\prime"},u=[l];for(this.consume();this.fetch().text==="'";)u.push(l),this.consume();this.fetch().text==="^"&&u.push(this.handleSupSubscript("superscript")),i={type:"ordgroup",mode:this.mode,body:u}}else if(jC[a.text]){var h=GY.test(a.text),d=[];for(d.push(new eo(jC[a.text])),this.consume();;){var f=this.fetch().text;if(!jC[f]||GY.test(f)!==h)break;d.unshift(new eo(jC[f])),this.consume()}var p=this.subparse(d);h?n={type:"ordgroup",mode:"math",body:p}:i={type:"ordgroup",mode:"math",body:p}}else break}return i||n?{type:"supsub",mode:this.mode,base:r,sup:i,sub:n}:r}parseFunction(t,r){var i=this.fetch(),n=i.text,a=Fh[n];if(!a)return null;if(this.consume(),r&&r!=="atom"&&!a.allowedInArgument)throw new Lt("Got function '"+n+"' with no arguments"+(r?" as "+r:""),i);if(this.mode==="text"&&!a.allowedInText)throw new Lt("Can't use function '"+n+"' in text mode",i);if(this.mode==="math"&&a.allowedInMath===!1)throw new Lt("Can't use function '"+n+"' in math mode",i);var{args:s,optArgs:l}=this.parseArguments(n,a);return this.callFunction(n,s,l,i,t)}callFunction(t,r,i,n,a){var s={funcName:t,parser:this,token:n,breakOnTokenText:a},l=Fh[t];if(l&&l.handler)return l.handler(s,r,i);throw new Lt("No function handler for "+t)}parseArguments(t,r){var i=r.numArgs+r.numOptionalArgs;if(i===0)return{args:[],optArgs:[]};for(var n=[],a=[],s=0;s<i;s++){var l=r.argTypes&&r.argTypes[s],u=s<r.numOptionalArgs;(r.primitive&&l==null||r.type==="sqrt"&&s===1&&a[0]==null)&&(l="primitive");var h=this.parseGroupOfType("argument to '"+t+"'",l,u);if(u)a.push(h);else if(h!=null)n.push(h);else throw new Lt("Null argument, please report this as a bug")}return{args:n,optArgs:a}}parseGroupOfType(t,r,i){switch(r){case"color":return this.parseColorGroup(i);case"size":return this.parseSizeGroup(i);case"url":return this.parseUrlGroup(i);case"math":case"text":return this.parseArgumentGroup(i,r);case"hbox":{var n=this.parseArgumentGroup(i,"text");return n!=null?{type:"styling",mode:n.mode,body:[n],style:"text"}:null}case"raw":{var a=this.parseStringGroup("raw",i);return a!=null?{type:"raw",mode:"text",string:a.text}:null}case"primitive":{if(i)throw new Lt("A primitive argument cannot be optional");var s=this.parseGroup(t);if(s==null)throw new Lt("Expected group as "+t,this.fetch());return s}case"original":case null:case void 0:return this.parseArgumentGroup(i);default:throw new Lt("Unknown group type as "+t,this.fetch())}}consumeSpaces(){for(;this.fetch().text===" ";)this.consume()}parseStringGroup(t,r){var i=this.gullet.scanArgument(r);if(i==null)return null;for(var n="",a;(a=this.fetch()).text!=="EOF";)n+=a.text,this.consume();return this.consume(),i.text=n,i}parseRegexGroup(t,r){for(var i=this.fetch(),n=i,a="",s;(s=this.fetch()).text!=="EOF"&&t.test(a+s.text);)n=s,a+=n.text,this.consume();if(a==="")throw new Lt("Invalid "+r+": '"+i.text+"'",i);return i.range(n,a)}parseColorGroup(t){var r=this.parseStringGroup("color",t);if(r==null)return null;var i=/^(#[a-f0-9]{3,4}|#[a-f0-9]{6}|#[a-f0-9]{8}|[a-f0-9]{6}|[a-z]+)$/i.exec(r.text);if(!i)throw new Lt("Invalid color: '"+r.text+"'",r);var n=i[0];return/^[0-9a-f]{6}$/i.test(n)&&(n="#"+n),{type:"color-token",mode:this.mode,color:n}}parseSizeGroup(t){var r,i=!1;if(this.gullet.consumeSpaces(),!t&&this.gullet.future().text!=="{"?r=this.parseRegexGroup(/^[-+]? *(?:$|\d+|\d+\.\d*|\.\d*) *[a-z]{0,2} *$/,"size"):r=this.parseStringGroup("size",t),!r)return null;!t&&r.text.length===0&&(r.text="0pt",i=!0);var n=/([-+]?) *(\d+(?:\.\d*)?|\.\d+) *([a-z]{2})/.exec(r.text);if(!n)throw new Lt("Invalid size: '"+r.text+"'",r);var a={number:+(n[1]+n[2]),unit:n[3]};if(!HY(a))throw new Lt("Invalid unit: '"+a.unit+"'",r);return{type:"size",mode:this.mode,value:a,isBlank:i}}parseUrlGroup(t){this.gullet.lexer.setCatcode("%",13),this.gullet.lexer.setCatcode("~",12);var r=this.parseStringGroup("url",t);if(this.gullet.lexer.setCatcode("%",14),this.gullet.lexer.setCatcode("~",13),r==null)return null;var i=r.text.replace(/\\([#$%&~_^{}])/g,"$1");return{type:"url",mode:this.mode,url:i}}parseArgumentGroup(t,r){var i=this.gullet.scanArgument(t);if(i==null)return null;var n=this.mode;r&&this.switchMode(r),this.gullet.beginGroup();var a=this.parseExpression(!1,"EOF");this.expect("EOF"),this.gullet.endGroup();var s={type:"ordgroup",mode:this.mode,loc:i.loc,body:a};return r&&this.switchMode(n),s}parseGroup(t,r){var i=this.fetch(),n=i.text,a;if(n==="{"||n==="\\begingroup"){this.consume();var s=n==="{"?"}":"\\endgroup";this.gullet.beginGroup();var l=this.parseExpression(!1,s),u=this.fetch();this.expect(s),this.gullet.endGroup(),a={type:"ordgroup",mode:this.mode,loc:bs.range(i,u),body:l,semisimple:n==="\\begingroup"||void 0}}else if(a=this.parseFunction(r,t)||this.parseSymbol(),a==null&&n[0]==="\\"&&!Pj.hasOwnProperty(n)){if(this.settings.throwOnError)throw new Lt("Undefined control sequence: "+n,i);a=this.formatUnsupportedCmd(n),this.consume()}return a}formLigatures(t){for(var r=t.length-1,i=0;i<r;++i){var n=t[i],a=n.text;a==="-"&&t[i+1].text==="-"&&(i+1<r&&t[i+2].text==="-"?(t.splice(i,3,{type:"textord",mode:"text",loc:bs.range(n,t[i+2]),text:"---"}),r-=2):(t.splice(i,2,{type:"textord",mode:"text",loc:bs.range(n,t[i+1]),text:"--"}),r-=1)),(a==="'"||a==="`")&&t[i+1].text===a&&(t.splice(i,2,{type:"textord",mode:"text",loc:bs.range(n,t[i+1]),text:a+a}),r-=1)}}parseSymbol(){var t=this.fetch(),r=t.text;if(/^\\verb[^a-zA-Z]/.test(r)){this.consume();var i=r.slice(5),n=i.charAt(0)==="*";if(n&&(i=i.slice(1)),i.length<2||i.charAt(0)!==i.slice(-1))throw new Lt(`\\verb assertion failed --
-                    please report what input caused this bug`);return i=i.slice(1,-1),{type:"verb",mode:"text",body:i,star:n}}VY.hasOwnProperty(r[0])&&!_i[this.mode][r[0]]&&(this.settings.strict&&this.mode==="math"&&this.settings.reportNonstrict("unicodeTextInMathMode",'Accented Unicode text character "'+r[0]+'" used in math mode',t),r=VY[r[0]]+r.slice(1));var a=j9e.exec(r);a&&(r=r.substring(0,a.index),r==="i"?r="\u0131":r==="j"&&(r="\u0237"));var s;if(_i[this.mode][r]){this.settings.strict&&this.mode==="math"&&eD.indexOf(r)>=0&&this.settings.reportNonstrict("unicodeTextInMathMode",'Latin-1/Unicode text character "'+r[0]+'" used in math mode',t);var l=_i[this.mode][r].group,u=bs.range(t),h;if(GIe.hasOwnProperty(l)){var d=l;h={type:"atom",mode:this.mode,family:d,loc:u,text:r}}else h={type:l,mode:this.mode,loc:u,text:r};s=h}else if(r.charCodeAt(0)>=128)this.settings.strict&&(qY(r.charCodeAt(0))?this.mode==="math"&&this.settings.reportNonstrict("unicodeTextInMathMode",'Unicode text character "'+r[0]+'" used in math mode',t):this.settings.reportNonstrict("unknownSymbol",'Unrecognized Unicode character "'+r[0]+'"'+(" ("+r.charCodeAt(0)+")"),t)),s={type:"textord",mode:"text",loc:bs.range(t),text:r};else return null;if(this.consume(),a)for(var f=0;f<a[0].length;f++){var p=a[0][f];if(!K7[p])throw new Lt("Unknown accent ' "+p+"'",t);var m=K7[p][this.mode]||K7[p].text;if(!m)throw new Lt("Accent "+p+" unsupported in "+this.mode+" mode",t);s={type:"accent",mode:this.mode,loc:bs.range(t),label:m,isStretchy:!1,isShifty:!0,base:s}}return s}};ik.endOfExpression=["}","\\endgroup","\\end","\\right","&"];SD=o(function(t,r){if(!(typeof t=="string"||t instanceof String))throw new TypeError("KaTeX can only parse string typed expression");var i=new ik(t,r);delete i.gullet.macros.current["\\df@tag"];var n=i.parse();if(delete i.gullet.macros.current["\\current@color"],delete i.gullet.macros.current["\\color"],i.gullet.macros.get("\\df@tag")){if(!r.displayMode)throw new Lt("\\tag works only in display equations");n=[{type:"tag",mode:"text",body:n,tag:i.subparse([new eo("\\df@tag")])}]}return n},"parseTree"),ED=o(function(t,r,i){r.textContent="";var n=uk(t,i).toNode();r.appendChild(n)},"render");typeof document<"u"&&document.compatMode!=="CSS1Compat"&&(typeof console<"u"&&console.warn("Warning: KaTeX doesn't work in quirks mode. Make sure your website has a suitable doctype."),ED=o(function(){throw new Lt("KaTeX doesn't work in quirks mode.")},"render"));Bj=o(function(t,r){var i=uk(t,r).toMarkup();return i},"renderToString"),Fj=o(function(t,r){var i=new gv(r);return SD(t,i)},"generateParseTree"),$j=o(function(t,r,i){if(i.throwOnError||!(t instanceof Lt))throw t;var n=Ke.makeSpan(["katex-error"],[new Ts(r)]);return n.setAttribute("title",t.toString()),n.setAttribute("style","color:"+i.errorColor),n},"renderError"),uk=o(function(t,r){var i=new gv(r);try{var n=SD(t,i);return c9e(n,t,i)}catch(a){return $j(a,t,i)}},"renderToDomTree"),zj=o(function(t,r){var i=new gv(r);try{var n=SD(t,i);return u9e(n,t,i)}catch(a){return $j(a,t,i)}},"renderToHTMLTree"),Gj="0.16.25",Vj={Span:Wf,Anchor:vv,SymbolNode:Ts,SvgNode:ml,PathNode:ac,LineNode:xv},Z9e={version:Gj,render:ED,renderToString:Bj,ParseError:Lt,SETTINGS_SCHEMA:pv,__parse:Fj,__renderToDomTree:uk,__renderToHTMLTree:zj,__setFontMetrics:UY,__defineSymbol:q,__defineFunction:Bt,__defineMacro:he,__domTree:Vj}});function eOe(){let e="data-temp-href-target";Ro.addHook("beforeSanitizeAttributes",t=>{t.tagName==="A"&&t.hasAttribute("target")&&t.setAttribute(e,t.getAttribute("target")??"")}),Ro.addHook("afterSanitizeAttributes",t=>{t.tagName==="A"&&t.hasAttribute(e)&&(t.setAttribute("target",t.getAttribute(e)??""),t.removeAttribute(e),t.getAttribute("target")==="_blank"&&t.setAttribute("rel","noopener"))})}var Uf,Q9e,J9e,Yj,Uj,fr,tOe,rOe,iOe,nOe,jj,Hf,aOe,sOe,cc,AD,oOe,lOe,Hj,hk,Bi,Yf,cOe,Fm,vt,Ir=z(()=>{"use strict";uv();br();Uf=/<br\s*\/?>/gi,Q9e=o(e=>e?jj(e).replace(/\\n/g,"#br#").split("#br#"):[""],"getRows"),J9e=(()=>{let e=!1;return()=>{e||(eOe(),e=!0)}})();o(eOe,"setupDompurifyHooks");Yj=o(e=>(J9e(),Ro.sanitize(e)),"removeScript"),Uj=o((e,t)=>{if(Mr(t)){let r=t.securityLevel;r==="antiscript"||r==="strict"||r==="sandbox"?e=Yj(e):r!=="loose"&&(e=jj(e),e=e.replace(/</g,"&lt;").replace(/>/g,"&gt;"),e=e.replace(/=/g,"&equals;"),e=nOe(e))}return e},"sanitizeMore"),fr=o((e,t)=>e&&(t.dompurifyConfig?e=Ro.sanitize(Uj(e,t),t.dompurifyConfig).toString():e=Ro.sanitize(Uj(e,t),{FORBID_TAGS:["style"]}).toString(),e),"sanitizeText"),tOe=o((e,t)=>typeof e=="string"?fr(e,t):e.flat().map(r=>fr(r,t)),"sanitizeTextOrArray"),rOe=o(e=>Uf.test(e),"hasBreaks"),iOe=o(e=>e.split(Uf),"splitBreaks"),nOe=o(e=>e.replace(/#br#/g,"<br/>"),"placeholderToBreak"),jj=o(e=>e.replace(Uf,"#br#"),"breakToPlaceholder"),Hf=o(e=>{let t="";return e&&(t=window.location.protocol+"//"+window.location.host+window.location.pathname+window.location.search,t=CSS.escape(t)),t},"getUrl"),aOe=o(function(...e){let t=e.filter(r=>!isNaN(r));return Math.max(...t)},"getMax"),sOe=o(function(...e){let t=e.filter(r=>!isNaN(r));return Math.min(...t)},"getMin"),cc=o(function(e){let t=e.split(/(,)/),r=[];for(let i=0;i<t.length;i++){let n=t[i];if(n===","&&i>0&&i+1<t.length){let a=t[i-1],s=t[i+1];oOe(a,s)&&(n=a+","+s,i++,r.pop())}r.push(lOe(n))}return r.join("")},"parseGenericTypes"),AD=o((e,t)=>Math.max(0,e.split(t).length-1),"countOccurrence"),oOe=o((e,t)=>{let r=AD(e,"~"),i=AD(t,"~");return r===1&&i===1},"shouldCombineSets"),lOe=o(e=>{let t=AD(e,"~"),r=!1;if(t<=1)return e;t%2!==0&&e.startsWith("~")&&(e=e.substring(1),r=!0);let i=[...e],n=i.indexOf("~"),a=i.lastIndexOf("~");for(;n!==-1&&a!==-1&&n!==a;)i[n]="<",i[a]=">",n=i.indexOf("~"),a=i.lastIndexOf("~");return r&&i.unshift("~"),i.join("")},"processSet"),Hj=o(()=>window.MathMLElement!==void 0,"isMathMLSupported"),hk=/\$\$(.*)\$\$/g,Bi=o(e=>(e.match(hk)?.length??0)>0,"hasKatex"),Yf=o(async(e,t)=>{let r=document.createElement("div");r.innerHTML=await Fm(e,t),r.id="katex-temp",r.style.visibility="hidden",r.style.position="absolute",r.style.top="0",document.querySelector("body")?.insertAdjacentElement("beforeend",r);let n={width:r.clientWidth,height:r.clientHeight};return r.remove(),n},"calculateMathMLDimensions"),cOe=o(async(e,t)=>{if(!Bi(e))return e;if(!(Hj()||t.legacyMathML||t.forceLegacyMathML))return e.replace(hk,"MathML is unsupported in this environment.");{let{default:r}=await Promise.resolve().then(()=>(qj(),Wj)),i=t.forceLegacyMathML||!Hj()&&t.legacyMathML?"htmlAndMathml":"mathml";return e.split(Uf).map(n=>Bi(n)?`<div style="display: flex; align-items: center; justify-content: center; white-space: nowrap;">${n}</div>`:`<div>${n}</div>`).join("").replace(hk,(n,a)=>r.renderToString(a,{throwOnError:!0,displayMode:!0,output:i}).replace(/\n/g," ").replace(/<annotation.*<\/annotation>/g,""))}return e.replace(hk,"Katex is not supported in @mermaid-js/tiny. Please use the full mermaid library.")},"renderKatexUnsanitized"),Fm=o(async(e,t)=>fr(await cOe(e,t),t),"renderKatexSanitized"),vt={getRows:Q9e,sanitizeText:fr,sanitizeTextOrArray:tOe,hasBreaks:rOe,splitBreaks:iOe,lineBreakRegex:Uf,removeScript:Yj,getUrl:Hf,evaluate:Aa,getMax:aOe,getMin:sOe}});var DD,_D,Xj,dk,Kj,Zj,ks,uc=z(()=>{"use strict";UU();br();Ir();St();DD={body:'<g><rect width="80" height="80" style="fill: #087ebf; stroke-width: 0px;"/><text transform="translate(21.16 64.67)" style="fill: #fff; font-family: ArialMT, Arial; font-size: 67.75px;"><tspan x="0" y="0">?</tspan></text></g>',height:80,width:80},_D=new Map,Xj=new Map,dk=o(e=>{for(let t of e){if(!t.name)throw new Error('Invalid icon loader. Must have a "name" property with non-empty string value.');if(Z.debug("Registering icon pack:",t.name),"loader"in t)Xj.set(t.name,t.loader);else if("icons"in t)_D.set(t.name,t.icons);else throw Z.error("Invalid icon loader:",t),new Error('Invalid icon loader. Must have either "icons" or "loader" property.')}},"registerIconPacks"),Kj=o(async(e,t)=>{let r=J_(e,!0,t!==void 0);if(!r)throw new Error(`Invalid icon name: ${e}`);let i=r.prefix||t;if(!i)throw new Error(`Icon name must contain a prefix: ${e}`);let n=_D.get(i);if(!n){let s=Xj.get(i);if(!s)throw new Error(`Icon set not found: ${r.prefix}`);try{n={...await s(),prefix:i},_D.set(i,n)}catch(l){throw Z.error(l),new Error(`Failed to load icon set: ${r.prefix}`)}}let a=t7(n,r.name);if(!a)throw new Error(`Icon not found: ${e}`);return a},"getRegisteredIconData"),Zj=o(async e=>{try{return await Kj(e),!0}catch{return!1}},"isIconAvailable"),ks=o(async(e,t,r)=>{let i;try{i=await Kj(e,t?.fallbackPrefix)}catch(s){Z.error(s),i=DD}let n=i7(i,t),a=a7(n7(n.body),{...n.attributes,...r});return fr(a,Nt())},"getIconSVG")});function fk(e){for(var t=[],r=1;r<arguments.length;r++)t[r-1]=arguments[r];var i=Array.from(typeof e=="string"?[e]:e);i[i.length-1]=i[i.length-1].replace(/\r?\n([\t ]*)$/,"");var n=i.reduce(function(l,u){var h=u.match(/\n([\t ]+|(?!\s).)/g);return h?l.concat(h.map(function(d){var f,p;return(p=(f=d.match(/[\t ]/g))===null||f===void 0?void 0:f.length)!==null&&p!==void 0?p:0})):l},[]);if(n.length){var a=new RegExp(`
-[	 ]{`+Math.min.apply(Math,n)+"}","g");i=i.map(function(l){return l.replace(a,`
-`)})}i[0]=i[0].replace(/^\r?\n/,"");var s=i[0];return t.forEach(function(l,u){var h=s.match(/(?:^|\n)( *)$/),d=h?h[1]:"",f=l;typeof l=="string"&&l.includes(`
+?)[ \r	]*`,q7="[\u0300-\u036F]",BVe=new RegExp(q7+"+$"),$Ve="("+zQ+"+)|"+(OVe+"|")+"([!-\\[\\]-\u2027\u202A-\uD7FF\uF900-\uFFFF]"+(q7+"*")+"|[\uD800-\uDBFF][\uDC00-\uDFFF]"+(q7+"*")+"|\\\\verb\\*([^]).*?\\4|\\\\verb([^*a-zA-Z]).*?\\5"+("|"+PVe)+("|"+NVe+")"),eS=class{static{o(this,"Lexer")}constructor(t,r){this.input=t,this.settings=r,this.tokenRegex=new RegExp($Ve,"g"),this.catcodes={"%":14,"~":13}}setCatcode(t,r){this.catcodes[t]=r}lex(){var t=this.input,r=this.tokenRegex.lastIndex;if(r===t.length)return new Mo("EOF",new Qs(this,r,r));var n=this.tokenRegex.exec(t);if(n===null||n.index!==r)throw new Pt("Unexpected character: '"+t[r]+"'",new Mo(t[r],new Qs(this,r,r+1)));var i=n[6]||n[3]||(n[2]?"\\ ":" ");if(this.catcodes[i]===14){var a=t.indexOf(`
+`,this.tokenRegex.lastIndex);return a===-1?(this.tokenRegex.lastIndex=t.length,this.settings.reportNonstrict("commentAtEnd","% comment has no terminating newline; LaTeX would fail because of commenting the end of math mode (e.g. $)")):this.tokenRegex.lastIndex=a+1,this.lex()}return new Mo(i,new Qs(this,r,this.tokenRegex.lastIndex))}},H7=class{static{o(this,"Namespace")}constructor(t,r){t===void 0&&(t={}),r===void 0&&(r={}),this.current=r,this.builtins=t,this.undefStack=[]}beginGroup(){this.undefStack.push({})}endGroup(){if(this.undefStack.length===0)throw new Pt("Unbalanced namespace destruction: attempt to pop global namespace; please report this as a bug");var t=this.undefStack.pop();for(var r in t)t.hasOwnProperty(r)&&(t[r]==null?delete this.current[r]:this.current[r]=t[r])}endGroups(){for(;this.undefStack.length>0;)this.endGroup()}has(t){return this.current.hasOwnProperty(t)||this.builtins.hasOwnProperty(t)}get(t){return this.current.hasOwnProperty(t)?this.current[t]:this.builtins[t]}set(t,r,n){if(n===void 0&&(n=!1),n){for(var i=0;i<this.undefStack.length;i++)delete this.undefStack[i][t];this.undefStack.length>0&&(this.undefStack[this.undefStack.length-1][t]=r)}else{var a=this.undefStack[this.undefStack.length-1];a&&!a.hasOwnProperty(t)&&(a[t]=this.current[t])}r==null?delete this.current[t]:this.current[t]=r}},FVe=_Q;Ce("\\noexpand",function(e){var t=e.popToken();return e.isExpandable(t.text)&&(t.noexpand=!0,t.treatAsRelax=!0),{tokens:[t],numArgs:0}});Ce("\\expandafter",function(e){var t=e.popToken();return e.expandOnce(!0),{tokens:[t],numArgs:0}});Ce("\\@firstoftwo",function(e){var t=e.consumeArgs(2);return{tokens:t[0],numArgs:0}});Ce("\\@secondoftwo",function(e){var t=e.consumeArgs(2);return{tokens:t[1],numArgs:0}});Ce("\\@ifnextchar",function(e){var t=e.consumeArgs(3);e.consumeSpaces();var r=e.future();return t[0].length===1&&t[0][0].text===r.text?{tokens:t[1],numArgs:0}:{tokens:t[2],numArgs:0}});Ce("\\@ifstar","\\@ifnextchar *{\\@firstoftwo{#1}}");Ce("\\TextOrMath",function(e){var t=e.consumeArgs(2);return e.mode==="text"?{tokens:t[0],numArgs:0}:{tokens:t[1],numArgs:0}});UZ={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};Ce("\\char",function(e){var t=e.popToken(),r,n=0;if(t.text==="'")r=8,t=e.popToken();else if(t.text==='"')r=16,t=e.popToken();else if(t.text==="`")if(t=e.popToken(),t.text[0]==="\\")n=t.text.charCodeAt(1);else{if(t.text==="EOF")throw new Pt("\\char` missing argument");n=t.text.charCodeAt(0)}else r=10;if(r){if(n=UZ[t.text],n==null||n>=r)throw new Pt("Invalid base-"+r+" digit "+t.text);for(var i;(i=UZ[e.future().text])!=null&&i<r;)n*=r,n+=i,e.popToken()}return"\\@char{"+n+"}"});i8=o((e,t,r,n)=>{var i=e.consumeArg().tokens;if(i.length!==1)throw new Pt("\\newcommand's first argument must be a macro name");var a=i[0].text,s=e.isDefined(a);if(s&&!t)throw new Pt("\\newcommand{"+a+"} attempting to redefine "+(a+"; use \\renewcommand"));if(!s&&!r)throw new Pt("\\renewcommand{"+a+"} when command "+a+" does not yet exist; use \\newcommand");var l=0;if(i=e.consumeArg().tokens,i.length===1&&i[0].text==="["){for(var u="",h=e.expandNextToken();h.text!=="]"&&h.text!=="EOF";)u+=h.text,h=e.expandNextToken();if(!u.match(/^\s*[0-9]+\s*$/))throw new Pt("Invalid number of arguments: "+u);l=parseInt(u),i=e.consumeArg().tokens}return s&&n||e.macros.set(a,{tokens:i,numArgs:l}),""},"newcommand");Ce("\\newcommand",e=>i8(e,!1,!0,!1));Ce("\\renewcommand",e=>i8(e,!0,!1,!1));Ce("\\providecommand",e=>i8(e,!0,!0,!0));Ce("\\message",e=>{var t=e.consumeArgs(1)[0];return console.log(t.reverse().map(r=>r.text).join("")),""});Ce("\\errmessage",e=>{var t=e.consumeArgs(1)[0];return console.error(t.reverse().map(r=>r.text).join("")),""});Ce("\\show",e=>{var t=e.popToken(),r=t.text;return console.log(t,e.macros.get(r),kd[r],ui.math[r],ui.text[r]),""});Ce("\\bgroup","{");Ce("\\egroup","}");Ce("~","\\nobreakspace");Ce("\\lq","`");Ce("\\rq","'");Ce("\\aa","\\r a");Ce("\\AA","\\r A");Ce("\\textcopyright","\\html@mathml{\\textcircled{c}}{\\char`\xA9}");Ce("\\copyright","\\TextOrMath{\\textcopyright}{\\text{\\textcopyright}}");Ce("\\textregistered","\\html@mathml{\\textcircled{\\scriptsize R}}{\\char`\xAE}");Ce("\u212C","\\mathscr{B}");Ce("\u2130","\\mathscr{E}");Ce("\u2131","\\mathscr{F}");Ce("\u210B","\\mathscr{H}");Ce("\u2110","\\mathscr{I}");Ce("\u2112","\\mathscr{L}");Ce("\u2133","\\mathscr{M}");Ce("\u211B","\\mathscr{R}");Ce("\u212D","\\mathfrak{C}");Ce("\u210C","\\mathfrak{H}");Ce("\u2128","\\mathfrak{Z}");Ce("\\Bbbk","\\Bbb{k}");Ce("\\llap","\\mathllap{\\textrm{#1}}");Ce("\\rlap","\\mathrlap{\\textrm{#1}}");Ce("\\clap","\\mathclap{\\textrm{#1}}");Ce("\\mathstrut","\\vphantom{(}");Ce("\\underbar","\\underline{\\text{#1}}");Ce("\\not",'\\html@mathml{\\mathrel{\\mathrlap\\@not}\\nobreak}{\\char"338}');Ce("\\neq","\\html@mathml{\\mathrel{\\not=}}{\\mathrel{\\char`\u2260}}");Ce("\\ne","\\neq");Ce("\u2260","\\neq");Ce("\\notin","\\html@mathml{\\mathrel{{\\in}\\mathllap{/\\mskip1mu}}}{\\mathrel{\\char`\u2209}}");Ce("\u2209","\\notin");Ce("\u2258","\\html@mathml{\\mathrel{=\\kern{-1em}\\raisebox{0.4em}{$\\scriptsize\\frown$}}}{\\mathrel{\\char`\u2258}}");Ce("\u2259","\\html@mathml{\\stackrel{\\tiny\\wedge}{=}}{\\mathrel{\\char`\u2258}}");Ce("\u225A","\\html@mathml{\\stackrel{\\tiny\\vee}{=}}{\\mathrel{\\char`\u225A}}");Ce("\u225B","\\html@mathml{\\stackrel{\\scriptsize\\star}{=}}{\\mathrel{\\char`\u225B}}");Ce("\u225D","\\html@mathml{\\stackrel{\\tiny\\mathrm{def}}{=}}{\\mathrel{\\char`\u225D}}");Ce("\u225E","\\html@mathml{\\stackrel{\\tiny\\mathrm{m}}{=}}{\\mathrel{\\char`\u225E}}");Ce("\u225F","\\html@mathml{\\stackrel{\\tiny?}{=}}{\\mathrel{\\char`\u225F}}");Ce("\u27C2","\\perp");Ce("\u203C","\\mathclose{!\\mkern-0.8mu!}");Ce("\u220C","\\notni");Ce("\u231C","\\ulcorner");Ce("\u231D","\\urcorner");Ce("\u231E","\\llcorner");Ce("\u231F","\\lrcorner");Ce("\xA9","\\copyright");Ce("\xAE","\\textregistered");Ce("\\ulcorner",'\\html@mathml{\\@ulcorner}{\\mathop{\\char"231c}}');Ce("\\urcorner",'\\html@mathml{\\@urcorner}{\\mathop{\\char"231d}}');Ce("\\llcorner",'\\html@mathml{\\@llcorner}{\\mathop{\\char"231e}}');Ce("\\lrcorner",'\\html@mathml{\\@lrcorner}{\\mathop{\\char"231f}}');Ce("\\vdots","{\\varvdots\\rule{0pt}{15pt}}");Ce("\u22EE","\\vdots");Ce("\\varGamma","\\mathit{\\Gamma}");Ce("\\varDelta","\\mathit{\\Delta}");Ce("\\varTheta","\\mathit{\\Theta}");Ce("\\varLambda","\\mathit{\\Lambda}");Ce("\\varXi","\\mathit{\\Xi}");Ce("\\varPi","\\mathit{\\Pi}");Ce("\\varSigma","\\mathit{\\Sigma}");Ce("\\varUpsilon","\\mathit{\\Upsilon}");Ce("\\varPhi","\\mathit{\\Phi}");Ce("\\varPsi","\\mathit{\\Psi}");Ce("\\varOmega","\\mathit{\\Omega}");Ce("\\substack","\\begin{subarray}{c}#1\\end{subarray}");Ce("\\colon","\\nobreak\\mskip2mu\\mathpunct{}\\mathchoice{\\mkern-3mu}{\\mkern-3mu}{}{}{:}\\mskip6mu\\relax");Ce("\\boxed","\\fbox{$\\displaystyle{#1}$}");Ce("\\iff","\\DOTSB\\;\\Longleftrightarrow\\;");Ce("\\implies","\\DOTSB\\;\\Longrightarrow\\;");Ce("\\impliedby","\\DOTSB\\;\\Longleftarrow\\;");Ce("\\dddot","{\\overset{\\raisebox{-0.1ex}{\\normalsize ...}}{#1}}");Ce("\\ddddot","{\\overset{\\raisebox{-0.1ex}{\\normalsize ....}}{#1}}");YZ={",":"\\dotsc","\\not":"\\dotsb","+":"\\dotsb","=":"\\dotsb","<":"\\dotsb",">":"\\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","\\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"},zVe=new Set(["bin","rel"]);Ce("\\dots",function(e){var t="\\dotso",r=e.expandAfterFuture().text;return r in YZ?t=YZ[r]:(r.slice(0,4)==="\\not"||r in ui.math&&zVe.has(ui.math[r].group))&&(t="\\dotsb"),t});a8={")":!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};Ce("\\dotso",function(e){var t=e.future().text;return t in a8?"\\ldots\\,":"\\ldots"});Ce("\\dotsc",function(e){var t=e.future().text;return t in a8&&t!==","?"\\ldots\\,":"\\ldots"});Ce("\\cdots",function(e){var t=e.future().text;return t in a8?"\\@cdots\\,":"\\@cdots"});Ce("\\dotsb","\\cdots");Ce("\\dotsm","\\cdots");Ce("\\dotsi","\\!\\cdots");Ce("\\dotsx","\\ldots\\,");Ce("\\DOTSI","\\relax");Ce("\\DOTSB","\\relax");Ce("\\DOTSX","\\relax");Ce("\\tmspace","\\TextOrMath{\\kern#1#3}{\\mskip#1#2}\\relax");Ce("\\,","\\tmspace+{3mu}{.1667em}");Ce("\\thinspace","\\,");Ce("\\>","\\mskip{4mu}");Ce("\\:","\\tmspace+{4mu}{.2222em}");Ce("\\medspace","\\:");Ce("\\;","\\tmspace+{5mu}{.2777em}");Ce("\\thickspace","\\;");Ce("\\!","\\tmspace-{3mu}{.1667em}");Ce("\\negthinspace","\\!");Ce("\\negmedspace","\\tmspace-{4mu}{.2222em}");Ce("\\negthickspace","\\tmspace-{5mu}{.277em}");Ce("\\enspace","\\kern.5em ");Ce("\\enskip","\\hskip.5em\\relax");Ce("\\quad","\\hskip1em\\relax");Ce("\\qquad","\\hskip2em\\relax");Ce("\\tag","\\@ifstar\\tag@literal\\tag@paren");Ce("\\tag@paren","\\tag@literal{({#1})}");Ce("\\tag@literal",e=>{if(e.macros.get("\\df@tag"))throw new Pt("Multiple \\tag");return"\\gdef\\df@tag{\\text{#1}}"});Ce("\\bmod","\\mathchoice{\\mskip1mu}{\\mskip1mu}{\\mskip5mu}{\\mskip5mu}\\mathbin{\\rm mod}\\mathchoice{\\mskip1mu}{\\mskip1mu}{\\mskip5mu}{\\mskip5mu}");Ce("\\pod","\\allowbreak\\mathchoice{\\mkern18mu}{\\mkern8mu}{\\mkern8mu}{\\mkern8mu}(#1)");Ce("\\pmod","\\pod{{\\rm mod}\\mkern6mu#1}");Ce("\\mod","\\allowbreak\\mathchoice{\\mkern18mu}{\\mkern12mu}{\\mkern12mu}{\\mkern12mu}{\\rm mod}\\,\\,#1");Ce("\\newline","\\\\\\relax");Ce("\\TeX","\\textrm{\\html@mathml{T\\kern-.1667em\\raisebox{-.5ex}{E}\\kern-.125emX}{TeX}}");GQ=$t(Fc["Main-Regular"][84][1]-.7*Fc["Main-Regular"][65][1]);Ce("\\LaTeX","\\textrm{\\html@mathml{"+("L\\kern-.36em\\raisebox{"+GQ+"}{\\scriptstyle A}")+"\\kern-.15em\\TeX}{LaTeX}}");Ce("\\KaTeX","\\textrm{\\html@mathml{"+("K\\kern-.17em\\raisebox{"+GQ+"}{\\scriptstyle A}")+"\\kern-.15em\\TeX}{KaTeX}}");Ce("\\hspace","\\@ifstar\\@hspacer\\@hspace");Ce("\\@hspace","\\hskip #1\\relax");Ce("\\@hspacer","\\rule{0pt}{0pt}\\hskip #1\\relax");Ce("\\ordinarycolon",":");Ce("\\vcentcolon","\\mathrel{\\mathop\\ordinarycolon}");Ce("\\dblcolon",'\\html@mathml{\\mathrel{\\vcentcolon\\mathrel{\\mkern-.9mu}\\vcentcolon}}{\\mathop{\\char"2237}}');Ce("\\coloneqq",'\\html@mathml{\\mathrel{\\vcentcolon\\mathrel{\\mkern-1.2mu}=}}{\\mathop{\\char"2254}}');Ce("\\Coloneqq",'\\html@mathml{\\mathrel{\\dblcolon\\mathrel{\\mkern-1.2mu}=}}{\\mathop{\\char"2237\\char"3d}}');Ce("\\coloneq",'\\html@mathml{\\mathrel{\\vcentcolon\\mathrel{\\mkern-1.2mu}\\mathrel{-}}}{\\mathop{\\char"3a\\char"2212}}');Ce("\\Coloneq",'\\html@mathml{\\mathrel{\\dblcolon\\mathrel{\\mkern-1.2mu}\\mathrel{-}}}{\\mathop{\\char"2237\\char"2212}}');Ce("\\eqqcolon",'\\html@mathml{\\mathrel{=\\mathrel{\\mkern-1.2mu}\\vcentcolon}}{\\mathop{\\char"2255}}');Ce("\\Eqqcolon",'\\html@mathml{\\mathrel{=\\mathrel{\\mkern-1.2mu}\\dblcolon}}{\\mathop{\\char"3d\\char"2237}}');Ce("\\eqcolon",'\\html@mathml{\\mathrel{\\mathrel{-}\\mathrel{\\mkern-1.2mu}\\vcentcolon}}{\\mathop{\\char"2239}}');Ce("\\Eqcolon",'\\html@mathml{\\mathrel{\\mathrel{-}\\mathrel{\\mkern-1.2mu}\\dblcolon}}{\\mathop{\\char"2212\\char"2237}}');Ce("\\colonapprox",'\\html@mathml{\\mathrel{\\vcentcolon\\mathrel{\\mkern-1.2mu}\\approx}}{\\mathop{\\char"3a\\char"2248}}');Ce("\\Colonapprox",'\\html@mathml{\\mathrel{\\dblcolon\\mathrel{\\mkern-1.2mu}\\approx}}{\\mathop{\\char"2237\\char"2248}}');Ce("\\colonsim",'\\html@mathml{\\mathrel{\\vcentcolon\\mathrel{\\mkern-1.2mu}\\sim}}{\\mathop{\\char"3a\\char"223c}}');Ce("\\Colonsim",'\\html@mathml{\\mathrel{\\dblcolon\\mathrel{\\mkern-1.2mu}\\sim}}{\\mathop{\\char"2237\\char"223c}}');Ce("\u2237","\\dblcolon");Ce("\u2239","\\eqcolon");Ce("\u2254","\\coloneqq");Ce("\u2255","\\eqqcolon");Ce("\u2A74","\\Coloneqq");Ce("\\ratio","\\vcentcolon");Ce("\\coloncolon","\\dblcolon");Ce("\\colonequals","\\coloneqq");Ce("\\coloncolonequals","\\Coloneqq");Ce("\\equalscolon","\\eqqcolon");Ce("\\equalscoloncolon","\\Eqqcolon");Ce("\\colonminus","\\coloneq");Ce("\\coloncolonminus","\\Coloneq");Ce("\\minuscolon","\\eqcolon");Ce("\\minuscoloncolon","\\Eqcolon");Ce("\\coloncolonapprox","\\Colonapprox");Ce("\\coloncolonsim","\\Colonsim");Ce("\\simcolon","\\mathrel{\\sim\\mathrel{\\mkern-1.2mu}\\vcentcolon}");Ce("\\simcoloncolon","\\mathrel{\\sim\\mathrel{\\mkern-1.2mu}\\dblcolon}");Ce("\\approxcolon","\\mathrel{\\approx\\mathrel{\\mkern-1.2mu}\\vcentcolon}");Ce("\\approxcoloncolon","\\mathrel{\\approx\\mathrel{\\mkern-1.2mu}\\dblcolon}");Ce("\\notni","\\html@mathml{\\not\\ni}{\\mathrel{\\char`\u220C}}");Ce("\\limsup","\\DOTSB\\operatorname*{lim\\,sup}");Ce("\\liminf","\\DOTSB\\operatorname*{lim\\,inf}");Ce("\\injlim","\\DOTSB\\operatorname*{inj\\,lim}");Ce("\\projlim","\\DOTSB\\operatorname*{proj\\,lim}");Ce("\\varlimsup","\\DOTSB\\operatorname*{\\overline{lim}}");Ce("\\varliminf","\\DOTSB\\operatorname*{\\underline{lim}}");Ce("\\varinjlim","\\DOTSB\\operatorname*{\\underrightarrow{lim}}");Ce("\\varprojlim","\\DOTSB\\operatorname*{\\underleftarrow{lim}}");Ce("\\gvertneqq","\\html@mathml{\\@gvertneqq}{\u2269}");Ce("\\lvertneqq","\\html@mathml{\\@lvertneqq}{\u2268}");Ce("\\ngeqq","\\html@mathml{\\@ngeqq}{\u2271}");Ce("\\ngeqslant","\\html@mathml{\\@ngeqslant}{\u2271}");Ce("\\nleqq","\\html@mathml{\\@nleqq}{\u2270}");Ce("\\nleqslant","\\html@mathml{\\@nleqslant}{\u2270}");Ce("\\nshortmid","\\html@mathml{\\@nshortmid}{\u2224}");Ce("\\nshortparallel","\\html@mathml{\\@nshortparallel}{\u2226}");Ce("\\nsubseteqq","\\html@mathml{\\@nsubseteqq}{\u2288}");Ce("\\nsupseteqq","\\html@mathml{\\@nsupseteqq}{\u2289}");Ce("\\varsubsetneq","\\html@mathml{\\@varsubsetneq}{\u228A}");Ce("\\varsubsetneqq","\\html@mathml{\\@varsubsetneqq}{\u2ACB}");Ce("\\varsupsetneq","\\html@mathml{\\@varsupsetneq}{\u228B}");Ce("\\varsupsetneqq","\\html@mathml{\\@varsupsetneqq}{\u2ACC}");Ce("\\imath","\\html@mathml{\\@imath}{\u0131}");Ce("\\jmath","\\html@mathml{\\@jmath}{\u0237}");Ce("\\llbracket","\\html@mathml{\\mathopen{[\\mkern-3.2mu[}}{\\mathopen{\\char`\u27E6}}");Ce("\\rrbracket","\\html@mathml{\\mathclose{]\\mkern-3.2mu]}}{\\mathclose{\\char`\u27E7}}");Ce("\u27E6","\\llbracket");Ce("\u27E7","\\rrbracket");Ce("\\lBrace","\\html@mathml{\\mathopen{\\{\\mkern-3.2mu[}}{\\mathopen{\\char`\u2983}}");Ce("\\rBrace","\\html@mathml{\\mathclose{]\\mkern-3.2mu\\}}}{\\mathclose{\\char`\u2984}}");Ce("\u2983","\\lBrace");Ce("\u2984","\\rBrace");Ce("\\minuso","\\mathbin{\\html@mathml{{\\mathrlap{\\mathchoice{\\kern{0.145em}}{\\kern{0.145em}}{\\kern{0.1015em}}{\\kern{0.0725em}}\\circ}{-}}}{\\char`\u29B5}}");Ce("\u29B5","\\minuso");Ce("\\darr","\\downarrow");Ce("\\dArr","\\Downarrow");Ce("\\Darr","\\Downarrow");Ce("\\lang","\\langle");Ce("\\rang","\\rangle");Ce("\\uarr","\\uparrow");Ce("\\uArr","\\Uparrow");Ce("\\Uarr","\\Uparrow");Ce("\\N","\\mathbb{N}");Ce("\\R","\\mathbb{R}");Ce("\\Z","\\mathbb{Z}");Ce("\\alef","\\aleph");Ce("\\alefsym","\\aleph");Ce("\\Alpha","\\mathrm{A}");Ce("\\Beta","\\mathrm{B}");Ce("\\bull","\\bullet");Ce("\\Chi","\\mathrm{X}");Ce("\\clubs","\\clubsuit");Ce("\\cnums","\\mathbb{C}");Ce("\\Complex","\\mathbb{C}");Ce("\\Dagger","\\ddagger");Ce("\\diamonds","\\diamondsuit");Ce("\\empty","\\emptyset");Ce("\\Epsilon","\\mathrm{E}");Ce("\\Eta","\\mathrm{H}");Ce("\\exist","\\exists");Ce("\\harr","\\leftrightarrow");Ce("\\hArr","\\Leftrightarrow");Ce("\\Harr","\\Leftrightarrow");Ce("\\hearts","\\heartsuit");Ce("\\image","\\Im");Ce("\\infin","\\infty");Ce("\\Iota","\\mathrm{I}");Ce("\\isin","\\in");Ce("\\Kappa","\\mathrm{K}");Ce("\\larr","\\leftarrow");Ce("\\lArr","\\Leftarrow");Ce("\\Larr","\\Leftarrow");Ce("\\lrarr","\\leftrightarrow");Ce("\\lrArr","\\Leftrightarrow");Ce("\\Lrarr","\\Leftrightarrow");Ce("\\Mu","\\mathrm{M}");Ce("\\natnums","\\mathbb{N}");Ce("\\Nu","\\mathrm{N}");Ce("\\Omicron","\\mathrm{O}");Ce("\\plusmn","\\pm");Ce("\\rarr","\\rightarrow");Ce("\\rArr","\\Rightarrow");Ce("\\Rarr","\\Rightarrow");Ce("\\real","\\Re");Ce("\\reals","\\mathbb{R}");Ce("\\Reals","\\mathbb{R}");Ce("\\Rho","\\mathrm{P}");Ce("\\sdot","\\cdot");Ce("\\sect","\\S");Ce("\\spades","\\spadesuit");Ce("\\sub","\\subset");Ce("\\sube","\\subseteq");Ce("\\supe","\\supseteq");Ce("\\Tau","\\mathrm{T}");Ce("\\thetasym","\\vartheta");Ce("\\weierp","\\wp");Ce("\\Zeta","\\mathrm{Z}");Ce("\\argmin","\\DOTSB\\operatorname*{arg\\,min}");Ce("\\argmax","\\DOTSB\\operatorname*{arg\\,max}");Ce("\\plim","\\DOTSB\\mathop{\\operatorname{plim}}\\limits");Ce("\\bra","\\mathinner{\\langle{#1}|}");Ce("\\ket","\\mathinner{|{#1}\\rangle}");Ce("\\braket","\\mathinner{\\langle{#1}\\rangle}");Ce("\\Bra","\\left\\langle#1\\right|");Ce("\\Ket","\\left|#1\\right\\rangle");VQ=o(e=>t=>{var r=t.consumeArg().tokens,n=t.consumeArg().tokens,i=t.consumeArg().tokens,a=t.consumeArg().tokens,s=t.macros.get("|"),l=t.macros.get("\\|");t.macros.beginGroup();var u=o(f=>p=>{e&&(p.macros.set("|",s),i.length&&p.macros.set("\\|",l));var m=f;if(!f&&i.length){var g=p.future();g.text==="|"&&(p.popToken(),m=!0)}return{tokens:m?i:n,numArgs:0}},"midMacro");t.macros.set("|",u(!1)),i.length&&t.macros.set("\\|",u(!0));var h=t.consumeArg().tokens,d=t.expandTokens([...a,...h,...r]);return t.macros.endGroup(),{tokens:d.reverse(),numArgs:0}},"braketHelper");Ce("\\bra@ket",VQ(!1));Ce("\\bra@set",VQ(!0));Ce("\\Braket","\\bra@ket{\\left\\langle}{\\,\\middle\\vert\\,}{\\,\\middle\\vert\\,}{\\right\\rangle}");Ce("\\Set","\\bra@set{\\left\\{\\:}{\\;\\middle\\vert\\;}{\\;\\middle\\Vert\\;}{\\:\\right\\}}");Ce("\\set","\\bra@set{\\{\\,}{\\mid}{}{\\,\\}}");Ce("\\angln","{\\angl n}");Ce("\\blue","\\textcolor{##6495ed}{#1}");Ce("\\orange","\\textcolor{##ffa500}{#1}");Ce("\\pink","\\textcolor{##ff00af}{#1}");Ce("\\red","\\textcolor{##df0030}{#1}");Ce("\\green","\\textcolor{##28ae7b}{#1}");Ce("\\gray","\\textcolor{gray}{#1}");Ce("\\purple","\\textcolor{##9d38bd}{#1}");Ce("\\blueA","\\textcolor{##ccfaff}{#1}");Ce("\\blueB","\\textcolor{##80f6ff}{#1}");Ce("\\blueC","\\textcolor{##63d9ea}{#1}");Ce("\\blueD","\\textcolor{##11accd}{#1}");Ce("\\blueE","\\textcolor{##0c7f99}{#1}");Ce("\\tealA","\\textcolor{##94fff5}{#1}");Ce("\\tealB","\\textcolor{##26edd5}{#1}");Ce("\\tealC","\\textcolor{##01d1c1}{#1}");Ce("\\tealD","\\textcolor{##01a995}{#1}");Ce("\\tealE","\\textcolor{##208170}{#1}");Ce("\\greenA","\\textcolor{##b6ffb0}{#1}");Ce("\\greenB","\\textcolor{##8af281}{#1}");Ce("\\greenC","\\textcolor{##74cf70}{#1}");Ce("\\greenD","\\textcolor{##1fab54}{#1}");Ce("\\greenE","\\textcolor{##0d923f}{#1}");Ce("\\goldA","\\textcolor{##ffd0a9}{#1}");Ce("\\goldB","\\textcolor{##ffbb71}{#1}");Ce("\\goldC","\\textcolor{##ff9c39}{#1}");Ce("\\goldD","\\textcolor{##e07d10}{#1}");Ce("\\goldE","\\textcolor{##a75a05}{#1}");Ce("\\redA","\\textcolor{##fca9a9}{#1}");Ce("\\redB","\\textcolor{##ff8482}{#1}");Ce("\\redC","\\textcolor{##f9685d}{#1}");Ce("\\redD","\\textcolor{##e84d39}{#1}");Ce("\\redE","\\textcolor{##bc2612}{#1}");Ce("\\maroonA","\\textcolor{##ffbde0}{#1}");Ce("\\maroonB","\\textcolor{##ff92c6}{#1}");Ce("\\maroonC","\\textcolor{##ed5fa6}{#1}");Ce("\\maroonD","\\textcolor{##ca337c}{#1}");Ce("\\maroonE","\\textcolor{##9e034e}{#1}");Ce("\\purpleA","\\textcolor{##ddd7ff}{#1}");Ce("\\purpleB","\\textcolor{##c6b9fc}{#1}");Ce("\\purpleC","\\textcolor{##aa87ff}{#1}");Ce("\\purpleD","\\textcolor{##7854ab}{#1}");Ce("\\purpleE","\\textcolor{##543b78}{#1}");Ce("\\mintA","\\textcolor{##f5f9e8}{#1}");Ce("\\mintB","\\textcolor{##edf2df}{#1}");Ce("\\mintC","\\textcolor{##e0e5cc}{#1}");Ce("\\grayA","\\textcolor{##f6f7f7}{#1}");Ce("\\grayB","\\textcolor{##f0f1f2}{#1}");Ce("\\grayC","\\textcolor{##e3e5e6}{#1}");Ce("\\grayD","\\textcolor{##d6d8da}{#1}");Ce("\\grayE","\\textcolor{##babec2}{#1}");Ce("\\grayF","\\textcolor{##888d93}{#1}");Ce("\\grayG","\\textcolor{##626569}{#1}");Ce("\\grayH","\\textcolor{##3b3e40}{#1}");Ce("\\grayI","\\textcolor{##21242c}{#1}");Ce("\\kaBlue","\\textcolor{##314453}{#1}");Ce("\\kaGreen","\\textcolor{##71B307}{#1}");WQ={"^":!0,_:!0,"\\limits":!0,"\\nolimits":!0},U7=class{static{o(this,"MacroExpander")}constructor(t,r,n){this.settings=r,this.expansionCount=0,this.feed(t),this.macros=new H7(FVe,r.macros),this.mode=n,this.stack=[]}feed(t){this.lexer=new eS(t,this.settings)}switchMode(t){this.mode=t}beginGroup(){this.macros.beginGroup()}endGroup(){this.macros.endGroup()}endGroups(){this.macros.endGroups()}future(){return this.stack.length===0&&this.pushToken(this.lexer.lex()),this.stack[this.stack.length-1]}popToken(){return this.future(),this.stack.pop()}pushToken(t){this.stack.push(t)}pushTokens(t){this.stack.push(...t)}scanArgument(t){var r,n,i;if(t){if(this.consumeSpaces(),this.future().text!=="[")return null;r=this.popToken(),{tokens:i,end:n}=this.consumeArg(["]"])}else({tokens:i,start:r,end:n}=this.consumeArg());return this.pushToken(new Mo("EOF",n.loc)),this.pushTokens(i),new Mo("",Qs.range(r,n))}consumeSpaces(){for(;;){var t=this.future();if(t.text===" ")this.stack.pop();else break}}consumeArg(t){var r=[],n=t&&t.length>0;n||this.consumeSpaces();var i=this.future(),a,s=0,l=0;do{if(a=this.popToken(),r.push(a),a.text==="{")++s;else if(a.text==="}"){if(--s,s===-1)throw new Pt("Extra }",a)}else if(a.text==="EOF")throw new Pt("Unexpected end of input in a macro argument, expected '"+(t&&n?t[l]:"}")+"'",a);if(t&&n)if((s===0||s===1&&t[l]==="{")&&a.text===t[l]){if(++l,l===t.length){r.splice(-l,l);break}}else l=0}while(s!==0||n);return i.text==="{"&&r[r.length-1].text==="}"&&(r.pop(),r.shift()),r.reverse(),{tokens:r,start:i,end:a}}consumeArgs(t,r){if(r){if(r.length!==t+1)throw new Pt("The length of delimiters doesn't match the number of args!");for(var n=r[0],i=0;i<n.length;i++){var a=this.popToken();if(n[i]!==a.text)throw new Pt("Use of the macro doesn't match its definition",a)}}for(var s=[],l=0;l<t;l++)s.push(this.consumeArg(r&&r[l+1]).tokens);return s}countExpansion(t){if(this.expansionCount+=t,this.expansionCount>this.settings.maxExpand)throw new Pt("Too many expansions: infinite loop or need to increase maxExpand setting")}expandOnce(t){var r=this.popToken(),n=r.text,i=r.noexpand?null:this._getExpansion(n);if(i==null||t&&i.unexpandable){if(t&&i==null&&n[0]==="\\"&&!this.isDefined(n))throw new Pt("Undefined control sequence: "+n);return this.pushToken(r),!1}this.countExpansion(1);var a=i.tokens,s=this.consumeArgs(i.numArgs,i.delimiters);if(i.numArgs){a=a.slice();for(var l=a.length-1;l>=0;--l){var u=a[l];if(u.text==="#"){if(l===0)throw new Pt("Incomplete placeholder at end of macro body",u);if(u=a[--l],u.text==="#")a.splice(l+1,1);else if(/^[1-9]$/.test(u.text))a.splice(l,2,...s[+u.text-1]);else throw new Pt("Not a valid argument number",u)}}}return this.pushTokens(a),a.length}expandAfterFuture(){return this.expandOnce(),this.future()}expandNextToken(){for(;;)if(this.expandOnce()===!1){var t=this.stack.pop();return t.treatAsRelax&&(t.text="\\relax"),t}}expandMacro(t){return this.macros.has(t)?this.expandTokens([new Mo(t)]):void 0}expandTokens(t){var r=[],n=this.stack.length;for(this.pushTokens(t);this.stack.length>n;)if(this.expandOnce(!0)===!1){var i=this.stack.pop();i.treatAsRelax&&(i.noexpand=!1,i.treatAsRelax=!1),r.push(i)}return this.countExpansion(r.length),r}expandMacroAsText(t){var r=this.expandMacro(t);return r&&r.map(n=>n.text).join("")}_getExpansion(t){var r=this.macros.get(t);if(r==null)return r;if(t.length===1){var n=this.lexer.catcodes[t];if(n!=null&&n!==13)return}var i=typeof r=="function"?r(this):r;if(typeof i=="string"){var a=0;if(i.includes("#"))for(var s=i.replace(/##/g,"");s.includes("#"+(a+1));)++a;for(var l=new eS(i,this.settings),u=[],h=l.lex();h.text!=="EOF";)u.push(h),h=l.lex();u.reverse();var d={tokens:u,numArgs:a};return d}return i}isDefined(t){return this.macros.has(t)||kd.hasOwnProperty(t)||ui.math.hasOwnProperty(t)||ui.text.hasOwnProperty(t)||WQ.hasOwnProperty(t)}isExpandable(t){var r=this.macros.get(t);return r!=null?typeof r=="string"||typeof r=="function"||!r.unexpandable:kd.hasOwnProperty(t)&&!kd[t].primitive}},jZ=/^[₊₋₌₍₎₀₁₂₃₄₅₆₇₈₉ₐₑₕᵢⱼₖₗₘₙₒₚᵣₛₜᵤᵥₓᵦᵧᵨᵩᵪ]/,Wk=Object.freeze({"\u208A":"+","\u208B":"-","\u208C":"=","\u208D":"(","\u208E":")","\u2080":"0","\u2081":"1","\u2082":"2","\u2083":"3","\u2084":"4","\u2085":"5","\u2086":"6","\u2087":"7","\u2088":"8","\u2089":"9","\u2090":"a","\u2091":"e","\u2095":"h","\u1D62":"i","\u2C7C":"j","\u2096":"k","\u2097":"l","\u2098":"m","\u2099":"n","\u2092":"o","\u209A":"p","\u1D63":"r","\u209B":"s","\u209C":"t","\u1D64":"u","\u1D65":"v","\u2093":"x","\u1D66":"\u03B2","\u1D67":"\u03B3","\u1D68":"\u03C1","\u1D69":"\u03D5","\u1D6A":"\u03C7","\u207A":"+","\u207B":"-","\u207C":"=","\u207D":"(","\u207E":")","\u2070":"0","\xB9":"1","\xB2":"2","\xB3":"3","\u2074":"4","\u2075":"5","\u2076":"6","\u2077":"7","\u2078":"8","\u2079":"9","\u1D2C":"A","\u1D2E":"B","\u1D30":"D","\u1D31":"E","\u1D33":"G","\u1D34":"H","\u1D35":"I","\u1D36":"J","\u1D37":"K","\u1D38":"L","\u1D39":"M","\u1D3A":"N","\u1D3C":"O","\u1D3E":"P","\u1D3F":"R","\u1D40":"T","\u1D41":"U","\u2C7D":"V","\u1D42":"W","\u1D43":"a","\u1D47":"b","\u1D9C":"c","\u1D48":"d","\u1D49":"e","\u1DA0":"f","\u1D4D":"g",\u02B0:"h","\u2071":"i",\u02B2:"j","\u1D4F":"k",\u02E1:"l","\u1D50":"m",\u207F:"n","\u1D52":"o","\u1D56":"p",\u02B3:"r",\u02E2:"s","\u1D57":"t","\u1D58":"u","\u1D5B":"v",\u02B7:"w",\u02E3:"x",\u02B8:"y","\u1DBB":"z","\u1D5D":"\u03B2","\u1D5E":"\u03B3","\u1D5F":"\u03B4","\u1D60":"\u03D5","\u1D61":"\u03C7","\u1DBF":"\u03B8"}),D7={"\u0301":{text:"\\'",math:"\\acute"},"\u0300":{text:"\\`",math:"\\grave"},"\u0308":{text:'\\"',math:"\\ddot"},"\u0303":{text:"\\~",math:"\\tilde"},"\u0304":{text:"\\=",math:"\\bar"},"\u0306":{text:"\\u",math:"\\breve"},"\u030C":{text:"\\v",math:"\\check"},"\u0302":{text:"\\^",math:"\\hat"},"\u0307":{text:"\\.",math:"\\dot"},"\u030A":{text:"\\r",math:"\\mathring"},"\u030B":{text:"\\H"},"\u0327":{text:"\\c"}},XZ={\u00E1:"a\u0301",\u00E0:"a\u0300",\u00E4:"a\u0308",\u01DF:"a\u0308\u0304",\u00E3:"a\u0303",\u0101:"a\u0304",\u0103:"a\u0306",\u1EAF:"a\u0306\u0301",\u1EB1:"a\u0306\u0300",\u1EB5:"a\u0306\u0303",\u01CE:"a\u030C",\u00E2:"a\u0302",\u1EA5:"a\u0302\u0301",\u1EA7:"a\u0302\u0300",\u1EAB:"a\u0302\u0303",\u0227:"a\u0307",\u01E1:"a\u0307\u0304",\u00E5:"a\u030A",\u01FB:"a\u030A\u0301",\u1E03:"b\u0307",\u0107:"c\u0301",\u1E09:"c\u0327\u0301",\u010D:"c\u030C",\u0109:"c\u0302",\u010B:"c\u0307",\u00E7:"c\u0327",\u010F:"d\u030C",\u1E0B:"d\u0307",\u1E11:"d\u0327",\u00E9:"e\u0301",\u00E8:"e\u0300",\u00EB:"e\u0308",\u1EBD:"e\u0303",\u0113:"e\u0304",\u1E17:"e\u0304\u0301",\u1E15:"e\u0304\u0300",\u0115:"e\u0306",\u1E1D:"e\u0327\u0306",\u011B:"e\u030C",\u00EA:"e\u0302",\u1EBF:"e\u0302\u0301",\u1EC1:"e\u0302\u0300",\u1EC5:"e\u0302\u0303",\u0117:"e\u0307",\u0229:"e\u0327",\u1E1F:"f\u0307",\u01F5:"g\u0301",\u1E21:"g\u0304",\u011F:"g\u0306",\u01E7:"g\u030C",\u011D:"g\u0302",\u0121:"g\u0307",\u0123:"g\u0327",\u1E27:"h\u0308",\u021F:"h\u030C",\u0125:"h\u0302",\u1E23:"h\u0307",\u1E29:"h\u0327",\u00ED:"i\u0301",\u00EC:"i\u0300",\u00EF:"i\u0308",\u1E2F:"i\u0308\u0301",\u0129:"i\u0303",\u012B:"i\u0304",\u012D:"i\u0306",\u01D0:"i\u030C",\u00EE:"i\u0302",\u01F0:"j\u030C",\u0135:"j\u0302",\u1E31:"k\u0301",\u01E9:"k\u030C",\u0137:"k\u0327",\u013A:"l\u0301",\u013E:"l\u030C",\u013C:"l\u0327",\u1E3F:"m\u0301",\u1E41:"m\u0307",\u0144:"n\u0301",\u01F9:"n\u0300",\u00F1:"n\u0303",\u0148:"n\u030C",\u1E45:"n\u0307",\u0146:"n\u0327",\u00F3:"o\u0301",\u00F2:"o\u0300",\u00F6:"o\u0308",\u022B:"o\u0308\u0304",\u00F5:"o\u0303",\u1E4D:"o\u0303\u0301",\u1E4F:"o\u0303\u0308",\u022D:"o\u0303\u0304",\u014D:"o\u0304",\u1E53:"o\u0304\u0301",\u1E51:"o\u0304\u0300",\u014F:"o\u0306",\u01D2:"o\u030C",\u00F4:"o\u0302",\u1ED1:"o\u0302\u0301",\u1ED3:"o\u0302\u0300",\u1ED7:"o\u0302\u0303",\u022F:"o\u0307",\u0231:"o\u0307\u0304",\u0151:"o\u030B",\u1E55:"p\u0301",\u1E57:"p\u0307",\u0155:"r\u0301",\u0159:"r\u030C",\u1E59:"r\u0307",\u0157:"r\u0327",\u015B:"s\u0301",\u1E65:"s\u0301\u0307",\u0161:"s\u030C",\u1E67:"s\u030C\u0307",\u015D:"s\u0302",\u1E61:"s\u0307",\u015F:"s\u0327",\u1E97:"t\u0308",\u0165:"t\u030C",\u1E6B:"t\u0307",\u0163:"t\u0327",\u00FA:"u\u0301",\u00F9:"u\u0300",\u00FC:"u\u0308",\u01D8:"u\u0308\u0301",\u01DC:"u\u0308\u0300",\u01D6:"u\u0308\u0304",\u01DA:"u\u0308\u030C",\u0169:"u\u0303",\u1E79:"u\u0303\u0301",\u016B:"u\u0304",\u1E7B:"u\u0304\u0308",\u016D:"u\u0306",\u01D4:"u\u030C",\u00FB:"u\u0302",\u016F:"u\u030A",\u0171:"u\u030B",\u1E7D:"v\u0303",\u1E83:"w\u0301",\u1E81:"w\u0300",\u1E85:"w\u0308",\u0175:"w\u0302",\u1E87:"w\u0307",\u1E98:"w\u030A",\u1E8D:"x\u0308",\u1E8B:"x\u0307",\u00FD:"y\u0301",\u1EF3:"y\u0300",\u00FF:"y\u0308",\u1EF9:"y\u0303",\u0233:"y\u0304",\u0177:"y\u0302",\u1E8F:"y\u0307",\u1E99:"y\u030A",\u017A:"z\u0301",\u017E:"z\u030C",\u1E91:"z\u0302",\u017C:"z\u0307",\u00C1:"A\u0301",\u00C0:"A\u0300",\u00C4:"A\u0308",\u01DE:"A\u0308\u0304",\u00C3:"A\u0303",\u0100:"A\u0304",\u0102:"A\u0306",\u1EAE:"A\u0306\u0301",\u1EB0:"A\u0306\u0300",\u1EB4:"A\u0306\u0303",\u01CD:"A\u030C",\u00C2:"A\u0302",\u1EA4:"A\u0302\u0301",\u1EA6:"A\u0302\u0300",\u1EAA:"A\u0302\u0303",\u0226:"A\u0307",\u01E0:"A\u0307\u0304",\u00C5:"A\u030A",\u01FA:"A\u030A\u0301",\u1E02:"B\u0307",\u0106:"C\u0301",\u1E08:"C\u0327\u0301",\u010C:"C\u030C",\u0108:"C\u0302",\u010A:"C\u0307",\u00C7:"C\u0327",\u010E:"D\u030C",\u1E0A:"D\u0307",\u1E10:"D\u0327",\u00C9:"E\u0301",\u00C8:"E\u0300",\u00CB:"E\u0308",\u1EBC:"E\u0303",\u0112:"E\u0304",\u1E16:"E\u0304\u0301",\u1E14:"E\u0304\u0300",\u0114:"E\u0306",\u1E1C:"E\u0327\u0306",\u011A:"E\u030C",\u00CA:"E\u0302",\u1EBE:"E\u0302\u0301",\u1EC0:"E\u0302\u0300",\u1EC4:"E\u0302\u0303",\u0116:"E\u0307",\u0228:"E\u0327",\u1E1E:"F\u0307",\u01F4:"G\u0301",\u1E20:"G\u0304",\u011E:"G\u0306",\u01E6:"G\u030C",\u011C:"G\u0302",\u0120:"G\u0307",\u0122:"G\u0327",\u1E26:"H\u0308",\u021E:"H\u030C",\u0124:"H\u0302",\u1E22:"H\u0307",\u1E28:"H\u0327",\u00CD:"I\u0301",\u00CC:"I\u0300",\u00CF:"I\u0308",\u1E2E:"I\u0308\u0301",\u0128:"I\u0303",\u012A:"I\u0304",\u012C:"I\u0306",\u01CF:"I\u030C",\u00CE:"I\u0302",\u0130:"I\u0307",\u0134:"J\u0302",\u1E30:"K\u0301",\u01E8:"K\u030C",\u0136:"K\u0327",\u0139:"L\u0301",\u013D:"L\u030C",\u013B:"L\u0327",\u1E3E:"M\u0301",\u1E40:"M\u0307",\u0143:"N\u0301",\u01F8:"N\u0300",\u00D1:"N\u0303",\u0147:"N\u030C",\u1E44:"N\u0307",\u0145:"N\u0327",\u00D3:"O\u0301",\u00D2:"O\u0300",\u00D6:"O\u0308",\u022A:"O\u0308\u0304",\u00D5:"O\u0303",\u1E4C:"O\u0303\u0301",\u1E4E:"O\u0303\u0308",\u022C:"O\u0303\u0304",\u014C:"O\u0304",\u1E52:"O\u0304\u0301",\u1E50:"O\u0304\u0300",\u014E:"O\u0306",\u01D1:"O\u030C",\u00D4:"O\u0302",\u1ED0:"O\u0302\u0301",\u1ED2:"O\u0302\u0300",\u1ED6:"O\u0302\u0303",\u022E:"O\u0307",\u0230:"O\u0307\u0304",\u0150:"O\u030B",\u1E54:"P\u0301",\u1E56:"P\u0307",\u0154:"R\u0301",\u0158:"R\u030C",\u1E58:"R\u0307",\u0156:"R\u0327",\u015A:"S\u0301",\u1E64:"S\u0301\u0307",\u0160:"S\u030C",\u1E66:"S\u030C\u0307",\u015C:"S\u0302",\u1E60:"S\u0307",\u015E:"S\u0327",\u0164:"T\u030C",\u1E6A:"T\u0307",\u0162:"T\u0327",\u00DA:"U\u0301",\u00D9:"U\u0300",\u00DC:"U\u0308",\u01D7:"U\u0308\u0301",\u01DB:"U\u0308\u0300",\u01D5:"U\u0308\u0304",\u01D9:"U\u0308\u030C",\u0168:"U\u0303",\u1E78:"U\u0303\u0301",\u016A:"U\u0304",\u1E7A:"U\u0304\u0308",\u016C:"U\u0306",\u01D3:"U\u030C",\u00DB:"U\u0302",\u016E:"U\u030A",\u0170:"U\u030B",\u1E7C:"V\u0303",\u1E82:"W\u0301",\u1E80:"W\u0300",\u1E84:"W\u0308",\u0174:"W\u0302",\u1E86:"W\u0307",\u1E8C:"X\u0308",\u1E8A:"X\u0307",\u00DD:"Y\u0301",\u1EF2:"Y\u0300",\u0178:"Y\u0308",\u1EF8:"Y\u0303",\u0232:"Y\u0304",\u0176:"Y\u0302",\u1E8E:"Y\u0307",\u0179:"Z\u0301",\u017D:"Z\u030C",\u1E90:"Z\u0302",\u017B:"Z\u0307",\u03AC:"\u03B1\u0301",\u1F70:"\u03B1\u0300",\u1FB1:"\u03B1\u0304",\u1FB0:"\u03B1\u0306",\u03AD:"\u03B5\u0301",\u1F72:"\u03B5\u0300",\u03AE:"\u03B7\u0301",\u1F74:"\u03B7\u0300",\u03AF:"\u03B9\u0301",\u1F76:"\u03B9\u0300",\u03CA:"\u03B9\u0308",\u0390:"\u03B9\u0308\u0301",\u1FD2:"\u03B9\u0308\u0300",\u1FD1:"\u03B9\u0304",\u1FD0:"\u03B9\u0306",\u03CC:"\u03BF\u0301",\u1F78:"\u03BF\u0300",\u03CD:"\u03C5\u0301",\u1F7A:"\u03C5\u0300",\u03CB:"\u03C5\u0308",\u03B0:"\u03C5\u0308\u0301",\u1FE2:"\u03C5\u0308\u0300",\u1FE1:"\u03C5\u0304",\u1FE0:"\u03C5\u0306",\u03CE:"\u03C9\u0301",\u1F7C:"\u03C9\u0300",\u038E:"\u03A5\u0301",\u1FEA:"\u03A5\u0300",\u03AB:"\u03A5\u0308",\u1FE9:"\u03A5\u0304",\u1FE8:"\u03A5\u0306",\u038F:"\u03A9\u0301",\u1FFA:"\u03A9\u0300"},tS=class e{static{o(this,"Parser")}constructor(t,r){this.mode="math",this.gullet=new U7(t,r,this.mode),this.settings=r,this.leftrightDepth=0,this.nextToken=null}expect(t,r){if(r===void 0&&(r=!0),this.fetch().text!==t)throw new Pt("Expected '"+t+"', got '"+this.fetch().text+"'",this.fetch());r&&this.consume()}consume(){this.nextToken=null}fetch(){return this.nextToken==null&&(this.nextToken=this.gullet.expandNextToken()),this.nextToken}switchMode(t){this.mode=t,this.gullet.switchMode(t)}parse(){this.settings.globalGroup||this.gullet.beginGroup(),this.settings.colorIsTextColor&&this.gullet.macros.set("\\color","\\textcolor");try{var t=this.parseExpression(!1);return this.expect("EOF"),this.settings.globalGroup||this.gullet.endGroup(),t}finally{this.gullet.endGroups()}}subparse(t){var r=this.nextToken;this.consume(),this.gullet.pushToken(new Mo("}")),this.gullet.pushTokens(t);var n=this.parseExpression(!1);return this.expect("}"),this.nextToken=r,n}parseExpression(t,r){for(var n=[];;){this.mode==="math"&&this.consumeSpaces();var i=this.fetch();if(e.endOfExpression.has(i.text)||r&&i.text===r||t&&kd[i.text]&&kd[i.text].infix)break;var a=this.parseAtom(r);if(a){if(a.type==="internal")continue}else break;n.push(a)}return this.mode==="text"&&this.formLigatures(n),this.handleInfixNodes(n)}handleInfixNodes(t){for(var r=-1,n,i=0;i<t.length;i++){var a=t[i];if(a.type==="infix"){if(r!==-1)throw new Pt("only one infix operator per group",a.token);r=i,n=a.replaceWith}}if(r!==-1&&n){var s,l,u=t.slice(0,r),h=t.slice(r+1);u.length===1&&u[0].type==="ordgroup"?s=u[0]:s={type:"ordgroup",mode:this.mode,body:u},h.length===1&&h[0].type==="ordgroup"?l=h[0]:l={type:"ordgroup",mode:this.mode,body:h};var d;return n==="\\\\abovefrac"?d=this.callFunction(n,[s,t[r],l],[]):d=this.callFunction(n,[s,l],[]),[d]}else return t}handleSupSubscript(t){var r=this.fetch(),n=r.text;this.consume(),this.consumeSpaces();var i;do{var a;i=this.parseGroup(t)}while(((a=i)==null?void 0:a.type)==="internal");if(!i)throw new Pt("Expected group after '"+n+"'",r);return i}formatUnsupportedCmd(t){for(var r=[],n=0;n<t.length;n++)r.push({type:"textord",mode:"text",text:t[n]});var i={type:"text",mode:this.mode,body:r},a={type:"color",mode:this.mode,color:this.settings.errorColor,body:[i]};return a}parseAtom(t){var r=this.parseGroup("atom",t);if(r?.type==="internal"||this.mode==="text")return r;for(var n,i;;){this.consumeSpaces();var a=this.fetch();if(a.text==="\\limits"||a.text==="\\nolimits"){if(r&&r.type==="op"){var s=a.text==="\\limits";r.limits=s,r.alwaysHandleSupSub=!0}else if(r&&r.type==="operatorname")r.alwaysHandleSupSub&&(r.limits=a.text==="\\limits");else throw new Pt("Limit controls must follow a math operator",a);this.consume()}else if(a.text==="^"){if(n)throw new Pt("Double superscript",a);n=this.handleSupSubscript("superscript")}else if(a.text==="_"){if(i)throw new Pt("Double subscript",a);i=this.handleSupSubscript("subscript")}else if(a.text==="'"){if(n)throw new Pt("Double superscript",a);var l={type:"textord",mode:this.mode,text:"\\prime"},u=[l];for(this.consume();this.fetch().text==="'";)u.push(l),this.consume();this.fetch().text==="^"&&u.push(this.handleSupSubscript("superscript")),n={type:"ordgroup",mode:this.mode,body:u}}else if(Wk[a.text]){var h=jZ.test(a.text),d=[];for(d.push(new Mo(Wk[a.text])),this.consume();;){var f=this.fetch().text;if(!Wk[f]||jZ.test(f)!==h)break;d.unshift(new Mo(Wk[f])),this.consume()}var p=this.subparse(d);h?i={type:"ordgroup",mode:"math",body:p}:n={type:"ordgroup",mode:"math",body:p}}else break}return n||i?{type:"supsub",mode:this.mode,base:r,sup:n,sub:i}:r}parseFunction(t,r){var n=this.fetch(),i=n.text,a=kd[i];if(!a)return null;if(this.consume(),r&&r!=="atom"&&!a.allowedInArgument)throw new Pt("Got function '"+i+"' with no arguments"+(r?" as "+r:""),n);if(this.mode==="text"&&!a.allowedInText)throw new Pt("Can't use function '"+i+"' in text mode",n);if(this.mode==="math"&&a.allowedInMath===!1)throw new Pt("Can't use function '"+i+"' in math mode",n);var{args:s,optArgs:l}=this.parseArguments(i,a);return this.callFunction(i,s,l,n,t)}callFunction(t,r,n,i,a){var s={funcName:t,parser:this,token:i,breakOnTokenText:a},l=kd[t];if(l&&l.handler)return l.handler(s,r,n);throw new Pt("No function handler for "+t)}parseArguments(t,r){var n=r.numArgs+r.numOptionalArgs;if(n===0)return{args:[],optArgs:[]};for(var i=[],a=[],s=0;s<n;s++){var l=r.argTypes&&r.argTypes[s],u=s<r.numOptionalArgs;("primitive"in r&&r.primitive&&l==null||r.type==="sqrt"&&s===1&&a[0]==null)&&(l="primitive");var h=this.parseGroupOfType("argument to '"+t+"'",l,u);if(u)a.push(h);else if(h!=null)i.push(h);else throw new Pt("Null argument, please report this as a bug")}return{args:i,optArgs:a}}parseGroupOfType(t,r,n){switch(r){case"color":return this.parseColorGroup(n);case"size":return this.parseSizeGroup(n);case"url":return this.parseUrlGroup(n);case"math":case"text":return this.parseArgumentGroup(n,r);case"hbox":{var i=this.parseArgumentGroup(n,"text");return i!=null?{type:"styling",mode:i.mode,body:[i],style:"text"}:null}case"raw":{var a=this.parseStringGroup("raw",n);return a!=null?{type:"raw",mode:"text",string:a.text}:null}case"primitive":{if(n)throw new Pt("A primitive argument cannot be optional");var s=this.parseGroup(t);if(s==null)throw new Pt("Expected group as "+t,this.fetch());return s}case"original":case null:case void 0:return this.parseArgumentGroup(n);default:throw new Pt("Unknown group type as "+t,this.fetch())}}consumeSpaces(){for(;this.fetch().text===" ";)this.consume()}parseStringGroup(t,r){var n=this.gullet.scanArgument(r);if(n==null)return null;for(var i="",a;(a=this.fetch()).text!=="EOF";)i+=a.text,this.consume();return this.consume(),n.text=i,n}parseRegexGroup(t,r){for(var n=this.fetch(),i=n,a="",s;(s=this.fetch()).text!=="EOF"&&t.test(a+s.text);)i=s,a+=i.text,this.consume();if(a==="")throw new Pt("Invalid "+r+": '"+n.text+"'",n);return n.range(i,a)}parseColorGroup(t){var r=this.parseStringGroup("color",t);if(r==null)return null;var n=/^(#[a-f0-9]{3,4}|#[a-f0-9]{6}|#[a-f0-9]{8}|[a-f0-9]{6}|[a-z]+)$/i.exec(r.text);if(!n)throw new Pt("Invalid color: '"+r.text+"'",r);var i=n[0];return/^[0-9a-f]{6}$/i.test(i)&&(i="#"+i),{type:"color-token",mode:this.mode,color:i}}parseSizeGroup(t){var r,n=!1;if(this.gullet.consumeSpaces(),!t&&this.gullet.future().text!=="{"?r=this.parseRegexGroup(/^[-+]? *(?:$|\d+|\d+\.\d*|\.\d*) *[a-z]{0,2} *$/,"size"):r=this.parseStringGroup("size",t),!r)return null;!t&&r.text.length===0&&(r.text="0pt",n=!0);var i=/([-+]?) *(\d+(?:\.\d*)?|\.\d+) *([a-z]{2})/.exec(r.text);if(!i)throw new Pt("Invalid size: '"+r.text+"'",r);var a={number:+(i[1]+i[2]),unit:i[3]};if(!ZZ(a))throw new Pt("Invalid unit: '"+a.unit+"'",r);return{type:"size",mode:this.mode,value:a,isBlank:n}}parseUrlGroup(t){this.gullet.lexer.setCatcode("%",13),this.gullet.lexer.setCatcode("~",12);var r=this.parseStringGroup("url",t);if(this.gullet.lexer.setCatcode("%",14),this.gullet.lexer.setCatcode("~",13),r==null)return null;var n=r.text.replace(/\\([#$%&~_^{}])/g,"$1");return{type:"url",mode:this.mode,url:n}}parseArgumentGroup(t,r){var n=this.gullet.scanArgument(t);if(n==null)return null;var i=this.mode;r&&this.switchMode(r),this.gullet.beginGroup();var a=this.parseExpression(!1,"EOF");this.expect("EOF"),this.gullet.endGroup();var s={type:"ordgroup",mode:this.mode,loc:n.loc,body:a};return r&&this.switchMode(i),s}parseGroup(t,r){var n=this.fetch(),i=n.text,a;if(i==="{"||i==="\\begingroup"){this.consume();var s=i==="{"?"}":"\\endgroup";this.gullet.beginGroup();var l=this.parseExpression(!1,s),u=this.fetch();this.expect(s),this.gullet.endGroup(),a={type:"ordgroup",mode:this.mode,loc:Qs.range(n,u),body:l,semisimple:i==="\\begingroup"||void 0}}else if(a=this.parseFunction(r,t)||this.parseSymbol(),a==null&&i[0]==="\\"&&!WQ.hasOwnProperty(i)){if(this.settings.throwOnError)throw new Pt("Undefined control sequence: "+i,n);a=this.formatUnsupportedCmd(i),this.consume()}return a}formLigatures(t){for(var r=t.length-1,n=0;n<r;++n){var i=t[n];if(i.type==="textord"){var a=i.text,s=t[n+1];if(!(!s||s.type!=="textord")){if(a==="-"&&s.text==="-"){var l=t[n+2];n+1<r&&l&&l.type==="textord"&&l.text==="-"?(t.splice(n,3,{type:"textord",mode:"text",loc:Qs.range(i,l),text:"---"}),r-=2):(t.splice(n,2,{type:"textord",mode:"text",loc:Qs.range(i,s),text:"--"}),r-=1)}(a==="'"||a==="`")&&s.text===a&&(t.splice(n,2,{type:"textord",mode:"text",loc:Qs.range(i,s),text:a+a}),r-=1)}}}}parseSymbol(){var t=this.fetch(),r=t.text;if(/^\\verb[^a-zA-Z]/.test(r)){this.consume();var n=r.slice(5),i=n.charAt(0)==="*";if(i&&(n=n.slice(1)),n.length<2||n.charAt(0)!==n.slice(-1))throw new Pt(`\\verb assertion failed --
+                    please report what input caused this bug`);return n=n.slice(1,-1),{type:"verb",mode:"text",body:n,star:i}}XZ.hasOwnProperty(r[0])&&!ui[this.mode][r[0]]&&(this.settings.strict&&this.mode==="math"&&this.settings.reportNonstrict("unicodeTextInMathMode",'Accented Unicode text character "'+r[0]+'" used in math mode',t),r=XZ[r[0]]+r.slice(1));var a=BVe.exec(r);a&&(r=r.substring(0,a.index),r==="i"?r="\u0131":r==="j"&&(r="\u0237"));var s;if(ui[this.mode][r]){this.settings.strict&&this.mode==="math"&&P7.includes(r)&&this.settings.reportNonstrict("unicodeTextInMathMode",'Latin-1/Unicode text character "'+r[0]+'" used in math mode',t);var l=ui[this.mode][r].group,u=Qs.range(t),h;if($Ge.hasOwnProperty(l)){var d=l;h={type:"atom",mode:this.mode,family:d,loc:u,text:r}}else h={type:l,mode:this.mode,loc:u,text:r};s=h}else if(r.charCodeAt(0)>=128)this.settings.strict&&(KZ(r.charCodeAt(0))?this.mode==="math"&&this.settings.reportNonstrict("unicodeTextInMathMode",'Unicode text character "'+r[0]+'" used in math mode',t):this.settings.reportNonstrict("unknownSymbol",'Unrecognized Unicode character "'+r[0]+'"'+(" ("+r.charCodeAt(0)+")"),t)),s={type:"textord",mode:"text",loc:Qs.range(t),text:r};else return null;if(this.consume(),a)for(var f=0;f<a[0].length;f++){var p=a[0][f];if(!D7[p])throw new Pt("Unknown accent ' "+p+"'",t);var m=D7[p][this.mode]||D7[p].text;if(!m)throw new Pt("Accent "+p+" unsupported in "+this.mode+" mode",t);s={type:"accent",mode:this.mode,loc:Qs.range(t),label:m,isStretchy:!1,isShifty:!0,base:s}}return s}};tS.endOfExpression=new Set(["}","\\endgroup","\\end","\\right","&"]);s8=o(function(t,r){if(!(typeof t=="string"||t instanceof String))throw new TypeError("KaTeX can only parse string typed expression");var n=new tS(t,r);delete n.gullet.macros.current["\\df@tag"];var i=n.parse();if(delete n.gullet.macros.current["\\current@color"],delete n.gullet.macros.current["\\color"],n.gullet.macros.get("\\df@tag")){if(!r.displayMode)throw new Pt("\\tag works only in display equations");i=[{type:"tag",mode:"text",body:i,tag:n.subparse([new Mo("\\df@tag")])}]}return i},"parseTree"),o8=o(function(t,r,n){r.textContent="";var i=fS(t,n).toNode();r.appendChild(i)},"render");typeof document<"u"&&document.compatMode!=="CSS1Compat"&&(typeof console<"u"&&console.warn("Warning: KaTeX doesn't work in quirks mode. Make sure your website has a suitable doctype."),o8=o(function(){throw new Pt("KaTeX doesn't work in quirks mode.")},"render"));qQ=o(function(t,r){var n=fS(t,r).toMarkup();return n},"renderToString"),HQ=o(function(t,r){var n=new eb(r);return s8(t,n)},"generateParseTree"),UQ=o(function(t,r,n){if(n.throwOnError||!(t instanceof Pt))throw t;var i=Mt(["katex-error"],[new ws(r)]);return i.setAttribute("title",t.toString()),i.setAttribute("style","color:"+n.errorColor),i},"renderError"),fS=o(function(t,r){var n=new eb(r);try{var i=s8(t,n);return eVe(i,t,n)}catch(a){return UQ(a,t,n)}},"renderToDomTree"),YQ=o(function(t,r){var n=new eb(r);try{var i=s8(t,n);return tVe(i,t,n)}catch(a){return UQ(a,t,n)}},"renderToHTMLTree"),jQ="0.16.45",XQ={Span:Ad,Anchor:X0,SymbolNode:ws,SvgNode:Gl,PathNode:zc,LineNode:rb},GVe={version:jQ,render:o8,renderToString:qQ,ParseError:Pt,SETTINGS_SCHEMA:Uk,__parse:HQ,__renderToDomTree:fS,__renderToHTMLTree:YQ,__setFontMetrics:tQ,__defineSymbol:Y,__defineFunction:Ut,__defineMacro:Ce,__domTree:XQ}});function qVe(){let e="data-temp-href-target";Zs.addHook("beforeSanitizeAttributes",t=>{t.tagName==="A"&&t.hasAttribute("target")&&t.setAttribute(e,t.getAttribute("target")??"")}),Zs.addHook("afterSanitizeAttributes",t=>{t.tagName==="A"&&t.hasAttribute(e)&&(t.setAttribute("target",t.getAttribute(e)??""),t.removeAttribute(e),t.getAttribute("target")==="_blank"&&t.setAttribute("rel","noopener"))})}var Vp,VVe,WVe,eJ,QQ,mr,HVe,UVe,YVe,jVe,tJ,Wp,XVe,KVe,qc,l8,ZVe,QVe,JQ,pS,ni,qp,JVe,ey,xt,Vr=F(()=>{"use strict";H0();ur();Vp=/<br\s*\/?>/gi,VVe=o(e=>e?tJ(e).replace(/\\n/g,"#br#").split("#br#"):[""],"getRows"),WVe=(()=>{let e=!1;return()=>{e||(qVe(),e=!0)}})();o(qVe,"setupDompurifyHooks");eJ=o(e=>(WVe(),Zs.sanitize(e)),"removeScript"),QQ=o((e,t)=>{if(Gr(t)){let r=t.securityLevel;r==="antiscript"||r==="strict"||r==="sandbox"?e=eJ(e):r!=="loose"&&(e=tJ(e),e=e.replace(/</g,"&lt;").replace(/>/g,"&gt;"),e=e.replace(/=/g,"&equals;"),e=jVe(e))}return e},"sanitizeMore"),mr=o((e,t)=>e&&(t.dompurifyConfig?e=Zs.sanitize(QQ(e,t),t.dompurifyConfig).toString():e=Zs.sanitize(QQ(e,t),{FORBID_TAGS:["style"]}).toString(),e),"sanitizeText"),HVe=o((e,t)=>typeof e=="string"?mr(e,t):e.flat().map(r=>mr(r,t)),"sanitizeTextOrArray"),UVe=o(e=>Vp.test(e),"hasBreaks"),YVe=o(e=>e.split(Vp),"splitBreaks"),jVe=o(e=>e.replace(/#br#/g,"<br/>"),"placeholderToBreak"),tJ=o(e=>e.replace(Vp,"#br#"),"breakToPlaceholder"),Wp=o(e=>{let t="";return e&&(t=window.location.protocol+"//"+window.location.host+window.location.pathname+window.location.search,t=CSS.escape(t)),t},"getUrl"),XVe=o(function(...e){let t=e.filter(r=>!isNaN(r));return Math.max(...t)},"getMax"),KVe=o(function(...e){let t=e.filter(r=>!isNaN(r));return Math.min(...t)},"getMin"),qc=o(function(e){let t=e.split(/(,)/),r=[];for(let n=0;n<t.length;n++){let i=t[n];if(i===","&&n>0&&n+1<t.length){let a=t[n-1],s=t[n+1];ZVe(a,s)&&(i=a+","+s,n++,r.pop())}r.push(QVe(i))}return r.join("")},"parseGenericTypes"),l8=o((e,t)=>Math.max(0,e.split(t).length-1),"countOccurrence"),ZVe=o((e,t)=>{let r=l8(e,"~"),n=l8(t,"~");return r===1&&n===1},"shouldCombineSets"),QVe=o(e=>{let t=l8(e,"~"),r=!1;if(t<=1)return e;t%2!==0&&e.startsWith("~")&&(e=e.substring(1),r=!0);let n=[...e],i=n.indexOf("~"),a=n.lastIndexOf("~");for(;i!==-1&&a!==-1&&i!==a;)n[i]="<",n[a]=">",i=n.indexOf("~"),a=n.lastIndexOf("~");return r&&n.unshift("~"),n.join("")},"processSet"),JQ=o(()=>window.MathMLElement!==void 0,"isMathMLSupported"),pS=/\$\$(.*?)\$\$/g,ni=o(e=>(e.match(pS)?.length??0)>0,"hasKatex"),qp=o(async(e,t)=>{let r=document.createElement("div");r.innerHTML=await ey(e,t),r.id="katex-temp",r.style.visibility="hidden",r.style.position="absolute",r.style.top="0",document.querySelector("body")?.insertAdjacentElement("beforeend",r);let i={width:r.clientWidth,height:r.clientHeight};return r.remove(),i},"calculateMathMLDimensions"),JVe=o(async(e,t)=>{if(!ni(e))return e;if(!(JQ()||t.legacyMathML||t.forceLegacyMathML))return e.replace(pS,"MathML is unsupported in this environment.");{let{default:r}=await Promise.resolve().then(()=>(ZQ(),KQ)),n=t.forceLegacyMathML||!JQ()&&t.legacyMathML?"htmlAndMathml":"mathml";return e.split(Vp).map(i=>ni(i)?`<div style="display: flex; align-items: center; justify-content: center; white-space: nowrap;">${i}</div>`:`<div>${i}</div>`).join("").replace(pS,(i,a)=>r.renderToString(a,{throwOnError:!0,displayMode:!0,output:n}).replace(/\n/g," ").replace(/<annotation.*<\/annotation>/g,""))}return e.replace(pS,"Katex is not supported in @mermaid-js/tiny. Please use the full mermaid library.")},"renderKatexUnsanitized"),ey=o(async(e,t)=>mr(await JVe(e,t),t),"renderKatexSanitized"),xt={getRows:VVe,sanitizeText:mr,sanitizeTextOrArray:HVe,hasBreaks:UVe,splitBreaks:YVe,lineBreakRegex:Vp,removeScript:eJ,getUrl:Wp,evaluate:ya,getMax:XVe,getMin:KVe}});var u8,c8,rJ,ty,nJ,iJ,ts,Vl=F(()=>{"use strict";tK();ur();Vr();vt();u8={body:'<g><rect width="80" height="80" style="fill: #087ebf; stroke-width: 0px;"/><text transform="translate(21.16 64.67)" style="fill: #fff; font-family: ArialMT, Arial; font-size: 67.75px;"><tspan x="0" y="0">?</tspan></text></g>',height:80,width:80},c8=new Map,rJ=new Map,ty=o(e=>{for(let t of e){if(!t.name)throw new Error('Invalid icon loader. Must have a "name" property with non-empty string value.');if(Z.debug("Registering icon pack:",t.name),"loader"in t)rJ.set(t.name,t.loader);else if("icons"in t)c8.set(t.name,t.icons);else throw Z.error("Invalid icon loader:",t),new Error('Invalid icon loader. Must have either "icons" or "loader" property.')}},"registerIconPacks"),nJ=o(async(e,t)=>{let r=MD(e,!0,t!==void 0);if(!r)throw new Error(`Invalid icon name: ${e}`);let n=r.prefix||t;if(!n)throw new Error(`Icon name must contain a prefix: ${e}`);let i=c8.get(n);if(!i){let s=rJ.get(n);if(!s)throw new Error(`Icon set not found: ${r.prefix}`);try{i={...await s(),prefix:n},c8.set(n,i)}catch(l){throw Z.error(l),new Error(`Failed to load icon set: ${r.prefix}`)}}let a=PD(i,r.name);if(!a)throw new Error(`Icon not found: ${e}`);return a},"getRegisteredIconData"),iJ=o(async e=>{try{return await nJ(e),!0}catch{return!1}},"isIconAvailable"),ts=o(async(e,t,r)=>{let n;try{n=await nJ(e,t?.fallbackPrefix)}catch(s){Z.error(s),n=u8}let i=BD(n,t),a=FD($D(i.body),{...i.attributes,...r});return mr(a,_t())},"getIconSVG")});function mS(e){for(var t=[],r=1;r<arguments.length;r++)t[r-1]=arguments[r];var n=Array.from(typeof e=="string"?[e]:e);n[n.length-1]=n[n.length-1].replace(/\r?\n([\t ]*)$/,"");var i=n.reduce(function(l,u){var h=u.match(/\n([\t ]+|(?!\s).)/g);return h?l.concat(h.map(function(d){var f,p;return(p=(f=d.match(/[\t ]/g))===null||f===void 0?void 0:f.length)!==null&&p!==void 0?p:0})):l},[]);if(i.length){var a=new RegExp(`
+[	 ]{`+Math.min.apply(Math,i)+"}","g");n=n.map(function(l){return l.replace(a,`
+`)})}n[0]=n[0].replace(/^\r?\n/,"");var s=n[0];return t.forEach(function(l,u){var h=s.match(/(?:^|\n)( *)$/),d=h?h[1]:"",f=l;typeof l=="string"&&l.includes(`
 `)&&(f=String(l).split(`
 `).map(function(p,m){return m===0?p:""+d+p}).join(`
-`)),s+=f+i[u+1]}),s}var RD=z(()=>{"use strict";o(fk,"dedent")});var pk,jf,Qj,mk=z(()=>{"use strict";pk=/^-{3}\s*[\n\r](.*?)[\n\r]-{3}\s*[\n\r]+/s,jf=/%{2}{\s*(?:(\w+)\s*:|(\w+))\s*(?:(\w+)|((?:(?!}%{2}).|\r?\n)*))?\s*(?:}%{2})?/gi,Qj=/\s*%%.*\n/gm});var $m,LD=z(()=>{"use strict";$m=class extends Error{static{o(this,"UnknownDiagramError")}constructor(t){super(t),this.name="UnknownDiagramError"}}});var ku,zm,Cv,MD,Jj,Xf=z(()=>{"use strict";St();mk();LD();ku={},zm=o(function(e,t){e=e.replace(pk,"").replace(jf,"").replace(Qj,`
-`);for(let[r,{detector:i}]of Object.entries(ku))if(i(e,t))return r;throw new $m(`No diagram type detected matching given configuration for text: ${e}`)},"detectType"),Cv=o((...e)=>{for(let{id:t,detector:r,loader:i}of e)MD(t,r,i)},"registerLazyLoadedDiagrams"),MD=o((e,t,r)=>{ku[e]&&Z.warn(`Detector with key ${e} already exists. Overwriting.`),ku[e]={detector:t,loader:r},Z.debug(`Detector with key ${e} added${r?" with loader":""}`)},"addDetector"),Jj=o(e=>ku[e].loader,"getDiagramLoader")});var kv,eX,ND=z(()=>{"use strict";kv=(function(){var e=o(function(ke,Fe,He,at){for(He=He||{},at=ke.length;at--;He[ke[at]]=Fe);return He},"o"),t=[1,24],r=[1,25],i=[1,26],n=[1,27],a=[1,28],s=[1,63],l=[1,64],u=[1,65],h=[1,66],d=[1,67],f=[1,68],p=[1,69],m=[1,29],g=[1,30],y=[1,31],v=[1,32],x=[1,33],b=[1,34],T=[1,35],w=[1,36],C=[1,37],k=[1,38],E=[1,39],A=[1,40],N=[1,41],P=[1,42],I=[1,43],D=[1,44],_=[1,45],R=[1,46],M=[1,47],L=[1,48],B=[1,50],O=[1,51],$=[1,52],G=[1,53],F=[1,54],V=[1,55],H=[1,56],j=[1,57],U=[1,58],Q=[1,59],Y=[1,60],ae=[14,42],J=[14,34,36,37,38,39,40,41,42,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74],te=[12,14,34,36,37,38,39,40,41,42,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74],re=[1,82],ee=[1,83],Te=[1,84],ue=[1,85],De=[12,14,42],Ie=[12,14,33,42],Ee=[12,14,33,42,76,77,79,80],we=[12,33],Me=[34,36,37,38,39,40,41,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74],$e={trace:o(function(){},"trace"),yy:{},symbols_:{error:2,start:3,mermaidDoc:4,direction:5,direction_tb:6,direction_bt:7,direction_rl:8,direction_lr:9,graphConfig:10,C4_CONTEXT:11,NEWLINE:12,statements:13,EOF:14,C4_CONTAINER:15,C4_COMPONENT:16,C4_DYNAMIC:17,C4_DEPLOYMENT:18,otherStatements:19,diagramStatements:20,otherStatement:21,title:22,accDescription:23,acc_title:24,acc_title_value:25,acc_descr:26,acc_descr_value:27,acc_descr_multiline_value:28,boundaryStatement:29,boundaryStartStatement:30,boundaryStopStatement:31,boundaryStart:32,LBRACE:33,ENTERPRISE_BOUNDARY:34,attributes:35,SYSTEM_BOUNDARY:36,BOUNDARY:37,CONTAINER_BOUNDARY:38,NODE:39,NODE_L:40,NODE_R:41,RBRACE:42,diagramStatement:43,PERSON:44,PERSON_EXT:45,SYSTEM:46,SYSTEM_DB:47,SYSTEM_QUEUE:48,SYSTEM_EXT:49,SYSTEM_EXT_DB:50,SYSTEM_EXT_QUEUE:51,CONTAINER:52,CONTAINER_DB:53,CONTAINER_QUEUE:54,CONTAINER_EXT:55,CONTAINER_EXT_DB:56,CONTAINER_EXT_QUEUE:57,COMPONENT:58,COMPONENT_DB:59,COMPONENT_QUEUE:60,COMPONENT_EXT:61,COMPONENT_EXT_DB:62,COMPONENT_EXT_QUEUE:63,REL:64,BIREL:65,REL_U:66,REL_D:67,REL_L:68,REL_R:69,REL_B:70,REL_INDEX:71,UPDATE_EL_STYLE:72,UPDATE_REL_STYLE:73,UPDATE_LAYOUT_CONFIG:74,attribute:75,STR:76,STR_KEY:77,STR_VALUE:78,ATTRIBUTE:79,ATTRIBUTE_EMPTY:80,$accept:0,$end:1},terminals_:{2:"error",6:"direction_tb",7:"direction_bt",8:"direction_rl",9:"direction_lr",11:"C4_CONTEXT",12:"NEWLINE",14:"EOF",15:"C4_CONTAINER",16:"C4_COMPONENT",17:"C4_DYNAMIC",18:"C4_DEPLOYMENT",22:"title",23:"accDescription",24:"acc_title",25:"acc_title_value",26:"acc_descr",27:"acc_descr_value",28:"acc_descr_multiline_value",33:"LBRACE",34:"ENTERPRISE_BOUNDARY",36:"SYSTEM_BOUNDARY",37:"BOUNDARY",38:"CONTAINER_BOUNDARY",39:"NODE",40:"NODE_L",41:"NODE_R",42:"RBRACE",44:"PERSON",45:"PERSON_EXT",46:"SYSTEM",47:"SYSTEM_DB",48:"SYSTEM_QUEUE",49:"SYSTEM_EXT",50:"SYSTEM_EXT_DB",51:"SYSTEM_EXT_QUEUE",52:"CONTAINER",53:"CONTAINER_DB",54:"CONTAINER_QUEUE",55:"CONTAINER_EXT",56:"CONTAINER_EXT_DB",57:"CONTAINER_EXT_QUEUE",58:"COMPONENT",59:"COMPONENT_DB",60:"COMPONENT_QUEUE",61:"COMPONENT_EXT",62:"COMPONENT_EXT_DB",63:"COMPONENT_EXT_QUEUE",64:"REL",65:"BIREL",66:"REL_U",67:"REL_D",68:"REL_L",69:"REL_R",70:"REL_B",71:"REL_INDEX",72:"UPDATE_EL_STYLE",73:"UPDATE_REL_STYLE",74:"UPDATE_LAYOUT_CONFIG",76:"STR",77:"STR_KEY",78:"STR_VALUE",79:"ATTRIBUTE",80:"ATTRIBUTE_EMPTY"},productions_:[0,[3,1],[3,1],[5,1],[5,1],[5,1],[5,1],[4,1],[10,4],[10,4],[10,4],[10,4],[10,4],[13,1],[13,1],[13,2],[19,1],[19,2],[19,3],[21,1],[21,1],[21,2],[21,2],[21,1],[29,3],[30,3],[30,3],[30,4],[32,2],[32,2],[32,2],[32,2],[32,2],[32,2],[32,2],[31,1],[20,1],[20,2],[20,3],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,1],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[35,1],[35,2],[75,1],[75,2],[75,1],[75,1]],performAction:o(function(Fe,He,at,qe,Ue,ye,ve){var ie=ye.length-1;switch(Ue){case 3:qe.setDirection("TB");break;case 4:qe.setDirection("BT");break;case 5:qe.setDirection("RL");break;case 6:qe.setDirection("LR");break;case 8:case 9:case 10:case 11:case 12:qe.setC4Type(ye[ie-3]);break;case 19:qe.setTitle(ye[ie].substring(6)),this.$=ye[ie].substring(6);break;case 20:qe.setAccDescription(ye[ie].substring(15)),this.$=ye[ie].substring(15);break;case 21:this.$=ye[ie].trim(),qe.setTitle(this.$);break;case 22:case 23:this.$=ye[ie].trim(),qe.setAccDescription(this.$);break;case 28:ye[ie].splice(2,0,"ENTERPRISE"),qe.addPersonOrSystemBoundary(...ye[ie]),this.$=ye[ie];break;case 29:ye[ie].splice(2,0,"SYSTEM"),qe.addPersonOrSystemBoundary(...ye[ie]),this.$=ye[ie];break;case 30:qe.addPersonOrSystemBoundary(...ye[ie]),this.$=ye[ie];break;case 31:ye[ie].splice(2,0,"CONTAINER"),qe.addContainerBoundary(...ye[ie]),this.$=ye[ie];break;case 32:qe.addDeploymentNode("node",...ye[ie]),this.$=ye[ie];break;case 33:qe.addDeploymentNode("nodeL",...ye[ie]),this.$=ye[ie];break;case 34:qe.addDeploymentNode("nodeR",...ye[ie]),this.$=ye[ie];break;case 35:qe.popBoundaryParseStack();break;case 39:qe.addPersonOrSystem("person",...ye[ie]),this.$=ye[ie];break;case 40:qe.addPersonOrSystem("external_person",...ye[ie]),this.$=ye[ie];break;case 41:qe.addPersonOrSystem("system",...ye[ie]),this.$=ye[ie];break;case 42:qe.addPersonOrSystem("system_db",...ye[ie]),this.$=ye[ie];break;case 43:qe.addPersonOrSystem("system_queue",...ye[ie]),this.$=ye[ie];break;case 44:qe.addPersonOrSystem("external_system",...ye[ie]),this.$=ye[ie];break;case 45:qe.addPersonOrSystem("external_system_db",...ye[ie]),this.$=ye[ie];break;case 46:qe.addPersonOrSystem("external_system_queue",...ye[ie]),this.$=ye[ie];break;case 47:qe.addContainer("container",...ye[ie]),this.$=ye[ie];break;case 48:qe.addContainer("container_db",...ye[ie]),this.$=ye[ie];break;case 49:qe.addContainer("container_queue",...ye[ie]),this.$=ye[ie];break;case 50:qe.addContainer("external_container",...ye[ie]),this.$=ye[ie];break;case 51:qe.addContainer("external_container_db",...ye[ie]),this.$=ye[ie];break;case 52:qe.addContainer("external_container_queue",...ye[ie]),this.$=ye[ie];break;case 53:qe.addComponent("component",...ye[ie]),this.$=ye[ie];break;case 54:qe.addComponent("component_db",...ye[ie]),this.$=ye[ie];break;case 55:qe.addComponent("component_queue",...ye[ie]),this.$=ye[ie];break;case 56:qe.addComponent("external_component",...ye[ie]),this.$=ye[ie];break;case 57:qe.addComponent("external_component_db",...ye[ie]),this.$=ye[ie];break;case 58:qe.addComponent("external_component_queue",...ye[ie]),this.$=ye[ie];break;case 60:qe.addRel("rel",...ye[ie]),this.$=ye[ie];break;case 61:qe.addRel("birel",...ye[ie]),this.$=ye[ie];break;case 62:qe.addRel("rel_u",...ye[ie]),this.$=ye[ie];break;case 63:qe.addRel("rel_d",...ye[ie]),this.$=ye[ie];break;case 64:qe.addRel("rel_l",...ye[ie]),this.$=ye[ie];break;case 65:qe.addRel("rel_r",...ye[ie]),this.$=ye[ie];break;case 66:qe.addRel("rel_b",...ye[ie]),this.$=ye[ie];break;case 67:ye[ie].splice(0,1),qe.addRel("rel",...ye[ie]),this.$=ye[ie];break;case 68:qe.updateElStyle("update_el_style",...ye[ie]),this.$=ye[ie];break;case 69:qe.updateRelStyle("update_rel_style",...ye[ie]),this.$=ye[ie];break;case 70:qe.updateLayoutConfig("update_layout_config",...ye[ie]),this.$=ye[ie];break;case 71:this.$=[ye[ie]];break;case 72:ye[ie].unshift(ye[ie-1]),this.$=ye[ie];break;case 73:case 75:this.$=ye[ie].trim();break;case 74:let fe={};fe[ye[ie-1].trim()]=ye[ie].trim(),this.$=fe;break;case 76:this.$="";break}},"anonymous"),table:[{3:1,4:2,5:3,6:[1,5],7:[1,6],8:[1,7],9:[1,8],10:4,11:[1,9],15:[1,10],16:[1,11],17:[1,12],18:[1,13]},{1:[3]},{1:[2,1]},{1:[2,2]},{1:[2,7]},{1:[2,3]},{1:[2,4]},{1:[2,5]},{1:[2,6]},{12:[1,14]},{12:[1,15]},{12:[1,16]},{12:[1,17]},{12:[1,18]},{13:19,19:20,20:21,21:22,22:t,23:r,24:i,26:n,28:a,29:49,30:61,32:62,34:s,36:l,37:u,38:h,39:d,40:f,41:p,43:23,44:m,45:g,46:y,47:v,48:x,49:b,50:T,51:w,52:C,53:k,54:E,55:A,56:N,57:P,58:I,59:D,60:_,61:R,62:M,63:L,64:B,65:O,66:$,67:G,68:F,69:V,70:H,71:j,72:U,73:Q,74:Y},{13:70,19:20,20:21,21:22,22:t,23:r,24:i,26:n,28:a,29:49,30:61,32:62,34:s,36:l,37:u,38:h,39:d,40:f,41:p,43:23,44:m,45:g,46:y,47:v,48:x,49:b,50:T,51:w,52:C,53:k,54:E,55:A,56:N,57:P,58:I,59:D,60:_,61:R,62:M,63:L,64:B,65:O,66:$,67:G,68:F,69:V,70:H,71:j,72:U,73:Q,74:Y},{13:71,19:20,20:21,21:22,22:t,23:r,24:i,26:n,28:a,29:49,30:61,32:62,34:s,36:l,37:u,38:h,39:d,40:f,41:p,43:23,44:m,45:g,46:y,47:v,48:x,49:b,50:T,51:w,52:C,53:k,54:E,55:A,56:N,57:P,58:I,59:D,60:_,61:R,62:M,63:L,64:B,65:O,66:$,67:G,68:F,69:V,70:H,71:j,72:U,73:Q,74:Y},{13:72,19:20,20:21,21:22,22:t,23:r,24:i,26:n,28:a,29:49,30:61,32:62,34:s,36:l,37:u,38:h,39:d,40:f,41:p,43:23,44:m,45:g,46:y,47:v,48:x,49:b,50:T,51:w,52:C,53:k,54:E,55:A,56:N,57:P,58:I,59:D,60:_,61:R,62:M,63:L,64:B,65:O,66:$,67:G,68:F,69:V,70:H,71:j,72:U,73:Q,74:Y},{13:73,19:20,20:21,21:22,22:t,23:r,24:i,26:n,28:a,29:49,30:61,32:62,34:s,36:l,37:u,38:h,39:d,40:f,41:p,43:23,44:m,45:g,46:y,47:v,48:x,49:b,50:T,51:w,52:C,53:k,54:E,55:A,56:N,57:P,58:I,59:D,60:_,61:R,62:M,63:L,64:B,65:O,66:$,67:G,68:F,69:V,70:H,71:j,72:U,73:Q,74:Y},{14:[1,74]},e(ae,[2,13],{43:23,29:49,30:61,32:62,20:75,34:s,36:l,37:u,38:h,39:d,40:f,41:p,44:m,45:g,46:y,47:v,48:x,49:b,50:T,51:w,52:C,53:k,54:E,55:A,56:N,57:P,58:I,59:D,60:_,61:R,62:M,63:L,64:B,65:O,66:$,67:G,68:F,69:V,70:H,71:j,72:U,73:Q,74:Y}),e(ae,[2,14]),e(J,[2,16],{12:[1,76]}),e(ae,[2,36],{12:[1,77]}),e(te,[2,19]),e(te,[2,20]),{25:[1,78]},{27:[1,79]},e(te,[2,23]),{35:80,75:81,76:re,77:ee,79:Te,80:ue},{35:86,75:81,76:re,77:ee,79:Te,80:ue},{35:87,75:81,76:re,77:ee,79:Te,80:ue},{35:88,75:81,76:re,77:ee,79:Te,80:ue},{35:89,75:81,76:re,77:ee,79:Te,80:ue},{35:90,75:81,76:re,77:ee,79:Te,80:ue},{35:91,75:81,76:re,77:ee,79:Te,80:ue},{35:92,75:81,76:re,77:ee,79:Te,80:ue},{35:93,75:81,76:re,77:ee,79:Te,80:ue},{35:94,75:81,76:re,77:ee,79:Te,80:ue},{35:95,75:81,76:re,77:ee,79:Te,80:ue},{35:96,75:81,76:re,77:ee,79:Te,80:ue},{35:97,75:81,76:re,77:ee,79:Te,80:ue},{35:98,75:81,76:re,77:ee,79:Te,80:ue},{35:99,75:81,76:re,77:ee,79:Te,80:ue},{35:100,75:81,76:re,77:ee,79:Te,80:ue},{35:101,75:81,76:re,77:ee,79:Te,80:ue},{35:102,75:81,76:re,77:ee,79:Te,80:ue},{35:103,75:81,76:re,77:ee,79:Te,80:ue},{35:104,75:81,76:re,77:ee,79:Te,80:ue},e(De,[2,59]),{35:105,75:81,76:re,77:ee,79:Te,80:ue},{35:106,75:81,76:re,77:ee,79:Te,80:ue},{35:107,75:81,76:re,77:ee,79:Te,80:ue},{35:108,75:81,76:re,77:ee,79:Te,80:ue},{35:109,75:81,76:re,77:ee,79:Te,80:ue},{35:110,75:81,76:re,77:ee,79:Te,80:ue},{35:111,75:81,76:re,77:ee,79:Te,80:ue},{35:112,75:81,76:re,77:ee,79:Te,80:ue},{35:113,75:81,76:re,77:ee,79:Te,80:ue},{35:114,75:81,76:re,77:ee,79:Te,80:ue},{35:115,75:81,76:re,77:ee,79:Te,80:ue},{20:116,29:49,30:61,32:62,34:s,36:l,37:u,38:h,39:d,40:f,41:p,43:23,44:m,45:g,46:y,47:v,48:x,49:b,50:T,51:w,52:C,53:k,54:E,55:A,56:N,57:P,58:I,59:D,60:_,61:R,62:M,63:L,64:B,65:O,66:$,67:G,68:F,69:V,70:H,71:j,72:U,73:Q,74:Y},{12:[1,118],33:[1,117]},{35:119,75:81,76:re,77:ee,79:Te,80:ue},{35:120,75:81,76:re,77:ee,79:Te,80:ue},{35:121,75:81,76:re,77:ee,79:Te,80:ue},{35:122,75:81,76:re,77:ee,79:Te,80:ue},{35:123,75:81,76:re,77:ee,79:Te,80:ue},{35:124,75:81,76:re,77:ee,79:Te,80:ue},{35:125,75:81,76:re,77:ee,79:Te,80:ue},{14:[1,126]},{14:[1,127]},{14:[1,128]},{14:[1,129]},{1:[2,8]},e(ae,[2,15]),e(J,[2,17],{21:22,19:130,22:t,23:r,24:i,26:n,28:a}),e(ae,[2,37],{19:20,20:21,21:22,43:23,29:49,30:61,32:62,13:131,22:t,23:r,24:i,26:n,28:a,34:s,36:l,37:u,38:h,39:d,40:f,41:p,44:m,45:g,46:y,47:v,48:x,49:b,50:T,51:w,52:C,53:k,54:E,55:A,56:N,57:P,58:I,59:D,60:_,61:R,62:M,63:L,64:B,65:O,66:$,67:G,68:F,69:V,70:H,71:j,72:U,73:Q,74:Y}),e(te,[2,21]),e(te,[2,22]),e(De,[2,39]),e(Ie,[2,71],{75:81,35:132,76:re,77:ee,79:Te,80:ue}),e(Ee,[2,73]),{78:[1,133]},e(Ee,[2,75]),e(Ee,[2,76]),e(De,[2,40]),e(De,[2,41]),e(De,[2,42]),e(De,[2,43]),e(De,[2,44]),e(De,[2,45]),e(De,[2,46]),e(De,[2,47]),e(De,[2,48]),e(De,[2,49]),e(De,[2,50]),e(De,[2,51]),e(De,[2,52]),e(De,[2,53]),e(De,[2,54]),e(De,[2,55]),e(De,[2,56]),e(De,[2,57]),e(De,[2,58]),e(De,[2,60]),e(De,[2,61]),e(De,[2,62]),e(De,[2,63]),e(De,[2,64]),e(De,[2,65]),e(De,[2,66]),e(De,[2,67]),e(De,[2,68]),e(De,[2,69]),e(De,[2,70]),{31:134,42:[1,135]},{12:[1,136]},{33:[1,137]},e(we,[2,28]),e(we,[2,29]),e(we,[2,30]),e(we,[2,31]),e(we,[2,32]),e(we,[2,33]),e(we,[2,34]),{1:[2,9]},{1:[2,10]},{1:[2,11]},{1:[2,12]},e(J,[2,18]),e(ae,[2,38]),e(Ie,[2,72]),e(Ee,[2,74]),e(De,[2,24]),e(De,[2,35]),e(Me,[2,25]),e(Me,[2,26],{12:[1,138]}),e(Me,[2,27])],defaultActions:{2:[2,1],3:[2,2],4:[2,7],5:[2,3],6:[2,4],7:[2,5],8:[2,6],74:[2,8],126:[2,9],127:[2,10],128:[2,11],129:[2,12]},parseError:o(function(Fe,He){if(He.recoverable)this.trace(Fe);else{var at=new Error(Fe);throw at.hash=He,at}},"parseError"),parse:o(function(Fe){var He=this,at=[0],qe=[],Ue=[null],ye=[],ve=this.table,ie="",fe=0,W=0,ce=0,K=2,Re=1,xe=ye.slice.call(arguments,1),Oe=Object.create(this.lexer),be={yy:{}};for(var Be in this.yy)Object.prototype.hasOwnProperty.call(this.yy,Be)&&(be.yy[Be]=this.yy[Be]);Oe.setInput(Fe,be.yy),be.yy.lexer=Oe,be.yy.parser=this,typeof Oe.yylloc>"u"&&(Oe.yylloc={});var Ae=Oe.yylloc;ye.push(Ae);var Ve=Oe.options&&Oe.options.ranges;typeof be.yy.parseError=="function"?this.parseError=be.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function Pe(et){at.length=at.length-2*et,Ue.length=Ue.length-et,ye.length=ye.length-et}o(Pe,"popStack");function Ye(){var et;return et=qe.pop()||Oe.lex()||Re,typeof et!="number"&&(et instanceof Array&&(qe=et,et=qe.pop()),et=He.symbols_[et]||et),et}o(Ye,"lex");for(var le,st,me,ot,kt,Gt,Tt={},Et,yt,oe,ht;;){if(me=at[at.length-1],this.defaultActions[me]?ot=this.defaultActions[me]:((le===null||typeof le>"u")&&(le=Ye()),ot=ve[me]&&ve[me][le]),typeof ot>"u"||!ot.length||!ot[0]){var gt="";ht=[];for(Et in ve[me])this.terminals_[Et]&&Et>K&&ht.push("'"+this.terminals_[Et]+"'");Oe.showPosition?gt="Parse error on line "+(fe+1)+`:
-`+Oe.showPosition()+`
-Expecting `+ht.join(", ")+", got '"+(this.terminals_[le]||le)+"'":gt="Parse error on line "+(fe+1)+": Unexpected "+(le==Re?"end of input":"'"+(this.terminals_[le]||le)+"'"),this.parseError(gt,{text:Oe.match,token:this.terminals_[le]||le,line:Oe.yylineno,loc:Ae,expected:ht})}if(ot[0]instanceof Array&&ot.length>1)throw new Error("Parse Error: multiple actions possible at state: "+me+", token: "+le);switch(ot[0]){case 1:at.push(le),Ue.push(Oe.yytext),ye.push(Oe.yylloc),at.push(ot[1]),le=null,st?(le=st,st=null):(W=Oe.yyleng,ie=Oe.yytext,fe=Oe.yylineno,Ae=Oe.yylloc,ce>0&&ce--);break;case 2:if(yt=this.productions_[ot[1]][1],Tt.$=Ue[Ue.length-yt],Tt._$={first_line:ye[ye.length-(yt||1)].first_line,last_line:ye[ye.length-1].last_line,first_column:ye[ye.length-(yt||1)].first_column,last_column:ye[ye.length-1].last_column},Ve&&(Tt._$.range=[ye[ye.length-(yt||1)].range[0],ye[ye.length-1].range[1]]),Gt=this.performAction.apply(Tt,[ie,W,fe,be.yy,ot[1],Ue,ye].concat(xe)),typeof Gt<"u")return Gt;yt&&(at=at.slice(0,-1*yt*2),Ue=Ue.slice(0,-1*yt),ye=ye.slice(0,-1*yt)),at.push(this.productions_[ot[1]][0]),Ue.push(Tt.$),ye.push(Tt._$),oe=ve[at[at.length-2]][at[at.length-1]],at.push(oe);break;case 3:return!0}}return!0},"parse")},de=(function(){var ke={EOF:1,parseError:o(function(He,at){if(this.yy.parser)this.yy.parser.parseError(He,at);else throw new Error(He)},"parseError"),setInput:o(function(Fe,He){return this.yy=He||this.yy||{},this._input=Fe,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},"setInput"),input:o(function(){var Fe=this._input[0];this.yytext+=Fe,this.yyleng++,this.offset++,this.match+=Fe,this.matched+=Fe;var He=Fe.match(/(?:\r\n?|\n).*/g);return He?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),Fe},"input"),unput:o(function(Fe){var He=Fe.length,at=Fe.split(/(?:\r\n?|\n)/g);this._input=Fe+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-He),this.offset-=He;var qe=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),at.length-1&&(this.yylineno-=at.length-1);var Ue=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:at?(at.length===qe.length?this.yylloc.first_column:0)+qe[qe.length-at.length].length-at[0].length:this.yylloc.first_column-He},this.options.ranges&&(this.yylloc.range=[Ue[0],Ue[0]+this.yyleng-He]),this.yyleng=this.yytext.length,this},"unput"),more:o(function(){return this._more=!0,this},"more"),reject:o(function(){if(this.options.backtrack_lexer)this._backtrack=!0;else return this.parseError("Lexical error on line "+(this.yylineno+1)+`. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).
-`+this.showPosition(),{text:"",token:null,line:this.yylineno});return this},"reject"),less:o(function(Fe){this.unput(this.match.slice(Fe))},"less"),pastInput:o(function(){var Fe=this.matched.substr(0,this.matched.length-this.match.length);return(Fe.length>20?"...":"")+Fe.substr(-20).replace(/\n/g,"")},"pastInput"),upcomingInput:o(function(){var Fe=this.match;return Fe.length<20&&(Fe+=this._input.substr(0,20-Fe.length)),(Fe.substr(0,20)+(Fe.length>20?"...":"")).replace(/\n/g,"")},"upcomingInput"),showPosition:o(function(){var Fe=this.pastInput(),He=new Array(Fe.length+1).join("-");return Fe+this.upcomingInput()+`
-`+He+"^"},"showPosition"),test_match:o(function(Fe,He){var at,qe,Ue;if(this.options.backtrack_lexer&&(Ue={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(Ue.yylloc.range=this.yylloc.range.slice(0))),qe=Fe[0].match(/(?:\r\n?|\n).*/g),qe&&(this.yylineno+=qe.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:qe?qe[qe.length-1].length-qe[qe.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+Fe[0].length},this.yytext+=Fe[0],this.match+=Fe[0],this.matches=Fe,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(Fe[0].length),this.matched+=Fe[0],at=this.performAction.call(this,this.yy,this,He,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),at)return at;if(this._backtrack){for(var ye in Ue)this[ye]=Ue[ye];return!1}return!1},"test_match"),next:o(function(){if(this.done)return this.EOF;this._input||(this.done=!0);var Fe,He,at,qe;this._more||(this.yytext="",this.match="");for(var Ue=this._currentRules(),ye=0;ye<Ue.length;ye++)if(at=this._input.match(this.rules[Ue[ye]]),at&&(!He||at[0].length>He[0].length)){if(He=at,qe=ye,this.options.backtrack_lexer){if(Fe=this.test_match(at,Ue[ye]),Fe!==!1)return Fe;if(this._backtrack){He=!1;continue}else return!1}else if(!this.options.flex)break}return He?(Fe=this.test_match(He,Ue[qe]),Fe!==!1?Fe:!1):this._input===""?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+`. Unrecognized text.
-`+this.showPosition(),{text:"",token:null,line:this.yylineno})},"next"),lex:o(function(){var He=this.next();return He||this.lex()},"lex"),begin:o(function(He){this.conditionStack.push(He)},"begin"),popState:o(function(){var He=this.conditionStack.length-1;return He>0?this.conditionStack.pop():this.conditionStack[0]},"popState"),_currentRules:o(function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},"_currentRules"),topState:o(function(He){return He=this.conditionStack.length-1-Math.abs(He||0),He>=0?this.conditionStack[He]:"INITIAL"},"topState"),pushState:o(function(He){this.begin(He)},"pushState"),stateStackSize:o(function(){return this.conditionStack.length},"stateStackSize"),options:{},performAction:o(function(He,at,qe,Ue){var ye=Ue;switch(qe){case 0:return 6;case 1:return 7;case 2:return 8;case 3:return 9;case 4:return 22;case 5:return 23;case 6:return this.begin("acc_title"),24;break;case 7:return this.popState(),"acc_title_value";break;case 8:return this.begin("acc_descr"),26;break;case 9:return this.popState(),"acc_descr_value";break;case 10:this.begin("acc_descr_multiline");break;case 11:this.popState();break;case 12:return"acc_descr_multiline_value";case 13:break;case 14:c;break;case 15:return 12;case 16:break;case 17:return 11;case 18:return 15;case 19:return 16;case 20:return 17;case 21:return 18;case 22:return this.begin("person_ext"),45;break;case 23:return this.begin("person"),44;break;case 24:return this.begin("system_ext_queue"),51;break;case 25:return this.begin("system_ext_db"),50;break;case 26:return this.begin("system_ext"),49;break;case 27:return this.begin("system_queue"),48;break;case 28:return this.begin("system_db"),47;break;case 29:return this.begin("system"),46;break;case 30:return this.begin("boundary"),37;break;case 31:return this.begin("enterprise_boundary"),34;break;case 32:return this.begin("system_boundary"),36;break;case 33:return this.begin("container_ext_queue"),57;break;case 34:return this.begin("container_ext_db"),56;break;case 35:return this.begin("container_ext"),55;break;case 36:return this.begin("container_queue"),54;break;case 37:return this.begin("container_db"),53;break;case 38:return this.begin("container"),52;break;case 39:return this.begin("container_boundary"),38;break;case 40:return this.begin("component_ext_queue"),63;break;case 41:return this.begin("component_ext_db"),62;break;case 42:return this.begin("component_ext"),61;break;case 43:return this.begin("component_queue"),60;break;case 44:return this.begin("component_db"),59;break;case 45:return this.begin("component"),58;break;case 46:return this.begin("node"),39;break;case 47:return this.begin("node"),39;break;case 48:return this.begin("node_l"),40;break;case 49:return this.begin("node_r"),41;break;case 50:return this.begin("rel"),64;break;case 51:return this.begin("birel"),65;break;case 52:return this.begin("rel_u"),66;break;case 53:return this.begin("rel_u"),66;break;case 54:return this.begin("rel_d"),67;break;case 55:return this.begin("rel_d"),67;break;case 56:return this.begin("rel_l"),68;break;case 57:return this.begin("rel_l"),68;break;case 58:return this.begin("rel_r"),69;break;case 59:return this.begin("rel_r"),69;break;case 60:return this.begin("rel_b"),70;break;case 61:return this.begin("rel_index"),71;break;case 62:return this.begin("update_el_style"),72;break;case 63:return this.begin("update_rel_style"),73;break;case 64:return this.begin("update_layout_config"),74;break;case 65:return"EOF_IN_STRUCT";case 66:return this.begin("attribute"),"ATTRIBUTE_EMPTY";break;case 67:this.begin("attribute");break;case 68:this.popState(),this.popState();break;case 69:return 80;case 70:break;case 71:return 80;case 72:this.begin("string");break;case 73:this.popState();break;case 74:return"STR";case 75:this.begin("string_kv");break;case 76:return this.begin("string_kv_key"),"STR_KEY";break;case 77:this.popState(),this.begin("string_kv_value");break;case 78:return"STR_VALUE";case 79:this.popState(),this.popState();break;case 80:return"STR";case 81:return"LBRACE";case 82:return"RBRACE";case 83:return"SPACE";case 84:return"EOL";case 85:return 14}},"anonymous"),rules:[/^(?:.*direction\s+TB[^\n]*)/,/^(?:.*direction\s+BT[^\n]*)/,/^(?:.*direction\s+RL[^\n]*)/,/^(?:.*direction\s+LR[^\n]*)/,/^(?:title\s[^#\n;]+)/,/^(?:accDescription\s[^#\n;]+)/,/^(?:accTitle\s*:\s*)/,/^(?:(?!\n||)*[^\n]*)/,/^(?:accDescr\s*:\s*)/,/^(?:(?!\n||)*[^\n]*)/,/^(?:accDescr\s*\{\s*)/,/^(?:[\}])/,/^(?:[^\}]*)/,/^(?:%%(?!\{)*[^\n]*(\r?\n?)+)/,/^(?:%%[^\n]*(\r?\n)*)/,/^(?:\s*(\r?\n)+)/,/^(?:\s+)/,/^(?:C4Context\b)/,/^(?:C4Container\b)/,/^(?:C4Component\b)/,/^(?:C4Dynamic\b)/,/^(?:C4Deployment\b)/,/^(?:Person_Ext\b)/,/^(?:Person\b)/,/^(?:SystemQueue_Ext\b)/,/^(?:SystemDb_Ext\b)/,/^(?:System_Ext\b)/,/^(?:SystemQueue\b)/,/^(?:SystemDb\b)/,/^(?:System\b)/,/^(?:Boundary\b)/,/^(?:Enterprise_Boundary\b)/,/^(?:System_Boundary\b)/,/^(?:ContainerQueue_Ext\b)/,/^(?:ContainerDb_Ext\b)/,/^(?:Container_Ext\b)/,/^(?:ContainerQueue\b)/,/^(?:ContainerDb\b)/,/^(?:Container\b)/,/^(?:Container_Boundary\b)/,/^(?:ComponentQueue_Ext\b)/,/^(?:ComponentDb_Ext\b)/,/^(?:Component_Ext\b)/,/^(?:ComponentQueue\b)/,/^(?:ComponentDb\b)/,/^(?:Component\b)/,/^(?:Deployment_Node\b)/,/^(?:Node\b)/,/^(?:Node_L\b)/,/^(?:Node_R\b)/,/^(?:Rel\b)/,/^(?:BiRel\b)/,/^(?:Rel_Up\b)/,/^(?:Rel_U\b)/,/^(?:Rel_Down\b)/,/^(?:Rel_D\b)/,/^(?:Rel_Left\b)/,/^(?:Rel_L\b)/,/^(?:Rel_Right\b)/,/^(?:Rel_R\b)/,/^(?:Rel_Back\b)/,/^(?:RelIndex\b)/,/^(?:UpdateElementStyle\b)/,/^(?:UpdateRelStyle\b)/,/^(?:UpdateLayoutConfig\b)/,/^(?:$)/,/^(?:[(][ ]*[,])/,/^(?:[(])/,/^(?:[)])/,/^(?:,,)/,/^(?:,)/,/^(?:[ ]*["]["])/,/^(?:[ ]*["])/,/^(?:["])/,/^(?:[^"]*)/,/^(?:[ ]*[\$])/,/^(?:[^=]*)/,/^(?:[=][ ]*["])/,/^(?:[^"]+)/,/^(?:["])/,/^(?:[^,]+)/,/^(?:\{)/,/^(?:\})/,/^(?:[\s]+)/,/^(?:[\n\r]+)/,/^(?:$)/],conditions:{acc_descr_multiline:{rules:[11,12],inclusive:!1},acc_descr:{rules:[9],inclusive:!1},acc_title:{rules:[7],inclusive:!1},string_kv_value:{rules:[78,79],inclusive:!1},string_kv_key:{rules:[77],inclusive:!1},string_kv:{rules:[76],inclusive:!1},string:{rules:[73,74],inclusive:!1},attribute:{rules:[68,69,70,71,72,75,80],inclusive:!1},update_layout_config:{rules:[65,66,67,68],inclusive:!1},update_rel_style:{rules:[65,66,67,68],inclusive:!1},update_el_style:{rules:[65,66,67,68],inclusive:!1},rel_b:{rules:[65,66,67,68],inclusive:!1},rel_r:{rules:[65,66,67,68],inclusive:!1},rel_l:{rules:[65,66,67,68],inclusive:!1},rel_d:{rules:[65,66,67,68],inclusive:!1},rel_u:{rules:[65,66,67,68],inclusive:!1},rel_bi:{rules:[],inclusive:!1},rel:{rules:[65,66,67,68],inclusive:!1},node_r:{rules:[65,66,67,68],inclusive:!1},node_l:{rules:[65,66,67,68],inclusive:!1},node:{rules:[65,66,67,68],inclusive:!1},index:{rules:[],inclusive:!1},rel_index:{rules:[65,66,67,68],inclusive:!1},component_ext_queue:{rules:[65,66,67,68],inclusive:!1},component_ext_db:{rules:[65,66,67,68],inclusive:!1},component_ext:{rules:[65,66,67,68],inclusive:!1},component_queue:{rules:[65,66,67,68],inclusive:!1},component_db:{rules:[65,66,67,68],inclusive:!1},component:{rules:[65,66,67,68],inclusive:!1},container_boundary:{rules:[65,66,67,68],inclusive:!1},container_ext_queue:{rules:[65,66,67,68],inclusive:!1},container_ext_db:{rules:[65,66,67,68],inclusive:!1},container_ext:{rules:[65,66,67,68],inclusive:!1},container_queue:{rules:[65,66,67,68],inclusive:!1},container_db:{rules:[65,66,67,68],inclusive:!1},container:{rules:[65,66,67,68],inclusive:!1},birel:{rules:[65,66,67,68],inclusive:!1},system_boundary:{rules:[65,66,67,68],inclusive:!1},enterprise_boundary:{rules:[65,66,67,68],inclusive:!1},boundary:{rules:[65,66,67,68],inclusive:!1},system_ext_queue:{rules:[65,66,67,68],inclusive:!1},system_ext_db:{rules:[65,66,67,68],inclusive:!1},system_ext:{rules:[65,66,67,68],inclusive:!1},system_queue:{rules:[65,66,67,68],inclusive:!1},system_db:{rules:[65,66,67,68],inclusive:!1},system:{rules:[65,66,67,68],inclusive:!1},person_ext:{rules:[65,66,67,68],inclusive:!1},person:{rules:[65,66,67,68],inclusive:!1},INITIAL:{rules:[0,1,2,3,4,5,6,8,10,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,81,82,83,84,85],inclusive:!0}}};return ke})();$e.lexer=de;function rt(){this.yy={}}return o(rt,"Parser"),rt.prototype=$e,$e.Parser=rt,new rt})();kv.parser=kv;eX=kv});var uOe,hOe,Br,Io,Di=z(()=>{"use strict";St();uOe=o(function(e,t){for(let r of t)e.attr(r[0],r[1])},"d3Attrs"),hOe=o(function(e,t,r){let i=new Map;return r?(i.set("width","100%"),i.set("style",`max-width: ${t}px;`)):(i.set("height",e),i.set("width",t)),i},"calculateSvgSizeAttrs"),Br=o(function(e,t,r,i){let n=hOe(t,r,i);uOe(e,n)},"configureSvgSize"),Io=o(function(e,t,r,i){let n=t.node().getBBox(),a=n.width,s=n.height;Z.info(`SVG bounds: ${a}x${s}`,n);let l=0,u=0;Z.info(`Graph bounds: ${l}x${u}`,e),l=a+r*2,u=s+r*2,Z.info(`Calculated bounds: ${l}x${u}`),Br(t,u,l,i);let h=`${n.x-r} ${n.y-r} ${n.width+2*r} ${n.height+2*r}`;t.attr("viewBox",h)},"setupGraphViewbox")});function ID(e){return[...e.cssRules].map(t=>t.cssText).join(`
-`)}var gk,dOe,tX,rX,OD=z(()=>{"use strict";St();gk={};o(ID,"cssStyleSheetToString");dOe=o((e,t,r,i)=>{let n="";return e in gk&&gk[e]?n=gk[e]({...r,svgId:i}):Z.warn(`No theme found for ${e}`),` & {
+`)),s+=f+n[u+1]}),s}var h8=F(()=>{"use strict";o(mS,"dedent")});var gS,Hp,aJ,yS=F(()=>{"use strict";gS=/^([^\S\n\r]*)-{3}\s*[\n\r](.*?)[\n\r]\1-{3}\s*[\n\r]+/s,Hp=/%{2}{\s*(?:(\w+)\s*:|(\w+))\s*(?:(\w+)|((?:(?!}%{2}).|\r?\n)*))?\s*(?:}%{2})?/gi,aJ=/\s*%%.*\n/gm});var ry,d8=F(()=>{"use strict";ry=class extends Error{static{o(this,"UnknownDiagramError")}constructor(t){super(t),this.name="UnknownDiagramError"}}});var oh,ny,sb,f8,sJ,Up=F(()=>{"use strict";vt();yS();d8();oh={},ny=o(function(e,t){e=e.replace(gS,"").replace(Hp,"").replace(aJ,`
+`);for(let[r,{detector:n}]of Object.entries(oh))if(n(e,t))return r;throw new ry(`No diagram type detected matching given configuration for text: ${e}`)},"detectType"),sb=o((...e)=>{for(let{id:t,detector:r,loader:n}of e)f8(t,r,n)},"registerLazyLoadedDiagrams"),f8=o((e,t,r)=>{oh[e]&&Z.warn(`Detector with key ${e} already exists. Overwriting.`),oh[e]={detector:t,loader:r},Z.debug(`Detector with key ${e} added${r?" with loader":""}`)},"addDetector"),sJ=o(e=>oh[e].loader,"getDiagramLoader")});var ob,oJ,p8=F(()=>{"use strict";ob=(function(){var e=o(function(J,se,ge,Te){for(ge=ge||{},Te=J.length;Te--;ge[J[Te]]=se);return ge},"o"),t=[1,24],r=[1,25],n=[1,26],i=[1,27],a=[1,28],s=[1,63],l=[1,64],u=[1,65],h=[1,66],d=[1,67],f=[1,68],p=[1,69],m=[1,29],g=[1,30],y=[1,31],v=[1,32],x=[1,33],b=[1,34],T=[1,35],k=[1,36],C=[1,37],w=[1,38],S=[1,39],R=[1,40],L=[1,41],N=[1,42],I=[1,43],_=[1,44],A=[1,45],M=[1,46],D=[1,47],P=[1,48],B=[1,50],O=[1,51],$=[1,52],V=[1,53],G=[1,54],z=[1,55],W=[1,56],H=[1,57],j=[1,58],Q=[1,59],U=[1,60],oe=[14,42],te=[14,34,36,37,38,39,40,41,42,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74],le=[12,14,34,36,37,38,39,40,41,42,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74],ie=[1,82],ae=[1,83],Re=[1,84],be=[1,85],Pe=[12,14,42],Ge=[12,14,33,42],Oe=[12,14,33,42,76,77,79,80],ue=[12,33],ye=[34,36,37,38,39,40,41,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74],ke={trace:o(function(){},"trace"),yy:{},symbols_:{error:2,start:3,mermaidDoc:4,direction:5,direction_tb:6,direction_bt:7,direction_rl:8,direction_lr:9,graphConfig:10,C4_CONTEXT:11,NEWLINE:12,statements:13,EOF:14,C4_CONTAINER:15,C4_COMPONENT:16,C4_DYNAMIC:17,C4_DEPLOYMENT:18,otherStatements:19,diagramStatements:20,otherStatement:21,title:22,accDescription:23,acc_title:24,acc_title_value:25,acc_descr:26,acc_descr_value:27,acc_descr_multiline_value:28,boundaryStatement:29,boundaryStartStatement:30,boundaryStopStatement:31,boundaryStart:32,LBRACE:33,ENTERPRISE_BOUNDARY:34,attributes:35,SYSTEM_BOUNDARY:36,BOUNDARY:37,CONTAINER_BOUNDARY:38,NODE:39,NODE_L:40,NODE_R:41,RBRACE:42,diagramStatement:43,PERSON:44,PERSON_EXT:45,SYSTEM:46,SYSTEM_DB:47,SYSTEM_QUEUE:48,SYSTEM_EXT:49,SYSTEM_EXT_DB:50,SYSTEM_EXT_QUEUE:51,CONTAINER:52,CONTAINER_DB:53,CONTAINER_QUEUE:54,CONTAINER_EXT:55,CONTAINER_EXT_DB:56,CONTAINER_EXT_QUEUE:57,COMPONENT:58,COMPONENT_DB:59,COMPONENT_QUEUE:60,COMPONENT_EXT:61,COMPONENT_EXT_DB:62,COMPONENT_EXT_QUEUE:63,REL:64,BIREL:65,REL_U:66,REL_D:67,REL_L:68,REL_R:69,REL_B:70,REL_INDEX:71,UPDATE_EL_STYLE:72,UPDATE_REL_STYLE:73,UPDATE_LAYOUT_CONFIG:74,attribute:75,STR:76,STR_KEY:77,STR_VALUE:78,ATTRIBUTE:79,ATTRIBUTE_EMPTY:80,$accept:0,$end:1},terminals_:{2:"error",6:"direction_tb",7:"direction_bt",8:"direction_rl",9:"direction_lr",11:"C4_CONTEXT",12:"NEWLINE",14:"EOF",15:"C4_CONTAINER",16:"C4_COMPONENT",17:"C4_DYNAMIC",18:"C4_DEPLOYMENT",22:"title",23:"accDescription",24:"acc_title",25:"acc_title_value",26:"acc_descr",27:"acc_descr_value",28:"acc_descr_multiline_value",33:"LBRACE",34:"ENTERPRISE_BOUNDARY",36:"SYSTEM_BOUNDARY",37:"BOUNDARY",38:"CONTAINER_BOUNDARY",39:"NODE",40:"NODE_L",41:"NODE_R",42:"RBRACE",44:"PERSON",45:"PERSON_EXT",46:"SYSTEM",47:"SYSTEM_DB",48:"SYSTEM_QUEUE",49:"SYSTEM_EXT",50:"SYSTEM_EXT_DB",51:"SYSTEM_EXT_QUEUE",52:"CONTAINER",53:"CONTAINER_DB",54:"CONTAINER_QUEUE",55:"CONTAINER_EXT",56:"CONTAINER_EXT_DB",57:"CONTAINER_EXT_QUEUE",58:"COMPONENT",59:"COMPONENT_DB",60:"COMPONENT_QUEUE",61:"COMPONENT_EXT",62:"COMPONENT_EXT_DB",63:"COMPONENT_EXT_QUEUE",64:"REL",65:"BIREL",66:"REL_U",67:"REL_D",68:"REL_L",69:"REL_R",70:"REL_B",71:"REL_INDEX",72:"UPDATE_EL_STYLE",73:"UPDATE_REL_STYLE",74:"UPDATE_LAYOUT_CONFIG",76:"STR",77:"STR_KEY",78:"STR_VALUE",79:"ATTRIBUTE",80:"ATTRIBUTE_EMPTY"},productions_:[0,[3,1],[3,1],[5,1],[5,1],[5,1],[5,1],[4,1],[10,4],[10,4],[10,4],[10,4],[10,4],[13,1],[13,1],[13,2],[19,1],[19,2],[19,3],[21,1],[21,1],[21,2],[21,2],[21,1],[29,3],[30,3],[30,3],[30,4],[32,2],[32,2],[32,2],[32,2],[32,2],[32,2],[32,2],[31,1],[20,1],[20,2],[20,3],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,1],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[35,1],[35,2],[75,1],[75,2],[75,1],[75,1]],performAction:o(function(se,ge,Te,we,Me,ve,ne){var q=ve.length-1;switch(Me){case 3:we.setDirection("TB");break;case 4:we.setDirection("BT");break;case 5:we.setDirection("RL");break;case 6:we.setDirection("LR");break;case 8:case 9:case 10:case 11:case 12:we.setC4Type(ve[q-3]);break;case 19:we.setTitle(ve[q].substring(6)),this.$=ve[q].substring(6);break;case 20:we.setAccDescription(ve[q].substring(15)),this.$=ve[q].substring(15);break;case 21:this.$=ve[q].trim(),we.setTitle(this.$);break;case 22:case 23:this.$=ve[q].trim(),we.setAccDescription(this.$);break;case 28:ve[q].splice(2,0,"ENTERPRISE"),we.addPersonOrSystemBoundary(...ve[q]),this.$=ve[q];break;case 29:ve[q].splice(2,0,"SYSTEM"),we.addPersonOrSystemBoundary(...ve[q]),this.$=ve[q];break;case 30:we.addPersonOrSystemBoundary(...ve[q]),this.$=ve[q];break;case 31:ve[q].splice(2,0,"CONTAINER"),we.addContainerBoundary(...ve[q]),this.$=ve[q];break;case 32:we.addDeploymentNode("node",...ve[q]),this.$=ve[q];break;case 33:we.addDeploymentNode("nodeL",...ve[q]),this.$=ve[q];break;case 34:we.addDeploymentNode("nodeR",...ve[q]),this.$=ve[q];break;case 35:we.popBoundaryParseStack();break;case 39:we.addPersonOrSystem("person",...ve[q]),this.$=ve[q];break;case 40:we.addPersonOrSystem("external_person",...ve[q]),this.$=ve[q];break;case 41:we.addPersonOrSystem("system",...ve[q]),this.$=ve[q];break;case 42:we.addPersonOrSystem("system_db",...ve[q]),this.$=ve[q];break;case 43:we.addPersonOrSystem("system_queue",...ve[q]),this.$=ve[q];break;case 44:we.addPersonOrSystem("external_system",...ve[q]),this.$=ve[q];break;case 45:we.addPersonOrSystem("external_system_db",...ve[q]),this.$=ve[q];break;case 46:we.addPersonOrSystem("external_system_queue",...ve[q]),this.$=ve[q];break;case 47:we.addContainer("container",...ve[q]),this.$=ve[q];break;case 48:we.addContainer("container_db",...ve[q]),this.$=ve[q];break;case 49:we.addContainer("container_queue",...ve[q]),this.$=ve[q];break;case 50:we.addContainer("external_container",...ve[q]),this.$=ve[q];break;case 51:we.addContainer("external_container_db",...ve[q]),this.$=ve[q];break;case 52:we.addContainer("external_container_queue",...ve[q]),this.$=ve[q];break;case 53:we.addComponent("component",...ve[q]),this.$=ve[q];break;case 54:we.addComponent("component_db",...ve[q]),this.$=ve[q];break;case 55:we.addComponent("component_queue",...ve[q]),this.$=ve[q];break;case 56:we.addComponent("external_component",...ve[q]),this.$=ve[q];break;case 57:we.addComponent("external_component_db",...ve[q]),this.$=ve[q];break;case 58:we.addComponent("external_component_queue",...ve[q]),this.$=ve[q];break;case 60:we.addRel("rel",...ve[q]),this.$=ve[q];break;case 61:we.addRel("birel",...ve[q]),this.$=ve[q];break;case 62:we.addRel("rel_u",...ve[q]),this.$=ve[q];break;case 63:we.addRel("rel_d",...ve[q]),this.$=ve[q];break;case 64:we.addRel("rel_l",...ve[q]),this.$=ve[q];break;case 65:we.addRel("rel_r",...ve[q]),this.$=ve[q];break;case 66:we.addRel("rel_b",...ve[q]),this.$=ve[q];break;case 67:ve[q].splice(0,1),we.addRel("rel",...ve[q]),this.$=ve[q];break;case 68:we.updateElStyle("update_el_style",...ve[q]),this.$=ve[q];break;case 69:we.updateRelStyle("update_rel_style",...ve[q]),this.$=ve[q];break;case 70:we.updateLayoutConfig("update_layout_config",...ve[q]),this.$=ve[q];break;case 71:this.$=[ve[q]];break;case 72:ve[q].unshift(ve[q-1]),this.$=ve[q];break;case 73:case 75:this.$=ve[q].trim();break;case 74:let he={};he[ve[q-1].trim()]=ve[q].trim(),this.$=he;break;case 76:this.$="";break}},"anonymous"),table:[{3:1,4:2,5:3,6:[1,5],7:[1,6],8:[1,7],9:[1,8],10:4,11:[1,9],15:[1,10],16:[1,11],17:[1,12],18:[1,13]},{1:[3]},{1:[2,1]},{1:[2,2]},{1:[2,7]},{1:[2,3]},{1:[2,4]},{1:[2,5]},{1:[2,6]},{12:[1,14]},{12:[1,15]},{12:[1,16]},{12:[1,17]},{12:[1,18]},{13:19,19:20,20:21,21:22,22:t,23:r,24:n,26:i,28:a,29:49,30:61,32:62,34:s,36:l,37:u,38:h,39:d,40:f,41:p,43:23,44:m,45:g,46:y,47:v,48:x,49:b,50:T,51:k,52:C,53:w,54:S,55:R,56:L,57:N,58:I,59:_,60:A,61:M,62:D,63:P,64:B,65:O,66:$,67:V,68:G,69:z,70:W,71:H,72:j,73:Q,74:U},{13:70,19:20,20:21,21:22,22:t,23:r,24:n,26:i,28:a,29:49,30:61,32:62,34:s,36:l,37:u,38:h,39:d,40:f,41:p,43:23,44:m,45:g,46:y,47:v,48:x,49:b,50:T,51:k,52:C,53:w,54:S,55:R,56:L,57:N,58:I,59:_,60:A,61:M,62:D,63:P,64:B,65:O,66:$,67:V,68:G,69:z,70:W,71:H,72:j,73:Q,74:U},{13:71,19:20,20:21,21:22,22:t,23:r,24:n,26:i,28:a,29:49,30:61,32:62,34:s,36:l,37:u,38:h,39:d,40:f,41:p,43:23,44:m,45:g,46:y,47:v,48:x,49:b,50:T,51:k,52:C,53:w,54:S,55:R,56:L,57:N,58:I,59:_,60:A,61:M,62:D,63:P,64:B,65:O,66:$,67:V,68:G,69:z,70:W,71:H,72:j,73:Q,74:U},{13:72,19:20,20:21,21:22,22:t,23:r,24:n,26:i,28:a,29:49,30:61,32:62,34:s,36:l,37:u,38:h,39:d,40:f,41:p,43:23,44:m,45:g,46:y,47:v,48:x,49:b,50:T,51:k,52:C,53:w,54:S,55:R,56:L,57:N,58:I,59:_,60:A,61:M,62:D,63:P,64:B,65:O,66:$,67:V,68:G,69:z,70:W,71:H,72:j,73:Q,74:U},{13:73,19:20,20:21,21:22,22:t,23:r,24:n,26:i,28:a,29:49,30:61,32:62,34:s,36:l,37:u,38:h,39:d,40:f,41:p,43:23,44:m,45:g,46:y,47:v,48:x,49:b,50:T,51:k,52:C,53:w,54:S,55:R,56:L,57:N,58:I,59:_,60:A,61:M,62:D,63:P,64:B,65:O,66:$,67:V,68:G,69:z,70:W,71:H,72:j,73:Q,74:U},{14:[1,74]},e(oe,[2,13],{43:23,29:49,30:61,32:62,20:75,34:s,36:l,37:u,38:h,39:d,40:f,41:p,44:m,45:g,46:y,47:v,48:x,49:b,50:T,51:k,52:C,53:w,54:S,55:R,56:L,57:N,58:I,59:_,60:A,61:M,62:D,63:P,64:B,65:O,66:$,67:V,68:G,69:z,70:W,71:H,72:j,73:Q,74:U}),e(oe,[2,14]),e(te,[2,16],{12:[1,76]}),e(oe,[2,36],{12:[1,77]}),e(le,[2,19]),e(le,[2,20]),{25:[1,78]},{27:[1,79]},e(le,[2,23]),{35:80,75:81,76:ie,77:ae,79:Re,80:be},{35:86,75:81,76:ie,77:ae,79:Re,80:be},{35:87,75:81,76:ie,77:ae,79:Re,80:be},{35:88,75:81,76:ie,77:ae,79:Re,80:be},{35:89,75:81,76:ie,77:ae,79:Re,80:be},{35:90,75:81,76:ie,77:ae,79:Re,80:be},{35:91,75:81,76:ie,77:ae,79:Re,80:be},{35:92,75:81,76:ie,77:ae,79:Re,80:be},{35:93,75:81,76:ie,77:ae,79:Re,80:be},{35:94,75:81,76:ie,77:ae,79:Re,80:be},{35:95,75:81,76:ie,77:ae,79:Re,80:be},{35:96,75:81,76:ie,77:ae,79:Re,80:be},{35:97,75:81,76:ie,77:ae,79:Re,80:be},{35:98,75:81,76:ie,77:ae,79:Re,80:be},{35:99,75:81,76:ie,77:ae,79:Re,80:be},{35:100,75:81,76:ie,77:ae,79:Re,80:be},{35:101,75:81,76:ie,77:ae,79:Re,80:be},{35:102,75:81,76:ie,77:ae,79:Re,80:be},{35:103,75:81,76:ie,77:ae,79:Re,80:be},{35:104,75:81,76:ie,77:ae,79:Re,80:be},e(Pe,[2,59]),{35:105,75:81,76:ie,77:ae,79:Re,80:be},{35:106,75:81,76:ie,77:ae,79:Re,80:be},{35:107,75:81,76:ie,77:ae,79:Re,80:be},{35:108,75:81,76:ie,77:ae,79:Re,80:be},{35:109,75:81,76:ie,77:ae,79:Re,80:be},{35:110,75:81,76:ie,77:ae,79:Re,80:be},{35:111,75:81,76:ie,77:ae,79:Re,80:be},{35:112,75:81,76:ie,77:ae,79:Re,80:be},{35:113,75:81,76:ie,77:ae,79:Re,80:be},{35:114,75:81,76:ie,77:ae,79:Re,80:be},{35:115,75:81,76:ie,77:ae,79:Re,80:be},{20:116,29:49,30:61,32:62,34:s,36:l,37:u,38:h,39:d,40:f,41:p,43:23,44:m,45:g,46:y,47:v,48:x,49:b,50:T,51:k,52:C,53:w,54:S,55:R,56:L,57:N,58:I,59:_,60:A,61:M,62:D,63:P,64:B,65:O,66:$,67:V,68:G,69:z,70:W,71:H,72:j,73:Q,74:U},{12:[1,118],33:[1,117]},{35:119,75:81,76:ie,77:ae,79:Re,80:be},{35:120,75:81,76:ie,77:ae,79:Re,80:be},{35:121,75:81,76:ie,77:ae,79:Re,80:be},{35:122,75:81,76:ie,77:ae,79:Re,80:be},{35:123,75:81,76:ie,77:ae,79:Re,80:be},{35:124,75:81,76:ie,77:ae,79:Re,80:be},{35:125,75:81,76:ie,77:ae,79:Re,80:be},{14:[1,126]},{14:[1,127]},{14:[1,128]},{14:[1,129]},{1:[2,8]},e(oe,[2,15]),e(te,[2,17],{21:22,19:130,22:t,23:r,24:n,26:i,28:a}),e(oe,[2,37],{19:20,20:21,21:22,43:23,29:49,30:61,32:62,13:131,22:t,23:r,24:n,26:i,28:a,34:s,36:l,37:u,38:h,39:d,40:f,41:p,44:m,45:g,46:y,47:v,48:x,49:b,50:T,51:k,52:C,53:w,54:S,55:R,56:L,57:N,58:I,59:_,60:A,61:M,62:D,63:P,64:B,65:O,66:$,67:V,68:G,69:z,70:W,71:H,72:j,73:Q,74:U}),e(le,[2,21]),e(le,[2,22]),e(Pe,[2,39]),e(Ge,[2,71],{75:81,35:132,76:ie,77:ae,79:Re,80:be}),e(Oe,[2,73]),{78:[1,133]},e(Oe,[2,75]),e(Oe,[2,76]),e(Pe,[2,40]),e(Pe,[2,41]),e(Pe,[2,42]),e(Pe,[2,43]),e(Pe,[2,44]),e(Pe,[2,45]),e(Pe,[2,46]),e(Pe,[2,47]),e(Pe,[2,48]),e(Pe,[2,49]),e(Pe,[2,50]),e(Pe,[2,51]),e(Pe,[2,52]),e(Pe,[2,53]),e(Pe,[2,54]),e(Pe,[2,55]),e(Pe,[2,56]),e(Pe,[2,57]),e(Pe,[2,58]),e(Pe,[2,60]),e(Pe,[2,61]),e(Pe,[2,62]),e(Pe,[2,63]),e(Pe,[2,64]),e(Pe,[2,65]),e(Pe,[2,66]),e(Pe,[2,67]),e(Pe,[2,68]),e(Pe,[2,69]),e(Pe,[2,70]),{31:134,42:[1,135]},{12:[1,136]},{33:[1,137]},e(ue,[2,28]),e(ue,[2,29]),e(ue,[2,30]),e(ue,[2,31]),e(ue,[2,32]),e(ue,[2,33]),e(ue,[2,34]),{1:[2,9]},{1:[2,10]},{1:[2,11]},{1:[2,12]},e(te,[2,18]),e(oe,[2,38]),e(Ge,[2,72]),e(Oe,[2,74]),e(Pe,[2,24]),e(Pe,[2,35]),e(ye,[2,25]),e(ye,[2,26],{12:[1,138]}),e(ye,[2,27])],defaultActions:{2:[2,1],3:[2,2],4:[2,7],5:[2,3],6:[2,4],7:[2,5],8:[2,6],74:[2,8],126:[2,9],127:[2,10],128:[2,11],129:[2,12]},parseError:o(function(se,ge){if(ge.recoverable)this.trace(se);else{var Te=new Error(se);throw Te.hash=ge,Te}},"parseError"),parse:o(function(se){var ge=this,Te=[0],we=[],Me=[null],ve=[],ne=this.table,q="",he=0,X=0,fe=0,K=2,qe=1,_e=ve.slice.call(arguments,1),Be=Object.create(this.lexer),Ne={yy:{}};for(var He in this.yy)Object.prototype.hasOwnProperty.call(this.yy,He)&&(Ne.yy[He]=this.yy[He]);Be.setInput(se,Ne.yy),Ne.yy.lexer=Be,Ne.yy.parser=this,typeof Be.yylloc>"u"&&(Be.yylloc={});var $e=Be.yylloc;ve.push($e);var Xe=Be.options&&Be.options.ranges;typeof Ne.yy.parseError=="function"?this.parseError=Ne.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function Fe(Ze){Te.length=Te.length-2*Ze,Me.length=Me.length-Ze,ve.length=ve.length-Ze}o(Fe,"popStack");function Ke(){var Ze;return Ze=we.pop()||Be.lex()||qe,typeof Ze!="number"&&(Ze instanceof Array&&(we=Ze,Ze=we.pop()),Ze=ge.symbols_[Ze]||Ze),Ze}o(Ke,"lex");for(var xe,mt,Le,ft,wt,zt,St={},At,bt,me,lt;;){if(Le=Te[Te.length-1],this.defaultActions[Le]?ft=this.defaultActions[Le]:((xe===null||typeof xe>"u")&&(xe=Ke()),ft=ne[Le]&&ne[Le][xe]),typeof ft>"u"||!ft.length||!ft[0]){var gt="";lt=[];for(At in ne[Le])this.terminals_[At]&&At>K&&lt.push("'"+this.terminals_[At]+"'");Be.showPosition?gt="Parse error on line "+(he+1)+`:
+`+Be.showPosition()+`
+Expecting `+lt.join(", ")+", got '"+(this.terminals_[xe]||xe)+"'":gt="Parse error on line "+(he+1)+": Unexpected "+(xe==qe?"end of input":"'"+(this.terminals_[xe]||xe)+"'"),this.parseError(gt,{text:Be.match,token:this.terminals_[xe]||xe,line:Be.yylineno,loc:$e,expected:lt})}if(ft[0]instanceof Array&&ft.length>1)throw new Error("Parse Error: multiple actions possible at state: "+Le+", token: "+xe);switch(ft[0]){case 1:Te.push(xe),Me.push(Be.yytext),ve.push(Be.yylloc),Te.push(ft[1]),xe=null,mt?(xe=mt,mt=null):(X=Be.yyleng,q=Be.yytext,he=Be.yylineno,$e=Be.yylloc,fe>0&&fe--);break;case 2:if(bt=this.productions_[ft[1]][1],St.$=Me[Me.length-bt],St._$={first_line:ve[ve.length-(bt||1)].first_line,last_line:ve[ve.length-1].last_line,first_column:ve[ve.length-(bt||1)].first_column,last_column:ve[ve.length-1].last_column},Xe&&(St._$.range=[ve[ve.length-(bt||1)].range[0],ve[ve.length-1].range[1]]),zt=this.performAction.apply(St,[q,X,he,Ne.yy,ft[1],Me,ve].concat(_e)),typeof zt<"u")return zt;bt&&(Te=Te.slice(0,-1*bt*2),Me=Me.slice(0,-1*bt),ve=ve.slice(0,-1*bt)),Te.push(this.productions_[ft[1]][0]),Me.push(St.$),ve.push(St._$),me=ne[Te[Te.length-2]][Te[Te.length-1]],Te.push(me);break;case 3:return!0}}return!0},"parse")},ce=(function(){var J={EOF:1,parseError:o(function(ge,Te){if(this.yy.parser)this.yy.parser.parseError(ge,Te);else throw new Error(ge)},"parseError"),setInput:o(function(se,ge){return this.yy=ge||this.yy||{},this._input=se,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},"setInput"),input:o(function(){var se=this._input[0];this.yytext+=se,this.yyleng++,this.offset++,this.match+=se,this.matched+=se;var ge=se.match(/(?:\r\n?|\n).*/g);return ge?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),se},"input"),unput:o(function(se){var ge=se.length,Te=se.split(/(?:\r\n?|\n)/g);this._input=se+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-ge),this.offset-=ge;var we=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),Te.length-1&&(this.yylineno-=Te.length-1);var Me=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:Te?(Te.length===we.length?this.yylloc.first_column:0)+we[we.length-Te.length].length-Te[0].length:this.yylloc.first_column-ge},this.options.ranges&&(this.yylloc.range=[Me[0],Me[0]+this.yyleng-ge]),this.yyleng=this.yytext.length,this},"unput"),more:o(function(){return this._more=!0,this},"more"),reject:o(function(){if(this.options.backtrack_lexer)this._backtrack=!0;else return this.parseError("Lexical error on line "+(this.yylineno+1)+`. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).
+`+this.showPosition(),{text:"",token:null,line:this.yylineno});return this},"reject"),less:o(function(se){this.unput(this.match.slice(se))},"less"),pastInput:o(function(){var se=this.matched.substr(0,this.matched.length-this.match.length);return(se.length>20?"...":"")+se.substr(-20).replace(/\n/g,"")},"pastInput"),upcomingInput:o(function(){var se=this.match;return se.length<20&&(se+=this._input.substr(0,20-se.length)),(se.substr(0,20)+(se.length>20?"...":"")).replace(/\n/g,"")},"upcomingInput"),showPosition:o(function(){var se=this.pastInput(),ge=new Array(se.length+1).join("-");return se+this.upcomingInput()+`
+`+ge+"^"},"showPosition"),test_match:o(function(se,ge){var Te,we,Me;if(this.options.backtrack_lexer&&(Me={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(Me.yylloc.range=this.yylloc.range.slice(0))),we=se[0].match(/(?:\r\n?|\n).*/g),we&&(this.yylineno+=we.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:we?we[we.length-1].length-we[we.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+se[0].length},this.yytext+=se[0],this.match+=se[0],this.matches=se,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(se[0].length),this.matched+=se[0],Te=this.performAction.call(this,this.yy,this,ge,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),Te)return Te;if(this._backtrack){for(var ve in Me)this[ve]=Me[ve];return!1}return!1},"test_match"),next:o(function(){if(this.done)return this.EOF;this._input||(this.done=!0);var se,ge,Te,we;this._more||(this.yytext="",this.match="");for(var Me=this._currentRules(),ve=0;ve<Me.length;ve++)if(Te=this._input.match(this.rules[Me[ve]]),Te&&(!ge||Te[0].length>ge[0].length)){if(ge=Te,we=ve,this.options.backtrack_lexer){if(se=this.test_match(Te,Me[ve]),se!==!1)return se;if(this._backtrack){ge=!1;continue}else return!1}else if(!this.options.flex)break}return ge?(se=this.test_match(ge,Me[we]),se!==!1?se:!1):this._input===""?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+`. Unrecognized text.
+`+this.showPosition(),{text:"",token:null,line:this.yylineno})},"next"),lex:o(function(){var ge=this.next();return ge||this.lex()},"lex"),begin:o(function(ge){this.conditionStack.push(ge)},"begin"),popState:o(function(){var ge=this.conditionStack.length-1;return ge>0?this.conditionStack.pop():this.conditionStack[0]},"popState"),_currentRules:o(function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},"_currentRules"),topState:o(function(ge){return ge=this.conditionStack.length-1-Math.abs(ge||0),ge>=0?this.conditionStack[ge]:"INITIAL"},"topState"),pushState:o(function(ge){this.begin(ge)},"pushState"),stateStackSize:o(function(){return this.conditionStack.length},"stateStackSize"),options:{},performAction:o(function(ge,Te,we,Me){var ve=Me;switch(we){case 0:return 6;case 1:return 7;case 2:return 8;case 3:return 9;case 4:return 22;case 5:return 23;case 6:return this.begin("acc_title"),24;break;case 7:return this.popState(),"acc_title_value";break;case 8:return this.begin("acc_descr"),26;break;case 9:return this.popState(),"acc_descr_value";break;case 10:this.begin("acc_descr_multiline");break;case 11:this.popState();break;case 12:return"acc_descr_multiline_value";case 13:break;case 14:c;break;case 15:return 12;case 16:break;case 17:return 11;case 18:return 15;case 19:return 16;case 20:return 17;case 21:return 18;case 22:return this.begin("person_ext"),45;break;case 23:return this.begin("person"),44;break;case 24:return this.begin("system_ext_queue"),51;break;case 25:return this.begin("system_ext_db"),50;break;case 26:return this.begin("system_ext"),49;break;case 27:return this.begin("system_queue"),48;break;case 28:return this.begin("system_db"),47;break;case 29:return this.begin("system"),46;break;case 30:return this.begin("boundary"),37;break;case 31:return this.begin("enterprise_boundary"),34;break;case 32:return this.begin("system_boundary"),36;break;case 33:return this.begin("container_ext_queue"),57;break;case 34:return this.begin("container_ext_db"),56;break;case 35:return this.begin("container_ext"),55;break;case 36:return this.begin("container_queue"),54;break;case 37:return this.begin("container_db"),53;break;case 38:return this.begin("container"),52;break;case 39:return this.begin("container_boundary"),38;break;case 40:return this.begin("component_ext_queue"),63;break;case 41:return this.begin("component_ext_db"),62;break;case 42:return this.begin("component_ext"),61;break;case 43:return this.begin("component_queue"),60;break;case 44:return this.begin("component_db"),59;break;case 45:return this.begin("component"),58;break;case 46:return this.begin("node"),39;break;case 47:return this.begin("node"),39;break;case 48:return this.begin("node_l"),40;break;case 49:return this.begin("node_r"),41;break;case 50:return this.begin("rel"),64;break;case 51:return this.begin("birel"),65;break;case 52:return this.begin("rel_u"),66;break;case 53:return this.begin("rel_u"),66;break;case 54:return this.begin("rel_d"),67;break;case 55:return this.begin("rel_d"),67;break;case 56:return this.begin("rel_l"),68;break;case 57:return this.begin("rel_l"),68;break;case 58:return this.begin("rel_r"),69;break;case 59:return this.begin("rel_r"),69;break;case 60:return this.begin("rel_b"),70;break;case 61:return this.begin("rel_index"),71;break;case 62:return this.begin("update_el_style"),72;break;case 63:return this.begin("update_rel_style"),73;break;case 64:return this.begin("update_layout_config"),74;break;case 65:return"EOF_IN_STRUCT";case 66:return this.begin("attribute"),"ATTRIBUTE_EMPTY";break;case 67:this.begin("attribute");break;case 68:this.popState(),this.popState();break;case 69:return 80;case 70:break;case 71:return 80;case 72:this.begin("string");break;case 73:this.popState();break;case 74:return"STR";case 75:this.begin("string_kv");break;case 76:return this.begin("string_kv_key"),"STR_KEY";break;case 77:this.popState(),this.begin("string_kv_value");break;case 78:return"STR_VALUE";case 79:this.popState(),this.popState();break;case 80:return"STR";case 81:return"LBRACE";case 82:return"RBRACE";case 83:return"SPACE";case 84:return"EOL";case 85:return 14}},"anonymous"),rules:[/^(?:.*direction\s+TB[^\n]*)/,/^(?:.*direction\s+BT[^\n]*)/,/^(?:.*direction\s+RL[^\n]*)/,/^(?:.*direction\s+LR[^\n]*)/,/^(?:title\s[^#\n;]+)/,/^(?:accDescription\s[^#\n;]+)/,/^(?:accTitle\s*:\s*)/,/^(?:(?!\n||)*[^\n]*)/,/^(?:accDescr\s*:\s*)/,/^(?:(?!\n||)*[^\n]*)/,/^(?:accDescr\s*\{\s*)/,/^(?:[\}])/,/^(?:[^\}]*)/,/^(?:%%(?!\{)*[^\n]*(\r?\n?)+)/,/^(?:%%[^\n]*(\r?\n)*)/,/^(?:\s*(\r?\n)+)/,/^(?:\s+)/,/^(?:C4Context\b)/,/^(?:C4Container\b)/,/^(?:C4Component\b)/,/^(?:C4Dynamic\b)/,/^(?:C4Deployment\b)/,/^(?:Person_Ext\b)/,/^(?:Person\b)/,/^(?:SystemQueue_Ext\b)/,/^(?:SystemDb_Ext\b)/,/^(?:System_Ext\b)/,/^(?:SystemQueue\b)/,/^(?:SystemDb\b)/,/^(?:System\b)/,/^(?:Boundary\b)/,/^(?:Enterprise_Boundary\b)/,/^(?:System_Boundary\b)/,/^(?:ContainerQueue_Ext\b)/,/^(?:ContainerDb_Ext\b)/,/^(?:Container_Ext\b)/,/^(?:ContainerQueue\b)/,/^(?:ContainerDb\b)/,/^(?:Container\b)/,/^(?:Container_Boundary\b)/,/^(?:ComponentQueue_Ext\b)/,/^(?:ComponentDb_Ext\b)/,/^(?:Component_Ext\b)/,/^(?:ComponentQueue\b)/,/^(?:ComponentDb\b)/,/^(?:Component\b)/,/^(?:Deployment_Node\b)/,/^(?:Node\b)/,/^(?:Node_L\b)/,/^(?:Node_R\b)/,/^(?:Rel\b)/,/^(?:BiRel\b)/,/^(?:Rel_Up\b)/,/^(?:Rel_U\b)/,/^(?:Rel_Down\b)/,/^(?:Rel_D\b)/,/^(?:Rel_Left\b)/,/^(?:Rel_L\b)/,/^(?:Rel_Right\b)/,/^(?:Rel_R\b)/,/^(?:Rel_Back\b)/,/^(?:RelIndex\b)/,/^(?:UpdateElementStyle\b)/,/^(?:UpdateRelStyle\b)/,/^(?:UpdateLayoutConfig\b)/,/^(?:$)/,/^(?:[(][ ]*[,])/,/^(?:[(])/,/^(?:[)])/,/^(?:,,)/,/^(?:,)/,/^(?:[ ]*["]["])/,/^(?:[ ]*["])/,/^(?:["])/,/^(?:[^"]*)/,/^(?:[ ]*[\$])/,/^(?:[^=]*)/,/^(?:[=][ ]*["])/,/^(?:[^"]+)/,/^(?:["])/,/^(?:[^,]+)/,/^(?:\{)/,/^(?:\})/,/^(?:[\s]+)/,/^(?:[\n\r]+)/,/^(?:$)/],conditions:{acc_descr_multiline:{rules:[11,12],inclusive:!1},acc_descr:{rules:[9],inclusive:!1},acc_title:{rules:[7],inclusive:!1},string_kv_value:{rules:[78,79],inclusive:!1},string_kv_key:{rules:[77],inclusive:!1},string_kv:{rules:[76],inclusive:!1},string:{rules:[73,74],inclusive:!1},attribute:{rules:[68,69,70,71,72,75,80],inclusive:!1},update_layout_config:{rules:[65,66,67,68],inclusive:!1},update_rel_style:{rules:[65,66,67,68],inclusive:!1},update_el_style:{rules:[65,66,67,68],inclusive:!1},rel_b:{rules:[65,66,67,68],inclusive:!1},rel_r:{rules:[65,66,67,68],inclusive:!1},rel_l:{rules:[65,66,67,68],inclusive:!1},rel_d:{rules:[65,66,67,68],inclusive:!1},rel_u:{rules:[65,66,67,68],inclusive:!1},rel_bi:{rules:[],inclusive:!1},rel:{rules:[65,66,67,68],inclusive:!1},node_r:{rules:[65,66,67,68],inclusive:!1},node_l:{rules:[65,66,67,68],inclusive:!1},node:{rules:[65,66,67,68],inclusive:!1},index:{rules:[],inclusive:!1},rel_index:{rules:[65,66,67,68],inclusive:!1},component_ext_queue:{rules:[65,66,67,68],inclusive:!1},component_ext_db:{rules:[65,66,67,68],inclusive:!1},component_ext:{rules:[65,66,67,68],inclusive:!1},component_queue:{rules:[65,66,67,68],inclusive:!1},component_db:{rules:[65,66,67,68],inclusive:!1},component:{rules:[65,66,67,68],inclusive:!1},container_boundary:{rules:[65,66,67,68],inclusive:!1},container_ext_queue:{rules:[65,66,67,68],inclusive:!1},container_ext_db:{rules:[65,66,67,68],inclusive:!1},container_ext:{rules:[65,66,67,68],inclusive:!1},container_queue:{rules:[65,66,67,68],inclusive:!1},container_db:{rules:[65,66,67,68],inclusive:!1},container:{rules:[65,66,67,68],inclusive:!1},birel:{rules:[65,66,67,68],inclusive:!1},system_boundary:{rules:[65,66,67,68],inclusive:!1},enterprise_boundary:{rules:[65,66,67,68],inclusive:!1},boundary:{rules:[65,66,67,68],inclusive:!1},system_ext_queue:{rules:[65,66,67,68],inclusive:!1},system_ext_db:{rules:[65,66,67,68],inclusive:!1},system_ext:{rules:[65,66,67,68],inclusive:!1},system_queue:{rules:[65,66,67,68],inclusive:!1},system_db:{rules:[65,66,67,68],inclusive:!1},system:{rules:[65,66,67,68],inclusive:!1},person_ext:{rules:[65,66,67,68],inclusive:!1},person:{rules:[65,66,67,68],inclusive:!1},INITIAL:{rules:[0,1,2,3,4,5,6,8,10,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,81,82,83,84,85],inclusive:!0}}};return J})();ke.lexer=ce;function re(){this.yy={}}return o(re,"Parser"),re.prototype=ke,ke.Parser=re,new re})();ob.parser=ob;oJ=ob});var eWe,tWe,Wr,ul,$n=F(()=>{"use strict";vt();eWe=o(function(e,t){for(let r of t)e.attr(r[0],r[1])},"d3Attrs"),tWe=o(function(e,t,r){let n=new Map;return r?(n.set("width","100%"),n.set("style",`max-width: ${t}px;`)):(n.set("height",e),n.set("width",t)),n},"calculateSvgSizeAttrs"),Wr=o(function(e,t,r,n){let i=tWe(t,r,n);eWe(e,i)},"configureSvgSize"),ul=o(function(e,t,r,n){let i=t.node().getBBox(),a=i.width,s=i.height;Z.info(`SVG bounds: ${a}x${s}`,i);let l=0,u=0;Z.info(`Graph bounds: ${l}x${u}`,e),l=a+r*2,u=s+r*2,Z.info(`Calculated bounds: ${l}x${u}`),Wr(t,u,l,n);let h=`${i.x-r} ${i.y-r} ${i.width+2*r} ${i.height+2*r}`;t.attr("viewBox",h)},"setupGraphViewbox")});function m8(e){return[...e.cssRules].map(t=>t.cssText).join(`
+`)}var vS,rWe,lJ,cJ,g8=F(()=>{"use strict";vt();vS={};o(m8,"cssStyleSheetToString");rWe=o((e,t,r,n)=>{let i="";return e in vS&&vS[e]?i=vS[e]({...r,svgId:n}):Z.warn(`No theme found for ${e}`),` & {
     font-family: ${r.fontFamily};
     font-size: ${r.fontSize};
     fill: ${r.textColor}
@@ -344,24 +340,27 @@
     margin: 0
    }
 
-  ${n}
+  ${i}
   .node .neo-node {
     stroke: ${r.nodeBorder};
   }
 
   [data-look="neo"].node rect, [data-look="neo"].cluster rect, [data-look="neo"].node polygon {
-    stroke: ${r.useGradient?"url("+i+"-gradient)":r.nodeBorder};
-    filter: ${r.dropShadow?r.dropShadow.replace("url(#drop-shadow)",`url(${i}-drop-shadow)`):"none"};
+    stroke: ${r.useGradient?"url("+n+"-gradient)":r.nodeBorder};
+    filter: ${r.dropShadow?r.dropShadow.replace("url(#drop-shadow)",`url(${n}-drop-shadow)`):"none"};
+  }
+  [data-look="neo"].swimlane.cluster rect {
+    filter: none;
   }
 
 
   [data-look="neo"].node path {
-    stroke: ${r.useGradient?"url("+i+"-gradient)":r.nodeBorder};
+    stroke: ${r.useGradient?"url("+n+"-gradient)":r.nodeBorder};
     stroke-width: ${r.strokeWidth??1}px;
   }
 
   [data-look="neo"].node .outer-path {
-    filter: ${r.dropShadow?r.dropShadow.replace("url(#drop-shadow)",`url(${i}-drop-shadow)`):"none"};
+    filter: ${r.dropShadow?r.dropShadow.replace("url(#drop-shadow)",`url(${n}-drop-shadow)`):"none"};
   }
 
   [data-look="neo"].node .neo-line path {
@@ -370,8 +369,8 @@
   }
 
   [data-look="neo"].node circle{
-    stroke: ${r.useGradient?"url("+i+"-gradient)":r.nodeBorder};
-    filter: ${r.dropShadow?r.dropShadow.replace("url(#drop-shadow)",`url(${i}-drop-shadow)`):"none"};
+    stroke: ${r.useGradient?"url("+n+"-gradient)":r.nodeBorder};
+    filter: ${r.dropShadow?r.dropShadow.replace("url(#drop-shadow)",`url(${n}-drop-shadow)`):"none"};
   }
 
   [data-look="neo"].node circle .state-start{
@@ -379,127 +378,127 @@
   }
 
   [data-look="neo"].icon-shape .icon {
-    fill: ${r.useGradient?"url("+i+"-gradient)":r.nodeBorder};
-    filter: ${r.dropShadow?r.dropShadow.replace("url(#drop-shadow)",`url(${i}-drop-shadow)`):"none"};
+    fill: ${r.useGradient?"url("+n+"-gradient)":r.nodeBorder};
+    filter: ${r.dropShadow?r.dropShadow.replace("url(#drop-shadow)",`url(${n}-drop-shadow)`):"none"};
   }
 
     [data-look="neo"].icon-shape .icon-neo path {
-    stroke: ${r.useGradient?"url("+i+"-gradient)":r.nodeBorder};
-    filter: ${r.dropShadow?r.dropShadow.replace("url(#drop-shadow)",`url(${i}-drop-shadow)`):"none"};
+    stroke: ${r.useGradient?"url("+n+"-gradient)":r.nodeBorder};
+    filter: ${r.dropShadow?r.dropShadow.replace("url(#drop-shadow)",`url(${n}-drop-shadow)`):"none"};
   }
 
   ${t}
-`},"getStyles"),tX=o((e,t)=>{t!==void 0&&(gk[e]=t)},"addStylesForDiagram"),rX=dOe});var wv={};xr(wv,{clear:()=>gr,getAccDescription:()=>Sr,getAccTitle:()=>kr,getDiagramTitle:()=>Er,setAccDescription:()=>wr,setAccTitle:()=>Cr,setDiagramTitle:()=>Ar});var PD,BD,FD,$D,gr,Cr,kr,wr,Sr,Ar,Er,Ci=z(()=>{"use strict";Ir();br();PD="",BD="",FD="",$D=o(e=>fr(e,Nt()),"sanitizeText"),gr=o(()=>{PD="",FD="",BD=""},"clear"),Cr=o(e=>{PD=$D(e).replace(/^\s+/g,"")},"setAccTitle"),kr=o(()=>PD,"getAccTitle"),wr=o(e=>{FD=$D(e).replace(/\n\s+/g,`
-`)},"setAccDescription"),Sr=o(()=>FD,"getAccDescription"),Ar=o(e=>{BD=$D(e)},"setDiagramTitle"),Er=o(()=>BD,"getDiagramTitle")});var iX,fOe,ge,Sv,vk,Ev,Av,pOe,yk,Kf,_v,zD,Ut=z(()=>{"use strict";Xf();St();br();Ir();Di();OD();Ci();iX=Z,fOe=Zy,ge=Nt,Sv=OC,vk=Ph,Ev=o(e=>fr(e,ge()),"sanitizeText"),Av=Io,pOe=o(()=>wv,"getCommonDb"),yk={},Kf=o((e,t,r)=>{yk[e]&&iX.warn(`Diagram with id ${e} already registered. Overwriting.`),yk[e]=t,r&&MD(e,r),tX(e,t.styles),t.injectUtils?.(iX,fOe,ge,Ev,Av,pOe(),()=>{})},"registerDiagram"),_v=o(e=>{if(e in yk)return yk[e];throw new zD(e)},"getDiagram"),zD=class extends Error{static{o(this,"DiagramNotFoundError")}constructor(t){super(`Diagram ${t} not found.`)}}});var yl,Vh,Xa,gl,hc,Dv,GD,VD,xk,bk,nX,mOe,gOe,yOe,vOe,xOe,bOe,TOe,COe,kOe,wOe,SOe,EOe,AOe,_Oe,DOe,ROe,LOe,aX,MOe,NOe,sX,IOe,OOe,POe,BOe,Wh,FOe,$Oe,zOe,GOe,VOe,Rv,WD=z(()=>{"use strict";Ut();Ir();Ci();yl=[],Vh=[""],Xa="global",gl="",hc=[{alias:"global",label:{text:"global"},type:{text:"global"},tags:null,link:null,parentBoundary:""}],Dv=[],GD="",VD=!1,xk=4,bk=2,mOe=o(function(){return nX},"getC4Type"),gOe=o(function(e){nX=fr(e,ge())},"setC4Type"),yOe=o(function(e,t,r,i,n,a,s,l,u){if(e==null||t===void 0||t===null||r===void 0||r===null||i===void 0||i===null)return;let h={},d=Dv.find(f=>f.from===t&&f.to===r);if(d?h=d:Dv.push(h),h.type=e,h.from=t,h.to=r,h.label={text:i},n==null)h.techn={text:""};else if(typeof n=="object"){let[f,p]=Object.entries(n)[0];h[f]={text:p}}else h.techn={text:n};if(a==null)h.descr={text:""};else if(typeof a=="object"){let[f,p]=Object.entries(a)[0];h[f]={text:p}}else h.descr={text:a};if(typeof s=="object"){let[f,p]=Object.entries(s)[0];h[f]=p}else h.sprite=s;if(typeof l=="object"){let[f,p]=Object.entries(l)[0];h[f]=p}else h.tags=l;if(typeof u=="object"){let[f,p]=Object.entries(u)[0];h[f]=p}else h.link=u;h.wrap=Wh()},"addRel"),vOe=o(function(e,t,r,i,n,a,s){if(t===null||r===null)return;let l={},u=yl.find(h=>h.alias===t);if(u&&t===u.alias?l=u:(l.alias=t,yl.push(l)),r==null?l.label={text:""}:l.label={text:r},i==null)l.descr={text:""};else if(typeof i=="object"){let[h,d]=Object.entries(i)[0];l[h]={text:d}}else l.descr={text:i};if(typeof n=="object"){let[h,d]=Object.entries(n)[0];l[h]=d}else l.sprite=n;if(typeof a=="object"){let[h,d]=Object.entries(a)[0];l[h]=d}else l.tags=a;if(typeof s=="object"){let[h,d]=Object.entries(s)[0];l[h]=d}else l.link=s;l.typeC4Shape={text:e},l.parentBoundary=Xa,l.wrap=Wh()},"addPersonOrSystem"),xOe=o(function(e,t,r,i,n,a,s,l){if(t===null||r===null)return;let u={},h=yl.find(d=>d.alias===t);if(h&&t===h.alias?u=h:(u.alias=t,yl.push(u)),r==null?u.label={text:""}:u.label={text:r},i==null)u.techn={text:""};else if(typeof i=="object"){let[d,f]=Object.entries(i)[0];u[d]={text:f}}else u.techn={text:i};if(n==null)u.descr={text:""};else if(typeof n=="object"){let[d,f]=Object.entries(n)[0];u[d]={text:f}}else u.descr={text:n};if(typeof a=="object"){let[d,f]=Object.entries(a)[0];u[d]=f}else u.sprite=a;if(typeof s=="object"){let[d,f]=Object.entries(s)[0];u[d]=f}else u.tags=s;if(typeof l=="object"){let[d,f]=Object.entries(l)[0];u[d]=f}else u.link=l;u.wrap=Wh(),u.typeC4Shape={text:e},u.parentBoundary=Xa},"addContainer"),bOe=o(function(e,t,r,i,n,a,s,l){if(t===null||r===null)return;let u={},h=yl.find(d=>d.alias===t);if(h&&t===h.alias?u=h:(u.alias=t,yl.push(u)),r==null?u.label={text:""}:u.label={text:r},i==null)u.techn={text:""};else if(typeof i=="object"){let[d,f]=Object.entries(i)[0];u[d]={text:f}}else u.techn={text:i};if(n==null)u.descr={text:""};else if(typeof n=="object"){let[d,f]=Object.entries(n)[0];u[d]={text:f}}else u.descr={text:n};if(typeof a=="object"){let[d,f]=Object.entries(a)[0];u[d]=f}else u.sprite=a;if(typeof s=="object"){let[d,f]=Object.entries(s)[0];u[d]=f}else u.tags=s;if(typeof l=="object"){let[d,f]=Object.entries(l)[0];u[d]=f}else u.link=l;u.wrap=Wh(),u.typeC4Shape={text:e},u.parentBoundary=Xa},"addComponent"),TOe=o(function(e,t,r,i,n){if(e===null||t===null)return;let a={},s=hc.find(l=>l.alias===e);if(s&&e===s.alias?a=s:(a.alias=e,hc.push(a)),t==null?a.label={text:""}:a.label={text:t},r==null)a.type={text:"system"};else if(typeof r=="object"){let[l,u]=Object.entries(r)[0];a[l]={text:u}}else a.type={text:r};if(typeof i=="object"){let[l,u]=Object.entries(i)[0];a[l]=u}else a.tags=i;if(typeof n=="object"){let[l,u]=Object.entries(n)[0];a[l]=u}else a.link=n;a.parentBoundary=Xa,a.wrap=Wh(),gl=Xa,Xa=e,Vh.push(gl)},"addPersonOrSystemBoundary"),COe=o(function(e,t,r,i,n){if(e===null||t===null)return;let a={},s=hc.find(l=>l.alias===e);if(s&&e===s.alias?a=s:(a.alias=e,hc.push(a)),t==null?a.label={text:""}:a.label={text:t},r==null)a.type={text:"container"};else if(typeof r=="object"){let[l,u]=Object.entries(r)[0];a[l]={text:u}}else a.type={text:r};if(typeof i=="object"){let[l,u]=Object.entries(i)[0];a[l]=u}else a.tags=i;if(typeof n=="object"){let[l,u]=Object.entries(n)[0];a[l]=u}else a.link=n;a.parentBoundary=Xa,a.wrap=Wh(),gl=Xa,Xa=e,Vh.push(gl)},"addContainerBoundary"),kOe=o(function(e,t,r,i,n,a,s,l){if(t===null||r===null)return;let u={},h=hc.find(d=>d.alias===t);if(h&&t===h.alias?u=h:(u.alias=t,hc.push(u)),r==null?u.label={text:""}:u.label={text:r},i==null)u.type={text:"node"};else if(typeof i=="object"){let[d,f]=Object.entries(i)[0];u[d]={text:f}}else u.type={text:i};if(n==null)u.descr={text:""};else if(typeof n=="object"){let[d,f]=Object.entries(n)[0];u[d]={text:f}}else u.descr={text:n};if(typeof s=="object"){let[d,f]=Object.entries(s)[0];u[d]=f}else u.tags=s;if(typeof l=="object"){let[d,f]=Object.entries(l)[0];u[d]=f}else u.link=l;u.nodeType=e,u.parentBoundary=Xa,u.wrap=Wh(),gl=Xa,Xa=t,Vh.push(gl)},"addDeploymentNode"),wOe=o(function(){Xa=gl,Vh.pop(),gl=Vh.pop(),Vh.push(gl)},"popBoundaryParseStack"),SOe=o(function(e,t,r,i,n,a,s,l,u,h,d){let f=yl.find(p=>p.alias===t);if(!(f===void 0&&(f=hc.find(p=>p.alias===t),f===void 0))){if(r!=null)if(typeof r=="object"){let[p,m]=Object.entries(r)[0];f[p]=m}else f.bgColor=r;if(i!=null)if(typeof i=="object"){let[p,m]=Object.entries(i)[0];f[p]=m}else f.fontColor=i;if(n!=null)if(typeof n=="object"){let[p,m]=Object.entries(n)[0];f[p]=m}else f.borderColor=n;if(a!=null)if(typeof a=="object"){let[p,m]=Object.entries(a)[0];f[p]=m}else f.shadowing=a;if(s!=null)if(typeof s=="object"){let[p,m]=Object.entries(s)[0];f[p]=m}else f.shape=s;if(l!=null)if(typeof l=="object"){let[p,m]=Object.entries(l)[0];f[p]=m}else f.sprite=l;if(u!=null)if(typeof u=="object"){let[p,m]=Object.entries(u)[0];f[p]=m}else f.techn=u;if(h!=null)if(typeof h=="object"){let[p,m]=Object.entries(h)[0];f[p]=m}else f.legendText=h;if(d!=null)if(typeof d=="object"){let[p,m]=Object.entries(d)[0];f[p]=m}else f.legendSprite=d}},"updateElStyle"),EOe=o(function(e,t,r,i,n,a,s){let l=Dv.find(u=>u.from===t&&u.to===r);if(l!==void 0){if(i!=null)if(typeof i=="object"){let[u,h]=Object.entries(i)[0];l[u]=h}else l.textColor=i;if(n!=null)if(typeof n=="object"){let[u,h]=Object.entries(n)[0];l[u]=h}else l.lineColor=n;if(a!=null)if(typeof a=="object"){let[u,h]=Object.entries(a)[0];l[u]=parseInt(h)}else l.offsetX=parseInt(a);if(s!=null)if(typeof s=="object"){let[u,h]=Object.entries(s)[0];l[u]=parseInt(h)}else l.offsetY=parseInt(s)}},"updateRelStyle"),AOe=o(function(e,t,r){let i=xk,n=bk;if(typeof t=="object"){let a=Object.values(t)[0];i=parseInt(a)}else i=parseInt(t);if(typeof r=="object"){let a=Object.values(r)[0];n=parseInt(a)}else n=parseInt(r);i>=1&&(xk=i),n>=1&&(bk=n)},"updateLayoutConfig"),_Oe=o(function(){return xk},"getC4ShapeInRow"),DOe=o(function(){return bk},"getC4BoundaryInRow"),ROe=o(function(){return Xa},"getCurrentBoundaryParse"),LOe=o(function(){return gl},"getParentBoundaryParse"),aX=o(function(e){return e==null?yl:yl.filter(t=>t.parentBoundary===e)},"getC4ShapeArray"),MOe=o(function(e){return yl.find(t=>t.alias===e)},"getC4Shape"),NOe=o(function(e){return Object.keys(aX(e))},"getC4ShapeKeys"),sX=o(function(e){return e==null?hc:hc.filter(t=>t.parentBoundary===e)},"getBoundaries"),IOe=sX,OOe=o(function(){return Dv},"getRels"),POe=o(function(){return GD},"getTitle"),BOe=o(function(e){VD=e},"setWrap"),Wh=o(function(){return VD},"autoWrap"),FOe=o(function(){yl=[],hc=[{alias:"global",label:{text:"global"},type:{text:"global"},tags:null,link:null,parentBoundary:""}],gl="",Xa="global",Vh=[""],Dv=[],Vh=[""],GD="",VD=!1,xk=4,bk=2},"clear"),$Oe={SOLID:0,DOTTED:1,NOTE:2,SOLID_CROSS:3,DOTTED_CROSS:4,SOLID_OPEN:5,DOTTED_OPEN:6,LOOP_START:10,LOOP_END:11,ALT_START:12,ALT_ELSE:13,ALT_END:14,OPT_START:15,OPT_END:16,ACTIVE_START:17,ACTIVE_END:18,PAR_START:19,PAR_AND:20,PAR_END:21,RECT_START:22,RECT_END:23,SOLID_POINT:24,DOTTED_POINT:25},zOe={FILLED:0,OPEN:1},GOe={LEFTOF:0,RIGHTOF:1,OVER:2},VOe=o(function(e){GD=fr(e,ge())},"setTitle"),Rv={addPersonOrSystem:vOe,addPersonOrSystemBoundary:TOe,addContainer:xOe,addContainerBoundary:COe,addComponent:bOe,addDeploymentNode:kOe,popBoundaryParseStack:wOe,addRel:yOe,updateElStyle:SOe,updateRelStyle:EOe,updateLayoutConfig:AOe,autoWrap:Wh,setWrap:BOe,getC4ShapeArray:aX,getC4Shape:MOe,getC4ShapeKeys:NOe,getBoundaries:sX,getBoundarys:IOe,getCurrentBoundaryParse:ROe,getParentBoundaryParse:LOe,getRels:OOe,getTitle:POe,getC4Type:mOe,getC4ShapeInRow:_Oe,getC4BoundaryInRow:DOe,setAccTitle:Cr,getAccTitle:kr,getAccDescription:Sr,setAccDescription:wr,getConfig:o(()=>ge().c4,"getConfig"),clear:FOe,LINETYPE:$Oe,ARROWTYPE:zOe,PLACEMENT:GOe,setTitle:VOe,setC4Type:gOe}});function Zf(e,t){return e==null||t==null?NaN:e<t?-1:e>t?1:e>=t?0:NaN}var qD=z(()=>{"use strict";o(Zf,"ascending")});function UD(e,t){return e==null||t==null?NaN:t<e?-1:t>e?1:t>=e?0:NaN}var oX=z(()=>{"use strict";o(UD,"descending")});function Qf(e){let t,r,i;e.length!==2?(t=Zf,r=o((l,u)=>Zf(e(l),u),"compare2"),i=o((l,u)=>e(l)-u,"delta")):(t=e===Zf||e===UD?e:WOe,r=e,i=e);function n(l,u,h=0,d=l.length){if(h<d){if(t(u,u)!==0)return d;do{let f=h+d>>>1;r(l[f],u)<0?h=f+1:d=f}while(h<d)}return h}o(n,"left");function a(l,u,h=0,d=l.length){if(h<d){if(t(u,u)!==0)return d;do{let f=h+d>>>1;r(l[f],u)<=0?h=f+1:d=f}while(h<d)}return h}o(a,"right");function s(l,u,h=0,d=l.length){let f=n(l,u,h,d-1);return f>h&&i(l[f-1],u)>-i(l[f],u)?f-1:f}return o(s,"center"),{left:n,center:s,right:a}}function WOe(){return 0}var HD=z(()=>{"use strict";qD();oX();o(Qf,"bisector");o(WOe,"zero")});function YD(e){return e===null?NaN:+e}var lX=z(()=>{"use strict";o(YD,"number")});var cX,uX,qOe,UOe,jD,hX=z(()=>{"use strict";qD();HD();lX();cX=Qf(Zf),uX=cX.right,qOe=cX.left,UOe=Qf(YD).center,jD=uX});function dX({_intern:e,_key:t},r){let i=t(r);return e.has(i)?e.get(i):r}function HOe({_intern:e,_key:t},r){let i=t(r);return e.has(i)?e.get(i):(e.set(i,r),r)}function YOe({_intern:e,_key:t},r){let i=t(r);return e.has(i)&&(r=e.get(i),e.delete(i)),r}function jOe(e){return e!==null&&typeof e=="object"?e.valueOf():e}var Gm,fX=z(()=>{"use strict";Gm=class extends Map{static{o(this,"InternMap")}constructor(t,r=jOe){if(super(),Object.defineProperties(this,{_intern:{value:new Map},_key:{value:r}}),t!=null)for(let[i,n]of t)this.set(i,n)}get(t){return super.get(dX(this,t))}has(t){return super.has(dX(this,t))}set(t,r){return super.set(HOe(this,t),r)}delete(t){return super.delete(YOe(this,t))}};o(dX,"intern_get");o(HOe,"intern_set");o(YOe,"intern_delete");o(jOe,"keyof")});function Tk(e,t,r){let i=(t-e)/Math.max(0,r),n=Math.floor(Math.log10(i)),a=i/Math.pow(10,n),s=a>=XOe?10:a>=KOe?5:a>=ZOe?2:1,l,u,h;return n<0?(h=Math.pow(10,-n)/s,l=Math.round(e*h),u=Math.round(t*h),l/h<e&&++l,u/h>t&&--u,h=-h):(h=Math.pow(10,n)*s,l=Math.round(e/h),u=Math.round(t/h),l*h<e&&++l,u*h>t&&--u),u<l&&.5<=r&&r<2?Tk(e,t,r*2):[l,u,h]}function Ck(e,t,r){if(t=+t,e=+e,r=+r,!(r>0))return[];if(e===t)return[e];let i=t<e,[n,a,s]=i?Tk(t,e,r):Tk(e,t,r);if(!(a>=n))return[];let l=a-n+1,u=new Array(l);if(i)if(s<0)for(let h=0;h<l;++h)u[h]=(a-h)/-s;else for(let h=0;h<l;++h)u[h]=(a-h)*s;else if(s<0)for(let h=0;h<l;++h)u[h]=(n+h)/-s;else for(let h=0;h<l;++h)u[h]=(n+h)*s;return u}function Lv(e,t,r){return t=+t,e=+e,r=+r,Tk(e,t,r)[2]}function Vm(e,t,r){t=+t,e=+e,r=+r;let i=t<e,n=i?Lv(t,e,r):Lv(e,t,r);return(i?-1:1)*(n<0?1/-n:n)}var XOe,KOe,ZOe,pX=z(()=>{"use strict";XOe=Math.sqrt(50),KOe=Math.sqrt(10),ZOe=Math.sqrt(2);o(Tk,"tickSpec");o(Ck,"ticks");o(Lv,"tickIncrement");o(Vm,"tickStep")});function kk(e,t){let r;if(t===void 0)for(let i of e)i!=null&&(r<i||r===void 0&&i>=i)&&(r=i);else{let i=-1;for(let n of e)(n=t(n,++i,e))!=null&&(r<n||r===void 0&&n>=n)&&(r=n)}return r}var mX=z(()=>{"use strict";o(kk,"max")});function wk(e,t){let r;if(t===void 0)for(let i of e)i!=null&&(r>i||r===void 0&&i>=i)&&(r=i);else{let i=-1;for(let n of e)(n=t(n,++i,e))!=null&&(r>n||r===void 0&&n>=n)&&(r=n)}return r}var gX=z(()=>{"use strict";o(wk,"min")});function Sk(e,t,r){e=+e,t=+t,r=(n=arguments.length)<2?(t=e,e=0,1):n<3?1:+r;for(var i=-1,n=Math.max(0,Math.ceil((t-e)/r))|0,a=new Array(n);++i<n;)a[i]=e+i*r;return a}var yX=z(()=>{"use strict";o(Sk,"range")});var qh=z(()=>{"use strict";hX();HD();mX();gX();yX();pX();fX()});function XD(e){return e}var vX=z(()=>{"use strict";o(XD,"default")});function QOe(e){return"translate("+e+",0)"}function JOe(e){return"translate(0,"+e+")"}function ePe(e){return t=>+e(t)}function tPe(e,t){return t=Math.max(0,e.bandwidth()-t*2)/2,e.round()&&(t=Math.round(t)),r=>+e(r)+t}function rPe(){return!this.__axis}function bX(e,t){var r=[],i=null,n=null,a=6,s=6,l=3,u=typeof window<"u"&&window.devicePixelRatio>1?0:.5,h=e===Ak||e===Ek?-1:1,d=e===Ek||e===KD?"x":"y",f=e===Ak||e===ZD?QOe:JOe;function p(m){var g=i??(t.ticks?t.ticks.apply(t,r):t.domain()),y=n??(t.tickFormat?t.tickFormat.apply(t,r):XD),v=Math.max(a,0)+l,x=t.range(),b=+x[0]+u,T=+x[x.length-1]+u,w=(t.bandwidth?tPe:ePe)(t.copy(),u),C=m.selection?m.selection():m,k=C.selectAll(".domain").data([null]),E=C.selectAll(".tick").data(g,t).order(),A=E.exit(),N=E.enter().append("g").attr("class","tick"),P=E.select("line"),I=E.select("text");k=k.merge(k.enter().insert("path",".tick").attr("class","domain").attr("stroke","currentColor")),E=E.merge(N),P=P.merge(N.append("line").attr("stroke","currentColor").attr(d+"2",h*a)),I=I.merge(N.append("text").attr("fill","currentColor").attr(d,h*v).attr("dy",e===Ak?"0em":e===ZD?"0.71em":"0.32em")),m!==C&&(k=k.transition(m),E=E.transition(m),P=P.transition(m),I=I.transition(m),A=A.transition(m).attr("opacity",xX).attr("transform",function(D){return isFinite(D=w(D))?f(D+u):this.getAttribute("transform")}),N.attr("opacity",xX).attr("transform",function(D){var _=this.parentNode.__axis;return f((_&&isFinite(_=_(D))?_:w(D))+u)})),A.remove(),k.attr("d",e===Ek||e===KD?s?"M"+h*s+","+b+"H"+u+"V"+T+"H"+h*s:"M"+u+","+b+"V"+T:s?"M"+b+","+h*s+"V"+u+"H"+T+"V"+h*s:"M"+b+","+u+"H"+T),E.attr("opacity",1).attr("transform",function(D){return f(w(D)+u)}),P.attr(d+"2",h*a),I.attr(d,h*v).text(y),C.filter(rPe).attr("fill","none").attr("font-size",10).attr("font-family","sans-serif").attr("text-anchor",e===KD?"start":e===Ek?"end":"middle"),C.each(function(){this.__axis=w})}return o(p,"axis"),p.scale=function(m){return arguments.length?(t=m,p):t},p.ticks=function(){return r=Array.from(arguments),p},p.tickArguments=function(m){return arguments.length?(r=m==null?[]:Array.from(m),p):r.slice()},p.tickValues=function(m){return arguments.length?(i=m==null?null:Array.from(m),p):i&&i.slice()},p.tickFormat=function(m){return arguments.length?(n=m,p):n},p.tickSize=function(m){return arguments.length?(a=s=+m,p):a},p.tickSizeInner=function(m){return arguments.length?(a=+m,p):a},p.tickSizeOuter=function(m){return arguments.length?(s=+m,p):s},p.tickPadding=function(m){return arguments.length?(l=+m,p):l},p.offset=function(m){return arguments.length?(u=+m,p):u},p}function QD(e){return bX(Ak,e)}function JD(e){return bX(ZD,e)}var Ak,KD,ZD,Ek,xX,TX=z(()=>{"use strict";vX();Ak=1,KD=2,ZD=3,Ek=4,xX=1e-6;o(QOe,"translateX");o(JOe,"translateY");o(ePe,"number");o(tPe,"center");o(rPe,"entering");o(bX,"axis");o(QD,"axisTop");o(JD,"axisBottom")});var CX=z(()=>{"use strict";TX()});function wX(){for(var e=0,t=arguments.length,r={},i;e<t;++e){if(!(i=arguments[e]+"")||i in r||/[\s.]/.test(i))throw new Error("illegal type: "+i);r[i]=[]}return new _k(r)}function _k(e){this._=e}function nPe(e,t){return e.trim().split(/^|\s+/).map(function(r){var i="",n=r.indexOf(".");if(n>=0&&(i=r.slice(n+1),r=r.slice(0,n)),r&&!t.hasOwnProperty(r))throw new Error("unknown type: "+r);return{type:r,name:i}})}function aPe(e,t){for(var r=0,i=e.length,n;r<i;++r)if((n=e[r]).name===t)return n.value}function kX(e,t,r){for(var i=0,n=e.length;i<n;++i)if(e[i].name===t){e[i]=iPe,e=e.slice(0,i).concat(e.slice(i+1));break}return r!=null&&e.push({name:t,value:r}),e}var iPe,e8,SX=z(()=>{"use strict";iPe={value:o(()=>{},"value")};o(wX,"dispatch");o(_k,"Dispatch");o(nPe,"parseTypenames");_k.prototype=wX.prototype={constructor:_k,on:o(function(e,t){var r=this._,i=nPe(e+"",r),n,a=-1,s=i.length;if(arguments.length<2){for(;++a<s;)if((n=(e=i[a]).type)&&(n=aPe(r[n],e.name)))return n;return}if(t!=null&&typeof t!="function")throw new Error("invalid callback: "+t);for(;++a<s;)if(n=(e=i[a]).type)r[n]=kX(r[n],e.name,t);else if(t==null)for(n in r)r[n]=kX(r[n],e.name,null);return this},"on"),copy:o(function(){var e={},t=this._;for(var r in t)e[r]=t[r].slice();return new _k(e)},"copy"),call:o(function(e,t){if((n=arguments.length-2)>0)for(var r=new Array(n),i=0,n,a;i<n;++i)r[i]=arguments[i+2];if(!this._.hasOwnProperty(e))throw new Error("unknown type: "+e);for(a=this._[e],i=0,n=a.length;i<n;++i)a[i].value.apply(t,r)},"call"),apply:o(function(e,t,r){if(!this._.hasOwnProperty(e))throw new Error("unknown type: "+e);for(var i=this._[e],n=0,a=i.length;n<a;++n)i[n].value.apply(t,r)},"apply")};o(aPe,"get");o(kX,"set");e8=wX});var t8=z(()=>{"use strict";SX()});var Dk,r8,i8=z(()=>{"use strict";Dk="http://www.w3.org/1999/xhtml",r8={svg:"http://www.w3.org/2000/svg",xhtml:Dk,xlink:"http://www.w3.org/1999/xlink",xml:"http://www.w3.org/XML/1998/namespace",xmlns:"http://www.w3.org/2000/xmlns/"}});function dc(e){var t=e+="",r=t.indexOf(":");return r>=0&&(t=e.slice(0,r))!=="xmlns"&&(e=e.slice(r+1)),r8.hasOwnProperty(t)?{space:r8[t],local:e}:e}var Rk=z(()=>{"use strict";i8();o(dc,"default")});function sPe(e){return function(){var t=this.ownerDocument,r=this.namespaceURI;return r===Dk&&t.documentElement.namespaceURI===Dk?t.createElement(e):t.createElementNS(r,e)}}function oPe(e){return function(){return this.ownerDocument.createElementNS(e.space,e.local)}}function Mv(e){var t=dc(e);return(t.local?oPe:sPe)(t)}var n8=z(()=>{"use strict";Rk();i8();o(sPe,"creatorInherit");o(oPe,"creatorFixed");o(Mv,"default")});function lPe(){}function Uh(e){return e==null?lPe:function(){return this.querySelector(e)}}var Lk=z(()=>{"use strict";o(lPe,"none");o(Uh,"default")});function a8(e){typeof e!="function"&&(e=Uh(e));for(var t=this._groups,r=t.length,i=new Array(r),n=0;n<r;++n)for(var a=t[n],s=a.length,l=i[n]=new Array(s),u,h,d=0;d<s;++d)(u=a[d])&&(h=e.call(u,u.__data__,d,a))&&("__data__"in u&&(h.__data__=u.__data__),l[d]=h);return new sn(i,this._parents)}var EX=z(()=>{"use strict";vl();Lk();o(a8,"default")});function s8(e){return e==null?[]:Array.isArray(e)?e:Array.from(e)}var AX=z(()=>{"use strict";o(s8,"array")});function cPe(){return[]}function Wm(e){return e==null?cPe:function(){return this.querySelectorAll(e)}}var o8=z(()=>{"use strict";o(cPe,"empty");o(Wm,"default")});function uPe(e){return function(){return s8(e.apply(this,arguments))}}function l8(e){typeof e=="function"?e=uPe(e):e=Wm(e);for(var t=this._groups,r=t.length,i=[],n=[],a=0;a<r;++a)for(var s=t[a],l=s.length,u,h=0;h<l;++h)(u=s[h])&&(i.push(e.call(u,u.__data__,h,s)),n.push(u));return new sn(i,n)}var _X=z(()=>{"use strict";vl();AX();o8();o(uPe,"arrayAll");o(l8,"default")});function qm(e){return function(){return this.matches(e)}}function Mk(e){return function(t){return t.matches(e)}}var Nv=z(()=>{"use strict";o(qm,"default");o(Mk,"childMatcher")});function dPe(e){return function(){return hPe.call(this.children,e)}}function fPe(){return this.firstElementChild}function c8(e){return this.select(e==null?fPe:dPe(typeof e=="function"?e:Mk(e)))}var hPe,DX=z(()=>{"use strict";Nv();hPe=Array.prototype.find;o(dPe,"childFind");o(fPe,"childFirst");o(c8,"default")});function mPe(){return Array.from(this.children)}function gPe(e){return function(){return pPe.call(this.children,e)}}function u8(e){return this.selectAll(e==null?mPe:gPe(typeof e=="function"?e:Mk(e)))}var pPe,RX=z(()=>{"use strict";Nv();pPe=Array.prototype.filter;o(mPe,"children");o(gPe,"childrenFilter");o(u8,"default")});function h8(e){typeof e!="function"&&(e=qm(e));for(var t=this._groups,r=t.length,i=new Array(r),n=0;n<r;++n)for(var a=t[n],s=a.length,l=i[n]=[],u,h=0;h<s;++h)(u=a[h])&&e.call(u,u.__data__,h,a)&&l.push(u);return new sn(i,this._parents)}var LX=z(()=>{"use strict";vl();Nv();o(h8,"default")});function Iv(e){return new Array(e.length)}var d8=z(()=>{"use strict";o(Iv,"default")});function f8(){return new sn(this._enter||this._groups.map(Iv),this._parents)}function Ov(e,t){this.ownerDocument=e.ownerDocument,this.namespaceURI=e.namespaceURI,this._next=null,this._parent=e,this.__data__=t}var p8=z(()=>{"use strict";d8();vl();o(f8,"default");o(Ov,"EnterNode");Ov.prototype={constructor:Ov,appendChild:o(function(e){return this._parent.insertBefore(e,this._next)},"appendChild"),insertBefore:o(function(e,t){return this._parent.insertBefore(e,t)},"insertBefore"),querySelector:o(function(e){return this._parent.querySelector(e)},"querySelector"),querySelectorAll:o(function(e){return this._parent.querySelectorAll(e)},"querySelectorAll")}});function m8(e){return function(){return e}}var MX=z(()=>{"use strict";o(m8,"default")});function yPe(e,t,r,i,n,a){for(var s=0,l,u=t.length,h=a.length;s<h;++s)(l=t[s])?(l.__data__=a[s],i[s]=l):r[s]=new Ov(e,a[s]);for(;s<u;++s)(l=t[s])&&(n[s]=l)}function vPe(e,t,r,i,n,a,s){var l,u,h=new Map,d=t.length,f=a.length,p=new Array(d),m;for(l=0;l<d;++l)(u=t[l])&&(p[l]=m=s.call(u,u.__data__,l,t)+"",h.has(m)?n[l]=u:h.set(m,u));for(l=0;l<f;++l)m=s.call(e,a[l],l,a)+"",(u=h.get(m))?(i[l]=u,u.__data__=a[l],h.delete(m)):r[l]=new Ov(e,a[l]);for(l=0;l<d;++l)(u=t[l])&&h.get(p[l])===u&&(n[l]=u)}function xPe(e){return e.__data__}function g8(e,t){if(!arguments.length)return Array.from(this,xPe);var r=t?vPe:yPe,i=this._parents,n=this._groups;typeof e!="function"&&(e=m8(e));for(var a=n.length,s=new Array(a),l=new Array(a),u=new Array(a),h=0;h<a;++h){var d=i[h],f=n[h],p=f.length,m=bPe(e.call(d,d&&d.__data__,h,i)),g=m.length,y=l[h]=new Array(g),v=s[h]=new Array(g),x=u[h]=new Array(p);r(d,f,y,v,x,m,t);for(var b=0,T=0,w,C;b<g;++b)if(w=y[b]){for(b>=T&&(T=b+1);!(C=v[T])&&++T<g;);w._next=C||null}}return s=new sn(s,i),s._enter=l,s._exit=u,s}function bPe(e){return typeof e=="object"&&"length"in e?e:Array.from(e)}var NX=z(()=>{"use strict";vl();p8();MX();o(yPe,"bindIndex");o(vPe,"bindKey");o(xPe,"datum");o(g8,"default");o(bPe,"arraylike")});function y8(){return new sn(this._exit||this._groups.map(Iv),this._parents)}var IX=z(()=>{"use strict";d8();vl();o(y8,"default")});function v8(e,t,r){var i=this.enter(),n=this,a=this.exit();return typeof e=="function"?(i=e(i),i&&(i=i.selection())):i=i.append(e+""),t!=null&&(n=t(n),n&&(n=n.selection())),r==null?a.remove():r(a),i&&n?i.merge(n).order():n}var OX=z(()=>{"use strict";o(v8,"default")});function x8(e){for(var t=e.selection?e.selection():e,r=this._groups,i=t._groups,n=r.length,a=i.length,s=Math.min(n,a),l=new Array(n),u=0;u<s;++u)for(var h=r[u],d=i[u],f=h.length,p=l[u]=new Array(f),m,g=0;g<f;++g)(m=h[g]||d[g])&&(p[g]=m);for(;u<n;++u)l[u]=r[u];return new sn(l,this._parents)}var PX=z(()=>{"use strict";vl();o(x8,"default")});function b8(){for(var e=this._groups,t=-1,r=e.length;++t<r;)for(var i=e[t],n=i.length-1,a=i[n],s;--n>=0;)(s=i[n])&&(a&&s.compareDocumentPosition(a)^4&&a.parentNode.insertBefore(s,a),a=s);return this}var BX=z(()=>{"use strict";o(b8,"default")});function T8(e){e||(e=TPe);function t(f,p){return f&&p?e(f.__data__,p.__data__):!f-!p}o(t,"compareNode");for(var r=this._groups,i=r.length,n=new Array(i),a=0;a<i;++a){for(var s=r[a],l=s.length,u=n[a]=new Array(l),h,d=0;d<l;++d)(h=s[d])&&(u[d]=h);u.sort(t)}return new sn(n,this._parents).order()}function TPe(e,t){return e<t?-1:e>t?1:e>=t?0:NaN}var FX=z(()=>{"use strict";vl();o(T8,"default");o(TPe,"ascending")});function C8(){var e=arguments[0];return arguments[0]=this,e.apply(null,arguments),this}var $X=z(()=>{"use strict";o(C8,"default")});function k8(){return Array.from(this)}var zX=z(()=>{"use strict";o(k8,"default")});function w8(){for(var e=this._groups,t=0,r=e.length;t<r;++t)for(var i=e[t],n=0,a=i.length;n<a;++n){var s=i[n];if(s)return s}return null}var GX=z(()=>{"use strict";o(w8,"default")});function S8(){let e=0;for(let t of this)++e;return e}var VX=z(()=>{"use strict";o(S8,"default")});function E8(){return!this.node()}var WX=z(()=>{"use strict";o(E8,"default")});function A8(e){for(var t=this._groups,r=0,i=t.length;r<i;++r)for(var n=t[r],a=0,s=n.length,l;a<s;++a)(l=n[a])&&e.call(l,l.__data__,a,n);return this}var qX=z(()=>{"use strict";o(A8,"default")});function CPe(e){return function(){this.removeAttribute(e)}}function kPe(e){return function(){this.removeAttributeNS(e.space,e.local)}}function wPe(e,t){return function(){this.setAttribute(e,t)}}function SPe(e,t){return function(){this.setAttributeNS(e.space,e.local,t)}}function EPe(e,t){return function(){var r=t.apply(this,arguments);r==null?this.removeAttribute(e):this.setAttribute(e,r)}}function APe(e,t){return function(){var r=t.apply(this,arguments);r==null?this.removeAttributeNS(e.space,e.local):this.setAttributeNS(e.space,e.local,r)}}function _8(e,t){var r=dc(e);if(arguments.length<2){var i=this.node();return r.local?i.getAttributeNS(r.space,r.local):i.getAttribute(r)}return this.each((t==null?r.local?kPe:CPe:typeof t=="function"?r.local?APe:EPe:r.local?SPe:wPe)(r,t))}var UX=z(()=>{"use strict";Rk();o(CPe,"attrRemove");o(kPe,"attrRemoveNS");o(wPe,"attrConstant");o(SPe,"attrConstantNS");o(EPe,"attrFunction");o(APe,"attrFunctionNS");o(_8,"default")});function Pv(e){return e.ownerDocument&&e.ownerDocument.defaultView||e.document&&e||e.defaultView}var D8=z(()=>{"use strict";o(Pv,"default")});function _Pe(e){return function(){this.style.removeProperty(e)}}function DPe(e,t,r){return function(){this.style.setProperty(e,t,r)}}function RPe(e,t,r){return function(){var i=t.apply(this,arguments);i==null?this.style.removeProperty(e):this.style.setProperty(e,i,r)}}function R8(e,t,r){return arguments.length>1?this.each((t==null?_Pe:typeof t=="function"?RPe:DPe)(e,t,r??"")):Hh(this.node(),e)}function Hh(e,t){return e.style.getPropertyValue(t)||Pv(e).getComputedStyle(e,null).getPropertyValue(t)}var L8=z(()=>{"use strict";D8();o(_Pe,"styleRemove");o(DPe,"styleConstant");o(RPe,"styleFunction");o(R8,"default");o(Hh,"styleValue")});function LPe(e){return function(){delete this[e]}}function MPe(e,t){return function(){this[e]=t}}function NPe(e,t){return function(){var r=t.apply(this,arguments);r==null?delete this[e]:this[e]=r}}function M8(e,t){return arguments.length>1?this.each((t==null?LPe:typeof t=="function"?NPe:MPe)(e,t)):this.node()[e]}var HX=z(()=>{"use strict";o(LPe,"propertyRemove");o(MPe,"propertyConstant");o(NPe,"propertyFunction");o(M8,"default")});function YX(e){return e.trim().split(/^|\s+/)}function N8(e){return e.classList||new jX(e)}function jX(e){this._node=e,this._names=YX(e.getAttribute("class")||"")}function XX(e,t){for(var r=N8(e),i=-1,n=t.length;++i<n;)r.add(t[i])}function KX(e,t){for(var r=N8(e),i=-1,n=t.length;++i<n;)r.remove(t[i])}function IPe(e){return function(){XX(this,e)}}function OPe(e){return function(){KX(this,e)}}function PPe(e,t){return function(){(t.apply(this,arguments)?XX:KX)(this,e)}}function I8(e,t){var r=YX(e+"");if(arguments.length<2){for(var i=N8(this.node()),n=-1,a=r.length;++n<a;)if(!i.contains(r[n]))return!1;return!0}return this.each((typeof t=="function"?PPe:t?IPe:OPe)(r,t))}var ZX=z(()=>{"use strict";o(YX,"classArray");o(N8,"classList");o(jX,"ClassList");jX.prototype={add:o(function(e){var t=this._names.indexOf(e);t<0&&(this._names.push(e),this._node.setAttribute("class",this._names.join(" ")))},"add"),remove:o(function(e){var t=this._names.indexOf(e);t>=0&&(this._names.splice(t,1),this._node.setAttribute("class",this._names.join(" ")))},"remove"),contains:o(function(e){return this._names.indexOf(e)>=0},"contains")};o(XX,"classedAdd");o(KX,"classedRemove");o(IPe,"classedTrue");o(OPe,"classedFalse");o(PPe,"classedFunction");o(I8,"default")});function BPe(){this.textContent=""}function FPe(e){return function(){this.textContent=e}}function $Pe(e){return function(){var t=e.apply(this,arguments);this.textContent=t??""}}function O8(e){return arguments.length?this.each(e==null?BPe:(typeof e=="function"?$Pe:FPe)(e)):this.node().textContent}var QX=z(()=>{"use strict";o(BPe,"textRemove");o(FPe,"textConstant");o($Pe,"textFunction");o(O8,"default")});function zPe(){this.innerHTML=""}function GPe(e){return function(){this.innerHTML=e}}function VPe(e){return function(){var t=e.apply(this,arguments);this.innerHTML=t??""}}function P8(e){return arguments.length?this.each(e==null?zPe:(typeof e=="function"?VPe:GPe)(e)):this.node().innerHTML}var JX=z(()=>{"use strict";o(zPe,"htmlRemove");o(GPe,"htmlConstant");o(VPe,"htmlFunction");o(P8,"default")});function WPe(){this.nextSibling&&this.parentNode.appendChild(this)}function B8(){return this.each(WPe)}var eK=z(()=>{"use strict";o(WPe,"raise");o(B8,"default")});function qPe(){this.previousSibling&&this.parentNode.insertBefore(this,this.parentNode.firstChild)}function F8(){return this.each(qPe)}var tK=z(()=>{"use strict";o(qPe,"lower");o(F8,"default")});function $8(e){var t=typeof e=="function"?e:Mv(e);return this.select(function(){return this.appendChild(t.apply(this,arguments))})}var rK=z(()=>{"use strict";n8();o($8,"default")});function UPe(){return null}function z8(e,t){var r=typeof e=="function"?e:Mv(e),i=t==null?UPe:typeof t=="function"?t:Uh(t);return this.select(function(){return this.insertBefore(r.apply(this,arguments),i.apply(this,arguments)||null)})}var iK=z(()=>{"use strict";n8();Lk();o(UPe,"constantNull");o(z8,"default")});function HPe(){var e=this.parentNode;e&&e.removeChild(this)}function G8(){return this.each(HPe)}var nK=z(()=>{"use strict";o(HPe,"remove");o(G8,"default")});function YPe(){var e=this.cloneNode(!1),t=this.parentNode;return t?t.insertBefore(e,this.nextSibling):e}function jPe(){var e=this.cloneNode(!0),t=this.parentNode;return t?t.insertBefore(e,this.nextSibling):e}function V8(e){return this.select(e?jPe:YPe)}var aK=z(()=>{"use strict";o(YPe,"selection_cloneShallow");o(jPe,"selection_cloneDeep");o(V8,"default")});function W8(e){return arguments.length?this.property("__data__",e):this.node().__data__}var sK=z(()=>{"use strict";o(W8,"default")});function XPe(e){return function(t){e.call(this,t,this.__data__)}}function KPe(e){return e.trim().split(/^|\s+/).map(function(t){var r="",i=t.indexOf(".");return i>=0&&(r=t.slice(i+1),t=t.slice(0,i)),{type:t,name:r}})}function ZPe(e){return function(){var t=this.__on;if(t){for(var r=0,i=-1,n=t.length,a;r<n;++r)a=t[r],(!e.type||a.type===e.type)&&a.name===e.name?this.removeEventListener(a.type,a.listener,a.options):t[++i]=a;++i?t.length=i:delete this.__on}}}function QPe(e,t,r){return function(){var i=this.__on,n,a=XPe(t);if(i){for(var s=0,l=i.length;s<l;++s)if((n=i[s]).type===e.type&&n.name===e.name){this.removeEventListener(n.type,n.listener,n.options),this.addEventListener(n.type,n.listener=a,n.options=r),n.value=t;return}}this.addEventListener(e.type,a,r),n={type:e.type,name:e.name,value:t,listener:a,options:r},i?i.push(n):this.__on=[n]}}function q8(e,t,r){var i=KPe(e+""),n,a=i.length,s;if(arguments.length<2){var l=this.node().__on;if(l){for(var u=0,h=l.length,d;u<h;++u)for(n=0,d=l[u];n<a;++n)if((s=i[n]).type===d.type&&s.name===d.name)return d.value}return}for(l=t?QPe:ZPe,n=0;n<a;++n)this.each(l(i[n],t,r));return this}var oK=z(()=>{"use strict";o(XPe,"contextListener");o(KPe,"parseTypenames");o(ZPe,"onRemove");o(QPe,"onAdd");o(q8,"default")});function lK(e,t,r){var i=Pv(e),n=i.CustomEvent;typeof n=="function"?n=new n(t,r):(n=i.document.createEvent("Event"),r?(n.initEvent(t,r.bubbles,r.cancelable),n.detail=r.detail):n.initEvent(t,!1,!1)),e.dispatchEvent(n)}function JPe(e,t){return function(){return lK(this,e,t)}}function eBe(e,t){return function(){return lK(this,e,t.apply(this,arguments))}}function U8(e,t){return this.each((typeof t=="function"?eBe:JPe)(e,t))}var cK=z(()=>{"use strict";D8();o(lK,"dispatchEvent");o(JPe,"dispatchConstant");o(eBe,"dispatchFunction");o(U8,"default")});function*H8(){for(var e=this._groups,t=0,r=e.length;t<r;++t)for(var i=e[t],n=0,a=i.length,s;n<a;++n)(s=i[n])&&(yield s)}var uK=z(()=>{"use strict";o(H8,"default")});function sn(e,t){this._groups=e,this._parents=t}function hK(){return new sn([[document.documentElement]],Y8)}function tBe(){return this}var Y8,wu,vl=z(()=>{"use strict";EX();_X();DX();RX();LX();NX();p8();IX();OX();PX();BX();FX();$X();zX();GX();VX();WX();qX();UX();L8();HX();ZX();QX();JX();eK();tK();rK();iK();nK();aK();sK();oK();cK();uK();Y8=[null];o(sn,"Selection");o(hK,"selection");o(tBe,"selection_selection");sn.prototype=hK.prototype={constructor:sn,select:a8,selectAll:l8,selectChild:c8,selectChildren:u8,filter:h8,data:g8,enter:f8,exit:y8,join:v8,merge:x8,selection:tBe,order:b8,sort:T8,call:C8,nodes:k8,node:w8,size:S8,empty:E8,each:A8,attr:_8,style:R8,property:M8,classed:I8,text:O8,html:P8,raise:B8,lower:F8,append:$8,insert:z8,remove:G8,clone:V8,datum:W8,on:q8,dispatch:U8,[Symbol.iterator]:H8};wu=hK});function Je(e){return typeof e=="string"?new sn([[document.querySelector(e)]],[document.documentElement]):new sn([[e]],Y8)}var dK=z(()=>{"use strict";vl();o(Je,"default")});var xl=z(()=>{"use strict";Nv();Rk();dK();vl();Lk();o8();L8()});var fK=z(()=>{"use strict"});function Yh(e,t,r){e.prototype=t.prototype=r,r.constructor=e}function Um(e,t){var r=Object.create(e.prototype);for(var i in t)r[i]=t[i];return r}var j8=z(()=>{"use strict";o(Yh,"default");o(Um,"extend")});function jh(){}function mK(){return this.rgb().formatHex()}function cBe(){return this.rgb().formatHex8()}function uBe(){return CK(this).formatHsl()}function gK(){return this.rgb().formatRgb()}function Tl(e){var t,r;return e=(e+"").trim().toLowerCase(),(t=rBe.exec(e))?(r=t[1].length,t=parseInt(t[1],16),r===6?yK(t):r===3?new ua(t>>8&15|t>>4&240,t>>4&15|t&240,(t&15)<<4|t&15,1):r===8?Nk(t>>24&255,t>>16&255,t>>8&255,(t&255)/255):r===4?Nk(t>>12&15|t>>8&240,t>>8&15|t>>4&240,t>>4&15|t&240,((t&15)<<4|t&15)/255):null):(t=iBe.exec(e))?new ua(t[1],t[2],t[3],1):(t=nBe.exec(e))?new ua(t[1]*255/100,t[2]*255/100,t[3]*255/100,1):(t=aBe.exec(e))?Nk(t[1],t[2],t[3],t[4]):(t=sBe.exec(e))?Nk(t[1]*255/100,t[2]*255/100,t[3]*255/100,t[4]):(t=oBe.exec(e))?bK(t[1],t[2]/100,t[3]/100,1):(t=lBe.exec(e))?bK(t[1],t[2]/100,t[3]/100,t[4]):pK.hasOwnProperty(e)?yK(pK[e]):e==="transparent"?new ua(NaN,NaN,NaN,0):null}function yK(e){return new ua(e>>16&255,e>>8&255,e&255,1)}function Nk(e,t,r,i){return i<=0&&(e=t=r=NaN),new ua(e,t,r,i)}function K8(e){return e instanceof jh||(e=Tl(e)),e?(e=e.rgb(),new ua(e.r,e.g,e.b,e.opacity)):new ua}function Ym(e,t,r,i){return arguments.length===1?K8(e):new ua(e,t,r,i??1)}function ua(e,t,r,i){this.r=+e,this.g=+t,this.b=+r,this.opacity=+i}function vK(){return`#${Jf(this.r)}${Jf(this.g)}${Jf(this.b)}`}function hBe(){return`#${Jf(this.r)}${Jf(this.g)}${Jf(this.b)}${Jf((isNaN(this.opacity)?1:this.opacity)*255)}`}function xK(){let e=Pk(this.opacity);return`${e===1?"rgb(":"rgba("}${ep(this.r)}, ${ep(this.g)}, ${ep(this.b)}${e===1?")":`, ${e})`}`}function Pk(e){return isNaN(e)?1:Math.max(0,Math.min(1,e))}function ep(e){return Math.max(0,Math.min(255,Math.round(e)||0))}function Jf(e){return e=ep(e),(e<16?"0":"")+e.toString(16)}function bK(e,t,r,i){return i<=0?e=t=r=NaN:r<=0||r>=1?e=t=NaN:t<=0&&(e=NaN),new bl(e,t,r,i)}function CK(e){if(e instanceof bl)return new bl(e.h,e.s,e.l,e.opacity);if(e instanceof jh||(e=Tl(e)),!e)return new bl;if(e instanceof bl)return e;e=e.rgb();var t=e.r/255,r=e.g/255,i=e.b/255,n=Math.min(t,r,i),a=Math.max(t,r,i),s=NaN,l=a-n,u=(a+n)/2;return l?(t===a?s=(r-i)/l+(r<i)*6:r===a?s=(i-t)/l+2:s=(t-r)/l+4,l/=u<.5?a+n:2-a-n,s*=60):l=u>0&&u<1?0:s,new bl(s,l,u,e.opacity)}function kK(e,t,r,i){return arguments.length===1?CK(e):new bl(e,t,r,i??1)}function bl(e,t,r,i){this.h=+e,this.s=+t,this.l=+r,this.opacity=+i}function TK(e){return e=(e||0)%360,e<0?e+360:e}function Ik(e){return Math.max(0,Math.min(1,e||0))}function X8(e,t,r){return(e<60?t+(r-t)*e/60:e<180?r:e<240?t+(r-t)*(240-e)/60:t)*255}var Bv,Ok,Hm,Fv,fc,rBe,iBe,nBe,aBe,sBe,oBe,lBe,pK,Z8=z(()=>{"use strict";j8();o(jh,"Color");Bv=.7,Ok=1/Bv,Hm="\\s*([+-]?\\d+)\\s*",Fv="\\s*([+-]?(?:\\d*\\.)?\\d+(?:[eE][+-]?\\d+)?)\\s*",fc="\\s*([+-]?(?:\\d*\\.)?\\d+(?:[eE][+-]?\\d+)?)%\\s*",rBe=/^#([0-9a-f]{3,8})$/,iBe=new RegExp(`^rgb\\(${Hm},${Hm},${Hm}\\)$`),nBe=new RegExp(`^rgb\\(${fc},${fc},${fc}\\)$`),aBe=new RegExp(`^rgba\\(${Hm},${Hm},${Hm},${Fv}\\)$`),sBe=new RegExp(`^rgba\\(${fc},${fc},${fc},${Fv}\\)$`),oBe=new RegExp(`^hsl\\(${Fv},${fc},${fc}\\)$`),lBe=new RegExp(`^hsla\\(${Fv},${fc},${fc},${Fv}\\)$`),pK={aliceblue:15792383,antiquewhite:16444375,aqua:65535,aquamarine:8388564,azure:15794175,beige:16119260,bisque:16770244,black:0,blanchedalmond:16772045,blue:255,blueviolet:9055202,brown:10824234,burlywood:14596231,cadetblue:6266528,chartreuse:8388352,chocolate:13789470,coral:16744272,cornflowerblue:6591981,cornsilk:16775388,crimson:14423100,cyan:65535,darkblue:139,darkcyan:35723,darkgoldenrod:12092939,darkgray:11119017,darkgreen:25600,darkgrey:11119017,darkkhaki:12433259,darkmagenta:9109643,darkolivegreen:5597999,darkorange:16747520,darkorchid:10040012,darkred:9109504,darksalmon:15308410,darkseagreen:9419919,darkslateblue:4734347,darkslategray:3100495,darkslategrey:3100495,darkturquoise:52945,darkviolet:9699539,deeppink:16716947,deepskyblue:49151,dimgray:6908265,dimgrey:6908265,dodgerblue:2003199,firebrick:11674146,floralwhite:16775920,forestgreen:2263842,fuchsia:16711935,gainsboro:14474460,ghostwhite:16316671,gold:16766720,goldenrod:14329120,gray:8421504,green:32768,greenyellow:11403055,grey:8421504,honeydew:15794160,hotpink:16738740,indianred:13458524,indigo:4915330,ivory:16777200,khaki:15787660,lavender:15132410,lavenderblush:16773365,lawngreen:8190976,lemonchiffon:16775885,lightblue:11393254,lightcoral:15761536,lightcyan:14745599,lightgoldenrodyellow:16448210,lightgray:13882323,lightgreen:9498256,lightgrey:13882323,lightpink:16758465,lightsalmon:16752762,lightseagreen:2142890,lightskyblue:8900346,lightslategray:7833753,lightslategrey:7833753,lightsteelblue:11584734,lightyellow:16777184,lime:65280,limegreen:3329330,linen:16445670,magenta:16711935,maroon:8388608,mediumaquamarine:6737322,mediumblue:205,mediumorchid:12211667,mediumpurple:9662683,mediumseagreen:3978097,mediumslateblue:8087790,mediumspringgreen:64154,mediumturquoise:4772300,mediumvioletred:13047173,midnightblue:1644912,mintcream:16121850,mistyrose:16770273,moccasin:16770229,navajowhite:16768685,navy:128,oldlace:16643558,olive:8421376,olivedrab:7048739,orange:16753920,orangered:16729344,orchid:14315734,palegoldenrod:15657130,palegreen:10025880,paleturquoise:11529966,palevioletred:14381203,papayawhip:16773077,peachpuff:16767673,peru:13468991,pink:16761035,plum:14524637,powderblue:11591910,purple:8388736,rebeccapurple:6697881,red:16711680,rosybrown:12357519,royalblue:4286945,saddlebrown:9127187,salmon:16416882,sandybrown:16032864,seagreen:3050327,seashell:16774638,sienna:10506797,silver:12632256,skyblue:8900331,slateblue:6970061,slategray:7372944,slategrey:7372944,snow:16775930,springgreen:65407,steelblue:4620980,tan:13808780,teal:32896,thistle:14204888,tomato:16737095,turquoise:4251856,violet:15631086,wheat:16113331,white:16777215,whitesmoke:16119285,yellow:16776960,yellowgreen:10145074};Yh(jh,Tl,{copy(e){return Object.assign(new this.constructor,this,e)},displayable(){return this.rgb().displayable()},hex:mK,formatHex:mK,formatHex8:cBe,formatHsl:uBe,formatRgb:gK,toString:gK});o(mK,"color_formatHex");o(cBe,"color_formatHex8");o(uBe,"color_formatHsl");o(gK,"color_formatRgb");o(Tl,"color");o(yK,"rgbn");o(Nk,"rgba");o(K8,"rgbConvert");o(Ym,"rgb");o(ua,"Rgb");Yh(ua,Ym,Um(jh,{brighter(e){return e=e==null?Ok:Math.pow(Ok,e),new ua(this.r*e,this.g*e,this.b*e,this.opacity)},darker(e){return e=e==null?Bv:Math.pow(Bv,e),new ua(this.r*e,this.g*e,this.b*e,this.opacity)},rgb(){return this},clamp(){return new ua(ep(this.r),ep(this.g),ep(this.b),Pk(this.opacity))},displayable(){return-.5<=this.r&&this.r<255.5&&-.5<=this.g&&this.g<255.5&&-.5<=this.b&&this.b<255.5&&0<=this.opacity&&this.opacity<=1},hex:vK,formatHex:vK,formatHex8:hBe,formatRgb:xK,toString:xK}));o(vK,"rgb_formatHex");o(hBe,"rgb_formatHex8");o(xK,"rgb_formatRgb");o(Pk,"clampa");o(ep,"clampi");o(Jf,"hex");o(bK,"hsla");o(CK,"hslConvert");o(kK,"hsl");o(bl,"Hsl");Yh(bl,kK,Um(jh,{brighter(e){return e=e==null?Ok:Math.pow(Ok,e),new bl(this.h,this.s,this.l*e,this.opacity)},darker(e){return e=e==null?Bv:Math.pow(Bv,e),new bl(this.h,this.s,this.l*e,this.opacity)},rgb(){var e=this.h%360+(this.h<0)*360,t=isNaN(e)||isNaN(this.s)?0:this.s,r=this.l,i=r+(r<.5?r:1-r)*t,n=2*r-i;return new ua(X8(e>=240?e-240:e+120,n,i),X8(e,n,i),X8(e<120?e+240:e-120,n,i),this.opacity)},clamp(){return new bl(TK(this.h),Ik(this.s),Ik(this.l),Pk(this.opacity))},displayable(){return(0<=this.s&&this.s<=1||isNaN(this.s))&&0<=this.l&&this.l<=1&&0<=this.opacity&&this.opacity<=1},formatHsl(){let e=Pk(this.opacity);return`${e===1?"hsl(":"hsla("}${TK(this.h)}, ${Ik(this.s)*100}%, ${Ik(this.l)*100}%${e===1?")":`, ${e})`}`}}));o(TK,"clamph");o(Ik,"clampt");o(X8,"hsl2rgb")});var wK,SK,EK=z(()=>{"use strict";wK=Math.PI/180,SK=180/Math.PI});function MK(e){if(e instanceof pc)return new pc(e.l,e.a,e.b,e.opacity);if(e instanceof Su)return NK(e);e instanceof ua||(e=K8(e));var t=tR(e.r),r=tR(e.g),i=tR(e.b),n=Q8((.2225045*t+.7168786*r+.0606169*i)/_K),a,s;return t===r&&r===i?a=s=n:(a=Q8((.4360747*t+.3850649*r+.1430804*i)/AK),s=Q8((.0139322*t+.0971045*r+.7141733*i)/DK)),new pc(116*n-16,500*(a-n),200*(n-s),e.opacity)}function rR(e,t,r,i){return arguments.length===1?MK(e):new pc(e,t,r,i??1)}function pc(e,t,r,i){this.l=+e,this.a=+t,this.b=+r,this.opacity=+i}function Q8(e){return e>dBe?Math.pow(e,1/3):e/LK+RK}function J8(e){return e>jm?e*e*e:LK*(e-RK)}function eR(e){return 255*(e<=.0031308?12.92*e:1.055*Math.pow(e,1/2.4)-.055)}function tR(e){return(e/=255)<=.04045?e/12.92:Math.pow((e+.055)/1.055,2.4)}function fBe(e){if(e instanceof Su)return new Su(e.h,e.c,e.l,e.opacity);if(e instanceof pc||(e=MK(e)),e.a===0&&e.b===0)return new Su(NaN,0<e.l&&e.l<100?0:NaN,e.l,e.opacity);var t=Math.atan2(e.b,e.a)*SK;return new Su(t<0?t+360:t,Math.sqrt(e.a*e.a+e.b*e.b),e.l,e.opacity)}function $v(e,t,r,i){return arguments.length===1?fBe(e):new Su(e,t,r,i??1)}function Su(e,t,r,i){this.h=+e,this.c=+t,this.l=+r,this.opacity=+i}function NK(e){if(isNaN(e.h))return new pc(e.l,0,0,e.opacity);var t=e.h*wK;return new pc(e.l,Math.cos(t)*e.c,Math.sin(t)*e.c,e.opacity)}var Bk,AK,_K,DK,RK,jm,LK,dBe,IK=z(()=>{"use strict";j8();Z8();EK();Bk=18,AK=.96422,_K=1,DK=.82521,RK=4/29,jm=6/29,LK=3*jm*jm,dBe=jm*jm*jm;o(MK,"labConvert");o(rR,"lab");o(pc,"Lab");Yh(pc,rR,Um(jh,{brighter(e){return new pc(this.l+Bk*(e??1),this.a,this.b,this.opacity)},darker(e){return new pc(this.l-Bk*(e??1),this.a,this.b,this.opacity)},rgb(){var e=(this.l+16)/116,t=isNaN(this.a)?e:e+this.a/500,r=isNaN(this.b)?e:e-this.b/200;return t=AK*J8(t),e=_K*J8(e),r=DK*J8(r),new ua(eR(3.1338561*t-1.6168667*e-.4906146*r),eR(-.9787684*t+1.9161415*e+.033454*r),eR(.0719453*t-.2289914*e+1.4052427*r),this.opacity)}}));o(Q8,"xyz2lab");o(J8,"lab2xyz");o(eR,"lrgb2rgb");o(tR,"rgb2lrgb");o(fBe,"hclConvert");o($v,"hcl");o(Su,"Hcl");o(NK,"hcl2lab");Yh(Su,$v,Um(jh,{brighter(e){return new Su(this.h,this.c,this.l+Bk*(e??1),this.opacity)},darker(e){return new Su(this.h,this.c,this.l-Bk*(e??1),this.opacity)},rgb(){return NK(this).rgb()}}))});var Xm=z(()=>{"use strict";Z8();IK()});function iR(e,t,r,i,n){var a=e*e,s=a*e;return((1-3*e+3*a-s)*t+(4-6*a+3*s)*r+(1+3*e+3*a-3*s)*i+s*n)/6}function nR(e){var t=e.length-1;return function(r){var i=r<=0?r=0:r>=1?(r=1,t-1):Math.floor(r*t),n=e[i],a=e[i+1],s=i>0?e[i-1]:2*n-a,l=i<t-1?e[i+2]:2*a-n;return iR((r-i/t)*t,s,n,a,l)}}var aR=z(()=>{"use strict";o(iR,"basis");o(nR,"default")});function sR(e){var t=e.length;return function(r){var i=Math.floor(((r%=1)<0?++r:r)*t),n=e[(i+t-1)%t],a=e[i%t],s=e[(i+1)%t],l=e[(i+2)%t];return iR((r-i/t)*t,n,a,s,l)}}var OK=z(()=>{"use strict";aR();o(sR,"default")});var Km,oR=z(()=>{"use strict";Km=o(e=>()=>e,"default")});function PK(e,t){return function(r){return e+r*t}}function pBe(e,t,r){return e=Math.pow(e,r),t=Math.pow(t,r)-e,r=1/r,function(i){return Math.pow(e+i*t,r)}}function BK(e,t){var r=t-e;return r?PK(e,r>180||r<-180?r-360*Math.round(r/360):r):Km(isNaN(e)?t:e)}function FK(e){return(e=+e)==1?Eu:function(t,r){return r-t?pBe(t,r,e):Km(isNaN(t)?r:t)}}function Eu(e,t){var r=t-e;return r?PK(e,r):Km(isNaN(e)?t:e)}var lR=z(()=>{"use strict";oR();o(PK,"linear");o(pBe,"exponential");o(BK,"hue");o(FK,"gamma");o(Eu,"nogamma")});function $K(e){return function(t){var r=t.length,i=new Array(r),n=new Array(r),a=new Array(r),s,l;for(s=0;s<r;++s)l=Ym(t[s]),i[s]=l.r||0,n[s]=l.g||0,a[s]=l.b||0;return i=e(i),n=e(n),a=e(a),l.opacity=1,function(u){return l.r=i(u),l.g=n(u),l.b=a(u),l+""}}}var tp,mBe,gBe,cR=z(()=>{"use strict";Xm();aR();OK();lR();tp=o((function e(t){var r=FK(t);function i(n,a){var s=r((n=Ym(n)).r,(a=Ym(a)).r),l=r(n.g,a.g),u=r(n.b,a.b),h=Eu(n.opacity,a.opacity);return function(d){return n.r=s(d),n.g=l(d),n.b=u(d),n.opacity=h(d),n+""}}return o(i,"rgb"),i.gamma=e,i}),"rgbGamma")(1);o($K,"rgbSpline");mBe=$K(nR),gBe=$K(sR)});function uR(e,t){t||(t=[]);var r=e?Math.min(t.length,e.length):0,i=t.slice(),n;return function(a){for(n=0;n<r;++n)i[n]=e[n]*(1-a)+t[n]*a;return i}}function zK(e){return ArrayBuffer.isView(e)&&!(e instanceof DataView)}var GK=z(()=>{"use strict";o(uR,"default");o(zK,"isNumberArray")});function VK(e,t){var r=t?t.length:0,i=e?Math.min(r,e.length):0,n=new Array(i),a=new Array(r),s;for(s=0;s<i;++s)n[s]=Xh(e[s],t[s]);for(;s<r;++s)a[s]=t[s];return function(l){for(s=0;s<i;++s)a[s]=n[s](l);return a}}var WK=z(()=>{"use strict";Fk();o(VK,"genericArray")});function hR(e,t){var r=new Date;return e=+e,t=+t,function(i){return r.setTime(e*(1-i)+t*i),r}}var qK=z(()=>{"use strict";o(hR,"default")});function Zn(e,t){return e=+e,t=+t,function(r){return e*(1-r)+t*r}}var zv=z(()=>{"use strict";o(Zn,"default")});function dR(e,t){var r={},i={},n;(e===null||typeof e!="object")&&(e={}),(t===null||typeof t!="object")&&(t={});for(n in t)n in e?r[n]=Xh(e[n],t[n]):i[n]=t[n];return function(a){for(n in r)i[n]=r[n](a);return i}}var UK=z(()=>{"use strict";Fk();o(dR,"default")});function yBe(e){return function(){return e}}function vBe(e){return function(t){return e(t)+""}}function Zm(e,t){var r=pR.lastIndex=fR.lastIndex=0,i,n,a,s=-1,l=[],u=[];for(e=e+"",t=t+"";(i=pR.exec(e))&&(n=fR.exec(t));)(a=n.index)>r&&(a=t.slice(r,a),l[s]?l[s]+=a:l[++s]=a),(i=i[0])===(n=n[0])?l[s]?l[s]+=n:l[++s]=n:(l[++s]=null,u.push({i:s,x:Zn(i,n)})),r=fR.lastIndex;return r<t.length&&(a=t.slice(r),l[s]?l[s]+=a:l[++s]=a),l.length<2?u[0]?vBe(u[0].x):yBe(t):(t=u.length,function(h){for(var d=0,f;d<t;++d)l[(f=u[d]).i]=f.x(h);return l.join("")})}var pR,fR,mR=z(()=>{"use strict";zv();pR=/[-+]?(?:\d+\.?\d*|\.?\d+)(?:[eE][-+]?\d+)?/g,fR=new RegExp(pR.source,"g");o(yBe,"zero");o(vBe,"one");o(Zm,"default")});function Xh(e,t){var r=typeof t,i;return t==null||r==="boolean"?Km(t):(r==="number"?Zn:r==="string"?(i=Tl(t))?(t=i,tp):Zm:t instanceof Tl?tp:t instanceof Date?hR:zK(t)?uR:Array.isArray(t)?VK:typeof t.valueOf!="function"&&typeof t.toString!="function"||isNaN(t)?dR:Zn)(e,t)}var Fk=z(()=>{"use strict";Xm();cR();WK();qK();zv();UK();mR();oR();GK();o(Xh,"default")});function $k(e,t){return e=+e,t=+t,function(r){return Math.round(e*(1-r)+t*r)}}var HK=z(()=>{"use strict";o($k,"default")});function Gk(e,t,r,i,n,a){var s,l,u;return(s=Math.sqrt(e*e+t*t))&&(e/=s,t/=s),(u=e*r+t*i)&&(r-=e*u,i-=t*u),(l=Math.sqrt(r*r+i*i))&&(r/=l,i/=l,u/=l),e*i<t*r&&(e=-e,t=-t,u=-u,s=-s),{translateX:n,translateY:a,rotate:Math.atan2(t,e)*YK,skewX:Math.atan(u)*YK,scaleX:s,scaleY:l}}var YK,zk,jK=z(()=>{"use strict";YK=180/Math.PI,zk={translateX:0,translateY:0,rotate:0,skewX:0,scaleX:1,scaleY:1};o(Gk,"default")});function XK(e){let t=new(typeof DOMMatrix=="function"?DOMMatrix:WebKitCSSMatrix)(e+"");return t.isIdentity?zk:Gk(t.a,t.b,t.c,t.d,t.e,t.f)}function KK(e){return e==null?zk:(Vk||(Vk=document.createElementNS("http://www.w3.org/2000/svg","g")),Vk.setAttribute("transform",e),(e=Vk.transform.baseVal.consolidate())?(e=e.matrix,Gk(e.a,e.b,e.c,e.d,e.e,e.f)):zk)}var Vk,ZK=z(()=>{"use strict";jK();o(XK,"parseCss");o(KK,"parseSvg")});function QK(e,t,r,i){function n(h){return h.length?h.pop()+" ":""}o(n,"pop");function a(h,d,f,p,m,g){if(h!==f||d!==p){var y=m.push("translate(",null,t,null,r);g.push({i:y-4,x:Zn(h,f)},{i:y-2,x:Zn(d,p)})}else(f||p)&&m.push("translate("+f+t+p+r)}o(a,"translate");function s(h,d,f,p){h!==d?(h-d>180?d+=360:d-h>180&&(h+=360),p.push({i:f.push(n(f)+"rotate(",null,i)-2,x:Zn(h,d)})):d&&f.push(n(f)+"rotate("+d+i)}o(s,"rotate");function l(h,d,f,p){h!==d?p.push({i:f.push(n(f)+"skewX(",null,i)-2,x:Zn(h,d)}):d&&f.push(n(f)+"skewX("+d+i)}o(l,"skewX");function u(h,d,f,p,m,g){if(h!==f||d!==p){var y=m.push(n(m)+"scale(",null,",",null,")");g.push({i:y-4,x:Zn(h,f)},{i:y-2,x:Zn(d,p)})}else(f!==1||p!==1)&&m.push(n(m)+"scale("+f+","+p+")")}return o(u,"scale"),function(h,d){var f=[],p=[];return h=e(h),d=e(d),a(h.translateX,h.translateY,d.translateX,d.translateY,f,p),s(h.rotate,d.rotate,f,p),l(h.skewX,d.skewX,f,p),u(h.scaleX,h.scaleY,d.scaleX,d.scaleY,f,p),h=d=null,function(m){for(var g=-1,y=p.length,v;++g<y;)f[(v=p[g]).i]=v.x(m);return f.join("")}}}var gR,yR,JK=z(()=>{"use strict";zv();ZK();o(QK,"interpolateTransform");gR=QK(XK,"px, ","px)","deg)"),yR=QK(KK,", ",")",")")});function eZ(e){return function(t,r){var i=e((t=$v(t)).h,(r=$v(r)).h),n=Eu(t.c,r.c),a=Eu(t.l,r.l),s=Eu(t.opacity,r.opacity);return function(l){return t.h=i(l),t.c=n(l),t.l=a(l),t.opacity=s(l),t+""}}}var vR,xBe,tZ=z(()=>{"use strict";Xm();lR();o(eZ,"hcl");vR=eZ(BK),xBe=eZ(Eu)});var Qm=z(()=>{"use strict";Fk();zv();HK();mR();JK();cR();tZ()});function Hv(){return rp||(nZ(bBe),rp=qv.now()+Uk)}function bBe(){rp=0}function Uv(){this._call=this._time=this._next=null}function Hk(e,t,r){var i=new Uv;return i.restart(e,t,r),i}function aZ(){Hv(),++Jm;for(var e=Wk,t;e;)(t=rp-e._time)>=0&&e._call.call(void 0,t),e=e._next;--Jm}function rZ(){rp=(qk=qv.now())+Uk,Jm=Vv=0;try{aZ()}finally{Jm=0,CBe(),rp=0}}function TBe(){var e=qv.now(),t=e-qk;t>iZ&&(Uk-=t,qk=e)}function CBe(){for(var e,t=Wk,r,i=1/0;t;)t._call?(i>t._time&&(i=t._time),e=t,t=t._next):(r=t._next,t._next=null,t=e?e._next=r:Wk=r);Wv=e,xR(i)}function xR(e){if(!Jm){Vv&&(Vv=clearTimeout(Vv));var t=e-rp;t>24?(e<1/0&&(Vv=setTimeout(rZ,e-qv.now()-Uk)),Gv&&(Gv=clearInterval(Gv))):(Gv||(qk=qv.now(),Gv=setInterval(TBe,iZ)),Jm=1,nZ(rZ))}}var Jm,Vv,Gv,iZ,Wk,Wv,qk,rp,Uk,qv,nZ,bR=z(()=>{"use strict";Jm=0,Vv=0,Gv=0,iZ=1e3,qk=0,rp=0,Uk=0,qv=typeof performance=="object"&&performance.now?performance:Date,nZ=typeof window=="object"&&window.requestAnimationFrame?window.requestAnimationFrame.bind(window):function(e){setTimeout(e,17)};o(Hv,"now");o(bBe,"clearNow");o(Uv,"Timer");Uv.prototype=Hk.prototype={constructor:Uv,restart:o(function(e,t,r){if(typeof e!="function")throw new TypeError("callback is not a function");r=(r==null?Hv():+r)+(t==null?0:+t),!this._next&&Wv!==this&&(Wv?Wv._next=this:Wk=this,Wv=this),this._call=e,this._time=r,xR()},"restart"),stop:o(function(){this._call&&(this._call=null,this._time=1/0,xR())},"stop")};o(Hk,"timer");o(aZ,"timerFlush");o(rZ,"wake");o(TBe,"poke");o(CBe,"nap");o(xR,"sleep")});function Yv(e,t,r){var i=new Uv;return t=t==null?0:+t,i.restart(n=>{i.stop(),e(n+t)},t,r),i}var sZ=z(()=>{"use strict";bR();o(Yv,"default")});var Yk=z(()=>{"use strict";bR();sZ()});function Au(e,t,r,i,n,a){var s=e.__transition;if(!s)e.__transition={};else if(r in s)return;SBe(e,r,{name:t,index:i,group:n,on:kBe,tween:wBe,time:a.time,delay:a.delay,duration:a.duration,ease:a.ease,timer:null,state:cZ})}function Xv(e,t){var r=$n(e,t);if(r.state>cZ)throw new Error("too late; already scheduled");return r}function ha(e,t){var r=$n(e,t);if(r.state>jk)throw new Error("too late; already running");return r}function $n(e,t){var r=e.__transition;if(!r||!(r=r[t]))throw new Error("transition not found");return r}function SBe(e,t,r){var i=e.__transition,n;i[t]=r,r.timer=Hk(a,0,r.time);function a(h){r.state=oZ,r.timer.restart(s,r.delay,r.time),r.delay<=h&&s(h-r.delay)}o(a,"schedule");function s(h){var d,f,p,m;if(r.state!==oZ)return u();for(d in i)if(m=i[d],m.name===r.name){if(m.state===jk)return Yv(s);m.state===lZ?(m.state=jv,m.timer.stop(),m.on.call("interrupt",e,e.__data__,m.index,m.group),delete i[d]):+d<t&&(m.state=jv,m.timer.stop(),m.on.call("cancel",e,e.__data__,m.index,m.group),delete i[d])}if(Yv(function(){r.state===jk&&(r.state=lZ,r.timer.restart(l,r.delay,r.time),l(h))}),r.state=Xk,r.on.call("start",e,e.__data__,r.index,r.group),r.state===Xk){for(r.state=jk,n=new Array(p=r.tween.length),d=0,f=-1;d<p;++d)(m=r.tween[d].value.call(e,e.__data__,r.index,r.group))&&(n[++f]=m);n.length=f+1}}o(s,"start");function l(h){for(var d=h<r.duration?r.ease.call(null,h/r.duration):(r.timer.restart(u),r.state=Kk,1),f=-1,p=n.length;++f<p;)n[f].call(e,d);r.state===Kk&&(r.on.call("end",e,e.__data__,r.index,r.group),u())}o(l,"tick");function u(){r.state=jv,r.timer.stop(),delete i[t];for(var h in i)return;delete e.__transition}o(u,"stop")}var kBe,wBe,cZ,oZ,Xk,jk,lZ,Kk,jv,ws=z(()=>{"use strict";t8();Yk();kBe=e8("start","end","cancel","interrupt"),wBe=[],cZ=0,oZ=1,Xk=2,jk=3,lZ=4,Kk=5,jv=6;o(Au,"default");o(Xv,"init");o(ha,"set");o($n,"get");o(SBe,"create")});function Kv(e,t){var r=e.__transition,i,n,a=!0,s;if(r){t=t==null?null:t+"";for(s in r){if((i=r[s]).name!==t){a=!1;continue}n=i.state>Xk&&i.state<Kk,i.state=jv,i.timer.stop(),i.on.call(n?"interrupt":"cancel",e,e.__data__,i.index,i.group),delete r[s]}a&&delete e.__transition}}var uZ=z(()=>{"use strict";ws();o(Kv,"default")});function TR(e){return this.each(function(){Kv(this,e)})}var hZ=z(()=>{"use strict";uZ();o(TR,"default")});function EBe(e,t){var r,i;return function(){var n=ha(this,e),a=n.tween;if(a!==r){i=r=a;for(var s=0,l=i.length;s<l;++s)if(i[s].name===t){i=i.slice(),i.splice(s,1);break}}n.tween=i}}function ABe(e,t,r){var i,n;if(typeof r!="function")throw new Error;return function(){var a=ha(this,e),s=a.tween;if(s!==i){n=(i=s).slice();for(var l={name:t,value:r},u=0,h=n.length;u<h;++u)if(n[u].name===t){n[u]=l;break}u===h&&n.push(l)}a.tween=n}}function CR(e,t){var r=this._id;if(e+="",arguments.length<2){for(var i=$n(this.node(),r).tween,n=0,a=i.length,s;n<a;++n)if((s=i[n]).name===e)return s.value;return null}return this.each((t==null?EBe:ABe)(r,e,t))}function eg(e,t,r){var i=e._id;return e.each(function(){var n=ha(this,i);(n.value||(n.value={}))[t]=r.apply(this,arguments)}),function(n){return $n(n,i).value[t]}}var Zv=z(()=>{"use strict";ws();o(EBe,"tweenRemove");o(ABe,"tweenFunction");o(CR,"default");o(eg,"tweenValue")});function Qv(e,t){var r;return(typeof t=="number"?Zn:t instanceof Tl?tp:(r=Tl(t))?(t=r,tp):Zm)(e,t)}var kR=z(()=>{"use strict";Xm();Qm();o(Qv,"default")});function _Be(e){return function(){this.removeAttribute(e)}}function DBe(e){return function(){this.removeAttributeNS(e.space,e.local)}}function RBe(e,t,r){var i,n=r+"",a;return function(){var s=this.getAttribute(e);return s===n?null:s===i?a:a=t(i=s,r)}}function LBe(e,t,r){var i,n=r+"",a;return function(){var s=this.getAttributeNS(e.space,e.local);return s===n?null:s===i?a:a=t(i=s,r)}}function MBe(e,t,r){var i,n,a;return function(){var s,l=r(this),u;return l==null?void this.removeAttribute(e):(s=this.getAttribute(e),u=l+"",s===u?null:s===i&&u===n?a:(n=u,a=t(i=s,l)))}}function NBe(e,t,r){var i,n,a;return function(){var s,l=r(this),u;return l==null?void this.removeAttributeNS(e.space,e.local):(s=this.getAttributeNS(e.space,e.local),u=l+"",s===u?null:s===i&&u===n?a:(n=u,a=t(i=s,l)))}}function wR(e,t){var r=dc(e),i=r==="transform"?yR:Qv;return this.attrTween(e,typeof t=="function"?(r.local?NBe:MBe)(r,i,eg(this,"attr."+e,t)):t==null?(r.local?DBe:_Be)(r):(r.local?LBe:RBe)(r,i,t))}var dZ=z(()=>{"use strict";Qm();xl();Zv();kR();o(_Be,"attrRemove");o(DBe,"attrRemoveNS");o(RBe,"attrConstant");o(LBe,"attrConstantNS");o(MBe,"attrFunction");o(NBe,"attrFunctionNS");o(wR,"default")});function IBe(e,t){return function(r){this.setAttribute(e,t.call(this,r))}}function OBe(e,t){return function(r){this.setAttributeNS(e.space,e.local,t.call(this,r))}}function PBe(e,t){var r,i;function n(){var a=t.apply(this,arguments);return a!==i&&(r=(i=a)&&OBe(e,a)),r}return o(n,"tween"),n._value=t,n}function BBe(e,t){var r,i;function n(){var a=t.apply(this,arguments);return a!==i&&(r=(i=a)&&IBe(e,a)),r}return o(n,"tween"),n._value=t,n}function SR(e,t){var r="attr."+e;if(arguments.length<2)return(r=this.tween(r))&&r._value;if(t==null)return this.tween(r,null);if(typeof t!="function")throw new Error;var i=dc(e);return this.tween(r,(i.local?PBe:BBe)(i,t))}var fZ=z(()=>{"use strict";xl();o(IBe,"attrInterpolate");o(OBe,"attrInterpolateNS");o(PBe,"attrTweenNS");o(BBe,"attrTween");o(SR,"default")});function FBe(e,t){return function(){Xv(this,e).delay=+t.apply(this,arguments)}}function $Be(e,t){return t=+t,function(){Xv(this,e).delay=t}}function ER(e){var t=this._id;return arguments.length?this.each((typeof e=="function"?FBe:$Be)(t,e)):$n(this.node(),t).delay}var pZ=z(()=>{"use strict";ws();o(FBe,"delayFunction");o($Be,"delayConstant");o(ER,"default")});function zBe(e,t){return function(){ha(this,e).duration=+t.apply(this,arguments)}}function GBe(e,t){return t=+t,function(){ha(this,e).duration=t}}function AR(e){var t=this._id;return arguments.length?this.each((typeof e=="function"?zBe:GBe)(t,e)):$n(this.node(),t).duration}var mZ=z(()=>{"use strict";ws();o(zBe,"durationFunction");o(GBe,"durationConstant");o(AR,"default")});function VBe(e,t){if(typeof t!="function")throw new Error;return function(){ha(this,e).ease=t}}function _R(e){var t=this._id;return arguments.length?this.each(VBe(t,e)):$n(this.node(),t).ease}var gZ=z(()=>{"use strict";ws();o(VBe,"easeConstant");o(_R,"default")});function WBe(e,t){return function(){var r=t.apply(this,arguments);if(typeof r!="function")throw new Error;ha(this,e).ease=r}}function DR(e){if(typeof e!="function")throw new Error;return this.each(WBe(this._id,e))}var yZ=z(()=>{"use strict";ws();o(WBe,"easeVarying");o(DR,"default")});function RR(e){typeof e!="function"&&(e=qm(e));for(var t=this._groups,r=t.length,i=new Array(r),n=0;n<r;++n)for(var a=t[n],s=a.length,l=i[n]=[],u,h=0;h<s;++h)(u=a[h])&&e.call(u,u.__data__,h,a)&&l.push(u);return new Ka(i,this._parents,this._name,this._id)}var vZ=z(()=>{"use strict";xl();ip();o(RR,"default")});function LR(e){if(e._id!==this._id)throw new Error;for(var t=this._groups,r=e._groups,i=t.length,n=r.length,a=Math.min(i,n),s=new Array(i),l=0;l<a;++l)for(var u=t[l],h=r[l],d=u.length,f=s[l]=new Array(d),p,m=0;m<d;++m)(p=u[m]||h[m])&&(f[m]=p);for(;l<i;++l)s[l]=t[l];return new Ka(s,this._parents,this._name,this._id)}var xZ=z(()=>{"use strict";ip();o(LR,"default")});function qBe(e){return(e+"").trim().split(/^|\s+/).every(function(t){var r=t.indexOf(".");return r>=0&&(t=t.slice(0,r)),!t||t==="start"})}function UBe(e,t,r){var i,n,a=qBe(t)?Xv:ha;return function(){var s=a(this,e),l=s.on;l!==i&&(n=(i=l).copy()).on(t,r),s.on=n}}function MR(e,t){var r=this._id;return arguments.length<2?$n(this.node(),r).on.on(e):this.each(UBe(r,e,t))}var bZ=z(()=>{"use strict";ws();o(qBe,"start");o(UBe,"onFunction");o(MR,"default")});function HBe(e){return function(){var t=this.parentNode;for(var r in this.__transition)if(+r!==e)return;t&&t.removeChild(this)}}function NR(){return this.on("end.remove",HBe(this._id))}var TZ=z(()=>{"use strict";o(HBe,"removeFunction");o(NR,"default")});function IR(e){var t=this._name,r=this._id;typeof e!="function"&&(e=Uh(e));for(var i=this._groups,n=i.length,a=new Array(n),s=0;s<n;++s)for(var l=i[s],u=l.length,h=a[s]=new Array(u),d,f,p=0;p<u;++p)(d=l[p])&&(f=e.call(d,d.__data__,p,l))&&("__data__"in d&&(f.__data__=d.__data__),h[p]=f,Au(h[p],t,r,p,h,$n(d,r)));return new Ka(a,this._parents,t,r)}var CZ=z(()=>{"use strict";xl();ip();ws();o(IR,"default")});function OR(e){var t=this._name,r=this._id;typeof e!="function"&&(e=Wm(e));for(var i=this._groups,n=i.length,a=[],s=[],l=0;l<n;++l)for(var u=i[l],h=u.length,d,f=0;f<h;++f)if(d=u[f]){for(var p=e.call(d,d.__data__,f,u),m,g=$n(d,r),y=0,v=p.length;y<v;++y)(m=p[y])&&Au(m,t,r,y,p,g);a.push(p),s.push(d)}return new Ka(a,s,t,r)}var kZ=z(()=>{"use strict";xl();ip();ws();o(OR,"default")});function PR(){return new YBe(this._groups,this._parents)}var YBe,wZ=z(()=>{"use strict";xl();YBe=wu.prototype.constructor;o(PR,"default")});function jBe(e,t){var r,i,n;return function(){var a=Hh(this,e),s=(this.style.removeProperty(e),Hh(this,e));return a===s?null:a===r&&s===i?n:n=t(r=a,i=s)}}function SZ(e){return function(){this.style.removeProperty(e)}}function XBe(e,t,r){var i,n=r+"",a;return function(){var s=Hh(this,e);return s===n?null:s===i?a:a=t(i=s,r)}}function KBe(e,t,r){var i,n,a;return function(){var s=Hh(this,e),l=r(this),u=l+"";return l==null&&(u=l=(this.style.removeProperty(e),Hh(this,e))),s===u?null:s===i&&u===n?a:(n=u,a=t(i=s,l))}}function ZBe(e,t){var r,i,n,a="style."+t,s="end."+a,l;return function(){var u=ha(this,e),h=u.on,d=u.value[a]==null?l||(l=SZ(t)):void 0;(h!==r||n!==d)&&(i=(r=h).copy()).on(s,n=d),u.on=i}}function BR(e,t,r){var i=(e+="")=="transform"?gR:Qv;return t==null?this.styleTween(e,jBe(e,i)).on("end.style."+e,SZ(e)):typeof t=="function"?this.styleTween(e,KBe(e,i,eg(this,"style."+e,t))).each(ZBe(this._id,e)):this.styleTween(e,XBe(e,i,t),r).on("end.style."+e,null)}var EZ=z(()=>{"use strict";Qm();xl();ws();Zv();kR();o(jBe,"styleNull");o(SZ,"styleRemove");o(XBe,"styleConstant");o(KBe,"styleFunction");o(ZBe,"styleMaybeRemove");o(BR,"default")});function QBe(e,t,r){return function(i){this.style.setProperty(e,t.call(this,i),r)}}function JBe(e,t,r){var i,n;function a(){var s=t.apply(this,arguments);return s!==n&&(i=(n=s)&&QBe(e,s,r)),i}return o(a,"tween"),a._value=t,a}function FR(e,t,r){var i="style."+(e+="");if(arguments.length<2)return(i=this.tween(i))&&i._value;if(t==null)return this.tween(i,null);if(typeof t!="function")throw new Error;return this.tween(i,JBe(e,t,r??""))}var AZ=z(()=>{"use strict";o(QBe,"styleInterpolate");o(JBe,"styleTween");o(FR,"default")});function eFe(e){return function(){this.textContent=e}}function tFe(e){return function(){var t=e(this);this.textContent=t??""}}function $R(e){return this.tween("text",typeof e=="function"?tFe(eg(this,"text",e)):eFe(e==null?"":e+""))}var _Z=z(()=>{"use strict";Zv();o(eFe,"textConstant");o(tFe,"textFunction");o($R,"default")});function rFe(e){return function(t){this.textContent=e.call(this,t)}}function iFe(e){var t,r;function i(){var n=e.apply(this,arguments);return n!==r&&(t=(r=n)&&rFe(n)),t}return o(i,"tween"),i._value=e,i}function zR(e){var t="text";if(arguments.length<1)return(t=this.tween(t))&&t._value;if(e==null)return this.tween(t,null);if(typeof e!="function")throw new Error;return this.tween(t,iFe(e))}var DZ=z(()=>{"use strict";o(rFe,"textInterpolate");o(iFe,"textTween");o(zR,"default")});function GR(){for(var e=this._name,t=this._id,r=Zk(),i=this._groups,n=i.length,a=0;a<n;++a)for(var s=i[a],l=s.length,u,h=0;h<l;++h)if(u=s[h]){var d=$n(u,t);Au(u,e,r,h,s,{time:d.time+d.delay+d.duration,delay:0,duration:d.duration,ease:d.ease})}return new Ka(i,this._parents,e,r)}var RZ=z(()=>{"use strict";ip();ws();o(GR,"default")});function VR(){var e,t,r=this,i=r._id,n=r.size();return new Promise(function(a,s){var l={value:s},u={value:o(function(){--n===0&&a()},"value")};r.each(function(){var h=ha(this,i),d=h.on;d!==e&&(t=(e=d).copy(),t._.cancel.push(l),t._.interrupt.push(l),t._.end.push(u)),h.on=t}),n===0&&a()})}var LZ=z(()=>{"use strict";ws();o(VR,"default")});function Ka(e,t,r,i){this._groups=e,this._parents=t,this._name=r,this._id=i}function MZ(e){return wu().transition(e)}function Zk(){return++nFe}var nFe,_u,ip=z(()=>{"use strict";xl();dZ();fZ();pZ();mZ();gZ();yZ();vZ();xZ();bZ();TZ();CZ();kZ();wZ();EZ();AZ();_Z();DZ();RZ();Zv();LZ();nFe=0;o(Ka,"Transition");o(MZ,"transition");o(Zk,"newId");_u=wu.prototype;Ka.prototype=MZ.prototype={constructor:Ka,select:IR,selectAll:OR,selectChild:_u.selectChild,selectChildren:_u.selectChildren,filter:RR,merge:LR,selection:PR,transition:GR,call:_u.call,nodes:_u.nodes,node:_u.node,size:_u.size,empty:_u.empty,each:_u.each,on:MR,attr:wR,attrTween:SR,style:BR,styleTween:FR,text:$R,textTween:zR,remove:NR,tween:CR,delay:ER,duration:AR,ease:_R,easeVarying:DR,end:VR,[Symbol.iterator]:_u[Symbol.iterator]}});function Qk(e){return((e*=2)<=1?e*e*e:(e-=2)*e*e+2)/2}var NZ=z(()=>{"use strict";o(Qk,"cubicInOut")});var WR=z(()=>{"use strict";NZ()});function sFe(e,t){for(var r;!(r=e.__transition)||!(r=r[t]);)if(!(e=e.parentNode))throw new Error(`transition ${t} not found`);return r}function qR(e){var t,r;e instanceof Ka?(t=e._id,e=e._name):(t=Zk(),(r=aFe).time=Hv(),e=e==null?null:e+"");for(var i=this._groups,n=i.length,a=0;a<n;++a)for(var s=i[a],l=s.length,u,h=0;h<l;++h)(u=s[h])&&Au(u,e,t,h,s,r||sFe(u,t));return new Ka(i,this._parents,e,t)}var aFe,IZ=z(()=>{"use strict";ip();ws();WR();Yk();aFe={time:null,delay:0,duration:250,ease:Qk};o(sFe,"inherit");o(qR,"default")});var OZ=z(()=>{"use strict";xl();hZ();IZ();wu.prototype.interrupt=TR;wu.prototype.transition=qR});var Jk=z(()=>{"use strict";OZ()});var PZ=z(()=>{"use strict"});var BZ=z(()=>{"use strict"});var FZ=z(()=>{"use strict"});function $Z(e){return[+e[0],+e[1]]}function oFe(e){return[$Z(e[0]),$Z(e[1])]}function UR(e){return{type:e}}var TBt,CBt,kBt,wBt,SBt,EBt,zZ=z(()=>{"use strict";Jk();PZ();BZ();FZ();({abs:TBt,max:CBt,min:kBt}=Math);o($Z,"number1");o(oFe,"number2");wBt={name:"x",handles:["w","e"].map(UR),input:o(function(e,t){return e==null?null:[[+e[0],t[0][1]],[+e[1],t[1][1]]]},"input"),output:o(function(e){return e&&[e[0][0],e[1][0]]},"output")},SBt={name:"y",handles:["n","s"].map(UR),input:o(function(e,t){return e==null?null:[[t[0][0],+e[0]],[t[1][0],+e[1]]]},"input"),output:o(function(e){return e&&[e[0][1],e[1][1]]},"output")},EBt={name:"xy",handles:["n","w","e","s","nw","ne","sw","se"].map(UR),input:o(function(e){return e==null?null:oFe(e)},"input"),output:o(function(e){return e},"output")};o(UR,"type")});var GZ=z(()=>{"use strict";zZ()});function VZ(e){this._+=e[0];for(let t=1,r=e.length;t<r;++t)this._+=arguments[t]+e[t]}function cFe(e){let t=Math.floor(e);if(!(t>=0))throw new Error(`invalid digits: ${e}`);if(t>15)return VZ;let r=10**t;return function(i){this._+=i[0];for(let n=1,a=i.length;n<a;++n)this._+=Math.round(arguments[n]*r)/r+i[n]}}function WZ(){return new ap}var HR,YR,np,lFe,ap,qZ=z(()=>{"use strict";HR=Math.PI,YR=2*HR,np=1e-6,lFe=YR-np;o(VZ,"append");o(cFe,"appendRound");ap=class{static{o(this,"Path")}constructor(t){this._x0=this._y0=this._x1=this._y1=null,this._="",this._append=t==null?VZ:cFe(t)}moveTo(t,r){this._append`M${this._x0=this._x1=+t},${this._y0=this._y1=+r}`}closePath(){this._x1!==null&&(this._x1=this._x0,this._y1=this._y0,this._append`Z`)}lineTo(t,r){this._append`L${this._x1=+t},${this._y1=+r}`}quadraticCurveTo(t,r,i,n){this._append`Q${+t},${+r},${this._x1=+i},${this._y1=+n}`}bezierCurveTo(t,r,i,n,a,s){this._append`C${+t},${+r},${+i},${+n},${this._x1=+a},${this._y1=+s}`}arcTo(t,r,i,n,a){if(t=+t,r=+r,i=+i,n=+n,a=+a,a<0)throw new Error(`negative radius: ${a}`);let s=this._x1,l=this._y1,u=i-t,h=n-r,d=s-t,f=l-r,p=d*d+f*f;if(this._x1===null)this._append`M${this._x1=t},${this._y1=r}`;else if(p>np)if(!(Math.abs(f*u-h*d)>np)||!a)this._append`L${this._x1=t},${this._y1=r}`;else{let m=i-s,g=n-l,y=u*u+h*h,v=m*m+g*g,x=Math.sqrt(y),b=Math.sqrt(p),T=a*Math.tan((HR-Math.acos((y+p-v)/(2*x*b)))/2),w=T/b,C=T/x;Math.abs(w-1)>np&&this._append`L${t+w*d},${r+w*f}`,this._append`A${a},${a},0,0,${+(f*m>d*g)},${this._x1=t+C*u},${this._y1=r+C*h}`}}arc(t,r,i,n,a,s){if(t=+t,r=+r,i=+i,s=!!s,i<0)throw new Error(`negative radius: ${i}`);let l=i*Math.cos(n),u=i*Math.sin(n),h=t+l,d=r+u,f=1^s,p=s?n-a:a-n;this._x1===null?this._append`M${h},${d}`:(Math.abs(this._x1-h)>np||Math.abs(this._y1-d)>np)&&this._append`L${h},${d}`,i&&(p<0&&(p=p%YR+YR),p>lFe?this._append`A${i},${i},0,1,${f},${t-l},${r-u}A${i},${i},0,1,${f},${this._x1=h},${this._y1=d}`:p>np&&this._append`A${i},${i},0,${+(p>=HR)},${f},${this._x1=t+i*Math.cos(a)},${this._y1=r+i*Math.sin(a)}`)}rect(t,r,i,n){this._append`M${this._x0=this._x1=+t},${this._y0=this._y1=+r}h${i=+i}v${+n}h${-i}Z`}toString(){return this._}};o(WZ,"path");WZ.prototype=ap.prototype});var jR=z(()=>{"use strict";qZ()});var UZ=z(()=>{"use strict"});var HZ=z(()=>{"use strict"});var YZ=z(()=>{"use strict"});var jZ=z(()=>{"use strict"});var XZ=z(()=>{"use strict"});var KZ=z(()=>{"use strict"});var ZZ=z(()=>{"use strict"});function XR(e){return Math.abs(e=Math.round(e))>=1e21?e.toLocaleString("en").replace(/,/g,""):e.toString(10)}function sp(e,t){if((r=(e=t?e.toExponential(t-1):e.toExponential()).indexOf("e"))<0)return null;var r,i=e.slice(0,r);return[i.length>1?i[0]+i.slice(2):i,+e.slice(r+1)]}var Jv=z(()=>{"use strict";o(XR,"default");o(sp,"formatDecimalParts")});function Cl(e){return e=sp(Math.abs(e)),e?e[1]:NaN}var ex=z(()=>{"use strict";Jv();o(Cl,"default")});function KR(e,t){return function(r,i){for(var n=r.length,a=[],s=0,l=e[0],u=0;n>0&&l>0&&(u+l+1>i&&(l=Math.max(1,i-u)),a.push(r.substring(n-=l,n+l)),!((u+=l+1)>i));)l=e[s=(s+1)%e.length];return a.reverse().join(t)}}var QZ=z(()=>{"use strict";o(KR,"default")});function ZR(e){return function(t){return t.replace(/[0-9]/g,function(r){return e[+r]})}}var JZ=z(()=>{"use strict";o(ZR,"default")});function Kh(e){if(!(t=uFe.exec(e)))throw new Error("invalid format: "+e);var t;return new ew({fill:t[1],align:t[2],sign:t[3],symbol:t[4],zero:t[5],width:t[6],comma:t[7],precision:t[8]&&t[8].slice(1),trim:t[9],type:t[10]})}function ew(e){this.fill=e.fill===void 0?" ":e.fill+"",this.align=e.align===void 0?">":e.align+"",this.sign=e.sign===void 0?"-":e.sign+"",this.symbol=e.symbol===void 0?"":e.symbol+"",this.zero=!!e.zero,this.width=e.width===void 0?void 0:+e.width,this.comma=!!e.comma,this.precision=e.precision===void 0?void 0:+e.precision,this.trim=!!e.trim,this.type=e.type===void 0?"":e.type+""}var uFe,QR=z(()=>{"use strict";uFe=/^(?:(.)?([<>=^]))?([+\-( ])?([$#])?(0)?(\d+)?(,)?(\.\d+)?(~)?([a-z%])?$/i;o(Kh,"formatSpecifier");Kh.prototype=ew.prototype;o(ew,"FormatSpecifier");ew.prototype.toString=function(){return this.fill+this.align+this.sign+this.symbol+(this.zero?"0":"")+(this.width===void 0?"":Math.max(1,this.width|0))+(this.comma?",":"")+(this.precision===void 0?"":"."+Math.max(0,this.precision|0))+(this.trim?"~":"")+this.type}});function JR(e){e:for(var t=e.length,r=1,i=-1,n;r<t;++r)switch(e[r]){case".":i=n=r;break;case"0":i===0&&(i=r),n=r;break;default:if(!+e[r])break e;i>0&&(i=0);break}return i>0?e.slice(0,i)+e.slice(n+1):e}var eQ=z(()=>{"use strict";o(JR,"default")});function tL(e,t){var r=sp(e,t);if(!r)return e+"";var i=r[0],n=r[1],a=n-(eL=Math.max(-8,Math.min(8,Math.floor(n/3)))*3)+1,s=i.length;return a===s?i:a>s?i+new Array(a-s+1).join("0"):a>0?i.slice(0,a)+"."+i.slice(a):"0."+new Array(1-a).join("0")+sp(e,Math.max(0,t+a-1))[0]}var eL,rL=z(()=>{"use strict";Jv();o(tL,"default")});function tw(e,t){var r=sp(e,t);if(!r)return e+"";var i=r[0],n=r[1];return n<0?"0."+new Array(-n).join("0")+i:i.length>n+1?i.slice(0,n+1)+"."+i.slice(n+1):i+new Array(n-i.length+2).join("0")}var tQ=z(()=>{"use strict";Jv();o(tw,"default")});var iL,rQ=z(()=>{"use strict";Jv();rL();tQ();iL={"%":o((e,t)=>(e*100).toFixed(t),"%"),b:o(e=>Math.round(e).toString(2),"b"),c:o(e=>e+"","c"),d:XR,e:o((e,t)=>e.toExponential(t),"e"),f:o((e,t)=>e.toFixed(t),"f"),g:o((e,t)=>e.toPrecision(t),"g"),o:o(e=>Math.round(e).toString(8),"o"),p:o((e,t)=>tw(e*100,t),"p"),r:tw,s:tL,X:o(e=>Math.round(e).toString(16).toUpperCase(),"X"),x:o(e=>Math.round(e).toString(16),"x")}});function rw(e){return e}var iQ=z(()=>{"use strict";o(rw,"default")});function nL(e){var t=e.grouping===void 0||e.thousands===void 0?rw:KR(nQ.call(e.grouping,Number),e.thousands+""),r=e.currency===void 0?"":e.currency[0]+"",i=e.currency===void 0?"":e.currency[1]+"",n=e.decimal===void 0?".":e.decimal+"",a=e.numerals===void 0?rw:ZR(nQ.call(e.numerals,String)),s=e.percent===void 0?"%":e.percent+"",l=e.minus===void 0?"\u2212":e.minus+"",u=e.nan===void 0?"NaN":e.nan+"";function h(f){f=Kh(f);var p=f.fill,m=f.align,g=f.sign,y=f.symbol,v=f.zero,x=f.width,b=f.comma,T=f.precision,w=f.trim,C=f.type;C==="n"?(b=!0,C="g"):iL[C]||(T===void 0&&(T=12),w=!0,C="g"),(v||p==="0"&&m==="=")&&(v=!0,p="0",m="=");var k=y==="$"?r:y==="#"&&/[boxX]/.test(C)?"0"+C.toLowerCase():"",E=y==="$"?i:/[%p]/.test(C)?s:"",A=iL[C],N=/[defgprs%]/.test(C);T=T===void 0?6:/[gprs]/.test(C)?Math.max(1,Math.min(21,T)):Math.max(0,Math.min(20,T));function P(I){var D=k,_=E,R,M,L;if(C==="c")_=A(I)+_,I="";else{I=+I;var B=I<0||1/I<0;if(I=isNaN(I)?u:A(Math.abs(I),T),w&&(I=JR(I)),B&&+I==0&&g!=="+"&&(B=!1),D=(B?g==="("?g:l:g==="-"||g==="("?"":g)+D,_=(C==="s"?aQ[8+eL/3]:"")+_+(B&&g==="("?")":""),N){for(R=-1,M=I.length;++R<M;)if(L=I.charCodeAt(R),48>L||L>57){_=(L===46?n+I.slice(R+1):I.slice(R))+_,I=I.slice(0,R);break}}}b&&!v&&(I=t(I,1/0));var O=D.length+I.length+_.length,$=O<x?new Array(x-O+1).join(p):"";switch(b&&v&&(I=t($+I,$.length?x-_.length:1/0),$=""),m){case"<":I=D+I+_+$;break;case"=":I=D+$+I+_;break;case"^":I=$.slice(0,O=$.length>>1)+D+I+_+$.slice(O);break;default:I=$+D+I+_;break}return a(I)}return o(P,"format"),P.toString=function(){return f+""},P}o(h,"newFormat");function d(f,p){var m=h((f=Kh(f),f.type="f",f)),g=Math.max(-8,Math.min(8,Math.floor(Cl(p)/3)))*3,y=Math.pow(10,-g),v=aQ[8+g/3];return function(x){return m(y*x)+v}}return o(d,"formatPrefix"),{format:h,formatPrefix:d}}var nQ,aQ,sQ=z(()=>{"use strict";ex();QZ();JZ();QR();eQ();rQ();rL();iQ();nQ=Array.prototype.map,aQ=["y","z","a","f","p","n","\xB5","m","","k","M","G","T","P","E","Z","Y"];o(nL,"default")});function aL(e){return iw=nL(e),mc=iw.format,nw=iw.formatPrefix,iw}var iw,mc,nw,oQ=z(()=>{"use strict";sQ();aL({thousands:",",grouping:[3],currency:["$",""]});o(aL,"defaultLocale")});function aw(e){return Math.max(0,-Cl(Math.abs(e)))}var lQ=z(()=>{"use strict";ex();o(aw,"default")});function sw(e,t){return Math.max(0,Math.max(-8,Math.min(8,Math.floor(Cl(t)/3)))*3-Cl(Math.abs(e)))}var cQ=z(()=>{"use strict";ex();o(sw,"default")});function ow(e,t){return e=Math.abs(e),t=Math.abs(t)-e,Math.max(0,Cl(t)-Cl(e))+1}var uQ=z(()=>{"use strict";ex();o(ow,"default")});var sL=z(()=>{"use strict";oQ();QR();lQ();cQ();uQ()});var hQ=z(()=>{"use strict"});function hFe(e){var t=0,r=e.children,i=r&&r.length;if(!i)t=1;else for(;--i>=0;)t+=r[i].value;e.value=t}function oL(){return this.eachAfter(hFe)}var dQ=z(()=>{"use strict";o(hFe,"count");o(oL,"default")});function lL(e,t){let r=-1;for(let i of this)e.call(t,i,++r,this);return this}var fQ=z(()=>{"use strict";o(lL,"default")});function cL(e,t){for(var r=this,i=[r],n,a,s=-1;r=i.pop();)if(e.call(t,r,++s,this),n=r.children)for(a=n.length-1;a>=0;--a)i.push(n[a]);return this}var pQ=z(()=>{"use strict";o(cL,"default")});function uL(e,t){for(var r=this,i=[r],n=[],a,s,l,u=-1;r=i.pop();)if(n.push(r),a=r.children)for(s=0,l=a.length;s<l;++s)i.push(a[s]);for(;r=n.pop();)e.call(t,r,++u,this);return this}var mQ=z(()=>{"use strict";o(uL,"default")});function hL(e,t){let r=-1;for(let i of this)if(e.call(t,i,++r,this))return i}var gQ=z(()=>{"use strict";o(hL,"default")});function dL(e){return this.eachAfter(function(t){for(var r=+e(t.data)||0,i=t.children,n=i&&i.length;--n>=0;)r+=i[n].value;t.value=r})}var yQ=z(()=>{"use strict";o(dL,"default")});function fL(e){return this.eachBefore(function(t){t.children&&t.children.sort(e)})}var vQ=z(()=>{"use strict";o(fL,"default")});function pL(e){for(var t=this,r=dFe(t,e),i=[t];t!==r;)t=t.parent,i.push(t);for(var n=i.length;e!==r;)i.splice(n,0,e),e=e.parent;return i}function dFe(e,t){if(e===t)return e;var r=e.ancestors(),i=t.ancestors(),n=null;for(e=r.pop(),t=i.pop();e===t;)n=e,e=r.pop(),t=i.pop();return n}var xQ=z(()=>{"use strict";o(pL,"default");o(dFe,"leastCommonAncestor")});function mL(){for(var e=this,t=[e];e=e.parent;)t.push(e);return t}var bQ=z(()=>{"use strict";o(mL,"default")});function gL(){return Array.from(this)}var TQ=z(()=>{"use strict";o(gL,"default")});function yL(){var e=[];return this.eachBefore(function(t){t.children||e.push(t)}),e}var CQ=z(()=>{"use strict";o(yL,"default")});function vL(){var e=this,t=[];return e.each(function(r){r!==e&&t.push({source:r.parent,target:r})}),t}var kQ=z(()=>{"use strict";o(vL,"default")});function*xL(){var e=this,t,r=[e],i,n,a;do for(t=r.reverse(),r=[];e=t.pop();)if(yield e,i=e.children)for(n=0,a=i.length;n<a;++n)r.push(i[n]);while(r.length)}var wQ=z(()=>{"use strict";o(xL,"default")});function tg(e,t){e instanceof Map?(e=[void 0,e],t===void 0&&(t=mFe)):t===void 0&&(t=pFe);for(var r=new tx(e),i,n=[r],a,s,l,u;i=n.pop();)if((s=t(i.data))&&(u=(s=Array.from(s)).length))for(i.children=s,l=u-1;l>=0;--l)n.push(a=s[l]=new tx(s[l])),a.parent=i,a.depth=i.depth+1;return r.eachBefore(yFe)}function fFe(){return tg(this).eachBefore(gFe)}function pFe(e){return e.children}function mFe(e){return Array.isArray(e)?e[1]:null}function gFe(e){e.data.value!==void 0&&(e.value=e.data.value),e.data=e.data.data}function yFe(e){var t=0;do e.height=t;while((e=e.parent)&&e.height<++t)}function tx(e){this.data=e,this.depth=this.height=0,this.parent=null}var SQ=z(()=>{"use strict";dQ();fQ();pQ();mQ();gQ();yQ();vQ();xQ();bQ();TQ();CQ();kQ();wQ();o(tg,"hierarchy");o(fFe,"node_copy");o(pFe,"objectChildren");o(mFe,"mapChildren");o(gFe,"copyData");o(yFe,"computeHeight");o(tx,"Node");tx.prototype=tg.prototype={constructor:tx,count:oL,each:lL,eachAfter:uL,eachBefore:cL,find:hL,sum:dL,sort:fL,path:pL,ancestors:mL,descendants:gL,leaves:yL,links:vL,copy:fFe,[Symbol.iterator]:xL}});function EQ(e){if(typeof e!="function")throw new Error;return e}var AQ=z(()=>{"use strict";o(EQ,"required")});function rg(){return 0}function op(e){return function(){return e}}var _Q=z(()=>{"use strict";o(rg,"constantZero");o(op,"default")});function bL(e){e.x0=Math.round(e.x0),e.y0=Math.round(e.y0),e.x1=Math.round(e.x1),e.y1=Math.round(e.y1)}var DQ=z(()=>{"use strict";o(bL,"default")});function TL(e,t,r,i,n){for(var a=e.children,s,l=-1,u=a.length,h=e.value&&(i-t)/e.value;++l<u;)s=a[l],s.y0=r,s.y1=n,s.x0=t,s.x1=t+=s.value*h}var RQ=z(()=>{"use strict";o(TL,"default")});function CL(e,t,r,i,n){for(var a=e.children,s,l=-1,u=a.length,h=e.value&&(n-r)/e.value;++l<u;)s=a[l],s.x0=t,s.x1=i,s.y0=r,s.y1=r+=s.value*h}var LQ=z(()=>{"use strict";o(CL,"default")});function xFe(e,t,r,i,n,a){for(var s=[],l=t.children,u,h,d=0,f=0,p=l.length,m,g,y=t.value,v,x,b,T,w,C,k;d<p;){m=n-r,g=a-i;do v=l[f++].value;while(!v&&f<p);for(x=b=v,C=Math.max(g/m,m/g)/(y*e),k=v*v*C,w=Math.max(b/k,k/x);f<p;++f){if(v+=h=l[f].value,h<x&&(x=h),h>b&&(b=h),k=v*v*C,T=Math.max(b/k,k/x),T>w){v-=h;break}w=T}s.push(u={value:v,dice:m<g,children:l.slice(d,f)}),u.dice?TL(u,r,i,n,y?i+=g*v/y:a):CL(u,r,i,y?r+=m*v/y:n,a),y-=v,d=f}return s}var vFe,MQ,NQ=z(()=>{"use strict";RQ();LQ();vFe=(1+Math.sqrt(5))/2;o(xFe,"squarifyRatio");MQ=o((function e(t){function r(i,n,a,s,l){xFe(t,i,n,a,s,l)}return o(r,"squarify"),r.ratio=function(i){return e((i=+i)>1?i:1)},r}),"custom")(vFe)});function lw(){var e=MQ,t=!1,r=1,i=1,n=[0],a=rg,s=rg,l=rg,u=rg,h=rg;function d(p){return p.x0=p.y0=0,p.x1=r,p.y1=i,p.eachBefore(f),n=[0],t&&p.eachBefore(bL),p}o(d,"treemap");function f(p){var m=n[p.depth],g=p.x0+m,y=p.y0+m,v=p.x1-m,x=p.y1-m;v<g&&(g=v=(g+v)/2),x<y&&(y=x=(y+x)/2),p.x0=g,p.y0=y,p.x1=v,p.y1=x,p.children&&(m=n[p.depth+1]=a(p)/2,g+=h(p)-m,y+=s(p)-m,v-=l(p)-m,x-=u(p)-m,v<g&&(g=v=(g+v)/2),x<y&&(y=x=(y+x)/2),e(p,g,y,v,x))}return o(f,"positionNode"),d.round=function(p){return arguments.length?(t=!!p,d):t},d.size=function(p){return arguments.length?(r=+p[0],i=+p[1],d):[r,i]},d.tile=function(p){return arguments.length?(e=EQ(p),d):e},d.padding=function(p){return arguments.length?d.paddingInner(p).paddingOuter(p):d.paddingInner()},d.paddingInner=function(p){return arguments.length?(a=typeof p=="function"?p:op(+p),d):a},d.paddingOuter=function(p){return arguments.length?d.paddingTop(p).paddingRight(p).paddingBottom(p).paddingLeft(p):d.paddingTop()},d.paddingTop=function(p){return arguments.length?(s=typeof p=="function"?p:op(+p),d):s},d.paddingRight=function(p){return arguments.length?(l=typeof p=="function"?p:op(+p),d):l},d.paddingBottom=function(p){return arguments.length?(u=typeof p=="function"?p:op(+p),d):u},d.paddingLeft=function(p){return arguments.length?(h=typeof p=="function"?p:op(+p),d):h},d}var IQ=z(()=>{"use strict";DQ();NQ();AQ();_Q();o(lw,"default")});var OQ=z(()=>{"use strict";SQ();IQ()});var PQ=z(()=>{"use strict"});var BQ=z(()=>{"use strict"});function Zh(e,t){switch(arguments.length){case 0:break;case 1:this.range(e);break;default:this.range(t).domain(e);break}return this}var rx=z(()=>{"use strict";o(Zh,"initRange")});function ro(){var e=new Gm,t=[],r=[],i=kL;function n(a){let s=e.get(a);if(s===void 0){if(i!==kL)return i;e.set(a,s=t.push(a)-1)}return r[s%r.length]}return o(n,"scale"),n.domain=function(a){if(!arguments.length)return t.slice();t=[],e=new Gm;for(let s of a)e.has(s)||e.set(s,t.push(s)-1);return n},n.range=function(a){return arguments.length?(r=Array.from(a),n):r.slice()},n.unknown=function(a){return arguments.length?(i=a,n):i},n.copy=function(){return ro(t,r).unknown(i)},Zh.apply(n,arguments),n}var kL,wL=z(()=>{"use strict";qh();rx();kL=Symbol("implicit");o(ro,"ordinal")});function ig(){var e=ro().unknown(void 0),t=e.domain,r=e.range,i=0,n=1,a,s,l=!1,u=0,h=0,d=.5;delete e.unknown;function f(){var p=t().length,m=n<i,g=m?n:i,y=m?i:n;a=(y-g)/Math.max(1,p-u+h*2),l&&(a=Math.floor(a)),g+=(y-g-a*(p-u))*d,s=a*(1-u),l&&(g=Math.round(g),s=Math.round(s));var v=Sk(p).map(function(x){return g+a*x});return r(m?v.reverse():v)}return o(f,"rescale"),e.domain=function(p){return arguments.length?(t(p),f()):t()},e.range=function(p){return arguments.length?([i,n]=p,i=+i,n=+n,f()):[i,n]},e.rangeRound=function(p){return[i,n]=p,i=+i,n=+n,l=!0,f()},e.bandwidth=function(){return s},e.step=function(){return a},e.round=function(p){return arguments.length?(l=!!p,f()):l},e.padding=function(p){return arguments.length?(u=Math.min(1,h=+p),f()):u},e.paddingInner=function(p){return arguments.length?(u=Math.min(1,p),f()):u},e.paddingOuter=function(p){return arguments.length?(h=+p,f()):h},e.align=function(p){return arguments.length?(d=Math.max(0,Math.min(1,p)),f()):d},e.copy=function(){return ig(t(),[i,n]).round(l).paddingInner(u).paddingOuter(h).align(d)},Zh.apply(f(),arguments)}var FQ=z(()=>{"use strict";qh();rx();wL();o(ig,"band")});function SL(e){return function(){return e}}var $Q=z(()=>{"use strict";o(SL,"constants")});function EL(e){return+e}var zQ=z(()=>{"use strict";o(EL,"number")});function ng(e){return e}function AL(e,t){return(t-=e=+e)?function(r){return(r-e)/t}:SL(isNaN(t)?NaN:.5)}function bFe(e,t){var r;return e>t&&(r=e,e=t,t=r),function(i){return Math.max(e,Math.min(t,i))}}function TFe(e,t,r){var i=e[0],n=e[1],a=t[0],s=t[1];return n<i?(i=AL(n,i),a=r(s,a)):(i=AL(i,n),a=r(a,s)),function(l){return a(i(l))}}function CFe(e,t,r){var i=Math.min(e.length,t.length)-1,n=new Array(i),a=new Array(i),s=-1;for(e[i]<e[0]&&(e=e.slice().reverse(),t=t.slice().reverse());++s<i;)n[s]=AL(e[s],e[s+1]),a[s]=r(t[s],t[s+1]);return function(l){var u=jD(e,l,1,i)-1;return a[u](n[u](l))}}function cw(e,t){return t.domain(e.domain()).range(e.range()).interpolate(e.interpolate()).clamp(e.clamp()).unknown(e.unknown())}function kFe(){var e=GQ,t=GQ,r=Xh,i,n,a,s=ng,l,u,h;function d(){var p=Math.min(e.length,t.length);return s!==ng&&(s=bFe(e[0],e[p-1])),l=p>2?CFe:TFe,u=h=null,f}o(d,"rescale");function f(p){return p==null||isNaN(p=+p)?a:(u||(u=l(e.map(i),t,r)))(i(s(p)))}return o(f,"scale"),f.invert=function(p){return s(n((h||(h=l(t,e.map(i),Zn)))(p)))},f.domain=function(p){return arguments.length?(e=Array.from(p,EL),d()):e.slice()},f.range=function(p){return arguments.length?(t=Array.from(p),d()):t.slice()},f.rangeRound=function(p){return t=Array.from(p),r=$k,d()},f.clamp=function(p){return arguments.length?(s=p?!0:ng,d()):s!==ng},f.interpolate=function(p){return arguments.length?(r=p,d()):r},f.unknown=function(p){return arguments.length?(a=p,f):a},function(p,m){return i=p,n=m,d()}}function ix(){return kFe()(ng,ng)}var GQ,_L=z(()=>{"use strict";qh();Qm();$Q();zQ();GQ=[0,1];o(ng,"identity");o(AL,"normalize");o(bFe,"clamper");o(TFe,"bimap");o(CFe,"polymap");o(cw,"copy");o(kFe,"transformer");o(ix,"continuous")});function DL(e,t,r,i){var n=Vm(e,t,r),a;switch(i=Kh(i??",f"),i.type){case"s":{var s=Math.max(Math.abs(e),Math.abs(t));return i.precision==null&&!isNaN(a=sw(n,s))&&(i.precision=a),nw(i,s)}case"":case"e":case"g":case"p":case"r":{i.precision==null&&!isNaN(a=ow(n,Math.max(Math.abs(e),Math.abs(t))))&&(i.precision=a-(i.type==="e"));break}case"f":case"%":{i.precision==null&&!isNaN(a=aw(n))&&(i.precision=a-(i.type==="%")*2);break}}return mc(i)}var VQ=z(()=>{"use strict";qh();sL();o(DL,"tickFormat")});function wFe(e){var t=e.domain;return e.ticks=function(r){var i=t();return Ck(i[0],i[i.length-1],r??10)},e.tickFormat=function(r,i){var n=t();return DL(n[0],n[n.length-1],r??10,i)},e.nice=function(r){r==null&&(r=10);var i=t(),n=0,a=i.length-1,s=i[n],l=i[a],u,h,d=10;for(l<s&&(h=s,s=l,l=h,h=n,n=a,a=h);d-- >0;){if(h=Lv(s,l,r),h===u)return i[n]=s,i[a]=l,t(i);if(h>0)s=Math.floor(s/h)*h,l=Math.ceil(l/h)*h;else if(h<0)s=Math.ceil(s*h)/h,l=Math.floor(l*h)/h;else break;u=h}return e},e}function kl(){var e=ix();return e.copy=function(){return cw(e,kl())},Zh.apply(e,arguments),wFe(e)}var WQ=z(()=>{"use strict";qh();_L();rx();VQ();o(wFe,"linearish");o(kl,"linear")});function RL(e,t){e=e.slice();var r=0,i=e.length-1,n=e[r],a=e[i],s;return a<n&&(s=r,r=i,i=s,s=n,n=a,a=s),e[r]=t.floor(n),e[i]=t.ceil(a),e}var qQ=z(()=>{"use strict";o(RL,"nice")});function ki(e,t,r,i){function n(a){return e(a=arguments.length===0?new Date:new Date(+a)),a}return o(n,"interval"),n.floor=a=>(e(a=new Date(+a)),a),n.ceil=a=>(e(a=new Date(a-1)),t(a,1),e(a),a),n.round=a=>{let s=n(a),l=n.ceil(a);return a-s<l-a?s:l},n.offset=(a,s)=>(t(a=new Date(+a),s==null?1:Math.floor(s)),a),n.range=(a,s,l)=>{let u=[];if(a=n.ceil(a),l=l==null?1:Math.floor(l),!(a<s)||!(l>0))return u;let h;do u.push(h=new Date(+a)),t(a,l),e(a);while(h<a&&a<s);return u},n.filter=a=>ki(s=>{if(s>=s)for(;e(s),!a(s);)s.setTime(s-1)},(s,l)=>{if(s>=s)if(l<0)for(;++l<=0;)for(;t(s,-1),!a(s););else for(;--l>=0;)for(;t(s,1),!a(s););}),r&&(n.count=(a,s)=>(LL.setTime(+a),ML.setTime(+s),e(LL),e(ML),Math.floor(r(LL,ML))),n.every=a=>(a=Math.floor(a),!isFinite(a)||!(a>0)?null:a>1?n.filter(i?s=>i(s)%a===0:s=>n.count(0,s)%a===0):n)),n}var LL,ML,Du=z(()=>{"use strict";LL=new Date,ML=new Date;o(ki,"timeInterval")});var gc,UQ,NL=z(()=>{"use strict";Du();gc=ki(()=>{},(e,t)=>{e.setTime(+e+t)},(e,t)=>t-e);gc.every=e=>(e=Math.floor(e),!isFinite(e)||!(e>0)?null:e>1?ki(t=>{t.setTime(Math.floor(t/e)*e)},(t,r)=>{t.setTime(+t+r*e)},(t,r)=>(r-t)/e):gc);UQ=gc.range});var io,HQ,IL=z(()=>{"use strict";Du();io=ki(e=>{e.setTime(e-e.getMilliseconds())},(e,t)=>{e.setTime(+e+t*1e3)},(e,t)=>(t-e)/1e3,e=>e.getUTCSeconds()),HQ=io.range});var Ru,SFe,uw,EFe,OL=z(()=>{"use strict";Du();Ru=ki(e=>{e.setTime(e-e.getMilliseconds()-e.getSeconds()*1e3)},(e,t)=>{e.setTime(+e+t*6e4)},(e,t)=>(t-e)/6e4,e=>e.getMinutes()),SFe=Ru.range,uw=ki(e=>{e.setUTCSeconds(0,0)},(e,t)=>{e.setTime(+e+t*6e4)},(e,t)=>(t-e)/6e4,e=>e.getUTCMinutes()),EFe=uw.range});var Lu,AFe,hw,_Fe,PL=z(()=>{"use strict";Du();Lu=ki(e=>{e.setTime(e-e.getMilliseconds()-e.getSeconds()*1e3-e.getMinutes()*6e4)},(e,t)=>{e.setTime(+e+t*36e5)},(e,t)=>(t-e)/36e5,e=>e.getHours()),AFe=Lu.range,hw=ki(e=>{e.setUTCMinutes(0,0,0)},(e,t)=>{e.setTime(+e+t*36e5)},(e,t)=>(t-e)/36e5,e=>e.getUTCHours()),_Fe=hw.range});var Oo,DFe,ax,RFe,dw,LFe,BL=z(()=>{"use strict";Du();Oo=ki(e=>e.setHours(0,0,0,0),(e,t)=>e.setDate(e.getDate()+t),(e,t)=>(t-e-(t.getTimezoneOffset()-e.getTimezoneOffset())*6e4)/864e5,e=>e.getDate()-1),DFe=Oo.range,ax=ki(e=>{e.setUTCHours(0,0,0,0)},(e,t)=>{e.setUTCDate(e.getUTCDate()+t)},(e,t)=>(t-e)/864e5,e=>e.getUTCDate()-1),RFe=ax.range,dw=ki(e=>{e.setUTCHours(0,0,0,0)},(e,t)=>{e.setUTCDate(e.getUTCDate()+t)},(e,t)=>(t-e)/864e5,e=>Math.floor(e/864e5)),LFe=dw.range});function up(e){return ki(t=>{t.setDate(t.getDate()-(t.getDay()+7-e)%7),t.setHours(0,0,0,0)},(t,r)=>{t.setDate(t.getDate()+r*7)},(t,r)=>(r-t-(r.getTimezoneOffset()-t.getTimezoneOffset())*6e4)/6048e5)}function hp(e){return ki(t=>{t.setUTCDate(t.getUTCDate()-(t.getUTCDay()+7-e)%7),t.setUTCHours(0,0,0,0)},(t,r)=>{t.setUTCDate(t.getUTCDate()+r*7)},(t,r)=>(r-t)/6048e5)}var wl,Qh,fw,pw,vc,mw,gw,jQ,MFe,NFe,IFe,OFe,PFe,BFe,dp,ag,XQ,KQ,Jh,ZQ,QQ,JQ,FFe,$Fe,zFe,GFe,VFe,WFe,FL=z(()=>{"use strict";Du();o(up,"timeWeekday");wl=up(0),Qh=up(1),fw=up(2),pw=up(3),vc=up(4),mw=up(5),gw=up(6),jQ=wl.range,MFe=Qh.range,NFe=fw.range,IFe=pw.range,OFe=vc.range,PFe=mw.range,BFe=gw.range;o(hp,"utcWeekday");dp=hp(0),ag=hp(1),XQ=hp(2),KQ=hp(3),Jh=hp(4),ZQ=hp(5),QQ=hp(6),JQ=dp.range,FFe=ag.range,$Fe=XQ.range,zFe=KQ.range,GFe=Jh.range,VFe=ZQ.range,WFe=QQ.range});var Mu,qFe,yw,UFe,$L=z(()=>{"use strict";Du();Mu=ki(e=>{e.setDate(1),e.setHours(0,0,0,0)},(e,t)=>{e.setMonth(e.getMonth()+t)},(e,t)=>t.getMonth()-e.getMonth()+(t.getFullYear()-e.getFullYear())*12,e=>e.getMonth()),qFe=Mu.range,yw=ki(e=>{e.setUTCDate(1),e.setUTCHours(0,0,0,0)},(e,t)=>{e.setUTCMonth(e.getUTCMonth()+t)},(e,t)=>t.getUTCMonth()-e.getUTCMonth()+(t.getUTCFullYear()-e.getUTCFullYear())*12,e=>e.getUTCMonth()),UFe=yw.range});var no,HFe,Sl,YFe,zL=z(()=>{"use strict";Du();no=ki(e=>{e.setMonth(0,1),e.setHours(0,0,0,0)},(e,t)=>{e.setFullYear(e.getFullYear()+t)},(e,t)=>t.getFullYear()-e.getFullYear(),e=>e.getFullYear());no.every=e=>!isFinite(e=Math.floor(e))||!(e>0)?null:ki(t=>{t.setFullYear(Math.floor(t.getFullYear()/e)*e),t.setMonth(0,1),t.setHours(0,0,0,0)},(t,r)=>{t.setFullYear(t.getFullYear()+r*e)});HFe=no.range,Sl=ki(e=>{e.setUTCMonth(0,1),e.setUTCHours(0,0,0,0)},(e,t)=>{e.setUTCFullYear(e.getUTCFullYear()+t)},(e,t)=>t.getUTCFullYear()-e.getUTCFullYear(),e=>e.getUTCFullYear());Sl.every=e=>!isFinite(e=Math.floor(e))||!(e>0)?null:ki(t=>{t.setUTCFullYear(Math.floor(t.getUTCFullYear()/e)*e),t.setUTCMonth(0,1),t.setUTCHours(0,0,0,0)},(t,r)=>{t.setUTCFullYear(t.getUTCFullYear()+r*e)});YFe=Sl.range});function tJ(e,t,r,i,n,a){let s=[[io,1,1e3],[io,5,5*1e3],[io,15,15*1e3],[io,30,30*1e3],[a,1,6e4],[a,5,5*6e4],[a,15,15*6e4],[a,30,30*6e4],[n,1,36e5],[n,3,3*36e5],[n,6,6*36e5],[n,12,12*36e5],[i,1,864e5],[i,2,2*864e5],[r,1,6048e5],[t,1,2592e6],[t,3,3*2592e6],[e,1,31536e6]];function l(h,d,f){let p=d<h;p&&([h,d]=[d,h]);let m=f&&typeof f.range=="function"?f:u(h,d,f),g=m?m.range(h,+d+1):[];return p?g.reverse():g}o(l,"ticks");function u(h,d,f){let p=Math.abs(d-h)/f,m=Qf(([,,v])=>v).right(s,p);if(m===s.length)return e.every(Vm(h/31536e6,d/31536e6,f));if(m===0)return gc.every(Math.max(Vm(h,d,f),1));let[g,y]=s[p/s[m-1][2]<s[m][2]/p?m-1:m];return g.every(y)}return o(u,"tickInterval"),[l,u]}var XFe,KFe,GL,VL,rJ=z(()=>{"use strict";qh();NL();IL();OL();PL();BL();FL();$L();zL();o(tJ,"ticker");[XFe,KFe]=tJ(Sl,yw,dp,dw,hw,uw),[GL,VL]=tJ(no,Mu,wl,Oo,Lu,Ru)});var vw=z(()=>{"use strict";NL();IL();OL();PL();BL();FL();$L();zL();rJ()});function WL(e){if(0<=e.y&&e.y<100){var t=new Date(-1,e.m,e.d,e.H,e.M,e.S,e.L);return t.setFullYear(e.y),t}return new Date(e.y,e.m,e.d,e.H,e.M,e.S,e.L)}function qL(e){if(0<=e.y&&e.y<100){var t=new Date(Date.UTC(-1,e.m,e.d,e.H,e.M,e.S,e.L));return t.setUTCFullYear(e.y),t}return new Date(Date.UTC(e.y,e.m,e.d,e.H,e.M,e.S,e.L))}function sx(e,t,r){return{y:e,m:t,d:r,H:0,M:0,S:0,L:0}}function UL(e){var t=e.dateTime,r=e.date,i=e.time,n=e.periods,a=e.days,s=e.shortDays,l=e.months,u=e.shortMonths,h=ox(n),d=lx(n),f=ox(a),p=lx(a),m=ox(s),g=lx(s),y=ox(l),v=lx(l),x=ox(u),b=lx(u),T={a:B,A:O,b:$,B:G,c:null,d:lJ,e:lJ,f:x$e,g:D$e,G:L$e,H:g$e,I:y$e,j:v$e,L:fJ,m:b$e,M:T$e,p:F,q:V,Q:hJ,s:dJ,S:C$e,u:k$e,U:w$e,V:S$e,w:E$e,W:A$e,x:null,X:null,y:_$e,Y:R$e,Z:M$e,"%":uJ},w={a:H,A:j,b:U,B:Q,c:null,d:cJ,e:cJ,f:P$e,g:H$e,G:j$e,H:N$e,I:I$e,j:O$e,L:mJ,m:B$e,M:F$e,p:Y,q:ae,Q:hJ,s:dJ,S:$$e,u:z$e,U:G$e,V:V$e,w:W$e,W:q$e,x:null,X:null,y:U$e,Y:Y$e,Z:X$e,"%":uJ},C={a:P,A:I,b:D,B:_,c:R,d:sJ,e:sJ,f:d$e,g:aJ,G:nJ,H:oJ,I:oJ,j:l$e,L:h$e,m:o$e,M:c$e,p:N,q:s$e,Q:p$e,s:m$e,S:u$e,u:t$e,U:r$e,V:i$e,w:e$e,W:n$e,x:M,X:L,y:aJ,Y:nJ,Z:a$e,"%":f$e};T.x=k(r,T),T.X=k(i,T),T.c=k(t,T),w.x=k(r,w),w.X=k(i,w),w.c=k(t,w);function k(J,te){return function(re){var ee=[],Te=-1,ue=0,De=J.length,Ie,Ee,we;for(re instanceof Date||(re=new Date(+re));++Te<De;)J.charCodeAt(Te)===37&&(ee.push(J.slice(ue,Te)),(Ee=iJ[Ie=J.charAt(++Te)])!=null?Ie=J.charAt(++Te):Ee=Ie==="e"?" ":"0",(we=te[Ie])&&(Ie=we(re,Ee)),ee.push(Ie),ue=Te+1);return ee.push(J.slice(ue,Te)),ee.join("")}}o(k,"newFormat");function E(J,te){return function(re){var ee=sx(1900,void 0,1),Te=A(ee,J,re+="",0),ue,De;if(Te!=re.length)return null;if("Q"in ee)return new Date(ee.Q);if("s"in ee)return new Date(ee.s*1e3+("L"in ee?ee.L:0));if(te&&!("Z"in ee)&&(ee.Z=0),"p"in ee&&(ee.H=ee.H%12+ee.p*12),ee.m===void 0&&(ee.m="q"in ee?ee.q:0),"V"in ee){if(ee.V<1||ee.V>53)return null;"w"in ee||(ee.w=1),"Z"in ee?(ue=qL(sx(ee.y,0,1)),De=ue.getUTCDay(),ue=De>4||De===0?ag.ceil(ue):ag(ue),ue=ax.offset(ue,(ee.V-1)*7),ee.y=ue.getUTCFullYear(),ee.m=ue.getUTCMonth(),ee.d=ue.getUTCDate()+(ee.w+6)%7):(ue=WL(sx(ee.y,0,1)),De=ue.getDay(),ue=De>4||De===0?Qh.ceil(ue):Qh(ue),ue=Oo.offset(ue,(ee.V-1)*7),ee.y=ue.getFullYear(),ee.m=ue.getMonth(),ee.d=ue.getDate()+(ee.w+6)%7)}else("W"in ee||"U"in ee)&&("w"in ee||(ee.w="u"in ee?ee.u%7:"W"in ee?1:0),De="Z"in ee?qL(sx(ee.y,0,1)).getUTCDay():WL(sx(ee.y,0,1)).getDay(),ee.m=0,ee.d="W"in ee?(ee.w+6)%7+ee.W*7-(De+5)%7:ee.w+ee.U*7-(De+6)%7);return"Z"in ee?(ee.H+=ee.Z/100|0,ee.M+=ee.Z%100,qL(ee)):WL(ee)}}o(E,"newParse");function A(J,te,re,ee){for(var Te=0,ue=te.length,De=re.length,Ie,Ee;Te<ue;){if(ee>=De)return-1;if(Ie=te.charCodeAt(Te++),Ie===37){if(Ie=te.charAt(Te++),Ee=C[Ie in iJ?te.charAt(Te++):Ie],!Ee||(ee=Ee(J,re,ee))<0)return-1}else if(Ie!=re.charCodeAt(ee++))return-1}return ee}o(A,"parseSpecifier");function N(J,te,re){var ee=h.exec(te.slice(re));return ee?(J.p=d.get(ee[0].toLowerCase()),re+ee[0].length):-1}o(N,"parsePeriod");function P(J,te,re){var ee=m.exec(te.slice(re));return ee?(J.w=g.get(ee[0].toLowerCase()),re+ee[0].length):-1}o(P,"parseShortWeekday");function I(J,te,re){var ee=f.exec(te.slice(re));return ee?(J.w=p.get(ee[0].toLowerCase()),re+ee[0].length):-1}o(I,"parseWeekday");function D(J,te,re){var ee=x.exec(te.slice(re));return ee?(J.m=b.get(ee[0].toLowerCase()),re+ee[0].length):-1}o(D,"parseShortMonth");function _(J,te,re){var ee=y.exec(te.slice(re));return ee?(J.m=v.get(ee[0].toLowerCase()),re+ee[0].length):-1}o(_,"parseMonth");function R(J,te,re){return A(J,t,te,re)}o(R,"parseLocaleDateTime");function M(J,te,re){return A(J,r,te,re)}o(M,"parseLocaleDate");function L(J,te,re){return A(J,i,te,re)}o(L,"parseLocaleTime");function B(J){return s[J.getDay()]}o(B,"formatShortWeekday");function O(J){return a[J.getDay()]}o(O,"formatWeekday");function $(J){return u[J.getMonth()]}o($,"formatShortMonth");function G(J){return l[J.getMonth()]}o(G,"formatMonth");function F(J){return n[+(J.getHours()>=12)]}o(F,"formatPeriod");function V(J){return 1+~~(J.getMonth()/3)}o(V,"formatQuarter");function H(J){return s[J.getUTCDay()]}o(H,"formatUTCShortWeekday");function j(J){return a[J.getUTCDay()]}o(j,"formatUTCWeekday");function U(J){return u[J.getUTCMonth()]}o(U,"formatUTCShortMonth");function Q(J){return l[J.getUTCMonth()]}o(Q,"formatUTCMonth");function Y(J){return n[+(J.getUTCHours()>=12)]}o(Y,"formatUTCPeriod");function ae(J){return 1+~~(J.getUTCMonth()/3)}return o(ae,"formatUTCQuarter"),{format:o(function(J){var te=k(J+="",T);return te.toString=function(){return J},te},"format"),parse:o(function(J){var te=E(J+="",!1);return te.toString=function(){return J},te},"parse"),utcFormat:o(function(J){var te=k(J+="",w);return te.toString=function(){return J},te},"utcFormat"),utcParse:o(function(J){var te=E(J+="",!0);return te.toString=function(){return J},te},"utcParse")}}function Qr(e,t,r){var i=e<0?"-":"",n=(i?-e:e)+"",a=n.length;return i+(a<r?new Array(r-a+1).join(t)+n:n)}function JFe(e){return e.replace(QFe,"\\$&")}function ox(e){return new RegExp("^(?:"+e.map(JFe).join("|")+")","i")}function lx(e){return new Map(e.map((t,r)=>[t.toLowerCase(),r]))}function e$e(e,t,r){var i=Qn.exec(t.slice(r,r+1));return i?(e.w=+i[0],r+i[0].length):-1}function t$e(e,t,r){var i=Qn.exec(t.slice(r,r+1));return i?(e.u=+i[0],r+i[0].length):-1}function r$e(e,t,r){var i=Qn.exec(t.slice(r,r+2));return i?(e.U=+i[0],r+i[0].length):-1}function i$e(e,t,r){var i=Qn.exec(t.slice(r,r+2));return i?(e.V=+i[0],r+i[0].length):-1}function n$e(e,t,r){var i=Qn.exec(t.slice(r,r+2));return i?(e.W=+i[0],r+i[0].length):-1}function nJ(e,t,r){var i=Qn.exec(t.slice(r,r+4));return i?(e.y=+i[0],r+i[0].length):-1}function aJ(e,t,r){var i=Qn.exec(t.slice(r,r+2));return i?(e.y=+i[0]+(+i[0]>68?1900:2e3),r+i[0].length):-1}function a$e(e,t,r){var i=/^(Z)|([+-]\d\d)(?::?(\d\d))?/.exec(t.slice(r,r+6));return i?(e.Z=i[1]?0:-(i[2]+(i[3]||"00")),r+i[0].length):-1}function s$e(e,t,r){var i=Qn.exec(t.slice(r,r+1));return i?(e.q=i[0]*3-3,r+i[0].length):-1}function o$e(e,t,r){var i=Qn.exec(t.slice(r,r+2));return i?(e.m=i[0]-1,r+i[0].length):-1}function sJ(e,t,r){var i=Qn.exec(t.slice(r,r+2));return i?(e.d=+i[0],r+i[0].length):-1}function l$e(e,t,r){var i=Qn.exec(t.slice(r,r+3));return i?(e.m=0,e.d=+i[0],r+i[0].length):-1}function oJ(e,t,r){var i=Qn.exec(t.slice(r,r+2));return i?(e.H=+i[0],r+i[0].length):-1}function c$e(e,t,r){var i=Qn.exec(t.slice(r,r+2));return i?(e.M=+i[0],r+i[0].length):-1}function u$e(e,t,r){var i=Qn.exec(t.slice(r,r+2));return i?(e.S=+i[0],r+i[0].length):-1}function h$e(e,t,r){var i=Qn.exec(t.slice(r,r+3));return i?(e.L=+i[0],r+i[0].length):-1}function d$e(e,t,r){var i=Qn.exec(t.slice(r,r+6));return i?(e.L=Math.floor(i[0]/1e3),r+i[0].length):-1}function f$e(e,t,r){var i=ZFe.exec(t.slice(r,r+1));return i?r+i[0].length:-1}function p$e(e,t,r){var i=Qn.exec(t.slice(r));return i?(e.Q=+i[0],r+i[0].length):-1}function m$e(e,t,r){var i=Qn.exec(t.slice(r));return i?(e.s=+i[0],r+i[0].length):-1}function lJ(e,t){return Qr(e.getDate(),t,2)}function g$e(e,t){return Qr(e.getHours(),t,2)}function y$e(e,t){return Qr(e.getHours()%12||12,t,2)}function v$e(e,t){return Qr(1+Oo.count(no(e),e),t,3)}function fJ(e,t){return Qr(e.getMilliseconds(),t,3)}function x$e(e,t){return fJ(e,t)+"000"}function b$e(e,t){return Qr(e.getMonth()+1,t,2)}function T$e(e,t){return Qr(e.getMinutes(),t,2)}function C$e(e,t){return Qr(e.getSeconds(),t,2)}function k$e(e){var t=e.getDay();return t===0?7:t}function w$e(e,t){return Qr(wl.count(no(e)-1,e),t,2)}function pJ(e){var t=e.getDay();return t>=4||t===0?vc(e):vc.ceil(e)}function S$e(e,t){return e=pJ(e),Qr(vc.count(no(e),e)+(no(e).getDay()===4),t,2)}function E$e(e){return e.getDay()}function A$e(e,t){return Qr(Qh.count(no(e)-1,e),t,2)}function _$e(e,t){return Qr(e.getFullYear()%100,t,2)}function D$e(e,t){return e=pJ(e),Qr(e.getFullYear()%100,t,2)}function R$e(e,t){return Qr(e.getFullYear()%1e4,t,4)}function L$e(e,t){var r=e.getDay();return e=r>=4||r===0?vc(e):vc.ceil(e),Qr(e.getFullYear()%1e4,t,4)}function M$e(e){var t=e.getTimezoneOffset();return(t>0?"-":(t*=-1,"+"))+Qr(t/60|0,"0",2)+Qr(t%60,"0",2)}function cJ(e,t){return Qr(e.getUTCDate(),t,2)}function N$e(e,t){return Qr(e.getUTCHours(),t,2)}function I$e(e,t){return Qr(e.getUTCHours()%12||12,t,2)}function O$e(e,t){return Qr(1+ax.count(Sl(e),e),t,3)}function mJ(e,t){return Qr(e.getUTCMilliseconds(),t,3)}function P$e(e,t){return mJ(e,t)+"000"}function B$e(e,t){return Qr(e.getUTCMonth()+1,t,2)}function F$e(e,t){return Qr(e.getUTCMinutes(),t,2)}function $$e(e,t){return Qr(e.getUTCSeconds(),t,2)}function z$e(e){var t=e.getUTCDay();return t===0?7:t}function G$e(e,t){return Qr(dp.count(Sl(e)-1,e),t,2)}function gJ(e){var t=e.getUTCDay();return t>=4||t===0?Jh(e):Jh.ceil(e)}function V$e(e,t){return e=gJ(e),Qr(Jh.count(Sl(e),e)+(Sl(e).getUTCDay()===4),t,2)}function W$e(e){return e.getUTCDay()}function q$e(e,t){return Qr(ag.count(Sl(e)-1,e),t,2)}function U$e(e,t){return Qr(e.getUTCFullYear()%100,t,2)}function H$e(e,t){return e=gJ(e),Qr(e.getUTCFullYear()%100,t,2)}function Y$e(e,t){return Qr(e.getUTCFullYear()%1e4,t,4)}function j$e(e,t){var r=e.getUTCDay();return e=r>=4||r===0?Jh(e):Jh.ceil(e),Qr(e.getUTCFullYear()%1e4,t,4)}function X$e(){return"+0000"}function uJ(){return"%"}function hJ(e){return+e}function dJ(e){return Math.floor(+e/1e3)}var iJ,Qn,ZFe,QFe,yJ=z(()=>{"use strict";vw();o(WL,"localDate");o(qL,"utcDate");o(sx,"newDate");o(UL,"formatLocale");iJ={"-":"",_:" ",0:"0"},Qn=/^\s*\d+/,ZFe=/^%/,QFe=/[\\^$*+?|[\]().{}]/g;o(Qr,"pad");o(JFe,"requote");o(ox,"formatRe");o(lx,"formatLookup");o(e$e,"parseWeekdayNumberSunday");o(t$e,"parseWeekdayNumberMonday");o(r$e,"parseWeekNumberSunday");o(i$e,"parseWeekNumberISO");o(n$e,"parseWeekNumberMonday");o(nJ,"parseFullYear");o(aJ,"parseYear");o(a$e,"parseZone");o(s$e,"parseQuarter");o(o$e,"parseMonthNumber");o(sJ,"parseDayOfMonth");o(l$e,"parseDayOfYear");o(oJ,"parseHour24");o(c$e,"parseMinutes");o(u$e,"parseSeconds");o(h$e,"parseMilliseconds");o(d$e,"parseMicroseconds");o(f$e,"parseLiteralPercent");o(p$e,"parseUnixTimestamp");o(m$e,"parseUnixTimestampSeconds");o(lJ,"formatDayOfMonth");o(g$e,"formatHour24");o(y$e,"formatHour12");o(v$e,"formatDayOfYear");o(fJ,"formatMilliseconds");o(x$e,"formatMicroseconds");o(b$e,"formatMonthNumber");o(T$e,"formatMinutes");o(C$e,"formatSeconds");o(k$e,"formatWeekdayNumberMonday");o(w$e,"formatWeekNumberSunday");o(pJ,"dISO");o(S$e,"formatWeekNumberISO");o(E$e,"formatWeekdayNumberSunday");o(A$e,"formatWeekNumberMonday");o(_$e,"formatYear");o(D$e,"formatYearISO");o(R$e,"formatFullYear");o(L$e,"formatFullYearISO");o(M$e,"formatZone");o(cJ,"formatUTCDayOfMonth");o(N$e,"formatUTCHour24");o(I$e,"formatUTCHour12");o(O$e,"formatUTCDayOfYear");o(mJ,"formatUTCMilliseconds");o(P$e,"formatUTCMicroseconds");o(B$e,"formatUTCMonthNumber");o(F$e,"formatUTCMinutes");o($$e,"formatUTCSeconds");o(z$e,"formatUTCWeekdayNumberMonday");o(G$e,"formatUTCWeekNumberSunday");o(gJ,"UTCdISO");o(V$e,"formatUTCWeekNumberISO");o(W$e,"formatUTCWeekdayNumberSunday");o(q$e,"formatUTCWeekNumberMonday");o(U$e,"formatUTCYear");o(H$e,"formatUTCYearISO");o(Y$e,"formatUTCFullYear");o(j$e,"formatUTCFullYearISO");o(X$e,"formatUTCZone");o(uJ,"formatLiteralPercent");o(hJ,"formatUnixTimestamp");o(dJ,"formatUnixTimestampSeconds")});function HL(e){return sg=UL(e),fp=sg.format,vJ=sg.parse,xJ=sg.utcFormat,bJ=sg.utcParse,sg}var sg,fp,vJ,xJ,bJ,TJ=z(()=>{"use strict";yJ();HL({dateTime:"%x, %X",date:"%-m/%-d/%Y",time:"%-I:%M:%S %p",periods:["AM","PM"],days:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],shortDays:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],months:["January","February","March","April","May","June","July","August","September","October","November","December"],shortMonths:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"]});o(HL,"defaultLocale")});var YL=z(()=>{"use strict";TJ()});function K$e(e){return new Date(e)}function Z$e(e){return e instanceof Date?+e:+new Date(+e)}function CJ(e,t,r,i,n,a,s,l,u,h){var d=ix(),f=d.invert,p=d.domain,m=h(".%L"),g=h(":%S"),y=h("%I:%M"),v=h("%I %p"),x=h("%a %d"),b=h("%b %d"),T=h("%B"),w=h("%Y");function C(k){return(u(k)<k?m:l(k)<k?g:s(k)<k?y:a(k)<k?v:i(k)<k?n(k)<k?x:b:r(k)<k?T:w)(k)}return o(C,"tickFormat"),d.invert=function(k){return new Date(f(k))},d.domain=function(k){return arguments.length?p(Array.from(k,Z$e)):p().map(K$e)},d.ticks=function(k){var E=p();return e(E[0],E[E.length-1],k??10)},d.tickFormat=function(k,E){return E==null?C:h(E)},d.nice=function(k){var E=p();return(!k||typeof k.range!="function")&&(k=t(E[0],E[E.length-1],k??10)),k?p(RL(E,k)):d},d.copy=function(){return cw(d,CJ(e,t,r,i,n,a,s,l,u,h))},d}function xw(){return Zh.apply(CJ(GL,VL,no,Mu,wl,Oo,Lu,Ru,io,fp).domain([new Date(2e3,0,1),new Date(2e3,0,2)]),arguments)}var kJ=z(()=>{"use strict";vw();YL();_L();rx();qQ();o(K$e,"date");o(Z$e,"number");o(CJ,"calendar");o(xw,"time")});var wJ=z(()=>{"use strict";FQ();WQ();wL();kJ()});function jL(e){for(var t=e.length/6|0,r=new Array(t),i=0;i<t;)r[i]="#"+e.slice(i*6,++i*6);return r}var SJ=z(()=>{"use strict";o(jL,"default")});var XL,EJ=z(()=>{"use strict";SJ();XL=jL("4e79a7f28e2ce1575976b7b259a14fedc949af7aa1ff9da79c755fbab0ab")});var AJ=z(()=>{"use strict";EJ()});function Fi(e){return o(function(){return e},"constant")}var bw=z(()=>{"use strict";o(Fi,"default")});function DJ(e){return e>1?0:e<-1?og:Math.acos(e)}function ZL(e){return e>=1?cx:e<=-1?-cx:Math.asin(e)}var KL,da,ed,_J,Tw,El,pp,Jn,og,cx,lg,Cw=z(()=>{"use strict";KL=Math.abs,da=Math.atan2,ed=Math.cos,_J=Math.max,Tw=Math.min,El=Math.sin,pp=Math.sqrt,Jn=1e-12,og=Math.PI,cx=og/2,lg=2*og;o(DJ,"acos");o(ZL,"asin")});function kw(e){let t=3;return e.digits=function(r){if(!arguments.length)return t;if(r==null)t=null;else{let i=Math.floor(r);if(!(i>=0))throw new RangeError(`invalid digits: ${r}`);t=i}return e},()=>new ap(t)}var QL=z(()=>{"use strict";jR();o(kw,"withPath")});function Q$e(e){return e.innerRadius}function J$e(e){return e.outerRadius}function eze(e){return e.startAngle}function tze(e){return e.endAngle}function rze(e){return e&&e.padAngle}function ize(e,t,r,i,n,a,s,l){var u=r-e,h=i-t,d=s-n,f=l-a,p=f*u-d*h;if(!(p*p<Jn))return p=(d*(t-a)-f*(e-n))/p,[e+p*u,t+p*h]}function ww(e,t,r,i,n,a,s){var l=e-r,u=t-i,h=(s?a:-a)/pp(l*l+u*u),d=h*u,f=-h*l,p=e+d,m=t+f,g=r+d,y=i+f,v=(p+g)/2,x=(m+y)/2,b=g-p,T=y-m,w=b*b+T*T,C=n-a,k=p*y-g*m,E=(T<0?-1:1)*pp(_J(0,C*C*w-k*k)),A=(k*T-b*E)/w,N=(-k*b-T*E)/w,P=(k*T+b*E)/w,I=(-k*b+T*E)/w,D=A-v,_=N-x,R=P-v,M=I-x;return D*D+_*_>R*R+M*M&&(A=P,N=I),{cx:A,cy:N,x01:-d,y01:-f,x11:A*(n/C-1),y11:N*(n/C-1)}}function Al(){var e=Q$e,t=J$e,r=Fi(0),i=null,n=eze,a=tze,s=rze,l=null,u=kw(h);function h(){var d,f,p=+e.apply(this,arguments),m=+t.apply(this,arguments),g=n.apply(this,arguments)-cx,y=a.apply(this,arguments)-cx,v=KL(y-g),x=y>g;if(l||(l=d=u()),m<p&&(f=m,m=p,p=f),!(m>Jn))l.moveTo(0,0);else if(v>lg-Jn)l.moveTo(m*ed(g),m*El(g)),l.arc(0,0,m,g,y,!x),p>Jn&&(l.moveTo(p*ed(y),p*El(y)),l.arc(0,0,p,y,g,x));else{var b=g,T=y,w=g,C=y,k=v,E=v,A=s.apply(this,arguments)/2,N=A>Jn&&(i?+i.apply(this,arguments):pp(p*p+m*m)),P=Tw(KL(m-p)/2,+r.apply(this,arguments)),I=P,D=P,_,R;if(N>Jn){var M=ZL(N/p*El(A)),L=ZL(N/m*El(A));(k-=M*2)>Jn?(M*=x?1:-1,w+=M,C-=M):(k=0,w=C=(g+y)/2),(E-=L*2)>Jn?(L*=x?1:-1,b+=L,T-=L):(E=0,b=T=(g+y)/2)}var B=m*ed(b),O=m*El(b),$=p*ed(C),G=p*El(C);if(P>Jn){var F=m*ed(T),V=m*El(T),H=p*ed(w),j=p*El(w),U;if(v<og)if(U=ize(B,O,H,j,F,V,$,G)){var Q=B-U[0],Y=O-U[1],ae=F-U[0],J=V-U[1],te=1/El(DJ((Q*ae+Y*J)/(pp(Q*Q+Y*Y)*pp(ae*ae+J*J)))/2),re=pp(U[0]*U[0]+U[1]*U[1]);I=Tw(P,(p-re)/(te-1)),D=Tw(P,(m-re)/(te+1))}else I=D=0}E>Jn?D>Jn?(_=ww(H,j,B,O,m,D,x),R=ww(F,V,$,G,m,D,x),l.moveTo(_.cx+_.x01,_.cy+_.y01),D<P?l.arc(_.cx,_.cy,D,da(_.y01,_.x01),da(R.y01,R.x01),!x):(l.arc(_.cx,_.cy,D,da(_.y01,_.x01),da(_.y11,_.x11),!x),l.arc(0,0,m,da(_.cy+_.y11,_.cx+_.x11),da(R.cy+R.y11,R.cx+R.x11),!x),l.arc(R.cx,R.cy,D,da(R.y11,R.x11),da(R.y01,R.x01),!x))):(l.moveTo(B,O),l.arc(0,0,m,b,T,!x)):l.moveTo(B,O),!(p>Jn)||!(k>Jn)?l.lineTo($,G):I>Jn?(_=ww($,G,F,V,p,-I,x),R=ww(B,O,H,j,p,-I,x),l.lineTo(_.cx+_.x01,_.cy+_.y01),I<P?l.arc(_.cx,_.cy,I,da(_.y01,_.x01),da(R.y01,R.x01),!x):(l.arc(_.cx,_.cy,I,da(_.y01,_.x01),da(_.y11,_.x11),!x),l.arc(0,0,p,da(_.cy+_.y11,_.cx+_.x11),da(R.cy+R.y11,R.cx+R.x11),x),l.arc(R.cx,R.cy,I,da(R.y11,R.x11),da(R.y01,R.x01),!x))):l.arc(0,0,p,C,w,x)}if(l.closePath(),d)return l=null,d+""||null}return o(h,"arc"),h.centroid=function(){var d=(+e.apply(this,arguments)+ +t.apply(this,arguments))/2,f=(+n.apply(this,arguments)+ +a.apply(this,arguments))/2-og/2;return[ed(f)*d,El(f)*d]},h.innerRadius=function(d){return arguments.length?(e=typeof d=="function"?d:Fi(+d),h):e},h.outerRadius=function(d){return arguments.length?(t=typeof d=="function"?d:Fi(+d),h):t},h.cornerRadius=function(d){return arguments.length?(r=typeof d=="function"?d:Fi(+d),h):r},h.padRadius=function(d){return arguments.length?(i=d==null?null:typeof d=="function"?d:Fi(+d),h):i},h.startAngle=function(d){return arguments.length?(n=typeof d=="function"?d:Fi(+d),h):n},h.endAngle=function(d){return arguments.length?(a=typeof d=="function"?d:Fi(+d),h):a},h.padAngle=function(d){return arguments.length?(s=typeof d=="function"?d:Fi(+d),h):s},h.context=function(d){return arguments.length?(l=d??null,h):l},h}var RJ=z(()=>{"use strict";bw();Cw();QL();o(Q$e,"arcInnerRadius");o(J$e,"arcOuterRadius");o(eze,"arcStartAngle");o(tze,"arcEndAngle");o(rze,"arcPadAngle");o(ize,"intersect");o(ww,"cornerTangents");o(Al,"default")});function ux(e){return typeof e=="object"&&"length"in e?e:Array.from(e)}var uVt,JL=z(()=>{"use strict";uVt=Array.prototype.slice;o(ux,"default")});function LJ(e){this._context=e}function xc(e){return new LJ(e)}var eM=z(()=>{"use strict";o(LJ,"Linear");LJ.prototype={areaStart:o(function(){this._line=0},"areaStart"),areaEnd:o(function(){this._line=NaN},"areaEnd"),lineStart:o(function(){this._point=0},"lineStart"),lineEnd:o(function(){(this._line||this._line!==0&&this._point===1)&&this._context.closePath(),this._line=1-this._line},"lineEnd"),point:o(function(e,t){switch(e=+e,t=+t,this._point){case 0:this._point=1,this._line?this._context.lineTo(e,t):this._context.moveTo(e,t);break;case 1:this._point=2;default:this._context.lineTo(e,t);break}},"point")};o(xc,"default")});function MJ(e){return e[0]}function NJ(e){return e[1]}var IJ=z(()=>{"use strict";o(MJ,"x");o(NJ,"y")});function _l(e,t){var r=Fi(!0),i=null,n=xc,a=null,s=kw(l);e=typeof e=="function"?e:e===void 0?MJ:Fi(e),t=typeof t=="function"?t:t===void 0?NJ:Fi(t);function l(u){var h,d=(u=ux(u)).length,f,p=!1,m;for(i==null&&(a=n(m=s())),h=0;h<=d;++h)!(h<d&&r(f=u[h],h,u))===p&&((p=!p)?a.lineStart():a.lineEnd()),p&&a.point(+e(f,h,u),+t(f,h,u));if(m)return a=null,m+""||null}return o(l,"line"),l.x=function(u){return arguments.length?(e=typeof u=="function"?u:Fi(+u),l):e},l.y=function(u){return arguments.length?(t=typeof u=="function"?u:Fi(+u),l):t},l.defined=function(u){return arguments.length?(r=typeof u=="function"?u:Fi(!!u),l):r},l.curve=function(u){return arguments.length?(n=u,i!=null&&(a=n(i)),l):n},l.context=function(u){return arguments.length?(u==null?i=a=null:a=n(i=u),l):i},l}var OJ=z(()=>{"use strict";JL();bw();eM();QL();IJ();o(_l,"default")});function tM(e,t){return t<e?-1:t>e?1:t>=e?0:NaN}var PJ=z(()=>{"use strict";o(tM,"default")});function rM(e){return e}var BJ=z(()=>{"use strict";o(rM,"default")});function Sw(){var e=rM,t=tM,r=null,i=Fi(0),n=Fi(lg),a=Fi(0);function s(l){var u,h=(l=ux(l)).length,d,f,p=0,m=new Array(h),g=new Array(h),y=+i.apply(this,arguments),v=Math.min(lg,Math.max(-lg,n.apply(this,arguments)-y)),x,b=Math.min(Math.abs(v)/h,a.apply(this,arguments)),T=b*(v<0?-1:1),w;for(u=0;u<h;++u)(w=g[m[u]=u]=+e(l[u],u,l))>0&&(p+=w);for(t!=null?m.sort(function(C,k){return t(g[C],g[k])}):r!=null&&m.sort(function(C,k){return r(l[C],l[k])}),u=0,f=p?(v-h*T)/p:0;u<h;++u,y=x)d=m[u],w=g[d],x=y+(w>0?w*f:0)+T,g[d]={data:l[d],index:u,value:w,startAngle:y,endAngle:x,padAngle:b};return g}return o(s,"pie"),s.value=function(l){return arguments.length?(e=typeof l=="function"?l:Fi(+l),s):e},s.sortValues=function(l){return arguments.length?(t=l,r=null,s):t},s.sort=function(l){return arguments.length?(r=l,t=null,s):r},s.startAngle=function(l){return arguments.length?(i=typeof l=="function"?l:Fi(+l),s):i},s.endAngle=function(l){return arguments.length?(n=typeof l=="function"?l:Fi(+l),s):n},s.padAngle=function(l){return arguments.length?(a=typeof l=="function"?l:Fi(+l),s):a},s}var FJ=z(()=>{"use strict";JL();bw();PJ();BJ();Cw();o(Sw,"default")});function hx(e){return new Ew(e,!0)}function dx(e){return new Ew(e,!1)}var Ew,$J=z(()=>{"use strict";Ew=class{static{o(this,"Bump")}constructor(t,r){this._context=t,this._x=r}areaStart(){this._line=0}areaEnd(){this._line=NaN}lineStart(){this._point=0}lineEnd(){(this._line||this._line!==0&&this._point===1)&&this._context.closePath(),this._line=1-this._line}point(t,r){switch(t=+t,r=+r,this._point){case 0:{this._point=1,this._line?this._context.lineTo(t,r):this._context.moveTo(t,r);break}case 1:this._point=2;default:{this._x?this._context.bezierCurveTo(this._x0=(this._x0+t)/2,this._y0,this._x0,r,t,r):this._context.bezierCurveTo(this._x0,this._y0=(this._y0+r)/2,t,this._y0,t,r);break}}this._x0=t,this._y0=r}};o(hx,"bumpX");o(dx,"bumpY")});function ao(){}var fx=z(()=>{"use strict";o(ao,"default")});function cg(e,t,r){e._context.bezierCurveTo((2*e._x0+e._x1)/3,(2*e._y0+e._y1)/3,(e._x0+2*e._x1)/3,(e._y0+2*e._y1)/3,(e._x0+4*e._x1+t)/6,(e._y0+4*e._y1+r)/6)}function px(e){this._context=e}function Dl(e){return new px(e)}var mx=z(()=>{"use strict";o(cg,"point");o(px,"Basis");px.prototype={areaStart:o(function(){this._line=0},"areaStart"),areaEnd:o(function(){this._line=NaN},"areaEnd"),lineStart:o(function(){this._x0=this._x1=this._y0=this._y1=NaN,this._point=0},"lineStart"),lineEnd:o(function(){switch(this._point){case 3:cg(this,this._x1,this._y1);case 2:this._context.lineTo(this._x1,this._y1);break}(this._line||this._line!==0&&this._point===1)&&this._context.closePath(),this._line=1-this._line},"lineEnd"),point:o(function(e,t){switch(e=+e,t=+t,this._point){case 0:this._point=1,this._line?this._context.lineTo(e,t):this._context.moveTo(e,t);break;case 1:this._point=2;break;case 2:this._point=3,this._context.lineTo((5*this._x0+this._x1)/6,(5*this._y0+this._y1)/6);default:cg(this,e,t);break}this._x0=this._x1,this._x1=e,this._y0=this._y1,this._y1=t},"point")};o(Dl,"default")});function zJ(e){this._context=e}function Aw(e){return new zJ(e)}var GJ=z(()=>{"use strict";fx();mx();o(zJ,"BasisClosed");zJ.prototype={areaStart:ao,areaEnd:ao,lineStart:o(function(){this._x0=this._x1=this._x2=this._x3=this._x4=this._y0=this._y1=this._y2=this._y3=this._y4=NaN,this._point=0},"lineStart"),lineEnd:o(function(){switch(this._point){case 1:{this._context.moveTo(this._x2,this._y2),this._context.closePath();break}case 2:{this._context.moveTo((this._x2+2*this._x3)/3,(this._y2+2*this._y3)/3),this._context.lineTo((this._x3+2*this._x2)/3,(this._y3+2*this._y2)/3),this._context.closePath();break}case 3:{this.point(this._x2,this._y2),this.point(this._x3,this._y3),this.point(this._x4,this._y4);break}}},"lineEnd"),point:o(function(e,t){switch(e=+e,t=+t,this._point){case 0:this._point=1,this._x2=e,this._y2=t;break;case 1:this._point=2,this._x3=e,this._y3=t;break;case 2:this._point=3,this._x4=e,this._y4=t,this._context.moveTo((this._x0+4*this._x1+e)/6,(this._y0+4*this._y1+t)/6);break;default:cg(this,e,t);break}this._x0=this._x1,this._x1=e,this._y0=this._y1,this._y1=t},"point")};o(Aw,"default")});function VJ(e){this._context=e}function _w(e){return new VJ(e)}var WJ=z(()=>{"use strict";mx();o(VJ,"BasisOpen");VJ.prototype={areaStart:o(function(){this._line=0},"areaStart"),areaEnd:o(function(){this._line=NaN},"areaEnd"),lineStart:o(function(){this._x0=this._x1=this._y0=this._y1=NaN,this._point=0},"lineStart"),lineEnd:o(function(){(this._line||this._line!==0&&this._point===3)&&this._context.closePath(),this._line=1-this._line},"lineEnd"),point:o(function(e,t){switch(e=+e,t=+t,this._point){case 0:this._point=1;break;case 1:this._point=2;break;case 2:this._point=3;var r=(this._x0+4*this._x1+e)/6,i=(this._y0+4*this._y1+t)/6;this._line?this._context.lineTo(r,i):this._context.moveTo(r,i);break;case 3:this._point=4;default:cg(this,e,t);break}this._x0=this._x1,this._x1=e,this._y0=this._y1,this._y1=t},"point")};o(_w,"default")});function qJ(e,t){this._basis=new px(e),this._beta=t}var iM,UJ=z(()=>{"use strict";mx();o(qJ,"Bundle");qJ.prototype={lineStart:o(function(){this._x=[],this._y=[],this._basis.lineStart()},"lineStart"),lineEnd:o(function(){var e=this._x,t=this._y,r=e.length-1;if(r>0)for(var i=e[0],n=t[0],a=e[r]-i,s=t[r]-n,l=-1,u;++l<=r;)u=l/r,this._basis.point(this._beta*e[l]+(1-this._beta)*(i+u*a),this._beta*t[l]+(1-this._beta)*(n+u*s));this._x=this._y=null,this._basis.lineEnd()},"lineEnd"),point:o(function(e,t){this._x.push(+e),this._y.push(+t)},"point")};iM=o((function e(t){function r(i){return t===1?new px(i):new qJ(i,t)}return o(r,"bundle"),r.beta=function(i){return e(+i)},r}),"custom")(.85)});function ug(e,t,r){e._context.bezierCurveTo(e._x1+e._k*(e._x2-e._x0),e._y1+e._k*(e._y2-e._y0),e._x2+e._k*(e._x1-t),e._y2+e._k*(e._y1-r),e._x2,e._y2)}function Dw(e,t){this._context=e,this._k=(1-t)/6}var gx,yx=z(()=>{"use strict";o(ug,"point");o(Dw,"Cardinal");Dw.prototype={areaStart:o(function(){this._line=0},"areaStart"),areaEnd:o(function(){this._line=NaN},"areaEnd"),lineStart:o(function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._point=0},"lineStart"),lineEnd:o(function(){switch(this._point){case 2:this._context.lineTo(this._x2,this._y2);break;case 3:ug(this,this._x1,this._y1);break}(this._line||this._line!==0&&this._point===1)&&this._context.closePath(),this._line=1-this._line},"lineEnd"),point:o(function(e,t){switch(e=+e,t=+t,this._point){case 0:this._point=1,this._line?this._context.lineTo(e,t):this._context.moveTo(e,t);break;case 1:this._point=2,this._x1=e,this._y1=t;break;case 2:this._point=3;default:ug(this,e,t);break}this._x0=this._x1,this._x1=this._x2,this._x2=e,this._y0=this._y1,this._y1=this._y2,this._y2=t},"point")};gx=o((function e(t){function r(i){return new Dw(i,t)}return o(r,"cardinal"),r.tension=function(i){return e(+i)},r}),"custom")(0)});function Rw(e,t){this._context=e,this._k=(1-t)/6}var nM,aM=z(()=>{"use strict";fx();yx();o(Rw,"CardinalClosed");Rw.prototype={areaStart:ao,areaEnd:ao,lineStart:o(function(){this._x0=this._x1=this._x2=this._x3=this._x4=this._x5=this._y0=this._y1=this._y2=this._y3=this._y4=this._y5=NaN,this._point=0},"lineStart"),lineEnd:o(function(){switch(this._point){case 1:{this._context.moveTo(this._x3,this._y3),this._context.closePath();break}case 2:{this._context.lineTo(this._x3,this._y3),this._context.closePath();break}case 3:{this.point(this._x3,this._y3),this.point(this._x4,this._y4),this.point(this._x5,this._y5);break}}},"lineEnd"),point:o(function(e,t){switch(e=+e,t=+t,this._point){case 0:this._point=1,this._x3=e,this._y3=t;break;case 1:this._point=2,this._context.moveTo(this._x4=e,this._y4=t);break;case 2:this._point=3,this._x5=e,this._y5=t;break;default:ug(this,e,t);break}this._x0=this._x1,this._x1=this._x2,this._x2=e,this._y0=this._y1,this._y1=this._y2,this._y2=t},"point")};nM=o((function e(t){function r(i){return new Rw(i,t)}return o(r,"cardinal"),r.tension=function(i){return e(+i)},r}),"custom")(0)});function Lw(e,t){this._context=e,this._k=(1-t)/6}var sM,oM=z(()=>{"use strict";yx();o(Lw,"CardinalOpen");Lw.prototype={areaStart:o(function(){this._line=0},"areaStart"),areaEnd:o(function(){this._line=NaN},"areaEnd"),lineStart:o(function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._point=0},"lineStart"),lineEnd:o(function(){(this._line||this._line!==0&&this._point===3)&&this._context.closePath(),this._line=1-this._line},"lineEnd"),point:o(function(e,t){switch(e=+e,t=+t,this._point){case 0:this._point=1;break;case 1:this._point=2;break;case 2:this._point=3,this._line?this._context.lineTo(this._x2,this._y2):this._context.moveTo(this._x2,this._y2);break;case 3:this._point=4;default:ug(this,e,t);break}this._x0=this._x1,this._x1=this._x2,this._x2=e,this._y0=this._y1,this._y1=this._y2,this._y2=t},"point")};sM=o((function e(t){function r(i){return new Lw(i,t)}return o(r,"cardinal"),r.tension=function(i){return e(+i)},r}),"custom")(0)});function vx(e,t,r){var i=e._x1,n=e._y1,a=e._x2,s=e._y2;if(e._l01_a>Jn){var l=2*e._l01_2a+3*e._l01_a*e._l12_a+e._l12_2a,u=3*e._l01_a*(e._l01_a+e._l12_a);i=(i*l-e._x0*e._l12_2a+e._x2*e._l01_2a)/u,n=(n*l-e._y0*e._l12_2a+e._y2*e._l01_2a)/u}if(e._l23_a>Jn){var h=2*e._l23_2a+3*e._l23_a*e._l12_a+e._l12_2a,d=3*e._l23_a*(e._l23_a+e._l12_a);a=(a*h+e._x1*e._l23_2a-t*e._l12_2a)/d,s=(s*h+e._y1*e._l23_2a-r*e._l12_2a)/d}e._context.bezierCurveTo(i,n,a,s,e._x2,e._y2)}function HJ(e,t){this._context=e,this._alpha=t}var xx,Mw=z(()=>{"use strict";Cw();yx();o(vx,"point");o(HJ,"CatmullRom");HJ.prototype={areaStart:o(function(){this._line=0},"areaStart"),areaEnd:o(function(){this._line=NaN},"areaEnd"),lineStart:o(function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._l01_a=this._l12_a=this._l23_a=this._l01_2a=this._l12_2a=this._l23_2a=this._point=0},"lineStart"),lineEnd:o(function(){switch(this._point){case 2:this._context.lineTo(this._x2,this._y2);break;case 3:this.point(this._x2,this._y2);break}(this._line||this._line!==0&&this._point===1)&&this._context.closePath(),this._line=1-this._line},"lineEnd"),point:o(function(e,t){if(e=+e,t=+t,this._point){var r=this._x2-e,i=this._y2-t;this._l23_a=Math.sqrt(this._l23_2a=Math.pow(r*r+i*i,this._alpha))}switch(this._point){case 0:this._point=1,this._line?this._context.lineTo(e,t):this._context.moveTo(e,t);break;case 1:this._point=2;break;case 2:this._point=3;default:vx(this,e,t);break}this._l01_a=this._l12_a,this._l12_a=this._l23_a,this._l01_2a=this._l12_2a,this._l12_2a=this._l23_2a,this._x0=this._x1,this._x1=this._x2,this._x2=e,this._y0=this._y1,this._y1=this._y2,this._y2=t},"point")};xx=o((function e(t){function r(i){return t?new HJ(i,t):new Dw(i,0)}return o(r,"catmullRom"),r.alpha=function(i){return e(+i)},r}),"custom")(.5)});function YJ(e,t){this._context=e,this._alpha=t}var lM,jJ=z(()=>{"use strict";aM();fx();Mw();o(YJ,"CatmullRomClosed");YJ.prototype={areaStart:ao,areaEnd:ao,lineStart:o(function(){this._x0=this._x1=this._x2=this._x3=this._x4=this._x5=this._y0=this._y1=this._y2=this._y3=this._y4=this._y5=NaN,this._l01_a=this._l12_a=this._l23_a=this._l01_2a=this._l12_2a=this._l23_2a=this._point=0},"lineStart"),lineEnd:o(function(){switch(this._point){case 1:{this._context.moveTo(this._x3,this._y3),this._context.closePath();break}case 2:{this._context.lineTo(this._x3,this._y3),this._context.closePath();break}case 3:{this.point(this._x3,this._y3),this.point(this._x4,this._y4),this.point(this._x5,this._y5);break}}},"lineEnd"),point:o(function(e,t){if(e=+e,t=+t,this._point){var r=this._x2-e,i=this._y2-t;this._l23_a=Math.sqrt(this._l23_2a=Math.pow(r*r+i*i,this._alpha))}switch(this._point){case 0:this._point=1,this._x3=e,this._y3=t;break;case 1:this._point=2,this._context.moveTo(this._x4=e,this._y4=t);break;case 2:this._point=3,this._x5=e,this._y5=t;break;default:vx(this,e,t);break}this._l01_a=this._l12_a,this._l12_a=this._l23_a,this._l01_2a=this._l12_2a,this._l12_2a=this._l23_2a,this._x0=this._x1,this._x1=this._x2,this._x2=e,this._y0=this._y1,this._y1=this._y2,this._y2=t},"point")};lM=o((function e(t){function r(i){return t?new YJ(i,t):new Rw(i,0)}return o(r,"catmullRom"),r.alpha=function(i){return e(+i)},r}),"custom")(.5)});function XJ(e,t){this._context=e,this._alpha=t}var cM,KJ=z(()=>{"use strict";oM();Mw();o(XJ,"CatmullRomOpen");XJ.prototype={areaStart:o(function(){this._line=0},"areaStart"),areaEnd:o(function(){this._line=NaN},"areaEnd"),lineStart:o(function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._l01_a=this._l12_a=this._l23_a=this._l01_2a=this._l12_2a=this._l23_2a=this._point=0},"lineStart"),lineEnd:o(function(){(this._line||this._line!==0&&this._point===3)&&this._context.closePath(),this._line=1-this._line},"lineEnd"),point:o(function(e,t){if(e=+e,t=+t,this._point){var r=this._x2-e,i=this._y2-t;this._l23_a=Math.sqrt(this._l23_2a=Math.pow(r*r+i*i,this._alpha))}switch(this._point){case 0:this._point=1;break;case 1:this._point=2;break;case 2:this._point=3,this._line?this._context.lineTo(this._x2,this._y2):this._context.moveTo(this._x2,this._y2);break;case 3:this._point=4;default:vx(this,e,t);break}this._l01_a=this._l12_a,this._l12_a=this._l23_a,this._l01_2a=this._l12_2a,this._l12_2a=this._l23_2a,this._x0=this._x1,this._x1=this._x2,this._x2=e,this._y0=this._y1,this._y1=this._y2,this._y2=t},"point")};cM=o((function e(t){function r(i){return t?new XJ(i,t):new Lw(i,0)}return o(r,"catmullRom"),r.alpha=function(i){return e(+i)},r}),"custom")(.5)});function ZJ(e){this._context=e}function Nw(e){return new ZJ(e)}var QJ=z(()=>{"use strict";fx();o(ZJ,"LinearClosed");ZJ.prototype={areaStart:ao,areaEnd:ao,lineStart:o(function(){this._point=0},"lineStart"),lineEnd:o(function(){this._point&&this._context.closePath()},"lineEnd"),point:o(function(e,t){e=+e,t=+t,this._point?this._context.lineTo(e,t):(this._point=1,this._context.moveTo(e,t))},"point")};o(Nw,"default")});function JJ(e){return e<0?-1:1}function eee(e,t,r){var i=e._x1-e._x0,n=t-e._x1,a=(e._y1-e._y0)/(i||n<0&&-0),s=(r-e._y1)/(n||i<0&&-0),l=(a*n+s*i)/(i+n);return(JJ(a)+JJ(s))*Math.min(Math.abs(a),Math.abs(s),.5*Math.abs(l))||0}function tee(e,t){var r=e._x1-e._x0;return r?(3*(e._y1-e._y0)/r-t)/2:t}function uM(e,t,r){var i=e._x0,n=e._y0,a=e._x1,s=e._y1,l=(a-i)/3;e._context.bezierCurveTo(i+l,n+l*t,a-l,s-l*r,a,s)}function Iw(e){this._context=e}function ree(e){this._context=new iee(e)}function iee(e){this._context=e}function bx(e){return new Iw(e)}function Tx(e){return new ree(e)}var nee=z(()=>{"use strict";o(JJ,"sign");o(eee,"slope3");o(tee,"slope2");o(uM,"point");o(Iw,"MonotoneX");Iw.prototype={areaStart:o(function(){this._line=0},"areaStart"),areaEnd:o(function(){this._line=NaN},"areaEnd"),lineStart:o(function(){this._x0=this._x1=this._y0=this._y1=this._t0=NaN,this._point=0},"lineStart"),lineEnd:o(function(){switch(this._point){case 2:this._context.lineTo(this._x1,this._y1);break;case 3:uM(this,this._t0,tee(this,this._t0));break}(this._line||this._line!==0&&this._point===1)&&this._context.closePath(),this._line=1-this._line},"lineEnd"),point:o(function(e,t){var r=NaN;if(e=+e,t=+t,!(e===this._x1&&t===this._y1)){switch(this._point){case 0:this._point=1,this._line?this._context.lineTo(e,t):this._context.moveTo(e,t);break;case 1:this._point=2;break;case 2:this._point=3,uM(this,tee(this,r=eee(this,e,t)),r);break;default:uM(this,this._t0,r=eee(this,e,t));break}this._x0=this._x1,this._x1=e,this._y0=this._y1,this._y1=t,this._t0=r}},"point")};o(ree,"MonotoneY");(ree.prototype=Object.create(Iw.prototype)).point=function(e,t){Iw.prototype.point.call(this,t,e)};o(iee,"ReflectContext");iee.prototype={moveTo:o(function(e,t){this._context.moveTo(t,e)},"moveTo"),closePath:o(function(){this._context.closePath()},"closePath"),lineTo:o(function(e,t){this._context.lineTo(t,e)},"lineTo"),bezierCurveTo:o(function(e,t,r,i,n,a){this._context.bezierCurveTo(t,e,i,r,a,n)},"bezierCurveTo")};o(bx,"monotoneX");o(Tx,"monotoneY")});function see(e){this._context=e}function aee(e){var t,r=e.length-1,i,n=new Array(r),a=new Array(r),s=new Array(r);for(n[0]=0,a[0]=2,s[0]=e[0]+2*e[1],t=1;t<r-1;++t)n[t]=1,a[t]=4,s[t]=4*e[t]+2*e[t+1];for(n[r-1]=2,a[r-1]=7,s[r-1]=8*e[r-1]+e[r],t=1;t<r;++t)i=n[t]/a[t-1],a[t]-=i,s[t]-=i*s[t-1];for(n[r-1]=s[r-1]/a[r-1],t=r-2;t>=0;--t)n[t]=(s[t]-n[t+1])/a[t];for(a[r-1]=(e[r]+n[r-1])/2,t=0;t<r-1;++t)a[t]=2*e[t+1]-n[t+1];return[n,a]}function hg(e){return new see(e)}var oee=z(()=>{"use strict";o(see,"Natural");see.prototype={areaStart:o(function(){this._line=0},"areaStart"),areaEnd:o(function(){this._line=NaN},"areaEnd"),lineStart:o(function(){this._x=[],this._y=[]},"lineStart"),lineEnd:o(function(){var e=this._x,t=this._y,r=e.length;if(r)if(this._line?this._context.lineTo(e[0],t[0]):this._context.moveTo(e[0],t[0]),r===2)this._context.lineTo(e[1],t[1]);else for(var i=aee(e),n=aee(t),a=0,s=1;s<r;++a,++s)this._context.bezierCurveTo(i[0][a],n[0][a],i[1][a],n[1][a],e[s],t[s]);(this._line||this._line!==0&&r===1)&&this._context.closePath(),this._line=1-this._line,this._x=this._y=null},"lineEnd"),point:o(function(e,t){this._x.push(+e),this._y.push(+t)},"point")};o(aee,"controlPoints");o(hg,"default")});function Ow(e,t){this._context=e,this._t=t}function dg(e){return new Ow(e,.5)}function Cx(e){return new Ow(e,0)}function kx(e){return new Ow(e,1)}var lee=z(()=>{"use strict";o(Ow,"Step");Ow.prototype={areaStart:o(function(){this._line=0},"areaStart"),areaEnd:o(function(){this._line=NaN},"areaEnd"),lineStart:o(function(){this._x=this._y=NaN,this._point=0},"lineStart"),lineEnd:o(function(){0<this._t&&this._t<1&&this._point===2&&this._context.lineTo(this._x,this._y),(this._line||this._line!==0&&this._point===1)&&this._context.closePath(),this._line>=0&&(this._t=1-this._t,this._line=1-this._line)},"lineEnd"),point:o(function(e,t){switch(e=+e,t=+t,this._point){case 0:this._point=1,this._line?this._context.lineTo(e,t):this._context.moveTo(e,t);break;case 1:this._point=2;default:{if(this._t<=0)this._context.lineTo(this._x,t),this._context.lineTo(e,t);else{var r=this._x*(1-this._t)+e*this._t;this._context.lineTo(r,this._y),this._context.lineTo(r,t)}break}}this._x=e,this._y=t},"point")};o(dg,"default");o(Cx,"stepBefore");o(kx,"stepAfter")});var cee=z(()=>{"use strict";RJ();OJ();FJ();GJ();WJ();mx();$J();UJ();aM();oM();yx();jJ();KJ();Mw();QJ();eM();nee();oee();lee()});var uee=z(()=>{"use strict"});var hee=z(()=>{"use strict"});function td(e,t,r){this.k=e,this.x=t,this.y=r}function dM(e){for(;!e.__zoom;)if(!(e=e.parentNode))return hM;return e.__zoom}var hM,fM=z(()=>{"use strict";o(td,"Transform");td.prototype={constructor:td,scale:o(function(e){return e===1?this:new td(this.k*e,this.x,this.y)},"scale"),translate:o(function(e,t){return e===0&t===0?this:new td(this.k,this.x+this.k*e,this.y+this.k*t)},"translate"),apply:o(function(e){return[e[0]*this.k+this.x,e[1]*this.k+this.y]},"apply"),applyX:o(function(e){return e*this.k+this.x},"applyX"),applyY:o(function(e){return e*this.k+this.y},"applyY"),invert:o(function(e){return[(e[0]-this.x)/this.k,(e[1]-this.y)/this.k]},"invert"),invertX:o(function(e){return(e-this.x)/this.k},"invertX"),invertY:o(function(e){return(e-this.y)/this.k},"invertY"),rescaleX:o(function(e){return e.copy().domain(e.range().map(this.invertX,this).map(e.invert,e))},"rescaleX"),rescaleY:o(function(e){return e.copy().domain(e.range().map(this.invertY,this).map(e.invert,e))},"rescaleY"),toString:o(function(){return"translate("+this.x+","+this.y+") scale("+this.k+")"},"toString")};hM=new td(1,0,0);dM.prototype=td.prototype;o(dM,"transform")});var dee=z(()=>{"use strict"});var fee=z(()=>{"use strict";Jk();uee();hee();fM();dee()});var pee=z(()=>{"use strict";fee();fM()});var Rr=z(()=>{"use strict";qh();CX();GZ();UZ();Xm();HZ();YZ();t8();fK();jZ();WR();XZ();ZZ();sL();hQ();OQ();Qm();jR();PQ();KZ();BQ();wJ();AJ();xl();cee();vw();YL();Yk();Jk();pee()});var mee=Js(ea=>{"use strict";Object.defineProperty(ea,"__esModule",{value:!0});ea.BLANK_URL=ea.relativeFirstCharacters=ea.whitespaceEscapeCharsRegex=ea.urlSchemeRegex=ea.ctrlCharactersRegex=ea.htmlCtrlEntityRegex=ea.htmlEntitiesRegex=ea.invalidProtocolRegex=void 0;ea.invalidProtocolRegex=/^([^\w]*)(javascript|data|vbscript)/im;ea.htmlEntitiesRegex=/&#(\w+)(^\w|;)?/g;ea.htmlCtrlEntityRegex=/&(newline|tab);/gi;ea.ctrlCharactersRegex=/[\u0000-\u001F\u007F-\u009F\u2000-\u200D\uFEFF]/gim;ea.urlSchemeRegex=/^.+(:|&colon;)/gim;ea.whitespaceEscapeCharsRegex=/(\\|%5[cC])((%(6[eE]|72|74))|[nrt])/g;ea.relativeFirstCharacters=[".","/"];ea.BLANK_URL="about:blank"});var fg=Js(Pw=>{"use strict";Object.defineProperty(Pw,"__esModule",{value:!0});Pw.sanitizeUrl=void 0;var Da=mee();function nze(e){return Da.relativeFirstCharacters.indexOf(e[0])>-1}o(nze,"isRelativeUrlWithoutProtocol");function aze(e){var t=e.replace(Da.ctrlCharactersRegex,"");return t.replace(Da.htmlEntitiesRegex,function(r,i){return String.fromCharCode(i)})}o(aze,"decodeHtmlCharacters");function sze(e){return URL.canParse(e)}o(sze,"isValidUrl");function gee(e){try{return decodeURIComponent(e)}catch{return e}}o(gee,"decodeURI");function oze(e){if(!e)return Da.BLANK_URL;var t,r=gee(e.trim());do r=aze(r).replace(Da.htmlCtrlEntityRegex,"").replace(Da.ctrlCharactersRegex,"").replace(Da.whitespaceEscapeCharsRegex,"").trim(),r=gee(r),t=r.match(Da.ctrlCharactersRegex)||r.match(Da.htmlEntitiesRegex)||r.match(Da.htmlCtrlEntityRegex)||r.match(Da.whitespaceEscapeCharsRegex);while(t&&t.length>0);var i=r;if(!i)return Da.BLANK_URL;if(nze(i))return i;var n=i.trimStart(),a=n.match(Da.urlSchemeRegex);if(!a)return i;var s=a[0].toLowerCase().trim();if(Da.invalidProtocolRegex.test(s))return Da.BLANK_URL;var l=n.replace(/\\/g,"/");if(s==="mailto:"||s.includes("://"))return l;if(s==="http:"||s==="https:"){if(!sze(l))return Da.BLANK_URL;var u=new URL(l);return u.protocol=u.protocol.toLowerCase(),u.hostname=u.hostname.toLowerCase(),u.toString()}return l}o(oze,"sanitizeUrl");Pw.sanitizeUrl=oze});var pM,mp,Bw,yee,Fw,$w,fa,wx,zw,gp=z(()=>{"use strict";pM=ys(fg(),1);Rr();Ir();mp=o((e,t)=>{let r=e.append("rect");if(r.attr("x",t.x),r.attr("y",t.y),r.attr("fill",t.fill),r.attr("stroke",t.stroke),r.attr("width",t.width),r.attr("height",t.height),t.name&&r.attr("name",t.name),t.rx&&r.attr("rx",t.rx),t.ry&&r.attr("ry",t.ry),t.attrs!==void 0)for(let i in t.attrs)r.attr(i,t.attrs[i]);return t.class&&r.attr("class",t.class),r},"drawRect"),Bw=o((e,t)=>{let r={x:t.startx,y:t.starty,width:t.stopx-t.startx,height:t.stopy-t.starty,fill:t.fill,stroke:t.stroke,class:"rect"};mp(e,r).lower()},"drawBackgroundRect"),yee=o((e,t)=>{let r=t.text.replace(Uf," "),i=e.append("text");i.attr("x",t.x),i.attr("y",t.y),i.attr("class","legend"),i.style("text-anchor",t.anchor),t.class&&i.attr("class",t.class);let n=i.append("tspan");return n.attr("x",t.x+t.textMargin*2),n.text(r),i},"drawText"),Fw=o((e,t,r,i)=>{let n=e.append("image");n.attr("x",t),n.attr("y",r);let a=(0,pM.sanitizeUrl)(i);n.attr("xlink:href",a)},"drawImage"),$w=o((e,t,r,i)=>{let n=e.append("use");n.attr("x",t),n.attr("y",r);let a=(0,pM.sanitizeUrl)(i);n.attr("xlink:href",`#${a}`)},"drawEmbeddedImage"),fa=o(()=>({x:0,y:0,width:100,height:100,fill:"#EDF2AE",stroke:"#666",anchor:"start",rx:0,ry:0}),"getNoteRect"),wx=o(()=>({x:0,y:0,width:100,height:100,"text-anchor":"start",style:"#666",textMargin:0,rx:0,ry:0,tspan:!0}),"getTextObj"),zw=o(()=>{let e=Je(".mermaidTooltip");return e.empty()&&(e=Je("body").append("div").attr("class","mermaidTooltip").style("opacity",0).style("position","absolute").style("text-align","center").style("max-width","200px").style("padding","2px").style("font-size","12px").style("background","#ffffde").style("border","1px solid #333").style("border-radius","2px").style("pointer-events","none").style("z-index","100")),e},"createTooltip")});var vee,mM,xee,lze,cze,uze,hze,dze,fze,pze,mze,gze,yze,vze,Nu,Rl,bee=z(()=>{"use strict";Ir();gp();vee=ys(fg(),1),mM=o(function(e,t){return mp(e,t)},"drawRect"),xee=o(function(e,t,r,i,n,a){let s=e.append("image");s.attr("width",t),s.attr("height",r),s.attr("x",i),s.attr("y",n);let l=a.startsWith("data:image/png;base64")?a:(0,vee.sanitizeUrl)(a);s.attr("xlink:href",l)},"drawImage"),lze=o((e,t,r,i)=>{let n=e.append("g"),a=0;for(let s of t){let l=s.textColor?s.textColor:"#444444",u=s.lineColor?s.lineColor:"#444444",h=s.offsetX?parseInt(s.offsetX):0,d=s.offsetY?parseInt(s.offsetY):0,f="";if(a===0){let m=n.append("line");m.attr("x1",s.startPoint.x),m.attr("y1",s.startPoint.y),m.attr("x2",s.endPoint.x),m.attr("y2",s.endPoint.y),m.attr("stroke-width","1"),m.attr("stroke",u),m.style("fill","none"),s.type!=="rel_b"&&m.attr("marker-end","url("+f+"#"+i+"-arrowhead)"),(s.type==="birel"||s.type==="rel_b")&&m.attr("marker-start","url("+f+"#"+i+"-arrowend)"),a=-1}else{let m=n.append("path");m.attr("fill","none").attr("stroke-width","1").attr("stroke",u).attr("d","Mstartx,starty Qcontrolx,controly stopx,stopy ".replaceAll("startx",s.startPoint.x).replaceAll("starty",s.startPoint.y).replaceAll("controlx",s.startPoint.x+(s.endPoint.x-s.startPoint.x)/2-(s.endPoint.x-s.startPoint.x)/4).replaceAll("controly",s.startPoint.y+(s.endPoint.y-s.startPoint.y)/2).replaceAll("stopx",s.endPoint.x).replaceAll("stopy",s.endPoint.y)),s.type!=="rel_b"&&m.attr("marker-end","url("+f+"#"+i+"-arrowhead)"),(s.type==="birel"||s.type==="rel_b")&&m.attr("marker-start","url("+f+"#"+i+"-arrowend)")}let p=r.messageFont();Nu(r)(s.label.text,n,Math.min(s.startPoint.x,s.endPoint.x)+Math.abs(s.endPoint.x-s.startPoint.x)/2+h,Math.min(s.startPoint.y,s.endPoint.y)+Math.abs(s.endPoint.y-s.startPoint.y)/2+d,s.label.width,s.label.height,{fill:l},p),s.techn&&s.techn.text!==""&&(p=r.messageFont(),Nu(r)("["+s.techn.text+"]",n,Math.min(s.startPoint.x,s.endPoint.x)+Math.abs(s.endPoint.x-s.startPoint.x)/2+h,Math.min(s.startPoint.y,s.endPoint.y)+Math.abs(s.endPoint.y-s.startPoint.y)/2+r.messageFontSize+5+d,Math.max(s.label.width,s.techn.width),s.techn.height,{fill:l,"font-style":"italic"},p))}},"drawRels"),cze=o(function(e,t,r){let i=e.append("g"),n=t.bgColor?t.bgColor:"none",a=t.borderColor?t.borderColor:"#444444",s=t.fontColor?t.fontColor:"black",l={"stroke-width":1,"stroke-dasharray":"7.0,7.0"};t.nodeType&&(l={"stroke-width":1});let u={x:t.x,y:t.y,fill:n,stroke:a,width:t.width,height:t.height,rx:2.5,ry:2.5,attrs:l};mM(i,u);let h=r.boundaryFont();h.fontWeight="bold",h.fontSize=h.fontSize+2,h.fontColor=s,Nu(r)(t.label.text,i,t.x,t.y+t.label.Y,t.width,t.height,{fill:"#444444"},h),t.type&&t.type.text!==""&&(h=r.boundaryFont(),h.fontColor=s,Nu(r)(t.type.text,i,t.x,t.y+t.type.Y,t.width,t.height,{fill:"#444444"},h)),t.descr&&t.descr.text!==""&&(h=r.boundaryFont(),h.fontSize=h.fontSize-2,h.fontColor=s,Nu(r)(t.descr.text,i,t.x,t.y+t.descr.Y,t.width,t.height,{fill:"#444444"},h))},"drawBoundary"),uze=o(function(e,t,r){let i=t.bgColor?t.bgColor:r[t.typeC4Shape.text+"_bg_color"],n=t.borderColor?t.borderColor:r[t.typeC4Shape.text+"_border_color"],a=t.fontColor?t.fontColor:"#FFFFFF",s="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAIAAADYYG7QAAACD0lEQVR4Xu2YoU4EMRCGT+4j8Ai8AhaH4QHgAUjQuFMECUgMIUgwJAgMhgQsAYUiJCiQIBBY+EITsjfTdme6V24v4c8vyGbb+ZjOtN0bNcvjQXmkH83WvYBWto6PLm6v7p7uH1/w2fXD+PBycX1Pv2l3IdDm/vn7x+dXQiAubRzoURa7gRZWd0iGRIiJbOnhnfYBQZNJjNbuyY2eJG8fkDE3bbG4ep6MHUAsgYxmE3nVs6VsBWJSGccsOlFPmLIViMzLOB7pCVO2AtHJMohH7Fh6zqitQK7m0rJvAVYgGcEpe//PLdDz65sM4pF9N7ICcXDKIB5Nv6j7tD0NoSdM2QrU9Gg0ewE1LqBhHR3BBdvj2vapnidjHxD/q6vd7Pvhr31AwcY8eXMTXAKECZZJFXuEq27aLgQK5uLMohCenGGuGewOxSjBvYBqeG6B+Nqiblggdjnc+ZXDy+FNFpFzw76O3UBAROuXh6FoiAcf5g9eTvUgzy0nWg6I8cXHRUpg5bOVBCo+KDpFajOf23GgPme7RSQ+lacIENUgJ6gg1k6HjgOlqnLqip4tEuhv0hNEMXUD0clyXE3p6pZA0S2nnvTlXwLJEZWlb7cTQH1+USgTN4VhAenm/wea1OCAOmqo6fE1WCb9WSKBah+rbUWPWAmE2Rvk0ApiB45eOyNAzU8xcTvj8KvkKEoOaIYeHNA3ZuygAvFMUO0AAAAASUVORK5CYII=";switch(t.typeC4Shape.text){case"person":s="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAIAAADYYG7QAAACD0lEQVR4Xu2YoU4EMRCGT+4j8Ai8AhaH4QHgAUjQuFMECUgMIUgwJAgMhgQsAYUiJCiQIBBY+EITsjfTdme6V24v4c8vyGbb+ZjOtN0bNcvjQXmkH83WvYBWto6PLm6v7p7uH1/w2fXD+PBycX1Pv2l3IdDm/vn7x+dXQiAubRzoURa7gRZWd0iGRIiJbOnhnfYBQZNJjNbuyY2eJG8fkDE3bbG4ep6MHUAsgYxmE3nVs6VsBWJSGccsOlFPmLIViMzLOB7pCVO2AtHJMohH7Fh6zqitQK7m0rJvAVYgGcEpe//PLdDz65sM4pF9N7ICcXDKIB5Nv6j7tD0NoSdM2QrU9Gg0ewE1LqBhHR3BBdvj2vapnidjHxD/q6vd7Pvhr31AwcY8eXMTXAKECZZJFXuEq27aLgQK5uLMohCenGGuGewOxSjBvYBqeG6B+Nqiblggdjnc+ZXDy+FNFpFzw76O3UBAROuXh6FoiAcf5g9eTvUgzy0nWg6I8cXHRUpg5bOVBCo+KDpFajOf23GgPme7RSQ+lacIENUgJ6gg1k6HjgOlqnLqip4tEuhv0hNEMXUD0clyXE3p6pZA0S2nnvTlXwLJEZWlb7cTQH1+USgTN4VhAenm/wea1OCAOmqo6fE1WCb9WSKBah+rbUWPWAmE2Rvk0ApiB45eOyNAzU8xcTvj8KvkKEoOaIYeHNA3ZuygAvFMUO0AAAAASUVORK5CYII=";break;case"external_person":s="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAIAAADYYG7QAAAB6ElEQVR4Xu2YLY+EMBCG9+dWr0aj0Wg0Go1Go0+j8Xdv2uTCvv1gpt0ebHKPuhDaeW4605Z9mJvx4AdXUyTUdd08z+u6flmWZRnHsWkafk9DptAwDPu+f0eAYtu2PEaGWuj5fCIZrBAC2eLBAnRCsEkkxmeaJp7iDJ2QMDdHsLg8SxKFEJaAo8lAXnmuOFIhTMpxxKATebo4UiFknuNo4OniSIXQyRxEA3YsnjGCVEjVXD7yLUAqxBGUyPv/Y4W2beMgGuS7kVQIBycH0fD+oi5pezQETxdHKmQKGk1eQEYldK+jw5GxPfZ9z7Mk0Qnhf1W1m3w//EUn5BDmSZsbR44QQLBEqrBHqOrmSKaQAxdnLArCrxZcM7A7ZKs4ioRq8LFC+NpC3WCBJsvpVw5edm9iEXFuyNfxXAgSwfrFQ1c0iNda8AdejvUgnktOtJQQxmcfFzGglc5WVCj7oDgFqU18boeFSs52CUh8LE8BIVQDT1ABrB0HtgSEYlX5doJnCwv9TXocKCaKbnwhdDKPq4lf3SwU3HLq4V/+WYhHVMa/3b4IlfyikAduCkcBc7mQ3/z/Qq/cTuikhkzB12Ae/mcJC9U+Vo8Ej1gWAtgbeGgFsAMHr50BIWOLCbezvhpBFUdY6EJuJ/QDW0XoMX60zZ0AAAAASUVORK5CYII=";break}let l=e.append("g");l.attr("class","person-man");let u=fa();switch(t.typeC4Shape.text){case"person":case"external_person":case"system":case"external_system":case"container":case"external_container":case"component":case"external_component":u.x=t.x,u.y=t.y,u.fill=i,u.width=t.width,u.height=t.height,u.stroke=n,u.rx=2.5,u.ry=2.5,u.attrs={"stroke-width":.5},mM(l,u);break;case"system_db":case"external_system_db":case"container_db":case"external_container_db":case"component_db":case"external_component_db":l.append("path").attr("fill",i).attr("stroke-width","0.5").attr("stroke",n).attr("d","Mstartx,startyc0,-10 half,-10 half,-10c0,0 half,0 half,10l0,heightc0,10 -half,10 -half,10c0,0 -half,0 -half,-10l0,-height".replaceAll("startx",t.x).replaceAll("starty",t.y).replaceAll("half",t.width/2).replaceAll("height",t.height)),l.append("path").attr("fill","none").attr("stroke-width","0.5").attr("stroke",n).attr("d","Mstartx,startyc0,10 half,10 half,10c0,0 half,0 half,-10".replaceAll("startx",t.x).replaceAll("starty",t.y).replaceAll("half",t.width/2));break;case"system_queue":case"external_system_queue":case"container_queue":case"external_container_queue":case"component_queue":case"external_component_queue":l.append("path").attr("fill",i).attr("stroke-width","0.5").attr("stroke",n).attr("d","Mstartx,startylwidth,0c5,0 5,half 5,halfc0,0 0,half -5,halfl-width,0c-5,0 -5,-half -5,-halfc0,0 0,-half 5,-half".replaceAll("startx",t.x).replaceAll("starty",t.y).replaceAll("width",t.width).replaceAll("half",t.height/2)),l.append("path").attr("fill","none").attr("stroke-width","0.5").attr("stroke",n).attr("d","Mstartx,startyc-5,0 -5,half -5,halfc0,half 5,half 5,half".replaceAll("startx",t.x+t.width).replaceAll("starty",t.y).replaceAll("half",t.height/2));break}let h=vze(r,t.typeC4Shape.text);switch(l.append("text").attr("fill",a).attr("font-family",h.fontFamily).attr("font-size",h.fontSize-2).attr("font-style","italic").attr("lengthAdjust","spacing").attr("textLength",t.typeC4Shape.width).attr("x",t.x+t.width/2-t.typeC4Shape.width/2).attr("y",t.y+t.typeC4Shape.Y).text("<<"+t.typeC4Shape.text+">>"),t.typeC4Shape.text){case"person":case"external_person":xee(l,48,48,t.x+t.width/2-24,t.y+t.image.Y,s);break}let d=r[t.typeC4Shape.text+"Font"]();return d.fontWeight="bold",d.fontSize=d.fontSize+2,d.fontColor=a,Nu(r)(t.label.text,l,t.x,t.y+t.label.Y,t.width,t.height,{fill:a},d),d=r[t.typeC4Shape.text+"Font"](),d.fontColor=a,t.techn&&t.techn?.text!==""?Nu(r)(t.techn.text,l,t.x,t.y+t.techn.Y,t.width,t.height,{fill:a,"font-style":"italic"},d):t.type&&t.type.text!==""&&Nu(r)(t.type.text,l,t.x,t.y+t.type.Y,t.width,t.height,{fill:a,"font-style":"italic"},d),t.descr&&t.descr.text!==""&&(d=r.personFont(),d.fontColor=a,Nu(r)(t.descr.text,l,t.x,t.y+t.descr.Y,t.width,t.height,{fill:a},d)),t.height},"drawC4Shape"),hze=o(function(e,t){e.append("defs").append("symbol").attr("id",t+"-database").attr("fill-rule","evenodd").attr("clip-rule","evenodd").append("path").attr("transform","scale(.5)").attr("d","M12.258.001l.256.004.255.005.253.008.251.01.249.012.247.015.246.016.242.019.241.02.239.023.236.024.233.027.231.028.229.031.225.032.223.034.22.036.217.038.214.04.211.041.208.043.205.045.201.046.198.048.194.05.191.051.187.053.183.054.18.056.175.057.172.059.168.06.163.061.16.063.155.064.15.066.074.033.073.033.071.034.07.034.069.035.068.035.067.035.066.035.064.036.064.036.062.036.06.036.06.037.058.037.058.037.055.038.055.038.053.038.052.038.051.039.05.039.048.039.047.039.045.04.044.04.043.04.041.04.04.041.039.041.037.041.036.041.034.041.033.042.032.042.03.042.029.042.027.042.026.043.024.043.023.043.021.043.02.043.018.044.017.043.015.044.013.044.012.044.011.045.009.044.007.045.006.045.004.045.002.045.001.045v17l-.001.045-.002.045-.004.045-.006.045-.007.045-.009.044-.011.045-.012.044-.013.044-.015.044-.017.043-.018.044-.02.043-.021.043-.023.043-.024.043-.026.043-.027.042-.029.042-.03.042-.032.042-.033.042-.034.041-.036.041-.037.041-.039.041-.04.041-.041.04-.043.04-.044.04-.045.04-.047.039-.048.039-.05.039-.051.039-.052.038-.053.038-.055.038-.055.038-.058.037-.058.037-.06.037-.06.036-.062.036-.064.036-.064.036-.066.035-.067.035-.068.035-.069.035-.07.034-.071.034-.073.033-.074.033-.15.066-.155.064-.16.063-.163.061-.168.06-.172.059-.175.057-.18.056-.183.054-.187.053-.191.051-.194.05-.198.048-.201.046-.205.045-.208.043-.211.041-.214.04-.217.038-.22.036-.223.034-.225.032-.229.031-.231.028-.233.027-.236.024-.239.023-.241.02-.242.019-.246.016-.247.015-.249.012-.251.01-.253.008-.255.005-.256.004-.258.001-.258-.001-.256-.004-.255-.005-.253-.008-.251-.01-.249-.012-.247-.015-.245-.016-.243-.019-.241-.02-.238-.023-.236-.024-.234-.027-.231-.028-.228-.031-.226-.032-.223-.034-.22-.036-.217-.038-.214-.04-.211-.041-.208-.043-.204-.045-.201-.046-.198-.048-.195-.05-.19-.051-.187-.053-.184-.054-.179-.056-.176-.057-.172-.059-.167-.06-.164-.061-.159-.063-.155-.064-.151-.066-.074-.033-.072-.033-.072-.034-.07-.034-.069-.035-.068-.035-.067-.035-.066-.035-.064-.036-.063-.036-.062-.036-.061-.036-.06-.037-.058-.037-.057-.037-.056-.038-.055-.038-.053-.038-.052-.038-.051-.039-.049-.039-.049-.039-.046-.039-.046-.04-.044-.04-.043-.04-.041-.04-.04-.041-.039-.041-.037-.041-.036-.041-.034-.041-.033-.042-.032-.042-.03-.042-.029-.042-.027-.042-.026-.043-.024-.043-.023-.043-.021-.043-.02-.043-.018-.044-.017-.043-.015-.044-.013-.044-.012-.044-.011-.045-.009-.044-.007-.045-.006-.045-.004-.045-.002-.045-.001-.045v-17l.001-.045.002-.045.004-.045.006-.045.007-.045.009-.044.011-.045.012-.044.013-.044.015-.044.017-.043.018-.044.02-.043.021-.043.023-.043.024-.043.026-.043.027-.042.029-.042.03-.042.032-.042.033-.042.034-.041.036-.041.037-.041.039-.041.04-.041.041-.04.043-.04.044-.04.046-.04.046-.039.049-.039.049-.039.051-.039.052-.038.053-.038.055-.038.056-.038.057-.037.058-.037.06-.037.061-.036.062-.036.063-.036.064-.036.066-.035.067-.035.068-.035.069-.035.07-.034.072-.034.072-.033.074-.033.151-.066.155-.064.159-.063.164-.061.167-.06.172-.059.176-.057.179-.056.184-.054.187-.053.19-.051.195-.05.198-.048.201-.046.204-.045.208-.043.211-.041.214-.04.217-.038.22-.036.223-.034.226-.032.228-.031.231-.028.234-.027.236-.024.238-.023.241-.02.243-.019.245-.016.247-.015.249-.012.251-.01.253-.008.255-.005.256-.004.258-.001.258.001zm-9.258 20.499v.01l.001.021.003.021.004.022.005.021.006.022.007.022.009.023.01.022.011.023.012.023.013.023.015.023.016.024.017.023.018.024.019.024.021.024.022.025.023.024.024.025.052.049.056.05.061.051.066.051.07.051.075.051.079.052.084.052.088.052.092.052.097.052.102.051.105.052.11.052.114.051.119.051.123.051.127.05.131.05.135.05.139.048.144.049.147.047.152.047.155.047.16.045.163.045.167.043.171.043.176.041.178.041.183.039.187.039.19.037.194.035.197.035.202.033.204.031.209.03.212.029.216.027.219.025.222.024.226.021.23.02.233.018.236.016.24.015.243.012.246.01.249.008.253.005.256.004.259.001.26-.001.257-.004.254-.005.25-.008.247-.011.244-.012.241-.014.237-.016.233-.018.231-.021.226-.021.224-.024.22-.026.216-.027.212-.028.21-.031.205-.031.202-.034.198-.034.194-.036.191-.037.187-.039.183-.04.179-.04.175-.042.172-.043.168-.044.163-.045.16-.046.155-.046.152-.047.148-.048.143-.049.139-.049.136-.05.131-.05.126-.05.123-.051.118-.052.114-.051.11-.052.106-.052.101-.052.096-.052.092-.052.088-.053.083-.051.079-.052.074-.052.07-.051.065-.051.06-.051.056-.05.051-.05.023-.024.023-.025.021-.024.02-.024.019-.024.018-.024.017-.024.015-.023.014-.024.013-.023.012-.023.01-.023.01-.022.008-.022.006-.022.006-.022.004-.022.004-.021.001-.021.001-.021v-4.127l-.077.055-.08.053-.083.054-.085.053-.087.052-.09.052-.093.051-.095.05-.097.05-.1.049-.102.049-.105.048-.106.047-.109.047-.111.046-.114.045-.115.045-.118.044-.12.043-.122.042-.124.042-.126.041-.128.04-.13.04-.132.038-.134.038-.135.037-.138.037-.139.035-.142.035-.143.034-.144.033-.147.032-.148.031-.15.03-.151.03-.153.029-.154.027-.156.027-.158.026-.159.025-.161.024-.162.023-.163.022-.165.021-.166.02-.167.019-.169.018-.169.017-.171.016-.173.015-.173.014-.175.013-.175.012-.177.011-.178.01-.179.008-.179.008-.181.006-.182.005-.182.004-.184.003-.184.002h-.37l-.184-.002-.184-.003-.182-.004-.182-.005-.181-.006-.179-.008-.179-.008-.178-.01-.176-.011-.176-.012-.175-.013-.173-.014-.172-.015-.171-.016-.17-.017-.169-.018-.167-.019-.166-.02-.165-.021-.163-.022-.162-.023-.161-.024-.159-.025-.157-.026-.156-.027-.155-.027-.153-.029-.151-.03-.15-.03-.148-.031-.146-.032-.145-.033-.143-.034-.141-.035-.14-.035-.137-.037-.136-.037-.134-.038-.132-.038-.13-.04-.128-.04-.126-.041-.124-.042-.122-.042-.12-.044-.117-.043-.116-.045-.113-.045-.112-.046-.109-.047-.106-.047-.105-.048-.102-.049-.1-.049-.097-.05-.095-.05-.093-.052-.09-.051-.087-.052-.085-.053-.083-.054-.08-.054-.077-.054v4.127zm0-5.654v.011l.001.021.003.021.004.021.005.022.006.022.007.022.009.022.01.022.011.023.012.023.013.023.015.024.016.023.017.024.018.024.019.024.021.024.022.024.023.025.024.024.052.05.056.05.061.05.066.051.07.051.075.052.079.051.084.052.088.052.092.052.097.052.102.052.105.052.11.051.114.051.119.052.123.05.127.051.131.05.135.049.139.049.144.048.147.048.152.047.155.046.16.045.163.045.167.044.171.042.176.042.178.04.183.04.187.038.19.037.194.036.197.034.202.033.204.032.209.03.212.028.216.027.219.025.222.024.226.022.23.02.233.018.236.016.24.014.243.012.246.01.249.008.253.006.256.003.259.001.26-.001.257-.003.254-.006.25-.008.247-.01.244-.012.241-.015.237-.016.233-.018.231-.02.226-.022.224-.024.22-.025.216-.027.212-.029.21-.03.205-.032.202-.033.198-.035.194-.036.191-.037.187-.039.183-.039.179-.041.175-.042.172-.043.168-.044.163-.045.16-.045.155-.047.152-.047.148-.048.143-.048.139-.05.136-.049.131-.05.126-.051.123-.051.118-.051.114-.052.11-.052.106-.052.101-.052.096-.052.092-.052.088-.052.083-.052.079-.052.074-.051.07-.052.065-.051.06-.05.056-.051.051-.049.023-.025.023-.024.021-.025.02-.024.019-.024.018-.024.017-.024.015-.023.014-.023.013-.024.012-.022.01-.023.01-.023.008-.022.006-.022.006-.022.004-.021.004-.022.001-.021.001-.021v-4.139l-.077.054-.08.054-.083.054-.085.052-.087.053-.09.051-.093.051-.095.051-.097.05-.1.049-.102.049-.105.048-.106.047-.109.047-.111.046-.114.045-.115.044-.118.044-.12.044-.122.042-.124.042-.126.041-.128.04-.13.039-.132.039-.134.038-.135.037-.138.036-.139.036-.142.035-.143.033-.144.033-.147.033-.148.031-.15.03-.151.03-.153.028-.154.028-.156.027-.158.026-.159.025-.161.024-.162.023-.163.022-.165.021-.166.02-.167.019-.169.018-.169.017-.171.016-.173.015-.173.014-.175.013-.175.012-.177.011-.178.009-.179.009-.179.007-.181.007-.182.005-.182.004-.184.003-.184.002h-.37l-.184-.002-.184-.003-.182-.004-.182-.005-.181-.007-.179-.007-.179-.009-.178-.009-.176-.011-.176-.012-.175-.013-.173-.014-.172-.015-.171-.016-.17-.017-.169-.018-.167-.019-.166-.02-.165-.021-.163-.022-.162-.023-.161-.024-.159-.025-.157-.026-.156-.027-.155-.028-.153-.028-.151-.03-.15-.03-.148-.031-.146-.033-.145-.033-.143-.033-.141-.035-.14-.036-.137-.036-.136-.037-.134-.038-.132-.039-.13-.039-.128-.04-.126-.041-.124-.042-.122-.043-.12-.043-.117-.044-.116-.044-.113-.046-.112-.046-.109-.046-.106-.047-.105-.048-.102-.049-.1-.049-.097-.05-.095-.051-.093-.051-.09-.051-.087-.053-.085-.052-.083-.054-.08-.054-.077-.054v4.139zm0-5.666v.011l.001.02.003.022.004.021.005.022.006.021.007.022.009.023.01.022.011.023.012.023.013.023.015.023.016.024.017.024.018.023.019.024.021.025.022.024.023.024.024.025.052.05.056.05.061.05.066.051.07.051.075.052.079.051.084.052.088.052.092.052.097.052.102.052.105.051.11.052.114.051.119.051.123.051.127.05.131.05.135.05.139.049.144.048.147.048.152.047.155.046.16.045.163.045.167.043.171.043.176.042.178.04.183.04.187.038.19.037.194.036.197.034.202.033.204.032.209.03.212.028.216.027.219.025.222.024.226.021.23.02.233.018.236.017.24.014.243.012.246.01.249.008.253.006.256.003.259.001.26-.001.257-.003.254-.006.25-.008.247-.01.244-.013.241-.014.237-.016.233-.018.231-.02.226-.022.224-.024.22-.025.216-.027.212-.029.21-.03.205-.032.202-.033.198-.035.194-.036.191-.037.187-.039.183-.039.179-.041.175-.042.172-.043.168-.044.163-.045.16-.045.155-.047.152-.047.148-.048.143-.049.139-.049.136-.049.131-.051.126-.05.123-.051.118-.052.114-.051.11-.052.106-.052.101-.052.096-.052.092-.052.088-.052.083-.052.079-.052.074-.052.07-.051.065-.051.06-.051.056-.05.051-.049.023-.025.023-.025.021-.024.02-.024.019-.024.018-.024.017-.024.015-.023.014-.024.013-.023.012-.023.01-.022.01-.023.008-.022.006-.022.006-.022.004-.022.004-.021.001-.021.001-.021v-4.153l-.077.054-.08.054-.083.053-.085.053-.087.053-.09.051-.093.051-.095.051-.097.05-.1.049-.102.048-.105.048-.106.048-.109.046-.111.046-.114.046-.115.044-.118.044-.12.043-.122.043-.124.042-.126.041-.128.04-.13.039-.132.039-.134.038-.135.037-.138.036-.139.036-.142.034-.143.034-.144.033-.147.032-.148.032-.15.03-.151.03-.153.028-.154.028-.156.027-.158.026-.159.024-.161.024-.162.023-.163.023-.165.021-.166.02-.167.019-.169.018-.169.017-.171.016-.173.015-.173.014-.175.013-.175.012-.177.01-.178.01-.179.009-.179.007-.181.006-.182.006-.182.004-.184.003-.184.001-.185.001-.185-.001-.184-.001-.184-.003-.182-.004-.182-.006-.181-.006-.179-.007-.179-.009-.178-.01-.176-.01-.176-.012-.175-.013-.173-.014-.172-.015-.171-.016-.17-.017-.169-.018-.167-.019-.166-.02-.165-.021-.163-.023-.162-.023-.161-.024-.159-.024-.157-.026-.156-.027-.155-.028-.153-.028-.151-.03-.15-.03-.148-.032-.146-.032-.145-.033-.143-.034-.141-.034-.14-.036-.137-.036-.136-.037-.134-.038-.132-.039-.13-.039-.128-.041-.126-.041-.124-.041-.122-.043-.12-.043-.117-.044-.116-.044-.113-.046-.112-.046-.109-.046-.106-.048-.105-.048-.102-.048-.1-.05-.097-.049-.095-.051-.093-.051-.09-.052-.087-.052-.085-.053-.083-.053-.08-.054-.077-.054v4.153zm8.74-8.179l-.257.004-.254.005-.25.008-.247.011-.244.012-.241.014-.237.016-.233.018-.231.021-.226.022-.224.023-.22.026-.216.027-.212.028-.21.031-.205.032-.202.033-.198.034-.194.036-.191.038-.187.038-.183.04-.179.041-.175.042-.172.043-.168.043-.163.045-.16.046-.155.046-.152.048-.148.048-.143.048-.139.049-.136.05-.131.05-.126.051-.123.051-.118.051-.114.052-.11.052-.106.052-.101.052-.096.052-.092.052-.088.052-.083.052-.079.052-.074.051-.07.052-.065.051-.06.05-.056.05-.051.05-.023.025-.023.024-.021.024-.02.025-.019.024-.018.024-.017.023-.015.024-.014.023-.013.023-.012.023-.01.023-.01.022-.008.022-.006.023-.006.021-.004.022-.004.021-.001.021-.001.021.001.021.001.021.004.021.004.022.006.021.006.023.008.022.01.022.01.023.012.023.013.023.014.023.015.024.017.023.018.024.019.024.02.025.021.024.023.024.023.025.051.05.056.05.06.05.065.051.07.052.074.051.079.052.083.052.088.052.092.052.096.052.101.052.106.052.11.052.114.052.118.051.123.051.126.051.131.05.136.05.139.049.143.048.148.048.152.048.155.046.16.046.163.045.168.043.172.043.175.042.179.041.183.04.187.038.191.038.194.036.198.034.202.033.205.032.21.031.212.028.216.027.22.026.224.023.226.022.231.021.233.018.237.016.241.014.244.012.247.011.25.008.254.005.257.004.26.001.26-.001.257-.004.254-.005.25-.008.247-.011.244-.012.241-.014.237-.016.233-.018.231-.021.226-.022.224-.023.22-.026.216-.027.212-.028.21-.031.205-.032.202-.033.198-.034.194-.036.191-.038.187-.038.183-.04.179-.041.175-.042.172-.043.168-.043.163-.045.16-.046.155-.046.152-.048.148-.048.143-.048.139-.049.136-.05.131-.05.126-.051.123-.051.118-.051.114-.052.11-.052.106-.052.101-.052.096-.052.092-.052.088-.052.083-.052.079-.052.074-.051.07-.052.065-.051.06-.05.056-.05.051-.05.023-.025.023-.024.021-.024.02-.025.019-.024.018-.024.017-.023.015-.024.014-.023.013-.023.012-.023.01-.023.01-.022.008-.022.006-.023.006-.021.004-.022.004-.021.001-.021.001-.021-.001-.021-.001-.021-.004-.021-.004-.022-.006-.021-.006-.023-.008-.022-.01-.022-.01-.023-.012-.023-.013-.023-.014-.023-.015-.024-.017-.023-.018-.024-.019-.024-.02-.025-.021-.024-.023-.024-.023-.025-.051-.05-.056-.05-.06-.05-.065-.051-.07-.052-.074-.051-.079-.052-.083-.052-.088-.052-.092-.052-.096-.052-.101-.052-.106-.052-.11-.052-.114-.052-.118-.051-.123-.051-.126-.051-.131-.05-.136-.05-.139-.049-.143-.048-.148-.048-.152-.048-.155-.046-.16-.046-.163-.045-.168-.043-.172-.043-.175-.042-.179-.041-.183-.04-.187-.038-.191-.038-.194-.036-.198-.034-.202-.033-.205-.032-.21-.031-.212-.028-.216-.027-.22-.026-.224-.023-.226-.022-.231-.021-.233-.018-.237-.016-.241-.014-.244-.012-.247-.011-.25-.008-.254-.005-.257-.004-.26-.001-.26.001z")},"insertDatabaseIcon"),dze=o(function(e,t){e.append("defs").append("symbol").attr("id",t+"-computer").attr("width","24").attr("height","24").append("path").attr("transform","scale(.5)").attr("d","M2 2v13h20v-13h-20zm18 11h-16v-9h16v9zm-10.228 6l.466-1h3.524l.467 1h-4.457zm14.228 3h-24l2-6h2.104l-1.33 4h18.45l-1.297-4h2.073l2 6zm-5-10h-14v-7h14v7z")},"insertComputerIcon"),fze=o(function(e,t){e.append("defs").append("symbol").attr("id",t+"-clock").attr("width","24").attr("height","24").append("path").attr("transform","scale(.5)").attr("d","M12 2c5.514 0 10 4.486 10 10s-4.486 10-10 10-10-4.486-10-10 4.486-10 10-10zm0-2c-6.627 0-12 5.373-12 12s5.373 12 12 12 12-5.373 12-12-5.373-12-12-12zm5.848 12.459c.202.038.202.333.001.372-1.907.361-6.045 1.111-6.547 1.111-.719 0-1.301-.582-1.301-1.301 0-.512.77-5.447 1.125-7.445.034-.192.312-.181.343.014l.985 6.238 5.394 1.011z")},"insertClockIcon"),pze=o(function(e,t){e.append("defs").append("marker").attr("id",t+"-arrowhead").attr("refX",9).attr("refY",5).attr("markerUnits","userSpaceOnUse").attr("markerWidth",12).attr("markerHeight",12).attr("orient","auto").append("path").attr("d","M 0 0 L 10 5 L 0 10 z")},"insertArrowHead"),mze=o(function(e,t){e.append("defs").append("marker").attr("id",t+"-arrowend").attr("refX",1).attr("refY",5).attr("markerUnits","userSpaceOnUse").attr("markerWidth",12).attr("markerHeight",12).attr("orient","auto").append("path").attr("d","M 10 0 L 0 5 L 10 10 z")},"insertArrowEnd"),gze=o(function(e,t){e.append("defs").append("marker").attr("id",t+"-filled-head").attr("refX",18).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L14,7 L9,1 Z")},"insertArrowFilledHead"),yze=o(function(e,t){let i=e.append("defs").append("marker").attr("id",t+"-crosshead").attr("markerWidth",15).attr("markerHeight",8).attr("orient","auto").attr("refX",16).attr("refY",4);i.append("path").attr("fill","black").attr("stroke","#000000").style("stroke-dasharray","0, 0").attr("stroke-width","1px").attr("d","M 9,2 V 6 L16,4 Z"),i.append("path").attr("fill","none").attr("stroke","#000000").style("stroke-dasharray","0, 0").attr("stroke-width","1px").attr("d","M 0,1 L 6,7 M 6,1 L 0,7")},"insertArrowCrossHead"),vze=o((e,t)=>({fontFamily:e[t+"FontFamily"],fontSize:e[t+"FontSize"],fontWeight:e[t+"FontWeight"]}),"getC4ShapeFont"),Nu=(function(){function e(n,a,s,l,u,h,d){let f=a.append("text").attr("x",s+u/2).attr("y",l+h/2+5).style("text-anchor","middle").text(n);i(f,d)}o(e,"byText");function t(n,a,s,l,u,h,d,f){let{fontSize:p,fontFamily:m,fontWeight:g}=f,y=n.split(vt.lineBreakRegex);for(let v=0;v<y.length;v++){let x=v*p-p*(y.length-1)/2,b=a.append("text").attr("x",s+u/2).attr("y",l).style("text-anchor","middle").attr("dominant-baseline","middle").style("font-size",p).style("font-weight",g).style("font-family",m);b.append("tspan").attr("dy",x).text(y[v]).attr("alignment-baseline","mathematical"),i(b,d)}}o(t,"byTspan");function r(n,a,s,l,u,h,d,f){let p=a.append("switch"),g=p.append("foreignObject").attr("x",s).attr("y",l).attr("width",u).attr("height",h).append("xhtml:div").style("display","table").style("height","100%").style("width","100%");g.append("div").style("display","table-cell").style("text-align","center").style("vertical-align","middle").text(n),t(n,p,s,l,u,h,d,f),i(g,d)}o(r,"byFo");function i(n,a){for(let s in a)a.hasOwnProperty(s)&&n.attr(s,a[s])}return o(i,"_setTextAttrs"),function(n){return n.textPlacement==="fo"?r:n.textPlacement==="old"?e:t}})(),Rl={drawRect:mM,drawBoundary:cze,drawC4Shape:uze,drawRels:lze,drawImage:xee,insertArrowHead:pze,insertArrowEnd:mze,insertArrowFilledHead:gze,insertArrowCrossHead:yze,insertDatabaseIcon:hze,insertComputerIcon:dze,insertClockIcon:fze}});function Tee(e){return Number.isSafeInteger(e)&&e>=0}var Cee=z(()=>{"use strict";o(Tee,"isLength")});function Vw(e){return e!=null&&typeof e!="function"&&Tee(e.length)}var gM=z(()=>{"use strict";Cee();o(Vw,"isArrayLike")});function kee(e){return e==="__proto__"}var wee=z(()=>{"use strict";o(kee,"isUnsafeProperty")});function rd(e){return e==null||typeof e!="object"&&typeof e!="function"}var Sx=z(()=>{"use strict";o(rd,"isPrimitive")});function Ww(e){return Object.getOwnPropertySymbols(e).filter(t=>Object.prototype.propertyIsEnumerable.call(e,t))}var yM=z(()=>{"use strict";o(Ww,"getSymbols")});function Iu(e){return e==null?e===void 0?"[object Undefined]":"[object Null]":Object.prototype.toString.call(e)}var Ex=z(()=>{"use strict";o(Iu,"getTag")});var Ax,id,yp,vp,xp,_x,Dx,Rx,Lx,qw,Mx,pg,Nx,Uw,Hw,Yw,jw,Xw,Kw,Zw,Qw,Jw,e4=z(()=>{"use strict";Ax="[object RegExp]",id="[object String]",yp="[object Number]",vp="[object Boolean]",xp="[object Arguments]",_x="[object Symbol]",Dx="[object Date]",Rx="[object Map]",Lx="[object Set]",qw="[object Array]",Mx="[object ArrayBuffer]",pg="[object Object]",Nx="[object DataView]",Uw="[object Uint8Array]",Hw="[object Uint8ClampedArray]",Yw="[object Uint16Array]",jw="[object Uint32Array]",Xw="[object Int8Array]",Kw="[object Int16Array]",Zw="[object Int32Array]",Qw="[object Float32Array]",Jw="[object Float64Array]"});function mg(e){return ArrayBuffer.isView(e)&&!(e instanceof DataView)}var t4=z(()=>{"use strict";o(mg,"isTypedArray")});function See(e,t){return gg(e,void 0,e,new Map,t)}function gg(e,t,r,i=new Map,n=void 0){let a=n?.(e,t,r,i);if(a!==void 0)return a;if(rd(e))return e;if(i.has(e))return i.get(e);if(Array.isArray(e)){let s=new Array(e.length);i.set(e,s);for(let l=0;l<e.length;l++)s[l]=gg(e[l],l,r,i,n);return Object.hasOwn(e,"index")&&(s.index=e.index),Object.hasOwn(e,"input")&&(s.input=e.input),s}if(e instanceof Date)return new Date(e.getTime());if(e instanceof RegExp){let s=new RegExp(e.source,e.flags);return s.lastIndex=e.lastIndex,s}if(e instanceof Map){let s=new Map;i.set(e,s);for(let[l,u]of e)s.set(l,gg(u,l,r,i,n));return s}if(e instanceof Set){let s=new Set;i.set(e,s);for(let l of e)s.add(gg(l,void 0,r,i,n));return s}if(typeof Buffer<"u"&&Buffer.isBuffer(e))return e.subarray();if(mg(e)){let s=new(Object.getPrototypeOf(e)).constructor(e.length);i.set(e,s);for(let l=0;l<e.length;l++)s[l]=gg(e[l],l,r,i,n);return s}if(e instanceof ArrayBuffer||typeof SharedArrayBuffer<"u"&&e instanceof SharedArrayBuffer)return e.slice(0);if(e instanceof DataView){let s=new DataView(e.buffer.slice(0),e.byteOffset,e.byteLength);return i.set(e,s),Po(s,e,r,i,n),s}if(typeof File<"u"&&e instanceof File){let s=new File([e],e.name,{type:e.type});return i.set(e,s),Po(s,e,r,i,n),s}if(typeof Blob<"u"&&e instanceof Blob){let s=new Blob([e],{type:e.type});return i.set(e,s),Po(s,e,r,i,n),s}if(e instanceof Error){let s=structuredClone(e);return i.set(e,s),s.message=e.message,s.name=e.name,s.stack=e.stack,s.cause=e.cause,s.constructor=e.constructor,Po(s,e,r,i,n),s}if(e instanceof Boolean){let s=new Boolean(e.valueOf());return i.set(e,s),Po(s,e,r,i,n),s}if(e instanceof Number){let s=new Number(e.valueOf());return i.set(e,s),Po(s,e,r,i,n),s}if(e instanceof String){let s=new String(e.valueOf());return i.set(e,s),Po(s,e,r,i,n),s}if(typeof e=="object"&&xze(e)){let s=Object.create(Object.getPrototypeOf(e));return i.set(e,s),Po(s,e,r,i,n),s}return e}function Po(e,t,r=e,i,n){let a=[...Object.keys(t),...Ww(t)];for(let s=0;s<a.length;s++){let l=a[s],u=Object.getOwnPropertyDescriptor(e,l);(u==null||u.writable)&&(e[l]=gg(t[l],l,r,i,n))}}function xze(e){switch(Iu(e)){case xp:case qw:case Mx:case Nx:case vp:case Dx:case Qw:case Jw:case Xw:case Kw:case Zw:case Rx:case yp:case pg:case Ax:case Lx:case id:case _x:case Uw:case Hw:case Yw:case jw:return!0;default:return!1}}var Eee=z(()=>{"use strict";yM();Ex();e4();Sx();t4();o(See,"cloneDeepWith");o(gg,"cloneDeepWithImpl");o(Po,"copyProperties");o(xze,"isCloneableObject")});function Aee(e,t){return See(e,(r,i,n,a)=>{let s=t?.(r,i,n,a);if(s!==void 0)return s;if(typeof e=="object"){if(Iu(e)===pg&&typeof e.constructor!="function"){let l={};return a.set(e,l),Po(l,e,n,a),l}switch(Object.prototype.toString.call(e)){case yp:case id:case vp:{let l=new e.constructor(e?.valueOf());return Po(l,e),l}case xp:{let l={};return Po(l,e),l.length=e.length,l[Symbol.iterator]=e[Symbol.iterator],l}default:return}}})}var _ee=z(()=>{"use strict";Eee();Ex();e4();o(Aee,"cloneDeepWith")});function vM(e){return Aee(e)}var Dee=z(()=>{"use strict";_ee();o(vM,"cloneDeep")});function Ix(e){return e!==null&&typeof e=="object"&&Iu(e)==="[object Arguments]"}var xM=z(()=>{"use strict";Ex();o(Ix,"isArguments")});function Ox(e){return typeof e=="object"&&e!==null}var bM=z(()=>{"use strict";o(Ox,"isObjectLike")});function Ree(e){return Ox(e)&&Vw(e)}var Lee=z(()=>{"use strict";gM();bM();o(Ree,"isArrayLikeObject")});function Mee(e){return Array.isArray(e)}var Nee=z(()=>{"use strict";o(Mee,"isArray")});function bp(e,t){if(typeof e!="function"||t!=null&&typeof t!="function")throw new TypeError("Expected a function");let r=o(function(...n){let a=t?t.apply(this,n):n[0],s=r.cache;if(s.has(a))return s.get(a);let l=e.apply(this,n);return r.cache=s.set(a,l)||s,l},"memoized"),i=bp.Cache||Map;return r.cache=new i,r}var Iee=z(()=>{"use strict";o(bp,"memoize");bp.Cache=Map});function Oee(){}var Pee=z(()=>{"use strict";o(Oee,"noop")});function Bee(e){let t=e?.constructor,r=typeof t=="function"?t.prototype:Object.prototype;return e===r}var Fee=z(()=>{"use strict";o(Bee,"isPrototype")});function nd(e){return mg(e)}var r4=z(()=>{"use strict";t4();o(nd,"isTypedArray")});function CM(e){if(rd(e))return e;let t=Iu(e);if(!bze(e))return{};if(Mee(e)){let i=Array.from(e);return e.length>0&&typeof e[0]=="string"&&Object.hasOwn(e,"index")&&(i.index=e.index,i.input=e.input),i}if(nd(e)){let i=e,n=i.constructor;return new n(i.buffer,i.byteOffset,i.length)}if(t===Mx)return new ArrayBuffer(e.byteLength);if(t===Nx){let i=e,n=i.buffer,a=i.byteOffset,s=i.byteLength,l=new ArrayBuffer(s),u=new Uint8Array(n,a,s);return new Uint8Array(l).set(u),new DataView(l)}if(t===vp||t===yp||t===id){let i=e.constructor,n=new i(e.valueOf());return t===id?Cze(n,e):TM(n,e),n}if(t===Dx)return new Date(Number(e));if(t===Ax){let i=e,n=new RegExp(i.source,i.flags);return n.lastIndex=i.lastIndex,n}if(t===_x)return Object(Symbol.prototype.valueOf.call(e));if(t===Rx){let i=e,n=new Map;return i.forEach((a,s)=>{n.set(s,a)}),n}if(t===Lx){let i=e,n=new Set;return i.forEach(a=>{n.add(a)}),n}if(t===xp){let i=e,n={};return TM(n,i),n.length=i.length,n[Symbol.iterator]=i[Symbol.iterator],n}let r={};return kze(r,e),TM(r,e),Tze(r,e),r}function bze(e){switch(Iu(e)){case xp:case qw:case Mx:case Nx:case vp:case Dx:case Qw:case Jw:case Xw:case Kw:case Zw:case Rx:case yp:case pg:case Ax:case Lx:case id:case _x:case Uw:case Hw:case Yw:case jw:return!0;default:return!1}}function TM(e,t){for(let r in t)Object.hasOwn(t,r)&&(e[r]=t[r])}function Tze(e,t){let r=Object.getOwnPropertySymbols(t);for(let i=0;i<r.length;i++){let n=r[i];Object.prototype.propertyIsEnumerable.call(t,n)&&(e[n]=t[n])}}function Cze(e,t){let r=t.valueOf().length;for(let i in t)Object.hasOwn(t,i)&&(Number.isNaN(Number(i))||Number(i)>=r)&&(e[i]=t[i])}function kze(e,t){let r=Object.getPrototypeOf(t);r!==null&&typeof t.constructor=="function"&&Object.setPrototypeOf(e,r)}var $ee=z(()=>{"use strict";Sx();Ex();e4();Nee();r4();o(CM,"clone");o(bze,"isCloneableObject");o(TM,"copyOwnProperties");o(Tze,"copySymbolProperties");o(Cze,"cloneStringObjectProperties");o(kze,"copyPrototype")});function i4(e){if(typeof e!="object"||e==null)return!1;if(Object.getPrototypeOf(e)===null)return!0;if(Object.prototype.toString.call(e)!=="[object Object]"){let r=e[Symbol.toStringTag];return r==null||!Object.getOwnPropertyDescriptor(e,Symbol.toStringTag)?.writable?!1:e.toString()===`[object ${r}]`}let t=e;for(;Object.getPrototypeOf(t)!==null;)t=Object.getPrototypeOf(t);return Object.getPrototypeOf(e)===t}var zee=z(()=>{"use strict";o(i4,"isPlainObject")});function Gee(e){if(rd(e))return e;if(Array.isArray(e)||mg(e)||e instanceof ArrayBuffer||typeof SharedArrayBuffer<"u"&&e instanceof SharedArrayBuffer)return e.slice(0);let t=Object.getPrototypeOf(e);if(t==null)return Object.assign(Object.create(t),e);let r=t.constructor;if(e instanceof Date||e instanceof Map||e instanceof Set)return new r(e);if(e instanceof RegExp){let i=new r(e);return i.lastIndex=e.lastIndex,i}if(e instanceof DataView)return new r(e.buffer.slice(0));if(e instanceof Error){let i;return e instanceof AggregateError?i=new r(e.errors,e.message,{cause:e.cause}):i=new r(e.message,{cause:e.cause}),i.stack=e.stack,Object.assign(i,e),i}if(typeof File<"u"&&e instanceof File)return new r([e],e.name,{type:e.type,lastModified:e.lastModified});if(typeof e=="object"){let i=Object.create(t);return Object.assign(i,e)}return e}var Vee=z(()=>{"use strict";Sx();t4();o(Gee,"clone")});function Wee(e,...t){let r=t.slice(0,-1),i=t[t.length-1],n=e;for(let a=0;a<r.length;a++){let s=r[a];n=n4(n,s,i,new Map)}return n}function n4(e,t,r,i){if(rd(e)&&(e=Object(e)),t==null||typeof t!="object")return e;if(i.has(t))return Gee(i.get(t));if(i.set(t,e),Array.isArray(t)){t=t.slice();for(let a=0;a<t.length;a++)t[a]=t[a]??void 0}let n=[...Object.keys(t),...Ww(t)];for(let a=0;a<n.length;a++){let s=n[a];if(kee(s))continue;let l=t[s],u=e[s];if(Ix(l)&&(l={...l}),Ix(u)&&(u={...u}),typeof Buffer<"u"&&Buffer.isBuffer(l)&&(l=vM(l)),Array.isArray(l))if(Array.isArray(u)){let d=[],f=Reflect.ownKeys(u);for(let p=0;p<f.length;p++){let m=f[p];d[m]=u[m]}u=d}else if(Ree(u)){let d=[];for(let f=0;f<u.length;f++)d[f]=u[f];u=d}else u=[];let h=r(u,l,s,e,t,i);h!==void 0?e[s]=h:Array.isArray(l)||Ox(u)&&Ox(l)&&(i4(u)||i4(l)||nd(u)||nd(l))?e[s]=n4(u,l,r,i):u==null&&i4(l)?e[s]=n4({},l,r,i):u==null&&nd(l)?e[s]=vM(l):(u===void 0||l!==void 0)&&(e[s]=l)}return e}var qee=z(()=>{"use strict";Dee();wee();Vee();Sx();yM();xM();Lee();bM();zee();r4();o(Wee,"mergeWith");o(n4,"mergeWithDeep")});function kM(e,...t){return Wee(e,...t,Oee)}var Uee=z(()=>{"use strict";qee();Pee();o(kM,"merge")});function a4(e){if(e==null)return!0;if(Vw(e))return typeof e.splice!="function"&&typeof e!="string"&&(typeof Buffer>"u"||!Buffer.isBuffer(e))&&!nd(e)&&!Ix(e)?!1:e.length===0;if(typeof e=="object"){if(e instanceof Map||e instanceof Set)return e.size===0;let t=Object.keys(e);return Bee(e)?t.filter(r=>r!=="constructor").length===0:t.length===0}return!0}var Hee=z(()=>{"use strict";xM();gM();r4();Fee();o(a4,"isEmpty")});var s4=z(()=>{"use strict";Iee();$ee();Uee();Hee()});function EM(e,t){if(!e)return t;let r=`curve${e.charAt(0).toUpperCase()+e.slice(1)}`;return wze[r]??t}function _ze(e,t){let r=e.trim();if(r)return t.securityLevel!=="loose"?(0,Xee.sanitizeUrl)(r):r}function Qee(e,t){return!e||!t?0:Math.sqrt(Math.pow(t.x-e.x,2)+Math.pow(t.y-e.y,2))}function Rze(e){let t,r=0;e.forEach(n=>{r+=Qee(n,t),t=n});let i=r/2;return AM(e,i)}function Lze(e){return e.length===1?e[0]:Rze(e)}function Nze(e,t,r){let i=structuredClone(r);Z.info("our points",i),t!=="start_left"&&t!=="start_right"&&i.reverse();let n=25+e,a=AM(i,n),s=10+e*.5,l=Math.atan2(i[0].y-a.y,i[0].x-a.x),u={x:0,y:0};return t==="start_left"?(u.x=Math.sin(l+Math.PI)*s+(i[0].x+a.x)/2,u.y=-Math.cos(l+Math.PI)*s+(i[0].y+a.y)/2):t==="end_right"?(u.x=Math.sin(l-Math.PI)*s+(i[0].x+a.x)/2-5,u.y=-Math.cos(l-Math.PI)*s+(i[0].y+a.y)/2-5):t==="end_left"?(u.x=Math.sin(l)*s+(i[0].x+a.x)/2-5,u.y=-Math.cos(l)*s+(i[0].y+a.y)/2-5):(u.x=Math.sin(l)*s+(i[0].x+a.x)/2,u.y=-Math.cos(l)*s+(i[0].y+a.y)/2),u}function _M(e){let t="",r="";for(let i of e)i!==void 0&&(i.startsWith("color:")||i.startsWith("text-align:")?r=r+i+";":t=t+i+";");return{style:t,labelStyle:r}}function Ize(e){let t="",r="0123456789abcdef",i=r.length;for(let n=0;n<e;n++)t+=r.charAt(Math.floor(Math.random()*i));return t}function l4(e,t){return Px(e,t).height}function ta(e,t){return Px(e,t).width}function LM(e){return"str"in e}function Gr(e,t){return kM({},e,t)}function ii(e){return e??null}function zze(e,t){let r=Math.round(e.x),i=Math.round(e.y),n=t.replace(/(\d+\.\d+)/g,a=>Math.round(parseFloat(a)).toString());return n.includes(r.toString())||n.includes(i.toString())}var Xee,SM,wze,Sze,Eze,Kee,Zee,Aze,Dze,Yee,AM,Mze,jee,DM,RM,Oze,Pze,Tp,Bze,Px,wM,o4,Fze,$ze,Za,Zt,Jee,Qa,bc,Xt=z(()=>{"use strict";Xee=ys(fg(),1);Rr();Ir();MC();St();Xf();Dm();s4();mk();SM="\u200B",wze={curveBasis:Dl,curveBasisClosed:Aw,curveBasisOpen:_w,curveBumpX:hx,curveBumpY:dx,curveBundle:iM,curveCardinalClosed:nM,curveCardinalOpen:sM,curveCardinal:gx,curveCatmullRomClosed:lM,curveCatmullRomOpen:cM,curveCatmullRom:xx,curveLinear:xc,curveLinearClosed:Nw,curveMonotoneX:bx,curveMonotoneY:Tx,curveNatural:hg,curveStep:dg,curveStepAfter:kx,curveStepBefore:Cx},Sze=/\s*(?:(\w+)(?=:):|(\w+))\s*(?:(\w+)|((?:(?!}%{2}).|\r?\n)*))?\s*(?:}%{2})?/gi,Eze=o(function(e,t){let r=Kee(e,/(?:init\b)|(?:initialize\b)/),i={};if(Array.isArray(r)){let s=r.map(l=>l.args);Lm(s),i=Ai(i,[...s])}else i=r.args;if(!i)return;let n=zm(e,t),a="config";return i[a]!==void 0&&(n==="flowchart-v2"&&(n="flowchart"),i[n]=i[a],delete i[a]),i},"detectInit"),Kee=o(function(e,t=null){try{let r=new RegExp(`[%]{2}(?![{]${Sze.source})(?=[}][%]{2}).*
-`,"ig");e=e.trim().replace(r,"").replace(/'/gm,'"'),Z.debug(`Detecting diagram directive${t!==null?" type:"+t:""} based on the text:${e}`);let i,n=[];for(;(i=jf.exec(e))!==null;)if(i.index===jf.lastIndex&&jf.lastIndex++,i&&!t||t&&i[1]?.match(t)||t&&i[2]?.match(t)){let a=i[1]?i[1]:i[2],s=i[3]?i[3].trim():i[4]?JSON.parse(i[4].trim()):null;n.push({type:a,args:s})}return n.length===0?{type:e,args:null}:n.length===1?n[0]:n}catch(r){return Z.error(`ERROR: ${r.message} - Unable to parse directive type: '${t}' based on the text: '${e}'`),{type:void 0,args:null}}},"detectDirective"),Zee=o(function(e){return e.replace(jf,"")},"removeDirectives"),Aze=o(function(e,t){for(let[r,i]of t.entries())if(i.match(e))return r;return-1},"isSubstringInArray");o(EM,"interpolateToCurve");o(_ze,"formatUrl");Dze=o((e,...t)=>{let r=e.split("."),i=r.length-1,n=r[i],a=window;for(let s=0;s<i;s++)if(a=a[r[s]],!a){Z.error(`Function name: ${e} not found in window`);return}a[n](...t)},"runFunc");o(Qee,"distance");o(Rze,"traverseEdge");o(Lze,"calcLabelPosition");Yee=o((e,t=2)=>{let r=Math.pow(10,t);return Math.round(e*r)/r},"roundNumber"),AM=o((e,t)=>{let r,i=t;for(let n of e){if(r){let a=Qee(n,r);if(a===0)return r;if(a<i)i-=a;else{let s=i/a;if(s<=0)return r;if(s>=1)return{x:n.x,y:n.y};if(s>0&&s<1)return{x:Yee((1-s)*r.x+s*n.x,5),y:Yee((1-s)*r.y+s*n.y,5)}}}r=n}throw new Error("Could not find a suitable point for the given distance")},"calculatePoint"),Mze=o((e,t,r)=>{Z.info(`our points ${JSON.stringify(t)}`),t[0]!==r&&(t=t.reverse());let n=AM(t,25),a=e?10:5,s=Math.atan2(t[0].y-n.y,t[0].x-n.x),l={x:0,y:0};return l.x=Math.sin(s)*a+(t[0].x+n.x)/2,l.y=-Math.cos(s)*a+(t[0].y+n.y)/2,l},"calcCardinalityPosition");o(Nze,"calcTerminalLabelPosition");o(_M,"getStylesFromArray");jee=0,DM=o(()=>(jee++,"id-"+Math.random().toString(36).substr(2,12)+"-"+jee),"generateId");o(Ize,"makeRandomHex");RM=o(e=>Ize(e.length),"random"),Oze=o(function(){return{x:0,y:0,fill:void 0,anchor:"start",style:"#666",width:100,height:100,textMargin:0,rx:0,ry:0,valign:void 0,text:""}},"getTextObj"),Pze=o(function(e,t){let r=t.text.replace(vt.lineBreakRegex," "),[,i]=Za(t.fontSize),n=e.append("text");n.attr("x",t.x),n.attr("y",t.y),n.style("text-anchor",t.anchor),n.style("font-family",t.fontFamily),n.style("font-size",i),n.style("font-weight",t.fontWeight),n.attr("fill",t.fill),t.class!==void 0&&n.attr("class",t.class);let a=n.append("tspan");return a.attr("x",t.x+t.textMargin*2),a.attr("fill",t.fill),a.text(r),n},"drawSimpleText"),Tp=bp((e,t,r)=>{if(!e||(r=Object.assign({fontSize:12,fontWeight:400,fontFamily:"Arial",joinWith:"<br/>"},r),vt.lineBreakRegex.test(e)))return e;let i=e.split(" ").filter(Boolean),n=[],a="";return i.forEach((s,l)=>{let u=ta(`${s} `,r),h=ta(a,r);if(u>t){let{hyphenatedStrings:p,remainingWord:m}=Bze(s,t,"-",r);n.push(a,...p),a=m}else h+u>=t?(n.push(a),a=s):a=[a,s].filter(Boolean).join(" ");l+1===i.length&&n.push(a)}),n.filter(s=>s!=="").join(r.joinWith)},(e,t,r)=>`${e}${t}${r.fontSize}${r.fontWeight}${r.fontFamily}${r.joinWith}`),Bze=bp((e,t,r="-",i)=>{i=Object.assign({fontSize:12,fontWeight:400,fontFamily:"Arial",margin:0},i);let n=[...e],a=[],s="";return n.forEach((l,u)=>{let h=`${s}${l}`;if(ta(h,i)>=t){let f=u+1,p=n.length===f,m=`${h}${r}`;a.push(p?h:m),s=""}else s=h}),{hyphenatedStrings:a,remainingWord:s}},(e,t,r="-",i)=>`${e}${t}${r}${i.fontSize}${i.fontWeight}${i.fontFamily}`);o(l4,"calculateTextHeight");o(ta,"calculateTextWidth");Px=bp((e,t)=>{let{fontSize:r=12,fontFamily:i="Arial",fontWeight:n=400}=t;if(!e)return{width:0,height:0};let[,a]=Za(r),s=["sans-serif",i],l=e.split(vt.lineBreakRegex),u=[],h=Je("body");if(!h.remove)return{width:0,height:0,lineHeight:0};let d=h.append("svg");for(let p of s){let m=0,g={width:0,height:0,lineHeight:0};for(let y of l){let v=Oze();v.text=y||SM;let x=Pze(d,v).style("font-size",a).style("font-weight",n).style("font-family",p),b=(x._groups||x)[0][0].getBBox();if(b.width===0&&b.height===0)throw new Error("svg element not in render tree");g.width=Math.round(Math.max(g.width,b.width)),m=Math.round(b.height),g.height+=m,g.lineHeight=Math.round(Math.max(g.lineHeight,m))}u.push(g)}d.remove();let f=isNaN(u[1].height)||isNaN(u[1].width)||isNaN(u[1].lineHeight)||u[0].height>u[1].height&&u[0].width>u[1].width&&u[0].lineHeight>u[1].lineHeight?0:1;return u[f]},(e,t)=>`${e}${t.fontSize}${t.fontWeight}${t.fontFamily}`),wM=class{constructor(t=!1,r){this.count=0;this.count=r?r.length:0,this.next=t?()=>this.count++:()=>Date.now()}static{o(this,"InitIDGenerator")}},Fze=o(function(e){return o4=o4||document.createElement("div"),e=escape(e).replace(/%26/g,"&").replace(/%23/g,"#").replace(/%3B/g,";"),o4.innerHTML=e,unescape(o4.textContent)},"entityDecode");o(LM,"isDetailedError");$ze=o((e,t,r,i)=>{if(!i)return;let n=e.node()?.getBBox();n&&e.append("text").text(i).attr("text-anchor","middle").attr("x",n.x+n.width/2).attr("y",-r).attr("class",t)},"insertTitle"),Za=o(e=>{if(typeof e=="number")return[e,e+"px"];let t=parseInt(e??"",10);return Number.isNaN(t)?[void 0,void 0]:e===String(t)?[t,e+"px"]:[t,e]},"parseFontSize");o(Gr,"cleanAndMerge");Zt={assignWithDepth:Ai,wrapLabel:Tp,calculateTextHeight:l4,calculateTextWidth:ta,calculateTextDimensions:Px,cleanAndMerge:Gr,detectInit:Eze,detectDirective:Kee,isSubstringInArray:Aze,interpolateToCurve:EM,calcLabelPosition:Lze,calcCardinalityPosition:Mze,calcTerminalLabelPosition:Nze,formatUrl:_ze,getStylesFromArray:_M,generateId:DM,random:RM,runFunc:Dze,entityDecode:Fze,insertTitle:$ze,isLabelCoordinateInPath:zze,parseFontSize:Za,InitIDGenerator:wM},Jee=o(function(e){let t=e;return t=t.replace(/style.*:\S*#.*;/g,function(r){return r.substring(0,r.length-1)}),t=t.replace(/classDef.*:\S*#.*;/g,function(r){return r.substring(0,r.length-1)}),t=t.replace(/#\w+;/g,function(r){let i=r.substring(1,r.length-1);return/^\+?\d+$/.test(i)?"\uFB02\xB0\xB0"+i+"\xB6\xDF":"\uFB02\xB0"+i+"\xB6\xDF"}),t},"encodeEntities"),Qa=o(function(e){return e.replace(/fl°°/g,"&#").replace(/fl°/g,"&").replace(/¶ß/g,";")},"decodeEntities"),bc=o((e,t,{counter:r=0,prefix:i,suffix:n},a)=>a||`${i?`${i}_`:""}${e}_${t}_${r}${n?`_${n}`:""}`,"getEdgeId");o(ii,"handleUndefinedAttr");o(zze,"isLabelCoordinateInPath")});function Ll(e,t,r,i,n){if(!t[e].width)if(r)t[e].text=Tp(t[e].text,n,i),t[e].textLines=t[e].text.split(vt.lineBreakRegex).length,t[e].width=n,t[e].height=l4(t[e].text,i);else{let a=t[e].text.split(vt.lineBreakRegex);t[e].textLines=a.length;let s=0;t[e].height=0,t[e].width=0;for(let l of a)t[e].width=Math.max(ta(l,i),t[e].width),s=l4(l,i),t[e].height=t[e].height+s}}function nte(e,t,r,i,n){let a=new d4(n);a.data.widthLimit=r.data.widthLimit/Math.min(MM,i.length);for(let[s,l]of i.entries()){let u=0;l.image={width:0,height:0,Y:0},l.sprite&&(l.image.width=48,l.image.height=48,l.image.Y=u,u=l.image.Y+l.image.height);let h=l.wrap&&er.wrap,d=c4(er);if(d.fontSize=d.fontSize+2,d.fontWeight="bold",Ll("label",l,h,d,a.data.widthLimit),l.label.Y=u+8,u=l.label.Y+l.label.height,l.type&&l.type.text!==""){l.type.text="["+l.type.text+"]";let g=c4(er);Ll("type",l,h,g,a.data.widthLimit),l.type.Y=u+5,u=l.type.Y+l.type.height}if(l.descr&&l.descr.text!==""){let g=c4(er);g.fontSize=g.fontSize-2,Ll("descr",l,h,g,a.data.widthLimit),l.descr.Y=u+20,u=l.descr.Y+l.descr.height}if(s==0||s%MM===0){let g=r.data.startx+er.diagramMarginX,y=r.data.stopy+er.diagramMarginY+u;a.setData(g,g,y,y)}else{let g=a.data.stopx!==a.data.startx?a.data.stopx+er.diagramMarginX:a.data.startx,y=a.data.starty;a.setData(g,g,y,y)}a.name=l.alias;let f=n.db.getC4ShapeArray(l.alias),p=n.db.getC4ShapeKeys(l.alias);p.length>0&&ite(a,e,f,p),t=l.alias;let m=n.db.getBoundaries(t);m.length>0&&nte(e,t,a,m,n),l.alias!=="global"&&rte(e,l,a),r.data.stopy=Math.max(a.data.stopy+er.c4ShapeMargin,r.data.stopy),r.data.stopx=Math.max(a.data.stopx+er.c4ShapeMargin,r.data.stopx),u4=Math.max(u4,r.data.stopx),h4=Math.max(h4,r.data.stopy)}}var u4,h4,tte,MM,er,d4,NM,Bx,c4,Gze,rte,ite,Ss,ete,Vze,Wze,qze,IM,ate=z(()=>{"use strict";Rr();bee();St();ND();Ir();WD();Ut();Dm();Xt();Di();u4=0,h4=0,tte=4,MM=2;kv.yy=Rv;er={},d4=class{static{o(this,"Bounds")}constructor(t){this.name="",this.data={},this.data.startx=void 0,this.data.stopx=void 0,this.data.starty=void 0,this.data.stopy=void 0,this.data.widthLimit=void 0,this.nextData={},this.nextData.startx=void 0,this.nextData.stopx=void 0,this.nextData.starty=void 0,this.nextData.stopy=void 0,this.nextData.cnt=0,NM(t.db.getConfig())}setData(t,r,i,n){this.nextData.startx=this.data.startx=t,this.nextData.stopx=this.data.stopx=r,this.nextData.starty=this.data.starty=i,this.nextData.stopy=this.data.stopy=n}updateVal(t,r,i,n){t[r]===void 0?t[r]=i:t[r]=n(i,t[r])}insert(t){this.nextData.cnt=this.nextData.cnt+1;let r=this.nextData.startx===this.nextData.stopx?this.nextData.stopx+t.margin:this.nextData.stopx+t.margin*2,i=r+t.width,n=this.nextData.starty+t.margin*2,a=n+t.height;(r>=this.data.widthLimit||i>=this.data.widthLimit||this.nextData.cnt>tte)&&(r=this.nextData.startx+t.margin+er.nextLinePaddingX,n=this.nextData.stopy+t.margin*2,this.nextData.stopx=i=r+t.width,this.nextData.starty=this.nextData.stopy,this.nextData.stopy=a=n+t.height,this.nextData.cnt=1),t.x=r,t.y=n,this.updateVal(this.data,"startx",r,Math.min),this.updateVal(this.data,"starty",n,Math.min),this.updateVal(this.data,"stopx",i,Math.max),this.updateVal(this.data,"stopy",a,Math.max),this.updateVal(this.nextData,"startx",r,Math.min),this.updateVal(this.nextData,"starty",n,Math.min),this.updateVal(this.nextData,"stopx",i,Math.max),this.updateVal(this.nextData,"stopy",a,Math.max)}init(t){this.name="",this.data={startx:void 0,stopx:void 0,starty:void 0,stopy:void 0,widthLimit:void 0},this.nextData={startx:void 0,stopx:void 0,starty:void 0,stopy:void 0,cnt:0},NM(t.db.getConfig())}bumpLastMargin(t){this.data.stopx+=t,this.data.stopy+=t}},NM=o(function(e){Ai(er,e),e.fontFamily&&(er.personFontFamily=er.systemFontFamily=er.messageFontFamily=e.fontFamily),e.fontSize&&(er.personFontSize=er.systemFontSize=er.messageFontSize=e.fontSize),e.fontWeight&&(er.personFontWeight=er.systemFontWeight=er.messageFontWeight=e.fontWeight)},"setConf"),Bx=o((e,t)=>({fontFamily:e[t+"FontFamily"],fontSize:e[t+"FontSize"],fontWeight:e[t+"FontWeight"]}),"c4ShapeFont"),c4=o(e=>({fontFamily:e.boundaryFontFamily,fontSize:e.boundaryFontSize,fontWeight:e.boundaryFontWeight}),"boundaryFont"),Gze=o(e=>({fontFamily:e.messageFontFamily,fontSize:e.messageFontSize,fontWeight:e.messageFontWeight}),"messageFont");o(Ll,"calcC4ShapeTextWH");rte=o(function(e,t,r){t.x=r.data.startx,t.y=r.data.starty,t.width=r.data.stopx-r.data.startx,t.height=r.data.stopy-r.data.starty,t.label.y=er.c4ShapeMargin-35;let i=t.wrap&&er.wrap,n=c4(er);n.fontSize=n.fontSize+2,n.fontWeight="bold";let a=ta(t.label.text,n);Ll("label",t,i,n,a),Rl.drawBoundary(e,t,er)},"drawBoundary"),ite=o(function(e,t,r,i){let n=0;for(let a of i){n=0;let s=r[a],l=Bx(er,s.typeC4Shape.text);switch(l.fontSize=l.fontSize-2,s.typeC4Shape.width=ta("\xAB"+s.typeC4Shape.text+"\xBB",l),s.typeC4Shape.height=l.fontSize+2,s.typeC4Shape.Y=er.c4ShapePadding,n=s.typeC4Shape.Y+s.typeC4Shape.height-4,s.image={width:0,height:0,Y:0},s.typeC4Shape.text){case"person":case"external_person":s.image.width=48,s.image.height=48,s.image.Y=n,n=s.image.Y+s.image.height;break}s.sprite&&(s.image.width=48,s.image.height=48,s.image.Y=n,n=s.image.Y+s.image.height);let u=s.wrap&&er.wrap,h=er.width-er.c4ShapePadding*2,d=Bx(er,s.typeC4Shape.text);if(d.fontSize=d.fontSize+2,d.fontWeight="bold",Ll("label",s,u,d,h),s.label.Y=n+8,n=s.label.Y+s.label.height,s.type&&s.type.text!==""){s.type.text="["+s.type.text+"]";let m=Bx(er,s.typeC4Shape.text);Ll("type",s,u,m,h),s.type.Y=n+5,n=s.type.Y+s.type.height}else if(s.techn&&s.techn.text!==""){s.techn.text="["+s.techn.text+"]";let m=Bx(er,s.techn.text);Ll("techn",s,u,m,h),s.techn.Y=n+5,n=s.techn.Y+s.techn.height}let f=n,p=s.label.width;if(s.descr&&s.descr.text!==""){let m=Bx(er,s.typeC4Shape.text);Ll("descr",s,u,m,h),s.descr.Y=n+20,n=s.descr.Y+s.descr.height,p=Math.max(s.label.width,s.descr.width),f=n-s.descr.textLines*5}p=p+er.c4ShapePadding,s.width=Math.max(s.width||er.width,p,er.width),s.height=Math.max(s.height||er.height,f,er.height),s.margin=s.margin||er.c4ShapeMargin,e.insert(s),Rl.drawC4Shape(t,s,er)}e.bumpLastMargin(er.c4ShapeMargin)},"drawC4ShapeArray"),Ss=class{static{o(this,"Point")}constructor(t,r){this.x=t,this.y=r}},ete=o(function(e,t){let r=e.x,i=e.y,n=t.x,a=t.y,s=r+e.width/2,l=i+e.height/2,u=Math.abs(r-n),h=Math.abs(i-a),d=h/u,f=e.height/e.width,p=null;return i==a&&r<n?p=new Ss(r+e.width,l):i==a&&r>n?p=new Ss(r,l):r==n&&i<a?p=new Ss(s,i+e.height):r==n&&i>a&&(p=new Ss(s,i)),r>n&&i<a?f>=d?p=new Ss(r,l+d*e.width/2):p=new Ss(s-u/h*e.height/2,i+e.height):r<n&&i<a?f>=d?p=new Ss(r+e.width,l+d*e.width/2):p=new Ss(s+u/h*e.height/2,i+e.height):r<n&&i>a?f>=d?p=new Ss(r+e.width,l-d*e.width/2):p=new Ss(s+e.height/2*u/h,i):r>n&&i>a&&(f>=d?p=new Ss(r,l-e.width/2*d):p=new Ss(s-e.height/2*u/h,i)),p},"getIntersectPoint"),Vze=o(function(e,t){let r={x:0,y:0};r.x=t.x+t.width/2,r.y=t.y+t.height/2;let i=ete(e,r);r.x=e.x+e.width/2,r.y=e.y+e.height/2;let n=ete(t,r);return{startPoint:i,endPoint:n}},"getIntersectPoints"),Wze=o(function(e,t,r,i,n){let a=0;for(let s of t){a=a+1;let l=s.wrap&&er.wrap,u=Gze(er);i.db.getC4Type()==="C4Dynamic"&&(s.label.text=a+": "+s.label.text);let d=ta(s.label.text,u);Ll("label",s,l,u,d),s.techn&&s.techn.text!==""&&(d=ta(s.techn.text,u),Ll("techn",s,l,u,d)),s.descr&&s.descr.text!==""&&(d=ta(s.descr.text,u),Ll("descr",s,l,u,d));let f=r(s.from),p=r(s.to),m=Vze(f,p);s.startPoint=m.startPoint,s.endPoint=m.endPoint}Rl.drawRels(e,t,er,n)},"drawRels");o(nte,"drawInsideBoundary");qze=o(function(e,t,r,i){er=ge().c4;let n=ge().securityLevel,a;n==="sandbox"&&(a=Je("#i"+t));let s=n==="sandbox"?Je(a.nodes()[0].contentDocument.body):Je("body"),l=i.db;i.db.setWrap(er.wrap),tte=l.getC4ShapeInRow(),MM=l.getC4BoundaryInRow(),Z.debug(`C:${JSON.stringify(er,null,2)}`);let u=n==="sandbox"?s.select(`[id="${t}"]`):Je(`[id="${t}"]`);Rl.insertComputerIcon(u,t),Rl.insertDatabaseIcon(u,t),Rl.insertClockIcon(u,t);let h=new d4(i);h.setData(er.diagramMarginX,er.diagramMarginX,er.diagramMarginY,er.diagramMarginY),h.data.widthLimit=screen.availWidth,u4=er.diagramMarginX,h4=er.diagramMarginY;let d=i.db.getTitle(),f=i.db.getBoundaries("");nte(u,"",h,f,i),Rl.insertArrowHead(u,t),Rl.insertArrowEnd(u,t),Rl.insertArrowCrossHead(u,t),Rl.insertArrowFilledHead(u,t),Wze(u,i.db.getRels(),i.db.getC4Shape,i,t),h.data.stopx=u4,h.data.stopy=h4;let p=h.data,g=p.stopy-p.starty+2*er.diagramMarginY,v=p.stopx-p.startx+2*er.diagramMarginX;d&&u.append("text").text(d).attr("x",(p.stopx-p.startx)/2-4*er.diagramMarginX).attr("y",p.starty+er.diagramMarginY),Br(u,g,v,er.useMaxWidth);let x=d?60:0;u.attr("viewBox",p.startx-er.diagramMarginX+" -"+(er.diagramMarginY+x)+" "+v+" "+(g+x)),Z.debug("models:",p)},"draw"),IM={drawPersonOrSystemArray:ite,drawBoundary:rte,setConf:NM,draw:qze}});var Uze,ste,ote=z(()=>{"use strict";Uze=o(e=>`.person {
+`},"getStyles"),lJ=o((e,t)=>{t!==void 0&&(vS[e]=t)},"addStylesForDiagram"),cJ=rWe});var lb={};ir(lb,{clear:()=>yr,getAccDescription:()=>_r,getAccTitle:()=>Ar,getDiagramTitle:()=>Lr,setAccDescription:()=>Rr,setAccTitle:()=>kr,setDiagramTitle:()=>Or});var y8,v8,x8,b8,yr,kr,Ar,Rr,_r,Or,Lr,Nn=F(()=>{"use strict";Vr();ur();y8="",v8="",x8="",b8=o(e=>mr(e,_t()),"sanitizeText"),yr=o(()=>{y8="",x8="",v8=""},"clear"),kr=o(e=>{y8=b8(e).replace(/^\s+/g,"")},"setAccTitle"),Ar=o(()=>y8,"getAccTitle"),Rr=o(e=>{x8=b8(e).replace(/\n\s+/g,`
+`)},"setAccDescription"),_r=o(()=>x8,"getAccDescription"),Or=o(e=>{v8=b8(e)},"setDiagramTitle"),Lr=o(()=>v8,"getDiagramTitle")});var uJ,nWe,Ae,cb,bS,ub,hb,iWe,xS,Yp,db,T8,Xt=F(()=>{"use strict";Up();vt();ur();Vr();$n();g8();Nn();uJ=Z,nWe=Bx,Ae=_t,cb=_k,bS=Cd,ub=o(e=>mr(e,Ae()),"sanitizeText"),hb=ul,iWe=o(()=>lb,"getCommonDb"),xS={},Yp=o((e,t,r)=>{xS[e]&&uJ.warn(`Diagram with id ${e} already registered. Overwriting.`),xS[e]=t,r&&f8(e,r),lJ(e,t.styles),t.injectUtils?.(uJ,nWe,Ae,ub,hb,iWe(),()=>{})},"registerDiagram"),db=o(e=>{if(e in xS)return xS[e];throw new T8(e)},"getDiagram"),T8=class extends Error{static{o(this,"DiagramNotFoundError")}constructor(t){super(`Diagram ${t} not found.`)}}});var ql,Dd,Ss,Wl,Hc,fb,C8,w8,TS,CS,hJ,aWe,sWe,oWe,lWe,cWe,uWe,hWe,dWe,fWe,pWe,mWe,gWe,yWe,vWe,xWe,bWe,TWe,dJ,CWe,wWe,fJ,kWe,SWe,EWe,AWe,Id,RWe,_We,LWe,DWe,IWe,pb,k8=F(()=>{"use strict";Xt();Vr();Nn();ql=[],Dd=[""],Ss="global",Wl="",Hc=[{alias:"global",label:{text:"global"},type:{text:"global"},tags:null,link:null,parentBoundary:""}],fb=[],C8="",w8=!1,TS=4,CS=2,aWe=o(function(){return hJ},"getC4Type"),sWe=o(function(e){hJ=mr(e,Ae())},"setC4Type"),oWe=o(function(e,t,r,n,i,a,s,l,u){if(e==null||t===void 0||t===null||r===void 0||r===null||n===void 0||n===null)return;let h={},d=fb.find(f=>f.from===t&&f.to===r);if(d?h=d:fb.push(h),h.type=e,h.from=t,h.to=r,h.label={text:n},i==null)h.techn={text:""};else if(typeof i=="object"){let[f,p]=Object.entries(i)[0];h[f]={text:p}}else h.techn={text:i};if(a==null)h.descr={text:""};else if(typeof a=="object"){let[f,p]=Object.entries(a)[0];h[f]={text:p}}else h.descr={text:a};if(typeof s=="object"){let[f,p]=Object.entries(s)[0];h[f]=p}else h.sprite=s;if(typeof l=="object"){let[f,p]=Object.entries(l)[0];h[f]=p}else h.tags=l;if(typeof u=="object"){let[f,p]=Object.entries(u)[0];h[f]=p}else h.link=u;h.wrap=Id()},"addRel"),lWe=o(function(e,t,r,n,i,a,s){if(t===null||r===null)return;let l={},u=ql.find(h=>h.alias===t);if(u&&t===u.alias?l=u:(l.alias=t,ql.push(l)),r==null?l.label={text:""}:l.label={text:r},n==null)l.descr={text:""};else if(typeof n=="object"){let[h,d]=Object.entries(n)[0];l[h]={text:d}}else l.descr={text:n};if(typeof i=="object"){let[h,d]=Object.entries(i)[0];l[h]=d}else l.sprite=i;if(typeof a=="object"){let[h,d]=Object.entries(a)[0];l[h]=d}else l.tags=a;if(typeof s=="object"){let[h,d]=Object.entries(s)[0];l[h]=d}else l.link=s;l.typeC4Shape={text:e},l.parentBoundary=Ss,l.wrap=Id()},"addPersonOrSystem"),cWe=o(function(e,t,r,n,i,a,s,l){if(t===null||r===null)return;let u={},h=ql.find(d=>d.alias===t);if(h&&t===h.alias?u=h:(u.alias=t,ql.push(u)),r==null?u.label={text:""}:u.label={text:r},n==null)u.techn={text:""};else if(typeof n=="object"){let[d,f]=Object.entries(n)[0];u[d]={text:f}}else u.techn={text:n};if(i==null)u.descr={text:""};else if(typeof i=="object"){let[d,f]=Object.entries(i)[0];u[d]={text:f}}else u.descr={text:i};if(typeof a=="object"){let[d,f]=Object.entries(a)[0];u[d]=f}else u.sprite=a;if(typeof s=="object"){let[d,f]=Object.entries(s)[0];u[d]=f}else u.tags=s;if(typeof l=="object"){let[d,f]=Object.entries(l)[0];u[d]=f}else u.link=l;u.wrap=Id(),u.typeC4Shape={text:e},u.parentBoundary=Ss},"addContainer"),uWe=o(function(e,t,r,n,i,a,s,l){if(t===null||r===null)return;let u={},h=ql.find(d=>d.alias===t);if(h&&t===h.alias?u=h:(u.alias=t,ql.push(u)),r==null?u.label={text:""}:u.label={text:r},n==null)u.techn={text:""};else if(typeof n=="object"){let[d,f]=Object.entries(n)[0];u[d]={text:f}}else u.techn={text:n};if(i==null)u.descr={text:""};else if(typeof i=="object"){let[d,f]=Object.entries(i)[0];u[d]={text:f}}else u.descr={text:i};if(typeof a=="object"){let[d,f]=Object.entries(a)[0];u[d]=f}else u.sprite=a;if(typeof s=="object"){let[d,f]=Object.entries(s)[0];u[d]=f}else u.tags=s;if(typeof l=="object"){let[d,f]=Object.entries(l)[0];u[d]=f}else u.link=l;u.wrap=Id(),u.typeC4Shape={text:e},u.parentBoundary=Ss},"addComponent"),hWe=o(function(e,t,r,n,i){if(e===null||t===null)return;let a={},s=Hc.find(l=>l.alias===e);if(s&&e===s.alias?a=s:(a.alias=e,Hc.push(a)),t==null?a.label={text:""}:a.label={text:t},r==null)a.type={text:"system"};else if(typeof r=="object"){let[l,u]=Object.entries(r)[0];a[l]={text:u}}else a.type={text:r};if(typeof n=="object"){let[l,u]=Object.entries(n)[0];a[l]=u}else a.tags=n;if(typeof i=="object"){let[l,u]=Object.entries(i)[0];a[l]=u}else a.link=i;a.parentBoundary=Ss,a.wrap=Id(),Wl=Ss,Ss=e,Dd.push(Wl)},"addPersonOrSystemBoundary"),dWe=o(function(e,t,r,n,i){if(e===null||t===null)return;let a={},s=Hc.find(l=>l.alias===e);if(s&&e===s.alias?a=s:(a.alias=e,Hc.push(a)),t==null?a.label={text:""}:a.label={text:t},r==null)a.type={text:"container"};else if(typeof r=="object"){let[l,u]=Object.entries(r)[0];a[l]={text:u}}else a.type={text:r};if(typeof n=="object"){let[l,u]=Object.entries(n)[0];a[l]=u}else a.tags=n;if(typeof i=="object"){let[l,u]=Object.entries(i)[0];a[l]=u}else a.link=i;a.parentBoundary=Ss,a.wrap=Id(),Wl=Ss,Ss=e,Dd.push(Wl)},"addContainerBoundary"),fWe=o(function(e,t,r,n,i,a,s,l){if(t===null||r===null)return;let u={},h=Hc.find(d=>d.alias===t);if(h&&t===h.alias?u=h:(u.alias=t,Hc.push(u)),r==null?u.label={text:""}:u.label={text:r},n==null)u.type={text:"node"};else if(typeof n=="object"){let[d,f]=Object.entries(n)[0];u[d]={text:f}}else u.type={text:n};if(i==null)u.descr={text:""};else if(typeof i=="object"){let[d,f]=Object.entries(i)[0];u[d]={text:f}}else u.descr={text:i};if(typeof s=="object"){let[d,f]=Object.entries(s)[0];u[d]=f}else u.tags=s;if(typeof l=="object"){let[d,f]=Object.entries(l)[0];u[d]=f}else u.link=l;u.nodeType=e,u.parentBoundary=Ss,u.wrap=Id(),Wl=Ss,Ss=t,Dd.push(Wl)},"addDeploymentNode"),pWe=o(function(){Ss=Wl,Dd.pop(),Wl=Dd.pop(),Dd.push(Wl)},"popBoundaryParseStack"),mWe=o(function(e,t,r,n,i,a,s,l,u,h,d){let f=ql.find(p=>p.alias===t);if(!(f===void 0&&(f=Hc.find(p=>p.alias===t),f===void 0))){if(r!=null)if(typeof r=="object"){let[p,m]=Object.entries(r)[0];f[p]=m}else f.bgColor=r;if(n!=null)if(typeof n=="object"){let[p,m]=Object.entries(n)[0];f[p]=m}else f.fontColor=n;if(i!=null)if(typeof i=="object"){let[p,m]=Object.entries(i)[0];f[p]=m}else f.borderColor=i;if(a!=null)if(typeof a=="object"){let[p,m]=Object.entries(a)[0];f[p]=m}else f.shadowing=a;if(s!=null)if(typeof s=="object"){let[p,m]=Object.entries(s)[0];f[p]=m}else f.shape=s;if(l!=null)if(typeof l=="object"){let[p,m]=Object.entries(l)[0];f[p]=m}else f.sprite=l;if(u!=null)if(typeof u=="object"){let[p,m]=Object.entries(u)[0];f[p]=m}else f.techn=u;if(h!=null)if(typeof h=="object"){let[p,m]=Object.entries(h)[0];f[p]=m}else f.legendText=h;if(d!=null)if(typeof d=="object"){let[p,m]=Object.entries(d)[0];f[p]=m}else f.legendSprite=d}},"updateElStyle"),gWe=o(function(e,t,r,n,i,a,s){let l=fb.find(u=>u.from===t&&u.to===r);if(l!==void 0){if(n!=null)if(typeof n=="object"){let[u,h]=Object.entries(n)[0];l[u]=h}else l.textColor=n;if(i!=null)if(typeof i=="object"){let[u,h]=Object.entries(i)[0];l[u]=h}else l.lineColor=i;if(a!=null)if(typeof a=="object"){let[u,h]=Object.entries(a)[0];l[u]=parseInt(h)}else l.offsetX=parseInt(a);if(s!=null)if(typeof s=="object"){let[u,h]=Object.entries(s)[0];l[u]=parseInt(h)}else l.offsetY=parseInt(s)}},"updateRelStyle"),yWe=o(function(e,t,r){let n=TS,i=CS;if(typeof t=="object"){let a=Object.values(t)[0];n=parseInt(a)}else n=parseInt(t);if(typeof r=="object"){let a=Object.values(r)[0];i=parseInt(a)}else i=parseInt(r);n>=1&&(TS=n),i>=1&&(CS=i)},"updateLayoutConfig"),vWe=o(function(){return TS},"getC4ShapeInRow"),xWe=o(function(){return CS},"getC4BoundaryInRow"),bWe=o(function(){return Ss},"getCurrentBoundaryParse"),TWe=o(function(){return Wl},"getParentBoundaryParse"),dJ=o(function(e){return e==null?ql:ql.filter(t=>t.parentBoundary===e)},"getC4ShapeArray"),CWe=o(function(e){return ql.find(t=>t.alias===e)},"getC4Shape"),wWe=o(function(e){return Object.keys(dJ(e))},"getC4ShapeKeys"),fJ=o(function(e){return e==null?Hc:Hc.filter(t=>t.parentBoundary===e)},"getBoundaries"),kWe=fJ,SWe=o(function(){return fb},"getRels"),EWe=o(function(){return C8},"getTitle"),AWe=o(function(e){w8=e},"setWrap"),Id=o(function(){return w8},"autoWrap"),RWe=o(function(){ql=[],Hc=[{alias:"global",label:{text:"global"},type:{text:"global"},tags:null,link:null,parentBoundary:""}],Wl="",Ss="global",Dd=[""],fb=[],Dd=[""],C8="",w8=!1,TS=4,CS=2},"clear"),_We={SOLID:0,DOTTED:1,NOTE:2,SOLID_CROSS:3,DOTTED_CROSS:4,SOLID_OPEN:5,DOTTED_OPEN:6,LOOP_START:10,LOOP_END:11,ALT_START:12,ALT_ELSE:13,ALT_END:14,OPT_START:15,OPT_END:16,ACTIVE_START:17,ACTIVE_END:18,PAR_START:19,PAR_AND:20,PAR_END:21,RECT_START:22,RECT_END:23,SOLID_POINT:24,DOTTED_POINT:25},LWe={FILLED:0,OPEN:1},DWe={LEFTOF:0,RIGHTOF:1,OVER:2},IWe=o(function(e){C8=mr(e,Ae())},"setTitle"),pb={addPersonOrSystem:lWe,addPersonOrSystemBoundary:hWe,addContainer:cWe,addContainerBoundary:dWe,addComponent:uWe,addDeploymentNode:fWe,popBoundaryParseStack:pWe,addRel:oWe,updateElStyle:mWe,updateRelStyle:gWe,updateLayoutConfig:yWe,autoWrap:Id,setWrap:AWe,getC4ShapeArray:dJ,getC4Shape:CWe,getC4ShapeKeys:wWe,getBoundaries:fJ,getBoundarys:kWe,getCurrentBoundaryParse:bWe,getParentBoundaryParse:TWe,getRels:SWe,getTitle:EWe,getC4Type:aWe,getC4ShapeInRow:vWe,getC4BoundaryInRow:xWe,setAccTitle:kr,getAccTitle:Ar,getAccDescription:_r,setAccDescription:Rr,getConfig:o(()=>Ae().c4,"getConfig"),clear:RWe,LINETYPE:_We,ARROWTYPE:LWe,PLACEMENT:DWe,setTitle:IWe,setC4Type:sWe}});function jp(e,t){return e==null||t==null?NaN:e<t?-1:e>t?1:e>=t?0:NaN}var S8=F(()=>{"use strict";o(jp,"ascending")});function E8(e,t){return e==null||t==null?NaN:t<e?-1:t>e?1:t>=e?0:NaN}var pJ=F(()=>{"use strict";o(E8,"descending")});function Xp(e){let t,r,n;e.length!==2?(t=jp,r=o((l,u)=>jp(e(l),u),"compare2"),n=o((l,u)=>e(l)-u,"delta")):(t=e===jp||e===E8?e:MWe,r=e,n=e);function i(l,u,h=0,d=l.length){if(h<d){if(t(u,u)!==0)return d;do{let f=h+d>>>1;r(l[f],u)<0?h=f+1:d=f}while(h<d)}return h}o(i,"left");function a(l,u,h=0,d=l.length){if(h<d){if(t(u,u)!==0)return d;do{let f=h+d>>>1;r(l[f],u)<=0?h=f+1:d=f}while(h<d)}return h}o(a,"right");function s(l,u,h=0,d=l.length){let f=i(l,u,h,d-1);return f>h&&n(l[f-1],u)>-n(l[f],u)?f-1:f}return o(s,"center"),{left:i,center:s,right:a}}function MWe(){return 0}var A8=F(()=>{"use strict";S8();pJ();o(Xp,"bisector");o(MWe,"zero")});function R8(e){return e===null?NaN:+e}var mJ=F(()=>{"use strict";o(R8,"number")});var gJ,yJ,NWe,PWe,_8,vJ=F(()=>{"use strict";S8();A8();mJ();gJ=Xp(jp),yJ=gJ.right,NWe=gJ.left,PWe=Xp(R8).center,_8=yJ});function xJ({_intern:e,_key:t},r){let n=t(r);return e.has(n)?e.get(n):r}function OWe({_intern:e,_key:t},r){let n=t(r);return e.has(n)?e.get(n):(e.set(n,r),r)}function BWe({_intern:e,_key:t},r){let n=t(r);return e.has(n)&&(r=e.get(n),e.delete(n)),r}function $We(e){return e!==null&&typeof e=="object"?e.valueOf():e}var iy,bJ=F(()=>{"use strict";iy=class extends Map{static{o(this,"InternMap")}constructor(t,r=$We){if(super(),Object.defineProperties(this,{_intern:{value:new Map},_key:{value:r}}),t!=null)for(let[n,i]of t)this.set(n,i)}get(t){return super.get(xJ(this,t))}has(t){return super.has(xJ(this,t))}set(t,r){return super.set(OWe(this,t),r)}delete(t){return super.delete(BWe(this,t))}};o(xJ,"intern_get");o(OWe,"intern_set");o(BWe,"intern_delete");o($We,"keyof")});function wS(e,t,r){let n=(t-e)/Math.max(0,r),i=Math.floor(Math.log10(n)),a=n/Math.pow(10,i),s=a>=FWe?10:a>=zWe?5:a>=GWe?2:1,l,u,h;return i<0?(h=Math.pow(10,-i)/s,l=Math.round(e*h),u=Math.round(t*h),l/h<e&&++l,u/h>t&&--u,h=-h):(h=Math.pow(10,i)*s,l=Math.round(e/h),u=Math.round(t/h),l*h<e&&++l,u*h>t&&--u),u<l&&.5<=r&&r<2?wS(e,t,r*2):[l,u,h]}function kS(e,t,r){if(t=+t,e=+e,r=+r,!(r>0))return[];if(e===t)return[e];let n=t<e,[i,a,s]=n?wS(t,e,r):wS(e,t,r);if(!(a>=i))return[];let l=a-i+1,u=new Array(l);if(n)if(s<0)for(let h=0;h<l;++h)u[h]=(a-h)/-s;else for(let h=0;h<l;++h)u[h]=(a-h)*s;else if(s<0)for(let h=0;h<l;++h)u[h]=(i+h)/-s;else for(let h=0;h<l;++h)u[h]=(i+h)*s;return u}function mb(e,t,r){return t=+t,e=+e,r=+r,wS(e,t,r)[2]}function ay(e,t,r){t=+t,e=+e,r=+r;let n=t<e,i=n?mb(t,e,r):mb(e,t,r);return(n?-1:1)*(i<0?1/-i:i)}var FWe,zWe,GWe,TJ=F(()=>{"use strict";FWe=Math.sqrt(50),zWe=Math.sqrt(10),GWe=Math.sqrt(2);o(wS,"tickSpec");o(kS,"ticks");o(mb,"tickIncrement");o(ay,"tickStep")});function SS(e,t){let r;if(t===void 0)for(let n of e)n!=null&&(r<n||r===void 0&&n>=n)&&(r=n);else{let n=-1;for(let i of e)(i=t(i,++n,e))!=null&&(r<i||r===void 0&&i>=i)&&(r=i)}return r}var CJ=F(()=>{"use strict";o(SS,"max")});function ES(e,t){let r;if(t===void 0)for(let n of e)n!=null&&(r>n||r===void 0&&n>=n)&&(r=n);else{let n=-1;for(let i of e)(i=t(i,++n,e))!=null&&(r>i||r===void 0&&i>=i)&&(r=i)}return r}var wJ=F(()=>{"use strict";o(ES,"min")});function AS(e,t,r){e=+e,t=+t,r=(i=arguments.length)<2?(t=e,e=0,1):i<3?1:+r;for(var n=-1,i=Math.max(0,Math.ceil((t-e)/r))|0,a=new Array(i);++n<i;)a[n]=e+n*r;return a}var kJ=F(()=>{"use strict";o(AS,"range")});var Md=F(()=>{"use strict";vJ();A8();CJ();wJ();kJ();TJ();bJ()});function L8(e){return e}var SJ=F(()=>{"use strict";o(L8,"default")});function VWe(e){return"translate("+e+",0)"}function WWe(e){return"translate(0,"+e+")"}function qWe(e){return t=>+e(t)}function HWe(e,t){return t=Math.max(0,e.bandwidth()-t*2)/2,e.round()&&(t=Math.round(t)),r=>+e(r)+t}function UWe(){return!this.__axis}function AJ(e,t){var r=[],n=null,i=null,a=6,s=6,l=3,u=typeof window<"u"&&window.devicePixelRatio>1?0:.5,h=e===_S||e===RS?-1:1,d=e===RS||e===D8?"x":"y",f=e===_S||e===I8?VWe:WWe;function p(m){var g=n??(t.ticks?t.ticks.apply(t,r):t.domain()),y=i??(t.tickFormat?t.tickFormat.apply(t,r):L8),v=Math.max(a,0)+l,x=t.range(),b=+x[0]+u,T=+x[x.length-1]+u,k=(t.bandwidth?HWe:qWe)(t.copy(),u),C=m.selection?m.selection():m,w=C.selectAll(".domain").data([null]),S=C.selectAll(".tick").data(g,t).order(),R=S.exit(),L=S.enter().append("g").attr("class","tick"),N=S.select("line"),I=S.select("text");w=w.merge(w.enter().insert("path",".tick").attr("class","domain").attr("stroke","currentColor")),S=S.merge(L),N=N.merge(L.append("line").attr("stroke","currentColor").attr(d+"2",h*a)),I=I.merge(L.append("text").attr("fill","currentColor").attr(d,h*v).attr("dy",e===_S?"0em":e===I8?"0.71em":"0.32em")),m!==C&&(w=w.transition(m),S=S.transition(m),N=N.transition(m),I=I.transition(m),R=R.transition(m).attr("opacity",EJ).attr("transform",function(_){return isFinite(_=k(_))?f(_+u):this.getAttribute("transform")}),L.attr("opacity",EJ).attr("transform",function(_){var A=this.parentNode.__axis;return f((A&&isFinite(A=A(_))?A:k(_))+u)})),R.remove(),w.attr("d",e===RS||e===D8?s?"M"+h*s+","+b+"H"+u+"V"+T+"H"+h*s:"M"+u+","+b+"V"+T:s?"M"+b+","+h*s+"V"+u+"H"+T+"V"+h*s:"M"+b+","+u+"H"+T),S.attr("opacity",1).attr("transform",function(_){return f(k(_)+u)}),N.attr(d+"2",h*a),I.attr(d,h*v).text(y),C.filter(UWe).attr("fill","none").attr("font-size",10).attr("font-family","sans-serif").attr("text-anchor",e===D8?"start":e===RS?"end":"middle"),C.each(function(){this.__axis=k})}return o(p,"axis"),p.scale=function(m){return arguments.length?(t=m,p):t},p.ticks=function(){return r=Array.from(arguments),p},p.tickArguments=function(m){return arguments.length?(r=m==null?[]:Array.from(m),p):r.slice()},p.tickValues=function(m){return arguments.length?(n=m==null?null:Array.from(m),p):n&&n.slice()},p.tickFormat=function(m){return arguments.length?(i=m,p):i},p.tickSize=function(m){return arguments.length?(a=s=+m,p):a},p.tickSizeInner=function(m){return arguments.length?(a=+m,p):a},p.tickSizeOuter=function(m){return arguments.length?(s=+m,p):s},p.tickPadding=function(m){return arguments.length?(l=+m,p):l},p.offset=function(m){return arguments.length?(u=+m,p):u},p}function M8(e){return AJ(_S,e)}function N8(e){return AJ(I8,e)}var _S,D8,I8,RS,EJ,RJ=F(()=>{"use strict";SJ();_S=1,D8=2,I8=3,RS=4,EJ=1e-6;o(VWe,"translateX");o(WWe,"translateY");o(qWe,"number");o(HWe,"center");o(UWe,"entering");o(AJ,"axis");o(M8,"axisTop");o(N8,"axisBottom")});var _J=F(()=>{"use strict";RJ()});function DJ(){for(var e=0,t=arguments.length,r={},n;e<t;++e){if(!(n=arguments[e]+"")||n in r||/[\s.]/.test(n))throw new Error("illegal type: "+n);r[n]=[]}return new LS(r)}function LS(e){this._=e}function jWe(e,t){return e.trim().split(/^|\s+/).map(function(r){var n="",i=r.indexOf(".");if(i>=0&&(n=r.slice(i+1),r=r.slice(0,i)),r&&!t.hasOwnProperty(r))throw new Error("unknown type: "+r);return{type:r,name:n}})}function XWe(e,t){for(var r=0,n=e.length,i;r<n;++r)if((i=e[r]).name===t)return i.value}function LJ(e,t,r){for(var n=0,i=e.length;n<i;++n)if(e[n].name===t){e[n]=YWe,e=e.slice(0,n).concat(e.slice(n+1));break}return r!=null&&e.push({name:t,value:r}),e}var YWe,P8,IJ=F(()=>{"use strict";YWe={value:o(()=>{},"value")};o(DJ,"dispatch");o(LS,"Dispatch");o(jWe,"parseTypenames");LS.prototype=DJ.prototype={constructor:LS,on:o(function(e,t){var r=this._,n=jWe(e+"",r),i,a=-1,s=n.length;if(arguments.length<2){for(;++a<s;)if((i=(e=n[a]).type)&&(i=XWe(r[i],e.name)))return i;return}if(t!=null&&typeof t!="function")throw new Error("invalid callback: "+t);for(;++a<s;)if(i=(e=n[a]).type)r[i]=LJ(r[i],e.name,t);else if(t==null)for(i in r)r[i]=LJ(r[i],e.name,null);return this},"on"),copy:o(function(){var e={},t=this._;for(var r in t)e[r]=t[r].slice();return new LS(e)},"copy"),call:o(function(e,t){if((i=arguments.length-2)>0)for(var r=new Array(i),n=0,i,a;n<i;++n)r[n]=arguments[n+2];if(!this._.hasOwnProperty(e))throw new Error("unknown type: "+e);for(a=this._[e],n=0,i=a.length;n<i;++n)a[n].value.apply(t,r)},"call"),apply:o(function(e,t,r){if(!this._.hasOwnProperty(e))throw new Error("unknown type: "+e);for(var n=this._[e],i=0,a=n.length;i<a;++i)n[i].value.apply(t,r)},"apply")};o(XWe,"get");o(LJ,"set");P8=DJ});var O8=F(()=>{"use strict";IJ()});var DS,B8,$8=F(()=>{"use strict";DS="http://www.w3.org/1999/xhtml",B8={svg:"http://www.w3.org/2000/svg",xhtml:DS,xlink:"http://www.w3.org/1999/xlink",xml:"http://www.w3.org/XML/1998/namespace",xmlns:"http://www.w3.org/2000/xmlns/"}});function Uc(e){var t=e+="",r=t.indexOf(":");return r>=0&&(t=e.slice(0,r))!=="xmlns"&&(e=e.slice(r+1)),B8.hasOwnProperty(t)?{space:B8[t],local:e}:e}var IS=F(()=>{"use strict";$8();o(Uc,"default")});function KWe(e){return function(){var t=this.ownerDocument,r=this.namespaceURI;return r===DS&&t.documentElement.namespaceURI===DS?t.createElement(e):t.createElementNS(r,e)}}function ZWe(e){return function(){return this.ownerDocument.createElementNS(e.space,e.local)}}function gb(e){var t=Uc(e);return(t.local?ZWe:KWe)(t)}var F8=F(()=>{"use strict";IS();$8();o(KWe,"creatorInherit");o(ZWe,"creatorFixed");o(gb,"default")});function QWe(){}function Nd(e){return e==null?QWe:function(){return this.querySelector(e)}}var MS=F(()=>{"use strict";o(QWe,"none");o(Nd,"default")});function z8(e){typeof e!="function"&&(e=Nd(e));for(var t=this._groups,r=t.length,n=new Array(r),i=0;i<r;++i)for(var a=t[i],s=a.length,l=n[i]=new Array(s),u,h,d=0;d<s;++d)(u=a[d])&&(h=e.call(u,u.__data__,d,a))&&("__data__"in u&&(h.__data__=u.__data__),l[d]=h);return new Ai(n,this._parents)}var MJ=F(()=>{"use strict";Hl();MS();o(z8,"default")});function G8(e){return e==null?[]:Array.isArray(e)?e:Array.from(e)}var NJ=F(()=>{"use strict";o(G8,"array")});function JWe(){return[]}function sy(e){return e==null?JWe:function(){return this.querySelectorAll(e)}}var V8=F(()=>{"use strict";o(JWe,"empty");o(sy,"default")});function eqe(e){return function(){return G8(e.apply(this,arguments))}}function W8(e){typeof e=="function"?e=eqe(e):e=sy(e);for(var t=this._groups,r=t.length,n=[],i=[],a=0;a<r;++a)for(var s=t[a],l=s.length,u,h=0;h<l;++h)(u=s[h])&&(n.push(e.call(u,u.__data__,h,s)),i.push(u));return new Ai(n,i)}var PJ=F(()=>{"use strict";Hl();NJ();V8();o(eqe,"arrayAll");o(W8,"default")});function oy(e){return function(){return this.matches(e)}}function NS(e){return function(t){return t.matches(e)}}var yb=F(()=>{"use strict";o(oy,"default");o(NS,"childMatcher")});function rqe(e){return function(){return tqe.call(this.children,e)}}function nqe(){return this.firstElementChild}function q8(e){return this.select(e==null?nqe:rqe(typeof e=="function"?e:NS(e)))}var tqe,OJ=F(()=>{"use strict";yb();tqe=Array.prototype.find;o(rqe,"childFind");o(nqe,"childFirst");o(q8,"default")});function aqe(){return Array.from(this.children)}function sqe(e){return function(){return iqe.call(this.children,e)}}function H8(e){return this.selectAll(e==null?aqe:sqe(typeof e=="function"?e:NS(e)))}var iqe,BJ=F(()=>{"use strict";yb();iqe=Array.prototype.filter;o(aqe,"children");o(sqe,"childrenFilter");o(H8,"default")});function U8(e){typeof e!="function"&&(e=oy(e));for(var t=this._groups,r=t.length,n=new Array(r),i=0;i<r;++i)for(var a=t[i],s=a.length,l=n[i]=[],u,h=0;h<s;++h)(u=a[h])&&e.call(u,u.__data__,h,a)&&l.push(u);return new Ai(n,this._parents)}var $J=F(()=>{"use strict";Hl();yb();o(U8,"default")});function vb(e){return new Array(e.length)}var Y8=F(()=>{"use strict";o(vb,"default")});function j8(){return new Ai(this._enter||this._groups.map(vb),this._parents)}function xb(e,t){this.ownerDocument=e.ownerDocument,this.namespaceURI=e.namespaceURI,this._next=null,this._parent=e,this.__data__=t}var X8=F(()=>{"use strict";Y8();Hl();o(j8,"default");o(xb,"EnterNode");xb.prototype={constructor:xb,appendChild:o(function(e){return this._parent.insertBefore(e,this._next)},"appendChild"),insertBefore:o(function(e,t){return this._parent.insertBefore(e,t)},"insertBefore"),querySelector:o(function(e){return this._parent.querySelector(e)},"querySelector"),querySelectorAll:o(function(e){return this._parent.querySelectorAll(e)},"querySelectorAll")}});function K8(e){return function(){return e}}var FJ=F(()=>{"use strict";o(K8,"default")});function oqe(e,t,r,n,i,a){for(var s=0,l,u=t.length,h=a.length;s<h;++s)(l=t[s])?(l.__data__=a[s],n[s]=l):r[s]=new xb(e,a[s]);for(;s<u;++s)(l=t[s])&&(i[s]=l)}function lqe(e,t,r,n,i,a,s){var l,u,h=new Map,d=t.length,f=a.length,p=new Array(d),m;for(l=0;l<d;++l)(u=t[l])&&(p[l]=m=s.call(u,u.__data__,l,t)+"",h.has(m)?i[l]=u:h.set(m,u));for(l=0;l<f;++l)m=s.call(e,a[l],l,a)+"",(u=h.get(m))?(n[l]=u,u.__data__=a[l],h.delete(m)):r[l]=new xb(e,a[l]);for(l=0;l<d;++l)(u=t[l])&&h.get(p[l])===u&&(i[l]=u)}function cqe(e){return e.__data__}function Z8(e,t){if(!arguments.length)return Array.from(this,cqe);var r=t?lqe:oqe,n=this._parents,i=this._groups;typeof e!="function"&&(e=K8(e));for(var a=i.length,s=new Array(a),l=new Array(a),u=new Array(a),h=0;h<a;++h){var d=n[h],f=i[h],p=f.length,m=uqe(e.call(d,d&&d.__data__,h,n)),g=m.length,y=l[h]=new Array(g),v=s[h]=new Array(g),x=u[h]=new Array(p);r(d,f,y,v,x,m,t);for(var b=0,T=0,k,C;b<g;++b)if(k=y[b]){for(b>=T&&(T=b+1);!(C=v[T])&&++T<g;);k._next=C||null}}return s=new Ai(s,n),s._enter=l,s._exit=u,s}function uqe(e){return typeof e=="object"&&"length"in e?e:Array.from(e)}var zJ=F(()=>{"use strict";Hl();X8();FJ();o(oqe,"bindIndex");o(lqe,"bindKey");o(cqe,"datum");o(Z8,"default");o(uqe,"arraylike")});function Q8(){return new Ai(this._exit||this._groups.map(vb),this._parents)}var GJ=F(()=>{"use strict";Y8();Hl();o(Q8,"default")});function J8(e,t,r){var n=this.enter(),i=this,a=this.exit();return typeof e=="function"?(n=e(n),n&&(n=n.selection())):n=n.append(e+""),t!=null&&(i=t(i),i&&(i=i.selection())),r==null?a.remove():r(a),n&&i?n.merge(i).order():i}var VJ=F(()=>{"use strict";o(J8,"default")});function eI(e){for(var t=e.selection?e.selection():e,r=this._groups,n=t._groups,i=r.length,a=n.length,s=Math.min(i,a),l=new Array(i),u=0;u<s;++u)for(var h=r[u],d=n[u],f=h.length,p=l[u]=new Array(f),m,g=0;g<f;++g)(m=h[g]||d[g])&&(p[g]=m);for(;u<i;++u)l[u]=r[u];return new Ai(l,this._parents)}var WJ=F(()=>{"use strict";Hl();o(eI,"default")});function tI(){for(var e=this._groups,t=-1,r=e.length;++t<r;)for(var n=e[t],i=n.length-1,a=n[i],s;--i>=0;)(s=n[i])&&(a&&s.compareDocumentPosition(a)^4&&a.parentNode.insertBefore(s,a),a=s);return this}var qJ=F(()=>{"use strict";o(tI,"default")});function rI(e){e||(e=hqe);function t(f,p){return f&&p?e(f.__data__,p.__data__):!f-!p}o(t,"compareNode");for(var r=this._groups,n=r.length,i=new Array(n),a=0;a<n;++a){for(var s=r[a],l=s.length,u=i[a]=new Array(l),h,d=0;d<l;++d)(h=s[d])&&(u[d]=h);u.sort(t)}return new Ai(i,this._parents).order()}function hqe(e,t){return e<t?-1:e>t?1:e>=t?0:NaN}var HJ=F(()=>{"use strict";Hl();o(rI,"default");o(hqe,"ascending")});function nI(){var e=arguments[0];return arguments[0]=this,e.apply(null,arguments),this}var UJ=F(()=>{"use strict";o(nI,"default")});function iI(){return Array.from(this)}var YJ=F(()=>{"use strict";o(iI,"default")});function aI(){for(var e=this._groups,t=0,r=e.length;t<r;++t)for(var n=e[t],i=0,a=n.length;i<a;++i){var s=n[i];if(s)return s}return null}var jJ=F(()=>{"use strict";o(aI,"default")});function sI(){let e=0;for(let t of this)++e;return e}var XJ=F(()=>{"use strict";o(sI,"default")});function oI(){return!this.node()}var KJ=F(()=>{"use strict";o(oI,"default")});function lI(e){for(var t=this._groups,r=0,n=t.length;r<n;++r)for(var i=t[r],a=0,s=i.length,l;a<s;++a)(l=i[a])&&e.call(l,l.__data__,a,i);return this}var ZJ=F(()=>{"use strict";o(lI,"default")});function dqe(e){return function(){this.removeAttribute(e)}}function fqe(e){return function(){this.removeAttributeNS(e.space,e.local)}}function pqe(e,t){return function(){this.setAttribute(e,t)}}function mqe(e,t){return function(){this.setAttributeNS(e.space,e.local,t)}}function gqe(e,t){return function(){var r=t.apply(this,arguments);r==null?this.removeAttribute(e):this.setAttribute(e,r)}}function yqe(e,t){return function(){var r=t.apply(this,arguments);r==null?this.removeAttributeNS(e.space,e.local):this.setAttributeNS(e.space,e.local,r)}}function cI(e,t){var r=Uc(e);if(arguments.length<2){var n=this.node();return r.local?n.getAttributeNS(r.space,r.local):n.getAttribute(r)}return this.each((t==null?r.local?fqe:dqe:typeof t=="function"?r.local?yqe:gqe:r.local?mqe:pqe)(r,t))}var QJ=F(()=>{"use strict";IS();o(dqe,"attrRemove");o(fqe,"attrRemoveNS");o(pqe,"attrConstant");o(mqe,"attrConstantNS");o(gqe,"attrFunction");o(yqe,"attrFunctionNS");o(cI,"default")});function bb(e){return e.ownerDocument&&e.ownerDocument.defaultView||e.document&&e||e.defaultView}var uI=F(()=>{"use strict";o(bb,"default")});function vqe(e){return function(){this.style.removeProperty(e)}}function xqe(e,t,r){return function(){this.style.setProperty(e,t,r)}}function bqe(e,t,r){return function(){var n=t.apply(this,arguments);n==null?this.style.removeProperty(e):this.style.setProperty(e,n,r)}}function hI(e,t,r){return arguments.length>1?this.each((t==null?vqe:typeof t=="function"?bqe:xqe)(e,t,r??"")):Pd(this.node(),e)}function Pd(e,t){return e.style.getPropertyValue(t)||bb(e).getComputedStyle(e,null).getPropertyValue(t)}var dI=F(()=>{"use strict";uI();o(vqe,"styleRemove");o(xqe,"styleConstant");o(bqe,"styleFunction");o(hI,"default");o(Pd,"styleValue")});function Tqe(e){return function(){delete this[e]}}function Cqe(e,t){return function(){this[e]=t}}function wqe(e,t){return function(){var r=t.apply(this,arguments);r==null?delete this[e]:this[e]=r}}function fI(e,t){return arguments.length>1?this.each((t==null?Tqe:typeof t=="function"?wqe:Cqe)(e,t)):this.node()[e]}var JJ=F(()=>{"use strict";o(Tqe,"propertyRemove");o(Cqe,"propertyConstant");o(wqe,"propertyFunction");o(fI,"default")});function eee(e){return e.trim().split(/^|\s+/)}function pI(e){return e.classList||new tee(e)}function tee(e){this._node=e,this._names=eee(e.getAttribute("class")||"")}function ree(e,t){for(var r=pI(e),n=-1,i=t.length;++n<i;)r.add(t[n])}function nee(e,t){for(var r=pI(e),n=-1,i=t.length;++n<i;)r.remove(t[n])}function kqe(e){return function(){ree(this,e)}}function Sqe(e){return function(){nee(this,e)}}function Eqe(e,t){return function(){(t.apply(this,arguments)?ree:nee)(this,e)}}function mI(e,t){var r=eee(e+"");if(arguments.length<2){for(var n=pI(this.node()),i=-1,a=r.length;++i<a;)if(!n.contains(r[i]))return!1;return!0}return this.each((typeof t=="function"?Eqe:t?kqe:Sqe)(r,t))}var iee=F(()=>{"use strict";o(eee,"classArray");o(pI,"classList");o(tee,"ClassList");tee.prototype={add:o(function(e){var t=this._names.indexOf(e);t<0&&(this._names.push(e),this._node.setAttribute("class",this._names.join(" ")))},"add"),remove:o(function(e){var t=this._names.indexOf(e);t>=0&&(this._names.splice(t,1),this._node.setAttribute("class",this._names.join(" ")))},"remove"),contains:o(function(e){return this._names.indexOf(e)>=0},"contains")};o(ree,"classedAdd");o(nee,"classedRemove");o(kqe,"classedTrue");o(Sqe,"classedFalse");o(Eqe,"classedFunction");o(mI,"default")});function Aqe(){this.textContent=""}function Rqe(e){return function(){this.textContent=e}}function _qe(e){return function(){var t=e.apply(this,arguments);this.textContent=t??""}}function gI(e){return arguments.length?this.each(e==null?Aqe:(typeof e=="function"?_qe:Rqe)(e)):this.node().textContent}var aee=F(()=>{"use strict";o(Aqe,"textRemove");o(Rqe,"textConstant");o(_qe,"textFunction");o(gI,"default")});function Lqe(){this.innerHTML=""}function Dqe(e){return function(){this.innerHTML=e}}function Iqe(e){return function(){var t=e.apply(this,arguments);this.innerHTML=t??""}}function yI(e){return arguments.length?this.each(e==null?Lqe:(typeof e=="function"?Iqe:Dqe)(e)):this.node().innerHTML}var see=F(()=>{"use strict";o(Lqe,"htmlRemove");o(Dqe,"htmlConstant");o(Iqe,"htmlFunction");o(yI,"default")});function Mqe(){this.nextSibling&&this.parentNode.appendChild(this)}function vI(){return this.each(Mqe)}var oee=F(()=>{"use strict";o(Mqe,"raise");o(vI,"default")});function Nqe(){this.previousSibling&&this.parentNode.insertBefore(this,this.parentNode.firstChild)}function xI(){return this.each(Nqe)}var lee=F(()=>{"use strict";o(Nqe,"lower");o(xI,"default")});function bI(e){var t=typeof e=="function"?e:gb(e);return this.select(function(){return this.appendChild(t.apply(this,arguments))})}var cee=F(()=>{"use strict";F8();o(bI,"default")});function Pqe(){return null}function TI(e,t){var r=typeof e=="function"?e:gb(e),n=t==null?Pqe:typeof t=="function"?t:Nd(t);return this.select(function(){return this.insertBefore(r.apply(this,arguments),n.apply(this,arguments)||null)})}var uee=F(()=>{"use strict";F8();MS();o(Pqe,"constantNull");o(TI,"default")});function Oqe(){var e=this.parentNode;e&&e.removeChild(this)}function CI(){return this.each(Oqe)}var hee=F(()=>{"use strict";o(Oqe,"remove");o(CI,"default")});function Bqe(){var e=this.cloneNode(!1),t=this.parentNode;return t?t.insertBefore(e,this.nextSibling):e}function $qe(){var e=this.cloneNode(!0),t=this.parentNode;return t?t.insertBefore(e,this.nextSibling):e}function wI(e){return this.select(e?$qe:Bqe)}var dee=F(()=>{"use strict";o(Bqe,"selection_cloneShallow");o($qe,"selection_cloneDeep");o(wI,"default")});function kI(e){return arguments.length?this.property("__data__",e):this.node().__data__}var fee=F(()=>{"use strict";o(kI,"default")});function Fqe(e){return function(t){e.call(this,t,this.__data__)}}function zqe(e){return e.trim().split(/^|\s+/).map(function(t){var r="",n=t.indexOf(".");return n>=0&&(r=t.slice(n+1),t=t.slice(0,n)),{type:t,name:r}})}function Gqe(e){return function(){var t=this.__on;if(t){for(var r=0,n=-1,i=t.length,a;r<i;++r)a=t[r],(!e.type||a.type===e.type)&&a.name===e.name?this.removeEventListener(a.type,a.listener,a.options):t[++n]=a;++n?t.length=n:delete this.__on}}}function Vqe(e,t,r){return function(){var n=this.__on,i,a=Fqe(t);if(n){for(var s=0,l=n.length;s<l;++s)if((i=n[s]).type===e.type&&i.name===e.name){this.removeEventListener(i.type,i.listener,i.options),this.addEventListener(i.type,i.listener=a,i.options=r),i.value=t;return}}this.addEventListener(e.type,a,r),i={type:e.type,name:e.name,value:t,listener:a,options:r},n?n.push(i):this.__on=[i]}}function SI(e,t,r){var n=zqe(e+""),i,a=n.length,s;if(arguments.length<2){var l=this.node().__on;if(l){for(var u=0,h=l.length,d;u<h;++u)for(i=0,d=l[u];i<a;++i)if((s=n[i]).type===d.type&&s.name===d.name)return d.value}return}for(l=t?Vqe:Gqe,i=0;i<a;++i)this.each(l(n[i],t,r));return this}var pee=F(()=>{"use strict";o(Fqe,"contextListener");o(zqe,"parseTypenames");o(Gqe,"onRemove");o(Vqe,"onAdd");o(SI,"default")});function mee(e,t,r){var n=bb(e),i=n.CustomEvent;typeof i=="function"?i=new i(t,r):(i=n.document.createEvent("Event"),r?(i.initEvent(t,r.bubbles,r.cancelable),i.detail=r.detail):i.initEvent(t,!1,!1)),e.dispatchEvent(i)}function Wqe(e,t){return function(){return mee(this,e,t)}}function qqe(e,t){return function(){return mee(this,e,t.apply(this,arguments))}}function EI(e,t){return this.each((typeof t=="function"?qqe:Wqe)(e,t))}var gee=F(()=>{"use strict";uI();o(mee,"dispatchEvent");o(Wqe,"dispatchConstant");o(qqe,"dispatchFunction");o(EI,"default")});function*AI(){for(var e=this._groups,t=0,r=e.length;t<r;++t)for(var n=e[t],i=0,a=n.length,s;i<a;++i)(s=n[i])&&(yield s)}var yee=F(()=>{"use strict";o(AI,"default")});function Ai(e,t){this._groups=e,this._parents=t}function vee(){return new Ai([[document.documentElement]],RI)}function Hqe(){return this}var RI,lh,Hl=F(()=>{"use strict";MJ();PJ();OJ();BJ();$J();zJ();X8();GJ();VJ();WJ();qJ();HJ();UJ();YJ();jJ();XJ();KJ();ZJ();QJ();dI();JJ();iee();aee();see();oee();lee();cee();uee();hee();dee();fee();pee();gee();yee();RI=[null];o(Ai,"Selection");o(vee,"selection");o(Hqe,"selection_selection");Ai.prototype=vee.prototype={constructor:Ai,select:z8,selectAll:W8,selectChild:q8,selectChildren:H8,filter:U8,data:Z8,enter:j8,exit:Q8,join:J8,merge:eI,selection:Hqe,order:tI,sort:rI,call:nI,nodes:iI,node:aI,size:sI,empty:oI,each:lI,attr:cI,style:hI,property:fI,classed:mI,text:gI,html:yI,raise:vI,lower:xI,append:bI,insert:TI,remove:CI,clone:wI,datum:kI,on:SI,dispatch:EI,[Symbol.iterator]:AI};lh=vee});function et(e){return typeof e=="string"?new Ai([[document.querySelector(e)]],[document.documentElement]):new Ai([[e]],RI)}var xee=F(()=>{"use strict";Hl();o(et,"default")});var Ul=F(()=>{"use strict";yb();IS();xee();Hl();MS();V8();dI()});var bee=F(()=>{"use strict"});function Od(e,t,r){e.prototype=t.prototype=r,r.constructor=e}function ly(e,t){var r=Object.create(e.prototype);for(var n in t)r[n]=t[n];return r}var _I=F(()=>{"use strict";o(Od,"default");o(ly,"extend")});function Bd(){}function Cee(){return this.rgb().formatHex()}function Jqe(){return this.rgb().formatHex8()}function eHe(){return _ee(this).formatHsl()}function wee(){return this.rgb().formatRgb()}function jl(e){var t,r;return e=(e+"").trim().toLowerCase(),(t=Uqe.exec(e))?(r=t[1].length,t=parseInt(t[1],16),r===6?kee(t):r===3?new Oa(t>>8&15|t>>4&240,t>>4&15|t&240,(t&15)<<4|t&15,1):r===8?PS(t>>24&255,t>>16&255,t>>8&255,(t&255)/255):r===4?PS(t>>12&15|t>>8&240,t>>8&15|t>>4&240,t>>4&15|t&240,((t&15)<<4|t&15)/255):null):(t=Yqe.exec(e))?new Oa(t[1],t[2],t[3],1):(t=jqe.exec(e))?new Oa(t[1]*255/100,t[2]*255/100,t[3]*255/100,1):(t=Xqe.exec(e))?PS(t[1],t[2],t[3],t[4]):(t=Kqe.exec(e))?PS(t[1]*255/100,t[2]*255/100,t[3]*255/100,t[4]):(t=Zqe.exec(e))?Aee(t[1],t[2]/100,t[3]/100,1):(t=Qqe.exec(e))?Aee(t[1],t[2]/100,t[3]/100,t[4]):Tee.hasOwnProperty(e)?kee(Tee[e]):e==="transparent"?new Oa(NaN,NaN,NaN,0):null}function kee(e){return new Oa(e>>16&255,e>>8&255,e&255,1)}function PS(e,t,r,n){return n<=0&&(e=t=r=NaN),new Oa(e,t,r,n)}function DI(e){return e instanceof Bd||(e=jl(e)),e?(e=e.rgb(),new Oa(e.r,e.g,e.b,e.opacity)):new Oa}function uy(e,t,r,n){return arguments.length===1?DI(e):new Oa(e,t,r,n??1)}function Oa(e,t,r,n){this.r=+e,this.g=+t,this.b=+r,this.opacity=+n}function See(){return`#${Kp(this.r)}${Kp(this.g)}${Kp(this.b)}`}function tHe(){return`#${Kp(this.r)}${Kp(this.g)}${Kp(this.b)}${Kp((isNaN(this.opacity)?1:this.opacity)*255)}`}function Eee(){let e=$S(this.opacity);return`${e===1?"rgb(":"rgba("}${Zp(this.r)}, ${Zp(this.g)}, ${Zp(this.b)}${e===1?")":`, ${e})`}`}function $S(e){return isNaN(e)?1:Math.max(0,Math.min(1,e))}function Zp(e){return Math.max(0,Math.min(255,Math.round(e)||0))}function Kp(e){return e=Zp(e),(e<16?"0":"")+e.toString(16)}function Aee(e,t,r,n){return n<=0?e=t=r=NaN:r<=0||r>=1?e=t=NaN:t<=0&&(e=NaN),new Yl(e,t,r,n)}function _ee(e){if(e instanceof Yl)return new Yl(e.h,e.s,e.l,e.opacity);if(e instanceof Bd||(e=jl(e)),!e)return new Yl;if(e instanceof Yl)return e;e=e.rgb();var t=e.r/255,r=e.g/255,n=e.b/255,i=Math.min(t,r,n),a=Math.max(t,r,n),s=NaN,l=a-i,u=(a+i)/2;return l?(t===a?s=(r-n)/l+(r<n)*6:r===a?s=(n-t)/l+2:s=(t-r)/l+4,l/=u<.5?a+i:2-a-i,s*=60):l=u>0&&u<1?0:s,new Yl(s,l,u,e.opacity)}function Lee(e,t,r,n){return arguments.length===1?_ee(e):new Yl(e,t,r,n??1)}function Yl(e,t,r,n){this.h=+e,this.s=+t,this.l=+r,this.opacity=+n}function Ree(e){return e=(e||0)%360,e<0?e+360:e}function OS(e){return Math.max(0,Math.min(1,e||0))}function LI(e,t,r){return(e<60?t+(r-t)*e/60:e<180?r:e<240?t+(r-t)*(240-e)/60:t)*255}var Tb,BS,cy,Cb,Yc,Uqe,Yqe,jqe,Xqe,Kqe,Zqe,Qqe,Tee,II=F(()=>{"use strict";_I();o(Bd,"Color");Tb=.7,BS=1/Tb,cy="\\s*([+-]?\\d+)\\s*",Cb="\\s*([+-]?(?:\\d*\\.)?\\d+(?:[eE][+-]?\\d+)?)\\s*",Yc="\\s*([+-]?(?:\\d*\\.)?\\d+(?:[eE][+-]?\\d+)?)%\\s*",Uqe=/^#([0-9a-f]{3,8})$/,Yqe=new RegExp(`^rgb\\(${cy},${cy},${cy}\\)$`),jqe=new RegExp(`^rgb\\(${Yc},${Yc},${Yc}\\)$`),Xqe=new RegExp(`^rgba\\(${cy},${cy},${cy},${Cb}\\)$`),Kqe=new RegExp(`^rgba\\(${Yc},${Yc},${Yc},${Cb}\\)$`),Zqe=new RegExp(`^hsl\\(${Cb},${Yc},${Yc}\\)$`),Qqe=new RegExp(`^hsla\\(${Cb},${Yc},${Yc},${Cb}\\)$`),Tee={aliceblue:15792383,antiquewhite:16444375,aqua:65535,aquamarine:8388564,azure:15794175,beige:16119260,bisque:16770244,black:0,blanchedalmond:16772045,blue:255,blueviolet:9055202,brown:10824234,burlywood:14596231,cadetblue:6266528,chartreuse:8388352,chocolate:13789470,coral:16744272,cornflowerblue:6591981,cornsilk:16775388,crimson:14423100,cyan:65535,darkblue:139,darkcyan:35723,darkgoldenrod:12092939,darkgray:11119017,darkgreen:25600,darkgrey:11119017,darkkhaki:12433259,darkmagenta:9109643,darkolivegreen:5597999,darkorange:16747520,darkorchid:10040012,darkred:9109504,darksalmon:15308410,darkseagreen:9419919,darkslateblue:4734347,darkslategray:3100495,darkslategrey:3100495,darkturquoise:52945,darkviolet:9699539,deeppink:16716947,deepskyblue:49151,dimgray:6908265,dimgrey:6908265,dodgerblue:2003199,firebrick:11674146,floralwhite:16775920,forestgreen:2263842,fuchsia:16711935,gainsboro:14474460,ghostwhite:16316671,gold:16766720,goldenrod:14329120,gray:8421504,green:32768,greenyellow:11403055,grey:8421504,honeydew:15794160,hotpink:16738740,indianred:13458524,indigo:4915330,ivory:16777200,khaki:15787660,lavender:15132410,lavenderblush:16773365,lawngreen:8190976,lemonchiffon:16775885,lightblue:11393254,lightcoral:15761536,lightcyan:14745599,lightgoldenrodyellow:16448210,lightgray:13882323,lightgreen:9498256,lightgrey:13882323,lightpink:16758465,lightsalmon:16752762,lightseagreen:2142890,lightskyblue:8900346,lightslategray:7833753,lightslategrey:7833753,lightsteelblue:11584734,lightyellow:16777184,lime:65280,limegreen:3329330,linen:16445670,magenta:16711935,maroon:8388608,mediumaquamarine:6737322,mediumblue:205,mediumorchid:12211667,mediumpurple:9662683,mediumseagreen:3978097,mediumslateblue:8087790,mediumspringgreen:64154,mediumturquoise:4772300,mediumvioletred:13047173,midnightblue:1644912,mintcream:16121850,mistyrose:16770273,moccasin:16770229,navajowhite:16768685,navy:128,oldlace:16643558,olive:8421376,olivedrab:7048739,orange:16753920,orangered:16729344,orchid:14315734,palegoldenrod:15657130,palegreen:10025880,paleturquoise:11529966,palevioletred:14381203,papayawhip:16773077,peachpuff:16767673,peru:13468991,pink:16761035,plum:14524637,powderblue:11591910,purple:8388736,rebeccapurple:6697881,red:16711680,rosybrown:12357519,royalblue:4286945,saddlebrown:9127187,salmon:16416882,sandybrown:16032864,seagreen:3050327,seashell:16774638,sienna:10506797,silver:12632256,skyblue:8900331,slateblue:6970061,slategray:7372944,slategrey:7372944,snow:16775930,springgreen:65407,steelblue:4620980,tan:13808780,teal:32896,thistle:14204888,tomato:16737095,turquoise:4251856,violet:15631086,wheat:16113331,white:16777215,whitesmoke:16119285,yellow:16776960,yellowgreen:10145074};Od(Bd,jl,{copy(e){return Object.assign(new this.constructor,this,e)},displayable(){return this.rgb().displayable()},hex:Cee,formatHex:Cee,formatHex8:Jqe,formatHsl:eHe,formatRgb:wee,toString:wee});o(Cee,"color_formatHex");o(Jqe,"color_formatHex8");o(eHe,"color_formatHsl");o(wee,"color_formatRgb");o(jl,"color");o(kee,"rgbn");o(PS,"rgba");o(DI,"rgbConvert");o(uy,"rgb");o(Oa,"Rgb");Od(Oa,uy,ly(Bd,{brighter(e){return e=e==null?BS:Math.pow(BS,e),new Oa(this.r*e,this.g*e,this.b*e,this.opacity)},darker(e){return e=e==null?Tb:Math.pow(Tb,e),new Oa(this.r*e,this.g*e,this.b*e,this.opacity)},rgb(){return this},clamp(){return new Oa(Zp(this.r),Zp(this.g),Zp(this.b),$S(this.opacity))},displayable(){return-.5<=this.r&&this.r<255.5&&-.5<=this.g&&this.g<255.5&&-.5<=this.b&&this.b<255.5&&0<=this.opacity&&this.opacity<=1},hex:See,formatHex:See,formatHex8:tHe,formatRgb:Eee,toString:Eee}));o(See,"rgb_formatHex");o(tHe,"rgb_formatHex8");o(Eee,"rgb_formatRgb");o($S,"clampa");o(Zp,"clampi");o(Kp,"hex");o(Aee,"hsla");o(_ee,"hslConvert");o(Lee,"hsl");o(Yl,"Hsl");Od(Yl,Lee,ly(Bd,{brighter(e){return e=e==null?BS:Math.pow(BS,e),new Yl(this.h,this.s,this.l*e,this.opacity)},darker(e){return e=e==null?Tb:Math.pow(Tb,e),new Yl(this.h,this.s,this.l*e,this.opacity)},rgb(){var e=this.h%360+(this.h<0)*360,t=isNaN(e)||isNaN(this.s)?0:this.s,r=this.l,n=r+(r<.5?r:1-r)*t,i=2*r-n;return new Oa(LI(e>=240?e-240:e+120,i,n),LI(e,i,n),LI(e<120?e+240:e-120,i,n),this.opacity)},clamp(){return new Yl(Ree(this.h),OS(this.s),OS(this.l),$S(this.opacity))},displayable(){return(0<=this.s&&this.s<=1||isNaN(this.s))&&0<=this.l&&this.l<=1&&0<=this.opacity&&this.opacity<=1},formatHsl(){let e=$S(this.opacity);return`${e===1?"hsl(":"hsla("}${Ree(this.h)}, ${OS(this.s)*100}%, ${OS(this.l)*100}%${e===1?")":`, ${e})`}`}}));o(Ree,"clamph");o(OS,"clampt");o(LI,"hsl2rgb")});var Dee,Iee,Mee=F(()=>{"use strict";Dee=Math.PI/180,Iee=180/Math.PI});function Fee(e){if(e instanceof jc)return new jc(e.l,e.a,e.b,e.opacity);if(e instanceof ch)return zee(e);e instanceof Oa||(e=DI(e));var t=OI(e.r),r=OI(e.g),n=OI(e.b),i=MI((.2225045*t+.7168786*r+.0606169*n)/Pee),a,s;return t===r&&r===n?a=s=i:(a=MI((.4360747*t+.3850649*r+.1430804*n)/Nee),s=MI((.0139322*t+.0971045*r+.7141733*n)/Oee)),new jc(116*i-16,500*(a-i),200*(i-s),e.opacity)}function BI(e,t,r,n){return arguments.length===1?Fee(e):new jc(e,t,r,n??1)}function jc(e,t,r,n){this.l=+e,this.a=+t,this.b=+r,this.opacity=+n}function MI(e){return e>rHe?Math.pow(e,1/3):e/$ee+Bee}function NI(e){return e>hy?e*e*e:$ee*(e-Bee)}function PI(e){return 255*(e<=.0031308?12.92*e:1.055*Math.pow(e,1/2.4)-.055)}function OI(e){return(e/=255)<=.04045?e/12.92:Math.pow((e+.055)/1.055,2.4)}function nHe(e){if(e instanceof ch)return new ch(e.h,e.c,e.l,e.opacity);if(e instanceof jc||(e=Fee(e)),e.a===0&&e.b===0)return new ch(NaN,0<e.l&&e.l<100?0:NaN,e.l,e.opacity);var t=Math.atan2(e.b,e.a)*Iee;return new ch(t<0?t+360:t,Math.sqrt(e.a*e.a+e.b*e.b),e.l,e.opacity)}function wb(e,t,r,n){return arguments.length===1?nHe(e):new ch(e,t,r,n??1)}function ch(e,t,r,n){this.h=+e,this.c=+t,this.l=+r,this.opacity=+n}function zee(e){if(isNaN(e.h))return new jc(e.l,0,0,e.opacity);var t=e.h*Dee;return new jc(e.l,Math.cos(t)*e.c,Math.sin(t)*e.c,e.opacity)}var FS,Nee,Pee,Oee,Bee,hy,$ee,rHe,Gee=F(()=>{"use strict";_I();II();Mee();FS=18,Nee=.96422,Pee=1,Oee=.82521,Bee=4/29,hy=6/29,$ee=3*hy*hy,rHe=hy*hy*hy;o(Fee,"labConvert");o(BI,"lab");o(jc,"Lab");Od(jc,BI,ly(Bd,{brighter(e){return new jc(this.l+FS*(e??1),this.a,this.b,this.opacity)},darker(e){return new jc(this.l-FS*(e??1),this.a,this.b,this.opacity)},rgb(){var e=(this.l+16)/116,t=isNaN(this.a)?e:e+this.a/500,r=isNaN(this.b)?e:e-this.b/200;return t=Nee*NI(t),e=Pee*NI(e),r=Oee*NI(r),new Oa(PI(3.1338561*t-1.6168667*e-.4906146*r),PI(-.9787684*t+1.9161415*e+.033454*r),PI(.0719453*t-.2289914*e+1.4052427*r),this.opacity)}}));o(MI,"xyz2lab");o(NI,"lab2xyz");o(PI,"lrgb2rgb");o(OI,"rgb2lrgb");o(nHe,"hclConvert");o(wb,"hcl");o(ch,"Hcl");o(zee,"hcl2lab");Od(ch,wb,ly(Bd,{brighter(e){return new ch(this.h,this.c,this.l+FS*(e??1),this.opacity)},darker(e){return new ch(this.h,this.c,this.l-FS*(e??1),this.opacity)},rgb(){return zee(this).rgb()}}))});var dy=F(()=>{"use strict";II();Gee()});function $I(e,t,r,n,i){var a=e*e,s=a*e;return((1-3*e+3*a-s)*t+(4-6*a+3*s)*r+(1+3*e+3*a-3*s)*n+s*i)/6}function FI(e){var t=e.length-1;return function(r){var n=r<=0?r=0:r>=1?(r=1,t-1):Math.floor(r*t),i=e[n],a=e[n+1],s=n>0?e[n-1]:2*i-a,l=n<t-1?e[n+2]:2*a-i;return $I((r-n/t)*t,s,i,a,l)}}var zI=F(()=>{"use strict";o($I,"basis");o(FI,"default")});function GI(e){var t=e.length;return function(r){var n=Math.floor(((r%=1)<0?++r:r)*t),i=e[(n+t-1)%t],a=e[n%t],s=e[(n+1)%t],l=e[(n+2)%t];return $I((r-n/t)*t,i,a,s,l)}}var Vee=F(()=>{"use strict";zI();o(GI,"default")});var fy,VI=F(()=>{"use strict";fy=o(e=>()=>e,"default")});function Wee(e,t){return function(r){return e+r*t}}function iHe(e,t,r){return e=Math.pow(e,r),t=Math.pow(t,r)-e,r=1/r,function(n){return Math.pow(e+n*t,r)}}function qee(e,t){var r=t-e;return r?Wee(e,r>180||r<-180?r-360*Math.round(r/360):r):fy(isNaN(e)?t:e)}function Hee(e){return(e=+e)==1?uh:function(t,r){return r-t?iHe(t,r,e):fy(isNaN(t)?r:t)}}function uh(e,t){var r=t-e;return r?Wee(e,r):fy(isNaN(e)?t:e)}var WI=F(()=>{"use strict";VI();o(Wee,"linear");o(iHe,"exponential");o(qee,"hue");o(Hee,"gamma");o(uh,"nogamma")});function Uee(e){return function(t){var r=t.length,n=new Array(r),i=new Array(r),a=new Array(r),s,l;for(s=0;s<r;++s)l=uy(t[s]),n[s]=l.r||0,i[s]=l.g||0,a[s]=l.b||0;return n=e(n),i=e(i),a=e(a),l.opacity=1,function(u){return l.r=n(u),l.g=i(u),l.b=a(u),l+""}}}var Qp,aHe,sHe,qI=F(()=>{"use strict";dy();zI();Vee();WI();Qp=o((function e(t){var r=Hee(t);function n(i,a){var s=r((i=uy(i)).r,(a=uy(a)).r),l=r(i.g,a.g),u=r(i.b,a.b),h=uh(i.opacity,a.opacity);return function(d){return i.r=s(d),i.g=l(d),i.b=u(d),i.opacity=h(d),i+""}}return o(n,"rgb"),n.gamma=e,n}),"rgbGamma")(1);o(Uee,"rgbSpline");aHe=Uee(FI),sHe=Uee(GI)});function HI(e,t){t||(t=[]);var r=e?Math.min(t.length,e.length):0,n=t.slice(),i;return function(a){for(i=0;i<r;++i)n[i]=e[i]*(1-a)+t[i]*a;return n}}function Yee(e){return ArrayBuffer.isView(e)&&!(e instanceof DataView)}var jee=F(()=>{"use strict";o(HI,"default");o(Yee,"isNumberArray")});function Xee(e,t){var r=t?t.length:0,n=e?Math.min(r,e.length):0,i=new Array(n),a=new Array(r),s;for(s=0;s<n;++s)i[s]=$d(e[s],t[s]);for(;s<r;++s)a[s]=t[s];return function(l){for(s=0;s<n;++s)a[s]=i[s](l);return a}}var Kee=F(()=>{"use strict";zS();o(Xee,"genericArray")});function UI(e,t){var r=new Date;return e=+e,t=+t,function(n){return r.setTime(e*(1-n)+t*n),r}}var Zee=F(()=>{"use strict";o(UI,"default")});function va(e,t){return e=+e,t=+t,function(r){return e*(1-r)+t*r}}var kb=F(()=>{"use strict";o(va,"default")});function YI(e,t){var r={},n={},i;(e===null||typeof e!="object")&&(e={}),(t===null||typeof t!="object")&&(t={});for(i in t)i in e?r[i]=$d(e[i],t[i]):n[i]=t[i];return function(a){for(i in r)n[i]=r[i](a);return n}}var Qee=F(()=>{"use strict";zS();o(YI,"default")});function oHe(e){return function(){return e}}function lHe(e){return function(t){return e(t)+""}}function py(e,t){var r=XI.lastIndex=jI.lastIndex=0,n,i,a,s=-1,l=[],u=[];for(e=e+"",t=t+"";(n=XI.exec(e))&&(i=jI.exec(t));)(a=i.index)>r&&(a=t.slice(r,a),l[s]?l[s]+=a:l[++s]=a),(n=n[0])===(i=i[0])?l[s]?l[s]+=i:l[++s]=i:(l[++s]=null,u.push({i:s,x:va(n,i)})),r=jI.lastIndex;return r<t.length&&(a=t.slice(r),l[s]?l[s]+=a:l[++s]=a),l.length<2?u[0]?lHe(u[0].x):oHe(t):(t=u.length,function(h){for(var d=0,f;d<t;++d)l[(f=u[d]).i]=f.x(h);return l.join("")})}var XI,jI,KI=F(()=>{"use strict";kb();XI=/[-+]?(?:\d+\.?\d*|\.?\d+)(?:[eE][-+]?\d+)?/g,jI=new RegExp(XI.source,"g");o(oHe,"zero");o(lHe,"one");o(py,"default")});function $d(e,t){var r=typeof t,n;return t==null||r==="boolean"?fy(t):(r==="number"?va:r==="string"?(n=jl(t))?(t=n,Qp):py:t instanceof jl?Qp:t instanceof Date?UI:Yee(t)?HI:Array.isArray(t)?Xee:typeof t.valueOf!="function"&&typeof t.toString!="function"||isNaN(t)?YI:va)(e,t)}var zS=F(()=>{"use strict";dy();qI();Kee();Zee();kb();Qee();KI();VI();jee();o($d,"default")});function GS(e,t){return e=+e,t=+t,function(r){return Math.round(e*(1-r)+t*r)}}var Jee=F(()=>{"use strict";o(GS,"default")});function WS(e,t,r,n,i,a){var s,l,u;return(s=Math.sqrt(e*e+t*t))&&(e/=s,t/=s),(u=e*r+t*n)&&(r-=e*u,n-=t*u),(l=Math.sqrt(r*r+n*n))&&(r/=l,n/=l,u/=l),e*n<t*r&&(e=-e,t=-t,u=-u,s=-s),{translateX:i,translateY:a,rotate:Math.atan2(t,e)*ete,skewX:Math.atan(u)*ete,scaleX:s,scaleY:l}}var ete,VS,tte=F(()=>{"use strict";ete=180/Math.PI,VS={translateX:0,translateY:0,rotate:0,skewX:0,scaleX:1,scaleY:1};o(WS,"default")});function rte(e){let t=new(typeof DOMMatrix=="function"?DOMMatrix:WebKitCSSMatrix)(e+"");return t.isIdentity?VS:WS(t.a,t.b,t.c,t.d,t.e,t.f)}function nte(e){return e==null?VS:(qS||(qS=document.createElementNS("http://www.w3.org/2000/svg","g")),qS.setAttribute("transform",e),(e=qS.transform.baseVal.consolidate())?(e=e.matrix,WS(e.a,e.b,e.c,e.d,e.e,e.f)):VS)}var qS,ite=F(()=>{"use strict";tte();o(rte,"parseCss");o(nte,"parseSvg")});function ate(e,t,r,n){function i(h){return h.length?h.pop()+" ":""}o(i,"pop");function a(h,d,f,p,m,g){if(h!==f||d!==p){var y=m.push("translate(",null,t,null,r);g.push({i:y-4,x:va(h,f)},{i:y-2,x:va(d,p)})}else(f||p)&&m.push("translate("+f+t+p+r)}o(a,"translate");function s(h,d,f,p){h!==d?(h-d>180?d+=360:d-h>180&&(h+=360),p.push({i:f.push(i(f)+"rotate(",null,n)-2,x:va(h,d)})):d&&f.push(i(f)+"rotate("+d+n)}o(s,"rotate");function l(h,d,f,p){h!==d?p.push({i:f.push(i(f)+"skewX(",null,n)-2,x:va(h,d)}):d&&f.push(i(f)+"skewX("+d+n)}o(l,"skewX");function u(h,d,f,p,m,g){if(h!==f||d!==p){var y=m.push(i(m)+"scale(",null,",",null,")");g.push({i:y-4,x:va(h,f)},{i:y-2,x:va(d,p)})}else(f!==1||p!==1)&&m.push(i(m)+"scale("+f+","+p+")")}return o(u,"scale"),function(h,d){var f=[],p=[];return h=e(h),d=e(d),a(h.translateX,h.translateY,d.translateX,d.translateY,f,p),s(h.rotate,d.rotate,f,p),l(h.skewX,d.skewX,f,p),u(h.scaleX,h.scaleY,d.scaleX,d.scaleY,f,p),h=d=null,function(m){for(var g=-1,y=p.length,v;++g<y;)f[(v=p[g]).i]=v.x(m);return f.join("")}}}var ZI,QI,ste=F(()=>{"use strict";kb();ite();o(ate,"interpolateTransform");ZI=ate(rte,"px, ","px)","deg)"),QI=ate(nte,", ",")",")")});function ote(e){return function(t,r){var n=e((t=wb(t)).h,(r=wb(r)).h),i=uh(t.c,r.c),a=uh(t.l,r.l),s=uh(t.opacity,r.opacity);return function(l){return t.h=n(l),t.c=i(l),t.l=a(l),t.opacity=s(l),t+""}}}var JI,cHe,lte=F(()=>{"use strict";dy();WI();o(ote,"hcl");JI=ote(qee),cHe=ote(uh)});var my=F(()=>{"use strict";zS();kb();Jee();KI();ste();qI();lte()});function Lb(){return Jp||(hte(uHe),Jp=Rb.now()+YS)}function uHe(){Jp=0}function _b(){this._call=this._time=this._next=null}function jS(e,t,r){var n=new _b;return n.restart(e,t,r),n}function dte(){Lb(),++gy;for(var e=HS,t;e;)(t=Jp-e._time)>=0&&e._call.call(void 0,t),e=e._next;--gy}function cte(){Jp=(US=Rb.now())+YS,gy=Eb=0;try{dte()}finally{gy=0,dHe(),Jp=0}}function hHe(){var e=Rb.now(),t=e-US;t>ute&&(YS-=t,US=e)}function dHe(){for(var e,t=HS,r,n=1/0;t;)t._call?(n>t._time&&(n=t._time),e=t,t=t._next):(r=t._next,t._next=null,t=e?e._next=r:HS=r);Ab=e,eM(n)}function eM(e){if(!gy){Eb&&(Eb=clearTimeout(Eb));var t=e-Jp;t>24?(e<1/0&&(Eb=setTimeout(cte,e-Rb.now()-YS)),Sb&&(Sb=clearInterval(Sb))):(Sb||(US=Rb.now(),Sb=setInterval(hHe,ute)),gy=1,hte(cte))}}var gy,Eb,Sb,ute,HS,Ab,US,Jp,YS,Rb,hte,tM=F(()=>{"use strict";gy=0,Eb=0,Sb=0,ute=1e3,US=0,Jp=0,YS=0,Rb=typeof performance=="object"&&performance.now?performance:Date,hte=typeof window=="object"&&window.requestAnimationFrame?window.requestAnimationFrame.bind(window):function(e){setTimeout(e,17)};o(Lb,"now");o(uHe,"clearNow");o(_b,"Timer");_b.prototype=jS.prototype={constructor:_b,restart:o(function(e,t,r){if(typeof e!="function")throw new TypeError("callback is not a function");r=(r==null?Lb():+r)+(t==null?0:+t),!this._next&&Ab!==this&&(Ab?Ab._next=this:HS=this,Ab=this),this._call=e,this._time=r,eM()},"restart"),stop:o(function(){this._call&&(this._call=null,this._time=1/0,eM())},"stop")};o(jS,"timer");o(dte,"timerFlush");o(cte,"wake");o(hHe,"poke");o(dHe,"nap");o(eM,"sleep")});function Db(e,t,r){var n=new _b;return t=t==null?0:+t,n.restart(i=>{n.stop(),e(i+t)},t,r),n}var fte=F(()=>{"use strict";tM();o(Db,"default")});var XS=F(()=>{"use strict";tM();fte()});function hh(e,t,r,n,i,a){var s=e.__transition;if(!s)e.__transition={};else if(r in s)return;mHe(e,r,{name:t,index:n,group:i,on:fHe,tween:pHe,time:a.time,delay:a.delay,duration:a.duration,ease:a.ease,timer:null,state:gte})}function Mb(e,t){var r=aa(e,t);if(r.state>gte)throw new Error("too late; already scheduled");return r}function Ba(e,t){var r=aa(e,t);if(r.state>KS)throw new Error("too late; already running");return r}function aa(e,t){var r=e.__transition;if(!r||!(r=r[t]))throw new Error("transition not found");return r}function mHe(e,t,r){var n=e.__transition,i;n[t]=r,r.timer=jS(a,0,r.time);function a(h){r.state=pte,r.timer.restart(s,r.delay,r.time),r.delay<=h&&s(h-r.delay)}o(a,"schedule");function s(h){var d,f,p,m;if(r.state!==pte)return u();for(d in n)if(m=n[d],m.name===r.name){if(m.state===KS)return Db(s);m.state===mte?(m.state=Ib,m.timer.stop(),m.on.call("interrupt",e,e.__data__,m.index,m.group),delete n[d]):+d<t&&(m.state=Ib,m.timer.stop(),m.on.call("cancel",e,e.__data__,m.index,m.group),delete n[d])}if(Db(function(){r.state===KS&&(r.state=mte,r.timer.restart(l,r.delay,r.time),l(h))}),r.state=ZS,r.on.call("start",e,e.__data__,r.index,r.group),r.state===ZS){for(r.state=KS,i=new Array(p=r.tween.length),d=0,f=-1;d<p;++d)(m=r.tween[d].value.call(e,e.__data__,r.index,r.group))&&(i[++f]=m);i.length=f+1}}o(s,"start");function l(h){for(var d=h<r.duration?r.ease.call(null,h/r.duration):(r.timer.restart(u),r.state=QS,1),f=-1,p=i.length;++f<p;)i[f].call(e,d);r.state===QS&&(r.on.call("end",e,e.__data__,r.index,r.group),u())}o(l,"tick");function u(){r.state=Ib,r.timer.stop(),delete n[t];for(var h in n)return;delete e.__transition}o(u,"stop")}var fHe,pHe,gte,pte,ZS,KS,mte,QS,Ib,Js=F(()=>{"use strict";O8();XS();fHe=P8("start","end","cancel","interrupt"),pHe=[],gte=0,pte=1,ZS=2,KS=3,mte=4,QS=5,Ib=6;o(hh,"default");o(Mb,"init");o(Ba,"set");o(aa,"get");o(mHe,"create")});function Nb(e,t){var r=e.__transition,n,i,a=!0,s;if(r){t=t==null?null:t+"";for(s in r){if((n=r[s]).name!==t){a=!1;continue}i=n.state>ZS&&n.state<QS,n.state=Ib,n.timer.stop(),n.on.call(i?"interrupt":"cancel",e,e.__data__,n.index,n.group),delete r[s]}a&&delete e.__transition}}var yte=F(()=>{"use strict";Js();o(Nb,"default")});function rM(e){return this.each(function(){Nb(this,e)})}var vte=F(()=>{"use strict";yte();o(rM,"default")});function gHe(e,t){var r,n;return function(){var i=Ba(this,e),a=i.tween;if(a!==r){n=r=a;for(var s=0,l=n.length;s<l;++s)if(n[s].name===t){n=n.slice(),n.splice(s,1);break}}i.tween=n}}function yHe(e,t,r){var n,i;if(typeof r!="function")throw new Error;return function(){var a=Ba(this,e),s=a.tween;if(s!==n){i=(n=s).slice();for(var l={name:t,value:r},u=0,h=i.length;u<h;++u)if(i[u].name===t){i[u]=l;break}u===h&&i.push(l)}a.tween=i}}function nM(e,t){var r=this._id;if(e+="",arguments.length<2){for(var n=aa(this.node(),r).tween,i=0,a=n.length,s;i<a;++i)if((s=n[i]).name===e)return s.value;return null}return this.each((t==null?gHe:yHe)(r,e,t))}function yy(e,t,r){var n=e._id;return e.each(function(){var i=Ba(this,n);(i.value||(i.value={}))[t]=r.apply(this,arguments)}),function(i){return aa(i,n).value[t]}}var Pb=F(()=>{"use strict";Js();o(gHe,"tweenRemove");o(yHe,"tweenFunction");o(nM,"default");o(yy,"tweenValue")});function Ob(e,t){var r;return(typeof t=="number"?va:t instanceof jl?Qp:(r=jl(t))?(t=r,Qp):py)(e,t)}var iM=F(()=>{"use strict";dy();my();o(Ob,"default")});function vHe(e){return function(){this.removeAttribute(e)}}function xHe(e){return function(){this.removeAttributeNS(e.space,e.local)}}function bHe(e,t,r){var n,i=r+"",a;return function(){var s=this.getAttribute(e);return s===i?null:s===n?a:a=t(n=s,r)}}function THe(e,t,r){var n,i=r+"",a;return function(){var s=this.getAttributeNS(e.space,e.local);return s===i?null:s===n?a:a=t(n=s,r)}}function CHe(e,t,r){var n,i,a;return function(){var s,l=r(this),u;return l==null?void this.removeAttribute(e):(s=this.getAttribute(e),u=l+"",s===u?null:s===n&&u===i?a:(i=u,a=t(n=s,l)))}}function wHe(e,t,r){var n,i,a;return function(){var s,l=r(this),u;return l==null?void this.removeAttributeNS(e.space,e.local):(s=this.getAttributeNS(e.space,e.local),u=l+"",s===u?null:s===n&&u===i?a:(i=u,a=t(n=s,l)))}}function aM(e,t){var r=Uc(e),n=r==="transform"?QI:Ob;return this.attrTween(e,typeof t=="function"?(r.local?wHe:CHe)(r,n,yy(this,"attr."+e,t)):t==null?(r.local?xHe:vHe)(r):(r.local?THe:bHe)(r,n,t))}var xte=F(()=>{"use strict";my();Ul();Pb();iM();o(vHe,"attrRemove");o(xHe,"attrRemoveNS");o(bHe,"attrConstant");o(THe,"attrConstantNS");o(CHe,"attrFunction");o(wHe,"attrFunctionNS");o(aM,"default")});function kHe(e,t){return function(r){this.setAttribute(e,t.call(this,r))}}function SHe(e,t){return function(r){this.setAttributeNS(e.space,e.local,t.call(this,r))}}function EHe(e,t){var r,n;function i(){var a=t.apply(this,arguments);return a!==n&&(r=(n=a)&&SHe(e,a)),r}return o(i,"tween"),i._value=t,i}function AHe(e,t){var r,n;function i(){var a=t.apply(this,arguments);return a!==n&&(r=(n=a)&&kHe(e,a)),r}return o(i,"tween"),i._value=t,i}function sM(e,t){var r="attr."+e;if(arguments.length<2)return(r=this.tween(r))&&r._value;if(t==null)return this.tween(r,null);if(typeof t!="function")throw new Error;var n=Uc(e);return this.tween(r,(n.local?EHe:AHe)(n,t))}var bte=F(()=>{"use strict";Ul();o(kHe,"attrInterpolate");o(SHe,"attrInterpolateNS");o(EHe,"attrTweenNS");o(AHe,"attrTween");o(sM,"default")});function RHe(e,t){return function(){Mb(this,e).delay=+t.apply(this,arguments)}}function _He(e,t){return t=+t,function(){Mb(this,e).delay=t}}function oM(e){var t=this._id;return arguments.length?this.each((typeof e=="function"?RHe:_He)(t,e)):aa(this.node(),t).delay}var Tte=F(()=>{"use strict";Js();o(RHe,"delayFunction");o(_He,"delayConstant");o(oM,"default")});function LHe(e,t){return function(){Ba(this,e).duration=+t.apply(this,arguments)}}function DHe(e,t){return t=+t,function(){Ba(this,e).duration=t}}function lM(e){var t=this._id;return arguments.length?this.each((typeof e=="function"?LHe:DHe)(t,e)):aa(this.node(),t).duration}var Cte=F(()=>{"use strict";Js();o(LHe,"durationFunction");o(DHe,"durationConstant");o(lM,"default")});function IHe(e,t){if(typeof t!="function")throw new Error;return function(){Ba(this,e).ease=t}}function cM(e){var t=this._id;return arguments.length?this.each(IHe(t,e)):aa(this.node(),t).ease}var wte=F(()=>{"use strict";Js();o(IHe,"easeConstant");o(cM,"default")});function MHe(e,t){return function(){var r=t.apply(this,arguments);if(typeof r!="function")throw new Error;Ba(this,e).ease=r}}function uM(e){if(typeof e!="function")throw new Error;return this.each(MHe(this._id,e))}var kte=F(()=>{"use strict";Js();o(MHe,"easeVarying");o(uM,"default")});function hM(e){typeof e!="function"&&(e=oy(e));for(var t=this._groups,r=t.length,n=new Array(r),i=0;i<r;++i)for(var a=t[i],s=a.length,l=n[i]=[],u,h=0;h<s;++h)(u=a[h])&&e.call(u,u.__data__,h,a)&&l.push(u);return new Es(n,this._parents,this._name,this._id)}var Ste=F(()=>{"use strict";Ul();em();o(hM,"default")});function dM(e){if(e._id!==this._id)throw new Error;for(var t=this._groups,r=e._groups,n=t.length,i=r.length,a=Math.min(n,i),s=new Array(n),l=0;l<a;++l)for(var u=t[l],h=r[l],d=u.length,f=s[l]=new Array(d),p,m=0;m<d;++m)(p=u[m]||h[m])&&(f[m]=p);for(;l<n;++l)s[l]=t[l];return new Es(s,this._parents,this._name,this._id)}var Ete=F(()=>{"use strict";em();o(dM,"default")});function NHe(e){return(e+"").trim().split(/^|\s+/).every(function(t){var r=t.indexOf(".");return r>=0&&(t=t.slice(0,r)),!t||t==="start"})}function PHe(e,t,r){var n,i,a=NHe(t)?Mb:Ba;return function(){var s=a(this,e),l=s.on;l!==n&&(i=(n=l).copy()).on(t,r),s.on=i}}function fM(e,t){var r=this._id;return arguments.length<2?aa(this.node(),r).on.on(e):this.each(PHe(r,e,t))}var Ate=F(()=>{"use strict";Js();o(NHe,"start");o(PHe,"onFunction");o(fM,"default")});function OHe(e){return function(){var t=this.parentNode;for(var r in this.__transition)if(+r!==e)return;t&&t.removeChild(this)}}function pM(){return this.on("end.remove",OHe(this._id))}var Rte=F(()=>{"use strict";o(OHe,"removeFunction");o(pM,"default")});function mM(e){var t=this._name,r=this._id;typeof e!="function"&&(e=Nd(e));for(var n=this._groups,i=n.length,a=new Array(i),s=0;s<i;++s)for(var l=n[s],u=l.length,h=a[s]=new Array(u),d,f,p=0;p<u;++p)(d=l[p])&&(f=e.call(d,d.__data__,p,l))&&("__data__"in d&&(f.__data__=d.__data__),h[p]=f,hh(h[p],t,r,p,h,aa(d,r)));return new Es(a,this._parents,t,r)}var _te=F(()=>{"use strict";Ul();em();Js();o(mM,"default")});function gM(e){var t=this._name,r=this._id;typeof e!="function"&&(e=sy(e));for(var n=this._groups,i=n.length,a=[],s=[],l=0;l<i;++l)for(var u=n[l],h=u.length,d,f=0;f<h;++f)if(d=u[f]){for(var p=e.call(d,d.__data__,f,u),m,g=aa(d,r),y=0,v=p.length;y<v;++y)(m=p[y])&&hh(m,t,r,y,p,g);a.push(p),s.push(d)}return new Es(a,s,t,r)}var Lte=F(()=>{"use strict";Ul();em();Js();o(gM,"default")});function yM(){return new BHe(this._groups,this._parents)}var BHe,Dte=F(()=>{"use strict";Ul();BHe=lh.prototype.constructor;o(yM,"default")});function $He(e,t){var r,n,i;return function(){var a=Pd(this,e),s=(this.style.removeProperty(e),Pd(this,e));return a===s?null:a===r&&s===n?i:i=t(r=a,n=s)}}function Ite(e){return function(){this.style.removeProperty(e)}}function FHe(e,t,r){var n,i=r+"",a;return function(){var s=Pd(this,e);return s===i?null:s===n?a:a=t(n=s,r)}}function zHe(e,t,r){var n,i,a;return function(){var s=Pd(this,e),l=r(this),u=l+"";return l==null&&(u=l=(this.style.removeProperty(e),Pd(this,e))),s===u?null:s===n&&u===i?a:(i=u,a=t(n=s,l))}}function GHe(e,t){var r,n,i,a="style."+t,s="end."+a,l;return function(){var u=Ba(this,e),h=u.on,d=u.value[a]==null?l||(l=Ite(t)):void 0;(h!==r||i!==d)&&(n=(r=h).copy()).on(s,i=d),u.on=n}}function vM(e,t,r){var n=(e+="")=="transform"?ZI:Ob;return t==null?this.styleTween(e,$He(e,n)).on("end.style."+e,Ite(e)):typeof t=="function"?this.styleTween(e,zHe(e,n,yy(this,"style."+e,t))).each(GHe(this._id,e)):this.styleTween(e,FHe(e,n,t),r).on("end.style."+e,null)}var Mte=F(()=>{"use strict";my();Ul();Js();Pb();iM();o($He,"styleNull");o(Ite,"styleRemove");o(FHe,"styleConstant");o(zHe,"styleFunction");o(GHe,"styleMaybeRemove");o(vM,"default")});function VHe(e,t,r){return function(n){this.style.setProperty(e,t.call(this,n),r)}}function WHe(e,t,r){var n,i;function a(){var s=t.apply(this,arguments);return s!==i&&(n=(i=s)&&VHe(e,s,r)),n}return o(a,"tween"),a._value=t,a}function xM(e,t,r){var n="style."+(e+="");if(arguments.length<2)return(n=this.tween(n))&&n._value;if(t==null)return this.tween(n,null);if(typeof t!="function")throw new Error;return this.tween(n,WHe(e,t,r??""))}var Nte=F(()=>{"use strict";o(VHe,"styleInterpolate");o(WHe,"styleTween");o(xM,"default")});function qHe(e){return function(){this.textContent=e}}function HHe(e){return function(){var t=e(this);this.textContent=t??""}}function bM(e){return this.tween("text",typeof e=="function"?HHe(yy(this,"text",e)):qHe(e==null?"":e+""))}var Pte=F(()=>{"use strict";Pb();o(qHe,"textConstant");o(HHe,"textFunction");o(bM,"default")});function UHe(e){return function(t){this.textContent=e.call(this,t)}}function YHe(e){var t,r;function n(){var i=e.apply(this,arguments);return i!==r&&(t=(r=i)&&UHe(i)),t}return o(n,"tween"),n._value=e,n}function TM(e){var t="text";if(arguments.length<1)return(t=this.tween(t))&&t._value;if(e==null)return this.tween(t,null);if(typeof e!="function")throw new Error;return this.tween(t,YHe(e))}var Ote=F(()=>{"use strict";o(UHe,"textInterpolate");o(YHe,"textTween");o(TM,"default")});function CM(){for(var e=this._name,t=this._id,r=JS(),n=this._groups,i=n.length,a=0;a<i;++a)for(var s=n[a],l=s.length,u,h=0;h<l;++h)if(u=s[h]){var d=aa(u,t);hh(u,e,r,h,s,{time:d.time+d.delay+d.duration,delay:0,duration:d.duration,ease:d.ease})}return new Es(n,this._parents,e,r)}var Bte=F(()=>{"use strict";em();Js();o(CM,"default")});function wM(){var e,t,r=this,n=r._id,i=r.size();return new Promise(function(a,s){var l={value:s},u={value:o(function(){--i===0&&a()},"value")};r.each(function(){var h=Ba(this,n),d=h.on;d!==e&&(t=(e=d).copy(),t._.cancel.push(l),t._.interrupt.push(l),t._.end.push(u)),h.on=t}),i===0&&a()})}var $te=F(()=>{"use strict";Js();o(wM,"default")});function Es(e,t,r,n){this._groups=e,this._parents=t,this._name=r,this._id=n}function Fte(e){return lh().transition(e)}function JS(){return++jHe}var jHe,dh,em=F(()=>{"use strict";Ul();xte();bte();Tte();Cte();wte();kte();Ste();Ete();Ate();Rte();_te();Lte();Dte();Mte();Nte();Pte();Ote();Bte();Pb();$te();jHe=0;o(Es,"Transition");o(Fte,"transition");o(JS,"newId");dh=lh.prototype;Es.prototype=Fte.prototype={constructor:Es,select:mM,selectAll:gM,selectChild:dh.selectChild,selectChildren:dh.selectChildren,filter:hM,merge:dM,selection:yM,transition:CM,call:dh.call,nodes:dh.nodes,node:dh.node,size:dh.size,empty:dh.empty,each:dh.each,on:fM,attr:aM,attrTween:sM,style:vM,styleTween:xM,text:bM,textTween:TM,remove:pM,tween:nM,delay:oM,duration:lM,ease:cM,easeVarying:uM,end:wM,[Symbol.iterator]:dh[Symbol.iterator]}});function eE(e){return((e*=2)<=1?e*e*e:(e-=2)*e*e+2)/2}var zte=F(()=>{"use strict";o(eE,"cubicInOut")});var kM=F(()=>{"use strict";zte()});function KHe(e,t){for(var r;!(r=e.__transition)||!(r=r[t]);)if(!(e=e.parentNode))throw new Error(`transition ${t} not found`);return r}function SM(e){var t,r;e instanceof Es?(t=e._id,e=e._name):(t=JS(),(r=XHe).time=Lb(),e=e==null?null:e+"");for(var n=this._groups,i=n.length,a=0;a<i;++a)for(var s=n[a],l=s.length,u,h=0;h<l;++h)(u=s[h])&&hh(u,e,t,h,s,r||KHe(u,t));return new Es(n,this._parents,e,t)}var XHe,Gte=F(()=>{"use strict";em();Js();kM();XS();XHe={time:null,delay:0,duration:250,ease:eE};o(KHe,"inherit");o(SM,"default")});var Vte=F(()=>{"use strict";Ul();vte();Gte();lh.prototype.interrupt=rM;lh.prototype.transition=SM});var tE=F(()=>{"use strict";Vte()});var Wte=F(()=>{"use strict"});var qte=F(()=>{"use strict"});var Hte=F(()=>{"use strict"});function Ute(e){return[+e[0],+e[1]]}function ZHe(e){return[Ute(e[0]),Ute(e[1])]}function EM(e){return{type:e}}var mjt,gjt,yjt,vjt,xjt,bjt,Yte=F(()=>{"use strict";tE();Wte();qte();Hte();({abs:mjt,max:gjt,min:yjt}=Math);o(Ute,"number1");o(ZHe,"number2");vjt={name:"x",handles:["w","e"].map(EM),input:o(function(e,t){return e==null?null:[[+e[0],t[0][1]],[+e[1],t[1][1]]]},"input"),output:o(function(e){return e&&[e[0][0],e[1][0]]},"output")},xjt={name:"y",handles:["n","s"].map(EM),input:o(function(e,t){return e==null?null:[[t[0][0],+e[0]],[t[1][0],+e[1]]]},"input"),output:o(function(e){return e&&[e[0][1],e[1][1]]},"output")},bjt={name:"xy",handles:["n","w","e","s","nw","ne","sw","se"].map(EM),input:o(function(e){return e==null?null:ZHe(e)},"input"),output:o(function(e){return e},"output")};o(EM,"type")});var jte=F(()=>{"use strict";Yte()});function Xte(e){this._+=e[0];for(let t=1,r=e.length;t<r;++t)this._+=arguments[t]+e[t]}function JHe(e){let t=Math.floor(e);if(!(t>=0))throw new Error(`invalid digits: ${e}`);if(t>15)return Xte;let r=10**t;return function(n){this._+=n[0];for(let i=1,a=n.length;i<a;++i)this._+=Math.round(arguments[i]*r)/r+n[i]}}function Kte(){return new rm}var AM,RM,tm,QHe,rm,Zte=F(()=>{"use strict";AM=Math.PI,RM=2*AM,tm=1e-6,QHe=RM-tm;o(Xte,"append");o(JHe,"appendRound");rm=class{static{o(this,"Path")}constructor(t){this._x0=this._y0=this._x1=this._y1=null,this._="",this._append=t==null?Xte:JHe(t)}moveTo(t,r){this._append`M${this._x0=this._x1=+t},${this._y0=this._y1=+r}`}closePath(){this._x1!==null&&(this._x1=this._x0,this._y1=this._y0,this._append`Z`)}lineTo(t,r){this._append`L${this._x1=+t},${this._y1=+r}`}quadraticCurveTo(t,r,n,i){this._append`Q${+t},${+r},${this._x1=+n},${this._y1=+i}`}bezierCurveTo(t,r,n,i,a,s){this._append`C${+t},${+r},${+n},${+i},${this._x1=+a},${this._y1=+s}`}arcTo(t,r,n,i,a){if(t=+t,r=+r,n=+n,i=+i,a=+a,a<0)throw new Error(`negative radius: ${a}`);let s=this._x1,l=this._y1,u=n-t,h=i-r,d=s-t,f=l-r,p=d*d+f*f;if(this._x1===null)this._append`M${this._x1=t},${this._y1=r}`;else if(p>tm)if(!(Math.abs(f*u-h*d)>tm)||!a)this._append`L${this._x1=t},${this._y1=r}`;else{let m=n-s,g=i-l,y=u*u+h*h,v=m*m+g*g,x=Math.sqrt(y),b=Math.sqrt(p),T=a*Math.tan((AM-Math.acos((y+p-v)/(2*x*b)))/2),k=T/b,C=T/x;Math.abs(k-1)>tm&&this._append`L${t+k*d},${r+k*f}`,this._append`A${a},${a},0,0,${+(f*m>d*g)},${this._x1=t+C*u},${this._y1=r+C*h}`}}arc(t,r,n,i,a,s){if(t=+t,r=+r,n=+n,s=!!s,n<0)throw new Error(`negative radius: ${n}`);let l=n*Math.cos(i),u=n*Math.sin(i),h=t+l,d=r+u,f=1^s,p=s?i-a:a-i;this._x1===null?this._append`M${h},${d}`:(Math.abs(this._x1-h)>tm||Math.abs(this._y1-d)>tm)&&this._append`L${h},${d}`,n&&(p<0&&(p=p%RM+RM),p>QHe?this._append`A${n},${n},0,1,${f},${t-l},${r-u}A${n},${n},0,1,${f},${this._x1=h},${this._y1=d}`:p>tm&&this._append`A${n},${n},0,${+(p>=AM)},${f},${this._x1=t+n*Math.cos(a)},${this._y1=r+n*Math.sin(a)}`)}rect(t,r,n,i){this._append`M${this._x0=this._x1=+t},${this._y0=this._y1=+r}h${n=+n}v${+i}h${-n}Z`}toString(){return this._}};o(Kte,"path");Kte.prototype=rm.prototype});var _M=F(()=>{"use strict";Zte()});var Qte=F(()=>{"use strict"});var Jte=F(()=>{"use strict"});var ere=F(()=>{"use strict"});var tre=F(()=>{"use strict"});var rre=F(()=>{"use strict"});var nre=F(()=>{"use strict"});var ire=F(()=>{"use strict"});function LM(e){return Math.abs(e=Math.round(e))>=1e21?e.toLocaleString("en").replace(/,/g,""):e.toString(10)}function nm(e,t){if((r=(e=t?e.toExponential(t-1):e.toExponential()).indexOf("e"))<0)return null;var r,n=e.slice(0,r);return[n.length>1?n[0]+n.slice(2):n,+e.slice(r+1)]}var Bb=F(()=>{"use strict";o(LM,"default");o(nm,"formatDecimalParts")});function Xl(e){return e=nm(Math.abs(e)),e?e[1]:NaN}var $b=F(()=>{"use strict";Bb();o(Xl,"default")});function DM(e,t){return function(r,n){for(var i=r.length,a=[],s=0,l=e[0],u=0;i>0&&l>0&&(u+l+1>n&&(l=Math.max(1,n-u)),a.push(r.substring(i-=l,i+l)),!((u+=l+1)>n));)l=e[s=(s+1)%e.length];return a.reverse().join(t)}}var are=F(()=>{"use strict";o(DM,"default")});function IM(e){return function(t){return t.replace(/[0-9]/g,function(r){return e[+r]})}}var sre=F(()=>{"use strict";o(IM,"default")});function Fd(e){if(!(t=eUe.exec(e)))throw new Error("invalid format: "+e);var t;return new rE({fill:t[1],align:t[2],sign:t[3],symbol:t[4],zero:t[5],width:t[6],comma:t[7],precision:t[8]&&t[8].slice(1),trim:t[9],type:t[10]})}function rE(e){this.fill=e.fill===void 0?" ":e.fill+"",this.align=e.align===void 0?">":e.align+"",this.sign=e.sign===void 0?"-":e.sign+"",this.symbol=e.symbol===void 0?"":e.symbol+"",this.zero=!!e.zero,this.width=e.width===void 0?void 0:+e.width,this.comma=!!e.comma,this.precision=e.precision===void 0?void 0:+e.precision,this.trim=!!e.trim,this.type=e.type===void 0?"":e.type+""}var eUe,MM=F(()=>{"use strict";eUe=/^(?:(.)?([<>=^]))?([+\-( ])?([$#])?(0)?(\d+)?(,)?(\.\d+)?(~)?([a-z%])?$/i;o(Fd,"formatSpecifier");Fd.prototype=rE.prototype;o(rE,"FormatSpecifier");rE.prototype.toString=function(){return this.fill+this.align+this.sign+this.symbol+(this.zero?"0":"")+(this.width===void 0?"":Math.max(1,this.width|0))+(this.comma?",":"")+(this.precision===void 0?"":"."+Math.max(0,this.precision|0))+(this.trim?"~":"")+this.type}});function NM(e){e:for(var t=e.length,r=1,n=-1,i;r<t;++r)switch(e[r]){case".":n=i=r;break;case"0":n===0&&(n=r),i=r;break;default:if(!+e[r])break e;n>0&&(n=0);break}return n>0?e.slice(0,n)+e.slice(i+1):e}var ore=F(()=>{"use strict";o(NM,"default")});function OM(e,t){var r=nm(e,t);if(!r)return e+"";var n=r[0],i=r[1],a=i-(PM=Math.max(-8,Math.min(8,Math.floor(i/3)))*3)+1,s=n.length;return a===s?n:a>s?n+new Array(a-s+1).join("0"):a>0?n.slice(0,a)+"."+n.slice(a):"0."+new Array(1-a).join("0")+nm(e,Math.max(0,t+a-1))[0]}var PM,BM=F(()=>{"use strict";Bb();o(OM,"default")});function nE(e,t){var r=nm(e,t);if(!r)return e+"";var n=r[0],i=r[1];return i<0?"0."+new Array(-i).join("0")+n:n.length>i+1?n.slice(0,i+1)+"."+n.slice(i+1):n+new Array(i-n.length+2).join("0")}var lre=F(()=>{"use strict";Bb();o(nE,"default")});var $M,cre=F(()=>{"use strict";Bb();BM();lre();$M={"%":o((e,t)=>(e*100).toFixed(t),"%"),b:o(e=>Math.round(e).toString(2),"b"),c:o(e=>e+"","c"),d:LM,e:o((e,t)=>e.toExponential(t),"e"),f:o((e,t)=>e.toFixed(t),"f"),g:o((e,t)=>e.toPrecision(t),"g"),o:o(e=>Math.round(e).toString(8),"o"),p:o((e,t)=>nE(e*100,t),"p"),r:nE,s:OM,X:o(e=>Math.round(e).toString(16).toUpperCase(),"X"),x:o(e=>Math.round(e).toString(16),"x")}});function iE(e){return e}var ure=F(()=>{"use strict";o(iE,"default")});function FM(e){var t=e.grouping===void 0||e.thousands===void 0?iE:DM(hre.call(e.grouping,Number),e.thousands+""),r=e.currency===void 0?"":e.currency[0]+"",n=e.currency===void 0?"":e.currency[1]+"",i=e.decimal===void 0?".":e.decimal+"",a=e.numerals===void 0?iE:IM(hre.call(e.numerals,String)),s=e.percent===void 0?"%":e.percent+"",l=e.minus===void 0?"\u2212":e.minus+"",u=e.nan===void 0?"NaN":e.nan+"";function h(f){f=Fd(f);var p=f.fill,m=f.align,g=f.sign,y=f.symbol,v=f.zero,x=f.width,b=f.comma,T=f.precision,k=f.trim,C=f.type;C==="n"?(b=!0,C="g"):$M[C]||(T===void 0&&(T=12),k=!0,C="g"),(v||p==="0"&&m==="=")&&(v=!0,p="0",m="=");var w=y==="$"?r:y==="#"&&/[boxX]/.test(C)?"0"+C.toLowerCase():"",S=y==="$"?n:/[%p]/.test(C)?s:"",R=$M[C],L=/[defgprs%]/.test(C);T=T===void 0?6:/[gprs]/.test(C)?Math.max(1,Math.min(21,T)):Math.max(0,Math.min(20,T));function N(I){var _=w,A=S,M,D,P;if(C==="c")A=R(I)+A,I="";else{I=+I;var B=I<0||1/I<0;if(I=isNaN(I)?u:R(Math.abs(I),T),k&&(I=NM(I)),B&&+I==0&&g!=="+"&&(B=!1),_=(B?g==="("?g:l:g==="-"||g==="("?"":g)+_,A=(C==="s"?dre[8+PM/3]:"")+A+(B&&g==="("?")":""),L){for(M=-1,D=I.length;++M<D;)if(P=I.charCodeAt(M),48>P||P>57){A=(P===46?i+I.slice(M+1):I.slice(M))+A,I=I.slice(0,M);break}}}b&&!v&&(I=t(I,1/0));var O=_.length+I.length+A.length,$=O<x?new Array(x-O+1).join(p):"";switch(b&&v&&(I=t($+I,$.length?x-A.length:1/0),$=""),m){case"<":I=_+I+A+$;break;case"=":I=_+$+I+A;break;case"^":I=$.slice(0,O=$.length>>1)+_+I+A+$.slice(O);break;default:I=$+_+I+A;break}return a(I)}return o(N,"format"),N.toString=function(){return f+""},N}o(h,"newFormat");function d(f,p){var m=h((f=Fd(f),f.type="f",f)),g=Math.max(-8,Math.min(8,Math.floor(Xl(p)/3)))*3,y=Math.pow(10,-g),v=dre[8+g/3];return function(x){return m(y*x)+v}}return o(d,"formatPrefix"),{format:h,formatPrefix:d}}var hre,dre,fre=F(()=>{"use strict";$b();are();sre();MM();ore();cre();BM();ure();hre=Array.prototype.map,dre=["y","z","a","f","p","n","\xB5","m","","k","M","G","T","P","E","Z","Y"];o(FM,"default")});function zM(e){return aE=FM(e),Xc=aE.format,sE=aE.formatPrefix,aE}var aE,Xc,sE,pre=F(()=>{"use strict";fre();zM({thousands:",",grouping:[3],currency:["$",""]});o(zM,"defaultLocale")});function oE(e){return Math.max(0,-Xl(Math.abs(e)))}var mre=F(()=>{"use strict";$b();o(oE,"default")});function lE(e,t){return Math.max(0,Math.max(-8,Math.min(8,Math.floor(Xl(t)/3)))*3-Xl(Math.abs(e)))}var gre=F(()=>{"use strict";$b();o(lE,"default")});function cE(e,t){return e=Math.abs(e),t=Math.abs(t)-e,Math.max(0,Xl(t)-Xl(e))+1}var yre=F(()=>{"use strict";$b();o(cE,"default")});var GM=F(()=>{"use strict";pre();MM();mre();gre();yre()});var vre=F(()=>{"use strict"});function tUe(e){var t=0,r=e.children,n=r&&r.length;if(!n)t=1;else for(;--n>=0;)t+=r[n].value;e.value=t}function VM(){return this.eachAfter(tUe)}var xre=F(()=>{"use strict";o(tUe,"count");o(VM,"default")});function WM(e,t){let r=-1;for(let n of this)e.call(t,n,++r,this);return this}var bre=F(()=>{"use strict";o(WM,"default")});function qM(e,t){for(var r=this,n=[r],i,a,s=-1;r=n.pop();)if(e.call(t,r,++s,this),i=r.children)for(a=i.length-1;a>=0;--a)n.push(i[a]);return this}var Tre=F(()=>{"use strict";o(qM,"default")});function HM(e,t){for(var r=this,n=[r],i=[],a,s,l,u=-1;r=n.pop();)if(i.push(r),a=r.children)for(s=0,l=a.length;s<l;++s)n.push(a[s]);for(;r=i.pop();)e.call(t,r,++u,this);return this}var Cre=F(()=>{"use strict";o(HM,"default")});function UM(e,t){let r=-1;for(let n of this)if(e.call(t,n,++r,this))return n}var wre=F(()=>{"use strict";o(UM,"default")});function YM(e){return this.eachAfter(function(t){for(var r=+e(t.data)||0,n=t.children,i=n&&n.length;--i>=0;)r+=n[i].value;t.value=r})}var kre=F(()=>{"use strict";o(YM,"default")});function jM(e){return this.eachBefore(function(t){t.children&&t.children.sort(e)})}var Sre=F(()=>{"use strict";o(jM,"default")});function XM(e){for(var t=this,r=rUe(t,e),n=[t];t!==r;)t=t.parent,n.push(t);for(var i=n.length;e!==r;)n.splice(i,0,e),e=e.parent;return n}function rUe(e,t){if(e===t)return e;var r=e.ancestors(),n=t.ancestors(),i=null;for(e=r.pop(),t=n.pop();e===t;)i=e,e=r.pop(),t=n.pop();return i}var Ere=F(()=>{"use strict";o(XM,"default");o(rUe,"leastCommonAncestor")});function KM(){for(var e=this,t=[e];e=e.parent;)t.push(e);return t}var Are=F(()=>{"use strict";o(KM,"default")});function ZM(){return Array.from(this)}var Rre=F(()=>{"use strict";o(ZM,"default")});function QM(){var e=[];return this.eachBefore(function(t){t.children||e.push(t)}),e}var _re=F(()=>{"use strict";o(QM,"default")});function JM(){var e=this,t=[];return e.each(function(r){r!==e&&t.push({source:r.parent,target:r})}),t}var Lre=F(()=>{"use strict";o(JM,"default")});function*eN(){var e=this,t,r=[e],n,i,a;do for(t=r.reverse(),r=[];e=t.pop();)if(yield e,n=e.children)for(i=0,a=n.length;i<a;++i)r.push(n[i]);while(r.length)}var Dre=F(()=>{"use strict";o(eN,"default")});function vy(e,t){e instanceof Map?(e=[void 0,e],t===void 0&&(t=aUe)):t===void 0&&(t=iUe);for(var r=new Fb(e),n,i=[r],a,s,l,u;n=i.pop();)if((s=t(n.data))&&(u=(s=Array.from(s)).length))for(n.children=s,l=u-1;l>=0;--l)i.push(a=s[l]=new Fb(s[l])),a.parent=n,a.depth=n.depth+1;return r.eachBefore(oUe)}function nUe(){return vy(this).eachBefore(sUe)}function iUe(e){return e.children}function aUe(e){return Array.isArray(e)?e[1]:null}function sUe(e){e.data.value!==void 0&&(e.value=e.data.value),e.data=e.data.data}function oUe(e){var t=0;do e.height=t;while((e=e.parent)&&e.height<++t)}function Fb(e){this.data=e,this.depth=this.height=0,this.parent=null}var Ire=F(()=>{"use strict";xre();bre();Tre();Cre();wre();kre();Sre();Ere();Are();Rre();_re();Lre();Dre();o(vy,"hierarchy");o(nUe,"node_copy");o(iUe,"objectChildren");o(aUe,"mapChildren");o(sUe,"copyData");o(oUe,"computeHeight");o(Fb,"Node");Fb.prototype=vy.prototype={constructor:Fb,count:VM,each:WM,eachAfter:HM,eachBefore:qM,find:UM,sum:YM,sort:jM,path:XM,ancestors:KM,descendants:ZM,leaves:QM,links:JM,copy:nUe,[Symbol.iterator]:eN}});function Mre(e){if(typeof e!="function")throw new Error;return e}var Nre=F(()=>{"use strict";o(Mre,"required")});function xy(){return 0}function im(e){return function(){return e}}var Pre=F(()=>{"use strict";o(xy,"constantZero");o(im,"default")});function tN(e){e.x0=Math.round(e.x0),e.y0=Math.round(e.y0),e.x1=Math.round(e.x1),e.y1=Math.round(e.y1)}var Ore=F(()=>{"use strict";o(tN,"default")});function rN(e,t,r,n,i){for(var a=e.children,s,l=-1,u=a.length,h=e.value&&(n-t)/e.value;++l<u;)s=a[l],s.y0=r,s.y1=i,s.x0=t,s.x1=t+=s.value*h}var Bre=F(()=>{"use strict";o(rN,"default")});function nN(e,t,r,n,i){for(var a=e.children,s,l=-1,u=a.length,h=e.value&&(i-r)/e.value;++l<u;)s=a[l],s.x0=t,s.x1=n,s.y0=r,s.y1=r+=s.value*h}var $re=F(()=>{"use strict";o(nN,"default")});function cUe(e,t,r,n,i,a){for(var s=[],l=t.children,u,h,d=0,f=0,p=l.length,m,g,y=t.value,v,x,b,T,k,C,w;d<p;){m=i-r,g=a-n;do v=l[f++].value;while(!v&&f<p);for(x=b=v,C=Math.max(g/m,m/g)/(y*e),w=v*v*C,k=Math.max(b/w,w/x);f<p;++f){if(v+=h=l[f].value,h<x&&(x=h),h>b&&(b=h),w=v*v*C,T=Math.max(b/w,w/x),T>k){v-=h;break}k=T}s.push(u={value:v,dice:m<g,children:l.slice(d,f)}),u.dice?rN(u,r,n,i,y?n+=g*v/y:a):nN(u,r,n,y?r+=m*v/y:i,a),y-=v,d=f}return s}var lUe,Fre,zre=F(()=>{"use strict";Bre();$re();lUe=(1+Math.sqrt(5))/2;o(cUe,"squarifyRatio");Fre=o((function e(t){function r(n,i,a,s,l){cUe(t,n,i,a,s,l)}return o(r,"squarify"),r.ratio=function(n){return e((n=+n)>1?n:1)},r}),"custom")(lUe)});function uE(){var e=Fre,t=!1,r=1,n=1,i=[0],a=xy,s=xy,l=xy,u=xy,h=xy;function d(p){return p.x0=p.y0=0,p.x1=r,p.y1=n,p.eachBefore(f),i=[0],t&&p.eachBefore(tN),p}o(d,"treemap");function f(p){var m=i[p.depth],g=p.x0+m,y=p.y0+m,v=p.x1-m,x=p.y1-m;v<g&&(g=v=(g+v)/2),x<y&&(y=x=(y+x)/2),p.x0=g,p.y0=y,p.x1=v,p.y1=x,p.children&&(m=i[p.depth+1]=a(p)/2,g+=h(p)-m,y+=s(p)-m,v-=l(p)-m,x-=u(p)-m,v<g&&(g=v=(g+v)/2),x<y&&(y=x=(y+x)/2),e(p,g,y,v,x))}return o(f,"positionNode"),d.round=function(p){return arguments.length?(t=!!p,d):t},d.size=function(p){return arguments.length?(r=+p[0],n=+p[1],d):[r,n]},d.tile=function(p){return arguments.length?(e=Mre(p),d):e},d.padding=function(p){return arguments.length?d.paddingInner(p).paddingOuter(p):d.paddingInner()},d.paddingInner=function(p){return arguments.length?(a=typeof p=="function"?p:im(+p),d):a},d.paddingOuter=function(p){return arguments.length?d.paddingTop(p).paddingRight(p).paddingBottom(p).paddingLeft(p):d.paddingTop()},d.paddingTop=function(p){return arguments.length?(s=typeof p=="function"?p:im(+p),d):s},d.paddingRight=function(p){return arguments.length?(l=typeof p=="function"?p:im(+p),d):l},d.paddingBottom=function(p){return arguments.length?(u=typeof p=="function"?p:im(+p),d):u},d.paddingLeft=function(p){return arguments.length?(h=typeof p=="function"?p:im(+p),d):h},d}var Gre=F(()=>{"use strict";Ore();zre();Nre();Pre();o(uE,"default")});var Vre=F(()=>{"use strict";Ire();Gre()});var Wre=F(()=>{"use strict"});var qre=F(()=>{"use strict"});function zd(e,t){switch(arguments.length){case 0:break;case 1:this.range(e);break;default:this.range(t).domain(e);break}return this}var zb=F(()=>{"use strict";o(zd,"initRange")});function Oo(){var e=new iy,t=[],r=[],n=iN;function i(a){let s=e.get(a);if(s===void 0){if(n!==iN)return n;e.set(a,s=t.push(a)-1)}return r[s%r.length]}return o(i,"scale"),i.domain=function(a){if(!arguments.length)return t.slice();t=[],e=new iy;for(let s of a)e.has(s)||e.set(s,t.push(s)-1);return i},i.range=function(a){return arguments.length?(r=Array.from(a),i):r.slice()},i.unknown=function(a){return arguments.length?(n=a,i):n},i.copy=function(){return Oo(t,r).unknown(n)},zd.apply(i,arguments),i}var iN,aN=F(()=>{"use strict";Md();zb();iN=Symbol("implicit");o(Oo,"ordinal")});function by(){var e=Oo().unknown(void 0),t=e.domain,r=e.range,n=0,i=1,a,s,l=!1,u=0,h=0,d=.5;delete e.unknown;function f(){var p=t().length,m=i<n,g=m?i:n,y=m?n:i;a=(y-g)/Math.max(1,p-u+h*2),l&&(a=Math.floor(a)),g+=(y-g-a*(p-u))*d,s=a*(1-u),l&&(g=Math.round(g),s=Math.round(s));var v=AS(p).map(function(x){return g+a*x});return r(m?v.reverse():v)}return o(f,"rescale"),e.domain=function(p){return arguments.length?(t(p),f()):t()},e.range=function(p){return arguments.length?([n,i]=p,n=+n,i=+i,f()):[n,i]},e.rangeRound=function(p){return[n,i]=p,n=+n,i=+i,l=!0,f()},e.bandwidth=function(){return s},e.step=function(){return a},e.round=function(p){return arguments.length?(l=!!p,f()):l},e.padding=function(p){return arguments.length?(u=Math.min(1,h=+p),f()):u},e.paddingInner=function(p){return arguments.length?(u=Math.min(1,p),f()):u},e.paddingOuter=function(p){return arguments.length?(h=+p,f()):h},e.align=function(p){return arguments.length?(d=Math.max(0,Math.min(1,p)),f()):d},e.copy=function(){return by(t(),[n,i]).round(l).paddingInner(u).paddingOuter(h).align(d)},zd.apply(f(),arguments)}var Hre=F(()=>{"use strict";Md();zb();aN();o(by,"band")});function sN(e){return function(){return e}}var Ure=F(()=>{"use strict";o(sN,"constants")});function oN(e){return+e}var Yre=F(()=>{"use strict";o(oN,"number")});function Ty(e){return e}function lN(e,t){return(t-=e=+e)?function(r){return(r-e)/t}:sN(isNaN(t)?NaN:.5)}function uUe(e,t){var r;return e>t&&(r=e,e=t,t=r),function(n){return Math.max(e,Math.min(t,n))}}function hUe(e,t,r){var n=e[0],i=e[1],a=t[0],s=t[1];return i<n?(n=lN(i,n),a=r(s,a)):(n=lN(n,i),a=r(a,s)),function(l){return a(n(l))}}function dUe(e,t,r){var n=Math.min(e.length,t.length)-1,i=new Array(n),a=new Array(n),s=-1;for(e[n]<e[0]&&(e=e.slice().reverse(),t=t.slice().reverse());++s<n;)i[s]=lN(e[s],e[s+1]),a[s]=r(t[s],t[s+1]);return function(l){var u=_8(e,l,1,n)-1;return a[u](i[u](l))}}function hE(e,t){return t.domain(e.domain()).range(e.range()).interpolate(e.interpolate()).clamp(e.clamp()).unknown(e.unknown())}function fUe(){var e=jre,t=jre,r=$d,n,i,a,s=Ty,l,u,h;function d(){var p=Math.min(e.length,t.length);return s!==Ty&&(s=uUe(e[0],e[p-1])),l=p>2?dUe:hUe,u=h=null,f}o(d,"rescale");function f(p){return p==null||isNaN(p=+p)?a:(u||(u=l(e.map(n),t,r)))(n(s(p)))}return o(f,"scale"),f.invert=function(p){return s(i((h||(h=l(t,e.map(n),va)))(p)))},f.domain=function(p){return arguments.length?(e=Array.from(p,oN),d()):e.slice()},f.range=function(p){return arguments.length?(t=Array.from(p),d()):t.slice()},f.rangeRound=function(p){return t=Array.from(p),r=GS,d()},f.clamp=function(p){return arguments.length?(s=p?!0:Ty,d()):s!==Ty},f.interpolate=function(p){return arguments.length?(r=p,d()):r},f.unknown=function(p){return arguments.length?(a=p,f):a},function(p,m){return n=p,i=m,d()}}function Gb(){return fUe()(Ty,Ty)}var jre,cN=F(()=>{"use strict";Md();my();Ure();Yre();jre=[0,1];o(Ty,"identity");o(lN,"normalize");o(uUe,"clamper");o(hUe,"bimap");o(dUe,"polymap");o(hE,"copy");o(fUe,"transformer");o(Gb,"continuous")});function uN(e,t,r,n){var i=ay(e,t,r),a;switch(n=Fd(n??",f"),n.type){case"s":{var s=Math.max(Math.abs(e),Math.abs(t));return n.precision==null&&!isNaN(a=lE(i,s))&&(n.precision=a),sE(n,s)}case"":case"e":case"g":case"p":case"r":{n.precision==null&&!isNaN(a=cE(i,Math.max(Math.abs(e),Math.abs(t))))&&(n.precision=a-(n.type==="e"));break}case"f":case"%":{n.precision==null&&!isNaN(a=oE(i))&&(n.precision=a-(n.type==="%")*2);break}}return Xc(n)}var Xre=F(()=>{"use strict";Md();GM();o(uN,"tickFormat")});function pUe(e){var t=e.domain;return e.ticks=function(r){var n=t();return kS(n[0],n[n.length-1],r??10)},e.tickFormat=function(r,n){var i=t();return uN(i[0],i[i.length-1],r??10,n)},e.nice=function(r){r==null&&(r=10);var n=t(),i=0,a=n.length-1,s=n[i],l=n[a],u,h,d=10;for(l<s&&(h=s,s=l,l=h,h=i,i=a,a=h);d-- >0;){if(h=mb(s,l,r),h===u)return n[i]=s,n[a]=l,t(n);if(h>0)s=Math.floor(s/h)*h,l=Math.ceil(l/h)*h;else if(h<0)s=Math.ceil(s*h)/h,l=Math.floor(l*h)/h;else break;u=h}return e},e}function Kl(){var e=Gb();return e.copy=function(){return hE(e,Kl())},zd.apply(e,arguments),pUe(e)}var Kre=F(()=>{"use strict";Md();cN();zb();Xre();o(pUe,"linearish");o(Kl,"linear")});function hN(e,t){e=e.slice();var r=0,n=e.length-1,i=e[r],a=e[n],s;return a<i&&(s=r,r=n,n=s,s=i,i=a,a=s),e[r]=t.floor(i),e[n]=t.ceil(a),e}var Zre=F(()=>{"use strict";o(hN,"nice")});function qn(e,t,r,n){function i(a){return e(a=arguments.length===0?new Date:new Date(+a)),a}return o(i,"interval"),i.floor=a=>(e(a=new Date(+a)),a),i.ceil=a=>(e(a=new Date(a-1)),t(a,1),e(a),a),i.round=a=>{let s=i(a),l=i.ceil(a);return a-s<l-a?s:l},i.offset=(a,s)=>(t(a=new Date(+a),s==null?1:Math.floor(s)),a),i.range=(a,s,l)=>{let u=[];if(a=i.ceil(a),l=l==null?1:Math.floor(l),!(a<s)||!(l>0))return u;let h;do u.push(h=new Date(+a)),t(a,l),e(a);while(h<a&&a<s);return u},i.filter=a=>qn(s=>{if(s>=s)for(;e(s),!a(s);)s.setTime(s-1)},(s,l)=>{if(s>=s)if(l<0)for(;++l<=0;)for(;t(s,-1),!a(s););else for(;--l>=0;)for(;t(s,1),!a(s););}),r&&(i.count=(a,s)=>(dN.setTime(+a),fN.setTime(+s),e(dN),e(fN),Math.floor(r(dN,fN))),i.every=a=>(a=Math.floor(a),!isFinite(a)||!(a>0)?null:a>1?i.filter(n?s=>n(s)%a===0:s=>i.count(0,s)%a===0):i)),i}var dN,fN,fh=F(()=>{"use strict";dN=new Date,fN=new Date;o(qn,"timeInterval")});var Kc,Qre,pN=F(()=>{"use strict";fh();Kc=qn(()=>{},(e,t)=>{e.setTime(+e+t)},(e,t)=>t-e);Kc.every=e=>(e=Math.floor(e),!isFinite(e)||!(e>0)?null:e>1?qn(t=>{t.setTime(Math.floor(t/e)*e)},(t,r)=>{t.setTime(+t+r*e)},(t,r)=>(r-t)/e):Kc);Qre=Kc.range});var Bo,Jre,mN=F(()=>{"use strict";fh();Bo=qn(e=>{e.setTime(e-e.getMilliseconds())},(e,t)=>{e.setTime(+e+t*1e3)},(e,t)=>(t-e)/1e3,e=>e.getUTCSeconds()),Jre=Bo.range});var ph,mUe,dE,gUe,gN=F(()=>{"use strict";fh();ph=qn(e=>{e.setTime(e-e.getMilliseconds()-e.getSeconds()*1e3)},(e,t)=>{e.setTime(+e+t*6e4)},(e,t)=>(t-e)/6e4,e=>e.getMinutes()),mUe=ph.range,dE=qn(e=>{e.setUTCSeconds(0,0)},(e,t)=>{e.setTime(+e+t*6e4)},(e,t)=>(t-e)/6e4,e=>e.getUTCMinutes()),gUe=dE.range});var mh,yUe,fE,vUe,yN=F(()=>{"use strict";fh();mh=qn(e=>{e.setTime(e-e.getMilliseconds()-e.getSeconds()*1e3-e.getMinutes()*6e4)},(e,t)=>{e.setTime(+e+t*36e5)},(e,t)=>(t-e)/36e5,e=>e.getHours()),yUe=mh.range,fE=qn(e=>{e.setUTCMinutes(0,0,0)},(e,t)=>{e.setTime(+e+t*36e5)},(e,t)=>(t-e)/36e5,e=>e.getUTCHours()),vUe=fE.range});var hl,xUe,Wb,bUe,pE,TUe,vN=F(()=>{"use strict";fh();hl=qn(e=>e.setHours(0,0,0,0),(e,t)=>e.setDate(e.getDate()+t),(e,t)=>(t-e-(t.getTimezoneOffset()-e.getTimezoneOffset())*6e4)/864e5,e=>e.getDate()-1),xUe=hl.range,Wb=qn(e=>{e.setUTCHours(0,0,0,0)},(e,t)=>{e.setUTCDate(e.getUTCDate()+t)},(e,t)=>(t-e)/864e5,e=>e.getUTCDate()-1),bUe=Wb.range,pE=qn(e=>{e.setUTCHours(0,0,0,0)},(e,t)=>{e.setUTCDate(e.getUTCDate()+t)},(e,t)=>(t-e)/864e5,e=>Math.floor(e/864e5)),TUe=pE.range});function om(e){return qn(t=>{t.setDate(t.getDate()-(t.getDay()+7-e)%7),t.setHours(0,0,0,0)},(t,r)=>{t.setDate(t.getDate()+r*7)},(t,r)=>(r-t-(r.getTimezoneOffset()-t.getTimezoneOffset())*6e4)/6048e5)}function lm(e){return qn(t=>{t.setUTCDate(t.getUTCDate()-(t.getUTCDay()+7-e)%7),t.setUTCHours(0,0,0,0)},(t,r)=>{t.setUTCDate(t.getUTCDate()+r*7)},(t,r)=>(r-t)/6048e5)}var Zl,Gd,mE,gE,Qc,yE,vE,tne,CUe,wUe,kUe,SUe,EUe,AUe,cm,Cy,rne,nne,Vd,ine,ane,sne,RUe,_Ue,LUe,DUe,IUe,MUe,xN=F(()=>{"use strict";fh();o(om,"timeWeekday");Zl=om(0),Gd=om(1),mE=om(2),gE=om(3),Qc=om(4),yE=om(5),vE=om(6),tne=Zl.range,CUe=Gd.range,wUe=mE.range,kUe=gE.range,SUe=Qc.range,EUe=yE.range,AUe=vE.range;o(lm,"utcWeekday");cm=lm(0),Cy=lm(1),rne=lm(2),nne=lm(3),Vd=lm(4),ine=lm(5),ane=lm(6),sne=cm.range,RUe=Cy.range,_Ue=rne.range,LUe=nne.range,DUe=Vd.range,IUe=ine.range,MUe=ane.range});var gh,NUe,xE,PUe,bN=F(()=>{"use strict";fh();gh=qn(e=>{e.setDate(1),e.setHours(0,0,0,0)},(e,t)=>{e.setMonth(e.getMonth()+t)},(e,t)=>t.getMonth()-e.getMonth()+(t.getFullYear()-e.getFullYear())*12,e=>e.getMonth()),NUe=gh.range,xE=qn(e=>{e.setUTCDate(1),e.setUTCHours(0,0,0,0)},(e,t)=>{e.setUTCMonth(e.getUTCMonth()+t)},(e,t)=>t.getUTCMonth()-e.getUTCMonth()+(t.getUTCFullYear()-e.getUTCFullYear())*12,e=>e.getUTCMonth()),PUe=xE.range});var $o,OUe,Ql,BUe,TN=F(()=>{"use strict";fh();$o=qn(e=>{e.setMonth(0,1),e.setHours(0,0,0,0)},(e,t)=>{e.setFullYear(e.getFullYear()+t)},(e,t)=>t.getFullYear()-e.getFullYear(),e=>e.getFullYear());$o.every=e=>!isFinite(e=Math.floor(e))||!(e>0)?null:qn(t=>{t.setFullYear(Math.floor(t.getFullYear()/e)*e),t.setMonth(0,1),t.setHours(0,0,0,0)},(t,r)=>{t.setFullYear(t.getFullYear()+r*e)});OUe=$o.range,Ql=qn(e=>{e.setUTCMonth(0,1),e.setUTCHours(0,0,0,0)},(e,t)=>{e.setUTCFullYear(e.getUTCFullYear()+t)},(e,t)=>t.getUTCFullYear()-e.getUTCFullYear(),e=>e.getUTCFullYear());Ql.every=e=>!isFinite(e=Math.floor(e))||!(e>0)?null:qn(t=>{t.setUTCFullYear(Math.floor(t.getUTCFullYear()/e)*e),t.setUTCMonth(0,1),t.setUTCHours(0,0,0,0)},(t,r)=>{t.setUTCFullYear(t.getUTCFullYear()+r*e)});BUe=Ql.range});function lne(e,t,r,n,i,a){let s=[[Bo,1,1e3],[Bo,5,5*1e3],[Bo,15,15*1e3],[Bo,30,30*1e3],[a,1,6e4],[a,5,5*6e4],[a,15,15*6e4],[a,30,30*6e4],[i,1,36e5],[i,3,3*36e5],[i,6,6*36e5],[i,12,12*36e5],[n,1,864e5],[n,2,2*864e5],[r,1,6048e5],[t,1,2592e6],[t,3,3*2592e6],[e,1,31536e6]];function l(h,d,f){let p=d<h;p&&([h,d]=[d,h]);let m=f&&typeof f.range=="function"?f:u(h,d,f),g=m?m.range(h,+d+1):[];return p?g.reverse():g}o(l,"ticks");function u(h,d,f){let p=Math.abs(d-h)/f,m=Xp(([,,v])=>v).right(s,p);if(m===s.length)return e.every(ay(h/31536e6,d/31536e6,f));if(m===0)return Kc.every(Math.max(ay(h,d,f),1));let[g,y]=s[p/s[m-1][2]<s[m][2]/p?m-1:m];return g.every(y)}return o(u,"tickInterval"),[l,u]}var FUe,zUe,CN,wN,cne=F(()=>{"use strict";Md();pN();mN();gN();yN();vN();xN();bN();TN();o(lne,"ticker");[FUe,zUe]=lne(Ql,xE,cm,pE,fE,dE),[CN,wN]=lne($o,gh,Zl,hl,mh,ph)});var bE=F(()=>{"use strict";pN();mN();gN();yN();vN();xN();bN();TN();cne()});function kN(e){if(0<=e.y&&e.y<100){var t=new Date(-1,e.m,e.d,e.H,e.M,e.S,e.L);return t.setFullYear(e.y),t}return new Date(e.y,e.m,e.d,e.H,e.M,e.S,e.L)}function SN(e){if(0<=e.y&&e.y<100){var t=new Date(Date.UTC(-1,e.m,e.d,e.H,e.M,e.S,e.L));return t.setUTCFullYear(e.y),t}return new Date(Date.UTC(e.y,e.m,e.d,e.H,e.M,e.S,e.L))}function qb(e,t,r){return{y:e,m:t,d:r,H:0,M:0,S:0,L:0}}function EN(e){var t=e.dateTime,r=e.date,n=e.time,i=e.periods,a=e.days,s=e.shortDays,l=e.months,u=e.shortMonths,h=Hb(i),d=Ub(i),f=Hb(a),p=Ub(a),m=Hb(s),g=Ub(s),y=Hb(l),v=Ub(l),x=Hb(u),b=Ub(u),T={a:B,A:O,b:$,B:V,c:null,d:mne,e:mne,f:cYe,g:xYe,G:TYe,H:sYe,I:oYe,j:lYe,L:bne,m:uYe,M:hYe,p:G,q:z,Q:vne,s:xne,S:dYe,u:fYe,U:pYe,V:mYe,w:gYe,W:yYe,x:null,X:null,y:vYe,Y:bYe,Z:CYe,"%":yne},k={a:W,A:H,b:j,B:Q,c:null,d:gne,e:gne,f:EYe,g:OYe,G:$Ye,H:wYe,I:kYe,j:SYe,L:Cne,m:AYe,M:RYe,p:U,q:oe,Q:vne,s:xne,S:_Ye,u:LYe,U:DYe,V:IYe,w:MYe,W:NYe,x:null,X:null,y:PYe,Y:BYe,Z:FYe,"%":yne},C={a:N,A:I,b:_,B:A,c:M,d:fne,e:fne,f:rYe,g:dne,G:hne,H:pne,I:pne,j:QUe,L:tYe,m:ZUe,M:JUe,p:L,q:KUe,Q:iYe,s:aYe,S:eYe,u:HUe,U:UUe,V:YUe,w:qUe,W:jUe,x:D,X:P,y:dne,Y:hne,Z:XUe,"%":nYe};T.x=w(r,T),T.X=w(n,T),T.c=w(t,T),k.x=w(r,k),k.X=w(n,k),k.c=w(t,k);function w(te,le){return function(ie){var ae=[],Re=-1,be=0,Pe=te.length,Ge,Oe,ue;for(ie instanceof Date||(ie=new Date(+ie));++Re<Pe;)te.charCodeAt(Re)===37&&(ae.push(te.slice(be,Re)),(Oe=une[Ge=te.charAt(++Re)])!=null?Ge=te.charAt(++Re):Oe=Ge==="e"?" ":"0",(ue=le[Ge])&&(Ge=ue(ie,Oe)),ae.push(Ge),be=Re+1);return ae.push(te.slice(be,Re)),ae.join("")}}o(w,"newFormat");function S(te,le){return function(ie){var ae=qb(1900,void 0,1),Re=R(ae,te,ie+="",0),be,Pe;if(Re!=ie.length)return null;if("Q"in ae)return new Date(ae.Q);if("s"in ae)return new Date(ae.s*1e3+("L"in ae?ae.L:0));if(le&&!("Z"in ae)&&(ae.Z=0),"p"in ae&&(ae.H=ae.H%12+ae.p*12),ae.m===void 0&&(ae.m="q"in ae?ae.q:0),"V"in ae){if(ae.V<1||ae.V>53)return null;"w"in ae||(ae.w=1),"Z"in ae?(be=SN(qb(ae.y,0,1)),Pe=be.getUTCDay(),be=Pe>4||Pe===0?Cy.ceil(be):Cy(be),be=Wb.offset(be,(ae.V-1)*7),ae.y=be.getUTCFullYear(),ae.m=be.getUTCMonth(),ae.d=be.getUTCDate()+(ae.w+6)%7):(be=kN(qb(ae.y,0,1)),Pe=be.getDay(),be=Pe>4||Pe===0?Gd.ceil(be):Gd(be),be=hl.offset(be,(ae.V-1)*7),ae.y=be.getFullYear(),ae.m=be.getMonth(),ae.d=be.getDate()+(ae.w+6)%7)}else("W"in ae||"U"in ae)&&("w"in ae||(ae.w="u"in ae?ae.u%7:"W"in ae?1:0),Pe="Z"in ae?SN(qb(ae.y,0,1)).getUTCDay():kN(qb(ae.y,0,1)).getDay(),ae.m=0,ae.d="W"in ae?(ae.w+6)%7+ae.W*7-(Pe+5)%7:ae.w+ae.U*7-(Pe+6)%7);return"Z"in ae?(ae.H+=ae.Z/100|0,ae.M+=ae.Z%100,SN(ae)):kN(ae)}}o(S,"newParse");function R(te,le,ie,ae){for(var Re=0,be=le.length,Pe=ie.length,Ge,Oe;Re<be;){if(ae>=Pe)return-1;if(Ge=le.charCodeAt(Re++),Ge===37){if(Ge=le.charAt(Re++),Oe=C[Ge in une?le.charAt(Re++):Ge],!Oe||(ae=Oe(te,ie,ae))<0)return-1}else if(Ge!=ie.charCodeAt(ae++))return-1}return ae}o(R,"parseSpecifier");function L(te,le,ie){var ae=h.exec(le.slice(ie));return ae?(te.p=d.get(ae[0].toLowerCase()),ie+ae[0].length):-1}o(L,"parsePeriod");function N(te,le,ie){var ae=m.exec(le.slice(ie));return ae?(te.w=g.get(ae[0].toLowerCase()),ie+ae[0].length):-1}o(N,"parseShortWeekday");function I(te,le,ie){var ae=f.exec(le.slice(ie));return ae?(te.w=p.get(ae[0].toLowerCase()),ie+ae[0].length):-1}o(I,"parseWeekday");function _(te,le,ie){var ae=x.exec(le.slice(ie));return ae?(te.m=b.get(ae[0].toLowerCase()),ie+ae[0].length):-1}o(_,"parseShortMonth");function A(te,le,ie){var ae=y.exec(le.slice(ie));return ae?(te.m=v.get(ae[0].toLowerCase()),ie+ae[0].length):-1}o(A,"parseMonth");function M(te,le,ie){return R(te,t,le,ie)}o(M,"parseLocaleDateTime");function D(te,le,ie){return R(te,r,le,ie)}o(D,"parseLocaleDate");function P(te,le,ie){return R(te,n,le,ie)}o(P,"parseLocaleTime");function B(te){return s[te.getDay()]}o(B,"formatShortWeekday");function O(te){return a[te.getDay()]}o(O,"formatWeekday");function $(te){return u[te.getMonth()]}o($,"formatShortMonth");function V(te){return l[te.getMonth()]}o(V,"formatMonth");function G(te){return i[+(te.getHours()>=12)]}o(G,"formatPeriod");function z(te){return 1+~~(te.getMonth()/3)}o(z,"formatQuarter");function W(te){return s[te.getUTCDay()]}o(W,"formatUTCShortWeekday");function H(te){return a[te.getUTCDay()]}o(H,"formatUTCWeekday");function j(te){return u[te.getUTCMonth()]}o(j,"formatUTCShortMonth");function Q(te){return l[te.getUTCMonth()]}o(Q,"formatUTCMonth");function U(te){return i[+(te.getUTCHours()>=12)]}o(U,"formatUTCPeriod");function oe(te){return 1+~~(te.getUTCMonth()/3)}return o(oe,"formatUTCQuarter"),{format:o(function(te){var le=w(te+="",T);return le.toString=function(){return te},le},"format"),parse:o(function(te){var le=S(te+="",!1);return le.toString=function(){return te},le},"parse"),utcFormat:o(function(te){var le=w(te+="",k);return le.toString=function(){return te},le},"utcFormat"),utcParse:o(function(te){var le=S(te+="",!0);return le.toString=function(){return te},le},"utcParse")}}function pn(e,t,r){var n=e<0?"-":"",i=(n?-e:e)+"",a=i.length;return n+(a<r?new Array(r-a+1).join(t)+i:i)}function WUe(e){return e.replace(VUe,"\\$&")}function Hb(e){return new RegExp("^(?:"+e.map(WUe).join("|")+")","i")}function Ub(e){return new Map(e.map((t,r)=>[t.toLowerCase(),r]))}function qUe(e,t,r){var n=xa.exec(t.slice(r,r+1));return n?(e.w=+n[0],r+n[0].length):-1}function HUe(e,t,r){var n=xa.exec(t.slice(r,r+1));return n?(e.u=+n[0],r+n[0].length):-1}function UUe(e,t,r){var n=xa.exec(t.slice(r,r+2));return n?(e.U=+n[0],r+n[0].length):-1}function YUe(e,t,r){var n=xa.exec(t.slice(r,r+2));return n?(e.V=+n[0],r+n[0].length):-1}function jUe(e,t,r){var n=xa.exec(t.slice(r,r+2));return n?(e.W=+n[0],r+n[0].length):-1}function hne(e,t,r){var n=xa.exec(t.slice(r,r+4));return n?(e.y=+n[0],r+n[0].length):-1}function dne(e,t,r){var n=xa.exec(t.slice(r,r+2));return n?(e.y=+n[0]+(+n[0]>68?1900:2e3),r+n[0].length):-1}function XUe(e,t,r){var n=/^(Z)|([+-]\d\d)(?::?(\d\d))?/.exec(t.slice(r,r+6));return n?(e.Z=n[1]?0:-(n[2]+(n[3]||"00")),r+n[0].length):-1}function KUe(e,t,r){var n=xa.exec(t.slice(r,r+1));return n?(e.q=n[0]*3-3,r+n[0].length):-1}function ZUe(e,t,r){var n=xa.exec(t.slice(r,r+2));return n?(e.m=n[0]-1,r+n[0].length):-1}function fne(e,t,r){var n=xa.exec(t.slice(r,r+2));return n?(e.d=+n[0],r+n[0].length):-1}function QUe(e,t,r){var n=xa.exec(t.slice(r,r+3));return n?(e.m=0,e.d=+n[0],r+n[0].length):-1}function pne(e,t,r){var n=xa.exec(t.slice(r,r+2));return n?(e.H=+n[0],r+n[0].length):-1}function JUe(e,t,r){var n=xa.exec(t.slice(r,r+2));return n?(e.M=+n[0],r+n[0].length):-1}function eYe(e,t,r){var n=xa.exec(t.slice(r,r+2));return n?(e.S=+n[0],r+n[0].length):-1}function tYe(e,t,r){var n=xa.exec(t.slice(r,r+3));return n?(e.L=+n[0],r+n[0].length):-1}function rYe(e,t,r){var n=xa.exec(t.slice(r,r+6));return n?(e.L=Math.floor(n[0]/1e3),r+n[0].length):-1}function nYe(e,t,r){var n=GUe.exec(t.slice(r,r+1));return n?r+n[0].length:-1}function iYe(e,t,r){var n=xa.exec(t.slice(r));return n?(e.Q=+n[0],r+n[0].length):-1}function aYe(e,t,r){var n=xa.exec(t.slice(r));return n?(e.s=+n[0],r+n[0].length):-1}function mne(e,t){return pn(e.getDate(),t,2)}function sYe(e,t){return pn(e.getHours(),t,2)}function oYe(e,t){return pn(e.getHours()%12||12,t,2)}function lYe(e,t){return pn(1+hl.count($o(e),e),t,3)}function bne(e,t){return pn(e.getMilliseconds(),t,3)}function cYe(e,t){return bne(e,t)+"000"}function uYe(e,t){return pn(e.getMonth()+1,t,2)}function hYe(e,t){return pn(e.getMinutes(),t,2)}function dYe(e,t){return pn(e.getSeconds(),t,2)}function fYe(e){var t=e.getDay();return t===0?7:t}function pYe(e,t){return pn(Zl.count($o(e)-1,e),t,2)}function Tne(e){var t=e.getDay();return t>=4||t===0?Qc(e):Qc.ceil(e)}function mYe(e,t){return e=Tne(e),pn(Qc.count($o(e),e)+($o(e).getDay()===4),t,2)}function gYe(e){return e.getDay()}function yYe(e,t){return pn(Gd.count($o(e)-1,e),t,2)}function vYe(e,t){return pn(e.getFullYear()%100,t,2)}function xYe(e,t){return e=Tne(e),pn(e.getFullYear()%100,t,2)}function bYe(e,t){return pn(e.getFullYear()%1e4,t,4)}function TYe(e,t){var r=e.getDay();return e=r>=4||r===0?Qc(e):Qc.ceil(e),pn(e.getFullYear()%1e4,t,4)}function CYe(e){var t=e.getTimezoneOffset();return(t>0?"-":(t*=-1,"+"))+pn(t/60|0,"0",2)+pn(t%60,"0",2)}function gne(e,t){return pn(e.getUTCDate(),t,2)}function wYe(e,t){return pn(e.getUTCHours(),t,2)}function kYe(e,t){return pn(e.getUTCHours()%12||12,t,2)}function SYe(e,t){return pn(1+Wb.count(Ql(e),e),t,3)}function Cne(e,t){return pn(e.getUTCMilliseconds(),t,3)}function EYe(e,t){return Cne(e,t)+"000"}function AYe(e,t){return pn(e.getUTCMonth()+1,t,2)}function RYe(e,t){return pn(e.getUTCMinutes(),t,2)}function _Ye(e,t){return pn(e.getUTCSeconds(),t,2)}function LYe(e){var t=e.getUTCDay();return t===0?7:t}function DYe(e,t){return pn(cm.count(Ql(e)-1,e),t,2)}function wne(e){var t=e.getUTCDay();return t>=4||t===0?Vd(e):Vd.ceil(e)}function IYe(e,t){return e=wne(e),pn(Vd.count(Ql(e),e)+(Ql(e).getUTCDay()===4),t,2)}function MYe(e){return e.getUTCDay()}function NYe(e,t){return pn(Cy.count(Ql(e)-1,e),t,2)}function PYe(e,t){return pn(e.getUTCFullYear()%100,t,2)}function OYe(e,t){return e=wne(e),pn(e.getUTCFullYear()%100,t,2)}function BYe(e,t){return pn(e.getUTCFullYear()%1e4,t,4)}function $Ye(e,t){var r=e.getUTCDay();return e=r>=4||r===0?Vd(e):Vd.ceil(e),pn(e.getUTCFullYear()%1e4,t,4)}function FYe(){return"+0000"}function yne(){return"%"}function vne(e){return+e}function xne(e){return Math.floor(+e/1e3)}var une,xa,GUe,VUe,kne=F(()=>{"use strict";bE();o(kN,"localDate");o(SN,"utcDate");o(qb,"newDate");o(EN,"formatLocale");une={"-":"",_:" ",0:"0"},xa=/^\s*\d+/,GUe=/^%/,VUe=/[\\^$*+?|[\]().{}]/g;o(pn,"pad");o(WUe,"requote");o(Hb,"formatRe");o(Ub,"formatLookup");o(qUe,"parseWeekdayNumberSunday");o(HUe,"parseWeekdayNumberMonday");o(UUe,"parseWeekNumberSunday");o(YUe,"parseWeekNumberISO");o(jUe,"parseWeekNumberMonday");o(hne,"parseFullYear");o(dne,"parseYear");o(XUe,"parseZone");o(KUe,"parseQuarter");o(ZUe,"parseMonthNumber");o(fne,"parseDayOfMonth");o(QUe,"parseDayOfYear");o(pne,"parseHour24");o(JUe,"parseMinutes");o(eYe,"parseSeconds");o(tYe,"parseMilliseconds");o(rYe,"parseMicroseconds");o(nYe,"parseLiteralPercent");o(iYe,"parseUnixTimestamp");o(aYe,"parseUnixTimestampSeconds");o(mne,"formatDayOfMonth");o(sYe,"formatHour24");o(oYe,"formatHour12");o(lYe,"formatDayOfYear");o(bne,"formatMilliseconds");o(cYe,"formatMicroseconds");o(uYe,"formatMonthNumber");o(hYe,"formatMinutes");o(dYe,"formatSeconds");o(fYe,"formatWeekdayNumberMonday");o(pYe,"formatWeekNumberSunday");o(Tne,"dISO");o(mYe,"formatWeekNumberISO");o(gYe,"formatWeekdayNumberSunday");o(yYe,"formatWeekNumberMonday");o(vYe,"formatYear");o(xYe,"formatYearISO");o(bYe,"formatFullYear");o(TYe,"formatFullYearISO");o(CYe,"formatZone");o(gne,"formatUTCDayOfMonth");o(wYe,"formatUTCHour24");o(kYe,"formatUTCHour12");o(SYe,"formatUTCDayOfYear");o(Cne,"formatUTCMilliseconds");o(EYe,"formatUTCMicroseconds");o(AYe,"formatUTCMonthNumber");o(RYe,"formatUTCMinutes");o(_Ye,"formatUTCSeconds");o(LYe,"formatUTCWeekdayNumberMonday");o(DYe,"formatUTCWeekNumberSunday");o(wne,"UTCdISO");o(IYe,"formatUTCWeekNumberISO");o(MYe,"formatUTCWeekdayNumberSunday");o(NYe,"formatUTCWeekNumberMonday");o(PYe,"formatUTCYear");o(OYe,"formatUTCYearISO");o(BYe,"formatUTCFullYear");o($Ye,"formatUTCFullYearISO");o(FYe,"formatUTCZone");o(yne,"formatLiteralPercent");o(vne,"formatUnixTimestamp");o(xne,"formatUnixTimestampSeconds")});function AN(e){return wy=EN(e),um=wy.format,Sne=wy.parse,Ene=wy.utcFormat,Ane=wy.utcParse,wy}var wy,um,Sne,Ene,Ane,Rne=F(()=>{"use strict";kne();AN({dateTime:"%x, %X",date:"%-m/%-d/%Y",time:"%-I:%M:%S %p",periods:["AM","PM"],days:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],shortDays:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],months:["January","February","March","April","May","June","July","August","September","October","November","December"],shortMonths:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"]});o(AN,"defaultLocale")});var RN=F(()=>{"use strict";Rne()});function zYe(e){return new Date(e)}function GYe(e){return e instanceof Date?+e:+new Date(+e)}function _ne(e,t,r,n,i,a,s,l,u,h){var d=Gb(),f=d.invert,p=d.domain,m=h(".%L"),g=h(":%S"),y=h("%I:%M"),v=h("%I %p"),x=h("%a %d"),b=h("%b %d"),T=h("%B"),k=h("%Y");function C(w){return(u(w)<w?m:l(w)<w?g:s(w)<w?y:a(w)<w?v:n(w)<w?i(w)<w?x:b:r(w)<w?T:k)(w)}return o(C,"tickFormat"),d.invert=function(w){return new Date(f(w))},d.domain=function(w){return arguments.length?p(Array.from(w,GYe)):p().map(zYe)},d.ticks=function(w){var S=p();return e(S[0],S[S.length-1],w??10)},d.tickFormat=function(w,S){return S==null?C:h(S)},d.nice=function(w){var S=p();return(!w||typeof w.range!="function")&&(w=t(S[0],S[S.length-1],w??10)),w?p(hN(S,w)):d},d.copy=function(){return hE(d,_ne(e,t,r,n,i,a,s,l,u,h))},d}function TE(){return zd.apply(_ne(CN,wN,$o,gh,Zl,hl,mh,ph,Bo,um).domain([new Date(2e3,0,1),new Date(2e3,0,2)]),arguments)}var Lne=F(()=>{"use strict";bE();RN();cN();zb();Zre();o(zYe,"date");o(GYe,"number");o(_ne,"calendar");o(TE,"time")});var Dne=F(()=>{"use strict";Hre();Kre();aN();Lne()});function _N(e){for(var t=e.length/6|0,r=new Array(t),n=0;n<t;)r[n]="#"+e.slice(n*6,++n*6);return r}var Ine=F(()=>{"use strict";o(_N,"default")});var LN,Mne=F(()=>{"use strict";Ine();LN=_N("4e79a7f28e2ce1575976b7b259a14fedc949af7aa1ff9da79c755fbab0ab")});var Nne=F(()=>{"use strict";Mne()});function ii(e){return o(function(){return e},"constant")}var CE=F(()=>{"use strict";o(ii,"default")});function One(e){return e>1?0:e<-1?ky:Math.acos(e)}function IN(e){return e>=1?Yb:e<=-1?-Yb:Math.asin(e)}var DN,$a,Wd,Pne,wE,Jl,hm,ba,ky,Yb,Sy,kE=F(()=>{"use strict";DN=Math.abs,$a=Math.atan2,Wd=Math.cos,Pne=Math.max,wE=Math.min,Jl=Math.sin,hm=Math.sqrt,ba=1e-12,ky=Math.PI,Yb=ky/2,Sy=2*ky;o(One,"acos");o(IN,"asin")});function SE(e){let t=3;return e.digits=function(r){if(!arguments.length)return t;if(r==null)t=null;else{let n=Math.floor(r);if(!(n>=0))throw new RangeError(`invalid digits: ${r}`);t=n}return e},()=>new rm(t)}var MN=F(()=>{"use strict";_M();o(SE,"withPath")});function VYe(e){return e.innerRadius}function WYe(e){return e.outerRadius}function qYe(e){return e.startAngle}function HYe(e){return e.endAngle}function UYe(e){return e&&e.padAngle}function YYe(e,t,r,n,i,a,s,l){var u=r-e,h=n-t,d=s-i,f=l-a,p=f*u-d*h;if(!(p*p<ba))return p=(d*(t-a)-f*(e-i))/p,[e+p*u,t+p*h]}function EE(e,t,r,n,i,a,s){var l=e-r,u=t-n,h=(s?a:-a)/hm(l*l+u*u),d=h*u,f=-h*l,p=e+d,m=t+f,g=r+d,y=n+f,v=(p+g)/2,x=(m+y)/2,b=g-p,T=y-m,k=b*b+T*T,C=i-a,w=p*y-g*m,S=(T<0?-1:1)*hm(Pne(0,C*C*k-w*w)),R=(w*T-b*S)/k,L=(-w*b-T*S)/k,N=(w*T+b*S)/k,I=(-w*b+T*S)/k,_=R-v,A=L-x,M=N-v,D=I-x;return _*_+A*A>M*M+D*D&&(R=N,L=I),{cx:R,cy:L,x01:-d,y01:-f,x11:R*(i/C-1),y11:L*(i/C-1)}}function ec(){var e=VYe,t=WYe,r=ii(0),n=null,i=qYe,a=HYe,s=UYe,l=null,u=SE(h);function h(){var d,f,p=+e.apply(this,arguments),m=+t.apply(this,arguments),g=i.apply(this,arguments)-Yb,y=a.apply(this,arguments)-Yb,v=DN(y-g),x=y>g;if(l||(l=d=u()),m<p&&(f=m,m=p,p=f),!(m>ba))l.moveTo(0,0);else if(v>Sy-ba)l.moveTo(m*Wd(g),m*Jl(g)),l.arc(0,0,m,g,y,!x),p>ba&&(l.moveTo(p*Wd(y),p*Jl(y)),l.arc(0,0,p,y,g,x));else{var b=g,T=y,k=g,C=y,w=v,S=v,R=s.apply(this,arguments)/2,L=R>ba&&(n?+n.apply(this,arguments):hm(p*p+m*m)),N=wE(DN(m-p)/2,+r.apply(this,arguments)),I=N,_=N,A,M;if(L>ba){var D=IN(L/p*Jl(R)),P=IN(L/m*Jl(R));(w-=D*2)>ba?(D*=x?1:-1,k+=D,C-=D):(w=0,k=C=(g+y)/2),(S-=P*2)>ba?(P*=x?1:-1,b+=P,T-=P):(S=0,b=T=(g+y)/2)}var B=m*Wd(b),O=m*Jl(b),$=p*Wd(C),V=p*Jl(C);if(N>ba){var G=m*Wd(T),z=m*Jl(T),W=p*Wd(k),H=p*Jl(k),j;if(v<ky)if(j=YYe(B,O,W,H,G,z,$,V)){var Q=B-j[0],U=O-j[1],oe=G-j[0],te=z-j[1],le=1/Jl(One((Q*oe+U*te)/(hm(Q*Q+U*U)*hm(oe*oe+te*te)))/2),ie=hm(j[0]*j[0]+j[1]*j[1]);I=wE(N,(p-ie)/(le-1)),_=wE(N,(m-ie)/(le+1))}else I=_=0}S>ba?_>ba?(A=EE(W,H,B,O,m,_,x),M=EE(G,z,$,V,m,_,x),l.moveTo(A.cx+A.x01,A.cy+A.y01),_<N?l.arc(A.cx,A.cy,_,$a(A.y01,A.x01),$a(M.y01,M.x01),!x):(l.arc(A.cx,A.cy,_,$a(A.y01,A.x01),$a(A.y11,A.x11),!x),l.arc(0,0,m,$a(A.cy+A.y11,A.cx+A.x11),$a(M.cy+M.y11,M.cx+M.x11),!x),l.arc(M.cx,M.cy,_,$a(M.y11,M.x11),$a(M.y01,M.x01),!x))):(l.moveTo(B,O),l.arc(0,0,m,b,T,!x)):l.moveTo(B,O),!(p>ba)||!(w>ba)?l.lineTo($,V):I>ba?(A=EE($,V,G,z,p,-I,x),M=EE(B,O,W,H,p,-I,x),l.lineTo(A.cx+A.x01,A.cy+A.y01),I<N?l.arc(A.cx,A.cy,I,$a(A.y01,A.x01),$a(M.y01,M.x01),!x):(l.arc(A.cx,A.cy,I,$a(A.y01,A.x01),$a(A.y11,A.x11),!x),l.arc(0,0,p,$a(A.cy+A.y11,A.cx+A.x11),$a(M.cy+M.y11,M.cx+M.x11),x),l.arc(M.cx,M.cy,I,$a(M.y11,M.x11),$a(M.y01,M.x01),!x))):l.arc(0,0,p,C,k,x)}if(l.closePath(),d)return l=null,d+""||null}return o(h,"arc"),h.centroid=function(){var d=(+e.apply(this,arguments)+ +t.apply(this,arguments))/2,f=(+i.apply(this,arguments)+ +a.apply(this,arguments))/2-ky/2;return[Wd(f)*d,Jl(f)*d]},h.innerRadius=function(d){return arguments.length?(e=typeof d=="function"?d:ii(+d),h):e},h.outerRadius=function(d){return arguments.length?(t=typeof d=="function"?d:ii(+d),h):t},h.cornerRadius=function(d){return arguments.length?(r=typeof d=="function"?d:ii(+d),h):r},h.padRadius=function(d){return arguments.length?(n=d==null?null:typeof d=="function"?d:ii(+d),h):n},h.startAngle=function(d){return arguments.length?(i=typeof d=="function"?d:ii(+d),h):i},h.endAngle=function(d){return arguments.length?(a=typeof d=="function"?d:ii(+d),h):a},h.padAngle=function(d){return arguments.length?(s=typeof d=="function"?d:ii(+d),h):s},h.context=function(d){return arguments.length?(l=d??null,h):l},h}var Bne=F(()=>{"use strict";CE();kE();MN();o(VYe,"arcInnerRadius");o(WYe,"arcOuterRadius");o(qYe,"arcStartAngle");o(HYe,"arcEndAngle");o(UYe,"arcPadAngle");o(YYe,"intersect");o(EE,"cornerTangents");o(ec,"default")});function jb(e){return typeof e=="object"&&"length"in e?e:Array.from(e)}var iJt,NN=F(()=>{"use strict";iJt=Array.prototype.slice;o(jb,"default")});function $ne(e){this._context=e}function Jc(e){return new $ne(e)}var PN=F(()=>{"use strict";o($ne,"Linear");$ne.prototype={areaStart:o(function(){this._line=0},"areaStart"),areaEnd:o(function(){this._line=NaN},"areaEnd"),lineStart:o(function(){this._point=0},"lineStart"),lineEnd:o(function(){(this._line||this._line!==0&&this._point===1)&&this._context.closePath(),this._line=1-this._line},"lineEnd"),point:o(function(e,t){switch(e=+e,t=+t,this._point){case 0:this._point=1,this._line?this._context.lineTo(e,t):this._context.moveTo(e,t);break;case 1:this._point=2;default:this._context.lineTo(e,t);break}},"point")};o(Jc,"default")});function Fne(e){return e[0]}function zne(e){return e[1]}var Gne=F(()=>{"use strict";o(Fne,"x");o(zne,"y")});function tc(e,t){var r=ii(!0),n=null,i=Jc,a=null,s=SE(l);e=typeof e=="function"?e:e===void 0?Fne:ii(e),t=typeof t=="function"?t:t===void 0?zne:ii(t);function l(u){var h,d=(u=jb(u)).length,f,p=!1,m;for(n==null&&(a=i(m=s())),h=0;h<=d;++h)!(h<d&&r(f=u[h],h,u))===p&&((p=!p)?a.lineStart():a.lineEnd()),p&&a.point(+e(f,h,u),+t(f,h,u));if(m)return a=null,m+""||null}return o(l,"line"),l.x=function(u){return arguments.length?(e=typeof u=="function"?u:ii(+u),l):e},l.y=function(u){return arguments.length?(t=typeof u=="function"?u:ii(+u),l):t},l.defined=function(u){return arguments.length?(r=typeof u=="function"?u:ii(!!u),l):r},l.curve=function(u){return arguments.length?(i=u,n!=null&&(a=i(n)),l):i},l.context=function(u){return arguments.length?(u==null?n=a=null:a=i(n=u),l):n},l}var Vne=F(()=>{"use strict";NN();CE();PN();MN();Gne();o(tc,"default")});function ON(e,t){return t<e?-1:t>e?1:t>=e?0:NaN}var Wne=F(()=>{"use strict";o(ON,"default")});function BN(e){return e}var qne=F(()=>{"use strict";o(BN,"default")});function AE(){var e=BN,t=ON,r=null,n=ii(0),i=ii(Sy),a=ii(0);function s(l){var u,h=(l=jb(l)).length,d,f,p=0,m=new Array(h),g=new Array(h),y=+n.apply(this,arguments),v=Math.min(Sy,Math.max(-Sy,i.apply(this,arguments)-y)),x,b=Math.min(Math.abs(v)/h,a.apply(this,arguments)),T=b*(v<0?-1:1),k;for(u=0;u<h;++u)(k=g[m[u]=u]=+e(l[u],u,l))>0&&(p+=k);for(t!=null?m.sort(function(C,w){return t(g[C],g[w])}):r!=null&&m.sort(function(C,w){return r(l[C],l[w])}),u=0,f=p?(v-h*T)/p:0;u<h;++u,y=x)d=m[u],k=g[d],x=y+(k>0?k*f:0)+T,g[d]={data:l[d],index:u,value:k,startAngle:y,endAngle:x,padAngle:b};return g}return o(s,"pie"),s.value=function(l){return arguments.length?(e=typeof l=="function"?l:ii(+l),s):e},s.sortValues=function(l){return arguments.length?(t=l,r=null,s):t},s.sort=function(l){return arguments.length?(r=l,t=null,s):r},s.startAngle=function(l){return arguments.length?(n=typeof l=="function"?l:ii(+l),s):n},s.endAngle=function(l){return arguments.length?(i=typeof l=="function"?l:ii(+l),s):i},s.padAngle=function(l){return arguments.length?(a=typeof l=="function"?l:ii(+l),s):a},s}var Hne=F(()=>{"use strict";NN();CE();Wne();qne();kE();o(AE,"default")});function Xb(e){return new RE(e,!0)}function Kb(e){return new RE(e,!1)}var RE,Une=F(()=>{"use strict";RE=class{static{o(this,"Bump")}constructor(t,r){this._context=t,this._x=r}areaStart(){this._line=0}areaEnd(){this._line=NaN}lineStart(){this._point=0}lineEnd(){(this._line||this._line!==0&&this._point===1)&&this._context.closePath(),this._line=1-this._line}point(t,r){switch(t=+t,r=+r,this._point){case 0:{this._point=1,this._line?this._context.lineTo(t,r):this._context.moveTo(t,r);break}case 1:this._point=2;default:{this._x?this._context.bezierCurveTo(this._x0=(this._x0+t)/2,this._y0,this._x0,r,t,r):this._context.bezierCurveTo(this._x0,this._y0=(this._y0+r)/2,t,this._y0,t,r);break}}this._x0=t,this._y0=r}};o(Xb,"bumpX");o(Kb,"bumpY")});function Fo(){}var Zb=F(()=>{"use strict";o(Fo,"default")});function Ey(e,t,r){e._context.bezierCurveTo((2*e._x0+e._x1)/3,(2*e._y0+e._y1)/3,(e._x0+2*e._x1)/3,(e._y0+2*e._y1)/3,(e._x0+4*e._x1+t)/6,(e._y0+4*e._y1+r)/6)}function Qb(e){this._context=e}function rc(e){return new Qb(e)}var Jb=F(()=>{"use strict";o(Ey,"point");o(Qb,"Basis");Qb.prototype={areaStart:o(function(){this._line=0},"areaStart"),areaEnd:o(function(){this._line=NaN},"areaEnd"),lineStart:o(function(){this._x0=this._x1=this._y0=this._y1=NaN,this._point=0},"lineStart"),lineEnd:o(function(){switch(this._point){case 3:Ey(this,this._x1,this._y1);case 2:this._context.lineTo(this._x1,this._y1);break}(this._line||this._line!==0&&this._point===1)&&this._context.closePath(),this._line=1-this._line},"lineEnd"),point:o(function(e,t){switch(e=+e,t=+t,this._point){case 0:this._point=1,this._line?this._context.lineTo(e,t):this._context.moveTo(e,t);break;case 1:this._point=2;break;case 2:this._point=3,this._context.lineTo((5*this._x0+this._x1)/6,(5*this._y0+this._y1)/6);default:Ey(this,e,t);break}this._x0=this._x1,this._x1=e,this._y0=this._y1,this._y1=t},"point")};o(rc,"default")});function Yne(e){this._context=e}function _E(e){return new Yne(e)}var jne=F(()=>{"use strict";Zb();Jb();o(Yne,"BasisClosed");Yne.prototype={areaStart:Fo,areaEnd:Fo,lineStart:o(function(){this._x0=this._x1=this._x2=this._x3=this._x4=this._y0=this._y1=this._y2=this._y3=this._y4=NaN,this._point=0},"lineStart"),lineEnd:o(function(){switch(this._point){case 1:{this._context.moveTo(this._x2,this._y2),this._context.closePath();break}case 2:{this._context.moveTo((this._x2+2*this._x3)/3,(this._y2+2*this._y3)/3),this._context.lineTo((this._x3+2*this._x2)/3,(this._y3+2*this._y2)/3),this._context.closePath();break}case 3:{this.point(this._x2,this._y2),this.point(this._x3,this._y3),this.point(this._x4,this._y4);break}}},"lineEnd"),point:o(function(e,t){switch(e=+e,t=+t,this._point){case 0:this._point=1,this._x2=e,this._y2=t;break;case 1:this._point=2,this._x3=e,this._y3=t;break;case 2:this._point=3,this._x4=e,this._y4=t,this._context.moveTo((this._x0+4*this._x1+e)/6,(this._y0+4*this._y1+t)/6);break;default:Ey(this,e,t);break}this._x0=this._x1,this._x1=e,this._y0=this._y1,this._y1=t},"point")};o(_E,"default")});function Xne(e){this._context=e}function LE(e){return new Xne(e)}var Kne=F(()=>{"use strict";Jb();o(Xne,"BasisOpen");Xne.prototype={areaStart:o(function(){this._line=0},"areaStart"),areaEnd:o(function(){this._line=NaN},"areaEnd"),lineStart:o(function(){this._x0=this._x1=this._y0=this._y1=NaN,this._point=0},"lineStart"),lineEnd:o(function(){(this._line||this._line!==0&&this._point===3)&&this._context.closePath(),this._line=1-this._line},"lineEnd"),point:o(function(e,t){switch(e=+e,t=+t,this._point){case 0:this._point=1;break;case 1:this._point=2;break;case 2:this._point=3;var r=(this._x0+4*this._x1+e)/6,n=(this._y0+4*this._y1+t)/6;this._line?this._context.lineTo(r,n):this._context.moveTo(r,n);break;case 3:this._point=4;default:Ey(this,e,t);break}this._x0=this._x1,this._x1=e,this._y0=this._y1,this._y1=t},"point")};o(LE,"default")});function Zne(e,t){this._basis=new Qb(e),this._beta=t}var $N,Qne=F(()=>{"use strict";Jb();o(Zne,"Bundle");Zne.prototype={lineStart:o(function(){this._x=[],this._y=[],this._basis.lineStart()},"lineStart"),lineEnd:o(function(){var e=this._x,t=this._y,r=e.length-1;if(r>0)for(var n=e[0],i=t[0],a=e[r]-n,s=t[r]-i,l=-1,u;++l<=r;)u=l/r,this._basis.point(this._beta*e[l]+(1-this._beta)*(n+u*a),this._beta*t[l]+(1-this._beta)*(i+u*s));this._x=this._y=null,this._basis.lineEnd()},"lineEnd"),point:o(function(e,t){this._x.push(+e),this._y.push(+t)},"point")};$N=o((function e(t){function r(n){return t===1?new Qb(n):new Zne(n,t)}return o(r,"bundle"),r.beta=function(n){return e(+n)},r}),"custom")(.85)});function Ay(e,t,r){e._context.bezierCurveTo(e._x1+e._k*(e._x2-e._x0),e._y1+e._k*(e._y2-e._y0),e._x2+e._k*(e._x1-t),e._y2+e._k*(e._y1-r),e._x2,e._y2)}function DE(e,t){this._context=e,this._k=(1-t)/6}var e2,t2=F(()=>{"use strict";o(Ay,"point");o(DE,"Cardinal");DE.prototype={areaStart:o(function(){this._line=0},"areaStart"),areaEnd:o(function(){this._line=NaN},"areaEnd"),lineStart:o(function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._point=0},"lineStart"),lineEnd:o(function(){switch(this._point){case 2:this._context.lineTo(this._x2,this._y2);break;case 3:Ay(this,this._x1,this._y1);break}(this._line||this._line!==0&&this._point===1)&&this._context.closePath(),this._line=1-this._line},"lineEnd"),point:o(function(e,t){switch(e=+e,t=+t,this._point){case 0:this._point=1,this._line?this._context.lineTo(e,t):this._context.moveTo(e,t);break;case 1:this._point=2,this._x1=e,this._y1=t;break;case 2:this._point=3;default:Ay(this,e,t);break}this._x0=this._x1,this._x1=this._x2,this._x2=e,this._y0=this._y1,this._y1=this._y2,this._y2=t},"point")};e2=o((function e(t){function r(n){return new DE(n,t)}return o(r,"cardinal"),r.tension=function(n){return e(+n)},r}),"custom")(0)});function IE(e,t){this._context=e,this._k=(1-t)/6}var FN,zN=F(()=>{"use strict";Zb();t2();o(IE,"CardinalClosed");IE.prototype={areaStart:Fo,areaEnd:Fo,lineStart:o(function(){this._x0=this._x1=this._x2=this._x3=this._x4=this._x5=this._y0=this._y1=this._y2=this._y3=this._y4=this._y5=NaN,this._point=0},"lineStart"),lineEnd:o(function(){switch(this._point){case 1:{this._context.moveTo(this._x3,this._y3),this._context.closePath();break}case 2:{this._context.lineTo(this._x3,this._y3),this._context.closePath();break}case 3:{this.point(this._x3,this._y3),this.point(this._x4,this._y4),this.point(this._x5,this._y5);break}}},"lineEnd"),point:o(function(e,t){switch(e=+e,t=+t,this._point){case 0:this._point=1,this._x3=e,this._y3=t;break;case 1:this._point=2,this._context.moveTo(this._x4=e,this._y4=t);break;case 2:this._point=3,this._x5=e,this._y5=t;break;default:Ay(this,e,t);break}this._x0=this._x1,this._x1=this._x2,this._x2=e,this._y0=this._y1,this._y1=this._y2,this._y2=t},"point")};FN=o((function e(t){function r(n){return new IE(n,t)}return o(r,"cardinal"),r.tension=function(n){return e(+n)},r}),"custom")(0)});function ME(e,t){this._context=e,this._k=(1-t)/6}var GN,VN=F(()=>{"use strict";t2();o(ME,"CardinalOpen");ME.prototype={areaStart:o(function(){this._line=0},"areaStart"),areaEnd:o(function(){this._line=NaN},"areaEnd"),lineStart:o(function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._point=0},"lineStart"),lineEnd:o(function(){(this._line||this._line!==0&&this._point===3)&&this._context.closePath(),this._line=1-this._line},"lineEnd"),point:o(function(e,t){switch(e=+e,t=+t,this._point){case 0:this._point=1;break;case 1:this._point=2;break;case 2:this._point=3,this._line?this._context.lineTo(this._x2,this._y2):this._context.moveTo(this._x2,this._y2);break;case 3:this._point=4;default:Ay(this,e,t);break}this._x0=this._x1,this._x1=this._x2,this._x2=e,this._y0=this._y1,this._y1=this._y2,this._y2=t},"point")};GN=o((function e(t){function r(n){return new ME(n,t)}return o(r,"cardinal"),r.tension=function(n){return e(+n)},r}),"custom")(0)});function r2(e,t,r){var n=e._x1,i=e._y1,a=e._x2,s=e._y2;if(e._l01_a>ba){var l=2*e._l01_2a+3*e._l01_a*e._l12_a+e._l12_2a,u=3*e._l01_a*(e._l01_a+e._l12_a);n=(n*l-e._x0*e._l12_2a+e._x2*e._l01_2a)/u,i=(i*l-e._y0*e._l12_2a+e._y2*e._l01_2a)/u}if(e._l23_a>ba){var h=2*e._l23_2a+3*e._l23_a*e._l12_a+e._l12_2a,d=3*e._l23_a*(e._l23_a+e._l12_a);a=(a*h+e._x1*e._l23_2a-t*e._l12_2a)/d,s=(s*h+e._y1*e._l23_2a-r*e._l12_2a)/d}e._context.bezierCurveTo(n,i,a,s,e._x2,e._y2)}function Jne(e,t){this._context=e,this._alpha=t}var n2,NE=F(()=>{"use strict";kE();t2();o(r2,"point");o(Jne,"CatmullRom");Jne.prototype={areaStart:o(function(){this._line=0},"areaStart"),areaEnd:o(function(){this._line=NaN},"areaEnd"),lineStart:o(function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._l01_a=this._l12_a=this._l23_a=this._l01_2a=this._l12_2a=this._l23_2a=this._point=0},"lineStart"),lineEnd:o(function(){switch(this._point){case 2:this._context.lineTo(this._x2,this._y2);break;case 3:this.point(this._x2,this._y2);break}(this._line||this._line!==0&&this._point===1)&&this._context.closePath(),this._line=1-this._line},"lineEnd"),point:o(function(e,t){if(e=+e,t=+t,this._point){var r=this._x2-e,n=this._y2-t;this._l23_a=Math.sqrt(this._l23_2a=Math.pow(r*r+n*n,this._alpha))}switch(this._point){case 0:this._point=1,this._line?this._context.lineTo(e,t):this._context.moveTo(e,t);break;case 1:this._point=2;break;case 2:this._point=3;default:r2(this,e,t);break}this._l01_a=this._l12_a,this._l12_a=this._l23_a,this._l01_2a=this._l12_2a,this._l12_2a=this._l23_2a,this._x0=this._x1,this._x1=this._x2,this._x2=e,this._y0=this._y1,this._y1=this._y2,this._y2=t},"point")};n2=o((function e(t){function r(n){return t?new Jne(n,t):new DE(n,0)}return o(r,"catmullRom"),r.alpha=function(n){return e(+n)},r}),"custom")(.5)});function eie(e,t){this._context=e,this._alpha=t}var WN,tie=F(()=>{"use strict";zN();Zb();NE();o(eie,"CatmullRomClosed");eie.prototype={areaStart:Fo,areaEnd:Fo,lineStart:o(function(){this._x0=this._x1=this._x2=this._x3=this._x4=this._x5=this._y0=this._y1=this._y2=this._y3=this._y4=this._y5=NaN,this._l01_a=this._l12_a=this._l23_a=this._l01_2a=this._l12_2a=this._l23_2a=this._point=0},"lineStart"),lineEnd:o(function(){switch(this._point){case 1:{this._context.moveTo(this._x3,this._y3),this._context.closePath();break}case 2:{this._context.lineTo(this._x3,this._y3),this._context.closePath();break}case 3:{this.point(this._x3,this._y3),this.point(this._x4,this._y4),this.point(this._x5,this._y5);break}}},"lineEnd"),point:o(function(e,t){if(e=+e,t=+t,this._point){var r=this._x2-e,n=this._y2-t;this._l23_a=Math.sqrt(this._l23_2a=Math.pow(r*r+n*n,this._alpha))}switch(this._point){case 0:this._point=1,this._x3=e,this._y3=t;break;case 1:this._point=2,this._context.moveTo(this._x4=e,this._y4=t);break;case 2:this._point=3,this._x5=e,this._y5=t;break;default:r2(this,e,t);break}this._l01_a=this._l12_a,this._l12_a=this._l23_a,this._l01_2a=this._l12_2a,this._l12_2a=this._l23_2a,this._x0=this._x1,this._x1=this._x2,this._x2=e,this._y0=this._y1,this._y1=this._y2,this._y2=t},"point")};WN=o((function e(t){function r(n){return t?new eie(n,t):new IE(n,0)}return o(r,"catmullRom"),r.alpha=function(n){return e(+n)},r}),"custom")(.5)});function rie(e,t){this._context=e,this._alpha=t}var qN,nie=F(()=>{"use strict";VN();NE();o(rie,"CatmullRomOpen");rie.prototype={areaStart:o(function(){this._line=0},"areaStart"),areaEnd:o(function(){this._line=NaN},"areaEnd"),lineStart:o(function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._l01_a=this._l12_a=this._l23_a=this._l01_2a=this._l12_2a=this._l23_2a=this._point=0},"lineStart"),lineEnd:o(function(){(this._line||this._line!==0&&this._point===3)&&this._context.closePath(),this._line=1-this._line},"lineEnd"),point:o(function(e,t){if(e=+e,t=+t,this._point){var r=this._x2-e,n=this._y2-t;this._l23_a=Math.sqrt(this._l23_2a=Math.pow(r*r+n*n,this._alpha))}switch(this._point){case 0:this._point=1;break;case 1:this._point=2;break;case 2:this._point=3,this._line?this._context.lineTo(this._x2,this._y2):this._context.moveTo(this._x2,this._y2);break;case 3:this._point=4;default:r2(this,e,t);break}this._l01_a=this._l12_a,this._l12_a=this._l23_a,this._l01_2a=this._l12_2a,this._l12_2a=this._l23_2a,this._x0=this._x1,this._x1=this._x2,this._x2=e,this._y0=this._y1,this._y1=this._y2,this._y2=t},"point")};qN=o((function e(t){function r(n){return t?new rie(n,t):new ME(n,0)}return o(r,"catmullRom"),r.alpha=function(n){return e(+n)},r}),"custom")(.5)});function iie(e){this._context=e}function PE(e){return new iie(e)}var aie=F(()=>{"use strict";Zb();o(iie,"LinearClosed");iie.prototype={areaStart:Fo,areaEnd:Fo,lineStart:o(function(){this._point=0},"lineStart"),lineEnd:o(function(){this._point&&this._context.closePath()},"lineEnd"),point:o(function(e,t){e=+e,t=+t,this._point?this._context.lineTo(e,t):(this._point=1,this._context.moveTo(e,t))},"point")};o(PE,"default")});function sie(e){return e<0?-1:1}function oie(e,t,r){var n=e._x1-e._x0,i=t-e._x1,a=(e._y1-e._y0)/(n||i<0&&-0),s=(r-e._y1)/(i||n<0&&-0),l=(a*i+s*n)/(n+i);return(sie(a)+sie(s))*Math.min(Math.abs(a),Math.abs(s),.5*Math.abs(l))||0}function lie(e,t){var r=e._x1-e._x0;return r?(3*(e._y1-e._y0)/r-t)/2:t}function HN(e,t,r){var n=e._x0,i=e._y0,a=e._x1,s=e._y1,l=(a-n)/3;e._context.bezierCurveTo(n+l,i+l*t,a-l,s-l*r,a,s)}function OE(e){this._context=e}function cie(e){this._context=new uie(e)}function uie(e){this._context=e}function i2(e){return new OE(e)}function a2(e){return new cie(e)}var hie=F(()=>{"use strict";o(sie,"sign");o(oie,"slope3");o(lie,"slope2");o(HN,"point");o(OE,"MonotoneX");OE.prototype={areaStart:o(function(){this._line=0},"areaStart"),areaEnd:o(function(){this._line=NaN},"areaEnd"),lineStart:o(function(){this._x0=this._x1=this._y0=this._y1=this._t0=NaN,this._point=0},"lineStart"),lineEnd:o(function(){switch(this._point){case 2:this._context.lineTo(this._x1,this._y1);break;case 3:HN(this,this._t0,lie(this,this._t0));break}(this._line||this._line!==0&&this._point===1)&&this._context.closePath(),this._line=1-this._line},"lineEnd"),point:o(function(e,t){var r=NaN;if(e=+e,t=+t,!(e===this._x1&&t===this._y1)){switch(this._point){case 0:this._point=1,this._line?this._context.lineTo(e,t):this._context.moveTo(e,t);break;case 1:this._point=2;break;case 2:this._point=3,HN(this,lie(this,r=oie(this,e,t)),r);break;default:HN(this,this._t0,r=oie(this,e,t));break}this._x0=this._x1,this._x1=e,this._y0=this._y1,this._y1=t,this._t0=r}},"point")};o(cie,"MonotoneY");(cie.prototype=Object.create(OE.prototype)).point=function(e,t){OE.prototype.point.call(this,t,e)};o(uie,"ReflectContext");uie.prototype={moveTo:o(function(e,t){this._context.moveTo(t,e)},"moveTo"),closePath:o(function(){this._context.closePath()},"closePath"),lineTo:o(function(e,t){this._context.lineTo(t,e)},"lineTo"),bezierCurveTo:o(function(e,t,r,n,i,a){this._context.bezierCurveTo(t,e,n,r,a,i)},"bezierCurveTo")};o(i2,"monotoneX");o(a2,"monotoneY")});function fie(e){this._context=e}function die(e){var t,r=e.length-1,n,i=new Array(r),a=new Array(r),s=new Array(r);for(i[0]=0,a[0]=2,s[0]=e[0]+2*e[1],t=1;t<r-1;++t)i[t]=1,a[t]=4,s[t]=4*e[t]+2*e[t+1];for(i[r-1]=2,a[r-1]=7,s[r-1]=8*e[r-1]+e[r],t=1;t<r;++t)n=i[t]/a[t-1],a[t]-=n,s[t]-=n*s[t-1];for(i[r-1]=s[r-1]/a[r-1],t=r-2;t>=0;--t)i[t]=(s[t]-i[t+1])/a[t];for(a[r-1]=(e[r]+i[r-1])/2,t=0;t<r-1;++t)a[t]=2*e[t+1]-i[t+1];return[i,a]}function Ry(e){return new fie(e)}var pie=F(()=>{"use strict";o(fie,"Natural");fie.prototype={areaStart:o(function(){this._line=0},"areaStart"),areaEnd:o(function(){this._line=NaN},"areaEnd"),lineStart:o(function(){this._x=[],this._y=[]},"lineStart"),lineEnd:o(function(){var e=this._x,t=this._y,r=e.length;if(r)if(this._line?this._context.lineTo(e[0],t[0]):this._context.moveTo(e[0],t[0]),r===2)this._context.lineTo(e[1],t[1]);else for(var n=die(e),i=die(t),a=0,s=1;s<r;++a,++s)this._context.bezierCurveTo(n[0][a],i[0][a],n[1][a],i[1][a],e[s],t[s]);(this._line||this._line!==0&&r===1)&&this._context.closePath(),this._line=1-this._line,this._x=this._y=null},"lineEnd"),point:o(function(e,t){this._x.push(+e),this._y.push(+t)},"point")};o(die,"controlPoints");o(Ry,"default")});function BE(e,t){this._context=e,this._t=t}function _y(e){return new BE(e,.5)}function s2(e){return new BE(e,0)}function o2(e){return new BE(e,1)}var mie=F(()=>{"use strict";o(BE,"Step");BE.prototype={areaStart:o(function(){this._line=0},"areaStart"),areaEnd:o(function(){this._line=NaN},"areaEnd"),lineStart:o(function(){this._x=this._y=NaN,this._point=0},"lineStart"),lineEnd:o(function(){0<this._t&&this._t<1&&this._point===2&&this._context.lineTo(this._x,this._y),(this._line||this._line!==0&&this._point===1)&&this._context.closePath(),this._line>=0&&(this._t=1-this._t,this._line=1-this._line)},"lineEnd"),point:o(function(e,t){switch(e=+e,t=+t,this._point){case 0:this._point=1,this._line?this._context.lineTo(e,t):this._context.moveTo(e,t);break;case 1:this._point=2;default:{if(this._t<=0)this._context.lineTo(this._x,t),this._context.lineTo(e,t);else{var r=this._x*(1-this._t)+e*this._t;this._context.lineTo(r,this._y),this._context.lineTo(r,t)}break}}this._x=e,this._y=t},"point")};o(_y,"default");o(s2,"stepBefore");o(o2,"stepAfter")});var gie=F(()=>{"use strict";Bne();Vne();Hne();jne();Kne();Jb();Une();Qne();zN();VN();t2();tie();nie();NE();aie();PN();hie();pie();mie()});var yie=F(()=>{"use strict"});var vie=F(()=>{"use strict"});function qd(e,t,r){this.k=e,this.x=t,this.y=r}function YN(e){for(;!e.__zoom;)if(!(e=e.parentNode))return UN;return e.__zoom}var UN,jN=F(()=>{"use strict";o(qd,"Transform");qd.prototype={constructor:qd,scale:o(function(e){return e===1?this:new qd(this.k*e,this.x,this.y)},"scale"),translate:o(function(e,t){return e===0&t===0?this:new qd(this.k,this.x+this.k*e,this.y+this.k*t)},"translate"),apply:o(function(e){return[e[0]*this.k+this.x,e[1]*this.k+this.y]},"apply"),applyX:o(function(e){return e*this.k+this.x},"applyX"),applyY:o(function(e){return e*this.k+this.y},"applyY"),invert:o(function(e){return[(e[0]-this.x)/this.k,(e[1]-this.y)/this.k]},"invert"),invertX:o(function(e){return(e-this.x)/this.k},"invertX"),invertY:o(function(e){return(e-this.y)/this.k},"invertY"),rescaleX:o(function(e){return e.copy().domain(e.range().map(this.invertX,this).map(e.invert,e))},"rescaleX"),rescaleY:o(function(e){return e.copy().domain(e.range().map(this.invertY,this).map(e.invert,e))},"rescaleY"),toString:o(function(){return"translate("+this.x+","+this.y+") scale("+this.k+")"},"toString")};UN=new qd(1,0,0);YN.prototype=qd.prototype;o(YN,"transform")});var xie=F(()=>{"use strict"});var bie=F(()=>{"use strict";tE();yie();vie();jN();xie()});var Tie=F(()=>{"use strict";bie();jN()});var $r=F(()=>{"use strict";Md();_J();jte();Qte();dy();Jte();ere();O8();bee();tre();kM();rre();ire();GM();vre();Vre();my();_M();Wre();nre();qre();Dne();Nne();Ul();gie();bE();RN();XS();tE();Tie()});var Cie=Io(Ta=>{"use strict";Object.defineProperty(Ta,"__esModule",{value:!0});Ta.BLANK_URL=Ta.relativeFirstCharacters=Ta.whitespaceEscapeCharsRegex=Ta.urlSchemeRegex=Ta.ctrlCharactersRegex=Ta.htmlCtrlEntityRegex=Ta.htmlEntitiesRegex=Ta.invalidProtocolRegex=void 0;Ta.invalidProtocolRegex=/^([^\w]*)(javascript|data|vbscript)/im;Ta.htmlEntitiesRegex=/&#(\w+)(^\w|;)?/g;Ta.htmlCtrlEntityRegex=/&(newline|tab);/gi;Ta.ctrlCharactersRegex=/[\u0000-\u001F\u007F-\u009F\u2000-\u200D\uFEFF]/gim;Ta.urlSchemeRegex=/^.+(:|&colon;)/gim;Ta.whitespaceEscapeCharsRegex=/(\\|%5[cC])((%(6[eE]|72|74))|[nrt])/g;Ta.relativeFirstCharacters=[".","/"];Ta.BLANK_URL="about:blank"});var Ly=Io(XN=>{"use strict";Object.defineProperty(XN,"__esModule",{value:!0});XN.sanitizeUrl=ZYe;var rs=Cie();function jYe(e){return rs.relativeFirstCharacters.indexOf(e[0])>-1}o(jYe,"isRelativeUrlWithoutProtocol");function XYe(e){var t=e.replace(rs.ctrlCharactersRegex,"");return t.replace(rs.htmlEntitiesRegex,function(r,n){return String.fromCharCode(n)})}o(XYe,"decodeHtmlCharacters");function KYe(e){return URL.canParse(e)}o(KYe,"isValidUrl");function wie(e){try{return decodeURIComponent(e)}catch{return e}}o(wie,"decodeURI");function ZYe(e){if(!e)return rs.BLANK_URL;var t,r=wie(e.trim());do r=XYe(r).replace(rs.htmlCtrlEntityRegex,"").replace(rs.ctrlCharactersRegex,"").replace(rs.whitespaceEscapeCharsRegex,"").trim(),r=wie(r),t=r.match(rs.ctrlCharactersRegex)||r.match(rs.htmlEntitiesRegex)||r.match(rs.htmlCtrlEntityRegex)||r.match(rs.whitespaceEscapeCharsRegex);while(t&&t.length>0);var n=r;if(!n)return rs.BLANK_URL;if(jYe(n))return n;var i=n.trimStart(),a=i.match(rs.urlSchemeRegex);if(!a)return n;var s=a[0].toLowerCase().trim();if(rs.invalidProtocolRegex.test(s))return rs.BLANK_URL;var l=i.replace(/\\/g,"/");if(s==="mailto:"||s.includes("://"))return l;if(s==="http:"||s==="https:"){if(!KYe(l))return rs.BLANK_URL;var u=new URL(l);return u.protocol=u.protocol.toLowerCase(),u.hostname=u.hostname.toLowerCase(),u.toString()}return l}o(ZYe,"sanitizeUrl")});var KN,dm,$E,kie,FE,zE,Fa,l2,Dy,Hd=F(()=>{"use strict";KN=Xs(Ly(),1);$r();Vr();dm=o((e,t)=>{let r=e.append("rect");if(r.attr("x",t.x),r.attr("y",t.y),r.attr("fill",t.fill),r.attr("stroke",t.stroke),r.attr("width",t.width),r.attr("height",t.height),t.name&&r.attr("name",t.name),t.rx&&r.attr("rx",t.rx),t.ry&&r.attr("ry",t.ry),t.attrs!==void 0)for(let n in t.attrs)r.attr(n,t.attrs[n]);return t.class&&r.attr("class",t.class),r},"drawRect"),$E=o((e,t)=>{let r={x:t.startx,y:t.starty,width:t.stopx-t.startx,height:t.stopy-t.starty,fill:t.fill,stroke:t.stroke,class:"rect"};dm(e,r).lower()},"drawBackgroundRect"),kie=o((e,t)=>{let r=t.text.replace(Vp," "),n=e.append("text");n.attr("x",t.x),n.attr("y",t.y),n.attr("class","legend"),n.style("text-anchor",t.anchor),t.class&&n.attr("class",t.class);let i=n.append("tspan");return i.attr("x",t.x+t.textMargin*2),i.text(r),n},"drawText"),FE=o((e,t,r,n)=>{let i=e.append("image");i.attr("x",t),i.attr("y",r);let a=(0,KN.sanitizeUrl)(n);i.attr("xlink:href",a)},"drawImage"),zE=o((e,t,r,n)=>{let i=e.append("use");i.attr("x",t),i.attr("y",r);let a=(0,KN.sanitizeUrl)(n);i.attr("xlink:href",`#${a}`)},"drawEmbeddedImage"),Fa=o(()=>({x:0,y:0,width:100,height:100,fill:"#EDF2AE",stroke:"#666",anchor:"start",rx:0,ry:0}),"getNoteRect"),l2=o(()=>({x:0,y:0,width:100,height:100,"text-anchor":"start",style:"#666",textMargin:0,rx:0,ry:0,tspan:!0}),"getTextObj"),Dy=o(()=>{let e=et(".mermaidTooltip");return e.empty()&&(e=et("body").append("div").attr("class","mermaidTooltip").style("opacity",0).style("position","absolute").style("text-align","center").style("max-width","200px").style("padding","2px").style("font-size","12px").style("background","#ffffde").style("border","1px solid #333").style("border-radius","2px").style("pointer-events","none").style("z-index","100")),e},"createTooltip")});var Sie,ZN,Eie,QYe,JYe,eje,tje,rje,nje,ije,aje,sje,oje,lje,yh,nc,Aie=F(()=>{"use strict";Vr();Hd();Sie=Xs(Ly(),1),ZN=o(function(e,t){return dm(e,t)},"drawRect"),Eie=o(function(e,t,r,n,i,a){let s=e.append("image");s.attr("width",t),s.attr("height",r),s.attr("x",n),s.attr("y",i);let l=a.startsWith("data:image/png;base64")?a:(0,Sie.sanitizeUrl)(a);s.attr("xlink:href",l)},"drawImage"),QYe=o((e,t,r,n)=>{let i=e.append("g"),a=0;for(let s of t){let l=s.textColor?s.textColor:"#444444",u=s.lineColor?s.lineColor:"#444444",h=s.offsetX?parseInt(s.offsetX):0,d=s.offsetY?parseInt(s.offsetY):0,f="";if(a===0){let m=i.append("line");m.attr("x1",s.startPoint.x),m.attr("y1",s.startPoint.y),m.attr("x2",s.endPoint.x),m.attr("y2",s.endPoint.y),m.attr("stroke-width","1"),m.attr("stroke",u),m.style("fill","none"),s.type!=="rel_b"&&m.attr("marker-end","url("+f+"#"+n+"-arrowhead)"),(s.type==="birel"||s.type==="rel_b")&&m.attr("marker-start","url("+f+"#"+n+"-arrowend)"),a=-1}else{let m=i.append("path");m.attr("fill","none").attr("stroke-width","1").attr("stroke",u).attr("d","Mstartx,starty Qcontrolx,controly stopx,stopy ".replaceAll("startx",s.startPoint.x).replaceAll("starty",s.startPoint.y).replaceAll("controlx",s.startPoint.x+(s.endPoint.x-s.startPoint.x)/2-(s.endPoint.x-s.startPoint.x)/4).replaceAll("controly",s.startPoint.y+(s.endPoint.y-s.startPoint.y)/2).replaceAll("stopx",s.endPoint.x).replaceAll("stopy",s.endPoint.y)),s.type!=="rel_b"&&m.attr("marker-end","url("+f+"#"+n+"-arrowhead)"),(s.type==="birel"||s.type==="rel_b")&&m.attr("marker-start","url("+f+"#"+n+"-arrowend)")}let p=r.messageFont();yh(r)(s.label.text,i,Math.min(s.startPoint.x,s.endPoint.x)+Math.abs(s.endPoint.x-s.startPoint.x)/2+h,Math.min(s.startPoint.y,s.endPoint.y)+Math.abs(s.endPoint.y-s.startPoint.y)/2+d,s.label.width,s.label.height,{fill:l},p),s.techn&&s.techn.text!==""&&(p=r.messageFont(),yh(r)("["+s.techn.text+"]",i,Math.min(s.startPoint.x,s.endPoint.x)+Math.abs(s.endPoint.x-s.startPoint.x)/2+h,Math.min(s.startPoint.y,s.endPoint.y)+Math.abs(s.endPoint.y-s.startPoint.y)/2+r.messageFontSize+5+d,Math.max(s.label.width,s.techn.width),s.techn.height,{fill:l,"font-style":"italic"},p))}},"drawRels"),JYe=o(function(e,t,r){let n=e.append("g"),i=t.bgColor?t.bgColor:"none",a=t.borderColor?t.borderColor:"#444444",s=t.fontColor?t.fontColor:"black",l={"stroke-width":1,"stroke-dasharray":"7.0,7.0"};t.nodeType&&(l={"stroke-width":1});let u={x:t.x,y:t.y,fill:i,stroke:a,width:t.width,height:t.height,rx:2.5,ry:2.5,attrs:l};ZN(n,u);let h=r.boundaryFont();h.fontWeight="bold",h.fontSize=h.fontSize+2,h.fontColor=s,yh(r)(t.label.text,n,t.x,t.y+t.label.Y,t.width,t.height,{fill:"#444444"},h),t.type&&t.type.text!==""&&(h=r.boundaryFont(),h.fontColor=s,yh(r)(t.type.text,n,t.x,t.y+t.type.Y,t.width,t.height,{fill:"#444444"},h)),t.descr&&t.descr.text!==""&&(h=r.boundaryFont(),h.fontSize=h.fontSize-2,h.fontColor=s,yh(r)(t.descr.text,n,t.x,t.y+t.descr.Y,t.width,t.height,{fill:"#444444"},h))},"drawBoundary"),eje=o(function(e,t,r){let n=t.bgColor?t.bgColor:r[t.typeC4Shape.text+"_bg_color"],i=t.borderColor?t.borderColor:r[t.typeC4Shape.text+"_border_color"],a=t.fontColor?t.fontColor:"#FFFFFF",s="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAIAAADYYG7QAAACD0lEQVR4Xu2YoU4EMRCGT+4j8Ai8AhaH4QHgAUjQuFMECUgMIUgwJAgMhgQsAYUiJCiQIBBY+EITsjfTdme6V24v4c8vyGbb+ZjOtN0bNcvjQXmkH83WvYBWto6PLm6v7p7uH1/w2fXD+PBycX1Pv2l3IdDm/vn7x+dXQiAubRzoURa7gRZWd0iGRIiJbOnhnfYBQZNJjNbuyY2eJG8fkDE3bbG4ep6MHUAsgYxmE3nVs6VsBWJSGccsOlFPmLIViMzLOB7pCVO2AtHJMohH7Fh6zqitQK7m0rJvAVYgGcEpe//PLdDz65sM4pF9N7ICcXDKIB5Nv6j7tD0NoSdM2QrU9Gg0ewE1LqBhHR3BBdvj2vapnidjHxD/q6vd7Pvhr31AwcY8eXMTXAKECZZJFXuEq27aLgQK5uLMohCenGGuGewOxSjBvYBqeG6B+Nqiblggdjnc+ZXDy+FNFpFzw76O3UBAROuXh6FoiAcf5g9eTvUgzy0nWg6I8cXHRUpg5bOVBCo+KDpFajOf23GgPme7RSQ+lacIENUgJ6gg1k6HjgOlqnLqip4tEuhv0hNEMXUD0clyXE3p6pZA0S2nnvTlXwLJEZWlb7cTQH1+USgTN4VhAenm/wea1OCAOmqo6fE1WCb9WSKBah+rbUWPWAmE2Rvk0ApiB45eOyNAzU8xcTvj8KvkKEoOaIYeHNA3ZuygAvFMUO0AAAAASUVORK5CYII=";switch(t.typeC4Shape.text){case"person":s="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAIAAADYYG7QAAACD0lEQVR4Xu2YoU4EMRCGT+4j8Ai8AhaH4QHgAUjQuFMECUgMIUgwJAgMhgQsAYUiJCiQIBBY+EITsjfTdme6V24v4c8vyGbb+ZjOtN0bNcvjQXmkH83WvYBWto6PLm6v7p7uH1/w2fXD+PBycX1Pv2l3IdDm/vn7x+dXQiAubRzoURa7gRZWd0iGRIiJbOnhnfYBQZNJjNbuyY2eJG8fkDE3bbG4ep6MHUAsgYxmE3nVs6VsBWJSGccsOlFPmLIViMzLOB7pCVO2AtHJMohH7Fh6zqitQK7m0rJvAVYgGcEpe//PLdDz65sM4pF9N7ICcXDKIB5Nv6j7tD0NoSdM2QrU9Gg0ewE1LqBhHR3BBdvj2vapnidjHxD/q6vd7Pvhr31AwcY8eXMTXAKECZZJFXuEq27aLgQK5uLMohCenGGuGewOxSjBvYBqeG6B+Nqiblggdjnc+ZXDy+FNFpFzw76O3UBAROuXh6FoiAcf5g9eTvUgzy0nWg6I8cXHRUpg5bOVBCo+KDpFajOf23GgPme7RSQ+lacIENUgJ6gg1k6HjgOlqnLqip4tEuhv0hNEMXUD0clyXE3p6pZA0S2nnvTlXwLJEZWlb7cTQH1+USgTN4VhAenm/wea1OCAOmqo6fE1WCb9WSKBah+rbUWPWAmE2Rvk0ApiB45eOyNAzU8xcTvj8KvkKEoOaIYeHNA3ZuygAvFMUO0AAAAASUVORK5CYII=";break;case"external_person":s="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAIAAADYYG7QAAAB6ElEQVR4Xu2YLY+EMBCG9+dWr0aj0Wg0Go1Go0+j8Xdv2uTCvv1gpt0ebHKPuhDaeW4605Z9mJvx4AdXUyTUdd08z+u6flmWZRnHsWkafk9DptAwDPu+f0eAYtu2PEaGWuj5fCIZrBAC2eLBAnRCsEkkxmeaJp7iDJ2QMDdHsLg8SxKFEJaAo8lAXnmuOFIhTMpxxKATebo4UiFknuNo4OniSIXQyRxEA3YsnjGCVEjVXD7yLUAqxBGUyPv/Y4W2beMgGuS7kVQIBycH0fD+oi5pezQETxdHKmQKGk1eQEYldK+jw5GxPfZ9z7Mk0Qnhf1W1m3w//EUn5BDmSZsbR44QQLBEqrBHqOrmSKaQAxdnLArCrxZcM7A7ZKs4ioRq8LFC+NpC3WCBJsvpVw5edm9iEXFuyNfxXAgSwfrFQ1c0iNda8AdejvUgnktOtJQQxmcfFzGglc5WVCj7oDgFqU18boeFSs52CUh8LE8BIVQDT1ABrB0HtgSEYlX5doJnCwv9TXocKCaKbnwhdDKPq4lf3SwU3HLq4V/+WYhHVMa/3b4IlfyikAduCkcBc7mQ3/z/Qq/cTuikhkzB12Ae/mcJC9U+Vo8Ej1gWAtgbeGgFsAMHr50BIWOLCbezvhpBFUdY6EJuJ/QDW0XoMX60zZ0AAAAASUVORK5CYII=";break}let l=e.append("g");l.attr("class","person-man");let u=Fa();switch(t.typeC4Shape.text){case"person":case"external_person":case"system":case"external_system":case"container":case"external_container":case"component":case"external_component":u.x=t.x,u.y=t.y,u.fill=n,u.width=t.width,u.height=t.height,u.stroke=i,u.rx=2.5,u.ry=2.5,u.attrs={"stroke-width":.5},ZN(l,u);break;case"system_db":case"external_system_db":case"container_db":case"external_container_db":case"component_db":case"external_component_db":l.append("path").attr("fill",n).attr("stroke-width","0.5").attr("stroke",i).attr("d","Mstartx,startyc0,-10 half,-10 half,-10c0,0 half,0 half,10l0,heightc0,10 -half,10 -half,10c0,0 -half,0 -half,-10l0,-height".replaceAll("startx",t.x).replaceAll("starty",t.y).replaceAll("half",t.width/2).replaceAll("height",t.height)),l.append("path").attr("fill","none").attr("stroke-width","0.5").attr("stroke",i).attr("d","Mstartx,startyc0,10 half,10 half,10c0,0 half,0 half,-10".replaceAll("startx",t.x).replaceAll("starty",t.y).replaceAll("half",t.width/2));break;case"system_queue":case"external_system_queue":case"container_queue":case"external_container_queue":case"component_queue":case"external_component_queue":l.append("path").attr("fill",n).attr("stroke-width","0.5").attr("stroke",i).attr("d","Mstartx,startylwidth,0c5,0 5,half 5,halfc0,0 0,half -5,halfl-width,0c-5,0 -5,-half -5,-halfc0,0 0,-half 5,-half".replaceAll("startx",t.x).replaceAll("starty",t.y).replaceAll("width",t.width).replaceAll("half",t.height/2)),l.append("path").attr("fill","none").attr("stroke-width","0.5").attr("stroke",i).attr("d","Mstartx,startyc-5,0 -5,half -5,halfc0,half 5,half 5,half".replaceAll("startx",t.x+t.width).replaceAll("starty",t.y).replaceAll("half",t.height/2));break}let h=lje(r,t.typeC4Shape.text);switch(l.append("text").attr("fill",a).attr("font-family",h.fontFamily).attr("font-size",h.fontSize-2).attr("font-style","italic").attr("lengthAdjust","spacing").attr("textLength",t.typeC4Shape.width).attr("x",t.x+t.width/2-t.typeC4Shape.width/2).attr("y",t.y+t.typeC4Shape.Y).text("<<"+t.typeC4Shape.text+">>"),t.typeC4Shape.text){case"person":case"external_person":Eie(l,48,48,t.x+t.width/2-24,t.y+t.image.Y,s);break}let d=r[t.typeC4Shape.text+"Font"]();return d.fontWeight="bold",d.fontSize=d.fontSize+2,d.fontColor=a,yh(r)(t.label.text,l,t.x,t.y+t.label.Y,t.width,t.height,{fill:a},d),d=r[t.typeC4Shape.text+"Font"](),d.fontColor=a,t.techn&&t.techn?.text!==""?yh(r)(t.techn.text,l,t.x,t.y+t.techn.Y,t.width,t.height,{fill:a,"font-style":"italic"},d):t.type&&t.type.text!==""&&yh(r)(t.type.text,l,t.x,t.y+t.type.Y,t.width,t.height,{fill:a,"font-style":"italic"},d),t.descr&&t.descr.text!==""&&(d=r.personFont(),d.fontColor=a,yh(r)(t.descr.text,l,t.x,t.y+t.descr.Y,t.width,t.height,{fill:a},d)),t.height},"drawC4Shape"),tje=o(function(e,t){e.append("defs").append("symbol").attr("id",t+"-database").attr("fill-rule","evenodd").attr("clip-rule","evenodd").append("path").attr("transform","scale(.5)").attr("d","M12.258.001l.256.004.255.005.253.008.251.01.249.012.247.015.246.016.242.019.241.02.239.023.236.024.233.027.231.028.229.031.225.032.223.034.22.036.217.038.214.04.211.041.208.043.205.045.201.046.198.048.194.05.191.051.187.053.183.054.18.056.175.057.172.059.168.06.163.061.16.063.155.064.15.066.074.033.073.033.071.034.07.034.069.035.068.035.067.035.066.035.064.036.064.036.062.036.06.036.06.037.058.037.058.037.055.038.055.038.053.038.052.038.051.039.05.039.048.039.047.039.045.04.044.04.043.04.041.04.04.041.039.041.037.041.036.041.034.041.033.042.032.042.03.042.029.042.027.042.026.043.024.043.023.043.021.043.02.043.018.044.017.043.015.044.013.044.012.044.011.045.009.044.007.045.006.045.004.045.002.045.001.045v17l-.001.045-.002.045-.004.045-.006.045-.007.045-.009.044-.011.045-.012.044-.013.044-.015.044-.017.043-.018.044-.02.043-.021.043-.023.043-.024.043-.026.043-.027.042-.029.042-.03.042-.032.042-.033.042-.034.041-.036.041-.037.041-.039.041-.04.041-.041.04-.043.04-.044.04-.045.04-.047.039-.048.039-.05.039-.051.039-.052.038-.053.038-.055.038-.055.038-.058.037-.058.037-.06.037-.06.036-.062.036-.064.036-.064.036-.066.035-.067.035-.068.035-.069.035-.07.034-.071.034-.073.033-.074.033-.15.066-.155.064-.16.063-.163.061-.168.06-.172.059-.175.057-.18.056-.183.054-.187.053-.191.051-.194.05-.198.048-.201.046-.205.045-.208.043-.211.041-.214.04-.217.038-.22.036-.223.034-.225.032-.229.031-.231.028-.233.027-.236.024-.239.023-.241.02-.242.019-.246.016-.247.015-.249.012-.251.01-.253.008-.255.005-.256.004-.258.001-.258-.001-.256-.004-.255-.005-.253-.008-.251-.01-.249-.012-.247-.015-.245-.016-.243-.019-.241-.02-.238-.023-.236-.024-.234-.027-.231-.028-.228-.031-.226-.032-.223-.034-.22-.036-.217-.038-.214-.04-.211-.041-.208-.043-.204-.045-.201-.046-.198-.048-.195-.05-.19-.051-.187-.053-.184-.054-.179-.056-.176-.057-.172-.059-.167-.06-.164-.061-.159-.063-.155-.064-.151-.066-.074-.033-.072-.033-.072-.034-.07-.034-.069-.035-.068-.035-.067-.035-.066-.035-.064-.036-.063-.036-.062-.036-.061-.036-.06-.037-.058-.037-.057-.037-.056-.038-.055-.038-.053-.038-.052-.038-.051-.039-.049-.039-.049-.039-.046-.039-.046-.04-.044-.04-.043-.04-.041-.04-.04-.041-.039-.041-.037-.041-.036-.041-.034-.041-.033-.042-.032-.042-.03-.042-.029-.042-.027-.042-.026-.043-.024-.043-.023-.043-.021-.043-.02-.043-.018-.044-.017-.043-.015-.044-.013-.044-.012-.044-.011-.045-.009-.044-.007-.045-.006-.045-.004-.045-.002-.045-.001-.045v-17l.001-.045.002-.045.004-.045.006-.045.007-.045.009-.044.011-.045.012-.044.013-.044.015-.044.017-.043.018-.044.02-.043.021-.043.023-.043.024-.043.026-.043.027-.042.029-.042.03-.042.032-.042.033-.042.034-.041.036-.041.037-.041.039-.041.04-.041.041-.04.043-.04.044-.04.046-.04.046-.039.049-.039.049-.039.051-.039.052-.038.053-.038.055-.038.056-.038.057-.037.058-.037.06-.037.061-.036.062-.036.063-.036.064-.036.066-.035.067-.035.068-.035.069-.035.07-.034.072-.034.072-.033.074-.033.151-.066.155-.064.159-.063.164-.061.167-.06.172-.059.176-.057.179-.056.184-.054.187-.053.19-.051.195-.05.198-.048.201-.046.204-.045.208-.043.211-.041.214-.04.217-.038.22-.036.223-.034.226-.032.228-.031.231-.028.234-.027.236-.024.238-.023.241-.02.243-.019.245-.016.247-.015.249-.012.251-.01.253-.008.255-.005.256-.004.258-.001.258.001zm-9.258 20.499v.01l.001.021.003.021.004.022.005.021.006.022.007.022.009.023.01.022.011.023.012.023.013.023.015.023.016.024.017.023.018.024.019.024.021.024.022.025.023.024.024.025.052.049.056.05.061.051.066.051.07.051.075.051.079.052.084.052.088.052.092.052.097.052.102.051.105.052.11.052.114.051.119.051.123.051.127.05.131.05.135.05.139.048.144.049.147.047.152.047.155.047.16.045.163.045.167.043.171.043.176.041.178.041.183.039.187.039.19.037.194.035.197.035.202.033.204.031.209.03.212.029.216.027.219.025.222.024.226.021.23.02.233.018.236.016.24.015.243.012.246.01.249.008.253.005.256.004.259.001.26-.001.257-.004.254-.005.25-.008.247-.011.244-.012.241-.014.237-.016.233-.018.231-.021.226-.021.224-.024.22-.026.216-.027.212-.028.21-.031.205-.031.202-.034.198-.034.194-.036.191-.037.187-.039.183-.04.179-.04.175-.042.172-.043.168-.044.163-.045.16-.046.155-.046.152-.047.148-.048.143-.049.139-.049.136-.05.131-.05.126-.05.123-.051.118-.052.114-.051.11-.052.106-.052.101-.052.096-.052.092-.052.088-.053.083-.051.079-.052.074-.052.07-.051.065-.051.06-.051.056-.05.051-.05.023-.024.023-.025.021-.024.02-.024.019-.024.018-.024.017-.024.015-.023.014-.024.013-.023.012-.023.01-.023.01-.022.008-.022.006-.022.006-.022.004-.022.004-.021.001-.021.001-.021v-4.127l-.077.055-.08.053-.083.054-.085.053-.087.052-.09.052-.093.051-.095.05-.097.05-.1.049-.102.049-.105.048-.106.047-.109.047-.111.046-.114.045-.115.045-.118.044-.12.043-.122.042-.124.042-.126.041-.128.04-.13.04-.132.038-.134.038-.135.037-.138.037-.139.035-.142.035-.143.034-.144.033-.147.032-.148.031-.15.03-.151.03-.153.029-.154.027-.156.027-.158.026-.159.025-.161.024-.162.023-.163.022-.165.021-.166.02-.167.019-.169.018-.169.017-.171.016-.173.015-.173.014-.175.013-.175.012-.177.011-.178.01-.179.008-.179.008-.181.006-.182.005-.182.004-.184.003-.184.002h-.37l-.184-.002-.184-.003-.182-.004-.182-.005-.181-.006-.179-.008-.179-.008-.178-.01-.176-.011-.176-.012-.175-.013-.173-.014-.172-.015-.171-.016-.17-.017-.169-.018-.167-.019-.166-.02-.165-.021-.163-.022-.162-.023-.161-.024-.159-.025-.157-.026-.156-.027-.155-.027-.153-.029-.151-.03-.15-.03-.148-.031-.146-.032-.145-.033-.143-.034-.141-.035-.14-.035-.137-.037-.136-.037-.134-.038-.132-.038-.13-.04-.128-.04-.126-.041-.124-.042-.122-.042-.12-.044-.117-.043-.116-.045-.113-.045-.112-.046-.109-.047-.106-.047-.105-.048-.102-.049-.1-.049-.097-.05-.095-.05-.093-.052-.09-.051-.087-.052-.085-.053-.083-.054-.08-.054-.077-.054v4.127zm0-5.654v.011l.001.021.003.021.004.021.005.022.006.022.007.022.009.022.01.022.011.023.012.023.013.023.015.024.016.023.017.024.018.024.019.024.021.024.022.024.023.025.024.024.052.05.056.05.061.05.066.051.07.051.075.052.079.051.084.052.088.052.092.052.097.052.102.052.105.052.11.051.114.051.119.052.123.05.127.051.131.05.135.049.139.049.144.048.147.048.152.047.155.046.16.045.163.045.167.044.171.042.176.042.178.04.183.04.187.038.19.037.194.036.197.034.202.033.204.032.209.03.212.028.216.027.219.025.222.024.226.022.23.02.233.018.236.016.24.014.243.012.246.01.249.008.253.006.256.003.259.001.26-.001.257-.003.254-.006.25-.008.247-.01.244-.012.241-.015.237-.016.233-.018.231-.02.226-.022.224-.024.22-.025.216-.027.212-.029.21-.03.205-.032.202-.033.198-.035.194-.036.191-.037.187-.039.183-.039.179-.041.175-.042.172-.043.168-.044.163-.045.16-.045.155-.047.152-.047.148-.048.143-.048.139-.05.136-.049.131-.05.126-.051.123-.051.118-.051.114-.052.11-.052.106-.052.101-.052.096-.052.092-.052.088-.052.083-.052.079-.052.074-.051.07-.052.065-.051.06-.05.056-.051.051-.049.023-.025.023-.024.021-.025.02-.024.019-.024.018-.024.017-.024.015-.023.014-.023.013-.024.012-.022.01-.023.01-.023.008-.022.006-.022.006-.022.004-.021.004-.022.001-.021.001-.021v-4.139l-.077.054-.08.054-.083.054-.085.052-.087.053-.09.051-.093.051-.095.051-.097.05-.1.049-.102.049-.105.048-.106.047-.109.047-.111.046-.114.045-.115.044-.118.044-.12.044-.122.042-.124.042-.126.041-.128.04-.13.039-.132.039-.134.038-.135.037-.138.036-.139.036-.142.035-.143.033-.144.033-.147.033-.148.031-.15.03-.151.03-.153.028-.154.028-.156.027-.158.026-.159.025-.161.024-.162.023-.163.022-.165.021-.166.02-.167.019-.169.018-.169.017-.171.016-.173.015-.173.014-.175.013-.175.012-.177.011-.178.009-.179.009-.179.007-.181.007-.182.005-.182.004-.184.003-.184.002h-.37l-.184-.002-.184-.003-.182-.004-.182-.005-.181-.007-.179-.007-.179-.009-.178-.009-.176-.011-.176-.012-.175-.013-.173-.014-.172-.015-.171-.016-.17-.017-.169-.018-.167-.019-.166-.02-.165-.021-.163-.022-.162-.023-.161-.024-.159-.025-.157-.026-.156-.027-.155-.028-.153-.028-.151-.03-.15-.03-.148-.031-.146-.033-.145-.033-.143-.033-.141-.035-.14-.036-.137-.036-.136-.037-.134-.038-.132-.039-.13-.039-.128-.04-.126-.041-.124-.042-.122-.043-.12-.043-.117-.044-.116-.044-.113-.046-.112-.046-.109-.046-.106-.047-.105-.048-.102-.049-.1-.049-.097-.05-.095-.051-.093-.051-.09-.051-.087-.053-.085-.052-.083-.054-.08-.054-.077-.054v4.139zm0-5.666v.011l.001.02.003.022.004.021.005.022.006.021.007.022.009.023.01.022.011.023.012.023.013.023.015.023.016.024.017.024.018.023.019.024.021.025.022.024.023.024.024.025.052.05.056.05.061.05.066.051.07.051.075.052.079.051.084.052.088.052.092.052.097.052.102.052.105.051.11.052.114.051.119.051.123.051.127.05.131.05.135.05.139.049.144.048.147.048.152.047.155.046.16.045.163.045.167.043.171.043.176.042.178.04.183.04.187.038.19.037.194.036.197.034.202.033.204.032.209.03.212.028.216.027.219.025.222.024.226.021.23.02.233.018.236.017.24.014.243.012.246.01.249.008.253.006.256.003.259.001.26-.001.257-.003.254-.006.25-.008.247-.01.244-.013.241-.014.237-.016.233-.018.231-.02.226-.022.224-.024.22-.025.216-.027.212-.029.21-.03.205-.032.202-.033.198-.035.194-.036.191-.037.187-.039.183-.039.179-.041.175-.042.172-.043.168-.044.163-.045.16-.045.155-.047.152-.047.148-.048.143-.049.139-.049.136-.049.131-.051.126-.05.123-.051.118-.052.114-.051.11-.052.106-.052.101-.052.096-.052.092-.052.088-.052.083-.052.079-.052.074-.052.07-.051.065-.051.06-.051.056-.05.051-.049.023-.025.023-.025.021-.024.02-.024.019-.024.018-.024.017-.024.015-.023.014-.024.013-.023.012-.023.01-.022.01-.023.008-.022.006-.022.006-.022.004-.022.004-.021.001-.021.001-.021v-4.153l-.077.054-.08.054-.083.053-.085.053-.087.053-.09.051-.093.051-.095.051-.097.05-.1.049-.102.048-.105.048-.106.048-.109.046-.111.046-.114.046-.115.044-.118.044-.12.043-.122.043-.124.042-.126.041-.128.04-.13.039-.132.039-.134.038-.135.037-.138.036-.139.036-.142.034-.143.034-.144.033-.147.032-.148.032-.15.03-.151.03-.153.028-.154.028-.156.027-.158.026-.159.024-.161.024-.162.023-.163.023-.165.021-.166.02-.167.019-.169.018-.169.017-.171.016-.173.015-.173.014-.175.013-.175.012-.177.01-.178.01-.179.009-.179.007-.181.006-.182.006-.182.004-.184.003-.184.001-.185.001-.185-.001-.184-.001-.184-.003-.182-.004-.182-.006-.181-.006-.179-.007-.179-.009-.178-.01-.176-.01-.176-.012-.175-.013-.173-.014-.172-.015-.171-.016-.17-.017-.169-.018-.167-.019-.166-.02-.165-.021-.163-.023-.162-.023-.161-.024-.159-.024-.157-.026-.156-.027-.155-.028-.153-.028-.151-.03-.15-.03-.148-.032-.146-.032-.145-.033-.143-.034-.141-.034-.14-.036-.137-.036-.136-.037-.134-.038-.132-.039-.13-.039-.128-.041-.126-.041-.124-.041-.122-.043-.12-.043-.117-.044-.116-.044-.113-.046-.112-.046-.109-.046-.106-.048-.105-.048-.102-.048-.1-.05-.097-.049-.095-.051-.093-.051-.09-.052-.087-.052-.085-.053-.083-.053-.08-.054-.077-.054v4.153zm8.74-8.179l-.257.004-.254.005-.25.008-.247.011-.244.012-.241.014-.237.016-.233.018-.231.021-.226.022-.224.023-.22.026-.216.027-.212.028-.21.031-.205.032-.202.033-.198.034-.194.036-.191.038-.187.038-.183.04-.179.041-.175.042-.172.043-.168.043-.163.045-.16.046-.155.046-.152.048-.148.048-.143.048-.139.049-.136.05-.131.05-.126.051-.123.051-.118.051-.114.052-.11.052-.106.052-.101.052-.096.052-.092.052-.088.052-.083.052-.079.052-.074.051-.07.052-.065.051-.06.05-.056.05-.051.05-.023.025-.023.024-.021.024-.02.025-.019.024-.018.024-.017.023-.015.024-.014.023-.013.023-.012.023-.01.023-.01.022-.008.022-.006.023-.006.021-.004.022-.004.021-.001.021-.001.021.001.021.001.021.004.021.004.022.006.021.006.023.008.022.01.022.01.023.012.023.013.023.014.023.015.024.017.023.018.024.019.024.02.025.021.024.023.024.023.025.051.05.056.05.06.05.065.051.07.052.074.051.079.052.083.052.088.052.092.052.096.052.101.052.106.052.11.052.114.052.118.051.123.051.126.051.131.05.136.05.139.049.143.048.148.048.152.048.155.046.16.046.163.045.168.043.172.043.175.042.179.041.183.04.187.038.191.038.194.036.198.034.202.033.205.032.21.031.212.028.216.027.22.026.224.023.226.022.231.021.233.018.237.016.241.014.244.012.247.011.25.008.254.005.257.004.26.001.26-.001.257-.004.254-.005.25-.008.247-.011.244-.012.241-.014.237-.016.233-.018.231-.021.226-.022.224-.023.22-.026.216-.027.212-.028.21-.031.205-.032.202-.033.198-.034.194-.036.191-.038.187-.038.183-.04.179-.041.175-.042.172-.043.168-.043.163-.045.16-.046.155-.046.152-.048.148-.048.143-.048.139-.049.136-.05.131-.05.126-.051.123-.051.118-.051.114-.052.11-.052.106-.052.101-.052.096-.052.092-.052.088-.052.083-.052.079-.052.074-.051.07-.052.065-.051.06-.05.056-.05.051-.05.023-.025.023-.024.021-.024.02-.025.019-.024.018-.024.017-.023.015-.024.014-.023.013-.023.012-.023.01-.023.01-.022.008-.022.006-.023.006-.021.004-.022.004-.021.001-.021.001-.021-.001-.021-.001-.021-.004-.021-.004-.022-.006-.021-.006-.023-.008-.022-.01-.022-.01-.023-.012-.023-.013-.023-.014-.023-.015-.024-.017-.023-.018-.024-.019-.024-.02-.025-.021-.024-.023-.024-.023-.025-.051-.05-.056-.05-.06-.05-.065-.051-.07-.052-.074-.051-.079-.052-.083-.052-.088-.052-.092-.052-.096-.052-.101-.052-.106-.052-.11-.052-.114-.052-.118-.051-.123-.051-.126-.051-.131-.05-.136-.05-.139-.049-.143-.048-.148-.048-.152-.048-.155-.046-.16-.046-.163-.045-.168-.043-.172-.043-.175-.042-.179-.041-.183-.04-.187-.038-.191-.038-.194-.036-.198-.034-.202-.033-.205-.032-.21-.031-.212-.028-.216-.027-.22-.026-.224-.023-.226-.022-.231-.021-.233-.018-.237-.016-.241-.014-.244-.012-.247-.011-.25-.008-.254-.005-.257-.004-.26-.001-.26.001z")},"insertDatabaseIcon"),rje=o(function(e,t){e.append("defs").append("symbol").attr("id",t+"-computer").attr("width","24").attr("height","24").append("path").attr("transform","scale(.5)").attr("d","M2 2v13h20v-13h-20zm18 11h-16v-9h16v9zm-10.228 6l.466-1h3.524l.467 1h-4.457zm14.228 3h-24l2-6h2.104l-1.33 4h18.45l-1.297-4h2.073l2 6zm-5-10h-14v-7h14v7z")},"insertComputerIcon"),nje=o(function(e,t){e.append("defs").append("symbol").attr("id",t+"-clock").attr("width","24").attr("height","24").append("path").attr("transform","scale(.5)").attr("d","M12 2c5.514 0 10 4.486 10 10s-4.486 10-10 10-10-4.486-10-10 4.486-10 10-10zm0-2c-6.627 0-12 5.373-12 12s5.373 12 12 12 12-5.373 12-12-5.373-12-12-12zm5.848 12.459c.202.038.202.333.001.372-1.907.361-6.045 1.111-6.547 1.111-.719 0-1.301-.582-1.301-1.301 0-.512.77-5.447 1.125-7.445.034-.192.312-.181.343.014l.985 6.238 5.394 1.011z")},"insertClockIcon"),ije=o(function(e,t){e.append("defs").append("marker").attr("id",t+"-arrowhead").attr("refX",9).attr("refY",5).attr("markerUnits","userSpaceOnUse").attr("markerWidth",12).attr("markerHeight",12).attr("orient","auto").append("path").attr("d","M 0 0 L 10 5 L 0 10 z")},"insertArrowHead"),aje=o(function(e,t){e.append("defs").append("marker").attr("id",t+"-arrowend").attr("refX",1).attr("refY",5).attr("markerUnits","userSpaceOnUse").attr("markerWidth",12).attr("markerHeight",12).attr("orient","auto").append("path").attr("d","M 10 0 L 0 5 L 10 10 z")},"insertArrowEnd"),sje=o(function(e,t){e.append("defs").append("marker").attr("id",t+"-filled-head").attr("refX",18).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L14,7 L9,1 Z")},"insertArrowFilledHead"),oje=o(function(e,t){let n=e.append("defs").append("marker").attr("id",t+"-crosshead").attr("markerWidth",15).attr("markerHeight",8).attr("orient","auto").attr("refX",16).attr("refY",4);n.append("path").attr("fill","black").attr("stroke","#000000").style("stroke-dasharray","0, 0").attr("stroke-width","1px").attr("d","M 9,2 V 6 L16,4 Z"),n.append("path").attr("fill","none").attr("stroke","#000000").style("stroke-dasharray","0, 0").attr("stroke-width","1px").attr("d","M 0,1 L 6,7 M 6,1 L 0,7")},"insertArrowCrossHead"),lje=o((e,t)=>({fontFamily:e[t+"FontFamily"],fontSize:e[t+"FontSize"],fontWeight:e[t+"FontWeight"]}),"getC4ShapeFont"),yh=(function(){function e(i,a,s,l,u,h,d){let f=a.append("text").attr("x",s+u/2).attr("y",l+h/2+5).style("text-anchor","middle").text(i);n(f,d)}o(e,"byText");function t(i,a,s,l,u,h,d,f){let{fontSize:p,fontFamily:m,fontWeight:g}=f,y=i.split(xt.lineBreakRegex);for(let v=0;v<y.length;v++){let x=v*p-p*(y.length-1)/2,b=a.append("text").attr("x",s+u/2).attr("y",l).style("text-anchor","middle").attr("dominant-baseline","middle").style("font-size",p).style("font-weight",g).style("font-family",m);b.append("tspan").attr("dy",x).text(y[v]).attr("alignment-baseline","mathematical"),n(b,d)}}o(t,"byTspan");function r(i,a,s,l,u,h,d,f){let p=a.append("switch"),g=p.append("foreignObject").attr("x",s).attr("y",l).attr("width",u).attr("height",h).append("xhtml:div").style("display","table").style("height","100%").style("width","100%");g.append("div").style("display","table-cell").style("text-align","center").style("vertical-align","middle").text(i),t(i,p,s,l,u,h,d,f),n(g,d)}o(r,"byFo");function n(i,a){for(let s in a)a.hasOwnProperty(s)&&i.attr(s,a[s])}return o(n,"_setTextAttrs"),function(i){return i.textPlacement==="fo"?r:i.textPlacement==="old"?e:t}})(),nc={drawRect:ZN,drawBoundary:JYe,drawC4Shape:eje,drawRels:QYe,drawImage:Eie,insertArrowHead:ije,insertArrowEnd:aje,insertArrowFilledHead:sje,insertArrowCrossHead:oje,insertDatabaseIcon:tje,insertComputerIcon:rje,insertClockIcon:nje}});function Rie(e){return Number.isSafeInteger(e)&&e>=0}var _ie=F(()=>{"use strict";o(Rie,"isLength")});function VE(e){return e!=null&&typeof e!="function"&&Rie(e.length)}var QN=F(()=>{"use strict";_ie();o(VE,"isArrayLike")});function Lie(e){return e==="__proto__"}var Die=F(()=>{"use strict";o(Lie,"isUnsafeProperty")});function Ud(e){return e==null||typeof e!="object"&&typeof e!="function"}var c2=F(()=>{"use strict";o(Ud,"isPrimitive")});function WE(e){return Object.getOwnPropertySymbols(e).filter(t=>Object.prototype.propertyIsEnumerable.call(e,t))}var JN=F(()=>{"use strict";o(WE,"getSymbols")});function vh(e){return e==null?e===void 0?"[object Undefined]":"[object Null]":Object.prototype.toString.call(e)}var u2=F(()=>{"use strict";o(vh,"getTag")});var h2,Yd,fm,pm,mm,d2,f2,p2,m2,qE,g2,Iy,y2,HE,UE,YE,jE,XE,KE,ZE,QE,JE,e4=F(()=>{"use strict";h2="[object RegExp]",Yd="[object String]",fm="[object Number]",pm="[object Boolean]",mm="[object Arguments]",d2="[object Symbol]",f2="[object Date]",p2="[object Map]",m2="[object Set]",qE="[object Array]",g2="[object ArrayBuffer]",Iy="[object Object]",y2="[object DataView]",HE="[object Uint8Array]",UE="[object Uint8ClampedArray]",YE="[object Uint16Array]",jE="[object Uint32Array]",XE="[object Int8Array]",KE="[object Int16Array]",ZE="[object Int32Array]",QE="[object Float32Array]",JE="[object Float64Array]"});function My(e){return ArrayBuffer.isView(e)&&!(e instanceof DataView)}var t4=F(()=>{"use strict";o(My,"isTypedArray")});function Iie(e,t){return Ny(e,void 0,e,new Map,t)}function Ny(e,t,r,n=new Map,i=void 0){let a=i?.(e,t,r,n);if(a!==void 0)return a;if(Ud(e))return e;if(n.has(e))return n.get(e);if(Array.isArray(e)){let s=new Array(e.length);n.set(e,s);for(let l=0;l<e.length;l++)s[l]=Ny(e[l],l,r,n,i);return Object.hasOwn(e,"index")&&(s.index=e.index),Object.hasOwn(e,"input")&&(s.input=e.input),s}if(e instanceof Date)return new Date(e.getTime());if(e instanceof RegExp){let s=new RegExp(e.source,e.flags);return s.lastIndex=e.lastIndex,s}if(e instanceof Map){let s=new Map;n.set(e,s);for(let[l,u]of e)s.set(l,Ny(u,l,r,n,i));return s}if(e instanceof Set){let s=new Set;n.set(e,s);for(let l of e)s.add(Ny(l,void 0,r,n,i));return s}if(typeof Buffer<"u"&&Buffer.isBuffer(e))return e.subarray();if(My(e)){let s=new(Object.getPrototypeOf(e)).constructor(e.length);n.set(e,s);for(let l=0;l<e.length;l++)s[l]=Ny(e[l],l,r,n,i);return s}if(e instanceof ArrayBuffer||typeof SharedArrayBuffer<"u"&&e instanceof SharedArrayBuffer)return e.slice(0);if(e instanceof DataView){let s=new DataView(e.buffer.slice(0),e.byteOffset,e.byteLength);return n.set(e,s),dl(s,e,r,n,i),s}if(typeof File<"u"&&e instanceof File){let s=new File([e],e.name,{type:e.type});return n.set(e,s),dl(s,e,r,n,i),s}if(typeof Blob<"u"&&e instanceof Blob){let s=new Blob([e],{type:e.type});return n.set(e,s),dl(s,e,r,n,i),s}if(e instanceof Error){let s=structuredClone(e);return n.set(e,s),s.message=e.message,s.name=e.name,s.stack=e.stack,s.cause=e.cause,s.constructor=e.constructor,dl(s,e,r,n,i),s}if(e instanceof Boolean){let s=new Boolean(e.valueOf());return n.set(e,s),dl(s,e,r,n,i),s}if(e instanceof Number){let s=new Number(e.valueOf());return n.set(e,s),dl(s,e,r,n,i),s}if(e instanceof String){let s=new String(e.valueOf());return n.set(e,s),dl(s,e,r,n,i),s}if(typeof e=="object"&&cje(e)){let s=Object.create(Object.getPrototypeOf(e));return n.set(e,s),dl(s,e,r,n,i),s}return e}function dl(e,t,r=e,n,i){let a=[...Object.keys(t),...WE(t)];for(let s=0;s<a.length;s++){let l=a[s],u=Object.getOwnPropertyDescriptor(e,l);(u==null||u.writable)&&(e[l]=Ny(t[l],l,r,n,i))}}function cje(e){switch(vh(e)){case mm:case qE:case g2:case y2:case pm:case f2:case QE:case JE:case XE:case KE:case ZE:case p2:case fm:case Iy:case h2:case m2:case Yd:case d2:case HE:case UE:case YE:case jE:return!0;default:return!1}}var Mie=F(()=>{"use strict";JN();u2();e4();c2();t4();o(Iie,"cloneDeepWith");o(Ny,"cloneDeepWithImpl");o(dl,"copyProperties");o(cje,"isCloneableObject")});function Nie(e,t){return Iie(e,(r,n,i,a)=>{let s=t?.(r,n,i,a);if(s!==void 0)return s;if(typeof e=="object"){if(vh(e)===Iy&&typeof e.constructor!="function"){let l={};return a.set(e,l),dl(l,e,i,a),l}switch(Object.prototype.toString.call(e)){case fm:case Yd:case pm:{let l=new e.constructor(e?.valueOf());return dl(l,e),l}case mm:{let l={};return dl(l,e),l.length=e.length,l[Symbol.iterator]=e[Symbol.iterator],l}default:return}}})}var Pie=F(()=>{"use strict";Mie();u2();e4();o(Nie,"cloneDeepWith")});function eP(e){return Nie(e)}var Oie=F(()=>{"use strict";Pie();o(eP,"cloneDeep")});function v2(e){return e!==null&&typeof e=="object"&&vh(e)==="[object Arguments]"}var tP=F(()=>{"use strict";u2();o(v2,"isArguments")});function x2(e){return typeof e=="object"&&e!==null}var rP=F(()=>{"use strict";o(x2,"isObjectLike")});function Bie(e){return x2(e)&&VE(e)}var $ie=F(()=>{"use strict";QN();rP();o(Bie,"isArrayLikeObject")});function Fie(e){return Array.isArray(e)}var zie=F(()=>{"use strict";o(Fie,"isArray")});function gm(e,t){if(typeof e!="function"||t!=null&&typeof t!="function")throw new TypeError("Expected a function");let r=o(function(...i){let a=t?t.apply(this,i):i[0],s=r.cache;if(s.has(a))return s.get(a);let l=e.apply(this,i);return r.cache=s.set(a,l)||s,l},"memoized"),n=gm.Cache||Map;return r.cache=new n,r}var Gie=F(()=>{"use strict";o(gm,"memoize");gm.Cache=Map});function Vie(){}var Wie=F(()=>{"use strict";o(Vie,"noop")});function qie(e){let t=e?.constructor,r=typeof t=="function"?t.prototype:Object.prototype;return e===r}var Hie=F(()=>{"use strict";o(qie,"isPrototype")});function jd(e){return My(e)}var r4=F(()=>{"use strict";t4();o(jd,"isTypedArray")});function iP(e){if(Ud(e))return e;let t=vh(e);if(!uje(e))return{};if(Fie(e)){let n=Array.from(e);return e.length>0&&typeof e[0]=="string"&&Object.hasOwn(e,"index")&&(n.index=e.index,n.input=e.input),n}if(jd(e)){let n=e,i=n.constructor;return new i(n.buffer,n.byteOffset,n.length)}if(t===g2)return new ArrayBuffer(e.byteLength);if(t===y2){let n=e,i=n.buffer,a=n.byteOffset,s=n.byteLength,l=new ArrayBuffer(s),u=new Uint8Array(i,a,s);return new Uint8Array(l).set(u),new DataView(l)}if(t===pm||t===fm||t===Yd){let n=e.constructor,i=new n(e.valueOf());return t===Yd?dje(i,e):nP(i,e),i}if(t===f2)return new Date(Number(e));if(t===h2){let n=e,i=new RegExp(n.source,n.flags);return i.lastIndex=n.lastIndex,i}if(t===d2)return Object(Symbol.prototype.valueOf.call(e));if(t===p2){let n=e,i=new Map;return n.forEach((a,s)=>{i.set(s,a)}),i}if(t===m2){let n=e,i=new Set;return n.forEach(a=>{i.add(a)}),i}if(t===mm){let n=e,i={};return nP(i,n),i.length=n.length,i[Symbol.iterator]=n[Symbol.iterator],i}let r={};return fje(r,e),nP(r,e),hje(r,e),r}function uje(e){switch(vh(e)){case mm:case qE:case g2:case y2:case pm:case f2:case QE:case JE:case XE:case KE:case ZE:case p2:case fm:case Iy:case h2:case m2:case Yd:case d2:case HE:case UE:case YE:case jE:return!0;default:return!1}}function nP(e,t){for(let r in t)Object.hasOwn(t,r)&&(e[r]=t[r])}function hje(e,t){let r=Object.getOwnPropertySymbols(t);for(let n=0;n<r.length;n++){let i=r[n];Object.prototype.propertyIsEnumerable.call(t,i)&&(e[i]=t[i])}}function dje(e,t){let r=t.valueOf().length;for(let n in t)Object.hasOwn(t,n)&&(Number.isNaN(Number(n))||Number(n)>=r)&&(e[n]=t[n])}function fje(e,t){let r=Object.getPrototypeOf(t);r!==null&&typeof t.constructor=="function"&&Object.setPrototypeOf(e,r)}var Uie=F(()=>{"use strict";c2();u2();e4();zie();r4();o(iP,"clone");o(uje,"isCloneableObject");o(nP,"copyOwnProperties");o(hje,"copySymbolProperties");o(dje,"cloneStringObjectProperties");o(fje,"copyPrototype")});function n4(e){if(typeof e!="object"||e==null)return!1;if(Object.getPrototypeOf(e)===null)return!0;if(Object.prototype.toString.call(e)!=="[object Object]"){let r=e[Symbol.toStringTag];return r==null||!Object.getOwnPropertyDescriptor(e,Symbol.toStringTag)?.writable?!1:e.toString()===`[object ${r}]`}let t=e;for(;Object.getPrototypeOf(t)!==null;)t=Object.getPrototypeOf(t);return Object.getPrototypeOf(e)===t}var Yie=F(()=>{"use strict";o(n4,"isPlainObject")});function jie(e){if(Ud(e))return e;if(Array.isArray(e)||My(e)||e instanceof ArrayBuffer||typeof SharedArrayBuffer<"u"&&e instanceof SharedArrayBuffer)return e.slice(0);let t=Object.getPrototypeOf(e);if(t==null)return Object.assign(Object.create(t),e);let r=t.constructor;if(e instanceof Date||e instanceof Map||e instanceof Set)return new r(e);if(e instanceof RegExp){let n=new r(e);return n.lastIndex=e.lastIndex,n}if(e instanceof DataView)return new r(e.buffer.slice(0));if(e instanceof Error){let n;return e instanceof AggregateError?n=new r(e.errors,e.message,{cause:e.cause}):n=new r(e.message,{cause:e.cause}),n.stack=e.stack,Object.assign(n,e),n}if(typeof File<"u"&&e instanceof File)return new r([e],e.name,{type:e.type,lastModified:e.lastModified});if(typeof e=="object"){let n=Object.create(t);return Object.assign(n,e)}return e}var Xie=F(()=>{"use strict";c2();t4();o(jie,"clone")});function Kie(e,...t){let r=t.slice(0,-1),n=t[t.length-1],i=e;for(let a=0;a<r.length;a++){let s=r[a];i=i4(i,s,n,new Map)}return i}function i4(e,t,r,n){if(Ud(e)&&(e=Object(e)),t==null||typeof t!="object")return e;if(n.has(t))return jie(n.get(t));if(n.set(t,e),Array.isArray(t)){t=t.slice();for(let a=0;a<t.length;a++)t[a]=t[a]??void 0}let i=[...Object.keys(t),...WE(t)];for(let a=0;a<i.length;a++){let s=i[a];if(Lie(s))continue;let l=t[s],u=e[s];if(v2(l)&&(l={...l}),v2(u)&&(u={...u}),typeof Buffer<"u"&&Buffer.isBuffer(l)&&(l=eP(l)),Array.isArray(l))if(Array.isArray(u)){let d=[],f=Reflect.ownKeys(u);for(let p=0;p<f.length;p++){let m=f[p];d[m]=u[m]}u=d}else if(Bie(u)){let d=[];for(let f=0;f<u.length;f++)d[f]=u[f];u=d}else u=[];let h=r(u,l,s,e,t,n);h!==void 0?e[s]=h:Array.isArray(l)||x2(u)&&x2(l)&&(n4(u)||n4(l)||jd(u)||jd(l))?e[s]=i4(u,l,r,n):u==null&&n4(l)?e[s]=i4({},l,r,n):u==null&&jd(l)?e[s]=eP(l):(u===void 0||l!==void 0)&&(e[s]=l)}return e}var Zie=F(()=>{"use strict";Oie();Die();Xie();c2();JN();tP();$ie();rP();Yie();r4();o(Kie,"mergeWith");o(i4,"mergeWithDeep")});function aP(e,...t){return Kie(e,...t,Vie)}var Qie=F(()=>{"use strict";Zie();Wie();o(aP,"merge")});function a4(e){if(e==null)return!0;if(VE(e))return typeof e.splice!="function"&&typeof e!="string"&&(typeof Buffer>"u"||!Buffer.isBuffer(e))&&!jd(e)&&!v2(e)?!1:e.length===0;if(typeof e=="object"){if(e instanceof Map||e instanceof Set)return e.size===0;let t=Object.keys(e);return qie(e)?t.filter(r=>r!=="constructor").length===0:t.length===0}return!0}var Jie=F(()=>{"use strict";tP();QN();r4();Hie();o(a4,"isEmpty")});var s4=F(()=>{"use strict";Gie();Uie();Qie();Jie()});function lP(e,t){if(!e)return t;let r=`curve${e.charAt(0).toUpperCase()+e.slice(1)}`;return pje[r]??t}function vje(e,t){let r=e.trim();if(r)return t.securityLevel!=="loose"?(0,rae.sanitizeUrl)(r):r}function aae(e,t){return!e||!t?0:Math.sqrt(Math.pow(t.x-e.x,2)+Math.pow(t.y-e.y,2))}function bje(e){let t,r=0;e.forEach(i=>{r+=aae(i,t),t=i});let n=r/2;return cP(e,n)}function Tje(e){return e.length===1?e[0]:bje(e)}function wje(e,t,r){let n=structuredClone(r);Z.info("our points",n),t!=="start_left"&&t!=="start_right"&&n.reverse();let i=25+e,a=cP(n,i),s=10+e*.5,l=Math.atan2(n[0].y-a.y,n[0].x-a.x),u={x:0,y:0};return t==="start_left"?(u.x=Math.sin(l+Math.PI)*s+(n[0].x+a.x)/2,u.y=-Math.cos(l+Math.PI)*s+(n[0].y+a.y)/2):t==="end_right"?(u.x=Math.sin(l-Math.PI)*s+(n[0].x+a.x)/2-5,u.y=-Math.cos(l-Math.PI)*s+(n[0].y+a.y)/2-5):t==="end_left"?(u.x=Math.sin(l)*s+(n[0].x+a.x)/2-5,u.y=-Math.cos(l)*s+(n[0].y+a.y)/2-5):(u.x=Math.sin(l)*s+(n[0].x+a.x)/2,u.y=-Math.cos(l)*s+(n[0].y+a.y)/2),u}function uP(e){let t="",r="";for(let n of e)n!==void 0&&(n.startsWith("color:")||n.startsWith("text-align:")?r=r+n+";":t=t+n+";");return{style:t,labelStyle:r}}function kje(e){let t="",r="0123456789abcdef",n=r.length;for(let i=0;i<e;i++)t+=r.charAt(Math.floor(Math.random()*n));return t}function l4(e,t){return b2(e,t).height}function Ca(e,t){return b2(e,t).width}function fP(e){return"str"in e}function qr(e,t){return aP({},e,t)}function kn(e){return e??null}function Lje(e,t){let r=Math.round(e.x),n=Math.round(e.y),i=t.replace(/(\d+\.\d+)/g,a=>Math.round(parseFloat(a)).toString());return i.includes(r.toString())||i.includes(n.toString())}var rae,oP,pje,mje,gje,nae,iae,yje,xje,eae,cP,Cje,tae,hP,dP,Sje,Eje,ym,Aje,b2,sP,o4,Rje,_je,As,Zt,sae,Rs,eu,Qt=F(()=>{"use strict";rae=Xs(Ly(),1);$r();Vr();Ek();vt();Up();G0();s4();yS();oP="\u200B",pje={curveBasis:rc,curveBasisClosed:_E,curveBasisOpen:LE,curveBumpX:Xb,curveBumpY:Kb,curveBundle:$N,curveCardinalClosed:FN,curveCardinalOpen:GN,curveCardinal:e2,curveCatmullRomClosed:WN,curveCatmullRomOpen:qN,curveCatmullRom:n2,curveLinear:Jc,curveLinearClosed:PE,curveMonotoneX:i2,curveMonotoneY:a2,curveNatural:Ry,curveStep:_y,curveStepAfter:o2,curveStepBefore:s2},mje=/\s*(?:(\w+)(?=:):|(\w+))\s*(?:(\w+)|((?:(?!}%{2}).|\r?\n)*))?\s*(?:}%{2})?/gi,gje=o(function(e,t){let r=nae(e,/(?:init\b)|(?:initialize\b)/),n={};if(Array.isArray(r)){let s=r.map(l=>l.args);W0(s),n=Yn(n,[...s])}else n=r.args;if(!n)return;let i=ny(e,t),a="config";return n[a]!==void 0&&(i==="flowchart-v2"&&(i="flowchart"),n[i]=n[a],delete n[a]),n},"detectInit"),nae=o(function(e,t=null){try{let r=new RegExp(`[%]{2}(?![{]${mje.source})(?=[}][%]{2}).*
+`,"ig");e=e.trim().replace(r,"").replace(/'/gm,'"'),Z.debug(`Detecting diagram directive${t!==null?" type:"+t:""} based on the text:${e}`);let n,i=[];for(;(n=Hp.exec(e))!==null;)if(n.index===Hp.lastIndex&&Hp.lastIndex++,n&&!t||t&&n[1]?.match(t)||t&&n[2]?.match(t)){let a=n[1]?n[1]:n[2],s=n[3]?n[3].trim():n[4]?JSON.parse(n[4].trim()):null;i.push({type:a,args:s})}return i.length===0?{type:e,args:null}:i.length===1?i[0]:i}catch(r){return Z.error(`ERROR: ${r.message} - Unable to parse directive type: '${t}' based on the text: '${e}'`),{type:void 0,args:null}}},"detectDirective"),iae=o(function(e){return e.replace(Hp,"")},"removeDirectives"),yje=o(function(e,t){for(let[r,n]of t.entries())if(n.match(e))return r;return-1},"isSubstringInArray");o(lP,"interpolateToCurve");o(vje,"formatUrl");xje=o((e,...t)=>{let r=e.split("."),n=r.length-1,i=r[n],a=window;for(let s=0;s<n;s++)if(a=a[r[s]],!a){Z.error(`Function name: ${e} not found in window`);return}a[i](...t)},"runFunc");o(aae,"distance");o(bje,"traverseEdge");o(Tje,"calcLabelPosition");eae=o((e,t=2)=>{let r=Math.pow(10,t);return Math.round(e*r)/r},"roundNumber"),cP=o((e,t)=>{let r,n=t;for(let i of e){if(r){let a=aae(i,r);if(a===0)return r;if(a<n)n-=a;else{let s=n/a;if(s<=0)return r;if(s>=1)return{x:i.x,y:i.y};if(s>0&&s<1)return{x:eae((1-s)*r.x+s*i.x,5),y:eae((1-s)*r.y+s*i.y,5)}}}r=i}throw new Error("Could not find a suitable point for the given distance")},"calculatePoint"),Cje=o((e,t,r)=>{Z.info(`our points ${JSON.stringify(t)}`),t[0]!==r&&(t=t.reverse());let i=cP(t,25),a=e?10:5,s=Math.atan2(t[0].y-i.y,t[0].x-i.x),l={x:0,y:0};return l.x=Math.sin(s)*a+(t[0].x+i.x)/2,l.y=-Math.cos(s)*a+(t[0].y+i.y)/2,l},"calcCardinalityPosition");o(wje,"calcTerminalLabelPosition");o(uP,"getStylesFromArray");tae=0,hP=o(()=>(tae++,"id-"+Math.random().toString(36).substr(2,12)+"-"+tae),"generateId");o(kje,"makeRandomHex");dP=o(e=>kje(e.length),"random"),Sje=o(function(){return{x:0,y:0,fill:void 0,anchor:"start",style:"#666",width:100,height:100,textMargin:0,rx:0,ry:0,valign:void 0,text:""}},"getTextObj"),Eje=o(function(e,t){let r=t.text.replace(xt.lineBreakRegex," "),[,n]=As(t.fontSize),i=e.append("text");i.attr("x",t.x),i.attr("y",t.y),i.style("text-anchor",t.anchor),i.style("font-family",t.fontFamily),i.style("font-size",n),i.style("font-weight",t.fontWeight),i.attr("fill",t.fill),t.class!==void 0&&i.attr("class",t.class);let a=i.append("tspan");return a.attr("x",t.x+t.textMargin*2),a.attr("fill",t.fill),a.text(r),i},"drawSimpleText"),ym=gm((e,t,r)=>{if(!e||(r=Object.assign({fontSize:12,fontWeight:400,fontFamily:"Arial",joinWith:"<br/>"},r),xt.lineBreakRegex.test(e)))return e;let n=e.split(" ").filter(Boolean),i=[],a="";return n.forEach((s,l)=>{let u=Ca(`${s} `,r),h=Ca(a,r);if(u>t){let{hyphenatedStrings:p,remainingWord:m}=Aje(s,t,"-",r);i.push(a,...p),a=m}else h+u>=t?(i.push(a),a=s):a=[a,s].filter(Boolean).join(" ");l+1===n.length&&i.push(a)}),i.filter(s=>s!=="").join(r.joinWith)},(e,t,r)=>`${e}${t}${r.fontSize}${r.fontWeight}${r.fontFamily}${r.joinWith}`),Aje=gm((e,t,r="-",n)=>{n=Object.assign({fontSize:12,fontWeight:400,fontFamily:"Arial",margin:0},n);let i=[...e],a=[],s="";return i.forEach((l,u)=>{let h=`${s}${l}`;if(Ca(h,n)>=t){let f=u+1,p=i.length===f,m=`${h}${r}`;a.push(p?h:m),s=""}else s=h}),{hyphenatedStrings:a,remainingWord:s}},(e,t,r="-",n)=>`${e}${t}${r}${n.fontSize}${n.fontWeight}${n.fontFamily}`);o(l4,"calculateTextHeight");o(Ca,"calculateTextWidth");b2=gm((e,t)=>{let{fontSize:r=12,fontFamily:n="Arial",fontWeight:i=400}=t;if(!e)return{width:0,height:0};let[,a]=As(r),s=["sans-serif",n],l=e.split(xt.lineBreakRegex),u=[],h=et("body");if(!h.remove)return{width:0,height:0,lineHeight:0};let d=h.append("svg");for(let p of s){let m=0,g={width:0,height:0,lineHeight:0};for(let y of l){let v=Sje();v.text=y||oP;let x=Eje(d,v).style("font-size",a).style("font-weight",i).style("font-family",p),b=(x._groups||x)[0][0].getBBox();if(b.width===0&&b.height===0)throw new Error("svg element not in render tree");g.width=Math.round(Math.max(g.width,b.width)),m=Math.round(b.height),g.height+=m,g.lineHeight=Math.round(Math.max(g.lineHeight,m))}u.push(g)}d.remove();let f=isNaN(u[1].height)||isNaN(u[1].width)||isNaN(u[1].lineHeight)||u[0].height>u[1].height&&u[0].width>u[1].width&&u[0].lineHeight>u[1].lineHeight?0:1;return u[f]},(e,t)=>`${e}${t.fontSize}${t.fontWeight}${t.fontFamily}`),sP=class{constructor(t=!1,r){this.count=0;this.count=r?r.length:0,this.next=t?()=>this.count++:()=>Date.now()}static{o(this,"InitIDGenerator")}},Rje=o(function(e){return o4=o4||document.createElement("div"),e=escape(e).replace(/%26/g,"&").replace(/%23/g,"#").replace(/%3B/g,";"),o4.innerHTML=e,unescape(o4.textContent)},"entityDecode");o(fP,"isDetailedError");_je=o((e,t,r,n)=>{if(!n)return;let i=e.node()?.getBBox();i&&e.append("text").text(n).attr("text-anchor","middle").attr("x",i.x+i.width/2).attr("y",-r).attr("class",t)},"insertTitle"),As=o(e=>{if(typeof e=="number")return[e,e+"px"];let t=parseInt(e??"",10);return Number.isNaN(t)?[void 0,void 0]:e===String(t)?[t,e+"px"]:[t,e]},"parseFontSize");o(qr,"cleanAndMerge");Zt={assignWithDepth:Yn,wrapLabel:ym,calculateTextHeight:l4,calculateTextWidth:Ca,calculateTextDimensions:b2,cleanAndMerge:qr,detectInit:gje,detectDirective:nae,isSubstringInArray:yje,interpolateToCurve:lP,calcLabelPosition:Tje,calcCardinalityPosition:Cje,calcTerminalLabelPosition:wje,formatUrl:vje,getStylesFromArray:uP,generateId:hP,random:dP,runFunc:xje,entityDecode:Rje,insertTitle:_je,isLabelCoordinateInPath:Lje,parseFontSize:As,InitIDGenerator:sP},sae=o(function(e){let t=e;return t=t.replace(/style.*:\S*#.*;/g,function(r){return r.substring(0,r.length-1)}),t=t.replace(/classDef.*:\S*#.*;/g,function(r){return r.substring(0,r.length-1)}),t=t.replace(/#\w+;/g,function(r){let n=r.substring(1,r.length-1);return/^\+?\d+$/.test(n)?"\uFB02\xB0\xB0"+n+"\xB6\xDF":"\uFB02\xB0"+n+"\xB6\xDF"}),t},"encodeEntities"),Rs=o(function(e){return e.replace(/fl°°/g,"&#").replace(/fl°/g,"&").replace(/¶ß/g,";")},"decodeEntities"),eu=o((e,t,{counter:r=0,prefix:n,suffix:i},a)=>a||`${n?`${n}_`:""}${e}_${t}_${r}${i?`_${i}`:""}`,"getEdgeId");o(kn,"handleUndefinedAttr");o(Lje,"isLabelCoordinateInPath")});function ic(e,t,r,n,i){if(!t[e].width)if(r)t[e].text=ym(t[e].text,i,n),t[e].textLines=t[e].text.split(xt.lineBreakRegex).length,t[e].width=i,t[e].height=l4(t[e].text,n);else{let a=t[e].text.split(xt.lineBreakRegex);t[e].textLines=a.length;let s=0;t[e].height=0,t[e].width=0;for(let l of a)t[e].width=Math.max(Ca(l,n),t[e].width),s=l4(l,n),t[e].height=t[e].height+s}}function hae(e,t,r,n,i){let a=new d4(i);a.data.widthLimit=r.data.widthLimit/Math.min(pP,n.length);for(let[s,l]of n.entries()){let u=0;l.image={width:0,height:0,Y:0},l.sprite&&(l.image.width=48,l.image.height=48,l.image.Y=u,u=l.image.Y+l.image.height);let h=l.wrap&&sr.wrap,d=c4(sr);if(d.fontSize=d.fontSize+2,d.fontWeight="bold",ic("label",l,h,d,a.data.widthLimit),l.label.Y=u+8,u=l.label.Y+l.label.height,l.type&&l.type.text!==""){l.type.text="["+l.type.text+"]";let g=c4(sr);ic("type",l,h,g,a.data.widthLimit),l.type.Y=u+5,u=l.type.Y+l.type.height}if(l.descr&&l.descr.text!==""){let g=c4(sr);g.fontSize=g.fontSize-2,ic("descr",l,h,g,a.data.widthLimit),l.descr.Y=u+20,u=l.descr.Y+l.descr.height}if(s==0||s%pP===0){let g=r.data.startx+sr.diagramMarginX,y=r.data.stopy+sr.diagramMarginY+u;a.setData(g,g,y,y)}else{let g=a.data.stopx!==a.data.startx?a.data.stopx+sr.diagramMarginX:a.data.startx,y=a.data.starty;a.setData(g,g,y,y)}a.name=l.alias;let f=i.db.getC4ShapeArray(l.alias),p=i.db.getC4ShapeKeys(l.alias);p.length>0&&uae(a,e,f,p),t=l.alias;let m=i.db.getBoundaries(t);m.length>0&&hae(e,t,a,m,i),l.alias!=="global"&&cae(e,l,a),r.data.stopy=Math.max(a.data.stopy+sr.c4ShapeMargin,r.data.stopy),r.data.stopx=Math.max(a.data.stopx+sr.c4ShapeMargin,r.data.stopx),u4=Math.max(u4,r.data.stopx),h4=Math.max(h4,r.data.stopy)}}var u4,h4,lae,pP,sr,d4,mP,T2,c4,Dje,cae,uae,eo,oae,Ije,Mje,Nje,gP,dae=F(()=>{"use strict";$r();Aie();vt();p8();Vr();k8();Xt();G0();Qt();$n();u4=0,h4=0,lae=4,pP=2;ob.yy=pb;sr={},d4=class{static{o(this,"Bounds")}constructor(t){this.name="",this.data={},this.data.startx=void 0,this.data.stopx=void 0,this.data.starty=void 0,this.data.stopy=void 0,this.data.widthLimit=void 0,this.nextData={},this.nextData.startx=void 0,this.nextData.stopx=void 0,this.nextData.starty=void 0,this.nextData.stopy=void 0,this.nextData.cnt=0,mP(t.db.getConfig())}setData(t,r,n,i){this.nextData.startx=this.data.startx=t,this.nextData.stopx=this.data.stopx=r,this.nextData.starty=this.data.starty=n,this.nextData.stopy=this.data.stopy=i}updateVal(t,r,n,i){t[r]===void 0?t[r]=n:t[r]=i(n,t[r])}insert(t){this.nextData.cnt=this.nextData.cnt+1;let r=this.nextData.startx===this.nextData.stopx?this.nextData.stopx+t.margin:this.nextData.stopx+t.margin*2,n=r+t.width,i=this.nextData.starty+t.margin*2,a=i+t.height;(r>=this.data.widthLimit||n>=this.data.widthLimit||this.nextData.cnt>lae)&&(r=this.nextData.startx+t.margin+sr.nextLinePaddingX,i=this.nextData.stopy+t.margin*2,this.nextData.stopx=n=r+t.width,this.nextData.starty=this.nextData.stopy,this.nextData.stopy=a=i+t.height,this.nextData.cnt=1),t.x=r,t.y=i,this.updateVal(this.data,"startx",r,Math.min),this.updateVal(this.data,"starty",i,Math.min),this.updateVal(this.data,"stopx",n,Math.max),this.updateVal(this.data,"stopy",a,Math.max),this.updateVal(this.nextData,"startx",r,Math.min),this.updateVal(this.nextData,"starty",i,Math.min),this.updateVal(this.nextData,"stopx",n,Math.max),this.updateVal(this.nextData,"stopy",a,Math.max)}init(t){this.name="",this.data={startx:void 0,stopx:void 0,starty:void 0,stopy:void 0,widthLimit:void 0},this.nextData={startx:void 0,stopx:void 0,starty:void 0,stopy:void 0,cnt:0},mP(t.db.getConfig())}bumpLastMargin(t){this.data.stopx+=t,this.data.stopy+=t}},mP=o(function(e){Yn(sr,e),e.fontFamily&&(sr.personFontFamily=sr.systemFontFamily=sr.messageFontFamily=e.fontFamily),e.fontSize&&(sr.personFontSize=sr.systemFontSize=sr.messageFontSize=e.fontSize),e.fontWeight&&(sr.personFontWeight=sr.systemFontWeight=sr.messageFontWeight=e.fontWeight)},"setConf"),T2=o((e,t)=>({fontFamily:e[t+"FontFamily"],fontSize:e[t+"FontSize"],fontWeight:e[t+"FontWeight"]}),"c4ShapeFont"),c4=o(e=>({fontFamily:e.boundaryFontFamily,fontSize:e.boundaryFontSize,fontWeight:e.boundaryFontWeight}),"boundaryFont"),Dje=o(e=>({fontFamily:e.messageFontFamily,fontSize:e.messageFontSize,fontWeight:e.messageFontWeight}),"messageFont");o(ic,"calcC4ShapeTextWH");cae=o(function(e,t,r){t.x=r.data.startx,t.y=r.data.starty,t.width=r.data.stopx-r.data.startx,t.height=r.data.stopy-r.data.starty,t.label.y=sr.c4ShapeMargin-35;let n=t.wrap&&sr.wrap,i=c4(sr);i.fontSize=i.fontSize+2,i.fontWeight="bold";let a=Ca(t.label.text,i);ic("label",t,n,i,a),nc.drawBoundary(e,t,sr)},"drawBoundary"),uae=o(function(e,t,r,n){let i=0;for(let a of n){i=0;let s=r[a],l=T2(sr,s.typeC4Shape.text);switch(l.fontSize=l.fontSize-2,s.typeC4Shape.width=Ca("\xAB"+s.typeC4Shape.text+"\xBB",l),s.typeC4Shape.height=l.fontSize+2,s.typeC4Shape.Y=sr.c4ShapePadding,i=s.typeC4Shape.Y+s.typeC4Shape.height-4,s.image={width:0,height:0,Y:0},s.typeC4Shape.text){case"person":case"external_person":s.image.width=48,s.image.height=48,s.image.Y=i,i=s.image.Y+s.image.height;break}s.sprite&&(s.image.width=48,s.image.height=48,s.image.Y=i,i=s.image.Y+s.image.height);let u=s.wrap&&sr.wrap,h=sr.width-sr.c4ShapePadding*2,d=T2(sr,s.typeC4Shape.text);if(d.fontSize=d.fontSize+2,d.fontWeight="bold",ic("label",s,u,d,h),s.label.Y=i+8,i=s.label.Y+s.label.height,s.type&&s.type.text!==""){s.type.text="["+s.type.text+"]";let m=T2(sr,s.typeC4Shape.text);ic("type",s,u,m,h),s.type.Y=i+5,i=s.type.Y+s.type.height}else if(s.techn&&s.techn.text!==""){s.techn.text="["+s.techn.text+"]";let m=T2(sr,s.techn.text);ic("techn",s,u,m,h),s.techn.Y=i+5,i=s.techn.Y+s.techn.height}let f=i,p=s.label.width;if(s.descr&&s.descr.text!==""){let m=T2(sr,s.typeC4Shape.text);ic("descr",s,u,m,h),s.descr.Y=i+20,i=s.descr.Y+s.descr.height,p=Math.max(s.label.width,s.descr.width),f=i-s.descr.textLines*5}p=p+sr.c4ShapePadding,s.width=Math.max(s.width||sr.width,p,sr.width),s.height=Math.max(s.height||sr.height,f,sr.height),s.margin=s.margin||sr.c4ShapeMargin,e.insert(s),nc.drawC4Shape(t,s,sr)}e.bumpLastMargin(sr.c4ShapeMargin)},"drawC4ShapeArray"),eo=class{static{o(this,"Point")}constructor(t,r){this.x=t,this.y=r}},oae=o(function(e,t){let r=e.x,n=e.y,i=t.x,a=t.y,s=r+e.width/2,l=n+e.height/2,u=Math.abs(r-i),h=Math.abs(n-a),d=h/u,f=e.height/e.width,p=null;return n==a&&r<i?p=new eo(r+e.width,l):n==a&&r>i?p=new eo(r,l):r==i&&n<a?p=new eo(s,n+e.height):r==i&&n>a&&(p=new eo(s,n)),r>i&&n<a?f>=d?p=new eo(r,l+d*e.width/2):p=new eo(s-u/h*e.height/2,n+e.height):r<i&&n<a?f>=d?p=new eo(r+e.width,l+d*e.width/2):p=new eo(s+u/h*e.height/2,n+e.height):r<i&&n>a?f>=d?p=new eo(r+e.width,l-d*e.width/2):p=new eo(s+e.height/2*u/h,n):r>i&&n>a&&(f>=d?p=new eo(r,l-e.width/2*d):p=new eo(s-e.height/2*u/h,n)),p},"getIntersectPoint"),Ije=o(function(e,t){let r={x:0,y:0};r.x=t.x+t.width/2,r.y=t.y+t.height/2;let n=oae(e,r);r.x=e.x+e.width/2,r.y=e.y+e.height/2;let i=oae(t,r);return{startPoint:n,endPoint:i}},"getIntersectPoints"),Mje=o(function(e,t,r,n,i){let a=0;for(let s of t){a=a+1;let l=s.wrap&&sr.wrap,u=Dje(sr);n.db.getC4Type()==="C4Dynamic"&&(s.label.text=a+": "+s.label.text);let d=Ca(s.label.text,u);ic("label",s,l,u,d),s.techn&&s.techn.text!==""&&(d=Ca(s.techn.text,u),ic("techn",s,l,u,d)),s.descr&&s.descr.text!==""&&(d=Ca(s.descr.text,u),ic("descr",s,l,u,d));let f=r(s.from),p=r(s.to),m=Ije(f,p);s.startPoint=m.startPoint,s.endPoint=m.endPoint}nc.drawRels(e,t,sr,i)},"drawRels");o(hae,"drawInsideBoundary");Nje=o(function(e,t,r,n){sr=Ae().c4;let i=Ae().securityLevel,a;i==="sandbox"&&(a=et("#i"+t));let s=i==="sandbox"?et(a.nodes()[0].contentDocument.body):et("body"),l=n.db;n.db.setWrap(sr.wrap),lae=l.getC4ShapeInRow(),pP=l.getC4BoundaryInRow(),Z.debug(`C:${JSON.stringify(sr,null,2)}`);let u=i==="sandbox"?s.select(`[id="${t}"]`):et(`[id="${t}"]`);nc.insertComputerIcon(u,t),nc.insertDatabaseIcon(u,t),nc.insertClockIcon(u,t);let h=new d4(n);h.setData(sr.diagramMarginX,sr.diagramMarginX,sr.diagramMarginY,sr.diagramMarginY),h.data.widthLimit=screen.availWidth,u4=sr.diagramMarginX,h4=sr.diagramMarginY;let d=n.db.getTitle(),f=n.db.getBoundaries("");hae(u,"",h,f,n),nc.insertArrowHead(u,t),nc.insertArrowEnd(u,t),nc.insertArrowCrossHead(u,t),nc.insertArrowFilledHead(u,t),Mje(u,n.db.getRels(),n.db.getC4Shape,n,t),h.data.stopx=u4,h.data.stopy=h4;let p=h.data,g=p.stopy-p.starty+2*sr.diagramMarginY,v=p.stopx-p.startx+2*sr.diagramMarginX;d&&u.append("text").text(d).attr("x",(p.stopx-p.startx)/2-4*sr.diagramMarginX).attr("y",p.starty+sr.diagramMarginY),Wr(u,g,v,sr.useMaxWidth);let x=d?60:0;u.attr("viewBox",p.startx-sr.diagramMarginX+" -"+(sr.diagramMarginY+x)+" "+v+" "+(g+x)),Z.debug("models:",p)},"draw"),gP={drawPersonOrSystemArray:uae,drawBoundary:cae,setConf:mP,draw:Nje}});var Pje,fae,pae=F(()=>{"use strict";Pje=o(e=>`.person {
     stroke: ${e.personBorder};
     fill: ${e.personBkg};
   }
-`,"getStyles"),ste=Uze});var lte={};xr(lte,{diagram:()=>Hze});var Hze,cte=z(()=>{"use strict";ND();WD();ate();ote();Hze={parser:eX,db:Rv,renderer:IM,styles:ste,init:o(({c4:e,wrap:t})=>{IM.setConf(e),Rv.setWrap(t)},"init")}});function Ete(e){return typeof e>"u"||e===null}function Kze(e){return typeof e=="object"&&e!==null}function Zze(e){return Array.isArray(e)?e:Ete(e)?[]:[e]}function Qze(e,t){var r,i,n,a;if(t)for(a=Object.keys(t),r=0,i=a.length;r<i;r+=1)n=a[r],e[n]=t[n];return e}function Jze(e,t){var r="",i;for(i=0;i<t;i+=1)r+=e;return r}function eGe(e){return e===0&&Number.NEGATIVE_INFINITY===1/e}function Ate(e,t){var r="",i=e.reason||"(unknown reason)";return e.mark?(e.mark.name&&(r+='in "'+e.mark.name+'" '),r+="("+(e.mark.line+1)+":"+(e.mark.column+1)+")",!t&&e.mark.snippet&&(r+=`
+`,"getStyles"),fae=Pje});var mae={};ir(mae,{diagram:()=>Oje});var Oje,gae=F(()=>{"use strict";p8();k8();dae();pae();Oje={parser:oJ,db:pb,renderer:gP,styles:fae,init:o(({c4:e,wrap:t})=>{gP.setConf(e),pb.setWrap(t)},"init")}});function Mae(e){return typeof e>"u"||e===null}function zje(e){return typeof e=="object"&&e!==null}function Gje(e){return Array.isArray(e)?e:Mae(e)?[]:[e]}function Vje(e,t){var r,n,i,a;if(t)for(a=Object.keys(t),r=0,n=a.length;r<n;r+=1)i=a[r],e[i]=t[i];return e}function Wje(e,t){var r="",n;for(n=0;n<t;n+=1)r+=e;return r}function qje(e){return e===0&&Number.NEGATIVE_INFINITY===1/e}function Nae(e,t){var r="",n=e.reason||"(unknown reason)";return e.mark?(e.mark.name&&(r+='in "'+e.mark.name+'" '),r+="("+(e.mark.line+1)+":"+(e.mark.column+1)+")",!t&&e.mark.snippet&&(r+=`
 
-`+e.mark.snippet),i+" "+r):i}function $x(e,t){Error.call(this),this.name="YAMLException",this.reason=e,this.mark=t,this.message=Ate(this,!1),Error.captureStackTrace?Error.captureStackTrace(this,this.constructor):this.stack=new Error().stack||""}function OM(e,t,r,i,n){var a="",s="",l=Math.floor(n/2)-1;return i-t>l&&(a=" ... ",t=i-l+a.length),r-i>l&&(s=" ...",r=i+l-s.length),{str:a+e.slice(t,r).replace(/\t/g,"\u2192")+s,pos:i-t+a.length}}function PM(e,t){return zn.repeat(" ",t-e.length)+e}function oGe(e,t){if(t=Object.create(t||null),!e.buffer)return null;t.maxLength||(t.maxLength=79),typeof t.indent!="number"&&(t.indent=1),typeof t.linesBefore!="number"&&(t.linesBefore=3),typeof t.linesAfter!="number"&&(t.linesAfter=2);for(var r=/\r?\n|\r|\0/g,i=[0],n=[],a,s=-1;a=r.exec(e.buffer);)n.push(a.index),i.push(a.index+a[0].length),e.position<=a.index&&s<0&&(s=i.length-2);s<0&&(s=i.length-1);var l="",u,h,d=Math.min(e.line+t.linesAfter,n.length).toString().length,f=t.maxLength-(t.indent+d+3);for(u=1;u<=t.linesBefore&&!(s-u<0);u++)h=OM(e.buffer,i[s-u],n[s-u],e.position-(i[s]-i[s-u]),f),l=zn.repeat(" ",t.indent)+PM((e.line-u+1).toString(),d)+" | "+h.str+`
-`+l;for(h=OM(e.buffer,i[s],n[s],e.position,f),l+=zn.repeat(" ",t.indent)+PM((e.line+1).toString(),d)+" | "+h.str+`
-`,l+=zn.repeat("-",t.indent+d+3+h.pos)+`^
-`,u=1;u<=t.linesAfter&&!(s+u>=n.length);u++)h=OM(e.buffer,i[s+u],n[s+u],e.position-(i[s]-i[s+u]),f),l+=zn.repeat(" ",t.indent)+PM((e.line+u+1).toString(),d)+" | "+h.str+`
-`;return l.replace(/\n$/,"")}function hGe(e){var t={};return e!==null&&Object.keys(e).forEach(function(r){e[r].forEach(function(i){t[String(i)]=r})}),t}function dGe(e,t){if(t=t||{},Object.keys(t).forEach(function(r){if(cGe.indexOf(r)===-1)throw new Es('Unknown option "'+r+'" is met in definition of "'+e+'" YAML type.')}),this.options=t,this.tag=e,this.kind=t.kind||null,this.resolve=t.resolve||function(){return!0},this.construct=t.construct||function(r){return r},this.instanceOf=t.instanceOf||null,this.predicate=t.predicate||null,this.represent=t.represent||null,this.representName=t.representName||null,this.defaultStyle=t.defaultStyle||null,this.multi=t.multi||!1,this.styleAliases=hGe(t.styleAliases||null),uGe.indexOf(this.kind)===-1)throw new Es('Unknown kind "'+this.kind+'" is specified for "'+e+'" YAML type.')}function hte(e,t){var r=[];return e[t].forEach(function(i){var n=r.length;r.forEach(function(a,s){a.tag===i.tag&&a.kind===i.kind&&a.multi===i.multi&&(n=s)}),r[n]=i}),r}function fGe(){var e={scalar:{},sequence:{},mapping:{},fallback:{},multi:{scalar:[],sequence:[],mapping:[],fallback:[]}},t,r;function i(n){n.multi?(e.multi[n.kind].push(n),e.multi.fallback.push(n)):e[n.kind][n.tag]=e.fallback[n.tag]=n}for(o(i,"collectType"),t=0,r=arguments.length;t<r;t+=1)arguments[t].forEach(i);return e}function FM(e){return this.extend(e)}function xGe(e){if(e===null)return!0;var t=e.length;return t===1&&e==="~"||t===4&&(e==="null"||e==="Null"||e==="NULL")}function bGe(){return null}function TGe(e){return e===null}function kGe(e){if(e===null)return!1;var t=e.length;return t===4&&(e==="true"||e==="True"||e==="TRUE")||t===5&&(e==="false"||e==="False"||e==="FALSE")}function wGe(e){return e==="true"||e==="True"||e==="TRUE"}function SGe(e){return Object.prototype.toString.call(e)==="[object Boolean]"}function AGe(e){return 48<=e&&e<=57||65<=e&&e<=70||97<=e&&e<=102}function _Ge(e){return 48<=e&&e<=55}function DGe(e){return 48<=e&&e<=57}function RGe(e){if(e===null)return!1;var t=e.length,r=0,i=!1,n;if(!t)return!1;if(n=e[r],(n==="-"||n==="+")&&(n=e[++r]),n==="0"){if(r+1===t)return!0;if(n=e[++r],n==="b"){for(r++;r<t;r++)if(n=e[r],n!=="_"){if(n!=="0"&&n!=="1")return!1;i=!0}return i&&n!=="_"}if(n==="x"){for(r++;r<t;r++)if(n=e[r],n!=="_"){if(!AGe(e.charCodeAt(r)))return!1;i=!0}return i&&n!=="_"}if(n==="o"){for(r++;r<t;r++)if(n=e[r],n!=="_"){if(!_Ge(e.charCodeAt(r)))return!1;i=!0}return i&&n!=="_"}}if(n==="_")return!1;for(;r<t;r++)if(n=e[r],n!=="_"){if(!DGe(e.charCodeAt(r)))return!1;i=!0}return!(!i||n==="_")}function LGe(e){var t=e,r=1,i;if(t.indexOf("_")!==-1&&(t=t.replace(/_/g,"")),i=t[0],(i==="-"||i==="+")&&(i==="-"&&(r=-1),t=t.slice(1),i=t[0]),t==="0")return 0;if(i==="0"){if(t[1]==="b")return r*parseInt(t.slice(2),2);if(t[1]==="x")return r*parseInt(t.slice(2),16);if(t[1]==="o")return r*parseInt(t.slice(2),8)}return r*parseInt(t,10)}function MGe(e){return Object.prototype.toString.call(e)==="[object Number]"&&e%1===0&&!zn.isNegativeZero(e)}function OGe(e){return!(e===null||!IGe.test(e)||e[e.length-1]==="_")}function PGe(e){var t,r;return t=e.replace(/_/g,"").toLowerCase(),r=t[0]==="-"?-1:1,"+-".indexOf(t[0])>=0&&(t=t.slice(1)),t===".inf"?r===1?Number.POSITIVE_INFINITY:Number.NEGATIVE_INFINITY:t===".nan"?NaN:r*parseFloat(t,10)}function FGe(e,t){var r;if(isNaN(e))switch(t){case"lowercase":return".nan";case"uppercase":return".NAN";case"camelcase":return".NaN"}else if(Number.POSITIVE_INFINITY===e)switch(t){case"lowercase":return".inf";case"uppercase":return".INF";case"camelcase":return".Inf"}else if(Number.NEGATIVE_INFINITY===e)switch(t){case"lowercase":return"-.inf";case"uppercase":return"-.INF";case"camelcase":return"-.Inf"}else if(zn.isNegativeZero(e))return"-0.0";return r=e.toString(10),BGe.test(r)?r.replace("e",".e"):r}function $Ge(e){return Object.prototype.toString.call(e)==="[object Number]"&&(e%1!==0||zn.isNegativeZero(e))}function VGe(e){return e===null?!1:Dte.exec(e)!==null||Rte.exec(e)!==null}function WGe(e){var t,r,i,n,a,s,l,u=0,h=null,d,f,p;if(t=Dte.exec(e),t===null&&(t=Rte.exec(e)),t===null)throw new Error("Date resolve error");if(r=+t[1],i=+t[2]-1,n=+t[3],!t[4])return new Date(Date.UTC(r,i,n));if(a=+t[4],s=+t[5],l=+t[6],t[7]){for(u=t[7].slice(0,3);u.length<3;)u+="0";u=+u}return t[9]&&(d=+t[10],f=+(t[11]||0),h=(d*60+f)*6e4,t[9]==="-"&&(h=-h)),p=new Date(Date.UTC(r,i,n,a,s,l,u)),h&&p.setTime(p.getTime()-h),p}function qGe(e){return e.toISOString()}function HGe(e){return e==="<<"||e===null}function jGe(e){if(e===null)return!1;var t,r,i=0,n=e.length,a=WM;for(r=0;r<n;r++)if(t=a.indexOf(e.charAt(r)),!(t>64)){if(t<0)return!1;i+=6}return i%8===0}function XGe(e){var t,r,i=e.replace(/[\r\n=]/g,""),n=i.length,a=WM,s=0,l=[];for(t=0;t<n;t++)t%4===0&&t&&(l.push(s>>16&255),l.push(s>>8&255),l.push(s&255)),s=s<<6|a.indexOf(i.charAt(t));return r=n%4*6,r===0?(l.push(s>>16&255),l.push(s>>8&255),l.push(s&255)):r===18?(l.push(s>>10&255),l.push(s>>2&255)):r===12&&l.push(s>>4&255),new Uint8Array(l)}function KGe(e){var t="",r=0,i,n,a=e.length,s=WM;for(i=0;i<a;i++)i%3===0&&i&&(t+=s[r>>18&63],t+=s[r>>12&63],t+=s[r>>6&63],t+=s[r&63]),r=(r<<8)+e[i];return n=a%3,n===0?(t+=s[r>>18&63],t+=s[r>>12&63],t+=s[r>>6&63],t+=s[r&63]):n===2?(t+=s[r>>10&63],t+=s[r>>4&63],t+=s[r<<2&63],t+=s[64]):n===1&&(t+=s[r>>2&63],t+=s[r<<4&63],t+=s[64],t+=s[64]),t}function ZGe(e){return Object.prototype.toString.call(e)==="[object Uint8Array]"}function tVe(e){if(e===null)return!0;var t=[],r,i,n,a,s,l=e;for(r=0,i=l.length;r<i;r+=1){if(n=l[r],s=!1,eVe.call(n)!=="[object Object]")return!1;for(a in n)if(JGe.call(n,a))if(!s)s=!0;else return!1;if(!s)return!1;if(t.indexOf(a)===-1)t.push(a);else return!1}return!0}function rVe(e){return e!==null?e:[]}function aVe(e){if(e===null)return!0;var t,r,i,n,a,s=e;for(a=new Array(s.length),t=0,r=s.length;t<r;t+=1){if(i=s[t],nVe.call(i)!=="[object Object]"||(n=Object.keys(i),n.length!==1))return!1;a[t]=[n[0],i[n[0]]]}return!0}function sVe(e){if(e===null)return[];var t,r,i,n,a,s=e;for(a=new Array(s.length),t=0,r=s.length;t<r;t+=1)i=s[t],n=Object.keys(i),a[t]=[n[0],i[n[0]]];return a}function cVe(e){if(e===null)return!0;var t,r=e;for(t in r)if(lVe.call(r,t)&&r[t]!==null)return!1;return!0}function uVe(e){return e!==null?e:{}}function fte(e){return Object.prototype.toString.call(e)}function Tc(e){return e===10||e===13}function kp(e){return e===9||e===32}function As(e){return e===9||e===32||e===10||e===13}function vg(e){return e===44||e===91||e===93||e===123||e===125}function gVe(e){var t;return 48<=e&&e<=57?e-48:(t=e|32,97<=t&&t<=102?t-97+10:-1)}function yVe(e){return e===120?2:e===117?4:e===85?8:0}function vVe(e){return 48<=e&&e<=57?e-48:-1}function pte(e){return e===48?"\0":e===97?"\x07":e===98?"\b":e===116||e===9?"	":e===110?`
-`:e===118?"\v":e===102?"\f":e===114?"\r":e===101?"\x1B":e===32?" ":e===34?'"':e===47?"/":e===92?"\\":e===78?"\x85":e===95?"\xA0":e===76?"\u2028":e===80?"\u2029":""}function xVe(e){return e<=65535?String.fromCharCode(e):String.fromCharCode((e-65536>>10)+55296,(e-65536&1023)+56320)}function Pte(e,t,r){t==="__proto__"?Object.defineProperty(e,t,{configurable:!0,enumerable:!0,writable:!0,value:r}):e[t]=r}function bVe(e,t){this.input=e,this.filename=t.filename||null,this.schema=t.schema||Lte,this.onWarning=t.onWarning||null,this.legacy=t.legacy||!1,this.json=t.json||!1,this.listener=t.listener||null,this.implicitTypes=this.schema.compiledImplicit,this.typeMap=this.schema.compiledTypeMap,this.length=e.length,this.position=0,this.line=0,this.lineStart=0,this.lineIndent=0,this.firstTabInLine=-1,this.documents=[]}function $te(e,t){var r={name:e.filename,buffer:e.input.slice(0,-1),position:e.position,line:e.line,column:e.position-e.lineStart};return r.snippet=lGe(r),new Es(t,r)}function ar(e,t){throw $te(e,t)}function m4(e,t){e.onWarning&&e.onWarning.call(null,$te(e,t))}function ad(e,t,r,i){var n,a,s,l;if(t<r){if(l=e.input.slice(t,r),i)for(n=0,a=l.length;n<a;n+=1)s=l.charCodeAt(n),s===9||32<=s&&s<=1114111||ar(e,"expected valid JSON character");else fVe.test(l)&&ar(e,"the stream contains non-printable characters");e.result+=l}}function gte(e,t,r,i){var n,a,s,l;for(zn.isObject(r)||ar(e,"cannot merge mappings; the provided source object is unacceptable"),n=Object.keys(r),s=0,l=n.length;s<l;s+=1)a=n[s],sd.call(t,a)||(Pte(t,a,r[a]),i[a]=!0)}function xg(e,t,r,i,n,a,s,l,u){var h,d;if(Array.isArray(n))for(n=Array.prototype.slice.call(n),h=0,d=n.length;h<d;h+=1)Array.isArray(n[h])&&ar(e,"nested arrays are not supported inside keys"),typeof n=="object"&&fte(n[h])==="[object Object]"&&(n[h]="[object Object]");if(typeof n=="object"&&fte(n)==="[object Object]"&&(n="[object Object]"),n=String(n),t===null&&(t={}),i==="tag:yaml.org,2002:merge")if(Array.isArray(a))for(h=0,d=a.length;h<d;h+=1)gte(e,t,a[h],r);else gte(e,t,a,r);else!e.json&&!sd.call(r,n)&&sd.call(t,n)&&(e.line=s||e.line,e.lineStart=l||e.lineStart,e.position=u||e.position,ar(e,"duplicated mapping key")),Pte(t,n,a),delete r[n];return t}function qM(e){var t;t=e.input.charCodeAt(e.position),t===10?e.position++:t===13?(e.position++,e.input.charCodeAt(e.position)===10&&e.position++):ar(e,"a line break is expected"),e.line+=1,e.lineStart=e.position,e.firstTabInLine=-1}function En(e,t,r){for(var i=0,n=e.input.charCodeAt(e.position);n!==0;){for(;kp(n);)n===9&&e.firstTabInLine===-1&&(e.firstTabInLine=e.position),n=e.input.charCodeAt(++e.position);if(t&&n===35)do n=e.input.charCodeAt(++e.position);while(n!==10&&n!==13&&n!==0);if(Tc(n))for(qM(e),n=e.input.charCodeAt(e.position),i++,e.lineIndent=0;n===32;)e.lineIndent++,n=e.input.charCodeAt(++e.position);else break}return r!==-1&&i!==0&&e.lineIndent<r&&m4(e,"deficient indentation"),i}function v4(e){var t=e.position,r;return r=e.input.charCodeAt(t),!!((r===45||r===46)&&r===e.input.charCodeAt(t+1)&&r===e.input.charCodeAt(t+2)&&(t+=3,r=e.input.charCodeAt(t),r===0||As(r)))}function UM(e,t){t===1?e.result+=" ":t>1&&(e.result+=zn.repeat(`
-`,t-1))}function TVe(e,t,r){var i,n,a,s,l,u,h,d,f=e.kind,p=e.result,m;if(m=e.input.charCodeAt(e.position),As(m)||vg(m)||m===35||m===38||m===42||m===33||m===124||m===62||m===39||m===34||m===37||m===64||m===96||(m===63||m===45)&&(n=e.input.charCodeAt(e.position+1),As(n)||r&&vg(n)))return!1;for(e.kind="scalar",e.result="",a=s=e.position,l=!1;m!==0;){if(m===58){if(n=e.input.charCodeAt(e.position+1),As(n)||r&&vg(n))break}else if(m===35){if(i=e.input.charCodeAt(e.position-1),As(i))break}else{if(e.position===e.lineStart&&v4(e)||r&&vg(m))break;if(Tc(m))if(u=e.line,h=e.lineStart,d=e.lineIndent,En(e,!1,-1),e.lineIndent>=t){l=!0,m=e.input.charCodeAt(e.position);continue}else{e.position=s,e.line=u,e.lineStart=h,e.lineIndent=d;break}}l&&(ad(e,a,s,!1),UM(e,e.line-u),a=s=e.position,l=!1),kp(m)||(s=e.position+1),m=e.input.charCodeAt(++e.position)}return ad(e,a,s,!1),e.result?!0:(e.kind=f,e.result=p,!1)}function CVe(e,t){var r,i,n;if(r=e.input.charCodeAt(e.position),r!==39)return!1;for(e.kind="scalar",e.result="",e.position++,i=n=e.position;(r=e.input.charCodeAt(e.position))!==0;)if(r===39)if(ad(e,i,e.position,!0),r=e.input.charCodeAt(++e.position),r===39)i=e.position,e.position++,n=e.position;else return!0;else Tc(r)?(ad(e,i,n,!0),UM(e,En(e,!1,t)),i=n=e.position):e.position===e.lineStart&&v4(e)?ar(e,"unexpected end of the document within a single quoted scalar"):(e.position++,n=e.position);ar(e,"unexpected end of the stream within a single quoted scalar")}function kVe(e,t){var r,i,n,a,s,l;if(l=e.input.charCodeAt(e.position),l!==34)return!1;for(e.kind="scalar",e.result="",e.position++,r=i=e.position;(l=e.input.charCodeAt(e.position))!==0;){if(l===34)return ad(e,r,e.position,!0),e.position++,!0;if(l===92){if(ad(e,r,e.position,!0),l=e.input.charCodeAt(++e.position),Tc(l))En(e,!1,t);else if(l<256&&Bte[l])e.result+=Fte[l],e.position++;else if((s=yVe(l))>0){for(n=s,a=0;n>0;n--)l=e.input.charCodeAt(++e.position),(s=gVe(l))>=0?a=(a<<4)+s:ar(e,"expected hexadecimal character");e.result+=xVe(a),e.position++}else ar(e,"unknown escape sequence");r=i=e.position}else Tc(l)?(ad(e,r,i,!0),UM(e,En(e,!1,t)),r=i=e.position):e.position===e.lineStart&&v4(e)?ar(e,"unexpected end of the document within a double quoted scalar"):(e.position++,i=e.position)}ar(e,"unexpected end of the stream within a double quoted scalar")}function wVe(e,t){var r=!0,i,n,a,s=e.tag,l,u=e.anchor,h,d,f,p,m,g=Object.create(null),y,v,x,b;if(b=e.input.charCodeAt(e.position),b===91)d=93,m=!1,l=[];else if(b===123)d=125,m=!0,l={};else return!1;for(e.anchor!==null&&(e.anchorMap[e.anchor]=l),b=e.input.charCodeAt(++e.position);b!==0;){if(En(e,!0,t),b=e.input.charCodeAt(e.position),b===d)return e.position++,e.tag=s,e.anchor=u,e.kind=m?"mapping":"sequence",e.result=l,!0;r?b===44&&ar(e,"expected the node content, but found ','"):ar(e,"missed comma between flow collection entries"),v=y=x=null,f=p=!1,b===63&&(h=e.input.charCodeAt(e.position+1),As(h)&&(f=p=!0,e.position++,En(e,!0,t))),i=e.line,n=e.lineStart,a=e.position,bg(e,t,f4,!1,!0),v=e.tag,y=e.result,En(e,!0,t),b=e.input.charCodeAt(e.position),(p||e.line===i)&&b===58&&(f=!0,b=e.input.charCodeAt(++e.position),En(e,!0,t),bg(e,t,f4,!1,!0),x=e.result),m?xg(e,l,g,v,y,x,i,n,a):f?l.push(xg(e,null,g,v,y,x,i,n,a)):l.push(y),En(e,!0,t),b=e.input.charCodeAt(e.position),b===44?(r=!0,b=e.input.charCodeAt(++e.position)):r=!1}ar(e,"unexpected end of the stream within a flow collection")}function SVe(e,t){var r,i,n=BM,a=!1,s=!1,l=t,u=0,h=!1,d,f;if(f=e.input.charCodeAt(e.position),f===124)i=!1;else if(f===62)i=!0;else return!1;for(e.kind="scalar",e.result="";f!==0;)if(f=e.input.charCodeAt(++e.position),f===43||f===45)BM===n?n=f===43?dte:dVe:ar(e,"repeat of a chomping mode identifier");else if((d=vVe(f))>=0)d===0?ar(e,"bad explicit indentation width of a block scalar; it cannot be less than one"):s?ar(e,"repeat of an indentation width identifier"):(l=t+d-1,s=!0);else break;if(kp(f)){do f=e.input.charCodeAt(++e.position);while(kp(f));if(f===35)do f=e.input.charCodeAt(++e.position);while(!Tc(f)&&f!==0)}for(;f!==0;){for(qM(e),e.lineIndent=0,f=e.input.charCodeAt(e.position);(!s||e.lineIndent<l)&&f===32;)e.lineIndent++,f=e.input.charCodeAt(++e.position);if(!s&&e.lineIndent>l&&(l=e.lineIndent),Tc(f)){u++;continue}if(e.lineIndent<l){n===dte?e.result+=zn.repeat(`
-`,a?1+u:u):n===BM&&a&&(e.result+=`
-`);break}for(i?kp(f)?(h=!0,e.result+=zn.repeat(`
-`,a?1+u:u)):h?(h=!1,e.result+=zn.repeat(`
-`,u+1)):u===0?a&&(e.result+=" "):e.result+=zn.repeat(`
-`,u):e.result+=zn.repeat(`
-`,a?1+u:u),a=!0,s=!0,u=0,r=e.position;!Tc(f)&&f!==0;)f=e.input.charCodeAt(++e.position);ad(e,r,e.position,!1)}return!0}function yte(e,t){var r,i=e.tag,n=e.anchor,a=[],s,l=!1,u;if(e.firstTabInLine!==-1)return!1;for(e.anchor!==null&&(e.anchorMap[e.anchor]=a),u=e.input.charCodeAt(e.position);u!==0&&(e.firstTabInLine!==-1&&(e.position=e.firstTabInLine,ar(e,"tab characters must not be used in indentation")),!(u!==45||(s=e.input.charCodeAt(e.position+1),!As(s))));){if(l=!0,e.position++,En(e,!0,-1)&&e.lineIndent<=t){a.push(null),u=e.input.charCodeAt(e.position);continue}if(r=e.line,bg(e,t,Nte,!1,!0),a.push(e.result),En(e,!0,-1),u=e.input.charCodeAt(e.position),(e.line===r||e.lineIndent>t)&&u!==0)ar(e,"bad indentation of a sequence entry");else if(e.lineIndent<t)break}return l?(e.tag=i,e.anchor=n,e.kind="sequence",e.result=a,!0):!1}function EVe(e,t,r){var i,n,a,s,l,u,h=e.tag,d=e.anchor,f={},p=Object.create(null),m=null,g=null,y=null,v=!1,x=!1,b;if(e.firstTabInLine!==-1)return!1;for(e.anchor!==null&&(e.anchorMap[e.anchor]=f),b=e.input.charCodeAt(e.position);b!==0;){if(!v&&e.firstTabInLine!==-1&&(e.position=e.firstTabInLine,ar(e,"tab characters must not be used in indentation")),i=e.input.charCodeAt(e.position+1),a=e.line,(b===63||b===58)&&As(i))b===63?(v&&(xg(e,f,p,m,g,null,s,l,u),m=g=y=null),x=!0,v=!0,n=!0):v?(v=!1,n=!0):ar(e,"incomplete explicit mapping pair; a key node is missed; or followed by a non-tabulated empty line"),e.position+=1,b=i;else{if(s=e.line,l=e.lineStart,u=e.position,!bg(e,r,Mte,!1,!0))break;if(e.line===a){for(b=e.input.charCodeAt(e.position);kp(b);)b=e.input.charCodeAt(++e.position);if(b===58)b=e.input.charCodeAt(++e.position),As(b)||ar(e,"a whitespace character is expected after the key-value separator within a block mapping"),v&&(xg(e,f,p,m,g,null,s,l,u),m=g=y=null),x=!0,v=!1,n=!1,m=e.tag,g=e.result;else if(x)ar(e,"can not read an implicit mapping pair; a colon is missed");else return e.tag=h,e.anchor=d,!0}else if(x)ar(e,"can not read a block mapping entry; a multiline key may not be an implicit key");else return e.tag=h,e.anchor=d,!0}if((e.line===a||e.lineIndent>t)&&(v&&(s=e.line,l=e.lineStart,u=e.position),bg(e,t,p4,!0,n)&&(v?g=e.result:y=e.result),v||(xg(e,f,p,m,g,y,s,l,u),m=g=y=null),En(e,!0,-1),b=e.input.charCodeAt(e.position)),(e.line===a||e.lineIndent>t)&&b!==0)ar(e,"bad indentation of a mapping entry");else if(e.lineIndent<t)break}return v&&xg(e,f,p,m,g,null,s,l,u),x&&(e.tag=h,e.anchor=d,e.kind="mapping",e.result=f),x}function AVe(e){var t,r=!1,i=!1,n,a,s;if(s=e.input.charCodeAt(e.position),s!==33)return!1;if(e.tag!==null&&ar(e,"duplication of a tag property"),s=e.input.charCodeAt(++e.position),s===60?(r=!0,s=e.input.charCodeAt(++e.position)):s===33?(i=!0,n="!!",s=e.input.charCodeAt(++e.position)):n="!",t=e.position,r){do s=e.input.charCodeAt(++e.position);while(s!==0&&s!==62);e.position<e.length?(a=e.input.slice(t,e.position),s=e.input.charCodeAt(++e.position)):ar(e,"unexpected end of the stream within a verbatim tag")}else{for(;s!==0&&!As(s);)s===33&&(i?ar(e,"tag suffix cannot contain exclamation marks"):(n=e.input.slice(t-1,e.position+1),Ite.test(n)||ar(e,"named tag handle cannot contain such characters"),i=!0,t=e.position+1)),s=e.input.charCodeAt(++e.position);a=e.input.slice(t,e.position),mVe.test(a)&&ar(e,"tag suffix cannot contain flow indicator characters")}a&&!Ote.test(a)&&ar(e,"tag name cannot contain such characters: "+a);try{a=decodeURIComponent(a)}catch{ar(e,"tag name is malformed: "+a)}return r?e.tag=a:sd.call(e.tagMap,n)?e.tag=e.tagMap[n]+a:n==="!"?e.tag="!"+a:n==="!!"?e.tag="tag:yaml.org,2002:"+a:ar(e,'undeclared tag handle "'+n+'"'),!0}function _Ve(e){var t,r;if(r=e.input.charCodeAt(e.position),r!==38)return!1;for(e.anchor!==null&&ar(e,"duplication of an anchor property"),r=e.input.charCodeAt(++e.position),t=e.position;r!==0&&!As(r)&&!vg(r);)r=e.input.charCodeAt(++e.position);return e.position===t&&ar(e,"name of an anchor node must contain at least one character"),e.anchor=e.input.slice(t,e.position),!0}function DVe(e){var t,r,i;if(i=e.input.charCodeAt(e.position),i!==42)return!1;for(i=e.input.charCodeAt(++e.position),t=e.position;i!==0&&!As(i)&&!vg(i);)i=e.input.charCodeAt(++e.position);return e.position===t&&ar(e,"name of an alias node must contain at least one character"),r=e.input.slice(t,e.position),sd.call(e.anchorMap,r)||ar(e,'unidentified alias "'+r+'"'),e.result=e.anchorMap[r],En(e,!0,-1),!0}function bg(e,t,r,i,n){var a,s,l,u=1,h=!1,d=!1,f,p,m,g,y,v;if(e.listener!==null&&e.listener("open",e),e.tag=null,e.anchor=null,e.kind=null,e.result=null,a=s=l=p4===r||Nte===r,i&&En(e,!0,-1)&&(h=!0,e.lineIndent>t?u=1:e.lineIndent===t?u=0:e.lineIndent<t&&(u=-1)),u===1)for(;AVe(e)||_Ve(e);)En(e,!0,-1)?(h=!0,l=a,e.lineIndent>t?u=1:e.lineIndent===t?u=0:e.lineIndent<t&&(u=-1)):l=!1;if(l&&(l=h||n),(u===1||p4===r)&&(f4===r||Mte===r?y=t:y=t+1,v=e.position-e.lineStart,u===1?l&&(yte(e,v)||EVe(e,v,y))||wVe(e,y)?d=!0:(s&&SVe(e,y)||CVe(e,y)||kVe(e,y)?d=!0:DVe(e)?(d=!0,(e.tag!==null||e.anchor!==null)&&ar(e,"alias node should not have any properties")):TVe(e,y,f4===r)&&(d=!0,e.tag===null&&(e.tag="?")),e.anchor!==null&&(e.anchorMap[e.anchor]=e.result)):u===0&&(d=l&&yte(e,v))),e.tag===null)e.anchor!==null&&(e.anchorMap[e.anchor]=e.result);else if(e.tag==="?"){for(e.result!==null&&e.kind!=="scalar"&&ar(e,'unacceptable node kind for !<?> tag; it should be "scalar", not "'+e.kind+'"'),f=0,p=e.implicitTypes.length;f<p;f+=1)if(g=e.implicitTypes[f],g.resolve(e.result)){e.result=g.construct(e.result),e.tag=g.tag,e.anchor!==null&&(e.anchorMap[e.anchor]=e.result);break}}else if(e.tag!=="!"){if(sd.call(e.typeMap[e.kind||"fallback"],e.tag))g=e.typeMap[e.kind||"fallback"][e.tag];else for(g=null,m=e.typeMap.multi[e.kind||"fallback"],f=0,p=m.length;f<p;f+=1)if(e.tag.slice(0,m[f].tag.length)===m[f].tag){g=m[f];break}g||ar(e,"unknown tag !<"+e.tag+">"),e.result!==null&&g.kind!==e.kind&&ar(e,"unacceptable node kind for !<"+e.tag+'> tag; it should be "'+g.kind+'", not "'+e.kind+'"'),g.resolve(e.result,e.tag)?(e.result=g.construct(e.result,e.tag),e.anchor!==null&&(e.anchorMap[e.anchor]=e.result)):ar(e,"cannot resolve a node with !<"+e.tag+"> explicit tag")}return e.listener!==null&&e.listener("close",e),e.tag!==null||e.anchor!==null||d}function RVe(e){var t=e.position,r,i,n,a=!1,s;for(e.version=null,e.checkLineBreaks=e.legacy,e.tagMap=Object.create(null),e.anchorMap=Object.create(null);(s=e.input.charCodeAt(e.position))!==0&&(En(e,!0,-1),s=e.input.charCodeAt(e.position),!(e.lineIndent>0||s!==37));){for(a=!0,s=e.input.charCodeAt(++e.position),r=e.position;s!==0&&!As(s);)s=e.input.charCodeAt(++e.position);for(i=e.input.slice(r,e.position),n=[],i.length<1&&ar(e,"directive name must not be less than one character in length");s!==0;){for(;kp(s);)s=e.input.charCodeAt(++e.position);if(s===35){do s=e.input.charCodeAt(++e.position);while(s!==0&&!Tc(s));break}if(Tc(s))break;for(r=e.position;s!==0&&!As(s);)s=e.input.charCodeAt(++e.position);n.push(e.input.slice(r,e.position))}s!==0&&qM(e),sd.call(mte,i)?mte[i](e,i,n):m4(e,'unknown document directive "'+i+'"')}if(En(e,!0,-1),e.lineIndent===0&&e.input.charCodeAt(e.position)===45&&e.input.charCodeAt(e.position+1)===45&&e.input.charCodeAt(e.position+2)===45?(e.position+=3,En(e,!0,-1)):a&&ar(e,"directives end mark is expected"),bg(e,e.lineIndent-1,p4,!1,!0),En(e,!0,-1),e.checkLineBreaks&&pVe.test(e.input.slice(t,e.position))&&m4(e,"non-ASCII line breaks are interpreted as content"),e.documents.push(e.result),e.position===e.lineStart&&v4(e)){e.input.charCodeAt(e.position)===46&&(e.position+=3,En(e,!0,-1));return}if(e.position<e.length-1)ar(e,"end of the stream or a document separator is expected");else return}function zte(e,t){e=String(e),t=t||{},e.length!==0&&(e.charCodeAt(e.length-1)!==10&&e.charCodeAt(e.length-1)!==13&&(e+=`
-`),e.charCodeAt(0)===65279&&(e=e.slice(1)));var r=new bVe(e,t),i=e.indexOf("\0");for(i!==-1&&(r.position=i,ar(r,"null byte is not allowed in input")),r.input+="\0";r.input.charCodeAt(r.position)===32;)r.lineIndent+=1,r.position+=1;for(;r.position<r.length-1;)RVe(r);return r.documents}function LVe(e,t,r){t!==null&&typeof t=="object"&&typeof r>"u"&&(r=t,t=null);var i=zte(e,r);if(typeof t!="function")return i;for(var n=0,a=i.length;n<a;n+=1)t(i[n])}function MVe(e,t){var r=zte(e,t);if(r.length!==0){if(r.length===1)return r[0];throw new Es("expected a single document in the stream, but found more")}}function JVe(e,t){var r,i,n,a,s,l,u;if(t===null)return{};for(r={},i=Object.keys(t),n=0,a=i.length;n<a;n+=1)s=i[n],l=String(t[s]),s.slice(0,2)==="!!"&&(s="tag:yaml.org,2002:"+s.slice(2)),u=e.compiledTypeMap.fallback[s],u&&Wte.call(u.styleAliases,l)&&(l=u.styleAliases[l]),r[s]=l;return r}function eWe(e){var t,r,i;if(t=e.toString(16).toUpperCase(),e<=255)r="x",i=2;else if(e<=65535)r="u",i=4;else if(e<=4294967295)r="U",i=8;else throw new Es("code point within a string may not be greater than 0xFFFFFFFF");return"\\"+r+zn.repeat("0",i-t.length)+t}function rWe(e){this.schema=e.schema||Lte,this.indent=Math.max(1,e.indent||2),this.noArrayIndent=e.noArrayIndent||!1,this.skipInvalid=e.skipInvalid||!1,this.flowLevel=zn.isNothing(e.flowLevel)?-1:e.flowLevel,this.styleMap=JVe(this.schema,e.styles||null),this.sortKeys=e.sortKeys||!1,this.lineWidth=e.lineWidth||80,this.noRefs=e.noRefs||!1,this.noCompatMode=e.noCompatMode||!1,this.condenseFlow=e.condenseFlow||!1,this.quotingType=e.quotingType==='"'?Gx:tWe,this.forceQuotes=e.forceQuotes||!1,this.replacer=typeof e.replacer=="function"?e.replacer:null,this.implicitTypes=this.schema.compiledImplicit,this.explicitTypes=this.schema.compiledExplicit,this.tag=null,this.result="",this.duplicates=[],this.usedDuplicates=null}function vte(e,t){for(var r=zn.repeat(" ",t),i=0,n=-1,a="",s,l=e.length;i<l;)n=e.indexOf(`
-`,i),n===-1?(s=e.slice(i),i=l):(s=e.slice(i,n+1),i=n+1),s.length&&s!==`
-`&&(a+=r),a+=s;return a}function zM(e,t){return`
-`+zn.repeat(" ",e.indent*t)}function iWe(e,t){var r,i,n;for(r=0,i=e.implicitTypes.length;r<i;r+=1)if(n=e.implicitTypes[r],n.resolve(t))return!0;return!1}function y4(e){return e===BVe||e===OVe}function Vx(e){return 32<=e&&e<=126||161<=e&&e<=55295&&e!==8232&&e!==8233||57344<=e&&e<=65533&&e!==HM||65536<=e&&e<=1114111}function xte(e){return Vx(e)&&e!==HM&&e!==PVe&&e!==zx}function bte(e,t,r){var i=xte(e),n=i&&!y4(e);return(r?i:i&&e!==qte&&e!==Ute&&e!==Hte&&e!==Yte&&e!==jte)&&e!==$M&&!(t===g4&&!n)||xte(t)&&!y4(t)&&e===$M||t===g4&&n}function nWe(e){return Vx(e)&&e!==HM&&!y4(e)&&e!==qVe&&e!==YVe&&e!==g4&&e!==qte&&e!==Ute&&e!==Hte&&e!==Yte&&e!==jte&&e!==$M&&e!==GVe&&e!==WVe&&e!==FVe&&e!==KVe&&e!==UVe&&e!==HVe&&e!==VVe&&e!==$Ve&&e!==zVe&&e!==jVe&&e!==XVe}function aWe(e){return!y4(e)&&e!==g4}function Fx(e,t){var r=e.charCodeAt(t),i;return r>=55296&&r<=56319&&t+1<e.length&&(i=e.charCodeAt(t+1),i>=56320&&i<=57343)?(r-55296)*1024+i-56320+65536:r}function Xte(e){var t=/^\n* /;return t.test(e)}function sWe(e,t,r,i,n,a,s,l){var u,h=0,d=null,f=!1,p=!1,m=i!==-1,g=-1,y=nWe(Fx(e,0))&&aWe(Fx(e,e.length-1));if(t||s)for(u=0;u<e.length;h>=65536?u+=2:u++){if(h=Fx(e,u),!Vx(h))return yg;y=y&&bte(h,d,l),d=h}else{for(u=0;u<e.length;h>=65536?u+=2:u++){if(h=Fx(e,u),h===zx)f=!0,m&&(p=p||u-g-1>i&&e[g+1]!==" ",g=u);else if(!Vx(h))return yg;y=y&&bte(h,d,l),d=h}p=p||m&&u-g-1>i&&e[g+1]!==" "}return!f&&!p?y&&!s&&!n(e)?Kte:a===Gx?yg:GM:r>9&&Xte(e)?yg:s?a===Gx?yg:GM:p?Qte:Zte}function oWe(e,t,r,i,n){e.dump=(function(){if(t.length===0)return e.quotingType===Gx?'""':"''";if(!e.noCompatMode&&(ZVe.indexOf(t)!==-1||QVe.test(t)))return e.quotingType===Gx?'"'+t+'"':"'"+t+"'";var a=e.indent*Math.max(1,r),s=e.lineWidth===-1?-1:Math.max(Math.min(e.lineWidth,40),e.lineWidth-a),l=i||e.flowLevel>-1&&r>=e.flowLevel;function u(h){return iWe(e,h)}switch(o(u,"testAmbiguity"),sWe(t,l,e.indent,s,u,e.quotingType,e.forceQuotes&&!i,n)){case Kte:return t;case GM:return"'"+t.replace(/'/g,"''")+"'";case Zte:return"|"+Tte(t,e.indent)+Cte(vte(t,a));case Qte:return">"+Tte(t,e.indent)+Cte(vte(lWe(t,s),a));case yg:return'"'+cWe(t)+'"';default:throw new Es("impossible error: invalid scalar style")}})()}function Tte(e,t){var r=Xte(e)?String(t):"",i=e[e.length-1]===`
-`,n=i&&(e[e.length-2]===`
+`+e.mark.snippet),n+" "+r):n}function w2(e,t){Error.call(this),this.name="YAMLException",this.reason=e,this.mark=t,this.message=Nae(this,!1),Error.captureStackTrace?Error.captureStackTrace(this,this.constructor):this.stack=new Error().stack||""}function yP(e,t,r,n,i){var a="",s="",l=Math.floor(i/2)-1;return n-t>l&&(a=" ... ",t=n-l+a.length),r-n>l&&(s=" ...",r=n+l-s.length),{str:a+e.slice(t,r).replace(/\t/g,"\u2192")+s,pos:n-t+a.length}}function vP(e,t){return sa.repeat(" ",t-e.length)+e}function Zje(e,t){if(t=Object.create(t||null),!e.buffer)return null;t.maxLength||(t.maxLength=79),typeof t.indent!="number"&&(t.indent=1),typeof t.linesBefore!="number"&&(t.linesBefore=3),typeof t.linesAfter!="number"&&(t.linesAfter=2);for(var r=/\r?\n|\r|\0/g,n=[0],i=[],a,s=-1;a=r.exec(e.buffer);)i.push(a.index),n.push(a.index+a[0].length),e.position<=a.index&&s<0&&(s=n.length-2);s<0&&(s=n.length-1);var l="",u,h,d=Math.min(e.line+t.linesAfter,i.length).toString().length,f=t.maxLength-(t.indent+d+3);for(u=1;u<=t.linesBefore&&!(s-u<0);u++)h=yP(e.buffer,n[s-u],i[s-u],e.position-(n[s]-n[s-u]),f),l=sa.repeat(" ",t.indent)+vP((e.line-u+1).toString(),d)+" | "+h.str+`
+`+l;for(h=yP(e.buffer,n[s],i[s],e.position,f),l+=sa.repeat(" ",t.indent)+vP((e.line+1).toString(),d)+" | "+h.str+`
+`,l+=sa.repeat("-",t.indent+d+3+h.pos)+`^
+`,u=1;u<=t.linesAfter&&!(s+u>=i.length);u++)h=yP(e.buffer,n[s+u],i[s+u],e.position-(n[s]-n[s+u]),f),l+=sa.repeat(" ",t.indent)+vP((e.line+u+1).toString(),d)+" | "+h.str+`
+`;return l.replace(/\n$/,"")}function tXe(e){var t={};return e!==null&&Object.keys(e).forEach(function(r){e[r].forEach(function(n){t[String(n)]=r})}),t}function rXe(e,t){if(t=t||{},Object.keys(t).forEach(function(r){if(Jje.indexOf(r)===-1)throw new to('Unknown option "'+r+'" is met in definition of "'+e+'" YAML type.')}),this.options=t,this.tag=e,this.kind=t.kind||null,this.resolve=t.resolve||function(){return!0},this.construct=t.construct||function(r){return r},this.instanceOf=t.instanceOf||null,this.predicate=t.predicate||null,this.represent=t.represent||null,this.representName=t.representName||null,this.defaultStyle=t.defaultStyle||null,this.multi=t.multi||!1,this.styleAliases=tXe(t.styleAliases||null),eXe.indexOf(this.kind)===-1)throw new to('Unknown kind "'+this.kind+'" is specified for "'+e+'" YAML type.')}function vae(e,t){var r=[];return e[t].forEach(function(n){var i=r.length;r.forEach(function(a,s){a.tag===n.tag&&a.kind===n.kind&&a.multi===n.multi&&(i=s)}),r[i]=n}),r}function nXe(){var e={scalar:{},sequence:{},mapping:{},fallback:{},multi:{scalar:[],sequence:[],mapping:[],fallback:[]}},t,r;function n(i){i.multi?(e.multi[i.kind].push(i),e.multi.fallback.push(i)):e[i.kind][i.tag]=e.fallback[i.tag]=i}for(o(n,"collectType"),t=0,r=arguments.length;t<r;t+=1)arguments[t].forEach(n);return e}function bP(e){return this.extend(e)}function cXe(e){if(e===null)return!0;var t=e.length;return t===1&&e==="~"||t===4&&(e==="null"||e==="Null"||e==="NULL")}function uXe(){return null}function hXe(e){return e===null}function fXe(e){if(e===null)return!1;var t=e.length;return t===4&&(e==="true"||e==="True"||e==="TRUE")||t===5&&(e==="false"||e==="False"||e==="FALSE")}function pXe(e){return e==="true"||e==="True"||e==="TRUE"}function mXe(e){return Object.prototype.toString.call(e)==="[object Boolean]"}function yXe(e){return 48<=e&&e<=57||65<=e&&e<=70||97<=e&&e<=102}function vXe(e){return 48<=e&&e<=55}function xXe(e){return 48<=e&&e<=57}function bXe(e){if(e===null)return!1;var t=e.length,r=0,n=!1,i;if(!t)return!1;if(i=e[r],(i==="-"||i==="+")&&(i=e[++r]),i==="0"){if(r+1===t)return!0;if(i=e[++r],i==="b"){for(r++;r<t;r++)if(i=e[r],i!=="_"){if(i!=="0"&&i!=="1")return!1;n=!0}return n&&i!=="_"}if(i==="x"){for(r++;r<t;r++)if(i=e[r],i!=="_"){if(!yXe(e.charCodeAt(r)))return!1;n=!0}return n&&i!=="_"}if(i==="o"){for(r++;r<t;r++)if(i=e[r],i!=="_"){if(!vXe(e.charCodeAt(r)))return!1;n=!0}return n&&i!=="_"}}if(i==="_")return!1;for(;r<t;r++)if(i=e[r],i!=="_"){if(!xXe(e.charCodeAt(r)))return!1;n=!0}return!(!n||i==="_")}function TXe(e){var t=e,r=1,n;if(t.indexOf("_")!==-1&&(t=t.replace(/_/g,"")),n=t[0],(n==="-"||n==="+")&&(n==="-"&&(r=-1),t=t.slice(1),n=t[0]),t==="0")return 0;if(n==="0"){if(t[1]==="b")return r*parseInt(t.slice(2),2);if(t[1]==="x")return r*parseInt(t.slice(2),16);if(t[1]==="o")return r*parseInt(t.slice(2),8)}return r*parseInt(t,10)}function CXe(e){return Object.prototype.toString.call(e)==="[object Number]"&&e%1===0&&!sa.isNegativeZero(e)}function SXe(e){return!(e===null||!kXe.test(e)||e[e.length-1]==="_")}function EXe(e){var t,r;return t=e.replace(/_/g,"").toLowerCase(),r=t[0]==="-"?-1:1,"+-".indexOf(t[0])>=0&&(t=t.slice(1)),t===".inf"?r===1?Number.POSITIVE_INFINITY:Number.NEGATIVE_INFINITY:t===".nan"?NaN:r*parseFloat(t,10)}function RXe(e,t){var r;if(isNaN(e))switch(t){case"lowercase":return".nan";case"uppercase":return".NAN";case"camelcase":return".NaN"}else if(Number.POSITIVE_INFINITY===e)switch(t){case"lowercase":return".inf";case"uppercase":return".INF";case"camelcase":return".Inf"}else if(Number.NEGATIVE_INFINITY===e)switch(t){case"lowercase":return"-.inf";case"uppercase":return"-.INF";case"camelcase":return"-.Inf"}else if(sa.isNegativeZero(e))return"-0.0";return r=e.toString(10),AXe.test(r)?r.replace("e",".e"):r}function _Xe(e){return Object.prototype.toString.call(e)==="[object Number]"&&(e%1!==0||sa.isNegativeZero(e))}function IXe(e){return e===null?!1:Oae.exec(e)!==null||Bae.exec(e)!==null}function MXe(e){var t,r,n,i,a,s,l,u=0,h=null,d,f,p;if(t=Oae.exec(e),t===null&&(t=Bae.exec(e)),t===null)throw new Error("Date resolve error");if(r=+t[1],n=+t[2]-1,i=+t[3],!t[4])return new Date(Date.UTC(r,n,i));if(a=+t[4],s=+t[5],l=+t[6],t[7]){for(u=t[7].slice(0,3);u.length<3;)u+="0";u=+u}return t[9]&&(d=+t[10],f=+(t[11]||0),h=(d*60+f)*6e4,t[9]==="-"&&(h=-h)),p=new Date(Date.UTC(r,n,i,a,s,l,u)),h&&p.setTime(p.getTime()-h),p}function NXe(e){return e.toISOString()}function OXe(e){return e==="<<"||e===null}function $Xe(e){if(e===null)return!1;var t,r,n=0,i=e.length,a=SP;for(r=0;r<i;r++)if(t=a.indexOf(e.charAt(r)),!(t>64)){if(t<0)return!1;n+=6}return n%8===0}function FXe(e){var t,r,n=e.replace(/[\r\n=]/g,""),i=n.length,a=SP,s=0,l=[];for(t=0;t<i;t++)t%4===0&&t&&(l.push(s>>16&255),l.push(s>>8&255),l.push(s&255)),s=s<<6|a.indexOf(n.charAt(t));return r=i%4*6,r===0?(l.push(s>>16&255),l.push(s>>8&255),l.push(s&255)):r===18?(l.push(s>>10&255),l.push(s>>2&255)):r===12&&l.push(s>>4&255),new Uint8Array(l)}function zXe(e){var t="",r=0,n,i,a=e.length,s=SP;for(n=0;n<a;n++)n%3===0&&n&&(t+=s[r>>18&63],t+=s[r>>12&63],t+=s[r>>6&63],t+=s[r&63]),r=(r<<8)+e[n];return i=a%3,i===0?(t+=s[r>>18&63],t+=s[r>>12&63],t+=s[r>>6&63],t+=s[r&63]):i===2?(t+=s[r>>10&63],t+=s[r>>4&63],t+=s[r<<2&63],t+=s[64]):i===1&&(t+=s[r>>2&63],t+=s[r<<4&63],t+=s[64],t+=s[64]),t}function GXe(e){return Object.prototype.toString.call(e)==="[object Uint8Array]"}function HXe(e){if(e===null)return!0;var t=[],r,n,i,a,s,l=e;for(r=0,n=l.length;r<n;r+=1){if(i=l[r],s=!1,qXe.call(i)!=="[object Object]")return!1;for(a in i)if(WXe.call(i,a))if(!s)s=!0;else return!1;if(!s)return!1;if(t.indexOf(a)===-1)t.push(a);else return!1}return!0}function UXe(e){return e!==null?e:[]}function XXe(e){if(e===null)return!0;var t,r,n,i,a,s=e;for(a=new Array(s.length),t=0,r=s.length;t<r;t+=1){if(n=s[t],jXe.call(n)!=="[object Object]"||(i=Object.keys(n),i.length!==1))return!1;a[t]=[i[0],n[i[0]]]}return!0}function KXe(e){if(e===null)return[];var t,r,n,i,a,s=e;for(a=new Array(s.length),t=0,r=s.length;t<r;t+=1)n=s[t],i=Object.keys(n),a[t]=[i[0],n[i[0]]];return a}function JXe(e){if(e===null)return!0;var t,r=e;for(t in r)if(QXe.call(r,t)&&r[t]!==null)return!1;return!0}function eKe(e){return e!==null?e:{}}function bae(e){return Object.prototype.toString.call(e)}function tu(e){return e===10||e===13}function xm(e){return e===9||e===32}function ro(e){return e===9||e===32||e===10||e===13}function Oy(e){return e===44||e===91||e===93||e===123||e===125}function sKe(e){var t;return 48<=e&&e<=57?e-48:(t=e|32,97<=t&&t<=102?t-97+10:-1)}function oKe(e){return e===120?2:e===117?4:e===85?8:0}function lKe(e){return 48<=e&&e<=57?e-48:-1}function Tae(e){return e===48?"\0":e===97?"\x07":e===98?"\b":e===116||e===9?"	":e===110?`
+`:e===118?"\v":e===102?"\f":e===114?"\r":e===101?"\x1B":e===32?" ":e===34?'"':e===47?"/":e===92?"\\":e===78?"\x85":e===95?"\xA0":e===76?"\u2028":e===80?"\u2029":""}function cKe(e){return e<=65535?String.fromCharCode(e):String.fromCharCode((e-65536>>10)+55296,(e-65536&1023)+56320)}function Wae(e,t,r){t==="__proto__"?Object.defineProperty(e,t,{configurable:!0,enumerable:!0,writable:!0,value:r}):e[t]=r}function uKe(e,t){this.input=e,this.filename=t.filename||null,this.schema=t.schema||$ae,this.onWarning=t.onWarning||null,this.legacy=t.legacy||!1,this.json=t.json||!1,this.listener=t.listener||null,this.implicitTypes=this.schema.compiledImplicit,this.typeMap=this.schema.compiledTypeMap,this.length=e.length,this.position=0,this.line=0,this.lineStart=0,this.lineIndent=0,this.firstTabInLine=-1,this.documents=[]}function Uae(e,t){var r={name:e.filename,buffer:e.input.slice(0,-1),position:e.position,line:e.line,column:e.position-e.lineStart};return r.snippet=Qje(r),new to(t,r)}function dr(e,t){throw Uae(e,t)}function m4(e,t){e.onWarning&&e.onWarning.call(null,Uae(e,t))}function Xd(e,t,r,n){var i,a,s,l;if(t<r){if(l=e.input.slice(t,r),n)for(i=0,a=l.length;i<a;i+=1)s=l.charCodeAt(i),s===9||32<=s&&s<=1114111||dr(e,"expected valid JSON character");else nKe.test(l)&&dr(e,"the stream contains non-printable characters");e.result+=l}}function wae(e,t,r,n){var i,a,s,l;for(sa.isObject(r)||dr(e,"cannot merge mappings; the provided source object is unacceptable"),i=Object.keys(r),s=0,l=i.length;s<l;s+=1)a=i[s],Kd.call(t,a)||(Wae(t,a,r[a]),n[a]=!0)}function By(e,t,r,n,i,a,s,l,u){var h,d;if(Array.isArray(i))for(i=Array.prototype.slice.call(i),h=0,d=i.length;h<d;h+=1)Array.isArray(i[h])&&dr(e,"nested arrays are not supported inside keys"),typeof i=="object"&&bae(i[h])==="[object Object]"&&(i[h]="[object Object]");if(typeof i=="object"&&bae(i)==="[object Object]"&&(i="[object Object]"),i=String(i),t===null&&(t={}),n==="tag:yaml.org,2002:merge")if(Array.isArray(a))for(h=0,d=a.length;h<d;h+=1)wae(e,t,a[h],r);else wae(e,t,a,r);else!e.json&&!Kd.call(r,i)&&Kd.call(t,i)&&(e.line=s||e.line,e.lineStart=l||e.lineStart,e.position=u||e.position,dr(e,"duplicated mapping key")),Wae(t,i,a),delete r[i];return t}function EP(e){var t;t=e.input.charCodeAt(e.position),t===10?e.position++:t===13?(e.position++,e.input.charCodeAt(e.position)===10&&e.position++):dr(e,"a line break is expected"),e.line+=1,e.lineStart=e.position,e.firstTabInLine=-1}function Ui(e,t,r){for(var n=0,i=e.input.charCodeAt(e.position);i!==0;){for(;xm(i);)i===9&&e.firstTabInLine===-1&&(e.firstTabInLine=e.position),i=e.input.charCodeAt(++e.position);if(t&&i===35)do i=e.input.charCodeAt(++e.position);while(i!==10&&i!==13&&i!==0);if(tu(i))for(EP(e),i=e.input.charCodeAt(e.position),n++,e.lineIndent=0;i===32;)e.lineIndent++,i=e.input.charCodeAt(++e.position);else break}return r!==-1&&n!==0&&e.lineIndent<r&&m4(e,"deficient indentation"),n}function v4(e){var t=e.position,r;return r=e.input.charCodeAt(t),!!((r===45||r===46)&&r===e.input.charCodeAt(t+1)&&r===e.input.charCodeAt(t+2)&&(t+=3,r=e.input.charCodeAt(t),r===0||ro(r)))}function AP(e,t){t===1?e.result+=" ":t>1&&(e.result+=sa.repeat(`
+`,t-1))}function hKe(e,t,r){var n,i,a,s,l,u,h,d,f=e.kind,p=e.result,m;if(m=e.input.charCodeAt(e.position),ro(m)||Oy(m)||m===35||m===38||m===42||m===33||m===124||m===62||m===39||m===34||m===37||m===64||m===96||(m===63||m===45)&&(i=e.input.charCodeAt(e.position+1),ro(i)||r&&Oy(i)))return!1;for(e.kind="scalar",e.result="",a=s=e.position,l=!1;m!==0;){if(m===58){if(i=e.input.charCodeAt(e.position+1),ro(i)||r&&Oy(i))break}else if(m===35){if(n=e.input.charCodeAt(e.position-1),ro(n))break}else{if(e.position===e.lineStart&&v4(e)||r&&Oy(m))break;if(tu(m))if(u=e.line,h=e.lineStart,d=e.lineIndent,Ui(e,!1,-1),e.lineIndent>=t){l=!0,m=e.input.charCodeAt(e.position);continue}else{e.position=s,e.line=u,e.lineStart=h,e.lineIndent=d;break}}l&&(Xd(e,a,s,!1),AP(e,e.line-u),a=s=e.position,l=!1),xm(m)||(s=e.position+1),m=e.input.charCodeAt(++e.position)}return Xd(e,a,s,!1),e.result?!0:(e.kind=f,e.result=p,!1)}function dKe(e,t){var r,n,i;if(r=e.input.charCodeAt(e.position),r!==39)return!1;for(e.kind="scalar",e.result="",e.position++,n=i=e.position;(r=e.input.charCodeAt(e.position))!==0;)if(r===39)if(Xd(e,n,e.position,!0),r=e.input.charCodeAt(++e.position),r===39)n=e.position,e.position++,i=e.position;else return!0;else tu(r)?(Xd(e,n,i,!0),AP(e,Ui(e,!1,t)),n=i=e.position):e.position===e.lineStart&&v4(e)?dr(e,"unexpected end of the document within a single quoted scalar"):(e.position++,i=e.position);dr(e,"unexpected end of the stream within a single quoted scalar")}function fKe(e,t){var r,n,i,a,s,l;if(l=e.input.charCodeAt(e.position),l!==34)return!1;for(e.kind="scalar",e.result="",e.position++,r=n=e.position;(l=e.input.charCodeAt(e.position))!==0;){if(l===34)return Xd(e,r,e.position,!0),e.position++,!0;if(l===92){if(Xd(e,r,e.position,!0),l=e.input.charCodeAt(++e.position),tu(l))Ui(e,!1,t);else if(l<256&&qae[l])e.result+=Hae[l],e.position++;else if((s=oKe(l))>0){for(i=s,a=0;i>0;i--)l=e.input.charCodeAt(++e.position),(s=sKe(l))>=0?a=(a<<4)+s:dr(e,"expected hexadecimal character");e.result+=cKe(a),e.position++}else dr(e,"unknown escape sequence");r=n=e.position}else tu(l)?(Xd(e,r,n,!0),AP(e,Ui(e,!1,t)),r=n=e.position):e.position===e.lineStart&&v4(e)?dr(e,"unexpected end of the document within a double quoted scalar"):(e.position++,n=e.position)}dr(e,"unexpected end of the stream within a double quoted scalar")}function pKe(e,t){var r=!0,n,i,a,s=e.tag,l,u=e.anchor,h,d,f,p,m,g=Object.create(null),y,v,x,b;if(b=e.input.charCodeAt(e.position),b===91)d=93,m=!1,l=[];else if(b===123)d=125,m=!0,l={};else return!1;for(e.anchor!==null&&(e.anchorMap[e.anchor]=l),b=e.input.charCodeAt(++e.position);b!==0;){if(Ui(e,!0,t),b=e.input.charCodeAt(e.position),b===d)return e.position++,e.tag=s,e.anchor=u,e.kind=m?"mapping":"sequence",e.result=l,!0;r?b===44&&dr(e,"expected the node content, but found ','"):dr(e,"missed comma between flow collection entries"),v=y=x=null,f=p=!1,b===63&&(h=e.input.charCodeAt(e.position+1),ro(h)&&(f=p=!0,e.position++,Ui(e,!0,t))),n=e.line,i=e.lineStart,a=e.position,$y(e,t,f4,!1,!0),v=e.tag,y=e.result,Ui(e,!0,t),b=e.input.charCodeAt(e.position),(p||e.line===n)&&b===58&&(f=!0,b=e.input.charCodeAt(++e.position),Ui(e,!0,t),$y(e,t,f4,!1,!0),x=e.result),m?By(e,l,g,v,y,x,n,i,a):f?l.push(By(e,null,g,v,y,x,n,i,a)):l.push(y),Ui(e,!0,t),b=e.input.charCodeAt(e.position),b===44?(r=!0,b=e.input.charCodeAt(++e.position)):r=!1}dr(e,"unexpected end of the stream within a flow collection")}function mKe(e,t){var r,n,i=xP,a=!1,s=!1,l=t,u=0,h=!1,d,f;if(f=e.input.charCodeAt(e.position),f===124)n=!1;else if(f===62)n=!0;else return!1;for(e.kind="scalar",e.result="";f!==0;)if(f=e.input.charCodeAt(++e.position),f===43||f===45)xP===i?i=f===43?xae:rKe:dr(e,"repeat of a chomping mode identifier");else if((d=lKe(f))>=0)d===0?dr(e,"bad explicit indentation width of a block scalar; it cannot be less than one"):s?dr(e,"repeat of an indentation width identifier"):(l=t+d-1,s=!0);else break;if(xm(f)){do f=e.input.charCodeAt(++e.position);while(xm(f));if(f===35)do f=e.input.charCodeAt(++e.position);while(!tu(f)&&f!==0)}for(;f!==0;){for(EP(e),e.lineIndent=0,f=e.input.charCodeAt(e.position);(!s||e.lineIndent<l)&&f===32;)e.lineIndent++,f=e.input.charCodeAt(++e.position);if(!s&&e.lineIndent>l&&(l=e.lineIndent),tu(f)){u++;continue}if(e.lineIndent<l){i===xae?e.result+=sa.repeat(`
+`,a?1+u:u):i===xP&&a&&(e.result+=`
+`);break}for(n?xm(f)?(h=!0,e.result+=sa.repeat(`
+`,a?1+u:u)):h?(h=!1,e.result+=sa.repeat(`
+`,u+1)):u===0?a&&(e.result+=" "):e.result+=sa.repeat(`
+`,u):e.result+=sa.repeat(`
+`,a?1+u:u),a=!0,s=!0,u=0,r=e.position;!tu(f)&&f!==0;)f=e.input.charCodeAt(++e.position);Xd(e,r,e.position,!1)}return!0}function kae(e,t){var r,n=e.tag,i=e.anchor,a=[],s,l=!1,u;if(e.firstTabInLine!==-1)return!1;for(e.anchor!==null&&(e.anchorMap[e.anchor]=a),u=e.input.charCodeAt(e.position);u!==0&&(e.firstTabInLine!==-1&&(e.position=e.firstTabInLine,dr(e,"tab characters must not be used in indentation")),!(u!==45||(s=e.input.charCodeAt(e.position+1),!ro(s))));){if(l=!0,e.position++,Ui(e,!0,-1)&&e.lineIndent<=t){a.push(null),u=e.input.charCodeAt(e.position);continue}if(r=e.line,$y(e,t,zae,!1,!0),a.push(e.result),Ui(e,!0,-1),u=e.input.charCodeAt(e.position),(e.line===r||e.lineIndent>t)&&u!==0)dr(e,"bad indentation of a sequence entry");else if(e.lineIndent<t)break}return l?(e.tag=n,e.anchor=i,e.kind="sequence",e.result=a,!0):!1}function gKe(e,t,r){var n,i,a,s,l,u,h=e.tag,d=e.anchor,f={},p=Object.create(null),m=null,g=null,y=null,v=!1,x=!1,b;if(e.firstTabInLine!==-1)return!1;for(e.anchor!==null&&(e.anchorMap[e.anchor]=f),b=e.input.charCodeAt(e.position);b!==0;){if(!v&&e.firstTabInLine!==-1&&(e.position=e.firstTabInLine,dr(e,"tab characters must not be used in indentation")),n=e.input.charCodeAt(e.position+1),a=e.line,(b===63||b===58)&&ro(n))b===63?(v&&(By(e,f,p,m,g,null,s,l,u),m=g=y=null),x=!0,v=!0,i=!0):v?(v=!1,i=!0):dr(e,"incomplete explicit mapping pair; a key node is missed; or followed by a non-tabulated empty line"),e.position+=1,b=n;else{if(s=e.line,l=e.lineStart,u=e.position,!$y(e,r,Fae,!1,!0))break;if(e.line===a){for(b=e.input.charCodeAt(e.position);xm(b);)b=e.input.charCodeAt(++e.position);if(b===58)b=e.input.charCodeAt(++e.position),ro(b)||dr(e,"a whitespace character is expected after the key-value separator within a block mapping"),v&&(By(e,f,p,m,g,null,s,l,u),m=g=y=null),x=!0,v=!1,i=!1,m=e.tag,g=e.result;else if(x)dr(e,"can not read an implicit mapping pair; a colon is missed");else return e.tag=h,e.anchor=d,!0}else if(x)dr(e,"can not read a block mapping entry; a multiline key may not be an implicit key");else return e.tag=h,e.anchor=d,!0}if((e.line===a||e.lineIndent>t)&&(v&&(s=e.line,l=e.lineStart,u=e.position),$y(e,t,p4,!0,i)&&(v?g=e.result:y=e.result),v||(By(e,f,p,m,g,y,s,l,u),m=g=y=null),Ui(e,!0,-1),b=e.input.charCodeAt(e.position)),(e.line===a||e.lineIndent>t)&&b!==0)dr(e,"bad indentation of a mapping entry");else if(e.lineIndent<t)break}return v&&By(e,f,p,m,g,null,s,l,u),x&&(e.tag=h,e.anchor=d,e.kind="mapping",e.result=f),x}function yKe(e){var t,r=!1,n=!1,i,a,s;if(s=e.input.charCodeAt(e.position),s!==33)return!1;if(e.tag!==null&&dr(e,"duplication of a tag property"),s=e.input.charCodeAt(++e.position),s===60?(r=!0,s=e.input.charCodeAt(++e.position)):s===33?(n=!0,i="!!",s=e.input.charCodeAt(++e.position)):i="!",t=e.position,r){do s=e.input.charCodeAt(++e.position);while(s!==0&&s!==62);e.position<e.length?(a=e.input.slice(t,e.position),s=e.input.charCodeAt(++e.position)):dr(e,"unexpected end of the stream within a verbatim tag")}else{for(;s!==0&&!ro(s);)s===33&&(n?dr(e,"tag suffix cannot contain exclamation marks"):(i=e.input.slice(t-1,e.position+1),Gae.test(i)||dr(e,"named tag handle cannot contain such characters"),n=!0,t=e.position+1)),s=e.input.charCodeAt(++e.position);a=e.input.slice(t,e.position),aKe.test(a)&&dr(e,"tag suffix cannot contain flow indicator characters")}a&&!Vae.test(a)&&dr(e,"tag name cannot contain such characters: "+a);try{a=decodeURIComponent(a)}catch{dr(e,"tag name is malformed: "+a)}return r?e.tag=a:Kd.call(e.tagMap,i)?e.tag=e.tagMap[i]+a:i==="!"?e.tag="!"+a:i==="!!"?e.tag="tag:yaml.org,2002:"+a:dr(e,'undeclared tag handle "'+i+'"'),!0}function vKe(e){var t,r;if(r=e.input.charCodeAt(e.position),r!==38)return!1;for(e.anchor!==null&&dr(e,"duplication of an anchor property"),r=e.input.charCodeAt(++e.position),t=e.position;r!==0&&!ro(r)&&!Oy(r);)r=e.input.charCodeAt(++e.position);return e.position===t&&dr(e,"name of an anchor node must contain at least one character"),e.anchor=e.input.slice(t,e.position),!0}function xKe(e){var t,r,n;if(n=e.input.charCodeAt(e.position),n!==42)return!1;for(n=e.input.charCodeAt(++e.position),t=e.position;n!==0&&!ro(n)&&!Oy(n);)n=e.input.charCodeAt(++e.position);return e.position===t&&dr(e,"name of an alias node must contain at least one character"),r=e.input.slice(t,e.position),Kd.call(e.anchorMap,r)||dr(e,'unidentified alias "'+r+'"'),e.result=e.anchorMap[r],Ui(e,!0,-1),!0}function $y(e,t,r,n,i){var a,s,l,u=1,h=!1,d=!1,f,p,m,g,y,v;if(e.listener!==null&&e.listener("open",e),e.tag=null,e.anchor=null,e.kind=null,e.result=null,a=s=l=p4===r||zae===r,n&&Ui(e,!0,-1)&&(h=!0,e.lineIndent>t?u=1:e.lineIndent===t?u=0:e.lineIndent<t&&(u=-1)),u===1)for(;yKe(e)||vKe(e);)Ui(e,!0,-1)?(h=!0,l=a,e.lineIndent>t?u=1:e.lineIndent===t?u=0:e.lineIndent<t&&(u=-1)):l=!1;if(l&&(l=h||i),(u===1||p4===r)&&(f4===r||Fae===r?y=t:y=t+1,v=e.position-e.lineStart,u===1?l&&(kae(e,v)||gKe(e,v,y))||pKe(e,y)?d=!0:(s&&mKe(e,y)||dKe(e,y)||fKe(e,y)?d=!0:xKe(e)?(d=!0,(e.tag!==null||e.anchor!==null)&&dr(e,"alias node should not have any properties")):hKe(e,y,f4===r)&&(d=!0,e.tag===null&&(e.tag="?")),e.anchor!==null&&(e.anchorMap[e.anchor]=e.result)):u===0&&(d=l&&kae(e,v))),e.tag===null)e.anchor!==null&&(e.anchorMap[e.anchor]=e.result);else if(e.tag==="?"){for(e.result!==null&&e.kind!=="scalar"&&dr(e,'unacceptable node kind for !<?> tag; it should be "scalar", not "'+e.kind+'"'),f=0,p=e.implicitTypes.length;f<p;f+=1)if(g=e.implicitTypes[f],g.resolve(e.result)){e.result=g.construct(e.result),e.tag=g.tag,e.anchor!==null&&(e.anchorMap[e.anchor]=e.result);break}}else if(e.tag!=="!"){if(Kd.call(e.typeMap[e.kind||"fallback"],e.tag))g=e.typeMap[e.kind||"fallback"][e.tag];else for(g=null,m=e.typeMap.multi[e.kind||"fallback"],f=0,p=m.length;f<p;f+=1)if(e.tag.slice(0,m[f].tag.length)===m[f].tag){g=m[f];break}g||dr(e,"unknown tag !<"+e.tag+">"),e.result!==null&&g.kind!==e.kind&&dr(e,"unacceptable node kind for !<"+e.tag+'> tag; it should be "'+g.kind+'", not "'+e.kind+'"'),g.resolve(e.result,e.tag)?(e.result=g.construct(e.result,e.tag),e.anchor!==null&&(e.anchorMap[e.anchor]=e.result)):dr(e,"cannot resolve a node with !<"+e.tag+"> explicit tag")}return e.listener!==null&&e.listener("close",e),e.tag!==null||e.anchor!==null||d}function bKe(e){var t=e.position,r,n,i,a=!1,s;for(e.version=null,e.checkLineBreaks=e.legacy,e.tagMap=Object.create(null),e.anchorMap=Object.create(null);(s=e.input.charCodeAt(e.position))!==0&&(Ui(e,!0,-1),s=e.input.charCodeAt(e.position),!(e.lineIndent>0||s!==37));){for(a=!0,s=e.input.charCodeAt(++e.position),r=e.position;s!==0&&!ro(s);)s=e.input.charCodeAt(++e.position);for(n=e.input.slice(r,e.position),i=[],n.length<1&&dr(e,"directive name must not be less than one character in length");s!==0;){for(;xm(s);)s=e.input.charCodeAt(++e.position);if(s===35){do s=e.input.charCodeAt(++e.position);while(s!==0&&!tu(s));break}if(tu(s))break;for(r=e.position;s!==0&&!ro(s);)s=e.input.charCodeAt(++e.position);i.push(e.input.slice(r,e.position))}s!==0&&EP(e),Kd.call(Cae,n)?Cae[n](e,n,i):m4(e,'unknown document directive "'+n+'"')}if(Ui(e,!0,-1),e.lineIndent===0&&e.input.charCodeAt(e.position)===45&&e.input.charCodeAt(e.position+1)===45&&e.input.charCodeAt(e.position+2)===45?(e.position+=3,Ui(e,!0,-1)):a&&dr(e,"directives end mark is expected"),$y(e,e.lineIndent-1,p4,!1,!0),Ui(e,!0,-1),e.checkLineBreaks&&iKe.test(e.input.slice(t,e.position))&&m4(e,"non-ASCII line breaks are interpreted as content"),e.documents.push(e.result),e.position===e.lineStart&&v4(e)){e.input.charCodeAt(e.position)===46&&(e.position+=3,Ui(e,!0,-1));return}if(e.position<e.length-1)dr(e,"end of the stream or a document separator is expected");else return}function Yae(e,t){e=String(e),t=t||{},e.length!==0&&(e.charCodeAt(e.length-1)!==10&&e.charCodeAt(e.length-1)!==13&&(e+=`
+`),e.charCodeAt(0)===65279&&(e=e.slice(1)));var r=new uKe(e,t),n=e.indexOf("\0");for(n!==-1&&(r.position=n,dr(r,"null byte is not allowed in input")),r.input+="\0";r.input.charCodeAt(r.position)===32;)r.lineIndent+=1,r.position+=1;for(;r.position<r.length-1;)bKe(r);return r.documents}function TKe(e,t,r){t!==null&&typeof t=="object"&&typeof r>"u"&&(r=t,t=null);var n=Yae(e,r);if(typeof t!="function")return n;for(var i=0,a=n.length;i<a;i+=1)t(n[i])}function CKe(e,t){var r=Yae(e,t);if(r.length!==0){if(r.length===1)return r[0];throw new to("expected a single document in the stream, but found more")}}function WKe(e,t){var r,n,i,a,s,l,u;if(t===null)return{};for(r={},n=Object.keys(t),i=0,a=n.length;i<a;i+=1)s=n[i],l=String(t[s]),s.slice(0,2)==="!!"&&(s="tag:yaml.org,2002:"+s.slice(2)),u=e.compiledTypeMap.fallback[s],u&&Kae.call(u.styleAliases,l)&&(l=u.styleAliases[l]),r[s]=l;return r}function qKe(e){var t,r,n;if(t=e.toString(16).toUpperCase(),e<=255)r="x",n=2;else if(e<=65535)r="u",n=4;else if(e<=4294967295)r="U",n=8;else throw new to("code point within a string may not be greater than 0xFFFFFFFF");return"\\"+r+sa.repeat("0",n-t.length)+t}function UKe(e){this.schema=e.schema||$ae,this.indent=Math.max(1,e.indent||2),this.noArrayIndent=e.noArrayIndent||!1,this.skipInvalid=e.skipInvalid||!1,this.flowLevel=sa.isNothing(e.flowLevel)?-1:e.flowLevel,this.styleMap=WKe(this.schema,e.styles||null),this.sortKeys=e.sortKeys||!1,this.lineWidth=e.lineWidth||80,this.noRefs=e.noRefs||!1,this.noCompatMode=e.noCompatMode||!1,this.condenseFlow=e.condenseFlow||!1,this.quotingType=e.quotingType==='"'?S2:HKe,this.forceQuotes=e.forceQuotes||!1,this.replacer=typeof e.replacer=="function"?e.replacer:null,this.implicitTypes=this.schema.compiledImplicit,this.explicitTypes=this.schema.compiledExplicit,this.tag=null,this.result="",this.duplicates=[],this.usedDuplicates=null}function Sae(e,t){for(var r=sa.repeat(" ",t),n=0,i=-1,a="",s,l=e.length;n<l;)i=e.indexOf(`
+`,n),i===-1?(s=e.slice(n),n=l):(s=e.slice(n,i+1),n=i+1),s.length&&s!==`
+`&&(a+=r),a+=s;return a}function CP(e,t){return`
+`+sa.repeat(" ",e.indent*t)}function YKe(e,t){var r,n,i;for(r=0,n=e.implicitTypes.length;r<n;r+=1)if(i=e.implicitTypes[r],i.resolve(t))return!0;return!1}function y4(e){return e===AKe||e===SKe}function E2(e){return 32<=e&&e<=126||161<=e&&e<=55295&&e!==8232&&e!==8233||57344<=e&&e<=65533&&e!==RP||65536<=e&&e<=1114111}function Eae(e){return E2(e)&&e!==RP&&e!==EKe&&e!==k2}function Aae(e,t,r){var n=Eae(e),i=n&&!y4(e);return(r?n:n&&e!==Zae&&e!==Qae&&e!==Jae&&e!==ese&&e!==tse)&&e!==TP&&!(t===g4&&!i)||Eae(t)&&!y4(t)&&e===TP||t===g4&&i}function jKe(e){return E2(e)&&e!==RP&&!y4(e)&&e!==NKe&&e!==BKe&&e!==g4&&e!==Zae&&e!==Qae&&e!==Jae&&e!==ese&&e!==tse&&e!==TP&&e!==DKe&&e!==MKe&&e!==RKe&&e!==zKe&&e!==PKe&&e!==OKe&&e!==IKe&&e!==_Ke&&e!==LKe&&e!==$Ke&&e!==FKe}function XKe(e){return!y4(e)&&e!==g4}function C2(e,t){var r=e.charCodeAt(t),n;return r>=55296&&r<=56319&&t+1<e.length&&(n=e.charCodeAt(t+1),n>=56320&&n<=57343)?(r-55296)*1024+n-56320+65536:r}function rse(e){var t=/^\n* /;return t.test(e)}function KKe(e,t,r,n,i,a,s,l){var u,h=0,d=null,f=!1,p=!1,m=n!==-1,g=-1,y=jKe(C2(e,0))&&XKe(C2(e,e.length-1));if(t||s)for(u=0;u<e.length;h>=65536?u+=2:u++){if(h=C2(e,u),!E2(h))return Py;y=y&&Aae(h,d,l),d=h}else{for(u=0;u<e.length;h>=65536?u+=2:u++){if(h=C2(e,u),h===k2)f=!0,m&&(p=p||u-g-1>n&&e[g+1]!==" ",g=u);else if(!E2(h))return Py;y=y&&Aae(h,d,l),d=h}p=p||m&&u-g-1>n&&e[g+1]!==" "}return!f&&!p?y&&!s&&!i(e)?nse:a===S2?Py:wP:r>9&&rse(e)?Py:s?a===S2?Py:wP:p?ase:ise}function ZKe(e,t,r,n,i){e.dump=(function(){if(t.length===0)return e.quotingType===S2?'""':"''";if(!e.noCompatMode&&(GKe.indexOf(t)!==-1||VKe.test(t)))return e.quotingType===S2?'"'+t+'"':"'"+t+"'";var a=e.indent*Math.max(1,r),s=e.lineWidth===-1?-1:Math.max(Math.min(e.lineWidth,40),e.lineWidth-a),l=n||e.flowLevel>-1&&r>=e.flowLevel;function u(h){return YKe(e,h)}switch(o(u,"testAmbiguity"),KKe(t,l,e.indent,s,u,e.quotingType,e.forceQuotes&&!n,i)){case nse:return t;case wP:return"'"+t.replace(/'/g,"''")+"'";case ise:return"|"+Rae(t,e.indent)+_ae(Sae(t,a));case ase:return">"+Rae(t,e.indent)+_ae(Sae(QKe(t,s),a));case Py:return'"'+JKe(t)+'"';default:throw new to("impossible error: invalid scalar style")}})()}function Rae(e,t){var r=rse(e)?String(t):"",n=e[e.length-1]===`
+`,i=n&&(e[e.length-2]===`
 `||e===`
-`),a=n?"+":i?"":"-";return r+a+`
-`}function Cte(e){return e[e.length-1]===`
-`?e.slice(0,-1):e}function lWe(e,t){for(var r=/(\n+)([^\n]*)/g,i=(function(){var h=e.indexOf(`
-`);return h=h!==-1?h:e.length,r.lastIndex=h,kte(e.slice(0,h),t)})(),n=e[0]===`
-`||e[0]===" ",a,s;s=r.exec(e);){var l=s[1],u=s[2];a=u[0]===" ",i+=l+(!n&&!a&&u!==""?`
-`:"")+kte(u,t),n=a}return i}function kte(e,t){if(e===""||e[0]===" ")return e;for(var r=/ [^ ]/g,i,n=0,a,s=0,l=0,u="";i=r.exec(e);)l=i.index,l-n>t&&(a=s>n?s:l,u+=`
-`+e.slice(n,a),n=a+1),s=l;return u+=`
-`,e.length-n>t&&s>n?u+=e.slice(n,s)+`
-`+e.slice(s+1):u+=e.slice(n),u.slice(1)}function cWe(e){for(var t="",r=0,i,n=0;n<e.length;r>=65536?n+=2:n++)r=Fx(e,n),i=La[r],!i&&Vx(r)?(t+=e[n],r>=65536&&(t+=e[n+1])):t+=i||eWe(r);return t}function uWe(e,t,r){var i="",n=e.tag,a,s,l;for(a=0,s=r.length;a<s;a+=1)l=r[a],e.replacer&&(l=e.replacer.call(r,String(a),l)),(Ou(e,t,l,!1,!1)||typeof l>"u"&&Ou(e,t,null,!1,!1))&&(i!==""&&(i+=","+(e.condenseFlow?"":" ")),i+=e.dump);e.tag=n,e.dump="["+i+"]"}function wte(e,t,r,i){var n="",a=e.tag,s,l,u;for(s=0,l=r.length;s<l;s+=1)u=r[s],e.replacer&&(u=e.replacer.call(r,String(s),u)),(Ou(e,t+1,u,!0,!0,!1,!0)||typeof u>"u"&&Ou(e,t+1,null,!0,!0,!1,!0))&&((!i||n!=="")&&(n+=zM(e,t)),e.dump&&zx===e.dump.charCodeAt(0)?n+="-":n+="- ",n+=e.dump);e.tag=a,e.dump=n||"[]"}function hWe(e,t,r){var i="",n=e.tag,a=Object.keys(r),s,l,u,h,d;for(s=0,l=a.length;s<l;s+=1)d="",i!==""&&(d+=", "),e.condenseFlow&&(d+='"'),u=a[s],h=r[u],e.replacer&&(h=e.replacer.call(r,u,h)),Ou(e,t,u,!1,!1)&&(e.dump.length>1024&&(d+="? "),d+=e.dump+(e.condenseFlow?'"':"")+":"+(e.condenseFlow?"":" "),Ou(e,t,h,!1,!1)&&(d+=e.dump,i+=d));e.tag=n,e.dump="{"+i+"}"}function dWe(e,t,r,i){var n="",a=e.tag,s=Object.keys(r),l,u,h,d,f,p;if(e.sortKeys===!0)s.sort();else if(typeof e.sortKeys=="function")s.sort(e.sortKeys);else if(e.sortKeys)throw new Es("sortKeys must be a boolean or a function");for(l=0,u=s.length;l<u;l+=1)p="",(!i||n!=="")&&(p+=zM(e,t)),h=s[l],d=r[h],e.replacer&&(d=e.replacer.call(r,h,d)),Ou(e,t+1,h,!0,!0,!0)&&(f=e.tag!==null&&e.tag!=="?"||e.dump&&e.dump.length>1024,f&&(e.dump&&zx===e.dump.charCodeAt(0)?p+="?":p+="? "),p+=e.dump,f&&(p+=zM(e,t)),Ou(e,t+1,d,!0,f)&&(e.dump&&zx===e.dump.charCodeAt(0)?p+=":":p+=": ",p+=e.dump,n+=p));e.tag=a,e.dump=n||"{}"}function Ste(e,t,r){var i,n,a,s,l,u;for(n=r?e.explicitTypes:e.implicitTypes,a=0,s=n.length;a<s;a+=1)if(l=n[a],(l.instanceOf||l.predicate)&&(!l.instanceOf||typeof t=="object"&&t instanceof l.instanceOf)&&(!l.predicate||l.predicate(t))){if(r?l.multi&&l.representName?e.tag=l.representName(t):e.tag=l.tag:e.tag="?",l.represent){if(u=e.styleMap[l.tag]||l.defaultStyle,Vte.call(l.represent)==="[object Function]")i=l.represent(t,u);else if(Wte.call(l.represent,u))i=l.represent[u](t,u);else throw new Es("!<"+l.tag+'> tag resolver accepts not "'+u+'" style');e.dump=i}return!0}return!1}function Ou(e,t,r,i,n,a,s){e.tag=null,e.dump=r,Ste(e,r,!1)||Ste(e,r,!0);var l=Vte.call(e.dump),u=i,h;i&&(i=e.flowLevel<0||e.flowLevel>t);var d=l==="[object Object]"||l==="[object Array]",f,p;if(d&&(f=e.duplicates.indexOf(r),p=f!==-1),(e.tag!==null&&e.tag!=="?"||p||e.indent!==2&&t>0)&&(n=!1),p&&e.usedDuplicates[f])e.dump="*ref_"+f;else{if(d&&p&&!e.usedDuplicates[f]&&(e.usedDuplicates[f]=!0),l==="[object Object]")i&&Object.keys(e.dump).length!==0?(dWe(e,t,e.dump,n),p&&(e.dump="&ref_"+f+e.dump)):(hWe(e,t,e.dump),p&&(e.dump="&ref_"+f+" "+e.dump));else if(l==="[object Array]")i&&e.dump.length!==0?(e.noArrayIndent&&!s&&t>0?wte(e,t-1,e.dump,n):wte(e,t,e.dump,n),p&&(e.dump="&ref_"+f+e.dump)):(uWe(e,t,e.dump),p&&(e.dump="&ref_"+f+" "+e.dump));else if(l==="[object String]")e.tag!=="?"&&oWe(e,e.dump,t,a,u);else{if(l==="[object Undefined]")return!1;if(e.skipInvalid)return!1;throw new Es("unacceptable kind of an object to dump "+l)}e.tag!==null&&e.tag!=="?"&&(h=encodeURI(e.tag[0]==="!"?e.tag.slice(1):e.tag).replace(/!/g,"%21"),e.tag[0]==="!"?h="!"+h:h.slice(0,18)==="tag:yaml.org,2002:"?h="!!"+h.slice(18):h="!<"+h+">",e.dump=h+" "+e.dump)}return!0}function fWe(e,t){var r=[],i=[],n,a;for(VM(e,r,i),n=0,a=i.length;n<a;n+=1)t.duplicates.push(r[i[n]]);t.usedDuplicates=new Array(a)}function VM(e,t,r){var i,n,a;if(e!==null&&typeof e=="object")if(n=t.indexOf(e),n!==-1)r.indexOf(n)===-1&&r.push(n);else if(t.push(e),Array.isArray(e))for(n=0,a=e.length;n<a;n+=1)VM(e[n],t,r);else for(i=Object.keys(e),n=0,a=i.length;n<a;n+=1)VM(e[i[n]],t,r)}function pWe(e,t){t=t||{};var r=new rWe(t);r.noRefs||fWe(e,r);var i=e;return r.replacer&&(i=r.replacer.call({"":i},"",i)),Ou(r,0,i,!0,!0)?r.dump+`
-`:""}function YM(e,t){return function(){throw new Error("Function yaml."+e+" is removed in js-yaml 4. Use yaml."+t+" instead, which is now safe by default.")}}var tGe,rGe,iGe,nGe,aGe,sGe,zn,Es,lGe,cGe,uGe,Ra,pGe,mGe,gGe,yGe,vGe,CGe,EGe,NGe,IGe,BGe,zGe,_te,GGe,Dte,Rte,UGe,YGe,WM,QGe,JGe,eVe,iVe,nVe,oVe,lVe,hVe,Lte,sd,f4,Mte,Nte,p4,BM,dVe,dte,fVe,pVe,mVe,Ite,Ote,Bte,Fte,Cp,mte,NVe,IVe,Gte,Vte,Wte,HM,OVe,zx,PVe,BVe,FVe,$Ve,$M,zVe,GVe,VVe,WVe,qte,qVe,g4,UVe,HVe,YVe,jVe,Ute,Hte,XVe,Yte,KVe,jte,La,ZVe,QVe,tWe,Gx,Kte,GM,Zte,Qte,yg,mWe,gWe,od,ld,yYt,vYt,xYt,bYt,TYt,Wx=z(()=>{"use strict";o(Ete,"isNothing");o(Kze,"isObject");o(Zze,"toArray");o(Qze,"extend");o(Jze,"repeat");o(eGe,"isNegativeZero");tGe=Ete,rGe=Kze,iGe=Zze,nGe=Jze,aGe=eGe,sGe=Qze,zn={isNothing:tGe,isObject:rGe,toArray:iGe,repeat:nGe,isNegativeZero:aGe,extend:sGe};o(Ate,"formatError");o($x,"YAMLException$1");$x.prototype=Object.create(Error.prototype);$x.prototype.constructor=$x;$x.prototype.toString=o(function(t){return this.name+": "+Ate(this,t)},"toString");Es=$x;o(OM,"getLine");o(PM,"padStart");o(oGe,"makeSnippet");lGe=oGe,cGe=["kind","multi","resolve","construct","instanceOf","predicate","represent","representName","defaultStyle","styleAliases"],uGe=["scalar","sequence","mapping"];o(hGe,"compileStyleAliases");o(dGe,"Type$1");Ra=dGe;o(hte,"compileList");o(fGe,"compileMap");o(FM,"Schema$1");FM.prototype.extend=o(function(t){var r=[],i=[];if(t instanceof Ra)i.push(t);else if(Array.isArray(t))i=i.concat(t);else if(t&&(Array.isArray(t.implicit)||Array.isArray(t.explicit)))t.implicit&&(r=r.concat(t.implicit)),t.explicit&&(i=i.concat(t.explicit));else throw new Es("Schema.extend argument should be a Type, [ Type ], or a schema definition ({ implicit: [...], explicit: [...] })");r.forEach(function(a){if(!(a instanceof Ra))throw new Es("Specified list of YAML types (or a single Type object) contains a non-Type object.");if(a.loadKind&&a.loadKind!=="scalar")throw new Es("There is a non-scalar type in the implicit list of a schema. Implicit resolving of such types is not supported.");if(a.multi)throw new Es("There is a multi type in the implicit list of a schema. Multi tags can only be listed as explicit.")}),i.forEach(function(a){if(!(a instanceof Ra))throw new Es("Specified list of YAML types (or a single Type object) contains a non-Type object.")});var n=Object.create(FM.prototype);return n.implicit=(this.implicit||[]).concat(r),n.explicit=(this.explicit||[]).concat(i),n.compiledImplicit=hte(n,"implicit"),n.compiledExplicit=hte(n,"explicit"),n.compiledTypeMap=fGe(n.compiledImplicit,n.compiledExplicit),n},"extend");pGe=FM,mGe=new Ra("tag:yaml.org,2002:str",{kind:"scalar",construct:o(function(e){return e!==null?e:""},"construct")}),gGe=new Ra("tag:yaml.org,2002:seq",{kind:"sequence",construct:o(function(e){return e!==null?e:[]},"construct")}),yGe=new Ra("tag:yaml.org,2002:map",{kind:"mapping",construct:o(function(e){return e!==null?e:{}},"construct")}),vGe=new pGe({explicit:[mGe,gGe,yGe]});o(xGe,"resolveYamlNull");o(bGe,"constructYamlNull");o(TGe,"isNull");CGe=new Ra("tag:yaml.org,2002:null",{kind:"scalar",resolve:xGe,construct:bGe,predicate:TGe,represent:{canonical:o(function(){return"~"},"canonical"),lowercase:o(function(){return"null"},"lowercase"),uppercase:o(function(){return"NULL"},"uppercase"),camelcase:o(function(){return"Null"},"camelcase"),empty:o(function(){return""},"empty")},defaultStyle:"lowercase"});o(kGe,"resolveYamlBoolean");o(wGe,"constructYamlBoolean");o(SGe,"isBoolean");EGe=new Ra("tag:yaml.org,2002:bool",{kind:"scalar",resolve:kGe,construct:wGe,predicate:SGe,represent:{lowercase:o(function(e){return e?"true":"false"},"lowercase"),uppercase:o(function(e){return e?"TRUE":"FALSE"},"uppercase"),camelcase:o(function(e){return e?"True":"False"},"camelcase")},defaultStyle:"lowercase"});o(AGe,"isHexCode");o(_Ge,"isOctCode");o(DGe,"isDecCode");o(RGe,"resolveYamlInteger");o(LGe,"constructYamlInteger");o(MGe,"isInteger");NGe=new Ra("tag:yaml.org,2002:int",{kind:"scalar",resolve:RGe,construct:LGe,predicate:MGe,represent:{binary:o(function(e){return e>=0?"0b"+e.toString(2):"-0b"+e.toString(2).slice(1)},"binary"),octal:o(function(e){return e>=0?"0o"+e.toString(8):"-0o"+e.toString(8).slice(1)},"octal"),decimal:o(function(e){return e.toString(10)},"decimal"),hexadecimal:o(function(e){return e>=0?"0x"+e.toString(16).toUpperCase():"-0x"+e.toString(16).toUpperCase().slice(1)},"hexadecimal")},defaultStyle:"decimal",styleAliases:{binary:[2,"bin"],octal:[8,"oct"],decimal:[10,"dec"],hexadecimal:[16,"hex"]}}),IGe=new RegExp("^(?:[-+]?(?:[0-9][0-9_]*)(?:\\.[0-9_]*)?(?:[eE][-+]?[0-9]+)?|\\.[0-9_]+(?:[eE][-+]?[0-9]+)?|[-+]?\\.(?:inf|Inf|INF)|\\.(?:nan|NaN|NAN))$");o(OGe,"resolveYamlFloat");o(PGe,"constructYamlFloat");BGe=/^[-+]?[0-9]+e/;o(FGe,"representYamlFloat");o($Ge,"isFloat");zGe=new Ra("tag:yaml.org,2002:float",{kind:"scalar",resolve:OGe,construct:PGe,predicate:$Ge,represent:FGe,defaultStyle:"lowercase"}),_te=vGe.extend({implicit:[CGe,EGe,NGe,zGe]}),GGe=_te,Dte=new RegExp("^([0-9][0-9][0-9][0-9])-([0-9][0-9])-([0-9][0-9])$"),Rte=new RegExp("^([0-9][0-9][0-9][0-9])-([0-9][0-9]?)-([0-9][0-9]?)(?:[Tt]|[ \\t]+)([0-9][0-9]?):([0-9][0-9]):([0-9][0-9])(?:\\.([0-9]*))?(?:[ \\t]*(Z|([-+])([0-9][0-9]?)(?::([0-9][0-9]))?))?$");o(VGe,"resolveYamlTimestamp");o(WGe,"constructYamlTimestamp");o(qGe,"representYamlTimestamp");UGe=new Ra("tag:yaml.org,2002:timestamp",{kind:"scalar",resolve:VGe,construct:WGe,instanceOf:Date,represent:qGe});o(HGe,"resolveYamlMerge");YGe=new Ra("tag:yaml.org,2002:merge",{kind:"scalar",resolve:HGe}),WM=`ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=
-\r`;o(jGe,"resolveYamlBinary");o(XGe,"constructYamlBinary");o(KGe,"representYamlBinary");o(ZGe,"isBinary");QGe=new Ra("tag:yaml.org,2002:binary",{kind:"scalar",resolve:jGe,construct:XGe,predicate:ZGe,represent:KGe}),JGe=Object.prototype.hasOwnProperty,eVe=Object.prototype.toString;o(tVe,"resolveYamlOmap");o(rVe,"constructYamlOmap");iVe=new Ra("tag:yaml.org,2002:omap",{kind:"sequence",resolve:tVe,construct:rVe}),nVe=Object.prototype.toString;o(aVe,"resolveYamlPairs");o(sVe,"constructYamlPairs");oVe=new Ra("tag:yaml.org,2002:pairs",{kind:"sequence",resolve:aVe,construct:sVe}),lVe=Object.prototype.hasOwnProperty;o(cVe,"resolveYamlSet");o(uVe,"constructYamlSet");hVe=new Ra("tag:yaml.org,2002:set",{kind:"mapping",resolve:cVe,construct:uVe}),Lte=GGe.extend({implicit:[UGe,YGe],explicit:[QGe,iVe,oVe,hVe]}),sd=Object.prototype.hasOwnProperty,f4=1,Mte=2,Nte=3,p4=4,BM=1,dVe=2,dte=3,fVe=/[\x00-\x08\x0B\x0C\x0E-\x1F\x7F-\x84\x86-\x9F\uFFFE\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF]/,pVe=/[\x85\u2028\u2029]/,mVe=/[,\[\]\{\}]/,Ite=/^(?:!|!!|![a-z\-]+!)$/i,Ote=/^(?:!|[^,\[\]\{\}])(?:%[0-9a-f]{2}|[0-9a-z\-#;\/\?:@&=\+\$,_\.!~\*'\(\)\[\]])*$/i;o(fte,"_class");o(Tc,"is_EOL");o(kp,"is_WHITE_SPACE");o(As,"is_WS_OR_EOL");o(vg,"is_FLOW_INDICATOR");o(gVe,"fromHexCode");o(yVe,"escapedHexLen");o(vVe,"fromDecimalCode");o(pte,"simpleEscapeSequence");o(xVe,"charFromCodepoint");o(Pte,"setProperty");Bte=new Array(256),Fte=new Array(256);for(Cp=0;Cp<256;Cp++)Bte[Cp]=pte(Cp)?1:0,Fte[Cp]=pte(Cp);o(bVe,"State$1");o($te,"generateError");o(ar,"throwError");o(m4,"throwWarning");mte={YAML:o(function(t,r,i){var n,a,s;t.version!==null&&ar(t,"duplication of %YAML directive"),i.length!==1&&ar(t,"YAML directive accepts exactly one argument"),n=/^([0-9]+)\.([0-9]+)$/.exec(i[0]),n===null&&ar(t,"ill-formed argument of the YAML directive"),a=parseInt(n[1],10),s=parseInt(n[2],10),a!==1&&ar(t,"unacceptable YAML version of the document"),t.version=i[0],t.checkLineBreaks=s<2,s!==1&&s!==2&&m4(t,"unsupported YAML version of the document")},"handleYamlDirective"),TAG:o(function(t,r,i){var n,a;i.length!==2&&ar(t,"TAG directive accepts exactly two arguments"),n=i[0],a=i[1],Ite.test(n)||ar(t,"ill-formed tag handle (first argument) of the TAG directive"),sd.call(t.tagMap,n)&&ar(t,'there is a previously declared suffix for "'+n+'" tag handle'),Ote.test(a)||ar(t,"ill-formed tag prefix (second argument) of the TAG directive");try{a=decodeURIComponent(a)}catch{ar(t,"tag prefix is malformed: "+a)}t.tagMap[n]=a},"handleTagDirective")};o(ad,"captureSegment");o(gte,"mergeMappings");o(xg,"storeMappingPair");o(qM,"readLineBreak");o(En,"skipSeparationSpace");o(v4,"testDocumentSeparator");o(UM,"writeFoldedLines");o(TVe,"readPlainScalar");o(CVe,"readSingleQuotedScalar");o(kVe,"readDoubleQuotedScalar");o(wVe,"readFlowCollection");o(SVe,"readBlockScalar");o(yte,"readBlockSequence");o(EVe,"readBlockMapping");o(AVe,"readTagProperty");o(_Ve,"readAnchorProperty");o(DVe,"readAlias");o(bg,"composeNode");o(RVe,"readDocument");o(zte,"loadDocuments");o(LVe,"loadAll$1");o(MVe,"load$1");NVe=LVe,IVe=MVe,Gte={loadAll:NVe,load:IVe},Vte=Object.prototype.toString,Wte=Object.prototype.hasOwnProperty,HM=65279,OVe=9,zx=10,PVe=13,BVe=32,FVe=33,$Ve=34,$M=35,zVe=37,GVe=38,VVe=39,WVe=42,qte=44,qVe=45,g4=58,UVe=61,HVe=62,YVe=63,jVe=64,Ute=91,Hte=93,XVe=96,Yte=123,KVe=124,jte=125,La={};La[0]="\\0";La[7]="\\a";La[8]="\\b";La[9]="\\t";La[10]="\\n";La[11]="\\v";La[12]="\\f";La[13]="\\r";La[27]="\\e";La[34]='\\"';La[92]="\\\\";La[133]="\\N";La[160]="\\_";La[8232]="\\L";La[8233]="\\P";ZVe=["y","Y","yes","Yes","YES","on","On","ON","n","N","no","No","NO","off","Off","OFF"],QVe=/^[-+]?[0-9_]+(?::[0-9_]+)+(?:\.[0-9_]*)?$/;o(JVe,"compileStyleMap");o(eWe,"encodeHex");tWe=1,Gx=2;o(rWe,"State");o(vte,"indentString");o(zM,"generateNextLine");o(iWe,"testImplicitResolving");o(y4,"isWhitespace");o(Vx,"isPrintable");o(xte,"isNsCharOrWhitespace");o(bte,"isPlainSafe");o(nWe,"isPlainSafeFirst");o(aWe,"isPlainSafeLast");o(Fx,"codePointAt");o(Xte,"needIndentIndicator");Kte=1,GM=2,Zte=3,Qte=4,yg=5;o(sWe,"chooseScalarStyle");o(oWe,"writeScalar");o(Tte,"blockHeader");o(Cte,"dropEndingNewline");o(lWe,"foldString");o(kte,"foldLine");o(cWe,"escapeString");o(uWe,"writeFlowSequence");o(wte,"writeBlockSequence");o(hWe,"writeFlowMapping");o(dWe,"writeBlockMapping");o(Ste,"detectType");o(Ou,"writeNode");o(fWe,"getDuplicateReferences");o(VM,"inspectNode");o(pWe,"dump$1");mWe=pWe,gWe={dump:mWe};o(YM,"renamed");od=_te,ld=Gte.load,yYt=Gte.loadAll,vYt=gWe.dump,xYt=YM("safeLoad","load"),bYt=YM("safeLoadAll","loadAll"),TYt=YM("safeDump","dump")});function ZM(){return{async:!1,breaks:!1,extensions:null,gfm:!0,hooks:null,pedantic:!1,renderer:null,silent:!1,tokenizer:null,walkTokens:null}}function nre(e){Sp=e}function li(e,t=""){let r=typeof e=="string"?e:e.source,i={replace:o((n,a)=>{let s=typeof a=="string"?a:a.source;return s=s.replace(Ja.caret,"$1"),r=r.replace(n,s),i},"replace"),getRegex:o(()=>new RegExp(r,t),"getRegex")};return i}function Cc(e,t){if(t){if(Ja.escapeTest.test(e))return e.replace(Ja.escapeReplace,ere)}else if(Ja.escapeTestNoEncode.test(e))return e.replace(Ja.escapeReplaceNoEncode,ere);return e}function tre(e){try{e=encodeURI(e).replace(Ja.percentDecode,"%")}catch{return null}return e}function rre(e,t){let r=e.replace(Ja.findPipe,(a,s,l)=>{let u=!1,h=s;for(;--h>=0&&l[h]==="\\";)u=!u;return u?"|":" |"}),i=r.split(Ja.splitPipe),n=0;if(i[0].trim()||i.shift(),i.length>0&&!i.at(-1)?.trim()&&i.pop(),t)if(i.length>t)i.splice(t);else for(;i.length<t;)i.push("");for(;n<i.length;n++)i[n]=i[n].trim().replace(Ja.slashPipe,"|");return i}function Ux(e,t,r){let i=e.length;if(i===0)return"";let n=0;for(;n<i;){let a=e.charAt(i-n-1);if(a===t&&!r)n++;else if(a!==t&&r)n++;else break}return e.slice(0,i-n)}function KWe(e,t){if(e.indexOf(t[1])===-1)return-1;let r=0;for(let i=0;i<e.length;i++)if(e[i]==="\\")i++;else if(e[i]===t[0])r++;else if(e[i]===t[1]&&(r--,r<0))return i;return r>0?-2:-1}function ire(e,t,r,i,n){let a=t.href,s=t.title||null,l=e[1].replace(n.other.outputLinkReplace,"$1");i.state.inLink=!0;let u={type:e[0].charAt(0)==="!"?"image":"link",raw:r,href:a,title:s,text:l,tokens:i.inlineTokens(l)};return i.state.inLink=!1,u}function ZWe(e,t,r){let i=e.match(r.other.indentCodeCompensation);if(i===null)return t;let n=i[1];return t.split(`
-`).map(a=>{let s=a.match(r.other.beginningSpace);if(s===null)return a;let[l]=s;return l.length>=n.length?a.slice(n.length):a}).join(`
-`)}function ni(e,t){return wp.parse(e,t)}var Sp,Yx,Ja,yWe,vWe,xWe,jx,bWe,QM,are,sre,TWe,JM,CWe,eN,kWe,wWe,w4,tN,SWe,ore,EWe,rN,Jte,AWe,_We,DWe,RWe,lre,LWe,S4,iN,cre,MWe,ure,NWe,IWe,OWe,hre,PWe,BWe,dre,FWe,$We,zWe,GWe,VWe,WWe,qWe,T4,UWe,fre,pre,HWe,nN,YWe,jM,jWe,b4,qx,XWe,ere,C4,Pu,k4,aN,Bu,Hx,QWe,wp,kYt,wYt,SYt,EYt,AYt,_Yt,DYt,mre=z(()=>{"use strict";o(ZM,"L");Sp=ZM();o(nre,"G");Yx={exec:o(()=>null,"exec")};o(li,"h");Ja={codeRemoveIndent:/^(?: {1,4}| {0,3}\t)/gm,outputLinkReplace:/\\([\[\]])/g,indentCodeCompensation:/^(\s+)(?:```)/,beginningSpace:/^\s+/,endingHash:/#$/,startingSpaceChar:/^ /,endingSpaceChar:/ $/,nonSpaceChar:/[^ ]/,newLineCharGlobal:/\n/g,tabCharGlobal:/\t/g,multipleSpaceGlobal:/\s+/g,blankLine:/^[ \t]*$/,doubleBlankLine:/\n[ \t]*\n[ \t]*$/,blockquoteStart:/^ {0,3}>/,blockquoteSetextReplace:/\n {0,3}((?:=+|-+) *)(?=\n|$)/g,blockquoteSetextReplace2:/^ {0,3}>[ \t]?/gm,listReplaceTabs:/^\t+/,listReplaceNesting:/^ {1,4}(?=( {4})*[^ ])/g,listIsTask:/^\[[ xX]\] /,listReplaceTask:/^\[[ xX]\] +/,anyLine:/\n.*\n/,hrefBrackets:/^<(.*)>$/,tableDelimiter:/[:|]/,tableAlignChars:/^\||\| *$/g,tableRowBlankLine:/\n[ \t]*$/,tableAlignRight:/^ *-+: *$/,tableAlignCenter:/^ *:-+: *$/,tableAlignLeft:/^ *:-+ *$/,startATag:/^<a /i,endATag:/^<\/a>/i,startPreScriptTag:/^<(pre|code|kbd|script)(\s|>)/i,endPreScriptTag:/^<\/(pre|code|kbd|script)(\s|>)/i,startAngleBracket:/^</,endAngleBracket:/>$/,pedanticHrefTitle:/^([^'"]*[^\s])\s+(['"])(.*)\2/,unicodeAlphaNumeric:/[\p{L}\p{N}]/u,escapeTest:/[&<>"']/,escapeReplace:/[&<>"']/g,escapeTestNoEncode:/[<>"']|&(?!(#\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\w+);)/,escapeReplaceNoEncode:/[<>"']|&(?!(#\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\w+);)/g,unescapeTest:/&(#(?:\d+)|(?:#x[0-9A-Fa-f]+)|(?:\w+));?/ig,caret:/(^|[^\[])\^/g,percentDecode:/%25/g,findPipe:/\|/g,splitPipe:/ \|/,slashPipe:/\\\|/g,carriageReturn:/\r\n|\r/g,spaceLine:/^ +$/gm,notSpaceStart:/^\S*/,endingNewline:/\n$/,listItemRegex:o(e=>new RegExp(`^( {0,3}${e})((?:[	 ][^\\n]*)?(?:\\n|$))`),"listItemRegex"),nextBulletRegex:o(e=>new RegExp(`^ {0,${Math.min(3,e-1)}}(?:[*+-]|\\d{1,9}[.)])((?:[ 	][^\\n]*)?(?:\\n|$))`),"nextBulletRegex"),hrRegex:o(e=>new RegExp(`^ {0,${Math.min(3,e-1)}}((?:- *){3,}|(?:_ *){3,}|(?:\\* *){3,})(?:\\n+|$)`),"hrRegex"),fencesBeginRegex:o(e=>new RegExp(`^ {0,${Math.min(3,e-1)}}(?:\`\`\`|~~~)`),"fencesBeginRegex"),headingBeginRegex:o(e=>new RegExp(`^ {0,${Math.min(3,e-1)}}#`),"headingBeginRegex"),htmlBeginRegex:o(e=>new RegExp(`^ {0,${Math.min(3,e-1)}}<(?:[a-z].*>|!--)`,"i"),"htmlBeginRegex")},yWe=/^(?:[ \t]*(?:\n|$))+/,vWe=/^((?: {4}| {0,3}\t)[^\n]+(?:\n(?:[ \t]*(?:\n|$))*)?)+/,xWe=/^ {0,3}(`{3,}(?=[^`\n]*(?:\n|$))|~{3,})([^\n]*)(?:\n|$)(?:|([\s\S]*?)(?:\n|$))(?: {0,3}\1[~`]* *(?=\n|$)|$)/,jx=/^ {0,3}((?:-[\t ]*){3,}|(?:_[ \t]*){3,}|(?:\*[ \t]*){3,})(?:\n+|$)/,bWe=/^ {0,3}(#{1,6})(?=\s|$)(.*)(?:\n+|$)/,QM=/(?:[*+-]|\d{1,9}[.)])/,are=/^(?!bull |blockCode|fences|blockquote|heading|html|table)((?:.|\n(?!\s*?\n|bull |blockCode|fences|blockquote|heading|html|table))+?)\n {0,3}(=+|-+) *(?:\n+|$)/,sre=li(are).replace(/bull/g,QM).replace(/blockCode/g,/(?: {4}| {0,3}\t)/).replace(/fences/g,/ {0,3}(?:`{3,}|~{3,})/).replace(/blockquote/g,/ {0,3}>/).replace(/heading/g,/ {0,3}#{1,6}/).replace(/html/g,/ {0,3}<[^\n>]+>\n/).replace(/\|table/g,"").getRegex(),TWe=li(are).replace(/bull/g,QM).replace(/blockCode/g,/(?: {4}| {0,3}\t)/).replace(/fences/g,/ {0,3}(?:`{3,}|~{3,})/).replace(/blockquote/g,/ {0,3}>/).replace(/heading/g,/ {0,3}#{1,6}/).replace(/html/g,/ {0,3}<[^\n>]+>\n/).replace(/table/g,/ {0,3}\|?(?:[:\- ]*\|)+[\:\- ]*\n/).getRegex(),JM=/^([^\n]+(?:\n(?!hr|heading|lheading|blockquote|fences|list|html|table| +\n)[^\n]+)*)/,CWe=/^[^\n]+/,eN=/(?!\s*\])(?:\\[\s\S]|[^\[\]\\])+/,kWe=li(/^ {0,3}\[(label)\]: *(?:\n[ \t]*)?([^<\s][^\s]*|<.*?>)(?:(?: +(?:\n[ \t]*)?| *\n[ \t]*)(title))? *(?:\n+|$)/).replace("label",eN).replace("title",/(?:"(?:\\"?|[^"\\])*"|'[^'\n]*(?:\n[^'\n]+)*\n?'|\([^()]*\))/).getRegex(),wWe=li(/^( {0,3}bull)([ \t][^\n]+?)?(?:\n|$)/).replace(/bull/g,QM).getRegex(),w4="address|article|aside|base|basefont|blockquote|body|caption|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption|figure|footer|form|frame|frameset|h[1-6]|head|header|hr|html|iframe|legend|li|link|main|menu|menuitem|meta|nav|noframes|ol|optgroup|option|p|param|search|section|summary|table|tbody|td|tfoot|th|thead|title|tr|track|ul",tN=/<!--(?:-?>|[\s\S]*?(?:-->|$))/,SWe=li("^ {0,3}(?:<(script|pre|style|textarea)[\\s>][\\s\\S]*?(?:</\\1>[^\\n]*\\n+|$)|comment[^\\n]*(\\n+|$)|<\\?[\\s\\S]*?(?:\\?>\\n*|$)|<![A-Z][\\s\\S]*?(?:>\\n*|$)|<!\\[CDATA\\[[\\s\\S]*?(?:\\]\\]>\\n*|$)|</?(tag)(?: +|\\n|/?>)[\\s\\S]*?(?:(?:\\n[ 	]*)+\\n|$)|<(?!script|pre|style|textarea)([a-z][\\w-]*)(?:attribute)*? */?>(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n[ 	]*)+\\n|$)|</(?!script|pre|style|textarea)[a-z][\\w-]*\\s*>(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n[ 	]*)+\\n|$))","i").replace("comment",tN).replace("tag",w4).replace("attribute",/ +[a-zA-Z:_][\w.:-]*(?: *= *"[^"\n]*"| *= *'[^'\n]*'| *= *[^\s"'=<>`]+)?/).getRegex(),ore=li(JM).replace("hr",jx).replace("heading"," {0,3}#{1,6}(?:\\s|$)").replace("|lheading","").replace("|table","").replace("blockquote"," {0,3}>").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)]) ").replace("html","</?(?:tag)(?: +|\\n|/?>)|<(?:script|pre|style|textarea|!--)").replace("tag",w4).getRegex(),EWe=li(/^( {0,3}> ?(paragraph|[^\n]*)(?:\n|$))+/).replace("paragraph",ore).getRegex(),rN={blockquote:EWe,code:vWe,def:kWe,fences:xWe,heading:bWe,hr:jx,html:SWe,lheading:sre,list:wWe,newline:yWe,paragraph:ore,table:Yx,text:CWe},Jte=li("^ *([^\\n ].*)\\n {0,3}((?:\\| *)?:?-+:? *(?:\\| *:?-+:? *)*(?:\\| *)?)(?:\\n((?:(?! *\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\n|$))*)\\n*|$)").replace("hr",jx).replace("heading"," {0,3}#{1,6}(?:\\s|$)").replace("blockquote"," {0,3}>").replace("code","(?: {4}| {0,3}	)[^\\n]").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)]) ").replace("html","</?(?:tag)(?: +|\\n|/?>)|<(?:script|pre|style|textarea|!--)").replace("tag",w4).getRegex(),AWe={...rN,lheading:TWe,table:Jte,paragraph:li(JM).replace("hr",jx).replace("heading"," {0,3}#{1,6}(?:\\s|$)").replace("|lheading","").replace("table",Jte).replace("blockquote"," {0,3}>").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)]) ").replace("html","</?(?:tag)(?: +|\\n|/?>)|<(?:script|pre|style|textarea|!--)").replace("tag",w4).getRegex()},_We={...rN,html:li(`^ *(?:comment *(?:\\n|\\s*$)|<(tag)[\\s\\S]+?</\\1> *(?:\\n{2,}|\\s*$)|<tag(?:"[^"]*"|'[^']*'|\\s[^'"/>\\s]*)*?/?> *(?:\\n{2,}|\\s*$))`).replace("comment",tN).replace(/tag/g,"(?!(?:a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)\\b)\\w+(?!:|[^\\w\\s@]*@)\\b").getRegex(),def:/^ *\[([^\]]+)\]: *<?([^\s>]+)>?(?: +(["(][^\n]+[")]))? *(?:\n+|$)/,heading:/^(#{1,6})(.*)(?:\n+|$)/,fences:Yx,lheading:/^(.+?)\n {0,3}(=+|-+) *(?:\n+|$)/,paragraph:li(JM).replace("hr",jx).replace("heading",` *#{1,6} *[^
-]`).replace("lheading",sre).replace("|table","").replace("blockquote"," {0,3}>").replace("|fences","").replace("|list","").replace("|html","").replace("|tag","").getRegex()},DWe=/^\\([!"#$%&'()*+,\-./:;<=>?@\[\]\\^_`{|}~])/,RWe=/^(`+)([^`]|[^`][\s\S]*?[^`])\1(?!`)/,lre=/^( {2,}|\\)\n(?!\s*$)/,LWe=/^(`+|[^`])(?:(?= {2,}\n)|[\s\S]*?(?:(?=[\\<!\[`*_]|\b_|$)|[^ ](?= {2,}\n)))/,S4=/[\p{P}\p{S}]/u,iN=/[\s\p{P}\p{S}]/u,cre=/[^\s\p{P}\p{S}]/u,MWe=li(/^((?![*_])punctSpace)/,"u").replace(/punctSpace/g,iN).getRegex(),ure=/(?!~)[\p{P}\p{S}]/u,NWe=/(?!~)[\s\p{P}\p{S}]/u,IWe=/(?:[^\s\p{P}\p{S}]|~)/u,OWe=/\[[^\[\]]*?\]\((?:\\[\s\S]|[^\\\(\)]|\((?:\\[\s\S]|[^\\\(\)])*\))*\)|`[^`]*?`|<(?! )[^<>]*?>/g,hre=/^(?:\*+(?:((?!\*)punct)|[^\s*]))|^_+(?:((?!_)punct)|([^\s_]))/,PWe=li(hre,"u").replace(/punct/g,S4).getRegex(),BWe=li(hre,"u").replace(/punct/g,ure).getRegex(),dre="^[^_*]*?__[^_*]*?\\*[^_*]*?(?=__)|[^*]+(?=[^*])|(?!\\*)punct(\\*+)(?=[\\s]|$)|notPunctSpace(\\*+)(?!\\*)(?=punctSpace|$)|(?!\\*)punctSpace(\\*+)(?=notPunctSpace)|[\\s](\\*+)(?!\\*)(?=punct)|(?!\\*)punct(\\*+)(?!\\*)(?=punct)|notPunctSpace(\\*+)(?=notPunctSpace)",FWe=li(dre,"gu").replace(/notPunctSpace/g,cre).replace(/punctSpace/g,iN).replace(/punct/g,S4).getRegex(),$We=li(dre,"gu").replace(/notPunctSpace/g,IWe).replace(/punctSpace/g,NWe).replace(/punct/g,ure).getRegex(),zWe=li("^[^_*]*?\\*\\*[^_*]*?_[^_*]*?(?=\\*\\*)|[^_]+(?=[^_])|(?!_)punct(_+)(?=[\\s]|$)|notPunctSpace(_+)(?!_)(?=punctSpace|$)|(?!_)punctSpace(_+)(?=notPunctSpace)|[\\s](_+)(?!_)(?=punct)|(?!_)punct(_+)(?!_)(?=punct)","gu").replace(/notPunctSpace/g,cre).replace(/punctSpace/g,iN).replace(/punct/g,S4).getRegex(),GWe=li(/\\(punct)/,"gu").replace(/punct/g,S4).getRegex(),VWe=li(/^<(scheme:[^\s\x00-\x1f<>]*|email)>/).replace("scheme",/[a-zA-Z][a-zA-Z0-9+.-]{1,31}/).replace("email",/[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+(@)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+(?![-_])/).getRegex(),WWe=li(tN).replace("(?:-->|$)","-->").getRegex(),qWe=li("^comment|^</[a-zA-Z][\\w:-]*\\s*>|^<[a-zA-Z][\\w-]*(?:attribute)*?\\s*/?>|^<\\?[\\s\\S]*?\\?>|^<![a-zA-Z]+\\s[\\s\\S]*?>|^<!\\[CDATA\\[[\\s\\S]*?\\]\\]>").replace("comment",WWe).replace("attribute",/\s+[a-zA-Z:_][\w.:-]*(?:\s*=\s*"[^"]*"|\s*=\s*'[^']*'|\s*=\s*[^\s"'=<>`]+)?/).getRegex(),T4=/(?:\[(?:\\[\s\S]|[^\[\]\\])*\]|\\[\s\S]|`[^`]*`|[^\[\]\\`])*?/,UWe=li(/^!?\[(label)\]\(\s*(href)(?:(?:[ \t]*(?:\n[ \t]*)?)(title))?\s*\)/).replace("label",T4).replace("href",/<(?:\\.|[^\n<>\\])+>|[^ \t\n\x00-\x1f]*/).replace("title",/"(?:\\"?|[^"\\])*"|'(?:\\'?|[^'\\])*'|\((?:\\\)?|[^)\\])*\)/).getRegex(),fre=li(/^!?\[(label)\]\[(ref)\]/).replace("label",T4).replace("ref",eN).getRegex(),pre=li(/^!?\[(ref)\](?:\[\])?/).replace("ref",eN).getRegex(),HWe=li("reflink|nolink(?!\\()","g").replace("reflink",fre).replace("nolink",pre).getRegex(),nN={_backpedal:Yx,anyPunctuation:GWe,autolink:VWe,blockSkip:OWe,br:lre,code:RWe,del:Yx,emStrongLDelim:PWe,emStrongRDelimAst:FWe,emStrongRDelimUnd:zWe,escape:DWe,link:UWe,nolink:pre,punctuation:MWe,reflink:fre,reflinkSearch:HWe,tag:qWe,text:LWe,url:Yx},YWe={...nN,link:li(/^!?\[(label)\]\((.*?)\)/).replace("label",T4).getRegex(),reflink:li(/^!?\[(label)\]\s*\[([^\]]*)\]/).replace("label",T4).getRegex()},jM={...nN,emStrongRDelimAst:$We,emStrongLDelim:BWe,url:li(/^((?:ftp|https?):\/\/|www\.)(?:[a-zA-Z0-9\-]+\.?)+[^\s<]*|^email/,"i").replace("email",/[A-Za-z0-9._+-]+(@)[a-zA-Z0-9-_]+(?:\.[a-zA-Z0-9-_]*[a-zA-Z0-9])+(?![-_])/).getRegex(),_backpedal:/(?:[^?!.,:;*_'"~()&]+|\([^)]*\)|&(?![a-zA-Z0-9]+;$)|[?!.,:;*_'"~)]+(?!$))+/,del:/^(~~?)(?=[^\s~])((?:\\[\s\S]|[^\\])*?(?:\\[\s\S]|[^\s~\\]))\1(?=[^~]|$)/,text:/^([`~]+|[^`~])(?:(?= {2,}\n)|(?=[a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-]+@)|[\s\S]*?(?:(?=[\\<!\[`*~_]|\b_|https?:\/\/|ftp:\/\/|www\.|$)|[^ ](?= {2,}\n)|[^a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-](?=[a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-]+@)))/},jWe={...jM,br:li(lre).replace("{2,}","*").getRegex(),text:li(jM.text).replace("\\b_","\\b_| {2,}\\n").replace(/\{2,\}/g,"*").getRegex()},b4={normal:rN,gfm:AWe,pedantic:_We},qx={normal:nN,gfm:jM,breaks:jWe,pedantic:YWe},XWe={"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#39;"},ere=o(e=>XWe[e],"ke");o(Cc,"w");o(tre,"J");o(rre,"V");o(Ux,"z");o(KWe,"ge");o(ire,"fe");o(ZWe,"Je");C4=class{static{o(this,"y")}options;rules;lexer;constructor(e){this.options=e||Sp}space(e){let t=this.rules.block.newline.exec(e);if(t&&t[0].length>0)return{type:"space",raw:t[0]}}code(e){let t=this.rules.block.code.exec(e);if(t){let r=t[0].replace(this.rules.other.codeRemoveIndent,"");return{type:"code",raw:t[0],codeBlockStyle:"indented",text:this.options.pedantic?r:Ux(r,`
-`)}}}fences(e){let t=this.rules.block.fences.exec(e);if(t){let r=t[0],i=ZWe(r,t[3]||"",this.rules);return{type:"code",raw:r,lang:t[2]?t[2].trim().replace(this.rules.inline.anyPunctuation,"$1"):t[2],text:i}}}heading(e){let t=this.rules.block.heading.exec(e);if(t){let r=t[2].trim();if(this.rules.other.endingHash.test(r)){let i=Ux(r,"#");(this.options.pedantic||!i||this.rules.other.endingSpaceChar.test(i))&&(r=i.trim())}return{type:"heading",raw:t[0],depth:t[1].length,text:r,tokens:this.lexer.inline(r)}}}hr(e){let t=this.rules.block.hr.exec(e);if(t)return{type:"hr",raw:Ux(t[0],`
-`)}}blockquote(e){let t=this.rules.block.blockquote.exec(e);if(t){let r=Ux(t[0],`
+`),a=i?"+":n?"":"-";return r+a+`
+`}function _ae(e){return e[e.length-1]===`
+`?e.slice(0,-1):e}function QKe(e,t){for(var r=/(\n+)([^\n]*)/g,n=(function(){var h=e.indexOf(`
+`);return h=h!==-1?h:e.length,r.lastIndex=h,Lae(e.slice(0,h),t)})(),i=e[0]===`
+`||e[0]===" ",a,s;s=r.exec(e);){var l=s[1],u=s[2];a=u[0]===" ",n+=l+(!i&&!a&&u!==""?`
+`:"")+Lae(u,t),i=a}return n}function Lae(e,t){if(e===""||e[0]===" ")return e;for(var r=/ [^ ]/g,n,i=0,a,s=0,l=0,u="";n=r.exec(e);)l=n.index,l-i>t&&(a=s>i?s:l,u+=`
+`+e.slice(i,a),i=a+1),s=l;return u+=`
+`,e.length-i>t&&s>i?u+=e.slice(i,s)+`
+`+e.slice(s+1):u+=e.slice(i),u.slice(1)}function JKe(e){for(var t="",r=0,n,i=0;i<e.length;r>=65536?i+=2:i++)r=C2(e,i),n=is[r],!n&&E2(r)?(t+=e[i],r>=65536&&(t+=e[i+1])):t+=n||qKe(r);return t}function eZe(e,t,r){var n="",i=e.tag,a,s,l;for(a=0,s=r.length;a<s;a+=1)l=r[a],e.replacer&&(l=e.replacer.call(r,String(a),l)),(xh(e,t,l,!1,!1)||typeof l>"u"&&xh(e,t,null,!1,!1))&&(n!==""&&(n+=","+(e.condenseFlow?"":" ")),n+=e.dump);e.tag=i,e.dump="["+n+"]"}function Dae(e,t,r,n){var i="",a=e.tag,s,l,u;for(s=0,l=r.length;s<l;s+=1)u=r[s],e.replacer&&(u=e.replacer.call(r,String(s),u)),(xh(e,t+1,u,!0,!0,!1,!0)||typeof u>"u"&&xh(e,t+1,null,!0,!0,!1,!0))&&((!n||i!=="")&&(i+=CP(e,t)),e.dump&&k2===e.dump.charCodeAt(0)?i+="-":i+="- ",i+=e.dump);e.tag=a,e.dump=i||"[]"}function tZe(e,t,r){var n="",i=e.tag,a=Object.keys(r),s,l,u,h,d;for(s=0,l=a.length;s<l;s+=1)d="",n!==""&&(d+=", "),e.condenseFlow&&(d+='"'),u=a[s],h=r[u],e.replacer&&(h=e.replacer.call(r,u,h)),xh(e,t,u,!1,!1)&&(e.dump.length>1024&&(d+="? "),d+=e.dump+(e.condenseFlow?'"':"")+":"+(e.condenseFlow?"":" "),xh(e,t,h,!1,!1)&&(d+=e.dump,n+=d));e.tag=i,e.dump="{"+n+"}"}function rZe(e,t,r,n){var i="",a=e.tag,s=Object.keys(r),l,u,h,d,f,p;if(e.sortKeys===!0)s.sort();else if(typeof e.sortKeys=="function")s.sort(e.sortKeys);else if(e.sortKeys)throw new to("sortKeys must be a boolean or a function");for(l=0,u=s.length;l<u;l+=1)p="",(!n||i!=="")&&(p+=CP(e,t)),h=s[l],d=r[h],e.replacer&&(d=e.replacer.call(r,h,d)),xh(e,t+1,h,!0,!0,!0)&&(f=e.tag!==null&&e.tag!=="?"||e.dump&&e.dump.length>1024,f&&(e.dump&&k2===e.dump.charCodeAt(0)?p+="?":p+="? "),p+=e.dump,f&&(p+=CP(e,t)),xh(e,t+1,d,!0,f)&&(e.dump&&k2===e.dump.charCodeAt(0)?p+=":":p+=": ",p+=e.dump,i+=p));e.tag=a,e.dump=i||"{}"}function Iae(e,t,r){var n,i,a,s,l,u;for(i=r?e.explicitTypes:e.implicitTypes,a=0,s=i.length;a<s;a+=1)if(l=i[a],(l.instanceOf||l.predicate)&&(!l.instanceOf||typeof t=="object"&&t instanceof l.instanceOf)&&(!l.predicate||l.predicate(t))){if(r?l.multi&&l.representName?e.tag=l.representName(t):e.tag=l.tag:e.tag="?",l.represent){if(u=e.styleMap[l.tag]||l.defaultStyle,Xae.call(l.represent)==="[object Function]")n=l.represent(t,u);else if(Kae.call(l.represent,u))n=l.represent[u](t,u);else throw new to("!<"+l.tag+'> tag resolver accepts not "'+u+'" style');e.dump=n}return!0}return!1}function xh(e,t,r,n,i,a,s){e.tag=null,e.dump=r,Iae(e,r,!1)||Iae(e,r,!0);var l=Xae.call(e.dump),u=n,h;n&&(n=e.flowLevel<0||e.flowLevel>t);var d=l==="[object Object]"||l==="[object Array]",f,p;if(d&&(f=e.duplicates.indexOf(r),p=f!==-1),(e.tag!==null&&e.tag!=="?"||p||e.indent!==2&&t>0)&&(i=!1),p&&e.usedDuplicates[f])e.dump="*ref_"+f;else{if(d&&p&&!e.usedDuplicates[f]&&(e.usedDuplicates[f]=!0),l==="[object Object]")n&&Object.keys(e.dump).length!==0?(rZe(e,t,e.dump,i),p&&(e.dump="&ref_"+f+e.dump)):(tZe(e,t,e.dump),p&&(e.dump="&ref_"+f+" "+e.dump));else if(l==="[object Array]")n&&e.dump.length!==0?(e.noArrayIndent&&!s&&t>0?Dae(e,t-1,e.dump,i):Dae(e,t,e.dump,i),p&&(e.dump="&ref_"+f+e.dump)):(eZe(e,t,e.dump),p&&(e.dump="&ref_"+f+" "+e.dump));else if(l==="[object String]")e.tag!=="?"&&ZKe(e,e.dump,t,a,u);else{if(l==="[object Undefined]")return!1;if(e.skipInvalid)return!1;throw new to("unacceptable kind of an object to dump "+l)}e.tag!==null&&e.tag!=="?"&&(h=encodeURI(e.tag[0]==="!"?e.tag.slice(1):e.tag).replace(/!/g,"%21"),e.tag[0]==="!"?h="!"+h:h.slice(0,18)==="tag:yaml.org,2002:"?h="!!"+h.slice(18):h="!<"+h+">",e.dump=h+" "+e.dump)}return!0}function nZe(e,t){var r=[],n=[],i,a;for(kP(e,r,n),i=0,a=n.length;i<a;i+=1)t.duplicates.push(r[n[i]]);t.usedDuplicates=new Array(a)}function kP(e,t,r){var n,i,a;if(e!==null&&typeof e=="object")if(i=t.indexOf(e),i!==-1)r.indexOf(i)===-1&&r.push(i);else if(t.push(e),Array.isArray(e))for(i=0,a=e.length;i<a;i+=1)kP(e[i],t,r);else for(n=Object.keys(e),i=0,a=n.length;i<a;i+=1)kP(e[n[i]],t,r)}function iZe(e,t){t=t||{};var r=new UKe(t);r.noRefs||nZe(e,r);var n=e;return r.replacer&&(n=r.replacer.call({"":n},"",n)),xh(r,0,n,!0,!0)?r.dump+`
+`:""}function _P(e,t){return function(){throw new Error("Function yaml."+e+" is removed in js-yaml 4. Use yaml."+t+" instead, which is now safe by default.")}}var Hje,Uje,Yje,jje,Xje,Kje,sa,to,Qje,Jje,eXe,ns,iXe,aXe,sXe,oXe,lXe,dXe,gXe,wXe,kXe,AXe,LXe,Pae,DXe,Oae,Bae,PXe,BXe,SP,VXe,WXe,qXe,YXe,jXe,ZXe,QXe,tKe,$ae,Kd,f4,Fae,zae,p4,xP,rKe,xae,nKe,iKe,aKe,Gae,Vae,qae,Hae,vm,Cae,wKe,kKe,jae,Xae,Kae,RP,SKe,k2,EKe,AKe,RKe,_Ke,TP,LKe,DKe,IKe,MKe,Zae,NKe,g4,PKe,OKe,BKe,$Ke,Qae,Jae,FKe,ese,zKe,tse,is,GKe,VKe,HKe,S2,nse,wP,ise,ase,Py,aZe,sZe,Zd,Qd,hir,dir,fir,pir,mir,A2=F(()=>{"use strict";o(Mae,"isNothing");o(zje,"isObject");o(Gje,"toArray");o(Vje,"extend");o(Wje,"repeat");o(qje,"isNegativeZero");Hje=Mae,Uje=zje,Yje=Gje,jje=Wje,Xje=qje,Kje=Vje,sa={isNothing:Hje,isObject:Uje,toArray:Yje,repeat:jje,isNegativeZero:Xje,extend:Kje};o(Nae,"formatError");o(w2,"YAMLException$1");w2.prototype=Object.create(Error.prototype);w2.prototype.constructor=w2;w2.prototype.toString=o(function(t){return this.name+": "+Nae(this,t)},"toString");to=w2;o(yP,"getLine");o(vP,"padStart");o(Zje,"makeSnippet");Qje=Zje,Jje=["kind","multi","resolve","construct","instanceOf","predicate","represent","representName","defaultStyle","styleAliases"],eXe=["scalar","sequence","mapping"];o(tXe,"compileStyleAliases");o(rXe,"Type$1");ns=rXe;o(vae,"compileList");o(nXe,"compileMap");o(bP,"Schema$1");bP.prototype.extend=o(function(t){var r=[],n=[];if(t instanceof ns)n.push(t);else if(Array.isArray(t))n=n.concat(t);else if(t&&(Array.isArray(t.implicit)||Array.isArray(t.explicit)))t.implicit&&(r=r.concat(t.implicit)),t.explicit&&(n=n.concat(t.explicit));else throw new to("Schema.extend argument should be a Type, [ Type ], or a schema definition ({ implicit: [...], explicit: [...] })");r.forEach(function(a){if(!(a instanceof ns))throw new to("Specified list of YAML types (or a single Type object) contains a non-Type object.");if(a.loadKind&&a.loadKind!=="scalar")throw new to("There is a non-scalar type in the implicit list of a schema. Implicit resolving of such types is not supported.");if(a.multi)throw new to("There is a multi type in the implicit list of a schema. Multi tags can only be listed as explicit.")}),n.forEach(function(a){if(!(a instanceof ns))throw new to("Specified list of YAML types (or a single Type object) contains a non-Type object.")});var i=Object.create(bP.prototype);return i.implicit=(this.implicit||[]).concat(r),i.explicit=(this.explicit||[]).concat(n),i.compiledImplicit=vae(i,"implicit"),i.compiledExplicit=vae(i,"explicit"),i.compiledTypeMap=nXe(i.compiledImplicit,i.compiledExplicit),i},"extend");iXe=bP,aXe=new ns("tag:yaml.org,2002:str",{kind:"scalar",construct:o(function(e){return e!==null?e:""},"construct")}),sXe=new ns("tag:yaml.org,2002:seq",{kind:"sequence",construct:o(function(e){return e!==null?e:[]},"construct")}),oXe=new ns("tag:yaml.org,2002:map",{kind:"mapping",construct:o(function(e){return e!==null?e:{}},"construct")}),lXe=new iXe({explicit:[aXe,sXe,oXe]});o(cXe,"resolveYamlNull");o(uXe,"constructYamlNull");o(hXe,"isNull");dXe=new ns("tag:yaml.org,2002:null",{kind:"scalar",resolve:cXe,construct:uXe,predicate:hXe,represent:{canonical:o(function(){return"~"},"canonical"),lowercase:o(function(){return"null"},"lowercase"),uppercase:o(function(){return"NULL"},"uppercase"),camelcase:o(function(){return"Null"},"camelcase"),empty:o(function(){return""},"empty")},defaultStyle:"lowercase"});o(fXe,"resolveYamlBoolean");o(pXe,"constructYamlBoolean");o(mXe,"isBoolean");gXe=new ns("tag:yaml.org,2002:bool",{kind:"scalar",resolve:fXe,construct:pXe,predicate:mXe,represent:{lowercase:o(function(e){return e?"true":"false"},"lowercase"),uppercase:o(function(e){return e?"TRUE":"FALSE"},"uppercase"),camelcase:o(function(e){return e?"True":"False"},"camelcase")},defaultStyle:"lowercase"});o(yXe,"isHexCode");o(vXe,"isOctCode");o(xXe,"isDecCode");o(bXe,"resolveYamlInteger");o(TXe,"constructYamlInteger");o(CXe,"isInteger");wXe=new ns("tag:yaml.org,2002:int",{kind:"scalar",resolve:bXe,construct:TXe,predicate:CXe,represent:{binary:o(function(e){return e>=0?"0b"+e.toString(2):"-0b"+e.toString(2).slice(1)},"binary"),octal:o(function(e){return e>=0?"0o"+e.toString(8):"-0o"+e.toString(8).slice(1)},"octal"),decimal:o(function(e){return e.toString(10)},"decimal"),hexadecimal:o(function(e){return e>=0?"0x"+e.toString(16).toUpperCase():"-0x"+e.toString(16).toUpperCase().slice(1)},"hexadecimal")},defaultStyle:"decimal",styleAliases:{binary:[2,"bin"],octal:[8,"oct"],decimal:[10,"dec"],hexadecimal:[16,"hex"]}}),kXe=new RegExp("^(?:[-+]?(?:[0-9][0-9_]*)(?:\\.[0-9_]*)?(?:[eE][-+]?[0-9]+)?|\\.[0-9_]+(?:[eE][-+]?[0-9]+)?|[-+]?\\.(?:inf|Inf|INF)|\\.(?:nan|NaN|NAN))$");o(SXe,"resolveYamlFloat");o(EXe,"constructYamlFloat");AXe=/^[-+]?[0-9]+e/;o(RXe,"representYamlFloat");o(_Xe,"isFloat");LXe=new ns("tag:yaml.org,2002:float",{kind:"scalar",resolve:SXe,construct:EXe,predicate:_Xe,represent:RXe,defaultStyle:"lowercase"}),Pae=lXe.extend({implicit:[dXe,gXe,wXe,LXe]}),DXe=Pae,Oae=new RegExp("^([0-9][0-9][0-9][0-9])-([0-9][0-9])-([0-9][0-9])$"),Bae=new RegExp("^([0-9][0-9][0-9][0-9])-([0-9][0-9]?)-([0-9][0-9]?)(?:[Tt]|[ \\t]+)([0-9][0-9]?):([0-9][0-9]):([0-9][0-9])(?:\\.([0-9]*))?(?:[ \\t]*(Z|([-+])([0-9][0-9]?)(?::([0-9][0-9]))?))?$");o(IXe,"resolveYamlTimestamp");o(MXe,"constructYamlTimestamp");o(NXe,"representYamlTimestamp");PXe=new ns("tag:yaml.org,2002:timestamp",{kind:"scalar",resolve:IXe,construct:MXe,instanceOf:Date,represent:NXe});o(OXe,"resolveYamlMerge");BXe=new ns("tag:yaml.org,2002:merge",{kind:"scalar",resolve:OXe}),SP=`ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=
+\r`;o($Xe,"resolveYamlBinary");o(FXe,"constructYamlBinary");o(zXe,"representYamlBinary");o(GXe,"isBinary");VXe=new ns("tag:yaml.org,2002:binary",{kind:"scalar",resolve:$Xe,construct:FXe,predicate:GXe,represent:zXe}),WXe=Object.prototype.hasOwnProperty,qXe=Object.prototype.toString;o(HXe,"resolveYamlOmap");o(UXe,"constructYamlOmap");YXe=new ns("tag:yaml.org,2002:omap",{kind:"sequence",resolve:HXe,construct:UXe}),jXe=Object.prototype.toString;o(XXe,"resolveYamlPairs");o(KXe,"constructYamlPairs");ZXe=new ns("tag:yaml.org,2002:pairs",{kind:"sequence",resolve:XXe,construct:KXe}),QXe=Object.prototype.hasOwnProperty;o(JXe,"resolveYamlSet");o(eKe,"constructYamlSet");tKe=new ns("tag:yaml.org,2002:set",{kind:"mapping",resolve:JXe,construct:eKe}),$ae=DXe.extend({implicit:[PXe,BXe],explicit:[VXe,YXe,ZXe,tKe]}),Kd=Object.prototype.hasOwnProperty,f4=1,Fae=2,zae=3,p4=4,xP=1,rKe=2,xae=3,nKe=/[\x00-\x08\x0B\x0C\x0E-\x1F\x7F-\x84\x86-\x9F\uFFFE\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF]/,iKe=/[\x85\u2028\u2029]/,aKe=/[,\[\]\{\}]/,Gae=/^(?:!|!!|![a-z\-]+!)$/i,Vae=/^(?:!|[^,\[\]\{\}])(?:%[0-9a-f]{2}|[0-9a-z\-#;\/\?:@&=\+\$,_\.!~\*'\(\)\[\]])*$/i;o(bae,"_class");o(tu,"is_EOL");o(xm,"is_WHITE_SPACE");o(ro,"is_WS_OR_EOL");o(Oy,"is_FLOW_INDICATOR");o(sKe,"fromHexCode");o(oKe,"escapedHexLen");o(lKe,"fromDecimalCode");o(Tae,"simpleEscapeSequence");o(cKe,"charFromCodepoint");o(Wae,"setProperty");qae=new Array(256),Hae=new Array(256);for(vm=0;vm<256;vm++)qae[vm]=Tae(vm)?1:0,Hae[vm]=Tae(vm);o(uKe,"State$1");o(Uae,"generateError");o(dr,"throwError");o(m4,"throwWarning");Cae={YAML:o(function(t,r,n){var i,a,s;t.version!==null&&dr(t,"duplication of %YAML directive"),n.length!==1&&dr(t,"YAML directive accepts exactly one argument"),i=/^([0-9]+)\.([0-9]+)$/.exec(n[0]),i===null&&dr(t,"ill-formed argument of the YAML directive"),a=parseInt(i[1],10),s=parseInt(i[2],10),a!==1&&dr(t,"unacceptable YAML version of the document"),t.version=n[0],t.checkLineBreaks=s<2,s!==1&&s!==2&&m4(t,"unsupported YAML version of the document")},"handleYamlDirective"),TAG:o(function(t,r,n){var i,a;n.length!==2&&dr(t,"TAG directive accepts exactly two arguments"),i=n[0],a=n[1],Gae.test(i)||dr(t,"ill-formed tag handle (first argument) of the TAG directive"),Kd.call(t.tagMap,i)&&dr(t,'there is a previously declared suffix for "'+i+'" tag handle'),Vae.test(a)||dr(t,"ill-formed tag prefix (second argument) of the TAG directive");try{a=decodeURIComponent(a)}catch{dr(t,"tag prefix is malformed: "+a)}t.tagMap[i]=a},"handleTagDirective")};o(Xd,"captureSegment");o(wae,"mergeMappings");o(By,"storeMappingPair");o(EP,"readLineBreak");o(Ui,"skipSeparationSpace");o(v4,"testDocumentSeparator");o(AP,"writeFoldedLines");o(hKe,"readPlainScalar");o(dKe,"readSingleQuotedScalar");o(fKe,"readDoubleQuotedScalar");o(pKe,"readFlowCollection");o(mKe,"readBlockScalar");o(kae,"readBlockSequence");o(gKe,"readBlockMapping");o(yKe,"readTagProperty");o(vKe,"readAnchorProperty");o(xKe,"readAlias");o($y,"composeNode");o(bKe,"readDocument");o(Yae,"loadDocuments");o(TKe,"loadAll$1");o(CKe,"load$1");wKe=TKe,kKe=CKe,jae={loadAll:wKe,load:kKe},Xae=Object.prototype.toString,Kae=Object.prototype.hasOwnProperty,RP=65279,SKe=9,k2=10,EKe=13,AKe=32,RKe=33,_Ke=34,TP=35,LKe=37,DKe=38,IKe=39,MKe=42,Zae=44,NKe=45,g4=58,PKe=61,OKe=62,BKe=63,$Ke=64,Qae=91,Jae=93,FKe=96,ese=123,zKe=124,tse=125,is={};is[0]="\\0";is[7]="\\a";is[8]="\\b";is[9]="\\t";is[10]="\\n";is[11]="\\v";is[12]="\\f";is[13]="\\r";is[27]="\\e";is[34]='\\"';is[92]="\\\\";is[133]="\\N";is[160]="\\_";is[8232]="\\L";is[8233]="\\P";GKe=["y","Y","yes","Yes","YES","on","On","ON","n","N","no","No","NO","off","Off","OFF"],VKe=/^[-+]?[0-9_]+(?::[0-9_]+)+(?:\.[0-9_]*)?$/;o(WKe,"compileStyleMap");o(qKe,"encodeHex");HKe=1,S2=2;o(UKe,"State");o(Sae,"indentString");o(CP,"generateNextLine");o(YKe,"testImplicitResolving");o(y4,"isWhitespace");o(E2,"isPrintable");o(Eae,"isNsCharOrWhitespace");o(Aae,"isPlainSafe");o(jKe,"isPlainSafeFirst");o(XKe,"isPlainSafeLast");o(C2,"codePointAt");o(rse,"needIndentIndicator");nse=1,wP=2,ise=3,ase=4,Py=5;o(KKe,"chooseScalarStyle");o(ZKe,"writeScalar");o(Rae,"blockHeader");o(_ae,"dropEndingNewline");o(QKe,"foldString");o(Lae,"foldLine");o(JKe,"escapeString");o(eZe,"writeFlowSequence");o(Dae,"writeBlockSequence");o(tZe,"writeFlowMapping");o(rZe,"writeBlockMapping");o(Iae,"detectType");o(xh,"writeNode");o(nZe,"getDuplicateReferences");o(kP,"inspectNode");o(iZe,"dump$1");aZe=iZe,sZe={dump:aZe};o(_P,"renamed");Zd=Pae,Qd=jae.load,hir=jae.loadAll,dir=sZe.dump,fir=_P("safeLoad","load"),pir=_P("safeLoadAll","loadAll"),mir=_P("safeDump","dump")});function MP(){return{async:!1,breaks:!1,extensions:null,gfm:!0,hooks:null,pedantic:!1,renderer:null,silent:!1,tokenizer:null,walkTokens:null}}function hse(e){Tm=e}function _n(e,t=""){let r=typeof e=="string"?e:e.source,n={replace:o((i,a)=>{let s=typeof a=="string"?a:a.source;return s=s.replace(_s.caret,"$1"),r=r.replace(i,s),n},"replace"),getRegex:o(()=>new RegExp(r,t),"getRegex")};return n}function ru(e,t){if(t){if(_s.escapeTest.test(e))return e.replace(_s.escapeReplace,ose)}else if(_s.escapeTestNoEncode.test(e))return e.replace(_s.escapeReplaceNoEncode,ose);return e}function lse(e){try{e=encodeURI(e).replace(_s.percentDecode,"%")}catch{return null}return e}function cse(e,t){let r=e.replace(_s.findPipe,(a,s,l)=>{let u=!1,h=s;for(;--h>=0&&l[h]==="\\";)u=!u;return u?"|":" |"}),n=r.split(_s.splitPipe),i=0;if(n[0].trim()||n.shift(),n.length>0&&!n.at(-1)?.trim()&&n.pop(),t)if(n.length>t)n.splice(t);else for(;n.length<t;)n.push("");for(;i<n.length;i++)n[i]=n[i].trim().replace(_s.slashPipe,"|");return n}function _2(e,t,r){let n=e.length;if(n===0)return"";let i=0;for(;i<n;){let a=e.charAt(n-i-1);if(a===t&&!r)i++;else if(a!==t&&r)i++;else break}return e.slice(0,n-i)}function zZe(e,t){if(e.indexOf(t[1])===-1)return-1;let r=0;for(let n=0;n<e.length;n++)if(e[n]==="\\")n++;else if(e[n]===t[0])r++;else if(e[n]===t[1]&&(r--,r<0))return n;return r>0?-2:-1}function use(e,t,r,n,i){let a=t.href,s=t.title||null,l=e[1].replace(i.other.outputLinkReplace,"$1");n.state.inLink=!0;let u={type:e[0].charAt(0)==="!"?"image":"link",raw:r,href:a,title:s,text:l,tokens:n.inlineTokens(l)};return n.state.inLink=!1,u}function GZe(e,t,r){let n=e.match(r.other.indentCodeCompensation);if(n===null)return t;let i=n[1];return t.split(`
+`).map(a=>{let s=a.match(r.other.beginningSpace);if(s===null)return a;let[l]=s;return l.length>=i.length?a.slice(i.length):a}).join(`
+`)}function Sn(e,t){return bm.parse(e,t)}var Tm,D2,_s,oZe,lZe,cZe,I2,uZe,NP,dse,fse,hZe,PP,dZe,OP,fZe,pZe,k4,BP,mZe,pse,gZe,$P,sse,yZe,vZe,xZe,bZe,mse,TZe,S4,FP,gse,CZe,yse,wZe,kZe,SZe,vse,EZe,AZe,xse,RZe,_Ze,LZe,DZe,IZe,MZe,NZe,T4,PZe,bse,Tse,OZe,zP,BZe,LP,$Ze,b4,R2,FZe,ose,C4,bh,w4,GP,Th,L2,VZe,bm,yir,vir,xir,bir,Tir,Cir,wir,Cse=F(()=>{"use strict";o(MP,"L");Tm=MP();o(hse,"G");D2={exec:o(()=>null,"exec")};o(_n,"h");_s={codeRemoveIndent:/^(?: {1,4}| {0,3}\t)/gm,outputLinkReplace:/\\([\[\]])/g,indentCodeCompensation:/^(\s+)(?:```)/,beginningSpace:/^\s+/,endingHash:/#$/,startingSpaceChar:/^ /,endingSpaceChar:/ $/,nonSpaceChar:/[^ ]/,newLineCharGlobal:/\n/g,tabCharGlobal:/\t/g,multipleSpaceGlobal:/\s+/g,blankLine:/^[ \t]*$/,doubleBlankLine:/\n[ \t]*\n[ \t]*$/,blockquoteStart:/^ {0,3}>/,blockquoteSetextReplace:/\n {0,3}((?:=+|-+) *)(?=\n|$)/g,blockquoteSetextReplace2:/^ {0,3}>[ \t]?/gm,listReplaceTabs:/^\t+/,listReplaceNesting:/^ {1,4}(?=( {4})*[^ ])/g,listIsTask:/^\[[ xX]\] /,listReplaceTask:/^\[[ xX]\] +/,anyLine:/\n.*\n/,hrefBrackets:/^<(.*)>$/,tableDelimiter:/[:|]/,tableAlignChars:/^\||\| *$/g,tableRowBlankLine:/\n[ \t]*$/,tableAlignRight:/^ *-+: *$/,tableAlignCenter:/^ *:-+: *$/,tableAlignLeft:/^ *:-+ *$/,startATag:/^<a /i,endATag:/^<\/a>/i,startPreScriptTag:/^<(pre|code|kbd|script)(\s|>)/i,endPreScriptTag:/^<\/(pre|code|kbd|script)(\s|>)/i,startAngleBracket:/^</,endAngleBracket:/>$/,pedanticHrefTitle:/^([^'"]*[^\s])\s+(['"])(.*)\2/,unicodeAlphaNumeric:/[\p{L}\p{N}]/u,escapeTest:/[&<>"']/,escapeReplace:/[&<>"']/g,escapeTestNoEncode:/[<>"']|&(?!(#\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\w+);)/,escapeReplaceNoEncode:/[<>"']|&(?!(#\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\w+);)/g,unescapeTest:/&(#(?:\d+)|(?:#x[0-9A-Fa-f]+)|(?:\w+));?/ig,caret:/(^|[^\[])\^/g,percentDecode:/%25/g,findPipe:/\|/g,splitPipe:/ \|/,slashPipe:/\\\|/g,carriageReturn:/\r\n|\r/g,spaceLine:/^ +$/gm,notSpaceStart:/^\S*/,endingNewline:/\n$/,listItemRegex:o(e=>new RegExp(`^( {0,3}${e})((?:[	 ][^\\n]*)?(?:\\n|$))`),"listItemRegex"),nextBulletRegex:o(e=>new RegExp(`^ {0,${Math.min(3,e-1)}}(?:[*+-]|\\d{1,9}[.)])((?:[ 	][^\\n]*)?(?:\\n|$))`),"nextBulletRegex"),hrRegex:o(e=>new RegExp(`^ {0,${Math.min(3,e-1)}}((?:- *){3,}|(?:_ *){3,}|(?:\\* *){3,})(?:\\n+|$)`),"hrRegex"),fencesBeginRegex:o(e=>new RegExp(`^ {0,${Math.min(3,e-1)}}(?:\`\`\`|~~~)`),"fencesBeginRegex"),headingBeginRegex:o(e=>new RegExp(`^ {0,${Math.min(3,e-1)}}#`),"headingBeginRegex"),htmlBeginRegex:o(e=>new RegExp(`^ {0,${Math.min(3,e-1)}}<(?:[a-z].*>|!--)`,"i"),"htmlBeginRegex")},oZe=/^(?:[ \t]*(?:\n|$))+/,lZe=/^((?: {4}| {0,3}\t)[^\n]+(?:\n(?:[ \t]*(?:\n|$))*)?)+/,cZe=/^ {0,3}(`{3,}(?=[^`\n]*(?:\n|$))|~{3,})([^\n]*)(?:\n|$)(?:|([\s\S]*?)(?:\n|$))(?: {0,3}\1[~`]* *(?=\n|$)|$)/,I2=/^ {0,3}((?:-[\t ]*){3,}|(?:_[ \t]*){3,}|(?:\*[ \t]*){3,})(?:\n+|$)/,uZe=/^ {0,3}(#{1,6})(?=\s|$)(.*)(?:\n+|$)/,NP=/(?:[*+-]|\d{1,9}[.)])/,dse=/^(?!bull |blockCode|fences|blockquote|heading|html|table)((?:.|\n(?!\s*?\n|bull |blockCode|fences|blockquote|heading|html|table))+?)\n {0,3}(=+|-+) *(?:\n+|$)/,fse=_n(dse).replace(/bull/g,NP).replace(/blockCode/g,/(?: {4}| {0,3}\t)/).replace(/fences/g,/ {0,3}(?:`{3,}|~{3,})/).replace(/blockquote/g,/ {0,3}>/).replace(/heading/g,/ {0,3}#{1,6}/).replace(/html/g,/ {0,3}<[^\n>]+>\n/).replace(/\|table/g,"").getRegex(),hZe=_n(dse).replace(/bull/g,NP).replace(/blockCode/g,/(?: {4}| {0,3}\t)/).replace(/fences/g,/ {0,3}(?:`{3,}|~{3,})/).replace(/blockquote/g,/ {0,3}>/).replace(/heading/g,/ {0,3}#{1,6}/).replace(/html/g,/ {0,3}<[^\n>]+>\n/).replace(/table/g,/ {0,3}\|?(?:[:\- ]*\|)+[\:\- ]*\n/).getRegex(),PP=/^([^\n]+(?:\n(?!hr|heading|lheading|blockquote|fences|list|html|table| +\n)[^\n]+)*)/,dZe=/^[^\n]+/,OP=/(?!\s*\])(?:\\[\s\S]|[^\[\]\\])+/,fZe=_n(/^ {0,3}\[(label)\]: *(?:\n[ \t]*)?([^<\s][^\s]*|<.*?>)(?:(?: +(?:\n[ \t]*)?| *\n[ \t]*)(title))? *(?:\n+|$)/).replace("label",OP).replace("title",/(?:"(?:\\"?|[^"\\])*"|'[^'\n]*(?:\n[^'\n]+)*\n?'|\([^()]*\))/).getRegex(),pZe=_n(/^( {0,3}bull)([ \t][^\n]+?)?(?:\n|$)/).replace(/bull/g,NP).getRegex(),k4="address|article|aside|base|basefont|blockquote|body|caption|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption|figure|footer|form|frame|frameset|h[1-6]|head|header|hr|html|iframe|legend|li|link|main|menu|menuitem|meta|nav|noframes|ol|optgroup|option|p|param|search|section|summary|table|tbody|td|tfoot|th|thead|title|tr|track|ul",BP=/<!--(?:-?>|[\s\S]*?(?:-->|$))/,mZe=_n("^ {0,3}(?:<(script|pre|style|textarea)[\\s>][\\s\\S]*?(?:</\\1>[^\\n]*\\n+|$)|comment[^\\n]*(\\n+|$)|<\\?[\\s\\S]*?(?:\\?>\\n*|$)|<![A-Z][\\s\\S]*?(?:>\\n*|$)|<!\\[CDATA\\[[\\s\\S]*?(?:\\]\\]>\\n*|$)|</?(tag)(?: +|\\n|/?>)[\\s\\S]*?(?:(?:\\n[ 	]*)+\\n|$)|<(?!script|pre|style|textarea)([a-z][\\w-]*)(?:attribute)*? */?>(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n[ 	]*)+\\n|$)|</(?!script|pre|style|textarea)[a-z][\\w-]*\\s*>(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n[ 	]*)+\\n|$))","i").replace("comment",BP).replace("tag",k4).replace("attribute",/ +[a-zA-Z:_][\w.:-]*(?: *= *"[^"\n]*"| *= *'[^'\n]*'| *= *[^\s"'=<>`]+)?/).getRegex(),pse=_n(PP).replace("hr",I2).replace("heading"," {0,3}#{1,6}(?:\\s|$)").replace("|lheading","").replace("|table","").replace("blockquote"," {0,3}>").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)]) ").replace("html","</?(?:tag)(?: +|\\n|/?>)|<(?:script|pre|style|textarea|!--)").replace("tag",k4).getRegex(),gZe=_n(/^( {0,3}> ?(paragraph|[^\n]*)(?:\n|$))+/).replace("paragraph",pse).getRegex(),$P={blockquote:gZe,code:lZe,def:fZe,fences:cZe,heading:uZe,hr:I2,html:mZe,lheading:fse,list:pZe,newline:oZe,paragraph:pse,table:D2,text:dZe},sse=_n("^ *([^\\n ].*)\\n {0,3}((?:\\| *)?:?-+:? *(?:\\| *:?-+:? *)*(?:\\| *)?)(?:\\n((?:(?! *\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\n|$))*)\\n*|$)").replace("hr",I2).replace("heading"," {0,3}#{1,6}(?:\\s|$)").replace("blockquote"," {0,3}>").replace("code","(?: {4}| {0,3}	)[^\\n]").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)]) ").replace("html","</?(?:tag)(?: +|\\n|/?>)|<(?:script|pre|style|textarea|!--)").replace("tag",k4).getRegex(),yZe={...$P,lheading:hZe,table:sse,paragraph:_n(PP).replace("hr",I2).replace("heading"," {0,3}#{1,6}(?:\\s|$)").replace("|lheading","").replace("table",sse).replace("blockquote"," {0,3}>").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)]) ").replace("html","</?(?:tag)(?: +|\\n|/?>)|<(?:script|pre|style|textarea|!--)").replace("tag",k4).getRegex()},vZe={...$P,html:_n(`^ *(?:comment *(?:\\n|\\s*$)|<(tag)[\\s\\S]+?</\\1> *(?:\\n{2,}|\\s*$)|<tag(?:"[^"]*"|'[^']*'|\\s[^'"/>\\s]*)*?/?> *(?:\\n{2,}|\\s*$))`).replace("comment",BP).replace(/tag/g,"(?!(?:a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)\\b)\\w+(?!:|[^\\w\\s@]*@)\\b").getRegex(),def:/^ *\[([^\]]+)\]: *<?([^\s>]+)>?(?: +(["(][^\n]+[")]))? *(?:\n+|$)/,heading:/^(#{1,6})(.*)(?:\n+|$)/,fences:D2,lheading:/^(.+?)\n {0,3}(=+|-+) *(?:\n+|$)/,paragraph:_n(PP).replace("hr",I2).replace("heading",` *#{1,6} *[^
+]`).replace("lheading",fse).replace("|table","").replace("blockquote"," {0,3}>").replace("|fences","").replace("|list","").replace("|html","").replace("|tag","").getRegex()},xZe=/^\\([!"#$%&'()*+,\-./:;<=>?@\[\]\\^_`{|}~])/,bZe=/^(`+)([^`]|[^`][\s\S]*?[^`])\1(?!`)/,mse=/^( {2,}|\\)\n(?!\s*$)/,TZe=/^(`+|[^`])(?:(?= {2,}\n)|[\s\S]*?(?:(?=[\\<!\[`*_]|\b_|$)|[^ ](?= {2,}\n)))/,S4=/[\p{P}\p{S}]/u,FP=/[\s\p{P}\p{S}]/u,gse=/[^\s\p{P}\p{S}]/u,CZe=_n(/^((?![*_])punctSpace)/,"u").replace(/punctSpace/g,FP).getRegex(),yse=/(?!~)[\p{P}\p{S}]/u,wZe=/(?!~)[\s\p{P}\p{S}]/u,kZe=/(?:[^\s\p{P}\p{S}]|~)/u,SZe=/\[[^\[\]]*?\]\((?:\\[\s\S]|[^\\\(\)]|\((?:\\[\s\S]|[^\\\(\)])*\))*\)|`[^`]*?`|<(?! )[^<>]*?>/g,vse=/^(?:\*+(?:((?!\*)punct)|[^\s*]))|^_+(?:((?!_)punct)|([^\s_]))/,EZe=_n(vse,"u").replace(/punct/g,S4).getRegex(),AZe=_n(vse,"u").replace(/punct/g,yse).getRegex(),xse="^[^_*]*?__[^_*]*?\\*[^_*]*?(?=__)|[^*]+(?=[^*])|(?!\\*)punct(\\*+)(?=[\\s]|$)|notPunctSpace(\\*+)(?!\\*)(?=punctSpace|$)|(?!\\*)punctSpace(\\*+)(?=notPunctSpace)|[\\s](\\*+)(?!\\*)(?=punct)|(?!\\*)punct(\\*+)(?!\\*)(?=punct)|notPunctSpace(\\*+)(?=notPunctSpace)",RZe=_n(xse,"gu").replace(/notPunctSpace/g,gse).replace(/punctSpace/g,FP).replace(/punct/g,S4).getRegex(),_Ze=_n(xse,"gu").replace(/notPunctSpace/g,kZe).replace(/punctSpace/g,wZe).replace(/punct/g,yse).getRegex(),LZe=_n("^[^_*]*?\\*\\*[^_*]*?_[^_*]*?(?=\\*\\*)|[^_]+(?=[^_])|(?!_)punct(_+)(?=[\\s]|$)|notPunctSpace(_+)(?!_)(?=punctSpace|$)|(?!_)punctSpace(_+)(?=notPunctSpace)|[\\s](_+)(?!_)(?=punct)|(?!_)punct(_+)(?!_)(?=punct)","gu").replace(/notPunctSpace/g,gse).replace(/punctSpace/g,FP).replace(/punct/g,S4).getRegex(),DZe=_n(/\\(punct)/,"gu").replace(/punct/g,S4).getRegex(),IZe=_n(/^<(scheme:[^\s\x00-\x1f<>]*|email)>/).replace("scheme",/[a-zA-Z][a-zA-Z0-9+.-]{1,31}/).replace("email",/[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+(@)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+(?![-_])/).getRegex(),MZe=_n(BP).replace("(?:-->|$)","-->").getRegex(),NZe=_n("^comment|^</[a-zA-Z][\\w:-]*\\s*>|^<[a-zA-Z][\\w-]*(?:attribute)*?\\s*/?>|^<\\?[\\s\\S]*?\\?>|^<![a-zA-Z]+\\s[\\s\\S]*?>|^<!\\[CDATA\\[[\\s\\S]*?\\]\\]>").replace("comment",MZe).replace("attribute",/\s+[a-zA-Z:_][\w.:-]*(?:\s*=\s*"[^"]*"|\s*=\s*'[^']*'|\s*=\s*[^\s"'=<>`]+)?/).getRegex(),T4=/(?:\[(?:\\[\s\S]|[^\[\]\\])*\]|\\[\s\S]|`[^`]*`|[^\[\]\\`])*?/,PZe=_n(/^!?\[(label)\]\(\s*(href)(?:(?:[ \t]*(?:\n[ \t]*)?)(title))?\s*\)/).replace("label",T4).replace("href",/<(?:\\.|[^\n<>\\])+>|[^ \t\n\x00-\x1f]*/).replace("title",/"(?:\\"?|[^"\\])*"|'(?:\\'?|[^'\\])*'|\((?:\\\)?|[^)\\])*\)/).getRegex(),bse=_n(/^!?\[(label)\]\[(ref)\]/).replace("label",T4).replace("ref",OP).getRegex(),Tse=_n(/^!?\[(ref)\](?:\[\])?/).replace("ref",OP).getRegex(),OZe=_n("reflink|nolink(?!\\()","g").replace("reflink",bse).replace("nolink",Tse).getRegex(),zP={_backpedal:D2,anyPunctuation:DZe,autolink:IZe,blockSkip:SZe,br:mse,code:bZe,del:D2,emStrongLDelim:EZe,emStrongRDelimAst:RZe,emStrongRDelimUnd:LZe,escape:xZe,link:PZe,nolink:Tse,punctuation:CZe,reflink:bse,reflinkSearch:OZe,tag:NZe,text:TZe,url:D2},BZe={...zP,link:_n(/^!?\[(label)\]\((.*?)\)/).replace("label",T4).getRegex(),reflink:_n(/^!?\[(label)\]\s*\[([^\]]*)\]/).replace("label",T4).getRegex()},LP={...zP,emStrongRDelimAst:_Ze,emStrongLDelim:AZe,url:_n(/^((?:ftp|https?):\/\/|www\.)(?:[a-zA-Z0-9\-]+\.?)+[^\s<]*|^email/,"i").replace("email",/[A-Za-z0-9._+-]+(@)[a-zA-Z0-9-_]+(?:\.[a-zA-Z0-9-_]*[a-zA-Z0-9])+(?![-_])/).getRegex(),_backpedal:/(?:[^?!.,:;*_'"~()&]+|\([^)]*\)|&(?![a-zA-Z0-9]+;$)|[?!.,:;*_'"~)]+(?!$))+/,del:/^(~~?)(?=[^\s~])((?:\\[\s\S]|[^\\])*?(?:\\[\s\S]|[^\s~\\]))\1(?=[^~]|$)/,text:/^([`~]+|[^`~])(?:(?= {2,}\n)|(?=[a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-]+@)|[\s\S]*?(?:(?=[\\<!\[`*~_]|\b_|https?:\/\/|ftp:\/\/|www\.|$)|[^ ](?= {2,}\n)|[^a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-](?=[a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-]+@)))/},$Ze={...LP,br:_n(mse).replace("{2,}","*").getRegex(),text:_n(LP.text).replace("\\b_","\\b_| {2,}\\n").replace(/\{2,\}/g,"*").getRegex()},b4={normal:$P,gfm:yZe,pedantic:vZe},R2={normal:zP,gfm:LP,breaks:$Ze,pedantic:BZe},FZe={"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#39;"},ose=o(e=>FZe[e],"ke");o(ru,"w");o(lse,"J");o(cse,"V");o(_2,"z");o(zZe,"ge");o(use,"fe");o(GZe,"Je");C4=class{static{o(this,"y")}options;rules;lexer;constructor(e){this.options=e||Tm}space(e){let t=this.rules.block.newline.exec(e);if(t&&t[0].length>0)return{type:"space",raw:t[0]}}code(e){let t=this.rules.block.code.exec(e);if(t){let r=t[0].replace(this.rules.other.codeRemoveIndent,"");return{type:"code",raw:t[0],codeBlockStyle:"indented",text:this.options.pedantic?r:_2(r,`
+`)}}}fences(e){let t=this.rules.block.fences.exec(e);if(t){let r=t[0],n=GZe(r,t[3]||"",this.rules);return{type:"code",raw:r,lang:t[2]?t[2].trim().replace(this.rules.inline.anyPunctuation,"$1"):t[2],text:n}}}heading(e){let t=this.rules.block.heading.exec(e);if(t){let r=t[2].trim();if(this.rules.other.endingHash.test(r)){let n=_2(r,"#");(this.options.pedantic||!n||this.rules.other.endingSpaceChar.test(n))&&(r=n.trim())}return{type:"heading",raw:t[0],depth:t[1].length,text:r,tokens:this.lexer.inline(r)}}}hr(e){let t=this.rules.block.hr.exec(e);if(t)return{type:"hr",raw:_2(t[0],`
+`)}}blockquote(e){let t=this.rules.block.blockquote.exec(e);if(t){let r=_2(t[0],`
 `).split(`
-`),i="",n="",a=[];for(;r.length>0;){let s=!1,l=[],u;for(u=0;u<r.length;u++)if(this.rules.other.blockquoteStart.test(r[u]))l.push(r[u]),s=!0;else if(!s)l.push(r[u]);else break;r=r.slice(u);let h=l.join(`
+`),n="",i="",a=[];for(;r.length>0;){let s=!1,l=[],u;for(u=0;u<r.length;u++)if(this.rules.other.blockquoteStart.test(r[u]))l.push(r[u]),s=!0;else if(!s)l.push(r[u]);else break;r=r.slice(u);let h=l.join(`
 `),d=h.replace(this.rules.other.blockquoteSetextReplace,`
-    $1`).replace(this.rules.other.blockquoteSetextReplace2,"");i=i?`${i}
-${h}`:h,n=n?`${n}
+    $1`).replace(this.rules.other.blockquoteSetextReplace2,"");n=n?`${n}
+${h}`:h,i=i?`${i}
 ${d}`:d;let f=this.lexer.state.top;if(this.lexer.state.top=!0,this.lexer.blockTokens(d,a,!0),this.lexer.state.top=f,r.length===0)break;let p=a.at(-1);if(p?.type==="code")break;if(p?.type==="blockquote"){let m=p,g=m.raw+`
 `+r.join(`
-`),y=this.blockquote(g);a[a.length-1]=y,i=i.substring(0,i.length-m.raw.length)+y.raw,n=n.substring(0,n.length-m.text.length)+y.text;break}else if(p?.type==="list"){let m=p,g=m.raw+`
+`),y=this.blockquote(g);a[a.length-1]=y,n=n.substring(0,n.length-m.raw.length)+y.raw,i=i.substring(0,i.length-m.text.length)+y.text;break}else if(p?.type==="list"){let m=p,g=m.raw+`
 `+r.join(`
-`),y=this.list(g);a[a.length-1]=y,i=i.substring(0,i.length-p.raw.length)+y.raw,n=n.substring(0,n.length-m.raw.length)+y.raw,r=g.substring(a.at(-1).raw.length).split(`
-`);continue}}return{type:"blockquote",raw:i,tokens:a,text:n}}}list(e){let t=this.rules.block.list.exec(e);if(t){let r=t[1].trim(),i=r.length>1,n={type:"list",raw:"",ordered:i,start:i?+r.slice(0,-1):"",loose:!1,items:[]};r=i?`\\d{1,9}\\${r.slice(-1)}`:`\\${r}`,this.options.pedantic&&(r=i?r:"[*+-]");let a=this.rules.other.listItemRegex(r),s=!1;for(;e;){let u=!1,h="",d="";if(!(t=a.exec(e))||this.rules.block.hr.test(e))break;h=t[0],e=e.substring(h.length);let f=t[2].split(`
+`),y=this.list(g);a[a.length-1]=y,n=n.substring(0,n.length-p.raw.length)+y.raw,i=i.substring(0,i.length-m.raw.length)+y.raw,r=g.substring(a.at(-1).raw.length).split(`
+`);continue}}return{type:"blockquote",raw:n,tokens:a,text:i}}}list(e){let t=this.rules.block.list.exec(e);if(t){let r=t[1].trim(),n=r.length>1,i={type:"list",raw:"",ordered:n,start:n?+r.slice(0,-1):"",loose:!1,items:[]};r=n?`\\d{1,9}\\${r.slice(-1)}`:`\\${r}`,this.options.pedantic&&(r=n?r:"[*+-]");let a=this.rules.other.listItemRegex(r),s=!1;for(;e;){let u=!1,h="",d="";if(!(t=a.exec(e))||this.rules.block.hr.test(e))break;h=t[0],e=e.substring(h.length);let f=t[2].split(`
 `,1)[0].replace(this.rules.other.listReplaceTabs,x=>" ".repeat(3*x.length)),p=e.split(`
 `,1)[0],m=!f.trim(),g=0;if(this.options.pedantic?(g=2,d=f.trimStart()):m?g=t[1].length+1:(g=t[2].search(this.rules.other.nonSpaceChar),g=g>4?1:g,d=f.slice(g),g+=t[1].length),m&&this.rules.other.blankLine.test(p)&&(h+=p+`
-`,e=e.substring(p.length+1),u=!0),!u){let x=this.rules.other.nextBulletRegex(g),b=this.rules.other.hrRegex(g),T=this.rules.other.fencesBeginRegex(g),w=this.rules.other.headingBeginRegex(g),C=this.rules.other.htmlBeginRegex(g);for(;e;){let k=e.split(`
-`,1)[0],E;if(p=k,this.options.pedantic?(p=p.replace(this.rules.other.listReplaceNesting,"  "),E=p):E=p.replace(this.rules.other.tabCharGlobal,"    "),T.test(p)||w.test(p)||C.test(p)||x.test(p)||b.test(p))break;if(E.search(this.rules.other.nonSpaceChar)>=g||!p.trim())d+=`
-`+E.slice(g);else{if(m||f.replace(this.rules.other.tabCharGlobal,"    ").search(this.rules.other.nonSpaceChar)>=4||T.test(f)||w.test(f)||b.test(f))break;d+=`
-`+p}!m&&!p.trim()&&(m=!0),h+=k+`
-`,e=e.substring(k.length+1),f=E.slice(g)}}n.loose||(s?n.loose=!0:this.rules.other.doubleBlankLine.test(h)&&(s=!0));let y=null,v;this.options.gfm&&(y=this.rules.other.listIsTask.exec(d),y&&(v=y[0]!=="[ ] ",d=d.replace(this.rules.other.listReplaceTask,""))),n.items.push({type:"list_item",raw:h,task:!!y,checked:v,loose:!1,text:d,tokens:[]}),n.raw+=h}let l=n.items.at(-1);if(l)l.raw=l.raw.trimEnd(),l.text=l.text.trimEnd();else return;n.raw=n.raw.trimEnd();for(let u=0;u<n.items.length;u++)if(this.lexer.state.top=!1,n.items[u].tokens=this.lexer.blockTokens(n.items[u].text,[]),!n.loose){let h=n.items[u].tokens.filter(f=>f.type==="space"),d=h.length>0&&h.some(f=>this.rules.other.anyLine.test(f.raw));n.loose=d}if(n.loose)for(let u=0;u<n.items.length;u++)n.items[u].loose=!0;return n}}html(e){let t=this.rules.block.html.exec(e);if(t)return{type:"html",block:!0,raw:t[0],pre:t[1]==="pre"||t[1]==="script"||t[1]==="style",text:t[0]}}def(e){let t=this.rules.block.def.exec(e);if(t){let r=t[1].toLowerCase().replace(this.rules.other.multipleSpaceGlobal," "),i=t[2]?t[2].replace(this.rules.other.hrefBrackets,"$1").replace(this.rules.inline.anyPunctuation,"$1"):"",n=t[3]?t[3].substring(1,t[3].length-1).replace(this.rules.inline.anyPunctuation,"$1"):t[3];return{type:"def",tag:r,raw:t[0],href:i,title:n}}}table(e){let t=this.rules.block.table.exec(e);if(!t||!this.rules.other.tableDelimiter.test(t[2]))return;let r=rre(t[1]),i=t[2].replace(this.rules.other.tableAlignChars,"").split("|"),n=t[3]?.trim()?t[3].replace(this.rules.other.tableRowBlankLine,"").split(`
-`):[],a={type:"table",raw:t[0],header:[],align:[],rows:[]};if(r.length===i.length){for(let s of i)this.rules.other.tableAlignRight.test(s)?a.align.push("right"):this.rules.other.tableAlignCenter.test(s)?a.align.push("center"):this.rules.other.tableAlignLeft.test(s)?a.align.push("left"):a.align.push(null);for(let s=0;s<r.length;s++)a.header.push({text:r[s],tokens:this.lexer.inline(r[s]),header:!0,align:a.align[s]});for(let s of n)a.rows.push(rre(s,a.header.length).map((l,u)=>({text:l,tokens:this.lexer.inline(l),header:!1,align:a.align[u]})));return a}}lheading(e){let t=this.rules.block.lheading.exec(e);if(t)return{type:"heading",raw:t[0],depth:t[2].charAt(0)==="="?1:2,text:t[1],tokens:this.lexer.inline(t[1])}}paragraph(e){let t=this.rules.block.paragraph.exec(e);if(t){let r=t[1].charAt(t[1].length-1)===`
-`?t[1].slice(0,-1):t[1];return{type:"paragraph",raw:t[0],text:r,tokens:this.lexer.inline(r)}}}text(e){let t=this.rules.block.text.exec(e);if(t)return{type:"text",raw:t[0],text:t[0],tokens:this.lexer.inline(t[0])}}escape(e){let t=this.rules.inline.escape.exec(e);if(t)return{type:"escape",raw:t[0],text:t[1]}}tag(e){let t=this.rules.inline.tag.exec(e);if(t)return!this.lexer.state.inLink&&this.rules.other.startATag.test(t[0])?this.lexer.state.inLink=!0:this.lexer.state.inLink&&this.rules.other.endATag.test(t[0])&&(this.lexer.state.inLink=!1),!this.lexer.state.inRawBlock&&this.rules.other.startPreScriptTag.test(t[0])?this.lexer.state.inRawBlock=!0:this.lexer.state.inRawBlock&&this.rules.other.endPreScriptTag.test(t[0])&&(this.lexer.state.inRawBlock=!1),{type:"html",raw:t[0],inLink:this.lexer.state.inLink,inRawBlock:this.lexer.state.inRawBlock,block:!1,text:t[0]}}link(e){let t=this.rules.inline.link.exec(e);if(t){let r=t[2].trim();if(!this.options.pedantic&&this.rules.other.startAngleBracket.test(r)){if(!this.rules.other.endAngleBracket.test(r))return;let a=Ux(r.slice(0,-1),"\\");if((r.length-a.length)%2===0)return}else{let a=KWe(t[2],"()");if(a===-2)return;if(a>-1){let s=(t[0].indexOf("!")===0?5:4)+t[1].length+a;t[2]=t[2].substring(0,a),t[0]=t[0].substring(0,s).trim(),t[3]=""}}let i=t[2],n="";if(this.options.pedantic){let a=this.rules.other.pedanticHrefTitle.exec(i);a&&(i=a[1],n=a[3])}else n=t[3]?t[3].slice(1,-1):"";return i=i.trim(),this.rules.other.startAngleBracket.test(i)&&(this.options.pedantic&&!this.rules.other.endAngleBracket.test(r)?i=i.slice(1):i=i.slice(1,-1)),ire(t,{href:i&&i.replace(this.rules.inline.anyPunctuation,"$1"),title:n&&n.replace(this.rules.inline.anyPunctuation,"$1")},t[0],this.lexer,this.rules)}}reflink(e,t){let r;if((r=this.rules.inline.reflink.exec(e))||(r=this.rules.inline.nolink.exec(e))){let i=(r[2]||r[1]).replace(this.rules.other.multipleSpaceGlobal," "),n=t[i.toLowerCase()];if(!n){let a=r[0].charAt(0);return{type:"text",raw:a,text:a}}return ire(r,n,r[0],this.lexer,this.rules)}}emStrong(e,t,r=""){let i=this.rules.inline.emStrongLDelim.exec(e);if(!(!i||i[3]&&r.match(this.rules.other.unicodeAlphaNumeric))&&(!(i[1]||i[2])||!r||this.rules.inline.punctuation.exec(r))){let n=[...i[0]].length-1,a,s,l=n,u=0,h=i[0][0]==="*"?this.rules.inline.emStrongRDelimAst:this.rules.inline.emStrongRDelimUnd;for(h.lastIndex=0,t=t.slice(-1*e.length+n);(i=h.exec(t))!=null;){if(a=i[1]||i[2]||i[3]||i[4]||i[5]||i[6],!a)continue;if(s=[...a].length,i[3]||i[4]){l+=s;continue}else if((i[5]||i[6])&&n%3&&!((n+s)%3)){u+=s;continue}if(l-=s,l>0)continue;s=Math.min(s,s+l+u);let d=[...i[0]][0].length,f=e.slice(0,n+i.index+d+s);if(Math.min(n,s)%2){let m=f.slice(1,-1);return{type:"em",raw:f,text:m,tokens:this.lexer.inlineTokens(m)}}let p=f.slice(2,-2);return{type:"strong",raw:f,text:p,tokens:this.lexer.inlineTokens(p)}}}}codespan(e){let t=this.rules.inline.code.exec(e);if(t){let r=t[2].replace(this.rules.other.newLineCharGlobal," "),i=this.rules.other.nonSpaceChar.test(r),n=this.rules.other.startingSpaceChar.test(r)&&this.rules.other.endingSpaceChar.test(r);return i&&n&&(r=r.substring(1,r.length-1)),{type:"codespan",raw:t[0],text:r}}}br(e){let t=this.rules.inline.br.exec(e);if(t)return{type:"br",raw:t[0]}}del(e){let t=this.rules.inline.del.exec(e);if(t)return{type:"del",raw:t[0],text:t[2],tokens:this.lexer.inlineTokens(t[2])}}autolink(e){let t=this.rules.inline.autolink.exec(e);if(t){let r,i;return t[2]==="@"?(r=t[1],i="mailto:"+r):(r=t[1],i=r),{type:"link",raw:t[0],text:r,href:i,tokens:[{type:"text",raw:r,text:r}]}}}url(e){let t;if(t=this.rules.inline.url.exec(e)){let r,i;if(t[2]==="@")r=t[0],i="mailto:"+r;else{let n;do n=t[0],t[0]=this.rules.inline._backpedal.exec(t[0])?.[0]??"";while(n!==t[0]);r=t[0],t[1]==="www."?i="http://"+t[0]:i=t[0]}return{type:"link",raw:t[0],text:r,href:i,tokens:[{type:"text",raw:r,text:r}]}}}inlineText(e){let t=this.rules.inline.text.exec(e);if(t){let r=this.lexer.state.inRawBlock;return{type:"text",raw:t[0],text:t[0],escaped:r}}}},Pu=class XM{static{o(this,"l")}tokens;options;state;tokenizer;inlineQueue;constructor(t){this.tokens=[],this.tokens.links=Object.create(null),this.options=t||Sp,this.options.tokenizer=this.options.tokenizer||new C4,this.tokenizer=this.options.tokenizer,this.tokenizer.options=this.options,this.tokenizer.lexer=this,this.inlineQueue=[],this.state={inLink:!1,inRawBlock:!1,top:!0};let r={other:Ja,block:b4.normal,inline:qx.normal};this.options.pedantic?(r.block=b4.pedantic,r.inline=qx.pedantic):this.options.gfm&&(r.block=b4.gfm,this.options.breaks?r.inline=qx.breaks:r.inline=qx.gfm),this.tokenizer.rules=r}static get rules(){return{block:b4,inline:qx}}static lex(t,r){return new XM(r).lex(t)}static lexInline(t,r){return new XM(r).inlineTokens(t)}lex(t){t=t.replace(Ja.carriageReturn,`
-`),this.blockTokens(t,this.tokens);for(let r=0;r<this.inlineQueue.length;r++){let i=this.inlineQueue[r];this.inlineTokens(i.src,i.tokens)}return this.inlineQueue=[],this.tokens}blockTokens(t,r=[],i=!1){for(this.options.pedantic&&(t=t.replace(Ja.tabCharGlobal,"    ").replace(Ja.spaceLine,""));t;){let n;if(this.options.extensions?.block?.some(s=>(n=s.call({lexer:this},t,r))?(t=t.substring(n.raw.length),r.push(n),!0):!1))continue;if(n=this.tokenizer.space(t)){t=t.substring(n.raw.length);let s=r.at(-1);n.raw.length===1&&s!==void 0?s.raw+=`
-`:r.push(n);continue}if(n=this.tokenizer.code(t)){t=t.substring(n.raw.length);let s=r.at(-1);s?.type==="paragraph"||s?.type==="text"?(s.raw+=(s.raw.endsWith(`
+`,e=e.substring(p.length+1),u=!0),!u){let x=this.rules.other.nextBulletRegex(g),b=this.rules.other.hrRegex(g),T=this.rules.other.fencesBeginRegex(g),k=this.rules.other.headingBeginRegex(g),C=this.rules.other.htmlBeginRegex(g);for(;e;){let w=e.split(`
+`,1)[0],S;if(p=w,this.options.pedantic?(p=p.replace(this.rules.other.listReplaceNesting,"  "),S=p):S=p.replace(this.rules.other.tabCharGlobal,"    "),T.test(p)||k.test(p)||C.test(p)||x.test(p)||b.test(p))break;if(S.search(this.rules.other.nonSpaceChar)>=g||!p.trim())d+=`
+`+S.slice(g);else{if(m||f.replace(this.rules.other.tabCharGlobal,"    ").search(this.rules.other.nonSpaceChar)>=4||T.test(f)||k.test(f)||b.test(f))break;d+=`
+`+p}!m&&!p.trim()&&(m=!0),h+=w+`
+`,e=e.substring(w.length+1),f=S.slice(g)}}i.loose||(s?i.loose=!0:this.rules.other.doubleBlankLine.test(h)&&(s=!0));let y=null,v;this.options.gfm&&(y=this.rules.other.listIsTask.exec(d),y&&(v=y[0]!=="[ ] ",d=d.replace(this.rules.other.listReplaceTask,""))),i.items.push({type:"list_item",raw:h,task:!!y,checked:v,loose:!1,text:d,tokens:[]}),i.raw+=h}let l=i.items.at(-1);if(l)l.raw=l.raw.trimEnd(),l.text=l.text.trimEnd();else return;i.raw=i.raw.trimEnd();for(let u=0;u<i.items.length;u++)if(this.lexer.state.top=!1,i.items[u].tokens=this.lexer.blockTokens(i.items[u].text,[]),!i.loose){let h=i.items[u].tokens.filter(f=>f.type==="space"),d=h.length>0&&h.some(f=>this.rules.other.anyLine.test(f.raw));i.loose=d}if(i.loose)for(let u=0;u<i.items.length;u++)i.items[u].loose=!0;return i}}html(e){let t=this.rules.block.html.exec(e);if(t)return{type:"html",block:!0,raw:t[0],pre:t[1]==="pre"||t[1]==="script"||t[1]==="style",text:t[0]}}def(e){let t=this.rules.block.def.exec(e);if(t){let r=t[1].toLowerCase().replace(this.rules.other.multipleSpaceGlobal," "),n=t[2]?t[2].replace(this.rules.other.hrefBrackets,"$1").replace(this.rules.inline.anyPunctuation,"$1"):"",i=t[3]?t[3].substring(1,t[3].length-1).replace(this.rules.inline.anyPunctuation,"$1"):t[3];return{type:"def",tag:r,raw:t[0],href:n,title:i}}}table(e){let t=this.rules.block.table.exec(e);if(!t||!this.rules.other.tableDelimiter.test(t[2]))return;let r=cse(t[1]),n=t[2].replace(this.rules.other.tableAlignChars,"").split("|"),i=t[3]?.trim()?t[3].replace(this.rules.other.tableRowBlankLine,"").split(`
+`):[],a={type:"table",raw:t[0],header:[],align:[],rows:[]};if(r.length===n.length){for(let s of n)this.rules.other.tableAlignRight.test(s)?a.align.push("right"):this.rules.other.tableAlignCenter.test(s)?a.align.push("center"):this.rules.other.tableAlignLeft.test(s)?a.align.push("left"):a.align.push(null);for(let s=0;s<r.length;s++)a.header.push({text:r[s],tokens:this.lexer.inline(r[s]),header:!0,align:a.align[s]});for(let s of i)a.rows.push(cse(s,a.header.length).map((l,u)=>({text:l,tokens:this.lexer.inline(l),header:!1,align:a.align[u]})));return a}}lheading(e){let t=this.rules.block.lheading.exec(e);if(t)return{type:"heading",raw:t[0],depth:t[2].charAt(0)==="="?1:2,text:t[1],tokens:this.lexer.inline(t[1])}}paragraph(e){let t=this.rules.block.paragraph.exec(e);if(t){let r=t[1].charAt(t[1].length-1)===`
+`?t[1].slice(0,-1):t[1];return{type:"paragraph",raw:t[0],text:r,tokens:this.lexer.inline(r)}}}text(e){let t=this.rules.block.text.exec(e);if(t)return{type:"text",raw:t[0],text:t[0],tokens:this.lexer.inline(t[0])}}escape(e){let t=this.rules.inline.escape.exec(e);if(t)return{type:"escape",raw:t[0],text:t[1]}}tag(e){let t=this.rules.inline.tag.exec(e);if(t)return!this.lexer.state.inLink&&this.rules.other.startATag.test(t[0])?this.lexer.state.inLink=!0:this.lexer.state.inLink&&this.rules.other.endATag.test(t[0])&&(this.lexer.state.inLink=!1),!this.lexer.state.inRawBlock&&this.rules.other.startPreScriptTag.test(t[0])?this.lexer.state.inRawBlock=!0:this.lexer.state.inRawBlock&&this.rules.other.endPreScriptTag.test(t[0])&&(this.lexer.state.inRawBlock=!1),{type:"html",raw:t[0],inLink:this.lexer.state.inLink,inRawBlock:this.lexer.state.inRawBlock,block:!1,text:t[0]}}link(e){let t=this.rules.inline.link.exec(e);if(t){let r=t[2].trim();if(!this.options.pedantic&&this.rules.other.startAngleBracket.test(r)){if(!this.rules.other.endAngleBracket.test(r))return;let a=_2(r.slice(0,-1),"\\");if((r.length-a.length)%2===0)return}else{let a=zZe(t[2],"()");if(a===-2)return;if(a>-1){let s=(t[0].indexOf("!")===0?5:4)+t[1].length+a;t[2]=t[2].substring(0,a),t[0]=t[0].substring(0,s).trim(),t[3]=""}}let n=t[2],i="";if(this.options.pedantic){let a=this.rules.other.pedanticHrefTitle.exec(n);a&&(n=a[1],i=a[3])}else i=t[3]?t[3].slice(1,-1):"";return n=n.trim(),this.rules.other.startAngleBracket.test(n)&&(this.options.pedantic&&!this.rules.other.endAngleBracket.test(r)?n=n.slice(1):n=n.slice(1,-1)),use(t,{href:n&&n.replace(this.rules.inline.anyPunctuation,"$1"),title:i&&i.replace(this.rules.inline.anyPunctuation,"$1")},t[0],this.lexer,this.rules)}}reflink(e,t){let r;if((r=this.rules.inline.reflink.exec(e))||(r=this.rules.inline.nolink.exec(e))){let n=(r[2]||r[1]).replace(this.rules.other.multipleSpaceGlobal," "),i=t[n.toLowerCase()];if(!i){let a=r[0].charAt(0);return{type:"text",raw:a,text:a}}return use(r,i,r[0],this.lexer,this.rules)}}emStrong(e,t,r=""){let n=this.rules.inline.emStrongLDelim.exec(e);if(!(!n||n[3]&&r.match(this.rules.other.unicodeAlphaNumeric))&&(!(n[1]||n[2])||!r||this.rules.inline.punctuation.exec(r))){let i=[...n[0]].length-1,a,s,l=i,u=0,h=n[0][0]==="*"?this.rules.inline.emStrongRDelimAst:this.rules.inline.emStrongRDelimUnd;for(h.lastIndex=0,t=t.slice(-1*e.length+i);(n=h.exec(t))!=null;){if(a=n[1]||n[2]||n[3]||n[4]||n[5]||n[6],!a)continue;if(s=[...a].length,n[3]||n[4]){l+=s;continue}else if((n[5]||n[6])&&i%3&&!((i+s)%3)){u+=s;continue}if(l-=s,l>0)continue;s=Math.min(s,s+l+u);let d=[...n[0]][0].length,f=e.slice(0,i+n.index+d+s);if(Math.min(i,s)%2){let m=f.slice(1,-1);return{type:"em",raw:f,text:m,tokens:this.lexer.inlineTokens(m)}}let p=f.slice(2,-2);return{type:"strong",raw:f,text:p,tokens:this.lexer.inlineTokens(p)}}}}codespan(e){let t=this.rules.inline.code.exec(e);if(t){let r=t[2].replace(this.rules.other.newLineCharGlobal," "),n=this.rules.other.nonSpaceChar.test(r),i=this.rules.other.startingSpaceChar.test(r)&&this.rules.other.endingSpaceChar.test(r);return n&&i&&(r=r.substring(1,r.length-1)),{type:"codespan",raw:t[0],text:r}}}br(e){let t=this.rules.inline.br.exec(e);if(t)return{type:"br",raw:t[0]}}del(e){let t=this.rules.inline.del.exec(e);if(t)return{type:"del",raw:t[0],text:t[2],tokens:this.lexer.inlineTokens(t[2])}}autolink(e){let t=this.rules.inline.autolink.exec(e);if(t){let r,n;return t[2]==="@"?(r=t[1],n="mailto:"+r):(r=t[1],n=r),{type:"link",raw:t[0],text:r,href:n,tokens:[{type:"text",raw:r,text:r}]}}}url(e){let t;if(t=this.rules.inline.url.exec(e)){let r,n;if(t[2]==="@")r=t[0],n="mailto:"+r;else{let i;do i=t[0],t[0]=this.rules.inline._backpedal.exec(t[0])?.[0]??"";while(i!==t[0]);r=t[0],t[1]==="www."?n="http://"+t[0]:n=t[0]}return{type:"link",raw:t[0],text:r,href:n,tokens:[{type:"text",raw:r,text:r}]}}}inlineText(e){let t=this.rules.inline.text.exec(e);if(t){let r=this.lexer.state.inRawBlock;return{type:"text",raw:t[0],text:t[0],escaped:r}}}},bh=class DP{static{o(this,"l")}tokens;options;state;tokenizer;inlineQueue;constructor(t){this.tokens=[],this.tokens.links=Object.create(null),this.options=t||Tm,this.options.tokenizer=this.options.tokenizer||new C4,this.tokenizer=this.options.tokenizer,this.tokenizer.options=this.options,this.tokenizer.lexer=this,this.inlineQueue=[],this.state={inLink:!1,inRawBlock:!1,top:!0};let r={other:_s,block:b4.normal,inline:R2.normal};this.options.pedantic?(r.block=b4.pedantic,r.inline=R2.pedantic):this.options.gfm&&(r.block=b4.gfm,this.options.breaks?r.inline=R2.breaks:r.inline=R2.gfm),this.tokenizer.rules=r}static get rules(){return{block:b4,inline:R2}}static lex(t,r){return new DP(r).lex(t)}static lexInline(t,r){return new DP(r).inlineTokens(t)}lex(t){t=t.replace(_s.carriageReturn,`
+`),this.blockTokens(t,this.tokens);for(let r=0;r<this.inlineQueue.length;r++){let n=this.inlineQueue[r];this.inlineTokens(n.src,n.tokens)}return this.inlineQueue=[],this.tokens}blockTokens(t,r=[],n=!1){for(this.options.pedantic&&(t=t.replace(_s.tabCharGlobal,"    ").replace(_s.spaceLine,""));t;){let i;if(this.options.extensions?.block?.some(s=>(i=s.call({lexer:this},t,r))?(t=t.substring(i.raw.length),r.push(i),!0):!1))continue;if(i=this.tokenizer.space(t)){t=t.substring(i.raw.length);let s=r.at(-1);i.raw.length===1&&s!==void 0?s.raw+=`
+`:r.push(i);continue}if(i=this.tokenizer.code(t)){t=t.substring(i.raw.length);let s=r.at(-1);s?.type==="paragraph"||s?.type==="text"?(s.raw+=(s.raw.endsWith(`
 `)?"":`
-`)+n.raw,s.text+=`
-`+n.text,this.inlineQueue.at(-1).src=s.text):r.push(n);continue}if(n=this.tokenizer.fences(t)){t=t.substring(n.raw.length),r.push(n);continue}if(n=this.tokenizer.heading(t)){t=t.substring(n.raw.length),r.push(n);continue}if(n=this.tokenizer.hr(t)){t=t.substring(n.raw.length),r.push(n);continue}if(n=this.tokenizer.blockquote(t)){t=t.substring(n.raw.length),r.push(n);continue}if(n=this.tokenizer.list(t)){t=t.substring(n.raw.length),r.push(n);continue}if(n=this.tokenizer.html(t)){t=t.substring(n.raw.length),r.push(n);continue}if(n=this.tokenizer.def(t)){t=t.substring(n.raw.length);let s=r.at(-1);s?.type==="paragraph"||s?.type==="text"?(s.raw+=(s.raw.endsWith(`
+`)+i.raw,s.text+=`
+`+i.text,this.inlineQueue.at(-1).src=s.text):r.push(i);continue}if(i=this.tokenizer.fences(t)){t=t.substring(i.raw.length),r.push(i);continue}if(i=this.tokenizer.heading(t)){t=t.substring(i.raw.length),r.push(i);continue}if(i=this.tokenizer.hr(t)){t=t.substring(i.raw.length),r.push(i);continue}if(i=this.tokenizer.blockquote(t)){t=t.substring(i.raw.length),r.push(i);continue}if(i=this.tokenizer.list(t)){t=t.substring(i.raw.length),r.push(i);continue}if(i=this.tokenizer.html(t)){t=t.substring(i.raw.length),r.push(i);continue}if(i=this.tokenizer.def(t)){t=t.substring(i.raw.length);let s=r.at(-1);s?.type==="paragraph"||s?.type==="text"?(s.raw+=(s.raw.endsWith(`
 `)?"":`
-`)+n.raw,s.text+=`
-`+n.raw,this.inlineQueue.at(-1).src=s.text):this.tokens.links[n.tag]||(this.tokens.links[n.tag]={href:n.href,title:n.title},r.push(n));continue}if(n=this.tokenizer.table(t)){t=t.substring(n.raw.length),r.push(n);continue}if(n=this.tokenizer.lheading(t)){t=t.substring(n.raw.length),r.push(n);continue}let a=t;if(this.options.extensions?.startBlock){let s=1/0,l=t.slice(1),u;this.options.extensions.startBlock.forEach(h=>{u=h.call({lexer:this},l),typeof u=="number"&&u>=0&&(s=Math.min(s,u))}),s<1/0&&s>=0&&(a=t.substring(0,s+1))}if(this.state.top&&(n=this.tokenizer.paragraph(a))){let s=r.at(-1);i&&s?.type==="paragraph"?(s.raw+=(s.raw.endsWith(`
+`)+i.raw,s.text+=`
+`+i.raw,this.inlineQueue.at(-1).src=s.text):this.tokens.links[i.tag]||(this.tokens.links[i.tag]={href:i.href,title:i.title},r.push(i));continue}if(i=this.tokenizer.table(t)){t=t.substring(i.raw.length),r.push(i);continue}if(i=this.tokenizer.lheading(t)){t=t.substring(i.raw.length),r.push(i);continue}let a=t;if(this.options.extensions?.startBlock){let s=1/0,l=t.slice(1),u;this.options.extensions.startBlock.forEach(h=>{u=h.call({lexer:this},l),typeof u=="number"&&u>=0&&(s=Math.min(s,u))}),s<1/0&&s>=0&&(a=t.substring(0,s+1))}if(this.state.top&&(i=this.tokenizer.paragraph(a))){let s=r.at(-1);n&&s?.type==="paragraph"?(s.raw+=(s.raw.endsWith(`
 `)?"":`
-`)+n.raw,s.text+=`
-`+n.text,this.inlineQueue.pop(),this.inlineQueue.at(-1).src=s.text):r.push(n),i=a.length!==t.length,t=t.substring(n.raw.length);continue}if(n=this.tokenizer.text(t)){t=t.substring(n.raw.length);let s=r.at(-1);s?.type==="text"?(s.raw+=(s.raw.endsWith(`
+`)+i.raw,s.text+=`
+`+i.text,this.inlineQueue.pop(),this.inlineQueue.at(-1).src=s.text):r.push(i),n=a.length!==t.length,t=t.substring(i.raw.length);continue}if(i=this.tokenizer.text(t)){t=t.substring(i.raw.length);let s=r.at(-1);s?.type==="text"?(s.raw+=(s.raw.endsWith(`
 `)?"":`
-`)+n.raw,s.text+=`
-`+n.text,this.inlineQueue.pop(),this.inlineQueue.at(-1).src=s.text):r.push(n);continue}if(t){let s="Infinite loop on byte: "+t.charCodeAt(0);if(this.options.silent){console.error(s);break}else throw new Error(s)}}return this.state.top=!0,r}inline(t,r=[]){return this.inlineQueue.push({src:t,tokens:r}),r}inlineTokens(t,r=[]){let i=t,n=null;if(this.tokens.links){let l=Object.keys(this.tokens.links);if(l.length>0)for(;(n=this.tokenizer.rules.inline.reflinkSearch.exec(i))!=null;)l.includes(n[0].slice(n[0].lastIndexOf("[")+1,-1))&&(i=i.slice(0,n.index)+"["+"a".repeat(n[0].length-2)+"]"+i.slice(this.tokenizer.rules.inline.reflinkSearch.lastIndex))}for(;(n=this.tokenizer.rules.inline.anyPunctuation.exec(i))!=null;)i=i.slice(0,n.index)+"++"+i.slice(this.tokenizer.rules.inline.anyPunctuation.lastIndex);for(;(n=this.tokenizer.rules.inline.blockSkip.exec(i))!=null;)i=i.slice(0,n.index)+"["+"a".repeat(n[0].length-2)+"]"+i.slice(this.tokenizer.rules.inline.blockSkip.lastIndex);i=this.options.hooks?.emStrongMask?.call({lexer:this},i)??i;let a=!1,s="";for(;t;){a||(s=""),a=!1;let l;if(this.options.extensions?.inline?.some(h=>(l=h.call({lexer:this},t,r))?(t=t.substring(l.raw.length),r.push(l),!0):!1))continue;if(l=this.tokenizer.escape(t)){t=t.substring(l.raw.length),r.push(l);continue}if(l=this.tokenizer.tag(t)){t=t.substring(l.raw.length),r.push(l);continue}if(l=this.tokenizer.link(t)){t=t.substring(l.raw.length),r.push(l);continue}if(l=this.tokenizer.reflink(t,this.tokens.links)){t=t.substring(l.raw.length);let h=r.at(-1);l.type==="text"&&h?.type==="text"?(h.raw+=l.raw,h.text+=l.text):r.push(l);continue}if(l=this.tokenizer.emStrong(t,i,s)){t=t.substring(l.raw.length),r.push(l);continue}if(l=this.tokenizer.codespan(t)){t=t.substring(l.raw.length),r.push(l);continue}if(l=this.tokenizer.br(t)){t=t.substring(l.raw.length),r.push(l);continue}if(l=this.tokenizer.del(t)){t=t.substring(l.raw.length),r.push(l);continue}if(l=this.tokenizer.autolink(t)){t=t.substring(l.raw.length),r.push(l);continue}if(!this.state.inLink&&(l=this.tokenizer.url(t))){t=t.substring(l.raw.length),r.push(l);continue}let u=t;if(this.options.extensions?.startInline){let h=1/0,d=t.slice(1),f;this.options.extensions.startInline.forEach(p=>{f=p.call({lexer:this},d),typeof f=="number"&&f>=0&&(h=Math.min(h,f))}),h<1/0&&h>=0&&(u=t.substring(0,h+1))}if(l=this.tokenizer.inlineText(u)){t=t.substring(l.raw.length),l.raw.slice(-1)!=="_"&&(s=l.raw.slice(-1)),a=!0;let h=r.at(-1);h?.type==="text"?(h.raw+=l.raw,h.text+=l.text):r.push(l);continue}if(t){let h="Infinite loop on byte: "+t.charCodeAt(0);if(this.options.silent){console.error(h);break}else throw new Error(h)}}return r}},k4=class{static{o(this,"P")}options;parser;constructor(e){this.options=e||Sp}space(e){return""}code({text:e,lang:t,escaped:r}){let i=(t||"").match(Ja.notSpaceStart)?.[0],n=e.replace(Ja.endingNewline,"")+`
-`;return i?'<pre><code class="language-'+Cc(i)+'">'+(r?n:Cc(n,!0))+`</code></pre>
-`:"<pre><code>"+(r?n:Cc(n,!0))+`</code></pre>
+`)+i.raw,s.text+=`
+`+i.text,this.inlineQueue.pop(),this.inlineQueue.at(-1).src=s.text):r.push(i);continue}if(t){let s="Infinite loop on byte: "+t.charCodeAt(0);if(this.options.silent){console.error(s);break}else throw new Error(s)}}return this.state.top=!0,r}inline(t,r=[]){return this.inlineQueue.push({src:t,tokens:r}),r}inlineTokens(t,r=[]){let n=t,i=null;if(this.tokens.links){let l=Object.keys(this.tokens.links);if(l.length>0)for(;(i=this.tokenizer.rules.inline.reflinkSearch.exec(n))!=null;)l.includes(i[0].slice(i[0].lastIndexOf("[")+1,-1))&&(n=n.slice(0,i.index)+"["+"a".repeat(i[0].length-2)+"]"+n.slice(this.tokenizer.rules.inline.reflinkSearch.lastIndex))}for(;(i=this.tokenizer.rules.inline.anyPunctuation.exec(n))!=null;)n=n.slice(0,i.index)+"++"+n.slice(this.tokenizer.rules.inline.anyPunctuation.lastIndex);for(;(i=this.tokenizer.rules.inline.blockSkip.exec(n))!=null;)n=n.slice(0,i.index)+"["+"a".repeat(i[0].length-2)+"]"+n.slice(this.tokenizer.rules.inline.blockSkip.lastIndex);n=this.options.hooks?.emStrongMask?.call({lexer:this},n)??n;let a=!1,s="";for(;t;){a||(s=""),a=!1;let l;if(this.options.extensions?.inline?.some(h=>(l=h.call({lexer:this},t,r))?(t=t.substring(l.raw.length),r.push(l),!0):!1))continue;if(l=this.tokenizer.escape(t)){t=t.substring(l.raw.length),r.push(l);continue}if(l=this.tokenizer.tag(t)){t=t.substring(l.raw.length),r.push(l);continue}if(l=this.tokenizer.link(t)){t=t.substring(l.raw.length),r.push(l);continue}if(l=this.tokenizer.reflink(t,this.tokens.links)){t=t.substring(l.raw.length);let h=r.at(-1);l.type==="text"&&h?.type==="text"?(h.raw+=l.raw,h.text+=l.text):r.push(l);continue}if(l=this.tokenizer.emStrong(t,n,s)){t=t.substring(l.raw.length),r.push(l);continue}if(l=this.tokenizer.codespan(t)){t=t.substring(l.raw.length),r.push(l);continue}if(l=this.tokenizer.br(t)){t=t.substring(l.raw.length),r.push(l);continue}if(l=this.tokenizer.del(t)){t=t.substring(l.raw.length),r.push(l);continue}if(l=this.tokenizer.autolink(t)){t=t.substring(l.raw.length),r.push(l);continue}if(!this.state.inLink&&(l=this.tokenizer.url(t))){t=t.substring(l.raw.length),r.push(l);continue}let u=t;if(this.options.extensions?.startInline){let h=1/0,d=t.slice(1),f;this.options.extensions.startInline.forEach(p=>{f=p.call({lexer:this},d),typeof f=="number"&&f>=0&&(h=Math.min(h,f))}),h<1/0&&h>=0&&(u=t.substring(0,h+1))}if(l=this.tokenizer.inlineText(u)){t=t.substring(l.raw.length),l.raw.slice(-1)!=="_"&&(s=l.raw.slice(-1)),a=!0;let h=r.at(-1);h?.type==="text"?(h.raw+=l.raw,h.text+=l.text):r.push(l);continue}if(t){let h="Infinite loop on byte: "+t.charCodeAt(0);if(this.options.silent){console.error(h);break}else throw new Error(h)}}return r}},w4=class{static{o(this,"P")}options;parser;constructor(e){this.options=e||Tm}space(e){return""}code({text:e,lang:t,escaped:r}){let n=(t||"").match(_s.notSpaceStart)?.[0],i=e.replace(_s.endingNewline,"")+`
+`;return n?'<pre><code class="language-'+ru(n)+'">'+(r?i:ru(i,!0))+`</code></pre>
+`:"<pre><code>"+(r?i:ru(i,!0))+`</code></pre>
 `}blockquote({tokens:e}){return`<blockquote>
 ${this.parser.parse(e)}</blockquote>
 `}html({text:e}){return e}def(e){return""}heading({tokens:e,depth:t}){return`<h${t}>${this.parser.parseInline(e)}</h${t}>
 `}hr(e){return`<hr>
-`}list(e){let t=e.ordered,r=e.start,i="";for(let s=0;s<e.items.length;s++){let l=e.items[s];i+=this.listitem(l)}let n=t?"ol":"ul",a=t&&r!==1?' start="'+r+'"':"";return"<"+n+a+`>
-`+i+"</"+n+`>
-`}listitem(e){let t="";if(e.task){let r=this.checkbox({checked:!!e.checked});e.loose?e.tokens[0]?.type==="paragraph"?(e.tokens[0].text=r+" "+e.tokens[0].text,e.tokens[0].tokens&&e.tokens[0].tokens.length>0&&e.tokens[0].tokens[0].type==="text"&&(e.tokens[0].tokens[0].text=r+" "+Cc(e.tokens[0].tokens[0].text),e.tokens[0].tokens[0].escaped=!0)):e.tokens.unshift({type:"text",raw:r+" ",text:r+" ",escaped:!0}):t+=r+" "}return t+=this.parser.parse(e.tokens,!!e.loose),`<li>${t}</li>
+`}list(e){let t=e.ordered,r=e.start,n="";for(let s=0;s<e.items.length;s++){let l=e.items[s];n+=this.listitem(l)}let i=t?"ol":"ul",a=t&&r!==1?' start="'+r+'"':"";return"<"+i+a+`>
+`+n+"</"+i+`>
+`}listitem(e){let t="";if(e.task){let r=this.checkbox({checked:!!e.checked});e.loose?e.tokens[0]?.type==="paragraph"?(e.tokens[0].text=r+" "+e.tokens[0].text,e.tokens[0].tokens&&e.tokens[0].tokens.length>0&&e.tokens[0].tokens[0].type==="text"&&(e.tokens[0].tokens[0].text=r+" "+ru(e.tokens[0].tokens[0].text),e.tokens[0].tokens[0].escaped=!0)):e.tokens.unshift({type:"text",raw:r+" ",text:r+" ",escaped:!0}):t+=r+" "}return t+=this.parser.parse(e.tokens,!!e.loose),`<li>${t}</li>
 `}checkbox({checked:e}){return"<input "+(e?'checked="" ':"")+'disabled="" type="checkbox">'}paragraph({tokens:e}){return`<p>${this.parser.parseInline(e)}</p>
-`}table(e){let t="",r="";for(let n=0;n<e.header.length;n++)r+=this.tablecell(e.header[n]);t+=this.tablerow({text:r});let i="";for(let n=0;n<e.rows.length;n++){let a=e.rows[n];r="";for(let s=0;s<a.length;s++)r+=this.tablecell(a[s]);i+=this.tablerow({text:r})}return i&&(i=`<tbody>${i}</tbody>`),`<table>
+`}table(e){let t="",r="";for(let i=0;i<e.header.length;i++)r+=this.tablecell(e.header[i]);t+=this.tablerow({text:r});let n="";for(let i=0;i<e.rows.length;i++){let a=e.rows[i];r="";for(let s=0;s<a.length;s++)r+=this.tablecell(a[s]);n+=this.tablerow({text:r})}return n&&(n=`<tbody>${n}</tbody>`),`<table>
 <thead>
 `+t+`</thead>
-`+i+`</table>
+`+n+`</table>
 `}tablerow({text:e}){return`<tr>
 ${e}</tr>
 `}tablecell(e){let t=this.parser.parseInline(e.tokens),r=e.header?"th":"td";return(e.align?`<${r} align="${e.align}">`:`<${r}>`)+t+`</${r}>
-`}strong({tokens:e}){return`<strong>${this.parser.parseInline(e)}</strong>`}em({tokens:e}){return`<em>${this.parser.parseInline(e)}</em>`}codespan({text:e}){return`<code>${Cc(e,!0)}</code>`}br(e){return"<br>"}del({tokens:e}){return`<del>${this.parser.parseInline(e)}</del>`}link({href:e,title:t,tokens:r}){let i=this.parser.parseInline(r),n=tre(e);if(n===null)return i;e=n;let a='<a href="'+e+'"';return t&&(a+=' title="'+Cc(t)+'"'),a+=">"+i+"</a>",a}image({href:e,title:t,text:r,tokens:i}){i&&(r=this.parser.parseInline(i,this.parser.textRenderer));let n=tre(e);if(n===null)return Cc(r);e=n;let a=`<img src="${e}" alt="${r}"`;return t&&(a+=` title="${Cc(t)}"`),a+=">",a}text(e){return"tokens"in e&&e.tokens?this.parser.parseInline(e.tokens):"escaped"in e&&e.escaped?e.text:Cc(e.text)}},aN=class{static{o(this,"$")}strong({text:e}){return e}em({text:e}){return e}codespan({text:e}){return e}del({text:e}){return e}html({text:e}){return e}text({text:e}){return e}link({text:e}){return""+e}image({text:e}){return""+e}br(){return""}},Bu=class KM{static{o(this,"l")}options;renderer;textRenderer;constructor(t){this.options=t||Sp,this.options.renderer=this.options.renderer||new k4,this.renderer=this.options.renderer,this.renderer.options=this.options,this.renderer.parser=this,this.textRenderer=new aN}static parse(t,r){return new KM(r).parse(t)}static parseInline(t,r){return new KM(r).parseInline(t)}parse(t,r=!0){let i="";for(let n=0;n<t.length;n++){let a=t[n];if(this.options.extensions?.renderers?.[a.type]){let l=a,u=this.options.extensions.renderers[l.type].call({parser:this},l);if(u!==!1||!["space","hr","heading","code","table","blockquote","list","html","def","paragraph","text"].includes(l.type)){i+=u||"";continue}}let s=a;switch(s.type){case"space":{i+=this.renderer.space(s);continue}case"hr":{i+=this.renderer.hr(s);continue}case"heading":{i+=this.renderer.heading(s);continue}case"code":{i+=this.renderer.code(s);continue}case"table":{i+=this.renderer.table(s);continue}case"blockquote":{i+=this.renderer.blockquote(s);continue}case"list":{i+=this.renderer.list(s);continue}case"html":{i+=this.renderer.html(s);continue}case"def":{i+=this.renderer.def(s);continue}case"paragraph":{i+=this.renderer.paragraph(s);continue}case"text":{let l=s,u=this.renderer.text(l);for(;n+1<t.length&&t[n+1].type==="text";)l=t[++n],u+=`
-`+this.renderer.text(l);r?i+=this.renderer.paragraph({type:"paragraph",raw:u,text:u,tokens:[{type:"text",raw:u,text:u,escaped:!0}]}):i+=u;continue}default:{let l='Token with "'+s.type+'" type was not found.';if(this.options.silent)return console.error(l),"";throw new Error(l)}}}return i}parseInline(t,r=this.renderer){let i="";for(let n=0;n<t.length;n++){let a=t[n];if(this.options.extensions?.renderers?.[a.type]){let l=this.options.extensions.renderers[a.type].call({parser:this},a);if(l!==!1||!["escape","html","link","image","strong","em","codespan","br","del","text"].includes(a.type)){i+=l||"";continue}}let s=a;switch(s.type){case"escape":{i+=r.text(s);break}case"html":{i+=r.html(s);break}case"link":{i+=r.link(s);break}case"image":{i+=r.image(s);break}case"strong":{i+=r.strong(s);break}case"em":{i+=r.em(s);break}case"codespan":{i+=r.codespan(s);break}case"br":{i+=r.br(s);break}case"del":{i+=r.del(s);break}case"text":{i+=r.text(s);break}default:{let l='Token with "'+s.type+'" type was not found.';if(this.options.silent)return console.error(l),"";throw new Error(l)}}}return i}},Hx=class{static{o(this,"S")}options;block;constructor(e){this.options=e||Sp}static passThroughHooks=new Set(["preprocess","postprocess","processAllTokens","emStrongMask"]);static passThroughHooksRespectAsync=new Set(["preprocess","postprocess","processAllTokens"]);preprocess(e){return e}postprocess(e){return e}processAllTokens(e){return e}emStrongMask(e){return e}provideLexer(){return this.block?Pu.lex:Pu.lexInline}provideParser(){return this.block?Bu.parse:Bu.parseInline}},QWe=class{static{o(this,"B")}defaults=ZM();options=this.setOptions;parse=this.parseMarkdown(!0);parseInline=this.parseMarkdown(!1);Parser=Bu;Renderer=k4;TextRenderer=aN;Lexer=Pu;Tokenizer=C4;Hooks=Hx;constructor(...e){this.use(...e)}walkTokens(e,t){let r=[];for(let i of e)switch(r=r.concat(t.call(this,i)),i.type){case"table":{let n=i;for(let a of n.header)r=r.concat(this.walkTokens(a.tokens,t));for(let a of n.rows)for(let s of a)r=r.concat(this.walkTokens(s.tokens,t));break}case"list":{let n=i;r=r.concat(this.walkTokens(n.items,t));break}default:{let n=i;this.defaults.extensions?.childTokens?.[n.type]?this.defaults.extensions.childTokens[n.type].forEach(a=>{let s=n[a].flat(1/0);r=r.concat(this.walkTokens(s,t))}):n.tokens&&(r=r.concat(this.walkTokens(n.tokens,t)))}}return r}use(...e){let t=this.defaults.extensions||{renderers:{},childTokens:{}};return e.forEach(r=>{let i={...r};if(i.async=this.defaults.async||i.async||!1,r.extensions&&(r.extensions.forEach(n=>{if(!n.name)throw new Error("extension name required");if("renderer"in n){let a=t.renderers[n.name];a?t.renderers[n.name]=function(...s){let l=n.renderer.apply(this,s);return l===!1&&(l=a.apply(this,s)),l}:t.renderers[n.name]=n.renderer}if("tokenizer"in n){if(!n.level||n.level!=="block"&&n.level!=="inline")throw new Error("extension level must be 'block' or 'inline'");let a=t[n.level];a?a.unshift(n.tokenizer):t[n.level]=[n.tokenizer],n.start&&(n.level==="block"?t.startBlock?t.startBlock.push(n.start):t.startBlock=[n.start]:n.level==="inline"&&(t.startInline?t.startInline.push(n.start):t.startInline=[n.start]))}"childTokens"in n&&n.childTokens&&(t.childTokens[n.name]=n.childTokens)}),i.extensions=t),r.renderer){let n=this.defaults.renderer||new k4(this.defaults);for(let a in r.renderer){if(!(a in n))throw new Error(`renderer '${a}' does not exist`);if(["options","parser"].includes(a))continue;let s=a,l=r.renderer[s],u=n[s];n[s]=(...h)=>{let d=l.apply(n,h);return d===!1&&(d=u.apply(n,h)),d||""}}i.renderer=n}if(r.tokenizer){let n=this.defaults.tokenizer||new C4(this.defaults);for(let a in r.tokenizer){if(!(a in n))throw new Error(`tokenizer '${a}' does not exist`);if(["options","rules","lexer"].includes(a))continue;let s=a,l=r.tokenizer[s],u=n[s];n[s]=(...h)=>{let d=l.apply(n,h);return d===!1&&(d=u.apply(n,h)),d}}i.tokenizer=n}if(r.hooks){let n=this.defaults.hooks||new Hx;for(let a in r.hooks){if(!(a in n))throw new Error(`hook '${a}' does not exist`);if(["options","block"].includes(a))continue;let s=a,l=r.hooks[s],u=n[s];Hx.passThroughHooks.has(a)?n[s]=h=>{if(this.defaults.async&&Hx.passThroughHooksRespectAsync.has(a))return Promise.resolve(l.call(n,h)).then(f=>u.call(n,f));let d=l.call(n,h);return u.call(n,d)}:n[s]=(...h)=>{let d=l.apply(n,h);return d===!1&&(d=u.apply(n,h)),d}}i.hooks=n}if(r.walkTokens){let n=this.defaults.walkTokens,a=r.walkTokens;i.walkTokens=function(s){let l=[];return l.push(a.call(this,s)),n&&(l=l.concat(n.call(this,s))),l}}this.defaults={...this.defaults,...i}}),this}setOptions(e){return this.defaults={...this.defaults,...e},this}lexer(e,t){return Pu.lex(e,t??this.defaults)}parser(e,t){return Bu.parse(e,t??this.defaults)}parseMarkdown(e){return(t,r)=>{let i={...r},n={...this.defaults,...i},a=this.onError(!!n.silent,!!n.async);if(this.defaults.async===!0&&i.async===!1)return a(new Error("marked(): The async option was set to true by an extension. Remove async: false from the parse options object to return a Promise."));if(typeof t>"u"||t===null)return a(new Error("marked(): input parameter is undefined or null"));if(typeof t!="string")return a(new Error("marked(): input parameter is of type "+Object.prototype.toString.call(t)+", string expected"));n.hooks&&(n.hooks.options=n,n.hooks.block=e);let s=n.hooks?n.hooks.provideLexer():e?Pu.lex:Pu.lexInline,l=n.hooks?n.hooks.provideParser():e?Bu.parse:Bu.parseInline;if(n.async)return Promise.resolve(n.hooks?n.hooks.preprocess(t):t).then(u=>s(u,n)).then(u=>n.hooks?n.hooks.processAllTokens(u):u).then(u=>n.walkTokens?Promise.all(this.walkTokens(u,n.walkTokens)).then(()=>u):u).then(u=>l(u,n)).then(u=>n.hooks?n.hooks.postprocess(u):u).catch(a);try{n.hooks&&(t=n.hooks.preprocess(t));let u=s(t,n);n.hooks&&(u=n.hooks.processAllTokens(u)),n.walkTokens&&this.walkTokens(u,n.walkTokens);let h=l(u,n);return n.hooks&&(h=n.hooks.postprocess(h)),h}catch(u){return a(u)}}}onError(e,t){return r=>{if(r.message+=`
-Please report this to https://github.com/markedjs/marked.`,e){let i="<p>An error occurred:</p><pre>"+Cc(r.message+"",!0)+"</pre>";return t?Promise.resolve(i):i}if(t)return Promise.reject(r);throw r}}},wp=new QWe;o(ni,"d");ni.options=ni.setOptions=function(e){return wp.setOptions(e),ni.defaults=wp.defaults,nre(ni.defaults),ni};ni.getDefaults=ZM;ni.defaults=Sp;ni.use=function(...e){return wp.use(...e),ni.defaults=wp.defaults,nre(ni.defaults),ni};ni.walkTokens=function(e,t){return wp.walkTokens(e,t)};ni.parseInline=wp.parseInline;ni.Parser=Bu;ni.parser=Bu.parse;ni.Renderer=k4;ni.TextRenderer=aN;ni.Lexer=Pu;ni.lexer=Pu.lex;ni.Tokenizer=C4;ni.Hooks=Hx;ni.parse=ni;kYt=ni.options,wYt=ni.setOptions,SYt=ni.use,EYt=ni.walkTokens,AYt=ni.parseInline,_Yt=Bu.parse,DYt=Pu.lex});function JWe(e,{markdownAutoWrap:t}){let i=e.replace(/<br\/>/g,`
+`}strong({tokens:e}){return`<strong>${this.parser.parseInline(e)}</strong>`}em({tokens:e}){return`<em>${this.parser.parseInline(e)}</em>`}codespan({text:e}){return`<code>${ru(e,!0)}</code>`}br(e){return"<br>"}del({tokens:e}){return`<del>${this.parser.parseInline(e)}</del>`}link({href:e,title:t,tokens:r}){let n=this.parser.parseInline(r),i=lse(e);if(i===null)return n;e=i;let a='<a href="'+e+'"';return t&&(a+=' title="'+ru(t)+'"'),a+=">"+n+"</a>",a}image({href:e,title:t,text:r,tokens:n}){n&&(r=this.parser.parseInline(n,this.parser.textRenderer));let i=lse(e);if(i===null)return ru(r);e=i;let a=`<img src="${e}" alt="${r}"`;return t&&(a+=` title="${ru(t)}"`),a+=">",a}text(e){return"tokens"in e&&e.tokens?this.parser.parseInline(e.tokens):"escaped"in e&&e.escaped?e.text:ru(e.text)}},GP=class{static{o(this,"$")}strong({text:e}){return e}em({text:e}){return e}codespan({text:e}){return e}del({text:e}){return e}html({text:e}){return e}text({text:e}){return e}link({text:e}){return""+e}image({text:e}){return""+e}br(){return""}},Th=class IP{static{o(this,"l")}options;renderer;textRenderer;constructor(t){this.options=t||Tm,this.options.renderer=this.options.renderer||new w4,this.renderer=this.options.renderer,this.renderer.options=this.options,this.renderer.parser=this,this.textRenderer=new GP}static parse(t,r){return new IP(r).parse(t)}static parseInline(t,r){return new IP(r).parseInline(t)}parse(t,r=!0){let n="";for(let i=0;i<t.length;i++){let a=t[i];if(this.options.extensions?.renderers?.[a.type]){let l=a,u=this.options.extensions.renderers[l.type].call({parser:this},l);if(u!==!1||!["space","hr","heading","code","table","blockquote","list","html","def","paragraph","text"].includes(l.type)){n+=u||"";continue}}let s=a;switch(s.type){case"space":{n+=this.renderer.space(s);continue}case"hr":{n+=this.renderer.hr(s);continue}case"heading":{n+=this.renderer.heading(s);continue}case"code":{n+=this.renderer.code(s);continue}case"table":{n+=this.renderer.table(s);continue}case"blockquote":{n+=this.renderer.blockquote(s);continue}case"list":{n+=this.renderer.list(s);continue}case"html":{n+=this.renderer.html(s);continue}case"def":{n+=this.renderer.def(s);continue}case"paragraph":{n+=this.renderer.paragraph(s);continue}case"text":{let l=s,u=this.renderer.text(l);for(;i+1<t.length&&t[i+1].type==="text";)l=t[++i],u+=`
+`+this.renderer.text(l);r?n+=this.renderer.paragraph({type:"paragraph",raw:u,text:u,tokens:[{type:"text",raw:u,text:u,escaped:!0}]}):n+=u;continue}default:{let l='Token with "'+s.type+'" type was not found.';if(this.options.silent)return console.error(l),"";throw new Error(l)}}}return n}parseInline(t,r=this.renderer){let n="";for(let i=0;i<t.length;i++){let a=t[i];if(this.options.extensions?.renderers?.[a.type]){let l=this.options.extensions.renderers[a.type].call({parser:this},a);if(l!==!1||!["escape","html","link","image","strong","em","codespan","br","del","text"].includes(a.type)){n+=l||"";continue}}let s=a;switch(s.type){case"escape":{n+=r.text(s);break}case"html":{n+=r.html(s);break}case"link":{n+=r.link(s);break}case"image":{n+=r.image(s);break}case"strong":{n+=r.strong(s);break}case"em":{n+=r.em(s);break}case"codespan":{n+=r.codespan(s);break}case"br":{n+=r.br(s);break}case"del":{n+=r.del(s);break}case"text":{n+=r.text(s);break}default:{let l='Token with "'+s.type+'" type was not found.';if(this.options.silent)return console.error(l),"";throw new Error(l)}}}return n}},L2=class{static{o(this,"S")}options;block;constructor(e){this.options=e||Tm}static passThroughHooks=new Set(["preprocess","postprocess","processAllTokens","emStrongMask"]);static passThroughHooksRespectAsync=new Set(["preprocess","postprocess","processAllTokens"]);preprocess(e){return e}postprocess(e){return e}processAllTokens(e){return e}emStrongMask(e){return e}provideLexer(){return this.block?bh.lex:bh.lexInline}provideParser(){return this.block?Th.parse:Th.parseInline}},VZe=class{static{o(this,"B")}defaults=MP();options=this.setOptions;parse=this.parseMarkdown(!0);parseInline=this.parseMarkdown(!1);Parser=Th;Renderer=w4;TextRenderer=GP;Lexer=bh;Tokenizer=C4;Hooks=L2;constructor(...e){this.use(...e)}walkTokens(e,t){let r=[];for(let n of e)switch(r=r.concat(t.call(this,n)),n.type){case"table":{let i=n;for(let a of i.header)r=r.concat(this.walkTokens(a.tokens,t));for(let a of i.rows)for(let s of a)r=r.concat(this.walkTokens(s.tokens,t));break}case"list":{let i=n;r=r.concat(this.walkTokens(i.items,t));break}default:{let i=n;this.defaults.extensions?.childTokens?.[i.type]?this.defaults.extensions.childTokens[i.type].forEach(a=>{let s=i[a].flat(1/0);r=r.concat(this.walkTokens(s,t))}):i.tokens&&(r=r.concat(this.walkTokens(i.tokens,t)))}}return r}use(...e){let t=this.defaults.extensions||{renderers:{},childTokens:{}};return e.forEach(r=>{let n={...r};if(n.async=this.defaults.async||n.async||!1,r.extensions&&(r.extensions.forEach(i=>{if(!i.name)throw new Error("extension name required");if("renderer"in i){let a=t.renderers[i.name];a?t.renderers[i.name]=function(...s){let l=i.renderer.apply(this,s);return l===!1&&(l=a.apply(this,s)),l}:t.renderers[i.name]=i.renderer}if("tokenizer"in i){if(!i.level||i.level!=="block"&&i.level!=="inline")throw new Error("extension level must be 'block' or 'inline'");let a=t[i.level];a?a.unshift(i.tokenizer):t[i.level]=[i.tokenizer],i.start&&(i.level==="block"?t.startBlock?t.startBlock.push(i.start):t.startBlock=[i.start]:i.level==="inline"&&(t.startInline?t.startInline.push(i.start):t.startInline=[i.start]))}"childTokens"in i&&i.childTokens&&(t.childTokens[i.name]=i.childTokens)}),n.extensions=t),r.renderer){let i=this.defaults.renderer||new w4(this.defaults);for(let a in r.renderer){if(!(a in i))throw new Error(`renderer '${a}' does not exist`);if(["options","parser"].includes(a))continue;let s=a,l=r.renderer[s],u=i[s];i[s]=(...h)=>{let d=l.apply(i,h);return d===!1&&(d=u.apply(i,h)),d||""}}n.renderer=i}if(r.tokenizer){let i=this.defaults.tokenizer||new C4(this.defaults);for(let a in r.tokenizer){if(!(a in i))throw new Error(`tokenizer '${a}' does not exist`);if(["options","rules","lexer"].includes(a))continue;let s=a,l=r.tokenizer[s],u=i[s];i[s]=(...h)=>{let d=l.apply(i,h);return d===!1&&(d=u.apply(i,h)),d}}n.tokenizer=i}if(r.hooks){let i=this.defaults.hooks||new L2;for(let a in r.hooks){if(!(a in i))throw new Error(`hook '${a}' does not exist`);if(["options","block"].includes(a))continue;let s=a,l=r.hooks[s],u=i[s];L2.passThroughHooks.has(a)?i[s]=h=>{if(this.defaults.async&&L2.passThroughHooksRespectAsync.has(a))return Promise.resolve(l.call(i,h)).then(f=>u.call(i,f));let d=l.call(i,h);return u.call(i,d)}:i[s]=(...h)=>{let d=l.apply(i,h);return d===!1&&(d=u.apply(i,h)),d}}n.hooks=i}if(r.walkTokens){let i=this.defaults.walkTokens,a=r.walkTokens;n.walkTokens=function(s){let l=[];return l.push(a.call(this,s)),i&&(l=l.concat(i.call(this,s))),l}}this.defaults={...this.defaults,...n}}),this}setOptions(e){return this.defaults={...this.defaults,...e},this}lexer(e,t){return bh.lex(e,t??this.defaults)}parser(e,t){return Th.parse(e,t??this.defaults)}parseMarkdown(e){return(t,r)=>{let n={...r},i={...this.defaults,...n},a=this.onError(!!i.silent,!!i.async);if(this.defaults.async===!0&&n.async===!1)return a(new Error("marked(): The async option was set to true by an extension. Remove async: false from the parse options object to return a Promise."));if(typeof t>"u"||t===null)return a(new Error("marked(): input parameter is undefined or null"));if(typeof t!="string")return a(new Error("marked(): input parameter is of type "+Object.prototype.toString.call(t)+", string expected"));i.hooks&&(i.hooks.options=i,i.hooks.block=e);let s=i.hooks?i.hooks.provideLexer():e?bh.lex:bh.lexInline,l=i.hooks?i.hooks.provideParser():e?Th.parse:Th.parseInline;if(i.async)return Promise.resolve(i.hooks?i.hooks.preprocess(t):t).then(u=>s(u,i)).then(u=>i.hooks?i.hooks.processAllTokens(u):u).then(u=>i.walkTokens?Promise.all(this.walkTokens(u,i.walkTokens)).then(()=>u):u).then(u=>l(u,i)).then(u=>i.hooks?i.hooks.postprocess(u):u).catch(a);try{i.hooks&&(t=i.hooks.preprocess(t));let u=s(t,i);i.hooks&&(u=i.hooks.processAllTokens(u)),i.walkTokens&&this.walkTokens(u,i.walkTokens);let h=l(u,i);return i.hooks&&(h=i.hooks.postprocess(h)),h}catch(u){return a(u)}}}onError(e,t){return r=>{if(r.message+=`
+Please report this to https://github.com/markedjs/marked.`,e){let n="<p>An error occurred:</p><pre>"+ru(r.message+"",!0)+"</pre>";return t?Promise.resolve(n):n}if(t)return Promise.reject(r);throw r}}},bm=new VZe;o(Sn,"d");Sn.options=Sn.setOptions=function(e){return bm.setOptions(e),Sn.defaults=bm.defaults,hse(Sn.defaults),Sn};Sn.getDefaults=MP;Sn.defaults=Tm;Sn.use=function(...e){return bm.use(...e),Sn.defaults=bm.defaults,hse(Sn.defaults),Sn};Sn.walkTokens=function(e,t){return bm.walkTokens(e,t)};Sn.parseInline=bm.parseInline;Sn.Parser=Th;Sn.parser=Th.parse;Sn.Renderer=w4;Sn.TextRenderer=GP;Sn.Lexer=bh;Sn.lexer=bh.lex;Sn.Tokenizer=C4;Sn.Hooks=L2;Sn.parse=Sn;yir=Sn.options,vir=Sn.setOptions,xir=Sn.use,bir=Sn.walkTokens,Tir=Sn.parseInline,Cir=Th.parse,wir=bh.lex});function WZe(e,{markdownAutoWrap:t}){let n=e.replace(/<br\/>/g,`
 `).replace(/\n{2,}/g,`
-`);return fk(i)}function gre(e){return e.split(/\\n|\n|<br\s*\/?>/gi).map(t=>t.trim().match(/<[^>]+>|[^\s<>]+/g)?.map(r=>({content:r,type:"normal"}))??[])}function yre(e,t={}){let r=JWe(e,t),i=ni.lexer(r),n=[[]],a=0;function s(l,u="normal"){l.type==="text"?l.text.split(`
-`).forEach((d,f)=>{f!==0&&(a++,n.push([])),d.split(" ").forEach(p=>{p=p.replace(/&#39;/g,"'"),p&&n[a].push({content:p,type:u})})}):l.type==="strong"||l.type==="em"?l.tokens.forEach(h=>{s(h,l.type)}):l.type==="html"&&n[a].push({content:l.text,type:"normal"})}return o(s,"processNode"),i.forEach(l=>{l.type==="paragraph"?l.tokens?.forEach(u=>{s(u)}):l.type==="html"?n[a].push({content:l.text,type:"normal"}):n[a].push({content:l.raw,type:"normal"})}),n}function vre(e){return e?`<p>${e.replace(/\\n|\n/g,"<br />")}</p>`:""}function xre(e,{markdownAutoWrap:t}={}){let r=ni.lexer(e);function i(n){return n.type==="text"?t===!1?n.text.replace(/\n */g,"<br/>").replace(/ /g,"&nbsp;"):n.text.replace(/\n */g,"<br/>"):n.type==="strong"?`<strong>${n.tokens?.map(i).join("")}</strong>`:n.type==="em"?`<em>${n.tokens?.map(i).join("")}</em>`:n.type==="paragraph"?`<p>${n.tokens?.map(i).join("")}</p>`:n.type==="space"?"":n.type==="html"?`${n.text}`:n.type==="escape"?n.text:(Z.warn(`Unsupported markdown: ${n.type}`),n.raw)}return o(i,"output"),r.map(i).join("")}var bre=z(()=>{"use strict";mre();RD();St();o(JWe,"preprocessMarkdown");o(gre,"nonMarkdownToLines");o(yre,"markdownToLines");o(vre,"nonMarkdownToHTML");o(xre,"markdownToHTML")});function eqe(e){return Intl.Segmenter?[...new Intl.Segmenter().segment(e)].map(t=>t.segment):[...e]}function tqe(e,t){let r=eqe(t.content);return Tre(e,[],r,t.type)}function Tre(e,t,r,i){if(r.length===0)return[{content:t.join(""),type:i},{content:"",type:i}];let[n,...a]=r,s=[...t,n];return e([{content:s.join(""),type:i}])?Tre(e,s,a,i):(t.length===0&&n&&(t.push(n),r.shift()),[{content:t.join(""),type:i},{content:r.join(""),type:i}])}function Cre(e,t){if(e.some(({content:r})=>r.includes(`
-`)))throw new Error("splitLineToFitWidth does not support newlines in the line");return sN(e,t)}function sN(e,t,r=[],i=[]){if(e.length===0)return i.length>0&&r.push(i),r.length>0?r:[];let n="";e[0].content===" "&&(n=" ",e.shift());let a=e.shift()??{content:" ",type:"normal"},s=[...i];if(n!==""&&s.push({content:n,type:"normal"}),s.push(a),t(s))return sN(e,t,r,s);if(i.length>0)r.push(i),e.unshift(a);else if(a.content){let[l,u]=tqe(t,a);r.push([l]),u.content&&e.unshift(u)}return sN(e,t,r)}var kre=z(()=>{"use strict";o(eqe,"splitTextToChars");o(tqe,"splitWordToFitWidth");o(Tre,"splitWordToFitWidthRecursion");o(Cre,"splitLineToFitWidth");o(sN,"splitLineToFitWidthRecursion")});function wre(e,t){t&&e.attr("style",t)}async function rqe(e,t,r,i,n=!1,a=Nt()){let s=e.append("foreignObject");s.attr("width",`${Math.min(10*r,Sre)}px`),s.attr("height",`${Math.min(10*r,Sre)}px`);let l=s.append("xhtml:div"),u=Bi(t.label)?await Fm(t.label.replace(vt.lineBreakRegex,`
-`),a):fr(t.label,a),h=t.isNode?"nodeLabel":"edgeLabel",d=l.append("span");d.html(u),wre(d,t.labelStyle),d.attr("class",`${h} ${i}`),wre(l,t.labelStyle),l.style("display","table-cell"),l.style("white-space","nowrap"),l.style("line-height","1.5"),r!==Number.POSITIVE_INFINITY&&(l.style("max-width",r+"px"),l.style("text-align","center")),l.attr("xmlns","http://www.w3.org/1999/xhtml"),n&&l.attr("class","labelBkg");let f=l.node().getBoundingClientRect();return f.width===r&&(l.style("display","table"),l.style("white-space","break-spaces"),l.style("width",r+"px"),f=l.node().getBoundingClientRect()),s.node()}function oN(e,t,r,i=!1){let n=e.append("tspan").attr("class","text-outer-tspan").attr("x",0).attr("y",t*r-.1+"em").attr("dy",r+"em");return i&&n.attr("text-anchor","middle"),n}function iqe(e,t,r){let i=e.append("text"),n=oN(i,1,t);lN(n,r);let a=n.node().getComputedTextLength();return i.remove(),a}function Are(e,t,r){let i=e.append("text"),n=oN(i,1,t);lN(n,[{content:r,type:"normal"}]);let a=n.node()?.getBoundingClientRect();return a&&i.remove(),a}function nqe(e,t,r,i=!1,n=!1){let s=t.append("g"),l=s.insert("rect").attr("class","background").attr("style","stroke: none"),u=s.append("text").attr("y","-10.1");n&&u.attr("text-anchor","middle");let h=0;for(let d of r){let f=o(m=>iqe(s,1.1,m)<=e,"checkWidth"),p=f(d)?[d]:Cre(d,f);for(let m of p){let g=oN(u,h,1.1,n);lN(g,m),h++}}if(i){let d=u.node().getBBox(),f=2;return l.attr("x",d.x-f).attr("y",d.y-f).attr("width",d.width+2*f).attr("height",d.height+2*f),s.node()}else return u.node()}function Ere(e){let t=/&(amp|lt|gt);/g;return e.replace(t,(r,i)=>{switch(i){case"amp":return"&";case"lt":return"<";case"gt":return">";default:return r}})}function lN(e,t){e.text(""),t.forEach((r,i)=>{let n=e.append("tspan").attr("font-style",r.type==="em"?"italic":"normal").attr("class","text-inner-tspan").attr("font-weight",r.type==="strong"?"bold":"normal");i===0?n.text(Ere(r.content)):n.text(" "+Ere(r.content))})}async function aqe(e,t={}){let r=[];e.replace(/(fa[bklrs]?):fa-([\w-]+)/g,(n,a,s)=>(r.push((async()=>{let l=`${a}:${s}`;return await Zj(l)?await ks(l,void 0,{class:"label-icon"}):`<i class='${fr(n,t).replace(":"," ")}'></i>`})()),n));let i=await Promise.all(r);return e.replace(/(fa[bklrs]?):fa-([\w-]+)/g,()=>i.shift()??"")}var Sre,wi,_s=z(()=>{"use strict";Rr();Ir();St();bre();Xt();uc();kre();br();o(wre,"applyStyle");Sre=16384;o(rqe,"addHtmlSpan");o(oN,"createTspan");o(iqe,"computeWidthOfText");o(Are,"computeDimensionOfText");o(nqe,"createFormattedText");o(Ere,"decodeHTMLEntities");o(lN,"updateTextContentAndStyles");o(aqe,"replaceIconSubstring");wi=o(async(e,t="",{style:r="",isTitle:i=!1,classes:n="",useHtmlLabels:a=!0,markdown:s=!0,isNode:l=!0,width:u=200,addSvgBackground:h=!1}={},d)=>{if(Z.debug("XYZ createText",t,r,i,n,a,l,"addSvgBackground: ",h),a){let f=s?xre(t,d):vre(t),p=await aqe(Qa(f),d),m=t.replace(/\\\\/g,"\\"),g={isNode:l,label:Bi(t)?m:p,labelStyle:r.replace("fill:","color:")};return await rqe(e,g,u,n,h,d)}else{let f=Qa(t.replace(/<br\s*\/?>/g,"<br/>")),p=s?yre(f.replace("<br>","<br/>"),d):gre(f),m=nqe(u,e,p,t?h:!1,!l);if(l){/stroke:/.exec(r)&&(r=r.replace("stroke:","lineColor:"));let g=r.replace(/stroke:[^;]+;?/g,"").replace(/stroke-width:[^;]+;?/g,"").replace(/fill:[^;]+;?/g,"").replace(/color:/g,"fill:");Je(m).attr("style",g)}else{let g=r.replace(/stroke:[^;]+;?/g,"").replace(/stroke-width:[^;]+;?/g,"").replace(/fill:[^;]+;?/g,"").replace(/background:/g,"fill:");Je(m).select("rect").attr("style",g.replace(/background:/g,"fill:"));let y=r.replace(/stroke:[^;]+;?/g,"").replace(/stroke-width:[^;]+;?/g,"").replace(/fill:[^;]+;?/g,"").replace(/color:/g,"fill:");Je(m).select("text").attr("style",y)}return i?Je(m).selectAll("tspan.text-outer-tspan").classed("title-row",!0):Je(m).selectAll("tspan.text-outer-tspan").classed("row",!0),m}},"createText")});async function E4(e,t){let r=e.getElementsByTagName("img");if(!r||r.length===0)return;let i=t.replace(/<img[^>]*>/g,"").trim()==="";await Promise.all([...r].map(n=>new Promise(a=>{function s(){if(n.style.display="flex",n.style.flexDirection="column",i){let l=ge().fontSize?ge().fontSize:window.getComputedStyle(document.body).fontSize,u=5,[h=or.fontSize]=Za(l),d=h*u+"px";n.style.minWidth=d,n.style.maxWidth=d}else n.style.width="100%";a(n)}o(s,"setupImage"),setTimeout(()=>{n.complete&&s()}),n.addEventListener("error",s),n.addEventListener("load",s)})))}var cN=z(()=>{"use strict";Ut();Bn();Xt();o(E4,"configureLabelImages")});function tr(e){let t=e.map((r,i)=>`${i===0?"M":"L"}${r.x},${r.y}`);return t.push("Z"),t.join(" ")}function Bo(e,t,r,i,n,a){let s=[],u=r-e,h=i-t,d=u/a,f=2*Math.PI/d,p=t+h/2;for(let m=0;m<=50;m++){let g=m/50,y=e+g*u,v=p+n*Math.sin(f*(y-e));s.push({x:y,y:v})}return s}function Ep(e,t,r,i,n,a){let s=[],l=n*Math.PI/180,d=(a*Math.PI/180-l)/(i-1);for(let f=0;f<i;f++){let p=l+f*d,m=e+r*Math.cos(p),g=t+r*Math.sin(p);s.push({x:-m,y:-g})}return s}function uN(e){let t=Array.from(e.childNodes).filter(u=>u.tagName==="path"),r=document.createElementNS("http://www.w3.org/2000/svg","path"),i=t.map(u=>u.getAttribute("d")).filter(u=>u!==null).join(" ");r.setAttribute("d",i);let n=t.find(u=>u.getAttribute("fill")!=="none"),a=t.find(u=>u.getAttribute("stroke")!=="none"),s=o((u,h)=>u?.getAttribute(h)??void 0,"getAttr");if(n){let u={fill:s(n,"fill"),"fill-opacity":s(n,"fill-opacity")??"1"};Object.entries(u).forEach(([h,d])=>{d&&r.setAttribute(h,d)})}if(a){let u={stroke:s(a,"stroke"),"stroke-width":s(a,"stroke-width")??"1","stroke-opacity":s(a,"stroke-opacity")??"1"};Object.entries(u).forEach(([h,d])=>{d&&r.setAttribute(h,d)})}let l=document.createElementNS("http://www.w3.org/2000/svg","g");return l.appendChild(r),l}var At,A4,ft,Ct,Wt=z(()=>{"use strict";_s();Ut();br();Rr();Ir();Xt();cN();At=o(async(e,t,r)=>{let i,n=t.useHtmlLabels||Aa(ge()?.htmlLabels);r?i=r:i="node default";let a=e.insert("g").attr("class",i).attr("id",t.domId||t.id),s=a.insert("g").attr("class","label").attr("style",ii(t.labelStyle)),l;t.label===void 0?l="":l=typeof t.label=="string"?t.label:t.label[0];let u=!!t.icon||!!t.img,h=t.labelType==="markdown",d=await wi(s,fr(Qa(l),ge()),{useHtmlLabels:n,width:t.width||ge().flowchart?.wrappingWidth,classes:h?"markdown-node-label":"",style:t.labelStyle,addSvgBackground:u,markdown:h},ge()),f=d.getBBox(),p=(t?.padding??0)/2;if(n){let m=d.children[0],g=Je(d);await E4(m,l),f=m.getBoundingClientRect(),g.attr("width",f.width),g.attr("height",f.height)}return n?s.attr("transform","translate("+-f.width/2+", "+-f.height/2+")"):s.attr("transform","translate(0, "+-f.height/2+")"),t.centerLabel&&s.attr("transform","translate("+-f.width/2+", "+-f.height/2+")"),s.insert("rect",":first-child"),{shapeSvg:a,bbox:f,halfPadding:p,label:s}},"labelHelper"),A4=o(async(e,t,r)=>{let i=r.useHtmlLabels??Mr(ge()),n=e.insert("g").attr("class","label").attr("style",r.labelStyle||""),a=await wi(n,fr(Qa(t),ge()),{useHtmlLabels:i,width:r.width||ge()?.flowchart?.wrappingWidth,style:r.labelStyle,addSvgBackground:!!r.icon||!!r.img}),s=a.getBBox(),l=r.padding/2;if(Mr(ge())){let u=a.children[0],h=Je(a);s=u.getBoundingClientRect(),h.attr("width",s.width),h.attr("height",s.height)}return i?n.attr("transform","translate("+-s.width/2+", "+-s.height/2+")"):n.attr("transform","translate(0, "+-s.height/2+")"),r.centerLabel&&n.attr("transform","translate("+-s.width/2+", "+-s.height/2+")"),n.insert("rect",":first-child"),{shapeSvg:e,bbox:s,halfPadding:l,label:n}},"insertLabel"),ft=o((e,t)=>{let r=t.node().getBBox();e.width=r.width,e.height=r.height},"updateNodeBounds"),Ct=o((e,t)=>(e.look==="handDrawn"?"rough-node":"node")+" "+e.cssClasses+" "+(t||""),"getNodeClasses");o(tr,"createPathFromPoints");o(Bo,"generateFullSineWavePoints");o(Ep,"generateCirclePoints");o(uN,"mergePaths")});function sqe(e,t){return e.intersect(t)}var _re,Dre=z(()=>{"use strict";o(sqe,"intersectNode");_re=sqe});function oqe(e,t,r,i){var n=e.x,a=e.y,s=n-i.x,l=a-i.y,u=Math.sqrt(t*t*l*l+r*r*s*s),h=Math.abs(t*r*s/u);i.x<n&&(h=-h);var d=Math.abs(t*r*l/u);return i.y<a&&(d=-d),{x:n+h,y:a+d}}var _4,hN=z(()=>{"use strict";o(oqe,"intersectEllipse");_4=oqe});function lqe(e,t,r){return _4(e,t,t,r)}var Rre,Lre=z(()=>{"use strict";hN();o(lqe,"intersectCircle");Rre=lqe});function cqe(e,t,r,i){{let n=t.y-e.y,a=e.x-t.x,s=t.x*e.y-e.x*t.y,l=n*r.x+a*r.y+s,u=n*i.x+a*i.y+s,h=1e-6;if(l!==0&&u!==0&&Mre(l,u))return;let d=i.y-r.y,f=r.x-i.x,p=i.x*r.y-r.x*i.y,m=d*e.x+f*e.y+p,g=d*t.x+f*t.y+p;if(Math.abs(m)<h&&Math.abs(g)<h&&Mre(m,g))return;let y=n*f-d*a;if(y===0)return;let v=Math.abs(y/2),x=a*p-f*s,b=x<0?(x-v)/y:(x+v)/y;x=d*s-n*p;let T=x<0?(x-v)/y:(x+v)/y;return{x:b,y:T}}}function Mre(e,t){return e*t>0}var Nre,Ire=z(()=>{"use strict";o(cqe,"intersectLine");o(Mre,"sameSign");Nre=cqe});function uqe(e,t,r){let i=e.x,n=e.y,a=[],s=Number.POSITIVE_INFINITY,l=Number.POSITIVE_INFINITY;typeof t.forEach=="function"?t.forEach(function(d){s=Math.min(s,d.x),l=Math.min(l,d.y)}):(s=Math.min(s,t.x),l=Math.min(l,t.y));let u=i-e.width/2-s,h=n-e.height/2-l;for(let d=0;d<t.length;d++){let f=t[d],p=t[d<t.length-1?d+1:0],m=Nre(e,r,{x:u+f.x,y:h+f.y},{x:u+p.x,y:h+p.y});m&&a.push(m)}return a.length?(a.length>1&&a.sort(function(d,f){let p=d.x-r.x,m=d.y-r.y,g=Math.sqrt(p*p+m*m),y=f.x-r.x,v=f.y-r.y,x=Math.sqrt(y*y+v*v);return g<x?-1:g===x?0:1}),a[0]):e}var Ore,Pre=z(()=>{"use strict";Ire();o(uqe,"intersectPolygon");Ore=uqe});var hqe,cd,dN=z(()=>{"use strict";hqe=o((e,t)=>{var r=e.x,i=e.y,n=t.x-r,a=t.y-i,s=e.width/2,l=e.height/2,u,h;return Math.abs(a)*s>Math.abs(n)*l?(a<0&&(l=-l),u=a===0?0:l*n/a,h=l):(n<0&&(s=-s),u=s,h=n===0?0:s*a/n),{x:r+u,y:i+h}},"intersectRect"),cd=hqe});var lt,Kt=z(()=>{"use strict";Dre();Lre();hN();Pre();dN();lt={node:_re,circle:Rre,ellipse:_4,polygon:Ore,rect:cd}});var Bre,kc,dqe,Xx,ct,mt,fqe,Ht=z(()=>{"use strict";Ut();Bre=o(e=>{let{handDrawnSeed:t}=ge();return{fill:e,hachureAngle:120,hachureGap:4,fillWeight:2,roughness:.7,stroke:e,seed:t}},"solidStateFill"),kc=o(e=>{let t=dqe([...e.cssCompiledStyles||[],...e.cssStyles||[],...e.labelStyle||[]]);return{stylesMap:t,stylesArray:[...t]}},"compileStyles"),dqe=o(e=>{let t=new Map;return e.forEach(r=>{let[i,n]=r.split(":");t.set(i.trim(),n?.trim())}),t},"styles2Map"),Xx=o(e=>e==="color"||e==="font-size"||e==="font-family"||e==="font-weight"||e==="font-style"||e==="text-decoration"||e==="text-align"||e==="text-transform"||e==="line-height"||e==="letter-spacing"||e==="word-spacing"||e==="text-shadow"||e==="text-overflow"||e==="white-space"||e==="word-wrap"||e==="word-break"||e==="overflow-wrap"||e==="hyphens","isLabelStyle"),ct=o(e=>{let{stylesArray:t}=kc(e),r=[],i=[],n=[],a=[];return t.forEach(s=>{let l=s[0];Xx(l)?r.push(s.join(":")+" !important"):(i.push(s.join(":")+" !important"),l.includes("stroke")&&n.push(s.join(":")+" !important"),l==="fill"&&a.push(s.join(":")+" !important"))}),{labelStyles:r.join(";"),nodeStyles:i.join(";"),stylesArray:t,borderStyles:n,backgroundStyles:a}},"styles2String"),mt=o((e,t)=>{let{themeVariables:r,handDrawnSeed:i}=ge(),{nodeBorder:n,mainBkg:a}=r,{stylesMap:s}=kc(e);return Object.assign({roughness:.7,fill:s.get("fill")||a,fillStyle:"hachure",fillWeight:4,hachureGap:5.2,stroke:s.get("stroke")||n,seed:i,strokeWidth:s.get("stroke-width")?.replace("px","")||1.3,fillLineDash:[0,0],strokeLineDash:fqe(s.get("stroke-dasharray"))},t)},"userNodeOverrides"),fqe=o(e=>{if(!e)return[0,0];let t=e.trim().split(/\s+/).map(Number);if(t.length===1){let n=isNaN(t[0])?0:t[0];return[n,n]}let r=isNaN(t[0])?0:t[0],i=isNaN(t[1])?0:t[1];return[r,i]},"getStrokeDashArray")});function fN(e,t,r){if(e&&e.length){let[i,n]=t,a=Math.PI/180*r,s=Math.cos(a),l=Math.sin(a);for(let u of e){let[h,d]=u;u[0]=(h-i)*s-(d-n)*l+i,u[1]=(h-i)*l+(d-n)*s+n}}}function pqe(e,t){return e[0]===t[0]&&e[1]===t[1]}function mqe(e,t,r,i=1){let n=r,a=Math.max(t,.1),s=e[0]&&e[0][0]&&typeof e[0][0]=="number"?[e]:e,l=[0,0];if(n)for(let h of s)fN(h,l,n);let u=(function(h,d,f){let p=[];for(let b of h){let T=[...b];pqe(T[0],T[T.length-1])||T.push([T[0][0],T[0][1]]),T.length>2&&p.push(T)}let m=[];d=Math.max(d,.1);let g=[];for(let b of p)for(let T=0;T<b.length-1;T++){let w=b[T],C=b[T+1];if(w[1]!==C[1]){let k=Math.min(w[1],C[1]);g.push({ymin:k,ymax:Math.max(w[1],C[1]),x:k===w[1]?w[0]:C[0],islope:(C[0]-w[0])/(C[1]-w[1])})}}if(g.sort(((b,T)=>b.ymin<T.ymin?-1:b.ymin>T.ymin?1:b.x<T.x?-1:b.x>T.x?1:b.ymax===T.ymax?0:(b.ymax-T.ymax)/Math.abs(b.ymax-T.ymax))),!g.length)return m;let y=[],v=g[0].ymin,x=0;for(;y.length||g.length;){if(g.length){let b=-1;for(let T=0;T<g.length&&!(g[T].ymin>v);T++)b=T;g.splice(0,b+1).forEach((T=>{y.push({s:v,edge:T})}))}if(y=y.filter((b=>!(b.edge.ymax<=v))),y.sort(((b,T)=>b.edge.x===T.edge.x?0:(b.edge.x-T.edge.x)/Math.abs(b.edge.x-T.edge.x))),(f!==1||x%d==0)&&y.length>1)for(let b=0;b<y.length;b+=2){let T=b+1;if(T>=y.length)break;let w=y[b].edge,C=y[T].edge;m.push([[Math.round(w.x),v],[Math.round(C.x),v]])}v+=f,y.forEach((b=>{b.edge.x=b.edge.x+f*b.edge.islope})),x++}return m})(s,a,i);if(n){for(let h of s)fN(h,l,-n);(function(h,d,f){let p=[];h.forEach((m=>p.push(...m))),fN(p,d,f)})(u,l,-n)}return u}function Jx(e,t){var r;let i=t.hachureAngle+90,n=t.hachureGap;n<0&&(n=4*t.strokeWidth),n=Math.round(Math.max(n,.1));let a=1;return t.roughness>=1&&(((r=t.randomizer)===null||r===void 0?void 0:r.next())||Math.random())>.7&&(a=n),mqe(e,n,i,a||1)}function B4(e){let t=e[0],r=e[1];return Math.sqrt(Math.pow(t[0]-r[0],2)+Math.pow(t[1]-r[1],2))}function mN(e,t){return e.type===t}function DN(e){let t=[],r=(function(s){let l=new Array;for(;s!=="";)if(s.match(/^([ \t\r\n,]+)/))s=s.substr(RegExp.$1.length);else if(s.match(/^([aAcChHlLmMqQsStTvVzZ])/))l[l.length]={type:gqe,text:RegExp.$1},s=s.substr(RegExp.$1.length);else{if(!s.match(/^(([-+]?[0-9]+(\.[0-9]*)?|[-+]?\.[0-9]+)([eE][-+]?[0-9]+)?)/))return[];l[l.length]={type:pN,text:`${parseFloat(RegExp.$1)}`},s=s.substr(RegExp.$1.length)}return l[l.length]={type:Fre,text:""},l})(e),i="BOD",n=0,a=r[n];for(;!mN(a,Fre);){let s=0,l=[];if(i==="BOD"){if(a.text!=="M"&&a.text!=="m")return DN("M0,0"+e);n++,s=D4[a.text],i=a.text}else mN(a,pN)?s=D4[i]:(n++,s=D4[a.text],i=a.text);if(!(n+s<r.length))throw new Error("Path data ended short");for(let u=n;u<n+s;u++){let h=r[u];if(!mN(h,pN))throw new Error("Param not a number: "+i+","+h.text);l[l.length]=+h.text}if(typeof D4[i]!="number")throw new Error("Bad segment: "+i);{let u={key:i,data:l};t.push(u),n+=s,a=r[n],i==="M"&&(i="L"),i==="m"&&(i="l")}}return t}function Hre(e){let t=0,r=0,i=0,n=0,a=[];for(let{key:s,data:l}of e)switch(s){case"M":a.push({key:"M",data:[...l]}),[t,r]=l,[i,n]=l;break;case"m":t+=l[0],r+=l[1],a.push({key:"M",data:[t,r]}),i=t,n=r;break;case"L":a.push({key:"L",data:[...l]}),[t,r]=l;break;case"l":t+=l[0],r+=l[1],a.push({key:"L",data:[t,r]});break;case"C":a.push({key:"C",data:[...l]}),t=l[4],r=l[5];break;case"c":{let u=l.map(((h,d)=>d%2?h+r:h+t));a.push({key:"C",data:u}),t=u[4],r=u[5];break}case"Q":a.push({key:"Q",data:[...l]}),t=l[2],r=l[3];break;case"q":{let u=l.map(((h,d)=>d%2?h+r:h+t));a.push({key:"Q",data:u}),t=u[2],r=u[3];break}case"A":a.push({key:"A",data:[...l]}),t=l[5],r=l[6];break;case"a":t+=l[5],r+=l[6],a.push({key:"A",data:[l[0],l[1],l[2],l[3],l[4],t,r]});break;case"H":a.push({key:"H",data:[...l]}),t=l[0];break;case"h":t+=l[0],a.push({key:"H",data:[t]});break;case"V":a.push({key:"V",data:[...l]}),r=l[0];break;case"v":r+=l[0],a.push({key:"V",data:[r]});break;case"S":a.push({key:"S",data:[...l]}),t=l[2],r=l[3];break;case"s":{let u=l.map(((h,d)=>d%2?h+r:h+t));a.push({key:"S",data:u}),t=u[2],r=u[3];break}case"T":a.push({key:"T",data:[...l]}),t=l[0],r=l[1];break;case"t":t+=l[0],r+=l[1],a.push({key:"T",data:[t,r]});break;case"Z":case"z":a.push({key:"Z",data:[]}),t=i,r=n}return a}function Yre(e){let t=[],r="",i=0,n=0,a=0,s=0,l=0,u=0;for(let{key:h,data:d}of e){switch(h){case"M":t.push({key:"M",data:[...d]}),[i,n]=d,[a,s]=d;break;case"C":t.push({key:"C",data:[...d]}),i=d[4],n=d[5],l=d[2],u=d[3];break;case"L":t.push({key:"L",data:[...d]}),[i,n]=d;break;case"H":i=d[0],t.push({key:"L",data:[i,n]});break;case"V":n=d[0],t.push({key:"L",data:[i,n]});break;case"S":{let f=0,p=0;r==="C"||r==="S"?(f=i+(i-l),p=n+(n-u)):(f=i,p=n),t.push({key:"C",data:[f,p,...d]}),l=d[0],u=d[1],i=d[2],n=d[3];break}case"T":{let[f,p]=d,m=0,g=0;r==="Q"||r==="T"?(m=i+(i-l),g=n+(n-u)):(m=i,g=n);let y=i+2*(m-i)/3,v=n+2*(g-n)/3,x=f+2*(m-f)/3,b=p+2*(g-p)/3;t.push({key:"C",data:[y,v,x,b,f,p]}),l=m,u=g,i=f,n=p;break}case"Q":{let[f,p,m,g]=d,y=i+2*(f-i)/3,v=n+2*(p-n)/3,x=m+2*(f-m)/3,b=g+2*(p-g)/3;t.push({key:"C",data:[y,v,x,b,m,g]}),l=f,u=p,i=m,n=g;break}case"A":{let f=Math.abs(d[0]),p=Math.abs(d[1]),m=d[2],g=d[3],y=d[4],v=d[5],x=d[6];f===0||p===0?(t.push({key:"C",data:[i,n,v,x,v,x]}),i=v,n=x):(i!==v||n!==x)&&(jre(i,n,v,x,f,p,m,g,y).forEach((function(b){t.push({key:"C",data:b})})),i=v,n=x);break}case"Z":t.push({key:"Z",data:[]}),i=a,n=s}r=h}return t}function Kx(e,t,r){return[e*Math.cos(r)-t*Math.sin(r),e*Math.sin(r)+t*Math.cos(r)]}function jre(e,t,r,i,n,a,s,l,u,h){let d=(f=s,Math.PI*f/180);var f;let p=[],m=0,g=0,y=0,v=0;if(h)[m,g,y,v]=h;else{[e,t]=Kx(e,t,-d),[r,i]=Kx(r,i,-d);let _=(e-r)/2,R=(t-i)/2,M=_*_/(n*n)+R*R/(a*a);M>1&&(M=Math.sqrt(M),n*=M,a*=M);let L=n*n,B=a*a,O=L*B-L*R*R-B*_*_,$=L*R*R+B*_*_,G=(l===u?-1:1)*Math.sqrt(Math.abs(O/$));y=G*n*R/a+(e+r)/2,v=G*-a*_/n+(t+i)/2,m=Math.asin(parseFloat(((t-v)/a).toFixed(9))),g=Math.asin(parseFloat(((i-v)/a).toFixed(9))),e<y&&(m=Math.PI-m),r<y&&(g=Math.PI-g),m<0&&(m=2*Math.PI+m),g<0&&(g=2*Math.PI+g),u&&m>g&&(m-=2*Math.PI),!u&&g>m&&(g-=2*Math.PI)}let x=g-m;if(Math.abs(x)>120*Math.PI/180){let _=g,R=r,M=i;g=u&&g>m?m+120*Math.PI/180*1:m+120*Math.PI/180*-1,p=jre(r=y+n*Math.cos(g),i=v+a*Math.sin(g),R,M,n,a,s,0,u,[g,_,y,v])}x=g-m;let b=Math.cos(m),T=Math.sin(m),w=Math.cos(g),C=Math.sin(g),k=Math.tan(x/4),E=4/3*n*k,A=4/3*a*k,N=[e,t],P=[e+E*T,t-A*b],I=[r+E*C,i-A*w],D=[r,i];if(P[0]=2*N[0]-P[0],P[1]=2*N[1]-P[1],h)return[P,I,D].concat(p);{p=[P,I,D].concat(p);let _=[];for(let R=0;R<p.length;R+=3){let M=Kx(p[R][0],p[R][1],d),L=Kx(p[R+1][0],p[R+1][1],d),B=Kx(p[R+2][0],p[R+2][1],d);_.push([M[0],M[1],L[0],L[1],B[0],B[1]])}return _}}function Xre(e,t,r,i,n){return{type:"path",ops:ud(e,t,r,i,n)}}function M4(e,t,r){let i=(e||[]).length;if(i>2){let n=[];for(let a=0;a<i-1;a++)n.push(...ud(e[a][0],e[a][1],e[a+1][0],e[a+1][1],r));return t&&n.push(...ud(e[i-1][0],e[i-1][1],e[0][0],e[0][1],r)),{type:"path",ops:n}}return i===2?Xre(e[0][0],e[0][1],e[1][0],e[1][1],r):{type:"path",ops:[]}}function vqe(e,t,r,i,n){return(function(a,s){return M4(a,!0,s)})([[e,t],[e+r,t],[e+r,t+i],[e,t+i]],n)}function $re(e,t){if(e.length){let r=typeof e[0][0]=="number"?[e]:e,i=R4(r[0],1*(1+.2*t.roughness),t),n=t.disableMultiStroke?[]:R4(r[0],1.5*(1+.22*t.roughness),Vre(t));for(let a=1;a<r.length;a++){let s=r[a];if(s.length){let l=R4(s,1*(1+.2*t.roughness),t),u=t.disableMultiStroke?[]:R4(s,1.5*(1+.22*t.roughness),Vre(t));for(let h of l)h.op!=="move"&&i.push(h);for(let h of u)h.op!=="move"&&n.push(h)}}return{type:"path",ops:i.concat(n)}}return{type:"path",ops:[]}}function Kre(e,t,r){let i=Math.sqrt(2*Math.PI*Math.sqrt((Math.pow(e/2,2)+Math.pow(t/2,2))/2)),n=Math.ceil(Math.max(r.curveStepCount,r.curveStepCount/Math.sqrt(200)*i)),a=2*Math.PI/n,s=Math.abs(e/2),l=Math.abs(t/2),u=1-r.curveFitting;return s+=pr(s*u,r),l+=pr(l*u,r),{increment:a,rx:s,ry:l}}function wN(e,t,r,i){let[n,a]=Wre(i.increment,e,t,i.rx,i.ry,1,i.increment*I4(.1,I4(.4,1,r),r),r),s=O4(n,null,r);if(!r.disableMultiStroke&&r.roughness!==0){let[l]=Wre(i.increment,e,t,i.rx,i.ry,1.5,0,r),u=O4(l,null,r);s=s.concat(u)}return{estimatedPoints:a,opset:{type:"path",ops:s}}}function zre(e,t,r,i,n,a,s,l,u){let h=e,d=t,f=Math.abs(r/2),p=Math.abs(i/2);f+=pr(.01*f,u),p+=pr(.01*p,u);let m=n,g=a;for(;m<0;)m+=2*Math.PI,g+=2*Math.PI;g-m>2*Math.PI&&(m=0,g=2*Math.PI);let y=2*Math.PI/u.curveStepCount,v=Math.min(y/2,(g-m)/2),x=qre(v,h,d,f,p,m,g,1,u);if(!u.disableMultiStroke){let b=qre(v,h,d,f,p,m,g,1.5,u);x.push(...b)}return s&&(l?x.push(...ud(h,d,h+f*Math.cos(m),d+p*Math.sin(m),u),...ud(h,d,h+f*Math.cos(g),d+p*Math.sin(g),u)):x.push({op:"lineTo",data:[h,d]},{op:"lineTo",data:[h+f*Math.cos(m),d+p*Math.sin(m)]})),{type:"path",ops:x}}function Gre(e,t){let r=Yre(Hre(DN(e))),i=[],n=[0,0],a=[0,0];for(let{key:s,data:l}of r)switch(s){case"M":a=[l[0],l[1]],n=[l[0],l[1]];break;case"L":i.push(...ud(a[0],a[1],l[0],l[1],t)),a=[l[0],l[1]];break;case"C":{let[u,h,d,f,p,m]=l;i.push(...xqe(u,h,d,f,p,m,a,t)),a=[p,m];break}case"Z":i.push(...ud(a[0],a[1],n[0],n[1],t)),a=[n[0],n[1]]}return{type:"path",ops:i}}function gN(e,t){let r=[];for(let i of e)if(i.length){let n=t.maxRandomnessOffset||0,a=i.length;if(a>2){r.push({op:"move",data:[i[0][0]+pr(n,t),i[0][1]+pr(n,t)]});for(let s=1;s<a;s++)r.push({op:"lineTo",data:[i[s][0]+pr(n,t),i[s][1]+pr(n,t)]})}}return{type:"fillPath",ops:r}}function Tg(e,t){return(function(r,i){let n=r.fillStyle||"hachure";if(!Ds[n])switch(n){case"zigzag":Ds[n]||(Ds[n]=new vN(i));break;case"cross-hatch":Ds[n]||(Ds[n]=new xN(i));break;case"dots":Ds[n]||(Ds[n]=new bN(i));break;case"dashed":Ds[n]||(Ds[n]=new TN(i));break;case"zigzag-line":Ds[n]||(Ds[n]=new CN(i));break;default:n="hachure",Ds[n]||(Ds[n]=new Qx(i))}return Ds[n]})(t,yqe).fillPolygons(e,t)}function Vre(e){let t=Object.assign({},e);return t.randomizer=void 0,e.seed&&(t.seed=e.seed+1),t}function Zre(e){return e.randomizer||(e.randomizer=new kN(e.seed||0)),e.randomizer.next()}function I4(e,t,r,i=1){return r.roughness*i*(Zre(r)*(t-e)+e)}function pr(e,t,r=1){return I4(-e,e,t,r)}function ud(e,t,r,i,n,a=!1){let s=a?n.disableMultiStrokeFill:n.disableMultiStroke,l=SN(e,t,r,i,n,!0,!1);if(s)return l;let u=SN(e,t,r,i,n,!0,!0);return l.concat(u)}function SN(e,t,r,i,n,a,s){let l=Math.pow(e-r,2)+Math.pow(t-i,2),u=Math.sqrt(l),h=1;h=u<200?1:u>500?.4:-.0016668*u+1.233334;let d=n.maxRandomnessOffset||0;d*d*100>l&&(d=u/10);let f=d/2,p=.2+.2*Zre(n),m=n.bowing*n.maxRandomnessOffset*(i-t)/200,g=n.bowing*n.maxRandomnessOffset*(e-r)/200;m=pr(m,n,h),g=pr(g,n,h);let y=[],v=o(()=>pr(f,n,h),"M"),x=o(()=>pr(d,n,h),"k"),b=n.preserveVertices;return a&&(s?y.push({op:"move",data:[e+(b?0:v()),t+(b?0:v())]}):y.push({op:"move",data:[e+(b?0:pr(d,n,h)),t+(b?0:pr(d,n,h))]})),s?y.push({op:"bcurveTo",data:[m+e+(r-e)*p+v(),g+t+(i-t)*p+v(),m+e+2*(r-e)*p+v(),g+t+2*(i-t)*p+v(),r+(b?0:v()),i+(b?0:v())]}):y.push({op:"bcurveTo",data:[m+e+(r-e)*p+x(),g+t+(i-t)*p+x(),m+e+2*(r-e)*p+x(),g+t+2*(i-t)*p+x(),r+(b?0:x()),i+(b?0:x())]}),y}function R4(e,t,r){if(!e.length)return[];let i=[];i.push([e[0][0]+pr(t,r),e[0][1]+pr(t,r)]),i.push([e[0][0]+pr(t,r),e[0][1]+pr(t,r)]);for(let n=1;n<e.length;n++)i.push([e[n][0]+pr(t,r),e[n][1]+pr(t,r)]),n===e.length-1&&i.push([e[n][0]+pr(t,r),e[n][1]+pr(t,r)]);return O4(i,null,r)}function O4(e,t,r){let i=e.length,n=[];if(i>3){let a=[],s=1-r.curveTightness;n.push({op:"move",data:[e[1][0],e[1][1]]});for(let l=1;l+2<i;l++){let u=e[l];a[0]=[u[0],u[1]],a[1]=[u[0]+(s*e[l+1][0]-s*e[l-1][0])/6,u[1]+(s*e[l+1][1]-s*e[l-1][1])/6],a[2]=[e[l+1][0]+(s*e[l][0]-s*e[l+2][0])/6,e[l+1][1]+(s*e[l][1]-s*e[l+2][1])/6],a[3]=[e[l+1][0],e[l+1][1]],n.push({op:"bcurveTo",data:[a[1][0],a[1][1],a[2][0],a[2][1],a[3][0],a[3][1]]})}if(t&&t.length===2){let l=r.maxRandomnessOffset;n.push({op:"lineTo",data:[t[0]+pr(l,r),t[1]+pr(l,r)]})}}else i===3?(n.push({op:"move",data:[e[1][0],e[1][1]]}),n.push({op:"bcurveTo",data:[e[1][0],e[1][1],e[2][0],e[2][1],e[2][0],e[2][1]]})):i===2&&n.push(...SN(e[0][0],e[0][1],e[1][0],e[1][1],r,!0,!0));return n}function Wre(e,t,r,i,n,a,s,l){let u=[],h=[];if(l.roughness===0){e/=4,h.push([t+i*Math.cos(-e),r+n*Math.sin(-e)]);for(let d=0;d<=2*Math.PI;d+=e){let f=[t+i*Math.cos(d),r+n*Math.sin(d)];u.push(f),h.push(f)}h.push([t+i*Math.cos(0),r+n*Math.sin(0)]),h.push([t+i*Math.cos(e),r+n*Math.sin(e)])}else{let d=pr(.5,l)-Math.PI/2;h.push([pr(a,l)+t+.9*i*Math.cos(d-e),pr(a,l)+r+.9*n*Math.sin(d-e)]);let f=2*Math.PI+d-.01;for(let p=d;p<f;p+=e){let m=[pr(a,l)+t+i*Math.cos(p),pr(a,l)+r+n*Math.sin(p)];u.push(m),h.push(m)}h.push([pr(a,l)+t+i*Math.cos(d+2*Math.PI+.5*s),pr(a,l)+r+n*Math.sin(d+2*Math.PI+.5*s)]),h.push([pr(a,l)+t+.98*i*Math.cos(d+s),pr(a,l)+r+.98*n*Math.sin(d+s)]),h.push([pr(a,l)+t+.9*i*Math.cos(d+.5*s),pr(a,l)+r+.9*n*Math.sin(d+.5*s)])}return[h,u]}function qre(e,t,r,i,n,a,s,l,u){let h=a+pr(.1,u),d=[];d.push([pr(l,u)+t+.9*i*Math.cos(h-e),pr(l,u)+r+.9*n*Math.sin(h-e)]);for(let f=h;f<=s;f+=e)d.push([pr(l,u)+t+i*Math.cos(f),pr(l,u)+r+n*Math.sin(f)]);return d.push([t+i*Math.cos(s),r+n*Math.sin(s)]),d.push([t+i*Math.cos(s),r+n*Math.sin(s)]),O4(d,null,u)}function xqe(e,t,r,i,n,a,s,l){let u=[],h=[l.maxRandomnessOffset||1,(l.maxRandomnessOffset||1)+.3],d=[0,0],f=l.disableMultiStroke?1:2,p=l.preserveVertices;for(let m=0;m<f;m++)m===0?u.push({op:"move",data:[s[0],s[1]]}):u.push({op:"move",data:[s[0]+(p?0:pr(h[0],l)),s[1]+(p?0:pr(h[0],l))]}),d=p?[n,a]:[n+pr(h[m],l),a+pr(h[m],l)],u.push({op:"bcurveTo",data:[e+pr(h[m],l),t+pr(h[m],l),r+pr(h[m],l),i+pr(h[m],l),d[0],d[1]]});return u}function Zx(e){return[...e]}function Ure(e,t=0){let r=e.length;if(r<3)throw new Error("A curve must have at least three points.");let i=[];if(r===3)i.push(Zx(e[0]),Zx(e[1]),Zx(e[2]),Zx(e[2]));else{let n=[];n.push(e[0],e[0]);for(let l=1;l<e.length;l++)n.push(e[l]),l===e.length-1&&n.push(e[l]);let a=[],s=1-t;i.push(Zx(n[0]));for(let l=1;l+2<n.length;l++){let u=n[l];a[0]=[u[0],u[1]],a[1]=[u[0]+(s*n[l+1][0]-s*n[l-1][0])/6,u[1]+(s*n[l+1][1]-s*n[l-1][1])/6],a[2]=[n[l+1][0]+(s*n[l][0]-s*n[l+2][0])/6,n[l+1][1]+(s*n[l][1]-s*n[l+2][1])/6],a[3]=[n[l+1][0],n[l+1][1]],i.push(a[1],a[2],a[3])}}return i}function N4(e,t){return Math.pow(e[0]-t[0],2)+Math.pow(e[1]-t[1],2)}function bqe(e,t,r){let i=N4(t,r);if(i===0)return N4(e,t);let n=((e[0]-t[0])*(r[0]-t[0])+(e[1]-t[1])*(r[1]-t[1]))/i;return n=Math.max(0,Math.min(1,n)),N4(e,Ap(t,r,n))}function Ap(e,t,r){return[e[0]+(t[0]-e[0])*r,e[1]+(t[1]-e[1])*r]}function EN(e,t,r,i){let n=i||[];if((function(l,u){let h=l[u+0],d=l[u+1],f=l[u+2],p=l[u+3],m=3*d[0]-2*h[0]-p[0];m*=m;let g=3*d[1]-2*h[1]-p[1];g*=g;let y=3*f[0]-2*p[0]-h[0];y*=y;let v=3*f[1]-2*p[1]-h[1];return v*=v,m<y&&(m=y),g<v&&(g=v),m+g})(e,t)<r){let l=e[t+0];n.length?(a=n[n.length-1],s=l,Math.sqrt(N4(a,s))>1&&n.push(l)):n.push(l),n.push(e[t+3])}else{let u=e[t+0],h=e[t+1],d=e[t+2],f=e[t+3],p=Ap(u,h,.5),m=Ap(h,d,.5),g=Ap(d,f,.5),y=Ap(p,m,.5),v=Ap(m,g,.5),x=Ap(y,v,.5);EN([u,p,y,x],0,r,n),EN([x,v,g,f],0,r,n)}var a,s;return n}function Tqe(e,t){return P4(e,0,e.length,t)}function P4(e,t,r,i,n){let a=n||[],s=e[t],l=e[r-1],u=0,h=1;for(let d=t+1;d<r-1;++d){let f=bqe(e[d],s,l);f>u&&(u=f,h=d)}return Math.sqrt(u)>i?(P4(e,t,h+1,i,a),P4(e,h,r,i,a)):(a.length||a.push(s),a.push(l)),a}function yN(e,t=.15,r){let i=[],n=(e.length-1)/3;for(let a=0;a<n;a++)EN(e,3*a,t,i);return r&&r>0?P4(i,0,i.length,r):i}var Qx,vN,xN,bN,TN,CN,Ds,kN,gqe,pN,Fre,D4,yqe,so,Cg,AN,L4,_N,ut,jt=z(()=>{"use strict";o(fN,"t");o(pqe,"e");o(mqe,"s");o(Jx,"n");Qx=class{static{o(this,"o")}constructor(t){this.helper=t}fillPolygons(t,r){return this._fillPolygons(t,r)}_fillPolygons(t,r){let i=Jx(t,r);return{type:"fillSketch",ops:this.renderLines(i,r)}}renderLines(t,r){let i=[];for(let n of t)i.push(...this.helper.doubleLineOps(n[0][0],n[0][1],n[1][0],n[1][1],r));return i}};o(B4,"a");vN=class extends Qx{static{o(this,"h")}fillPolygons(t,r){let i=r.hachureGap;i<0&&(i=4*r.strokeWidth),i=Math.max(i,.1);let n=Jx(t,Object.assign({},r,{hachureGap:i})),a=Math.PI/180*r.hachureAngle,s=[],l=.5*i*Math.cos(a),u=.5*i*Math.sin(a);for(let[h,d]of n)B4([h,d])&&s.push([[h[0]-l,h[1]+u],[...d]],[[h[0]+l,h[1]-u],[...d]]);return{type:"fillSketch",ops:this.renderLines(s,r)}}},xN=class extends Qx{static{o(this,"r")}fillPolygons(t,r){let i=this._fillPolygons(t,r),n=Object.assign({},r,{hachureAngle:r.hachureAngle+90}),a=this._fillPolygons(t,n);return i.ops=i.ops.concat(a.ops),i}},bN=class{static{o(this,"i")}constructor(t){this.helper=t}fillPolygons(t,r){let i=Jx(t,r=Object.assign({},r,{hachureAngle:0}));return this.dotsOnLines(i,r)}dotsOnLines(t,r){let i=[],n=r.hachureGap;n<0&&(n=4*r.strokeWidth),n=Math.max(n,.1);let a=r.fillWeight;a<0&&(a=r.strokeWidth/2);let s=n/4;for(let l of t){let u=B4(l),h=u/n,d=Math.ceil(h)-1,f=u-d*n,p=(l[0][0]+l[1][0])/2-n/4,m=Math.min(l[0][1],l[1][1]);for(let g=0;g<d;g++){let y=m+f+g*n,v=p-s+2*Math.random()*s,x=y-s+2*Math.random()*s,b=this.helper.ellipse(v,x,a,a,r);i.push(...b.ops)}}return{type:"fillSketch",ops:i}}},TN=class{static{o(this,"c")}constructor(t){this.helper=t}fillPolygons(t,r){let i=Jx(t,r);return{type:"fillSketch",ops:this.dashedLine(i,r)}}dashedLine(t,r){let i=r.dashOffset<0?r.hachureGap<0?4*r.strokeWidth:r.hachureGap:r.dashOffset,n=r.dashGap<0?r.hachureGap<0?4*r.strokeWidth:r.hachureGap:r.dashGap,a=[];return t.forEach((s=>{let l=B4(s),u=Math.floor(l/(i+n)),h=(l+n-u*(i+n))/2,d=s[0],f=s[1];d[0]>f[0]&&(d=s[1],f=s[0]);let p=Math.atan((f[1]-d[1])/(f[0]-d[0]));for(let m=0;m<u;m++){let g=m*(i+n),y=g+i,v=[d[0]+g*Math.cos(p)+h*Math.cos(p),d[1]+g*Math.sin(p)+h*Math.sin(p)],x=[d[0]+y*Math.cos(p)+h*Math.cos(p),d[1]+y*Math.sin(p)+h*Math.sin(p)];a.push(...this.helper.doubleLineOps(v[0],v[1],x[0],x[1],r))}})),a}},CN=class{static{o(this,"l")}constructor(t){this.helper=t}fillPolygons(t,r){let i=r.hachureGap<0?4*r.strokeWidth:r.hachureGap,n=r.zigzagOffset<0?i:r.zigzagOffset,a=Jx(t,r=Object.assign({},r,{hachureGap:i+n}));return{type:"fillSketch",ops:this.zigzagLines(a,n,r)}}zigzagLines(t,r,i){let n=[];return t.forEach((a=>{let s=B4(a),l=Math.round(s/(2*r)),u=a[0],h=a[1];u[0]>h[0]&&(u=a[1],h=a[0]);let d=Math.atan((h[1]-u[1])/(h[0]-u[0]));for(let f=0;f<l;f++){let p=2*f*r,m=2*(f+1)*r,g=Math.sqrt(2*Math.pow(r,2)),y=[u[0]+p*Math.cos(d),u[1]+p*Math.sin(d)],v=[u[0]+m*Math.cos(d),u[1]+m*Math.sin(d)],x=[y[0]+g*Math.cos(d+Math.PI/4),y[1]+g*Math.sin(d+Math.PI/4)];n.push(...this.helper.doubleLineOps(y[0],y[1],x[0],x[1],i),...this.helper.doubleLineOps(x[0],x[1],v[0],v[1],i))}})),n}},Ds={},kN=class{static{o(this,"p")}constructor(t){this.seed=t}next(){return this.seed?(2**31-1&(this.seed=Math.imul(48271,this.seed)))/2**31:Math.random()}},gqe=0,pN=1,Fre=2,D4={A:7,a:7,C:6,c:6,H:1,h:1,L:2,l:2,M:2,m:2,Q:4,q:4,S:4,s:4,T:2,t:2,V:1,v:1,Z:0,z:0};o(mN,"k");o(DN,"b");o(Hre,"y");o(Yre,"m");o(Kx,"w");o(jre,"x");yqe={randOffset:o(function(e,t){return pr(e,t)},"randOffset"),randOffsetWithRange:o(function(e,t,r){return I4(e,t,r)},"randOffsetWithRange"),ellipse:o(function(e,t,r,i,n){let a=Kre(r,i,n);return wN(e,t,n,a).opset},"ellipse"),doubleLineOps:o(function(e,t,r,i,n){return ud(e,t,r,i,n,!0)},"doubleLineOps")};o(Xre,"v");o(M4,"S");o(vqe,"O");o($re,"L");o(Kre,"T");o(wN,"D");o(zre,"A");o(Gre,"_");o(gN,"I");o(Tg,"C");o(Vre,"z");o(Zre,"W");o(I4,"E");o(pr,"G");o(ud,"$");o(SN,"R");o(R4,"j");o(O4,"q");o(Wre,"F");o(qre,"V");o(xqe,"Z");o(Zx,"Q");o(Ure,"H");o(N4,"N");o(bqe,"B");o(Ap,"J");o(EN,"K");o(Tqe,"U");o(P4,"X");o(yN,"Y");so="none",Cg=class{static{o(this,"et")}constructor(t){this.defaultOptions={maxRandomnessOffset:2,roughness:1,bowing:1,stroke:"#000",strokeWidth:1,curveTightness:0,curveFitting:.95,curveStepCount:9,fillStyle:"hachure",fillWeight:-1,hachureAngle:-41,hachureGap:-1,dashOffset:-1,dashGap:-1,zigzagOffset:-1,seed:0,disableMultiStroke:!1,disableMultiStrokeFill:!1,preserveVertices:!1,fillShapeRoughnessGain:.8},this.config=t||{},this.config.options&&(this.defaultOptions=this._o(this.config.options))}static newSeed(){return Math.floor(Math.random()*2**31)}_o(t){return t?Object.assign({},this.defaultOptions,t):this.defaultOptions}_d(t,r,i){return{shape:t,sets:r||[],options:i||this.defaultOptions}}line(t,r,i,n,a){let s=this._o(a);return this._d("line",[Xre(t,r,i,n,s)],s)}rectangle(t,r,i,n,a){let s=this._o(a),l=[],u=vqe(t,r,i,n,s);if(s.fill){let h=[[t,r],[t+i,r],[t+i,r+n],[t,r+n]];s.fillStyle==="solid"?l.push(gN([h],s)):l.push(Tg([h],s))}return s.stroke!==so&&l.push(u),this._d("rectangle",l,s)}ellipse(t,r,i,n,a){let s=this._o(a),l=[],u=Kre(i,n,s),h=wN(t,r,s,u);if(s.fill)if(s.fillStyle==="solid"){let d=wN(t,r,s,u).opset;d.type="fillPath",l.push(d)}else l.push(Tg([h.estimatedPoints],s));return s.stroke!==so&&l.push(h.opset),this._d("ellipse",l,s)}circle(t,r,i,n){let a=this.ellipse(t,r,i,i,n);return a.shape="circle",a}linearPath(t,r){let i=this._o(r);return this._d("linearPath",[M4(t,!1,i)],i)}arc(t,r,i,n,a,s,l=!1,u){let h=this._o(u),d=[],f=zre(t,r,i,n,a,s,l,!0,h);if(l&&h.fill)if(h.fillStyle==="solid"){let p=Object.assign({},h);p.disableMultiStroke=!0;let m=zre(t,r,i,n,a,s,!0,!1,p);m.type="fillPath",d.push(m)}else d.push((function(p,m,g,y,v,x,b){let T=p,w=m,C=Math.abs(g/2),k=Math.abs(y/2);C+=pr(.01*C,b),k+=pr(.01*k,b);let E=v,A=x;for(;E<0;)E+=2*Math.PI,A+=2*Math.PI;A-E>2*Math.PI&&(E=0,A=2*Math.PI);let N=(A-E)/b.curveStepCount,P=[];for(let I=E;I<=A;I+=N)P.push([T+C*Math.cos(I),w+k*Math.sin(I)]);return P.push([T+C*Math.cos(A),w+k*Math.sin(A)]),P.push([T,w]),Tg([P],b)})(t,r,i,n,a,s,h));return h.stroke!==so&&d.push(f),this._d("arc",d,h)}curve(t,r){let i=this._o(r),n=[],a=$re(t,i);if(i.fill&&i.fill!==so)if(i.fillStyle==="solid"){let s=$re(t,Object.assign(Object.assign({},i),{disableMultiStroke:!0,roughness:i.roughness?i.roughness+i.fillShapeRoughnessGain:0}));n.push({type:"fillPath",ops:this._mergedShape(s.ops)})}else{let s=[],l=t;if(l.length){let u=typeof l[0][0]=="number"?[l]:l;for(let h of u)h.length<3?s.push(...h):h.length===3?s.push(...yN(Ure([h[0],h[0],h[1],h[2]]),10,(1+i.roughness)/2)):s.push(...yN(Ure(h),10,(1+i.roughness)/2))}s.length&&n.push(Tg([s],i))}return i.stroke!==so&&n.push(a),this._d("curve",n,i)}polygon(t,r){let i=this._o(r),n=[],a=M4(t,!0,i);return i.fill&&(i.fillStyle==="solid"?n.push(gN([t],i)):n.push(Tg([t],i))),i.stroke!==so&&n.push(a),this._d("polygon",n,i)}path(t,r){let i=this._o(r),n=[];if(!t)return this._d("path",n,i);t=(t||"").replace(/\n/g," ").replace(/(-\s)/g,"-").replace("/(ss)/g"," ");let a=i.fill&&i.fill!=="transparent"&&i.fill!==so,s=i.stroke!==so,l=!!(i.simplification&&i.simplification<1),u=(function(d,f,p){let m=Yre(Hre(DN(d))),g=[],y=[],v=[0,0],x=[],b=o(()=>{x.length>=4&&y.push(...yN(x,f)),x=[]},"i"),T=o(()=>{b(),y.length&&(g.push(y),y=[])},"c");for(let{key:C,data:k}of m)switch(C){case"M":T(),v=[k[0],k[1]],y.push(v);break;case"L":b(),y.push([k[0],k[1]]);break;case"C":if(!x.length){let E=y.length?y[y.length-1]:v;x.push([E[0],E[1]])}x.push([k[0],k[1]]),x.push([k[2],k[3]]),x.push([k[4],k[5]]);break;case"Z":b(),y.push([v[0],v[1]])}if(T(),!p)return g;let w=[];for(let C of g){let k=Tqe(C,p);k.length&&w.push(k)}return w})(t,1,l?4-4*(i.simplification||1):(1+i.roughness)/2),h=Gre(t,i);if(a)if(i.fillStyle==="solid")if(u.length===1){let d=Gre(t,Object.assign(Object.assign({},i),{disableMultiStroke:!0,roughness:i.roughness?i.roughness+i.fillShapeRoughnessGain:0}));n.push({type:"fillPath",ops:this._mergedShape(d.ops)})}else n.push(gN(u,i));else n.push(Tg(u,i));return s&&(l?u.forEach((d=>{n.push(M4(d,!1,i))})):n.push(h)),this._d("path",n,i)}opsToPath(t,r){let i="";for(let n of t.ops){let a=typeof r=="number"&&r>=0?n.data.map((s=>+s.toFixed(r))):n.data;switch(n.op){case"move":i+=`M${a[0]} ${a[1]} `;break;case"bcurveTo":i+=`C${a[0]} ${a[1]}, ${a[2]} ${a[3]}, ${a[4]} ${a[5]} `;break;case"lineTo":i+=`L${a[0]} ${a[1]} `}}return i.trim()}toPaths(t){let r=t.sets||[],i=t.options||this.defaultOptions,n=[];for(let a of r){let s=null;switch(a.type){case"path":s={d:this.opsToPath(a),stroke:i.stroke,strokeWidth:i.strokeWidth,fill:so};break;case"fillPath":s={d:this.opsToPath(a),stroke:so,strokeWidth:0,fill:i.fill||so};break;case"fillSketch":s=this.fillSketch(a,i)}s&&n.push(s)}return n}fillSketch(t,r){let i=r.fillWeight;return i<0&&(i=r.strokeWidth/2),{d:this.opsToPath(t),stroke:r.fill||so,strokeWidth:i,fill:so}}_mergedShape(t){return t.filter(((r,i)=>i===0||r.op!=="move"))}},AN=class{static{o(this,"st")}constructor(t,r){this.canvas=t,this.ctx=this.canvas.getContext("2d"),this.gen=new Cg(r)}draw(t){let r=t.sets||[],i=t.options||this.getDefaultOptions(),n=this.ctx,a=t.options.fixedDecimalPlaceDigits;for(let s of r)switch(s.type){case"path":n.save(),n.strokeStyle=i.stroke==="none"?"transparent":i.stroke,n.lineWidth=i.strokeWidth,i.strokeLineDash&&n.setLineDash(i.strokeLineDash),i.strokeLineDashOffset&&(n.lineDashOffset=i.strokeLineDashOffset),this._drawToContext(n,s,a),n.restore();break;case"fillPath":{n.save(),n.fillStyle=i.fill||"";let l=t.shape==="curve"||t.shape==="polygon"||t.shape==="path"?"evenodd":"nonzero";this._drawToContext(n,s,a,l),n.restore();break}case"fillSketch":this.fillSketch(n,s,i)}}fillSketch(t,r,i){let n=i.fillWeight;n<0&&(n=i.strokeWidth/2),t.save(),i.fillLineDash&&t.setLineDash(i.fillLineDash),i.fillLineDashOffset&&(t.lineDashOffset=i.fillLineDashOffset),t.strokeStyle=i.fill||"",t.lineWidth=n,this._drawToContext(t,r,i.fixedDecimalPlaceDigits),t.restore()}_drawToContext(t,r,i,n="nonzero"){t.beginPath();for(let a of r.ops){let s=typeof i=="number"&&i>=0?a.data.map((l=>+l.toFixed(i))):a.data;switch(a.op){case"move":t.moveTo(s[0],s[1]);break;case"bcurveTo":t.bezierCurveTo(s[0],s[1],s[2],s[3],s[4],s[5]);break;case"lineTo":t.lineTo(s[0],s[1])}}r.type==="fillPath"?t.fill(n):t.stroke()}get generator(){return this.gen}getDefaultOptions(){return this.gen.defaultOptions}line(t,r,i,n,a){let s=this.gen.line(t,r,i,n,a);return this.draw(s),s}rectangle(t,r,i,n,a){let s=this.gen.rectangle(t,r,i,n,a);return this.draw(s),s}ellipse(t,r,i,n,a){let s=this.gen.ellipse(t,r,i,n,a);return this.draw(s),s}circle(t,r,i,n){let a=this.gen.circle(t,r,i,n);return this.draw(a),a}linearPath(t,r){let i=this.gen.linearPath(t,r);return this.draw(i),i}polygon(t,r){let i=this.gen.polygon(t,r);return this.draw(i),i}arc(t,r,i,n,a,s,l=!1,u){let h=this.gen.arc(t,r,i,n,a,s,l,u);return this.draw(h),h}curve(t,r){let i=this.gen.curve(t,r);return this.draw(i),i}path(t,r){let i=this.gen.path(t,r);return this.draw(i),i}},L4="http://www.w3.org/2000/svg",_N=class{static{o(this,"ot")}constructor(t,r){this.svg=t,this.gen=new Cg(r)}draw(t){let r=t.sets||[],i=t.options||this.getDefaultOptions(),n=this.svg.ownerDocument||window.document,a=n.createElementNS(L4,"g"),s=t.options.fixedDecimalPlaceDigits;for(let l of r){let u=null;switch(l.type){case"path":u=n.createElementNS(L4,"path"),u.setAttribute("d",this.opsToPath(l,s)),u.setAttribute("stroke",i.stroke),u.setAttribute("stroke-width",i.strokeWidth+""),u.setAttribute("fill","none"),i.strokeLineDash&&u.setAttribute("stroke-dasharray",i.strokeLineDash.join(" ").trim()),i.strokeLineDashOffset&&u.setAttribute("stroke-dashoffset",`${i.strokeLineDashOffset}`);break;case"fillPath":u=n.createElementNS(L4,"path"),u.setAttribute("d",this.opsToPath(l,s)),u.setAttribute("stroke","none"),u.setAttribute("stroke-width","0"),u.setAttribute("fill",i.fill||""),t.shape!=="curve"&&t.shape!=="polygon"||u.setAttribute("fill-rule","evenodd");break;case"fillSketch":u=this.fillSketch(n,l,i)}u&&a.appendChild(u)}return a}fillSketch(t,r,i){let n=i.fillWeight;n<0&&(n=i.strokeWidth/2);let a=t.createElementNS(L4,"path");return a.setAttribute("d",this.opsToPath(r,i.fixedDecimalPlaceDigits)),a.setAttribute("stroke",i.fill||""),a.setAttribute("stroke-width",n+""),a.setAttribute("fill","none"),i.fillLineDash&&a.setAttribute("stroke-dasharray",i.fillLineDash.join(" ").trim()),i.fillLineDashOffset&&a.setAttribute("stroke-dashoffset",`${i.fillLineDashOffset}`),a}get generator(){return this.gen}getDefaultOptions(){return this.gen.defaultOptions}opsToPath(t,r){return this.gen.opsToPath(t,r)}line(t,r,i,n,a){let s=this.gen.line(t,r,i,n,a);return this.draw(s)}rectangle(t,r,i,n,a){let s=this.gen.rectangle(t,r,i,n,a);return this.draw(s)}ellipse(t,r,i,n,a){let s=this.gen.ellipse(t,r,i,n,a);return this.draw(s)}circle(t,r,i,n){let a=this.gen.circle(t,r,i,n);return this.draw(a)}linearPath(t,r){let i=this.gen.linearPath(t,r);return this.draw(i)}polygon(t,r){let i=this.gen.polygon(t,r);return this.draw(i)}arc(t,r,i,n,a,s,l=!1,u){let h=this.gen.arc(t,r,i,n,a,s,l,u);return this.draw(h)}curve(t,r){let i=this.gen.curve(t,r);return this.draw(i)}path(t,r){let i=this.gen.path(t,r);return this.draw(i)}},ut={canvas:o((e,t)=>new AN(e,t),"canvas"),svg:o((e,t)=>new _N(e,t),"svg"),generator:o(e=>new Cg(e),"generator"),newSeed:o(()=>Cg.newSeed(),"newSeed")}});function Qre(e,t){let{labelStyles:r}=ct(t);t.labelStyle=r;let i=Ct(t),n=i;i||(n="anchor");let a=e.insert("g").attr("class",n).attr("id",t.domId||t.id),s=1,{cssStyles:l}=t,u=ut.svg(a),h=mt(t,{fill:"black",stroke:"none",fillStyle:"solid"});t.look!=="handDrawn"&&(h.roughness=0);let d=u.circle(0,0,s*2,h),f=a.insert(()=>d,":first-child");return f.attr("class","anchor").attr("style",ii(l)),ft(t,f),t.intersect=function(p){return Z.info("Circle intersect",t,s,p),lt.circle(t,s,p)},a}var Jre=z(()=>{"use strict";St();Wt();Kt();Ht();jt();Xt();o(Qre,"anchor")});function eie(e,t,r,i,n,a,s){let u=(e+r)/2,h=(t+i)/2,d=Math.atan2(i-t,r-e),f=(r-e)/2,p=(i-t)/2,m=f/n,g=p/a,y=Math.sqrt(m**2+g**2);if(y>1)throw new Error("The given radii are too small to create an arc between the points.");let v=Math.sqrt(1-y**2),x=u+v*a*Math.sin(d)*(s?-1:1),b=h-v*n*Math.cos(d)*(s?-1:1),T=Math.atan2((t-b)/a,(e-x)/n),C=Math.atan2((i-b)/a,(r-x)/n)-T;s&&C<0&&(C+=2*Math.PI),!s&&C>0&&(C-=2*Math.PI);let k=[];for(let E=0;E<20;E++){let A=E/19,N=T+A*C,P=x+n*Math.cos(N),I=b+a*Math.sin(N);k.push({x:P,y:I})}return k}function Cqe(e,t,r){let[i,n]=[t,r].sort((a,s)=>s-a);return n*(1-Math.sqrt(1-(e/i/2)**2))}async function tie(e,t){let{labelStyles:r,nodeStyles:i}=ct(t);t.labelStyle=r;let n=t.padding??0,a=t.look==="neo"?16:n,s=t.look==="neo"?12:n,l=o(N=>N+s,"calcTotalHeight"),u=o(N=>{let P=N/2;return[P/(2.5+N/50),P]},"calcEllipseRadius"),{shapeSvg:h,bbox:d}=await At(e,t,Ct(t)),f=l(t?.height?t?.height:d.height),[p,m]=u(f),g=Cqe(f,p,m),v=(t?.width?t?.width:d.width)+a*2+g-g,x=f,{cssStyles:b}=t,T=[{x:v/2,y:-x/2},{x:-v/2,y:-x/2},...eie(-v/2,-x/2,-v/2,x/2,p,m,!1),{x:v/2,y:x/2},...eie(v/2,x/2,v/2,-x/2,p,m,!0)],w=ut.svg(h),C=mt(t,{});t.look!=="handDrawn"&&(C.roughness=0,C.fillStyle="solid");let k=tr(T),E=w.path(k,C),A=h.insert(()=>E,":first-child");return A.attr("class","basic label-container outer-path"),b&&t.look!=="handDrawn"&&A.selectAll("path").attr("style",b),i&&t.look!=="handDrawn"&&A.selectAll("path").attr("style",i),A.attr("transform",`translate(${p/2}, 0)`),ft(t,A),t.intersect=function(N){return lt.polygon(t,T,N)},h}var rie=z(()=>{"use strict";Wt();Kt();Ht();jt();o(eie,"generateArcPoints");o(Cqe,"calculateArcSagitta");o(tie,"bowTieRect")});function Ma(e,t,r,i){return e.insert("polygon",":first-child").attr("points",i.map(function(n){return n.x+","+n.y}).join(" ")).attr("class","label-container").attr("transform","translate("+-t/2+","+r/2+")")}var Fu=z(()=>{"use strict";o(Ma,"insertPolygonShape")});async function iie(e,t){let{labelStyles:r,nodeStyles:i}=ct(t);t.labelStyle=r;let n=t.padding??0,a=t.look==="neo"?28:n,s=t.look==="neo"?24:n,{shapeSvg:l,bbox:u}=await At(e,t,Ct(t)),h=(t?.width??u.width)+(t.look==="neo"?a*2:a+F4),d=(t?.height??u.height)+(t.look==="neo"?s*2:s),f=0,p=h,m=-d,g=0,y=[{x:f+F4,y:m},{x:p,y:m},{x:p,y:g},{x:f,y:g},{x:f,y:m+F4},{x:f+F4,y:m}],v,{cssStyles:x}=t;if(t.look==="handDrawn"){let b=ut.svg(l),T=mt(t,{}),w=tr(y),C=b.path(w,T);v=l.insert(()=>C,":first-child").attr("transform",`translate(${-h/2}, ${d/2})`),x&&v.attr("style",x)}else v=Ma(l,h,d,y);return i&&v.attr("style",i),ft(t,v),t.intersect=function(b){return lt.polygon(t,y,b)},l}var F4,nie=z(()=>{"use strict";Wt();Kt();Ht();jt();Fu();Wt();F4=12;o(iie,"card")});function aie(e,t){let{nodeStyles:r}=ct(t);t.label="";let i=e.insert("g").attr("class",Ct(t)).attr("id",t.domId??t.id),{cssStyles:n}=t,a=Math.max(28,t.width??0),s=[{x:0,y:a/2},{x:a/2,y:0},{x:0,y:-a/2},{x:-a/2,y:0}],l=ut.svg(i),u=mt(t,{});t.look!=="handDrawn"&&(u.roughness=0,u.fillStyle="solid");let h=tr(s),d=l.path(h,u),f=i.insert(()=>d,":first-child");return n&&t.look!=="handDrawn"&&f.selectAll("path").attr("style",n),r&&t.look!=="handDrawn"&&f.selectAll("path").attr("style",r),t.width=28,t.height=28,t.intersect=function(p){return lt.polygon(t,s,p)},i}var sie=z(()=>{"use strict";Kt();jt();Ht();Wt();o(aie,"choice")});async function $4(e,t,r){let{labelStyles:i,nodeStyles:n}=ct(t);t.labelStyle=i;let{shapeSvg:a,bbox:s,halfPadding:l}=await At(e,t,Ct(t)),u=16,h=r?.padding??l,d=t.look==="neo"?s.width/2+u*2:s.width/2+h,f,{cssStyles:p}=t;if(t.look==="handDrawn"){let m=ut.svg(a),g=mt(t,{}),y=m.circle(0,0,d*2,g);f=a.insert(()=>y,":first-child"),f.attr("class","basic label-container").attr("style",ii(p))}else f=a.insert("circle",":first-child").attr("class","basic label-container").attr("style",n).attr("r",d).attr("cx",0).attr("cy",0);return ft(t,f),t.calcIntersect=function(m,g){let y=m.width/2;return lt.circle(m,y,g)},t.intersect=function(m){return Z.info("Circle intersect",t,d,m),lt.circle(t,d,m)},a}var RN=z(()=>{"use strict";jt();St();Xt();Kt();Ht();Wt();o($4,"circle")});function kqe(e){let t=Math.cos(Math.PI/4),r=Math.sin(Math.PI/4),i=e*2,n={x:i/2*t,y:i/2*r},a={x:-(i/2)*t,y:i/2*r},s={x:-(i/2)*t,y:-(i/2)*r},l={x:i/2*t,y:-(i/2)*r};return`M ${a.x},${a.y} L ${l.x},${l.y}
-                   M ${n.x},${n.y} L ${s.x},${s.y}`}function oie(e,t){let{labelStyles:r,nodeStyles:i}=ct(t);t.labelStyle=r,t.label="";let n=e.insert("g").attr("class",Ct(t)).attr("id",t.domId??t.id),a=Math.max(30,t?.width??0),{cssStyles:s}=t,l=ut.svg(n),u=mt(t,{});t.look!=="handDrawn"&&(u.roughness=0,u.fillStyle="solid");let h=l.circle(0,0,a*2,u),d=kqe(a),f=l.path(d,u),p=n.insert(()=>h,":first-child");return p.insert(()=>f),p.attr("class","outer-path"),s&&t.look!=="handDrawn"&&p.selectAll("path").attr("style",s),i&&t.look!=="handDrawn"&&p.selectAll("path").attr("style",i),ft(t,p),t.intersect=function(m){return Z.info("crossedCircle intersect",t,{radius:a,point:m}),lt.circle(t,a,m)},n}var lie=z(()=>{"use strict";St();Wt();Ht();jt();Kt();o(kqe,"createLine");o(oie,"crossedCircle")});function hd(e,t,r,i=100,n=0,a=180){let s=[],l=n*Math.PI/180,d=(a*Math.PI/180-l)/(i-1);for(let f=0;f<i;f++){let p=l+f*d,m=e+r*Math.cos(p),g=t+r*Math.sin(p);s.push({x:-m,y:-g})}return s}async function cie(e,t){let{labelStyles:r,nodeStyles:i}=ct(t);t.labelStyle=r;let{shapeSvg:n,bbox:a,label:s}=await At(e,t,Ct(t)),l=t.look==="neo"?18:t.padding??0,u=t.look==="neo"?12:t.padding??0,h=a.width+l,d=a.height+u,f=Math.max(5,d*.1),{cssStyles:p}=t,m=[...hd(h/2,-d/2,f,30,-90,0),{x:-h/2-f,y:f},...hd(h/2+f*2,-f,f,20,-180,-270),...hd(h/2+f*2,f,f,20,-90,-180),{x:-h/2-f,y:-d/2},...hd(h/2,d/2,f,20,0,90)],g=[{x:h/2,y:-d/2-f},{x:-h/2,y:-d/2-f},...hd(h/2,-d/2,f,20,-90,0),{x:-h/2-f,y:-f},...hd(h/2+h*.1,-f,f,20,-180,-270),...hd(h/2+h*.1,f,f,20,-90,-180),{x:-h/2-f,y:d/2},...hd(h/2,d/2,f,20,0,90),{x:-h/2,y:d/2+f},{x:h/2,y:d/2+f}],y=ut.svg(n),v=mt(t,{fill:"none"});t.look!=="handDrawn"&&(v.roughness=0,v.fillStyle="solid");let b=tr(m).replace("Z",""),T=y.path(b,v),w=tr(g),C=y.path(w,{...v}),k=n.insert("g",":first-child");return k.insert(()=>C,":first-child").attr("stroke-opacity",0),k.insert(()=>T,":first-child"),k.attr("class","text"),p&&t.look!=="handDrawn"&&k.selectAll("path").attr("style",p),i&&t.look!=="handDrawn"&&k.selectAll("path").attr("style",i),k.attr("transform",`translate(${f}, 0)`),s.attr("transform",`translate(${-h/2+f-(a.x-(a.left??0))},${-d/2+(t.padding??0)/2-(a.y-(a.top??0))})`),ft(t,k),t.intersect=function(E){return lt.polygon(t,g,E)},n}var uie=z(()=>{"use strict";Wt();Kt();Ht();jt();o(hd,"generateCirclePoints");o(cie,"curlyBraceLeft")});function dd(e,t,r,i=100,n=0,a=180){let s=[],l=n*Math.PI/180,d=(a*Math.PI/180-l)/(i-1);for(let f=0;f<i;f++){let p=l+f*d,m=e+r*Math.cos(p),g=t+r*Math.sin(p);s.push({x:m,y:g})}return s}async function hie(e,t){let{labelStyles:r,nodeStyles:i}=ct(t);t.labelStyle=r;let{shapeSvg:n,bbox:a,label:s}=await At(e,t,Ct(t)),l=t.look==="neo"?18:t.padding??0,u=t.look==="neo"?12:t.padding??0,h=a.width+(t.look==="neo"?l*2:l),d=a.height+(t.look==="neo"?u*2:u),f=Math.max(5,d*.1),{cssStyles:p}=t,m=[...dd(h/2,-d/2,f,20,-90,0),{x:h/2+f,y:-f},...dd(h/2+f*2,-f,f,20,-180,-270),...dd(h/2+f*2,f,f,20,-90,-180),{x:h/2+f,y:d/2},...dd(h/2,d/2,f,20,0,90)],g=[{x:-h/2,y:-d/2-f},{x:h/2,y:-d/2-f},...dd(h/2,-d/2,f,20,-90,0),{x:h/2+f,y:-f},...dd(h/2+f*2,-f,f,20,-180,-270),...dd(h/2+f*2,f,f,20,-90,-180),{x:h/2+f,y:d/2},...dd(h/2,d/2,f,20,0,90),{x:h/2,y:d/2+f},{x:-h/2,y:d/2+f}],y=ut.svg(n),v=mt(t,{fill:"none"});t.look!=="handDrawn"&&(v.roughness=0,v.fillStyle="solid");let b=tr(m).replace("Z",""),T=y.path(b,v),w=tr(g),C=y.path(w,{...v}),k=n.insert("g",":first-child");return k.insert(()=>C,":first-child").attr("stroke-opacity",0),k.insert(()=>T,":first-child"),k.attr("class","text"),p&&t.look!=="handDrawn"&&k.selectAll("path").attr("style",p),i&&t.look!=="handDrawn"&&k.selectAll("path").attr("style",i),k.attr("transform",`translate(${-f}, 0)`),s.attr("transform",`translate(${-h/2+(t.padding??0)/2-(a.x-(a.left??0))},${-d/2+(t.padding??0)/2-(a.y-(a.top??0))})`),ft(t,k),t.intersect=function(E){return lt.polygon(t,g,E)},n}var die=z(()=>{"use strict";Wt();Kt();Ht();jt();o(dd,"generateCirclePoints");o(hie,"curlyBraceRight")});function Na(e,t,r,i=100,n=0,a=180){let s=[],l=n*Math.PI/180,d=(a*Math.PI/180-l)/(i-1);for(let f=0;f<i;f++){let p=l+f*d,m=e+r*Math.cos(p),g=t+r*Math.sin(p);s.push({x:-m,y:-g})}return s}async function fie(e,t){let{labelStyles:r,nodeStyles:i}=ct(t);t.labelStyle=r;let{shapeSvg:n,bbox:a,label:s}=await At(e,t,Ct(t)),l=t.look==="neo"?18:t.padding??0,u=t.look==="neo"?12:t.padding??0,h=a.width+(t.look==="neo"?l*2:l),d=a.height+(t.look==="neo"?u*2:u),f=Math.max(5,d*.1),{cssStyles:p}=t,m=[...Na(h/2,-d/2,f,30,-90,0),{x:-h/2-f,y:f},...Na(h/2+f*2,-f,f,20,-180,-270),...Na(h/2+f*2,f,f,20,-90,-180),{x:-h/2-f,y:-d/2},...Na(h/2,d/2,f,20,0,90)],g=[...Na(-h/2+f+f/2,-d/2,f,20,-90,-180),{x:h/2-f/2,y:f},...Na(-h/2-f/2,-f,f,20,0,90),...Na(-h/2-f/2,f,f,20,-90,0),{x:h/2-f/2,y:-f},...Na(-h/2+f+f/2,d/2,f,30,-180,-270)],y=[{x:h/2,y:-d/2-f},{x:-h/2,y:-d/2-f},...Na(h/2,-d/2,f,20,-90,0),{x:-h/2-f,y:-f},...Na(h/2+f*2,-f,f,20,-180,-270),...Na(h/2+f*2,f,f,20,-90,-180),{x:-h/2-f,y:d/2},...Na(h/2,d/2,f,20,0,90),{x:-h/2,y:d/2+f},{x:h/2-f-f/2,y:d/2+f},...Na(-h/2+f+f/2,-d/2,f,20,-90,-180),{x:h/2-f/2,y:f},...Na(-h/2-f/2,-f,f,20,0,90),...Na(-h/2-f/2,f,f,20,-90,0),{x:h/2-f/2,y:-f},...Na(-h/2+f+f/2,d/2,f,30,-180,-270)],v=ut.svg(n),x=mt(t,{fill:"none"});t.look!=="handDrawn"&&(x.roughness=0,x.fillStyle="solid");let T=tr(m).replace("Z",""),w=v.path(T,x),k=tr(g).replace("Z",""),E=v.path(k,x),A=tr(y),N=v.path(A,{...x}),P=n.insert("g",":first-child");return P.insert(()=>N,":first-child").attr("stroke-opacity",0),P.insert(()=>w,":first-child"),P.insert(()=>E,":first-child"),P.attr("class","text"),p&&t.look!=="handDrawn"&&P.selectAll("path").attr("style",p),i&&t.look!=="handDrawn"&&P.selectAll("path").attr("style",i),P.attr("transform",`translate(${f-f/4}, 0)`),s.attr("transform",`translate(${-h/2+(t.padding??0)/2-(a.x-(a.left??0))},${-d/2+(t.padding??0)/2-(a.y-(a.top??0))})`),ft(t,P),t.intersect=function(I){return lt.polygon(t,y,I)},n}var pie=z(()=>{"use strict";Wt();Kt();Ht();jt();o(Na,"generateCirclePoints");o(fie,"curlyBraces")});async function mie(e,t){let{labelStyles:r,nodeStyles:i}=ct(t);t.labelStyle=r;let n=t.padding??0,a=t.look==="neo"?16:n,s=t.look==="neo"?12:n,l=20,u=5,{shapeSvg:h,bbox:d}=await At(e,t,Ct(t)),f=Math.max(l,(d.width+a*2)*1.25,t?.width??0),p=Math.max(u,d.height+s*2,t?.height??0),m=p/2,{cssStyles:g}=t,y=ut.svg(h),v=mt(t,{});t.look!=="handDrawn"&&(v.roughness=0,v.fillStyle="solid");let x=f,b=p,T=x-m,w=b/4,C=[{x:T,y:0},{x:w,y:0},{x:0,y:b/2},{x:w,y:b},{x:T,y:b},...Ep(-T,-b/2,m,50,270,90)],k=tr(C),E=y.path(k,v),A=h.insert(()=>E,":first-child");return A.attr("class","basic label-container outer-path"),g&&t.look!=="handDrawn"&&A.selectChildren("path").attr("style",g),i&&t.look!=="handDrawn"&&A.selectChildren("path").attr("style",i),A.attr("transform",`translate(${-f/2}, ${-p/2})`),ft(t,A),t.intersect=function(N){return lt.polygon(t,C,N)},h}var gie=z(()=>{"use strict";Wt();Kt();Ht();jt();o(mie,"curvedTrapezoid")});async function xie(e,t){let{labelStyles:r,nodeStyles:i}=ct(t);t.labelStyle=r;let n=t.padding??0,a=t.look==="neo"?24:n,s=t.look==="neo"?24:n;if(t.width||t.height){let v=t.width??0;t.width=(t.width??0)-s,t.width<vie&&(t.width=vie);let b=v/2/(2.5+v/50);t.height=(t.height??0)-a-b*3,t.height<yie&&(t.height=yie)}let{shapeSvg:l,bbox:u,label:h}=await At(e,t,Ct(t)),d=(t.width?t.width:u.width)+s,f=d/2,p=f/(2.5+d/50),m=(t.height?t.height:u.height)+a+p,g,{cssStyles:y}=t;if(t.look==="handDrawn"){let v=ut.svg(l),x=Sqe(0,0,d,m,f,p),b=Eqe(0,p,d,m,f,p),T=mt(t,{}),w=v.path(x,T),C=v.path(b,mt(t,{fill:"none"}));g=l.insert(()=>C,":first-child"),g=l.insert(()=>w,":first-child"),g.attr("class","basic label-container"),y&&g.attr("style",y)}else{let v=wqe(0,0,d,m,f,p);g=l.insert("path",":first-child").attr("d",v).attr("class","basic label-container outer-path").attr("style",ii(y)).attr("style",i)}return g.attr("label-offset-y",p),g.attr("transform",`translate(${-d/2}, ${-(m/2+p)})`),ft(t,g),h.attr("transform",`translate(${-(u.width/2)-(u.x-(u.left??0))}, ${-(u.height/2)+(t.padding??0)/1.5-(u.y-(u.top??0))})`),t.intersect=function(v){let x=lt.rect(t,v),b=x.x-(t.x??0);if(f!=0&&(Math.abs(b)<(t.width??0)/2||Math.abs(b)==(t.width??0)/2&&Math.abs(x.y-(t.y??0))>(t.height??0)/2-p)){let T=p*p*(1-b*b/(f*f));T>0&&(T=Math.sqrt(T)),T=p-T,v.y-(t.y??0)>0&&(T=-T),x.y+=T}return x},l}var wqe,Sqe,Eqe,yie,vie,bie=z(()=>{"use strict";Wt();Kt();Ht();jt();Xt();wqe=o((e,t,r,i,n,a)=>[`M${e},${t+a}`,`a${n},${a} 0,0,0 ${r},0`,`a${n},${a} 0,0,0 ${-r},0`,`l0,${i}`,`a${n},${a} 0,0,0 ${r},0`,`l0,${-i}`].join(" "),"createCylinderPathD"),Sqe=o((e,t,r,i,n,a)=>[`M${e},${t+a}`,`M${e+r},${t+a}`,`a${n},${a} 0,0,0 ${-r},0`,`l0,${i}`,`a${n},${a} 0,0,0 ${r},0`,`l0,${-i}`].join(" "),"createOuterCylinderPathD"),Eqe=o((e,t,r,i,n,a)=>[`M${e-r/2},${-i/2}`,`a${n},${a} 0,0,0 ${r},0`].join(" "),"createInnerCylinderPathD"),yie=8,vie=8;o(xie,"cylinder")});var Rs,_p=z(()=>{"use strict";Rs=o((e,t,r,i,n)=>["M",e+n,t,"H",e+r-n,"A",n,n,0,0,1,e+r,t+n,"V",t+i-n,"A",n,n,0,0,1,e+r-n,t+i,"H",e+n,"A",n,n,0,0,1,e,t+i-n,"V",t+n,"A",n,n,0,0,1,e+n,t,"Z"].join(" "),"createRoundedRectPathD")});async function Ml(e,t,r){let{labelStyles:i,nodeStyles:n}=ct(t);t.labelStyle=i;let{shapeSvg:a,bbox:s}=await At(e,t,Ct(t)),l=Math.max(s.width+r.labelPaddingX*2,t?.width||0),u=Math.max(s.height+r.labelPaddingY*2,t?.height||0),h=-l/2,d=-u/2,f,{rx:p,ry:m}=t,{cssStyles:g}=t;if(r?.rx&&r.ry&&(p=r.rx,m=r.ry),t.look==="handDrawn"){let y=ut.svg(a),v=mt(t,{}),x=p||m?y.path(Rs(h,d,l,u,p||0),v):y.rectangle(h,d,l,u,v);f=a.insert(()=>x,":first-child"),f.attr("class","basic label-container").attr("style",ii(g))}else f=a.insert("rect",":first-child"),f.attr("class","basic label-container").attr("style",n).attr("rx",ii(p)).attr("ry",ii(m)).attr("x",h).attr("y",d).attr("width",l).attr("height",u);return ft(t,f),t.calcIntersect=function(y,v){return lt.rect(y,v)},t.intersect=function(y){return lt.rect(t,y)},a}var Dp=z(()=>{"use strict";Wt();Kt();_p();Ht();jt();Xt();o(Ml,"drawRect")});async function Tie(e,t){let{cssClasses:r,labelPaddingX:i,labelPaddingY:n,padding:a,width:s,height:l}=t,u={rx:0,ry:0,classes:r??"",labelPaddingX:i??(a??0)*2,labelPaddingY:n??a??0},h=await Ml(e,t,u);if(t.look==="handDrawn"){let m=ut.svg(h),g=mt(t,{}),y=h.select(".basic.label-container > path:nth-child(2)"),v=y.node();if(!v)return h;let x=null;if(v instanceof SVGGraphicsElement)x=v.getBBox();else return h;return h.insert(()=>m.line(x.x,x.y,x.x+x.width,x.y,g),".basic.label-container g.label"),h.insert(()=>m.line(x.x,x.y+x.height,x.x+x.width,x.y+x.height,g),".basic.label-container g.label"),y.remove(),h}let d=h.select(".basic.label-container"),f=(Number(d.attr("width"))||s)??0,p=(Number(d.attr("height"))||l)??0;return f>0&&p>0&&d.attr("stroke-dasharray",`${f} ${p}`),h}var Cie=z(()=>{"use strict";Dp();Ht();jt();o(Tie,"datastore")});async function kie(e,t){let{labelStyles:r,nodeStyles:i}=ct(t);t.labelStyle=r;let n=t.look==="neo"?16:t.padding??0,a=t.look==="neo"?16:t.padding??0,{shapeSvg:s,bbox:l,label:u}=await At(e,t,Ct(t)),h=l.width+n,d=l.height+a,f=d*.2,p=-h/2,m=-d/2-f/2,{cssStyles:g}=t,y=ut.svg(s),v=mt(t,{});t.look!=="handDrawn"&&(v.roughness=0,v.fillStyle="solid");let x=[{x:p,y:m+f},{x:-p,y:m+f},{x:-p,y:-m},{x:p,y:-m},{x:p,y:m},{x:-p,y:m},{x:-p,y:m+f}],b=y.polygon(x.map(w=>[w.x,w.y]),v),T=s.insert(()=>b,":first-child");return T.attr("class","basic label-container outer-path"),g&&t.look!=="handDrawn"&&T.selectAll("path").attr("style",g),i&&t.look!=="handDrawn"&&T.selectAll("path").attr("style",i),u.attr("transform",`translate(${p+(t.padding??0)/2-(l.x-(l.left??0))}, ${m+f+(t.padding??0)/2-(l.y-(l.top??0))})`),ft(t,T),t.intersect=function(w){return lt.rect(t,w)},s}var wie=z(()=>{"use strict";Wt();Kt();Ht();jt();o(kie,"dividedRectangle")});async function Sie(e,t){let{labelStyles:r,nodeStyles:i}=ct(t),n=t.look==="neo"?12:5;t.labelStyle=r;let a=t.padding??0,s=t.look==="neo"?16:a,{shapeSvg:l,bbox:u}=await At(e,t,Ct(t)),h=(t?.width?t?.width/2:u.width/2)+(s??0),d=h-n,f,{cssStyles:p}=t;if(t.look==="handDrawn"){let m=ut.svg(l),g=mt(t,{roughness:.2,strokeWidth:2.5}),y=mt(t,{roughness:.2,strokeWidth:1.5}),v=m.circle(0,0,h*2,g),x=m.circle(0,0,d*2,y);f=l.insert("g",":first-child"),f.attr("class",ii(t.cssClasses)).attr("style",ii(p)),f.node()?.appendChild(v),f.node()?.appendChild(x)}else{f=l.insert("g",":first-child");let m=f.insert("circle",":first-child"),g=f.insert("circle");f.attr("class","basic label-container").attr("style",i),m.attr("class","outer-circle").attr("style",i).attr("r",h).attr("cx",0).attr("cy",0),g.attr("class","inner-circle").attr("style",i).attr("r",d).attr("cx",0).attr("cy",0)}return ft(t,f),t.intersect=function(m){return Z.info("DoubleCircle intersect",t,h,m),lt.circle(t,h,m)},l}var Eie=z(()=>{"use strict";St();Wt();Kt();Ht();jt();Xt();o(Sie,"doublecircle")});function Aie(e,t,{config:{themeVariables:r}}){let{labelStyles:i,nodeStyles:n}=ct(t);t.label="",t.labelStyle=i;let a=e.insert("g").attr("class",Ct(t)).attr("id",t.domId??t.id),s=7,{cssStyles:l}=t,u=ut.svg(a),{nodeBorder:h}=r,d=mt(t,{fillStyle:"solid"});t.look!=="handDrawn"&&(d.roughness=0);let f=u.circle(0,0,s*2,d),p=a.insert(()=>f,":first-child");return p.selectAll("path").attr("style",`fill: ${h} !important;`),l&&l.length>0&&t.look!=="handDrawn"&&p.selectAll("path").attr("style",l),n&&t.look!=="handDrawn"&&p.selectAll("path").attr("style",n),ft(t,p),t.intersect=function(m){return Z.info("filledCircle intersect",t,{radius:s,point:m}),lt.circle(t,s,m)},a}var _ie=z(()=>{"use strict";jt();St();Kt();Ht();Wt();o(Aie,"filledCircle")});async function Lie(e,t){let{labelStyles:r,nodeStyles:i}=ct(t);t.labelStyle=r;let n=t.padding??0,a=t.look==="neo"?n*2:n;(t.width||t.height)&&(t.height=t?.height??0,t.height<Die&&(t.height=Die),t.width=(t?.width??0)-a-a/2,t.width<Rie&&(t.width=Rie));let{shapeSvg:s,bbox:l,label:u}=await At(e,t,Ct(t)),h=(t?.width?t?.width:l.width)+(a??0),d=t?.height?t?.height:h+l.height,f=d,p=[{x:0,y:-d},{x:f,y:-d},{x:f/2,y:0}],{cssStyles:m}=t,g=ut.svg(s),y=mt(t,{});t.look!=="handDrawn"&&(y.roughness=0,y.fillStyle="solid");let v=tr(p),x=g.path(v,y),b=s.insert(()=>x,":first-child").attr("transform",`translate(${-d/2}, ${d/2})`).attr("class","outer-path");return m&&t.look!=="handDrawn"&&b.selectChildren("path").attr("style",m),i&&t.look!=="handDrawn"&&b.selectChildren("path").attr("style",i),t.width=h,t.height=d,ft(t,b),u.attr("transform",`translate(${-l.width/2-(l.x-(l.left??0))}, ${-d/2+(t.padding??0)/2+(l.y-(l.top??0))})`),t.intersect=function(T){return Z.info("Triangle intersect",t,p,T),lt.polygon(t,p,T)},s}var Die,Rie,Mie=z(()=>{"use strict";St();Wt();Kt();Ht();jt();Wt();Die=10,Rie=10;o(Lie,"flippedTriangle")});function Nie(e,t,{dir:r,config:{state:i,themeVariables:n}}){let{nodeStyles:a}=ct(t);t.label="";let s=e.insert("g").attr("class",Ct(t)).attr("id",t.domId??t.id),{cssStyles:l}=t,u=Math.max(70,t?.width??0),h=Math.max(10,t?.height??0);r==="LR"&&(u=Math.max(10,t?.width??0),h=Math.max(70,t?.height??0));let d=-1*u/2,f=-1*h/2,p=ut.svg(s),m=mt(t,{stroke:n.lineColor,fill:n.lineColor});t.look!=="handDrawn"&&(m.roughness=0,m.fillStyle="solid");let g=p.rectangle(d,f,u,h,m),y=s.insert(()=>g,":first-child");l&&t.look!=="handDrawn"&&y.selectAll("path").attr("style",l),a&&t.look!=="handDrawn"&&y.selectAll("path").attr("style",a),ft(t,y);let v=i?.padding??0;return t.width&&t.height&&(t.width+=v/2||0,t.height+=v/2||0),t.intersect=function(x){return lt.rect(t,x)},s}var Iie=z(()=>{"use strict";jt();Kt();Ht();Wt();o(Nie,"forkJoin")});async function Oie(e,t){let{labelStyles:r,nodeStyles:i}=ct(t);t.labelStyle=r;let n=15,a=10,s=t.look==="neo"?16:t.padding??0,l=t.look==="neo"?12:t.padding??0;(t.width||t.height)&&(t.height=(t?.height??0)-l*2,t.height<a&&(t.height=a),t.width=(t?.width??0)-s*2,t.width<n&&(t.width=n));let{shapeSvg:u,bbox:h}=await At(e,t,Ct(t)),d=(t?.width?t?.width:Math.max(n,h.width))+s*2,f=(t?.height?t?.height:Math.max(a,h.height))+l*2,p=f/2,{cssStyles:m}=t,g=ut.svg(u),y=mt(t,{});t.look!=="handDrawn"&&(y.roughness=0,y.fillStyle="solid");let v=[{x:-d/2,y:-f/2},{x:d/2-p,y:-f/2},...Ep(-d/2+p,0,p,50,90,270),{x:d/2-p,y:f/2},{x:-d/2,y:f/2}],x=tr(v),b=g.path(x,y),T=u.insert(()=>b,":first-child");return T.attr("class","basic label-container outer-path"),m&&t.look!=="handDrawn"&&T.selectChildren("path").attr("style",m),i&&t.look!=="handDrawn"&&T.selectChildren("path").attr("style",i),ft(t,T),t.intersect=function(w){return Z.info("Pill intersect",t,{radius:p,point:w}),lt.polygon(t,v,w)},u}var Pie=z(()=>{"use strict";St();Wt();Kt();Ht();jt();o(Oie,"halfRoundedRectangle")});async function Bie(e,t){let{labelStyles:r,nodeStyles:i}=ct(t),n=t.look==="neo"?3.5:4;t.labelStyle=r;let a=t.padding??0,s=70,l=32,u=t.look==="neo"?s:a,h=t.look==="neo"?l:a;if(t.width||t.height){let T=(t.height??0)/n;t.width=(t?.width??0)-2*T-h,t.height=(t.height??0)-u}let{shapeSvg:d,bbox:f}=await At(e,t,Ct(t)),p=(t?.height?t?.height:f.height)+u,m=p/n,g=(t?.width?t?.width:f.width)+2*m+h,y=[{x:m,y:0},{x:g-m,y:0},{x:g,y:-p/2},{x:g-m,y:-p},{x:m,y:-p},{x:0,y:-p/2}],v,{cssStyles:x}=t;if(t.look==="handDrawn"){let b=ut.svg(d),T=mt(t,{}),w=Aqe(0,0,g,p,m),C=b.path(w,T);v=d.insert(()=>C,":first-child").attr("transform",`translate(${-g/2}, ${p/2})`),x&&v.attr("style",x)}else v=Ma(d,g,p,y);return i&&v.attr("style",i),t.width=g,t.height=p,ft(t,v),t.intersect=function(b){return lt.polygon(t,y,b)},d}var Aqe,Fie=z(()=>{"use strict";Wt();Kt();Ht();jt();Fu();Aqe=o((e,t,r,i,n)=>[`M${e+n},${t}`,`L${e+r-n},${t}`,`L${e+r},${t-i/2}`,`L${e+r-n},${t-i}`,`L${e+n},${t-i}`,`L${e},${t-i/2}`,"Z"].join(" "),"createHexagonPathD");o(Bie,"hexagon")});async function $ie(e,t){let{labelStyles:r,nodeStyles:i}=ct(t);t.label="",t.labelStyle=r;let{shapeSvg:n}=await At(e,t,Ct(t)),a=Math.max(30,t?.width??0),s=Math.max(30,t?.height??0),{cssStyles:l}=t,u=ut.svg(n),h=mt(t,{});t.look!=="handDrawn"&&(h.roughness=0,h.fillStyle="solid");let d=[{x:0,y:0},{x:a,y:0},{x:0,y:s},{x:a,y:s}],f=tr(d),p=u.path(f,h),m=n.insert(()=>p,":first-child");return m.attr("class","basic label-container outer-path"),l&&t.look!=="handDrawn"&&m.selectChildren("path").attr("style",l),i&&t.look!=="handDrawn"&&m.selectChildren("path").attr("style",i),m.attr("transform",`translate(${-a/2}, ${-s/2})`),ft(t,m),t.intersect=function(g){return Z.info("Pill intersect",t,{points:d}),lt.polygon(t,d,g)},n}var zie=z(()=>{"use strict";St();Wt();Kt();Ht();jt();o($ie,"hourglass")});async function Gie(e,t,{config:{themeVariables:r,flowchart:i}}){let{labelStyles:n}=ct(t);t.labelStyle=n;let a=t.assetHeight??48,s=t.assetWidth??48,l=Math.max(a,s),u=i?.wrappingWidth;t.width=Math.max(l,u??0);let{shapeSvg:h,bbox:d,label:f}=await At(e,t,"icon-shape default"),p=t.pos==="t",m=l,g=l,{nodeBorder:y}=r,{stylesMap:v}=kc(t),x=-g/2,b=-m/2,T=t.label?8:0,w=ut.svg(h),C=mt(t,{stroke:"none",fill:"none"});t.look!=="handDrawn"&&(C.roughness=0,C.fillStyle="solid");let k=w.rectangle(x,b,g,m,C),E=Math.max(g,d.width),A=m+d.height+T,N=w.rectangle(-E/2,-A/2,E,A,{...C,fill:"transparent",stroke:"none"}),P=h.insert(()=>k,":first-child"),I=h.insert(()=>N);if(t.icon){let D=h.append("g");D.html(`<g>${await ks(t.icon,{height:l,width:l,fallbackPrefix:""})}</g>`);let _=D.node().getBBox(),R=_.width,M=_.height,L=_.x,B=_.y;D.attr("transform",`translate(${-R/2-L},${p?d.height/2+T/2-M/2-B:-d.height/2-T/2-M/2-B})`),D.attr("style",`color: ${v.get("stroke")??y};`)}return f.attr("transform",`translate(${-d.width/2-(d.x-(d.left??0))},${p?-A/2:A/2-d.height})`),P.attr("transform",`translate(0,${p?d.height/2+T/2:-d.height/2-T/2})`),ft(t,I),t.intersect=function(D){if(Z.info("iconSquare intersect",t,D),!t.label)return lt.rect(t,D);let _=t.x??0,R=t.y??0,M=t.height??0,L=[];return p?L=[{x:_-d.width/2,y:R-M/2},{x:_+d.width/2,y:R-M/2},{x:_+d.width/2,y:R-M/2+d.height+T},{x:_+g/2,y:R-M/2+d.height+T},{x:_+g/2,y:R+M/2},{x:_-g/2,y:R+M/2},{x:_-g/2,y:R-M/2+d.height+T},{x:_-d.width/2,y:R-M/2+d.height+T}]:L=[{x:_-g/2,y:R-M/2},{x:_+g/2,y:R-M/2},{x:_+g/2,y:R-M/2+m},{x:_+d.width/2,y:R-M/2+m},{x:_+d.width/2/2,y:R+M/2},{x:_-d.width/2,y:R+M/2},{x:_-d.width/2,y:R-M/2+m},{x:_-g/2,y:R-M/2+m}],lt.polygon(t,L,D)},h}var Vie=z(()=>{"use strict";jt();St();uc();Kt();Ht();Wt();o(Gie,"icon")});async function Wie(e,t,{config:{themeVariables:r,flowchart:i}}){let{labelStyles:n}=ct(t);t.labelStyle=n;let a=t.assetHeight??48,s=t.assetWidth??48,l=Math.max(a,s),u=i?.wrappingWidth;t.width=Math.max(l,u??0);let{shapeSvg:h,bbox:d,label:f}=await At(e,t,"icon-shape default"),p=20,m=t.label?8:0,g=t.pos==="t",{nodeBorder:y,mainBkg:v}=r,{stylesMap:x}=kc(t),b=ut.svg(h),T=mt(t,{});t.look!=="handDrawn"&&(T.roughness=0,T.fillStyle="solid");let w=x.get("fill");T.stroke=w??v;let C=h.append("g");t.icon&&C.html(`<g>${await ks(t.icon,{height:l,width:l,fallbackPrefix:""})}</g>`);let k=C.node().getBBox(),E=k.width,A=k.height,N=k.x,P=k.y,I=Math.max(E,A)*Math.SQRT2+p*2,D=b.circle(0,0,I,T),_=Math.max(I,d.width),R=I+d.height+m,M=b.rectangle(-_/2,-R/2,_,R,{...T,fill:"transparent",stroke:"none"}),L=h.insert(()=>D,":first-child"),B=h.insert(()=>M);return C.attr("transform",`translate(${-E/2-N},${g?d.height/2+m/2-A/2-P:-d.height/2-m/2-A/2-P})`),C.attr("style",`color: ${x.get("stroke")??y};`),f.attr("transform",`translate(${-d.width/2-(d.x-(d.left??0))},${g?-R/2:R/2-d.height})`),L.attr("transform",`translate(0,${g?d.height/2+m/2:-d.height/2-m/2})`),ft(t,B),t.intersect=function(O){return Z.info("iconSquare intersect",t,O),lt.rect(t,O)},h}var qie=z(()=>{"use strict";jt();St();uc();Kt();Ht();Wt();o(Wie,"iconCircle")});async function Uie(e,t,{config:{themeVariables:r,flowchart:i}}){let{labelStyles:n}=ct(t);t.labelStyle=n;let a=t.assetHeight??48,s=t.assetWidth??48,l=Math.max(a,s),u=i?.wrappingWidth;t.width=Math.max(l,u??0);let{shapeSvg:h,bbox:d,halfPadding:f,label:p}=await At(e,t,"icon-shape default"),m=t.pos==="t",g=l+f*2,y=l+f*2,{nodeBorder:v,mainBkg:x}=r,{stylesMap:b}=kc(t),T=-y/2,w=-g/2,C=t.label?8:0,k=ut.svg(h),E=mt(t,{});t.look!=="handDrawn"&&(E.roughness=0,E.fillStyle="solid");let A=b.get("fill");E.stroke=A??x;let N=k.path(Rs(T,w,y,g,5),E),P=Math.max(y,d.width),I=g+d.height+C,D=k.rectangle(-P/2,-I/2,P,I,{...E,fill:"transparent",stroke:"none"}),_=h.insert(()=>N,":first-child").attr("class","icon-shape2"),R=h.insert(()=>D);if(t.icon){let M=h.append("g");M.html(`<g>${await ks(t.icon,{height:l,width:l,fallbackPrefix:""})}</g>`);let L=M.node().getBBox(),B=L.width,O=L.height,$=L.x,G=L.y;M.attr("transform",`translate(${-B/2-$},${m?d.height/2+C/2-O/2-G:-d.height/2-C/2-O/2-G})`),M.attr("style",`color: ${b.get("stroke")??v};`)}return p.attr("transform",`translate(${-d.width/2-(d.x-(d.left??0))},${m?-I/2:I/2-d.height})`),_.attr("transform",`translate(0,${m?d.height/2+C/2:-d.height/2-C/2})`),ft(t,R),t.intersect=function(M){if(Z.info("iconSquare intersect",t,M),!t.label)return lt.rect(t,M);let L=t.x??0,B=t.y??0,O=t.height??0,$=[];return m?$=[{x:L-d.width/2,y:B-O/2},{x:L+d.width/2,y:B-O/2},{x:L+d.width/2,y:B-O/2+d.height+C},{x:L+y/2,y:B-O/2+d.height+C},{x:L+y/2,y:B+O/2},{x:L-y/2,y:B+O/2},{x:L-y/2,y:B-O/2+d.height+C},{x:L-d.width/2,y:B-O/2+d.height+C}]:$=[{x:L-y/2,y:B-O/2},{x:L+y/2,y:B-O/2},{x:L+y/2,y:B-O/2+g},{x:L+d.width/2,y:B-O/2+g},{x:L+d.width/2/2,y:B+O/2},{x:L-d.width/2,y:B+O/2},{x:L-d.width/2,y:B-O/2+g},{x:L-y/2,y:B-O/2+g}],lt.polygon(t,$,M)},h}var Hie=z(()=>{"use strict";jt();St();uc();Kt();Ht();_p();Wt();o(Uie,"iconRounded")});async function Yie(e,t,{config:{themeVariables:r,flowchart:i}}){let{labelStyles:n}=ct(t);t.labelStyle=n;let a=t.assetHeight??48,s=t.assetWidth??48,l=Math.max(a,s),u=i?.wrappingWidth;t.width=Math.max(l,u??0);let{shapeSvg:h,bbox:d,halfPadding:f,label:p}=await At(e,t,"icon-shape default"),m=t.pos==="t",g=l+f*2,y=l+f*2,{nodeBorder:v,mainBkg:x}=r,{stylesMap:b}=kc(t),T=-y/2,w=-g/2,C=t.label?8:0,k=ut.svg(h),E=mt(t,{});t.look!=="handDrawn"&&(E.roughness=0,E.fillStyle="solid");let A=b.get("fill");E.stroke=A??x;let N=k.path(Rs(T,w,y,g,.1),E),P=Math.max(y,d.width),I=g+d.height+C,D=k.rectangle(-P/2,-I/2,P,I,{...E,fill:"transparent",stroke:"none"}),_=h.insert(()=>N,":first-child"),R=h.insert(()=>D);if(t.icon){let M=h.append("g");M.html(`<g>${await ks(t.icon,{height:l,width:l,fallbackPrefix:""})}</g>`);let L=M.node().getBBox(),B=L.width,O=L.height,$=L.x,G=L.y;M.attr("transform",`translate(${-B/2-$},${m?d.height/2+C/2-O/2-G:-d.height/2-C/2-O/2-G})`),M.attr("style",`color: ${b.get("stroke")??v};`)}return p.attr("transform",`translate(${-d.width/2-(d.x-(d.left??0))},${m?-I/2:I/2-d.height})`),_.attr("transform",`translate(0,${m?d.height/2+C/2:-d.height/2-C/2})`),ft(t,R),t.intersect=function(M){if(Z.info("iconSquare intersect",t,M),!t.label)return lt.rect(t,M);let L=t.x??0,B=t.y??0,O=t.height??0,$=[];return m?$=[{x:L-d.width/2,y:B-O/2},{x:L+d.width/2,y:B-O/2},{x:L+d.width/2,y:B-O/2+d.height+C},{x:L+y/2,y:B-O/2+d.height+C},{x:L+y/2,y:B+O/2},{x:L-y/2,y:B+O/2},{x:L-y/2,y:B-O/2+d.height+C},{x:L-d.width/2,y:B-O/2+d.height+C}]:$=[{x:L-y/2,y:B-O/2},{x:L+y/2,y:B-O/2},{x:L+y/2,y:B-O/2+g},{x:L+d.width/2,y:B-O/2+g},{x:L+d.width/2/2,y:B+O/2},{x:L-d.width/2,y:B+O/2},{x:L-d.width/2,y:B-O/2+g},{x:L-y/2,y:B-O/2+g}],lt.polygon(t,$,M)},h}var jie=z(()=>{"use strict";jt();St();uc();Kt();_p();Ht();Wt();o(Yie,"iconSquare")});async function Xie(e,t,{config:{flowchart:r}}){let i=new Image;i.src=t?.img??"",await i.decode();let n=Number(i.naturalWidth.toString().replace("px","")),a=Number(i.naturalHeight.toString().replace("px",""));t.imageAspectRatio=n/a;let{labelStyles:s}=ct(t);t.labelStyle=s;let l=r?.wrappingWidth;t.defaultWidth=r?.wrappingWidth;let u=Math.max(t.label?l??0:0,t?.assetWidth??n),h=t.constraint==="on"&&t?.assetHeight?t.assetHeight*t.imageAspectRatio:u,d=t.constraint==="on"?h/t.imageAspectRatio:t?.assetHeight??a;t.width=Math.max(h,l??0);let{shapeSvg:f,bbox:p,label:m}=await At(e,t,"image-shape default"),g=t.pos==="t",y=-h/2,v=-d/2,x=t.label?8:0,b=ut.svg(f),T=mt(t,{});t.look!=="handDrawn"&&(T.roughness=0,T.fillStyle="solid");let w=b.rectangle(y,v,h,d,T),C=Math.max(h,p.width),k=d+p.height+x,E=b.rectangle(-C/2,-k/2,C,k,{...T,fill:"none",stroke:"none"}),A=f.insert(()=>w,":first-child"),N=f.insert(()=>E);if(t.img){let P=f.append("image");P.attr("href",t.img),P.attr("width",h),P.attr("height",d),P.attr("preserveAspectRatio","none"),P.attr("transform",`translate(${-h/2},${g?k/2-d:-k/2})`)}return m.attr("transform",`translate(${-p.width/2-(p.x-(p.left??0))},${g?-d/2-p.height/2-x/2:d/2-p.height/2+x/2})`),A.attr("transform",`translate(0,${g?p.height/2+x/2:-p.height/2-x/2})`),ft(t,N),t.intersect=function(P){if(Z.info("iconSquare intersect",t,P),!t.label)return lt.rect(t,P);let I=t.x??0,D=t.y??0,_=t.height??0,R=[];return g?R=[{x:I-p.width/2,y:D-_/2},{x:I+p.width/2,y:D-_/2},{x:I+p.width/2,y:D-_/2+p.height+x},{x:I+h/2,y:D-_/2+p.height+x},{x:I+h/2,y:D+_/2},{x:I-h/2,y:D+_/2},{x:I-h/2,y:D-_/2+p.height+x},{x:I-p.width/2,y:D-_/2+p.height+x}]:R=[{x:I-h/2,y:D-_/2},{x:I+h/2,y:D-_/2},{x:I+h/2,y:D-_/2+d},{x:I+p.width/2,y:D-_/2+d},{x:I+p.width/2/2,y:D+_/2},{x:I-p.width/2,y:D+_/2},{x:I-p.width/2,y:D-_/2+d},{x:I-h/2,y:D-_/2+d}],lt.polygon(t,R,P)},f}var Kie=z(()=>{"use strict";jt();St();Kt();Ht();Wt();o(Xie,"imageSquare")});async function Zie(e,t){let{labelStyles:r,nodeStyles:i}=ct(t);t.labelStyle=r;let n=t.padding??0,a=n,s=t.look==="neo"?n*2:n,{shapeSvg:l,bbox:u}=await At(e,t,Ct(t)),h=Math.max(u.width+(s??0)*2,t?.width??0),d=Math.max(u.height+(a??0)*2,t?.height??0),f=[{x:0,y:0},{x:h,y:0},{x:h+3*d/6,y:-d},{x:-3*d/6,y:-d}],p,{cssStyles:m}=t;if(t.look==="handDrawn"){let g=ut.svg(l),y=mt(t,{}),v=tr(f),x=g.path(v,y);p=l.insert(()=>x,":first-child").attr("transform",`translate(${-h/2}, ${d/2})`),m&&p.attr("style",m)}else p=Ma(l,h,d,f);return i&&p.attr("style",i),t.width=h,t.height=d,ft(t,p),t.intersect=function(g){return lt.polygon(t,f,g)},l}var Qie=z(()=>{"use strict";Wt();Kt();Ht();jt();Fu();o(Zie,"inv_trapezoid")});async function Jie(e,t){let{shapeSvg:r,bbox:i,label:n}=await At(e,t,"label"),a=r.insert("rect",":first-child");return a.attr("width",.1).attr("height",.1),r.attr("class","label edgeLabel"),n.attr("transform",`translate(${-(i.width/2)-(i.x-(i.left??0))}, ${-(i.height/2)-(i.y-(i.top??0))})`),ft(t,a),t.intersect=function(u){return lt.rect(t,u)},r}var ene=z(()=>{"use strict";Dp();Wt();Kt();o(Jie,"labelRect")});async function tne(e,t){let{labelStyles:r,nodeStyles:i}=ct(t);t.labelStyle=r;let n=t.padding??0,a=n,s=t.look==="neo"?n*2:n,{shapeSvg:l,bbox:u}=await At(e,t,Ct(t)),h=(t?.height??u.height)+a,d=(t?.width??u.width)+s,f=[{x:0,y:0},{x:d+3*h/6,y:0},{x:d,y:-h},{x:-(3*h)/6,y:-h}],p,{cssStyles:m}=t;if(t.look==="handDrawn"){let g=ut.svg(l),y=mt(t,{}),v=tr(f),x=g.path(v,y);p=l.insert(()=>x,":first-child").attr("transform",`translate(${-d/2}, ${h/2})`),m&&p.attr("style",m)}else p=Ma(l,d,h,f);return i&&p.attr("style",i),t.width=d,t.height=h,ft(t,p),t.intersect=function(g){return lt.polygon(t,f,g)},l}var rne=z(()=>{"use strict";Wt();Kt();Ht();jt();Fu();o(tne,"lean_left")});async function ine(e,t){let{labelStyles:r,nodeStyles:i}=ct(t);t.labelStyle=r;let n=t.padding??0,a=n,s=t.look==="neo"?n*2:n,{shapeSvg:l,bbox:u}=await At(e,t,Ct(t)),h=(t?.height??u.height)+a,d=(t?.width??u.width)+s,f=[{x:-3*h/6,y:0},{x:d,y:0},{x:d+3*h/6,y:-h},{x:0,y:-h}],p,{cssStyles:m}=t;if(t.look==="handDrawn"){let g=ut.svg(l),y=mt(t,{}),v=tr(f),x=g.path(v,y);p=l.insert(()=>x,":first-child").attr("transform",`translate(${-d/2}, ${h/2})`),m&&p.attr("style",m)}else p=Ma(l,d,h,f);return i&&p.attr("style",i),t.width=d,t.height=h,ft(t,p),t.intersect=function(g){return lt.polygon(t,f,g)},l}var nne=z(()=>{"use strict";Wt();Kt();Ht();jt();Fu();o(ine,"lean_right")});function ane(e,t){let{labelStyles:r,nodeStyles:i}=ct(t);t.label="",t.labelStyle=r;let n=e.insert("g").attr("class",Ct(t)).attr("id",t.domId??t.id),{cssStyles:a}=t,s=Math.max(35,t?.width??0),l=Math.max(35,t?.height??0),u=7,h=[{x:s,y:0},{x:0,y:l+u/2},{x:s-2*u,y:l+u/2},{x:0,y:2*l},{x:s,y:l-u/2},{x:2*u,y:l-u/2}],d=ut.svg(n),f=mt(t,{});t.look!=="handDrawn"&&(f.roughness=0,f.fillStyle="solid");let p=tr(h),m=d.path(p,f),g=n.insert(()=>m,":first-child");return g.attr("class","outer-path"),a&&t.look!=="handDrawn"&&g.selectAll("path").attr("style",a),i&&t.look!=="handDrawn"&&g.selectAll("path").attr("style",i),g.attr("transform",`translate(-${s/2},${-l})`),ft(t,g),t.intersect=function(y){return Z.info("lightningBolt intersect",t,y),lt.polygon(t,h,y)},n}var sne=z(()=>{"use strict";St();Wt();Ht();jt();Kt();Wt();o(ane,"lightningBolt")});async function cne(e,t){let{labelStyles:r,nodeStyles:i}=ct(t);t.labelStyle=r;let n=t.padding??0,a=t.look==="neo"?16:n,s=t.look==="neo"?24:n;if(t.width||t.height){let x=t.width??0;t.width=(t.width??0)-a,t.width<lne&&(t.width=lne);let T=x/2/(2.5+x/50);t.height=(t.height??0)-s-T*3,t.height<one&&(t.height=one)}let{shapeSvg:l,bbox:u,label:h}=await At(e,t,Ct(t)),d=(t?.width?t?.width:u.width)+a*2,f=d/2,p=f/(2.5+d/50),m=(t?.height?t?.height:u.height)+p+s*2,g=m*.1,y,{cssStyles:v}=t;if(t.look==="handDrawn"){let x=ut.svg(l),b=Dqe(0,0,d,m,f,p,g),T=Rqe(0,p,d,m,f,p),w=mt(t,{}),C=x.path(b,w),k=x.path(T,w);l.insert(()=>k,":first-child").attr("class","line"),y=l.insert(()=>C,":first-child"),y.attr("class","basic label-container"),v&&y.attr("style",v)}else{let x=_qe(0,0,d,m,f,p,g);y=l.insert("path",":first-child").attr("d",x).attr("class","basic label-container outer-path").attr("style",ii(v)).attr("style",i)}return y.attr("label-offset-y",p),y.attr("transform",`translate(${-d/2}, ${-(m/2+p)})`),ft(t,y),h.attr("transform",`translate(${-(u.width/2)-(u.x-(u.left??0))}, ${-(u.height/2)+p-(u.y-(u.top??0))})`),t.intersect=function(x){let b=lt.rect(t,x),T=b.x-(t.x??0);if(f!=0&&(Math.abs(T)<(t.width??0)/2||Math.abs(T)==(t.width??0)/2&&Math.abs(b.y-(t.y??0))>(t.height??0)/2-p)){let w=p*p*(1-T*T/(f*f));w>0&&(w=Math.sqrt(w)),w=p-w,x.y-(t.y??0)>0&&(w=-w),b.y+=w}return b},l}var _qe,Dqe,Rqe,one,lne,une=z(()=>{"use strict";Wt();Kt();Ht();jt();Xt();_qe=o((e,t,r,i,n,a,s)=>[`M${e},${t+a}`,`a${n},${a} 0,0,0 ${r},0`,`a${n},${a} 0,0,0 ${-r},0`,`l0,${i}`,`a${n},${a} 0,0,0 ${r},0`,`l0,${-i}`,`M${e},${t+a+s}`,`a${n},${a} 0,0,0 ${r},0`].join(" "),"createCylinderPathD"),Dqe=o((e,t,r,i,n,a,s)=>[`M${e},${t+a}`,`M${e+r},${t+a}`,`a${n},${a} 0,0,0 ${-r},0`,`l0,${i}`,`a${n},${a} 0,0,0 ${r},0`,`l0,${-i}`,`M${e},${t+a+s}`,`a${n},${a} 0,0,0 ${r},0`].join(" "),"createOuterCylinderPathD"),Rqe=o((e,t,r,i,n,a)=>[`M${e-r/2},${-i/2}`,`a${n},${a} 0,0,0 ${r},0`].join(" "),"createInnerCylinderPathD"),one=10,lne=10;o(cne,"linedCylinder")});async function hne(e,t){let{labelStyles:r,nodeStyles:i}=ct(t);t.labelStyle=r;let n=t.padding??0,a=t.look==="neo"?16:n,s=t.look==="neo"?12:n;if(t.width||t.height){let w=t.width;t.width=(w??0)*10/11-a*2,t.width<10&&(t.width=10),t.height=(t?.height??0)-s*2,t.height<10&&(t.height=10)}let{shapeSvg:l,bbox:u,label:h}=await At(e,t,Ct(t)),d=(t?.width?t?.width:u.width)+(a??0)*2,f=(t?.height?t?.height:u.height)+(s??0)*2,p=t.look==="neo"?f/4:f/8,m=f+p,{cssStyles:g}=t,y=ut.svg(l),v=mt(t,{});t.look!=="handDrawn"&&(v.roughness=0,v.fillStyle="solid");let x=[{x:-d/2-d/2*.1,y:-m/2},{x:-d/2-d/2*.1,y:m/2},...Bo(-d/2-d/2*.1,m/2,d/2+d/2*.1,m/2,p,.8),{x:d/2+d/2*.1,y:-m/2},{x:-d/2-d/2*.1,y:-m/2},{x:-d/2,y:-m/2},{x:-d/2,y:m/2*1.1},{x:-d/2,y:-m/2}],b=y.polygon(x.map(w=>[w.x,w.y]),v),T=l.insert(()=>b,":first-child");return T.attr("class","basic label-container outer-path"),g&&t.look!=="handDrawn"&&T.selectAll("path").attr("style",g),i&&t.look!=="handDrawn"&&T.selectAll("path").attr("style",i),T.attr("transform",`translate(0,${-p/2})`),h.attr("transform",`translate(${-d/2+(t.padding??0)+d/2*.1/2-(u.x-(u.left??0))},${-f/2+(t.padding??0)-p/2-(u.y-(u.top??0))})`),ft(t,T),t.intersect=function(w){return lt.polygon(t,x,w)},l}var dne=z(()=>{"use strict";Wt();Kt();jt();Ht();o(hne,"linedWaveEdgedRect")});async function fne(e,t){let{labelStyles:r,nodeStyles:i}=ct(t);t.labelStyle=r;let n=t.padding??0,a=t.look==="neo"?16:n,s=t.look==="neo"?12:n,l=t.look==="neo"?10:5;(t.width||t.height)&&(t.width=Math.max((t?.width??0)-a*2-2*l,10),t.height=Math.max((t?.height??0)-s*2-2*l,10));let{shapeSvg:u,bbox:h,label:d}=await At(e,t,Ct(t)),f=(t?.width?t?.width:h.width)+a*2+2*l,p=(t?.height?t?.height:h.height)+s*2+2*l,m=f-2*l,g=p-2*l,y=-m/2,v=-g/2,{cssStyles:x}=t,b=ut.svg(u),T=mt(t,{}),w=[{x:y-l,y:v+l},{x:y-l,y:v+g+l},{x:y+m-l,y:v+g+l},{x:y+m-l,y:v+g},{x:y+m,y:v+g},{x:y+m,y:v+g-l},{x:y+m+l,y:v+g-l},{x:y+m+l,y:v-l},{x:y+l,y:v-l},{x:y+l,y:v},{x:y,y:v},{x:y,y:v+l}],C=[{x:y,y:v+l},{x:y+m-l,y:v+l},{x:y+m-l,y:v+g},{x:y+m,y:v+g},{x:y+m,y:v},{x:y,y:v}];t.look!=="handDrawn"&&(T.roughness=0,T.fillStyle="solid");let k=tr(w),E=b.path(k,T),A=tr(C),N=b.path(A,T);t.look!=="handDrawn"&&(E=uN(E),N=uN(N));let P=u.insert("g",":first-child");return P.insert(()=>E),P.insert(()=>N),P.attr("class","basic label-container outer-path"),x&&t.look!=="handDrawn"&&P.selectAll("path").attr("style",x),i&&t.look!=="handDrawn"&&P.selectAll("path").attr("style",i),d.attr("transform",`translate(${-(h.width/2)-l-(h.x-(h.left??0))}, ${-(h.height/2)+l-(h.y-(h.top??0))})`),ft(t,P),t.intersect=function(I){return lt.polygon(t,w,I)},u}var pne=z(()=>{"use strict";Wt();Ht();jt();Kt();o(fne,"multiRect")});async function mne(e,t){let{labelStyles:r,nodeStyles:i}=ct(t);t.labelStyle=r;let{shapeSvg:n,bbox:a,label:s}=await At(e,t,Ct(t)),l=t.padding??0,u=t.look==="neo"?16:l,h=t.look==="neo"?12:l,d=!0;(t.width||t.height)&&(d=!1,t.width=(t?.width??0)-u*2,t.height=(t?.height??0)-h*3);let f=Math.max(a.width,t?.width??0)+u*2,p=Math.max(a.height,t?.height??0)+h*3,m=t.look==="neo"?p/4:p/8,g=p+(d?m/2:-m/2),y=-f/2,v=-g/2,x=10,{cssStyles:b}=t,T=Bo(y-x,v+g+x,y+f-x,v+g+x,m,.8),w=T?.[T.length-1],C=[{x:y-x,y:v+x},{x:y-x,y:v+g+x},...T,{x:y+f-x,y:w.y-x},{x:y+f,y:w.y-x},{x:y+f,y:w.y-2*x},{x:y+f+x,y:w.y-2*x},{x:y+f+x,y:v-x},{x:y+x,y:v-x},{x:y+x,y:v},{x:y,y:v},{x:y,y:v+x}],k=[{x:y,y:v+x},{x:y+f-x,y:v+x},{x:y+f-x,y:w.y-x},{x:y+f,y:w.y-x},{x:y+f,y:v},{x:y,y:v}],E=ut.svg(n),A=mt(t,{});t.look!=="handDrawn"&&(A.roughness=0,A.fillStyle="solid");let N=tr(C),P=E.path(N,A),I=tr(k),D=E.path(I,A),_=n.insert(()=>P,":first-child");return _.insert(()=>D),_.attr("class","basic label-container outer-path"),b&&t.look!=="handDrawn"&&_.selectAll("path").attr("style",b),i&&t.look!=="handDrawn"&&_.selectAll("path").attr("style",i),_.attr("transform",`translate(0,${-m/2})`),s.attr("transform",`translate(${-(a.width/2)-x-(a.x-(a.left??0))}, ${-(a.height/2)+x-m/2-(a.y-(a.top??0))})`),ft(t,_),t.intersect=function(R){return lt.polygon(t,C,R)},n}var gne=z(()=>{"use strict";Wt();Kt();jt();Ht();o(mne,"multiWaveEdgedRectangle")});async function yne(e,t,{config:{themeVariables:r}}){let{labelStyles:i,nodeStyles:n}=ct(t);t.labelStyle=i,t.useHtmlLabels||Mr(Nt())||(t.centerLabel=!0);let{shapeSvg:s,bbox:l,label:u}=await At(e,t,Ct(t)),h=Math.max(l.width+(t.padding??0)*2,t?.width??0),d=Math.max(l.height+(t.padding??0)*2,t?.height??0),f=-h/2,p=-d/2,{cssStyles:m}=t,g=ut.svg(s),y=mt(t,{fill:r.noteBkgColor,stroke:r.noteBorderColor});t.look!=="handDrawn"&&(y.roughness=0,y.fillStyle="solid");let v=g.rectangle(f,p,h,d,y),x=s.insert(()=>v,":first-child");return x.attr("class","basic label-container outer-path"),u.attr("class","label noteLabel"),m&&t.look!=="handDrawn"&&x.selectAll("path").attr("style",m),n&&t.look!=="handDrawn"&&x.selectAll("path").attr("style",n),u.attr("transform",`translate(${-l.width/2-(l.x-(l.left??0))}, ${-(l.height/2)-(l.y-(l.top??0))})`),ft(t,x),t.intersect=function(b){return lt.rect(t,b)},s}var vne=z(()=>{"use strict";jt();Kt();Ht();Wt();br();br();o(yne,"note")});async function xne(e,t){let{labelStyles:r,nodeStyles:i}=ct(t);t.labelStyle=r;let{shapeSvg:n,bbox:a}=await At(e,t,Ct(t)),s=a.width+(t.padding??0),l=a.height+(t.padding??0),u=s+l,h=.5,d=[{x:u/2,y:0},{x:u,y:-u/2},{x:u/2,y:-u},{x:0,y:-u/2}],f,{cssStyles:p}=t;if(t.look==="handDrawn"){let m=ut.svg(n),g=mt(t,{}),y=Lqe(0,0,u),v=m.path(y,g);f=n.insert(()=>v,":first-child").attr("transform",`translate(${-u/2+h}, ${u/2})`),p&&f.attr("style",p)}else f=Ma(n,u,u,d),f.attr("transform",`translate(${-u/2+h}, ${u/2})`);return i&&f.attr("style",i),ft(t,f),t.calcIntersect=function(m,g){let y=m.width,v=[{x:y/2,y:0},{x:y,y:-y/2},{x:y/2,y:-y},{x:0,y:-y/2}],x=lt.polygon(m,v,g);return{x:x.x-.5,y:x.y-.5}},t.intersect=function(m){return this.calcIntersect(t,m)},n}var Lqe,bne=z(()=>{"use strict";Wt();Kt();Ht();jt();Fu();Lqe=o((e,t,r)=>[`M${e+r/2},${t}`,`L${e+r},${t-r/2}`,`L${e+r/2},${t-r}`,`L${e},${t-r/2}`,"Z"].join(" "),"createDecisionBoxPathD");o(xne,"question")});async function Tne(e,t){let{labelStyles:r,nodeStyles:i}=ct(t);t.labelStyle=r;let n=t.padding??0,a=t.look==="neo"?21:n??0,s=t.look==="neo"?12:n??0,{shapeSvg:l,bbox:u,label:h}=await At(e,t,Ct(t)),d=(t?.width??u.width)+(t.look==="neo"?a*2:a),f=(t?.height??u.height)+(t.look==="neo"?s*2:s),p=-d/2,m=-f/2,g=m/2,y=[{x:p+g,y:m},{x:p,y:0},{x:p+g,y:-m},{x:-p,y:-m},{x:-p,y:m}],{cssStyles:v}=t,x=ut.svg(l),b=mt(t,{});t.look!=="handDrawn"&&(b.roughness=0,b.fillStyle="solid");let T=tr(y),w=x.path(T,b),C=l.insert(()=>w,":first-child");return C.attr("class","basic label-container outer-path"),v&&t.look!=="handDrawn"&&C.selectAll("path").attr("style",v),i&&t.look!=="handDrawn"&&C.selectAll("path").attr("style",i),C.attr("transform",`translate(${-g/2},0)`),h.attr("transform",`translate(${-g/2-u.width/2-(u.x-(u.left??0))}, ${-(u.height/2)-(u.y-(u.top??0))})`),ft(t,C),t.intersect=function(k){return lt.polygon(t,y,k)},l}var Cne=z(()=>{"use strict";Wt();Kt();Ht();jt();o(Tne,"rect_left_inv_arrow")});var Mqe,Nl,z4=z(()=>{"use strict";br();Ut();_s();Mqe=o(async(e,t,r,i=!1,n=!1)=>{let a=t||"";typeof a=="object"&&(a=a[0]);let s=ge(),l=Mr(s);return await wi(e,a,{style:r,isTitle:i,useHtmlLabels:l,markdown:!1,isNode:n,width:Number.POSITIVE_INFINITY},s)},"createLabel"),Nl=Mqe});async function kne(e,t){let{labelStyles:r,nodeStyles:i}=ct(t);t.labelStyle=r;let n;t.cssClasses?n="node "+t.cssClasses:n="node default";let a=e.insert("g").attr("class",n).attr("id",t.domId||t.id),s=a.insert("g"),l=a.insert("g").attr("class","label").attr("style",i),u=t.description,h=t.label,d=await Nl(l,h,t.labelStyle,!0,!0),f={width:0,height:0};if(Mr(ge())){let A=d.children[0],N=Je(d);f=A.getBoundingClientRect(),N.attr("width",f.width),N.attr("height",f.height)}Z.info("Text 2",u);let p=u||[],m=d.getBBox(),g=await Nl(l,Array.isArray(p)?p.join("<br/>"):p,t.labelStyle,!0,!0),y=g.children[0],v=Je(g);f=y.getBoundingClientRect(),v.attr("width",f.width),v.attr("height",f.height);let x=(t.padding||0)/2;Je(g).attr("transform","translate( "+(f.width>m.width?0:(m.width-f.width)/2)+", "+(m.height+x+5)+")"),Je(d).attr("transform","translate( "+(f.width<m.width?0:-(m.width-f.width)/2)+", 0)"),f=l.node().getBBox(),l.attr("transform","translate("+-f.width/2+", "+(-f.height/2-x+3)+")");let b=f.width+(t.padding||0),T=f.height+(t.padding||0),w=-f.width/2-x,C=-f.height/2-x,k,E;if(t.look==="handDrawn"){let A=ut.svg(a),N=mt(t,{}),P=A.path(Rs(w,C,b,T,t.rx||0),N),I=A.line(-f.width/2-x,-f.height/2-x+m.height+x,f.width/2+x,-f.height/2-x+m.height+x,N);E=a.insert(()=>(Z.debug("Rough node insert CXC",P),I),":first-child"),k=a.insert(()=>(Z.debug("Rough node insert CXC",P),P),":first-child")}else k=s.insert("rect",":first-child"),E=s.insert("line"),k.attr("class","outer title-state").attr("style",i).attr("x",-f.width/2-x).attr("y",-f.height/2-x).attr("width",f.width+(t.padding||0)).attr("height",f.height+(t.padding||0)),E.attr("class","divider").attr("x1",-f.width/2-x).attr("x2",f.width/2+x).attr("y1",-f.height/2-x+m.height+x).attr("y2",-f.height/2-x+m.height+x);return ft(t,k),t.intersect=function(A){return lt.rect(t,A)},a}var wne=z(()=>{"use strict";Rr();Wt();z4();Kt();Ht();jt();Ut();_p();St();br();o(kne,"rectWithTitle")});async function Sne(e,t,{config:{themeVariables:r}}){let i=r?.radius??5,n={rx:i,ry:i,classes:"",labelPaddingX:(t?.padding??0)*1,labelPaddingY:(t?.padding??0)*1};return Ml(e,t,n)}var Ene=z(()=>{"use strict";Dp();o(Sne,"roundedRect")});async function Ane(e,t){let{labelStyles:r,nodeStyles:i}=ct(t);t.labelStyle=r;let n=t.look==="neo"?16:t.padding??0,a=t.look==="neo"?12:t.padding??0,{shapeSvg:s,bbox:l,label:u}=await At(e,t,Ct(t)),h=(t?.width??l.width)+n*2+(t.look==="neo"?Rp:Rp*2),d=(t?.height??l.height)+a*2,f=h-Rp,p=d,m=Rp-h/2,g=-d/2,{cssStyles:y}=t,v=ut.svg(s),x=mt(t,{});t.look!=="handDrawn"&&(x.roughness=0,x.fillStyle="solid");let b=[{x:m,y:g},{x:m+f,y:g},{x:m+f,y:g+p},{x:m-Rp,y:g+p},{x:m-Rp,y:g},{x:m,y:g},{x:m,y:g+p}],T=v.polygon(b.map(C=>[C.x,C.y]),x),w=s.insert(()=>T,":first-child");return w.attr("class","basic label-container outer-path").attr("style",ii(y)),i&&t.look!=="handDrawn"&&w.selectAll("path").attr("style",i),y&&t.look!=="handDrawn"&&w.selectAll("path").attr("style",i),u.attr("transform",`translate(${Rp/2-l.width/2-(l.x-(l.left??0))}, ${-(l.height/2)-(l.y-(l.top??0))})`),ft(t,w),t.intersect=function(C){return lt.rect(t,C)},s}var Rp,_ne=z(()=>{"use strict";Wt();Kt();Ht();jt();Xt();Rp=8;o(Ane,"shadedProcess")});async function Dne(e,t){let{labelStyles:r,nodeStyles:i}=ct(t);t.labelStyle=r;let n=t.padding??0,a=t.look==="neo"?16:n,s=t.look==="neo"?12:n;(t.width||t.height)&&(t.width=Math.max((t?.width??0)-a*2,10),t.height=Math.max((t?.height??0)/1.5-s*2,10));let{shapeSvg:l,bbox:u,label:h}=await At(e,t,Ct(t)),d=(t?.width?t?.width:u.width)+a*2,f=((t?.height?t?.height:u.height)+s*2)*1.5,p=d,m=f/1.5,g=-p/2,y=-m/2,{cssStyles:v}=t,x=ut.svg(l),b=mt(t,{});t.look!=="handDrawn"&&(b.roughness=0,b.fillStyle="solid");let T=[{x:g,y},{x:g,y:y+m},{x:g+p,y:y+m},{x:g+p,y:y-m/2}],w=tr(T),C=x.path(w,b),k=l.insert(()=>C,":first-child");return k.attr("class","basic label-container  outer-path"),v&&t.look!=="handDrawn"&&k.selectChildren("path").attr("style",v),i&&t.look!=="handDrawn"&&k.selectChildren("path").attr("style",i),k.attr("transform",`translate(0, ${m/4})`),h.attr("transform",`translate(${-p/2+(t.padding??0)-(u.x-(u.left??0))}, ${-m/4+(t.padding??0)-(u.y-(u.top??0))})`),ft(t,k),t.intersect=function(E){return lt.polygon(t,T,E)},l}var Rne=z(()=>{"use strict";Wt();Kt();Ht();jt();o(Dne,"slopedRect")});async function Lne(e,t){let r=t.padding??0,i=t.look==="neo"?16:r*2,n=t.look==="neo"?12:r,a={rx:0,ry:0,classes:"",labelPaddingX:t.labelPaddingX??i,labelPaddingY:n};return Ml(e,t,a)}var Mne=z(()=>{"use strict";Dp();o(Lne,"squareRect")});async function Nne(e,t){let{labelStyles:r,nodeStyles:i}=ct(t);t.labelStyle=r;let n=t.padding??0,a=t.look==="neo"?20:n,s=t.look==="neo"?12:n,{shapeSvg:l,bbox:u}=await At(e,t,Ct(t)),h=u.height+(t.look==="neo"?s*2:s),d=u.width+h/4+(t.look==="neo"?a*2:a),f=h/2,{cssStyles:p}=t,m=ut.svg(l),g=mt(t,{});t.look!=="handDrawn"&&(g.roughness=0,g.fillStyle="solid");let y=[{x:-d/2+f,y:-h/2},{x:d/2-f,y:-h/2},...Ep(-d/2+f,0,f,50,90,270),{x:d/2-f,y:h/2},...Ep(d/2-f,0,f,50,270,450)],v=tr(y),x=m.path(v,g),b=l.insert(()=>x,":first-child");return b.attr("class","basic label-container outer-path"),p&&t.look!=="handDrawn"&&b.selectChildren("path").attr("style",p),i&&t.look!=="handDrawn"&&b.selectChildren("path").attr("style",i),ft(t,b),t.intersect=function(T){return lt.polygon(t,y,T)},l}var Ine=z(()=>{"use strict";Wt();Kt();Ht();jt();o(Nne,"stadium")});async function One(e,t){let r={rx:t.look==="neo"?3:5,ry:t.look==="neo"?3:5,classes:"flowchart-node"};return Ml(e,t,r)}var Pne=z(()=>{"use strict";Dp();o(One,"state")});function Bne(e,t,{config:{themeVariables:r}}){let{labelStyles:i,nodeStyles:n}=ct(t);t.labelStyle=i;let{cssStyles:a}=t,{lineColor:s,stateBorder:l,nodeBorder:u,nodeShadow:h}=r;(t.width||t.height)&&((t.width??0)<14&&(t.width=14),(t.height??0)<14&&(t.height=14)),t.width||(t.width=14),t.height||(t.height=14);let d=e.insert("g").attr("class","node default").attr("id",t.domId??t.id),f=ut.svg(d),p=mt(t,{});t.look!=="handDrawn"&&(p.roughness=0,p.fillStyle="solid");let m=f.circle(0,0,t.width,{...p,stroke:s,strokeWidth:2}),g=l??u,y=(t.width??0)*5/14,v=f.circle(0,0,y,{...p,fill:g,stroke:g,strokeWidth:2,fillStyle:"solid"}),x=d.insert(()=>m,":first-child");if(x.insert(()=>v),t.look!=="handDrawn"&&x.attr("class","outer-path"),a&&x.selectAll("path").attr("style",a),n&&x.selectAll("path").attr("style",n),t.width<25&&h&&t.look!=="handDrawn"){let b=e.node()?.ownerSVGElement?.id??"",T=b?`${b}-drop-shadow-small`:"drop-shadow-small";x.attr("style",`filter:url(#${T})`)}return ft(t,x),t.intersect=function(b){return lt.circle(t,(t.width??0)/2,b)},d}var Fne=z(()=>{"use strict";jt();Kt();Ht();Wt();o(Bne,"stateEnd")});function $ne(e,t,{config:{themeVariables:r}}){let{lineColor:i,nodeShadow:n}=r;(t.width||t.height)&&((t.width??0)<14&&(t.width=14),(t.height??0)<14&&(t.height=14)),t.width||(t.width=14),t.height||(t.height=14);let a=e.insert("g").attr("class","node default").attr("id",t.domId||t.id),s;if(t.look==="handDrawn"){let u=ut.svg(a).circle(0,0,t.width,Bre(i));s=a.insert(()=>u),s.attr("class","state-start").attr("r",(t.width??7)/2).attr("width",t.width??14).attr("height",t.height??14)}else s=a.insert("circle",":first-child"),s.attr("class","state-start").attr("r",(t.width??7)/2).attr("width",t.width??14).attr("height",t.height??14);if(t.width<25&&n&&t.look!=="handDrawn"){let l=e.node()?.ownerSVGElement?.id??"",u=l?`${l}-drop-shadow-small`:"drop-shadow-small";s.attr("style",`filter:url(#${u})`)}return ft(t,s),t.intersect=function(l){return lt.circle(t,(t.width??7)/2,l)},a}var zne=z(()=>{"use strict";jt();Kt();Ht();Wt();o($ne,"stateStart")});async function Gne(e,t){let{labelStyles:r,nodeStyles:i}=ct(t);t.labelStyle=r;let n=t?.padding??8,a=t.look==="neo"?28:n,s=t.look==="neo"?12:n,{shapeSvg:l,bbox:u}=await At(e,t,Ct(t)),h=(t?.width??u.width)+2*kg+a,d=(t?.height??u.height)+s,f=h-2*kg,p=d,m=-h/2,g=-d/2,y=[{x:0,y:0},{x:f,y:0},{x:f,y:-p},{x:0,y:-p},{x:0,y:0},{x:-8,y:0},{x:f+8,y:0},{x:f+8,y:-p},{x:-8,y:-p},{x:-8,y:0}];if(t.look==="handDrawn"){let v=ut.svg(l),x=mt(t,{}),b=v.rectangle(m,g,f+16,p,x),T=v.line(m+kg,g,m+kg,g+p,x),w=v.line(m+kg+f,g,m+kg+f,g+p,x);l.insert(()=>T,":first-child"),l.insert(()=>w,":first-child");let C=l.insert(()=>b,":first-child"),{cssStyles:k}=t;C.attr("class","basic label-container").attr("style",ii(k)),ft(t,C)}else{let v=Ma(l,f,p,y);i&&v.attr("style",i),ft(t,v)}return t.intersect=function(v){return lt.polygon(t,y,v)},l}var kg,Vne=z(()=>{"use strict";Wt();Kt();Ht();jt();Fu();Xt();kg=8;o(Gne,"subroutine")});async function Wne(e,t){let{labelStyles:r,nodeStyles:i}=ct(t);t.labelStyle=r;let n=t.padding??0,a=t.look==="neo"?16:n,s=t.look==="neo"?12:n;(t.width||t.height)&&(t.height=Math.max((t?.height??0)-s*2,10),t.width=Math.max((t?.width??0)-a*2-LN*(t.height+s*2),10));let{shapeSvg:l,bbox:u}=await At(e,t,Ct(t)),h=(t?.height?t?.height:u.height)+s*2,d=LN*h,f=LN*h,m=(t?.width?t?.width:u.width)+a*2+d-d,g=h,y=-m/2,v=-g/2,{cssStyles:x}=t,b=ut.svg(l),T=mt(t,{}),w=[{x:y-d/2,y:v},{x:y+m+d/2,y:v},{x:y+m+d/2,y:v+g},{x:y-d/2,y:v+g}],C=[{x:y+m-d/2,y:v+g},{x:y+m+d/2,y:v+g},{x:y+m+d/2,y:v+g-f}];t.look!=="handDrawn"&&(T.roughness=0,T.fillStyle="solid");let k=tr(w),E=b.path(k,T),A=tr(C),N=b.path(A,{...T,fillStyle:"solid"}),P=l.insert(()=>N,":first-child");return P.insert(()=>E,":first-child"),P.attr("class","basic label-container outer-path"),x&&t.look!=="handDrawn"&&P.selectAll("path").attr("style",x),i&&t.look!=="handDrawn"&&P.selectAll("path").attr("style",i),ft(t,P),t.intersect=function(I){return lt.polygon(t,w,I)},l}var LN,qne=z(()=>{"use strict";Wt();Ht();jt();Kt();LN=.2;o(Wne,"taggedRect")});async function Une(e,t){let{labelStyles:r,nodeStyles:i}=ct(t);t.labelStyle=r;let{shapeSvg:n,bbox:a,label:s}=await At(e,t,Ct(t)),l=Math.max(a.width+(t.padding??0)*2,t?.width??0),u=Math.max(a.height+(t.padding??0)*2,t?.height??0),h=u/8,d=.2*l,f=.2*u,p=u+h,{cssStyles:m}=t,g=ut.svg(n),y=mt(t,{});t.look!=="handDrawn"&&(y.roughness=0,y.fillStyle="solid");let v=[{x:-l/2-l/2*.1,y:p/2},...Bo(-l/2-l/2*.1,p/2,l/2+l/2*.1,p/2,h,.8),{x:l/2+l/2*.1,y:-p/2},{x:-l/2-l/2*.1,y:-p/2}],x=-l/2+l/2*.1,b=-p/2-f*.4,T=[{x:x+l-d,y:(b+u)*1.3},{x:x+l,y:b+u-f},{x:x+l,y:(b+u)*.9},...Bo(x+l,(b+u)*1.25,x+l-d,(b+u)*1.3,-u*.02,.5)],w=tr(v),C=g.path(w,y),k=tr(T),E=g.path(k,{...y,fillStyle:"solid"}),A=n.insert(()=>E,":first-child");return A.insert(()=>C,":first-child"),A.attr("class","basic label-container outer-path"),m&&t.look!=="handDrawn"&&A.selectAll("path").attr("style",m),i&&t.look!=="handDrawn"&&A.selectAll("path").attr("style",i),A.attr("transform",`translate(0,${-h/2})`),s.attr("transform",`translate(${-l/2+(t.padding??0)-(a.x-(a.left??0))},${-u/2+(t.padding??0)-h/2-(a.y-(a.top??0))})`),ft(t,A),t.intersect=function(N){return lt.polygon(t,v,N)},n}var Hne=z(()=>{"use strict";Wt();Kt();jt();Ht();o(Une,"taggedWaveEdgedRectangle")});async function Yne(e,t){let{labelStyles:r,nodeStyles:i}=ct(t);t.labelStyle=r;let{shapeSvg:n,bbox:a}=await At(e,t,Ct(t)),s=Math.max(a.width+(t.padding??0),t?.width||0),l=Math.max(a.height+(t.padding??0),t?.height||0),u=-s/2,h=-l/2,d=n.insert("rect",":first-child");return d.attr("class","text").attr("style",i).attr("rx",0).attr("ry",0).attr("x",u).attr("y",h).attr("width",s).attr("height",l),ft(t,d),t.intersect=function(f){return lt.rect(t,f)},n}var jne=z(()=>{"use strict";Wt();Kt();Ht();o(Yne,"text")});async function Zne(e,t){let{labelStyles:r,nodeStyles:i}=ct(t);t.labelStyle=r;let n=t.padding??0,a=t.look==="neo"?12:n/2;if(t.width||t.height){let y=t.height??0;t.height=(t.height??0)-a,t.height<Xne&&(t.height=Xne);let x=y/2/(2.5+y/50);t.width=(t.width??0)-a-x*3,t.width<Kne&&(t.width=Kne)}let{shapeSvg:s,bbox:l,label:u}=await At(e,t,Ct(t)),h=(t.height?t.height:l.height)+a,d=h/2,f=d/(2.5+h/50),p=(t.width?t.width:l.width)+f+a,{cssStyles:m}=t,g;if(t.look==="handDrawn"){let y=ut.svg(s),v=Iqe(0,0,p,h,f,d),x=Oqe(0,0,p,h,f,d),b=y.path(v,mt(t,{})),T=y.path(x,mt(t,{fill:"none"}));g=s.insert(()=>T,":first-child"),g=s.insert(()=>b,":first-child"),g.attr("class","basic label-container"),m&&g.attr("style",m)}else{let y=Nqe(0,0,p,h,f,d);g=s.insert("path",":first-child").attr("d",y).attr("class","basic label-container").attr("style",ii(m)).attr("style",i),g.attr("class","basic label-container outer-path"),m&&g.selectAll("path").attr("style",m),i&&g.selectAll("path").attr("style",i)}return g.attr("label-offset-x",f),g.attr("transform",`translate(${-p/2}, ${h/2} )`),u.attr("transform",`translate(${-(l.width/2)-f-(l.x-(l.left??0))}, ${-(l.height/2)-(l.y-(l.top??0))})`),ft(t,g),t.intersect=function(y){let v=lt.rect(t,y),x=v.y-(t.y??0);if(d!=0&&(Math.abs(x)<(t.height??0)/2||Math.abs(x)==(t.height??0)/2&&Math.abs(v.x-(t.x??0))>(t.width??0)/2-f)){let b=f*f*(1-x*x/(d*d));b!=0&&(b=Math.sqrt(Math.abs(b))),b=f-b,y.x-(t.x??0)>0&&(b=-b),v.x+=b}return v},s}var Nqe,Iqe,Oqe,Xne,Kne,Qne=z(()=>{"use strict";Wt();Ht();jt();Kt();Xt();Nqe=o((e,t,r,i,n,a)=>`M${e},${t}
-    a${n},${a} 0,0,1 0,${-i}
+`);return mS(n)}function wse(e){return e.split(/\\n|\n|<br\s*\/?>/gi).map(t=>t.trim().match(/<[^>]+>|[^\s<>]+/g)?.map(r=>({content:r,type:"normal"}))??[])}function kse(e,t={}){let r=WZe(e,t),n=Sn.lexer(r),i=[[]],a=0;function s(l,u="normal"){l.type==="text"?l.text.split(`
+`).forEach((d,f)=>{f!==0&&(a++,i.push([])),d.split(" ").forEach(p=>{p=p.replace(/&#39;/g,"'"),p&&i[a].push({content:p,type:u})})}):l.type==="strong"||l.type==="em"?l.tokens.forEach(h=>{s(h,l.type)}):l.type==="html"&&i[a].push({content:l.text,type:"normal"})}return o(s,"processNode"),n.forEach(l=>{l.type==="paragraph"?l.tokens?.forEach(u=>{s(u)}):l.type==="html"?i[a].push({content:l.text,type:"normal"}):i[a].push({content:l.raw,type:"normal"})}),i}function Sse(e){return e?`<p>${e.replace(/\\n|\n/g,"<br />")}</p>`:""}function Ese(e,{markdownAutoWrap:t}={}){let r=Sn.lexer(e);function n(i){return i.type==="text"?t===!1?i.text.replace(/\n */g,"<br/>").replace(/ /g,"&nbsp;"):i.text.replace(/\n */g,"<br/>"):i.type==="strong"?`<strong>${i.tokens?.map(n).join("")}</strong>`:i.type==="em"?`<em>${i.tokens?.map(n).join("")}</em>`:i.type==="paragraph"?`<p>${i.tokens?.map(n).join("")}</p>`:i.type==="space"?"":i.type==="html"?`${i.text}`:i.type==="escape"?i.text:(Z.warn(`Unsupported markdown: ${i.type}`),i.raw)}return o(n,"output"),r.map(n).join("")}var Ase=F(()=>{"use strict";Cse();h8();vt();o(WZe,"preprocessMarkdown");o(wse,"nonMarkdownToLines");o(kse,"markdownToLines");o(Sse,"nonMarkdownToHTML");o(Ese,"markdownToHTML")});function qZe(e){return Intl.Segmenter?[...new Intl.Segmenter().segment(e)].map(t=>t.segment):[...e]}function HZe(e,t){let r=qZe(t.content);return Rse(e,[],r,t.type)}function Rse(e,t,r,n){if(r.length===0)return[{content:t.join(""),type:n},{content:"",type:n}];let[i,...a]=r,s=[...t,i];return e([{content:s.join(""),type:n}])?Rse(e,s,a,n):(t.length===0&&i&&(t.push(i),r.shift()),[{content:t.join(""),type:n},{content:r.join(""),type:n}])}function _se(e,t){if(e.some(({content:r})=>r.includes(`
+`)))throw new Error("splitLineToFitWidth does not support newlines in the line");return VP(e,t)}function VP(e,t,r=[],n=[]){if(e.length===0)return n.length>0&&r.push(n),r.length>0?r:[];let i="";e[0].content===" "&&(i=" ",e.shift());let a=e.shift()??{content:" ",type:"normal"},s=[...n];if(i!==""&&s.push({content:i,type:"normal"}),s.push(a),t(s))return VP(e,t,r,s);if(n.length>0)r.push(n),e.unshift(a);else if(a.content){let[l,u]=HZe(t,a);r.push([l]),u.content&&e.unshift(u)}return VP(e,t,r)}var Lse=F(()=>{"use strict";o(qZe,"splitTextToChars");o(HZe,"splitWordToFitWidth");o(Rse,"splitWordToFitWidthRecursion");o(_se,"splitLineToFitWidth");o(VP,"splitLineToFitWidthRecursion")});function Dse(e,t){t&&e.attr("style",t)}async function UZe(e,t,r,n,i=!1,a=_t()){let s=e.append("foreignObject");s.attr("width",`${Math.min(10*r,Ise)}px`),s.attr("height",`${Math.min(10*r,Ise)}px`);let l=s.append("xhtml:div"),u=ni(t.label)?await ey(t.label.replace(xt.lineBreakRegex,`
+`),a):mr(t.label,a),h=t.isNode?"nodeLabel":"edgeLabel",d=l.append("span");d.html(u),Dse(d,t.labelStyle),d.attr("class",`${h} ${n}`),Dse(l,t.labelStyle),l.style("display","table-cell"),l.style("white-space","nowrap"),l.style("line-height","1.5"),r!==Number.POSITIVE_INFINITY&&(l.style("max-width",r+"px"),l.style("text-align","center")),l.attr("xmlns","http://www.w3.org/1999/xhtml"),i&&l.attr("class","labelBkg");let f=l.node().getBoundingClientRect();return f.width===r&&(l.style("display","table"),l.style("white-space","break-spaces"),l.style("width",r+"px"),f=l.node().getBoundingClientRect()),s.node()}function WP(e,t,r,n=!1){let i=e.append("tspan").attr("class","text-outer-tspan").attr("x",0).attr("y",t*r-.1+"em").attr("dy",r+"em");return n&&i.attr("text-anchor","middle"),i}function YZe(e,t,r){let n=e.append("text"),i=WP(n,1,t);qP(i,r);let a=i.node().getComputedTextLength();return n.remove(),a}function Nse(e,t,r){let n=e.append("text"),i=WP(n,1,t);qP(i,[{content:r,type:"normal"}]);let a=i.node()?.getBoundingClientRect();return a&&n.remove(),a}function jZe(e,t,r,n=!1,i=!1){let s=t.append("g"),l=s.insert("rect").attr("class","background").attr("style","stroke: none"),u=s.append("text").attr("y","-10.1");i&&u.attr("text-anchor","middle");let h=0;for(let d of r){let f=o(m=>YZe(s,1.1,m)<=e,"checkWidth"),p=f(d)?[d]:_se(d,f);for(let m of p){let g=WP(u,h,1.1,i);qP(g,m),h++}}if(n){let d=u.node().getBBox(),f=2;return l.attr("x",d.x-f).attr("y",d.y-f).attr("width",d.width+2*f).attr("height",d.height+2*f),s.node()}else return u.node()}function Mse(e){let t=/&(amp|lt|gt);/g;return e.replace(t,(r,n)=>{switch(n){case"amp":return"&";case"lt":return"<";case"gt":return">";default:return r}})}function qP(e,t){e.text(""),t.forEach((r,n)=>{let i=e.append("tspan").attr("font-style",r.type==="em"?"italic":"normal").attr("class","text-inner-tspan").attr("font-weight",r.type==="strong"?"bold":"normal");n===0?i.text(Mse(r.content)):i.text(" "+Mse(r.content))})}async function XZe(e,t={}){let r=[];e.replace(/(fa[bklrs]?):fa-([\w-]+)/g,(i,a,s)=>(r.push((async()=>{let l=`${a}:${s}`;return await iJ(l)?await ts(l,void 0,{class:"label-icon"}):`<i class='${mr(i,t).replace(":"," ")}'></i>`})()),i));let n=await Promise.all(r);return e.replace(/(fa[bklrs]?):fa-([\w-]+)/g,()=>n.shift()??"")}var Ise,Pn,Ls=F(()=>{"use strict";$r();Vr();vt();Ase();Qt();Vl();Lse();ur();o(Dse,"applyStyle");Ise=16384;o(UZe,"addHtmlSpan");o(WP,"createTspan");o(YZe,"computeWidthOfText");o(Nse,"computeDimensionOfText");o(jZe,"createFormattedText");o(Mse,"decodeHTMLEntities");o(qP,"updateTextContentAndStyles");o(XZe,"replaceIconSubstring");Pn=o(async(e,t="",{style:r="",isTitle:n=!1,classes:i="",useHtmlLabels:a=!0,markdown:s=!0,isNode:l=!0,width:u=200,addSvgBackground:h=!1}={},d)=>{if(Z.debug("XYZ createText",t,r,n,i,a,l,"addSvgBackground: ",h),a){let f=s?Ese(t,d):Sse(t),p=await XZe(Rs(f),d),m=t.replace(/\\\\/g,"\\"),g={isNode:l,label:ni(t)?m:p,labelStyle:r.replace("fill:","color:")};return await UZe(e,g,u,i,h,d)}else{let f=Rs(t.replace(/<br\s*\/?>/g,"<br/>")),p=s?kse(f.replace("<br>","<br/>"),d):wse(f),m=jZe(u,e,p,t?h:!1,!l);if(l){/stroke:/.exec(r)&&(r=r.replace("stroke:","lineColor:"));let g=r.replace(/stroke:[^;]+;?/g,"").replace(/stroke-width:[^;]+;?/g,"").replace(/fill:[^;]+;?/g,"").replace(/color:/g,"fill:");et(m).attr("style",g)}else{let g=r.replace(/stroke:[^;]+;?/g,"").replace(/stroke-width:[^;]+;?/g,"").replace(/fill:[^;]+;?/g,"").replace(/background:/g,"fill:");et(m).select("rect").attr("style",g.replace(/background:/g,"fill:"));let y=r.replace(/stroke:[^;]+;?/g,"").replace(/stroke-width:[^;]+;?/g,"").replace(/fill:[^;]+;?/g,"").replace(/color:/g,"fill:");et(m).select("text").attr("style",y)}return n?et(m).selectAll("tspan.text-outer-tspan").classed("title-row",!0):et(m).selectAll("tspan.text-outer-tspan").classed("row",!0),m}},"createText")});async function E4(e,t){let r=e.getElementsByTagName("img");if(!r||r.length===0)return;let n=t.replace(/<img[^>]*>/g,"").trim()==="";await Promise.all([...r].map(i=>new Promise(a=>{function s(){if(i.style.display="flex",i.style.flexDirection="column",n){let l=Ae().fontSize?Ae().fontSize:window.getComputedStyle(document.body).fontSize,u=5,[h=cr.fontSize]=As(l),d=h*u+"px";i.style.minWidth=d,i.style.maxWidth=d}else i.style.width="100%";a(i)}o(s,"setupImage"),setTimeout(()=>{i.complete&&s()}),i.addEventListener("error",s),i.addEventListener("load",s)})))}var HP=F(()=>{"use strict";Xt();Wi();Qt();o(E4,"configureLabelImages")});function or(e){let t=e.map((r,n)=>`${n===0?"M":"L"}${r.x},${r.y}`);return t.push("Z"),t.join(" ")}function fl(e,t,r,n,i,a){let s=[],u=r-e,h=n-t,d=u/a,f=2*Math.PI/d,p=t+h/2;for(let m=0;m<=50;m++){let g=m/50,y=e+g*u,v=p+i*Math.sin(f*(y-e));s.push({x:y,y:v})}return s}function Cm(e,t,r,n,i,a){let s=[],l=i*Math.PI/180,d=(a*Math.PI/180-l)/(n-1);for(let f=0;f<n;f++){let p=l+f*d,m=e+r*Math.cos(p),g=t+r*Math.sin(p);s.push({x:-m,y:-g})}return s}function UP(e){let t=Array.from(e.childNodes).filter(u=>u.tagName==="path"),r=document.createElementNS("http://www.w3.org/2000/svg","path"),n=t.map(u=>u.getAttribute("d")).filter(u=>u!==null).join(" ");r.setAttribute("d",n);let i=t.find(u=>u.getAttribute("fill")!=="none"),a=t.find(u=>u.getAttribute("stroke")!=="none"),s=o((u,h)=>u?.getAttribute(h)??void 0,"getAttr");if(i){let u={fill:s(i,"fill"),"fill-opacity":s(i,"fill-opacity")??"1"};Object.entries(u).forEach(([h,d])=>{d&&r.setAttribute(h,d)})}if(a){let u={stroke:s(a,"stroke"),"stroke-width":s(a,"stroke-width")??"1","stroke-opacity":s(a,"stroke-opacity")??"1"};Object.entries(u).forEach(([h,d])=>{d&&r.setAttribute(h,d)})}let l=document.createElementNS("http://www.w3.org/2000/svg","g");return l.appendChild(r),l}var It,A4,pt,Dt,Kt=F(()=>{"use strict";Ls();Xt();ur();$r();Vr();Qt();HP();It=o(async(e,t,r)=>{let n,i=t.useHtmlLabels||ya(Ae()?.htmlLabels);r?n=r:n="node default";let a=e.insert("g").attr("class",n).attr("id",t.domId||t.id),s=a.insert("g").attr("class","label").attr("style",kn(t.labelStyle)),l;t.label===void 0?l="":l=typeof t.label=="string"?t.label:t.label[0];let u=!!t.icon||!!t.img,h=t.labelType==="markdown",d=await Pn(s,mr(Rs(l),Ae()),{useHtmlLabels:i,width:t.width||Ae().flowchart?.wrappingWidth,classes:h?"markdown-node-label":"",style:t.labelStyle,addSvgBackground:u,markdown:h},Ae()),f=d.getBBox(),p=(t?.padding??0)/2;if(i){let m=d.children[0],g=et(d);await E4(m,l),f=m.getBoundingClientRect(),g.attr("width",f.width),g.attr("height",f.height)}return i?s.attr("transform","translate("+-f.width/2+", "+-f.height/2+")"):s.attr("transform","translate(0, "+-f.height/2+")"),t.centerLabel&&s.attr("transform","translate("+-f.width/2+", "+-f.height/2+")"),s.insert("rect",":first-child"),{shapeSvg:a,bbox:f,halfPadding:p,label:s}},"labelHelper"),A4=o(async(e,t,r)=>{let n=r.useHtmlLabels??Gr(Ae()),i=e.insert("g").attr("class","label").attr("style",r.labelStyle||""),a=await Pn(i,mr(Rs(t),Ae()),{useHtmlLabels:n,width:r.width||Ae()?.flowchart?.wrappingWidth,style:r.labelStyle,addSvgBackground:!!r.icon||!!r.img}),s=a.getBBox(),l=r.padding/2;if(Gr(Ae())){let u=a.children[0],h=et(a);s=u.getBoundingClientRect(),h.attr("width",s.width),h.attr("height",s.height)}return n?i.attr("transform","translate("+-s.width/2+", "+-s.height/2+")"):i.attr("transform","translate(0, "+-s.height/2+")"),r.centerLabel&&i.attr("transform","translate("+-s.width/2+", "+-s.height/2+")"),i.insert("rect",":first-child"),{shapeSvg:e,bbox:s,halfPadding:l,label:i}},"insertLabel"),pt=o((e,t)=>{let r=t.node().getBBox();e.width=r.width,e.height=r.height},"updateNodeBounds"),Dt=o((e,t)=>(e.look==="handDrawn"?"rough-node":"node")+" "+e.cssClasses+" "+(t||""),"getNodeClasses");o(or,"createPathFromPoints");o(fl,"generateFullSineWavePoints");o(Cm,"generateCirclePoints");o(UP,"mergePaths")});function KZe(e,t){return e.intersect(t)}var Pse,Ose=F(()=>{"use strict";o(KZe,"intersectNode");Pse=KZe});function ZZe(e,t,r,n){var i=e.x,a=e.y,s=i-n.x,l=a-n.y,u=Math.sqrt(t*t*l*l+r*r*s*s),h=Math.abs(t*r*s/u);n.x<i&&(h=-h);var d=Math.abs(t*r*l/u);return n.y<a&&(d=-d),{x:i+h,y:a+d}}var R4,YP=F(()=>{"use strict";o(ZZe,"intersectEllipse");R4=ZZe});function QZe(e,t,r){return R4(e,t,t,r)}var Bse,$se=F(()=>{"use strict";YP();o(QZe,"intersectCircle");Bse=QZe});function JZe(e,t,r,n){{let i=t.y-e.y,a=e.x-t.x,s=t.x*e.y-e.x*t.y,l=i*r.x+a*r.y+s,u=i*n.x+a*n.y+s,h=1e-6;if(l!==0&&u!==0&&Fse(l,u))return;let d=n.y-r.y,f=r.x-n.x,p=n.x*r.y-r.x*n.y,m=d*e.x+f*e.y+p,g=d*t.x+f*t.y+p;if(Math.abs(m)<h&&Math.abs(g)<h&&Fse(m,g))return;let y=i*f-d*a;if(y===0)return;let v=Math.abs(y/2),x=a*p-f*s,b=x<0?(x-v)/y:(x+v)/y;x=d*s-i*p;let T=x<0?(x-v)/y:(x+v)/y;return{x:b,y:T}}}function Fse(e,t){return e*t>0}var zse,Gse=F(()=>{"use strict";o(JZe,"intersectLine");o(Fse,"sameSign");zse=JZe});function eQe(e,t,r){let n=e.x,i=e.y,a=[],s=Number.POSITIVE_INFINITY,l=Number.POSITIVE_INFINITY;typeof t.forEach=="function"?t.forEach(function(d){s=Math.min(s,d.x),l=Math.min(l,d.y)}):(s=Math.min(s,t.x),l=Math.min(l,t.y));let u=n-e.width/2-s,h=i-e.height/2-l;for(let d=0;d<t.length;d++){let f=t[d],p=t[d<t.length-1?d+1:0],m=zse(e,r,{x:u+f.x,y:h+f.y},{x:u+p.x,y:h+p.y});m&&a.push(m)}return a.length?(a.length>1&&a.sort(function(d,f){let p=d.x-r.x,m=d.y-r.y,g=Math.sqrt(p*p+m*m),y=f.x-r.x,v=f.y-r.y,x=Math.sqrt(y*y+v*v);return g<x?-1:g===x?0:1}),a[0]):e}var Vse,Wse=F(()=>{"use strict";Gse();o(eQe,"intersectPolygon");Vse=eQe});var tQe,nu,_4=F(()=>{"use strict";tQe=o((e,t)=>{var r=e.x,n=e.y,i=t.x-r,a=t.y-n,s=e.width/2,l=e.height/2,u,h;return Math.abs(a)*s>Math.abs(i)*l?(a<0&&(l=-l),u=a===0?0:l*i/a,h=l):(i<0&&(s=-s),u=s,h=i===0?0:s*a/i),{x:r+u,y:n+h}},"intersectRect"),nu=tQe});var ht,nr=F(()=>{"use strict";Ose();$se();YP();Wse();_4();ht={node:Pse,circle:Bse,ellipse:R4,polygon:Vse,rect:nu}});var qse,iu,rQe,M2,ct,dt,nQe,Jt=F(()=>{"use strict";Xt();qse=o(e=>{let{handDrawnSeed:t}=Ae();return{fill:e,hachureAngle:120,hachureGap:4,fillWeight:2,roughness:.7,stroke:e,seed:t}},"solidStateFill"),iu=o(e=>{let t=rQe([...e.cssCompiledStyles||[],...e.cssStyles||[],...e.labelStyle||[]]);return{stylesMap:t,stylesArray:[...t]}},"compileStyles"),rQe=o(e=>{let t=new Map;return e.forEach(r=>{let[n,i]=r.split(":");t.set(n.trim(),i?.trim())}),t},"styles2Map"),M2=o(e=>e==="color"||e==="font-size"||e==="font-family"||e==="font-weight"||e==="font-style"||e==="text-decoration"||e==="text-align"||e==="text-transform"||e==="line-height"||e==="letter-spacing"||e==="word-spacing"||e==="text-shadow"||e==="text-overflow"||e==="white-space"||e==="word-wrap"||e==="word-break"||e==="overflow-wrap"||e==="hyphens","isLabelStyle"),ct=o(e=>{let{stylesArray:t}=iu(e),r=[],n=[],i=[],a=[];return t.forEach(s=>{let l=s[0];M2(l)?r.push(s.join(":")+" !important"):(n.push(s.join(":")+" !important"),l.includes("stroke")&&i.push(s.join(":")+" !important"),l==="fill"&&a.push(s.join(":")+" !important"))}),{labelStyles:r.join(";"),nodeStyles:n.join(";"),stylesArray:t,borderStyles:i,backgroundStyles:a}},"styles2String"),dt=o((e,t)=>{let{themeVariables:r,handDrawnSeed:n}=Ae(),{nodeBorder:i,mainBkg:a}=r,{stylesMap:s}=iu(e);return Object.assign({roughness:.7,fill:s.get("fill")||a,fillStyle:"hachure",fillWeight:4,hachureGap:5.2,stroke:s.get("stroke")||i,seed:n,strokeWidth:s.get("stroke-width")?.replace("px","")||1.3,fillLineDash:[0,0],strokeLineDash:nQe(s.get("stroke-dasharray"))},t)},"userNodeOverrides"),nQe=o(e=>{if(!e)return[0,0];let t=e.trim().split(/\s+/).map(Number);if(t.length===1){let i=isNaN(t[0])?0:t[0];return[i,i]}let r=isNaN(t[0])?0:t[0],n=isNaN(t[1])?0:t[1];return[r,n]},"getStrokeDashArray")});function jP(e,t,r){if(e&&e.length){let[n,i]=t,a=Math.PI/180*r,s=Math.cos(a),l=Math.sin(a);for(let u of e){let[h,d]=u;u[0]=(h-n)*s-(d-i)*l+n,u[1]=(h-n)*l+(d-i)*s+i}}}function iQe(e,t){return e[0]===t[0]&&e[1]===t[1]}function aQe(e,t,r,n=1){let i=r,a=Math.max(t,.1),s=e[0]&&e[0][0]&&typeof e[0][0]=="number"?[e]:e,l=[0,0];if(i)for(let h of s)jP(h,l,i);let u=(function(h,d,f){let p=[];for(let b of h){let T=[...b];iQe(T[0],T[T.length-1])||T.push([T[0][0],T[0][1]]),T.length>2&&p.push(T)}let m=[];d=Math.max(d,.1);let g=[];for(let b of p)for(let T=0;T<b.length-1;T++){let k=b[T],C=b[T+1];if(k[1]!==C[1]){let w=Math.min(k[1],C[1]);g.push({ymin:w,ymax:Math.max(k[1],C[1]),x:w===k[1]?k[0]:C[0],islope:(C[0]-k[0])/(C[1]-k[1])})}}if(g.sort(((b,T)=>b.ymin<T.ymin?-1:b.ymin>T.ymin?1:b.x<T.x?-1:b.x>T.x?1:b.ymax===T.ymax?0:(b.ymax-T.ymax)/Math.abs(b.ymax-T.ymax))),!g.length)return m;let y=[],v=g[0].ymin,x=0;for(;y.length||g.length;){if(g.length){let b=-1;for(let T=0;T<g.length&&!(g[T].ymin>v);T++)b=T;g.splice(0,b+1).forEach((T=>{y.push({s:v,edge:T})}))}if(y=y.filter((b=>!(b.edge.ymax<=v))),y.sort(((b,T)=>b.edge.x===T.edge.x?0:(b.edge.x-T.edge.x)/Math.abs(b.edge.x-T.edge.x))),(f!==1||x%d==0)&&y.length>1)for(let b=0;b<y.length;b+=2){let T=b+1;if(T>=y.length)break;let k=y[b].edge,C=y[T].edge;m.push([[Math.round(k.x),v],[Math.round(C.x),v]])}v+=f,y.forEach((b=>{b.edge.x=b.edge.x+f*b.edge.islope})),x++}return m})(s,a,n);if(i){for(let h of s)jP(h,l,-i);(function(h,d,f){let p=[];h.forEach((m=>p.push(...m))),jP(p,d,f)})(u,l,-i)}return u}function B2(e,t){var r;let n=t.hachureAngle+90,i=t.hachureGap;i<0&&(i=4*t.strokeWidth),i=Math.round(Math.max(i,.1));let a=1;return t.roughness>=1&&(((r=t.randomizer)===null||r===void 0?void 0:r.next())||Math.random())>.7&&(a=i),aQe(e,i,n,a||1)}function $4(e){let t=e[0],r=e[1];return Math.sqrt(Math.pow(t[0]-r[0],2)+Math.pow(t[1]-r[1],2))}function KP(e,t){return e.type===t}function uO(e){let t=[],r=(function(s){let l=new Array;for(;s!=="";)if(s.match(/^([ \t\r\n,]+)/))s=s.substr(RegExp.$1.length);else if(s.match(/^([aAcChHlLmMqQsStTvVzZ])/))l[l.length]={type:sQe,text:RegExp.$1},s=s.substr(RegExp.$1.length);else{if(!s.match(/^(([-+]?[0-9]+(\.[0-9]*)?|[-+]?\.[0-9]+)([eE][-+]?[0-9]+)?)/))return[];l[l.length]={type:XP,text:`${parseFloat(RegExp.$1)}`},s=s.substr(RegExp.$1.length)}return l[l.length]={type:Hse,text:""},l})(e),n="BOD",i=0,a=r[i];for(;!KP(a,Hse);){let s=0,l=[];if(n==="BOD"){if(a.text!=="M"&&a.text!=="m")return uO("M0,0"+e);i++,s=L4[a.text],n=a.text}else KP(a,XP)?s=L4[n]:(i++,s=L4[a.text],n=a.text);if(!(i+s<r.length))throw new Error("Path data ended short");for(let u=i;u<i+s;u++){let h=r[u];if(!KP(h,XP))throw new Error("Param not a number: "+n+","+h.text);l[l.length]=+h.text}if(typeof L4[n]!="number")throw new Error("Bad segment: "+n);{let u={key:n,data:l};t.push(u),i+=s,a=r[i],n==="M"&&(n="L"),n==="m"&&(n="l")}}return t}function Jse(e){let t=0,r=0,n=0,i=0,a=[];for(let{key:s,data:l}of e)switch(s){case"M":a.push({key:"M",data:[...l]}),[t,r]=l,[n,i]=l;break;case"m":t+=l[0],r+=l[1],a.push({key:"M",data:[t,r]}),n=t,i=r;break;case"L":a.push({key:"L",data:[...l]}),[t,r]=l;break;case"l":t+=l[0],r+=l[1],a.push({key:"L",data:[t,r]});break;case"C":a.push({key:"C",data:[...l]}),t=l[4],r=l[5];break;case"c":{let u=l.map(((h,d)=>d%2?h+r:h+t));a.push({key:"C",data:u}),t=u[4],r=u[5];break}case"Q":a.push({key:"Q",data:[...l]}),t=l[2],r=l[3];break;case"q":{let u=l.map(((h,d)=>d%2?h+r:h+t));a.push({key:"Q",data:u}),t=u[2],r=u[3];break}case"A":a.push({key:"A",data:[...l]}),t=l[5],r=l[6];break;case"a":t+=l[5],r+=l[6],a.push({key:"A",data:[l[0],l[1],l[2],l[3],l[4],t,r]});break;case"H":a.push({key:"H",data:[...l]}),t=l[0];break;case"h":t+=l[0],a.push({key:"H",data:[t]});break;case"V":a.push({key:"V",data:[...l]}),r=l[0];break;case"v":r+=l[0],a.push({key:"V",data:[r]});break;case"S":a.push({key:"S",data:[...l]}),t=l[2],r=l[3];break;case"s":{let u=l.map(((h,d)=>d%2?h+r:h+t));a.push({key:"S",data:u}),t=u[2],r=u[3];break}case"T":a.push({key:"T",data:[...l]}),t=l[0],r=l[1];break;case"t":t+=l[0],r+=l[1],a.push({key:"T",data:[t,r]});break;case"Z":case"z":a.push({key:"Z",data:[]}),t=n,r=i}return a}function eoe(e){let t=[],r="",n=0,i=0,a=0,s=0,l=0,u=0;for(let{key:h,data:d}of e){switch(h){case"M":t.push({key:"M",data:[...d]}),[n,i]=d,[a,s]=d;break;case"C":t.push({key:"C",data:[...d]}),n=d[4],i=d[5],l=d[2],u=d[3];break;case"L":t.push({key:"L",data:[...d]}),[n,i]=d;break;case"H":n=d[0],t.push({key:"L",data:[n,i]});break;case"V":i=d[0],t.push({key:"L",data:[n,i]});break;case"S":{let f=0,p=0;r==="C"||r==="S"?(f=n+(n-l),p=i+(i-u)):(f=n,p=i),t.push({key:"C",data:[f,p,...d]}),l=d[0],u=d[1],n=d[2],i=d[3];break}case"T":{let[f,p]=d,m=0,g=0;r==="Q"||r==="T"?(m=n+(n-l),g=i+(i-u)):(m=n,g=i);let y=n+2*(m-n)/3,v=i+2*(g-i)/3,x=f+2*(m-f)/3,b=p+2*(g-p)/3;t.push({key:"C",data:[y,v,x,b,f,p]}),l=m,u=g,n=f,i=p;break}case"Q":{let[f,p,m,g]=d,y=n+2*(f-n)/3,v=i+2*(p-i)/3,x=m+2*(f-m)/3,b=g+2*(p-g)/3;t.push({key:"C",data:[y,v,x,b,m,g]}),l=f,u=p,n=m,i=g;break}case"A":{let f=Math.abs(d[0]),p=Math.abs(d[1]),m=d[2],g=d[3],y=d[4],v=d[5],x=d[6];f===0||p===0?(t.push({key:"C",data:[n,i,v,x,v,x]}),n=v,i=x):(n!==v||i!==x)&&(toe(n,i,v,x,f,p,m,g,y).forEach((function(b){t.push({key:"C",data:b})})),n=v,i=x);break}case"Z":t.push({key:"Z",data:[]}),n=a,i=s}r=h}return t}function N2(e,t,r){return[e*Math.cos(r)-t*Math.sin(r),e*Math.sin(r)+t*Math.cos(r)]}function toe(e,t,r,n,i,a,s,l,u,h){let d=(f=s,Math.PI*f/180);var f;let p=[],m=0,g=0,y=0,v=0;if(h)[m,g,y,v]=h;else{[e,t]=N2(e,t,-d),[r,n]=N2(r,n,-d);let A=(e-r)/2,M=(t-n)/2,D=A*A/(i*i)+M*M/(a*a);D>1&&(D=Math.sqrt(D),i*=D,a*=D);let P=i*i,B=a*a,O=P*B-P*M*M-B*A*A,$=P*M*M+B*A*A,V=(l===u?-1:1)*Math.sqrt(Math.abs(O/$));y=V*i*M/a+(e+r)/2,v=V*-a*A/i+(t+n)/2,m=Math.asin(parseFloat(((t-v)/a).toFixed(9))),g=Math.asin(parseFloat(((n-v)/a).toFixed(9))),e<y&&(m=Math.PI-m),r<y&&(g=Math.PI-g),m<0&&(m=2*Math.PI+m),g<0&&(g=2*Math.PI+g),u&&m>g&&(m-=2*Math.PI),!u&&g>m&&(g-=2*Math.PI)}let x=g-m;if(Math.abs(x)>120*Math.PI/180){let A=g,M=r,D=n;g=u&&g>m?m+120*Math.PI/180*1:m+120*Math.PI/180*-1,p=toe(r=y+i*Math.cos(g),n=v+a*Math.sin(g),M,D,i,a,s,0,u,[g,A,y,v])}x=g-m;let b=Math.cos(m),T=Math.sin(m),k=Math.cos(g),C=Math.sin(g),w=Math.tan(x/4),S=4/3*i*w,R=4/3*a*w,L=[e,t],N=[e+S*T,t-R*b],I=[r+S*C,n-R*k],_=[r,n];if(N[0]=2*L[0]-N[0],N[1]=2*L[1]-N[1],h)return[N,I,_].concat(p);{p=[N,I,_].concat(p);let A=[];for(let M=0;M<p.length;M+=3){let D=N2(p[M][0],p[M][1],d),P=N2(p[M+1][0],p[M+1][1],d),B=N2(p[M+2][0],p[M+2][1],d);A.push([D[0],D[1],P[0],P[1],B[0],B[1]])}return A}}function roe(e,t,r,n,i){return{type:"path",ops:Jd(e,t,r,n,i)}}function M4(e,t,r){let n=(e||[]).length;if(n>2){let i=[];for(let a=0;a<n-1;a++)i.push(...Jd(e[a][0],e[a][1],e[a+1][0],e[a+1][1],r));return t&&i.push(...Jd(e[n-1][0],e[n-1][1],e[0][0],e[0][1],r)),{type:"path",ops:i}}return n===2?roe(e[0][0],e[0][1],e[1][0],e[1][1],r):{type:"path",ops:[]}}function lQe(e,t,r,n,i){return(function(a,s){return M4(a,!0,s)})([[e,t],[e+r,t],[e+r,t+n],[e,t+n]],i)}function Use(e,t){if(e.length){let r=typeof e[0][0]=="number"?[e]:e,n=D4(r[0],1*(1+.2*t.roughness),t),i=t.disableMultiStroke?[]:D4(r[0],1.5*(1+.22*t.roughness),Xse(t));for(let a=1;a<r.length;a++){let s=r[a];if(s.length){let l=D4(s,1*(1+.2*t.roughness),t),u=t.disableMultiStroke?[]:D4(s,1.5*(1+.22*t.roughness),Xse(t));for(let h of l)h.op!=="move"&&n.push(h);for(let h of u)h.op!=="move"&&i.push(h)}}return{type:"path",ops:n.concat(i)}}return{type:"path",ops:[]}}function noe(e,t,r){let n=Math.sqrt(2*Math.PI*Math.sqrt((Math.pow(e/2,2)+Math.pow(t/2,2))/2)),i=Math.ceil(Math.max(r.curveStepCount,r.curveStepCount/Math.sqrt(200)*n)),a=2*Math.PI/i,s=Math.abs(e/2),l=Math.abs(t/2),u=1-r.curveFitting;return s+=Cr(s*u,r),l+=Cr(l*u,r),{increment:a,rx:s,ry:l}}function aO(e,t,r,n){let[i,a]=Kse(n.increment,e,t,n.rx,n.ry,1,n.increment*P4(.1,P4(.4,1,r),r),r),s=O4(i,null,r);if(!r.disableMultiStroke&&r.roughness!==0){let[l]=Kse(n.increment,e,t,n.rx,n.ry,1.5,0,r),u=O4(l,null,r);s=s.concat(u)}return{estimatedPoints:a,opset:{type:"path",ops:s}}}function Yse(e,t,r,n,i,a,s,l,u){let h=e,d=t,f=Math.abs(r/2),p=Math.abs(n/2);f+=Cr(.01*f,u),p+=Cr(.01*p,u);let m=i,g=a;for(;m<0;)m+=2*Math.PI,g+=2*Math.PI;g-m>2*Math.PI&&(m=0,g=2*Math.PI);let y=2*Math.PI/u.curveStepCount,v=Math.min(y/2,(g-m)/2),x=Zse(v,h,d,f,p,m,g,1,u);if(!u.disableMultiStroke){let b=Zse(v,h,d,f,p,m,g,1.5,u);x.push(...b)}return s&&(l?x.push(...Jd(h,d,h+f*Math.cos(m),d+p*Math.sin(m),u),...Jd(h,d,h+f*Math.cos(g),d+p*Math.sin(g),u)):x.push({op:"lineTo",data:[h,d]},{op:"lineTo",data:[h+f*Math.cos(m),d+p*Math.sin(m)]})),{type:"path",ops:x}}function jse(e,t){let r=eoe(Jse(uO(e))),n=[],i=[0,0],a=[0,0];for(let{key:s,data:l}of r)switch(s){case"M":a=[l[0],l[1]],i=[l[0],l[1]];break;case"L":n.push(...Jd(a[0],a[1],l[0],l[1],t)),a=[l[0],l[1]];break;case"C":{let[u,h,d,f,p,m]=l;n.push(...cQe(u,h,d,f,p,m,a,t)),a=[p,m];break}case"Z":n.push(...Jd(a[0],a[1],i[0],i[1],t)),a=[i[0],i[1]]}return{type:"path",ops:n}}function ZP(e,t){let r=[];for(let n of e)if(n.length){let i=t.maxRandomnessOffset||0,a=n.length;if(a>2){r.push({op:"move",data:[n[0][0]+Cr(i,t),n[0][1]+Cr(i,t)]});for(let s=1;s<a;s++)r.push({op:"lineTo",data:[n[s][0]+Cr(i,t),n[s][1]+Cr(i,t)]})}}return{type:"fillPath",ops:r}}function Fy(e,t){return(function(r,n){let i=r.fillStyle||"hachure";if(!no[i])switch(i){case"zigzag":no[i]||(no[i]=new JP(n));break;case"cross-hatch":no[i]||(no[i]=new eO(n));break;case"dots":no[i]||(no[i]=new tO(n));break;case"dashed":no[i]||(no[i]=new rO(n));break;case"zigzag-line":no[i]||(no[i]=new nO(n));break;default:i="hachure",no[i]||(no[i]=new O2(n))}return no[i]})(t,oQe).fillPolygons(e,t)}function Xse(e){let t=Object.assign({},e);return t.randomizer=void 0,e.seed&&(t.seed=e.seed+1),t}function ioe(e){return e.randomizer||(e.randomizer=new iO(e.seed||0)),e.randomizer.next()}function P4(e,t,r,n=1){return r.roughness*n*(ioe(r)*(t-e)+e)}function Cr(e,t,r=1){return P4(-e,e,t,r)}function Jd(e,t,r,n,i,a=!1){let s=a?i.disableMultiStrokeFill:i.disableMultiStroke,l=sO(e,t,r,n,i,!0,!1);if(s)return l;let u=sO(e,t,r,n,i,!0,!0);return l.concat(u)}function sO(e,t,r,n,i,a,s){let l=Math.pow(e-r,2)+Math.pow(t-n,2),u=Math.sqrt(l),h=1;h=u<200?1:u>500?.4:-.0016668*u+1.233334;let d=i.maxRandomnessOffset||0;d*d*100>l&&(d=u/10);let f=d/2,p=.2+.2*ioe(i),m=i.bowing*i.maxRandomnessOffset*(n-t)/200,g=i.bowing*i.maxRandomnessOffset*(e-r)/200;m=Cr(m,i,h),g=Cr(g,i,h);let y=[],v=o(()=>Cr(f,i,h),"M"),x=o(()=>Cr(d,i,h),"k"),b=i.preserveVertices;return a&&(s?y.push({op:"move",data:[e+(b?0:v()),t+(b?0:v())]}):y.push({op:"move",data:[e+(b?0:Cr(d,i,h)),t+(b?0:Cr(d,i,h))]})),s?y.push({op:"bcurveTo",data:[m+e+(r-e)*p+v(),g+t+(n-t)*p+v(),m+e+2*(r-e)*p+v(),g+t+2*(n-t)*p+v(),r+(b?0:v()),n+(b?0:v())]}):y.push({op:"bcurveTo",data:[m+e+(r-e)*p+x(),g+t+(n-t)*p+x(),m+e+2*(r-e)*p+x(),g+t+2*(n-t)*p+x(),r+(b?0:x()),n+(b?0:x())]}),y}function D4(e,t,r){if(!e.length)return[];let n=[];n.push([e[0][0]+Cr(t,r),e[0][1]+Cr(t,r)]),n.push([e[0][0]+Cr(t,r),e[0][1]+Cr(t,r)]);for(let i=1;i<e.length;i++)n.push([e[i][0]+Cr(t,r),e[i][1]+Cr(t,r)]),i===e.length-1&&n.push([e[i][0]+Cr(t,r),e[i][1]+Cr(t,r)]);return O4(n,null,r)}function O4(e,t,r){let n=e.length,i=[];if(n>3){let a=[],s=1-r.curveTightness;i.push({op:"move",data:[e[1][0],e[1][1]]});for(let l=1;l+2<n;l++){let u=e[l];a[0]=[u[0],u[1]],a[1]=[u[0]+(s*e[l+1][0]-s*e[l-1][0])/6,u[1]+(s*e[l+1][1]-s*e[l-1][1])/6],a[2]=[e[l+1][0]+(s*e[l][0]-s*e[l+2][0])/6,e[l+1][1]+(s*e[l][1]-s*e[l+2][1])/6],a[3]=[e[l+1][0],e[l+1][1]],i.push({op:"bcurveTo",data:[a[1][0],a[1][1],a[2][0],a[2][1],a[3][0],a[3][1]]})}if(t&&t.length===2){let l=r.maxRandomnessOffset;i.push({op:"lineTo",data:[t[0]+Cr(l,r),t[1]+Cr(l,r)]})}}else n===3?(i.push({op:"move",data:[e[1][0],e[1][1]]}),i.push({op:"bcurveTo",data:[e[1][0],e[1][1],e[2][0],e[2][1],e[2][0],e[2][1]]})):n===2&&i.push(...sO(e[0][0],e[0][1],e[1][0],e[1][1],r,!0,!0));return i}function Kse(e,t,r,n,i,a,s,l){let u=[],h=[];if(l.roughness===0){e/=4,h.push([t+n*Math.cos(-e),r+i*Math.sin(-e)]);for(let d=0;d<=2*Math.PI;d+=e){let f=[t+n*Math.cos(d),r+i*Math.sin(d)];u.push(f),h.push(f)}h.push([t+n*Math.cos(0),r+i*Math.sin(0)]),h.push([t+n*Math.cos(e),r+i*Math.sin(e)])}else{let d=Cr(.5,l)-Math.PI/2;h.push([Cr(a,l)+t+.9*n*Math.cos(d-e),Cr(a,l)+r+.9*i*Math.sin(d-e)]);let f=2*Math.PI+d-.01;for(let p=d;p<f;p+=e){let m=[Cr(a,l)+t+n*Math.cos(p),Cr(a,l)+r+i*Math.sin(p)];u.push(m),h.push(m)}h.push([Cr(a,l)+t+n*Math.cos(d+2*Math.PI+.5*s),Cr(a,l)+r+i*Math.sin(d+2*Math.PI+.5*s)]),h.push([Cr(a,l)+t+.98*n*Math.cos(d+s),Cr(a,l)+r+.98*i*Math.sin(d+s)]),h.push([Cr(a,l)+t+.9*n*Math.cos(d+.5*s),Cr(a,l)+r+.9*i*Math.sin(d+.5*s)])}return[h,u]}function Zse(e,t,r,n,i,a,s,l,u){let h=a+Cr(.1,u),d=[];d.push([Cr(l,u)+t+.9*n*Math.cos(h-e),Cr(l,u)+r+.9*i*Math.sin(h-e)]);for(let f=h;f<=s;f+=e)d.push([Cr(l,u)+t+n*Math.cos(f),Cr(l,u)+r+i*Math.sin(f)]);return d.push([t+n*Math.cos(s),r+i*Math.sin(s)]),d.push([t+n*Math.cos(s),r+i*Math.sin(s)]),O4(d,null,u)}function cQe(e,t,r,n,i,a,s,l){let u=[],h=[l.maxRandomnessOffset||1,(l.maxRandomnessOffset||1)+.3],d=[0,0],f=l.disableMultiStroke?1:2,p=l.preserveVertices;for(let m=0;m<f;m++)m===0?u.push({op:"move",data:[s[0],s[1]]}):u.push({op:"move",data:[s[0]+(p?0:Cr(h[0],l)),s[1]+(p?0:Cr(h[0],l))]}),d=p?[i,a]:[i+Cr(h[m],l),a+Cr(h[m],l)],u.push({op:"bcurveTo",data:[e+Cr(h[m],l),t+Cr(h[m],l),r+Cr(h[m],l),n+Cr(h[m],l),d[0],d[1]]});return u}function P2(e){return[...e]}function Qse(e,t=0){let r=e.length;if(r<3)throw new Error("A curve must have at least three points.");let n=[];if(r===3)n.push(P2(e[0]),P2(e[1]),P2(e[2]),P2(e[2]));else{let i=[];i.push(e[0],e[0]);for(let l=1;l<e.length;l++)i.push(e[l]),l===e.length-1&&i.push(e[l]);let a=[],s=1-t;n.push(P2(i[0]));for(let l=1;l+2<i.length;l++){let u=i[l];a[0]=[u[0],u[1]],a[1]=[u[0]+(s*i[l+1][0]-s*i[l-1][0])/6,u[1]+(s*i[l+1][1]-s*i[l-1][1])/6],a[2]=[i[l+1][0]+(s*i[l][0]-s*i[l+2][0])/6,i[l+1][1]+(s*i[l][1]-s*i[l+2][1])/6],a[3]=[i[l+1][0],i[l+1][1]],n.push(a[1],a[2],a[3])}}return n}function N4(e,t){return Math.pow(e[0]-t[0],2)+Math.pow(e[1]-t[1],2)}function uQe(e,t,r){let n=N4(t,r);if(n===0)return N4(e,t);let i=((e[0]-t[0])*(r[0]-t[0])+(e[1]-t[1])*(r[1]-t[1]))/n;return i=Math.max(0,Math.min(1,i)),N4(e,wm(t,r,i))}function wm(e,t,r){return[e[0]+(t[0]-e[0])*r,e[1]+(t[1]-e[1])*r]}function oO(e,t,r,n){let i=n||[];if((function(l,u){let h=l[u+0],d=l[u+1],f=l[u+2],p=l[u+3],m=3*d[0]-2*h[0]-p[0];m*=m;let g=3*d[1]-2*h[1]-p[1];g*=g;let y=3*f[0]-2*p[0]-h[0];y*=y;let v=3*f[1]-2*p[1]-h[1];return v*=v,m<y&&(m=y),g<v&&(g=v),m+g})(e,t)<r){let l=e[t+0];i.length?(a=i[i.length-1],s=l,Math.sqrt(N4(a,s))>1&&i.push(l)):i.push(l),i.push(e[t+3])}else{let u=e[t+0],h=e[t+1],d=e[t+2],f=e[t+3],p=wm(u,h,.5),m=wm(h,d,.5),g=wm(d,f,.5),y=wm(p,m,.5),v=wm(m,g,.5),x=wm(y,v,.5);oO([u,p,y,x],0,r,i),oO([x,v,g,f],0,r,i)}var a,s;return i}function hQe(e,t){return B4(e,0,e.length,t)}function B4(e,t,r,n,i){let a=i||[],s=e[t],l=e[r-1],u=0,h=1;for(let d=t+1;d<r-1;++d){let f=uQe(e[d],s,l);f>u&&(u=f,h=d)}return Math.sqrt(u)>n?(B4(e,t,h+1,n,a),B4(e,h,r,n,a)):(a.length||a.push(s),a.push(l)),a}function QP(e,t=.15,r){let n=[],i=(e.length-1)/3;for(let a=0;a<i;a++)oO(e,3*a,t,n);return r&&r>0?B4(n,0,n.length,r):n}var O2,JP,eO,tO,rO,nO,no,iO,sQe,XP,Hse,L4,oQe,zo,zy,lO,I4,cO,ut,tr=F(()=>{"use strict";o(jP,"t");o(iQe,"e");o(aQe,"s");o(B2,"n");O2=class{static{o(this,"o")}constructor(t){this.helper=t}fillPolygons(t,r){return this._fillPolygons(t,r)}_fillPolygons(t,r){let n=B2(t,r);return{type:"fillSketch",ops:this.renderLines(n,r)}}renderLines(t,r){let n=[];for(let i of t)n.push(...this.helper.doubleLineOps(i[0][0],i[0][1],i[1][0],i[1][1],r));return n}};o($4,"a");JP=class extends O2{static{o(this,"h")}fillPolygons(t,r){let n=r.hachureGap;n<0&&(n=4*r.strokeWidth),n=Math.max(n,.1);let i=B2(t,Object.assign({},r,{hachureGap:n})),a=Math.PI/180*r.hachureAngle,s=[],l=.5*n*Math.cos(a),u=.5*n*Math.sin(a);for(let[h,d]of i)$4([h,d])&&s.push([[h[0]-l,h[1]+u],[...d]],[[h[0]+l,h[1]-u],[...d]]);return{type:"fillSketch",ops:this.renderLines(s,r)}}},eO=class extends O2{static{o(this,"r")}fillPolygons(t,r){let n=this._fillPolygons(t,r),i=Object.assign({},r,{hachureAngle:r.hachureAngle+90}),a=this._fillPolygons(t,i);return n.ops=n.ops.concat(a.ops),n}},tO=class{static{o(this,"i")}constructor(t){this.helper=t}fillPolygons(t,r){let n=B2(t,r=Object.assign({},r,{hachureAngle:0}));return this.dotsOnLines(n,r)}dotsOnLines(t,r){let n=[],i=r.hachureGap;i<0&&(i=4*r.strokeWidth),i=Math.max(i,.1);let a=r.fillWeight;a<0&&(a=r.strokeWidth/2);let s=i/4;for(let l of t){let u=$4(l),h=u/i,d=Math.ceil(h)-1,f=u-d*i,p=(l[0][0]+l[1][0])/2-i/4,m=Math.min(l[0][1],l[1][1]);for(let g=0;g<d;g++){let y=m+f+g*i,v=p-s+2*Math.random()*s,x=y-s+2*Math.random()*s,b=this.helper.ellipse(v,x,a,a,r);n.push(...b.ops)}}return{type:"fillSketch",ops:n}}},rO=class{static{o(this,"c")}constructor(t){this.helper=t}fillPolygons(t,r){let n=B2(t,r);return{type:"fillSketch",ops:this.dashedLine(n,r)}}dashedLine(t,r){let n=r.dashOffset<0?r.hachureGap<0?4*r.strokeWidth:r.hachureGap:r.dashOffset,i=r.dashGap<0?r.hachureGap<0?4*r.strokeWidth:r.hachureGap:r.dashGap,a=[];return t.forEach((s=>{let l=$4(s),u=Math.floor(l/(n+i)),h=(l+i-u*(n+i))/2,d=s[0],f=s[1];d[0]>f[0]&&(d=s[1],f=s[0]);let p=Math.atan((f[1]-d[1])/(f[0]-d[0]));for(let m=0;m<u;m++){let g=m*(n+i),y=g+n,v=[d[0]+g*Math.cos(p)+h*Math.cos(p),d[1]+g*Math.sin(p)+h*Math.sin(p)],x=[d[0]+y*Math.cos(p)+h*Math.cos(p),d[1]+y*Math.sin(p)+h*Math.sin(p)];a.push(...this.helper.doubleLineOps(v[0],v[1],x[0],x[1],r))}})),a}},nO=class{static{o(this,"l")}constructor(t){this.helper=t}fillPolygons(t,r){let n=r.hachureGap<0?4*r.strokeWidth:r.hachureGap,i=r.zigzagOffset<0?n:r.zigzagOffset,a=B2(t,r=Object.assign({},r,{hachureGap:n+i}));return{type:"fillSketch",ops:this.zigzagLines(a,i,r)}}zigzagLines(t,r,n){let i=[];return t.forEach((a=>{let s=$4(a),l=Math.round(s/(2*r)),u=a[0],h=a[1];u[0]>h[0]&&(u=a[1],h=a[0]);let d=Math.atan((h[1]-u[1])/(h[0]-u[0]));for(let f=0;f<l;f++){let p=2*f*r,m=2*(f+1)*r,g=Math.sqrt(2*Math.pow(r,2)),y=[u[0]+p*Math.cos(d),u[1]+p*Math.sin(d)],v=[u[0]+m*Math.cos(d),u[1]+m*Math.sin(d)],x=[y[0]+g*Math.cos(d+Math.PI/4),y[1]+g*Math.sin(d+Math.PI/4)];i.push(...this.helper.doubleLineOps(y[0],y[1],x[0],x[1],n),...this.helper.doubleLineOps(x[0],x[1],v[0],v[1],n))}})),i}},no={},iO=class{static{o(this,"p")}constructor(t){this.seed=t}next(){return this.seed?(2**31-1&(this.seed=Math.imul(48271,this.seed)))/2**31:Math.random()}},sQe=0,XP=1,Hse=2,L4={A:7,a:7,C:6,c:6,H:1,h:1,L:2,l:2,M:2,m:2,Q:4,q:4,S:4,s:4,T:2,t:2,V:1,v:1,Z:0,z:0};o(KP,"k");o(uO,"b");o(Jse,"y");o(eoe,"m");o(N2,"w");o(toe,"x");oQe={randOffset:o(function(e,t){return Cr(e,t)},"randOffset"),randOffsetWithRange:o(function(e,t,r){return P4(e,t,r)},"randOffsetWithRange"),ellipse:o(function(e,t,r,n,i){let a=noe(r,n,i);return aO(e,t,i,a).opset},"ellipse"),doubleLineOps:o(function(e,t,r,n,i){return Jd(e,t,r,n,i,!0)},"doubleLineOps")};o(roe,"v");o(M4,"S");o(lQe,"O");o(Use,"L");o(noe,"T");o(aO,"D");o(Yse,"A");o(jse,"_");o(ZP,"I");o(Fy,"C");o(Xse,"z");o(ioe,"W");o(P4,"E");o(Cr,"G");o(Jd,"$");o(sO,"R");o(D4,"j");o(O4,"q");o(Kse,"F");o(Zse,"V");o(cQe,"Z");o(P2,"Q");o(Qse,"H");o(N4,"N");o(uQe,"B");o(wm,"J");o(oO,"K");o(hQe,"U");o(B4,"X");o(QP,"Y");zo="none",zy=class{static{o(this,"et")}constructor(t){this.defaultOptions={maxRandomnessOffset:2,roughness:1,bowing:1,stroke:"#000",strokeWidth:1,curveTightness:0,curveFitting:.95,curveStepCount:9,fillStyle:"hachure",fillWeight:-1,hachureAngle:-41,hachureGap:-1,dashOffset:-1,dashGap:-1,zigzagOffset:-1,seed:0,disableMultiStroke:!1,disableMultiStrokeFill:!1,preserveVertices:!1,fillShapeRoughnessGain:.8},this.config=t||{},this.config.options&&(this.defaultOptions=this._o(this.config.options))}static newSeed(){return Math.floor(Math.random()*2**31)}_o(t){return t?Object.assign({},this.defaultOptions,t):this.defaultOptions}_d(t,r,n){return{shape:t,sets:r||[],options:n||this.defaultOptions}}line(t,r,n,i,a){let s=this._o(a);return this._d("line",[roe(t,r,n,i,s)],s)}rectangle(t,r,n,i,a){let s=this._o(a),l=[],u=lQe(t,r,n,i,s);if(s.fill){let h=[[t,r],[t+n,r],[t+n,r+i],[t,r+i]];s.fillStyle==="solid"?l.push(ZP([h],s)):l.push(Fy([h],s))}return s.stroke!==zo&&l.push(u),this._d("rectangle",l,s)}ellipse(t,r,n,i,a){let s=this._o(a),l=[],u=noe(n,i,s),h=aO(t,r,s,u);if(s.fill)if(s.fillStyle==="solid"){let d=aO(t,r,s,u).opset;d.type="fillPath",l.push(d)}else l.push(Fy([h.estimatedPoints],s));return s.stroke!==zo&&l.push(h.opset),this._d("ellipse",l,s)}circle(t,r,n,i){let a=this.ellipse(t,r,n,n,i);return a.shape="circle",a}linearPath(t,r){let n=this._o(r);return this._d("linearPath",[M4(t,!1,n)],n)}arc(t,r,n,i,a,s,l=!1,u){let h=this._o(u),d=[],f=Yse(t,r,n,i,a,s,l,!0,h);if(l&&h.fill)if(h.fillStyle==="solid"){let p=Object.assign({},h);p.disableMultiStroke=!0;let m=Yse(t,r,n,i,a,s,!0,!1,p);m.type="fillPath",d.push(m)}else d.push((function(p,m,g,y,v,x,b){let T=p,k=m,C=Math.abs(g/2),w=Math.abs(y/2);C+=Cr(.01*C,b),w+=Cr(.01*w,b);let S=v,R=x;for(;S<0;)S+=2*Math.PI,R+=2*Math.PI;R-S>2*Math.PI&&(S=0,R=2*Math.PI);let L=(R-S)/b.curveStepCount,N=[];for(let I=S;I<=R;I+=L)N.push([T+C*Math.cos(I),k+w*Math.sin(I)]);return N.push([T+C*Math.cos(R),k+w*Math.sin(R)]),N.push([T,k]),Fy([N],b)})(t,r,n,i,a,s,h));return h.stroke!==zo&&d.push(f),this._d("arc",d,h)}curve(t,r){let n=this._o(r),i=[],a=Use(t,n);if(n.fill&&n.fill!==zo)if(n.fillStyle==="solid"){let s=Use(t,Object.assign(Object.assign({},n),{disableMultiStroke:!0,roughness:n.roughness?n.roughness+n.fillShapeRoughnessGain:0}));i.push({type:"fillPath",ops:this._mergedShape(s.ops)})}else{let s=[],l=t;if(l.length){let u=typeof l[0][0]=="number"?[l]:l;for(let h of u)h.length<3?s.push(...h):h.length===3?s.push(...QP(Qse([h[0],h[0],h[1],h[2]]),10,(1+n.roughness)/2)):s.push(...QP(Qse(h),10,(1+n.roughness)/2))}s.length&&i.push(Fy([s],n))}return n.stroke!==zo&&i.push(a),this._d("curve",i,n)}polygon(t,r){let n=this._o(r),i=[],a=M4(t,!0,n);return n.fill&&(n.fillStyle==="solid"?i.push(ZP([t],n)):i.push(Fy([t],n))),n.stroke!==zo&&i.push(a),this._d("polygon",i,n)}path(t,r){let n=this._o(r),i=[];if(!t)return this._d("path",i,n);t=(t||"").replace(/\n/g," ").replace(/(-\s)/g,"-").replace("/(ss)/g"," ");let a=n.fill&&n.fill!=="transparent"&&n.fill!==zo,s=n.stroke!==zo,l=!!(n.simplification&&n.simplification<1),u=(function(d,f,p){let m=eoe(Jse(uO(d))),g=[],y=[],v=[0,0],x=[],b=o(()=>{x.length>=4&&y.push(...QP(x,f)),x=[]},"i"),T=o(()=>{b(),y.length&&(g.push(y),y=[])},"c");for(let{key:C,data:w}of m)switch(C){case"M":T(),v=[w[0],w[1]],y.push(v);break;case"L":b(),y.push([w[0],w[1]]);break;case"C":if(!x.length){let S=y.length?y[y.length-1]:v;x.push([S[0],S[1]])}x.push([w[0],w[1]]),x.push([w[2],w[3]]),x.push([w[4],w[5]]);break;case"Z":b(),y.push([v[0],v[1]])}if(T(),!p)return g;let k=[];for(let C of g){let w=hQe(C,p);w.length&&k.push(w)}return k})(t,1,l?4-4*(n.simplification||1):(1+n.roughness)/2),h=jse(t,n);if(a)if(n.fillStyle==="solid")if(u.length===1){let d=jse(t,Object.assign(Object.assign({},n),{disableMultiStroke:!0,roughness:n.roughness?n.roughness+n.fillShapeRoughnessGain:0}));i.push({type:"fillPath",ops:this._mergedShape(d.ops)})}else i.push(ZP(u,n));else i.push(Fy(u,n));return s&&(l?u.forEach((d=>{i.push(M4(d,!1,n))})):i.push(h)),this._d("path",i,n)}opsToPath(t,r){let n="";for(let i of t.ops){let a=typeof r=="number"&&r>=0?i.data.map((s=>+s.toFixed(r))):i.data;switch(i.op){case"move":n+=`M${a[0]} ${a[1]} `;break;case"bcurveTo":n+=`C${a[0]} ${a[1]}, ${a[2]} ${a[3]}, ${a[4]} ${a[5]} `;break;case"lineTo":n+=`L${a[0]} ${a[1]} `}}return n.trim()}toPaths(t){let r=t.sets||[],n=t.options||this.defaultOptions,i=[];for(let a of r){let s=null;switch(a.type){case"path":s={d:this.opsToPath(a),stroke:n.stroke,strokeWidth:n.strokeWidth,fill:zo};break;case"fillPath":s={d:this.opsToPath(a),stroke:zo,strokeWidth:0,fill:n.fill||zo};break;case"fillSketch":s=this.fillSketch(a,n)}s&&i.push(s)}return i}fillSketch(t,r){let n=r.fillWeight;return n<0&&(n=r.strokeWidth/2),{d:this.opsToPath(t),stroke:r.fill||zo,strokeWidth:n,fill:zo}}_mergedShape(t){return t.filter(((r,n)=>n===0||r.op!=="move"))}},lO=class{static{o(this,"st")}constructor(t,r){this.canvas=t,this.ctx=this.canvas.getContext("2d"),this.gen=new zy(r)}draw(t){let r=t.sets||[],n=t.options||this.getDefaultOptions(),i=this.ctx,a=t.options.fixedDecimalPlaceDigits;for(let s of r)switch(s.type){case"path":i.save(),i.strokeStyle=n.stroke==="none"?"transparent":n.stroke,i.lineWidth=n.strokeWidth,n.strokeLineDash&&i.setLineDash(n.strokeLineDash),n.strokeLineDashOffset&&(i.lineDashOffset=n.strokeLineDashOffset),this._drawToContext(i,s,a),i.restore();break;case"fillPath":{i.save(),i.fillStyle=n.fill||"";let l=t.shape==="curve"||t.shape==="polygon"||t.shape==="path"?"evenodd":"nonzero";this._drawToContext(i,s,a,l),i.restore();break}case"fillSketch":this.fillSketch(i,s,n)}}fillSketch(t,r,n){let i=n.fillWeight;i<0&&(i=n.strokeWidth/2),t.save(),n.fillLineDash&&t.setLineDash(n.fillLineDash),n.fillLineDashOffset&&(t.lineDashOffset=n.fillLineDashOffset),t.strokeStyle=n.fill||"",t.lineWidth=i,this._drawToContext(t,r,n.fixedDecimalPlaceDigits),t.restore()}_drawToContext(t,r,n,i="nonzero"){t.beginPath();for(let a of r.ops){let s=typeof n=="number"&&n>=0?a.data.map((l=>+l.toFixed(n))):a.data;switch(a.op){case"move":t.moveTo(s[0],s[1]);break;case"bcurveTo":t.bezierCurveTo(s[0],s[1],s[2],s[3],s[4],s[5]);break;case"lineTo":t.lineTo(s[0],s[1])}}r.type==="fillPath"?t.fill(i):t.stroke()}get generator(){return this.gen}getDefaultOptions(){return this.gen.defaultOptions}line(t,r,n,i,a){let s=this.gen.line(t,r,n,i,a);return this.draw(s),s}rectangle(t,r,n,i,a){let s=this.gen.rectangle(t,r,n,i,a);return this.draw(s),s}ellipse(t,r,n,i,a){let s=this.gen.ellipse(t,r,n,i,a);return this.draw(s),s}circle(t,r,n,i){let a=this.gen.circle(t,r,n,i);return this.draw(a),a}linearPath(t,r){let n=this.gen.linearPath(t,r);return this.draw(n),n}polygon(t,r){let n=this.gen.polygon(t,r);return this.draw(n),n}arc(t,r,n,i,a,s,l=!1,u){let h=this.gen.arc(t,r,n,i,a,s,l,u);return this.draw(h),h}curve(t,r){let n=this.gen.curve(t,r);return this.draw(n),n}path(t,r){let n=this.gen.path(t,r);return this.draw(n),n}},I4="http://www.w3.org/2000/svg",cO=class{static{o(this,"ot")}constructor(t,r){this.svg=t,this.gen=new zy(r)}draw(t){let r=t.sets||[],n=t.options||this.getDefaultOptions(),i=this.svg.ownerDocument||window.document,a=i.createElementNS(I4,"g"),s=t.options.fixedDecimalPlaceDigits;for(let l of r){let u=null;switch(l.type){case"path":u=i.createElementNS(I4,"path"),u.setAttribute("d",this.opsToPath(l,s)),u.setAttribute("stroke",n.stroke),u.setAttribute("stroke-width",n.strokeWidth+""),u.setAttribute("fill","none"),n.strokeLineDash&&u.setAttribute("stroke-dasharray",n.strokeLineDash.join(" ").trim()),n.strokeLineDashOffset&&u.setAttribute("stroke-dashoffset",`${n.strokeLineDashOffset}`);break;case"fillPath":u=i.createElementNS(I4,"path"),u.setAttribute("d",this.opsToPath(l,s)),u.setAttribute("stroke","none"),u.setAttribute("stroke-width","0"),u.setAttribute("fill",n.fill||""),t.shape!=="curve"&&t.shape!=="polygon"||u.setAttribute("fill-rule","evenodd");break;case"fillSketch":u=this.fillSketch(i,l,n)}u&&a.appendChild(u)}return a}fillSketch(t,r,n){let i=n.fillWeight;i<0&&(i=n.strokeWidth/2);let a=t.createElementNS(I4,"path");return a.setAttribute("d",this.opsToPath(r,n.fixedDecimalPlaceDigits)),a.setAttribute("stroke",n.fill||""),a.setAttribute("stroke-width",i+""),a.setAttribute("fill","none"),n.fillLineDash&&a.setAttribute("stroke-dasharray",n.fillLineDash.join(" ").trim()),n.fillLineDashOffset&&a.setAttribute("stroke-dashoffset",`${n.fillLineDashOffset}`),a}get generator(){return this.gen}getDefaultOptions(){return this.gen.defaultOptions}opsToPath(t,r){return this.gen.opsToPath(t,r)}line(t,r,n,i,a){let s=this.gen.line(t,r,n,i,a);return this.draw(s)}rectangle(t,r,n,i,a){let s=this.gen.rectangle(t,r,n,i,a);return this.draw(s)}ellipse(t,r,n,i,a){let s=this.gen.ellipse(t,r,n,i,a);return this.draw(s)}circle(t,r,n,i){let a=this.gen.circle(t,r,n,i);return this.draw(a)}linearPath(t,r){let n=this.gen.linearPath(t,r);return this.draw(n)}polygon(t,r){let n=this.gen.polygon(t,r);return this.draw(n)}arc(t,r,n,i,a,s,l=!1,u){let h=this.gen.arc(t,r,n,i,a,s,l,u);return this.draw(h)}curve(t,r){let n=this.gen.curve(t,r);return this.draw(n)}path(t,r){let n=this.gen.path(t,r);return this.draw(n)}},ut={canvas:o((e,t)=>new lO(e,t),"canvas"),svg:o((e,t)=>new cO(e,t),"svg"),generator:o(e=>new zy(e),"generator"),newSeed:o(()=>zy.newSeed(),"newSeed")}});function aoe(e,t){let{labelStyles:r}=ct(t);t.labelStyle=r;let n=Dt(t),i=n;n||(i="anchor");let a=e.insert("g").attr("class",i).attr("id",t.domId||t.id),s=1,{cssStyles:l}=t,u=ut.svg(a),h=dt(t,{fill:"black",stroke:"none",fillStyle:"solid"});t.look!=="handDrawn"&&(h.roughness=0);let d=u.circle(0,0,s*2,h),f=a.insert(()=>d,":first-child");return f.attr("class","anchor").attr("style",kn(l)),pt(t,f),t.intersect=function(p){return Z.info("Circle intersect",t,s,p),ht.circle(t,s,p)},a}var soe=F(()=>{"use strict";vt();Kt();nr();Jt();tr();Qt();o(aoe,"anchor")});function ooe(e,t,r,n,i,a,s){let u=(e+r)/2,h=(t+n)/2,d=Math.atan2(n-t,r-e),f=(r-e)/2,p=(n-t)/2,m=f/i,g=p/a,y=Math.sqrt(m**2+g**2);if(y>1)throw new Error("The given radii are too small to create an arc between the points.");let v=Math.sqrt(1-y**2),x=u+v*a*Math.sin(d)*(s?-1:1),b=h-v*i*Math.cos(d)*(s?-1:1),T=Math.atan2((t-b)/a,(e-x)/i),C=Math.atan2((n-b)/a,(r-x)/i)-T;s&&C<0&&(C+=2*Math.PI),!s&&C>0&&(C-=2*Math.PI);let w=[];for(let S=0;S<20;S++){let R=S/19,L=T+R*C,N=x+i*Math.cos(L),I=b+a*Math.sin(L);w.push({x:N,y:I})}return w}function dQe(e,t,r){let[n,i]=[t,r].sort((a,s)=>s-a);return i*(1-Math.sqrt(1-(e/n/2)**2))}async function loe(e,t){let{labelStyles:r,nodeStyles:n}=ct(t);t.labelStyle=r;let i=t.padding??0,a=t.look==="neo"?16:i,s=t.look==="neo"?12:i,l=o(L=>L+s,"calcTotalHeight"),u=o(L=>{let N=L/2;return[N/(2.5+L/50),N]},"calcEllipseRadius"),{shapeSvg:h,bbox:d}=await It(e,t,Dt(t)),f=l(t?.height?t?.height:d.height),[p,m]=u(f),g=dQe(f,p,m),v=(t?.width?t?.width:d.width)+a*2+g-g,x=f,{cssStyles:b}=t,T=[{x:v/2,y:-x/2},{x:-v/2,y:-x/2},...ooe(-v/2,-x/2,-v/2,x/2,p,m,!1),{x:v/2,y:x/2},...ooe(v/2,x/2,v/2,-x/2,p,m,!0)],k=ut.svg(h),C=dt(t,{});t.look!=="handDrawn"&&(C.roughness=0,C.fillStyle="solid");let w=or(T),S=k.path(w,C),R=h.insert(()=>S,":first-child");return R.attr("class","basic label-container outer-path"),b&&t.look!=="handDrawn"&&R.selectAll("path").attr("style",b),n&&t.look!=="handDrawn"&&R.selectAll("path").attr("style",n),R.attr("transform",`translate(${p/2}, 0)`),pt(t,R),t.intersect=function(L){return ht.polygon(t,T,L)},h}var coe=F(()=>{"use strict";Kt();nr();Jt();tr();o(ooe,"generateArcPoints");o(dQe,"calculateArcSagitta");o(loe,"bowTieRect")});function as(e,t,r,n){return e.insert("polygon",":first-child").attr("points",n.map(function(i){return i.x+","+i.y}).join(" ")).attr("class","label-container").attr("transform","translate("+-t/2+","+r/2+")")}var Ch=F(()=>{"use strict";o(as,"insertPolygonShape")});async function uoe(e,t){let{labelStyles:r,nodeStyles:n}=ct(t);t.labelStyle=r;let i=t.padding??0,a=t.look==="neo"?28:i,s=t.look==="neo"?24:i,{shapeSvg:l,bbox:u}=await It(e,t,Dt(t)),h=(t?.width??u.width)+(t.look==="neo"?a*2:a+F4),d=(t?.height??u.height)+(t.look==="neo"?s*2:s),f=0,p=h,m=-d,g=0,y=[{x:f+F4,y:m},{x:p,y:m},{x:p,y:g},{x:f,y:g},{x:f,y:m+F4},{x:f+F4,y:m}],v,{cssStyles:x}=t;if(t.look==="handDrawn"){let b=ut.svg(l),T=dt(t,{}),k=or(y),C=b.path(k,T);v=l.insert(()=>C,":first-child").attr("transform",`translate(${-h/2}, ${d/2})`),x&&v.attr("style",x)}else v=as(l,h,d,y);return n&&v.attr("style",n),pt(t,v),t.intersect=function(b){return ht.polygon(t,y,b)},l}var F4,hoe=F(()=>{"use strict";Kt();nr();Jt();tr();Ch();Kt();F4=12;o(uoe,"card")});function doe(e,t){let{nodeStyles:r}=ct(t);t.label="";let n=e.insert("g").attr("class",Dt(t)).attr("id",t.domId??t.id),{cssStyles:i}=t,a=Math.max(28,t.width??0),s=[{x:0,y:a/2},{x:a/2,y:0},{x:0,y:-a/2},{x:-a/2,y:0}],l=ut.svg(n),u=dt(t,{});t.look!=="handDrawn"&&(u.roughness=0,u.fillStyle="solid");let h=or(s),d=l.path(h,u),f=n.insert(()=>d,":first-child");return i&&t.look!=="handDrawn"&&f.selectAll("path").attr("style",i),r&&t.look!=="handDrawn"&&f.selectAll("path").attr("style",r),t.width=28,t.height=28,t.intersect=function(p){return ht.polygon(t,s,p)},n}var foe=F(()=>{"use strict";nr();tr();Jt();Kt();o(doe,"choice")});async function z4(e,t,r){let{labelStyles:n,nodeStyles:i}=ct(t);t.labelStyle=n;let{shapeSvg:a,bbox:s,halfPadding:l}=await It(e,t,Dt(t)),u=16,h=r?.padding??l,d=t.look==="neo"?s.width/2+u*2:s.width/2+h,f,{cssStyles:p}=t;if(t.look==="handDrawn"){let m=ut.svg(a),g=dt(t,{}),y=m.circle(0,0,d*2,g);f=a.insert(()=>y,":first-child"),f.attr("class","basic label-container").attr("style",kn(p))}else f=a.insert("circle",":first-child").attr("class","basic label-container").attr("style",i).attr("r",d).attr("cx",0).attr("cy",0);return pt(t,f),t.calcIntersect=function(m,g){let y=m.width/2;return ht.circle(m,y,g)},t.intersect=function(m){return Z.info("Circle intersect",t,d,m),ht.circle(t,d,m)},a}var hO=F(()=>{"use strict";tr();vt();Qt();nr();Jt();Kt();o(z4,"circle")});function fQe(e){let t=Math.cos(Math.PI/4),r=Math.sin(Math.PI/4),n=e*2,i={x:n/2*t,y:n/2*r},a={x:-(n/2)*t,y:n/2*r},s={x:-(n/2)*t,y:-(n/2)*r},l={x:n/2*t,y:-(n/2)*r};return`M ${a.x},${a.y} L ${l.x},${l.y}
+                   M ${i.x},${i.y} L ${s.x},${s.y}`}function poe(e,t){let{labelStyles:r,nodeStyles:n}=ct(t);t.labelStyle=r,t.label="";let i=e.insert("g").attr("class",Dt(t)).attr("id",t.domId??t.id),a=Math.max(30,t?.width??0),{cssStyles:s}=t,l=ut.svg(i),u=dt(t,{});t.look!=="handDrawn"&&(u.roughness=0,u.fillStyle="solid");let h=l.circle(0,0,a*2,u),d=fQe(a),f=l.path(d,u),p=i.insert(()=>h,":first-child");return p.insert(()=>f),p.attr("class","outer-path"),s&&t.look!=="handDrawn"&&p.selectAll("path").attr("style",s),n&&t.look!=="handDrawn"&&p.selectAll("path").attr("style",n),pt(t,p),t.intersect=function(m){return Z.info("crossedCircle intersect",t,{radius:a,point:m}),ht.circle(t,a,m)},i}var moe=F(()=>{"use strict";vt();Kt();Jt();tr();nr();o(fQe,"createLine");o(poe,"crossedCircle")});function ef(e,t,r,n=100,i=0,a=180){let s=[],l=i*Math.PI/180,d=(a*Math.PI/180-l)/(n-1);for(let f=0;f<n;f++){let p=l+f*d,m=e+r*Math.cos(p),g=t+r*Math.sin(p);s.push({x:-m,y:-g})}return s}async function goe(e,t){let{labelStyles:r,nodeStyles:n}=ct(t);t.labelStyle=r;let{shapeSvg:i,bbox:a,label:s}=await It(e,t,Dt(t)),l=t.look==="neo"?18:t.padding??0,u=t.look==="neo"?12:t.padding??0,h=a.width+l,d=a.height+u,f=Math.max(5,d*.1),{cssStyles:p}=t,m=[...ef(h/2,-d/2,f,30,-90,0),{x:-h/2-f,y:f},...ef(h/2+f*2,-f,f,20,-180,-270),...ef(h/2+f*2,f,f,20,-90,-180),{x:-h/2-f,y:-d/2},...ef(h/2,d/2,f,20,0,90)],g=[{x:h/2,y:-d/2-f},{x:-h/2,y:-d/2-f},...ef(h/2,-d/2,f,20,-90,0),{x:-h/2-f,y:-f},...ef(h/2+h*.1,-f,f,20,-180,-270),...ef(h/2+h*.1,f,f,20,-90,-180),{x:-h/2-f,y:d/2},...ef(h/2,d/2,f,20,0,90),{x:-h/2,y:d/2+f},{x:h/2,y:d/2+f}],y=ut.svg(i),v=dt(t,{fill:"none"});t.look!=="handDrawn"&&(v.roughness=0,v.fillStyle="solid");let b=or(m).replace("Z",""),T=y.path(b,v),k=or(g),C=y.path(k,{...v}),w=i.insert("g",":first-child");return w.insert(()=>C,":first-child").attr("stroke-opacity",0),w.insert(()=>T,":first-child"),w.attr("class","text"),p&&t.look!=="handDrawn"&&w.selectAll("path").attr("style",p),n&&t.look!=="handDrawn"&&w.selectAll("path").attr("style",n),w.attr("transform",`translate(${f}, 0)`),s.attr("transform",`translate(${-h/2+f-(a.x-(a.left??0))},${-d/2+(t.padding??0)/2-(a.y-(a.top??0))})`),pt(t,w),t.intersect=function(S){return ht.polygon(t,g,S)},i}var yoe=F(()=>{"use strict";Kt();nr();Jt();tr();o(ef,"generateCirclePoints");o(goe,"curlyBraceLeft")});function tf(e,t,r,n=100,i=0,a=180){let s=[],l=i*Math.PI/180,d=(a*Math.PI/180-l)/(n-1);for(let f=0;f<n;f++){let p=l+f*d,m=e+r*Math.cos(p),g=t+r*Math.sin(p);s.push({x:m,y:g})}return s}async function voe(e,t){let{labelStyles:r,nodeStyles:n}=ct(t);t.labelStyle=r;let{shapeSvg:i,bbox:a,label:s}=await It(e,t,Dt(t)),l=t.look==="neo"?18:t.padding??0,u=t.look==="neo"?12:t.padding??0,h=a.width+(t.look==="neo"?l*2:l),d=a.height+(t.look==="neo"?u*2:u),f=Math.max(5,d*.1),{cssStyles:p}=t,m=[...tf(h/2,-d/2,f,20,-90,0),{x:h/2+f,y:-f},...tf(h/2+f*2,-f,f,20,-180,-270),...tf(h/2+f*2,f,f,20,-90,-180),{x:h/2+f,y:d/2},...tf(h/2,d/2,f,20,0,90)],g=[{x:-h/2,y:-d/2-f},{x:h/2,y:-d/2-f},...tf(h/2,-d/2,f,20,-90,0),{x:h/2+f,y:-f},...tf(h/2+f*2,-f,f,20,-180,-270),...tf(h/2+f*2,f,f,20,-90,-180),{x:h/2+f,y:d/2},...tf(h/2,d/2,f,20,0,90),{x:h/2,y:d/2+f},{x:-h/2,y:d/2+f}],y=ut.svg(i),v=dt(t,{fill:"none"});t.look!=="handDrawn"&&(v.roughness=0,v.fillStyle="solid");let b=or(m).replace("Z",""),T=y.path(b,v),k=or(g),C=y.path(k,{...v}),w=i.insert("g",":first-child");return w.insert(()=>C,":first-child").attr("stroke-opacity",0),w.insert(()=>T,":first-child"),w.attr("class","text"),p&&t.look!=="handDrawn"&&w.selectAll("path").attr("style",p),n&&t.look!=="handDrawn"&&w.selectAll("path").attr("style",n),w.attr("transform",`translate(${-f}, 0)`),s.attr("transform",`translate(${-h/2+(t.padding??0)/2-(a.x-(a.left??0))},${-d/2+(t.padding??0)/2-(a.y-(a.top??0))})`),pt(t,w),t.intersect=function(S){return ht.polygon(t,g,S)},i}var xoe=F(()=>{"use strict";Kt();nr();Jt();tr();o(tf,"generateCirclePoints");o(voe,"curlyBraceRight")});function ss(e,t,r,n=100,i=0,a=180){let s=[],l=i*Math.PI/180,d=(a*Math.PI/180-l)/(n-1);for(let f=0;f<n;f++){let p=l+f*d,m=e+r*Math.cos(p),g=t+r*Math.sin(p);s.push({x:-m,y:-g})}return s}async function boe(e,t){let{labelStyles:r,nodeStyles:n}=ct(t);t.labelStyle=r;let{shapeSvg:i,bbox:a,label:s}=await It(e,t,Dt(t)),l=t.look==="neo"?18:t.padding??0,u=t.look==="neo"?12:t.padding??0,h=a.width+(t.look==="neo"?l*2:l),d=a.height+(t.look==="neo"?u*2:u),f=Math.max(5,d*.1),{cssStyles:p}=t,m=[...ss(h/2,-d/2,f,30,-90,0),{x:-h/2-f,y:f},...ss(h/2+f*2,-f,f,20,-180,-270),...ss(h/2+f*2,f,f,20,-90,-180),{x:-h/2-f,y:-d/2},...ss(h/2,d/2,f,20,0,90)],g=[...ss(-h/2+f+f/2,-d/2,f,20,-90,-180),{x:h/2-f/2,y:f},...ss(-h/2-f/2,-f,f,20,0,90),...ss(-h/2-f/2,f,f,20,-90,0),{x:h/2-f/2,y:-f},...ss(-h/2+f+f/2,d/2,f,30,-180,-270)],y=[{x:h/2,y:-d/2-f},{x:-h/2,y:-d/2-f},...ss(h/2,-d/2,f,20,-90,0),{x:-h/2-f,y:-f},...ss(h/2+f*2,-f,f,20,-180,-270),...ss(h/2+f*2,f,f,20,-90,-180),{x:-h/2-f,y:d/2},...ss(h/2,d/2,f,20,0,90),{x:-h/2,y:d/2+f},{x:h/2-f-f/2,y:d/2+f},...ss(-h/2+f+f/2,-d/2,f,20,-90,-180),{x:h/2-f/2,y:f},...ss(-h/2-f/2,-f,f,20,0,90),...ss(-h/2-f/2,f,f,20,-90,0),{x:h/2-f/2,y:-f},...ss(-h/2+f+f/2,d/2,f,30,-180,-270)],v=ut.svg(i),x=dt(t,{fill:"none"});t.look!=="handDrawn"&&(x.roughness=0,x.fillStyle="solid");let T=or(m).replace("Z",""),k=v.path(T,x),w=or(g).replace("Z",""),S=v.path(w,x),R=or(y),L=v.path(R,{...x}),N=i.insert("g",":first-child");return N.insert(()=>L,":first-child").attr("stroke-opacity",0),N.insert(()=>k,":first-child"),N.insert(()=>S,":first-child"),N.attr("class","text"),p&&t.look!=="handDrawn"&&N.selectAll("path").attr("style",p),n&&t.look!=="handDrawn"&&N.selectAll("path").attr("style",n),N.attr("transform",`translate(${f-f/4}, 0)`),s.attr("transform",`translate(${-h/2+(t.padding??0)/2-(a.x-(a.left??0))},${-d/2+(t.padding??0)/2-(a.y-(a.top??0))})`),pt(t,N),t.intersect=function(I){return ht.polygon(t,y,I)},i}var Toe=F(()=>{"use strict";Kt();nr();Jt();tr();o(ss,"generateCirclePoints");o(boe,"curlyBraces")});async function Coe(e,t){let{labelStyles:r,nodeStyles:n}=ct(t);t.labelStyle=r;let i=t.padding??0,a=t.look==="neo"?16:i,s=t.look==="neo"?12:i,l=20,u=5,{shapeSvg:h,bbox:d}=await It(e,t,Dt(t)),f=Math.max(l,(d.width+a*2)*1.25,t?.width??0),p=Math.max(u,d.height+s*2,t?.height??0),m=p/2,{cssStyles:g}=t,y=ut.svg(h),v=dt(t,{});t.look!=="handDrawn"&&(v.roughness=0,v.fillStyle="solid");let x=f,b=p,T=x-m,k=b/4,C=[{x:T,y:0},{x:k,y:0},{x:0,y:b/2},{x:k,y:b},{x:T,y:b},...Cm(-T,-b/2,m,50,270,90)],w=or(C),S=y.path(w,v),R=h.insert(()=>S,":first-child");return R.attr("class","basic label-container outer-path"),g&&t.look!=="handDrawn"&&R.selectChildren("path").attr("style",g),n&&t.look!=="handDrawn"&&R.selectChildren("path").attr("style",n),R.attr("transform",`translate(${-f/2}, ${-p/2})`),pt(t,R),t.intersect=function(L){return ht.polygon(t,C,L)},h}var woe=F(()=>{"use strict";Kt();nr();Jt();tr();o(Coe,"curvedTrapezoid")});async function Eoe(e,t){let{labelStyles:r,nodeStyles:n}=ct(t);t.labelStyle=r;let i=t.padding??0,a=t.look==="neo"?24:i,s=t.look==="neo"?24:i;if(t.width||t.height){let v=t.width??0;t.width=(t.width??0)-s,t.width<Soe&&(t.width=Soe);let b=v/2/(2.5+v/50);t.height=(t.height??0)-a-b*3,t.height<koe&&(t.height=koe)}let{shapeSvg:l,bbox:u,label:h}=await It(e,t,Dt(t)),d=(t.width?t.width:u.width)+s,f=d/2,p=f/(2.5+d/50),m=(t.height?t.height:u.height)+a+p,g,{cssStyles:y}=t;if(t.look==="handDrawn"){let v=ut.svg(l),x=mQe(0,0,d,m,f,p),b=gQe(0,p,d,m,f,p),T=dt(t,{}),k=v.path(x,T),C=v.path(b,dt(t,{fill:"none"}));g=l.insert(()=>C,":first-child"),g=l.insert(()=>k,":first-child"),g.attr("class","basic label-container"),y&&g.attr("style",y)}else{let v=pQe(0,0,d,m,f,p);g=l.insert("path",":first-child").attr("d",v).attr("class","basic label-container outer-path").attr("style",kn(y)).attr("style",n)}return g.attr("label-offset-y",p),g.attr("transform",`translate(${-d/2}, ${-(m/2+p)})`),pt(t,g),h.attr("transform",`translate(${-(u.width/2)-(u.x-(u.left??0))}, ${-(u.height/2)+(t.padding??0)/1.5-(u.y-(u.top??0))})`),t.intersect=function(v){let x=ht.rect(t,v),b=x.x-(t.x??0);if(f!=0&&(Math.abs(b)<(t.width??0)/2||Math.abs(b)==(t.width??0)/2&&Math.abs(x.y-(t.y??0))>(t.height??0)/2-p)){let T=p*p*(1-b*b/(f*f));T>0&&(T=Math.sqrt(T)),T=p-T,v.y-(t.y??0)>0&&(T=-T),x.y+=T}return x},l}var pQe,mQe,gQe,koe,Soe,Aoe=F(()=>{"use strict";Kt();nr();Jt();tr();Qt();pQe=o((e,t,r,n,i,a)=>[`M${e},${t+a}`,`a${i},${a} 0,0,0 ${r},0`,`a${i},${a} 0,0,0 ${-r},0`,`l0,${n}`,`a${i},${a} 0,0,0 ${r},0`,`l0,${-n}`].join(" "),"createCylinderPathD"),mQe=o((e,t,r,n,i,a)=>[`M${e},${t+a}`,`M${e+r},${t+a}`,`a${i},${a} 0,0,0 ${-r},0`,`l0,${n}`,`a${i},${a} 0,0,0 ${r},0`,`l0,${-n}`].join(" "),"createOuterCylinderPathD"),gQe=o((e,t,r,n,i,a)=>[`M${e-r/2},${-n/2}`,`a${i},${a} 0,0,0 ${r},0`].join(" "),"createInnerCylinderPathD"),koe=8,Soe=8;o(Eoe,"cylinder")});var io,km=F(()=>{"use strict";io=o((e,t,r,n,i)=>["M",e+i,t,"H",e+r-i,"A",i,i,0,0,1,e+r,t+i,"V",t+n-i,"A",i,i,0,0,1,e+r-i,t+n,"H",e+i,"A",i,i,0,0,1,e,t+n-i,"V",t+i,"A",i,i,0,0,1,e+i,t,"Z"].join(" "),"createRoundedRectPathD")});async function ac(e,t,r){let{labelStyles:n,nodeStyles:i}=ct(t);t.labelStyle=n;let{shapeSvg:a,bbox:s}=await It(e,t,Dt(t)),l=Math.max(s.width+r.labelPaddingX*2,t?.width||0),u=Math.max(s.height+r.labelPaddingY*2,t?.height||0),h=-l/2,d=-u/2,f,{rx:p,ry:m}=t,{cssStyles:g}=t;if(r?.rx&&r.ry&&(p=r.rx,m=r.ry),t.look==="handDrawn"){let y=ut.svg(a),v=dt(t,{}),x=p||m?y.path(io(h,d,l,u,p||0),v):y.rectangle(h,d,l,u,v);f=a.insert(()=>x,":first-child"),f.attr("class","basic label-container").attr("style",kn(g))}else f=a.insert("rect",":first-child"),f.attr("class","basic label-container").attr("style",i).attr("rx",kn(p)).attr("ry",kn(m)).attr("x",h).attr("y",d).attr("width",l).attr("height",u);return pt(t,f),t.calcIntersect=function(y,v){return ht.rect(y,v)},t.intersect=function(y){return ht.rect(t,y)},a}var Sm=F(()=>{"use strict";Kt();nr();km();Jt();tr();Qt();o(ac,"drawRect")});async function Roe(e,t){let{cssClasses:r,labelPaddingX:n,labelPaddingY:i,padding:a,width:s,height:l}=t,u={rx:0,ry:0,classes:r??"",labelPaddingX:n??(a??0)*2,labelPaddingY:i??a??0},h=await ac(e,t,u);if(t.look==="handDrawn"){let m=ut.svg(h),g=dt(t,{}),y=h.select(".basic.label-container > path:nth-child(2)"),v=y.node();if(!v)return h;let x=null;if(v instanceof SVGGraphicsElement)x=v.getBBox();else return h;return h.insert(()=>m.line(x.x,x.y,x.x+x.width,x.y,g),".basic.label-container g.label"),h.insert(()=>m.line(x.x,x.y+x.height,x.x+x.width,x.y+x.height,g),".basic.label-container g.label"),y.remove(),h}let d=h.select(".basic.label-container"),f=(Number(d.attr("width"))||s)??0,p=(Number(d.attr("height"))||l)??0;return f>0&&p>0&&d.attr("stroke-dasharray",`${f} ${p}`),h}var _oe=F(()=>{"use strict";Sm();Jt();tr();o(Roe,"datastore")});async function Loe(e,t){let{labelStyles:r,nodeStyles:n}=ct(t);t.labelStyle=r;let i=t.look==="neo"?16:t.padding??0,a=t.look==="neo"?16:t.padding??0,{shapeSvg:s,bbox:l,label:u}=await It(e,t,Dt(t)),h=l.width+i,d=l.height+a,f=d*.2,p=-h/2,m=-d/2-f/2,{cssStyles:g}=t,y=ut.svg(s),v=dt(t,{});t.look!=="handDrawn"&&(v.roughness=0,v.fillStyle="solid");let x=[{x:p,y:m+f},{x:-p,y:m+f},{x:-p,y:-m},{x:p,y:-m},{x:p,y:m},{x:-p,y:m},{x:-p,y:m+f}],b=y.polygon(x.map(k=>[k.x,k.y]),v),T=s.insert(()=>b,":first-child");return T.attr("class","basic label-container outer-path"),g&&t.look!=="handDrawn"&&T.selectAll("path").attr("style",g),n&&t.look!=="handDrawn"&&T.selectAll("path").attr("style",n),u.attr("transform",`translate(${p+(t.padding??0)/2-(l.x-(l.left??0))}, ${m+f+(t.padding??0)/2-(l.y-(l.top??0))})`),pt(t,T),t.intersect=function(k){return ht.rect(t,k)},s}var Doe=F(()=>{"use strict";Kt();nr();Jt();tr();o(Loe,"dividedRectangle")});async function Ioe(e,t){let{labelStyles:r,nodeStyles:n}=ct(t),i=t.look==="neo"?12:5;t.labelStyle=r;let a=t.padding??0,s=t.look==="neo"?16:a,{shapeSvg:l,bbox:u}=await It(e,t,Dt(t)),h=(t?.width?t?.width/2:u.width/2)+(s??0),d=h-i,f,{cssStyles:p}=t;if(t.look==="handDrawn"){let m=ut.svg(l),g=dt(t,{roughness:.2,strokeWidth:2.5}),y=dt(t,{roughness:.2,strokeWidth:1.5}),v=m.circle(0,0,h*2,g),x=m.circle(0,0,d*2,y);f=l.insert("g",":first-child"),f.attr("class",kn(t.cssClasses)).attr("style",kn(p)),f.node()?.appendChild(v),f.node()?.appendChild(x)}else{f=l.insert("g",":first-child");let m=f.insert("circle",":first-child"),g=f.insert("circle");f.attr("class","basic label-container").attr("style",n),m.attr("class","outer-circle").attr("style",n).attr("r",h).attr("cx",0).attr("cy",0),g.attr("class","inner-circle").attr("style",n).attr("r",d).attr("cx",0).attr("cy",0)}return pt(t,f),t.intersect=function(m){return Z.info("DoubleCircle intersect",t,h,m),ht.circle(t,h,m)},l}var Moe=F(()=>{"use strict";vt();Kt();nr();Jt();tr();Qt();o(Ioe,"doublecircle")});function Noe(e,t,{config:{themeVariables:r}}){let{labelStyles:n,nodeStyles:i}=ct(t);t.label="",t.labelStyle=n;let a=e.insert("g").attr("class",Dt(t)).attr("id",t.domId??t.id),s=7,{cssStyles:l}=t,u=ut.svg(a),{nodeBorder:h}=r,d=dt(t,{fillStyle:"solid"});t.look!=="handDrawn"&&(d.roughness=0);let f=u.circle(0,0,s*2,d),p=a.insert(()=>f,":first-child");return p.selectAll("path").attr("style",`fill: ${h} !important;`),l&&l.length>0&&t.look!=="handDrawn"&&p.selectAll("path").attr("style",l),i&&t.look!=="handDrawn"&&p.selectAll("path").attr("style",i),pt(t,p),t.intersect=function(m){return Z.info("filledCircle intersect",t,{radius:s,point:m}),ht.circle(t,s,m)},a}var Poe=F(()=>{"use strict";tr();vt();nr();Jt();Kt();o(Noe,"filledCircle")});async function $oe(e,t){let{labelStyles:r,nodeStyles:n}=ct(t);t.labelStyle=r;let i=t.padding??0,a=t.look==="neo"?i*2:i;(t.width||t.height)&&(t.height=t?.height??0,t.height<Ooe&&(t.height=Ooe),t.width=(t?.width??0)-a-a/2,t.width<Boe&&(t.width=Boe));let{shapeSvg:s,bbox:l,label:u}=await It(e,t,Dt(t)),h=(t?.width?t?.width:l.width)+(a??0),d=t?.height?t?.height:h+l.height,f=d,p=[{x:0,y:-d},{x:f,y:-d},{x:f/2,y:0}],{cssStyles:m}=t,g=ut.svg(s),y=dt(t,{});t.look!=="handDrawn"&&(y.roughness=0,y.fillStyle="solid");let v=or(p),x=g.path(v,y),b=s.insert(()=>x,":first-child").attr("transform",`translate(${-d/2}, ${d/2})`).attr("class","outer-path");return m&&t.look!=="handDrawn"&&b.selectChildren("path").attr("style",m),n&&t.look!=="handDrawn"&&b.selectChildren("path").attr("style",n),t.width=h,t.height=d,pt(t,b),u.attr("transform",`translate(${-l.width/2-(l.x-(l.left??0))}, ${-d/2+(t.padding??0)/2+(l.y-(l.top??0))})`),t.intersect=function(T){return Z.info("Triangle intersect",t,p,T),ht.polygon(t,p,T)},s}var Ooe,Boe,Foe=F(()=>{"use strict";vt();Kt();nr();Jt();tr();Kt();Ooe=10,Boe=10;o($oe,"flippedTriangle")});function zoe(e,t,{dir:r,config:{state:n,themeVariables:i}}){let{nodeStyles:a}=ct(t);t.label="";let s=e.insert("g").attr("class",Dt(t)).attr("id",t.domId??t.id),{cssStyles:l}=t,u=Math.max(70,t?.width??0),h=Math.max(10,t?.height??0);r==="LR"&&(u=Math.max(10,t?.width??0),h=Math.max(70,t?.height??0));let d=-1*u/2,f=-1*h/2,p=ut.svg(s),m=dt(t,{stroke:i.lineColor,fill:i.lineColor});t.look!=="handDrawn"&&(m.roughness=0,m.fillStyle="solid");let g=p.rectangle(d,f,u,h,m),y=s.insert(()=>g,":first-child");l&&t.look!=="handDrawn"&&y.selectAll("path").attr("style",l),a&&t.look!=="handDrawn"&&y.selectAll("path").attr("style",a),pt(t,y);let v=n?.padding??0;return t.width&&t.height&&(t.width+=v/2||0,t.height+=v/2||0),t.intersect=function(x){return ht.rect(t,x)},s}var Goe=F(()=>{"use strict";tr();nr();Jt();Kt();o(zoe,"forkJoin")});async function Voe(e,t){let{labelStyles:r,nodeStyles:n}=ct(t);t.labelStyle=r;let i=15,a=10,s=t.look==="neo"?16:t.padding??0,l=t.look==="neo"?12:t.padding??0;(t.width||t.height)&&(t.height=(t?.height??0)-l*2,t.height<a&&(t.height=a),t.width=(t?.width??0)-s*2,t.width<i&&(t.width=i));let{shapeSvg:u,bbox:h}=await It(e,t,Dt(t)),d=(t?.width?t?.width:Math.max(i,h.width))+s*2,f=(t?.height?t?.height:Math.max(a,h.height))+l*2,p=f/2,{cssStyles:m}=t,g=ut.svg(u),y=dt(t,{});t.look!=="handDrawn"&&(y.roughness=0,y.fillStyle="solid");let v=[{x:-d/2,y:-f/2},{x:d/2-p,y:-f/2},...Cm(-d/2+p,0,p,50,90,270),{x:d/2-p,y:f/2},{x:-d/2,y:f/2}],x=or(v),b=g.path(x,y),T=u.insert(()=>b,":first-child");return T.attr("class","basic label-container outer-path"),m&&t.look!=="handDrawn"&&T.selectChildren("path").attr("style",m),n&&t.look!=="handDrawn"&&T.selectChildren("path").attr("style",n),pt(t,T),t.intersect=function(k){return Z.info("Pill intersect",t,{radius:p,point:k}),ht.polygon(t,v,k)},u}var Woe=F(()=>{"use strict";vt();Kt();nr();Jt();tr();o(Voe,"halfRoundedRectangle")});async function qoe(e,t){let{labelStyles:r,nodeStyles:n}=ct(t),i=t.look==="neo"?3.5:4;t.labelStyle=r;let a=t.padding??0,s=70,l=32,u=t.look==="neo"?s:a,h=t.look==="neo"?l:a;if(t.width||t.height){let T=(t.height??0)/i;t.width=(t?.width??0)-2*T-h,t.height=(t.height??0)-u}let{shapeSvg:d,bbox:f}=await It(e,t,Dt(t)),p=(t?.height?t?.height:f.height)+u,m=p/i,g=(t?.width?t?.width:f.width)+2*m+h,y=[{x:m,y:0},{x:g-m,y:0},{x:g,y:-p/2},{x:g-m,y:-p},{x:m,y:-p},{x:0,y:-p/2}],v,{cssStyles:x}=t;if(t.look==="handDrawn"){let b=ut.svg(d),T=dt(t,{}),k=yQe(0,0,g,p,m),C=b.path(k,T);v=d.insert(()=>C,":first-child").attr("transform",`translate(${-g/2}, ${p/2})`),x&&v.attr("style",x)}else v=as(d,g,p,y);return n&&v.attr("style",n),t.width=g,t.height=p,pt(t,v),t.intersect=function(b){return ht.polygon(t,y,b)},d}var yQe,Hoe=F(()=>{"use strict";Kt();nr();Jt();tr();Ch();yQe=o((e,t,r,n,i)=>[`M${e+i},${t}`,`L${e+r-i},${t}`,`L${e+r},${t-n/2}`,`L${e+r-i},${t-n}`,`L${e+i},${t-n}`,`L${e},${t-n/2}`,"Z"].join(" "),"createHexagonPathD");o(qoe,"hexagon")});async function Uoe(e,t){let{labelStyles:r,nodeStyles:n}=ct(t);t.label="",t.labelStyle=r;let{shapeSvg:i}=await It(e,t,Dt(t)),a=Math.max(30,t?.width??0),s=Math.max(30,t?.height??0),{cssStyles:l}=t,u=ut.svg(i),h=dt(t,{});t.look!=="handDrawn"&&(h.roughness=0,h.fillStyle="solid");let d=[{x:0,y:0},{x:a,y:0},{x:0,y:s},{x:a,y:s}],f=or(d),p=u.path(f,h),m=i.insert(()=>p,":first-child");return m.attr("class","basic label-container outer-path"),l&&t.look!=="handDrawn"&&m.selectChildren("path").attr("style",l),n&&t.look!=="handDrawn"&&m.selectChildren("path").attr("style",n),m.attr("transform",`translate(${-a/2}, ${-s/2})`),pt(t,m),t.intersect=function(g){return Z.info("Pill intersect",t,{points:d}),ht.polygon(t,d,g)},i}var Yoe=F(()=>{"use strict";vt();Kt();nr();Jt();tr();o(Uoe,"hourglass")});async function joe(e,t,{config:{themeVariables:r,flowchart:n}}){let{labelStyles:i}=ct(t);t.labelStyle=i;let a=t.assetHeight??48,s=t.assetWidth??48,l=Math.max(a,s),u=n?.wrappingWidth;t.width=Math.max(l,u??0);let{shapeSvg:h,bbox:d,label:f}=await It(e,t,"icon-shape default"),p=t.pos==="t",m=l,g=l,{nodeBorder:y}=r,{stylesMap:v}=iu(t),x=-g/2,b=-m/2,T=t.label?8:0,k=ut.svg(h),C=dt(t,{stroke:"none",fill:"none"});t.look!=="handDrawn"&&(C.roughness=0,C.fillStyle="solid");let w=k.rectangle(x,b,g,m,C),S=Math.max(g,d.width),R=m+d.height+T,L=k.rectangle(-S/2,-R/2,S,R,{...C,fill:"transparent",stroke:"none"}),N=h.insert(()=>w,":first-child"),I=h.insert(()=>L);if(t.icon){let _=h.append("g");_.html(`<g>${await ts(t.icon,{height:l,width:l,fallbackPrefix:""})}</g>`);let A=_.node().getBBox(),M=A.width,D=A.height,P=A.x,B=A.y;_.attr("transform",`translate(${-M/2-P},${p?d.height/2+T/2-D/2-B:-d.height/2-T/2-D/2-B})`),_.attr("style",`color: ${v.get("stroke")??y};`)}return f.attr("transform",`translate(${-d.width/2-(d.x-(d.left??0))},${p?-R/2:R/2-d.height})`),N.attr("transform",`translate(0,${p?d.height/2+T/2:-d.height/2-T/2})`),pt(t,I),t.intersect=function(_){if(Z.info("iconSquare intersect",t,_),!t.label)return ht.rect(t,_);let A=t.x??0,M=t.y??0,D=t.height??0,P=[];return p?P=[{x:A-d.width/2,y:M-D/2},{x:A+d.width/2,y:M-D/2},{x:A+d.width/2,y:M-D/2+d.height+T},{x:A+g/2,y:M-D/2+d.height+T},{x:A+g/2,y:M+D/2},{x:A-g/2,y:M+D/2},{x:A-g/2,y:M-D/2+d.height+T},{x:A-d.width/2,y:M-D/2+d.height+T}]:P=[{x:A-g/2,y:M-D/2},{x:A+g/2,y:M-D/2},{x:A+g/2,y:M-D/2+m},{x:A+d.width/2,y:M-D/2+m},{x:A+d.width/2/2,y:M+D/2},{x:A-d.width/2,y:M+D/2},{x:A-d.width/2,y:M-D/2+m},{x:A-g/2,y:M-D/2+m}],ht.polygon(t,P,_)},h}var Xoe=F(()=>{"use strict";tr();vt();Vl();nr();Jt();Kt();o(joe,"icon")});async function Koe(e,t,{config:{themeVariables:r,flowchart:n}}){let{labelStyles:i}=ct(t);t.labelStyle=i;let a=t.assetHeight??48,s=t.assetWidth??48,l=Math.max(a,s),u=n?.wrappingWidth;t.width=Math.max(l,u??0);let{shapeSvg:h,bbox:d,label:f}=await It(e,t,"icon-shape default"),p=20,m=t.label?8:0,g=t.pos==="t",{nodeBorder:y,mainBkg:v}=r,{stylesMap:x}=iu(t),b=ut.svg(h),T=dt(t,{});t.look!=="handDrawn"&&(T.roughness=0,T.fillStyle="solid");let k=x.get("fill");T.stroke=k??v;let C=h.append("g");t.icon&&C.html(`<g>${await ts(t.icon,{height:l,width:l,fallbackPrefix:""})}</g>`);let w=C.node().getBBox(),S=w.width,R=w.height,L=w.x,N=w.y,I=Math.max(S,R)*Math.SQRT2+p*2,_=b.circle(0,0,I,T),A=Math.max(I,d.width),M=I+d.height+m,D=b.rectangle(-A/2,-M/2,A,M,{...T,fill:"transparent",stroke:"none"}),P=h.insert(()=>_,":first-child"),B=h.insert(()=>D);return C.attr("transform",`translate(${-S/2-L},${g?d.height/2+m/2-R/2-N:-d.height/2-m/2-R/2-N})`),C.attr("style",`color: ${x.get("stroke")??y};`),f.attr("transform",`translate(${-d.width/2-(d.x-(d.left??0))},${g?-M/2:M/2-d.height})`),P.attr("transform",`translate(0,${g?d.height/2+m/2:-d.height/2-m/2})`),pt(t,B),t.intersect=function(O){return Z.info("iconSquare intersect",t,O),ht.rect(t,O)},h}var Zoe=F(()=>{"use strict";tr();vt();Vl();nr();Jt();Kt();o(Koe,"iconCircle")});async function Qoe(e,t,{config:{themeVariables:r,flowchart:n}}){let{labelStyles:i}=ct(t);t.labelStyle=i;let a=t.assetHeight??48,s=t.assetWidth??48,l=Math.max(a,s),u=n?.wrappingWidth;t.width=Math.max(l,u??0);let{shapeSvg:h,bbox:d,halfPadding:f,label:p}=await It(e,t,"icon-shape default"),m=t.pos==="t",g=l+f*2,y=l+f*2,{nodeBorder:v,mainBkg:x}=r,{stylesMap:b}=iu(t),T=-y/2,k=-g/2,C=t.label?8:0,w=ut.svg(h),S=dt(t,{});t.look!=="handDrawn"&&(S.roughness=0,S.fillStyle="solid");let R=b.get("fill");S.stroke=R??x;let L=w.path(io(T,k,y,g,5),S),N=Math.max(y,d.width),I=g+d.height+C,_=w.rectangle(-N/2,-I/2,N,I,{...S,fill:"transparent",stroke:"none"}),A=h.insert(()=>L,":first-child").attr("class","icon-shape2"),M=h.insert(()=>_);if(t.icon){let D=h.append("g");D.html(`<g>${await ts(t.icon,{height:l,width:l,fallbackPrefix:""})}</g>`);let P=D.node().getBBox(),B=P.width,O=P.height,$=P.x,V=P.y;D.attr("transform",`translate(${-B/2-$},${m?d.height/2+C/2-O/2-V:-d.height/2-C/2-O/2-V})`),D.attr("style",`color: ${b.get("stroke")??v};`)}return p.attr("transform",`translate(${-d.width/2-(d.x-(d.left??0))},${m?-I/2:I/2-d.height})`),A.attr("transform",`translate(0,${m?d.height/2+C/2:-d.height/2-C/2})`),pt(t,M),t.intersect=function(D){if(Z.info("iconSquare intersect",t,D),!t.label)return ht.rect(t,D);let P=t.x??0,B=t.y??0,O=t.height??0,$=[];return m?$=[{x:P-d.width/2,y:B-O/2},{x:P+d.width/2,y:B-O/2},{x:P+d.width/2,y:B-O/2+d.height+C},{x:P+y/2,y:B-O/2+d.height+C},{x:P+y/2,y:B+O/2},{x:P-y/2,y:B+O/2},{x:P-y/2,y:B-O/2+d.height+C},{x:P-d.width/2,y:B-O/2+d.height+C}]:$=[{x:P-y/2,y:B-O/2},{x:P+y/2,y:B-O/2},{x:P+y/2,y:B-O/2+g},{x:P+d.width/2,y:B-O/2+g},{x:P+d.width/2/2,y:B+O/2},{x:P-d.width/2,y:B+O/2},{x:P-d.width/2,y:B-O/2+g},{x:P-y/2,y:B-O/2+g}],ht.polygon(t,$,D)},h}var Joe=F(()=>{"use strict";tr();vt();Vl();nr();Jt();km();Kt();o(Qoe,"iconRounded")});async function ele(e,t,{config:{themeVariables:r,flowchart:n}}){let{labelStyles:i}=ct(t);t.labelStyle=i;let a=t.assetHeight??48,s=t.assetWidth??48,l=Math.max(a,s),u=n?.wrappingWidth;t.width=Math.max(l,u??0);let{shapeSvg:h,bbox:d,halfPadding:f,label:p}=await It(e,t,"icon-shape default"),m=t.pos==="t",g=l+f*2,y=l+f*2,{nodeBorder:v,mainBkg:x}=r,{stylesMap:b}=iu(t),T=-y/2,k=-g/2,C=t.label?8:0,w=ut.svg(h),S=dt(t,{});t.look!=="handDrawn"&&(S.roughness=0,S.fillStyle="solid");let R=b.get("fill");S.stroke=R??x;let L=w.path(io(T,k,y,g,.1),S),N=Math.max(y,d.width),I=g+d.height+C,_=w.rectangle(-N/2,-I/2,N,I,{...S,fill:"transparent",stroke:"none"}),A=h.insert(()=>L,":first-child"),M=h.insert(()=>_);if(t.icon){let D=h.append("g");D.html(`<g>${await ts(t.icon,{height:l,width:l,fallbackPrefix:""})}</g>`);let P=D.node().getBBox(),B=P.width,O=P.height,$=P.x,V=P.y;D.attr("transform",`translate(${-B/2-$},${m?d.height/2+C/2-O/2-V:-d.height/2-C/2-O/2-V})`),D.attr("style",`color: ${b.get("stroke")??v};`)}return p.attr("transform",`translate(${-d.width/2-(d.x-(d.left??0))},${m?-I/2:I/2-d.height})`),A.attr("transform",`translate(0,${m?d.height/2+C/2:-d.height/2-C/2})`),pt(t,M),t.intersect=function(D){if(Z.info("iconSquare intersect",t,D),!t.label)return ht.rect(t,D);let P=t.x??0,B=t.y??0,O=t.height??0,$=[];return m?$=[{x:P-d.width/2,y:B-O/2},{x:P+d.width/2,y:B-O/2},{x:P+d.width/2,y:B-O/2+d.height+C},{x:P+y/2,y:B-O/2+d.height+C},{x:P+y/2,y:B+O/2},{x:P-y/2,y:B+O/2},{x:P-y/2,y:B-O/2+d.height+C},{x:P-d.width/2,y:B-O/2+d.height+C}]:$=[{x:P-y/2,y:B-O/2},{x:P+y/2,y:B-O/2},{x:P+y/2,y:B-O/2+g},{x:P+d.width/2,y:B-O/2+g},{x:P+d.width/2/2,y:B+O/2},{x:P-d.width/2,y:B+O/2},{x:P-d.width/2,y:B-O/2+g},{x:P-y/2,y:B-O/2+g}],ht.polygon(t,$,D)},h}var tle=F(()=>{"use strict";tr();vt();Vl();nr();km();Jt();Kt();o(ele,"iconSquare")});async function rle(e,t,{config:{flowchart:r}}){let n=new Image;n.src=t?.img??"",await n.decode();let i=Number(n.naturalWidth.toString().replace("px","")),a=Number(n.naturalHeight.toString().replace("px",""));t.imageAspectRatio=i/a;let{labelStyles:s}=ct(t);t.labelStyle=s;let l=r?.wrappingWidth;t.defaultWidth=r?.wrappingWidth;let u=Math.max(t.label?l??0:0,t?.assetWidth??i),h=t.constraint==="on"&&t?.assetHeight?t.assetHeight*t.imageAspectRatio:u,d=t.constraint==="on"?h/t.imageAspectRatio:t?.assetHeight??a;t.width=Math.max(h,l??0);let{shapeSvg:f,bbox:p,label:m}=await It(e,t,"image-shape default"),g=t.pos==="t",y=-h/2,v=-d/2,x=t.label?8:0,b=ut.svg(f),T=dt(t,{});t.look!=="handDrawn"&&(T.roughness=0,T.fillStyle="solid");let k=b.rectangle(y,v,h,d,T),C=Math.max(h,p.width),w=d+p.height+x,S=b.rectangle(-C/2,-w/2,C,w,{...T,fill:"none",stroke:"none"}),R=f.insert(()=>k,":first-child"),L=f.insert(()=>S);if(t.img){let N=f.append("image");N.attr("href",t.img),N.attr("width",h),N.attr("height",d),N.attr("preserveAspectRatio","none"),N.attr("transform",`translate(${-h/2},${g?w/2-d:-w/2})`)}return m.attr("transform",`translate(${-p.width/2-(p.x-(p.left??0))},${g?-d/2-p.height/2-x/2:d/2-p.height/2+x/2})`),R.attr("transform",`translate(0,${g?p.height/2+x/2:-p.height/2-x/2})`),pt(t,L),t.intersect=function(N){if(Z.info("iconSquare intersect",t,N),!t.label)return ht.rect(t,N);let I=t.x??0,_=t.y??0,A=t.height??0,M=[];return g?M=[{x:I-p.width/2,y:_-A/2},{x:I+p.width/2,y:_-A/2},{x:I+p.width/2,y:_-A/2+p.height+x},{x:I+h/2,y:_-A/2+p.height+x},{x:I+h/2,y:_+A/2},{x:I-h/2,y:_+A/2},{x:I-h/2,y:_-A/2+p.height+x},{x:I-p.width/2,y:_-A/2+p.height+x}]:M=[{x:I-h/2,y:_-A/2},{x:I+h/2,y:_-A/2},{x:I+h/2,y:_-A/2+d},{x:I+p.width/2,y:_-A/2+d},{x:I+p.width/2/2,y:_+A/2},{x:I-p.width/2,y:_+A/2},{x:I-p.width/2,y:_-A/2+d},{x:I-h/2,y:_-A/2+d}],ht.polygon(t,M,N)},f}var nle=F(()=>{"use strict";tr();vt();nr();Jt();Kt();o(rle,"imageSquare")});async function ile(e,t){let{labelStyles:r,nodeStyles:n}=ct(t);t.labelStyle=r;let i=t.padding??0,a=i,s=t.look==="neo"?i*2:i,{shapeSvg:l,bbox:u}=await It(e,t,Dt(t)),h=Math.max(u.width+(s??0)*2,t?.width??0),d=Math.max(u.height+(a??0)*2,t?.height??0),f=[{x:0,y:0},{x:h,y:0},{x:h+3*d/6,y:-d},{x:-3*d/6,y:-d}],p,{cssStyles:m}=t;if(t.look==="handDrawn"){let g=ut.svg(l),y=dt(t,{}),v=or(f),x=g.path(v,y);p=l.insert(()=>x,":first-child").attr("transform",`translate(${-h/2}, ${d/2})`),m&&p.attr("style",m)}else p=as(l,h,d,f);return n&&p.attr("style",n),t.width=h,t.height=d,pt(t,p),t.intersect=function(g){return ht.polygon(t,f,g)},l}var ale=F(()=>{"use strict";Kt();nr();Jt();tr();Ch();o(ile,"inv_trapezoid")});async function sle(e,t){let{shapeSvg:r,bbox:n,label:i}=await It(e,t,"label"),a=r.insert("rect",":first-child");return a.attr("width",.1).attr("height",.1),r.attr("class","label edgeLabel"),i.attr("transform",`translate(${-(n.width/2)-(n.x-(n.left??0))}, ${-(n.height/2)-(n.y-(n.top??0))})`),pt(t,a),t.intersect=function(u){return ht.rect(t,u)},r}var ole=F(()=>{"use strict";Sm();Kt();nr();o(sle,"labelRect")});async function lle(e,t){let{labelStyles:r,nodeStyles:n}=ct(t);t.labelStyle=r;let i=t.padding??0,a=i,s=t.look==="neo"?i*2:i,{shapeSvg:l,bbox:u}=await It(e,t,Dt(t)),h=(t?.height??u.height)+a,d=(t?.width??u.width)+s,f=[{x:0,y:0},{x:d+3*h/6,y:0},{x:d,y:-h},{x:-(3*h)/6,y:-h}],p,{cssStyles:m}=t;if(t.look==="handDrawn"){let g=ut.svg(l),y=dt(t,{}),v=or(f),x=g.path(v,y);p=l.insert(()=>x,":first-child").attr("transform",`translate(${-d/2}, ${h/2})`),m&&p.attr("style",m)}else p=as(l,d,h,f);return n&&p.attr("style",n),t.width=d,t.height=h,pt(t,p),t.intersect=function(g){return ht.polygon(t,f,g)},l}var cle=F(()=>{"use strict";Kt();nr();Jt();tr();Ch();o(lle,"lean_left")});async function ule(e,t){let{labelStyles:r,nodeStyles:n}=ct(t);t.labelStyle=r;let i=t.padding??0,a=i,s=t.look==="neo"?i*2:i,{shapeSvg:l,bbox:u}=await It(e,t,Dt(t)),h=(t?.height??u.height)+a,d=(t?.width??u.width)+s,f=[{x:-3*h/6,y:0},{x:d,y:0},{x:d+3*h/6,y:-h},{x:0,y:-h}],p,{cssStyles:m}=t;if(t.look==="handDrawn"){let g=ut.svg(l),y=dt(t,{}),v=or(f),x=g.path(v,y);p=l.insert(()=>x,":first-child").attr("transform",`translate(${-d/2}, ${h/2})`),m&&p.attr("style",m)}else p=as(l,d,h,f);return n&&p.attr("style",n),t.width=d,t.height=h,pt(t,p),t.intersect=function(g){return ht.polygon(t,f,g)},l}var hle=F(()=>{"use strict";Kt();nr();Jt();tr();Ch();o(ule,"lean_right")});function dle(e,t){let{labelStyles:r,nodeStyles:n}=ct(t);t.label="",t.labelStyle=r;let i=e.insert("g").attr("class",Dt(t)).attr("id",t.domId??t.id),{cssStyles:a}=t,s=Math.max(35,t?.width??0),l=Math.max(35,t?.height??0),u=7,h=[{x:s,y:0},{x:0,y:l+u/2},{x:s-2*u,y:l+u/2},{x:0,y:2*l},{x:s,y:l-u/2},{x:2*u,y:l-u/2}],d=ut.svg(i),f=dt(t,{});t.look!=="handDrawn"&&(f.roughness=0,f.fillStyle="solid");let p=or(h),m=d.path(p,f),g=i.insert(()=>m,":first-child");return g.attr("class","outer-path"),a&&t.look!=="handDrawn"&&g.selectAll("path").attr("style",a),n&&t.look!=="handDrawn"&&g.selectAll("path").attr("style",n),g.attr("transform",`translate(-${s/2},${-l})`),pt(t,g),t.intersect=function(y){return Z.info("lightningBolt intersect",t,y),ht.polygon(t,h,y)},i}var fle=F(()=>{"use strict";vt();Kt();Jt();tr();nr();Kt();o(dle,"lightningBolt")});async function gle(e,t){let{labelStyles:r,nodeStyles:n}=ct(t);t.labelStyle=r;let i=t.padding??0,a=t.look==="neo"?16:i,s=t.look==="neo"?24:i;if(t.width||t.height){let x=t.width??0;t.width=(t.width??0)-a,t.width<mle&&(t.width=mle);let T=x/2/(2.5+x/50);t.height=(t.height??0)-s-T*3,t.height<ple&&(t.height=ple)}let{shapeSvg:l,bbox:u,label:h}=await It(e,t,Dt(t)),d=(t?.width?t?.width:u.width)+a*2,f=d/2,p=f/(2.5+d/50),m=(t?.height?t?.height:u.height)+p+s*2,g=m*.1,y,{cssStyles:v}=t;if(t.look==="handDrawn"){let x=ut.svg(l),b=xQe(0,0,d,m,f,p,g),T=bQe(0,p,d,m,f,p),k=dt(t,{}),C=x.path(b,k),w=x.path(T,k);l.insert(()=>w,":first-child").attr("class","line"),y=l.insert(()=>C,":first-child"),y.attr("class","basic label-container"),v&&y.attr("style",v)}else{let x=vQe(0,0,d,m,f,p,g);y=l.insert("path",":first-child").attr("d",x).attr("class","basic label-container outer-path").attr("style",kn(v)).attr("style",n)}return y.attr("label-offset-y",p),y.attr("transform",`translate(${-d/2}, ${-(m/2+p)})`),pt(t,y),h.attr("transform",`translate(${-(u.width/2)-(u.x-(u.left??0))}, ${-(u.height/2)+p-(u.y-(u.top??0))})`),t.intersect=function(x){let b=ht.rect(t,x),T=b.x-(t.x??0);if(f!=0&&(Math.abs(T)<(t.width??0)/2||Math.abs(T)==(t.width??0)/2&&Math.abs(b.y-(t.y??0))>(t.height??0)/2-p)){let k=p*p*(1-T*T/(f*f));k>0&&(k=Math.sqrt(k)),k=p-k,x.y-(t.y??0)>0&&(k=-k),b.y+=k}return b},l}var vQe,xQe,bQe,ple,mle,yle=F(()=>{"use strict";Kt();nr();Jt();tr();Qt();vQe=o((e,t,r,n,i,a,s)=>[`M${e},${t+a}`,`a${i},${a} 0,0,0 ${r},0`,`a${i},${a} 0,0,0 ${-r},0`,`l0,${n}`,`a${i},${a} 0,0,0 ${r},0`,`l0,${-n}`,`M${e},${t+a+s}`,`a${i},${a} 0,0,0 ${r},0`].join(" "),"createCylinderPathD"),xQe=o((e,t,r,n,i,a,s)=>[`M${e},${t+a}`,`M${e+r},${t+a}`,`a${i},${a} 0,0,0 ${-r},0`,`l0,${n}`,`a${i},${a} 0,0,0 ${r},0`,`l0,${-n}`,`M${e},${t+a+s}`,`a${i},${a} 0,0,0 ${r},0`].join(" "),"createOuterCylinderPathD"),bQe=o((e,t,r,n,i,a)=>[`M${e-r/2},${-n/2}`,`a${i},${a} 0,0,0 ${r},0`].join(" "),"createInnerCylinderPathD"),ple=10,mle=10;o(gle,"linedCylinder")});async function vle(e,t){let{labelStyles:r,nodeStyles:n}=ct(t);t.labelStyle=r;let i=t.padding??0,a=t.look==="neo"?16:i,s=t.look==="neo"?12:i;if(t.width||t.height){let k=t.width;t.width=(k??0)*10/11-a*2,t.width<10&&(t.width=10),t.height=(t?.height??0)-s*2,t.height<10&&(t.height=10)}let{shapeSvg:l,bbox:u,label:h}=await It(e,t,Dt(t)),d=(t?.width?t?.width:u.width)+(a??0)*2,f=(t?.height?t?.height:u.height)+(s??0)*2,p=t.look==="neo"?f/4:f/8,m=f+p,{cssStyles:g}=t,y=ut.svg(l),v=dt(t,{});t.look!=="handDrawn"&&(v.roughness=0,v.fillStyle="solid");let x=[{x:-d/2-d/2*.1,y:-m/2},{x:-d/2-d/2*.1,y:m/2},...fl(-d/2-d/2*.1,m/2,d/2+d/2*.1,m/2,p,.8),{x:d/2+d/2*.1,y:-m/2},{x:-d/2-d/2*.1,y:-m/2},{x:-d/2,y:-m/2},{x:-d/2,y:m/2*1.1},{x:-d/2,y:-m/2}],b=y.polygon(x.map(k=>[k.x,k.y]),v),T=l.insert(()=>b,":first-child");return T.attr("class","basic label-container outer-path"),g&&t.look!=="handDrawn"&&T.selectAll("path").attr("style",g),n&&t.look!=="handDrawn"&&T.selectAll("path").attr("style",n),T.attr("transform",`translate(0,${-p/2})`),h.attr("transform",`translate(${-d/2+(t.padding??0)+d/2*.1/2-(u.x-(u.left??0))},${-f/2+(t.padding??0)-p/2-(u.y-(u.top??0))})`),pt(t,T),t.intersect=function(k){return ht.polygon(t,x,k)},l}var xle=F(()=>{"use strict";Kt();nr();tr();Jt();o(vle,"linedWaveEdgedRect")});async function ble(e,t){let{labelStyles:r,nodeStyles:n}=ct(t);t.labelStyle=r;let i=t.padding??0,a=t.look==="neo"?16:i,s=t.look==="neo"?12:i,l=t.look==="neo"?10:5;(t.width||t.height)&&(t.width=Math.max((t?.width??0)-a*2-2*l,10),t.height=Math.max((t?.height??0)-s*2-2*l,10));let{shapeSvg:u,bbox:h,label:d}=await It(e,t,Dt(t)),f=(t?.width?t?.width:h.width)+a*2+2*l,p=(t?.height?t?.height:h.height)+s*2+2*l,m=f-2*l,g=p-2*l,y=-m/2,v=-g/2,{cssStyles:x}=t,b=ut.svg(u),T=dt(t,{}),k=[{x:y-l,y:v+l},{x:y-l,y:v+g+l},{x:y+m-l,y:v+g+l},{x:y+m-l,y:v+g},{x:y+m,y:v+g},{x:y+m,y:v+g-l},{x:y+m+l,y:v+g-l},{x:y+m+l,y:v-l},{x:y+l,y:v-l},{x:y+l,y:v},{x:y,y:v},{x:y,y:v+l}],C=[{x:y,y:v+l},{x:y+m-l,y:v+l},{x:y+m-l,y:v+g},{x:y+m,y:v+g},{x:y+m,y:v},{x:y,y:v}];t.look!=="handDrawn"&&(T.roughness=0,T.fillStyle="solid");let w=or(k),S=b.path(w,T),R=or(C),L=b.path(R,T);t.look!=="handDrawn"&&(S=UP(S),L=UP(L));let N=u.insert("g",":first-child");return N.insert(()=>S),N.insert(()=>L),N.attr("class","basic label-container outer-path"),x&&t.look!=="handDrawn"&&N.selectAll("path").attr("style",x),n&&t.look!=="handDrawn"&&N.selectAll("path").attr("style",n),d.attr("transform",`translate(${-(h.width/2)-l-(h.x-(h.left??0))}, ${-(h.height/2)+l-(h.y-(h.top??0))})`),pt(t,N),t.intersect=function(I){return ht.polygon(t,k,I)},u}var Tle=F(()=>{"use strict";Kt();Jt();tr();nr();o(ble,"multiRect")});async function Cle(e,t){let{labelStyles:r,nodeStyles:n}=ct(t);t.labelStyle=r;let{shapeSvg:i,bbox:a,label:s}=await It(e,t,Dt(t)),l=t.padding??0,u=t.look==="neo"?16:l,h=t.look==="neo"?12:l,d=!0;(t.width||t.height)&&(d=!1,t.width=(t?.width??0)-u*2,t.height=(t?.height??0)-h*3);let f=Math.max(a.width,t?.width??0)+u*2,p=Math.max(a.height,t?.height??0)+h*3,m=t.look==="neo"?p/4:p/8,g=p+(d?m/2:-m/2),y=-f/2,v=-g/2,x=10,{cssStyles:b}=t,T=fl(y-x,v+g+x,y+f-x,v+g+x,m,.8),k=T?.[T.length-1],C=[{x:y-x,y:v+x},{x:y-x,y:v+g+x},...T,{x:y+f-x,y:k.y-x},{x:y+f,y:k.y-x},{x:y+f,y:k.y-2*x},{x:y+f+x,y:k.y-2*x},{x:y+f+x,y:v-x},{x:y+x,y:v-x},{x:y+x,y:v},{x:y,y:v},{x:y,y:v+x}],w=[{x:y,y:v+x},{x:y+f-x,y:v+x},{x:y+f-x,y:k.y-x},{x:y+f,y:k.y-x},{x:y+f,y:v},{x:y,y:v}],S=ut.svg(i),R=dt(t,{});t.look!=="handDrawn"&&(R.roughness=0,R.fillStyle="solid");let L=or(C),N=S.path(L,R),I=or(w),_=S.path(I,R),A=i.insert(()=>N,":first-child");return A.insert(()=>_),A.attr("class","basic label-container outer-path"),b&&t.look!=="handDrawn"&&A.selectAll("path").attr("style",b),n&&t.look!=="handDrawn"&&A.selectAll("path").attr("style",n),A.attr("transform",`translate(0,${-m/2})`),s.attr("transform",`translate(${-(a.width/2)-x-(a.x-(a.left??0))}, ${-(a.height/2)+x-m/2-(a.y-(a.top??0))})`),pt(t,A),t.intersect=function(M){return ht.polygon(t,C,M)},i}var wle=F(()=>{"use strict";Kt();nr();tr();Jt();o(Cle,"multiWaveEdgedRectangle")});async function kle(e,t,{config:{themeVariables:r}}){let{labelStyles:n,nodeStyles:i}=ct(t);t.labelStyle=n,t.useHtmlLabels||Gr(_t())||(t.centerLabel=!0);let{shapeSvg:s,bbox:l,label:u}=await It(e,t,Dt(t)),h=Math.max(l.width+(t.padding??0)*2,t?.width??0),d=Math.max(l.height+(t.padding??0)*2,t?.height??0),f=-h/2,p=-d/2,{cssStyles:m}=t,g=ut.svg(s),y=dt(t,{fill:r.noteBkgColor,stroke:r.noteBorderColor});t.look!=="handDrawn"&&(y.roughness=0,y.fillStyle="solid");let v=g.rectangle(f,p,h,d,y),x=s.insert(()=>v,":first-child");return x.attr("class","basic label-container outer-path"),u.attr("class","label noteLabel"),m&&t.look!=="handDrawn"&&x.selectAll("path").attr("style",m),i&&t.look!=="handDrawn"&&x.selectAll("path").attr("style",i),u.attr("transform",`translate(${-l.width/2-(l.x-(l.left??0))}, ${-(l.height/2)-(l.y-(l.top??0))})`),pt(t,x),t.intersect=function(b){return ht.rect(t,b)},s}var Sle=F(()=>{"use strict";tr();nr();Jt();Kt();ur();ur();o(kle,"note")});async function Ele(e,t){let{labelStyles:r,nodeStyles:n}=ct(t);t.labelStyle=r;let{shapeSvg:i,bbox:a}=await It(e,t,Dt(t)),s=a.width+(t.padding??0),l=a.height+(t.padding??0),u=s+l,h=.5,d=[{x:u/2,y:0},{x:u,y:-u/2},{x:u/2,y:-u},{x:0,y:-u/2}],f,{cssStyles:p}=t;if(t.look==="handDrawn"){let m=ut.svg(i),g=dt(t,{}),y=TQe(0,0,u),v=m.path(y,g);f=i.insert(()=>v,":first-child").attr("transform",`translate(${-u/2+h}, ${u/2})`),p&&f.attr("style",p)}else f=as(i,u,u,d),f.attr("transform",`translate(${-u/2+h}, ${u/2})`);return n&&f.attr("style",n),pt(t,f),t.calcIntersect=function(m,g){let y=m.width,v=[{x:y/2,y:0},{x:y,y:-y/2},{x:y/2,y:-y},{x:0,y:-y/2}],x=ht.polygon(m,v,g);return{x:x.x-.5,y:x.y-.5}},t.intersect=function(m){return this.calcIntersect(t,m)},i}var TQe,Ale=F(()=>{"use strict";Kt();nr();Jt();tr();Ch();TQe=o((e,t,r)=>[`M${e+r/2},${t}`,`L${e+r},${t-r/2}`,`L${e+r/2},${t-r}`,`L${e},${t-r/2}`,"Z"].join(" "),"createDecisionBoxPathD");o(Ele,"question")});async function Rle(e,t){let{labelStyles:r,nodeStyles:n}=ct(t);t.labelStyle=r;let i=t.padding??0,a=t.look==="neo"?21:i??0,s=t.look==="neo"?12:i??0,{shapeSvg:l,bbox:u,label:h}=await It(e,t,Dt(t)),d=(t?.width??u.width)+(t.look==="neo"?a*2:a),f=(t?.height??u.height)+(t.look==="neo"?s*2:s),p=-d/2,m=-f/2,g=m/2,y=[{x:p+g,y:m},{x:p,y:0},{x:p+g,y:-m},{x:-p,y:-m},{x:-p,y:m}],{cssStyles:v}=t,x=ut.svg(l),b=dt(t,{});t.look!=="handDrawn"&&(b.roughness=0,b.fillStyle="solid");let T=or(y),k=x.path(T,b),C=l.insert(()=>k,":first-child");return C.attr("class","basic label-container outer-path"),v&&t.look!=="handDrawn"&&C.selectAll("path").attr("style",v),n&&t.look!=="handDrawn"&&C.selectAll("path").attr("style",n),C.attr("transform",`translate(${-g/2},0)`),h.attr("transform",`translate(${-g/2-u.width/2-(u.x-(u.left??0))}, ${-(u.height/2)-(u.y-(u.top??0))})`),pt(t,C),t.intersect=function(w){return ht.polygon(t,y,w)},l}var _le=F(()=>{"use strict";Kt();nr();Jt();tr();o(Rle,"rect_left_inv_arrow")});var CQe,sc,G4=F(()=>{"use strict";ur();Xt();Ls();CQe=o(async(e,t,r,n=!1,i=!1)=>{let a=t||"";typeof a=="object"&&(a=a[0]);let s=Ae(),l=Gr(s);return await Pn(e,a,{style:r,isTitle:n,useHtmlLabels:l,markdown:!1,isNode:i,width:Number.POSITIVE_INFINITY},s)},"createLabel"),sc=CQe});async function Lle(e,t){let{labelStyles:r,nodeStyles:n}=ct(t);t.labelStyle=r;let i;t.cssClasses?i="node "+t.cssClasses:i="node default";let a=e.insert("g").attr("class",i).attr("id",t.domId||t.id),s=a.insert("g"),l=a.insert("g").attr("class","label").attr("style",n),u=t.description,h=t.label,d=await sc(l,h,t.labelStyle,!0,!0),f={width:0,height:0};if(Gr(Ae())){let R=d.children[0],L=et(d);f=R.getBoundingClientRect(),L.attr("width",f.width),L.attr("height",f.height)}Z.info("Text 2",u);let p=u||[],m=d.getBBox(),g=await sc(l,Array.isArray(p)?p.join("<br/>"):p,t.labelStyle,!0,!0),y=g.children[0],v=et(g);f=y.getBoundingClientRect(),v.attr("width",f.width),v.attr("height",f.height);let x=(t.padding||0)/2;et(g).attr("transform","translate( "+(f.width>m.width?0:(m.width-f.width)/2)+", "+(m.height+x+5)+")"),et(d).attr("transform","translate( "+(f.width<m.width?0:-(m.width-f.width)/2)+", 0)"),f=l.node().getBBox(),l.attr("transform","translate("+-f.width/2+", "+(-f.height/2-x+3)+")");let b=f.width+(t.padding||0),T=f.height+(t.padding||0),k=-f.width/2-x,C=-f.height/2-x,w,S;if(t.look==="handDrawn"){let R=ut.svg(a),L=dt(t,{}),N=R.path(io(k,C,b,T,t.rx||0),L),I=R.line(-f.width/2-x,-f.height/2-x+m.height+x,f.width/2+x,-f.height/2-x+m.height+x,L);S=a.insert(()=>(Z.debug("Rough node insert CXC",N),I),":first-child"),w=a.insert(()=>(Z.debug("Rough node insert CXC",N),N),":first-child")}else w=s.insert("rect",":first-child"),S=s.insert("line"),w.attr("class","outer title-state").attr("style",n).attr("x",-f.width/2-x).attr("y",-f.height/2-x).attr("width",f.width+(t.padding||0)).attr("height",f.height+(t.padding||0)),S.attr("class","divider").attr("x1",-f.width/2-x).attr("x2",f.width/2+x).attr("y1",-f.height/2-x+m.height+x).attr("y2",-f.height/2-x+m.height+x);return pt(t,w),t.intersect=function(R){return ht.rect(t,R)},a}var Dle=F(()=>{"use strict";$r();Kt();G4();nr();Jt();tr();Xt();km();vt();ur();o(Lle,"rectWithTitle")});async function Ile(e,t,{config:{themeVariables:r}}){let n=r?.radius??5,i={rx:n,ry:n,classes:"",labelPaddingX:(t?.padding??0)*1,labelPaddingY:(t?.padding??0)*1};return ac(e,t,i)}var Mle=F(()=>{"use strict";Sm();o(Ile,"roundedRect")});async function Nle(e,t){let{labelStyles:r,nodeStyles:n}=ct(t);t.labelStyle=r;let i=t.look==="neo"?16:t.padding??0,a=t.look==="neo"?12:t.padding??0,{shapeSvg:s,bbox:l,label:u}=await It(e,t,Dt(t)),h=(t?.width??l.width)+i*2+(t.look==="neo"?Em:Em*2),d=(t?.height??l.height)+a*2,f=h-Em,p=d,m=Em-h/2,g=-d/2,{cssStyles:y}=t,v=ut.svg(s),x=dt(t,{});t.look!=="handDrawn"&&(x.roughness=0,x.fillStyle="solid");let b=[{x:m,y:g},{x:m+f,y:g},{x:m+f,y:g+p},{x:m-Em,y:g+p},{x:m-Em,y:g},{x:m,y:g},{x:m,y:g+p}],T=v.polygon(b.map(C=>[C.x,C.y]),x),k=s.insert(()=>T,":first-child");return k.attr("class","basic label-container outer-path").attr("style",kn(y)),n&&t.look!=="handDrawn"&&k.selectAll("path").attr("style",n),y&&t.look!=="handDrawn"&&k.selectAll("path").attr("style",n),u.attr("transform",`translate(${Em/2-l.width/2-(l.x-(l.left??0))}, ${-(l.height/2)-(l.y-(l.top??0))})`),pt(t,k),t.intersect=function(C){return ht.rect(t,C)},s}var Em,Ple=F(()=>{"use strict";Kt();nr();Jt();tr();Qt();Em=8;o(Nle,"shadedProcess")});async function Ole(e,t){let{labelStyles:r,nodeStyles:n}=ct(t);t.labelStyle=r;let i=t.padding??0,a=t.look==="neo"?16:i,s=t.look==="neo"?12:i;(t.width||t.height)&&(t.width=Math.max((t?.width??0)-a*2,10),t.height=Math.max((t?.height??0)/1.5-s*2,10));let{shapeSvg:l,bbox:u,label:h}=await It(e,t,Dt(t)),d=(t?.width?t?.width:u.width)+a*2,f=((t?.height?t?.height:u.height)+s*2)*1.5,p=d,m=f/1.5,g=-p/2,y=-m/2,{cssStyles:v}=t,x=ut.svg(l),b=dt(t,{});t.look!=="handDrawn"&&(b.roughness=0,b.fillStyle="solid");let T=[{x:g,y},{x:g,y:y+m},{x:g+p,y:y+m},{x:g+p,y:y-m/2}],k=or(T),C=x.path(k,b),w=l.insert(()=>C,":first-child");return w.attr("class","basic label-container  outer-path"),v&&t.look!=="handDrawn"&&w.selectChildren("path").attr("style",v),n&&t.look!=="handDrawn"&&w.selectChildren("path").attr("style",n),w.attr("transform",`translate(0, ${m/4})`),h.attr("transform",`translate(${-p/2+(t.padding??0)-(u.x-(u.left??0))}, ${-m/4+(t.padding??0)-(u.y-(u.top??0))})`),pt(t,w),t.intersect=function(S){return ht.polygon(t,T,S)},l}var Ble=F(()=>{"use strict";Kt();nr();Jt();tr();o(Ole,"slopedRect")});async function $le(e,t){let r=t.padding??0,n=t.look==="neo"?16:r*2,i=t.look==="neo"?12:r,a={rx:0,ry:0,classes:"",labelPaddingX:t.labelPaddingX??n,labelPaddingY:i};return ac(e,t,a)}var Fle=F(()=>{"use strict";Sm();o($le,"squareRect")});async function zle(e,t){let{labelStyles:r,nodeStyles:n}=ct(t);t.labelStyle=r;let i=t.padding??0,a=t.look==="neo"?20:i,s=t.look==="neo"?12:i,{shapeSvg:l,bbox:u}=await It(e,t,Dt(t)),h=u.height+(t.look==="neo"?s*2:s),d=u.width+h/4+(t.look==="neo"?a*2:a),f=h/2,{cssStyles:p}=t,m=ut.svg(l),g=dt(t,{});t.look!=="handDrawn"&&(g.roughness=0,g.fillStyle="solid");let y=[{x:-d/2+f,y:-h/2},{x:d/2-f,y:-h/2},...Cm(-d/2+f,0,f,50,90,270),{x:d/2-f,y:h/2},...Cm(d/2-f,0,f,50,270,450)],v=or(y),x=m.path(v,g),b=l.insert(()=>x,":first-child");return b.attr("class","basic label-container outer-path"),p&&t.look!=="handDrawn"&&b.selectChildren("path").attr("style",p),n&&t.look!=="handDrawn"&&b.selectChildren("path").attr("style",n),pt(t,b),t.intersect=function(T){return ht.polygon(t,y,T)},l}var Gle=F(()=>{"use strict";Kt();nr();Jt();tr();o(zle,"stadium")});async function Vle(e,t){let r={rx:t.look==="neo"?3:5,ry:t.look==="neo"?3:5,classes:"flowchart-node"};return ac(e,t,r)}var Wle=F(()=>{"use strict";Sm();o(Vle,"state")});function qle(e,t,{config:{themeVariables:r}}){let{labelStyles:n,nodeStyles:i}=ct(t);t.labelStyle=n;let{cssStyles:a}=t,{lineColor:s,stateBorder:l,nodeBorder:u,nodeShadow:h}=r;(t.width||t.height)&&((t.width??0)<14&&(t.width=14),(t.height??0)<14&&(t.height=14)),t.width||(t.width=14),t.height||(t.height=14);let d=e.insert("g").attr("class","node default").attr("id",t.domId??t.id),f=ut.svg(d),p=dt(t,{});t.look!=="handDrawn"&&(p.roughness=0,p.fillStyle="solid");let m=f.circle(0,0,t.width,{...p,stroke:s,strokeWidth:2}),g=l??u,y=(t.width??0)*5/14,v=f.circle(0,0,y,{...p,fill:g,stroke:g,strokeWidth:2,fillStyle:"solid"}),x=d.insert(()=>m,":first-child");if(x.insert(()=>v),t.look!=="handDrawn"&&x.attr("class","outer-path"),a&&x.selectAll("path").attr("style",a),i&&x.selectAll("path").attr("style",i),t.width<25&&h&&t.look!=="handDrawn"){let b=e.node()?.ownerSVGElement?.id??"",T=b?`${b}-drop-shadow-small`:"drop-shadow-small";x.attr("style",`filter:url(#${T})`)}return pt(t,x),t.intersect=function(b){return ht.circle(t,(t.width??0)/2,b)},d}var Hle=F(()=>{"use strict";tr();nr();Jt();Kt();o(qle,"stateEnd")});function Ule(e,t,{config:{themeVariables:r}}){let{lineColor:n,nodeShadow:i}=r;(t.width||t.height)&&((t.width??0)<14&&(t.width=14),(t.height??0)<14&&(t.height=14)),t.width||(t.width=14),t.height||(t.height=14);let a=e.insert("g").attr("class","node default").attr("id",t.domId||t.id),s;if(t.look==="handDrawn"){let u=ut.svg(a).circle(0,0,t.width,qse(n));s=a.insert(()=>u),s.attr("class","state-start").attr("r",(t.width??7)/2).attr("width",t.width??14).attr("height",t.height??14)}else s=a.insert("circle",":first-child"),s.attr("class","state-start").attr("r",(t.width??7)/2).attr("width",t.width??14).attr("height",t.height??14);if(t.width<25&&i&&t.look!=="handDrawn"){let l=e.node()?.ownerSVGElement?.id??"",u=l?`${l}-drop-shadow-small`:"drop-shadow-small";s.attr("style",`filter:url(#${u})`)}return pt(t,s),t.intersect=function(l){return ht.circle(t,(t.width??7)/2,l)},a}var Yle=F(()=>{"use strict";tr();nr();Jt();Kt();o(Ule,"stateStart")});async function jle(e,t){let{labelStyles:r,nodeStyles:n}=ct(t);t.labelStyle=r;let i=t?.padding??8,a=t.look==="neo"?28:i,s=t.look==="neo"?12:i,{shapeSvg:l,bbox:u}=await It(e,t,Dt(t)),h=(t?.width??u.width)+2*Gy+a,d=(t?.height??u.height)+s,f=h-2*Gy,p=d,m=-h/2,g=-d/2,y=[{x:0,y:0},{x:f,y:0},{x:f,y:-p},{x:0,y:-p},{x:0,y:0},{x:-8,y:0},{x:f+8,y:0},{x:f+8,y:-p},{x:-8,y:-p},{x:-8,y:0}];if(t.look==="handDrawn"){let v=ut.svg(l),x=dt(t,{}),b=v.rectangle(m,g,f+16,p,x),T=v.line(m+Gy,g,m+Gy,g+p,x),k=v.line(m+Gy+f,g,m+Gy+f,g+p,x);l.insert(()=>T,":first-child"),l.insert(()=>k,":first-child");let C=l.insert(()=>b,":first-child"),{cssStyles:w}=t;C.attr("class","basic label-container").attr("style",kn(w)),pt(t,C)}else{let v=as(l,f,p,y);n&&v.attr("style",n),pt(t,v)}return t.intersect=function(v){return ht.polygon(t,y,v)},l}var Gy,Xle=F(()=>{"use strict";Kt();nr();Jt();tr();Ch();Qt();Gy=8;o(jle,"subroutine")});async function Kle(e,t){let{labelStyles:r,nodeStyles:n}=ct(t);t.labelStyle=r;let i=t.padding??0,a=t.look==="neo"?16:i,s=t.look==="neo"?12:i;(t.width||t.height)&&(t.height=Math.max((t?.height??0)-s*2,10),t.width=Math.max((t?.width??0)-a*2-dO*(t.height+s*2),10));let{shapeSvg:l,bbox:u}=await It(e,t,Dt(t)),h=(t?.height?t?.height:u.height)+s*2,d=dO*h,f=dO*h,m=(t?.width?t?.width:u.width)+a*2+d-d,g=h,y=-m/2,v=-g/2,{cssStyles:x}=t,b=ut.svg(l),T=dt(t,{}),k=[{x:y-d/2,y:v},{x:y+m+d/2,y:v},{x:y+m+d/2,y:v+g},{x:y-d/2,y:v+g}],C=[{x:y+m-d/2,y:v+g},{x:y+m+d/2,y:v+g},{x:y+m+d/2,y:v+g-f}];t.look!=="handDrawn"&&(T.roughness=0,T.fillStyle="solid");let w=or(k),S=b.path(w,T),R=or(C),L=b.path(R,{...T,fillStyle:"solid"}),N=l.insert(()=>L,":first-child");return N.insert(()=>S,":first-child"),N.attr("class","basic label-container outer-path"),x&&t.look!=="handDrawn"&&N.selectAll("path").attr("style",x),n&&t.look!=="handDrawn"&&N.selectAll("path").attr("style",n),pt(t,N),t.intersect=function(I){return ht.polygon(t,k,I)},l}var dO,Zle=F(()=>{"use strict";Kt();Jt();tr();nr();dO=.2;o(Kle,"taggedRect")});async function Qle(e,t){let{labelStyles:r,nodeStyles:n}=ct(t);t.labelStyle=r;let{shapeSvg:i,bbox:a,label:s}=await It(e,t,Dt(t)),l=Math.max(a.width+(t.padding??0)*2,t?.width??0),u=Math.max(a.height+(t.padding??0)*2,t?.height??0),h=u/8,d=.2*l,f=.2*u,p=u+h,{cssStyles:m}=t,g=ut.svg(i),y=dt(t,{});t.look!=="handDrawn"&&(y.roughness=0,y.fillStyle="solid");let v=[{x:-l/2-l/2*.1,y:p/2},...fl(-l/2-l/2*.1,p/2,l/2+l/2*.1,p/2,h,.8),{x:l/2+l/2*.1,y:-p/2},{x:-l/2-l/2*.1,y:-p/2}],x=-l/2+l/2*.1,b=-p/2-f*.4,T=[{x:x+l-d,y:(b+u)*1.3},{x:x+l,y:b+u-f},{x:x+l,y:(b+u)*.9},...fl(x+l,(b+u)*1.25,x+l-d,(b+u)*1.3,-u*.02,.5)],k=or(v),C=g.path(k,y),w=or(T),S=g.path(w,{...y,fillStyle:"solid"}),R=i.insert(()=>S,":first-child");return R.insert(()=>C,":first-child"),R.attr("class","basic label-container outer-path"),m&&t.look!=="handDrawn"&&R.selectAll("path").attr("style",m),n&&t.look!=="handDrawn"&&R.selectAll("path").attr("style",n),R.attr("transform",`translate(0,${-h/2})`),s.attr("transform",`translate(${-l/2+(t.padding??0)-(a.x-(a.left??0))},${-u/2+(t.padding??0)-h/2-(a.y-(a.top??0))})`),pt(t,R),t.intersect=function(L){return ht.polygon(t,v,L)},i}var Jle=F(()=>{"use strict";Kt();nr();tr();Jt();o(Qle,"taggedWaveEdgedRectangle")});async function ece(e,t){let{labelStyles:r,nodeStyles:n}=ct(t);t.labelStyle=r;let{shapeSvg:i,bbox:a}=await It(e,t,Dt(t)),s=Math.max(a.width+(t.padding??0),t?.width||0),l=Math.max(a.height+(t.padding??0),t?.height||0),u=-s/2,h=-l/2,d=i.insert("rect",":first-child");return d.attr("class","text").attr("style",n).attr("rx",0).attr("ry",0).attr("x",u).attr("y",h).attr("width",s).attr("height",l),pt(t,d),t.intersect=function(f){return ht.rect(t,f)},i}var tce=F(()=>{"use strict";Kt();nr();Jt();o(ece,"text")});async function ice(e,t){let{labelStyles:r,nodeStyles:n}=ct(t);t.labelStyle=r;let i=t.padding??0,a=t.look==="neo"?12:i/2;if(t.width||t.height){let y=t.height??0;t.height=(t.height??0)-a,t.height<rce&&(t.height=rce);let x=y/2/(2.5+y/50);t.width=(t.width??0)-a-x*3,t.width<nce&&(t.width=nce)}let{shapeSvg:s,bbox:l,label:u}=await It(e,t,Dt(t)),h=(t.height?t.height:l.height)+a,d=h/2,f=d/(2.5+h/50),p=(t.width?t.width:l.width)+f+a,{cssStyles:m}=t,g;if(t.look==="handDrawn"){let y=ut.svg(s),v=kQe(0,0,p,h,f,d),x=SQe(0,0,p,h,f,d),b=y.path(v,dt(t,{})),T=y.path(x,dt(t,{fill:"none"}));g=s.insert(()=>T,":first-child"),g=s.insert(()=>b,":first-child"),g.attr("class","basic label-container"),m&&g.attr("style",m)}else{let y=wQe(0,0,p,h,f,d);g=s.insert("path",":first-child").attr("d",y).attr("class","basic label-container").attr("style",kn(m)).attr("style",n),g.attr("class","basic label-container outer-path"),m&&g.selectAll("path").attr("style",m),n&&g.selectAll("path").attr("style",n)}return g.attr("label-offset-x",f),g.attr("transform",`translate(${-p/2}, ${h/2} )`),u.attr("transform",`translate(${-(l.width/2)-f-(l.x-(l.left??0))}, ${-(l.height/2)-(l.y-(l.top??0))})`),pt(t,g),t.intersect=function(y){let v=ht.rect(t,y),x=v.y-(t.y??0);if(d!=0&&(Math.abs(x)<(t.height??0)/2||Math.abs(x)==(t.height??0)/2&&Math.abs(v.x-(t.x??0))>(t.width??0)/2-f)){let b=f*f*(1-x*x/(d*d));b!=0&&(b=Math.sqrt(Math.abs(b))),b=f-b,y.x-(t.x??0)>0&&(b=-b),v.x+=b}return v},s}var wQe,kQe,SQe,rce,nce,ace=F(()=>{"use strict";Kt();Jt();tr();nr();Qt();wQe=o((e,t,r,n,i,a)=>`M${e},${t}
+    a${i},${a} 0,0,1 0,${-n}
     l${r},0
-    a${n},${a} 0,0,1 0,${i}
-    M${r},${-i}
-    a${n},${a} 0,0,0 0,${i}
-    l${-r},0`,"createCylinderPathD"),Iqe=o((e,t,r,i,n,a)=>[`M${e},${t}`,`M${e+r},${t}`,`a${n},${a} 0,0,0 0,${-i}`,`l${-r},0`,`a${n},${a} 0,0,0 0,${i}`,`l${r},0`].join(" "),"createOuterCylinderPathD"),Oqe=o((e,t,r,i,n,a)=>[`M${e+r/2},${-i/2}`,`a${n},${a} 0,0,0 0,${i}`].join(" "),"createInnerCylinderPathD"),Xne=5,Kne=10;o(Zne,"tiltedCylinder")});async function Jne(e,t){let{labelStyles:r,nodeStyles:i}=ct(t);t.labelStyle=r;let n=t.padding??0,a=(t.look==="neo",n),s=t.look==="neo"?n*2:n,{shapeSvg:l,bbox:u}=await At(e,t,Ct(t)),h=(t?.height??u.height)+a,d=(t?.width??u.width)+s,f=[{x:-3*h/6,y:0},{x:d+3*h/6,y:0},{x:d,y:-h},{x:0,y:-h}],p,{cssStyles:m}=t;if(t.look==="handDrawn"){let g=ut.svg(l),y=mt(t,{}),v=tr(f),x=g.path(v,y);p=l.insert(()=>x,":first-child").attr("transform",`translate(${-d/2}, ${h/2})`),m&&p.attr("style",m)}else p=Ma(l,d,h,f);return i&&p.attr("style",i),t.width=d,t.height=h,ft(t,p),t.intersect=function(g){return lt.polygon(t,f,g)},l}var eae=z(()=>{"use strict";Wt();Kt();Ht();jt();Fu();o(Jne,"trapezoid")});async function tae(e,t){let{labelStyles:r,nodeStyles:i}=ct(t);t.labelStyle=r;let n=t.padding??0,a=t.look==="neo"?16:n,s=t.look==="neo"?12:n,l=15,u=5;(t.width||t.height)&&(t.height=(t.height??0)-s*2,t.height<u&&(t.height=u),t.width=(t.width??0)-a*2,t.width<l&&(t.width=l));let{shapeSvg:h,bbox:d}=await At(e,t,Ct(t)),f=(t?.width?t?.width:d.width)+a*2,p=(t?.height?t?.height:d.height)+s*2,{cssStyles:m}=t,g=ut.svg(h),y=mt(t,{});t.look!=="handDrawn"&&(y.roughness=0,y.fillStyle="solid");let v=[{x:-f/2*.8,y:-p/2},{x:f/2*.8,y:-p/2},{x:f/2,y:-p/2*.6},{x:f/2,y:p/2},{x:-f/2,y:p/2},{x:-f/2,y:-p/2*.6}],x=tr(v),b=g.path(x,y),T=h.insert(()=>b,":first-child");return T.attr("class","basic label-container outer-path"),m&&t.look!=="handDrawn"&&T.selectChildren("path").attr("style",m),i&&t.look!=="handDrawn"&&T.selectChildren("path").attr("style",i),ft(t,T),t.intersect=function(w){return lt.polygon(t,v,w)},h}var rae=z(()=>{"use strict";Wt();Kt();Ht();jt();o(tae,"trapezoidalPentagon")});async function aae(e,t){let{labelStyles:r,nodeStyles:i}=ct(t);t.labelStyle=r;let n=t.padding??0,a=t.look==="neo"?n*2:n;(t.width||t.height)&&(t.width=((t?.width??0)-a)/2,t.width<nae&&(t.width=nae),t.height=t?.height??0,t.height<iae&&(t.height=iae));let{shapeSvg:s,bbox:l,label:u}=await At(e,t,Ct(t)),h=Aa(ge().flowchart?.htmlLabels),d=(t?.width?t?.width:l.width)+a,f=t?.height?t?.height:d+l.height,p=f,m=[{x:0,y:0},{x:p,y:0},{x:p/2,y:-f}],{cssStyles:g}=t,y=ut.svg(s),v=mt(t,{});t.look!=="handDrawn"&&(v.roughness=0,v.fillStyle="solid");let x=tr(m),b=y.path(x,v),T=s.insert(()=>b,":first-child").attr("transform",`translate(${-f/2}, ${f/2})`).attr("class","outer-path");return g&&t.look!=="handDrawn"&&T.selectChildren("path").attr("style",g),i&&t.look!=="handDrawn"&&T.selectChildren("path").attr("style",i),t.width=d,t.height=f,ft(t,T),u.attr("transform",`translate(${-l.width/2-(l.x-(l.left??0))}, ${f/2-(l.height+(t.padding??0)/(h?2:1)-(l.y-(l.top??0)))})`),t.intersect=function(w){return Z.info("Triangle intersect",t,m,w),lt.polygon(t,m,w)},s}var iae,nae,sae=z(()=>{"use strict";St();Wt();Kt();Ht();jt();Wt();Ir();Ut();iae=10,nae=10;o(aae,"triangle")});async function oae(e,t){let{labelStyles:r,nodeStyles:i}=ct(t);t.labelStyle=r;let n=t.padding??0,a=t.look==="neo"?16:n,s=t.look==="neo"?12:n,l=!0;(t.width||t.height)&&(l=!1,t.width=(t?.width??0)-a*2,t.width<10&&(t.width=10),t.height=(t?.height??0)-s*2,t.height<10&&(t.height=10));let{shapeSvg:u,bbox:h,label:d}=await At(e,t,Ct(t)),f=(t?.width?t?.width:h.width)+(a??0)*2,p=(t?.height?t?.height:h.height)+(s??0)*2,m=t.look==="neo"?p/4:p/8,g=p+(l?m:-m),{cssStyles:y}=t,x=14-f,b=x>0?x/2:0,T=ut.svg(u),w=mt(t,{});t.look!=="handDrawn"&&(w.roughness=0,w.fillStyle="solid");let C=[{x:-f/2-b,y:g/2},...Bo(-f/2-b,g/2,f/2+b,g/2,m,.8),{x:f/2+b,y:-g/2},{x:-f/2-b,y:-g/2}],k=tr(C),E=T.path(k,w),A=u.insert(()=>E,":first-child");return A.attr("class","basic label-container outer-path"),y&&t.look!=="handDrawn"&&A.selectAll("path").attr("style",y),i&&t.look!=="handDrawn"&&A.selectAll("path").attr("style",i),A.attr("transform",`translate(0,${-m/2})`),d.attr("transform",`translate(${-f/2+(t.padding??0)-(h.x-(h.left??0))},${-p/2+(t.padding??0)-m-(h.y-(h.top??0))})`),ft(t,A),t.intersect=function(N){return lt.polygon(t,C,N)},u}var lae=z(()=>{"use strict";Wt();Kt();jt();Ht();o(oae,"waveEdgedRectangle")});async function cae(e,t){let{labelStyles:r,nodeStyles:i}=ct(t);t.labelStyle=r;let n=t.padding??0,a=t.look==="neo"?16:n,s=t.look==="neo"?20:n;if(t.width||t.height){t.width=t?.width??0,t.width<20&&(t.width=20),t.height=t?.height??0,t.height<10&&(t.height=10);let w=Math.min(t.height*.2,t.height/4);t.height=Math.ceil(t.height-s-w*(20/9)),t.width=t.width-a*2}let{shapeSvg:l,bbox:u}=await At(e,t,Ct(t)),h=(t?.width?t?.width:u.width)+a*2,d=(t?.height?t?.height:u.height)+s,f=d/8,p=d+f*2,{cssStyles:m}=t,g=ut.svg(l),y=mt(t,{});t.look!=="handDrawn"&&(y.roughness=0,y.fillStyle="solid");let v=[{x:-h/2,y:p/2},...Bo(-h/2,p/2,h/2,p/2,f,1),{x:h/2,y:-p/2},...Bo(h/2,-p/2,-h/2,-p/2,f,-1)],x=tr(v),b=g.path(x,y),T=l.insert(()=>b,":first-child");return T.attr("class","basic label-container"),m&&t.look!=="handDrawn"&&T.selectAll("path").attr("style",m),i&&t.look!=="handDrawn"&&T.selectAll("path").attr("style",i),ft(t,T),t.intersect=function(w){return lt.polygon(t,v,w)},l}var uae=z(()=>{"use strict";Wt();Kt();Ht();jt();o(cae,"waveRectangle")});async function hae(e,t){let{labelStyles:r,nodeStyles:i}=ct(t);t.labelStyle=r;let n=t.look==="neo"?16:t.padding??0,a=t.look==="neo"?12:t.padding??0;(t.width||t.height)&&(t.width=Math.max((t?.width??0)-n*2-on,10),t.height=Math.max((t?.height??0)-a*2-on,10));let{shapeSvg:s,bbox:l,label:u}=await At(e,t,Ct(t)),h=(t?.width?t?.width:l.width)+n*2+on,d=(t?.height?t?.height:l.height)+a*2+on,f=h-on,p=d-on,m=-f/2,g=-p/2,{cssStyles:y}=t,v=ut.svg(s),x=mt(t,{}),b=[{x:m-on,y:g-on},{x:m-on,y:g+p},{x:m+f,y:g+p},{x:m+f,y:g-on}],T=`M${m-on},${g-on} L${m+f},${g-on} L${m+f},${g+p} L${m-on},${g+p} L${m-on},${g-on}
-                M${m-on},${g} L${m+f},${g}
-                M${m},${g-on} L${m},${g+p}`;t.look!=="handDrawn"&&(x.roughness=0,x.fillStyle="solid");let w=v.path(T,x),C=s.insert(()=>w,":first-child");return C.attr("transform",`translate(${on/2}, ${on/2})`),C.attr("class","basic label-container outer-path"),y&&t.look!=="handDrawn"&&C.selectAll("path").attr("style",y),i&&t.look!=="handDrawn"&&C.selectAll("path").attr("style",i),u.attr("transform",`translate(${-(l.width/2)+on/2-(l.x-(l.left??0))}, ${-(l.height/2)+on/2-(l.y-(l.top??0))})`),ft(t,C),t.intersect=function(k){return lt.polygon(t,b,k)},s}var on,dae=z(()=>{"use strict";Wt();Ht();jt();Kt();on=10;o(hae,"windowPane")});async function MN(e,t){let r=t;r.alias&&(t.label=r.alias);let{theme:i,themeVariables:n}=Nt(),{rowEven:a,rowOdd:s,nodeBorder:l,borderColorArray:u}=n;if(t.look==="handDrawn"){let{themeVariables:Q}=Nt(),{background:Y}=Q,ae={...t,id:t.id+"-background",domId:(t.domId||t.id)+"-background",look:"default",cssStyles:["stroke: none",`fill: ${Y}`]};await MN(e,ae)}let h=Nt();t.useHtmlLabels=h.htmlLabels;let d=h.er?.diagramPadding??10,f=h.er?.entityPadding??6,{cssStyles:p}=t,{labelStyles:m,nodeStyles:g}=ct(t);if(r.attributes.length===0&&t.label){let Q={rx:0,ry:0,labelPaddingX:d,labelPaddingY:d*1.5,classes:""};ta(t.label,h)+Q.labelPaddingX*2<h.er.minEntityWidth&&(t.width=h.er.minEntityWidth);let Y=await Ml(e,t,Q);if(i!=null&&fae.has(i)){let ae=r.colorIndex??0;Y.attr("data-color-id",`color-${ae%u.length}`)}if(!Aa(h.htmlLabels)){let ae=Y.select("text"),J=ae.node()?.getBBox();ae.attr("transform",`translate(${-J.width/2}, 0)`)}return Y}h.htmlLabels||(d*=1.25,f*=1.25);let y=Ct(t);y||(y="node default");let v=e.insert("g").attr("class",y).attr("id",t.domId||t.id),x=await eb(v,t.label??"",h,0,0,["name"],m);x.height+=f;let b=0,T=[],w=[],C=0,k=0,E=0,A=0,N=!0,P=!0;for(let Q of r.attributes){let Y=await eb(v,Q.type,h,0,b,["attribute-type"],m);C=Math.max(C,Y.width+d);let ae=await eb(v,Q.name,h,0,b,["attribute-name"],m);k=Math.max(k,ae.width+d);let J=await eb(v,Q.keys.join(),h,0,b,["attribute-keys"],m);E=Math.max(E,J.width+d);let te=await eb(v,Q.comment,h,0,b,["attribute-comment"],m);A=Math.max(A,te.width+d);let re=Math.max(Y.height,ae.height,J.height,te.height)+f;w.push({yOffset:b,rowHeight:re}),b+=re}let I=4;E<=d&&(N=!1,E=0,I--),A<=d&&(P=!1,A=0,I--);let D=v.node().getBBox();if(x.width+d*2-(C+k+E+A)>0){let Q=x.width+d*2-(C+k+E+A);C+=Q/I,k+=Q/I,E>0&&(E+=Q/I),A>0&&(A+=Q/I)}let _=C+k+E+A,R=ut.svg(v),M=mt(t,{});t.look!=="handDrawn"&&(M.roughness=0,M.fillStyle="solid");let L=0;w.length>0&&(L=w.reduce((Q,Y)=>Q+(Y?.rowHeight??0),0));let B=Math.max(D.width+d*2,t?.width||0,_),O=Math.max((L??0)+x.height,t?.height||0),$=-B/2,G=-O/2;if(v.selectAll("g:not(:first-child)").each((Q,Y,ae)=>{let J=Je(ae[Y]),te=J.attr("transform"),re=0,ee=0;if(te){let ue=RegExp(/translate\(([^,]+),([^)]+)\)/).exec(te);ue&&(re=parseFloat(ue[1]),ee=parseFloat(ue[2]),J.attr("class").includes("attribute-name")?re+=C:J.attr("class").includes("attribute-keys")?re+=C+k:J.attr("class").includes("attribute-comment")&&(re+=C+k+E))}J.attr("transform",`translate(${$+d/2+re}, ${ee+G+x.height+f/2})`)}),v.select(".name").attr("transform","translate("+-x.width/2+", "+(G+f/2)+")"),i!=null&&fae.has(i)){let Q=r.colorIndex??0;v.attr("data-color-id",`color-${Q%u.length}`)}let F=R.rectangle($,G,B,O,M),V=v.insert(()=>F,":first-child").attr("class","outer-path").attr("style",p.join(""));T.push(0);for(let[Q,Y]of w.entries()){let J=(Q+1)%2===0&&Y.yOffset!==0,te=R.rectangle($,x.height+G+Y?.yOffset,B,Y?.rowHeight,{...M,fill:J?a:s,stroke:l});v.insert(()=>te,"g.label").attr("style",p.join("")).attr("class",`row-rect-${J?"even":"odd"}`)}let H=1e-4,j=tb($,x.height+G,B+$,x.height+G,H),U=R.polygon(j.map(Q=>[Q.x,Q.y]),M);if(v.insert(()=>U).attr("class","divider"),j=tb(C+$,x.height+G,C+$,O+G,H),U=R.polygon(j.map(Q=>[Q.x,Q.y]),M),v.insert(()=>U).attr("class","divider"),N){let Q=C+k+$;j=tb(Q,x.height+G,Q,O+G,H),U=R.polygon(j.map(Y=>[Y.x,Y.y]),M),v.insert(()=>U).attr("class","divider")}if(P){let Q=C+k+E+$;j=tb(Q,x.height+G,Q,O+G,H),U=R.polygon(j.map(Y=>[Y.x,Y.y]),M),v.insert(()=>U).attr("class","divider")}for(let Q of T){let Y=x.height+G+Q;j=tb($,Y,B+$,Y,H),U=R.polygon(j.map(ae=>[ae.x,ae.y]),M),v.insert(()=>U).attr("class","divider")}if(ft(t,V),g&&t.look!=="handDrawn")if(i!=null&&Pqe.has(i))v.selectAll("path").attr("style",g);else{let Y=g.split(";")?.filter(ae=>ae.includes("stroke"))?.map(ae=>`${ae}`).join("; ");v.selectAll("path").attr("style",Y??""),v.selectAll(".row-rect-even path").attr("style",g)}return t.intersect=function(Q){return lt.rect(t,Q)},v}async function eb(e,t,r,i=0,n=0,a=[],s=""){let l=e.insert("g").attr("class",`label ${a.join(" ")}`).attr("transform",`translate(${i}, ${n})`).attr("style",s);t!==cc(t)&&(t=cc(t),t=t.replaceAll("<","&lt;").replaceAll(">","&gt;"));let u=l.node().appendChild(await wi(l,t,{width:ta(t,r)+100,style:s,useHtmlLabels:r.htmlLabels},r));if(t.includes("&lt;")||t.includes("&gt;")){let d=u.children[0];for(d.textContent=d.textContent.replaceAll("&lt;","<").replaceAll("&gt;",">");d.childNodes[0];)d=d.childNodes[0],d.textContent=d.textContent.replaceAll("&lt;","<").replaceAll("&gt;",">")}let h=u.getBBox();if(Aa(r.htmlLabels)){let d=u.children[0];d.style.textAlign="start";let f=Je(u);h=d.getBoundingClientRect(),f.attr("width",h.width),f.attr("height",h.height)}return h}function tb(e,t,r,i,n){return e===r?[{x:e-n/2,y:t},{x:e+n/2,y:t},{x:r+n/2,y:i},{x:r-n/2,y:i}]:[{x:e,y:t-n/2},{x:e,y:t+n/2},{x:r,y:i+n/2},{x:r,y:i-n/2}]}var fae,Pqe,pae=z(()=>{"use strict";Wt();Kt();Ht();jt();Dp();br();_s();Ir();Rr();Xt();fae=new Set(["redux-color","redux-dark-color"]),Pqe=new Set(["redux","redux-dark","redux-color","redux-dark-color"]);o(MN,"erBox");o(eb,"addText");o(tb,"lineToPolygon")});async function mae(e,t,r,i,n=r.class.padding??12){let a=i?0:3,s=e.insert("g").attr("class",Ct(t)).attr("id",t.domId||t.id),l=null,u=null,h=null,d=null,f=0,p=0,m=0;if(l=s.insert("g").attr("class","annotation-group text"),t.annotations.length>0){let b=t.annotations[0];await G4(l,{text:`\xAB${b}\xBB`},0),f=l.node().getBBox().height}u=s.insert("g").attr("class","label-group text"),await G4(u,t,0,["font-weight: bolder"]);let g=u.node().getBBox();p=g.height,h=s.insert("g").attr("class","members-group text");let y=0;for(let b of t.members){let T=await G4(h,b,y,[b.parseClassifier()]);y+=T+a}m=h.node().getBBox().height,m<=0&&(m=n/2),d=s.insert("g").attr("class","methods-group text");let v=0;for(let b of t.methods){let T=await G4(d,b,v,[b.parseClassifier()]);v+=T+a}let x=s.node().getBBox();if(l!==null){let b=l.node().getBBox();l.attr("transform",`translate(${-b.width/2})`)}return u.attr("transform",`translate(${-g.width/2}, ${f})`),x=s.node().getBBox(),h.attr("transform",`translate(0, ${f+p+n*2})`),x=s.node().getBBox(),d.attr("transform",`translate(0, ${f+p+(m?m+n*4:n*2)})`),x=s.node().getBBox(),{shapeSvg:s,bbox:x}}async function G4(e,t,r,i=[]){let n=e.insert("g").attr("class","label").attr("style",i.join("; ")),a=Nt(),s="useHtmlLabels"in t?t.useHtmlLabels:Aa(a.htmlLabels)??!0,l="";"text"in t?l=t.text:l=t.label,!s&&l.startsWith("\\")&&(l=l.substring(1)),Bi(l)&&(s=!0);let u=await wi(n,Ev(Qa(l)),{width:ta(l,a)+50,classes:"markdown-node-label",useHtmlLabels:s},a),h,d=1;if(s){let f=u.children[0],p=Je(u);d=f.innerHTML.split("<br>").length,f.innerHTML.includes("</math>")&&(d+=f.innerHTML.split("<mrow>").length-1);let m=f.getElementsByTagName("img");if(m){let g=l.replace(/<img[^>]*>/g,"").trim()==="";await Promise.all([...m].map(y=>new Promise(v=>{function x(){if(y.style.display="flex",y.style.flexDirection="column",g){let b=a.fontSize?.toString()??window.getComputedStyle(document.body).fontSize,w=parseInt(b,10)*5+"px";y.style.minWidth=w,y.style.maxWidth=w}else y.style.width="100%";v(y)}o(x,"setupImage"),setTimeout(()=>{y.complete&&x()}),y.addEventListener("error",x),y.addEventListener("load",x)})))}h=f.getBoundingClientRect(),p.attr("width",h.width),p.attr("height",h.height)}else{i.includes("font-weight: bolder")&&Je(u).selectAll("tspan").attr("font-weight",""),d=u.children.length;let f=u.children[0];(u.textContent===""||u.textContent.includes("&gt"))&&(f.textContent=l[0]+l.substring(1).replaceAll("&gt;",">").replaceAll("&lt;","<").trim(),l[1]===" "&&(f.textContent=f.textContent[0]+" "+f.textContent.substring(1))),f.textContent==="undefined"&&(f.textContent=""),h=u.getBBox()}return n.attr("transform","translate(0,"+(-h.height/(2*d)+r)+")"),h.height}var gae=z(()=>{"use strict";Rr();br();Wt();Xt();Ut();_s();Ir();o(mae,"textHelper");o(G4,"addText")});async function yae(e,t){let r=ge(),{themeVariables:i}=r,{useGradient:n}=i,a=r.class.padding??12,s=a,l=t.useHtmlLabels??Aa(r.htmlLabels)??!0,u=t;u.annotations=u.annotations??[],u.members=u.members??[],u.methods=u.methods??[];let{shapeSvg:h,bbox:d}=await mae(e,t,r,l,s),{labelStyles:f,nodeStyles:p}=ct(t);t.labelStyle=f,t.cssStyles=u.styles||"";let m=u.styles?.join(";")||p||"";t.cssStyles||(t.cssStyles=m.replaceAll("!important","").split(";"));let g=u.members.length===0&&u.methods.length===0&&!r.class?.hideEmptyMembersBox,y=ut.svg(h),v=mt(t,{});t.look!=="handDrawn"&&(v.roughness=0,v.fillStyle="solid");let x=Math.max(t.width??0,d.width),b=Math.max(t.height??0,d.height),T=(t.height??0)>d.height;u.members.length===0&&u.methods.length===0?b+=s:u.members.length>0&&u.methods.length===0&&(b+=s*2);let w=-x/2,C=-b/2,k=g?a*2:u.members.length===0&&u.methods.length===0?-a:0;T&&(k=a*2);let E=y.rectangle(w-a,C-a-(g?a:u.members.length===0&&u.methods.length===0?-a/2:0),x+2*a,b+2*a+k,v),A=h.insert(()=>E,":first-child");A.attr("class","basic label-container outer-path");let N=A.node().getBBox(),P=h.select(".annotation-group").node().getBBox().height-(g?a/2:0)||0,I=h.select(".label-group").node().getBBox().height-(g?a/2:0)||0,D=h.select(".members-group").node().getBBox().height-(g?a/2:0)||0,_=(P+I+C+a-(C-a-(g?a:u.members.length===0&&u.methods.length===0?-a/2:0)))/2;if(h.selectAll(".text").each((R,M,L)=>{let B=Je(L[M]),O=B.attr("transform"),$=0;if(O){let H=RegExp(/translate\(([^,]+),([^)]+)\)/).exec(O);H&&($=parseFloat(H[2]))}let G=$+C+a-(g?a:u.members.length===0&&u.methods.length===0?-a/2:0);if(B.attr("class").includes("methods-group")){let V=Math.max(D,s/2);T?G=Math.max(_,P+I+V+C+s*2+a)+s*2:G=P+I+V+C+s*4+a}u.members.length===0&&u.methods.length===0&&r.class?.hideEmptyMembersBox&&(u.annotations.length>0?G=$-s:G=$),l||(G-=4);let F=w;(B.attr("class").includes("label-group")||B.attr("class").includes("annotation-group"))&&(F=-B.node()?.getBBox().width/2||0,h.selectAll("text").each(function(V,H,j){window.getComputedStyle(j[H]).textAnchor==="middle"&&(F=0)})),B.attr("transform",`translate(${F}, ${G})`)}),u.members.length>0||u.methods.length>0||g){let R=P+I+C+a,M=y.line(N.x,R,N.x+N.width,R+.001,v);h.insert(()=>M).attr("class",`divider${t.look==="neo"&&!n?" neo-line":""}`).attr("style",m)}if(g||u.members.length>0||u.methods.length>0){let R=P+I+D+C+s*2+a,M=y.line(N.x,T?Math.max(_,R):R,N.x+N.width,(T?Math.max(_,R):R)+.001,v);h.insert(()=>M).attr("class",`divider${t.look==="neo"&&!n?" neo-line":""}`).attr("style",m)}if(u.look!=="handDrawn"&&h.selectAll("path").attr("style",m),A.select(":nth-child(2)").attr("style",m),h.selectAll(".divider").select("path").attr("style",m),t.labelStyle?h.selectAll("span").attr("style",t.labelStyle):h.selectAll("span").attr("style",m),!l){let R=RegExp(/color\s*:\s*([^;]*)/),M=R.exec(m);if(M){let L=M[0].replace("color","fill");h.selectAll("tspan").attr("style",L)}else if(f){let L=R.exec(f);if(L){let B=L[0].replace("color","fill");h.selectAll("tspan").attr("style",B)}}}return ft(t,A),t.intersect=function(R){return lt.rect(t,R)},h}var vae=z(()=>{"use strict";Wt();Ut();Rr();jt();Ht();Kt();gae();Ir();o(yae,"classBox")});async function xae(e,t){let{labelStyles:r,nodeStyles:i}=ct(t);t.labelStyle=r;let n=t,a=t,s=20,l=20,u="verifyMethod"in t,h=Ct(t),{themeVariables:d}=ge(),{borderColorArray:f,requirementEdgeLabelBackground:p}=d,m=e.insert("g").attr("class",h).attr("id",t.domId??t.id),g;u?g=await $u(m,`&lt;&lt;${n.type}&gt;&gt;`,0,t.labelStyle):g=await $u(m,"&lt;&lt;Element&gt;&gt;",0,t.labelStyle);let y=g,v=await $u(m,n.name,y,t.labelStyle+"; font-weight: bold;");if(y+=v+l,u){let N=await $u(m,`${n.requirementId?`ID: ${n.requirementId}`:""}`,y,t.labelStyle);y+=N;let P=await $u(m,`${n.text?`Text: ${n.text}`:""}`,y,t.labelStyle);y+=P;let I=await $u(m,`${n.risk?`Risk: ${n.risk}`:""}`,y,t.labelStyle);y+=I,await $u(m,`${n.verifyMethod?`Verification: ${n.verifyMethod}`:""}`,y,t.labelStyle)}else{let N=await $u(m,`${a.type?`Type: ${a.type}`:""}`,y,t.labelStyle);y+=N,await $u(m,`${a.docRef?`Doc Ref: ${a.docRef}`:""}`,y,t.labelStyle)}let x=(m.node()?.getBBox().width??200)+s,b=(m.node()?.getBBox().height??200)+s,T=-x/2,w=-b/2,C=ut.svg(m),k=mt(t,{});t.look!=="handDrawn"&&(k.roughness=0,k.fillStyle="solid");let E=C.rectangle(T,w,x,b,k),A=m.insert(()=>E,":first-child");if(A.attr("class","basic label-container outer-path").attr("style",i),f?.length){let N=t.colorIndex??0;m.attr("data-color-id",`color-${N%f.length}`)}if(m.selectAll(".label").each((N,P,I)=>{let D=Je(I[P]),_=D.attr("transform"),R=0,M=0;if(_){let $=RegExp(/translate\(([^,]+),([^)]+)\)/).exec(_);$&&(R=parseFloat($[1]),M=parseFloat($[2]))}let L=M-b/2,B=T+s/2;(P===0||P===1)&&(B=R),D.attr("transform",`translate(${B}, ${L+s})`)}),y>g+v+l){let N=w+g+v+l,P;if(t.look==="neo"){let _=[[T,N],[T+x,N],[T+x,N+.001],[T,N+.001]];P=C.polygon(_,k)}else P=C.line(T,N,T+x,N,k);m.insert(()=>P).attr("class","divider")}return ft(t,A),t.intersect=function(N){return lt.rect(t,N)},i&&t.look!=="handDrawn"&&(p||f?.length)&&m.selectAll("path").attr("style",i),m}async function $u(e,t,r,i=""){if(t==="")return 0;let n=e.insert("g").attr("class","label").attr("style",i),a=ge(),s=a.htmlLabels??!0,l=await wi(n,Ev(Qa(t)),{width:ta(t,a)+50,classes:"markdown-node-label",useHtmlLabels:s,style:i},a),u;if(s){let h=l.children[0],d=Je(l);u=h.getBoundingClientRect(),d.attr("width",u.width),d.attr("height",u.height)}else{let h=l.children[0];for(let d of h.children)i&&d.setAttribute("style",i);u=l.getBBox(),u.height+=6}return n.attr("transform",`translate(${-u.width/2},${-u.height/2+r})`),u.height}var bae=z(()=>{"use strict";Wt();Kt();Ht();jt();Xt();Ut();_s();Rr();o(xae,"requirementBox");o($u,"addText")});async function Tae(e,t,{config:r}){let{labelStyles:i,nodeStyles:n}=ct(t);t.labelStyle=i||"";let a=10,s=t.width;t.width=(t.width??200)-10;let{shapeSvg:l,bbox:u,label:h}=await At(e,t,Ct(t)),d=t.padding||10,f="",p;"ticket"in t&&t.ticket&&r?.kanban?.ticketBaseUrl&&(f=r?.kanban?.ticketBaseUrl.replace("#TICKET#",t.ticket),p=l.insert("svg:a",":first-child").attr("class","kanban-ticket-link").attr("xlink:href",f).attr("target","_blank"));let m={useHtmlLabels:t.useHtmlLabels,labelStyle:t.labelStyle||"",width:t.width,img:t.img,padding:t.padding||8,centerLabel:!1},g,y;p?{label:g,bbox:y}=await A4(p,"ticket"in t&&t.ticket||"",m):{label:g,bbox:y}=await A4(l,"ticket"in t&&t.ticket||"",m);let{label:v,bbox:x}=await A4(l,"assigned"in t&&t.assigned||"",m);t.width=s;let b=10,T=t?.width||0,w=Math.max(y.height,x.height)/2,C=Math.max(u.height+b*2,t?.height||0)+w,k=-T/2,E=-C/2;h.attr("transform","translate("+(d-T/2)+", "+(-w-u.height/2)+")"),g.attr("transform","translate("+(d-T/2)+", "+(-w+u.height/2)+")"),v.attr("transform","translate("+(d+T/2-x.width-2*a)+", "+(-w+u.height/2)+")");let A,{rx:N,ry:P}=t,{cssStyles:I}=t;if(t.look==="handDrawn"){let D=ut.svg(l),_=mt(t,{}),R=N||P?D.path(Rs(k,E,T,C,N||0),_):D.rectangle(k,E,T,C,_);A=l.insert(()=>R,":first-child"),A.attr("class","basic label-container").attr("style",I||null)}else{A=l.insert("rect",":first-child"),A.attr("class","basic label-container __APA__").attr("style",n).attr("rx",N??5).attr("ry",P??5).attr("x",k).attr("y",E).attr("width",T).attr("height",C);let D="priority"in t&&t.priority;if(D){let _=l.append("line"),R=k+2,M=E+Math.floor((N??0)/2),L=E+C-Math.floor((N??0)/2);_.attr("x1",R).attr("y1",M).attr("x2",R).attr("y2",L).attr("stroke-width","4").attr("stroke",Bqe(D))}}return ft(t,A),t.height=C,t.intersect=function(D){return lt.rect(t,D)},l}var Bqe,Cae=z(()=>{"use strict";Wt();Kt();_p();Ht();jt();Bqe=o(e=>{switch(e){case"Very High":return"red";case"High":return"orange";case"Medium":return null;case"Low":return"blue";case"Very Low":return"lightblue"}},"colorFromPriority");o(Tae,"kanbanItem")});async function kae(e,t){let{labelStyles:r,nodeStyles:i}=ct(t);t.labelStyle=r;let{shapeSvg:n,bbox:a,halfPadding:s,label:l}=await At(e,t,Ct(t)),u=a.width+10*s,h=a.height+8*s,d=.15*u,{cssStyles:f}=t,p=a.width+20,m=a.height+20,g=Math.max(u,p),y=Math.max(h,m);l.attr("transform",`translate(${-a.width/2}, ${-a.height/2})`);let v,x=`M0 0 
+    a${i},${a} 0,0,1 0,${n}
+    M${r},${-n}
+    a${i},${a} 0,0,0 0,${n}
+    l${-r},0`,"createCylinderPathD"),kQe=o((e,t,r,n,i,a)=>[`M${e},${t}`,`M${e+r},${t}`,`a${i},${a} 0,0,0 0,${-n}`,`l${-r},0`,`a${i},${a} 0,0,0 0,${n}`,`l${r},0`].join(" "),"createOuterCylinderPathD"),SQe=o((e,t,r,n,i,a)=>[`M${e+r/2},${-n/2}`,`a${i},${a} 0,0,0 0,${n}`].join(" "),"createInnerCylinderPathD"),rce=5,nce=10;o(ice,"tiltedCylinder")});async function sce(e,t){let{labelStyles:r,nodeStyles:n}=ct(t);t.labelStyle=r;let i=t.padding??0,a=(t.look==="neo",i),s=t.look==="neo"?i*2:i,{shapeSvg:l,bbox:u}=await It(e,t,Dt(t)),h=(t?.height??u.height)+a,d=(t?.width??u.width)+s,f=[{x:-3*h/6,y:0},{x:d+3*h/6,y:0},{x:d,y:-h},{x:0,y:-h}],p,{cssStyles:m}=t;if(t.look==="handDrawn"){let g=ut.svg(l),y=dt(t,{}),v=or(f),x=g.path(v,y);p=l.insert(()=>x,":first-child").attr("transform",`translate(${-d/2}, ${h/2})`),m&&p.attr("style",m)}else p=as(l,d,h,f);return n&&p.attr("style",n),t.width=d,t.height=h,pt(t,p),t.intersect=function(g){return ht.polygon(t,f,g)},l}var oce=F(()=>{"use strict";Kt();nr();Jt();tr();Ch();o(sce,"trapezoid")});async function lce(e,t){let{labelStyles:r,nodeStyles:n}=ct(t);t.labelStyle=r;let i=t.padding??0,a=t.look==="neo"?16:i,s=t.look==="neo"?12:i,l=15,u=5;(t.width||t.height)&&(t.height=(t.height??0)-s*2,t.height<u&&(t.height=u),t.width=(t.width??0)-a*2,t.width<l&&(t.width=l));let{shapeSvg:h,bbox:d}=await It(e,t,Dt(t)),f=(t?.width?t?.width:d.width)+a*2,p=(t?.height?t?.height:d.height)+s*2,{cssStyles:m}=t,g=ut.svg(h),y=dt(t,{});t.look!=="handDrawn"&&(y.roughness=0,y.fillStyle="solid");let v=[{x:-f/2*.8,y:-p/2},{x:f/2*.8,y:-p/2},{x:f/2,y:-p/2*.6},{x:f/2,y:p/2},{x:-f/2,y:p/2},{x:-f/2,y:-p/2*.6}],x=or(v),b=g.path(x,y),T=h.insert(()=>b,":first-child");return T.attr("class","basic label-container outer-path"),m&&t.look!=="handDrawn"&&T.selectChildren("path").attr("style",m),n&&t.look!=="handDrawn"&&T.selectChildren("path").attr("style",n),pt(t,T),t.intersect=function(k){return ht.polygon(t,v,k)},h}var cce=F(()=>{"use strict";Kt();nr();Jt();tr();o(lce,"trapezoidalPentagon")});async function dce(e,t){let{labelStyles:r,nodeStyles:n}=ct(t);t.labelStyle=r;let i=t.padding??0,a=t.look==="neo"?i*2:i;(t.width||t.height)&&(t.width=((t?.width??0)-a)/2,t.width<hce&&(t.width=hce),t.height=t?.height??0,t.height<uce&&(t.height=uce));let{shapeSvg:s,bbox:l,label:u}=await It(e,t,Dt(t)),h=ya(Ae().flowchart?.htmlLabels),d=(t?.width?t?.width:l.width)+a,f=t?.height?t?.height:d+l.height,p=f,m=[{x:0,y:0},{x:p,y:0},{x:p/2,y:-f}],{cssStyles:g}=t,y=ut.svg(s),v=dt(t,{});t.look!=="handDrawn"&&(v.roughness=0,v.fillStyle="solid");let x=or(m),b=y.path(x,v),T=s.insert(()=>b,":first-child").attr("transform",`translate(${-f/2}, ${f/2})`).attr("class","outer-path");return g&&t.look!=="handDrawn"&&T.selectChildren("path").attr("style",g),n&&t.look!=="handDrawn"&&T.selectChildren("path").attr("style",n),t.width=d,t.height=f,pt(t,T),u.attr("transform",`translate(${-l.width/2-(l.x-(l.left??0))}, ${f/2-(l.height+(t.padding??0)/(h?2:1)-(l.y-(l.top??0)))})`),t.intersect=function(k){return Z.info("Triangle intersect",t,m,k),ht.polygon(t,m,k)},s}var uce,hce,fce=F(()=>{"use strict";vt();Kt();nr();Jt();tr();Kt();Vr();Xt();uce=10,hce=10;o(dce,"triangle")});async function pce(e,t){let{labelStyles:r,nodeStyles:n}=ct(t);t.labelStyle=r;let i=t.padding??0,a=t.look==="neo"?16:i,s=t.look==="neo"?12:i,l=!0;(t.width||t.height)&&(l=!1,t.width=(t?.width??0)-a*2,t.width<10&&(t.width=10),t.height=(t?.height??0)-s*2,t.height<10&&(t.height=10));let{shapeSvg:u,bbox:h,label:d}=await It(e,t,Dt(t)),f=(t?.width?t?.width:h.width)+(a??0)*2,p=(t?.height?t?.height:h.height)+(s??0)*2,m=t.look==="neo"?p/4:p/8,g=p+(l?m:-m),{cssStyles:y}=t,x=14-f,b=x>0?x/2:0,T=ut.svg(u),k=dt(t,{});t.look!=="handDrawn"&&(k.roughness=0,k.fillStyle="solid");let C=[{x:-f/2-b,y:g/2},...fl(-f/2-b,g/2,f/2+b,g/2,m,.8),{x:f/2+b,y:-g/2},{x:-f/2-b,y:-g/2}],w=or(C),S=T.path(w,k),R=u.insert(()=>S,":first-child");return R.attr("class","basic label-container outer-path"),y&&t.look!=="handDrawn"&&R.selectAll("path").attr("style",y),n&&t.look!=="handDrawn"&&R.selectAll("path").attr("style",n),R.attr("transform",`translate(0,${-m/2})`),d.attr("transform",`translate(${-f/2+(t.padding??0)-(h.x-(h.left??0))},${-p/2+(t.padding??0)-m-(h.y-(h.top??0))})`),pt(t,R),t.intersect=function(L){return ht.polygon(t,C,L)},u}var mce=F(()=>{"use strict";Kt();nr();tr();Jt();o(pce,"waveEdgedRectangle")});async function gce(e,t){let{labelStyles:r,nodeStyles:n}=ct(t);t.labelStyle=r;let i=t.padding??0,a=t.look==="neo"?16:i,s=t.look==="neo"?20:i;if(t.width||t.height){t.width=t?.width??0,t.width<20&&(t.width=20),t.height=t?.height??0,t.height<10&&(t.height=10);let k=Math.min(t.height*.2,t.height/4);t.height=Math.ceil(t.height-s-k*(20/9)),t.width=t.width-a*2}let{shapeSvg:l,bbox:u}=await It(e,t,Dt(t)),h=(t?.width?t?.width:u.width)+a*2,d=(t?.height?t?.height:u.height)+s,f=d/8,p=d+f*2,{cssStyles:m}=t,g=ut.svg(l),y=dt(t,{});t.look!=="handDrawn"&&(y.roughness=0,y.fillStyle="solid");let v=[{x:-h/2,y:p/2},...fl(-h/2,p/2,h/2,p/2,f,1),{x:h/2,y:-p/2},...fl(h/2,-p/2,-h/2,-p/2,f,-1)],x=or(v),b=g.path(x,y),T=l.insert(()=>b,":first-child");return T.attr("class","basic label-container"),m&&t.look!=="handDrawn"&&T.selectAll("path").attr("style",m),n&&t.look!=="handDrawn"&&T.selectAll("path").attr("style",n),pt(t,T),t.intersect=function(k){return ht.polygon(t,v,k)},l}var yce=F(()=>{"use strict";Kt();nr();Jt();tr();o(gce,"waveRectangle")});async function vce(e,t){let{labelStyles:r,nodeStyles:n}=ct(t);t.labelStyle=r;let i=t.look==="neo"?16:t.padding??0,a=t.look==="neo"?12:t.padding??0;(t.width||t.height)&&(t.width=Math.max((t?.width??0)-i*2-Ri,10),t.height=Math.max((t?.height??0)-a*2-Ri,10));let{shapeSvg:s,bbox:l,label:u}=await It(e,t,Dt(t)),h=(t?.width?t?.width:l.width)+i*2+Ri,d=(t?.height?t?.height:l.height)+a*2+Ri,f=h-Ri,p=d-Ri,m=-f/2,g=-p/2,{cssStyles:y}=t,v=ut.svg(s),x=dt(t,{}),b=[{x:m-Ri,y:g-Ri},{x:m-Ri,y:g+p},{x:m+f,y:g+p},{x:m+f,y:g-Ri}],T=`M${m-Ri},${g-Ri} L${m+f},${g-Ri} L${m+f},${g+p} L${m-Ri},${g+p} L${m-Ri},${g-Ri}
+                M${m-Ri},${g} L${m+f},${g}
+                M${m},${g-Ri} L${m},${g+p}`;t.look!=="handDrawn"&&(x.roughness=0,x.fillStyle="solid");let k=v.path(T,x),C=s.insert(()=>k,":first-child");return C.attr("transform",`translate(${Ri/2}, ${Ri/2})`),C.attr("class","basic label-container outer-path"),y&&t.look!=="handDrawn"&&C.selectAll("path").attr("style",y),n&&t.look!=="handDrawn"&&C.selectAll("path").attr("style",n),u.attr("transform",`translate(${-(l.width/2)+Ri/2-(l.x-(l.left??0))}, ${-(l.height/2)+Ri/2-(l.y-(l.top??0))})`),pt(t,C),t.intersect=function(w){return ht.polygon(t,b,w)},s}var Ri,xce=F(()=>{"use strict";Kt();Jt();tr();nr();Ri=10;o(vce,"windowPane")});async function fO(e,t){let r=t;r.alias&&(t.label=r.alias);let{theme:n,themeVariables:i}=_t(),{rowEven:a,rowOdd:s,nodeBorder:l,borderColorArray:u}=i;if(t.look==="handDrawn"){let{themeVariables:Q}=_t(),{background:U}=Q,oe={...t,id:t.id+"-background",domId:(t.domId||t.id)+"-background",look:"default",cssStyles:["stroke: none",`fill: ${U}`]};await fO(e,oe)}let h=_t();t.useHtmlLabels=h.htmlLabels;let d=h.er?.diagramPadding??10,f=h.er?.entityPadding??6,{cssStyles:p}=t,{labelStyles:m,nodeStyles:g}=ct(t);if(r.attributes.length===0&&t.label){let Q={rx:0,ry:0,labelPaddingX:d,labelPaddingY:d*1.5,classes:""};Ca(t.label,h)+Q.labelPaddingX*2<h.er.minEntityWidth&&(t.width=h.er.minEntityWidth);let U=await ac(e,t,Q);if(n!=null&&bce.has(n)){let oe=r.colorIndex??0;U.attr("data-color-id",`color-${oe%u.length}`)}if(!ya(h.htmlLabels)){let oe=U.select("text"),te=oe.node()?.getBBox();oe.attr("transform",`translate(${-te.width/2}, 0)`)}return U}h.htmlLabels||(d*=1.25,f*=1.25);let y=Dt(t);y||(y="node default");let v=e.insert("g").attr("class",y).attr("id",t.domId||t.id),x=await $2(v,t.label??"",h,0,0,["name"],m);x.height+=f;let b=0,T=[],k=[],C=0,w=0,S=0,R=0,L=!0,N=!0;for(let Q of r.attributes){let U=await $2(v,Q.type,h,0,b,["attribute-type"],m);C=Math.max(C,U.width+d);let oe=await $2(v,Q.name,h,0,b,["attribute-name"],m);w=Math.max(w,oe.width+d);let te=await $2(v,Q.keys.join(),h,0,b,["attribute-keys"],m);S=Math.max(S,te.width+d);let le=await $2(v,Q.comment,h,0,b,["attribute-comment"],m);R=Math.max(R,le.width+d);let ie=Math.max(U.height,oe.height,te.height,le.height)+f;k.push({yOffset:b,rowHeight:ie}),b+=ie}let I=4;S<=d&&(L=!1,S=0,I--),R<=d&&(N=!1,R=0,I--);let _=v.node().getBBox();if(x.width+d*2-(C+w+S+R)>0){let Q=x.width+d*2-(C+w+S+R);C+=Q/I,w+=Q/I,S>0&&(S+=Q/I),R>0&&(R+=Q/I)}let A=C+w+S+R,M=ut.svg(v),D=dt(t,{});t.look!=="handDrawn"&&(D.roughness=0,D.fillStyle="solid");let P=0;k.length>0&&(P=k.reduce((Q,U)=>Q+(U?.rowHeight??0),0));let B=Math.max(_.width+d*2,t?.width||0,A),O=Math.max((P??0)+x.height,t?.height||0),$=-B/2,V=-O/2;if(v.selectAll("g:not(:first-child)").each((Q,U,oe)=>{let te=et(oe[U]),le=te.attr("transform"),ie=0,ae=0;if(le){let be=RegExp(/translate\(([^,]+),([^)]+)\)/).exec(le);be&&(ie=parseFloat(be[1]),ae=parseFloat(be[2]),te.attr("class").includes("attribute-name")?ie+=C:te.attr("class").includes("attribute-keys")?ie+=C+w:te.attr("class").includes("attribute-comment")&&(ie+=C+w+S))}te.attr("transform",`translate(${$+d/2+ie}, ${ae+V+x.height+f/2})`)}),v.select(".name").attr("transform","translate("+-x.width/2+", "+(V+f/2)+")"),n!=null&&bce.has(n)){let Q=r.colorIndex??0;v.attr("data-color-id",`color-${Q%u.length}`)}let G=M.rectangle($,V,B,O,D),z=v.insert(()=>G,":first-child").attr("class","outer-path").attr("style",p.join(""));T.push(0);for(let[Q,U]of k.entries()){let te=(Q+1)%2===0&&U.yOffset!==0,le=M.rectangle($,x.height+V+U?.yOffset,B,U?.rowHeight,{...D,fill:te?a:s,stroke:l});v.insert(()=>le,"g.label").attr("style",p.join("")).attr("class",`row-rect-${te?"even":"odd"}`)}let W=1e-4,H=F2($,x.height+V,B+$,x.height+V,W),j=M.polygon(H.map(Q=>[Q.x,Q.y]),D);if(v.insert(()=>j).attr("class","divider"),H=F2(C+$,x.height+V,C+$,O+V,W),j=M.polygon(H.map(Q=>[Q.x,Q.y]),D),v.insert(()=>j).attr("class","divider"),L){let Q=C+w+$;H=F2(Q,x.height+V,Q,O+V,W),j=M.polygon(H.map(U=>[U.x,U.y]),D),v.insert(()=>j).attr("class","divider")}if(N){let Q=C+w+S+$;H=F2(Q,x.height+V,Q,O+V,W),j=M.polygon(H.map(U=>[U.x,U.y]),D),v.insert(()=>j).attr("class","divider")}for(let Q of T){let U=x.height+V+Q;H=F2($,U,B+$,U,W),j=M.polygon(H.map(oe=>[oe.x,oe.y]),D),v.insert(()=>j).attr("class","divider")}if(pt(t,z),g&&t.look!=="handDrawn")if(n!=null&&EQe.has(n))v.selectAll("path").attr("style",g);else{let U=g.split(";")?.filter(oe=>oe.includes("stroke"))?.map(oe=>`${oe}`).join("; ");v.selectAll("path").attr("style",U??""),v.selectAll(".row-rect-even path").attr("style",g)}return t.intersect=function(Q){return ht.rect(t,Q)},v}async function $2(e,t,r,n=0,i=0,a=[],s=""){let l=e.insert("g").attr("class",`label ${a.join(" ")}`).attr("transform",`translate(${n}, ${i})`).attr("style",s);t!==qc(t)&&(t=qc(t),t=t.replaceAll("<","&lt;").replaceAll(">","&gt;"));let u=l.node().appendChild(await Pn(l,t,{width:Ca(t,r)+100,style:s,useHtmlLabels:r.htmlLabels},r));if(t.includes("&lt;")||t.includes("&gt;")){let d=u.children[0];for(d.textContent=d.textContent.replaceAll("&lt;","<").replaceAll("&gt;",">");d.childNodes[0];)d=d.childNodes[0],d.textContent=d.textContent.replaceAll("&lt;","<").replaceAll("&gt;",">")}let h=u.getBBox();if(ya(r.htmlLabels)){let d=u.children[0];d.style.textAlign="start";let f=et(u);h=d.getBoundingClientRect(),f.attr("width",h.width),f.attr("height",h.height)}return h}function F2(e,t,r,n,i){return e===r?[{x:e-i/2,y:t},{x:e+i/2,y:t},{x:r+i/2,y:n},{x:r-i/2,y:n}]:[{x:e,y:t-i/2},{x:e,y:t+i/2},{x:r,y:n+i/2},{x:r,y:n-i/2}]}var bce,EQe,Tce=F(()=>{"use strict";Kt();nr();Jt();tr();Sm();ur();Ls();Vr();$r();Qt();bce=new Set(["redux-color","redux-dark-color"]),EQe=new Set(["redux","redux-dark","redux-color","redux-dark-color"]);o(fO,"erBox");o($2,"addText");o(F2,"lineToPolygon")});async function Cce(e,t,r,n,i=r.class.padding??12){let a=n?0:3,s=e.insert("g").attr("class",Dt(t)).attr("id",t.domId||t.id),l=null,u=null,h=null,d=null,f=0,p=0,m=0;if(l=s.insert("g").attr("class","annotation-group text"),t.annotations.length>0){let b=t.annotations[0];await V4(l,{text:`\xAB${b}\xBB`},0),f=l.node().getBBox().height}u=s.insert("g").attr("class","label-group text"),await V4(u,t,0,["font-weight: bolder"]);let g=u.node().getBBox();p=g.height,h=s.insert("g").attr("class","members-group text");let y=0;for(let b of t.members){let T=await V4(h,b,y,[b.parseClassifier()]);y+=T+a}m=h.node().getBBox().height,m<=0&&(m=i/2),d=s.insert("g").attr("class","methods-group text");let v=0;for(let b of t.methods){let T=await V4(d,b,v,[b.parseClassifier()]);v+=T+a}let x=s.node().getBBox();if(l!==null){let b=l.node().getBBox();l.attr("transform",`translate(${-b.width/2})`)}return u.attr("transform",`translate(${-g.width/2}, ${f})`),x=s.node().getBBox(),h.attr("transform",`translate(0, ${f+p+i*2})`),x=s.node().getBBox(),d.attr("transform",`translate(0, ${f+p+(m?m+i*4:i*2)})`),x=s.node().getBBox(),{shapeSvg:s,bbox:x}}async function V4(e,t,r,n=[]){let i=e.insert("g").attr("class","label").attr("style",n.join("; ")),a=_t(),s="useHtmlLabels"in t?t.useHtmlLabels:ya(a.htmlLabels)??!0,l="";"text"in t?l=t.text:l=t.label,!s&&l.startsWith("\\")&&(l=l.substring(1)),ni(l)&&(s=!0);let u=await Pn(i,ub(Rs(l)),{width:Ca(l,a)+50,classes:"markdown-node-label",useHtmlLabels:s},a),h,d=1;if(s){let f=u.children[0],p=et(u);d=f.innerHTML.split("<br>").length,f.innerHTML.includes("</math>")&&(d+=f.innerHTML.split("<mrow>").length-1);let m=f.getElementsByTagName("img");if(m){let g=l.replace(/<img[^>]*>/g,"").trim()==="";await Promise.all([...m].map(y=>new Promise(v=>{function x(){if(y.style.display="flex",y.style.flexDirection="column",g){let b=a.fontSize?.toString()??window.getComputedStyle(document.body).fontSize,k=parseInt(b,10)*5+"px";y.style.minWidth=k,y.style.maxWidth=k}else y.style.width="100%";v(y)}o(x,"setupImage"),setTimeout(()=>{y.complete&&x()}),y.addEventListener("error",x),y.addEventListener("load",x)})))}h=f.getBoundingClientRect(),p.attr("width",h.width),p.attr("height",h.height)}else{n.includes("font-weight: bolder")&&et(u).selectAll("tspan").attr("font-weight",""),d=u.children.length;let f=u.children[0];(u.textContent===""||u.textContent.includes("&gt"))&&(f.textContent=l[0]+l.substring(1).replaceAll("&gt;",">").replaceAll("&lt;","<").trim(),l[1]===" "&&(f.textContent=f.textContent[0]+" "+f.textContent.substring(1))),f.textContent==="undefined"&&(f.textContent=""),h=u.getBBox()}return i.attr("transform","translate(0,"+(-h.height/(2*d)+r)+")"),h.height}var wce=F(()=>{"use strict";$r();ur();Kt();Qt();Xt();Ls();Vr();o(Cce,"textHelper");o(V4,"addText")});async function kce(e,t){let r=Ae(),{themeVariables:n}=r,{useGradient:i}=n,a=r.class.padding??12,s=a,l=t.useHtmlLabels??ya(r.htmlLabels)??!0,u=t;u.annotations=u.annotations??[],u.members=u.members??[],u.methods=u.methods??[];let{shapeSvg:h,bbox:d}=await Cce(e,t,r,l,s),{labelStyles:f,nodeStyles:p}=ct(t);t.labelStyle=f,t.cssStyles=u.styles||"";let m=u.styles?.join(";")||p||"";t.cssStyles||(t.cssStyles=m.replaceAll("!important","").split(";"));let g=u.members.length===0&&u.methods.length===0&&!r.class?.hideEmptyMembersBox,y=ut.svg(h),v=dt(t,{});t.look!=="handDrawn"&&(v.roughness=0,v.fillStyle="solid");let x=Math.max(t.width??0,d.width),b=Math.max(t.height??0,d.height),T=(t.height??0)>d.height;u.members.length===0&&u.methods.length===0?b+=s:u.members.length>0&&u.methods.length===0&&(b+=s*2);let k=-x/2,C=-b/2,w=g?a*2:u.members.length===0&&u.methods.length===0?-a:0;T&&(w=a*2);let S=y.rectangle(k-a,C-a-(g?a:u.members.length===0&&u.methods.length===0?-a/2:0),x+2*a,b+2*a+w,v),R=h.insert(()=>S,":first-child");R.attr("class","basic label-container outer-path");let L=R.node().getBBox(),N=h.select(".annotation-group").node().getBBox().height-(g?a/2:0)||0,I=h.select(".label-group").node().getBBox().height-(g?a/2:0)||0,_=h.select(".members-group").node().getBBox().height-(g?a/2:0)||0,A=(N+I+C+a-(C-a-(g?a:u.members.length===0&&u.methods.length===0?-a/2:0)))/2;if(h.selectAll(".text").each((M,D,P)=>{let B=et(P[D]),O=B.attr("transform"),$=0;if(O){let W=RegExp(/translate\(([^,]+),([^)]+)\)/).exec(O);W&&($=parseFloat(W[2]))}let V=$+C+a-(g?a:u.members.length===0&&u.methods.length===0?-a/2:0);if(B.attr("class").includes("methods-group")){let z=Math.max(_,s/2);T?V=Math.max(A,N+I+z+C+s*2+a)+s*2:V=N+I+z+C+s*4+a}u.members.length===0&&u.methods.length===0&&r.class?.hideEmptyMembersBox&&(u.annotations.length>0?V=$-s:V=$),l||(V-=4);let G=k;(B.attr("class").includes("label-group")||B.attr("class").includes("annotation-group"))&&(G=-B.node()?.getBBox().width/2||0,h.selectAll("text").each(function(z,W,H){window.getComputedStyle(H[W]).textAnchor==="middle"&&(G=0)})),B.attr("transform",`translate(${G}, ${V})`)}),u.members.length>0||u.methods.length>0||g){let M=N+I+C+a,D=y.line(L.x,M,L.x+L.width,M+.001,v);h.insert(()=>D).attr("class",`divider${t.look==="neo"&&!i?" neo-line":""}`).attr("style",m)}if(g||u.members.length>0||u.methods.length>0){let M=N+I+_+C+s*2+a,D=y.line(L.x,T?Math.max(A,M):M,L.x+L.width,(T?Math.max(A,M):M)+.001,v);h.insert(()=>D).attr("class",`divider${t.look==="neo"&&!i?" neo-line":""}`).attr("style",m)}if(u.look!=="handDrawn"&&h.selectAll("path").attr("style",m),R.select(":nth-child(2)").attr("style",m),h.selectAll(".divider").select("path").attr("style",m),t.labelStyle?h.selectAll("span").attr("style",t.labelStyle):h.selectAll("span").attr("style",m),!l){let M=RegExp(/color\s*:\s*([^;]*)/),D=M.exec(m);if(D){let P=D[0].replace("color","fill");h.selectAll("tspan").attr("style",P)}else if(f){let P=M.exec(f);if(P){let B=P[0].replace("color","fill");h.selectAll("tspan").attr("style",B)}}}return pt(t,R),t.intersect=function(M){return ht.rect(t,M)},h}var Sce=F(()=>{"use strict";Kt();Xt();$r();tr();Jt();nr();wce();Vr();o(kce,"classBox")});async function Ece(e,t){let{labelStyles:r,nodeStyles:n}=ct(t);t.labelStyle=r;let i=t,a=t,s=20,l=20,u="verifyMethod"in t,h=Dt(t),{themeVariables:d}=Ae(),{borderColorArray:f,requirementEdgeLabelBackground:p}=d,m=e.insert("g").attr("class",h).attr("id",t.domId??t.id),g;u?g=await wh(m,`&lt;&lt;${i.type}&gt;&gt;`,0,t.labelStyle):g=await wh(m,"&lt;&lt;Element&gt;&gt;",0,t.labelStyle);let y=g,v=await wh(m,i.name,y,t.labelStyle+"; font-weight: bold;");if(y+=v+l,u){let L=await wh(m,`${i.requirementId?`ID: ${i.requirementId}`:""}`,y,t.labelStyle);y+=L;let N=await wh(m,`${i.text?`Text: ${i.text}`:""}`,y,t.labelStyle);y+=N;let I=await wh(m,`${i.risk?`Risk: ${i.risk}`:""}`,y,t.labelStyle);y+=I,await wh(m,`${i.verifyMethod?`Verification: ${i.verifyMethod}`:""}`,y,t.labelStyle)}else{let L=await wh(m,`${a.type?`Type: ${a.type}`:""}`,y,t.labelStyle);y+=L,await wh(m,`${a.docRef?`Doc Ref: ${a.docRef}`:""}`,y,t.labelStyle)}let x=(m.node()?.getBBox().width??200)+s,b=(m.node()?.getBBox().height??200)+s,T=-x/2,k=-b/2,C=ut.svg(m),w=dt(t,{});t.look!=="handDrawn"&&(w.roughness=0,w.fillStyle="solid");let S=C.rectangle(T,k,x,b,w),R=m.insert(()=>S,":first-child");if(R.attr("class","basic label-container outer-path").attr("style",n),f?.length){let L=t.colorIndex??0;m.attr("data-color-id",`color-${L%f.length}`)}if(m.selectAll(".label").each((L,N,I)=>{let _=et(I[N]),A=_.attr("transform"),M=0,D=0;if(A){let $=RegExp(/translate\(([^,]+),([^)]+)\)/).exec(A);$&&(M=parseFloat($[1]),D=parseFloat($[2]))}let P=D-b/2,B=T+s/2;(N===0||N===1)&&(B=M),_.attr("transform",`translate(${B}, ${P+s})`)}),y>g+v+l){let L=k+g+v+l,N;if(t.look==="neo"){let A=[[T,L],[T+x,L],[T+x,L+.001],[T,L+.001]];N=C.polygon(A,w)}else N=C.line(T,L,T+x,L,w);m.insert(()=>N).attr("class","divider")}return pt(t,R),t.intersect=function(L){return ht.rect(t,L)},n&&t.look!=="handDrawn"&&(p||f?.length)&&m.selectAll("path").attr("style",n),m}async function wh(e,t,r,n=""){if(t==="")return 0;let i=e.insert("g").attr("class","label").attr("style",n),a=Ae(),s=a.htmlLabels??!0,l=await Pn(i,ub(Rs(t)),{width:Ca(t,a)+50,classes:"markdown-node-label",useHtmlLabels:s,style:n},a),u;if(s){let h=l.children[0],d=et(l);u=h.getBoundingClientRect(),d.attr("width",u.width),d.attr("height",u.height)}else{let h=l.children[0];for(let d of h.children)n&&d.setAttribute("style",n);u=l.getBBox(),u.height+=6}return i.attr("transform",`translate(${-u.width/2},${-u.height/2+r})`),u.height}var Ace=F(()=>{"use strict";Kt();nr();Jt();tr();Qt();Xt();Ls();$r();o(Ece,"requirementBox");o(wh,"addText")});async function Rce(e,t,{config:r}){let{labelStyles:n,nodeStyles:i}=ct(t);t.labelStyle=n||"";let a=10,s=t.width;t.width=(t.width??200)-10;let{shapeSvg:l,bbox:u,label:h}=await It(e,t,Dt(t)),d=t.padding||10,f="",p;"ticket"in t&&t.ticket&&r?.kanban?.ticketBaseUrl&&(f=r?.kanban?.ticketBaseUrl.replace("#TICKET#",t.ticket),p=l.insert("svg:a",":first-child").attr("class","kanban-ticket-link").attr("xlink:href",f).attr("target","_blank"));let m={useHtmlLabels:t.useHtmlLabels,labelStyle:t.labelStyle||"",width:t.width,img:t.img,padding:t.padding||8,centerLabel:!1},g,y;p?{label:g,bbox:y}=await A4(p,"ticket"in t&&t.ticket||"",m):{label:g,bbox:y}=await A4(l,"ticket"in t&&t.ticket||"",m);let{label:v,bbox:x}=await A4(l,"assigned"in t&&t.assigned||"",m);t.width=s;let b=10,T=t?.width||0,k=Math.max(y.height,x.height)/2,C=Math.max(u.height+b*2,t?.height||0)+k,w=-T/2,S=-C/2;h.attr("transform","translate("+(d-T/2)+", "+(-k-u.height/2)+")"),g.attr("transform","translate("+(d-T/2)+", "+(-k+u.height/2)+")"),v.attr("transform","translate("+(d+T/2-x.width-2*a)+", "+(-k+u.height/2)+")");let R,{rx:L,ry:N}=t,{cssStyles:I}=t;if(t.look==="handDrawn"){let _=ut.svg(l),A=dt(t,{}),M=L||N?_.path(io(w,S,T,C,L||0),A):_.rectangle(w,S,T,C,A);R=l.insert(()=>M,":first-child"),R.attr("class","basic label-container").attr("style",I||null)}else{R=l.insert("rect",":first-child"),R.attr("class","basic label-container __APA__").attr("style",i).attr("rx",L??5).attr("ry",N??5).attr("x",w).attr("y",S).attr("width",T).attr("height",C);let _="priority"in t&&t.priority;if(_){let A=l.append("line"),M=w+2,D=S+Math.floor((L??0)/2),P=S+C-Math.floor((L??0)/2);A.attr("x1",M).attr("y1",D).attr("x2",M).attr("y2",P).attr("stroke-width","4").attr("stroke",AQe(_))}}return pt(t,R),t.height=C,t.intersect=function(_){return ht.rect(t,_)},l}var AQe,_ce=F(()=>{"use strict";Kt();nr();km();Jt();tr();AQe=o(e=>{switch(e){case"Very High":return"red";case"High":return"orange";case"Medium":return null;case"Low":return"blue";case"Very Low":return"lightblue"}},"colorFromPriority");o(Rce,"kanbanItem")});async function Lce(e,t){let{labelStyles:r,nodeStyles:n}=ct(t);t.labelStyle=r;let{shapeSvg:i,bbox:a,halfPadding:s,label:l}=await It(e,t,Dt(t)),u=a.width+10*s,h=a.height+8*s,d=.15*u,{cssStyles:f}=t,p=a.width+20,m=a.height+20,g=Math.max(u,p),y=Math.max(h,m);l.attr("transform",`translate(${-a.width/2}, ${-a.height/2})`);let v,x=`M0 0 
     a${d},${d} 1 0,0 ${g*.25},${-1*y*.1}
     a${d},${d} 1 0,0 ${g*.25},0
     a${d},${d} 1 0,0 ${g*.25},0
@@ -517,7 +516,7 @@
     a${d},${d} 1 0,0 ${-1*g*.1},${-1*y*.33}
     a${d*.8},${d*.8} 1 0,0 0,${-1*y*.34}
     a${d},${d} 1 0,0 ${g*.1},${-1*y*.33}
-  H0 V0 Z`;if(t.look==="handDrawn"){let b=ut.svg(n),T=mt(t,{}),w=b.path(x,T);v=n.insert(()=>w,":first-child"),v.attr("class","basic label-container").attr("style",ii(f))}else v=n.insert("path",":first-child").attr("class","basic label-container").attr("style",i).attr("d",x);return v.attr("transform",`translate(${-g/2}, ${-y/2})`),ft(t,v),t.calcIntersect=function(b,T){return lt.rect(b,T)},t.intersect=function(b){return Z.info("Bang intersect",t,b),lt.rect(t,b)},n}var wae=z(()=>{"use strict";St();Wt();Kt();Ht();jt();Xt();o(kae,"bang")});async function Sae(e,t){let{labelStyles:r,nodeStyles:i}=ct(t);t.labelStyle=r;let{shapeSvg:n,bbox:a,halfPadding:s,label:l}=await At(e,t,Ct(t)),u=a.width+2*s,h=a.height+2*s,d=.15*u,f=.25*u,p=.35*u,m=.2*u,{cssStyles:g}=t,y,v=`M0 0 
+  H0 V0 Z`;if(t.look==="handDrawn"){let b=ut.svg(i),T=dt(t,{}),k=b.path(x,T);v=i.insert(()=>k,":first-child"),v.attr("class","basic label-container").attr("style",kn(f))}else v=i.insert("path",":first-child").attr("class","basic label-container").attr("style",n).attr("d",x);return v.attr("transform",`translate(${-g/2}, ${-y/2})`),pt(t,v),t.calcIntersect=function(b,T){return ht.rect(b,T)},t.intersect=function(b){return Z.info("Bang intersect",t,b),ht.rect(t,b)},i}var Dce=F(()=>{"use strict";vt();Kt();nr();Jt();tr();Qt();o(Lce,"bang")});async function Ice(e,t){let{labelStyles:r,nodeStyles:n}=ct(t);t.labelStyle=r;let{shapeSvg:i,bbox:a,halfPadding:s,label:l}=await It(e,t,Dt(t)),u=a.width+2*s,h=a.height+2*s,d=.15*u,f=.25*u,p=.35*u,m=.2*u,{cssStyles:g}=t,y,v=`M0 0 
     a${d},${d} 0 0,1 ${u*.25},${-1*u*.1}
     a${p},${p} 1 0,1 ${u*.4},${-1*u*.1}
     a${f},${f} 1 0,1 ${u*.35},${u*.2}
@@ -531,7 +530,7 @@
 
     a${d},${d} 1 0,1 ${-1*u*.1},${-1*h*.35}
     a${m},${m} 1 0,1 ${u*.1},${-1*h*.65}
-  H0 V0 Z`;if(t.look==="handDrawn"){let x=ut.svg(n),b=mt(t,{}),T=x.path(v,b);y=n.insert(()=>T,":first-child"),y.attr("class","basic label-container").attr("style",ii(g))}else y=n.insert("path",":first-child").attr("class","basic label-container").attr("style",i).attr("d",v);return l.attr("transform",`translate(${-a.width/2}, ${-a.height/2})`),y.attr("transform",`translate(${-u/2}, ${-h/2})`),ft(t,y),t.calcIntersect=function(x,b){return lt.rect(x,b)},t.intersect=function(x){return Z.info("Cloud intersect",t,x),lt.rect(t,x)},n}var Eae=z(()=>{"use strict";jt();St();Xt();Kt();Ht();Wt();o(Sae,"cloud")});async function Aae(e,t){let{labelStyles:r,nodeStyles:i}=ct(t);t.labelStyle=r;let{shapeSvg:n,bbox:a,halfPadding:s,label:l}=await At(e,t,Ct(t)),u=a.width+8*s,h=a.height+2*s,d=5,f=t.look==="neo"?`
+  H0 V0 Z`;if(t.look==="handDrawn"){let x=ut.svg(i),b=dt(t,{}),T=x.path(v,b);y=i.insert(()=>T,":first-child"),y.attr("class","basic label-container").attr("style",kn(g))}else y=i.insert("path",":first-child").attr("class","basic label-container").attr("style",n).attr("d",v);return l.attr("transform",`translate(${-a.width/2}, ${-a.height/2})`),y.attr("transform",`translate(${-u/2}, ${-h/2})`),pt(t,y),t.calcIntersect=function(x,b){return ht.rect(x,b)},t.intersect=function(x){return Z.info("Cloud intersect",t,x),ht.rect(t,x)},i}var Mce=F(()=>{"use strict";tr();vt();Qt();nr();Jt();Kt();o(Ice,"cloud")});async function Nce(e,t){let{labelStyles:r,nodeStyles:n}=ct(t);t.labelStyle=r;let{shapeSvg:i,bbox:a,halfPadding:s,label:l}=await It(e,t,Dt(t)),u=a.width+8*s,h=a.height+2*s,d=5,f=t.look==="neo"?`
     M${-u/2} ${h/2-d}
     v${-h+2*d}
     q0,-${d} ${d},-${d}
@@ -551,49 +550,49 @@
     h${-(u-2*d)}
     q${-d},0 ${-d},${-d}
     Z
-  `;if(!t.domId)throw new Error(`defaultMindmapNode: node "${t.id}" is missing a domId \u2014 was render.ts domId prefixing skipped?`);let p=n.append("path").attr("id",t.domId).attr("class","node-bkg node-"+t.type).attr("style",i).attr("d",f);return n.append("line").attr("class","node-line-").attr("x1",-u/2).attr("y1",h/2).attr("x2",u/2).attr("y2",h/2),l.attr("transform",`translate(${-a.width/2}, ${-a.height/2})`),n.append(()=>l.node()),ft(t,p),t.calcIntersect=function(m,g){return lt.rect(m,g)},t.intersect=function(m){return lt.rect(t,m)},n}var _ae=z(()=>{"use strict";Kt();Ht();Wt();o(Aae,"defaultMindmapNode")});async function Dae(e,t){let r={padding:t.padding??0};return $4(e,t,r)}var Rae=z(()=>{"use strict";RN();o(Dae,"mindmapCircle")});function Lae(e){return e in NN}var Fqe,$qe,NN,IN=z(()=>{"use strict";Jre();rie();nie();sie();RN();lie();uie();die();pie();gie();bie();Cie();wie();Eie();_ie();Mie();Iie();Pie();Fie();zie();Vie();qie();Hie();jie();Kie();Qie();ene();rne();nne();sne();une();dne();pne();gne();vne();bne();Cne();wne();Ene();_ne();Rne();Mne();Ine();Pne();Fne();zne();Vne();qne();Hne();jne();Qne();eae();rae();sae();lae();uae();dae();pae();vae();bae();Cae();wae();Eae();_ae();Rae();Fqe=[{semanticName:"Process",name:"Rectangle",shortName:"rect",description:"Standard process shape",aliases:["proc","process","rectangle"],internalAliases:["squareRect"],handler:Lne},{semanticName:"Event",name:"Rounded Rectangle",shortName:"rounded",description:"Represents an event",aliases:["event"],internalAliases:["roundedRect"],handler:Sne},{semanticName:"Terminal Point",name:"Stadium",shortName:"stadium",description:"Terminal point",aliases:["terminal","pill"],handler:Nne},{semanticName:"Subprocess",name:"Framed Rectangle",shortName:"fr-rect",description:"Subprocess",aliases:["subprocess","subproc","framed-rectangle","subroutine"],handler:Gne},{semanticName:"Database",name:"Cylinder",shortName:"cyl",description:"Database storage",aliases:["db","database","cylinder"],handler:xie},{semanticName:"Data Store",name:"Data Store",shortName:"datastore",description:"Data flow diagram data store",aliases:["data-store"],handler:Tie},{semanticName:"Start",name:"Circle",shortName:"circle",description:"Starting point",aliases:["circ"],handler:$4},{semanticName:"Bang",name:"Bang",shortName:"bang",description:"Bang",aliases:["bang"],handler:kae},{semanticName:"Cloud",name:"Cloud",shortName:"cloud",description:"cloud",aliases:["cloud"],handler:Sae},{semanticName:"Decision",name:"Diamond",shortName:"diam",description:"Decision-making step",aliases:["decision","diamond","question"],handler:xne},{semanticName:"Prepare Conditional",name:"Hexagon",shortName:"hex",description:"Preparation or condition step",aliases:["hexagon","prepare"],handler:Bie},{semanticName:"Data Input/Output",name:"Lean Right",shortName:"lean-r",description:"Represents input or output",aliases:["lean-right","in-out"],internalAliases:["lean_right"],handler:ine},{semanticName:"Data Input/Output",name:"Lean Left",shortName:"lean-l",description:"Represents output or input",aliases:["lean-left","out-in"],internalAliases:["lean_left"],handler:tne},{semanticName:"Priority Action",name:"Trapezoid Base Bottom",shortName:"trap-b",description:"Priority action",aliases:["priority","trapezoid-bottom","trapezoid"],handler:Jne},{semanticName:"Manual Operation",name:"Trapezoid Base Top",shortName:"trap-t",description:"Represents a manual task",aliases:["manual","trapezoid-top","inv-trapezoid"],internalAliases:["inv_trapezoid"],handler:Zie},{semanticName:"Stop",name:"Double Circle",shortName:"dbl-circ",description:"Represents a stop point",aliases:["double-circle"],internalAliases:["doublecircle"],handler:Sie},{semanticName:"Text Block",name:"Text Block",shortName:"text",description:"Text block",handler:Yne},{semanticName:"Card",name:"Notched Rectangle",shortName:"notch-rect",description:"Represents a card",aliases:["card","notched-rectangle"],handler:iie},{semanticName:"Lined/Shaded Process",name:"Lined Rectangle",shortName:"lin-rect",description:"Lined process shape",aliases:["lined-rectangle","lined-process","lin-proc","shaded-process"],handler:Ane},{semanticName:"Start",name:"Small Circle",shortName:"sm-circ",description:"Small starting point",aliases:["start","small-circle"],internalAliases:["stateStart"],handler:$ne},{semanticName:"Stop",name:"Framed Circle",shortName:"fr-circ",description:"Stop point",aliases:["stop","framed-circle"],internalAliases:["stateEnd"],handler:Bne},{semanticName:"Fork/Join",name:"Filled Rectangle",shortName:"fork",description:"Fork or join in process flow",aliases:["join"],internalAliases:["forkJoin"],handler:Nie},{semanticName:"Collate",name:"Hourglass",shortName:"hourglass",description:"Represents a collate operation",aliases:["hourglass","collate"],handler:$ie},{semanticName:"Comment",name:"Curly Brace",shortName:"brace",description:"Adds a comment",aliases:["comment","brace-l"],handler:cie},{semanticName:"Comment Right",name:"Curly Brace",shortName:"brace-r",description:"Adds a comment",handler:hie},{semanticName:"Comment with braces on both sides",name:"Curly Braces",shortName:"braces",description:"Adds a comment",handler:fie},{semanticName:"Com Link",name:"Lightning Bolt",shortName:"bolt",description:"Communication link",aliases:["com-link","lightning-bolt"],handler:ane},{semanticName:"Document",name:"Document",shortName:"doc",description:"Represents a document",aliases:["doc","document"],handler:oae},{semanticName:"Delay",name:"Half-Rounded Rectangle",shortName:"delay",description:"Represents a delay",aliases:["half-rounded-rectangle"],handler:Oie},{semanticName:"Direct Access Storage",name:"Horizontal Cylinder",shortName:"h-cyl",description:"Direct access storage",aliases:["das","horizontal-cylinder"],handler:Zne},{semanticName:"Disk Storage",name:"Lined Cylinder",shortName:"lin-cyl",description:"Disk storage",aliases:["disk","lined-cylinder"],handler:cne},{semanticName:"Display",name:"Curved Trapezoid",shortName:"curv-trap",description:"Represents a display",aliases:["curved-trapezoid","display"],handler:mie},{semanticName:"Divided Process",name:"Divided Rectangle",shortName:"div-rect",description:"Divided process shape",aliases:["div-proc","divided-rectangle","divided-process"],handler:kie},{semanticName:"Extract",name:"Triangle",shortName:"tri",description:"Extraction process",aliases:["extract","triangle"],handler:aae},{semanticName:"Internal Storage",name:"Window Pane",shortName:"win-pane",description:"Internal storage",aliases:["internal-storage","window-pane"],handler:hae},{semanticName:"Junction",name:"Filled Circle",shortName:"f-circ",description:"Junction point",aliases:["junction","filled-circle"],handler:Aie},{semanticName:"Loop Limit",name:"Trapezoidal Pentagon",shortName:"notch-pent",description:"Loop limit step",aliases:["loop-limit","notched-pentagon"],handler:tae},{semanticName:"Manual File",name:"Flipped Triangle",shortName:"flip-tri",description:"Manual file operation",aliases:["manual-file","flipped-triangle"],handler:Lie},{semanticName:"Manual Input",name:"Sloped Rectangle",shortName:"sl-rect",description:"Manual input step",aliases:["manual-input","sloped-rectangle"],handler:Dne},{semanticName:"Multi-Document",name:"Stacked Document",shortName:"docs",description:"Multiple documents",aliases:["documents","st-doc","stacked-document"],handler:mne},{semanticName:"Multi-Process",name:"Stacked Rectangle",shortName:"st-rect",description:"Multiple processes",aliases:["procs","processes","stacked-rectangle"],handler:fne},{semanticName:"Stored Data",name:"Bow Tie Rectangle",shortName:"bow-rect",description:"Stored data",aliases:["stored-data","bow-tie-rectangle"],handler:tie},{semanticName:"Summary",name:"Crossed Circle",shortName:"cross-circ",description:"Summary",aliases:["summary","crossed-circle"],handler:oie},{semanticName:"Tagged Document",name:"Tagged Document",shortName:"tag-doc",description:"Tagged document",aliases:["tag-doc","tagged-document"],handler:Une},{semanticName:"Tagged Process",name:"Tagged Rectangle",shortName:"tag-rect",description:"Tagged process",aliases:["tagged-rectangle","tag-proc","tagged-process"],handler:Wne},{semanticName:"Paper Tape",name:"Flag",shortName:"flag",description:"Paper tape",aliases:["paper-tape"],handler:cae},{semanticName:"Odd",name:"Odd",shortName:"odd",description:"Odd shape",internalAliases:["rect_left_inv_arrow"],handler:Tne},{semanticName:"Lined Document",name:"Lined Document",shortName:"lin-doc",description:"Lined document",aliases:["lined-document"],handler:hne}],$qe=o(()=>{let t=[...Object.entries({state:One,choice:aie,note:yne,rectWithTitle:kne,labelRect:Jie,iconSquare:Yie,iconCircle:Wie,icon:Gie,iconRounded:Uie,imageSquare:Xie,anchor:Qre,kanbanItem:Tae,mindmapCircle:Dae,defaultMindmapNode:Aae,classBox:yae,erBox:MN,requirementBox:xae}),...Fqe.flatMap(r=>[r.shortName,..."aliases"in r?r.aliases:[],..."internalAliases"in r?r.internalAliases:[]].map(n=>[n,r.handler]))];return Object.fromEntries(t)},"generateShapeMap"),NN=$qe();o(Lae,"isValidShape")});var zqe,V4,Mae=z(()=>{"use strict";Rr();Wx();Ut();St();IN();Xt();Ir();Ci();gp();uv();zqe="flowchart-",V4=class{constructor(){this.vertexCounter=0;this.config=ge();this.diagramId="";this.vertices=new Map;this.edges=[];this.classes=new Map;this.subGraphs=[];this.subGraphLookup=new Map;this.tooltips=new Map;this.subCount=0;this.firstGraphFlag=!0;this.secCount=-1;this.posCrossRef=[];this.funs=[];this.setAccTitle=Cr;this.setAccDescription=wr;this.setDiagramTitle=Ar;this.getAccTitle=kr;this.getAccDescription=Sr;this.getDiagramTitle=Er;this.funs.push(this.setupToolTips.bind(this)),this.addVertex=this.addVertex.bind(this),this.firstGraph=this.firstGraph.bind(this),this.setDirection=this.setDirection.bind(this),this.addSubGraph=this.addSubGraph.bind(this),this.addLink=this.addLink.bind(this),this.setLink=this.setLink.bind(this),this.updateLink=this.updateLink.bind(this),this.addClass=this.addClass.bind(this),this.setClass=this.setClass.bind(this),this.destructLink=this.destructLink.bind(this),this.setClickEvent=this.setClickEvent.bind(this),this.setTooltip=this.setTooltip.bind(this),this.updateLinkInterpolate=this.updateLinkInterpolate.bind(this),this.setClickFun=this.setClickFun.bind(this),this.bindFunctions=this.bindFunctions.bind(this),this.lex={firstGraph:this.firstGraph.bind(this)},this.clear(),this.setGen("gen-2")}static{o(this,"FlowDB")}sanitizeText(t){return vt.sanitizeText(t,this.config)}sanitizeNodeLabelType(t){switch(t){case"markdown":case"string":case"text":return t;default:return"markdown"}}setDiagramId(t){this.diagramId=t}lookUpDomId(t){for(let r of this.vertices.values())if(r.id===t)return this.diagramId?`${this.diagramId}-${r.domId}`:r.domId;return this.diagramId?`${this.diagramId}-${t}`:t}addVertex(t,r,i,n,a,s,l={},u){if(!t||t.trim().length===0)return;let h;if(u!==void 0){let m;u.includes(`
+  `;if(!t.domId)throw new Error(`defaultMindmapNode: node "${t.id}" is missing a domId \u2014 was render.ts domId prefixing skipped?`);let p=i.append("path").attr("id",t.domId).attr("class","node-bkg node-"+t.type).attr("style",n).attr("d",f);return i.append("line").attr("class","node-line-").attr("x1",-u/2).attr("y1",h/2).attr("x2",u/2).attr("y2",h/2),l.attr("transform",`translate(${-a.width/2}, ${-a.height/2})`),i.append(()=>l.node()),pt(t,p),t.calcIntersect=function(m,g){return ht.rect(m,g)},t.intersect=function(m){return ht.rect(t,m)},i}var Pce=F(()=>{"use strict";nr();Jt();Kt();o(Nce,"defaultMindmapNode")});async function Oce(e,t){let r={padding:t.padding??0};return z4(e,t,r)}var Bce=F(()=>{"use strict";hO();o(Oce,"mindmapCircle")});function $ce(e){return e in pO}var RQe,_Qe,pO,mO=F(()=>{"use strict";soe();coe();hoe();foe();hO();moe();yoe();xoe();Toe();woe();Aoe();_oe();Doe();Moe();Poe();Foe();Goe();Woe();Hoe();Yoe();Xoe();Zoe();Joe();tle();nle();ale();ole();cle();hle();fle();yle();xle();Tle();wle();Sle();Ale();_le();Dle();Mle();Ple();Ble();Fle();Gle();Wle();Hle();Yle();Xle();Zle();Jle();tce();ace();oce();cce();fce();mce();yce();xce();Tce();Sce();Ace();_ce();Dce();Mce();Pce();Bce();RQe=[{semanticName:"Process",name:"Rectangle",shortName:"rect",description:"Standard process shape",aliases:["proc","process","rectangle"],internalAliases:["squareRect"],handler:$le},{semanticName:"Event",name:"Rounded Rectangle",shortName:"rounded",description:"Represents an event",aliases:["event"],internalAliases:["roundedRect"],handler:Ile},{semanticName:"Terminal Point",name:"Stadium",shortName:"stadium",description:"Terminal point",aliases:["terminal","pill"],handler:zle},{semanticName:"Subprocess",name:"Framed Rectangle",shortName:"fr-rect",description:"Subprocess",aliases:["subprocess","subproc","framed-rectangle","subroutine"],handler:jle},{semanticName:"Database",name:"Cylinder",shortName:"cyl",description:"Database storage",aliases:["db","database","cylinder"],handler:Eoe},{semanticName:"Data Store",name:"Data Store",shortName:"datastore",description:"Data flow diagram data store",aliases:["data-store"],handler:Roe},{semanticName:"Start",name:"Circle",shortName:"circle",description:"Starting point",aliases:["circ"],handler:z4},{semanticName:"Bang",name:"Bang",shortName:"bang",description:"Bang",aliases:["bang"],handler:Lce},{semanticName:"Cloud",name:"Cloud",shortName:"cloud",description:"cloud",aliases:["cloud"],handler:Ice},{semanticName:"Decision",name:"Diamond",shortName:"diam",description:"Decision-making step",aliases:["decision","diamond","question"],handler:Ele},{semanticName:"Prepare Conditional",name:"Hexagon",shortName:"hex",description:"Preparation or condition step",aliases:["hexagon","prepare"],handler:qoe},{semanticName:"Data Input/Output",name:"Lean Right",shortName:"lean-r",description:"Represents input or output",aliases:["lean-right","in-out"],internalAliases:["lean_right"],handler:ule},{semanticName:"Data Input/Output",name:"Lean Left",shortName:"lean-l",description:"Represents output or input",aliases:["lean-left","out-in"],internalAliases:["lean_left"],handler:lle},{semanticName:"Priority Action",name:"Trapezoid Base Bottom",shortName:"trap-b",description:"Priority action",aliases:["priority","trapezoid-bottom","trapezoid"],handler:sce},{semanticName:"Manual Operation",name:"Trapezoid Base Top",shortName:"trap-t",description:"Represents a manual task",aliases:["manual","trapezoid-top","inv-trapezoid"],internalAliases:["inv_trapezoid"],handler:ile},{semanticName:"Stop",name:"Double Circle",shortName:"dbl-circ",description:"Represents a stop point",aliases:["double-circle"],internalAliases:["doublecircle"],handler:Ioe},{semanticName:"Text Block",name:"Text Block",shortName:"text",description:"Text block",handler:ece},{semanticName:"Card",name:"Notched Rectangle",shortName:"notch-rect",description:"Represents a card",aliases:["card","notched-rectangle"],handler:uoe},{semanticName:"Lined/Shaded Process",name:"Lined Rectangle",shortName:"lin-rect",description:"Lined process shape",aliases:["lined-rectangle","lined-process","lin-proc","shaded-process"],handler:Nle},{semanticName:"Start",name:"Small Circle",shortName:"sm-circ",description:"Small starting point",aliases:["start","small-circle"],internalAliases:["stateStart"],handler:Ule},{semanticName:"Stop",name:"Framed Circle",shortName:"fr-circ",description:"Stop point",aliases:["stop","framed-circle"],internalAliases:["stateEnd"],handler:qle},{semanticName:"Fork/Join",name:"Filled Rectangle",shortName:"fork",description:"Fork or join in process flow",aliases:["join"],internalAliases:["forkJoin"],handler:zoe},{semanticName:"Collate",name:"Hourglass",shortName:"hourglass",description:"Represents a collate operation",aliases:["hourglass","collate"],handler:Uoe},{semanticName:"Comment",name:"Curly Brace",shortName:"brace",description:"Adds a comment",aliases:["comment","brace-l"],handler:goe},{semanticName:"Comment Right",name:"Curly Brace",shortName:"brace-r",description:"Adds a comment",handler:voe},{semanticName:"Comment with braces on both sides",name:"Curly Braces",shortName:"braces",description:"Adds a comment",handler:boe},{semanticName:"Com Link",name:"Lightning Bolt",shortName:"bolt",description:"Communication link",aliases:["com-link","lightning-bolt"],handler:dle},{semanticName:"Document",name:"Document",shortName:"doc",description:"Represents a document",aliases:["doc","document"],handler:pce},{semanticName:"Delay",name:"Half-Rounded Rectangle",shortName:"delay",description:"Represents a delay",aliases:["half-rounded-rectangle"],handler:Voe},{semanticName:"Direct Access Storage",name:"Horizontal Cylinder",shortName:"h-cyl",description:"Direct access storage",aliases:["das","horizontal-cylinder"],handler:ice},{semanticName:"Disk Storage",name:"Lined Cylinder",shortName:"lin-cyl",description:"Disk storage",aliases:["disk","lined-cylinder"],handler:gle},{semanticName:"Display",name:"Curved Trapezoid",shortName:"curv-trap",description:"Represents a display",aliases:["curved-trapezoid","display"],handler:Coe},{semanticName:"Divided Process",name:"Divided Rectangle",shortName:"div-rect",description:"Divided process shape",aliases:["div-proc","divided-rectangle","divided-process"],handler:Loe},{semanticName:"Extract",name:"Triangle",shortName:"tri",description:"Extraction process",aliases:["extract","triangle"],handler:dce},{semanticName:"Internal Storage",name:"Window Pane",shortName:"win-pane",description:"Internal storage",aliases:["internal-storage","window-pane"],handler:vce},{semanticName:"Junction",name:"Filled Circle",shortName:"f-circ",description:"Junction point",aliases:["junction","filled-circle"],handler:Noe},{semanticName:"Loop Limit",name:"Trapezoidal Pentagon",shortName:"notch-pent",description:"Loop limit step",aliases:["loop-limit","notched-pentagon"],handler:lce},{semanticName:"Manual File",name:"Flipped Triangle",shortName:"flip-tri",description:"Manual file operation",aliases:["manual-file","flipped-triangle"],handler:$oe},{semanticName:"Manual Input",name:"Sloped Rectangle",shortName:"sl-rect",description:"Manual input step",aliases:["manual-input","sloped-rectangle"],handler:Ole},{semanticName:"Multi-Document",name:"Stacked Document",shortName:"docs",description:"Multiple documents",aliases:["documents","st-doc","stacked-document"],handler:Cle},{semanticName:"Multi-Process",name:"Stacked Rectangle",shortName:"st-rect",description:"Multiple processes",aliases:["procs","processes","stacked-rectangle"],handler:ble},{semanticName:"Stored Data",name:"Bow Tie Rectangle",shortName:"bow-rect",description:"Stored data",aliases:["stored-data","bow-tie-rectangle"],handler:loe},{semanticName:"Summary",name:"Crossed Circle",shortName:"cross-circ",description:"Summary",aliases:["summary","crossed-circle"],handler:poe},{semanticName:"Tagged Document",name:"Tagged Document",shortName:"tag-doc",description:"Tagged document",aliases:["tag-doc","tagged-document"],handler:Qle},{semanticName:"Tagged Process",name:"Tagged Rectangle",shortName:"tag-rect",description:"Tagged process",aliases:["tagged-rectangle","tag-proc","tagged-process"],handler:Kle},{semanticName:"Paper Tape",name:"Flag",shortName:"flag",description:"Paper tape",aliases:["paper-tape"],handler:gce},{semanticName:"Odd",name:"Odd",shortName:"odd",description:"Odd shape",internalAliases:["rect_left_inv_arrow"],handler:Rle},{semanticName:"Lined Document",name:"Lined Document",shortName:"lin-doc",description:"Lined document",aliases:["lined-document"],handler:vle}],_Qe=o(()=>{let t=[...Object.entries({state:Vle,choice:doe,note:kle,rectWithTitle:Lle,labelRect:sle,iconSquare:ele,iconCircle:Koe,icon:joe,iconRounded:Qoe,imageSquare:rle,anchor:aoe,kanbanItem:Rce,mindmapCircle:Oce,defaultMindmapNode:Nce,classBox:kce,erBox:fO,requirementBox:Ece}),...RQe.flatMap(r=>[r.shortName,..."aliases"in r?r.aliases:[],..."internalAliases"in r?r.internalAliases:[]].map(i=>[i,r.handler]))];return Object.fromEntries(t)},"generateShapeMap"),pO=_Qe();o($ce,"isValidShape")});var LQe,W4,Fce=F(()=>{"use strict";$r();A2();Xt();vt();mO();Qt();Vr();Nn();Hd();H0();LQe="flowchart-",W4=class{constructor(){this.vertexCounter=0;this.config=Ae();this.diagramId="";this.vertices=new Map;this.edges=[];this.classes=new Map;this.subGraphs=[];this.subGraphLookup=new Map;this.tooltips=new Map;this.subCount=0;this.firstGraphFlag=!0;this.secCount=-1;this.posCrossRef=[];this.funs=[];this.setAccTitle=kr;this.setAccDescription=Rr;this.setDiagramTitle=Or;this.getAccTitle=Ar;this.getAccDescription=_r;this.getDiagramTitle=Lr;this.funs.push(this.setupToolTips.bind(this)),this.addVertex=this.addVertex.bind(this),this.firstGraph=this.firstGraph.bind(this),this.setDirection=this.setDirection.bind(this),this.addSubGraph=this.addSubGraph.bind(this),this.addLink=this.addLink.bind(this),this.setLink=this.setLink.bind(this),this.updateLink=this.updateLink.bind(this),this.addClass=this.addClass.bind(this),this.setClass=this.setClass.bind(this),this.destructLink=this.destructLink.bind(this),this.setClickEvent=this.setClickEvent.bind(this),this.setTooltip=this.setTooltip.bind(this),this.updateLinkInterpolate=this.updateLinkInterpolate.bind(this),this.setClickFun=this.setClickFun.bind(this),this.bindFunctions=this.bindFunctions.bind(this),this.lex={firstGraph:this.firstGraph.bind(this)},this.clear(),this.setGen("gen-2")}static{o(this,"FlowDB")}sanitizeText(t){return xt.sanitizeText(t,this.config)}sanitizeNodeLabelType(t){switch(t){case"markdown":case"string":case"text":return t;default:return"markdown"}}setDiagramId(t){this.diagramId=t}lookUpDomId(t){for(let r of this.vertices.values())if(r.id===t)return this.diagramId?`${this.diagramId}-${r.domId}`:r.domId;return this.diagramId?`${this.diagramId}-${t}`:t}addVertex(t,r,n,i,a,s,l={},u){if(!t||t.trim().length===0)return;let h;if(u!==void 0){let m;u.includes(`
 `)?m=u+`
 `:m=`{
 `+u+`
-}`,h=ld(m,{schema:od})}let d=this.edges.find(m=>m.id===t);if(d){let m=h;m?.animate!==void 0&&(d.animate=m.animate),m?.animation!==void 0&&(d.animation=m.animation),m?.curve!==void 0&&(d.interpolate=m.curve);return}let f,p=this.vertices.get(t);if(p===void 0&&(r===void 0&&i===void 0&&n!==void 0&&n!==null&&Z.warn(`Style applied to unknown node "${t}". This may indicate a typo. The node will be created automatically.`),p={id:t,labelType:"text",domId:zqe+t+"-"+this.vertexCounter,styles:[],classes:[]},this.vertices.set(t,p)),this.vertexCounter++,r!==void 0?(this.config=ge(),f=this.sanitizeText(r.text.trim()),p.labelType=r.type,f.startsWith('"')&&f.endsWith('"')&&(f=f.substring(1,f.length-1)),p.text=f):p.text===void 0&&(p.text=t),i!==void 0&&(p.type=i),n?.forEach(m=>{p.styles.push(m)}),a?.forEach(m=>{p.classes.push(m)}),s!==void 0&&(p.dir=s),p.props===void 0?p.props=l:l!==void 0&&Object.assign(p.props,l),h!==void 0){if(h.shape){if(h.shape!==h.shape.toLowerCase()||h.shape.includes("_"))throw new Error(`No such shape: ${h.shape}. Shape names should be lowercase.`);if(!Lae(h.shape))throw new Error(`No such shape: ${h.shape}.`);p.type=h?.shape}h?.label&&(p.text=h?.label,p.labelType=this.sanitizeNodeLabelType(h?.labelType)),h?.icon&&(p.icon=h?.icon,!h.label?.trim()&&p.text===t&&(p.text="")),h?.form&&(p.form=h?.form),h?.pos&&(p.pos=h?.pos),h?.img&&(p.img=h?.img,!h.label?.trim()&&p.text===t&&(p.text="")),h?.constraint&&(p.constraint=h.constraint),h.w&&(p.assetWidth=Number(h.w)),h.h&&(p.assetHeight=Number(h.h))}}addSingleLink(t,r,i,n){let l={start:t,end:r,type:void 0,text:"",labelType:"text",classes:[],isUserDefinedId:!1,interpolate:this.edges.defaultInterpolate};Z.info("abc78 Got edge...",l);let u=i.text;if(u!==void 0&&(l.text=this.sanitizeText(u.text.trim()),l.text.startsWith('"')&&l.text.endsWith('"')&&(l.text=l.text.substring(1,l.text.length-1)),l.labelType=this.sanitizeNodeLabelType(u.type)),i!==void 0&&(l.type=i.type,l.stroke=i.stroke,l.length=i.length>10?10:i.length),n&&!this.edges.some(h=>h.id===n))l.id=n,l.isUserDefinedId=!0;else{let h=this.edges.filter(d=>d.start===l.start&&d.end===l.end);h.length===0?l.id=bc(l.start,l.end,{counter:0,prefix:"L"}):l.id=bc(l.start,l.end,{counter:h.length+1,prefix:"L"})}if(this.edges.length<(this.config.maxEdges??500))Z.info("Pushing edge..."),this.edges.push(l);else throw new Error(`Edge limit exceeded. ${this.edges.length} edges found, but the limit is ${this.config.maxEdges}.
+}`,h=Qd(m,{schema:Zd})}let d=this.edges.find(m=>m.id===t);if(d){let m=h;m?.animate!==void 0&&(d.animate=m.animate),m?.animation!==void 0&&(d.animation=m.animation),m?.curve!==void 0&&(d.interpolate=m.curve);return}let f,p=this.vertices.get(t);if(p===void 0&&(r===void 0&&n===void 0&&i!==void 0&&i!==null&&Z.warn(`Style applied to unknown node "${t}". This may indicate a typo. The node will be created automatically.`),p={id:t,labelType:"text",domId:LQe+t+"-"+this.vertexCounter,styles:[],classes:[]},this.vertices.set(t,p)),this.vertexCounter++,r!==void 0?(this.config=Ae(),f=this.sanitizeText(r.text.trim()),p.labelType=r.type,f.startsWith('"')&&f.endsWith('"')&&(f=f.substring(1,f.length-1)),p.text=f):p.text===void 0&&(p.text=t),n!==void 0&&(p.type=n),i?.forEach(m=>{p.styles.push(m)}),a?.forEach(m=>{p.classes.push(m)}),s!==void 0&&(p.dir=s),p.props===void 0?p.props=l:l!==void 0&&Object.assign(p.props,l),h!==void 0){if(h.shape){if(h.shape!==h.shape.toLowerCase()||h.shape.includes("_"))throw new Error(`No such shape: ${h.shape}. Shape names should be lowercase.`);if(!$ce(h.shape))throw new Error(`No such shape: ${h.shape}.`);p.type=h?.shape}h?.label&&(p.text=h?.label,p.labelType=this.sanitizeNodeLabelType(h?.labelType)),h?.icon&&(p.icon=h?.icon,!h.label?.trim()&&p.text===t&&(p.text="")),h?.form&&(p.form=h?.form),h?.pos&&(p.pos=h?.pos),h?.img&&(p.img=h?.img,!h.label?.trim()&&p.text===t&&(p.text="")),h?.constraint&&(p.constraint=h.constraint),h.w&&(p.assetWidth=Number(h.w)),h.h&&(p.assetHeight=Number(h.h))}}addSingleLink(t,r,n,i){let l={start:t,end:r,type:void 0,text:"",labelType:"text",classes:[],isUserDefinedId:!1,interpolate:this.edges.defaultInterpolate};Z.info("abc78 Got edge...",l);let u=n.text;if(u!==void 0&&(l.text=this.sanitizeText(u.text.trim()),l.text.startsWith('"')&&l.text.endsWith('"')&&(l.text=l.text.substring(1,l.text.length-1)),l.labelType=this.sanitizeNodeLabelType(u.type)),n!==void 0&&(l.type=n.type,l.stroke=n.stroke,l.length=n.length>10?10:n.length),i&&!this.edges.some(h=>h.id===i))l.id=i,l.isUserDefinedId=!0;else{let h=this.edges.filter(d=>d.start===l.start&&d.end===l.end);h.length===0?l.id=eu(l.start,l.end,{counter:0,prefix:"L"}):l.id=eu(l.start,l.end,{counter:h.length+1,prefix:"L"})}if(this.edges.length<(this.config.maxEdges??500))Z.info("Pushing edge..."),this.edges.push(l);else throw new Error(`Edge limit exceeded. ${this.edges.length} edges found, but the limit is ${this.config.maxEdges}.
 
 Initialize mermaid with maxEdges set to a higher number to allow more edges.
 You cannot set this config via configuration inside the diagram as it is a secure config.
-You have to call mermaid.initialize.`)}isLinkData(t){return t!==null&&typeof t=="object"&&"id"in t&&typeof t.id=="string"}addLink(t,r,i){let n=this.isLinkData(i)?i.id.replace("@",""):void 0;Z.info("addLink",t,r,n);for(let a of t)for(let s of r){let l=a===t[t.length-1],u=s===r[0];l&&u?this.addSingleLink(a,s,i,n):this.addSingleLink(a,s,i,void 0)}}updateLinkInterpolate(t,r){t.forEach(i=>{i==="default"?this.edges.defaultInterpolate=r:this.edges[i].interpolate=r})}updateLink(t,r){t.forEach(i=>{if(typeof i=="number"&&i>=this.edges.length)throw new Error(`The index ${i} for linkStyle is out of bounds. Valid indices for linkStyle are between 0 and ${this.edges.length-1}. (Help: Ensure that the index is within the range of existing edges.)`);i==="default"?this.edges.defaultStyle=r:(this.edges[i].style=r,(this.edges[i]?.style?.length??0)>0&&!this.edges[i]?.style?.some(n=>n?.startsWith("fill"))&&this.edges[i]?.style?.push("fill:none"))})}addClass(t,r){let i=r.join().replace(/\\,/g,"\xA7\xA7\xA7").replace(/,/g,";").replace(/§§§/g,",").split(";");t.split(",").forEach(n=>{let a=this.classes.get(n);a===void 0&&(a={id:n,styles:[],textStyles:[]},this.classes.set(n,a)),i?.forEach(s=>{if(/color/.exec(s)){let l=s.replace("fill","bgFill");a.textStyles.push(l)}a.styles.push(s)})})}setDirection(t){this.direction=t.trim(),/.*</.exec(this.direction)&&(this.direction="RL"),/.*\^/.exec(this.direction)&&(this.direction="BT"),/.*>/.exec(this.direction)&&(this.direction="LR"),/.*v/.exec(this.direction)&&(this.direction="TB"),this.direction==="TD"&&(this.direction="TB")}setClass(t,r){for(let i of t.split(",")){let n=this.vertices.get(i);n&&n.classes.push(r);let a=this.edges.find(l=>l.id===i);a&&a.classes.push(r);let s=this.subGraphLookup.get(i);s&&s.classes.push(r)}}setTooltip(t,r){if(r!==void 0){r=this.sanitizeText(r);for(let i of t.split(","))this.tooltips.set(this.version==="gen-1"?this.lookUpDomId(i):i,r)}}setClickFun(t,r,i){if(ge().securityLevel!=="loose"||r===void 0)return;let n=[];if(typeof i=="string"){n=i.split(/,(?=(?:(?:[^"]*"){2})*[^"]*$)/);for(let s=0;s<n.length;s++){let l=n[s].trim();l.startsWith('"')&&l.endsWith('"')&&(l=l.substr(1,l.length-2)),n[s]=l}}n.length===0&&n.push(t);let a=this.vertices.get(t);a&&(a.haveCallback=!0,this.funs.push(()=>{let s=this.lookUpDomId(t),l=document.querySelector(`[id="${s}"]`);l!==null&&l.addEventListener("click",()=>{Zt.runFunc(r,...n)},!1)}))}setLink(t,r,i){t.split(",").forEach(n=>{let a=this.vertices.get(n);a!==void 0&&(a.link=Zt.formatUrl(r,this.config),a.linkTarget=i)}),this.setClass(t,"clickable")}getTooltip(t){return this.tooltips.get(t)}setClickEvent(t,r,i){t.split(",").forEach(n=>{this.setClickFun(n,r,i)}),this.setClass(t,"clickable")}bindFunctions(t){this.funs.forEach(r=>{r(t)})}getDirection(){return this.direction?.trim()}getVertices(){return this.vertices}getEdges(){return this.edges}getClasses(){return this.classes}setupToolTips(t){let r=zw();Je(t).select("svg").selectAll("g.node").on("mouseover",a=>{let s=Je(a.currentTarget),l=s.attr("title");if(l===null)return;let u=a.currentTarget?.getBoundingClientRect();r.transition().duration(200).style("opacity",".9"),r.text(s.attr("title")).style("left",window.scrollX+u.left+(u.right-u.left)/2+"px").style("top",window.scrollY+u.bottom+"px"),r.html(Ro.sanitize(l)),s.classed("hover",!0)}).on("mouseout",a=>{r.transition().duration(500).style("opacity",0),Je(a.currentTarget).classed("hover",!1)})}clear(t="gen-2"){this.vertices=new Map,this.classes=new Map,this.edges=[],this.funs=[this.setupToolTips.bind(this)],this.diagramId="",this.subGraphs=[],this.subGraphLookup=new Map,this.subCount=0,this.tooltips=new Map,this.firstGraphFlag=!0,this.version=t,this.config=ge(),gr()}setGen(t){this.version=t||"gen-2"}defaultStyle(){return"fill:#ffa;stroke: #f66; stroke-width: 3px; stroke-dasharray: 5, 5;fill:#ffa;stroke: #666;"}addSubGraph(t,r,i){let n=t.text.trim(),a=i.text;t===i&&/\s/.exec(i.text)&&(n=void 0);let l=o(p=>{let m={boolean:{},number:{},string:{}},g=[],y;return{nodeList:p.filter(function(x){let b=typeof x;return x.stmt&&x.stmt==="dir"?(y=x.value,!1):x.trim()===""?!1:b in m?m[b].hasOwnProperty(x)?!1:m[b][x]=!0:g.includes(x)?!1:g.push(x)}),dir:y}},"uniq")(r.flat()),u=l.nodeList,h=l.dir,d=ge().flowchart??{};if(h=h??(d.inheritDir?this.getDirection()??ge().direction??void 0:void 0),this.version==="gen-1")for(let p=0;p<u.length;p++)u[p]=this.lookUpDomId(u[p]);n=n??"subGraph"+this.subCount,a=a||"",a=this.sanitizeText(a),this.subCount=this.subCount+1;let f={id:n,nodes:u,title:a.trim(),classes:[],dir:h,labelType:this.sanitizeNodeLabelType(i?.type)};return Z.info("Adding",f.id,f.nodes,f.dir),f.nodes=this.makeUniq(f,this.subGraphs).nodes,this.subGraphs.push(f),this.subGraphLookup.set(n,f),n}getPosForId(t){for(let[r,i]of this.subGraphs.entries())if(i.id===t)return r;return-1}indexNodes2(t,r){let i=this.subGraphs[r].nodes;if(this.secCount=this.secCount+1,this.secCount>2e3)return{result:!1,count:0};if(this.posCrossRef[this.secCount]=r,this.subGraphs[r].id===t)return{result:!0,count:0};let n=0,a=1;for(;n<i.length;){let s=this.getPosForId(i[n]);if(s>=0){let l=this.indexNodes2(t,s);if(l.result)return{result:!0,count:a+l.count};a=a+l.count}n=n+1}return{result:!1,count:a}}getDepthFirstPos(t){return this.posCrossRef[t]}indexNodes(){this.secCount=-1,this.subGraphs.length>0&&this.indexNodes2("none",this.subGraphs.length-1)}getSubGraphs(){return this.subGraphs}firstGraph(){return this.firstGraphFlag?(this.firstGraphFlag=!1,!0):!1}destructStartLink(t){let r=t.trim(),i="arrow_open";switch(r[0]){case"<":i="arrow_point",r=r.slice(1);break;case"x":i="arrow_cross",r=r.slice(1);break;case"o":i="arrow_circle",r=r.slice(1);break}let n="normal";return r.includes("=")&&(n="thick"),r.includes(".")&&(n="dotted"),{type:i,stroke:n}}countChar(t,r){let i=r.length,n=0;for(let a=0;a<i;++a)r[a]===t&&++n;return n}destructEndLink(t){let r=t.trim(),i=r.slice(0,-1),n="arrow_open";switch(r.slice(-1)){case"x":n="arrow_cross",r.startsWith("x")&&(n="double_"+n,i=i.slice(1));break;case">":n="arrow_point",r.startsWith("<")&&(n="double_"+n,i=i.slice(1));break;case"o":n="arrow_circle",r.startsWith("o")&&(n="double_"+n,i=i.slice(1));break}let a="normal",s=i.length-1;i.startsWith("=")&&(a="thick"),i.startsWith("~")&&(a="invisible");let l=this.countChar(".",i);return l&&(a="dotted",s=l),{type:n,stroke:a,length:s}}destructLink(t,r){let i=this.destructEndLink(t),n;if(r){if(n=this.destructStartLink(r),n.stroke!==i.stroke)return{type:"INVALID",stroke:"INVALID"};if(n.type==="arrow_open")n.type=i.type;else{if(n.type!==i.type)return{type:"INVALID",stroke:"INVALID"};n.type="double_"+n.type}return n.type==="double_arrow"&&(n.type="double_arrow_point"),n.length=i.length,n}return i}exists(t,r){for(let i of t)if(i.nodes.includes(r))return!0;return!1}makeUniq(t,r){let i=[];return t.nodes.forEach((n,a)=>{this.exists(r,n)||i.push(t.nodes[a])}),{nodes:i}}getTypeFromVertex(t){if(t.img)return"imageSquare";if(t.icon)return t.form==="circle"?"iconCircle":t.form==="square"?"iconSquare":t.form==="rounded"?"iconRounded":"icon";switch(t.type){case"square":case void 0:return"squareRect";case"round":return"roundedRect";case"ellipse":return"ellipse";default:return t.type}}findNode(t,r){return t.find(i=>i.id===r)}destructEdgeType(t){let r="none",i="arrow_point";switch(t){case"arrow_point":case"arrow_circle":case"arrow_cross":i=t;break;case"double_arrow_point":case"double_arrow_circle":case"double_arrow_cross":r=t.replace("double_",""),i=r;break}return{arrowTypeStart:r,arrowTypeEnd:i}}addNodeFromVertex(t,r,i,n,a,s){let l=i.get(t.id),u=n.get(t.id)??!1,h=this.findNode(r,t.id);if(h)h.cssStyles=t.styles,h.cssCompiledStyles=this.getCompiledStyles(t.classes),h.cssClasses=t.classes.join(" ");else{let d={id:t.id,label:t.text,labelType:t.labelType,labelStyle:"",parentId:l,padding:a.flowchart?.padding||8,cssStyles:t.styles,cssCompiledStyles:this.getCompiledStyles(["default","node",...t.classes]),cssClasses:"default "+t.classes.join(" "),dir:t.dir,domId:t.domId,look:s,link:t.link,linkTarget:t.linkTarget,tooltip:this.getTooltip(t.id),icon:t.icon,pos:t.pos,img:t.img,assetWidth:t.assetWidth,assetHeight:t.assetHeight,constraint:t.constraint};u?r.push({...d,isGroup:!0,shape:"rect"}):r.push({...d,isGroup:!1,shape:this.getTypeFromVertex(t)})}}getCompiledStyles(t){let r=[];for(let i of t){let n=this.classes.get(i);n?.styles&&(r=[...r,...n.styles??[]].map(a=>a.trim())),n?.textStyles&&(r=[...r,...n.textStyles??[]].map(a=>a.trim()))}return r}getData(){let t=ge(),r=[],i=[],n=this.getSubGraphs(),a=new Map,s=new Map;for(let h=n.length-1;h>=0;h--){let d=n[h];d.nodes.length>0&&s.set(d.id,!0);for(let f of d.nodes)a.set(f,d.id)}for(let h=n.length-1;h>=0;h--){let d=n[h];r.push({id:d.id,label:d.title,labelStyle:"",labelType:d.labelType,parentId:a.get(d.id),padding:8,cssCompiledStyles:this.getCompiledStyles(d.classes),cssClasses:d.classes.join(" "),shape:"rect",dir:d.dir,isGroup:!0,look:t.look})}this.getVertices().forEach(h=>{this.addNodeFromVertex(h,r,a,s,t,t.look||"classic")});let u=this.getEdges();return u.forEach((h,d)=>{let{arrowTypeStart:f,arrowTypeEnd:p}=this.destructEdgeType(h.type),m=[...u.defaultStyle??[]];h.style&&m.push(...h.style);let g={id:bc(h.start,h.end,{counter:d,prefix:"L"},h.id),isUserDefinedId:h.isUserDefinedId,start:h.start,end:h.end,type:h.type??"normal",label:h.text,labelType:h.labelType,labelpos:"c",thickness:h.stroke,minlen:h.length,classes:h?.stroke==="invisible"?"":"edge-thickness-normal edge-pattern-solid flowchart-link",arrowTypeStart:h?.stroke==="invisible"||h?.type==="arrow_open"?"none":f,arrowTypeEnd:h?.stroke==="invisible"||h?.type==="arrow_open"?"none":p,arrowheadStyle:"fill: #333",cssCompiledStyles:this.getCompiledStyles(h.classes),labelStyle:m,style:m,pattern:h.stroke,look:t.look,animate:h.animate,animation:h.animation,curve:h.interpolate||this.edges.defaultInterpolate||t.flowchart?.curve};i.push(g)}),{nodes:r,edges:i,other:{},config:t}}defaultConfig(){return vk.flowchart}}});var Fo,Lp=z(()=>{"use strict";Rr();Fo=o((e,t)=>{let r;return t==="sandbox"&&(r=Je("#i"+e)),(t==="sandbox"?Je(r.nodes()[0].contentDocument.body):Je("body")).select(`[id="${e}"]`)},"getDiagramElement")});var zu,rb=z(()=>{"use strict";zu=o(({flowchart:e})=>{let t=e?.subGraphTitleMargin?.top??0,r=e?.subGraphTitleMargin?.bottom??0,i=t+r;return{subGraphTitleTopMargin:t,subGraphTitleBottomMargin:r,subGraphTitleTotalMargin:i}},"getSubGraphTitleMargins")});var Nae,Gqe,Vqe,Wqe,qqe,Uqe,Hqe,Iae,wg,Oae,W4=z(()=>{"use strict";Ut();br();St();rb();Rr();jt();_s();dN();z4();_p();Ht();Nae=o(async(e,t)=>{Z.info("Creating subgraph rect for ",t.id,t);let r=ge(),{themeVariables:i,handDrawnSeed:n}=r,{clusterBkg:a,clusterBorder:s}=i,{labelStyles:l,nodeStyles:u,borderStyles:h,backgroundStyles:d}=ct(t),f=e.insert("g").attr("class","cluster "+t.cssClasses).attr("id",t.domId).attr("data-look",t.look),p=Mr(r),m=f.insert("g").attr("class","cluster-label "),g;t.labelType==="markdown"?g=await wi(m,t.label,{style:t.labelStyle,useHtmlLabels:p,isNode:!0,width:t.width}):g=await Nl(m,t.label,t.labelStyle||"",!1,!0);let y=g.getBBox();if(Mr(r)){let E=g.children[0],A=Je(g);y=E.getBoundingClientRect(),A.attr("width",y.width),A.attr("height",y.height)}let v=t.width<=y.width+t.padding?y.width+t.padding:t.width;t.width<=y.width+t.padding?t.diff=(v-t.width)/2-t.padding:t.diff=-t.padding;let x=t.height,b=t.x-v/2,T=t.y-x/2;Z.trace("Data ",t,JSON.stringify(t));let w;if(t.look==="handDrawn"){let E=ut.svg(f),A=mt(t,{roughness:.7,fill:a,stroke:s,fillWeight:3,seed:n}),N=E.path(Rs(b,T,v,x,0),A);w=f.insert(()=>(Z.debug("Rough node insert CXC",N),N),":first-child"),w.select("path:nth-child(2)").attr("style",h.join(";")),w.select("path").attr("style",d.join(";").replace("fill","stroke"))}else w=f.insert("rect",":first-child"),w.attr("style",u).attr("rx",t.rx).attr("ry",t.ry).attr("x",b).attr("y",T).attr("width",v).attr("height",x);let{subGraphTitleTopMargin:C}=zu(r);if(m.attr("transform",`translate(${t.x-y.width/2}, ${t.y-t.height/2+C})`),l){let E=m.select("span");E&&E.attr("style",l)}let k=w.node().getBBox();return t.offsetX=0,t.width=k.width,t.height=k.height,t.offsetY=y.height-t.padding/2,t.intersect=function(E){return cd(t,E)},{cluster:f,labelBBox:y}},"rect"),Gqe=o((e,t)=>{let r=e.insert("g").attr("class","note-cluster").attr("id",t.domId),i=r.insert("rect",":first-child"),n=0*t.padding,a=n/2;i.attr("rx",t.rx).attr("ry",t.ry).attr("x",t.x-t.width/2-a).attr("y",t.y-t.height/2-a).attr("width",t.width+n).attr("height",t.height+n).attr("fill","none");let s=i.node().getBBox();return t.width=s.width,t.height=s.height,t.intersect=function(l){return cd(t,l)},{cluster:r,labelBBox:{width:0,height:0}}},"noteGroup"),Vqe=o(async(e,t)=>{let r=ge(),{themeVariables:i,handDrawnSeed:n}=r,{altBackground:a,compositeBackground:s,compositeTitleBackground:l,nodeBorder:u}=i,h=e.insert("g").attr("class",t.cssClasses).attr("id",t.domId).attr("data-id",t.id).attr("data-look",t.look),d=h.insert("g",":first-child"),f=h.insert("g").attr("class","cluster-label"),p=h.append("rect"),m=await Nl(f,t.label,t.labelStyle,void 0,!0),g=m.getBBox();if(Mr(r)){let N=m.children[0],P=Je(m);g=N.getBoundingClientRect(),P.attr("width",g.width),P.attr("height",g.height)}let y=0*t.padding,v=y/2,x=(t.width<=g.width+t.padding?g.width+t.padding:t.width)+y;t.width<=g.width+t.padding?t.diff=(x-t.width)/2-t.padding:t.diff=-t.padding;let b=t.height+y,T=t.height+y-g.height-6,w=t.x-x/2,C=t.y-b/2;t.width=x;let k=t.y-t.height/2-v+g.height+2,E;if(t.look==="handDrawn"){let N=t.cssClasses.includes("statediagram-cluster-alt"),P=ut.svg(h),I=t.rx||t.ry?P.path(Rs(w,C,x,b,10),{roughness:.7,fill:l,fillStyle:"solid",stroke:u,seed:n}):P.rectangle(w,C,x,b,{seed:n});E=h.insert(()=>I,":first-child");let D=P.rectangle(w,k,x,T,{fill:N?a:s,fillStyle:N?"hachure":"solid",stroke:u,seed:n});E=h.insert(()=>I,":first-child"),p=h.insert(()=>D)}else E=d.insert("rect",":first-child"),E.attr("class","outer").attr("x",w).attr("y",C).attr("width",x).attr("height",b).attr("data-look",t.look),p.attr("class","inner").attr("x",w).attr("y",k).attr("width",x).attr("height",T);f.attr("transform",`translate(${t.x-g.width/2}, ${C+1-(Mr(r)?0:3)})`);let A=E.node().getBBox();return t.height=A.height,t.offsetX=0,t.offsetY=g.height-t.padding/2,t.labelBBox=g,t.intersect=function(N){return cd(t,N)},{cluster:h,labelBBox:g}},"roundedWithTitle"),Wqe=o(async(e,t)=>{Z.info("Creating subgraph rect for ",t.id,t);let r=ge(),{themeVariables:i,handDrawnSeed:n}=r,{clusterBkg:a,clusterBorder:s}=i,{labelStyles:l,nodeStyles:u,borderStyles:h,backgroundStyles:d}=ct(t),f=e.insert("g").attr("class","cluster "+t.cssClasses).attr("id",t.domId).attr("data-look",t.look),p=Mr(r),m=f.insert("g").attr("class","cluster-label "),g=await wi(m,t.label,{style:t.labelStyle,useHtmlLabels:p,isNode:!0,width:t.width}),y=g.getBBox();if(Mr(r)){let E=g.children[0],A=Je(g);y=E.getBoundingClientRect(),A.attr("width",y.width),A.attr("height",y.height)}let v=t.width<=y.width+t.padding?y.width+t.padding:t.width;t.width<=y.width+t.padding?t.diff=(v-t.width)/2-t.padding:t.diff=-t.padding;let x=t.height,b=t.x-v/2,T=t.y-x/2;Z.trace("Data ",t,JSON.stringify(t));let w;if(t.look==="handDrawn"){let E=ut.svg(f),A=mt(t,{roughness:.7,fill:a,stroke:s,fillWeight:4,seed:n}),N=E.path(Rs(b,T,v,x,t.rx),A);w=f.insert(()=>(Z.debug("Rough node insert CXC",N),N),":first-child"),w.select("path:nth-child(2)").attr("style",h.join(";")),w.select("path").attr("style",d.join(";").replace("fill","stroke"))}else w=f.insert("rect",":first-child"),w.attr("style",u).attr("rx",t.rx).attr("ry",t.ry).attr("x",b).attr("y",T).attr("width",v).attr("height",x);let{subGraphTitleTopMargin:C}=zu(r);if(m.attr("transform",`translate(${t.x-y.width/2}, ${t.y-t.height/2+C})`),l){let E=m.select("span");E&&E.attr("style",l)}let k=w.node().getBBox();return t.offsetX=0,t.width=k.width,t.height=k.height,t.offsetY=y.height-t.padding/2,t.intersect=function(E){return cd(t,E)},{cluster:f,labelBBox:y}},"kanbanSection"),qqe=o((e,t)=>{let r=ge(),{themeVariables:i,handDrawnSeed:n}=r,{nodeBorder:a}=i,s=e.insert("g").attr("class",t.cssClasses).attr("id",t.domId).attr("data-look",t.look),l=s.insert("g",":first-child"),u=0*t.padding,h=t.width+u;t.diff=-t.padding;let d=t.height+u,f=t.x-h/2,p=t.y-d/2;t.width=h;let m;if(t.look==="handDrawn"){let v=ut.svg(s).rectangle(f,p,h,d,{fill:"lightgrey",roughness:.5,strokeLineDash:[5],stroke:a,seed:n});m=s.insert(()=>v,":first-child")}else{m=l.insert("rect",":first-child");let y="outer";t.look,y="divider",m.attr("class",y).attr("x",f).attr("y",p).attr("width",h).attr("height",d).attr("data-look",t.look)}let g=m.node().getBBox();return t.height=g.height,t.offsetX=0,t.offsetY=0,t.intersect=function(y){return cd(t,y)},{cluster:s,labelBBox:{}}},"divider"),Uqe=Nae,Hqe={rect:Nae,squareRect:Uqe,roundedWithTitle:Vqe,noteGroup:Gqe,divider:qqe,kanbanSection:Wqe},Iae=new Map,wg=o(async(e,t)=>{let r=t.shape||"rect",i=await Hqe[r](e,t);return Iae.set(t.id,i),i},"insertCluster"),Oae=o(()=>{Iae=new Map},"clear")});var $o,ON=z(()=>{"use strict";$o=o((e,t)=>{if(t)return"translate("+-e.width/2+", "+-e.height/2+")";let r=e.x??0,i=e.y??0;return"translate("+-(r+e.width/2)+", "+-(i+e.height/2)+")"},"computeLabelTransform")});function q4(e,t){if(e===void 0||t===void 0)return{angle:0,deltaX:0,deltaY:0};e=Ui(e),t=Ui(t);let[r,i]=[e.x,e.y],[n,a]=[t.x,t.y],s=n-r,l=a-i;return{angle:Math.atan(l/s),deltaX:s,deltaY:l}}var pa,PN,Ui,U4,BN=z(()=>{"use strict";pa={aggregation:17.25,extension:17.25,composition:17.25,dependency:6,lollipop:13.5,arrow_point:4,arrow_barb:0,arrow_barb_neo:5.5},PN={arrow_point:4,arrow_cross:12.5,arrow_circle:12.5};o(q4,"calculateDeltaAndAngle");Ui=o(e=>Array.isArray(e)?{x:e[0],y:e[1]}:e,"pointTransformer"),U4=o(e=>({x:o(function(t,r,i){let n=0,a=Ui(i[0]).x<Ui(i[i.length-1]).x?"left":"right";if(r===0&&Object.hasOwn(pa,e.arrowTypeStart)){let{angle:m,deltaX:g}=q4(i[0],i[1]);n=pa[e.arrowTypeStart]*Math.cos(m)*(g>=0?1:-1)}else if(r===i.length-1&&Object.hasOwn(pa,e.arrowTypeEnd)){let{angle:m,deltaX:g}=q4(i[i.length-1],i[i.length-2]);n=pa[e.arrowTypeEnd]*Math.cos(m)*(g>=0?1:-1)}let s=Math.abs(Ui(t).x-Ui(i[i.length-1]).x),l=Math.abs(Ui(t).y-Ui(i[i.length-1]).y),u=Math.abs(Ui(t).x-Ui(i[0]).x),h=Math.abs(Ui(t).y-Ui(i[0]).y),d=pa[e.arrowTypeStart],f=pa[e.arrowTypeEnd],p=1;if(s<f&&s>0&&l<f){let m=f+p-s;m*=a==="right"?-1:1,n-=m}if(u<d&&u>0&&h<d){let m=d+p-u;m*=a==="right"?-1:1,n+=m}return Ui(t).x+n},"x"),y:o(function(t,r,i){let n=0,a=Ui(i[0]).y<Ui(i[i.length-1]).y?"down":"up";if(r===0&&Object.hasOwn(pa,e.arrowTypeStart)){let{angle:m,deltaY:g}=q4(i[0],i[1]);n=pa[e.arrowTypeStart]*Math.abs(Math.sin(m))*(g>=0?1:-1)}else if(r===i.length-1&&Object.hasOwn(pa,e.arrowTypeEnd)){let{angle:m,deltaY:g}=q4(i[i.length-1],i[i.length-2]);n=pa[e.arrowTypeEnd]*Math.abs(Math.sin(m))*(g>=0?1:-1)}let s=Math.abs(Ui(t).y-Ui(i[i.length-1]).y),l=Math.abs(Ui(t).x-Ui(i[i.length-1]).x),u=Math.abs(Ui(t).y-Ui(i[0]).y),h=Math.abs(Ui(t).x-Ui(i[0]).x),d=pa[e.arrowTypeStart],f=pa[e.arrowTypeEnd],p=1;if(s<f&&s>0&&l<f){let m=f+p-s;m*=a==="up"?-1:1,n-=m}if(u<d&&u>0&&h<d){let m=d+p-u;m*=a==="up"?-1:1,n+=m}return Ui(t).y+n},"y")}),"getLineFunctionsWithOffset")});var Bae,Yqe,jqe,Pae,Fae=z(()=>{"use strict";St();Bae=o((e,t,r,i,n,a=!1,s)=>{t.arrowTypeStart&&Pae(e,"start",t.arrowTypeStart,r,i,n,a,s),t.arrowTypeEnd&&Pae(e,"end",t.arrowTypeEnd,r,i,n,a,s)},"addEdgeMarkers"),Yqe={arrow_cross:{type:"cross",fill:!1},arrow_point:{type:"point",fill:!0},arrow_barb:{type:"barb",fill:!0},arrow_barb_neo:{type:"barb",fill:!0},arrow_circle:{type:"circle",fill:!1},aggregation:{type:"aggregation",fill:!1},extension:{type:"extension",fill:!1},composition:{type:"composition",fill:!0},dependency:{type:"dependency",fill:!0},lollipop:{type:"lollipop",fill:!1},only_one:{type:"onlyOne",fill:!1},zero_or_one:{type:"zeroOrOne",fill:!1},one_or_more:{type:"oneOrMore",fill:!1},zero_or_more:{type:"zeroOrMore",fill:!1},requirement_arrow:{type:"requirement_arrow",fill:!1},requirement_contains:{type:"requirement_contains",fill:!1}},jqe=["cross","point","circle","lollipop","aggregation","extension","composition","dependency","barb"],Pae=o((e,t,r,i,n,a,s=!1,l)=>{let u=Yqe[r],h=u&&jqe.includes(u.type);if(!u){Z.warn(`Unknown arrow type: ${r}`);return}let d=u.type,m=`${n}_${a}-${d}${t==="start"?"Start":"End"}${s&&h?"-margin":""}`;if(l&&l.trim()!==""){let g=l.replace(/[^\dA-Za-z]/g,"_"),y=`${m}_${g}`;if(!document.getElementById(y)){let v=document.getElementById(m);if(v){let x=v.cloneNode(!0);x.id=y,x.querySelectorAll("path, circle, line").forEach(T=>{T.setAttribute("stroke",l),u.fill&&T.setAttribute("fill",l)}),v.parentNode?.appendChild(x)}}e.attr(`marker-${t}`,`url(${i}#${y})`)}else e.attr(`marker-${t}`,`url(${i}#${m})`)},"addEdgeMarker")});function H4(e,t){Mr(ge())&&e&&(e.style.width=t.length*9+"px",e.style.height="12px")}function Qqe(e){let t=[],r=[];for(let i=1;i<e.length-1;i++){let n=e[i-1],a=e[i],s=e[i+1];(n.x===a.x&&a.y===s.y&&Math.abs(a.x-s.x)>5&&Math.abs(a.y-n.y)>5||n.y===a.y&&a.x===s.x&&Math.abs(a.x-n.x)>5&&Math.abs(a.y-s.y)>5)&&(t.push(a),r.push(i))}return{cornerPoints:t,cornerPointPositions:r}}function tUe(e,t){if(e.length<2)return"";let r="",i=e.length,n=1e-5;for(let a=0;a<i;a++){let s=e[a],l=e[a-1],u=e[a+1];if(a===0)r+=`M${s.x},${s.y}`;else if(a===i-1)r+=`L${s.x},${s.y}`;else{let h=s.x-l.x,d=s.y-l.y,f=u.x-s.x,p=u.y-s.y,m=Math.hypot(h,d),g=Math.hypot(f,p);if(m<n||g<n){r+=`L${s.x},${s.y}`;continue}let y=h/m,v=d/m,x=f/g,b=p/g,T=y*x+v*b,w=Math.max(-1,Math.min(1,T)),C=Math.acos(w);if(C<n||Math.abs(Math.PI-C)<n){r+=`L${s.x},${s.y}`;continue}let k=Math.min(t/Math.sin(C/2),m/2,g/2),E=s.x-y*k,A=s.y-v*k,N=s.x+x*k,P=s.y+b*k;r+=`L${E},${A}`,r+=`Q${s.x},${s.y} ${N},${P}`}}return r}function Gae(e,t){if(!e||!t)return{angle:0,deltaX:0,deltaY:0};let r=t.x-e.x,i=t.y-e.y;return{angle:Math.atan2(i,r),deltaX:r,deltaY:i}}function rUe(e,t){let r=e.map(n=>({...n}));if(e.length>=2&&pa[t.arrowTypeStart]){let n=pa[t.arrowTypeStart],a=e[0],s=e[1],{angle:l}=Gae(a,s),u=n*Math.cos(l),h=n*Math.sin(l);r[0].x=a.x+u,r[0].y=a.y+h}let i=e.length;if(i>=2&&pa[t.arrowTypeEnd]){let n=pa[t.arrowTypeEnd],a=e[i-1],s=e[i-2],{angle:l}=Gae(s,a),u=n*Math.cos(l),h=n*Math.sin(l);r[i-1].x=a.x-u,r[i-1].y=a.y-h}return r}var Xqe,Y4,ma,Vae,ib,j4,X4,Kqe,Zqe,$ae,zae,Jqe,eUe,K4,FN=z(()=>{"use strict";Ut();br();St();_s();ON();Xt();BN();rb();Rr();jt();z4();Fae();Ht();Xqe=o(e=>typeof e=="string"?e:ge()?.flowchart?.curve,"resolveEdgeCurveType"),Y4=new Map,ma=new Map,Vae=o(()=>{Y4.clear(),ma.clear()},"clear"),ib=o(e=>e?typeof e=="string"?e:e.reduce((t,r)=>t+";"+r,""):"","getLabelStyles"),j4=o(async(e,t)=>{let r=ge(),i=Mr(r),{labelStyles:n}=ct(t);t.labelStyle=n;let a=e.insert("g").attr("class","edgeLabel"),s=a.insert("g").attr("class","label").attr("data-id",t.id),l=t.labelType==="markdown",h=await wi(e,t.label,{style:ib(t.labelStyle),useHtmlLabels:i,addSvgBackground:!0,isNode:!1,markdown:l,width:l?void 0:void 0},r);s.node().appendChild(h),Z.info("abc82",t,t.labelType);let d=h.getBBox(),f=d;if(i){let m=h.children[0],g=Je(h);d=m.getBoundingClientRect(),f=d,g.attr("width",d.width),g.attr("height",d.height)}else{let m=Je(h).select("text").node();m&&typeof m.getBBox=="function"&&(f=m.getBBox())}s.attr("transform",$o(f,i)),Y4.set(t.id,a),t.width=d.width,t.height=d.height;let p;if(t.startLabelLeft){let m=e.insert("g").attr("class","edgeTerminals"),g=m.insert("g").attr("class","inner"),y=await Nl(g,t.startLabelLeft,ib(t.labelStyle)||"",!1,!1);p=y;let v=y.getBBox();if(i){let x=y.children[0],b=Je(y);v=x.getBoundingClientRect(),b.attr("width",v.width),b.attr("height",v.height)}g.attr("transform",$o(v,i)),ma.get(t.id)||ma.set(t.id,{}),ma.get(t.id).startLeft=m,H4(p,t.startLabelLeft)}if(t.startLabelRight){let m=e.insert("g").attr("class","edgeTerminals"),g=m.insert("g").attr("class","inner"),y=await Nl(g,t.startLabelRight,ib(t.labelStyle)||"",!1,!1);p=y;let v=y.getBBox();if(i){let x=y.children[0],b=Je(y);v=x.getBoundingClientRect(),b.attr("width",v.width),b.attr("height",v.height)}g.attr("transform",$o(v,i)),ma.get(t.id)||ma.set(t.id,{}),ma.get(t.id).startRight=m,H4(p,t.startLabelRight)}if(t.endLabelLeft){let m=e.insert("g").attr("class","edgeTerminals"),g=m.insert("g").attr("class","inner"),y=await Nl(m,t.endLabelLeft,ib(t.labelStyle)||"",!1,!1);p=y;let v=y.getBBox();if(i){let x=y.children[0],b=Je(y);v=x.getBoundingClientRect(),b.attr("width",v.width),b.attr("height",v.height)}g.attr("transform",$o(v,i)),ma.get(t.id)||ma.set(t.id,{}),ma.get(t.id).endLeft=m,H4(p,t.endLabelLeft)}if(t.endLabelRight){let m=e.insert("g").attr("class","edgeTerminals"),g=m.insert("g").attr("class","inner"),y=await Nl(m,t.endLabelRight,ib(t.labelStyle)||"",!1,!1);p=y;let v=y.getBBox();if(i){let x=y.children[0],b=Je(y);v=x.getBoundingClientRect(),b.attr("width",v.width),b.attr("height",v.height)}g.attr("transform",$o(v,i)),ma.get(t.id)||ma.set(t.id,{}),ma.get(t.id).endRight=m,H4(p,t.endLabelRight)}return h},"insertEdgeLabel");o(H4,"setTerminalWidth");X4=o((e,t)=>{Z.debug("Moving label abc88 ",e.id,e.label,Y4.get(e.id),t);let r=t.updatedPath?t.updatedPath:t.originalPath,i=ge(),{subGraphTitleTotalMargin:n}=zu(i);if(e.label){let a=Y4.get(e.id),s=e.x,l=e.y;if(r){let u=Zt.calcLabelPosition(r);Z.debug("Moving label "+e.label+" from (",s,",",l,") to (",u.x,",",u.y,") abc88"),t.updatedPath&&(s=u.x,l=u.y)}a.attr("transform",`translate(${s}, ${l+n/2})`)}if(e.startLabelLeft){let a=ma.get(e.id).startLeft,s=e.x,l=e.y;if(r){let u=Zt.calcTerminalLabelPosition(e.arrowTypeStart?10:0,"start_left",r);s=u.x,l=u.y}a.attr("transform",`translate(${s}, ${l})`)}if(e.startLabelRight){let a=ma.get(e.id).startRight,s=e.x,l=e.y;if(r){let u=Zt.calcTerminalLabelPosition(e.arrowTypeStart?10:0,"start_right",r);s=u.x,l=u.y}a.attr("transform",`translate(${s}, ${l})`)}if(e.endLabelLeft){let a=ma.get(e.id).endLeft,s=e.x,l=e.y;if(r){let u=Zt.calcTerminalLabelPosition(e.arrowTypeEnd?10:0,"end_left",r);s=u.x,l=u.y}a.attr("transform",`translate(${s}, ${l})`)}if(e.endLabelRight){let a=ma.get(e.id).endRight,s=e.x,l=e.y;if(r){let u=Zt.calcTerminalLabelPosition(e.arrowTypeEnd?10:0,"end_right",r);s=u.x,l=u.y}a.attr("transform",`translate(${s}, ${l})`)}},"positionEdgeLabel"),Kqe=o((e,t)=>{let r=e.x,i=e.y,n=Math.abs(t.x-r),a=Math.abs(t.y-i),s=e.width/2,l=e.height/2;return n>=s||a>=l},"outsideNode"),Zqe=o((e,t,r)=>{Z.debug(`intersection calc abc89:
+You have to call mermaid.initialize.`)}isLinkData(t){return t!==null&&typeof t=="object"&&"id"in t&&typeof t.id=="string"}addLink(t,r,n){let i=this.isLinkData(n)?n.id.replace("@",""):void 0;Z.info("addLink",t,r,i);for(let a of t)for(let s of r){let l=a===t[t.length-1],u=s===r[0];l&&u?this.addSingleLink(a,s,n,i):this.addSingleLink(a,s,n,void 0)}}updateLinkInterpolate(t,r){t.forEach(n=>{n==="default"?this.edges.defaultInterpolate=r:this.edges[n].interpolate=r})}updateLink(t,r){t.forEach(n=>{if(typeof n=="number"&&n>=this.edges.length)throw new Error(`The index ${n} for linkStyle is out of bounds. Valid indices for linkStyle are between 0 and ${this.edges.length-1}. (Help: Ensure that the index is within the range of existing edges.)`);n==="default"?this.edges.defaultStyle=r:(this.edges[n].style=r,(this.edges[n]?.style?.length??0)>0&&!this.edges[n]?.style?.some(i=>i?.startsWith("fill"))&&this.edges[n]?.style?.push("fill:none"))})}addClass(t,r){let n=r.join().replace(/\\,/g,"\xA7\xA7\xA7").replace(/,/g,";").replace(/§§§/g,",").split(";");t.split(",").forEach(i=>{let a=this.classes.get(i);a===void 0&&(a={id:i,styles:[],textStyles:[]},this.classes.set(i,a)),n?.forEach(s=>{if(/color/.exec(s)){let l=s.replace("fill","bgFill");a.textStyles.push(l)}a.styles.push(s)})})}setDirection(t){this.direction=t.trim(),/.*</.exec(this.direction)&&(this.direction="RL"),/.*\^/.exec(this.direction)&&(this.direction="BT"),/.*>/.exec(this.direction)&&(this.direction="LR"),/.*v/.exec(this.direction)&&(this.direction="TB"),this.direction==="TD"&&(this.direction="TB")}setClass(t,r){for(let n of t.split(",")){let i=this.vertices.get(n);i&&i.classes.push(r);let a=this.edges.find(l=>l.id===n);a&&a.classes.push(r);let s=this.subGraphLookup.get(n);s&&s.classes.push(r)}}setTooltip(t,r){if(r!==void 0){r=this.sanitizeText(r);for(let n of t.split(","))this.tooltips.set(this.version==="gen-1"?this.lookUpDomId(n):n,r)}}setClickFun(t,r,n){if(Ae().securityLevel!=="loose"||r===void 0)return;let i=[];if(typeof n=="string"){i=n.split(/,(?=(?:(?:[^"]*"){2})*[^"]*$)/);for(let s=0;s<i.length;s++){let l=i[s].trim();l.startsWith('"')&&l.endsWith('"')&&(l=l.substr(1,l.length-2)),i[s]=l}}i.length===0&&i.push(t);let a=this.vertices.get(t);a&&(a.haveCallback=!0,this.funs.push(()=>{let s=this.lookUpDomId(t),l=document.querySelector(`[id="${s}"]`);l!==null&&l.addEventListener("click",()=>{Zt.runFunc(r,...i)},!1)}))}setLink(t,r,n){t.split(",").forEach(i=>{let a=this.vertices.get(i);a!==void 0&&(a.link=Zt.formatUrl(r,this.config),a.linkTarget=n)}),this.setClass(t,"clickable")}getTooltip(t){return this.tooltips.get(t)}setClickEvent(t,r,n){t.split(",").forEach(i=>{this.setClickFun(i,r,n)}),this.setClass(t,"clickable")}bindFunctions(t){this.funs.forEach(r=>{r(t)})}getDirection(){return this.direction?.trim()}getVertices(){return this.vertices}getEdges(){return this.edges}getClasses(){return this.classes}setupToolTips(t){let r=Dy();et(t).select("svg").selectAll("g.node").on("mouseover",a=>{let s=et(a.currentTarget),l=s.attr("title");if(l===null)return;let u=a.currentTarget?.getBoundingClientRect();r.transition().duration(200).style("opacity",".9"),r.text(s.attr("title")).style("left",window.scrollX+u.left+(u.right-u.left)/2+"px").style("top",window.scrollY+u.bottom+"px"),r.html(Zs.sanitize(l)),s.classed("hover",!0)}).on("mouseout",a=>{r.transition().duration(500).style("opacity",0),et(a.currentTarget).classed("hover",!1)})}clear(t="gen-2"){this.vertices=new Map,this.classes=new Map,this.edges=[],this.funs=[this.setupToolTips.bind(this)],this.diagramId="",this.subGraphs=[],this.subGraphLookup=new Map,this.subCount=0,this.tooltips=new Map,this.firstGraphFlag=!0,this.version=t,this.config=Ae(),yr()}setGen(t){this.version=t||"gen-2"}defaultStyle(){return"fill:#ffa;stroke: #f66; stroke-width: 3px; stroke-dasharray: 5, 5;fill:#ffa;stroke: #666;"}addSubGraph(t,r,n){let i=t.text.trim(),a=n.text;t===n&&/\s/.exec(n.text)&&(i=void 0);let l=o(g=>{let y={boolean:{},number:{},string:{}},v=[],x;return{nodeList:g.filter(function(T){let k=typeof T;return T.stmt&&T.stmt==="dir"?(x=T.value,!1):T.trim()===""?!1:k in y?y[k].hasOwnProperty(T)?!1:y[k][T]=!0:v.includes(T)?!1:v.push(T)}),dir:x}},"uniq")(r.flat()),u=l.nodeList,h=l.dir,d=h!==void 0,f=Ae().flowchart??{},p=h??(f.inheritDir?this.getDirection()??Ae().direction??void 0:void 0);if(this.version==="gen-1")for(let g=0;g<u.length;g++)u[g]=this.lookUpDomId(u[g]);i=i??"subGraph"+this.subCount,a=a||"",a=this.sanitizeText(a),this.subCount=this.subCount+1;let m={id:i,nodes:u,title:a.trim(),classes:[],dir:p,hasExplicitDir:d,labelType:this.sanitizeNodeLabelType(n?.type)};return Z.info("Adding",m.id,m.nodes,m.dir),m.nodes=this.makeUniq(m,this.subGraphs).nodes,this.subGraphs.push(m),this.subGraphLookup.set(i,m),i}getPosForId(t){for(let[r,n]of this.subGraphs.entries())if(n.id===t)return r;return-1}indexNodes2(t,r){let n=this.subGraphs[r].nodes;if(this.secCount=this.secCount+1,this.secCount>2e3)return{result:!1,count:0};if(this.posCrossRef[this.secCount]=r,this.subGraphs[r].id===t)return{result:!0,count:0};let i=0,a=1;for(;i<n.length;){let s=this.getPosForId(n[i]);if(s>=0){let l=this.indexNodes2(t,s);if(l.result)return{result:!0,count:a+l.count};a=a+l.count}i=i+1}return{result:!1,count:a}}getDepthFirstPos(t){return this.posCrossRef[t]}indexNodes(){this.secCount=-1,this.subGraphs.length>0&&this.indexNodes2("none",this.subGraphs.length-1)}getSubGraphs(){return this.subGraphs}firstGraph(){return this.firstGraphFlag?(this.firstGraphFlag=!1,!0):!1}destructStartLink(t){let r=t.trim(),n="arrow_open";switch(r[0]){case"<":n="arrow_point",r=r.slice(1);break;case"x":n="arrow_cross",r=r.slice(1);break;case"o":n="arrow_circle",r=r.slice(1);break}let i="normal";return r.includes("=")&&(i="thick"),r.includes(".")&&(i="dotted"),{type:n,stroke:i}}countChar(t,r){let n=r.length,i=0;for(let a=0;a<n;++a)r[a]===t&&++i;return i}destructEndLink(t){let r=t.trim(),n=r.slice(0,-1),i="arrow_open";switch(r.slice(-1)){case"x":i="arrow_cross",r.startsWith("x")&&(i="double_"+i,n=n.slice(1));break;case">":i="arrow_point",r.startsWith("<")&&(i="double_"+i,n=n.slice(1));break;case"o":i="arrow_circle",r.startsWith("o")&&(i="double_"+i,n=n.slice(1));break}let a="normal",s=n.length-1;n.startsWith("=")&&(a="thick"),n.startsWith("~")&&(a="invisible");let l=this.countChar(".",n);return l&&(a="dotted",s=l),{type:i,stroke:a,length:s}}destructLink(t,r){let n=this.destructEndLink(t),i;if(r){if(i=this.destructStartLink(r),i.stroke!==n.stroke)return{type:"INVALID",stroke:"INVALID"};if(i.type==="arrow_open")i.type=n.type;else{if(i.type!==n.type)return{type:"INVALID",stroke:"INVALID"};i.type="double_"+i.type}return i.type==="double_arrow"&&(i.type="double_arrow_point"),i.length=n.length,i}return n}exists(t,r){for(let n of t)if(n.nodes.includes(r))return!0;return!1}makeUniq(t,r){let n=[];return t.nodes.forEach((i,a)=>{this.exists(r,i)||n.push(t.nodes[a])}),{nodes:n}}getTypeFromVertex(t){if(t.img)return"imageSquare";if(t.icon)return t.form==="circle"?"iconCircle":t.form==="square"?"iconSquare":t.form==="rounded"?"iconRounded":"icon";switch(t.type){case"square":case void 0:return"squareRect";case"round":return"roundedRect";case"ellipse":return"ellipse";default:return t.type}}findNode(t,r){return t.find(n=>n.id===r)}destructEdgeType(t){let r="none",n="arrow_point";switch(t){case"arrow_point":case"arrow_circle":case"arrow_cross":n=t;break;case"double_arrow_point":case"double_arrow_circle":case"double_arrow_cross":r=t.replace("double_",""),n=r;break}return{arrowTypeStart:r,arrowTypeEnd:n}}addNodeFromVertex(t,r,n,i,a,s){let l=n.get(t.id),u=i.get(t.id)??!1,h=this.findNode(r,t.id);if(h)h.cssStyles=t.styles,h.cssCompiledStyles=this.getCompiledStyles(t.classes),h.cssClasses=t.classes.join(" ");else{let d={id:t.id,label:t.text,labelType:t.labelType,labelStyle:"",parentId:l,padding:a.flowchart?.padding||8,cssStyles:t.styles,cssCompiledStyles:this.getCompiledStyles(["default","node",...t.classes]),cssClasses:"default "+t.classes.join(" "),dir:t.dir,domId:t.domId,look:s,link:t.link,linkTarget:t.linkTarget,tooltip:this.getTooltip(t.id),icon:t.icon,pos:t.pos,img:t.img,assetWidth:t.assetWidth,assetHeight:t.assetHeight,constraint:t.constraint};u?r.push({...d,isGroup:!0,shape:"rect"}):r.push({...d,isGroup:!1,shape:this.getTypeFromVertex(t)})}}getCompiledStyles(t){let r=[];for(let n of t){let i=this.classes.get(n);i?.styles&&(r=[...r,...i.styles??[]].map(a=>a.trim())),i?.textStyles&&(r=[...r,...i.textStyles??[]].map(a=>a.trim()))}return r}getData(){let t=Ae(),r=[],n=[],i=this.getSubGraphs(),a=new Map,s=new Map;for(let h=i.length-1;h>=0;h--){let d=i[h];d.nodes.length>0&&s.set(d.id,!0);for(let f of d.nodes)a.set(f,d.id)}for(let h=i.length-1;h>=0;h--){let d=i[h];r.push({id:d.id,label:d.title,labelStyle:"",labelType:d.labelType,parentId:a.get(d.id),padding:8,cssCompiledStyles:this.getCompiledStyles(d.classes),cssClasses:d.classes.join(" "),shape:"rect",dir:d.dir==="TD"?"TB":d.dir,explicitDir:d.hasExplicitDir,isGroup:!0,look:t.look})}this.getVertices().forEach(h=>{this.addNodeFromVertex(h,r,a,s,t,t.look||"classic")});let u=this.getEdges();return u.forEach((h,d)=>{let{arrowTypeStart:f,arrowTypeEnd:p}=this.destructEdgeType(h.type),m=[...u.defaultStyle??[]];h.style&&m.push(...h.style);let g={id:eu(h.start,h.end,{counter:d,prefix:"L"},h.id),isUserDefinedId:h.isUserDefinedId,start:h.start,end:h.end,type:h.type??"normal",label:h.text,labelType:h.labelType,labelpos:"c",thickness:h.stroke,minlen:h.length,classes:h?.stroke==="invisible"?"":"edge-thickness-normal edge-pattern-solid flowchart-link",arrowTypeStart:h?.stroke==="invisible"||h?.type==="arrow_open"?"none":f,arrowTypeEnd:h?.stroke==="invisible"||h?.type==="arrow_open"?"none":p,arrowheadStyle:"fill: #333",cssCompiledStyles:this.getCompiledStyles(h.classes),labelStyle:m,style:m,pattern:h.stroke,look:t.look,animate:h.animate,animation:h.animation,curve:h.interpolate||this.edges.defaultInterpolate||t.flowchart?.curve};n.push(g)}),{nodes:r,edges:n,other:{},config:t}}defaultConfig(){return bS.flowchart}}});var pl,Am=F(()=>{"use strict";$r();pl=o((e,t)=>{let r;return t==="sandbox"&&(r=et("#i"+e)),(t==="sandbox"?et(r.nodes()[0].contentDocument.body):et("body")).select(`[id="${e}"]`)},"getDiagramElement")});var oc,Vy=F(()=>{"use strict";oc=o(({flowchart:e})=>{let t=e?.subGraphTitleMargin?.top??0,r=e?.subGraphTitleMargin?.bottom??0,n=t+r;return{subGraphTitleTopMargin:t,subGraphTitleBottomMargin:r,subGraphTitleTotalMargin:n}},"getSubGraphTitleMargins")});var zce,Gce=F(()=>{"use strict";Xt();ur();vt();$r();tr();Ls();_4();Jt();zce=o(async(e,t)=>{let r=Ae(),{themeVariables:n,handDrawnSeed:i}=r,{clusterBkg:a,clusterBorder:s}=n,l=s,{labelStyles:u,nodeStyles:h,borderStyles:d,backgroundStyles:f}=ct(t),p=e.insert("g").attr("class","cluster swimlane "+(t.cssClasses||"")).attr("id",t.id).attr("data-id",t.id).attr("data-et","cluster").attr("data-look",t.look),m=ya(r.flowchart.htmlLabels),g=t.direction==="LR",y=p.insert("g").attr("class","cluster-label swimlane-label"),v=await Pn(y,t.label,{style:t.labelStyle,useHtmlLabels:m,isNode:!0,width:t.width}),x=v.getBBox();if(m){let A=v.children[0],M=et(v);x=A.getBoundingClientRect(),M.attr("width",x.width),M.attr("height",x.height)}let b=t.padding??0,T=t.width<=x.width+b?x.width+b:t.width;t.width<=x.width+b?t.diff=(T-t.width)/2-b:t.diff=-b;let k=t.height,C=t.y-k/2,w=t.y+k/2,S=t.x-T/2,R=t.swimlaneContentTop!==void 0?t.swimlaneContentTop:C+k/3,L=g?4:0,N=x.height+2*L,I,_;if(g){let A=Math.max(N,x.height+2*L),M=S+A,D=Math.max(0,T-A);if(t.look==="handDrawn"){let O=ut.svg(p),$=dt(t,{roughness:.7,fill:a,stroke:l,fillWeight:3,seed:i}),V=dt(t,{roughness:.7,fill:"none",stroke:l,seed:i}),G=O.rectangle(S,C,A,k,$);I=p.insert(()=>G,":first-child");let z=O.rectangle(M,C,D,k,V);_=p.insert(()=>z,":first-child"),I.select("path:nth-child(2)").attr("style",d.join(";")),I.select("path").attr("style",f.join(";").replace("fill","stroke"))}else I=p.insert("rect",":first-child"),_=p.insert("rect",":first-child"),I.attr("class","swimlane-title").attr("style",h).attr("x",S).attr("y",C).attr("width",A).attr("height",k).attr("fill",a).attr("stroke",l),_.attr("class","swimlane-body").attr("style",h).attr("x",M).attr("y",C).attr("width",D).attr("height",k).attr("fill","none").attr("stroke",l);let P=S+A/2,B=t.y;y.attr("transform",`translate(${P}, ${B}) rotate(-90) translate(${-x.width/2}, ${-x.height/2})`)}else{let A=Math.max(0,R-C),M=Math.min(N,A),D=C+M,P=Math.max(0,w-D),B=t.x-T/2;if(t.look==="handDrawn"){let V=ut.svg(p),G=dt(t,{roughness:.7,fill:a,stroke:l,fillWeight:3,seed:i}),z=dt(t,{roughness:.7,fill:"none",stroke:l,seed:i}),W=V.rectangle(B,C,T,M,G);I=p.insert(()=>W,":first-child");let H=V.rectangle(B,D,T,P,z);_=p.insert(()=>H,":first-child"),I.select("path:nth-child(2)").attr("style",d.join(";")),I.select("path").attr("style",f.join(";").replace("fill","stroke"))}else I=p.insert("rect",":first-child"),_=p.insert("rect",":first-child"),I.attr("class","swimlane-title").attr("style",h).attr("x",B).attr("y",C).attr("width",T).attr("height",M).attr("fill",a).attr("stroke",l),_.attr("class","swimlane-body").attr("style",h).attr("x",B).attr("y",D).attr("width",T).attr("height",P).attr("fill","none").attr("stroke",l);let O=t.x-x.width/2,$=C+(M-x.height)/2;y.attr("transform",`translate(${O}, ${$})`)}if(Z.trace("Swimlane data ",t,JSON.stringify(t)),u){let A=y.select("span");A&&A.attr("style",u)}return t.offsetX=0,t.width=T,t.height=k,t.offsetY=x.height-b/2,t.intersect=function(A){return nu(t,A)},{cluster:p,labelBBox:x}},"swimlane")});var Vce,DQe,IQe,MQe,NQe,PQe,OQe,Wce,rf,q4,Wy=F(()=>{"use strict";Xt();ur();vt();Vy();$r();tr();Ls();_4();G4();km();Jt();Gce();Vce=o(async(e,t)=>{Z.info("Creating subgraph rect for ",t.id,t);let r=Ae(),{themeVariables:n,handDrawnSeed:i}=r,{clusterBkg:a,clusterBorder:s}=n,{labelStyles:l,nodeStyles:u,borderStyles:h,backgroundStyles:d}=ct(t),f=e.insert("g").attr("class","cluster "+t.cssClasses).attr("id",t.domId).attr("data-look",t.look),p=Gr(r),m=f.insert("g").attr("class","cluster-label "),g;t.labelType==="markdown"?g=await Pn(m,t.label,{style:t.labelStyle,useHtmlLabels:p,isNode:!0,width:t.width}):g=await sc(m,t.label,t.labelStyle||"",!1,!0);let y=g.getBBox();if(Gr(r)){let S=g.children[0],R=et(g);y=S.getBoundingClientRect(),R.attr("width",y.width),R.attr("height",y.height)}let v=t.width<=y.width+t.padding?y.width+t.padding:t.width;t.width<=y.width+t.padding?t.diff=(v-t.width)/2-t.padding:t.diff=-t.padding;let x=t.height,b=t.x-v/2,T=t.y-x/2;Z.trace("Data ",t,JSON.stringify(t));let k;if(t.look==="handDrawn"){let S=ut.svg(f),R=dt(t,{roughness:.7,fill:a,stroke:s,fillWeight:3,seed:i}),L=S.path(io(b,T,v,x,0),R);k=f.insert(()=>(Z.debug("Rough node insert CXC",L),L),":first-child"),k.select("path:nth-child(2)").attr("style",h.join(";")),k.select("path").attr("style",d.join(";").replace("fill","stroke"))}else k=f.insert("rect",":first-child"),k.attr("style",u).attr("rx",t.rx).attr("ry",t.ry).attr("x",b).attr("y",T).attr("width",v).attr("height",x);let{subGraphTitleTopMargin:C}=oc(r);if(m.attr("transform",`translate(${t.x-y.width/2}, ${t.y-t.height/2+C})`),l){let S=m.select("span");S&&S.attr("style",l)}let w=k.node().getBBox();return t.offsetX=0,t.width=w.width,t.height=w.height,t.offsetY=y.height-t.padding/2,t.intersect=function(S){return nu(t,S)},{cluster:f,labelBBox:y}},"rect"),DQe=o((e,t)=>{let r=e.insert("g").attr("class","note-cluster").attr("id",t.domId),n=r.insert("rect",":first-child"),i=0*t.padding,a=i/2;n.attr("rx",t.rx).attr("ry",t.ry).attr("x",t.x-t.width/2-a).attr("y",t.y-t.height/2-a).attr("width",t.width+i).attr("height",t.height+i).attr("fill","none");let s=n.node().getBBox();return t.width=s.width,t.height=s.height,t.intersect=function(l){return nu(t,l)},{cluster:r,labelBBox:{width:0,height:0}}},"noteGroup"),IQe=o(async(e,t)=>{let r=Ae(),{themeVariables:n,handDrawnSeed:i}=r,{altBackground:a,compositeBackground:s,compositeTitleBackground:l,nodeBorder:u}=n,h=e.insert("g").attr("class",t.cssClasses).attr("id",t.domId).attr("data-id",t.id).attr("data-look",t.look),d=h.insert("g",":first-child"),f=h.insert("g").attr("class","cluster-label"),p=h.append("rect"),m=await sc(f,t.label,t.labelStyle,void 0,!0),g=m.getBBox();if(Gr(r)){let L=m.children[0],N=et(m);g=L.getBoundingClientRect(),N.attr("width",g.width),N.attr("height",g.height)}let y=0*t.padding,v=y/2,x=(t.width<=g.width+t.padding?g.width+t.padding:t.width)+y;t.width<=g.width+t.padding?t.diff=(x-t.width)/2-t.padding:t.diff=-t.padding;let b=t.height+y,T=t.height+y-g.height-6,k=t.x-x/2,C=t.y-b/2;t.width=x;let w=t.y-t.height/2-v+g.height+2,S;if(t.look==="handDrawn"){let L=t.cssClasses.includes("statediagram-cluster-alt"),N=ut.svg(h),I=t.rx||t.ry?N.path(io(k,C,x,b,10),{roughness:.7,fill:l,fillStyle:"solid",stroke:u,seed:i}):N.rectangle(k,C,x,b,{seed:i});S=h.insert(()=>I,":first-child");let _=N.rectangle(k,w,x,T,{fill:L?a:s,fillStyle:L?"hachure":"solid",stroke:u,seed:i});S=h.insert(()=>I,":first-child"),p=h.insert(()=>_)}else S=d.insert("rect",":first-child"),S.attr("class","outer").attr("x",k).attr("y",C).attr("width",x).attr("height",b).attr("data-look",t.look),p.attr("class","inner").attr("x",k).attr("y",w).attr("width",x).attr("height",T);f.attr("transform",`translate(${t.x-g.width/2}, ${C+1-(Gr(r)?0:3)})`);let R=S.node().getBBox();return t.height=R.height,t.offsetX=0,t.offsetY=g.height-t.padding/2,t.labelBBox=g,t.intersect=function(L){return nu(t,L)},{cluster:h,labelBBox:g}},"roundedWithTitle"),MQe=o(async(e,t)=>{Z.info("Creating subgraph rect for ",t.id,t);let r=Ae(),{themeVariables:n,handDrawnSeed:i}=r,{clusterBkg:a,clusterBorder:s}=n,{labelStyles:l,nodeStyles:u,borderStyles:h,backgroundStyles:d}=ct(t),f=e.insert("g").attr("class","cluster "+t.cssClasses).attr("id",t.domId).attr("data-look",t.look),p=Gr(r),m=f.insert("g").attr("class","cluster-label "),g=await Pn(m,t.label,{style:t.labelStyle,useHtmlLabels:p,isNode:!0,width:t.width}),y=g.getBBox();if(Gr(r)){let S=g.children[0],R=et(g);y=S.getBoundingClientRect(),R.attr("width",y.width),R.attr("height",y.height)}let v=t.width<=y.width+t.padding?y.width+t.padding:t.width;t.width<=y.width+t.padding?t.diff=(v-t.width)/2-t.padding:t.diff=-t.padding;let x=t.height,b=t.x-v/2,T=t.y-x/2;Z.trace("Data ",t,JSON.stringify(t));let k;if(t.look==="handDrawn"){let S=ut.svg(f),R=dt(t,{roughness:.7,fill:a,stroke:s,fillWeight:4,seed:i}),L=S.path(io(b,T,v,x,t.rx),R);k=f.insert(()=>(Z.debug("Rough node insert CXC",L),L),":first-child"),k.select("path:nth-child(2)").attr("style",h.join(";")),k.select("path").attr("style",d.join(";").replace("fill","stroke"))}else k=f.insert("rect",":first-child"),k.attr("style",u).attr("rx",t.rx).attr("ry",t.ry).attr("x",b).attr("y",T).attr("width",v).attr("height",x);let{subGraphTitleTopMargin:C}=oc(r);if(m.attr("transform",`translate(${t.x-y.width/2}, ${t.y-t.height/2+C})`),l){let S=m.select("span");S&&S.attr("style",l)}let w=k.node().getBBox();return t.offsetX=0,t.width=w.width,t.height=w.height,t.offsetY=y.height-t.padding/2,t.intersect=function(S){return nu(t,S)},{cluster:f,labelBBox:y}},"kanbanSection"),NQe=o((e,t)=>{let r=Ae(),{themeVariables:n,handDrawnSeed:i}=r,{nodeBorder:a}=n,s=e.insert("g").attr("class",t.cssClasses).attr("id",t.domId).attr("data-look",t.look),l=s.insert("g",":first-child"),u=0*t.padding,h=t.width+u;t.diff=-t.padding;let d=t.height+u,f=t.x-h/2,p=t.y-d/2;t.width=h;let m;if(t.look==="handDrawn"){let v=ut.svg(s).rectangle(f,p,h,d,{fill:"lightgrey",roughness:.5,strokeLineDash:[5],stroke:a,seed:i});m=s.insert(()=>v,":first-child")}else{m=l.insert("rect",":first-child");let y="outer";t.look,y="divider",m.attr("class",y).attr("x",f).attr("y",p).attr("width",h).attr("height",d).attr("data-look",t.look)}let g=m.node().getBBox();return t.height=g.height,t.offsetX=0,t.offsetY=0,t.intersect=function(y){return nu(t,y)},{cluster:s,labelBBox:{}}},"divider"),PQe=Vce,OQe={rect:Vce,squareRect:PQe,roundedWithTitle:IQe,noteGroup:DQe,divider:NQe,kanbanSection:MQe,swimlane:zce},Wce=new Map,rf=o(async(e,t)=>{let r=t.shape||"rect",n=await OQe[r](e,t);return Wce.set(t.id,n),n},"insertCluster"),q4=o(()=>{Wce=new Map},"clear")});var ml,gO=F(()=>{"use strict";ml=o((e,t)=>{if(t)return"translate("+-e.width/2+", "+-e.height/2+")";let r=e.x??0,n=e.y??0;return"translate("+-(r+e.width/2)+", "+-(n+e.height/2)+")"},"computeLabelTransform")});function H4(e,t){if(e===void 0||t===void 0)return{angle:0,deltaX:0,deltaY:0};e=di(e),t=di(t);let[r,n]=[e.x,e.y],[i,a]=[t.x,t.y],s=i-r,l=a-n;return{angle:Math.atan(l/s),deltaX:s,deltaY:l}}var Yi,yO,di,U4,Y4=F(()=>{"use strict";Yi={aggregation:17.25,extension:17.25,composition:17.25,dependency:6,lollipop:13.5,arrow_point:4,arrow_barb:0,arrow_barb_neo:5.5},yO={arrow_point:4,arrow_cross:12.5,arrow_circle:12.5};o(H4,"calculateDeltaAndAngle");di=o(e=>Array.isArray(e)?{x:e[0],y:e[1]}:e,"pointTransformer"),U4=o(e=>({x:o(function(t,r,n){let i=0,a=di(n[0]).x<di(n[n.length-1]).x?"left":"right";if(r===0&&Object.hasOwn(Yi,e.arrowTypeStart)){let{angle:m,deltaX:g}=H4(n[0],n[1]);i=Yi[e.arrowTypeStart]*Math.cos(m)*(g>=0?1:-1)}else if(r===n.length-1&&Object.hasOwn(Yi,e.arrowTypeEnd)){let{angle:m,deltaX:g}=H4(n[n.length-1],n[n.length-2]);i=Yi[e.arrowTypeEnd]*Math.cos(m)*(g>=0?1:-1)}let s=Math.abs(di(t).x-di(n[n.length-1]).x),l=Math.abs(di(t).y-di(n[n.length-1]).y),u=Math.abs(di(t).x-di(n[0]).x),h=Math.abs(di(t).y-di(n[0]).y),d=Yi[e.arrowTypeStart],f=Yi[e.arrowTypeEnd],p=1;if(s<f&&s>0&&l<f){let m=f+p-s;m*=a==="right"?-1:1,i-=m}if(u<d&&u>0&&h<d){let m=d+p-u;m*=a==="right"?-1:1,i+=m}return di(t).x+i},"x"),y:o(function(t,r,n){let i=0,a=di(n[0]).y<di(n[n.length-1]).y?"down":"up";if(r===0&&Object.hasOwn(Yi,e.arrowTypeStart)){let{angle:m,deltaY:g}=H4(n[0],n[1]);i=Yi[e.arrowTypeStart]*Math.abs(Math.sin(m))*(g>=0?1:-1)}else if(r===n.length-1&&Object.hasOwn(Yi,e.arrowTypeEnd)){let{angle:m,deltaY:g}=H4(n[n.length-1],n[n.length-2]);i=Yi[e.arrowTypeEnd]*Math.abs(Math.sin(m))*(g>=0?1:-1)}let s=Math.abs(di(t).y-di(n[n.length-1]).y),l=Math.abs(di(t).x-di(n[n.length-1]).x),u=Math.abs(di(t).y-di(n[0]).y),h=Math.abs(di(t).x-di(n[0]).x),d=Yi[e.arrowTypeStart],f=Yi[e.arrowTypeEnd],p=1;if(s<f&&s>0&&l<f){let m=f+p-s;m*=a==="up"?-1:1,i-=m}if(u<d&&u>0&&h<d){let m=d+p-u;m*=a==="up"?-1:1,i+=m}return di(t).y+i},"y")}),"getLineFunctionsWithOffset")});var Hce,BQe,$Qe,qce,Uce=F(()=>{"use strict";vt();Hce=o((e,t,r,n,i,a=!1,s)=>{t.arrowTypeStart&&qce(e,"start",t.arrowTypeStart,r,n,i,a,s),t.arrowTypeEnd&&qce(e,"end",t.arrowTypeEnd,r,n,i,a,s)},"addEdgeMarkers"),BQe={arrow_cross:{type:"cross",fill:!1},arrow_point:{type:"point",fill:!0},arrow_barb:{type:"barb",fill:!0},arrow_barb_neo:{type:"barb",fill:!0},arrow_circle:{type:"circle",fill:!1},aggregation:{type:"aggregation",fill:!1},extension:{type:"extension",fill:!1},composition:{type:"composition",fill:!0},dependency:{type:"dependency",fill:!0},lollipop:{type:"lollipop",fill:!1},only_one:{type:"onlyOne",fill:!1},zero_or_one:{type:"zeroOrOne",fill:!1},one_or_more:{type:"oneOrMore",fill:!1},zero_or_more:{type:"zeroOrMore",fill:!1},requirement_arrow:{type:"requirement_arrow",fill:!1},requirement_contains:{type:"requirement_contains",fill:!1}},$Qe=["cross","point","circle","lollipop","aggregation","extension","composition","dependency","barb"],qce=o((e,t,r,n,i,a,s=!1,l)=>{let u=BQe[r],h=u&&$Qe.includes(u.type);if(!u){Z.warn(`Unknown arrow type: ${r}`);return}let d=u.type,m=`${i}_${a}-${d}${t==="start"?"Start":"End"}${s&&h?"-margin":""}`;if(l&&l.trim()!==""){let g=l.replace(/[^\dA-Za-z]/g,"_"),y=`${m}_${g}`;if(!document.getElementById(y)){let v=document.getElementById(m);if(v){let x=v.cloneNode(!0);x.id=y,x.querySelectorAll("path, circle, line").forEach(T=>{T.setAttribute("stroke",l),u.fill&&T.setAttribute("fill",l)}),v.parentNode?.appendChild(x)}}e.attr(`marker-${t}`,`url(${n}#${y})`)}else e.attr(`marker-${t}`,`url(${n}#${m})`)},"addEdgeMarker")});function j4(e,t){Gr(Ae())&&e&&(e.style.width=t.length*9+"px",e.style.height="12px")}function WQe(e){let t=[],r=[];for(let n=1;n<e.length-1;n++){let i=e[n-1],a=e[n],s=e[n+1];(i.x===a.x&&a.y===s.y&&Math.abs(a.x-s.x)>5&&Math.abs(a.y-i.y)>5||i.y===a.y&&a.x===s.x&&Math.abs(a.x-i.x)>5&&Math.abs(a.y-s.y)>5)&&(t.push(a),r.push(n))}return{cornerPoints:t,cornerPointPositions:r}}function UQe(e,t){if(e.length<2)return"";let r="",n=e.length,i=1e-5;for(let a=0;a<n;a++){let s=e[a],l=e[a-1],u=e[a+1];if(a===0)r+=`M${s.x},${s.y}`;else if(a===n-1)r+=`L${s.x},${s.y}`;else{let h=s.x-l.x,d=s.y-l.y,f=u.x-s.x,p=u.y-s.y,m=Math.hypot(h,d),g=Math.hypot(f,p);if(m<i||g<i){r+=`L${s.x},${s.y}`;continue}let y=h/m,v=d/m,x=f/g,b=p/g,T=y*x+v*b,k=Math.max(-1,Math.min(1,T)),C=Math.acos(k);if(C<i||Math.abs(Math.PI-C)<i){r+=`L${s.x},${s.y}`;continue}let w=Math.min(t/Math.sin(C/2),m/2,g/2),S=s.x-y*w,R=s.y-v*w,L=s.x+x*w,N=s.y+b*w;r+=`L${S},${R}`,r+=`Q${s.x},${s.y} ${L},${N}`}}return r}function Xce(e,t){if(!e||!t)return{angle:0,deltaX:0,deltaY:0};let r=t.x-e.x,n=t.y-e.y;return{angle:Math.atan2(n,r),deltaX:r,deltaY:n}}function YQe(e,t){let r=e.map(i=>({...i}));if(e.length>=2&&Yi[t.arrowTypeStart]){let i=Yi[t.arrowTypeStart],a=e[0],s=e[1],{angle:l}=Xce(a,s),u=i*Math.cos(l),h=i*Math.sin(l);r[0].x=a.x+u,r[0].y=a.y+h}let n=e.length;if(n>=2&&Yi[t.arrowTypeEnd]){let i=Yi[t.arrowTypeEnd],a=e[n-1],s=e[n-2],{angle:l}=Xce(s,a),u=i*Math.cos(l),h=i*Math.sin(l);r[n-1].x=a.x-u,r[n-1].y=a.y-h}return r}var FQe,qy,_i,X4,z2,Rm,K4,zQe,GQe,VQe,Yce,jce,qQe,HQe,Hy,G2=F(()=>{"use strict";Xt();ur();vt();Ls();gO();Qt();Y4();Vy();$r();tr();G4();Uce();Jt();FQe=o(e=>typeof e=="string"?e:Ae()?.flowchart?.curve,"resolveEdgeCurveType"),qy=new Map,_i=new Map,X4=o(()=>{qy.clear(),_i.clear()},"clear"),z2=o(e=>e?typeof e=="string"?e:e.reduce((t,r)=>t+";"+r,""):"","getLabelStyles"),Rm=o(async(e,t)=>{let r=Ae(),n=Gr(r),{labelStyles:i}=ct(t);t.labelStyle=i;let a=e.insert("g").attr("class","edgeLabel"),s=a.insert("g").attr("class","label").attr("data-id",t.id),l=t.labelType==="markdown",h=await Pn(e,t.label,{style:z2(t.labelStyle),useHtmlLabels:n,addSvgBackground:!0,isNode:!1,markdown:l,width:l?void 0:void 0},r);s.node().appendChild(h),Z.info("abc82",t,t.labelType);let d=h.getBBox(),f=d;if(n){let m=h.children[0],g=et(h);d=m.getBoundingClientRect(),f=d,g.attr("width",d.width),g.attr("height",d.height)}else{let m=et(h).select("text").node();m&&typeof m.getBBox=="function"&&(f=m.getBBox())}s.attr("transform",ml(f,n)),qy.set(t.id,a),t.width=d.width,t.height=d.height;let p;if(t.startLabelLeft){let m=e.insert("g").attr("class","edgeTerminals"),g=m.insert("g").attr("class","inner"),y=await sc(g,t.startLabelLeft,z2(t.labelStyle)||"",!1,!1);p=y;let v=y.getBBox();if(n){let x=y.children[0],b=et(y);v=x.getBoundingClientRect(),b.attr("width",v.width),b.attr("height",v.height)}g.attr("transform",ml(v,n)),_i.get(t.id)||_i.set(t.id,{}),_i.get(t.id).startLeft=m,j4(p,t.startLabelLeft)}if(t.startLabelRight){let m=e.insert("g").attr("class","edgeTerminals"),g=m.insert("g").attr("class","inner"),y=await sc(g,t.startLabelRight,z2(t.labelStyle)||"",!1,!1);p=y;let v=y.getBBox();if(n){let x=y.children[0],b=et(y);v=x.getBoundingClientRect(),b.attr("width",v.width),b.attr("height",v.height)}g.attr("transform",ml(v,n)),_i.get(t.id)||_i.set(t.id,{}),_i.get(t.id).startRight=m,j4(p,t.startLabelRight)}if(t.endLabelLeft){let m=e.insert("g").attr("class","edgeTerminals"),g=m.insert("g").attr("class","inner"),y=await sc(m,t.endLabelLeft,z2(t.labelStyle)||"",!1,!1);p=y;let v=y.getBBox();if(n){let x=y.children[0],b=et(y);v=x.getBoundingClientRect(),b.attr("width",v.width),b.attr("height",v.height)}g.attr("transform",ml(v,n)),_i.get(t.id)||_i.set(t.id,{}),_i.get(t.id).endLeft=m,j4(p,t.endLabelLeft)}if(t.endLabelRight){let m=e.insert("g").attr("class","edgeTerminals"),g=m.insert("g").attr("class","inner"),y=await sc(m,t.endLabelRight,z2(t.labelStyle)||"",!1,!1);p=y;let v=y.getBBox();if(n){let x=y.children[0],b=et(y);v=x.getBoundingClientRect(),b.attr("width",v.width),b.attr("height",v.height)}g.attr("transform",ml(v,n)),_i.get(t.id)||_i.set(t.id,{}),_i.get(t.id).endRight=m,j4(p,t.endLabelRight)}return h},"insertEdgeLabel");o(j4,"setTerminalWidth");K4=o((e,t)=>{Z.debug("Moving label abc88 ",e.id,e.label,qy.get(e.id),t);let r=t.updatedPath?t.updatedPath:t.originalPath,n=Ae(),{subGraphTitleTotalMargin:i}=oc(n);if(e.label){let a=qy.get(e.id),s=e.x,l=e.y;if(r){let u=Zt.calcLabelPosition(r);Z.debug("Moving label "+e.label+" from (",s,",",l,") to (",u.x,",",u.y,") abc88"),t.updatedPath&&(s=u.x,l=u.y)}a.attr("transform",`translate(${s}, ${l+i/2})`)}if(e.startLabelLeft){let a=_i.get(e.id).startLeft,s=e.x,l=e.y;if(r){let u=Zt.calcTerminalLabelPosition(e.arrowTypeStart?10:0,"start_left",r);s=u.x,l=u.y}a.attr("transform",`translate(${s}, ${l})`)}if(e.startLabelRight){let a=_i.get(e.id).startRight,s=e.x,l=e.y;if(r){let u=Zt.calcTerminalLabelPosition(e.arrowTypeStart?10:0,"start_right",r);s=u.x,l=u.y}a.attr("transform",`translate(${s}, ${l})`)}if(e.endLabelLeft){let a=_i.get(e.id).endLeft,s=e.x,l=e.y;if(r){let u=Zt.calcTerminalLabelPosition(e.arrowTypeEnd?10:0,"end_left",r);s=u.x,l=u.y}a.attr("transform",`translate(${s}, ${l})`)}if(e.endLabelRight){let a=_i.get(e.id).endRight,s=e.x,l=e.y;if(r){let u=Zt.calcTerminalLabelPosition(e.arrowTypeEnd?10:0,"end_right",r);s=u.x,l=u.y}a.attr("transform",`translate(${s}, ${l})`)}},"positionEdgeLabel"),zQe=o((e,t)=>{if(!e?.isLabelEdge||!e?.id?.endsWith("-to-label")||!Array.isArray(t)||t.length!==2)return t;let[r,n]=t,i=Math.abs(n.x-r.x),a=Math.abs(n.y-r.y);return i<.001||a<.001?t:a>=i?[r,{x:r.x,y:n.y},n]:[r,{x:n.x,y:r.y},n]},"orthogonalizeToLabelClippedPoints"),GQe=o((e,t)=>{let r=e.x,n=e.y,i=Math.abs(t.x-r),a=Math.abs(t.y-n),s=e.width/2,l=e.height/2;return i>=s||a>=l},"outsideNode"),VQe=o((e,t,r)=>{Z.debug(`intersection calc abc89:
   outsidePoint: ${JSON.stringify(t)}
   insidePoint : ${JSON.stringify(r)}
-  node        : x:${e.x} y:${e.y} w:${e.width} h:${e.height}`);let i=e.x,n=e.y,a=Math.abs(i-r.x),s=e.width/2,l=r.x<t.x?s-a:s+a,u=e.height/2,h=Math.abs(t.y-r.y),d=Math.abs(t.x-r.x);if(Math.abs(n-t.y)*s>Math.abs(i-t.x)*u){let f=r.y<t.y?t.y-u-n:n-u-t.y;l=d*f/h;let p={x:r.x<t.x?r.x+l:r.x-d+l,y:r.y<t.y?r.y+h-f:r.y-h+f};return l===0&&(p.x=t.x,p.y=t.y),d===0&&(p.x=t.x),h===0&&(p.y=t.y),Z.debug(`abc89 top/bottom calc, Q ${h}, q ${f}, R ${d}, r ${l}`,p),p}else{r.x<t.x?l=t.x-s-i:l=i-s-t.x;let f=h*l/d,p=r.x<t.x?r.x+d-l:r.x-d+l,m=r.y<t.y?r.y+f:r.y-f;return Z.debug(`sides calc abc89, Q ${h}, q ${f}, R ${d}, r ${l}`,{_x:p,_y:m}),l===0&&(p=t.x,m=t.y),d===0&&(p=t.x),h===0&&(m=t.y),{x:p,y:m}}},"intersection"),$ae=o((e,t)=>{Z.warn("abc88 cutPathAtIntersect",e,t);let r=[],i=e[0],n=!1;return e.forEach(a=>{if(Z.info("abc88 checking point",a,t),!Kqe(t,a)&&!n){let s=Zqe(t,i,a);Z.debug("abc88 inside",a,i,s),Z.debug("abc88 intersection",s,t);let l=!1;r.forEach(u=>{l=l||u.x===s.x&&u.y===s.y}),r.some(u=>u.x===s.x&&u.y===s.y)?Z.warn("abc88 no intersect",s,r):r.push(s),n=!0}else Z.warn("abc88 outside",a,i),i=a,n||r.push(a)}),Z.debug("returning points",r),r},"cutPathAtIntersect");o(Qqe,"extractCornerPoints");zae=o(function(e,t,r){let i=t.x-e.x,n=t.y-e.y,a=Math.sqrt(i*i+n*n),s=r/a;return{x:t.x-s*i,y:t.y-s*n}},"findAdjacentPoint"),Jqe=o(function(e){let{cornerPointPositions:t}=Qqe(e),r=[];for(let i=0;i<e.length;i++)if(t.includes(i)){let n=e[i-1],a=e[i+1],s=e[i],l=zae(n,s,5),u=zae(a,s,5),h=u.x-l.x,d=u.y-l.y;r.push(l);let f=Math.sqrt(2)*2,p={x:s.x,y:s.y};if(Math.abs(a.x-n.x)>10&&Math.abs(a.y-n.y)>=10){Z.debug("Corner point fixing",Math.abs(a.x-n.x),Math.abs(a.y-n.y));let m=5;s.x===l.x?p={x:h<0?l.x-m+f:l.x+m-f,y:d<0?l.y-f:l.y+f}:p={x:h<0?l.x-f:l.x+f,y:d<0?l.y-m+f:l.y+m-f}}else Z.debug("Corner point skipping fixing",Math.abs(a.x-n.x),Math.abs(a.y-n.y));r.push(p,u)}else r.push(e[i]);return r},"fixCorners"),eUe=o((e,t,r)=>{let i=e-t-r,n=2,a=2,s=n+a,l=Math.floor(i/s),u=Array(l).fill(`${n} ${a}`).join(" ");return`0 ${t} ${u} ${r}`},"generateDashArray"),K4=o(function(e,t,r,i,n,a,s,l=!1){if(!s)throw new Error(`insertEdge: missing diagramId for edge "${t.id}" \u2014 edge IDs require a diagram prefix for uniqueness`);let{handDrawnSeed:u}=ge(),h=t.points,d=!1,f=n;var p=a;let m=[];for(let B in t.cssCompiledStyles)Xx(B)||m.push(t.cssCompiledStyles[B]);Z.debug("UIO intersect check",t.points,p.x,f.x),p.intersect&&f.intersect&&!l&&(h=h.slice(1,t.points.length-1),h.unshift(f.intersect(h[0])),Z.debug("Last point UIO",t.start,"-->",t.end,h[h.length-1],p,p.intersect(h[h.length-1])),h.push(p.intersect(h[h.length-1])));let g=btoa(JSON.stringify(h));t.toCluster&&(Z.info("to cluster abc88",r.get(t.toCluster)),h=$ae(t.points,r.get(t.toCluster).node),d=!0),t.fromCluster&&(Z.debug("from cluster abc88",r.get(t.fromCluster),JSON.stringify(h,null,2)),h=$ae(h.reverse(),r.get(t.fromCluster).node).reverse(),d=!0);let y=h.filter(B=>!Number.isNaN(B.y)),v=Xqe(t.curve);v!=="rounded"&&(y=Jqe(y));let x=xc;switch(v){case"linear":x=xc;break;case"basis":x=Dl;break;case"cardinal":x=gx;break;case"bumpX":x=hx;break;case"bumpY":x=dx;break;case"catmullRom":x=xx;break;case"monotoneX":x=bx;break;case"monotoneY":x=Tx;break;case"natural":x=hg;break;case"step":x=dg;break;case"stepAfter":x=kx;break;case"stepBefore":x=Cx;break;case"rounded":x=xc;break;default:x=Dl}let{x:b,y:T}=U4(t),w=_l().x(b).y(T).curve(x),C;switch(t.thickness){case"normal":C="edge-thickness-normal";break;case"thick":C="edge-thickness-thick";break;case"invisible":C="edge-thickness-invisible";break;default:C="edge-thickness-normal"}switch(t.pattern){case"solid":C+=" edge-pattern-solid";break;case"dotted":C+=" edge-pattern-dotted";break;case"dashed":C+=" edge-pattern-dashed";break;default:C+=" edge-pattern-solid"}let k,E=v==="rounded"?tUe(rUe(y,t),5):w(y),A=Array.isArray(t.style)?t.style:[t.style],N=A.find(B=>B?.startsWith("stroke:")),P="";t.animate&&(P="edge-animation-fast"),t.animation&&(P="edge-animation-"+t.animation);let I=!1;if(t.look==="handDrawn"){let B=ut.svg(e);Object.assign([],y);let O=B.path(E,{roughness:.3,seed:u});C+=" transition",k=Je(O).select("path").attr("id",`${s}-${t.id}`).attr("class"," "+C+(t.classes?" "+t.classes:"")+(P?" "+P:"")).attr("style",A?A.reduce((G,F)=>G+";"+F,""):"");let $=k.attr("d");k.attr("d",$),e.node().appendChild(k.node())}else{let B=m.join(";"),O=A?A.reduce((j,U)=>j+U+";",""):"",$=(B?B+";"+O+";":O)+";"+(A?A.reduce((j,U)=>j+";"+U,""):"");k=e.append("path").attr("d",E).attr("id",`${s}-${t.id}`).attr("class"," "+C+(t.classes?" "+t.classes:"")+(P?" "+P:"")).attr("style",$),N=$.match(/stroke:([^;]+)/)?.[1],I=t.animate===!0||!!t.animation||B.includes("animation");let G=k.node(),F=typeof G.getTotalLength=="function"?G.getTotalLength():0,V=PN[t.arrowTypeStart]||0,H=PN[t.arrowTypeEnd]||0;if(t.look==="neo"&&!I){let U=`stroke-dasharray: ${t.pattern==="dotted"||t.pattern==="dashed"?eUe(F,V,H):`0 ${V} ${F-V-H} ${H}`}; stroke-dashoffset: 0;`;k.attr("style",U+k.attr("style"))}}k.attr("data-edge",!0),k.attr("data-et","edge"),k.attr("data-id",t.id),k.attr("data-points",g),k.attr("data-look",ii(t.look)),t.showPoints&&y.forEach(B=>{e.append("circle").style("stroke","red").style("fill","red").attr("r",1).attr("cx",B.x).attr("cy",B.y)});let D="";(ge().flowchart.arrowMarkerAbsolute||ge().state.arrowMarkerAbsolute)&&(D=window.location.protocol+"//"+window.location.host+window.location.pathname+window.location.search,D=D.replace(/\(/g,"\\(").replace(/\)/g,"\\)")),Z.info("arrowTypeStart",t.arrowTypeStart),Z.info("arrowTypeEnd",t.arrowTypeEnd);let _=!I&&t?.look==="neo";Bae(k,t,D,s,i,_,N);let R=Math.floor(h.length/2),M=h[R];Zt.isLabelCoordinateInPath(M,k.attr("d"))||(d=!0);let L={};return d&&(L.updatedPath=h),L.originalPath=t.points,L},"insertEdge");o(tUe,"generateRoundedPath");o(Gae,"calculateDeltaAndAngle");o(rUe,"applyMarkerOffsetsToPoints")});var iUe,nUe,aUe,sUe,oUe,lUe,cUe,uUe,hUe,dUe,fUe,pUe,mUe,gUe,yUe,vUe,xUe,bUe,TUe,CUe,kUe,wUe,SUe,EUe,Z4,$N=z(()=>{"use strict";St();br();iUe=o((e,t,r,i)=>{t.forEach(n=>{EUe[n](e,r,i)})},"insertMarkers"),nUe=o((e,t,r)=>{Z.trace("Making markers for ",r),e.append("defs").append("marker").attr("id",r+"_"+t+"-extensionStart").attr("class","marker extension "+t).attr("refX",18).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").attr("markerUnits","userSpaceOnUse").append("path").attr("d","M 1,7 L18,13 V 1 Z"),e.append("defs").append("marker").attr("id",r+"_"+t+"-extensionEnd").attr("class","marker extension "+t).attr("refX",1).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 1,1 V 13 L18,7 Z"),e.append("marker").attr("id",r+"_"+t+"-extensionStart-margin").attr("class","marker extension "+t).attr("refX",18).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").attr("markerUnits","userSpaceOnUse").attr("viewBox","0 0 20 14").append("polygon").attr("points","10,7 18,13 18,1").style("stroke-width",2).style("stroke-dasharray","0"),e.append("defs").append("marker").attr("id",r+"_"+t+"-extensionEnd-margin").attr("class","marker extension "+t).attr("refX",9).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").attr("markerUnits","userSpaceOnUse").attr("viewBox","0 0 20 14").append("polygon").attr("points","10,1 10,13 18,7").style("stroke-width",2).style("stroke-dasharray","0")},"extension"),aUe=o((e,t,r)=>{e.append("defs").append("marker").attr("id",r+"_"+t+"-compositionStart").attr("class","marker composition "+t).attr("refX",18).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L1,7 L9,1 Z"),e.append("defs").append("marker").attr("id",r+"_"+t+"-compositionEnd").attr("class","marker composition "+t).attr("refX",1).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L1,7 L9,1 Z"),e.append("defs").append("marker").attr("id",r+"_"+t+"-compositionStart-margin").attr("class","marker composition "+t).attr("refX",15).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").attr("markerUnits","userSpaceOnUse").append("path").style("stroke-width",0).attr("viewBox","0 0 15 15").attr("d","M 18,7 L9,13 L1,7 L9,1 Z"),e.append("defs").append("marker").attr("id",r+"_"+t+"-compositionEnd-margin").attr("class","marker composition "+t).attr("refX",3.5).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").attr("markerUnits","userSpaceOnUse").append("path").style("stroke-width",0).attr("d","M 18,7 L9,13 L1,7 L9,1 Z")},"composition"),sUe=o((e,t,r)=>{e.append("defs").append("marker").attr("id",r+"_"+t+"-aggregationStart").attr("class","marker aggregation "+t).attr("refX",18).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L1,7 L9,1 Z"),e.append("defs").append("marker").attr("id",r+"_"+t+"-aggregationEnd").attr("class","marker aggregation "+t).attr("refX",1).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L1,7 L9,1 Z"),e.append("defs").append("marker").attr("id",r+"_"+t+"-aggregationStart-margin").attr("class","marker aggregation "+t).attr("refX",15).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").attr("markerUnits","userSpaceOnUse").append("path").style("stroke-width",2).attr("d","M 18,7 L9,13 L1,7 L9,1 Z"),e.append("defs").append("marker").attr("id",r+"_"+t+"-aggregationEnd-margin").attr("class","marker aggregation "+t).attr("refX",1).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").attr("markerUnits","userSpaceOnUse").append("path").style("stroke-width",2).attr("d","M 18,7 L9,13 L1,7 L9,1 Z")},"aggregation"),oUe=o((e,t,r)=>{e.append("defs").append("marker").attr("id",r+"_"+t+"-dependencyStart").attr("class","marker dependency "+t).attr("refX",6).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("path").attr("d","M 5,7 L9,13 L1,7 L9,1 Z"),e.append("defs").append("marker").attr("id",r+"_"+t+"-dependencyEnd").attr("class","marker dependency "+t).attr("refX",13).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L14,7 L9,1 Z"),e.append("defs").append("marker").attr("id",r+"_"+t+"-dependencyStart-margin").attr("class","marker dependency "+t).attr("refX",4).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").attr("markerUnits","userSpaceOnUse").append("path").style("stroke-width",0).attr("d","M 5,7 L9,13 L1,7 L9,1 Z"),e.append("defs").append("marker").attr("id",r+"_"+t+"-dependencyEnd-margin").attr("class","marker dependency "+t).attr("refX",16).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").attr("markerUnits","userSpaceOnUse").append("path").style("stroke-width",0).attr("d","M 18,7 L9,13 L14,7 L9,1 Z")},"dependency"),lUe=o((e,t,r)=>{e.append("defs").append("marker").attr("id",r+"_"+t+"-lollipopStart").attr("class","marker lollipop "+t).attr("refX",13).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("circle").attr("fill","transparent").attr("cx",7).attr("cy",7).attr("r",6),e.append("defs").append("marker").attr("id",r+"_"+t+"-lollipopEnd").attr("class","marker lollipop "+t).attr("refX",1).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("circle").attr("fill","transparent").attr("cx",7).attr("cy",7).attr("r",6),e.append("defs").append("marker").attr("id",r+"_"+t+"-lollipopStart-margin").attr("class","marker lollipop "+t).attr("refX",13).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").attr("markerUnits","userSpaceOnUse").append("circle").attr("fill","transparent").attr("cx",7).attr("cy",7).attr("r",6).attr("stroke-width",2),e.append("defs").append("marker").attr("id",r+"_"+t+"-lollipopEnd-margin").attr("class","marker lollipop "+t).attr("refX",1).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").attr("markerUnits","userSpaceOnUse").append("circle").attr("fill","transparent").attr("cx",7).attr("cy",7).attr("r",6).attr("stroke-width",2)},"lollipop"),cUe=o((e,t,r)=>{e.append("marker").attr("id",r+"_"+t+"-pointEnd").attr("class","marker "+t).attr("viewBox","0 0 10 10").attr("refX",5).attr("refY",5).attr("markerUnits","userSpaceOnUse").attr("markerWidth",8).attr("markerHeight",8).attr("orient","auto").append("path").attr("d","M 0 0 L 10 5 L 0 10 z").attr("class","arrowMarkerPath").style("stroke-width",1).style("stroke-dasharray","1,0"),e.append("marker").attr("id",r+"_"+t+"-pointStart").attr("class","marker "+t).attr("viewBox","0 0 10 10").attr("refX",4.5).attr("refY",5).attr("markerUnits","userSpaceOnUse").attr("markerWidth",8).attr("markerHeight",8).attr("orient","auto").append("path").attr("d","M 0 5 L 10 10 L 10 0 z").attr("class","arrowMarkerPath").style("stroke-width",1).style("stroke-dasharray","1,0"),e.append("marker").attr("id",r+"_"+t+"-pointEnd-margin").attr("class","marker "+t).attr("viewBox","0 0 11.5 14").attr("refX",11.5).attr("refY",7).attr("markerUnits","userSpaceOnUse").attr("markerWidth",10.5).attr("markerHeight",14).attr("orient","auto").append("path").attr("d","M 0 0 L 11.5 7 L 0 14 z").attr("class","arrowMarkerPath").style("stroke-width",0).style("stroke-dasharray","1,0"),e.append("marker").attr("id",r+"_"+t+"-pointStart-margin").attr("class","marker "+t).attr("viewBox","0 0 11.5 14").attr("refX",1).attr("refY",7).attr("markerUnits","userSpaceOnUse").attr("markerWidth",11.5).attr("markerHeight",14).attr("orient","auto").append("polygon").attr("points","0,7 11.5,14 11.5,0").attr("class","arrowMarkerPath").style("stroke-width",0).style("stroke-dasharray","1,0")},"point"),uUe=o((e,t,r)=>{e.append("marker").attr("id",r+"_"+t+"-circleEnd").attr("class","marker "+t).attr("viewBox","0 0 10 10").attr("refX",11).attr("refY",5).attr("markerUnits","userSpaceOnUse").attr("markerWidth",11).attr("markerHeight",11).attr("orient","auto").append("circle").attr("cx","5").attr("cy","5").attr("r","5").attr("class","arrowMarkerPath").style("stroke-width",1).style("stroke-dasharray","1,0"),e.append("marker").attr("id",r+"_"+t+"-circleStart").attr("class","marker "+t).attr("viewBox","0 0 10 10").attr("refX",-1).attr("refY",5).attr("markerUnits","userSpaceOnUse").attr("markerWidth",11).attr("markerHeight",11).attr("orient","auto").append("circle").attr("cx","5").attr("cy","5").attr("r","5").attr("class","arrowMarkerPath").style("stroke-width",1).style("stroke-dasharray","1,0"),e.append("marker").attr("id",r+"_"+t+"-circleEnd-margin").attr("class","marker "+t).attr("viewBox","0 0 10 10").attr("refY",5).attr("refX",12.25).attr("markerUnits","userSpaceOnUse").attr("markerWidth",14).attr("markerHeight",14).attr("orient","auto").append("circle").attr("cx","5").attr("cy","5").attr("r","5").attr("class","arrowMarkerPath").style("stroke-width",0).style("stroke-dasharray","1,0"),e.append("marker").attr("id",r+"_"+t+"-circleStart-margin").attr("class","marker "+t).attr("viewBox","0 0 10 10").attr("refX",-2).attr("refY",5).attr("markerUnits","userSpaceOnUse").attr("markerWidth",14).attr("markerHeight",14).attr("orient","auto").append("circle").attr("cx","5").attr("cy","5").attr("r","5").attr("class","arrowMarkerPath").style("stroke-width",0).style("stroke-dasharray","1,0")},"circle"),hUe=o((e,t,r)=>{e.append("marker").attr("id",r+"_"+t+"-crossEnd").attr("class","marker cross "+t).attr("viewBox","0 0 11 11").attr("refX",12).attr("refY",5.2).attr("markerUnits","userSpaceOnUse").attr("markerWidth",11).attr("markerHeight",11).attr("orient","auto").append("path").attr("d","M 1,1 l 9,9 M 10,1 l -9,9").attr("class","arrowMarkerPath").style("stroke-width",2).style("stroke-dasharray","1,0"),e.append("marker").attr("id",r+"_"+t+"-crossStart").attr("class","marker cross "+t).attr("viewBox","0 0 11 11").attr("refX",-1).attr("refY",5.2).attr("markerUnits","userSpaceOnUse").attr("markerWidth",11).attr("markerHeight",11).attr("orient","auto").append("path").attr("d","M 1,1 l 9,9 M 10,1 l -9,9").attr("class","arrowMarkerPath").style("stroke-width",2).style("stroke-dasharray","1,0"),e.append("marker").attr("id",r+"_"+t+"-crossEnd-margin").attr("class","marker cross "+t).attr("viewBox","0 0 15 15").attr("refX",17.7).attr("refY",7.5).attr("markerUnits","userSpaceOnUse").attr("markerWidth",12).attr("markerHeight",12).attr("orient","auto").append("path").attr("d","M 1,1 L 14,14 M 1,14 L 14,1").attr("class","arrowMarkerPath").style("stroke-width",2.5),e.append("marker").attr("id",r+"_"+t+"-crossStart-margin").attr("class","marker cross "+t).attr("viewBox","0 0 15 15").attr("refX",-3.5).attr("refY",7.5).attr("markerUnits","userSpaceOnUse").attr("markerWidth",12).attr("markerHeight",12).attr("orient","auto").append("path").attr("d","M 1,1 L 14,14 M 1,14 L 14,1").attr("class","arrowMarkerPath").style("stroke-width",2.5).style("stroke-dasharray","1,0")},"cross"),dUe=o((e,t,r)=>{e.append("defs").append("marker").attr("id",r+"_"+t+"-barbEnd").attr("refX",19).attr("refY",7).attr("markerWidth",20).attr("markerHeight",14).attr("markerUnits","userSpaceOnUse").attr("orient","auto").append("path").attr("d","M 19,7 L9,13 L14,7 L9,1 Z")},"barb"),fUe=o((e,t,r)=>{let i=Nt(),{themeVariables:n}=i,{transitionColor:a}=n;e.append("defs").append("marker").attr("id",r+"_"+t+"-barbEnd").attr("refX",19).attr("refY",7).attr("markerWidth",20).attr("markerHeight",14).attr("markerUnits","strokeWidth").attr("orient","auto").append("path").attr("d","M 19,7 L11,14 L13,7 L11,0 Z"),e.append("defs").append("marker").attr("id",r+"_"+t+"-barbEnd-margin").attr("refX",17).attr("refY",7).attr("markerWidth",20).attr("markerHeight",14).attr("markerUnits","userSpaceOnUse").attr("orient","auto").append("path").attr("d","M 19,7 L11,14 L13,7 L11,0 Z").attr("fill",`${a}`)},"barbNeo"),pUe=o((e,t,r)=>{e.append("defs").append("marker").attr("id",r+"_"+t+"-onlyOneStart").attr("class","marker onlyOne "+t).attr("refX",0).attr("refY",9).attr("markerWidth",18).attr("markerHeight",18).attr("orient","auto").append("path").attr("d","M9,0 L9,18 M15,0 L15,18"),e.append("defs").append("marker").attr("id",r+"_"+t+"-onlyOneEnd").attr("class","marker onlyOne "+t).attr("refX",18).attr("refY",9).attr("markerWidth",18).attr("markerHeight",18).attr("orient","auto").append("path").attr("d","M3,0 L3,18 M9,0 L9,18")},"only_one"),mUe=o((e,t,r)=>{let i=e.append("defs").append("marker").attr("id",r+"_"+t+"-zeroOrOneStart").attr("class","marker zeroOrOne "+t).attr("refX",0).attr("refY",9).attr("markerWidth",30).attr("markerHeight",18).attr("orient","auto");i.append("circle").attr("fill","white").attr("cx",21).attr("cy",9).attr("r",6),i.append("path").attr("d","M9,0 L9,18");let n=e.append("defs").append("marker").attr("id",r+"_"+t+"-zeroOrOneEnd").attr("class","marker zeroOrOne "+t).attr("refX",30).attr("refY",9).attr("markerWidth",30).attr("markerHeight",18).attr("orient","auto");n.append("circle").attr("fill","white").attr("cx",9).attr("cy",9).attr("r",6),n.append("path").attr("d","M21,0 L21,18")},"zero_or_one"),gUe=o((e,t,r)=>{e.append("defs").append("marker").attr("id",r+"_"+t+"-oneOrMoreStart").attr("class","marker oneOrMore "+t).attr("refX",18).attr("refY",18).attr("markerWidth",45).attr("markerHeight",36).attr("orient","auto").append("path").attr("d","M0,18 Q 18,0 36,18 Q 18,36 0,18 M42,9 L42,27"),e.append("defs").append("marker").attr("id",r+"_"+t+"-oneOrMoreEnd").attr("class","marker oneOrMore "+t).attr("refX",27).attr("refY",18).attr("markerWidth",45).attr("markerHeight",36).attr("orient","auto").append("path").attr("d","M3,9 L3,27 M9,18 Q27,0 45,18 Q27,36 9,18")},"one_or_more"),yUe=o((e,t,r)=>{let i=e.append("defs").append("marker").attr("id",r+"_"+t+"-zeroOrMoreStart").attr("class","marker zeroOrMore "+t).attr("refX",18).attr("refY",18).attr("markerWidth",57).attr("markerHeight",36).attr("orient","auto");i.append("circle").attr("fill","white").attr("cx",48).attr("cy",18).attr("r",6),i.append("path").attr("d","M0,18 Q18,0 36,18 Q18,36 0,18");let n=e.append("defs").append("marker").attr("id",r+"_"+t+"-zeroOrMoreEnd").attr("class","marker zeroOrMore "+t).attr("refX",39).attr("refY",18).attr("markerWidth",57).attr("markerHeight",36).attr("orient","auto");n.append("circle").attr("fill","white").attr("cx",9).attr("cy",18).attr("r",6),n.append("path").attr("d","M21,18 Q39,0 57,18 Q39,36 21,18")},"zero_or_more"),vUe=o((e,t,r)=>{let i=Nt(),{themeVariables:n}=i,{strokeWidth:a}=n;e.append("defs").append("marker").attr("id",r+"_"+t+"-onlyOneStart").attr("class","marker onlyOne "+t).attr("refX",0).attr("refY",9).attr("markerWidth",18).attr("markerHeight",18).attr("orient","auto").attr("markerUnits","userSpaceOnUse").append("path").attr("d","M9,0 L9,18 M15,0 L15,18").attr("stroke-width",`${a}`),e.append("defs").append("marker").attr("id",r+"_"+t+"-onlyOneEnd").attr("class","marker onlyOne "+t).attr("refX",18).attr("refY",9).attr("markerWidth",18).attr("markerHeight",18).attr("orient","auto").attr("markerUnits","userSpaceOnUse").append("path").attr("d","M3,0 L3,18 M9,0 L9,18").attr("stroke-width",`${a}`)},"only_one_neo"),xUe=o((e,t,r)=>{let i=Nt(),{themeVariables:n}=i,{strokeWidth:a,mainBkg:s}=n,l=e.append("defs").append("marker").attr("id",r+"_"+t+"-zeroOrOneStart").attr("class","marker zeroOrOne "+t).attr("refX",0).attr("refY",9).attr("markerWidth",30).attr("markerHeight",18).attr("orient","auto").attr("markerUnits","userSpaceOnUse");l.append("circle").attr("fill",s??"white").attr("cx",21).attr("cy",9).attr("stroke-width",`${a}`).attr("r",6),l.append("path").attr("d","M9,0 L9,18").attr("stroke-width",`${a}`);let u=e.append("defs").append("marker").attr("id",r+"_"+t+"-zeroOrOneEnd").attr("class","marker zeroOrOne "+t).attr("refX",30).attr("refY",9).attr("markerWidth",30).attr("markerHeight",18).attr("markerUnits","userSpaceOnUse").attr("orient","auto");u.append("circle").attr("fill",s??"white").attr("cx",9).attr("cy",9).attr("stroke-width",`${a}`).attr("r",6),u.append("path").attr("d","M21,0 L21,18").attr("stroke-width",`${a}`)},"zero_or_one_neo"),bUe=o((e,t,r)=>{let i=Nt(),{themeVariables:n}=i,{strokeWidth:a}=n;e.append("defs").append("marker").attr("id",r+"_"+t+"-oneOrMoreStart").attr("class","marker oneOrMore "+t).attr("refX",18).attr("refY",18).attr("markerWidth",45).attr("markerHeight",36).attr("orient","auto").attr("markerUnits","userSpaceOnUse").append("path").attr("d","M0,18 Q 18,0 36,18 Q 18,36 0,18 M42,9 L42,27").attr("stroke-width",`${a}`),e.append("defs").append("marker").attr("id",r+"_"+t+"-oneOrMoreEnd").attr("class","marker oneOrMore "+t).attr("refX",27).attr("refY",18).attr("markerWidth",45).attr("markerHeight",36).attr("markerUnits","userSpaceOnUse").attr("orient","auto").append("path").attr("d","M3,9 L3,27 M9,18 Q27,0 45,18 Q27,36 9,18").attr("stroke-width",`${a}`)},"one_or_more_neo"),TUe=o((e,t,r)=>{let i=Nt(),{themeVariables:n}=i,{strokeWidth:a,mainBkg:s}=n,l=e.append("defs").append("marker").attr("id",r+"_"+t+"-zeroOrMoreStart").attr("class","marker zeroOrMore "+t).attr("refX",18).attr("refY",18).attr("markerWidth",57).attr("markerHeight",36).attr("markerUnits","userSpaceOnUse").attr("orient","auto");l.append("circle").attr("fill",s??"white").attr("cx",45.5).attr("cy",18).attr("r",6).attr("stroke-width",`${a}`),l.append("path").attr("d","M0,18 Q18,0 36,18 Q18,36 0,18").attr("stroke-width",`${a}`);let u=e.append("defs").append("marker").attr("id",r+"_"+t+"-zeroOrMoreEnd").attr("class","marker zeroOrMore "+t).attr("refX",39).attr("refY",18).attr("markerWidth",57).attr("markerHeight",36).attr("orient","auto").attr("markerUnits","userSpaceOnUse");u.append("circle").attr("fill",s??"white").attr("cx",11).attr("cy",18).attr("r",6).attr("stroke-width",`${a}`),u.append("path").attr("d","M21,18 Q39,0 57,18 Q39,36 21,18").attr("stroke-width",`${a}`)},"zero_or_more_neo"),CUe=o((e,t,r)=>{e.append("defs").append("marker").attr("id",r+"_"+t+"-requirement_arrowEnd").attr("refX",20).attr("refY",10).attr("markerWidth",20).attr("markerHeight",20).attr("orient","auto").append("path").attr("d",`M0,0
+  node        : x:${e.x} y:${e.y} w:${e.width} h:${e.height}`);let n=e.x,i=e.y,a=Math.abs(n-r.x),s=e.width/2,l=r.x<t.x?s-a:s+a,u=e.height/2,h=Math.abs(t.y-r.y),d=Math.abs(t.x-r.x);if(Math.abs(i-t.y)*s>Math.abs(n-t.x)*u){let f=r.y<t.y?t.y-u-i:i-u-t.y;l=d*f/h;let p={x:r.x<t.x?r.x+l:r.x-d+l,y:r.y<t.y?r.y+h-f:r.y-h+f};return l===0&&(p.x=t.x,p.y=t.y),d===0&&(p.x=t.x),h===0&&(p.y=t.y),Z.debug(`abc89 top/bottom calc, Q ${h}, q ${f}, R ${d}, r ${l}`,p),p}else{r.x<t.x?l=t.x-s-n:l=n-s-t.x;let f=h*l/d,p=r.x<t.x?r.x+d-l:r.x-d+l,m=r.y<t.y?r.y+f:r.y-f;return Z.debug(`sides calc abc89, Q ${h}, q ${f}, R ${d}, r ${l}`,{_x:p,_y:m}),l===0&&(p=t.x,m=t.y),d===0&&(p=t.x),h===0&&(m=t.y),{x:p,y:m}}},"intersection"),Yce=o((e,t)=>{Z.warn("abc88 cutPathAtIntersect",e,t);let r=[],n=e[0],i=!1;return e.forEach(a=>{if(Z.info("abc88 checking point",a,t),!GQe(t,a)&&!i){let s=VQe(t,n,a);Z.debug("abc88 inside",a,n,s),Z.debug("abc88 intersection",s,t);let l=!1;r.forEach(u=>{l=l||u.x===s.x&&u.y===s.y}),r.some(u=>u.x===s.x&&u.y===s.y)?Z.warn("abc88 no intersect",s,r):r.push(s),i=!0}else Z.warn("abc88 outside",a,n),n=a,i||r.push(a)}),Z.debug("returning points",r),r},"cutPathAtIntersect");o(WQe,"extractCornerPoints");jce=o(function(e,t,r){let n=t.x-e.x,i=t.y-e.y,a=Math.sqrt(n*n+i*i),s=r/a;return{x:t.x-s*n,y:t.y-s*i}},"findAdjacentPoint"),qQe=o(function(e){let{cornerPointPositions:t}=WQe(e),r=[];for(let n=0;n<e.length;n++)if(t.includes(n)){let i=e[n-1],a=e[n+1],s=e[n],l=jce(i,s,5),u=jce(a,s,5),h=u.x-l.x,d=u.y-l.y;r.push(l);let f=Math.sqrt(2)*2,p={x:s.x,y:s.y};if(Math.abs(a.x-i.x)>10&&Math.abs(a.y-i.y)>=10){Z.debug("Corner point fixing",Math.abs(a.x-i.x),Math.abs(a.y-i.y));let m=5;s.x===l.x?p={x:h<0?l.x-m+f:l.x+m-f,y:d<0?l.y-f:l.y+f}:p={x:h<0?l.x-f:l.x+f,y:d<0?l.y-m+f:l.y+m-f}}else Z.debug("Corner point skipping fixing",Math.abs(a.x-i.x),Math.abs(a.y-i.y));r.push(p,u)}else r.push(e[n]);return r},"fixCorners"),HQe=o((e,t,r)=>{let n=e-t-r,i=2,a=2,s=i+a,l=Math.floor(n/s),u=Array(l).fill(`${i} ${a}`).join(" ");return`0 ${t} ${u} ${r}`},"generateDashArray"),Hy=o(function(e,t,r,n,i,a,s,l=!1){if(!s)throw new Error(`insertEdge: missing diagramId for edge "${t.id}" \u2014 edge IDs require a diagram prefix for uniqueness`);let{handDrawnSeed:u,layout:h}=Ae(),d=t.points,f=!1,p=i;var m=a;let g=[];for(let O in t.cssCompiledStyles)M2(O)||g.push(t.cssCompiledStyles[O]);if(h==="swimlane"){if(m.intersect&&p.intersect&&Array.isArray(d)&&d.length>=2)if(d.length===2)d=[p.intersect(d[0]),m.intersect(d[1])];else{let O=d.slice(1,-1),$=O[0],V=O[O.length-1],G=.5,z=Math.abs(d[d.length-1].x-V.x)<G&&Math.abs(d[d.length-1].y-V.y)<G,W=p.intersect($),H=z?V:m.intersect(V),j=Math.abs(H.x-V.x)<G&&Math.abs(H.y-V.y)<G,U=Math.abs(W.x-$.x)<G&&Math.abs(W.y-$.y)<G?[]:[W],oe=j?[]:[H];d=[...U,...O,...oe]}d=zQe(t,d)}else m.intersect&&p.intersect&&!l&&(d=d.slice(1,t.points.length-1),d.unshift(p.intersect(d[0])),d.push(m.intersect(d[d.length-1])));let y=btoa(JSON.stringify(d));t.toCluster&&(Z.info("to cluster abc88",r.get(t.toCluster)),d=Yce(t.points,r.get(t.toCluster).node),f=!0),t.fromCluster&&(Z.debug("from cluster abc88",r.get(t.fromCluster),JSON.stringify(d,null,2)),d=Yce(d.reverse(),r.get(t.fromCluster).node).reverse(),f=!0);let v=d.filter(O=>!Number.isNaN(O.y)),x=FQe(t.curve);x!=="rounded"&&(v=qQe(v));let b=Jc;switch(x){case"linear":b=Jc;break;case"basis":b=rc;break;case"cardinal":b=e2;break;case"bumpX":b=Xb;break;case"bumpY":b=Kb;break;case"catmullRom":b=n2;break;case"monotoneX":b=i2;break;case"monotoneY":b=a2;break;case"natural":b=Ry;break;case"step":b=_y;break;case"stepAfter":b=o2;break;case"stepBefore":b=s2;break;case"rounded":b=Jc;break;default:b=rc}let{x:T,y:k}=U4(t),C=tc().x(T).y(k).curve(b),w;switch(t.thickness){case"normal":w="edge-thickness-normal";break;case"thick":w="edge-thickness-thick";break;case"invisible":w="edge-thickness-invisible";break;default:w="edge-thickness-normal"}switch(t.pattern){case"solid":w+=" edge-pattern-solid";break;case"dotted":w+=" edge-pattern-dotted";break;case"dashed":w+=" edge-pattern-dashed";break;default:w+=" edge-pattern-solid"}let S,R=x==="rounded"?UQe(YQe(v,t),5):C(v),L=Array.isArray(t.style)?t.style:[t.style],N=L.find(O=>O?.startsWith("stroke:")),I="";t.animate&&(I="edge-animation-fast"),t.animation&&(I="edge-animation-"+t.animation);let _=!1;if(t.look==="handDrawn"){let O=ut.svg(e);Object.assign([],v);let $=O.path(R,{roughness:.3,seed:u});w+=" transition",S=et($).select("path").attr("id",`${s}-${t.id}`).attr("class"," "+w+(t.classes?" "+t.classes:"")+(I?" "+I:"")).attr("style",L?L.reduce((G,z)=>G+";"+z,""):"");let V=S.attr("d");S.attr("d",V),e.node().appendChild(S.node())}else{let O=g.join(";"),$=L?L.reduce((j,Q)=>j+Q+";",""):"",V=(O?O+";"+$+";":$)+";"+(L?L.reduce((j,Q)=>j+";"+Q,""):"");S=e.append("path").attr("d",R).attr("id",`${s}-${t.id}`).attr("class"," "+w+(t.classes?" "+t.classes:"")+(I?" "+I:"")).attr("style",V),N=V.match(/stroke:([^;]+)/)?.[1],_=t.animate===!0||!!t.animation||O.includes("animation");let G=S.node(),z=typeof G.getTotalLength=="function"?G.getTotalLength():0,W=yO[t.arrowTypeStart]||0,H=yO[t.arrowTypeEnd]||0;if(t.look==="neo"&&!_){let Q=`stroke-dasharray: ${t.pattern==="dotted"||t.pattern==="dashed"?HQe(z,W,H):`0 ${W} ${z-W-H} ${H}`}; stroke-dashoffset: 0;`;S.attr("style",Q+S.attr("style"))}}S.attr("data-edge",!0),S.attr("data-et","edge"),S.attr("data-id",t.id),S.attr("data-points",y),S.attr("data-look",kn(t.look)),t.showPoints&&v.forEach(O=>{e.append("circle").style("stroke","red").style("fill","red").attr("r",1).attr("cx",O.x).attr("cy",O.y)});let A="";(Ae().flowchart.arrowMarkerAbsolute||Ae().state.arrowMarkerAbsolute)&&(A=window.location.protocol+"//"+window.location.host+window.location.pathname+window.location.search,A=A.replace(/\(/g,"\\(").replace(/\)/g,"\\)")),Z.info("arrowTypeStart",t.arrowTypeStart),Z.info("arrowTypeEnd",t.arrowTypeEnd);let M=!_&&t?.look==="neo";Hce(S,t,A,s,n,M,N);let D=Math.floor(d.length/2),P=d[D];Zt.isLabelCoordinateInPath(P,S.attr("d"))||(f=!0);let B={};return f&&(B.updatedPath=d),B.originalPath=t.points,B},"insertEdge");o(UQe,"generateRoundedPath");o(Xce,"calculateDeltaAndAngle");o(YQe,"applyMarkerOffsetsToPoints")});var jQe,XQe,KQe,ZQe,QQe,JQe,eJe,tJe,rJe,nJe,iJe,aJe,sJe,oJe,lJe,cJe,uJe,hJe,dJe,fJe,pJe,mJe,gJe,yJe,Uy,Z4=F(()=>{"use strict";vt();ur();jQe=o((e,t,r,n)=>{t.forEach(i=>{yJe[i](e,r,n)})},"insertMarkers"),XQe=o((e,t,r)=>{Z.trace("Making markers for ",r),e.append("defs").append("marker").attr("id",r+"_"+t+"-extensionStart").attr("class","marker extension "+t).attr("refX",18).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").attr("markerUnits","userSpaceOnUse").append("path").attr("d","M 1,7 L18,13 V 1 Z"),e.append("defs").append("marker").attr("id",r+"_"+t+"-extensionEnd").attr("class","marker extension "+t).attr("refX",1).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 1,1 V 13 L18,7 Z"),e.append("marker").attr("id",r+"_"+t+"-extensionStart-margin").attr("class","marker extension "+t).attr("refX",18).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").attr("markerUnits","userSpaceOnUse").attr("viewBox","0 0 20 14").append("polygon").attr("points","10,7 18,13 18,1").style("stroke-width",2).style("stroke-dasharray","0"),e.append("defs").append("marker").attr("id",r+"_"+t+"-extensionEnd-margin").attr("class","marker extension "+t).attr("refX",9).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").attr("markerUnits","userSpaceOnUse").attr("viewBox","0 0 20 14").append("polygon").attr("points","10,1 10,13 18,7").style("stroke-width",2).style("stroke-dasharray","0")},"extension"),KQe=o((e,t,r)=>{e.append("defs").append("marker").attr("id",r+"_"+t+"-compositionStart").attr("class","marker composition "+t).attr("refX",18).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L1,7 L9,1 Z"),e.append("defs").append("marker").attr("id",r+"_"+t+"-compositionEnd").attr("class","marker composition "+t).attr("refX",1).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L1,7 L9,1 Z"),e.append("defs").append("marker").attr("id",r+"_"+t+"-compositionStart-margin").attr("class","marker composition "+t).attr("refX",15).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").attr("markerUnits","userSpaceOnUse").append("path").style("stroke-width",0).attr("viewBox","0 0 15 15").attr("d","M 18,7 L9,13 L1,7 L9,1 Z"),e.append("defs").append("marker").attr("id",r+"_"+t+"-compositionEnd-margin").attr("class","marker composition "+t).attr("refX",3.5).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").attr("markerUnits","userSpaceOnUse").append("path").style("stroke-width",0).attr("d","M 18,7 L9,13 L1,7 L9,1 Z")},"composition"),ZQe=o((e,t,r)=>{e.append("defs").append("marker").attr("id",r+"_"+t+"-aggregationStart").attr("class","marker aggregation "+t).attr("refX",18).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L1,7 L9,1 Z"),e.append("defs").append("marker").attr("id",r+"_"+t+"-aggregationEnd").attr("class","marker aggregation "+t).attr("refX",1).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L1,7 L9,1 Z"),e.append("defs").append("marker").attr("id",r+"_"+t+"-aggregationStart-margin").attr("class","marker aggregation "+t).attr("refX",15).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").attr("markerUnits","userSpaceOnUse").append("path").style("stroke-width",2).attr("d","M 18,7 L9,13 L1,7 L9,1 Z"),e.append("defs").append("marker").attr("id",r+"_"+t+"-aggregationEnd-margin").attr("class","marker aggregation "+t).attr("refX",1).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").attr("markerUnits","userSpaceOnUse").append("path").style("stroke-width",2).attr("d","M 18,7 L9,13 L1,7 L9,1 Z")},"aggregation"),QQe=o((e,t,r)=>{e.append("defs").append("marker").attr("id",r+"_"+t+"-dependencyStart").attr("class","marker dependency "+t).attr("refX",6).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("path").attr("d","M 5,7 L9,13 L1,7 L9,1 Z"),e.append("defs").append("marker").attr("id",r+"_"+t+"-dependencyEnd").attr("class","marker dependency "+t).attr("refX",13).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L14,7 L9,1 Z"),e.append("defs").append("marker").attr("id",r+"_"+t+"-dependencyStart-margin").attr("class","marker dependency "+t).attr("refX",4).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").attr("markerUnits","userSpaceOnUse").append("path").style("stroke-width",0).attr("d","M 5,7 L9,13 L1,7 L9,1 Z"),e.append("defs").append("marker").attr("id",r+"_"+t+"-dependencyEnd-margin").attr("class","marker dependency "+t).attr("refX",16).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").attr("markerUnits","userSpaceOnUse").append("path").style("stroke-width",0).attr("d","M 18,7 L9,13 L14,7 L9,1 Z")},"dependency"),JQe=o((e,t,r)=>{e.append("defs").append("marker").attr("id",r+"_"+t+"-lollipopStart").attr("class","marker lollipop "+t).attr("refX",13).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("circle").attr("fill","transparent").attr("cx",7).attr("cy",7).attr("r",6),e.append("defs").append("marker").attr("id",r+"_"+t+"-lollipopEnd").attr("class","marker lollipop "+t).attr("refX",1).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("circle").attr("fill","transparent").attr("cx",7).attr("cy",7).attr("r",6),e.append("defs").append("marker").attr("id",r+"_"+t+"-lollipopStart-margin").attr("class","marker lollipop "+t).attr("refX",13).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").attr("markerUnits","userSpaceOnUse").append("circle").attr("fill","transparent").attr("cx",7).attr("cy",7).attr("r",6).attr("stroke-width",2),e.append("defs").append("marker").attr("id",r+"_"+t+"-lollipopEnd-margin").attr("class","marker lollipop "+t).attr("refX",1).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").attr("markerUnits","userSpaceOnUse").append("circle").attr("fill","transparent").attr("cx",7).attr("cy",7).attr("r",6).attr("stroke-width",2)},"lollipop"),eJe=o((e,t,r)=>{e.append("marker").attr("id",r+"_"+t+"-pointEnd").attr("class","marker "+t).attr("viewBox","0 0 10 10").attr("refX",5).attr("refY",5).attr("markerUnits","userSpaceOnUse").attr("markerWidth",8).attr("markerHeight",8).attr("orient","auto").append("path").attr("d","M 0 0 L 10 5 L 0 10 z").attr("class","arrowMarkerPath").style("stroke-width",1).style("stroke-dasharray","1,0"),e.append("marker").attr("id",r+"_"+t+"-pointStart").attr("class","marker "+t).attr("viewBox","0 0 10 10").attr("refX",4.5).attr("refY",5).attr("markerUnits","userSpaceOnUse").attr("markerWidth",8).attr("markerHeight",8).attr("orient","auto").append("path").attr("d","M 0 5 L 10 10 L 10 0 z").attr("class","arrowMarkerPath").style("stroke-width",1).style("stroke-dasharray","1,0"),e.append("marker").attr("id",r+"_"+t+"-pointEnd-margin").attr("class","marker "+t).attr("viewBox","0 0 11.5 14").attr("refX",11.5).attr("refY",7).attr("markerUnits","userSpaceOnUse").attr("markerWidth",10.5).attr("markerHeight",14).attr("orient","auto").append("path").attr("d","M 0 0 L 11.5 7 L 0 14 z").attr("class","arrowMarkerPath").style("stroke-width",0).style("stroke-dasharray","1,0"),e.append("marker").attr("id",r+"_"+t+"-pointStart-margin").attr("class","marker "+t).attr("viewBox","0 0 11.5 14").attr("refX",1).attr("refY",7).attr("markerUnits","userSpaceOnUse").attr("markerWidth",11.5).attr("markerHeight",14).attr("orient","auto").append("polygon").attr("points","0,7 11.5,14 11.5,0").attr("class","arrowMarkerPath").style("stroke-width",0).style("stroke-dasharray","1,0")},"point"),tJe=o((e,t,r)=>{e.append("marker").attr("id",r+"_"+t+"-circleEnd").attr("class","marker "+t).attr("viewBox","0 0 10 10").attr("refX",11).attr("refY",5).attr("markerUnits","userSpaceOnUse").attr("markerWidth",11).attr("markerHeight",11).attr("orient","auto").append("circle").attr("cx","5").attr("cy","5").attr("r","5").attr("class","arrowMarkerPath").style("stroke-width",1).style("stroke-dasharray","1,0"),e.append("marker").attr("id",r+"_"+t+"-circleStart").attr("class","marker "+t).attr("viewBox","0 0 10 10").attr("refX",-1).attr("refY",5).attr("markerUnits","userSpaceOnUse").attr("markerWidth",11).attr("markerHeight",11).attr("orient","auto").append("circle").attr("cx","5").attr("cy","5").attr("r","5").attr("class","arrowMarkerPath").style("stroke-width",1).style("stroke-dasharray","1,0"),e.append("marker").attr("id",r+"_"+t+"-circleEnd-margin").attr("class","marker "+t).attr("viewBox","0 0 10 10").attr("refY",5).attr("refX",12.25).attr("markerUnits","userSpaceOnUse").attr("markerWidth",14).attr("markerHeight",14).attr("orient","auto").append("circle").attr("cx","5").attr("cy","5").attr("r","5").attr("class","arrowMarkerPath").style("stroke-width",0).style("stroke-dasharray","1,0"),e.append("marker").attr("id",r+"_"+t+"-circleStart-margin").attr("class","marker "+t).attr("viewBox","0 0 10 10").attr("refX",-2).attr("refY",5).attr("markerUnits","userSpaceOnUse").attr("markerWidth",14).attr("markerHeight",14).attr("orient","auto").append("circle").attr("cx","5").attr("cy","5").attr("r","5").attr("class","arrowMarkerPath").style("stroke-width",0).style("stroke-dasharray","1,0")},"circle"),rJe=o((e,t,r)=>{e.append("marker").attr("id",r+"_"+t+"-crossEnd").attr("class","marker cross "+t).attr("viewBox","0 0 11 11").attr("refX",12).attr("refY",5.2).attr("markerUnits","userSpaceOnUse").attr("markerWidth",11).attr("markerHeight",11).attr("orient","auto").append("path").attr("d","M 1,1 l 9,9 M 10,1 l -9,9").attr("class","arrowMarkerPath").style("stroke-width",2).style("stroke-dasharray","1,0"),e.append("marker").attr("id",r+"_"+t+"-crossStart").attr("class","marker cross "+t).attr("viewBox","0 0 11 11").attr("refX",-1).attr("refY",5.2).attr("markerUnits","userSpaceOnUse").attr("markerWidth",11).attr("markerHeight",11).attr("orient","auto").append("path").attr("d","M 1,1 l 9,9 M 10,1 l -9,9").attr("class","arrowMarkerPath").style("stroke-width",2).style("stroke-dasharray","1,0"),e.append("marker").attr("id",r+"_"+t+"-crossEnd-margin").attr("class","marker cross "+t).attr("viewBox","0 0 15 15").attr("refX",17.7).attr("refY",7.5).attr("markerUnits","userSpaceOnUse").attr("markerWidth",12).attr("markerHeight",12).attr("orient","auto").append("path").attr("d","M 1,1 L 14,14 M 1,14 L 14,1").attr("class","arrowMarkerPath").style("stroke-width",2.5),e.append("marker").attr("id",r+"_"+t+"-crossStart-margin").attr("class","marker cross "+t).attr("viewBox","0 0 15 15").attr("refX",-3.5).attr("refY",7.5).attr("markerUnits","userSpaceOnUse").attr("markerWidth",12).attr("markerHeight",12).attr("orient","auto").append("path").attr("d","M 1,1 L 14,14 M 1,14 L 14,1").attr("class","arrowMarkerPath").style("stroke-width",2.5).style("stroke-dasharray","1,0")},"cross"),nJe=o((e,t,r)=>{e.append("defs").append("marker").attr("id",r+"_"+t+"-barbEnd").attr("refX",19).attr("refY",7).attr("markerWidth",20).attr("markerHeight",14).attr("markerUnits","userSpaceOnUse").attr("orient","auto").append("path").attr("d","M 19,7 L9,13 L14,7 L9,1 Z")},"barb"),iJe=o((e,t,r)=>{let n=_t(),{themeVariables:i}=n,{transitionColor:a}=i;e.append("defs").append("marker").attr("id",r+"_"+t+"-barbEnd").attr("refX",19).attr("refY",7).attr("markerWidth",20).attr("markerHeight",14).attr("markerUnits","strokeWidth").attr("orient","auto").append("path").attr("d","M 19,7 L11,14 L13,7 L11,0 Z"),e.append("defs").append("marker").attr("id",r+"_"+t+"-barbEnd-margin").attr("refX",17).attr("refY",7).attr("markerWidth",20).attr("markerHeight",14).attr("markerUnits","userSpaceOnUse").attr("orient","auto").append("path").attr("d","M 19,7 L11,14 L13,7 L11,0 Z").attr("fill",`${a}`)},"barbNeo"),aJe=o((e,t,r)=>{e.append("defs").append("marker").attr("id",r+"_"+t+"-onlyOneStart").attr("class","marker onlyOne "+t).attr("refX",0).attr("refY",9).attr("markerWidth",18).attr("markerHeight",18).attr("orient","auto").append("path").attr("d","M9,0 L9,18 M15,0 L15,18"),e.append("defs").append("marker").attr("id",r+"_"+t+"-onlyOneEnd").attr("class","marker onlyOne "+t).attr("refX",18).attr("refY",9).attr("markerWidth",18).attr("markerHeight",18).attr("orient","auto").append("path").attr("d","M3,0 L3,18 M9,0 L9,18")},"only_one"),sJe=o((e,t,r)=>{let n=e.append("defs").append("marker").attr("id",r+"_"+t+"-zeroOrOneStart").attr("class","marker zeroOrOne "+t).attr("refX",0).attr("refY",9).attr("markerWidth",30).attr("markerHeight",18).attr("orient","auto");n.append("circle").attr("fill","white").attr("cx",21).attr("cy",9).attr("r",6),n.append("path").attr("d","M9,0 L9,18");let i=e.append("defs").append("marker").attr("id",r+"_"+t+"-zeroOrOneEnd").attr("class","marker zeroOrOne "+t).attr("refX",30).attr("refY",9).attr("markerWidth",30).attr("markerHeight",18).attr("orient","auto");i.append("circle").attr("fill","white").attr("cx",9).attr("cy",9).attr("r",6),i.append("path").attr("d","M21,0 L21,18")},"zero_or_one"),oJe=o((e,t,r)=>{e.append("defs").append("marker").attr("id",r+"_"+t+"-oneOrMoreStart").attr("class","marker oneOrMore "+t).attr("refX",18).attr("refY",18).attr("markerWidth",45).attr("markerHeight",36).attr("orient","auto").append("path").attr("d","M0,18 Q 18,0 36,18 Q 18,36 0,18 M42,9 L42,27"),e.append("defs").append("marker").attr("id",r+"_"+t+"-oneOrMoreEnd").attr("class","marker oneOrMore "+t).attr("refX",27).attr("refY",18).attr("markerWidth",45).attr("markerHeight",36).attr("orient","auto").append("path").attr("d","M3,9 L3,27 M9,18 Q27,0 45,18 Q27,36 9,18")},"one_or_more"),lJe=o((e,t,r)=>{let n=e.append("defs").append("marker").attr("id",r+"_"+t+"-zeroOrMoreStart").attr("class","marker zeroOrMore "+t).attr("refX",18).attr("refY",18).attr("markerWidth",57).attr("markerHeight",36).attr("orient","auto");n.append("circle").attr("fill","white").attr("cx",48).attr("cy",18).attr("r",6),n.append("path").attr("d","M0,18 Q18,0 36,18 Q18,36 0,18");let i=e.append("defs").append("marker").attr("id",r+"_"+t+"-zeroOrMoreEnd").attr("class","marker zeroOrMore "+t).attr("refX",39).attr("refY",18).attr("markerWidth",57).attr("markerHeight",36).attr("orient","auto");i.append("circle").attr("fill","white").attr("cx",9).attr("cy",18).attr("r",6),i.append("path").attr("d","M21,18 Q39,0 57,18 Q39,36 21,18")},"zero_or_more"),cJe=o((e,t,r)=>{let n=_t(),{themeVariables:i}=n,{strokeWidth:a}=i;e.append("defs").append("marker").attr("id",r+"_"+t+"-onlyOneStart").attr("class","marker onlyOne "+t).attr("refX",0).attr("refY",9).attr("markerWidth",18).attr("markerHeight",18).attr("orient","auto").attr("markerUnits","userSpaceOnUse").append("path").attr("d","M9,0 L9,18 M15,0 L15,18").attr("stroke-width",`${a}`),e.append("defs").append("marker").attr("id",r+"_"+t+"-onlyOneEnd").attr("class","marker onlyOne "+t).attr("refX",18).attr("refY",9).attr("markerWidth",18).attr("markerHeight",18).attr("orient","auto").attr("markerUnits","userSpaceOnUse").append("path").attr("d","M3,0 L3,18 M9,0 L9,18").attr("stroke-width",`${a}`)},"only_one_neo"),uJe=o((e,t,r)=>{let n=_t(),{themeVariables:i}=n,{strokeWidth:a,mainBkg:s}=i,l=e.append("defs").append("marker").attr("id",r+"_"+t+"-zeroOrOneStart").attr("class","marker zeroOrOne "+t).attr("refX",0).attr("refY",9).attr("markerWidth",30).attr("markerHeight",18).attr("orient","auto").attr("markerUnits","userSpaceOnUse");l.append("circle").attr("fill",s??"white").attr("cx",21).attr("cy",9).attr("stroke-width",`${a}`).attr("r",6),l.append("path").attr("d","M9,0 L9,18").attr("stroke-width",`${a}`);let u=e.append("defs").append("marker").attr("id",r+"_"+t+"-zeroOrOneEnd").attr("class","marker zeroOrOne "+t).attr("refX",30).attr("refY",9).attr("markerWidth",30).attr("markerHeight",18).attr("markerUnits","userSpaceOnUse").attr("orient","auto");u.append("circle").attr("fill",s??"white").attr("cx",9).attr("cy",9).attr("stroke-width",`${a}`).attr("r",6),u.append("path").attr("d","M21,0 L21,18").attr("stroke-width",`${a}`)},"zero_or_one_neo"),hJe=o((e,t,r)=>{let n=_t(),{themeVariables:i}=n,{strokeWidth:a}=i;e.append("defs").append("marker").attr("id",r+"_"+t+"-oneOrMoreStart").attr("class","marker oneOrMore "+t).attr("refX",18).attr("refY",18).attr("markerWidth",45).attr("markerHeight",36).attr("orient","auto").attr("markerUnits","userSpaceOnUse").append("path").attr("d","M0,18 Q 18,0 36,18 Q 18,36 0,18 M42,9 L42,27").attr("stroke-width",`${a}`),e.append("defs").append("marker").attr("id",r+"_"+t+"-oneOrMoreEnd").attr("class","marker oneOrMore "+t).attr("refX",27).attr("refY",18).attr("markerWidth",45).attr("markerHeight",36).attr("markerUnits","userSpaceOnUse").attr("orient","auto").append("path").attr("d","M3,9 L3,27 M9,18 Q27,0 45,18 Q27,36 9,18").attr("stroke-width",`${a}`)},"one_or_more_neo"),dJe=o((e,t,r)=>{let n=_t(),{themeVariables:i}=n,{strokeWidth:a,mainBkg:s}=i,l=e.append("defs").append("marker").attr("id",r+"_"+t+"-zeroOrMoreStart").attr("class","marker zeroOrMore "+t).attr("refX",18).attr("refY",18).attr("markerWidth",57).attr("markerHeight",36).attr("markerUnits","userSpaceOnUse").attr("orient","auto");l.append("circle").attr("fill",s??"white").attr("cx",45.5).attr("cy",18).attr("r",6).attr("stroke-width",`${a}`),l.append("path").attr("d","M0,18 Q18,0 36,18 Q18,36 0,18").attr("stroke-width",`${a}`);let u=e.append("defs").append("marker").attr("id",r+"_"+t+"-zeroOrMoreEnd").attr("class","marker zeroOrMore "+t).attr("refX",39).attr("refY",18).attr("markerWidth",57).attr("markerHeight",36).attr("orient","auto").attr("markerUnits","userSpaceOnUse");u.append("circle").attr("fill",s??"white").attr("cx",11).attr("cy",18).attr("r",6).attr("stroke-width",`${a}`),u.append("path").attr("d","M21,18 Q39,0 57,18 Q39,36 21,18").attr("stroke-width",`${a}`)},"zero_or_more_neo"),fJe=o((e,t,r)=>{e.append("defs").append("marker").attr("id",r+"_"+t+"-requirement_arrowEnd").attr("refX",20).attr("refY",10).attr("markerWidth",20).attr("markerHeight",20).attr("orient","auto").append("path").attr("d",`M0,0
       L20,10
       M20,10
-      L0,20`)},"requirement_arrow"),kUe=o((e,t,r)=>{let i=Nt(),{themeVariables:n}=i,{strokeWidth:a}=n;e.append("defs").append("marker").attr("id",r+"_"+t+"-requirement_arrowEnd").attr("refX",20).attr("refY",10).attr("markerWidth",20).attr("markerHeight",20).attr("orient","auto").attr("markerUnits","userSpaceOnUse").attr("stroke-width",`${a}`).attr("viewBox","0 0 25 20").append("path").attr("d",`M0,0
+      L0,20`)},"requirement_arrow"),pJe=o((e,t,r)=>{let n=_t(),{themeVariables:i}=n,{strokeWidth:a}=i;e.append("defs").append("marker").attr("id",r+"_"+t+"-requirement_arrowEnd").attr("refX",20).attr("refY",10).attr("markerWidth",20).attr("markerHeight",20).attr("orient","auto").attr("markerUnits","userSpaceOnUse").attr("stroke-width",`${a}`).attr("viewBox","0 0 25 20").append("path").attr("d",`M0,0
       L20,10
       M20,10
-      L0,20`).attr("stroke-linejoin","miter")},"requirement_arrow_neo"),wUe=o((e,t,r)=>{let i=e.append("defs").append("marker").attr("id",r+"_"+t+"-requirement_containsStart").attr("refX",0).attr("refY",10).attr("markerWidth",20).attr("markerHeight",20).attr("orient","auto").append("g");i.append("circle").attr("cx",10).attr("cy",10).attr("r",9).attr("fill","none"),i.append("line").attr("x1",1).attr("x2",19).attr("y1",10).attr("y2",10),i.append("line").attr("y1",1).attr("y2",19).attr("x1",10).attr("x2",10)},"requirement_contains"),SUe=o((e,t,r)=>{let i=Nt(),{themeVariables:n}=i,{strokeWidth:a}=n,s=e.append("defs").append("marker").attr("id",r+"_"+t+"-requirement_containsStart").attr("refX",0).attr("refY",10).attr("markerWidth",20).attr("markerHeight",20).attr("orient","auto").attr("markerUnits","userSpaceOnUse").append("g");s.append("circle").attr("cx",10).attr("cy",10).attr("r",9).attr("fill","none"),s.append("line").attr("x1",1).attr("x2",19).attr("y1",10).attr("y2",10),s.append("line").attr("y1",1).attr("y2",19).attr("x1",10).attr("x2",10),s.selectAll("*").attr("stroke-width",`${a}`)},"requirement_contains_neo"),EUe={extension:nUe,composition:aUe,aggregation:sUe,dependency:oUe,lollipop:lUe,point:cUe,circle:uUe,cross:hUe,barb:dUe,barbNeo:fUe,only_one:pUe,zero_or_one:mUe,one_or_more:gUe,zero_or_more:yUe,only_one_neo:vUe,zero_or_one_neo:xUe,one_or_more_neo:bUe,zero_or_more_neo:TUe,requirement_arrow:CUe,requirement_contains:wUe,requirement_arrow_neo:kUe,requirement_contains_neo:SUe},Z4=iUe});async function Sg(e,t,r){let i,n;t.shape==="rect"&&(t.rx&&t.ry?t.shape="roundedRect":t.shape="squareRect");let a=t.shape?NN[t.shape]:void 0;if(!a)throw new Error(`No such shape: ${t.shape}. Please check your syntax.`);if(t.link){let s;r.config.securityLevel==="sandbox"?s="_top":t.linkTarget&&(s=t.linkTarget||"_blank"),i=e.insert("svg:a").attr("xlink:href",t.link).attr("target",s??null),n=await a(i,t,r)}else n=await a(e,t,r),i=n;return i.attr("data-look",ii(t.look)),t.tooltip&&n.attr("title",t.tooltip),Q4.set(t.id,i),t.haveCallback&&i.attr("class",i.attr("class")+" clickable"),i}var Q4,Wae,qae,nb,J4=z(()=>{"use strict";St();IN();Xt();Q4=new Map;o(Sg,"insertNode");Wae=o((e,t)=>{Q4.set(t.id,e)},"setNodeElem"),qae=o(()=>{Q4.clear()},"clear"),nb=o(e=>{let t=Q4.get(e.id);Z.trace("Transforming node",e.diff,e,"translate("+(e.x-e.width/2-5)+", "+e.width/2+")");let r=8,i=e.diff||0;return e.clusterNode?t.attr("transform","translate("+(e.x+i-e.width/2)+", "+(e.y-e.height/2-r)+")"):t.attr("transform","translate("+e.x+", "+e.y+")"),i},"positionNode")});var Uae,Hae=z(()=>{"use strict";br();Ir();St();W4();FN();$N();J4();Wt();Xt();Uae={common:vt,getConfig:Nt,insertCluster:wg,insertEdge:K4,insertEdgeLabel:j4,insertMarkers:Z4,insertNode:Sg,interpolateToCurve:EM,labelHelper:At,log:Z,positionEdgeLabel:X4}});var AUe,eS,zN=z(()=>{"use strict";AUe=typeof global=="object"&&global&&global.Object===Object&&global,eS=AUe});var _Ue,DUe,ln,zo=z(()=>{"use strict";zN();_Ue=typeof self=="object"&&self&&self.Object===Object&&self,DUe=eS||_Ue||Function("return this")(),ln=DUe});var RUe,ra,Mp=z(()=>{"use strict";zo();RUe=ln.Symbol,ra=RUe});function NUe(e){var t=LUe.call(e,ab),r=e[ab];try{e[ab]=void 0;var i=!0}catch{}var n=MUe.call(e);return i&&(t?e[ab]=r:delete e[ab]),n}var Yae,LUe,MUe,ab,jae,Xae=z(()=>{"use strict";Mp();Yae=Object.prototype,LUe=Yae.hasOwnProperty,MUe=Yae.toString,ab=ra?ra.toStringTag:void 0;o(NUe,"getRawTag");jae=NUe});function PUe(e){return OUe.call(e)}var IUe,OUe,Kae,Zae=z(()=>{"use strict";IUe=Object.prototype,OUe=IUe.toString;o(PUe,"objectToString");Kae=PUe});function $Ue(e){return e==null?e===void 0?FUe:BUe:Qae&&Qae in Object(e)?jae(e):Kae(e)}var BUe,FUe,Qae,es,fd=z(()=>{"use strict";Mp();Xae();Zae();BUe="[object Null]",FUe="[object Undefined]",Qae=ra?ra.toStringTag:void 0;o($Ue,"baseGetTag");es=$Ue});function zUe(e){return e!=null&&typeof e=="object"}var yn,Il=z(()=>{"use strict";o(zUe,"isObjectLike");yn=zUe});function VUe(e){return typeof e=="symbol"||yn(e)&&es(e)==GUe}var GUe,oo,Np=z(()=>{"use strict";fd();Il();GUe="[object Symbol]";o(VUe,"isSymbol");oo=VUe});function WUe(e,t){for(var r=-1,i=e==null?0:e.length,n=Array(i);++r<i;)n[r]=t(e[r],r,e);return n}var wc,sb=z(()=>{"use strict";o(WUe,"arrayMap");wc=WUe});var qUe,Or,An=z(()=>{"use strict";qUe=Array.isArray,Or=qUe});function tse(e){if(typeof e=="string")return e;if(Or(e))return wc(e,tse)+"";if(oo(e))return ese?ese.call(e):"";var t=e+"";return t=="0"&&1/e==-UUe?"-0":t}var UUe,Jae,ese,rse,ise=z(()=>{"use strict";Mp();sb();An();Np();UUe=1/0,Jae=ra?ra.prototype:void 0,ese=Jae?Jae.toString:void 0;o(tse,"baseToString");rse=tse});function YUe(e){for(var t=e.length;t--&&HUe.test(e.charAt(t)););return t}var HUe,nse,ase=z(()=>{"use strict";HUe=/\s/;o(YUe,"trimmedEndIndex");nse=YUe});function XUe(e){return e&&e.slice(0,nse(e)+1).replace(jUe,"")}var jUe,sse,ose=z(()=>{"use strict";ase();jUe=/^\s+/;o(XUe,"baseTrim");sse=XUe});function KUe(e){var t=typeof e;return e!=null&&(t=="object"||t=="function")}var Hi,Go=z(()=>{"use strict";o(KUe,"isObject");Hi=KUe});function tHe(e){if(typeof e=="number")return e;if(oo(e))return lse;if(Hi(e)){var t=typeof e.valueOf=="function"?e.valueOf():e;e=Hi(t)?t+"":t}if(typeof e!="string")return e===0?e:+e;e=sse(e);var r=QUe.test(e);return r||JUe.test(e)?eHe(e.slice(2),r?2:8):ZUe.test(e)?lse:+e}var lse,ZUe,QUe,JUe,eHe,cse,use=z(()=>{"use strict";ose();Go();Np();lse=NaN,ZUe=/^[-+]0x[0-9a-f]+$/i,QUe=/^0b[01]+$/i,JUe=/^0o[0-7]+$/i,eHe=parseInt;o(tHe,"toNumber");cse=tHe});function iHe(e){if(!e)return e===0?e:0;if(e=cse(e),e===hse||e===-hse){var t=e<0?-1:1;return t*rHe}return e===e?e:0}var hse,rHe,Eg,GN=z(()=>{"use strict";use();hse=1/0,rHe=17976931348623157e292;o(iHe,"toFinite");Eg=iHe});function nHe(e){var t=Eg(e),r=t%1;return t===t?r?t-r:t:0}var dse,fse=z(()=>{"use strict";GN();o(nHe,"toInteger");dse=nHe});function aHe(e){return e}var Ls,pd=z(()=>{"use strict";o(aHe,"identity");Ls=aHe});function uHe(e){if(!Hi(e))return!1;var t=es(e);return t==oHe||t==lHe||t==sHe||t==cHe}var sHe,oHe,lHe,cHe,Sc,ob=z(()=>{"use strict";fd();Go();sHe="[object AsyncFunction]",oHe="[object Function]",lHe="[object GeneratorFunction]",cHe="[object Proxy]";o(uHe,"isFunction");Sc=uHe});var hHe,tS,pse=z(()=>{"use strict";zo();hHe=ln["__core-js_shared__"],tS=hHe});function dHe(e){return!!mse&&mse in e}var mse,gse,yse=z(()=>{"use strict";pse();mse=(function(){var e=/[^.]+$/.exec(tS&&tS.keys&&tS.keys.IE_PROTO||"");return e?"Symbol(src)_1."+e:""})();o(dHe,"isMasked");gse=dHe});function mHe(e){if(e!=null){try{return pHe.call(e)}catch{}try{return e+""}catch{}}return""}var fHe,pHe,Gu,VN=z(()=>{"use strict";fHe=Function.prototype,pHe=fHe.toString;o(mHe,"toSource");Gu=mHe});function kHe(e){if(!Hi(e)||gse(e))return!1;var t=Sc(e)?CHe:yHe;return t.test(Gu(e))}var gHe,yHe,vHe,xHe,bHe,THe,CHe,vse,xse=z(()=>{"use strict";ob();yse();Go();VN();gHe=/[\\^$.*+?()[\]{}|]/g,yHe=/^\[object .+?Constructor\]$/,vHe=Function.prototype,xHe=Object.prototype,bHe=vHe.toString,THe=xHe.hasOwnProperty,CHe=RegExp("^"+bHe.call(THe).replace(gHe,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");o(kHe,"baseIsNative");vse=kHe});function wHe(e,t){return e?.[t]}var bse,Tse=z(()=>{"use strict";o(wHe,"getValue");bse=wHe});function SHe(e,t){var r=bse(e,t);return vse(r)?r:void 0}var Ms,md=z(()=>{"use strict";xse();Tse();o(SHe,"getNative");Ms=SHe});var EHe,rS,Cse=z(()=>{"use strict";md();zo();EHe=Ms(ln,"WeakMap"),rS=EHe});var kse,AHe,wse,Sse=z(()=>{"use strict";Go();kse=Object.create,AHe=(function(){function e(){}return o(e,"object"),function(t){if(!Hi(t))return{};if(kse)return kse(t);e.prototype=t;var r=new e;return e.prototype=void 0,r}})(),wse=AHe});function _He(e,t,r){switch(r.length){case 0:return e.call(t);case 1:return e.call(t,r[0]);case 2:return e.call(t,r[0],r[1]);case 3:return e.call(t,r[0],r[1],r[2])}return e.apply(t,r)}var Ese,Ase=z(()=>{"use strict";o(_He,"apply");Ese=_He});function DHe(){}var _se,Dse=z(()=>{"use strict";o(DHe,"noop");_se=DHe});function RHe(e,t){var r=-1,i=e.length;for(t||(t=Array(i));++r<i;)t[r]=e[r];return t}var iS,WN=z(()=>{"use strict";o(RHe,"copyArray");iS=RHe});function IHe(e){var t=0,r=0;return function(){var i=NHe(),n=MHe-(i-r);if(r=i,n>0){if(++t>=LHe)return arguments[0]}else t=0;return e.apply(void 0,arguments)}}var LHe,MHe,NHe,Rse,Lse=z(()=>{"use strict";LHe=800,MHe=16,NHe=Date.now;o(IHe,"shortOut");Rse=IHe});function OHe(e){return function(){return e}}var Ns,qN=z(()=>{"use strict";o(OHe,"constant");Ns=OHe});var PHe,Ag,UN=z(()=>{"use strict";md();PHe=(function(){try{var e=Ms(Object,"defineProperty");return e({},"",{}),e}catch{}})(),Ag=PHe});var BHe,Mse,Nse=z(()=>{"use strict";qN();UN();pd();BHe=Ag?function(e,t){return Ag(e,"toString",{configurable:!0,enumerable:!1,value:Ns(t),writable:!0})}:Ls,Mse=BHe});var FHe,nS,HN=z(()=>{"use strict";Nse();Lse();FHe=Rse(Mse),nS=FHe});function $He(e,t){for(var r=-1,i=e==null?0:e.length;++r<i&&t(e[r],r,e)!==!1;);return e}var aS,YN=z(()=>{"use strict";o($He,"arrayEach");aS=$He});function zHe(e,t,r,i){for(var n=e.length,a=r+(i?1:-1);i?a--:++a<n;)if(t(e[a],a,e))return a;return-1}var sS,jN=z(()=>{"use strict";o(zHe,"baseFindIndex");sS=zHe});function GHe(e){return e!==e}var Ise,Ose=z(()=>{"use strict";o(GHe,"baseIsNaN");Ise=GHe});function VHe(e,t,r){for(var i=r-1,n=e.length;++i<n;)if(e[i]===t)return i;return-1}var Pse,Bse=z(()=>{"use strict";o(VHe,"strictIndexOf");Pse=VHe});function WHe(e,t,r){return t===t?Pse(e,t,r):sS(e,Ise,r)}var Fse,$se=z(()=>{"use strict";jN();Ose();Bse();o(WHe,"baseIndexOf");Fse=WHe});function qHe(e,t){var r=e==null?0:e.length;return!!r&&Fse(e,t,0)>-1}var zse,Gse=z(()=>{"use strict";$se();o(qHe,"arrayIncludes");zse=qHe});function YHe(e,t){var r=typeof e;return t=t??UHe,!!t&&(r=="number"||r!="symbol"&&HHe.test(e))&&e>-1&&e%1==0&&e<t}var UHe,HHe,gd,lb=z(()=>{"use strict";UHe=9007199254740991,HHe=/^(?:0|[1-9]\d*)$/;o(YHe,"isIndex");gd=YHe});function jHe(e,t,r){t=="__proto__"&&Ag?Ag(e,t,{configurable:!0,enumerable:!0,value:r,writable:!0}):e[t]=r}var yd,cb=z(()=>{"use strict";UN();o(jHe,"baseAssignValue");yd=jHe});function XHe(e,t){return e===t||e!==e&&t!==t}var Vo,Ip=z(()=>{"use strict";o(XHe,"eq");Vo=XHe});function QHe(e,t,r){var i=e[t];(!(ZHe.call(e,t)&&Vo(i,r))||r===void 0&&!(t in e))&&yd(e,t,r)}var KHe,ZHe,vd,ub=z(()=>{"use strict";cb();Ip();KHe=Object.prototype,ZHe=KHe.hasOwnProperty;o(QHe,"assignValue");vd=QHe});function JHe(e,t,r,i){var n=!r;r||(r={});for(var a=-1,s=t.length;++a<s;){var l=t[a],u=i?i(r[l],e[l],l,r,e):void 0;u===void 0&&(u=e[l]),n?yd(r,l,u):vd(r,l,u)}return r}var Ec,_g=z(()=>{"use strict";ub();cb();o(JHe,"copyObject");Ec=JHe});function eYe(e,t,r){return t=Vse(t===void 0?e.length-1:t,0),function(){for(var i=arguments,n=-1,a=Vse(i.length-t,0),s=Array(a);++n<a;)s[n]=i[t+n];n=-1;for(var l=Array(t+1);++n<t;)l[n]=i[n];return l[t]=r(s),Ese(e,this,l)}}var Vse,oS,XN=z(()=>{"use strict";Ase();Vse=Math.max;o(eYe,"overRest");oS=eYe});function tYe(e,t){return nS(oS(e,t,Ls),e+"")}var xd,hb=z(()=>{"use strict";pd();XN();HN();o(tYe,"baseRest");xd=tYe});function iYe(e){return typeof e=="number"&&e>-1&&e%1==0&&e<=rYe}var rYe,Dg,lS=z(()=>{"use strict";rYe=9007199254740991;o(iYe,"isLength");Dg=iYe});function nYe(e){return e!=null&&Dg(e.length)&&!Sc(e)}var ia,Ac=z(()=>{"use strict";ob();lS();o(nYe,"isArrayLike");ia=nYe});function aYe(e,t,r){if(!Hi(r))return!1;var i=typeof t;return(i=="number"?ia(r)&&gd(t,r.length):i=="string"&&t in r)?Vo(r[t],e):!1}var Vu,db=z(()=>{"use strict";Ip();Ac();lb();Go();o(aYe,"isIterateeCall");Vu=aYe});function sYe(e){return xd(function(t,r){var i=-1,n=r.length,a=n>1?r[n-1]:void 0,s=n>2?r[2]:void 0;for(a=e.length>3&&typeof a=="function"?(n--,a):void 0,s&&Vu(r[0],r[1],s)&&(a=n<3?void 0:a,n=1),t=Object(t);++i<n;){var l=r[i];l&&e(t,l,i,a)}return t})}var Wse,qse=z(()=>{"use strict";hb();db();o(sYe,"createAssigner");Wse=sYe});function lYe(e){var t=e&&e.constructor,r=typeof t=="function"&&t.prototype||oYe;return e===r}var oYe,bd,fb=z(()=>{"use strict";oYe=Object.prototype;o(lYe,"isPrototype");bd=lYe});function cYe(e,t){for(var r=-1,i=Array(e);++r<e;)i[r]=t(r);return i}var Use,Hse=z(()=>{"use strict";o(cYe,"baseTimes");Use=cYe});function hYe(e){return yn(e)&&es(e)==uYe}var uYe,KN,Yse=z(()=>{"use strict";fd();Il();uYe="[object Arguments]";o(hYe,"baseIsArguments");KN=hYe});var jse,dYe,fYe,pYe,Ol,Rg=z(()=>{"use strict";Yse();Il();jse=Object.prototype,dYe=jse.hasOwnProperty,fYe=jse.propertyIsEnumerable,pYe=KN((function(){return arguments})())?KN:function(e){return yn(e)&&dYe.call(e,"callee")&&!fYe.call(e,"callee")},Ol=pYe});function mYe(){return!1}var Xse,Kse=z(()=>{"use strict";o(mYe,"stubFalse");Xse=mYe});var Jse,Zse,gYe,Qse,yYe,vYe,Pl,Lg=z(()=>{"use strict";zo();Kse();Jse=typeof exports=="object"&&exports&&!exports.nodeType&&exports,Zse=Jse&&typeof module=="object"&&module&&!module.nodeType&&module,gYe=Zse&&Zse.exports===Jse,Qse=gYe?ln.Buffer:void 0,yYe=Qse?Qse.isBuffer:void 0,vYe=yYe||Xse,Pl=vYe});function WYe(e){return yn(e)&&Dg(e.length)&&!!$i[es(e)]}var xYe,bYe,TYe,CYe,kYe,wYe,SYe,EYe,AYe,_Ye,DYe,RYe,LYe,MYe,NYe,IYe,OYe,PYe,BYe,FYe,$Ye,zYe,GYe,VYe,$i,eoe,toe=z(()=>{"use strict";fd();lS();Il();xYe="[object Arguments]",bYe="[object Array]",TYe="[object Boolean]",CYe="[object Date]",kYe="[object Error]",wYe="[object Function]",SYe="[object Map]",EYe="[object Number]",AYe="[object Object]",_Ye="[object RegExp]",DYe="[object Set]",RYe="[object String]",LYe="[object WeakMap]",MYe="[object ArrayBuffer]",NYe="[object DataView]",IYe="[object Float32Array]",OYe="[object Float64Array]",PYe="[object Int8Array]",BYe="[object Int16Array]",FYe="[object Int32Array]",$Ye="[object Uint8Array]",zYe="[object Uint8ClampedArray]",GYe="[object Uint16Array]",VYe="[object Uint32Array]",$i={};$i[IYe]=$i[OYe]=$i[PYe]=$i[BYe]=$i[FYe]=$i[$Ye]=$i[zYe]=$i[GYe]=$i[VYe]=!0;$i[xYe]=$i[bYe]=$i[MYe]=$i[TYe]=$i[NYe]=$i[CYe]=$i[kYe]=$i[wYe]=$i[SYe]=$i[EYe]=$i[AYe]=$i[_Ye]=$i[DYe]=$i[RYe]=$i[LYe]=!1;o(WYe,"baseIsTypedArray");eoe=WYe});function qYe(e){return function(t){return e(t)}}var Td,pb=z(()=>{"use strict";o(qYe,"baseUnary");Td=qYe});var roe,mb,UYe,ZN,HYe,Wu,cS=z(()=>{"use strict";zN();roe=typeof exports=="object"&&exports&&!exports.nodeType&&exports,mb=roe&&typeof module=="object"&&module&&!module.nodeType&&module,UYe=mb&&mb.exports===roe,ZN=UYe&&eS.process,HYe=(function(){try{var e=mb&&mb.require&&mb.require("util").types;return e||ZN&&ZN.binding&&ZN.binding("util")}catch{}})(),Wu=HYe});var ioe,YYe,Cd,gb=z(()=>{"use strict";toe();pb();cS();ioe=Wu&&Wu.isTypedArray,YYe=ioe?Td(ioe):eoe,Cd=YYe});function KYe(e,t){var r=Or(e),i=!r&&Ol(e),n=!r&&!i&&Pl(e),a=!r&&!i&&!n&&Cd(e),s=r||i||n||a,l=s?Use(e.length,String):[],u=l.length;for(var h in e)(t||XYe.call(e,h))&&!(s&&(h=="length"||n&&(h=="offset"||h=="parent")||a&&(h=="buffer"||h=="byteLength"||h=="byteOffset")||gd(h,u)))&&l.push(h);return l}var jYe,XYe,uS,QN=z(()=>{"use strict";Hse();Rg();An();Lg();lb();gb();jYe=Object.prototype,XYe=jYe.hasOwnProperty;o(KYe,"arrayLikeKeys");uS=KYe});function ZYe(e,t){return function(r){return e(t(r))}}var hS,JN=z(()=>{"use strict";o(ZYe,"overArg");hS=ZYe});var QYe,noe,aoe=z(()=>{"use strict";JN();QYe=hS(Object.keys,Object),noe=QYe});function tje(e){if(!bd(e))return noe(e);var t=[];for(var r in Object(e))eje.call(e,r)&&r!="constructor"&&t.push(r);return t}var JYe,eje,Mg,dS=z(()=>{"use strict";fb();aoe();JYe=Object.prototype,eje=JYe.hasOwnProperty;o(tje,"baseKeys");Mg=tje});function rje(e){return ia(e)?uS(e):Mg(e)}var cn,qu=z(()=>{"use strict";QN();dS();Ac();o(rje,"keys");cn=rje});function ije(e){var t=[];if(e!=null)for(var r in Object(e))t.push(r);return t}var soe,ooe=z(()=>{"use strict";o(ije,"nativeKeysIn");soe=ije});function sje(e){if(!Hi(e))return soe(e);var t=bd(e),r=[];for(var i in e)i=="constructor"&&(t||!aje.call(e,i))||r.push(i);return r}var nje,aje,loe,coe=z(()=>{"use strict";Go();fb();ooe();nje=Object.prototype,aje=nje.hasOwnProperty;o(sje,"baseKeysIn");loe=sje});function oje(e){return ia(e)?uS(e,!0):loe(e)}var Is,kd=z(()=>{"use strict";QN();coe();Ac();o(oje,"keysIn");Is=oje});function uje(e,t){if(Or(e))return!1;var r=typeof e;return r=="number"||r=="symbol"||r=="boolean"||e==null||oo(e)?!0:cje.test(e)||!lje.test(e)||t!=null&&e in Object(t)}var lje,cje,Ng,fS=z(()=>{"use strict";An();Np();lje=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,cje=/^\w*$/;o(uje,"isKey");Ng=uje});var hje,Uu,yb=z(()=>{"use strict";md();hje=Ms(Object,"create"),Uu=hje});function dje(){this.__data__=Uu?Uu(null):{},this.size=0}var uoe,hoe=z(()=>{"use strict";yb();o(dje,"hashClear");uoe=dje});function fje(e){var t=this.has(e)&&delete this.__data__[e];return this.size-=t?1:0,t}var doe,foe=z(()=>{"use strict";o(fje,"hashDelete");doe=fje});function yje(e){var t=this.__data__;if(Uu){var r=t[e];return r===pje?void 0:r}return gje.call(t,e)?t[e]:void 0}var pje,mje,gje,poe,moe=z(()=>{"use strict";yb();pje="__lodash_hash_undefined__",mje=Object.prototype,gje=mje.hasOwnProperty;o(yje,"hashGet");poe=yje});function bje(e){var t=this.__data__;return Uu?t[e]!==void 0:xje.call(t,e)}var vje,xje,goe,yoe=z(()=>{"use strict";yb();vje=Object.prototype,xje=vje.hasOwnProperty;o(bje,"hashHas");goe=bje});function Cje(e,t){var r=this.__data__;return this.size+=this.has(e)?0:1,r[e]=Uu&&t===void 0?Tje:t,this}var Tje,voe,xoe=z(()=>{"use strict";yb();Tje="__lodash_hash_undefined__";o(Cje,"hashSet");voe=Cje});function Ig(e){var t=-1,r=e==null?0:e.length;for(this.clear();++t<r;){var i=e[t];this.set(i[0],i[1])}}var eI,boe=z(()=>{"use strict";hoe();foe();moe();yoe();xoe();o(Ig,"Hash");Ig.prototype.clear=uoe;Ig.prototype.delete=doe;Ig.prototype.get=poe;Ig.prototype.has=goe;Ig.prototype.set=voe;eI=Ig});function kje(){this.__data__=[],this.size=0}var Toe,Coe=z(()=>{"use strict";o(kje,"listCacheClear");Toe=kje});function wje(e,t){for(var r=e.length;r--;)if(Vo(e[r][0],t))return r;return-1}var wd,vb=z(()=>{"use strict";Ip();o(wje,"assocIndexOf");wd=wje});function Aje(e){var t=this.__data__,r=wd(t,e);if(r<0)return!1;var i=t.length-1;return r==i?t.pop():Eje.call(t,r,1),--this.size,!0}var Sje,Eje,koe,woe=z(()=>{"use strict";vb();Sje=Array.prototype,Eje=Sje.splice;o(Aje,"listCacheDelete");koe=Aje});function _je(e){var t=this.__data__,r=wd(t,e);return r<0?void 0:t[r][1]}var Soe,Eoe=z(()=>{"use strict";vb();o(_je,"listCacheGet");Soe=_je});function Dje(e){return wd(this.__data__,e)>-1}var Aoe,_oe=z(()=>{"use strict";vb();o(Dje,"listCacheHas");Aoe=Dje});function Rje(e,t){var r=this.__data__,i=wd(r,e);return i<0?(++this.size,r.push([e,t])):r[i][1]=t,this}var Doe,Roe=z(()=>{"use strict";vb();o(Rje,"listCacheSet");Doe=Rje});function Og(e){var t=-1,r=e==null?0:e.length;for(this.clear();++t<r;){var i=e[t];this.set(i[0],i[1])}}var Sd,xb=z(()=>{"use strict";Coe();woe();Eoe();_oe();Roe();o(Og,"ListCache");Og.prototype.clear=Toe;Og.prototype.delete=koe;Og.prototype.get=Soe;Og.prototype.has=Aoe;Og.prototype.set=Doe;Sd=Og});var Lje,Ed,pS=z(()=>{"use strict";md();zo();Lje=Ms(ln,"Map"),Ed=Lje});function Mje(){this.size=0,this.__data__={hash:new eI,map:new(Ed||Sd),string:new eI}}var Loe,Moe=z(()=>{"use strict";boe();xb();pS();o(Mje,"mapCacheClear");Loe=Mje});function Nje(e){var t=typeof e;return t=="string"||t=="number"||t=="symbol"||t=="boolean"?e!=="__proto__":e===null}var Noe,Ioe=z(()=>{"use strict";o(Nje,"isKeyable");Noe=Nje});function Ije(e,t){var r=e.__data__;return Noe(t)?r[typeof t=="string"?"string":"hash"]:r.map}var Ad,bb=z(()=>{"use strict";Ioe();o(Ije,"getMapData");Ad=Ije});function Oje(e){var t=Ad(this,e).delete(e);return this.size-=t?1:0,t}var Ooe,Poe=z(()=>{"use strict";bb();o(Oje,"mapCacheDelete");Ooe=Oje});function Pje(e){return Ad(this,e).get(e)}var Boe,Foe=z(()=>{"use strict";bb();o(Pje,"mapCacheGet");Boe=Pje});function Bje(e){return Ad(this,e).has(e)}var $oe,zoe=z(()=>{"use strict";bb();o(Bje,"mapCacheHas");$oe=Bje});function Fje(e,t){var r=Ad(this,e),i=r.size;return r.set(e,t),this.size+=r.size==i?0:1,this}var Goe,Voe=z(()=>{"use strict";bb();o(Fje,"mapCacheSet");Goe=Fje});function Pg(e){var t=-1,r=e==null?0:e.length;for(this.clear();++t<r;){var i=e[t];this.set(i[0],i[1])}}var Op,mS=z(()=>{"use strict";Moe();Poe();Foe();zoe();Voe();o(Pg,"MapCache");Pg.prototype.clear=Loe;Pg.prototype.delete=Ooe;Pg.prototype.get=Boe;Pg.prototype.has=$oe;Pg.prototype.set=Goe;Op=Pg});function tI(e,t){if(typeof e!="function"||t!=null&&typeof t!="function")throw new TypeError($je);var r=o(function(){var i=arguments,n=t?t.apply(this,i):i[0],a=r.cache;if(a.has(n))return a.get(n);var s=e.apply(this,i);return r.cache=a.set(n,s)||a,s},"memoized");return r.cache=new(tI.Cache||Op),r}var $je,Woe,qoe=z(()=>{"use strict";mS();$je="Expected a function";o(tI,"memoize");tI.Cache=Op;Woe=tI});function Gje(e){var t=Woe(e,function(i){return r.size===zje&&r.clear(),i}),r=t.cache;return t}var zje,Uoe,Hoe=z(()=>{"use strict";qoe();zje=500;o(Gje,"memoizeCapped");Uoe=Gje});var Vje,Wje,qje,Yoe,joe=z(()=>{"use strict";Hoe();Vje=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,Wje=/\\(\\)?/g,qje=Uoe(function(e){var t=[];return e.charCodeAt(0)===46&&t.push(""),e.replace(Vje,function(r,i,n,a){t.push(n?a.replace(Wje,"$1"):i||r)}),t}),Yoe=qje});function Uje(e){return e==null?"":rse(e)}var gS,rI=z(()=>{"use strict";ise();o(Uje,"toString");gS=Uje});function Hje(e,t){return Or(e)?e:Ng(e,t)?[e]:Yoe(gS(e))}var _d,Tb=z(()=>{"use strict";An();fS();joe();rI();o(Hje,"castPath");_d=Hje});function jje(e){if(typeof e=="string"||oo(e))return e;var t=e+"";return t=="0"&&1/e==-Yje?"-0":t}var Yje,_c,Bg=z(()=>{"use strict";Np();Yje=1/0;o(jje,"toKey");_c=jje});function Xje(e,t){t=_d(t,e);for(var r=0,i=t.length;e!=null&&r<i;)e=e[_c(t[r++])];return r&&r==i?e:void 0}var Dd,Cb=z(()=>{"use strict";Tb();Bg();o(Xje,"baseGet");Dd=Xje});function Kje(e,t,r){var i=e==null?void 0:Dd(e,t);return i===void 0?r:i}var Xoe,Koe=z(()=>{"use strict";Cb();o(Kje,"get");Xoe=Kje});function Zje(e,t){for(var r=-1,i=t.length,n=e.length;++r<i;)e[n+r]=t[r];return e}var Fg,yS=z(()=>{"use strict";o(Zje,"arrayPush");Fg=Zje});function Qje(e){return Or(e)||Ol(e)||!!(Zoe&&e&&e[Zoe])}var Zoe,Qoe,Joe=z(()=>{"use strict";Mp();Rg();An();Zoe=ra?ra.isConcatSpreadable:void 0;o(Qje,"isFlattenable");Qoe=Qje});function ele(e,t,r,i,n){var a=-1,s=e.length;for(r||(r=Qoe),n||(n=[]);++a<s;){var l=e[a];t>0&&r(l)?t>1?ele(l,t-1,r,i,n):Fg(n,l):i||(n[n.length]=l)}return n}var $g,vS=z(()=>{"use strict";yS();Joe();o(ele,"baseFlatten");$g=ele});function Jje(e){var t=e==null?0:e.length;return t?$g(e,1):[]}var Wo,iI=z(()=>{"use strict";vS();o(Jje,"flatten");Wo=Jje});function eXe(e){return nS(oS(e,void 0,Wo),e+"")}var tle,rle=z(()=>{"use strict";iI();XN();HN();o(eXe,"flatRest");tle=eXe});var tXe,zg,xS=z(()=>{"use strict";JN();tXe=hS(Object.getPrototypeOf,Object),zg=tXe});function oXe(e){if(!yn(e)||es(e)!=rXe)return!1;var t=zg(e);if(t===null)return!0;var r=aXe.call(t,"constructor")&&t.constructor;return typeof r=="function"&&r instanceof r&&ile.call(r)==sXe}var rXe,iXe,nXe,ile,aXe,sXe,nle,ale=z(()=>{"use strict";fd();xS();Il();rXe="[object Object]",iXe=Function.prototype,nXe=Object.prototype,ile=iXe.toString,aXe=nXe.hasOwnProperty,sXe=ile.call(Object);o(oXe,"isPlainObject");nle=oXe});function gXe(e){return mXe.test(e)}var lXe,cXe,uXe,hXe,dXe,fXe,pXe,mXe,sle,ole=z(()=>{"use strict";lXe="\\ud800-\\udfff",cXe="\\u0300-\\u036f",uXe="\\ufe20-\\ufe2f",hXe="\\u20d0-\\u20ff",dXe=cXe+uXe+hXe,fXe="\\ufe0e\\ufe0f",pXe="\\u200d",mXe=RegExp("["+pXe+lXe+dXe+fXe+"]");o(gXe,"hasUnicode");sle=gXe});function yXe(e,t,r,i){var n=-1,a=e==null?0:e.length;for(i&&a&&(r=e[++n]);++n<a;)r=t(r,e[n],n,e);return r}var lle,cle=z(()=>{"use strict";o(yXe,"arrayReduce");lle=yXe});function vXe(){this.__data__=new Sd,this.size=0}var ule,hle=z(()=>{"use strict";xb();o(vXe,"stackClear");ule=vXe});function xXe(e){var t=this.__data__,r=t.delete(e);return this.size=t.size,r}var dle,fle=z(()=>{"use strict";o(xXe,"stackDelete");dle=xXe});function bXe(e){return this.__data__.get(e)}var ple,mle=z(()=>{"use strict";o(bXe,"stackGet");ple=bXe});function TXe(e){return this.__data__.has(e)}var gle,yle=z(()=>{"use strict";o(TXe,"stackHas");gle=TXe});function kXe(e,t){var r=this.__data__;if(r instanceof Sd){var i=r.__data__;if(!Ed||i.length<CXe-1)return i.push([e,t]),this.size=++r.size,this;r=this.__data__=new Op(i)}return r.set(e,t),this.size=r.size,this}var CXe,vle,xle=z(()=>{"use strict";xb();pS();mS();CXe=200;o(kXe,"stackSet");vle=kXe});function Gg(e){var t=this.__data__=new Sd(e);this.size=t.size}var Dc,kb=z(()=>{"use strict";xb();hle();fle();mle();yle();xle();o(Gg,"Stack");Gg.prototype.clear=ule;Gg.prototype.delete=dle;Gg.prototype.get=ple;Gg.prototype.has=gle;Gg.prototype.set=vle;Dc=Gg});function wXe(e,t){return e&&Ec(t,cn(t),e)}var ble,Tle=z(()=>{"use strict";_g();qu();o(wXe,"baseAssign");ble=wXe});function SXe(e,t){return e&&Ec(t,Is(t),e)}var Cle,kle=z(()=>{"use strict";_g();kd();o(SXe,"baseAssignIn");Cle=SXe});function AXe(e,t){if(t)return e.slice();var r=e.length,i=Ele?Ele(r):new e.constructor(r);return e.copy(i),i}var Ale,wle,EXe,Sle,Ele,bS,nI=z(()=>{"use strict";zo();Ale=typeof exports=="object"&&exports&&!exports.nodeType&&exports,wle=Ale&&typeof module=="object"&&module&&!module.nodeType&&module,EXe=wle&&wle.exports===Ale,Sle=EXe?ln.Buffer:void 0,Ele=Sle?Sle.allocUnsafe:void 0;o(AXe,"cloneBuffer");bS=AXe});function _Xe(e,t){for(var r=-1,i=e==null?0:e.length,n=0,a=[];++r<i;){var s=e[r];t(s,r,e)&&(a[n++]=s)}return a}var TS,aI=z(()=>{"use strict";o(_Xe,"arrayFilter");TS=_Xe});function DXe(){return[]}var CS,sI=z(()=>{"use strict";o(DXe,"stubArray");CS=DXe});var RXe,LXe,_le,MXe,Vg,kS=z(()=>{"use strict";aI();sI();RXe=Object.prototype,LXe=RXe.propertyIsEnumerable,_le=Object.getOwnPropertySymbols,MXe=_le?function(e){return e==null?[]:(e=Object(e),TS(_le(e),function(t){return LXe.call(e,t)}))}:CS,Vg=MXe});function NXe(e,t){return Ec(e,Vg(e),t)}var Dle,Rle=z(()=>{"use strict";_g();kS();o(NXe,"copySymbols");Dle=NXe});var IXe,OXe,wS,oI=z(()=>{"use strict";yS();xS();kS();sI();IXe=Object.getOwnPropertySymbols,OXe=IXe?function(e){for(var t=[];e;)Fg(t,Vg(e)),e=zg(e);return t}:CS,wS=OXe});function PXe(e,t){return Ec(e,wS(e),t)}var Lle,Mle=z(()=>{"use strict";_g();oI();o(PXe,"copySymbolsIn");Lle=PXe});function BXe(e,t,r){var i=t(e);return Or(e)?i:Fg(i,r(e))}var SS,lI=z(()=>{"use strict";yS();An();o(BXe,"baseGetAllKeys");SS=BXe});function FXe(e){return SS(e,cn,Vg)}var wb,cI=z(()=>{"use strict";lI();kS();qu();o(FXe,"getAllKeys");wb=FXe});function $Xe(e){return SS(e,Is,wS)}var Nle,Ile=z(()=>{"use strict";lI();oI();kd();o($Xe,"getAllKeysIn");Nle=$Xe});var zXe,ES,Ole=z(()=>{"use strict";md();zo();zXe=Ms(ln,"DataView"),ES=zXe});var GXe,AS,Ple=z(()=>{"use strict";md();zo();GXe=Ms(ln,"Promise"),AS=GXe});var VXe,Rd,uI=z(()=>{"use strict";md();zo();VXe=Ms(ln,"Set"),Rd=VXe});var Ble,WXe,Fle,$le,zle,Gle,qXe,UXe,HXe,YXe,jXe,Pp,lo,Bp=z(()=>{"use strict";Ole();pS();Ple();uI();Cse();fd();VN();Ble="[object Map]",WXe="[object Object]",Fle="[object Promise]",$le="[object Set]",zle="[object WeakMap]",Gle="[object DataView]",qXe=Gu(ES),UXe=Gu(Ed),HXe=Gu(AS),YXe=Gu(Rd),jXe=Gu(rS),Pp=es;(ES&&Pp(new ES(new ArrayBuffer(1)))!=Gle||Ed&&Pp(new Ed)!=Ble||AS&&Pp(AS.resolve())!=Fle||Rd&&Pp(new Rd)!=$le||rS&&Pp(new rS)!=zle)&&(Pp=o(function(e){var t=es(e),r=t==WXe?e.constructor:void 0,i=r?Gu(r):"";if(i)switch(i){case qXe:return Gle;case UXe:return Ble;case HXe:return Fle;case YXe:return $le;case jXe:return zle}return t},"getTag"));lo=Pp});function ZXe(e){var t=e.length,r=new e.constructor(t);return t&&typeof e[0]=="string"&&KXe.call(e,"index")&&(r.index=e.index,r.input=e.input),r}var XXe,KXe,Vle,Wle=z(()=>{"use strict";XXe=Object.prototype,KXe=XXe.hasOwnProperty;o(ZXe,"initCloneArray");Vle=ZXe});var QXe,Wg,hI=z(()=>{"use strict";zo();QXe=ln.Uint8Array,Wg=QXe});function JXe(e){var t=new e.constructor(e.byteLength);return new Wg(t).set(new Wg(e)),t}var qg,_S=z(()=>{"use strict";hI();o(JXe,"cloneArrayBuffer");qg=JXe});function eKe(e,t){var r=t?qg(e.buffer):e.buffer;return new e.constructor(r,e.byteOffset,e.byteLength)}var qle,Ule=z(()=>{"use strict";_S();o(eKe,"cloneDataView");qle=eKe});function rKe(e){var t=new e.constructor(e.source,tKe.exec(e));return t.lastIndex=e.lastIndex,t}var tKe,Hle,Yle=z(()=>{"use strict";tKe=/\w*$/;o(rKe,"cloneRegExp");Hle=rKe});function iKe(e){return Xle?Object(Xle.call(e)):{}}var jle,Xle,Kle,Zle=z(()=>{"use strict";Mp();jle=ra?ra.prototype:void 0,Xle=jle?jle.valueOf:void 0;o(iKe,"cloneSymbol");Kle=iKe});function nKe(e,t){var r=t?qg(e.buffer):e.buffer;return new e.constructor(r,e.byteOffset,e.length)}var DS,dI=z(()=>{"use strict";_S();o(nKe,"cloneTypedArray");DS=nKe});function wKe(e,t,r){var i=e.constructor;switch(t){case fKe:return qg(e);case aKe:case sKe:return new i(+e);case pKe:return qle(e,r);case mKe:case gKe:case yKe:case vKe:case xKe:case bKe:case TKe:case CKe:case kKe:return DS(e,r);case oKe:return new i;case lKe:case hKe:return new i(e);case cKe:return Hle(e);case uKe:return new i;case dKe:return Kle(e)}}var aKe,sKe,oKe,lKe,cKe,uKe,hKe,dKe,fKe,pKe,mKe,gKe,yKe,vKe,xKe,bKe,TKe,CKe,kKe,Qle,Jle=z(()=>{"use strict";_S();Ule();Yle();Zle();dI();aKe="[object Boolean]",sKe="[object Date]",oKe="[object Map]",lKe="[object Number]",cKe="[object RegExp]",uKe="[object Set]",hKe="[object String]",dKe="[object Symbol]",fKe="[object ArrayBuffer]",pKe="[object DataView]",mKe="[object Float32Array]",gKe="[object Float64Array]",yKe="[object Int8Array]",vKe="[object Int16Array]",xKe="[object Int32Array]",bKe="[object Uint8Array]",TKe="[object Uint8ClampedArray]",CKe="[object Uint16Array]",kKe="[object Uint32Array]";o(wKe,"initCloneByTag");Qle=wKe});function SKe(e){return typeof e.constructor=="function"&&!bd(e)?wse(zg(e)):{}}var RS,fI=z(()=>{"use strict";Sse();xS();fb();o(SKe,"initCloneObject");RS=SKe});function AKe(e){return yn(e)&&lo(e)==EKe}var EKe,ece,tce=z(()=>{"use strict";Bp();Il();EKe="[object Map]";o(AKe,"baseIsMap");ece=AKe});var rce,_Ke,ice,nce=z(()=>{"use strict";tce();pb();cS();rce=Wu&&Wu.isMap,_Ke=rce?Td(rce):ece,ice=_Ke});function RKe(e){return yn(e)&&lo(e)==DKe}var DKe,ace,sce=z(()=>{"use strict";Bp();Il();DKe="[object Set]";o(RKe,"baseIsSet");ace=RKe});var oce,LKe,lce,cce=z(()=>{"use strict";sce();pb();cS();oce=Wu&&Wu.isSet,LKe=oce?Td(oce):ace,lce=LKe});function LS(e,t,r,i,n,a){var s,l=t&MKe,u=t&NKe,h=t&IKe;if(r&&(s=n?r(e,i,n,a):r(e)),s!==void 0)return s;if(!Hi(e))return e;var d=Or(e);if(d){if(s=Vle(e),!l)return iS(e,s)}else{var f=lo(e),p=f==hce||f==$Ke;if(Pl(e))return bS(e,l);if(f==dce||f==uce||p&&!n){if(s=u||p?{}:RS(e),!l)return u?Lle(e,Cle(s,e)):Dle(e,ble(s,e))}else{if(!Ri[f])return n?e:{};s=Qle(e,f,l)}}a||(a=new Dc);var m=a.get(e);if(m)return m;a.set(e,s),lce(e)?e.forEach(function(v){s.add(LS(v,t,r,v,e,a))}):ice(e)&&e.forEach(function(v,x){s.set(x,LS(v,t,r,x,e,a))});var g=h?u?Nle:wb:u?Is:cn,y=d?void 0:g(e);return aS(y||e,function(v,x){y&&(x=v,v=e[x]),vd(s,x,LS(v,t,r,x,e,a))}),s}var MKe,NKe,IKe,uce,OKe,PKe,BKe,FKe,hce,$Ke,zKe,GKe,dce,VKe,WKe,qKe,UKe,HKe,YKe,jKe,XKe,KKe,ZKe,QKe,JKe,eZe,tZe,rZe,iZe,Ri,MS,pI=z(()=>{"use strict";kb();YN();ub();Tle();kle();nI();WN();Rle();Mle();cI();Ile();Bp();Wle();Jle();fI();An();Lg();nce();Go();cce();qu();kd();MKe=1,NKe=2,IKe=4,uce="[object Arguments]",OKe="[object Array]",PKe="[object Boolean]",BKe="[object Date]",FKe="[object Error]",hce="[object Function]",$Ke="[object GeneratorFunction]",zKe="[object Map]",GKe="[object Number]",dce="[object Object]",VKe="[object RegExp]",WKe="[object Set]",qKe="[object String]",UKe="[object Symbol]",HKe="[object WeakMap]",YKe="[object ArrayBuffer]",jKe="[object DataView]",XKe="[object Float32Array]",KKe="[object Float64Array]",ZKe="[object Int8Array]",QKe="[object Int16Array]",JKe="[object Int32Array]",eZe="[object Uint8Array]",tZe="[object Uint8ClampedArray]",rZe="[object Uint16Array]",iZe="[object Uint32Array]",Ri={};Ri[uce]=Ri[OKe]=Ri[YKe]=Ri[jKe]=Ri[PKe]=Ri[BKe]=Ri[XKe]=Ri[KKe]=Ri[ZKe]=Ri[QKe]=Ri[JKe]=Ri[zKe]=Ri[GKe]=Ri[dce]=Ri[VKe]=Ri[WKe]=Ri[qKe]=Ri[UKe]=Ri[eZe]=Ri[tZe]=Ri[rZe]=Ri[iZe]=!0;Ri[FKe]=Ri[hce]=Ri[HKe]=!1;o(LS,"baseClone");MS=LS});function aZe(e){return MS(e,nZe)}var nZe,mI,fce=z(()=>{"use strict";pI();nZe=4;o(aZe,"clone");mI=aZe});function lZe(e){return MS(e,sZe|oZe)}var sZe,oZe,gI,pce=z(()=>{"use strict";pI();sZe=1,oZe=4;o(lZe,"cloneDeep");gI=lZe});function uZe(e){return this.__data__.set(e,cZe),this}var cZe,mce,gce=z(()=>{"use strict";cZe="__lodash_hash_undefined__";o(uZe,"setCacheAdd");mce=uZe});function hZe(e){return this.__data__.has(e)}var yce,vce=z(()=>{"use strict";o(hZe,"setCacheHas");yce=hZe});function NS(e){var t=-1,r=e==null?0:e.length;for(this.__data__=new Op;++t<r;)this.add(e[t])}var IS,yI=z(()=>{"use strict";mS();gce();vce();o(NS,"SetCache");NS.prototype.add=NS.prototype.push=mce;NS.prototype.has=yce;IS=NS});function dZe(e,t){for(var r=-1,i=e==null?0:e.length;++r<i;)if(t(e[r],r,e))return!0;return!1}var xce,bce=z(()=>{"use strict";o(dZe,"arraySome");xce=dZe});function fZe(e,t){return e.has(t)}var OS,vI=z(()=>{"use strict";o(fZe,"cacheHas");OS=fZe});function gZe(e,t,r,i,n,a){var s=r&pZe,l=e.length,u=t.length;if(l!=u&&!(s&&u>l))return!1;var h=a.get(e),d=a.get(t);if(h&&d)return h==t&&d==e;var f=-1,p=!0,m=r&mZe?new IS:void 0;for(a.set(e,t),a.set(t,e);++f<l;){var g=e[f],y=t[f];if(i)var v=s?i(y,g,f,t,e,a):i(g,y,f,e,t,a);if(v!==void 0){if(v)continue;p=!1;break}if(m){if(!xce(t,function(x,b){if(!OS(m,b)&&(g===x||n(g,x,r,i,a)))return m.push(b)})){p=!1;break}}else if(!(g===y||n(g,y,r,i,a))){p=!1;break}}return a.delete(e),a.delete(t),p}var pZe,mZe,PS,xI=z(()=>{"use strict";yI();bce();vI();pZe=1,mZe=2;o(gZe,"equalArrays");PS=gZe});function yZe(e){var t=-1,r=Array(e.size);return e.forEach(function(i,n){r[++t]=[n,i]}),r}var Tce,Cce=z(()=>{"use strict";o(yZe,"mapToArray");Tce=yZe});function vZe(e){var t=-1,r=Array(e.size);return e.forEach(function(i){r[++t]=i}),r}var Ug,BS=z(()=>{"use strict";o(vZe,"setToArray");Ug=vZe});function MZe(e,t,r,i,n,a,s){switch(r){case LZe:if(e.byteLength!=t.byteLength||e.byteOffset!=t.byteOffset)return!1;e=e.buffer,t=t.buffer;case RZe:return!(e.byteLength!=t.byteLength||!a(new Wg(e),new Wg(t)));case TZe:case CZe:case SZe:return Vo(+e,+t);case kZe:return e.name==t.name&&e.message==t.message;case EZe:case _Ze:return e==t+"";case wZe:var l=Tce;case AZe:var u=i&xZe;if(l||(l=Ug),e.size!=t.size&&!u)return!1;var h=s.get(e);if(h)return h==t;i|=bZe,s.set(e,t);var d=PS(l(e),l(t),i,n,a,s);return s.delete(e),d;case DZe:if(bI)return bI.call(e)==bI.call(t)}return!1}var xZe,bZe,TZe,CZe,kZe,wZe,SZe,EZe,AZe,_Ze,DZe,RZe,LZe,kce,bI,wce,Sce=z(()=>{"use strict";Mp();hI();Ip();xI();Cce();BS();xZe=1,bZe=2,TZe="[object Boolean]",CZe="[object Date]",kZe="[object Error]",wZe="[object Map]",SZe="[object Number]",EZe="[object RegExp]",AZe="[object Set]",_Ze="[object String]",DZe="[object Symbol]",RZe="[object ArrayBuffer]",LZe="[object DataView]",kce=ra?ra.prototype:void 0,bI=kce?kce.valueOf:void 0;o(MZe,"equalByTag");wce=MZe});function PZe(e,t,r,i,n,a){var s=r&NZe,l=wb(e),u=l.length,h=wb(t),d=h.length;if(u!=d&&!s)return!1;for(var f=u;f--;){var p=l[f];if(!(s?p in t:OZe.call(t,p)))return!1}var m=a.get(e),g=a.get(t);if(m&&g)return m==t&&g==e;var y=!0;a.set(e,t),a.set(t,e);for(var v=s;++f<u;){p=l[f];var x=e[p],b=t[p];if(i)var T=s?i(b,x,p,t,e,a):i(x,b,p,e,t,a);if(!(T===void 0?x===b||n(x,b,r,i,a):T)){y=!1;break}v||(v=p=="constructor")}if(y&&!v){var w=e.constructor,C=t.constructor;w!=C&&"constructor"in e&&"constructor"in t&&!(typeof w=="function"&&w instanceof w&&typeof C=="function"&&C instanceof C)&&(y=!1)}return a.delete(e),a.delete(t),y}var NZe,IZe,OZe,Ece,Ace=z(()=>{"use strict";cI();NZe=1,IZe=Object.prototype,OZe=IZe.hasOwnProperty;o(PZe,"equalObjects");Ece=PZe});function $Ze(e,t,r,i,n,a){var s=Or(e),l=Or(t),u=s?Dce:lo(e),h=l?Dce:lo(t);u=u==_ce?FS:u,h=h==_ce?FS:h;var d=u==FS,f=h==FS,p=u==h;if(p&&Pl(e)){if(!Pl(t))return!1;s=!0,d=!1}if(p&&!d)return a||(a=new Dc),s||Cd(e)?PS(e,t,r,i,n,a):wce(e,t,u,r,i,n,a);if(!(r&BZe)){var m=d&&Rce.call(e,"__wrapped__"),g=f&&Rce.call(t,"__wrapped__");if(m||g){var y=m?e.value():e,v=g?t.value():t;return a||(a=new Dc),n(y,v,r,i,a)}}return p?(a||(a=new Dc),Ece(e,t,r,i,n,a)):!1}var BZe,_ce,Dce,FS,FZe,Rce,Lce,Mce=z(()=>{"use strict";kb();xI();Sce();Ace();Bp();An();Lg();gb();BZe=1,_ce="[object Arguments]",Dce="[object Array]",FS="[object Object]",FZe=Object.prototype,Rce=FZe.hasOwnProperty;o($Ze,"baseIsEqualDeep");Lce=$Ze});function Nce(e,t,r,i,n){return e===t?!0:e==null||t==null||!yn(e)&&!yn(t)?e!==e&&t!==t:Lce(e,t,r,i,Nce,n)}var $S,TI=z(()=>{"use strict";Mce();Il();o(Nce,"baseIsEqual");$S=Nce});function VZe(e,t,r,i){var n=r.length,a=n,s=!i;if(e==null)return!a;for(e=Object(e);n--;){var l=r[n];if(s&&l[2]?l[1]!==e[l[0]]:!(l[0]in e))return!1}for(;++n<a;){l=r[n];var u=l[0],h=e[u],d=l[1];if(s&&l[2]){if(h===void 0&&!(u in e))return!1}else{var f=new Dc;if(i)var p=i(h,d,u,e,t,f);if(!(p===void 0?$S(d,h,zZe|GZe,i,f):p))return!1}}return!0}var zZe,GZe,Ice,Oce=z(()=>{"use strict";kb();TI();zZe=1,GZe=2;o(VZe,"baseIsMatch");Ice=VZe});function WZe(e){return e===e&&!Hi(e)}var zS,CI=z(()=>{"use strict";Go();o(WZe,"isStrictComparable");zS=WZe});function qZe(e){for(var t=cn(e),r=t.length;r--;){var i=t[r],n=e[i];t[r]=[i,n,zS(n)]}return t}var Pce,Bce=z(()=>{"use strict";CI();qu();o(qZe,"getMatchData");Pce=qZe});function UZe(e,t){return function(r){return r==null?!1:r[e]===t&&(t!==void 0||e in Object(r))}}var GS,kI=z(()=>{"use strict";o(UZe,"matchesStrictComparable");GS=UZe});function HZe(e){var t=Pce(e);return t.length==1&&t[0][2]?GS(t[0][0],t[0][1]):function(r){return r===e||Ice(r,e,t)}}var Fce,$ce=z(()=>{"use strict";Oce();Bce();kI();o(HZe,"baseMatches");Fce=HZe});function YZe(e,t){return e!=null&&t in Object(e)}var zce,Gce=z(()=>{"use strict";o(YZe,"baseHasIn");zce=YZe});function jZe(e,t,r){t=_d(t,e);for(var i=-1,n=t.length,a=!1;++i<n;){var s=_c(t[i]);if(!(a=e!=null&&r(e,s)))break;e=e[s]}return a||++i!=n?a:(n=e==null?0:e.length,!!n&&Dg(n)&&gd(s,n)&&(Or(e)||Ol(e)))}var VS,wI=z(()=>{"use strict";Tb();Rg();An();lb();lS();Bg();o(jZe,"hasPath");VS=jZe});function XZe(e,t){return e!=null&&VS(e,t,zce)}var WS,SI=z(()=>{"use strict";Gce();wI();o(XZe,"hasIn");WS=XZe});function QZe(e,t){return Ng(e)&&zS(t)?GS(_c(e),t):function(r){var i=Xoe(r,e);return i===void 0&&i===t?WS(r,e):$S(t,i,KZe|ZZe)}}var KZe,ZZe,Vce,Wce=z(()=>{"use strict";TI();Koe();SI();fS();CI();kI();Bg();KZe=1,ZZe=2;o(QZe,"baseMatchesProperty");Vce=QZe});function JZe(e){return function(t){return t?.[e]}}var qS,EI=z(()=>{"use strict";o(JZe,"baseProperty");qS=JZe});function eQe(e){return function(t){return Dd(t,e)}}var qce,Uce=z(()=>{"use strict";Cb();o(eQe,"basePropertyDeep");qce=eQe});function tQe(e){return Ng(e)?qS(_c(e)):qce(e)}var Hce,Yce=z(()=>{"use strict";EI();Uce();fS();Bg();o(tQe,"property");Hce=tQe});function rQe(e){return typeof e=="function"?e:e==null?Ls:typeof e=="object"?Or(e)?Vce(e[0],e[1]):Fce(e):Hce(e)}var Ia,Hu=z(()=>{"use strict";$ce();Wce();pd();An();Yce();o(rQe,"baseIteratee");Ia=rQe});function iQe(e){return function(t,r,i){for(var n=-1,a=Object(t),s=i(t),l=s.length;l--;){var u=s[e?l:++n];if(r(a[u],u,a)===!1)break}return t}}var jce,Xce=z(()=>{"use strict";o(iQe,"createBaseFor");jce=iQe});var nQe,Hg,US=z(()=>{"use strict";Xce();nQe=jce(),Hg=nQe});function aQe(e,t){return e&&Hg(e,t,cn)}var Yg,HS=z(()=>{"use strict";US();qu();o(aQe,"baseForOwn");Yg=aQe});function sQe(e,t){return function(r,i){if(r==null)return r;if(!ia(r))return e(r,i);for(var n=r.length,a=t?n:-1,s=Object(r);(t?a--:++a<n)&&i(s[a],a,s)!==!1;);return r}}var Kce,Zce=z(()=>{"use strict";Ac();o(sQe,"createBaseEach");Kce=sQe});var oQe,Ld,Sb=z(()=>{"use strict";HS();Zce();oQe=Kce(Yg),Ld=oQe});var lQe,YS,Qce=z(()=>{"use strict";zo();lQe=o(function(){return ln.Date.now()},"now"),YS=lQe});var Jce,cQe,uQe,AI,eue=z(()=>{"use strict";hb();Ip();db();kd();Jce=Object.prototype,cQe=Jce.hasOwnProperty,uQe=xd(function(e,t){e=Object(e);var r=-1,i=t.length,n=i>2?t[2]:void 0;for(n&&Vu(t[0],t[1],n)&&(i=1);++r<i;)for(var a=t[r],s=Is(a),l=-1,u=s.length;++l<u;){var h=s[l],d=e[h];(d===void 0||Vo(d,Jce[h])&&!cQe.call(e,h))&&(e[h]=a[h])}return e}),AI=uQe});function hQe(e,t,r){(r!==void 0&&!Vo(e[t],r)||r===void 0&&!(t in e))&&yd(e,t,r)}var Eb,_I=z(()=>{"use strict";cb();Ip();o(hQe,"assignMergeValue");Eb=hQe});function dQe(e){return yn(e)&&ia(e)}var jS,DI=z(()=>{"use strict";Ac();Il();o(dQe,"isArrayLikeObject");jS=dQe});function fQe(e,t){if(!(t==="constructor"&&typeof e[t]=="function")&&t!="__proto__")return e[t]}var Ab,RI=z(()=>{"use strict";o(fQe,"safeGet");Ab=fQe});function pQe(e){return Ec(e,Is(e))}var tue,rue=z(()=>{"use strict";_g();kd();o(pQe,"toPlainObject");tue=pQe});function mQe(e,t,r,i,n,a,s){var l=Ab(e,r),u=Ab(t,r),h=s.get(u);if(h){Eb(e,r,h);return}var d=a?a(l,u,r+"",e,t,s):void 0,f=d===void 0;if(f){var p=Or(u),m=!p&&Pl(u),g=!p&&!m&&Cd(u);d=u,p||m||g?Or(l)?d=l:jS(l)?d=iS(l):m?(f=!1,d=bS(u,!0)):g?(f=!1,d=DS(u,!0)):d=[]:nle(u)||Ol(u)?(d=l,Ol(l)?d=tue(l):(!Hi(l)||Sc(l))&&(d=RS(u))):f=!1}f&&(s.set(u,d),n(d,u,i,a,s),s.delete(u)),Eb(e,r,d)}var iue,nue=z(()=>{"use strict";_I();nI();dI();WN();fI();Rg();An();DI();Lg();ob();Go();ale();gb();RI();rue();o(mQe,"baseMergeDeep");iue=mQe});function aue(e,t,r,i,n){e!==t&&Hg(t,function(a,s){if(n||(n=new Dc),Hi(a))iue(e,t,s,r,aue,i,n);else{var l=i?i(Ab(e,s),a,s+"",e,t,n):void 0;l===void 0&&(l=a),Eb(e,s,l)}},Is)}var sue,oue=z(()=>{"use strict";kb();_I();US();nue();Go();kd();RI();o(aue,"baseMerge");sue=aue});function gQe(e,t,r){for(var i=-1,n=e==null?0:e.length;++i<n;)if(r(t,e[i]))return!0;return!1}var lue,cue=z(()=>{"use strict";o(gQe,"arrayIncludesWith");lue=gQe});function yQe(e){var t=e==null?0:e.length;return t?e[t-1]:void 0}var Md,uue=z(()=>{"use strict";o(yQe,"last");Md=yQe});function vQe(e){return typeof e=="function"?e:Ls}var jg,XS=z(()=>{"use strict";pd();o(vQe,"castFunction");jg=vQe});function xQe(e,t){var r=Or(e)?aS:Ld;return r(e,jg(t))}var tt,LI=z(()=>{"use strict";YN();Sb();XS();An();o(xQe,"forEach");tt=xQe});var hue=z(()=>{"use strict";LI()});function bQe(e,t){var r=[];return Ld(e,function(i,n,a){t(i,n,a)&&r.push(i)}),r}var due,fue=z(()=>{"use strict";Sb();o(bQe,"baseFilter");due=bQe});function TQe(e,t){var r=Or(e)?TS:due;return r(e,Ia(t,3))}var ts,pue=z(()=>{"use strict";aI();fue();Hu();An();o(TQe,"filter");ts=TQe});function CQe(e){return function(t,r,i){var n=Object(t);if(!ia(t)){var a=Ia(r,3);t=cn(t),r=o(function(l){return a(n[l],l,n)},"predicate")}var s=e(t,r,i);return s>-1?n[a?t[s]:s]:void 0}}var mue,gue=z(()=>{"use strict";Hu();Ac();qu();o(CQe,"createFind");mue=CQe});function wQe(e,t,r){var i=e==null?0:e.length;if(!i)return-1;var n=r==null?0:dse(r);return n<0&&(n=kQe(i+n,0)),sS(e,Ia(t,3),n)}var kQe,yue,vue=z(()=>{"use strict";jN();Hu();fse();kQe=Math.max;o(wQe,"findIndex");yue=wQe});var SQe,Xg,xue=z(()=>{"use strict";gue();vue();SQe=mue(yue),Xg=SQe});function EQe(e,t){var r=-1,i=ia(e)?Array(e.length):[];return Ld(e,function(n,a,s){i[++r]=t(n,a,s)}),i}var KS,MI=z(()=>{"use strict";Sb();Ac();o(EQe,"baseMap");KS=EQe});function AQe(e,t){var r=Or(e)?wc:KS;return r(e,Ia(t,3))}var Jr,bue=z(()=>{"use strict";sb();Hu();MI();An();o(AQe,"map");Jr=AQe});function _Qe(e,t){return e==null?e:Hg(e,jg(t),Is)}var NI,Tue=z(()=>{"use strict";US();XS();kd();o(_Qe,"forIn");NI=_Qe});function DQe(e,t){return e&&Yg(e,jg(t))}var II,Cue=z(()=>{"use strict";HS();XS();o(DQe,"forOwn");II=DQe});function RQe(e,t){return e>t}var kue,wue=z(()=>{"use strict";o(RQe,"baseGt");kue=RQe});function NQe(e,t){return e!=null&&MQe.call(e,t)}var LQe,MQe,Sue,Eue=z(()=>{"use strict";LQe=Object.prototype,MQe=LQe.hasOwnProperty;o(NQe,"baseHas");Sue=NQe});function IQe(e,t){return e!=null&&VS(e,t,Sue)}var _b,Aue=z(()=>{"use strict";Eue();wI();o(IQe,"has");_b=IQe});function PQe(e){return typeof e=="string"||!Or(e)&&yn(e)&&es(e)==OQe}var OQe,_ue,Due=z(()=>{"use strict";fd();An();Il();OQe="[object String]";o(PQe,"isString");_ue=PQe});function BQe(e,t){return wc(t,function(r){return e[r]})}var Rue,Lue=z(()=>{"use strict";sb();o(BQe,"baseValues");Rue=BQe});function FQe(e){return e==null?[]:Rue(e,cn(e))}var co,Mue=z(()=>{"use strict";Lue();qu();o(FQe,"values");co=FQe});function WQe(e){if(e==null)return!0;if(ia(e)&&(Or(e)||typeof e=="string"||typeof e.splice=="function"||Pl(e)||Cd(e)||Ol(e)))return!e.length;var t=lo(e);if(t==$Qe||t==zQe)return!e.size;if(bd(e))return!Mg(e).length;for(var r in e)if(VQe.call(e,r))return!1;return!0}var $Qe,zQe,GQe,VQe,ZS,Nue=z(()=>{"use strict";dS();Bp();Rg();An();Ac();Lg();fb();gb();$Qe="[object Map]",zQe="[object Set]",GQe=Object.prototype,VQe=GQe.hasOwnProperty;o(WQe,"isEmpty");ZS=WQe});function qQe(e){return e===void 0}var yi,Iue=z(()=>{"use strict";o(qQe,"isUndefined");yi=qQe});function UQe(e,t){return e<t}var QS,OI=z(()=>{"use strict";o(UQe,"baseLt");QS=UQe});function HQe(e,t){var r={};return t=Ia(t,3),Yg(e,function(i,n,a){yd(r,n,t(i,n,a))}),r}var Fp,Oue=z(()=>{"use strict";cb();HS();Hu();o(HQe,"mapValues");Fp=HQe});function YQe(e,t,r){for(var i=-1,n=e.length;++i<n;){var a=e[i],s=t(a);if(s!=null&&(l===void 0?s===s&&!oo(s):r(s,l)))var l=s,u=a}return u}var Kg,JS=z(()=>{"use strict";Np();o(YQe,"baseExtremum");Kg=YQe});function jQe(e){return e&&e.length?Kg(e,Ls,kue):void 0}var Os,Pue=z(()=>{"use strict";JS();wue();pd();o(jQe,"max");Os=jQe});var XQe,Zg,Bue=z(()=>{"use strict";oue();qse();XQe=Wse(function(e,t,r){sue(e,t,r)}),Zg=XQe});function KQe(e){return e&&e.length?Kg(e,Ls,QS):void 0}var Yu,Fue=z(()=>{"use strict";JS();OI();pd();o(KQe,"min");Yu=KQe});function ZQe(e,t){return e&&e.length?Kg(e,Ia(t,2),QS):void 0}var $p,$ue=z(()=>{"use strict";JS();Hu();OI();o(ZQe,"minBy");$p=ZQe});function QQe(e,t,r,i){if(!Hi(e))return e;t=_d(t,e);for(var n=-1,a=t.length,s=a-1,l=e;l!=null&&++n<a;){var u=_c(t[n]),h=r;if(u==="__proto__"||u==="constructor"||u==="prototype")return e;if(n!=s){var d=l[u];h=i?i(d,u,l):void 0,h===void 0&&(h=Hi(d)?d:gd(t[n+1])?[]:{})}vd(l,u,h),l=l[u]}return e}var zue,Gue=z(()=>{"use strict";ub();Tb();lb();Go();Bg();o(QQe,"baseSet");zue=QQe});function JQe(e,t,r){for(var i=-1,n=t.length,a={};++i<n;){var s=t[i],l=Dd(e,s);r(l,s)&&zue(a,_d(s,e),l)}return a}var Vue,Wue=z(()=>{"use strict";Cb();Gue();Tb();o(JQe,"basePickBy");Vue=JQe});function eJe(e,t){var r=e.length;for(e.sort(t);r--;)e[r]=e[r].value;return e}var que,Uue=z(()=>{"use strict";o(eJe,"baseSortBy");que=eJe});function tJe(e,t){if(e!==t){var r=e!==void 0,i=e===null,n=e===e,a=oo(e),s=t!==void 0,l=t===null,u=t===t,h=oo(t);if(!l&&!h&&!a&&e>t||a&&s&&u&&!l&&!h||i&&s&&u||!r&&u||!n)return 1;if(!i&&!a&&!h&&e<t||h&&r&&n&&!i&&!a||l&&r&&n||!s&&n||!u)return-1}return 0}var Hue,Yue=z(()=>{"use strict";Np();o(tJe,"compareAscending");Hue=tJe});function rJe(e,t,r){for(var i=-1,n=e.criteria,a=t.criteria,s=n.length,l=r.length;++i<s;){var u=Hue(n[i],a[i]);if(u){if(i>=l)return u;var h=r[i];return u*(h=="desc"?-1:1)}}return e.index-t.index}var jue,Xue=z(()=>{"use strict";Yue();o(rJe,"compareMultiple");jue=rJe});function iJe(e,t,r){t.length?t=wc(t,function(a){return Or(a)?function(s){return Dd(s,a.length===1?a[0]:a)}:a}):t=[Ls];var i=-1;t=wc(t,Td(Ia));var n=KS(e,function(a,s,l){var u=wc(t,function(h){return h(a)});return{criteria:u,index:++i,value:a}});return que(n,function(a,s){return jue(a,s,r)})}var Kue,Zue=z(()=>{"use strict";sb();Cb();Hu();MI();Uue();pb();Xue();pd();An();o(iJe,"baseOrderBy");Kue=iJe});var nJe,Que,Jue=z(()=>{"use strict";EI();nJe=qS("length"),Que=nJe});function gJe(e){for(var t=ehe.lastIndex=0;ehe.test(e);)++t;return t}var the,aJe,sJe,oJe,lJe,cJe,uJe,PI,BI,hJe,rhe,ihe,nhe,dJe,ahe,she,fJe,pJe,mJe,ehe,ohe,lhe=z(()=>{"use strict";the="\\ud800-\\udfff",aJe="\\u0300-\\u036f",sJe="\\ufe20-\\ufe2f",oJe="\\u20d0-\\u20ff",lJe=aJe+sJe+oJe,cJe="\\ufe0e\\ufe0f",uJe="["+the+"]",PI="["+lJe+"]",BI="\\ud83c[\\udffb-\\udfff]",hJe="(?:"+PI+"|"+BI+")",rhe="[^"+the+"]",ihe="(?:\\ud83c[\\udde6-\\uddff]){2}",nhe="[\\ud800-\\udbff][\\udc00-\\udfff]",dJe="\\u200d",ahe=hJe+"?",she="["+cJe+"]?",fJe="(?:"+dJe+"(?:"+[rhe,ihe,nhe].join("|")+")"+she+ahe+")*",pJe=she+ahe+fJe,mJe="(?:"+[rhe+PI+"?",PI,ihe,nhe,uJe].join("|")+")",ehe=RegExp(BI+"(?="+BI+")|"+mJe+pJe,"g");o(gJe,"unicodeSize");ohe=gJe});function yJe(e){return sle(e)?ohe(e):Que(e)}var che,uhe=z(()=>{"use strict";Jue();ole();lhe();o(yJe,"stringSize");che=yJe});function vJe(e,t){return Vue(e,t,function(r,i){return WS(e,i)})}var hhe,dhe=z(()=>{"use strict";Wue();SI();o(vJe,"basePick");hhe=vJe});var xJe,zp,fhe=z(()=>{"use strict";dhe();rle();xJe=tle(function(e,t){return e==null?{}:hhe(e,t)}),zp=xJe});function CJe(e,t,r,i){for(var n=-1,a=TJe(bJe((t-e)/(r||1)),0),s=Array(a);a--;)s[i?a:++n]=e,e+=r;return s}var bJe,TJe,phe,mhe=z(()=>{"use strict";bJe=Math.ceil,TJe=Math.max;o(CJe,"baseRange");phe=CJe});function kJe(e){return function(t,r,i){return i&&typeof i!="number"&&Vu(t,r,i)&&(r=i=void 0),t=Eg(t),r===void 0?(r=t,t=0):r=Eg(r),i=i===void 0?t<r?1:-1:Eg(i),phe(t,r,i,e)}}var ghe,yhe=z(()=>{"use strict";mhe();db();GN();o(kJe,"createRange");ghe=kJe});var wJe,qo,vhe=z(()=>{"use strict";yhe();wJe=ghe(),qo=wJe});function SJe(e,t,r,i,n){return n(e,function(a,s,l){r=i?(i=!1,a):t(r,a,s,l)}),r}var xhe,bhe=z(()=>{"use strict";o(SJe,"baseReduce");xhe=SJe});function EJe(e,t,r){var i=Or(e)?lle:xhe,n=arguments.length<3;return i(e,Ia(t,4),r,n,Ld)}var Rc,The=z(()=>{"use strict";cle();Sb();Hu();bhe();An();o(EJe,"reduce");Rc=EJe});function DJe(e){if(e==null)return 0;if(ia(e))return _ue(e)?che(e):e.length;var t=lo(e);return t==AJe||t==_Je?e.size:Mg(e).length}var AJe,_Je,FI,Che=z(()=>{"use strict";dS();Bp();Ac();Due();uhe();AJe="[object Map]",_Je="[object Set]";o(DJe,"size");FI=DJe});var RJe,Lc,khe=z(()=>{"use strict";vS();Zue();hb();db();RJe=xd(function(e,t){if(e==null)return[];var r=t.length;return r>1&&Vu(e,t[0],t[1])?t=[]:r>2&&Vu(t[0],t[1],t[2])&&(t=[t[0]]),Kue(e,$g(t,1),[])}),Lc=RJe});var LJe,MJe,whe,She=z(()=>{"use strict";uI();Dse();BS();LJe=1/0,MJe=Rd&&1/Ug(new Rd([,-0]))[1]==LJe?function(e){return new Rd(e)}:_se,whe=MJe});function IJe(e,t,r){var i=-1,n=zse,a=e.length,s=!0,l=[],u=l;if(r)s=!1,n=lue;else if(a>=NJe){var h=t?null:whe(e);if(h)return Ug(h);s=!1,n=OS,u=new IS}else u=t?[]:l;e:for(;++i<a;){var d=e[i],f=t?t(d):d;if(d=r||d!==0?d:0,s&&f===f){for(var p=u.length;p--;)if(u[p]===f)continue e;t&&u.push(f),l.push(d)}else n(u,f,r)||(u!==l&&u.push(f),l.push(d))}return l}var NJe,Ehe,Ahe=z(()=>{"use strict";yI();Gse();cue();vI();She();BS();NJe=200;o(IJe,"baseUniq");Ehe=IJe});var OJe,$I,_he=z(()=>{"use strict";vS();hb();Ahe();DI();OJe=xd(function(e){return Ehe($g(e,1,jS,!0))}),$I=OJe});function BJe(e){var t=++PJe;return gS(e)+t}var PJe,Gp,Dhe=z(()=>{"use strict";rI();PJe=0;o(BJe,"uniqueId");Gp=BJe});function FJe(e,t,r){for(var i=-1,n=e.length,a=t.length,s={};++i<n;){var l=i<a?t[i]:void 0;r(s,e[i],l)}return s}var Rhe,Lhe=z(()=>{"use strict";o(FJe,"baseZipObject");Rhe=FJe});function $Je(e,t){return Rhe(e||[],t||[],vd)}var e3,Mhe=z(()=>{"use strict";ub();Lhe();o($Je,"zipObject");e3=$Je});var ci=z(()=>{"use strict";fce();pce();qN();eue();hue();pue();xue();iI();LI();Tue();Cue();Aue();An();Nue();ob();Iue();qu();uue();bue();Oue();Pue();Bue();Fue();$ue();Qce();fhe();vhe();The();Che();khe();_he();Dhe();Mue();Mhe();});function Ihe(e,t){e[t]?e[t]++:e[t]=1}function Ohe(e,t){--e[t]||delete e[t]}function Db(e,t,r,i){var n=""+t,a=""+r;if(!e&&n>a){var s=n;n=a,a=s}return n+Nhe+a+Nhe+(yi(i)?zJe:i)}function GJe(e,t,r,i){var n=""+t,a=""+r;if(!e&&n>a){var s=n;n=a,a=s}var l={v:n,w:a};return i&&(l.name=i),l}function zI(e,t){return Db(e,t.v,t.w,t.name)}var zJe,Vp,Nhe,ui,t3=z(()=>{"use strict";ci();zJe="\0",Vp="\0",Nhe="",ui=class{static{o(this,"Graph")}constructor(t={}){this._isDirected=Object.prototype.hasOwnProperty.call(t,"directed")?t.directed:!0,this._isMultigraph=Object.prototype.hasOwnProperty.call(t,"multigraph")?t.multigraph:!1,this._isCompound=Object.prototype.hasOwnProperty.call(t,"compound")?t.compound:!1,this._label=void 0,this._defaultNodeLabelFn=Ns(void 0),this._defaultEdgeLabelFn=Ns(void 0),this._nodes={},this._isCompound&&(this._parent={},this._children={},this._children[Vp]={}),this._in={},this._preds={},this._out={},this._sucs={},this._edgeObjs={},this._edgeLabels={}}isDirected(){return this._isDirected}isMultigraph(){return this._isMultigraph}isCompound(){return this._isCompound}setGraph(t){return this._label=t,this}graph(){return this._label}setDefaultNodeLabel(t){return Sc(t)||(t=Ns(t)),this._defaultNodeLabelFn=t,this}nodeCount(){return this._nodeCount}nodes(){return cn(this._nodes)}sources(){var t=this;return ts(this.nodes(),function(r){return ZS(t._in[r])})}sinks(){var t=this;return ts(this.nodes(),function(r){return ZS(t._out[r])})}setNodes(t,r){var i=arguments,n=this;return tt(t,function(a){i.length>1?n.setNode(a,r):n.setNode(a)}),this}setNode(t,r){return Object.prototype.hasOwnProperty.call(this._nodes,t)?(arguments.length>1&&(this._nodes[t]=r),this):(this._nodes[t]=arguments.length>1?r:this._defaultNodeLabelFn(t),this._isCompound&&(this._parent[t]=Vp,this._children[t]={},this._children[Vp][t]=!0),this._in[t]={},this._preds[t]={},this._out[t]={},this._sucs[t]={},++this._nodeCount,this)}node(t){return this._nodes[t]}hasNode(t){return Object.prototype.hasOwnProperty.call(this._nodes,t)}removeNode(t){if(Object.prototype.hasOwnProperty.call(this._nodes,t)){var r=o(i=>this.removeEdge(this._edgeObjs[i]),"removeEdge");delete this._nodes[t],this._isCompound&&(this._removeFromParentsChildList(t),delete this._parent[t],tt(this.children(t),i=>{this.setParent(i)}),delete this._children[t]),tt(cn(this._in[t]),r),delete this._in[t],delete this._preds[t],tt(cn(this._out[t]),r),delete this._out[t],delete this._sucs[t],--this._nodeCount}return this}setParent(t,r){if(!this._isCompound)throw new Error("Cannot set parent in a non-compound graph");if(yi(r))r=Vp;else{r+="";for(var i=r;!yi(i);i=this.parent(i))if(i===t)throw new Error("Setting "+r+" as parent of "+t+" would create a cycle");this.setNode(r)}return this.setNode(t),this._removeFromParentsChildList(t),this._parent[t]=r,this._children[r][t]=!0,this}_removeFromParentsChildList(t){delete this._children[this._parent[t]][t]}parent(t){if(this._isCompound){var r=this._parent[t];if(r!==Vp)return r}}children(t){if(yi(t)&&(t=Vp),this._isCompound){var r=this._children[t];if(r)return cn(r)}else{if(t===Vp)return this.nodes();if(this.hasNode(t))return[]}}predecessors(t){var r=this._preds[t];if(r)return cn(r)}successors(t){var r=this._sucs[t];if(r)return cn(r)}neighbors(t){var r=this.predecessors(t);if(r)return $I(r,this.successors(t))}isLeaf(t){var r;return this.isDirected()?r=this.successors(t):r=this.neighbors(t),r.length===0}filterNodes(t){var r=new this.constructor({directed:this._isDirected,multigraph:this._isMultigraph,compound:this._isCompound});r.setGraph(this.graph());var i=this;tt(this._nodes,function(s,l){t(l)&&r.setNode(l,s)}),tt(this._edgeObjs,function(s){r.hasNode(s.v)&&r.hasNode(s.w)&&r.setEdge(s,i.edge(s))});var n={};function a(s){var l=i.parent(s);return l===void 0||r.hasNode(l)?(n[s]=l,l):l in n?n[l]:a(l)}return o(a,"findParent"),this._isCompound&&tt(r.nodes(),function(s){r.setParent(s,a(s))}),r}setDefaultEdgeLabel(t){return Sc(t)||(t=Ns(t)),this._defaultEdgeLabelFn=t,this}edgeCount(){return this._edgeCount}edges(){return co(this._edgeObjs)}setPath(t,r){var i=this,n=arguments;return Rc(t,function(a,s){return n.length>1?i.setEdge(a,s,r):i.setEdge(a,s),s}),this}setEdge(){var t,r,i,n,a=!1,s=arguments[0];typeof s=="object"&&s!==null&&"v"in s?(t=s.v,r=s.w,i=s.name,arguments.length===2&&(n=arguments[1],a=!0)):(t=s,r=arguments[1],i=arguments[3],arguments.length>2&&(n=arguments[2],a=!0)),t=""+t,r=""+r,yi(i)||(i=""+i);var l=Db(this._isDirected,t,r,i);if(Object.prototype.hasOwnProperty.call(this._edgeLabels,l))return a&&(this._edgeLabels[l]=n),this;if(!yi(i)&&!this._isMultigraph)throw new Error("Cannot set a named edge when isMultigraph = false");this.setNode(t),this.setNode(r),this._edgeLabels[l]=a?n:this._defaultEdgeLabelFn(t,r,i);var u=GJe(this._isDirected,t,r,i);return t=u.v,r=u.w,Object.freeze(u),this._edgeObjs[l]=u,Ihe(this._preds[r],t),Ihe(this._sucs[t],r),this._in[r][l]=u,this._out[t][l]=u,this._edgeCount++,this}edge(t,r,i){var n=arguments.length===1?zI(this._isDirected,arguments[0]):Db(this._isDirected,t,r,i);return this._edgeLabels[n]}hasEdge(t,r,i){var n=arguments.length===1?zI(this._isDirected,arguments[0]):Db(this._isDirected,t,r,i);return Object.prototype.hasOwnProperty.call(this._edgeLabels,n)}removeEdge(t,r,i){var n=arguments.length===1?zI(this._isDirected,arguments[0]):Db(this._isDirected,t,r,i),a=this._edgeObjs[n];return a&&(t=a.v,r=a.w,delete this._edgeLabels[n],delete this._edgeObjs[n],Ohe(this._preds[r],t),Ohe(this._sucs[t],r),delete this._in[r][n],delete this._out[t][n],this._edgeCount--),this}inEdges(t,r){var i=this._in[t];if(i){var n=co(i);return r?ts(n,function(a){return a.v===r}):n}}outEdges(t,r){var i=this._out[t];if(i){var n=co(i);return r?ts(n,function(a){return a.w===r}):n}}nodeEdges(t,r){var i=this.inEdges(t,r);if(i)return i.concat(this.outEdges(t,r))}};ui.prototype._nodeCount=0;ui.prototype._edgeCount=0;o(Ihe,"incrementOrInitEntry");o(Ohe,"decrementOrRemoveEntry");o(Db,"edgeArgsToId");o(GJe,"edgeArgsToObj");o(zI,"edgeObjToId")});var Uo=z(()=>{"use strict";t3()});function Phe(e){e._prev._next=e._next,e._next._prev=e._prev,delete e._next,delete e._prev}function VJe(e,t){if(e!=="_next"&&e!=="_prev")return t}var i3,Bhe=z(()=>{"use strict";i3=class{static{o(this,"List")}constructor(){var t={};t._next=t._prev=t,this._sentinel=t}dequeue(){var t=this._sentinel,r=t._prev;if(r!==t)return Phe(r),r}enqueue(t){var r=this._sentinel;t._prev&&t._next&&Phe(t),t._next=r._next,r._next._prev=t,r._next=t,t._prev=r}toString(){for(var t=[],r=this._sentinel,i=r._prev;i!==r;)t.push(JSON.stringify(i,VJe)),i=i._prev;return"["+t.join(", ")+"]"}};o(Phe,"unlink");o(VJe,"filterOutLinks")});function Fhe(e,t){if(e.nodeCount()<=1)return[];var r=UJe(e,t||WJe),i=qJe(r.graph,r.buckets,r.zeroIdx);return Wo(Jr(i,function(n){return e.outEdges(n.v,n.w)}))}function qJe(e,t,r){for(var i=[],n=t[t.length-1],a=t[0],s;e.nodeCount();){for(;s=a.dequeue();)GI(e,t,r,s);for(;s=n.dequeue();)GI(e,t,r,s);if(e.nodeCount()){for(var l=t.length-2;l>0;--l)if(s=t[l].dequeue(),s){i=i.concat(GI(e,t,r,s,!0));break}}}return i}function GI(e,t,r,i,n){var a=n?[]:void 0;return tt(e.inEdges(i.v),function(s){var l=e.edge(s),u=e.node(s.v);n&&a.push({v:s.v,w:s.w}),u.out-=l,VI(t,r,u)}),tt(e.outEdges(i.v),function(s){var l=e.edge(s),u=s.w,h=e.node(u);h.in-=l,VI(t,r,h)}),e.removeNode(i.v),a}function UJe(e,t){var r=new ui,i=0,n=0;tt(e.nodes(),function(l){r.setNode(l,{v:l,in:0,out:0})}),tt(e.edges(),function(l){var u=r.edge(l.v,l.w)||0,h=t(l),d=u+h;r.setEdge(l.v,l.w,d),n=Math.max(n,r.node(l.v).out+=h),i=Math.max(i,r.node(l.w).in+=h)});var a=qo(n+i+3).map(function(){return new i3}),s=i+1;return tt(r.nodes(),function(l){VI(a,s,r.node(l))}),{graph:r,buckets:a,zeroIdx:s}}function VI(e,t,r){r.out?r.in?e[r.out-r.in+t].enqueue(r):e[e.length-1].enqueue(r):e[0].enqueue(r)}var WJe,$he=z(()=>{"use strict";ci();Uo();Bhe();WJe=Ns(1);o(Fhe,"greedyFAS");o(qJe,"doGreedyFAS");o(GI,"removeNode");o(UJe,"buildState");o(VI,"assignBucket")});function zhe(e){var t=e.graph().acyclicer==="greedy"?Fhe(e,r(e)):HJe(e);tt(t,function(i){var n=e.edge(i);e.removeEdge(i),n.forwardName=i.name,n.reversed=!0,e.setEdge(i.w,i.v,n,Gp("rev"))});function r(i){return function(n){return i.edge(n).weight}}o(r,"weightFn")}function HJe(e){var t=[],r={},i={};function n(a){Object.prototype.hasOwnProperty.call(i,a)||(i[a]=!0,r[a]=!0,tt(e.outEdges(a),function(s){Object.prototype.hasOwnProperty.call(r,s.w)?t.push(s):n(s.w)}),delete r[a])}return o(n,"dfs"),tt(e.nodes(),n),t}function Ghe(e){tt(e.edges(),function(t){var r=e.edge(t);if(r.reversed){e.removeEdge(t);var i=r.forwardName;delete r.reversed,delete r.forwardName,e.setEdge(t.w,t.v,r,i)}})}var WI=z(()=>{"use strict";ci();$he();o(zhe,"run");o(HJe,"dfsFAS");o(Ghe,"undo")});function Mc(e,t,r,i){var n;do n=Gp(i);while(e.hasNode(n));return r.dummy=t,e.setNode(n,r),n}function Whe(e){var t=new ui().setGraph(e.graph());return tt(e.nodes(),function(r){t.setNode(r,e.node(r))}),tt(e.edges(),function(r){var i=t.edge(r.v,r.w)||{weight:0,minlen:1},n=e.edge(r);t.setEdge(r.v,r.w,{weight:i.weight+n.weight,minlen:Math.max(i.minlen,n.minlen)})}),t}function n3(e){var t=new ui({multigraph:e.isMultigraph()}).setGraph(e.graph());return tt(e.nodes(),function(r){e.children(r).length||t.setNode(r,e.node(r))}),tt(e.edges(),function(r){t.setEdge(r,e.edge(r))}),t}function qI(e,t){var r=e.x,i=e.y,n=t.x-r,a=t.y-i,s=e.width/2,l=e.height/2;if(!n&&!a)throw new Error("Not possible to find intersection inside of the rectangle");var u,h;return Math.abs(a)*s>Math.abs(n)*l?(a<0&&(l=-l),u=l*n/a,h=l):(n<0&&(s=-s),u=s,h=s*a/n),{x:r+u,y:i+h}}function Nd(e){var t=Jr(qo(HI(e)+1),function(){return[]});return tt(e.nodes(),function(r){var i=e.node(r),n=i.rank;yi(n)||(t[n][i.order]=r)}),t}function qhe(e){var t=Yu(Jr(e.nodes(),function(r){return e.node(r).rank}));tt(e.nodes(),function(r){var i=e.node(r);_b(i,"rank")&&(i.rank-=t)})}function Uhe(e){var t=Yu(Jr(e.nodes(),function(a){return e.node(a).rank})),r=[];tt(e.nodes(),function(a){var s=e.node(a).rank-t;r[s]||(r[s]=[]),r[s].push(a)});var i=0,n=e.graph().nodeRankFactor;tt(r,function(a,s){yi(a)&&s%n!==0?--i:i&&tt(a,function(l){e.node(l).rank+=i})})}function UI(e,t,r,i){var n={width:0,height:0};return arguments.length>=4&&(n.rank=r,n.order=i),Mc(e,"border",n,t)}function HI(e){return Os(Jr(e.nodes(),function(t){var r=e.node(t).rank;if(!yi(r))return r}))}function Hhe(e,t){var r={lhs:[],rhs:[]};return tt(e,function(i){t(i)?r.lhs.push(i):r.rhs.push(i)}),r}function Yhe(e,t){var r=YS();try{return t()}finally{console.log(e+" time: "+(YS()-r)+"ms")}}function jhe(e,t){return t()}var Nc=z(()=>{"use strict";ci();Uo();o(Mc,"addDummyNode");o(Whe,"simplify");o(n3,"asNonCompoundGraph");o(qI,"intersectRect");o(Nd,"buildLayerMatrix");o(qhe,"normalizeRanks");o(Uhe,"removeEmptyRanks");o(UI,"addBorderNode");o(HI,"maxRank");o(Hhe,"partition");o(Yhe,"time");o(jhe,"notime")});function Khe(e){function t(r){var i=e.children(r),n=e.node(r);if(i.length&&tt(i,t),Object.prototype.hasOwnProperty.call(n,"minRank")){n.borderLeft=[],n.borderRight=[];for(var a=n.minRank,s=n.maxRank+1;a<s;++a)Xhe(e,"borderLeft","_bl",r,n,a),Xhe(e,"borderRight","_br",r,n,a)}}o(t,"dfs"),tt(e.children(),t)}function Xhe(e,t,r,i,n,a){var s={width:0,height:0,rank:a,borderType:t},l=n[t][a-1],u=Mc(e,"border",s,r);n[t][a]=u,e.setParent(u,i),l&&e.setEdge(l,u,{weight:1})}var Zhe=z(()=>{"use strict";ci();Nc();o(Khe,"addBorderSegments");o(Xhe,"addBorderNode")});function Jhe(e){var t=e.graph().rankdir.toLowerCase();(t==="lr"||t==="rl")&&tde(e)}function ede(e){var t=e.graph().rankdir.toLowerCase();(t==="bt"||t==="rl")&&YJe(e),(t==="lr"||t==="rl")&&(jJe(e),tde(e))}function tde(e){tt(e.nodes(),function(t){Qhe(e.node(t))}),tt(e.edges(),function(t){Qhe(e.edge(t))})}function Qhe(e){var t=e.width;e.width=e.height,e.height=t}function YJe(e){tt(e.nodes(),function(t){YI(e.node(t))}),tt(e.edges(),function(t){var r=e.edge(t);tt(r.points,YI),Object.prototype.hasOwnProperty.call(r,"y")&&YI(r)})}function YI(e){e.y=-e.y}function jJe(e){tt(e.nodes(),function(t){jI(e.node(t))}),tt(e.edges(),function(t){var r=e.edge(t);tt(r.points,jI),Object.prototype.hasOwnProperty.call(r,"x")&&jI(r)})}function jI(e){var t=e.x;e.x=e.y,e.y=t}var rde=z(()=>{"use strict";ci();o(Jhe,"adjust");o(ede,"undo");o(tde,"swapWidthHeight");o(Qhe,"swapWidthHeightOne");o(YJe,"reverseY");o(YI,"reverseYOne");o(jJe,"swapXY");o(jI,"swapXYOne")});function ide(e){e.graph().dummyChains=[],tt(e.edges(),function(t){KJe(e,t)})}function KJe(e,t){var r=t.v,i=e.node(r).rank,n=t.w,a=e.node(n).rank,s=t.name,l=e.edge(t),u=l.labelRank;if(a!==i+1){e.removeEdge(t);var h=void 0,d,f;for(f=0,++i;i<a;++f,++i)l.points=[],h={width:0,height:0,edgeLabel:l,edgeObj:t,rank:i},d=Mc(e,"edge",h,"_d"),i===u&&(h.width=l.width,h.height=l.height,h.dummy="edge-label",h.labelpos=l.labelpos),e.setEdge(r,d,{weight:l.weight},s),f===0&&e.graph().dummyChains.push(d),r=d;e.setEdge(r,n,{weight:l.weight},s)}}function nde(e){tt(e.graph().dummyChains,function(t){var r=e.node(t),i=r.edgeLabel,n;for(e.setEdge(r.edgeObj,i);r.dummy;)n=e.successors(t)[0],e.removeNode(t),i.points.push({x:r.x,y:r.y}),r.dummy==="edge-label"&&(i.x=r.x,i.y=r.y,i.width=r.width,i.height=r.height),t=n,r=e.node(t)})}var XI=z(()=>{"use strict";ci();Nc();o(ide,"run");o(KJe,"normalizeEdge");o(nde,"undo")});function Rb(e){var t={};function r(i){var n=e.node(i);if(Object.prototype.hasOwnProperty.call(t,i))return n.rank;t[i]=!0;var a=Yu(Jr(e.outEdges(i),function(s){return r(s.w)-e.edge(s).minlen}));return(a===Number.POSITIVE_INFINITY||a===void 0||a===null)&&(a=0),n.rank=a}o(r,"dfs"),tt(e.sources(),r)}function Wp(e,t){return e.node(t.w).rank-e.node(t.v).rank-e.edge(t).minlen}var a3=z(()=>{"use strict";ci();o(Rb,"longestPath");o(Wp,"slack")});function s3(e){var t=new ui({directed:!1}),r=e.nodes()[0],i=e.nodeCount();t.setNode(r,{});for(var n,a;ZJe(t,e)<i;)n=QJe(t,e),a=t.hasNode(n.v)?Wp(e,n):-Wp(e,n),JJe(t,e,a);return t}function ZJe(e,t){function r(i){tt(t.nodeEdges(i),function(n){var a=n.v,s=i===a?n.w:a;!e.hasNode(s)&&!Wp(t,n)&&(e.setNode(s,{}),e.setEdge(i,s,{}),r(s))})}return o(r,"dfs"),tt(e.nodes(),r),e.nodeCount()}function QJe(e,t){return $p(t.edges(),function(r){if(e.hasNode(r.v)!==e.hasNode(r.w))return Wp(t,r)})}function JJe(e,t,r){tt(e.nodes(),function(i){t.node(i).rank+=r})}var KI=z(()=>{"use strict";ci();Uo();a3();o(s3,"feasibleTree");o(ZJe,"tightTree");o(QJe,"findMinSlackEdge");o(JJe,"shiftRanks")});var sde=z(()=>{"use strict"});var ZI=z(()=>{"use strict"});var H2r,QI=z(()=>{"use strict";ci();ZI();H2r=Ns(1)});var ode=z(()=>{"use strict";QI()});var JI=z(()=>{"use strict"});var lde=z(()=>{"use strict";JI()});var iTr,cde=z(()=>{"use strict";ci();iTr=Ns(1)});function e9(e){var t={},r={},i=[];function n(a){if(Object.prototype.hasOwnProperty.call(r,a))throw new Lb;Object.prototype.hasOwnProperty.call(t,a)||(r[a]=!0,t[a]=!0,tt(e.predecessors(a),n),delete r[a],i.push(a))}if(o(n,"visit"),tt(e.sinks(),n),FI(t)!==e.nodeCount())throw new Lb;return i}function Lb(){}var t9=z(()=>{"use strict";ci();e9.CycleException=Lb;o(e9,"topsort");o(Lb,"CycleException");Lb.prototype=new Error});var ude=z(()=>{"use strict";t9()});function o3(e,t,r){Or(t)||(t=[t]);var i=(e.isDirected()?e.successors:e.neighbors).bind(e),n=[],a={};return tt(t,function(s){if(!e.hasNode(s))throw new Error("Graph does not have node: "+s);hde(e,s,r==="post",a,i,n)}),n}function hde(e,t,r,i,n,a){Object.prototype.hasOwnProperty.call(i,t)||(i[t]=!0,r||a.push(t),tt(n(t),function(s){hde(e,s,r,i,n,a)}),r&&a.push(t))}var r9=z(()=>{"use strict";ci();o(o3,"dfs");o(hde,"doDfs")});function i9(e,t){return o3(e,t,"post")}var dde=z(()=>{"use strict";r9();o(i9,"postorder")});function n9(e,t){return o3(e,t,"pre")}var fde=z(()=>{"use strict";r9();o(n9,"preorder")});var pde=z(()=>{"use strict";ZI();t3()});var mde=z(()=>{"use strict";sde();QI();ode();lde();cde();ude();dde();fde();pde();JI();t9()});function Od(e){e=Whe(e),Rb(e);var t=s3(e);s9(t),a9(t,e);for(var r,i;r=xde(t);)i=bde(t,e,r),Tde(t,e,r,i)}function a9(e,t){var r=i9(e,e.nodes());r=r.slice(0,r.length-1),tt(r,function(i){net(e,t,i)})}function net(e,t,r){var i=e.node(r),n=i.parent;e.edge(r,n).cutvalue=yde(e,t,r)}function yde(e,t,r){var i=e.node(r),n=i.parent,a=!0,s=t.edge(r,n),l=0;return s||(a=!1,s=t.edge(n,r)),l=s.weight,tt(t.nodeEdges(r),function(u){var h=u.v===r,d=h?u.w:u.v;if(d!==n){var f=h===a,p=t.edge(u).weight;if(l+=f?p:-p,set(e,r,d)){var m=e.edge(r,d).cutvalue;l+=f?-m:m}}}),l}function s9(e,t){arguments.length<2&&(t=e.nodes()[0]),vde(e,{},1,t)}function vde(e,t,r,i,n){var a=r,s=e.node(i);return t[i]=!0,tt(e.neighbors(i),function(l){Object.prototype.hasOwnProperty.call(t,l)||(r=vde(e,t,r,l,i))}),s.low=a,s.lim=r++,n?s.parent=n:delete s.parent,r}function xde(e){return Xg(e.edges(),function(t){return e.edge(t).cutvalue<0})}function bde(e,t,r){var i=r.v,n=r.w;t.hasEdge(i,n)||(i=r.w,n=r.v);var a=e.node(i),s=e.node(n),l=a,u=!1;a.lim>s.lim&&(l=s,u=!0);var h=ts(t.edges(),function(d){return u===gde(e,e.node(d.v),l)&&u!==gde(e,e.node(d.w),l)});return $p(h,function(d){return Wp(t,d)})}function Tde(e,t,r,i){var n=r.v,a=r.w;e.removeEdge(n,a),e.setEdge(i.v,i.w,{}),s9(e),a9(e,t),aet(e,t)}function aet(e,t){var r=Xg(e.nodes(),function(n){return!t.node(n).parent}),i=n9(e,r);i=i.slice(1),tt(i,function(n){var a=e.node(n).parent,s=t.edge(n,a),l=!1;s||(s=t.edge(a,n),l=!0),t.node(n).rank=t.node(a).rank+(l?s.minlen:-s.minlen)})}function set(e,t,r){return e.hasEdge(t,r)}function gde(e,t,r){return r.low<=t.lim&&t.lim<=r.lim}var Cde=z(()=>{"use strict";ci();mde();Nc();KI();a3();Od.initLowLimValues=s9;Od.initCutValues=a9;Od.calcCutValue=yde;Od.leaveEdge=xde;Od.enterEdge=bde;Od.exchangeEdges=Tde;o(Od,"networkSimplex");o(a9,"initCutValues");o(net,"assignCutValue");o(yde,"calcCutValue");o(s9,"initLowLimValues");o(vde,"dfsAssignLowLim");o(xde,"leaveEdge");o(bde,"enterEdge");o(Tde,"exchangeEdges");o(aet,"updateRanks");o(set,"isTreeEdge");o(gde,"isDescendant")});function o9(e){switch(e.graph().ranker){case"network-simplex":kde(e);break;case"tight-tree":cet(e);break;case"longest-path":oet(e);break;default:kde(e)}}function cet(e){Rb(e),s3(e)}function kde(e){Od(e)}var oet,l9=z(()=>{"use strict";KI();Cde();a3();o(o9,"rank");oet=Rb;o(cet,"tightTreeRanker");o(kde,"networkSimplexRanker")});function wde(e){var t=Mc(e,"root",{},"_root"),r=uet(e),i=Os(co(r))-1,n=2*i+1;e.graph().nestingRoot=t,tt(e.edges(),function(s){e.edge(s).minlen*=n});var a=het(e)+1;tt(e.children(),function(s){Sde(e,t,n,a,i,r,s)}),e.graph().nodeRankFactor=n}function Sde(e,t,r,i,n,a,s){var l=e.children(s);if(!l.length){s!==t&&e.setEdge(t,s,{weight:0,minlen:r});return}var u=UI(e,"_bt"),h=UI(e,"_bb"),d=e.node(s);e.setParent(u,s),d.borderTop=u,e.setParent(h,s),d.borderBottom=h,tt(l,function(f){Sde(e,t,r,i,n,a,f);var p=e.node(f),m=p.borderTop?p.borderTop:f,g=p.borderBottom?p.borderBottom:f,y=p.borderTop?i:2*i,v=m!==g?1:n-a[s]+1;e.setEdge(u,m,{weight:y,minlen:v,nestingEdge:!0}),e.setEdge(g,h,{weight:y,minlen:v,nestingEdge:!0})}),e.parent(s)||e.setEdge(t,u,{weight:0,minlen:n+a[s]})}function uet(e){var t={};function r(i,n){var a=e.children(i);a&&a.length&&tt(a,function(s){r(s,n+1)}),t[i]=n}return o(r,"dfs"),tt(e.children(),function(i){r(i,1)}),t}function het(e){return Rc(e.edges(),function(t,r){return t+e.edge(r).weight},0)}function Ede(e){var t=e.graph();e.removeNode(t.nestingRoot),delete t.nestingRoot,tt(e.edges(),function(r){var i=e.edge(r);i.nestingEdge&&e.removeEdge(r)})}var Ade=z(()=>{"use strict";ci();Nc();o(wde,"run");o(Sde,"dfs");o(uet,"treeDepths");o(het,"sumWeights");o(Ede,"cleanup")});function _de(e,t,r){var i={},n;tt(r,function(a){for(var s=e.parent(a),l,u;s;){if(l=e.parent(s),l?(u=i[l],i[l]=s):(u=n,n=s),u&&u!==s){t.setEdge(u,s);return}s=l}})}var Dde=z(()=>{"use strict";ci();o(_de,"addSubgraphConstraints")});function Rde(e,t,r){var i=fet(e),n=new ui({compound:!0}).setGraph({root:i}).setDefaultNodeLabel(function(a){return e.node(a)});return tt(e.nodes(),function(a){var s=e.node(a),l=e.parent(a);(s.rank===t||s.minRank<=t&&t<=s.maxRank)&&(n.setNode(a),n.setParent(a,l||i),tt(e[r](a),function(u){var h=u.v===a?u.w:u.v,d=n.edge(h,a),f=yi(d)?0:d.weight;n.setEdge(h,a,{weight:e.edge(u).weight+f})}),Object.prototype.hasOwnProperty.call(s,"minRank")&&n.setNode(a,{borderLeft:s.borderLeft[t],borderRight:s.borderRight[t]}))}),n}function fet(e){for(var t;e.hasNode(t=Gp("_root")););return t}var Lde=z(()=>{"use strict";ci();Uo();o(Rde,"buildLayerGraph");o(fet,"createRootNode")});function Mde(e,t){for(var r=0,i=1;i<t.length;++i)r+=pet(e,t[i-1],t[i]);return r}function pet(e,t,r){for(var i=e3(r,Jr(r,function(h,d){return d})),n=Wo(Jr(t,function(h){return Lc(Jr(e.outEdges(h),function(d){return{pos:i[d.w],weight:e.edge(d).weight}}),"pos")})),a=1;a<r.length;)a<<=1;var s=2*a-1;a-=1;var l=Jr(new Array(s),function(){return 0}),u=0;return tt(n.forEach(function(h){var d=h.pos+a;l[d]+=h.weight;for(var f=0;d>0;)d%2&&(f+=l[d+1]),d=d-1>>1,l[d]+=h.weight;u+=h.weight*f})),u}var Nde=z(()=>{"use strict";ci();o(Mde,"crossCount");o(pet,"twoLayerCrossCount")});function Ide(e){var t={},r=ts(e.nodes(),function(l){return!e.children(l).length}),i=Os(Jr(r,function(l){return e.node(l).rank})),n=Jr(qo(i+1),function(){return[]});function a(l){if(!_b(t,l)){t[l]=!0;var u=e.node(l);n[u.rank].push(l),tt(e.successors(l),a)}}o(a,"dfs");var s=Lc(r,function(l){return e.node(l).rank});return tt(s,a),n}var Ode=z(()=>{"use strict";ci();o(Ide,"initOrder")});function Pde(e,t){return Jr(t,function(r){var i=e.inEdges(r);if(i.length){var n=Rc(i,function(a,s){var l=e.edge(s),u=e.node(s.v);return{sum:a.sum+l.weight*u.order,weight:a.weight+l.weight}},{sum:0,weight:0});return{v:r,barycenter:n.sum/n.weight,weight:n.weight}}else return{v:r}})}var Bde=z(()=>{"use strict";ci();o(Pde,"barycenter")});function Fde(e,t){var r={};tt(e,function(n,a){var s=r[n.v]={indegree:0,in:[],out:[],vs:[n.v],i:a};yi(n.barycenter)||(s.barycenter=n.barycenter,s.weight=n.weight)}),tt(t.edges(),function(n){var a=r[n.v],s=r[n.w];!yi(a)&&!yi(s)&&(s.indegree++,a.out.push(r[n.w]))});var i=ts(r,function(n){return!n.indegree});return met(i)}function met(e){var t=[];function r(a){return function(s){s.merged||(yi(s.barycenter)||yi(a.barycenter)||s.barycenter>=a.barycenter)&&get(a,s)}}o(r,"handleIn");function i(a){return function(s){s.in.push(a),--s.indegree===0&&e.push(s)}}for(o(i,"handleOut");e.length;){var n=e.pop();t.push(n),tt(n.in.reverse(),r(n)),tt(n.out,i(n))}return Jr(ts(t,function(a){return!a.merged}),function(a){return zp(a,["vs","i","barycenter","weight"])})}function get(e,t){var r=0,i=0;e.weight&&(r+=e.barycenter*e.weight,i+=e.weight),t.weight&&(r+=t.barycenter*t.weight,i+=t.weight),e.vs=t.vs.concat(e.vs),e.barycenter=r/i,e.weight=i,e.i=Math.min(t.i,e.i),t.merged=!0}var $de=z(()=>{"use strict";ci();o(Fde,"resolveConflicts");o(met,"doResolveConflicts");o(get,"mergeEntries")});function Gde(e,t){var r=Hhe(e,function(d){return Object.prototype.hasOwnProperty.call(d,"barycenter")}),i=r.lhs,n=Lc(r.rhs,function(d){return-d.i}),a=[],s=0,l=0,u=0;i.sort(yet(!!t)),u=zde(a,n,u),tt(i,function(d){u+=d.vs.length,a.push(d.vs),s+=d.barycenter*d.weight,l+=d.weight,u=zde(a,n,u)});var h={vs:Wo(a)};return l&&(h.barycenter=s/l,h.weight=l),h}function zde(e,t,r){for(var i;t.length&&(i=Md(t)).i<=r;)t.pop(),e.push(i.vs),r++;return r}function yet(e){return function(t,r){return t.barycenter<r.barycenter?-1:t.barycenter>r.barycenter?1:e?r.i-t.i:t.i-r.i}}var Vde=z(()=>{"use strict";ci();Nc();o(Gde,"sort");o(zde,"consumeUnsortable");o(yet,"compareWithBias")});function c9(e,t,r,i){var n=e.children(t),a=e.node(t),s=a?a.borderLeft:void 0,l=a?a.borderRight:void 0,u={};s&&(n=ts(n,function(g){return g!==s&&g!==l}));var h=Pde(e,n);tt(h,function(g){if(e.children(g.v).length){var y=c9(e,g.v,r,i);u[g.v]=y,Object.prototype.hasOwnProperty.call(y,"barycenter")&&xet(g,y)}});var d=Fde(h,r);vet(d,u);var f=Gde(d,i);if(s&&(f.vs=Wo([s,f.vs,l]),e.predecessors(s).length)){var p=e.node(e.predecessors(s)[0]),m=e.node(e.predecessors(l)[0]);Object.prototype.hasOwnProperty.call(f,"barycenter")||(f.barycenter=0,f.weight=0),f.barycenter=(f.barycenter*f.weight+p.order+m.order)/(f.weight+2),f.weight+=2}return f}function vet(e,t){tt(e,function(r){r.vs=Wo(r.vs.map(function(i){return t[i]?t[i].vs:i}))})}function xet(e,t){yi(e.barycenter)?(e.barycenter=t.barycenter,e.weight=t.weight):(e.barycenter=(e.barycenter*e.weight+t.barycenter*t.weight)/(e.weight+t.weight),e.weight+=t.weight)}var Wde=z(()=>{"use strict";ci();Bde();$de();Vde();o(c9,"sortSubgraph");o(vet,"expandSubgraphs");o(xet,"mergeBarycenters")});function Hde(e){var t=HI(e),r=qde(e,qo(1,t+1),"inEdges"),i=qde(e,qo(t-1,-1,-1),"outEdges"),n=Ide(e);Ude(e,n);for(var a=Number.POSITIVE_INFINITY,s,l=0,u=0;u<4;++l,++u){bet(l%2?r:i,l%4>=2),n=Nd(e);var h=Mde(e,n);h<a&&(u=0,s=gI(n),a=h)}Ude(e,s)}function qde(e,t,r){return Jr(t,function(i){return Rde(e,i,r)})}function bet(e,t){var r=new ui;tt(e,function(i){var n=i.graph().root,a=c9(i,n,r,t);tt(a.vs,function(s,l){i.node(s).order=l}),_de(i,r,a.vs)})}function Ude(e,t){tt(t,function(r){tt(r,function(i,n){e.node(i).order=n})})}var Yde=z(()=>{"use strict";ci();Uo();Nc();Dde();Lde();Nde();Ode();Wde();o(Hde,"order");o(qde,"buildLayerGraphs");o(bet,"sweepLayerGraphs");o(Ude,"assignOrder")});function jde(e){var t=Cet(e);tt(e.graph().dummyChains,function(r){for(var i=e.node(r),n=i.edgeObj,a=Tet(e,t,n.v,n.w),s=a.path,l=a.lca,u=0,h=s[u],d=!0;r!==n.w;){if(i=e.node(r),d){for(;(h=s[u])!==l&&e.node(h).maxRank<i.rank;)u++;h===l&&(d=!1)}if(!d){for(;u<s.length-1&&e.node(h=s[u+1]).minRank<=i.rank;)u++;h=s[u]}e.setParent(r,h),r=e.successors(r)[0]}})}function Tet(e,t,r,i){var n=[],a=[],s=Math.min(t[r].low,t[i].low),l=Math.max(t[r].lim,t[i].lim),u,h;u=r;do u=e.parent(u),n.push(u);while(u&&(t[u].low>s||l>t[u].lim));for(h=u,u=i;(u=e.parent(u))!==h;)a.push(u);return{path:n.concat(a.reverse()),lca:h}}function Cet(e){var t={},r=0;function i(n){var a=r;tt(e.children(n),i),t[n]={low:a,lim:r++}}return o(i,"dfs"),tt(e.children(),i),t}var Xde=z(()=>{"use strict";ci();o(jde,"parentDummyChains");o(Tet,"findPath");o(Cet,"postorder")});function ket(e,t){var r={};function i(n,a){var s=0,l=0,u=n.length,h=Md(a);return tt(a,function(d,f){var p=Eet(e,d),m=p?e.node(p).order:u;(p||d===h)&&(tt(a.slice(l,f+1),function(g){tt(e.predecessors(g),function(y){var v=e.node(y),x=v.order;(x<s||m<x)&&!(v.dummy&&e.node(g).dummy)&&Kde(r,y,g)})}),l=f+1,s=m)}),a}return o(i,"visitLayer"),Rc(t,i),r}function wet(e,t){var r={};function i(a,s,l,u,h){var d;tt(qo(s,l),function(f){d=a[f],e.node(d).dummy&&tt(e.predecessors(d),function(p){var m=e.node(p);m.dummy&&(m.order<u||m.order>h)&&Kde(r,p,d)})})}o(i,"scan");function n(a,s){var l=-1,u,h=0;return tt(s,function(d,f){if(e.node(d).dummy==="border"){var p=e.predecessors(d);p.length&&(u=e.node(p[0]).order,i(s,h,f,l,u),h=f,l=u)}i(s,h,s.length,u,a.length)}),s}return o(n,"visitLayer"),Rc(t,n),r}function Eet(e,t){if(e.node(t).dummy)return Xg(e.predecessors(t),function(r){return e.node(r).dummy})}function Kde(e,t,r){if(t>r){var i=t;t=r,r=i}Object.prototype.hasOwnProperty.call(e,t)||Object.defineProperty(e,t,{enumerable:!0,configurable:!0,value:{},writable:!0});var n=e[t];Object.defineProperty(n,r,{enumerable:!0,configurable:!0,value:!0,writable:!0})}function Aet(e,t,r){if(t>r){var i=t;t=r,r=i}return!!e[t]&&Object.prototype.hasOwnProperty.call(e[t],r)}function _et(e,t,r,i){var n={},a={},s={};return tt(t,function(l){tt(l,function(u,h){n[u]=u,a[u]=u,s[u]=h})}),tt(t,function(l){var u=-1;tt(l,function(h){var d=i(h);if(d.length){d=Lc(d,function(y){return s[y]});for(var f=(d.length-1)/2,p=Math.floor(f),m=Math.ceil(f);p<=m;++p){var g=d[p];a[h]===h&&u<s[g]&&!Aet(r,h,g)&&(a[g]=h,a[h]=n[h]=n[g],u=s[g])}}})}),{root:n,align:a}}function Det(e,t,r,i,n){var a={},s=Ret(e,t,r,n),l=n?"borderLeft":"borderRight";function u(f,p){for(var m=s.nodes(),g=m.pop(),y={};g;)y[g]?f(g):(y[g]=!0,m.push(g),m=m.concat(p(g))),g=m.pop()}o(u,"iterate");function h(f){a[f]=s.inEdges(f).reduce(function(p,m){return Math.max(p,a[m.v]+s.edge(m))},0)}o(h,"pass1");function d(f){var p=s.outEdges(f).reduce(function(g,y){return Math.min(g,a[y.w]-s.edge(y))},Number.POSITIVE_INFINITY),m=e.node(f);p!==Number.POSITIVE_INFINITY&&m.borderType!==l&&(a[f]=Math.max(a[f],p))}return o(d,"pass2"),u(h,s.predecessors.bind(s)),u(d,s.successors.bind(s)),tt(i,function(f){a[f]=a[r[f]]}),a}function Ret(e,t,r,i){var n=new ui,a=e.graph(),s=Iet(a.nodesep,a.edgesep,i);return tt(t,function(l){var u;tt(l,function(h){var d=r[h];if(n.setNode(d),u){var f=r[u],p=n.edge(f,d);n.setEdge(f,d,Math.max(s(e,h,u),p||0))}u=h})}),n}function Let(e,t){return $p(co(t),function(r){var i=Number.NEGATIVE_INFINITY,n=Number.POSITIVE_INFINITY;return NI(r,function(a,s){var l=Oet(e,s)/2;i=Math.max(a+l,i),n=Math.min(a-l,n)}),i-n})}function Met(e,t){var r=co(t),i=Yu(r),n=Os(r);tt(["u","d"],function(a){tt(["l","r"],function(s){var l=a+s,u=e[l],h;if(u!==t){var d=co(u);h=s==="l"?i-Yu(d):n-Os(d),h&&(e[l]=Fp(u,function(f){return f+h}))}})})}function Net(e,t){return Fp(e.ul,function(r,i){if(t)return e[t.toLowerCase()][i];var n=Lc(Jr(e,i));return(n[1]+n[2])/2})}function Zde(e){var t=Nd(e),r=Zg(ket(e,t),wet(e,t)),i={},n;tt(["u","d"],function(s){n=s==="u"?t:co(t).reverse(),tt(["l","r"],function(l){l==="r"&&(n=Jr(n,function(f){return co(f).reverse()}));var u=(s==="u"?e.predecessors:e.successors).bind(e),h=_et(e,n,r,u),d=Det(e,n,h.root,h.align,l==="r");l==="r"&&(d=Fp(d,function(f){return-f})),i[s+l]=d})});var a=Let(e,i);return Met(i,a),Net(i,e.graph().align)}function Iet(e,t,r){return function(i,n,a){var s=i.node(n),l=i.node(a),u=0,h;if(u+=s.width/2,Object.prototype.hasOwnProperty.call(s,"labelpos"))switch(s.labelpos.toLowerCase()){case"l":h=-s.width/2;break;case"r":h=s.width/2;break}if(h&&(u+=r?h:-h),h=0,u+=(s.dummy?t:e)/2,u+=(l.dummy?t:e)/2,u+=l.width/2,Object.prototype.hasOwnProperty.call(l,"labelpos"))switch(l.labelpos.toLowerCase()){case"l":h=l.width/2;break;case"r":h=-l.width/2;break}return h&&(u+=r?h:-h),h=0,u}}function Oet(e,t){return e.node(t).width}var Qde=z(()=>{"use strict";ci();Uo();Nc();o(ket,"findType1Conflicts");o(wet,"findType2Conflicts");o(Eet,"findOtherInnerSegmentNode");o(Kde,"addConflict");o(Aet,"hasConflict");o(_et,"verticalAlignment");o(Det,"horizontalCompaction");o(Ret,"buildBlockGraph");o(Let,"findSmallestWidthAlignment");o(Met,"alignCoordinates");o(Net,"balance");o(Zde,"positionX");o(Iet,"sep");o(Oet,"width")});function Jde(e){e=n3(e),Pet(e),II(Zde(e),function(t,r){e.node(r).x=t})}function Pet(e){var t=Nd(e),r=e.graph().ranksep,i=0;tt(t,function(n){var a=Os(Jr(n,function(s){return e.node(s).height}));tt(n,function(s){e.node(s).y=i+a/2}),i+=a+r})}var efe=z(()=>{"use strict";ci();Nc();Qde();o(Jde,"position");o(Pet,"positionY")});function Mb(e,t){var r=t&&t.debugTiming?Yhe:jhe;r("layout",()=>{var i=r("  buildLayoutGraph",()=>Yet(e));r("  runLayout",()=>Bet(i,r)),r("  updateInputGraph",()=>Fet(e,i))})}function Bet(e,t){t("    makeSpaceForEdgeLabels",()=>jet(e)),t("    removeSelfEdges",()=>itt(e)),t("    acyclic",()=>zhe(e)),t("    nestingGraph.run",()=>wde(e)),t("    rank",()=>o9(n3(e))),t("    injectEdgeLabelProxies",()=>Xet(e)),t("    removeEmptyRanks",()=>Uhe(e)),t("    nestingGraph.cleanup",()=>Ede(e)),t("    normalizeRanks",()=>qhe(e)),t("    assignRankMinMax",()=>Ket(e)),t("    removeEdgeLabelProxies",()=>Zet(e)),t("    normalize.run",()=>ide(e)),t("    parentDummyChains",()=>jde(e)),t("    addBorderSegments",()=>Khe(e)),t("    order",()=>Hde(e)),t("    insertSelfEdges",()=>ntt(e)),t("    adjustCoordinateSystem",()=>Jhe(e)),t("    position",()=>Jde(e)),t("    positionSelfEdges",()=>att(e)),t("    removeBorderNodes",()=>rtt(e)),t("    normalize.undo",()=>nde(e)),t("    fixupEdgeLabelCoords",()=>ett(e)),t("    undoCoordinateSystem",()=>ede(e)),t("    translateGraph",()=>Qet(e)),t("    assignNodeIntersects",()=>Jet(e)),t("    reversePoints",()=>ttt(e)),t("    acyclic.undo",()=>Ghe(e))}function Fet(e,t){tt(e.nodes(),function(r){var i=e.node(r),n=t.node(r);i&&(i.x=n.x,i.y=n.y,t.children(r).length&&(i.width=n.width,i.height=n.height))}),tt(e.edges(),function(r){var i=e.edge(r),n=t.edge(r);i.points=n.points,Object.prototype.hasOwnProperty.call(n,"x")&&(i.x=n.x,i.y=n.y)}),e.graph().width=t.graph().width,e.graph().height=t.graph().height}function Yet(e){var t=new ui({multigraph:!0,compound:!0}),r=h9(e.graph());return t.setGraph(Zg({},zet,u9(r,$et),zp(r,Get))),tt(e.nodes(),function(i){var n=h9(e.node(i));t.setNode(i,AI(u9(n,Vet),Wet)),t.setParent(i,e.parent(i))}),tt(e.edges(),function(i){var n=h9(e.edge(i));t.setEdge(i,Zg({},Uet,u9(n,qet),zp(n,Het)))}),t}function jet(e){var t=e.graph();t.ranksep/=2,tt(e.edges(),function(r){var i=e.edge(r);i.minlen*=2,i.labelpos.toLowerCase()!=="c"&&(t.rankdir==="TB"||t.rankdir==="BT"?i.width+=i.labeloffset:i.height+=i.labeloffset)})}function Xet(e){tt(e.edges(),function(t){var r=e.edge(t);if(r.width&&r.height){var i=e.node(t.v),n=e.node(t.w),a={rank:(n.rank-i.rank)/2+i.rank,e:t};Mc(e,"edge-proxy",a,"_ep")}})}function Ket(e){var t=0;tt(e.nodes(),function(r){var i=e.node(r);i.borderTop&&(i.minRank=e.node(i.borderTop).rank,i.maxRank=e.node(i.borderBottom).rank,t=Os(t,i.maxRank))}),e.graph().maxRank=t}function Zet(e){tt(e.nodes(),function(t){var r=e.node(t);r.dummy==="edge-proxy"&&(e.edge(r.e).labelRank=r.rank,e.removeNode(t))})}function Qet(e){var t=Number.POSITIVE_INFINITY,r=0,i=Number.POSITIVE_INFINITY,n=0,a=e.graph(),s=a.marginx||0,l=a.marginy||0;function u(h){var d=h.x,f=h.y,p=h.width,m=h.height;t=Math.min(t,d-p/2),r=Math.max(r,d+p/2),i=Math.min(i,f-m/2),n=Math.max(n,f+m/2)}o(u,"getExtremes"),tt(e.nodes(),function(h){u(e.node(h))}),tt(e.edges(),function(h){var d=e.edge(h);Object.prototype.hasOwnProperty.call(d,"x")&&u(d)}),t-=s,i-=l,tt(e.nodes(),function(h){var d=e.node(h);d.x-=t,d.y-=i}),tt(e.edges(),function(h){var d=e.edge(h);tt(d.points,function(f){f.x-=t,f.y-=i}),Object.prototype.hasOwnProperty.call(d,"x")&&(d.x-=t),Object.prototype.hasOwnProperty.call(d,"y")&&(d.y-=i)}),a.width=r-t+s,a.height=n-i+l}function Jet(e){tt(e.edges(),function(t){var r=e.edge(t),i=e.node(t.v),n=e.node(t.w),a,s;r.points?(a=r.points[0],s=r.points[r.points.length-1]):(r.points=[],a=n,s=i),r.points.unshift(qI(i,a)),r.points.push(qI(n,s))})}function ett(e){tt(e.edges(),function(t){var r=e.edge(t);if(Object.prototype.hasOwnProperty.call(r,"x"))switch((r.labelpos==="l"||r.labelpos==="r")&&(r.width-=r.labeloffset),r.labelpos){case"l":r.x-=r.width/2+r.labeloffset;break;case"r":r.x+=r.width/2+r.labeloffset;break}})}function ttt(e){tt(e.edges(),function(t){var r=e.edge(t);r.reversed&&r.points.reverse()})}function rtt(e){tt(e.nodes(),function(t){if(e.children(t).length){var r=e.node(t),i=e.node(r.borderTop),n=e.node(r.borderBottom),a=e.node(Md(r.borderLeft)),s=e.node(Md(r.borderRight));r.width=Math.abs(s.x-a.x),r.height=Math.abs(n.y-i.y),r.x=a.x+r.width/2,r.y=i.y+r.height/2}}),tt(e.nodes(),function(t){e.node(t).dummy==="border"&&e.removeNode(t)})}function itt(e){tt(e.edges(),function(t){if(t.v===t.w){var r=e.node(t.v);r.selfEdges||(r.selfEdges=[]),r.selfEdges.push({e:t,label:e.edge(t)}),e.removeEdge(t)}})}function ntt(e){var t=Nd(e);tt(t,function(r){var i=0;tt(r,function(n,a){var s=e.node(n);s.order=a+i,tt(s.selfEdges,function(l){Mc(e,"selfedge",{width:l.label.width,height:l.label.height,rank:s.rank,order:a+ ++i,e:l.e,label:l.label},"_se")}),delete s.selfEdges})})}function att(e){tt(e.nodes(),function(t){var r=e.node(t);if(r.dummy==="selfedge"){var i=e.node(r.e.v),n=i.x+i.width/2,a=i.y,s=r.x-n,l=i.height/2;e.setEdge(r.e,r.label),e.removeNode(t),r.label.points=[{x:n+2*s/3,y:a-l},{x:n+5*s/6,y:a-l},{x:n+s,y:a},{x:n+5*s/6,y:a+l},{x:n+2*s/3,y:a+l}],r.label.x=r.x,r.label.y=r.y}})}function u9(e,t){return Fp(zp(e,t),Number)}function h9(e){var t={};return tt(e,function(r,i){t[i.toLowerCase()]=r}),t}var $et,zet,Get,Vet,Wet,qet,Uet,Het,tfe=z(()=>{"use strict";ci();Uo();Zhe();rde();WI();XI();l9();Ade();Yde();Xde();efe();Nc();o(Mb,"layout");o(Bet,"runLayout");o(Fet,"updateInputGraph");$et=["nodesep","edgesep","ranksep","marginx","marginy"],zet={ranksep:50,edgesep:20,nodesep:50,rankdir:"tb"},Get=["acyclicer","ranker","rankdir","align"],Vet=["width","height"],Wet={width:0,height:0},qet=["minlen","weight","width","height","labeloffset"],Uet={minlen:1,weight:1,width:0,height:0,labeloffset:10,labelpos:"r"},Het=["labelpos"];o(Yet,"buildLayoutGraph");o(jet,"makeSpaceForEdgeLabels");o(Xet,"injectEdgeLabelProxies");o(Ket,"assignRankMinMax");o(Zet,"removeEdgeLabelProxies");o(Qet,"translateGraph");o(Jet,"assignNodeIntersects");o(ett,"fixupEdgeLabelCoords");o(ttt,"reversePointsForReversedEdges");o(rtt,"removeBorderNodes");o(itt,"removeSelfEdges");o(ntt,"insertSelfEdges");o(att,"positionSelfEdges");o(u9,"selectNumberAttrs");o(h9,"canonicalize")});var d9=z(()=>{"use strict";WI();tfe();XI();l9()});function Ho(e){var t={options:{directed:e.isDirected(),multigraph:e.isMultigraph(),compound:e.isCompound()},nodes:stt(e),edges:ott(e)};return yi(e.graph())||(t.value=mI(e.graph())),t}function stt(e){return Jr(e.nodes(),function(t){var r=e.node(t),i=e.parent(t),n={v:t};return yi(r)||(n.value=r),yi(i)||(n.parent=i),n})}function ott(e){return Jr(e.edges(),function(t){var r=e.edge(t),i={v:t.v,w:t.w};return yi(t.name)||(i.name=t.name),yi(r)||(i.value=r),i})}var f9=z(()=>{"use strict";ci();t3();o(Ho,"write");o(stt,"writeNodes");o(ott,"writeEdges")});var Pr,qp,nfe,afe,l3,ltt,sfe,ofe,ctt,Qg,ife,lfe,cfe,ufe,hfe,dfe=z(()=>{"use strict";St();Uo();f9();Pr=new Map,qp=new Map,nfe=new Map,afe=o(()=>{qp.clear(),nfe.clear(),Pr.clear()},"clear"),l3=o((e,t)=>{let r=qp.get(t)||[];return Z.trace("In isDescendant",t," ",e," = ",r.includes(e)),r.includes(e)},"isDescendant"),ltt=o((e,t)=>{let r=qp.get(t)||[];return Z.info("Descendants of ",t," is ",r),Z.info("Edge is ",e),e.v===t||e.w===t?!1:r?r.includes(e.v)||l3(e.v,t)||l3(e.w,t)||r.includes(e.w):(Z.debug("Tilt, ",t,",not in descendants"),!1)},"edgeInCluster"),sfe=o((e,t,r,i)=>{Z.warn("Copying children of ",e,"root",i,"data",t.node(e),i);let n=t.children(e)||[];e!==i&&n.push(e),Z.warn("Copying (nodes) clusterId",e,"nodes",n),n.forEach(a=>{if(t.children(a).length>0)sfe(a,t,r,i);else{let s=t.node(a);Z.info("cp ",a," to ",i," with parent ",e),r.setNode(a,s),i!==t.parent(a)&&(Z.warn("Setting parent",a,t.parent(a)),r.setParent(a,t.parent(a))),e!==i&&a!==e?(Z.debug("Setting parent",a,e),r.setParent(a,e)):(Z.info("In copy ",e,"root",i,"data",t.node(e),i),Z.debug("Not Setting parent for node=",a,"cluster!==rootId",e!==i,"node!==clusterId",a!==e));let l=t.edges(a);Z.debug("Copying Edges",l),l.forEach(u=>{Z.info("Edge",u);let h=t.edge(u.v,u.w,u.name);Z.info("Edge data",h,i);try{ltt(u,i)?(Z.info("Copying as ",u.v,u.w,h,u.name),r.setEdge(u.v,u.w,h,u.name),Z.info("newGraph edges ",r.edges(),r.edge(r.edges()[0]))):Z.info("Skipping copy of edge ",u.v,"-->",u.w," rootId: ",i," clusterId:",e)}catch(d){Z.error(d)}})}Z.debug("Removing node",a),t.removeNode(a)})},"copy"),ofe=o((e,t)=>{let r=t.children(e),i=[...r];for(let n of r)nfe.set(n,e),i=[...i,...ofe(n,t)];return i},"extractDescendants"),ctt=o((e,t,r)=>{let i=e.edges().filter(u=>u.v===t||u.w===t),n=e.edges().filter(u=>u.v===r||u.w===r),a=i.map(u=>({v:u.v===t?r:u.v,w:u.w===t?t:u.w})),s=n.map(u=>({v:u.v,w:u.w}));return a.filter(u=>s.some(h=>u.v===h.v&&u.w===h.w))},"findCommonEdges"),Qg=o((e,t,r)=>{let i=t.children(e);if(Z.trace("Searching children of id ",e,i),i.length<1)return e;let n;for(let a of i){let s=Qg(a,t,r),l=ctt(t,r,s);if(s)if(l.length>0)n=s;else return s}return n},"findNonClusterChild"),ife=o(e=>!Pr.has(e)||!Pr.get(e).externalConnections?e:Pr.has(e)?Pr.get(e).id:e,"getAnchorId"),lfe=o((e,t)=>{if(!e||t>10){Z.debug("Opting out, no graph ");return}else Z.debug("Opting in, graph ");e.nodes().forEach(function(r){e.children(r).length>0&&(Z.warn("Cluster identified",r," Replacement id in edges: ",Qg(r,e,r)),qp.set(r,ofe(r,e)),Pr.set(r,{id:Qg(r,e,r),clusterData:e.node(r)}))}),e.nodes().forEach(function(r){let i=e.children(r),n=e.edges();i.length>0?(Z.debug("Cluster identified",r,qp),n.forEach(a=>{let s=l3(a.v,r),l=l3(a.w,r);s^l&&(Z.warn("Edge: ",a," leaves cluster ",r),Z.warn("Descendants of XXX ",r,": ",qp.get(r)),Pr.get(r).externalConnections=!0)})):Z.debug("Not a cluster ",r,qp)});for(let r of Pr.keys()){let i=Pr.get(r).id,n=e.parent(i);n!==r&&Pr.has(n)&&!Pr.get(n).externalConnections&&(Pr.get(r).id=n)}e.edges().forEach(function(r){let i=e.edge(r);Z.warn("Edge "+r.v+" -> "+r.w+": "+JSON.stringify(r)),Z.warn("Edge "+r.v+" -> "+r.w+": "+JSON.stringify(e.edge(r)));let n=r.v,a=r.w;if(Z.warn("Fix XXX",Pr,"ids:",r.v,r.w,"Translating: ",Pr.get(r.v)," --- ",Pr.get(r.w)),Pr.get(r.v)||Pr.get(r.w)){if(Z.warn("Fixing and trying - removing XXX",r.v,r.w,r.name),n=ife(r.v),a=ife(r.w),e.removeEdge(r.v,r.w,r.name),n!==r.v){let s=e.parent(n);Pr.get(s).externalConnections=!0,i.fromCluster=r.v}if(a!==r.w){let s=e.parent(a);Pr.get(s).externalConnections=!0,i.toCluster=r.w}Z.warn("Fix Replacing with XXX",n,a,r.name),e.setEdge(n,a,i,r.name)}}),Z.warn("Adjusted Graph",Ho(e)),cfe(e,0),Z.trace(Pr)},"adjustClustersAndEdges"),cfe=o((e,t)=>{if(Z.warn("extractor - ",t,Ho(e),e.children("D")),t>10){Z.error("Bailing out");return}let r=e.nodes(),i=!1;for(let n of r){let a=e.children(n);i=i||a.length>0}if(!i){Z.debug("Done, no node has children",e.nodes());return}Z.debug("Nodes = ",r,t);for(let n of r)if(Z.debug("Extracting node",n,Pr,Pr.has(n)&&!Pr.get(n).externalConnections,!e.parent(n),e.node(n),e.children("D")," Depth ",t),!Pr.has(n))Z.debug("Not a cluster",n,t);else if(!Pr.get(n).externalConnections&&e.children(n)&&e.children(n).length>0){Z.warn("Cluster without external connections, without a parent and with children",n,t);let s=e.graph().rankdir==="TB"?"LR":"TB";Pr.get(n)?.clusterData?.dir&&(s=Pr.get(n).clusterData.dir,Z.warn("Fixing dir",Pr.get(n).clusterData.dir,s));let l=new ui({multigraph:!0,compound:!0}).setGraph({rankdir:s,nodesep:50,ranksep:50,marginx:8,marginy:8}).setDefaultEdgeLabel(function(){return{}});Z.warn("Old graph before copy",Ho(e)),sfe(n,e,l,n),e.setNode(n,{clusterNode:!0,id:n,clusterData:Pr.get(n).clusterData,label:Pr.get(n).label,graph:l}),Z.warn("New graph after copy node: (",n,")",Ho(l)),Z.debug("Old graph after copy",Ho(e))}else Z.warn("Cluster ** ",n," **not meeting the criteria !externalConnections:",!Pr.get(n).externalConnections," no parent: ",!e.parent(n)," children ",e.children(n)&&e.children(n).length>0,e.children("D"),t),Z.debug(Pr);r=e.nodes(),Z.warn("New list of nodes",r);for(let n of r){let a=e.node(n);Z.warn(" Now next level",n,a),a?.clusterNode&&cfe(a.graph,t+1)}},"extractor"),ufe=o((e,t)=>{if(t.length===0)return[];let r=Object.assign([],t);return t.forEach(i=>{let n=e.children(i),a=ufe(e,n);r=[...r,...a]}),r},"sorter"),hfe=o(e=>ufe(e,e.children()),"sortNodesByHierarchy")});var pfe={};xr(pfe,{render:()=>utt});var ffe,utt,mfe=z(()=>{"use strict";d9();f9();Uo();$N();Wt();dfe();J4();W4();FN();St();rb();Ut();ffe=o(async(e,t,r,i,n,a)=>{Z.warn("Graph in recursive render:XAX",Ho(t),n);let s=t.graph().rankdir;Z.trace("Dir in recursive render - dir:",s);let l=e.insert("g").attr("class","root");t.nodes()?Z.info("Recursive render XXX",t.nodes()):Z.info("No nodes found for",t),t.edges().length>0&&Z.info("Recursive edges",t.edge(t.edges()[0]));let u=l.insert("g").attr("class","clusters"),h=l.insert("g").attr("class","edgePaths"),d=l.insert("g").attr("class","edgeLabels"),f=l.insert("g").attr("class","nodes");await Promise.all(t.nodes().map(async function(y){let v=t.node(y);if(n!==void 0){let x=JSON.parse(JSON.stringify(n.clusterData));Z.trace(`Setting data for parent cluster XXX
- Node.id = `,y,`
- data=`,x.height,`
-Parent cluster`,n.height),t.setNode(n.id,x),t.parent(y)||(Z.trace("Setting parent",y,n.id),t.setParent(y,n.id,x))}if(Z.info("(Insert) Node XXX"+y+": "+JSON.stringify(t.node(y))),v?.clusterNode){Z.info("Cluster identified XBX",y,v.width,t.node(y));let{ranksep:x,nodesep:b}=t.graph();v.graph.setGraph({...v.graph.graph(),ranksep:x+25,nodesep:b});let T=await ffe(f,v.graph,r,i,t.node(y),a),w=T.elem;ft(v,w),v.diff=T.diff||0,Z.info("New compound node after recursive render XAX",y,"width",v.width,"height",v.height),Wae(w,v)}else t.children(y).length>0?(Z.trace("Cluster - the non recursive path XBX",y,v.id,v,v.width,"Graph:",t),Z.trace(Qg(v.id,t)),Pr.set(v.id,{id:Qg(v.id,t),node:v})):(Z.trace("Node - the non recursive path XAX",y,f,t.node(y),s),await Sg(f,t.node(y),{config:a,dir:s}))})),await o(async()=>{let y=t.edges().map(async function(v){let x=t.edge(v.v,v.w,v.name);Z.info("Edge "+v.v+" -> "+v.w+": "+JSON.stringify(v)),Z.info("Edge "+v.v+" -> "+v.w+": ",v," ",JSON.stringify(t.edge(v))),Z.info("Fix",Pr,"ids:",v.v,v.w,"Translating: ",Pr.get(v.v),Pr.get(v.w)),await j4(d,x)});await Promise.all(y)},"processEdges")(),Z.info("Graph before layout:",JSON.stringify(Ho(t))),Z.info("############################################# XXX"),Z.info("###                Layout                 ### XXX"),Z.info("############################################# XXX"),Mb(t),Z.info("Graph after layout:",JSON.stringify(Ho(t)));let m=0,{subGraphTitleTotalMargin:g}=zu(a);return await Promise.all(hfe(t).map(async function(y){let v=t.node(y);if(Z.info("Position XBX => "+y+": ("+v.x,","+v.y,") width: ",v.width," height: ",v.height),v?.clusterNode)v.y+=g,Z.info("A tainted cluster node XBX1",y,v.id,v.width,v.height,v.x,v.y,t.parent(y)),Pr.get(v.id).node=v,nb(v);else if(t.children(y).length>0){Z.info("A pure cluster node XBX1",y,v.id,v.x,v.y,v.width,v.height,t.parent(y)),v.height+=g,t.node(v.parentId);let x=v?.padding/2||0,b=v?.labelBBox?.height||0,T=b-x||0;Z.debug("OffsetY",T,"labelHeight",b,"halfPadding",x),await wg(u,v),Pr.get(v.id).node=v}else{let x=t.node(v.parentId);v.y+=g/2,Z.info("A regular node XBX1 - using the padding",v.id,"parent",v.parentId,v.width,v.height,v.x,v.y,"offsetY",v.offsetY,"parent",x,x?.offsetY,v),nb(v)}})),t.edges().forEach(function(y){let v=t.edge(y);Z.info("Edge "+y.v+" -> "+y.w+": "+JSON.stringify(v),v),v.points.forEach(w=>w.y+=g/2);let x=t.node(y.v);var b=t.node(y.w);let T=K4(h,v,Pr,r,x,b,i);X4(v,T)}),t.nodes().forEach(function(y){let v=t.node(y);Z.info(y,v.type,v.diff),v.isGroup&&(m=v.diff)}),Z.warn("Returning from recursive render XAX",l,m),{elem:l,diff:m}},"recursiveRender"),utt=o(async(e,t)=>{let r=new ui({multigraph:!0,compound:!0}).setGraph({rankdir:e.direction,nodesep:e.config?.nodeSpacing||e.config?.flowchart?.nodeSpacing||e.nodeSpacing,ranksep:e.config?.rankSpacing||e.config?.flowchart?.rankSpacing||e.rankSpacing,marginx:8,marginy:8}).setDefaultEdgeLabel(function(){return{}}),i=t.select("g");Z4(i,e.markers,e.type,e.diagramId),qae(),Vae(),Oae(),afe(),e.nodes.forEach(a=>{r.setNode(a.id,{...a}),a.parentId&&r.setParent(a.id,a.parentId)}),Z.debug("Edges:",e.edges),e.edges.forEach(a=>{if(a.start===a.end){let s=a.start,l=s+"---"+s+"---1",u=s+"---"+s+"---2",h=r.node(s);r.setNode(l,{domId:l,id:l,parentId:h.parentId,labelStyle:"",label:"",padding:0,shape:"labelRect",style:"",width:10,height:10}),r.setParent(l,h.parentId),r.setNode(u,{domId:u,id:u,parentId:h.parentId,labelStyle:"",padding:0,shape:"labelRect",label:"",style:"",width:10,height:10}),r.setParent(u,h.parentId);let d=structuredClone(a),f=structuredClone(a),p=structuredClone(a);d.label="",d.arrowTypeEnd="none",d.endLabelLeft="",d.endLabelRight="",d.startLabelLeft="",d.id=s+"-cyclic-special-1",f.startLabelRight="",f.startLabelLeft="",f.endLabelLeft="",f.endLabelRight="",f.arrowTypeStart="none",f.arrowTypeEnd="none",f.id=s+"-cyclic-special-mid",p.label="",p.startLabelRight="",p.startLabelLeft="",p.arrowTypeStart="none",h.isGroup&&(d.fromCluster=s,p.toCluster=s),p.id=s+"-cyclic-special-2",p.arrowTypeStart="none",r.setEdge(s,l,d,s+"-cyclic-special-0"),r.setEdge(l,u,f,s+"-cyclic-special-1"),r.setEdge(u,s,p,s+"-cyc<lic-special-2")}else r.setEdge(a.start,a.end,{...a},a.id)}),Z.warn("Graph at first:",JSON.stringify(Ho(r))),lfe(r),Z.warn("Graph after XAX:",JSON.stringify(Ho(r)));let n=ge();await ffe(i,r,e.type,e.diagramId,void 0,n)},"render")});function qO(e,t){(t==null||t>e.length)&&(t=e.length);for(var r=0,i=Array(t);r<t;r++)i[r]=e[r];return i}function htt(e){if(Array.isArray(e))return e}function dtt(e){if(Array.isArray(e))return qO(e)}function Kd(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function ftt(e,t){for(var r=0;r<t.length;r++){var i=t[r];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,U0e(i.key),i)}}function Zd(e,t,r){return t&&ftt(e.prototype,t),Object.defineProperty(e,"prototype",{writable:!1}),e}function Fs(e,t){var r=typeof Symbol<"u"&&e[Symbol.iterator]||e["@@iterator"];if(!r){if(Array.isArray(e)||(r=uP(e))||t){r&&(e=r);var i=0,n=o(function(){},"F");return{s:n,n:o(function(){return i>=e.length?{done:!0}:{done:!1,value:e[i++]}},"n"),e:o(function(u){throw u},"e"),f:n}}throw new TypeError(`Invalid attempt to iterate non-iterable instance.
-In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}var a,s=!0,l=!1;return{s:o(function(){r=r.call(e)},"s"),n:o(function(){var u=r.next();return s=u.done,u},"n"),e:o(function(u){l=!0,a=u},"e"),f:o(function(){try{s||r.return==null||r.return()}finally{if(l)throw a}},"f")}}function q0e(e,t,r){return(t=U0e(t))in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function ptt(e){if(typeof Symbol<"u"&&e[Symbol.iterator]!=null||e["@@iterator"]!=null)return Array.from(e)}function mtt(e,t){var r=e==null?null:typeof Symbol<"u"&&e[Symbol.iterator]||e["@@iterator"];if(r!=null){var i,n,a,s,l=[],u=!0,h=!1;try{if(a=(r=r.call(e)).next,t===0){if(Object(r)!==r)return;u=!1}else for(;!(u=(i=a.call(r)).done)&&(l.push(i.value),l.length!==t);u=!0);}catch(d){h=!0,n=d}finally{try{if(!u&&r.return!=null&&(s=r.return(),Object(s)!==s))return}finally{if(h)throw n}}return l}}function gtt(){throw new TypeError(`Invalid attempt to destructure non-iterable instance.
-In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function ytt(){throw new TypeError(`Invalid attempt to spread non-iterable instance.
-In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function Dn(e,t){return htt(e)||mtt(e,t)||uP(e,t)||gtt()}function N3(e){return dtt(e)||ptt(e)||uP(e)||ytt()}function vtt(e,t){if(typeof e!="object"||!e)return e;var r=e[Symbol.toPrimitive];if(r!==void 0){var i=r.call(e,t);if(typeof i!="object")return i;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}function U0e(e){var t=vtt(e,"string");return typeof t=="symbol"?t:t+""}function Wn(e){"@babel/helpers - typeof";return Wn=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(t){return typeof t}:function(t){return t&&typeof Symbol=="function"&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},Wn(e)}function uP(e,t){if(e){if(typeof e=="string")return qO(e,t);var r={}.toString.call(e).slice(8,-1);return r==="Object"&&e.constructor&&(r=e.constructor.name),r==="Map"||r==="Set"?Array.from(e):r==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?qO(e,t):void 0}}function n2(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}function a2(){if(vfe)return p9;vfe=1;function e(t){var r=typeof t;return t!=null&&(r=="object"||r=="function")}return o(e,"isObject"),p9=e,p9}function Gtt(){if(xfe)return m9;xfe=1;var e=typeof c3=="object"&&c3&&c3.Object===Object&&c3;return m9=e,m9}function j3(){if(bfe)return g9;bfe=1;var e=Gtt(),t=typeof self=="object"&&self&&self.Object===Object&&self,r=e||t||Function("return this")();return g9=r,g9}function Vtt(){if(Tfe)return y9;Tfe=1;var e=j3(),t=o(function(){return e.Date.now()},"now");return y9=t,y9}function Wtt(){if(Cfe)return v9;Cfe=1;var e=/\s/;function t(r){for(var i=r.length;i--&&e.test(r.charAt(i)););return i}return o(t,"trimmedEndIndex"),v9=t,v9}function qtt(){if(kfe)return x9;kfe=1;var e=Wtt(),t=/^\s+/;function r(i){return i&&i.slice(0,e(i)+1).replace(t,"")}return o(r,"baseTrim"),x9=r,x9}function fP(){if(wfe)return b9;wfe=1;var e=j3(),t=e.Symbol;return b9=t,b9}function Utt(){if(Sfe)return T9;Sfe=1;var e=fP(),t=Object.prototype,r=t.hasOwnProperty,i=t.toString,n=e?e.toStringTag:void 0;function a(s){var l=r.call(s,n),u=s[n];try{s[n]=void 0;var h=!0}catch{}var d=i.call(s);return h&&(l?s[n]=u:delete s[n]),d}return o(a,"getRawTag"),T9=a,T9}function Htt(){if(Efe)return C9;Efe=1;var e=Object.prototype,t=e.toString;function r(i){return t.call(i)}return o(r,"objectToString"),C9=r,C9}function eme(){if(Afe)return k9;Afe=1;var e=fP(),t=Utt(),r=Htt(),i="[object Null]",n="[object Undefined]",a=e?e.toStringTag:void 0;function s(l){return l==null?l===void 0?n:i:a&&a in Object(l)?t(l):r(l)}return o(s,"baseGetTag"),k9=s,k9}function Ytt(){if(_fe)return w9;_fe=1;function e(t){return t!=null&&typeof t=="object"}return o(e,"isObjectLike"),w9=e,w9}function s2(){if(Dfe)return S9;Dfe=1;var e=eme(),t=Ytt(),r="[object Symbol]";function i(n){return typeof n=="symbol"||t(n)&&e(n)==r}return o(i,"isSymbol"),S9=i,S9}function jtt(){if(Rfe)return E9;Rfe=1;var e=qtt(),t=a2(),r=s2(),i=NaN,n=/^[-+]0x[0-9a-f]+$/i,a=/^0b[01]+$/i,s=/^0o[0-7]+$/i,l=parseInt;function u(h){if(typeof h=="number")return h;if(r(h))return i;if(t(h)){var d=typeof h.valueOf=="function"?h.valueOf():h;h=t(d)?d+"":d}if(typeof h!="string")return h===0?h:+h;h=e(h);var f=a.test(h);return f||s.test(h)?l(h.slice(2),f?2:8):n.test(h)?i:+h}return o(u,"toNumber"),E9=u,E9}function Xtt(){if(Lfe)return A9;Lfe=1;var e=a2(),t=Vtt(),r=jtt(),i="Expected a function",n=Math.max,a=Math.min;function s(l,u,h){var d,f,p,m,g,y,v=0,x=!1,b=!1,T=!0;if(typeof l!="function")throw new TypeError(i);u=r(u)||0,e(h)&&(x=!!h.leading,b="maxWait"in h,p=b?n(r(h.maxWait)||0,u):p,T="trailing"in h?!!h.trailing:T);function w(_){var R=d,M=f;return d=f=void 0,v=_,m=l.apply(M,R),m}o(w,"invokeFunc");function C(_){return v=_,g=setTimeout(A,u),x?w(_):m}o(C,"leadingEdge");function k(_){var R=_-y,M=_-v,L=u-R;return b?a(L,p-M):L}o(k,"remainingWait");function E(_){var R=_-y,M=_-v;return y===void 0||R>=u||R<0||b&&M>=p}o(E,"shouldInvoke");function A(){var _=t();if(E(_))return N(_);g=setTimeout(A,k(_))}o(A,"timerExpired");function N(_){return g=void 0,T&&d?w(_):(d=f=void 0,m)}o(N,"trailingEdge");function P(){g!==void 0&&clearTimeout(g),v=0,d=y=f=g=void 0}o(P,"cancel");function I(){return g===void 0?m:N(t())}o(I,"flush");function D(){var _=t(),R=E(_);if(d=arguments,f=this,y=_,R){if(g===void 0)return C(y);if(b)return clearTimeout(g),g=setTimeout(A,u),w(y)}return g===void 0&&(g=setTimeout(A,u)),m}return o(D,"debounced"),D.cancel=P,D.flush=I,D}return o(s,"debounce"),A9=s,A9}function ert(e,t,r,i,n){var a=n*Math.PI/180,s=Math.cos(a)*(e-r)-Math.sin(a)*(t-i)+r,l=Math.sin(a)*(e-r)+Math.cos(a)*(t-i)+i;return{x:s,y:l}}function rrt(e,t,r){if(r===0)return e;var i=(t.x1+t.x2)/2,n=(t.y1+t.y2)/2,a=t.w/t.h,s=1/a,l=ert(e.x,e.y,i,n,r),u=trt(l.x,l.y,i,n,a,s);return{x:u.x,y:u.y}}function frt(){return Pfe||(Pfe=1,(function(e,t){(function(){var r,i,n,a,s,l,u,h,d,f,p,m,g,y,v;n=Math.floor,f=Math.min,i=o(function(x,b){return x<b?-1:x>b?1:0},"defaultCmp"),d=o(function(x,b,T,w,C){var k;if(T==null&&(T=0),C==null&&(C=i),T<0)throw new Error("lo must be non-negative");for(w==null&&(w=x.length);T<w;)k=n((T+w)/2),C(b,x[k])<0?w=k:T=k+1;return[].splice.apply(x,[T,T-T].concat(b)),b},"insort"),l=o(function(x,b,T){return T==null&&(T=i),x.push(b),y(x,0,x.length-1,T)},"heappush"),s=o(function(x,b){var T,w;return b==null&&(b=i),T=x.pop(),x.length?(w=x[0],x[0]=T,v(x,0,b)):w=T,w},"heappop"),h=o(function(x,b,T){var w;return T==null&&(T=i),w=x[0],x[0]=b,v(x,0,T),w},"heapreplace"),u=o(function(x,b,T){var w;return T==null&&(T=i),x.length&&T(x[0],b)<0&&(w=[x[0],b],b=w[0],x[0]=w[1],v(x,0,T)),b},"heappushpop"),a=o(function(x,b){var T,w,C,k,E,A;for(b==null&&(b=i),k=(function(){A=[];for(var N=0,P=n(x.length/2);0<=P?N<P:N>P;0<=P?N++:N--)A.push(N);return A}).apply(this).reverse(),E=[],w=0,C=k.length;w<C;w++)T=k[w],E.push(v(x,T,b));return E},"heapify"),g=o(function(x,b,T){var w;if(T==null&&(T=i),w=x.indexOf(b),w!==-1)return y(x,0,w,T),v(x,w,T)},"updateItem"),p=o(function(x,b,T){var w,C,k,E,A;if(T==null&&(T=i),C=x.slice(0,b),!C.length)return C;for(a(C,T),A=x.slice(b),k=0,E=A.length;k<E;k++)w=A[k],u(C,w,T);return C.sort(T).reverse()},"nlargest"),m=o(function(x,b,T){var w,C,k,E,A,N,P,I,D;if(T==null&&(T=i),b*10<=x.length){if(k=x.slice(0,b).sort(T),!k.length)return k;for(C=k[k.length-1],P=x.slice(b),E=0,N=P.length;E<N;E++)w=P[E],T(w,C)<0&&(d(k,w,0,null,T),k.pop(),C=k[k.length-1]);return k}for(a(x,T),D=[],A=0,I=f(b,x.length);0<=I?A<I:A>I;0<=I?++A:--A)D.push(s(x,T));return D},"nsmallest"),y=o(function(x,b,T,w){var C,k,E;for(w==null&&(w=i),C=x[T];T>b;){if(E=T-1>>1,k=x[E],w(C,k)<0){x[T]=k,T=E;continue}break}return x[T]=C},"_siftdown"),v=o(function(x,b,T){var w,C,k,E,A;for(T==null&&(T=i),C=x.length,A=b,k=x[b],w=2*b+1;w<C;)E=w+1,E<C&&!(T(x[w],x[E])<0)&&(w=E),x[b]=x[w],b=w,w=2*b+1;return x[b]=k,y(x,A,b,T)},"_siftup"),r=(function(){x.push=l,x.pop=s,x.replace=h,x.pushpop=u,x.heapify=a,x.updateItem=g,x.nlargest=p,x.nsmallest=m;function x(b){this.cmp=b??i,this.nodes=[]}return o(x,"Heap"),x.prototype.push=function(b){return l(this.nodes,b,this.cmp)},x.prototype.pop=function(){return s(this.nodes,this.cmp)},x.prototype.peek=function(){return this.nodes[0]},x.prototype.contains=function(b){return this.nodes.indexOf(b)!==-1},x.prototype.replace=function(b){return h(this.nodes,b,this.cmp)},x.prototype.pushpop=function(b){return u(this.nodes,b,this.cmp)},x.prototype.heapify=function(){return a(this.nodes,this.cmp)},x.prototype.updateItem=function(b){return g(this.nodes,b,this.cmp)},x.prototype.clear=function(){return this.nodes=[]},x.prototype.empty=function(){return this.nodes.length===0},x.prototype.size=function(){return this.nodes.length},x.prototype.clone=function(){var b;return b=new x,b.nodes=this.nodes.slice(0),b},x.prototype.toArray=function(){return this.nodes.slice(0)},x.prototype.insert=x.prototype.push,x.prototype.top=x.prototype.peek,x.prototype.front=x.prototype.peek,x.prototype.has=x.prototype.contains,x.prototype.copy=x.prototype.clone,x})(),(function(x,b){return e.exports=b()})(this,function(){return r})}).call(drt)})(C3)),C3.exports}function prt(){return Bfe||(Bfe=1,D9=frt()),D9}function zrt(e,t){if(e.length<3)throw new Error("Need at least 3 vertices");var r=o(function(A,N){return{x:A.x+N.x,y:A.y+N.y}},"add"),i=o(function(A,N){return{x:A.x-N.x,y:A.y-N.y}},"sub"),n=o(function(A,N){return{x:A.x*N,y:A.y*N}},"scale"),a=o(function(A,N){return A.x*N.y-A.y*N.x},"cross"),s=o(function(A){var N=$rt(A.x,A.y);return N===0?{x:0,y:0}:{x:A.x/N,y:A.y/N}},"normalize"),l=o(function(A){for(var N=0,P=0;P<A.length;P++){var I=A[P],D=A[(P+1)%A.length];N+=I.x*D.y-D.x*I.y}return N/2},"signedArea"),u=o(function(A,N,P,I){var D=i(N,A),_=i(I,P),R=a(D,_);if(Math.abs(R)<1e-9)return r(A,n(D,.5));var M=a(i(P,A),_)/R;return r(A,n(D,M))},"intersectLines"),h=e.map(function(E){return{x:E.x,y:E.y}});l(h)<0&&h.reverse();for(var d=h.length,f=[],p=0;p<d;p++){var m=h[p],g=h[(p+1)%d],y=i(g,m),v=s({x:y.y,y:-y.x});f.push(v)}for(var x=f.map(function(E,A){var N=r(h[A],n(E,t)),P=r(h[(A+1)%d],n(E,t));return{p1:N,p2:P}}),b=[],T=0;T<d;T++){var w=x[(T-1+d)%d],C=x[T],k=u(w.p1,w.p2,C.p1,C.p2);b.push(k)}return b}function Grt(e,t,r,i,n,a){var s=Krt(e,t,r,i,n),l=zrt(s,a),u=is();return l.forEach(function(h){return ume(u,h.x,h.y)}),u}function N9(e,t){function r(f){for(var p=[],m=0;m<f.length;m++){var g=f[m],y=f[(m+1)%f.length],v={x:y.x-g.x,y:y.y-g.y},x={x:-v.y,y:v.x},b=Math.sqrt(x.x*x.x+x.y*x.y);p.push({x:x.x/b,y:x.y/b})}return p}o(r,"getAxes");function i(f,p){var m=1/0,g=-1/0,y=Fs(f),v;try{for(y.s();!(v=y.n()).done;){var x=v.value,b=x.x*p.x+x.y*p.y;m=Math.min(m,b),g=Math.max(g,b)}}catch(T){y.e(T)}finally{y.f()}return{min:m,max:g}}o(i,"project");function n(f,p){return!(f.max<p.min||p.max<f.min)}o(n,"overlaps");var a=[].concat(N3(r(e)),N3(r(t))),s=Fs(a),l;try{for(s.s();!(l=s.n()).done;){var u=l.value,h=i(e,u),d=i(t,u);if(!n(h,d))return!1}}catch(f){s.e(f)}finally{s.f()}return!0}function Z3(e,t,r,i,n,a){var s;return Ji(e)?s=e:s=m1[e]||m1.euclidean,t===0&&Ji(e)?s(n,a):s(t,r,i,n,a)}function Q3(){if(tpe)return O9;tpe=1;var e=Array.isArray;return O9=e,O9}function Wit(){if(rpe)return P9;rpe=1;var e=Q3(),t=s2(),r=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,i=/^\w*$/;function n(a,s){if(e(a))return!1;var l=typeof a;return l=="number"||l=="symbol"||l=="boolean"||a==null||t(a)?!0:i.test(a)||!r.test(a)||s!=null&&a in Object(s)}return o(n,"isKey"),P9=n,P9}function qit(){if(ipe)return B9;ipe=1;var e=eme(),t=a2(),r="[object AsyncFunction]",i="[object Function]",n="[object GeneratorFunction]",a="[object Proxy]";function s(l){if(!t(l))return!1;var u=e(l);return u==i||u==n||u==r||u==a}return o(s,"isFunction"),B9=s,B9}function Uit(){if(npe)return F9;npe=1;var e=j3(),t=e["__core-js_shared__"];return F9=t,F9}function Hit(){if(ape)return $9;ape=1;var e=Uit(),t=(function(){var i=/[^.]+$/.exec(e&&e.keys&&e.keys.IE_PROTO||"");return i?"Symbol(src)_1."+i:""})();function r(i){return!!t&&t in i}return o(r,"isMasked"),$9=r,$9}function Yit(){if(spe)return z9;spe=1;var e=Function.prototype,t=e.toString;function r(i){if(i!=null){try{return t.call(i)}catch{}try{return i+""}catch{}}return""}return o(r,"toSource"),z9=r,z9}function jit(){if(ope)return G9;ope=1;var e=qit(),t=Hit(),r=a2(),i=Yit(),n=/[\\^$.*+?()[\]{}|]/g,a=/^\[object .+?Constructor\]$/,s=Function.prototype,l=Object.prototype,u=s.toString,h=l.hasOwnProperty,d=RegExp("^"+u.call(h).replace(n,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function f(p){if(!r(p)||t(p))return!1;var m=e(p)?d:a;return m.test(i(p))}return o(f,"baseIsNative"),G9=f,G9}function Xit(){if(lpe)return V9;lpe=1;function e(t,r){return t?.[r]}return o(e,"getValue"),V9=e,V9}function CP(){if(cpe)return W9;cpe=1;var e=jit(),t=Xit();function r(i,n){var a=t(i,n);return e(a)?a:void 0}return o(r,"getNative"),W9=r,W9}function J3(){if(upe)return q9;upe=1;var e=CP(),t=e(Object,"create");return q9=t,q9}function Kit(){if(hpe)return U9;hpe=1;var e=J3();function t(){this.__data__=e?e(null):{},this.size=0}return o(t,"hashClear"),U9=t,U9}function Zit(){if(dpe)return H9;dpe=1;function e(t){var r=this.has(t)&&delete this.__data__[t];return this.size-=r?1:0,r}return o(e,"hashDelete"),H9=e,H9}function Qit(){if(fpe)return Y9;fpe=1;var e=J3(),t="__lodash_hash_undefined__",r=Object.prototype,i=r.hasOwnProperty;function n(a){var s=this.__data__;if(e){var l=s[a];return l===t?void 0:l}return i.call(s,a)?s[a]:void 0}return o(n,"hashGet"),Y9=n,Y9}function Jit(){if(ppe)return j9;ppe=1;var e=J3(),t=Object.prototype,r=t.hasOwnProperty;function i(n){var a=this.__data__;return e?a[n]!==void 0:r.call(a,n)}return o(i,"hashHas"),j9=i,j9}function ent(){if(mpe)return X9;mpe=1;var e=J3(),t="__lodash_hash_undefined__";function r(i,n){var a=this.__data__;return this.size+=this.has(i)?0:1,a[i]=e&&n===void 0?t:n,this}return o(r,"hashSet"),X9=r,X9}function tnt(){if(gpe)return K9;gpe=1;var e=Kit(),t=Zit(),r=Qit(),i=Jit(),n=ent();function a(s){var l=-1,u=s==null?0:s.length;for(this.clear();++l<u;){var h=s[l];this.set(h[0],h[1])}}return o(a,"Hash"),a.prototype.clear=e,a.prototype.delete=t,a.prototype.get=r,a.prototype.has=i,a.prototype.set=n,K9=a,K9}function rnt(){if(ype)return Z9;ype=1;function e(){this.__data__=[],this.size=0}return o(e,"listCacheClear"),Z9=e,Z9}function Sme(){if(vpe)return Q9;vpe=1;function e(t,r){return t===r||t!==t&&r!==r}return o(e,"eq"),Q9=e,Q9}function eE(){if(xpe)return J9;xpe=1;var e=Sme();function t(r,i){for(var n=r.length;n--;)if(e(r[n][0],i))return n;return-1}return o(t,"assocIndexOf"),J9=t,J9}function int(){if(bpe)return eO;bpe=1;var e=eE(),t=Array.prototype,r=t.splice;function i(n){var a=this.__data__,s=e(a,n);if(s<0)return!1;var l=a.length-1;return s==l?a.pop():r.call(a,s,1),--this.size,!0}return o(i,"listCacheDelete"),eO=i,eO}function nnt(){if(Tpe)return tO;Tpe=1;var e=eE();function t(r){var i=this.__data__,n=e(i,r);return n<0?void 0:i[n][1]}return o(t,"listCacheGet"),tO=t,tO}function ant(){if(Cpe)return rO;Cpe=1;var e=eE();function t(r){return e(this.__data__,r)>-1}return o(t,"listCacheHas"),rO=t,rO}function snt(){if(kpe)return iO;kpe=1;var e=eE();function t(r,i){var n=this.__data__,a=e(n,r);return a<0?(++this.size,n.push([r,i])):n[a][1]=i,this}return o(t,"listCacheSet"),iO=t,iO}function ont(){if(wpe)return nO;wpe=1;var e=rnt(),t=int(),r=nnt(),i=ant(),n=snt();function a(s){var l=-1,u=s==null?0:s.length;for(this.clear();++l<u;){var h=s[l];this.set(h[0],h[1])}}return o(a,"ListCache"),a.prototype.clear=e,a.prototype.delete=t,a.prototype.get=r,a.prototype.has=i,a.prototype.set=n,nO=a,nO}function lnt(){if(Spe)return aO;Spe=1;var e=CP(),t=j3(),r=e(t,"Map");return aO=r,aO}function cnt(){if(Epe)return sO;Epe=1;var e=tnt(),t=ont(),r=lnt();function i(){this.size=0,this.__data__={hash:new e,map:new(r||t),string:new e}}return o(i,"mapCacheClear"),sO=i,sO}function unt(){if(Ape)return oO;Ape=1;function e(t){var r=typeof t;return r=="string"||r=="number"||r=="symbol"||r=="boolean"?t!=="__proto__":t===null}return o(e,"isKeyable"),oO=e,oO}function tE(){if(_pe)return lO;_pe=1;var e=unt();function t(r,i){var n=r.__data__;return e(i)?n[typeof i=="string"?"string":"hash"]:n.map}return o(t,"getMapData"),lO=t,lO}function hnt(){if(Dpe)return cO;Dpe=1;var e=tE();function t(r){var i=e(this,r).delete(r);return this.size-=i?1:0,i}return o(t,"mapCacheDelete"),cO=t,cO}function dnt(){if(Rpe)return uO;Rpe=1;var e=tE();function t(r){return e(this,r).get(r)}return o(t,"mapCacheGet"),uO=t,uO}function fnt(){if(Lpe)return hO;Lpe=1;var e=tE();function t(r){return e(this,r).has(r)}return o(t,"mapCacheHas"),hO=t,hO}function pnt(){if(Mpe)return dO;Mpe=1;var e=tE();function t(r,i){var n=e(this,r),a=n.size;return n.set(r,i),this.size+=n.size==a?0:1,this}return o(t,"mapCacheSet"),dO=t,dO}function mnt(){if(Npe)return fO;Npe=1;var e=cnt(),t=hnt(),r=dnt(),i=fnt(),n=pnt();function a(s){var l=-1,u=s==null?0:s.length;for(this.clear();++l<u;){var h=s[l];this.set(h[0],h[1])}}return o(a,"MapCache"),a.prototype.clear=e,a.prototype.delete=t,a.prototype.get=r,a.prototype.has=i,a.prototype.set=n,fO=a,fO}function gnt(){if(Ipe)return pO;Ipe=1;var e=mnt(),t="Expected a function";function r(i,n){if(typeof i!="function"||n!=null&&typeof n!="function")throw new TypeError(t);var a=o(function(){var s=arguments,l=n?n.apply(this,s):s[0],u=a.cache;if(u.has(l))return u.get(l);var h=i.apply(this,s);return a.cache=u.set(l,h)||u,h},"memoized");return a.cache=new(r.Cache||e),a}return o(r,"memoize"),r.Cache=e,pO=r,pO}function ynt(){if(Ope)return mO;Ope=1;var e=gnt(),t=500;function r(i){var n=e(i,function(s){return a.size===t&&a.clear(),s}),a=n.cache;return n}return o(r,"memoizeCapped"),mO=r,mO}function Eme(){if(Ppe)return gO;Ppe=1;var e=ynt(),t=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,r=/\\(\\)?/g,i=e(function(n){var a=[];return n.charCodeAt(0)===46&&a.push(""),n.replace(t,function(s,l,u,h){a.push(u?h.replace(r,"$1"):l||s)}),a});return gO=i,gO}function Ame(){if(Bpe)return yO;Bpe=1;function e(t,r){for(var i=-1,n=t==null?0:t.length,a=Array(n);++i<n;)a[i]=r(t[i],i,t);return a}return o(e,"arrayMap"),yO=e,yO}function vnt(){if(Fpe)return vO;Fpe=1;var e=fP(),t=Ame(),r=Q3(),i=s2(),n=e?e.prototype:void 0,a=n?n.toString:void 0;function s(l){if(typeof l=="string")return l;if(r(l))return t(l,s)+"";if(i(l))return a?a.call(l):"";var u=l+"";return u=="0"&&1/l==-1/0?"-0":u}return o(s,"baseToString"),vO=s,vO}function _me(){if($pe)return xO;$pe=1;var e=vnt();function t(r){return r==null?"":e(r)}return o(t,"toString"),xO=t,xO}function Dme(){if(zpe)return bO;zpe=1;var e=Q3(),t=Wit(),r=Eme(),i=_me();function n(a,s){return e(a)?a:t(a,s)?[a]:r(i(a))}return o(n,"castPath"),bO=n,bO}function kP(){if(Gpe)return TO;Gpe=1;var e=s2();function t(r){if(typeof r=="string"||e(r))return r;var i=r+"";return i=="0"&&1/r==-1/0?"-0":i}return o(t,"toKey"),TO=t,TO}function xnt(){if(Vpe)return CO;Vpe=1;var e=Dme(),t=kP();function r(i,n){n=e(n,i);for(var a=0,s=n.length;i!=null&&a<s;)i=i[t(n[a++])];return a&&a==s?i:void 0}return o(r,"baseGet"),CO=r,CO}function bnt(){if(Wpe)return kO;Wpe=1;var e=xnt();function t(r,i,n){var a=r==null?void 0:e(r,i);return a===void 0?n:a}return o(t,"get"),kO=t,kO}function knt(){if(qpe)return wO;qpe=1;var e=CP(),t=(function(){try{var r=e(Object,"defineProperty");return r({},"",{}),r}catch{}})();return wO=t,wO}function wnt(){if(Upe)return SO;Upe=1;var e=knt();function t(r,i,n){i=="__proto__"&&e?e(r,i,{configurable:!0,enumerable:!0,value:n,writable:!0}):r[i]=n}return o(t,"baseAssignValue"),SO=t,SO}function Snt(){if(Hpe)return EO;Hpe=1;var e=wnt(),t=Sme(),r=Object.prototype,i=r.hasOwnProperty;function n(a,s,l){var u=a[s];(!(i.call(a,s)&&t(u,l))||l===void 0&&!(s in a))&&e(a,s,l)}return o(n,"assignValue"),EO=n,EO}function Ent(){if(Ype)return AO;Ype=1;var e=9007199254740991,t=/^(?:0|[1-9]\d*)$/;function r(i,n){var a=typeof i;return n=n??e,!!n&&(a=="number"||a!="symbol"&&t.test(i))&&i>-1&&i%1==0&&i<n}return o(r,"isIndex"),AO=r,AO}function Ant(){if(jpe)return _O;jpe=1;var e=Snt(),t=Dme(),r=Ent(),i=a2(),n=kP();function a(s,l,u,h){if(!i(s))return s;l=t(l,s);for(var d=-1,f=l.length,p=f-1,m=s;m!=null&&++d<f;){var g=n(l[d]),y=u;if(g==="__proto__"||g==="constructor"||g==="prototype")return s;if(d!=p){var v=m[g];y=h?h(v,g,m):void 0,y===void 0&&(y=i(v)?v:r(l[d+1])?[]:{})}e(m,g,y),m=m[g]}return s}return o(a,"baseSet"),_O=a,_O}function _nt(){if(Xpe)return DO;Xpe=1;var e=Ant();function t(r,i,n){return r==null?r:e(r,i,n)}return o(t,"set"),DO=t,DO}function Lnt(){if(Kpe)return RO;Kpe=1;function e(t,r){var i=-1,n=t.length;for(r||(r=Array(n));++i<n;)r[i]=t[i];return r}return o(e,"copyArray"),RO=e,RO}function Mnt(){if(Zpe)return LO;Zpe=1;var e=Ame(),t=Lnt(),r=Q3(),i=s2(),n=Eme(),a=kP(),s=_me();function l(u){return r(u)?e(u,a):i(u)?[u]:t(n(s(u)))}return o(l,"toPath"),LO=l,LO}function SP(e,t,r,i){for(var n=[],a=new y1,s=e.cy(),l=s.hasCompoundNodes(),u=0;u<e.length;u++){var h=e[u];r?n.push(h):l&&i(n,a,h)}for(;n.length>0;){var d=n.shift();t(d),a.add(d.id()),l&&i(n,a,d)}return e}function Lme(e,t,r){if(r.isParent())for(var i=r._private.children,n=0;n<i.length;n++){var a=i[n];t.has(a.id())||e.push(a)}}function Mme(e,t,r){if(r.isChild()){var i=r._private.parent;t.has(i.id())||e.push(i)}}function Qnt(e,t,r){Mme(e,t,r),Lme(e,t,r)}function MO(e){return function(t){var r=this;if(t===void 0&&(t=!0),r.length!==0)if(r.isNode()&&!r.removed()){for(var i=0,n=r[0],a=n._private.edges,s=0;s<a.length;s++){var l=a[s];!t&&l.isLoop()||(i+=e(n,l))}return i}else return}}function e1(e,t){return function(r){for(var i,n=this.nodes(),a=0;a<n.length;a++){var s=n[a],l=s[e](r);l!==void 0&&(i===void 0||t(l,i))&&(i=l)}return i}}function Ob(){return!1}function g3(){return!0}function iE(){for(var e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:yat,t=arguments.length>1?arguments[1]:void 0,r=0;r<n0e.length;r++){var i=n0e[r];this[i]=e[i]||Vme[i]}this.context=t||this.context,this.listeners=[],this.emitting=0}function Yme(e,t,r){var i=r._private,n=i.styleCache=i.styleCache||[],a;return(a=n[e])!=null||(a=n[e]=t(r)),a}function nE(e,t){return e=Jp(e),o(function(i){return Yme(e,t,i)},"cachedStyleFunction")}function aE(e,t){e=Jp(e);var r=o(function(n){return t.call(n)},"selfFn");return o(function(){var n=this[0];if(n)return Yme(e,r,n)},"cachedPrototypeStyleFunction")}function IO(e,t){var r=e._private,i=r.data.parent?e.parents():null;if(i)for(var n=0;n<i.length;n++){var a=i[n];if(!t(a))return!1}return!0}function EP(e){var t=e.ok,r=e.edgeOkViaNode||e.ok,i=e.parentOk||e.ok;return function(){var n=this.cy();if(!n.styleEnabled())return!0;var a=this[0],s=n.hasCompoundNodes();if(a){var l=a._private;if(!t(a))return!1;if(a.isNode())return!s||IO(a,i);var u=l.source,h=l.target;return r(u)&&(!s||IO(u,r))&&(u===h||r(h)&&(!s||IO(h,r)))}}}function s0e(e){return function(){var t=arguments,r=[];if(t.length===2){var i=t[0],n=t[1];this.on(e.event,i,n)}else if(t.length===1&&Ji(t[0])){var a=t[0];this.on(e.event,a)}else if(t.length===0||t.length===1&&Si(t[0])){for(var s=t.length===1?t[0]:null,l=0;l<this.length;l++){var u=this[l],h=!e.ableField||u._private[e.ableField],d=u._private[e.field]!=e.value;if(e.overrideAble){var f=e.overrideAble(u);if(f!==void 0&&(h=f,!f))return this}h&&(u._private[e.field]=e.value,d&&r.push(u))}var p=this.spawn(r);p.updateStyle(),p.emit(e.event),s&&p.emit(s)}return this}}function b1(e){Wd[e.field]=function(){var t=this[0];if(t){if(e.overrideField){var r=e.overrideField(t);if(r!==void 0)return r}return t._private[e.field]}},Wd[e.on]=s0e({event:e.on,field:e.field,ableField:e.ableField,overrideAble:e.overrideAble,value:!0}),Wd[e.off]=s0e({event:e.off,field:e.field,ableField:e.ableField,overrideAble:e.overrideAble,value:!1})}function u0e(e){return o(function(r){for(var i=[],n=0;n<this.length;n++){var a=this[n],s=a._private[e.attr];s&&i.push(s)}return this.spawn(i,!0).filter(r)},"sourceImpl")}function h0e(e){return o(function(r){var i=[],n=this._private.cy,a=e||{};sr(r)&&(r=n.$(r));for(var s=0;s<r.length;s++)for(var l=r[s]._private.edges,u=0;u<l.length;u++){var h=l[u],d=h._private.data,f=this.hasElementWithId(d.source)&&r.hasElementWithId(d.target),p=r.hasElementWithId(d.source)&&this.hasElementWithId(d.target),m=f||p;m&&((a.thisIsSrc||a.thisIsTgt)&&(a.thisIsSrc&&!f||a.thisIsTgt&&!p)||i.push(h))}return this.spawn(i,!0)},"edgesWithImpl")}function d0e(e){var t={codirected:!1};return e=hr({},t,e),o(function(i){for(var n=[],a=this.edges(),s=e,l=0;l<a.length;l++)for(var u=a[l],h=u._private,d=h.source,f=d._private.data.id,p=h.data.target,m=d._private.edges,g=0;g<m.length;g++){var y=m[g],v=y._private.data,x=v.target,b=v.source,T=x===p&&b===f,w=f===x&&p===b;(s.codirected&&T||!s.codirected&&(T||w))&&n.push(y)}return this.spawn(n,!0).filter(i)},"parallelEdgesImpl")}function _at(e,t,r,i){var n=4,a=.001,s=1e-7,l=10,u=11,h=1/(u-1),d=typeof Float32Array<"u";if(arguments.length!==4)return!1;for(var f=0;f<4;++f)if(typeof arguments[f]!="number"||isNaN(arguments[f])||!isFinite(arguments[f]))return!1;e=Math.min(e,1),r=Math.min(r,1),e=Math.max(e,0),r=Math.max(r,0);var p=d?new Float32Array(u):new Array(u);function m(P,I){return 1-3*I+3*P}o(m,"A");function g(P,I){return 3*I-6*P}o(g,"B");function y(P){return 3*P}o(y,"C");function v(P,I,D){return((m(I,D)*P+g(I,D))*P+y(I))*P}o(v,"calcBezier");function x(P,I,D){return 3*m(I,D)*P*P+2*g(I,D)*P+y(I)}o(x,"getSlope");function b(P,I){for(var D=0;D<n;++D){var _=x(I,e,r);if(_===0)return I;var R=v(I,e,r)-P;I-=R/_}return I}o(b,"newtonRaphsonIterate");function T(){for(var P=0;P<u;++P)p[P]=v(P*h,e,r)}o(T,"calcSampleValues");function w(P,I,D){var _,R,M=0;do R=I+(D-I)/2,_=v(R,e,r)-P,_>0?D=R:I=R;while(Math.abs(_)>s&&++M<l);return R}o(w,"binarySubdivide");function C(P){for(var I=0,D=1,_=u-1;D!==_&&p[D]<=P;++D)I+=h;--D;var R=(P-p[D])/(p[D+1]-p[D]),M=I+R*h,L=x(M,e,r);return L>=a?b(P,M):L===0?M:w(P,I,I+h)}o(C,"getTForX");var k=!1;function E(){k=!0,(e!==t||r!==i)&&T()}o(E,"precompute");var A=o(function(I){return k||E(),e===t&&r===i?I:I===0?0:I===1?1:v(C(I),t,i)},"f");A.getControlPoints=function(){return[{x:e,y:t},{x:r,y:i}]};var N="generateBezier("+[e,t,r,i]+")";return A.toString=function(){return N},A}function f0e(e,t,r,i,n){if(i===1||t===r)return r;var a=n(t,r,i);return e==null||((e.roundValue||e.color)&&(a=Math.round(a)),e.min!==void 0&&(a=Math.max(a,e.min)),e.max!==void 0&&(a=Math.min(a,e.max))),a}function p0e(e,t){return e.pfValue!=null||e.value!=null?e.pfValue!=null&&(t==null||t.type.units!=="%")?e.pfValue:e.value:e}function t1(e,t,r,i,n){var a=n!=null?n.type:null;r<0?r=0:r>1&&(r=1);var s=p0e(e,n),l=p0e(t,n);if(Ot(s)&&Ot(l))return f0e(a,s,l,r,i);if(Si(s)&&Si(l)){for(var u=[],h=0;h<l.length;h++){var d=s[h],f=l[h];if(d!=null&&f!=null){var p=f0e(a,d,f,r,i);u.push(p)}else u.push(f)}return u}}function Rat(e,t,r,i){var n=!i,a=e._private,s=t._private,l=s.easing,u=s.startTime,h=i?e:e.cy(),d=h.style();if(!s.easingImpl)if(l==null)s.easingImpl=A3.linear;else{var f;if(sr(l)){var p=d.parse("transition-timing-function",l);f=p.value}else f=l;var m,g;sr(f)?(m=f,g=[]):(m=f[1],g=f.slice(2).map(function($){return+$})),g.length>0?(m==="spring"&&g.push(s.duration),s.easingImpl=A3[m].apply(null,g)):s.easingImpl=A3[m]}var y=s.easingImpl,v;if(s.duration===0?v=1:v=(r-u)/s.duration,s.applying&&(v=s.progress),v<0?v=0:v>1&&(v=1),s.delay==null){var x=s.startPosition,b=s.position;if(b&&n&&!e.locked()){var T={};Pb(x.x,b.x)&&(T.x=t1(x.x,b.x,v,y)),Pb(x.y,b.y)&&(T.y=t1(x.y,b.y,v,y)),e.position(T)}var w=s.startPan,C=s.pan,k=a.pan,E=C!=null&&i;E&&(Pb(w.x,C.x)&&(k.x=t1(w.x,C.x,v,y)),Pb(w.y,C.y)&&(k.y=t1(w.y,C.y,v,y)),e.emit("pan"));var A=s.startZoom,N=s.zoom,P=N!=null&&i;P&&(Pb(A,N)&&(a.zoom=Xb(a.minZoom,t1(A,N,v,y),a.maxZoom)),e.emit("zoom")),(E||P)&&e.emit("viewport");var I=s.style;if(I&&I.length>0&&n){for(var D=0;D<I.length;D++){var _=I[D],R=_.name,M=_,L=s.startStyle[R],B=d.properties[L.name],O=t1(L,M,v,y,B);d.overrideBypass(e,R,O)}e.emit("style")}}return s.progress=v,v}function Pb(e,t){return e==null||t==null?!1:Ot(e)&&Ot(t)?!0:!!(e&&t)}function Lat(e,t,r,i){var n=t._private;n.started=!0,n.startTime=r-n.progress*n.duration}function m0e(e,t){var r=t._private.aniEles,i=[];function n(d,f){var p=d._private,m=p.animation.current,g=p.animation.queue,y=!1;if(m.length===0){var v=g.shift();v&&m.push(v)}for(var x=o(function(k){for(var E=k.length-1;E>=0;E--){var A=k[E];A()}k.splice(0,k.length)},"callbacks"),b=m.length-1;b>=0;b--){var T=m[b],w=T._private;if(w.stopped){m.splice(b,1),w.hooked=!1,w.playing=!1,w.started=!1,x(w.frames);continue}!w.playing&&!w.applying||(w.playing&&w.applying&&(w.applying=!1),w.started||Lat(d,T,e),Rat(d,T,e,f),w.applying&&(w.applying=!1),x(w.frames),w.step!=null&&w.step(e),T.completed()&&(m.splice(b,1),w.hooked=!1,w.playing=!1,w.started=!1,x(w.completes)),y=!0)}return!f&&m.length===0&&g.length===0&&i.push(d),y}o(n,"stepOne");for(var a=!1,s=0;s<r.length;s++){var l=r[s],u=n(l);a=a||u}var h=n(t,!0);(a||h)&&(r.length>0?t.notify("draw",r):t.notify("draw")),r.unmerge(i),t.emit("step")}function Xme(e){this.options=hr({},$at,zat,e)}function Kme(e){this.options=hr({},Gat,e)}function Zme(e){this.options=hr({},Vat,e)}function lE(e){this.options=hr({},Wat,e),this.options.layout=this;var t=this.options.eles.nodes(),r=this.options.eles.edges(),i=r.filter(function(n){var a=n.source().data("id"),s=n.target().data("id"),l=t.some(function(h){return h.data("id")===a}),u=t.some(function(h){return h.data("id")===s});return!l||!u});this.options.eles=this.options.eles.not(i)}function tge(e){this.options=hr({},nst,e)}function DP(e){this.options=hr({},ast,e)}function rge(e){this.options=hr({},sst,e)}function ige(e){this.options=hr({},ost,e)}function nge(e){this.options=e,this.notifications=0}function oge(e,t){t.radius===0?e.lineTo(t.cx,t.cy):e.arc(t.cx,t.cy,t.radius,t.startAngle,t.endAngle,t.counterClockwise)}function LP(e,t,r,i){var n=arguments.length>4&&arguments[4]!==void 0?arguments[4]:!0;return i===0||t.radius===0?{cx:t.x,cy:t.y,radius:0,startX:t.x,startY:t.y,stopX:t.x,stopY:t.y,startAngle:void 0,endAngle:void 0,counterClockwise:void 0}:(ust(e,t,r,i,n),{cx:tP,cy:rP,radius:Xp,startX:age,startY:sge,stopX:iP,stopY:nP,startAngle:Pc.ang+Math.PI/2*Zp,endAngle:Yo.ang-Math.PI/2*Zp,counterClockwise:R3})}function lge(e){var t=[];if(e!=null){for(var r=0;r<e.length;r+=2){var i=e[r],n=e[r+1];t.push({x:i,y:n})}return t}}function dst(e,t,r){for(var i=o(function(h,d,f,p){return na(h,d,f,p)},"qbezierAt$1"),n=t._private,a=n.rstyle.bezierPts,s=0;s<e.bezierProjPcts.length;s++){var l=e.bezierProjPcts[s];a.push({x:i(r[0],r[2],r[4],l),y:i(r[1],r[3],r[5],l)})}}function Vst(e,t){for(var r=0;r<t.length;r++){var i=t[r];e.lineTo(i.x,i.y)}}function Wst(e,t,r){for(var i,n=0;n<t.length;n++){var a=t[n];n===0&&(i=a),e.lineTo(a.x,a.y)}e.quadraticCurveTo(r.x,r.y,i.x,i.y)}function N0e(e,t,r){e.beginPath&&e.beginPath();for(var i=t,n=0;n<i.length;n++){var a=i[n];e.lineTo(a.x,a.y)}var s=r,l=r[0];e.moveTo(l.x,l.y);for(var n=1;n<s.length;n++){var a=s[n];e.lineTo(a.x,a.y)}e.closePath&&e.closePath()}function qst(e,t,r,i,n){e.beginPath&&e.beginPath(),e.arc(r,i,n,0,Math.PI*2,!1);var a=t,s=a[0];e.moveTo(s.x,s.y);for(var l=0;l<a.length;l++){var u=a[l];e.lineTo(u.x,u.y)}e.closePath&&e.closePath()}function Ust(e,t,r,i){e.arc(t,r,i,0,Math.PI*2,!1)}function Zst(e,t,r,i,n){var a=Math.min(i,n),s=a/2,l=t+i/2,u=r+n/2;e.beginPath(),e.arc(l,u,s,0,Math.PI*2),e.closePath()}function I0e(e,t,r,i,n){var a=arguments.length>5&&arguments[5]!==void 0?arguments[5]:5,s=Math.min(a,i/2,n/2);e.beginPath(),e.moveTo(t+s,r),e.lineTo(t+i-s,r),e.quadraticCurveTo(t+i,r,t+i,r+s),e.lineTo(t+i,r+n-s),e.quadraticCurveTo(t+i,r+n,t+i-s,r+n),e.lineTo(t+s,r+n),e.quadraticCurveTo(t,r+n,t,r+n-s),e.lineTo(t,r+s),e.quadraticCurveTo(t,r,t+s,r),e.closePath()}function O0e(e,t,r){var i=e.createShader(t);if(e.shaderSource(i,r),e.compileShader(i),!e.getShaderParameter(i,e.COMPILE_STATUS))throw new Error(e.getShaderInfoLog(i));return i}function Jst(e,t,r){var i=O0e(e,e.VERTEX_SHADER,t),n=O0e(e,e.FRAGMENT_SHADER,r),a=e.createProgram();if(e.attachShader(a,i),e.attachShader(a,n),e.linkProgram(a),!e.getProgramParameter(a,e.LINK_STATUS))throw new Error("Could not initialize shaders");return a}function eot(e,t,r){r===void 0&&(r=t);var i=e.makeOffscreenCanvas(t,r),n=i.context=i.getContext("2d");return i.clear=function(){return n.clearRect(0,0,i.width,i.height)},i.clear(),i}function IP(e){var t=e.pixelRatio,r=e.cy.zoom(),i=e.cy.pan();return{zoom:r*t,pan:{x:i.x*t,y:i.y*t}}}function tot(e){var t=e.pixelRatio,r=e.cy.zoom();return r*t}function rot(e,t,r,i,n){var a=i*r+t.x,s=n*r+t.y;return s=Math.round(e.canvasHeight-s),[a,s]}function iot(e){return e.pstyle("background-fill").value!=="solid"||e.pstyle("background-image").strValue!=="none"?!1:e.pstyle("border-width").value===0||e.pstyle("border-opacity").value===0?!0:e.pstyle("border-style").value==="solid"}function not(e,t){if(e.length!==t.length)return!1;for(var r=0;r<e.length;r++)if(e[r]!==t[r])return!1;return!0}function Hp(e,t,r){var i=e[0]/255,n=e[1]/255,a=e[2]/255,s=t,l=r||new Array(4);return l[0]=i*s,l[1]=n*s,l[2]=a*s,l[3]=s,l}function n1(e,t){var r=t||new Array(4);return r[0]=(e>>0&255)/255,r[1]=(e>>8&255)/255,r[2]=(e>>16&255)/255,r[3]=(e>>24&255)/255,r}function aot(e){return e[0]+(e[1]<<8)+(e[2]<<16)+(e[3]<<24)}function sot(e,t){var r=e.createTexture();return r.buffer=function(i){e.bindTexture(e.TEXTURE_2D,r),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_S,e.CLAMP_TO_EDGE),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_T,e.CLAMP_TO_EDGE),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MAG_FILTER,e.LINEAR),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MIN_FILTER,e.LINEAR_MIPMAP_NEAREST),e.pixelStorei(e.UNPACK_PREMULTIPLY_ALPHA_WEBGL,!0),e.texImage2D(e.TEXTURE_2D,0,e.RGBA,e.RGBA,e.UNSIGNED_BYTE,i),e.generateMipmap(e.TEXTURE_2D),e.bindTexture(e.TEXTURE_2D,null)},r.deleteTexture=function(){e.deleteTexture(r)},r}function Tge(e,t){switch(t){case"float":return[1,e.FLOAT,4];case"vec2":return[2,e.FLOAT,4];case"vec3":return[3,e.FLOAT,4];case"vec4":return[4,e.FLOAT,4];case"int":return[1,e.INT,4];case"ivec2":return[2,e.INT,4]}}function Cge(e,t,r){switch(t){case e.FLOAT:return new Float32Array(r);case e.INT:return new Int32Array(r)}}function oot(e,t,r,i,n,a){switch(t){case e.FLOAT:return new Float32Array(r.buffer,a*i,n);case e.INT:return new Int32Array(r.buffer,a*i,n)}}function lot(e,t,r,i){var n=Tge(e,t),a=Dn(n,2),s=a[0],l=a[1],u=Cge(e,l,i),h=e.createBuffer();return e.bindBuffer(e.ARRAY_BUFFER,h),e.bufferData(e.ARRAY_BUFFER,u,e.STATIC_DRAW),l===e.FLOAT?e.vertexAttribPointer(r,s,l,!1,0,0):l===e.INT&&e.vertexAttribIPointer(r,s,l,0,0),e.enableVertexAttribArray(r),e.bindBuffer(e.ARRAY_BUFFER,null),h}function Oc(e,t,r,i){var n=Tge(e,r),a=Dn(n,3),s=a[0],l=a[1],u=a[2],h=Cge(e,l,t*s),d=s*u,f=e.createBuffer();e.bindBuffer(e.ARRAY_BUFFER,f),e.bufferData(e.ARRAY_BUFFER,t*d,e.DYNAMIC_DRAW),e.enableVertexAttribArray(i),l===e.FLOAT?e.vertexAttribPointer(i,s,l,!1,d,0):l===e.INT&&e.vertexAttribIPointer(i,s,l,d,0),e.vertexAttribDivisor(i,1),e.bindBuffer(e.ARRAY_BUFFER,null);for(var p=new Array(t),m=0;m<t;m++)p[m]=oot(e,l,h,d,s,m);return f.dataArray=h,f.stride=d,f.size=s,f.getView=function(g){return p[g]},f.setPoint=function(g,y,v){var x=p[g];x[0]=y,x[1]=v},f.bufferSubData=function(g){e.bindBuffer(e.ARRAY_BUFFER,f),g?e.bufferSubData(e.ARRAY_BUFFER,0,h,0,g*s):e.bufferSubData(e.ARRAY_BUFFER,0,h)},f}function cot(e,t,r){for(var i=9,n=new Float32Array(t*i),a=new Array(t),s=0;s<t;s++){var l=s*i*4;a[s]=new Float32Array(n.buffer,l,i)}var u=e.createBuffer();e.bindBuffer(e.ARRAY_BUFFER,u),e.bufferData(e.ARRAY_BUFFER,n.byteLength,e.DYNAMIC_DRAW);for(var h=0;h<3;h++){var d=r+h;e.enableVertexAttribArray(d),e.vertexAttribPointer(d,3,e.FLOAT,!1,36,h*12),e.vertexAttribDivisor(d,1)}return e.bindBuffer(e.ARRAY_BUFFER,null),u.getMatrixView=function(f){return a[f]},u.setData=function(f,p){a[p].set(f,0)},u.bufferSubData=function(){e.bindBuffer(e.ARRAY_BUFFER,u),e.bufferSubData(e.ARRAY_BUFFER,0,n)},u}function uot(e){var t=e.createFramebuffer();e.bindFramebuffer(e.FRAMEBUFFER,t);var r=e.createTexture();return e.bindTexture(e.TEXTURE_2D,r),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MIN_FILTER,e.LINEAR),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_S,e.CLAMP_TO_EDGE),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_T,e.CLAMP_TO_EDGE),e.framebufferTexture2D(e.FRAMEBUFFER,e.COLOR_ATTACHMENT0,e.TEXTURE_2D,r,0),e.bindFramebuffer(e.FRAMEBUFFER,null),t.setFramebufferAttachmentSizes=function(i,n){e.bindTexture(e.TEXTURE_2D,r),e.texImage2D(e.TEXTURE_2D,0,e.RGBA,i,n,0,e.RGBA,e.UNSIGNED_BYTE,null)},t}function FO(){var e=new P0e(9);return P0e!=Float32Array&&(e[1]=0,e[2]=0,e[3]=0,e[5]=0,e[6]=0,e[7]=0),e[0]=1,e[4]=1,e[8]=1,e}function B0e(e){return e[0]=1,e[1]=0,e[2]=0,e[3]=0,e[4]=1,e[5]=0,e[6]=0,e[7]=0,e[8]=1,e}function hot(e,t,r){var i=t[0],n=t[1],a=t[2],s=t[3],l=t[4],u=t[5],h=t[6],d=t[7],f=t[8],p=r[0],m=r[1],g=r[2],y=r[3],v=r[4],x=r[5],b=r[6],T=r[7],w=r[8];return e[0]=p*i+m*s+g*h,e[1]=p*n+m*l+g*d,e[2]=p*a+m*u+g*f,e[3]=y*i+v*s+x*h,e[4]=y*n+v*l+x*d,e[5]=y*a+v*u+x*f,e[6]=b*i+T*s+w*h,e[7]=b*n+T*l+w*d,e[8]=b*a+T*u+w*f,e}function M3(e,t,r){var i=t[0],n=t[1],a=t[2],s=t[3],l=t[4],u=t[5],h=t[6],d=t[7],f=t[8],p=r[0],m=r[1];return e[0]=i,e[1]=n,e[2]=a,e[3]=s,e[4]=l,e[5]=u,e[6]=p*i+m*s+h,e[7]=p*n+m*l+d,e[8]=p*a+m*u+f,e}function F0e(e,t,r){var i=t[0],n=t[1],a=t[2],s=t[3],l=t[4],u=t[5],h=t[6],d=t[7],f=t[8],p=Math.sin(r),m=Math.cos(r);return e[0]=m*i+p*s,e[1]=m*n+p*l,e[2]=m*a+p*u,e[3]=m*s-p*i,e[4]=m*l-p*n,e[5]=m*u-p*a,e[6]=h,e[7]=d,e[8]=f,e}function sP(e,t,r){var i=r[0],n=r[1];return e[0]=i*t[0],e[1]=i*t[1],e[2]=i*t[2],e[3]=n*t[3],e[4]=n*t[4],e[5]=n*t[5],e[6]=t[6],e[7]=t[7],e[8]=t[8],e}function dot(e,t,r){return e[0]=2/t,e[1]=0,e[2]=0,e[3]=0,e[4]=-2/r,e[5]=0,e[6]=-1,e[7]=1,e[8]=1,e}function mot(e,t){return e.intersection?e.intersection(t):new Set(N3(e).filter(function(r){return t.has(r)}))}function kot(e){var t=e.cy.container(),r=t&&t.style&&t.style.backgroundColor||"white";return Z0e(r)}function wge(e,t){var r=e._private.rscratch;return Ps(r,"labelWrapCachedLines",t)||[]}function wot(e){{var t=e.render;e.render=function(a){a=a||{};var s=e.cy;e.webgl&&(s.zoom()>gge?(Sot(e),t.call(e,a)):(Eot(e),Ege(e,a,Ub.SCREEN)))}}{var r=e.matchCanvasSize;e.matchCanvasSize=function(a){r.call(e,a),e.pickingFrameBuffer.setFramebufferAttachmentSizes(e.canvasWidth,e.canvasHeight),e.pickingFrameBuffer.needsDraw=!0}}e.findNearestElements=function(a,s,l,u){return Mot(e,a,s)};{var i=e.invalidateCachedZSortedEles;e.invalidateCachedZSortedEles=function(){i.call(e),e.pickingFrameBuffer.needsDraw=!0}}{var n=e.notify;e.notify=function(a,s){n.call(e,a,s),a==="viewport"||a==="bounds"?e.pickingFrameBuffer.needsDraw=!0:a==="background"&&e.drawing.invalidate(s,{type:"node-body"})}}}function Sot(e){var t=e.data.contexts[e.WEBGL];t.clear(t.COLOR_BUFFER_BIT|t.DEPTH_BUFFER_BIT)}function Eot(e){var t=o(function(i){i.save(),i.setTransform(1,0,0,1,0,0),i.clearRect(0,0,e.canvasWidth,e.canvasHeight),i.restore()},"clear");t(e.data.contexts[e.NODE]),t(e.data.contexts[e.DRAG])}function Aot(e){var t=e.canvasWidth,r=e.canvasHeight,i=IP(e),n=i.pan,a=i.zoom,s=FO();M3(s,s,[n.x,n.y]),sP(s,s,[a,a]);var l=FO();dot(l,t,r);var u=FO();return hot(u,l,s),u}function Sge(e,t){var r=e.canvasWidth,i=e.canvasHeight,n=IP(e),a=n.pan,s=n.zoom;t.setTransform(1,0,0,1,0,0),t.clearRect(0,0,r,i),t.translate(a.x,a.y),t.scale(s,s)}function _ot(e,t){e.drawSelectionRectangle(t,function(r){return Sge(e,r)})}function Dot(e){var t=e.data.contexts[e.NODE];t.save(),Sge(e,t),t.strokeStyle="rgba(0, 0, 0, 0.3)",t.beginPath(),t.moveTo(-1e3,0),t.lineTo(1e3,0),t.stroke(),t.beginPath(),t.moveTo(0,-1e3),t.lineTo(0,1e3),t.stroke(),t.restore()}function Rot(e){var t=o(function(n,a,s){for(var l=n.atlasManager.getAtlasCollection(a),u=e.data.contexts[e.NODE],h=l.atlases,d=0;d<h.length;d++){var f=h[d],p=f.canvas;if(p){var m=p.width,g=p.height,y=m*d,v=p.height*s,x=.4;u.save(),u.scale(x,x),u.drawImage(p,y,v),u.strokeStyle="black",u.rect(y,v,m,g),u.stroke(),u.restore()}}},"draw"),r=0;t(e.drawing,"node",r++),t(e.drawing,"label",r++)}function Lot(e,t,r,i,n){var a,s,l,u,h=IP(e),d=h.pan,f=h.zoom;{var p=rot(e,d,f,t,r),m=Dn(p,2),g=m[0],y=m[1],v=6;a=g-v/2,s=y-v/2,l=v,u=v}if(l===0||u===0)return[];var x=e.data.contexts[e.WEBGL];x.bindFramebuffer(x.FRAMEBUFFER,e.pickingFrameBuffer),e.pickingFrameBuffer.needsDraw&&(x.viewport(0,0,x.canvas.width,x.canvas.height),Ege(e,null,Ub.PICKING),e.pickingFrameBuffer.needsDraw=!1);var b=l*u,T=new Uint8Array(b*4);x.readPixels(a,s,l,u,x.RGBA,x.UNSIGNED_BYTE,T),x.bindFramebuffer(x.FRAMEBUFFER,null);for(var w=new Set,C=0;C<b;C++){var k=T.slice(C*4,C*4+4),E=aot(k)-1;E>=0&&w.add(E)}return w}function Mot(e,t,r){var i=Lot(e,t,r),n=e.getCachedZSortedEles(),a,s,l=Fs(i),u;try{for(l.s();!(u=l.n()).done;){var h=u.value,d=n[h];if(!a&&d.isNode()&&(a=d),!s&&d.isEdge()&&(s=d),a&&s)break}}catch(f){l.e(f)}finally{l.f()}return[a,s].filter(Boolean)}function WO(e,t,r){var i=e.drawing;t+=1,r.isNode()?(i.drawNode(r,t,"node-underlay"),i.drawNode(r,t,"node-body"),i.drawTexture(r,t,"label"),i.drawNode(r,t,"node-overlay")):(i.drawEdgeLine(r,t),i.drawEdgeArrow(r,t,"source"),i.drawEdgeArrow(r,t,"target"),i.drawTexture(r,t,"label"),i.drawTexture(r,t,"edge-source-label"),i.drawTexture(r,t,"edge-target-label"))}function Ege(e,t,r){var i;e.webglDebug&&(i=performance.now());var n=e.drawing,a=0;if(r.screen&&e.data.canvasNeedsRedraw[e.SELECT_BOX]&&_ot(e,t),e.data.canvasNeedsRedraw[e.NODE]||r.picking){var s=e.data.contexts[e.WEBGL];r.screen?(s.clearColor(0,0,0,0),s.enable(s.BLEND),s.blendFunc(s.ONE,s.ONE_MINUS_SRC_ALPHA)):s.disable(s.BLEND),s.clear(s.COLOR_BUFFER_BIT|s.DEPTH_BUFFER_BIT),s.viewport(0,0,s.canvas.width,s.canvas.height);var l=Aot(e),u=e.getCachedZSortedEles();if(a=u.length,n.startFrame(l,r),r.screen){for(var h=0;h<u.nondrag.length;h++)WO(e,h,u.nondrag[h]);for(var d=0;d<u.drag.length;d++)WO(e,d,u.drag[d])}else if(r.picking)for(var f=0;f<u.length;f++)WO(e,f,u[f]);n.endFrame(),r.screen&&e.webglDebugShowAtlases&&(Dot(e),Rot(e)),e.data.canvasNeedsRedraw[e.NODE]=!1,e.data.canvasNeedsRedraw[e.DRAG]=!1}if(e.webglDebug){var p=performance.now(),m=!1,g=Math.ceil(p-i),y=n.getDebugInfo(),v=["".concat(a," elements"),"".concat(y.totalInstances," instances"),"".concat(y.batchCount," batches"),"".concat(y.totalAtlases," atlases"),"".concat(y.wrappedCount," wrapped textures"),"".concat(y.simpleCount," simple shapes")].join(", ");if(m)console.log("WebGL (".concat(r.name,") - time ").concat(g,"ms, ").concat(v));else{console.log("WebGL (".concat(r.name,") - frame time ").concat(g,"ms")),console.log("Totals:"),console.log("  ".concat(v)),console.log("Texture Atlases Used:");var x=y.atlasInfo,b=Fs(x),T;try{for(b.s();!(T=b.n()).done;){var w=T.value;console.log("  ".concat(w.type,": ").concat(w.keyCount," keys, ").concat(w.atlasCount," atlases"))}}catch(C){b.e(C)}finally{b.f()}console.log("")}}e.data.gc&&(console.log("Garbage Collect!"),e.data.gc=!1,n.gc())}function Not(e,t){for(var r=atob(e),i=new ArrayBuffer(r.length),n=new Uint8Array(i),a=0;a<r.length;a++)n[a]=r.charCodeAt(a);return new Blob([i],{type:t})}function W0e(e){var t=e.indexOf(",");return e.substr(t+1)}function _ge(e,t,r){var i=o(function(){return t.toDataURL(r,e.quality)},"getB64Uri");switch(e.output){case"blob-promise":return new v1(function(n,a){try{t.toBlob(function(s){s!=null?n(s):a(new Error("`canvas.toBlob()` sent a null value in its callback"))},r,e.quality)}catch(s){a(s)}});case"blob":return Not(W0e(i()),r);case"base64":return W0e(i());case"base64uri":default:return i()}}function Rge(e){var t=this,r=t.cy.window(),i=r.document;e.webgl&&(Fr.CANVAS_LAYERS=t.CANVAS_LAYERS=4,console.log("webgl rendering enabled")),t.data={canvases:new Array(Fr.CANVAS_LAYERS),contexts:new Array(Fr.CANVAS_LAYERS),canvasNeedsRedraw:new Array(Fr.CANVAS_LAYERS),bufferCanvases:new Array(Fr.BUFFER_COUNT),bufferContexts:new Array(Fr.CANVAS_LAYERS)};var n="-webkit-tap-highlight-color",a="rgba(0,0,0,0)";t.data.canvasContainer=i.createElement("div");var s=t.data.canvasContainer.style;t.data.canvasContainer.style[n]=a,s.position="relative",s.zIndex="0",s.overflow="hidden";var l=e.cy.container();l.appendChild(t.data.canvasContainer),l.style[n]=a;var u={"-webkit-user-select":"none","-moz-user-select":"-moz-none","user-select":"none","-webkit-tap-highlight-color":"rgba(0,0,0,0)","outline-style":"none"};_tt()&&(u["-ms-touch-action"]="none",u["touch-action"]="none");for(var h=0;h<Fr.CANVAS_LAYERS;h++){var d=t.data.canvases[h]=i.createElement("canvas"),f=Fr.CANVAS_TYPES[h];t.data.contexts[h]=d.getContext(f),t.data.contexts[h]||Yi("Could not create canvas of type "+f),Object.keys(u).forEach(function(J){d.style[J]=u[J]}),d.style.position="absolute",d.setAttribute("data-id","layer"+h),d.style.zIndex=String(Fr.CANVAS_LAYERS-h),t.data.canvasContainer.appendChild(d),t.data.canvasNeedsRedraw[h]=!1}t.data.topCanvas=t.data.canvases[0],t.data.canvases[Fr.NODE].setAttribute("data-id","layer"+Fr.NODE+"-node"),t.data.canvases[Fr.SELECT_BOX].setAttribute("data-id","layer"+Fr.SELECT_BOX+"-selectbox"),t.data.canvases[Fr.DRAG].setAttribute("data-id","layer"+Fr.DRAG+"-drag"),t.data.canvases[Fr.WEBGL]&&t.data.canvases[Fr.WEBGL].setAttribute("data-id","layer"+Fr.WEBGL+"-webgl");for(var h=0;h<Fr.BUFFER_COUNT;h++)t.data.bufferCanvases[h]=i.createElement("canvas"),t.data.bufferContexts[h]=t.data.bufferCanvases[h].getContext("2d"),t.data.bufferCanvases[h].style.position="absolute",t.data.bufferCanvases[h].setAttribute("data-id","buffer"+h),t.data.bufferCanvases[h].style.zIndex=String(-h-1),t.data.bufferCanvases[h].style.visibility="hidden";t.pathsEnabled=!0;var p=is(),m=o(function(te){return{x:(te.x1+te.x2)/2,y:(te.y1+te.y2)/2}},"getBoxCenter"),g=o(function(te){return{x:-te.w/2,y:-te.h/2}},"getCenterOffset"),y=o(function(te){var re=te[0]._private,ee=re.oldBackgroundTimestamp===re.backgroundTimestamp;return!ee},"backgroundTimestampHasChanged"),v=o(function(te){return te[0]._private.nodeKey},"getStyleKey"),x=o(function(te){return te[0]._private.labelStyleKey},"getLabelKey"),b=o(function(te){return te[0]._private.sourceLabelStyleKey},"getSourceLabelKey"),T=o(function(te){return te[0]._private.targetLabelStyleKey},"getTargetLabelKey"),w=o(function(te,re,ee,Te,ue){return t.drawElement(te,re,ee,!1,!1,ue)},"drawElement"),C=o(function(te,re,ee,Te,ue){return t.drawElementText(te,re,ee,Te,"main",ue)},"drawLabel"),k=o(function(te,re,ee,Te,ue){return t.drawElementText(te,re,ee,Te,"source",ue)},"drawSourceLabel"),E=o(function(te,re,ee,Te,ue){return t.drawElementText(te,re,ee,Te,"target",ue)},"drawTargetLabel"),A=o(function(te){return te.boundingBox(),te[0]._private.bodyBounds},"getElementBox"),N=o(function(te){return te.boundingBox(),te[0]._private.labelBounds.main||p},"getLabelBox"),P=o(function(te){return te.boundingBox(),te[0]._private.labelBounds.source||p},"getSourceLabelBox"),I=o(function(te){return te.boundingBox(),te[0]._private.labelBounds.target||p},"getTargetLabelBox"),D=o(function(te,re){return re},"isLabelVisibleAtScale"),_=o(function(te){return m(A(te))},"getElementRotationPoint"),R=o(function(te,re,ee){var Te=te?te+"-":"";return{x:re.x+ee.pstyle(Te+"text-margin-x").pfValue,y:re.y+ee.pstyle(Te+"text-margin-y").pfValue}},"addTextMargin"),M=o(function(te,re,ee){var Te=te[0]._private.rscratch;return{x:Te[re],y:Te[ee]}},"getRsPt"),L=o(function(te){return R("",M(te,"labelX","labelY"),te)},"getLabelRotationPoint"),B=o(function(te){return R("source",M(te,"sourceLabelX","sourceLabelY"),te)},"getSourceLabelRotationPoint"),O=o(function(te){return R("target",M(te,"targetLabelX","targetLabelY"),te)},"getTargetLabelRotationPoint"),$=o(function(te){return g(A(te))},"getElementRotationOffset"),G=o(function(te){return g(P(te))},"getSourceLabelRotationOffset"),F=o(function(te){return g(I(te))},"getTargetLabelRotationOffset"),V=o(function(te){var re=N(te),ee=g(N(te));if(te.isNode()){switch(te.pstyle("text-halign").value){case"left":ee.x=-re.w-(re.leftPad||0);break;case"right":ee.x=-(re.rightPad||0);break}switch(te.pstyle("text-valign").value){case"top":ee.y=-re.h-(re.topPad||0);break;case"bottom":ee.y=-(re.botPad||0);break}}return ee},"getLabelRotationOffset"),H=t.data.eleTxrCache=new Vb(t,{getKey:v,doesEleInvalidateKey:y,drawElement:w,getBoundingBox:A,getRotationPoint:_,getRotationOffset:$,allowEdgeTxrCaching:!1,allowParentTxrCaching:!1}),j=t.data.lblTxrCache=new Vb(t,{getKey:x,drawElement:C,getBoundingBox:N,getRotationPoint:L,getRotationOffset:V,isVisible:D}),U=t.data.slbTxrCache=new Vb(t,{getKey:b,drawElement:k,getBoundingBox:P,getRotationPoint:B,getRotationOffset:G,isVisible:D}),Q=t.data.tlbTxrCache=new Vb(t,{getKey:T,drawElement:E,getBoundingBox:I,getRotationPoint:O,getRotationOffset:F,isVisible:D}),Y=t.data.lyrTxrCache=new yge(t);t.onUpdateEleCalcs(o(function(te,re){H.invalidateElements(re),j.invalidateElements(re),U.invalidateElements(re),Q.invalidateElements(re),Y.invalidateElements(re);for(var ee=0;ee<re.length;ee++){var Te=re[ee]._private;Te.oldBackgroundTimestamp=Te.backgroundTimestamp}},"invalidateTextureCaches"));var ae=o(function(te){for(var re=0;re<te.length;re++)Y.enqueueElementRefinement(te[re].ele)},"refineInLayers");H.onDequeue(ae),j.onDequeue(ae),U.onDequeue(ae),Q.onDequeue(ae),e.webgl&&t.initWebgl(e,{getStyleKey:v,getLabelKey:x,getSourceLabelKey:b,getTargetLabelKey:T,drawElement:w,drawLabel:C,drawSourceLabel:k,drawTargetLabel:E,getElementBox:A,getLabelBox:N,getSourceLabelBox:P,getTargetLabelBox:I,getElementRotationPoint:_,getElementRotationOffset:$,getLabelRotationPoint:L,getSourceLabelRotationPoint:B,getTargetLabelRotationPoint:O,getLabelRotationOffset:V,getSourceLabelRotationOffset:G,getTargetLabelRotationOffset:F})}function Nge(e,t,r){var i=r,n=o(function(A){di("Can not register `"+t+"` for `"+e+"` since `"+A+"` already exists in the prototype and can not be overridden")},"overrideErr");if(e==="core"){if(e2.prototype[t])return n(t);e2.prototype[t]=r}else if(e==="collection"){if(ya.prototype[t])return n(t);ya.prototype[t]=r}else if(e==="layout"){for(var a=o(function(A){this.options=A,r.call(this,A),Xr(this._private)||(this._private={}),this._private.cy=A.cy,this._private.listeners=[],this.createEmitter()},"Layout"),s=a.prototype=Object.create(r.prototype),l=[],u=0;u<l.length;u++){var h=l[u];s[h]=s[h]||function(){return this}}s.start&&!s.run?s.run=function(){return this.start(),this}:!s.start&&s.run&&(s.start=function(){return this.run(),this});var d=r.prototype.stop;s.stop=function(){var E=this.options;if(E&&E.animate){var A=this.animations;if(A)for(var N=0;N<A.length;N++)A[N].stop()}return d?d.call(this):this.emit("layoutstop"),this},s.destroy||(s.destroy=function(){return this}),s.cy=function(){return this._private.cy};var f=o(function(A){return A._private.cy},"getCy"),p={addEventFields:o(function(A,N){N.layout=A,N.cy=f(A),N.target=A},"addEventFields"),bubble:o(function(){return!0},"bubble"),parent:o(function(A){return f(A)},"parent")};hr(s,{createEmitter:o(function(){return this._private.emitter=new iE(p,this),this},"createEmitter"),emitter:o(function(){return this._private.emitter},"emitter"),on:o(function(A,N){return this.emitter().on(A,N),this},"on"),one:o(function(A,N){return this.emitter().one(A,N),this},"one"),once:o(function(A,N){return this.emitter().one(A,N),this},"once"),removeListener:o(function(A,N){return this.emitter().removeListener(A,N),this},"removeListener"),removeAllListeners:o(function(){return this.emitter().removeAllListeners(),this},"removeAllListeners"),emit:o(function(A,N){return this.emitter().emit(A,N),this},"emit")}),hi.eventAliasesOn(s),i=a}else if(e==="renderer"&&t!=="null"&&t!=="base"){var m=Ige("renderer","base"),g=m.prototype,y=r,v=r.prototype,x=o(function(){m.apply(this,arguments),y.apply(this,arguments)},"Renderer"),b=x.prototype;for(var T in g){var w=g[T],C=v[T]!=null;if(C)return n(T);b[T]=w}for(var k in v)b[k]=v[k];g.clientFunctions.forEach(function(E){b[E]=b[E]||function(){Yi("Renderer does not implement `renderer."+E+"()` on its prototype")}}),i=x}else if(e==="__proto__"||e==="constructor"||e==="prototype")return Yi(e+" is an illegal type to be registered, possibly lead to prototype pollutions");return Q0e({map:Lge,keys:[e,t],value:i})}function Ige(e,t){return J0e({map:Lge,keys:[e,t]})}function Fot(e,t,r,i,n){return Q0e({map:Mge,keys:[e,t,r,i],value:n})}function $ot(e,t,r,i){return J0e({map:Mge,keys:[e,t,r,i]})}var Gn,gfe,xtt,H0e,btt,Ttt,r2,sr,Ji,Si,Xr,Ctt,Ot,ktt,I3,uo,i2,Y0e,hP,j0e,wtt,qd,Stt,Ett,Att,_tt,p1,dP,Y3,X0e,yfe,$d,Vn,Dtt,Rtt,Ltt,Mtt,Ntt,Itt,K0e,Ott,hr,Ptt,Btt,Ftt,$tt,Z0e,ztt,Q0e,J0e,c3,p9,vfe,m9,xfe,g9,bfe,y9,Tfe,v9,Cfe,x9,kfe,b9,wfe,T9,Sfe,C9,Efe,k9,Afe,w9,_fe,S9,Dfe,E9,Rfe,A9,Lfe,Ktt,o2,_9,tme,Ztt,O3,Zu,Kp,rme,s1,ime,Hb,Yb,Qtt,Pd,u3,Mfe,Jp,nme,Jtt,trt,Nfe,irt,nrt,pP,ame,P3,Ife,mP,Yi,sme,di,art,Bc,srt,ome,ort,lme,va,Ud,gP,lrt,Ps,Xu,crt,Ku,urt,hrt,y1,X3,Ofe,jb,C3,drt,Pfe,D9,Bfe,mrt,l2,grt,yrt,vrt,xrt,brt,Trt,Crt,krt,wrt,Srt,Ert,R9,Art,L9,_rt,K3,cme,o1,Drt,Rrt,Lrt,Mrt,Nrt,h3,yP,vP,e0,jp,Irt,na,u1,Ort,Xb,is,Prt,Brt,Frt,ume,k3,w3,Ffe,xP,zd,$fe,hme,$rt,dme,Vrt,Wrt,qrt,Urt,Hrt,Yrt,Bs,Qu,jrt,B3,F3,Xrt,Qp,zb,M9,Gd,Krt,Kb,Zrt,d3,rs,fme,UO,Hd,pme,bP,Qrt,HO,Jrt,eit,zfe,h1,Gfe,d1,tit,YO,rit,iit,nit,ait,mme,sit,oit,lit,cit,uit,hit,dit,Vfe,fit,pit,gme,Wfe,qfe,mit,git,Nb,m1,yit,TP,$3,I9,yme,vme,vit,xit,bit,Ufe,Hfe,Tit,Cit,kit,wit,Sit,Yfe,Eit,Ait,_it,Dit,jfe,l1,jO,XO,Xfe,Rit,Lit,Mit,Nit,Iit,Oit,Kfe,Pit,Zfe,Bit,Fit,$it,f3,zit,p3,Git,xme,bme,Tme,Cme,$l,Qfe,kme,Jfe,epe,wme,v1,KO,t0,Vit,O9,tpe,P9,rpe,B9,ipe,F9,npe,$9,ape,z9,spe,G9,ope,V9,lpe,W9,cpe,q9,upe,U9,hpe,H9,dpe,Y9,fpe,j9,ppe,X9,mpe,K9,gpe,Z9,ype,Q9,vpe,J9,xpe,eO,bpe,tO,Tpe,rO,Cpe,iO,kpe,nO,wpe,aO,Spe,sO,Epe,oO,Ape,lO,_pe,cO,Dpe,uO,Rpe,hO,Lpe,dO,Mpe,fO,Npe,pO,Ipe,mO,Ope,gO,Ppe,yO,Bpe,vO,Fpe,xO,$pe,bO,zpe,TO,Gpe,CO,Vpe,kO,Wpe,Tnt,Cnt,wO,qpe,SO,Upe,EO,Hpe,AO,Ype,_O,jpe,DO,Xpe,Dnt,Rnt,RO,Kpe,LO,Zpe,Nnt,Int,Ont,Pnt,hi,Bnt,S3,jr,xi,Yt,ZO,Fnt,$nt,znt,Jg,Bd,QO,Gnt,Vnt,Wnt,qnt,Unt,Rme,Hnt,Ynt,wP,jnt,un,zi,Xnt,Knt,Znt,Yd,jd,Vd,Xo,g1,Zb,Nme,Jnt,rE,Fl,Ime,Ome,Qpe,eat,f1,Qd,jo,Bl,Fd,Ib,m3,NO,Jpe,Pme,tat,rat,Bme,Fme,e0e,Qb,t0e,r0e,iat,Gb,c2,$me,nat,aat,sat,oat,lat,cat,uat,hat,dat,i0e,fat,pat,mat,zme,Gme,gat,Vme,n0e,yat,Xd,Wme,a0e,vat,xat,y3,qme,Ume,ei,bat,Hme,z3,Tat,Cat,E3,ga,x1,kat,wat,Sat,Eat,Wd,Oa,o0e,l0e,c0e,ya,Mi,Aat,Dat,Li,A3,Mat,Nat,v3,jme,JO,_3,Iat,Oat,eP,D3,sa,Wb,Pat,u2,AP,Fc,sE,_P,_n,oE,aa,Pa,Bat,Fat,r0,Jb,e2,G3,$at,zat,r1,g0e,Gat,Vat,OO,Wat,qat,Uat,Qme,Hat,Yat,Jme,jat,Xat,Kat,y0e,Zat,Qat,V3,Jat,est,tst,rst,ist,ege,v0e,nst,ast,sst,ost,lst,x0e,b0e,RP,n0,W3,tP,rP,Pc,Yo,T0e,C0e,Zp,R3,ju,Up,Xp,Ic,i1,x3,age,sge,iP,nP,k0e,w0e,cst,ust,t2,hst,Ba,h2,MP,$c,cge,uge,fst,hge,S0e,E0e,cE,uE,dge,fge,T1,Ju,d2,A0e,pst,pge,C1,PO,mge,mst,_0e,b3,L3,aP,gge,gst,yst,vst,xst,bst,Tst,Cst,kst,wst,Sst,Est,Ast,_st,c1,Dst,Vb,qn,Rst,qb,q3,Lst,Mst,Nst,Ist,Ost,Pst,Bst,Fst,D0e,$st,R0e,zst,yge,xa,L0e,Gst,vge,M0e,zc,Hst,Yst,jst,Xst,Kst,BO,eh,xge,NP,a0,Jd,bge,ns,Qst,Bb,P0e,fot,pot,got,yot,vot,xot,bot,Tot,Ub,U3,$O,$0e,z0e,zO,a1,T3,Fb,$b,Cot,kge,GO,VO,ef,G0e,V0e,oP,lP,Age,Yp,f2,Dge,Iot,Fr,Oot,Pot,Bot,Lge,Mge,cP,H3,i0,zot,Ko,OP=z(()=>{"use strict";o(qO,"_arrayLikeToArray");o(htt,"_arrayWithHoles");o(dtt,"_arrayWithoutHoles");o(Kd,"_classCallCheck");o(ftt,"_defineProperties");o(Zd,"_createClass");o(Fs,"_createForOfIteratorHelper");o(q0e,"_defineProperty$1");o(ptt,"_iterableToArray");o(mtt,"_iterableToArrayLimit");o(gtt,"_nonIterableRest");o(ytt,"_nonIterableSpread");o(Dn,"_slicedToArray");o(N3,"_toConsumableArray");o(vtt,"_toPrimitive");o(U0e,"_toPropertyKey");o(Wn,"_typeof");o(uP,"_unsupportedIterableToArray");Gn=typeof window>"u"?null:window,gfe=Gn?Gn.navigator:null;Gn&&Gn.document;xtt=Wn(""),H0e=Wn({}),btt=Wn(function(){}),Ttt=typeof HTMLElement>"u"?"undefined":Wn(HTMLElement),r2=o(function(t){return t&&t.instanceString&&Ji(t.instanceString)?t.instanceString():null},"instanceStr"),sr=o(function(t){return t!=null&&Wn(t)==xtt},"string"),Ji=o(function(t){return t!=null&&Wn(t)===btt},"fn"),Si=o(function(t){return!uo(t)&&(Array.isArray?Array.isArray(t):t!=null&&t instanceof Array)},"array"),Xr=o(function(t){return t!=null&&Wn(t)===H0e&&!Si(t)&&t.constructor===Object},"plainObject"),Ctt=o(function(t){return t!=null&&Wn(t)===H0e},"object"),Ot=o(function(t){return t!=null&&Wn(t)===Wn(1)&&!isNaN(t)},"number"),ktt=o(function(t){return Ot(t)&&Math.floor(t)===t},"integer"),I3=o(function(t){if(Ttt!=="undefined")return t!=null&&t instanceof HTMLElement},"htmlElement"),uo=o(function(t){return i2(t)||Y0e(t)},"elementOrCollection"),i2=o(function(t){return r2(t)==="collection"&&t._private.single},"element"),Y0e=o(function(t){return r2(t)==="collection"&&!t._private.single},"collection"),hP=o(function(t){return r2(t)==="core"},"core"),j0e=o(function(t){return r2(t)==="stylesheet"},"stylesheet"),wtt=o(function(t){return r2(t)==="event"},"event"),qd=o(function(t){return t==null?!0:!!(t===""||t.match(/^\s+$/))},"emptyString"),Stt=o(function(t){return typeof HTMLElement>"u"?!1:t instanceof HTMLElement},"domElement"),Ett=o(function(t){return Xr(t)&&Ot(t.x1)&&Ot(t.x2)&&Ot(t.y1)&&Ot(t.y2)},"boundingBox"),Att=o(function(t){return Ctt(t)&&Ji(t.then)},"promise"),_tt=o(function(){return gfe&&gfe.userAgent.match(/msie|trident|edge/i)},"ms"),p1=o(function(t,r){r||(r=o(function(){if(arguments.length===1)return arguments[0];if(arguments.length===0)return"undefined";for(var a=[],s=0;s<arguments.length;s++)a.push(arguments[s]);return a.join("$")},"keyFn"));var i=o(function(){var a=this,s=arguments,l,u=r.apply(a,s),h=i.cache;return(l=h[u])||(l=h[u]=t.apply(a,s)),l},"memoizedFn");return i.cache={},i},"memoize"),dP=p1(function(e){return e.replace(/([A-Z])/g,function(t){return"-"+t.toLowerCase()})}),Y3=p1(function(e){return e.replace(/(-\w)/g,function(t){return t[1].toUpperCase()})}),X0e=p1(function(e,t){return e+t[0].toUpperCase()+t.substring(1)},function(e,t){return e+"$"+t}),yfe=o(function(t){return qd(t)?t:t.charAt(0).toUpperCase()+t.substring(1)},"capitalize"),$d=o(function(t,r){return t.slice(-1*r.length)===r},"endsWith"),Vn="(?:[-+]?(?:(?:\\d+|\\d*\\.\\d+)(?:[Ee][+-]?\\d+)?))",Dtt="rgb[a]?\\(("+Vn+"[%]?)\\s*,\\s*("+Vn+"[%]?)\\s*,\\s*("+Vn+"[%]?)(?:\\s*,\\s*("+Vn+"))?\\)",Rtt="rgb[a]?\\((?:"+Vn+"[%]?)\\s*,\\s*(?:"+Vn+"[%]?)\\s*,\\s*(?:"+Vn+"[%]?)(?:\\s*,\\s*(?:"+Vn+"))?\\)",Ltt="hsl[a]?\\(("+Vn+")\\s*,\\s*("+Vn+"[%])\\s*,\\s*("+Vn+"[%])(?:\\s*,\\s*("+Vn+"))?\\)",Mtt="hsl[a]?\\((?:"+Vn+")\\s*,\\s*(?:"+Vn+"[%])\\s*,\\s*(?:"+Vn+"[%])(?:\\s*,\\s*(?:"+Vn+"))?\\)",Ntt="\\#[0-9a-fA-F]{3}",Itt="\\#[0-9a-fA-F]{6}",K0e=o(function(t,r){return t<r?-1:t>r?1:0},"ascending"),Ott=o(function(t,r){return-1*K0e(t,r)},"descending"),hr=Object.assign!=null?Object.assign.bind(Object):function(e){for(var t=arguments,r=1;r<t.length;r++){var i=t[r];if(i!=null)for(var n=Object.keys(i),a=0;a<n.length;a++){var s=n[a];e[s]=i[s]}}return e},Ptt=o(function(t){if(!(!(t.length===4||t.length===7)||t[0]!=="#")){var r=t.length===4,i,n,a,s=16;return r?(i=parseInt(t[1]+t[1],s),n=parseInt(t[2]+t[2],s),a=parseInt(t[3]+t[3],s)):(i=parseInt(t[1]+t[2],s),n=parseInt(t[3]+t[4],s),a=parseInt(t[5]+t[6],s)),[i,n,a]}},"hex2tuple"),Btt=o(function(t){var r,i,n,a,s,l,u,h;function d(g,y,v){return v<0&&(v+=1),v>1&&(v-=1),v<1/6?g+(y-g)*6*v:v<1/2?y:v<2/3?g+(y-g)*(2/3-v)*6:g}o(d,"hue2rgb");var f=new RegExp("^"+Ltt+"$").exec(t);if(f){if(i=parseInt(f[1]),i<0?i=(360- -1*i%360)%360:i>360&&(i=i%360),i/=360,n=parseFloat(f[2]),n<0||n>100||(n=n/100,a=parseFloat(f[3]),a<0||a>100)||(a=a/100,s=f[4],s!==void 0&&(s=parseFloat(s),s<0||s>1)))return;if(n===0)l=u=h=Math.round(a*255);else{var p=a<.5?a*(1+n):a+n-a*n,m=2*a-p;l=Math.round(255*d(m,p,i+1/3)),u=Math.round(255*d(m,p,i)),h=Math.round(255*d(m,p,i-1/3))}r=[l,u,h,s]}return r},"hsl2tuple"),Ftt=o(function(t){var r,i=new RegExp("^"+Dtt+"$").exec(t);if(i){r=[];for(var n=[],a=1;a<=3;a++){var s=i[a];if(s[s.length-1]==="%"&&(n[a]=!0),s=parseFloat(s),n[a]&&(s=s/100*255),s<0||s>255)return;r.push(Math.floor(s))}var l=n[1]||n[2]||n[3],u=n[1]&&n[2]&&n[3];if(l&&!u)return;var h=i[4];if(h!==void 0){if(h=parseFloat(h),h<0||h>1)return;r.push(h)}}return r},"rgb2tuple"),$tt=o(function(t){return ztt[t.toLowerCase()]},"colorname2tuple"),Z0e=o(function(t){return(Si(t)?t:null)||$tt(t)||Ptt(t)||Ftt(t)||Btt(t)},"color2tuple"),ztt={transparent:[0,0,0,0],aliceblue:[240,248,255],antiquewhite:[250,235,215],aqua:[0,255,255],aquamarine:[127,255,212],azure:[240,255,255],beige:[245,245,220],bisque:[255,228,196],black:[0,0,0],blanchedalmond:[255,235,205],blue:[0,0,255],blueviolet:[138,43,226],brown:[165,42,42],burlywood:[222,184,135],cadetblue:[95,158,160],chartreuse:[127,255,0],chocolate:[210,105,30],coral:[255,127,80],cornflowerblue:[100,149,237],cornsilk:[255,248,220],crimson:[220,20,60],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgoldenrod:[184,134,11],darkgray:[169,169,169],darkgreen:[0,100,0],darkgrey:[169,169,169],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkseagreen:[143,188,143],darkslateblue:[72,61,139],darkslategray:[47,79,79],darkslategrey:[47,79,79],darkturquoise:[0,206,209],darkviolet:[148,0,211],deeppink:[255,20,147],deepskyblue:[0,191,255],dimgray:[105,105,105],dimgrey:[105,105,105],dodgerblue:[30,144,255],firebrick:[178,34,34],floralwhite:[255,250,240],forestgreen:[34,139,34],fuchsia:[255,0,255],gainsboro:[220,220,220],ghostwhite:[248,248,255],gold:[255,215,0],goldenrod:[218,165,32],gray:[128,128,128],grey:[128,128,128],green:[0,128,0],greenyellow:[173,255,47],honeydew:[240,255,240],hotpink:[255,105,180],indianred:[205,92,92],indigo:[75,0,130],ivory:[255,255,240],khaki:[240,230,140],lavender:[230,230,250],lavenderblush:[255,240,245],lawngreen:[124,252,0],lemonchiffon:[255,250,205],lightblue:[173,216,230],lightcoral:[240,128,128],lightcyan:[224,255,255],lightgoldenrodyellow:[250,250,210],lightgray:[211,211,211],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightsalmon:[255,160,122],lightseagreen:[32,178,170],lightskyblue:[135,206,250],lightslategray:[119,136,153],lightslategrey:[119,136,153],lightsteelblue:[176,196,222],lightyellow:[255,255,224],lime:[0,255,0],limegreen:[50,205,50],linen:[250,240,230],magenta:[255,0,255],maroon:[128,0,0],mediumaquamarine:[102,205,170],mediumblue:[0,0,205],mediumorchid:[186,85,211],mediumpurple:[147,112,219],mediumseagreen:[60,179,113],mediumslateblue:[123,104,238],mediumspringgreen:[0,250,154],mediumturquoise:[72,209,204],mediumvioletred:[199,21,133],midnightblue:[25,25,112],mintcream:[245,255,250],mistyrose:[255,228,225],moccasin:[255,228,181],navajowhite:[255,222,173],navy:[0,0,128],oldlace:[253,245,230],olive:[128,128,0],olivedrab:[107,142,35],orange:[255,165,0],orangered:[255,69,0],orchid:[218,112,214],palegoldenrod:[238,232,170],palegreen:[152,251,152],paleturquoise:[175,238,238],palevioletred:[219,112,147],papayawhip:[255,239,213],peachpuff:[255,218,185],peru:[205,133,63],pink:[255,192,203],plum:[221,160,221],powderblue:[176,224,230],purple:[128,0,128],red:[255,0,0],rosybrown:[188,143,143],royalblue:[65,105,225],saddlebrown:[139,69,19],salmon:[250,128,114],sandybrown:[244,164,96],seagreen:[46,139,87],seashell:[255,245,238],sienna:[160,82,45],silver:[192,192,192],skyblue:[135,206,235],slateblue:[106,90,205],slategray:[112,128,144],slategrey:[112,128,144],snow:[255,250,250],springgreen:[0,255,127],steelblue:[70,130,180],tan:[210,180,140],teal:[0,128,128],thistle:[216,191,216],tomato:[255,99,71],turquoise:[64,224,208],violet:[238,130,238],wheat:[245,222,179],white:[255,255,255],whitesmoke:[245,245,245],yellow:[255,255,0],yellowgreen:[154,205,50]},Q0e=o(function(t){for(var r=t.map,i=t.keys,n=i.length,a=0;a<n;a++){var s=i[a];if(Xr(s))throw Error("Tried to set map with object key");a<i.length-1?(r[s]==null&&(r[s]={}),r=r[s]):r[s]=t.value}},"setMap"),J0e=o(function(t){for(var r=t.map,i=t.keys,n=i.length,a=0;a<n;a++){var s=i[a];if(Xr(s))throw Error("Tried to get map with object key");if(r=r[s],r==null)return r}return r},"getMap"),c3=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{};o(n2,"getDefaultExportFromCjs");o(a2,"requireIsObject");o(Gtt,"require_freeGlobal");o(j3,"require_root");o(Vtt,"requireNow");o(Wtt,"require_trimmedEndIndex");o(qtt,"require_baseTrim");o(fP,"require_Symbol");o(Utt,"require_getRawTag");o(Htt,"require_objectToString");o(eme,"require_baseGetTag");o(Ytt,"requireIsObjectLike");o(s2,"requireIsSymbol");o(jtt,"requireToNumber");o(Xtt,"requireDebounce");Ktt=Xtt(),o2=n2(Ktt),_9=Gn?Gn.performance:null,tme=_9&&_9.now?function(){return _9.now()}:function(){return Date.now()},Ztt=(function(){if(Gn){if(Gn.requestAnimationFrame)return function(e){Gn.requestAnimationFrame(e)};if(Gn.mozRequestAnimationFrame)return function(e){Gn.mozRequestAnimationFrame(e)};if(Gn.webkitRequestAnimationFrame)return function(e){Gn.webkitRequestAnimationFrame(e)};if(Gn.msRequestAnimationFrame)return function(e){Gn.msRequestAnimationFrame(e)}}return function(e){e&&setTimeout(function(){e(tme())},1e3/60)}})(),O3=o(function(t){return Ztt(t)},"requestAnimationFrame"),Zu=tme,Kp=9261,rme=65599,s1=5381,ime=o(function(t){for(var r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:Kp,i=r,n;n=t.next(),!n.done;)i=i*rme+n.value|0;return i},"hashIterableInts"),Hb=o(function(t){var r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:Kp;return r*rme+t|0},"hashInt"),Yb=o(function(t){var r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:s1;return(r<<5)+r+t|0},"hashIntAlt"),Qtt=o(function(t,r){return t*2097152+r},"combineHashes"),Pd=o(function(t){return t[0]*2097152+t[1]},"combineHashesArray"),u3=o(function(t,r){return[Hb(t[0],r[0]),Yb(t[1],r[1])]},"hashArrays"),Mfe=o(function(t,r){var i={value:0,done:!1},n=0,a=t.length,s={next:o(function(){return n<a?i.value=t[n++]:i.done=!0,i},"next")};return ime(s,r)},"hashIntsArray"),Jp=o(function(t,r){var i={value:0,done:!1},n=0,a=t.length,s={next:o(function(){return n<a?i.value=t.charCodeAt(n++):i.done=!0,i},"next")};return ime(s,r)},"hashString"),nme=o(function(){return Jtt(arguments)},"hashStrings"),Jtt=o(function(t){for(var r,i=0;i<t.length;i++){var n=t[i];i===0?r=Jp(n):r=Jp(n,r)}return r},"hashStringsArray");o(ert,"rotatePoint");trt=o(function(t,r,i,n,a,s){return{x:(t-i)*a+i,y:(r-n)*s+n}},"movePointByBoxAspect");o(rrt,"rotatePosAndSkewByBox");Nfe=!0,irt=console.warn!=null,nrt=console.trace!=null,pP=Number.MAX_SAFE_INTEGER||9007199254740991,ame=o(function(){return!0},"trueify"),P3=o(function(){return!1},"falsify"),Ife=o(function(){return 0},"zeroify"),mP=o(function(){},"noop"),Yi=o(function(t){throw new Error(t)},"error"),sme=o(function(t){if(t!==void 0)Nfe=!!t;else return Nfe},"warnings"),di=o(function(t){sme()&&(irt?console.warn(t):(console.log(t),nrt&&console.trace()))},"warn"),art=o(function(t){return hr({},t)},"clone"),Bc=o(function(t){return t==null?t:Si(t)?t.slice():Xr(t)?art(t):t},"copy"),srt=o(function(t){return t.slice()},"copyArray"),ome=o(function(t,r){for(r=t="";t++<36;r+=t*51&52?(t^15?8^Math.random()*(t^20?16:4):4).toString(16):"-");return r},"uuid"),ort={},lme=o(function(){return ort},"staticEmptyObject"),va=o(function(t){var r=Object.keys(t);return function(i){for(var n={},a=0;a<r.length;a++){var s=r[a],l=i?.[s];n[s]=l===void 0?t[s]:l}return n}},"defaults"),Ud=o(function(t,r,i){for(var n=t.length-1;n>=0;n--)t[n]===r&&t.splice(n,1)},"removeFromArray"),gP=o(function(t){t.splice(0,t.length)},"clearArray"),lrt=o(function(t,r){for(var i=0;i<r.length;i++){var n=r[i];t.push(n)}},"push"),Ps=o(function(t,r,i){return i&&(r=X0e(i,r)),t[r]},"getPrefixedProperty"),Xu=o(function(t,r,i,n){i&&(r=X0e(i,r)),t[r]=n},"setPrefixedProperty"),crt=(function(){function e(){Kd(this,e),this._obj={}}return o(e,"ObjectMap"),Zd(e,[{key:"set",value:o(function(r,i){return this._obj[r]=i,this},"set")},{key:"delete",value:o(function(r){return this._obj[r]=void 0,this},"_delete")},{key:"clear",value:o(function(){this._obj={}},"clear")},{key:"has",value:o(function(r){return this._obj[r]!==void 0},"has")},{key:"get",value:o(function(r){return this._obj[r]},"get")}])})(),Ku=typeof Map<"u"?Map:crt,urt="undefined",hrt=(function(){function e(t){if(Kd(this,e),this._obj=Object.create(null),this.size=0,t!=null){var r;t.instanceString!=null&&t.instanceString()===this.instanceString()?r=t.toArray():r=t;for(var i=0;i<r.length;i++)this.add(r[i])}}return o(e,"ObjectSet"),Zd(e,[{key:"instanceString",value:o(function(){return"set"},"instanceString")},{key:"add",value:o(function(r){var i=this._obj;i[r]!==1&&(i[r]=1,this.size++)},"add")},{key:"delete",value:o(function(r){var i=this._obj;i[r]===1&&(i[r]=0,this.size--)},"_delete")},{key:"clear",value:o(function(){this._obj=Object.create(null)},"clear")},{key:"has",value:o(function(r){return this._obj[r]===1},"has")},{key:"toArray",value:o(function(){var r=this;return Object.keys(this._obj).filter(function(i){return r.has(i)})},"toArray")},{key:"forEach",value:o(function(r,i){return this.toArray().forEach(r,i)},"forEach")}])})(),y1=(typeof Set>"u"?"undefined":Wn(Set))!==urt?Set:hrt,X3=o(function(t,r){var i=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!0;if(t===void 0||r===void 0||!hP(t)){Yi("An element must have a core reference and parameters set");return}var n=r.group;if(n==null&&(r.data&&r.data.source!=null&&r.data.target!=null?n="edges":n="nodes"),n!=="nodes"&&n!=="edges"){Yi("An element must be of type `nodes` or `edges`; you specified `"+n+"`");return}this.length=1,this[0]=this;var a=this._private={cy:t,single:!0,data:r.data||{},position:r.position||{x:0,y:0},autoWidth:void 0,autoHeight:void 0,autoPadding:void 0,compoundBoundsClean:!1,listeners:[],group:n,style:{},rstyle:{},styleCxts:[],styleKeys:{},removed:!0,selected:!!r.selected,selectable:r.selectable===void 0?!0:!!r.selectable,locked:!!r.locked,grabbed:!1,grabbable:r.grabbable===void 0?!0:!!r.grabbable,pannable:r.pannable===void 0?n==="edges":!!r.pannable,active:!1,classes:new y1,animation:{current:[],queue:[]},rscratch:{},scratch:r.scratch||{},edges:[],children:[],parent:r.parent&&r.parent.isNode()?r.parent:null,traversalCache:{},backgrounding:!1,bbCache:null,bbCacheShift:{x:0,y:0},bodyBounds:null,overlayBounds:null,labelBounds:{all:null,source:null,target:null,main:null},arrowBounds:{source:null,target:null,"mid-source":null,"mid-target":null}};if(a.position.x==null&&(a.position.x=0),a.position.y==null&&(a.position.y=0),r.renderedPosition){var s=r.renderedPosition,l=t.pan(),u=t.zoom();a.position={x:(s.x-l.x)/u,y:(s.y-l.y)/u}}var h=[];Si(r.classes)?h=r.classes:sr(r.classes)&&(h=r.classes.split(/\s+/));for(var d=0,f=h.length;d<f;d++){var p=h[d];!p||p===""||a.classes.add(p)}this.createEmitter(),(i===void 0||i)&&this.restore();var m=r.style||r.css;m&&(di("Setting a `style` bypass at element creation should be done only when absolutely necessary.  Try to use the stylesheet instead."),this.style(m))},"Element"),Ofe=o(function(t){return t={bfs:t.bfs||!t.dfs,dfs:t.dfs||!t.bfs},o(function(i,n,a){var s;Xr(i)&&!uo(i)&&(s=i,i=s.roots||s.root,n=s.visit,a=s.directed),a=arguments.length===2&&!Ji(n)?n:a,n=Ji(n)?n:function(){};for(var l=this._private.cy,u=i=sr(i)?this.filter(i):i,h=[],d=[],f={},p={},m={},g=0,y,v=this.byGroup(),x=v.nodes,b=v.edges,T=0;T<u.length;T++){var w=u[T],C=w.id();w.isNode()&&(h.unshift(w),t.bfs&&(m[C]=!0,d.push(w)),p[C]=0)}for(var k=o(function(){var _=t.bfs?h.shift():h.pop(),R=_.id();if(t.dfs){if(m[R])return 0;m[R]=!0,d.push(_)}var M=p[R],L=f[R],B=L!=null?L.source():null,O=L!=null?L.target():null,$=L==null?void 0:_.same(B)?O[0]:B[0],G;if(G=n(_,L,$,g++,M),G===!0)return y=_,1;if(G===!1)return 1;for(var F=_.connectedEdges().filter(function(Q){return(!a||Q.source().same(_))&&b.has(Q)}),V=0;V<F.length;V++){var H=F[V],j=H.connectedNodes().filter(function(Q){return!Q.same(_)&&x.has(Q)}),U=j.id();j.length!==0&&!m[U]&&(j=j[0],h.push(j),t.bfs&&(m[U]=!0,d.push(j)),f[U]=H,p[U]=p[R]+1)}},"_loop"),E;h.length!==0&&(E=k(),!(E!==0&&E===1)););for(var A=l.collection(),N=0;N<d.length;N++){var P=d[N],I=f[P.id()];I!=null&&A.push(I),A.push(P)}return{path:l.collection(A),found:l.collection(y)}},"searchFn")},"defineSearch"),jb={breadthFirstSearch:Ofe({bfs:!0}),depthFirstSearch:Ofe({dfs:!0})};jb.bfs=jb.breadthFirstSearch;jb.dfs=jb.depthFirstSearch;C3={exports:{}},drt=C3.exports;o(frt,"requireHeap$1");o(prt,"requireHeap");mrt=prt(),l2=n2(mrt),grt=va({root:null,weight:o(function(t){return 1},"weight"),directed:!1}),yrt={dijkstra:o(function(t){if(!Xr(t)){var r=arguments;t={root:r[0],weight:r[1],directed:r[2]}}var i=grt(t),n=i.root,a=i.weight,s=i.directed,l=this,u=a,h=sr(n)?this.filter(n)[0]:n[0],d={},f={},p={},m=this.byGroup(),g=m.nodes,y=m.edges;y.unmergeBy(function(M){return M.isLoop()});for(var v=o(function(L){return d[L.id()]},"getDist"),x=o(function(L,B){d[L.id()]=B,b.updateItem(L)},"setDist"),b=new l2(function(M,L){return v(M)-v(L)}),T=0;T<g.length;T++){var w=g[T];d[w.id()]=w.same(h)?0:1/0,b.push(w)}for(var C=o(function(L,B){for(var O=(s?L.edgesTo(B):L.edgesWith(B)).intersect(y),$=1/0,G,F=0;F<O.length;F++){var V=O[F],H=u(V);(H<$||!G)&&($=H,G=V)}return{edge:G,dist:$}},"distBetween");b.size()>0;){var k=b.pop(),E=v(k),A=k.id();if(p[A]=E,E!==1/0)for(var N=k.neighborhood().intersect(g),P=0;P<N.length;P++){var I=N[P],D=I.id(),_=C(k,I),R=E+_.dist;R<v(I)&&(x(I,R),f[D]={node:k,edge:_.edge})}}return{distanceTo:o(function(L){var B=sr(L)?g.filter(L)[0]:L[0];return p[B.id()]},"distanceTo"),pathTo:o(function(L){var B=sr(L)?g.filter(L)[0]:L[0],O=[],$=B,G=$.id();if(B.length>0)for(O.unshift(B);f[G];){var F=f[G];O.unshift(F.edge),O.unshift(F.node),$=F.node,G=$.id()}return l.spawn(O)},"pathTo")}},"dijkstra")},vrt={kruskal:o(function(t){t=t||function(T){return 1};for(var r=this.byGroup(),i=r.nodes,n=r.edges,a=i.length,s=new Array(a),l=i,u=o(function(w){for(var C=0;C<s.length;C++){var k=s[C];if(k.has(w))return C}},"findSetIndex"),h=0;h<a;h++)s[h]=this.spawn(i[h]);for(var d=n.sort(function(T,w){return t(T)-t(w)}),f=0;f<d.length;f++){var p=d[f],m=p.source()[0],g=p.target()[0],y=u(m),v=u(g),x=s[y],b=s[v];y!==v&&(l.merge(p),x.merge(b),s.splice(v,1))}return l},"kruskal")},xrt=va({root:null,goal:null,weight:o(function(t){return 1},"weight"),heuristic:o(function(t){return 0},"heuristic"),directed:!1}),brt={aStar:o(function(t){var r=this.cy(),i=xrt(t),n=i.root,a=i.goal,s=i.heuristic,l=i.directed,u=i.weight;n=r.collection(n)[0],a=r.collection(a)[0];var h=n.id(),d=a.id(),f={},p={},m={},g=new l2(function(G,F){return p[G.id()]-p[F.id()]}),y=new y1,v={},x={},b=o(function(F,V){g.push(F),y.add(V)},"addToOpenSet"),T,w,C=o(function(){T=g.pop(),w=T.id(),y.delete(w)},"popFromOpenSet"),k=o(function(F){return y.has(F)},"isInOpenSet");b(n,h),f[h]=0,p[h]=s(n);for(var E=0;g.size()>0;){if(C(),E++,w===d){for(var A=[],N=a,P=d,I=x[P];A.unshift(N),I!=null&&A.unshift(I),N=v[P],N!=null;)P=N.id(),I=x[P];return{found:!0,distance:f[w],path:this.spawn(A),steps:E}}m[w]=!0;for(var D=T._private.edges,_=0;_<D.length;_++){var R=D[_];if(this.hasElementWithId(R.id())&&!(l&&R.data("source")!==w)){var M=R.source(),L=R.target(),B=M.id()!==w?M:L,O=B.id();if(this.hasElementWithId(O)&&!m[O]){var $=f[w]+u(R);if(!k(O)){f[O]=$,p[O]=$+s(B),b(B,O),v[O]=T,x[O]=R;continue}$<f[O]&&(f[O]=$,p[O]=$+s(B),v[O]=T,x[O]=R)}}}}return{found:!1,distance:void 0,path:void 0,steps:E}},"aStar")},Trt=va({weight:o(function(t){return 1},"weight"),directed:!1}),Crt={floydWarshall:o(function(t){for(var r=this.cy(),i=Trt(t),n=i.weight,a=i.directed,s=n,l=this.byGroup(),u=l.nodes,h=l.edges,d=u.length,f=d*d,p=o(function(H){return u.indexOf(H)},"indexOf"),m=o(function(H){return u[H]},"atIndex"),g=new Array(f),y=0;y<f;y++){var v=y%d,x=(y-v)/d;x===v?g[y]=0:g[y]=1/0}for(var b=new Array(f),T=new Array(f),w=0;w<h.length;w++){var C=h[w],k=C.source()[0],E=C.target()[0];if(k!==E){var A=p(k),N=p(E),P=A*d+N,I=s(C);if(g[P]>I&&(g[P]=I,b[P]=N,T[P]=C),!a){var D=N*d+A;!a&&g[D]>I&&(g[D]=I,b[D]=A,T[D]=C)}}}for(var _=0;_<d;_++)for(var R=0;R<d;R++)for(var M=R*d+_,L=0;L<d;L++){var B=R*d+L,O=_*d+L;g[M]+g[O]<g[B]&&(g[B]=g[M]+g[O],b[B]=b[M])}var $=o(function(H){return(sr(H)?r.filter(H):H)[0]},"getArgEle"),G=o(function(H){return p($(H))},"indexOfArgEle"),F={distance:o(function(H,j){var U=G(H),Q=G(j);return g[U*d+Q]},"distance"),path:o(function(H,j){var U=G(H),Q=G(j),Y=m(U);if(U===Q)return Y.collection();if(b[U*d+Q]==null)return r.collection();var ae=r.collection(),J=U,te;for(ae.merge(Y);U!==Q;)J=U,U=b[U*d+Q],te=T[J*d+U],ae.merge(te),ae.merge(m(U));return ae},"path")};return F},"floydWarshall")},krt=va({weight:o(function(t){return 1},"weight"),directed:!1,root:null}),wrt={bellmanFord:o(function(t){var r=this,i=krt(t),n=i.weight,a=i.directed,s=i.root,l=n,u=this,h=this.cy(),d=this.byGroup(),f=d.edges,p=d.nodes,m=p.length,g=new Ku,y=!1,v=[];s=h.collection(s)[0],f.unmergeBy(function(Ee){return Ee.isLoop()});for(var x=f.length,b=o(function(we){var Me=g.get(we.id());return Me||(Me={},g.set(we.id(),Me)),Me},"getInfo"),T=o(function(we){return(sr(we)?h.$(we):we)[0]},"getNodeFromTo"),w=o(function(we){return b(T(we)).dist},"distanceTo"),C=o(function(we){for(var Me=arguments.length>1&&arguments[1]!==void 0?arguments[1]:s,$e=T(we),de=[],rt=$e;;){if(rt==null)return r.spawn();var ke=b(rt),Fe=ke.edge,He=ke.pred;if(de.unshift(rt[0]),rt.same(Me)&&de.length>0)break;Fe!=null&&de.unshift(Fe),rt=He}return u.spawn(de)},"pathTo"),k=0;k<m;k++){var E=p[k],A=b(E);E.same(s)?A.dist=0:A.dist=1/0,A.pred=null,A.edge=null}for(var N=!1,P=o(function(we,Me,$e,de,rt,ke){var Fe=de.dist+ke;Fe<rt.dist&&!$e.same(de.edge)&&(rt.dist=Fe,rt.pred=we,rt.edge=$e,N=!0)},"checkForEdgeReplacement"),I=1;I<m;I++){N=!1;for(var D=0;D<x;D++){var _=f[D],R=_.source(),M=_.target(),L=l(_),B=b(R),O=b(M);P(R,M,_,B,O,L),a||P(M,R,_,O,B,L)}if(!N)break}if(N)for(var $=[],G=0;G<x;G++){var F=f[G],V=F.source(),H=F.target(),j=l(F),U=b(V).dist,Q=b(H).dist;if(U+j<Q||!a&&Q+j<U)if(y||(di("Graph contains a negative weight cycle for Bellman-Ford"),y=!0),t.findNegativeWeightCycles!==!1){var Y=[];U+j<Q&&Y.push(V),!a&&Q+j<U&&Y.push(H);for(var ae=Y.length,J=0;J<ae;J++){var te=Y[J],re=[te];re.push(b(te).edge);for(var ee=b(te).pred;re.indexOf(ee)===-1;)re.push(ee),re.push(b(ee).edge),ee=b(ee).pred;re=re.slice(re.indexOf(ee));for(var Te=re[0].id(),ue=0,De=2;De<re.length;De+=2)re[De].id()<Te&&(Te=re[De].id(),ue=De);re=re.slice(ue).concat(re.slice(0,ue)),re.push(re[0]);var Ie=re.map(function(Ee){return Ee.id()}).join(",");$.indexOf(Ie)===-1&&(v.push(u.spawn(re)),$.push(Ie))}}else break}return{distanceTo:w,pathTo:C,hasNegativeWeightCycle:y,negativeWeightCycles:v}},"bellmanFord")},Srt=Math.sqrt(2),Ert=o(function(t,r,i){i.length===0&&Yi("Karger-Stein must be run on a connected (sub)graph");for(var n=i[t],a=n[1],s=n[2],l=r[a],u=r[s],h=i,d=h.length-1;d>=0;d--){var f=h[d],p=f[1],m=f[2];(r[p]===l&&r[m]===u||r[p]===u&&r[m]===l)&&h.splice(d,1)}for(var g=0;g<h.length;g++){var y=h[g];y[1]===u?(h[g]=y.slice(),h[g][1]=l):y[2]===u&&(h[g]=y.slice(),h[g][2]=l)}for(var v=0;v<r.length;v++)r[v]===u&&(r[v]=l);return h},"collapse"),R9=o(function(t,r,i,n){for(;i>n;){var a=Math.floor(Math.random()*r.length);r=Ert(a,t,r),i--}return r},"contractUntil"),Art={kargerStein:o(function(){var t=this,r=this.byGroup(),i=r.nodes,n=r.edges;n.unmergeBy(function(O){return O.isLoop()});var a=i.length,s=n.length,l=Math.ceil(Math.pow(Math.log(a)/Math.LN2,2)),u=Math.floor(a/Srt);if(a<2){Yi("At least 2 nodes are required for Karger-Stein algorithm");return}for(var h=[],d=0;d<s;d++){var f=n[d];h.push([d,i.indexOf(f.source()),i.indexOf(f.target())])}for(var p=1/0,m=[],g=new Array(a),y=new Array(a),v=new Array(a),x=o(function($,G){for(var F=0;F<a;F++)G[F]=$[F]},"copyNodesMap"),b=0;b<=l;b++){for(var T=0;T<a;T++)y[T]=T;var w=R9(y,h.slice(),a,u),C=w.slice();x(y,v);var k=R9(y,w,u,2),E=R9(v,C,u,2);k.length<=E.length&&k.length<p?(p=k.length,m=k,x(y,g)):E.length<=k.length&&E.length<p&&(p=E.length,m=E,x(v,g))}for(var A=this.spawn(m.map(function(O){return n[O[0]]})),N=this.spawn(),P=this.spawn(),I=g[0],D=0;D<g.length;D++){var _=g[D],R=i[D];_===I?N.merge(R):P.merge(R)}var M=o(function($){var G=t.spawn();return $.forEach(function(F){G.merge(F),F.connectedEdges().forEach(function(V){t.contains(V)&&!A.contains(V)&&G.merge(V)})}),G},"constructComponent"),L=[M(N),M(P)],B={cut:A,components:L,partition1:N,partition2:P};return B},"kargerStein")},_rt=o(function(t){return{x:t.x,y:t.y}},"copyPosition"),K3=o(function(t,r,i){return{x:t.x*r+i.x,y:t.y*r+i.y}},"modelToRenderedPosition"),cme=o(function(t,r,i){return{x:(t.x-i.x)/r,y:(t.y-i.y)/r}},"renderedToModelPosition"),o1=o(function(t){return{x:t[0],y:t[1]}},"array2point"),Drt=o(function(t){for(var r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0,i=arguments.length>2&&arguments[2]!==void 0?arguments[2]:t.length,n=1/0,a=r;a<i;a++){var s=t[a];isFinite(s)&&(n=Math.min(s,n))}return n},"min"),Rrt=o(function(t){for(var r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0,i=arguments.length>2&&arguments[2]!==void 0?arguments[2]:t.length,n=-1/0,a=r;a<i;a++){var s=t[a];isFinite(s)&&(n=Math.max(s,n))}return n},"max"),Lrt=o(function(t){for(var r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0,i=arguments.length>2&&arguments[2]!==void 0?arguments[2]:t.length,n=0,a=0,s=r;s<i;s++){var l=t[s];isFinite(l)&&(n+=l,a++)}return n/a},"mean"),Mrt=o(function(t){var r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0,i=arguments.length>2&&arguments[2]!==void 0?arguments[2]:t.length,n=arguments.length>3&&arguments[3]!==void 0?arguments[3]:!0,a=arguments.length>4&&arguments[4]!==void 0?arguments[4]:!0,s=arguments.length>5&&arguments[5]!==void 0?arguments[5]:!0;n?t=t.slice(r,i):(i<t.length&&t.splice(i,t.length-i),r>0&&t.splice(0,r));for(var l=0,u=t.length-1;u>=0;u--){var h=t[u];s?isFinite(h)||(t[u]=-1/0,l++):t.splice(u,1)}a&&t.sort(function(p,m){return p-m});var d=t.length,f=Math.floor(d/2);return d%2!==0?t[f+1+l]:(t[f-1+l]+t[f+l])/2},"median"),Nrt=o(function(t){return Math.PI*t/180},"deg2rad"),h3=o(function(t,r){return Math.atan2(r,t)-Math.PI/2},"getAngleFromDisp"),yP=Math.log2||function(e){return Math.log(e)/Math.log(2)},vP=o(function(t){return t>0?1:t<0?-1:0},"signum"),e0=o(function(t,r){return Math.sqrt(jp(t,r))},"dist"),jp=o(function(t,r){var i=r.x-t.x,n=r.y-t.y;return i*i+n*n},"sqdist"),Irt=o(function(t){for(var r=t.length,i=0,n=0;n<r;n++)i+=t[n];for(var a=0;a<r;a++)t[a]=t[a]/i;return t},"inPlaceSumNormalize"),na=o(function(t,r,i,n){return(1-n)*(1-n)*t+2*(1-n)*n*r+n*n*i},"qbezierAt"),u1=o(function(t,r,i,n){return{x:na(t.x,r.x,i.x,n),y:na(t.y,r.y,i.y,n)}},"qbezierPtAt"),Ort=o(function(t,r,i,n){var a={x:r.x-t.x,y:r.y-t.y},s=e0(t,r),l={x:a.x/s,y:a.y/s};return i=i??0,n=n??i*s,{x:t.x+l.x*n,y:t.y+l.y*n}},"lineAt"),Xb=o(function(t,r,i){return Math.max(t,Math.min(i,r))},"bound"),is=o(function(t){if(t==null)return{x1:1/0,y1:1/0,x2:-1/0,y2:-1/0,w:0,h:0};if(t.x1!=null&&t.y1!=null){if(t.x2!=null&&t.y2!=null&&t.x2>=t.x1&&t.y2>=t.y1)return{x1:t.x1,y1:t.y1,x2:t.x2,y2:t.y2,w:t.x2-t.x1,h:t.y2-t.y1};if(t.w!=null&&t.h!=null&&t.w>=0&&t.h>=0)return{x1:t.x1,y1:t.y1,x2:t.x1+t.w,y2:t.y1+t.h,w:t.w,h:t.h}}},"makeBoundingBox"),Prt=o(function(t){return{x1:t.x1,x2:t.x2,w:t.w,y1:t.y1,y2:t.y2,h:t.h}},"copyBoundingBox"),Brt=o(function(t){t.x1=1/0,t.y1=1/0,t.x2=-1/0,t.y2=-1/0,t.w=0,t.h=0},"clearBoundingBox"),Frt=o(function(t,r){t.x1=Math.min(t.x1,r.x1),t.x2=Math.max(t.x2,r.x2),t.w=t.x2-t.x1,t.y1=Math.min(t.y1,r.y1),t.y2=Math.max(t.y2,r.y2),t.h=t.y2-t.y1},"updateBoundingBox"),ume=o(function(t,r,i){t.x1=Math.min(t.x1,r),t.x2=Math.max(t.x2,r),t.w=t.x2-t.x1,t.y1=Math.min(t.y1,i),t.y2=Math.max(t.y2,i),t.h=t.y2-t.y1},"expandBoundingBoxByPoint"),k3=o(function(t){var r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0;return t.x1-=r,t.x2+=r,t.y1-=r,t.y2+=r,t.w=t.x2-t.x1,t.h=t.y2-t.y1,t},"expandBoundingBox"),w3=o(function(t){var r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:[0],i,n,a,s;if(r.length===1)i=n=a=s=r[0];else if(r.length===2)i=a=r[0],s=n=r[1];else if(r.length===4){var l=Dn(r,4);i=l[0],n=l[1],a=l[2],s=l[3]}return t.x1-=s,t.x2+=n,t.y1-=i,t.y2+=a,t.w=t.x2-t.x1,t.h=t.y2-t.y1,t},"expandBoundingBoxSides"),Ffe=o(function(t,r){t.x1=r.x1,t.y1=r.y1,t.x2=r.x2,t.y2=r.y2,t.w=t.x2-t.x1,t.h=t.y2-t.y1},"assignBoundingBox"),xP=o(function(t,r){return!(t.x1>r.x2||r.x1>t.x2||t.x2<r.x1||r.x2<t.x1||t.y2<r.y1||r.y2<t.y1||t.y1>r.y2||r.y1>t.y2)},"boundingBoxesIntersect"),zd=o(function(t,r,i){return t.x1<=r&&r<=t.x2&&t.y1<=i&&i<=t.y2},"inBoundingBox"),$fe=o(function(t,r){return zd(t,r.x,r.y)},"pointInBoundingBox"),hme=o(function(t,r){return zd(t,r.x1,r.y1)&&zd(t,r.x2,r.y2)},"boundingBoxInBoundingBox"),$rt=(L9=Math.hypot)!==null&&L9!==void 0?L9:function(e,t){return Math.sqrt(e*e+t*t)};o(zrt,"inflatePolygon");o(Grt,"miterBox");dme=o(function(t,r,i,n,a,s,l){var u=arguments.length>7&&arguments[7]!==void 0?arguments[7]:"auto",h=u==="auto"?Hd(a,s):u,d=a/2,f=s/2;h=Math.min(h,d,f);var p=h!==d,m=h!==f,g;if(p){var y=i-d+h-l,v=n-f-l,x=i+d-h+l,b=v;if(g=Gd(t,r,i,n,y,v,x,b,!1),g.length>0)return g}if(m){var T=i+d+l,w=n-f+h-l,C=T,k=n+f-h+l;if(g=Gd(t,r,i,n,T,w,C,k,!1),g.length>0)return g}if(p){var E=i-d+h-l,A=n+f+l,N=i+d-h+l,P=A;if(g=Gd(t,r,i,n,E,A,N,P,!1),g.length>0)return g}if(m){var I=i-d-l,D=n-f+h-l,_=I,R=n+f-h+l;if(g=Gd(t,r,i,n,I,D,_,R,!1),g.length>0)return g}var M;{var L=i-d+h,B=n-f+h;if(M=zb(t,r,i,n,L,B,h+l),M.length>0&&M[0]<=L&&M[1]<=B)return[M[0],M[1]]}{var O=i+d-h,$=n-f+h;if(M=zb(t,r,i,n,O,$,h+l),M.length>0&&M[0]>=O&&M[1]<=$)return[M[0],M[1]]}{var G=i+d-h,F=n+f-h;if(M=zb(t,r,i,n,G,F,h+l),M.length>0&&M[0]>=G&&M[1]>=F)return[M[0],M[1]]}{var V=i-d+h,H=n+f-h;if(M=zb(t,r,i,n,V,H,h+l),M.length>0&&M[0]<=V&&M[1]>=H)return[M[0],M[1]]}return[]},"roundRectangleIntersectLine"),Vrt=o(function(t,r,i,n,a,s,l){var u=l,h=Math.min(i,a),d=Math.max(i,a),f=Math.min(n,s),p=Math.max(n,s);return h-u<=t&&t<=d+u&&f-u<=r&&r<=p+u},"inLineVicinity"),Wrt=o(function(t,r,i,n,a,s,l,u,h){var d={x1:Math.min(i,l,a)-h,x2:Math.max(i,l,a)+h,y1:Math.min(n,u,s)-h,y2:Math.max(n,u,s)+h};return!(t<d.x1||t>d.x2||r<d.y1||r>d.y2)},"inBezierVicinity"),qrt=o(function(t,r,i,n){i-=n;var a=r*r-4*t*i;if(a<0)return[];var s=Math.sqrt(a),l=2*t,u=(-r+s)/l,h=(-r-s)/l;return[u,h]},"solveQuadratic"),Urt=o(function(t,r,i,n,a){var s=1e-5;t===0&&(t=s),r/=t,i/=t,n/=t;var l,u,h,d,f,p,m,g;if(u=(3*i-r*r)/9,h=-(27*n)+r*(9*i-2*(r*r)),h/=54,l=u*u*u+h*h,a[1]=0,m=r/3,l>0){f=h+Math.sqrt(l),f=f<0?-Math.pow(-f,1/3):Math.pow(f,1/3),p=h-Math.sqrt(l),p=p<0?-Math.pow(-p,1/3):Math.pow(p,1/3),a[0]=-m+f+p,m+=(f+p)/2,a[4]=a[2]=-m,m=Math.sqrt(3)*(-p+f)/2,a[3]=m,a[5]=-m;return}if(a[5]=a[3]=0,l===0){g=h<0?-Math.pow(-h,1/3):Math.pow(h,1/3),a[0]=-m+2*g,a[4]=a[2]=-(g+m);return}u=-u,d=u*u*u,d=Math.acos(h/Math.sqrt(d)),g=2*Math.sqrt(u),a[0]=-m+g*Math.cos(d/3),a[2]=-m+g*Math.cos((d+2*Math.PI)/3),a[4]=-m+g*Math.cos((d+4*Math.PI)/3)},"solveCubic"),Hrt=o(function(t,r,i,n,a,s,l,u){var h=1*i*i-4*i*a+2*i*l+4*a*a-4*a*l+l*l+n*n-4*n*s+2*n*u+4*s*s-4*s*u+u*u,d=9*i*a-3*i*i-3*i*l-6*a*a+3*a*l+9*n*s-3*n*n-3*n*u-6*s*s+3*s*u,f=3*i*i-6*i*a+i*l-i*t+2*a*a+2*a*t-l*t+3*n*n-6*n*s+n*u-n*r+2*s*s+2*s*r-u*r,p=1*i*a-i*i+i*t-a*t+n*s-n*n+n*r-s*r,m=[];Urt(h,d,f,p,m);for(var g=1e-7,y=[],v=0;v<6;v+=2)Math.abs(m[v+1])<g&&m[v]>=0&&m[v]<=1&&y.push(m[v]);y.push(1),y.push(0);for(var x=-1,b,T,w,C=0;C<y.length;C++)b=Math.pow(1-y[C],2)*i+2*(1-y[C])*y[C]*a+y[C]*y[C]*l,T=Math.pow(1-y[C],2)*n+2*(1-y[C])*y[C]*s+y[C]*y[C]*u,w=Math.pow(b-t,2)+Math.pow(T-r,2),x>=0?w<x&&(x=w):x=w;return x},"sqdistToQuadraticBezier"),Yrt=o(function(t,r,i,n,a,s){var l=[t-i,r-n],u=[a-i,s-n],h=u[0]*u[0]+u[1]*u[1],d=l[0]*l[0]+l[1]*l[1],f=l[0]*u[0]+l[1]*u[1],p=f*f/h;return f<0?d:p>h?(t-a)*(t-a)+(r-s)*(r-s):d-p},"sqdistToFiniteLine"),Bs=o(function(t,r,i){for(var n,a,s,l,u,h=0,d=0;d<i.length/2;d++)if(n=i[d*2],a=i[d*2+1],d+1<i.length/2?(s=i[(d+1)*2],l=i[(d+1)*2+1]):(s=i[(d+1-i.length/2)*2],l=i[(d+1-i.length/2)*2+1]),!(n==t&&s==t))if(n>=t&&t>=s||n<=t&&t<=s)u=(t-n)/(s-n)*(l-a)+a,u>r&&h++;else continue;return h%2!==0},"pointInsidePolygonPoints"),Qu=o(function(t,r,i,n,a,s,l,u,h){var d=new Array(i.length),f;u[0]!=null?(f=Math.atan(u[1]/u[0]),u[0]<0?f=f+Math.PI/2:f=-f-Math.PI/2):f=u;for(var p=Math.cos(-f),m=Math.sin(-f),g=0;g<d.length/2;g++)d[g*2]=s/2*(i[g*2]*p-i[g*2+1]*m),d[g*2+1]=l/2*(i[g*2+1]*p+i[g*2]*m),d[g*2]+=n,d[g*2+1]+=a;var y;if(h>0){var v=F3(d,-h);y=B3(v)}else y=d;return Bs(t,r,y)},"pointInsidePolygon"),jrt=o(function(t,r,i,n,a,s,l,u){for(var h=new Array(i.length*2),d=0;d<u.length;d++){var f=u[d];h[d*4+0]=f.startX,h[d*4+1]=f.startY,h[d*4+2]=f.stopX,h[d*4+3]=f.stopY;var p=Math.pow(f.cx-t,2)+Math.pow(f.cy-r,2);if(p<=Math.pow(f.radius,2))return!0}return Bs(t,r,h)},"pointInsideRoundPolygon"),B3=o(function(t){for(var r=new Array(t.length/2),i,n,a,s,l,u,h,d,f=0;f<t.length/4;f++){i=t[f*4],n=t[f*4+1],a=t[f*4+2],s=t[f*4+3],f<t.length/4-1?(l=t[(f+1)*4],u=t[(f+1)*4+1],h=t[(f+1)*4+2],d=t[(f+1)*4+3]):(l=t[0],u=t[1],h=t[2],d=t[3]);var p=Gd(i,n,a,s,l,u,h,d,!0);r[f*2]=p[0],r[f*2+1]=p[1]}return r},"joinLines"),F3=o(function(t,r){for(var i=new Array(t.length*2),n,a,s,l,u=0;u<t.length/2;u++){n=t[u*2],a=t[u*2+1],u<t.length/2-1?(s=t[(u+1)*2],l=t[(u+1)*2+1]):(s=t[0],l=t[1]);var h=l-a,d=-(s-n),f=Math.sqrt(h*h+d*d),p=h/f,m=d/f;i[u*4]=n+p*r,i[u*4+1]=a+m*r,i[u*4+2]=s+p*r,i[u*4+3]=l+m*r}return i},"expandPolygon"),Xrt=o(function(t,r,i,n,a,s){var l=i-t,u=n-r;l/=a,u/=s;var h=Math.sqrt(l*l+u*u),d=h-1;if(d<0)return[];var f=d/h;return[(i-t)*f+t,(n-r)*f+r]},"intersectLineEllipse"),Qp=o(function(t,r,i,n,a,s,l){return t-=a,r-=s,t/=i/2+l,r/=n/2+l,t*t+r*r<=1},"checkInEllipse"),zb=o(function(t,r,i,n,a,s,l){var u=[i-t,n-r],h=[t-a,r-s],d=u[0]*u[0]+u[1]*u[1],f=2*(h[0]*u[0]+h[1]*u[1]),p=h[0]*h[0]+h[1]*h[1]-l*l,m=f*f-4*d*p;if(m<0)return[];var g=(-f+Math.sqrt(m))/(2*d),y=(-f-Math.sqrt(m))/(2*d),v=Math.min(g,y),x=Math.max(g,y),b=[];if(v>=0&&v<=1&&b.push(v),x>=0&&x<=1&&b.push(x),b.length===0)return[];var T=b[0]*u[0]+t,w=b[0]*u[1]+r;if(b.length>1){if(b[0]==b[1])return[T,w];var C=b[1]*u[0]+t,k=b[1]*u[1]+r;return[T,w,C,k]}else return[T,w]},"intersectLineCircle"),M9=o(function(t,r,i){return r<=t&&t<=i||i<=t&&t<=r?t:t<=r&&r<=i||i<=r&&r<=t?r:i},"midOfThree"),Gd=o(function(t,r,i,n,a,s,l,u,h){var d=t-a,f=i-t,p=l-a,m=r-s,g=n-r,y=u-s,v=p*m-y*d,x=f*m-g*d,b=y*f-p*g;if(b!==0){var T=v/b,w=x/b,C=.001,k=0-C,E=1+C;return k<=T&&T<=E&&k<=w&&w<=E?[t+T*f,r+T*g]:h?[t+T*f,r+T*g]:[]}else return v===0||x===0?M9(t,i,l)===l?[l,u]:M9(t,i,a)===a?[a,s]:M9(a,l,i)===i?[i,n]:[]:[]},"finiteLinesIntersect"),Krt=o(function(t,r,i,n,a){var s=[],l=n/2,u=a/2,h=r,d=i;s.push({x:h+l*t[0],y:d+u*t[1]});for(var f=1;f<t.length/2;f++)s.push({x:h+l*t[f*2],y:d+u*t[f*2+1]});return s},"transformPoints"),Kb=o(function(t,r,i,n,a,s,l,u){var h=[],d,f=new Array(i.length),p=!0;s==null&&(p=!1);var m;if(p){for(var g=0;g<f.length/2;g++)f[g*2]=i[g*2]*s+n,f[g*2+1]=i[g*2+1]*l+a;if(u>0){var y=F3(f,-u);m=B3(y)}else m=f}else m=i;for(var v,x,b,T,w=0;w<m.length/2;w++)v=m[w*2],x=m[w*2+1],w<m.length/2-1?(b=m[(w+1)*2],T=m[(w+1)*2+1]):(b=m[0],T=m[1]),d=Gd(t,r,n,a,v,x,b,T),d.length!==0&&h.push(d[0],d[1]);return h},"polygonIntersectLine"),Zrt=o(function(t,r,i,n,a,s,l,u,h){var d=[],f,p=new Array(i.length*2);h.forEach(function(b,T){T===0?(p[p.length-2]=b.startX,p[p.length-1]=b.startY):(p[T*4-2]=b.startX,p[T*4-1]=b.startY),p[T*4]=b.stopX,p[T*4+1]=b.stopY,f=zb(t,r,n,a,b.cx,b.cy,b.radius),f.length!==0&&d.push(f[0],f[1])});for(var m=0;m<p.length/4;m++)f=Gd(t,r,n,a,p[m*4],p[m*4+1],p[m*4+2],p[m*4+3],!1),f.length!==0&&d.push(f[0],f[1]);if(d.length>2){for(var g=[d[0],d[1]],y=Math.pow(g[0]-t,2)+Math.pow(g[1]-r,2),v=1;v<d.length/2;v++){var x=Math.pow(d[v*2]-t,2)+Math.pow(d[v*2+1]-r,2);x<=y&&(g[0]=d[v*2],g[1]=d[v*2+1],y=x)}return g}return d},"roundPolygonIntersectLine"),d3=o(function(t,r,i){var n=[t[0]-r[0],t[1]-r[1]],a=Math.sqrt(n[0]*n[0]+n[1]*n[1]),s=(a-i)/a;return s<0&&(s=1e-5),[r[0]+s*n[0],r[1]+s*n[1]]},"shortenIntersection"),rs=o(function(t,r){var i=UO(t,r);return i=fme(i),i},"generateUnitNgonPointsFitToSquare"),fme=o(function(t){for(var r,i,n=t.length/2,a=1/0,s=1/0,l=-1/0,u=-1/0,h=0;h<n;h++)r=t[2*h],i=t[2*h+1],a=Math.min(a,r),l=Math.max(l,r),s=Math.min(s,i),u=Math.max(u,i);for(var d=2/(l-a),f=2/(u-s),p=0;p<n;p++)r=t[2*p]=t[2*p]*d,i=t[2*p+1]=t[2*p+1]*f,a=Math.min(a,r),l=Math.max(l,r),s=Math.min(s,i),u=Math.max(u,i);if(s<-1)for(var m=0;m<n;m++)i=t[2*m+1]=t[2*m+1]+(-1-s);return t},"fitPolygonToSquare"),UO=o(function(t,r){var i=1/t*2*Math.PI,n=t%2===0?Math.PI/2+i/2:Math.PI/2;n+=r;for(var a=new Array(t*2),s,l=0;l<t;l++)s=l*i+n,a[2*l]=Math.cos(s),a[2*l+1]=Math.sin(-s);return a},"generateUnitNgonPoints"),Hd=o(function(t,r){return Math.min(t/4,r/4,8)},"getRoundRectangleRadius"),pme=o(function(t,r){return Math.min(t/10,r/10,8)},"getRoundPolygonRadius"),bP=o(function(){return 8},"getCutRectangleCornerLength"),Qrt=o(function(t,r,i){return[t-2*r+i,2*(r-t),t]},"bezierPtsToQuadCoeff"),HO=o(function(t,r){return{heightOffset:Math.min(15,.05*r),widthOffset:Math.min(100,.25*t),ctrlPtOffsetPct:.05}},"getBarrelCurveConstants");o(N9,"satPolygonIntersection");Jrt=va({dampingFactor:.8,precision:1e-6,iterations:200,weight:o(function(t){return 1},"weight")}),eit={pageRank:o(function(t){for(var r=Jrt(t),i=r.dampingFactor,n=r.precision,a=r.iterations,s=r.weight,l=this._private.cy,u=this.byGroup(),h=u.nodes,d=u.edges,f=h.length,p=f*f,m=d.length,g=new Array(p),y=new Array(f),v=(1-i)/f,x=0;x<f;x++){for(var b=0;b<f;b++){var T=x*f+b;g[T]=0}y[x]=0}for(var w=0;w<m;w++){var C=d[w],k=C.data("source"),E=C.data("target");if(k!==E){var A=h.indexOfId(k),N=h.indexOfId(E),P=s(C),I=N*f+A;g[I]+=P,y[A]+=P}}for(var D=1/f+v,_=0;_<f;_++)if(y[_]===0)for(var R=0;R<f;R++){var M=R*f+_;g[M]=D}else for(var L=0;L<f;L++){var B=L*f+_;g[B]=g[B]/y[_]+v}for(var O=new Array(f),$=new Array(f),G,F=0;F<f;F++)O[F]=1;for(var V=0;V<a;V++){for(var H=0;H<f;H++)$[H]=0;for(var j=0;j<f;j++)for(var U=0;U<f;U++){var Q=j*f+U;$[j]+=g[Q]*O[U]}Irt($),G=O,O=$,$=G;for(var Y=0,ae=0;ae<f;ae++){var J=G[ae]-O[ae];Y+=J*J}if(Y<n)break}var te={rank:o(function(ee){return ee=l.collection(ee)[0],O[h.indexOf(ee)]},"rank")};return te},"pageRank")},zfe=va({root:null,weight:o(function(t){return 1},"weight"),directed:!1,alpha:0}),h1={degreeCentralityNormalized:o(function(t){t=zfe(t);var r=this.cy(),i=this.nodes(),n=i.length;if(t.directed){for(var d={},f={},p=0,m=0,g=0;g<n;g++){var y=i[g],v=y.id();t.root=y;var x=this.degreeCentrality(t);p<x.indegree&&(p=x.indegree),m<x.outdegree&&(m=x.outdegree),d[v]=x.indegree,f[v]=x.outdegree}return{indegree:o(function(T){return p==0?0:(sr(T)&&(T=r.filter(T)),d[T.id()]/p)},"indegree"),outdegree:o(function(T){return m===0?0:(sr(T)&&(T=r.filter(T)),f[T.id()]/m)},"outdegree")}}else{for(var a={},s=0,l=0;l<n;l++){var u=i[l];t.root=u;var h=this.degreeCentrality(t);s<h.degree&&(s=h.degree),a[u.id()]=h.degree}return{degree:o(function(T){return s===0?0:(sr(T)&&(T=r.filter(T)),a[T.id()]/s)},"degree")}}},"degreeCentralityNormalized"),degreeCentrality:o(function(t){t=zfe(t);var r=this.cy(),i=this,n=t,a=n.root,s=n.weight,l=n.directed,u=n.alpha;if(a=r.collection(a)[0],l){for(var m=a.connectedEdges(),g=m.filter(function(k){return k.target().same(a)&&i.has(k)}),y=m.filter(function(k){return k.source().same(a)&&i.has(k)}),v=g.length,x=y.length,b=0,T=0,w=0;w<g.length;w++)b+=s(g[w]);for(var C=0;C<y.length;C++)T+=s(y[C]);return{indegree:Math.pow(v,1-u)*Math.pow(b,u),outdegree:Math.pow(x,1-u)*Math.pow(T,u)}}else{for(var h=a.connectedEdges().intersection(i),d=h.length,f=0,p=0;p<h.length;p++)f+=s(h[p]);return{degree:Math.pow(d,1-u)*Math.pow(f,u)}}},"degreeCentrality")};h1.dc=h1.degreeCentrality;h1.dcn=h1.degreeCentralityNormalised=h1.degreeCentralityNormalized;Gfe=va({harmonic:!0,weight:o(function(){return 1},"weight"),directed:!1,root:null}),d1={closenessCentralityNormalized:o(function(t){for(var r=Gfe(t),i=r.harmonic,n=r.weight,a=r.directed,s=this.cy(),l={},u=0,h=this.nodes(),d=this.floydWarshall({weight:n,directed:a}),f=0;f<h.length;f++){for(var p=0,m=h[f],g=0;g<h.length;g++)if(f!==g){var y=d.distance(m,h[g]);i?p+=1/y:p+=y}i||(p=1/p),u<p&&(u=p),l[m.id()]=p}return{closeness:o(function(x){return u==0?0:(sr(x)?x=s.filter(x)[0].id():x=x.id(),l[x]/u)},"closeness")}},"closenessCentralityNormalized"),closenessCentrality:o(function(t){var r=Gfe(t),i=r.root,n=r.weight,a=r.directed,s=r.harmonic;i=this.filter(i)[0];for(var l=this.dijkstra({root:i,weight:n,directed:a}),u=0,h=this.nodes(),d=0;d<h.length;d++){var f=h[d];if(!f.same(i)){var p=l.distanceTo(f);s?u+=1/p:u+=p}}return s?u:1/u},"closenessCentrality")};d1.cc=d1.closenessCentrality;d1.ccn=d1.closenessCentralityNormalised=d1.closenessCentralityNormalized;tit=va({weight:null,directed:!1}),YO={betweennessCentrality:o(function(t){for(var r=tit(t),i=r.directed,n=r.weight,a=n!=null,s=this.cy(),l=this.nodes(),u={},h={},d=0,f={set:o(function(T,w){h[T]=w,w>d&&(d=w)},"set"),get:o(function(T){return h[T]},"get")},p=0;p<l.length;p++){var m=l[p],g=m.id();i?u[g]=m.outgoers().nodes():u[g]=m.openNeighborhood().nodes(),f.set(g,0)}for(var y=o(function(){for(var T=l[v].id(),w=[],C={},k={},E={},A=new l2(function(j,U){return E[j]-E[U]}),N=0;N<l.length;N++){var P=l[N].id();C[P]=[],k[P]=0,E[P]=1/0}for(k[T]=1,E[T]=0,A.push(T);!A.empty();){var I=A.pop();if(w.push(I),a)for(var D=0;D<u[I].length;D++){var _=u[I][D],R=s.getElementById(I),M=void 0;R.edgesTo(_).length>0?M=R.edgesTo(_)[0]:M=_.edgesTo(R)[0];var L=n(M);_=_.id(),E[_]>E[I]+L&&(E[_]=E[I]+L,A.nodes.indexOf(_)<0?A.push(_):A.updateItem(_),k[_]=0,C[_]=[]),E[_]==E[I]+L&&(k[_]=k[_]+k[I],C[_].push(I))}else for(var B=0;B<u[I].length;B++){var O=u[I][B].id();E[O]==1/0&&(A.push(O),E[O]=E[I]+1),E[O]==E[I]+1&&(k[O]=k[O]+k[I],C[O].push(I))}}for(var $={},G=0;G<l.length;G++)$[l[G].id()]=0;for(;w.length>0;){for(var F=w.pop(),V=0;V<C[F].length;V++){var H=C[F][V];$[H]=$[H]+k[H]/k[F]*(1+$[F])}F!=l[v].id()&&f.set(F,f.get(F)+$[F])}},"_loop"),v=0;v<l.length;v++)y();var x={betweenness:o(function(T){var w=s.collection(T).id();return f.get(w)},"betweenness"),betweennessNormalized:o(function(T){if(d==0)return 0;var w=s.collection(T).id();return f.get(w)/d},"betweennessNormalized")};return x.betweennessNormalised=x.betweennessNormalized,x},"betweennessCentrality")};YO.bc=YO.betweennessCentrality;rit=va({expandFactor:2,inflateFactor:2,multFactor:1,maxIterations:20,attributes:[function(e){return 1}]}),iit=o(function(t){return rit(t)},"setOptions"),nit=o(function(t,r){for(var i=0,n=0;n<r.length;n++)i+=r[n](t);return i},"getSimilarity"),ait=o(function(t,r,i){for(var n=0;n<r;n++)t[n*r+n]=i},"addLoops"),mme=o(function(t,r){for(var i,n=0;n<r;n++){i=0;for(var a=0;a<r;a++)i+=t[a*r+n];for(var s=0;s<r;s++)t[s*r+n]=t[s*r+n]/i}},"normalize"),sit=o(function(t,r,i){for(var n=new Array(i*i),a=0;a<i;a++){for(var s=0;s<i;s++)n[a*i+s]=0;for(var l=0;l<i;l++)for(var u=0;u<i;u++)n[a*i+u]+=t[a*i+l]*r[l*i+u]}return n},"mmult"),oit=o(function(t,r,i){for(var n=t.slice(0),a=1;a<i;a++)t=sit(t,n,r);return t},"expand"),lit=o(function(t,r,i){for(var n=new Array(r*r),a=0;a<r*r;a++)n[a]=Math.pow(t[a],i);return mme(n,r),n},"inflate"),cit=o(function(t,r,i,n){for(var a=0;a<i;a++){var s=Math.round(t[a]*Math.pow(10,n))/Math.pow(10,n),l=Math.round(r[a]*Math.pow(10,n))/Math.pow(10,n);if(s!==l)return!1}return!0},"hasConverged"),uit=o(function(t,r,i,n){for(var a=[],s=0;s<r;s++){for(var l=[],u=0;u<r;u++)Math.round(t[s*r+u]*1e3)/1e3>0&&l.push(i[u]);l.length!==0&&a.push(n.collection(l))}return a},"assign"),hit=o(function(t,r){for(var i=0;i<t.length;i++)if(!r[i]||t[i].id()!==r[i].id())return!1;return!0},"isDuplicate"),dit=o(function(t){for(var r=0;r<t.length;r++)for(var i=0;i<t.length;i++)r!=i&&hit(t[r],t[i])&&t.splice(i,1);return t},"removeDuplicates"),Vfe=o(function(t){for(var r=this.nodes(),i=this.edges(),n=this.cy(),a=iit(t),s={},l=0;l<r.length;l++)s[r[l].id()]=l;for(var u=r.length,h=u*u,d=new Array(h),f,p=0;p<h;p++)d[p]=0;for(var m=0;m<i.length;m++){var g=i[m],y=s[g.source().id()],v=s[g.target().id()],x=nit(g,a.attributes);d[y*u+v]+=x,d[v*u+y]+=x}ait(d,u,a.multFactor),mme(d,u);for(var b=!0,T=0;b&&T<a.maxIterations;)b=!1,f=oit(d,u,a.expandFactor),d=lit(f,u,a.inflateFactor),cit(d,f,h,4)||(b=!0),T++;var w=uit(d,u,r,n);return w=dit(w),w},"markovClustering"),fit={markovClustering:Vfe,mcl:Vfe},pit=o(function(t){return t},"identity"),gme=o(function(t,r){return Math.abs(r-t)},"absDiff"),Wfe=o(function(t,r,i){return t+gme(r,i)},"addAbsDiff"),qfe=o(function(t,r,i){return t+Math.pow(i-r,2)},"addSquaredDiff"),mit=o(function(t){return Math.sqrt(t)},"sqrt"),git=o(function(t,r,i){return Math.max(t,gme(r,i))},"maxAbsDiff"),Nb=o(function(t,r,i,n,a){for(var s=arguments.length>5&&arguments[5]!==void 0?arguments[5]:pit,l=n,u,h,d=0;d<t;d++)u=r(d),h=i(d),l=a(l,u,h);return s(l)},"getDistance"),m1={euclidean:o(function(t,r,i){return t>=2?Nb(t,r,i,0,qfe,mit):Nb(t,r,i,0,Wfe)},"euclidean"),squaredEuclidean:o(function(t,r,i){return Nb(t,r,i,0,qfe)},"squaredEuclidean"),manhattan:o(function(t,r,i){return Nb(t,r,i,0,Wfe)},"manhattan"),max:o(function(t,r,i){return Nb(t,r,i,-1/0,git)},"max")};m1["squared-euclidean"]=m1.squaredEuclidean;m1.squaredeuclidean=m1.squaredEuclidean;o(Z3,"clusteringDistance");yit=va({k:2,m:2,sensitivityThreshold:1e-4,distance:"euclidean",maxIterations:10,attributes:[],testMode:!1,testCentroids:null}),TP=o(function(t){return yit(t)},"setOptions"),$3=o(function(t,r,i,n,a){var s=a!=="kMedoids",l=s?function(f){return i[f]}:function(f){return n[f](i)},u=o(function(p){return n[p](r)},"getQ"),h=i,d=r;return Z3(t,n.length,l,u,h,d)},"getDist"),I9=o(function(t,r,i){for(var n=i.length,a=new Array(n),s=new Array(n),l=new Array(r),u=null,h=0;h<n;h++)a[h]=t.min(i[h]).value,s[h]=t.max(i[h]).value;for(var d=0;d<r;d++){u=[];for(var f=0;f<n;f++)u[f]=Math.random()*(s[f]-a[f])+a[f];l[d]=u}return l},"randomCentroids"),yme=o(function(t,r,i,n,a){for(var s=1/0,l=0,u=0;u<r.length;u++){var h=$3(i,t,r[u],n,a);h<s&&(s=h,l=u)}return l},"classify"),vme=o(function(t,r,i){for(var n=[],a=null,s=0;s<r.length;s++)a=r[s],i[a.id()]===t&&n.push(a);return n},"buildCluster"),vit=o(function(t,r,i){return Math.abs(r-t)<=i},"haveValuesConverged"),xit=o(function(t,r,i){for(var n=0;n<t.length;n++)for(var a=0;a<t[n].length;a++){var s=Math.abs(t[n][a]-r[n][a]);if(s>i)return!1}return!0},"haveMatricesConverged"),bit=o(function(t,r,i){for(var n=0;n<i;n++)if(t===r[n])return!0;return!1},"seenBefore"),Ufe=o(function(t,r){var i=new Array(r);if(t.length<50)for(var n=0;n<r;n++){for(var a=t[Math.floor(Math.random()*t.length)];bit(a,i,n);)a=t[Math.floor(Math.random()*t.length)];i[n]=a}else for(var s=0;s<r;s++)i[s]=t[Math.floor(Math.random()*t.length)];return i},"randomMedoids"),Hfe=o(function(t,r,i){for(var n=0,a=0;a<r.length;a++)n+=$3("manhattan",r[a],t,i,"kMedoids");return n},"findCost"),Tit=o(function(t){var r=this.cy(),i=this.nodes(),n=null,a=TP(t),s=new Array(a.k),l={},u;a.testMode?typeof a.testCentroids=="number"?(a.testCentroids,u=I9(i,a.k,a.attributes)):Wn(a.testCentroids)==="object"?u=a.testCentroids:u=I9(i,a.k,a.attributes):u=I9(i,a.k,a.attributes);for(var h=!0,d=0;h&&d<a.maxIterations;){for(var f=0;f<i.length;f++)n=i[f],l[n.id()]=yme(n,u,a.distance,a.attributes,"kMeans");h=!1;for(var p=0;p<a.k;p++){var m=vme(p,i,l);if(m.length!==0){for(var g=a.attributes.length,y=u[p],v=new Array(g),x=new Array(g),b=0;b<g;b++){x[b]=0;for(var T=0;T<m.length;T++)n=m[T],x[b]+=a.attributes[b](n);v[b]=x[b]/m.length,vit(v[b],y[b],a.sensitivityThreshold)||(h=!0)}u[p]=v,s[p]=r.collection(m)}}d++}return s},"kMeans"),Cit=o(function(t){var r=this.cy(),i=this.nodes(),n=null,a=TP(t),s=new Array(a.k),l,u={},h,d=new Array(a.k);a.testMode?typeof a.testCentroids=="number"||(Wn(a.testCentroids)==="object"?l=a.testCentroids:l=Ufe(i,a.k)):l=Ufe(i,a.k);for(var f=!0,p=0;f&&p<a.maxIterations;){for(var m=0;m<i.length;m++)n=i[m],u[n.id()]=yme(n,l,a.distance,a.attributes,"kMedoids");f=!1;for(var g=0;g<l.length;g++){var y=vme(g,i,u);if(y.length!==0){d[g]=Hfe(l[g],y,a.attributes);for(var v=0;v<y.length;v++)h=Hfe(y[v],y,a.attributes),h<d[g]&&(d[g]=h,l[g]=y[v],f=!0);s[g]=r.collection(y)}}p++}return s},"kMedoids"),kit=o(function(t,r,i,n,a){for(var s,l,u=0;u<r.length;u++)for(var h=0;h<t.length;h++)n[u][h]=Math.pow(i[u][h],a.m);for(var d=0;d<t.length;d++)for(var f=0;f<a.attributes.length;f++){s=0,l=0;for(var p=0;p<r.length;p++)s+=n[p][d]*a.attributes[f](r[p]),l+=n[p][d];t[d][f]=s/l}},"updateCentroids"),wit=o(function(t,r,i,n,a){for(var s=0;s<t.length;s++)r[s]=t[s].slice();for(var l,u,h,d=2/(a.m-1),f=0;f<i.length;f++)for(var p=0;p<n.length;p++){l=0;for(var m=0;m<i.length;m++)u=$3(a.distance,n[p],i[f],a.attributes,"cmeans"),h=$3(a.distance,n[p],i[m],a.attributes,"cmeans"),l+=Math.pow(u/h,d);t[p][f]=1/l}},"updateMembership"),Sit=o(function(t,r,i,n){for(var a=new Array(i.k),s=0;s<a.length;s++)a[s]=[];for(var l,u,h=0;h<r.length;h++){l=-1/0,u=-1;for(var d=0;d<r[0].length;d++)r[h][d]>l&&(l=r[h][d],u=d);a[u].push(t[h])}for(var f=0;f<a.length;f++)a[f]=n.collection(a[f]);return a},"assign"),Yfe=o(function(t){var r=this.cy(),i=this.nodes(),n=TP(t),a,s,l,u,h;u=new Array(i.length);for(var d=0;d<i.length;d++)u[d]=new Array(n.k);l=new Array(i.length);for(var f=0;f<i.length;f++)l[f]=new Array(n.k);for(var p=0;p<i.length;p++){for(var m=0,g=0;g<n.k;g++)l[p][g]=Math.random(),m+=l[p][g];for(var y=0;y<n.k;y++)l[p][y]=l[p][y]/m}s=new Array(n.k);for(var v=0;v<n.k;v++)s[v]=new Array(n.attributes.length);h=new Array(i.length);for(var x=0;x<i.length;x++)h[x]=new Array(n.k);for(var b=!0,T=0;b&&T<n.maxIterations;)b=!1,kit(s,i,l,h,n),wit(l,u,s,i,n),xit(l,u,n.sensitivityThreshold)||(b=!0),T++;return a=Sit(i,l,n,r),{clusters:a,degreeOfMembership:l}},"fuzzyCMeans"),Eit={kMeans:Tit,kMedoids:Cit,fuzzyCMeans:Yfe,fcm:Yfe},Ait=va({distance:"euclidean",linkage:"min",mode:"threshold",threshold:1/0,addDendrogram:!1,dendrogramDepth:0,attributes:[]}),_it={single:"min",complete:"max"},Dit=o(function(t){var r=Ait(t),i=_it[r.linkage];return i!=null&&(r.linkage=i),r},"setOptions"),jfe=o(function(t,r,i,n,a){for(var s=0,l=1/0,u,h=a.attributes,d=o(function(N,P){return Z3(a.distance,h.length,function(I){return h[I](N)},function(I){return h[I](P)},N,P)},"getDist"),f=0;f<t.length;f++){var p=t[f].key,m=i[p][n[p]];m<l&&(s=p,l=m)}if(a.mode==="threshold"&&l>=a.threshold||a.mode==="dendrogram"&&t.length===1)return!1;var g=r[s],y=r[n[s]],v;a.mode==="dendrogram"?v={left:g,right:y,key:g.key}:v={value:g.value.concat(y.value),key:g.key},t[g.index]=v,t.splice(y.index,1),r[g.key]=v;for(var x=0;x<t.length;x++){var b=t[x];g.key===b.key?u=1/0:a.linkage==="min"?(u=i[g.key][b.key],i[g.key][b.key]>i[y.key][b.key]&&(u=i[y.key][b.key])):a.linkage==="max"?(u=i[g.key][b.key],i[g.key][b.key]<i[y.key][b.key]&&(u=i[y.key][b.key])):a.linkage==="mean"?u=(i[g.key][b.key]*g.size+i[y.key][b.key]*y.size)/(g.size+y.size):a.mode==="dendrogram"?u=d(b.value,g.value):u=d(b.value[0],g.value[0]),i[g.key][b.key]=i[b.key][g.key]=u}for(var T=0;T<t.length;T++){var w=t[T].key;if(n[w]===g.key||n[w]===y.key){for(var C=w,k=0;k<t.length;k++){var E=t[k].key;i[w][E]<i[w][C]&&(C=E)}n[w]=C}t[T].index=T}return g.key=y.key=g.index=y.index=null,!0},"mergeClosest"),l1=o(function(t,r,i){t&&(t.value?r.push(t.value):(t.left&&l1(t.left,r),t.right&&l1(t.right,r)))},"getAllChildren"),jO=o(function(t,r){if(!t)return"";if(t.left&&t.right){var i=jO(t.left,r),n=jO(t.right,r),a=r.add({group:"nodes",data:{id:i+","+n}});return r.add({group:"edges",data:{source:i,target:a.id()}}),r.add({group:"edges",data:{source:n,target:a.id()}}),a.id()}else if(t.value)return t.value.id()},"buildDendrogram"),XO=o(function(t,r,i){if(!t)return[];var n=[],a=[],s=[];return r===0?(t.left&&l1(t.left,n),t.right&&l1(t.right,a),s=n.concat(a),[i.collection(s)]):r===1?t.value?[i.collection(t.value)]:(t.left&&l1(t.left,n),t.right&&l1(t.right,a),[i.collection(n),i.collection(a)]):t.value?[i.collection(t.value)]:(t.left&&(n=XO(t.left,r-1,i)),t.right&&(a=XO(t.right,r-1,i)),n.concat(a))},"buildClustersFromTree"),Xfe=o(function(t){for(var r=this.cy(),i=this.nodes(),n=Dit(t),a=n.attributes,s=o(function(T,w){return Z3(n.distance,a.length,function(C){return a[C](T)},function(C){return a[C](w)},T,w)},"getDist"),l=[],u=[],h=[],d=[],f=0;f<i.length;f++){var p={value:n.mode==="dendrogram"?i[f]:[i[f]],key:f,index:f};l[f]=p,d[f]=p,u[f]=[],h[f]=0}for(var m=0;m<l.length;m++)for(var g=0;g<=m;g++){var y=void 0;n.mode==="dendrogram"?y=m===g?1/0:s(l[m].value,l[g].value):y=m===g?1/0:s(l[m].value[0],l[g].value[0]),u[m][g]=y,u[g][m]=y,y<u[m][h[m]]&&(h[m]=g)}for(var v=jfe(l,d,u,h,n);v;)v=jfe(l,d,u,h,n);var x;return n.mode==="dendrogram"?(x=XO(l[0],n.dendrogramDepth,r),n.addDendrogram&&jO(l[0],r)):(x=new Array(l.length),l.forEach(function(b,T){b.key=b.index=null,x[T]=r.collection(b.value)})),x},"hierarchicalClustering"),Rit={hierarchicalClustering:Xfe,hca:Xfe},Lit=va({distance:"euclidean",preference:"median",damping:.8,maxIterations:1e3,minIterations:100,attributes:[]}),Mit=o(function(t){var r=t.damping,i=t.preference;.5<=r&&r<1||Yi("Damping must range on [0.5, 1).  Got: ".concat(r));var n=["median","mean","min","max"];return n.some(function(a){return a===i})||Ot(i)||Yi("Preference must be one of [".concat(n.map(function(a){return"'".concat(a,"'")}).join(", "),"] or a number.  Got: ").concat(i)),Lit(t)},"setOptions"),Nit=o(function(t,r,i,n){var a=o(function(l,u){return n[u](l)},"attr");return-Z3(t,n.length,function(s){return a(r,s)},function(s){return a(i,s)},r,i)},"getSimilarity"),Iit=o(function(t,r){var i=null;return r==="median"?i=Mrt(t):r==="mean"?i=Lrt(t):r==="min"?i=Drt(t):r==="max"?i=Rrt(t):i=r,i},"getPreference"),Oit=o(function(t,r,i){for(var n=[],a=0;a<t;a++)r[a*t+a]+i[a*t+a]>0&&n.push(a);return n},"findExemplars"),Kfe=o(function(t,r,i){for(var n=[],a=0;a<t;a++){for(var s=-1,l=-1/0,u=0;u<i.length;u++){var h=i[u];r[a*t+h]>l&&(s=h,l=r[a*t+h])}s>0&&n.push(s)}for(var d=0;d<i.length;d++)n[i[d]]=i[d];return n},"assignClusters"),Pit=o(function(t,r,i){for(var n=Kfe(t,r,i),a=0;a<i.length;a++){for(var s=[],l=0;l<n.length;l++)n[l]===i[a]&&s.push(l);for(var u=-1,h=-1/0,d=0;d<s.length;d++){for(var f=0,p=0;p<s.length;p++)f+=r[s[p]*t+s[d]];f>h&&(u=d,h=f)}i[a]=s[u]}return n=Kfe(t,r,i),n},"assign"),Zfe=o(function(t){for(var r=this.cy(),i=this.nodes(),n=Mit(t),a={},s=0;s<i.length;s++)a[i[s].id()]=s;var l,u,h,d,f,p;l=i.length,u=l*l,h=new Array(u);for(var m=0;m<u;m++)h[m]=-1/0;for(var g=0;g<l;g++)for(var y=0;y<l;y++)g!==y&&(h[g*l+y]=Nit(n.distance,i[g],i[y],n.attributes));d=Iit(h,n.preference);for(var v=0;v<l;v++)h[v*l+v]=d;f=new Array(u);for(var x=0;x<u;x++)f[x]=0;p=new Array(u);for(var b=0;b<u;b++)p[b]=0;for(var T=new Array(l),w=new Array(l),C=new Array(l),k=0;k<l;k++)T[k]=0,w[k]=0,C[k]=0;for(var E=new Array(l*n.minIterations),A=0;A<E.length;A++)E[A]=0;var N;for(N=0;N<n.maxIterations;N++){for(var P=0;P<l;P++){for(var I=-1/0,D=-1/0,_=-1,R=0,M=0;M<l;M++)T[M]=f[P*l+M],R=p[P*l+M]+h[P*l+M],R>=I?(D=I,I=R,_=M):R>D&&(D=R);for(var L=0;L<l;L++)f[P*l+L]=(1-n.damping)*(h[P*l+L]-I)+n.damping*T[L];f[P*l+_]=(1-n.damping)*(h[P*l+_]-D)+n.damping*T[_]}for(var B=0;B<l;B++){for(var O=0,$=0;$<l;$++)T[$]=p[$*l+B],w[$]=Math.max(0,f[$*l+B]),O+=w[$];O-=w[B],w[B]=f[B*l+B],O+=w[B];for(var G=0;G<l;G++)p[G*l+B]=(1-n.damping)*Math.min(0,O-w[G])+n.damping*T[G];p[B*l+B]=(1-n.damping)*(O-w[B])+n.damping*T[B]}for(var F=0,V=0;V<l;V++){var H=p[V*l+V]+f[V*l+V]>0?1:0;E[N%n.minIterations*l+V]=H,F+=H}if(F>0&&(N>=n.minIterations-1||N==n.maxIterations-1)){for(var j=0,U=0;U<l;U++){C[U]=0;for(var Q=0;Q<n.minIterations;Q++)C[U]+=E[Q*l+U];(C[U]===0||C[U]===n.minIterations)&&j++}if(j===l)break}}for(var Y=Oit(l,f,p),ae=Pit(l,h,Y),J={},te=0;te<Y.length;te++)J[Y[te]]=[];for(var re=0;re<i.length;re++){var ee=a[i[re].id()],Te=ae[ee];Te!=null&&J[Te].push(i[re])}for(var ue=new Array(Y.length),De=0;De<Y.length;De++)ue[De]=r.collection(J[Y[De]]);return ue},"affinityPropagation"),Bit={affinityPropagation:Zfe,ap:Zfe},Fit=va({root:void 0,directed:!1}),$it={hierholzer:o(function(t){if(!Xr(t)){var r=arguments;t={root:r[0],directed:r[1]}}var i=Fit(t),n=i.root,a=i.directed,s=this,l=!1,u,h,d;n&&(d=sr(n)?this.filter(n)[0].id():n[0].id());var f={},p={};a?s.forEach(function(b){var T=b.id();if(b.isNode()){var w=b.indegree(!0),C=b.outdegree(!0),k=w-C,E=C-w;k==1?u?l=!0:u=T:E==1?h?l=!0:h=T:(E>1||k>1)&&(l=!0),f[T]=[],b.outgoers().forEach(function(A){A.isEdge()&&f[T].push(A.id())})}else p[T]=[void 0,b.target().id()]}):s.forEach(function(b){var T=b.id();if(b.isNode()){var w=b.degree(!0);w%2&&(u?h?l=!0:h=T:u=T),f[T]=[],b.connectedEdges().forEach(function(C){return f[T].push(C.id())})}else p[T]=[b.source().id(),b.target().id()]});var m={found:!1,trail:void 0};if(l)return m;if(h&&u)if(a){if(d&&h!=d)return m;d=h}else{if(d&&h!=d&&u!=d)return m;d||(d=h)}else d||(d=s[0].id());var g=o(function(T){for(var w=T,C=[T],k,E,A;f[w].length;)k=f[w].shift(),E=p[k][0],A=p[k][1],w!=A?(f[A]=f[A].filter(function(N){return N!=k}),w=A):!a&&w!=E&&(f[E]=f[E].filter(function(N){return N!=k}),w=E),C.unshift(k),C.unshift(w);return C},"walk"),y=[],v=[];for(v=g(d);v.length!=1;)f[v[0]].length==0?(y.unshift(s.getElementById(v.shift())),y.unshift(s.getElementById(v.shift()))):v=g(v.shift()).concat(v);y.unshift(s.getElementById(v.shift()));for(var x in f)if(f[x].length)return m;return m.found=!0,m.trail=this.spawn(y,!0),m},"hierholzer")},f3=o(function(){var t=this,r={},i=0,n=0,a=[],s=[],l={},u=o(function(p,m){for(var g=s.length-1,y=[],v=t.spawn();s[g].x!=p||s[g].y!=m;)y.push(s.pop().edge),g--;y.push(s.pop().edge),y.forEach(function(x){var b=x.connectedNodes().intersection(t);v.merge(x),b.forEach(function(T){var w=T.id(),C=T.connectedEdges().intersection(t);v.merge(T),r[w].cutVertex?v.merge(C.filter(function(k){return k.isLoop()})):v.merge(C)})}),a.push(v)},"buildComponent"),h=o(function(p,m,g){p===g&&(n+=1),r[m]={id:i,low:i++,cutVertex:!1};var y=t.getElementById(m).connectedEdges().intersection(t);if(y.size()===0)a.push(t.spawn(t.getElementById(m)));else{var v,x,b,T;y.forEach(function(w){v=w.source().id(),x=w.target().id(),b=v===m?x:v,b!==g&&(T=w.id(),l[T]||(l[T]=!0,s.push({x:m,y:b,edge:w})),b in r?r[m].low=Math.min(r[m].low,r[b].id):(h(p,b,m),r[m].low=Math.min(r[m].low,r[b].low),r[m].id<=r[b].low&&(r[m].cutVertex=!0,u(m,b))))})}},"biconnectedSearch");t.forEach(function(f){if(f.isNode()){var p=f.id();p in r||(n=0,h(p,p),r[p].cutVertex=n>1)}});var d=Object.keys(r).filter(function(f){return r[f].cutVertex}).map(function(f){return t.getElementById(f)});return{cut:t.spawn(d),components:a}},"hopcroftTarjanBiconnected"),zit={hopcroftTarjanBiconnected:f3,htbc:f3,htb:f3,hopcroftTarjanBiconnectedComponents:f3},p3=o(function(){var t=this,r={},i=0,n=[],a=[],s=t.spawn(t),l=o(function(h){a.push(h),r[h]={index:i,low:i++,explored:!1};var d=t.getElementById(h).connectedEdges().intersection(t);if(d.forEach(function(y){var v=y.target().id();v!==h&&(v in r||l(v),r[v].explored||(r[h].low=Math.min(r[h].low,r[v].low)))}),r[h].index===r[h].low){for(var f=t.spawn();;){var p=a.pop();if(f.merge(t.getElementById(p)),r[p].low=r[h].index,r[p].explored=!0,p===h)break}var m=f.edgesWith(f),g=f.merge(m);n.push(g),s=s.difference(g)}},"stronglyConnectedSearch");return t.forEach(function(u){if(u.isNode()){var h=u.id();h in r||l(h)}}),{cut:s,components:n}},"tarjanStronglyConnected"),Git={tarjanStronglyConnected:p3,tsc:p3,tscc:p3,tarjanStronglyConnectedComponents:p3},xme={};[jb,yrt,vrt,brt,Crt,wrt,Art,eit,h1,d1,YO,fit,Eit,Rit,Bit,$it,zit,Git].forEach(function(e){hr(xme,e)});bme=0,Tme=1,Cme=2,$l=o(function(t){if(!(this instanceof $l))return new $l(t);this.id="Thenable/1.0.7",this.state=bme,this.fulfillValue=void 0,this.rejectReason=void 0,this.onFulfilled=[],this.onRejected=[],this.proxy={then:this.then.bind(this)},typeof t=="function"&&t.call(this,this.fulfill.bind(this),this.reject.bind(this))},"api");$l.prototype={fulfill:o(function(t){return Qfe(this,Tme,"fulfillValue",t)},"fulfill"),reject:o(function(t){return Qfe(this,Cme,"rejectReason",t)},"reject"),then:o(function(t,r){var i=this,n=new $l;return i.onFulfilled.push(epe(t,n,"fulfill")),i.onRejected.push(epe(r,n,"reject")),kme(i),n.proxy},"then")};Qfe=o(function(t,r,i,n){return t.state===bme&&(t.state=r,t[i]=n,kme(t)),t},"deliver"),kme=o(function(t){t.state===Tme?Jfe(t,"onFulfilled",t.fulfillValue):t.state===Cme&&Jfe(t,"onRejected",t.rejectReason)},"execute"),Jfe=o(function(t,r,i){if(t[r].length!==0){var n=t[r];t[r]=[];var a=o(function(){for(var l=0;l<n.length;l++)n[l](i)},"func");typeof setImmediate=="function"?setImmediate(a):setTimeout(a,0)}},"execute_handlers"),epe=o(function(t,r,i){return function(n){if(typeof t!="function")r[i].call(r,n);else{var a;try{a=t(n)}catch(s){r.reject(s);return}wme(r,a)}}},"resolver"),wme=o(function(t,r){if(t===r||t.proxy===r){t.reject(new TypeError("cannot resolve promise with itself"));return}var i;if(Wn(r)==="object"&&r!==null||typeof r=="function")try{i=r.then}catch(a){t.reject(a);return}if(typeof i=="function"){var n=!1;try{i.call(r,function(a){n||(n=!0,a===r?t.reject(new TypeError("circular thenable chain")):wme(t,a))},function(a){n||(n=!0,t.reject(a))})}catch(a){n||t.reject(a)}return}t.fulfill(r)},"resolve");$l.all=function(e){return new $l(function(t,r){for(var i=new Array(e.length),n=0,a=o(function(u,h){i[u]=h,n++,n===e.length&&t(i)},"fulfill"),s=0;s<e.length;s++)(function(l){var u=e[l],h=u!=null&&u.then!=null;if(h)u.then(function(f){a(l,f)},function(f){r(f)});else{var d=u;a(l,d)}})(s)})};$l.resolve=function(e){return new $l(function(t,r){t(e)})};$l.reject=function(e){return new $l(function(t,r){r(e)})};v1=typeof Promise<"u"?Promise:$l,KO=o(function(t,r,i){var n=hP(t),a=!n,s=this._private=hr({duration:1e3},r,i);if(s.target=t,s.style=s.style||s.css,s.started=!1,s.playing=!1,s.hooked=!1,s.applying=!1,s.progress=0,s.completes=[],s.frames=[],s.complete&&Ji(s.complete)&&s.completes.push(s.complete),a){var l=t.position();s.startPosition=s.startPosition||{x:l.x,y:l.y},s.startStyle=s.startStyle||t.cy().style().getAnimationStartStyle(t,s.style)}if(n){var u=t.pan();s.startPan={x:u.x,y:u.y},s.startZoom=t.zoom()}this.length=1,this[0]=this},"Animation"),t0=KO.prototype;hr(t0,{instanceString:o(function(){return"animation"},"instanceString"),hook:o(function(){var t=this._private;if(!t.hooked){var r,i=t.target._private.animation;t.queue?r=i.queue:r=i.current,r.push(this),uo(t.target)&&t.target.cy().addToAnimationPool(t.target),t.hooked=!0}return this},"hook"),play:o(function(){var t=this._private;return t.progress===1&&(t.progress=0),t.playing=!0,t.started=!1,t.stopped=!1,this.hook(),this},"play"),playing:o(function(){return this._private.playing},"playing"),apply:o(function(){var t=this._private;return t.applying=!0,t.started=!1,t.stopped=!1,this.hook(),this},"apply"),applying:o(function(){return this._private.applying},"applying"),pause:o(function(){var t=this._private;return t.playing=!1,t.started=!1,this},"pause"),stop:o(function(){var t=this._private;return t.playing=!1,t.started=!1,t.stopped=!0,this},"stop"),rewind:o(function(){return this.progress(0)},"rewind"),fastforward:o(function(){return this.progress(1)},"fastforward"),time:o(function(t){var r=this._private;return t===void 0?r.progress*r.duration:this.progress(t/r.duration)},"time"),progress:o(function(t){var r=this._private,i=r.playing;return t===void 0?r.progress:(i&&this.pause(),r.progress=t,r.started=!1,i&&this.play(),this)},"progress"),completed:o(function(){return this._private.progress===1},"completed"),reverse:o(function(){var t=this._private,r=t.playing;r&&this.pause(),t.progress=1-t.progress,t.started=!1;var i=o(function(h,d){var f=t[h];f!=null&&(t[h]=t[d],t[d]=f)},"swap");if(i("zoom","startZoom"),i("pan","startPan"),i("position","startPosition"),t.style)for(var n=0;n<t.style.length;n++){var a=t.style[n],s=a.name,l=t.startStyle[s];t.startStyle[s]=a,t.style[n]=l}return r&&this.play(),this},"reverse"),promise:o(function(t){var r=this._private,i;switch(t){case"frame":i=r.frames;break;default:case"complete":case"completed":i=r.completes}return new v1(function(n,a){i.push(function(){n()})})},"promise")});t0.complete=t0.completed;t0.run=t0.play;t0.running=t0.playing;Vit={animated:o(function(){return o(function(){var r=this,i=r.length!==void 0,n=i?r:[r],a=this._private.cy||this;if(!a.styleEnabled())return!1;var s=n[0];if(s)return s._private.animation.current.length>0},"animatedImpl")},"animated"),clearQueue:o(function(){return o(function(){var r=this,i=r.length!==void 0,n=i?r:[r],a=this._private.cy||this;if(!a.styleEnabled())return this;for(var s=0;s<n.length;s++){var l=n[s];l._private.animation.queue=[]}return this},"clearQueueImpl")},"clearQueue"),delay:o(function(){return o(function(r,i){var n=this._private.cy||this;return n.styleEnabled()?this.animate({delay:r,duration:r,complete:i}):this},"delayImpl")},"delay"),delayAnimation:o(function(){return o(function(r,i){var n=this._private.cy||this;return n.styleEnabled()?this.animation({delay:r,duration:r,complete:i}):this},"delayAnimationImpl")},"delayAnimation"),animation:o(function(){return o(function(r,i){var n=this,a=n.length!==void 0,s=a?n:[n],l=this._private.cy||this,u=!a,h=!u;if(!l.styleEnabled())return this;var d=l.style();r=hr({},r,i);var f=Object.keys(r).length===0;if(f)return new KO(s[0],r);switch(r.duration===void 0&&(r.duration=400),r.duration){case"slow":r.duration=600;break;case"fast":r.duration=200;break}if(h&&(r.style=d.getPropsList(r.style||r.css),r.css=void 0),h&&r.renderedPosition!=null){var p=r.renderedPosition,m=l.pan(),g=l.zoom();r.position=cme(p,g,m)}if(u&&r.panBy!=null){var y=r.panBy,v=l.pan();r.pan={x:v.x+y.x,y:v.y+y.y}}var x=r.center||r.centre;if(u&&x!=null){var b=l.getCenterPan(x.eles,r.zoom);b!=null&&(r.pan=b)}if(u&&r.fit!=null){var T=r.fit,w=l.getFitViewport(T.eles||T.boundingBox,T.padding);w!=null&&(r.pan=w.pan,r.zoom=w.zoom)}if(u&&Xr(r.zoom)){var C=l.getZoomedViewport(r.zoom);C!=null?(C.zoomed&&(r.zoom=C.zoom),C.panned&&(r.pan=C.pan)):r.zoom=null}return new KO(s[0],r)},"animationImpl")},"animation"),animate:o(function(){return o(function(r,i){var n=this,a=n.length!==void 0,s=a?n:[n],l=this._private.cy||this;if(!l.styleEnabled())return this;i&&(r=hr({},r,i));for(var u=0;u<s.length;u++){var h=s[u],d=h.animated()&&(r.queue===void 0||r.queue),f=h.animation(r,d?{queue:!0}:void 0);f.play()}return this},"animateImpl")},"animate"),stop:o(function(){return o(function(r,i){var n=this,a=n.length!==void 0,s=a?n:[n],l=this._private.cy||this;if(!l.styleEnabled())return this;for(var u=0;u<s.length;u++){for(var h=s[u],d=h._private,f=d.animation.current,p=0;p<f.length;p++){var m=f[p],g=m._private;i&&(g.duration=0)}r&&(d.animation.queue=[]),i||(d.animation.current=[])}return l.notify("draw"),this},"stopImpl")},"stop")};o(Q3,"requireIsArray");o(Wit,"require_isKey");o(qit,"requireIsFunction");o(Uit,"require_coreJsData");o(Hit,"require_isMasked");o(Yit,"require_toSource");o(jit,"require_baseIsNative");o(Xit,"require_getValue");o(CP,"require_getNative");o(J3,"require_nativeCreate");o(Kit,"require_hashClear");o(Zit,"require_hashDelete");o(Qit,"require_hashGet");o(Jit,"require_hashHas");o(ent,"require_hashSet");o(tnt,"require_Hash");o(rnt,"require_listCacheClear");o(Sme,"requireEq");o(eE,"require_assocIndexOf");o(int,"require_listCacheDelete");o(nnt,"require_listCacheGet");o(ant,"require_listCacheHas");o(snt,"require_listCacheSet");o(ont,"require_ListCache");o(lnt,"require_Map");o(cnt,"require_mapCacheClear");o(unt,"require_isKeyable");o(tE,"require_getMapData");o(hnt,"require_mapCacheDelete");o(dnt,"require_mapCacheGet");o(fnt,"require_mapCacheHas");o(pnt,"require_mapCacheSet");o(mnt,"require_MapCache");o(gnt,"requireMemoize");o(ynt,"require_memoizeCapped");o(Eme,"require_stringToPath");o(Ame,"require_arrayMap");o(vnt,"require_baseToString");o(_me,"requireToString");o(Dme,"require_castPath");o(kP,"require_toKey");o(xnt,"require_baseGet");o(bnt,"requireGet");Tnt=bnt(),Cnt=n2(Tnt);o(knt,"require_defineProperty");o(wnt,"require_baseAssignValue");o(Snt,"require_assignValue");o(Ent,"require_isIndex");o(Ant,"require_baseSet");o(_nt,"requireSet");Dnt=_nt(),Rnt=n2(Dnt);o(Lnt,"require_copyArray");o(Mnt,"requireToPath");Nnt=Mnt(),Int=n2(Nnt),Ont={data:o(function(t){var r={field:"data",bindingEvent:"data",allowBinding:!1,allowSetting:!1,allowGetting:!1,settingEvent:"data",settingTriggersEvent:!1,triggerFnName:"trigger",immutableKeys:{},updateStyle:!1,beforeGet:o(function(n){},"beforeGet"),beforeSet:o(function(n,a){},"beforeSet"),onSet:o(function(n){},"onSet"),canSet:o(function(n){return!0},"canSet")};return t=hr({},r,t),o(function(n,a){var s=t,l=this,u=l.length!==void 0,h=u?l:[l],d=u?l[0]:l;if(sr(n)){var f=n.indexOf(".")!==-1,p=f&&Int(n);if(s.allowGetting&&a===void 0){var m;return d&&(s.beforeGet(d),p&&d._private[s.field][n]===void 0?m=Cnt(d._private[s.field],p):m=d._private[s.field][n]),m}else if(s.allowSetting&&a!==void 0){var g=!s.immutableKeys[n];if(g){var y=q0e({},n,a);s.beforeSet(l,y);for(var v=0,x=h.length;v<x;v++){var b=h[v];s.canSet(b)&&(p&&d._private[s.field][n]===void 0?Rnt(b._private[s.field],p,a):b._private[s.field][n]=a)}s.updateStyle&&l.updateStyle(),s.onSet(l),s.settingTriggersEvent&&l[s.triggerFnName](s.settingEvent)}}}else if(s.allowSetting&&Xr(n)){var T=n,w,C,k=Object.keys(T);s.beforeSet(l,T);for(var E=0;E<k.length;E++){w=k[E],C=T[w];var A=!s.immutableKeys[w];if(A)for(var N=0;N<h.length;N++){var P=h[N];s.canSet(P)&&(P._private[s.field][w]=C)}}s.updateStyle&&l.updateStyle(),s.onSet(l),s.settingTriggersEvent&&l[s.triggerFnName](s.settingEvent)}else if(s.allowBinding&&Ji(n)){var I=n;l.on(s.bindingEvent,I)}else if(s.allowGetting&&n===void 0){var D;return d&&(s.beforeGet(d),D=d._private[s.field]),D}return l},"dataImpl")},"data"),removeData:o(function(t){var r={field:"data",event:"data",triggerFnName:"trigger",triggerEvent:!1,immutableKeys:{}};return t=hr({},r,t),o(function(n){var a=t,s=this,l=s.length!==void 0,u=l?s:[s];if(sr(n)){for(var h=n.split(/\s+/),d=h.length,f=0;f<d;f++){var p=h[f];if(!qd(p)){var m=!a.immutableKeys[p];if(m)for(var g=0,y=u.length;g<y;g++)u[g]._private[a.field][p]=void 0}}a.triggerEvent&&s[a.triggerFnName](a.event)}else if(n===void 0){for(var v=0,x=u.length;v<x;v++)for(var b=u[v]._private[a.field],T=Object.keys(b),w=0;w<T.length;w++){var C=T[w],k=!a.immutableKeys[C];k&&(b[C]=void 0)}a.triggerEvent&&s[a.triggerFnName](a.event)}return s},"removeDataImpl")},"removeData")},Pnt={eventAliasesOn:o(function(t){var r=t;r.addListener=r.listen=r.bind=r.on,r.unlisten=r.unbind=r.off=r.removeListener,r.trigger=r.emit,r.pon=r.promiseOn=function(i,n){var a=this,s=Array.prototype.slice.call(arguments,0);return new v1(function(l,u){var h=o(function(m){a.off.apply(a,f),l(m)},"callback"),d=s.concat([h]),f=d.concat([]);a.on.apply(a,d)})}},"eventAliasesOn")},hi={};[Vit,Ont,Pnt].forEach(function(e){hr(hi,e)});Bnt={animate:hi.animate(),animation:hi.animation(),animated:hi.animated(),clearQueue:hi.clearQueue(),delay:hi.delay(),delayAnimation:hi.delayAnimation(),stop:hi.stop()},S3={classes:o(function(t){var r=this;if(t===void 0){var i=[];return r[0]._private.classes.forEach(function(g){return i.push(g)}),i}else Si(t)||(t=(t||"").match(/\S+/g)||[]);for(var n=[],a=new y1(t),s=0;s<r.length;s++){for(var l=r[s],u=l._private,h=u.classes,d=!1,f=0;f<t.length;f++){var p=t[f],m=h.has(p);if(!m){d=!0;break}}d||(d=h.size!==t.length),d&&(u.classes=a,n.push(l))}return n.length>0&&this.spawn(n).updateStyle().emit("class"),r},"classes"),addClass:o(function(t){return this.toggleClass(t,!0)},"addClass"),hasClass:o(function(t){var r=this[0];return r!=null&&r._private.classes.has(t)},"hasClass"),toggleClass:o(function(t,r){Si(t)||(t=t.match(/\S+/g)||[]);for(var i=this,n=r===void 0,a=[],s=0,l=i.length;s<l;s++)for(var u=i[s],h=u._private.classes,d=!1,f=0;f<t.length;f++){var p=t[f],m=h.has(p),g=!1;r||n&&!m?(h.add(p),g=!0):(!r||n&&m)&&(h.delete(p),g=!0),!d&&g&&(a.push(u),d=!0)}return a.length>0&&this.spawn(a).updateStyle().emit("class"),i},"toggleClass"),removeClass:o(function(t){return this.toggleClass(t,!1)},"removeClass"),flashClass:o(function(t,r){var i=this;if(r==null)r=250;else if(r===0)return i;return i.addClass(t),setTimeout(function(){i.removeClass(t)},r),i},"flashClass")};S3.className=S3.classNames=S3.classes;jr={metaChar:"[\\!\\\"\\#\\$\\%\\&\\'\\(\\)\\*\\+\\,\\.\\/\\:\\;\\<\\=\\>\\?\\@\\[\\]\\^\\`\\{\\|\\}\\~]",comparatorOp:"=|\\!=|>|>=|<|<=|\\$=|\\^=|\\*=",boolOp:"\\?|\\!|\\^",string:`"(?:\\\\"|[^"])*"|'(?:\\\\'|[^'])*'`,number:Vn,meta:"degree|indegree|outdegree",separator:"\\s*,\\s*",descendant:"\\s+",child:"\\s+>\\s+",subject:"\\$",group:"node|edge|\\*",directedEdge:"\\s+->\\s+",undirectedEdge:"\\s+<->\\s+"};jr.variable="(?:[\\w-.]|(?:\\\\"+jr.metaChar+"))+";jr.className="(?:[\\w-]|(?:\\\\"+jr.metaChar+"))+";jr.value=jr.string+"|"+jr.number;jr.id=jr.variable;(function(){var e,t,r;for(e=jr.comparatorOp.split("|"),r=0;r<e.length;r++)t=e[r],jr.comparatorOp+="|@"+t;for(e=jr.comparatorOp.split("|"),r=0;r<e.length;r++)t=e[r],!(t.indexOf("!")>=0)&&t!=="="&&(jr.comparatorOp+="|\\!"+t)})();xi=o(function(){return{checks:[]}},"newQuery"),Yt={GROUP:0,COLLECTION:1,FILTER:2,DATA_COMPARE:3,DATA_EXIST:4,DATA_BOOL:5,META_COMPARE:6,STATE:7,ID:8,CLASS:9,UNDIRECTED_EDGE:10,DIRECTED_EDGE:11,NODE_SOURCE:12,NODE_TARGET:13,NODE_NEIGHBOR:14,CHILD:15,DESCENDANT:16,PARENT:17,ANCESTOR:18,COMPOUND_SPLIT:19,TRUE:20},ZO=[{selector:":selected",matches:o(function(t){return t.selected()},"matches")},{selector:":unselected",matches:o(function(t){return!t.selected()},"matches")},{selector:":selectable",matches:o(function(t){return t.selectable()},"matches")},{selector:":unselectable",matches:o(function(t){return!t.selectable()},"matches")},{selector:":locked",matches:o(function(t){return t.locked()},"matches")},{selector:":unlocked",matches:o(function(t){return!t.locked()},"matches")},{selector:":visible",matches:o(function(t){return t.visible()},"matches")},{selector:":hidden",matches:o(function(t){return!t.visible()},"matches")},{selector:":transparent",matches:o(function(t){return t.transparent()},"matches")},{selector:":grabbed",matches:o(function(t){return t.grabbed()},"matches")},{selector:":free",matches:o(function(t){return!t.grabbed()},"matches")},{selector:":removed",matches:o(function(t){return t.removed()},"matches")},{selector:":inside",matches:o(function(t){return!t.removed()},"matches")},{selector:":grabbable",matches:o(function(t){return t.grabbable()},"matches")},{selector:":ungrabbable",matches:o(function(t){return!t.grabbable()},"matches")},{selector:":animated",matches:o(function(t){return t.animated()},"matches")},{selector:":unanimated",matches:o(function(t){return!t.animated()},"matches")},{selector:":parent",matches:o(function(t){return t.isParent()},"matches")},{selector:":childless",matches:o(function(t){return t.isChildless()},"matches")},{selector:":child",matches:o(function(t){return t.isChild()},"matches")},{selector:":orphan",matches:o(function(t){return t.isOrphan()},"matches")},{selector:":nonorphan",matches:o(function(t){return t.isChild()},"matches")},{selector:":compound",matches:o(function(t){return t.isNode()?t.isParent():t.source().isParent()||t.target().isParent()},"matches")},{selector:":loop",matches:o(function(t){return t.isLoop()},"matches")},{selector:":simple",matches:o(function(t){return t.isSimple()},"matches")},{selector:":active",matches:o(function(t){return t.active()},"matches")},{selector:":inactive",matches:o(function(t){return!t.active()},"matches")},{selector:":backgrounding",matches:o(function(t){return t.backgrounding()},"matches")},{selector:":nonbackgrounding",matches:o(function(t){return!t.backgrounding()},"matches")}].sort(function(e,t){return Ott(e.selector,t.selector)}),Fnt=(function(){for(var e={},t,r=0;r<ZO.length;r++)t=ZO[r],e[t.selector]=t.matches;return e})(),$nt=o(function(t,r){return Fnt[t](r)},"stateSelectorMatches"),znt="("+ZO.map(function(e){return e.selector}).join("|")+")",Jg=o(function(t){return t.replace(new RegExp("\\\\("+jr.metaChar+")","g"),function(r,i){return i})},"cleanMetaChars"),Bd=o(function(t,r,i){t[t.length-1]=i},"replaceLastQuery"),QO=[{name:"group",query:!0,regex:"("+jr.group+")",populate:o(function(t,r,i){var n=Dn(i,1),a=n[0];r.checks.push({type:Yt.GROUP,value:a==="*"?a:a+"s"})},"populate")},{name:"state",query:!0,regex:znt,populate:o(function(t,r,i){var n=Dn(i,1),a=n[0];r.checks.push({type:Yt.STATE,value:a})},"populate")},{name:"id",query:!0,regex:"\\#("+jr.id+")",populate:o(function(t,r,i){var n=Dn(i,1),a=n[0];r.checks.push({type:Yt.ID,value:Jg(a)})},"populate")},{name:"className",query:!0,regex:"\\.("+jr.className+")",populate:o(function(t,r,i){var n=Dn(i,1),a=n[0];r.checks.push({type:Yt.CLASS,value:Jg(a)})},"populate")},{name:"dataExists",query:!0,regex:"\\[\\s*("+jr.variable+")\\s*\\]",populate:o(function(t,r,i){var n=Dn(i,1),a=n[0];r.checks.push({type:Yt.DATA_EXIST,field:Jg(a)})},"populate")},{name:"dataCompare",query:!0,regex:"\\[\\s*("+jr.variable+")\\s*("+jr.comparatorOp+")\\s*("+jr.value+")\\s*\\]",populate:o(function(t,r,i){var n=Dn(i,3),a=n[0],s=n[1],l=n[2],u=new RegExp("^"+jr.string+"$").exec(l)!=null;u?l=l.substring(1,l.length-1):l=parseFloat(l),r.checks.push({type:Yt.DATA_COMPARE,field:Jg(a),operator:s,value:l})},"populate")},{name:"dataBool",query:!0,regex:"\\[\\s*("+jr.boolOp+")\\s*("+jr.variable+")\\s*\\]",populate:o(function(t,r,i){var n=Dn(i,2),a=n[0],s=n[1];r.checks.push({type:Yt.DATA_BOOL,field:Jg(s),operator:a})},"populate")},{name:"metaCompare",query:!0,regex:"\\[\\[\\s*("+jr.meta+")\\s*("+jr.comparatorOp+")\\s*("+jr.number+")\\s*\\]\\]",populate:o(function(t,r,i){var n=Dn(i,3),a=n[0],s=n[1],l=n[2];r.checks.push({type:Yt.META_COMPARE,field:Jg(a),operator:s,value:parseFloat(l)})},"populate")},{name:"nextQuery",separator:!0,regex:jr.separator,populate:o(function(t,r){var i=t.currentSubject,n=t.edgeCount,a=t.compoundCount,s=t[t.length-1];i!=null&&(s.subject=i,t.currentSubject=null),s.edgeCount=n,s.compoundCount=a,t.edgeCount=0,t.compoundCount=0;var l=t[t.length++]=xi();return l},"populate")},{name:"directedEdge",separator:!0,regex:jr.directedEdge,populate:o(function(t,r){if(t.currentSubject==null){var i=xi(),n=r,a=xi();return i.checks.push({type:Yt.DIRECTED_EDGE,source:n,target:a}),Bd(t,r,i),t.edgeCount++,a}else{var s=xi(),l=r,u=xi();return s.checks.push({type:Yt.NODE_SOURCE,source:l,target:u}),Bd(t,r,s),t.edgeCount++,u}},"populate")},{name:"undirectedEdge",separator:!0,regex:jr.undirectedEdge,populate:o(function(t,r){if(t.currentSubject==null){var i=xi(),n=r,a=xi();return i.checks.push({type:Yt.UNDIRECTED_EDGE,nodes:[n,a]}),Bd(t,r,i),t.edgeCount++,a}else{var s=xi(),l=r,u=xi();return s.checks.push({type:Yt.NODE_NEIGHBOR,node:l,neighbor:u}),Bd(t,r,s),u}},"populate")},{name:"child",separator:!0,regex:jr.child,populate:o(function(t,r){if(t.currentSubject==null){var i=xi(),n=xi(),a=t[t.length-1];return i.checks.push({type:Yt.CHILD,parent:a,child:n}),Bd(t,r,i),t.compoundCount++,n}else if(t.currentSubject===r){var s=xi(),l=t[t.length-1],u=xi(),h=xi(),d=xi(),f=xi();return s.checks.push({type:Yt.COMPOUND_SPLIT,left:l,right:u,subject:h}),h.checks=r.checks,r.checks=[{type:Yt.TRUE}],f.checks.push({type:Yt.TRUE}),u.checks.push({type:Yt.PARENT,parent:f,child:d}),Bd(t,l,s),t.currentSubject=h,t.compoundCount++,d}else{var p=xi(),m=xi(),g=[{type:Yt.PARENT,parent:p,child:m}];return p.checks=r.checks,r.checks=g,t.compoundCount++,m}},"populate")},{name:"descendant",separator:!0,regex:jr.descendant,populate:o(function(t,r){if(t.currentSubject==null){var i=xi(),n=xi(),a=t[t.length-1];return i.checks.push({type:Yt.DESCENDANT,ancestor:a,descendant:n}),Bd(t,r,i),t.compoundCount++,n}else if(t.currentSubject===r){var s=xi(),l=t[t.length-1],u=xi(),h=xi(),d=xi(),f=xi();return s.checks.push({type:Yt.COMPOUND_SPLIT,left:l,right:u,subject:h}),h.checks=r.checks,r.checks=[{type:Yt.TRUE}],f.checks.push({type:Yt.TRUE}),u.checks.push({type:Yt.ANCESTOR,ancestor:f,descendant:d}),Bd(t,l,s),t.currentSubject=h,t.compoundCount++,d}else{var p=xi(),m=xi(),g=[{type:Yt.ANCESTOR,ancestor:p,descendant:m}];return p.checks=r.checks,r.checks=g,t.compoundCount++,m}},"populate")},{name:"subject",modifier:!0,regex:jr.subject,populate:o(function(t,r){if(t.currentSubject!=null&&t.currentSubject!==r)return di("Redefinition of subject in selector `"+t.toString()+"`"),!1;t.currentSubject=r;var i=t[t.length-1],n=i.checks[0],a=n==null?null:n.type;a===Yt.DIRECTED_EDGE?n.type=Yt.NODE_TARGET:a===Yt.UNDIRECTED_EDGE&&(n.type=Yt.NODE_NEIGHBOR,n.node=n.nodes[1],n.neighbor=n.nodes[0],n.nodes=null)},"populate")}];QO.forEach(function(e){return e.regexObj=new RegExp("^"+e.regex)});Gnt=o(function(t){for(var r,i,n,a=0;a<QO.length;a++){var s=QO[a],l=s.name,u=t.match(s.regexObj);if(u!=null){i=u,r=s,n=l;var h=u[0];t=t.substring(h.length);break}}return{expr:r,match:i,name:n,remaining:t}},"consumeExpr"),Vnt=o(function(t){var r=t.match(/^\s+/);if(r){var i=r[0];t=t.substring(i.length)}return t},"consumeWhitespace"),Wnt=o(function(t){var r=this,i=r.inputText=t,n=r[0]=xi();for(r.length=1,i=Vnt(i);;){var a=Gnt(i);if(a.expr==null)return di("The selector `"+t+"`is invalid"),!1;var s=a.match.slice(1),l=a.expr.populate(r,n,s);if(l===!1)return!1;if(l!=null&&(n=l),i=a.remaining,i.match(/^\s*$/))break}var u=r[r.length-1];r.currentSubject!=null&&(u.subject=r.currentSubject),u.edgeCount=r.edgeCount,u.compoundCount=r.compoundCount;for(var h=0;h<r.length;h++){var d=r[h];if(d.compoundCount>0&&d.edgeCount>0)return di("The selector `"+t+"` is invalid because it uses both a compound selector and an edge selector"),!1;if(d.edgeCount>1)return di("The selector `"+t+"` is invalid because it uses multiple edge selectors"),!1;d.edgeCount===1&&di("The selector `"+t+"` is deprecated.  Edge selectors do not take effect on changes to source and target nodes after an edge is added, for performance reasons.  Use a class or data selector on edges instead, updating the class or data of an edge when your app detects a change in source or target nodes.")}return!0},"parse"),qnt=o(function(){if(this.toStringCache!=null)return this.toStringCache;for(var t=o(function(d){return d??""},"clean"),r=o(function(d){return sr(d)?'"'+d+'"':t(d)},"cleanVal"),i=o(function(d){return" "+d+" "},"space"),n=o(function(d,f){var p=d.type,m=d.value;switch(p){case Yt.GROUP:{var g=t(m);return g.substring(0,g.length-1)}case Yt.DATA_COMPARE:{var y=d.field,v=d.operator;return"["+y+i(t(v))+r(m)+"]"}case Yt.DATA_BOOL:{var x=d.operator,b=d.field;return"["+t(x)+b+"]"}case Yt.DATA_EXIST:{var T=d.field;return"["+T+"]"}case Yt.META_COMPARE:{var w=d.operator,C=d.field;return"[["+C+i(t(w))+r(m)+"]]"}case Yt.STATE:return m;case Yt.ID:return"#"+m;case Yt.CLASS:return"."+m;case Yt.PARENT:case Yt.CHILD:return a(d.parent,f)+i(">")+a(d.child,f);case Yt.ANCESTOR:case Yt.DESCENDANT:return a(d.ancestor,f)+" "+a(d.descendant,f);case Yt.COMPOUND_SPLIT:{var k=a(d.left,f),E=a(d.subject,f),A=a(d.right,f);return k+(k.length>0?" ":"")+E+A}case Yt.TRUE:return""}},"checkToString"),a=o(function(d,f){return d.checks.reduce(function(p,m,g){return p+(f===d&&g===0?"$":"")+n(m,f)},"")},"queryToString"),s="",l=0;l<this.length;l++){var u=this[l];s+=a(u,u.subject),this.length>1&&l<this.length-1&&(s+=", ")}return this.toStringCache=s,s},"toString"),Unt={parse:Wnt,toString:qnt},Rme=o(function(t,r,i){var n,a=sr(t),s=Ot(t),l=sr(i),u,h,d=!1,f=!1,p=!1;switch(r.indexOf("!")>=0&&(r=r.replace("!",""),f=!0),r.indexOf("@")>=0&&(r=r.replace("@",""),d=!0),(a||l||d)&&(u=!a&&!s?"":""+t,h=""+i),d&&(t=u=u.toLowerCase(),i=h=h.toLowerCase()),r){case"*=":n=u.indexOf(h)>=0;break;case"$=":n=u.indexOf(h,u.length-h.length)>=0;break;case"^=":n=u.indexOf(h)===0;break;case"=":n=t===i;break;case">":p=!0,n=t>i;break;case">=":p=!0,n=t>=i;break;case"<":p=!0,n=t<i;break;case"<=":p=!0,n=t<=i;break;default:n=!1;break}return f&&(t!=null||!p)&&(n=!n),n},"valCmp"),Hnt=o(function(t,r){switch(r){case"?":return!!t;case"!":return!t;case"^":return t===void 0}},"boolCmp"),Ynt=o(function(t){return t!==void 0},"existCmp"),wP=o(function(t,r){return t.data(r)},"data"),jnt=o(function(t,r){return t[r]()},"meta"),un=[],zi=o(function(t,r){return t.checks.every(function(i){return un[i.type](i,r)})},"matches");un[Yt.GROUP]=function(e,t){var r=e.value;return r==="*"||r===t.group()};un[Yt.STATE]=function(e,t){var r=e.value;return $nt(r,t)};un[Yt.ID]=function(e,t){var r=e.value;return t.id()===r};un[Yt.CLASS]=function(e,t){var r=e.value;return t.hasClass(r)};un[Yt.META_COMPARE]=function(e,t){var r=e.field,i=e.operator,n=e.value;return Rme(jnt(t,r),i,n)};un[Yt.DATA_COMPARE]=function(e,t){var r=e.field,i=e.operator,n=e.value;return Rme(wP(t,r),i,n)};un[Yt.DATA_BOOL]=function(e,t){var r=e.field,i=e.operator;return Hnt(wP(t,r),i)};un[Yt.DATA_EXIST]=function(e,t){var r=e.field;return e.operator,Ynt(wP(t,r))};un[Yt.UNDIRECTED_EDGE]=function(e,t){var r=e.nodes[0],i=e.nodes[1],n=t.source(),a=t.target();return zi(r,n)&&zi(i,a)||zi(i,n)&&zi(r,a)};un[Yt.NODE_NEIGHBOR]=function(e,t){return zi(e.node,t)&&t.neighborhood().some(function(r){return r.isNode()&&zi(e.neighbor,r)})};un[Yt.DIRECTED_EDGE]=function(e,t){return zi(e.source,t.source())&&zi(e.target,t.target())};un[Yt.NODE_SOURCE]=function(e,t){return zi(e.source,t)&&t.outgoers().some(function(r){return r.isNode()&&zi(e.target,r)})};un[Yt.NODE_TARGET]=function(e,t){return zi(e.target,t)&&t.incomers().some(function(r){return r.isNode()&&zi(e.source,r)})};un[Yt.CHILD]=function(e,t){return zi(e.child,t)&&zi(e.parent,t.parent())};un[Yt.PARENT]=function(e,t){return zi(e.parent,t)&&t.children().some(function(r){return zi(e.child,r)})};un[Yt.DESCENDANT]=function(e,t){return zi(e.descendant,t)&&t.ancestors().some(function(r){return zi(e.ancestor,r)})};un[Yt.ANCESTOR]=function(e,t){return zi(e.ancestor,t)&&t.descendants().some(function(r){return zi(e.descendant,r)})};un[Yt.COMPOUND_SPLIT]=function(e,t){return zi(e.subject,t)&&zi(e.left,t)&&zi(e.right,t)};un[Yt.TRUE]=function(){return!0};un[Yt.COLLECTION]=function(e,t){var r=e.value;return r.has(t)};un[Yt.FILTER]=function(e,t){var r=e.value;return r(t)};Xnt=o(function(t){var r=this;if(r.length===1&&r[0].checks.length===1&&r[0].checks[0].type===Yt.ID)return t.getElementById(r[0].checks[0].value).collection();var i=o(function(a){for(var s=0;s<r.length;s++){var l=r[s];if(zi(l,a))return!0}return!1},"selectorFunction");return r.text()==null&&(i=o(function(){return!0},"selectorFunction")),t.filter(i)},"filter"),Knt=o(function(t){for(var r=this,i=0;i<r.length;i++){var n=r[i];if(zi(n,t))return!0}return!1},"matches"),Znt={matches:Knt,filter:Xnt},Yd=o(function(t){this.inputText=t,this.currentSubject=null,this.compoundCount=0,this.edgeCount=0,this.length=0,t==null||sr(t)&&t.match(/^\s*$/)||(uo(t)?this.addQuery({checks:[{type:Yt.COLLECTION,value:t.collection()}]}):Ji(t)?this.addQuery({checks:[{type:Yt.FILTER,value:t}]}):sr(t)?this.parse(t)||(this.invalid=!0):Yi("A selector must be created from a string; found "))},"Selector"),jd=Yd.prototype;[Unt,Znt].forEach(function(e){return hr(jd,e)});jd.text=function(){return this.inputText};jd.size=function(){return this.length};jd.eq=function(e){return this[e]};jd.sameText=function(e){return!this.invalid&&!e.invalid&&this.text()===e.text()};jd.addQuery=function(e){this[this.length++]=e};jd.selector=jd.toString;Vd={allAre:o(function(t){var r=new Yd(t);return this.every(function(i){return r.matches(i)})},"allAre"),is:o(function(t){var r=new Yd(t);return this.some(function(i){return r.matches(i)})},"is"),some:o(function(t,r){for(var i=0;i<this.length;i++){var n=r?t.apply(r,[this[i],i,this]):t(this[i],i,this);if(n)return!0}return!1},"some"),every:o(function(t,r){for(var i=0;i<this.length;i++){var n=r?t.apply(r,[this[i],i,this]):t(this[i],i,this);if(!n)return!1}return!0},"every"),same:o(function(t){if(this===t)return!0;t=this.cy().collection(t);var r=this.length,i=t.length;return r!==i?!1:r===1?this[0]===t[0]:this.every(function(n){return t.hasElementWithId(n.id())})},"same"),anySame:o(function(t){return t=this.cy().collection(t),this.some(function(r){return t.hasElementWithId(r.id())})},"anySame"),allAreNeighbors:o(function(t){t=this.cy().collection(t);var r=this.neighborhood();return t.every(function(i){return r.hasElementWithId(i.id())})},"allAreNeighbors"),contains:o(function(t){t=this.cy().collection(t);var r=this;return t.every(function(i){return r.hasElementWithId(i.id())})},"contains")};Vd.allAreNeighbours=Vd.allAreNeighbors;Vd.has=Vd.contains;Vd.equal=Vd.equals=Vd.same;Xo=o(function(t,r){return o(function(n,a,s,l){var u=n,h=this,d;if(u==null?d="":uo(u)&&u.length===1&&(d=u.id()),h.length===1&&d){var f=h[0]._private,p=f.traversalCache=f.traversalCache||{},m=p[r]=p[r]||[],g=Jp(d),y=m[g];return y||(m[g]=t.call(h,n,a,s,l))}else return t.call(h,n,a,s,l)},"traversalCache")},"cache"),g1={parent:o(function(t){var r=[];if(this.length===1){var i=this[0]._private.parent;if(i)return i}for(var n=0;n<this.length;n++){var a=this[n],s=a._private.parent;s&&r.push(s)}return this.spawn(r,!0).filter(t)},"parent"),parents:o(function(t){for(var r=[],i=this.parent();i.nonempty();){for(var n=0;n<i.length;n++){var a=i[n];r.push(a)}i=i.parent()}return this.spawn(r,!0).filter(t)},"parents"),commonAncestors:o(function(t){for(var r,i=0;i<this.length;i++){var n=this[i],a=n.parents();r=r||a,r=r.intersect(a)}return r.filter(t)},"commonAncestors"),orphans:o(function(t){return this.stdFilter(function(r){return r.isOrphan()}).filter(t)},"orphans"),nonorphans:o(function(t){return this.stdFilter(function(r){return r.isChild()}).filter(t)},"nonorphans"),children:Xo(function(e){for(var t=[],r=0;r<this.length;r++)for(var i=this[r],n=i._private.children,a=0;a<n.length;a++)t.push(n[a]);return this.spawn(t,!0).filter(e)},"children"),siblings:o(function(t){return this.parent().children().not(this).filter(t)},"siblings"),isParent:o(function(){var t=this[0];if(t)return t.isNode()&&t._private.children.length!==0},"isParent"),isChildless:o(function(){var t=this[0];if(t)return t.isNode()&&t._private.children.length===0},"isChildless"),isChild:o(function(){var t=this[0];if(t)return t.isNode()&&t._private.parent!=null},"isChild"),isOrphan:o(function(){var t=this[0];if(t)return t.isNode()&&t._private.parent==null},"isOrphan"),descendants:o(function(t){var r=[];function i(n){for(var a=0;a<n.length;a++){var s=n[a];r.push(s),s.children().nonempty()&&i(s.children())}}return o(i,"add"),i(this.children()),this.spawn(r,!0).filter(t)},"descendants")};o(SP,"forEachCompound");o(Lme,"addChildren");g1.forEachDown=function(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!0;return SP(this,e,t,Lme)};o(Mme,"addParent");g1.forEachUp=function(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!0;return SP(this,e,t,Mme)};o(Qnt,"addParentAndChildren");g1.forEachUpAndDown=function(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!0;return SP(this,e,t,Qnt)};g1.ancestors=g1.parents;Zb=Nme={data:hi.data({field:"data",bindingEvent:"data",allowBinding:!0,allowSetting:!0,settingEvent:"data",settingTriggersEvent:!0,triggerFnName:"trigger",allowGetting:!0,immutableKeys:{id:!0,source:!0,target:!0,parent:!0},updateStyle:!0}),removeData:hi.removeData({field:"data",event:"data",triggerFnName:"trigger",triggerEvent:!0,immutableKeys:{id:!0,source:!0,target:!0,parent:!0},updateStyle:!0}),scratch:hi.data({field:"scratch",bindingEvent:"scratch",allowBinding:!0,allowSetting:!0,settingEvent:"scratch",settingTriggersEvent:!0,triggerFnName:"trigger",allowGetting:!0,updateStyle:!0}),removeScratch:hi.removeData({field:"scratch",event:"scratch",triggerFnName:"trigger",triggerEvent:!0,updateStyle:!0}),rscratch:hi.data({field:"rscratch",allowBinding:!1,allowSetting:!0,settingTriggersEvent:!1,allowGetting:!0}),removeRscratch:hi.removeData({field:"rscratch",triggerEvent:!1}),id:o(function(){var t=this[0];if(t)return t._private.data.id},"id")};Zb.attr=Zb.data;Zb.removeAttr=Zb.removeData;Jnt=Nme,rE={};o(MO,"defineDegreeFunction");hr(rE,{degree:MO(function(e,t){return t.source().same(t.target())?2:1}),indegree:MO(function(e,t){return t.target().same(e)?1:0}),outdegree:MO(function(e,t){return t.source().same(e)?1:0})});o(e1,"defineDegreeBoundsFunction");hr(rE,{minDegree:e1("degree",function(e,t){return e<t}),maxDegree:e1("degree",function(e,t){return e>t}),minIndegree:e1("indegree",function(e,t){return e<t}),maxIndegree:e1("indegree",function(e,t){return e>t}),minOutdegree:e1("outdegree",function(e,t){return e<t}),maxOutdegree:e1("outdegree",function(e,t){return e>t})});hr(rE,{totalDegree:o(function(t){for(var r=0,i=this.nodes(),n=0;n<i.length;n++)r+=i[n].degree(t);return r},"totalDegree")});Ome=o(function(t,r,i){for(var n=0;n<t.length;n++){var a=t[n];if(!a.locked()){var s=a._private.position,l={x:r.x!=null?r.x-s.x:0,y:r.y!=null?r.y-s.y:0};a.isParent()&&!(l.x===0&&l.y===0)&&a.children().shift(l,i),a.dirtyBoundingBoxCache()}}},"beforePositionSet"),Qpe={field:"position",bindingEvent:"position",allowBinding:!0,allowSetting:!0,settingEvent:"position",settingTriggersEvent:!0,triggerFnName:"emitAndNotify",allowGetting:!0,validKeys:["x","y"],beforeGet:o(function(t){t.updateCompoundBounds()},"beforeGet"),beforeSet:o(function(t,r){Ome(t,r,!1)},"beforeSet"),onSet:o(function(t){t.dirtyCompoundBoundsCache()},"onSet"),canSet:o(function(t){return!t.locked()},"canSet")};Fl=Ime={position:hi.data(Qpe),silentPosition:hi.data(hr({},Qpe,{allowBinding:!1,allowSetting:!0,settingTriggersEvent:!1,allowGetting:!1,beforeSet:o(function(t,r){Ome(t,r,!0)},"beforeSet"),onSet:o(function(t){t.dirtyCompoundBoundsCache()},"onSet")})),positions:o(function(t,r){if(Xr(t))r?this.silentPosition(t):this.position(t);else if(Ji(t)){var i=t,n=this.cy();n.startBatch();for(var a=0;a<this.length;a++){var s=this[a],l=void 0;(l=i(s,a))&&(r?s.silentPosition(l):s.position(l))}n.endBatch()}return this},"positions"),silentPositions:o(function(t){return this.positions(t,!0)},"silentPositions"),shift:o(function(t,r,i){var n;if(Xr(t)?(n={x:Ot(t.x)?t.x:0,y:Ot(t.y)?t.y:0},i=r):sr(t)&&Ot(r)&&(n={x:0,y:0},n[t]=r),n!=null){var a=this.cy();a.startBatch();for(var s=0;s<this.length;s++){var l=this[s];if(!(a.hasCompoundNodes()&&l.isChild()&&l.ancestors().anySame(this))){var u=l.position(),h={x:u.x+n.x,y:u.y+n.y};i?l.silentPosition(h):l.position(h)}}a.endBatch()}return this},"shift"),silentShift:o(function(t,r){return Xr(t)?this.shift(t,!0):sr(t)&&Ot(r)&&this.shift(t,r,!0),this},"silentShift"),renderedPosition:o(function(t,r){var i=this[0],n=this.cy(),a=n.zoom(),s=n.pan(),l=Xr(t)?t:void 0,u=l!==void 0||r!==void 0&&sr(t);if(i&&i.isNode())if(u)for(var h=0;h<this.length;h++){var d=this[h];r!==void 0?d.position(t,(r-s[t])/a):l!==void 0&&d.position(cme(l,a,s))}else{var f=i.position();return l=K3(f,a,s),t===void 0?l:l[t]}else if(!u)return;return this},"renderedPosition"),relativePosition:o(function(t,r){var i=this[0],n=this.cy(),a=Xr(t)?t:void 0,s=a!==void 0||r!==void 0&&sr(t),l=n.hasCompoundNodes();if(i&&i.isNode())if(s)for(var u=0;u<this.length;u++){var h=this[u],d=l?h.parent():null,f=d&&d.length>0,p=f;f&&(d=d[0]);var m=p?d.position():{x:0,y:0};r!==void 0?h.position(t,r+m[t]):a!==void 0&&h.position({x:a.x+m.x,y:a.y+m.y})}else{var g=i.position(),y=l?i.parent():null,v=y&&y.length>0,x=v;v&&(y=y[0]);var b=x?y.position():{x:0,y:0};return a={x:g.x-b.x,y:g.y-b.y},t===void 0?a:a[t]}else if(!s)return;return this},"relativePosition")};Fl.modelPosition=Fl.point=Fl.position;Fl.modelPositions=Fl.points=Fl.positions;Fl.renderedPoint=Fl.renderedPosition;Fl.relativePoint=Fl.relativePosition;eat=Ime;f1=Qd={};Qd.renderedBoundingBox=function(e){var t=this.boundingBox(e),r=this.cy(),i=r.zoom(),n=r.pan(),a=t.x1*i+n.x,s=t.x2*i+n.x,l=t.y1*i+n.y,u=t.y2*i+n.y;return{x1:a,x2:s,y1:l,y2:u,w:s-a,h:u-l}};Qd.dirtyCompoundBoundsCache=function(){var e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:!1,t=this.cy();return!t.styleEnabled()||!t.hasCompoundNodes()?this:(this.forEachUp(function(r){if(r.isParent()){var i=r._private;i.compoundBoundsClean=!1,i.bbCache=null,e||r.emitAndNotify("bounds")}}),this)};Qd.updateCompoundBounds=function(){var e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:!1,t=this.cy();if(!t.styleEnabled()||!t.hasCompoundNodes())return this;if(!e&&t.batching())return this;function r(s){if(!s.isParent())return;var l=s._private,u=s.children(),h=s.pstyle("compound-sizing-wrt-labels").value==="include",d={width:{val:s.pstyle("min-width").pfValue,left:s.pstyle("min-width-bias-left"),right:s.pstyle("min-width-bias-right")},height:{val:s.pstyle("min-height").pfValue,top:s.pstyle("min-height-bias-top"),bottom:s.pstyle("min-height-bias-bottom")}},f=u.boundingBox({includeLabels:h,includeOverlays:!1,useCache:!1}),p=l.position;(f.w===0||f.h===0)&&(f={w:s.pstyle("width").pfValue,h:s.pstyle("height").pfValue},f.x1=p.x-f.w/2,f.x2=p.x+f.w/2,f.y1=p.y-f.h/2,f.y2=p.y+f.h/2);function m(N,P,I){var D=0,_=0,R=P+I;return N>0&&R>0&&(D=P/R*N,_=I/R*N),{biasDiff:D,biasComplementDiff:_}}o(m,"computeBiasValues");function g(N,P,I,D){if(I.units==="%")switch(D){case"width":return N>0?I.pfValue*N:0;case"height":return P>0?I.pfValue*P:0;case"average":return N>0&&P>0?I.pfValue*(N+P)/2:0;case"min":return N>0&&P>0?N>P?I.pfValue*P:I.pfValue*N:0;case"max":return N>0&&P>0?N>P?I.pfValue*N:I.pfValue*P:0;default:return 0}else return I.units==="px"?I.pfValue:0}o(g,"computePaddingValues");var y=d.width.left.value;d.width.left.units==="px"&&d.width.val>0&&(y=y*100/d.width.val);var v=d.width.right.value;d.width.right.units==="px"&&d.width.val>0&&(v=v*100/d.width.val);var x=d.height.top.value;d.height.top.units==="px"&&d.height.val>0&&(x=x*100/d.height.val);var b=d.height.bottom.value;d.height.bottom.units==="px"&&d.height.val>0&&(b=b*100/d.height.val);var T=m(d.width.val-f.w,y,v),w=T.biasDiff,C=T.biasComplementDiff,k=m(d.height.val-f.h,x,b),E=k.biasDiff,A=k.biasComplementDiff;l.autoPadding=g(f.w,f.h,s.pstyle("padding"),s.pstyle("padding-relative-to").value),l.autoWidth=Math.max(f.w,d.width.val),p.x=(-w+f.x1+f.x2+C)/2,l.autoHeight=Math.max(f.h,d.height.val),p.y=(-E+f.y1+f.y2+A)/2}o(r,"update");for(var i=0;i<this.length;i++){var n=this[i],a=n._private;(!a.compoundBoundsClean||e)&&(r(n),t.batching()||(a.compoundBoundsClean=!0))}return this};jo=o(function(t){return t===1/0||t===-1/0?0:t},"noninf"),Bl=o(function(t,r,i,n,a){n-r===0||a-i===0||r==null||i==null||n==null||a==null||(t.x1=r<t.x1?r:t.x1,t.x2=n>t.x2?n:t.x2,t.y1=i<t.y1?i:t.y1,t.y2=a>t.y2?a:t.y2,t.w=t.x2-t.x1,t.h=t.y2-t.y1)},"updateBounds"),Fd=o(function(t,r){return r==null?t:Bl(t,r.x1,r.y1,r.x2,r.y2)},"updateBoundsFromBox"),Ib=o(function(t,r,i){return Ps(t,r,i)},"prefixedProperty"),m3=o(function(t,r,i){if(!r.cy().headless()){var n=r._private,a=n.rstyle,s=a.arrowWidth/2,l=r.pstyle(i+"-arrow-shape").value,u,h;if(l!=="none"){i==="source"?(u=a.srcX,h=a.srcY):i==="target"?(u=a.tgtX,h=a.tgtY):(u=a.midX,h=a.midY);var d=n.arrowBounds=n.arrowBounds||{},f=d[i]=d[i]||{};f.x1=u-s,f.y1=h-s,f.x2=u+s,f.y2=h+s,f.w=f.x2-f.x1,f.h=f.y2-f.y1,k3(f,1),Bl(t,f.x1,f.y1,f.x2,f.y2)}}},"updateBoundsFromArrow"),NO=o(function(t,r,i){if(!r.cy().headless()){var n;i?n=i+"-":n="";var a=r._private,s=a.rstyle,l=r.pstyle(n+"label").strValue;if(l){var u=r.pstyle("text-halign"),h=r.pstyle("text-valign"),d=Ib(s,"labelWidth",i),f=Ib(s,"labelHeight",i),p=Ib(s,"labelX",i),m=Ib(s,"labelY",i),g=r.pstyle(n+"text-margin-x").pfValue,y=r.pstyle(n+"text-margin-y").pfValue,v=r.isEdge(),x=r.pstyle(n+"text-rotation"),b=r.pstyle("text-outline-width").pfValue,T=r.pstyle("text-border-width").pfValue,w=T/2,C=r.pstyle("text-background-padding").pfValue,k=2,E=f,A=d,N=A/2,P=E/2,I,D,_,R;if(v)I=p-N,D=p+N,_=m-P,R=m+P;else{switch(u.value){case"left":I=p-A,D=p;break;case"center":I=p-N,D=p+N;break;case"right":I=p,D=p+A;break}switch(h.value){case"top":_=m-E,R=m;break;case"center":_=m-P,R=m+P;break;case"bottom":_=m,R=m+E;break}}var M=g-Math.max(b,w)-C-k,L=g+Math.max(b,w)+C+k,B=y-Math.max(b,w)-C-k,O=y+Math.max(b,w)+C+k;I+=M,D+=L,_+=B,R+=O;var $=i||"main",G=a.labelBounds,F=G[$]=G[$]||{};F.x1=I,F.y1=_,F.x2=D,F.y2=R,F.w=D-I,F.h=R-_,F.leftPad=M,F.rightPad=L,F.topPad=B,F.botPad=O;var V=v&&x.strValue==="autorotate",H=x.pfValue!=null&&x.pfValue!==0;if(V||H){var j=V?Ib(a.rstyle,"labelAngle",i):x.pfValue,U=Math.cos(j),Q=Math.sin(j),Y=(I+D)/2,ae=(_+R)/2;if(!v){switch(u.value){case"left":Y=D;break;case"right":Y=I;break}switch(h.value){case"top":ae=R;break;case"bottom":ae=_;break}}var J=o(function(Ee,we){return Ee=Ee-Y,we=we-ae,{x:Ee*U-we*Q+Y,y:Ee*Q+we*U+ae}},"rotate"),te=J(I,_),re=J(I,R),ee=J(D,_),Te=J(D,R);I=Math.min(te.x,re.x,ee.x,Te.x),D=Math.max(te.x,re.x,ee.x,Te.x),_=Math.min(te.y,re.y,ee.y,Te.y),R=Math.max(te.y,re.y,ee.y,Te.y)}var ue=$+"Rot",De=G[ue]=G[ue]||{};De.x1=I,De.y1=_,De.x2=D,De.y2=R,De.w=D-I,De.h=R-_,Bl(t,I,_,D,R),Bl(a.labelBounds.all,I,_,D,R)}return t}},"updateBoundsFromLabel"),Jpe=o(function(t,r){if(!r.cy().headless()){var i=r.pstyle("outline-opacity").value,n=r.pstyle("outline-width").value,a=r.pstyle("outline-offset").value,s=n+a;Pme(t,r,i,s,"outside",s/2)}},"updateBoundsFromOutline"),Pme=o(function(t,r,i,n,a,s){if(!(i===0||n<=0||a==="inside")){var l=r.cy(),u=r.pstyle("shape").value,h=l.renderer().nodeShapes[u],d=r.position(),f=d.x,p=d.y,m=r.width(),g=r.height();if(h.hasMiterBounds){a==="center"&&(n/=2);var y=h.miterBounds(f,p,m,g,n);Fd(t,y)}else s!=null&&s>0&&w3(t,[s,s,s,s])}},"updateBoundsFromMiter"),tat=o(function(t,r){if(!r.cy().headless()){var i=r.pstyle("border-opacity").value,n=r.pstyle("border-width").pfValue,a=r.pstyle("border-position").value;Pme(t,r,i,n,a)}},"updateBoundsFromMiterBorder"),rat=o(function(t,r){var i=t._private.cy,n=i.styleEnabled(),a=i.headless(),s=is(),l=t._private,u=t.isNode(),h=t.isEdge(),d,f,p,m,g,y,v=l.rstyle,x=u&&n?t.pstyle("bounds-expansion").pfValue:[0],b=o(function(Ie){return Ie.pstyle("display").value!=="none"},"isDisplayed"),T=!n||b(t)&&(!h||b(t.source())&&b(t.target()));if(T){var w=0,C=0;n&&r.includeOverlays&&(w=t.pstyle("overlay-opacity").value,w!==0&&(C=t.pstyle("overlay-padding").value));var k=0,E=0;n&&r.includeUnderlays&&(k=t.pstyle("underlay-opacity").value,k!==0&&(E=t.pstyle("underlay-padding").value));var A=Math.max(C,E),N=0,P=0;if(n&&(N=t.pstyle("width").pfValue,P=N/2),u&&r.includeNodes){var I=t.position();g=I.x,y=I.y;var D=t.outerWidth(),_=D/2,R=t.outerHeight(),M=R/2;d=g-_,f=g+_,p=y-M,m=y+M,Bl(s,d,p,f,m),n&&Jpe(s,t),n&&r.includeOutlines&&!a&&Jpe(s,t),n&&tat(s,t)}else if(h&&r.includeEdges)if(n&&!a){var L=t.pstyle("curve-style").strValue;if(d=Math.min(v.srcX,v.midX,v.tgtX),f=Math.max(v.srcX,v.midX,v.tgtX),p=Math.min(v.srcY,v.midY,v.tgtY),m=Math.max(v.srcY,v.midY,v.tgtY),d-=P,f+=P,p-=P,m+=P,Bl(s,d,p,f,m),L==="haystack"){var B=v.haystackPts;if(B&&B.length===2){if(d=B[0].x,p=B[0].y,f=B[1].x,m=B[1].y,d>f){var O=d;d=f,f=O}if(p>m){var $=p;p=m,m=$}Bl(s,d-P,p-P,f+P,m+P)}}else if(L==="bezier"||L==="unbundled-bezier"||$d(L,"segments")||$d(L,"taxi")){var G;switch(L){case"bezier":case"unbundled-bezier":G=v.bezierPts;break;case"segments":case"taxi":case"round-segments":case"round-taxi":G=v.linePts;break}if(G!=null)for(var F=0;F<G.length;F++){var V=G[F];d=V.x-P,f=V.x+P,p=V.y-P,m=V.y+P,Bl(s,d,p,f,m)}}}else{var H=t.source(),j=H.position(),U=t.target(),Q=U.position();if(d=j.x,f=Q.x,p=j.y,m=Q.y,d>f){var Y=d;d=f,f=Y}if(p>m){var ae=p;p=m,m=ae}d-=P,f+=P,p-=P,m+=P,Bl(s,d,p,f,m)}if(n&&r.includeEdges&&h&&(m3(s,t,"mid-source"),m3(s,t,"mid-target"),m3(s,t,"source"),m3(s,t,"target")),n){var J=t.pstyle("ghost").value==="yes";if(J){var te=t.pstyle("ghost-offset-x").pfValue,re=t.pstyle("ghost-offset-y").pfValue;Bl(s,s.x1+te,s.y1+re,s.x2+te,s.y2+re)}}var ee=l.bodyBounds=l.bodyBounds||{};Ffe(ee,s),w3(ee,x),k3(ee,1),n&&(d=s.x1,f=s.x2,p=s.y1,m=s.y2,Bl(s,d-A,p-A,f+A,m+A));var Te=l.overlayBounds=l.overlayBounds||{};Ffe(Te,s),w3(Te,x),k3(Te,1);var ue=l.labelBounds=l.labelBounds||{};ue.all!=null?Brt(ue.all):ue.all=is(),n&&r.includeLabels&&(r.includeMainLabels&&NO(s,t,null),h&&(r.includeSourceLabels&&NO(s,t,"source"),r.includeTargetLabels&&NO(s,t,"target")))}return s.x1=jo(s.x1),s.y1=jo(s.y1),s.x2=jo(s.x2),s.y2=jo(s.y2),s.w=jo(s.x2-s.x1),s.h=jo(s.y2-s.y1),s.w>0&&s.h>0&&T&&(w3(s,x),k3(s,1)),s},"boundingBoxImpl"),Bme=o(function(t){var r=0,i=o(function(s){return(s?1:0)<<r++},"tf"),n=0;return n+=i(t.incudeNodes),n+=i(t.includeEdges),n+=i(t.includeLabels),n+=i(t.includeMainLabels),n+=i(t.includeSourceLabels),n+=i(t.includeTargetLabels),n+=i(t.includeOverlays),n+=i(t.includeOutlines),n},"getKey"),Fme=o(function(t){var r=o(function(l){return Math.round(l)},"r");if(t.isEdge()){var i=t.source().position(),n=t.target().position();return Mfe([r(i.x),r(i.y),r(n.x),r(n.y)])}else{var a=t.position();return Mfe([r(a.x),r(a.y)])}},"getBoundingBoxPosKey"),e0e=o(function(t,r){var i=t._private,n,a=t.isEdge(),s=r==null?t0e:Bme(r),l=s===t0e;if(i.bbCache==null?(n=rat(t,Qb),i.bbCache=n,i.bbCachePosKey=Fme(t)):n=i.bbCache,!l){var u=t.isNode();n=is(),(r.includeNodes&&u||r.includeEdges&&!u)&&(r.includeOverlays?Fd(n,i.overlayBounds):Fd(n,i.bodyBounds)),r.includeLabels&&(r.includeMainLabels&&(!a||r.includeSourceLabels&&r.includeTargetLabels)?Fd(n,i.labelBounds.all):(r.includeMainLabels&&Fd(n,i.labelBounds.mainRot),r.includeSourceLabels&&Fd(n,i.labelBounds.sourceRot),r.includeTargetLabels&&Fd(n,i.labelBounds.targetRot))),n.w=n.x2-n.x1,n.h=n.y2-n.y1}return n},"cachedBoundingBoxImpl"),Qb={includeNodes:!0,includeEdges:!0,includeLabels:!0,includeMainLabels:!0,includeSourceLabels:!0,includeTargetLabels:!0,includeOverlays:!0,includeUnderlays:!0,includeOutlines:!0,useCache:!0},t0e=Bme(Qb),r0e=va(Qb);Qd.boundingBox=function(e){var t,r=e===void 0||e.useCache===void 0||e.useCache===!0,i=p1(function(d){var f=d._private;return f.bbCache==null||f.styleDirty||f.bbCachePosKey!==Fme(d)},function(d){return d.id()});if(r&&this.length===1&&!i(this[0]))e===void 0?e=Qb:e=r0e(e),t=e0e(this[0],e);else{t=is(),e=e||Qb;var n=r0e(e),a=this,s=a.cy(),l=s.styleEnabled();this.edges().forEach(i),this.nodes().forEach(i),l&&this.recalculateRenderedStyle(r),this.updateCompoundBounds(!r);for(var u=0;u<a.length;u++){var h=a[u];i(h)&&h.dirtyBoundingBoxCache(),Fd(t,e0e(h,n))}}return t.x1=jo(t.x1),t.y1=jo(t.y1),t.x2=jo(t.x2),t.y2=jo(t.y2),t.w=jo(t.x2-t.x1),t.h=jo(t.y2-t.y1),t};Qd.dirtyBoundingBoxCache=function(){for(var e=0;e<this.length;e++){var t=this[e]._private;t.bbCache=null,t.bbCachePosKey=null,t.bodyBounds=null,t.overlayBounds=null,t.labelBounds.all=null,t.labelBounds.source=null,t.labelBounds.target=null,t.labelBounds.main=null,t.labelBounds.sourceRot=null,t.labelBounds.targetRot=null,t.labelBounds.mainRot=null,t.arrowBounds.source=null,t.arrowBounds.target=null,t.arrowBounds["mid-source"]=null,t.arrowBounds["mid-target"]=null}return this.emitAndNotify("bounds"),this};Qd.boundingBoxAt=function(e){var t=this.nodes(),r=this.cy(),i=r.hasCompoundNodes(),n=r.collection();if(i&&(n=t.filter(function(h){return h.isParent()}),t=t.not(n)),Xr(e)){var a=e;e=o(function(){return a},"fn")}var s=o(function(d,f){return d._private.bbAtOldPos=e(d,f)},"storeOldPos"),l=o(function(d){return d._private.bbAtOldPos},"getOldPos");r.startBatch(),t.forEach(s).silentPositions(e),i&&(n.dirtyCompoundBoundsCache(),n.dirtyBoundingBoxCache(),n.updateCompoundBounds(!0));var u=Prt(this.boundingBox({useCache:!1}));return t.silentPositions(l),i&&(n.dirtyCompoundBoundsCache(),n.dirtyBoundingBoxCache(),n.updateCompoundBounds(!0)),r.endBatch(),u};f1.boundingbox=f1.bb=f1.boundingBox;f1.renderedBoundingbox=f1.renderedBoundingBox;iat=Qd;Gb=c2={};$me=o(function(t){t.uppercaseName=yfe(t.name),t.autoName="auto"+t.uppercaseName,t.labelName="label"+t.uppercaseName,t.outerName="outer"+t.uppercaseName,t.uppercaseOuterName=yfe(t.outerName),Gb[t.name]=o(function(){var i=this[0],n=i._private,a=n.cy,s=a._private.styleEnabled;if(i)if(s){if(i.isParent())return i.updateCompoundBounds(),n[t.autoName]||0;var l=i.pstyle(t.name);switch(l.strValue){case"label":return i.recalculateRenderedStyle(),n.rstyle[t.labelName]||0;default:return l.pfValue}}else return 1},"dimImpl"),Gb["outer"+t.uppercaseName]=o(function(){var i=this[0],n=i._private,a=n.cy,s=a._private.styleEnabled;if(i)if(s){var l=i[t.name](),u=i.pstyle("border-position").value,h;u==="center"?h=i.pstyle("border-width").pfValue:u==="outside"?h=2*i.pstyle("border-width").pfValue:h=0;var d=2*i.padding();return l+h+d}else return 1},"outerDimImpl"),Gb["rendered"+t.uppercaseName]=o(function(){var i=this[0];if(i){var n=i[t.name]();return n*this.cy().zoom()}},"renderedDimImpl"),Gb["rendered"+t.uppercaseOuterName]=o(function(){var i=this[0];if(i){var n=i[t.outerName]();return n*this.cy().zoom()}},"renderedOuterDimImpl")},"defineDimFns");$me({name:"width"});$me({name:"height"});c2.padding=function(){var e=this[0],t=e._private;return e.isParent()?(e.updateCompoundBounds(),t.autoPadding!==void 0?t.autoPadding:e.pstyle("padding").pfValue):e.pstyle("padding").pfValue};c2.paddedHeight=function(){var e=this[0];return e.height()+2*e.padding()};c2.paddedWidth=function(){var e=this[0];return e.width()+2*e.padding()};nat=c2,aat=o(function(t,r){if(t.isEdge()&&t.takesUpSpace())return r(t)},"ifEdge"),sat=o(function(t,r){if(t.isEdge()&&t.takesUpSpace()){var i=t.cy();return K3(r(t),i.zoom(),i.pan())}},"ifEdgeRenderedPosition"),oat=o(function(t,r){if(t.isEdge()&&t.takesUpSpace()){var i=t.cy(),n=i.pan(),a=i.zoom();return r(t).map(function(s){return K3(s,a,n)})}},"ifEdgeRenderedPositions"),lat=o(function(t){return t.renderer().getControlPoints(t)},"controlPoints"),cat=o(function(t){return t.renderer().getSegmentPoints(t)},"segmentPoints"),uat=o(function(t){return t.renderer().getSourceEndpoint(t)},"sourceEndpoint"),hat=o(function(t){return t.renderer().getTargetEndpoint(t)},"targetEndpoint"),dat=o(function(t){return t.renderer().getEdgeMidpoint(t)},"midpoint"),i0e={controlPoints:{get:lat,mult:!0},segmentPoints:{get:cat,mult:!0},sourceEndpoint:{get:uat},targetEndpoint:{get:hat},midpoint:{get:dat}},fat=o(function(t){return"rendered"+t[0].toUpperCase()+t.substr(1)},"renderedName"),pat=Object.keys(i0e).reduce(function(e,t){var r=i0e[t],i=fat(t);return e[t]=function(){return aat(this,r.get)},r.mult?e[i]=function(){return oat(this,r.get)}:e[i]=function(){return sat(this,r.get)},e},{}),mat=hr({},eat,iat,nat,pat);zme=o(function(t,r){this.recycle(t,r)},"Event");o(Ob,"returnFalse");o(g3,"returnTrue");zme.prototype={instanceString:o(function(){return"event"},"instanceString"),recycle:o(function(t,r){if(this.isImmediatePropagationStopped=this.isPropagationStopped=this.isDefaultPrevented=Ob,t!=null&&t.preventDefault?(this.type=t.type,this.isDefaultPrevented=t.defaultPrevented?g3:Ob):t!=null&&t.type?r=t:this.type=t,r!=null&&(this.originalEvent=r.originalEvent,this.type=r.type!=null?r.type:this.type,this.cy=r.cy,this.target=r.target,this.position=r.position,this.renderedPosition=r.renderedPosition,this.namespace=r.namespace,this.layout=r.layout),this.cy!=null&&this.position!=null&&this.renderedPosition==null){var i=this.position,n=this.cy.zoom(),a=this.cy.pan();this.renderedPosition={x:i.x*n+a.x,y:i.y*n+a.y}}this.timeStamp=t&&t.timeStamp||Date.now()},"recycle"),preventDefault:o(function(){this.isDefaultPrevented=g3;var t=this.originalEvent;t&&t.preventDefault&&t.preventDefault()},"preventDefault"),stopPropagation:o(function(){this.isPropagationStopped=g3;var t=this.originalEvent;t&&t.stopPropagation&&t.stopPropagation()},"stopPropagation"),stopImmediatePropagation:o(function(){this.isImmediatePropagationStopped=g3,this.stopPropagation()},"stopImmediatePropagation"),isDefaultPrevented:Ob,isPropagationStopped:Ob,isImmediatePropagationStopped:Ob};Gme=/^([^.]+)(\.(?:[^.]+))?$/,gat=".*",Vme={qualifierCompare:o(function(t,r){return t===r},"qualifierCompare"),eventMatches:o(function(){return!0},"eventMatches"),addEventFields:o(function(){},"addEventFields"),callbackContext:o(function(t){return t},"callbackContext"),beforeEmit:o(function(){},"beforeEmit"),afterEmit:o(function(){},"afterEmit"),bubble:o(function(){return!1},"bubble"),parent:o(function(){return null},"parent"),context:null},n0e=Object.keys(Vme),yat={};o(iE,"Emitter");Xd=iE.prototype,Wme=o(function(t,r,i,n,a,s,l){Ji(n)&&(a=n,n=null),l&&(s==null?s=l:s=hr({},s,l));for(var u=Si(i)?i:i.split(/\s+/),h=0;h<u.length;h++){var d=u[h];if(!qd(d)){var f=d.match(Gme);if(f){var p=f[1],m=f[2]?f[2]:null,g=r(t,d,p,m,n,a,s);if(g===!1)break}}}},"forEachEvent"),a0e=o(function(t,r){return t.addEventFields(t.context,r),new zme(r.type,r)},"makeEventObj"),vat=o(function(t,r,i){if(wtt(i)){r(t,i);return}else if(Xr(i)){r(t,a0e(t,i));return}for(var n=Si(i)?i:i.split(/\s+/),a=0;a<n.length;a++){var s=n[a];if(!qd(s)){var l=s.match(Gme);if(l){var u=l[1],h=l[2]?l[2]:null,d=a0e(t,{type:u,namespace:h,target:t.context});r(t,d)}}}},"forEachEventObj");Xd.on=Xd.addListener=function(e,t,r,i,n){return Wme(this,function(a,s,l,u,h,d,f){Ji(d)&&a.listeners.push({event:s,callback:d,type:l,namespace:u,qualifier:h,conf:f})},e,t,r,i,n),this};Xd.one=function(e,t,r,i){return this.on(e,t,r,i,{one:!0})};Xd.removeListener=Xd.off=function(e,t,r,i){var n=this;this.emitting!==0&&(this.listeners=srt(this.listeners));for(var a=this.listeners,s=o(function(h){var d=a[h];Wme(n,function(f,p,m,g,y,v){if((d.type===m||e==="*")&&(!g&&d.namespace!==".*"||d.namespace===g)&&(!y||f.qualifierCompare(d.qualifier,y))&&(!v||d.callback===v))return a.splice(h,1),!1},e,t,r,i)},"_loop"),l=a.length-1;l>=0;l--)s(l);return this};Xd.removeAllListeners=function(){return this.removeListener("*")};Xd.emit=Xd.trigger=function(e,t,r){var i=this.listeners,n=i.length;return this.emitting++,Si(t)||(t=[t]),vat(this,function(a,s){r!=null&&(i=[{event:s.event,type:s.type,namespace:s.namespace,callback:r}],n=i.length);for(var l=o(function(){var d=i[u];if(d.type===s.type&&(!d.namespace||d.namespace===s.namespace||d.namespace===gat)&&a.eventMatches(a.context,d,s)){var f=[s];t!=null&&lrt(f,t),a.beforeEmit(a.context,d,s),d.conf&&d.conf.one&&(a.listeners=a.listeners.filter(function(g){return g!==d}));var p=a.callbackContext(a.context,d,s),m=d.callback.apply(p,f);a.afterEmit(a.context,d,s),m===!1&&(s.stopPropagation(),s.preventDefault())}},"_loop2"),u=0;u<n;u++)l();a.bubble(a.context)&&!s.isPropagationStopped()&&a.parent(a.context).emit(s,t)},e),this.emitting--,this};xat={qualifierCompare:o(function(t,r){return t==null||r==null?t==null&&r==null:t.sameText(r)},"qualifierCompare"),eventMatches:o(function(t,r,i){var n=r.qualifier;return n!=null?t!==i.target&&i2(i.target)&&n.matches(i.target):!0},"eventMatches"),addEventFields:o(function(t,r){r.cy=t.cy(),r.target=t},"addEventFields"),callbackContext:o(function(t,r,i){return r.qualifier!=null?i.target:t},"callbackContext"),beforeEmit:o(function(t,r){r.conf&&r.conf.once&&r.conf.onceCollection.removeListener(r.event,r.qualifier,r.callback)},"beforeEmit"),bubble:o(function(){return!0},"bubble"),parent:o(function(t){return t.isChild()?t.parent():t.cy()},"parent")},y3=o(function(t){return sr(t)?new Yd(t):t},"argSelector"),qme={createEmitter:o(function(){for(var t=0;t<this.length;t++){var r=this[t],i=r._private;i.emitter||(i.emitter=new iE(xat,r))}return this},"createEmitter"),emitter:o(function(){return this._private.emitter},"emitter"),on:o(function(t,r,i){for(var n=y3(r),a=0;a<this.length;a++){var s=this[a];s.emitter().on(t,n,i)}return this},"on"),removeListener:o(function(t,r,i){for(var n=y3(r),a=0;a<this.length;a++){var s=this[a];s.emitter().removeListener(t,n,i)}return this},"removeListener"),removeAllListeners:o(function(){for(var t=0;t<this.length;t++){var r=this[t];r.emitter().removeAllListeners()}return this},"removeAllListeners"),one:o(function(t,r,i){for(var n=y3(r),a=0;a<this.length;a++){var s=this[a];s.emitter().one(t,n,i)}return this},"one"),once:o(function(t,r,i){for(var n=y3(r),a=0;a<this.length;a++){var s=this[a];s.emitter().on(t,n,i,{once:!0,onceCollection:this})}},"once"),emit:o(function(t,r){for(var i=0;i<this.length;i++){var n=this[i];n.emitter().emit(t,r)}return this},"emit"),emitAndNotify:o(function(t,r){if(this.length!==0)return this.cy().notify(t,this),this.emit(t,r),this},"emitAndNotify")};hi.eventAliasesOn(qme);Ume={nodes:o(function(t){return this.filter(function(r){return r.isNode()}).filter(t)},"nodes"),edges:o(function(t){return this.filter(function(r){return r.isEdge()}).filter(t)},"edges"),byGroup:o(function(){for(var t=this.spawn(),r=this.spawn(),i=0;i<this.length;i++){var n=this[i];n.isNode()?t.push(n):r.push(n)}return{nodes:t,edges:r}},"byGroup"),filter:o(function(t,r){if(t===void 0)return this;if(sr(t)||uo(t))return new Yd(t).filter(this);if(Ji(t)){for(var i=this.spawn(),n=this,a=0;a<n.length;a++){var s=n[a],l=r?t.apply(r,[s,a,n]):t(s,a,n);l&&i.push(s)}return i}return this.spawn()},"filter"),not:o(function(t){if(t){sr(t)&&(t=this.filter(t));for(var r=this.spawn(),i=0;i<this.length;i++){var n=this[i],a=t.has(n);a||r.push(n)}return r}else return this},"not"),absoluteComplement:o(function(){var t=this.cy();return t.mutableElements().not(this)},"absoluteComplement"),intersect:o(function(t){if(sr(t)){var r=t;return this.filter(r)}for(var i=this.spawn(),n=this,a=t,s=this.length<t.length,l=s?n:a,u=s?a:n,h=0;h<l.length;h++){var d=l[h];u.has(d)&&i.push(d)}return i},"intersect"),xor:o(function(t){var r=this._private.cy;sr(t)&&(t=r.$(t));var i=this.spawn(),n=this,a=t,s=o(function(u,h){for(var d=0;d<u.length;d++){var f=u[d],p=f._private.data.id,m=h.hasElementWithId(p);m||i.push(f)}},"add");return s(n,a),s(a,n),i},"xor"),diff:o(function(t){var r=this._private.cy;sr(t)&&(t=r.$(t));var i=this.spawn(),n=this.spawn(),a=this.spawn(),s=this,l=t,u=o(function(d,f,p){for(var m=0;m<d.length;m++){var g=d[m],y=g._private.data.id,v=f.hasElementWithId(y);v?a.merge(g):p.push(g)}},"add");return u(s,l,i),u(l,s,n),{left:i,right:n,both:a}},"diff"),add:o(function(t){var r=this._private.cy;if(!t)return this;if(sr(t)){var i=t;t=r.mutableElements().filter(i)}for(var n=this.spawnSelf(),a=0;a<t.length;a++){var s=t[a],l=!this.has(s);l&&n.push(s)}return n},"add"),merge:o(function(t){var r=this._private,i=r.cy;if(!t)return this;if(t&&sr(t)){var n=t;t=i.mutableElements().filter(n)}for(var a=r.map,s=0;s<t.length;s++){var l=t[s],u=l._private.data.id,h=!a.has(u);if(h){var d=this.length++;this[d]=l,a.set(u,{ele:l,index:d})}}return this},"merge"),unmergeAt:o(function(t){var r=this[t],i=r.id(),n=this._private,a=n.map;this[t]=void 0,a.delete(i);var s=t===this.length-1;if(this.length>1&&!s){var l=this.length-1,u=this[l],h=u._private.data.id;this[l]=void 0,this[t]=u,a.set(h,{ele:u,index:t})}return this.length--,this},"unmergeAt"),unmergeOne:o(function(t){t=t[0];var r=this._private,i=t._private.data.id,n=r.map,a=n.get(i);if(!a)return this;var s=a.index;return this.unmergeAt(s),this},"unmergeOne"),unmerge:o(function(t){var r=this._private.cy;if(!t)return this;if(t&&sr(t)){var i=t;t=r.mutableElements().filter(i)}for(var n=0;n<t.length;n++)this.unmergeOne(t[n]);return this},"unmerge"),unmergeBy:o(function(t){for(var r=this.length-1;r>=0;r--){var i=this[r];t(i)&&this.unmergeAt(r)}return this},"unmergeBy"),map:o(function(t,r){for(var i=[],n=this,a=0;a<n.length;a++){var s=n[a],l=r?t.apply(r,[s,a,n]):t(s,a,n);i.push(l)}return i},"map"),reduce:o(function(t,r){for(var i=r,n=this,a=0;a<n.length;a++)i=t(i,n[a],a,n);return i},"reduce"),max:o(function(t,r){for(var i=-1/0,n,a=this,s=0;s<a.length;s++){var l=a[s],u=r?t.apply(r,[l,s,a]):t(l,s,a);u>i&&(i=u,n=l)}return{value:i,ele:n}},"max"),min:o(function(t,r){for(var i=1/0,n,a=this,s=0;s<a.length;s++){var l=a[s],u=r?t.apply(r,[l,s,a]):t(l,s,a);u<i&&(i=u,n=l)}return{value:i,ele:n}},"min")},ei=Ume;ei.u=ei["|"]=ei["+"]=ei.union=ei.or=ei.add;ei["\\"]=ei["!"]=ei["-"]=ei.difference=ei.relativeComplement=ei.subtract=ei.not;ei.n=ei["&"]=ei["."]=ei.and=ei.intersection=ei.intersect;ei["^"]=ei["(+)"]=ei["(-)"]=ei.symmetricDifference=ei.symdiff=ei.xor;ei.fnFilter=ei.filterFn=ei.stdFilter=ei.filter;ei.complement=ei.abscomp=ei.absoluteComplement;bat={isNode:o(function(){return this.group()==="nodes"},"isNode"),isEdge:o(function(){return this.group()==="edges"},"isEdge"),isLoop:o(function(){return this.isEdge()&&this.source()[0]===this.target()[0]},"isLoop"),isSimple:o(function(){return this.isEdge()&&this.source()[0]!==this.target()[0]},"isSimple"),group:o(function(){var t=this[0];if(t)return t._private.group},"group")},Hme=o(function(t,r){var i=t.cy(),n=i.hasCompoundNodes();function a(d){var f=d.pstyle("z-compound-depth");return f.value==="auto"?n?d.zDepth():0:f.value==="bottom"?-1:f.value==="top"?pP:0}o(a,"getDepth");var s=a(t)-a(r);if(s!==0)return s;function l(d){var f=d.pstyle("z-index-compare");return f.value==="auto"&&d.isNode()?1:0}o(l,"getEleDepth");var u=l(t)-l(r);if(u!==0)return u;var h=t.pstyle("z-index").value-r.pstyle("z-index").value;return h!==0?h:t.poolIndex()-r.poolIndex()},"zIndexSort"),z3={forEach:o(function(t,r){if(Ji(t))for(var i=this.length,n=0;n<i;n++){var a=this[n],s=r?t.apply(r,[a,n,this]):t(a,n,this);if(s===!1)break}return this},"forEach"),toArray:o(function(){for(var t=[],r=0;r<this.length;r++)t.push(this[r]);return t},"toArray"),slice:o(function(t,r){var i=[],n=this.length;r==null&&(r=n),t==null&&(t=0),t<0&&(t=n+t),r<0&&(r=n+r);for(var a=t;a>=0&&a<r&&a<n;a++)i.push(this[a]);return this.spawn(i)},"slice"),size:o(function(){return this.length},"size"),eq:o(function(t){return this[t]||this.spawn()},"eq"),first:o(function(){return this[0]||this.spawn()},"first"),last:o(function(){return this[this.length-1]||this.spawn()},"last"),empty:o(function(){return this.length===0},"empty"),nonempty:o(function(){return!this.empty()},"nonempty"),sort:o(function(t){if(!Ji(t))return this;var r=this.toArray().sort(t);return this.spawn(r)},"sort"),sortByZIndex:o(function(){return this.sort(Hme)},"sortByZIndex"),zDepth:o(function(){var t=this[0];if(t){var r=t._private,i=r.group;if(i==="nodes"){var n=r.data.parent?t.parents().size():0;return t.isParent()?n:pP-1}else{var a=r.source,s=r.target,l=a.zDepth(),u=s.zDepth();return Math.max(l,u,0)}}},"zDepth")};z3.each=z3.forEach;Tat=o(function(){var t="undefined",r=(typeof Symbol>"u"?"undefined":Wn(Symbol))!=t&&Wn(Symbol.iterator)!=t;r&&(z3[Symbol.iterator]=function(){var i=this,n={value:void 0,done:!1},a=0,s=this.length;return q0e({next:o(function(){return a<s?n.value=i[a++]:(n.value=void 0,n.done=!0),n},"next")},Symbol.iterator,function(){return this})})},"defineSymbolIterator");Tat();Cat=va({nodeDimensionsIncludeLabels:!1}),E3={layoutDimensions:o(function(t){t=Cat(t);var r;if(!this.takesUpSpace())r={w:0,h:0};else if(t.nodeDimensionsIncludeLabels){var i=this.boundingBox();r={w:i.w,h:i.h}}else r={w:this.outerWidth(),h:this.outerHeight()};return(r.w===0||r.h===0)&&(r.w=r.h=1),r},"layoutDimensions"),layoutPositions:o(function(t,r,i){var n=this.nodes().filter(function(C){return!C.isParent()}),a=this.cy(),s=r.eles,l=o(function(k){return k.id()},"getMemoizeKey"),u=p1(i,l);t.emit({type:"layoutstart",layout:t}),t.animations=[];var h=o(function(k,E,A){var N={x:E.x1+E.w/2,y:E.y1+E.h/2},P={x:(A.x-N.x)*k,y:(A.y-N.y)*k};return{x:N.x+P.x,y:N.y+P.y}},"calculateSpacing"),d=r.spacingFactor&&r.spacingFactor!==1,f=o(function(){if(!d)return null;for(var k=is(),E=0;E<n.length;E++){var A=n[E],N=u(A,E);ume(k,N.x,N.y)}return k},"spacingBb"),p=f(),m=p1(function(C,k){var E=u(C,k);if(d){var A=Math.abs(r.spacingFactor);E=h(A,p,E)}return r.transform!=null&&(E=r.transform(C,E)),E},l);if(r.animate){for(var g=0;g<n.length;g++){var y=n[g],v=m(y,g),x=r.animateFilter==null||r.animateFilter(y,g);if(x){var b=y.animation({position:v,duration:r.animationDuration,easing:r.animationEasing});t.animations.push(b)}else y.position(v)}if(r.fit){var T=a.animation({fit:{boundingBox:s.boundingBoxAt(m),padding:r.padding},duration:r.animationDuration,easing:r.animationEasing});t.animations.push(T)}else if(r.zoom!==void 0&&r.pan!==void 0){var w=a.animation({zoom:r.zoom,pan:r.pan,duration:r.animationDuration,easing:r.animationEasing});t.animations.push(w)}t.animations.forEach(function(C){return C.play()}),t.one("layoutready",r.ready),t.emit({type:"layoutready",layout:t}),v1.all(t.animations.map(function(C){return C.promise()})).then(function(){t.one("layoutstop",r.stop),t.emit({type:"layoutstop",layout:t})})}else n.positions(m),r.fit&&a.fit(r.eles,r.padding),r.zoom!=null&&a.zoom(r.zoom),r.pan&&a.pan(r.pan),t.one("layoutready",r.ready),t.emit({type:"layoutready",layout:t}),t.one("layoutstop",r.stop),t.emit({type:"layoutstop",layout:t});return this},"layoutPositions"),layout:o(function(t){var r=this.cy();return r.makeLayout(hr({},t,{eles:this}))},"layout")};E3.createLayout=E3.makeLayout=E3.layout;o(Yme,"styleCache");o(nE,"cacheStyleFunction");o(aE,"cachePrototypeStyleFunction");ga={recalculateRenderedStyle:o(function(t){var r=this.cy(),i=r.renderer(),n=r.styleEnabled();return i&&n&&i.recalculateRenderedStyle(this,t),this},"recalculateRenderedStyle"),dirtyStyleCache:o(function(){var t=this.cy(),r=o(function(a){return a._private.styleCache=null},"dirty");if(t.hasCompoundNodes()){var i;i=this.spawnSelf().merge(this.descendants()).merge(this.parents()),i.merge(i.connectedEdges()),i.forEach(r)}else this.forEach(function(n){r(n),n.connectedEdges().forEach(r)});return this},"dirtyStyleCache"),updateStyle:o(function(t){var r=this._private.cy;if(!r.styleEnabled())return this;if(r.batching()){var i=r._private.batchStyleEles;return i.merge(this),this}var n=r.hasCompoundNodes(),a=this;t=!!(t||t===void 0),n&&(a=this.spawnSelf().merge(this.descendants()).merge(this.parents()));var s=a;return t?s.emitAndNotify("style"):s.emit("style"),a.forEach(function(l){return l._private.styleDirty=!0}),this},"updateStyle"),cleanStyle:o(function(){var t=this.cy();if(t.styleEnabled())for(var r=0;r<this.length;r++){var i=this[r];i._private.styleDirty&&(i._private.styleDirty=!1,t.style().apply(i))}},"cleanStyle"),parsedStyle:o(function(t){var r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!0,i=this[0],n=i.cy();if(n.styleEnabled()&&i){i._private.styleDirty&&(i._private.styleDirty=!1,n.style().apply(i));var a=i._private.style[t];return a??(r?n.style().getDefaultProperty(t):null)}},"parsedStyle"),numericStyle:o(function(t){var r=this[0];if(r.cy().styleEnabled()&&r){var i=r.pstyle(t);return i.pfValue!==void 0?i.pfValue:i.value}},"numericStyle"),numericStyleUnits:o(function(t){var r=this[0];if(r.cy().styleEnabled()&&r)return r.pstyle(t).units},"numericStyleUnits"),renderedStyle:o(function(t){var r=this.cy();if(!r.styleEnabled())return this;var i=this[0];if(i)return r.style().getRenderedStyle(i,t)},"renderedStyle"),style:o(function(t,r){var i=this.cy();if(!i.styleEnabled())return this;var n=!1,a=i.style();if(Xr(t)){var s=t;a.applyBypass(this,s,n),this.emitAndNotify("style")}else if(sr(t))if(r===void 0){var l=this[0];return l?a.getStylePropertyValue(l,t):void 0}else a.applyBypass(this,t,r,n),this.emitAndNotify("style");else if(t===void 0){var u=this[0];return u?a.getRawStyle(u):void 0}return this},"style"),removeStyle:o(function(t){var r=this.cy();if(!r.styleEnabled())return this;var i=!1,n=r.style(),a=this;if(t===void 0)for(var s=0;s<a.length;s++){var l=a[s];n.removeAllBypasses(l,i)}else{t=t.split(/\s+/);for(var u=0;u<a.length;u++){var h=a[u];n.removeBypasses(h,t,i)}}return this.emitAndNotify("style"),this},"removeStyle"),show:o(function(){return this.css("display","element"),this},"show"),hide:o(function(){return this.css("display","none"),this},"hide"),effectiveOpacity:o(function(){var t=this.cy();if(!t.styleEnabled())return 1;var r=t.hasCompoundNodes(),i=this[0];if(i){var n=i._private,a=i.pstyle("opacity").value;if(!r)return a;var s=n.data.parent?i.parents():null;if(s)for(var l=0;l<s.length;l++){var u=s[l],h=u.pstyle("opacity").value;a=h*a}return a}},"effectiveOpacity"),transparent:o(function(){var t=this.cy();if(!t.styleEnabled())return!1;var r=this[0],i=r.cy().hasCompoundNodes();if(r)return i?r.effectiveOpacity()===0:r.pstyle("opacity").value===0},"transparent"),backgrounding:o(function(){var t=this.cy();if(!t.styleEnabled())return!1;var r=this[0];return!!r._private.backgrounding},"backgrounding")};o(IO,"checkCompound");o(EP,"defineDerivedStateFunction");x1=nE("eleTakesUpSpace",function(e){return e.pstyle("display").value==="element"&&e.width()!==0&&(e.isNode()?e.height()!==0:!0)});ga.takesUpSpace=aE("takesUpSpace",EP({ok:x1}));kat=nE("eleInteractive",function(e){return e.pstyle("events").value==="yes"&&e.pstyle("visibility").value==="visible"&&x1(e)}),wat=nE("parentInteractive",function(e){return e.pstyle("visibility").value==="visible"&&x1(e)});ga.interactive=aE("interactive",EP({ok:kat,parentOk:wat,edgeOkViaNode:x1}));ga.noninteractive=function(){var e=this[0];if(e)return!e.interactive()};Sat=nE("eleVisible",function(e){return e.pstyle("visibility").value==="visible"&&e.pstyle("opacity").pfValue!==0&&x1(e)}),Eat=x1;ga.visible=aE("visible",EP({ok:Sat,edgeOkViaNode:Eat}));ga.hidden=function(){var e=this[0];if(e)return!e.visible()};ga.isBundledBezier=aE("isBundledBezier",function(){return this.cy().styleEnabled()?!this.removed()&&this.pstyle("curve-style").value==="bezier"&&this.takesUpSpace():!1});ga.bypass=ga.css=ga.style;ga.renderedCss=ga.renderedStyle;ga.removeBypass=ga.removeCss=ga.removeStyle;ga.pstyle=ga.parsedStyle;Wd={};o(s0e,"defineSwitchFunction");o(b1,"defineSwitchSet");b1({field:"locked",overrideField:o(function(t){return t.cy().autolock()?!0:void 0},"overrideField"),on:"lock",off:"unlock"});b1({field:"grabbable",overrideField:o(function(t){return t.cy().autoungrabify()||t.pannable()?!1:void 0},"overrideField"),on:"grabify",off:"ungrabify"});b1({field:"selected",ableField:"selectable",overrideAble:o(function(t){return t.cy().autounselectify()?!1:void 0},"overrideAble"),on:"select",off:"unselect"});b1({field:"selectable",overrideField:o(function(t){return t.cy().autounselectify()?!1:void 0},"overrideField"),on:"selectify",off:"unselectify"});Wd.deselect=Wd.unselect;Wd.grabbed=function(){var e=this[0];if(e)return e._private.grabbed};b1({field:"active",on:"activate",off:"unactivate"});b1({field:"pannable",on:"panify",off:"unpanify"});Wd.inactive=function(){var e=this[0];if(e)return!e._private.active};Oa={},o0e=o(function(t){return o(function(i){for(var n=this,a=[],s=0;s<n.length;s++){var l=n[s];if(l.isNode()){for(var u=!1,h=l.connectedEdges(),d=0;d<h.length;d++){var f=h[d],p=f.source(),m=f.target();if(t.noIncomingEdges&&m===l&&p!==l||t.noOutgoingEdges&&p===l&&m!==l){u=!0;break}}u||a.push(l)}}return this.spawn(a,!0).filter(i)},"dagExtremityImpl")},"defineDagExtremity"),l0e=o(function(t){return function(r){for(var i=this,n=[],a=0;a<i.length;a++){var s=i[a];if(s.isNode())for(var l=s.connectedEdges(),u=0;u<l.length;u++){var h=l[u],d=h.source(),f=h.target();t.outgoing&&d===s?(n.push(h),n.push(f)):t.incoming&&f===s&&(n.push(h),n.push(d))}}return this.spawn(n,!0).filter(r)}},"defineDagOneHop"),c0e=o(function(t){return function(r){for(var i=this,n=[],a={};;){var s=t.outgoing?i.outgoers():i.incomers();if(s.length===0)break;for(var l=!1,u=0;u<s.length;u++){var h=s[u],d=h.id();a[d]||(a[d]=!0,n.push(h),l=!0)}if(!l)break;i=s}return this.spawn(n,!0).filter(r)}},"defineDagAllHops");Oa.clearTraversalCache=function(){for(var e=0;e<this.length;e++)this[e]._private.traversalCache=null};hr(Oa,{roots:o0e({noIncomingEdges:!0}),leaves:o0e({noOutgoingEdges:!0}),outgoers:Xo(l0e({outgoing:!0}),"outgoers"),successors:c0e({outgoing:!0}),incomers:Xo(l0e({incoming:!0}),"incomers"),predecessors:c0e({})});hr(Oa,{neighborhood:Xo(function(e){for(var t=[],r=this.nodes(),i=0;i<r.length;i++)for(var n=r[i],a=n.connectedEdges(),s=0;s<a.length;s++){var l=a[s],u=l.source(),h=l.target(),d=n===u?h:u;d.length>0&&t.push(d[0]),t.push(l[0])}return this.spawn(t,!0).filter(e)},"neighborhood"),closedNeighborhood:o(function(t){return this.neighborhood().add(this).filter(t)},"closedNeighborhood"),openNeighborhood:o(function(t){return this.neighborhood(t)},"openNeighborhood")});Oa.neighbourhood=Oa.neighborhood;Oa.closedNeighbourhood=Oa.closedNeighborhood;Oa.openNeighbourhood=Oa.openNeighborhood;hr(Oa,{source:Xo(o(function(t){var r=this[0],i;return r&&(i=r._private.source||r.cy().collection()),i&&t?i.filter(t):i},"sourceImpl"),"source"),target:Xo(o(function(t){var r=this[0],i;return r&&(i=r._private.target||r.cy().collection()),i&&t?i.filter(t):i},"targetImpl"),"target"),sources:u0e({attr:"source"}),targets:u0e({attr:"target"})});o(u0e,"defineSourceFunction");hr(Oa,{edgesWith:Xo(h0e(),"edgesWith"),edgesTo:Xo(h0e({thisIsSrc:!0}),"edgesTo")});o(h0e,"defineEdgesWithFunction");hr(Oa,{connectedEdges:Xo(function(e){for(var t=[],r=this,i=0;i<r.length;i++){var n=r[i];if(n.isNode())for(var a=n._private.edges,s=0;s<a.length;s++){var l=a[s];t.push(l)}}return this.spawn(t,!0).filter(e)},"connectedEdges"),connectedNodes:Xo(function(e){for(var t=[],r=this,i=0;i<r.length;i++){var n=r[i];n.isEdge()&&(t.push(n.source()[0]),t.push(n.target()[0]))}return this.spawn(t,!0).filter(e)},"connectedNodes"),parallelEdges:Xo(d0e(),"parallelEdges"),codirectedEdges:Xo(d0e({codirected:!0}),"codirectedEdges")});o(d0e,"defineParallelEdgesFunction");hr(Oa,{components:o(function(t){var r=this,i=r.cy(),n=i.collection(),a=t==null?r.nodes():t.nodes(),s=[];t!=null&&a.empty()&&(a=t.sources());var l=o(function(d,f){n.merge(d),a.unmerge(d),f.merge(d)},"visitInComponent");if(a.empty())return r.spawn();var u=o(function(){var d=i.collection();s.push(d);var f=a[0];l(f,d),r.bfs({directed:!1,roots:f,visit:o(function(m){return l(m,d)},"visit")}),d.forEach(function(p){p.connectedEdges().forEach(function(m){r.has(m)&&d.has(m.source())&&d.has(m.target())&&d.merge(m)})})},"_loop");do u();while(a.length>0);return s},"components"),component:o(function(){var t=this[0];return t.cy().mutableElements().components(t)[0]},"component")});Oa.componentsOf=Oa.components;ya=o(function(t,r){var i=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!1,n=arguments.length>3&&arguments[3]!==void 0?arguments[3]:!1;if(t===void 0){Yi("A collection must have a reference to the core");return}var a=new Ku,s=!1;if(!r)r=[];else if(r.length>0&&Xr(r[0])&&!i2(r[0])){s=!0;for(var l=[],u=new y1,h=0,d=r.length;h<d;h++){var f=r[h];f.data==null&&(f.data={});var p=f.data;if(p.id==null)p.id=ome();else if(t.hasElementWithId(p.id)||u.has(p.id))continue;var m=new X3(t,f,!1);l.push(m),u.add(p.id)}r=l}this.length=0;for(var g=0,y=r.length;g<y;g++){var v=r[g][0];if(v!=null){var x=v._private.data.id;(!i||!a.has(x))&&(i&&a.set(x,{index:this.length,ele:v}),this[this.length]=v,this.length++)}}this._private={eles:this,cy:t,get map(){return this.lazyMap==null&&this.rebuildMap(),this.lazyMap},set map(b){this.lazyMap=b},rebuildMap:o(function(){for(var T=this.lazyMap=new Ku,w=this.eles,C=0;C<w.length;C++){var k=w[C];T.set(k.id(),{index:C,ele:k})}},"rebuildMap")},i&&(this._private.map=a),s&&!n&&this.restore()},"Collection"),Mi=X3.prototype=ya.prototype=Object.create(Array.prototype);Mi.instanceString=function(){return"collection"};Mi.spawn=function(e,t){return new ya(this.cy(),e,t)};Mi.spawnSelf=function(){return this.spawn(this)};Mi.cy=function(){return this._private.cy};Mi.renderer=function(){return this._private.cy.renderer()};Mi.element=function(){return this[0]};Mi.collection=function(){return Y0e(this)?this:new ya(this._private.cy,[this])};Mi.unique=function(){return new ya(this._private.cy,this,!0)};Mi.hasElementWithId=function(e){return e=""+e,this._private.map.has(e)};Mi.getElementById=function(e){e=""+e;var t=this._private.cy,r=this._private.map.get(e);return r?r.ele:new ya(t)};Mi.$id=Mi.getElementById;Mi.poolIndex=function(){var e=this._private.cy,t=e._private.elements,r=this[0]._private.data.id;return t._private.map.get(r).index};Mi.indexOf=function(e){var t=e[0]._private.data.id;return this._private.map.get(t).index};Mi.indexOfId=function(e){return e=""+e,this._private.map.get(e).index};Mi.json=function(e){var t=this.element(),r=this.cy();if(t==null&&e)return this;if(t!=null){var i=t._private;if(Xr(e)){if(r.startBatch(),e.data){t.data(e.data);var n=i.data;if(t.isEdge()){var a=!1,s={},l=e.data.source,u=e.data.target;l!=null&&l!=n.source&&(s.source=""+l,a=!0),u!=null&&u!=n.target&&(s.target=""+u,a=!0),a&&(t=t.move(s))}else{var h="parent"in e.data,d=e.data.parent;h&&(d!=null||n.parent!=null)&&d!=n.parent&&(d===void 0&&(d=null),d!=null&&(d=""+d),t=t.move({parent:d}))}}e.position&&t.position(e.position);var f=o(function(y,v,x){var b=e[y];b!=null&&b!==i[y]&&(b?t[v]():t[x]())},"checkSwitch");return f("removed","remove","restore"),f("selected","select","unselect"),f("selectable","selectify","unselectify"),f("locked","lock","unlock"),f("grabbable","grabify","ungrabify"),f("pannable","panify","unpanify"),e.classes!=null&&t.classes(e.classes),r.endBatch(),this}else if(e===void 0){var p={data:Bc(i.data),position:Bc(i.position),group:i.group,removed:i.removed,selected:i.selected,selectable:i.selectable,locked:i.locked,grabbable:i.grabbable,pannable:i.pannable,classes:null};p.classes="";var m=0;return i.classes.forEach(function(g){return p.classes+=m++===0?g:" "+g}),p}}};Mi.jsons=function(){for(var e=[],t=0;t<this.length;t++){var r=this[t],i=r.json();e.push(i)}return e};Mi.clone=function(){for(var e=this.cy(),t=[],r=0;r<this.length;r++){var i=this[r],n=i.json(),a=new X3(e,n,!1);t.push(a)}return new ya(e,t)};Mi.copy=Mi.clone;Mi.restore=function(){for(var e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:!0,t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!0,r=this,i=r.cy(),n=i._private,a=[],s=[],l,u=0,h=r.length;u<h;u++){var d=r[u];t&&!d.removed()||(d.isNode()?a.push(d):s.push(d))}l=a.concat(s);var f,p=o(function(){l.splice(f,1),f--},"removeFromElements");for(f=0;f<l.length;f++){var m=l[f],g=m._private,y=g.data;if(m.clearTraversalCache(),!(!t&&!g.removed)){if(y.id===void 0)y.id=ome();else if(Ot(y.id))y.id=""+y.id;else if(qd(y.id)||!sr(y.id)){Yi("Can not create element with invalid string ID `"+y.id+"`"),p();continue}else if(i.hasElementWithId(y.id)){Yi("Can not create second element with ID `"+y.id+"`"),p();continue}}var v=y.id;if(m.isNode()){var x=g.position;x.x==null&&(x.x=0),x.y==null&&(x.y=0)}if(m.isEdge()){for(var b=m,T=["source","target"],w=T.length,C=!1,k=0;k<w;k++){var E=T[k],A=y[E];Ot(A)&&(A=y[E]=""+y[E]),A==null||A===""?(Yi("Can not create edge `"+v+"` with unspecified "+E),C=!0):i.hasElementWithId(A)||(Yi("Can not create edge `"+v+"` with nonexistant "+E+" `"+A+"`"),C=!0)}if(C){p();continue}var N=i.getElementById(y.source),P=i.getElementById(y.target);N.same(P)?N._private.edges.push(b):(N._private.edges.push(b),P._private.edges.push(b)),b._private.source=N,b._private.target=P}g.map=new Ku,g.map.set(v,{ele:m,index:0}),g.removed=!1,t&&i.addToPool(m)}for(var I=0;I<a.length;I++){var D=a[I],_=D._private.data;Ot(_.parent)&&(_.parent=""+_.parent);var R=_.parent,M=R!=null;if(M||D._private.parent){var L=D._private.parent?i.collection().merge(D._private.parent):i.getElementById(R);if(L.empty())_.parent=void 0;else if(L[0].removed())di("Node added with missing parent, reference to parent removed"),_.parent=void 0,D._private.parent=null;else{for(var B=!1,O=L;!O.empty();){if(D.same(O)){B=!0,_.parent=void 0;break}O=O.parent()}B||(L[0]._private.children.push(D),D._private.parent=L[0],n.hasCompoundNodes=!0)}}}if(l.length>0){for(var $=l.length===r.length?r:new ya(i,l),G=0;G<$.length;G++){var F=$[G];F.isNode()||(F.parallelEdges().clearTraversalCache(),F.source().clearTraversalCache(),F.target().clearTraversalCache())}var V;n.hasCompoundNodes?V=i.collection().merge($).merge($.connectedNodes()).merge($.parent()):V=$,V.dirtyCompoundBoundsCache().dirtyBoundingBoxCache().updateStyle(e),e?$.emitAndNotify("add"):t&&$.emit("add")}return r};Mi.removed=function(){var e=this[0];return e&&e._private.removed};Mi.inside=function(){var e=this[0];return e&&!e._private.removed};Mi.remove=function(){var e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:!0,t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!0,r=this,i=[],n={},a=r._private.cy;function s(R){for(var M=R._private.edges,L=0;L<M.length;L++)u(M[L])}o(s,"addConnectedEdges");function l(R){for(var M=R._private.children,L=0;L<M.length;L++)u(M[L])}o(l,"addChildren");function u(R){var M=n[R.id()];t&&R.removed()||M||(n[R.id()]=!0,R.isNode()?(i.push(R),s(R),l(R)):i.unshift(R))}o(u,"add");for(var h=0,d=r.length;h<d;h++){var f=r[h];u(f)}function p(R,M){var L=R._private.edges;Ud(L,M),R.clearTraversalCache()}o(p,"removeEdgeRef");function m(R){R.clearTraversalCache()}o(m,"removeParallelRef");var g=[];g.ids={};function y(R,M){M=M[0],R=R[0];var L=R._private.children,B=R.id();Ud(L,M),M._private.parent=null,g.ids[B]||(g.ids[B]=!0,g.push(R))}o(y,"removeChildRef"),r.dirtyCompoundBoundsCache(),t&&a.removeFromPool(i);for(var v=0;v<i.length;v++){var x=i[v];if(x.isEdge()){var b=x.source()[0],T=x.target()[0];p(b,x),p(T,x);for(var w=x.parallelEdges(),C=0;C<w.length;C++){var k=w[C];m(k),k.isBundledBezier()&&k.dirtyBoundingBoxCache()}}else{var E=x.parent();E.length!==0&&y(E,x)}t&&(x._private.removed=!0)}var A=a._private.elements;a._private.hasCompoundNodes=!1;for(var N=0;N<A.length;N++){var P=A[N];if(P.isParent()){a._private.hasCompoundNodes=!0;break}}var I=new ya(this.cy(),i);I.size()>0&&(e?I.emitAndNotify("remove"):t&&I.emit("remove"));for(var D=0;D<g.length;D++){var _=g[D];(!t||!_.removed())&&_.updateStyle()}return I};Mi.move=function(e){var t=this._private.cy,r=this,i=!1,n=!1,a=o(function(g){return g==null?g:""+g},"toString");if(e.source!==void 0||e.target!==void 0){var s=a(e.source),l=a(e.target),u=s!=null&&t.hasElementWithId(s),h=l!=null&&t.hasElementWithId(l);(u||h)&&(t.batch(function(){r.remove(i,n),r.emitAndNotify("moveout");for(var m=0;m<r.length;m++){var g=r[m],y=g._private.data;g.isEdge()&&(u&&(y.source=s),h&&(y.target=l))}r.restore(i,n)}),r.emitAndNotify("move"))}else if(e.parent!==void 0){var d=a(e.parent),f=d===null||t.hasElementWithId(d);if(f){var p=d===null?void 0:d;t.batch(function(){var m=r.remove(i,n);m.emitAndNotify("moveout");for(var g=0;g<r.length;g++){var y=r[g],v=y._private.data;y.isNode()&&(v.parent=p)}m.restore(i,n)}),r.emitAndNotify("move")}}return this};[xme,Bnt,S3,Vd,g1,Jnt,rE,mat,qme,Ume,bat,z3,E3,ga,Wd,Oa].forEach(function(e){hr(Mi,e)});Aat={add:o(function(t){var r,i=this;if(uo(t)){var n=t;if(n._private.cy===i)r=n.restore();else{for(var a=[],s=0;s<n.length;s++){var l=n[s];a.push(l.json())}r=new ya(i,a)}}else if(Si(t)){var u=t;r=new ya(i,u)}else if(Xr(t)&&(Si(t.nodes)||Si(t.edges))){for(var h=t,d=[],f=["nodes","edges"],p=0,m=f.length;p<m;p++){var g=f[p],y=h[g];if(Si(y))for(var v=0,x=y.length;v<x;v++){var b=hr({group:g},y[v]);d.push(b)}}r=new ya(i,d)}else{var T=t;r=new X3(i,T).collection()}return r},"add"),remove:o(function(t){if(!uo(t)){if(sr(t)){var r=t;t=this.$(r)}}return t.remove()},"remove")};o(_at,"generateCubicBezier");Dat=(function(){function e(i){return-i.tension*i.x-i.friction*i.v}o(e,"springAccelerationForState");function t(i,n,a){var s={x:i.x+a.dx*n,v:i.v+a.dv*n,tension:i.tension,friction:i.friction};return{dx:s.v,dv:e(s)}}o(t,"springEvaluateStateWithDerivative");function r(i,n){var a={dx:i.v,dv:e(i)},s=t(i,n*.5,a),l=t(i,n*.5,s),u=t(i,n,l),h=1/6*(a.dx+2*(s.dx+l.dx)+u.dx),d=1/6*(a.dv+2*(s.dv+l.dv)+u.dv);return i.x=i.x+h*n,i.v=i.v+d*n,i}return o(r,"springIntegrateState"),o(function i(n,a,s){var l={x:-1,v:0,tension:null,friction:null},u=[0],h=0,d=1/1e4,f=16/1e3,p,m,g;for(n=parseFloat(n)||500,a=parseFloat(a)||20,s=s||null,l.tension=n,l.friction=a,p=s!==null,p?(h=i(n,a),m=h/s*f):m=f;g=r(g||l,m),u.push(1+g.x),h+=16,Math.abs(g.x)>d&&Math.abs(g.v)>d;);return p?function(y){return u[y*(u.length-1)|0]}:h},"springRK4Factory")})(),Li=o(function(t,r,i,n){var a=_at(t,r,i,n);return function(s,l,u){return s+(l-s)*a(u)}},"cubicBezier"),A3={linear:o(function(t,r,i){return t+(r-t)*i},"linear"),ease:Li(.25,.1,.25,1),"ease-in":Li(.42,0,1,1),"ease-out":Li(0,0,.58,1),"ease-in-out":Li(.42,0,.58,1),"ease-in-sine":Li(.47,0,.745,.715),"ease-out-sine":Li(.39,.575,.565,1),"ease-in-out-sine":Li(.445,.05,.55,.95),"ease-in-quad":Li(.55,.085,.68,.53),"ease-out-quad":Li(.25,.46,.45,.94),"ease-in-out-quad":Li(.455,.03,.515,.955),"ease-in-cubic":Li(.55,.055,.675,.19),"ease-out-cubic":Li(.215,.61,.355,1),"ease-in-out-cubic":Li(.645,.045,.355,1),"ease-in-quart":Li(.895,.03,.685,.22),"ease-out-quart":Li(.165,.84,.44,1),"ease-in-out-quart":Li(.77,0,.175,1),"ease-in-quint":Li(.755,.05,.855,.06),"ease-out-quint":Li(.23,1,.32,1),"ease-in-out-quint":Li(.86,0,.07,1),"ease-in-expo":Li(.95,.05,.795,.035),"ease-out-expo":Li(.19,1,.22,1),"ease-in-out-expo":Li(1,0,0,1),"ease-in-circ":Li(.6,.04,.98,.335),"ease-out-circ":Li(.075,.82,.165,1),"ease-in-out-circ":Li(.785,.135,.15,.86),spring:o(function(t,r,i){if(i===0)return A3.linear;var n=Dat(t,r,i);return function(a,s,l){return a+(s-a)*n(l)}},"spring"),"cubic-bezier":Li};o(f0e,"getEasedValue");o(p0e,"getValue");o(t1,"ease");o(Rat,"step$1");o(Pb,"valid");o(Lat,"startAnimation");o(m0e,"stepAll");Mat={animate:hi.animate(),animation:hi.animation(),animated:hi.animated(),clearQueue:hi.clearQueue(),delay:hi.delay(),delayAnimation:hi.delayAnimation(),stop:hi.stop(),addToAnimationPool:o(function(t){var r=this;r.styleEnabled()&&r._private.aniEles.merge(t)},"addToAnimationPool"),stopAnimationLoop:o(function(){this._private.animationsRunning=!1},"stopAnimationLoop"),startAnimationLoop:o(function(){var t=this;if(t._private.animationsRunning=!0,!t.styleEnabled())return;function r(){t._private.animationsRunning&&O3(o(function(a){m0e(a,t),r()},"animationStep"))}o(r,"headlessStep");var i=t.renderer();i&&i.beforeRender?i.beforeRender(o(function(a,s){m0e(s,t)},"rendererAnimationStep"),i.beforeRenderPriorities.animations):r()},"startAnimationLoop")},Nat={qualifierCompare:o(function(t,r){return t==null||r==null?t==null&&r==null:t.sameText(r)},"qualifierCompare"),eventMatches:o(function(t,r,i){var n=r.qualifier;return n!=null?t!==i.target&&i2(i.target)&&n.matches(i.target):!0},"eventMatches"),addEventFields:o(function(t,r){r.cy=t,r.target=t},"addEventFields"),callbackContext:o(function(t,r,i){return r.qualifier!=null?i.target:t},"callbackContext")},v3=o(function(t){return sr(t)?new Yd(t):t},"argSelector"),jme={createEmitter:o(function(){var t=this._private;return t.emitter||(t.emitter=new iE(Nat,this)),this},"createEmitter"),emitter:o(function(){return this._private.emitter},"emitter"),on:o(function(t,r,i){return this.emitter().on(t,v3(r),i),this},"on"),removeListener:o(function(t,r,i){return this.emitter().removeListener(t,v3(r),i),this},"removeListener"),removeAllListeners:o(function(){return this.emitter().removeAllListeners(),this},"removeAllListeners"),one:o(function(t,r,i){return this.emitter().one(t,v3(r),i),this},"one"),once:o(function(t,r,i){return this.emitter().one(t,v3(r),i),this},"once"),emit:o(function(t,r){return this.emitter().emit(t,r),this},"emit"),emitAndNotify:o(function(t,r){return this.emit(t),this.notify(t,r),this},"emitAndNotify")};hi.eventAliasesOn(jme);JO={png:o(function(t){var r=this._private.renderer;return t=t||{},r.png(t)},"png"),jpg:o(function(t){var r=this._private.renderer;return t=t||{},t.bg=t.bg||"#fff",r.jpg(t)},"jpg")};JO.jpeg=JO.jpg;_3={layout:o(function(t){var r=this;if(t==null){Yi("Layout options must be specified to make a layout");return}if(t.name==null){Yi("A `name` must be specified to make a layout");return}var i=t.name,n=r.extension("layout",i);if(n==null){Yi("No such layout `"+i+"` found.  Did you forget to import it and `cytoscape.use()` it?");return}var a;sr(t.eles)?a=r.$(t.eles):a=t.eles!=null?t.eles:r.$();var s=new n(hr({},t,{cy:r,eles:a}));return s},"layout")};_3.createLayout=_3.makeLayout=_3.layout;Iat={notify:o(function(t,r){var i=this._private;if(this.batching()){i.batchNotifications=i.batchNotifications||{};var n=i.batchNotifications[t]=i.batchNotifications[t]||this.collection();r!=null&&n.merge(r);return}if(i.notificationsEnabled){var a=this.renderer();this.destroyed()||!a||a.notify(t,r)}},"notify"),notifications:o(function(t){var r=this._private;return t===void 0?r.notificationsEnabled:(r.notificationsEnabled=!!t,this)},"notifications"),noNotifications:o(function(t){this.notifications(!1),t(),this.notifications(!0)},"noNotifications"),batching:o(function(){return this._private.batchCount>0},"batching"),startBatch:o(function(){var t=this._private;return t.batchCount==null&&(t.batchCount=0),t.batchCount===0&&(t.batchStyleEles=this.collection(),t.batchNotifications={}),t.batchCount++,this},"startBatch"),endBatch:o(function(){var t=this._private;if(t.batchCount===0)return this;if(t.batchCount--,t.batchCount===0){t.batchStyleEles.updateStyle();var r=this.renderer();Object.keys(t.batchNotifications).forEach(function(i){var n=t.batchNotifications[i];n.empty()?r.notify(i):r.notify(i,n)})}return this},"endBatch"),batch:o(function(t){return this.startBatch(),t(),this.endBatch(),this},"batch"),batchData:o(function(t){var r=this;return this.batch(function(){for(var i=Object.keys(t),n=0;n<i.length;n++){var a=i[n],s=t[a],l=r.getElementById(a);l.data(s)}})},"batchData")},Oat=va({hideEdgesOnViewport:!1,textureOnViewport:!1,motionBlur:!1,motionBlurOpacity:.05,pixelRatio:void 0,desktopTapThreshold:4,touchTapThreshold:8,wheelSensitivity:1,debug:!1,showFps:!1,webgl:!1,webglDebug:!1,webglDebugShowAtlases:!1,webglTexSize:2048,webglTexRows:36,webglTexRowsNodes:18,webglBatchSize:2048,webglTexPerBatch:14,webglBgColor:[255,255,255]}),eP={renderTo:o(function(t,r,i,n){var a=this._private.renderer;return a.renderTo(t,r,i,n),this},"renderTo"),renderer:o(function(){return this._private.renderer},"renderer"),forceRender:o(function(){return this.notify("draw"),this},"forceRender"),resize:o(function(){return this.invalidateSize(),this.emitAndNotify("resize"),this},"resize"),initRenderer:o(function(t){var r=this,i=r.extension("renderer",t.name);if(i==null){Yi("Can not initialise: No such renderer `".concat(t.name,"` found. Did you forget to import it and `cytoscape.use()` it?"));return}t.wheelSensitivity!==void 0&&di("You have set a custom wheel sensitivity.  This will make your app zoom unnaturally when using mainstream mice.  You should change this value from the default only if you can guarantee that all your users will use the same hardware and OS configuration as your current machine.");var n=Oat(t);n.cy=r,r._private.renderer=new i(n),this.notify("init")},"initRenderer"),destroyRenderer:o(function(){var t=this;t.notify("destroy");var r=t.container();if(r)for(r._cyreg=null;r.childNodes.length>0;)r.removeChild(r.childNodes[0]);t._private.renderer=null,t.mutableElements().forEach(function(i){var n=i._private;n.rscratch={},n.rstyle={},n.animation.current=[],n.animation.queue=[]})},"destroyRenderer"),onRender:o(function(t){return this.on("render",t)},"onRender"),offRender:o(function(t){return this.off("render",t)},"offRender")};eP.invalidateDimensions=eP.resize;D3={collection:o(function(t,r){return sr(t)?this.$(t):uo(t)?t.collection():Si(t)?(r||(r={}),new ya(this,t,r.unique,r.removed)):new ya(this)},"collection"),nodes:o(function(t){var r=this.$(function(i){return i.isNode()});return t?r.filter(t):r},"nodes"),edges:o(function(t){var r=this.$(function(i){return i.isEdge()});return t?r.filter(t):r},"edges"),$:o(function(t){var r=this._private.elements;return t?r.filter(t):r.spawnSelf()},"$"),mutableElements:o(function(){return this._private.elements},"mutableElements")};D3.elements=D3.filter=D3.$;sa={},Wb="t",Pat="f";sa.apply=function(e){for(var t=this,r=t._private,i=r.cy,n=i.collection(),a=0;a<e.length;a++){var s=e[a],l=t.getContextMeta(s);if(!l.empty){var u=t.getContextStyle(l),h=t.applyContextStyle(l,u,s);s._private.appliedInitStyle?t.updateTransitions(s,h.diffProps):s._private.appliedInitStyle=!0;var d=t.updateStyleHints(s);d&&n.push(s)}}return n};sa.getPropertiesDiff=function(e,t){var r=this,i=r._private.propDiffs=r._private.propDiffs||{},n=e+"-"+t,a=i[n];if(a)return a;for(var s=[],l={},u=0;u<r.length;u++){var h=r[u],d=e[u]===Wb,f=t[u]===Wb,p=d!==f,m=h.mappedProperties.length>0;if(p||f&&m){var g=void 0;p&&m||p?g=h.properties:m&&(g=h.mappedProperties);for(var y=0;y<g.length;y++){for(var v=g[y],x=v.name,b=!1,T=u+1;T<r.length;T++){var w=r[T],C=t[T]===Wb;if(C&&(b=w.properties[v.name]!=null,b))break}!l[x]&&!b&&(l[x]=!0,s.push(x))}}}return i[n]=s,s};sa.getContextMeta=function(e){for(var t=this,r="",i,n=e._private.styleCxtKey||"",a=0;a<t.length;a++){var s=t[a],l=s.selector&&s.selector.matches(e);l?r+=Wb:r+=Pat}return i=t.getPropertiesDiff(n,r),e._private.styleCxtKey=r,{key:r,diffPropNames:i,empty:i.length===0}};sa.getContextStyle=function(e){var t=e.key,r=this,i=this._private.contextStyles=this._private.contextStyles||{};if(i[t])return i[t];for(var n={_private:{key:t}},a=0;a<r.length;a++){var s=r[a],l=t[a]===Wb;if(l)for(var u=0;u<s.properties.length;u++){var h=s.properties[u];n[h.name]=h}}return i[t]=n,n};sa.applyContextStyle=function(e,t,r){for(var i=this,n=e.diffPropNames,a={},s=i.types,l=0;l<n.length;l++){var u=n[l],h=t[u],d=r.pstyle(u);if(!h)if(d)d.bypass?h={name:u,deleteBypassed:!0}:h={name:u,delete:!0};else continue;if(d!==h){if(h.mapped===s.fn&&d!=null&&d.mapping!=null&&d.mapping.value===h.value){var f=d.mapping,p=f.fnValue=h.value(r);if(p===f.prevFnValue)continue}var m=a[u]={prev:d};i.applyParsedProperty(r,h),m.next=r.pstyle(u),m.next&&m.next.bypass&&(m.next=m.next.bypassed)}}return{diffProps:a}};sa.updateStyleHints=function(e){var t=e._private,r=this,i=r.propertyGroupNames,n=r.propertyGroupKeys,a=o(function(ee,Te,ue){return r.getPropertiesHash(ee,Te,ue)},"propHash"),s=t.styleKey;if(e.removed())return!1;var l=t.group==="nodes",u=e._private.style;i=Object.keys(u);for(var h=0;h<n.length;h++){var d=n[h];t.styleKeys[d]=[Kp,s1]}for(var f=o(function(ee,Te){return t.styleKeys[Te][0]=Hb(ee,t.styleKeys[Te][0])},"updateGrKey1"),p=o(function(ee,Te){return t.styleKeys[Te][1]=Yb(ee,t.styleKeys[Te][1])},"updateGrKey2"),m=o(function(ee,Te){f(ee,Te),p(ee,Te)},"updateGrKey"),g=o(function(ee,Te){for(var ue=0;ue<ee.length;ue++){var De=ee.charCodeAt(ue);f(De,Te),p(De,Te)}},"updateGrKeyWStr"),y=2e9,v=o(function(ee){return-128<ee&&ee<128&&Math.floor(ee)!==ee?y-(ee*1024|0):ee},"cleanNum"),x=0;x<i.length;x++){var b=i[x],T=u[b];if(T!=null){var w=this.properties[b],C=w.type,k=w.groupKey,E=void 0;w.hashOverride!=null?E=w.hashOverride(e,T):T.pfValue!=null&&(E=T.pfValue);var A=w.enums==null?T.value:null,N=E!=null,P=A!=null,I=N||P,D=T.units;if(C.number&&I&&!C.multiple){var _=N?E:A;m(v(_),k),!N&&D!=null&&g(D,k)}else g(T.strValue,k)}}for(var R=[Kp,s1],M=0;M<n.length;M++){var L=n[M],B=t.styleKeys[L];R[0]=Hb(B[0],R[0]),R[1]=Yb(B[1],R[1])}t.styleKey=Qtt(R[0],R[1]);var O=t.styleKeys;t.labelDimsKey=Pd(O.labelDimensions);var $=a(e,["label"],O.labelDimensions);if(t.labelKey=Pd($),t.labelStyleKey=Pd(u3(O.commonLabel,$)),!l){var G=a(e,["source-label"],O.labelDimensions);t.sourceLabelKey=Pd(G),t.sourceLabelStyleKey=Pd(u3(O.commonLabel,G));var F=a(e,["target-label"],O.labelDimensions);t.targetLabelKey=Pd(F),t.targetLabelStyleKey=Pd(u3(O.commonLabel,F))}if(l){var V=t.styleKeys,H=V.nodeBody,j=V.nodeBorder,U=V.nodeOutline,Q=V.backgroundImage,Y=V.compound,ae=V.pie,J=V.stripe,te=[H,j,U,Q,Y,ae,J].filter(function(re){return re!=null}).reduce(u3,[Kp,s1]);t.nodeKey=Pd(te),t.hasPie=ae!=null&&ae[0]!==Kp&&ae[1]!==s1,t.hasStripe=J!=null&&J[0]!==Kp&&J[1]!==s1}return s!==t.styleKey};sa.clearStyleHints=function(e){var t=e._private;t.styleCxtKey="",t.styleKeys={},t.styleKey=null,t.labelKey=null,t.labelStyleKey=null,t.sourceLabelKey=null,t.sourceLabelStyleKey=null,t.targetLabelKey=null,t.targetLabelStyleKey=null,t.nodeKey=null,t.hasPie=null,t.hasStripe=null};sa.applyParsedProperty=function(e,t){var r=this,i=t,n=e._private.style,a,s=r.types,l=r.properties[i.name].type,u=i.bypass,h=n[i.name],d=h&&h.bypass,f=e._private,p="mapping",m=o(function(H){return H==null?null:H.pfValue!=null?H.pfValue:H.value},"getVal"),g=o(function(){var H=m(h),j=m(i);r.checkTriggers(e,i.name,H,j)},"checkTriggers");if(t.name==="curve-style"&&e.isEdge()&&(t.value!=="bezier"&&e.isLoop()||t.value==="haystack"&&(e.source().isParent()||e.target().isParent()))&&(i=t=this.parse(t.name,"bezier",u)),i.delete)return n[i.name]=void 0,g(),!0;if(i.deleteBypassed)return h?h.bypass?(h.bypassed=void 0,g(),!0):!1:(g(),!0);if(i.deleteBypass)return h?h.bypass?(n[i.name]=h.bypassed,g(),!0):!1:(g(),!0);var y=o(function(){di("Do not assign mappings to elements without corresponding data (i.e. ele `"+e.id()+"` has no mapping for property `"+i.name+"` with data field `"+i.field+"`); try a `["+i.field+"]` selector to limit scope to elements with `"+i.field+"` defined")},"printMappingErr");switch(i.mapped){case s.mapData:{for(var v=i.field.split("."),x=f.data,b=0;b<v.length&&x;b++){var T=v[b];x=x[T]}if(x==null)return y(),!1;var w;if(Ot(x)){var C=i.fieldMax-i.fieldMin;C===0?w=0:w=(x-i.fieldMin)/C}else return di("Do not use continuous mappers without specifying numeric data (i.e. `"+i.field+": "+x+"` for `"+e.id()+"` is non-numeric)"),!1;if(w<0?w=0:w>1&&(w=1),l.color){var k=i.valueMin[0],E=i.valueMax[0],A=i.valueMin[1],N=i.valueMax[1],P=i.valueMin[2],I=i.valueMax[2],D=i.valueMin[3]==null?1:i.valueMin[3],_=i.valueMax[3]==null?1:i.valueMax[3],R=[Math.round(k+(E-k)*w),Math.round(A+(N-A)*w),Math.round(P+(I-P)*w),Math.round(D+(_-D)*w)];a={bypass:i.bypass,name:i.name,value:R,strValue:"rgb("+R[0]+", "+R[1]+", "+R[2]+")"}}else if(l.number){var M=i.valueMin+(i.valueMax-i.valueMin)*w;a=this.parse(i.name,M,i.bypass,p)}else return!1;if(!a)return y(),!1;a.mapping=i,i=a;break}case s.data:{for(var L=i.field.split("."),B=f.data,O=0;O<L.length&&B;O++){var $=L[O];B=B[$]}if(B!=null&&(a=this.parse(i.name,B,i.bypass,p)),!a)return y(),!1;a.mapping=i,i=a;break}case s.fn:{var G=i.value,F=i.fnValue!=null?i.fnValue:G(e);if(i.prevFnValue=F,F==null)return di("Custom function mappers may not return null (i.e. `"+i.name+"` for ele `"+e.id()+"` is null)"),!1;if(a=this.parse(i.name,F,i.bypass,p),!a)return di("Custom function mappers may not return invalid values for the property type (i.e. `"+i.name+"` for ele `"+e.id()+"` is invalid)"),!1;a.mapping=Bc(i),i=a;break}case void 0:break;default:return!1}return u?(d?i.bypassed=h.bypassed:i.bypassed=h,n[i.name]=i):d?h.bypassed=i:n[i.name]=i,g(),!0};sa.cleanElements=function(e,t){for(var r=0;r<e.length;r++){var i=e[r];if(this.clearStyleHints(i),i.dirtyCompoundBoundsCache(),i.dirtyBoundingBoxCache(),!t)i._private.style={};else for(var n=i._private.style,a=Object.keys(n),s=0;s<a.length;s++){var l=a[s],u=n[l];u!=null&&(u.bypass?u.bypassed=null:n[l]=null)}}};sa.update=function(){var e=this._private.cy,t=e.mutableElements();t.updateStyle()};sa.updateTransitions=function(e,t){var r=this,i=e._private,n=e.pstyle("transition-property").value,a=e.pstyle("transition-duration").pfValue,s=e.pstyle("transition-delay").pfValue;if(n.length>0&&a>0){for(var l={},u=!1,h=0;h<n.length;h++){var d=n[h],f=e.pstyle(d),p=t[d];if(p){var m=p.prev,g=m,y=p.next!=null?p.next:f,v=!1,x=void 0,b=1e-6;g&&(Ot(g.pfValue)&&Ot(y.pfValue)?(v=y.pfValue-g.pfValue,x=g.pfValue+b*v):Ot(g.value)&&Ot(y.value)?(v=y.value-g.value,x=g.value+b*v):Si(g.value)&&Si(y.value)&&(v=g.value[0]!==y.value[0]||g.value[1]!==y.value[1]||g.value[2]!==y.value[2],x=g.strValue),v&&(l[d]=y.strValue,this.applyBypass(e,d,x),u=!0))}}if(!u)return;i.transitioning=!0,new v1(function(T){s>0?e.delayAnimation(s).play().promise().then(T):T()}).then(function(){return e.animation({style:l,duration:a,easing:e.pstyle("transition-timing-function").value,queue:!1}).play().promise()}).then(function(){r.removeBypasses(e,n),e.emitAndNotify("style"),i.transitioning=!1})}else i.transitioning&&(this.removeBypasses(e,n),e.emitAndNotify("style"),i.transitioning=!1)};sa.checkTrigger=function(e,t,r,i,n,a){var s=this.properties[t],l=n(s);e.removed()||l!=null&&l(r,i,e)&&a(s)};sa.checkZOrderTrigger=function(e,t,r,i){var n=this;this.checkTrigger(e,t,r,i,function(a){return a.triggersZOrder},function(){n._private.cy.notify("zorder",e)})};sa.checkBoundsTrigger=function(e,t,r,i){this.checkTrigger(e,t,r,i,function(n){return n.triggersBounds},function(n){e.dirtyCompoundBoundsCache(),e.dirtyBoundingBoxCache()})};sa.checkConnectedEdgesBoundsTrigger=function(e,t,r,i){this.checkTrigger(e,t,r,i,function(n){return n.triggersBoundsOfConnectedEdges},function(n){e.connectedEdges().forEach(function(a){a.dirtyBoundingBoxCache()})})};sa.checkParallelEdgesBoundsTrigger=function(e,t,r,i){this.checkTrigger(e,t,r,i,function(n){return n.triggersBoundsOfParallelEdges},function(n){e.parallelEdges().forEach(function(a){a.dirtyBoundingBoxCache()})})};sa.checkTriggers=function(e,t,r,i){e.dirtyStyleCache(),this.checkZOrderTrigger(e,t,r,i),this.checkBoundsTrigger(e,t,r,i),this.checkConnectedEdgesBoundsTrigger(e,t,r,i),this.checkParallelEdgesBoundsTrigger(e,t,r,i)};u2={};u2.applyBypass=function(e,t,r,i){var n=this,a=[],s=!0;if(t==="*"||t==="**"){if(r!==void 0)for(var l=0;l<n.properties.length;l++){var u=n.properties[l],h=u.name,d=this.parse(h,r,!0);d&&a.push(d)}}else if(sr(t)){var f=this.parse(t,r,!0);f&&a.push(f)}else if(Xr(t)){var p=t;i=r;for(var m=Object.keys(p),g=0;g<m.length;g++){var y=m[g],v=p[y];if(v===void 0&&(v=p[Y3(y)]),v!==void 0){var x=this.parse(y,v,!0);x&&a.push(x)}}}else return!1;if(a.length===0)return!1;for(var b=!1,T=0;T<e.length;T++){for(var w=e[T],C={},k=void 0,E=0;E<a.length;E++){var A=a[E];if(i){var N=w.pstyle(A.name);k=C[A.name]={prev:N}}b=this.applyParsedProperty(w,Bc(A))||b,i&&(k.next=w.pstyle(A.name))}b&&this.updateStyleHints(w),i&&this.updateTransitions(w,C,s)}return b};u2.overrideBypass=function(e,t,r){t=dP(t);for(var i=0;i<e.length;i++){var n=e[i],a=n._private.style[t],s=this.properties[t].type,l=s.color,u=s.mutiple,h=a?a.pfValue!=null?a.pfValue:a.value:null;!a||!a.bypass?this.applyBypass(n,t,r):(a.value=r,a.pfValue!=null&&(a.pfValue=r),l?a.strValue="rgb("+r.join(",")+")":u?a.strValue=r.join(" "):a.strValue=""+r,this.updateStyleHints(n)),this.checkTriggers(n,t,h,r)}};u2.removeAllBypasses=function(e,t){return this.removeBypasses(e,this.propertyNames,t)};u2.removeBypasses=function(e,t,r){for(var i=!0,n=0;n<e.length;n++){for(var a=e[n],s={},l=0;l<t.length;l++){var u=t[l],h=this.properties[u],d=a.pstyle(h.name);if(!(!d||!d.bypass)){var f="",p=this.parse(u,f,!0),m=s[h.name]={prev:d};this.applyParsedProperty(a,p),m.next=a.pstyle(h.name)}}this.updateStyleHints(a),r&&this.updateTransitions(a,s,i)}};AP={};AP.getEmSizeInPixels=function(){var e=this.containerCss("font-size");return e!=null?parseFloat(e):1};AP.containerCss=function(e){var t=this._private.cy,r=t.container(),i=t.window();if(i&&r&&i.getComputedStyle)return i.getComputedStyle(r).getPropertyValue(e)};Fc={};Fc.getRenderedStyle=function(e,t){return t?this.getStylePropertyValue(e,t,!0):this.getRawStyle(e,!0)};Fc.getRawStyle=function(e,t){var r=this;if(e=e[0],e){for(var i={},n=0;n<r.properties.length;n++){var a=r.properties[n],s=r.getStylePropertyValue(e,a.name,t);s!=null&&(i[a.name]=s,i[Y3(a.name)]=s)}return i}};Fc.getIndexedStyle=function(e,t,r,i){var n=e.pstyle(t)[r][i];return n??e.cy().style().getDefaultProperty(t)[r][0]};Fc.getStylePropertyValue=function(e,t,r){var i=this;if(e=e[0],e){var n=i.properties[t];n.alias&&(n=n.pointsTo);var a=n.type,s=e.pstyle(n.name);if(s){var l=s.value,u=s.units,h=s.strValue;if(r&&a.number&&l!=null&&Ot(l)){var d=e.cy().zoom(),f=o(function(v){return v*d},"getRenderedValue"),p=o(function(v,x){return f(v)+x},"getValueStringWithUnits"),m=Si(l),g=m?u.every(function(y){return y!=null}):u!=null;return g?m?l.map(function(y,v){return p(y,u[v])}).join(" "):p(l,u):m?l.map(function(y){return sr(y)?y:""+f(y)}).join(" "):""+f(l)}else if(h!=null)return h}return null}};Fc.getAnimationStartStyle=function(e,t){for(var r={},i=0;i<t.length;i++){var n=t[i],a=n.name,s=e.pstyle(a);s!==void 0&&(Xr(s)?s=this.parse(a,s.strValue):s=this.parse(a,s)),s&&(r[a]=s)}return r};Fc.getPropsList=function(e){var t=this,r=[],i=e,n=t.properties;if(i)for(var a=Object.keys(i),s=0;s<a.length;s++){var l=a[s],u=i[l],h=n[l]||n[dP(l)],d=this.parse(h.name,u);d&&r.push(d)}return r};Fc.getNonDefaultPropertiesHash=function(e,t,r){var i=r.slice(),n,a,s,l,u,h;for(u=0;u<t.length;u++)if(n=t[u],a=e.pstyle(n,!1),a!=null)if(a.pfValue!=null)i[0]=Hb(l,i[0]),i[1]=Yb(l,i[1]);else for(s=a.strValue,h=0;h<s.length;h++)l=s.charCodeAt(h),i[0]=Hb(l,i[0]),i[1]=Yb(l,i[1]);return i};Fc.getPropertiesHash=Fc.getNonDefaultPropertiesHash;sE={};sE.appendFromJson=function(e){for(var t=this,r=0;r<e.length;r++){var i=e[r],n=i.selector,a=i.style||i.css,s=Object.keys(a);t.selector(n);for(var l=0;l<s.length;l++){var u=s[l],h=a[u];t.css(u,h)}}return t};sE.fromJson=function(e){var t=this;return t.resetToDefault(),t.appendFromJson(e),t};sE.json=function(){for(var e=[],t=this.defaultLength;t<this.length;t++){for(var r=this[t],i=r.selector,n=r.properties,a={},s=0;s<n.length;s++){var l=n[s];a[l.name]=l.strValue}e.push({selector:i?i.toString():"core",style:a})}return e};_P={};_P.appendFromString=function(e){var t=this,r=this,i=""+e,n,a,s;i=i.replace(/[/][*](\s|.)+?[*][/]/g,"");function l(){i.length>n.length?i=i.substr(n.length):i=""}o(l,"removeSelAndBlockFromRemaining");function u(){a.length>s.length?a=a.substr(s.length):a=""}for(o(u,"removePropAndValFromRem");;){var h=i.match(/^\s*$/);if(h)break;var d=i.match(/^\s*((?:.|\s)+?)\s*\{((?:.|\s)+?)\}/);if(!d){di("Halting stylesheet parsing: String stylesheet contains more to parse but no selector and block found in: "+i);break}n=d[0];var f=d[1];if(f!=="core"){var p=new Yd(f);if(p.invalid){di("Skipping parsing of block: Invalid selector found in string stylesheet: "+f),l();continue}}var m=d[2],g=!1;a=m;for(var y=[];;){var v=a.match(/^\s*$/);if(v)break;var x=a.match(/^\s*(.+?)\s*:\s*(.+?)(?:\s*;|\s*$)/);if(!x){di("Skipping parsing of block: Invalid formatting of style property and value definitions found in:"+m),g=!0;break}s=x[0];var b=x[1],T=x[2],w=t.properties[b];if(!w){di("Skipping property: Invalid property name in: "+s),u();continue}var C=r.parse(b,T);if(!C){di("Skipping property: Invalid property definition in: "+s),u();continue}y.push({name:b,val:T}),u()}if(g){l();break}r.selector(f);for(var k=0;k<y.length;k++){var E=y[k];r.css(E.name,E.val)}l()}return r};_P.fromString=function(e){var t=this;return t.resetToDefault(),t.appendFromString(e),t};_n={};(function(){var e=Vn,t=Rtt,r=Mtt,i=Ntt,n=Itt,a=o(function(re){return"^"+re+"\\s*\\(\\s*([\\w\\.]+)\\s*\\)$"},"data"),s=o(function(re){var ee=e+"|\\w+|"+t+"|"+r+"|"+i+"|"+n;return"^"+re+"\\s*\\(([\\w\\.]+)\\s*\\,\\s*("+e+")\\s*\\,\\s*("+e+")\\s*,\\s*("+ee+")\\s*\\,\\s*("+ee+")\\)$"},"mapData"),l=[`^url\\s*\\(\\s*['"]?(.+?)['"]?\\s*\\)$`,"^(none)$","^(.+)$"];_n.types={time:{number:!0,min:0,units:"s|ms",implicitUnits:"ms"},percent:{number:!0,min:0,max:100,units:"%",implicitUnits:"%"},percentages:{number:!0,min:0,max:100,units:"%",implicitUnits:"%",multiple:!0},zeroOneNumber:{number:!0,min:0,max:1,unitless:!0},zeroOneNumbers:{number:!0,min:0,max:1,unitless:!0,multiple:!0},nOneOneNumber:{number:!0,min:-1,max:1,unitless:!0},nonNegativeInt:{number:!0,min:0,integer:!0,unitless:!0},nonNegativeNumber:{number:!0,min:0,unitless:!0},position:{enums:["parent","origin"]},nodeSize:{number:!0,min:0,enums:["label"]},number:{number:!0,unitless:!0},numbers:{number:!0,unitless:!0,multiple:!0},positiveNumber:{number:!0,unitless:!0,min:0,strictMin:!0},size:{number:!0,min:0},bidirectionalSize:{number:!0},bidirectionalSizeMaybePercent:{number:!0,allowPercent:!0},bidirectionalSizes:{number:!0,multiple:!0},sizeMaybePercent:{number:!0,min:0,allowPercent:!0},axisDirection:{enums:["horizontal","leftward","rightward","vertical","upward","downward","auto"]},axisDirectionExplicit:{enums:["leftward","rightward","upward","downward"]},axisDirectionPrimary:{enums:["horizontal","vertical"]},paddingRelativeTo:{enums:["width","height","average","min","max"]},bgWH:{number:!0,min:0,allowPercent:!0,enums:["auto"],multiple:!0},bgPos:{number:!0,allowPercent:!0,multiple:!0},bgRelativeTo:{enums:["inner","include-padding"],multiple:!0},bgRepeat:{enums:["repeat","repeat-x","repeat-y","no-repeat"],multiple:!0},bgFit:{enums:["none","contain","cover"],multiple:!0},bgCrossOrigin:{enums:["anonymous","use-credentials","null"],multiple:!0},bgClip:{enums:["none","node"],multiple:!0},bgContainment:{enums:["inside","over"],multiple:!0},boxSelection:{enums:["contain","overlap","none"]},color:{color:!0},colors:{color:!0,multiple:!0},fill:{enums:["solid","linear-gradient","radial-gradient"]},bool:{enums:["yes","no"]},bools:{enums:["yes","no"],multiple:!0},lineStyle:{enums:["solid","dotted","dashed"]},lineCap:{enums:["butt","round","square"]},linePosition:{enums:["center","inside","outside"]},lineJoin:{enums:["round","bevel","miter"]},borderStyle:{enums:["solid","dotted","dashed","double"]},curveStyle:{enums:["bezier","unbundled-bezier","haystack","segments","straight","straight-triangle","taxi","round-segments","round-taxi"]},radiusType:{enums:["arc-radius","influence-radius"],multiple:!0},fontFamily:{regex:'^([\\w- \\"]+(?:\\s*,\\s*[\\w- \\"]+)*)$'},fontStyle:{enums:["italic","normal","oblique"]},fontWeight:{enums:["normal","bold","bolder","lighter","100","200","300","400","500","600","800","900",100,200,300,400,500,600,700,800,900]},textDecoration:{enums:["none","underline","overline","line-through"]},textTransform:{enums:["none","uppercase","lowercase"]},textWrap:{enums:["none","wrap","ellipsis"]},textOverflowWrap:{enums:["whitespace","anywhere"]},textBackgroundShape:{enums:["rectangle","roundrectangle","round-rectangle","circle"]},nodeShape:{enums:["rectangle","roundrectangle","round-rectangle","cutrectangle","cut-rectangle","bottomroundrectangle","bottom-round-rectangle","barrel","ellipse","triangle","round-triangle","square","pentagon","round-pentagon","hexagon","round-hexagon","concavehexagon","concave-hexagon","heptagon","round-heptagon","octagon","round-octagon","tag","round-tag","star","diamond","round-diamond","vee","rhomboid","right-rhomboid","polygon"]},overlayShape:{enums:["roundrectangle","round-rectangle","ellipse"]},cornerRadius:{number:!0,min:0,units:"px|em",implicitUnits:"px",enums:["auto"]},compoundIncludeLabels:{enums:["include","exclude"]},arrowShape:{enums:["tee","triangle","triangle-tee","circle-triangle","triangle-cross","triangle-backcurve","vee","square","circle","diamond","chevron","none"]},arrowFill:{enums:["filled","hollow"]},arrowWidth:{number:!0,units:"%|px|em",implicitUnits:"px",enums:["match-line"]},display:{enums:["element","none"]},visibility:{enums:["hidden","visible"]},zCompoundDepth:{enums:["bottom","orphan","auto","top"]},zIndexCompare:{enums:["auto","manual"]},valign:{enums:["top","center","bottom"]},halign:{enums:["left","center","right"]},justification:{enums:["left","center","right","auto"]},text:{string:!0},data:{mapping:!0,regex:a("data")},layoutData:{mapping:!0,regex:a("layoutData")},scratch:{mapping:!0,regex:a("scratch")},mapData:{mapping:!0,regex:s("mapData")},mapLayoutData:{mapping:!0,regex:s("mapLayoutData")},mapScratch:{mapping:!0,regex:s("mapScratch")},fn:{mapping:!0,fn:!0},url:{regexes:l,singleRegexMatchValue:!0},urls:{regexes:l,singleRegexMatchValue:!0,multiple:!0},propList:{propList:!0},angle:{number:!0,units:"deg|rad",implicitUnits:"rad"},textRotation:{number:!0,units:"deg|rad",implicitUnits:"rad",enums:["none","autorotate"]},polygonPointList:{number:!0,multiple:!0,evenMultiple:!0,min:-1,max:1,unitless:!0},edgeDistances:{enums:["intersection","node-position","endpoints"]},edgeEndpoint:{number:!0,multiple:!0,units:"%|px|em|deg|rad",implicitUnits:"px",enums:["inside-to-node","outside-to-node","outside-to-node-or-label","outside-to-line","outside-to-line-or-label"],singleEnum:!0,validate:o(function(re,ee){switch(re.length){case 2:return ee[0]!=="deg"&&ee[0]!=="rad"&&ee[1]!=="deg"&&ee[1]!=="rad";case 1:return sr(re[0])||ee[0]==="deg"||ee[0]==="rad";default:return!1}},"validate")},easing:{regexes:["^(spring)\\s*\\(\\s*("+e+")\\s*,\\s*("+e+")\\s*\\)$","^(cubic-bezier)\\s*\\(\\s*("+e+")\\s*,\\s*("+e+")\\s*,\\s*("+e+")\\s*,\\s*("+e+")\\s*\\)$"],enums:["linear","ease","ease-in","ease-out","ease-in-out","ease-in-sine","ease-out-sine","ease-in-out-sine","ease-in-quad","ease-out-quad","ease-in-out-quad","ease-in-cubic","ease-out-cubic","ease-in-out-cubic","ease-in-quart","ease-out-quart","ease-in-out-quart","ease-in-quint","ease-out-quint","ease-in-out-quint","ease-in-expo","ease-out-expo","ease-in-out-expo","ease-in-circ","ease-out-circ","ease-in-out-circ"]},gradientDirection:{enums:["to-bottom","to-top","to-left","to-right","to-bottom-right","to-bottom-left","to-top-right","to-top-left","to-right-bottom","to-left-bottom","to-right-top","to-left-top"]},boundsExpansion:{number:!0,multiple:!0,min:0,validate:o(function(re){var ee=re.length;return ee===1||ee===2||ee===4},"validate")}};var u={zeroNonZero:o(function(re,ee){return(re==null||ee==null)&&re!==ee||re==0&&ee!=0?!0:re!=0&&ee==0},"zeroNonZero"),any:o(function(re,ee){return re!=ee},"any"),emptyNonEmpty:o(function(re,ee){var Te=qd(re),ue=qd(ee);return Te&&!ue||!Te&&ue},"emptyNonEmpty")},h=_n.types,d=[{name:"label",type:h.text,triggersBounds:u.any,triggersZOrder:u.emptyNonEmpty},{name:"text-rotation",type:h.textRotation,triggersBounds:u.any},{name:"text-margin-x",type:h.bidirectionalSize,triggersBounds:u.any},{name:"text-margin-y",type:h.bidirectionalSize,triggersBounds:u.any}],f=[{name:"source-label",type:h.text,triggersBounds:u.any},{name:"source-text-rotation",type:h.textRotation,triggersBounds:u.any},{name:"source-text-margin-x",type:h.bidirectionalSize,triggersBounds:u.any},{name:"source-text-margin-y",type:h.bidirectionalSize,triggersBounds:u.any},{name:"source-text-offset",type:h.size,triggersBounds:u.any}],p=[{name:"target-label",type:h.text,triggersBounds:u.any},{name:"target-text-rotation",type:h.textRotation,triggersBounds:u.any},{name:"target-text-margin-x",type:h.bidirectionalSize,triggersBounds:u.any},{name:"target-text-margin-y",type:h.bidirectionalSize,triggersBounds:u.any},{name:"target-text-offset",type:h.size,triggersBounds:u.any}],m=[{name:"font-family",type:h.fontFamily,triggersBounds:u.any},{name:"font-style",type:h.fontStyle,triggersBounds:u.any},{name:"font-weight",type:h.fontWeight,triggersBounds:u.any},{name:"font-size",type:h.size,triggersBounds:u.any},{name:"text-transform",type:h.textTransform,triggersBounds:u.any},{name:"text-wrap",type:h.textWrap,triggersBounds:u.any},{name:"text-overflow-wrap",type:h.textOverflowWrap,triggersBounds:u.any},{name:"text-max-width",type:h.size,triggersBounds:u.any},{name:"text-outline-width",type:h.size,triggersBounds:u.any},{name:"line-height",type:h.positiveNumber,triggersBounds:u.any}],g=[{name:"text-valign",type:h.valign,triggersBounds:u.any},{name:"text-halign",type:h.halign,triggersBounds:u.any},{name:"color",type:h.color},{name:"text-outline-color",type:h.color},{name:"text-outline-opacity",type:h.zeroOneNumber},{name:"text-background-color",type:h.color},{name:"text-background-opacity",type:h.zeroOneNumber},{name:"text-background-padding",type:h.size,triggersBounds:u.any},{name:"text-border-opacity",type:h.zeroOneNumber},{name:"text-border-color",type:h.color},{name:"text-border-width",type:h.size,triggersBounds:u.any},{name:"text-border-style",type:h.borderStyle,triggersBounds:u.any},{name:"text-background-shape",type:h.textBackgroundShape,triggersBounds:u.any},{name:"text-justification",type:h.justification},{name:"box-select-labels",type:h.bool,triggersBounds:u.any}],y=[{name:"events",type:h.bool,triggersZOrder:u.any},{name:"text-events",type:h.bool,triggersZOrder:u.any},{name:"box-selection",type:h.boxSelection,triggersZOrder:u.any}],v=[{name:"display",type:h.display,triggersZOrder:u.any,triggersBounds:u.any,triggersBoundsOfConnectedEdges:u.any,triggersBoundsOfParallelEdges:o(function(re,ee,Te){return re===ee?!1:Te.pstyle("curve-style").value==="bezier"},"triggersBoundsOfParallelEdges")},{name:"visibility",type:h.visibility,triggersZOrder:u.any},{name:"opacity",type:h.zeroOneNumber,triggersZOrder:u.zeroNonZero},{name:"text-opacity",type:h.zeroOneNumber},{name:"min-zoomed-font-size",type:h.size},{name:"z-compound-depth",type:h.zCompoundDepth,triggersZOrder:u.any},{name:"z-index-compare",type:h.zIndexCompare,triggersZOrder:u.any},{name:"z-index",type:h.number,triggersZOrder:u.any}],x=[{name:"overlay-padding",type:h.size,triggersBounds:u.any},{name:"overlay-color",type:h.color},{name:"overlay-opacity",type:h.zeroOneNumber,triggersBounds:u.zeroNonZero},{name:"overlay-shape",type:h.overlayShape,triggersBounds:u.any},{name:"overlay-corner-radius",type:h.cornerRadius}],b=[{name:"underlay-padding",type:h.size,triggersBounds:u.any},{name:"underlay-color",type:h.color},{name:"underlay-opacity",type:h.zeroOneNumber,triggersBounds:u.zeroNonZero},{name:"underlay-shape",type:h.overlayShape,triggersBounds:u.any},{name:"underlay-corner-radius",type:h.cornerRadius}],T=[{name:"transition-property",type:h.propList},{name:"transition-duration",type:h.time},{name:"transition-delay",type:h.time},{name:"transition-timing-function",type:h.easing}],w=o(function(re,ee){return ee.value==="label"?-re.poolIndex():ee.pfValue},"nodeSizeHashOverride"),C=[{name:"height",type:h.nodeSize,triggersBounds:u.any,hashOverride:w},{name:"width",type:h.nodeSize,triggersBounds:u.any,hashOverride:w},{name:"shape",type:h.nodeShape,triggersBounds:u.any},{name:"shape-polygon-points",type:h.polygonPointList,triggersBounds:u.any},{name:"corner-radius",type:h.cornerRadius},{name:"background-color",type:h.color},{name:"background-fill",type:h.fill},{name:"background-opacity",type:h.zeroOneNumber},{name:"background-blacken",type:h.nOneOneNumber},{name:"background-gradient-stop-colors",type:h.colors},{name:"background-gradient-stop-positions",type:h.percentages},{name:"background-gradient-direction",type:h.gradientDirection},{name:"padding",type:h.sizeMaybePercent,triggersBounds:u.any},{name:"padding-relative-to",type:h.paddingRelativeTo,triggersBounds:u.any},{name:"bounds-expansion",type:h.boundsExpansion,triggersBounds:u.any}],k=[{name:"border-color",type:h.color},{name:"border-opacity",type:h.zeroOneNumber},{name:"border-width",type:h.size,triggersBounds:u.any},{name:"border-style",type:h.borderStyle},{name:"border-cap",type:h.lineCap},{name:"border-join",type:h.lineJoin},{name:"border-dash-pattern",type:h.numbers},{name:"border-dash-offset",type:h.number},{name:"border-position",type:h.linePosition}],E=[{name:"outline-color",type:h.color},{name:"outline-opacity",type:h.zeroOneNumber},{name:"outline-width",type:h.size,triggersBounds:u.any},{name:"outline-style",type:h.borderStyle},{name:"outline-offset",type:h.size,triggersBounds:u.any}],A=[{name:"background-image",type:h.urls},{name:"background-image-crossorigin",type:h.bgCrossOrigin},{name:"background-image-opacity",type:h.zeroOneNumbers},{name:"background-image-containment",type:h.bgContainment},{name:"background-image-smoothing",type:h.bools},{name:"background-position-x",type:h.bgPos},{name:"background-position-y",type:h.bgPos},{name:"background-width-relative-to",type:h.bgRelativeTo},{name:"background-height-relative-to",type:h.bgRelativeTo},{name:"background-repeat",type:h.bgRepeat},{name:"background-fit",type:h.bgFit},{name:"background-clip",type:h.bgClip},{name:"background-width",type:h.bgWH},{name:"background-height",type:h.bgWH},{name:"background-offset-x",type:h.bgPos},{name:"background-offset-y",type:h.bgPos}],N=[{name:"position",type:h.position,triggersBounds:u.any},{name:"compound-sizing-wrt-labels",type:h.compoundIncludeLabels,triggersBounds:u.any},{name:"min-width",type:h.size,triggersBounds:u.any},{name:"min-width-bias-left",type:h.sizeMaybePercent,triggersBounds:u.any},{name:"min-width-bias-right",type:h.sizeMaybePercent,triggersBounds:u.any},{name:"min-height",type:h.size,triggersBounds:u.any},{name:"min-height-bias-top",type:h.sizeMaybePercent,triggersBounds:u.any},{name:"min-height-bias-bottom",type:h.sizeMaybePercent,triggersBounds:u.any}],P=[{name:"line-style",type:h.lineStyle},{name:"line-color",type:h.color},{name:"line-fill",type:h.fill},{name:"line-cap",type:h.lineCap},{name:"line-opacity",type:h.zeroOneNumber},{name:"line-dash-pattern",type:h.numbers},{name:"line-dash-offset",type:h.number},{name:"line-outline-width",type:h.size},{name:"line-outline-color",type:h.color},{name:"line-gradient-stop-colors",type:h.colors},{name:"line-gradient-stop-positions",type:h.percentages},{name:"curve-style",type:h.curveStyle,triggersBounds:u.any,triggersBoundsOfParallelEdges:o(function(re,ee){return re===ee?!1:re==="bezier"||ee==="bezier"},"triggersBoundsOfParallelEdges")},{name:"haystack-radius",type:h.zeroOneNumber,triggersBounds:u.any},{name:"source-endpoint",type:h.edgeEndpoint,triggersBounds:u.any},{name:"target-endpoint",type:h.edgeEndpoint,triggersBounds:u.any},{name:"control-point-step-size",type:h.size,triggersBounds:u.any},{name:"control-point-distances",type:h.bidirectionalSizes,triggersBounds:u.any},{name:"control-point-weights",type:h.numbers,triggersBounds:u.any},{name:"segment-distances",type:h.bidirectionalSizes,triggersBounds:u.any},{name:"segment-weights",type:h.numbers,triggersBounds:u.any},{name:"segment-radii",type:h.numbers,triggersBounds:u.any},{name:"radius-type",type:h.radiusType,triggersBounds:u.any},{name:"taxi-turn",type:h.bidirectionalSizeMaybePercent,triggersBounds:u.any},{name:"taxi-turn-min-distance",type:h.size,triggersBounds:u.any},{name:"taxi-direction",type:h.axisDirection,triggersBounds:u.any},{name:"taxi-radius",type:h.number,triggersBounds:u.any},{name:"edge-distances",type:h.edgeDistances,triggersBounds:u.any},{name:"arrow-scale",type:h.positiveNumber,triggersBounds:u.any},{name:"loop-direction",type:h.angle,triggersBounds:u.any},{name:"loop-sweep",type:h.angle,triggersBounds:u.any},{name:"source-distance-from-node",type:h.size,triggersBounds:u.any},{name:"target-distance-from-node",type:h.size,triggersBounds:u.any}],I=[{name:"ghost",type:h.bool,triggersBounds:u.any},{name:"ghost-offset-x",type:h.bidirectionalSize,triggersBounds:u.any},{name:"ghost-offset-y",type:h.bidirectionalSize,triggersBounds:u.any},{name:"ghost-opacity",type:h.zeroOneNumber}],D=[{name:"selection-box-color",type:h.color},{name:"selection-box-opacity",type:h.zeroOneNumber},{name:"selection-box-border-color",type:h.color},{name:"selection-box-border-width",type:h.size},{name:"active-bg-color",type:h.color},{name:"active-bg-opacity",type:h.zeroOneNumber},{name:"active-bg-size",type:h.size},{name:"outside-texture-bg-color",type:h.color},{name:"outside-texture-bg-opacity",type:h.zeroOneNumber}],_=[];_n.pieBackgroundN=16,_.push({name:"pie-size",type:h.sizeMaybePercent}),_.push({name:"pie-hole",type:h.sizeMaybePercent}),_.push({name:"pie-start-angle",type:h.angle});for(var R=1;R<=_n.pieBackgroundN;R++)_.push({name:"pie-"+R+"-background-color",type:h.color}),_.push({name:"pie-"+R+"-background-size",type:h.percent}),_.push({name:"pie-"+R+"-background-opacity",type:h.zeroOneNumber});var M=[];_n.stripeBackgroundN=16,M.push({name:"stripe-size",type:h.sizeMaybePercent}),M.push({name:"stripe-direction",type:h.axisDirectionPrimary});for(var L=1;L<=_n.stripeBackgroundN;L++)M.push({name:"stripe-"+L+"-background-color",type:h.color}),M.push({name:"stripe-"+L+"-background-size",type:h.percent}),M.push({name:"stripe-"+L+"-background-opacity",type:h.zeroOneNumber});var B=[],O=_n.arrowPrefixes=["source","mid-source","target","mid-target"];[{name:"arrow-shape",type:h.arrowShape,triggersBounds:u.any},{name:"arrow-color",type:h.color},{name:"arrow-fill",type:h.arrowFill},{name:"arrow-width",type:h.arrowWidth}].forEach(function(te){O.forEach(function(re){var ee=re+"-"+te.name,Te=te.type,ue=te.triggersBounds;B.push({name:ee,type:Te,triggersBounds:ue})})},{});var $=_n.properties=[].concat(y,T,v,x,b,I,g,m,d,f,p,C,k,E,A,_,M,N,P,B,D),G=_n.propertyGroups={behavior:y,transition:T,visibility:v,overlay:x,underlay:b,ghost:I,commonLabel:g,labelDimensions:m,mainLabel:d,sourceLabel:f,targetLabel:p,nodeBody:C,nodeBorder:k,nodeOutline:E,backgroundImage:A,pie:_,stripe:M,compound:N,edgeLine:P,edgeArrow:B,core:D},F=_n.propertyGroupNames={},V=_n.propertyGroupKeys=Object.keys(G);V.forEach(function(te){F[te]=G[te].map(function(re){return re.name}),G[te].forEach(function(re){return re.groupKey=te})});var H=_n.aliases=[{name:"content",pointsTo:"label"},{name:"control-point-distance",pointsTo:"control-point-distances"},{name:"control-point-weight",pointsTo:"control-point-weights"},{name:"segment-distance",pointsTo:"segment-distances"},{name:"segment-weight",pointsTo:"segment-weights"},{name:"segment-radius",pointsTo:"segment-radii"},{name:"edge-text-rotation",pointsTo:"text-rotation"},{name:"padding-left",pointsTo:"padding"},{name:"padding-right",pointsTo:"padding"},{name:"padding-top",pointsTo:"padding"},{name:"padding-bottom",pointsTo:"padding"}];_n.propertyNames=$.map(function(te){return te.name});for(var j=0;j<$.length;j++){var U=$[j];$[U.name]=U}for(var Q=0;Q<H.length;Q++){var Y=H[Q],ae=$[Y.pointsTo],J={name:Y.name,alias:!0,pointsTo:ae};$.push(J),$[Y.name]=J}})();_n.getDefaultProperty=function(e){return this.getDefaultProperties()[e]};_n.getDefaultProperties=function(){var e=this._private;if(e.defaultProperties!=null)return e.defaultProperties;for(var t=hr({"selection-box-color":"#ddd","selection-box-opacity":.65,"selection-box-border-color":"#aaa","selection-box-border-width":1,"active-bg-color":"black","active-bg-opacity":.15,"active-bg-size":30,"outside-texture-bg-color":"#000","outside-texture-bg-opacity":.125,events:"yes","text-events":"no","text-valign":"top","text-halign":"center","text-justification":"auto","line-height":1,color:"#000","box-selection":"contain","text-outline-color":"#000","text-outline-width":0,"text-outline-opacity":1,"text-opacity":1,"text-decoration":"none","text-transform":"none","text-wrap":"none","text-overflow-wrap":"whitespace","text-max-width":9999,"text-background-color":"#000","text-background-opacity":0,"text-background-shape":"rectangle","text-background-padding":0,"text-border-opacity":0,"text-border-width":0,"text-border-style":"solid","text-border-color":"#000","font-family":"Helvetica Neue, Helvetica, sans-serif","font-style":"normal","font-weight":"normal","font-size":16,"min-zoomed-font-size":0,"text-rotation":"none","source-text-rotation":"none","target-text-rotation":"none",visibility:"visible",display:"element",opacity:1,"z-compound-depth":"auto","z-index-compare":"auto","z-index":0,label:"","text-margin-x":0,"text-margin-y":0,"source-label":"","source-text-offset":0,"source-text-margin-x":0,"source-text-margin-y":0,"target-label":"","target-text-offset":0,"target-text-margin-x":0,"target-text-margin-y":0,"overlay-opacity":0,"overlay-color":"#000","overlay-padding":10,"overlay-shape":"round-rectangle","overlay-corner-radius":"auto","underlay-opacity":0,"underlay-color":"#000","underlay-padding":10,"underlay-shape":"round-rectangle","underlay-corner-radius":"auto","transition-property":"none","transition-duration":0,"transition-delay":0,"transition-timing-function":"linear","box-select-labels":"no","background-blacken":0,"background-color":"#999","background-fill":"solid","background-opacity":1,"background-image":"none","background-image-crossorigin":"anonymous","background-image-opacity":1,"background-image-containment":"inside","background-image-smoothing":"yes","background-position-x":"50%","background-position-y":"50%","background-offset-x":0,"background-offset-y":0,"background-width-relative-to":"include-padding","background-height-relative-to":"include-padding","background-repeat":"no-repeat","background-fit":"none","background-clip":"node","background-width":"auto","background-height":"auto","border-color":"#000","border-opacity":1,"border-width":0,"border-style":"solid","border-dash-pattern":[4,2],"border-dash-offset":0,"border-cap":"butt","border-join":"miter","border-position":"center","outline-color":"#999","outline-opacity":1,"outline-width":0,"outline-offset":0,"outline-style":"solid",height:30,width:30,shape:"ellipse","shape-polygon-points":"-1, -1,   1, -1,   1, 1,   -1, 1","corner-radius":"auto","bounds-expansion":0,"background-gradient-direction":"to-bottom","background-gradient-stop-colors":"#999","background-gradient-stop-positions":"0%",ghost:"no","ghost-offset-y":0,"ghost-offset-x":0,"ghost-opacity":0,padding:0,"padding-relative-to":"width",position:"origin","compound-sizing-wrt-labels":"include","min-width":0,"min-width-bias-left":0,"min-width-bias-right":0,"min-height":0,"min-height-bias-top":0,"min-height-bias-bottom":0},{"pie-size":"100%","pie-hole":0,"pie-start-angle":"0deg"},[{name:"pie-{{i}}-background-color",value:"black"},{name:"pie-{{i}}-background-size",value:"0%"},{name:"pie-{{i}}-background-opacity",value:1}].reduce(function(u,h){for(var d=1;d<=_n.pieBackgroundN;d++){var f=h.name.replace("{{i}}",d),p=h.value;u[f]=p}return u},{}),{"stripe-size":"100%","stripe-direction":"horizontal"},[{name:"stripe-{{i}}-background-color",value:"black"},{name:"stripe-{{i}}-background-size",value:"0%"},{name:"stripe-{{i}}-background-opacity",value:1}].reduce(function(u,h){for(var d=1;d<=_n.stripeBackgroundN;d++){var f=h.name.replace("{{i}}",d),p=h.value;u[f]=p}return u},{}),{"line-style":"solid","line-color":"#999","line-fill":"solid","line-cap":"butt","line-opacity":1,"line-outline-width":0,"line-outline-color":"#000","line-gradient-stop-colors":"#999","line-gradient-stop-positions":"0%","control-point-step-size":40,"control-point-weights":.5,"segment-weights":.5,"segment-distances":20,"segment-radii":15,"radius-type":"arc-radius","taxi-turn":"50%","taxi-radius":15,"taxi-turn-min-distance":10,"taxi-direction":"auto","edge-distances":"intersection","curve-style":"haystack","haystack-radius":0,"arrow-scale":1,"loop-direction":"-45deg","loop-sweep":"-90deg","source-distance-from-node":0,"target-distance-from-node":0,"source-endpoint":"outside-to-node","target-endpoint":"outside-to-node","line-dash-pattern":[6,3],"line-dash-offset":0},[{name:"arrow-shape",value:"none"},{name:"arrow-color",value:"#999"},{name:"arrow-fill",value:"filled"},{name:"arrow-width",value:1}].reduce(function(u,h){return _n.arrowPrefixes.forEach(function(d){var f=d+"-"+h.name,p=h.value;u[f]=p}),u},{})),r={},i=0;i<this.properties.length;i++){var n=this.properties[i];if(!n.pointsTo){var a=n.name,s=t[a],l=this.parse(a,s);r[a]=l}}return e.defaultProperties=r,e.defaultProperties};_n.addDefaultStylesheet=function(){this.selector(":parent").css({shape:"rectangle",padding:10,"background-color":"#eee","border-color":"#ccc","border-width":1}).selector("edge").css({width:3}).selector(":loop").css({"curve-style":"bezier"}).selector("edge:compound").css({"curve-style":"bezier","source-endpoint":"outside-to-line","target-endpoint":"outside-to-line"}).selector(":selected").css({"background-color":"#0169D9","line-color":"#0169D9","source-arrow-color":"#0169D9","target-arrow-color":"#0169D9","mid-source-arrow-color":"#0169D9","mid-target-arrow-color":"#0169D9"}).selector(":parent:selected").css({"background-color":"#CCE1F9","border-color":"#aec8e5"}).selector(":active").css({"overlay-color":"black","overlay-padding":10,"overlay-opacity":.25}),this.defaultLength=this.length};oE={};oE.parse=function(e,t,r,i){var n=this;if(Ji(t))return n.parseImplWarn(e,t,r,i);var a=i==="mapping"||i===!0||i===!1||i==null?"dontcare":i,s=r?"t":"f",l=""+t,u=nme(e,l,s,a),h=n.propCache=n.propCache||[],d;return(d=h[u])||(d=h[u]=n.parseImplWarn(e,t,r,i)),(r||i==="mapping")&&(d=Bc(d),d&&(d.value=Bc(d.value))),d};oE.parseImplWarn=function(e,t,r,i){var n=this.parseImpl(e,t,r,i);return!n&&t!=null&&di("The style property `".concat(e,": ").concat(t,"` is invalid")),n&&(n.name==="width"||n.name==="height")&&t==="label"&&di("The style value of `label` is deprecated for `"+n.name+"`"),n};oE.parseImpl=function(e,t,r,i){var n=this;e=dP(e);var a=n.properties[e],s=t,l=n.types;if(!a||t===void 0)return null;a.alias&&(a=a.pointsTo,e=a.name);var u=sr(t);u&&(t=t.trim());var h=a.type;if(!h)return null;if(r&&(t===""||t===null))return{name:e,value:t,bypass:!0,deleteBypass:!0};if(Ji(t))return{name:e,value:t,strValue:"fn",mapped:l.fn,bypass:r};var d,f;if(!(!u||i||t.length<7||t[1]!=="a")){if(t.length>=7&&t[0]==="d"&&(d=new RegExp(l.data.regex).exec(t))){if(r)return!1;var p=l.data;return{name:e,value:d,strValue:""+t,mapped:p,field:d[1],bypass:r}}else if(t.length>=10&&t[0]==="m"&&(f=new RegExp(l.mapData.regex).exec(t))){if(r||h.multiple)return!1;var m=l.mapData;if(!(h.color||h.number))return!1;var g=this.parse(e,f[4]);if(!g||g.mapped)return!1;var y=this.parse(e,f[5]);if(!y||y.mapped)return!1;if(g.pfValue===y.pfValue||g.strValue===y.strValue)return di("`"+e+": "+t+"` is not a valid mapper because the output range is zero; converting to `"+e+": "+g.strValue+"`"),this.parse(e,g.strValue);if(h.color){var v=g.value,x=y.value,b=v[0]===x[0]&&v[1]===x[1]&&v[2]===x[2]&&(v[3]===x[3]||(v[3]==null||v[3]===1)&&(x[3]==null||x[3]===1));if(b)return!1}return{name:e,value:f,strValue:""+t,mapped:m,field:f[1],fieldMin:parseFloat(f[2]),fieldMax:parseFloat(f[3]),valueMin:g.value,valueMax:y.value,bypass:r}}}if(h.multiple&&i!=="multiple"){var T;if(u?T=t.split(/\s+/):Si(t)?T=t:T=[t],h.evenMultiple&&T.length%2!==0)return null;for(var w=[],C=[],k=[],E="",A=!1,N=0;N<T.length;N++){var P=n.parse(e,T[N],r,"multiple");A=A||sr(P.value),w.push(P.value),k.push(P.pfValue!=null?P.pfValue:P.value),C.push(P.units),E+=(N>0?" ":"")+P.strValue}return h.validate&&!h.validate(w,C)?null:h.singleEnum&&A?w.length===1&&sr(w[0])?{name:e,value:w[0],strValue:w[0],bypass:r}:null:{name:e,value:w,pfValue:k,strValue:E,bypass:r,units:C}}var I=o(function(){for(var J=0;J<h.enums.length;J++){var te=h.enums[J];if(te===t)return{name:e,value:t,strValue:""+t,bypass:r}}return null},"checkEnums");if(h.number){var D,_="px";if(h.units&&(D=h.units),h.implicitUnits&&(_=h.implicitUnits),!h.unitless)if(u){var R="px|em"+(h.allowPercent?"|\\%":"");D&&(R=D);var M=t.match("^("+Vn+")("+R+")?$");M&&(t=M[1],D=M[2]||_)}else(!D||h.implicitUnits)&&(D=_);if(t=parseFloat(t),isNaN(t)&&h.enums===void 0)return null;if(isNaN(t)&&h.enums!==void 0)return t=s,I();if(h.integer&&!ktt(t)||h.min!==void 0&&(t<h.min||h.strictMin&&t===h.min)||h.max!==void 0&&(t>h.max||h.strictMax&&t===h.max))return null;var L={name:e,value:t,strValue:""+t+(D||""),units:D,bypass:r};return h.unitless||D!=="px"&&D!=="em"?L.pfValue=t:L.pfValue=D==="px"||!D?t:this.getEmSizeInPixels()*t,(D==="ms"||D==="s")&&(L.pfValue=D==="ms"?t:1e3*t),(D==="deg"||D==="rad")&&(L.pfValue=D==="rad"?t:Nrt(t)),D==="%"&&(L.pfValue=t/100),L}else if(h.propList){var B=[],O=""+t;if(O!=="none"){for(var $=O.split(/\s*,\s*|\s+/),G=0;G<$.length;G++){var F=$[G].trim();n.properties[F]?B.push(F):di("`"+F+"` is not a valid property name")}if(B.length===0)return null}return{name:e,value:B,strValue:B.length===0?"none":B.join(" "),bypass:r}}else if(h.color){var V=Z0e(t);return V?{name:e,value:V,pfValue:V,strValue:"rgb("+V[0]+","+V[1]+","+V[2]+")",bypass:r}:null}else if(h.regex||h.regexes){if(h.enums){var H=I();if(H)return H}for(var j=h.regexes?h.regexes:[h.regex],U=0;U<j.length;U++){var Q=new RegExp(j[U]),Y=Q.exec(t);if(Y)return{name:e,value:h.singleRegexMatchValue?Y[1]:Y,strValue:""+t,bypass:r}}return null}else return h.string?{name:e,value:""+t,strValue:""+t,bypass:r}:h.enums?I():null};aa=o(function(t){if(!(this instanceof aa))return new aa(t);if(!hP(t)){Yi("A style must have a core reference");return}this._private={cy:t,coreStyle:{}},this.length=0,this.resetToDefault()},"Style"),Pa=aa.prototype;Pa.instanceString=function(){return"style"};Pa.clear=function(){for(var e=this._private,t=e.cy,r=t.elements(),i=0;i<this.length;i++)this[i]=void 0;return this.length=0,e.contextStyles={},e.propDiffs={},this.cleanElements(r,!0),r.forEach(function(n){var a=n[0]._private;a.styleDirty=!0,a.appliedInitStyle=!1}),this};Pa.resetToDefault=function(){return this.clear(),this.addDefaultStylesheet(),this};Pa.core=function(e){return this._private.coreStyle[e]||this.getDefaultProperty(e)};Pa.selector=function(e){var t=e==="core"?null:new Yd(e),r=this.length++;return this[r]={selector:t,properties:[],mappedProperties:[],index:r},this};Pa.css=function(){var e=this,t=arguments;if(t.length===1)for(var r=t[0],i=0;i<e.properties.length;i++){var n=e.properties[i],a=r[n.name];a===void 0&&(a=r[Y3(n.name)]),a!==void 0&&this.cssRule(n.name,a)}else t.length===2&&this.cssRule(t[0],t[1]);return this};Pa.style=Pa.css;Pa.cssRule=function(e,t){var r=this.parse(e,t);if(r){var i=this.length-1;this[i].properties.push(r),this[i].properties[r.name]=r,r.name.match(/pie-(\d+)-background-size/)&&r.value&&(this._private.hasPie=!0),r.name.match(/stripe-(\d+)-background-size/)&&r.value&&(this._private.hasStripe=!0),r.mapped&&this[i].mappedProperties.push(r);var n=!this[i].selector;n&&(this._private.coreStyle[r.name]=r)}return this};Pa.append=function(e){return j0e(e)?e.appendToStyle(this):Si(e)?this.appendFromJson(e):sr(e)&&this.appendFromString(e),this};aa.fromJson=function(e,t){var r=new aa(e);return r.fromJson(t),r};aa.fromString=function(e,t){return new aa(e).fromString(t)};[sa,u2,AP,Fc,sE,_P,_n,oE].forEach(function(e){hr(Pa,e)});aa.types=Pa.types;aa.properties=Pa.properties;aa.propertyGroups=Pa.propertyGroups;aa.propertyGroupNames=Pa.propertyGroupNames;aa.propertyGroupKeys=Pa.propertyGroupKeys;Bat={style:o(function(t){if(t){var r=this.setStyle(t);r.update()}return this._private.style},"style"),setStyle:o(function(t){var r=this._private;return j0e(t)?r.style=t.generateStyle(this):Si(t)?r.style=aa.fromJson(this,t):sr(t)?r.style=aa.fromString(this,t):r.style=aa(this),r.style},"setStyle"),updateStyle:o(function(){this.mutableElements().updateStyle()},"updateStyle")},Fat="single",r0={autolock:o(function(t){if(t!==void 0)this._private.autolock=!!t;else return this._private.autolock;return this},"autolock"),autoungrabify:o(function(t){if(t!==void 0)this._private.autoungrabify=!!t;else return this._private.autoungrabify;return this},"autoungrabify"),autounselectify:o(function(t){if(t!==void 0)this._private.autounselectify=!!t;else return this._private.autounselectify;return this},"autounselectify"),selectionType:o(function(t){var r=this._private;if(r.selectionType==null&&(r.selectionType=Fat),t!==void 0)(t==="additive"||t==="single")&&(r.selectionType=t);else return r.selectionType;return this},"selectionType"),panningEnabled:o(function(t){if(t!==void 0)this._private.panningEnabled=!!t;else return this._private.panningEnabled;return this},"panningEnabled"),userPanningEnabled:o(function(t){if(t!==void 0)this._private.userPanningEnabled=!!t;else return this._private.userPanningEnabled;return this},"userPanningEnabled"),zoomingEnabled:o(function(t){if(t!==void 0)this._private.zoomingEnabled=!!t;else return this._private.zoomingEnabled;return this},"zoomingEnabled"),userZoomingEnabled:o(function(t){if(t!==void 0)this._private.userZoomingEnabled=!!t;else return this._private.userZoomingEnabled;return this},"userZoomingEnabled"),boxSelectionEnabled:o(function(t){if(t!==void 0)this._private.boxSelectionEnabled=!!t;else return this._private.boxSelectionEnabled;return this},"boxSelectionEnabled"),pan:o(function(){var t=arguments,r=this._private.pan,i,n,a,s,l;switch(t.length){case 0:return r;case 1:if(sr(t[0]))return i=t[0],r[i];if(Xr(t[0])){if(!this._private.panningEnabled)return this;a=t[0],s=a.x,l=a.y,Ot(s)&&(r.x=s),Ot(l)&&(r.y=l),this.emit("pan viewport")}break;case 2:if(!this._private.panningEnabled)return this;i=t[0],n=t[1],(i==="x"||i==="y")&&Ot(n)&&(r[i]=n),this.emit("pan viewport");break}return this.notify("viewport"),this},"pan"),panBy:o(function(t,r){var i=arguments,n=this._private.pan,a,s,l,u,h;if(!this._private.panningEnabled)return this;switch(i.length){case 1:Xr(t)&&(l=i[0],u=l.x,h=l.y,Ot(u)&&(n.x+=u),Ot(h)&&(n.y+=h),this.emit("pan viewport"));break;case 2:a=t,s=r,(a==="x"||a==="y")&&Ot(s)&&(n[a]+=s),this.emit("pan viewport");break}return this.notify("viewport"),this},"panBy"),gc:o(function(){this.notify("gc")},"gc"),fit:o(function(t,r){var i=this.getFitViewport(t,r);if(i){var n=this._private;n.zoom=i.zoom,n.pan=i.pan,this.emit("pan zoom viewport"),this.notify("viewport")}return this},"fit"),getFitViewport:o(function(t,r){if(Ot(t)&&r===void 0&&(r=t,t=void 0),!(!this._private.panningEnabled||!this._private.zoomingEnabled)){var i;if(sr(t)){var n=t;t=this.$(n)}else if(Ett(t)){var a=t;i={x1:a.x1,y1:a.y1,x2:a.x2,y2:a.y2},i.w=i.x2-i.x1,i.h=i.y2-i.y1}else uo(t)||(t=this.mutableElements());if(!(uo(t)&&t.empty())){i=i||t.boundingBox();var s=this.width(),l=this.height(),u;if(r=Ot(r)?r:0,!isNaN(s)&&!isNaN(l)&&s>0&&l>0&&!isNaN(i.w)&&!isNaN(i.h)&&i.w>0&&i.h>0){u=Math.min((s-2*r)/i.w,(l-2*r)/i.h),u=u>this._private.maxZoom?this._private.maxZoom:u,u=u<this._private.minZoom?this._private.minZoom:u;var h={x:(s-u*(i.x1+i.x2))/2,y:(l-u*(i.y1+i.y2))/2};return{zoom:u,pan:h}}}}},"getFitViewport"),zoomRange:o(function(t,r){var i=this._private;if(r==null){var n=t;t=n.min,r=n.max}return Ot(t)&&Ot(r)&&t<=r?(i.minZoom=t,i.maxZoom=r):Ot(t)&&r===void 0&&t<=i.maxZoom?i.minZoom=t:Ot(r)&&t===void 0&&r>=i.minZoom&&(i.maxZoom=r),this},"zoomRange"),minZoom:o(function(t){return t===void 0?this._private.minZoom:this.zoomRange({min:t})},"minZoom"),maxZoom:o(function(t){return t===void 0?this._private.maxZoom:this.zoomRange({max:t})},"maxZoom"),getZoomedViewport:o(function(t){var r=this._private,i=r.pan,n=r.zoom,a,s,l=!1;if(r.zoomingEnabled||(l=!0),Ot(t)?s=t:Xr(t)&&(s=t.level,t.position!=null?a=K3(t.position,n,i):t.renderedPosition!=null&&(a=t.renderedPosition),a!=null&&!r.panningEnabled&&(l=!0)),s=s>r.maxZoom?r.maxZoom:s,s=s<r.minZoom?r.minZoom:s,l||!Ot(s)||s===n||a!=null&&(!Ot(a.x)||!Ot(a.y)))return null;if(a!=null){var u=i,h=n,d=s,f={x:-d/h*(a.x-u.x)+a.x,y:-d/h*(a.y-u.y)+a.y};return{zoomed:!0,panned:!0,zoom:d,pan:f}}else return{zoomed:!0,panned:!1,zoom:s,pan:i}},"getZoomedViewport"),zoom:o(function(t){if(t===void 0)return this._private.zoom;var r=this.getZoomedViewport(t),i=this._private;return r==null||!r.zoomed?this:(i.zoom=r.zoom,r.panned&&(i.pan.x=r.pan.x,i.pan.y=r.pan.y),this.emit("zoom"+(r.panned?" pan":"")+" viewport"),this.notify("viewport"),this)},"zoom"),viewport:o(function(t){var r=this._private,i=!0,n=!0,a=[],s=!1,l=!1;if(!t)return this;if(Ot(t.zoom)||(i=!1),Xr(t.pan)||(n=!1),!i&&!n)return this;if(i){var u=t.zoom;u<r.minZoom||u>r.maxZoom||!r.zoomingEnabled?s=!0:(r.zoom=u,a.push("zoom"))}if(n&&(!s||!t.cancelOnFailedZoom)&&r.panningEnabled){var h=t.pan;Ot(h.x)&&(r.pan.x=h.x,l=!1),Ot(h.y)&&(r.pan.y=h.y,l=!1),l||a.push("pan")}return a.length>0&&(a.push("viewport"),this.emit(a.join(" ")),this.notify("viewport")),this},"viewport"),center:o(function(t){var r=this.getCenterPan(t);return r&&(this._private.pan=r,this.emit("pan viewport"),this.notify("viewport")),this},"center"),getCenterPan:o(function(t,r){if(this._private.panningEnabled){if(sr(t)){var i=t;t=this.mutableElements().filter(i)}else uo(t)||(t=this.mutableElements());if(t.length!==0){var n=t.boundingBox(),a=this.width(),s=this.height();r=r===void 0?this._private.zoom:r;var l={x:(a-r*(n.x1+n.x2))/2,y:(s-r*(n.y1+n.y2))/2};return l}}},"getCenterPan"),reset:o(function(){return!this._private.panningEnabled||!this._private.zoomingEnabled?this:(this.viewport({pan:{x:0,y:0},zoom:1}),this)},"reset"),invalidateSize:o(function(){this._private.sizeCache=null},"invalidateSize"),size:o(function(){var t=this._private,r=t.container,i=this;return t.sizeCache=t.sizeCache||(r?(function(){var n=i.window().getComputedStyle(r),a=o(function(l){return parseFloat(n.getPropertyValue(l))},"val");return{width:r.clientWidth-a("padding-left")-a("padding-right"),height:r.clientHeight-a("padding-top")-a("padding-bottom")}})():{width:1,height:1})},"size"),width:o(function(){return this.size().width},"width"),height:o(function(){return this.size().height},"height"),extent:o(function(){var t=this._private.pan,r=this._private.zoom,i=this.renderedExtent(),n={x1:(i.x1-t.x)/r,x2:(i.x2-t.x)/r,y1:(i.y1-t.y)/r,y2:(i.y2-t.y)/r};return n.w=n.x2-n.x1,n.h=n.y2-n.y1,n},"extent"),renderedExtent:o(function(){var t=this.width(),r=this.height();return{x1:0,y1:0,x2:t,y2:r,w:t,h:r}},"renderedExtent"),multiClickDebounceTime:o(function(t){if(t)this._private.multiClickDebounceTime=t;else return this._private.multiClickDebounceTime;return this},"multiClickDebounceTime")};r0.centre=r0.center;r0.autolockNodes=r0.autolock;r0.autoungrabifyNodes=r0.autoungrabify;Jb={data:hi.data({field:"data",bindingEvent:"data",allowBinding:!0,allowSetting:!0,settingEvent:"data",settingTriggersEvent:!0,triggerFnName:"trigger",allowGetting:!0,updateStyle:!0}),removeData:hi.removeData({field:"data",event:"data",triggerFnName:"trigger",triggerEvent:!0,updateStyle:!0}),scratch:hi.data({field:"scratch",bindingEvent:"scratch",allowBinding:!0,allowSetting:!0,settingEvent:"scratch",settingTriggersEvent:!0,triggerFnName:"trigger",allowGetting:!0,updateStyle:!0}),removeScratch:hi.removeData({field:"scratch",event:"scratch",triggerFnName:"trigger",triggerEvent:!0,updateStyle:!0})};Jb.attr=Jb.data;Jb.removeAttr=Jb.removeData;e2=o(function(t){var r=this;t=hr({},t);var i=t.container;i&&!I3(i)&&I3(i[0])&&(i=i[0]);var n=i?i._cyreg:null;n=n||{},n&&n.cy&&(n.cy.destroy(),n={});var a=n.readies=n.readies||[];i&&(i._cyreg=n),n.cy=r;var s=Gn!==void 0&&i!==void 0&&!t.headless,l=t;l.layout=hr({name:s?"grid":"null"},l.layout),l.renderer=hr({name:s?"canvas":"null"},l.renderer);var u=o(function(g,y,v){return y!==void 0?y:v!==void 0?v:g},"defVal"),h=this._private={container:i,ready:!1,options:l,elements:new ya(this),listeners:[],aniEles:new ya(this),data:l.data||{},scratch:{},layout:null,renderer:null,destroyed:!1,notificationsEnabled:!0,minZoom:1e-50,maxZoom:1e50,zoomingEnabled:u(!0,l.zoomingEnabled),userZoomingEnabled:u(!0,l.userZoomingEnabled),panningEnabled:u(!0,l.panningEnabled),userPanningEnabled:u(!0,l.userPanningEnabled),boxSelectionEnabled:u(!0,l.boxSelectionEnabled),autolock:u(!1,l.autolock,l.autolockNodes),autoungrabify:u(!1,l.autoungrabify,l.autoungrabifyNodes),autounselectify:u(!1,l.autounselectify),styleEnabled:l.styleEnabled===void 0?s:l.styleEnabled,zoom:Ot(l.zoom)?l.zoom:1,pan:{x:Xr(l.pan)&&Ot(l.pan.x)?l.pan.x:0,y:Xr(l.pan)&&Ot(l.pan.y)?l.pan.y:0},animation:{current:[],queue:[]},hasCompoundNodes:!1,multiClickDebounceTime:u(250,l.multiClickDebounceTime)};this.createEmitter(),this.selectionType(l.selectionType),this.zoomRange({min:l.minZoom,max:l.maxZoom});var d=o(function(g,y){var v=g.some(Att);if(v)return v1.all(g).then(y);y(g)},"loadExtData");h.styleEnabled&&r.setStyle([]);var f=hr({},l,l.renderer);r.initRenderer(f);var p=o(function(g,y,v){r.notifications(!1);var x=r.mutableElements();x.length>0&&x.remove(),g!=null&&(Xr(g)||Si(g))&&r.add(g),r.one("layoutready",function(T){r.notifications(!0),r.emit(T),r.one("load",y),r.emitAndNotify("load")}).one("layoutstop",function(){r.one("done",v),r.emit("done")});var b=hr({},r._private.options.layout);b.eles=r.elements(),r.layout(b).run()},"setElesAndLayout");d([l.style,l.elements],function(m){var g=m[0],y=m[1];h.styleEnabled&&r.style().append(g),p(y,function(){r.startAnimationLoop(),h.ready=!0,Ji(l.ready)&&r.on("ready",l.ready);for(var v=0;v<a.length;v++){var x=a[v];r.on("ready",x)}n&&(n.readies=[]),r.emit("ready")},l.done)})},"Core"),G3=e2.prototype;hr(G3,{instanceString:o(function(){return"core"},"instanceString"),isReady:o(function(){return this._private.ready},"isReady"),destroyed:o(function(){return this._private.destroyed},"destroyed"),ready:o(function(t){return this.isReady()?this.emitter().emit("ready",[],t):this.on("ready",t),this},"ready"),destroy:o(function(){var t=this;if(!t.destroyed())return t.stopAnimationLoop(),t.destroyRenderer(),this.emit("destroy"),t._private.destroyed=!0,t},"destroy"),hasElementWithId:o(function(t){return this._private.elements.hasElementWithId(t)},"hasElementWithId"),getElementById:o(function(t){return this._private.elements.getElementById(t)},"getElementById"),hasCompoundNodes:o(function(){return this._private.hasCompoundNodes},"hasCompoundNodes"),headless:o(function(){return this._private.renderer.isHeadless()},"headless"),styleEnabled:o(function(){return this._private.styleEnabled},"styleEnabled"),addToPool:o(function(t){return this._private.elements.merge(t),this},"addToPool"),removeFromPool:o(function(t){return this._private.elements.unmerge(t),this},"removeFromPool"),container:o(function(){return this._private.container||null},"container"),window:o(function(){var t=this._private.container;if(t==null)return Gn;var r=this._private.container.ownerDocument;return r===void 0||r==null?Gn:r.defaultView||Gn},"window"),mount:o(function(t){if(t!=null){var r=this,i=r._private,n=i.options;return!I3(t)&&I3(t[0])&&(t=t[0]),r.stopAnimationLoop(),r.destroyRenderer(),i.container=t,i.styleEnabled=!0,r.invalidateSize(),r.initRenderer(hr({},n,n.renderer,{name:n.renderer.name==="null"?"canvas":n.renderer.name})),r.startAnimationLoop(),r.style(n.style),r.emit("mount"),r}},"mount"),unmount:o(function(){var t=this;return t.stopAnimationLoop(),t.destroyRenderer(),t.initRenderer({name:"null"}),t.emit("unmount"),t},"unmount"),options:o(function(){return Bc(this._private.options)},"options"),json:o(function(t){var r=this,i=r._private,n=r.mutableElements(),a=o(function(w){return r.getElementById(w.id())},"getFreshRef");if(Xr(t)){if(r.startBatch(),t.elements){var s={},l=o(function(w,C){for(var k=[],E=[],A=0;A<w.length;A++){var N=w[A];if(!N.data.id){di("cy.json() cannot handle elements without an ID attribute");continue}var P=""+N.data.id,I=r.getElementById(P);s[P]=!0,I.length!==0?E.push({ele:I,json:N}):(C&&(N.group=C),k.push(N))}r.add(k);for(var D=0;D<E.length;D++){var _=E[D],R=_.ele,M=_.json;R.json(M)}},"updateEles");if(Si(t.elements))l(t.elements);else for(var u=["nodes","edges"],h=0;h<u.length;h++){var d=u[h],f=t.elements[d];Si(f)&&l(f,d)}var p=r.collection();n.filter(function(T){return!s[T.id()]}).forEach(function(T){T.isParent()?p.merge(T):T.remove()}),p.forEach(function(T){return T.children().move({parent:null})}),p.forEach(function(T){return a(T).remove()})}t.style&&r.style(t.style),t.zoom!=null&&t.zoom!==i.zoom&&r.zoom(t.zoom),t.pan&&(t.pan.x!==i.pan.x||t.pan.y!==i.pan.y)&&r.pan(t.pan),t.data&&r.data(t.data);for(var m=["minZoom","maxZoom","zoomingEnabled","userZoomingEnabled","panningEnabled","userPanningEnabled","boxSelectionEnabled","autolock","autoungrabify","autounselectify","multiClickDebounceTime"],g=0;g<m.length;g++){var y=m[g];t[y]!=null&&r[y](t[y])}return r.endBatch(),this}else{var v=!!t,x={};v?x.elements=this.elements().map(function(T){return T.json()}):(x.elements={},n.forEach(function(T){var w=T.group();x.elements[w]||(x.elements[w]=[]),x.elements[w].push(T.json())})),this._private.styleEnabled&&(x.style=r.style().json()),x.data=Bc(r.data());var b=i.options;return x.zoomingEnabled=i.zoomingEnabled,x.userZoomingEnabled=i.userZoomingEnabled,x.zoom=i.zoom,x.minZoom=i.minZoom,x.maxZoom=i.maxZoom,x.panningEnabled=i.panningEnabled,x.userPanningEnabled=i.userPanningEnabled,x.pan=Bc(i.pan),x.boxSelectionEnabled=i.boxSelectionEnabled,x.renderer=Bc(b.renderer),x.hideEdgesOnViewport=b.hideEdgesOnViewport,x.textureOnViewport=b.textureOnViewport,x.wheelSensitivity=b.wheelSensitivity,x.motionBlur=b.motionBlur,x.multiClickDebounceTime=b.multiClickDebounceTime,x}},"json")});G3.$id=G3.getElementById;[Aat,Mat,jme,JO,_3,Iat,eP,D3,Bat,r0,Jb].forEach(function(e){hr(G3,e)});$at={fit:!0,directed:!1,direction:"downward",padding:30,circle:!1,grid:!1,spacingFactor:1.75,boundingBox:void 0,avoidOverlap:!0,nodeDimensionsIncludeLabels:!1,roots:void 0,depthSort:void 0,animate:!1,animationDuration:500,animationEasing:void 0,animateFilter:o(function(t,r){return!0},"animateFilter"),ready:void 0,stop:void 0,transform:o(function(t,r){return r},"transform")},zat={maximal:!1,acyclic:!1},r1=o(function(t){return t.scratch("breadthfirst")},"getInfo"),g0e=o(function(t,r){return t.scratch("breadthfirst",r)},"setInfo");o(Xme,"BreadthFirstLayout");Xme.prototype.run=function(){var e=this.options,t=e.cy,r=e.eles,i=r.nodes().filter(function(Me){return Me.isChildless()}),n=r,a=e.directed,s=e.acyclic||e.maximal||e.maximalAdjustments>0,l=!!e.boundingBox,u=is(l?e.boundingBox:structuredClone(t.extent())),h;if(uo(e.roots))h=e.roots;else if(Si(e.roots)){for(var d=[],f=0;f<e.roots.length;f++){var p=e.roots[f],m=t.getElementById(p);d.push(m)}h=t.collection(d)}else if(sr(e.roots))h=t.$(e.roots);else if(a)h=i.roots();else{var g=r.components();h=t.collection();for(var y=o(function(){var $e=g[v],de=$e.maxDegree(!1),rt=$e.filter(function(ke){return ke.degree(!1)===de});h=h.add(rt)},"_loop"),v=0;v<g.length;v++)y()}var x=[],b={},T=o(function($e,de){x[de]==null&&(x[de]=[]);var rt=x[de].length;x[de].push($e),g0e($e,{index:rt,depth:de})},"addToDepth"),w=o(function($e,de){var rt=r1($e),ke=rt.depth,Fe=rt.index;x[ke][Fe]=null,$e.isChildless()&&T($e,de)},"changeDepth");n.bfs({roots:h,directed:e.directed,visit:o(function($e,de,rt,ke,Fe){var He=$e[0],at=He.id();He.isChildless()&&T(He,Fe),b[at]=!0},"visit")});for(var C=[],k=0;k<i.length;k++){var E=i[k];b[E.id()]||C.push(E)}var A=o(function($e){for(var de=x[$e],rt=0;rt<de.length;rt++){var ke=de[rt];if(ke==null){de.splice(rt,1),rt--;continue}g0e(ke,{depth:$e,index:rt})}},"assignDepthsAt"),N=o(function($e,de){for(var rt=r1($e),ke=$e.incomers().filter(function(ve){return ve.isNode()&&r.has(ve)}),Fe=-1,He=$e.id(),at=0;at<ke.length;at++){var qe=ke[at],Ue=r1(qe);Fe=Math.max(Fe,Ue.depth)}if(rt.depth<=Fe){if(!e.acyclic&&de[He])return null;var ye=Fe+1;return w($e,ye),de[He]=ye,!0}return!1},"adjustMaximally");if(a&&s){var P=[],I={},D=o(function($e){return P.push($e)},"enqueue"),_=o(function(){return P.shift()},"dequeue");for(i.forEach(function(Me){return P.push(Me)});P.length>0;){var R=_(),M=N(R,I);if(M)R.outgoers().filter(function(Me){return Me.isNode()&&r.has(Me)}).forEach(D);else if(M===null){di("Detected double maximal shift for node `"+R.id()+"`.  Bailing maximal adjustment due to cycle.  Use `options.maximal: true` only on DAGs.");break}}}var L=0;if(e.avoidOverlap)for(var B=0;B<i.length;B++){var O=i[B],$=O.layoutDimensions(e),G=$.w,F=$.h;L=Math.max(L,G,F)}var V={},H=o(function($e){if(V[$e.id()])return V[$e.id()];for(var de=r1($e).depth,rt=$e.neighborhood(),ke=0,Fe=0,He=0;He<rt.length;He++){var at=rt[He];if(!(at.isEdge()||at.isParent()||!i.has(at))){var qe=r1(at);if(qe!=null){var Ue=qe.index,ye=qe.depth;if(!(Ue==null||ye==null)){var ve=x[ye].length;ye<de&&(ke+=Ue/ve,Fe++)}}}}return Fe=Math.max(1,Fe),ke=ke/Fe,Fe===0&&(ke=0),V[$e.id()]=ke,ke},"getWeightedPercent"),j=o(function($e,de){var rt=H($e),ke=H(de),Fe=rt-ke;return Fe===0?K0e($e.id(),de.id()):Fe},"sortFn");e.depthSort!==void 0&&(j=e.depthSort);for(var U=x.length,Q=0;Q<U;Q++)x[Q].sort(j),A(Q);for(var Y=[],ae=0;ae<C.length;ae++)Y.push(C[ae]);var J=o(function(){for(var $e=0;$e<U;$e++)A($e)},"assignDepths");Y.length&&(x.unshift(Y),U=x.length,J());for(var te=0,re=0;re<U;re++)te=Math.max(x[re].length,te);var ee={x:u.x1+u.w/2,y:u.y1+u.h/2},Te=i.reduce(function(Me,$e){return(function(de){return{w:Me.w===-1?de.w:(Me.w+de.w)/2,h:Me.h===-1?de.h:(Me.h+de.h)/2}})($e.boundingBox({includeLabels:e.nodeDimensionsIncludeLabels}))},{w:-1,h:-1}),ue=Math.max(U===1?0:l?(u.h-e.padding*2-Te.h)/(U-1):(u.h-e.padding*2-Te.h)/(U+1),L),De=x.reduce(function(Me,$e){return Math.max(Me,$e.length)},0),Ie=o(function($e){var de=r1($e),rt=de.depth,ke=de.index;if(e.circle){var Fe=Math.min(u.w/2/U,u.h/2/U);Fe=Math.max(Fe,L);var He=Fe*rt+Fe-(U>0&&x[0].length<=3?Fe/2:0),at=2*Math.PI/x[rt].length*ke;return rt===0&&x[0].length===1&&(He=1),{x:ee.x+He*Math.cos(at),y:ee.y+He*Math.sin(at)}}else{var qe=x[rt].length,Ue=Math.max(qe===1?0:l?(u.w-e.padding*2-Te.w)/((e.grid?De:qe)-1):(u.w-e.padding*2-Te.w)/((e.grid?De:qe)+1),L),ye={x:ee.x+(ke+1-(qe+1)/2)*Ue,y:ee.y+(rt+1-(U+1)/2)*ue};return ye}},"getPositionTopBottom"),Ee={downward:0,leftward:90,upward:180,rightward:-90};Object.keys(Ee).indexOf(e.direction)===-1&&Yi("Invalid direction '".concat(e.direction,"' specified for breadthfirst layout. Valid values are: ").concat(Object.keys(Ee).join(", ")));var we=o(function($e){return rrt(Ie($e),u,Ee[e.direction])},"getPosition");return r.nodes().layoutPositions(this,e,we),this};Gat={fit:!0,padding:30,boundingBox:void 0,avoidOverlap:!0,nodeDimensionsIncludeLabels:!1,spacingFactor:void 0,radius:void 0,startAngle:3/2*Math.PI,sweep:void 0,clockwise:!0,sort:void 0,animate:!1,animationDuration:500,animationEasing:void 0,animateFilter:o(function(t,r){return!0},"animateFilter"),ready:void 0,stop:void 0,transform:o(function(t,r){return r},"transform")};o(Kme,"CircleLayout");Kme.prototype.run=function(){var e=this.options,t=e,r=e.cy,i=t.eles,n=t.counterclockwise!==void 0?!t.counterclockwise:t.clockwise,a=i.nodes().not(":parent");t.sort&&(a=a.sort(t.sort));for(var s=is(t.boundingBox?t.boundingBox:{x1:0,y1:0,w:r.width(),h:r.height()}),l={x:s.x1+s.w/2,y:s.y1+s.h/2},u=t.sweep===void 0?2*Math.PI-2*Math.PI/a.length:t.sweep,h=u/Math.max(1,a.length-1),d,f=0,p=0;p<a.length;p++){var m=a[p],g=m.layoutDimensions(t),y=g.w,v=g.h;f=Math.max(f,y,v)}if(Ot(t.radius)?d=t.radius:a.length<=1?d=0:d=Math.min(s.h,s.w)/2-f,a.length>1&&t.avoidOverlap){f*=1.75;var x=Math.cos(h)-Math.cos(0),b=Math.sin(h)-Math.sin(0),T=Math.sqrt(f*f/(x*x+b*b));d=Math.max(T,d)}var w=o(function(k,E){var A=t.startAngle+E*h*(n?1:-1),N=d*Math.cos(A),P=d*Math.sin(A),I={x:l.x+N,y:l.y+P};return I},"getPos");return i.nodes().layoutPositions(this,t,w),this};Vat={fit:!0,padding:30,startAngle:3/2*Math.PI,sweep:void 0,clockwise:!0,equidistant:!1,minNodeSpacing:10,boundingBox:void 0,avoidOverlap:!0,nodeDimensionsIncludeLabels:!1,height:void 0,width:void 0,spacingFactor:void 0,concentric:o(function(t){return t.degree()},"concentric"),levelWidth:o(function(t){return t.maxDegree()/4},"levelWidth"),animate:!1,animationDuration:500,animationEasing:void 0,animateFilter:o(function(t,r){return!0},"animateFilter"),ready:void 0,stop:void 0,transform:o(function(t,r){return r},"transform")};o(Zme,"ConcentricLayout");Zme.prototype.run=function(){for(var e=this.options,t=e,r=t.counterclockwise!==void 0?!t.counterclockwise:t.clockwise,i=e.cy,n=t.eles,a=n.nodes().not(":parent"),s=is(t.boundingBox?t.boundingBox:{x1:0,y1:0,w:i.width(),h:i.height()}),l={x:s.x1+s.w/2,y:s.y1+s.h/2},u=[],h=0,d=0;d<a.length;d++){var f=a[d],p=void 0;p=t.concentric(f),u.push({value:p,node:f}),f._private.scratch.concentric=p}a.updateStyle();for(var m=0;m<a.length;m++){var g=a[m],y=g.layoutDimensions(t);h=Math.max(h,y.w,y.h)}u.sort(function(ue,De){return De.value-ue.value});for(var v=t.levelWidth(a),x=[[]],b=x[0],T=0;T<u.length;T++){var w=u[T];if(b.length>0){var C=Math.abs(b[0].value-w.value);C>=v&&(b=[],x.push(b))}b.push(w)}var k=h+t.minNodeSpacing;if(!t.avoidOverlap){var E=x.length>0&&x[0].length>1,A=Math.min(s.w,s.h)/2-k,N=A/(x.length+E?1:0);k=Math.min(k,N)}for(var P=0,I=0;I<x.length;I++){var D=x[I],_=t.sweep===void 0?2*Math.PI-2*Math.PI/D.length:t.sweep,R=D.dTheta=_/Math.max(1,D.length-1);if(D.length>1&&t.avoidOverlap){var M=Math.cos(R)-Math.cos(0),L=Math.sin(R)-Math.sin(0),B=Math.sqrt(k*k/(M*M+L*L));P=Math.max(B,P)}D.r=P,P+=k}if(t.equidistant){for(var O=0,$=0,G=0;G<x.length;G++){var F=x[G],V=F.r-$;O=Math.max(O,V)}$=0;for(var H=0;H<x.length;H++){var j=x[H];H===0&&($=j.r),j.r=$,$+=O}}for(var U={},Q=0;Q<x.length;Q++)for(var Y=x[Q],ae=Y.dTheta,J=Y.r,te=0;te<Y.length;te++){var re=Y[te],ee=t.startAngle+(r?1:-1)*ae*te,Te={x:l.x+J*Math.cos(ee),y:l.y+J*Math.sin(ee)};U[re.node.id()]=Te}return n.nodes().layoutPositions(this,t,function(ue){var De=ue.id();return U[De]}),this};Wat={ready:o(function(){},"ready"),stop:o(function(){},"stop"),animate:!0,animationEasing:void 0,animationDuration:void 0,animateFilter:o(function(t,r){return!0},"animateFilter"),animationThreshold:250,refresh:20,fit:!0,padding:30,boundingBox:void 0,nodeDimensionsIncludeLabels:!1,randomize:!1,componentSpacing:40,nodeRepulsion:o(function(t){return 2048},"nodeRepulsion"),nodeOverlap:4,idealEdgeLength:o(function(t){return 32},"idealEdgeLength"),edgeElasticity:o(function(t){return 32},"edgeElasticity"),nestingFactor:1.2,gravity:1,numIter:1e3,initialTemp:1e3,coolingFactor:.99,minTemp:1};o(lE,"CoseLayout");lE.prototype.run=function(){var e=this.options,t=e.cy,r=this;r.stopped=!1,(e.animate===!0||e.animate===!1)&&r.emit({type:"layoutstart",layout:r}),e.debug===!0?OO=!0:OO=!1;var i=qat(t,r,e);OO&&Hat(i),e.randomize&&Yat(i);var n=Zu(),a=o(function(){jat(i,t,e),e.fit===!0&&t.fit(e.padding)},"refresh"),s=o(function(p){return!(r.stopped||p>=e.numIter||(Xat(i,e),i.temperature=i.temperature*e.coolingFactor,i.temperature<e.minTemp))},"mainLoop"),l=o(function(){if(e.animate===!0||e.animate===!1)a(),r.one("layoutstop",e.stop),r.emit({type:"layoutstop",layout:r});else{var p=e.eles.nodes(),m=Jme(i,e,p);p.layoutPositions(r,e,m)}},"done"),u=0,h=!0;if(e.animate===!0){var d=o(function(){for(var p=0;h&&p<e.refresh;)h=s(u),u++,p++;if(!h)v0e(i,e),l();else{var m=Zu();m-n>=e.animationThreshold&&a(),O3(d)}},"frame");d()}else{for(;h;)h=s(u),u++;v0e(i,e),l()}return this};lE.prototype.stop=function(){return this.stopped=!0,this.thread&&this.thread.stop(),this.emit("layoutstop"),this};lE.prototype.destroy=function(){return this.thread&&this.thread.stop(),this};qat=o(function(t,r,i){for(var n=i.eles.edges(),a=i.eles.nodes(),s=is(i.boundingBox?i.boundingBox:{x1:0,y1:0,w:t.width(),h:t.height()}),l={isCompound:t.hasCompoundNodes(),layoutNodes:[],idToIndex:{},nodeSize:a.size(),graphSet:[],indexToGraph:[],layoutEdges:[],edgeSize:n.size(),temperature:i.initialTemp,clientWidth:s.w,clientHeight:s.h,boundingBox:s},u=i.eles.components(),h={},d=0;d<u.length;d++)for(var f=u[d],p=0;p<f.length;p++){var m=f[p];h[m.id()]=d}for(var d=0;d<l.nodeSize;d++){var g=a[d],y=g.layoutDimensions(i),v={};v.isLocked=g.locked(),v.id=g.data("id"),v.parentId=g.data("parent"),v.cmptId=h[g.id()],v.children=[],v.positionX=g.position("x"),v.positionY=g.position("y"),v.offsetX=0,v.offsetY=0,v.height=y.w,v.width=y.h,v.maxX=v.positionX+v.width/2,v.minX=v.positionX-v.width/2,v.maxY=v.positionY+v.height/2,v.minY=v.positionY-v.height/2,v.padLeft=parseFloat(g.style("padding")),v.padRight=parseFloat(g.style("padding")),v.padTop=parseFloat(g.style("padding")),v.padBottom=parseFloat(g.style("padding")),v.nodeRepulsion=Ji(i.nodeRepulsion)?i.nodeRepulsion(g):i.nodeRepulsion,l.layoutNodes.push(v),l.idToIndex[v.id]=d}for(var x=[],b=0,T=-1,w=[],d=0;d<l.nodeSize;d++){var g=l.layoutNodes[d],C=g.parentId;C!=null?l.layoutNodes[l.idToIndex[C]].children.push(g.id):(x[++T]=g.id,w.push(g.id))}for(l.graphSet.push(w);b<=T;){var k=x[b++],E=l.idToIndex[k],m=l.layoutNodes[E],A=m.children;if(A.length>0){l.graphSet.push(A);for(var d=0;d<A.length;d++)x[++T]=A[d]}}for(var d=0;d<l.graphSet.length;d++)for(var N=l.graphSet[d],p=0;p<N.length;p++){var P=l.idToIndex[N[p]];l.indexToGraph[P]=d}for(var d=0;d<l.edgeSize;d++){var I=n[d],D={};D.id=I.data("id"),D.sourceId=I.data("source"),D.targetId=I.data("target");var _=Ji(i.idealEdgeLength)?i.idealEdgeLength(I):i.idealEdgeLength,R=Ji(i.edgeElasticity)?i.edgeElasticity(I):i.edgeElasticity,M=l.idToIndex[D.sourceId],L=l.idToIndex[D.targetId],B=l.indexToGraph[M],O=l.indexToGraph[L];if(B!=O){for(var $=Uat(D.sourceId,D.targetId,l),G=l.graphSet[$],F=0,v=l.layoutNodes[M];G.indexOf(v.id)===-1;)v=l.layoutNodes[l.idToIndex[v.parentId]],F++;for(v=l.layoutNodes[L];G.indexOf(v.id)===-1;)v=l.layoutNodes[l.idToIndex[v.parentId]],F++;_*=F*i.nestingFactor}D.idealLength=_,D.elasticity=R,l.layoutEdges.push(D)}return l},"createLayoutInfo"),Uat=o(function(t,r,i){var n=Qme(t,r,0,i);return 2>n.count?0:n.graph},"findLCA"),Qme=o(function(t,r,i,n){var a=n.graphSet[i];if(-1<a.indexOf(t)&&-1<a.indexOf(r))return{count:2,graph:i};for(var s=0,l=0;l<a.length;l++){var u=a[l],h=n.idToIndex[u],d=n.layoutNodes[h].children;if(d.length!==0){var f=n.indexToGraph[n.idToIndex[d[0]]],p=Qme(t,r,f,n);if(p.count!==0)if(p.count===1){if(s++,s===2)break}else return p}}return{count:s,graph:i}},"findLCA_aux"),Yat=o(function(t,r){for(var i=t.clientWidth,n=t.clientHeight,a=0;a<t.nodeSize;a++){var s=t.layoutNodes[a];s.children.length===0&&!s.isLocked&&(s.positionX=Math.random()*i,s.positionY=Math.random()*n)}},"randomizePositions"),Jme=o(function(t,r,i){var n=t.boundingBox,a={x1:1/0,x2:-1/0,y1:1/0,y2:-1/0};return r.boundingBox&&(i.forEach(function(s){var l=t.layoutNodes[t.idToIndex[s.data("id")]];a.x1=Math.min(a.x1,l.positionX),a.x2=Math.max(a.x2,l.positionX),a.y1=Math.min(a.y1,l.positionY),a.y2=Math.max(a.y2,l.positionY)}),a.w=a.x2-a.x1,a.h=a.y2-a.y1),function(s,l){var u=t.layoutNodes[t.idToIndex[s.data("id")]];if(r.boundingBox){var h=a.w===0?.5:(u.positionX-a.x1)/a.w,d=a.h===0?.5:(u.positionY-a.y1)/a.h;return{x:n.x1+h*n.w,y:n.y1+d*n.h}}else return{x:u.positionX,y:u.positionY}}},"getScaleInBoundsFn"),jat=o(function(t,r,i){var n=i.layout,a=i.eles.nodes(),s=Jme(t,i,a);a.positions(s),t.ready!==!0&&(t.ready=!0,n.one("layoutready",i.ready),n.emit({type:"layoutready",layout:this}))},"refreshPositions"),Xat=o(function(t,r,i){Kat(t,r),Jat(t),est(t,r),tst(t),rst(t)},"step"),Kat=o(function(t,r){for(var i=0;i<t.graphSet.length;i++)for(var n=t.graphSet[i],a=n.length,s=0;s<a;s++)for(var l=t.layoutNodes[t.idToIndex[n[s]]],u=s+1;u<a;u++){var h=t.layoutNodes[t.idToIndex[n[u]]];Zat(l,h,t,r)}},"calculateNodeForces"),y0e=o(function(t){return-1+2*t*Math.random()},"randomDistance"),Zat=o(function(t,r,i,n){var a=t.cmptId,s=r.cmptId;if(!(a!==s&&!i.isCompound)){var l=r.positionX-t.positionX,u=r.positionY-t.positionY,h=1;l===0&&u===0&&(l=y0e(h),u=y0e(h));var d=Qat(t,r,l,u);if(d>0)var f=n.nodeOverlap*d,p=Math.sqrt(l*l+u*u),m=f*l/p,g=f*u/p;else var y=V3(t,l,u),v=V3(r,-1*l,-1*u),x=v.x-y.x,b=v.y-y.y,T=x*x+b*b,p=Math.sqrt(T),f=(t.nodeRepulsion+r.nodeRepulsion)/T,m=f*x/p,g=f*b/p;t.isLocked||(t.offsetX-=m,t.offsetY-=g),r.isLocked||(r.offsetX+=m,r.offsetY+=g)}},"nodeRepulsion"),Qat=o(function(t,r,i,n){if(i>0)var a=t.maxX-r.minX;else var a=r.maxX-t.minX;if(n>0)var s=t.maxY-r.minY;else var s=r.maxY-t.minY;return a>=0&&s>=0?Math.sqrt(a*a+s*s):0},"nodesOverlap"),V3=o(function(t,r,i){var n=t.positionX,a=t.positionY,s=t.height||1,l=t.width||1,u=i/r,h=s/l,d={};return r===0&&0<i||r===0&&0>i?(d.x=n,d.y=a+s/2,d):0<r&&-1*h<=u&&u<=h?(d.x=n+l/2,d.y=a+l*i/2/r,d):0>r&&-1*h<=u&&u<=h?(d.x=n-l/2,d.y=a-l*i/2/r,d):0<i&&(u<=-1*h||u>=h)?(d.x=n+s*r/2/i,d.y=a+s/2,d):(0>i&&(u<=-1*h||u>=h)&&(d.x=n-s*r/2/i,d.y=a-s/2),d)},"findClippingPoint"),Jat=o(function(t,r){for(var i=0;i<t.edgeSize;i++){var n=t.layoutEdges[i],a=t.idToIndex[n.sourceId],s=t.layoutNodes[a],l=t.idToIndex[n.targetId],u=t.layoutNodes[l],h=u.positionX-s.positionX,d=u.positionY-s.positionY;if(!(h===0&&d===0)){var f=V3(s,h,d),p=V3(u,-1*h,-1*d),m=p.x-f.x,g=p.y-f.y,y=Math.sqrt(m*m+g*g),v=Math.pow(n.idealLength-y,2)/n.elasticity;if(y!==0)var x=v*m/y,b=v*g/y;else var x=0,b=0;s.isLocked||(s.offsetX+=x,s.offsetY+=b),u.isLocked||(u.offsetX-=x,u.offsetY-=b)}}},"calculateEdgeForces"),est=o(function(t,r){if(r.gravity!==0)for(var i=1,n=0;n<t.graphSet.length;n++){var a=t.graphSet[n],s=a.length;if(n===0)var l=t.clientHeight/2,u=t.clientWidth/2;else var h=t.layoutNodes[t.idToIndex[a[0]]],d=t.layoutNodes[t.idToIndex[h.parentId]],l=d.positionX,u=d.positionY;for(var f=0;f<s;f++){var p=t.layoutNodes[t.idToIndex[a[f]]];if(!p.isLocked){var m=l-p.positionX,g=u-p.positionY,y=Math.sqrt(m*m+g*g);if(y>i){var v=r.gravity*m/y,x=r.gravity*g/y;p.offsetX+=v,p.offsetY+=x}}}}},"calculateGravityForces"),tst=o(function(t,r){var i=[],n=0,a=-1;for(i.push.apply(i,t.graphSet[0]),a+=t.graphSet[0].length;n<=a;){var s=i[n++],l=t.idToIndex[s],u=t.layoutNodes[l],h=u.children;if(0<h.length&&!u.isLocked){for(var d=u.offsetX,f=u.offsetY,p=0;p<h.length;p++){var m=t.layoutNodes[t.idToIndex[h[p]]];m.offsetX+=d,m.offsetY+=f,i[++a]=h[p]}u.offsetX=0,u.offsetY=0}}},"propagateForces"),rst=o(function(t,r){for(var i=0;i<t.nodeSize;i++){var n=t.layoutNodes[i];0<n.children.length&&(n.maxX=void 0,n.minX=void 0,n.maxY=void 0,n.minY=void 0)}for(var i=0;i<t.nodeSize;i++){var n=t.layoutNodes[i];if(!(0<n.children.length||n.isLocked)){var a=ist(n.offsetX,n.offsetY,t.temperature);n.positionX+=a.x,n.positionY+=a.y,n.offsetX=0,n.offsetY=0,n.minX=n.positionX-n.width,n.maxX=n.positionX+n.width,n.minY=n.positionY-n.height,n.maxY=n.positionY+n.height,ege(n,t)}}for(var i=0;i<t.nodeSize;i++){var n=t.layoutNodes[i];0<n.children.length&&!n.isLocked&&(n.positionX=(n.maxX+n.minX)/2,n.positionY=(n.maxY+n.minY)/2,n.width=n.maxX-n.minX,n.height=n.maxY-n.minY)}},"updatePositions"),ist=o(function(t,r,i){var n=Math.sqrt(t*t+r*r);if(n>i)var a={x:i*t/n,y:i*r/n};else var a={x:t,y:r};return a},"limitForce"),ege=o(function(t,r){var i=t.parentId;if(i!=null){var n=r.layoutNodes[r.idToIndex[i]],a=!1;if((n.maxX==null||t.maxX+n.padRight>n.maxX)&&(n.maxX=t.maxX+n.padRight,a=!0),(n.minX==null||t.minX-n.padLeft<n.minX)&&(n.minX=t.minX-n.padLeft,a=!0),(n.maxY==null||t.maxY+n.padBottom>n.maxY)&&(n.maxY=t.maxY+n.padBottom,a=!0),(n.minY==null||t.minY-n.padTop<n.minY)&&(n.minY=t.minY-n.padTop,a=!0),a)return ege(n,r)}},"updateAncestryBoundaries"),v0e=o(function(t,r){for(var i=t.layoutNodes,n=[],a=0;a<i.length;a++){var s=i[a],l=s.cmptId,u=n[l]=n[l]||[];u.push(s)}for(var h=0,a=0;a<n.length;a++){var d=n[a];if(d){d.x1=1/0,d.x2=-1/0,d.y1=1/0,d.y2=-1/0;for(var f=0;f<d.length;f++){var p=d[f];d.x1=Math.min(d.x1,p.positionX-p.width/2),d.x2=Math.max(d.x2,p.positionX+p.width/2),d.y1=Math.min(d.y1,p.positionY-p.height/2),d.y2=Math.max(d.y2,p.positionY+p.height/2)}d.w=d.x2-d.x1,d.h=d.y2-d.y1,h+=d.w*d.h}}n.sort(function(b,T){return T.w*T.h-b.w*b.h});for(var m=0,g=0,y=0,v=0,x=Math.sqrt(h)*t.clientWidth/t.clientHeight,a=0;a<n.length;a++){var d=n[a];if(d){for(var f=0;f<d.length;f++){var p=d[f];p.isLocked||(p.positionX+=m-d.x1,p.positionY+=g-d.y1)}m+=d.w+r.componentSpacing,y+=d.w+r.componentSpacing,v=Math.max(v,d.h),y>x&&(g+=v+r.componentSpacing,m=0,y=0,v=0)}}},"separateComponents"),nst={fit:!0,padding:30,boundingBox:void 0,avoidOverlap:!0,avoidOverlapPadding:10,nodeDimensionsIncludeLabels:!1,spacingFactor:void 0,condense:!1,rows:void 0,cols:void 0,position:o(function(t){},"position"),sort:void 0,animate:!1,animationDuration:500,animationEasing:void 0,animateFilter:o(function(t,r){return!0},"animateFilter"),ready:void 0,stop:void 0,transform:o(function(t,r){return r},"transform")};o(tge,"GridLayout");tge.prototype.run=function(){var e=this.options,t=e,r=e.cy,i=t.eles,n=i.nodes().not(":parent");t.sort&&(n=n.sort(t.sort));var a=is(t.boundingBox?t.boundingBox:{x1:0,y1:0,w:r.width(),h:r.height()});if(a.h===0||a.w===0)i.nodes().layoutPositions(this,t,function(H){return{x:a.x1,y:a.y1}});else{var s=n.size(),l=Math.sqrt(s*a.h/a.w),u=Math.round(l),h=Math.round(a.w/a.h*l),d=o(function(j){if(j==null)return Math.min(u,h);var U=Math.min(u,h);U==u?u=j:h=j},"small"),f=o(function(j){if(j==null)return Math.max(u,h);var U=Math.max(u,h);U==u?u=j:h=j},"large"),p=t.rows,m=t.cols!=null?t.cols:t.columns;if(p!=null&&m!=null)u=p,h=m;else if(p!=null&&m==null)u=p,h=Math.ceil(s/u);else if(p==null&&m!=null)h=m,u=Math.ceil(s/h);else if(h*u>s){var g=d(),y=f();(g-1)*y>=s?d(g-1):(y-1)*g>=s&&f(y-1)}else for(;h*u<s;){var v=d(),x=f();(x+1)*v>=s?f(x+1):d(v+1)}var b=a.w/h,T=a.h/u;if(t.condense&&(b=0,T=0),t.avoidOverlap)for(var w=0;w<n.length;w++){var C=n[w],k=C._private.position;(k.x==null||k.y==null)&&(k.x=0,k.y=0);var E=C.layoutDimensions(t),A=t.avoidOverlapPadding,N=E.w+A,P=E.h+A;b=Math.max(b,N),T=Math.max(T,P)}for(var I={},D=o(function(j,U){return!!I["c-"+j+"-"+U]},"used"),_=o(function(j,U){I["c-"+j+"-"+U]=!0},"use"),R=0,M=0,L=o(function(){M++,M>=h&&(M=0,R++)},"moveToNextCell"),B={},O=0;O<n.length;O++){var $=n[O],G=t.position($);if(G&&(G.row!==void 0||G.col!==void 0)){var F={row:G.row,col:G.col};if(F.col===void 0)for(F.col=0;D(F.row,F.col);)F.col++;else if(F.row===void 0)for(F.row=0;D(F.row,F.col);)F.row++;B[$.id()]=F,_(F.row,F.col)}}var V=o(function(j,U){var Q,Y;if(j.locked()||j.isParent())return!1;var ae=B[j.id()];if(ae)Q=ae.col*b+b/2+a.x1,Y=ae.row*T+T/2+a.y1;else{for(;D(R,M);)L();Q=M*b+b/2+a.x1,Y=R*T+T/2+a.y1,_(R,M),L()}return{x:Q,y:Y}},"getPos");n.layoutPositions(this,t,V)}return this};ast={ready:o(function(){},"ready"),stop:o(function(){},"stop")};o(DP,"NullLayout");DP.prototype.run=function(){var e=this.options,t=e.eles,r=this;return e.cy,r.emit("layoutstart"),t.nodes().positions(function(){return{x:0,y:0}}),r.one("layoutready",e.ready),r.emit("layoutready"),r.one("layoutstop",e.stop),r.emit("layoutstop"),this};DP.prototype.stop=function(){return this};sst={positions:void 0,zoom:void 0,pan:void 0,fit:!0,padding:30,spacingFactor:void 0,animate:!1,animationDuration:500,animationEasing:void 0,animateFilter:o(function(t,r){return!0},"animateFilter"),ready:void 0,stop:void 0,transform:o(function(t,r){return r},"transform")};o(rge,"PresetLayout");rge.prototype.run=function(){var e=this.options,t=e.eles,r=t.nodes(),i=Ji(e.positions);function n(a){if(e.positions==null)return _rt(a.position());if(i)return e.positions(a);var s=e.positions[a._private.data.id];return s??null}return o(n,"getPosition"),r.layoutPositions(this,e,function(a,s){var l=n(a);return a.locked()||l==null?!1:l}),this};ost={fit:!0,padding:30,boundingBox:void 0,animate:!1,animationDuration:500,animationEasing:void 0,animateFilter:o(function(t,r){return!0},"animateFilter"),ready:void 0,stop:void 0,transform:o(function(t,r){return r},"transform")};o(ige,"RandomLayout");ige.prototype.run=function(){var e=this.options,t=e.cy,r=e.eles,i=is(e.boundingBox?e.boundingBox:{x1:0,y1:0,w:t.width(),h:t.height()}),n=o(function(s,l){return{x:i.x1+Math.round(Math.random()*i.w),y:i.y1+Math.round(Math.random()*i.h)}},"getPos");return r.nodes().layoutPositions(this,e,n),this};lst=[{name:"breadthfirst",impl:Xme},{name:"circle",impl:Kme},{name:"concentric",impl:Zme},{name:"cose",impl:lE},{name:"grid",impl:tge},{name:"null",impl:DP},{name:"preset",impl:rge},{name:"random",impl:ige}];o(nge,"NullRenderer");x0e=o(function(){},"noop"),b0e=o(function(){throw new Error("A headless instance can not render images")},"throwImgErr");nge.prototype={recalculateRenderedStyle:x0e,notify:o(function(){this.notifications++},"notify"),init:x0e,isHeadless:o(function(){return!0},"isHeadless"),png:b0e,jpg:b0e};RP={};RP.arrowShapeWidth=.3;RP.registerArrowShapes=function(){var e=this.arrowShapes={},t=this,r=o(function(h,d,f,p,m,g,y){var v=m.x-f/2-y,x=m.x+f/2+y,b=m.y-f/2-y,T=m.y+f/2+y,w=v<=h&&h<=x&&b<=d&&d<=T;return w},"bbCollide"),i=o(function(h,d,f,p,m){var g=h*Math.cos(p)-d*Math.sin(p),y=h*Math.sin(p)+d*Math.cos(p),v=g*f,x=y*f,b=v+m.x,T=x+m.y;return{x:b,y:T}},"transform"),n=o(function(h,d,f,p){for(var m=[],g=0;g<h.length;g+=2){var y=h[g],v=h[g+1];m.push(i(y,v,d,f,p))}return m},"transformPoints"),a=o(function(h){for(var d=[],f=0;f<h.length;f++){var p=h[f];d.push(p.x,p.y)}return d},"pointsToArr"),s=o(function(h){return h.pstyle("width").pfValue*h.pstyle("arrow-scale").pfValue*2},"standardGap"),l=o(function(h,d){sr(d)&&(d=e[d]),e[h]=hr({name:h,points:[-.15,-.3,.15,-.3,.15,.3,-.15,.3],collide:o(function(p,m,g,y,v,x){var b=a(n(this.points,g+2*x,y,v)),T=Bs(p,m,b);return T},"collide"),roughCollide:r,draw:o(function(p,m,g,y){var v=n(this.points,m,g,y);t.arrowShapeImpl("polygon")(p,v)},"draw"),spacing:o(function(p){return 0},"spacing"),gap:s},d)},"defineArrowShape");l("none",{collide:P3,roughCollide:P3,draw:mP,spacing:Ife,gap:Ife}),l("triangle",{points:[-.15,-.3,0,0,.15,-.3]}),l("arrow","triangle"),l("triangle-backcurve",{points:e.triangle.points,controlPoint:[0,-.15],roughCollide:r,draw:o(function(h,d,f,p,m){var g=n(this.points,d,f,p),y=this.controlPoint,v=i(y[0],y[1],d,f,p);t.arrowShapeImpl(this.name)(h,g,v)},"draw"),gap:o(function(h){return s(h)*.8},"gap")}),l("triangle-tee",{points:[0,0,.15,-.3,-.15,-.3,0,0],pointsTee:[-.15,-.4,-.15,-.5,.15,-.5,.15,-.4],collide:o(function(h,d,f,p,m,g,y){var v=a(n(this.points,f+2*y,p,m)),x=a(n(this.pointsTee,f+2*y,p,m)),b=Bs(h,d,v)||Bs(h,d,x);return b},"collide"),draw:o(function(h,d,f,p,m){var g=n(this.points,d,f,p),y=n(this.pointsTee,d,f,p);t.arrowShapeImpl(this.name)(h,g,y)},"draw")}),l("circle-triangle",{radius:.15,pointsTr:[0,-.15,.15,-.45,-.15,-.45,0,-.15],collide:o(function(h,d,f,p,m,g,y){var v=m,x=Math.pow(v.x-h,2)+Math.pow(v.y-d,2)<=Math.pow((f+2*y)*this.radius,2),b=a(n(this.points,f+2*y,p,m));return Bs(h,d,b)||x},"collide"),draw:o(function(h,d,f,p,m){var g=n(this.pointsTr,d,f,p);t.arrowShapeImpl(this.name)(h,g,p.x,p.y,this.radius*d)},"draw"),spacing:o(function(h){return t.getArrowWidth(h.pstyle("width").pfValue,h.pstyle("arrow-scale").value)*this.radius},"spacing")}),l("triangle-cross",{points:[0,0,.15,-.3,-.15,-.3,0,0],baseCrossLinePts:[-.15,-.4,-.15,-.4,.15,-.4,.15,-.4],crossLinePts:o(function(h,d){var f=this.baseCrossLinePts.slice(),p=d/h,m=3,g=5;return f[m]=f[m]-p,f[g]=f[g]-p,f},"crossLinePts"),collide:o(function(h,d,f,p,m,g,y){var v=a(n(this.points,f+2*y,p,m)),x=a(n(this.crossLinePts(f,g),f+2*y,p,m)),b=Bs(h,d,v)||Bs(h,d,x);return b},"collide"),draw:o(function(h,d,f,p,m){var g=n(this.points,d,f,p),y=n(this.crossLinePts(d,m),d,f,p);t.arrowShapeImpl(this.name)(h,g,y)},"draw")}),l("vee",{points:[-.15,-.3,0,0,.15,-.3,0,-.15],gap:o(function(h){return s(h)*.525},"gap")}),l("circle",{radius:.15,collide:o(function(h,d,f,p,m,g,y){var v=m,x=Math.pow(v.x-h,2)+Math.pow(v.y-d,2)<=Math.pow((f+2*y)*this.radius,2);return x},"collide"),draw:o(function(h,d,f,p,m){t.arrowShapeImpl(this.name)(h,p.x,p.y,this.radius*d)},"draw"),spacing:o(function(h){return t.getArrowWidth(h.pstyle("width").pfValue,h.pstyle("arrow-scale").value)*this.radius},"spacing")}),l("tee",{points:[-.15,0,-.15,-.1,.15,-.1,.15,0],spacing:o(function(h){return 1},"spacing"),gap:o(function(h){return 1},"gap")}),l("square",{points:[-.15,0,.15,0,.15,-.3,-.15,-.3]}),l("diamond",{points:[-.15,-.15,0,-.3,.15,-.15,0,0],gap:o(function(h){return h.pstyle("width").pfValue*h.pstyle("arrow-scale").value},"gap")}),l("chevron",{points:[0,0,-.15,-.15,-.1,-.2,0,-.1,.1,-.2,.15,-.15],gap:o(function(h){return .95*h.pstyle("width").pfValue*h.pstyle("arrow-scale").value},"gap")})};n0={};n0.projectIntoViewport=function(e,t){var r=this.cy,i=this.findContainerClientCoords(),n=i[0],a=i[1],s=i[4],l=r.pan(),u=r.zoom(),h=((e-n)/s-l.x)/u,d=((t-a)/s-l.y)/u;return[h,d]};n0.findContainerClientCoords=function(){if(this.containerBB)return this.containerBB;var e=this.container,t=e.getBoundingClientRect(),r=this.cy.window().getComputedStyle(e),i=o(function(x){return parseFloat(r.getPropertyValue(x))},"styleValue"),n={left:i("padding-left"),right:i("padding-right"),top:i("padding-top"),bottom:i("padding-bottom")},a={left:i("border-left-width"),right:i("border-right-width"),top:i("border-top-width"),bottom:i("border-bottom-width")},s=e.clientWidth,l=e.clientHeight,u=n.left+n.right,h=n.top+n.bottom,d=a.left+a.right,f=t.width/(s+d),p=s-u,m=l-h,g=t.left+n.left+a.left,y=t.top+n.top+a.top;return this.containerBB=[g,y,p,m,f]};n0.invalidateContainerClientCoordsCache=function(){this.containerBB=null};n0.findNearestElement=function(e,t,r,i){return this.findNearestElements(e,t,r,i)[0]};n0.findNearestElements=function(e,t,r,i){var n=this,a=this,s=a.getCachedZSortedEles(),l=[],u=a.cy.zoom(),h=a.cy.hasCompoundNodes(),d=(i?24:8)/u,f=(i?8:2)/u,p=(i?8:2)/u,m=1/0,g,y;r&&(s=s.interactive);function v(E,A){if(E.isNode()){if(y)return;y=E,l.push(E)}if(E.isEdge()&&(A==null||A<m))if(g){if(g.pstyle("z-compound-depth").value===E.pstyle("z-compound-depth").value&&g.pstyle("z-compound-depth").value===E.pstyle("z-compound-depth").value){for(var N=0;N<l.length;N++)if(l[N].isEdge()){l[N]=E,g=E,m=A??m;break}}}else l.push(E),g=E,m=A??m}o(v,"addEle");function x(E){var A=E.outerWidth()+2*f,N=E.outerHeight()+2*f,P=A/2,I=N/2,D=E.position(),_=E.pstyle("corner-radius").value==="auto"?"auto":E.pstyle("corner-radius").pfValue,R=E._private.rscratch;if(D.x-P<=e&&e<=D.x+P&&D.y-I<=t&&t<=D.y+I){var M=a.nodeShapes[n.getNodeShape(E)];if(M.checkPoint(e,t,0,A,N,D.x,D.y,_,R))return v(E,0),!0}}o(x,"checkNode");function b(E){var A=E._private,N=A.rscratch,P=E.pstyle("width").pfValue,I=E.pstyle("arrow-scale").value,D=P/2+d,_=D*D,R=D*2,O=A.source,$=A.target,M;if(N.edgeType==="segments"||N.edgeType==="straight"||N.edgeType==="haystack"){for(var L=N.allpts,B=0;B+3<L.length;B+=2)if(Vrt(e,t,L[B],L[B+1],L[B+2],L[B+3],R)&&_>(M=Yrt(e,t,L[B],L[B+1],L[B+2],L[B+3])))return v(E,M),!0}else if(N.edgeType==="bezier"||N.edgeType==="multibezier"||N.edgeType==="self"||N.edgeType==="compound"){for(var L=N.allpts,B=0;B+5<N.allpts.length;B+=4)if(Wrt(e,t,L[B],L[B+1],L[B+2],L[B+3],L[B+4],L[B+5],R)&&_>(M=Hrt(e,t,L[B],L[B+1],L[B+2],L[B+3],L[B+4],L[B+5])))return v(E,M),!0}for(var O=O||A.source,$=$||A.target,G=n.getArrowWidth(P,I),F=[{name:"source",x:N.arrowStartX,y:N.arrowStartY,angle:N.srcArrowAngle},{name:"target",x:N.arrowEndX,y:N.arrowEndY,angle:N.tgtArrowAngle},{name:"mid-source",x:N.midX,y:N.midY,angle:N.midsrcArrowAngle},{name:"mid-target",x:N.midX,y:N.midY,angle:N.midtgtArrowAngle}],B=0;B<F.length;B++){var V=F[B],H=a.arrowShapes[E.pstyle(V.name+"-arrow-shape").value],j=E.pstyle("width").pfValue;if(H.roughCollide(e,t,G,V.angle,{x:V.x,y:V.y},j,d)&&H.collide(e,t,G,V.angle,{x:V.x,y:V.y},j,d))return v(E),!0}h&&l.length>0&&(x(O),x($))}o(b,"checkEdge");function T(E,A,N){return Ps(E,A,N)}o(T,"preprop");function w(E,A){var N=E._private,P=p,I;A?I=A+"-":I="",E.boundingBox();var D=N.labelBounds[A||"main"],_=E.pstyle(I+"label").value,R=E.pstyle("text-events").strValue==="yes";if(!(!R||!_)){var M=T(N.rscratch,"labelX",A),L=T(N.rscratch,"labelY",A),B=T(N.rscratch,"labelAngle",A),O=E.pstyle(I+"text-margin-x").pfValue,$=E.pstyle(I+"text-margin-y").pfValue,G=D.x1-P-O,F=D.x2+P-O,V=D.y1-P-$,H=D.y2+P-$;if(B){var j=Math.cos(B),U=Math.sin(B),Q=o(function(Te,ue){return Te=Te-M,ue=ue-L,{x:Te*j-ue*U+M,y:Te*U+ue*j+L}},"rotate"),Y=Q(G,V),ae=Q(G,H),J=Q(F,V),te=Q(F,H),re=[Y.x+O,Y.y+$,J.x+O,J.y+$,te.x+O,te.y+$,ae.x+O,ae.y+$];if(Bs(e,t,re))return v(E),!0}else if(zd(D,e,t))return v(E),!0}}o(w,"checkLabel");for(var C=s.length-1;C>=0;C--){var k=s[C];k.isNode()?x(k)||w(k):b(k)||w(k)||w(k,"source")||w(k,"target")}return l};n0.getAllInBox=function(e,t,r,i){var n=this.getCachedZSortedEles().interactive,a=this.cy.zoom(),s=2/a,l=[],u=Math.min(e,r),h=Math.max(e,r),d=Math.min(t,i),f=Math.max(t,i);e=u,r=h,t=d,i=f;var p=is({x1:e,y1:t,x2:r,y2:i}),m=[{x:p.x1,y:p.y1},{x:p.x2,y:p.y1},{x:p.x2,y:p.y2},{x:p.x1,y:p.y2}],g=[[m[0],m[1]],[m[1],m[2]],[m[2],m[3]],[m[3],m[0]]];function y(Te,ue,De){return Ps(Te,ue,De)}o(y,"preprop");function v(Te,ue){var De=Te._private,Ie=s,Ee="";Te.boundingBox();var we=De.labelBounds.main;if(!we)return null;var Me=y(De.rscratch,"labelX",ue),$e=y(De.rscratch,"labelY",ue),de=y(De.rscratch,"labelAngle",ue),rt=Te.pstyle(Ee+"text-margin-x").pfValue,ke=Te.pstyle(Ee+"text-margin-y").pfValue,Fe=we.x1-Ie-rt,He=we.x2+Ie-rt,at=we.y1-Ie-ke,qe=we.y2+Ie-ke;if(de){var Ue=Math.cos(de),ye=Math.sin(de),ve=o(function(fe,W){return fe=fe-Me,W=W-$e,{x:fe*Ue-W*ye+Me,y:fe*ye+W*Ue+$e}},"rotate");return[ve(Fe,at),ve(He,at),ve(He,qe),ve(Fe,qe)]}else return[{x:Fe,y:at},{x:He,y:at},{x:He,y:qe},{x:Fe,y:qe}]}o(v,"getRotatedLabelBox");function x(Te,ue,De,Ie){function Ee(we,Me,$e){return($e.y-we.y)*(Me.x-we.x)>(Me.y-we.y)*($e.x-we.x)}return o(Ee,"ccw"),Ee(Te,De,Ie)!==Ee(ue,De,Ie)&&Ee(Te,ue,De)!==Ee(Te,ue,Ie)}o(x,"doLinesIntersect");for(var b=0;b<n.length;b++){var T=n[b];if(T.isNode()){var w=T,C=w.pstyle("text-events").strValue==="yes",k=w.pstyle("box-selection").strValue,E=w.pstyle("box-select-labels").strValue==="yes";if(k==="none")continue;var A=(k==="overlap"||E)&&C,N=w.boundingBox({includeNodes:!0,includeEdges:!1,includeLabels:A});if(k==="contain"){var P=!1;if(E&&C){var I=v(w);I&&N9(I,m)&&(l.push(w),P=!0)}!P&&hme(p,N)&&l.push(w)}else if(k==="overlap"&&xP(p,N)){var D=w.boundingBox({includeNodes:!0,includeEdges:!0,includeLabels:!1,includeMainLabels:!1,includeSourceLabels:!1,includeTargetLabels:!1}),_=[{x:D.x1,y:D.y1},{x:D.x2,y:D.y1},{x:D.x2,y:D.y2},{x:D.x1,y:D.y2}];if(N9(_,m))l.push(w);else{var R=v(w);R&&N9(R,m)&&l.push(w)}}}else{var M=T,L=M._private,B=L.rscratch,O=M.pstyle("box-selection").strValue;if(O==="none")continue;if(O==="contain"){if(B.startX!=null&&B.startY!=null&&!zd(p,B.startX,B.startY)||B.endX!=null&&B.endY!=null&&!zd(p,B.endX,B.endY))continue;if(B.edgeType==="bezier"||B.edgeType==="multibezier"||B.edgeType==="self"||B.edgeType==="compound"||B.edgeType==="segments"||B.edgeType==="haystack"){for(var $=L.rstyle.bezierPts||L.rstyle.linePts||L.rstyle.haystackPts,G=!0,F=0;F<$.length;F++)if(!$fe(p,$[F])){G=!1;break}G&&l.push(M)}else B.edgeType==="straight"&&l.push(M)}else if(O==="overlap"){var V=!1;if(B.startX!=null&&B.startY!=null&&B.endX!=null&&B.endY!=null&&(zd(p,B.startX,B.startY)||zd(p,B.endX,B.endY)))l.push(M),V=!0;else if(!V&&B.edgeType==="haystack"){for(var H=L.rstyle.haystackPts,j=0;j<H.length;j++)if($fe(p,H[j])){l.push(M),V=!0;break}}if(!V){var U=L.rstyle.bezierPts||L.rstyle.linePts||L.rstyle.haystackPts;if((!U||U.length<2)&&B.edgeType==="straight"&&B.startX!=null&&B.startY!=null&&B.endX!=null&&B.endY!=null&&(U=[{x:B.startX,y:B.startY},{x:B.endX,y:B.endY}]),!U||U.length<2)continue;for(var Q=0;Q<U.length-1;Q++){for(var Y=U[Q],ae=U[Q+1],J=0;J<g.length;J++){var te=Dn(g[J],2),re=te[0],ee=te[1];if(x(Y,ae,re,ee)){l.push(M),V=!0;break}}if(V)break}}}}}return l};W3={};W3.calculateArrowAngles=function(e){var t=e._private.rscratch,r=t.edgeType==="haystack",i=t.edgeType==="bezier",n=t.edgeType==="multibezier",a=t.edgeType==="segments",s=t.edgeType==="compound",l=t.edgeType==="self",u,h,d,f,p,m,x,b;if(r?(d=t.haystackPts[0],f=t.haystackPts[1],p=t.haystackPts[2],m=t.haystackPts[3]):(d=t.arrowStartX,f=t.arrowStartY,p=t.arrowEndX,m=t.arrowEndY),x=t.midX,b=t.midY,a)u=d-t.segpts[0],h=f-t.segpts[1];else if(n||s||l||i){var g=t.allpts,y=na(g[0],g[2],g[4],.1),v=na(g[1],g[3],g[5],.1);u=d-y,h=f-v}else u=d-x,h=f-b;t.srcArrowAngle=h3(u,h);var x=t.midX,b=t.midY;if(r&&(x=(d+p)/2,b=(f+m)/2),u=p-d,h=m-f,a){var g=t.allpts;if(g.length/2%2===0){var T=g.length/2,w=T-2;u=g[T]-g[w],h=g[T+1]-g[w+1]}else if(t.isRound)u=t.midVector[1],h=-t.midVector[0];else{var T=g.length/2-1,w=T-2;u=g[T]-g[w],h=g[T+1]-g[w+1]}}else if(n||s||l){var g=t.allpts,C=t.ctrlpts,k,E,A,N;if(C.length/2%2===0){var P=g.length/2-1,I=P+2,D=I+2;k=na(g[P],g[I],g[D],0),E=na(g[P+1],g[I+1],g[D+1],0),A=na(g[P],g[I],g[D],1e-4),N=na(g[P+1],g[I+1],g[D+1],1e-4)}else{var I=g.length/2-1,P=I-2,D=I+2;k=na(g[P],g[I],g[D],.4999),E=na(g[P+1],g[I+1],g[D+1],.4999),A=na(g[P],g[I],g[D],.5),N=na(g[P+1],g[I+1],g[D+1],.5)}u=A-k,h=N-E}if(t.midtgtArrowAngle=h3(u,h),t.midDispX=u,t.midDispY=h,u*=-1,h*=-1,a){var g=t.allpts;if(g.length/2%2!==0){if(!t.isRound){var T=g.length/2-1,_=T+2;u=-(g[_]-g[T]),h=-(g[_+1]-g[T+1])}}}if(t.midsrcArrowAngle=h3(u,h),a)u=p-t.segpts[t.segpts.length-2],h=m-t.segpts[t.segpts.length-1];else if(n||s||l||i){var g=t.allpts,R=g.length,y=na(g[R-6],g[R-4],g[R-2],.9),v=na(g[R-5],g[R-3],g[R-1],.9);u=p-y,h=m-v}else u=p-x,h=m-b;t.tgtArrowAngle=h3(u,h)};W3.getArrowWidth=W3.getArrowHeight=function(e,t){var r=this.arrowWidthCache=this.arrowWidthCache||{},i=r[e+", "+t];return i||(i=Math.max(Math.pow(e*13.37,.9),29)*t,r[e+", "+t]=i,i)};Pc={},Yo={},w0e=o(function(t,r,i){i.x=r.x-t.x,i.y=r.y-t.y,i.len=Math.sqrt(i.x*i.x+i.y*i.y),i.nx=i.x/i.len,i.ny=i.y/i.len,i.ang=Math.atan2(i.ny,i.nx)},"asVec"),cst=o(function(t,r){r.x=t.x*-1,r.y=t.y*-1,r.nx=t.nx*-1,r.ny=t.ny*-1,r.ang=t.ang>0?-(Math.PI-t.ang):Math.PI+t.ang},"invertVec"),ust=o(function(t,r,i,n,a){if(t!==k0e?w0e(r,t,Pc):cst(Yo,Pc),w0e(r,i,Yo),T0e=Pc.nx*Yo.ny-Pc.ny*Yo.nx,C0e=Pc.nx*Yo.nx-Pc.ny*-Yo.ny,ju=Math.asin(Math.max(-1,Math.min(1,T0e))),Math.abs(ju)<1e-6){tP=r.x,rP=r.y,Xp=i1=0;return}Zp=1,R3=!1,C0e<0?ju<0?ju=Math.PI+ju:(ju=Math.PI-ju,Zp=-1,R3=!0):ju>0&&(Zp=-1,R3=!0),r.radius!==void 0?i1=r.radius:i1=n,Up=ju/2,x3=Math.min(Pc.len/2,Yo.len/2),a?(Ic=Math.abs(Math.cos(Up)*i1/Math.sin(Up)),Ic>x3?(Ic=x3,Xp=Math.abs(Ic*Math.sin(Up)/Math.cos(Up))):Xp=i1):(Ic=Math.min(x3,i1),Xp=Math.abs(Ic*Math.sin(Up)/Math.cos(Up))),iP=r.x+Yo.nx*Ic,nP=r.y+Yo.ny*Ic,tP=iP-Yo.ny*Xp*Zp,rP=nP+Yo.nx*Xp*Zp,age=r.x+Pc.nx*Ic,sge=r.y+Pc.ny*Ic,k0e=r},"calcCornerArc");o(oge,"drawPreparedRoundCorner");o(LP,"getRoundCorner");t2=.01,hst=Math.sqrt(2*t2),Ba={};Ba.findMidptPtsEtc=function(e,t){var r=t.posPts,i=t.intersectionPts,n=t.vectorNormInverse,a,s=e.pstyle("source-endpoint"),l=e.pstyle("target-endpoint"),u=s.units!=null&&l.units!=null,h=o(function(C,k,E,A){var N=A-k,P=E-C,I=Math.sqrt(P*P+N*N);return{x:-N/I,y:P/I}},"recalcVectorNormInverse"),d=e.pstyle("edge-distances").value;switch(d){case"node-position":a=r;break;case"intersection":a=i;break;case"endpoints":{if(u){var f=this.manualEndptToPx(e.source()[0],s),p=Dn(f,2),m=p[0],g=p[1],y=this.manualEndptToPx(e.target()[0],l),v=Dn(y,2),x=v[0],b=v[1],T={x1:m,y1:g,x2:x,y2:b};n=h(m,g,x,b),a=T}else di("Edge ".concat(e.id()," has edge-distances:endpoints specified without manual endpoints specified via source-endpoint and target-endpoint.  Falling back on edge-distances:intersection (default).")),a=i;break}}return{midptPts:a,vectorNormInverse:n}};Ba.findHaystackPoints=function(e){for(var t=0;t<e.length;t++){var r=e[t],i=r._private,n=i.rscratch;if(!n.haystack){var a=Math.random()*2*Math.PI;n.source={x:Math.cos(a),y:Math.sin(a)},a=Math.random()*2*Math.PI,n.target={x:Math.cos(a),y:Math.sin(a)}}var s=i.source,l=i.target,u=s.position(),h=l.position(),d=s.width(),f=l.width(),p=s.height(),m=l.height(),g=r.pstyle("haystack-radius").value,y=g/2;n.haystackPts=n.allpts=[n.source.x*d*y+u.x,n.source.y*p*y+u.y,n.target.x*f*y+h.x,n.target.y*m*y+h.y],n.midX=(n.allpts[0]+n.allpts[2])/2,n.midY=(n.allpts[1]+n.allpts[3])/2,n.edgeType="haystack",n.haystack=!0,this.storeEdgeProjections(r),this.calculateArrowAngles(r),this.recalculateEdgeLabelProjections(r),this.calculateLabelAngles(r)}};Ba.findSegmentsPoints=function(e,t){var r=e._private.rscratch,i=e.pstyle("segment-weights"),n=e.pstyle("segment-distances"),a=e.pstyle("segment-radii"),s=e.pstyle("radius-type"),l=Math.min(i.pfValue.length,n.pfValue.length),u=a.pfValue[a.pfValue.length-1],h=s.pfValue[s.pfValue.length-1];r.edgeType="segments",r.segpts=[],r.radii=[],r.isArcRadius=[];for(var d=0;d<l;d++){var f=i.pfValue[d],p=n.pfValue[d],m=1-f,g=f,y=this.findMidptPtsEtc(e,t),v=y.midptPts,x=y.vectorNormInverse,b={x:v.x1*m+v.x2*g,y:v.y1*m+v.y2*g};r.segpts.push(b.x+x.x*p,b.y+x.y*p),r.radii.push(a.pfValue[d]!==void 0?a.pfValue[d]:u),r.isArcRadius.push((s.pfValue[d]!==void 0?s.pfValue[d]:h)==="arc-radius")}};Ba.findLoopPoints=function(e,t,r,i){var n=e._private.rscratch,a=t.dirCounts,s=t.srcPos,l=e.pstyle("control-point-distances"),u=l?l.pfValue[0]:void 0,h=e.pstyle("loop-direction").pfValue,d=e.pstyle("loop-sweep").pfValue,f=e.pstyle("control-point-step-size").pfValue;n.edgeType="self";var p=r,m=f;i&&(p=0,m=u);var g=h-Math.PI/2,y=g-d/2,v=g+d/2,x=h+"_"+d;p=a[x]===void 0?a[x]=0:++a[x],n.ctrlpts=[s.x+Math.cos(y)*1.4*m*(p/3+1),s.y+Math.sin(y)*1.4*m*(p/3+1),s.x+Math.cos(v)*1.4*m*(p/3+1),s.y+Math.sin(v)*1.4*m*(p/3+1)]};Ba.findCompoundLoopPoints=function(e,t,r,i){var n=e._private.rscratch;n.edgeType="compound";var a=t.srcPos,s=t.tgtPos,l=t.srcW,u=t.srcH,h=t.tgtW,d=t.tgtH,f=e.pstyle("control-point-step-size").pfValue,p=e.pstyle("control-point-distances"),m=p?p.pfValue[0]:void 0,g=r,y=f;i&&(g=0,y=m);var v=50,x={x:a.x-l/2,y:a.y-u/2},b={x:s.x-h/2,y:s.y-d/2},T={x:Math.min(x.x,b.x),y:Math.min(x.y,b.y)},w=.5,C=Math.max(w,Math.log(l*t2)),k=Math.max(w,Math.log(h*t2));n.ctrlpts=[T.x,T.y-(1+Math.pow(v,1.12)/100)*y*(g/3+1)*C,T.x-(1+Math.pow(v,1.12)/100)*y*(g/3+1)*k,T.y]};Ba.findStraightEdgePoints=function(e){e._private.rscratch.edgeType="straight"};Ba.findBezierPoints=function(e,t,r,i,n){var a=e._private.rscratch,s=e.pstyle("control-point-step-size").pfValue,l=e.pstyle("control-point-distances"),u=e.pstyle("control-point-weights"),h=l&&u?Math.min(l.value.length,u.value.length):1,d=l?l.pfValue[0]:void 0,f=u.value[0],p=i;a.edgeType=p?"multibezier":"bezier",a.ctrlpts=[];for(var m=0;m<h;m++){var g=(.5-t.eles.length/2+r)*s*(n?-1:1),y=void 0,v=vP(g);p&&(d=l?l.pfValue[m]:s,f=u.value[m]),i?y=d:y=d!==void 0?v*d:void 0;var x=y!==void 0?y:g,b=1-f,T=f,w=this.findMidptPtsEtc(e,t),C=w.midptPts,k=w.vectorNormInverse,E={x:C.x1*b+C.x2*T,y:C.y1*b+C.y2*T};a.ctrlpts.push(E.x+k.x*x,E.y+k.y*x)}};Ba.findTaxiPoints=function(e,t){var r=e._private.rscratch;r.edgeType="segments";var i="vertical",n="horizontal",a="leftward",s="rightward",l="downward",u="upward",h="auto",d=t.posPts,f=t.srcW,p=t.srcH,m=t.tgtW,g=t.tgtH,y=e.pstyle("edge-distances").value,v=y!=="node-position",x=e.pstyle("taxi-direction").value,b=x,T=e.pstyle("taxi-turn"),w=T.units==="%",C=T.pfValue,k=C<0,E=e.pstyle("taxi-turn-min-distance").pfValue,A=v?(f+m)/2:0,N=v?(p+g)/2:0,P=d.x2-d.x1,I=d.y2-d.y1,D=o(function(W,ce){return W>0?Math.max(W-ce,0):Math.min(W+ce,0)},"subDWH"),_=D(P,A),R=D(I,N),M=!1;b===h?x=Math.abs(_)>Math.abs(R)?n:i:b===u||b===l?(x=i,M=!0):(b===a||b===s)&&(x=n,M=!0);var L=x===i,B=L?R:_,O=L?I:P,$=vP(O),G=!1;!(M&&(w||k))&&(b===l&&O<0||b===u&&O>0||b===a&&O>0||b===s&&O<0)&&($*=-1,B=$*Math.abs(B),G=!0);var F;if(w){var V=C<0?1+C:C;F=V*B}else{var H=C<0?B:0;F=H+C*$}var j=o(function(W){return Math.abs(W)<E||Math.abs(W)>=Math.abs(B)},"getIsTooClose"),U=j(F),Q=j(Math.abs(B)-Math.abs(F)),Y=U||Q;if(Y&&!G)if(L){var ae=Math.abs(O)<=p/2,J=Math.abs(P)<=m/2;if(ae){var te=(d.x1+d.x2)/2,re=d.y1,ee=d.y2;r.segpts=[te,re,te,ee]}else if(J){var Te=(d.y1+d.y2)/2,ue=d.x1,De=d.x2;r.segpts=[ue,Te,De,Te]}else r.segpts=[d.x1,d.y2]}else{var Ie=Math.abs(O)<=f/2,Ee=Math.abs(I)<=g/2;if(Ie){var we=(d.y1+d.y2)/2,Me=d.x1,$e=d.x2;r.segpts=[Me,we,$e,we]}else if(Ee){var de=(d.x1+d.x2)/2,rt=d.y1,ke=d.y2;r.segpts=[de,rt,de,ke]}else r.segpts=[d.x2,d.y1]}else if(L){var Fe=d.y1+F+(v?p/2*$:0),He=d.x1,at=d.x2;r.segpts=[He,Fe,at,Fe]}else{var qe=d.x1+F+(v?f/2*$:0),Ue=d.y1,ye=d.y2;r.segpts=[qe,Ue,qe,ye]}if(r.isRound){var ve=e.pstyle("taxi-radius").value,ie=e.pstyle("radius-type").value[0]==="arc-radius";r.radii=new Array(r.segpts.length/2).fill(ve),r.isArcRadius=new Array(r.segpts.length/2).fill(ie)}};Ba.tryToCorrectInvalidPoints=function(e,t){var r=e._private.rscratch;if(r.edgeType==="bezier"){var i=t.srcPos,n=t.tgtPos,a=t.srcW,s=t.srcH,l=t.tgtW,u=t.tgtH,h=t.srcShape,d=t.tgtShape,f=t.srcCornerRadius,p=t.tgtCornerRadius,m=t.srcRs,g=t.tgtRs,y=!Ot(r.startX)||!Ot(r.startY),v=!Ot(r.arrowStartX)||!Ot(r.arrowStartY),x=!Ot(r.endX)||!Ot(r.endY),b=!Ot(r.arrowEndX)||!Ot(r.arrowEndY),T=3,w=this.getArrowWidth(e.pstyle("width").pfValue,e.pstyle("arrow-scale").value)*this.arrowShapeWidth,C=T*w,k=e0({x:r.ctrlpts[0],y:r.ctrlpts[1]},{x:r.startX,y:r.startY}),E=k<C,A=e0({x:r.ctrlpts[0],y:r.ctrlpts[1]},{x:r.endX,y:r.endY}),N=A<C,P=!1;if(y||v||E){P=!0;var I={x:r.ctrlpts[0]-i.x,y:r.ctrlpts[1]-i.y},D=Math.sqrt(I.x*I.x+I.y*I.y),_={x:I.x/D,y:I.y/D},R=Math.max(a,s),M={x:r.ctrlpts[0]+_.x*2*R,y:r.ctrlpts[1]+_.y*2*R},L=h.intersectLine(i.x,i.y,a,s,M.x,M.y,0,f,m);E?(r.ctrlpts[0]=r.ctrlpts[0]+_.x*(C-k),r.ctrlpts[1]=r.ctrlpts[1]+_.y*(C-k)):(r.ctrlpts[0]=L[0]+_.x*C,r.ctrlpts[1]=L[1]+_.y*C)}if(x||b||N){P=!0;var B={x:r.ctrlpts[0]-n.x,y:r.ctrlpts[1]-n.y},O=Math.sqrt(B.x*B.x+B.y*B.y),$={x:B.x/O,y:B.y/O},G=Math.max(a,s),F={x:r.ctrlpts[0]+$.x*2*G,y:r.ctrlpts[1]+$.y*2*G},V=d.intersectLine(n.x,n.y,l,u,F.x,F.y,0,p,g);N?(r.ctrlpts[0]=r.ctrlpts[0]+$.x*(C-A),r.ctrlpts[1]=r.ctrlpts[1]+$.y*(C-A)):(r.ctrlpts[0]=V[0]+$.x*C,r.ctrlpts[1]=V[1]+$.y*C)}P&&this.findEndpoints(e)}};Ba.storeAllpts=function(e){var t=e._private.rscratch;if(t.edgeType==="multibezier"||t.edgeType==="bezier"||t.edgeType==="self"||t.edgeType==="compound"){t.allpts=[],t.allpts.push(t.startX,t.startY);for(var r=0;r+1<t.ctrlpts.length;r+=2)t.allpts.push(t.ctrlpts[r],t.ctrlpts[r+1]),r+3<t.ctrlpts.length&&t.allpts.push((t.ctrlpts[r]+t.ctrlpts[r+2])/2,(t.ctrlpts[r+1]+t.ctrlpts[r+3])/2);t.allpts.push(t.endX,t.endY);var i,n;t.ctrlpts.length/2%2===0?(i=t.allpts.length/2-1,t.midX=t.allpts[i],t.midY=t.allpts[i+1]):(i=t.allpts.length/2-3,n=.5,t.midX=na(t.allpts[i],t.allpts[i+2],t.allpts[i+4],n),t.midY=na(t.allpts[i+1],t.allpts[i+3],t.allpts[i+5],n))}else if(t.edgeType==="straight")t.allpts=[t.startX,t.startY,t.endX,t.endY],t.midX=(t.startX+t.endX+t.arrowStartX+t.arrowEndX)/4,t.midY=(t.startY+t.endY+t.arrowStartY+t.arrowEndY)/4;else if(t.edgeType==="segments"){if(t.allpts=[],t.allpts.push(t.startX,t.startY),t.allpts.push.apply(t.allpts,t.segpts),t.allpts.push(t.endX,t.endY),t.isRound){t.roundCorners=[];for(var a=2;a+3<t.allpts.length;a+=2){var s=t.radii[a/2-1],l=t.isArcRadius[a/2-1];t.roundCorners.push(LP({x:t.allpts[a-2],y:t.allpts[a-1]},{x:t.allpts[a],y:t.allpts[a+1],radius:s},{x:t.allpts[a+2],y:t.allpts[a+3]},s,l))}}if(t.segpts.length%4===0){var u=t.segpts.length/2,h=u-2;t.midX=(t.segpts[h]+t.segpts[u])/2,t.midY=(t.segpts[h+1]+t.segpts[u+1])/2}else{var d=t.segpts.length/2-1;if(!t.isRound)t.midX=t.segpts[d],t.midY=t.segpts[d+1];else{var f={x:t.segpts[d],y:t.segpts[d+1]},p=t.roundCorners[d/2];if(p.radius===0){var m={x:t.segpts[d+2],y:t.segpts[d+3]};t.midX=f.x,t.midY=f.y,t.midVector=[f.y-m.y,m.x-f.x]}else{var g=[f.x-p.cx,f.y-p.cy],y=p.radius/Math.sqrt(Math.pow(g[0],2)+Math.pow(g[1],2));g=g.map(function(v){return v*y}),t.midX=p.cx+g[0],t.midY=p.cy+g[1],t.midVector=g}}}}};Ba.checkForInvalidEdgeWarning=function(e){var t=e[0]._private.rscratch;t.nodesOverlap||Ot(t.startX)&&Ot(t.startY)&&Ot(t.endX)&&Ot(t.endY)?t.loggedErr=!1:t.loggedErr||(t.loggedErr=!0,di("Edge `"+e.id()+"` has invalid endpoints and so it is impossible to draw.  Adjust your edge style (e.g. control points) accordingly or use an alternative edge type.  This is expected behaviour when the source node and the target node overlap."))};Ba.findEdgeControlPoints=function(e){var t=this;if(!(!e||e.length===0)){for(var r=this,i=r.cy,n=i.hasCompoundNodes(),a=new Ku,s=o(function(N,P){return[].concat(N3(N),[P?1:0]).join("-")},"getKey"),l=[],u=[],h=0;h<e.length;h++){var d=e[h],f=d._private,p=d.pstyle("curve-style").value;if(!(d.removed()||!d.takesUpSpace())){if(p==="haystack"){u.push(d);continue}var m=p==="unbundled-bezier"||$d(p,"segments")||p==="straight"||p==="straight-triangle"||$d(p,"taxi"),g=p==="unbundled-bezier"||p==="bezier",y=f.source,v=f.target,x=y.poolIndex(),b=v.poolIndex(),T=[x,b].sort(),w=s(T,m),C=a.get(w);C==null&&(C={eles:[]},l.push({pairId:T,edgeIsUnbundled:m}),a.set(w,C)),C.eles.push(d),m&&(C.hasUnbundled=!0),g&&(C.hasBezier=!0)}}for(var k=o(function(){var N=l[E],P=N.pairId,I=N.edgeIsUnbundled,D=s(P,I),_=a.get(D),R;if(!_.hasUnbundled){var M=_.eles[0].parallelEdges().filter(function(ie){return ie.isBundledBezier()});gP(_.eles),M.forEach(function(ie){return _.eles.push(ie)}),_.eles.sort(function(ie,fe){return ie.poolIndex()-fe.poolIndex()})}var L=_.eles[0],B=L.source(),O=L.target();if(B.poolIndex()>O.poolIndex()){var $=B;B=O,O=$}var G=_.srcPos=B.position(),F=_.tgtPos=O.position(),V=_.srcW=B.outerWidth(),H=_.srcH=B.outerHeight(),j=_.tgtW=O.outerWidth(),U=_.tgtH=O.outerHeight(),Q=_.srcShape=r.nodeShapes[t.getNodeShape(B)],Y=_.tgtShape=r.nodeShapes[t.getNodeShape(O)],ae=_.srcCornerRadius=B.pstyle("corner-radius").value==="auto"?"auto":B.pstyle("corner-radius").pfValue,J=_.tgtCornerRadius=O.pstyle("corner-radius").value==="auto"?"auto":O.pstyle("corner-radius").pfValue,te=_.tgtRs=O._private.rscratch,re=_.srcRs=B._private.rscratch;_.dirCounts={north:0,west:0,south:0,east:0,northwest:0,southwest:0,northeast:0,southeast:0};for(var ee=0;ee<_.eles.length;ee++){var Te=_.eles[ee],ue=Te[0]._private.rscratch,De=Te.pstyle("curve-style").value,Ie=De==="unbundled-bezier"||$d(De,"segments")||$d(De,"taxi"),Ee=!B.same(Te.source());if(!_.calculatedIntersection&&B!==O&&(_.hasBezier||_.hasUnbundled)){_.calculatedIntersection=!0;var we=Q.intersectLine(G.x,G.y,V,H,F.x,F.y,0,ae,re),Me=_.srcIntn=we,$e=Y.intersectLine(F.x,F.y,j,U,G.x,G.y,0,J,te),de=_.tgtIntn=$e,rt=_.intersectionPts={x1:we[0],x2:$e[0],y1:we[1],y2:$e[1]},ke=_.posPts={x1:G.x,x2:F.x,y1:G.y,y2:F.y},Fe=$e[1]-we[1],He=$e[0]-we[0],at=Math.sqrt(He*He+Fe*Fe);Ot(at)&&at>=hst||(at=Math.sqrt(Math.max(He*He,t2)+Math.max(Fe*Fe,t2)));var qe=_.vector={x:He,y:Fe},Ue=_.vectorNorm={x:qe.x/at,y:qe.y/at},ye={x:-Ue.y,y:Ue.x};_.nodesOverlap=!Ot(at)||Y.checkPoint(we[0],we[1],0,j,U,F.x,F.y,J,te)||Q.checkPoint($e[0],$e[1],0,V,H,G.x,G.y,ae,re),_.vectorNormInverse=ye,R={nodesOverlap:_.nodesOverlap,dirCounts:_.dirCounts,calculatedIntersection:!0,hasBezier:_.hasBezier,hasUnbundled:_.hasUnbundled,eles:_.eles,srcPos:F,srcRs:te,tgtPos:G,tgtRs:re,srcW:j,srcH:U,tgtW:V,tgtH:H,srcIntn:de,tgtIntn:Me,srcShape:Y,tgtShape:Q,posPts:{x1:ke.x2,y1:ke.y2,x2:ke.x1,y2:ke.y1},intersectionPts:{x1:rt.x2,y1:rt.y2,x2:rt.x1,y2:rt.y1},vector:{x:-qe.x,y:-qe.y},vectorNorm:{x:-Ue.x,y:-Ue.y},vectorNormInverse:{x:-ye.x,y:-ye.y}}}var ve=Ee?R:_;ue.nodesOverlap=ve.nodesOverlap,ue.srcIntn=ve.srcIntn,ue.tgtIntn=ve.tgtIntn,ue.isRound=De.startsWith("round"),n&&(B.isParent()||B.isChild()||O.isParent()||O.isChild())&&(B.parents().anySame(O)||O.parents().anySame(B)||B.same(O)&&B.isParent())?t.findCompoundLoopPoints(Te,ve,ee,Ie):B===O?t.findLoopPoints(Te,ve,ee,Ie):De.endsWith("segments")?t.findSegmentsPoints(Te,ve):De.endsWith("taxi")?t.findTaxiPoints(Te,ve):De==="straight"||!Ie&&_.eles.length%2===1&&ee===Math.floor(_.eles.length/2)?t.findStraightEdgePoints(Te):t.findBezierPoints(Te,ve,ee,Ie,Ee),t.findEndpoints(Te),t.tryToCorrectInvalidPoints(Te,ve),t.checkForInvalidEdgeWarning(Te),t.storeAllpts(Te),t.storeEdgeProjections(Te),t.calculateArrowAngles(Te),t.recalculateEdgeLabelProjections(Te),t.calculateLabelAngles(Te)}},"_loop"),E=0;E<l.length;E++)k();this.findHaystackPoints(u)}};o(lge,"getPts");Ba.getSegmentPoints=function(e){var t=e[0]._private.rscratch;this.recalculateRenderedStyle(e);var r=t.edgeType;if(r==="segments")return lge(t.segpts)};Ba.getControlPoints=function(e){var t=e[0]._private.rscratch;this.recalculateRenderedStyle(e);var r=t.edgeType;if(r==="bezier"||r==="multibezier"||r==="self"||r==="compound")return lge(t.ctrlpts)};Ba.getEdgeMidpoint=function(e){var t=e[0]._private.rscratch;return this.recalculateRenderedStyle(e),{x:t.midX,y:t.midY}};h2={};h2.manualEndptToPx=function(e,t){var r=this,i=e.position(),n=e.outerWidth(),a=e.outerHeight(),s=e._private.rscratch;if(t.value.length===2){var l=[t.pfValue[0],t.pfValue[1]];return t.units[0]==="%"&&(l[0]=l[0]*n),t.units[1]==="%"&&(l[1]=l[1]*a),l[0]+=i.x,l[1]+=i.y,l}else{var u=t.pfValue[0];u=-Math.PI/2+u;var h=2*Math.max(n,a),d=[i.x+Math.cos(u)*h,i.y+Math.sin(u)*h];return r.nodeShapes[this.getNodeShape(e)].intersectLine(i.x,i.y,n,a,d[0],d[1],0,e.pstyle("corner-radius").value==="auto"?"auto":e.pstyle("corner-radius").pfValue,s)}};h2.findEndpoints=function(e){var t,r,i,n,a=this,s,l=e.source()[0],u=e.target()[0],h=l.position(),d=u.position(),f=e.pstyle("target-arrow-shape").value,p=e.pstyle("source-arrow-shape").value,m=e.pstyle("target-distance-from-node").pfValue,g=e.pstyle("source-distance-from-node").pfValue,y=l._private.rscratch,v=u._private.rscratch,x=e.pstyle("curve-style").value,b=e._private.rscratch,T=b.edgeType,w=$d(x,"taxi"),C=T==="self"||T==="compound",k=T==="bezier"||T==="multibezier"||C,E=T!=="bezier",A=T==="straight"||T==="segments",N=T==="segments",P=k||E||A,I=C||w,D=e.pstyle("source-endpoint"),_=I?"outside-to-node":D.value,R=l.pstyle("corner-radius").value==="auto"?"auto":l.pstyle("corner-radius").pfValue,M=e.pstyle("target-endpoint"),L=I?"outside-to-node":M.value,B=u.pstyle("corner-radius").value==="auto"?"auto":u.pstyle("corner-radius").pfValue;b.srcManEndpt=D,b.tgtManEndpt=M;var O,$,G,F,V=(t=(M==null||(r=M.pfValue)===null||r===void 0?void 0:r.length)===2?M.pfValue:null)!==null&&t!==void 0?t:[0,0],H=(i=(D==null||(n=D.pfValue)===null||n===void 0?void 0:n.length)===2?D.pfValue:null)!==null&&i!==void 0?i:[0,0];if(k){var j=[b.ctrlpts[0],b.ctrlpts[1]],U=E?[b.ctrlpts[b.ctrlpts.length-2],b.ctrlpts[b.ctrlpts.length-1]]:j;O=U,$=j}else if(A){var Q=N?b.segpts.slice(0,2):[d.x+V[0],d.y+V[1]],Y=N?b.segpts.slice(b.segpts.length-2):[h.x+H[0],h.y+H[1]];O=Y,$=Q}if(L==="inside-to-node")s=[d.x,d.y];else if(M.units)s=this.manualEndptToPx(u,M);else if(L==="outside-to-line")s=b.tgtIntn;else if(L==="outside-to-node"||L==="outside-to-node-or-label"?G=O:(L==="outside-to-line"||L==="outside-to-line-or-label")&&(G=[h.x,h.y]),s=a.nodeShapes[this.getNodeShape(u)].intersectLine(d.x,d.y,u.outerWidth(),u.outerHeight(),G[0],G[1],0,B,v),L==="outside-to-node-or-label"||L==="outside-to-line-or-label"){var ae=u._private.rscratch,J=ae.labelWidth,te=ae.labelHeight,re=ae.labelX,ee=ae.labelY,Te=J/2,ue=te/2,De=u.pstyle("text-valign").value;De==="top"?ee-=ue:De==="bottom"&&(ee+=ue);var Ie=u.pstyle("text-halign").value;Ie==="left"?re-=Te:Ie==="right"&&(re+=Te);var Ee=Kb(G[0],G[1],[re-Te,ee-ue,re+Te,ee-ue,re+Te,ee+ue,re-Te,ee+ue],d.x,d.y);if(Ee.length>0){var we=h,Me=jp(we,o1(s)),$e=jp(we,o1(Ee)),de=Me;if($e<Me&&(s=Ee,de=$e),Ee.length>2){var rt=jp(we,{x:Ee[2],y:Ee[3]});rt<de&&(s=[Ee[2],Ee[3]])}}}var ke=d3(s,O,a.arrowShapes[f].spacing(e)+m),Fe=d3(s,O,a.arrowShapes[f].gap(e)+m);if(b.endX=Fe[0],b.endY=Fe[1],b.arrowEndX=ke[0],b.arrowEndY=ke[1],_==="inside-to-node")s=[h.x,h.y];else if(D.units)s=this.manualEndptToPx(l,D);else if(_==="outside-to-line")s=b.srcIntn;else if(_==="outside-to-node"||_==="outside-to-node-or-label"?F=$:(_==="outside-to-line"||_==="outside-to-line-or-label")&&(F=[d.x,d.y]),s=a.nodeShapes[this.getNodeShape(l)].intersectLine(h.x,h.y,l.outerWidth(),l.outerHeight(),F[0],F[1],0,R,y),_==="outside-to-node-or-label"||_==="outside-to-line-or-label"){var He=l._private.rscratch,at=He.labelWidth,qe=He.labelHeight,Ue=He.labelX,ye=He.labelY,ve=at/2,ie=qe/2,fe=l.pstyle("text-valign").value;fe==="top"?ye-=ie:fe==="bottom"&&(ye+=ie);var W=l.pstyle("text-halign").value;W==="left"?Ue-=ve:W==="right"&&(Ue+=ve);var ce=Kb(F[0],F[1],[Ue-ve,ye-ie,Ue+ve,ye-ie,Ue+ve,ye+ie,Ue-ve,ye+ie],h.x,h.y);if(ce.length>0){var K=d,Re=jp(K,o1(s)),xe=jp(K,o1(ce)),Oe=Re;if(xe<Re&&(s=[ce[0],ce[1]],Oe=xe),ce.length>2){var be=jp(K,{x:ce[2],y:ce[3]});be<Oe&&(s=[ce[2],ce[3]])}}}var Be=d3(s,$,a.arrowShapes[p].spacing(e)+g),Ae=d3(s,$,a.arrowShapes[p].gap(e)+g);b.startX=Ae[0],b.startY=Ae[1],b.arrowStartX=Be[0],b.arrowStartY=Be[1],P&&(!Ot(b.startX)||!Ot(b.startY)||!Ot(b.endX)||!Ot(b.endY)?b.badLine=!0:b.badLine=!1)};h2.getSourceEndpoint=function(e){var t=e[0]._private.rscratch;switch(this.recalculateRenderedStyle(e),t.edgeType){case"haystack":return{x:t.haystackPts[0],y:t.haystackPts[1]};default:return{x:t.arrowStartX,y:t.arrowStartY}}};h2.getTargetEndpoint=function(e){var t=e[0]._private.rscratch;switch(this.recalculateRenderedStyle(e),t.edgeType){case"haystack":return{x:t.haystackPts[2],y:t.haystackPts[3]};default:return{x:t.arrowEndX,y:t.arrowEndY}}};MP={};o(dst,"pushBezierPts");MP.storeEdgeProjections=function(e){var t=e._private,r=t.rscratch,i=r.edgeType;if(t.rstyle.bezierPts=null,t.rstyle.linePts=null,t.rstyle.haystackPts=null,i==="multibezier"||i==="bezier"||i==="self"||i==="compound"){t.rstyle.bezierPts=[];for(var n=0;n+5<r.allpts.length;n+=4)dst(this,e,r.allpts.slice(n,n+6))}else if(i==="segments")for(var a=t.rstyle.linePts=[],n=0;n+1<r.allpts.length;n+=2)a.push({x:r.allpts[n],y:r.allpts[n+1]});else if(i==="haystack"){var s=r.haystackPts;t.rstyle.haystackPts=[{x:s[0],y:s[1]},{x:s[2],y:s[3]}]}t.rstyle.arrowWidth=this.getArrowWidth(e.pstyle("width").pfValue,e.pstyle("arrow-scale").value)*this.arrowShapeWidth};MP.recalculateEdgeProjections=function(e){this.findEdgeControlPoints(e)};$c={};$c.recalculateNodeLabelProjection=function(e){var t=e.pstyle("label").strValue;if(!qd(t)){var r,i,n=e._private,a=e.width(),s=e.height(),l=e.padding(),u=e.position(),h=e.pstyle("text-halign").strValue,d=e.pstyle("text-valign").strValue,f=n.rscratch,p=n.rstyle;switch(h){case"left":r=u.x-a/2-l;break;case"right":r=u.x+a/2+l;break;default:r=u.x}switch(d){case"top":i=u.y-s/2-l;break;case"bottom":i=u.y+s/2+l;break;default:i=u.y}f.labelX=r,f.labelY=i,p.labelX=r,p.labelY=i,this.calculateLabelAngles(e),this.applyLabelDimensions(e)}};cge=o(function(t,r){var i=Math.atan(r/t);return t===0&&i<0&&(i=i*-1),i},"lineAngleFromDelta"),uge=o(function(t,r){var i=r.x-t.x,n=r.y-t.y;return cge(i,n)},"lineAngle"),fst=o(function(t,r,i,n){var a=Xb(0,n-.001,1),s=Xb(0,n+.001,1),l=u1(t,r,i,a),u=u1(t,r,i,s);return uge(l,u)},"bezierAngle");$c.recalculateEdgeLabelProjections=function(e){var t,r=e._private,i=r.rscratch,n=this,a={mid:e.pstyle("label").strValue,source:e.pstyle("source-label").strValue,target:e.pstyle("target-label").strValue};if(a.mid||a.source||a.target){t={x:i.midX,y:i.midY};var s=o(function(f,p,m){Xu(r.rscratch,f,p,m),Xu(r.rstyle,f,p,m)},"setRs");s("labelX",null,t.x),s("labelY",null,t.y);var l=cge(i.midDispX,i.midDispY);s("labelAutoAngle",null,l);var u=o(function(){if(u.cache)return u.cache;for(var f=[],p=0;p+5<i.allpts.length;p+=4){var m={x:i.allpts[p],y:i.allpts[p+1]},g={x:i.allpts[p+2],y:i.allpts[p+3]},y={x:i.allpts[p+4],y:i.allpts[p+5]};f.push({p0:m,p1:g,p2:y,startDist:0,length:0,segments:[]})}var v=r.rstyle.bezierPts,x=n.bezierProjPcts.length;function b(E,A,N,P,I){var D=e0(A,N),_=E.segments[E.segments.length-1],R={p0:A,p1:N,t0:P,t1:I,startDist:_?_.startDist+_.length:0,length:D};E.segments.push(R),E.length+=D}o(b,"addSegment");for(var T=0;T<f.length;T++){var w=f[T],C=f[T-1];C&&(w.startDist=C.startDist+C.length),b(w,w.p0,v[T*x],0,n.bezierProjPcts[0]);for(var k=0;k<x-1;k++)b(w,v[T*x+k],v[T*x+k+1],n.bezierProjPcts[k],n.bezierProjPcts[k+1]);b(w,v[T*x+x-1],w.p2,n.bezierProjPcts[x-1],1)}return u.cache=f},"createControlPointInfo"),h=o(function(f){var p,m=f==="source";if(a[f]){var g=e.pstyle(f+"-text-offset").pfValue;switch(i.edgeType){case"self":case"compound":case"bezier":case"multibezier":{for(var y=u(),v,x=0,b=0,T=0;T<y.length;T++){for(var w=y[m?T:y.length-1-T],C=0;C<w.segments.length;C++){var k=w.segments[m?C:w.segments.length-1-C],E=T===y.length-1&&C===w.segments.length-1;if(x=b,b+=k.length,b>=g||E){v={cp:w,segment:k};break}}if(v)break}var A=v.cp,N=v.segment,P=(g-x)/N.length,I=N.t1-N.t0,D=m?N.t0+I*P:N.t1-I*P;D=Xb(0,D,1),t=u1(A.p0,A.p1,A.p2,D),p=fst(A.p0,A.p1,A.p2,D);break}case"straight":case"segments":case"haystack":{for(var _=0,R,M,L,B,O=i.allpts.length,$=0;$+3<O&&(m?(L={x:i.allpts[$],y:i.allpts[$+1]},B={x:i.allpts[$+2],y:i.allpts[$+3]}):(L={x:i.allpts[O-2-$],y:i.allpts[O-1-$]},B={x:i.allpts[O-4-$],y:i.allpts[O-3-$]}),R=e0(L,B),M=_,_+=R,!(_>=g));$+=2);var G=g-M,F=G/R;F=Xb(0,F,1),t=Ort(L,B,F),p=uge(L,B);break}}s("labelX",f,t.x),s("labelY",f,t.y),s("labelAutoAngle",f,p)}},"calculateEndProjection");h("source"),h("target"),this.applyLabelDimensions(e)}};$c.applyLabelDimensions=function(e){this.applyPrefixedLabelDimensions(e),e.isEdge()&&(this.applyPrefixedLabelDimensions(e,"source"),this.applyPrefixedLabelDimensions(e,"target"))};$c.applyPrefixedLabelDimensions=function(e,t){var r=e._private,i=this.getLabelText(e,t),n=Jp(i,e._private.labelDimsKey);if(Ps(r.rscratch,"prefixedLabelDimsKey",t)!==n){Xu(r.rscratch,"prefixedLabelDimsKey",t,n);var a=this.calculateLabelDimensions(e,i),s=e.pstyle("line-height").pfValue,l=e.pstyle("text-wrap").strValue,u=Ps(r.rscratch,"labelWrapCachedLines",t)||[],h=l!=="wrap"?1:Math.max(u.length,1),d=a.height/h,f=d*s,p=a.width,m=a.height+(h-1)*(s-1)*d;Xu(r.rstyle,"labelWidth",t,p),Xu(r.rscratch,"labelWidth",t,p),Xu(r.rstyle,"labelHeight",t,m),Xu(r.rscratch,"labelHeight",t,m),Xu(r.rscratch,"labelLineHeight",t,f)}};$c.getLabelText=function(e,t){var r=e._private,i=t?t+"-":"",n=e.pstyle(i+"label").strValue,a=e.pstyle("text-transform").value,s=o(function(H,j){return j?(Xu(r.rscratch,H,t,j),j):Ps(r.rscratch,H,t)},"rscratch");if(!n)return"";a=="none"||(a=="uppercase"?n=n.toUpperCase():a=="lowercase"&&(n=n.toLowerCase()));var l=e.pstyle("text-wrap").value;if(l==="wrap"){var u=s("labelKey");if(u!=null&&s("labelWrapKey")===u)return s("labelWrapCachedText");for(var h="\u200B",d=n.split(`
-`),f=e.pstyle("text-max-width").pfValue,p=e.pstyle("text-overflow-wrap").value,m=p==="anywhere",g=[],y=/[\s\u200b]+|$/g,v=0;v<d.length;v++){var x=d[v],b=this.calculateLabelDimensions(e,x),T=b.width;if(m){var w=x.split("").join(h);x=w}if(T>f){var C=x.matchAll(y),k="",E=0,A=Fs(C),N;try{for(A.s();!(N=A.n()).done;){var P=N.value,I=P[0],D=x.substring(E,P.index);E=P.index+I.length;var _=k.length===0?D:k+D+I,R=this.calculateLabelDimensions(e,_),M=R.width;M<=f?k+=D+I:(k&&g.push(k),k=D+I)}}catch(V){A.e(V)}finally{A.f()}k.match(/^[\s\u200b]+$/)||g.push(k)}else g.push(x)}s("labelWrapCachedLines",g),n=s("labelWrapCachedText",g.join(`
-`)),s("labelWrapKey",u)}else if(l==="ellipsis"){var L=e.pstyle("text-max-width").pfValue,B="",O="\u2026",$=!1;if(this.calculateLabelDimensions(e,n).width<L)return n;for(var G=0;G<n.length;G++){var F=this.calculateLabelDimensions(e,B+n[G]+O).width;if(F>L)break;B+=n[G],G===n.length-1&&($=!0)}return $||(B+=O),B}return n};$c.getLabelJustification=function(e){var t=e.pstyle("text-justification").strValue,r=e.pstyle("text-halign").strValue;if(t==="auto")if(e.isNode())switch(r){case"left":return"right";case"right":return"left";default:return"center"}else return"center";else return t};$c.calculateLabelDimensions=function(e,t){var r=this,i=r.cy.window(),n=i.document,a=0,s=e.pstyle("font-style").strValue,l=e.pstyle("font-size").pfValue,u=e.pstyle("font-family").strValue,h=e.pstyle("font-weight").strValue,d=this.labelCalcCanvas,f=this.labelCalcCanvasContext;if(!d){d=this.labelCalcCanvas=n.createElement("canvas"),f=this.labelCalcCanvasContext=d.getContext("2d");var p=d.style;p.position="absolute",p.left="-9999px",p.top="-9999px",p.zIndex="-1",p.visibility="hidden",p.pointerEvents="none"}f.font="".concat(s," ").concat(h," ").concat(l,"px ").concat(u);for(var m=0,g=0,y=t.split(`
-`),v=0;v<y.length;v++){var x=y[v],b=f.measureText(x),T=Math.ceil(b.width),w=l;m=Math.max(T,m),g+=w}return m+=a,g+=a,{width:m,height:g}};$c.calculateLabelAngle=function(e,t){var r=e._private,i=r.rscratch,n=e.isEdge(),a=t?t+"-":"",s=e.pstyle(a+"text-rotation"),l=s.strValue;return l==="none"?0:n&&l==="autorotate"?i.labelAutoAngle:l==="autorotate"?0:s.pfValue};$c.calculateLabelAngles=function(e){var t=this,r=e.isEdge(),i=e._private,n=i.rscratch;n.labelAngle=t.calculateLabelAngle(e),r&&(n.sourceLabelAngle=t.calculateLabelAngle(e,"source"),n.targetLabelAngle=t.calculateLabelAngle(e,"target"))};hge={},S0e=28,E0e=!1;hge.getNodeShape=function(e){var t=this,r=e.pstyle("shape").value;if(r==="cutrectangle"&&(e.width()<S0e||e.height()<S0e))return E0e||(di("The `cutrectangle` node shape can not be used at small sizes so `rectangle` is used instead"),E0e=!0),"rectangle";if(e.isParent())return r==="rectangle"||r==="roundrectangle"||r==="round-rectangle"||r==="cutrectangle"||r==="cut-rectangle"||r==="barrel"?r:"rectangle";if(r==="polygon"){var i=e.pstyle("shape-polygon-points").value;return t.nodeShapes.makePolygon(i).name}return r};cE={};cE.registerCalculationListeners=function(){var e=this.cy,t=e.collection(),r=this,i=o(function(s){var l=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!0;if(t.merge(s),l)for(var u=0;u<s.length;u++){var h=s[u],d=h._private,f=d.rstyle;f.clean=!1,f.cleanConnected=!1}},"enqueue");r.binder(e).on("bounds.* dirty.*",o(function(s){var l=s.target;i(l)},"onDirtyBounds")).on("style.* background.*",o(function(s){var l=s.target;i(l,!1)},"onDirtyStyle"));var n=o(function(s){if(s){var l=r.onUpdateEleCalcsFns;t.cleanStyle();for(var u=0;u<t.length;u++){var h=t[u],d=h._private.rstyle;h.isNode()&&!d.cleanConnected&&(i(h.connectedEdges()),d.cleanConnected=!0)}if(l)for(var f=0;f<l.length;f++){var p=l[f];p(s,t)}r.recalculateRenderedStyle(t),t=e.collection()}},"updateEleCalcs");r.flushRenderedStyleQueue=function(){n(!0)},r.beforeRender(n,r.beforeRenderPriorities.eleCalcs)};cE.onUpdateEleCalcs=function(e){var t=this.onUpdateEleCalcsFns=this.onUpdateEleCalcsFns||[];t.push(e)};cE.recalculateRenderedStyle=function(e,t){var r=o(function(w){return w._private.rstyle.cleanConnected},"isCleanConnected");if(e.length!==0){var i=[],n=[];if(!this.destroyed){t===void 0&&(t=!0);for(var a=0;a<e.length;a++){var s=e[a],l=s._private,u=l.rstyle;s.isEdge()&&(!r(s.source())||!r(s.target()))&&(u.clean=!1),s.isEdge()&&s.isBundledBezier()&&s.parallelEdges().some(function(T){return!T._private.rstyle.clean&&T.isBundledBezier()})&&(u.clean=!1),!(t&&u.clean||s.removed())&&s.pstyle("display").value!=="none"&&(l.group==="nodes"?n.push(s):i.push(s),u.clean=!0)}for(var h=0;h<n.length;h++){var d=n[h],f=d._private,p=f.rstyle,m=d.position();this.recalculateNodeLabelProjection(d),p.nodeX=m.x,p.nodeY=m.y,p.nodeW=d.pstyle("width").pfValue,p.nodeH=d.pstyle("height").pfValue}this.recalculateEdgeProjections(i);for(var g=0;g<i.length;g++){var y=i[g],v=y._private,x=v.rstyle,b=v.rscratch;x.srcX=b.arrowStartX,x.srcY=b.arrowStartY,x.tgtX=b.arrowEndX,x.tgtY=b.arrowEndY,x.midX=b.midX,x.midY=b.midY,x.labelAngle=b.labelAngle,x.sourceLabelAngle=b.sourceLabelAngle,x.targetLabelAngle=b.targetLabelAngle}}}};uE={};uE.updateCachedGrabbedEles=function(){var e=this.cachedZSortedEles;if(e){e.drag=[],e.nondrag=[];for(var t=[],r=0;r<e.length;r++){var i=e[r],n=i._private.rscratch;i.grabbed()&&!i.isParent()?t.push(i):n.inDragLayer?e.drag.push(i):e.nondrag.push(i)}for(var r=0;r<t.length;r++){var i=t[r];e.drag.push(i)}}};uE.invalidateCachedZSortedEles=function(){this.cachedZSortedEles=null};uE.getCachedZSortedEles=function(e){if(e||!this.cachedZSortedEles){var t=this.cy.mutableElements().toArray();t.sort(Hme),t.interactive=t.filter(function(r){return r.interactive()}),this.cachedZSortedEles=t,this.updateCachedGrabbedEles()}else t=this.cachedZSortedEles;return t};dge={};[n0,W3,Ba,h2,MP,$c,hge,cE,uE].forEach(function(e){hr(dge,e)});fge={};fge.getCachedImage=function(e,t,r){var i=this,n=i.imageCache=i.imageCache||{},a=n[e];if(a)return a.image.complete||a.image.addEventListener("load",r),a.image;a=n[e]=n[e]||{};var s=a.image=new Image;s.addEventListener("load",r),s.addEventListener("error",function(){s.error=!0});var l="data:",u=e.substring(0,l.length).toLowerCase()===l;return u||(t=t==="null"?null:t,s.crossOrigin=t),s.src=e,s};T1={};T1.registerBinding=function(e,t,r,i){var n=Array.prototype.slice.apply(arguments,[1]);if(Array.isArray(e)){for(var a=[],s=0;s<e.length;s++){var l=e[s];if(l!==void 0){var u=this.binder(l);a.push(u.on.apply(u,n))}}return a}var u=this.binder(e);return u.on.apply(u,n)};T1.binder=function(e){var t=this,r=t.cy.window(),i=e===r||e===r.document||e===r.document.body||Stt(e);if(t.supportsPassiveEvents==null){var n=!1;try{var a=Object.defineProperty({},"passive",{get:o(function(){return n=!0,!0},"get")});r.addEventListener("test",null,a)}catch{}t.supportsPassiveEvents=n}var s=o(function(u,h,d){var f=Array.prototype.slice.call(arguments);return i&&t.supportsPassiveEvents&&(f[2]={capture:d??!1,passive:!1,once:!1}),t.bindings.push({target:e,args:f}),(e.addEventListener||e.on).apply(e,f),this},"on");return{on:s,addEventListener:s,addListener:s,bind:s}};T1.nodeIsDraggable=function(e){return e&&e.isNode()&&!e.locked()&&e.grabbable()};T1.nodeIsGrabbable=function(e){return this.nodeIsDraggable(e)&&e.interactive()};T1.load=function(){var e=this,t=e.cy.window(),r=o(function(W){return W.selected()},"isSelected"),i=o(function(W){var ce=W.getRootNode();if(ce&&ce.nodeType===11&&ce.host!==void 0)return ce},"getShadowRoot"),n=o(function(W,ce,K,Re){W==null&&(W=e.cy);for(var xe=0;xe<ce.length;xe++){var Oe=ce[xe];W.emit({originalEvent:K,type:Oe,position:Re})}},"triggerEvents"),a=o(function(W){return W.shiftKey||W.metaKey||W.ctrlKey},"isMultSelKeyDown"),s=o(function(W,ce){var K=!0;if(e.cy.hasCompoundNodes()&&W&&W.pannable())for(var Re=0;ce&&Re<ce.length;Re++){var W=ce[Re];if(W.isNode()&&W.isParent()&&!W.pannable()){K=!1;break}}else K=!0;return K},"allowPanningPassthrough"),l=o(function(W){W[0]._private.grabbed=!0},"setGrabbed"),u=o(function(W){W[0]._private.grabbed=!1},"setFreed"),h=o(function(W){W[0]._private.rscratch.inDragLayer=!0},"setInDragLayer"),d=o(function(W){W[0]._private.rscratch.inDragLayer=!1},"setOutDragLayer"),f=o(function(W){W[0]._private.rscratch.isGrabTarget=!0},"setGrabTarget"),p=o(function(W){W[0]._private.rscratch.isGrabTarget=!1},"removeGrabTarget"),m=o(function(W,ce){var K=ce.addToList,Re=K.has(W);!Re&&W.grabbable()&&!W.locked()&&(K.merge(W),l(W))},"addToDragList"),g=o(function(W,ce){if(W.cy().hasCompoundNodes()&&!(ce.inDragLayer==null&&ce.addToList==null)){var K=W.descendants();ce.inDragLayer&&(K.forEach(h),K.connectedEdges().forEach(h)),ce.addToList&&m(K,ce)}},"addDescendantsToDrag"),y=o(function(W,ce){ce=ce||{};var K=W.cy().hasCompoundNodes();ce.inDragLayer&&(W.forEach(h),W.neighborhood().stdFilter(function(Re){return!K||Re.isEdge()}).forEach(h)),ce.addToList&&W.forEach(function(Re){m(Re,ce)}),g(W,ce),b(W,{inDragLayer:ce.inDragLayer}),e.updateCachedGrabbedEles()},"addNodesToDrag"),v=y,x=o(function(W){W&&(e.getCachedZSortedEles().forEach(function(ce){u(ce),d(ce),p(ce)}),e.updateCachedGrabbedEles())},"freeDraggedElements"),b=o(function(W,ce){if(!(ce.inDragLayer==null&&ce.addToList==null)&&W.cy().hasCompoundNodes()){var K=W.ancestors().orphans();if(!K.same(W)){var Re=K.descendants().spawnSelf().merge(K).unmerge(W).unmerge(W.descendants()),xe=Re.connectedEdges();ce.inDragLayer&&(xe.forEach(h),Re.forEach(h)),ce.addToList&&Re.forEach(function(Oe){m(Oe,ce)})}}},"updateAncestorsInDragLayer"),T=o(function(){document.activeElement!=null&&document.activeElement.blur!=null&&document.activeElement.blur()},"blurActiveDomElement"),w=typeof MutationObserver<"u",C=typeof ResizeObserver<"u";w?(e.removeObserver=new MutationObserver(function(fe){for(var W=0;W<fe.length;W++){var ce=fe[W],K=ce.removedNodes;if(K)for(var Re=0;Re<K.length;Re++){var xe=K[Re];if(xe===e.container){e.destroy();break}}}}),e.container.parentNode&&e.removeObserver.observe(e.container.parentNode,{childList:!0})):e.registerBinding(e.container,"DOMNodeRemoved",function(fe){e.destroy()});var k=o2(function(){e.cy.resize()},100);w&&(e.styleObserver=new MutationObserver(k),e.styleObserver.observe(e.container,{attributes:!0})),e.registerBinding(t,"resize",k),C&&(e.resizeObserver=new ResizeObserver(k),e.resizeObserver.observe(e.container));var E=o(function(W,ce){for(;W!=null;)ce(W),W=W.parentNode},"forEachUp"),A=o(function(){e.invalidateContainerClientCoordsCache()},"invalidateCoords");E(e.container,function(fe){e.registerBinding(fe,"transitionend",A),e.registerBinding(fe,"animationend",A),e.registerBinding(fe,"scroll",A)}),e.registerBinding(e.container,"contextmenu",function(fe){fe.preventDefault()});var N=o(function(){return e.selection[4]!==0},"inBoxSelection"),P=o(function(W){for(var ce=e.findContainerClientCoords(),K=ce[0],Re=ce[1],xe=ce[2],Oe=ce[3],be=W.touches?W.touches:[W],Be=!1,Ae=0;Ae<be.length;Ae++){var Ve=be[Ae];if(K<=Ve.clientX&&Ve.clientX<=K+xe&&Re<=Ve.clientY&&Ve.clientY<=Re+Oe){Be=!0;break}}if(!Be)return!1;for(var Pe=e.container,Ye=W.target,le=Ye.parentNode,st=!1;le;){if(le===Pe){st=!0;break}le=le.parentNode}return!!st},"eventInContainer");e.registerBinding(e.container,"mousedown",o(function(W){if(P(W)&&!(e.hoverData.which===1&&W.which!==1)){W.preventDefault(),T(),e.hoverData.capture=!0,e.hoverData.which=W.which;var ce=e.cy,K=[W.clientX,W.clientY],Re=e.projectIntoViewport(K[0],K[1]),xe=e.selection,Oe=e.findNearestElements(Re[0],Re[1],!0,!1),be=Oe[0],Be=e.dragData.possibleDragElements;e.hoverData.mdownPos=Re,e.hoverData.mdownGPos=K;var Ae=o(function(me){return{originalEvent:W,type:me,position:{x:Re[0],y:Re[1]}}},"makeEvent"),Ve=o(function(){e.hoverData.tapholdCancelled=!1,clearTimeout(e.hoverData.tapholdTimeout),e.hoverData.tapholdTimeout=setTimeout(function(){if(!e.hoverData.tapholdCancelled){var me=e.hoverData.down;me?me.emit(Ae("taphold")):ce.emit(Ae("taphold"))}},e.tapholdDuration)},"checkForTaphold");if(W.which==3){e.hoverData.cxtStarted=!0;var Pe={originalEvent:W,type:"cxttapstart",position:{x:Re[0],y:Re[1]}};be?(be.activate(),be.emit(Pe),e.hoverData.down=be):ce.emit(Pe),e.hoverData.downTime=new Date().getTime(),e.hoverData.cxtDragged=!1}else if(W.which==1){be&&be.activate();{if(be!=null&&e.nodeIsGrabbable(be)){var Ye=o(function(me){me.emit(Ae("grab"))},"triggerGrab");if(f(be),!be.selected())Be=e.dragData.possibleDragElements=ce.collection(),v(be,{addToList:Be}),be.emit(Ae("grabon")).emit(Ae("grab"));else{Be=e.dragData.possibleDragElements=ce.collection();var le=ce.$(function(st){return st.isNode()&&st.selected()&&e.nodeIsGrabbable(st)});y(le,{addToList:Be}),be.emit(Ae("grabon")),le.forEach(Ye)}e.redrawHint("eles",!0),e.redrawHint("drag",!0)}e.hoverData.down=be,e.hoverData.downs=Oe,e.hoverData.downTime=new Date().getTime()}n(be,["mousedown","tapstart","vmousedown"],W,{x:Re[0],y:Re[1]}),be==null?(xe[4]=1,e.data.bgActivePosistion={x:Re[0],y:Re[1]},e.redrawHint("select",!0),e.redraw()):be.pannable()&&(xe[4]=1),Ve()}xe[0]=xe[2]=Re[0],xe[1]=xe[3]=Re[1]}},"mousedownHandler"),!1);var I=i(e.container);e.registerBinding([t,I],"mousemove",o(function(W){var ce=e.hoverData.capture;if(!(!ce&&!P(W))){var K=!1,Re=e.cy,xe=Re.zoom(),Oe=[W.clientX,W.clientY],be=e.projectIntoViewport(Oe[0],Oe[1]),Be=e.hoverData.mdownPos,Ae=e.hoverData.mdownGPos,Ve=e.selection,Pe=null;!e.hoverData.draggingEles&&!e.hoverData.dragging&&!e.hoverData.selecting&&(Pe=e.findNearestElement(be[0],be[1],!0,!1));var Ye=e.hoverData.last,le=e.hoverData.down,st=[be[0]-Ve[2],be[1]-Ve[3]],me=e.dragData.possibleDragElements,ot;if(Ae){var kt=Oe[0]-Ae[0],Gt=kt*kt,Tt=Oe[1]-Ae[1],Et=Tt*Tt,yt=Gt+Et;e.hoverData.isOverThresholdDrag=ot=yt>=e.desktopTapThreshold2}var oe=a(W);ot&&(e.hoverData.tapholdCancelled=!0);var ht=o(function(){var pt=e.hoverData.dragDelta=e.hoverData.dragDelta||[];pt.length===0?(pt.push(st[0]),pt.push(st[1])):(pt[0]+=st[0],pt[1]+=st[1])},"updateDragDelta");K=!0,n(Pe,["mousemove","vmousemove","tapdrag"],W,{x:be[0],y:be[1]});var gt=o(function(pt){return{originalEvent:W,type:pt,position:{x:be[0],y:be[1]}}},"makeEvent"),et=o(function(){e.data.bgActivePosistion=void 0,e.hoverData.selecting||Re.emit(gt("boxstart")),Ve[4]=1,e.hoverData.selecting=!0,e.redrawHint("select",!0),e.redraw()},"goIntoBoxMode");if(e.hoverData.which===3){if(ot){var pe=gt("cxtdrag");le?le.emit(pe):Re.emit(pe),e.hoverData.cxtDragged=!0,(!e.hoverData.cxtOver||Pe!==e.hoverData.cxtOver)&&(e.hoverData.cxtOver&&e.hoverData.cxtOver.emit(gt("cxtdragout")),e.hoverData.cxtOver=Pe,Pe&&Pe.emit(gt("cxtdragover")))}}else if(e.hoverData.dragging){if(K=!0,Re.panningEnabled()&&Re.userPanningEnabled()){var Qe;if(e.hoverData.justStartedPan){var nt=e.hoverData.mdownPos;Qe={x:(be[0]-nt[0])*xe,y:(be[1]-nt[1])*xe},e.hoverData.justStartedPan=!1}else Qe={x:st[0]*xe,y:st[1]*xe};Re.panBy(Qe),Re.emit(gt("dragpan")),e.hoverData.dragged=!0}be=e.projectIntoViewport(W.clientX,W.clientY)}else if(Ve[4]==1&&(le==null||le.pannable())){if(ot){if(!e.hoverData.dragging&&Re.boxSelectionEnabled()&&(oe||!Re.panningEnabled()||!Re.userPanningEnabled()))et();else if(!e.hoverData.selecting&&Re.panningEnabled()&&Re.userPanningEnabled()){var dt=s(le,e.hoverData.downs);dt&&(e.hoverData.dragging=!0,e.hoverData.justStartedPan=!0,Ve[4]=0,e.data.bgActivePosistion=o1(Be),e.redrawHint("select",!0),e.redraw())}le&&le.pannable()&&le.active()&&le.unactivate()}}else{if(le&&le.pannable()&&le.active()&&le.unactivate(),(!le||!le.grabbed())&&Pe!=Ye&&(Ye&&n(Ye,["mouseout","tapdragout"],W,{x:be[0],y:be[1]}),Pe&&n(Pe,["mouseover","tapdragover"],W,{x:be[0],y:be[1]}),e.hoverData.last=Pe),le)if(ot){if(Re.boxSelectionEnabled()&&oe)le&&le.grabbed()&&(x(me),le.emit(gt("freeon")),me.emit(gt("free")),e.dragData.didDrag&&(le.emit(gt("dragfreeon")),me.emit(gt("dragfree")))),et();else if(le&&le.grabbed()&&e.nodeIsDraggable(le)){var Ft=!e.dragData.didDrag;Ft&&e.redrawHint("eles",!0),e.dragData.didDrag=!0,e.hoverData.draggingEles||y(me,{inDragLayer:!0});var Rt={x:0,y:0};if(Ot(st[0])&&Ot(st[1])&&(Rt.x+=st[0],Rt.y+=st[1],Ft)){var $t=e.hoverData.dragDelta;$t&&Ot($t[0])&&Ot($t[1])&&(Rt.x+=$t[0],Rt.y+=$t[1])}e.hoverData.draggingEles=!0,me.silentShift(Rt).emit(gt("position")).emit(gt("drag")),e.redrawHint("drag",!0),e.redraw()}}else ht();K=!0}if(Ve[2]=be[0],Ve[3]=be[1],K)return W.stopPropagation&&W.stopPropagation(),W.preventDefault&&W.preventDefault(),!1}},"mousemoveHandler"),!1);var D,_,R;e.registerBinding(t,"mouseup",o(function(W){if(!(e.hoverData.which===1&&W.which!==1&&e.hoverData.capture)){var ce=e.hoverData.capture;if(ce){e.hoverData.capture=!1;var K=e.cy,Re=e.projectIntoViewport(W.clientX,W.clientY),xe=e.selection,Oe=e.findNearestElement(Re[0],Re[1],!0,!1),be=e.dragData.possibleDragElements,Be=e.hoverData.down,Ae=a(W);e.data.bgActivePosistion&&(e.redrawHint("select",!0),e.redraw()),e.hoverData.tapholdCancelled=!0,e.data.bgActivePosistion=void 0,Be&&Be.unactivate();var Ve=o(function(kt){return{originalEvent:W,type:kt,position:{x:Re[0],y:Re[1]}}},"makeEvent");if(e.hoverData.which===3){var Pe=Ve("cxttapend");if(Be?Be.emit(Pe):K.emit(Pe),!e.hoverData.cxtDragged){var Ye=Ve("cxttap");Be?Be.emit(Ye):K.emit(Ye)}e.hoverData.cxtDragged=!1,e.hoverData.which=null}else if(e.hoverData.which===1){if(n(Oe,["mouseup","tapend","vmouseup"],W,{x:Re[0],y:Re[1]}),!e.dragData.didDrag&&!e.hoverData.dragged&&!e.hoverData.selecting&&!e.hoverData.isOverThresholdDrag&&(n(Be,["click","tap","vclick"],W,{x:Re[0],y:Re[1]}),_=!1,W.timeStamp-R<=K.multiClickDebounceTime()?(D&&clearTimeout(D),_=!0,R=null,n(Be,["dblclick","dbltap","vdblclick"],W,{x:Re[0],y:Re[1]})):(D=setTimeout(function(){_||n(Be,["oneclick","onetap","voneclick"],W,{x:Re[0],y:Re[1]})},K.multiClickDebounceTime()),R=W.timeStamp)),Be==null&&!e.dragData.didDrag&&!e.hoverData.selecting&&!e.hoverData.dragged&&!a(W)&&(K.$(r).unselect(["tapunselect"]),be.length>0&&e.redrawHint("eles",!0),e.dragData.possibleDragElements=be=K.collection()),Oe==Be&&!e.dragData.didDrag&&!e.hoverData.selecting&&Oe!=null&&Oe._private.selectable&&(e.hoverData.dragging||(K.selectionType()==="additive"||Ae?Oe.selected()?Oe.unselect(["tapunselect"]):Oe.select(["tapselect"]):Ae||(K.$(r).unmerge(Oe).unselect(["tapunselect"]),Oe.select(["tapselect"]))),e.redrawHint("eles",!0)),e.hoverData.selecting){var le=K.collection(e.getAllInBox(xe[0],xe[1],xe[2],xe[3]));e.redrawHint("select",!0),le.length>0&&e.redrawHint("eles",!0),K.emit(Ve("boxend"));var st=o(function(kt){return kt.selectable()&&!kt.selected()},"eleWouldBeSelected");K.selectionType()==="additive"||Ae||K.$(r).unmerge(le).unselect(),le.emit(Ve("box")).stdFilter(st).select().emit(Ve("boxselect")),e.redraw()}if(e.hoverData.dragging&&(e.hoverData.dragging=!1,e.redrawHint("select",!0),e.redrawHint("eles",!0),e.redraw()),!xe[4]){e.redrawHint("drag",!0),e.redrawHint("eles",!0);var me=Be&&Be.grabbed();x(be),me&&(Be.emit(Ve("freeon")),be.emit(Ve("free")),e.dragData.didDrag&&(Be.emit(Ve("dragfreeon")),be.emit(Ve("dragfree"))))}}xe[4]=0,e.hoverData.down=null,e.hoverData.cxtStarted=!1,e.hoverData.draggingEles=!1,e.hoverData.selecting=!1,e.hoverData.isOverThresholdDrag=!1,e.dragData.didDrag=!1,e.hoverData.dragged=!1,e.hoverData.dragDelta=[],e.hoverData.mdownPos=null,e.hoverData.mdownGPos=null,e.hoverData.which=null}}},"mouseupHandler"),!1);var M=[],L=4,B,O=1e5,$=o(function(W,ce){for(var K=0;K<W.length;K++)if(W[K]%ce!==0)return!1;return!0},"allAreDivisibleBy"),G=o(function(W){for(var ce=Math.abs(W[0]),K=1;K<W.length;K++)if(Math.abs(W[K])!==ce)return!1;return!0},"allAreSameMagnitude"),F=o(function(W){var ce=!1,K=W.deltaY;if(K==null&&(W.wheelDeltaY!=null?K=W.wheelDeltaY/4:W.wheelDelta!=null&&(K=W.wheelDelta/4)),K!==0){if(B==null)if(M.length>=L){var Re=M;if(B=$(Re,5),!B){var xe=Math.abs(Re[0]);B=G(Re)&&xe>5}if(B)for(var Oe=0;Oe<Re.length;Oe++)O=Math.min(Math.abs(Re[Oe]),O)}else M.push(K),ce=!0;else B&&(O=Math.min(Math.abs(K),O));if(!e.scrollingPage){var be=e.cy,Be=be.zoom(),Ae=be.pan(),Ve=e.projectIntoViewport(W.clientX,W.clientY),Pe=[Ve[0]*Be+Ae.x,Ve[1]*Be+Ae.y];if(e.hoverData.draggingEles||e.hoverData.dragging||e.hoverData.cxtStarted||N()){W.preventDefault();return}if(be.panningEnabled()&&be.userPanningEnabled()&&be.zoomingEnabled()&&be.userZoomingEnabled()){W.preventDefault(),e.data.wheelZooming=!0,clearTimeout(e.data.wheelTimeout),e.data.wheelTimeout=setTimeout(function(){e.data.wheelZooming=!1,e.redrawHint("eles",!0),e.redraw()},150);var Ye;ce&&Math.abs(K)>5&&(K=vP(K)*5),Ye=K/-250,B&&(Ye/=O,Ye*=3),Ye=Ye*e.wheelSensitivity;var le=W.deltaMode===1;le&&(Ye*=33);var st=be.zoom()*Math.pow(10,Ye);W.type==="gesturechange"&&(st=e.gestureStartZoom*W.scale),be.zoom({level:st,renderedPosition:{x:Pe[0],y:Pe[1]}}),be.emit({type:W.type==="gesturechange"?"pinchzoom":"scrollzoom",originalEvent:W,position:{x:Ve[0],y:Ve[1]}})}}}},"wheelHandler");e.registerBinding(e.container,"wheel",F,!0),e.registerBinding(t,"scroll",o(function(W){e.scrollingPage=!0,clearTimeout(e.scrollingPageTimeout),e.scrollingPageTimeout=setTimeout(function(){e.scrollingPage=!1},250)},"scrollHandler"),!0),e.registerBinding(e.container,"gesturestart",o(function(W){e.gestureStartZoom=e.cy.zoom(),e.hasTouchStarted||W.preventDefault()},"gestureStartHandler"),!0),e.registerBinding(e.container,"gesturechange",function(fe){e.hasTouchStarted||F(fe)},!0),e.registerBinding(e.container,"mouseout",o(function(W){var ce=e.projectIntoViewport(W.clientX,W.clientY);e.cy.emit({originalEvent:W,type:"mouseout",position:{x:ce[0],y:ce[1]}})},"mouseOutHandler"),!1),e.registerBinding(e.container,"mouseover",o(function(W){var ce=e.projectIntoViewport(W.clientX,W.clientY);e.cy.emit({originalEvent:W,type:"mouseover",position:{x:ce[0],y:ce[1]}})},"mouseOverHandler"),!1);var V,H,j,U,Q,Y,ae,J,te,re,ee,Te,ue,De=o(function(W,ce,K,Re){return Math.sqrt((K-W)*(K-W)+(Re-ce)*(Re-ce))},"distance"),Ie=o(function(W,ce,K,Re){return(K-W)*(K-W)+(Re-ce)*(Re-ce)},"distanceSq"),Ee;e.registerBinding(e.container,"touchstart",Ee=o(function(W){if(e.hasTouchStarted=!0,!!P(W)){T(),e.touchData.capture=!0,e.data.bgActivePosistion=void 0;var ce=e.cy,K=e.touchData.now,Re=e.touchData.earlier;if(W.touches[0]){var xe=e.projectIntoViewport(W.touches[0].clientX,W.touches[0].clientY);K[0]=xe[0],K[1]=xe[1]}if(W.touches[1]){var xe=e.projectIntoViewport(W.touches[1].clientX,W.touches[1].clientY);K[2]=xe[0],K[3]=xe[1]}if(W.touches[2]){var xe=e.projectIntoViewport(W.touches[2].clientX,W.touches[2].clientY);K[4]=xe[0],K[5]=xe[1]}var Oe=o(function(oe){return{originalEvent:W,type:oe,position:{x:K[0],y:K[1]}}},"makeEvent");if(W.touches[1]){e.touchData.singleTouchMoved=!0,x(e.dragData.touchDragEles);var be=e.findContainerClientCoords();te=be[0],re=be[1],ee=be[2],Te=be[3],V=W.touches[0].clientX-te,H=W.touches[0].clientY-re,j=W.touches[1].clientX-te,U=W.touches[1].clientY-re,ue=0<=V&&V<=ee&&0<=j&&j<=ee&&0<=H&&H<=Te&&0<=U&&U<=Te;var Be=ce.pan(),Ae=ce.zoom();Q=De(V,H,j,U),Y=Ie(V,H,j,U),ae=[(V+j)/2,(H+U)/2],J=[(ae[0]-Be.x)/Ae,(ae[1]-Be.y)/Ae];var Ve=200,Pe=Ve*Ve;if(Y<Pe&&!W.touches[2]){var Ye=e.findNearestElement(K[0],K[1],!0,!0),le=e.findNearestElement(K[2],K[3],!0,!0);Ye&&Ye.isNode()?(Ye.activate().emit(Oe("cxttapstart")),e.touchData.start=Ye):le&&le.isNode()?(le.activate().emit(Oe("cxttapstart")),e.touchData.start=le):ce.emit(Oe("cxttapstart")),e.touchData.start&&(e.touchData.start._private.grabbed=!1),e.touchData.cxt=!0,e.touchData.cxtDragged=!1,e.data.bgActivePosistion=void 0,e.redraw();return}}if(W.touches[2])ce.boxSelectionEnabled()&&W.preventDefault();else if(!W.touches[1]){if(W.touches[0]){var st=e.findNearestElements(K[0],K[1],!0,!0),me=st[0];if(me!=null&&(me.activate(),e.touchData.start=me,e.touchData.starts=st,e.nodeIsGrabbable(me))){var ot=e.dragData.touchDragEles=ce.collection(),kt=null;e.redrawHint("eles",!0),e.redrawHint("drag",!0),me.selected()?(kt=ce.$(function(yt){return yt.selected()&&e.nodeIsGrabbable(yt)}),y(kt,{addToList:ot})):v(me,{addToList:ot}),f(me),me.emit(Oe("grabon")),kt?kt.forEach(function(yt){yt.emit(Oe("grab"))}):me.emit(Oe("grab"))}n(me,["touchstart","tapstart","vmousedown"],W,{x:K[0],y:K[1]}),me==null&&(e.data.bgActivePosistion={x:xe[0],y:xe[1]},e.redrawHint("select",!0),e.redraw()),e.touchData.singleTouchMoved=!1,e.touchData.singleTouchStartTime=+new Date,clearTimeout(e.touchData.tapholdTimeout),e.touchData.tapholdTimeout=setTimeout(function(){e.touchData.singleTouchMoved===!1&&!e.pinching&&!e.touchData.selecting&&n(e.touchData.start,["taphold"],W,{x:K[0],y:K[1]})},e.tapholdDuration)}}if(W.touches.length>=1){for(var Gt=e.touchData.startPosition=[null,null,null,null,null,null],Tt=0;Tt<K.length;Tt++)Gt[Tt]=Re[Tt]=K[Tt];var Et=W.touches[0];e.touchData.startGPosition=[Et.clientX,Et.clientY]}}},"touchstartHandler"),!1);var we;e.registerBinding(t,"touchmove",we=o(function(W){var ce=e.touchData.capture;if(!(!ce&&!P(W))){var K=e.selection,Re=e.cy,xe=e.touchData.now,Oe=e.touchData.earlier,be=Re.zoom();if(W.touches[0]){var Be=e.projectIntoViewport(W.touches[0].clientX,W.touches[0].clientY);xe[0]=Be[0],xe[1]=Be[1]}if(W.touches[1]){var Be=e.projectIntoViewport(W.touches[1].clientX,W.touches[1].clientY);xe[2]=Be[0],xe[3]=Be[1]}if(W.touches[2]){var Be=e.projectIntoViewport(W.touches[2].clientX,W.touches[2].clientY);xe[4]=Be[0],xe[5]=Be[1]}var Ae=o(function(xC){return{originalEvent:W,type:xC,position:{x:xe[0],y:xe[1]}}},"makeEvent"),Ve=e.touchData.startGPosition,Pe;if(ce&&W.touches[0]&&Ve){for(var Ye=[],le=0;le<xe.length;le++)Ye[le]=xe[le]-Oe[le];var st=W.touches[0].clientX-Ve[0],me=st*st,ot=W.touches[0].clientY-Ve[1],kt=ot*ot,Gt=me+kt;Pe=Gt>=e.touchTapThreshold2}if(ce&&e.touchData.cxt){W.preventDefault();var Tt=W.touches[0].clientX-te,Et=W.touches[0].clientY-re,yt=W.touches[1].clientX-te,oe=W.touches[1].clientY-re,ht=Ie(Tt,Et,yt,oe),gt=ht/Y,et=150,pe=et*et,Qe=1.5,nt=Qe*Qe;if(gt>=nt||ht>=pe){e.touchData.cxt=!1,e.data.bgActivePosistion=void 0,e.redrawHint("select",!0);var dt=Ae("cxttapend");e.touchData.start?(e.touchData.start.unactivate().emit(dt),e.touchData.start=null):Re.emit(dt)}}if(ce&&e.touchData.cxt){var dt=Ae("cxtdrag");e.data.bgActivePosistion=void 0,e.redrawHint("select",!0),e.touchData.start?e.touchData.start.emit(dt):Re.emit(dt),e.touchData.start&&(e.touchData.start._private.grabbed=!1),e.touchData.cxtDragged=!0;var Ft=e.findNearestElement(xe[0],xe[1],!0,!0);(!e.touchData.cxtOver||Ft!==e.touchData.cxtOver)&&(e.touchData.cxtOver&&e.touchData.cxtOver.emit(Ae("cxtdragout")),e.touchData.cxtOver=Ft,Ft&&Ft.emit(Ae("cxtdragover")))}else if(ce&&W.touches[2]&&Re.boxSelectionEnabled())W.preventDefault(),e.data.bgActivePosistion=void 0,this.lastThreeTouch=+new Date,e.touchData.selecting||Re.emit(Ae("boxstart")),e.touchData.selecting=!0,e.touchData.didSelect=!0,K[4]=1,!K||K.length===0||K[0]===void 0?(K[0]=(xe[0]+xe[2]+xe[4])/3,K[1]=(xe[1]+xe[3]+xe[5])/3,K[2]=(xe[0]+xe[2]+xe[4])/3+1,K[3]=(xe[1]+xe[3]+xe[5])/3+1):(K[2]=(xe[0]+xe[2]+xe[4])/3,K[3]=(xe[1]+xe[3]+xe[5])/3),e.redrawHint("select",!0),e.redraw();else if(ce&&W.touches[1]&&!e.touchData.didSelect&&Re.zoomingEnabled()&&Re.panningEnabled()&&Re.userZoomingEnabled()&&Re.userPanningEnabled()){W.preventDefault(),e.data.bgActivePosistion=void 0,e.redrawHint("select",!0);var Rt=e.dragData.touchDragEles;if(Rt){e.redrawHint("drag",!0);for(var $t=0;$t<Rt.length;$t++){var lr=Rt[$t]._private;lr.grabbed=!1,lr.rscratch.inDragLayer=!1}}var pt=e.touchData.start,Tt=W.touches[0].clientX-te,Et=W.touches[0].clientY-re,yt=W.touches[1].clientX-te,oe=W.touches[1].clientY-re,Se=De(Tt,Et,yt,oe),it=Se/Q;if(ue){var xt=Tt-V,rr=Et-H,_r=yt-j,Ur=oe-U,Dr=(xt+_r)/2,Xi=(rr+Ur)/2,In=Re.zoom(),pi=In*it,zt=Re.pan(),Mt=J[0]*In+zt.x,qt=J[1]*In+zt.y,Qt={x:-pi/In*(Mt-zt.x-Dr)+Mt,y:-pi/In*(qt-zt.y-Xi)+qt};if(pt&&pt.active()){var Rt=e.dragData.touchDragEles;x(Rt),e.redrawHint("drag",!0),e.redrawHint("eles",!0),pt.unactivate().emit(Ae("freeon")),Rt.emit(Ae("free")),e.dragData.didDrag&&(pt.emit(Ae("dragfreeon")),Rt.emit(Ae("dragfree")))}Re.viewport({zoom:pi,pan:Qt,cancelOnFailedZoom:!0}),Re.emit(Ae("pinchzoom")),Q=Se,V=Tt,H=Et,j=yt,U=oe,e.pinching=!0}if(W.touches[0]){var Be=e.projectIntoViewport(W.touches[0].clientX,W.touches[0].clientY);xe[0]=Be[0],xe[1]=Be[1]}if(W.touches[1]){var Be=e.projectIntoViewport(W.touches[1].clientX,W.touches[1].clientY);xe[2]=Be[0],xe[3]=Be[1]}if(W.touches[2]){var Be=e.projectIntoViewport(W.touches[2].clientX,W.touches[2].clientY);xe[4]=Be[0],xe[5]=Be[1]}}else if(W.touches[0]&&!e.touchData.didSelect){var _t=e.touchData.start,oi=e.touchData.last,Ft;if(!e.hoverData.draggingEles&&!e.swipePanning&&(Ft=e.findNearestElement(xe[0],xe[1],!0,!0)),ce&&_t!=null&&W.preventDefault(),ce&&_t!=null&&e.nodeIsDraggable(_t))if(Pe){var Rt=e.dragData.touchDragEles,Ce=!e.dragData.didDrag;Ce&&y(Rt,{inDragLayer:!0}),e.dragData.didDrag=!0;var Zs={x:0,y:0};if(Ot(Ye[0])&&Ot(Ye[1])&&(Zs.x+=Ye[0],Zs.y+=Ye[1],Ce)){e.redrawHint("eles",!0);var _e=e.touchData.dragDelta;_e&&Ot(_e[0])&&Ot(_e[1])&&(Zs.x+=_e[0],Zs.y+=_e[1])}e.hoverData.draggingEles=!0,Rt.silentShift(Zs).emit(Ae("position")).emit(Ae("drag")),e.redrawHint("drag",!0),e.touchData.startPosition[0]==Oe[0]&&e.touchData.startPosition[1]==Oe[1]&&e.redrawHint("eles",!0),e.redraw()}else{var _e=e.touchData.dragDelta=e.touchData.dragDelta||[];_e.length===0?(_e.push(Ye[0]),_e.push(Ye[1])):(_e[0]+=Ye[0],_e[1]+=Ye[1])}if(n(_t||Ft,["touchmove","tapdrag","vmousemove"],W,{x:xe[0],y:xe[1]}),(!_t||!_t.grabbed())&&Ft!=oi&&(oi&&oi.emit(Ae("tapdragout")),Ft&&Ft.emit(Ae("tapdragover"))),e.touchData.last=Ft,ce)for(var $t=0;$t<xe.length;$t++)xe[$t]&&e.touchData.startPosition[$t]&&Pe&&(e.touchData.singleTouchMoved=!0);if(ce&&(_t==null||_t.pannable())&&Re.panningEnabled()&&Re.userPanningEnabled()){var an=s(_t,e.touchData.starts);an&&(W.preventDefault(),e.data.bgActivePosistion||(e.data.bgActivePosistion=o1(e.touchData.startPosition)),e.swipePanning?(Re.panBy({x:Ye[0]*be,y:Ye[1]*be}),Re.emit(Ae("dragpan"))):Pe&&(e.swipePanning=!0,Re.panBy({x:st*be,y:ot*be}),Re.emit(Ae("dragpan")),_t&&(_t.unactivate(),e.redrawHint("select",!0),e.touchData.start=null)));var Be=e.projectIntoViewport(W.touches[0].clientX,W.touches[0].clientY);xe[0]=Be[0],xe[1]=Be[1]}}for(var le=0;le<xe.length;le++)Oe[le]=xe[le];ce&&W.touches.length>0&&!e.hoverData.draggingEles&&!e.swipePanning&&e.data.bgActivePosistion!=null&&(e.data.bgActivePosistion=void 0,e.redrawHint("select",!0),e.redraw())}},"touchmoveHandler"),!1);var Me;e.registerBinding(t,"touchcancel",Me=o(function(W){var ce=e.touchData.start;e.touchData.capture=!1,ce&&ce.unactivate()},"touchcancelHandler"));var $e,de,rt,ke;if(e.registerBinding(t,"touchend",$e=o(function(W){var ce=e.touchData.start,K=e.touchData.capture;if(K)W.touches.length===0&&(e.touchData.capture=!1),W.preventDefault();else return;var Re=e.selection;e.swipePanning=!1,e.hoverData.draggingEles=!1;var xe=e.cy,Oe=xe.zoom(),be=e.touchData.now,Be=e.touchData.earlier;if(W.touches[0]){var Ae=e.projectIntoViewport(W.touches[0].clientX,W.touches[0].clientY);be[0]=Ae[0],be[1]=Ae[1]}if(W.touches[1]){var Ae=e.projectIntoViewport(W.touches[1].clientX,W.touches[1].clientY);be[2]=Ae[0],be[3]=Ae[1]}if(W.touches[2]){var Ae=e.projectIntoViewport(W.touches[2].clientX,W.touches[2].clientY);be[4]=Ae[0],be[5]=Ae[1]}var Ve=o(function(pe){return{originalEvent:W,type:pe,position:{x:be[0],y:be[1]}}},"makeEvent");ce&&ce.unactivate();var Pe;if(e.touchData.cxt){if(Pe=Ve("cxttapend"),ce?ce.emit(Pe):xe.emit(Pe),!e.touchData.cxtDragged){var Ye=Ve("cxttap");ce?ce.emit(Ye):xe.emit(Ye)}e.touchData.start&&(e.touchData.start._private.grabbed=!1),e.touchData.cxt=!1,e.touchData.start=null,e.redraw();return}if(!W.touches[2]&&xe.boxSelectionEnabled()&&e.touchData.selecting){e.touchData.selecting=!1;var le=xe.collection(e.getAllInBox(Re[0],Re[1],Re[2],Re[3]));Re[0]=void 0,Re[1]=void 0,Re[2]=void 0,Re[3]=void 0,Re[4]=0,e.redrawHint("select",!0),xe.emit(Ve("boxend"));var st=o(function(pe){return pe.selectable()&&!pe.selected()},"eleWouldBeSelected");le.emit(Ve("box")).stdFilter(st).select().emit(Ve("boxselect")),le.nonempty()&&e.redrawHint("eles",!0),e.redraw()}if(ce?.unactivate(),W.touches[2])e.data.bgActivePosistion=void 0,e.redrawHint("select",!0);else if(!W.touches[1]){if(!W.touches[0]){if(!W.touches[0]){e.data.bgActivePosistion=void 0,e.redrawHint("select",!0);var me=e.dragData.touchDragEles;if(ce!=null){var ot=ce._private.grabbed;x(me),e.redrawHint("drag",!0),e.redrawHint("eles",!0),ot&&(ce.emit(Ve("freeon")),me.emit(Ve("free")),e.dragData.didDrag&&(ce.emit(Ve("dragfreeon")),me.emit(Ve("dragfree")))),n(ce,["touchend","tapend","vmouseup","tapdragout"],W,{x:be[0],y:be[1]}),ce.unactivate(),e.touchData.start=null}else{var kt=e.findNearestElement(be[0],be[1],!0,!0);n(kt,["touchend","tapend","vmouseup","tapdragout"],W,{x:be[0],y:be[1]})}var Gt=e.touchData.startPosition[0]-be[0],Tt=Gt*Gt,Et=e.touchData.startPosition[1]-be[1],yt=Et*Et,oe=Tt+yt,ht=oe*Oe*Oe;e.touchData.singleTouchMoved||(ce||xe.$(":selected").unselect(["tapunselect"]),n(ce,["tap","vclick"],W,{x:be[0],y:be[1]}),de=!1,W.timeStamp-ke<=xe.multiClickDebounceTime()?(rt&&clearTimeout(rt),de=!0,ke=null,n(ce,["dbltap","vdblclick"],W,{x:be[0],y:be[1]})):(rt=setTimeout(function(){de||n(ce,["onetap","voneclick"],W,{x:be[0],y:be[1]})},xe.multiClickDebounceTime()),ke=W.timeStamp)),ce!=null&&!e.dragData.didDrag&&ce._private.selectable&&ht<e.touchTapThreshold2&&!e.pinching&&(xe.selectionType()==="single"?(xe.$(r).unmerge(ce).unselect(["tapunselect"]),ce.select(["tapselect"])):ce.selected()?ce.unselect(["tapunselect"]):ce.select(["tapselect"]),e.redrawHint("eles",!0)),e.touchData.singleTouchMoved=!0}}}for(var gt=0;gt<be.length;gt++)Be[gt]=be[gt];e.dragData.didDrag=!1,W.touches.length===0&&(e.touchData.dragDelta=[],e.touchData.startPosition=[null,null,null,null,null,null],e.touchData.startGPosition=null,e.touchData.didSelect=!1),W.touches.length<2&&(W.touches.length===1&&(e.touchData.startGPosition=[W.touches[0].clientX,W.touches[0].clientY]),e.pinching=!1,e.redrawHint("eles",!0),e.redraw())},"touchendHandler"),!1),typeof TouchEvent>"u"){var Fe=[],He=o(function(W){return{clientX:W.clientX,clientY:W.clientY,force:1,identifier:W.pointerId,pageX:W.pageX,pageY:W.pageY,radiusX:W.width/2,radiusY:W.height/2,screenX:W.screenX,screenY:W.screenY,target:W.target}},"makeTouch"),at=o(function(W){return{event:W,touch:He(W)}},"makePointer"),qe=o(function(W){Fe.push(at(W))},"addPointer"),Ue=o(function(W){for(var ce=0;ce<Fe.length;ce++){var K=Fe[ce];if(K.event.pointerId===W.pointerId){Fe.splice(ce,1);return}}},"removePointer"),ye=o(function(W){var ce=Fe.filter(function(K){return K.event.pointerId===W.pointerId})[0];ce.event=W,ce.touch=He(W)},"updatePointer"),ve=o(function(W){W.touches=Fe.map(function(ce){return ce.touch})},"addTouchesToEvent"),ie=o(function(W){return W.pointerType==="mouse"||W.pointerType===4},"pointerIsMouse");e.registerBinding(e.container,"pointerdown",function(fe){ie(fe)||(fe.preventDefault(),qe(fe),ve(fe),Ee(fe))}),e.registerBinding(e.container,"pointerup",function(fe){ie(fe)||(Ue(fe),ve(fe),$e(fe))}),e.registerBinding(e.container,"pointercancel",function(fe){ie(fe)||(Ue(fe),ve(fe),Me(fe))}),e.registerBinding(e.container,"pointermove",function(fe){ie(fe)||(fe.preventDefault(),ye(fe),ve(fe),we(fe))})}};Ju={};Ju.generatePolygon=function(e,t){return this.nodeShapes[e]={renderer:this,name:e,points:t,draw:o(function(i,n,a,s,l,u){this.renderer.nodeShapeImpl("polygon",i,n,a,s,l,this.points)},"draw"),intersectLine:o(function(i,n,a,s,l,u,h,d){return Kb(l,u,this.points,i,n,a/2,s/2,h)},"intersectLine"),checkPoint:o(function(i,n,a,s,l,u,h,d){return Qu(i,n,this.points,u,h,s,l,[0,-1],a)},"checkPoint"),hasMiterBounds:e!=="rectangle",miterBounds:o(function(i,n,a,s,l,u){return Grt(this.points,i,n,a,s,l)},"miterBounds")}};Ju.generateEllipse=function(){return this.nodeShapes.ellipse={renderer:this,name:"ellipse",draw:o(function(t,r,i,n,a,s){this.renderer.nodeShapeImpl(this.name,t,r,i,n,a)},"draw"),intersectLine:o(function(t,r,i,n,a,s,l,u){return Xrt(a,s,t,r,i/2+l,n/2+l)},"intersectLine"),checkPoint:o(function(t,r,i,n,a,s,l,u){return Qp(t,r,n,a,s,l,i)},"checkPoint")}};Ju.generateRoundPolygon=function(e,t){return this.nodeShapes[e]={renderer:this,name:e,points:t,getOrCreateCorners:o(function(i,n,a,s,l,u,h){if(u[h]!==void 0&&u[h+"-cx"]===i&&u[h+"-cy"]===n)return u[h];u[h]=new Array(t.length/2),u[h+"-cx"]=i,u[h+"-cy"]=n;var d=a/2,f=s/2;l=l==="auto"?pme(a,s):l;for(var p=new Array(t.length/2),m=0;m<t.length/2;m++)p[m]={x:i+d*t[m*2],y:n+f*t[m*2+1]};var g,y,v,x,b=p.length;for(y=p[b-1],g=0;g<b;g++)v=p[g%b],x=p[(g+1)%b],u[h][g]=LP(y,v,x,l),y=v,v=x;return u[h]},"getOrCreateCorners"),draw:o(function(i,n,a,s,l,u,h){this.renderer.nodeShapeImpl("round-polygon",i,n,a,s,l,this.points,this.getOrCreateCorners(n,a,s,l,u,h,"drawCorners"))},"draw"),intersectLine:o(function(i,n,a,s,l,u,h,d,f){return Zrt(l,u,this.points,i,n,a,s,h,this.getOrCreateCorners(i,n,a,s,d,f,"corners"))},"intersectLine"),checkPoint:o(function(i,n,a,s,l,u,h,d,f){return jrt(i,n,this.points,u,h,s,l,this.getOrCreateCorners(u,h,s,l,d,f,"corners"))},"checkPoint")}};Ju.generateRoundRectangle=function(){return this.nodeShapes["round-rectangle"]=this.nodeShapes.roundrectangle={renderer:this,name:"round-rectangle",points:rs(4,0),draw:o(function(t,r,i,n,a,s){this.renderer.nodeShapeImpl(this.name,t,r,i,n,a,this.points,s)},"draw"),intersectLine:o(function(t,r,i,n,a,s,l,u){return dme(a,s,t,r,i,n,l,u)},"intersectLine"),checkPoint:o(function(t,r,i,n,a,s,l,u){var h=n/2,d=a/2;u=u==="auto"?Hd(n,a):u,u=Math.min(h,d,u);var f=u*2;return!!(Qu(t,r,this.points,s,l,n,a-f,[0,-1],i)||Qu(t,r,this.points,s,l,n-f,a,[0,-1],i)||Qp(t,r,f,f,s-h+u,l-d+u,i)||Qp(t,r,f,f,s+h-u,l-d+u,i)||Qp(t,r,f,f,s+h-u,l+d-u,i)||Qp(t,r,f,f,s-h+u,l+d-u,i))},"checkPoint")}};Ju.generateCutRectangle=function(){return this.nodeShapes["cut-rectangle"]=this.nodeShapes.cutrectangle={renderer:this,name:"cut-rectangle",cornerLength:bP(),points:rs(4,0),draw:o(function(t,r,i,n,a,s){this.renderer.nodeShapeImpl(this.name,t,r,i,n,a,null,s)},"draw"),generateCutTrianglePts:o(function(t,r,i,n,a){var s=a==="auto"?this.cornerLength:a,l=r/2,u=t/2,h=i-u,d=i+u,f=n-l,p=n+l;return{topLeft:[h,f+s,h+s,f,h+s,f+s],topRight:[d-s,f,d,f+s,d-s,f+s],bottomRight:[d,p-s,d-s,p,d-s,p-s],bottomLeft:[h+s,p,h,p-s,h+s,p-s]}},"generateCutTrianglePts"),intersectLine:o(function(t,r,i,n,a,s,l,u){var h=this.generateCutTrianglePts(i+2*l,n+2*l,t,r,u),d=[].concat.apply([],[h.topLeft.splice(0,4),h.topRight.splice(0,4),h.bottomRight.splice(0,4),h.bottomLeft.splice(0,4)]);return Kb(a,s,d,t,r)},"intersectLine"),checkPoint:o(function(t,r,i,n,a,s,l,u){var h=u==="auto"?this.cornerLength:u;if(Qu(t,r,this.points,s,l,n,a-2*h,[0,-1],i)||Qu(t,r,this.points,s,l,n-2*h,a,[0,-1],i))return!0;var d=this.generateCutTrianglePts(n,a,s,l);return Bs(t,r,d.topLeft)||Bs(t,r,d.topRight)||Bs(t,r,d.bottomRight)||Bs(t,r,d.bottomLeft)},"checkPoint")}};Ju.generateBarrel=function(){return this.nodeShapes.barrel={renderer:this,name:"barrel",points:rs(4,0),draw:o(function(t,r,i,n,a,s){this.renderer.nodeShapeImpl(this.name,t,r,i,n,a)},"draw"),intersectLine:o(function(t,r,i,n,a,s,l,u){var h=.15,d=.5,f=.85,p=this.generateBarrelBezierPts(i+2*l,n+2*l,t,r),m=o(function(v){var x=u1({x:v[0],y:v[1]},{x:v[2],y:v[3]},{x:v[4],y:v[5]},h),b=u1({x:v[0],y:v[1]},{x:v[2],y:v[3]},{x:v[4],y:v[5]},d),T=u1({x:v[0],y:v[1]},{x:v[2],y:v[3]},{x:v[4],y:v[5]},f);return[v[0],v[1],x.x,x.y,b.x,b.y,T.x,T.y,v[4],v[5]]},"approximateBarrelCurvePts"),g=[].concat(m(p.topLeft),m(p.topRight),m(p.bottomRight),m(p.bottomLeft));return Kb(a,s,g,t,r)},"intersectLine"),generateBarrelBezierPts:o(function(t,r,i,n){var a=r/2,s=t/2,l=i-s,u=i+s,h=n-a,d=n+a,f=HO(t,r),p=f.heightOffset,m=f.widthOffset,g=f.ctrlPtOffsetPct*t,y={topLeft:[l,h+p,l+g,h,l+m,h],topRight:[u-m,h,u-g,h,u,h+p],bottomRight:[u,d-p,u-g,d,u-m,d],bottomLeft:[l+m,d,l+g,d,l,d-p]};return y.topLeft.isTop=!0,y.topRight.isTop=!0,y.bottomLeft.isBottom=!0,y.bottomRight.isBottom=!0,y},"generateBarrelBezierPts"),checkPoint:o(function(t,r,i,n,a,s,l,u){var h=HO(n,a),d=h.heightOffset,f=h.widthOffset;if(Qu(t,r,this.points,s,l,n,a-2*d,[0,-1],i)||Qu(t,r,this.points,s,l,n-2*f,a,[0,-1],i))return!0;for(var p=this.generateBarrelBezierPts(n,a,s,l),m=o(function(A,N,P){var I=P[4],D=P[2],_=P[0],R=P[5],M=P[1],L=Math.min(I,_),B=Math.max(I,_),O=Math.min(R,M),$=Math.max(R,M);if(L<=A&&A<=B&&O<=N&&N<=$){var G=Qrt(I,D,_),F=qrt(G[0],G[1],G[2],A),V=F.filter(function(H){return 0<=H&&H<=1});if(V.length>0)return V[0]}return null},"getCurveT"),g=Object.keys(p),y=0;y<g.length;y++){var v=g[y],x=p[v],b=m(t,r,x);if(b!=null){var T=x[5],w=x[3],C=x[1],k=na(T,w,C,b);if(x.isTop&&k<=r||x.isBottom&&r<=k)return!0}}return!1},"checkPoint")}};Ju.generateBottomRoundrectangle=function(){return this.nodeShapes["bottom-round-rectangle"]=this.nodeShapes.bottomroundrectangle={renderer:this,name:"bottom-round-rectangle",points:rs(4,0),draw:o(function(t,r,i,n,a,s){this.renderer.nodeShapeImpl(this.name,t,r,i,n,a,this.points,s)},"draw"),intersectLine:o(function(t,r,i,n,a,s,l,u){var h=t-(i/2+l),d=r-(n/2+l),f=d,p=t+(i/2+l),m=Gd(a,s,t,r,h,d,p,f,!1);return m.length>0?m:dme(a,s,t,r,i,n,l,u)},"intersectLine"),checkPoint:o(function(t,r,i,n,a,s,l,u){u=u==="auto"?Hd(n,a):u;var h=2*u;if(Qu(t,r,this.points,s,l,n,a-h,[0,-1],i)||Qu(t,r,this.points,s,l,n-h,a,[0,-1],i))return!0;var d=n/2+2*i,f=a/2+2*i,p=[s-d,l-f,s-d,l,s+d,l,s+d,l-f];return!!(Bs(t,r,p)||Qp(t,r,h,h,s+n/2-u,l+a/2-u,i)||Qp(t,r,h,h,s-n/2+u,l+a/2-u,i))},"checkPoint")}};Ju.registerNodeShapes=function(){var e=this.nodeShapes={},t=this;this.generateEllipse(),this.generatePolygon("triangle",rs(3,0)),this.generateRoundPolygon("round-triangle",rs(3,0)),this.generatePolygon("rectangle",rs(4,0)),e.square=e.rectangle,this.generateRoundRectangle(),this.generateCutRectangle(),this.generateBarrel(),this.generateBottomRoundrectangle();{var r=[0,1,1,0,0,-1,-1,0];this.generatePolygon("diamond",r),this.generateRoundPolygon("round-diamond",r)}this.generatePolygon("pentagon",rs(5,0)),this.generateRoundPolygon("round-pentagon",rs(5,0)),this.generatePolygon("hexagon",rs(6,0)),this.generateRoundPolygon("round-hexagon",rs(6,0)),this.generatePolygon("heptagon",rs(7,0)),this.generateRoundPolygon("round-heptagon",rs(7,0)),this.generatePolygon("octagon",rs(8,0)),this.generateRoundPolygon("round-octagon",rs(8,0));var i=new Array(20);{var n=UO(5,0),a=UO(5,Math.PI/5),s=.5*(3-Math.sqrt(5));s*=1.57;for(var l=0;l<a.length/2;l++)a[l*2]*=s,a[l*2+1]*=s;for(var l=0;l<20/4;l++)i[l*4]=n[l*2],i[l*4+1]=n[l*2+1],i[l*4+2]=a[l*2],i[l*4+3]=a[l*2+1]}i=fme(i),this.generatePolygon("star",i),this.generatePolygon("vee",[-1,-1,0,-.333,1,-1,0,1]),this.generatePolygon("rhomboid",[-1,-1,.333,-1,1,1,-.333,1]),this.generatePolygon("right-rhomboid",[-.333,-1,1,-1,.333,1,-1,1]),this.nodeShapes.concavehexagon=this.generatePolygon("concave-hexagon",[-1,-.95,-.75,0,-1,.95,1,.95,.75,0,1,-.95]);{var u=[-1,-1,.25,-1,1,0,.25,1,-1,1];this.generatePolygon("tag",u),this.generateRoundPolygon("round-tag",u)}e.makePolygon=function(h){var d=h.join("$"),f="polygon-"+d,p;return(p=this[f])?p:t.generatePolygon(f,h)}};d2={};d2.timeToRender=function(){return this.redrawTotalTime/this.redrawCount};d2.redraw=function(e){e=e||lme();var t=this;t.averageRedrawTime===void 0&&(t.averageRedrawTime=0),t.lastRedrawTime===void 0&&(t.lastRedrawTime=0),t.lastDrawTime===void 0&&(t.lastDrawTime=0),t.requestedFrame=!0,t.renderOptions=e};d2.beforeRender=function(e,t){if(!this.destroyed){t==null&&Yi("Priority is not optional for beforeRender");var r=this.beforeRenderCallbacks;r.push({fn:e,priority:t}),r.sort(function(i,n){return n.priority-i.priority})}};A0e=o(function(t,r,i){for(var n=t.beforeRenderCallbacks,a=0;a<n.length;a++)n[a].fn(r,i)},"beforeRenderCallbacks");d2.startRenderLoop=function(){var e=this,t=e.cy;if(!e.renderLoopStarted){e.renderLoopStarted=!0;var r=o(function(n){if(!e.destroyed){if(!t.batching())if(e.requestedFrame&&!e.skipFrame){A0e(e,!0,n);var a=Zu();e.render(e.renderOptions);var s=e.lastDrawTime=Zu();e.averageRedrawTime===void 0&&(e.averageRedrawTime=s-a),e.redrawCount===void 0&&(e.redrawCount=0),e.redrawCount++,e.redrawTotalTime===void 0&&(e.redrawTotalTime=0);var l=s-a;e.redrawTotalTime+=l,e.lastRedrawTime=l,e.averageRedrawTime=e.averageRedrawTime/2+l/2,e.requestedFrame=!1}else A0e(e,!1,n);e.skipFrame=!1,O3(r)}},"renderFn");O3(r)}};pst=o(function(t){this.init(t)},"BaseRenderer"),pge=pst,C1=pge.prototype;C1.clientFunctions=["redrawHint","render","renderTo","matchCanvasSize","nodeShapeImpl","arrowShapeImpl"];C1.init=function(e){var t=this;t.options=e,t.cy=e.cy;var r=t.container=e.cy.container(),i=t.cy.window();if(i){var n=i.document,a=n.head,s="__________cytoscape_stylesheet",l="__________cytoscape_container",u=n.getElementById(s)!=null;if(r.className.indexOf(l)<0&&(r.className=(r.className||"")+" "+l),!u){var h=n.createElement("style");h.id=s,h.textContent="."+l+" { position: relative; }",a.insertBefore(h,a.children[0])}var d=i.getComputedStyle(r),f=d.getPropertyValue("position");f==="static"&&di("A Cytoscape container has style position:static and so can not use UI extensions properly")}t.selection=[void 0,void 0,void 0,void 0,0],t.bezierProjPcts=[.05,.225,.4,.5,.6,.775,.95],t.hoverData={down:null,last:null,downTime:null,triggerMode:null,dragging:!1,initialPan:[null,null],capture:!1},t.dragData={possibleDragElements:[]},t.touchData={start:null,capture:!1,startPosition:[null,null,null,null,null,null],singleTouchStartTime:null,singleTouchMoved:!0,now:[null,null,null,null,null,null],earlier:[null,null,null,null,null,null]},t.redraws=0,t.showFps=e.showFps,t.debug=e.debug,t.webgl=e.webgl,t.hideEdgesOnViewport=e.hideEdgesOnViewport,t.textureOnViewport=e.textureOnViewport,t.wheelSensitivity=e.wheelSensitivity,t.motionBlurEnabled=e.motionBlur,t.forcedPixelRatio=Ot(e.pixelRatio)?e.pixelRatio:null,t.motionBlur=e.motionBlur,t.motionBlurOpacity=e.motionBlurOpacity,t.motionBlurTransparency=1-t.motionBlurOpacity,t.motionBlurPxRatio=1,t.mbPxRBlurry=1,t.minMbLowQualFrames=4,t.fullQualityMb=!1,t.clearedForMotionBlur=[],t.desktopTapThreshold=e.desktopTapThreshold,t.desktopTapThreshold2=e.desktopTapThreshold*e.desktopTapThreshold,t.touchTapThreshold=e.touchTapThreshold,t.touchTapThreshold2=e.touchTapThreshold*e.touchTapThreshold,t.tapholdDuration=500,t.bindings=[],t.beforeRenderCallbacks=[],t.beforeRenderPriorities={animations:400,eleCalcs:300,eleTxrDeq:200,lyrTxrDeq:150,lyrTxrSkip:100},t.registerNodeShapes(),t.registerArrowShapes(),t.registerCalculationListeners()};C1.notify=function(e,t){var r=this,i=r.cy;if(!this.destroyed){if(e==="init"){r.load();return}if(e==="destroy"){r.destroy();return}(e==="add"||e==="remove"||e==="move"&&i.hasCompoundNodes()||e==="load"||e==="zorder"||e==="mount")&&r.invalidateCachedZSortedEles(),e==="viewport"&&r.redrawHint("select",!0),e==="gc"&&r.redrawHint("gc",!0),(e==="load"||e==="resize"||e==="mount")&&(r.invalidateContainerClientCoordsCache(),r.matchCanvasSize(r.container)),r.redrawHint("eles",!0),r.redrawHint("drag",!0),this.startRenderLoop(),this.redraw()}};C1.destroy=function(){var e=this;e.destroyed=!0,e.cy.stopAnimationLoop();for(var t=0;t<e.bindings.length;t++){var r=e.bindings[t],i=r,n=i.target;(n.off||n.removeEventListener).apply(n,i.args)}if(e.bindings=[],e.beforeRenderCallbacks=[],e.onUpdateEleCalcsFns=[],e.removeObserver&&e.removeObserver.disconnect(),e.styleObserver&&e.styleObserver.disconnect(),e.resizeObserver&&e.resizeObserver.disconnect(),e.labelCalcDiv)try{document.body.removeChild(e.labelCalcDiv)}catch{}};C1.isHeadless=function(){return!1};[RP,dge,fge,T1,Ju,d2].forEach(function(e){hr(C1,e)});PO=1e3/60,mge={setupDequeueing:o(function(t){return o(function(){var i=this,n=this.renderer;if(!i.dequeueingSetup){i.dequeueingSetup=!0;var a=o2(function(){n.redrawHint("eles",!0),n.redrawHint("drag",!0),n.redraw()},t.deqRedrawThreshold),s=o(function(h,d){var f=Zu(),p=n.averageRedrawTime,m=n.lastRedrawTime,g=[],y=n.cy.extent(),v=n.getPixelRatio();for(h||n.flushRenderedStyleQueue();;){var x=Zu(),b=x-f,T=x-d;if(m<PO){var w=PO-(h?p:0);if(T>=t.deqFastCost*w)break}else if(h){if(b>=t.deqCost*m||b>=t.deqAvgCost*p)break}else if(T>=t.deqNoDrawCost*PO)break;var C=t.deq(i,v,y);if(C.length>0)for(var k=0;k<C.length;k++)g.push(C[k]);else break}g.length>0&&(t.onDeqd(i,g),!h&&t.shouldRedraw(i,g,v,y)&&a())},"dequeue"),l=t.priority||mP;n.beforeRender(s,l(i))}},"setupDequeueingImpl")},"setupDequeueing")},mst=(function(){function e(t){var r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:P3;Kd(this,e),this.idsByKey=new Ku,this.keyForId=new Ku,this.cachesByLvl=new Ku,this.lvls=[],this.getKey=t,this.doesEleInvalidateKey=r}return o(e,"ElementTextureCacheLookup"),Zd(e,[{key:"getIdsFor",value:o(function(r){r==null&&Yi("Can not get id list for null key");var i=this.idsByKey,n=this.idsByKey.get(r);return n||(n=new y1,i.set(r,n)),n},"getIdsFor")},{key:"addIdForKey",value:o(function(r,i){r!=null&&this.getIdsFor(r).add(i)},"addIdForKey")},{key:"deleteIdForKey",value:o(function(r,i){r!=null&&this.getIdsFor(r).delete(i)},"deleteIdForKey")},{key:"getNumberOfIdsForKey",value:o(function(r){return r==null?0:this.getIdsFor(r).size},"getNumberOfIdsForKey")},{key:"updateKeyMappingFor",value:o(function(r){var i=r.id(),n=this.keyForId.get(i),a=this.getKey(r);this.deleteIdForKey(n,i),this.addIdForKey(a,i),this.keyForId.set(i,a)},"updateKeyMappingFor")},{key:"deleteKeyMappingFor",value:o(function(r){var i=r.id(),n=this.keyForId.get(i);this.deleteIdForKey(n,i),this.keyForId.delete(i)},"deleteKeyMappingFor")},{key:"keyHasChangedFor",value:o(function(r){var i=r.id(),n=this.keyForId.get(i),a=this.getKey(r);return n!==a},"keyHasChangedFor")},{key:"isInvalid",value:o(function(r){return this.keyHasChangedFor(r)||this.doesEleInvalidateKey(r)},"isInvalid")},{key:"getCachesAt",value:o(function(r){var i=this.cachesByLvl,n=this.lvls,a=i.get(r);return a||(a=new Ku,i.set(r,a),n.push(r)),a},"getCachesAt")},{key:"getCache",value:o(function(r,i){return this.getCachesAt(i).get(r)},"getCache")},{key:"get",value:o(function(r,i){var n=this.getKey(r),a=this.getCache(n,i);return a!=null&&this.updateKeyMappingFor(r),a},"get")},{key:"getForCachedKey",value:o(function(r,i){var n=this.keyForId.get(r.id()),a=this.getCache(n,i);return a},"getForCachedKey")},{key:"hasCache",value:o(function(r,i){return this.getCachesAt(i).has(r)},"hasCache")},{key:"has",value:o(function(r,i){var n=this.getKey(r);return this.hasCache(n,i)},"has")},{key:"setCache",value:o(function(r,i,n){n.key=r,this.getCachesAt(i).set(r,n)},"setCache")},{key:"set",value:o(function(r,i,n){var a=this.getKey(r);this.setCache(a,i,n),this.updateKeyMappingFor(r)},"set")},{key:"deleteCache",value:o(function(r,i){this.getCachesAt(i).delete(r)},"deleteCache")},{key:"delete",value:o(function(r,i){var n=this.getKey(r);this.deleteCache(n,i)},"_delete")},{key:"invalidateKey",value:o(function(r){var i=this;this.lvls.forEach(function(n){return i.deleteCache(r,n)})},"invalidateKey")},{key:"invalidate",value:o(function(r){var i=r.id(),n=this.keyForId.get(i);this.deleteKeyMappingFor(r);var a=this.doesEleInvalidateKey(r);return a&&this.invalidateKey(n),a||this.getNumberOfIdsForKey(n)===0},"invalidate")}])})(),_0e=25,b3=50,L3=-4,aP=3,gge=7.99,gst=8,yst=1024,vst=1024,xst=1024,bst=.2,Tst=.8,Cst=10,kst=.15,wst=.1,Sst=.9,Est=.9,Ast=100,_st=1,c1={dequeue:"dequeue",downscale:"downscale",highQuality:"highQuality"},Dst=va({getKey:null,doesEleInvalidateKey:P3,drawElement:null,getBoundingBox:null,getRotationPoint:null,getRotationOffset:null,isVisible:ame,allowEdgeTxrCaching:!0,allowParentTxrCaching:!0}),Vb=o(function(t,r){var i=this;i.renderer=t,i.onDequeues=[];var n=Dst(r);hr(i,n),i.lookup=new mst(n.getKey,n.doesEleInvalidateKey),i.setupDequeueing()},"ElementTextureCache"),qn=Vb.prototype;qn.reasons=c1;qn.getTextureQueue=function(e){var t=this;return t.eleImgCaches=t.eleImgCaches||{},t.eleImgCaches[e]=t.eleImgCaches[e]||[]};qn.getRetiredTextureQueue=function(e){var t=this,r=t.eleImgCaches.retired=t.eleImgCaches.retired||{},i=r[e]=r[e]||[];return i};qn.getElementQueue=function(){var e=this,t=e.eleCacheQueue=e.eleCacheQueue||new l2(function(r,i){return i.reqs-r.reqs});return t};qn.getElementKeyToQueue=function(){var e=this,t=e.eleKeyToCacheQueue=e.eleKeyToCacheQueue||{};return t};qn.getElement=function(e,t,r,i,n){var a=this,s=this.renderer,l=s.cy.zoom(),u=this.lookup;if(!t||t.w===0||t.h===0||isNaN(t.w)||isNaN(t.h)||!e.visible()||e.removed()||!a.allowEdgeTxrCaching&&e.isEdge()||!a.allowParentTxrCaching&&e.isParent())return null;if(i==null&&(i=Math.ceil(yP(l*r))),i<L3)i=L3;else if(l>=gge||i>aP)return null;var h=Math.pow(2,i),d=t.h*h,f=t.w*h,p=s.eleTextBiggerThanMin(e,h);if(!this.isVisible(e,p))return null;var m=u.get(e,i);if(m&&m.invalidated&&(m.invalidated=!1,m.texture.invalidatedWidth-=m.width),m)return m;var g;if(d<=_0e?g=_0e:d<=b3?g=b3:g=Math.ceil(d/b3)*b3,d>xst||f>vst)return null;var y=a.getTextureQueue(g),v=y[y.length-2],x=o(function(){return a.recycleTexture(g,f)||a.addTexture(g,f)},"addNewTxr");v||(v=y[y.length-1]),v||(v=x()),v.width-v.usedWidth<f&&(v=x());for(var b=o(function(L){return L&&L.scaledLabelShown===p},"scalableFrom"),T=n&&n===c1.dequeue,w=n&&n===c1.highQuality,C=n&&n===c1.downscale,k,E=i+1;E<=aP;E++){var A=u.get(e,E);if(A){k=A;break}}var N=k&&k.level===i+1?k:null,P=o(function(){v.context.drawImage(N.texture.canvas,N.x,0,N.width,N.height,v.usedWidth,0,f,d)},"downscale");if(v.context.setTransform(1,0,0,1,0,0),v.context.clearRect(v.usedWidth,0,f,g),b(N))P();else if(b(k))if(w){for(var I=k.level;I>i;I--)N=a.getElement(e,t,r,I,c1.downscale);P()}else return a.queueElement(e,k.level-1),k;else{var D;if(!T&&!w&&!C)for(var _=i-1;_>=L3;_--){var R=u.get(e,_);if(R){D=R;break}}if(b(D))return a.queueElement(e,i),D;v.context.translate(v.usedWidth,0),v.context.scale(h,h),this.drawElement(v.context,e,t,p,!1),v.context.scale(1/h,1/h),v.context.translate(-v.usedWidth,0)}return m={x:v.usedWidth,texture:v,level:i,scale:h,width:f,height:d,scaledLabelShown:p},v.usedWidth+=Math.ceil(f+gst),v.eleCaches.push(m),u.set(e,i,m),a.checkTextureFullness(v),m};qn.invalidateElements=function(e){for(var t=0;t<e.length;t++)this.invalidateElement(e[t])};qn.invalidateElement=function(e){var t=this,r=t.lookup,i=[],n=r.isInvalid(e);if(n){for(var a=L3;a<=aP;a++){var s=r.getForCachedKey(e,a);s&&i.push(s)}var l=r.invalidate(e);if(l)for(var u=0;u<i.length;u++){var h=i[u],d=h.texture;d.invalidatedWidth+=h.width,h.invalidated=!0,t.checkTextureUtility(d)}t.removeFromQueue(e)}};qn.checkTextureUtility=function(e){e.invalidatedWidth>=bst*e.width&&this.retireTexture(e)};qn.checkTextureFullness=function(e){var t=this,r=t.getTextureQueue(e.height);e.usedWidth/e.width>Tst&&e.fullnessChecks>=Cst?Ud(r,e):e.fullnessChecks++};qn.retireTexture=function(e){var t=this,r=e.height,i=t.getTextureQueue(r),n=this.lookup;Ud(i,e),e.retired=!0;for(var a=e.eleCaches,s=0;s<a.length;s++){var l=a[s];n.deleteCache(l.key,l.level)}gP(a);var u=t.getRetiredTextureQueue(r);u.push(e)};qn.addTexture=function(e,t){var r=this,i=r.getTextureQueue(e),n={};return i.push(n),n.eleCaches=[],n.height=e,n.width=Math.max(yst,t),n.usedWidth=0,n.invalidatedWidth=0,n.fullnessChecks=0,n.canvas=r.renderer.makeOffscreenCanvas(n.width,n.height),n.context=n.canvas.getContext("2d"),n};qn.recycleTexture=function(e,t){for(var r=this,i=r.getTextureQueue(e),n=r.getRetiredTextureQueue(e),a=0;a<n.length;a++){var s=n[a];if(s.width>=t)return s.retired=!1,s.usedWidth=0,s.invalidatedWidth=0,s.fullnessChecks=0,gP(s.eleCaches),s.context.setTransform(1,0,0,1,0,0),s.context.clearRect(0,0,s.width,s.height),Ud(n,s),i.push(s),s}};qn.queueElement=function(e,t){var r=this,i=r.getElementQueue(),n=r.getElementKeyToQueue(),a=this.getKey(e),s=n[a];if(s)s.level=Math.max(s.level,t),s.eles.merge(e),s.reqs++,i.updateItem(s);else{var l={eles:e.spawn().merge(e),level:t,reqs:1,key:a};i.push(l),n[a]=l}};qn.dequeue=function(e){for(var t=this,r=t.getElementQueue(),i=t.getElementKeyToQueue(),n=[],a=t.lookup,s=0;s<_st&&r.size()>0;s++){var l=r.pop(),u=l.key,h=l.eles[0],d=a.hasCache(h,l.level);if(i[u]=null,d)continue;n.push(l);var f=t.getBoundingBox(h);t.getElement(h,f,e,l.level,c1.dequeue)}return n};qn.removeFromQueue=function(e){var t=this,r=t.getElementQueue(),i=t.getElementKeyToQueue(),n=this.getKey(e),a=i[n];a!=null&&(a.eles.length===1?(a.reqs=pP,r.updateItem(a),r.pop(),i[n]=null):a.eles.unmerge(e))};qn.onDequeue=function(e){this.onDequeues.push(e)};qn.offDequeue=function(e){Ud(this.onDequeues,e)};qn.setupDequeueing=mge.setupDequeueing({deqRedrawThreshold:Ast,deqCost:kst,deqAvgCost:wst,deqNoDrawCost:Sst,deqFastCost:Est,deq:o(function(t,r,i){return t.dequeue(r,i)},"deq"),onDeqd:o(function(t,r){for(var i=0;i<t.onDequeues.length;i++){var n=t.onDequeues[i];n(r)}},"onDeqd"),shouldRedraw:o(function(t,r,i,n){for(var a=0;a<r.length;a++)for(var s=r[a].eles,l=0;l<s.length;l++){var u=s[l].boundingBox();if(xP(u,n))return!0}return!1},"shouldRedraw"),priority:o(function(t){return t.renderer.beforeRenderPriorities.eleTxrDeq},"priority")});Rst=1,qb=-4,q3=2,Lst=3.99,Mst=50,Nst=50,Ist=.15,Ost=.1,Pst=.9,Bst=.9,Fst=1,D0e=250,$st=4e3*4e3,R0e=32767,zst=!0,yge=o(function(t){var r=this,i=r.renderer=t,n=i.cy;r.layersByLevel={},r.firstGet=!0,r.lastInvalidationTime=Zu()-2*D0e,r.skipping=!1,r.eleTxrDeqs=n.collection(),r.scheduleElementRefinement=o2(function(){r.refineElementTextures(r.eleTxrDeqs),r.eleTxrDeqs.unmerge(r.eleTxrDeqs)},Nst),i.beforeRender(function(s,l){l-r.lastInvalidationTime<=D0e?r.skipping=!0:r.skipping=!1},i.beforeRenderPriorities.lyrTxrSkip);var a=o(function(l,u){return u.reqs-l.reqs},"qSort");r.layersQueue=new l2(a),r.setupDequeueing()},"LayeredTextureCache"),xa=yge.prototype,L0e=0,Gst=Math.pow(2,53)-1;xa.makeLayer=function(e,t){var r=Math.pow(2,t),i=Math.ceil(e.w*r),n=Math.ceil(e.h*r),a=this.renderer.makeOffscreenCanvas(i,n),s={id:L0e=++L0e%Gst,bb:e,level:t,width:i,height:n,canvas:a,context:a.getContext("2d"),eles:[],elesQueue:[],reqs:0},l=s.context,u=-s.bb.x1,h=-s.bb.y1;return l.scale(r,r),l.translate(u,h),s};xa.getLayers=function(e,t,r){var i=this,n=i.renderer,a=n.cy,s=a.zoom(),l=i.firstGet;if(i.firstGet=!1,r==null){if(r=Math.ceil(yP(s*t)),r<qb)r=qb;else if(s>=Lst||r>q3)return null}i.validateLayersElesOrdering(r,e);var u=i.layersByLevel,h=Math.pow(2,r),d=u[r]=u[r]||[],f,p=i.levelIsComplete(r,e),m,g=o(function(){var P=o(function(M){if(i.validateLayersElesOrdering(M,e),i.levelIsComplete(M,e))return m=u[M],!0},"canUseAsTmpLvl"),I=o(function(M){if(!m)for(var L=r+M;qb<=L&&L<=q3&&!P(L);L+=M);},"checkLvls");I(1),I(-1);for(var D=d.length-1;D>=0;D--){var _=d[D];_.invalid&&Ud(d,_)}},"checkTempLevels");if(!p)g();else return d;var y=o(function(){if(!f){f=is();for(var P=0;P<e.length;P++)Frt(f,e[P].boundingBox())}return f},"getBb"),v=o(function(P){P=P||{};var I=P.after;y();var D=Math.ceil(f.w*h),_=Math.ceil(f.h*h);if(D>R0e||_>R0e)return null;var R=D*_;if(R>$st)return null;var M=i.makeLayer(f,r);if(I!=null){var L=d.indexOf(I)+1;d.splice(L,0,M)}else(P.insert===void 0||P.insert)&&d.unshift(M);return M},"makeLayer");if(i.skipping&&!l)return null;for(var x=null,b=e.length/Rst,T=!l,w=0;w<e.length;w++){var C=e[w],k=C._private.rscratch,E=k.imgLayerCaches=k.imgLayerCaches||{},A=E[r];if(A){x=A;continue}if((!x||x.eles.length>=b||!hme(x.bb,C.boundingBox()))&&(x=v({insert:!0,after:x}),!x))return null;m||T?i.queueLayer(x,C):i.drawEleInLayer(x,C,r,t),x.eles.push(C),E[r]=x}return m||(T?null:d)};xa.getEleLevelForLayerLevel=function(e,t){return e};xa.drawEleInLayer=function(e,t,r,i){var n=this,a=this.renderer,s=e.context,l=t.boundingBox();l.w===0||l.h===0||!t.visible()||(r=n.getEleLevelForLayerLevel(r,i),a.setImgSmoothing(s,!1),a.drawCachedElement(s,t,null,null,r,zst),a.setImgSmoothing(s,!0))};xa.levelIsComplete=function(e,t){var r=this,i=r.layersByLevel[e];if(!i||i.length===0)return!1;for(var n=0,a=0;a<i.length;a++){var s=i[a];if(s.reqs>0||s.invalid)return!1;n+=s.eles.length}return n===t.length};xa.validateLayersElesOrdering=function(e,t){var r=this.layersByLevel[e];if(r)for(var i=0;i<r.length;i++){for(var n=r[i],a=-1,s=0;s<t.length;s++)if(n.eles[0]===t[s]){a=s;break}if(a<0){this.invalidateLayer(n);continue}for(var l=a,s=0;s<n.eles.length;s++)if(n.eles[s]!==t[l+s]){this.invalidateLayer(n);break}}};xa.updateElementsInLayers=function(e,t){for(var r=this,i=i2(e[0]),n=0;n<e.length;n++)for(var a=i?null:e[n],s=i?e[n]:e[n].ele,l=s._private.rscratch,u=l.imgLayerCaches=l.imgLayerCaches||{},h=qb;h<=q3;h++){var d=u[h];d&&(a&&r.getEleLevelForLayerLevel(d.level)!==a.level||t(d,s,a))}};xa.haveLayers=function(){for(var e=this,t=!1,r=qb;r<=q3;r++){var i=e.layersByLevel[r];if(i&&i.length>0){t=!0;break}}return t};xa.invalidateElements=function(e){var t=this;e.length!==0&&(t.lastInvalidationTime=Zu(),!(e.length===0||!t.haveLayers())&&t.updateElementsInLayers(e,o(function(i,n,a){t.invalidateLayer(i)},"invalAssocLayers")))};xa.invalidateLayer=function(e){if(this.lastInvalidationTime=Zu(),!e.invalid){var t=e.level,r=e.eles,i=this.layersByLevel[t];Ud(i,e),e.elesQueue=[],e.invalid=!0,e.replacement&&(e.replacement.invalid=!0);for(var n=0;n<r.length;n++){var a=r[n]._private.rscratch.imgLayerCaches;a&&(a[t]=null)}}};xa.refineElementTextures=function(e){var t=this;t.updateElementsInLayers(e,o(function(i,n,a){var s=i.replacement;if(s||(s=i.replacement=t.makeLayer(i.bb,i.level),s.replaces=i,s.eles=i.eles),!s.reqs)for(var l=0;l<s.eles.length;l++)t.queueLayer(s,s.eles[l])},"refineEachEle"))};xa.enqueueElementRefinement=function(e){this.eleTxrDeqs.merge(e),this.scheduleElementRefinement()};xa.queueLayer=function(e,t){var r=this,i=r.layersQueue,n=e.elesQueue,a=n.hasId=n.hasId||{};if(!e.replacement){if(t){if(a[t.id()])return;n.push(t),a[t.id()]=!0}e.reqs?(e.reqs++,i.updateItem(e)):(e.reqs=1,i.push(e))}};xa.dequeue=function(e){for(var t=this,r=t.layersQueue,i=[],n=0;n<Fst&&r.size()!==0;){var a=r.peek();if(a.replacement){r.pop();continue}if(a.replaces&&a!==a.replaces.replacement){r.pop();continue}if(a.invalid){r.pop();continue}var s=a.elesQueue.shift();s&&(t.drawEleInLayer(a,s,a.level,e),n++),i.length===0&&i.push(!0),a.elesQueue.length===0&&(r.pop(),a.reqs=0,a.replaces&&t.applyLayerReplacement(a),t.requestRedraw())}return i};xa.applyLayerReplacement=function(e){var t=this,r=t.layersByLevel[e.level],i=e.replaces,n=r.indexOf(i);if(!(n<0||i.invalid)){r[n]=e;for(var a=0;a<e.eles.length;a++){var s=e.eles[a]._private,l=s.imgLayerCaches=s.imgLayerCaches||{};l&&(l[e.level]=e)}t.requestRedraw()}};xa.requestRedraw=o2(function(){var e=this.renderer;e.redrawHint("eles",!0),e.redrawHint("drag",!0),e.redraw()},100);xa.setupDequeueing=mge.setupDequeueing({deqRedrawThreshold:Mst,deqCost:Ist,deqAvgCost:Ost,deqNoDrawCost:Pst,deqFastCost:Bst,deq:o(function(t,r){return t.dequeue(r)},"deq"),onDeqd:mP,shouldRedraw:ame,priority:o(function(t){return t.renderer.beforeRenderPriorities.lyrTxrDeq},"priority")});vge={};o(Vst,"polygon");o(Wst,"triangleBackcurve");o(N0e,"triangleTee");o(qst,"circleTriangle");o(Ust,"circle$1");vge.arrowShapeImpl=function(e){return(M0e||(M0e={polygon:Vst,"triangle-backcurve":Wst,"triangle-tee":N0e,"circle-triangle":qst,"triangle-cross":N0e,circle:Ust}))[e]};zc={};zc.drawElement=function(e,t,r,i,n,a){var s=this;t.isNode()?s.drawNode(e,t,r,i,n,a):s.drawEdge(e,t,r,i,n,a)};zc.drawElementOverlay=function(e,t){var r=this;t.isNode()?r.drawNodeOverlay(e,t):r.drawEdgeOverlay(e,t)};zc.drawElementUnderlay=function(e,t){var r=this;t.isNode()?r.drawNodeUnderlay(e,t):r.drawEdgeUnderlay(e,t)};zc.drawCachedElementPortion=function(e,t,r,i,n,a,s,l){var u=this,h=r.getBoundingBox(t);if(!(h.w===0||h.h===0)){var d=r.getElement(t,h,i,n,a);if(d!=null){var f=l(u,t);if(f===0)return;var p=s(u,t),m=h.x1,g=h.y1,y=h.w,v=h.h,x,b,T,w,C;if(p!==0){var k=r.getRotationPoint(t);T=k.x,w=k.y,e.translate(T,w),e.rotate(p),C=u.getImgSmoothing(e),C||u.setImgSmoothing(e,!0);var E=r.getRotationOffset(t);x=E.x,b=E.y}else x=m,b=g;var A;f!==1&&(A=e.globalAlpha,e.globalAlpha=A*f),e.drawImage(d.texture.canvas,d.x,0,d.width,d.height,x,b,y,v),f!==1&&(e.globalAlpha=A),p!==0&&(e.rotate(-p),e.translate(-T,-w),C||u.setImgSmoothing(e,!1))}else r.drawElement(e,t)}};Hst=o(function(){return 0},"getZeroRotation"),Yst=o(function(t,r){return t.getTextAngle(r,null)},"getLabelRotation"),jst=o(function(t,r){return t.getTextAngle(r,"source")},"getSourceLabelRotation"),Xst=o(function(t,r){return t.getTextAngle(r,"target")},"getTargetLabelRotation"),Kst=o(function(t,r){return r.effectiveOpacity()},"getOpacity"),BO=o(function(t,r){return r.pstyle("text-opacity").pfValue*r.effectiveOpacity()},"getTextOpacity");zc.drawCachedElement=function(e,t,r,i,n,a){var s=this,l=s.data,u=l.eleTxrCache,h=l.lblTxrCache,d=l.slbTxrCache,f=l.tlbTxrCache,p=t.boundingBox(),m=a===!0?u.reasons.highQuality:null;if(!(p.w===0||p.h===0||!t.visible())&&(!i||xP(p,i))){var g=t.isEdge(),y=t.element()._private.rscratch.badLine;s.drawElementUnderlay(e,t),s.drawCachedElementPortion(e,t,u,r,n,m,Hst,Kst),(!g||!y)&&s.drawCachedElementPortion(e,t,h,r,n,m,Yst,BO),g&&!y&&(s.drawCachedElementPortion(e,t,d,r,n,m,jst,BO),s.drawCachedElementPortion(e,t,f,r,n,m,Xst,BO)),s.drawElementOverlay(e,t)}};zc.drawElements=function(e,t){for(var r=this,i=0;i<t.length;i++){var n=t[i];r.drawElement(e,n)}};zc.drawCachedElements=function(e,t,r,i){for(var n=this,a=0;a<t.length;a++){var s=t[a];n.drawCachedElement(e,s,r,i)}};zc.drawCachedNodes=function(e,t,r,i){for(var n=this,a=0;a<t.length;a++){var s=t[a];s.isNode()&&n.drawCachedElement(e,s,r,i)}};zc.drawLayeredElements=function(e,t,r,i){var n=this,a=n.data.lyrTxrCache.getLayers(t,r);if(a)for(var s=0;s<a.length;s++){var l=a[s],u=l.bb;u.w===0||u.h===0||e.drawImage(l.canvas,u.x1,u.y1,u.w,u.h)}else n.drawCachedElements(e,t,r,i)};eh={};eh.drawEdge=function(e,t,r){var i=arguments.length>3&&arguments[3]!==void 0?arguments[3]:!0,n=arguments.length>4&&arguments[4]!==void 0?arguments[4]:!0,a=arguments.length>5&&arguments[5]!==void 0?arguments[5]:!0,s=this,l=t._private.rscratch;if(!(a&&!t.visible())&&!(l.badLine||l.allpts==null||isNaN(l.allpts[0]))){var u;r&&(u=r,e.translate(-u.x1,-u.y1));var h=a?t.pstyle("opacity").value:1,d=a?t.pstyle("line-opacity").value:1,f=t.pstyle("curve-style").value,p=t.pstyle("line-style").value,m=t.pstyle("width").pfValue,g=t.pstyle("line-cap").value,y=t.pstyle("line-outline-width").value,v=t.pstyle("line-outline-color").value,x=h*d,b=h*d,T=o(function(){var M=arguments.length>0&&arguments[0]!==void 0?arguments[0]:x;f==="straight-triangle"?(s.eleStrokeStyle(e,t,M),s.drawEdgeTrianglePath(t,e,l.allpts)):(e.lineWidth=m,e.lineCap=g,s.eleStrokeStyle(e,t,M),s.drawEdgePath(t,e,l.allpts,p),e.lineCap="butt")},"drawLine"),w=o(function(){var M=arguments.length>0&&arguments[0]!==void 0?arguments[0]:x;if(e.lineWidth=m+y,e.lineCap=g,y>0)s.colorStrokeStyle(e,v[0],v[1],v[2],M);else{e.lineCap="butt";return}f==="straight-triangle"?s.drawEdgeTrianglePath(t,e,l.allpts):(s.drawEdgePath(t,e,l.allpts,p),e.lineCap="butt")},"drawLineOutline"),C=o(function(){n&&s.drawEdgeOverlay(e,t)},"drawOverlay"),k=o(function(){n&&s.drawEdgeUnderlay(e,t)},"drawUnderlay"),E=o(function(){var M=arguments.length>0&&arguments[0]!==void 0?arguments[0]:b;s.drawArrowheads(e,t,M)},"drawArrows"),A=o(function(){s.drawElementText(e,t,null,i)},"drawText");e.lineJoin="round";var N=t.pstyle("ghost").value==="yes";if(N){var P=t.pstyle("ghost-offset-x").pfValue,I=t.pstyle("ghost-offset-y").pfValue,D=t.pstyle("ghost-opacity").value,_=x*D;e.translate(P,I),T(_),E(_),e.translate(-P,-I)}else w();k(),T(),E(),C(),A(),r&&e.translate(u.x1,u.y1)}};xge=o(function(t){if(!["overlay","underlay"].includes(t))throw new Error("Invalid state");return function(r,i){if(i.visible()){var n=i.pstyle("".concat(t,"-opacity")).value;if(n!==0){var a=this,s=a.usePaths(),l=i._private.rscratch,u=i.pstyle("".concat(t,"-padding")).pfValue,h=2*u,d=i.pstyle("".concat(t,"-color")).value;r.lineWidth=h,l.edgeType==="self"&&!s?r.lineCap="butt":r.lineCap="round",a.colorStrokeStyle(r,d[0],d[1],d[2],n),a.drawEdgePath(i,r,l.allpts,"solid")}}}},"drawEdgeOverlayUnderlay");eh.drawEdgeOverlay=xge("overlay");eh.drawEdgeUnderlay=xge("underlay");eh.drawEdgePath=function(e,t,r,i){var n=e._private.rscratch,a=t,s,l=!1,u=this.usePaths(),h=e.pstyle("line-dash-pattern").pfValue,d=e.pstyle("line-dash-offset").pfValue;if(u){var f=r.join("$"),p=n.pathCacheKey&&n.pathCacheKey===f;p?(s=t=n.pathCache,l=!0):(s=t=new Path2D,n.pathCacheKey=f,n.pathCache=s)}if(a.setLineDash)switch(i){case"dotted":a.setLineDash([1,1]);break;case"dashed":a.setLineDash(h),a.lineDashOffset=d;break;case"solid":a.setLineDash([]);break}if(!l&&!n.badLine)switch(t.beginPath&&t.beginPath(),t.moveTo(r[0],r[1]),n.edgeType){case"bezier":case"self":case"compound":case"multibezier":for(var m=2;m+3<r.length;m+=4)t.quadraticCurveTo(r[m],r[m+1],r[m+2],r[m+3]);break;case"straight":case"haystack":for(var g=2;g+1<r.length;g+=2)t.lineTo(r[g],r[g+1]);break;case"segments":if(n.isRound){var y=Fs(n.roundCorners),v;try{for(y.s();!(v=y.n()).done;){var x=v.value;oge(t,x)}}catch(T){y.e(T)}finally{y.f()}t.lineTo(r[r.length-2],r[r.length-1])}else for(var b=2;b+1<r.length;b+=2)t.lineTo(r[b],r[b+1]);break}t=a,u?t.stroke(s):t.stroke(),t.setLineDash&&t.setLineDash([])};eh.drawEdgeTrianglePath=function(e,t,r){t.fillStyle=t.strokeStyle;for(var i=e.pstyle("width").pfValue,n=0;n+1<r.length;n+=2){var a=[r[n+2]-r[n],r[n+3]-r[n+1]],s=Math.sqrt(a[0]*a[0]+a[1]*a[1]),l=[a[1]/s,-a[0]/s],u=[l[0]*i/2,l[1]*i/2];t.beginPath(),t.moveTo(r[n]-u[0],r[n+1]-u[1]),t.lineTo(r[n]+u[0],r[n+1]+u[1]),t.lineTo(r[n+2],r[n+3]),t.closePath(),t.fill()}};eh.drawArrowheads=function(e,t,r){var i=t._private.rscratch,n=i.edgeType==="haystack";n||this.drawArrowhead(e,t,"source",i.arrowStartX,i.arrowStartY,i.srcArrowAngle,r),this.drawArrowhead(e,t,"mid-target",i.midX,i.midY,i.midtgtArrowAngle,r),this.drawArrowhead(e,t,"mid-source",i.midX,i.midY,i.midsrcArrowAngle,r),n||this.drawArrowhead(e,t,"target",i.arrowEndX,i.arrowEndY,i.tgtArrowAngle,r)};eh.drawArrowhead=function(e,t,r,i,n,a,s){if(!(isNaN(i)||i==null||isNaN(n)||n==null||isNaN(a)||a==null)){var l=this,u=t.pstyle(r+"-arrow-shape").value;if(u!=="none"){var h=t.pstyle(r+"-arrow-fill").value==="hollow"?"both":"filled",d=t.pstyle(r+"-arrow-fill").value,f=t.pstyle("width").pfValue,p=t.pstyle(r+"-arrow-width"),m=p.value==="match-line"?f:p.pfValue;p.units==="%"&&(m*=f);var g=t.pstyle("opacity").value;s===void 0&&(s=g);var y=e.globalCompositeOperation;(s!==1||d==="hollow")&&(e.globalCompositeOperation="destination-out",l.colorFillStyle(e,255,255,255,1),l.colorStrokeStyle(e,255,255,255,1),l.drawArrowShape(t,e,h,f,u,m,i,n,a),e.globalCompositeOperation=y);var v=t.pstyle(r+"-arrow-color").value;l.colorFillStyle(e,v[0],v[1],v[2],s),l.colorStrokeStyle(e,v[0],v[1],v[2],s),l.drawArrowShape(t,e,d,f,u,m,i,n,a)}}};eh.drawArrowShape=function(e,t,r,i,n,a,s,l,u){var h=this,d=this.usePaths()&&n!=="triangle-cross",f=!1,p,m=t,g={x:s,y:l},y=e.pstyle("arrow-scale").value,v=this.getArrowWidth(i,y),x=h.arrowShapes[n];if(d){var b=h.arrowPathCache=h.arrowPathCache||[],T=Jp(n),w=b[T];w!=null?(p=t=w,f=!0):(p=t=new Path2D,b[T]=p)}f||(t.beginPath&&t.beginPath(),d?x.draw(t,1,0,{x:0,y:0},1):x.draw(t,v,u,g,i),t.closePath&&t.closePath()),t=m,d&&(t.translate(s,l),t.rotate(u),t.scale(v,v)),(r==="filled"||r==="both")&&(d?t.fill(p):t.fill()),(r==="hollow"||r==="both")&&(t.lineWidth=a/(d?v:1),t.lineJoin="miter",d?t.stroke(p):t.stroke()),d&&(t.scale(1/v,1/v),t.rotate(-u),t.translate(-s,-l))};NP={};NP.safeDrawImage=function(e,t,r,i,n,a,s,l,u,h){if(!(n<=0||a<=0||u<=0||h<=0))try{e.drawImage(t,r,i,n,a,s,l,u,h)}catch(d){di(d)}};NP.drawInscribedImage=function(e,t,r,i,n){var a=this,s=r.position(),l=s.x,u=s.y,h=r.cy().style(),d=h.getIndexedStyle.bind(h),f=d(r,"background-fit","value",i),p=d(r,"background-repeat","value",i),m=r.width(),g=r.height(),y=r.padding()*2,v=m+(d(r,"background-width-relative-to","value",i)==="inner"?0:y),x=g+(d(r,"background-height-relative-to","value",i)==="inner"?0:y),b=r._private.rscratch,T=d(r,"background-clip","value",i),w=T==="node",C=d(r,"background-image-opacity","value",i)*n,k=d(r,"background-image-smoothing","value",i),E=r.pstyle("corner-radius").value;E!=="auto"&&(E=r.pstyle("corner-radius").pfValue);var A=t.width||t.cachedW,N=t.height||t.cachedH;(A==null||N==null)&&(document.body.appendChild(t),A=t.cachedW=t.width||t.offsetWidth,N=t.cachedH=t.height||t.offsetHeight,document.body.removeChild(t));var P=A,I=N;if(d(r,"background-width","value",i)!=="auto"&&(d(r,"background-width","units",i)==="%"?P=d(r,"background-width","pfValue",i)*v:P=d(r,"background-width","pfValue",i)),d(r,"background-height","value",i)!=="auto"&&(d(r,"background-height","units",i)==="%"?I=d(r,"background-height","pfValue",i)*x:I=d(r,"background-height","pfValue",i)),!(P===0||I===0)){if(f==="contain"){var D=Math.min(v/P,x/I);P*=D,I*=D}else if(f==="cover"){var D=Math.max(v/P,x/I);P*=D,I*=D}var _=l-v/2,R=d(r,"background-position-x","units",i),M=d(r,"background-position-x","pfValue",i);R==="%"?_+=(v-P)*M:_+=M;var L=d(r,"background-offset-x","units",i),B=d(r,"background-offset-x","pfValue",i);L==="%"?_+=(v-P)*B:_+=B;var O=u-x/2,$=d(r,"background-position-y","units",i),G=d(r,"background-position-y","pfValue",i);$==="%"?O+=(x-I)*G:O+=G;var F=d(r,"background-offset-y","units",i),V=d(r,"background-offset-y","pfValue",i);F==="%"?O+=(x-I)*V:O+=V,b.pathCache&&(_-=l,O-=u,l=0,u=0);var H=e.globalAlpha;e.globalAlpha=C;var j=a.getImgSmoothing(e),U=!1;if(k==="no"&&j?(a.setImgSmoothing(e,!1),U=!0):k==="yes"&&!j&&(a.setImgSmoothing(e,!0),U=!0),p==="no-repeat")w&&(e.save(),b.pathCache?e.clip(b.pathCache):(a.nodeShapes[a.getNodeShape(r)].draw(e,l,u,v,x,E,b),e.clip())),a.safeDrawImage(e,t,0,0,A,N,_,O,P,I),w&&e.restore();else{var Q=e.createPattern(t,p);e.fillStyle=Q,a.nodeShapes[a.getNodeShape(r)].draw(e,l,u,v,x,E,b),e.translate(_,O),e.fill(),e.translate(-_,-O)}e.globalAlpha=H,U&&a.setImgSmoothing(e,j)}};a0={};a0.eleTextBiggerThanMin=function(e,t){if(!t){var r=e.cy().zoom(),i=this.getPixelRatio(),n=Math.ceil(yP(r*i));t=Math.pow(2,n)}var a=e.pstyle("font-size").pfValue*t,s=e.pstyle("min-zoomed-font-size").pfValue;return!(a<s)};a0.drawElementText=function(e,t,r,i,n){var a=arguments.length>5&&arguments[5]!==void 0?arguments[5]:!0,s=this;if(i==null){if(a&&!s.eleTextBiggerThanMin(t))return}else if(i===!1)return;if(t.isNode()){var l=t.pstyle("label");if(!l||!l.value)return;var u=s.getLabelJustification(t);e.textAlign=u,e.textBaseline="bottom"}else{var h=t.element()._private.rscratch.badLine,d=t.pstyle("label"),f=t.pstyle("source-label"),p=t.pstyle("target-label");if(h||(!d||!d.value)&&(!f||!f.value)&&(!p||!p.value))return;e.textAlign="center",e.textBaseline="bottom"}var m=!r,g;r&&(g=r,e.translate(-g.x1,-g.y1)),n==null?(s.drawText(e,t,null,m,a),t.isEdge()&&(s.drawText(e,t,"source",m,a),s.drawText(e,t,"target",m,a))):s.drawText(e,t,n,m,a),r&&e.translate(g.x1,g.y1)};a0.getFontCache=function(e){var t;this.fontCaches=this.fontCaches||[];for(var r=0;r<this.fontCaches.length;r++)if(t=this.fontCaches[r],t.context===e)return t;return t={context:e},this.fontCaches.push(t),t};a0.setupTextStyle=function(e,t){var r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!0,i=t.pstyle("font-style").strValue,n=t.pstyle("font-size").pfValue+"px",a=t.pstyle("font-family").strValue,s=t.pstyle("font-weight").strValue,l=r?t.effectiveOpacity()*t.pstyle("text-opacity").value:1,u=t.pstyle("text-outline-opacity").value*l,h=t.pstyle("color").value,d=t.pstyle("text-outline-color").value;e.font=i+" "+s+" "+n+" "+a,e.lineJoin="round",this.colorFillStyle(e,h[0],h[1],h[2],l),this.colorStrokeStyle(e,d[0],d[1],d[2],u)};o(Zst,"circle");o(I0e,"roundRect");a0.getTextAngle=function(e,t){var r,i=e._private,n=i.rscratch,a=t?t+"-":"",s=e.pstyle(a+"text-rotation");if(s.strValue==="autorotate"){var l=Ps(n,"labelAngle",t);r=e.isEdge()?l:0}else s.strValue==="none"?r=0:r=s.pfValue;return r};a0.drawText=function(e,t,r){var i=arguments.length>3&&arguments[3]!==void 0?arguments[3]:!0,n=arguments.length>4&&arguments[4]!==void 0?arguments[4]:!0,a=t._private,s=a.rscratch,l=n?t.effectiveOpacity():1;if(!(n&&(l===0||t.pstyle("text-opacity").value===0))){r==="main"&&(r=null);var u=Ps(s,"labelX",r),h=Ps(s,"labelY",r),d,f,p=this.getLabelText(t,r);if(p!=null&&p!==""&&!isNaN(u)&&!isNaN(h)){this.setupTextStyle(e,t,n);var m=r?r+"-":"",g=Ps(s,"labelWidth",r),y=Ps(s,"labelHeight",r),v=t.pstyle(m+"text-margin-x").pfValue,x=t.pstyle(m+"text-margin-y").pfValue,b=t.isEdge(),T=t.pstyle("text-halign").value,w=t.pstyle("text-valign").value;b&&(T="center",w="center"),u+=v,h+=x;var C;switch(i?C=this.getTextAngle(t,r):C=0,C!==0&&(d=u,f=h,e.translate(d,f),e.rotate(C),u=0,h=0),w){case"top":break;case"center":h+=y/2;break;case"bottom":h+=y;break}var k=t.pstyle("text-background-opacity").value,E=t.pstyle("text-border-opacity").value,A=t.pstyle("text-border-width").pfValue,N=t.pstyle("text-background-padding").pfValue,P=t.pstyle("text-background-shape").strValue,I=P==="round-rectangle"||P==="roundrectangle",D=P==="circle",_=2;if(k>0||A>0&&E>0){var R=e.fillStyle,M=e.strokeStyle,L=e.lineWidth,B=t.pstyle("text-background-color").value,O=t.pstyle("text-border-color").value,$=t.pstyle("text-border-style").value,G=k>0,F=A>0&&E>0,V=u-N;switch(T){case"left":V-=g;break;case"center":V-=g/2;break}var H=h-y-N,j=g+2*N,U=y+2*N;if(G&&(e.fillStyle="rgba(".concat(B[0],",").concat(B[1],",").concat(B[2],",").concat(k*l,")")),F&&(e.strokeStyle="rgba(".concat(O[0],",").concat(O[1],",").concat(O[2],",").concat(E*l,")"),e.lineWidth=A,e.setLineDash))switch($){case"dotted":e.setLineDash([1,1]);break;case"dashed":e.setLineDash([4,2]);break;case"double":e.lineWidth=A/4,e.setLineDash([]);break;case"solid":default:e.setLineDash([]);break}if(I?(e.beginPath(),I0e(e,V,H,j,U,_)):D?(e.beginPath(),Zst(e,V,H,j,U)):(e.beginPath(),e.rect(V,H,j,U)),G&&e.fill(),F&&e.stroke(),F&&$==="double"){var Q=A/2;e.beginPath(),I?I0e(e,V+Q,H+Q,j-2*Q,U-2*Q,_):e.rect(V+Q,H+Q,j-2*Q,U-2*Q),e.stroke()}e.fillStyle=R,e.strokeStyle=M,e.lineWidth=L,e.setLineDash&&e.setLineDash([])}var Y=2*t.pstyle("text-outline-width").pfValue;if(Y>0&&(e.lineWidth=Y),t.pstyle("text-wrap").value==="wrap"){var ae=Ps(s,"labelWrapCachedLines",r),J=Ps(s,"labelLineHeight",r),te=g/2,re=this.getLabelJustification(t);switch(re==="auto"||(T==="left"?re==="left"?u+=-g:re==="center"&&(u+=-te):T==="center"?re==="left"?u+=-te:re==="right"&&(u+=te):T==="right"&&(re==="center"?u+=te:re==="right"&&(u+=g))),w){case"top":h-=(ae.length-1)*J;break;case"center":case"bottom":h-=(ae.length-1)*J;break}for(var ee=0;ee<ae.length;ee++)Y>0&&e.strokeText(ae[ee],u,h),e.fillText(ae[ee],u,h),h+=J}else Y>0&&e.strokeText(p,u,h),e.fillText(p,u,h);C!==0&&(e.rotate(-C),e.translate(-d,-f))}}};Jd={};Jd.drawNode=function(e,t,r){var i=arguments.length>3&&arguments[3]!==void 0?arguments[3]:!0,n=arguments.length>4&&arguments[4]!==void 0?arguments[4]:!0,a=arguments.length>5&&arguments[5]!==void 0?arguments[5]:!0,s=this,l,u,h=t._private,d=h.rscratch,f=t.position();if(!(!Ot(f.x)||!Ot(f.y))&&!(a&&!t.visible())){var p=a?t.effectiveOpacity():1,m=s.usePaths(),g,y=!1,v=t.padding();l=t.width()+2*v,u=t.height()+2*v;var x;r&&(x=r,e.translate(-x.x1,-x.y1));for(var b=t.pstyle("background-image"),T=b.value,w=new Array(T.length),C=new Array(T.length),k=0,E=0;E<T.length;E++){var A=T[E],N=w[E]=A!=null&&A!=="none";if(N){var P=t.cy().style().getIndexedStyle(t,"background-image-crossorigin","value",E);k++,C[E]=s.getCachedImage(A,P,function(){h.backgroundTimestamp=Date.now(),t.emitAndNotify("background")})}}var I=t.pstyle("background-blacken").value,D=t.pstyle("border-width").pfValue,_=t.pstyle("background-opacity").value*p,R=t.pstyle("border-color").value,M=t.pstyle("border-style").value,L=t.pstyle("border-join").value,B=t.pstyle("border-cap").value,O=t.pstyle("border-position").value,$=t.pstyle("border-dash-pattern").pfValue,G=t.pstyle("border-dash-offset").pfValue,F=t.pstyle("border-opacity").value*p,V=t.pstyle("outline-width").pfValue,H=t.pstyle("outline-color").value,j=t.pstyle("outline-style").value,U=t.pstyle("outline-opacity").value*p,Q=t.pstyle("outline-offset").value,Y=t.pstyle("corner-radius").value;Y!=="auto"&&(Y=t.pstyle("corner-radius").pfValue);var ae=o(function(){var ie=arguments.length>0&&arguments[0]!==void 0?arguments[0]:_;s.eleFillStyle(e,t,ie)},"setupShapeColor"),J=o(function(){var ie=arguments.length>0&&arguments[0]!==void 0?arguments[0]:F;s.colorStrokeStyle(e,R[0],R[1],R[2],ie)},"setupBorderColor"),te=o(function(){var ie=arguments.length>0&&arguments[0]!==void 0?arguments[0]:U;s.colorStrokeStyle(e,H[0],H[1],H[2],ie)},"setupOutlineColor"),re=o(function(ie,fe,W,ce){var K=s.nodePathCache=s.nodePathCache||[],Re=nme(W==="polygon"?W+","+ce.join(","):W,""+fe,""+ie,""+Y),xe=K[Re],Oe,be=!1;return xe!=null?(Oe=xe,be=!0,d.pathCache=Oe):(Oe=new Path2D,K[Re]=d.pathCache=Oe),{path:Oe,cacheHit:be}},"getPath"),ee=t.pstyle("shape").strValue,Te=t.pstyle("shape-polygon-points").pfValue;if(m){e.translate(f.x,f.y);var ue=re(l,u,ee,Te);g=ue.path,y=ue.cacheHit}var De=o(function(){if(!y){var ie=f;m&&(ie={x:0,y:0}),s.nodeShapes[s.getNodeShape(t)].draw(g||e,ie.x,ie.y,l,u,Y,d)}m?e.fill(g):e.fill()},"drawShape"),Ie=o(function(){for(var ie=arguments.length>0&&arguments[0]!==void 0?arguments[0]:p,fe=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!0,W=h.backgrounding,ce=0,K=0;K<C.length;K++){var Re=t.cy().style().getIndexedStyle(t,"background-image-containment","value",K);if(fe&&Re==="over"||!fe&&Re==="inside"){ce++;continue}w[K]&&C[K].complete&&!C[K].error&&(ce++,s.drawInscribedImage(e,C[K],t,K,ie))}h.backgrounding=ce!==k,W!==h.backgrounding&&t.updateStyle(!1)},"drawImages"),Ee=o(function(){var ie=arguments.length>0&&arguments[0]!==void 0?arguments[0]:!1,fe=arguments.length>1&&arguments[1]!==void 0?arguments[1]:p;s.hasPie(t)&&(s.drawPie(e,t,fe),ie&&(m||s.nodeShapes[s.getNodeShape(t)].draw(e,f.x,f.y,l,u,Y,d)))},"drawPie"),we=o(function(){var ie=arguments.length>0&&arguments[0]!==void 0?arguments[0]:!1,fe=arguments.length>1&&arguments[1]!==void 0?arguments[1]:p;s.hasStripe(t)&&(e.save(),m?e.clip(d.pathCache):(s.nodeShapes[s.getNodeShape(t)].draw(e,f.x,f.y,l,u,Y,d),e.clip()),s.drawStripe(e,t,fe),e.restore(),ie&&(m||s.nodeShapes[s.getNodeShape(t)].draw(e,f.x,f.y,l,u,Y,d)))},"drawStripe"),Me=o(function(){var ie=arguments.length>0&&arguments[0]!==void 0?arguments[0]:p,fe=(I>0?I:-I)*ie,W=I>0?0:255;I!==0&&(s.colorFillStyle(e,W,W,W,fe),m?e.fill(g):e.fill())},"darken"),$e=o(function(){if(D>0){if(e.lineWidth=D,e.lineCap=B,e.lineJoin=L,e.setLineDash)switch(M){case"dotted":e.setLineDash([1,1]);break;case"dashed":e.setLineDash($),e.lineDashOffset=G;break;case"solid":case"double":e.setLineDash([]);break}if(O!=="center"){if(e.save(),e.lineWidth*=2,O==="inside")m?e.clip(g):e.clip();else{var ie=new Path2D;ie.rect(-l/2-D,-u/2-D,l+2*D,u+2*D),ie.addPath(g),e.clip(ie,"evenodd")}m?e.stroke(g):e.stroke(),e.restore()}else m?e.stroke(g):e.stroke();if(M==="double"){e.lineWidth=D/3;var fe=e.globalCompositeOperation;e.globalCompositeOperation="destination-out",m?e.stroke(g):e.stroke(),e.globalCompositeOperation=fe}e.setLineDash&&e.setLineDash([])}},"drawBorder"),de=o(function(){if(V>0){if(e.lineWidth=V,e.lineCap="butt",e.setLineDash)switch(j){case"dotted":e.setLineDash([1,1]);break;case"dashed":e.setLineDash([4,2]);break;case"solid":case"double":e.setLineDash([]);break}var ie=f;m&&(ie={x:0,y:0});var fe=s.getNodeShape(t),W=D;O==="inside"&&(W=0),O==="outside"&&(W*=2);var ce=(l+W+(V+Q))/l,K=(u+W+(V+Q))/u,Re=l*ce,xe=u*K,Oe=s.nodeShapes[fe].points,be;if(m){var Be=re(Re,xe,fe,Oe);be=Be.path}if(fe==="ellipse")s.drawEllipsePath(be||e,ie.x,ie.y,Re,xe);else if(["round-diamond","round-heptagon","round-hexagon","round-octagon","round-pentagon","round-polygon","round-triangle","round-tag"].includes(fe)){var Ae=0,Ve=0,Pe=0;fe==="round-diamond"?Ae=(W+Q+V)*1.4:fe==="round-heptagon"?(Ae=(W+Q+V)*1.075,Pe=-(W/2+Q+V)/35):fe==="round-hexagon"?Ae=(W+Q+V)*1.12:fe==="round-pentagon"?(Ae=(W+Q+V)*1.13,Pe=-(W/2+Q+V)/15):fe==="round-tag"?(Ae=(W+Q+V)*1.12,Ve=(W/2+V+Q)*.07):fe==="round-triangle"&&(Ae=(W+Q+V)*(Math.PI/2),Pe=-(W+Q/2+V)/Math.PI),Ae!==0&&(ce=(l+Ae)/l,Re=l*ce,["round-hexagon","round-tag"].includes(fe)||(K=(u+Ae)/u,xe=u*K)),Y=Y==="auto"?pme(Re,xe):Y;for(var Ye=Re/2,le=xe/2,st=Y+(W+V+Q)/2,me=new Array(Oe.length/2),ot=new Array(Oe.length/2),kt=0;kt<Oe.length/2;kt++)me[kt]={x:ie.x+Ve+Ye*Oe[kt*2],y:ie.y+Pe+le*Oe[kt*2+1]};var Gt,Tt,Et,yt,oe=me.length;for(Tt=me[oe-1],Gt=0;Gt<oe;Gt++)Et=me[Gt%oe],yt=me[(Gt+1)%oe],ot[Gt]=LP(Tt,Et,yt,st),Tt=Et,Et=yt;s.drawRoundPolygonPath(be||e,ie.x+Ve,ie.y+Pe,l*ce,u*K,Oe,ot)}else if(["roundrectangle","round-rectangle"].includes(fe))Y=Y==="auto"?Hd(Re,xe):Y,s.drawRoundRectanglePath(be||e,ie.x,ie.y,Re,xe,Y+(W+V+Q)/2);else if(["cutrectangle","cut-rectangle"].includes(fe))Y=Y==="auto"?bP():Y,s.drawCutRectanglePath(be||e,ie.x,ie.y,Re,xe,null,Y+(W+V+Q)/4);else if(["bottomroundrectangle","bottom-round-rectangle"].includes(fe))Y=Y==="auto"?Hd(Re,xe):Y,s.drawBottomRoundRectanglePath(be||e,ie.x,ie.y,Re,xe,Y+(W+V+Q)/2);else if(fe==="barrel")s.drawBarrelPath(be||e,ie.x,ie.y,Re,xe);else if(fe.startsWith("polygon")||["rhomboid","right-rhomboid","round-tag","tag","vee"].includes(fe)){var ht=(W+V+Q)/l;Oe=B3(F3(Oe,ht)),s.drawPolygonPath(be||e,ie.x,ie.y,l,u,Oe)}else{var gt=(W+V+Q)/l;Oe=B3(F3(Oe,-gt)),s.drawPolygonPath(be||e,ie.x,ie.y,l,u,Oe)}if(m?e.stroke(be):e.stroke(),j==="double"){e.lineWidth=W/3;var et=e.globalCompositeOperation;e.globalCompositeOperation="destination-out",m?e.stroke(be):e.stroke(),e.globalCompositeOperation=et}e.setLineDash&&e.setLineDash([])}},"drawOutline"),rt=o(function(){n&&s.drawNodeOverlay(e,t,f,l,u)},"drawOverlay"),ke=o(function(){n&&s.drawNodeUnderlay(e,t,f,l,u)},"drawUnderlay"),Fe=o(function(){s.drawElementText(e,t,null,i)},"drawText"),He=t.pstyle("ghost").value==="yes";if(He){var at=t.pstyle("ghost-offset-x").pfValue,qe=t.pstyle("ghost-offset-y").pfValue,Ue=t.pstyle("ghost-opacity").value,ye=Ue*p;e.translate(at,qe),te(),de(),ae(Ue*_),De(),Ie(ye,!0),J(Ue*F),$e(),Ee(I!==0||D!==0),we(I!==0||D!==0),Ie(ye,!1),Me(ye),e.translate(-at,-qe)}m&&e.translate(-f.x,-f.y),ke(),m&&e.translate(f.x,f.y),te(),de(),ae(),De(),Ie(p,!0),J(),$e(),Ee(I!==0||D!==0),we(I!==0||D!==0),Ie(p,!1),Me(),m&&e.translate(-f.x,-f.y),Fe(),rt(),r&&e.translate(x.x1,x.y1)}};bge=o(function(t){if(!["overlay","underlay"].includes(t))throw new Error("Invalid state");return function(r,i,n,a,s){var l=this;if(i.visible()){var u=i.pstyle("".concat(t,"-padding")).pfValue,h=i.pstyle("".concat(t,"-opacity")).value,d=i.pstyle("".concat(t,"-color")).value,f=i.pstyle("".concat(t,"-shape")).value,p=i.pstyle("".concat(t,"-corner-radius")).value;if(h>0){if(n=n||i.position(),a==null||s==null){var m=i.padding();a=i.width()+2*m,s=i.height()+2*m}l.colorFillStyle(r,d[0],d[1],d[2],h),l.nodeShapes[f].draw(r,n.x,n.y,a+u*2,s+u*2,p),r.fill()}}}},"drawNodeOverlayUnderlay");Jd.drawNodeOverlay=bge("overlay");Jd.drawNodeUnderlay=bge("underlay");Jd.hasPie=function(e){return e=e[0],e._private.hasPie};Jd.hasStripe=function(e){return e=e[0],e._private.hasStripe};Jd.drawPie=function(e,t,r,i){t=t[0],i=i||t.position();var n=t.cy().style(),a=t.pstyle("pie-size"),s=t.pstyle("pie-hole"),l=t.pstyle("pie-start-angle").pfValue,u=i.x,h=i.y,d=t.width(),f=t.height(),p=Math.min(d,f)/2,m,g=0,y=this.usePaths();if(y&&(u=0,h=0),a.units==="%"?p=p*a.pfValue:a.pfValue!==void 0&&(p=a.pfValue/2),s.units==="%"?m=p*s.pfValue:s.pfValue!==void 0&&(m=s.pfValue/2),!(m>=p))for(var v=1;v<=n.pieBackgroundN;v++){var x=t.pstyle("pie-"+v+"-background-size").value,b=t.pstyle("pie-"+v+"-background-color").value,T=t.pstyle("pie-"+v+"-background-opacity").value*r,w=x/100;w+g>1&&(w=1-g);var C=1.5*Math.PI+2*Math.PI*g;C+=l;var k=2*Math.PI*w,E=C+k;x===0||g>=1||g+w>1||(m===0?(e.beginPath(),e.moveTo(u,h),e.arc(u,h,p,C,E),e.closePath()):(e.beginPath(),e.arc(u,h,p,C,E),e.arc(u,h,m,E,C,!0),e.closePath()),this.colorFillStyle(e,b[0],b[1],b[2],T),e.fill(),g+=w)}};Jd.drawStripe=function(e,t,r,i){t=t[0],i=i||t.position();var n=t.cy().style(),a=i.x,s=i.y,l=t.width(),u=t.height(),h=0,d=this.usePaths();e.save();var f=t.pstyle("stripe-direction").value,p=t.pstyle("stripe-size");switch(f){case"vertical":break;case"righward":e.rotate(-Math.PI/2);break}var m=l,g=u;p.units==="%"?(m=m*p.pfValue,g=g*p.pfValue):p.pfValue!==void 0&&(m=p.pfValue,g=p.pfValue),d&&(a=0,s=0),s-=m/2,a-=g/2;for(var y=1;y<=n.stripeBackgroundN;y++){var v=t.pstyle("stripe-"+y+"-background-size").value,x=t.pstyle("stripe-"+y+"-background-color").value,b=t.pstyle("stripe-"+y+"-background-opacity").value*r,T=v/100;T+h>1&&(T=1-h),!(v===0||h>=1||h+T>1)&&(e.beginPath(),e.rect(a,s+g*h,m,g*T),e.closePath(),this.colorFillStyle(e,x[0],x[1],x[2],b),e.fill(),h+=T)}e.restore()};ns={},Qst=100;ns.getPixelRatio=function(){var e=this.data.contexts[0];if(this.forcedPixelRatio!=null)return this.forcedPixelRatio;var t=this.cy.window(),r=e.backingStorePixelRatio||e.webkitBackingStorePixelRatio||e.mozBackingStorePixelRatio||e.msBackingStorePixelRatio||e.oBackingStorePixelRatio||e.backingStorePixelRatio||1;return(t.devicePixelRatio||1)/r};ns.paintCache=function(e){for(var t=this.paintCaches=this.paintCaches||[],r=!0,i,n=0;n<t.length;n++)if(i=t[n],i.context===e){r=!1;break}return r&&(i={context:e},t.push(i)),i};ns.createGradientStyleFor=function(e,t,r,i,n){var a,s=this.usePaths(),l=r.pstyle(t+"-gradient-stop-colors").value,u=r.pstyle(t+"-gradient-stop-positions").pfValue;if(i==="radial-gradient")if(r.isEdge()){var h=r.sourceEndpoint(),d=r.targetEndpoint(),f=r.midpoint(),p=e0(h,f),m=e0(d,f);a=e.createRadialGradient(f.x,f.y,0,f.x,f.y,Math.max(p,m))}else{var g=s?{x:0,y:0}:r.position(),y=r.paddedWidth(),v=r.paddedHeight();a=e.createRadialGradient(g.x,g.y,0,g.x,g.y,Math.max(y,v))}else if(r.isEdge()){var x=r.sourceEndpoint(),b=r.targetEndpoint();a=e.createLinearGradient(x.x,x.y,b.x,b.y)}else{var T=s?{x:0,y:0}:r.position(),w=r.paddedWidth(),C=r.paddedHeight(),k=w/2,E=C/2,A=r.pstyle("background-gradient-direction").value;switch(A){case"to-bottom":a=e.createLinearGradient(T.x,T.y-E,T.x,T.y+E);break;case"to-top":a=e.createLinearGradient(T.x,T.y+E,T.x,T.y-E);break;case"to-left":a=e.createLinearGradient(T.x+k,T.y,T.x-k,T.y);break;case"to-right":a=e.createLinearGradient(T.x-k,T.y,T.x+k,T.y);break;case"to-bottom-right":case"to-right-bottom":a=e.createLinearGradient(T.x-k,T.y-E,T.x+k,T.y+E);break;case"to-top-right":case"to-right-top":a=e.createLinearGradient(T.x-k,T.y+E,T.x+k,T.y-E);break;case"to-bottom-left":case"to-left-bottom":a=e.createLinearGradient(T.x+k,T.y-E,T.x-k,T.y+E);break;case"to-top-left":case"to-left-top":a=e.createLinearGradient(T.x+k,T.y+E,T.x-k,T.y-E);break}}if(!a)return null;for(var N=u.length===l.length,P=l.length,I=0;I<P;I++)a.addColorStop(N?u[I]:I/(P-1),"rgba("+l[I][0]+","+l[I][1]+","+l[I][2]+","+n+")");return a};ns.gradientFillStyle=function(e,t,r,i){var n=this.createGradientStyleFor(e,"background",t,r,i);if(!n)return null;e.fillStyle=n};ns.colorFillStyle=function(e,t,r,i,n){e.fillStyle="rgba("+t+","+r+","+i+","+n+")"};ns.eleFillStyle=function(e,t,r){var i=t.pstyle("background-fill").value;if(i==="linear-gradient"||i==="radial-gradient")this.gradientFillStyle(e,t,i,r);else{var n=t.pstyle("background-color").value;this.colorFillStyle(e,n[0],n[1],n[2],r)}};ns.gradientStrokeStyle=function(e,t,r,i){var n=this.createGradientStyleFor(e,"line",t,r,i);if(!n)return null;e.strokeStyle=n};ns.colorStrokeStyle=function(e,t,r,i,n){e.strokeStyle="rgba("+t+","+r+","+i+","+n+")"};ns.eleStrokeStyle=function(e,t,r){var i=t.pstyle("line-fill").value;if(i==="linear-gradient"||i==="radial-gradient")this.gradientStrokeStyle(e,t,i,r);else{var n=t.pstyle("line-color").value;this.colorStrokeStyle(e,n[0],n[1],n[2],r)}};ns.matchCanvasSize=function(e){var t=this,r=t.data,i=t.findContainerClientCoords(),n=i[2],a=i[3],s=t.getPixelRatio(),l=t.motionBlurPxRatio;(e===t.data.bufferCanvases[t.MOTIONBLUR_BUFFER_NODE]||e===t.data.bufferCanvases[t.MOTIONBLUR_BUFFER_DRAG])&&(s=l);var u=n*s,h=a*s,d;if(!(u===t.canvasWidth&&h===t.canvasHeight)){t.fontCaches=null;var f=r.canvasContainer;f.style.width=n+"px",f.style.height=a+"px";for(var p=0;p<t.CANVAS_LAYERS;p++)d=r.canvases[p],d.width=u,d.height=h,d.style.width=n+"px",d.style.height=a+"px";for(var p=0;p<t.BUFFER_COUNT;p++)d=r.bufferCanvases[p],d.width=u,d.height=h,d.style.width=n+"px",d.style.height=a+"px";t.textureMult=1,s<=1&&(d=r.bufferCanvases[t.TEXTURE_BUFFER],t.textureMult=2,d.width=u*t.textureMult,d.height=h*t.textureMult),t.canvasWidth=u,t.canvasHeight=h,t.pixelRatio=s}};ns.renderTo=function(e,t,r,i){this.render({forcedContext:e,forcedZoom:t,forcedPan:r,drawAllLayers:!0,forcedPxRatio:i})};ns.clearCanvas=function(){var e=this,t=e.data;function r(i){i.clearRect(0,0,e.canvasWidth,e.canvasHeight)}o(r,"clear"),r(t.contexts[e.NODE]),r(t.contexts[e.DRAG])};ns.render=function(e){var t=this;e=e||lme();var r=t.cy,i=e.forcedContext,n=e.drawAllLayers,a=e.drawOnlyNodeLayer,s=e.forcedZoom,l=e.forcedPan,u=e.forcedPxRatio===void 0?this.getPixelRatio():e.forcedPxRatio,h=t.data,d=h.canvasNeedsRedraw,f=t.textureOnViewport&&!i&&(t.pinching||t.hoverData.dragging||t.swipePanning||t.data.wheelZooming),p=e.motionBlur!==void 0?e.motionBlur:t.motionBlur,m=t.motionBlurPxRatio,g=r.hasCompoundNodes(),y=t.hoverData.draggingEles,v=!!(t.hoverData.selecting||t.touchData.selecting);p=p&&!i&&t.motionBlurEnabled&&!v;var x=p;i||(t.prevPxRatio!==u&&(t.invalidateContainerClientCoordsCache(),t.matchCanvasSize(t.container),t.redrawHint("eles",!0),t.redrawHint("drag",!0)),t.prevPxRatio=u),!i&&t.motionBlurTimeout&&clearTimeout(t.motionBlurTimeout),p&&(t.mbFrames==null&&(t.mbFrames=0),t.mbFrames++,t.mbFrames<3&&(x=!1),t.mbFrames>t.minMbLowQualFrames&&(t.motionBlurPxRatio=t.mbPxRBlurry)),t.clearingMotionBlur&&(t.motionBlurPxRatio=1),t.textureDrawLastFrame&&!f&&(d[t.NODE]=!0,d[t.SELECT_BOX]=!0);var b=r.style(),T=r.zoom(),w=s!==void 0?s:T,C=r.pan(),k={x:C.x,y:C.y},E={zoom:T,pan:{x:C.x,y:C.y}},A=t.prevViewport,N=A===void 0||E.zoom!==A.zoom||E.pan.x!==A.pan.x||E.pan.y!==A.pan.y;!N&&!(y&&!g)&&(t.motionBlurPxRatio=1),l&&(k=l),w*=u,k.x*=u,k.y*=u;var P=t.getCachedZSortedEles();function I(J,te,re,ee,Te){var ue=J.globalCompositeOperation;J.globalCompositeOperation="destination-out",t.colorFillStyle(J,255,255,255,t.motionBlurTransparency),J.fillRect(te,re,ee,Te),J.globalCompositeOperation=ue}o(I,"mbclear");function D(J,te){var re,ee,Te,ue;!t.clearingMotionBlur&&(J===h.bufferContexts[t.MOTIONBLUR_BUFFER_NODE]||J===h.bufferContexts[t.MOTIONBLUR_BUFFER_DRAG])?(re={x:C.x*m,y:C.y*m},ee=T*m,Te=t.canvasWidth*m,ue=t.canvasHeight*m):(re=k,ee=w,Te=t.canvasWidth,ue=t.canvasHeight),J.setTransform(1,0,0,1,0,0),te==="motionBlur"?I(J,0,0,Te,ue):!i&&(te===void 0||te)&&J.clearRect(0,0,Te,ue),n||(J.translate(re.x,re.y),J.scale(ee,ee)),l&&J.translate(l.x,l.y),s&&J.scale(s,s)}if(o(D,"setContextTransform"),f||(t.textureDrawLastFrame=!1),f){if(t.textureDrawLastFrame=!0,!t.textureCache){t.textureCache={},t.textureCache.bb=r.mutableElements().boundingBox(),t.textureCache.texture=t.data.bufferCanvases[t.TEXTURE_BUFFER];var _=t.data.bufferContexts[t.TEXTURE_BUFFER];_.setTransform(1,0,0,1,0,0),_.clearRect(0,0,t.canvasWidth*t.textureMult,t.canvasHeight*t.textureMult),t.render({forcedContext:_,drawOnlyNodeLayer:!0,forcedPxRatio:u*t.textureMult});var E=t.textureCache.viewport={zoom:r.zoom(),pan:r.pan(),width:t.canvasWidth,height:t.canvasHeight};E.mpan={x:(0-E.pan.x)/E.zoom,y:(0-E.pan.y)/E.zoom}}d[t.DRAG]=!1,d[t.NODE]=!1;var R=h.contexts[t.NODE],M=t.textureCache.texture,E=t.textureCache.viewport;R.setTransform(1,0,0,1,0,0),p?I(R,0,0,E.width,E.height):R.clearRect(0,0,E.width,E.height);var L=b.core("outside-texture-bg-color").value,B=b.core("outside-texture-bg-opacity").value;t.colorFillStyle(R,L[0],L[1],L[2],B),R.fillRect(0,0,E.width,E.height);var T=r.zoom();D(R,!1),R.clearRect(E.mpan.x,E.mpan.y,E.width/E.zoom/u,E.height/E.zoom/u),R.drawImage(M,E.mpan.x,E.mpan.y,E.width/E.zoom/u,E.height/E.zoom/u)}else t.textureOnViewport&&!i&&(t.textureCache=null);var O=r.extent(),$=t.pinching||t.hoverData.dragging||t.swipePanning||t.data.wheelZooming||t.hoverData.draggingEles||t.cy.animated(),G=t.hideEdgesOnViewport&&$,F=[];if(F[t.NODE]=!d[t.NODE]&&p&&!t.clearedForMotionBlur[t.NODE]||t.clearingMotionBlur,F[t.NODE]&&(t.clearedForMotionBlur[t.NODE]=!0),F[t.DRAG]=!d[t.DRAG]&&p&&!t.clearedForMotionBlur[t.DRAG]||t.clearingMotionBlur,F[t.DRAG]&&(t.clearedForMotionBlur[t.DRAG]=!0),d[t.NODE]||n||a||F[t.NODE]){var V=p&&!F[t.NODE]&&m!==1,R=i||(V?t.data.bufferContexts[t.MOTIONBLUR_BUFFER_NODE]:h.contexts[t.NODE]),H=p&&!V?"motionBlur":void 0;D(R,H),G?t.drawCachedNodes(R,P.nondrag,u,O):t.drawLayeredElements(R,P.nondrag,u,O),t.debug&&t.drawDebugPoints(R,P.nondrag),!n&&!p&&(d[t.NODE]=!1)}if(!a&&(d[t.DRAG]||n||F[t.DRAG])){var V=p&&!F[t.DRAG]&&m!==1,R=i||(V?t.data.bufferContexts[t.MOTIONBLUR_BUFFER_DRAG]:h.contexts[t.DRAG]);D(R,p&&!V?"motionBlur":void 0),G?t.drawCachedNodes(R,P.drag,u,O):t.drawCachedElements(R,P.drag,u,O),t.debug&&t.drawDebugPoints(R,P.drag),!n&&!p&&(d[t.DRAG]=!1)}if(this.drawSelectionRectangle(e,D),p&&m!==1){var j=h.contexts[t.NODE],U=t.data.bufferCanvases[t.MOTIONBLUR_BUFFER_NODE],Q=h.contexts[t.DRAG],Y=t.data.bufferCanvases[t.MOTIONBLUR_BUFFER_DRAG],ae=o(function(te,re,ee){te.setTransform(1,0,0,1,0,0),ee||!x?te.clearRect(0,0,t.canvasWidth,t.canvasHeight):I(te,0,0,t.canvasWidth,t.canvasHeight);var Te=m;te.drawImage(re,0,0,t.canvasWidth*Te,t.canvasHeight*Te,0,0,t.canvasWidth,t.canvasHeight)},"drawMotionBlur");(d[t.NODE]||F[t.NODE])&&(ae(j,U,F[t.NODE]),d[t.NODE]=!1),(d[t.DRAG]||F[t.DRAG])&&(ae(Q,Y,F[t.DRAG]),d[t.DRAG]=!1)}t.prevViewport=E,t.clearingMotionBlur&&(t.clearingMotionBlur=!1,t.motionBlurCleared=!0,t.motionBlur=!0),p&&(t.motionBlurTimeout=setTimeout(function(){t.motionBlurTimeout=null,t.clearedForMotionBlur[t.NODE]=!1,t.clearedForMotionBlur[t.DRAG]=!1,t.motionBlur=!1,t.clearingMotionBlur=!f,t.mbFrames=0,d[t.NODE]=!0,d[t.DRAG]=!0,t.redraw()},Qst)),i||r.emit("render")};ns.drawSelectionRectangle=function(e,t){var r=this,i=r.cy,n=r.data,a=i.style(),s=e.drawOnlyNodeLayer,l=e.drawAllLayers,u=n.canvasNeedsRedraw,h=e.forcedContext;if(r.showFps||!s&&u[r.SELECT_BOX]&&!l){var d=h||n.contexts[r.SELECT_BOX];if(t(d),r.selection[4]==1&&(r.hoverData.selecting||r.touchData.selecting)){var f=r.cy.zoom(),p=a.core("selection-box-border-width").value/f;d.lineWidth=p,d.fillStyle="rgba("+a.core("selection-box-color").value[0]+","+a.core("selection-box-color").value[1]+","+a.core("selection-box-color").value[2]+","+a.core("selection-box-opacity").value+")",d.fillRect(r.selection[0],r.selection[1],r.selection[2]-r.selection[0],r.selection[3]-r.selection[1]),p>0&&(d.strokeStyle="rgba("+a.core("selection-box-border-color").value[0]+","+a.core("selection-box-border-color").value[1]+","+a.core("selection-box-border-color").value[2]+","+a.core("selection-box-opacity").value+")",d.strokeRect(r.selection[0],r.selection[1],r.selection[2]-r.selection[0],r.selection[3]-r.selection[1]))}if(n.bgActivePosistion&&!r.hoverData.selecting){var f=r.cy.zoom(),m=n.bgActivePosistion;d.fillStyle="rgba("+a.core("active-bg-color").value[0]+","+a.core("active-bg-color").value[1]+","+a.core("active-bg-color").value[2]+","+a.core("active-bg-opacity").value+")",d.beginPath(),d.arc(m.x,m.y,a.core("active-bg-size").pfValue/f,0,2*Math.PI),d.fill()}var g=r.lastRedrawTime;if(r.showFps&&g){g=Math.round(g);var y=Math.round(1e3/g),v="1 frame = "+g+" ms = "+y+" fps";if(d.setTransform(1,0,0,1,0,0),d.fillStyle="rgba(255, 0, 0, 0.75)",d.strokeStyle="rgba(255, 0, 0, 0.75)",d.font="30px Arial",!Bb){var x=d.measureText(v);Bb=x.actualBoundingBoxAscent}d.fillText(v,0,Bb);var b=60;d.strokeRect(0,Bb+10,250,20),d.fillRect(0,Bb+10,250*Math.min(y/b,1),20)}l||(u[r.SELECT_BOX]=!1)}};o(O0e,"compileShader");o(Jst,"createProgram");o(eot,"createTextureCanvas");o(IP,"getEffectivePanZoom");o(tot,"getEffectiveZoom");o(rot,"modelToRenderedPosition");o(iot,"isSimpleShape");o(not,"arrayEqual");o(Hp,"toWebGLColor");o(n1,"indexToVec4");o(aot,"vec4ToIndex");o(sot,"createTexture");o(Tge,"getTypeInfo");o(Cge,"createTypedArray");o(oot,"createTypedArrayView");o(lot,"createBufferStaticDraw");o(Oc,"createBufferDynamicDraw");o(cot,"create3x3MatrixBufferDynamicDraw");o(uot,"createPickingFrameBuffer");P0e=typeof Float32Array<"u"?Float32Array:Array;Math.hypot||(Math.hypot=function(){for(var e=0,t=arguments.length;t--;)e+=arguments[t]*arguments[t];return Math.sqrt(e)});o(FO,"create");o(B0e,"identity");o(hot,"multiply");o(M3,"translate");o(F0e,"rotate");o(sP,"scale");o(dot,"projection");fot=(function(){function e(t,r,i,n){Kd(this,e),this.debugID=Math.floor(Math.random()*1e4),this.r=t,this.texSize=r,this.texRows=i,this.texHeight=Math.floor(r/i),this.enableWrapping=!0,this.locked=!1,this.texture=null,this.needsBuffer=!0,this.freePointer={x:0,row:0},this.keyToLocation=new Map,this.canvas=n(t,r,r),this.scratch=n(t,r,this.texHeight,"scratch")}return o(e,"Atlas"),Zd(e,[{key:"lock",value:o(function(){this.locked=!0},"lock")},{key:"getKeys",value:o(function(){return new Set(this.keyToLocation.keys())},"getKeys")},{key:"getScale",value:o(function(r){var i=r.w,n=r.h,a=this.texHeight,s=this.texSize,l=a/n,u=i*l,h=n*l;return u>s&&(l=s/i,u=i*l,h=n*l),{scale:l,texW:u,texH:h}},"getScale")},{key:"draw",value:o(function(r,i,n){var a=this;if(this.locked)throw new Error("can't draw, atlas is locked");var s=this.texSize,l=this.texRows,u=this.texHeight,h=this.getScale(i),d=h.scale,f=h.texW,p=h.texH,m=o(function(T,w){if(n&&w){var C=w.context,k=T.x,E=T.row,A=k,N=u*E;C.save(),C.translate(A,N),C.scale(d,d),n(C,i),C.restore()}},"drawAt"),g=[null,null],y=o(function(){m(a.freePointer,a.canvas),g[0]={x:a.freePointer.x,y:a.freePointer.row*u,w:f,h:p},g[1]={x:a.freePointer.x+f,y:a.freePointer.row*u,w:0,h:p},a.freePointer.x+=f,a.freePointer.x==s&&(a.freePointer.x=0,a.freePointer.row++)},"drawNormal"),v=o(function(){var T=a.scratch,w=a.canvas;T.clear(),m({x:0,row:0},T);var C=s-a.freePointer.x,k=f-C,E=u;{var A=a.freePointer.x,N=a.freePointer.row*u,P=C;w.context.drawImage(T,0,0,P,E,A,N,P,E),g[0]={x:A,y:N,w:P,h:p}}{var I=C,D=(a.freePointer.row+1)*u,_=k;w&&w.context.drawImage(T,I,0,_,E,0,D,_,E),g[1]={x:0,y:D,w:_,h:p}}a.freePointer.x=k,a.freePointer.row++},"drawWrapped"),x=o(function(){a.freePointer.x=0,a.freePointer.row++},"moveToStartOfNextRow");if(this.freePointer.x+f<=s)y();else{if(this.freePointer.row>=l-1)return!1;this.freePointer.x===s?(x(),y()):this.enableWrapping?v():(x(),y())}return this.keyToLocation.set(r,g),this.needsBuffer=!0,g},"draw")},{key:"getOffsets",value:o(function(r){return this.keyToLocation.get(r)},"getOffsets")},{key:"isEmpty",value:o(function(){return this.freePointer.x===0&&this.freePointer.row===0},"isEmpty")},{key:"canFit",value:o(function(r){if(this.locked)return!1;var i=this.texSize,n=this.texRows,a=this.getScale(r),s=a.texW;return this.freePointer.x+s>i?this.freePointer.row<n-1:!0},"canFit")},{key:"bufferIfNeeded",value:o(function(r){this.texture||(this.texture=sot(r,this.debugID)),this.needsBuffer&&(this.texture.buffer(this.canvas),this.needsBuffer=!1,this.locked&&(this.canvas=null,this.scratch=null))},"bufferIfNeeded")},{key:"dispose",value:o(function(){this.texture&&(this.texture.deleteTexture(),this.texture=null),this.canvas=null,this.scratch=null,this.locked=!0},"dispose")}])})(),pot=(function(){function e(t,r,i,n){Kd(this,e),this.r=t,this.texSize=r,this.texRows=i,this.createTextureCanvas=n,this.atlases=[],this.styleKeyToAtlas=new Map,this.markedKeys=new Set}return o(e,"AtlasCollection"),Zd(e,[{key:"getKeys",value:o(function(){return new Set(this.styleKeyToAtlas.keys())},"getKeys")},{key:"_createAtlas",value:o(function(){var r=this.r,i=this.texSize,n=this.texRows,a=this.createTextureCanvas;return new fot(r,i,n,a)},"_createAtlas")},{key:"_getScratchCanvas",value:o(function(){if(!this.scratch){var r=this.r,i=this.texSize,n=this.texRows,a=this.createTextureCanvas,s=Math.floor(i/n);this.scratch=a(r,i,s,"scratch")}return this.scratch},"_getScratchCanvas")},{key:"draw",value:o(function(r,i,n){var a=this.styleKeyToAtlas.get(r);return a||(a=this.atlases[this.atlases.length-1],(!a||!a.canFit(i))&&(a&&a.lock(),a=this._createAtlas(),this.atlases.push(a)),a.draw(r,i,n),this.styleKeyToAtlas.set(r,a)),a},"draw")},{key:"getAtlas",value:o(function(r){return this.styleKeyToAtlas.get(r)},"getAtlas")},{key:"hasAtlas",value:o(function(r){return this.styleKeyToAtlas.has(r)},"hasAtlas")},{key:"markKeyForGC",value:o(function(r){this.markedKeys.add(r)},"markKeyForGC")},{key:"gc",value:o(function(){var r=this,i=this.markedKeys;if(i.size===0){console.log("nothing to garbage collect");return}var n=[],a=new Map,s=null,l=Fs(this.atlases),u;try{var h=o(function(){var f=u.value,p=f.getKeys(),m=mot(i,p);if(m.size===0)return n.push(f),p.forEach(function(C){return a.set(C,f)}),1;s||(s=r._createAtlas(),n.push(s));var g=Fs(p),y;try{for(g.s();!(y=g.n()).done;){var v=y.value;if(!m.has(v)){var x=f.getOffsets(v),b=Dn(x,2),T=b[0],w=b[1];s.canFit({w:T.w+w.w,h:T.h})||(s.lock(),s=r._createAtlas(),n.push(s)),f.canvas&&(r._copyTextureToNewAtlas(v,f,s),a.set(v,s))}}}catch(C){g.e(C)}finally{g.f()}f.dispose()},"_loop");for(l.s();!(u=l.n()).done;)h()}catch(d){l.e(d)}finally{l.f()}this.atlases=n,this.styleKeyToAtlas=a,this.markedKeys=new Set},"gc")},{key:"_copyTextureToNewAtlas",value:o(function(r,i,n){var a=i.getOffsets(r),s=Dn(a,2),l=s[0],u=s[1];if(u.w===0)n.draw(r,l,function(p){p.drawImage(i.canvas,l.x,l.y,l.w,l.h,0,0,l.w,l.h)});else{var h=this._getScratchCanvas();h.clear(),h.context.drawImage(i.canvas,l.x,l.y,l.w,l.h,0,0,l.w,l.h),h.context.drawImage(i.canvas,u.x,u.y,u.w,u.h,l.w,0,u.w,u.h);var d=l.w+u.w,f=l.h;n.draw(r,{w:d,h:f},function(p){p.drawImage(h,0,0,d,f,0,0,d,f)})}},"_copyTextureToNewAtlas")},{key:"getCounts",value:o(function(){return{keyCount:this.styleKeyToAtlas.size,atlasCount:new Set(this.styleKeyToAtlas.values()).size}},"getCounts")}])})();o(mot,"intersection");got=(function(){function e(t,r){Kd(this,e),this.r=t,this.globalOptions=r,this.atlasSize=r.webglTexSize,this.maxAtlasesPerBatch=r.webglTexPerBatch,this.renderTypes=new Map,this.collections=new Map,this.typeAndIdToKey=new Map}return o(e,"AtlasManager"),Zd(e,[{key:"getAtlasSize",value:o(function(){return this.atlasSize},"getAtlasSize")},{key:"addAtlasCollection",value:o(function(r,i){var n=this.globalOptions,a=n.webglTexSize,s=n.createTextureCanvas,l=i.texRows,u=this._cacheScratchCanvas(s),h=new pot(this.r,a,l,u);this.collections.set(r,h)},"addAtlasCollection")},{key:"addRenderType",value:o(function(r,i){var n=i.collection;if(!this.collections.has(n))throw new Error("invalid atlas collection name '".concat(n,"'"));var a=this.collections.get(n),s=hr({type:r,atlasCollection:a},i);this.renderTypes.set(r,s)},"addRenderType")},{key:"getRenderTypeOpts",value:o(function(r){return this.renderTypes.get(r)},"getRenderTypeOpts")},{key:"getAtlasCollection",value:o(function(r){return this.collections.get(r)},"getAtlasCollection")},{key:"_cacheScratchCanvas",value:o(function(r){var i=-1,n=-1,a=null;return function(s,l,u,h){return h?((!a||l!=i||u!=n)&&(i=l,n=u,a=r(s,l,u)),a):r(s,l,u)}},"_cacheScratchCanvas")},{key:"_key",value:o(function(r,i){return"".concat(r,"-").concat(i)},"_key")},{key:"invalidate",value:o(function(r){var i=this,n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},a=n.forceRedraw,s=a===void 0?!1:a,l=n.filterEle,u=l===void 0?function(){return!0}:l,h=n.filterType,d=h===void 0?function(){return!0}:h,f=!1,p=!1,m=Fs(r),g;try{for(m.s();!(g=m.n()).done;){var y=g.value;if(u(y)){var v=Fs(this.renderTypes.values()),x;try{var b=o(function(){var w=x.value,C=w.type;if(d(C)){var k=i.collections.get(w.collection),E=w.getKey(y),A=Array.isArray(E)?E:[E];if(s)A.forEach(function(D){return k.markKeyForGC(D)}),p=!0;else{var N=w.getID?w.getID(y):y.id(),P=i._key(C,N),I=i.typeAndIdToKey.get(P);I!==void 0&&!not(A,I)&&(f=!0,i.typeAndIdToKey.delete(P),I.forEach(function(D){return k.markKeyForGC(D)}))}}},"_loop2");for(v.s();!(x=v.n()).done;)b()}catch(T){v.e(T)}finally{v.f()}}}}catch(T){m.e(T)}finally{m.f()}return p&&(this.gc(),f=!1),f},"invalidate")},{key:"gc",value:o(function(){var r=Fs(this.collections.values()),i;try{for(r.s();!(i=r.n()).done;){var n=i.value;n.gc()}}catch(a){r.e(a)}finally{r.f()}},"gc")},{key:"getOrCreateAtlas",value:o(function(r,i,n,a){var s=this.renderTypes.get(i),l=this.collections.get(s.collection),u=!1,h=l.draw(a,n,function(p){s.drawClipped?(p.save(),p.beginPath(),p.rect(0,0,n.w,n.h),p.clip(),s.drawElement(p,r,n,!0,!0),p.restore()):s.drawElement(p,r,n,!0,!0),u=!0});if(u){var d=s.getID?s.getID(r):r.id(),f=this._key(i,d);this.typeAndIdToKey.has(f)?this.typeAndIdToKey.get(f).push(a):this.typeAndIdToKey.set(f,[a])}return h},"getOrCreateAtlas")},{key:"getAtlasInfo",value:o(function(r,i){var n=this,a=this.renderTypes.get(i),s=a.getKey(r),l=Array.isArray(s)?s:[s];return l.map(function(u){var h=a.getBoundingBox(r,u),d=n.getOrCreateAtlas(r,i,h,u),f=d.getOffsets(u),p=Dn(f,2),m=p[0],g=p[1];return{atlas:d,tex:m,tex1:m,tex2:g,bb:h}})},"getAtlasInfo")},{key:"getDebugInfo",value:o(function(){var r=[],i=Fs(this.collections),n;try{for(i.s();!(n=i.n()).done;){var a=Dn(n.value,2),s=a[0],l=a[1],u=l.getCounts(),h=u.keyCount,d=u.atlasCount;r.push({type:s,keyCount:h,atlasCount:d})}}catch(f){i.e(f)}finally{i.f()}return r},"getDebugInfo")}])})(),yot=(function(){function e(t){Kd(this,e),this.globalOptions=t,this.atlasSize=t.webglTexSize,this.maxAtlasesPerBatch=t.webglTexPerBatch,this.batchAtlases=[]}return o(e,"AtlasBatchManager"),Zd(e,[{key:"getMaxAtlasesPerBatch",value:o(function(){return this.maxAtlasesPerBatch},"getMaxAtlasesPerBatch")},{key:"getAtlasSize",value:o(function(){return this.atlasSize},"getAtlasSize")},{key:"getIndexArray",value:o(function(){return Array.from({length:this.maxAtlasesPerBatch},function(r,i){return i})},"getIndexArray")},{key:"startBatch",value:o(function(){this.batchAtlases=[]},"startBatch")},{key:"getAtlasCount",value:o(function(){return this.batchAtlases.length},"getAtlasCount")},{key:"getAtlases",value:o(function(){return this.batchAtlases},"getAtlases")},{key:"canAddToCurrentBatch",value:o(function(r){return this.batchAtlases.length===this.maxAtlasesPerBatch?this.batchAtlases.includes(r):!0},"canAddToCurrentBatch")},{key:"getAtlasIndexForBatch",value:o(function(r){var i=this.batchAtlases.indexOf(r);if(i<0){if(this.batchAtlases.length===this.maxAtlasesPerBatch)throw new Error("cannot add more atlases to batch");this.batchAtlases.push(r),i=this.batchAtlases.length-1}return i},"getAtlasIndexForBatch")}])})(),vot=`
+      L0,20`).attr("stroke-linejoin","miter")},"requirement_arrow_neo"),mJe=o((e,t,r)=>{let n=e.append("defs").append("marker").attr("id",r+"_"+t+"-requirement_containsStart").attr("refX",0).attr("refY",10).attr("markerWidth",20).attr("markerHeight",20).attr("orient","auto").append("g");n.append("circle").attr("cx",10).attr("cy",10).attr("r",9).attr("fill","none"),n.append("line").attr("x1",1).attr("x2",19).attr("y1",10).attr("y2",10),n.append("line").attr("y1",1).attr("y2",19).attr("x1",10).attr("x2",10)},"requirement_contains"),gJe=o((e,t,r)=>{let n=_t(),{themeVariables:i}=n,{strokeWidth:a}=i,s=e.append("defs").append("marker").attr("id",r+"_"+t+"-requirement_containsStart").attr("refX",0).attr("refY",10).attr("markerWidth",20).attr("markerHeight",20).attr("orient","auto").attr("markerUnits","userSpaceOnUse").append("g");s.append("circle").attr("cx",10).attr("cy",10).attr("r",9).attr("fill","none"),s.append("line").attr("x1",1).attr("x2",19).attr("y1",10).attr("y2",10),s.append("line").attr("y1",1).attr("y2",19).attr("x1",10).attr("x2",10),s.selectAll("*").attr("stroke-width",`${a}`)},"requirement_contains_neo"),yJe={extension:XQe,composition:KQe,aggregation:ZQe,dependency:QQe,lollipop:JQe,point:eJe,circle:tJe,cross:rJe,barb:nJe,barbNeo:iJe,only_one:aJe,zero_or_one:sJe,one_or_more:oJe,zero_or_more:lJe,only_one_neo:cJe,zero_or_one_neo:uJe,one_or_more_neo:hJe,zero_or_more_neo:dJe,requirement_arrow:fJe,requirement_contains:mJe,requirement_arrow_neo:pJe,requirement_contains_neo:gJe},Uy=jQe});async function nf(e,t,r){let n,i;t.shape==="rect"&&(t.rx&&t.ry?t.shape="roundedRect":t.shape="squareRect");let a=t.shape?pO[t.shape]:void 0;if(!a)throw new Error(`No such shape: ${t.shape}. Please check your syntax.`);if(t.link){let s;r.config.securityLevel==="sandbox"?s="_top":t.linkTarget&&(s=t.linkTarget||"_blank"),n=e.insert("svg:a").attr("xlink:href",t.link).attr("target",s??null),i=await a(n,t,r)}else i=await a(e,t,r),n=i;return n.attr("data-look",kn(t.look)),t.tooltip&&i.attr("title",t.tooltip),Q4.set(t.id,n),t.haveCallback&&n.attr("class",n.attr("class")+" clickable"),n}var Q4,Kce,J4,_m,Lm=F(()=>{"use strict";vt();mO();Qt();Q4=new Map;o(nf,"insertNode");Kce=o((e,t)=>{Q4.set(t.id,e)},"setNodeElem"),J4=o(()=>{Q4.clear()},"clear"),_m=o(e=>{let t=Q4.get(e.id);Z.trace("Transforming node",e.diff,e,"translate("+(e.x-e.width/2-5)+", "+e.width/2+")");let r=8,n=e.diff||0;return e.clusterNode?t.attr("transform","translate("+(e.x+n-e.width/2)+", "+(e.y-e.height/2-r)+")"):t.attr("transform","translate("+e.x+", "+e.y+")"),n},"positionNode")});var Zce,Qce=F(()=>{"use strict";ur();Vr();vt();Wy();G2();Z4();Lm();Kt();Qt();Zce={common:xt,getConfig:_t,insertCluster:rf,insertEdge:Hy,insertEdgeLabel:Rm,insertMarkers:Uy,insertNode:nf,interpolateToCurve:lP,labelHelper:It,log:Z,positionEdgeLabel:K4}});var vJe,e3,vO=F(()=>{"use strict";vJe=typeof global=="object"&&global&&global.Object===Object&&global,e3=vJe});var xJe,bJe,Li,gl=F(()=>{"use strict";vO();xJe=typeof self=="object"&&self&&self.Object===Object&&self,bJe=e3||xJe||Function("return this")(),Li=bJe});var TJe,wa,Dm=F(()=>{"use strict";gl();TJe=Li.Symbol,wa=TJe});function kJe(e){var t=CJe.call(e,V2),r=e[V2];try{e[V2]=void 0;var n=!0}catch{}var i=wJe.call(e);return n&&(t?e[V2]=r:delete e[V2]),i}var Jce,CJe,wJe,V2,eue,tue=F(()=>{"use strict";Dm();Jce=Object.prototype,CJe=Jce.hasOwnProperty,wJe=Jce.toString,V2=wa?wa.toStringTag:void 0;o(kJe,"getRawTag");eue=kJe});function AJe(e){return EJe.call(e)}var SJe,EJe,rue,nue=F(()=>{"use strict";SJe=Object.prototype,EJe=SJe.toString;o(AJe,"objectToString");rue=AJe});function LJe(e){return e==null?e===void 0?_Je:RJe:iue&&iue in Object(e)?eue(e):rue(e)}var RJe,_Je,iue,Ds,af=F(()=>{"use strict";Dm();tue();nue();RJe="[object Null]",_Je="[object Undefined]",iue=wa?wa.toStringTag:void 0;o(LJe,"baseGetTag");Ds=LJe});function DJe(e){return e!=null&&typeof e=="object"}var Bi,lc=F(()=>{"use strict";o(DJe,"isObjectLike");Bi=DJe});function MJe(e){return typeof e=="symbol"||Bi(e)&&Ds(e)==IJe}var IJe,Go,Im=F(()=>{"use strict";af();lc();IJe="[object Symbol]";o(MJe,"isSymbol");Go=MJe});function NJe(e,t){for(var r=-1,n=e==null?0:e.length,i=Array(n);++r<n;)i[r]=t(e[r],r,e);return i}var au,W2=F(()=>{"use strict";o(NJe,"arrayMap");au=NJe});var PJe,Yr,ji=F(()=>{"use strict";PJe=Array.isArray,Yr=PJe});function oue(e){if(typeof e=="string")return e;if(Yr(e))return au(e,oue)+"";if(Go(e))return sue?sue.call(e):"";var t=e+"";return t=="0"&&1/e==-OJe?"-0":t}var OJe,aue,sue,lue,cue=F(()=>{"use strict";Dm();W2();ji();Im();OJe=1/0,aue=wa?wa.prototype:void 0,sue=aue?aue.toString:void 0;o(oue,"baseToString");lue=oue});function $Je(e){for(var t=e.length;t--&&BJe.test(e.charAt(t)););return t}var BJe,uue,hue=F(()=>{"use strict";BJe=/\s/;o($Je,"trimmedEndIndex");uue=$Je});function zJe(e){return e&&e.slice(0,uue(e)+1).replace(FJe,"")}var FJe,due,fue=F(()=>{"use strict";hue();FJe=/^\s+/;o(zJe,"baseTrim");due=zJe});function GJe(e){var t=typeof e;return e!=null&&(t=="object"||t=="function")}var fi,yl=F(()=>{"use strict";o(GJe,"isObject");fi=GJe});function UJe(e){if(typeof e=="number")return e;if(Go(e))return pue;if(fi(e)){var t=typeof e.valueOf=="function"?e.valueOf():e;e=fi(t)?t+"":t}if(typeof e!="string")return e===0?e:+e;e=due(e);var r=WJe.test(e);return r||qJe.test(e)?HJe(e.slice(2),r?2:8):VJe.test(e)?pue:+e}var pue,VJe,WJe,qJe,HJe,mue,gue=F(()=>{"use strict";fue();yl();Im();pue=NaN,VJe=/^[-+]0x[0-9a-f]+$/i,WJe=/^0b[01]+$/i,qJe=/^0o[0-7]+$/i,HJe=parseInt;o(UJe,"toNumber");mue=UJe});function jJe(e){if(!e)return e===0?e:0;if(e=mue(e),e===yue||e===-yue){var t=e<0?-1:1;return t*YJe}return e===e?e:0}var yue,YJe,Yy,xO=F(()=>{"use strict";gue();yue=1/0,YJe=17976931348623157e292;o(jJe,"toFinite");Yy=jJe});function XJe(e){var t=Yy(e),r=t%1;return t===t?r?t-r:t:0}var vue,xue=F(()=>{"use strict";xO();o(XJe,"toInteger");vue=XJe});function KJe(e){return e}var ao,sf=F(()=>{"use strict";o(KJe,"identity");ao=KJe});function tet(e){if(!fi(e))return!1;var t=Ds(e);return t==QJe||t==JJe||t==ZJe||t==eet}var ZJe,QJe,JJe,eet,su,q2=F(()=>{"use strict";af();yl();ZJe="[object AsyncFunction]",QJe="[object Function]",JJe="[object GeneratorFunction]",eet="[object Proxy]";o(tet,"isFunction");su=tet});var ret,t3,bue=F(()=>{"use strict";gl();ret=Li["__core-js_shared__"],t3=ret});function net(e){return!!Tue&&Tue in e}var Tue,Cue,wue=F(()=>{"use strict";bue();Tue=(function(){var e=/[^.]+$/.exec(t3&&t3.keys&&t3.keys.IE_PROTO||"");return e?"Symbol(src)_1."+e:""})();o(net,"isMasked");Cue=net});function set(e){if(e!=null){try{return aet.call(e)}catch{}try{return e+""}catch{}}return""}var iet,aet,kh,bO=F(()=>{"use strict";iet=Function.prototype,aet=iet.toString;o(set,"toSource");kh=set});function met(e){if(!fi(e)||Cue(e))return!1;var t=su(e)?pet:cet;return t.test(kh(e))}var oet,cet,uet,het,det,fet,pet,kue,Sue=F(()=>{"use strict";q2();wue();yl();bO();oet=/[\\^$.*+?()[\]{}|]/g,cet=/^\[object .+?Constructor\]$/,uet=Function.prototype,het=Object.prototype,det=uet.toString,fet=het.hasOwnProperty,pet=RegExp("^"+det.call(fet).replace(oet,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");o(met,"baseIsNative");kue=met});function get(e,t){return e?.[t]}var Eue,Aue=F(()=>{"use strict";o(get,"getValue");Eue=get});function yet(e,t){var r=Eue(e,t);return kue(r)?r:void 0}var so,of=F(()=>{"use strict";Sue();Aue();o(yet,"getNative");so=yet});var vet,r3,Rue=F(()=>{"use strict";of();gl();vet=so(Li,"WeakMap"),r3=vet});var _ue,xet,Lue,Due=F(()=>{"use strict";yl();_ue=Object.create,xet=(function(){function e(){}return o(e,"object"),function(t){if(!fi(t))return{};if(_ue)return _ue(t);e.prototype=t;var r=new e;return e.prototype=void 0,r}})(),Lue=xet});function bet(e,t,r){switch(r.length){case 0:return e.call(t);case 1:return e.call(t,r[0]);case 2:return e.call(t,r[0],r[1]);case 3:return e.call(t,r[0],r[1],r[2])}return e.apply(t,r)}var Iue,Mue=F(()=>{"use strict";o(bet,"apply");Iue=bet});function Tet(){}var Nue,Pue=F(()=>{"use strict";o(Tet,"noop");Nue=Tet});function Cet(e,t){var r=-1,n=e.length;for(t||(t=Array(n));++r<n;)t[r]=e[r];return t}var n3,TO=F(()=>{"use strict";o(Cet,"copyArray");n3=Cet});function Aet(e){var t=0,r=0;return function(){var n=Eet(),i=ket-(n-r);if(r=n,i>0){if(++t>=wet)return arguments[0]}else t=0;return e.apply(void 0,arguments)}}var wet,ket,Eet,Oue,Bue=F(()=>{"use strict";wet=800,ket=16,Eet=Date.now;o(Aet,"shortOut");Oue=Aet});function Ret(e){return function(){return e}}var oo,CO=F(()=>{"use strict";o(Ret,"constant");oo=Ret});var _et,jy,wO=F(()=>{"use strict";of();_et=(function(){try{var e=so(Object,"defineProperty");return e({},"",{}),e}catch{}})(),jy=_et});var Let,$ue,Fue=F(()=>{"use strict";CO();wO();sf();Let=jy?function(e,t){return jy(e,"toString",{configurable:!0,enumerable:!1,value:oo(t),writable:!0})}:ao,$ue=Let});var Det,i3,kO=F(()=>{"use strict";Fue();Bue();Det=Oue($ue),i3=Det});function Iet(e,t){for(var r=-1,n=e==null?0:e.length;++r<n&&t(e[r],r,e)!==!1;);return e}var a3,SO=F(()=>{"use strict";o(Iet,"arrayEach");a3=Iet});function Met(e,t,r,n){for(var i=e.length,a=r+(n?1:-1);n?a--:++a<i;)if(t(e[a],a,e))return a;return-1}var s3,EO=F(()=>{"use strict";o(Met,"baseFindIndex");s3=Met});function Net(e){return e!==e}var zue,Gue=F(()=>{"use strict";o(Net,"baseIsNaN");zue=Net});function Pet(e,t,r){for(var n=r-1,i=e.length;++n<i;)if(e[n]===t)return n;return-1}var Vue,Wue=F(()=>{"use strict";o(Pet,"strictIndexOf");Vue=Pet});function Oet(e,t,r){return t===t?Vue(e,t,r):s3(e,zue,r)}var que,Hue=F(()=>{"use strict";EO();Gue();Wue();o(Oet,"baseIndexOf");que=Oet});function Bet(e,t){var r=e==null?0:e.length;return!!r&&que(e,t,0)>-1}var Uue,Yue=F(()=>{"use strict";Hue();o(Bet,"arrayIncludes");Uue=Bet});function zet(e,t){var r=typeof e;return t=t??$et,!!t&&(r=="number"||r!="symbol"&&Fet.test(e))&&e>-1&&e%1==0&&e<t}var $et,Fet,lf,H2=F(()=>{"use strict";$et=9007199254740991,Fet=/^(?:0|[1-9]\d*)$/;o(zet,"isIndex");lf=zet});function Get(e,t,r){t=="__proto__"&&jy?jy(e,t,{configurable:!0,enumerable:!0,value:r,writable:!0}):e[t]=r}var cf,U2=F(()=>{"use strict";wO();o(Get,"baseAssignValue");cf=Get});function Vet(e,t){return e===t||e!==e&&t!==t}var vl,Mm=F(()=>{"use strict";o(Vet,"eq");vl=Vet});function Het(e,t,r){var n=e[t];(!(qet.call(e,t)&&vl(n,r))||r===void 0&&!(t in e))&&cf(e,t,r)}var Wet,qet,uf,Y2=F(()=>{"use strict";U2();Mm();Wet=Object.prototype,qet=Wet.hasOwnProperty;o(Het,"assignValue");uf=Het});function Uet(e,t,r,n){var i=!r;r||(r={});for(var a=-1,s=t.length;++a<s;){var l=t[a],u=n?n(r[l],e[l],l,r,e):void 0;u===void 0&&(u=e[l]),i?cf(r,l,u):uf(r,l,u)}return r}var ou,Xy=F(()=>{"use strict";Y2();U2();o(Uet,"copyObject");ou=Uet});function Yet(e,t,r){return t=jue(t===void 0?e.length-1:t,0),function(){for(var n=arguments,i=-1,a=jue(n.length-t,0),s=Array(a);++i<a;)s[i]=n[t+i];i=-1;for(var l=Array(t+1);++i<t;)l[i]=n[i];return l[t]=r(s),Iue(e,this,l)}}var jue,o3,AO=F(()=>{"use strict";Mue();jue=Math.max;o(Yet,"overRest");o3=Yet});function jet(e,t){return i3(o3(e,t,ao),e+"")}var hf,j2=F(()=>{"use strict";sf();AO();kO();o(jet,"baseRest");hf=jet});function Ket(e){return typeof e=="number"&&e>-1&&e%1==0&&e<=Xet}var Xet,Ky,l3=F(()=>{"use strict";Xet=9007199254740991;o(Ket,"isLength");Ky=Ket});function Zet(e){return e!=null&&Ky(e.length)&&!su(e)}var ka,lu=F(()=>{"use strict";q2();l3();o(Zet,"isArrayLike");ka=Zet});function Qet(e,t,r){if(!fi(r))return!1;var n=typeof t;return(n=="number"?ka(r)&&lf(t,r.length):n=="string"&&t in r)?vl(r[t],e):!1}var Sh,X2=F(()=>{"use strict";Mm();lu();H2();yl();o(Qet,"isIterateeCall");Sh=Qet});function Jet(e){return hf(function(t,r){var n=-1,i=r.length,a=i>1?r[i-1]:void 0,s=i>2?r[2]:void 0;for(a=e.length>3&&typeof a=="function"?(i--,a):void 0,s&&Sh(r[0],r[1],s)&&(a=i<3?void 0:a,i=1),t=Object(t);++n<i;){var l=r[n];l&&e(t,l,n,a)}return t})}var Xue,Kue=F(()=>{"use strict";j2();X2();o(Jet,"createAssigner");Xue=Jet});function ttt(e){var t=e&&e.constructor,r=typeof t=="function"&&t.prototype||ett;return e===r}var ett,df,K2=F(()=>{"use strict";ett=Object.prototype;o(ttt,"isPrototype");df=ttt});function rtt(e,t){for(var r=-1,n=Array(e);++r<e;)n[r]=t(r);return n}var Zue,Que=F(()=>{"use strict";o(rtt,"baseTimes");Zue=rtt});function itt(e){return Bi(e)&&Ds(e)==ntt}var ntt,RO,Jue=F(()=>{"use strict";af();lc();ntt="[object Arguments]";o(itt,"baseIsArguments");RO=itt});var ehe,att,stt,ott,cc,Zy=F(()=>{"use strict";Jue();lc();ehe=Object.prototype,att=ehe.hasOwnProperty,stt=ehe.propertyIsEnumerable,ott=RO((function(){return arguments})())?RO:function(e){return Bi(e)&&att.call(e,"callee")&&!stt.call(e,"callee")},cc=ott});function ltt(){return!1}var the,rhe=F(()=>{"use strict";o(ltt,"stubFalse");the=ltt});var ahe,nhe,ctt,ihe,utt,htt,uc,Qy=F(()=>{"use strict";gl();rhe();ahe=typeof exports=="object"&&exports&&!exports.nodeType&&exports,nhe=ahe&&typeof module=="object"&&module&&!module.nodeType&&module,ctt=nhe&&nhe.exports===ahe,ihe=ctt?Li.Buffer:void 0,utt=ihe?ihe.isBuffer:void 0,htt=utt||the,uc=htt});function Ott(e){return Bi(e)&&Ky(e.length)&&!!ai[Ds(e)]}var dtt,ftt,ptt,mtt,gtt,ytt,vtt,xtt,btt,Ttt,Ctt,wtt,ktt,Stt,Ett,Att,Rtt,_tt,Ltt,Dtt,Itt,Mtt,Ntt,Ptt,ai,she,ohe=F(()=>{"use strict";af();l3();lc();dtt="[object Arguments]",ftt="[object Array]",ptt="[object Boolean]",mtt="[object Date]",gtt="[object Error]",ytt="[object Function]",vtt="[object Map]",xtt="[object Number]",btt="[object Object]",Ttt="[object RegExp]",Ctt="[object Set]",wtt="[object String]",ktt="[object WeakMap]",Stt="[object ArrayBuffer]",Ett="[object DataView]",Att="[object Float32Array]",Rtt="[object Float64Array]",_tt="[object Int8Array]",Ltt="[object Int16Array]",Dtt="[object Int32Array]",Itt="[object Uint8Array]",Mtt="[object Uint8ClampedArray]",Ntt="[object Uint16Array]",Ptt="[object Uint32Array]",ai={};ai[Att]=ai[Rtt]=ai[_tt]=ai[Ltt]=ai[Dtt]=ai[Itt]=ai[Mtt]=ai[Ntt]=ai[Ptt]=!0;ai[dtt]=ai[ftt]=ai[Stt]=ai[ptt]=ai[Ett]=ai[mtt]=ai[gtt]=ai[ytt]=ai[vtt]=ai[xtt]=ai[btt]=ai[Ttt]=ai[Ctt]=ai[wtt]=ai[ktt]=!1;o(Ott,"baseIsTypedArray");she=Ott});function Btt(e){return function(t){return e(t)}}var ff,Z2=F(()=>{"use strict";o(Btt,"baseUnary");ff=Btt});var lhe,Q2,$tt,_O,Ftt,Eh,c3=F(()=>{"use strict";vO();lhe=typeof exports=="object"&&exports&&!exports.nodeType&&exports,Q2=lhe&&typeof module=="object"&&module&&!module.nodeType&&module,$tt=Q2&&Q2.exports===lhe,_O=$tt&&e3.process,Ftt=(function(){try{var e=Q2&&Q2.require&&Q2.require("util").types;return e||_O&&_O.binding&&_O.binding("util")}catch{}})(),Eh=Ftt});var che,ztt,pf,J2=F(()=>{"use strict";ohe();Z2();c3();che=Eh&&Eh.isTypedArray,ztt=che?ff(che):she,pf=ztt});function Wtt(e,t){var r=Yr(e),n=!r&&cc(e),i=!r&&!n&&uc(e),a=!r&&!n&&!i&&pf(e),s=r||n||i||a,l=s?Zue(e.length,String):[],u=l.length;for(var h in e)(t||Vtt.call(e,h))&&!(s&&(h=="length"||i&&(h=="offset"||h=="parent")||a&&(h=="buffer"||h=="byteLength"||h=="byteOffset")||lf(h,u)))&&l.push(h);return l}var Gtt,Vtt,u3,LO=F(()=>{"use strict";Que();Zy();ji();Qy();H2();J2();Gtt=Object.prototype,Vtt=Gtt.hasOwnProperty;o(Wtt,"arrayLikeKeys");u3=Wtt});function qtt(e,t){return function(r){return e(t(r))}}var h3,DO=F(()=>{"use strict";o(qtt,"overArg");h3=qtt});var Htt,uhe,hhe=F(()=>{"use strict";DO();Htt=h3(Object.keys,Object),uhe=Htt});function jtt(e){if(!df(e))return uhe(e);var t=[];for(var r in Object(e))Ytt.call(e,r)&&r!="constructor"&&t.push(r);return t}var Utt,Ytt,Jy,d3=F(()=>{"use strict";K2();hhe();Utt=Object.prototype,Ytt=Utt.hasOwnProperty;o(jtt,"baseKeys");Jy=jtt});function Xtt(e){return ka(e)?u3(e):Jy(e)}var Di,Ah=F(()=>{"use strict";LO();d3();lu();o(Xtt,"keys");Di=Xtt});function Ktt(e){var t=[];if(e!=null)for(var r in Object(e))t.push(r);return t}var dhe,fhe=F(()=>{"use strict";o(Ktt,"nativeKeysIn");dhe=Ktt});function Jtt(e){if(!fi(e))return dhe(e);var t=df(e),r=[];for(var n in e)n=="constructor"&&(t||!Qtt.call(e,n))||r.push(n);return r}var Ztt,Qtt,phe,mhe=F(()=>{"use strict";yl();K2();fhe();Ztt=Object.prototype,Qtt=Ztt.hasOwnProperty;o(Jtt,"baseKeysIn");phe=Jtt});function ert(e){return ka(e)?u3(e,!0):phe(e)}var lo,mf=F(()=>{"use strict";LO();mhe();lu();o(ert,"keysIn");lo=ert});function nrt(e,t){if(Yr(e))return!1;var r=typeof e;return r=="number"||r=="symbol"||r=="boolean"||e==null||Go(e)?!0:rrt.test(e)||!trt.test(e)||t!=null&&e in Object(t)}var trt,rrt,e1,f3=F(()=>{"use strict";ji();Im();trt=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,rrt=/^\w*$/;o(nrt,"isKey");e1=nrt});var irt,Rh,eT=F(()=>{"use strict";of();irt=so(Object,"create"),Rh=irt});function art(){this.__data__=Rh?Rh(null):{},this.size=0}var ghe,yhe=F(()=>{"use strict";eT();o(art,"hashClear");ghe=art});function srt(e){var t=this.has(e)&&delete this.__data__[e];return this.size-=t?1:0,t}var vhe,xhe=F(()=>{"use strict";o(srt,"hashDelete");vhe=srt});function urt(e){var t=this.__data__;if(Rh){var r=t[e];return r===ort?void 0:r}return crt.call(t,e)?t[e]:void 0}var ort,lrt,crt,bhe,The=F(()=>{"use strict";eT();ort="__lodash_hash_undefined__",lrt=Object.prototype,crt=lrt.hasOwnProperty;o(urt,"hashGet");bhe=urt});function frt(e){var t=this.__data__;return Rh?t[e]!==void 0:drt.call(t,e)}var hrt,drt,Che,whe=F(()=>{"use strict";eT();hrt=Object.prototype,drt=hrt.hasOwnProperty;o(frt,"hashHas");Che=frt});function mrt(e,t){var r=this.__data__;return this.size+=this.has(e)?0:1,r[e]=Rh&&t===void 0?prt:t,this}var prt,khe,She=F(()=>{"use strict";eT();prt="__lodash_hash_undefined__";o(mrt,"hashSet");khe=mrt});function t1(e){var t=-1,r=e==null?0:e.length;for(this.clear();++t<r;){var n=e[t];this.set(n[0],n[1])}}var IO,Ehe=F(()=>{"use strict";yhe();xhe();The();whe();She();o(t1,"Hash");t1.prototype.clear=ghe;t1.prototype.delete=vhe;t1.prototype.get=bhe;t1.prototype.has=Che;t1.prototype.set=khe;IO=t1});function grt(){this.__data__=[],this.size=0}var Ahe,Rhe=F(()=>{"use strict";o(grt,"listCacheClear");Ahe=grt});function yrt(e,t){for(var r=e.length;r--;)if(vl(e[r][0],t))return r;return-1}var gf,tT=F(()=>{"use strict";Mm();o(yrt,"assocIndexOf");gf=yrt});function brt(e){var t=this.__data__,r=gf(t,e);if(r<0)return!1;var n=t.length-1;return r==n?t.pop():xrt.call(t,r,1),--this.size,!0}var vrt,xrt,_he,Lhe=F(()=>{"use strict";tT();vrt=Array.prototype,xrt=vrt.splice;o(brt,"listCacheDelete");_he=brt});function Trt(e){var t=this.__data__,r=gf(t,e);return r<0?void 0:t[r][1]}var Dhe,Ihe=F(()=>{"use strict";tT();o(Trt,"listCacheGet");Dhe=Trt});function Crt(e){return gf(this.__data__,e)>-1}var Mhe,Nhe=F(()=>{"use strict";tT();o(Crt,"listCacheHas");Mhe=Crt});function wrt(e,t){var r=this.__data__,n=gf(r,e);return n<0?(++this.size,r.push([e,t])):r[n][1]=t,this}var Phe,Ohe=F(()=>{"use strict";tT();o(wrt,"listCacheSet");Phe=wrt});function r1(e){var t=-1,r=e==null?0:e.length;for(this.clear();++t<r;){var n=e[t];this.set(n[0],n[1])}}var yf,rT=F(()=>{"use strict";Rhe();Lhe();Ihe();Nhe();Ohe();o(r1,"ListCache");r1.prototype.clear=Ahe;r1.prototype.delete=_he;r1.prototype.get=Dhe;r1.prototype.has=Mhe;r1.prototype.set=Phe;yf=r1});var krt,vf,p3=F(()=>{"use strict";of();gl();krt=so(Li,"Map"),vf=krt});function Srt(){this.size=0,this.__data__={hash:new IO,map:new(vf||yf),string:new IO}}var Bhe,$he=F(()=>{"use strict";Ehe();rT();p3();o(Srt,"mapCacheClear");Bhe=Srt});function Ert(e){var t=typeof e;return t=="string"||t=="number"||t=="symbol"||t=="boolean"?e!=="__proto__":e===null}var Fhe,zhe=F(()=>{"use strict";o(Ert,"isKeyable");Fhe=Ert});function Art(e,t){var r=e.__data__;return Fhe(t)?r[typeof t=="string"?"string":"hash"]:r.map}var xf,nT=F(()=>{"use strict";zhe();o(Art,"getMapData");xf=Art});function Rrt(e){var t=xf(this,e).delete(e);return this.size-=t?1:0,t}var Ghe,Vhe=F(()=>{"use strict";nT();o(Rrt,"mapCacheDelete");Ghe=Rrt});function _rt(e){return xf(this,e).get(e)}var Whe,qhe=F(()=>{"use strict";nT();o(_rt,"mapCacheGet");Whe=_rt});function Lrt(e){return xf(this,e).has(e)}var Hhe,Uhe=F(()=>{"use strict";nT();o(Lrt,"mapCacheHas");Hhe=Lrt});function Drt(e,t){var r=xf(this,e),n=r.size;return r.set(e,t),this.size+=r.size==n?0:1,this}var Yhe,jhe=F(()=>{"use strict";nT();o(Drt,"mapCacheSet");Yhe=Drt});function n1(e){var t=-1,r=e==null?0:e.length;for(this.clear();++t<r;){var n=e[t];this.set(n[0],n[1])}}var Nm,m3=F(()=>{"use strict";$he();Vhe();qhe();Uhe();jhe();o(n1,"MapCache");n1.prototype.clear=Bhe;n1.prototype.delete=Ghe;n1.prototype.get=Whe;n1.prototype.has=Hhe;n1.prototype.set=Yhe;Nm=n1});function MO(e,t){if(typeof e!="function"||t!=null&&typeof t!="function")throw new TypeError(Irt);var r=o(function(){var n=arguments,i=t?t.apply(this,n):n[0],a=r.cache;if(a.has(i))return a.get(i);var s=e.apply(this,n);return r.cache=a.set(i,s)||a,s},"memoized");return r.cache=new(MO.Cache||Nm),r}var Irt,Xhe,Khe=F(()=>{"use strict";m3();Irt="Expected a function";o(MO,"memoize");MO.Cache=Nm;Xhe=MO});function Nrt(e){var t=Xhe(e,function(n){return r.size===Mrt&&r.clear(),n}),r=t.cache;return t}var Mrt,Zhe,Qhe=F(()=>{"use strict";Khe();Mrt=500;o(Nrt,"memoizeCapped");Zhe=Nrt});var Prt,Ort,Brt,Jhe,ede=F(()=>{"use strict";Qhe();Prt=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,Ort=/\\(\\)?/g,Brt=Zhe(function(e){var t=[];return e.charCodeAt(0)===46&&t.push(""),e.replace(Prt,function(r,n,i,a){t.push(i?a.replace(Ort,"$1"):n||r)}),t}),Jhe=Brt});function $rt(e){return e==null?"":lue(e)}var g3,NO=F(()=>{"use strict";cue();o($rt,"toString");g3=$rt});function Frt(e,t){return Yr(e)?e:e1(e,t)?[e]:Jhe(g3(e))}var bf,iT=F(()=>{"use strict";ji();f3();ede();NO();o(Frt,"castPath");bf=Frt});function Grt(e){if(typeof e=="string"||Go(e))return e;var t=e+"";return t=="0"&&1/e==-zrt?"-0":t}var zrt,cu,i1=F(()=>{"use strict";Im();zrt=1/0;o(Grt,"toKey");cu=Grt});function Vrt(e,t){t=bf(t,e);for(var r=0,n=t.length;e!=null&&r<n;)e=e[cu(t[r++])];return r&&r==n?e:void 0}var Tf,aT=F(()=>{"use strict";iT();i1();o(Vrt,"baseGet");Tf=Vrt});function Wrt(e,t,r){var n=e==null?void 0:Tf(e,t);return n===void 0?r:n}var tde,rde=F(()=>{"use strict";aT();o(Wrt,"get");tde=Wrt});function qrt(e,t){for(var r=-1,n=t.length,i=e.length;++r<n;)e[i+r]=t[r];return e}var a1,y3=F(()=>{"use strict";o(qrt,"arrayPush");a1=qrt});function Hrt(e){return Yr(e)||cc(e)||!!(nde&&e&&e[nde])}var nde,ide,ade=F(()=>{"use strict";Dm();Zy();ji();nde=wa?wa.isConcatSpreadable:void 0;o(Hrt,"isFlattenable");ide=Hrt});function sde(e,t,r,n,i){var a=-1,s=e.length;for(r||(r=ide),i||(i=[]);++a<s;){var l=e[a];t>0&&r(l)?t>1?sde(l,t-1,r,n,i):a1(i,l):n||(i[i.length]=l)}return i}var s1,v3=F(()=>{"use strict";y3();ade();o(sde,"baseFlatten");s1=sde});function Urt(e){var t=e==null?0:e.length;return t?s1(e,1):[]}var xl,PO=F(()=>{"use strict";v3();o(Urt,"flatten");xl=Urt});function Yrt(e){return i3(o3(e,void 0,xl),e+"")}var ode,lde=F(()=>{"use strict";PO();AO();kO();o(Yrt,"flatRest");ode=Yrt});var jrt,o1,x3=F(()=>{"use strict";DO();jrt=h3(Object.getPrototypeOf,Object),o1=jrt});function ent(e){if(!Bi(e)||Ds(e)!=Xrt)return!1;var t=o1(e);if(t===null)return!0;var r=Qrt.call(t,"constructor")&&t.constructor;return typeof r=="function"&&r instanceof r&&cde.call(r)==Jrt}var Xrt,Krt,Zrt,cde,Qrt,Jrt,ude,hde=F(()=>{"use strict";af();x3();lc();Xrt="[object Object]",Krt=Function.prototype,Zrt=Object.prototype,cde=Krt.toString,Qrt=Zrt.hasOwnProperty,Jrt=cde.call(Object);o(ent,"isPlainObject");ude=ent});function cnt(e){return lnt.test(e)}var tnt,rnt,nnt,int,ant,snt,ont,lnt,dde,fde=F(()=>{"use strict";tnt="\\ud800-\\udfff",rnt="\\u0300-\\u036f",nnt="\\ufe20-\\ufe2f",int="\\u20d0-\\u20ff",ant=rnt+nnt+int,snt="\\ufe0e\\ufe0f",ont="\\u200d",lnt=RegExp("["+ont+tnt+ant+snt+"]");o(cnt,"hasUnicode");dde=cnt});function unt(e,t,r,n){var i=-1,a=e==null?0:e.length;for(n&&a&&(r=e[++i]);++i<a;)r=t(r,e[i],i,e);return r}var pde,mde=F(()=>{"use strict";o(unt,"arrayReduce");pde=unt});function hnt(){this.__data__=new yf,this.size=0}var gde,yde=F(()=>{"use strict";rT();o(hnt,"stackClear");gde=hnt});function dnt(e){var t=this.__data__,r=t.delete(e);return this.size=t.size,r}var vde,xde=F(()=>{"use strict";o(dnt,"stackDelete");vde=dnt});function fnt(e){return this.__data__.get(e)}var bde,Tde=F(()=>{"use strict";o(fnt,"stackGet");bde=fnt});function pnt(e){return this.__data__.has(e)}var Cde,wde=F(()=>{"use strict";o(pnt,"stackHas");Cde=pnt});function gnt(e,t){var r=this.__data__;if(r instanceof yf){var n=r.__data__;if(!vf||n.length<mnt-1)return n.push([e,t]),this.size=++r.size,this;r=this.__data__=new Nm(n)}return r.set(e,t),this.size=r.size,this}var mnt,kde,Sde=F(()=>{"use strict";rT();p3();m3();mnt=200;o(gnt,"stackSet");kde=gnt});function l1(e){var t=this.__data__=new yf(e);this.size=t.size}var uu,sT=F(()=>{"use strict";rT();yde();xde();Tde();wde();Sde();o(l1,"Stack");l1.prototype.clear=gde;l1.prototype.delete=vde;l1.prototype.get=bde;l1.prototype.has=Cde;l1.prototype.set=kde;uu=l1});function ynt(e,t){return e&&ou(t,Di(t),e)}var Ede,Ade=F(()=>{"use strict";Xy();Ah();o(ynt,"baseAssign");Ede=ynt});function vnt(e,t){return e&&ou(t,lo(t),e)}var Rde,_de=F(()=>{"use strict";Xy();mf();o(vnt,"baseAssignIn");Rde=vnt});function bnt(e,t){if(t)return e.slice();var r=e.length,n=Ide?Ide(r):new e.constructor(r);return e.copy(n),n}var Mde,Lde,xnt,Dde,Ide,b3,OO=F(()=>{"use strict";gl();Mde=typeof exports=="object"&&exports&&!exports.nodeType&&exports,Lde=Mde&&typeof module=="object"&&module&&!module.nodeType&&module,xnt=Lde&&Lde.exports===Mde,Dde=xnt?Li.Buffer:void 0,Ide=Dde?Dde.allocUnsafe:void 0;o(bnt,"cloneBuffer");b3=bnt});function Tnt(e,t){for(var r=-1,n=e==null?0:e.length,i=0,a=[];++r<n;){var s=e[r];t(s,r,e)&&(a[i++]=s)}return a}var T3,BO=F(()=>{"use strict";o(Tnt,"arrayFilter");T3=Tnt});function Cnt(){return[]}var C3,$O=F(()=>{"use strict";o(Cnt,"stubArray");C3=Cnt});var wnt,knt,Nde,Snt,c1,w3=F(()=>{"use strict";BO();$O();wnt=Object.prototype,knt=wnt.propertyIsEnumerable,Nde=Object.getOwnPropertySymbols,Snt=Nde?function(e){return e==null?[]:(e=Object(e),T3(Nde(e),function(t){return knt.call(e,t)}))}:C3,c1=Snt});function Ent(e,t){return ou(e,c1(e),t)}var Pde,Ode=F(()=>{"use strict";Xy();w3();o(Ent,"copySymbols");Pde=Ent});var Ant,Rnt,k3,FO=F(()=>{"use strict";y3();x3();w3();$O();Ant=Object.getOwnPropertySymbols,Rnt=Ant?function(e){for(var t=[];e;)a1(t,c1(e)),e=o1(e);return t}:C3,k3=Rnt});function _nt(e,t){return ou(e,k3(e),t)}var Bde,$de=F(()=>{"use strict";Xy();FO();o(_nt,"copySymbolsIn");Bde=_nt});function Lnt(e,t,r){var n=t(e);return Yr(e)?n:a1(n,r(e))}var S3,zO=F(()=>{"use strict";y3();ji();o(Lnt,"baseGetAllKeys");S3=Lnt});function Dnt(e){return S3(e,Di,c1)}var oT,GO=F(()=>{"use strict";zO();w3();Ah();o(Dnt,"getAllKeys");oT=Dnt});function Int(e){return S3(e,lo,k3)}var Fde,zde=F(()=>{"use strict";zO();FO();mf();o(Int,"getAllKeysIn");Fde=Int});var Mnt,E3,Gde=F(()=>{"use strict";of();gl();Mnt=so(Li,"DataView"),E3=Mnt});var Nnt,A3,Vde=F(()=>{"use strict";of();gl();Nnt=so(Li,"Promise"),A3=Nnt});var Pnt,Cf,VO=F(()=>{"use strict";of();gl();Pnt=so(Li,"Set"),Cf=Pnt});var Wde,Ont,qde,Hde,Ude,Yde,Bnt,$nt,Fnt,znt,Gnt,Pm,Vo,Om=F(()=>{"use strict";Gde();p3();Vde();VO();Rue();af();bO();Wde="[object Map]",Ont="[object Object]",qde="[object Promise]",Hde="[object Set]",Ude="[object WeakMap]",Yde="[object DataView]",Bnt=kh(E3),$nt=kh(vf),Fnt=kh(A3),znt=kh(Cf),Gnt=kh(r3),Pm=Ds;(E3&&Pm(new E3(new ArrayBuffer(1)))!=Yde||vf&&Pm(new vf)!=Wde||A3&&Pm(A3.resolve())!=qde||Cf&&Pm(new Cf)!=Hde||r3&&Pm(new r3)!=Ude)&&(Pm=o(function(e){var t=Ds(e),r=t==Ont?e.constructor:void 0,n=r?kh(r):"";if(n)switch(n){case Bnt:return Yde;case $nt:return Wde;case Fnt:return qde;case znt:return Hde;case Gnt:return Ude}return t},"getTag"));Vo=Pm});function qnt(e){var t=e.length,r=new e.constructor(t);return t&&typeof e[0]=="string"&&Wnt.call(e,"index")&&(r.index=e.index,r.input=e.input),r}var Vnt,Wnt,jde,Xde=F(()=>{"use strict";Vnt=Object.prototype,Wnt=Vnt.hasOwnProperty;o(qnt,"initCloneArray");jde=qnt});var Hnt,u1,WO=F(()=>{"use strict";gl();Hnt=Li.Uint8Array,u1=Hnt});function Unt(e){var t=new e.constructor(e.byteLength);return new u1(t).set(new u1(e)),t}var h1,R3=F(()=>{"use strict";WO();o(Unt,"cloneArrayBuffer");h1=Unt});function Ynt(e,t){var r=t?h1(e.buffer):e.buffer;return new e.constructor(r,e.byteOffset,e.byteLength)}var Kde,Zde=F(()=>{"use strict";R3();o(Ynt,"cloneDataView");Kde=Ynt});function Xnt(e){var t=new e.constructor(e.source,jnt.exec(e));return t.lastIndex=e.lastIndex,t}var jnt,Qde,Jde=F(()=>{"use strict";jnt=/\w*$/;o(Xnt,"cloneRegExp");Qde=Xnt});function Knt(e){return tfe?Object(tfe.call(e)):{}}var efe,tfe,rfe,nfe=F(()=>{"use strict";Dm();efe=wa?wa.prototype:void 0,tfe=efe?efe.valueOf:void 0;o(Knt,"cloneSymbol");rfe=Knt});function Znt(e,t){var r=t?h1(e.buffer):e.buffer;return new e.constructor(r,e.byteOffset,e.length)}var _3,qO=F(()=>{"use strict";R3();o(Znt,"cloneTypedArray");_3=Znt});function yit(e,t,r){var n=e.constructor;switch(t){case sit:return h1(e);case Qnt:case Jnt:return new n(+e);case oit:return Kde(e,r);case lit:case cit:case uit:case hit:case dit:case fit:case pit:case mit:case git:return _3(e,r);case eit:return new n;case tit:case iit:return new n(e);case rit:return Qde(e);case nit:return new n;case ait:return rfe(e)}}var Qnt,Jnt,eit,tit,rit,nit,iit,ait,sit,oit,lit,cit,uit,hit,dit,fit,pit,mit,git,ife,afe=F(()=>{"use strict";R3();Zde();Jde();nfe();qO();Qnt="[object Boolean]",Jnt="[object Date]",eit="[object Map]",tit="[object Number]",rit="[object RegExp]",nit="[object Set]",iit="[object String]",ait="[object Symbol]",sit="[object ArrayBuffer]",oit="[object DataView]",lit="[object Float32Array]",cit="[object Float64Array]",uit="[object Int8Array]",hit="[object Int16Array]",dit="[object Int32Array]",fit="[object Uint8Array]",pit="[object Uint8ClampedArray]",mit="[object Uint16Array]",git="[object Uint32Array]";o(yit,"initCloneByTag");ife=yit});function vit(e){return typeof e.constructor=="function"&&!df(e)?Lue(o1(e)):{}}var L3,HO=F(()=>{"use strict";Due();x3();K2();o(vit,"initCloneObject");L3=vit});function bit(e){return Bi(e)&&Vo(e)==xit}var xit,sfe,ofe=F(()=>{"use strict";Om();lc();xit="[object Map]";o(bit,"baseIsMap");sfe=bit});var lfe,Tit,cfe,ufe=F(()=>{"use strict";ofe();Z2();c3();lfe=Eh&&Eh.isMap,Tit=lfe?ff(lfe):sfe,cfe=Tit});function wit(e){return Bi(e)&&Vo(e)==Cit}var Cit,hfe,dfe=F(()=>{"use strict";Om();lc();Cit="[object Set]";o(wit,"baseIsSet");hfe=wit});var ffe,kit,pfe,mfe=F(()=>{"use strict";dfe();Z2();c3();ffe=Eh&&Eh.isSet,kit=ffe?ff(ffe):hfe,pfe=kit});function D3(e,t,r,n,i,a){var s,l=t&Sit,u=t&Eit,h=t&Ait;if(r&&(s=i?r(e,n,i,a):r(e)),s!==void 0)return s;if(!fi(e))return e;var d=Yr(e);if(d){if(s=jde(e),!l)return n3(e,s)}else{var f=Vo(e),p=f==yfe||f==Iit;if(uc(e))return b3(e,l);if(f==vfe||f==gfe||p&&!i){if(s=u||p?{}:L3(e),!l)return u?Bde(e,Rde(s,e)):Pde(e,Ede(s,e))}else{if(!jn[f])return i?e:{};s=ife(e,f,l)}}a||(a=new uu);var m=a.get(e);if(m)return m;a.set(e,s),pfe(e)?e.forEach(function(v){s.add(D3(v,t,r,v,e,a))}):cfe(e)&&e.forEach(function(v,x){s.set(x,D3(v,t,r,x,e,a))});var g=h?u?Fde:oT:u?lo:Di,y=d?void 0:g(e);return a3(y||e,function(v,x){y&&(x=v,v=e[x]),uf(s,x,D3(v,t,r,x,e,a))}),s}var Sit,Eit,Ait,gfe,Rit,_it,Lit,Dit,yfe,Iit,Mit,Nit,vfe,Pit,Oit,Bit,$it,Fit,zit,Git,Vit,Wit,qit,Hit,Uit,Yit,jit,Xit,Kit,jn,I3,UO=F(()=>{"use strict";sT();SO();Y2();Ade();_de();OO();TO();Ode();$de();GO();zde();Om();Xde();afe();HO();ji();Qy();ufe();yl();mfe();Ah();mf();Sit=1,Eit=2,Ait=4,gfe="[object Arguments]",Rit="[object Array]",_it="[object Boolean]",Lit="[object Date]",Dit="[object Error]",yfe="[object Function]",Iit="[object GeneratorFunction]",Mit="[object Map]",Nit="[object Number]",vfe="[object Object]",Pit="[object RegExp]",Oit="[object Set]",Bit="[object String]",$it="[object Symbol]",Fit="[object WeakMap]",zit="[object ArrayBuffer]",Git="[object DataView]",Vit="[object Float32Array]",Wit="[object Float64Array]",qit="[object Int8Array]",Hit="[object Int16Array]",Uit="[object Int32Array]",Yit="[object Uint8Array]",jit="[object Uint8ClampedArray]",Xit="[object Uint16Array]",Kit="[object Uint32Array]",jn={};jn[gfe]=jn[Rit]=jn[zit]=jn[Git]=jn[_it]=jn[Lit]=jn[Vit]=jn[Wit]=jn[qit]=jn[Hit]=jn[Uit]=jn[Mit]=jn[Nit]=jn[vfe]=jn[Pit]=jn[Oit]=jn[Bit]=jn[$it]=jn[Yit]=jn[jit]=jn[Xit]=jn[Kit]=!0;jn[Dit]=jn[yfe]=jn[Fit]=!1;o(D3,"baseClone");I3=D3});function Qit(e){return I3(e,Zit)}var Zit,YO,xfe=F(()=>{"use strict";UO();Zit=4;o(Qit,"clone");YO=Qit});function tat(e){return I3(e,Jit|eat)}var Jit,eat,jO,bfe=F(()=>{"use strict";UO();Jit=1,eat=4;o(tat,"cloneDeep");jO=tat});function nat(e){return this.__data__.set(e,rat),this}var rat,Tfe,Cfe=F(()=>{"use strict";rat="__lodash_hash_undefined__";o(nat,"setCacheAdd");Tfe=nat});function iat(e){return this.__data__.has(e)}var wfe,kfe=F(()=>{"use strict";o(iat,"setCacheHas");wfe=iat});function M3(e){var t=-1,r=e==null?0:e.length;for(this.__data__=new Nm;++t<r;)this.add(e[t])}var N3,XO=F(()=>{"use strict";m3();Cfe();kfe();o(M3,"SetCache");M3.prototype.add=M3.prototype.push=Tfe;M3.prototype.has=wfe;N3=M3});function aat(e,t){for(var r=-1,n=e==null?0:e.length;++r<n;)if(t(e[r],r,e))return!0;return!1}var Sfe,Efe=F(()=>{"use strict";o(aat,"arraySome");Sfe=aat});function sat(e,t){return e.has(t)}var P3,KO=F(()=>{"use strict";o(sat,"cacheHas");P3=sat});function cat(e,t,r,n,i,a){var s=r&oat,l=e.length,u=t.length;if(l!=u&&!(s&&u>l))return!1;var h=a.get(e),d=a.get(t);if(h&&d)return h==t&&d==e;var f=-1,p=!0,m=r&lat?new N3:void 0;for(a.set(e,t),a.set(t,e);++f<l;){var g=e[f],y=t[f];if(n)var v=s?n(y,g,f,t,e,a):n(g,y,f,e,t,a);if(v!==void 0){if(v)continue;p=!1;break}if(m){if(!Sfe(t,function(x,b){if(!P3(m,b)&&(g===x||i(g,x,r,n,a)))return m.push(b)})){p=!1;break}}else if(!(g===y||i(g,y,r,n,a))){p=!1;break}}return a.delete(e),a.delete(t),p}var oat,lat,O3,ZO=F(()=>{"use strict";XO();Efe();KO();oat=1,lat=2;o(cat,"equalArrays");O3=cat});function uat(e){var t=-1,r=Array(e.size);return e.forEach(function(n,i){r[++t]=[i,n]}),r}var Afe,Rfe=F(()=>{"use strict";o(uat,"mapToArray");Afe=uat});function hat(e){var t=-1,r=Array(e.size);return e.forEach(function(n){r[++t]=n}),r}var d1,B3=F(()=>{"use strict";o(hat,"setToArray");d1=hat});function Sat(e,t,r,n,i,a,s){switch(r){case kat:if(e.byteLength!=t.byteLength||e.byteOffset!=t.byteOffset)return!1;e=e.buffer,t=t.buffer;case wat:return!(e.byteLength!=t.byteLength||!a(new u1(e),new u1(t)));case pat:case mat:case vat:return vl(+e,+t);case gat:return e.name==t.name&&e.message==t.message;case xat:case Tat:return e==t+"";case yat:var l=Afe;case bat:var u=n&dat;if(l||(l=d1),e.size!=t.size&&!u)return!1;var h=s.get(e);if(h)return h==t;n|=fat,s.set(e,t);var d=O3(l(e),l(t),n,i,a,s);return s.delete(e),d;case Cat:if(QO)return QO.call(e)==QO.call(t)}return!1}var dat,fat,pat,mat,gat,yat,vat,xat,bat,Tat,Cat,wat,kat,_fe,QO,Lfe,Dfe=F(()=>{"use strict";Dm();WO();Mm();ZO();Rfe();B3();dat=1,fat=2,pat="[object Boolean]",mat="[object Date]",gat="[object Error]",yat="[object Map]",vat="[object Number]",xat="[object RegExp]",bat="[object Set]",Tat="[object String]",Cat="[object Symbol]",wat="[object ArrayBuffer]",kat="[object DataView]",_fe=wa?wa.prototype:void 0,QO=_fe?_fe.valueOf:void 0;o(Sat,"equalByTag");Lfe=Sat});function _at(e,t,r,n,i,a){var s=r&Eat,l=oT(e),u=l.length,h=oT(t),d=h.length;if(u!=d&&!s)return!1;for(var f=u;f--;){var p=l[f];if(!(s?p in t:Rat.call(t,p)))return!1}var m=a.get(e),g=a.get(t);if(m&&g)return m==t&&g==e;var y=!0;a.set(e,t),a.set(t,e);for(var v=s;++f<u;){p=l[f];var x=e[p],b=t[p];if(n)var T=s?n(b,x,p,t,e,a):n(x,b,p,e,t,a);if(!(T===void 0?x===b||i(x,b,r,n,a):T)){y=!1;break}v||(v=p=="constructor")}if(y&&!v){var k=e.constructor,C=t.constructor;k!=C&&"constructor"in e&&"constructor"in t&&!(typeof k=="function"&&k instanceof k&&typeof C=="function"&&C instanceof C)&&(y=!1)}return a.delete(e),a.delete(t),y}var Eat,Aat,Rat,Ife,Mfe=F(()=>{"use strict";GO();Eat=1,Aat=Object.prototype,Rat=Aat.hasOwnProperty;o(_at,"equalObjects");Ife=_at});function Iat(e,t,r,n,i,a){var s=Yr(e),l=Yr(t),u=s?Pfe:Vo(e),h=l?Pfe:Vo(t);u=u==Nfe?$3:u,h=h==Nfe?$3:h;var d=u==$3,f=h==$3,p=u==h;if(p&&uc(e)){if(!uc(t))return!1;s=!0,d=!1}if(p&&!d)return a||(a=new uu),s||pf(e)?O3(e,t,r,n,i,a):Lfe(e,t,u,r,n,i,a);if(!(r&Lat)){var m=d&&Ofe.call(e,"__wrapped__"),g=f&&Ofe.call(t,"__wrapped__");if(m||g){var y=m?e.value():e,v=g?t.value():t;return a||(a=new uu),i(y,v,r,n,a)}}return p?(a||(a=new uu),Ife(e,t,r,n,i,a)):!1}var Lat,Nfe,Pfe,$3,Dat,Ofe,Bfe,$fe=F(()=>{"use strict";sT();ZO();Dfe();Mfe();Om();ji();Qy();J2();Lat=1,Nfe="[object Arguments]",Pfe="[object Array]",$3="[object Object]",Dat=Object.prototype,Ofe=Dat.hasOwnProperty;o(Iat,"baseIsEqualDeep");Bfe=Iat});function Ffe(e,t,r,n,i){return e===t?!0:e==null||t==null||!Bi(e)&&!Bi(t)?e!==e&&t!==t:Bfe(e,t,r,n,Ffe,i)}var F3,JO=F(()=>{"use strict";$fe();lc();o(Ffe,"baseIsEqual");F3=Ffe});function Pat(e,t,r,n){var i=r.length,a=i,s=!n;if(e==null)return!a;for(e=Object(e);i--;){var l=r[i];if(s&&l[2]?l[1]!==e[l[0]]:!(l[0]in e))return!1}for(;++i<a;){l=r[i];var u=l[0],h=e[u],d=l[1];if(s&&l[2]){if(h===void 0&&!(u in e))return!1}else{var f=new uu;if(n)var p=n(h,d,u,e,t,f);if(!(p===void 0?F3(d,h,Mat|Nat,n,f):p))return!1}}return!0}var Mat,Nat,zfe,Gfe=F(()=>{"use strict";sT();JO();Mat=1,Nat=2;o(Pat,"baseIsMatch");zfe=Pat});function Oat(e){return e===e&&!fi(e)}var z3,e9=F(()=>{"use strict";yl();o(Oat,"isStrictComparable");z3=Oat});function Bat(e){for(var t=Di(e),r=t.length;r--;){var n=t[r],i=e[n];t[r]=[n,i,z3(i)]}return t}var Vfe,Wfe=F(()=>{"use strict";e9();Ah();o(Bat,"getMatchData");Vfe=Bat});function $at(e,t){return function(r){return r==null?!1:r[e]===t&&(t!==void 0||e in Object(r))}}var G3,t9=F(()=>{"use strict";o($at,"matchesStrictComparable");G3=$at});function Fat(e){var t=Vfe(e);return t.length==1&&t[0][2]?G3(t[0][0],t[0][1]):function(r){return r===e||zfe(r,e,t)}}var qfe,Hfe=F(()=>{"use strict";Gfe();Wfe();t9();o(Fat,"baseMatches");qfe=Fat});function zat(e,t){return e!=null&&t in Object(e)}var Ufe,Yfe=F(()=>{"use strict";o(zat,"baseHasIn");Ufe=zat});function Gat(e,t,r){t=bf(t,e);for(var n=-1,i=t.length,a=!1;++n<i;){var s=cu(t[n]);if(!(a=e!=null&&r(e,s)))break;e=e[s]}return a||++n!=i?a:(i=e==null?0:e.length,!!i&&Ky(i)&&lf(s,i)&&(Yr(e)||cc(e)))}var V3,r9=F(()=>{"use strict";iT();Zy();ji();H2();l3();i1();o(Gat,"hasPath");V3=Gat});function Vat(e,t){return e!=null&&V3(e,t,Ufe)}var W3,n9=F(()=>{"use strict";Yfe();r9();o(Vat,"hasIn");W3=Vat});function Hat(e,t){return e1(e)&&z3(t)?G3(cu(e),t):function(r){var n=tde(r,e);return n===void 0&&n===t?W3(r,e):F3(t,n,Wat|qat)}}var Wat,qat,jfe,Xfe=F(()=>{"use strict";JO();rde();n9();f3();e9();t9();i1();Wat=1,qat=2;o(Hat,"baseMatchesProperty");jfe=Hat});function Uat(e){return function(t){return t?.[e]}}var q3,i9=F(()=>{"use strict";o(Uat,"baseProperty");q3=Uat});function Yat(e){return function(t){return Tf(t,e)}}var Kfe,Zfe=F(()=>{"use strict";aT();o(Yat,"basePropertyDeep");Kfe=Yat});function jat(e){return e1(e)?q3(cu(e)):Kfe(e)}var Qfe,Jfe=F(()=>{"use strict";i9();Zfe();f3();i1();o(jat,"property");Qfe=jat});function Xat(e){return typeof e=="function"?e:e==null?ao:typeof e=="object"?Yr(e)?jfe(e[0],e[1]):qfe(e):Qfe(e)}var os,_h=F(()=>{"use strict";Hfe();Xfe();sf();ji();Jfe();o(Xat,"baseIteratee");os=Xat});function Kat(e){return function(t,r,n){for(var i=-1,a=Object(t),s=n(t),l=s.length;l--;){var u=s[e?l:++i];if(r(a[u],u,a)===!1)break}return t}}var epe,tpe=F(()=>{"use strict";o(Kat,"createBaseFor");epe=Kat});var Zat,f1,H3=F(()=>{"use strict";tpe();Zat=epe(),f1=Zat});function Qat(e,t){return e&&f1(e,t,Di)}var p1,U3=F(()=>{"use strict";H3();Ah();o(Qat,"baseForOwn");p1=Qat});function Jat(e,t){return function(r,n){if(r==null)return r;if(!ka(r))return e(r,n);for(var i=r.length,a=t?i:-1,s=Object(r);(t?a--:++a<i)&&n(s[a],a,s)!==!1;);return r}}var rpe,npe=F(()=>{"use strict";lu();o(Jat,"createBaseEach");rpe=Jat});var est,wf,lT=F(()=>{"use strict";U3();npe();est=rpe(p1),wf=est});var tst,Y3,ipe=F(()=>{"use strict";gl();tst=o(function(){return Li.Date.now()},"now"),Y3=tst});var ape,rst,nst,a9,spe=F(()=>{"use strict";j2();Mm();X2();mf();ape=Object.prototype,rst=ape.hasOwnProperty,nst=hf(function(e,t){e=Object(e);var r=-1,n=t.length,i=n>2?t[2]:void 0;for(i&&Sh(t[0],t[1],i)&&(n=1);++r<n;)for(var a=t[r],s=lo(a),l=-1,u=s.length;++l<u;){var h=s[l],d=e[h];(d===void 0||vl(d,ape[h])&&!rst.call(e,h))&&(e[h]=a[h])}return e}),a9=nst});function ist(e,t,r){(r!==void 0&&!vl(e[t],r)||r===void 0&&!(t in e))&&cf(e,t,r)}var cT,s9=F(()=>{"use strict";U2();Mm();o(ist,"assignMergeValue");cT=ist});function ast(e){return Bi(e)&&ka(e)}var j3,o9=F(()=>{"use strict";lu();lc();o(ast,"isArrayLikeObject");j3=ast});function sst(e,t){if(!(t==="constructor"&&typeof e[t]=="function")&&t!="__proto__")return e[t]}var uT,l9=F(()=>{"use strict";o(sst,"safeGet");uT=sst});function ost(e){return ou(e,lo(e))}var ope,lpe=F(()=>{"use strict";Xy();mf();o(ost,"toPlainObject");ope=ost});function lst(e,t,r,n,i,a,s){var l=uT(e,r),u=uT(t,r),h=s.get(u);if(h){cT(e,r,h);return}var d=a?a(l,u,r+"",e,t,s):void 0,f=d===void 0;if(f){var p=Yr(u),m=!p&&uc(u),g=!p&&!m&&pf(u);d=u,p||m||g?Yr(l)?d=l:j3(l)?d=n3(l):m?(f=!1,d=b3(u,!0)):g?(f=!1,d=_3(u,!0)):d=[]:ude(u)||cc(u)?(d=l,cc(l)?d=ope(l):(!fi(l)||su(l))&&(d=L3(u))):f=!1}f&&(s.set(u,d),i(d,u,n,a,s),s.delete(u)),cT(e,r,d)}var cpe,upe=F(()=>{"use strict";s9();OO();qO();TO();HO();Zy();ji();o9();Qy();q2();yl();hde();J2();l9();lpe();o(lst,"baseMergeDeep");cpe=lst});function hpe(e,t,r,n,i){e!==t&&f1(t,function(a,s){if(i||(i=new uu),fi(a))cpe(e,t,s,r,hpe,n,i);else{var l=n?n(uT(e,s),a,s+"",e,t,i):void 0;l===void 0&&(l=a),cT(e,s,l)}},lo)}var dpe,fpe=F(()=>{"use strict";sT();s9();H3();upe();yl();mf();l9();o(hpe,"baseMerge");dpe=hpe});function cst(e,t,r){for(var n=-1,i=e==null?0:e.length;++n<i;)if(r(t,e[n]))return!0;return!1}var ppe,mpe=F(()=>{"use strict";o(cst,"arrayIncludesWith");ppe=cst});function ust(e){var t=e==null?0:e.length;return t?e[t-1]:void 0}var kf,gpe=F(()=>{"use strict";o(ust,"last");kf=ust});function hst(e){return typeof e=="function"?e:ao}var m1,X3=F(()=>{"use strict";sf();o(hst,"castFunction");m1=hst});function dst(e,t){var r=Yr(e)?a3:wf;return r(e,m1(t))}var st,c9=F(()=>{"use strict";SO();lT();X3();ji();o(dst,"forEach");st=dst});var ype=F(()=>{"use strict";c9()});function fst(e,t){var r=[];return wf(e,function(n,i,a){t(n,i,a)&&r.push(n)}),r}var vpe,xpe=F(()=>{"use strict";lT();o(fst,"baseFilter");vpe=fst});function pst(e,t){var r=Yr(e)?T3:vpe;return r(e,os(t,3))}var Is,bpe=F(()=>{"use strict";BO();xpe();_h();ji();o(pst,"filter");Is=pst});function mst(e){return function(t,r,n){var i=Object(t);if(!ka(t)){var a=os(r,3);t=Di(t),r=o(function(l){return a(i[l],l,i)},"predicate")}var s=e(t,r,n);return s>-1?i[a?t[s]:s]:void 0}}var Tpe,Cpe=F(()=>{"use strict";_h();lu();Ah();o(mst,"createFind");Tpe=mst});function yst(e,t,r){var n=e==null?0:e.length;if(!n)return-1;var i=r==null?0:vue(r);return i<0&&(i=gst(n+i,0)),s3(e,os(t,3),i)}var gst,wpe,kpe=F(()=>{"use strict";EO();_h();xue();gst=Math.max;o(yst,"findIndex");wpe=yst});var vst,g1,Spe=F(()=>{"use strict";Cpe();kpe();vst=Tpe(wpe),g1=vst});function xst(e,t){var r=-1,n=ka(e)?Array(e.length):[];return wf(e,function(i,a,s){n[++r]=t(i,a,s)}),n}var K3,u9=F(()=>{"use strict";lT();lu();o(xst,"baseMap");K3=xst});function bst(e,t){var r=Yr(e)?au:K3;return r(e,os(t,3))}var mn,Epe=F(()=>{"use strict";W2();_h();u9();ji();o(bst,"map");mn=bst});function Tst(e,t){return e==null?e:f1(e,m1(t),lo)}var h9,Ape=F(()=>{"use strict";H3();X3();mf();o(Tst,"forIn");h9=Tst});function Cst(e,t){return e&&p1(e,m1(t))}var d9,Rpe=F(()=>{"use strict";U3();X3();o(Cst,"forOwn");d9=Cst});function wst(e,t){return e>t}var _pe,Lpe=F(()=>{"use strict";o(wst,"baseGt");_pe=wst});function Est(e,t){return e!=null&&Sst.call(e,t)}var kst,Sst,Dpe,Ipe=F(()=>{"use strict";kst=Object.prototype,Sst=kst.hasOwnProperty;o(Est,"baseHas");Dpe=Est});function Ast(e,t){return e!=null&&V3(e,t,Dpe)}var hT,Mpe=F(()=>{"use strict";Ipe();r9();o(Ast,"has");hT=Ast});function _st(e){return typeof e=="string"||!Yr(e)&&Bi(e)&&Ds(e)==Rst}var Rst,Npe,Ppe=F(()=>{"use strict";af();ji();lc();Rst="[object String]";o(_st,"isString");Npe=_st});function Lst(e,t){return au(t,function(r){return e[r]})}var Ope,Bpe=F(()=>{"use strict";W2();o(Lst,"baseValues");Ope=Lst});function Dst(e){return e==null?[]:Ope(e,Di(e))}var Wo,$pe=F(()=>{"use strict";Bpe();Ah();o(Dst,"values");Wo=Dst});function Ost(e){if(e==null)return!0;if(ka(e)&&(Yr(e)||typeof e=="string"||typeof e.splice=="function"||uc(e)||pf(e)||cc(e)))return!e.length;var t=Vo(e);if(t==Ist||t==Mst)return!e.size;if(df(e))return!Jy(e).length;for(var r in e)if(Pst.call(e,r))return!1;return!0}var Ist,Mst,Nst,Pst,Z3,Fpe=F(()=>{"use strict";d3();Om();Zy();ji();lu();Qy();K2();J2();Ist="[object Map]",Mst="[object Set]",Nst=Object.prototype,Pst=Nst.hasOwnProperty;o(Ost,"isEmpty");Z3=Ost});function Bst(e){return e===void 0}var Fn,zpe=F(()=>{"use strict";o(Bst,"isUndefined");Fn=Bst});function $st(e,t){return e<t}var Q3,f9=F(()=>{"use strict";o($st,"baseLt");Q3=$st});function Fst(e,t){var r={};return t=os(t,3),p1(e,function(n,i,a){cf(r,i,t(n,i,a))}),r}var Bm,Gpe=F(()=>{"use strict";U2();U3();_h();o(Fst,"mapValues");Bm=Fst});function zst(e,t,r){for(var n=-1,i=e.length;++n<i;){var a=e[n],s=t(a);if(s!=null&&(l===void 0?s===s&&!Go(s):r(s,l)))var l=s,u=a}return u}var y1,J3=F(()=>{"use strict";Im();o(zst,"baseExtremum");y1=zst});function Gst(e){return e&&e.length?y1(e,ao,_pe):void 0}var co,Vpe=F(()=>{"use strict";J3();Lpe();sf();o(Gst,"max");co=Gst});var Vst,v1,Wpe=F(()=>{"use strict";fpe();Kue();Vst=Xue(function(e,t,r){dpe(e,t,r)}),v1=Vst});function Wst(e){return e&&e.length?y1(e,ao,Q3):void 0}var Lh,qpe=F(()=>{"use strict";J3();f9();sf();o(Wst,"min");Lh=Wst});function qst(e,t){return e&&e.length?y1(e,os(t,2),Q3):void 0}var $m,Hpe=F(()=>{"use strict";J3();_h();f9();o(qst,"minBy");$m=qst});function Hst(e,t,r,n){if(!fi(e))return e;t=bf(t,e);for(var i=-1,a=t.length,s=a-1,l=e;l!=null&&++i<a;){var u=cu(t[i]),h=r;if(u==="__proto__"||u==="constructor"||u==="prototype")return e;if(i!=s){var d=l[u];h=n?n(d,u,l):void 0,h===void 0&&(h=fi(d)?d:lf(t[i+1])?[]:{})}uf(l,u,h),l=l[u]}return e}var Upe,Ype=F(()=>{"use strict";Y2();iT();H2();yl();i1();o(Hst,"baseSet");Upe=Hst});function Ust(e,t,r){for(var n=-1,i=t.length,a={};++n<i;){var s=t[n],l=Tf(e,s);r(l,s)&&Upe(a,bf(s,e),l)}return a}var jpe,Xpe=F(()=>{"use strict";aT();Ype();iT();o(Ust,"basePickBy");jpe=Ust});function Yst(e,t){var r=e.length;for(e.sort(t);r--;)e[r]=e[r].value;return e}var Kpe,Zpe=F(()=>{"use strict";o(Yst,"baseSortBy");Kpe=Yst});function jst(e,t){if(e!==t){var r=e!==void 0,n=e===null,i=e===e,a=Go(e),s=t!==void 0,l=t===null,u=t===t,h=Go(t);if(!l&&!h&&!a&&e>t||a&&s&&u&&!l&&!h||n&&s&&u||!r&&u||!i)return 1;if(!n&&!a&&!h&&e<t||h&&r&&i&&!n&&!a||l&&r&&i||!s&&i||!u)return-1}return 0}var Qpe,Jpe=F(()=>{"use strict";Im();o(jst,"compareAscending");Qpe=jst});function Xst(e,t,r){for(var n=-1,i=e.criteria,a=t.criteria,s=i.length,l=r.length;++n<s;){var u=Qpe(i[n],a[n]);if(u){if(n>=l)return u;var h=r[n];return u*(h=="desc"?-1:1)}}return e.index-t.index}var eme,tme=F(()=>{"use strict";Jpe();o(Xst,"compareMultiple");eme=Xst});function Kst(e,t,r){t.length?t=au(t,function(a){return Yr(a)?function(s){return Tf(s,a.length===1?a[0]:a)}:a}):t=[ao];var n=-1;t=au(t,ff(os));var i=K3(e,function(a,s,l){var u=au(t,function(h){return h(a)});return{criteria:u,index:++n,value:a}});return Kpe(i,function(a,s){return eme(a,s,r)})}var rme,nme=F(()=>{"use strict";W2();aT();_h();u9();Zpe();Z2();tme();sf();ji();o(Kst,"baseOrderBy");rme=Kst});var Zst,ime,ame=F(()=>{"use strict";i9();Zst=q3("length"),ime=Zst});function cot(e){for(var t=sme.lastIndex=0;sme.test(e);)++t;return t}var ome,Qst,Jst,eot,tot,rot,not,p9,m9,iot,lme,cme,ume,aot,hme,dme,sot,oot,lot,sme,fme,pme=F(()=>{"use strict";ome="\\ud800-\\udfff",Qst="\\u0300-\\u036f",Jst="\\ufe20-\\ufe2f",eot="\\u20d0-\\u20ff",tot=Qst+Jst+eot,rot="\\ufe0e\\ufe0f",not="["+ome+"]",p9="["+tot+"]",m9="\\ud83c[\\udffb-\\udfff]",iot="(?:"+p9+"|"+m9+")",lme="[^"+ome+"]",cme="(?:\\ud83c[\\udde6-\\uddff]){2}",ume="[\\ud800-\\udbff][\\udc00-\\udfff]",aot="\\u200d",hme=iot+"?",dme="["+rot+"]?",sot="(?:"+aot+"(?:"+[lme,cme,ume].join("|")+")"+dme+hme+")*",oot=dme+hme+sot,lot="(?:"+[lme+p9+"?",p9,cme,ume,not].join("|")+")",sme=RegExp(m9+"(?="+m9+")|"+lot+oot,"g");o(cot,"unicodeSize");fme=cot});function uot(e){return dde(e)?fme(e):ime(e)}var mme,gme=F(()=>{"use strict";ame();fde();pme();o(uot,"stringSize");mme=uot});function hot(e,t){return jpe(e,t,function(r,n){return W3(e,n)})}var yme,vme=F(()=>{"use strict";Xpe();n9();o(hot,"basePick");yme=hot});var dot,Fm,xme=F(()=>{"use strict";vme();lde();dot=ode(function(e,t){return e==null?{}:yme(e,t)}),Fm=dot});function mot(e,t,r,n){for(var i=-1,a=pot(fot((t-e)/(r||1)),0),s=Array(a);a--;)s[n?a:++i]=e,e+=r;return s}var fot,pot,bme,Tme=F(()=>{"use strict";fot=Math.ceil,pot=Math.max;o(mot,"baseRange");bme=mot});function got(e){return function(t,r,n){return n&&typeof n!="number"&&Sh(t,r,n)&&(r=n=void 0),t=Yy(t),r===void 0?(r=t,t=0):r=Yy(r),n=n===void 0?t<r?1:-1:Yy(n),bme(t,r,n,e)}}var Cme,wme=F(()=>{"use strict";Tme();X2();xO();o(got,"createRange");Cme=got});var yot,bl,kme=F(()=>{"use strict";wme();yot=Cme(),bl=yot});function vot(e,t,r,n,i){return i(e,function(a,s,l){r=n?(n=!1,a):t(r,a,s,l)}),r}var Sme,Eme=F(()=>{"use strict";o(vot,"baseReduce");Sme=vot});function xot(e,t,r){var n=Yr(e)?pde:Sme,i=arguments.length<3;return n(e,os(t,4),r,i,wf)}var hu,Ame=F(()=>{"use strict";mde();lT();_h();Eme();ji();o(xot,"reduce");hu=xot});function Cot(e){if(e==null)return 0;if(ka(e))return Npe(e)?mme(e):e.length;var t=Vo(e);return t==bot||t==Tot?e.size:Jy(e).length}var bot,Tot,g9,Rme=F(()=>{"use strict";d3();Om();lu();Ppe();gme();bot="[object Map]",Tot="[object Set]";o(Cot,"size");g9=Cot});var wot,du,_me=F(()=>{"use strict";v3();nme();j2();X2();wot=hf(function(e,t){if(e==null)return[];var r=t.length;return r>1&&Sh(e,t[0],t[1])?t=[]:r>2&&Sh(t[0],t[1],t[2])&&(t=[t[0]]),rme(e,s1(t,1),[])}),du=wot});var kot,Sot,Lme,Dme=F(()=>{"use strict";VO();Pue();B3();kot=1/0,Sot=Cf&&1/d1(new Cf([,-0]))[1]==kot?function(e){return new Cf(e)}:Nue,Lme=Sot});function Aot(e,t,r){var n=-1,i=Uue,a=e.length,s=!0,l=[],u=l;if(r)s=!1,i=ppe;else if(a>=Eot){var h=t?null:Lme(e);if(h)return d1(h);s=!1,i=P3,u=new N3}else u=t?[]:l;e:for(;++n<a;){var d=e[n],f=t?t(d):d;if(d=r||d!==0?d:0,s&&f===f){for(var p=u.length;p--;)if(u[p]===f)continue e;t&&u.push(f),l.push(d)}else i(u,f,r)||(u!==l&&u.push(f),l.push(d))}return l}var Eot,Ime,Mme=F(()=>{"use strict";XO();Yue();mpe();KO();Dme();B3();Eot=200;o(Aot,"baseUniq");Ime=Aot});var Rot,y9,Nme=F(()=>{"use strict";v3();j2();Mme();o9();Rot=hf(function(e){return Ime(s1(e,1,j3,!0))}),y9=Rot});function Lot(e){var t=++_ot;return g3(e)+t}var _ot,zm,Pme=F(()=>{"use strict";NO();_ot=0;o(Lot,"uniqueId");zm=Lot});function Dot(e,t,r){for(var n=-1,i=e.length,a=t.length,s={};++n<i;){var l=n<a?t[n]:void 0;r(s,e[n],l)}return s}var Ome,Bme=F(()=>{"use strict";o(Dot,"baseZipObject");Ome=Dot});function Iot(e,t){return Ome(e||[],t||[],uf)}var e5,$me=F(()=>{"use strict";Y2();Bme();o(Iot,"zipObject");e5=Iot});var Ln=F(()=>{"use strict";xfe();bfe();CO();spe();ype();bpe();Spe();PO();c9();Ape();Rpe();Mpe();ji();Fpe();q2();zpe();Ah();gpe();Epe();Gpe();Vpe();Wpe();qpe();Hpe();ipe();xme();kme();Ame();Rme();_me();Nme();Pme();$pe();$me();});function zme(e,t){e[t]?e[t]++:e[t]=1}function Gme(e,t){--e[t]||delete e[t]}function dT(e,t,r,n){var i=""+t,a=""+r;if(!e&&i>a){var s=i;i=a,a=s}return i+Fme+a+Fme+(Fn(n)?Mot:n)}function Not(e,t,r,n){var i=""+t,a=""+r;if(!e&&i>a){var s=i;i=a,a=s}var l={v:i,w:a};return n&&(l.name=n),l}function v9(e,t){return dT(e,t.v,t.w,t.name)}var Mot,Gm,Fme,on,t5=F(()=>{"use strict";Ln();Mot="\0",Gm="\0",Fme="",on=class{static{o(this,"Graph")}constructor(t={}){this._isDirected=Object.prototype.hasOwnProperty.call(t,"directed")?t.directed:!0,this._isMultigraph=Object.prototype.hasOwnProperty.call(t,"multigraph")?t.multigraph:!1,this._isCompound=Object.prototype.hasOwnProperty.call(t,"compound")?t.compound:!1,this._label=void 0,this._defaultNodeLabelFn=oo(void 0),this._defaultEdgeLabelFn=oo(void 0),this._nodes={},this._isCompound&&(this._parent={},this._children={},this._children[Gm]={}),this._in={},this._preds={},this._out={},this._sucs={},this._edgeObjs={},this._edgeLabels={}}isDirected(){return this._isDirected}isMultigraph(){return this._isMultigraph}isCompound(){return this._isCompound}setGraph(t){return this._label=t,this}graph(){return this._label}setDefaultNodeLabel(t){return su(t)||(t=oo(t)),this._defaultNodeLabelFn=t,this}nodeCount(){return this._nodeCount}nodes(){return Di(this._nodes)}sources(){var t=this;return Is(this.nodes(),function(r){return Z3(t._in[r])})}sinks(){var t=this;return Is(this.nodes(),function(r){return Z3(t._out[r])})}setNodes(t,r){var n=arguments,i=this;return st(t,function(a){n.length>1?i.setNode(a,r):i.setNode(a)}),this}setNode(t,r){return Object.prototype.hasOwnProperty.call(this._nodes,t)?(arguments.length>1&&(this._nodes[t]=r),this):(this._nodes[t]=arguments.length>1?r:this._defaultNodeLabelFn(t),this._isCompound&&(this._parent[t]=Gm,this._children[t]={},this._children[Gm][t]=!0),this._in[t]={},this._preds[t]={},this._out[t]={},this._sucs[t]={},++this._nodeCount,this)}node(t){return this._nodes[t]}hasNode(t){return Object.prototype.hasOwnProperty.call(this._nodes,t)}removeNode(t){if(Object.prototype.hasOwnProperty.call(this._nodes,t)){var r=o(n=>this.removeEdge(this._edgeObjs[n]),"removeEdge");delete this._nodes[t],this._isCompound&&(this._removeFromParentsChildList(t),delete this._parent[t],st(this.children(t),n=>{this.setParent(n)}),delete this._children[t]),st(Di(this._in[t]),r),delete this._in[t],delete this._preds[t],st(Di(this._out[t]),r),delete this._out[t],delete this._sucs[t],--this._nodeCount}return this}setParent(t,r){if(!this._isCompound)throw new Error("Cannot set parent in a non-compound graph");if(Fn(r))r=Gm;else{r+="";for(var n=r;!Fn(n);n=this.parent(n))if(n===t)throw new Error("Setting "+r+" as parent of "+t+" would create a cycle");this.setNode(r)}return this.setNode(t),this._removeFromParentsChildList(t),this._parent[t]=r,this._children[r][t]=!0,this}_removeFromParentsChildList(t){delete this._children[this._parent[t]][t]}parent(t){if(this._isCompound){var r=this._parent[t];if(r!==Gm)return r}}children(t){if(Fn(t)&&(t=Gm),this._isCompound){var r=this._children[t];if(r)return Di(r)}else{if(t===Gm)return this.nodes();if(this.hasNode(t))return[]}}predecessors(t){var r=this._preds[t];if(r)return Di(r)}successors(t){var r=this._sucs[t];if(r)return Di(r)}neighbors(t){var r=this.predecessors(t);if(r)return y9(r,this.successors(t))}isLeaf(t){var r;return this.isDirected()?r=this.successors(t):r=this.neighbors(t),r.length===0}filterNodes(t){var r=new this.constructor({directed:this._isDirected,multigraph:this._isMultigraph,compound:this._isCompound});r.setGraph(this.graph());var n=this;st(this._nodes,function(s,l){t(l)&&r.setNode(l,s)}),st(this._edgeObjs,function(s){r.hasNode(s.v)&&r.hasNode(s.w)&&r.setEdge(s,n.edge(s))});var i={};function a(s){var l=n.parent(s);return l===void 0||r.hasNode(l)?(i[s]=l,l):l in i?i[l]:a(l)}return o(a,"findParent"),this._isCompound&&st(r.nodes(),function(s){r.setParent(s,a(s))}),r}setDefaultEdgeLabel(t){return su(t)||(t=oo(t)),this._defaultEdgeLabelFn=t,this}edgeCount(){return this._edgeCount}edges(){return Wo(this._edgeObjs)}setPath(t,r){var n=this,i=arguments;return hu(t,function(a,s){return i.length>1?n.setEdge(a,s,r):n.setEdge(a,s),s}),this}setEdge(){var t,r,n,i,a=!1,s=arguments[0];typeof s=="object"&&s!==null&&"v"in s?(t=s.v,r=s.w,n=s.name,arguments.length===2&&(i=arguments[1],a=!0)):(t=s,r=arguments[1],n=arguments[3],arguments.length>2&&(i=arguments[2],a=!0)),t=""+t,r=""+r,Fn(n)||(n=""+n);var l=dT(this._isDirected,t,r,n);if(Object.prototype.hasOwnProperty.call(this._edgeLabels,l))return a&&(this._edgeLabels[l]=i),this;if(!Fn(n)&&!this._isMultigraph)throw new Error("Cannot set a named edge when isMultigraph = false");this.setNode(t),this.setNode(r),this._edgeLabels[l]=a?i:this._defaultEdgeLabelFn(t,r,n);var u=Not(this._isDirected,t,r,n);return t=u.v,r=u.w,Object.freeze(u),this._edgeObjs[l]=u,zme(this._preds[r],t),zme(this._sucs[t],r),this._in[r][l]=u,this._out[t][l]=u,this._edgeCount++,this}edge(t,r,n){var i=arguments.length===1?v9(this._isDirected,arguments[0]):dT(this._isDirected,t,r,n);return this._edgeLabels[i]}hasEdge(t,r,n){var i=arguments.length===1?v9(this._isDirected,arguments[0]):dT(this._isDirected,t,r,n);return Object.prototype.hasOwnProperty.call(this._edgeLabels,i)}removeEdge(t,r,n){var i=arguments.length===1?v9(this._isDirected,arguments[0]):dT(this._isDirected,t,r,n),a=this._edgeObjs[i];return a&&(t=a.v,r=a.w,delete this._edgeLabels[i],delete this._edgeObjs[i],Gme(this._preds[r],t),Gme(this._sucs[t],r),delete this._in[r][i],delete this._out[t][i],this._edgeCount--),this}inEdges(t,r){var n=this._in[t];if(n){var i=Wo(n);return r?Is(i,function(a){return a.v===r}):i}}outEdges(t,r){var n=this._out[t];if(n){var i=Wo(n);return r?Is(i,function(a){return a.w===r}):i}}nodeEdges(t,r){var n=this.inEdges(t,r);if(n)return n.concat(this.outEdges(t,r))}};on.prototype._nodeCount=0;on.prototype._edgeCount=0;o(zme,"incrementOrInitEntry");o(Gme,"decrementOrRemoveEntry");o(dT,"edgeArgsToId");o(Not,"edgeArgsToObj");o(v9,"edgeObjToId")});var qo=F(()=>{"use strict";t5()});function Vme(e){e._prev._next=e._next,e._next._prev=e._prev,delete e._next,delete e._prev}function Pot(e,t){if(e!=="_next"&&e!=="_prev")return t}var r5,Wme=F(()=>{"use strict";r5=class{static{o(this,"List")}constructor(){var t={};t._next=t._prev=t,this._sentinel=t}dequeue(){var t=this._sentinel,r=t._prev;if(r!==t)return Vme(r),r}enqueue(t){var r=this._sentinel;t._prev&&t._next&&Vme(t),t._next=r._next,r._next._prev=t,r._next=t,t._prev=r}toString(){for(var t=[],r=this._sentinel,n=r._prev;n!==r;)t.push(JSON.stringify(n,Pot)),n=n._prev;return"["+t.join(", ")+"]"}};o(Vme,"unlink");o(Pot,"filterOutLinks")});function qme(e,t){if(e.nodeCount()<=1)return[];var r=$ot(e,t||Oot),n=Bot(r.graph,r.buckets,r.zeroIdx);return xl(mn(n,function(i){return e.outEdges(i.v,i.w)}))}function Bot(e,t,r){for(var n=[],i=t[t.length-1],a=t[0],s;e.nodeCount();){for(;s=a.dequeue();)x9(e,t,r,s);for(;s=i.dequeue();)x9(e,t,r,s);if(e.nodeCount()){for(var l=t.length-2;l>0;--l)if(s=t[l].dequeue(),s){n=n.concat(x9(e,t,r,s,!0));break}}}return n}function x9(e,t,r,n,i){var a=i?[]:void 0;return st(e.inEdges(n.v),function(s){var l=e.edge(s),u=e.node(s.v);i&&a.push({v:s.v,w:s.w}),u.out-=l,b9(t,r,u)}),st(e.outEdges(n.v),function(s){var l=e.edge(s),u=s.w,h=e.node(u);h.in-=l,b9(t,r,h)}),e.removeNode(n.v),a}function $ot(e,t){var r=new on,n=0,i=0;st(e.nodes(),function(l){r.setNode(l,{v:l,in:0,out:0})}),st(e.edges(),function(l){var u=r.edge(l.v,l.w)||0,h=t(l),d=u+h;r.setEdge(l.v,l.w,d),i=Math.max(i,r.node(l.v).out+=h),n=Math.max(n,r.node(l.w).in+=h)});var a=bl(i+n+3).map(function(){return new r5}),s=n+1;return st(r.nodes(),function(l){b9(a,s,r.node(l))}),{graph:r,buckets:a,zeroIdx:s}}function b9(e,t,r){r.out?r.in?e[r.out-r.in+t].enqueue(r):e[e.length-1].enqueue(r):e[0].enqueue(r)}var Oot,Hme=F(()=>{"use strict";Ln();qo();Wme();Oot=oo(1);o(qme,"greedyFAS");o(Bot,"doGreedyFAS");o(x9,"removeNode");o($ot,"buildState");o(b9,"assignBucket")});function Ume(e){var t=e.graph().acyclicer==="greedy"?qme(e,r(e)):Fot(e);st(t,function(n){var i=e.edge(n);e.removeEdge(n),i.forwardName=n.name,i.reversed=!0,e.setEdge(n.w,n.v,i,zm("rev"))});function r(n){return function(i){return n.edge(i).weight}}o(r,"weightFn")}function Fot(e){var t=[],r={},n={};function i(a){Object.prototype.hasOwnProperty.call(n,a)||(n[a]=!0,r[a]=!0,st(e.outEdges(a),function(s){Object.prototype.hasOwnProperty.call(r,s.w)?t.push(s):i(s.w)}),delete r[a])}return o(i,"dfs"),st(e.nodes(),i),t}function Yme(e){st(e.edges(),function(t){var r=e.edge(t);if(r.reversed){e.removeEdge(t);var n=r.forwardName;delete r.reversed,delete r.forwardName,e.setEdge(t.w,t.v,r,n)}})}var T9=F(()=>{"use strict";Ln();Hme();o(Ume,"run");o(Fot,"dfsFAS");o(Yme,"undo")});function fu(e,t,r,n){var i;do i=zm(n);while(e.hasNode(i));return r.dummy=t,e.setNode(i,r),i}function Xme(e){var t=new on().setGraph(e.graph());return st(e.nodes(),function(r){t.setNode(r,e.node(r))}),st(e.edges(),function(r){var n=t.edge(r.v,r.w)||{weight:0,minlen:1},i=e.edge(r);t.setEdge(r.v,r.w,{weight:n.weight+i.weight,minlen:Math.max(n.minlen,i.minlen)})}),t}function n5(e){var t=new on({multigraph:e.isMultigraph()}).setGraph(e.graph());return st(e.nodes(),function(r){e.children(r).length||t.setNode(r,e.node(r))}),st(e.edges(),function(r){t.setEdge(r,e.edge(r))}),t}function C9(e,t){var r=e.x,n=e.y,i=t.x-r,a=t.y-n,s=e.width/2,l=e.height/2;if(!i&&!a)throw new Error("Not possible to find intersection inside of the rectangle");var u,h;return Math.abs(a)*s>Math.abs(i)*l?(a<0&&(l=-l),u=l*i/a,h=l):(i<0&&(s=-s),u=s,h=s*a/i),{x:r+u,y:n+h}}function Sf(e){var t=mn(bl(k9(e)+1),function(){return[]});return st(e.nodes(),function(r){var n=e.node(r),i=n.rank;Fn(i)||(t[i][n.order]=r)}),t}function Kme(e){var t=Lh(mn(e.nodes(),function(r){return e.node(r).rank}));st(e.nodes(),function(r){var n=e.node(r);hT(n,"rank")&&(n.rank-=t)})}function Zme(e){var t=Lh(mn(e.nodes(),function(a){return e.node(a).rank})),r=[];st(e.nodes(),function(a){var s=e.node(a).rank-t;r[s]||(r[s]=[]),r[s].push(a)});var n=0,i=e.graph().nodeRankFactor;st(r,function(a,s){Fn(a)&&s%i!==0?--n:n&&st(a,function(l){e.node(l).rank+=n})})}function w9(e,t,r,n){var i={width:0,height:0};return arguments.length>=4&&(i.rank=r,i.order=n),fu(e,"border",i,t)}function k9(e){return co(mn(e.nodes(),function(t){var r=e.node(t).rank;if(!Fn(r))return r}))}function Qme(e,t){var r={lhs:[],rhs:[]};return st(e,function(n){t(n)?r.lhs.push(n):r.rhs.push(n)}),r}function Jme(e,t){var r=Y3();try{return t()}finally{console.log(e+" time: "+(Y3()-r)+"ms")}}function ege(e,t){return t()}var pu=F(()=>{"use strict";Ln();qo();o(fu,"addDummyNode");o(Xme,"simplify");o(n5,"asNonCompoundGraph");o(C9,"intersectRect");o(Sf,"buildLayerMatrix");o(Kme,"normalizeRanks");o(Zme,"removeEmptyRanks");o(w9,"addBorderNode");o(k9,"maxRank");o(Qme,"partition");o(Jme,"time");o(ege,"notime")});function rge(e){function t(r){var n=e.children(r),i=e.node(r);if(n.length&&st(n,t),Object.prototype.hasOwnProperty.call(i,"minRank")){i.borderLeft=[],i.borderRight=[];for(var a=i.minRank,s=i.maxRank+1;a<s;++a)tge(e,"borderLeft","_bl",r,i,a),tge(e,"borderRight","_br",r,i,a)}}o(t,"dfs"),st(e.children(),t)}function tge(e,t,r,n,i,a){var s={width:0,height:0,rank:a,borderType:t},l=i[t][a-1],u=fu(e,"border",s,r);i[t][a]=u,e.setParent(u,n),l&&e.setEdge(l,u,{weight:1})}var nge=F(()=>{"use strict";Ln();pu();o(rge,"addBorderSegments");o(tge,"addBorderNode")});function age(e){var t=e.graph().rankdir.toLowerCase();(t==="lr"||t==="rl")&&oge(e)}function sge(e){var t=e.graph().rankdir.toLowerCase();(t==="bt"||t==="rl")&&zot(e),(t==="lr"||t==="rl")&&(Got(e),oge(e))}function oge(e){st(e.nodes(),function(t){ige(e.node(t))}),st(e.edges(),function(t){ige(e.edge(t))})}function ige(e){var t=e.width;e.width=e.height,e.height=t}function zot(e){st(e.nodes(),function(t){S9(e.node(t))}),st(e.edges(),function(t){var r=e.edge(t);st(r.points,S9),Object.prototype.hasOwnProperty.call(r,"y")&&S9(r)})}function S9(e){e.y=-e.y}function Got(e){st(e.nodes(),function(t){E9(e.node(t))}),st(e.edges(),function(t){var r=e.edge(t);st(r.points,E9),Object.prototype.hasOwnProperty.call(r,"x")&&E9(r)})}function E9(e){var t=e.x;e.x=e.y,e.y=t}var lge=F(()=>{"use strict";Ln();o(age,"adjust");o(sge,"undo");o(oge,"swapWidthHeight");o(ige,"swapWidthHeightOne");o(zot,"reverseY");o(S9,"reverseYOne");o(Got,"swapXY");o(E9,"swapXYOne")});function cge(e){e.graph().dummyChains=[],st(e.edges(),function(t){Wot(e,t)})}function Wot(e,t){var r=t.v,n=e.node(r).rank,i=t.w,a=e.node(i).rank,s=t.name,l=e.edge(t),u=l.labelRank;if(a!==n+1){e.removeEdge(t);var h=void 0,d,f;for(f=0,++n;n<a;++f,++n)l.points=[],h={width:0,height:0,edgeLabel:l,edgeObj:t,rank:n},d=fu(e,"edge",h,"_d"),n===u&&(h.width=l.width,h.height=l.height,h.dummy="edge-label",h.labelpos=l.labelpos),e.setEdge(r,d,{weight:l.weight},s),f===0&&e.graph().dummyChains.push(d),r=d;e.setEdge(r,i,{weight:l.weight},s)}}function uge(e){st(e.graph().dummyChains,function(t){var r=e.node(t),n=r.edgeLabel,i;for(e.setEdge(r.edgeObj,n);r.dummy;)i=e.successors(t)[0],e.removeNode(t),n.points.push({x:r.x,y:r.y}),r.dummy==="edge-label"&&(n.x=r.x,n.y=r.y,n.width=r.width,n.height=r.height),t=i,r=e.node(t)})}var A9=F(()=>{"use strict";Ln();pu();o(cge,"run");o(Wot,"normalizeEdge");o(uge,"undo")});function pT(e){var t={};function r(n){var i=e.node(n);if(Object.prototype.hasOwnProperty.call(t,n))return i.rank;t[n]=!0;var a=Lh(mn(e.outEdges(n),function(s){return r(s.w)-e.edge(s).minlen}));return(a===Number.POSITIVE_INFINITY||a===void 0||a===null)&&(a=0),i.rank=a}o(r,"dfs"),st(e.sources(),r)}function Vm(e,t){return e.node(t.w).rank-e.node(t.v).rank-e.edge(t).minlen}var i5=F(()=>{"use strict";Ln();o(pT,"longestPath");o(Vm,"slack")});function a5(e){var t=new on({directed:!1}),r=e.nodes()[0],n=e.nodeCount();t.setNode(r,{});for(var i,a;qot(t,e)<n;)i=Hot(t,e),a=t.hasNode(i.v)?Vm(e,i):-Vm(e,i),Uot(t,e,a);return t}function qot(e,t){function r(n){st(t.nodeEdges(n),function(i){var a=i.v,s=n===a?i.w:a;!e.hasNode(s)&&!Vm(t,i)&&(e.setNode(s,{}),e.setEdge(n,s,{}),r(s))})}return o(r,"dfs"),st(e.nodes(),r),e.nodeCount()}function Hot(e,t){return $m(t.edges(),function(r){if(e.hasNode(r.v)!==e.hasNode(r.w))return Vm(t,r)})}function Uot(e,t,r){st(e.nodes(),function(n){t.node(n).rank+=r})}var R9=F(()=>{"use strict";Ln();qo();i5();o(a5,"feasibleTree");o(qot,"tightTree");o(Hot,"findMinSlackEdge");o(Uot,"shiftRanks")});var dge=F(()=>{"use strict"});var _9=F(()=>{"use strict"});var Z6r,L9=F(()=>{"use strict";Ln();_9();Z6r=oo(1)});var fge=F(()=>{"use strict";L9()});var D9=F(()=>{"use strict"});var pge=F(()=>{"use strict";D9()});var lRr,mge=F(()=>{"use strict";Ln();lRr=oo(1)});function I9(e){var t={},r={},n=[];function i(a){if(Object.prototype.hasOwnProperty.call(r,a))throw new mT;Object.prototype.hasOwnProperty.call(t,a)||(r[a]=!0,t[a]=!0,st(e.predecessors(a),i),delete r[a],n.push(a))}if(o(i,"visit"),st(e.sinks(),i),g9(t)!==e.nodeCount())throw new mT;return n}function mT(){}var M9=F(()=>{"use strict";Ln();I9.CycleException=mT;o(I9,"topsort");o(mT,"CycleException");mT.prototype=new Error});var gge=F(()=>{"use strict";M9()});function s5(e,t,r){Yr(t)||(t=[t]);var n=(e.isDirected()?e.successors:e.neighbors).bind(e),i=[],a={};return st(t,function(s){if(!e.hasNode(s))throw new Error("Graph does not have node: "+s);yge(e,s,r==="post",a,n,i)}),i}function yge(e,t,r,n,i,a){Object.prototype.hasOwnProperty.call(n,t)||(n[t]=!0,r||a.push(t),st(i(t),function(s){yge(e,s,r,n,i,a)}),r&&a.push(t))}var N9=F(()=>{"use strict";Ln();o(s5,"dfs");o(yge,"doDfs")});function P9(e,t){return s5(e,t,"post")}var vge=F(()=>{"use strict";N9();o(P9,"postorder")});function O9(e,t){return s5(e,t,"pre")}var xge=F(()=>{"use strict";N9();o(O9,"preorder")});var bge=F(()=>{"use strict";_9();t5()});var Tge=F(()=>{"use strict";dge();L9();fge();pge();mge();gge();vge();xge();bge();D9();M9()});function Af(e){e=Xme(e),pT(e);var t=a5(e);$9(t),B9(t,e);for(var r,n;r=Sge(t);)n=Ege(t,e,r),Age(t,e,r,n)}function B9(e,t){var r=P9(e,e.nodes());r=r.slice(0,r.length-1),st(r,function(n){Zot(e,t,n)})}function Zot(e,t,r){var n=e.node(r),i=n.parent;e.edge(r,i).cutvalue=wge(e,t,r)}function wge(e,t,r){var n=e.node(r),i=n.parent,a=!0,s=t.edge(r,i),l=0;return s||(a=!1,s=t.edge(i,r)),l=s.weight,st(t.nodeEdges(r),function(u){var h=u.v===r,d=h?u.w:u.v;if(d!==i){var f=h===a,p=t.edge(u).weight;if(l+=f?p:-p,Jot(e,r,d)){var m=e.edge(r,d).cutvalue;l+=f?-m:m}}}),l}function $9(e,t){arguments.length<2&&(t=e.nodes()[0]),kge(e,{},1,t)}function kge(e,t,r,n,i){var a=r,s=e.node(n);return t[n]=!0,st(e.neighbors(n),function(l){Object.prototype.hasOwnProperty.call(t,l)||(r=kge(e,t,r,l,n))}),s.low=a,s.lim=r++,i?s.parent=i:delete s.parent,r}function Sge(e){return g1(e.edges(),function(t){return e.edge(t).cutvalue<0})}function Ege(e,t,r){var n=r.v,i=r.w;t.hasEdge(n,i)||(n=r.w,i=r.v);var a=e.node(n),s=e.node(i),l=a,u=!1;a.lim>s.lim&&(l=s,u=!0);var h=Is(t.edges(),function(d){return u===Cge(e,e.node(d.v),l)&&u!==Cge(e,e.node(d.w),l)});return $m(h,function(d){return Vm(t,d)})}function Age(e,t,r,n){var i=r.v,a=r.w;e.removeEdge(i,a),e.setEdge(n.v,n.w,{}),$9(e),B9(e,t),Qot(e,t)}function Qot(e,t){var r=g1(e.nodes(),function(i){return!t.node(i).parent}),n=O9(e,r);n=n.slice(1),st(n,function(i){var a=e.node(i).parent,s=t.edge(i,a),l=!1;s||(s=t.edge(a,i),l=!0),t.node(i).rank=t.node(a).rank+(l?s.minlen:-s.minlen)})}function Jot(e,t,r){return e.hasEdge(t,r)}function Cge(e,t,r){return r.low<=t.lim&&t.lim<=r.lim}var Rge=F(()=>{"use strict";Ln();Tge();pu();R9();i5();Af.initLowLimValues=$9;Af.initCutValues=B9;Af.calcCutValue=wge;Af.leaveEdge=Sge;Af.enterEdge=Ege;Af.exchangeEdges=Age;o(Af,"networkSimplex");o(B9,"initCutValues");o(Zot,"assignCutValue");o(wge,"calcCutValue");o($9,"initLowLimValues");o(kge,"dfsAssignLowLim");o(Sge,"leaveEdge");o(Ege,"enterEdge");o(Age,"exchangeEdges");o(Qot,"updateRanks");o(Jot,"isTreeEdge");o(Cge,"isDescendant")});function F9(e){switch(e.graph().ranker){case"network-simplex":_ge(e);break;case"tight-tree":tlt(e);break;case"longest-path":elt(e);break;default:_ge(e)}}function tlt(e){pT(e),a5(e)}function _ge(e){Af(e)}var elt,z9=F(()=>{"use strict";R9();Rge();i5();o(F9,"rank");elt=pT;o(tlt,"tightTreeRanker");o(_ge,"networkSimplexRanker")});function Lge(e){var t=fu(e,"root",{},"_root"),r=rlt(e),n=co(Wo(r))-1,i=2*n+1;e.graph().nestingRoot=t,st(e.edges(),function(s){e.edge(s).minlen*=i});var a=nlt(e)+1;st(e.children(),function(s){Dge(e,t,i,a,n,r,s)}),e.graph().nodeRankFactor=i}function Dge(e,t,r,n,i,a,s){var l=e.children(s);if(!l.length){s!==t&&e.setEdge(t,s,{weight:0,minlen:r});return}var u=w9(e,"_bt"),h=w9(e,"_bb"),d=e.node(s);e.setParent(u,s),d.borderTop=u,e.setParent(h,s),d.borderBottom=h,st(l,function(f){Dge(e,t,r,n,i,a,f);var p=e.node(f),m=p.borderTop?p.borderTop:f,g=p.borderBottom?p.borderBottom:f,y=p.borderTop?n:2*n,v=m!==g?1:i-a[s]+1;e.setEdge(u,m,{weight:y,minlen:v,nestingEdge:!0}),e.setEdge(g,h,{weight:y,minlen:v,nestingEdge:!0})}),e.parent(s)||e.setEdge(t,u,{weight:0,minlen:i+a[s]})}function rlt(e){var t={};function r(n,i){var a=e.children(n);a&&a.length&&st(a,function(s){r(s,i+1)}),t[n]=i}return o(r,"dfs"),st(e.children(),function(n){r(n,1)}),t}function nlt(e){return hu(e.edges(),function(t,r){return t+e.edge(r).weight},0)}function Ige(e){var t=e.graph();e.removeNode(t.nestingRoot),delete t.nestingRoot,st(e.edges(),function(r){var n=e.edge(r);n.nestingEdge&&e.removeEdge(r)})}var Mge=F(()=>{"use strict";Ln();pu();o(Lge,"run");o(Dge,"dfs");o(rlt,"treeDepths");o(nlt,"sumWeights");o(Ige,"cleanup")});function Nge(e,t,r){var n={},i;st(r,function(a){for(var s=e.parent(a),l,u;s;){if(l=e.parent(s),l?(u=n[l],n[l]=s):(u=i,i=s),u&&u!==s){t.setEdge(u,s);return}s=l}})}var Pge=F(()=>{"use strict";Ln();o(Nge,"addSubgraphConstraints")});function Oge(e,t,r){var n=alt(e),i=new on({compound:!0}).setGraph({root:n}).setDefaultNodeLabel(function(a){return e.node(a)});return st(e.nodes(),function(a){var s=e.node(a),l=e.parent(a);(s.rank===t||s.minRank<=t&&t<=s.maxRank)&&(i.setNode(a),i.setParent(a,l||n),st(e[r](a),function(u){var h=u.v===a?u.w:u.v,d=i.edge(h,a),f=Fn(d)?0:d.weight;i.setEdge(h,a,{weight:e.edge(u).weight+f})}),Object.prototype.hasOwnProperty.call(s,"minRank")&&i.setNode(a,{borderLeft:s.borderLeft[t],borderRight:s.borderRight[t]}))}),i}function alt(e){for(var t;e.hasNode(t=zm("_root")););return t}var Bge=F(()=>{"use strict";Ln();qo();o(Oge,"buildLayerGraph");o(alt,"createRootNode")});function $ge(e,t){for(var r=0,n=1;n<t.length;++n)r+=slt(e,t[n-1],t[n]);return r}function slt(e,t,r){for(var n=e5(r,mn(r,function(h,d){return d})),i=xl(mn(t,function(h){return du(mn(e.outEdges(h),function(d){return{pos:n[d.w],weight:e.edge(d).weight}}),"pos")})),a=1;a<r.length;)a<<=1;var s=2*a-1;a-=1;var l=mn(new Array(s),function(){return 0}),u=0;return st(i.forEach(function(h){var d=h.pos+a;l[d]+=h.weight;for(var f=0;d>0;)d%2&&(f+=l[d+1]),d=d-1>>1,l[d]+=h.weight;u+=h.weight*f})),u}var Fge=F(()=>{"use strict";Ln();o($ge,"crossCount");o(slt,"twoLayerCrossCount")});function zge(e){var t={},r=Is(e.nodes(),function(l){return!e.children(l).length}),n=co(mn(r,function(l){return e.node(l).rank})),i=mn(bl(n+1),function(){return[]});function a(l){if(!hT(t,l)){t[l]=!0;var u=e.node(l);i[u.rank].push(l),st(e.successors(l),a)}}o(a,"dfs");var s=du(r,function(l){return e.node(l).rank});return st(s,a),i}var Gge=F(()=>{"use strict";Ln();o(zge,"initOrder")});function Vge(e,t){return mn(t,function(r){var n=e.inEdges(r);if(n.length){var i=hu(n,function(a,s){var l=e.edge(s),u=e.node(s.v);return{sum:a.sum+l.weight*u.order,weight:a.weight+l.weight}},{sum:0,weight:0});return{v:r,barycenter:i.sum/i.weight,weight:i.weight}}else return{v:r}})}var Wge=F(()=>{"use strict";Ln();o(Vge,"barycenter")});function qge(e,t){var r={};st(e,function(i,a){var s=r[i.v]={indegree:0,in:[],out:[],vs:[i.v],i:a};Fn(i.barycenter)||(s.barycenter=i.barycenter,s.weight=i.weight)}),st(t.edges(),function(i){var a=r[i.v],s=r[i.w];!Fn(a)&&!Fn(s)&&(s.indegree++,a.out.push(r[i.w]))});var n=Is(r,function(i){return!i.indegree});return olt(n)}function olt(e){var t=[];function r(a){return function(s){s.merged||(Fn(s.barycenter)||Fn(a.barycenter)||s.barycenter>=a.barycenter)&&llt(a,s)}}o(r,"handleIn");function n(a){return function(s){s.in.push(a),--s.indegree===0&&e.push(s)}}for(o(n,"handleOut");e.length;){var i=e.pop();t.push(i),st(i.in.reverse(),r(i)),st(i.out,n(i))}return mn(Is(t,function(a){return!a.merged}),function(a){return Fm(a,["vs","i","barycenter","weight"])})}function llt(e,t){var r=0,n=0;e.weight&&(r+=e.barycenter*e.weight,n+=e.weight),t.weight&&(r+=t.barycenter*t.weight,n+=t.weight),e.vs=t.vs.concat(e.vs),e.barycenter=r/n,e.weight=n,e.i=Math.min(t.i,e.i),t.merged=!0}var Hge=F(()=>{"use strict";Ln();o(qge,"resolveConflicts");o(olt,"doResolveConflicts");o(llt,"mergeEntries")});function Yge(e,t){var r=Qme(e,function(d){return Object.prototype.hasOwnProperty.call(d,"barycenter")}),n=r.lhs,i=du(r.rhs,function(d){return-d.i}),a=[],s=0,l=0,u=0;n.sort(clt(!!t)),u=Uge(a,i,u),st(n,function(d){u+=d.vs.length,a.push(d.vs),s+=d.barycenter*d.weight,l+=d.weight,u=Uge(a,i,u)});var h={vs:xl(a)};return l&&(h.barycenter=s/l,h.weight=l),h}function Uge(e,t,r){for(var n;t.length&&(n=kf(t)).i<=r;)t.pop(),e.push(n.vs),r++;return r}function clt(e){return function(t,r){return t.barycenter<r.barycenter?-1:t.barycenter>r.barycenter?1:e?r.i-t.i:t.i-r.i}}var jge=F(()=>{"use strict";Ln();pu();o(Yge,"sort");o(Uge,"consumeUnsortable");o(clt,"compareWithBias")});function G9(e,t,r,n){var i=e.children(t),a=e.node(t),s=a?a.borderLeft:void 0,l=a?a.borderRight:void 0,u={};s&&(i=Is(i,function(g){return g!==s&&g!==l}));var h=Vge(e,i);st(h,function(g){if(e.children(g.v).length){var y=G9(e,g.v,r,n);u[g.v]=y,Object.prototype.hasOwnProperty.call(y,"barycenter")&&hlt(g,y)}});var d=qge(h,r);ult(d,u);var f=Yge(d,n);if(s&&(f.vs=xl([s,f.vs,l]),e.predecessors(s).length)){var p=e.node(e.predecessors(s)[0]),m=e.node(e.predecessors(l)[0]);Object.prototype.hasOwnProperty.call(f,"barycenter")||(f.barycenter=0,f.weight=0),f.barycenter=(f.barycenter*f.weight+p.order+m.order)/(f.weight+2),f.weight+=2}return f}function ult(e,t){st(e,function(r){r.vs=xl(r.vs.map(function(n){return t[n]?t[n].vs:n}))})}function hlt(e,t){Fn(e.barycenter)?(e.barycenter=t.barycenter,e.weight=t.weight):(e.barycenter=(e.barycenter*e.weight+t.barycenter*t.weight)/(e.weight+t.weight),e.weight+=t.weight)}var Xge=F(()=>{"use strict";Ln();Wge();Hge();jge();o(G9,"sortSubgraph");o(ult,"expandSubgraphs");o(hlt,"mergeBarycenters")});function Qge(e){var t=k9(e),r=Kge(e,bl(1,t+1),"inEdges"),n=Kge(e,bl(t-1,-1,-1),"outEdges"),i=zge(e);Zge(e,i);for(var a=Number.POSITIVE_INFINITY,s,l=0,u=0;u<4;++l,++u){dlt(l%2?r:n,l%4>=2),i=Sf(e);var h=$ge(e,i);h<a&&(u=0,s=jO(i),a=h)}Zge(e,s)}function Kge(e,t,r){return mn(t,function(n){return Oge(e,n,r)})}function dlt(e,t){var r=new on;st(e,function(n){var i=n.graph().root,a=G9(n,i,r,t);st(a.vs,function(s,l){n.node(s).order=l}),Nge(n,r,a.vs)})}function Zge(e,t){st(t,function(r){st(r,function(n,i){e.node(n).order=i})})}var Jge=F(()=>{"use strict";Ln();qo();pu();Pge();Bge();Fge();Gge();Xge();o(Qge,"order");o(Kge,"buildLayerGraphs");o(dlt,"sweepLayerGraphs");o(Zge,"assignOrder")});function e0e(e){var t=plt(e);st(e.graph().dummyChains,function(r){for(var n=e.node(r),i=n.edgeObj,a=flt(e,t,i.v,i.w),s=a.path,l=a.lca,u=0,h=s[u],d=!0;r!==i.w;){if(n=e.node(r),d){for(;(h=s[u])!==l&&e.node(h).maxRank<n.rank;)u++;h===l&&(d=!1)}if(!d){for(;u<s.length-1&&e.node(h=s[u+1]).minRank<=n.rank;)u++;h=s[u]}e.setParent(r,h),r=e.successors(r)[0]}})}function flt(e,t,r,n){var i=[],a=[],s=Math.min(t[r].low,t[n].low),l=Math.max(t[r].lim,t[n].lim),u,h;u=r;do u=e.parent(u),i.push(u);while(u&&(t[u].low>s||l>t[u].lim));for(h=u,u=n;(u=e.parent(u))!==h;)a.push(u);return{path:i.concat(a.reverse()),lca:h}}function plt(e){var t={},r=0;function n(i){var a=r;st(e.children(i),n),t[i]={low:a,lim:r++}}return o(n,"dfs"),st(e.children(),n),t}var t0e=F(()=>{"use strict";Ln();o(e0e,"parentDummyChains");o(flt,"findPath");o(plt,"postorder")});function mlt(e,t){var r={};function n(i,a){var s=0,l=0,u=i.length,h=kf(a);return st(a,function(d,f){var p=ylt(e,d),m=p?e.node(p).order:u;(p||d===h)&&(st(a.slice(l,f+1),function(g){st(e.predecessors(g),function(y){var v=e.node(y),x=v.order;(x<s||m<x)&&!(v.dummy&&e.node(g).dummy)&&r0e(r,y,g)})}),l=f+1,s=m)}),a}return o(n,"visitLayer"),hu(t,n),r}function glt(e,t){var r={};function n(a,s,l,u,h){var d;st(bl(s,l),function(f){d=a[f],e.node(d).dummy&&st(e.predecessors(d),function(p){var m=e.node(p);m.dummy&&(m.order<u||m.order>h)&&r0e(r,p,d)})})}o(n,"scan");function i(a,s){var l=-1,u,h=0;return st(s,function(d,f){if(e.node(d).dummy==="border"){var p=e.predecessors(d);p.length&&(u=e.node(p[0]).order,n(s,h,f,l,u),h=f,l=u)}n(s,h,s.length,u,a.length)}),s}return o(i,"visitLayer"),hu(t,i),r}function ylt(e,t){if(e.node(t).dummy)return g1(e.predecessors(t),function(r){return e.node(r).dummy})}function r0e(e,t,r){if(t>r){var n=t;t=r,r=n}Object.prototype.hasOwnProperty.call(e,t)||Object.defineProperty(e,t,{enumerable:!0,configurable:!0,value:{},writable:!0});var i=e[t];Object.defineProperty(i,r,{enumerable:!0,configurable:!0,value:!0,writable:!0})}function vlt(e,t,r){if(t>r){var n=t;t=r,r=n}return!!e[t]&&Object.prototype.hasOwnProperty.call(e[t],r)}function xlt(e,t,r,n){var i={},a={},s={};return st(t,function(l){st(l,function(u,h){i[u]=u,a[u]=u,s[u]=h})}),st(t,function(l){var u=-1;st(l,function(h){var d=n(h);if(d.length){d=du(d,function(y){return s[y]});for(var f=(d.length-1)/2,p=Math.floor(f),m=Math.ceil(f);p<=m;++p){var g=d[p];a[h]===h&&u<s[g]&&!vlt(r,h,g)&&(a[g]=h,a[h]=i[h]=i[g],u=s[g])}}})}),{root:i,align:a}}function blt(e,t,r,n,i){var a={},s=Tlt(e,t,r,i),l=i?"borderLeft":"borderRight";function u(f,p){for(var m=s.nodes(),g=m.pop(),y={};g;)y[g]?f(g):(y[g]=!0,m.push(g),m=m.concat(p(g))),g=m.pop()}o(u,"iterate");function h(f){a[f]=s.inEdges(f).reduce(function(p,m){return Math.max(p,a[m.v]+s.edge(m))},0)}o(h,"pass1");function d(f){var p=s.outEdges(f).reduce(function(g,y){return Math.min(g,a[y.w]-s.edge(y))},Number.POSITIVE_INFINITY),m=e.node(f);p!==Number.POSITIVE_INFINITY&&m.borderType!==l&&(a[f]=Math.max(a[f],p))}return o(d,"pass2"),u(h,s.predecessors.bind(s)),u(d,s.successors.bind(s)),st(n,function(f){a[f]=a[r[f]]}),a}function Tlt(e,t,r,n){var i=new on,a=e.graph(),s=Slt(a.nodesep,a.edgesep,n);return st(t,function(l){var u;st(l,function(h){var d=r[h];if(i.setNode(d),u){var f=r[u],p=i.edge(f,d);i.setEdge(f,d,Math.max(s(e,h,u),p||0))}u=h})}),i}function Clt(e,t){return $m(Wo(t),function(r){var n=Number.NEGATIVE_INFINITY,i=Number.POSITIVE_INFINITY;return h9(r,function(a,s){var l=Elt(e,s)/2;n=Math.max(a+l,n),i=Math.min(a-l,i)}),n-i})}function wlt(e,t){var r=Wo(t),n=Lh(r),i=co(r);st(["u","d"],function(a){st(["l","r"],function(s){var l=a+s,u=e[l],h;if(u!==t){var d=Wo(u);h=s==="l"?n-Lh(d):i-co(d),h&&(e[l]=Bm(u,function(f){return f+h}))}})})}function klt(e,t){return Bm(e.ul,function(r,n){if(t)return e[t.toLowerCase()][n];var i=du(mn(e,n));return(i[1]+i[2])/2})}function n0e(e){var t=Sf(e),r=v1(mlt(e,t),glt(e,t)),n={},i;st(["u","d"],function(s){i=s==="u"?t:Wo(t).reverse(),st(["l","r"],function(l){l==="r"&&(i=mn(i,function(f){return Wo(f).reverse()}));var u=(s==="u"?e.predecessors:e.successors).bind(e),h=xlt(e,i,r,u),d=blt(e,i,h.root,h.align,l==="r");l==="r"&&(d=Bm(d,function(f){return-f})),n[s+l]=d})});var a=Clt(e,n);return wlt(n,a),klt(n,e.graph().align)}function Slt(e,t,r){return function(n,i,a){var s=n.node(i),l=n.node(a),u=0,h;if(u+=s.width/2,Object.prototype.hasOwnProperty.call(s,"labelpos"))switch(s.labelpos.toLowerCase()){case"l":h=-s.width/2;break;case"r":h=s.width/2;break}if(h&&(u+=r?h:-h),h=0,u+=(s.dummy?t:e)/2,u+=(l.dummy?t:e)/2,u+=l.width/2,Object.prototype.hasOwnProperty.call(l,"labelpos"))switch(l.labelpos.toLowerCase()){case"l":h=l.width/2;break;case"r":h=-l.width/2;break}return h&&(u+=r?h:-h),h=0,u}}function Elt(e,t){return e.node(t).width}var i0e=F(()=>{"use strict";Ln();qo();pu();o(mlt,"findType1Conflicts");o(glt,"findType2Conflicts");o(ylt,"findOtherInnerSegmentNode");o(r0e,"addConflict");o(vlt,"hasConflict");o(xlt,"verticalAlignment");o(blt,"horizontalCompaction");o(Tlt,"buildBlockGraph");o(Clt,"findSmallestWidthAlignment");o(wlt,"alignCoordinates");o(klt,"balance");o(n0e,"positionX");o(Slt,"sep");o(Elt,"width")});function a0e(e){e=n5(e),Alt(e),d9(n0e(e),function(t,r){e.node(r).x=t})}function Alt(e){var t=Sf(e),r=e.graph().ranksep,n=0;st(t,function(i){var a=co(mn(i,function(s){return e.node(s).height}));st(i,function(s){e.node(s).y=n+a/2}),n+=a+r})}var s0e=F(()=>{"use strict";Ln();pu();i0e();o(a0e,"position");o(Alt,"positionY")});function gT(e,t){var r=t&&t.debugTiming?Jme:ege;r("layout",()=>{var n=r("  buildLayoutGraph",()=>$lt(e));r("  runLayout",()=>Rlt(n,r)),r("  updateInputGraph",()=>_lt(e,n))})}function Rlt(e,t){t("    makeSpaceForEdgeLabels",()=>Flt(e)),t("    removeSelfEdges",()=>jlt(e)),t("    acyclic",()=>Ume(e)),t("    nestingGraph.run",()=>Lge(e)),t("    rank",()=>F9(n5(e))),t("    injectEdgeLabelProxies",()=>zlt(e)),t("    removeEmptyRanks",()=>Zme(e)),t("    nestingGraph.cleanup",()=>Ige(e)),t("    normalizeRanks",()=>Kme(e)),t("    assignRankMinMax",()=>Glt(e)),t("    removeEdgeLabelProxies",()=>Vlt(e)),t("    normalize.run",()=>cge(e)),t("    parentDummyChains",()=>e0e(e)),t("    addBorderSegments",()=>rge(e)),t("    order",()=>Qge(e)),t("    insertSelfEdges",()=>Xlt(e)),t("    adjustCoordinateSystem",()=>age(e)),t("    position",()=>a0e(e)),t("    positionSelfEdges",()=>Klt(e)),t("    removeBorderNodes",()=>Ylt(e)),t("    normalize.undo",()=>uge(e)),t("    fixupEdgeLabelCoords",()=>Hlt(e)),t("    undoCoordinateSystem",()=>sge(e)),t("    translateGraph",()=>Wlt(e)),t("    assignNodeIntersects",()=>qlt(e)),t("    reversePoints",()=>Ult(e)),t("    acyclic.undo",()=>Yme(e))}function _lt(e,t){st(e.nodes(),function(r){var n=e.node(r),i=t.node(r);n&&(n.x=i.x,n.y=i.y,t.children(r).length&&(n.width=i.width,n.height=i.height))}),st(e.edges(),function(r){var n=e.edge(r),i=t.edge(r);n.points=i.points,Object.prototype.hasOwnProperty.call(i,"x")&&(n.x=i.x,n.y=i.y)}),e.graph().width=t.graph().width,e.graph().height=t.graph().height}function $lt(e){var t=new on({multigraph:!0,compound:!0}),r=W9(e.graph());return t.setGraph(v1({},Dlt,V9(r,Llt),Fm(r,Ilt))),st(e.nodes(),function(n){var i=W9(e.node(n));t.setNode(n,a9(V9(i,Mlt),Nlt)),t.setParent(n,e.parent(n))}),st(e.edges(),function(n){var i=W9(e.edge(n));t.setEdge(n,v1({},Olt,V9(i,Plt),Fm(i,Blt)))}),t}function Flt(e){var t=e.graph();t.ranksep/=2,st(e.edges(),function(r){var n=e.edge(r);n.minlen*=2,n.labelpos.toLowerCase()!=="c"&&(t.rankdir==="TB"||t.rankdir==="BT"?n.width+=n.labeloffset:n.height+=n.labeloffset)})}function zlt(e){st(e.edges(),function(t){var r=e.edge(t);if(r.width&&r.height){var n=e.node(t.v),i=e.node(t.w),a={rank:(i.rank-n.rank)/2+n.rank,e:t};fu(e,"edge-proxy",a,"_ep")}})}function Glt(e){var t=0;st(e.nodes(),function(r){var n=e.node(r);n.borderTop&&(n.minRank=e.node(n.borderTop).rank,n.maxRank=e.node(n.borderBottom).rank,t=co(t,n.maxRank))}),e.graph().maxRank=t}function Vlt(e){st(e.nodes(),function(t){var r=e.node(t);r.dummy==="edge-proxy"&&(e.edge(r.e).labelRank=r.rank,e.removeNode(t))})}function Wlt(e){var t=Number.POSITIVE_INFINITY,r=0,n=Number.POSITIVE_INFINITY,i=0,a=e.graph(),s=a.marginx||0,l=a.marginy||0;function u(h){var d=h.x,f=h.y,p=h.width,m=h.height;t=Math.min(t,d-p/2),r=Math.max(r,d+p/2),n=Math.min(n,f-m/2),i=Math.max(i,f+m/2)}o(u,"getExtremes"),st(e.nodes(),function(h){u(e.node(h))}),st(e.edges(),function(h){var d=e.edge(h);Object.prototype.hasOwnProperty.call(d,"x")&&u(d)}),t-=s,n-=l,st(e.nodes(),function(h){var d=e.node(h);d.x-=t,d.y-=n}),st(e.edges(),function(h){var d=e.edge(h);st(d.points,function(f){f.x-=t,f.y-=n}),Object.prototype.hasOwnProperty.call(d,"x")&&(d.x-=t),Object.prototype.hasOwnProperty.call(d,"y")&&(d.y-=n)}),a.width=r-t+s,a.height=i-n+l}function qlt(e){st(e.edges(),function(t){var r=e.edge(t),n=e.node(t.v),i=e.node(t.w),a,s;r.points?(a=r.points[0],s=r.points[r.points.length-1]):(r.points=[],a=i,s=n),r.points.unshift(C9(n,a)),r.points.push(C9(i,s))})}function Hlt(e){st(e.edges(),function(t){var r=e.edge(t);if(Object.prototype.hasOwnProperty.call(r,"x"))switch((r.labelpos==="l"||r.labelpos==="r")&&(r.width-=r.labeloffset),r.labelpos){case"l":r.x-=r.width/2+r.labeloffset;break;case"r":r.x+=r.width/2+r.labeloffset;break}})}function Ult(e){st(e.edges(),function(t){var r=e.edge(t);r.reversed&&r.points.reverse()})}function Ylt(e){st(e.nodes(),function(t){if(e.children(t).length){var r=e.node(t),n=e.node(r.borderTop),i=e.node(r.borderBottom),a=e.node(kf(r.borderLeft)),s=e.node(kf(r.borderRight));r.width=Math.abs(s.x-a.x),r.height=Math.abs(i.y-n.y),r.x=a.x+r.width/2,r.y=n.y+r.height/2}}),st(e.nodes(),function(t){e.node(t).dummy==="border"&&e.removeNode(t)})}function jlt(e){st(e.edges(),function(t){if(t.v===t.w){var r=e.node(t.v);r.selfEdges||(r.selfEdges=[]),r.selfEdges.push({e:t,label:e.edge(t)}),e.removeEdge(t)}})}function Xlt(e){var t=Sf(e);st(t,function(r){var n=0;st(r,function(i,a){var s=e.node(i);s.order=a+n,st(s.selfEdges,function(l){fu(e,"selfedge",{width:l.label.width,height:l.label.height,rank:s.rank,order:a+ ++n,e:l.e,label:l.label},"_se")}),delete s.selfEdges})})}function Klt(e){st(e.nodes(),function(t){var r=e.node(t);if(r.dummy==="selfedge"){var n=e.node(r.e.v),i=n.x+n.width/2,a=n.y,s=r.x-i,l=n.height/2;e.setEdge(r.e,r.label),e.removeNode(t),r.label.points=[{x:i+2*s/3,y:a-l},{x:i+5*s/6,y:a-l},{x:i+s,y:a},{x:i+5*s/6,y:a+l},{x:i+2*s/3,y:a+l}],r.label.x=r.x,r.label.y=r.y}})}function V9(e,t){return Bm(Fm(e,t),Number)}function W9(e){var t={};return st(e,function(r,n){t[n.toLowerCase()]=r}),t}var Llt,Dlt,Ilt,Mlt,Nlt,Plt,Olt,Blt,o0e=F(()=>{"use strict";Ln();qo();nge();lge();T9();A9();z9();Mge();Jge();t0e();s0e();pu();o(gT,"layout");o(Rlt,"runLayout");o(_lt,"updateInputGraph");Llt=["nodesep","edgesep","ranksep","marginx","marginy"],Dlt={ranksep:50,edgesep:20,nodesep:50,rankdir:"tb"},Ilt=["acyclicer","ranker","rankdir","align"],Mlt=["width","height"],Nlt={width:0,height:0},Plt=["minlen","weight","width","height","labeloffset"],Olt={minlen:1,weight:1,width:0,height:0,labeloffset:10,labelpos:"r"},Blt=["labelpos"];o($lt,"buildLayoutGraph");o(Flt,"makeSpaceForEdgeLabels");o(zlt,"injectEdgeLabelProxies");o(Glt,"assignRankMinMax");o(Vlt,"removeEdgeLabelProxies");o(Wlt,"translateGraph");o(qlt,"assignNodeIntersects");o(Hlt,"fixupEdgeLabelCoords");o(Ult,"reversePointsForReversedEdges");o(Ylt,"removeBorderNodes");o(jlt,"removeSelfEdges");o(Xlt,"insertSelfEdges");o(Klt,"positionSelfEdges");o(V9,"selectNumberAttrs");o(W9,"canonicalize")});var q9=F(()=>{"use strict";T9();o0e();A9();z9()});function hc(e){var t={options:{directed:e.isDirected(),multigraph:e.isMultigraph(),compound:e.isCompound()},nodes:Zlt(e),edges:Qlt(e)};return Fn(e.graph())||(t.value=YO(e.graph())),t}function Zlt(e){return mn(e.nodes(),function(t){var r=e.node(t),n=e.parent(t),i={v:t};return Fn(r)||(i.value=r),Fn(n)||(i.parent=n),i})}function Qlt(e){return mn(e.edges(),function(t){var r=e.edge(t),n={v:t.v,w:t.w};return Fn(t.name)||(n.name=t.name),Fn(r)||(n.value=r),n})}var H9=F(()=>{"use strict";Ln();t5();o(hc,"write");o(Zlt,"writeNodes");o(Qlt,"writeEdges")});var Br,Rf,u0e,o5,Wm,Jlt,U9,h0e,ect,qm,c0e,d0e,f0e,p0e,m0e,g0e,tct,Y9=F(()=>{"use strict";vt();qo();H9();Br=new Map,Rf=new Map,u0e=new Map,o5=o(()=>{Rf.clear(),u0e.clear(),Br.clear()},"clear"),Wm=o((e,t)=>{let r=Rf.get(t)||[];return Z.trace("In isDescendant",t," ",e," = ",r.includes(e)),r.includes(e)},"isDescendant"),Jlt=o((e,t)=>{let r=Rf.get(t)||[];return Z.info("Descendants of ",t," is ",r),Z.info("Edge is ",e),e.v===t||e.w===t?!1:r?r.includes(e.v)||Wm(e.v,t)||Wm(e.w,t)||r.includes(e.w):(Z.debug("Tilt, ",t,",not in descendants"),!1)},"edgeInCluster"),U9=o((e,t,r,n)=>{Z.warn("Copying children of ",e,"root",n,"data",t.node(e),n);let i=t.children(e)||[];e!==n&&i.push(e),Z.warn("Copying (nodes) clusterId",e,"nodes",i),i.forEach(a=>{if(t.children(a).length>0)U9(a,t,r,n);else{let s=t.node(a);Z.info("cp ",a," to ",n," with parent ",e),r.setNode(a,s),n!==t.parent(a)&&(Z.warn("Setting parent",a,t.parent(a)),r.setParent(a,t.parent(a))),e!==n&&a!==e?(Z.debug("Setting parent",a,e),r.setParent(a,e)):(Z.info("In copy ",e,"root",n,"data",t.node(e),n),Z.debug("Not Setting parent for node=",a,"cluster!==rootId",e!==n,"node!==clusterId",a!==e));let l=t.edges(a);Z.debug("Copying Edges",l),l.forEach(u=>{Z.info("Edge",u);let h=t.edge(u.v,u.w,u.name);Z.info("Edge data",h,n);try{if(Jlt(u,n)){let d=Rf.get(n)||[],f=d.includes(u.v)||Wm(u.v,n)||u.v===n,p=d.includes(u.w)||Wm(u.w,n)||u.w===n;if(f&&p)Z.info("Copying as ",u.v,u.w,h,u.name),r.setEdge(u.v,u.w,h,u.name),Z.info("newGraph edges ",r.edges(),r.edge(r.edges()[0]));else{let m=f?n:u.v,g=p?n:u.w;Z.info("Rebinding cross-boundary edge as ",m,g,h,u.name),t.setEdge(m,g,h,u.name)}}else Z.info("Skipping copy of edge ",u.v,"-->",u.w," rootId: ",n," clusterId:",e)}catch(d){Z.error(d)}})}Z.debug("Removing node",a),t.removeNode(a)})},"copy"),h0e=o((e,t)=>{let r=t.children(e),n=[...r];for(let i of r)u0e.set(i,e),n=[...n,...h0e(i,t)];return n},"extractDescendants"),ect=o((e,t,r)=>{let n=e.edges().filter(u=>u.v===t||u.w===t),i=e.edges().filter(u=>u.v===r||u.w===r),a=n.map(u=>({v:u.v===t?r:u.v,w:u.w===t?t:u.w})),s=i.map(u=>({v:u.v,w:u.w}));return a.filter(u=>s.some(h=>u.v===h.v&&u.w===h.w))},"findCommonEdges"),qm=o((e,t,r)=>{let n=t.children(e);if(Z.trace("Searching children of id ",e,n),n.length<1)return e;let i;for(let a of n){let s=qm(a,t,r),l=ect(t,r,s);if(s)if(l.length>0)i=s;else return s}return i},"findNonClusterChild"),c0e=o(e=>!Br.has(e)||!Br.get(e).externalConnections?e:Br.has(e)?Br.get(e).id:e,"getAnchorId"),d0e=o((e,t)=>{if(!e||t>10){Z.debug("Opting out, no graph ");return}else Z.debug("Opting in, graph ");e.nodes().forEach(function(r){e.children(r).length>0&&(Z.warn("Cluster identified",r," Replacement id in edges: ",qm(r,e,r)),Rf.set(r,h0e(r,e)),Br.set(r,{id:qm(r,e,r),clusterData:e.node(r)}))}),e.nodes().forEach(function(r){let n=e.children(r),i=e.edges();n.length>0?(Z.debug("Cluster identified",r,Rf),i.forEach(a=>{let s=Wm(a.v,r),l=Wm(a.w,r);s^l&&(Z.warn("Edge: ",a," leaves cluster ",r),Z.warn("Descendants of XXX ",r,": ",Rf.get(r)),Br.get(r).externalConnections=!0)})):Z.debug("Not a cluster ",r,Rf)});for(let r of Br.keys()){let n=Br.get(r).id,i=e.parent(n);i!==r&&Br.has(i)&&!Br.get(i).externalConnections&&(Br.get(r).id=i);let a=e.edges().some(s=>s.v===r);if(n&&Br.get(r)?.externalConnections&&a&&g0e(e,n,r)){let s=tct(e,r,e.parent(n));s&&(Br.get(r).id=s)}}e.edges().forEach(function(r){let n=e.edge(r);Z.warn("Edge "+r.v+" -> "+r.w+": "+JSON.stringify(r)),Z.warn("Edge "+r.v+" -> "+r.w+": "+JSON.stringify(e.edge(r)));let i=r.v,a=r.w;if(Z.warn("Fix XXX",Br,"ids:",r.v,r.w,"Translating: ",Br.get(r.v)," --- ",Br.get(r.w)),Br.get(r.v)||Br.get(r.w)){if(Z.warn("Fixing and trying - removing XXX",r.v,r.w,r.name),i=c0e(r.v),a=c0e(r.w),e.removeEdge(r.v,r.w,r.name),i!==r.v){let s=e.parent(i);Br.get(s).externalConnections=!0,n.fromCluster=r.v}if(a!==r.w){let s=e.parent(a);Br.get(s).externalConnections=!0,n.toCluster=r.w}Z.warn("Fix Replacing with XXX",i,a,r.name),e.setEdge(i,a,n,r.name)}}),Z.warn("Adjusted Graph",hc(e)),f0e(e,0),Z.trace(Br)},"adjustClustersAndEdges"),f0e=o((e,t)=>{if(Z.warn("extractor - ",t,hc(e),e.children("D")),t>10){Z.error("Bailing out");return}let r=e.nodes(),n=!1;for(let i of r){let a=e.children(i);n=n||a.length>0}if(!n){Z.debug("Done, no node has children",e.nodes());return}Z.debug("Nodes = ",r,t);for(let i of r)if(Z.debug("Extracting node",i,Br,Br.has(i)&&!Br.get(i).externalConnections,!e.parent(i),e.node(i),e.children("D")," Depth ",t),!Br.has(i))Z.debug("Not a cluster",i,t);else if(Br.get(i)?.clusterData?.explicitDir&&e.children(i)&&e.children(i).length>0){Z.warn("Cluster with explicit dir, creating subgraph for children",i,t);let a=Br.get(i).clusterData.dir,s=new on({multigraph:!0,compound:!0}).setGraph({rankdir:a,nodesep:50,ranksep:50,marginx:8,marginy:8}).setDefaultEdgeLabel(function(){return{}});U9(i,e,s,i);let l=e.node(i)||{};e.setNode(i,{...l,clusterNode:!0,id:i,clusterData:Br.get(i).clusterData,label:Br.get(i).label,graph:s}),Z.warn("Subgraph for cluster with explicit dir created:",i,hc(s))}else if(!Br.get(i).externalConnections&&e.children(i)&&e.children(i).length>0){Z.warn("Cluster without external connections, without a parent and with children",i,t);let s=e.graph().rankdir==="TB"?"LR":"TB";Br.get(i)?.clusterData?.dir&&(s=Br.get(i).clusterData.dir,Z.warn("Fixing dir",Br.get(i).clusterData.dir,s));let l=new on({multigraph:!0,compound:!0}).setGraph({rankdir:s,nodesep:50,ranksep:50,marginx:8,marginy:8}).setDefaultEdgeLabel(function(){return{}});U9(i,e,l,i);let u=e.node(i)||{};e.setNode(i,{...u,clusterNode:!0,id:i,clusterData:Br.get(i).clusterData,label:Br.get(i).label,graph:l}),Z.debug("Old graph after copy",hc(e))}else Z.warn("Cluster ** ",i," **not meeting the criteria !externalConnections:",!Br.get(i).externalConnections," no parent: ",!e.parent(i)," children ",e.children(i)&&e.children(i).length>0,e.children("D"),t),Z.debug(Br);r=e.nodes(),Z.warn("New list of nodes",r);for(let i of r){let a=e.node(i);Z.warn(" Now next level",i,a),a?.clusterNode&&f0e(a.graph,t+1)}},"extractor"),p0e=o((e,t)=>{if(t.length===0)return[];let r=Object.assign([],t);return t.forEach(n=>{let i=e.children(n),a=p0e(e,i);r=[...r,...a]}),r},"sorter"),m0e=o(e=>p0e(e,e.children()),"sortNodesByHierarchy"),g0e=o((e,t,r)=>{let n=e.parent(t);for(;n&&n!==r;){let i=Br.get(n);if(i&&!i.externalConnections)return!0;n=e.parent(n)}return!1},"isNodeInExtractableCluster"),tct=o((e,t,r)=>{let n=e.children(t)??[];for(let i of n){if(i===r||Wm(i,r))continue;let a=qm(i,e,t);if(a&&!g0e(e,a,t))return a}return null},"findSafeAnchorNode")});var T0e={};ir(T0e,{getEdgesToRender:()=>x0e,render:()=>sct});var y0e,v0e,rct,nct,ict,act,x0e,b0e,sct,C0e=F(()=>{"use strict";q9();H9();qo();Z4();Kt();Y9();Lm();Wy();G2();vt();Vy();Xt();y0e=o((e,t,r)=>Math.max(t,Math.min(r,e)),"clamp"),v0e=o((e="TB")=>{switch(e){case"BT":return"bottom";case"LR":return"right";case"RL":return"left";case"TB":default:return"top"}},"getDefaultSelfLoopSide"),rct=o(e=>e==="flowchart"||e==="flowchart-v2"||e==="stateDiagram","shouldMergeSelfLoopSegments"),nct=o((e,t,r,n,i)=>{let a=[],s=new Set;if(r.forEach(({start:d,end:f})=>{d!==n&&s.add(d),f!==n&&s.add(f)}),s.forEach(d=>{let f=e.node(d);typeof f?.x=="number"&&typeof f?.y=="number"&&a.push(f)}),a.length===0&&r.forEach(({edge:d})=>{(d.points??[]).forEach(f=>{typeof f?.x=="number"&&typeof f?.y=="number"&&a.push(f)})}),a.length===0)return v0e(i);let l=a.reduce((d,f)=>({x:d.x+f.x/a.length,y:d.y+f.y/a.length}),{x:0,y:0}),u=l.x-t.x,h=l.y-t.y;return Math.abs(u)>Math.abs(h)?u>0?"right":"left":Math.abs(h)>0?h>0?"bottom":"top":v0e(i)},"getSelfLoopSide"),ict=o((e,t="top",r=0,n=0)=>{let i=e.x,a=e.y-r,s=e.width/2,l=e.height/2,u=Math.max(36,Math.min(100,e.width*.8)),h=y0e(Math.max(n,e.width*.35),36,u),d=y0e(Math.min(e.width,e.height)*.45,24,48);switch(t){case"bottom":{let f=a+l;return[{x:i-h/2,y:f},{x:i-h/2,y:f+d},{x:i+h/2,y:f+d},{x:i+h/2,y:f}]}case"right":{let f=i+s;return[{x:f,y:a-h/2},{x:f+d,y:a-h/2},{x:f+d,y:a+h/2},{x:f,y:a+h/2}]}case"left":{let f=i-s;return[{x:f,y:a-h/2},{x:f-d,y:a-h/2},{x:f-d,y:a+h/2},{x:f,y:a+h/2}]}case"top":default:{let f=a-l;return[{x:i-h/2,y:f},{x:i-h/2,y:f-d},{x:i+h/2,y:f-d},{x:i+h/2,y:f}]}}},"getSelfLoopPoints"),act=o((e,t,r="top",n=0,i={})=>{let s=e.x,l=e.y-n,u=i.width??0,h=i.height??0;switch(r){case"bottom":return{x:s,y:Math.max(...t.map(d=>d.y))+h/2+4};case"right":return{x:Math.max(...t.map(d=>d.x))+u/2+4,y:l};case"left":return{x:Math.min(...t.map(d=>d.x))-u/2-4,y:l};case"top":default:return{x:s,y:Math.min(...t.map(d=>d.y))-h/2-4}}},"getSelfLoopLabelPosition"),x0e=o((e,t=0,{mergeSelfLoops:r=!0}={})=>{let n=new Map,i=[],a=e.graph()?.rankdir;return e.edges().forEach(s=>{let l=e.edge(s);if(r&&l.selfLoop){let u=l.selfLoop.id;n.has(u)||n.set(u,[]),n.get(u).push({edge:l,start:s.v,end:s.w})}else i.push({edge:l,start:s.v,end:s.w})}),n.forEach(s=>{if(s.length!==3){s.forEach(x=>i.push(x));return}s.sort((x,b)=>x.edge.selfLoop.order-b.edge.selfLoop.order);let[l,u,h]=s,d=l.edge.originalEdge??u.edge.originalEdge??h.edge.originalEdge??u.edge,f=e.node(d.start);if(!f){s.forEach(x=>i.push(x));return}let p={width:u.edge.width,height:u.edge.height},m=nct(e,f,s,d.start,a),g=ict(f,m,t,p.width??0),y=act(f,g,m,t,p),v={...u.edge,...d,id:d.id,points:g,start:d.start,end:d.end,x:y.x,y:y.y,width:p.width,height:p.height,labelStyle:u.edge.labelStyle,fromCluster:l.edge.fromCluster??u.edge.fromCluster??h.edge.fromCluster,toCluster:l.edge.toCluster??u.edge.toCluster??h.edge.toCluster};delete v.selfLoop,delete v.originalEdge,i.push({edge:v,start:v.start,end:v.end})}),i},"getEdgesToRender"),b0e=o(async(e,t,r,n,i,a)=>{Z.warn("Graph in recursive render:XAX",hc(t),i);let s=t.graph().rankdir;Z.trace("Dir in recursive render - dir:",s);let l=e.insert("g").attr("class","root");t.nodes()?Z.info("Recursive render XXX",t.nodes()):Z.info("No nodes found for",t),t.edges().length>0&&Z.info("Recursive edges",t.edge(t.edges()[0]));let u=l.insert("g").attr("class","clusters"),h=l.insert("g").attr("class","edgePaths"),d=l.insert("g").attr("class","edgeLabels"),f=l.insert("g").attr("class","nodes"),p=rct(r);await Promise.all(t.nodes().map(async function(b){let T=t.node(b);if(i!==void 0){let k=JSON.parse(JSON.stringify(i.clusterData));Z.trace(`Setting data for parent cluster XXX
+ Node.id = `,b,`
+ data=`,k.height,`
+Parent cluster`,i.height),t.setNode(i.id,k),t.parent(b)||(Z.trace("Setting parent",b,i.id),t.setParent(b,i.id,k))}if(Z.info("(Insert) Node XXX"+b+": "+JSON.stringify(t.node(b))),T?.clusterNode){Z.info("Cluster identified XBX",b,T.width,t.node(b));let{ranksep:k,nodesep:C}=t.graph();T.graph.setGraph({...T.graph.graph(),ranksep:k+25,nodesep:C});let w=await b0e(f,T.graph,r,n,t.node(b),a),S=w.elem;pt(T,S),T.diff=w.diff||0,Z.info("New compound node after recursive render XAX",b,"width",T.width,"height",T.height),Kce(S,T)}else t.children(b).length>0?(Z.trace("Cluster - the non recursive path XBX",b,T.id,T,T.width,"Graph:",t),Z.trace(qm(T.id,t)),Br.set(T.id,{id:qm(T.id,t),node:T})):(Z.trace("Node - the non recursive path XAX",b,f,t.node(b),s),await nf(f,t.node(b),{config:a,dir:s}))})),await o(async()=>{let b=t.edges().map(async function(T){let k=t.edge(T.v,T.w,T.name);if(Z.info("Edge "+T.v+" -> "+T.w+": "+JSON.stringify(T)),Z.info("Edge "+T.v+" -> "+T.w+": ",T," ",JSON.stringify(t.edge(T))),Z.info("Fix",Br,"ids:",T.v,T.w,"Translating: ",Br.get(T.v),Br.get(T.w)),p&&k.selfLoop){if(k.selfLoop.order!==1)return;let C=k.id;k.id=k.selfLoop.id,await Rm(d,k),k.id=C;return}await Rm(d,k)});await Promise.all(b)},"processEdges")(),Z.info("Graph before layout:",JSON.stringify(hc(t))),Z.info("############################################# XXX"),Z.info("###                Layout                 ### XXX"),Z.info("############################################# XXX"),gT(t),Z.info("Graph after layout:",JSON.stringify(hc(t)));let g=0,{subGraphTitleTotalMargin:y}=oc(a);await Promise.all(m0e(t).map(async function(b){let T=t.node(b);if(Z.info("Position XBX => "+b+": ("+T.x,","+T.y,") width: ",T.width," height: ",T.height),T?.clusterNode)T.y+=y,Z.info("A tainted cluster node XBX1",b,T.id,T.width,T.height,T.x,T.y,t.parent(b)),Br.get(T.id).node=T,_m(T);else if(t.children(b).length>0){Z.info("A pure cluster node XBX1",b,T.id,T.x,T.y,T.width,T.height,t.parent(b)),T.height+=y,t.node(T.parentId);let k=T?.padding/2||0,C=T?.labelBBox?.height||0,w=C-k||0;Z.debug("OffsetY",w,"labelHeight",C,"halfPadding",k),await rf(u,T),Br.get(T.id).node=T}else{let k=t.node(T.parentId);T.y+=y/2,Z.info("A regular node XBX1 - using the padding",T.id,"parent",T.parentId,T.width,T.height,T.x,T.y,"offsetY",T.offsetY,"parent",k,k?.offsetY,T),_m(T)}}));let v=y/2;return x0e(t,v,{mergeSelfLoops:p}).forEach(function({edge:b,start:T,end:k}){Z.info("Edge "+T+" -> "+k+": "+JSON.stringify(b),b),b.points.forEach(R=>R.y+=v);let C=t.node(T),w=t.node(k),S=Hy(h,b,Br,r,C,w,n);K4(b,S)}),t.nodes().forEach(function(b){let T=t.node(b);Z.info(b,T.type,T.diff),T.isGroup&&(g=T.diff)}),Z.warn("Returning from recursive render XAX",l,g),{elem:l,diff:g}},"recursiveRender"),sct=o(async(e,t)=>{let r=new on({multigraph:!0,compound:!0}).setGraph({rankdir:e.direction,nodesep:e.config?.nodeSpacing||e.config?.flowchart?.nodeSpacing||e.nodeSpacing,ranksep:e.config?.rankSpacing||e.config?.flowchart?.rankSpacing||e.rankSpacing,marginx:8,marginy:8}).setDefaultEdgeLabel(function(){return{}}),n=t.select("g");Uy(n,e.markers,e.type,e.diagramId),J4(),X4(),q4(),o5(),e.nodes.forEach(a=>{r.setNode(a.id,{...a}),a.parentId&&r.setParent(a.id,a.parentId)}),Z.debug("Edges:",e.edges),e.edges.forEach(a=>{if(a.start===a.end){let s=a.start,l=s+"---"+s+"---1",u=s+"---"+s+"---2",h=r.node(s);r.setNode(l,{domId:l,id:l,parentId:h.parentId,labelStyle:"",label:"",padding:0,shape:"labelRect",style:"",width:10,height:10}),r.setParent(l,h.parentId),r.setNode(u,{domId:u,id:u,parentId:h.parentId,labelStyle:"",padding:0,shape:"labelRect",label:"",style:"",width:10,height:10}),r.setParent(u,h.parentId);let d=structuredClone(a),f=structuredClone(a),p=structuredClone(a),m=structuredClone(a);f.originalEdge=d,f.selfLoop={id:d.id,order:0},p.originalEdge=d,p.selfLoop={id:d.id,order:1},m.originalEdge=d,m.selfLoop={id:d.id,order:2},f.label="",f.arrowTypeEnd="none",f.endLabelLeft="",f.endLabelRight="",f.startLabelLeft="",f.id=s+"-cyclic-special-1",p.startLabelRight="",p.startLabelLeft="",p.endLabelLeft="",p.endLabelRight="",p.arrowTypeStart="none",p.arrowTypeEnd="none",p.id=s+"-cyclic-special-mid",m.label="",m.startLabelRight="",m.startLabelLeft="",m.arrowTypeStart="none",h.isGroup&&(f.fromCluster=s,m.toCluster=s),m.id=s+"-cyclic-special-2",m.arrowTypeStart="none",r.setEdge(s,l,f,s+"-cyclic-special-0"),r.setEdge(l,u,p,s+"-cyclic-special-1"),r.setEdge(u,s,m,s+"-cyclic-special-2")}else r.setEdge(a.start,a.end,{...a},a.id)}),Z.warn("Graph at first:",JSON.stringify(hc(r))),d0e(r),Z.warn("Graph after XAX:",JSON.stringify(hc(r)));let i=Ae();await b0e(n,r,e.type,e.diagramId,void 0,i)},"render")});var w0e=F(()=>{"use strict"});var S0e={};ir(S0e,{captureNodeSizes:()=>hct,shouldCaptureSizes:()=>lct});function k0e(){if(!(typeof globalThis>"u"))return globalThis}function lct(){return!!k0e()?.mermaidCaptureSizes}function cct(){return typeof location>"u"?"browser-dev":`${location.pathname}${location.search}`}function uct(e,t){let r=k0e();if(!r)return;let n=t.node(),a=((n&&"ownerSVGElement"in n?n.ownerSVGElement:null)??n)?.id??"(unknown)";r.mermaidCapturedSizes??=[];let s={svgId:a,sizes:e};r.mermaidCapturedSizes.push(s),r.mermaidLastCapturedSizes=s}function hct(e,t){let r=[];for(let n of t.nodes)n.isGroup||r.push({id:n.id,width:n.width??0,height:n.height??0});r.length!==0&&uct({metadata:{captureVersion:1,capturedAt:new Date().toISOString(),capturedFrom:cct()},nodes:r},e)}var E0e=F(()=>{"use strict";w0e();o(k0e,"getCaptureGlobal");o(lct,"shouldCaptureSizes");o(cct,"capturedFromLocation");o(uct,"emitCapturedSizes");o(hct,"captureNodeSizes")});async function A0e(e,t){let r=new on({multigraph:!0,compound:!0}),n=[...t.edges],i=Ae(),a=e.insert("g").attr("class","root"),s=a.insert("g").attr("class","clusters"),l=a.insert("g").attr("class","edges edgePath"),u=a.insert("g").attr("class","edgeLabels"),h=a.insert("g").attr("class","nodes"),d=new Map,f=e.node()!=null;await Promise.all(t.nodes.map(async p=>{if(p.isGroup)r.setNode(p.id,{...p});else{if(f){let m=await nf(h,p,{config:i,dir:p.dir}),g=m.node()?.getBBox()??{width:0,height:0};d.set(p.id,m),p.width=g.width,p.height=g.height}r.setNode(p.id,{...p})}}));for(let p of n)r.setEdge(p.start,p.end,{...p},p.id),t.edges.some(g=>g.id===p.id)||t.edges.push(p);if(globalThis.mermaidCaptureSizes){let{captureNodeSizes:p}=await Promise.resolve().then(()=>(E0e(),S0e));p(e,t)}return{graph:r,groups:{clusters:s,edgePaths:l,edgeLabels:u,nodes:h,rootGroups:a},nodeElements:d}}var R0e=F(()=>{"use strict";qo();Xt();Lm();o(A0e,"createGraphWithElements")});function j9(e){let t=[];for(let r=0;r<e.length-1;r++)t.push({a:e[r],b:e[r+1]});return t}function dct(e,t,r,n){let i=t.x-e.x,a=t.y-e.y,s=n.x-r.x,l=n.y-r.y,u=i*l-a*s;if(u===0)return null;let h=r.x-e.x,d=r.y-e.y,f=(h*l-d*s)/u,p=(h*a-d*i)/u;return f<=c5||f>=1-c5||p<=c5||p>=1-c5?null:{point:{x:e.x+f*i,y:e.y+f*a},tA:f,tB:p}}function L0e(e){return Math.abs(e.b.x-e.a.x)>=Math.abs(e.b.y-e.a.y)}function fct(e){let t=[];for(let r=0;r<e.length;r++){let n=e[r],i=j9(n.points);for(let a=r+1;a<e.length;a++){let s=e[a],l=j9(s.points);for(let[u,h]of i.entries())for(let[d,f]of l.entries()){let p=dct(h.a,h.b,f.a,f.b);if(!p)continue;let m=L0e(h),g=L0e(f);(m!==g?m:!1)?t.push({jumpEdgeId:n.id,otherEdgeId:s.id,segIndex:u,t:p.tA,point:p.point}):t.push({jumpEdgeId:s.id,otherEdgeId:n.id,segIndex:d,t:p.tB,point:p.point})}}}return t}function mu(e){let t=Math.round(e*1e3)/1e3;return Number.isInteger(t)?`${t}`:`${t}`}function yT(e){return`${mu(e.x)},${mu(e.y)}`}function pct(e){let t=e.b.x-e.a.x,r=e.b.y-e.a.y;return Math.abs(t)>=Math.abs(r)?t>=0?1:0:r>=0?1:0}function gct(e,t){if(e.length<2)return e.map(a=>({...a}));let r=e.map(a=>({...a})),n=t.arrowTypeStart&&Yi[t.arrowTypeStart];if(n){let a=e[0],s=e[1],l=Math.atan2(s.y-a.y,s.x-a.x);r[0].x=a.x+n*Math.cos(l),r[0].y=a.y+n*Math.sin(l)}let i=t.arrowTypeEnd&&Yi[t.arrowTypeEnd];if(i){let a=e.length,s=e[a-2],l=e[a-1],u=Math.atan2(l.y-s.y,l.x-s.x);r[a-1].x=l.x-i*Math.cos(u),r[a-1].y=l.y-i*Math.sin(u)}return r}function yct(e,t,r,n,i){let a=e.point.x,s=e.point.y,l={x:a-t*e.r,y:s-r*e.r},u={x:a+t*e.r,y:s+r*e.r},h=[`L${yT(l)}`];return i==="arc"?h.push(`A${mu(e.r)},${mu(e.r)} 0 0 ${n} ${yT(u)}`):h.push(`M${yT(u)}`),h}function D0e(e,t,r,n){let i=t.x-e.x,a=t.y-e.y,s=r.x-t.x,l=r.y-t.y,u=Math.hypot(i,a),h=Math.hypot(s,l);if(u<l5||h<l5)return null;let d=i/u,f=a/u,p=s/h,m=l/h,g=d*p+f*m,y=Math.max(-1,Math.min(1,g)),v=Math.acos(y);if(v<l5||Math.abs(Math.PI-v)<l5)return null;let x=Math.min(n/Math.sin(v/2),u/2,h/2);return{startX:t.x-d*x,startY:t.y-f*x,endX:t.x+p*x,endY:t.y+m*x,ctrlX:t.x,ctrlY:t.y,cutLen:x}}function vct(e,t,r){let n=e.points;if(n.length<2)return"";let i=gct(n,e),a=e.curve==="rounded",s=j9(i),l=new Map;for(let h of t){let d=s[h.segIndex];if(!d)continue;let f=Math.hypot(d.b.x-d.a.x,d.b.y-d.a.y),p=l.get(h.segIndex)??[];p.push({t:h.t,point:h.point,d:h.t*f,r:r.jumpRadius}),l.set(h.segIndex,p)}let u=[`M${yT(i[0])}`];for(let h=0;h<s.length;h++){let d=s[h],f=Math.hypot(d.b.x-d.a.x,d.b.y-d.a.y),p=f===0?0:(d.b.x-d.a.x)/f,m=f===0?0:(d.b.y-d.a.y)/f,g=pct(d),y=0;if(a&&h>0){let T=D0e(i[h-1],i[h],i[h+1]??i[h],_0e);T&&(y=T.cutLen)}let v=f,x=null;a&&h<s.length-1&&(x=D0e(i[h],i[h+1],i[h+2]??i[h+1],_0e),x&&(v=f-x.cutLen));let b=[...l.get(h)??[]].sort((T,k)=>T.t-k.t);for(let T of b)T.r=Math.min(T.r,T.d-y,v-T.d);for(let T=0;T<b.length-1;T++){let k=b[T+1].d-b[T].d;if(b[T].r+b[T+1].r>k){let C=k/2;b[T].r=Math.min(b[T].r,C),b[T+1].r=Math.min(b[T+1].r,C)}}for(let T of b)T.r<mct||u.push(...yct(T,p,m,g,r.jumpStyle));a&&x?(u.push(`L${mu(x.startX)},${mu(x.startY)}`),u.push(`Q${mu(x.ctrlX)},${mu(x.ctrlY)} ${mu(x.endX)},${mu(x.endY)}`)):u.push(`L${yT(d.b)}`)}return u.join(" ")}function xct(e){return/^[\d\s+,.LMelm-]*$/.test(e)}function bct(e){return e?e==="linear"||e==="rounded"||e==="step"||e==="stepBefore"||e==="stepAfter":!0}function Tct(e){if(!e)return null;try{let t=typeof atob=="function"?atob(e):Buffer.from(e,"base64").toString(),r=JSON.parse(t);if(!Array.isArray(r))return null;let n=[];for(let i of r)i&&typeof i.x=="number"&&typeof i.y=="number"&&n.push({x:i.x,y:i.y});return n.length>=2?n:null}catch{return null}}function I0e(e,t,r){if(!r.enabled)return;let n=e.node();if(!n)return;let i=new Map;for(let h of t)i.set(h.id,h);let a=[],s=new Map;for(let h of t){let d=typeof CSS<"u"&&CSS.escape?CSS.escape(h.id):h.id,f=n.querySelector(`path[data-id="${d}"]`);if(!f)continue;s.set(h.id,f);let m=Tct(f.getAttribute("data-points"))??h.points;a.push({...h,points:m})}let l=fct(a);if(l.length===0)return;let u=new Map;for(let h of l){let d=u.get(h.jumpEdgeId)??[];d.push(h),u.set(h.jumpEdgeId,d)}for(let h of a){let d=u.get(h.id);if(!d||d.length===0)continue;let p=i.get(h.id)?.curve;if(p!==void 0&&!bct(p))continue;let m=s.get(h.id);if(!m)continue;if(p===void 0){let T=m.getAttribute("d")??"";if(!xct(T))continue}let g=m.getAttribute("style")??"",y=/stroke-dasharray\s*:\s*0\s+([\d.]+)\s+[\d.]+\s+([\d.]+)/.exec(g),v=y?Number.parseFloat(y[1]):null,x=y?Number.parseFloat(y[2]):null,b=vct(h,d,r);if(m.setAttribute("d",b),v!==null&&x!==null&&typeof m.getTotalLength=="function"){let T=m.getTotalLength(),k=Math.max(0,T-v-x),C=`0 ${v} ${k} ${x}`,w=g.replace(/stroke-dasharray\s*:[^;]*;?/g,`stroke-dasharray: ${C};`).replace(/;\s*;+/g,";");m.setAttribute("style",w)}}}var _0e,l5,c5,mct,M0e=F(()=>{"use strict";Y4();_0e=5,l5=1e-5,c5=1e-6;o(j9,"buildSegmentList");o(dct,"segmentIntersection");o(L0e,"isHorizontalSeg");o(fct,"findEdgeIntersections");o(mu,"fmt");o(yT,"pointToString");o(pct,"getArcSweepFlag");mct=.001;o(gct,"applyMarkerOffsets");o(yct,"emitJump");o(D0e,"computeRoundedCorner");o(vct,"rewriteEdgePath");o(xct,"isStraightPath");o(bct,"curveSupportsLineHops");o(Tct,"decodeDataPoints");o(I0e,"applyLineJumpsToSvg")});async function N0e(e,t){for(let i of e.nodes)i.isGroup?await rf(t.clusters,i):_m(i);let r=new Map;for(let i of e.nodes)i?.id&&r.set(i.id,i);for(let i of e.edges){let a=i.start?r.get(i.start)??{}:{},s=i.end?r.get(i.end)??{}:{},l=Hy(t.edgePaths,{...i},{},e.type,a,s,e.diagramId);i.label&&await Rm(t.rootGroups,i),i.label&&Cct(i,l)}let n=e.config?.swimlane?.lineHops;if(n!==!1){let i=n==="gap"?"gap":"arc",a=e.edges.filter(s=>Array.isArray(s.points)&&s.points.length>=2).map(s=>({id:s.id,points:s.points,curve:s.curve,arrowTypeStart:s.arrowTypeStart,arrowTypeEnd:s.arrowTypeEnd}));I0e(t.edgePaths,a,{enabled:!0,jumpRadius:6,jumpStyle:i})}}function Cct(e,t){let r=t?.updatedPath??t?.originalPath,n=_t(),{subGraphTitleTotalMargin:i}=oc({flowchart:n.flowchart??{}});if(e.label){let a=qy.get(e.id),s=e.x,l=e.y;if(r){let u=Zt.calcLabelPosition(r);Z.debug("Moving label "+e.label+" from (",s,",",l,") to (",u.x,",",u.y,") abc88"),t&&(s=u.x,l=u.y)}a.attr("transform",`translate(${s}, ${l+i/2})`)}if(e?.startLabelLeft){let a=_i.get(e.id).startLeft,s=e?.x,l=e?.y;if(r){let u=Zt.calcTerminalLabelPosition(e.arrowTypeStart?10:0,"start_left",r);s=u.x,l=u.y}a.attr("transform",`translate(${s}, ${l})`)}if(e.startLabelRight){let a=_i.get(e.id).startRight,s=e.x,l=e.y;if(r){let u=Zt.calcTerminalLabelPosition(e.arrowTypeStart?10:0,"start_right",r);s=u.x,l=u.y}a.attr("transform",`translate(${s}, ${l})`)}if(e.endLabelLeft){let a=_i.get(e.id).endLeft,s=e.x,l=e.y;if(r){let u=Zt.calcTerminalLabelPosition(e.arrowTypeEnd?10:0,"end_left",r);s=u.x,l=u.y}a.attr("transform",`translate(${s}, ${l})`)}if(e.endLabelRight){let a=_i.get(e.id).endRight,s=e.x,l=e.y;if(r){let u=Zt.calcTerminalLabelPosition(e.arrowTypeEnd?10:0,"end_right",r);s=u.x,l=u.y}a.attr("transform",`translate(${s}, ${l})`)}}var P0e=F(()=>{"use strict";Lm();Wy();G2();M0e();vt();Vy();ur();Qt();o(N0e,"adjustLayout");o(Cct,"positionEdgeLabel")});function O0e(e){return Math.max(e.padding??20,20)}function wct(e){let{x:t,y:r,width:n,height:i}=e,a=e.swimlaneContentTop;if(typeof t!="number"||typeof r!="number"||typeof n!="number"||typeof i!="number"||typeof a!="number"||!Number.isFinite(t)||!Number.isFinite(r)||!Number.isFinite(n)||!Number.isFinite(i)||!Number.isFinite(a)||n<=0||i<=0){delete e.groupTitleRect;return}let s=r-i/2,l=Math.min(a,r+i/2),u=Math.min(21,Math.max(0,l-s)),h=s+u;if(h<=s){delete e.groupTitleRect;return}e.groupTitleRect={left:t-n/2,right:t+n/2,top:s,bottom:h}}function B0e(e){let t=e.direction,r=e.nodes??=[];for(let a of e.nodes??[])a.isGroup&&!a.parentId&&(a.shape="swimlane",t&&(a.direction=t));let n=r.filter(a=>!a.isGroup&&!a.parentId);if(n.length===0)return;let i=r.find(a=>a.id===X9);i?i.isGroup&&(i.shape="swimlane",t&&(i.direction=t)):(i={id:X9,label:"",isGroup:!0,shape:"swimlane",padding:20,...t?{direction:t}:{}},r.push(i));for(let a of n)a.parentId=X9}function $0e(e){let t=new Map;for(let u of e.nodes??[])t.set(u.id,u);let r=[];for(let u of e.edges??[]){let h=typeof u.start=="string"?u.start:void 0,d=typeof u.end=="string"?u.end:void 0;!h||!d||u.labelNodeId||r.push({id:u.id,src:h,dst:d,ref:u})}let n=e.nodes??[],i=n.filter(u=>u.isGroup),a=n.filter(u=>!u.isGroup);return{nodes:[...[...i].reverse(),...a].map(u=>u.id),edges:r,layout:e,nodeById:t}}function F0e(e,t,r,n){let{layout:i}=e,a=e.nodeById,s=n?.layerGap??100,l=n?.nodeGap??40,u=0;for(let p of t.layers){let m=0;for(let g of p){let y=a.get(g);if(!y){m++;continue}y.layer=u,y.order=m;let v=r.x[g]??m*l,x=r.y[g]??u*s;y.x=v,y.y=x,m++}u++}let h=i.nodes??[],d=new Map,f=[];for(let p of h){if(!p?.isGroup)continue;p.parentId||f.push(p);let m=h.filter(b=>b.parentId===p.id),g=1/0,y=-1/0,v=1/0,x=-1/0;for(let b of m){let T=b.x??r.x[b.id],k=b.y??r.y[b.id],C=b.width??0,w=b.height??0;T!=null&&k!=null&&(g=Math.min(g,T-C/2),y=Math.max(y,T+C/2),v=Math.min(v,k-w/2),x=Math.max(x,k+w/2))}if(g===1/0||v===1/0)p.x=p.x??0,p.y=p.y??0,p.width=p.width??0,p.height=p.height??0;else{let b=p.padding??20,T=p.parentId?b:2*O0e(p),k=b,C=Math.max(0,y-g)+T,w=Math.max(0,x-v)+k,S=(g+y)/2,R=(v+x)/2;p.x=S,p.y=R,p.width=C,p.height=w,d.set(p.id,{minX:g,maxX:y,minY:v,maxY:x})}}if(f.length>0&&d.size>0){let p=1/0,m=-1/0,g=0;for(let y of f){let v=y.padding??20;v>g&&(g=v);let x=d.get(y.id);x&&(p=Math.min(p,x.minY),m=Math.max(m,x.maxY))}if(p!==1/0&&m!==-1/0){let y=Math.max(0,m-p),x=Math.max(g,36),b=y+2*x,T=(p+m)/2;for(let L of f)L.y=T,L.height=b,L.swimlaneContentTop=p;let k=[...f].sort((L,N)=>{let I=L.x??0,_=N.x??0;return I-_}),C=[],w=[],S=[];for(let L of k){let N=d.get(L.id);if(!N)continue;let I=Math.max(0,N.maxX-N.minX)+2*O0e(L),_=(N.minX+N.maxX)/2;C.push(L.id),w.push(_),S.push(I)}let R=C.length;if(R>0){let L=new Map;if(R===1)L.set(C[0],S[0]);else{let N=[];for(let D=0;D<R-1;D++)N.push(w[D+1]-w[D]);let I=new Array(R);I[0]=0;for(let D=0;D<R-1;D++)I[D+1]=2*N[D]-I[D];let _=0,A=Number.POSITIVE_INFINITY;for(let D=0;D<R;D++){let P=S[D];D%2===0?_=Math.max(_,P-I[D]):A=Math.min(A,I[D]-P)}let M=_;_<=A?M=(_+A)/2:M=_;for(let D=0;D<R;D++){let P=I[D]+(D%2===0?M:-M),B=Math.max(S[D],P);L.set(C[D],B)}}for(let N of f){let I=L.get(N.id);I!=null&&(N.width=I),wct(N)}}}}}var X9,K9=F(()=>{"use strict";X9="__swimlane_default__";o(O0e,"topLaneHorizontalPadding");o(wct,"assignTopLaneTitleRect");o(B0e,"prepareLayoutForSwimlanes");o($0e,"toGraphView");o(F0e,"writeBackToLayoutData")});function z0e(e){let t=[],r=[],n=new Map;for(let s of e.nodes)n.set(s.id,s);for(let s of e.edges){if(!s.label||s.label.length===0||s.isLayoutOnly||s.labelNodeId)continue;let l=s.start?n.get(s.start):void 0,u=s.end?n.get(s.end):void 0;if(!l||!u){Z.warn(kct,`Edge ${s.id} has missing source or target node`);continue}let h=`edge-label-${s.start}-${s.end}-${s.id}`,f=l.parentId!==u.parentId?u.parentId:l.parentId,p={id:h,label:s.label,edgeStart:s.start??"",edgeEnd:s.end??"",shape:"labelRect",width:0,height:0,isEdgeLabel:!0,isDummy:!0,parentId:f,isGroup:!1,labelStyle:Array.isArray(s.labelStyle)?s.labelStyle[0]:s.labelStyle??"",...l.dir?{dir:l.dir}:{}};t.push(p),s.labelNodeId=h,s.label=void 0,s.text=void 0;let m={id:`${s.id}-to-label`,start:s.start,end:h,type:"normal",isLayoutOnly:!0},g={id:`${s.id}-from-label`,start:h,end:s.end,type:"normal",isLayoutOnly:!0};r.push(m,g)}let i=[...e.nodes,...t],a=[...e.edges,...r];return{...e,nodes:i,edges:a}}var kct,G0e=F(()=>{"use strict";vt();kct="[EdgeLabelNodes]";o(z0e,"createEdgeLabelNodes")});function W0e(e){let t=e.x??0,r=e.y??0,n=e.width??0,i=e.height??0;return n>0&&i>0?{cx:t,cy:r,rect:x1(t,r,n,i)}:void 0}function q0e(e){if(e.isGroup)return;let t=W0e(e);return t?{id:String(e.id??""),cx:t.cx,cy:t.cy,rect:t.rect}:void 0}function uo(e,t,r=.001){return Math.abs(e.x-t.x)<r&&Math.abs(e.y-t.y)<r}function Qr(e,t,r=.001){return Math.abs(e.x-t.x)<r}function tn(e,t,r=.001){return Math.abs(e.y-t.y)<r}function bi(e,t,r=.001){return tn(e,t,r)&&Math.abs(e.x-t.x)>r}function Ti(e,t,r=.001){return Qr(e,t,r)&&Math.abs(e.y-t.y)>r}function ls(e,t,r,n){return Math.max(0,Math.min(Math.max(e,t),Math.max(r,n))-Math.max(Math.min(e,t),Math.min(r,n)))}function dc(e,t,r=.001){return e.horizontal&&t.horizontal&&tn(e.a,t.a,r)?ls(e.a.x,e.b.x,t.a.x,t.b.x):e.vertical&&t.vertical&&Qr(e.a,t.a,r)?ls(e.a.y,e.b.y,t.a.y,t.b.y):0}function _f(e,t=.001){let r=[];for(let n=0;n<e.length-1;n++){let i=e[n],a=e[n+1],s=bi(i,a,t),l=Ti(i,a,t);(s||l)&&r.push({index:n,a:i,b:a,horizontal:s,vertical:l})}return r}function ho(e,t=.001){let r=_f(e,t),n=0;for(let i=1;i<r.length;i++)r[i-1].horizontal!==r[i].horizontal&&n++;return n}function Jr(e,t=.001){let r=[];for(let n of e){let i=r.length>0?r[r.length-1]:void 0;(!i||!uo(i,n,t))&&r.push({x:n.x,y:n.y})}return r}function u5(e,t=.001){if(!e||e.length!==4)return;let[r,n,i,a]=e;return bi(r,n,t)&&Ti(n,i,t)&&bi(i,a,t)?{kind:"HVH",p0:r,p1:n,p2:i,p3:a}:Ti(r,n,t)&&bi(n,i,t)&&Ti(i,a,t)?{kind:"VHV",p0:r,p1:n,p2:i,p3:a}:void 0}function vT(e,t,r,n=0){let i=Math.min(e.x,t.x),a=Math.max(e.x,t.x),s=Math.min(e.y,t.y),l=Math.max(e.y,t.y);return a>r.left-n&&i<r.right+n&&l>r.top-n&&s<r.bottom+n}function h5(e,t,r=0){return e.x>t.left+r&&e.x<t.right-r&&e.y>t.top+r&&e.y<t.bottom-r}function H0e(e,t){return e.left<=t.left&&e.right>=t.right&&e.top<=t.top&&e.bottom>=t.bottom}function d5(e,t){return e.left<t.right&&e.right>t.left&&e.top<t.bottom&&e.bottom>t.top}function Z9(e,t){return{left:e.left-t,right:e.right+t,top:e.top-t,bottom:e.bottom+t}}function x1(e,t,r,n){return{left:e-r/2,right:e+r/2,top:t-n/2,bottom:t+n/2}}function Sa(e){return W0e(e)?.rect}function Lf(e,t){switch(t){case"top":return{x:e.cx,y:e.rect.top};case"bottom":return{x:e.cx,y:e.rect.bottom};case"left":return{x:e.rect.left,y:e.cy};case"right":return{x:e.rect.right,y:e.cy}}}function f5(e,t,r,n,i,a=.001){let s=t==="left"||t==="right",l=n==="left"||n==="right";if(s&&l){if(t==="right"&&n==="left"&&e.x<r.x||t==="left"&&n==="right"&&e.x>r.x){if(tn(e,r,a))return[e,r];let f=(e.x+r.x)/2;return[e,{x:f,y:e.y},{x:f,y:r.y},r]}if(t===n){if(tn(e,r,a))return;let f=t==="left"?Math.min(e.x,r.x)-i:Math.max(e.x,r.x)+i;return[e,{x:f,y:e.y},{x:f,y:r.y},r]}return}if(!s&&!l){if(t===n){if(Qr(e,r,a))return;let p=t==="top"?Math.min(e.y,r.y)-i:Math.max(e.y,r.y)+i;return[e,{x:e.x,y:p},{x:r.x,y:p},r]}if(!(t==="bottom"&&n==="top"&&e.y<r.y||t==="top"&&n==="bottom"&&e.y>r.y))return;if(Qr(e,r,a))return[e,r];let f=(e.y+r.y)/2;return[e,{x:e.x,y:f},{x:r.x,y:f},r]}if(s&&!l){let d=t==="right"&&r.x>e.x||t==="left"&&r.x<e.x,f=n==="top"&&e.y<r.y||n==="bottom"&&e.y>r.y;return d&&f?[e,{x:r.x,y:e.y},r]:void 0}let u=t==="bottom"&&r.y>e.y||t==="top"&&r.y<e.y,h=n==="left"&&e.x<r.x||n==="right"&&e.x>r.x;return u&&h?[e,{x:e.x,y:r.y},r]:void 0}function p5(e,t,r,n){return t==="left"||t==="right"?[e,{x:n,y:e.y},{x:n,y:r.y},r]:[e,{x:e.x,y:n},{x:r.x,y:n},r]}function b1(e){let t=new Map,r=[];for(let n of e){if(n.isEdgeLabel)continue;let i=q0e(n);i&&(t.set(i.id,i),r.push({id:i.id,rect:i.rect}))}return{nodeInfoById:t,realNodeRects:r}}function gu(e){let t=[],r=[];for(let n of e){let i=q0e(n);if(!i)continue;let a={id:i.id,rect:i.rect};n.isEdgeLabel?r.push(a):t.push(a)}return{realNodeRects:t,labelNodeRects:r}}function U0e(e,{includeEdgeLabels:t=!0}={}){let r=[];for(let n of e){if(n.isGroup||!t&&n.isEdgeLabel)continue;let i=n.x??0,a=n.y??0,s=n.width??0,l=n.height??0;r.push({nodeId:n.id,...x1(i,a,s,l)})}return r}function m5(e,t,r=.001){let n=e.start,i=e.end;if(!n||!i)return;let a=t.get(n),s=t.get(i);if(!(!a||!s))return{srcId:n,dstId:i,srcInfo:a,dstInfo:s,collinearX:Math.abs(a.cx-s.cx)<r,collinearY:Math.abs(a.cy-s.cy)<r}}function Xn(e,t,r,n=[],i=0){for(let a of r)if(!n.includes(a.id)&&vT(e,t,a.rect,-i))return!0;return!1}function Q9(e,t,r,n,i=.001,a=1e-6){let s=tn(e,t,i),l=Qr(e,t,i),u=tn(r,n,i),h=Qr(r,n,i);if(s&&u||l&&h||!(s||l)||!(u||h))return!1;let d=s?{a:e,b:t}:{a:r,b:n},f=l?{a:e,b:t}:{a:r,b:n},p=d.a.y,m=Math.min(d.a.x,d.b.x),g=Math.max(d.a.x,d.b.x),y=f.a.x,v=Math.min(f.a.y,f.b.y),x=Math.max(f.a.y,f.b.y);if(y<m||y>g||p<v||p>x)return!1;let b=Math.abs(y-d.a.x)<a&&Math.abs(p-d.a.y)<a||Math.abs(y-d.b.x)<a&&Math.abs(p-d.b.y)<a,T=Math.abs(y-f.a.x)<a&&Math.abs(p-f.a.y)<a||Math.abs(y-f.b.x)<a&&Math.abs(p-f.b.y)<a;return!(b&&T)}function Sct(e,t,r,n,i=.001){let a=tn(e,t,i),s=Qr(e,t,i),l=tn(r,n,i),u=Qr(r,n,i);return s&&u&&Qr(e,r,i)?ls(e.y,t.y,r.y,n.y)>i:a&&l&&tn(e,r,i)?ls(e.x,t.x,r.x,n.x)>i:!1}function xT(e,t,r,n,{epsilon:i=.001,skipDegenerateOther:a=!1}={}){for(let s of r){if(s===n||s.isLayoutOnly)continue;let l=s.points;if(!(!l||l.length<2))for(let u=0;u<l.length-1;u++){let h=l[u],d=l[u+1];if(!(a&&uo(h,d,i))&&(Q9(e,t,h,d,i)||Sct(e,t,h,d,i)))return!0}}return!1}function fc(e,t,r,n,i=.001){let a=tn(e,t,i),s=Qr(e,t,i),l=tn(r,n,i),u=Qr(r,n,i);if(!(a&&u||s&&l))return!1;let h=a?{a:e,b:t}:{a:r,b:n},d=a?{a:r,b:n}:{a:e,b:t},f=h.a.y,p=Math.min(h.a.x,h.b.x),m=Math.max(h.a.x,h.b.x),g=d.a.x,y=Math.min(d.a.y,d.b.y),v=Math.max(d.a.y,d.b.y);return g>p+i&&g<m-i&&f>y+i&&f<v-i}function V0e(e,t,r){let n=Math.min(t,r),i=Math.max(t,r);return e>n+.001&&e<i-.001}function Ect(e,t,r){return Qr(e,t)&&Qr(t,r)?V0e(t.y,e.y,r.y):tn(e,t)&&tn(t,r)?V0e(t.x,e.x,r.x):!1}function Act(e){let t=!1,r=[];for(let n=0;n<e.length;n++){let i=r[r.length-1],a=e[n],s=n+1<e.length?e[n+1]:void 0;if(i&&s){if(uo(i,s)){n++,t=!0;continue}if(Ect(i,a,s)){t=!0;continue}}r.push(a)}return{points:r,changed:t}}function bT(e){let t=[e[0]];for(let n=1;n<e.length;n++){let i=t[t.length-1],a=e[n];if(!Qr(i,a)&&!tn(i,a)){let s=t.length>=2?t[t.length-2]:void 0,u=(s?Qr(s,i):!1)?{x:i.x,y:a.y}:{x:a.x,y:i.y};t.push(u)}t.push(a)}let r=[];for(let n of t){let i=r[r.length-1];(!i||!uo(i,n))&&r.push(n)}return r}function Tl(e){if(e.length<3)return e;let t=[...e];for(let r=0;r<32;r++){let n=Act(t);if(t=n.points,!n.changed)break}return t}var pc=F(()=>{"use strict";o(W0e,"measuredNodeRect");o(q0e,"nodeBoundsInfoFor");o(uo,"samePoint");o(Qr,"sameX");o(tn,"sameY");o(bi,"isHorizontalSegment");o(Ti,"isVerticalSegment");o(ls,"overlapLength");o(dc,"sameAxisSegmentOverlapLength");o(_f,"orthogonalSegmentsForPoints");o(ho,"countOrthogonalBends");o(Jr,"dedupeConsecutivePoints");o(u5,"classifyThreeSegmentRoute");o(vT,"segmentBoundsOverlapRect");o(h5,"pointInsideRect");o(H0e,"rectContainsRect");o(d5,"rectsOverlap");o(Z9,"inflateRect");o(x1,"rectFromCenterSize");o(Sa,"rectOfNodeBounds");o(Lf,"portForRectSide");o(f5,"buildOrthogonalPortPath");o(p5,"buildSameSideTrackPath");o(b1,"collectRealNodeBounds");o(gu,"collectNodeRectEntries");o(U0e,"collectLayoutNodeRects");o(m5,"getNodePairGeometry");o(Xn,"segmentHitsAnyRect");o(Q9,"orthogonalSegmentsCross");o(Sct,"sameAxisSegmentsOverlap");o(xT,"segmentConflictsWithAnyEdge");o(fc,"orthogonalSegmentsStrictlyCross");o(V0e,"strictlyBetween");o(Ect,"isCollinearIntermediate");o(Act,"simplifyPolylineOnce");o(bT,"orthogonalizePolyline");o(Tl,"simplifyPolyline")});function nye(e,t,r){let n=e;if(n.isLayoutOnly||!n.points||n.points.length<r)return;let i=n.start?t.get(n.start):void 0,a=n.end?t.get(n.end):void 0;return{edge:n,points:n.points,srcRect:i?Sa(i):void 0,dstRect:a?Sa(a):void 0}}function _ct(e,t,r){if(tn(e,t,Sr))return{x:e.x<r.left?r.left:r.right,y:e.y};if(Qr(e,t,Sr)){let n=e.y<r.top?r.top:r.bottom;return{x:e.x,y:n}}return{x:Math.min(r.right,Math.max(r.left,e.x)),y:Math.min(r.bottom,Math.max(r.top,e.y))}}function j0e(e,t,r){let n=r?1:-1,i=r?0:e.length-1;for(;i>=0&&i<e.length&&h5(e[i],t,Rct);)i+=n;if(i<0||i>=e.length)return e;let a=i-n;if(a<0||a>=e.length)return e;let s=_ct(e[i],e[a],t);return r?[s,...e.slice(i)]:[...e.slice(0,i+1),s]}function iye(e,t){for(let r of e){let n=nye(r,t,2);if(!n)continue;let i=[...n.points];n.srcRect&&(i=j0e(i,n.srcRect,!0)),n.dstRect&&(i=j0e(i,n.dstRect,!1)),i=Tl(bT(i)),i=aye(i,n.srcRect,n.dstRect),n.edge.points=Tl(bT(i))}}function X0e(e,t,r,n=!1){if(tn(e,t,Sr)){if(t.y<r.top-Sr||t.y>r.bottom+Sr)return t;if(n){if(e.x<r.left-Sr)return{x:r.left,y:e.y};if(e.x>r.right+Sr)return{x:r.right,y:e.y}}return{x:Math.abs(t.x-r.left)<=Math.abs(t.x-r.right)?r.left:r.right,y:e.y}}if(Qr(e,t,Sr)){if(t.x<r.left-Sr||t.x>r.right+Sr)return t;if(n){if(e.y<r.top-Sr)return{x:e.x,y:r.top};if(e.y>r.bottom+Sr)return{x:e.x,y:r.bottom}}let i=Math.abs(t.y-r.top)<=Math.abs(t.y-r.bottom);return{x:e.x,y:i?r.top:r.bottom}}return t}function J9(e,t,r){let n=e[t];for(let i=t+r;i>=0&&i<e.length;i+=r){let a=e[i];if(!uo(a,n,Sr))return a}return e[t+r]}function eB(e,t){let r=e+Y0e,n=t-Y0e;return r<=n?{lo:r,hi:n}:{lo:(e+t)/2,hi:(e+t)/2}}function K0e(e,t,r){let{lo:n,hi:i}=eB(t,r);return Math.min(i,Math.max(n,e))}function Lct(e){let t=Math.max(...e.map(n=>n.lo)),r=Math.min(...e.map(n=>n.hi));if(!(t>r))return{lo:t,hi:r}}function Z0e(e,t){return t==="left"||t==="right"?eB(e.top,e.bottom):eB(e.left,e.right)}function tB(e,t,r){let n=e.y>=r.top-Sr&&e.y<=r.bottom+Sr,i=e.x>=r.left-Sr&&e.x<=r.right+Sr;if(tn(e,t,Sr)&&n){if(Math.abs(e.x-r.left)<Sr)return"left";if(Math.abs(e.x-r.right)<Sr)return"right"}if(Qr(e,t,Sr)&&i){if(Math.abs(e.y-r.top)<Sr)return"top";if(Math.abs(e.y-r.bottom)<Sr)return"bottom"}}function g5(e){return e==="left"||e==="right"}function Dct(e,t,r,n,i){let a=[],s=r?tB(e,t,r):void 0,l=n?tB(t,e,n):void 0;return r&&s&&g5(s)===i&&a.push(Z0e(r,s)),n&&l&&g5(l)===i&&a.push(Z0e(n,l)),a.length>0?Lct(a):void 0}function Q0e(e,t,r,n,i){let a=Dct(e,t,r,n,i);if(!a)return;let s=i?e.y:e.x,l=Math.min(a.hi,Math.max(a.lo,s));if(!(Math.abs(l-s)<Sr))return i?[{x:e.x,y:l},{x:t.x,y:l}]:[{x:l,y:e.y},{x:l,y:t.y}]}function aye(e,t,r){if(e.length!==2)return e;let[n,i]=e;return tn(n,i,Sr)?Q0e(n,i,t,r,!0)??e:Qr(n,i,Sr)?Q0e(n,i,t,r,!1)??e:e}function Ict(e,t,r){return g5(r)?{x:e.x,y:K0e(e.y,t.top,t.bottom)}:{x:K0e(e.x,t.left,t.right),y:e.y}}function Mct(e,t,r,n,i,a){let s=e.map(l=>({...l}));for(let l=t;l>=0&&l<e.length;l+=r){let u=e[l];if(a&&!tn(u,n,Sr)||!a&&!Qr(u,n,Sr))break;a?s[l].y=i.y:s[l].x=i.x}return s}function J0e(e,t,r){if(e.length<2)return e;let n=r?0:e.length-1,i=r?1:-1,a=e[n],s=J9(e,n,i);if(!s)return e;let l=tB(a,s,t);if(!l)return e;let u=g5(l),h=Ict(a,t,l);return uo(a,h,Sr)?e:Mct(e,n,i,a,h,u)}function eye(e,t,r){let n=Math.min(e.x,t.x)>=r.left-Sr&&Math.max(e.x,t.x)<=r.right+Sr,i=Math.min(e.y,t.y)>=r.top-Sr&&Math.max(e.y,t.y)<=r.bottom+Sr;if(Math.abs(e.y-r.top)<Sr&&Math.abs(t.y-r.top)<Sr&&n)return"top";if(Math.abs(e.y-r.bottom)<Sr&&Math.abs(t.y-r.bottom)<Sr&&n)return"bottom";if(Math.abs(e.x-r.left)<Sr&&Math.abs(t.x-r.left)<Sr&&i)return"left";if(Math.abs(e.x-r.right)<Sr&&Math.abs(t.x-r.right)<Sr&&i)return"right"}function tye(e,t,r,n){switch(e){case"top":return Qr(t,r,Sr)&&r.y<n.top-Sr;case"bottom":return Qr(t,r,Sr)&&r.y>n.bottom+Sr;case"left":return tn(t,r,Sr)&&r.x<n.left-Sr;case"right":return tn(t,r,Sr)&&r.x>n.right+Sr}}function rye(e,t,r){if(e.length<3)return e;if(r){let a=eye(e[0],e[1],t);return a&&tye(a,e[1],e[2],t)?e.slice(1):e}let n=e.length-1,i=eye(e[n-1],e[n],t);return i&&tye(i,e[n-1],e[n-2],t)?e.slice(0,n):e}function Nct(e,t,r){let n=e;if(t){let a=J9(n,0,1);if(a){let s=X0e(a,n[0],t);s!==n[0]&&(n=[s,...n.slice(1)])}n=rye(n,t,!0)}if(r){let a=n.length-1,s=J9(n,a,-1);if(s){let l=X0e(s,n[a],r,!0);l!==n[a]&&(n=[...n.slice(0,a),l])}n=rye(n,r,!1)}let i=aye(n,t,r);return i!==n||n.length===2?i:(t&&(n=J0e(n,t,!0)),r&&(n=J0e(n,r,!1)),n)}function rB(e,t){for(let r of e){let n=nye(r,t,2);if(!n)continue;let i=Jr(n.points,Sr),a=Nct(i,n.srcRect,n.dstRect);if(a.length<3){n.edge.points=a;continue}let s=[a[0],{...a[0]},...a.slice(1,-1),a[a.length-1],{...a[a.length-1]}];n.edge.points=s}}var Sr,Rct,Y0e,sye=F(()=>{"use strict";pc();Sr=.001,Rct=.5,Y0e=4;o(nye,"endpointContextFor");o(_ct,"segmentEnterPoint");o(j0e,"clipEndpoint");o(iye,"clipEdgeEndpointsToNodeBoundaries");o(X0e,"snapEndpointToBoundary");o(J9,"firstDistinctAdjacent");o(eB,"cornerClearanceRange");o(K0e,"clampToCornerClearance");o(Lct,"intersectRanges");o(Z0e,"clearanceRangeForSide");o(tB,"terminalSideForSegment");o(g5,"isHorizontalSide");o(Dct,"straightClearanceRange");o(Q0e,"clearStraightEndpointCornerAxis");o(aye,"clearStraightEndpointCornerConnections");o(Ict,"cornerClearedEndpoint");o(Mct,"moveCollinearEndpointRun");o(J0e,"clearEndpointCornerConnection");o(eye,"borderSideForSegment");o(tye,"leavesOutward");o(rye,"collapseOwnBorderStub");o(Nct,"snapAndCollapseEndpoints");o(rB,"prepareEdgeEndpointsForRenderer")});function lye(e){return new Map(e.map(t=>[t.id,t]))}function Pct(e,t){let r=e.parentId,n=null;for(;r;){let i=t.get(r);if(!i?.isGroup)break;n=i.id,r=i.parentId}return n}function oye(e,t){let r=0,n=e.parentId;for(;n;){let i=t.get(n);if(!i?.isGroup)break;r++,n=i.parentId}return r}function cye(e){let t=1/0,r=-1/0,n=1/0,i=-1/0;for(let a of e){let s=a.x,l=a.y;if(typeof s!="number"||typeof l!="number")continue;let u=a.width??0,h=a.height??0;t=Math.min(t,s-u/2),r=Math.max(r,s+u/2),n=Math.min(n,l-h/2),i=Math.max(i,l+h/2)}return t===1/0||n===1/0?null:{minX:t,maxX:r,minY:n,maxY:i}}function Oct(e,t){let r=e.padding??20;e.x=(t.minX+t.maxX)/2,e.y=(t.minY+t.maxY)/2,e.width=Math.max(0,t.maxX-t.minX)+r,e.height=Math.max(0,t.maxY-t.minY)+r}function Bct(e){let t=lye(e),r=e.filter(n=>n.isGroup&&n.parentId).sort((n,i)=>oye(i,t)-oye(n,t));for(let n of r){let i=e.filter(s=>s.parentId===n.id),a=cye(i);a&&Oct(n,a)}}function nB(e,t){let r=e.nodes??[],n=e.edges??[],i=r.filter(u=>!u.isGroup),a=1/0,s=-1/0;for(let u of i){let h=u[t];typeof h=="number"&&(a=Math.min(a,h),s=Math.max(s,h))}if(!Number.isFinite(a)||!Number.isFinite(s))return!1;let l=o(u=>a+s-u,"mirror");for(let u of r){let h=u[t];typeof h=="number"&&(u[t]=l(h));let d=u.groupTitleRect;d&&(u.groupTitleRect=t==="x"?{...d,left:l(d.right),right:l(d.left)}:{...d,top:l(d.bottom),bottom:l(d.top)})}for(let u of n)for(let h of u.points??[])h[t]=l(h[t]);return!0}function uye(e){return(e.nodes??[]).some(r=>!r.isGroup)?nB(e,"y"):!0}function hye(e,t="LR"){let r=e.nodes??[],n=e.edges??[],i=r.filter(A=>!A.isGroup),a=1/0,s=1/0;for(let A of i){let M=A.x??0,D=A.y??0;M<a&&(a=M),D<s&&(s=D)}if(!Number.isFinite(a)||!Number.isFinite(s))return!1;let l=36,u=0,h=0;for(let A of i)u+=A.width??0,h+=A.height??0;let d=u/i.length,f=h/i.length,p=f>0?Math.max(1,d/f):1;for(let A of i){let M=A.x??0,P=((A.y??0)-s)*p+l,B=M-a;A.x=P,A.y=B}for(let A of n)if(A.points)for(let M of A.points){let D=M.x,B=(M.y-s)*p+l,O=D-a;M.x=B,M.y=O}Bct(r);let m=r.filter(A=>A.isGroup&&!A.parentId);if(m.length===0)return t==="RL"&&nB(e,"x"),!0;let g=lye(r),y=new Map;for(let A of r){if(A.isGroup)continue;let M=Pct(A,g);if(!M)continue;let D=y.get(M)??[];D.push(A),y.set(M,D)}let v=0;for(let A of m){let M=A.padding??0;M>v&&(v=M)}let x=[],b=1/0,T=-1/0;for(let A of m){let M=y.get(A.id)??[],D=cye(M);D&&(b=Math.min(b,D.minX),T=Math.max(T,D.maxX),x.push({lane:A,contentTop:D.minY,contentBottom:D.maxY,centerY:(D.minY+D.maxY)/2}))}if(b===1/0||T===-1/0)return!0;let k=Math.max(0,T-b),C=Math.max(v,10),w=k+2*C,S=l+w,N=(b+T)/2-w/2-l,I=N+S/2,_=Math.max(v,l);x.sort((A,M)=>A.centerY-M.centerY);for(let A=0;A<x.length;A++){let M=x[A],D,P;if(A===0?D=M.contentTop-_:D=(x[A-1].contentBottom+M.contentTop)/2,A===x.length-1)P=M.contentBottom+_;else{let $=x[A+1];P=(M.contentBottom+$.contentTop)/2}let B=Math.max(0,P-D),O=(D+P)/2;M.lane.x=I,M.lane.y=O,M.lane.width=S,M.lane.height=B,M.lane.swimlaneContentTop=M.contentTop,M.lane.groupTitleRect={left:N,right:N+l,top:D,bottom:P}}return t==="RL"&&nB(e,"x"),!0}var dye=F(()=>{"use strict";o(lye,"buildNodeMap");o(Pct,"resolveTopLevelGroupId");o(oye,"groupDepth");o(cye,"boundsForChildren");o(Oct,"applyGroupBounds");o(Bct,"recomputeNestedGroupBounds");o(nB,"mirrorAxis");o(uye,"applyBtDirectionTransform");o(hye,"applyLrDirectionTransform")});function fye(e,t){let{nodeInfoById:r,realNodeRects:n}=b1(t);for(let i of e){if(i.isLayoutOnly)continue;let a=i.points;if(!a||a.length<4)continue;let s=u5(Jr(a,mc),mc);if(!s)continue;let{p3:l}=s,u=s.kind==="HVH",h=m5(i,r,mc);if(!h)continue;let{srcId:d,dstId:f,srcInfo:p,dstInfo:m,collinearX:g,collinearY:y}=h;if(g||y)continue;let v,x=p.rect;for(let b of Fct){let T,k,C;if(u){let I=m.cy>p.cy?x.bottom:x.top,_=p.cx+b;if(_<=x.left+mc||_>=x.right-mc)continue;T={x:_,y:I},k={x:_,y:l.y},C={x:l.x,y:l.y}}else{let I=m.cx>p.cx?x.right:x.left,_=p.cy+b;if(_<=x.top+mc||_>=x.bottom-mc)continue;T={x:I,y:_},k={x:l.x,y:_},C={x:l.x,y:l.y}}let w=uo(T,k,mc),S=uo(k,C,mc);if(w&&S||!w&&Xn(T,k,n,[d],1)||!S&&Xn(k,C,n,[f],1))continue;let R=!w&&xT(T,k,e,i,{epsilon:mc,skipDegenerateOther:!0}),L=!S&&xT(k,C,e,i,{epsilon:mc,skipDegenerateOther:!0});if(!(R||L)){w?v=[k,C]:S?v=[T,k]:v=[T,k,C];break}}v&&(i.points=v)}}var mc,$ct,y5,Fct,pye=F(()=>{"use strict";pc();mc=1e-6,$ct=8,y5=$ct,Fct=[0,y5,-y5,2*y5,-2*y5];o(fye,"portSwapToLShape")});function mye(e,t){let{realNodeRects:a,labelNodeRects:s}=gu(t.values());for(let l of e){if(l.isLayoutOnly)continue;let u=l.points;if(!u||u.length<4)continue;let h=Jr(u,.001);if(h.length<4)continue;let d=h.length-1,f=h[d],p=h[d-1],m=h[d-2],g=f.x-p.x,y=f.y-p.y,v=Math.hypot(g,y);if(v>=10||v<.001)continue;let x=p.x-m.x,b=p.y-m.y;if(Math.hypot(x,b)<.001)continue;let k=bi(p,f,.001),C=Ti(p,f,.001),w=bi(m,p,.001),S=Ti(m,p,.001);if(!(k&&S||C&&w))continue;let R=l.end,L=l.start,N=R?t.get(R):void 0;if(!N)continue;let I=N.x??0,_=N.y??0,A=Sa(N);if(!A)continue;let M,D;if(S){let z=b<0;M={x:I,y:m.y},D={x:I,y:z?A.bottom:A.top}}else{let z=x>0;M={x:m.x,y:_},D={x:z?A.right:A.left,y:_}}if(Xn(M,D,a,R?[R]:[],-2)||Xn(M,D,s,[],-2))continue;if(L){let z=t.get(L),W=z?Sa(z):void 0;if(W&&h5(M,W,2))continue}let P=o((z,W)=>`${z.x.toFixed(3)},${z.y.toFixed(3)}|${W.x.toFixed(3)},${W.y.toFixed(3)}`,"ownSegmentKey"),B=new Set;for(let z=0;z<h.length-1;z++)B.add(P(h[z],h[z+1]));let O=o((z,W)=>{for(let H of e){if(H===l||H.isLayoutOnly)continue;let j=H.points;if(!(!j||j.length<2))for(let Q=0;Q<j.length-1;Q++){let U=j[Q],oe=j[Q+1];if(!B.has(P(U,oe))&&fc(z,W,U,oe,.001))return!0}}return!1},"segmentCrossesOtherEdge");if(O(M,D))continue;if(d-3>=0){let z=h[d-3],W=[L,R].filter(H=>!!H);if(Xn(z,M,a,W,-2)||O(z,M))continue}let V=[...h.slice(0,d-2),M,D];l.points=V;let G=l.labelNodeId;if(G){let z=t.get(G);if(z){let W=z.width??0,H=z.height??0;if(W>0&&H>0){let j,Q,U=-1;for(let oe=0;oe<V.length-1;oe++){let te=V[oe],le=V[oe+1],ie=Math.hypot(le.x-te.x,le.y-te.y),ae=tn(te,le,.001),Re=Qr(te,le,.001);(ae&&ie>=W+2||Re&&ie>=H+2)&&ie>U&&(U=ie,j=(te.x+le.x)/2,Q=(te.y+le.y)/2)}j!==void 0&&Q!==void 0&&(z.x=j,z.y=Q)}}}}}var gye=F(()=>{"use strict";pc();o(mye,"collapseShortTerminalStub")});function yye(e,t){let i=o((m,g)=>{let y=m.x??0,v=m.y??0,x=g.x-y,b=g.y-v,T=(m.width??0)/2,k=(m.height??0)/2;return Math.abs(b)*T>Math.abs(x)*k?(b<0&&(k=-k),{x:y+(b===0?0:k*x/b),y:v+k}):(x<0&&(T=-T),{x:y+T,y:v+(x===0?0:T*b/x)})},"rectIntersect"),a=o((m,g)=>{let y=Jr(m.points??[]);if(y.length<2)return;let v=g?m.start:m.end,x=v?t.get(v):void 0,b=x?Sa(x):void 0;if(!x||!v||!b)return;let T=g?y[0]:y[y.length-1],k=g?y[1]:y[y.length-2],C=i(x,T),w=T;if(iB(k,C)&&(w=k),Qr(C,w,rr))return{edge:m,edgeId:String(m.id??""),nodeId:v,atStart:g,orientation:"V",coord:C.x,min:Math.min(C.y,w.y),max:Math.max(C.y,w.y),boundary:C,railEnd:w,rect:b};if(tn(C,w,rr))return{edge:m,edgeId:String(m.id??""),nodeId:v,atStart:g,orientation:"H",coord:C.y,min:Math.min(C.x,w.x),max:Math.max(C.x,w.x),boundary:C,railEnd:w,rect:b}},"terminalLaneFor"),s=o((m,g)=>Math.max(0,Math.min(m.max,g.max)-Math.max(m.min,g.min)),"projectedOverlapLength"),l=o((m,g)=>m.nodeId!==g.nodeId||m.orientation!==g.orientation?!1:m.orientation==="H"?(Math.abs(m.boundary.x-m.rect.left)<1||Math.abs(m.boundary.x-m.rect.right)<1)&&Qr(m.boundary,g.boundary,1):(Math.abs(m.boundary.y-m.rect.top)<1||Math.abs(m.boundary.y-m.rect.bottom)<1)&&tn(m.boundary,g.boundary,1),"sameTerminalFace"),u=o((m,g)=>m.nodeId!==g.nodeId||m.orientation!==g.orientation?!1:s(m,g)>=Ea&&Math.abs(m.coord-g.coord)<.5,"exactTerminalLaneConflict"),h=o((m,g)=>{if(m.nodeId!==g.nodeId||m.orientation!==g.orientation||m.orientation!=="H"||m.atStart===g.atStart)return!1;let y=s(m,g);if(y<Ea)return!1;let v=m.rect.bottom-m.rect.top;return y<v||y>2*v?!1:l(m,g)&&Math.abs(m.coord-g.coord)<16},"nearTerminalLaneConflict"),d=o((m,g)=>{let y=Jr(m.edge.points??[]);if(y.length<2)return;let v=m.orientation==="V"?{x:m.boundary.x+g,y:m.boundary.y}:{x:m.boundary.x,y:m.boundary.y+g},x=m.orientation==="V"?{x:m.railEnd.x+g,y:m.railEnd.y}:{x:m.railEnd.x,y:m.railEnd.y+g};if(!o(()=>Math.abs(m.boundary.y-m.rect.top)<1||Math.abs(m.boundary.y-m.rect.bottom)<1?tn(v,m.boundary,rr)&&v.x>=m.rect.left+1&&v.x<=m.rect.right-1:Math.abs(m.boundary.x-m.rect.left)<1||Math.abs(m.boundary.x-m.rect.right)<1?Qr(v,m.boundary,rr)&&v.y>=m.rect.top+1&&v.y<=m.rect.bottom-1:!1,"boundaryStaysOnSameFace")())return;if(m.atStart){let w=y.length>1&&uo(y[1],m.railEnd,rr),S=y.slice(w?2:1),R=S[0];return R&&!iB(R,x)?void 0:[v,x,...S]}let T=y.length>1&&uo(y[y.length-2],m.railEnd,rr),k=y.slice(0,T?-2:-1),C=k[k.length-1];if(!(C&&!iB(C,x)))return[...k,x,v]},"shiftedCandidate"),f=o(m=>{let g=m.edge,y=Jr(g.points??[]);if(y.length!==2)return!1;let v=g.start,x=g.end,b=v?t.get(v):void 0,T=x?t.get(x):void 0;if(!b||!T)return!1;let k=b.x??0,C=b.y??0,w=T.x??0,S=T.y??0,[R,L]=y;return tn(R,L,rr)&&Math.abs(C-S)<1&&Math.abs(k-w)>1||Qr(R,L,rr)&&Math.abs(k-w)<1&&Math.abs(C-S)>1},"laneIsStraightCollinearConnector"),p=[-7,7,-14,14,-21,21];for(let m=0;m<8;m++){let g=e.filter(v=>!v.isLayoutOnly).flatMap(v=>[a(v,!0),a(v,!1)]).filter(v=>!!v),y=!1;for(let v=0;v<g.length&&!y;v++)for(let x=v+1;x<g.length&&!y;x++){let b=g[v],T=g[x];if(b.edge===T.edge||!(u(b,T)||h(b,T)))continue;let k=!u(b,T),C=[b,T].sort((w,S)=>{let R=f(w),L=f(S);return R!==L?Number(R)-Number(L):+!S.atStart-+!w.atStart});for(let w of C){for(let S of p){let R=d(w,S);if(!R)continue;let L=a({...w.edge,points:R},w.atStart);if(!(!L||g.some(N=>N.edge!==w.edge&&(u(L,N)||k&&h(L,N))))){w.edge.points=R,y=!0;break}}if(y)break}}if(!y)return}}function vye(e,t){let{realNodeRects:i,labelNodeRects:a}=gu(t.values()),s=o((u,h)=>{let d=u.start,f=u.end,p=jr(h);if(p.length!==h.length-1)return!1;let m=[d,f].filter(g=>!!g);for(let g of p)if(Xn(g.a,g.b,i,m,-2)||Xn(g.a,g.b,a,[],-2))return!1;for(let g of e){if(g===u||g.isLayoutOnly)continue;let y=g.points;if(!(!y||y.length<2)){for(let v of p)for(let x of jr(Jr(y)))if(dc(v,x,.5)>=Ea||fc(v.a,v.b,x.a,x.b,rr))return!1}}return!0},"candidateIsSafe"),l=o((u,h)=>{if(h+4>=u.length)return;let d=u[h],f=u[h+1],p=u[h+2],m=u[h+3],g=u[h+4],y=bi(d,f)&&Ti(f,p)&&bi(p,m)&&Ti(m,g)&&Qr(d,m,rr)&&Qr(d,g,rr)&&Qr(f,p,rr)&&(f.x-d.x)*(m.x-p.x)<0,v=Ti(d,f)&&bi(f,p)&&Ti(p,m)&&bi(m,g)&&tn(d,m,rr)&&tn(d,g,rr)&&tn(f,p,rr)&&(f.y-d.y)*(m.y-p.y)<0;if(y||v)return Jr([...u.slice(0,h+1),g,...u.slice(h+5)]);if(h+5>=u.length)return;let x=u[h+5],b=Ti(d,f)&&bi(f,p)&&Ti(p,m)&&bi(m,g)&&Ti(g,x)&&Qr(d,g,rr)&&Qr(d,x,rr)&&Qr(p,m,rr)&&(p.x-f.x)*(g.x-m.x)<0,T=bi(d,f)&&Ti(f,p)&&bi(p,m)&&Ti(m,g)&&bi(g,x)&&tn(d,g,rr)&&tn(d,x,rr)&&tn(p,m,rr)&&(p.y-f.y)*(g.y-m.y)<0;if(!(!b&&!T))return Jr([...u.slice(0,h+1),x,...u.slice(h+6)])},"withoutDogleg");for(let u=0;u<8;u++){let h=!1;for(let d of e){if(d.isLayoutOnly)continue;let f=Jr(d.points??[]);for(let p=0;p<=f.length-5;p++){let m=l(f,p);if(!(!m||!s(d,m))){d.points=m,h=!0;break}}if(h)break}if(!h)return}}function aB(e,t){let{realNodeRects:a,labelNodeRects:s}=gu(t.values()),l=e.filter(g=>!g.isLayoutOnly),u=o((g,y,v)=>Jr(g===y?v??[]:g.points??[]),"pointsFor"),h=o((g,y)=>{let v=0;for(let x=0;x<l.length;x++){let b=jr(u(l[x],g,y));for(let T=x+1;T<l.length;T++){let k=jr(u(l[T],g,y));for(let C of b)for(let w of k)fc(C.a,C.b,w.a,w.b,rr)&&v++}}return v},"strictCrossingCount"),d=o(g=>{let y=jr(g);if(y.length!==3)return;let v=y[1];if(!(y[0].horizontal===v.horizontal||y[2].horizontal===v.horizontal))return{index:v.index,horizontal:v.horizontal,vertical:v.vertical,segment:v}},"middleRail"),f=o((g,y)=>{let v=[g.start,g.end].filter(x=>!!x);return a.filter(x=>{if(v.includes(x.id))return!1;let b=x.rect;return y.horizontal?ls(y.a.x,y.b.x,b.left,b.right)>=Ea&&y.a.y>=b.top-2&&y.a.y<=b.bottom+2:ls(y.a.y,y.b.y,b.top,b.bottom)>=Ea&&y.a.x>=b.left-2&&y.a.x<=b.right+2})},"blockingRectsFor"),p=o((g,y,v)=>{let x=g.map(T=>({...T}));if(y.horizontal)x[y.index].y=v,x[y.index+1].y=v;else if(y.vertical)x[y.index].x=v,x[y.index+1].x=v;else return;let b=Tl(Jr(x));return jr(b).length===b.length-1?b:void 0},"candidateByMovingRail"),m=o((g,y,v)=>{let x=[g.start,g.end].filter(T=>!!T),b=jr(y);if(b.length!==y.length-1)return!1;for(let T of b)if(Xn(T.a,T.b,a,x,-2)||Xn(T.a,T.b,s,[],-2))return!1;for(let T of l)if(T!==g){for(let k of b)for(let C of jr(u(T)))if(dc(k,C,.5)>=Ea)return!1}return h(g,y)<=v},"candidateIsSafe");for(let g=0;g<8;g++){let y=h(),v=!1;for(let x of l){let b=u(x),T=d(b);if(!T)continue;let k=f(x,T.segment);if(k.length===0)continue;let C=T.horizontal?[Math.min(...k.map(w=>w.rect.top))-20,Math.max(...k.map(w=>w.rect.bottom))+20]:[Math.min(...k.map(w=>w.rect.left))-20,Math.max(...k.map(w=>w.rect.right))+20];for(let w of C){let S=p(b,T.segment,w);if(!(!S||!m(x,S,y))){x.points=S,v=!0;break}}if(v)break}if(!v)return}}function sB(e,t){let n=o(u=>{let h=u.groupTitleRect;if(!(!h||typeof h.left!="number"||typeof h.right!="number"||typeof h.top!="number"||typeof h.bottom!="number"||!Number.isFinite(h.left)||!Number.isFinite(h.right)||!Number.isFinite(h.top)||!Number.isFinite(h.bottom)||h.right<=h.left||h.bottom<=h.top))return{left:h.left,right:h.right,top:h.top,bottom:h.bottom}},"validTitleRect"),i=o(u=>{if(!u.isGroup||u.parentId)return;let h=u.direction,d=typeof h=="string"?h.toUpperCase():"";if(d==="LR"||d==="RL"||d==="BT")return;let f=n(u),p=u.y,m=u.height;if(!f||typeof p!="number"||typeof m!="number"||!Number.isFinite(p)||!Number.isFinite(m)||m<=0)return;let g=f.right-f.left,y=f.bottom-f.top;if(!(y<=0||g<y))return{node:u,rect:f}},"topLaneTitleFor"),a=o((u,h)=>{if(!u.horizontal)return!1;let d=u.a.y;return d<=h.top+rr||d>=h.bottom-rr?!1:ls(u.a.x,u.b.x,h.left,h.right)>=Ea},"horizontalSegmentIntersectsTitle"),s=[...t.values()].map(i).filter(u=>!!u);if(s.length===0)return;let l=0;for(let u of e){if(u.isLayoutOnly)continue;let h=Jr(u.points??[]);for(let d of jr(h))for(let f of s)a(d,f.rect)&&(l=Math.max(l,f.rect.bottom-d.a.y+4))}if(!(l<=rr))for(let u of s){let h=u.node.y,d=u.node.height;typeof h!="number"||typeof d!="number"||!Number.isFinite(h)||!Number.isFinite(d)||d<=0||(u.node.y=h-l/2,u.node.height=d+l,u.node.groupTitleRect={...u.rect,top:u.rect.top-l,bottom:u.rect.bottom-l})}}function oB(e,t){let n=o(h=>{let d=h.groupTitleRect;if(!(!d||typeof d.left!="number"||typeof d.right!="number"||typeof d.top!="number"||typeof d.bottom!="number"||!Number.isFinite(d.left)||!Number.isFinite(d.right)||!Number.isFinite(d.top)||!Number.isFinite(d.bottom)||d.right<=d.left||d.bottom<=d.top))return{left:d.left,right:d.right,top:d.top,bottom:d.bottom}},"validTitleRect"),i=o(h=>{if(!h.isGroup||h.parentId||h.direction!=="LR")return;let f=n(h),p=h.x,m=h.width;if(!f||typeof p!="number"||typeof m!="number"||!Number.isFinite(p)||!Number.isFinite(m)||m<=0)return;let g=f.right-f.left,y=f.bottom-f.top;if(!(g<=0||y<g))return{node:h,rect:f}},"leftLaneTitleFor"),a=o((h,d)=>{if(!h.vertical)return!1;let f=h.a.x;return f<=d.left+rr||f>=d.right-rr?!1:ls(h.a.y,h.b.y,d.top,d.bottom)>=Ea},"verticalSegmentIntersectsTitle"),s=o((h,d)=>{if(!h.horizontal)return!1;let f=h.a.y;return f<=d.top+rr||f>=d.bottom-rr?!1:ls(h.a.x,h.b.x,d.left,d.right)>=Ea},"horizontalSegmentIntersectsTitle"),l=[...t.values()].map(i).filter(h=>!!h);if(l.length===0)return;let u=0;for(let h of e){if(h.isLayoutOnly)continue;let d=Jr(h.points??[]);for(let f of jr(d))for(let p of l)if(a(f,p.rect))u=Math.max(u,p.rect.right-f.a.x+4);else if(s(f,p.rect)){let m=Math.min(f.a.x,f.b.x);u=Math.max(u,p.rect.right-m+4)}}if(!(u<=rr))for(let h of l){let d=h.node.x,f=h.node.width;typeof d!="number"||typeof f!="number"||!Number.isFinite(d)||!Number.isFinite(f)||f<=0||(h.node.x=d-u/2,h.node.width=f+u,h.node.groupTitleRect={...h.rect,left:h.rect.left-u,right:h.rect.right-u})}}function xye(e,t){let{realNodeRects:i}=gu(t.values()),a=e.filter(y=>!y.isLayoutOnly),s=o((y,v=new Map)=>Jr(v.get(y)??y.points??[]),"replacementPointsFor"),l=o((y=new Map)=>{let v=0;for(let x=0;x<a.length;x++){let b=jr(s(a[x],y));for(let T=x+1;T<a.length;T++){let k=jr(s(a[T],y));for(let C of b)for(let w of k)fc(C.a,C.b,w.a,w.b,rr)&&v++}}return v},"crossingCount"),u=o((y=new Map)=>a.reduce((v,x)=>v+ho(s(x,y)),0),"totalBends"),h=o(y=>{let v=s(y);if(v.length<4)return;let x=v[v.length-2],b=v[v.length-1];if(!(!bi(x,b,rr)&&!Ti(x,b,rr)))return{tailStart:x,terminal:b}},"terminalTailFor"),d=o((y,v)=>{let x=s(y);if(x.length<3)return;let b=x[0],T=x[1],k;if(bi(b,T,rr))k={x:T.x,y:v.tailStart.y};else if(Ti(b,T,rr))k={x:v.tailStart.x,y:T.y};else return;let C=Tl(Jr([b,T,k,v.tailStart,v.terminal]));return jr(C).length===C.length-1?C:void 0},"candidateWithDestinationTail"),f=o((y,v)=>{let x=[y.start,y.end].filter(b=>!!b);for(let b of jr(v))if(Xn(b.a,b.b,i,x,-2))return!0;return!1},"pathHasNodeHit"),p=o((y,v,x)=>{for(let b of a)if(b!==y){for(let T of jr(v))for(let k of jr(s(b,x)))if(dc(T,k,.5)>=Ea)return!0}return!1},"pathHasSharedTrack"),m=o((y,v,x)=>!f(y,v)&&!p(y,v,x),"candidateIsSafe"),g=o(()=>{let y=new Map;for(let v of a){let x=v.end;if(!x||!t.has(x)||s(v).length<4)continue;let T=y.get(x)??[];T.push(v),y.set(x,T)}return y},"edgesByDestination");for(let y=0;y<4;y++){let v=l();if(v===0)return;let x=u(),b,T=v,k=x;for(let C of g().values())for(let w=0;w<C.length;w++)for(let S=w+1;S<C.length;S++){let R=C[w],L=C[S],N=h(R),I=h(L);if(!N||!I)continue;let _=d(R,I),A=d(L,N);if(!_||!A)continue;let M=new Map([[R,_],[L,A]]);if(!m(R,_,M)||!m(L,A,M))continue;let D=l(M),P=u(M);D>=v||D>T||D===T&&P>=k||(b=M,T=D,k=P)}if(!b)return;for(let[C,w]of b)C.points=w}}function bye(e,t){let{realNodeRects:s,labelNodeRects:l}=gu(t.values()),u=e.filter(C=>!C.isLayoutOnly),h=o((C,w=new Map)=>Jr(w.get(C)??C.points??[]),"replacementPointsFor"),d=o((C=new Map)=>{let w=0;for(let S=0;S<u.length;S++){let R=jr(h(u[S],C));for(let L=S+1;L<u.length;L++){let N=jr(h(u[L],C));for(let I of R)for(let _ of N)fc(I.a,I.b,_.a,_.b,rr)&&w++}}return w},"strictCrossingCount"),f=o((C=new Map)=>u.reduce((w,S)=>w+ho(h(S,C)),0),"totalBends"),p=o(C=>{let w=C.start,S=C.end,R=w?t.get(w):void 0,L=S?t.get(S):void 0,N=R?Sa(R):void 0,I=L?Sa(L):void 0;return N&&I?{src:N,dst:I}:void 0},"endpointRectsFor"),m=o((C,w,S)=>{if(S.index<=0||S.index+1>=w.length-1)return;let R=p(C);if(R){if(S.vertical){let L=S.a.x,N=Math.min(R.src.left,R.dst.left),I=Math.max(R.src.right,R.dst.right),_=L<N-rr?"left":L>I+rr?"right":void 0;return _?{edge:C,points:w,segmentIndex:S.index,axis:"vertical",side:_,coord:L,min:Math.min(S.a.y,S.b.y),max:Math.max(S.a.y,S.b.y)}:void 0}if(S.horizontal){let L=S.a.y,N=Math.min(R.src.top,R.dst.top),I=Math.max(R.src.bottom,R.dst.bottom),_=L<N-rr?"top":L>I+rr?"bottom":void 0;return _?{edge:C,points:w,segmentIndex:S.index,axis:"horizontal",side:_,coord:L,min:Math.min(S.a.x,S.b.x),max:Math.max(S.a.x,S.b.x)}:void 0}}},"externalRailForSegment"),g=o(()=>{let C=[];for(let w of u){let S=h(w);for(let R of jr(S)){let L=m(w,S,R);L&&C.push(L)}}return C},"collectExternalRails"),y=o((C,w)=>C.edge!==w.edge&&C.axis===w.axis&&C.side===w.side&&ls(C.min,C.max,w.min,w.max)>=Ea,"railsInteract"),v=o(C=>{let w=[],S=new Set;for(let R of C){if(S.has(R))continue;let L=[R],N=[];for(S.add(R);L.length>0;){let I=L.pop();N.push(I);for(let _ of C)!S.has(_)&&y(I,_)&&(S.add(_),L.push(_))}N.length>1&&w.push(N)}return w},"connectedComponents"),x=o(C=>{let w=[];for(let S of C)w.some(R=>Math.abs(R-S.coord)<rr)||w.push(S.coord);for(;w.length<C.length;){let S=Math.min(...w),R=Math.max(...w),L=C[0].side;w.push(L==="left"||L==="top"?S-12*(C.length-w.length):R+12*(C.length-w.length))}return w},"uniqueCoordsFor"),b=o(C=>{let w=C.map(L=>L.coord),S=x(C),R=[];if(C.length<=6){let L=new Array(S.length).fill(!1),N=[],I=o(()=>{if(N.length===C.length){N.some((_,A)=>Math.abs(_-w[A])>=rr)&&R.push([...N]);return}for(let[_,A]of S.entries())L[_]||(L[_]=!0,N.push(A),I(),N.pop(),L[_]=!1)},"visit");return I(),R}for(let L=0;L<w.length;L++)for(let N=L+1;N<w.length;N++){let I=[...w];[I[L],I[N]]=[I[N],I[L]],R.push(I)}return R},"coordinateAssignmentsFor"),T=o((C,w)=>{let S=new Map;for(let[L,N]of C.entries()){let I=w[L],_=S.get(N.edge)??N.points.map(A=>({x:A.x,y:A.y}));N.axis==="vertical"?(_[N.segmentIndex].x=I,_[N.segmentIndex+1].x=I):(_[N.segmentIndex].y=I,_[N.segmentIndex+1].y=I),S.set(N.edge,_)}let R=new Map;for(let[L,N]of S){let I=Tl(Jr(N));if(jr(I).length!==I.length-1)return;R.set(L,I)}return R},"replacementsForAssignment"),k=o(C=>{for(let[w,S]of C){let R=[w.start,w.end].filter(L=>!!L);for(let L of jr(S))if(Xn(L.a,L.b,s,R,-2)||Xn(L.a,L.b,l,[],-2))return!1}for(let w=0;w<u.length;w++){let S=u[w],R=C.has(S),L=jr(h(S,C));for(let N=w+1;N<u.length;N++){let I=u[N];if(!R&&!C.has(I))continue;let _=jr(h(I,C));for(let A of L)for(let M of _)if(dc(A,M,.5)>=Ea)return!1}}return!0},"candidateIsSafe");for(let C=0;C<4;C++){let w=d();if(w===0)return;let S,R=w,L=f(),N=Number.POSITIVE_INFINITY;for(let I of v(g()))for(let _ of b(I)){let A=T(I,_);if(!A||!k(A))continue;let M=d(A);if(M>=w)continue;let D=f(A),P=I.reduce((B,O,$)=>B+Math.abs(_[$]-O.coord),0);M>R||M===R&&(D>L||D===L&&P>=N)||(S=A,R=M,L=D,N=P)}if(!S)return;for(let[I,_]of S)I.points=_}}function Tye(e,t){let{realNodeRects:i,labelNodeRects:a}=gu(t.values()),s=e.filter(g=>!g.isLayoutOnly),l=o((g,y,v)=>Jr(g===y?v??[]:g.points??[]),"pointsFor"),u=o(g=>jr(g).reduce((y,v)=>{let x=v.a.x-v.b.x,b=v.a.y-v.b.y;return y+Math.hypot(x,b)},0),"pathLength"),h=o((g,y)=>{let v=0;for(let x=0;x<s.length;x++){let b=jr(l(s[x],g,y));for(let T=x+1;T<s.length;T++){let k=jr(l(s[T],g,y));for(let C of b)for(let w of k)fc(C.a,C.b,w.a,w.b,rr)&&v++}}return v},"strictCrossingCount"),d=o((g,y)=>{if(g.horizontal){let v=g.a.y;return(Math.abs(v-y.top)<1||Math.abs(v-y.bottom)<1)&&ls(g.a.x,g.b.x,y.left,y.right)>=Ea}if(g.vertical){let v=g.a.x;return(Math.abs(v-y.left)<1||Math.abs(v-y.right)<1)&&ls(g.a.y,g.b.y,y.top,y.bottom)>=Ea}return!1},"segmentRunsAlongRectBorder"),f=o(g=>{let y=[g.start,g.end].filter(x=>!!x),v=[];for(let x of y){let b=t.get(x),T=b?Sa(b):void 0;T&&v.push(T)}return v},"endpointRectsFor"),p=o((g,y)=>{if(y+3>=g.length)return[];let v=g[y],x=g[y+1],b=g[y+2],T=g[y+3],k=bi(v,x,rr)&&Ti(x,b,rr)&&bi(b,T,rr),C=Ti(v,x,rr)&&bi(x,b,rr)&&Ti(b,T,rr);if(!k&&!C)return[];if(!(k?Math.sign(x.x-v.x)!==Math.sign(T.x-b.x):Math.sign(x.y-v.y)!==Math.sign(T.y-b.y)))return[];let S=Qr(v,T,rr)||tn(v,T,rr)?[]:[{x:v.x,y:T.y},{x:T.x,y:v.y}],R=S.length===0?[[...g.slice(0,y+1),...g.slice(y+3)]]:S.map(N=>[...g.slice(0,y+1),N,...g.slice(y+3)]),L=new Set;return R.map(N=>Tl(Jr(N))).filter(N=>{if(jr(N).length!==N.length-1||!N.some(_=>uo(_,T,rr)))return!1;let I=N.map(_=>`${_.x.toFixed(3)},${_.y.toFixed(3)}`).join("|");return L.has(I)?!1:(L.add(I),!0)})},"shortcutCandidatesAt"),m=o((g,y,v)=>{let x=[g.start,g.end].filter(T=>!!T),b=f(g);for(let T of jr(y))if(Xn(T.a,T.b,i,x,-2)||Xn(T.a,T.b,a,[],-2)||b.some(k=>d(T,k)))return!1;for(let T of s)if(T!==g){for(let k of jr(y))for(let C of jr(l(T)))if(dc(k,C,.5)>=Ea)return!1}return h(g,y)<=v},"candidateIsSafe");for(let g=0;g<8;g++){let y=h(),v,x,b=y,T=Number.POSITIVE_INFINITY,k=Number.POSITIVE_INFINITY;for(let C of s){let w=l(C),S=ho(w,rr),R=u(w);for(let L=0;L<=w.length-4;L++)for(let N of p(w,L)){let I=ho(N,rr),_=u(N);if(!(I<S||I===S&&_<R-rr)||!m(C,N,y))continue;let M=h(C,N);M>b||M===b&&(I>T||I===T&&_>=k)||(v=C,x=N,b=M,T=I,k=_)}}if(!v||!x)return;v.points=x}}function Cye(e,t){let s=[];for(let ue of t.values()){if(ue.isGroup||ue.isEdgeLabel)continue;let ye=ue.x??0,ke=ue.y??0,ce=Sa(ue);ce&&s.push({id:String(ue.id??""),cx:ye,cy:ke,rect:ce})}if(s.length===0)return;let l=new Map(s.map(ue=>[ue.id,ue])),u=s.map(ue=>({id:ue.id,rect:ue.rect})),h=["top","bottom","left","right"],d={top:Math.min(...s.map(ue=>ue.rect.top))-20,bottom:Math.max(...s.map(ue=>ue.rect.bottom))+20,left:Math.min(...s.map(ue=>ue.rect.left))-20,right:Math.max(...s.map(ue=>ue.rect.right))+20},f=e.filter(ue=>!ue.isLayoutOnly),p=new Map(f.map((ue,ye)=>[ue,ye])),m=o(ue=>{let ye=ue==="left"||ue==="top"?-1:1,ke=[];for(let ce=0;ce<=2;ce++)ke.push(d[ue]+ye*20*ce);return ke},"outwardTracksForSide"),g=o((ue,ye=new Map)=>Jr(ye.get(ue)??ue.points??[]),"replacementPointsFor"),y=o((ue,ye)=>{let ke=0;for(let ce of ue)for(let re of ye)fc(ce.a,ce.b,re.a,re.b,rr)&&ke++;return ke},"crossingCountBetweenSegments"),v=o((ue,ye)=>y(jr(ue),jr(ye)),"crossingCountBetweenPaths"),x=o((ue=new Map)=>{let ye=0,ke=[],ce=new Set,re=[],J=o(se=>{ce.has(se)||(ce.add(se),re.push(se))},"addEdge");for(let se=0;se<f.length;se++){let ge=f[se],Te=g(ge,ue);for(let we=se+1;we<f.length;we++){let Me=f[we],ve=v(Te,g(Me,ue));ve>0&&(ye+=ve,ke.push({first:ge,second:Me,count:ve}),J(ge),J(Me))}}return re.sort((se,ge)=>(p.get(se)??0)-(p.get(ge)??0)),{count:ye,pairs:ke,edgeSet:ce,edges:re}},"crossingSnapshot"),b=o((ue,ye)=>{let ke=new Set(ye.keys());if(ke.size===0)return ue.count;let ce=0;for(let J of ue.pairs)(ke.has(J.first)||ke.has(J.second))&&(ce+=J.count);let re=0;for(let J=0;J<f.length;J++){let se=f[J],ge=ke.has(se),Te=g(se,ye);for(let we=J+1;we<f.length;we++){let Me=f[we];!ge&&!ke.has(Me)||(re+=v(Te,g(Me,ye)))}}return ue.count-ce+re},"crossingCountWithReplacements"),T=o(ue=>{let ye=new Map;for(let re of ue.pairs){let J=ye.get(re.first)??new Set;J.add(re.second),ye.set(re.first,J);let se=ye.get(re.second)??new Set;se.add(re.first),ye.set(re.second,se)}let ke=[],ce=new Set;for(let re of ue.edges){if(ce.has(re))continue;let J=[re],se=[];for(ce.add(re);J.length>0;){let ge=J.pop();se.push(ge);for(let Te of ye.get(ge)??[])ce.has(Te)||(ce.add(Te),J.push(Te))}se.sort((ge,Te)=>(p.get(ge)??0)-(p.get(Te)??0)),se.length>1&&ke.push(se)}return ke},"crossingComponents"),k=o(ue=>[ue.start,ue.end].filter(ye=>!!ye),"endpointIdsFor"),C=o(ue=>{let ye=[];for(let ke of T(ue)){let ce=new Set(ke),re=new Set(ke.flatMap(se=>k(se))),J=[...ke];for(let se of f)ce.has(se)||k(se).some(ge=>re.has(ge))&&J.push(se);J.sort((se,ge)=>(p.get(se)??0)-(p.get(ge)??0)),ye.push(J)}return ye},"pairSearchGroups"),w=o((ue,ye,ke)=>b(ue,new Map([[ye,ke]])),"crossingCountWithSingleReplacement"),S=o(ue=>{let ye=new Map;for(let ke of ue.pairs)ye.set(ke.first,(ye.get(ke.first)??0)+ke.count),ye.set(ke.second,(ye.get(ke.second)??0)+ke.count);return ye},"currentCrossingsByEdge"),R=o(ue=>ue.slice(1).reduce((ye,ke,ce)=>{let re=ue[ce];return ye+Math.abs(ke.x-re.x)+Math.abs(ke.y-re.y)},0),"pathLength"),L=o((ue=new Map)=>f.reduce((ye,ke)=>ye+ho(g(ke,ue)),0),"totalBends"),N=o((ue=new Map)=>f.reduce((ye,ke)=>ye+R(g(ke,ue)),0),"totalLength"),I=o((ue,ye,ke=new Map)=>{let ce=jr(ye);for(let re of f)if(re!==ue){for(let J of ce)for(let se of jr(g(re,ke)))if(dc(J,se,.5)>=Ea)return!0}return!1},"pathHasSegmentConflict"),_=o((ue,ye)=>{let ke=[ue.start,ue.end].filter(ce=>!!ce);for(let ce of jr(ye))if(Xn(ce.a,ce.b,u,ke,-2))return!0;return!1},"pathHitsNode"),A=o((ue,ye)=>{let ke=Tl(Jr(ye));jr(ke).length===ke.length-1&&ue.push(ke)},"pushOrthogonalCandidate"),M=o(ue=>ue==="left"||ue==="right","sideIsHorizontal"),D=o((ue,ye,ke)=>{switch(ye){case"left":return Math.min(ue.x,ke.x)-20;case"right":return Math.max(ue.x,ke.x)+20;case"top":return Math.min(ue.y,ke.y)-20;case"bottom":return Math.max(ue.y,ke.y)+20}},"localTrackForSameSide"),P=o((ue,ye,ke,ce)=>{let re=ke==="left"||ke==="top"?-1:1,J=[D(ye,ke,ce),d[ke]];for(let se of J)for(let ge=0;ge<=2;ge++)A(ue,p5(ye,ke,ce,se+re*20*ge))},"addSameSideCandidates"),B=o((ue,ye,ke,ce,re)=>{for(let J of m(ke))for(let se of m(re))A(ue,[ye,{x:J,y:ye.y},{x:J,y:se},{x:ce.x,y:se},ce])},"addHorizontalToVerticalCandidates"),O=o((ue,ye,ke,ce,re)=>{for(let J of m(ke))for(let se of m(re))A(ue,[ye,{x:ye.x,y:J},{x:se,y:J},{x:se,y:ce.y},ce])},"addVerticalToHorizontalCandidates"),$=o((ue,ye,ke,ce,re)=>{let J=[...m("top"),...m("bottom")];for(let se of m(ke))for(let ge of m(re))for(let Te of J)A(ue,[ye,{x:se,y:ye.y},{x:se,y:Te},{x:ge,y:Te},{x:ge,y:ce.y},ce])},"addHorizontalPairCandidates"),V=o((ue,ye,ke,ce,re)=>{let J=[...m("left"),...m("right")];for(let se of m(ke))for(let ge of m(re))for(let Te of J)A(ue,[ye,{x:ye.x,y:se},{x:Te,y:se},{x:Te,y:ge},{x:ce.x,y:ge},ce])},"addVerticalPairCandidates"),G=o(ue=>{let ye=new Set;return ue.map(ke=>Jr(ke)).filter(ke=>{let ce=ke.map(re=>`${re.x.toFixed(3)},${re.y.toFixed(3)}`).join("|");return ye.has(ce)||ke.length<2?!1:(ye.add(ce),!0)})},"dedupeCandidatePaths"),z=o((ue,ye,ke,ce)=>{let re=[],J=f5(ue,ye,ke,ce,20,rr);J&&A(re,J),ye===ce&&P(re,ue,ye,ke);let se=M(ye),ge=M(ce);return se&&!ge?B(re,ue,ye,ke,ce):!se&&ge?O(re,ue,ye,ke,ce):se?$(re,ue,ye,ke,ce):V(re,ue,ye,ke,ce),G(re)},"buildCandidatesForSides"),W=o((ue,ye,ke,ce)=>{let re=[...m("left"),...m("right")],J=[...m("top"),...m("bottom")];for(let se of h){let ge=Lf(ce,se),Te=se==="top"||se==="bottom"?m(se):J;for(let we of re){A(ue,[ye,ke,{x:we,y:ke.y},{x:we,y:ge.y},ge]);for(let Me of Te)A(ue,[ye,ke,{x:we,y:ke.y},{x:we,y:Me},{x:ge.x,y:Me},ge])}}},"addVerticalDepartureOuterTrackCandidates"),H=o((ue,ye,ke,ce)=>{let re=[...m("left"),...m("right")],J=[...m("top"),...m("bottom")];for(let se of h){let ge=Lf(ce,se),Te=se==="left"||se==="right"?m(se):re;for(let we of J){A(ue,[ye,ke,{x:ke.x,y:we},{x:ge.x,y:we},ge]);for(let Me of Te)A(ue,[ye,ke,{x:ke.x,y:we},{x:Me,y:we},{x:Me,y:ge.y},ge])}}},"addHorizontalDepartureOuterTrackCandidates"),j=o(ue=>{let ye=ue.start,ke=ue.end,ce=ke?l.get(ke):void 0;if(!ye||!ce)return[];let re=Jr(ue.points??[]);if(re.length<4)return[];let J=re[0],se=re[1],ge=[];return Ti(J,se,rr)?W(ge,J,se,ce):bi(J,se,rr)&&H(ge,J,se,ce),ge},"terminalPreservingOuterTrackCandidates"),Q=o(ue=>{let ye=ue.start,ke=ue.end,ce=ye?l.get(ye):void 0,re=ke?l.get(ke):void 0;if(!ce||!re)return[];let J=[];for(let se of h){let ge=Lf(ce,se);for(let Te of h)J.push(...z(ge,se,Lf(re,Te),Te))}return J.push(...j(ue)),J},"candidatePathsFor"),U=o(()=>new Map(f.map(ue=>[ue,jr(g(ue))])),"currentSegmentsByEdge"),oe=o((ue,ye,ke)=>{let ce=new Set;for(let re of f){if(re===ue)continue;let J=ke.get(re)??jr(g(re));ye.some(se=>J.some(ge=>dc(se,ge,.5)>=Ea))&&ce.add(re)}return ce},"sharedTrackConflictsFor"),te=o((ue,ye,ke,ce)=>{let re=new Set;return Q(ue).map(se=>Tl(Jr(se))).filter(se=>{if(_(ue,se))return!1;let ge=se.map(Te=>`${Te.x.toFixed(3)},${Te.y.toFixed(3)}`).join("|");return re.has(ge)||se.length<2?!1:(re.add(ge),!0)}).map(se=>{let ge=jr(se),Te=0;for(let we of f)we!==ue&&(Te+=y(ge,ke.get(we)??jr(g(we))));return{candidate:se,candidateSegments:ge,crossings:ye.count-(ce.get(ue)??0)+Te,bends:ho(se,rr),totalBends:ho(se),length:R(se)}}).filter(({crossings:se})=>se<=ye.count).sort((se,ge)=>se.crossings-ge.crossings||se.bends-ge.bends||se.length-ge.length).slice(0,48).map(se=>({path:se.candidate,segments:se.candidateSegments,sharedTrackConflicts:oe(ue,se.candidateSegments,ke),totalBends:se.totalBends,length:se.length}))},"pairCandidatesFor"),le=o((ue,ye,ke,ce,re,J)=>{let se=0;for(let Te of ue.pairs)(Te.first===ye||Te.second===ye||Te.first===ce||Te.second===ce)&&(se+=Te.count);let ge=y(ke.segments,re.segments);for(let Te of f){if(Te===ye||Te===ce)continue;let we=J.get(Te)??jr(g(Te));ge+=y(ke.segments,we)+y(re.segments,we)}return ue.count-se+ge},"pairCrossingCount"),ie=o((ue,ye)=>{for(let ke of ue.sharedTrackConflicts)if(ke!==ye)return!1;return!0},"conflictsOnlyWith"),ae=o((ue,ye)=>ue.segments.some(ke=>ye.segments.some(ce=>dc(ke,ce,.5)>=Ea)),"candidatesShareTrack"),Re=o((ue,ye,ke,ce)=>ie(ye,ke.edge)&&ie(ce,ue.edge)&&!ae(ye,ce),"pairCandidatesAreCompatible"),be=o((ue,ye,ke,ce,re)=>{let J=le(ue.current,ye.edge,ke,ce.edge,re,ue.baseSegments);if(!(J>=ue.current.count))return{replacements:new Map([[ye.edge,ke.path],[ce.edge,re.path]]),crossings:J,bends:ue.currentBends-(ue.baseBendsByEdge.get(ye.edge)??0)-(ue.baseBendsByEdge.get(ce.edge)??0)+ke.totalBends+re.totalBends,length:ue.currentLength-(ue.baseLengthByEdge.get(ye.edge)??0)-(ue.baseLengthByEdge.get(ce.edge)??0)+ke.length+re.length}},"scorePairReplacement"),Pe=o((ue,ye)=>ue.crossings<ye.crossings||ue.crossings===ye.crossings&&(ue.bends<ye.bends||ue.bends===ye.bends&&ue.length<ye.length),"pairScoreIsBetter"),Ge=o((ue,ye,ke,ce)=>{let re=ce;for(let J of ye.candidates)for(let se of ke.candidates){if(!Re(ye,J,ke,se))continue;let ge=be(ue,ye,J,ke,se);ge&&Pe(ge,re)&&(re=ge)}return re},"bestScoreForOptionPair"),Oe=o(ue=>{let ye=L(),ke=N(),ce=U(),re=S(ue),J=new Map(f.map(ve=>[ve,ho(g(ve))])),se=new Map(f.map(ve=>[ve,R(g(ve))])),ge=new Map,Te=C(ue);for(let ve of Te)for(let ne of ve){if(ge.has(ne))continue;let q=te(ne,ue,ce,re);q.length>0&&ge.set(ne,{edge:ne,candidates:q})}let we={replacements:new Map,crossings:ue.count,bends:ye,length:ke},Me={current:ue,currentBends:ye,currentLength:ke,baseBendsByEdge:J,baseLengthByEdge:se,baseSegments:ce};for(let ve of Te){let ne=new Set(ve.filter(he=>ue.edgeSet.has(he))),q=ve.map(he=>ge.get(he)).filter(he=>!!he);for(let he=0;he<q.length;he++){let X=q[he];for(let fe=he+1;fe<q.length;fe++){let K=q[fe];!ne.has(X.edge)&&!ne.has(K.edge)||(we=Ge(Me,X,K,we))}}}return we.replacements.size>0?we.replacements:void 0},"bestPairedReplacement");for(let ue=0;ue<4;ue++){let ye=x(),ke=ye.count;if(ke===0)return;let ce,re,J=ke,se=Number.POSITIVE_INFINITY;for(let Te of ye.edges){let we=ho(g(Te),rr);for(let Me of Q(Te)){let ve=_(Te,Me),ne=!ve&&I(Te,Me),q=w(ye,Te,Me),he=ho(Me,rr);ve||ne||!(q<ke||q===ke&&he<we)||q>J||q===J&&he>=se||(ce=Te,re=Me,J=q,se=he)}}if(ce&&re){ce.points=re;continue}let ge=Oe(ye);if(!ge)return;for(let[Te,we]of ge)Te.points=we}}var rr,Ea,jr,iB,wye=F(()=>{"use strict";pc();rr=.001,Ea=8,jr=_f,iB=o((e,t)=>Qr(e,t,rr)||tn(e,t,rr),"orthogonallyAligned");o(yye,"separateSharedRenderedTerminalLanes");o(vye,"collapseRedundantRectangularDoglegs");o(aB,"liftObstacleHuggingSameSideRails");o(sB,"liftTopLaneTitleBandsAboveRails");o(oB,"shiftLeftLaneTitleBandsLeftOfRails");o(xye,"swapDestinationTerminalTailsToReduceCrossings");o(bye,"reassignCrossingExternalRailChannels");o(Tye,"shortcutRedundantOrthogonalJogs");o(Cye,"resolveRenderedOrthogonalCrossings")});function kye(e,t){let{nodeInfoById:r,realNodeRects:n}=b1(t),i=["top","bottom","left","right"],a=20,s={top:Math.min(...n.map(y=>y.rect.top))-a,bottom:Math.max(...n.map(y=>y.rect.bottom))+a,left:Math.min(...n.map(y=>y.rect.left))-a,right:Math.max(...n.map(y=>y.rect.right))+a},l=o((y,v,x,b)=>{let T=[],k=f5(y,v,x,b,a,Df);return k&&T.push(k),v===b&&T.push(p5(y,v,x,s[v])),T},"buildOrthogonalPathCandidates"),u=o((y,v)=>{for(let x=0;x<y.length-1;x++){let b=y[x],T=y[x+1];if(Xn(b,T,n,v,1))return!0}return!1},"pathHitsNode"),h=o((y,v,x=!1)=>{let b=0,T=_f(y,Df),k=v.start,C=v.end;for(let w of e){if(w===v||w.isLayoutOnly)continue;let S=w.start,R=w.end;if(!x&&k&&C&&(S===k||S===C||R===k||R===C))continue;let L=w.points;if(!(!L||L.length<2))for(let N of T)for(let I of _f(L,Df)){if(Q9(N.a,N.b,I.a,I.b,Df,Df)){b++;continue}dc(N,I,Df)>=zct&&b++}}return b},"pathConflictCount"),d=4,f=o((y,v)=>{let x=Math.abs(y.y-v.rect.top),b=Math.abs(y.y-v.rect.bottom),T=Math.abs(y.x-v.rect.left),k=Math.abs(y.x-v.rect.right),C="top",w=x;return b<w&&(C="bottom",w=b),T<w&&(C="left",w=T),k<w&&(C="right",w=k),C},"nearestSideOfRect"),p=new Map,m=o((y,v,x)=>{let b=p.get(y)??[];b.push({side:v,edgeId:x}),p.set(y,b)},"addFaceClaim");for(let y of e){if(y.isLayoutOnly)continue;let v=y.points??[];if(v.length<1)continue;let x=y.id??"",b=y.start,T=y.end;if(b){let k=r.get(b);k&&m(b,f(v[0],k),x)}if(T){let k=r.get(T);k&&m(T,f(v[v.length-1],k),x)}}let g=o((y,v,x)=>p.get(y)?.some(b=>b.edgeId!==x&&b.side===v)??!1,"faceIsClaimed");for(let y of e){if(y.isLayoutOnly)continue;let v=y.points;if(!v||v.length<2)continue;let x=ho(v,Df);if(x<d)continue;let b=y.start,T=y.end;if(!b||!T)continue;let k=r.get(b),C=r.get(T);if(!k||!C)continue;let w=y.id??"",S=h(v,y,!0),R=h(v,y),L,N=S,I=x;for(let _ of i){if(g(b,_,w))continue;let A=Lf(k,_);for(let M of i){if(g(T,M,w))continue;let D=Lf(C,M);for(let P of l(A,_,D,M)){if(u(P,[b,T]))continue;let B=ho(P,Df);if(S>0){let O=h(P,y,!0);if(O>N||O===N&&B>=I)continue;N=O,I=B,L=P;continue}h(P,y)>R||B<I&&(I=B,L=P)}}}if(L){y.points=L;let _=p.get(b);_&&p.set(b,_.filter(M=>M.edgeId!==w));let A=p.get(T);A&&p.set(T,A.filter(M=>M.edgeId!==w)),m(b,f(L[0],k),w),m(T,f(L[L.length-1],C),w)}}}var Df,zct,Sye=F(()=>{"use strict";pc();Df=.001,zct=8;o(kye,"simplifyDetouredEdges")});function Aye(e,t){let r=t?0:e.length-1,n=t?1:-1,i=e[r],a=e[r+n];if(!i||!a)return;let s=a.x-i.x,l=a.y-i.y;if(!(Math.abs(s)+Math.abs(l)<fo)){if(Math.abs(l)<=fo){let h=i.x+Math.sign(s)*Eye;return{left:Math.min(i.x,h),right:Math.max(i.x,h),top:i.y-v5,bottom:i.y+v5}}if(Math.abs(s)<=fo){let h=i.y+Math.sign(l)*Eye;return{left:i.x-v5,right:i.x+v5,top:Math.min(i.y,h),bottom:Math.max(i.y,h)}}return{left:Math.min(i.x,a.x),right:Math.max(i.x,a.x),top:Math.min(i.y,a.y),bottom:Math.max(i.y,a.y)}}}function Gct(e){return{left:Math.min(e.left,e.right),right:Math.max(e.left,e.right),top:Math.min(e.top,e.bottom),bottom:Math.max(e.top,e.bottom)}}function Rye(e,t){let r=Jr(t),n=Aye(r,!0),i=Aye(r,!1);return[n,i].some(a=>a&&d5(e,Gct(a)))}function x5(e,t){let r=[];for(let g of e){if(g.isLayoutOnly)continue;let y=g.points;if(!(!y||y.length<2))for(let v=0;v<y.length-1;v++)r.push({edgeId:g.id,p1:y[v],p2:y[v+1]})}let n=[],i=[];for(let g of t.values()){let y=g.isGroup,v=g.parentId;if(y&&!v){let b=Sa(g);b&&i.push({id:g.id,rect:b});continue}if(y||g.isEdgeLabel)continue;let x=Sa(g);x&&n.push({nodeId:g.id,rect:x})}let a=3,s=1,l=12,u=o((g,y)=>{let v=Z9(y,a);for(let{nodeId:x,rect:b}of n)if(x!==g&&d5(v,b))return!0;return!1},"labelOverlapsForeignNode"),h=o((g,y)=>{let v=Z9(y,a);for(let x of r)if(x.edgeId!==g&&vT(x.p1,x.p2,v))return!0;return!1},"labelOverlapsForeignEdge"),d=o((g,y,v)=>u(g,v)||h(y,v),"labelOverlapsAnything"),f=[],p=o(g=>{for(let{id:y,rect:v}of i)if(H0e(v,g))return y},"findContainingLane"),m=o((g,y)=>f.some(v=>v.labelId!==g&&d5(y,v.rect)),"overlapsPlacedLabel");for(let g of e){if(g.isLayoutOnly)continue;let y=g.labelNodeId;if(!y)continue;let v=t.get(y);if(!v)continue;let x=g.points;if(!x||x.length<2)continue;let b=v.width??0,T=v.height??0;if(b<=0||T<=0)continue;let k=[];for(let G=0;G<x.length-1;G++){let z=x[G],W=x[G+1],H=Math.abs(z.x-W.x),j=Math.abs(z.y-W.y);H<fo&&j<fo||H>=fo&&j>=fo||k.push({idx:G,length:H+j,orientation:H>=fo?"horizontal":"vertical",midX:(z.x+W.x)/2,midY:(z.y+W.y)/2})}if(k.length===0)continue;let C=k.length>=3?k.filter(G=>G.idx>0&&G.idx<k.length-1):k,w=C.length>0?C:k,S=b>=T?"horizontal":"vertical",R=o(G=>[...G].sort((z,W)=>{let H=z.orientation===S,j=W.orientation===S;if(H!==j)return H?-1:1;let Q=z.length>=(z.orientation==="horizontal"?b:T)+2,U=W.length>=(W.orientation==="horizontal"?b:T)+2;return Q!==U?Q?-1:1:W.length-z.length}),"rankSegments"),L=k[0],N=k[k.length-1],I=[.5,.25,.75,.05,.95,.15,.85,.1,.9],_=o((G,z)=>{let W=x[G.idx],H=x[G.idx+1];return{midX:W.x+(H.x-W.x)*z,midY:W.y+(H.y-W.y)*z}},"anchorAtT"),A=o((G,z,W)=>Math.min(W,Math.max(z,G)),"clamp"),M=o((G,z)=>G.midX>=z.left-fo&&G.midX<=z.right+fo&&G.midY>=z.top-fo&&G.midY<=z.bottom+fo,"pointInsideRectInclusive"),D=o(G=>{let z=x1(G.midX,G.midY,b,T),W=p(z);if(W)return{laneId:W,anchor:G,rect:z};let H=i.find(({rect:ie})=>M(G,ie));if(!H)return;let j=H.rect.left+b/2+s,Q=H.rect.right-b/2-s,U=H.rect.top+T/2+s,oe=H.rect.bottom-T/2-s;if(j>Q||U>oe)return;let te={midX:A(G.midX,j,Q),midY:A(G.midY,U,oe)},le=x1(te.midX,te.midY,b,T);return M(G,le)?{laneId:H.id,anchor:te,rect:le}:void 0},"placementForAnchor"),P=o((G,z,W)=>G.orientation==="horizontal"?Math.abs(z.midX-W.x):Math.abs(z.midY-W.y),"distanceAlongSegment"),B=o((G,z)=>{let H=(G.orientation==="horizontal"?b/2:T/2)+l;if(G===L){let j=x[G.idx];if(P(G,z,j)+fo<H)return!1}if(G===N){let j=x[G.idx+1];if(P(G,z,j)+fo<H)return!1}return!0},"labelClearsTerminalEndpoints"),O=o(G=>{let z=R(G);for(let W of z)for(let H of I){let j=_(W,H);if(!B(W,j))continue;let Q=D(j);if(Q&&!Rye(Q.rect,x)&&!m(y,Q.rect)&&!d(y,g.id,Q.rect))return{laneId:Q.laneId,anchor:Q.anchor}}},"tryPool"),$=o((G,z,W=!1)=>{let H=R(G);for(let j of H){let Q={midX:j.midX,midY:j.midY};if(z&&!B(j,Q))continue;let U=D(Q);if(U&&!Rye(U.rect,x)&&!m(y,U.rect)&&!u(y,U.rect)&&(W||!h(g.id,U.rect)))return{laneId:U.laneId,anchor:U.anchor}}},"findLaneContainingFallback"),V=O(w)??(w.length<k.length?O(k):void 0)??$(k,!0)??$(k,!1)??$(k,!1,!0);if(V){v.x=V.anchor.midX,v.y=V.anchor.midY,v.parentId=V.laneId;let G=x1(V.anchor.midX,V.anchor.midY,b,T),z=f.findIndex(W=>W.labelId===y);z>=0?f[z]={labelId:y,rect:G}:f.push({labelId:y,rect:G})}}}var fo,Eye,v5,_ye=F(()=>{"use strict";pc();fo=.001,Eye=10,v5=7;o(Aye,"markerClearanceRectFor");o(Gct,"normalizeRect");o(Rye,"labelOverlapsOwnMarker");o(x5,"anchorLabelsToPolyline")});function Dye(e,t){return e<t?`${e}::${t}`:`${t}::${e}`}function Iye(e,t){let{nodeInfoById:r,realNodeRects:n}=b1(t),i=new Map;for(let s of t){let l=s.id;if(!s.isGroup&&s.isEdgeLabel){i.set(l,{w:s.width??0,h:s.height??0});continue}}let a=o((s,l,u,h)=>{let d=Dye(l,u),f=0,p=o(m=>{if(!m)return;let g=i.get(m);if(!g)return;let y=h==="x"?g.w/2:g.h/2;y>f&&(f=y)},"consider");p(s.labelNodeId);for(let m of e){if(m===s||m.isLayoutOnly)continue;let g=m.start,y=m.end;!g||!y||Dye(g,y)===d&&p(m.labelNodeId)}return f>0?f+Wct:0},"labelClearanceFor");for(let s of e){if(s.isLayoutOnly)continue;let l=s.points;if(!u5(l,lB))continue;let u=m5(s,r,lB);if(!u)continue;let{srcId:h,dstId:d,srcInfo:f,dstInfo:p,collinearX:m,collinearY:g}=u;if(m===g)continue;let y,v;if(m){let C=p.cy>f.cy;y={x:f.cx,y:C?f.rect.bottom:f.rect.top},v={x:p.cx,y:C?p.rect.top:p.rect.bottom}}else{let C=p.cx>f.cx;y={x:C?f.rect.right:f.rect.left,y:f.cy},v={x:C?p.rect.left:p.rect.right,y:p.cy}}if(Xn(y,v,n,[h,d],1))continue;let b=a(s,h,d,m?"x":"y"),T=b>Lye?b:Lye,k=[0,T,-T];for(let C of k){let w={...y},S={...v};if(m){if(w.x+=C,S.x+=C,w.x<=f.rect.left||w.x>=f.rect.right||S.x<=p.rect.left||S.x>=p.rect.right)continue}else if(w.y+=C,S.y+=C,w.y<=f.rect.top||w.y>=f.rect.bottom||S.y<=p.rect.top||S.y>=p.rect.bottom)continue;if(!Xn(w,S,n,[h,d],1)&&!xT(w,S,e,s,{epsilon:lB})){s.points=[w,S];break}}}}var lB,Vct,Lye,Wct,Mye=F(()=>{"use strict";pc();lB=1e-6,Vct=8,Lye=Vct/2,Wct=3;o(Dye,"pairKey");o(Iye,"straightenCollinearSiblingDetours")});function cB(e,t){let{realNodeRects:h,labelNodeRects:d}=gu(t.values()),f=o((w,S)=>_f(S,.001).map(R=>({...R,edge:w,interior:R.index>=1&&R.index<=S.length-3})),"segmentsFor"),p=o(()=>{let w=[];for(let S of e){if(S.isLayoutOnly)continue;let R=S.points;!R||R.length<2||w.push(...f(S,Jr(R)))}return w},"allSegments"),m=o((w,S)=>w.horizontal&&S.horizontal?ls(w.a.x,w.b.x,S.a.x,S.b.x)>=8&&Math.abs(w.a.y-S.a.y)<7:w.vertical&&S.vertical?ls(w.a.y,w.b.y,S.a.y,S.b.y)>=8&&Math.abs(w.a.x-S.a.x)<7:!1,"hasCrowdedParallelTrack"),g=o((w,S)=>{let R=w.start,L=w.end,N=f(w,S);if(N.length!==S.length-1)return!1;let I=[R,L].filter(A=>!!A),_=w.labelNodeId?[w.labelNodeId]:[];for(let A of N)if(Xn(A.a,A.b,h,I,-2)||Xn(A.a,A.b,d,_,-2))return!1;for(let A of e){if(A===w||A.isLayoutOnly)continue;let M=A.points;if(!(!M||M.length<2)){for(let D of N)for(let P of f(A,Jr(M)))if(m(D,P)||fc(D.a,D.b,P.a,P.b,.001))return!1}}return!0},"candidateIsSafe"),y=o((w,S)=>{let R=Jr(w.edge.points??[]);if(R.length<4||w.index>=R.length-1)return;let L=R.map(N=>({...N}));if(w.horizontal)L[w.index].y+=S,L[w.index+1].y+=S;else if(w.vertical)L[w.index].x+=S,L[w.index+1].x+=S;else return;return f(w.edge,L).length===L.length-1?L:void 0},"shiftedCandidate"),v=o((w,S)=>({x:w.x??(S.left+S.right)/2,y:w.y??(S.top+S.bottom)/2}),"nodeCenter"),x=o(w=>{let S=w.edge,R=Jr(S.points??[]);if(R.length!==4||w.index!==1)return;let L=S.start?t.get(S.start):void 0,N=S.end?t.get(S.end):void 0,I=L?Sa(L):void 0,_=N?Sa(N):void 0,A=R.slice(w.index+2);if(!(!L||!N||!I||!_||A.length===0))return{sourceCenter:v(L,I),targetCenter:v(N,_),sourceRect:I,tail:A}},"sourceDetourContextFor"),b=o((w,S,R,L,N,I)=>{let _=L.y>=R.y,A=_?N.bottom:N.top,M=A+(_?20:-20);if(_&&w.b.y<=M+.001||!_&&w.b.y>=M-.001)return;let D=w.a.x+S;return Jr([{x:R.x,y:A},{x:R.x,y:M},{x:D,y:M},{x:D,y:w.b.y},...I],.001)},"verticalSourceDetour"),T=o((w,S,R,L,N,I)=>{let _=L.x>=R.x,A=_?N.right:N.left,M=A+(_?20:-20);if(_&&w.b.x<=M+.001||!_&&w.b.x>=M-.001)return;let D=w.a.y+S;return Jr([{x:A,y:R.y},{x:M,y:R.y},{x:M,y:D},{x:w.b.x,y:D},...I],.001)},"horizontalSourceDetour"),k=o((w,S)=>{let R=x(w);if(R){if(w.vertical)return b(w,S,R.sourceCenter,R.targetCenter,R.sourceRect,R.tail);if(w.horizontal)return T(w,S,R.sourceCenter,R.targetCenter,R.sourceRect,R.tail)}},"sourceDetourCandidate"),C=[-7,7,-14,14,-21,21];for(let w=0;w<12;w++){let S=p(),R=!1;for(let L=0;L<S.length&&!R;L++)for(let N=L+1;N<S.length&&!R;N++){let I=S[L],_=S[N];if(I.edge===_.edge||!m(I,_))continue;let A=[I,_].filter(M=>M.interior);for(let M of A){for(let D of C){let P=y(M,D);if(P&&g(M.edge,P)){M.edge.points=P,R=!0;break}let B=k(M,D);if(B&&g(M.edge,B)){M.edge.points=B,R=!0;break}}if(R)break}}if(!R)return}}var Nye=F(()=>{"use strict";pc();o(cB,"nudgeSharedInteriorSubpaths")});function qct(e,t,r,n){let i=t.x-e.x,a=t.y-e.y,s=n.x-r.x,l=n.y-r.y,u=i*l-a*s;if(Math.abs(u)<1e-10)return!1;let h=r.x-e.x,d=r.y-e.y,f=(h*l-d*s)/u,p=(h*a-d*i)/u,m=.01;return f>m&&f<1-m&&p>m&&p<1-m}function uB(e){let t=e.nodes??[],r=e.edges??[],n=[];if(!r.length||!t.length)return n;let i=U0e(t),a=1,s=[];for(let u of r){if(u.isLayoutOnly)continue;let h=u.points;if(!h||h.length<2)continue;let d=u.start,f=u.end,p=u.labelNodeId,m=u.id??`${d}->${f}`;for(let g of i)if(!(g.nodeId===d||g.nodeId===f)&&!(p&&g.nodeId===p)){for(let y=0;y<h.length-1;y++)if(vT(h[y],h[y+1],g,-a)){n.push({type:"edge-node-overlap",edgeId:m,targetId:g.nodeId,detail:`segment ${y} passes through node "${g.nodeId}"`});break}}for(let g=0;g<h.length-1;g++)s.push({edgeId:m,start:d,end:f,p1:h[g],p2:h[g+1]})}let l=new Set;for(let u=0;u<s.length;u++)for(let h=u+1;h<s.length;h++){let d=s[u],f=s[h];if(d.edgeId!==f.edgeId&&!(d.start===f.start||d.start===f.end||d.end===f.start||d.end===f.end)&&qct(d.p1,d.p2,f.p1,f.p2)){let p=d.edgeId<f.edgeId?`${d.edgeId}|${f.edgeId}`:`${f.edgeId}|${d.edgeId}`;l.has(p)||(l.add(p),n.push({type:"edge-edge-crossing",edgeId:d.edgeId,targetId:f.edgeId,detail:`edges "${d.edgeId}" and "${f.edgeId}" cross`}))}}if(n.length>0){let u=n.filter(d=>d.type==="edge-node-overlap").length,h=n.filter(d=>d.type==="edge-edge-crossing").length;Z.warn(`[SWIMLANE_VALIDATE] ${n.length} issue(s) detected: ${u} edge-node overlap(s), ${h} edge crossing(s)`);for(let d of n)Z.warn(`[SWIMLANE_VALIDATE]   ${d.type}: ${d.detail}`)}return n}var Pye=F(()=>{"use strict";vt();pc();o(qct,"segmentsIntersect");o(uB,"validateSwimlanesLayout")});function Oye(e,t){let r=e.nodes??[],n=e.edges??[],i=r.filter(l=>!l.isGroup);if((t==="LR"||t==="RL")&&i.length>0&&!hye(e,t)||t==="BT"&&i.length>0&&!uye(e))return;for(let l of n){if(l.isLayoutOnly)continue;let u=l.points;!u||u.length<2||(l.points=Tl(bT(u)))}kye(n,r),Iye(n,r),fye(n,r);let a=new Map;for(let l of r)a.set(String(l.id),l);x5(n,a),iye(n,a),mye(n,a),cB(n,a),yye(n,a),vye(n,a),aB(n,a),xye(n,a);let s=o(()=>{Cye(n,a),bye(n,a),Tye(n,a),x5(n,a),rB(n,a),aB(n,a),x5(n,a),rB(n,a)},"finalizeRenderedEdges");s(),cB(n,a),s(),sB(n,a),oB(n,a),sB(n,a),oB(n,a)}var Bye=F(()=>{"use strict";sye();pc();dye();pye();gye();wye();Sye();_ye();Mye();Nye();Pye();o(Oye,"postProcessSwimlaneLayout")});function po(e){let t=new Map(e.nodeById),r=new Set,n=[];for(let a of e.edges){if(!t.has(a.src)||!t.has(a.dst))continue;let s=`${a.id}:${a.src}->${a.dst}`;r.has(s)||(r.add(s),n.push(a))}return{nodes:[...t.keys()],edges:n,layout:e.layout,nodeById:t}}function b5(e,t){return e.edges.filter(r=>r.dst===t)}function Hct(e){let t=new Map;for(let r of e.nodes)t.set(r,[]);for(let r of e.edges)t.get(r.src).push(r.dst);return t}function hB(e){let t=Hct(e);for(let r of t.values())r.sort((n,i)=>n.localeCompare(i));return t}function dB(e){let t=new Map;for(let r of e.nodes)t.set(r,0);for(let r of e.edges)t.set(r.dst,(t.get(r.dst)??0)+1);return t}function fB(e){return[...e.entries()].filter(([,t])=>t===0).map(([t])=>t).sort((t,r)=>t.localeCompare(r))}function T1(e,t=()=>!0){let r=new Map,n=new Map;for(let i of e.nodes)r.set(i,[]),n.set(i,[]);for(let i of e.edges)t(i)&&(n.get(i.src).push(i.dst),r.get(i.dst).push(i.src));return{preds:r,succs:n}}function T5(e,t,r,n){let i=0;for(let s of e.nodes)n?.skipGroups&&e.nodeById.get(s)?.isGroup||(i=Math.max(i,r[s]??0));let a=Array.from({length:i+1},()=>[]);for(let s of t)n?.skipGroups&&e.nodeById.get(s)?.isGroup||a[Math.max(0,r[s]??0)].push(s);return a}function If(e){let t=dB(e),r=fB(t),n=[],i=hB(e);for(;r.length;){let a=r.shift();n.push(a);for(let s of i.get(a)??[])if(t.set(s,(t.get(s)??0)-1),(t.get(s)??0)===0){let l=0;for(;l<r.length&&r[l]<s;)l++;r.splice(l,0,s)}}return n.length===e.nodes.length?n:null}function Hm(e){let t=new Map,r=0;for(let n of e)t.set(n,r),r++;return t}function C5(e){let t=new Array(e.length),r=o((n,i)=>{if(i-n<=1)return 0;let a=n+i>>1,s=r(n,a)+r(a,i),l=n,u=a,h=n;for(;l<a||u<i;)u>=i||l<a&&e[l]<=e[u]?t[h++]=e[l++]:(t[h++]=e[u++],s+=a-l);for(let d=n;d<i;d++)e[d]=t[d];return s},"count");return r(0,e.length)}var yu=F(()=>{"use strict";o(po,"normalizeGraph");o(b5,"incoming");o(Hct,"buildSuccessorMap");o(hB,"buildSortedSuccessorMap");o(dB,"buildInDegreeMap");o(fB,"sortedZeroInDegreeNodes");o(T1,"buildPredecessorSuccessorMaps");o(T5,"buildLayersFromRanks");o(If,"topoSortIfAcyclic");o(Hm,"buildLayerIndex");o(C5,"countInversions")});function $ye(e){let t=po(e),r=new Map;for(let d of t.nodes)r.set(d,[]);for(let d of t.edges)r.get(d.src).push(d);for(let d of r.values())d.sort((f,p)=>f.dst===p.dst?f.id.localeCompare(p.id):f.dst.localeCompare(p.dst));let n=Object.create(null);for(let d of t.nodes)n[d]=0;let i=[],a=o(d=>{n[d]=1;for(let f of r.get(d)??[]){let p=f.dst;n[p]===0?a(p):n[p]===1&&i.push(f)}n[d]=2},"dfs"),s=[...t.nodes].sort((d,f)=>d.localeCompare(f));for(let d of s)n[d]===0&&a(d);let l=new Set(i.map(d=>`${d.id}:${d.src}->${d.dst}`)),u=t.edges.map(d=>l.has(`${d.id}:${d.src}->${d.dst}`)?{id:d.id,src:d.dst,dst:d.src,weight:d.weight,ref:d.ref}:d);return{acyclic:{nodes:[...t.nodes],edges:u,layout:t.layout,nodeById:new Map(t.nodeById)},reversed:i}}var Fye=F(()=>{"use strict";yu();o($ye,"removeCycles_DFS")});function Uct(e){let t=new Map,r=o(n=>{if(t.has(n))return t.get(n);let i=e.nodeById.get(n);if(!i)return t.set(n,null),null;let a=i.parentId;if(!a)return t.set(n,null),null;let l=r(a)??a;return t.set(n,l),l},"resolve");for(let n of e.nodes)r(n);return t}function cs(e){let t=Uct(e);return r=>t.get(r)??null}function w5(e){let t=[];for(let r of e.layout.nodes??[])r.isGroup&&!r.parentId&&t.push(r.id);return[...new Set(t)].reverse()}function k5(e,t){let r=w5(e);if(!t||t.length===0)return r;let n=new Set(r),i=new Set,a=[];for(let s of t)!n.has(s)||i.has(s)||(i.add(s),a.push(s));for(let s of r)i.has(s)||a.push(s);return a}var Dh=F(()=>{"use strict";o(Uct,"buildTopLaneMap");o(cs,"createTopLaneResolver");o(w5,"buildTopLaneOrder");o(k5,"resolveTopLaneOrder")});var zye,Um,pB,C1=F(()=>{"use strict";zye={EPSILON:1e-6},Um={GRAVITY_ITERATIONS:8,MAX_CROSSING_OPTIMIZATION_PASSES:4,DEFAULT_COMPACT_SINGLE_INPUT:!0},pB={DEFAULT_LAYER_GAP:100,DEFAULT_NODE_GAP:40}});function Gye(e,t){let r=po(e),n=t?.laneOf??(()=>null),i=t?.rankHint,{preds:a}=T1(r);for(let C of a.values())C.sort((w,S)=>w.localeCompare(S));let s=If(r)??[...r.nodes].sort((C,w)=>C.localeCompare(w)),l=new Map;for(let[C,w]of s.entries())l.set(w,C);let u=new Map,h=new Map;for(let C of r.nodes)h.set(C,[]);for(let C of s){let w=(a.get(C)??[]).filter(S=>u.has(S));if(w.length>0){let S=Yct(C,w,{laneOf:n,rankHint:i,topoIndex:l});u.set(C,S),h.get(S).push(C)}else u.has(C)||u.set(C,null)}for(let C of r.nodes)u.has(C)||u.set(C,null);let d=new Set;for(let C of r.nodes)(u.get(C)??null)===null&&d.add(C);let f=[...d].sort((C,w)=>{let S=l.get(C)??0,R=l.get(w)??0;return S===R?C.localeCompare(w):S-R}),p=jct(r),m=new Map;for(let[C,w]of p.entries())m.set(C,[...w].sort((S,R)=>S.localeCompare(R)));let g=Xct(m),y=Kct(m),v=new Map;for(let C of r.nodes)v.set(C,[]);for(let C of y)for(let w of C.nodes){let S=v.get(w);S?S.push(C.id):v.set(w,[C.id])}let x=[],b=[],T=new Set,k=o(C=>{if(!T.has(C)){T.add(C),x.push(C);for(let w of h.get(C)??[])k(w);b.push(C)}},"walk");for(let C of f)k(C);for(let C of s)k(C);return{parent:u,children:h,roots:f,componentOf:g,blocks:y,nodeBlocks:v,adjacency:m,preorder:x,postorder:b,topologicalOrder:s}}function Yct(e,t,r){let n=r.laneOf(e);return[...t].sort((a,s)=>{let l=r.laneOf(a),u=r.laneOf(s),h=l!=null&&l===n,d=u!=null&&u===n;if(h!==d)return h?-1:1;let f=r.rankHint?.[a],p=r.rankHint?.[s];if(f!=null&&p!=null&&f!==p)return p-f;let m=r.topoIndex.get(a)??0,g=r.topoIndex.get(s)??0;return m!==g?m-g:a.localeCompare(s)})[0]}function jct(e){let t=new Map;for(let r of e.nodes)t.set(r,new Set);for(let r of e.edges)t.get(r.src).add(r.dst),t.get(r.dst).add(r.src);return t}function Xct(e){let t=new Map,r=0;for(let n of e.keys()){if(t.has(n))continue;let i=[n];for(;i.length>0;){let a=i.pop();if(!t.has(a)){t.set(a,r);for(let s of e.get(a)??[])t.has(s)||i.push(s)}}r++}return t}function Kct(e){let t=new Map,r=new Map,n=[],i=[],a=0,s=o((l,u)=>{t.set(l,++a),r.set(l,a);for(let h of e.get(l)??[])h!==u&&(t.has(h)?(t.get(h)??0)<(t.get(l)??0)&&(n.push([l,h]),r.set(l,Math.min(r.get(l)??a,t.get(h)??a))):(n.push([l,h]),s(h,l),r.set(l,Math.min(r.get(l)??a,r.get(h)??a)),(r.get(h)??0)>=(t.get(l)??0)&&i.push(Zct(l,h,n,i.length))))},"visit");for(let l of e.keys())t.has(l)||s(l,null);return i}function Zct(e,t,r,n){let i=[],a=new Set;for(;r.length>0;){let s=r.pop();if(i.push(s),a.add(s[0]),a.add(s[1]),s[0]===e&&s[1]===t||s[0]===t&&s[1]===e)break}return{id:n,edges:i,nodes:[...a]}}var Vye=F(()=>{"use strict";yu();o(Gye,"buildDrivingTree");o(Yct,"chooseParent");o(jct,"buildAdjacency");o(Xct,"assignComponents");o(Kct,"computeBlocks");o(Zct,"popBlock")});function Wye(e,t,r){let n=[...e.nodes],i=new Map;for(let[b,T]of n.entries())i.set(T,b);let a=n.length,s=new Array(a).fill(-1),l=new Array(a).fill(0),u=[],h=new Set;for(let b of n){let T=r.parent.get(b)??null,k=i.get(b);k!=null&&T==null&&(s[k]=-1,l[k]=0,h.has(b)||(h.add(b),u.push(b)))}for(;u.length>0;){let b=u.shift(),T=i.get(b);if(T==null)continue;let k=r.children.get(b)??[];for(let C of k){if(h.has(C))continue;let w=i.get(C);w!=null&&(s[w]=T,l[w]=l[T]+1,h.add(C),u.push(C))}}for(let b of n){if(h.has(b))continue;let T=i.get(b);T!=null&&(s[T]=-1,l[T]=0,h.add(b))}let d=Math.max(1,Math.ceil(Math.log2(Math.max(1,a)))+1),f=Array.from({length:d},()=>new Array(a).fill(-1));for(let b=0;b<a;b++)f[0][b]=s[b];for(let b=1;b<d;b++)for(let T=0;T<a;T++){let k=f[b-1][T];f[b][T]=k===-1?-1:f[b-1][k]}let p=o((b,T)=>{if(b===-1||T===-1)return-1;l[b]<l[T]&&([b,T]=[T,b]);let k=l[b]-l[T];for(let C=0;C<d;C++)if(k>>C&1&&(b=f[C][b],b===-1))return-1;if(b===T)return b;for(let C=d-1;C>=0;C--){let w=f[C][b],S=f[C][T];w===-1||S===-1||w!==S&&(b=w,T=S)}return f[0][b]},"lcaIndex"),m=Array.from({length:a},()=>new Map);for(let b of e.edges){let T=b.src,k=b.dst,C=t[T],w=t[k];if(C==null||w==null||(C>w&&([T,k]=[k,T],[C,w]=[w,C]),C==null||w==null||C===w))continue;let S=i.get(T),R=i.get(k);if(S==null||R==null)continue;let L=p(S,R);if(L===-1)continue;let N=m[L];for(let I=C;I<w;I++)N.set(I,(N.get(I)??0)+1)}let g=new Map,y=o((b,T)=>{if(T.size!==0)for(let[k,C]of T)b.set(k,(b.get(k)??0)+C)},"mergeInto"),v=new Set,x=o(b=>{let T=i.get(b);v.add(b);let k=T==null?void 0:m[T],C=k?new Map(k):new Map,w=r.children.get(b)??[];for(let S of w){let R=x(S),L=t[b];if(L!=null){let N=g.get(b);N||(N=new Map,g.set(b,N));let I=R.get(L)??0,_=t[S];_!=null&&_>L&&(I+=1),N.set(S,I)}y(C,R)}return C},"dfs");for(let b of r.roots)v.has(b)||x(b);for(let b of n)v.has(b)||x(b);return g}var qye=F(()=>{"use strict";o(Wye,"computeSubtreeCrossCounts")});function Hye(e,t,r){let n=new Map,i=o(a=>{let s=r[a]??0,l=[...t.get(a)??[]];l.sort(mB(r));for(let u of l){i(u);let h=n.get(u);h!=null&&(s=Math.min(s,h))}n.set(a,s)},"annotate");for(let a of e)i(a);return n}function mB(e){return(t,r)=>{let n=e[t]??0,i=e[r]??0;return n===i?t.localeCompare(r):n-i}}function Uye(e,t,r,n){let i=0;for(let u of t){let h=r[u]??0;h>i&&(i=h)}let a=Array.from({length:i+1},()=>[]),s=new Set,l=o(u=>{if(s.has(u))return;s.add(u);let h=r[u]??0;a[h]||(a[h]=[]),a[h].push(u);for(let d of n(u))l(d)},"emit");for(let u of e)l(u);for(let u of t)if(!s.has(u)){let h=r[u]??0;a[h]||(a[h]=[]),a[h].push(u),s.add(u)}return a}function Yye(e){let t=[];for(let r of e){let n=new Set,i=[];for(let a of r)n.has(a)||(n.add(a),i.push(a));t.push(i)}return t}var jye=F(()=>{"use strict";o(Hye,"annotateMinimumLayers");o(mB,"compareByRankThenId");o(Uye,"emitNodesInTreeOrder");o(Yye,"deduplicateLayers")});function Qct(e,t,r,n){return i=>{let a=e.get(i)??[];if(a.length===0)return[];let s=t[i]??0,l=[],u=[],h=r.get(i);for(let d of a){let f=n.get(d)??s;f>s?l.push({child:d,min:f}):u.push(d)}return l.sort((d,f)=>d.min===f.min?d.child.localeCompare(f.child):d.min-f.min),u.sort((d,f)=>{let p=h?.get(d)??0,m=h?.get(f)??0;if(p!==m)return p-m;let g=n.get(d)??s,y=n.get(f)??s;return g!==y?g-y:d.localeCompare(f)}),[...l.map(d=>d.child),...u]}}function TT(e,t,r){let n=Gye(e,{rankHint:t,laneOf:r}),{children:i,roots:a}=n;for(let f of e.nodes)i.has(f)||i.set(f,[]);let s=Wye(e,t,n),l=[...a].sort(mB(t)),u=Hye(l,i,t),h=Qct(i,t,s,u),d=Uye(l,e.nodes,t,h);return d=Yye(d),d}var gB=F(()=>{"use strict";Vye();qye();jye();o(Qct,"createChildOrderer");o(TT,"buildMultitreeLayerOrder")});function Jct(e,t,r){let n=new Set(e),i=new Set(t),a=Hm(t),s=[];for(let l of r)n.has(l.src)&&i.has(l.dst)&&s.push(a.get(l.dst));return C5(s)}function Xye(e,t,r){let n=[];for(let a of t){let s=r[a.src],l=r[a.dst];if(s==null||l==null||s===l)continue;let u=a.src,h=a.dst,d=s,f=l;s>l&&(u=a.dst,h=a.src,d=l,f=s);for(let p=d;p<f;p++)n.push({id:`${a.id}@${p}`,src:u,dst:h,ref:a.ref})}let i=0;for(let a=0;a+1<e.length;a++)i+=Jct(e[a],e[a+1],n);return i}function Kye(e,t){let r={...t},{preds:n}=T1(e),i=cs(e),a=TT(e,r,i),s=Xye(a,e.edges,r),l=Um.MAX_CROSSING_OPTIMIZATION_PASSES;for(let u=0;u<l;u++){let h=!1,d=[...e.nodes].sort((f,p)=>(r[p]??0)-(r[f]??0));for(let f of d){let p=r[f]??0;if(p===0)continue;let m=0;for(let x of n.get(f)??[])m=Math.max(m,(r[x]??0)+1);if(m>=p)continue;let g=p;r[f]=m;let y=TT(e,r,i),v=Xye(y,e.edges,r);v<s?(s=v,h=!0):r[f]=g}if(!h)break}return r}var Zye=F(()=>{"use strict";yu();C1();Dh();gB();o(Jct,"countCrossingsBetweenAdjacent");o(Xye,"totalCrossings");o(Kye,"optimizeRanksByCrossings")});function Qye(e,t){let r=cs(e),n=[...e.nodes].sort((i,a)=>(t[i]??0)-(t[a]??0)||i.localeCompare(a));for(let i of n){let a=r(i);if(!a)continue;let s=e.edges.filter(y=>y.src===i);if(s.length===0)continue;let l=!1,u=0;for(let y of s){let v=r(y.dst);v==null||v===a?l=!0:u++}if(u===0||l)continue;let h=0,d=!1;for(let y of e.edges){if(y.dst!==i)continue;let v=r(y.src);v&&(v===a?d=!0:h++)}if(h>0||!d)continue;let f=t[i]??0,p=f+u,m=0;for(let y of e.edges)y.dst===i&&(m=Math.max(m,(t[y.src]??0)+1));let g=Math.max(f,m,p);g!==f&&(t[i]=g)}}var Jye=F(()=>{"use strict";Dh();o(Qye,"adjustCrossLaneSources")});function e1e(e,t){let r=po(e),n=If(r)??[...r.nodes].sort(),i=t?.compactSingleInput??!1,a=cs(r),s=Object.create(null);for(let u of n){let h=b5(r,u),d=t?.ignoreCrossLaneEdges?h.filter(f=>{let p=a(f.src),m=a(u);return!p||!m?!0:p===m}):h;if(d.length===0)s[u]=0;else if(i&&d.length===1){let f=d[0].src,p=a(f),m=a(u);p!==m?s[u]=s[f]??0:s[u]=(s[f]??0)+1}else{let f=-1/0;for(let p of d)f=Math.max(f,(s[p.src]??0)+1);s[u]=f===-1/0?0:f}}return(t?.optimizeRanksByCrossings??!1)&&(s=Kye(r,s)),t?.ignoreCrossLaneEdges&&Qye(r,s),{layers:TT(r,s,a),rankOf:s,dummy:new Set}}var t1e=F(()=>{"use strict";yu();Dh();Zye();Jye();gB();o(e1e,"assignLayers_LongestPath")});function r1e(e,t){let r=po(e),i={...e1e(r,{compactSingleInput:t?.compactSingleInput,ignoreCrossLaneEdges:t?.ignoreCrossLaneEdges,optimizeRanksByCrossings:t?.optimizeRanksByCrossings}).rankOf},a=cs(r),{preds:s,succs:l}=T1(r,g=>{if(t?.ignoreCrossLaneEdges){let y=a(g.src),v=a(g.dst);if(y&&v&&y!==v)return!1}return!0}),u=If(r)??[...r.nodes],h=[...u].reverse(),d=o((g,y)=>{let v=0;for(let T of s.get(g)??[])v=Math.max(v,(i[T]??0)+1);let x=Number.POSITIVE_INFINITY,b=l.get(g)??[];return b.length>0&&(x=Math.min(...b.map(T=>(i[T]??0)-1))),Number.isFinite(x)||(x=Math.max(v,y)),Math.min(Math.max(y,v),x)},"clampFeasible"),f=Um.GRAVITY_ITERATIONS,p=o(g=>{let y=!1;for(let v of g){let x=s.get(v)??[],b=l.get(v)??[];if(x.length===0&&b.length===0)continue;let T=x.length>0?x.reduce((S,R)=>S+(i[R]??0)+1,0)/x.length:i[v]??0,k=b.length>0?b.reduce((S,R)=>S+(i[R]??0)-1,0)/b.length:i[v]??0,C=Math.round((T+k)/2),w=d(v,C);w!==i[v]&&(i[v]=w,y=!0)}return y},"relaxOrder");for(let g=0;g<f;g++){let y=p(u),v=p(h);if(!y&&!v)break}for(let g of u){let y=0;for(let v of s.get(g)??[])y=Math.max(y,(i[v]??0)+1);(i[g]??0)<y&&(i[g]=y)}for(let g of h){let y=l.get(g)??[];if(y.length>0){let v=Math.min(...y.map(x=>(i[x]??0)-1));(i[g]??0)>v&&(i[g]=v)}}return{layers:T5(r,u,i),rankOf:i,dummy:new Set}}var n1e=F(()=>{"use strict";yu();Dh();C1();t1e();o(r1e,"assignLayers_Gravity")});function eut(e){let t=dB(e),r=hB(e),n=fB(t),i=[];for(;n.length>0;){let a=[];for(let s of n){i.push(s);for(let l of r.get(s)??[])t.set(l,(t.get(l)??0)-1),(t.get(l)??0)===0&&a.push(l)}n=a.sort((s,l)=>s.localeCompare(l))}return i.length===e.nodes.length?i:null}function i1e(e,t){let r=po(e),n=t?.direction==="LR"?eut(r)??[...r.nodes].sort():If(r)??[...r.nodes].sort(),i=cs(r),a=o(d=>i(d)??d,"laneOf"),s=Object.create(null),l=new Map,u=o((d,f)=>t?.ignoreCrossLaneEdges??!0?a(d)===a(f)?1:0:1,"edgeWeight");for(let d of n){if(r.nodeById.get(d)?.isGroup)continue;let p=b5(r,d),m=0;if(p.length>0)for(let x of p){let b=x.src,T=s[b]??0;m=Math.max(m,T+u(b,d))}let g=a(d),y=l.get(g)??0,v=Math.max(m,y);s[d]=v,l.set(g,v+1)}return{layers:T5(r,n,s,{skipGroups:!0}),rankOf:s,dummy:new Set}}var a1e=F(()=>{"use strict";yu();Dh();o(eut,"topoSortByGenerationIfAcyclic");o(i1e,"assignLayers_LaneAwareCompact")});function s1e(e,t){let r=po(t),{rankOf:n}=e,i=e.layers.map(m=>[...m]),a=new Set(e.dummy?[...e.dummy]:[]),s=0,l=new Map(r.nodeById),u=o(m=>{let g=`placeholder-${s++}`,y={id:g,isGroup:!1,isDummy:!0,width:0,height:0};for(l.set(g,y),a.add(g);i.length<=m;)i.push([]);return i[m].push(g),n[g]=m,g},"addDummyAt"),h=[...r.edges].sort((m,g)=>m.id===g.id?m.src===g.src?m.dst.localeCompare(g.dst):m.src.localeCompare(g.src):m.id.localeCompare(g.id)),d=[];for(let m of h){let g=n[m.src]??0,y=n[m.dst]??0;if(y-g<=1){d.push(m);continue}let v=m.src;for(let b=g+1,T=0;b<y;b++,T++){let k=u(b);d.push({id:`${m.id}#${T}`,src:v,dst:k,weight:m.weight,ref:m.ref}),v=k}let x=y-g-2;d.push({id:`${m.id}#${Math.max(x+1,0)}`,src:v,dst:m.dst,weight:m.weight,ref:m.ref})}let p={nodes:[...r.nodes,...[...a].filter(m=>!r.nodes.includes(m))],edges:d,layout:r.layout,nodeById:l};return{layering:{layers:i,rankOf:n,dummy:a},graphWithDummies:p}}var o1e=F(()=>{"use strict";yu();o(s1e,"makeProperLayering")});function l1e(e){let t=e.length;if(t===0)return Number.POSITIVE_INFINITY;let r=[...e].sort((n,i)=>n-i);return t%2===1?r[(t-1)/2]:.5*(r[t/2-1]+r[t/2])}function c1e(e){return e.length===0?Number.POSITIVE_INFINITY:e.reduce((r,n)=>r+n,0)/e.length}function tut(e,t,r,n){let i=new Map;for(let a of e)i.set(a,[]);for(let a of r)n==="down"?t.has(a.src)&&i.has(a.dst)&&i.get(a.dst).push(t.get(a.src)):t.has(a.dst)&&i.has(a.src)&&i.get(a.src).push(t.get(a.dst));return i}function rut(e,t,r){let n=r.get(e)??0,i=r.get(t)??0;return n!==i?n-i:e.localeCompare(t)}function u1e(e,t,r){let n=new Set(e),i=new Set(t),a=Hm(e),s=Hm(t),l=[];for(let h of r)n.has(h.src)&&i.has(h.dst)&&l.push({u:a.get(h.src),v:s.get(h.dst)});l.sort((h,d)=>h.u===d.u?h.v-d.v:h.u-d.u);let u=l.map(h=>h.v);return C5(u)}function yB(e,t,r){return[...e].sort((n,i)=>{let a=l1e(t.get(n)??[]),s=l1e(t.get(i)??[]);return a===s?rut(n,i,r):isFinite(a)?isFinite(s)?a-s:-1:1})}function h1e(e,t,r,n,i,a){let s=Hm(e),l=Hm(t),u=tut(t,s,r,n);if(!i||!a||a.length===0)return yB(t,u,l);let h=new Map;for(let p of t){let m=i(p),g=h.get(m)??[];g.push(p),h.set(m,g)}let d=[];for(let p of a){let m=h.get(p);if(!m||m.length===0)continue;let g=yB(m,u,l);d.push(...g)}let f=h.get(null);if(f&&f.length>0){let p=yB(f,u,l);for(let m of p){let g=c1e(u.get(m)??[]),y=d.length;if(isFinite(g))for(let[v,x]of d.entries()){let b=c1e(u.get(x)??[]);if(g<b){y=v;break}}d.splice(y,0,m)}}return d}function d1e(e,t,r,n,i){let a=[...t],s=new Set(e),l=new Set(t),u=n?new Set(n):null,h=r.filter(y=>s.has(y.src)&&l.has(y.dst)),d=u?r.filter(y=>l.has(y.src)&&u.has(y.dst)):void 0,f=o(y=>{let v=u1e(e,y,h);return d&&n&&(v+=u1e(y,n,d)),v},"crossingScore"),p=i?new Map:null;if(i&&p)for(let y of t)p.set(y,i(y));let m=!0,g=f(a);for(;m;){m=!1;for(let y=0;y+1<a.length;y++){if(p){let b=p.get(a[y]),T=p.get(a[y+1]);if(b!==T)continue}let v=g;[a[y],a[y+1]]=[a[y+1],a[y]];let x=f(a);x<v?(g=x,m=!0):[a[y],a[y+1]]=[a[y+1],a[y]]}}return a}function f1e(e,t,r){let n=e.layers.map(l=>[...l]),i=t.edges,a=cs(t),s=k5(t,r?.laneOrder);for(let l=0;l<3;l++){for(let u=1;u<n.length;u++)n[u]=h1e(n[u-1],n[u],i,"down",a,s),n[u]=d1e(n[u-1],n[u],i,n[u+1],a);for(let u=n.length-2;u>=0;u--)n[u]=h1e(n[u+1],n[u],i,"up",a,s),n[u]=d1e(n[u+1],n[u],i,n[u-1],a)}return{layers:n}}var p1e=F(()=>{"use strict";yu();Dh();o(l1e,"median");o(c1e,"barycenter");o(tut,"neighborPositionsFor");o(rut,"currentOrderTieBreak");o(u1e,"countCrossingsBetweenAdjacent");o(yB,"sortByHeuristic");o(h1e,"reorderLayer");o(d1e,"transposeImprove");o(f1e,"orderLayers")});function m1e(e,t,r){let n=r?.layerGap??pB.DEFAULT_LAYER_GAP,i=r?.nodeGap??pB.DEFAULT_NODE_GAP,a=r?.laneGap??i*2,s=r?.direction??"TB",l=s==="LR"||s==="RL",u=e.layers,h=Object.create(null),d=Object.create(null),f=o(N=>t.nodeById.get(N),"getNode"),p=o(N=>f(N)?.width??0,"getWidth"),m=o(N=>f(N)?.height??0,"getHeight"),g=cs(t),y=k5(t,r?.laneOrder),v=u.map(N=>N.reduce((I,_)=>Math.max(I,m(_)),0)),x=[];if(l)for(let N=0;N+1<u.length;N++){let I=u[N].reduce((O,$)=>Math.max(O,p($)),0),_=u[N+1].reduce((O,$)=>Math.max(O,p($)),0),A=v[N],M=v[N+1],D=A/2+M/2,P=(I+_)/2,B=Math.max(0,P-D-n);x.push(B)}let b=new Set;for(let N of u)for(let I of N)b.add(g(I));let T=b.has(null),k=y.filter(N=>b.has(N)),C=[...T?[null]:[],...k],w=Object.create(null);for(let N of k)w[N]=0;T&&(w.null=0);for(let N of u){let I=Object.create(null),_=[];for(let A of N){let M=g(A);M===null?_.push(A):(I[M]||=[]).push(A)}for(let[A,M]of Object.entries(I)){let D=M.reduce((P,B)=>P+p(B),0)+i*Math.max(0,M.length-1);w[A]=Math.max(w[A]??0,D)}if(T&&_.length){let A=_.reduce((M,D)=>M+p(D),0)+i*Math.max(0,_.length-1);w.null=Math.max(w.null??0,A)}}let S=new Map;{let N=C.map(A=>(A===null?w.null:w[A])??0),_=-(N.reduce((A,M)=>A+M,0)+a*Math.max(0,C.length-1))/2;for(let A=0;A<C.length;A++){let M=C[A],D=N[A]??0,P=_+D/2;S.set(M,P),_+=D,A<C.length-1&&(_+=a)}}let R=0;for(let[N,I]of u.entries()){let _=v[N]??0,A=new Map;for(let D of I){let P=g(D),B=A.get(P)??[];B.push(D),A.set(P,B)}for(let D of C){let P=A.get(D)??[];if(P.length===0)continue;let B=S.get(D);if(P.length===1){let O=P[0];h[O]=B,d[O]=R+_/2}else{let O=P.map(G=>p(G)),$=O.reduce((G,z)=>G+z,0)+i*(P.length-1),V=B-$/2;for(let[G,z]of P.entries()){let W=O[G];h[z]=V+W/2,d[z]=R+_/2,V+=W+i}}}let M=x[N]??0;R+=_+n+M}let L=new Map;for(let N of t.edges){let I=N.ref.id;L.has(I)||L.set(I,[]),L.get(I).push(N)}for(let[,N]of L){if(N.length===0)continue;let I=N[0].ref,_=I.start,A=I.end;if(_==null||A==null)continue;let M=Math.round(((h[_]??0)+(h[A]??0))/2),D=new Set;for(let P of N)D.add(P.src),D.add(P.dst);for(let P of D){if(P===_||P===A)continue;t.nodeById.get(P)?.isDummy&&(h[P]=M)}}return{x:h,y:d}}var g1e=F(()=>{"use strict";C1();Dh();o(m1e,"assignCoordinates")});function nut(e){let t=2166136261;for(let r=0;r<e.length;r++)t^=e.charCodeAt(r),t=Math.imul(t,16777619);return t>>>0}function iut(e){let t=e>>>0;return()=>{t+=1831565813;let r=t;return r=Math.imul(r^r>>>15,r|1),r^=r+Math.imul(r^r>>>7,r|61),((r^r>>>14)>>>0)/4294967296}}function aut(e,t){let r=[...e],n=iut(t);for(let i=r.length-1;i>0;i--){let a=Math.floor(n()*(i+1));[r[i],r[a]]=[r[a],r[i]]}return r}function sut(e,t){let r=0;for(let[n,i]of e.entries())r+=Math.abs(n-(t.get(i)??n));return r}function y1e(e,t){let r=new Map;for(let[i,a]of e.entries())r.set(a,i);let n=0;for(let{a:i,b:a,weight:s}of t){let l=r.get(i),u=r.get(a);l==null||u==null||(n+=s*Math.abs(l-u))}return n}function out(e){let t=w5(e);if(t.length<2)return[];let r=new Map(t.map((a,s)=>[a,s])),n=cs(e),i=new Map;for(let a of e.layout.edges??[]){if(a.isLayoutOnly)continue;let s=typeof a.start=="string"?a.start:void 0,l=typeof a.end=="string"?a.end:void 0;if(!s||!l||!e.nodeById.has(s)||!e.nodeById.has(l))continue;let u=n(s),h=n(l);if(!u||!h||u===h)continue;let d=r.get(u),f=r.get(h);if(d==null||f==null)continue;let[p,m]=d<=f?[u,h]:[h,u],g=`${p}\0${m}`,y=i.get(g);y?y.weight++:i.set(g,{a:p,b:m,weight:1})}return[...i.values()]}function v1e(e,t,r){let n=[...e],i=y1e(n,t),a=!0,s=0,l=Math.max(1,n.length);for(;a&&s<l;){a=!1,s++;for(let u=0;u+1<n.length;u++){[n[u],n[u+1]]=[n[u+1],n[u]];let h=y1e(n,t);h<i?(i=h,a=!0):[n[u],n[u+1]]=[n[u+1],n[u]]}}return{order:n,cost:i,sourceDistance:sut(n,r)}}function lut(e,t){return e.cost!==t.cost?e.cost<t.cost:e.sourceDistance<t.sourceDistance}function cut(e,t,r){let n=[...t].sort((i,a)=>i.a===a.a?i.b.localeCompare(a.b):i.a.localeCompare(a.a)).map(({a:i,b:a,weight:s})=>`${i}:${a}:${s}`).join("|");return nut(`${e.join("|")}#${n}#${r}`)}function x1e(e,t={}){let r=w5(e);if(r.length<2)return r;let n=out(e);if(n.length===0)return r;let i=new Map(r.map((l,u)=>[l,u])),a=v1e(r,n,i),s=Math.max(0,t.restarts??vB);for(let l=0;l<s;l++){let u=cut(r,n,l),h=aut(r,u),d=v1e(h,n,i);lut(d,a)&&(a=d)}return a.order}var vB,b1e=F(()=>{"use strict";Dh();vB=8;o(nut,"hashString");o(iut,"mulberry32");o(aut,"deterministicShuffle");o(sut,"sourceDistance");o(y1e,"laneArrangementCost");o(out,"buildWeightedLaneEdges");o(v1e,"greedySwitch");o(lut,"isBetterCandidate");o(cut,"seedForRestart");o(x1e,"optimizeTopLaneOrder")});function T1e(e,t){let r=t?.ignoreCrossLaneEdges??!0,n=t?.optimizeRanksByCrossings??!0,i=po(e),a=t?.automaticLaneOrdering?x1e(i,{restarts:vB}):void 0,s=$ye(i),l=s.acyclic,u=r?i1e(l,{compactSingleInput:t?.compactSingleInput??Um.DEFAULT_COMPACT_SINGLE_INPUT,ignoreCrossLaneEdges:!0,direction:t?.direction}):r1e(l,{compactSingleInput:t?.compactSingleInput??Um.DEFAULT_COMPACT_SINGLE_INPUT,ignoreCrossLaneEdges:!1,optimizeRanksByCrossings:n}),{layering:h,graphWithDummies:d}=s1e(u,l),f=f1e(h,d,{laneOrder:a}),p=m1e(f,d,{layerGap:t?.layerGap,nodeGap:t?.nodeGap,direction:t?.direction,laneOrder:a});return{acyclic:l,reversed:s.reversed,layering:h,ordered:f,coordinates:p}}var C1e=F(()=>{"use strict";yu();Fye();n1e();a1e();o1e();p1e();g1e();C1();b1e();o(T1e,"sugiyamaLayout")});function w1e(e,t,r){let n=e.x??0,i=e.y??0,a=t.x-n,s=t.y-i,l=Math.abs(a),u=Math.abs(s);return l<Xr&&u<Xr?r:u>Xr&&u*3>=l?s>0?"bottom":"top":l>Xr?a>0?"right":"left":r}function k1e(e,t){return Math.abs(e.to-t.from)<Xr||Math.abs(e.to-t.to)<Xr?e.to:e.from}function k1(e,t){return e.orient==="vertical"?{x:e.coord,y:t}:{x:t,y:e.coord}}function S1e(e,t){let r=e.nodes??[],n=e.edges??[],i=[];for(let re of n)re.isLayoutOnly||i.push({...re,__originalEdge:re});let a=new Map,s=new Map,l=[],u=t==="LR";for(let re of r)a.set(re.id,re);let h=r.filter(re=>re.isGroup&&!re.parentId);for(let re of h){let J={id:re.id},se=o(ge=>{s.set(ge.id,J),r.filter(Te=>Te.parentId===ge.id).forEach(se)},"assignLane");se(re)}let d=r.filter(re=>!re.isGroup&&!re.isEdgeLabel).map(re=>{let J=re.width??10,se=re.height??10,ge=re.x??0,Te=re.y??0,we=uut;return{nodeId:re.id,minX:ge-J/2-we,maxX:ge+J/2+we,minY:Te-se/2-we,maxY:Te+se/2+we,visualXHalfExtent:u?se/2+we:J/2+we}}),f=o((re,J,se,ge)=>{let Te=l.find(we=>we.orientation===re&&Math.abs(we.coord-J)<1);return Te||(Te={id:`pipe-${re}-${J.toFixed(0)}`,orientation:re,coord:J,spanMin:se,spanMax:ge,tracks:[]},l.push(Te)),Te.spanMin=Math.min(Te.spanMin,se),Te.spanMax=Math.max(Te.spanMax,ge),Te},"getOrAddPipe"),p=o((re,J)=>{let se=re.width??10,ge=re.height??10,Te=re.x??0,we=re.y??0;switch(J){case"top":return{x:Te,y:we-ge/2};case"bottom":return{x:Te,y:we+ge/2};case"left":return{x:Te-se/2,y:we};case"right":return{x:Te+se/2,y:we}}},"portForSide"),m=o((re,J,se)=>p(re,w1e(re,J,se?"bottom":"top")),"getOrthogonalPort"),g=[],y=[],v=new Set,x=1e3,b=o((re,J,se)=>{if(g.length===0)return 0;let ge=Math.abs(J.y-se.y)<Xr,Te=Math.abs(J.x-se.x)<Xr;if(!ge&&!Te)return 0;let we=0;if(ge){let Me=J.y,ve=Math.min(J.x,se.x)-Xr,ne=Math.max(J.x,se.x)+Xr;if(ne<=ve)return 0;for(let q of g)q.edgeIndex===re||q.orientation!=="vertical"||q.pipe.coord<ve||q.pipe.coord>ne||q.from-Xr<=Me&&q.to+Xr>=Me&&(we+=x)}else if(Te){let Me=J.x,ve=Math.min(J.y,se.y)-Xr,ne=Math.max(J.y,se.y)+Xr;if(ne<=ve)return 0;for(let q of g)q.edgeIndex===re||q.orientation!=="horizontal"||q.pipe.coord<ve||q.pipe.coord>ne||q.from-Xr<=Me&&q.to+Xr>=Me&&(we+=x)}return we},"crossingPenalty"),T=i.map((re,J)=>{if(!re.start||!re.end)return{idx:J,crossLane:0,dx:0,dy:0};let se=a.get(re.start),ge=a.get(re.end),Te=s.get(re.start),we=s.get(re.end),Me=Te&&we&&Te.id!==we.id?1:0,ve=se&&ge?Math.abs((ge.x??0)-(se.x??0)):0,ne=se&&ge?Math.abs((ge.y??0)-(se.y??0)):0;return{idx:J,crossLane:Me,dx:ve,dy:ne}}).sort((re,J)=>{if(re.crossLane!==J.crossLane)return J.crossLane-re.crossLane;let se=re.dx+re.dy,ge=J.dx+J.dy;return Math.abs(se-ge)>1?se-ge:re.idx-J.idx}).map(re=>re.idx),k=o((re,J,se,ge)=>{let Te=Math.min(re.x,J.x),we=Math.max(re.x,J.x),Me=Math.min(re.y,J.y),ve=Math.max(re.y,J.y);return!!d.find(q=>se&&q.nodeId===se||ge&&q.nodeId===ge?!1:Math.abs(re.x-J.x)>Xr?q.minY<re.y&&q.maxY>re.y&&q.maxX>Te&&q.minX<we:q.minX<re.x&&q.maxX>re.x&&q.maxY>Me&&q.minY<ve)},"isSegmentBlocked"),C=new Map,w=new Map;for(let re of i)!re.start||!re.end||re.start===re.end||(w.set(re.start,(w.get(re.start)??0)+1),w.set(re.end,(w.get(re.end)??0)+1));let S=o((re,J)=>w1e(re,J,"bottom"),"determineSide"),R=new Map;for(let[re,J]of i.entries()){if(!J.start||!J.end||J.start===J.end||J.points&&J.points.length>0)continue;let se=a.get(J.start),ge=a.get(J.end);if(!se||!ge)continue;let Te=(ge.x??0)-(se.x??0),we=(ge.y??0)-(se.y??0);R.set(re,{edgeIdx:re,srcId:J.start,dstId:J.end,srcSide:S(se,{x:ge.x??0,y:ge.y??0}),dstSide:S(ge,{x:se.x??0,y:se.y??0}),absDx:Math.abs(Te),absDy:Math.abs(we),dxSign:Math.sign(Te),dySign:Math.sign(we)})}let L=o(re=>re.srcSide==="top"||re.srcSide==="bottom"?re.absDx===0?1/0:re.absDy/re.absDx:re.absDy===0?1/0:re.absDx/re.absDy,"preferenceStrength"),N=o(re=>re.srcSide==="top"||re.srcSide==="bottom"?re.dxSign>=0?"right":"left":re.dySign>=0?"bottom":"top","secondarySide"),I=new Map;for(let re of R.values()){let J=`${re.srcId}:${re.srcSide}`;I.has(J)||I.set(J,[]),I.get(J).push(re)}let _=new Map,A=o((re,J)=>`${re}:${J}`,"loadKey");for(let re of R.values())_.set(A(re.srcId,re.srcSide),(_.get(A(re.srcId,re.srcSide))??0)+1),_.set(A(re.dstId,re.dstSide),(_.get(A(re.dstId,re.dstSide))??0)+1);for(let re of I.values())if(!(re.length<2)){re.sort((J,se)=>{let ge=L(J),Te=L(se);return Math.abs(ge-Te)>1e-9?Te-ge:J.edgeIdx-se.edgeIdx});for(let J=1;J<re.length;J++){let se=re[J],ge=N(se),Te=_.get(A(se.srcId,se.srcSide))??0,we=_.get(A(se.srcId,ge))??0;we>=Te||(_.set(A(se.srcId,se.srcSide),Te-1),_.set(A(se.srcId,ge),we+1),se.srcSide=ge)}}let M=o(re=>{let J=re?.shape;return J==="question"||J==="diamond"},"isDiamondNode"),D=new Map;for(let re of R.values())D.has(re.dstId)||D.set(re.dstId,new Set),D.get(re.dstId).add(re.dstSide);for(let re of R.values()){if(!M(a.get(re.srcId)))continue;let J=D.get(re.srcId);if(!J?.has(re.srcSide))continue;let se=N(re);if(J.has(se)||(_.get(A(re.srcId,se))??0)>0)continue;let ge=_.get(A(re.srcId,re.srcSide))??0;_.set(A(re.srcId,re.srcSide),Math.max(0,ge-1)),_.set(A(re.srcId,se),1),re.srcSide=se}for(let re of R.values()){let{edgeIdx:J,srcId:se,dstId:ge,srcSide:Te,dstSide:we}=re,Me=a.get(se),ve=a.get(ge),ne=`${se}:${Te}:src`,q=Te==="top"||Te==="bottom"?ve.x??0:ve.y??0;C.has(ne)||C.set(ne,[]),C.get(ne).push({edgeIdx:J,oppositeCoord:q});let he=`${ge}:${we}:dst`,X=we==="top"||we==="bottom"?Me.x??0:Me.y??0;C.has(he)||C.set(he,[]),C.get(he).push({edgeIdx:J,oppositeCoord:X})}let P=new Map,B=8;for(let[re,J]of C){if(J.length<2)continue;J.sort((Be,Ne)=>Be.oppositeCoord-Ne.oppositeCoord);let se=re.split(":"),ge=se.slice(0,-2).join(":"),Te=se[se.length-2],we=se[se.length-1],Me=a.get(ge);if(!Me)continue;let ne=Te==="left"||Te==="right"?Me.height??10:Me.width??10,q=Me.shape,X=q==="question"||q==="diamond"?ne*.3:ne,K=Math.min(20,Math.max(B,X/(J.length+1))),_e=-(K*(J.length-1))/2;for(let[Be,Ne]of J.entries()){let He=_e+Be*K,$e=`${Ne.edgeIdx}:${we}`;P.set($e,He)}}let O=o(re=>!!i[re]?.labelNodeId,"edgeHasLabelNode"),$=o((re,J)=>re?(C.get(`${re}:${J}:src`)??[]).some(({edgeIdx:se})=>O(se))||(C.get(`${re}:${J}:dst`)??[]).some(({edgeIdx:se})=>O(se)):!1,"faceHasLabelNode"),V=o((re,J,se)=>J==="top"||J==="bottom"?{x:re.x+se,y:re.y}:{x:re.x,y:re.y+se},"applyPortOffset"),G=o((re,J,se)=>{let ge=R.get(re),Te={x:se.x??0,y:se.y??0},we={x:J.x??0,y:J.y??0},Me=ge?.srcSide??S(J,Te),ve=ge?.dstSide??S(se,we),ne=ge?p(J,ge.srcSide):m(J,Te,!0),q=ge?p(se,ge.dstSide):m(se,we,!1),he=P.get(`${re}:src`),X=P.get(`${re}:dst`);return he!==void 0&&(ne=V(ne,Me,he)),X!==void 0&&(q=V(q,ve,X)),{pSrcPort:ne,pDstPort:q,srcSide:Me,dstSide:ve}},"portsForEdge");for(let re of T){let J=i[re];if(y[re]=[],!J.start||!J.end||J.points&&J.points.length>0||J.start===J.end)continue;let se=a.get(J.start),ge=a.get(J.end);if(!se||!ge)continue;let{pSrcPort:Te,pDstPort:we,srcSide:Me,dstSide:ve}=G(re,se,ge),ne={...Te},q={...we},he=Me==="top"||Me==="bottom",X=ve==="top"||ve==="bottom";if(he){let We=Te.y>(se.y??0);ne.y=We?Te.y+Cl:Te.y-Cl}else{let We=Te.x>(se.x??0);ne.x=We?Te.x+Cl:Te.x-Cl}if(X){let We=we.y>(ge.y??0);q.y=We?we.y+Cl:we.y-Cl}else{let We=we.x>(ge.x??0);q.x=We?we.x+Cl:we.x-Cl}let fe=o((We,rt)=>{for(let yt of d)if(!rt.includes(yt.nodeId)&&We.x>yt.minX&&We.x<yt.maxX&&We.y>yt.minY&&We.y<yt.maxY)return{inside:!0,obstacle:yt};return{inside:!1}},"isPointInObstacle"),K=o((We,rt,yt,Yt,Ht)=>{if(Ht){let Er=We.y>(rt.y??0);return{x:(yt.x??0)>=We.x?Yt.maxX+Ym:Yt.minX-Ym,y:Er?Yt.maxY+w1:Yt.minY-w1,leavesPositiveSide:Er}}let pr=We.x>(rt.x??0),Hr=(yt.y??0)>=We.y;return{x:pr?Yt.maxX+Ym:Yt.minX-Ym,y:Hr?Yt.maxY+w1:Yt.minY-w1,leavesPositiveSide:pr}},"obstacleDetour"),qe=[],_e=[J.start,J.end],Be=fe(ne,_e);if(Be.inside&&Be.obstacle){let We=Be.obstacle;if(he){let rt=K(Te,se,ge,We,!0);ne.x=rt.x,ne.y=rt.y;let yt=rt.leavesPositiveSide?Math.min(We.minY-2,Te.y+Cl):Math.max(We.maxY+2,Te.y-Cl);qe=[{x:Te.x,y:yt},{x:rt.x,y:yt},{x:rt.x,y:rt.y}]}else{let rt=K(Te,se,ge,We,!1),yt=rt.leavesPositiveSide?Math.min(We.minX-2,Te.x+Cl):Math.max(We.maxX+2,Te.x-Cl);ne.x=rt.x,ne.y=rt.y,qe=[{x:yt,y:Te.y},{x:yt,y:rt.y},{x:rt.x,y:rt.y}]}}let Ne=[],He=fe(q,_e);if(He.inside&&He.obstacle){let We=He.obstacle;if(X){let rt=K(we,ge,se,We,!0);q.x=rt.x,q.y=rt.y,Ne=[{x:rt.x,y:rt.y},{x:we.x,y:rt.y}]}else{let rt=K(we,ge,se,We,!1);q.x=rt.x,q.y=rt.y,Ne=[{x:rt.x,y:rt.y},{x:rt.x,y:we.y}]}}if(qe.length===0&&Ne.length===0){let We=Ym,rt=Math.abs(ne.x-q.x)<We,yt=Math.abs(ne.y-q.y)<We,Yt=P.get(`${re}:src`)!==void 0||P.get(`${re}:dst`)!==void 0,Ht=(C.get(`${J.start??""}:${Me}:src`)?.length??0)+(C.get(`${J.start??""}:${Me}:dst`)?.length??0),pr=(C.get(`${J.end??""}:${ve}:src`)?.length??0)+(C.get(`${J.end??""}:${ve}:dst`)?.length??0),Hr=Ht>1||pr>1,Er=w.get(J.start??"")??0,kt=w.get(J.end??"")??0,Ct=Ht>1&&$(J.start,Me)||pr>1&&$(J.end,ve),Ot=Ht<=1||Er<=2,Ft=pr<=1||kt<=2;if((rt||yt)&&!Yt&&(!Hr||Hr&&!Ct&&Ot&&Ft)&&!k(Te,we,J.start,J.end)){J.points=[{...Te},{...ne},{...q},{...we}],v.add(re);let Se=yt?"horizontal":"vertical",ri=yt?Te.y:Te.x,Ie=yt?Math.min(Te.x,we.x):Math.min(Te.y,we.y),Nr=yt?Math.max(Te.x,we.x):Math.max(Te.y,we.y),Pa={id:`fast-path-${Se}-${ri.toFixed(0)}-${re}`,orientation:Se,coord:ri,spanMin:Ie,spanMax:Nr,tracks:[]};g.push({edgeIndex:re,segmentIndex:0,orientation:Se,pipe:Pa,trackIndex:0,from:Ie,to:Nr});continue}}let $e=f("vertical",ne.x,ne.y,ne.y);ne.x=$e.coord;let Xe=f("vertical",q.x,q.y,q.y);q.x=Xe.coord;let Fe=Math.min(ne.x,q.x)-50,Ke=Math.max(ne.x,q.x)+50,xe=Math.min(ne.y,q.y)-50,mt=Math.max(ne.y,q.y)+50;for(let We of d){let rt=Math.min(ne.x,q.x),yt=Math.max(ne.x,q.x),Yt=Math.min(ne.y,q.y),Ht=Math.max(ne.y,q.y);We.minX<yt&&We.maxX>rt&&We.minY<Ht&&We.maxY>Yt&&(Fe=Math.min(Fe,We.minX-S5),Ke=Math.max(Ke,We.maxX+S5),xe=Math.min(xe,We.minY-S5),mt=Math.max(mt,We.maxY+S5))}for(let We of d){if(We.maxX<Fe||We.minX>Ke||We.maxY<xe||We.minY>mt)continue;let rt=Ym;f("horizontal",We.minY-rt,Fe,Ke),f("horizontal",We.maxY+rt,Fe,Ke);let yt=w1;f("vertical",We.minX-yt,xe,mt),f("vertical",We.maxX+yt,xe,mt)}f("horizontal",ne.y,Fe,Ke),f("horizontal",q.y,Fe,Ke);let Le=l.filter(We=>We.orientation==="horizontal"&&We.coord>=xe&&We.coord<=mt),ft=l.filter(We=>We.orientation==="vertical"&&We.coord>=Fe&&We.coord<=Ke),wt=o((We,rt)=>`${We.toFixed(1)},${rt.toFixed(1)}`,"getKey"),zt=wt(ne.x,ne.y),St=wt(q.x,q.y),At=new Map,bt=new Map,me=new Map,lt=new Set,gt=[];At.set(zt,0),me.set(zt,"n"),gt.push({key:zt,f:Math.hypot(q.x-ne.x,q.y-ne.y),pt:ne}),lt.add(zt);let Ze=[],Ee=o((We,rt)=>k(We,rt,J.start,J.end),"checkSegmentBlocked"),tt={x:q.x,y:ne.y},at=Ee(ne,tt),ot=Ee(tt,q),Wt=at||ot,Bt={x:ne.x,y:q.y},qt=Ee(ne,Bt),vr=Ee(Bt,q);if(Wt?qt||vr||(Math.abs(ne.x-q.x)<Xr?Ze=[ne,q]:Ze=[ne,Bt,q]):Math.abs(ne.y-q.y)<Xr||Math.abs(ne.x-q.x)<Xr?Ze=[ne,q]:Ze=[ne,tt,q],Ze.length===0)for(;gt.length>0;){gt.sort((kt,Ct)=>kt.f-Ct.f);let We=gt.shift();if(lt.delete(We.key),We.key===St){let kt=St,Ct=q;for(Ze=[Ct];bt.has(kt);){let Ot=bt.get(kt);Ze.unshift(Ot),Ct=Ot,kt=wt(Ot.x,Ot.y)}break}let rt=We.pt.x,yt=We.pt.y,Yt=ft.sort((kt,Ct)=>kt.coord-Ct.coord),Ht=Yt.findIndex(kt=>Math.abs(kt.coord-rt)<1),pr=Le.sort((kt,Ct)=>kt.coord-Ct.coord),Hr=pr.findIndex(kt=>Math.abs(kt.coord-yt)<1),Er=[];Ht>0&&Er.push({x:Yt[Ht-1].coord,y:yt}),Ht>=0&&Ht<Yt.length-1&&Er.push({x:Yt[Ht+1].coord,y:yt}),Hr>0&&Er.push({x:rt,y:pr[Hr-1].coord}),Hr>=0&&Hr<pr.length-1&&Er.push({x:rt,y:pr[Hr+1].coord});for(let kt of Er){let Ct=Math.min(rt,kt.x),Ot=Math.max(rt,kt.x),Ft=Math.min(yt,kt.y),Rt=Math.max(yt,kt.y);if(d.some(js=>js.nodeId===J.start||js.nodeId===J.end?!1:Ct!==Ot?js.minY<yt&&js.maxY>yt&&js.maxX>Ct&&js.minX<Ot:js.minX<rt&&js.maxX>rt&&js.maxY>Ft&&js.minY<Rt))continue;let Se=wt(kt.x,kt.y),ri=Math.abs(kt.x-rt)+Math.abs(kt.y-yt),Ie=b(re,We.pt,kt),Nr=0,Pa=q.x-ne.x,Xu=q.y-ne.y,B0=kt.x-rt,$0=kt.y-yt;(Xu>10&&$0<-5||Xu<-10&&$0>5)&&(Nr=Math.abs($0)*100),(Pa>10&&B0<-5||Pa<-10&&B0>5)&&(Nr+=Math.abs(B0)*50);let dk=0,Pi=me.get(We.key)??"n",Mc=Math.abs(B0)>Xr?"h":"v";Pi!=="n"&&Pi!==Mc&&(dk=50);let Px=ri+Ie+Nr+dk,bd=(At.get(We.key)??1/0)+Px,fk=Math.abs(q.x-kt.x)+Math.abs(q.y-kt.y);if(bd<(At.get(Se)??1/0))if(bt.set(Se,We.pt),At.set(Se,bd),me.set(Se,Mc),!lt.has(Se))gt.push({key:Se,f:bd+fk,pt:kt}),lt.add(Se);else{let js=gt.findIndex(RD=>RD.key===Se);js!==-1&&(gt[js].f=bd+fk)}}}if(Ze.length===0&&(Ze=[ne,{x:ne.x,y:q.y},q]),Ze.length>4){let We=Ze[0],rt=Ze[Ze.length-1],yt=Math.min(We.x,rt.x),Yt=Math.max(We.x,rt.x),Ht=Math.min(We.y,rt.y),pr=Math.max(We.y,rt.y);for(let Ft of Ze)yt=Math.min(yt,Ft.x),Yt=Math.max(Yt,Ft.x),Ht=Math.min(Ht,Ft.y),pr=Math.max(pr,Ft.y);let Hr=Yt>Math.max(We.x,rt.x),Er=yt<Math.min(We.x,rt.x);if(u){let Ft=w1;if(Hr){let Rt=Math.max(We.x,rt.x),gr=Math.min(We.y,rt.y),Se=Math.max(We.y,rt.y),ri=d.filter(Ie=>Ie.minX<Rt&&Ie.maxX>Rt&&Ie.minY<Se&&Ie.maxY>gr);if(ri.length>0){let Ie=Math.max(We.x,rt.x);for(let Nr of ri){let Pa=(Nr.minX+Nr.maxX)/2;if(Nr.visualXHalfExtent===void 0||isNaN(Nr.visualXHalfExtent))continue;let Xu=Pa+Nr.visualXHalfExtent+Ft;Ie=Math.max(Ie,Xu)}isNaN(Ie)||(Yt=Ie)}}if(Er){let Rt=d.filter(gr=>gr.minX<Math.min(We.x,rt.x)+Ft&&gr.minY<Math.max(We.y,rt.y)&&gr.maxY>Math.min(We.y,rt.y));if(Rt.length>0){let gr=Math.min(We.x,rt.x);for(let Se of Rt){let Ie=(Se.minX+Se.maxX)/2-Se.visualXHalfExtent-Ft;gr=Math.min(gr,Ie)}yt=gr}}}let kt=o(Ft=>{let Rt=rt.y>We.y,gr=d.filter(Ie=>{let Nr=Math.min(We.x,rt.x)<Ie.maxX&&Math.max(We.x,rt.x)>Ie.minX,Pa=Math.min(We.y,rt.y)<Ie.maxY&&Math.max(We.y,rt.y)>Ie.minY;return Nr&&Pa}),Se=gr;if(u&&gr.length>0){let Ie=gr.filter(Nr=>Nr.minX<Ft&&Nr.maxX>Ft);Ie.length>0&&(Se=Ie)}if(Se.length===0)return rt.y;let ri=Ym;if(Rt){let Nr=Math.max(...Se.map(Pa=>Pa.maxY))+ri;if(Nr<rt.y-Xr)return Nr}else{let Nr=Math.min(...Se.map(Pa=>Pa.minY))-ri;if(Nr>rt.y+Xr)return Nr}return rt.y},"findBestReturnY"),Ct=o(Ft=>{let Rt=kt(Ft),gr={x:Ft,y:We.y},Se={x:Ft,y:Rt},ri={x:rt.x,y:Rt},Ie=Ee(We,gr),Nr=Ee(gr,Se),Pa=Ee(Se,ri),Xu=Rt!==rt.y?Ee(ri,rt):!1;return!Ie&&!Nr&&!Pa&&!Xu?Math.abs(Rt-rt.y)<Xr?[We,gr,Se,rt]:[We,gr,Se,ri,rt]:null},"trySimplifyWithDetourX"),Ot=Hr&&!Er?Ct(Yt):Er&&!Hr?Ct(yt):null;Ot&&(Ze=Ot)}let De=[Te,...qe,...Ze,...Ne.reverse(),we];if(De.length>=3){let We=De[De.length-1],rt=De[De.length-2],yt=De[De.length-3],Yt=Math.abs(yt.y-rt.y)<Xr&&Math.abs(rt.y-We.y)<Xr,Ht=Math.abs(yt.x-rt.x)<Xr&&Math.abs(rt.x-We.x)<Xr;if(Yt){let pr=Math.sign(rt.x-yt.x),Hr=Math.sign(We.x-yt.x);pr!==0&&pr===Hr&&Math.abs(rt.x-yt.x)>Math.abs(We.x-yt.x)&&De.splice(-2,1)}else if(Ht){let pr=Math.sign(rt.y-yt.y),Hr=Math.sign(We.y-yt.y);pr!==0&&pr===Hr&&Math.abs(rt.y-yt.y)>Math.abs(We.y-yt.y)&&De.splice(-2,1)}}let it=[De[0]];for(let We=1;We<De.length-1;We++){if(We===1){it.push(De[We]);continue}let rt=it[it.length-1],yt=De[We],Yt=De[We+1];if(Math.abs(rt.y-yt.y)<Xr&&Math.abs(yt.y-Yt.y)<Xr){let Ht=yt.x>rt.x,pr=Yt.x>yt.x;if(Ht!==pr){it.push(yt);continue}continue}if(Math.abs(rt.x-yt.x)<Xr&&Math.abs(yt.x-Yt.x)<Xr){let Ht=yt.y>rt.y,pr=Yt.y>yt.y;if(Ht!==pr){it.push(yt);continue}continue}it.push(yt)}it.push(De[De.length-1]);for(let We=0;We<it.length-1;We++){let rt=it[We],yt=it[We+1],Yt=Math.abs(rt.x-yt.x)<Xr?"vertical":"horizontal",Ht=Yt==="vertical"?rt.x:rt.y,pr=Yt==="vertical"?Math.min(rt.y,yt.y):Math.min(rt.x,yt.x),Hr=Yt==="vertical"?Math.max(rt.y,yt.y):Math.max(rt.x,yt.x),Er=f(Yt,Ht,pr,Hr),kt={edgeIndex:re,segmentIndex:We,orientation:Yt,pipe:Er,trackIndex:0,from:pr,to:Hr};g.push(kt),y[re].push(g.length-1),Er.tracks[0]||(Er.tracks[0]={index:0,coord:Er.coord,segments:[]}),Er.tracks[0].segments.push({edgeIndex:re,segmentIndex:We,from:pr,to:Hr})}}let z=o((re,J)=>re.from<J.to&&J.from<re.to,"segmentsOverlap"),W=o((re,J,se,ge)=>{let Te=!ge.segments.some(Me=>(Me.edgeIndex!==J.edgeIndex||Me.segmentIndex!==J.segmentIndex)&&z(Me,re)),we=!se.segments.some(Me=>(Me.edgeIndex!==re.edgeIndex||Me.segmentIndex!==re.segmentIndex)&&z(Me,J));return Te&&we?(re.trackIndex=ge.index,J.trackIndex=se.index,se.segments=[...se.segments.filter(Me=>Me.edgeIndex!==re.edgeIndex||Me.segmentIndex!==re.segmentIndex),{edgeIndex:J.edgeIndex,segmentIndex:J.segmentIndex,from:J.from,to:J.to}],ge.segments=[...ge.segments.filter(Me=>Me.edgeIndex!==J.edgeIndex||Me.segmentIndex!==J.segmentIndex),{edgeIndex:re.edgeIndex,segmentIndex:re.segmentIndex,from:re.from,to:re.to}],!0):!1},"trySwapSegmentsAcrossTracks"),H=o(re=>{let J=re.tracks.length;return re.tracks[J]={index:J,coord:re.coord,segments:[]},J},"createNewTrack"),j=o((re,J)=>{let se=re.pipe.tracks[re.trackIndex];se.segments=se.segments.filter(Te=>Te.edgeIndex!==re.edgeIndex||Te.segmentIndex!==re.segmentIndex),re.trackIndex=J,re.pipe.tracks[J].segments.push({edgeIndex:re.edgeIndex,segmentIndex:re.segmentIndex,from:re.from,to:re.to})},"moveSegmentToTrack"),Q=o((re,J)=>{let se=y[re.edgeIndex];for(let ge of se){let Te=g[ge];Te.pipe===re.pipe&&j(Te,J)}},"moveSegmentChainToTrack"),U=o(re=>{let J=y[re.edgeIndex],se=J.indexOf(g.indexOf(re)),ge=[];return se>0&&ge.push(g[J[se-1]]),se<J.length-1&&ge.push(g[J[se+1]]),ge},"getAdjacentSegmentsAlongEdge"),oe=o((re,J)=>{if(re.orientation===J.orientation)return!1;let se=re.orientation==="horizontal"?re:J,ge=re.orientation==="horizontal"?J:re;return ge.pipe.coord>se.from&&ge.pipe.coord<se.to&&se.pipe.coord>ge.from&&se.pipe.coord<ge.to},"haveAnyCrossing"),te=o((re,J)=>{for(let se of re.tracks)if(!se.segments.some(Te=>(Te.edgeIndex!==J.edgeIndex||Te.segmentIndex!==J.segmentIndex)&&z(Te,J)))return se.index;return-1},"findAvailableTrack"),le=o((re,J)=>{if(re.trackIndex===J.trackIndex)return z(re,J);let se=U(re),ge=U(J);return se.some(Te=>ge.some(we=>oe(Te,we)))},"segmentsConflict"),ie=o((re,J,se)=>{if(W(re,J,re.pipe.tracks[re.trackIndex],J.pipe.tracks[J.trackIndex]))return;let ge=te(re.pipe,J);se(J,ge!==-1?ge:H(re.pipe))},"resolveTrackConflict"),ae=o(re=>{let J=0;for(let se=0;se<re.length;se++)for(let ge=se+1;ge<re.length;ge++){let Te=re[se],we=re[ge];Te.pipe===we.pipe&&le(Te,we)&&(J++,ie(Te,we,Q))}return J},"resolveHandleConflicts"),Re=new Map,be=o(re=>{if(Re.has(re))return Re.get(re);let J=y[re];if(J.length===0){let ve={dest:0,deviation:0,base:0,delta:0};return Re.set(re,ve),ve}let ge=g[J[0]].pipe.coord,Te=ge;for(let ve=1;ve<J.length;ve++){let ne=g[J[ve]];if(ne.orientation==="horizontal"){let q=ne.from,he=ne.to;Te=Math.abs(q-ge)>Math.abs(he-ge)?q:he;break}}let we=Math.abs(Te-ge),Me={dest:Te,deviation:we,base:ge,delta:Te-ge};return Re.set(re,Me),Me},"getDestInfo"),Pe=o(()=>{let re=0,J=new Map;for(let[ge,Te]of i.entries())y[ge].length!==0&&Te.start&&(J.has(Te.start)||J.set(Te.start,[]),J.get(Te.start).push(ge));let se=o(ge=>{let Te=i[ge];if(!Te.start||!Te.end)return 0;let we=a.get(Te.start),Me=a.get(Te.end);if(!we||!Me)return 0;let ve=(Me.x??0)-(we.x??0),ne=(Me.y??0)-(we.y??0);return Math.abs(ve)+Math.abs(ne)},"getEdgeDistance");for(let ge of J.values()){ge.sort((we,Me)=>{let ve=be(we),ne=be(Me);if(Math.abs(ve.deviation-ne.deviation)>1)return ve.deviation-ne.deviation;if(Math.abs(ve.dest-ne.dest)>1)return ve.dest-ne.dest;let q=se(we),he=se(Me);if(Math.abs(q-he)>1)return he-q;let X=y[we].length,fe=y[Me].length;if(X!==fe)return X-fe;if(X===1){let K=y[we][0],qe=y[Me][0];if(g[K]&&g[qe]){let _e=g[K],Be=g[qe],Ne=Math.abs(_e.to-_e.from),He=Math.abs(Be.to-Be.from);if(Math.abs(Ne-He)>1)return Ne-He}}return 0});let Te=ge.map(we=>g[y[we][0]]);re+=ae(Te)}return re},"fixSourceHandleCrossings"),Ge=o(()=>{let re=0,J=new Map;for(let[se,ge]of i.entries())y[se].length!==0&&ge.end&&(J.has(ge.end)||J.set(ge.end,[]),J.get(ge.end).push(se));for(let se of J.values()){se.sort((Te,we)=>{let Me=o(q=>{let he=y[q];if(he.length<2)return 0;let X=g[he[he.length-2]];return Math.abs(X.to-X.from)},"getDist"),ve=Me(Te),ne=Me(we);return Math.abs(ve-ne)>.1?ve-ne:Te-we});let ge=se.map(Te=>g[y[Te][y[Te].length-1]]);re+=ae(ge)}return re},"fixTargetHandleCrossings"),Oe=o(()=>{let re=0;for(let J of l){let se=[];for(let ge of J.tracks)for(let Te of ge.segments){let we=y[Te.edgeIndex].find(Me=>g[Me].segmentIndex===Te.segmentIndex);we!==void 0&&se.push(g[we])}se.sort((ge,Te)=>ge.edgeIndex-Te.edgeIndex||ge.segmentIndex-Te.segmentIndex);for(let ge=0;ge<se.length;ge++)for(let Te=ge+1;Te<se.length;Te++){let we=se[ge],Me=se[Te];le(we,Me)&&(re++,ie(we,Me,j))}}return re},"fixPipeCrossings"),ue=0,ye=10;for(;ue<ye;){let re=0;if(re+=Pe(),re+=Ge(),re+=Oe(),re===0)break;ue++}let ke=new Map;for(let re of l){let J=[];re.tracks.forEach(ge=>{ge.segments.forEach(Te=>{J.push({edgeIndex:Te.edgeIndex,segmentIndex:Te.segmentIndex,trackIndex:ge.index,from:Te.from,to:Te.to})})}),J.sort((ge,Te)=>ge.from-Te.from);let se=[];if(J.length>0){let ge=[J[0]],Te=J[0].to;for(let we=1;we<J.length;we++){let Me=J[we];Me.from<Te?(ge.push(Me),Te=Math.max(Te,Me.to)):(se.push(ge),ge=[Me],Te=Me.to)}se.push(ge)}for(let ge of se){let Te=new Set;ge.forEach(K=>Te.add(K.trackIndex));let we=new Map;ge.forEach(K=>{let qe=be(K.edgeIndex);we.set(K.trackIndex,(we.get(K.trackIndex)??0)+qe.delta)});let Me=[...Te].filter(K=>(we.get(K)??0)<-1),ve=[...Te].filter(K=>(we.get(K)??0)>1),ne=[...Te].filter(K=>Math.abs(we.get(K)??0)<=1);Me.sort((K,qe)=>(we.get(qe)??0)-(we.get(K)??0)),ve.sort((K,qe)=>(we.get(K)??0)-(we.get(qe)??0));let q=o((K,qe)=>{ge.filter(_e=>_e.trackIndex===K).forEach(_e=>{let Be=v.has(_e.edgeIndex)?re.coord:qe;ke.set(`${_e.edgeIndex}-${_e.segmentIndex}`,Be)})},"assignCoord"),he=0;for(let K of Me)he++,q(K,re.coord-he*xB);if(ne.length===0&&Te.size>0){let K=[...Te].sort((Be,Ne)=>Math.abs(we.get(Be)??0)-Math.abs(we.get(Ne)??0))[0],qe=Me.indexOf(K);qe!==-1&&Me.splice(qe,1);let _e=ve.indexOf(K);_e!==-1&&ve.splice(_e,1),ne.push(K)}let X=0;for(let K of ne){if(X===0)q(K,re.coord);else{let qe=X%2===1?1:-1,_e=Math.ceil(X/2);q(K,re.coord+qe*_e*xB*.5)}X++}let fe=0;for(let K of ve)fe++,q(K,re.coord+fe*xB)}}for(let[re,J]of i.entries()){let se=y[re]??[];if(se.length===0)continue;let ge=[],Te=a.get(J.start),we=a.get(J.end),{pSrcPort:Me,pDstPort:ve}=G(re,Te,we),ne=se.map(X=>{let fe=g[X],K=ke.get(`${fe.edgeIndex}-${fe.segmentIndex}`)??fe.pipe.coord;return{orient:fe.orientation,coord:K,from:fe.from,to:fe.to}});ge.push(Me);for(let X=0;X<ne.length;X++){let fe=ne[X],K=ge[ge.length-1],qe=fe.orient==="vertical"?K.y:K.x,_e=fe.orient==="vertical"?K.x:K.y,Be=ne[X+1],Ne=X<ne.length-1;if(Math.abs(_e-fe.coord)>Xr&&ge.push(k1(fe,qe)),Ne&&Be.orient===fe.orient)if(Math.abs(fe.coord-Be.coord)>Xr){let He=fe.orient==="vertical"?(qe+Be.from)/2:k1e(fe,Be);ge.push(k1(fe,He),k1(Be,He))}else(X===0||X===ne.length-2)&&ge.push(k1(fe,k1e(fe,Be)));else if(Ne)ge.push(k1(fe,Be.coord));else{let He=Math.abs(fe.from-qe)<Math.abs(fe.to-qe)?fe.to:fe.from;ge.push(k1(fe,He))}}let q=ge[ge.length-1];(Math.abs(q.x-ve.x)>Xr||Math.abs(q.y-ve.y)>Xr)&&ge.push(ve);let he=[];ge.length>0&&he.push(ge[0]);for(let X=1;X<ge.length;X++){let fe=ge[X],K=he[he.length-1];(Math.abs(fe.x-K.x)>Xr||Math.abs(fe.y-K.y)>Xr)&&he.push(fe)}J.points=he}for(let re of i){let J=re.__originalEdge;J&&re.points&&(J.points=re.points)}e.edges=(e.edges??[]).filter(re=>!re.isLayoutOnly);let ce=o((re,J)=>{let se=J.x??0,ge=J.y??0,Te=J.width??0,we=J.height??0;if(Te<=0||we<=0)return re;let Me=se-Te/2,ve=se+Te/2,ne=ge-we/2,q=ge+we/2;if(re.x<Me||re.x>ve||re.y<ne||re.y>q)return re;let he=re.x-Me,X=ve-re.x,fe=re.y-ne,K=q-re.y,qe=Math.min(he,X,fe,K);return qe===he?{x:Me,y:re.y}:qe===X?{x:ve,y:re.y}:qe===fe?{x:re.x,y:ne}:{x:re.x,y:q}},"nodeBoundaryClamp");for(let re of e.edges){let J=re.points;if(!J||J.length<2)continue;let se=re.start,ge=re.end,Te=se?a.get(se):void 0,we=ge?a.get(ge):void 0;Te&&(J[0]=ce(J[0],Te)),we&&(J[J.length-1]=ce(J[J.length-1],we))}return e}var Xr,uut,Ym,w1,S5,Cl,xB,E1e=F(()=>{"use strict";C1();Xr=zye.EPSILON,uut=8,Ym=15,w1=15,S5=25,Cl=20,xB=10;o(w1e,"chooseOrthogonalSide");o(k1e,"sharedLineEndpointCoord");o(k1,"pointOnLine");o(S1e,"routeEdgesOrthogonal")});function hut(e){return e.direction??"TB"}function A1e(e){let t=$0e(e),r=e.config.flowchart?.nodeSpacing??40,n=e.config.flowchart?.rankSpacing??100,i=e.config.swimlane?.ignoreCrossLaneEdges??!0,a=e.config.swimlane?.optimizeRanksByCrossings??!0,s=e.config.swimlane?.automaticLaneOrdering??!1,l=hut(e),{ordered:u,coordinates:h}=T1e(t,{nodeGap:r,layerGap:n,ignoreCrossLaneEdges:i,optimizeRanksByCrossings:a,automaticLaneOrdering:s,direction:l});F0e(t,u,h,{nodeGap:r,layerGap:n});for(let d of e.edges??[])delete d.points;S1e(e,l);for(let d of e.edges??[])(!d.curve||d.curve==="basis")&&(d.curve="rounded");return Oye(e,l),uB(e),l}var R1e=F(()=>{"use strict";Bye();K9();C1e();E1e();o(hut,"getSwimlaneDirection");o(A1e,"runSwimlaneLayoutCore")});var _1e={};ir(_1e,{render:()=>dut});async function dut(e,t){let r=t.select("g");Uy(r,e.markers,e.type,e.diagramId),J4(),X4(),q4(),o5(),B0e(e);let n=z0e(e);e.nodes=n.nodes,e.edges=n.edges;let{groups:i}=await A0e(r,e);A1e(e),await N0e(e,i)}var L1e=F(()=>{"use strict";R0e();Z4();Y9();Lm();Wy();G2();P0e();K9();G0e();R1e();o(dut,"render")});function K$(e,t){(t==null||t>e.length)&&(t=e.length);for(var r=0,n=Array(t);r<t;r++)n[r]=e[r];return n}function fut(e){if(Array.isArray(e))return e}function put(e){if(Array.isArray(e))return K$(e)}function Yf(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function mut(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,sbe(n.key),n)}}function jf(e,t,r){return t&&mut(e.prototype,t),Object.defineProperty(e,"prototype",{writable:!1}),e}function yo(e,t){var r=typeof Symbol<"u"&&e[Symbol.iterator]||e["@@iterator"];if(!r){if(Array.isArray(e)||(r=gF(e))||t){r&&(e=r);var n=0,i=o(function(){},"F");return{s:i,n:o(function(){return n>=e.length?{done:!0}:{done:!1,value:e[n++]}},"n"),e:o(function(u){throw u},"e"),f:i}}throw new TypeError(`Invalid attempt to iterate non-iterable instance.
+In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}var a,s=!0,l=!1;return{s:o(function(){r=r.call(e)},"s"),n:o(function(){var u=r.next();return s=u.done,u},"n"),e:o(function(u){l=!0,a=u},"e"),f:o(function(){try{s||r.return==null||r.return()}finally{if(l)throw a}},"f")}}function abe(e,t,r){return(t=sbe(t))in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function gut(e){if(typeof Symbol<"u"&&e[Symbol.iterator]!=null||e["@@iterator"]!=null)return Array.from(e)}function yut(e,t){var r=e==null?null:typeof Symbol<"u"&&e[Symbol.iterator]||e["@@iterator"];if(r!=null){var n,i,a,s,l=[],u=!0,h=!1;try{if(a=(r=r.call(e)).next,t===0){if(Object(r)!==r)return;u=!1}else for(;!(u=(n=a.call(r)).done)&&(l.push(n.value),l.length!==t);u=!0);}catch(d){h=!0,i=d}finally{try{if(!u&&r.return!=null&&(s=r.return(),Object(s)!==s))return}finally{if(h)throw i}}return l}}function vut(){throw new TypeError(`Invalid attempt to destructure non-iterable instance.
+In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function xut(){throw new TypeError(`Invalid attempt to spread non-iterable instance.
+In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function Ki(e,t){return fut(e)||yut(e,t)||gF(e,t)||vut()}function K5(e){return put(e)||gut(e)||gF(e)||xut()}function but(e,t){if(typeof e!="object"||!e)return e;var r=e[Symbol.toPrimitive];if(r!==void 0){var n=r.call(e,t);if(typeof n!="object")return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}function sbe(e){var t=but(e,"string");return typeof t=="symbol"?t:t+""}function ca(e){"@babel/helpers - typeof";return ca=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(t){return typeof t}:function(t){return t&&typeof Symbol=="function"&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},ca(e)}function gF(e,t){if(e){if(typeof e=="string")return K$(e,t);var r={}.toString.call(e).slice(8,-1);return r==="Object"&&e.constructor&&(r=e.constructor.name),r==="Map"||r==="Set"?Array.from(e):r==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?K$(e,t):void 0}}function YT(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}function jT(){if(M1e)return bB;M1e=1;function e(t){var r=typeof t;return t!=null&&(r=="object"||r=="function")}return o(e,"isObject"),bB=e,bB}function Wut(){if(N1e)return TB;N1e=1;var e=typeof E5=="object"&&E5&&E5.Object===Object&&E5;return TB=e,TB}function hA(){if(P1e)return CB;P1e=1;var e=Wut(),t=typeof self=="object"&&self&&self.Object===Object&&self,r=e||t||Function("return this")();return CB=r,CB}function qut(){if(O1e)return wB;O1e=1;var e=hA(),t=o(function(){return e.Date.now()},"now");return wB=t,wB}function Hut(){if(B1e)return kB;B1e=1;var e=/\s/;function t(r){for(var n=r.length;n--&&e.test(r.charAt(n)););return n}return o(t,"trimmedEndIndex"),kB=t,kB}function Uut(){if($1e)return SB;$1e=1;var e=Hut(),t=/^\s+/;function r(n){return n&&n.slice(0,e(n)+1).replace(t,"")}return o(r,"baseTrim"),SB=r,SB}function xF(){if(F1e)return EB;F1e=1;var e=hA(),t=e.Symbol;return EB=t,EB}function Yut(){if(z1e)return AB;z1e=1;var e=xF(),t=Object.prototype,r=t.hasOwnProperty,n=t.toString,i=e?e.toStringTag:void 0;function a(s){var l=r.call(s,i),u=s[i];try{s[i]=void 0;var h=!0}catch{}var d=n.call(s);return h&&(l?s[i]=u:delete s[i]),d}return o(a,"getRawTag"),AB=a,AB}function jut(){if(G1e)return RB;G1e=1;var e=Object.prototype,t=e.toString;function r(n){return t.call(n)}return o(r,"objectToString"),RB=r,RB}function mbe(){if(V1e)return _B;V1e=1;var e=xF(),t=Yut(),r=jut(),n="[object Null]",i="[object Undefined]",a=e?e.toStringTag:void 0;function s(l){return l==null?l===void 0?i:n:a&&a in Object(l)?t(l):r(l)}return o(s,"baseGetTag"),_B=s,_B}function Xut(){if(W1e)return LB;W1e=1;function e(t){return t!=null&&typeof t=="object"}return o(e,"isObjectLike"),LB=e,LB}function XT(){if(q1e)return DB;q1e=1;var e=mbe(),t=Xut(),r="[object Symbol]";function n(i){return typeof i=="symbol"||t(i)&&e(i)==r}return o(n,"isSymbol"),DB=n,DB}function Kut(){if(H1e)return IB;H1e=1;var e=Uut(),t=jT(),r=XT(),n=NaN,i=/^[-+]0x[0-9a-f]+$/i,a=/^0b[01]+$/i,s=/^0o[0-7]+$/i,l=parseInt;function u(h){if(typeof h=="number")return h;if(r(h))return n;if(t(h)){var d=typeof h.valueOf=="function"?h.valueOf():h;h=t(d)?d+"":d}if(typeof h!="string")return h===0?h:+h;h=e(h);var f=a.test(h);return f||s.test(h)?l(h.slice(2),f?2:8):i.test(h)?n:+h}return o(u,"toNumber"),IB=u,IB}function Zut(){if(U1e)return MB;U1e=1;var e=jT(),t=qut(),r=Kut(),n="Expected a function",i=Math.max,a=Math.min;function s(l,u,h){var d,f,p,m,g,y,v=0,x=!1,b=!1,T=!0;if(typeof l!="function")throw new TypeError(n);u=r(u)||0,e(h)&&(x=!!h.leading,b="maxWait"in h,p=b?i(r(h.maxWait)||0,u):p,T="trailing"in h?!!h.trailing:T);function k(A){var M=d,D=f;return d=f=void 0,v=A,m=l.apply(D,M),m}o(k,"invokeFunc");function C(A){return v=A,g=setTimeout(R,u),x?k(A):m}o(C,"leadingEdge");function w(A){var M=A-y,D=A-v,P=u-M;return b?a(P,p-D):P}o(w,"remainingWait");function S(A){var M=A-y,D=A-v;return y===void 0||M>=u||M<0||b&&D>=p}o(S,"shouldInvoke");function R(){var A=t();if(S(A))return L(A);g=setTimeout(R,w(A))}o(R,"timerExpired");function L(A){return g=void 0,T&&d?k(A):(d=f=void 0,m)}o(L,"trailingEdge");function N(){g!==void 0&&clearTimeout(g),v=0,d=y=f=g=void 0}o(N,"cancel");function I(){return g===void 0?m:L(t())}o(I,"flush");function _(){var A=t(),M=S(A);if(d=arguments,f=this,y=A,M){if(g===void 0)return C(y);if(b)return clearTimeout(g),g=setTimeout(R,u),k(y)}return g===void 0&&(g=setTimeout(R,u)),m}return o(_,"debounced"),_.cancel=N,_.flush=I,_}return o(s,"debounce"),MB=s,MB}function rht(e,t,r,n,i){var a=i*Math.PI/180,s=Math.cos(a)*(e-r)-Math.sin(a)*(t-n)+r,l=Math.sin(a)*(e-r)+Math.cos(a)*(t-n)+n;return{x:s,y:l}}function iht(e,t,r){if(r===0)return e;var n=(t.x1+t.x2)/2,i=(t.y1+t.y2)/2,a=t.w/t.h,s=1/a,l=rht(e.x,e.y,n,i,r),u=nht(l.x,l.y,n,i,a,s);return{x:u.x,y:u.y}}function mht(){return Z1e||(Z1e=1,(function(e,t){(function(){var r,n,i,a,s,l,u,h,d,f,p,m,g,y,v;i=Math.floor,f=Math.min,n=o(function(x,b){return x<b?-1:x>b?1:0},"defaultCmp"),d=o(function(x,b,T,k,C){var w;if(T==null&&(T=0),C==null&&(C=n),T<0)throw new Error("lo must be non-negative");for(k==null&&(k=x.length);T<k;)w=i((T+k)/2),C(b,x[w])<0?k=w:T=w+1;return[].splice.apply(x,[T,T-T].concat(b)),b},"insort"),l=o(function(x,b,T){return T==null&&(T=n),x.push(b),y(x,0,x.length-1,T)},"heappush"),s=o(function(x,b){var T,k;return b==null&&(b=n),T=x.pop(),x.length?(k=x[0],x[0]=T,v(x,0,b)):k=T,k},"heappop"),h=o(function(x,b,T){var k;return T==null&&(T=n),k=x[0],x[0]=b,v(x,0,T),k},"heapreplace"),u=o(function(x,b,T){var k;return T==null&&(T=n),x.length&&T(x[0],b)<0&&(k=[x[0],b],b=k[0],x[0]=k[1],v(x,0,T)),b},"heappushpop"),a=o(function(x,b){var T,k,C,w,S,R;for(b==null&&(b=n),w=(function(){R=[];for(var L=0,N=i(x.length/2);0<=N?L<N:L>N;0<=N?L++:L--)R.push(L);return R}).apply(this).reverse(),S=[],k=0,C=w.length;k<C;k++)T=w[k],S.push(v(x,T,b));return S},"heapify"),g=o(function(x,b,T){var k;if(T==null&&(T=n),k=x.indexOf(b),k!==-1)return y(x,0,k,T),v(x,k,T)},"updateItem"),p=o(function(x,b,T){var k,C,w,S,R;if(T==null&&(T=n),C=x.slice(0,b),!C.length)return C;for(a(C,T),R=x.slice(b),w=0,S=R.length;w<S;w++)k=R[w],u(C,k,T);return C.sort(T).reverse()},"nlargest"),m=o(function(x,b,T){var k,C,w,S,R,L,N,I,_;if(T==null&&(T=n),b*10<=x.length){if(w=x.slice(0,b).sort(T),!w.length)return w;for(C=w[w.length-1],N=x.slice(b),S=0,L=N.length;S<L;S++)k=N[S],T(k,C)<0&&(d(w,k,0,null,T),w.pop(),C=w[w.length-1]);return w}for(a(x,T),_=[],R=0,I=f(b,x.length);0<=I?R<I:R>I;0<=I?++R:--R)_.push(s(x,T));return _},"nsmallest"),y=o(function(x,b,T,k){var C,w,S;for(k==null&&(k=n),C=x[T];T>b;){if(S=T-1>>1,w=x[S],k(C,w)<0){x[T]=w,T=S;continue}break}return x[T]=C},"_siftdown"),v=o(function(x,b,T){var k,C,w,S,R;for(T==null&&(T=n),C=x.length,R=b,w=x[b],k=2*b+1;k<C;)S=k+1,S<C&&!(T(x[k],x[S])<0)&&(k=S),x[b]=x[k],b=k,k=2*b+1;return x[b]=w,y(x,R,b,T)},"_siftup"),r=(function(){x.push=l,x.pop=s,x.replace=h,x.pushpop=u,x.heapify=a,x.updateItem=g,x.nlargest=p,x.nsmallest=m;function x(b){this.cmp=b??n,this.nodes=[]}return o(x,"Heap"),x.prototype.push=function(b){return l(this.nodes,b,this.cmp)},x.prototype.pop=function(){return s(this.nodes,this.cmp)},x.prototype.peek=function(){return this.nodes[0]},x.prototype.contains=function(b){return this.nodes.indexOf(b)!==-1},x.prototype.replace=function(b){return h(this.nodes,b,this.cmp)},x.prototype.pushpop=function(b){return u(this.nodes,b,this.cmp)},x.prototype.heapify=function(){return a(this.nodes,this.cmp)},x.prototype.updateItem=function(b){return g(this.nodes,b,this.cmp)},x.prototype.clear=function(){return this.nodes=[]},x.prototype.empty=function(){return this.nodes.length===0},x.prototype.size=function(){return this.nodes.length},x.prototype.clone=function(){var b;return b=new x,b.nodes=this.nodes.slice(0),b},x.prototype.toArray=function(){return this.nodes.slice(0)},x.prototype.insert=x.prototype.push,x.prototype.top=x.prototype.peek,x.prototype.front=x.prototype.peek,x.prototype.has=x.prototype.contains,x.prototype.copy=x.prototype.clone,x})(),(function(x,b){return e.exports=b()})(this,function(){return r})}).call(pht)})(F5)),F5.exports}function ght(){return Q1e||(Q1e=1,PB=mht()),PB}function Vht(e,t){if(e.length<3)throw new Error("Need at least 3 vertices");var r=o(function(R,L){return{x:R.x+L.x,y:R.y+L.y}},"add"),n=o(function(R,L){return{x:R.x-L.x,y:R.y-L.y}},"sub"),i=o(function(R,L){return{x:R.x*L,y:R.y*L}},"scale"),a=o(function(R,L){return R.x*L.y-R.y*L.x},"cross"),s=o(function(R){var L=Ght(R.x,R.y);return L===0?{x:0,y:0}:{x:R.x/L,y:R.y/L}},"normalize"),l=o(function(R){for(var L=0,N=0;N<R.length;N++){var I=R[N],_=R[(N+1)%R.length];L+=I.x*_.y-_.x*I.y}return L/2},"signedArea"),u=o(function(R,L,N,I){var _=n(L,R),A=n(I,N),M=a(_,A);if(Math.abs(M)<1e-9)return r(R,i(_,.5));var D=a(n(N,R),A)/M;return r(R,i(_,D))},"intersectLines"),h=e.map(function(S){return{x:S.x,y:S.y}});l(h)<0&&h.reverse();for(var d=h.length,f=[],p=0;p<d;p++){var m=h[p],g=h[(p+1)%d],y=n(g,m),v=s({x:y.y,y:-y.x});f.push(v)}for(var x=f.map(function(S,R){var L=r(h[R],i(S,t)),N=r(h[(R+1)%d],i(S,t));return{p1:L,p2:N}}),b=[],T=0;T<d;T++){var k=x[(T-1+d)%d],C=x[T],w=u(k.p1,k.p2,C.p1,C.p2);b.push(w)}return b}function Wht(e,t,r,n,i,a){var s=Qht(e,t,r,n,i),l=Vht(s,a),u=Ns();return l.forEach(function(h){return Sbe(u,h.x,h.y)}),u}function FB(e,t){function r(f){for(var p=[],m=0;m<f.length;m++){var g=f[m],y=f[(m+1)%f.length],v={x:y.x-g.x,y:y.y-g.y},x={x:-v.y,y:v.x},b=Math.sqrt(x.x*x.x+x.y*x.y);p.push({x:x.x/b,y:x.y/b})}return p}o(r,"getAxes");function n(f,p){var m=1/0,g=-1/0,y=yo(f),v;try{for(y.s();!(v=y.n()).done;){var x=v.value,b=x.x*p.x+x.y*p.y;m=Math.min(m,b),g=Math.max(g,b)}}catch(T){y.e(T)}finally{y.f()}return{min:m,max:g}}o(n,"project");function i(f,p){return!(f.max<p.min||p.max<f.min)}o(i,"overlaps");var a=[].concat(K5(r(e)),K5(r(t))),s=yo(a),l;try{for(s.s();!(l=s.n()).done;){var u=l.value,h=n(e,u),d=n(t,u);if(!i(h,d))return!1}}catch(f){s.e(f)}finally{s.f()}return!0}function pA(e,t,r,n,i,a){var s;return Ci(e)?s=e:s=G1[e]||G1.euclidean,t===0&&Ci(e)?s(i,a):s(t,r,n,i,a)}function mA(){if(gve)return GB;gve=1;var e=Array.isArray;return GB=e,GB}function Hdt(){if(yve)return VB;yve=1;var e=mA(),t=XT(),r=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,n=/^\w*$/;function i(a,s){if(e(a))return!1;var l=typeof a;return l=="number"||l=="symbol"||l=="boolean"||a==null||t(a)?!0:n.test(a)||!r.test(a)||s!=null&&a in Object(s)}return o(i,"isKey"),VB=i,VB}function Udt(){if(vve)return WB;vve=1;var e=mbe(),t=jT(),r="[object AsyncFunction]",n="[object Function]",i="[object GeneratorFunction]",a="[object Proxy]";function s(l){if(!t(l))return!1;var u=e(l);return u==n||u==i||u==r||u==a}return o(s,"isFunction"),WB=s,WB}function Ydt(){if(xve)return qB;xve=1;var e=hA(),t=e["__core-js_shared__"];return qB=t,qB}function jdt(){if(bve)return HB;bve=1;var e=Ydt(),t=(function(){var n=/[^.]+$/.exec(e&&e.keys&&e.keys.IE_PROTO||"");return n?"Symbol(src)_1."+n:""})();function r(n){return!!t&&t in n}return o(r,"isMasked"),HB=r,HB}function Xdt(){if(Tve)return UB;Tve=1;var e=Function.prototype,t=e.toString;function r(n){if(n!=null){try{return t.call(n)}catch{}try{return n+""}catch{}}return""}return o(r,"toSource"),UB=r,UB}function Kdt(){if(Cve)return YB;Cve=1;var e=Udt(),t=jdt(),r=jT(),n=Xdt(),i=/[\\^$.*+?()[\]{}|]/g,a=/^\[object .+?Constructor\]$/,s=Function.prototype,l=Object.prototype,u=s.toString,h=l.hasOwnProperty,d=RegExp("^"+u.call(h).replace(i,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function f(p){if(!r(p)||t(p))return!1;var m=e(p)?d:a;return m.test(n(p))}return o(f,"baseIsNative"),YB=f,YB}function Zdt(){if(wve)return jB;wve=1;function e(t,r){return t?.[r]}return o(e,"getValue"),jB=e,jB}function RF(){if(kve)return XB;kve=1;var e=Kdt(),t=Zdt();function r(n,i){var a=t(n,i);return e(a)?a:void 0}return o(r,"getNative"),XB=r,XB}function gA(){if(Sve)return KB;Sve=1;var e=RF(),t=e(Object,"create");return KB=t,KB}function Qdt(){if(Eve)return ZB;Eve=1;var e=gA();function t(){this.__data__=e?e(null):{},this.size=0}return o(t,"hashClear"),ZB=t,ZB}function Jdt(){if(Ave)return QB;Ave=1;function e(t){var r=this.has(t)&&delete this.__data__[t];return this.size-=r?1:0,r}return o(e,"hashDelete"),QB=e,QB}function eft(){if(Rve)return JB;Rve=1;var e=gA(),t="__lodash_hash_undefined__",r=Object.prototype,n=r.hasOwnProperty;function i(a){var s=this.__data__;if(e){var l=s[a];return l===t?void 0:l}return n.call(s,a)?s[a]:void 0}return o(i,"hashGet"),JB=i,JB}function tft(){if(_ve)return e$;_ve=1;var e=gA(),t=Object.prototype,r=t.hasOwnProperty;function n(i){var a=this.__data__;return e?a[i]!==void 0:r.call(a,i)}return o(n,"hashHas"),e$=n,e$}function rft(){if(Lve)return t$;Lve=1;var e=gA(),t="__lodash_hash_undefined__";function r(n,i){var a=this.__data__;return this.size+=this.has(n)?0:1,a[n]=e&&i===void 0?t:i,this}return o(r,"hashSet"),t$=r,t$}function nft(){if(Dve)return r$;Dve=1;var e=Qdt(),t=Jdt(),r=eft(),n=tft(),i=rft();function a(s){var l=-1,u=s==null?0:s.length;for(this.clear();++l<u;){var h=s[l];this.set(h[0],h[1])}}return o(a,"Hash"),a.prototype.clear=e,a.prototype.delete=t,a.prototype.get=r,a.prototype.has=n,a.prototype.set=i,r$=a,r$}function ift(){if(Ive)return n$;Ive=1;function e(){this.__data__=[],this.size=0}return o(e,"listCacheClear"),n$=e,n$}function zbe(){if(Mve)return i$;Mve=1;function e(t,r){return t===r||t!==t&&r!==r}return o(e,"eq"),i$=e,i$}function yA(){if(Nve)return a$;Nve=1;var e=zbe();function t(r,n){for(var i=r.length;i--;)if(e(r[i][0],n))return i;return-1}return o(t,"assocIndexOf"),a$=t,a$}function aft(){if(Pve)return s$;Pve=1;var e=yA(),t=Array.prototype,r=t.splice;function n(i){var a=this.__data__,s=e(a,i);if(s<0)return!1;var l=a.length-1;return s==l?a.pop():r.call(a,s,1),--this.size,!0}return o(n,"listCacheDelete"),s$=n,s$}function sft(){if(Ove)return o$;Ove=1;var e=yA();function t(r){var n=this.__data__,i=e(n,r);return i<0?void 0:n[i][1]}return o(t,"listCacheGet"),o$=t,o$}function oft(){if(Bve)return l$;Bve=1;var e=yA();function t(r){return e(this.__data__,r)>-1}return o(t,"listCacheHas"),l$=t,l$}function lft(){if($ve)return c$;$ve=1;var e=yA();function t(r,n){var i=this.__data__,a=e(i,r);return a<0?(++this.size,i.push([r,n])):i[a][1]=n,this}return o(t,"listCacheSet"),c$=t,c$}function cft(){if(Fve)return u$;Fve=1;var e=ift(),t=aft(),r=sft(),n=oft(),i=lft();function a(s){var l=-1,u=s==null?0:s.length;for(this.clear();++l<u;){var h=s[l];this.set(h[0],h[1])}}return o(a,"ListCache"),a.prototype.clear=e,a.prototype.delete=t,a.prototype.get=r,a.prototype.has=n,a.prototype.set=i,u$=a,u$}function uft(){if(zve)return h$;zve=1;var e=RF(),t=hA(),r=e(t,"Map");return h$=r,h$}function hft(){if(Gve)return d$;Gve=1;var e=nft(),t=cft(),r=uft();function n(){this.size=0,this.__data__={hash:new e,map:new(r||t),string:new e}}return o(n,"mapCacheClear"),d$=n,d$}function dft(){if(Vve)return f$;Vve=1;function e(t){var r=typeof t;return r=="string"||r=="number"||r=="symbol"||r=="boolean"?t!=="__proto__":t===null}return o(e,"isKeyable"),f$=e,f$}function vA(){if(Wve)return p$;Wve=1;var e=dft();function t(r,n){var i=r.__data__;return e(n)?i[typeof n=="string"?"string":"hash"]:i.map}return o(t,"getMapData"),p$=t,p$}function fft(){if(qve)return m$;qve=1;var e=vA();function t(r){var n=e(this,r).delete(r);return this.size-=n?1:0,n}return o(t,"mapCacheDelete"),m$=t,m$}function pft(){if(Hve)return g$;Hve=1;var e=vA();function t(r){return e(this,r).get(r)}return o(t,"mapCacheGet"),g$=t,g$}function mft(){if(Uve)return y$;Uve=1;var e=vA();function t(r){return e(this,r).has(r)}return o(t,"mapCacheHas"),y$=t,y$}function gft(){if(Yve)return v$;Yve=1;var e=vA();function t(r,n){var i=e(this,r),a=i.size;return i.set(r,n),this.size+=i.size==a?0:1,this}return o(t,"mapCacheSet"),v$=t,v$}function yft(){if(jve)return x$;jve=1;var e=hft(),t=fft(),r=pft(),n=mft(),i=gft();function a(s){var l=-1,u=s==null?0:s.length;for(this.clear();++l<u;){var h=s[l];this.set(h[0],h[1])}}return o(a,"MapCache"),a.prototype.clear=e,a.prototype.delete=t,a.prototype.get=r,a.prototype.has=n,a.prototype.set=i,x$=a,x$}function vft(){if(Xve)return b$;Xve=1;var e=yft(),t="Expected a function";function r(n,i){if(typeof n!="function"||i!=null&&typeof i!="function")throw new TypeError(t);var a=o(function(){var s=arguments,l=i?i.apply(this,s):s[0],u=a.cache;if(u.has(l))return u.get(l);var h=n.apply(this,s);return a.cache=u.set(l,h)||u,h},"memoized");return a.cache=new(r.Cache||e),a}return o(r,"memoize"),r.Cache=e,b$=r,b$}function xft(){if(Kve)return T$;Kve=1;var e=vft(),t=500;function r(n){var i=e(n,function(s){return a.size===t&&a.clear(),s}),a=i.cache;return i}return o(r,"memoizeCapped"),T$=r,T$}function Gbe(){if(Zve)return C$;Zve=1;var e=xft(),t=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,r=/\\(\\)?/g,n=e(function(i){var a=[];return i.charCodeAt(0)===46&&a.push(""),i.replace(t,function(s,l,u,h){a.push(u?h.replace(r,"$1"):l||s)}),a});return C$=n,C$}function Vbe(){if(Qve)return w$;Qve=1;function e(t,r){for(var n=-1,i=t==null?0:t.length,a=Array(i);++n<i;)a[n]=r(t[n],n,t);return a}return o(e,"arrayMap"),w$=e,w$}function bft(){if(Jve)return k$;Jve=1;var e=xF(),t=Vbe(),r=mA(),n=XT(),i=e?e.prototype:void 0,a=i?i.toString:void 0;function s(l){if(typeof l=="string")return l;if(r(l))return t(l,s)+"";if(n(l))return a?a.call(l):"";var u=l+"";return u=="0"&&1/l==-1/0?"-0":u}return o(s,"baseToString"),k$=s,k$}function Wbe(){if(exe)return S$;exe=1;var e=bft();function t(r){return r==null?"":e(r)}return o(t,"toString"),S$=t,S$}function qbe(){if(txe)return E$;txe=1;var e=mA(),t=Hdt(),r=Gbe(),n=Wbe();function i(a,s){return e(a)?a:t(a,s)?[a]:r(n(a))}return o(i,"castPath"),E$=i,E$}function _F(){if(rxe)return A$;rxe=1;var e=XT();function t(r){if(typeof r=="string"||e(r))return r;var n=r+"";return n=="0"&&1/r==-1/0?"-0":n}return o(t,"toKey"),A$=t,A$}function Tft(){if(nxe)return R$;nxe=1;var e=qbe(),t=_F();function r(n,i){i=e(i,n);for(var a=0,s=i.length;n!=null&&a<s;)n=n[t(i[a++])];return a&&a==s?n:void 0}return o(r,"baseGet"),R$=r,R$}function Cft(){if(ixe)return _$;ixe=1;var e=Tft();function t(r,n,i){var a=r==null?void 0:e(r,n);return a===void 0?i:a}return o(t,"get"),_$=t,_$}function Sft(){if(axe)return L$;axe=1;var e=RF(),t=(function(){try{var r=e(Object,"defineProperty");return r({},"",{}),r}catch{}})();return L$=t,L$}function Eft(){if(sxe)return D$;sxe=1;var e=Sft();function t(r,n,i){n=="__proto__"&&e?e(r,n,{configurable:!0,enumerable:!0,value:i,writable:!0}):r[n]=i}return o(t,"baseAssignValue"),D$=t,D$}function Aft(){if(oxe)return I$;oxe=1;var e=Eft(),t=zbe(),r=Object.prototype,n=r.hasOwnProperty;function i(a,s,l){var u=a[s];(!(n.call(a,s)&&t(u,l))||l===void 0&&!(s in a))&&e(a,s,l)}return o(i,"assignValue"),I$=i,I$}function Rft(){if(lxe)return M$;lxe=1;var e=9007199254740991,t=/^(?:0|[1-9]\d*)$/;function r(n,i){var a=typeof n;return i=i??e,!!i&&(a=="number"||a!="symbol"&&t.test(n))&&n>-1&&n%1==0&&n<i}return o(r,"isIndex"),M$=r,M$}function _ft(){if(cxe)return N$;cxe=1;var e=Aft(),t=qbe(),r=Rft(),n=jT(),i=_F();function a(s,l,u,h){if(!n(s))return s;l=t(l,s);for(var d=-1,f=l.length,p=f-1,m=s;m!=null&&++d<f;){var g=i(l[d]),y=u;if(g==="__proto__"||g==="constructor"||g==="prototype")return s;if(d!=p){var v=m[g];y=h?h(v,g,m):void 0,y===void 0&&(y=n(v)?v:r(l[d+1])?[]:{})}e(m,g,y),m=m[g]}return s}return o(a,"baseSet"),N$=a,N$}function Lft(){if(uxe)return P$;uxe=1;var e=_ft();function t(r,n,i){return r==null?r:e(r,n,i)}return o(t,"set"),P$=t,P$}function Mft(){if(hxe)return O$;hxe=1;function e(t,r){var n=-1,i=t.length;for(r||(r=Array(i));++n<i;)r[n]=t[n];return r}return o(e,"copyArray"),O$=e,O$}function Nft(){if(dxe)return B$;dxe=1;var e=Vbe(),t=Mft(),r=mA(),n=XT(),i=Gbe(),a=_F(),s=Wbe();function l(u){return r(u)?e(u,a):n(u)?[u]:t(i(s(u)))}return o(l,"toPath"),B$=l,B$}function DF(e,t,r,n){for(var i=[],a=new W1,s=e.cy(),l=s.hasCompoundNodes(),u=0;u<e.length;u++){var h=e[u];r?i.push(h):l&&n(i,a,h)}for(;i.length>0;){var d=i.shift();t(d),a.add(d.id()),l&&n(i,a,d)}return e}function Ube(e,t,r){if(r.isParent())for(var n=r._private.children,i=0;i<n.length;i++){var a=n[i];t.has(a.id())||e.push(a)}}function Ybe(e,t,r){if(r.isChild()){var n=r._private.parent;t.has(n.id())||e.push(n)}}function ept(e,t,r){Ybe(e,t,r),Ube(e,t,r)}function $$(e){return function(t){var r=this;if(t===void 0&&(t=!0),r.length!==0)if(r.isNode()&&!r.removed()){for(var n=0,i=r[0],a=i._private.edges,s=0;s<a.length;s++){var l=a[s];!t&&l.isLoop()||(n+=e(i,l))}return n}else return}}function E1(e,t){return function(r){for(var n,i=this.nodes(),a=0;a<i.length;a++){var s=i[a],l=s[e](r);l!==void 0&&(n===void 0||t(l,n))&&(n=l)}return n}}function kT(){return!1}function M5(){return!0}function bA(){for(var e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:xpt,t=arguments.length>1?arguments[1]:void 0,r=0;r<xxe.length;r++){var n=xxe[r];this[n]=e[n]||n2e[n]}this.context=t||this.context,this.listeners=[],this.emitting=0}function l2e(e,t,r){var n=r._private,i=n.styleCache=n.styleCache||[],a;return(a=i[e])!=null||(a=i[e]=t(r)),a}function TA(e,t){return e=rg(e),o(function(n){return l2e(e,t,n)},"cachedStyleFunction")}function CA(e,t){e=rg(e);var r=o(function(i){return t.call(i)},"selfFn");return o(function(){var i=this[0];if(i)return l2e(e,r,i)},"cachedPrototypeStyleFunction")}function z$(e,t){var r=e._private,n=r.data.parent?e.parents():null;if(n)for(var i=0;i<n.length;i++){var a=n[i];if(!t(a))return!1}return!0}function IF(e){var t=e.ok,r=e.edgeOkViaNode||e.ok,n=e.parentOk||e.ok;return function(){var i=this.cy();if(!i.styleEnabled())return!0;var a=this[0],s=i.hasCompoundNodes();if(a){var l=a._private;if(!t(a))return!1;if(a.isNode())return!s||z$(a,n);var u=l.source,h=l.target;return r(u)&&(!s||z$(u,r))&&(u===h||r(h)&&(!s||z$(h,r)))}}}function Txe(e){return function(){var t=arguments,r=[];if(t.length===2){var n=t[0],i=t[1];this.on(e.event,n,i)}else if(t.length===1&&Ci(t[0])){var a=t[0];this.on(e.event,a)}else if(t.length===0||t.length===1&&Hn(t[0])){for(var s=t.length===1?t[0]:null,l=0;l<this.length;l++){var u=this[l],h=!e.ableField||u._private[e.ableField],d=u._private[e.field]!=e.value;if(e.overrideAble){var f=e.overrideAble(u);if(f!==void 0&&(h=f,!f))return this}h&&(u._private[e.field]=e.value,d&&r.push(u))}var p=this.spawn(r);p.updateStyle(),p.emit(e.event),s&&p.emit(s)}return this}}function U1(e){zf[e.field]=function(){var t=this[0];if(t){if(e.overrideField){var r=e.overrideField(t);if(r!==void 0)return r}return t._private[e.field]}},zf[e.on]=Txe({event:e.on,field:e.field,ableField:e.ableField,overrideAble:e.overrideAble,value:!0}),zf[e.off]=Txe({event:e.off,field:e.field,ableField:e.ableField,overrideAble:e.overrideAble,value:!1})}function Sxe(e){return o(function(r){for(var n=[],i=0;i<this.length;i++){var a=this[i],s=a._private[e.attr];s&&n.push(s)}return this.spawn(n,!0).filter(r)},"sourceImpl")}function Exe(e){return o(function(r){var n=[],i=this._private.cy,a=e||{};fr(r)&&(r=i.$(r));for(var s=0;s<r.length;s++)for(var l=r[s]._private.edges,u=0;u<l.length;u++){var h=l[u],d=h._private.data,f=this.hasElementWithId(d.source)&&r.hasElementWithId(d.target),p=r.hasElementWithId(d.source)&&this.hasElementWithId(d.target),m=f||p;m&&((a.thisIsSrc||a.thisIsTgt)&&(a.thisIsSrc&&!f||a.thisIsTgt&&!p)||n.push(h))}return this.spawn(n,!0)},"edgesWithImpl")}function Axe(e){var t={codirected:!1};return e=br({},t,e),o(function(n){for(var i=[],a=this.edges(),s=e,l=0;l<a.length;l++)for(var u=a[l],h=u._private,d=h.source,f=d._private.data.id,p=h.data.target,m=d._private.edges,g=0;g<m.length;g++){var y=m[g],v=y._private.data,x=v.target,b=v.source,T=x===p&&b===f,k=f===x&&p===b;(s.codirected&&T||!s.codirected&&(T||k))&&i.push(y)}return this.spawn(i,!0).filter(n)},"parallelEdgesImpl")}function Lpt(e,t,r,n){var i=4,a=.001,s=1e-7,l=10,u=11,h=1/(u-1),d=typeof Float32Array<"u";if(arguments.length!==4)return!1;for(var f=0;f<4;++f)if(typeof arguments[f]!="number"||isNaN(arguments[f])||!isFinite(arguments[f]))return!1;e=Math.min(e,1),r=Math.min(r,1),e=Math.max(e,0),r=Math.max(r,0);var p=d?new Float32Array(u):new Array(u);function m(N,I){return 1-3*I+3*N}o(m,"A");function g(N,I){return 3*I-6*N}o(g,"B");function y(N){return 3*N}o(y,"C");function v(N,I,_){return((m(I,_)*N+g(I,_))*N+y(I))*N}o(v,"calcBezier");function x(N,I,_){return 3*m(I,_)*N*N+2*g(I,_)*N+y(I)}o(x,"getSlope");function b(N,I){for(var _=0;_<i;++_){var A=x(I,e,r);if(A===0)return I;var M=v(I,e,r)-N;I-=M/A}return I}o(b,"newtonRaphsonIterate");function T(){for(var N=0;N<u;++N)p[N]=v(N*h,e,r)}o(T,"calcSampleValues");function k(N,I,_){var A,M,D=0;do M=I+(_-I)/2,A=v(M,e,r)-N,A>0?_=M:I=M;while(Math.abs(A)>s&&++D<l);return M}o(k,"binarySubdivide");function C(N){for(var I=0,_=1,A=u-1;_!==A&&p[_]<=N;++_)I+=h;--_;var M=(N-p[_])/(p[_+1]-p[_]),D=I+M*h,P=x(D,e,r);return P>=a?b(N,D):P===0?D:k(N,I,I+h)}o(C,"getTForX");var w=!1;function S(){w=!0,(e!==t||r!==n)&&T()}o(S,"precompute");var R=o(function(I){return w||S(),e===t&&r===n?I:I===0?0:I===1?1:v(C(I),t,n)},"f");R.getControlPoints=function(){return[{x:e,y:t},{x:r,y:n}]};var L="generateBezier("+[e,t,r,n]+")";return R.toString=function(){return L},R}function Rxe(e,t,r,n,i){if(n===1||t===r)return r;var a=i(t,r,n);return e==null||((e.roundValue||e.color)&&(a=Math.round(a)),e.min!==void 0&&(a=Math.max(a,e.min)),e.max!==void 0&&(a=Math.min(a,e.max))),a}function _xe(e,t){return e.pfValue!=null||e.value!=null?e.pfValue!=null&&(t==null||t.type.units!=="%")?e.pfValue:e.value:e}function A1(e,t,r,n,i){var a=i!=null?i.type:null;r<0?r=0:r>1&&(r=1);var s=_xe(e,i),l=_xe(t,i);if(Gt(s)&&Gt(l))return Rxe(a,s,l,r,n);if(Hn(s)&&Hn(l)){for(var u=[],h=0;h<l.length;h++){var d=s[h],f=l[h];if(d!=null&&f!=null){var p=Rxe(a,d,f,r,n);u.push(p)}else u.push(f)}return u}}function Ipt(e,t,r,n){var i=!n,a=e._private,s=t._private,l=s.easing,u=s.startTime,h=n?e:e.cy(),d=h.style();if(!s.easingImpl)if(l==null)s.easingImpl=q5.linear;else{var f;if(fr(l)){var p=d.parse("transition-timing-function",l);f=p.value}else f=l;var m,g;fr(f)?(m=f,g=[]):(m=f[1],g=f.slice(2).map(function($){return+$})),g.length>0?(m==="spring"&&g.push(s.duration),s.easingImpl=q5[m].apply(null,g)):s.easingImpl=q5[m]}var y=s.easingImpl,v;if(s.duration===0?v=1:v=(r-u)/s.duration,s.applying&&(v=s.progress),v<0?v=0:v>1&&(v=1),s.delay==null){var x=s.startPosition,b=s.position;if(b&&i&&!e.locked()){var T={};ST(x.x,b.x)&&(T.x=A1(x.x,b.x,v,y)),ST(x.y,b.y)&&(T.y=A1(x.y,b.y,v,y)),e.position(T)}var k=s.startPan,C=s.pan,w=a.pan,S=C!=null&&n;S&&(ST(k.x,C.x)&&(w.x=A1(k.x,C.x,v,y)),ST(k.y,C.y)&&(w.y=A1(k.y,C.y,v,y)),e.emit("pan"));var R=s.startZoom,L=s.zoom,N=L!=null&&n;N&&(ST(R,L)&&(a.zoom=$T(a.minZoom,A1(R,L,v,y),a.maxZoom)),e.emit("zoom")),(S||N)&&e.emit("viewport");var I=s.style;if(I&&I.length>0&&i){for(var _=0;_<I.length;_++){var A=I[_],M=A.name,D=A,P=s.startStyle[M],B=d.properties[P.name],O=A1(P,D,v,y,B);d.overrideBypass(e,M,O)}e.emit("style")}}return s.progress=v,v}function ST(e,t){return e==null||t==null?!1:Gt(e)&&Gt(t)?!0:!!(e&&t)}function Mpt(e,t,r,n){var i=t._private;i.started=!0,i.startTime=r-i.progress*i.duration}function Lxe(e,t){var r=t._private.aniEles,n=[];function i(d,f){var p=d._private,m=p.animation.current,g=p.animation.queue,y=!1;if(m.length===0){var v=g.shift();v&&m.push(v)}for(var x=o(function(w){for(var S=w.length-1;S>=0;S--){var R=w[S];R()}w.splice(0,w.length)},"callbacks"),b=m.length-1;b>=0;b--){var T=m[b],k=T._private;if(k.stopped){m.splice(b,1),k.hooked=!1,k.playing=!1,k.started=!1,x(k.frames);continue}!k.playing&&!k.applying||(k.playing&&k.applying&&(k.applying=!1),k.started||Mpt(d,T,e),Ipt(d,T,e,f),k.applying&&(k.applying=!1),x(k.frames),k.step!=null&&k.step(e),T.completed()&&(m.splice(b,1),k.hooked=!1,k.playing=!1,k.started=!1,x(k.completes)),y=!0)}return!f&&m.length===0&&g.length===0&&n.push(d),y}o(i,"stepOne");for(var a=!1,s=0;s<r.length;s++){var l=r[s],u=i(l);a=a||u}var h=i(t,!0);(a||h)&&(r.length>0?t.notify("draw",r):t.notify("draw")),r.unmerge(n),t.emit("step")}function u2e(e){this.options=br({},Gpt,Vpt,e)}function h2e(e){this.options=br({},Wpt,e)}function d2e(e){this.options=br({},qpt,e)}function SA(e){this.options=br({},Hpt,e),this.options.layout=this;var t=this.options.eles.nodes(),r=this.options.eles.edges(),n=r.filter(function(i){var a=i.source().data("id"),s=i.target().data("id"),l=t.some(function(h){return h.data("id")===a}),u=t.some(function(h){return h.data("id")===s});return!l||!u});this.options.eles=this.options.eles.not(n)}function g2e(e){this.options=br({},smt,e)}function PF(e){this.options=br({},omt,e)}function y2e(e){this.options=br({},lmt,e)}function v2e(e){this.options=br({},cmt,e)}function x2e(e){this.options=e,this.notifications=0}function C2e(e,t){t.radius===0?e.lineTo(t.cx,t.cy):e.arc(t.cx,t.cy,t.radius,t.startAngle,t.endAngle,t.counterClockwise)}function BF(e,t,r,n){var i=arguments.length>4&&arguments[4]!==void 0?arguments[4]:!0;return n===0||t.radius===0?{cx:t.x,cy:t.y,radius:0,startX:t.x,startY:t.y,stopX:t.x,stopY:t.y,startAngle:void 0,endAngle:void 0,counterClockwise:void 0}:(dmt(e,t,r,n,i),{cx:oF,cy:lF,radius:Qm,startX:b2e,startY:T2e,stopX:cF,stopY:uF,startAngle:bu.ang+Math.PI/2*eg,endAngle:wl.ang-Math.PI/2*eg,counterClockwise:Y5})}function w2e(e){var t=[];if(e!=null){for(var r=0;r<e.length;r+=2){var n=e[r],i=e[r+1];t.push({x:n,y:i})}return t}}function pmt(e,t,r){for(var n=o(function(h,d,f,p){return Aa(h,d,f,p)},"qbezierAt$1"),i=t._private,a=i.rstyle.bezierPts,s=0;s<e.bezierProjPcts.length;s++){var l=e.bezierProjPcts[s];a.push({x:n(r[0],r[2],r[4],l),y:n(r[1],r[3],r[5],l)})}}function Umt(e,t){for(var r=0;r<t.length;r++){var n=t[r];e.lineTo(n.x,n.y)}}function Ymt(e,t,r){for(var n,i=0;i<t.length;i++){var a=t[i];i===0&&(n=a),e.lineTo(a.x,a.y)}e.quadraticCurveTo(r.x,r.y,n.x,n.y)}function jxe(e,t,r){e.beginPath&&e.beginPath();for(var n=t,i=0;i<n.length;i++){var a=n[i];e.lineTo(a.x,a.y)}var s=r,l=r[0];e.moveTo(l.x,l.y);for(var i=1;i<s.length;i++){var a=s[i];e.lineTo(a.x,a.y)}e.closePath&&e.closePath()}function jmt(e,t,r,n,i){e.beginPath&&e.beginPath(),e.arc(r,n,i,0,Math.PI*2,!1);var a=t,s=a[0];e.moveTo(s.x,s.y);for(var l=0;l<a.length;l++){var u=a[l];e.lineTo(u.x,u.y)}e.closePath&&e.closePath()}function Xmt(e,t,r,n){e.arc(t,r,n,0,Math.PI*2,!1)}function tgt(e,t,r,n,i){var a=Math.min(n,i),s=a/2,l=t+n/2,u=r+i/2;e.beginPath(),e.arc(l,u,s,0,Math.PI*2),e.closePath()}function Xxe(e,t,r,n,i){var a=arguments.length>5&&arguments[5]!==void 0?arguments[5]:5,s=Math.min(a,n/2,i/2);e.beginPath(),e.moveTo(t+s,r),e.lineTo(t+n-s,r),e.quadraticCurveTo(t+n,r,t+n,r+s),e.lineTo(t+n,r+i-s),e.quadraticCurveTo(t+n,r+i,t+n-s,r+i),e.lineTo(t+s,r+i),e.quadraticCurveTo(t,r+i,t,r+i-s),e.lineTo(t,r+s),e.quadraticCurveTo(t,r,t+s,r),e.closePath()}function Kxe(e,t,r){var n=e.createShader(t);if(e.shaderSource(n,r),e.compileShader(n),!e.getShaderParameter(n,e.COMPILE_STATUS))throw new Error(e.getShaderInfoLog(n));return n}function ngt(e,t,r){var n=Kxe(e,e.VERTEX_SHADER,t),i=Kxe(e,e.FRAGMENT_SHADER,r),a=e.createProgram();if(e.attachShader(a,n),e.attachShader(a,i),e.linkProgram(a),!e.getProgramParameter(a,e.LINK_STATUS))throw new Error("Could not initialize shaders");return a}function igt(e,t,r){r===void 0&&(r=t);var n=e.makeOffscreenCanvas(t,r),i=n.context=n.getContext("2d");return n.clear=function(){return i.clearRect(0,0,n.width,n.height)},n.clear(),n}function zF(e){var t=e.pixelRatio,r=e.cy.zoom(),n=e.cy.pan();return{zoom:r*t,pan:{x:n.x*t,y:n.y*t}}}function agt(e){var t=e.pixelRatio,r=e.cy.zoom();return r*t}function sgt(e,t,r,n,i){var a=n*r+t.x,s=i*r+t.y;return s=Math.round(e.canvasHeight-s),[a,s]}function ogt(e,t){return t.picking?!0:e.pstyle("background-fill").value!=="solid"||e.pstyle("background-image").strValue!=="none"?!1:e.pstyle("border-width").value===0||e.pstyle("border-opacity").value===0?!0:e.pstyle("border-style").value==="solid"}function lgt(e,t){if(e.length!==t.length)return!1;for(var r=0;r<e.length;r++)if(e[r]!==t[r])return!1;return!0}function Xm(e,t,r){var n=e[0]/255,i=e[1]/255,a=e[2]/255,s=t,l=r||new Array(4);return l[0]=n*s,l[1]=i*s,l[2]=a*s,l[3]=s,l}function L1(e,t){var r=t||new Array(4);return r[0]=(e>>0&255)/255,r[1]=(e>>8&255)/255,r[2]=(e>>16&255)/255,r[3]=(e>>24&255)/255,r}function cgt(e){return e[0]+(e[1]<<8)+(e[2]<<16)+(e[3]<<24)}function ugt(e,t){var r=e.createTexture();return r.buffer=function(n){e.bindTexture(e.TEXTURE_2D,r),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_S,e.CLAMP_TO_EDGE),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_T,e.CLAMP_TO_EDGE),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MAG_FILTER,e.LINEAR),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MIN_FILTER,e.LINEAR_MIPMAP_NEAREST),e.pixelStorei(e.UNPACK_PREMULTIPLY_ALPHA_WEBGL,!0),e.texImage2D(e.TEXTURE_2D,0,e.RGBA,e.RGBA,e.UNSIGNED_BYTE,n),e.generateMipmap(e.TEXTURE_2D),e.bindTexture(e.TEXTURE_2D,null)},r.deleteTexture=function(){e.deleteTexture(r)},r}function B2e(e,t){switch(t){case"float":return[1,e.FLOAT,4];case"vec2":return[2,e.FLOAT,4];case"vec3":return[3,e.FLOAT,4];case"vec4":return[4,e.FLOAT,4];case"int":return[1,e.INT,4];case"ivec2":return[2,e.INT,4]}}function $2e(e,t,r){switch(t){case e.FLOAT:return new Float32Array(r);case e.INT:return new Int32Array(r)}}function hgt(e,t,r,n,i,a){switch(t){case e.FLOAT:return new Float32Array(r.buffer,a*n,i);case e.INT:return new Int32Array(r.buffer,a*n,i)}}function dgt(e,t,r,n){var i=B2e(e,t),a=Ki(i,2),s=a[0],l=a[1],u=$2e(e,l,n),h=e.createBuffer();return e.bindBuffer(e.ARRAY_BUFFER,h),e.bufferData(e.ARRAY_BUFFER,u,e.STATIC_DRAW),l===e.FLOAT?e.vertexAttribPointer(r,s,l,!1,0,0):l===e.INT&&e.vertexAttribIPointer(r,s,l,0,0),e.enableVertexAttribArray(r),e.bindBuffer(e.ARRAY_BUFFER,null),h}function xu(e,t,r,n){var i=B2e(e,r),a=Ki(i,3),s=a[0],l=a[1],u=a[2],h=$2e(e,l,t*s),d=s*u,f=e.createBuffer();e.bindBuffer(e.ARRAY_BUFFER,f),e.bufferData(e.ARRAY_BUFFER,t*d,e.DYNAMIC_DRAW),e.enableVertexAttribArray(n),l===e.FLOAT?e.vertexAttribPointer(n,s,l,!1,d,0):l===e.INT&&e.vertexAttribIPointer(n,s,l,d,0),e.vertexAttribDivisor(n,1),e.bindBuffer(e.ARRAY_BUFFER,null);for(var p=new Array(t),m=0;m<t;m++)p[m]=hgt(e,l,h,d,s,m);return f.dataArray=h,f.stride=d,f.size=s,f.getView=function(g){return p[g]},f.setPoint=function(g,y,v){var x=p[g];x[0]=y,x[1]=v},f.bufferSubData=function(g){e.bindBuffer(e.ARRAY_BUFFER,f),g?e.bufferSubData(e.ARRAY_BUFFER,0,h,0,g*s):e.bufferSubData(e.ARRAY_BUFFER,0,h)},f}function fgt(e,t,r){for(var n=9,i=new Float32Array(t*n),a=new Array(t),s=0;s<t;s++){var l=s*n*4;a[s]=new Float32Array(i.buffer,l,n)}var u=e.createBuffer();e.bindBuffer(e.ARRAY_BUFFER,u),e.bufferData(e.ARRAY_BUFFER,i.byteLength,e.DYNAMIC_DRAW);for(var h=0;h<3;h++){var d=r+h;e.enableVertexAttribArray(d),e.vertexAttribPointer(d,3,e.FLOAT,!1,36,h*12),e.vertexAttribDivisor(d,1)}return e.bindBuffer(e.ARRAY_BUFFER,null),u.getMatrixView=function(f){return a[f]},u.setData=function(f,p){a[p].set(f,0)},u.bufferSubData=function(){e.bindBuffer(e.ARRAY_BUFFER,u),e.bufferSubData(e.ARRAY_BUFFER,0,i)},u}function pgt(e){var t=e.createFramebuffer();e.bindFramebuffer(e.FRAMEBUFFER,t);var r=e.createTexture();return e.bindTexture(e.TEXTURE_2D,r),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MIN_FILTER,e.LINEAR),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_S,e.CLAMP_TO_EDGE),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_T,e.CLAMP_TO_EDGE),e.framebufferTexture2D(e.FRAMEBUFFER,e.COLOR_ATTACHMENT0,e.TEXTURE_2D,r,0),e.bindFramebuffer(e.FRAMEBUFFER,null),t.setFramebufferAttachmentSizes=function(n,i){e.bindTexture(e.TEXTURE_2D,r),e.texImage2D(e.TEXTURE_2D,0,e.RGBA,n,i,0,e.RGBA,e.UNSIGNED_BYTE,null)},t}function q$(){var e=new Zxe(9);return Zxe!=Float32Array&&(e[1]=0,e[2]=0,e[3]=0,e[5]=0,e[6]=0,e[7]=0),e[0]=1,e[4]=1,e[8]=1,e}function Qxe(e){return e[0]=1,e[1]=0,e[2]=0,e[3]=0,e[4]=1,e[5]=0,e[6]=0,e[7]=0,e[8]=1,e}function mgt(e,t,r){var n=t[0],i=t[1],a=t[2],s=t[3],l=t[4],u=t[5],h=t[6],d=t[7],f=t[8],p=r[0],m=r[1],g=r[2],y=r[3],v=r[4],x=r[5],b=r[6],T=r[7],k=r[8];return e[0]=p*n+m*s+g*h,e[1]=p*i+m*l+g*d,e[2]=p*a+m*u+g*f,e[3]=y*n+v*s+x*h,e[4]=y*i+v*l+x*d,e[5]=y*a+v*u+x*f,e[6]=b*n+T*s+k*h,e[7]=b*i+T*l+k*d,e[8]=b*a+T*u+k*f,e}function X5(e,t,r){var n=t[0],i=t[1],a=t[2],s=t[3],l=t[4],u=t[5],h=t[6],d=t[7],f=t[8],p=r[0],m=r[1];return e[0]=n,e[1]=i,e[2]=a,e[3]=s,e[4]=l,e[5]=u,e[6]=p*n+m*s+h,e[7]=p*i+m*l+d,e[8]=p*a+m*u+f,e}function Jxe(e,t,r){var n=t[0],i=t[1],a=t[2],s=t[3],l=t[4],u=t[5],h=t[6],d=t[7],f=t[8],p=Math.sin(r),m=Math.cos(r);return e[0]=m*n+p*s,e[1]=m*i+p*l,e[2]=m*a+p*u,e[3]=m*s-p*n,e[4]=m*l-p*i,e[5]=m*u-p*a,e[6]=h,e[7]=d,e[8]=f,e}function dF(e,t,r){var n=r[0],i=r[1];return e[0]=n*t[0],e[1]=n*t[1],e[2]=n*t[2],e[3]=i*t[3],e[4]=i*t[4],e[5]=i*t[5],e[6]=t[6],e[7]=t[7],e[8]=t[8],e}function ggt(e,t,r){return e[0]=2/t,e[1]=0,e[2]=0,e[3]=0,e[4]=-2/r,e[5]=0,e[6]=-1,e[7]=1,e[8]=1,e}function xgt(e,t){return e.intersection?e.intersection(t):new Set(K5(e).filter(function(r){return t.has(r)}))}function Agt(e){var t=e.cy.container(),r=t&&t.style&&t.style.backgroundColor||"white";return dbe(r)}function z2e(e,t){var r=e._private.rscratch;return mo(r,"labelWrapCachedLines",t)||[]}function Rgt(e){{var t=e.render;e.render=function(a){a=a||{};var s=e.cy;e.webgl&&(s.zoom()>I2e?(_gt(e),t.call(e,a)):(Lgt(e),V2e(e,a,NT.SCREEN)))}}{var r=e.matchCanvasSize;e.matchCanvasSize=function(a){r.call(e,a),e.pickingFrameBuffer.setFramebufferAttachmentSizes(e.canvasWidth,e.canvasHeight),e.pickingFrameBuffer.needsDraw=!0}}e.findNearestElements=function(a,s,l,u){return Ogt(e,a,s)};{var n=e.invalidateCachedZSortedEles;e.invalidateCachedZSortedEles=function(){n.call(e),e.pickingFrameBuffer.needsDraw=!0}}{var i=e.notify;e.notify=function(a,s){i.call(e,a,s),a==="viewport"||a==="bounds"?e.pickingFrameBuffer.needsDraw=!0:a==="background"&&e.drawing.invalidate(s,{type:"node-body"})}}}function _gt(e){var t=e.data.contexts[e.WEBGL];t.clear(t.COLOR_BUFFER_BIT|t.DEPTH_BUFFER_BIT)}function Lgt(e){var t=o(function(n){n.save(),n.setTransform(1,0,0,1,0,0),n.clearRect(0,0,e.canvasWidth,e.canvasHeight),n.restore()},"clear");t(e.data.contexts[e.NODE]),t(e.data.contexts[e.DRAG])}function Dgt(e){var t=e.canvasWidth,r=e.canvasHeight,n=zF(e),i=n.pan,a=n.zoom,s=q$();X5(s,s,[i.x,i.y]),dF(s,s,[a,a]);var l=q$();ggt(l,t,r);var u=q$();return mgt(u,l,s),u}function G2e(e,t){var r=e.canvasWidth,n=e.canvasHeight,i=zF(e),a=i.pan,s=i.zoom;t.setTransform(1,0,0,1,0,0),t.clearRect(0,0,r,n),t.translate(a.x,a.y),t.scale(s,s)}function Igt(e,t){e.drawSelectionRectangle(t,function(r){return G2e(e,r)})}function Mgt(e){var t=e.data.contexts[e.NODE];t.save(),G2e(e,t),t.strokeStyle="rgba(0, 0, 0, 0.3)",t.beginPath(),t.moveTo(-1e3,0),t.lineTo(1e3,0),t.stroke(),t.beginPath(),t.moveTo(0,-1e3),t.lineTo(0,1e3),t.stroke(),t.restore()}function Ngt(e){var t=o(function(i,a,s){for(var l=i.atlasManager.getAtlasCollection(a),u=e.data.contexts[e.NODE],h=l.atlases,d=0;d<h.length;d++){var f=h[d],p=f.canvas;if(p){var m=p.width,g=p.height,y=m*d,v=p.height*s,x=.4;u.save(),u.scale(x,x),u.drawImage(p,y,v),u.strokeStyle="black",u.rect(y,v,m,g),u.stroke(),u.restore()}}},"draw"),r=0;t(e.drawing,"node",r++),t(e.drawing,"label",r++)}function Pgt(e,t,r,n,i){var a,s,l,u,h=zF(e),d=h.pan,f=h.zoom;{var p=sgt(e,d,f,t,r),m=Ki(p,2),g=m[0],y=m[1],v=6;a=g-v/2,s=y-v/2,l=v,u=v}if(l===0||u===0)return[];var x=e.data.contexts[e.WEBGL];x.bindFramebuffer(x.FRAMEBUFFER,e.pickingFrameBuffer),e.pickingFrameBuffer.needsDraw&&(x.viewport(0,0,x.canvas.width,x.canvas.height),V2e(e,null,NT.PICKING),e.pickingFrameBuffer.needsDraw=!1);var b=l*u,T=new Uint8Array(b*4);x.readPixels(a,s,l,u,x.RGBA,x.UNSIGNED_BYTE,T),x.bindFramebuffer(x.FRAMEBUFFER,null);for(var k=new Set,C=0;C<b;C++){var w=T.slice(C*4,C*4+4),S=cgt(w)-1;S>=0&&k.add(S)}return k}function Ogt(e,t,r){var n=Pgt(e,t,r),i=e.getCachedZSortedEles(),a,s,l=yo(n),u;try{for(l.s();!(u=l.n()).done;){var h=u.value,d=i[h];if(!a&&d.isNode()&&(a=d),!s&&d.isEdge()&&(s=d),a&&s)break}}catch(f){l.e(f)}finally{l.f()}return[a,s].filter(Boolean)}function X$(e,t,r){var n=e.drawing;t+=1,r.isNode()?(n.drawNode(r,t,"node-underlay"),n.drawNode(r,t,"node-body"),n.drawTexture(r,t,"label"),n.drawNode(r,t,"node-overlay")):(n.drawEdgeLine(r,t),n.drawEdgeArrow(r,t,"source"),n.drawEdgeArrow(r,t,"target"),n.drawTexture(r,t,"label"),n.drawTexture(r,t,"edge-source-label"),n.drawTexture(r,t,"edge-target-label"))}function V2e(e,t,r){var n;e.webglDebug&&(n=performance.now());var i=e.drawing,a=0;if(r.screen&&e.data.canvasNeedsRedraw[e.SELECT_BOX]&&Igt(e,t),e.data.canvasNeedsRedraw[e.NODE]||r.picking){var s=e.data.contexts[e.WEBGL];r.screen?(s.clearColor(0,0,0,0),s.enable(s.BLEND),s.blendFunc(s.ONE,s.ONE_MINUS_SRC_ALPHA)):s.disable(s.BLEND),s.clear(s.COLOR_BUFFER_BIT|s.DEPTH_BUFFER_BIT),s.viewport(0,0,s.canvas.width,s.canvas.height);var l=Dgt(e),u=e.getCachedZSortedEles();if(a=u.length,i.startFrame(l,r),r.screen){for(var h=0;h<u.nondrag.length;h++)X$(e,h,u.nondrag[h]);for(var d=0;d<u.drag.length;d++)X$(e,d,u.drag[d])}else if(r.picking)for(var f=0;f<u.length;f++)X$(e,f,u[f]);i.endFrame(),r.screen&&e.webglDebugShowAtlases&&(Mgt(e),Ngt(e)),e.data.canvasNeedsRedraw[e.NODE]=!1,e.data.canvasNeedsRedraw[e.DRAG]=!1}if(e.webglDebug){var p=performance.now(),m=!1,g=Math.ceil(p-n),y=i.getDebugInfo(),v=["".concat(a," elements"),"".concat(y.totalInstances," instances"),"".concat(y.batchCount," batches"),"".concat(y.totalAtlases," atlases"),"".concat(y.wrappedCount," wrapped textures"),"".concat(y.simpleCount," simple shapes")].join(", ");if(m)console.log("WebGL (".concat(r.name,") - time ").concat(g,"ms, ").concat(v));else{console.log("WebGL (".concat(r.name,") - frame time ").concat(g,"ms")),console.log("Totals:"),console.log("  ".concat(v)),console.log("Texture Atlases Used:");var x=y.atlasInfo,b=yo(x),T;try{for(b.s();!(T=b.n()).done;){var k=T.value;console.log("  ".concat(k.type,": ").concat(k.keyCount," keys, ").concat(k.atlasCount," atlases"))}}catch(C){b.e(C)}finally{b.f()}console.log("")}}e.data.gc&&(console.log("Garbage Collect!"),e.data.gc=!1,i.gc())}function Bgt(e,t){for(var r=atob(e),n=new ArrayBuffer(r.length),i=new Uint8Array(n),a=0;a<r.length;a++)i[a]=r.charCodeAt(a);return new Blob([n],{type:t})}function ibe(e){var t=e.indexOf(",");return e.substr(t+1)}function q2e(e,t,r){var n=o(function(){return t.toDataURL(r,e.quality)},"getB64Uri");switch(e.output){case"blob-promise":return new q1(function(i,a){try{t.toBlob(function(s){s!=null?i(s):a(new Error("`canvas.toBlob()` sent a null value in its callback"))},r,e.quality)}catch(s){a(s)}});case"blob":return Bgt(ibe(n()),r);case"base64":return ibe(n());case"base64uri":default:return n()}}function U2e(e){var t=this,r=t.cy.window(),n=r.document;e.webgl&&(Kr.CANVAS_LAYERS=t.CANVAS_LAYERS=4,console.log("webgl rendering enabled")),t.data={canvases:new Array(Kr.CANVAS_LAYERS),contexts:new Array(Kr.CANVAS_LAYERS),canvasNeedsRedraw:new Array(Kr.CANVAS_LAYERS),bufferCanvases:new Array(Kr.BUFFER_COUNT),bufferContexts:new Array(Kr.CANVAS_LAYERS)};var i="-webkit-tap-highlight-color",a="rgba(0,0,0,0)";t.data.canvasContainer=n.createElement("div");var s=t.data.canvasContainer.style;t.data.canvasContainer.style[i]=a,s.position="relative",s.zIndex="0",s.overflow="hidden";var l=e.cy.container();l.appendChild(t.data.canvasContainer),l.style[i]=a;var u={"-webkit-user-select":"none","-moz-user-select":"-moz-none","user-select":"none","-webkit-tap-highlight-color":"rgba(0,0,0,0)","outline-style":"none"};Lut()&&(u["-ms-touch-action"]="none",u["touch-action"]="none");for(var h=0;h<Kr.CANVAS_LAYERS;h++){var d=t.data.canvases[h]=n.createElement("canvas"),f=Kr.CANVAS_TYPES[h];t.data.contexts[h]=d.getContext(f),t.data.contexts[h]||pi("Could not create canvas of type "+f),Object.keys(u).forEach(function(te){d.style[te]=u[te]}),d.style.position="absolute",d.setAttribute("data-id","layer"+h),d.style.zIndex=String(Kr.CANVAS_LAYERS-h),t.data.canvasContainer.appendChild(d),t.data.canvasNeedsRedraw[h]=!1}t.data.topCanvas=t.data.canvases[0],t.data.canvases[Kr.NODE].setAttribute("data-id","layer"+Kr.NODE+"-node"),t.data.canvases[Kr.SELECT_BOX].setAttribute("data-id","layer"+Kr.SELECT_BOX+"-selectbox"),t.data.canvases[Kr.DRAG].setAttribute("data-id","layer"+Kr.DRAG+"-drag"),t.data.canvases[Kr.WEBGL]&&t.data.canvases[Kr.WEBGL].setAttribute("data-id","layer"+Kr.WEBGL+"-webgl");for(var h=0;h<Kr.BUFFER_COUNT;h++)t.data.bufferCanvases[h]=n.createElement("canvas"),t.data.bufferContexts[h]=t.data.bufferCanvases[h].getContext("2d"),t.data.bufferCanvases[h].style.position="absolute",t.data.bufferCanvases[h].setAttribute("data-id","buffer"+h),t.data.bufferCanvases[h].style.zIndex=String(-h-1),t.data.bufferCanvases[h].style.visibility="hidden";t.pathsEnabled=!0;var p=Ns(),m=o(function(le){return{x:(le.x1+le.x2)/2,y:(le.y1+le.y2)/2}},"getBoxCenter"),g=o(function(le){return{x:-le.w/2,y:-le.h/2}},"getCenterOffset"),y=o(function(le){var ie=le[0]._private,ae=ie.oldBackgroundTimestamp===ie.backgroundTimestamp;return!ae},"backgroundTimestampHasChanged"),v=o(function(le){return le[0]._private.nodeKey},"getStyleKey"),x=o(function(le){return le[0]._private.labelStyleKey},"getLabelKey"),b=o(function(le){return le[0]._private.sourceLabelStyleKey},"getSourceLabelKey"),T=o(function(le){return le[0]._private.targetLabelStyleKey},"getTargetLabelKey"),k=o(function(le,ie,ae,Re,be){return t.drawElement(le,ie,ae,!1,!1,be)},"drawElement"),C=o(function(le,ie,ae,Re,be){return t.drawElementText(le,ie,ae,Re,"main",be)},"drawLabel"),w=o(function(le,ie,ae,Re,be){return t.drawElementText(le,ie,ae,Re,"source",be)},"drawSourceLabel"),S=o(function(le,ie,ae,Re,be){return t.drawElementText(le,ie,ae,Re,"target",be)},"drawTargetLabel"),R=o(function(le){return le.boundingBox(),le[0]._private.bodyBounds},"getElementBox"),L=o(function(le){return le.boundingBox(),le[0]._private.labelBounds.main||p},"getLabelBox"),N=o(function(le){return le.boundingBox(),le[0]._private.labelBounds.source||p},"getSourceLabelBox"),I=o(function(le){return le.boundingBox(),le[0]._private.labelBounds.target||p},"getTargetLabelBox"),_=o(function(le,ie){return ie},"isLabelVisibleAtScale"),A=o(function(le){return m(R(le))},"getElementRotationPoint"),M=o(function(le,ie,ae){var Re=le?le+"-":"";return{x:ie.x+ae.pstyle(Re+"text-margin-x").pfValue,y:ie.y+ae.pstyle(Re+"text-margin-y").pfValue}},"addTextMargin"),D=o(function(le,ie,ae){var Re=le[0]._private.rscratch;return{x:Re[ie],y:Re[ae]}},"getRsPt"),P=o(function(le){return M("",D(le,"labelX","labelY"),le)},"getLabelRotationPoint"),B=o(function(le){return M("source",D(le,"sourceLabelX","sourceLabelY"),le)},"getSourceLabelRotationPoint"),O=o(function(le){return M("target",D(le,"targetLabelX","targetLabelY"),le)},"getTargetLabelRotationPoint"),$=o(function(le){return g(R(le))},"getElementRotationOffset"),V=o(function(le){return g(N(le))},"getSourceLabelRotationOffset"),G=o(function(le){return g(I(le))},"getTargetLabelRotationOffset"),z=o(function(le){var ie=L(le),ae=g(L(le));if(le.isNode()){switch(le.pstyle("text-halign").value){case"left":ae.x=-ie.w-(ie.leftPad||0);break;case"right":ae.x=-(ie.rightPad||0);break}switch(le.pstyle("text-valign").value){case"top":ae.y=-ie.h-(ie.topPad||0);break;case"bottom":ae.y=-(ie.botPad||0);break}}return ae},"getLabelRotationOffset"),W=t.data.eleTxrCache=new DT(t,{getKey:v,doesEleInvalidateKey:y,drawElement:k,getBoundingBox:R,getRotationPoint:A,getRotationOffset:$,allowEdgeTxrCaching:!1,allowParentTxrCaching:!1}),H=t.data.lblTxrCache=new DT(t,{getKey:x,drawElement:C,getBoundingBox:L,getRotationPoint:P,getRotationOffset:z,isVisible:_}),j=t.data.slbTxrCache=new DT(t,{getKey:b,drawElement:w,getBoundingBox:N,getRotationPoint:B,getRotationOffset:V,isVisible:_}),Q=t.data.tlbTxrCache=new DT(t,{getKey:T,drawElement:S,getBoundingBox:I,getRotationPoint:O,getRotationOffset:G,isVisible:_}),U=t.data.lyrTxrCache=new M2e(t);t.onUpdateEleCalcs(o(function(le,ie){W.invalidateElements(ie),H.invalidateElements(ie),j.invalidateElements(ie),Q.invalidateElements(ie),U.invalidateElements(ie);for(var ae=0;ae<ie.length;ae++){var Re=ie[ae]._private;Re.oldBackgroundTimestamp=Re.backgroundTimestamp}},"invalidateTextureCaches"));var oe=o(function(le){for(var ie=0;ie<le.length;ie++)U.enqueueElementRefinement(le[ie].ele)},"refineInLayers");W.onDequeue(oe),H.onDequeue(oe),j.onDequeue(oe),Q.onDequeue(oe),e.webgl&&t.initWebgl(e,{getStyleKey:v,getLabelKey:x,getSourceLabelKey:b,getTargetLabelKey:T,drawElement:k,drawLabel:C,drawSourceLabel:w,drawTargetLabel:S,getElementBox:R,getLabelBox:L,getSourceLabelBox:N,getTargetLabelBox:I,getElementRotationPoint:A,getElementRotationOffset:$,getLabelRotationPoint:P,getSourceLabelRotationPoint:B,getTargetLabelRotationPoint:O,getLabelRotationOffset:z,getSourceLabelRotationOffset:V,getTargetLabelRotationOffset:G})}function X2e(e,t,r){var n=r,i=o(function(R){In("Can not register `"+t+"` for `"+e+"` since `"+R+"` already exists in the prototype and can not be overridden")},"overrideErr");if(e==="core"){if(WT.prototype[t])return i(t);WT.prototype[t]=r}else if(e==="collection"){if(Ga.prototype[t])return i(t);Ga.prototype[t]=r}else if(e==="layout"){for(var a=o(function(R){this.options=R,r.call(this,R),cn(this._private)||(this._private={}),this._private.cy=R.cy,this._private.listeners=[],this.createEmitter()},"Layout"),s=a.prototype=Object.create(r.prototype),l=[],u=0;u<l.length;u++){var h=l[u];s[h]=s[h]||function(){return this}}s.start&&!s.run?s.run=function(){return this.start(),this}:!s.start&&s.run&&(s.start=function(){return this.run(),this});var d=r.prototype.stop;s.stop=function(){var S=this.options;if(S&&S.animate){var R=this.animations;if(R)for(var L=0;L<R.length;L++)R[L].stop()}return d?d.call(this):this.emit("layoutstop"),this},s.destroy||(s.destroy=function(){return this}),s.cy=function(){return this._private.cy};var f=o(function(R){return R._private.cy},"getCy"),p={addEventFields:o(function(R,L){L.layout=R,L.cy=f(R),L.target=R},"addEventFields"),bubble:o(function(){return!0},"bubble"),parent:o(function(R){return f(R)},"parent")};br(s,{createEmitter:o(function(){return this._private.emitter=new bA(p,this),this},"createEmitter"),emitter:o(function(){return this._private.emitter},"emitter"),on:o(function(R,L){return this.emitter().on(R,L),this},"on"),one:o(function(R,L){return this.emitter().one(R,L),this},"one"),once:o(function(R,L){return this.emitter().one(R,L),this},"once"),removeListener:o(function(R,L){return this.emitter().removeListener(R,L),this},"removeListener"),removeAllListeners:o(function(){return this.emitter().removeAllListeners(),this},"removeAllListeners"),emit:o(function(R,L){return this.emitter().emit(R,L),this},"emit")}),Dn.eventAliasesOn(s),n=a}else if(e==="renderer"&&t!=="null"&&t!=="base"){var m=K2e("renderer","base"),g=m.prototype,y=r,v=r.prototype,x=o(function(){m.apply(this,arguments),y.apply(this,arguments)},"Renderer"),b=x.prototype;for(var T in g){var k=g[T],C=v[T]!=null;if(C)return i(T);b[T]=k}for(var w in v)b[w]=v[w];g.clientFunctions.forEach(function(S){b[S]=b[S]||function(){pi("Renderer does not implement `renderer."+S+"()` on its prototype")}}),n=x}else if(e==="__proto__"||e==="constructor"||e==="prototype")return pi(e+" is an illegal type to be registered, possibly lead to prototype pollutions");return fbe({map:Y2e,keys:[e,t],value:n})}function K2e(e,t){return pbe({map:Y2e,keys:[e,t]})}function Vgt(e,t,r,n,i){return fbe({map:j2e,keys:[e,t,r,n],value:i})}function Wgt(e,t,r,n){return pbe({map:j2e,keys:[e,t,r,n]})}var oa,D1e,Tut,obe,Cut,wut,HT,fr,Ci,Hn,cn,kut,Gt,Sut,Z5,Ho,UT,lbe,yF,cbe,Eut,Gf,Aut,Rut,_ut,Lut,z1,vF,uA,ube,I1e,Of,la,Dut,Iut,Mut,Nut,Put,Out,hbe,But,br,$ut,Fut,zut,Gut,dbe,Vut,fbe,pbe,E5,bB,M1e,TB,N1e,CB,P1e,wB,O1e,kB,B1e,SB,$1e,EB,F1e,AB,z1e,RB,G1e,_B,V1e,LB,W1e,DB,q1e,IB,H1e,MB,U1e,Qut,KT,NB,gbe,Jut,Q5,Ph,Jm,ybe,I1,vbe,PT,OT,eht,Mf,A5,Y1e,rg,xbe,tht,nht,j1e,aht,sht,bF,bbe,J5,X1e,TF,pi,Tbe,In,oht,Tu,lht,Cbe,cht,wbe,Va,Vf,CF,uht,mo,Mh,hht,Nh,dht,fht,W1,dA,K1e,BT,F5,pht,Z1e,PB,Q1e,yht,ZT,vht,xht,bht,Tht,Cht,wht,kht,Sht,Eht,Aht,Rht,OB,_ht,BB,Lht,fA,kbe,M1,Dht,Iht,Mht,Nht,Pht,R5,wF,kF,ng,Zm,Oht,Aa,O1,Bht,$T,Ns,$ht,Fht,zht,Sbe,z5,G5,J1e,SF,Bf,eve,Ebe,Ght,Abe,qht,Hht,Uht,Yht,jht,Xht,go,Oh,Kht,eA,tA,Zht,tg,_T,$B,$f,Qht,FT,Jht,_5,Ms,Rbe,Z$,Wf,_be,EF,edt,Q$,tdt,rdt,tve,B1,rve,$1,ndt,J$,idt,adt,sdt,odt,Lbe,ldt,cdt,udt,hdt,ddt,fdt,pdt,nve,mdt,gdt,Dbe,ive,ave,ydt,vdt,CT,G1,xdt,AF,rA,zB,Ibe,Mbe,bdt,Tdt,Cdt,sve,ove,wdt,kdt,Sdt,Edt,Adt,lve,Rdt,_dt,Ldt,Ddt,cve,N1,eF,tF,uve,Idt,Mdt,Ndt,Pdt,Odt,Bdt,hve,$dt,dve,Fdt,zdt,Gdt,L5,Vdt,D5,Wdt,Nbe,Pbe,Obe,Bbe,vc,fve,$be,pve,mve,Fbe,q1,rF,ig,qdt,GB,gve,VB,yve,WB,vve,qB,xve,HB,bve,UB,Tve,YB,Cve,jB,wve,XB,kve,KB,Sve,ZB,Eve,QB,Ave,JB,Rve,e$,_ve,t$,Lve,r$,Dve,n$,Ive,i$,Mve,a$,Nve,s$,Pve,o$,Ove,l$,Bve,c$,$ve,u$,Fve,h$,zve,d$,Gve,f$,Vve,p$,Wve,m$,qve,g$,Hve,y$,Uve,v$,Yve,x$,jve,b$,Xve,T$,Kve,C$,Zve,w$,Qve,k$,Jve,S$,exe,E$,txe,A$,rxe,R$,nxe,_$,ixe,wft,kft,L$,axe,D$,sxe,I$,oxe,M$,lxe,N$,cxe,P$,uxe,Dft,Ift,O$,hxe,B$,dxe,Pft,Oft,Bft,$ft,Dn,Fft,V5,ln,zn,er,nF,zft,Gft,Vft,S1,Nf,iF,Wft,qft,Hft,Uft,Yft,Hbe,jft,Xft,LF,Kft,Ii,si,Zft,Qft,Jft,qf,Hf,Ff,Sl,V1,zT,jbe,tpt,xA,yc,Xbe,Kbe,fxe,rpt,F1,Xf,kl,gc,Pf,wT,I5,F$,pxe,Zbe,npt,ipt,Qbe,Jbe,mxe,GT,gxe,yxe,apt,LT,QT,e2e,spt,opt,lpt,cpt,upt,hpt,dpt,fpt,ppt,vxe,mpt,gpt,ypt,t2e,r2e,vpt,n2e,xxe,xpt,Uf,i2e,bxe,bpt,Tpt,N5,a2e,s2e,gn,Cpt,o2e,nA,wpt,kpt,W5,za,H1,Spt,Ept,Apt,Rpt,zf,us,Cxe,wxe,kxe,Ga,Zn,_pt,Dpt,Kn,q5,Npt,Ppt,P5,c2e,aF,H5,Opt,Bpt,sF,U5,_a,IT,$pt,JT,MF,Cu,wA,NF,Xi,kA,Ra,hs,Fpt,zpt,ag,VT,WT,iA,Gpt,Vpt,R1,Dxe,Wpt,qpt,G$,Hpt,Upt,Ypt,f2e,jpt,Xpt,p2e,Kpt,Zpt,Qpt,Ixe,Jpt,emt,aA,tmt,rmt,nmt,imt,amt,m2e,Mxe,smt,omt,lmt,cmt,umt,Nxe,Pxe,OF,og,sA,oF,lF,bu,wl,Oxe,Bxe,eg,Y5,Ih,jm,Qm,vu,_1,O5,b2e,T2e,cF,uF,$xe,Fxe,hmt,dmt,qT,fmt,ds,eC,$F,wu,k2e,S2e,mmt,E2e,zxe,Gxe,EA,AA,A2e,R2e,_2e,gmt,ymt,Y1,Bh,tC,Vxe,vmt,L2e,j1,V$,D2e,xmt,Wxe,B5,j5,hF,I2e,bmt,Tmt,Cmt,wmt,kmt,Smt,Emt,Amt,Rmt,_mt,Lmt,Dmt,Imt,P1,Mmt,DT,ua,Nmt,MT,oA,Pmt,Omt,Bmt,$mt,Fmt,zmt,Gmt,Vmt,qxe,Wmt,Hxe,qmt,M2e,Wa,Uxe,Hmt,N2e,Yxe,ku,Kmt,Zmt,Qmt,Jmt,egt,W$,$h,P2e,FF,lg,Kf,O2e,Ps,rgt,ET,Zxe,ygt,vgt,bgt,Tgt,Cgt,wgt,kgt,Sgt,NT,lA,H$,ebe,tbe,U$,D1,$5,AT,RT,Egt,F2e,Y$,j$,Zf,rbe,nbe,fF,pF,W2e,Km,rC,H2e,$gt,Kr,Fgt,zgt,Ggt,Y2e,j2e,mF,cA,sg,qgt,El,GF=F(()=>{"use strict";o(K$,"_arrayLikeToArray");o(fut,"_arrayWithHoles");o(put,"_arrayWithoutHoles");o(Yf,"_classCallCheck");o(mut,"_defineProperties");o(jf,"_createClass");o(yo,"_createForOfIteratorHelper");o(abe,"_defineProperty$1");o(gut,"_iterableToArray");o(yut,"_iterableToArrayLimit");o(vut,"_nonIterableRest");o(xut,"_nonIterableSpread");o(Ki,"_slicedToArray");o(K5,"_toConsumableArray");o(but,"_toPrimitive");o(sbe,"_toPropertyKey");o(ca,"_typeof");o(gF,"_unsupportedIterableToArray");oa=typeof window>"u"?null:window,D1e=oa?oa.navigator:null;oa&&oa.document;Tut=ca(""),obe=ca({}),Cut=ca(function(){}),wut=typeof HTMLElement>"u"?"undefined":ca(HTMLElement),HT=o(function(t){return t&&t.instanceString&&Ci(t.instanceString)?t.instanceString():null},"instanceStr"),fr=o(function(t){return t!=null&&ca(t)==Tut},"string"),Ci=o(function(t){return t!=null&&ca(t)===Cut},"fn"),Hn=o(function(t){return!Ho(t)&&(Array.isArray?Array.isArray(t):t!=null&&t instanceof Array)},"array"),cn=o(function(t){return t!=null&&ca(t)===obe&&!Hn(t)&&t.constructor===Object},"plainObject"),kut=o(function(t){return t!=null&&ca(t)===obe},"object"),Gt=o(function(t){return t!=null&&ca(t)===ca(1)&&!isNaN(t)},"number"),Sut=o(function(t){return Gt(t)&&Math.floor(t)===t},"integer"),Z5=o(function(t){if(wut!=="undefined")return t!=null&&t instanceof HTMLElement},"htmlElement"),Ho=o(function(t){return UT(t)||lbe(t)},"elementOrCollection"),UT=o(function(t){return HT(t)==="collection"&&t._private.single},"element"),lbe=o(function(t){return HT(t)==="collection"&&!t._private.single},"collection"),yF=o(function(t){return HT(t)==="core"},"core"),cbe=o(function(t){return HT(t)==="stylesheet"},"stylesheet"),Eut=o(function(t){return HT(t)==="event"},"event"),Gf=o(function(t){return t==null?!0:!!(t===""||t.match(/^\s+$/))},"emptyString"),Aut=o(function(t){return typeof HTMLElement>"u"?!1:t instanceof HTMLElement},"domElement"),Rut=o(function(t){return cn(t)&&Gt(t.x1)&&Gt(t.x2)&&Gt(t.y1)&&Gt(t.y2)},"boundingBox"),_ut=o(function(t){return kut(t)&&Ci(t.then)},"promise"),Lut=o(function(){return D1e&&D1e.userAgent.match(/msie|trident|edge/i)},"ms"),z1=o(function(t,r){r||(r=o(function(){if(arguments.length===1)return arguments[0];if(arguments.length===0)return"undefined";for(var a=[],s=0;s<arguments.length;s++)a.push(arguments[s]);return a.join("$")},"keyFn"));var n=o(function(){var a=this,s=arguments,l,u=r.apply(a,s),h=n.cache;return(l=h[u])||(l=h[u]=t.apply(a,s)),l},"memoizedFn");return n.cache={},n},"memoize"),vF=z1(function(e){return e.replace(/([A-Z])/g,function(t){return"-"+t.toLowerCase()})}),uA=z1(function(e){return e.replace(/(-\w)/g,function(t){return t[1].toUpperCase()})}),ube=z1(function(e,t){return e+t[0].toUpperCase()+t.substring(1)},function(e,t){return e+"$"+t}),I1e=o(function(t){return Gf(t)?t:t.charAt(0).toUpperCase()+t.substring(1)},"capitalize"),Of=o(function(t,r){return t.slice(-1*r.length)===r},"endsWith"),la="(?:[-+]?(?:(?:\\d+|\\d*\\.\\d+)(?:[Ee][+-]?\\d+)?))",Dut="rgb[a]?\\(("+la+"[%]?)\\s*,\\s*("+la+"[%]?)\\s*,\\s*("+la+"[%]?)(?:\\s*,\\s*("+la+"))?\\)",Iut="rgb[a]?\\((?:"+la+"[%]?)\\s*,\\s*(?:"+la+"[%]?)\\s*,\\s*(?:"+la+"[%]?)(?:\\s*,\\s*(?:"+la+"))?\\)",Mut="hsl[a]?\\(("+la+")\\s*,\\s*("+la+"[%])\\s*,\\s*("+la+"[%])(?:\\s*,\\s*("+la+"))?\\)",Nut="hsl[a]?\\((?:"+la+")\\s*,\\s*(?:"+la+"[%])\\s*,\\s*(?:"+la+"[%])(?:\\s*,\\s*(?:"+la+"))?\\)",Put="\\#[0-9a-fA-F]{3}",Out="\\#[0-9a-fA-F]{6}",hbe=o(function(t,r){return t<r?-1:t>r?1:0},"ascending"),But=o(function(t,r){return-1*hbe(t,r)},"descending"),br=Object.assign!=null?Object.assign.bind(Object):function(e){for(var t=arguments,r=1;r<t.length;r++){var n=t[r];if(n!=null)for(var i=Object.keys(n),a=0;a<i.length;a++){var s=i[a];e[s]=n[s]}}return e},$ut=o(function(t){if(!(!(t.length===4||t.length===7)||t[0]!=="#")){var r=t.length===4,n,i,a,s=16;return r?(n=parseInt(t[1]+t[1],s),i=parseInt(t[2]+t[2],s),a=parseInt(t[3]+t[3],s)):(n=parseInt(t[1]+t[2],s),i=parseInt(t[3]+t[4],s),a=parseInt(t[5]+t[6],s)),[n,i,a]}},"hex2tuple"),Fut=o(function(t){var r,n,i,a,s,l,u,h;function d(g,y,v){return v<0&&(v+=1),v>1&&(v-=1),v<1/6?g+(y-g)*6*v:v<1/2?y:v<2/3?g+(y-g)*(2/3-v)*6:g}o(d,"hue2rgb");var f=new RegExp("^"+Mut+"$").exec(t);if(f){if(n=parseInt(f[1]),n<0?n=(360- -1*n%360)%360:n>360&&(n=n%360),n/=360,i=parseFloat(f[2]),i<0||i>100||(i=i/100,a=parseFloat(f[3]),a<0||a>100)||(a=a/100,s=f[4],s!==void 0&&(s=parseFloat(s),s<0||s>1)))return;if(i===0)l=u=h=Math.round(a*255);else{var p=a<.5?a*(1+i):a+i-a*i,m=2*a-p;l=Math.round(255*d(m,p,n+1/3)),u=Math.round(255*d(m,p,n)),h=Math.round(255*d(m,p,n-1/3))}r=[l,u,h,s]}return r},"hsl2tuple"),zut=o(function(t){var r,n=new RegExp("^"+Dut+"$").exec(t);if(n){r=[];for(var i=[],a=1;a<=3;a++){var s=n[a];if(s[s.length-1]==="%"&&(i[a]=!0),s=parseFloat(s),i[a]&&(s=s/100*255),s<0||s>255)return;r.push(Math.floor(s))}var l=i[1]||i[2]||i[3],u=i[1]&&i[2]&&i[3];if(l&&!u)return;var h=n[4];if(h!==void 0){if(h=parseFloat(h),h<0||h>1)return;r.push(h)}}return r},"rgb2tuple"),Gut=o(function(t){return Vut[t.toLowerCase()]},"colorname2tuple"),dbe=o(function(t){return(Hn(t)?t:null)||Gut(t)||$ut(t)||zut(t)||Fut(t)},"color2tuple"),Vut={transparent:[0,0,0,0],aliceblue:[240,248,255],antiquewhite:[250,235,215],aqua:[0,255,255],aquamarine:[127,255,212],azure:[240,255,255],beige:[245,245,220],bisque:[255,228,196],black:[0,0,0],blanchedalmond:[255,235,205],blue:[0,0,255],blueviolet:[138,43,226],brown:[165,42,42],burlywood:[222,184,135],cadetblue:[95,158,160],chartreuse:[127,255,0],chocolate:[210,105,30],coral:[255,127,80],cornflowerblue:[100,149,237],cornsilk:[255,248,220],crimson:[220,20,60],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgoldenrod:[184,134,11],darkgray:[169,169,169],darkgreen:[0,100,0],darkgrey:[169,169,169],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkseagreen:[143,188,143],darkslateblue:[72,61,139],darkslategray:[47,79,79],darkslategrey:[47,79,79],darkturquoise:[0,206,209],darkviolet:[148,0,211],deeppink:[255,20,147],deepskyblue:[0,191,255],dimgray:[105,105,105],dimgrey:[105,105,105],dodgerblue:[30,144,255],firebrick:[178,34,34],floralwhite:[255,250,240],forestgreen:[34,139,34],fuchsia:[255,0,255],gainsboro:[220,220,220],ghostwhite:[248,248,255],gold:[255,215,0],goldenrod:[218,165,32],gray:[128,128,128],grey:[128,128,128],green:[0,128,0],greenyellow:[173,255,47],honeydew:[240,255,240],hotpink:[255,105,180],indianred:[205,92,92],indigo:[75,0,130],ivory:[255,255,240],khaki:[240,230,140],lavender:[230,230,250],lavenderblush:[255,240,245],lawngreen:[124,252,0],lemonchiffon:[255,250,205],lightblue:[173,216,230],lightcoral:[240,128,128],lightcyan:[224,255,255],lightgoldenrodyellow:[250,250,210],lightgray:[211,211,211],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightsalmon:[255,160,122],lightseagreen:[32,178,170],lightskyblue:[135,206,250],lightslategray:[119,136,153],lightslategrey:[119,136,153],lightsteelblue:[176,196,222],lightyellow:[255,255,224],lime:[0,255,0],limegreen:[50,205,50],linen:[250,240,230],magenta:[255,0,255],maroon:[128,0,0],mediumaquamarine:[102,205,170],mediumblue:[0,0,205],mediumorchid:[186,85,211],mediumpurple:[147,112,219],mediumseagreen:[60,179,113],mediumslateblue:[123,104,238],mediumspringgreen:[0,250,154],mediumturquoise:[72,209,204],mediumvioletred:[199,21,133],midnightblue:[25,25,112],mintcream:[245,255,250],mistyrose:[255,228,225],moccasin:[255,228,181],navajowhite:[255,222,173],navy:[0,0,128],oldlace:[253,245,230],olive:[128,128,0],olivedrab:[107,142,35],orange:[255,165,0],orangered:[255,69,0],orchid:[218,112,214],palegoldenrod:[238,232,170],palegreen:[152,251,152],paleturquoise:[175,238,238],palevioletred:[219,112,147],papayawhip:[255,239,213],peachpuff:[255,218,185],peru:[205,133,63],pink:[255,192,203],plum:[221,160,221],powderblue:[176,224,230],purple:[128,0,128],red:[255,0,0],rosybrown:[188,143,143],royalblue:[65,105,225],saddlebrown:[139,69,19],salmon:[250,128,114],sandybrown:[244,164,96],seagreen:[46,139,87],seashell:[255,245,238],sienna:[160,82,45],silver:[192,192,192],skyblue:[135,206,235],slateblue:[106,90,205],slategray:[112,128,144],slategrey:[112,128,144],snow:[255,250,250],springgreen:[0,255,127],steelblue:[70,130,180],tan:[210,180,140],teal:[0,128,128],thistle:[216,191,216],tomato:[255,99,71],turquoise:[64,224,208],violet:[238,130,238],wheat:[245,222,179],white:[255,255,255],whitesmoke:[245,245,245],yellow:[255,255,0],yellowgreen:[154,205,50]},fbe=o(function(t){for(var r=t.map,n=t.keys,i=n.length,a=0;a<i;a++){var s=n[a];if(cn(s))throw Error("Tried to set map with object key");a<n.length-1?(r[s]==null&&(r[s]={}),r=r[s]):r[s]=t.value}},"setMap"),pbe=o(function(t){for(var r=t.map,n=t.keys,i=n.length,a=0;a<i;a++){var s=n[a];if(cn(s))throw Error("Tried to get map with object key");if(r=r[s],r==null)return r}return r},"getMap"),E5=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{};o(YT,"getDefaultExportFromCjs");o(jT,"requireIsObject");o(Wut,"require_freeGlobal");o(hA,"require_root");o(qut,"requireNow");o(Hut,"require_trimmedEndIndex");o(Uut,"require_baseTrim");o(xF,"require_Symbol");o(Yut,"require_getRawTag");o(jut,"require_objectToString");o(mbe,"require_baseGetTag");o(Xut,"requireIsObjectLike");o(XT,"requireIsSymbol");o(Kut,"requireToNumber");o(Zut,"requireDebounce");Qut=Zut(),KT=YT(Qut),NB=oa?oa.performance:null,gbe=NB&&NB.now?function(){return NB.now()}:function(){return Date.now()},Jut=(function(){if(oa){if(oa.requestAnimationFrame)return function(e){oa.requestAnimationFrame(e)};if(oa.mozRequestAnimationFrame)return function(e){oa.mozRequestAnimationFrame(e)};if(oa.webkitRequestAnimationFrame)return function(e){oa.webkitRequestAnimationFrame(e)};if(oa.msRequestAnimationFrame)return function(e){oa.msRequestAnimationFrame(e)}}return function(e){e&&setTimeout(function(){e(gbe())},1e3/60)}})(),Q5=o(function(t){return Jut(t)},"requestAnimationFrame"),Ph=gbe,Jm=9261,ybe=65599,I1=5381,vbe=o(function(t){for(var r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:Jm,n=r,i;i=t.next(),!i.done;)n=n*ybe+i.value|0;return n},"hashIterableInts"),PT=o(function(t){var r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:Jm;return r*ybe+t|0},"hashInt"),OT=o(function(t){var r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:I1;return(r<<5)+r+t|0},"hashIntAlt"),eht=o(function(t,r){return t*2097152+r},"combineHashes"),Mf=o(function(t){return t[0]*2097152+t[1]},"combineHashesArray"),A5=o(function(t,r){return[PT(t[0],r[0]),OT(t[1],r[1])]},"hashArrays"),Y1e=o(function(t,r){var n={value:0,done:!1},i=0,a=t.length,s={next:o(function(){return i<a?n.value=t[i++]:n.done=!0,n},"next")};return vbe(s,r)},"hashIntsArray"),rg=o(function(t,r){var n={value:0,done:!1},i=0,a=t.length,s={next:o(function(){return i<a?n.value=t.charCodeAt(i++):n.done=!0,n},"next")};return vbe(s,r)},"hashString"),xbe=o(function(){return tht(arguments)},"hashStrings"),tht=o(function(t){for(var r,n=0;n<t.length;n++){var i=t[n];n===0?r=rg(i):r=rg(i,r)}return r},"hashStringsArray");o(rht,"rotatePoint");nht=o(function(t,r,n,i,a,s){return{x:(t-n)*a+n,y:(r-i)*s+i}},"movePointByBoxAspect");o(iht,"rotatePosAndSkewByBox");j1e=!0,aht=console.warn!=null,sht=console.trace!=null,bF=Number.MAX_SAFE_INTEGER||9007199254740991,bbe=o(function(){return!0},"trueify"),J5=o(function(){return!1},"falsify"),X1e=o(function(){return 0},"zeroify"),TF=o(function(){},"noop"),pi=o(function(t){throw new Error(t)},"error"),Tbe=o(function(t){if(t!==void 0)j1e=!!t;else return j1e},"warnings"),In=o(function(t){Tbe()&&(aht?console.warn(t):(console.log(t),sht&&console.trace()))},"warn"),oht=o(function(t){return br({},t)},"clone"),Tu=o(function(t){return t==null?t:Hn(t)?t.slice():cn(t)?oht(t):t},"copy"),lht=o(function(t){return t.slice()},"copyArray"),Cbe=o(function(t,r){for(r=t="";t++<36;r+=t*51&52?(t^15?8^Math.random()*(t^20?16:4):4).toString(16):"-");return r},"uuid"),cht={},wbe=o(function(){return cht},"staticEmptyObject"),Va=o(function(t){var r=Object.keys(t);return function(n){for(var i={},a=0;a<r.length;a++){var s=r[a],l=n?.[s];i[s]=l===void 0?t[s]:l}return i}},"defaults"),Vf=o(function(t,r,n){for(var i=t.length-1;i>=0;i--)t[i]===r&&t.splice(i,1)},"removeFromArray"),CF=o(function(t){t.splice(0,t.length)},"clearArray"),uht=o(function(t,r){for(var n=0;n<r.length;n++){var i=r[n];t.push(i)}},"push"),mo=o(function(t,r,n){return n&&(r=ube(n,r)),t[r]},"getPrefixedProperty"),Mh=o(function(t,r,n,i){n&&(r=ube(n,r)),t[r]=i},"setPrefixedProperty"),hht=(function(){function e(){Yf(this,e),this._obj={}}return o(e,"ObjectMap"),jf(e,[{key:"set",value:o(function(r,n){return this._obj[r]=n,this},"set")},{key:"delete",value:o(function(r){return this._obj[r]=void 0,this},"_delete")},{key:"clear",value:o(function(){this._obj={}},"clear")},{key:"has",value:o(function(r){return this._obj[r]!==void 0},"has")},{key:"get",value:o(function(r){return this._obj[r]},"get")}])})(),Nh=typeof Map<"u"?Map:hht,dht="undefined",fht=(function(){function e(t){if(Yf(this,e),this._obj=Object.create(null),this.size=0,t!=null){var r;t.instanceString!=null&&t.instanceString()===this.instanceString()?r=t.toArray():r=t;for(var n=0;n<r.length;n++)this.add(r[n])}}return o(e,"ObjectSet"),jf(e,[{key:"instanceString",value:o(function(){return"set"},"instanceString")},{key:"add",value:o(function(r){var n=this._obj;n[r]!==1&&(n[r]=1,this.size++)},"add")},{key:"delete",value:o(function(r){var n=this._obj;n[r]===1&&(n[r]=0,this.size--)},"_delete")},{key:"clear",value:o(function(){this._obj=Object.create(null)},"clear")},{key:"has",value:o(function(r){return this._obj[r]===1},"has")},{key:"toArray",value:o(function(){var r=this;return Object.keys(this._obj).filter(function(n){return r.has(n)})},"toArray")},{key:"forEach",value:o(function(r,n){return this.toArray().forEach(r,n)},"forEach")}])})(),W1=(typeof Set>"u"?"undefined":ca(Set))!==dht?Set:fht,dA=o(function(t,r){var n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!0;if(t===void 0||r===void 0||!yF(t)){pi("An element must have a core reference and parameters set");return}var i=r.group;if(i==null&&(r.data&&r.data.source!=null&&r.data.target!=null?i="edges":i="nodes"),i!=="nodes"&&i!=="edges"){pi("An element must be of type `nodes` or `edges`; you specified `"+i+"`");return}this.length=1,this[0]=this;var a=this._private={cy:t,single:!0,data:r.data||{},position:r.position||{x:0,y:0},autoWidth:void 0,autoHeight:void 0,autoPadding:void 0,compoundBoundsClean:!1,listeners:[],group:i,style:{},rstyle:{},styleCxts:[],styleKeys:{},removed:!0,selected:!!r.selected,selectable:r.selectable===void 0?!0:!!r.selectable,locked:!!r.locked,grabbed:!1,grabbable:r.grabbable===void 0?!0:!!r.grabbable,pannable:r.pannable===void 0?i==="edges":!!r.pannable,active:!1,classes:new W1,animation:{current:[],queue:[]},rscratch:{},scratch:r.scratch||{},edges:[],children:[],parent:r.parent&&r.parent.isNode()?r.parent:null,traversalCache:{},backgrounding:!1,bbCache:null,bbCacheShift:{x:0,y:0},bodyBounds:null,overlayBounds:null,labelBounds:{all:null,source:null,target:null,main:null},arrowBounds:{source:null,target:null,"mid-source":null,"mid-target":null}};if(a.position.x==null&&(a.position.x=0),a.position.y==null&&(a.position.y=0),r.renderedPosition){var s=r.renderedPosition,l=t.pan(),u=t.zoom();a.position={x:(s.x-l.x)/u,y:(s.y-l.y)/u}}var h=[];Hn(r.classes)?h=r.classes:fr(r.classes)&&(h=r.classes.split(/\s+/));for(var d=0,f=h.length;d<f;d++){var p=h[d];!p||p===""||a.classes.add(p)}this.createEmitter(),(n===void 0||n)&&this.restore();var m=r.style||r.css;m&&(In("Setting a `style` bypass at element creation should be done only when absolutely necessary.  Try to use the stylesheet instead."),this.style(m))},"Element"),K1e=o(function(t){return t={bfs:t.bfs||!t.dfs,dfs:t.dfs||!t.bfs},o(function(n,i,a){var s;cn(n)&&!Ho(n)&&(s=n,n=s.roots||s.root,i=s.visit,a=s.directed),a=arguments.length===2&&!Ci(i)?i:a,i=Ci(i)?i:function(){};for(var l=this._private.cy,u=n=fr(n)?this.filter(n):n,h=[],d=[],f={},p={},m={},g=0,y,v=this.byGroup(),x=v.nodes,b=v.edges,T=0;T<u.length;T++){var k=u[T],C=k.id();k.isNode()&&(h.unshift(k),t.bfs&&(m[C]=!0,d.push(k)),p[C]=0)}for(var w=o(function(){var A=t.bfs?h.shift():h.pop(),M=A.id();if(t.dfs){if(m[M])return 0;m[M]=!0,d.push(A)}var D=p[M],P=f[M],B=P!=null?P.source():null,O=P!=null?P.target():null,$=P==null?void 0:A.same(B)?O[0]:B[0],V;if(V=i(A,P,$,g++,D),V===!0)return y=A,1;if(V===!1)return 1;for(var G=A.connectedEdges().filter(function(Q){return(!a||Q.source().same(A))&&b.has(Q)}),z=0;z<G.length;z++){var W=G[z],H=W.connectedNodes().filter(function(Q){return!Q.same(A)&&x.has(Q)}),j=H.id();H.length!==0&&!m[j]&&(H=H[0],h.push(H),t.bfs&&(m[j]=!0,d.push(H)),f[j]=W,p[j]=p[M]+1)}},"_loop"),S;h.length!==0&&(S=w(),!(S!==0&&S===1)););for(var R=l.collection(),L=0;L<d.length;L++){var N=d[L],I=f[N.id()];I!=null&&R.push(I),R.push(N)}return{path:l.collection(R),found:l.collection(y)}},"searchFn")},"defineSearch"),BT={breadthFirstSearch:K1e({bfs:!0}),depthFirstSearch:K1e({dfs:!0})};BT.bfs=BT.breadthFirstSearch;BT.dfs=BT.depthFirstSearch;F5={exports:{}},pht=F5.exports;o(mht,"requireHeap$1");o(ght,"requireHeap");yht=ght(),ZT=YT(yht),vht=Va({root:null,weight:o(function(t){return 1},"weight"),directed:!1}),xht={dijkstra:o(function(t){if(!cn(t)){var r=arguments;t={root:r[0],weight:r[1],directed:r[2]}}var n=vht(t),i=n.root,a=n.weight,s=n.directed,l=this,u=a,h=fr(i)?this.filter(i)[0]:i[0],d={},f={},p={},m=this.byGroup(),g=m.nodes,y=m.edges;y.unmergeBy(function(D){return D.isLoop()});for(var v=o(function(P){return d[P.id()]},"getDist"),x=o(function(P,B){d[P.id()]=B,b.updateItem(P)},"setDist"),b=new ZT(function(D,P){return v(D)-v(P)}),T=0;T<g.length;T++){var k=g[T];d[k.id()]=k.same(h)?0:1/0,b.push(k)}for(var C=o(function(P,B){for(var O=(s?P.edgesTo(B):P.edgesWith(B)).intersect(y),$=1/0,V,G=0;G<O.length;G++){var z=O[G],W=u(z);(W<$||!V)&&($=W,V=z)}return{edge:V,dist:$}},"distBetween");b.size()>0;){var w=b.pop(),S=v(w),R=w.id();if(p[R]=S,S!==1/0)for(var L=w.neighborhood().intersect(g),N=0;N<L.length;N++){var I=L[N],_=I.id(),A=C(w,I),M=S+A.dist;M<v(I)&&(x(I,M),f[_]={node:w,edge:A.edge})}}return{distanceTo:o(function(P){var B=fr(P)?g.filter(P)[0]:P[0];return p[B.id()]},"distanceTo"),pathTo:o(function(P){var B=fr(P)?g.filter(P)[0]:P[0],O=[],$=B,V=$.id();if(B.length>0)for(O.unshift(B);f[V];){var G=f[V];O.unshift(G.edge),O.unshift(G.node),$=G.node,V=$.id()}return l.spawn(O)},"pathTo")}},"dijkstra")},bht={kruskal:o(function(t){t=t||function(T){return 1};for(var r=this.byGroup(),n=r.nodes,i=r.edges,a=n.length,s=new Array(a),l=n,u=o(function(k){for(var C=0;C<s.length;C++){var w=s[C];if(w.has(k))return C}},"findSetIndex"),h=0;h<a;h++)s[h]=this.spawn(n[h]);for(var d=i.sort(function(T,k){return t(T)-t(k)}),f=0;f<d.length;f++){var p=d[f],m=p.source()[0],g=p.target()[0],y=u(m),v=u(g),x=s[y],b=s[v];y!==v&&(l.merge(p),x.merge(b),s.splice(v,1))}return l},"kruskal")},Tht=Va({root:null,goal:null,weight:o(function(t){return 1},"weight"),heuristic:o(function(t){return 0},"heuristic"),directed:!1}),Cht={aStar:o(function(t){var r=this.cy(),n=Tht(t),i=n.root,a=n.goal,s=n.heuristic,l=n.directed,u=n.weight;i=r.collection(i)[0],a=r.collection(a)[0];var h=i.id(),d=a.id(),f={},p={},m={},g=new ZT(function(V,G){return p[V.id()]-p[G.id()]}),y=new W1,v={},x={},b=o(function(G,z){g.push(G),y.add(z)},"addToOpenSet"),T,k,C=o(function(){T=g.pop(),k=T.id(),y.delete(k)},"popFromOpenSet"),w=o(function(G){return y.has(G)},"isInOpenSet");b(i,h),f[h]=0,p[h]=s(i);for(var S=0;g.size()>0;){if(C(),S++,k===d){for(var R=[],L=a,N=d,I=x[N];R.unshift(L),I!=null&&R.unshift(I),L=v[N],L!=null;)N=L.id(),I=x[N];return{found:!0,distance:f[k],path:this.spawn(R),steps:S}}m[k]=!0;for(var _=T._private.edges,A=0;A<_.length;A++){var M=_[A];if(this.hasElementWithId(M.id())&&!(l&&M.data("source")!==k)){var D=M.source(),P=M.target(),B=D.id()!==k?D:P,O=B.id();if(this.hasElementWithId(O)&&!m[O]){var $=f[k]+u(M);if(!w(O)){f[O]=$,p[O]=$+s(B),b(B,O),v[O]=T,x[O]=M;continue}$<f[O]&&(f[O]=$,p[O]=$+s(B),v[O]=T,x[O]=M)}}}}return{found:!1,distance:void 0,path:void 0,steps:S}},"aStar")},wht=Va({weight:o(function(t){return 1},"weight"),directed:!1}),kht={floydWarshall:o(function(t){for(var r=this.cy(),n=wht(t),i=n.weight,a=n.directed,s=i,l=this.byGroup(),u=l.nodes,h=l.edges,d=u.length,f=d*d,p=o(function(W){return u.indexOf(W)},"indexOf"),m=o(function(W){return u[W]},"atIndex"),g=new Array(f),y=0;y<f;y++){var v=y%d,x=(y-v)/d;x===v?g[y]=0:g[y]=1/0}for(var b=new Array(f),T=new Array(f),k=0;k<h.length;k++){var C=h[k],w=C.source()[0],S=C.target()[0];if(w!==S){var R=p(w),L=p(S),N=R*d+L,I=s(C);if(g[N]>I&&(g[N]=I,b[N]=L,T[N]=C),!a){var _=L*d+R;!a&&g[_]>I&&(g[_]=I,b[_]=R,T[_]=C)}}}for(var A=0;A<d;A++)for(var M=0;M<d;M++)for(var D=M*d+A,P=0;P<d;P++){var B=M*d+P,O=A*d+P;g[D]+g[O]<g[B]&&(g[B]=g[D]+g[O],b[B]=b[D])}var $=o(function(W){return(fr(W)?r.filter(W):W)[0]},"getArgEle"),V=o(function(W){return p($(W))},"indexOfArgEle"),G={distance:o(function(W,H){var j=V(W),Q=V(H);return g[j*d+Q]},"distance"),path:o(function(W,H){var j=V(W),Q=V(H),U=m(j);if(j===Q)return U.collection();if(b[j*d+Q]==null)return r.collection();var oe=r.collection(),te=j,le;for(oe.merge(U);j!==Q;)te=j,j=b[j*d+Q],le=T[te*d+j],oe.merge(le),oe.merge(m(j));return oe},"path")};return G},"floydWarshall")},Sht=Va({weight:o(function(t){return 1},"weight"),directed:!1,root:null}),Eht={bellmanFord:o(function(t){var r=this,n=Sht(t),i=n.weight,a=n.directed,s=n.root,l=i,u=this,h=this.cy(),d=this.byGroup(),f=d.edges,p=d.nodes,m=p.length,g=new Nh,y=!1,v=[];s=h.collection(s)[0],f.unmergeBy(function(Oe){return Oe.isLoop()});for(var x=f.length,b=o(function(ue){var ye=g.get(ue.id());return ye||(ye={},g.set(ue.id(),ye)),ye},"getInfo"),T=o(function(ue){return(fr(ue)?h.$(ue):ue)[0]},"getNodeFromTo"),k=o(function(ue){return b(T(ue)).dist},"distanceTo"),C=o(function(ue){for(var ye=arguments.length>1&&arguments[1]!==void 0?arguments[1]:s,ke=T(ue),ce=[],re=ke;;){if(re==null)return r.spawn();var J=b(re),se=J.edge,ge=J.pred;if(ce.unshift(re[0]),re.same(ye)&&ce.length>0)break;se!=null&&ce.unshift(se),re=ge}return u.spawn(ce)},"pathTo"),w=0;w<m;w++){var S=p[w],R=b(S);S.same(s)?R.dist=0:R.dist=1/0,R.pred=null,R.edge=null}for(var L=!1,N=o(function(ue,ye,ke,ce,re,J){var se=ce.dist+J;se<re.dist&&!ke.same(ce.edge)&&(re.dist=se,re.pred=ue,re.edge=ke,L=!0)},"checkForEdgeReplacement"),I=1;I<m;I++){L=!1;for(var _=0;_<x;_++){var A=f[_],M=A.source(),D=A.target(),P=l(A),B=b(M),O=b(D);N(M,D,A,B,O,P),a||N(D,M,A,O,B,P)}if(!L)break}if(L)for(var $=[],V=0;V<x;V++){var G=f[V],z=G.source(),W=G.target(),H=l(G),j=b(z).dist,Q=b(W).dist;if(j+H<Q||!a&&Q+H<j)if(y||(In("Graph contains a negative weight cycle for Bellman-Ford"),y=!0),t.findNegativeWeightCycles!==!1){var U=[];j+H<Q&&U.push(z),!a&&Q+H<j&&U.push(W);for(var oe=U.length,te=0;te<oe;te++){var le=U[te],ie=[le];ie.push(b(le).edge);for(var ae=b(le).pred;ie.indexOf(ae)===-1;)ie.push(ae),ie.push(b(ae).edge),ae=b(ae).pred;ie=ie.slice(ie.indexOf(ae));for(var Re=ie[0].id(),be=0,Pe=2;Pe<ie.length;Pe+=2)ie[Pe].id()<Re&&(Re=ie[Pe].id(),be=Pe);ie=ie.slice(be).concat(ie.slice(0,be)),ie.push(ie[0]);var Ge=ie.map(function(Oe){return Oe.id()}).join(",");$.indexOf(Ge)===-1&&(v.push(u.spawn(ie)),$.push(Ge))}}else break}return{distanceTo:k,pathTo:C,hasNegativeWeightCycle:y,negativeWeightCycles:v}},"bellmanFord")},Aht=Math.sqrt(2),Rht=o(function(t,r,n){n.length===0&&pi("Karger-Stein must be run on a connected (sub)graph");for(var i=n[t],a=i[1],s=i[2],l=r[a],u=r[s],h=n,d=h.length-1;d>=0;d--){var f=h[d],p=f[1],m=f[2];(r[p]===l&&r[m]===u||r[p]===u&&r[m]===l)&&h.splice(d,1)}for(var g=0;g<h.length;g++){var y=h[g];y[1]===u?(h[g]=y.slice(),h[g][1]=l):y[2]===u&&(h[g]=y.slice(),h[g][2]=l)}for(var v=0;v<r.length;v++)r[v]===u&&(r[v]=l);return h},"collapse"),OB=o(function(t,r,n,i){for(;n>i;){var a=Math.floor(Math.random()*r.length);r=Rht(a,t,r),n--}return r},"contractUntil"),_ht={kargerStein:o(function(){var t=this,r=this.byGroup(),n=r.nodes,i=r.edges;i.unmergeBy(function(O){return O.isLoop()});var a=n.length,s=i.length,l=Math.ceil(Math.pow(Math.log(a)/Math.LN2,2)),u=Math.floor(a/Aht);if(a<2){pi("At least 2 nodes are required for Karger-Stein algorithm");return}for(var h=[],d=0;d<s;d++){var f=i[d];h.push([d,n.indexOf(f.source()),n.indexOf(f.target())])}for(var p=1/0,m=[],g=new Array(a),y=new Array(a),v=new Array(a),x=o(function($,V){for(var G=0;G<a;G++)V[G]=$[G]},"copyNodesMap"),b=0;b<=l;b++){for(var T=0;T<a;T++)y[T]=T;var k=OB(y,h.slice(),a,u),C=k.slice();x(y,v);var w=OB(y,k,u,2),S=OB(v,C,u,2);w.length<=S.length&&w.length<p?(p=w.length,m=w,x(y,g)):S.length<=w.length&&S.length<p&&(p=S.length,m=S,x(v,g))}for(var R=this.spawn(m.map(function(O){return i[O[0]]})),L=this.spawn(),N=this.spawn(),I=g[0],_=0;_<g.length;_++){var A=g[_],M=n[_];A===I?L.merge(M):N.merge(M)}var D=o(function($){var V=t.spawn();return $.forEach(function(G){V.merge(G),G.connectedEdges().forEach(function(z){t.contains(z)&&!R.contains(z)&&V.merge(z)})}),V},"constructComponent"),P=[D(L),D(N)],B={cut:R,components:P,partition1:L,partition2:N};return B},"kargerStein")},Lht=o(function(t){return{x:t.x,y:t.y}},"copyPosition"),fA=o(function(t,r,n){return{x:t.x*r+n.x,y:t.y*r+n.y}},"modelToRenderedPosition"),kbe=o(function(t,r,n){return{x:(t.x-n.x)/r,y:(t.y-n.y)/r}},"renderedToModelPosition"),M1=o(function(t){return{x:t[0],y:t[1]}},"array2point"),Dht=o(function(t){for(var r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0,n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:t.length,i=1/0,a=r;a<n;a++){var s=t[a];isFinite(s)&&(i=Math.min(s,i))}return i},"min"),Iht=o(function(t){for(var r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0,n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:t.length,i=-1/0,a=r;a<n;a++){var s=t[a];isFinite(s)&&(i=Math.max(s,i))}return i},"max"),Mht=o(function(t){for(var r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0,n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:t.length,i=0,a=0,s=r;s<n;s++){var l=t[s];isFinite(l)&&(i+=l,a++)}return i/a},"mean"),Nht=o(function(t){var r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0,n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:t.length,i=arguments.length>3&&arguments[3]!==void 0?arguments[3]:!0,a=arguments.length>4&&arguments[4]!==void 0?arguments[4]:!0,s=arguments.length>5&&arguments[5]!==void 0?arguments[5]:!0;i?t=t.slice(r,n):(n<t.length&&t.splice(n,t.length-n),r>0&&t.splice(0,r));for(var l=0,u=t.length-1;u>=0;u--){var h=t[u];s?isFinite(h)||(t[u]=-1/0,l++):t.splice(u,1)}a&&t.sort(function(p,m){return p-m});var d=t.length,f=Math.floor(d/2);return d%2!==0?t[f+1+l]:(t[f-1+l]+t[f+l])/2},"median"),Pht=o(function(t){return Math.PI*t/180},"deg2rad"),R5=o(function(t,r){return Math.atan2(r,t)-Math.PI/2},"getAngleFromDisp"),wF=Math.log2||function(e){return Math.log(e)/Math.log(2)},kF=o(function(t){return t>0?1:t<0?-1:0},"signum"),ng=o(function(t,r){return Math.sqrt(Zm(t,r))},"dist"),Zm=o(function(t,r){var n=r.x-t.x,i=r.y-t.y;return n*n+i*i},"sqdist"),Oht=o(function(t){for(var r=t.length,n=0,i=0;i<r;i++)n+=t[i];for(var a=0;a<r;a++)t[a]=t[a]/n;return t},"inPlaceSumNormalize"),Aa=o(function(t,r,n,i){return(1-i)*(1-i)*t+2*(1-i)*i*r+i*i*n},"qbezierAt"),O1=o(function(t,r,n,i){return{x:Aa(t.x,r.x,n.x,i),y:Aa(t.y,r.y,n.y,i)}},"qbezierPtAt"),Bht=o(function(t,r,n,i){var a={x:r.x-t.x,y:r.y-t.y},s=ng(t,r),l={x:a.x/s,y:a.y/s};return n=n??0,i=i??n*s,{x:t.x+l.x*i,y:t.y+l.y*i}},"lineAt"),$T=o(function(t,r,n){return Math.max(t,Math.min(n,r))},"bound"),Ns=o(function(t){if(t==null)return{x1:1/0,y1:1/0,x2:-1/0,y2:-1/0,w:0,h:0};if(t.x1!=null&&t.y1!=null){if(t.x2!=null&&t.y2!=null&&t.x2>=t.x1&&t.y2>=t.y1)return{x1:t.x1,y1:t.y1,x2:t.x2,y2:t.y2,w:t.x2-t.x1,h:t.y2-t.y1};if(t.w!=null&&t.h!=null&&t.w>=0&&t.h>=0)return{x1:t.x1,y1:t.y1,x2:t.x1+t.w,y2:t.y1+t.h,w:t.w,h:t.h}}},"makeBoundingBox"),$ht=o(function(t){return{x1:t.x1,x2:t.x2,w:t.w,y1:t.y1,y2:t.y2,h:t.h}},"copyBoundingBox"),Fht=o(function(t){t.x1=1/0,t.y1=1/0,t.x2=-1/0,t.y2=-1/0,t.w=0,t.h=0},"clearBoundingBox"),zht=o(function(t,r){t.x1=Math.min(t.x1,r.x1),t.x2=Math.max(t.x2,r.x2),t.w=t.x2-t.x1,t.y1=Math.min(t.y1,r.y1),t.y2=Math.max(t.y2,r.y2),t.h=t.y2-t.y1},"updateBoundingBox"),Sbe=o(function(t,r,n){t.x1=Math.min(t.x1,r),t.x2=Math.max(t.x2,r),t.w=t.x2-t.x1,t.y1=Math.min(t.y1,n),t.y2=Math.max(t.y2,n),t.h=t.y2-t.y1},"expandBoundingBoxByPoint"),z5=o(function(t){var r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0;return t.x1-=r,t.x2+=r,t.y1-=r,t.y2+=r,t.w=t.x2-t.x1,t.h=t.y2-t.y1,t},"expandBoundingBox"),G5=o(function(t){var r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:[0],n,i,a,s;if(r.length===1)n=i=a=s=r[0];else if(r.length===2)n=a=r[0],s=i=r[1];else if(r.length===4){var l=Ki(r,4);n=l[0],i=l[1],a=l[2],s=l[3]}return t.x1-=s,t.x2+=i,t.y1-=n,t.y2+=a,t.w=t.x2-t.x1,t.h=t.y2-t.y1,t},"expandBoundingBoxSides"),J1e=o(function(t,r){t.x1=r.x1,t.y1=r.y1,t.x2=r.x2,t.y2=r.y2,t.w=t.x2-t.x1,t.h=t.y2-t.y1},"assignBoundingBox"),SF=o(function(t,r){return!(t.x1>r.x2||r.x1>t.x2||t.x2<r.x1||r.x2<t.x1||t.y2<r.y1||r.y2<t.y1||t.y1>r.y2||r.y1>t.y2)},"boundingBoxesIntersect"),Bf=o(function(t,r,n){return t.x1<=r&&r<=t.x2&&t.y1<=n&&n<=t.y2},"inBoundingBox"),eve=o(function(t,r){return Bf(t,r.x,r.y)},"pointInBoundingBox"),Ebe=o(function(t,r){return Bf(t,r.x1,r.y1)&&Bf(t,r.x2,r.y2)},"boundingBoxInBoundingBox"),Ght=(BB=Math.hypot)!==null&&BB!==void 0?BB:function(e,t){return Math.sqrt(e*e+t*t)};o(Vht,"inflatePolygon");o(Wht,"miterBox");Abe=o(function(t,r,n,i,a,s,l){var u=arguments.length>7&&arguments[7]!==void 0?arguments[7]:"auto",h=u==="auto"?Wf(a,s):u,d=a/2,f=s/2;h=Math.min(h,d,f);var p=h!==d,m=h!==f,g;if(p){var y=n-d+h-l,v=i-f-l,x=n+d-h+l,b=v;if(g=$f(t,r,n,i,y,v,x,b,!1),g.length>0)return g}if(m){var T=n+d+l,k=i-f+h-l,C=T,w=i+f-h+l;if(g=$f(t,r,n,i,T,k,C,w,!1),g.length>0)return g}if(p){var S=n-d+h-l,R=i+f+l,L=n+d-h+l,N=R;if(g=$f(t,r,n,i,S,R,L,N,!1),g.length>0)return g}if(m){var I=n-d-l,_=i-f+h-l,A=I,M=i+f-h+l;if(g=$f(t,r,n,i,I,_,A,M,!1),g.length>0)return g}var D;{var P=n-d+h,B=i-f+h;if(D=_T(t,r,n,i,P,B,h+l),D.length>0&&D[0]<=P&&D[1]<=B)return[D[0],D[1]]}{var O=n+d-h,$=i-f+h;if(D=_T(t,r,n,i,O,$,h+l),D.length>0&&D[0]>=O&&D[1]<=$)return[D[0],D[1]]}{var V=n+d-h,G=i+f-h;if(D=_T(t,r,n,i,V,G,h+l),D.length>0&&D[0]>=V&&D[1]>=G)return[D[0],D[1]]}{var z=n-d+h,W=i+f-h;if(D=_T(t,r,n,i,z,W,h+l),D.length>0&&D[0]<=z&&D[1]>=W)return[D[0],D[1]]}return[]},"roundRectangleIntersectLine"),qht=o(function(t,r,n,i,a,s,l){var u=l,h=Math.min(n,a),d=Math.max(n,a),f=Math.min(i,s),p=Math.max(i,s);return h-u<=t&&t<=d+u&&f-u<=r&&r<=p+u},"inLineVicinity"),Hht=o(function(t,r,n,i,a,s,l,u,h){var d={x1:Math.min(n,l,a)-h,x2:Math.max(n,l,a)+h,y1:Math.min(i,u,s)-h,y2:Math.max(i,u,s)+h};return!(t<d.x1||t>d.x2||r<d.y1||r>d.y2)},"inBezierVicinity"),Uht=o(function(t,r,n,i){n-=i;var a=r*r-4*t*n;if(a<0)return[];var s=Math.sqrt(a),l=2*t,u=(-r+s)/l,h=(-r-s)/l;return[u,h]},"solveQuadratic"),Yht=o(function(t,r,n,i,a){var s=1e-5;t===0&&(t=s),r/=t,n/=t,i/=t;var l,u,h,d,f,p,m,g;if(u=(3*n-r*r)/9,h=-(27*i)+r*(9*n-2*(r*r)),h/=54,l=u*u*u+h*h,a[1]=0,m=r/3,l>0){f=h+Math.sqrt(l),f=f<0?-Math.pow(-f,1/3):Math.pow(f,1/3),p=h-Math.sqrt(l),p=p<0?-Math.pow(-p,1/3):Math.pow(p,1/3),a[0]=-m+f+p,m+=(f+p)/2,a[4]=a[2]=-m,m=Math.sqrt(3)*(-p+f)/2,a[3]=m,a[5]=-m;return}if(a[5]=a[3]=0,l===0){g=h<0?-Math.pow(-h,1/3):Math.pow(h,1/3),a[0]=-m+2*g,a[4]=a[2]=-(g+m);return}u=-u,d=u*u*u,d=Math.acos(h/Math.sqrt(d)),g=2*Math.sqrt(u),a[0]=-m+g*Math.cos(d/3),a[2]=-m+g*Math.cos((d+2*Math.PI)/3),a[4]=-m+g*Math.cos((d+4*Math.PI)/3)},"solveCubic"),jht=o(function(t,r,n,i,a,s,l,u){var h=1*n*n-4*n*a+2*n*l+4*a*a-4*a*l+l*l+i*i-4*i*s+2*i*u+4*s*s-4*s*u+u*u,d=9*n*a-3*n*n-3*n*l-6*a*a+3*a*l+9*i*s-3*i*i-3*i*u-6*s*s+3*s*u,f=3*n*n-6*n*a+n*l-n*t+2*a*a+2*a*t-l*t+3*i*i-6*i*s+i*u-i*r+2*s*s+2*s*r-u*r,p=1*n*a-n*n+n*t-a*t+i*s-i*i+i*r-s*r,m=[];Yht(h,d,f,p,m);for(var g=1e-7,y=[],v=0;v<6;v+=2)Math.abs(m[v+1])<g&&m[v]>=0&&m[v]<=1&&y.push(m[v]);y.push(1),y.push(0);for(var x=-1,b,T,k,C=0;C<y.length;C++)b=Math.pow(1-y[C],2)*n+2*(1-y[C])*y[C]*a+y[C]*y[C]*l,T=Math.pow(1-y[C],2)*i+2*(1-y[C])*y[C]*s+y[C]*y[C]*u,k=Math.pow(b-t,2)+Math.pow(T-r,2),x>=0?k<x&&(x=k):x=k;return x},"sqdistToQuadraticBezier"),Xht=o(function(t,r,n,i,a,s){var l=[t-n,r-i],u=[a-n,s-i],h=u[0]*u[0]+u[1]*u[1],d=l[0]*l[0]+l[1]*l[1],f=l[0]*u[0]+l[1]*u[1],p=f*f/h;return f<0?d:p>h?(t-a)*(t-a)+(r-s)*(r-s):d-p},"sqdistToFiniteLine"),go=o(function(t,r,n){for(var i,a,s,l,u,h=0,d=0;d<n.length/2;d++)if(i=n[d*2],a=n[d*2+1],d+1<n.length/2?(s=n[(d+1)*2],l=n[(d+1)*2+1]):(s=n[(d+1-n.length/2)*2],l=n[(d+1-n.length/2)*2+1]),!(i==t&&s==t))if(i>=t&&t>=s||i<=t&&t<=s)u=(t-i)/(s-i)*(l-a)+a,u>r&&h++;else continue;return h%2!==0},"pointInsidePolygonPoints"),Oh=o(function(t,r,n,i,a,s,l,u,h){var d=new Array(n.length),f;u[0]!=null?(f=Math.atan(u[1]/u[0]),u[0]<0?f=f+Math.PI/2:f=-f-Math.PI/2):f=u;for(var p=Math.cos(-f),m=Math.sin(-f),g=0;g<d.length/2;g++)d[g*2]=s/2*(n[g*2]*p-n[g*2+1]*m),d[g*2+1]=l/2*(n[g*2+1]*p+n[g*2]*m),d[g*2]+=i,d[g*2+1]+=a;var y;if(h>0){var v=tA(d,-h);y=eA(v)}else y=d;return go(t,r,y)},"pointInsidePolygon"),Kht=o(function(t,r,n,i,a,s,l,u){for(var h=new Array(n.length*2),d=0;d<u.length;d++){var f=u[d];h[d*4+0]=f.startX,h[d*4+1]=f.startY,h[d*4+2]=f.stopX,h[d*4+3]=f.stopY;var p=Math.pow(f.cx-t,2)+Math.pow(f.cy-r,2);if(p<=Math.pow(f.radius,2))return!0}return go(t,r,h)},"pointInsideRoundPolygon"),eA=o(function(t){for(var r=new Array(t.length/2),n,i,a,s,l,u,h,d,f=0;f<t.length/4;f++){n=t[f*4],i=t[f*4+1],a=t[f*4+2],s=t[f*4+3],f<t.length/4-1?(l=t[(f+1)*4],u=t[(f+1)*4+1],h=t[(f+1)*4+2],d=t[(f+1)*4+3]):(l=t[0],u=t[1],h=t[2],d=t[3]);var p=$f(n,i,a,s,l,u,h,d,!0);r[f*2]=p[0],r[f*2+1]=p[1]}return r},"joinLines"),tA=o(function(t,r){for(var n=new Array(t.length*2),i,a,s,l,u=0;u<t.length/2;u++){i=t[u*2],a=t[u*2+1],u<t.length/2-1?(s=t[(u+1)*2],l=t[(u+1)*2+1]):(s=t[0],l=t[1]);var h=l-a,d=-(s-i),f=Math.sqrt(h*h+d*d),p=h/f,m=d/f;n[u*4]=i+p*r,n[u*4+1]=a+m*r,n[u*4+2]=s+p*r,n[u*4+3]=l+m*r}return n},"expandPolygon"),Zht=o(function(t,r,n,i,a,s){var l=n-t,u=i-r;l/=a,u/=s;var h=Math.sqrt(l*l+u*u),d=h-1;if(d<0)return[];var f=d/h;return[(n-t)*f+t,(i-r)*f+r]},"intersectLineEllipse"),tg=o(function(t,r,n,i,a,s,l){return t-=a,r-=s,t/=n/2+l,r/=i/2+l,t*t+r*r<=1},"checkInEllipse"),_T=o(function(t,r,n,i,a,s,l){var u=[n-t,i-r],h=[t-a,r-s],d=u[0]*u[0]+u[1]*u[1],f=2*(h[0]*u[0]+h[1]*u[1]),p=h[0]*h[0]+h[1]*h[1]-l*l,m=f*f-4*d*p;if(m<0)return[];var g=(-f+Math.sqrt(m))/(2*d),y=(-f-Math.sqrt(m))/(2*d),v=Math.min(g,y),x=Math.max(g,y),b=[];if(v>=0&&v<=1&&b.push(v),x>=0&&x<=1&&b.push(x),b.length===0)return[];var T=b[0]*u[0]+t,k=b[0]*u[1]+r;if(b.length>1){if(b[0]==b[1])return[T,k];var C=b[1]*u[0]+t,w=b[1]*u[1]+r;return[T,k,C,w]}else return[T,k]},"intersectLineCircle"),$B=o(function(t,r,n){return r<=t&&t<=n||n<=t&&t<=r?t:t<=r&&r<=n||n<=r&&r<=t?r:n},"midOfThree"),$f=o(function(t,r,n,i,a,s,l,u,h){var d=t-a,f=n-t,p=l-a,m=r-s,g=i-r,y=u-s,v=p*m-y*d,x=f*m-g*d,b=y*f-p*g;if(b!==0){var T=v/b,k=x/b,C=.001,w=0-C,S=1+C;return w<=T&&T<=S&&w<=k&&k<=S?[t+T*f,r+T*g]:h?[t+T*f,r+T*g]:[]}else return v===0||x===0?$B(t,n,l)===l?[l,u]:$B(t,n,a)===a?[a,s]:$B(a,l,n)===n?[n,i]:[]:[]},"finiteLinesIntersect"),Qht=o(function(t,r,n,i,a){var s=[],l=i/2,u=a/2,h=r,d=n;s.push({x:h+l*t[0],y:d+u*t[1]});for(var f=1;f<t.length/2;f++)s.push({x:h+l*t[f*2],y:d+u*t[f*2+1]});return s},"transformPoints"),FT=o(function(t,r,n,i,a,s,l,u){var h=[],d,f=new Array(n.length),p=!0;s==null&&(p=!1);var m;if(p){for(var g=0;g<f.length/2;g++)f[g*2]=n[g*2]*s+i,f[g*2+1]=n[g*2+1]*l+a;if(u>0){var y=tA(f,-u);m=eA(y)}else m=f}else m=n;for(var v,x,b,T,k=0;k<m.length/2;k++)v=m[k*2],x=m[k*2+1],k<m.length/2-1?(b=m[(k+1)*2],T=m[(k+1)*2+1]):(b=m[0],T=m[1]),d=$f(t,r,i,a,v,x,b,T),d.length!==0&&h.push(d[0],d[1]);return h},"polygonIntersectLine"),Jht=o(function(t,r,n,i,a,s,l,u,h){var d=[],f,p=new Array(n.length*2);h.forEach(function(b,T){T===0?(p[p.length-2]=b.startX,p[p.length-1]=b.startY):(p[T*4-2]=b.startX,p[T*4-1]=b.startY),p[T*4]=b.stopX,p[T*4+1]=b.stopY,f=_T(t,r,i,a,b.cx,b.cy,b.radius),f.length!==0&&d.push(f[0],f[1])});for(var m=0;m<p.length/4;m++)f=$f(t,r,i,a,p[m*4],p[m*4+1],p[m*4+2],p[m*4+3],!1),f.length!==0&&d.push(f[0],f[1]);if(d.length>2){for(var g=[d[0],d[1]],y=Math.pow(g[0]-t,2)+Math.pow(g[1]-r,2),v=1;v<d.length/2;v++){var x=Math.pow(d[v*2]-t,2)+Math.pow(d[v*2+1]-r,2);x<=y&&(g[0]=d[v*2],g[1]=d[v*2+1],y=x)}return g}return d},"roundPolygonIntersectLine"),_5=o(function(t,r,n){var i=[t[0]-r[0],t[1]-r[1]],a=Math.sqrt(i[0]*i[0]+i[1]*i[1]),s=(a-n)/a;return s<0&&(s=1e-5),[r[0]+s*i[0],r[1]+s*i[1]]},"shortenIntersection"),Ms=o(function(t,r){var n=Z$(t,r);return n=Rbe(n),n},"generateUnitNgonPointsFitToSquare"),Rbe=o(function(t){for(var r,n,i=t.length/2,a=1/0,s=1/0,l=-1/0,u=-1/0,h=0;h<i;h++)r=t[2*h],n=t[2*h+1],a=Math.min(a,r),l=Math.max(l,r),s=Math.min(s,n),u=Math.max(u,n);for(var d=2/(l-a),f=2/(u-s),p=0;p<i;p++)r=t[2*p]=t[2*p]*d,n=t[2*p+1]=t[2*p+1]*f,a=Math.min(a,r),l=Math.max(l,r),s=Math.min(s,n),u=Math.max(u,n);if(s<-1)for(var m=0;m<i;m++)n=t[2*m+1]=t[2*m+1]+(-1-s);return t},"fitPolygonToSquare"),Z$=o(function(t,r){var n=1/t*2*Math.PI,i=t%2===0?Math.PI/2+n/2:Math.PI/2;i+=r;for(var a=new Array(t*2),s,l=0;l<t;l++)s=l*n+i,a[2*l]=Math.cos(s),a[2*l+1]=Math.sin(-s);return a},"generateUnitNgonPoints"),Wf=o(function(t,r){return Math.min(t/4,r/4,8)},"getRoundRectangleRadius"),_be=o(function(t,r){return Math.min(t/10,r/10,8)},"getRoundPolygonRadius"),EF=o(function(){return 8},"getCutRectangleCornerLength"),edt=o(function(t,r,n){return[t-2*r+n,2*(r-t),t]},"bezierPtsToQuadCoeff"),Q$=o(function(t,r){return{heightOffset:Math.min(15,.05*r),widthOffset:Math.min(100,.25*t),ctrlPtOffsetPct:.05}},"getBarrelCurveConstants");o(FB,"satPolygonIntersection");tdt=Va({dampingFactor:.8,precision:1e-6,iterations:200,weight:o(function(t){return 1},"weight")}),rdt={pageRank:o(function(t){for(var r=tdt(t),n=r.dampingFactor,i=r.precision,a=r.iterations,s=r.weight,l=this._private.cy,u=this.byGroup(),h=u.nodes,d=u.edges,f=h.length,p=f*f,m=d.length,g=new Array(p),y=new Array(f),v=(1-n)/f,x=0;x<f;x++){for(var b=0;b<f;b++){var T=x*f+b;g[T]=0}y[x]=0}for(var k=0;k<m;k++){var C=d[k],w=C.data("source"),S=C.data("target");if(w!==S){var R=h.indexOfId(w),L=h.indexOfId(S),N=s(C),I=L*f+R;g[I]+=N,y[R]+=N}}for(var _=1/f+v,A=0;A<f;A++)if(y[A]===0)for(var M=0;M<f;M++){var D=M*f+A;g[D]=_}else for(var P=0;P<f;P++){var B=P*f+A;g[B]=g[B]/y[A]+v}for(var O=new Array(f),$=new Array(f),V,G=0;G<f;G++)O[G]=1;for(var z=0;z<a;z++){for(var W=0;W<f;W++)$[W]=0;for(var H=0;H<f;H++)for(var j=0;j<f;j++){var Q=H*f+j;$[H]+=g[Q]*O[j]}Oht($),V=O,O=$,$=V;for(var U=0,oe=0;oe<f;oe++){var te=V[oe]-O[oe];U+=te*te}if(U<i)break}var le={rank:o(function(ae){return ae=l.collection(ae)[0],O[h.indexOf(ae)]},"rank")};return le},"pageRank")},tve=Va({root:null,weight:o(function(t){return 1},"weight"),directed:!1,alpha:0}),B1={degreeCentralityNormalized:o(function(t){t=tve(t);var r=this.cy(),n=this.nodes(),i=n.length;if(t.directed){for(var d={},f={},p=0,m=0,g=0;g<i;g++){var y=n[g],v=y.id();t.root=y;var x=this.degreeCentrality(t);p<x.indegree&&(p=x.indegree),m<x.outdegree&&(m=x.outdegree),d[v]=x.indegree,f[v]=x.outdegree}return{indegree:o(function(T){return p==0?0:(fr(T)&&(T=r.filter(T)),d[T.id()]/p)},"indegree"),outdegree:o(function(T){return m===0?0:(fr(T)&&(T=r.filter(T)),f[T.id()]/m)},"outdegree")}}else{for(var a={},s=0,l=0;l<i;l++){var u=n[l];t.root=u;var h=this.degreeCentrality(t);s<h.degree&&(s=h.degree),a[u.id()]=h.degree}return{degree:o(function(T){return s===0?0:(fr(T)&&(T=r.filter(T)),a[T.id()]/s)},"degree")}}},"degreeCentralityNormalized"),degreeCentrality:o(function(t){t=tve(t);var r=this.cy(),n=this,i=t,a=i.root,s=i.weight,l=i.directed,u=i.alpha;if(a=r.collection(a)[0],l){for(var m=a.connectedEdges(),g=m.filter(function(w){return w.target().same(a)&&n.has(w)}),y=m.filter(function(w){return w.source().same(a)&&n.has(w)}),v=g.length,x=y.length,b=0,T=0,k=0;k<g.length;k++)b+=s(g[k]);for(var C=0;C<y.length;C++)T+=s(y[C]);return{indegree:Math.pow(v,1-u)*Math.pow(b,u),outdegree:Math.pow(x,1-u)*Math.pow(T,u)}}else{for(var h=a.connectedEdges().intersection(n),d=h.length,f=0,p=0;p<h.length;p++)f+=s(h[p]);return{degree:Math.pow(d,1-u)*Math.pow(f,u)}}},"degreeCentrality")};B1.dc=B1.degreeCentrality;B1.dcn=B1.degreeCentralityNormalised=B1.degreeCentralityNormalized;rve=Va({harmonic:!0,weight:o(function(){return 1},"weight"),directed:!1,root:null}),$1={closenessCentralityNormalized:o(function(t){for(var r=rve(t),n=r.harmonic,i=r.weight,a=r.directed,s=this.cy(),l={},u=0,h=this.nodes(),d=this.floydWarshall({weight:i,directed:a}),f=0;f<h.length;f++){for(var p=0,m=h[f],g=0;g<h.length;g++)if(f!==g){var y=d.distance(m,h[g]);n?p+=1/y:p+=y}n||(p=1/p),u<p&&(u=p),l[m.id()]=p}return{closeness:o(function(x){return u==0?0:(fr(x)?x=s.filter(x)[0].id():x=x.id(),l[x]/u)},"closeness")}},"closenessCentralityNormalized"),closenessCentrality:o(function(t){var r=rve(t),n=r.root,i=r.weight,a=r.directed,s=r.harmonic;n=this.filter(n)[0];for(var l=this.dijkstra({root:n,weight:i,directed:a}),u=0,h=this.nodes(),d=0;d<h.length;d++){var f=h[d];if(!f.same(n)){var p=l.distanceTo(f);s?u+=1/p:u+=p}}return s?u:1/u},"closenessCentrality")};$1.cc=$1.closenessCentrality;$1.ccn=$1.closenessCentralityNormalised=$1.closenessCentralityNormalized;ndt=Va({weight:null,directed:!1}),J$={betweennessCentrality:o(function(t){for(var r=ndt(t),n=r.directed,i=r.weight,a=i!=null,s=this.cy(),l=this.nodes(),u={},h={},d=0,f={set:o(function(T,k){h[T]=k,k>d&&(d=k)},"set"),get:o(function(T){return h[T]},"get")},p=0;p<l.length;p++){var m=l[p],g=m.id();n?u[g]=m.outgoers().nodes():u[g]=m.openNeighborhood().nodes(),f.set(g,0)}for(var y=o(function(){for(var T=l[v].id(),k=[],C={},w={},S={},R=new ZT(function(H,j){return S[H]-S[j]}),L=0;L<l.length;L++){var N=l[L].id();C[N]=[],w[N]=0,S[N]=1/0}for(w[T]=1,S[T]=0,R.push(T);!R.empty();){var I=R.pop();if(k.push(I),a)for(var _=0;_<u[I].length;_++){var A=u[I][_],M=s.getElementById(I),D=void 0;M.edgesTo(A).length>0?D=M.edgesTo(A)[0]:D=A.edgesTo(M)[0];var P=i(D);A=A.id(),S[A]>S[I]+P&&(S[A]=S[I]+P,R.nodes.indexOf(A)<0?R.push(A):R.updateItem(A),w[A]=0,C[A]=[]),S[A]==S[I]+P&&(w[A]=w[A]+w[I],C[A].push(I))}else for(var B=0;B<u[I].length;B++){var O=u[I][B].id();S[O]==1/0&&(R.push(O),S[O]=S[I]+1),S[O]==S[I]+1&&(w[O]=w[O]+w[I],C[O].push(I))}}for(var $={},V=0;V<l.length;V++)$[l[V].id()]=0;for(;k.length>0;){for(var G=k.pop(),z=0;z<C[G].length;z++){var W=C[G][z];$[W]=$[W]+w[W]/w[G]*(1+$[G])}G!=l[v].id()&&f.set(G,f.get(G)+$[G])}},"_loop"),v=0;v<l.length;v++)y();var x={betweenness:o(function(T){var k=s.collection(T).id();return f.get(k)},"betweenness"),betweennessNormalized:o(function(T){if(d==0)return 0;var k=s.collection(T).id();return f.get(k)/d},"betweennessNormalized")};return x.betweennessNormalised=x.betweennessNormalized,x},"betweennessCentrality")};J$.bc=J$.betweennessCentrality;idt=Va({expandFactor:2,inflateFactor:2,multFactor:1,maxIterations:20,attributes:[function(e){return 1}]}),adt=o(function(t){return idt(t)},"setOptions"),sdt=o(function(t,r){for(var n=0,i=0;i<r.length;i++)n+=r[i](t);return n},"getSimilarity"),odt=o(function(t,r,n){for(var i=0;i<r;i++)t[i*r+i]=n},"addLoops"),Lbe=o(function(t,r){for(var n,i=0;i<r;i++){n=0;for(var a=0;a<r;a++)n+=t[a*r+i];for(var s=0;s<r;s++)t[s*r+i]=t[s*r+i]/n}},"normalize"),ldt=o(function(t,r,n){for(var i=new Array(n*n),a=0;a<n;a++){for(var s=0;s<n;s++)i[a*n+s]=0;for(var l=0;l<n;l++)for(var u=0;u<n;u++)i[a*n+u]+=t[a*n+l]*r[l*n+u]}return i},"mmult"),cdt=o(function(t,r,n){for(var i=t.slice(0),a=1;a<n;a++)t=ldt(t,i,r);return t},"expand"),udt=o(function(t,r,n){for(var i=new Array(r*r),a=0;a<r*r;a++)i[a]=Math.pow(t[a],n);return Lbe(i,r),i},"inflate"),hdt=o(function(t,r,n,i){for(var a=0;a<n;a++){var s=Math.round(t[a]*Math.pow(10,i))/Math.pow(10,i),l=Math.round(r[a]*Math.pow(10,i))/Math.pow(10,i);if(s!==l)return!1}return!0},"hasConverged"),ddt=o(function(t,r,n,i){for(var a=[],s=0;s<r;s++){for(var l=[],u=0;u<r;u++)Math.round(t[s*r+u]*1e3)/1e3>0&&l.push(n[u]);l.length!==0&&a.push(i.collection(l))}return a},"assign"),fdt=o(function(t,r){for(var n=0;n<t.length;n++)if(!r[n]||t[n].id()!==r[n].id())return!1;return!0},"isDuplicate"),pdt=o(function(t){for(var r=0;r<t.length;r++)for(var n=0;n<t.length;n++)r!=n&&fdt(t[r],t[n])&&t.splice(n,1);return t},"removeDuplicates"),nve=o(function(t){for(var r=this.nodes(),n=this.edges(),i=this.cy(),a=adt(t),s={},l=0;l<r.length;l++)s[r[l].id()]=l;for(var u=r.length,h=u*u,d=new Array(h),f,p=0;p<h;p++)d[p]=0;for(var m=0;m<n.length;m++){var g=n[m],y=s[g.source().id()],v=s[g.target().id()],x=sdt(g,a.attributes);d[y*u+v]+=x,d[v*u+y]+=x}odt(d,u,a.multFactor),Lbe(d,u);for(var b=!0,T=0;b&&T<a.maxIterations;)b=!1,f=cdt(d,u,a.expandFactor),d=udt(f,u,a.inflateFactor),hdt(d,f,h,4)||(b=!0),T++;var k=ddt(d,u,r,i);return k=pdt(k),k},"markovClustering"),mdt={markovClustering:nve,mcl:nve},gdt=o(function(t){return t},"identity"),Dbe=o(function(t,r){return Math.abs(r-t)},"absDiff"),ive=o(function(t,r,n){return t+Dbe(r,n)},"addAbsDiff"),ave=o(function(t,r,n){return t+Math.pow(n-r,2)},"addSquaredDiff"),ydt=o(function(t){return Math.sqrt(t)},"sqrt"),vdt=o(function(t,r,n){return Math.max(t,Dbe(r,n))},"maxAbsDiff"),CT=o(function(t,r,n,i,a){for(var s=arguments.length>5&&arguments[5]!==void 0?arguments[5]:gdt,l=i,u,h,d=0;d<t;d++)u=r(d),h=n(d),l=a(l,u,h);return s(l)},"getDistance"),G1={euclidean:o(function(t,r,n){return t>=2?CT(t,r,n,0,ave,ydt):CT(t,r,n,0,ive)},"euclidean"),squaredEuclidean:o(function(t,r,n){return CT(t,r,n,0,ave)},"squaredEuclidean"),manhattan:o(function(t,r,n){return CT(t,r,n,0,ive)},"manhattan"),max:o(function(t,r,n){return CT(t,r,n,-1/0,vdt)},"max")};G1["squared-euclidean"]=G1.squaredEuclidean;G1.squaredeuclidean=G1.squaredEuclidean;o(pA,"clusteringDistance");xdt=Va({k:2,m:2,sensitivityThreshold:1e-4,distance:"euclidean",maxIterations:10,attributes:[],testMode:!1,testCentroids:null}),AF=o(function(t){return xdt(t)},"setOptions"),rA=o(function(t,r,n,i,a){var s=a!=="kMedoids",l=s?function(f){return n[f]}:function(f){return i[f](n)},u=o(function(p){return i[p](r)},"getQ"),h=n,d=r;return pA(t,i.length,l,u,h,d)},"getDist"),zB=o(function(t,r,n){for(var i=n.length,a=new Array(i),s=new Array(i),l=new Array(r),u=null,h=0;h<i;h++)a[h]=t.min(n[h]).value,s[h]=t.max(n[h]).value;for(var d=0;d<r;d++){u=[];for(var f=0;f<i;f++)u[f]=Math.random()*(s[f]-a[f])+a[f];l[d]=u}return l},"randomCentroids"),Ibe=o(function(t,r,n,i,a){for(var s=1/0,l=0,u=0;u<r.length;u++){var h=rA(n,t,r[u],i,a);h<s&&(s=h,l=u)}return l},"classify"),Mbe=o(function(t,r,n){for(var i=[],a=null,s=0;s<r.length;s++)a=r[s],n[a.id()]===t&&i.push(a);return i},"buildCluster"),bdt=o(function(t,r,n){return Math.abs(r-t)<=n},"haveValuesConverged"),Tdt=o(function(t,r,n){for(var i=0;i<t.length;i++)for(var a=0;a<t[i].length;a++){var s=Math.abs(t[i][a]-r[i][a]);if(s>n)return!1}return!0},"haveMatricesConverged"),Cdt=o(function(t,r,n){for(var i=0;i<n;i++)if(t===r[i])return!0;return!1},"seenBefore"),sve=o(function(t,r){var n=new Array(r);if(t.length<50)for(var i=0;i<r;i++){for(var a=t[Math.floor(Math.random()*t.length)];Cdt(a,n,i);)a=t[Math.floor(Math.random()*t.length)];n[i]=a}else for(var s=0;s<r;s++)n[s]=t[Math.floor(Math.random()*t.length)];return n},"randomMedoids"),ove=o(function(t,r,n){for(var i=0,a=0;a<r.length;a++)i+=rA("manhattan",r[a],t,n,"kMedoids");return i},"findCost"),wdt=o(function(t){var r=this.cy(),n=this.nodes(),i=null,a=AF(t),s=new Array(a.k),l={},u;a.testMode?typeof a.testCentroids=="number"?(a.testCentroids,u=zB(n,a.k,a.attributes)):ca(a.testCentroids)==="object"?u=a.testCentroids:u=zB(n,a.k,a.attributes):u=zB(n,a.k,a.attributes);for(var h=!0,d=0;h&&d<a.maxIterations;){for(var f=0;f<n.length;f++)i=n[f],l[i.id()]=Ibe(i,u,a.distance,a.attributes,"kMeans");h=!1;for(var p=0;p<a.k;p++){var m=Mbe(p,n,l);if(m.length!==0){for(var g=a.attributes.length,y=u[p],v=new Array(g),x=new Array(g),b=0;b<g;b++){x[b]=0;for(var T=0;T<m.length;T++)i=m[T],x[b]+=a.attributes[b](i);v[b]=x[b]/m.length,bdt(v[b],y[b],a.sensitivityThreshold)||(h=!0)}u[p]=v,s[p]=r.collection(m)}}d++}return s},"kMeans"),kdt=o(function(t){var r=this.cy(),n=this.nodes(),i=null,a=AF(t),s=new Array(a.k),l,u={},h,d=new Array(a.k);a.testMode?typeof a.testCentroids=="number"||(ca(a.testCentroids)==="object"?l=a.testCentroids:l=sve(n,a.k)):l=sve(n,a.k);for(var f=!0,p=0;f&&p<a.maxIterations;){for(var m=0;m<n.length;m++)i=n[m],u[i.id()]=Ibe(i,l,a.distance,a.attributes,"kMedoids");f=!1;for(var g=0;g<l.length;g++){var y=Mbe(g,n,u);if(y.length!==0){d[g]=ove(l[g],y,a.attributes);for(var v=0;v<y.length;v++)h=ove(y[v],y,a.attributes),h<d[g]&&(d[g]=h,l[g]=y[v],f=!0);s[g]=r.collection(y)}}p++}return s},"kMedoids"),Sdt=o(function(t,r,n,i,a){for(var s,l,u=0;u<r.length;u++)for(var h=0;h<t.length;h++)i[u][h]=Math.pow(n[u][h],a.m);for(var d=0;d<t.length;d++)for(var f=0;f<a.attributes.length;f++){s=0,l=0;for(var p=0;p<r.length;p++)s+=i[p][d]*a.attributes[f](r[p]),l+=i[p][d];t[d][f]=s/l}},"updateCentroids"),Edt=o(function(t,r,n,i,a){for(var s=0;s<t.length;s++)r[s]=t[s].slice();for(var l,u,h,d=2/(a.m-1),f=0;f<n.length;f++)for(var p=0;p<i.length;p++){l=0;for(var m=0;m<n.length;m++)u=rA(a.distance,i[p],n[f],a.attributes,"cmeans"),h=rA(a.distance,i[p],n[m],a.attributes,"cmeans"),l+=Math.pow(u/h,d);t[p][f]=1/l}},"updateMembership"),Adt=o(function(t,r,n,i){for(var a=new Array(n.k),s=0;s<a.length;s++)a[s]=[];for(var l,u,h=0;h<r.length;h++){l=-1/0,u=-1;for(var d=0;d<r[0].length;d++)r[h][d]>l&&(l=r[h][d],u=d);a[u].push(t[h])}for(var f=0;f<a.length;f++)a[f]=i.collection(a[f]);return a},"assign"),lve=o(function(t){var r=this.cy(),n=this.nodes(),i=AF(t),a,s,l,u,h;u=new Array(n.length);for(var d=0;d<n.length;d++)u[d]=new Array(i.k);l=new Array(n.length);for(var f=0;f<n.length;f++)l[f]=new Array(i.k);for(var p=0;p<n.length;p++){for(var m=0,g=0;g<i.k;g++)l[p][g]=Math.random(),m+=l[p][g];for(var y=0;y<i.k;y++)l[p][y]=l[p][y]/m}s=new Array(i.k);for(var v=0;v<i.k;v++)s[v]=new Array(i.attributes.length);h=new Array(n.length);for(var x=0;x<n.length;x++)h[x]=new Array(i.k);for(var b=!0,T=0;b&&T<i.maxIterations;)b=!1,Sdt(s,n,l,h,i),Edt(l,u,s,n,i),Tdt(l,u,i.sensitivityThreshold)||(b=!0),T++;return a=Adt(n,l,i,r),{clusters:a,degreeOfMembership:l}},"fuzzyCMeans"),Rdt={kMeans:wdt,kMedoids:kdt,fuzzyCMeans:lve,fcm:lve},_dt=Va({distance:"euclidean",linkage:"min",mode:"threshold",threshold:1/0,addDendrogram:!1,dendrogramDepth:0,attributes:[]}),Ldt={single:"min",complete:"max"},Ddt=o(function(t){var r=_dt(t),n=Ldt[r.linkage];return n!=null&&(r.linkage=n),r},"setOptions"),cve=o(function(t,r,n,i,a){for(var s=0,l=1/0,u,h=a.attributes,d=o(function(L,N){return pA(a.distance,h.length,function(I){return h[I](L)},function(I){return h[I](N)},L,N)},"getDist"),f=0;f<t.length;f++){var p=t[f].key,m=n[p][i[p]];m<l&&(s=p,l=m)}if(a.mode==="threshold"&&l>=a.threshold||a.mode==="dendrogram"&&t.length===1)return!1;var g=r[s],y=r[i[s]],v;a.mode==="dendrogram"?v={left:g,right:y,key:g.key}:v={value:g.value.concat(y.value),key:g.key},t[g.index]=v,t.splice(y.index,1),r[g.key]=v;for(var x=0;x<t.length;x++){var b=t[x];g.key===b.key?u=1/0:a.linkage==="min"?(u=n[g.key][b.key],n[g.key][b.key]>n[y.key][b.key]&&(u=n[y.key][b.key])):a.linkage==="max"?(u=n[g.key][b.key],n[g.key][b.key]<n[y.key][b.key]&&(u=n[y.key][b.key])):a.linkage==="mean"?u=(n[g.key][b.key]*g.size+n[y.key][b.key]*y.size)/(g.size+y.size):a.mode==="dendrogram"?u=d(b.value,g.value):u=d(b.value[0],g.value[0]),n[g.key][b.key]=n[b.key][g.key]=u}for(var T=0;T<t.length;T++){var k=t[T].key;if(i[k]===g.key||i[k]===y.key){for(var C=k,w=0;w<t.length;w++){var S=t[w].key;n[k][S]<n[k][C]&&(C=S)}i[k]=C}t[T].index=T}return g.key=y.key=g.index=y.index=null,!0},"mergeClosest"),N1=o(function(t,r,n){t&&(t.value?r.push(t.value):(t.left&&N1(t.left,r),t.right&&N1(t.right,r)))},"getAllChildren"),eF=o(function(t,r){if(!t)return"";if(t.left&&t.right){var n=eF(t.left,r),i=eF(t.right,r),a=r.add({group:"nodes",data:{id:n+","+i}});return r.add({group:"edges",data:{source:n,target:a.id()}}),r.add({group:"edges",data:{source:i,target:a.id()}}),a.id()}else if(t.value)return t.value.id()},"buildDendrogram"),tF=o(function(t,r,n){if(!t)return[];var i=[],a=[],s=[];return r===0?(t.left&&N1(t.left,i),t.right&&N1(t.right,a),s=i.concat(a),[n.collection(s)]):r===1?t.value?[n.collection(t.value)]:(t.left&&N1(t.left,i),t.right&&N1(t.right,a),[n.collection(i),n.collection(a)]):t.value?[n.collection(t.value)]:(t.left&&(i=tF(t.left,r-1,n)),t.right&&(a=tF(t.right,r-1,n)),i.concat(a))},"buildClustersFromTree"),uve=o(function(t){for(var r=this.cy(),n=this.nodes(),i=Ddt(t),a=i.attributes,s=o(function(T,k){return pA(i.distance,a.length,function(C){return a[C](T)},function(C){return a[C](k)},T,k)},"getDist"),l=[],u=[],h=[],d=[],f=0;f<n.length;f++){var p={value:i.mode==="dendrogram"?n[f]:[n[f]],key:f,index:f};l[f]=p,d[f]=p,u[f]=[],h[f]=0}for(var m=0;m<l.length;m++)for(var g=0;g<=m;g++){var y=void 0;i.mode==="dendrogram"?y=m===g?1/0:s(l[m].value,l[g].value):y=m===g?1/0:s(l[m].value[0],l[g].value[0]),u[m][g]=y,u[g][m]=y,y<u[m][h[m]]&&(h[m]=g)}for(var v=cve(l,d,u,h,i);v;)v=cve(l,d,u,h,i);var x;return i.mode==="dendrogram"?(x=tF(l[0],i.dendrogramDepth,r),i.addDendrogram&&eF(l[0],r)):(x=new Array(l.length),l.forEach(function(b,T){b.key=b.index=null,x[T]=r.collection(b.value)})),x},"hierarchicalClustering"),Idt={hierarchicalClustering:uve,hca:uve},Mdt=Va({distance:"euclidean",preference:"median",damping:.8,maxIterations:1e3,minIterations:100,attributes:[]}),Ndt=o(function(t){var r=t.damping,n=t.preference;.5<=r&&r<1||pi("Damping must range on [0.5, 1).  Got: ".concat(r));var i=["median","mean","min","max"];return i.some(function(a){return a===n})||Gt(n)||pi("Preference must be one of [".concat(i.map(function(a){return"'".concat(a,"'")}).join(", "),"] or a number.  Got: ").concat(n)),Mdt(t)},"setOptions"),Pdt=o(function(t,r,n,i){var a=o(function(l,u){return i[u](l)},"attr");return-pA(t,i.length,function(s){return a(r,s)},function(s){return a(n,s)},r,n)},"getSimilarity"),Odt=o(function(t,r){var n=null;return r==="median"?n=Nht(t):r==="mean"?n=Mht(t):r==="min"?n=Dht(t):r==="max"?n=Iht(t):n=r,n},"getPreference"),Bdt=o(function(t,r,n){for(var i=[],a=0;a<t;a++)r[a*t+a]+n[a*t+a]>0&&i.push(a);return i},"findExemplars"),hve=o(function(t,r,n){for(var i=[],a=0;a<t;a++){for(var s=-1,l=-1/0,u=0;u<n.length;u++){var h=n[u];r[a*t+h]>l&&(s=h,l=r[a*t+h])}s>0&&i.push(s)}for(var d=0;d<n.length;d++)i[n[d]]=n[d];return i},"assignClusters"),$dt=o(function(t,r,n){for(var i=hve(t,r,n),a=0;a<n.length;a++){for(var s=[],l=0;l<i.length;l++)i[l]===n[a]&&s.push(l);for(var u=-1,h=-1/0,d=0;d<s.length;d++){for(var f=0,p=0;p<s.length;p++)f+=r[s[p]*t+s[d]];f>h&&(u=d,h=f)}n[a]=s[u]}return i=hve(t,r,n),i},"assign"),dve=o(function(t){for(var r=this.cy(),n=this.nodes(),i=Ndt(t),a={},s=0;s<n.length;s++)a[n[s].id()]=s;var l,u,h,d,f,p;l=n.length,u=l*l,h=new Array(u);for(var m=0;m<u;m++)h[m]=-1/0;for(var g=0;g<l;g++)for(var y=0;y<l;y++)g!==y&&(h[g*l+y]=Pdt(i.distance,n[g],n[y],i.attributes));d=Odt(h,i.preference);for(var v=0;v<l;v++)h[v*l+v]=d;f=new Array(u);for(var x=0;x<u;x++)f[x]=0;p=new Array(u);for(var b=0;b<u;b++)p[b]=0;for(var T=new Array(l),k=new Array(l),C=new Array(l),w=0;w<l;w++)T[w]=0,k[w]=0,C[w]=0;for(var S=new Array(l*i.minIterations),R=0;R<S.length;R++)S[R]=0;var L;for(L=0;L<i.maxIterations;L++){for(var N=0;N<l;N++){for(var I=-1/0,_=-1/0,A=-1,M=0,D=0;D<l;D++)T[D]=f[N*l+D],M=p[N*l+D]+h[N*l+D],M>=I?(_=I,I=M,A=D):M>_&&(_=M);for(var P=0;P<l;P++)f[N*l+P]=(1-i.damping)*(h[N*l+P]-I)+i.damping*T[P];f[N*l+A]=(1-i.damping)*(h[N*l+A]-_)+i.damping*T[A]}for(var B=0;B<l;B++){for(var O=0,$=0;$<l;$++)T[$]=p[$*l+B],k[$]=Math.max(0,f[$*l+B]),O+=k[$];O-=k[B],k[B]=f[B*l+B],O+=k[B];for(var V=0;V<l;V++)p[V*l+B]=(1-i.damping)*Math.min(0,O-k[V])+i.damping*T[V];p[B*l+B]=(1-i.damping)*(O-k[B])+i.damping*T[B]}for(var G=0,z=0;z<l;z++){var W=p[z*l+z]+f[z*l+z]>0?1:0;S[L%i.minIterations*l+z]=W,G+=W}if(G>0&&(L>=i.minIterations-1||L==i.maxIterations-1)){for(var H=0,j=0;j<l;j++){C[j]=0;for(var Q=0;Q<i.minIterations;Q++)C[j]+=S[Q*l+j];(C[j]===0||C[j]===i.minIterations)&&H++}if(H===l)break}}for(var U=Bdt(l,f,p),oe=$dt(l,h,U),te={},le=0;le<U.length;le++)te[U[le]]=[];for(var ie=0;ie<n.length;ie++){var ae=a[n[ie].id()],Re=oe[ae];Re!=null&&te[Re].push(n[ie])}for(var be=new Array(U.length),Pe=0;Pe<U.length;Pe++)be[Pe]=r.collection(te[U[Pe]]);return be},"affinityPropagation"),Fdt={affinityPropagation:dve,ap:dve},zdt=Va({root:void 0,directed:!1}),Gdt={hierholzer:o(function(t){if(!cn(t)){var r=arguments;t={root:r[0],directed:r[1]}}var n=zdt(t),i=n.root,a=n.directed,s=this,l=!1,u,h,d;i&&(d=fr(i)?this.filter(i)[0].id():i[0].id());var f={},p={};a?s.forEach(function(b){var T=b.id();if(b.isNode()){var k=b.indegree(!0),C=b.outdegree(!0),w=k-C,S=C-k;w==1?u?l=!0:u=T:S==1?h?l=!0:h=T:(S>1||w>1)&&(l=!0),f[T]=[],b.outgoers().forEach(function(R){R.isEdge()&&f[T].push(R.id())})}else p[T]=[void 0,b.target().id()]}):s.forEach(function(b){var T=b.id();if(b.isNode()){var k=b.degree(!0);k%2&&(u?h?l=!0:h=T:u=T),f[T]=[],b.connectedEdges().forEach(function(C){return f[T].push(C.id())})}else p[T]=[b.source().id(),b.target().id()]});var m={found:!1,trail:void 0};if(l)return m;if(h&&u)if(a){if(d&&h!=d)return m;d=h}else{if(d&&h!=d&&u!=d)return m;d||(d=h)}else d||(d=s[0].id());var g=o(function(T){for(var k=T,C=[T],w,S,R;f[k].length;)w=f[k].shift(),S=p[w][0],R=p[w][1],k!=R?(f[R]=f[R].filter(function(L){return L!=w}),k=R):!a&&k!=S&&(f[S]=f[S].filter(function(L){return L!=w}),k=S),C.unshift(w),C.unshift(k);return C},"walk"),y=[],v=[];for(v=g(d);v.length!=1;)f[v[0]].length==0?(y.unshift(s.getElementById(v.shift())),y.unshift(s.getElementById(v.shift()))):v=g(v.shift()).concat(v);y.unshift(s.getElementById(v.shift()));for(var x in f)if(f[x].length)return m;return m.found=!0,m.trail=this.spawn(y,!0),m},"hierholzer")},L5=o(function(){var t=this,r={},n=0,i=0,a=[],s=[],l={},u=o(function(p,m){for(var g=s.length-1,y=[],v=t.spawn();s[g].x!=p||s[g].y!=m;)y.push(s.pop().edge),g--;y.push(s.pop().edge),y.forEach(function(x){var b=x.connectedNodes().intersection(t);v.merge(x),b.forEach(function(T){var k=T.id(),C=T.connectedEdges().intersection(t);v.merge(T),r[k].cutVertex?v.merge(C.filter(function(w){return w.isLoop()})):v.merge(C)})}),a.push(v)},"buildComponent"),h=o(function(p,m,g){p===g&&(i+=1),r[m]={id:n,low:n++,cutVertex:!1};var y=t.getElementById(m).connectedEdges().intersection(t);if(y.size()===0)a.push(t.spawn(t.getElementById(m)));else{var v,x,b,T;y.forEach(function(k){v=k.source().id(),x=k.target().id(),b=v===m?x:v,b!==g&&(T=k.id(),l[T]||(l[T]=!0,s.push({x:m,y:b,edge:k})),b in r?r[m].low=Math.min(r[m].low,r[b].id):(h(p,b,m),r[m].low=Math.min(r[m].low,r[b].low),r[m].id<=r[b].low&&(r[m].cutVertex=!0,u(m,b))))})}},"biconnectedSearch");t.forEach(function(f){if(f.isNode()){var p=f.id();p in r||(i=0,h(p,p),r[p].cutVertex=i>1)}});var d=Object.keys(r).filter(function(f){return r[f].cutVertex}).map(function(f){return t.getElementById(f)});return{cut:t.spawn(d),components:a}},"hopcroftTarjanBiconnected"),Vdt={hopcroftTarjanBiconnected:L5,htbc:L5,htb:L5,hopcroftTarjanBiconnectedComponents:L5},D5=o(function(){var t=this,r={},n=0,i=[],a=[],s=t.spawn(t),l=o(function(h){a.push(h),r[h]={index:n,low:n++,explored:!1};var d=t.getElementById(h).connectedEdges().intersection(t);if(d.forEach(function(y){var v=y.target().id();v!==h&&(v in r||l(v),r[v].explored||(r[h].low=Math.min(r[h].low,r[v].low)))}),r[h].index===r[h].low){for(var f=t.spawn();;){var p=a.pop();if(f.merge(t.getElementById(p)),r[p].low=r[h].index,r[p].explored=!0,p===h)break}var m=f.edgesWith(f),g=f.merge(m);i.push(g),s=s.difference(g)}},"stronglyConnectedSearch");return t.forEach(function(u){if(u.isNode()){var h=u.id();h in r||l(h)}}),{cut:s,components:i}},"tarjanStronglyConnected"),Wdt={tarjanStronglyConnected:D5,tsc:D5,tscc:D5,tarjanStronglyConnectedComponents:D5},Nbe={};[BT,xht,bht,Cht,kht,Eht,_ht,rdt,B1,$1,J$,mdt,Rdt,Idt,Fdt,Gdt,Vdt,Wdt].forEach(function(e){br(Nbe,e)});Pbe=0,Obe=1,Bbe=2,vc=o(function(t){if(!(this instanceof vc))return new vc(t);this.id="Thenable/1.0.7",this.state=Pbe,this.fulfillValue=void 0,this.rejectReason=void 0,this.onFulfilled=[],this.onRejected=[],this.proxy={then:this.then.bind(this)},typeof t=="function"&&t.call(this,this.fulfill.bind(this),this.reject.bind(this))},"api");vc.prototype={fulfill:o(function(t){return fve(this,Obe,"fulfillValue",t)},"fulfill"),reject:o(function(t){return fve(this,Bbe,"rejectReason",t)},"reject"),then:o(function(t,r){var n=this,i=new vc;return n.onFulfilled.push(mve(t,i,"fulfill")),n.onRejected.push(mve(r,i,"reject")),$be(n),i.proxy},"then")};fve=o(function(t,r,n,i){return t.state===Pbe&&(t.state=r,t[n]=i,$be(t)),t},"deliver"),$be=o(function(t){t.state===Obe?pve(t,"onFulfilled",t.fulfillValue):t.state===Bbe&&pve(t,"onRejected",t.rejectReason)},"execute"),pve=o(function(t,r,n){if(t[r].length!==0){var i=t[r];t[r]=[];var a=o(function(){for(var l=0;l<i.length;l++)i[l](n)},"func");typeof setImmediate=="function"?setImmediate(a):setTimeout(a,0)}},"execute_handlers"),mve=o(function(t,r,n){return function(i){if(typeof t!="function")r[n].call(r,i);else{var a;try{a=t(i)}catch(s){r.reject(s);return}Fbe(r,a)}}},"resolver"),Fbe=o(function(t,r){if(t===r||t.proxy===r){t.reject(new TypeError("cannot resolve promise with itself"));return}var n;if(ca(r)==="object"&&r!==null||typeof r=="function")try{n=r.then}catch(a){t.reject(a);return}if(typeof n=="function"){var i=!1;try{n.call(r,function(a){i||(i=!0,a===r?t.reject(new TypeError("circular thenable chain")):Fbe(t,a))},function(a){i||(i=!0,t.reject(a))})}catch(a){i||t.reject(a)}return}t.fulfill(r)},"resolve");vc.all=function(e){return new vc(function(t,r){for(var n=new Array(e.length),i=0,a=o(function(u,h){n[u]=h,i++,i===e.length&&t(n)},"fulfill"),s=0;s<e.length;s++)(function(l){var u=e[l],h=u!=null&&u.then!=null;if(h)u.then(function(f){a(l,f)},function(f){r(f)});else{var d=u;a(l,d)}})(s)})};vc.resolve=function(e){return new vc(function(t,r){t(e)})};vc.reject=function(e){return new vc(function(t,r){r(e)})};q1=typeof Promise<"u"?Promise:vc,rF=o(function(t,r,n){var i=yF(t),a=!i,s=this._private=br({duration:1e3},r,n);if(s.target=t,s.style=s.style||s.css,s.started=!1,s.playing=!1,s.hooked=!1,s.applying=!1,s.progress=0,s.completes=[],s.frames=[],s.complete&&Ci(s.complete)&&s.completes.push(s.complete),a){var l=t.position();s.startPosition=s.startPosition||{x:l.x,y:l.y},s.startStyle=s.startStyle||t.cy().style().getAnimationStartStyle(t,s.style)}if(i){var u=t.pan();s.startPan={x:u.x,y:u.y},s.startZoom=t.zoom()}this.length=1,this[0]=this},"Animation"),ig=rF.prototype;br(ig,{instanceString:o(function(){return"animation"},"instanceString"),hook:o(function(){var t=this._private;if(!t.hooked){var r,n=t.target._private.animation;t.queue?r=n.queue:r=n.current,r.push(this),Ho(t.target)&&t.target.cy().addToAnimationPool(t.target),t.hooked=!0}return this},"hook"),play:o(function(){var t=this._private;return t.progress===1&&(t.progress=0),t.playing=!0,t.started=!1,t.stopped=!1,this.hook(),this},"play"),playing:o(function(){return this._private.playing},"playing"),apply:o(function(){var t=this._private;return t.applying=!0,t.started=!1,t.stopped=!1,this.hook(),this},"apply"),applying:o(function(){return this._private.applying},"applying"),pause:o(function(){var t=this._private;return t.playing=!1,t.started=!1,this},"pause"),stop:o(function(){var t=this._private;return t.playing=!1,t.started=!1,t.stopped=!0,this},"stop"),rewind:o(function(){return this.progress(0)},"rewind"),fastforward:o(function(){return this.progress(1)},"fastforward"),time:o(function(t){var r=this._private;return t===void 0?r.progress*r.duration:this.progress(t/r.duration)},"time"),progress:o(function(t){var r=this._private,n=r.playing;return t===void 0?r.progress:(n&&this.pause(),r.progress=t,r.started=!1,n&&this.play(),this)},"progress"),completed:o(function(){return this._private.progress===1},"completed"),reverse:o(function(){var t=this._private,r=t.playing;r&&this.pause(),t.progress=1-t.progress,t.started=!1;var n=o(function(h,d){var f=t[h];f!=null&&(t[h]=t[d],t[d]=f)},"swap");if(n("zoom","startZoom"),n("pan","startPan"),n("position","startPosition"),t.style)for(var i=0;i<t.style.length;i++){var a=t.style[i],s=a.name,l=t.startStyle[s];t.startStyle[s]=a,t.style[i]=l}return r&&this.play(),this},"reverse"),promise:o(function(t){var r=this._private,n;switch(t){case"frame":n=r.frames;break;default:case"complete":case"completed":n=r.completes}return new q1(function(i,a){n.push(function(){i()})})},"promise")});ig.complete=ig.completed;ig.run=ig.play;ig.running=ig.playing;qdt={animated:o(function(){return o(function(){var r=this,n=r.length!==void 0,i=n?r:[r],a=this._private.cy||this;if(!a.styleEnabled())return!1;var s=i[0];if(s)return s._private.animation.current.length>0},"animatedImpl")},"animated"),clearQueue:o(function(){return o(function(){var r=this,n=r.length!==void 0,i=n?r:[r],a=this._private.cy||this;if(!a.styleEnabled())return this;for(var s=0;s<i.length;s++){var l=i[s];l._private.animation.queue=[]}return this},"clearQueueImpl")},"clearQueue"),delay:o(function(){return o(function(r,n){var i=this._private.cy||this;return i.styleEnabled()?this.animate({delay:r,duration:r,complete:n}):this},"delayImpl")},"delay"),delayAnimation:o(function(){return o(function(r,n){var i=this._private.cy||this;return i.styleEnabled()?this.animation({delay:r,duration:r,complete:n}):this},"delayAnimationImpl")},"delayAnimation"),animation:o(function(){return o(function(r,n){var i=this,a=i.length!==void 0,s=a?i:[i],l=this._private.cy||this,u=!a,h=!u;if(!l.styleEnabled())return this;var d=l.style();r=br({},r,n);var f=Object.keys(r).length===0;if(f)return new rF(s[0],r);switch(r.duration===void 0&&(r.duration=400),r.duration){case"slow":r.duration=600;break;case"fast":r.duration=200;break}if(h&&(r.style=d.getPropsList(r.style||r.css),r.css=void 0),h&&r.renderedPosition!=null){var p=r.renderedPosition,m=l.pan(),g=l.zoom();r.position=kbe(p,g,m)}if(u&&r.panBy!=null){var y=r.panBy,v=l.pan();r.pan={x:v.x+y.x,y:v.y+y.y}}var x=r.center||r.centre;if(u&&x!=null){var b=l.getCenterPan(x.eles,r.zoom);b!=null&&(r.pan=b)}if(u&&r.fit!=null){var T=r.fit,k=l.getFitViewport(T.eles||T.boundingBox,T.padding);k!=null&&(r.pan=k.pan,r.zoom=k.zoom)}if(u&&cn(r.zoom)){var C=l.getZoomedViewport(r.zoom);C!=null?(C.zoomed&&(r.zoom=C.zoom),C.panned&&(r.pan=C.pan)):r.zoom=null}return new rF(s[0],r)},"animationImpl")},"animation"),animate:o(function(){return o(function(r,n){var i=this,a=i.length!==void 0,s=a?i:[i],l=this._private.cy||this;if(!l.styleEnabled())return this;n&&(r=br({},r,n));for(var u=0;u<s.length;u++){var h=s[u],d=h.animated()&&(r.queue===void 0||r.queue),f=h.animation(r,d?{queue:!0}:void 0);f.play()}return this},"animateImpl")},"animate"),stop:o(function(){return o(function(r,n){var i=this,a=i.length!==void 0,s=a?i:[i],l=this._private.cy||this;if(!l.styleEnabled())return this;for(var u=0;u<s.length;u++){for(var h=s[u],d=h._private,f=d.animation.current,p=0;p<f.length;p++){var m=f[p],g=m._private;n&&(g.duration=0)}r&&(d.animation.queue=[]),n||(d.animation.current=[])}return l.notify("draw"),this},"stopImpl")},"stop")};o(mA,"requireIsArray");o(Hdt,"require_isKey");o(Udt,"requireIsFunction");o(Ydt,"require_coreJsData");o(jdt,"require_isMasked");o(Xdt,"require_toSource");o(Kdt,"require_baseIsNative");o(Zdt,"require_getValue");o(RF,"require_getNative");o(gA,"require_nativeCreate");o(Qdt,"require_hashClear");o(Jdt,"require_hashDelete");o(eft,"require_hashGet");o(tft,"require_hashHas");o(rft,"require_hashSet");o(nft,"require_Hash");o(ift,"require_listCacheClear");o(zbe,"requireEq");o(yA,"require_assocIndexOf");o(aft,"require_listCacheDelete");o(sft,"require_listCacheGet");o(oft,"require_listCacheHas");o(lft,"require_listCacheSet");o(cft,"require_ListCache");o(uft,"require_Map");o(hft,"require_mapCacheClear");o(dft,"require_isKeyable");o(vA,"require_getMapData");o(fft,"require_mapCacheDelete");o(pft,"require_mapCacheGet");o(mft,"require_mapCacheHas");o(gft,"require_mapCacheSet");o(yft,"require_MapCache");o(vft,"requireMemoize");o(xft,"require_memoizeCapped");o(Gbe,"require_stringToPath");o(Vbe,"require_arrayMap");o(bft,"require_baseToString");o(Wbe,"requireToString");o(qbe,"require_castPath");o(_F,"require_toKey");o(Tft,"require_baseGet");o(Cft,"requireGet");wft=Cft(),kft=YT(wft);o(Sft,"require_defineProperty");o(Eft,"require_baseAssignValue");o(Aft,"require_assignValue");o(Rft,"require_isIndex");o(_ft,"require_baseSet");o(Lft,"requireSet");Dft=Lft(),Ift=YT(Dft);o(Mft,"require_copyArray");o(Nft,"requireToPath");Pft=Nft(),Oft=YT(Pft),Bft={data:o(function(t){var r={field:"data",bindingEvent:"data",allowBinding:!1,allowSetting:!1,allowGetting:!1,settingEvent:"data",settingTriggersEvent:!1,triggerFnName:"trigger",immutableKeys:{},updateStyle:!1,beforeGet:o(function(i){},"beforeGet"),beforeSet:o(function(i,a){},"beforeSet"),onSet:o(function(i){},"onSet"),canSet:o(function(i){return!0},"canSet")};return t=br({},r,t),o(function(i,a){var s=t,l=this,u=l.length!==void 0,h=u?l:[l],d=u?l[0]:l;if(fr(i)){var f=i.indexOf(".")!==-1,p=f&&Oft(i);if(s.allowGetting&&a===void 0){var m;return d&&(s.beforeGet(d),p&&d._private[s.field][i]===void 0?m=kft(d._private[s.field],p):m=d._private[s.field][i]),m}else if(s.allowSetting&&a!==void 0){var g=!s.immutableKeys[i];if(g){var y=abe({},i,a);s.beforeSet(l,y);for(var v=0,x=h.length;v<x;v++){var b=h[v];s.canSet(b)&&(p&&d._private[s.field][i]===void 0?Ift(b._private[s.field],p,a):b._private[s.field][i]=a)}s.updateStyle&&l.updateStyle(),s.onSet(l),s.settingTriggersEvent&&l[s.triggerFnName](s.settingEvent)}}}else if(s.allowSetting&&cn(i)){var T=i,k,C,w=Object.keys(T);s.beforeSet(l,T);for(var S=0;S<w.length;S++){k=w[S],C=T[k];var R=!s.immutableKeys[k];if(R)for(var L=0;L<h.length;L++){var N=h[L];s.canSet(N)&&(N._private[s.field][k]=C)}}s.updateStyle&&l.updateStyle(),s.onSet(l),s.settingTriggersEvent&&l[s.triggerFnName](s.settingEvent)}else if(s.allowBinding&&Ci(i)){var I=i;l.on(s.bindingEvent,I)}else if(s.allowGetting&&i===void 0){var _;return d&&(s.beforeGet(d),_=d._private[s.field]),_}return l},"dataImpl")},"data"),removeData:o(function(t){var r={field:"data",event:"data",triggerFnName:"trigger",triggerEvent:!1,immutableKeys:{}};return t=br({},r,t),o(function(i){var a=t,s=this,l=s.length!==void 0,u=l?s:[s];if(fr(i)){for(var h=i.split(/\s+/),d=h.length,f=0;f<d;f++){var p=h[f];if(!Gf(p)){var m=!a.immutableKeys[p];if(m)for(var g=0,y=u.length;g<y;g++)u[g]._private[a.field][p]=void 0}}a.triggerEvent&&s[a.triggerFnName](a.event)}else if(i===void 0){for(var v=0,x=u.length;v<x;v++)for(var b=u[v]._private[a.field],T=Object.keys(b),k=0;k<T.length;k++){var C=T[k],w=!a.immutableKeys[C];w&&(b[C]=void 0)}a.triggerEvent&&s[a.triggerFnName](a.event)}return s},"removeDataImpl")},"removeData")},$ft={eventAliasesOn:o(function(t){var r=t;r.addListener=r.listen=r.bind=r.on,r.unlisten=r.unbind=r.off=r.removeListener,r.trigger=r.emit,r.pon=r.promiseOn=function(n,i){var a=this,s=Array.prototype.slice.call(arguments,0);return new q1(function(l,u){var h=o(function(m){a.off.apply(a,f),l(m)},"callback"),d=s.concat([h]),f=d.concat([]);a.on.apply(a,d)})}},"eventAliasesOn")},Dn={};[qdt,Bft,$ft].forEach(function(e){br(Dn,e)});Fft={animate:Dn.animate(),animation:Dn.animation(),animated:Dn.animated(),clearQueue:Dn.clearQueue(),delay:Dn.delay(),delayAnimation:Dn.delayAnimation(),stop:Dn.stop()},V5={classes:o(function(t){var r=this;if(t===void 0){var n=[];return r[0]._private.classes.forEach(function(g){return n.push(g)}),n}else Hn(t)||(t=(t||"").match(/\S+/g)||[]);for(var i=[],a=new W1(t),s=0;s<r.length;s++){for(var l=r[s],u=l._private,h=u.classes,d=!1,f=0;f<t.length;f++){var p=t[f],m=h.has(p);if(!m){d=!0;break}}d||(d=h.size!==t.length),d&&(u.classes=a,i.push(l))}return i.length>0&&this.spawn(i).updateStyle().emit("class"),r},"classes"),addClass:o(function(t){return this.toggleClass(t,!0)},"addClass"),hasClass:o(function(t){var r=this[0];return r!=null&&r._private.classes.has(t)},"hasClass"),toggleClass:o(function(t,r){Hn(t)||(t=t.match(/\S+/g)||[]);for(var n=this,i=r===void 0,a=[],s=0,l=n.length;s<l;s++)for(var u=n[s],h=u._private.classes,d=!1,f=0;f<t.length;f++){var p=t[f],m=h.has(p),g=!1;r||i&&!m?(h.add(p),g=!0):(!r||i&&m)&&(h.delete(p),g=!0),!d&&g&&(a.push(u),d=!0)}return a.length>0&&this.spawn(a).updateStyle().emit("class"),n},"toggleClass"),removeClass:o(function(t){return this.toggleClass(t,!1)},"removeClass"),flashClass:o(function(t,r){var n=this;if(r==null)r=250;else if(r===0)return n;return n.addClass(t),setTimeout(function(){n.removeClass(t)},r),n},"flashClass")};V5.className=V5.classNames=V5.classes;ln={metaChar:"[\\!\\\"\\#\\$\\%\\&\\'\\(\\)\\*\\+\\,\\.\\/\\:\\;\\<\\=\\>\\?\\@\\[\\]\\^\\`\\{\\|\\}\\~]",comparatorOp:"=|\\!=|>|>=|<|<=|\\$=|\\^=|\\*=",boolOp:"\\?|\\!|\\^",string:`"(?:\\\\"|[^"])*"|'(?:\\\\'|[^'])*'`,number:la,meta:"degree|indegree|outdegree",separator:"\\s*,\\s*",descendant:"\\s+",child:"\\s+>\\s+",subject:"\\$",group:"node|edge|\\*",directedEdge:"\\s+->\\s+",undirectedEdge:"\\s+<->\\s+"};ln.variable="(?:[\\w-.]|(?:\\\\"+ln.metaChar+"))+";ln.className="(?:[\\w-]|(?:\\\\"+ln.metaChar+"))+";ln.value=ln.string+"|"+ln.number;ln.id=ln.variable;(function(){var e,t,r;for(e=ln.comparatorOp.split("|"),r=0;r<e.length;r++)t=e[r],ln.comparatorOp+="|@"+t;for(e=ln.comparatorOp.split("|"),r=0;r<e.length;r++)t=e[r],!(t.indexOf("!")>=0)&&t!=="="&&(ln.comparatorOp+="|\\!"+t)})();zn=o(function(){return{checks:[]}},"newQuery"),er={GROUP:0,COLLECTION:1,FILTER:2,DATA_COMPARE:3,DATA_EXIST:4,DATA_BOOL:5,META_COMPARE:6,STATE:7,ID:8,CLASS:9,UNDIRECTED_EDGE:10,DIRECTED_EDGE:11,NODE_SOURCE:12,NODE_TARGET:13,NODE_NEIGHBOR:14,CHILD:15,DESCENDANT:16,PARENT:17,ANCESTOR:18,COMPOUND_SPLIT:19,TRUE:20},nF=[{selector:":selected",matches:o(function(t){return t.selected()},"matches")},{selector:":unselected",matches:o(function(t){return!t.selected()},"matches")},{selector:":selectable",matches:o(function(t){return t.selectable()},"matches")},{selector:":unselectable",matches:o(function(t){return!t.selectable()},"matches")},{selector:":locked",matches:o(function(t){return t.locked()},"matches")},{selector:":unlocked",matches:o(function(t){return!t.locked()},"matches")},{selector:":visible",matches:o(function(t){return t.visible()},"matches")},{selector:":hidden",matches:o(function(t){return!t.visible()},"matches")},{selector:":transparent",matches:o(function(t){return t.transparent()},"matches")},{selector:":grabbed",matches:o(function(t){return t.grabbed()},"matches")},{selector:":free",matches:o(function(t){return!t.grabbed()},"matches")},{selector:":removed",matches:o(function(t){return t.removed()},"matches")},{selector:":inside",matches:o(function(t){return!t.removed()},"matches")},{selector:":grabbable",matches:o(function(t){return t.grabbable()},"matches")},{selector:":ungrabbable",matches:o(function(t){return!t.grabbable()},"matches")},{selector:":animated",matches:o(function(t){return t.animated()},"matches")},{selector:":unanimated",matches:o(function(t){return!t.animated()},"matches")},{selector:":parent",matches:o(function(t){return t.isParent()},"matches")},{selector:":childless",matches:o(function(t){return t.isChildless()},"matches")},{selector:":child",matches:o(function(t){return t.isChild()},"matches")},{selector:":orphan",matches:o(function(t){return t.isOrphan()},"matches")},{selector:":nonorphan",matches:o(function(t){return t.isChild()},"matches")},{selector:":compound",matches:o(function(t){return t.isNode()?t.isParent():t.source().isParent()||t.target().isParent()},"matches")},{selector:":loop",matches:o(function(t){return t.isLoop()},"matches")},{selector:":simple",matches:o(function(t){return t.isSimple()},"matches")},{selector:":active",matches:o(function(t){return t.active()},"matches")},{selector:":inactive",matches:o(function(t){return!t.active()},"matches")},{selector:":backgrounding",matches:o(function(t){return t.backgrounding()},"matches")},{selector:":nonbackgrounding",matches:o(function(t){return!t.backgrounding()},"matches")}].sort(function(e,t){return But(e.selector,t.selector)}),zft=(function(){for(var e={},t,r=0;r<nF.length;r++)t=nF[r],e[t.selector]=t.matches;return e})(),Gft=o(function(t,r){return zft[t](r)},"stateSelectorMatches"),Vft="("+nF.map(function(e){return e.selector}).join("|")+")",S1=o(function(t){return t.replace(new RegExp("\\\\("+ln.metaChar+")","g"),function(r,n){return n})},"cleanMetaChars"),Nf=o(function(t,r,n){t[t.length-1]=n},"replaceLastQuery"),iF=[{name:"group",query:!0,regex:"("+ln.group+")",populate:o(function(t,r,n){var i=Ki(n,1),a=i[0];r.checks.push({type:er.GROUP,value:a==="*"?a:a+"s"})},"populate")},{name:"state",query:!0,regex:Vft,populate:o(function(t,r,n){var i=Ki(n,1),a=i[0];r.checks.push({type:er.STATE,value:a})},"populate")},{name:"id",query:!0,regex:"\\#("+ln.id+")",populate:o(function(t,r,n){var i=Ki(n,1),a=i[0];r.checks.push({type:er.ID,value:S1(a)})},"populate")},{name:"className",query:!0,regex:"\\.("+ln.className+")",populate:o(function(t,r,n){var i=Ki(n,1),a=i[0];r.checks.push({type:er.CLASS,value:S1(a)})},"populate")},{name:"dataExists",query:!0,regex:"\\[\\s*("+ln.variable+")\\s*\\]",populate:o(function(t,r,n){var i=Ki(n,1),a=i[0];r.checks.push({type:er.DATA_EXIST,field:S1(a)})},"populate")},{name:"dataCompare",query:!0,regex:"\\[\\s*("+ln.variable+")\\s*("+ln.comparatorOp+")\\s*("+ln.value+")\\s*\\]",populate:o(function(t,r,n){var i=Ki(n,3),a=i[0],s=i[1],l=i[2],u=new RegExp("^"+ln.string+"$").exec(l)!=null;u?l=l.substring(1,l.length-1):l=parseFloat(l),r.checks.push({type:er.DATA_COMPARE,field:S1(a),operator:s,value:l})},"populate")},{name:"dataBool",query:!0,regex:"\\[\\s*("+ln.boolOp+")\\s*("+ln.variable+")\\s*\\]",populate:o(function(t,r,n){var i=Ki(n,2),a=i[0],s=i[1];r.checks.push({type:er.DATA_BOOL,field:S1(s),operator:a})},"populate")},{name:"metaCompare",query:!0,regex:"\\[\\[\\s*("+ln.meta+")\\s*("+ln.comparatorOp+")\\s*("+ln.number+")\\s*\\]\\]",populate:o(function(t,r,n){var i=Ki(n,3),a=i[0],s=i[1],l=i[2];r.checks.push({type:er.META_COMPARE,field:S1(a),operator:s,value:parseFloat(l)})},"populate")},{name:"nextQuery",separator:!0,regex:ln.separator,populate:o(function(t,r){var n=t.currentSubject,i=t.edgeCount,a=t.compoundCount,s=t[t.length-1];n!=null&&(s.subject=n,t.currentSubject=null),s.edgeCount=i,s.compoundCount=a,t.edgeCount=0,t.compoundCount=0;var l=t[t.length++]=zn();return l},"populate")},{name:"directedEdge",separator:!0,regex:ln.directedEdge,populate:o(function(t,r){if(t.currentSubject==null){var n=zn(),i=r,a=zn();return n.checks.push({type:er.DIRECTED_EDGE,source:i,target:a}),Nf(t,r,n),t.edgeCount++,a}else{var s=zn(),l=r,u=zn();return s.checks.push({type:er.NODE_SOURCE,source:l,target:u}),Nf(t,r,s),t.edgeCount++,u}},"populate")},{name:"undirectedEdge",separator:!0,regex:ln.undirectedEdge,populate:o(function(t,r){if(t.currentSubject==null){var n=zn(),i=r,a=zn();return n.checks.push({type:er.UNDIRECTED_EDGE,nodes:[i,a]}),Nf(t,r,n),t.edgeCount++,a}else{var s=zn(),l=r,u=zn();return s.checks.push({type:er.NODE_NEIGHBOR,node:l,neighbor:u}),Nf(t,r,s),u}},"populate")},{name:"child",separator:!0,regex:ln.child,populate:o(function(t,r){if(t.currentSubject==null){var n=zn(),i=zn(),a=t[t.length-1];return n.checks.push({type:er.CHILD,parent:a,child:i}),Nf(t,r,n),t.compoundCount++,i}else if(t.currentSubject===r){var s=zn(),l=t[t.length-1],u=zn(),h=zn(),d=zn(),f=zn();return s.checks.push({type:er.COMPOUND_SPLIT,left:l,right:u,subject:h}),h.checks=r.checks,r.checks=[{type:er.TRUE}],f.checks.push({type:er.TRUE}),u.checks.push({type:er.PARENT,parent:f,child:d}),Nf(t,l,s),t.currentSubject=h,t.compoundCount++,d}else{var p=zn(),m=zn(),g=[{type:er.PARENT,parent:p,child:m}];return p.checks=r.checks,r.checks=g,t.compoundCount++,m}},"populate")},{name:"descendant",separator:!0,regex:ln.descendant,populate:o(function(t,r){if(t.currentSubject==null){var n=zn(),i=zn(),a=t[t.length-1];return n.checks.push({type:er.DESCENDANT,ancestor:a,descendant:i}),Nf(t,r,n),t.compoundCount++,i}else if(t.currentSubject===r){var s=zn(),l=t[t.length-1],u=zn(),h=zn(),d=zn(),f=zn();return s.checks.push({type:er.COMPOUND_SPLIT,left:l,right:u,subject:h}),h.checks=r.checks,r.checks=[{type:er.TRUE}],f.checks.push({type:er.TRUE}),u.checks.push({type:er.ANCESTOR,ancestor:f,descendant:d}),Nf(t,l,s),t.currentSubject=h,t.compoundCount++,d}else{var p=zn(),m=zn(),g=[{type:er.ANCESTOR,ancestor:p,descendant:m}];return p.checks=r.checks,r.checks=g,t.compoundCount++,m}},"populate")},{name:"subject",modifier:!0,regex:ln.subject,populate:o(function(t,r){if(t.currentSubject!=null&&t.currentSubject!==r)return In("Redefinition of subject in selector `"+t.toString()+"`"),!1;t.currentSubject=r;var n=t[t.length-1],i=n.checks[0],a=i==null?null:i.type;a===er.DIRECTED_EDGE?i.type=er.NODE_TARGET:a===er.UNDIRECTED_EDGE&&(i.type=er.NODE_NEIGHBOR,i.node=i.nodes[1],i.neighbor=i.nodes[0],i.nodes=null)},"populate")}];iF.forEach(function(e){return e.regexObj=new RegExp("^"+e.regex)});Wft=o(function(t){for(var r,n,i,a=0;a<iF.length;a++){var s=iF[a],l=s.name,u=t.match(s.regexObj);if(u!=null){n=u,r=s,i=l;var h=u[0];t=t.substring(h.length);break}}return{expr:r,match:n,name:i,remaining:t}},"consumeExpr"),qft=o(function(t){var r=t.match(/^\s+/);if(r){var n=r[0];t=t.substring(n.length)}return t},"consumeWhitespace"),Hft=o(function(t){var r=this,n=r.inputText=t,i=r[0]=zn();for(r.length=1,n=qft(n);;){var a=Wft(n);if(a.expr==null)return In("The selector `"+t+"`is invalid"),!1;var s=a.match.slice(1),l=a.expr.populate(r,i,s);if(l===!1)return!1;if(l!=null&&(i=l),n=a.remaining,n.match(/^\s*$/))break}var u=r[r.length-1];r.currentSubject!=null&&(u.subject=r.currentSubject),u.edgeCount=r.edgeCount,u.compoundCount=r.compoundCount;for(var h=0;h<r.length;h++){var d=r[h];if(d.compoundCount>0&&d.edgeCount>0)return In("The selector `"+t+"` is invalid because it uses both a compound selector and an edge selector"),!1;if(d.edgeCount>1)return In("The selector `"+t+"` is invalid because it uses multiple edge selectors"),!1;d.edgeCount===1&&In("The selector `"+t+"` is deprecated.  Edge selectors do not take effect on changes to source and target nodes after an edge is added, for performance reasons.  Use a class or data selector on edges instead, updating the class or data of an edge when your app detects a change in source or target nodes.")}return!0},"parse"),Uft=o(function(){if(this.toStringCache!=null)return this.toStringCache;for(var t=o(function(d){return d??""},"clean"),r=o(function(d){return fr(d)?'"'+d+'"':t(d)},"cleanVal"),n=o(function(d){return" "+d+" "},"space"),i=o(function(d,f){var p=d.type,m=d.value;switch(p){case er.GROUP:{var g=t(m);return g.substring(0,g.length-1)}case er.DATA_COMPARE:{var y=d.field,v=d.operator;return"["+y+n(t(v))+r(m)+"]"}case er.DATA_BOOL:{var x=d.operator,b=d.field;return"["+t(x)+b+"]"}case er.DATA_EXIST:{var T=d.field;return"["+T+"]"}case er.META_COMPARE:{var k=d.operator,C=d.field;return"[["+C+n(t(k))+r(m)+"]]"}case er.STATE:return m;case er.ID:return"#"+m;case er.CLASS:return"."+m;case er.PARENT:case er.CHILD:return a(d.parent,f)+n(">")+a(d.child,f);case er.ANCESTOR:case er.DESCENDANT:return a(d.ancestor,f)+" "+a(d.descendant,f);case er.COMPOUND_SPLIT:{var w=a(d.left,f),S=a(d.subject,f),R=a(d.right,f);return w+(w.length>0?" ":"")+S+R}case er.TRUE:return""}},"checkToString"),a=o(function(d,f){return d.checks.reduce(function(p,m,g){return p+(f===d&&g===0?"$":"")+i(m,f)},"")},"queryToString"),s="",l=0;l<this.length;l++){var u=this[l];s+=a(u,u.subject),this.length>1&&l<this.length-1&&(s+=", ")}return this.toStringCache=s,s},"toString"),Yft={parse:Hft,toString:Uft},Hbe=o(function(t,r,n){var i,a=fr(t),s=Gt(t),l=fr(n),u,h,d=!1,f=!1,p=!1;switch(r.indexOf("!")>=0&&(r=r.replace("!",""),f=!0),r.indexOf("@")>=0&&(r=r.replace("@",""),d=!0),(a||l||d)&&(u=!a&&!s?"":""+t,h=""+n),d&&(t=u=u.toLowerCase(),n=h=h.toLowerCase()),r){case"*=":i=u.indexOf(h)>=0;break;case"$=":i=u.indexOf(h,u.length-h.length)>=0;break;case"^=":i=u.indexOf(h)===0;break;case"=":i=t===n;break;case">":p=!0,i=t>n;break;case">=":p=!0,i=t>=n;break;case"<":p=!0,i=t<n;break;case"<=":p=!0,i=t<=n;break;default:i=!1;break}return f&&(t!=null||!p)&&(i=!i),i},"valCmp"),jft=o(function(t,r){switch(r){case"?":return!!t;case"!":return!t;case"^":return t===void 0}},"boolCmp"),Xft=o(function(t){return t!==void 0},"existCmp"),LF=o(function(t,r){return t.data(r)},"data"),Kft=o(function(t,r){return t[r]()},"meta"),Ii=[],si=o(function(t,r){return t.checks.every(function(n){return Ii[n.type](n,r)})},"matches");Ii[er.GROUP]=function(e,t){var r=e.value;return r==="*"||r===t.group()};Ii[er.STATE]=function(e,t){var r=e.value;return Gft(r,t)};Ii[er.ID]=function(e,t){var r=e.value;return t.id()===r};Ii[er.CLASS]=function(e,t){var r=e.value;return t.hasClass(r)};Ii[er.META_COMPARE]=function(e,t){var r=e.field,n=e.operator,i=e.value;return Hbe(Kft(t,r),n,i)};Ii[er.DATA_COMPARE]=function(e,t){var r=e.field,n=e.operator,i=e.value;return Hbe(LF(t,r),n,i)};Ii[er.DATA_BOOL]=function(e,t){var r=e.field,n=e.operator;return jft(LF(t,r),n)};Ii[er.DATA_EXIST]=function(e,t){var r=e.field;return e.operator,Xft(LF(t,r))};Ii[er.UNDIRECTED_EDGE]=function(e,t){var r=e.nodes[0],n=e.nodes[1],i=t.source(),a=t.target();return si(r,i)&&si(n,a)||si(n,i)&&si(r,a)};Ii[er.NODE_NEIGHBOR]=function(e,t){return si(e.node,t)&&t.neighborhood().some(function(r){return r.isNode()&&si(e.neighbor,r)})};Ii[er.DIRECTED_EDGE]=function(e,t){return si(e.source,t.source())&&si(e.target,t.target())};Ii[er.NODE_SOURCE]=function(e,t){return si(e.source,t)&&t.outgoers().some(function(r){return r.isNode()&&si(e.target,r)})};Ii[er.NODE_TARGET]=function(e,t){return si(e.target,t)&&t.incomers().some(function(r){return r.isNode()&&si(e.source,r)})};Ii[er.CHILD]=function(e,t){return si(e.child,t)&&si(e.parent,t.parent())};Ii[er.PARENT]=function(e,t){return si(e.parent,t)&&t.children().some(function(r){return si(e.child,r)})};Ii[er.DESCENDANT]=function(e,t){return si(e.descendant,t)&&t.ancestors().some(function(r){return si(e.ancestor,r)})};Ii[er.ANCESTOR]=function(e,t){return si(e.ancestor,t)&&t.descendants().some(function(r){return si(e.descendant,r)})};Ii[er.COMPOUND_SPLIT]=function(e,t){return si(e.subject,t)&&si(e.left,t)&&si(e.right,t)};Ii[er.TRUE]=function(){return!0};Ii[er.COLLECTION]=function(e,t){var r=e.value;return r.has(t)};Ii[er.FILTER]=function(e,t){var r=e.value;return r(t)};Zft=o(function(t){var r=this;if(r.length===1&&r[0].checks.length===1&&r[0].checks[0].type===er.ID)return t.getElementById(r[0].checks[0].value).collection();var n=o(function(a){for(var s=0;s<r.length;s++){var l=r[s];if(si(l,a))return!0}return!1},"selectorFunction");return r.text()==null&&(n=o(function(){return!0},"selectorFunction")),t.filter(n)},"filter"),Qft=o(function(t){for(var r=this,n=0;n<r.length;n++){var i=r[n];if(si(i,t))return!0}return!1},"matches"),Jft={matches:Qft,filter:Zft},qf=o(function(t){this.inputText=t,this.currentSubject=null,this.compoundCount=0,this.edgeCount=0,this.length=0,t==null||fr(t)&&t.match(/^\s*$/)||(Ho(t)?this.addQuery({checks:[{type:er.COLLECTION,value:t.collection()}]}):Ci(t)?this.addQuery({checks:[{type:er.FILTER,value:t}]}):fr(t)?this.parse(t)||(this.invalid=!0):pi("A selector must be created from a string; found "))},"Selector"),Hf=qf.prototype;[Yft,Jft].forEach(function(e){return br(Hf,e)});Hf.text=function(){return this.inputText};Hf.size=function(){return this.length};Hf.eq=function(e){return this[e]};Hf.sameText=function(e){return!this.invalid&&!e.invalid&&this.text()===e.text()};Hf.addQuery=function(e){this[this.length++]=e};Hf.selector=Hf.toString;Ff={allAre:o(function(t){var r=new qf(t);return this.every(function(n){return r.matches(n)})},"allAre"),is:o(function(t){var r=new qf(t);return this.some(function(n){return r.matches(n)})},"is"),some:o(function(t,r){for(var n=0;n<this.length;n++){var i=r?t.apply(r,[this[n],n,this]):t(this[n],n,this);if(i)return!0}return!1},"some"),every:o(function(t,r){for(var n=0;n<this.length;n++){var i=r?t.apply(r,[this[n],n,this]):t(this[n],n,this);if(!i)return!1}return!0},"every"),same:o(function(t){if(this===t)return!0;t=this.cy().collection(t);var r=this.length,n=t.length;return r!==n?!1:r===1?this[0]===t[0]:this.every(function(i){return t.hasElementWithId(i.id())})},"same"),anySame:o(function(t){return t=this.cy().collection(t),this.some(function(r){return t.hasElementWithId(r.id())})},"anySame"),allAreNeighbors:o(function(t){t=this.cy().collection(t);var r=this.neighborhood();return t.every(function(n){return r.hasElementWithId(n.id())})},"allAreNeighbors"),contains:o(function(t){t=this.cy().collection(t);var r=this;return t.every(function(n){return r.hasElementWithId(n.id())})},"contains")};Ff.allAreNeighbours=Ff.allAreNeighbors;Ff.has=Ff.contains;Ff.equal=Ff.equals=Ff.same;Sl=o(function(t,r){return o(function(i,a,s,l){var u=i,h=this,d;if(u==null?d="":Ho(u)&&u.length===1&&(d=u.id()),h.length===1&&d){var f=h[0]._private,p=f.traversalCache=f.traversalCache||{},m=p[r]=p[r]||[],g=rg(d),y=m[g];return y||(m[g]=t.call(h,i,a,s,l))}else return t.call(h,i,a,s,l)},"traversalCache")},"cache"),V1={parent:o(function(t){var r=[];if(this.length===1){var n=this[0]._private.parent;if(n)return n}for(var i=0;i<this.length;i++){var a=this[i],s=a._private.parent;s&&r.push(s)}return this.spawn(r,!0).filter(t)},"parent"),parents:o(function(t){for(var r=[],n=this.parent();n.nonempty();){for(var i=0;i<n.length;i++){var a=n[i];r.push(a)}n=n.parent()}return this.spawn(r,!0).filter(t)},"parents"),commonAncestors:o(function(t){for(var r,n=0;n<this.length;n++){var i=this[n],a=i.parents();r=r||a,r=r.intersect(a)}return r.filter(t)},"commonAncestors"),orphans:o(function(t){return this.stdFilter(function(r){return r.isOrphan()}).filter(t)},"orphans"),nonorphans:o(function(t){return this.stdFilter(function(r){return r.isChild()}).filter(t)},"nonorphans"),children:Sl(function(e){for(var t=[],r=0;r<this.length;r++)for(var n=this[r],i=n._private.children,a=0;a<i.length;a++)t.push(i[a]);return this.spawn(t,!0).filter(e)},"children"),siblings:o(function(t){return this.parent().children().not(this).filter(t)},"siblings"),isParent:o(function(){var t=this[0];if(t)return t.isNode()&&t._private.children.length!==0},"isParent"),isChildless:o(function(){var t=this[0];if(t)return t.isNode()&&t._private.children.length===0},"isChildless"),isChild:o(function(){var t=this[0];if(t)return t.isNode()&&t._private.parent!=null},"isChild"),isOrphan:o(function(){var t=this[0];if(t)return t.isNode()&&t._private.parent==null},"isOrphan"),descendants:o(function(t){var r=[];function n(i){for(var a=0;a<i.length;a++){var s=i[a];r.push(s),s.children().nonempty()&&n(s.children())}}return o(n,"add"),n(this.children()),this.spawn(r,!0).filter(t)},"descendants")};o(DF,"forEachCompound");o(Ube,"addChildren");V1.forEachDown=function(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!0;return DF(this,e,t,Ube)};o(Ybe,"addParent");V1.forEachUp=function(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!0;return DF(this,e,t,Ybe)};o(ept,"addParentAndChildren");V1.forEachUpAndDown=function(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!0;return DF(this,e,t,ept)};V1.ancestors=V1.parents;zT=jbe={data:Dn.data({field:"data",bindingEvent:"data",allowBinding:!0,allowSetting:!0,settingEvent:"data",settingTriggersEvent:!0,triggerFnName:"trigger",allowGetting:!0,immutableKeys:{id:!0,source:!0,target:!0,parent:!0},updateStyle:!0}),removeData:Dn.removeData({field:"data",event:"data",triggerFnName:"trigger",triggerEvent:!0,immutableKeys:{id:!0,source:!0,target:!0,parent:!0},updateStyle:!0}),scratch:Dn.data({field:"scratch",bindingEvent:"scratch",allowBinding:!0,allowSetting:!0,settingEvent:"scratch",settingTriggersEvent:!0,triggerFnName:"trigger",allowGetting:!0,updateStyle:!0}),removeScratch:Dn.removeData({field:"scratch",event:"scratch",triggerFnName:"trigger",triggerEvent:!0,updateStyle:!0}),rscratch:Dn.data({field:"rscratch",allowBinding:!1,allowSetting:!0,settingTriggersEvent:!1,allowGetting:!0}),removeRscratch:Dn.removeData({field:"rscratch",triggerEvent:!1}),id:o(function(){var t=this[0];if(t)return t._private.data.id},"id")};zT.attr=zT.data;zT.removeAttr=zT.removeData;tpt=jbe,xA={};o($$,"defineDegreeFunction");br(xA,{degree:$$(function(e,t){return t.source().same(t.target())?2:1}),indegree:$$(function(e,t){return t.target().same(e)?1:0}),outdegree:$$(function(e,t){return t.source().same(e)?1:0})});o(E1,"defineDegreeBoundsFunction");br(xA,{minDegree:E1("degree",function(e,t){return e<t}),maxDegree:E1("degree",function(e,t){return e>t}),minIndegree:E1("indegree",function(e,t){return e<t}),maxIndegree:E1("indegree",function(e,t){return e>t}),minOutdegree:E1("outdegree",function(e,t){return e<t}),maxOutdegree:E1("outdegree",function(e,t){return e>t})});br(xA,{totalDegree:o(function(t){for(var r=0,n=this.nodes(),i=0;i<n.length;i++)r+=n[i].degree(t);return r},"totalDegree")});Kbe=o(function(t,r,n){for(var i=0;i<t.length;i++){var a=t[i];if(!a.locked()){var s=a._private.position,l={x:r.x!=null?r.x-s.x:0,y:r.y!=null?r.y-s.y:0};a.isParent()&&!(l.x===0&&l.y===0)&&a.children().shift(l,n),a.dirtyBoundingBoxCache()}}},"beforePositionSet"),fxe={field:"position",bindingEvent:"position",allowBinding:!0,allowSetting:!0,settingEvent:"position",settingTriggersEvent:!0,triggerFnName:"emitAndNotify",allowGetting:!0,validKeys:["x","y"],beforeGet:o(function(t){t.updateCompoundBounds()},"beforeGet"),beforeSet:o(function(t,r){Kbe(t,r,!1)},"beforeSet"),onSet:o(function(t){t.dirtyCompoundBoundsCache()},"onSet"),canSet:o(function(t){return!t.locked()},"canSet")};yc=Xbe={position:Dn.data(fxe),silentPosition:Dn.data(br({},fxe,{allowBinding:!1,allowSetting:!0,settingTriggersEvent:!1,allowGetting:!1,beforeSet:o(function(t,r){Kbe(t,r,!0)},"beforeSet"),onSet:o(function(t){t.dirtyCompoundBoundsCache()},"onSet")})),positions:o(function(t,r){if(cn(t))r?this.silentPosition(t):this.position(t);else if(Ci(t)){var n=t,i=this.cy();i.startBatch();for(var a=0;a<this.length;a++){var s=this[a],l=void 0;(l=n(s,a))&&(r?s.silentPosition(l):s.position(l))}i.endBatch()}return this},"positions"),silentPositions:o(function(t){return this.positions(t,!0)},"silentPositions"),shift:o(function(t,r,n){var i;if(cn(t)?(i={x:Gt(t.x)?t.x:0,y:Gt(t.y)?t.y:0},n=r):fr(t)&&Gt(r)&&(i={x:0,y:0},i[t]=r),i!=null){var a=this.cy();a.startBatch();for(var s=0;s<this.length;s++){var l=this[s];if(!(a.hasCompoundNodes()&&l.isChild()&&l.ancestors().anySame(this))){var u=l.position(),h={x:u.x+i.x,y:u.y+i.y};n?l.silentPosition(h):l.position(h)}}a.endBatch()}return this},"shift"),silentShift:o(function(t,r){return cn(t)?this.shift(t,!0):fr(t)&&Gt(r)&&this.shift(t,r,!0),this},"silentShift"),renderedPosition:o(function(t,r){var n=this[0],i=this.cy(),a=i.zoom(),s=i.pan(),l=cn(t)?t:void 0,u=l!==void 0||r!==void 0&&fr(t);if(n&&n.isNode())if(u)for(var h=0;h<this.length;h++){var d=this[h];r!==void 0?d.position(t,(r-s[t])/a):l!==void 0&&d.position(kbe(l,a,s))}else{var f=n.position();return l=fA(f,a,s),t===void 0?l:l[t]}else if(!u)return;return this},"renderedPosition"),relativePosition:o(function(t,r){var n=this[0],i=this.cy(),a=cn(t)?t:void 0,s=a!==void 0||r!==void 0&&fr(t),l=i.hasCompoundNodes();if(n&&n.isNode())if(s)for(var u=0;u<this.length;u++){var h=this[u],d=l?h.parent():null,f=d&&d.length>0,p=f;f&&(d=d[0]);var m=p?d.position():{x:0,y:0};r!==void 0?h.position(t,r+m[t]):a!==void 0&&h.position({x:a.x+m.x,y:a.y+m.y})}else{var g=n.position(),y=l?n.parent():null,v=y&&y.length>0,x=v;v&&(y=y[0]);var b=x?y.position():{x:0,y:0};return a={x:g.x-b.x,y:g.y-b.y},t===void 0?a:a[t]}else if(!s)return;return this},"relativePosition")};yc.modelPosition=yc.point=yc.position;yc.modelPositions=yc.points=yc.positions;yc.renderedPoint=yc.renderedPosition;yc.relativePoint=yc.relativePosition;rpt=Xbe;F1=Xf={};Xf.renderedBoundingBox=function(e){var t=this.boundingBox(e),r=this.cy(),n=r.zoom(),i=r.pan(),a=t.x1*n+i.x,s=t.x2*n+i.x,l=t.y1*n+i.y,u=t.y2*n+i.y;return{x1:a,x2:s,y1:l,y2:u,w:s-a,h:u-l}};Xf.dirtyCompoundBoundsCache=function(){var e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:!1,t=this.cy();return!t.styleEnabled()||!t.hasCompoundNodes()?this:(this.forEachUp(function(r){if(r.isParent()){var n=r._private;n.compoundBoundsClean=!1,n.bbCache=null,e||r.emitAndNotify("bounds")}}),this)};Xf.updateCompoundBounds=function(){var e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:!1,t=this.cy();if(!t.styleEnabled()||!t.hasCompoundNodes())return this;if(!e&&t.batching())return this;function r(s){if(!s.isParent())return;var l=s._private,u=s.children(),h=s.pstyle("compound-sizing-wrt-labels").value==="include",d={width:{val:s.pstyle("min-width").pfValue,left:s.pstyle("min-width-bias-left"),right:s.pstyle("min-width-bias-right")},height:{val:s.pstyle("min-height").pfValue,top:s.pstyle("min-height-bias-top"),bottom:s.pstyle("min-height-bias-bottom")}},f=u.boundingBox({includeLabels:h,includeOverlays:!1,useCache:!1}),p=l.position;(f.w===0||f.h===0)&&(f={w:s.pstyle("width").pfValue,h:s.pstyle("height").pfValue},f.x1=p.x-f.w/2,f.x2=p.x+f.w/2,f.y1=p.y-f.h/2,f.y2=p.y+f.h/2);function m(L,N,I){var _=0,A=0,M=N+I;return L>0&&M>0&&(_=N/M*L,A=I/M*L),{biasDiff:_,biasComplementDiff:A}}o(m,"computeBiasValues");function g(L,N,I,_){if(I.units==="%")switch(_){case"width":return L>0?I.pfValue*L:0;case"height":return N>0?I.pfValue*N:0;case"average":return L>0&&N>0?I.pfValue*(L+N)/2:0;case"min":return L>0&&N>0?L>N?I.pfValue*N:I.pfValue*L:0;case"max":return L>0&&N>0?L>N?I.pfValue*L:I.pfValue*N:0;default:return 0}else return I.units==="px"?I.pfValue:0}o(g,"computePaddingValues");var y=d.width.left.value;d.width.left.units==="px"&&d.width.val>0&&(y=y*100/d.width.val);var v=d.width.right.value;d.width.right.units==="px"&&d.width.val>0&&(v=v*100/d.width.val);var x=d.height.top.value;d.height.top.units==="px"&&d.height.val>0&&(x=x*100/d.height.val);var b=d.height.bottom.value;d.height.bottom.units==="px"&&d.height.val>0&&(b=b*100/d.height.val);var T=m(d.width.val-f.w,y,v),k=T.biasDiff,C=T.biasComplementDiff,w=m(d.height.val-f.h,x,b),S=w.biasDiff,R=w.biasComplementDiff;l.autoPadding=g(f.w,f.h,s.pstyle("padding"),s.pstyle("padding-relative-to").value),l.autoWidth=Math.max(f.w,d.width.val),p.x=(-k+f.x1+f.x2+C)/2,l.autoHeight=Math.max(f.h,d.height.val),p.y=(-S+f.y1+f.y2+R)/2}o(r,"update");for(var n=0;n<this.length;n++){var i=this[n],a=i._private;(!a.compoundBoundsClean||e)&&(r(i),t.batching()||(a.compoundBoundsClean=!0))}return this};kl=o(function(t){return t===1/0||t===-1/0?0:t},"noninf"),gc=o(function(t,r,n,i,a){i-r===0||a-n===0||r==null||n==null||i==null||a==null||(t.x1=r<t.x1?r:t.x1,t.x2=i>t.x2?i:t.x2,t.y1=n<t.y1?n:t.y1,t.y2=a>t.y2?a:t.y2,t.w=t.x2-t.x1,t.h=t.y2-t.y1)},"updateBounds"),Pf=o(function(t,r){return r==null?t:gc(t,r.x1,r.y1,r.x2,r.y2)},"updateBoundsFromBox"),wT=o(function(t,r,n){return mo(t,r,n)},"prefixedProperty"),I5=o(function(t,r,n){if(!r.cy().headless()){var i=r._private,a=i.rstyle,s=a.arrowWidth/2,l=r.pstyle(n+"-arrow-shape").value,u,h;if(l!=="none"){n==="source"?(u=a.srcX,h=a.srcY):n==="target"?(u=a.tgtX,h=a.tgtY):(u=a.midX,h=a.midY);var d=i.arrowBounds=i.arrowBounds||{},f=d[n]=d[n]||{};f.x1=u-s,f.y1=h-s,f.x2=u+s,f.y2=h+s,f.w=f.x2-f.x1,f.h=f.y2-f.y1,z5(f,1),gc(t,f.x1,f.y1,f.x2,f.y2)}}},"updateBoundsFromArrow"),F$=o(function(t,r,n){if(!r.cy().headless()){var i;n?i=n+"-":i="";var a=r._private,s=a.rstyle,l=r.pstyle(i+"label").strValue;if(l){var u=r.pstyle("text-halign"),h=r.pstyle("text-valign"),d=wT(s,"labelWidth",n),f=wT(s,"labelHeight",n),p=wT(s,"labelX",n),m=wT(s,"labelY",n),g=r.pstyle(i+"text-margin-x").pfValue,y=r.pstyle(i+"text-margin-y").pfValue,v=r.isEdge(),x=r.pstyle(i+"text-rotation"),b=r.pstyle("text-outline-width").pfValue,T=r.pstyle("text-border-width").pfValue,k=T/2,C=r.pstyle("text-background-padding").pfValue,w=2,S=f,R=d,L=R/2,N=S/2,I,_,A,M;if(v)I=p-L,_=p+L,A=m-N,M=m+N;else{switch(u.value){case"left":I=p-R,_=p;break;case"center":I=p-L,_=p+L;break;case"right":I=p,_=p+R;break}switch(h.value){case"top":A=m-S,M=m;break;case"center":A=m-N,M=m+N;break;case"bottom":A=m,M=m+S;break}}var D=g-Math.max(b,k)-C-w,P=g+Math.max(b,k)+C+w,B=y-Math.max(b,k)-C-w,O=y+Math.max(b,k)+C+w;I+=D,_+=P,A+=B,M+=O;var $=n||"main",V=a.labelBounds,G=V[$]=V[$]||{};G.x1=I,G.y1=A,G.x2=_,G.y2=M,G.w=_-I,G.h=M-A,G.leftPad=D,G.rightPad=P,G.topPad=B,G.botPad=O;var z=v&&x.strValue==="autorotate",W=x.pfValue!=null&&x.pfValue!==0;if(z||W){var H=z?wT(a.rstyle,"labelAngle",n):x.pfValue,j=Math.cos(H),Q=Math.sin(H),U=(I+_)/2,oe=(A+M)/2;if(!v){switch(u.value){case"left":U=_;break;case"right":U=I;break}switch(h.value){case"top":oe=M;break;case"bottom":oe=A;break}}var te=o(function(Oe,ue){return Oe=Oe-U,ue=ue-oe,{x:Oe*j-ue*Q+U,y:Oe*Q+ue*j+oe}},"rotate"),le=te(I,A),ie=te(I,M),ae=te(_,A),Re=te(_,M);I=Math.min(le.x,ie.x,ae.x,Re.x),_=Math.max(le.x,ie.x,ae.x,Re.x),A=Math.min(le.y,ie.y,ae.y,Re.y),M=Math.max(le.y,ie.y,ae.y,Re.y)}var be=$+"Rot",Pe=V[be]=V[be]||{};Pe.x1=I,Pe.y1=A,Pe.x2=_,Pe.y2=M,Pe.w=_-I,Pe.h=M-A,gc(t,I,A,_,M),gc(a.labelBounds.all,I,A,_,M)}return t}},"updateBoundsFromLabel"),pxe=o(function(t,r){if(!r.cy().headless()){var n=r.pstyle("outline-opacity").value,i=r.pstyle("outline-width").value,a=r.pstyle("outline-offset").value,s=i+a;Zbe(t,r,n,s,"outside",s/2)}},"updateBoundsFromOutline"),Zbe=o(function(t,r,n,i,a,s){if(!(n===0||i<=0||a==="inside")){var l=r.cy(),u=l.renderer(),h=u.nodeShapes[u.getNodeShape(r)];if(h){var d=r.position(),f=d.x,p=d.y,m=r.width(),g=r.height();if(h.hasMiterBounds){a==="center"&&(i/=2);var y=h.miterBounds(f,p,m,g,i);Pf(t,y)}else s!=null&&s>0&&G5(t,[s,s,s,s])}}},"updateBoundsFromMiter"),npt=o(function(t,r){if(!r.cy().headless()){var n=r.pstyle("border-opacity").value,i=r.pstyle("border-width").pfValue,a=r.pstyle("border-position").value;Zbe(t,r,n,i,a)}},"updateBoundsFromMiterBorder"),ipt=o(function(t,r){var n=t._private.cy,i=n.styleEnabled(),a=n.headless(),s=Ns(),l=t._private,u=t.isNode(),h=t.isEdge(),d,f,p,m,g,y,v=l.rstyle,x=u&&i?t.pstyle("bounds-expansion").pfValue:[0],b=o(function(Ge){return Ge.pstyle("display").value!=="none"},"isDisplayed"),T=!i||b(t)&&(!h||b(t.source())&&b(t.target()));if(T){var k=0,C=0;i&&r.includeOverlays&&(k=t.pstyle("overlay-opacity").value,k!==0&&(C=t.pstyle("overlay-padding").value));var w=0,S=0;i&&r.includeUnderlays&&(w=t.pstyle("underlay-opacity").value,w!==0&&(S=t.pstyle("underlay-padding").value));var R=Math.max(C,S),L=0,N=0;if(i&&(L=t.pstyle("width").pfValue,N=L/2),u&&r.includeNodes){var I=t.position();g=I.x,y=I.y;var _=t.outerWidth(),A=_/2,M=t.outerHeight(),D=M/2;d=g-A,f=g+A,p=y-D,m=y+D,gc(s,d,p,f,m),i&&pxe(s,t),i&&r.includeOutlines&&!a&&pxe(s,t),i&&npt(s,t)}else if(h&&r.includeEdges)if(i&&!a){var P=t.pstyle("curve-style").strValue;if(d=Math.min(v.srcX,v.midX,v.tgtX),f=Math.max(v.srcX,v.midX,v.tgtX),p=Math.min(v.srcY,v.midY,v.tgtY),m=Math.max(v.srcY,v.midY,v.tgtY),d-=N,f+=N,p-=N,m+=N,gc(s,d,p,f,m),P==="haystack"){var B=v.haystackPts;if(B&&B.length===2){if(d=B[0].x,p=B[0].y,f=B[1].x,m=B[1].y,d>f){var O=d;d=f,f=O}if(p>m){var $=p;p=m,m=$}gc(s,d-N,p-N,f+N,m+N)}}else if(P==="bezier"||P==="unbundled-bezier"||Of(P,"segments")||Of(P,"taxi")){var V;switch(P){case"bezier":case"unbundled-bezier":V=v.bezierPts;break;case"segments":case"taxi":case"round-segments":case"round-taxi":V=v.linePts;break}if(V!=null)for(var G=0;G<V.length;G++){var z=V[G];d=z.x-N,f=z.x+N,p=z.y-N,m=z.y+N,gc(s,d,p,f,m)}}}else{var W=t.source(),H=W.position(),j=t.target(),Q=j.position();if(d=H.x,f=Q.x,p=H.y,m=Q.y,d>f){var U=d;d=f,f=U}if(p>m){var oe=p;p=m,m=oe}d-=N,f+=N,p-=N,m+=N,gc(s,d,p,f,m)}if(i&&r.includeEdges&&h&&(I5(s,t,"mid-source"),I5(s,t,"mid-target"),I5(s,t,"source"),I5(s,t,"target")),i){var te=t.pstyle("ghost").value==="yes";if(te){var le=t.pstyle("ghost-offset-x").pfValue,ie=t.pstyle("ghost-offset-y").pfValue;gc(s,s.x1+le,s.y1+ie,s.x2+le,s.y2+ie)}}var ae=l.bodyBounds=l.bodyBounds||{};J1e(ae,s),G5(ae,x),z5(ae,1),i&&(d=s.x1,f=s.x2,p=s.y1,m=s.y2,gc(s,d-R,p-R,f+R,m+R));var Re=l.overlayBounds=l.overlayBounds||{};J1e(Re,s),G5(Re,x),z5(Re,1);var be=l.labelBounds=l.labelBounds||{};be.all!=null?Fht(be.all):be.all=Ns(),i&&r.includeLabels&&(r.includeMainLabels&&F$(s,t,null),h&&(r.includeSourceLabels&&F$(s,t,"source"),r.includeTargetLabels&&F$(s,t,"target")))}return s.x1=kl(s.x1),s.y1=kl(s.y1),s.x2=kl(s.x2),s.y2=kl(s.y2),s.w=kl(s.x2-s.x1),s.h=kl(s.y2-s.y1),s.w>0&&s.h>0&&T&&(G5(s,x),z5(s,1)),s},"boundingBoxImpl"),Qbe=o(function(t){var r=0,n=o(function(s){return(s?1:0)<<r++},"tf"),i=0;return i+=n(t.incudeNodes),i+=n(t.includeEdges),i+=n(t.includeLabels),i+=n(t.includeMainLabels),i+=n(t.includeSourceLabels),i+=n(t.includeTargetLabels),i+=n(t.includeOverlays),i+=n(t.includeOutlines),i},"getKey"),Jbe=o(function(t){var r=o(function(l){return Math.round(l)},"r");if(t.isEdge()){var n=t.source().position(),i=t.target().position();return Y1e([r(n.x),r(n.y),r(i.x),r(i.y)])}else{var a=t.position();return Y1e([r(a.x),r(a.y)])}},"getBoundingBoxPosKey"),mxe=o(function(t,r){var n=t._private,i,a=t.isEdge(),s=r==null?gxe:Qbe(r),l=s===gxe;if(n.bbCache==null?(i=ipt(t,GT),n.bbCache=i,n.bbCachePosKey=Jbe(t)):i=n.bbCache,!l){var u=t.isNode();i=Ns(),(r.includeNodes&&u||r.includeEdges&&!u)&&(r.includeOverlays?Pf(i,n.overlayBounds):Pf(i,n.bodyBounds)),r.includeLabels&&(r.includeMainLabels&&(!a||r.includeSourceLabels&&r.includeTargetLabels)?Pf(i,n.labelBounds.all):(r.includeMainLabels&&Pf(i,n.labelBounds.mainRot),r.includeSourceLabels&&Pf(i,n.labelBounds.sourceRot),r.includeTargetLabels&&Pf(i,n.labelBounds.targetRot))),i.w=i.x2-i.x1,i.h=i.y2-i.y1}return i},"cachedBoundingBoxImpl"),GT={includeNodes:!0,includeEdges:!0,includeLabels:!0,includeMainLabels:!0,includeSourceLabels:!0,includeTargetLabels:!0,includeOverlays:!0,includeUnderlays:!0,includeOutlines:!0,useCache:!0},gxe=Qbe(GT),yxe=Va(GT);Xf.boundingBox=function(e){var t,r=e===void 0||e.useCache===void 0||e.useCache===!0,n=z1(function(d){var f=d._private;return f.bbCache==null||f.styleDirty||f.bbCachePosKey!==Jbe(d)},function(d){return d.id()});if(r&&this.length===1&&!n(this[0]))e===void 0?e=GT:e=yxe(e),t=mxe(this[0],e);else{t=Ns(),e=e||GT;var i=yxe(e),a=this,s=a.cy(),l=s.styleEnabled();this.edges().forEach(n),this.nodes().forEach(n),l&&this.recalculateRenderedStyle(r),this.updateCompoundBounds(!r);for(var u=0;u<a.length;u++){var h=a[u];n(h)&&h.dirtyBoundingBoxCache(),Pf(t,mxe(h,i))}}return t.x1=kl(t.x1),t.y1=kl(t.y1),t.x2=kl(t.x2),t.y2=kl(t.y2),t.w=kl(t.x2-t.x1),t.h=kl(t.y2-t.y1),t};Xf.dirtyBoundingBoxCache=function(){for(var e=0;e<this.length;e++){var t=this[e]._private;t.bbCache=null,t.bbCachePosKey=null,t.bodyBounds=null,t.overlayBounds=null,t.labelBounds.all=null,t.labelBounds.source=null,t.labelBounds.target=null,t.labelBounds.main=null,t.labelBounds.sourceRot=null,t.labelBounds.targetRot=null,t.labelBounds.mainRot=null,t.arrowBounds.source=null,t.arrowBounds.target=null,t.arrowBounds["mid-source"]=null,t.arrowBounds["mid-target"]=null}return this.emitAndNotify("bounds"),this};Xf.boundingBoxAt=function(e){var t=this.nodes(),r=this.cy(),n=r.hasCompoundNodes(),i=r.collection();if(n&&(i=t.filter(function(h){return h.isParent()}),t=t.not(i)),cn(e)){var a=e;e=o(function(){return a},"fn")}var s=o(function(d,f){return d._private.bbAtOldPos=e(d,f)},"storeOldPos"),l=o(function(d){return d._private.bbAtOldPos},"getOldPos");r.startBatch(),t.forEach(s).silentPositions(e),n&&(i.dirtyCompoundBoundsCache(),i.dirtyBoundingBoxCache(),i.updateCompoundBounds(!0));var u=$ht(this.boundingBox({useCache:!1}));return t.silentPositions(l),n&&(i.dirtyCompoundBoundsCache(),i.dirtyBoundingBoxCache(),i.updateCompoundBounds(!0)),r.endBatch(),u};F1.boundingbox=F1.bb=F1.boundingBox;F1.renderedBoundingbox=F1.renderedBoundingBox;apt=Xf;LT=QT={};e2e=o(function(t){t.uppercaseName=I1e(t.name),t.autoName="auto"+t.uppercaseName,t.labelName="label"+t.uppercaseName,t.outerName="outer"+t.uppercaseName,t.uppercaseOuterName=I1e(t.outerName),LT[t.name]=o(function(){var n=this[0],i=n._private,a=i.cy,s=a._private.styleEnabled;if(n)if(s){if(n.isParent())return n.updateCompoundBounds(),i[t.autoName]||0;var l=n.pstyle(t.name);switch(l.strValue){case"label":return n.recalculateRenderedStyle(),i.rstyle[t.labelName]||0;default:return l.pfValue}}else return 1},"dimImpl"),LT["outer"+t.uppercaseName]=o(function(){var n=this[0],i=n._private,a=i.cy,s=a._private.styleEnabled;if(n)if(s){var l=n[t.name](),u=n.pstyle("border-position").value,h;u==="center"?h=n.pstyle("border-width").pfValue:u==="outside"?h=2*n.pstyle("border-width").pfValue:h=0;var d=2*n.padding();return l+h+d}else return 1},"outerDimImpl"),LT["rendered"+t.uppercaseName]=o(function(){var n=this[0];if(n){var i=n[t.name]();return i*this.cy().zoom()}},"renderedDimImpl"),LT["rendered"+t.uppercaseOuterName]=o(function(){var n=this[0];if(n){var i=n[t.outerName]();return i*this.cy().zoom()}},"renderedOuterDimImpl")},"defineDimFns");e2e({name:"width"});e2e({name:"height"});QT.padding=function(){var e=this[0],t=e._private;return e.isParent()?(e.updateCompoundBounds(),t.autoPadding!==void 0?t.autoPadding:e.pstyle("padding").pfValue):e.pstyle("padding").pfValue};QT.paddedHeight=function(){var e=this[0];return e.height()+2*e.padding()};QT.paddedWidth=function(){var e=this[0];return e.width()+2*e.padding()};spt=QT,opt=o(function(t,r){if(t.isEdge()&&t.takesUpSpace())return r(t)},"ifEdge"),lpt=o(function(t,r){if(t.isEdge()&&t.takesUpSpace()){var n=t.cy();return fA(r(t),n.zoom(),n.pan())}},"ifEdgeRenderedPosition"),cpt=o(function(t,r){if(t.isEdge()&&t.takesUpSpace()){var n=t.cy(),i=n.pan(),a=n.zoom();return r(t).map(function(s){return fA(s,a,i)})}},"ifEdgeRenderedPositions"),upt=o(function(t){return t.renderer().getControlPoints(t)},"controlPoints"),hpt=o(function(t){return t.renderer().getSegmentPoints(t)},"segmentPoints"),dpt=o(function(t){return t.renderer().getSourceEndpoint(t)},"sourceEndpoint"),fpt=o(function(t){return t.renderer().getTargetEndpoint(t)},"targetEndpoint"),ppt=o(function(t){return t.renderer().getEdgeMidpoint(t)},"midpoint"),vxe={controlPoints:{get:upt,mult:!0},segmentPoints:{get:hpt,mult:!0},sourceEndpoint:{get:dpt},targetEndpoint:{get:fpt},midpoint:{get:ppt}},mpt=o(function(t){return"rendered"+t[0].toUpperCase()+t.substr(1)},"renderedName"),gpt=Object.keys(vxe).reduce(function(e,t){var r=vxe[t],n=mpt(t);return e[t]=function(){return opt(this,r.get)},r.mult?e[n]=function(){return cpt(this,r.get)}:e[n]=function(){return lpt(this,r.get)},e},{}),ypt=br({},rpt,apt,spt,gpt);t2e=o(function(t,r){this.recycle(t,r)},"Event");o(kT,"returnFalse");o(M5,"returnTrue");t2e.prototype={instanceString:o(function(){return"event"},"instanceString"),recycle:o(function(t,r){if(this.isImmediatePropagationStopped=this.isPropagationStopped=this.isDefaultPrevented=kT,t!=null&&t.preventDefault?(this.type=t.type,this.isDefaultPrevented=t.defaultPrevented?M5:kT):t!=null&&t.type?r=t:this.type=t,r!=null&&(this.originalEvent=r.originalEvent,this.type=r.type!=null?r.type:this.type,this.cy=r.cy,this.target=r.target,this.position=r.position,this.renderedPosition=r.renderedPosition,this.namespace=r.namespace,this.layout=r.layout),this.cy!=null&&this.position!=null&&this.renderedPosition==null){var n=this.position,i=this.cy.zoom(),a=this.cy.pan();this.renderedPosition={x:n.x*i+a.x,y:n.y*i+a.y}}this.timeStamp=t&&t.timeStamp||Date.now()},"recycle"),preventDefault:o(function(){this.isDefaultPrevented=M5;var t=this.originalEvent;t&&t.preventDefault&&t.preventDefault()},"preventDefault"),stopPropagation:o(function(){this.isPropagationStopped=M5;var t=this.originalEvent;t&&t.stopPropagation&&t.stopPropagation()},"stopPropagation"),stopImmediatePropagation:o(function(){this.isImmediatePropagationStopped=M5,this.stopPropagation()},"stopImmediatePropagation"),isDefaultPrevented:kT,isPropagationStopped:kT,isImmediatePropagationStopped:kT};r2e=/^([^.]+)(\.(?:[^.]+))?$/,vpt=".*",n2e={qualifierCompare:o(function(t,r){return t===r},"qualifierCompare"),eventMatches:o(function(){return!0},"eventMatches"),addEventFields:o(function(){},"addEventFields"),callbackContext:o(function(t){return t},"callbackContext"),beforeEmit:o(function(){},"beforeEmit"),afterEmit:o(function(){},"afterEmit"),bubble:o(function(){return!1},"bubble"),parent:o(function(){return null},"parent"),context:null},xxe=Object.keys(n2e),xpt={};o(bA,"Emitter");Uf=bA.prototype,i2e=o(function(t,r,n,i,a,s,l){Ci(i)&&(a=i,i=null),l&&(s==null?s=l:s=br({},s,l));for(var u=Hn(n)?n:n.split(/\s+/),h=0;h<u.length;h++){var d=u[h];if(!Gf(d)){var f=d.match(r2e);if(f){var p=f[1],m=f[2]?f[2]:null,g=r(t,d,p,m,i,a,s);if(g===!1)break}}}},"forEachEvent"),bxe=o(function(t,r){return t.addEventFields(t.context,r),new t2e(r.type,r)},"makeEventObj"),bpt=o(function(t,r,n){if(Eut(n)){r(t,n);return}else if(cn(n)){r(t,bxe(t,n));return}for(var i=Hn(n)?n:n.split(/\s+/),a=0;a<i.length;a++){var s=i[a];if(!Gf(s)){var l=s.match(r2e);if(l){var u=l[1],h=l[2]?l[2]:null,d=bxe(t,{type:u,namespace:h,target:t.context});r(t,d)}}}},"forEachEventObj");Uf.on=Uf.addListener=function(e,t,r,n,i){return i2e(this,function(a,s,l,u,h,d,f){Ci(d)&&a.listeners.push({event:s,callback:d,type:l,namespace:u,qualifier:h,conf:f})},e,t,r,n,i),this};Uf.one=function(e,t,r,n){return this.on(e,t,r,n,{one:!0})};Uf.removeListener=Uf.off=function(e,t,r,n){var i=this;this.emitting!==0&&(this.listeners=lht(this.listeners));for(var a=this.listeners,s=o(function(h){var d=a[h];i2e(i,function(f,p,m,g,y,v){if((d.type===m||e==="*")&&(!g&&d.namespace!==".*"||d.namespace===g)&&(!y||f.qualifierCompare(d.qualifier,y))&&(!v||d.callback===v))return a.splice(h,1),!1},e,t,r,n)},"_loop"),l=a.length-1;l>=0;l--)s(l);return this};Uf.removeAllListeners=function(){return this.removeListener("*")};Uf.emit=Uf.trigger=function(e,t,r){var n=this.listeners,i=n.length;return this.emitting++,Hn(t)||(t=[t]),bpt(this,function(a,s){r!=null&&(n=[{event:s.event,type:s.type,namespace:s.namespace,callback:r}],i=n.length);for(var l=o(function(){var d=n[u];if(d.type===s.type&&(!d.namespace||d.namespace===s.namespace||d.namespace===vpt)&&a.eventMatches(a.context,d,s)){var f=[s];t!=null&&uht(f,t),a.beforeEmit(a.context,d,s),d.conf&&d.conf.one&&(a.listeners=a.listeners.filter(function(g){return g!==d}));var p=a.callbackContext(a.context,d,s),m=d.callback.apply(p,f);a.afterEmit(a.context,d,s),m===!1&&(s.stopPropagation(),s.preventDefault())}},"_loop2"),u=0;u<i;u++)l();a.bubble(a.context)&&!s.isPropagationStopped()&&a.parent(a.context).emit(s,t)},e),this.emitting--,this};Tpt={qualifierCompare:o(function(t,r){return t==null||r==null?t==null&&r==null:t.sameText(r)},"qualifierCompare"),eventMatches:o(function(t,r,n){var i=r.qualifier;return i!=null?t!==n.target&&UT(n.target)&&i.matches(n.target):!0},"eventMatches"),addEventFields:o(function(t,r){r.cy=t.cy(),r.target=t},"addEventFields"),callbackContext:o(function(t,r,n){return r.qualifier!=null?n.target:t},"callbackContext"),beforeEmit:o(function(t,r){r.conf&&r.conf.once&&r.conf.onceCollection.removeListener(r.event,r.qualifier,r.callback)},"beforeEmit"),bubble:o(function(){return!0},"bubble"),parent:o(function(t){return t.isChild()?t.parent():t.cy()},"parent")},N5=o(function(t){return fr(t)?new qf(t):t},"argSelector"),a2e={createEmitter:o(function(){for(var t=0;t<this.length;t++){var r=this[t],n=r._private;n.emitter||(n.emitter=new bA(Tpt,r))}return this},"createEmitter"),emitter:o(function(){return this._private.emitter},"emitter"),on:o(function(t,r,n){for(var i=N5(r),a=0;a<this.length;a++){var s=this[a];s.emitter().on(t,i,n)}return this},"on"),removeListener:o(function(t,r,n){for(var i=N5(r),a=0;a<this.length;a++){var s=this[a];s.emitter().removeListener(t,i,n)}return this},"removeListener"),removeAllListeners:o(function(){for(var t=0;t<this.length;t++){var r=this[t];r.emitter().removeAllListeners()}return this},"removeAllListeners"),one:o(function(t,r,n){for(var i=N5(r),a=0;a<this.length;a++){var s=this[a];s.emitter().one(t,i,n)}return this},"one"),once:o(function(t,r,n){for(var i=N5(r),a=0;a<this.length;a++){var s=this[a];s.emitter().on(t,i,n,{once:!0,onceCollection:this})}},"once"),emit:o(function(t,r){for(var n=0;n<this.length;n++){var i=this[n];i.emitter().emit(t,r)}return this},"emit"),emitAndNotify:o(function(t,r){if(this.length!==0)return this.cy().notify(t,this),this.emit(t,r),this},"emitAndNotify")};Dn.eventAliasesOn(a2e);s2e={nodes:o(function(t){return this.filter(function(r){return r.isNode()}).filter(t)},"nodes"),edges:o(function(t){return this.filter(function(r){return r.isEdge()}).filter(t)},"edges"),byGroup:o(function(){for(var t=this.spawn(),r=this.spawn(),n=0;n<this.length;n++){var i=this[n];i.isNode()?t.push(i):r.push(i)}return{nodes:t,edges:r}},"byGroup"),filter:o(function(t,r){if(t===void 0)return this;if(fr(t)||Ho(t))return new qf(t).filter(this);if(Ci(t)){for(var n=this.spawn(),i=this,a=0;a<i.length;a++){var s=i[a],l=r?t.apply(r,[s,a,i]):t(s,a,i);l&&n.push(s)}return n}return this.spawn()},"filter"),not:o(function(t){if(t){fr(t)&&(t=this.filter(t));for(var r=this.spawn(),n=0;n<this.length;n++){var i=this[n],a=t.has(i);a||r.push(i)}return r}else return this},"not"),absoluteComplement:o(function(){var t=this.cy();return t.mutableElements().not(this)},"absoluteComplement"),intersect:o(function(t){if(fr(t)){var r=t;return this.filter(r)}for(var n=this.spawn(),i=this,a=t,s=this.length<t.length,l=s?i:a,u=s?a:i,h=0;h<l.length;h++){var d=l[h];u.has(d)&&n.push(d)}return n},"intersect"),xor:o(function(t){var r=this._private.cy;fr(t)&&(t=r.$(t));var n=this.spawn(),i=this,a=t,s=o(function(u,h){for(var d=0;d<u.length;d++){var f=u[d],p=f._private.data.id,m=h.hasElementWithId(p);m||n.push(f)}},"add");return s(i,a),s(a,i),n},"xor"),diff:o(function(t){var r=this._private.cy;fr(t)&&(t=r.$(t));var n=this.spawn(),i=this.spawn(),a=this.spawn(),s=this,l=t,u=o(function(d,f,p){for(var m=0;m<d.length;m++){var g=d[m],y=g._private.data.id,v=f.hasElementWithId(y);v?a.merge(g):p.push(g)}},"add");return u(s,l,n),u(l,s,i),{left:n,right:i,both:a}},"diff"),add:o(function(t){var r=this._private.cy;if(!t)return this;if(fr(t)){var n=t;t=r.mutableElements().filter(n)}for(var i=this.spawnSelf(),a=0;a<t.length;a++){var s=t[a],l=!this.has(s);l&&i.push(s)}return i},"add"),merge:o(function(t){var r=this._private,n=r.cy;if(!t)return this;if(t&&fr(t)){var i=t;t=n.mutableElements().filter(i)}for(var a=r.map,s=0;s<t.length;s++){var l=t[s],u=l._private.data.id,h=!a.has(u);if(h){var d=this.length++;this[d]=l,a.set(u,{ele:l,index:d})}}return this},"merge"),unmergeAt:o(function(t){var r=this[t],n=r.id(),i=this._private,a=i.map;this[t]=void 0,a.delete(n);var s=t===this.length-1;if(this.length>1&&!s){var l=this.length-1,u=this[l],h=u._private.data.id;this[l]=void 0,this[t]=u,a.set(h,{ele:u,index:t})}return this.length--,this},"unmergeAt"),unmergeOne:o(function(t){t=t[0];var r=this._private,n=t._private.data.id,i=r.map,a=i.get(n);if(!a)return this;var s=a.index;return this.unmergeAt(s),this},"unmergeOne"),unmerge:o(function(t){var r=this._private.cy;if(!t)return this;if(t&&fr(t)){var n=t;t=r.mutableElements().filter(n)}for(var i=0;i<t.length;i++)this.unmergeOne(t[i]);return this},"unmerge"),unmergeBy:o(function(t){for(var r=this.length-1;r>=0;r--){var n=this[r];t(n)&&this.unmergeAt(r)}return this},"unmergeBy"),map:o(function(t,r){for(var n=[],i=this,a=0;a<i.length;a++){var s=i[a],l=r?t.apply(r,[s,a,i]):t(s,a,i);n.push(l)}return n},"map"),reduce:o(function(t,r){for(var n=r,i=this,a=0;a<i.length;a++)n=t(n,i[a],a,i);return n},"reduce"),max:o(function(t,r){for(var n=-1/0,i,a=this,s=0;s<a.length;s++){var l=a[s],u=r?t.apply(r,[l,s,a]):t(l,s,a);u>n&&(n=u,i=l)}return{value:n,ele:i}},"max"),min:o(function(t,r){for(var n=1/0,i,a=this,s=0;s<a.length;s++){var l=a[s],u=r?t.apply(r,[l,s,a]):t(l,s,a);u<n&&(n=u,i=l)}return{value:n,ele:i}},"min")},gn=s2e;gn.u=gn["|"]=gn["+"]=gn.union=gn.or=gn.add;gn["\\"]=gn["!"]=gn["-"]=gn.difference=gn.relativeComplement=gn.subtract=gn.not;gn.n=gn["&"]=gn["."]=gn.and=gn.intersection=gn.intersect;gn["^"]=gn["(+)"]=gn["(-)"]=gn.symmetricDifference=gn.symdiff=gn.xor;gn.fnFilter=gn.filterFn=gn.stdFilter=gn.filter;gn.complement=gn.abscomp=gn.absoluteComplement;Cpt={isNode:o(function(){return this.group()==="nodes"},"isNode"),isEdge:o(function(){return this.group()==="edges"},"isEdge"),isLoop:o(function(){return this.isEdge()&&this.source()[0]===this.target()[0]},"isLoop"),isSimple:o(function(){return this.isEdge()&&this.source()[0]!==this.target()[0]},"isSimple"),group:o(function(){var t=this[0];if(t)return t._private.group},"group")},o2e=o(function(t,r){var n=t.cy(),i=n.hasCompoundNodes();function a(d){var f=d.pstyle("z-compound-depth");return f.value==="auto"?i?d.zDepth():0:f.value==="bottom"?-1:f.value==="top"?bF:0}o(a,"getDepth");var s=a(t)-a(r);if(s!==0)return s;function l(d){var f=d.pstyle("z-index-compare");return f.value==="auto"&&d.isNode()?1:0}o(l,"getEleDepth");var u=l(t)-l(r);if(u!==0)return u;var h=t.pstyle("z-index").value-r.pstyle("z-index").value;return h!==0?h:t.poolIndex()-r.poolIndex()},"zIndexSort"),nA={forEach:o(function(t,r){if(Ci(t))for(var n=this.length,i=0;i<n;i++){var a=this[i],s=r?t.apply(r,[a,i,this]):t(a,i,this);if(s===!1)break}return this},"forEach"),toArray:o(function(){for(var t=[],r=0;r<this.length;r++)t.push(this[r]);return t},"toArray"),slice:o(function(t,r){var n=[],i=this.length;r==null&&(r=i),t==null&&(t=0),t<0&&(t=i+t),r<0&&(r=i+r);for(var a=t;a>=0&&a<r&&a<i;a++)n.push(this[a]);return this.spawn(n)},"slice"),size:o(function(){return this.length},"size"),eq:o(function(t){return this[t]||this.spawn()},"eq"),first:o(function(){return this[0]||this.spawn()},"first"),last:o(function(){return this[this.length-1]||this.spawn()},"last"),empty:o(function(){return this.length===0},"empty"),nonempty:o(function(){return!this.empty()},"nonempty"),sort:o(function(t){if(!Ci(t))return this;var r=this.toArray().sort(t);return this.spawn(r)},"sort"),sortByZIndex:o(function(){return this.sort(o2e)},"sortByZIndex"),zDepth:o(function(){var t=this[0];if(t){var r=t._private,n=r.group;if(n==="nodes"){var i=r.data.parent?t.parents().size():0;return t.isParent()?i:bF-1}else{var a=r.source,s=r.target,l=a.zDepth(),u=s.zDepth();return Math.max(l,u,0)}}},"zDepth")};nA.each=nA.forEach;wpt=o(function(){var t="undefined",r=(typeof Symbol>"u"?"undefined":ca(Symbol))!=t&&ca(Symbol.iterator)!=t;r&&(nA[Symbol.iterator]=function(){var n=this,i={value:void 0,done:!1},a=0,s=this.length;return abe({next:o(function(){return a<s?i.value=n[a++]:(i.value=void 0,i.done=!0),i},"next")},Symbol.iterator,function(){return this})})},"defineSymbolIterator");wpt();kpt=Va({nodeDimensionsIncludeLabels:!1}),W5={layoutDimensions:o(function(t){t=kpt(t);var r;if(!this.takesUpSpace())r={w:0,h:0};else if(t.nodeDimensionsIncludeLabels){var n=this.boundingBox();r={w:n.w,h:n.h}}else r={w:this.outerWidth(),h:this.outerHeight()};return(r.w===0||r.h===0)&&(r.w=r.h=1),r},"layoutDimensions"),layoutPositions:o(function(t,r,n){var i=this.nodes().filter(function(C){return!C.isParent()}),a=this.cy(),s=r.eles,l=o(function(w){return w.id()},"getMemoizeKey"),u=z1(n,l);t.emit({type:"layoutstart",layout:t}),t.animations=[];var h=o(function(w,S,R){var L={x:S.x1+S.w/2,y:S.y1+S.h/2},N={x:(R.x-L.x)*w,y:(R.y-L.y)*w};return{x:L.x+N.x,y:L.y+N.y}},"calculateSpacing"),d=r.spacingFactor&&r.spacingFactor!==1,f=o(function(){if(!d)return null;for(var w=Ns(),S=0;S<i.length;S++){var R=i[S],L=u(R,S);Sbe(w,L.x,L.y)}return w},"spacingBb"),p=f(),m=z1(function(C,w){var S=u(C,w);if(d){var R=Math.abs(r.spacingFactor);S=h(R,p,S)}return r.transform!=null&&(S=r.transform(C,S)),S},l);if(r.animate){for(var g=0;g<i.length;g++){var y=i[g],v=m(y,g),x=r.animateFilter==null||r.animateFilter(y,g);if(x){var b=y.animation({position:v,duration:r.animationDuration,easing:r.animationEasing});t.animations.push(b)}else y.position(v)}if(r.fit){var T=a.animation({fit:{boundingBox:s.boundingBoxAt(m),padding:r.padding},duration:r.animationDuration,easing:r.animationEasing});t.animations.push(T)}else if(r.zoom!==void 0&&r.pan!==void 0){var k=a.animation({zoom:r.zoom,pan:r.pan,duration:r.animationDuration,easing:r.animationEasing});t.animations.push(k)}t.animations.forEach(function(C){return C.play()}),t.one("layoutready",r.ready),t.emit({type:"layoutready",layout:t}),q1.all(t.animations.map(function(C){return C.promise()})).then(function(){t.one("layoutstop",r.stop),t.emit({type:"layoutstop",layout:t})})}else i.positions(m),r.fit&&a.fit(r.eles,r.padding),r.zoom!=null&&a.zoom(r.zoom),r.pan&&a.pan(r.pan),t.one("layoutready",r.ready),t.emit({type:"layoutready",layout:t}),t.one("layoutstop",r.stop),t.emit({type:"layoutstop",layout:t});return this},"layoutPositions"),layout:o(function(t){var r=this.cy();return r.makeLayout(br({},t,{eles:this}))},"layout")};W5.createLayout=W5.makeLayout=W5.layout;o(l2e,"styleCache");o(TA,"cacheStyleFunction");o(CA,"cachePrototypeStyleFunction");za={recalculateRenderedStyle:o(function(t){var r=this.cy(),n=r.renderer(),i=r.styleEnabled();return n&&i&&n.recalculateRenderedStyle(this,t),this},"recalculateRenderedStyle"),dirtyStyleCache:o(function(){var t=this.cy(),r=o(function(a){return a._private.styleCache=null},"dirty");if(t.hasCompoundNodes()){var n;n=this.spawnSelf().merge(this.descendants()).merge(this.parents()),n.merge(n.connectedEdges()),n.forEach(r)}else this.forEach(function(i){r(i),i.connectedEdges().forEach(r)});return this},"dirtyStyleCache"),updateStyle:o(function(t){var r=this._private.cy;if(!r.styleEnabled())return this;if(r.batching()){var n=r._private.batchStyleEles;return n.merge(this),this}var i=r.hasCompoundNodes(),a=this;t=!!(t||t===void 0),i&&(a=this.spawnSelf().merge(this.descendants()).merge(this.parents()));var s=a;return t?s.emitAndNotify("style"):s.emit("style"),a.forEach(function(l){return l._private.styleDirty=!0}),this},"updateStyle"),cleanStyle:o(function(){var t=this.cy();if(t.styleEnabled())for(var r=0;r<this.length;r++){var n=this[r];n._private.styleDirty&&(n._private.styleDirty=!1,t.style().apply(n))}},"cleanStyle"),parsedStyle:o(function(t){var r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!0,n=this[0],i=n.cy();if(i.styleEnabled()&&n){n._private.styleDirty&&(n._private.styleDirty=!1,i.style().apply(n));var a=n._private.style[t];return a??(r?i.style().getDefaultProperty(t):null)}},"parsedStyle"),numericStyle:o(function(t){var r=this[0];if(r.cy().styleEnabled()&&r){var n=r.pstyle(t);return n.pfValue!==void 0?n.pfValue:n.value}},"numericStyle"),numericStyleUnits:o(function(t){var r=this[0];if(r.cy().styleEnabled()&&r)return r.pstyle(t).units},"numericStyleUnits"),renderedStyle:o(function(t){var r=this.cy();if(!r.styleEnabled())return this;var n=this[0];if(n)return r.style().getRenderedStyle(n,t)},"renderedStyle"),style:o(function(t,r){var n=this.cy();if(!n.styleEnabled())return this;var i=!1,a=n.style();if(cn(t)){var s=t;a.applyBypass(this,s,i),this.emitAndNotify("style")}else if(fr(t))if(r===void 0){var l=this[0];return l?a.getStylePropertyValue(l,t):void 0}else a.applyBypass(this,t,r,i),this.emitAndNotify("style");else if(t===void 0){var u=this[0];return u?a.getRawStyle(u):void 0}return this},"style"),removeStyle:o(function(t){var r=this.cy();if(!r.styleEnabled())return this;var n=!1,i=r.style(),a=this;if(t===void 0)for(var s=0;s<a.length;s++){var l=a[s];i.removeAllBypasses(l,n)}else{t=t.split(/\s+/);for(var u=0;u<a.length;u++){var h=a[u];i.removeBypasses(h,t,n)}}return this.emitAndNotify("style"),this},"removeStyle"),show:o(function(){return this.css("display","element"),this},"show"),hide:o(function(){return this.css("display","none"),this},"hide"),effectiveOpacity:o(function(){var t=this.cy();if(!t.styleEnabled())return 1;var r=t.hasCompoundNodes(),n=this[0];if(n){var i=n._private,a=n.pstyle("opacity").value;if(!r)return a;var s=i.data.parent?n.parents():null;if(s)for(var l=0;l<s.length;l++){var u=s[l],h=u.pstyle("opacity").value;a=h*a}return a}},"effectiveOpacity"),transparent:o(function(){var t=this.cy();if(!t.styleEnabled())return!1;var r=this[0],n=r.cy().hasCompoundNodes();if(r)return n?r.effectiveOpacity()===0:r.pstyle("opacity").value===0},"transparent"),backgrounding:o(function(){var t=this.cy();if(!t.styleEnabled())return!1;var r=this[0];return!!r._private.backgrounding},"backgrounding")};o(z$,"checkCompound");o(IF,"defineDerivedStateFunction");H1=TA("eleTakesUpSpace",function(e){return e.pstyle("display").value==="element"&&e.width()!==0&&(e.isNode()?e.height()!==0:!0)});za.takesUpSpace=CA("takesUpSpace",IF({ok:H1}));Spt=TA("eleInteractive",function(e){return e.pstyle("events").value==="yes"&&e.pstyle("visibility").value==="visible"&&H1(e)}),Ept=TA("parentInteractive",function(e){return e.pstyle("visibility").value==="visible"&&H1(e)});za.interactive=CA("interactive",IF({ok:Spt,parentOk:Ept,edgeOkViaNode:H1}));za.noninteractive=function(){var e=this[0];if(e)return!e.interactive()};Apt=TA("eleVisible",function(e){return e.pstyle("visibility").value==="visible"&&e.pstyle("opacity").pfValue!==0&&H1(e)}),Rpt=H1;za.visible=CA("visible",IF({ok:Apt,edgeOkViaNode:Rpt}));za.hidden=function(){var e=this[0];if(e)return!e.visible()};za.isBundledBezier=CA("isBundledBezier",function(){return this.cy().styleEnabled()?!this.removed()&&this.pstyle("curve-style").value==="bezier"&&this.takesUpSpace():!1});za.bypass=za.css=za.style;za.renderedCss=za.renderedStyle;za.removeBypass=za.removeCss=za.removeStyle;za.pstyle=za.parsedStyle;zf={};o(Txe,"defineSwitchFunction");o(U1,"defineSwitchSet");U1({field:"locked",overrideField:o(function(t){return t.cy().autolock()?!0:void 0},"overrideField"),on:"lock",off:"unlock"});U1({field:"grabbable",overrideField:o(function(t){return t.cy().autoungrabify()||t.pannable()?!1:void 0},"overrideField"),on:"grabify",off:"ungrabify"});U1({field:"selected",ableField:"selectable",overrideAble:o(function(t){return t.cy().autounselectify()?!1:void 0},"overrideAble"),on:"select",off:"unselect"});U1({field:"selectable",overrideField:o(function(t){return t.cy().autounselectify()?!1:void 0},"overrideField"),on:"selectify",off:"unselectify"});zf.deselect=zf.unselect;zf.grabbed=function(){var e=this[0];if(e)return e._private.grabbed};U1({field:"active",on:"activate",off:"unactivate"});U1({field:"pannable",on:"panify",off:"unpanify"});zf.inactive=function(){var e=this[0];if(e)return!e._private.active};us={},Cxe=o(function(t){return o(function(n){for(var i=this,a=[],s=0;s<i.length;s++){var l=i[s];if(l.isNode()){for(var u=!1,h=l.connectedEdges(),d=0;d<h.length;d++){var f=h[d],p=f.source(),m=f.target();if(t.noIncomingEdges&&m===l&&p!==l||t.noOutgoingEdges&&p===l&&m!==l){u=!0;break}}u||a.push(l)}}return this.spawn(a,!0).filter(n)},"dagExtremityImpl")},"defineDagExtremity"),wxe=o(function(t){return function(r){for(var n=this,i=[],a=0;a<n.length;a++){var s=n[a];if(s.isNode())for(var l=s.connectedEdges(),u=0;u<l.length;u++){var h=l[u],d=h.source(),f=h.target();t.outgoing&&d===s?(i.push(h),i.push(f)):t.incoming&&f===s&&(i.push(h),i.push(d))}}return this.spawn(i,!0).filter(r)}},"defineDagOneHop"),kxe=o(function(t){return function(r){for(var n=this,i=[],a={};;){var s=t.outgoing?n.outgoers():n.incomers();if(s.length===0)break;for(var l=!1,u=0;u<s.length;u++){var h=s[u],d=h.id();a[d]||(a[d]=!0,i.push(h),l=!0)}if(!l)break;n=s}return this.spawn(i,!0).filter(r)}},"defineDagAllHops");us.clearTraversalCache=function(){for(var e=0;e<this.length;e++)this[e]._private.traversalCache=null};br(us,{roots:Cxe({noIncomingEdges:!0}),leaves:Cxe({noOutgoingEdges:!0}),outgoers:Sl(wxe({outgoing:!0}),"outgoers"),successors:kxe({outgoing:!0}),incomers:Sl(wxe({incoming:!0}),"incomers"),predecessors:kxe({})});br(us,{neighborhood:Sl(function(e){for(var t=[],r=this.nodes(),n=0;n<r.length;n++)for(var i=r[n],a=i.connectedEdges(),s=0;s<a.length;s++){var l=a[s],u=l.source(),h=l.target(),d=i===u?h:u;d.length>0&&t.push(d[0]),t.push(l[0])}return this.spawn(t,!0).filter(e)},"neighborhood"),closedNeighborhood:o(function(t){return this.neighborhood().add(this).filter(t)},"closedNeighborhood"),openNeighborhood:o(function(t){return this.neighborhood(t)},"openNeighborhood")});us.neighbourhood=us.neighborhood;us.closedNeighbourhood=us.closedNeighborhood;us.openNeighbourhood=us.openNeighborhood;br(us,{source:Sl(o(function(t){var r=this[0],n;return r&&(n=r._private.source||r.cy().collection()),n&&t?n.filter(t):n},"sourceImpl"),"source"),target:Sl(o(function(t){var r=this[0],n;return r&&(n=r._private.target||r.cy().collection()),n&&t?n.filter(t):n},"targetImpl"),"target"),sources:Sxe({attr:"source"}),targets:Sxe({attr:"target"})});o(Sxe,"defineSourceFunction");br(us,{edgesWith:Sl(Exe(),"edgesWith"),edgesTo:Sl(Exe({thisIsSrc:!0}),"edgesTo")});o(Exe,"defineEdgesWithFunction");br(us,{connectedEdges:Sl(function(e){for(var t=[],r=this,n=0;n<r.length;n++){var i=r[n];if(i.isNode())for(var a=i._private.edges,s=0;s<a.length;s++){var l=a[s];t.push(l)}}return this.spawn(t,!0).filter(e)},"connectedEdges"),connectedNodes:Sl(function(e){for(var t=[],r=this,n=0;n<r.length;n++){var i=r[n];i.isEdge()&&(t.push(i.source()[0]),t.push(i.target()[0]))}return this.spawn(t,!0).filter(e)},"connectedNodes"),parallelEdges:Sl(Axe(),"parallelEdges"),codirectedEdges:Sl(Axe({codirected:!0}),"codirectedEdges")});o(Axe,"defineParallelEdgesFunction");br(us,{components:o(function(t){var r=this,n=r.cy(),i=n.collection(),a=t==null?r.nodes():t.nodes(),s=[];t!=null&&a.empty()&&(a=t.sources());var l=o(function(d,f){i.merge(d),a.unmerge(d),f.merge(d)},"visitInComponent");if(a.empty())return r.spawn();var u=o(function(){var d=n.collection();s.push(d);var f=a[0];l(f,d),r.bfs({directed:!1,roots:f,visit:o(function(m){return l(m,d)},"visit")}),d.forEach(function(p){p.connectedEdges().forEach(function(m){r.has(m)&&d.has(m.source())&&d.has(m.target())&&d.merge(m)})})},"_loop");do u();while(a.length>0);return s},"components"),component:o(function(){var t=this[0];return t.cy().mutableElements().components(t)[0]},"component")});us.componentsOf=us.components;Ga=o(function(t,r){var n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!1,i=arguments.length>3&&arguments[3]!==void 0?arguments[3]:!1;if(t===void 0){pi("A collection must have a reference to the core");return}var a=new Nh,s=!1;if(!r)r=[];else if(r.length>0&&cn(r[0])&&!UT(r[0])){s=!0;for(var l=[],u=new W1,h=0,d=r.length;h<d;h++){var f=r[h];f.data==null&&(f.data={});var p=f.data;if(p.id==null)p.id=Cbe();else if(t.hasElementWithId(p.id)||u.has(p.id))continue;var m=new dA(t,f,!1);l.push(m),u.add(p.id)}r=l}this.length=0;for(var g=0,y=r.length;g<y;g++){var v=r[g][0];if(v!=null){var x=v._private.data.id;(!n||!a.has(x))&&(n&&a.set(x,{index:this.length,ele:v}),this[this.length]=v,this.length++)}}this._private={eles:this,cy:t,get map(){return this.lazyMap==null&&this.rebuildMap(),this.lazyMap},set map(b){this.lazyMap=b},rebuildMap:o(function(){for(var T=this.lazyMap=new Nh,k=this.eles,C=0;C<k.length;C++){var w=k[C];T.set(w.id(),{index:C,ele:w})}},"rebuildMap")},n&&(this._private.map=a),s&&!i&&this.restore()},"Collection"),Zn=dA.prototype=Ga.prototype=Object.create(Array.prototype);Zn.instanceString=function(){return"collection"};Zn.spawn=function(e,t){return new Ga(this.cy(),e,t)};Zn.spawnSelf=function(){return this.spawn(this)};Zn.cy=function(){return this._private.cy};Zn.renderer=function(){return this._private.cy.renderer()};Zn.element=function(){return this[0]};Zn.collection=function(){return lbe(this)?this:new Ga(this._private.cy,[this])};Zn.unique=function(){return new Ga(this._private.cy,this,!0)};Zn.hasElementWithId=function(e){return e=""+e,this._private.map.has(e)};Zn.getElementById=function(e){e=""+e;var t=this._private.cy,r=this._private.map.get(e);return r?r.ele:new Ga(t)};Zn.$id=Zn.getElementById;Zn.poolIndex=function(){var e=this._private.cy,t=e._private.elements,r=this[0]._private.data.id;return t._private.map.get(r).index};Zn.indexOf=function(e){var t=e[0]._private.data.id;return this._private.map.get(t).index};Zn.indexOfId=function(e){return e=""+e,this._private.map.get(e).index};Zn.json=function(e){var t=this.element(),r=this.cy();if(t==null&&e)return this;if(t!=null){var n=t._private;if(cn(e)){if(r.startBatch(),e.data){t.data(e.data);var i=n.data;if(t.isEdge()){var a=!1,s={},l=e.data.source,u=e.data.target;l!=null&&l!=i.source&&(s.source=""+l,a=!0),u!=null&&u!=i.target&&(s.target=""+u,a=!0),a&&(t=t.move(s))}else{var h="parent"in e.data,d=e.data.parent;h&&(d!=null||i.parent!=null)&&d!=i.parent&&(d===void 0&&(d=null),d!=null&&(d=""+d),t=t.move({parent:d}))}}e.position&&t.position(e.position);var f=o(function(y,v,x){var b=e[y];b!=null&&b!==n[y]&&(b?t[v]():t[x]())},"checkSwitch");return f("removed","remove","restore"),f("selected","select","unselect"),f("selectable","selectify","unselectify"),f("locked","lock","unlock"),f("grabbable","grabify","ungrabify"),f("pannable","panify","unpanify"),e.classes!=null&&t.classes(e.classes),r.endBatch(),this}else if(e===void 0){var p={data:Tu(n.data),position:Tu(n.position),group:n.group,removed:n.removed,selected:n.selected,selectable:n.selectable,locked:n.locked,grabbable:n.grabbable,pannable:n.pannable,classes:null};p.classes="";var m=0;return n.classes.forEach(function(g){return p.classes+=m++===0?g:" "+g}),p}}};Zn.jsons=function(){for(var e=[],t=0;t<this.length;t++){var r=this[t],n=r.json();e.push(n)}return e};Zn.clone=function(){for(var e=this.cy(),t=[],r=0;r<this.length;r++){var n=this[r],i=n.json(),a=new dA(e,i,!1);t.push(a)}return new Ga(e,t)};Zn.copy=Zn.clone;Zn.restore=function(){for(var e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:!0,t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!0,r=this,n=r.cy(),i=n._private,a=[],s=[],l,u=0,h=r.length;u<h;u++){var d=r[u];t&&!d.removed()||(d.isNode()?a.push(d):s.push(d))}l=a.concat(s);var f,p=o(function(){l.splice(f,1),f--},"removeFromElements");for(f=0;f<l.length;f++){var m=l[f],g=m._private,y=g.data;if(m.clearTraversalCache(),!(!t&&!g.removed)){if(y.id===void 0)y.id=Cbe();else if(Gt(y.id))y.id=""+y.id;else if(Gf(y.id)||!fr(y.id)){pi("Can not create element with invalid string ID `"+y.id+"`"),p();continue}else if(n.hasElementWithId(y.id)){pi("Can not create second element with ID `"+y.id+"`"),p();continue}}var v=y.id;if(m.isNode()){var x=g.position;x.x==null&&(x.x=0),x.y==null&&(x.y=0)}if(m.isEdge()){for(var b=m,T=["source","target"],k=T.length,C=!1,w=0;w<k;w++){var S=T[w],R=y[S];Gt(R)&&(R=y[S]=""+y[S]),R==null||R===""?(pi("Can not create edge `"+v+"` with unspecified "+S),C=!0):n.hasElementWithId(R)||(pi("Can not create edge `"+v+"` with nonexistent "+S+" `"+R+"`"),C=!0)}if(C){p();continue}var L=n.getElementById(y.source),N=n.getElementById(y.target);L.same(N)?L._private.edges.push(b):(L._private.edges.push(b),N._private.edges.push(b)),b._private.source=L,b._private.target=N}g.map=new Nh,g.map.set(v,{ele:m,index:0}),g.removed=!1,t&&n.addToPool(m)}for(var I=0;I<a.length;I++){var _=a[I],A=_._private.data;Gt(A.parent)&&(A.parent=""+A.parent);var M=A.parent,D=M!=null;if(D||_._private.parent){var P=_._private.parent?n.collection().merge(_._private.parent):n.getElementById(M);if(P.empty())A.parent=void 0;else if(P[0].removed())In("Node added with missing parent, reference to parent removed"),A.parent=void 0,_._private.parent=null;else{for(var B=!1,O=P;!O.empty();){if(_.same(O)){B=!0,A.parent=void 0;break}O=O.parent()}B||(P[0]._private.children.push(_),_._private.parent=P[0],i.hasCompoundNodes=!0)}}}if(l.length>0){for(var $=l.length===r.length?r:new Ga(n,l),V=0;V<$.length;V++){var G=$[V];G.isNode()||(G.parallelEdges().clearTraversalCache(),G.source().clearTraversalCache(),G.target().clearTraversalCache())}var z;i.hasCompoundNodes?z=n.collection().merge($).merge($.connectedNodes()).merge($.parent()):z=$,z.dirtyCompoundBoundsCache().dirtyBoundingBoxCache().updateStyle(e),e?$.emitAndNotify("add"):t&&$.emit("add")}return r};Zn.removed=function(){var e=this[0];return e&&e._private.removed};Zn.inside=function(){var e=this[0];return e&&!e._private.removed};Zn.remove=function(){var e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:!0,t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!0,r=this,n=[],i={},a=r._private.cy;function s(M){for(var D=M._private.edges,P=0;P<D.length;P++)u(D[P])}o(s,"addConnectedEdges");function l(M){for(var D=M._private.children,P=0;P<D.length;P++)u(D[P])}o(l,"addChildren");function u(M){var D=i[M.id()];t&&M.removed()||D||(i[M.id()]=!0,M.isNode()?(n.push(M),s(M),l(M)):n.unshift(M))}o(u,"add");for(var h=0,d=r.length;h<d;h++){var f=r[h];u(f)}function p(M,D){var P=M._private.edges;Vf(P,D),M.clearTraversalCache()}o(p,"removeEdgeRef");function m(M){M.clearTraversalCache()}o(m,"removeParallelRef");var g=[];g.ids={};function y(M,D){D=D[0],M=M[0];var P=M._private.children,B=M.id();Vf(P,D),D._private.parent=null,g.ids[B]||(g.ids[B]=!0,g.push(M))}o(y,"removeChildRef"),r.dirtyCompoundBoundsCache(),t&&a.removeFromPool(n);for(var v=0;v<n.length;v++){var x=n[v];if(x.isEdge()){var b=x.source()[0],T=x.target()[0];p(b,x),p(T,x);for(var k=x.parallelEdges(),C=0;C<k.length;C++){var w=k[C];m(w),w.isBundledBezier()&&w.dirtyBoundingBoxCache()}}else{var S=x.parent();S.length!==0&&y(S,x)}t&&(x._private.removed=!0)}var R=a._private.elements;a._private.hasCompoundNodes=!1;for(var L=0;L<R.length;L++){var N=R[L];if(N.isParent()){a._private.hasCompoundNodes=!0;break}}var I=new Ga(this.cy(),n);I.size()>0&&(e?I.emitAndNotify("remove"):t&&I.emit("remove"));for(var _=0;_<g.length;_++){var A=g[_];(!t||!A.removed())&&A.updateStyle()}return I};Zn.move=function(e){var t=this._private.cy,r=this,n=!1,i=!1,a=o(function(g){return g==null?g:""+g},"toString");if(e.source!==void 0||e.target!==void 0){var s=a(e.source),l=a(e.target),u=s!=null&&t.hasElementWithId(s),h=l!=null&&t.hasElementWithId(l);(u||h)&&(t.batch(function(){r.remove(n,i),r.emitAndNotify("moveout");for(var m=0;m<r.length;m++){var g=r[m],y=g._private.data;g.isEdge()&&(u&&(y.source=s),h&&(y.target=l))}r.restore(n,i)}),r.emitAndNotify("move"))}else if(e.parent!==void 0){var d=a(e.parent),f=d===null||t.hasElementWithId(d);if(f){var p=d===null?void 0:d;t.batch(function(){var m=r.remove(n,i);m.emitAndNotify("moveout");for(var g=0;g<r.length;g++){var y=r[g],v=y._private.data;y.isNode()&&(v.parent=p)}m.restore(n,i)}),r.emitAndNotify("move")}}return this};[Nbe,Fft,V5,Ff,V1,tpt,xA,ypt,a2e,s2e,Cpt,nA,W5,za,zf,us].forEach(function(e){br(Zn,e)});_pt={add:o(function(t){var r,n=this;if(Ho(t)){var i=t;if(i._private.cy===n)r=i.restore();else{for(var a=[],s=0;s<i.length;s++){var l=i[s];a.push(l.json())}r=new Ga(n,a)}}else if(Hn(t)){var u=t;r=new Ga(n,u)}else if(cn(t)&&(Hn(t.nodes)||Hn(t.edges))){for(var h=t,d=[],f=["nodes","edges"],p=0,m=f.length;p<m;p++){var g=f[p],y=h[g];if(Hn(y))for(var v=0,x=y.length;v<x;v++){var b=br({group:g},y[v]);d.push(b)}}r=new Ga(n,d)}else{var T=t;r=new dA(n,T).collection()}return r},"add"),remove:o(function(t){if(!Ho(t)){if(fr(t)){var r=t;t=this.$(r)}}return t.remove()},"remove")};o(Lpt,"generateCubicBezier");Dpt=(function(){function e(n){return-n.tension*n.x-n.friction*n.v}o(e,"springAccelerationForState");function t(n,i,a){var s={x:n.x+a.dx*i,v:n.v+a.dv*i,tension:n.tension,friction:n.friction};return{dx:s.v,dv:e(s)}}o(t,"springEvaluateStateWithDerivative");function r(n,i){var a={dx:n.v,dv:e(n)},s=t(n,i*.5,a),l=t(n,i*.5,s),u=t(n,i,l),h=1/6*(a.dx+2*(s.dx+l.dx)+u.dx),d=1/6*(a.dv+2*(s.dv+l.dv)+u.dv);return n.x=n.x+h*i,n.v=n.v+d*i,n}return o(r,"springIntegrateState"),o(function n(i,a,s){var l={x:-1,v:0,tension:null,friction:null},u=[0],h=0,d=1/1e4,f=16/1e3,p,m,g;for(i=parseFloat(i)||500,a=parseFloat(a)||20,s=s||null,l.tension=i,l.friction=a,p=s!==null,p?(h=n(i,a),m=h/s*f):m=f;g=r(g||l,m),u.push(1+g.x),h+=16,Math.abs(g.x)>d&&Math.abs(g.v)>d;);return p?function(y){return u[y*(u.length-1)|0]}:h},"springRK4Factory")})(),Kn=o(function(t,r,n,i){var a=Lpt(t,r,n,i);return function(s,l,u){return s+(l-s)*a(u)}},"cubicBezier"),q5={linear:o(function(t,r,n){return t+(r-t)*n},"linear"),ease:Kn(.25,.1,.25,1),"ease-in":Kn(.42,0,1,1),"ease-out":Kn(0,0,.58,1),"ease-in-out":Kn(.42,0,.58,1),"ease-in-sine":Kn(.47,0,.745,.715),"ease-out-sine":Kn(.39,.575,.565,1),"ease-in-out-sine":Kn(.445,.05,.55,.95),"ease-in-quad":Kn(.55,.085,.68,.53),"ease-out-quad":Kn(.25,.46,.45,.94),"ease-in-out-quad":Kn(.455,.03,.515,.955),"ease-in-cubic":Kn(.55,.055,.675,.19),"ease-out-cubic":Kn(.215,.61,.355,1),"ease-in-out-cubic":Kn(.645,.045,.355,1),"ease-in-quart":Kn(.895,.03,.685,.22),"ease-out-quart":Kn(.165,.84,.44,1),"ease-in-out-quart":Kn(.77,0,.175,1),"ease-in-quint":Kn(.755,.05,.855,.06),"ease-out-quint":Kn(.23,1,.32,1),"ease-in-out-quint":Kn(.86,0,.07,1),"ease-in-expo":Kn(.95,.05,.795,.035),"ease-out-expo":Kn(.19,1,.22,1),"ease-in-out-expo":Kn(1,0,0,1),"ease-in-circ":Kn(.6,.04,.98,.335),"ease-out-circ":Kn(.075,.82,.165,1),"ease-in-out-circ":Kn(.785,.135,.15,.86),spring:o(function(t,r,n){if(n===0)return q5.linear;var i=Dpt(t,r,n);return function(a,s,l){return a+(s-a)*i(l)}},"spring"),"cubic-bezier":Kn};o(Rxe,"getEasedValue");o(_xe,"getValue");o(A1,"ease");o(Ipt,"step$1");o(ST,"valid");o(Mpt,"startAnimation");o(Lxe,"stepAll");Npt={animate:Dn.animate(),animation:Dn.animation(),animated:Dn.animated(),clearQueue:Dn.clearQueue(),delay:Dn.delay(),delayAnimation:Dn.delayAnimation(),stop:Dn.stop(),addToAnimationPool:o(function(t){var r=this;r.styleEnabled()&&r._private.aniEles.merge(t)},"addToAnimationPool"),stopAnimationLoop:o(function(){this._private.animationsRunning=!1},"stopAnimationLoop"),startAnimationLoop:o(function(){var t=this;if(t._private.animationsRunning=!0,!t.styleEnabled())return;function r(){t._private.animationsRunning&&Q5(o(function(a){Lxe(a,t),r()},"animationStep"))}o(r,"headlessStep");var n=t.renderer();n&&n.beforeRender?n.beforeRender(o(function(a,s){Lxe(s,t)},"rendererAnimationStep"),n.beforeRenderPriorities.animations):r()},"startAnimationLoop")},Ppt={qualifierCompare:o(function(t,r){return t==null||r==null?t==null&&r==null:t.sameText(r)},"qualifierCompare"),eventMatches:o(function(t,r,n){var i=r.qualifier;return i!=null?t!==n.target&&UT(n.target)&&i.matches(n.target):!0},"eventMatches"),addEventFields:o(function(t,r){r.cy=t,r.target=t},"addEventFields"),callbackContext:o(function(t,r,n){return r.qualifier!=null?n.target:t},"callbackContext")},P5=o(function(t){return fr(t)?new qf(t):t},"argSelector"),c2e={createEmitter:o(function(){var t=this._private;return t.emitter||(t.emitter=new bA(Ppt,this)),this},"createEmitter"),emitter:o(function(){return this._private.emitter},"emitter"),on:o(function(t,r,n){return this.emitter().on(t,P5(r),n),this},"on"),removeListener:o(function(t,r,n){return this.emitter().removeListener(t,P5(r),n),this},"removeListener"),removeAllListeners:o(function(){return this.emitter().removeAllListeners(),this},"removeAllListeners"),one:o(function(t,r,n){return this.emitter().one(t,P5(r),n),this},"one"),once:o(function(t,r,n){return this.emitter().one(t,P5(r),n),this},"once"),emit:o(function(t,r){return this.emitter().emit(t,r),this},"emit"),emitAndNotify:o(function(t,r){return this.emit(t),this.notify(t,r),this},"emitAndNotify")};Dn.eventAliasesOn(c2e);aF={png:o(function(t){var r=this._private.renderer;return t=t||{},r.png(t)},"png"),jpg:o(function(t){var r=this._private.renderer;return t=t||{},t.bg=t.bg||"#fff",r.jpg(t)},"jpg")};aF.jpeg=aF.jpg;H5={layout:o(function(t){var r=this;if(t==null){pi("Layout options must be specified to make a layout");return}if(t.name==null){pi("A `name` must be specified to make a layout");return}var n=t.name,i=r.extension("layout",n);if(i==null){pi("No such layout `"+n+"` found.  Did you forget to import it and `cytoscape.use()` it?");return}var a;fr(t.eles)?a=r.$(t.eles):a=t.eles!=null?t.eles:r.$();var s=new i(br({},t,{cy:r,eles:a}));return s},"layout")};H5.createLayout=H5.makeLayout=H5.layout;Opt={notify:o(function(t,r){var n=this._private;if(this.batching()){n.batchNotifications=n.batchNotifications||{};var i=n.batchNotifications[t]=n.batchNotifications[t]||this.collection();r!=null&&i.merge(r);return}if(n.notificationsEnabled){var a=this.renderer();this.destroyed()||!a||a.notify(t,r)}},"notify"),notifications:o(function(t){var r=this._private;return t===void 0?r.notificationsEnabled:(r.notificationsEnabled=!!t,this)},"notifications"),noNotifications:o(function(t){this.notifications(!1),t(),this.notifications(!0)},"noNotifications"),batching:o(function(){return this._private.batchCount>0},"batching"),startBatch:o(function(){var t=this._private;return t.batchCount==null&&(t.batchCount=0),t.batchCount===0&&(t.batchStyleEles=this.collection(),t.batchNotifications={}),t.batchCount++,this},"startBatch"),endBatch:o(function(){var t=this._private;if(t.batchCount===0)return this;if(t.batchCount--,t.batchCount===0){t.batchStyleEles.updateStyle();var r=this.renderer();Object.keys(t.batchNotifications).forEach(function(n){var i=t.batchNotifications[n];i.empty()?r.notify(n):r.notify(n,i)})}return this},"endBatch"),batch:o(function(t){return this.startBatch(),t(),this.endBatch(),this},"batch"),batchData:o(function(t){var r=this;return this.batch(function(){for(var n=Object.keys(t),i=0;i<n.length;i++){var a=n[i],s=t[a],l=r.getElementById(a);l.data(s)}})},"batchData")},Bpt=Va({hideEdgesOnViewport:!1,textureOnViewport:!1,motionBlur:!1,motionBlurOpacity:.05,pixelRatio:void 0,desktopTapThreshold:4,touchTapThreshold:8,wheelSensitivity:1,debug:!1,showFps:!1,webgl:!1,webglDebug:!1,webglDebugShowAtlases:!1,webglTexSize:2048,webglTexRows:36,webglTexRowsNodes:18,webglBatchSize:2048,webglTexPerBatch:14,webglBgColor:[255,255,255]}),sF={renderTo:o(function(t,r,n,i){var a=this._private.renderer;return a.renderTo(t,r,n,i),this},"renderTo"),renderer:o(function(){return this._private.renderer},"renderer"),forceRender:o(function(){return this.notify("draw"),this},"forceRender"),resize:o(function(){return this.invalidateSize(),this.emitAndNotify("resize"),this},"resize"),initRenderer:o(function(t){var r=this,n=r.extension("renderer",t.name);if(n==null){pi("Can not initialise: No such renderer `".concat(t.name,"` found. Did you forget to import it and `cytoscape.use()` it?"));return}t.wheelSensitivity!==void 0&&In("You have set a custom wheel sensitivity.  This will make your app zoom unnaturally when using mainstream mice.  You should change this value from the default only if you can guarantee that all your users will use the same hardware and OS configuration as your current machine.");var i=Bpt(t);i.cy=r,r._private.renderer=new n(i),this.notify("init")},"initRenderer"),destroyRenderer:o(function(){var t=this;t.notify("destroy");var r=t.container();if(r)for(r._cyreg=null;r.childNodes.length>0;)r.removeChild(r.childNodes[0]);t._private.renderer=null,t.mutableElements().forEach(function(n){var i=n._private;i.rscratch={},i.rstyle={},i.animation.current=[],i.animation.queue=[]})},"destroyRenderer"),onRender:o(function(t){return this.on("render",t)},"onRender"),offRender:o(function(t){return this.off("render",t)},"offRender")};sF.invalidateDimensions=sF.resize;U5={collection:o(function(t,r){return fr(t)?this.$(t):Ho(t)?t.collection():Hn(t)?(r||(r={}),new Ga(this,t,r.unique,r.removed)):new Ga(this)},"collection"),nodes:o(function(t){var r=this.$(function(n){return n.isNode()});return t?r.filter(t):r},"nodes"),edges:o(function(t){var r=this.$(function(n){return n.isEdge()});return t?r.filter(t):r},"edges"),$:o(function(t){var r=this._private.elements;return t?r.filter(t):r.spawnSelf()},"$"),mutableElements:o(function(){return this._private.elements},"mutableElements")};U5.elements=U5.filter=U5.$;_a={},IT="t",$pt="f";_a.apply=function(e){for(var t=this,r=t._private,n=r.cy,i=n.collection(),a=0;a<e.length;a++){var s=e[a],l=t.getContextMeta(s);if(!l.empty){var u=t.getContextStyle(l),h=t.applyContextStyle(l,u,s);s._private.appliedInitStyle?t.updateTransitions(s,h.diffProps):s._private.appliedInitStyle=!0;var d=t.updateStyleHints(s);d&&i.push(s)}}return i};_a.getPropertiesDiff=function(e,t){var r=this,n=r._private.propDiffs=r._private.propDiffs||{},i=e+"-"+t,a=n[i];if(a)return a;for(var s=[],l={},u=0;u<r.length;u++){var h=r[u],d=e[u]===IT,f=t[u]===IT,p=d!==f,m=h.mappedProperties.length>0;if(p||f&&m){var g=void 0;p&&m||p?g=h.properties:m&&(g=h.mappedProperties);for(var y=0;y<g.length;y++){for(var v=g[y],x=v.name,b=!1,T=u+1;T<r.length;T++){var k=r[T],C=t[T]===IT;if(C&&(b=k.properties[v.name]!=null,b))break}!l[x]&&!b&&(l[x]=!0,s.push(x))}}}return n[i]=s,s};_a.getContextMeta=function(e){for(var t=this,r="",n,i=e._private.styleCxtKey||"",a=0;a<t.length;a++){var s=t[a],l=s.selector&&s.selector.matches(e);l?r+=IT:r+=$pt}return n=t.getPropertiesDiff(i,r),e._private.styleCxtKey=r,{key:r,diffPropNames:n,empty:n.length===0}};_a.getContextStyle=function(e){var t=e.key,r=this,n=this._private.contextStyles=this._private.contextStyles||{};if(n[t])return n[t];for(var i={_private:{key:t}},a=0;a<r.length;a++){var s=r[a],l=t[a]===IT;if(l)for(var u=0;u<s.properties.length;u++){var h=s.properties[u];i[h.name]=h}}return n[t]=i,i};_a.applyContextStyle=function(e,t,r){for(var n=this,i=e.diffPropNames,a={},s=n.types,l=0;l<i.length;l++){var u=i[l],h=t[u],d=r.pstyle(u);if(!h)if(d)d.bypass?h={name:u,deleteBypassed:!0}:h={name:u,delete:!0};else continue;if(d!==h){if(h.mapped===s.fn&&d!=null&&d.mapping!=null&&d.mapping.value===h.value){var f=d.mapping,p=f.fnValue=h.value(r);if(p===f.prevFnValue)continue}var m=a[u]={prev:d};n.applyParsedProperty(r,h),m.next=r.pstyle(u),m.next&&m.next.bypass&&(m.next=m.next.bypassed)}}return{diffProps:a}};_a.updateStyleHints=function(e){var t=e._private,r=this,n=r.propertyGroupNames,i=r.propertyGroupKeys,a=o(function(ae,Re,be){return r.getPropertiesHash(ae,Re,be)},"propHash"),s=t.styleKey;if(e.removed())return!1;var l=t.group==="nodes",u=e._private.style;n=Object.keys(u);for(var h=0;h<i.length;h++){var d=i[h];t.styleKeys[d]=[Jm,I1]}for(var f=o(function(ae,Re){return t.styleKeys[Re][0]=PT(ae,t.styleKeys[Re][0])},"updateGrKey1"),p=o(function(ae,Re){return t.styleKeys[Re][1]=OT(ae,t.styleKeys[Re][1])},"updateGrKey2"),m=o(function(ae,Re){f(ae,Re),p(ae,Re)},"updateGrKey"),g=o(function(ae,Re){for(var be=0;be<ae.length;be++){var Pe=ae.charCodeAt(be);f(Pe,Re),p(Pe,Re)}},"updateGrKeyWStr"),y=2e9,v=o(function(ae){return-128<ae&&ae<128&&Math.floor(ae)!==ae?y-(ae*1024|0):ae},"cleanNum"),x=0;x<n.length;x++){var b=n[x],T=u[b];if(T!=null){var k=this.properties[b],C=k.type,w=k.groupKey,S=void 0;k.hashOverride!=null?S=k.hashOverride(e,T):T.pfValue!=null&&(S=T.pfValue);var R=k.enums==null?T.value:null,L=S!=null,N=R!=null,I=L||N,_=T.units;if(C.number&&I&&!C.multiple){var A=L?S:R;m(v(A),w),!L&&_!=null&&g(_,w)}else g(T.strValue,w)}}for(var M=[Jm,I1],D=0;D<i.length;D++){var P=i[D],B=t.styleKeys[P];M[0]=PT(B[0],M[0]),M[1]=OT(B[1],M[1])}t.styleKey=eht(M[0],M[1]);var O=t.styleKeys;t.labelDimsKey=Mf(O.labelDimensions);var $=a(e,["label"],O.labelDimensions);if(t.labelKey=Mf($),t.labelStyleKey=Mf(A5(O.commonLabel,$)),!l){var V=a(e,["source-label"],O.labelDimensions);t.sourceLabelKey=Mf(V),t.sourceLabelStyleKey=Mf(A5(O.commonLabel,V));var G=a(e,["target-label"],O.labelDimensions);t.targetLabelKey=Mf(G),t.targetLabelStyleKey=Mf(A5(O.commonLabel,G))}if(l){var z=t.styleKeys,W=z.nodeBody,H=z.nodeBorder,j=z.nodeOutline,Q=z.backgroundImage,U=z.compound,oe=z.pie,te=z.stripe,le=[W,H,j,Q,U,oe,te].filter(function(ie){return ie!=null}).reduce(A5,[Jm,I1]);t.nodeKey=Mf(le),t.hasPie=oe!=null&&oe[0]!==Jm&&oe[1]!==I1,t.hasStripe=te!=null&&te[0]!==Jm&&te[1]!==I1}return s!==t.styleKey};_a.clearStyleHints=function(e){var t=e._private;t.styleCxtKey="",t.styleKeys={},t.styleKey=null,t.labelKey=null,t.labelStyleKey=null,t.sourceLabelKey=null,t.sourceLabelStyleKey=null,t.targetLabelKey=null,t.targetLabelStyleKey=null,t.nodeKey=null,t.hasPie=null,t.hasStripe=null};_a.applyParsedProperty=function(e,t){var r=this,n=t,i=e._private.style,a,s=r.types,l=r.properties[n.name].type,u=n.bypass,h=i[n.name],d=h&&h.bypass,f=e._private,p="mapping",m=o(function(W){return W==null?null:W.pfValue!=null?W.pfValue:W.value},"getVal"),g=o(function(){var W=m(h),H=m(n);r.checkTriggers(e,n.name,W,H)},"checkTriggers");if(t.name==="curve-style"&&e.isEdge()&&(t.value!=="bezier"&&e.isLoop()||t.value==="haystack"&&(e.source().isParent()||e.target().isParent()))&&(n=t=this.parse(t.name,"bezier",u)),n.delete)return i[n.name]=void 0,g(),!0;if(n.deleteBypassed)return h?h.bypass?(h.bypassed=void 0,g(),!0):!1:(g(),!0);if(n.deleteBypass)return h?h.bypass?(i[n.name]=h.bypassed,g(),!0):!1:(g(),!0);var y=o(function(){In("Do not assign mappings to elements without corresponding data (i.e. ele `"+e.id()+"` has no mapping for property `"+n.name+"` with data field `"+n.field+"`); try a `["+n.field+"]` selector to limit scope to elements with `"+n.field+"` defined")},"printMappingErr");switch(n.mapped){case s.mapData:{for(var v=n.field.split("."),x=f.data,b=0;b<v.length&&x;b++){var T=v[b];x=x[T]}if(x==null)return y(),!1;var k;if(Gt(x)){var C=n.fieldMax-n.fieldMin;C===0?k=0:k=(x-n.fieldMin)/C}else return In("Do not use continuous mappers without specifying numeric data (i.e. `"+n.field+": "+x+"` for `"+e.id()+"` is non-numeric)"),!1;if(k<0?k=0:k>1&&(k=1),l.color){var w=n.valueMin[0],S=n.valueMax[0],R=n.valueMin[1],L=n.valueMax[1],N=n.valueMin[2],I=n.valueMax[2],_=n.valueMin[3]==null?1:n.valueMin[3],A=n.valueMax[3]==null?1:n.valueMax[3],M=[Math.round(w+(S-w)*k),Math.round(R+(L-R)*k),Math.round(N+(I-N)*k),Math.round(_+(A-_)*k)];a={bypass:n.bypass,name:n.name,value:M,strValue:"rgb("+M[0]+", "+M[1]+", "+M[2]+")"}}else if(l.number){var D=n.valueMin+(n.valueMax-n.valueMin)*k;a=this.parse(n.name,D,n.bypass,p)}else return!1;if(!a)return y(),!1;a.mapping=n,n=a;break}case s.data:{for(var P=n.field.split("."),B=f.data,O=0;O<P.length&&B;O++){var $=P[O];B=B[$]}if(B!=null&&(a=this.parse(n.name,B,n.bypass,p)),!a)return y(),!1;a.mapping=n,n=a;break}case s.fn:{var V=n.value,G=n.fnValue!=null?n.fnValue:V(e);if(n.prevFnValue=G,G==null)return In("Custom function mappers may not return null (i.e. `"+n.name+"` for ele `"+e.id()+"` is null)"),!1;if(a=this.parse(n.name,G,n.bypass,p),!a)return In("Custom function mappers may not return invalid values for the property type (i.e. `"+n.name+"` for ele `"+e.id()+"` is invalid)"),!1;a.mapping=Tu(n),n=a;break}case void 0:break;default:return!1}return u?(d?n.bypassed=h.bypassed:n.bypassed=h,i[n.name]=n):d?h.bypassed=n:i[n.name]=n,g(),!0};_a.cleanElements=function(e,t){for(var r=0;r<e.length;r++){var n=e[r];if(this.clearStyleHints(n),n.dirtyCompoundBoundsCache(),n.dirtyBoundingBoxCache(),!t)n._private.style={};else for(var i=n._private.style,a=Object.keys(i),s=0;s<a.length;s++){var l=a[s],u=i[l];u!=null&&(u.bypass?u.bypassed=null:i[l]=null)}}};_a.update=function(){var e=this._private.cy,t=e.mutableElements();t.updateStyle()};_a.updateTransitions=function(e,t){var r=this,n=e._private,i=e.pstyle("transition-property").value,a=e.pstyle("transition-duration").pfValue,s=e.pstyle("transition-delay").pfValue;if(i.length>0&&a>0){for(var l={},u=!1,h=0;h<i.length;h++){var d=i[h],f=e.pstyle(d),p=t[d];if(p){var m=p.prev,g=m,y=p.next!=null?p.next:f,v=!1,x=void 0,b=1e-6;g&&(Gt(g.pfValue)&&Gt(y.pfValue)?(v=y.pfValue-g.pfValue,x=g.pfValue+b*v):Gt(g.value)&&Gt(y.value)?(v=y.value-g.value,x=g.value+b*v):Hn(g.value)&&Hn(y.value)&&(v=g.value[0]!==y.value[0]||g.value[1]!==y.value[1]||g.value[2]!==y.value[2],x=g.strValue),v&&(l[d]=y.strValue,this.applyBypass(e,d,x),u=!0))}}if(!u)return;n.transitioning=!0,new q1(function(T){s>0?e.delayAnimation(s).play().promise().then(T):T()}).then(function(){return e.animation({style:l,duration:a,easing:e.pstyle("transition-timing-function").value,queue:!1}).play().promise()}).then(function(){r.removeBypasses(e,i),e.emitAndNotify("style"),n.transitioning=!1})}else n.transitioning&&(this.removeBypasses(e,i),e.emitAndNotify("style"),n.transitioning=!1)};_a.checkTrigger=function(e,t,r,n,i,a){var s=this.properties[t],l=i(s);e.removed()||l!=null&&l(r,n,e)&&a(s)};_a.checkZOrderTrigger=function(e,t,r,n){var i=this;this.checkTrigger(e,t,r,n,function(a){return a.triggersZOrder},function(){i._private.cy.notify("zorder",e)})};_a.checkBoundsTrigger=function(e,t,r,n){this.checkTrigger(e,t,r,n,function(i){return i.triggersBounds},function(i){e.dirtyCompoundBoundsCache(),e.dirtyBoundingBoxCache()})};_a.checkConnectedEdgesBoundsTrigger=function(e,t,r,n){this.checkTrigger(e,t,r,n,function(i){return i.triggersBoundsOfConnectedEdges},function(i){e.connectedEdges().forEach(function(a){a.dirtyBoundingBoxCache()})})};_a.checkParallelEdgesBoundsTrigger=function(e,t,r,n){this.checkTrigger(e,t,r,n,function(i){return i.triggersBoundsOfParallelEdges},function(i){e.parallelEdges().forEach(function(a){a.dirtyBoundingBoxCache()})})};_a.checkTriggers=function(e,t,r,n){e.dirtyStyleCache(),this.checkZOrderTrigger(e,t,r,n),this.checkBoundsTrigger(e,t,r,n),this.checkConnectedEdgesBoundsTrigger(e,t,r,n),this.checkParallelEdgesBoundsTrigger(e,t,r,n)};JT={};JT.applyBypass=function(e,t,r,n){var i=this,a=[],s=!0;if(t==="*"||t==="**"){if(r!==void 0)for(var l=0;l<i.properties.length;l++){var u=i.properties[l],h=u.name,d=this.parse(h,r,!0);d&&a.push(d)}}else if(fr(t)){var f=this.parse(t,r,!0);f&&a.push(f)}else if(cn(t)){var p=t;n=r;for(var m=Object.keys(p),g=0;g<m.length;g++){var y=m[g],v=p[y];if(v===void 0&&(v=p[uA(y)]),v!==void 0){var x=this.parse(y,v,!0);x&&a.push(x)}}}else return!1;if(a.length===0)return!1;for(var b=!1,T=0;T<e.length;T++){for(var k=e[T],C={},w=void 0,S=0;S<a.length;S++){var R=a[S];if(n){var L=k.pstyle(R.name);w=C[R.name]={prev:L}}b=this.applyParsedProperty(k,Tu(R))||b,n&&(w.next=k.pstyle(R.name))}b&&this.updateStyleHints(k),n&&this.updateTransitions(k,C,s)}return b};JT.overrideBypass=function(e,t,r){t=vF(t);for(var n=0;n<e.length;n++){var i=e[n],a=i._private.style[t],s=this.properties[t].type,l=s.color,u=s.mutiple,h=a?a.pfValue!=null?a.pfValue:a.value:null;!a||!a.bypass?this.applyBypass(i,t,r):(a.value=r,a.pfValue!=null&&(a.pfValue=r),l?a.strValue="rgb("+r.join(",")+")":u?a.strValue=r.join(" "):a.strValue=""+r,this.updateStyleHints(i)),this.checkTriggers(i,t,h,r)}};JT.removeAllBypasses=function(e,t){return this.removeBypasses(e,this.propertyNames,t)};JT.removeBypasses=function(e,t,r){for(var n=!0,i=0;i<e.length;i++){for(var a=e[i],s={},l=0;l<t.length;l++){var u=t[l],h=this.properties[u],d=a.pstyle(h.name);if(!(!d||!d.bypass)){var f="",p=this.parse(u,f,!0),m=s[h.name]={prev:d};this.applyParsedProperty(a,p),m.next=a.pstyle(h.name)}}this.updateStyleHints(a),r&&this.updateTransitions(a,s,n)}};MF={};MF.getEmSizeInPixels=function(){var e=this.containerCss("font-size");return e!=null?parseFloat(e):1};MF.containerCss=function(e){var t=this._private.cy,r=t.container(),n=t.window();if(n&&r&&n.getComputedStyle)return n.getComputedStyle(r).getPropertyValue(e)};Cu={};Cu.getRenderedStyle=function(e,t){return t?this.getStylePropertyValue(e,t,!0):this.getRawStyle(e,!0)};Cu.getRawStyle=function(e,t){var r=this;if(e=e[0],e){for(var n={},i=0;i<r.properties.length;i++){var a=r.properties[i],s=r.getStylePropertyValue(e,a.name,t);s!=null&&(n[a.name]=s,n[uA(a.name)]=s)}return n}};Cu.getIndexedStyle=function(e,t,r,n){var i=e.pstyle(t)[r][n];return i??e.cy().style().getDefaultProperty(t)[r][0]};Cu.getStylePropertyValue=function(e,t,r){var n=this;if(e=e[0],e){var i=n.properties[t];i.alias&&(i=i.pointsTo);var a=i.type,s=e.pstyle(i.name);if(s){var l=s.value,u=s.units,h=s.strValue;if(r&&a.number&&l!=null&&Gt(l)){var d=e.cy().zoom(),f=o(function(v){return v*d},"getRenderedValue"),p=o(function(v,x){return f(v)+x},"getValueStringWithUnits"),m=Hn(l),g=m?u.every(function(y){return y!=null}):u!=null;return g?m?l.map(function(y,v){return p(y,u[v])}).join(" "):p(l,u):m?l.map(function(y){return fr(y)?y:""+f(y)}).join(" "):""+f(l)}else if(h!=null)return h}return null}};Cu.getAnimationStartStyle=function(e,t){for(var r={},n=0;n<t.length;n++){var i=t[n],a=i.name,s=e.pstyle(a);s!==void 0&&(cn(s)?s=this.parse(a,s.strValue):s=this.parse(a,s)),s&&(r[a]=s)}return r};Cu.getPropsList=function(e){var t=this,r=[],n=e,i=t.properties;if(n)for(var a=Object.keys(n),s=0;s<a.length;s++){var l=a[s],u=n[l],h=i[l]||i[vF(l)],d=this.parse(h.name,u);d&&r.push(d)}return r};Cu.getNonDefaultPropertiesHash=function(e,t,r){var n=r.slice(),i,a,s,l,u,h;for(u=0;u<t.length;u++)if(i=t[u],a=e.pstyle(i,!1),a!=null)if(a.pfValue!=null)n[0]=PT(l,n[0]),n[1]=OT(l,n[1]);else for(s=a.strValue,h=0;h<s.length;h++)l=s.charCodeAt(h),n[0]=PT(l,n[0]),n[1]=OT(l,n[1]);return n};Cu.getPropertiesHash=Cu.getNonDefaultPropertiesHash;wA={};wA.appendFromJson=function(e){for(var t=this,r=0;r<e.length;r++){var n=e[r],i=n.selector,a=n.style||n.css,s=Object.keys(a);t.selector(i);for(var l=0;l<s.length;l++){var u=s[l],h=a[u];t.css(u,h)}}return t};wA.fromJson=function(e){var t=this;return t.resetToDefault(),t.appendFromJson(e),t};wA.json=function(){for(var e=[],t=this.defaultLength;t<this.length;t++){for(var r=this[t],n=r.selector,i=r.properties,a={},s=0;s<i.length;s++){var l=i[s];a[l.name]=l.strValue}e.push({selector:n?n.toString():"core",style:a})}return e};NF={};NF.appendFromString=function(e){var t=this,r=this,n=""+e,i,a,s;n=n.replace(/[/][*](\s|.)+?[*][/]/g,"");function l(){n.length>i.length?n=n.substr(i.length):n=""}o(l,"removeSelAndBlockFromRemaining");function u(){a.length>s.length?a=a.substr(s.length):a=""}for(o(u,"removePropAndValFromRem");;){var h=n.match(/^\s*$/);if(h)break;var d=n.match(/^\s*((?:.|\s)+?)\s*\{((?:.|\s)+?)\}/);if(!d){In("Halting stylesheet parsing: String stylesheet contains more to parse but no selector and block found in: "+n);break}i=d[0];var f=d[1];if(f!=="core"){var p=new qf(f);if(p.invalid){In("Skipping parsing of block: Invalid selector found in string stylesheet: "+f),l();continue}}var m=d[2],g=!1;a=m;for(var y=[];;){var v=a.match(/^\s*$/);if(v)break;var x=a.match(/^\s*(.+?)\s*:\s*(.+?)(?:\s*;|\s*$)/);if(!x){In("Skipping parsing of block: Invalid formatting of style property and value definitions found in:"+m),g=!0;break}s=x[0];var b=x[1],T=x[2],k=t.properties[b];if(!k){In("Skipping property: Invalid property name in: "+s),u();continue}var C=r.parse(b,T);if(!C){In("Skipping property: Invalid property definition in: "+s),u();continue}y.push({name:b,val:T}),u()}if(g){l();break}r.selector(f);for(var w=0;w<y.length;w++){var S=y[w];r.css(S.name,S.val)}l()}return r};NF.fromString=function(e){var t=this;return t.resetToDefault(),t.appendFromString(e),t};Xi={};(function(){var e=la,t=Iut,r=Nut,n=Put,i=Out,a=o(function(ie){return"^"+ie+"\\s*\\(\\s*([\\w\\.]+)\\s*\\)$"},"data"),s=o(function(ie){var ae=e+"|\\w+|"+t+"|"+r+"|"+n+"|"+i;return"^"+ie+"\\s*\\(([\\w\\.]+)\\s*\\,\\s*("+e+")\\s*\\,\\s*("+e+")\\s*,\\s*("+ae+")\\s*\\,\\s*("+ae+")\\)$"},"mapData"),l=[`^url\\s*\\(\\s*['"]?(.+?)['"]?\\s*\\)$`,"^(none)$","^(.+)$"];Xi.types={time:{number:!0,min:0,units:"s|ms",implicitUnits:"ms"},percent:{number:!0,min:0,max:100,units:"%",implicitUnits:"%"},percentages:{number:!0,min:0,max:100,units:"%",implicitUnits:"%",multiple:!0},zeroOneNumber:{number:!0,min:0,max:1,unitless:!0},zeroOneNumbers:{number:!0,min:0,max:1,unitless:!0,multiple:!0},nOneOneNumber:{number:!0,min:-1,max:1,unitless:!0},nonNegativeInt:{number:!0,min:0,integer:!0,unitless:!0},nonNegativeNumber:{number:!0,min:0,unitless:!0},position:{enums:["parent","origin"]},nodeSize:{number:!0,min:0,enums:["label"]},number:{number:!0,unitless:!0},numbers:{number:!0,unitless:!0,multiple:!0},positiveNumber:{number:!0,unitless:!0,min:0,strictMin:!0},size:{number:!0,min:0},bidirectionalSize:{number:!0},bidirectionalSizeMaybePercent:{number:!0,allowPercent:!0},bidirectionalSizes:{number:!0,multiple:!0},sizeMaybePercent:{number:!0,min:0,allowPercent:!0},axisDirection:{enums:["horizontal","leftward","rightward","vertical","upward","downward","auto"]},axisDirectionExplicit:{enums:["leftward","rightward","upward","downward"]},axisDirectionPrimary:{enums:["horizontal","vertical"]},paddingRelativeTo:{enums:["width","height","average","min","max"]},bgWH:{number:!0,min:0,allowPercent:!0,enums:["auto"],multiple:!0},bgPos:{number:!0,allowPercent:!0,multiple:!0},bgRelativeTo:{enums:["inner","include-padding"],multiple:!0},bgRepeat:{enums:["repeat","repeat-x","repeat-y","no-repeat"],multiple:!0},bgFit:{enums:["none","contain","cover"],multiple:!0},bgCrossOrigin:{enums:["anonymous","use-credentials","null"],multiple:!0},bgClip:{enums:["none","node"],multiple:!0},bgContainment:{enums:["inside","over"],multiple:!0},boxSelection:{enums:["contain","overlap","none"]},color:{color:!0},colors:{color:!0,multiple:!0},fill:{enums:["solid","linear-gradient","radial-gradient"]},bool:{enums:["yes","no"]},bools:{enums:["yes","no"],multiple:!0},lineStyle:{enums:["solid","dotted","dashed"]},lineCap:{enums:["butt","round","square"]},linePosition:{enums:["center","inside","outside"]},lineJoin:{enums:["round","bevel","miter"]},borderStyle:{enums:["solid","dotted","dashed","double"]},curveStyle:{enums:["bezier","unbundled-bezier","haystack","segments","straight","straight-triangle","taxi","round-segments","round-taxi"]},radiusType:{enums:["arc-radius","influence-radius"],multiple:!0},fontFamily:{regex:'^([\\w- \\"]+(?:\\s*,\\s*[\\w- \\"]+)*)$'},fontStyle:{enums:["italic","normal","oblique"]},fontWeight:{enums:["normal","bold","bolder","lighter","100","200","300","400","500","600","800","900",100,200,300,400,500,600,700,800,900]},textDecoration:{enums:["none","underline","overline","line-through"]},textTransform:{enums:["none","uppercase","lowercase"]},textWrap:{enums:["none","wrap","ellipsis"]},textOverflowWrap:{enums:["whitespace","anywhere"]},textBackgroundShape:{enums:["rectangle","roundrectangle","round-rectangle","circle"]},nodeShape:{enums:["rectangle","roundrectangle","round-rectangle","cutrectangle","cut-rectangle","bottomroundrectangle","bottom-round-rectangle","barrel","ellipse","triangle","round-triangle","square","pentagon","round-pentagon","hexagon","round-hexagon","concavehexagon","concave-hexagon","heptagon","round-heptagon","octagon","round-octagon","tag","round-tag","star","diamond","round-diamond","vee","rhomboid","right-rhomboid","polygon"]},overlayShape:{enums:["roundrectangle","round-rectangle","ellipse"]},cornerRadius:{number:!0,min:0,units:"px|em",implicitUnits:"px",enums:["auto"]},compoundIncludeLabels:{enums:["include","exclude"]},arrowShape:{enums:["tee","triangle","triangle-tee","circle-triangle","triangle-cross","triangle-backcurve","vee","square","circle","diamond","chevron","none"]},arrowFill:{enums:["filled","hollow"]},arrowWidth:{number:!0,units:"%|px|em",implicitUnits:"px",enums:["match-line"]},display:{enums:["element","none"]},visibility:{enums:["hidden","visible"]},zCompoundDepth:{enums:["bottom","orphan","auto","top"]},zIndexCompare:{enums:["auto","manual"]},valign:{enums:["top","center","bottom"]},halign:{enums:["left","center","right"]},justification:{enums:["left","center","right","auto"]},text:{string:!0},data:{mapping:!0,regex:a("data")},layoutData:{mapping:!0,regex:a("layoutData")},scratch:{mapping:!0,regex:a("scratch")},mapData:{mapping:!0,regex:s("mapData")},mapLayoutData:{mapping:!0,regex:s("mapLayoutData")},mapScratch:{mapping:!0,regex:s("mapScratch")},fn:{mapping:!0,fn:!0},url:{regexes:l,singleRegexMatchValue:!0},urls:{regexes:l,singleRegexMatchValue:!0,multiple:!0},propList:{propList:!0},angle:{number:!0,units:"deg|rad",implicitUnits:"rad"},textRotation:{number:!0,units:"deg|rad",implicitUnits:"rad",enums:["none","autorotate"]},polygonPointList:{number:!0,multiple:!0,evenMultiple:!0,min:-1,max:1,unitless:!0},edgeDistances:{enums:["intersection","node-position","endpoints"]},edgeEndpoint:{number:!0,multiple:!0,units:"%|px|em|deg|rad",implicitUnits:"px",enums:["inside-to-node","outside-to-node","outside-to-node-or-label","outside-to-line","outside-to-line-or-label"],singleEnum:!0,validate:o(function(ie,ae){switch(ie.length){case 2:return ae[0]!=="deg"&&ae[0]!=="rad"&&ae[1]!=="deg"&&ae[1]!=="rad";case 1:return fr(ie[0])||ae[0]==="deg"||ae[0]==="rad";default:return!1}},"validate")},easing:{regexes:["^(spring)\\s*\\(\\s*("+e+")\\s*,\\s*("+e+")\\s*\\)$","^(cubic-bezier)\\s*\\(\\s*("+e+")\\s*,\\s*("+e+")\\s*,\\s*("+e+")\\s*,\\s*("+e+")\\s*\\)$"],enums:["linear","ease","ease-in","ease-out","ease-in-out","ease-in-sine","ease-out-sine","ease-in-out-sine","ease-in-quad","ease-out-quad","ease-in-out-quad","ease-in-cubic","ease-out-cubic","ease-in-out-cubic","ease-in-quart","ease-out-quart","ease-in-out-quart","ease-in-quint","ease-out-quint","ease-in-out-quint","ease-in-expo","ease-out-expo","ease-in-out-expo","ease-in-circ","ease-out-circ","ease-in-out-circ"]},gradientDirection:{enums:["to-bottom","to-top","to-left","to-right","to-bottom-right","to-bottom-left","to-top-right","to-top-left","to-right-bottom","to-left-bottom","to-right-top","to-left-top"]},boundsExpansion:{number:!0,multiple:!0,min:0,validate:o(function(ie){var ae=ie.length;return ae===1||ae===2||ae===4},"validate")}};var u={zeroNonZero:o(function(ie,ae){return(ie==null||ae==null)&&ie!==ae||ie==0&&ae!=0?!0:ie!=0&&ae==0},"zeroNonZero"),any:o(function(ie,ae){return ie!=ae},"any"),emptyNonEmpty:o(function(ie,ae){var Re=Gf(ie),be=Gf(ae);return Re&&!be||!Re&&be},"emptyNonEmpty")},h=Xi.types,d=[{name:"label",type:h.text,triggersBounds:u.any,triggersZOrder:u.emptyNonEmpty},{name:"text-rotation",type:h.textRotation,triggersBounds:u.any},{name:"text-margin-x",type:h.bidirectionalSize,triggersBounds:u.any},{name:"text-margin-y",type:h.bidirectionalSize,triggersBounds:u.any}],f=[{name:"source-label",type:h.text,triggersBounds:u.any},{name:"source-text-rotation",type:h.textRotation,triggersBounds:u.any},{name:"source-text-margin-x",type:h.bidirectionalSize,triggersBounds:u.any},{name:"source-text-margin-y",type:h.bidirectionalSize,triggersBounds:u.any},{name:"source-text-offset",type:h.size,triggersBounds:u.any}],p=[{name:"target-label",type:h.text,triggersBounds:u.any},{name:"target-text-rotation",type:h.textRotation,triggersBounds:u.any},{name:"target-text-margin-x",type:h.bidirectionalSize,triggersBounds:u.any},{name:"target-text-margin-y",type:h.bidirectionalSize,triggersBounds:u.any},{name:"target-text-offset",type:h.size,triggersBounds:u.any}],m=[{name:"font-family",type:h.fontFamily,triggersBounds:u.any},{name:"font-style",type:h.fontStyle,triggersBounds:u.any},{name:"font-weight",type:h.fontWeight,triggersBounds:u.any},{name:"font-size",type:h.size,triggersBounds:u.any},{name:"text-transform",type:h.textTransform,triggersBounds:u.any},{name:"text-wrap",type:h.textWrap,triggersBounds:u.any},{name:"text-overflow-wrap",type:h.textOverflowWrap,triggersBounds:u.any},{name:"text-max-width",type:h.size,triggersBounds:u.any},{name:"text-outline-width",type:h.size,triggersBounds:u.any},{name:"line-height",type:h.positiveNumber,triggersBounds:u.any}],g=[{name:"text-valign",type:h.valign,triggersBounds:u.any},{name:"text-halign",type:h.halign,triggersBounds:u.any},{name:"color",type:h.color},{name:"text-outline-color",type:h.color},{name:"text-outline-opacity",type:h.zeroOneNumber},{name:"text-background-color",type:h.color},{name:"text-background-opacity",type:h.zeroOneNumber},{name:"text-background-padding",type:h.size,triggersBounds:u.any},{name:"text-border-opacity",type:h.zeroOneNumber},{name:"text-border-color",type:h.color},{name:"text-border-width",type:h.size,triggersBounds:u.any},{name:"text-border-style",type:h.borderStyle,triggersBounds:u.any},{name:"text-background-shape",type:h.textBackgroundShape,triggersBounds:u.any},{name:"text-justification",type:h.justification},{name:"box-select-labels",type:h.bool,triggersBounds:u.any}],y=[{name:"events",type:h.bool,triggersZOrder:u.any},{name:"text-events",type:h.bool,triggersZOrder:u.any},{name:"box-selection",type:h.boxSelection,triggersZOrder:u.any}],v=[{name:"display",type:h.display,triggersZOrder:u.any,triggersBounds:u.any,triggersBoundsOfConnectedEdges:u.any,triggersBoundsOfParallelEdges:o(function(ie,ae,Re){return ie===ae?!1:Re.pstyle("curve-style").value==="bezier"},"triggersBoundsOfParallelEdges")},{name:"visibility",type:h.visibility,triggersZOrder:u.any},{name:"opacity",type:h.zeroOneNumber,triggersZOrder:u.zeroNonZero},{name:"text-opacity",type:h.zeroOneNumber},{name:"min-zoomed-font-size",type:h.size},{name:"z-compound-depth",type:h.zCompoundDepth,triggersZOrder:u.any},{name:"z-index-compare",type:h.zIndexCompare,triggersZOrder:u.any},{name:"z-index",type:h.number,triggersZOrder:u.any}],x=[{name:"overlay-padding",type:h.size,triggersBounds:u.any},{name:"overlay-color",type:h.color},{name:"overlay-opacity",type:h.zeroOneNumber,triggersBounds:u.zeroNonZero},{name:"overlay-shape",type:h.overlayShape,triggersBounds:u.any},{name:"overlay-corner-radius",type:h.cornerRadius}],b=[{name:"underlay-padding",type:h.size,triggersBounds:u.any},{name:"underlay-color",type:h.color},{name:"underlay-opacity",type:h.zeroOneNumber,triggersBounds:u.zeroNonZero},{name:"underlay-shape",type:h.overlayShape,triggersBounds:u.any},{name:"underlay-corner-radius",type:h.cornerRadius}],T=[{name:"transition-property",type:h.propList},{name:"transition-duration",type:h.time},{name:"transition-delay",type:h.time},{name:"transition-timing-function",type:h.easing}],k=o(function(ie,ae){return ae.value==="label"?-ie.poolIndex():ae.pfValue},"nodeSizeHashOverride"),C=[{name:"height",type:h.nodeSize,triggersBounds:u.any,hashOverride:k},{name:"width",type:h.nodeSize,triggersBounds:u.any,hashOverride:k},{name:"shape",type:h.nodeShape,triggersBounds:u.any},{name:"shape-polygon-points",type:h.polygonPointList,triggersBounds:u.any},{name:"corner-radius",type:h.cornerRadius},{name:"background-color",type:h.color},{name:"background-fill",type:h.fill},{name:"background-opacity",type:h.zeroOneNumber},{name:"background-blacken",type:h.nOneOneNumber},{name:"background-gradient-stop-colors",type:h.colors},{name:"background-gradient-stop-positions",type:h.percentages},{name:"background-gradient-direction",type:h.gradientDirection},{name:"padding",type:h.sizeMaybePercent,triggersBounds:u.any},{name:"padding-relative-to",type:h.paddingRelativeTo,triggersBounds:u.any},{name:"bounds-expansion",type:h.boundsExpansion,triggersBounds:u.any}],w=[{name:"border-color",type:h.color},{name:"border-opacity",type:h.zeroOneNumber},{name:"border-width",type:h.size,triggersBounds:u.any},{name:"border-style",type:h.borderStyle},{name:"border-cap",type:h.lineCap},{name:"border-join",type:h.lineJoin},{name:"border-dash-pattern",type:h.numbers},{name:"border-dash-offset",type:h.number},{name:"border-position",type:h.linePosition}],S=[{name:"outline-color",type:h.color},{name:"outline-opacity",type:h.zeroOneNumber},{name:"outline-width",type:h.size,triggersBounds:u.any},{name:"outline-style",type:h.borderStyle},{name:"outline-offset",type:h.size,triggersBounds:u.any}],R=[{name:"background-image",type:h.urls},{name:"background-image-crossorigin",type:h.bgCrossOrigin},{name:"background-image-opacity",type:h.zeroOneNumbers},{name:"background-image-containment",type:h.bgContainment},{name:"background-image-smoothing",type:h.bools},{name:"background-position-x",type:h.bgPos},{name:"background-position-y",type:h.bgPos},{name:"background-width-relative-to",type:h.bgRelativeTo},{name:"background-height-relative-to",type:h.bgRelativeTo},{name:"background-repeat",type:h.bgRepeat},{name:"background-fit",type:h.bgFit},{name:"background-clip",type:h.bgClip},{name:"background-width",type:h.bgWH},{name:"background-height",type:h.bgWH},{name:"background-offset-x",type:h.bgPos},{name:"background-offset-y",type:h.bgPos}],L=[{name:"position",type:h.position,triggersBounds:u.any},{name:"compound-sizing-wrt-labels",type:h.compoundIncludeLabels,triggersBounds:u.any},{name:"min-width",type:h.size,triggersBounds:u.any},{name:"min-width-bias-left",type:h.sizeMaybePercent,triggersBounds:u.any},{name:"min-width-bias-right",type:h.sizeMaybePercent,triggersBounds:u.any},{name:"min-height",type:h.size,triggersBounds:u.any},{name:"min-height-bias-top",type:h.sizeMaybePercent,triggersBounds:u.any},{name:"min-height-bias-bottom",type:h.sizeMaybePercent,triggersBounds:u.any}],N=[{name:"line-style",type:h.lineStyle},{name:"line-color",type:h.color},{name:"line-fill",type:h.fill},{name:"line-cap",type:h.lineCap},{name:"line-opacity",type:h.zeroOneNumber},{name:"line-dash-pattern",type:h.numbers},{name:"line-dash-offset",type:h.number},{name:"line-outline-width",type:h.size},{name:"line-outline-color",type:h.color},{name:"line-gradient-stop-colors",type:h.colors},{name:"line-gradient-stop-positions",type:h.percentages},{name:"curve-style",type:h.curveStyle,triggersBounds:u.any,triggersBoundsOfParallelEdges:o(function(ie,ae){return ie===ae?!1:ie==="bezier"||ae==="bezier"},"triggersBoundsOfParallelEdges")},{name:"haystack-radius",type:h.zeroOneNumber,triggersBounds:u.any},{name:"source-endpoint",type:h.edgeEndpoint,triggersBounds:u.any},{name:"target-endpoint",type:h.edgeEndpoint,triggersBounds:u.any},{name:"control-point-step-size",type:h.size,triggersBounds:u.any},{name:"control-point-distances",type:h.bidirectionalSizes,triggersBounds:u.any},{name:"control-point-weights",type:h.numbers,triggersBounds:u.any},{name:"segment-distances",type:h.bidirectionalSizes,triggersBounds:u.any},{name:"segment-weights",type:h.numbers,triggersBounds:u.any},{name:"segment-radii",type:h.numbers,triggersBounds:u.any},{name:"radius-type",type:h.radiusType,triggersBounds:u.any},{name:"taxi-turn",type:h.bidirectionalSizeMaybePercent,triggersBounds:u.any},{name:"taxi-turn-min-distance",type:h.size,triggersBounds:u.any},{name:"taxi-direction",type:h.axisDirection,triggersBounds:u.any},{name:"taxi-radius",type:h.number,triggersBounds:u.any},{name:"edge-distances",type:h.edgeDistances,triggersBounds:u.any},{name:"arrow-scale",type:h.positiveNumber,triggersBounds:u.any},{name:"loop-direction",type:h.angle,triggersBounds:u.any},{name:"loop-sweep",type:h.angle,triggersBounds:u.any},{name:"source-distance-from-node",type:h.size,triggersBounds:u.any},{name:"target-distance-from-node",type:h.size,triggersBounds:u.any}],I=[{name:"ghost",type:h.bool,triggersBounds:u.any},{name:"ghost-offset-x",type:h.bidirectionalSize,triggersBounds:u.any},{name:"ghost-offset-y",type:h.bidirectionalSize,triggersBounds:u.any},{name:"ghost-opacity",type:h.zeroOneNumber}],_=[{name:"selection-box-color",type:h.color},{name:"selection-box-opacity",type:h.zeroOneNumber},{name:"selection-box-border-color",type:h.color},{name:"selection-box-border-width",type:h.size},{name:"active-bg-color",type:h.color},{name:"active-bg-opacity",type:h.zeroOneNumber},{name:"active-bg-size",type:h.size},{name:"outside-texture-bg-color",type:h.color},{name:"outside-texture-bg-opacity",type:h.zeroOneNumber}],A=[];Xi.pieBackgroundN=16,A.push({name:"pie-size",type:h.sizeMaybePercent}),A.push({name:"pie-hole",type:h.sizeMaybePercent}),A.push({name:"pie-start-angle",type:h.angle});for(var M=1;M<=Xi.pieBackgroundN;M++)A.push({name:"pie-"+M+"-background-color",type:h.color}),A.push({name:"pie-"+M+"-background-size",type:h.percent}),A.push({name:"pie-"+M+"-background-opacity",type:h.zeroOneNumber});var D=[];Xi.stripeBackgroundN=16,D.push({name:"stripe-size",type:h.sizeMaybePercent}),D.push({name:"stripe-direction",type:h.axisDirectionPrimary});for(var P=1;P<=Xi.stripeBackgroundN;P++)D.push({name:"stripe-"+P+"-background-color",type:h.color}),D.push({name:"stripe-"+P+"-background-size",type:h.percent}),D.push({name:"stripe-"+P+"-background-opacity",type:h.zeroOneNumber});var B=[],O=Xi.arrowPrefixes=["source","mid-source","target","mid-target"];[{name:"arrow-shape",type:h.arrowShape,triggersBounds:u.any},{name:"arrow-color",type:h.color},{name:"arrow-fill",type:h.arrowFill},{name:"arrow-width",type:h.arrowWidth}].forEach(function(le){O.forEach(function(ie){var ae=ie+"-"+le.name,Re=le.type,be=le.triggersBounds;B.push({name:ae,type:Re,triggersBounds:be})})},{});var $=Xi.properties=[].concat(y,T,v,x,b,I,g,m,d,f,p,C,w,S,R,A,D,L,N,B,_),V=Xi.propertyGroups={behavior:y,transition:T,visibility:v,overlay:x,underlay:b,ghost:I,commonLabel:g,labelDimensions:m,mainLabel:d,sourceLabel:f,targetLabel:p,nodeBody:C,nodeBorder:w,nodeOutline:S,backgroundImage:R,pie:A,stripe:D,compound:L,edgeLine:N,edgeArrow:B,core:_},G=Xi.propertyGroupNames={},z=Xi.propertyGroupKeys=Object.keys(V);z.forEach(function(le){G[le]=V[le].map(function(ie){return ie.name}),V[le].forEach(function(ie){return ie.groupKey=le})});var W=Xi.aliases=[{name:"content",pointsTo:"label"},{name:"control-point-distance",pointsTo:"control-point-distances"},{name:"control-point-weight",pointsTo:"control-point-weights"},{name:"segment-distance",pointsTo:"segment-distances"},{name:"segment-weight",pointsTo:"segment-weights"},{name:"segment-radius",pointsTo:"segment-radii"},{name:"edge-text-rotation",pointsTo:"text-rotation"},{name:"padding-left",pointsTo:"padding"},{name:"padding-right",pointsTo:"padding"},{name:"padding-top",pointsTo:"padding"},{name:"padding-bottom",pointsTo:"padding"}];Xi.propertyNames=$.map(function(le){return le.name});for(var H=0;H<$.length;H++){var j=$[H];$[j.name]=j}for(var Q=0;Q<W.length;Q++){var U=W[Q],oe=$[U.pointsTo],te={name:U.name,alias:!0,pointsTo:oe};$.push(te),$[U.name]=te}})();Xi.getDefaultProperty=function(e){return this.getDefaultProperties()[e]};Xi.getDefaultProperties=function(){var e=this._private;if(e.defaultProperties!=null)return e.defaultProperties;for(var t=br({"selection-box-color":"#ddd","selection-box-opacity":.65,"selection-box-border-color":"#aaa","selection-box-border-width":1,"active-bg-color":"black","active-bg-opacity":.15,"active-bg-size":30,"outside-texture-bg-color":"#000","outside-texture-bg-opacity":.125,events:"yes","text-events":"no","text-valign":"top","text-halign":"center","text-justification":"auto","line-height":1,color:"#000","box-selection":"contain","text-outline-color":"#000","text-outline-width":0,"text-outline-opacity":1,"text-opacity":1,"text-decoration":"none","text-transform":"none","text-wrap":"none","text-overflow-wrap":"whitespace","text-max-width":9999,"text-background-color":"#000","text-background-opacity":0,"text-background-shape":"rectangle","text-background-padding":0,"text-border-opacity":0,"text-border-width":0,"text-border-style":"solid","text-border-color":"#000","font-family":"Helvetica Neue, Helvetica, sans-serif","font-style":"normal","font-weight":"normal","font-size":16,"min-zoomed-font-size":0,"text-rotation":"none","source-text-rotation":"none","target-text-rotation":"none",visibility:"visible",display:"element",opacity:1,"z-compound-depth":"auto","z-index-compare":"auto","z-index":0,label:"","text-margin-x":0,"text-margin-y":0,"source-label":"","source-text-offset":0,"source-text-margin-x":0,"source-text-margin-y":0,"target-label":"","target-text-offset":0,"target-text-margin-x":0,"target-text-margin-y":0,"overlay-opacity":0,"overlay-color":"#000","overlay-padding":10,"overlay-shape":"round-rectangle","overlay-corner-radius":"auto","underlay-opacity":0,"underlay-color":"#000","underlay-padding":10,"underlay-shape":"round-rectangle","underlay-corner-radius":"auto","transition-property":"none","transition-duration":0,"transition-delay":0,"transition-timing-function":"linear","box-select-labels":"no","background-blacken":0,"background-color":"#999","background-fill":"solid","background-opacity":1,"background-image":"none","background-image-crossorigin":"anonymous","background-image-opacity":1,"background-image-containment":"inside","background-image-smoothing":"yes","background-position-x":"50%","background-position-y":"50%","background-offset-x":0,"background-offset-y":0,"background-width-relative-to":"include-padding","background-height-relative-to":"include-padding","background-repeat":"no-repeat","background-fit":"none","background-clip":"node","background-width":"auto","background-height":"auto","border-color":"#000","border-opacity":1,"border-width":0,"border-style":"solid","border-dash-pattern":[4,2],"border-dash-offset":0,"border-cap":"butt","border-join":"miter","border-position":"center","outline-color":"#999","outline-opacity":1,"outline-width":0,"outline-offset":0,"outline-style":"solid",height:30,width:30,shape:"ellipse","shape-polygon-points":"-1, -1,   1, -1,   1, 1,   -1, 1","corner-radius":"auto","bounds-expansion":0,"background-gradient-direction":"to-bottom","background-gradient-stop-colors":"#999","background-gradient-stop-positions":"0%",ghost:"no","ghost-offset-y":0,"ghost-offset-x":0,"ghost-opacity":0,padding:0,"padding-relative-to":"width",position:"origin","compound-sizing-wrt-labels":"include","min-width":0,"min-width-bias-left":0,"min-width-bias-right":0,"min-height":0,"min-height-bias-top":0,"min-height-bias-bottom":0},{"pie-size":"100%","pie-hole":0,"pie-start-angle":"0deg"},[{name:"pie-{{i}}-background-color",value:"black"},{name:"pie-{{i}}-background-size",value:"0%"},{name:"pie-{{i}}-background-opacity",value:1}].reduce(function(u,h){for(var d=1;d<=Xi.pieBackgroundN;d++){var f=h.name.replace("{{i}}",d),p=h.value;u[f]=p}return u},{}),{"stripe-size":"100%","stripe-direction":"horizontal"},[{name:"stripe-{{i}}-background-color",value:"black"},{name:"stripe-{{i}}-background-size",value:"0%"},{name:"stripe-{{i}}-background-opacity",value:1}].reduce(function(u,h){for(var d=1;d<=Xi.stripeBackgroundN;d++){var f=h.name.replace("{{i}}",d),p=h.value;u[f]=p}return u},{}),{"line-style":"solid","line-color":"#999","line-fill":"solid","line-cap":"butt","line-opacity":1,"line-outline-width":0,"line-outline-color":"#000","line-gradient-stop-colors":"#999","line-gradient-stop-positions":"0%","control-point-step-size":40,"control-point-weights":.5,"segment-weights":.5,"segment-distances":20,"segment-radii":15,"radius-type":"arc-radius","taxi-turn":"50%","taxi-radius":15,"taxi-turn-min-distance":10,"taxi-direction":"auto","edge-distances":"intersection","curve-style":"haystack","haystack-radius":0,"arrow-scale":1,"loop-direction":"-45deg","loop-sweep":"-90deg","source-distance-from-node":0,"target-distance-from-node":0,"source-endpoint":"outside-to-node","target-endpoint":"outside-to-node","line-dash-pattern":[6,3],"line-dash-offset":0},[{name:"arrow-shape",value:"none"},{name:"arrow-color",value:"#999"},{name:"arrow-fill",value:"filled"},{name:"arrow-width",value:1}].reduce(function(u,h){return Xi.arrowPrefixes.forEach(function(d){var f=d+"-"+h.name,p=h.value;u[f]=p}),u},{})),r={},n=0;n<this.properties.length;n++){var i=this.properties[n];if(!i.pointsTo){var a=i.name,s=t[a],l=this.parse(a,s);r[a]=l}}return e.defaultProperties=r,e.defaultProperties};Xi.addDefaultStylesheet=function(){this.selector(":parent").css({shape:"rectangle",padding:10,"background-color":"#eee","border-color":"#ccc","border-width":1}).selector("edge").css({width:3}).selector(":loop").css({"curve-style":"bezier"}).selector("edge:compound").css({"curve-style":"bezier","source-endpoint":"outside-to-line","target-endpoint":"outside-to-line"}).selector(":selected").css({"background-color":"#0169D9","line-color":"#0169D9","source-arrow-color":"#0169D9","target-arrow-color":"#0169D9","mid-source-arrow-color":"#0169D9","mid-target-arrow-color":"#0169D9"}).selector(":parent:selected").css({"background-color":"#CCE1F9","border-color":"#aec8e5"}).selector(":active").css({"overlay-color":"black","overlay-padding":10,"overlay-opacity":.25}),this.defaultLength=this.length};kA={};kA.parse=function(e,t,r,n){var i=this;if(Ci(t))return i.parseImplWarn(e,t,r,n);var a=n==="mapping"||n===!0||n===!1||n==null?"dontcare":n,s=r?"t":"f",l=""+t,u=xbe(e,l,s,a),h=i.propCache=i.propCache||[],d;return(d=h[u])||(d=h[u]=i.parseImplWarn(e,t,r,n)),(r||n==="mapping")&&(d=Tu(d),d&&(d.value=Tu(d.value))),d};kA.parseImplWarn=function(e,t,r,n){var i=this.parseImpl(e,t,r,n);return!i&&t!=null&&In("The style property `".concat(e,": ").concat(t,"` is invalid")),i&&(i.name==="width"||i.name==="height")&&t==="label"&&In("The style value of `label` is deprecated for `"+i.name+"`"),i};kA.parseImpl=function(e,t,r,n){var i=this;e=vF(e);var a=i.properties[e],s=t,l=i.types;if(!a||t===void 0)return null;a.alias&&(a=a.pointsTo,e=a.name);var u=fr(t);u&&(t=t.trim());var h=a.type;if(!h)return null;if(r&&(t===""||t===null))return{name:e,value:t,bypass:!0,deleteBypass:!0};if(Ci(t))return{name:e,value:t,strValue:"fn",mapped:l.fn,bypass:r};var d,f;if(!(!u||n||t.length<7||t[1]!=="a")){if(t.length>=7&&t[0]==="d"&&(d=new RegExp(l.data.regex).exec(t))){if(r)return!1;var p=l.data;return{name:e,value:d,strValue:""+t,mapped:p,field:d[1],bypass:r}}else if(t.length>=10&&t[0]==="m"&&(f=new RegExp(l.mapData.regex).exec(t))){if(r||h.multiple)return!1;var m=l.mapData;if(!(h.color||h.number))return!1;var g=this.parse(e,f[4]);if(!g||g.mapped)return!1;var y=this.parse(e,f[5]);if(!y||y.mapped)return!1;if(g.pfValue===y.pfValue||g.strValue===y.strValue)return In("`"+e+": "+t+"` is not a valid mapper because the output range is zero; converting to `"+e+": "+g.strValue+"`"),this.parse(e,g.strValue);if(h.color){var v=g.value,x=y.value,b=v[0]===x[0]&&v[1]===x[1]&&v[2]===x[2]&&(v[3]===x[3]||(v[3]==null||v[3]===1)&&(x[3]==null||x[3]===1));if(b)return!1}return{name:e,value:f,strValue:""+t,mapped:m,field:f[1],fieldMin:parseFloat(f[2]),fieldMax:parseFloat(f[3]),valueMin:g.value,valueMax:y.value,bypass:r}}}if(h.multiple&&n!=="multiple"){var T;if(u?T=t.split(/\s+/):Hn(t)?T=t:T=[t],h.evenMultiple&&T.length%2!==0)return null;for(var k=[],C=[],w=[],S="",R=!1,L=0;L<T.length;L++){var N=i.parse(e,T[L],r,"multiple");R=R||fr(N.value),k.push(N.value),w.push(N.pfValue!=null?N.pfValue:N.value),C.push(N.units),S+=(L>0?" ":"")+N.strValue}return h.validate&&!h.validate(k,C)?null:h.singleEnum&&R?k.length===1&&fr(k[0])?{name:e,value:k[0],strValue:k[0],bypass:r}:null:{name:e,value:k,pfValue:w,strValue:S,bypass:r,units:C}}var I=o(function(){for(var te=0;te<h.enums.length;te++){var le=h.enums[te];if(le===t)return{name:e,value:t,strValue:""+t,bypass:r}}return null},"checkEnums");if(h.number){var _,A="px";if(h.units&&(_=h.units),h.implicitUnits&&(A=h.implicitUnits),!h.unitless)if(u){var M="px|em"+(h.allowPercent?"|\\%":"");_&&(M=_);var D=t.match("^("+la+")("+M+")?$");D&&(t=D[1],_=D[2]||A)}else(!_||h.implicitUnits)&&(_=A);if(t=parseFloat(t),isNaN(t)&&h.enums===void 0)return null;if(isNaN(t)&&h.enums!==void 0)return t=s,I();if(h.integer&&!Sut(t)||h.min!==void 0&&(t<h.min||h.strictMin&&t===h.min)||h.max!==void 0&&(t>h.max||h.strictMax&&t===h.max))return null;var P={name:e,value:t,strValue:""+t+(_||""),units:_,bypass:r};return h.unitless||_!=="px"&&_!=="em"?P.pfValue=t:P.pfValue=_==="px"||!_?t:this.getEmSizeInPixels()*t,(_==="ms"||_==="s")&&(P.pfValue=_==="ms"?t:1e3*t),(_==="deg"||_==="rad")&&(P.pfValue=_==="rad"?t:Pht(t)),_==="%"&&(P.pfValue=t/100),P}else if(h.propList){var B=[],O=""+t;if(O!=="none"){for(var $=O.split(/\s*,\s*|\s+/),V=0;V<$.length;V++){var G=$[V].trim();i.properties[G]?B.push(G):In("`"+G+"` is not a valid property name")}if(B.length===0)return null}return{name:e,value:B,strValue:B.length===0?"none":B.join(" "),bypass:r}}else if(h.color){var z=dbe(t);return z?{name:e,value:z,pfValue:z,strValue:"rgb("+z[0]+","+z[1]+","+z[2]+")",bypass:r}:null}else if(h.regex||h.regexes){if(h.enums){var W=I();if(W)return W}for(var H=h.regexes?h.regexes:[h.regex],j=0;j<H.length;j++){var Q=new RegExp(H[j]),U=Q.exec(t);if(U)return{name:e,value:h.singleRegexMatchValue?U[1]:U,strValue:""+t,bypass:r}}return null}else return h.string?{name:e,value:""+t,strValue:""+t,bypass:r}:h.enums?I():null};Ra=o(function(t){if(!(this instanceof Ra))return new Ra(t);if(!yF(t)){pi("A style must have a core reference");return}this._private={cy:t,coreStyle:{}},this.length=0,this.resetToDefault()},"Style"),hs=Ra.prototype;hs.instanceString=function(){return"style"};hs.clear=function(){for(var e=this._private,t=e.cy,r=t.elements(),n=0;n<this.length;n++)this[n]=void 0;return this.length=0,e.contextStyles={},e.propDiffs={},this.cleanElements(r,!0),r.forEach(function(i){var a=i[0]._private;a.styleDirty=!0,a.appliedInitStyle=!1}),this};hs.resetToDefault=function(){return this.clear(),this.addDefaultStylesheet(),this};hs.core=function(e){return this._private.coreStyle[e]||this.getDefaultProperty(e)};hs.selector=function(e){var t=e==="core"?null:new qf(e),r=this.length++;return this[r]={selector:t,properties:[],mappedProperties:[],index:r},this};hs.css=function(){var e=this,t=arguments;if(t.length===1)for(var r=t[0],n=0;n<e.properties.length;n++){var i=e.properties[n],a=r[i.name];a===void 0&&(a=r[uA(i.name)]),a!==void 0&&this.cssRule(i.name,a)}else t.length===2&&this.cssRule(t[0],t[1]);return this};hs.style=hs.css;hs.cssRule=function(e,t){var r=this.parse(e,t);if(r){var n=this.length-1;this[n].properties.push(r),this[n].properties[r.name]=r,r.name.match(/pie-(\d+)-background-size/)&&r.value&&(this._private.hasPie=!0),r.name.match(/stripe-(\d+)-background-size/)&&r.value&&(this._private.hasStripe=!0),r.mapped&&this[n].mappedProperties.push(r);var i=!this[n].selector;i&&(this._private.coreStyle[r.name]=r)}return this};hs.append=function(e){return cbe(e)?e.appendToStyle(this):Hn(e)?this.appendFromJson(e):fr(e)&&this.appendFromString(e),this};Ra.fromJson=function(e,t){var r=new Ra(e);return r.fromJson(t),r};Ra.fromString=function(e,t){return new Ra(e).fromString(t)};[_a,JT,MF,Cu,wA,NF,Xi,kA].forEach(function(e){br(hs,e)});Ra.types=hs.types;Ra.properties=hs.properties;Ra.propertyGroups=hs.propertyGroups;Ra.propertyGroupNames=hs.propertyGroupNames;Ra.propertyGroupKeys=hs.propertyGroupKeys;Fpt={style:o(function(t){if(t){var r=this.setStyle(t);r.update()}return this._private.style},"style"),setStyle:o(function(t){var r=this._private;return cbe(t)?r.style=t.generateStyle(this):Hn(t)?r.style=Ra.fromJson(this,t):fr(t)?r.style=Ra.fromString(this,t):r.style=Ra(this),r.style},"setStyle"),updateStyle:o(function(){this.mutableElements().updateStyle()},"updateStyle")},zpt="single",ag={autolock:o(function(t){if(t!==void 0)this._private.autolock=!!t;else return this._private.autolock;return this},"autolock"),autoungrabify:o(function(t){if(t!==void 0)this._private.autoungrabify=!!t;else return this._private.autoungrabify;return this},"autoungrabify"),autounselectify:o(function(t){if(t!==void 0)this._private.autounselectify=!!t;else return this._private.autounselectify;return this},"autounselectify"),selectionType:o(function(t){var r=this._private;if(r.selectionType==null&&(r.selectionType=zpt),t!==void 0)(t==="additive"||t==="single")&&(r.selectionType=t);else return r.selectionType;return this},"selectionType"),panningEnabled:o(function(t){if(t!==void 0)this._private.panningEnabled=!!t;else return this._private.panningEnabled;return this},"panningEnabled"),userPanningEnabled:o(function(t){if(t!==void 0)this._private.userPanningEnabled=!!t;else return this._private.userPanningEnabled;return this},"userPanningEnabled"),zoomingEnabled:o(function(t){if(t!==void 0)this._private.zoomingEnabled=!!t;else return this._private.zoomingEnabled;return this},"zoomingEnabled"),userZoomingEnabled:o(function(t){if(t!==void 0)this._private.userZoomingEnabled=!!t;else return this._private.userZoomingEnabled;return this},"userZoomingEnabled"),boxSelectionEnabled:o(function(t){if(t!==void 0)this._private.boxSelectionEnabled=!!t;else return this._private.boxSelectionEnabled;return this},"boxSelectionEnabled"),pan:o(function(){var t=arguments,r=this._private.pan,n,i,a,s,l;switch(t.length){case 0:return r;case 1:if(fr(t[0]))return n=t[0],r[n];if(cn(t[0])){if(!this._private.panningEnabled)return this;a=t[0],s=a.x,l=a.y,Gt(s)&&(r.x=s),Gt(l)&&(r.y=l),this.emit("pan viewport")}break;case 2:if(!this._private.panningEnabled)return this;n=t[0],i=t[1],(n==="x"||n==="y")&&Gt(i)&&(r[n]=i),this.emit("pan viewport");break}return this.notify("viewport"),this},"pan"),panBy:o(function(t,r){var n=arguments,i=this._private.pan,a,s,l,u,h;if(!this._private.panningEnabled)return this;switch(n.length){case 1:cn(t)&&(l=n[0],u=l.x,h=l.y,Gt(u)&&(i.x+=u),Gt(h)&&(i.y+=h),this.emit("pan viewport"));break;case 2:a=t,s=r,(a==="x"||a==="y")&&Gt(s)&&(i[a]+=s),this.emit("pan viewport");break}return this.notify("viewport"),this},"panBy"),gc:o(function(){this.notify("gc")},"gc"),fit:o(function(t,r){var n=this.getFitViewport(t,r);if(n){var i=this._private;i.zoom=n.zoom,i.pan=n.pan,this.emit("pan zoom viewport"),this.notify("viewport")}return this},"fit"),getFitViewport:o(function(t,r){if(Gt(t)&&r===void 0&&(r=t,t=void 0),!(!this._private.panningEnabled||!this._private.zoomingEnabled)){var n;if(fr(t)){var i=t;t=this.$(i)}else if(Rut(t)){var a=t;n={x1:a.x1,y1:a.y1,x2:a.x2,y2:a.y2},n.w=n.x2-n.x1,n.h=n.y2-n.y1}else Ho(t)||(t=this.mutableElements());if(!(Ho(t)&&t.empty())){n=n||t.boundingBox();var s=this.width(),l=this.height(),u;if(r=Gt(r)?r:0,!isNaN(s)&&!isNaN(l)&&s>0&&l>0&&!isNaN(n.w)&&!isNaN(n.h)&&n.w>0&&n.h>0){u=Math.min((s-2*r)/n.w,(l-2*r)/n.h),u=u>this._private.maxZoom?this._private.maxZoom:u,u=u<this._private.minZoom?this._private.minZoom:u;var h={x:(s-u*(n.x1+n.x2))/2,y:(l-u*(n.y1+n.y2))/2};return{zoom:u,pan:h}}}}},"getFitViewport"),zoomRange:o(function(t,r){var n=this._private;if(r==null){var i=t;t=i.min,r=i.max}return Gt(t)&&Gt(r)&&t<=r?(n.minZoom=t,n.maxZoom=r):Gt(t)&&r===void 0&&t<=n.maxZoom?n.minZoom=t:Gt(r)&&t===void 0&&r>=n.minZoom&&(n.maxZoom=r),this},"zoomRange"),minZoom:o(function(t){return t===void 0?this._private.minZoom:this.zoomRange({min:t})},"minZoom"),maxZoom:o(function(t){return t===void 0?this._private.maxZoom:this.zoomRange({max:t})},"maxZoom"),getZoomedViewport:o(function(t){var r=this._private,n=r.pan,i=r.zoom,a,s,l=!1;if(r.zoomingEnabled||(l=!0),Gt(t)?s=t:cn(t)&&(s=t.level,t.position!=null?a=fA(t.position,i,n):t.renderedPosition!=null&&(a=t.renderedPosition),a!=null&&!r.panningEnabled&&(l=!0)),s=s>r.maxZoom?r.maxZoom:s,s=s<r.minZoom?r.minZoom:s,l||!Gt(s)||s===i||a!=null&&(!Gt(a.x)||!Gt(a.y)))return null;if(a!=null){var u=n,h=i,d=s,f={x:-d/h*(a.x-u.x)+a.x,y:-d/h*(a.y-u.y)+a.y};return{zoomed:!0,panned:!0,zoom:d,pan:f}}else return{zoomed:!0,panned:!1,zoom:s,pan:n}},"getZoomedViewport"),zoom:o(function(t){if(t===void 0)return this._private.zoom;var r=this.getZoomedViewport(t),n=this._private;return r==null||!r.zoomed?this:(n.zoom=r.zoom,r.panned&&(n.pan.x=r.pan.x,n.pan.y=r.pan.y),this.emit("zoom"+(r.panned?" pan":"")+" viewport"),this.notify("viewport"),this)},"zoom"),viewport:o(function(t){var r=this._private,n=!0,i=!0,a=[],s=!1,l=!1;if(!t)return this;if(Gt(t.zoom)||(n=!1),cn(t.pan)||(i=!1),!n&&!i)return this;if(n){var u=t.zoom;u<r.minZoom||u>r.maxZoom||!r.zoomingEnabled?s=!0:(r.zoom=u,a.push("zoom"))}if(i&&(!s||!t.cancelOnFailedZoom)&&r.panningEnabled){var h=t.pan;Gt(h.x)&&(r.pan.x=h.x,l=!1),Gt(h.y)&&(r.pan.y=h.y,l=!1),l||a.push("pan")}return a.length>0&&(a.push("viewport"),this.emit(a.join(" ")),this.notify("viewport")),this},"viewport"),center:o(function(t){var r=this.getCenterPan(t);return r&&(this._private.pan=r,this.emit("pan viewport"),this.notify("viewport")),this},"center"),getCenterPan:o(function(t,r){if(this._private.panningEnabled){if(fr(t)){var n=t;t=this.mutableElements().filter(n)}else Ho(t)||(t=this.mutableElements());if(t.length!==0){var i=t.boundingBox(),a=this.width(),s=this.height();r=r===void 0?this._private.zoom:r;var l={x:(a-r*(i.x1+i.x2))/2,y:(s-r*(i.y1+i.y2))/2};return l}}},"getCenterPan"),reset:o(function(){return!this._private.panningEnabled||!this._private.zoomingEnabled?this:(this.viewport({pan:{x:0,y:0},zoom:1}),this)},"reset"),invalidateSize:o(function(){this._private.sizeCache=null},"invalidateSize"),size:o(function(){var t=this._private,r=t.container,n=this;return t.sizeCache=t.sizeCache||(r?(function(){var i=n.window().getComputedStyle(r),a=o(function(l){return parseFloat(i.getPropertyValue(l))},"val");return{width:r.clientWidth-a("padding-left")-a("padding-right"),height:r.clientHeight-a("padding-top")-a("padding-bottom")}})():{width:1,height:1})},"size"),width:o(function(){return this.size().width},"width"),height:o(function(){return this.size().height},"height"),extent:o(function(){var t=this._private.pan,r=this._private.zoom,n=this.renderedExtent(),i={x1:(n.x1-t.x)/r,x2:(n.x2-t.x)/r,y1:(n.y1-t.y)/r,y2:(n.y2-t.y)/r};return i.w=i.x2-i.x1,i.h=i.y2-i.y1,i},"extent"),renderedExtent:o(function(){var t=this.width(),r=this.height();return{x1:0,y1:0,x2:t,y2:r,w:t,h:r}},"renderedExtent"),multiClickDebounceTime:o(function(t){if(t)this._private.multiClickDebounceTime=t;else return this._private.multiClickDebounceTime;return this},"multiClickDebounceTime")};ag.centre=ag.center;ag.autolockNodes=ag.autolock;ag.autoungrabifyNodes=ag.autoungrabify;VT={data:Dn.data({field:"data",bindingEvent:"data",allowBinding:!0,allowSetting:!0,settingEvent:"data",settingTriggersEvent:!0,triggerFnName:"trigger",allowGetting:!0,updateStyle:!0}),removeData:Dn.removeData({field:"data",event:"data",triggerFnName:"trigger",triggerEvent:!0,updateStyle:!0}),scratch:Dn.data({field:"scratch",bindingEvent:"scratch",allowBinding:!0,allowSetting:!0,settingEvent:"scratch",settingTriggersEvent:!0,triggerFnName:"trigger",allowGetting:!0,updateStyle:!0}),removeScratch:Dn.removeData({field:"scratch",event:"scratch",triggerFnName:"trigger",triggerEvent:!0,updateStyle:!0})};VT.attr=VT.data;VT.removeAttr=VT.removeData;WT=o(function(t){var r=this;t=br({},t);var n=t.container;n&&!Z5(n)&&Z5(n[0])&&(n=n[0]);var i=n?n._cyreg:null;i=i||{},i&&i.cy&&(i.cy.destroy(),i={});var a=i.readies=i.readies||[];n&&(n._cyreg=i),i.cy=r;var s=oa!==void 0&&n!==void 0&&!t.headless,l=t;l.layout=br({name:s?"grid":"null"},l.layout),l.renderer=br({name:s?"canvas":"null"},l.renderer);var u=o(function(g,y,v){return y!==void 0?y:v!==void 0?v:g},"defVal"),h=this._private={container:n,ready:!1,options:l,elements:new Ga(this),listeners:[],aniEles:new Ga(this),data:l.data||{},scratch:{},layout:null,renderer:null,destroyed:!1,notificationsEnabled:!0,minZoom:1e-50,maxZoom:1e50,zoomingEnabled:u(!0,l.zoomingEnabled),userZoomingEnabled:u(!0,l.userZoomingEnabled),panningEnabled:u(!0,l.panningEnabled),userPanningEnabled:u(!0,l.userPanningEnabled),boxSelectionEnabled:u(!0,l.boxSelectionEnabled),autolock:u(!1,l.autolock,l.autolockNodes),autoungrabify:u(!1,l.autoungrabify,l.autoungrabifyNodes),autounselectify:u(!1,l.autounselectify),styleEnabled:l.styleEnabled===void 0?s:l.styleEnabled,zoom:Gt(l.zoom)?l.zoom:1,pan:{x:cn(l.pan)&&Gt(l.pan.x)?l.pan.x:0,y:cn(l.pan)&&Gt(l.pan.y)?l.pan.y:0},animation:{current:[],queue:[]},hasCompoundNodes:!1,multiClickDebounceTime:u(250,l.multiClickDebounceTime)};this.createEmitter(),this.selectionType(l.selectionType),this.zoomRange({min:l.minZoom,max:l.maxZoom});var d=o(function(g,y){var v=g.some(_ut);if(v)return q1.all(g).then(y);y(g)},"loadExtData");h.styleEnabled&&r.setStyle([]);var f=br({},l,l.renderer);r.initRenderer(f);var p=o(function(g,y,v){r.notifications(!1);var x=r.mutableElements();x.length>0&&x.remove(),g!=null&&(cn(g)||Hn(g))&&r.add(g),r.one("layoutready",function(T){r.notifications(!0),r.emit(T),r.one("load",y),r.emitAndNotify("load")}).one("layoutstop",function(){r.one("done",v),r.emit("done")});var b=br({},r._private.options.layout);b.eles=r.elements(),r.layout(b).run()},"setElesAndLayout");d([l.style,l.elements],function(m){var g=m[0],y=m[1];h.styleEnabled&&r.style().append(g),p(y,function(){r.startAnimationLoop(),h.ready=!0,Ci(l.ready)&&r.on("ready",l.ready);for(var v=0;v<a.length;v++){var x=a[v];r.on("ready",x)}i&&(i.readies=[]),r.emit("ready")},l.done)})},"Core"),iA=WT.prototype;br(iA,{instanceString:o(function(){return"core"},"instanceString"),isReady:o(function(){return this._private.ready},"isReady"),destroyed:o(function(){return this._private.destroyed},"destroyed"),ready:o(function(t){return this.isReady()?this.emitter().emit("ready",[],t):this.on("ready",t),this},"ready"),destroy:o(function(){var t=this;if(!t.destroyed())return t.stopAnimationLoop(),t.destroyRenderer(),this.emit("destroy"),t._private.destroyed=!0,t},"destroy"),hasElementWithId:o(function(t){return this._private.elements.hasElementWithId(t)},"hasElementWithId"),getElementById:o(function(t){return this._private.elements.getElementById(t)},"getElementById"),hasCompoundNodes:o(function(){return this._private.hasCompoundNodes},"hasCompoundNodes"),headless:o(function(){return this._private.renderer.isHeadless()},"headless"),styleEnabled:o(function(){return this._private.styleEnabled},"styleEnabled"),addToPool:o(function(t){return this._private.elements.merge(t),this},"addToPool"),removeFromPool:o(function(t){return this._private.elements.unmerge(t),this},"removeFromPool"),container:o(function(){return this._private.container||null},"container"),window:o(function(){var t=this._private.container;if(t==null)return oa;var r=this._private.container.ownerDocument;return r===void 0||r==null?oa:r.defaultView||oa},"window"),mount:o(function(t){if(t!=null){var r=this,n=r._private,i=n.options;return!Z5(t)&&Z5(t[0])&&(t=t[0]),r.stopAnimationLoop(),r.destroyRenderer(),n.container=t,n.styleEnabled=!0,r.invalidateSize(),r.initRenderer(br({},i,i.renderer,{name:i.renderer.name==="null"?"canvas":i.renderer.name})),r.startAnimationLoop(),r.style(i.style),r.emit("mount"),r}},"mount"),unmount:o(function(){var t=this;return t.stopAnimationLoop(),t.destroyRenderer(),t.initRenderer({name:"null"}),t.emit("unmount"),t},"unmount"),options:o(function(){return Tu(this._private.options)},"options"),json:o(function(t){var r=this,n=r._private,i=r.mutableElements(),a=o(function(k){return r.getElementById(k.id())},"getFreshRef");if(cn(t)){if(r.startBatch(),t.elements){var s={},l=o(function(k,C){for(var w=[],S=[],R=0;R<k.length;R++){var L=k[R];if(!L.data.id){In("cy.json() cannot handle elements without an ID attribute");continue}var N=""+L.data.id,I=r.getElementById(N);s[N]=!0,I.length!==0?S.push({ele:I,json:L}):(C&&(L.group=C),w.push(L))}r.add(w);for(var _=0;_<S.length;_++){var A=S[_],M=A.ele,D=A.json;M.json(D)}},"updateEles");if(Hn(t.elements))l(t.elements);else for(var u=["nodes","edges"],h=0;h<u.length;h++){var d=u[h],f=t.elements[d];Hn(f)&&l(f,d)}var p=r.collection();i.filter(function(T){return!s[T.id()]}).forEach(function(T){T.isParent()?p.merge(T):T.remove()}),p.forEach(function(T){return T.children().move({parent:null})}),p.forEach(function(T){return a(T).remove()})}t.style&&r.style(t.style),t.zoom!=null&&t.zoom!==n.zoom&&r.zoom(t.zoom),t.pan&&(t.pan.x!==n.pan.x||t.pan.y!==n.pan.y)&&r.pan(t.pan),t.data&&r.data(t.data);for(var m=["minZoom","maxZoom","zoomingEnabled","userZoomingEnabled","panningEnabled","userPanningEnabled","boxSelectionEnabled","autolock","autoungrabify","autounselectify","multiClickDebounceTime"],g=0;g<m.length;g++){var y=m[g];t[y]!=null&&r[y](t[y])}return r.endBatch(),this}else{var v=!!t,x={};v?x.elements=this.elements().map(function(T){return T.json()}):(x.elements={},i.forEach(function(T){var k=T.group();x.elements[k]||(x.elements[k]=[]),x.elements[k].push(T.json())})),this._private.styleEnabled&&(x.style=r.style().json()),x.data=Tu(r.data());var b=n.options;return x.zoomingEnabled=n.zoomingEnabled,x.userZoomingEnabled=n.userZoomingEnabled,x.zoom=n.zoom,x.minZoom=n.minZoom,x.maxZoom=n.maxZoom,x.panningEnabled=n.panningEnabled,x.userPanningEnabled=n.userPanningEnabled,x.pan=Tu(n.pan),x.boxSelectionEnabled=n.boxSelectionEnabled,x.renderer=Tu(b.renderer),x.hideEdgesOnViewport=b.hideEdgesOnViewport,x.textureOnViewport=b.textureOnViewport,x.wheelSensitivity=b.wheelSensitivity,x.motionBlur=b.motionBlur,x.multiClickDebounceTime=b.multiClickDebounceTime,x}},"json")});iA.$id=iA.getElementById;[_pt,Npt,c2e,aF,H5,Opt,sF,U5,Fpt,ag,VT].forEach(function(e){br(iA,e)});Gpt={fit:!0,directed:!1,direction:"downward",padding:30,circle:!1,grid:!1,spacingFactor:1.75,boundingBox:void 0,avoidOverlap:!0,nodeDimensionsIncludeLabels:!1,roots:void 0,depthSort:void 0,animate:!1,animationDuration:500,animationEasing:void 0,animateFilter:o(function(t,r){return!0},"animateFilter"),ready:void 0,stop:void 0,transform:o(function(t,r){return r},"transform")},Vpt={maximal:!1,acyclic:!1},R1=o(function(t){return t.scratch("breadthfirst")},"getInfo"),Dxe=o(function(t,r){return t.scratch("breadthfirst",r)},"setInfo");o(u2e,"BreadthFirstLayout");u2e.prototype.run=function(){var e=this.options,t=e.cy,r=e.eles,n=r.nodes().filter(function(ye){return ye.isChildless()}),i=r,a=e.directed,s=e.acyclic||e.maximal||e.maximalAdjustments>0,l=!!e.boundingBox,u=Ns(l?e.boundingBox:structuredClone(t.extent())),h;if(Ho(e.roots))h=e.roots;else if(Hn(e.roots)){for(var d=[],f=0;f<e.roots.length;f++){var p=e.roots[f],m=t.getElementById(p);d.push(m)}h=t.collection(d)}else if(fr(e.roots))h=t.$(e.roots);else if(a)h=n.roots();else{var g=r.components();h=t.collection();for(var y=o(function(){var ke=g[v],ce=ke.maxDegree(!1),re=ke.filter(function(J){return J.degree(!1)===ce});h=h.add(re)},"_loop"),v=0;v<g.length;v++)y()}var x=[],b={},T=o(function(ke,ce){x[ce]==null&&(x[ce]=[]);var re=x[ce].length;x[ce].push(ke),Dxe(ke,{index:re,depth:ce})},"addToDepth"),k=o(function(ke,ce){var re=R1(ke),J=re.depth,se=re.index;x[J][se]=null,ke.isChildless()&&T(ke,ce)},"changeDepth");i.bfs({roots:h,directed:e.directed,visit:o(function(ke,ce,re,J,se){var ge=ke[0],Te=ge.id();ge.isChildless()&&T(ge,se),b[Te]=!0},"visit")});for(var C=[],w=0;w<n.length;w++){var S=n[w];b[S.id()]||C.push(S)}var R=o(function(ke){for(var ce=x[ke],re=0;re<ce.length;re++){var J=ce[re];if(J==null){ce.splice(re,1),re--;continue}Dxe(J,{depth:ke,index:re})}},"assignDepthsAt"),L=o(function(ke,ce){for(var re=R1(ke),J=ke.incomers().filter(function(ne){return ne.isNode()&&r.has(ne)}),se=-1,ge=ke.id(),Te=0;Te<J.length;Te++){var we=J[Te],Me=R1(we);se=Math.max(se,Me.depth)}if(re.depth<=se){if(!e.acyclic&&ce[ge])return null;var ve=se+1;return k(ke,ve),ce[ge]=ve,!0}return!1},"adjustMaximally");if(a&&s){var N=[],I={},_=o(function(ke){return N.push(ke)},"enqueue"),A=o(function(){return N.shift()},"dequeue");for(n.forEach(function(ye){return N.push(ye)});N.length>0;){var M=A(),D=L(M,I);if(D)M.outgoers().filter(function(ye){return ye.isNode()&&r.has(ye)}).forEach(_);else if(D===null){In("Detected double maximal shift for node `"+M.id()+"`.  Bailing maximal adjustment due to cycle.  Use `options.maximal: true` only on DAGs.");break}}}var P=0;if(e.avoidOverlap)for(var B=0;B<n.length;B++){var O=n[B],$=O.layoutDimensions(e),V=$.w,G=$.h;P=Math.max(P,V,G)}var z={},W=o(function(ke){if(z[ke.id()])return z[ke.id()];for(var ce=R1(ke).depth,re=ke.neighborhood(),J=0,se=0,ge=0;ge<re.length;ge++){var Te=re[ge];if(!(Te.isEdge()||Te.isParent()||!n.has(Te))){var we=R1(Te);if(we!=null){var Me=we.index,ve=we.depth;if(!(Me==null||ve==null)){var ne=x[ve].length;ve<ce&&(J+=Me/ne,se++)}}}}return se=Math.max(1,se),J=J/se,se===0&&(J=0),z[ke.id()]=J,J},"getWeightedPercent"),H=o(function(ke,ce){var re=W(ke),J=W(ce),se=re-J;return se===0?hbe(ke.id(),ce.id()):se},"sortFn");e.depthSort!==void 0&&(H=e.depthSort);for(var j=x.length,Q=0;Q<j;Q++)x[Q].sort(H),R(Q);for(var U=[],oe=0;oe<C.length;oe++)U.push(C[oe]);var te=o(function(){for(var ke=0;ke<j;ke++)R(ke)},"assignDepths");U.length&&(x.unshift(U),j=x.length,te());for(var le=0,ie=0;ie<j;ie++)le=Math.max(x[ie].length,le);var ae={x:u.x1+u.w/2,y:u.y1+u.h/2},Re=n.reduce(function(ye,ke){return(function(ce){return{w:ye.w===-1?ce.w:(ye.w+ce.w)/2,h:ye.h===-1?ce.h:(ye.h+ce.h)/2}})(ke.boundingBox({includeLabels:e.nodeDimensionsIncludeLabels}))},{w:-1,h:-1}),be=Math.max(j===1?0:l?(u.h-e.padding*2-Re.h)/(j-1):(u.h-e.padding*2-Re.h)/(j+1),P),Pe=x.reduce(function(ye,ke){return Math.max(ye,ke.length)},0),Ge=o(function(ke){var ce=R1(ke),re=ce.depth,J=ce.index;if(e.circle){var se=Math.min(u.w/2/j,u.h/2/j);se=Math.max(se,P);var ge=se*re+se-(j>0&&x[0].length<=3?se/2:0),Te=2*Math.PI/x[re].length*J;return re===0&&x[0].length===1&&(ge=1),{x:ae.x+ge*Math.cos(Te),y:ae.y+ge*Math.sin(Te)}}else{var we=x[re].length,Me=Math.max(we===1?0:l?(u.w-e.padding*2-Re.w)/((e.grid?Pe:we)-1):(u.w-e.padding*2-Re.w)/((e.grid?Pe:we)+1),P),ve={x:ae.x+(J+1-(we+1)/2)*Me,y:ae.y+(re+1-(j+1)/2)*be};return ve}},"getPositionTopBottom"),Oe={downward:0,leftward:90,upward:180,rightward:-90};Object.keys(Oe).indexOf(e.direction)===-1&&pi("Invalid direction '".concat(e.direction,"' specified for breadthfirst layout. Valid values are: ").concat(Object.keys(Oe).join(", ")));var ue=o(function(ke){return iht(Ge(ke),u,Oe[e.direction])},"getPosition");return r.nodes().layoutPositions(this,e,ue),this};Wpt={fit:!0,padding:30,boundingBox:void 0,avoidOverlap:!0,nodeDimensionsIncludeLabels:!1,spacingFactor:void 0,radius:void 0,startAngle:3/2*Math.PI,sweep:void 0,clockwise:!0,sort:void 0,animate:!1,animationDuration:500,animationEasing:void 0,animateFilter:o(function(t,r){return!0},"animateFilter"),ready:void 0,stop:void 0,transform:o(function(t,r){return r},"transform")};o(h2e,"CircleLayout");h2e.prototype.run=function(){var e=this.options,t=e,r=e.cy,n=t.eles,i=t.counterclockwise!==void 0?!t.counterclockwise:t.clockwise,a=n.nodes().not(":parent");t.sort&&(a=a.sort(t.sort));for(var s=Ns(t.boundingBox?t.boundingBox:{x1:0,y1:0,w:r.width(),h:r.height()}),l={x:s.x1+s.w/2,y:s.y1+s.h/2},u=t.sweep===void 0?2*Math.PI-2*Math.PI/a.length:t.sweep,h=u/Math.max(1,a.length-1),d,f=0,p=0;p<a.length;p++){var m=a[p],g=m.layoutDimensions(t),y=g.w,v=g.h;f=Math.max(f,y,v)}if(Gt(t.radius)?d=t.radius:a.length<=1?d=0:d=Math.min(s.h,s.w)/2-f,a.length>1&&t.avoidOverlap){f*=1.75;var x=Math.cos(h)-Math.cos(0),b=Math.sin(h)-Math.sin(0),T=Math.sqrt(f*f/(x*x+b*b));d=Math.max(T,d)}var k=o(function(w,S){var R=t.startAngle+S*h*(i?1:-1),L=d*Math.cos(R),N=d*Math.sin(R),I={x:l.x+L,y:l.y+N};return I},"getPos");return n.nodes().layoutPositions(this,t,k),this};qpt={fit:!0,padding:30,startAngle:3/2*Math.PI,sweep:void 0,clockwise:!0,equidistant:!1,minNodeSpacing:10,boundingBox:void 0,avoidOverlap:!0,nodeDimensionsIncludeLabels:!1,height:void 0,width:void 0,spacingFactor:void 0,concentric:o(function(t){return t.degree()},"concentric"),levelWidth:o(function(t){return t.maxDegree()/4},"levelWidth"),animate:!1,animationDuration:500,animationEasing:void 0,animateFilter:o(function(t,r){return!0},"animateFilter"),ready:void 0,stop:void 0,transform:o(function(t,r){return r},"transform")};o(d2e,"ConcentricLayout");d2e.prototype.run=function(){for(var e=this.options,t=e,r=t.counterclockwise!==void 0?!t.counterclockwise:t.clockwise,n=e.cy,i=t.eles,a=i.nodes().not(":parent"),s=Ns(t.boundingBox?t.boundingBox:{x1:0,y1:0,w:n.width(),h:n.height()}),l={x:s.x1+s.w/2,y:s.y1+s.h/2},u=[],h=0,d=0;d<a.length;d++){var f=a[d],p=void 0;p=t.concentric(f),u.push({value:p,node:f}),f._private.scratch.concentric=p}a.updateStyle();for(var m=0;m<a.length;m++){var g=a[m],y=g.layoutDimensions(t);h=Math.max(h,y.w,y.h)}u.sort(function(be,Pe){return Pe.value-be.value});for(var v=t.levelWidth(a),x=[[]],b=x[0],T=0;T<u.length;T++){var k=u[T];if(b.length>0){var C=Math.abs(b[0].value-k.value);C>=v&&(b=[],x.push(b))}b.push(k)}var w=h+t.minNodeSpacing;if(!t.avoidOverlap){var S=x.length>0&&x[0].length>1,R=Math.min(s.w,s.h)/2-w,L=R/(x.length+S?1:0);w=Math.min(w,L)}for(var N=0,I=0;I<x.length;I++){var _=x[I],A=t.sweep===void 0?2*Math.PI-2*Math.PI/_.length:t.sweep,M=_.dTheta=A/Math.max(1,_.length-1);if(_.length>1&&t.avoidOverlap){var D=Math.cos(M)-Math.cos(0),P=Math.sin(M)-Math.sin(0),B=Math.sqrt(w*w/(D*D+P*P));N=Math.max(B,N)}_.r=N,N+=w}if(t.equidistant){for(var O=0,$=0,V=0;V<x.length;V++){var G=x[V],z=G.r-$;O=Math.max(O,z)}$=0;for(var W=0;W<x.length;W++){var H=x[W];W===0&&($=H.r),H.r=$,$+=O}}for(var j={},Q=0;Q<x.length;Q++)for(var U=x[Q],oe=U.dTheta,te=U.r,le=0;le<U.length;le++){var ie=U[le],ae=t.startAngle+(r?1:-1)*oe*le,Re={x:l.x+te*Math.cos(ae),y:l.y+te*Math.sin(ae)};j[ie.node.id()]=Re}return i.nodes().layoutPositions(this,t,function(be){var Pe=be.id();return j[Pe]}),this};Hpt={ready:o(function(){},"ready"),stop:o(function(){},"stop"),animate:!0,animationEasing:void 0,animationDuration:void 0,animateFilter:o(function(t,r){return!0},"animateFilter"),animationThreshold:250,refresh:20,fit:!0,padding:30,boundingBox:void 0,nodeDimensionsIncludeLabels:!1,randomize:!1,componentSpacing:40,nodeRepulsion:o(function(t){return 2048},"nodeRepulsion"),nodeOverlap:4,idealEdgeLength:o(function(t){return 32},"idealEdgeLength"),edgeElasticity:o(function(t){return 32},"edgeElasticity"),nestingFactor:1.2,gravity:1,numIter:1e3,initialTemp:1e3,coolingFactor:.99,minTemp:1};o(SA,"CoseLayout");SA.prototype.run=function(){var e=this.options,t=e.cy,r=this;r.stopped=!1,(e.animate===!0||e.animate===!1)&&r.emit({type:"layoutstart",layout:r}),e.debug===!0?G$=!0:G$=!1;var n=Upt(t,r,e);G$&&jpt(n),e.randomize&&Xpt(n);var i=Ph(),a=o(function(){Kpt(n,t,e),e.fit===!0&&t.fit(e.padding)},"refresh"),s=o(function(p){return!(r.stopped||p>=e.numIter||(Zpt(n,e),n.temperature=n.temperature*e.coolingFactor,n.temperature<e.minTemp))},"mainLoop"),l=o(function(){if(e.animate===!0||e.animate===!1)a(),r.one("layoutstop",e.stop),r.emit({type:"layoutstop",layout:r});else{var p=e.eles.nodes(),m=p2e(n,e,p);p.layoutPositions(r,e,m)}},"done"),u=0,h=!0;if(e.animate===!0){var d=o(function(){for(var p=0;h&&p<e.refresh;)h=s(u),u++,p++;if(!h)Mxe(n,e),l();else{var m=Ph();m-i>=e.animationThreshold&&a(),Q5(d)}},"frame");d()}else{for(;h;)h=s(u),u++;Mxe(n,e),l()}return this};SA.prototype.stop=function(){return this.stopped=!0,this.thread&&this.thread.stop(),this.emit("layoutstop"),this};SA.prototype.destroy=function(){return this.thread&&this.thread.stop(),this};Upt=o(function(t,r,n){for(var i=n.eles.edges(),a=n.eles.nodes(),s=Ns(n.boundingBox?n.boundingBox:{x1:0,y1:0,w:t.width(),h:t.height()}),l={isCompound:t.hasCompoundNodes(),layoutNodes:[],idToIndex:{},nodeSize:a.size(),graphSet:[],indexToGraph:[],layoutEdges:[],edgeSize:i.size(),temperature:n.initialTemp,clientWidth:s.w,clientHeight:s.h,boundingBox:s},u=n.eles.components(),h={},d=0;d<u.length;d++)for(var f=u[d],p=0;p<f.length;p++){var m=f[p];h[m.id()]=d}for(var d=0;d<l.nodeSize;d++){var g=a[d],y=g.layoutDimensions(n),v={};v.isLocked=g.locked(),v.id=g.data("id"),v.parentId=g.data("parent"),v.cmptId=h[g.id()],v.children=[],v.positionX=g.position("x"),v.positionY=g.position("y"),v.offsetX=0,v.offsetY=0,v.height=y.w,v.width=y.h,v.maxX=v.positionX+v.width/2,v.minX=v.positionX-v.width/2,v.maxY=v.positionY+v.height/2,v.minY=v.positionY-v.height/2,v.padLeft=parseFloat(g.style("padding")),v.padRight=parseFloat(g.style("padding")),v.padTop=parseFloat(g.style("padding")),v.padBottom=parseFloat(g.style("padding")),v.nodeRepulsion=Ci(n.nodeRepulsion)?n.nodeRepulsion(g):n.nodeRepulsion,l.layoutNodes.push(v),l.idToIndex[v.id]=d}for(var x=[],b=0,T=-1,k=[],d=0;d<l.nodeSize;d++){var g=l.layoutNodes[d],C=g.parentId;C!=null?l.layoutNodes[l.idToIndex[C]].children.push(g.id):(x[++T]=g.id,k.push(g.id))}for(l.graphSet.push(k);b<=T;){var w=x[b++],S=l.idToIndex[w],m=l.layoutNodes[S],R=m.children;if(R.length>0){l.graphSet.push(R);for(var d=0;d<R.length;d++)x[++T]=R[d]}}for(var d=0;d<l.graphSet.length;d++)for(var L=l.graphSet[d],p=0;p<L.length;p++){var N=l.idToIndex[L[p]];l.indexToGraph[N]=d}for(var d=0;d<l.edgeSize;d++){var I=i[d],_={};_.id=I.data("id"),_.sourceId=I.data("source"),_.targetId=I.data("target");var A=Ci(n.idealEdgeLength)?n.idealEdgeLength(I):n.idealEdgeLength,M=Ci(n.edgeElasticity)?n.edgeElasticity(I):n.edgeElasticity,D=l.idToIndex[_.sourceId],P=l.idToIndex[_.targetId],B=l.indexToGraph[D],O=l.indexToGraph[P];if(B!=O){for(var $=Ypt(_.sourceId,_.targetId,l),V=l.graphSet[$],G=0,v=l.layoutNodes[D];V.indexOf(v.id)===-1;)v=l.layoutNodes[l.idToIndex[v.parentId]],G++;for(v=l.layoutNodes[P];V.indexOf(v.id)===-1;)v=l.layoutNodes[l.idToIndex[v.parentId]],G++;A*=G*n.nestingFactor}_.idealLength=A,_.elasticity=M,l.layoutEdges.push(_)}return l},"createLayoutInfo"),Ypt=o(function(t,r,n){var i=f2e(t,r,0,n);return 2>i.count?0:i.graph},"findLCA"),f2e=o(function(t,r,n,i){var a=i.graphSet[n];if(-1<a.indexOf(t)&&-1<a.indexOf(r))return{count:2,graph:n};for(var s=0,l=0;l<a.length;l++){var u=a[l],h=i.idToIndex[u],d=i.layoutNodes[h].children;if(d.length!==0){var f=i.indexToGraph[i.idToIndex[d[0]]],p=f2e(t,r,f,i);if(p.count!==0)if(p.count===1){if(s++,s===2)break}else return p}}return{count:s,graph:n}},"findLCA_aux"),Xpt=o(function(t,r){for(var n=t.clientWidth,i=t.clientHeight,a=0;a<t.nodeSize;a++){var s=t.layoutNodes[a];s.children.length===0&&!s.isLocked&&(s.positionX=Math.random()*n,s.positionY=Math.random()*i)}},"randomizePositions"),p2e=o(function(t,r,n){var i=t.boundingBox,a={x1:1/0,x2:-1/0,y1:1/0,y2:-1/0};return r.boundingBox&&(n.forEach(function(s){var l=t.layoutNodes[t.idToIndex[s.data("id")]];a.x1=Math.min(a.x1,l.positionX),a.x2=Math.max(a.x2,l.positionX),a.y1=Math.min(a.y1,l.positionY),a.y2=Math.max(a.y2,l.positionY)}),a.w=a.x2-a.x1,a.h=a.y2-a.y1),function(s,l){var u=t.layoutNodes[t.idToIndex[s.data("id")]];if(r.boundingBox){var h=a.w===0?.5:(u.positionX-a.x1)/a.w,d=a.h===0?.5:(u.positionY-a.y1)/a.h;return{x:i.x1+h*i.w,y:i.y1+d*i.h}}else return{x:u.positionX,y:u.positionY}}},"getScaleInBoundsFn"),Kpt=o(function(t,r,n){var i=n.layout,a=n.eles.nodes(),s=p2e(t,n,a);a.positions(s),t.ready!==!0&&(t.ready=!0,i.one("layoutready",n.ready),i.emit({type:"layoutready",layout:this}))},"refreshPositions"),Zpt=o(function(t,r,n){Qpt(t,r),tmt(t),rmt(t,r),nmt(t),imt(t)},"step"),Qpt=o(function(t,r){for(var n=0;n<t.graphSet.length;n++)for(var i=t.graphSet[n],a=i.length,s=0;s<a;s++)for(var l=t.layoutNodes[t.idToIndex[i[s]]],u=s+1;u<a;u++){var h=t.layoutNodes[t.idToIndex[i[u]]];Jpt(l,h,t,r)}},"calculateNodeForces"),Ixe=o(function(t){return-1+2*t*Math.random()},"randomDistance"),Jpt=o(function(t,r,n,i){var a=t.cmptId,s=r.cmptId;if(!(a!==s&&!n.isCompound)){var l=r.positionX-t.positionX,u=r.positionY-t.positionY,h=1;l===0&&u===0&&(l=Ixe(h),u=Ixe(h));var d=emt(t,r,l,u);if(d>0)var f=i.nodeOverlap*d,p=Math.sqrt(l*l+u*u),m=f*l/p,g=f*u/p;else var y=aA(t,l,u),v=aA(r,-1*l,-1*u),x=v.x-y.x,b=v.y-y.y,T=x*x+b*b,p=Math.sqrt(T),f=(t.nodeRepulsion+r.nodeRepulsion)/T,m=f*x/p,g=f*b/p;t.isLocked||(t.offsetX-=m,t.offsetY-=g),r.isLocked||(r.offsetX+=m,r.offsetY+=g)}},"nodeRepulsion"),emt=o(function(t,r,n,i){if(n>0)var a=t.maxX-r.minX;else var a=r.maxX-t.minX;if(i>0)var s=t.maxY-r.minY;else var s=r.maxY-t.minY;return a>=0&&s>=0?Math.sqrt(a*a+s*s):0},"nodesOverlap"),aA=o(function(t,r,n){var i=t.positionX,a=t.positionY,s=t.height||1,l=t.width||1,u=n/r,h=s/l,d={};return r===0&&0<n||r===0&&0>n?(d.x=i,d.y=a+s/2,d):0<r&&-1*h<=u&&u<=h?(d.x=i+l/2,d.y=a+l*n/2/r,d):0>r&&-1*h<=u&&u<=h?(d.x=i-l/2,d.y=a-l*n/2/r,d):0<n&&(u<=-1*h||u>=h)?(d.x=i+s*r/2/n,d.y=a+s/2,d):(0>n&&(u<=-1*h||u>=h)&&(d.x=i-s*r/2/n,d.y=a-s/2),d)},"findClippingPoint"),tmt=o(function(t,r){for(var n=0;n<t.edgeSize;n++){var i=t.layoutEdges[n],a=t.idToIndex[i.sourceId],s=t.layoutNodes[a],l=t.idToIndex[i.targetId],u=t.layoutNodes[l],h=u.positionX-s.positionX,d=u.positionY-s.positionY;if(!(h===0&&d===0)){var f=aA(s,h,d),p=aA(u,-1*h,-1*d),m=p.x-f.x,g=p.y-f.y,y=Math.sqrt(m*m+g*g),v=Math.pow(i.idealLength-y,2)/i.elasticity;if(y!==0)var x=v*m/y,b=v*g/y;else var x=0,b=0;s.isLocked||(s.offsetX+=x,s.offsetY+=b),u.isLocked||(u.offsetX-=x,u.offsetY-=b)}}},"calculateEdgeForces"),rmt=o(function(t,r){if(r.gravity!==0)for(var n=1,i=0;i<t.graphSet.length;i++){var a=t.graphSet[i],s=a.length;if(i===0)var l=t.clientHeight/2,u=t.clientWidth/2;else var h=t.layoutNodes[t.idToIndex[a[0]]],d=t.layoutNodes[t.idToIndex[h.parentId]],l=d.positionX,u=d.positionY;for(var f=0;f<s;f++){var p=t.layoutNodes[t.idToIndex[a[f]]];if(!p.isLocked){var m=l-p.positionX,g=u-p.positionY,y=Math.sqrt(m*m+g*g);if(y>n){var v=r.gravity*m/y,x=r.gravity*g/y;p.offsetX+=v,p.offsetY+=x}}}}},"calculateGravityForces"),nmt=o(function(t,r){var n=[],i=0,a=-1;for(n.push.apply(n,t.graphSet[0]),a+=t.graphSet[0].length;i<=a;){var s=n[i++],l=t.idToIndex[s],u=t.layoutNodes[l],h=u.children;if(0<h.length&&!u.isLocked){for(var d=u.offsetX,f=u.offsetY,p=0;p<h.length;p++){var m=t.layoutNodes[t.idToIndex[h[p]]];m.offsetX+=d,m.offsetY+=f,n[++a]=h[p]}u.offsetX=0,u.offsetY=0}}},"propagateForces"),imt=o(function(t,r){for(var n=0;n<t.nodeSize;n++){var i=t.layoutNodes[n];0<i.children.length&&(i.maxX=void 0,i.minX=void 0,i.maxY=void 0,i.minY=void 0)}for(var n=0;n<t.nodeSize;n++){var i=t.layoutNodes[n];if(!(0<i.children.length||i.isLocked)){var a=amt(i.offsetX,i.offsetY,t.temperature);i.positionX+=a.x,i.positionY+=a.y,i.offsetX=0,i.offsetY=0,i.minX=i.positionX-i.width,i.maxX=i.positionX+i.width,i.minY=i.positionY-i.height,i.maxY=i.positionY+i.height,m2e(i,t)}}for(var n=0;n<t.nodeSize;n++){var i=t.layoutNodes[n];0<i.children.length&&!i.isLocked&&(i.positionX=(i.maxX+i.minX)/2,i.positionY=(i.maxY+i.minY)/2,i.width=i.maxX-i.minX,i.height=i.maxY-i.minY)}},"updatePositions"),amt=o(function(t,r,n){var i=Math.sqrt(t*t+r*r);if(i>n)var a={x:n*t/i,y:n*r/i};else var a={x:t,y:r};return a},"limitForce"),m2e=o(function(t,r){var n=t.parentId;if(n!=null){var i=r.layoutNodes[r.idToIndex[n]],a=!1;if((i.maxX==null||t.maxX+i.padRight>i.maxX)&&(i.maxX=t.maxX+i.padRight,a=!0),(i.minX==null||t.minX-i.padLeft<i.minX)&&(i.minX=t.minX-i.padLeft,a=!0),(i.maxY==null||t.maxY+i.padBottom>i.maxY)&&(i.maxY=t.maxY+i.padBottom,a=!0),(i.minY==null||t.minY-i.padTop<i.minY)&&(i.minY=t.minY-i.padTop,a=!0),a)return m2e(i,r)}},"updateAncestryBoundaries"),Mxe=o(function(t,r){for(var n=t.layoutNodes,i=[],a=0;a<n.length;a++){var s=n[a],l=s.cmptId,u=i[l]=i[l]||[];u.push(s)}for(var h=0,a=0;a<i.length;a++){var d=i[a];if(d){d.x1=1/0,d.x2=-1/0,d.y1=1/0,d.y2=-1/0;for(var f=0;f<d.length;f++){var p=d[f];d.x1=Math.min(d.x1,p.positionX-p.width/2),d.x2=Math.max(d.x2,p.positionX+p.width/2),d.y1=Math.min(d.y1,p.positionY-p.height/2),d.y2=Math.max(d.y2,p.positionY+p.height/2)}d.w=d.x2-d.x1,d.h=d.y2-d.y1,h+=d.w*d.h}}i.sort(function(b,T){return T.w*T.h-b.w*b.h});for(var m=0,g=0,y=0,v=0,x=Math.sqrt(h)*t.clientWidth/t.clientHeight,a=0;a<i.length;a++){var d=i[a];if(d){for(var f=0;f<d.length;f++){var p=d[f];p.isLocked||(p.positionX+=m-d.x1,p.positionY+=g-d.y1)}m+=d.w+r.componentSpacing,y+=d.w+r.componentSpacing,v=Math.max(v,d.h),y>x&&(g+=v+r.componentSpacing,m=0,y=0,v=0)}}},"separateComponents"),smt={fit:!0,padding:30,boundingBox:void 0,avoidOverlap:!0,avoidOverlapPadding:10,nodeDimensionsIncludeLabels:!1,spacingFactor:void 0,condense:!1,rows:void 0,cols:void 0,position:o(function(t){},"position"),sort:void 0,animate:!1,animationDuration:500,animationEasing:void 0,animateFilter:o(function(t,r){return!0},"animateFilter"),ready:void 0,stop:void 0,transform:o(function(t,r){return r},"transform")};o(g2e,"GridLayout");g2e.prototype.run=function(){var e=this.options,t=e,r=e.cy,n=t.eles,i=n.nodes().not(":parent");t.sort&&(i=i.sort(t.sort));var a=Ns(t.boundingBox?t.boundingBox:{x1:0,y1:0,w:r.width(),h:r.height()});if(a.h===0||a.w===0)n.nodes().layoutPositions(this,t,function(W){return{x:a.x1,y:a.y1}});else{var s=i.size(),l=Math.sqrt(s*a.h/a.w),u=Math.round(l),h=Math.round(a.w/a.h*l),d=o(function(H){if(H==null)return Math.min(u,h);var j=Math.min(u,h);j==u?u=H:h=H},"small"),f=o(function(H){if(H==null)return Math.max(u,h);var j=Math.max(u,h);j==u?u=H:h=H},"large"),p=t.rows,m=t.cols!=null?t.cols:t.columns;if(p!=null&&m!=null)u=p,h=m;else if(p!=null&&m==null)u=p,h=Math.ceil(s/u);else if(p==null&&m!=null)h=m,u=Math.ceil(s/h);else if(h*u>s){var g=d(),y=f();(g-1)*y>=s?d(g-1):(y-1)*g>=s&&f(y-1)}else for(;h*u<s;){var v=d(),x=f();(x+1)*v>=s?f(x+1):d(v+1)}var b=a.w/h,T=a.h/u;if(t.condense&&(b=0,T=0),t.avoidOverlap)for(var k=0;k<i.length;k++){var C=i[k],w=C._private.position;(w.x==null||w.y==null)&&(w.x=0,w.y=0);var S=C.layoutDimensions(t),R=t.avoidOverlapPadding,L=S.w+R,N=S.h+R;b=Math.max(b,L),T=Math.max(T,N)}for(var I={},_=o(function(H,j){return!!I["c-"+H+"-"+j]},"used"),A=o(function(H,j){I["c-"+H+"-"+j]=!0},"use"),M=0,D=0,P=o(function(){D++,D>=h&&(D=0,M++)},"moveToNextCell"),B={},O=0;O<i.length;O++){var $=i[O],V=t.position($);if(V&&(V.row!==void 0||V.col!==void 0)){var G={row:V.row,col:V.col};if(G.col===void 0)for(G.col=0;_(G.row,G.col);)G.col++;else if(G.row===void 0)for(G.row=0;_(G.row,G.col);)G.row++;B[$.id()]=G,A(G.row,G.col)}}var z=o(function(H,j){var Q,U;if(H.locked()||H.isParent())return!1;var oe=B[H.id()];if(oe)Q=oe.col*b+b/2+a.x1,U=oe.row*T+T/2+a.y1;else{for(;_(M,D);)P();Q=D*b+b/2+a.x1,U=M*T+T/2+a.y1,A(M,D),P()}return{x:Q,y:U}},"getPos");i.layoutPositions(this,t,z)}return this};omt={ready:o(function(){},"ready"),stop:o(function(){},"stop")};o(PF,"NullLayout");PF.prototype.run=function(){var e=this.options,t=e.eles,r=this;return e.cy,r.emit("layoutstart"),t.nodes().positions(function(){return{x:0,y:0}}),r.one("layoutready",e.ready),r.emit("layoutready"),r.one("layoutstop",e.stop),r.emit("layoutstop"),this};PF.prototype.stop=function(){return this};lmt={positions:void 0,zoom:void 0,pan:void 0,fit:!0,padding:30,spacingFactor:void 0,animate:!1,animationDuration:500,animationEasing:void 0,animateFilter:o(function(t,r){return!0},"animateFilter"),ready:void 0,stop:void 0,transform:o(function(t,r){return r},"transform")};o(y2e,"PresetLayout");y2e.prototype.run=function(){var e=this.options,t=e.eles,r=t.nodes(),n=Ci(e.positions);function i(a){if(e.positions==null)return Lht(a.position());if(n)return e.positions(a);var s=e.positions[a._private.data.id];return s??null}return o(i,"getPosition"),r.layoutPositions(this,e,function(a,s){var l=i(a);return a.locked()||l==null?!1:l}),this};cmt={fit:!0,padding:30,boundingBox:void 0,animate:!1,animationDuration:500,animationEasing:void 0,animateFilter:o(function(t,r){return!0},"animateFilter"),ready:void 0,stop:void 0,transform:o(function(t,r){return r},"transform")};o(v2e,"RandomLayout");v2e.prototype.run=function(){var e=this.options,t=e.cy,r=e.eles,n=Ns(e.boundingBox?e.boundingBox:{x1:0,y1:0,w:t.width(),h:t.height()}),i=o(function(s,l){return{x:n.x1+Math.round(Math.random()*n.w),y:n.y1+Math.round(Math.random()*n.h)}},"getPos");return r.nodes().layoutPositions(this,e,i),this};umt=[{name:"breadthfirst",impl:u2e},{name:"circle",impl:h2e},{name:"concentric",impl:d2e},{name:"cose",impl:SA},{name:"grid",impl:g2e},{name:"null",impl:PF},{name:"preset",impl:y2e},{name:"random",impl:v2e}];o(x2e,"NullRenderer");Nxe=o(function(){},"noop"),Pxe=o(function(){throw new Error("A headless instance can not render images")},"throwImgErr");x2e.prototype={recalculateRenderedStyle:Nxe,notify:o(function(){this.notifications++},"notify"),init:Nxe,isHeadless:o(function(){return!0},"isHeadless"),png:Pxe,jpg:Pxe};OF={};OF.arrowShapeWidth=.3;OF.registerArrowShapes=function(){var e=this.arrowShapes={},t=this,r=o(function(h,d,f,p,m,g,y){var v=m.x-f/2-y,x=m.x+f/2+y,b=m.y-f/2-y,T=m.y+f/2+y,k=v<=h&&h<=x&&b<=d&&d<=T;return k},"bbCollide"),n=o(function(h,d,f,p,m){var g=h*Math.cos(p)-d*Math.sin(p),y=h*Math.sin(p)+d*Math.cos(p),v=g*f,x=y*f,b=v+m.x,T=x+m.y;return{x:b,y:T}},"transform"),i=o(function(h,d,f,p){for(var m=[],g=0;g<h.length;g+=2){var y=h[g],v=h[g+1];m.push(n(y,v,d,f,p))}return m},"transformPoints"),a=o(function(h){for(var d=[],f=0;f<h.length;f++){var p=h[f];d.push(p.x,p.y)}return d},"pointsToArr"),s=o(function(h){return h.pstyle("width").pfValue*h.pstyle("arrow-scale").pfValue*2},"standardGap"),l=o(function(h,d){fr(d)&&(d=e[d]),e[h]=br({name:h,points:[-.15,-.3,.15,-.3,.15,.3,-.15,.3],collide:o(function(p,m,g,y,v,x){var b=a(i(this.points,g+2*x,y,v)),T=go(p,m,b);return T},"collide"),roughCollide:r,draw:o(function(p,m,g,y){var v=i(this.points,m,g,y);t.arrowShapeImpl("polygon")(p,v)},"draw"),spacing:o(function(p){return 0},"spacing"),gap:s},d)},"defineArrowShape");l("none",{collide:J5,roughCollide:J5,draw:TF,spacing:X1e,gap:X1e}),l("triangle",{points:[-.15,-.3,0,0,.15,-.3]}),l("arrow","triangle"),l("triangle-backcurve",{points:e.triangle.points,controlPoint:[0,-.15],roughCollide:r,draw:o(function(h,d,f,p,m){var g=i(this.points,d,f,p),y=this.controlPoint,v=n(y[0],y[1],d,f,p);t.arrowShapeImpl(this.name)(h,g,v)},"draw"),gap:o(function(h){return s(h)*.8},"gap")}),l("triangle-tee",{points:[0,0,.15,-.3,-.15,-.3,0,0],pointsTee:[-.15,-.4,-.15,-.5,.15,-.5,.15,-.4],collide:o(function(h,d,f,p,m,g,y){var v=a(i(this.points,f+2*y,p,m)),x=a(i(this.pointsTee,f+2*y,p,m)),b=go(h,d,v)||go(h,d,x);return b},"collide"),draw:o(function(h,d,f,p,m){var g=i(this.points,d,f,p),y=i(this.pointsTee,d,f,p);t.arrowShapeImpl(this.name)(h,g,y)},"draw")}),l("circle-triangle",{radius:.15,pointsTr:[0,-.15,.15,-.45,-.15,-.45,0,-.15],collide:o(function(h,d,f,p,m,g,y){var v=m,x=Math.pow(v.x-h,2)+Math.pow(v.y-d,2)<=Math.pow((f+2*y)*this.radius,2),b=a(i(this.points,f+2*y,p,m));return go(h,d,b)||x},"collide"),draw:o(function(h,d,f,p,m){var g=i(this.pointsTr,d,f,p);t.arrowShapeImpl(this.name)(h,g,p.x,p.y,this.radius*d)},"draw"),spacing:o(function(h){return t.getArrowWidth(h.pstyle("width").pfValue,h.pstyle("arrow-scale").value)*this.radius},"spacing")}),l("triangle-cross",{points:[0,0,.15,-.3,-.15,-.3,0,0],baseCrossLinePts:[-.15,-.4,-.15,-.4,.15,-.4,.15,-.4],crossLinePts:o(function(h,d){var f=this.baseCrossLinePts.slice(),p=d/h,m=3,g=5;return f[m]=f[m]-p,f[g]=f[g]-p,f},"crossLinePts"),collide:o(function(h,d,f,p,m,g,y){var v=a(i(this.points,f+2*y,p,m)),x=a(i(this.crossLinePts(f,g),f+2*y,p,m)),b=go(h,d,v)||go(h,d,x);return b},"collide"),draw:o(function(h,d,f,p,m){var g=i(this.points,d,f,p),y=i(this.crossLinePts(d,m),d,f,p);t.arrowShapeImpl(this.name)(h,g,y)},"draw")}),l("vee",{points:[-.15,-.3,0,0,.15,-.3,0,-.15],gap:o(function(h){return s(h)*.525},"gap")}),l("circle",{radius:.15,collide:o(function(h,d,f,p,m,g,y){var v=m,x=Math.pow(v.x-h,2)+Math.pow(v.y-d,2)<=Math.pow((f+2*y)*this.radius,2);return x},"collide"),draw:o(function(h,d,f,p,m){t.arrowShapeImpl(this.name)(h,p.x,p.y,this.radius*d)},"draw"),spacing:o(function(h){return t.getArrowWidth(h.pstyle("width").pfValue,h.pstyle("arrow-scale").value)*this.radius},"spacing")}),l("tee",{points:[-.15,0,-.15,-.1,.15,-.1,.15,0],spacing:o(function(h){return 1},"spacing"),gap:o(function(h){return 1},"gap")}),l("square",{points:[-.15,0,.15,0,.15,-.3,-.15,-.3]}),l("diamond",{points:[-.15,-.15,0,-.3,.15,-.15,0,0],gap:o(function(h){return h.pstyle("width").pfValue*h.pstyle("arrow-scale").value},"gap")}),l("chevron",{points:[0,0,-.15,-.15,-.1,-.2,0,-.1,.1,-.2,.15,-.15],gap:o(function(h){return .95*h.pstyle("width").pfValue*h.pstyle("arrow-scale").value},"gap")})};og={};og.projectIntoViewport=function(e,t){var r=this.cy,n=this.findContainerClientCoords(),i=n[0],a=n[1],s=n[4],l=r.pan(),u=r.zoom(),h=((e-i)/s-l.x)/u,d=((t-a)/s-l.y)/u;return[h,d]};og.findContainerClientCoords=function(){if(this.containerBB)return this.containerBB;var e=this.container,t=e.getBoundingClientRect(),r=this.cy.window().getComputedStyle(e),n=o(function(x){return parseFloat(r.getPropertyValue(x))},"styleValue"),i={left:n("padding-left"),right:n("padding-right"),top:n("padding-top"),bottom:n("padding-bottom")},a={left:n("border-left-width"),right:n("border-right-width"),top:n("border-top-width"),bottom:n("border-bottom-width")},s=e.clientWidth,l=e.clientHeight,u=i.left+i.right,h=i.top+i.bottom,d=a.left+a.right,f=t.width/(s+d),p=s-u,m=l-h,g=t.left+i.left+a.left,y=t.top+i.top+a.top;return this.containerBB=[g,y,p,m,f]};og.invalidateContainerClientCoordsCache=function(){this.containerBB=null};og.findNearestElement=function(e,t,r,n){return this.findNearestElements(e,t,r,n)[0]};og.findNearestElements=function(e,t,r,n){var i=this,a=this,s=a.getCachedZSortedEles(),l=[],u=a.cy.zoom(),h=a.cy.hasCompoundNodes(),d=(n?24:8)/u,f=(n?8:2)/u,p=(n?8:2)/u,m=1/0,g,y;r&&(s=s.interactive);function v(S,R){if(S.isNode()){if(y)return;y=S,l.push(S)}if(S.isEdge()&&(R==null||R<m))if(g){if(g.pstyle("z-compound-depth").value===S.pstyle("z-compound-depth").value&&g.pstyle("z-compound-depth").value===S.pstyle("z-compound-depth").value){for(var L=0;L<l.length;L++)if(l[L].isEdge()){l[L]=S,g=S,m=R??m;break}}}else l.push(S),g=S,m=R??m}o(v,"addEle");function x(S){var R=S.outerWidth()+2*f,L=S.outerHeight()+2*f,N=R/2,I=L/2,_=S.position(),A=S.pstyle("corner-radius").value==="auto"?"auto":S.pstyle("corner-radius").pfValue,M=S._private.rscratch;if(_.x-N<=e&&e<=_.x+N&&_.y-I<=t&&t<=_.y+I){var D=a.nodeShapes[i.getNodeShape(S)];if(D.checkPoint(e,t,0,R,L,_.x,_.y,A,M))return v(S,0),!0}}o(x,"checkNode");function b(S){var R=S._private,L=R.rscratch,N=S.pstyle("width").pfValue,I=S.pstyle("arrow-scale").value,_=N/2+d,A=_*_,M=_*2,O=R.source,$=R.target,D;if(L.edgeType==="segments"||L.edgeType==="straight"||L.edgeType==="haystack"){for(var P=L.allpts,B=0;B+3<P.length;B+=2)if(qht(e,t,P[B],P[B+1],P[B+2],P[B+3],M)&&A>(D=Xht(e,t,P[B],P[B+1],P[B+2],P[B+3])))return v(S,D),!0}else if(L.edgeType==="bezier"||L.edgeType==="multibezier"||L.edgeType==="self"||L.edgeType==="compound"){for(var P=L.allpts,B=0;B+5<L.allpts.length;B+=4)if(Hht(e,t,P[B],P[B+1],P[B+2],P[B+3],P[B+4],P[B+5],M)&&A>(D=jht(e,t,P[B],P[B+1],P[B+2],P[B+3],P[B+4],P[B+5])))return v(S,D),!0}for(var O=O||R.source,$=$||R.target,V=i.getArrowWidth(N,I),G=[{name:"source",x:L.arrowStartX,y:L.arrowStartY,angle:L.srcArrowAngle},{name:"target",x:L.arrowEndX,y:L.arrowEndY,angle:L.tgtArrowAngle},{name:"mid-source",x:L.midX,y:L.midY,angle:L.midsrcArrowAngle},{name:"mid-target",x:L.midX,y:L.midY,angle:L.midtgtArrowAngle}],B=0;B<G.length;B++){var z=G[B],W=a.arrowShapes[S.pstyle(z.name+"-arrow-shape").value],H=S.pstyle("width").pfValue;if(W.roughCollide(e,t,V,z.angle,{x:z.x,y:z.y},H,d)&&W.collide(e,t,V,z.angle,{x:z.x,y:z.y},H,d))return v(S),!0}h&&l.length>0&&(x(O),x($))}o(b,"checkEdge");function T(S,R,L){return mo(S,R,L)}o(T,"preprop");function k(S,R){var L=S._private,N=p,I;R?I=R+"-":I="",S.boundingBox();var _=L.labelBounds[R||"main"],A=S.pstyle(I+"label").value,M=S.pstyle("text-events").strValue==="yes";if(!(!M||!A)){var D=T(L.rscratch,"labelX",R),P=T(L.rscratch,"labelY",R),B=T(L.rscratch,"labelAngle",R),O=S.pstyle(I+"text-margin-x").pfValue,$=S.pstyle(I+"text-margin-y").pfValue,V=_.x1-N-O,G=_.x2+N-O,z=_.y1-N-$,W=_.y2+N-$;if(B){var H=Math.cos(B),j=Math.sin(B),Q=o(function(Re,be){return Re=Re-D,be=be-P,{x:Re*H-be*j+D,y:Re*j+be*H+P}},"rotate"),U=Q(V,z),oe=Q(V,W),te=Q(G,z),le=Q(G,W),ie=[U.x+O,U.y+$,te.x+O,te.y+$,le.x+O,le.y+$,oe.x+O,oe.y+$];if(go(e,t,ie))return v(S),!0}else if(Bf(_,e,t))return v(S),!0}}o(k,"checkLabel");for(var C=s.length-1;C>=0;C--){var w=s[C];w.isNode()?x(w)||k(w):b(w)||k(w)||k(w,"source")||k(w,"target")}return l};og.getAllInBox=function(e,t,r,n){var i=this.getCachedZSortedEles().interactive,a=this.cy.zoom(),s=2/a,l=[],u=Math.min(e,r),h=Math.max(e,r),d=Math.min(t,n),f=Math.max(t,n);e=u,r=h,t=d,n=f;var p=Ns({x1:e,y1:t,x2:r,y2:n}),m=[{x:p.x1,y:p.y1},{x:p.x2,y:p.y1},{x:p.x2,y:p.y2},{x:p.x1,y:p.y2}],g=[[m[0],m[1]],[m[1],m[2]],[m[2],m[3]],[m[3],m[0]]];function y(Re,be,Pe){return mo(Re,be,Pe)}o(y,"preprop");function v(Re,be){var Pe=Re._private,Ge=s,Oe="";Re.boundingBox();var ue=Pe.labelBounds.main;if(!ue)return null;var ye=y(Pe.rscratch,"labelX",be),ke=y(Pe.rscratch,"labelY",be),ce=y(Pe.rscratch,"labelAngle",be),re=Re.pstyle(Oe+"text-margin-x").pfValue,J=Re.pstyle(Oe+"text-margin-y").pfValue,se=ue.x1-Ge-re,ge=ue.x2+Ge-re,Te=ue.y1-Ge-J,we=ue.y2+Ge-J;if(ce){var Me=Math.cos(ce),ve=Math.sin(ce),ne=o(function(he,X){return he=he-ye,X=X-ke,{x:he*Me-X*ve+ye,y:he*ve+X*Me+ke}},"rotate");return[ne(se,Te),ne(ge,Te),ne(ge,we),ne(se,we)]}else return[{x:se,y:Te},{x:ge,y:Te},{x:ge,y:we},{x:se,y:we}]}o(v,"getRotatedLabelBox");function x(Re,be,Pe,Ge){function Oe(ue,ye,ke){return(ke.y-ue.y)*(ye.x-ue.x)>(ye.y-ue.y)*(ke.x-ue.x)}return o(Oe,"ccw"),Oe(Re,Pe,Ge)!==Oe(be,Pe,Ge)&&Oe(Re,be,Pe)!==Oe(Re,be,Ge)}o(x,"doLinesIntersect");for(var b=0;b<i.length;b++){var T=i[b];if(T.isNode()){var k=T,C=k.pstyle("text-events").strValue==="yes",w=k.pstyle("box-selection").strValue,S=k.pstyle("box-select-labels").strValue==="yes";if(w==="none")continue;var R=(w==="overlap"||S)&&C,L=k.boundingBox({includeNodes:!0,includeEdges:!1,includeLabels:R});if(w==="contain"){var N=!1;if(S&&C){var I=v(k);I&&FB(I,m)&&(l.push(k),N=!0)}!N&&Ebe(p,L)&&l.push(k)}else if(w==="overlap"&&SF(p,L)){var _=k.boundingBox({includeNodes:!0,includeEdges:!0,includeLabels:!1,includeMainLabels:!1,includeSourceLabels:!1,includeTargetLabels:!1}),A=[{x:_.x1,y:_.y1},{x:_.x2,y:_.y1},{x:_.x2,y:_.y2},{x:_.x1,y:_.y2}];if(FB(A,m))l.push(k);else{var M=v(k);M&&FB(M,m)&&l.push(k)}}}else{var D=T,P=D._private,B=P.rscratch,O=D.pstyle("box-selection").strValue;if(O==="none")continue;if(O==="contain"){if(B.startX!=null&&B.startY!=null&&!Bf(p,B.startX,B.startY)||B.endX!=null&&B.endY!=null&&!Bf(p,B.endX,B.endY))continue;if(B.edgeType==="bezier"||B.edgeType==="multibezier"||B.edgeType==="self"||B.edgeType==="compound"||B.edgeType==="segments"||B.edgeType==="haystack"){for(var $=P.rstyle.bezierPts||P.rstyle.linePts||P.rstyle.haystackPts,V=!0,G=0;G<$.length;G++)if(!eve(p,$[G])){V=!1;break}V&&l.push(D)}else B.edgeType==="straight"&&l.push(D)}else if(O==="overlap"){var z=!1;if(B.startX!=null&&B.startY!=null&&B.endX!=null&&B.endY!=null&&(Bf(p,B.startX,B.startY)||Bf(p,B.endX,B.endY)))l.push(D),z=!0;else if(!z&&B.edgeType==="haystack"){for(var W=P.rstyle.haystackPts,H=0;H<W.length;H++)if(eve(p,W[H])){l.push(D),z=!0;break}}if(!z){var j=P.rstyle.bezierPts||P.rstyle.linePts||P.rstyle.haystackPts;if((!j||j.length<2)&&B.edgeType==="straight"&&B.startX!=null&&B.startY!=null&&B.endX!=null&&B.endY!=null&&(j=[{x:B.startX,y:B.startY},{x:B.endX,y:B.endY}]),!j||j.length<2)continue;for(var Q=0;Q<j.length-1;Q++){for(var U=j[Q],oe=j[Q+1],te=0;te<g.length;te++){var le=Ki(g[te],2),ie=le[0],ae=le[1];if(x(U,oe,ie,ae)){l.push(D),z=!0;break}}if(z)break}}}}}return l};sA={};sA.calculateArrowAngles=function(e){var t=e._private.rscratch,r=t.edgeType==="haystack",n=t.edgeType==="bezier",i=t.edgeType==="multibezier",a=t.edgeType==="segments",s=t.edgeType==="compound",l=t.edgeType==="self",u,h,d,f,p,m,x,b;if(r?(d=t.haystackPts[0],f=t.haystackPts[1],p=t.haystackPts[2],m=t.haystackPts[3]):(d=t.arrowStartX,f=t.arrowStartY,p=t.arrowEndX,m=t.arrowEndY),x=t.midX,b=t.midY,a)u=d-t.segpts[0],h=f-t.segpts[1];else if(i||s||l||n){var g=t.allpts,y=Aa(g[0],g[2],g[4],.1),v=Aa(g[1],g[3],g[5],.1);u=d-y,h=f-v}else u=d-x,h=f-b;t.srcArrowAngle=R5(u,h);var x=t.midX,b=t.midY;if(r&&(x=(d+p)/2,b=(f+m)/2),u=p-d,h=m-f,a){var g=t.allpts;if(g.length/2%2===0){var T=g.length/2,k=T-2;u=g[T]-g[k],h=g[T+1]-g[k+1]}else if(t.isRound)u=t.midVector[1],h=-t.midVector[0];else{var T=g.length/2-1,k=T-2;u=g[T]-g[k],h=g[T+1]-g[k+1]}}else if(i||s||l){var g=t.allpts,C=t.ctrlpts,w,S,R,L;if(C.length/2%2===0){var N=g.length/2-1,I=N+2,_=I+2;w=Aa(g[N],g[I],g[_],0),S=Aa(g[N+1],g[I+1],g[_+1],0),R=Aa(g[N],g[I],g[_],1e-4),L=Aa(g[N+1],g[I+1],g[_+1],1e-4)}else{var I=g.length/2-1,N=I-2,_=I+2;w=Aa(g[N],g[I],g[_],.4999),S=Aa(g[N+1],g[I+1],g[_+1],.4999),R=Aa(g[N],g[I],g[_],.5),L=Aa(g[N+1],g[I+1],g[_+1],.5)}u=R-w,h=L-S}if(t.midtgtArrowAngle=R5(u,h),t.midDispX=u,t.midDispY=h,u*=-1,h*=-1,a){var g=t.allpts;if(g.length/2%2!==0){if(!t.isRound){var T=g.length/2-1,A=T+2;u=-(g[A]-g[T]),h=-(g[A+1]-g[T+1])}}}if(t.midsrcArrowAngle=R5(u,h),a)u=p-t.segpts[t.segpts.length-2],h=m-t.segpts[t.segpts.length-1];else if(i||s||l||n){var g=t.allpts,M=g.length,y=Aa(g[M-6],g[M-4],g[M-2],.9),v=Aa(g[M-5],g[M-3],g[M-1],.9);u=p-y,h=m-v}else u=p-x,h=m-b;t.tgtArrowAngle=R5(u,h)};sA.getArrowWidth=sA.getArrowHeight=function(e,t){var r=this.arrowWidthCache=this.arrowWidthCache||{},n=r[e+", "+t];return n||(n=Math.max(Math.pow(e*13.37,.9),29)*t,r[e+", "+t]=n,n)};bu={},wl={},Fxe=o(function(t,r,n){n.x=r.x-t.x,n.y=r.y-t.y,n.len=Math.sqrt(n.x*n.x+n.y*n.y),n.nx=n.x/n.len,n.ny=n.y/n.len,n.ang=Math.atan2(n.ny,n.nx)},"asVec"),hmt=o(function(t,r){r.x=t.x*-1,r.y=t.y*-1,r.nx=t.nx*-1,r.ny=t.ny*-1,r.ang=t.ang>0?-(Math.PI-t.ang):Math.PI+t.ang},"invertVec"),dmt=o(function(t,r,n,i,a){if(t!==$xe?Fxe(r,t,bu):hmt(wl,bu),Fxe(r,n,wl),Oxe=bu.nx*wl.ny-bu.ny*wl.nx,Bxe=bu.nx*wl.nx-bu.ny*-wl.ny,Ih=Math.asin(Math.max(-1,Math.min(1,Oxe))),Math.abs(Ih)<1e-6){oF=r.x,lF=r.y,Qm=_1=0;return}eg=1,Y5=!1,Bxe<0?Ih<0?Ih=Math.PI+Ih:(Ih=Math.PI-Ih,eg=-1,Y5=!0):Ih>0&&(eg=-1,Y5=!0),r.radius!==void 0?_1=r.radius:_1=i,jm=Ih/2,O5=Math.min(bu.len/2,wl.len/2),a?(vu=Math.abs(Math.cos(jm)*_1/Math.sin(jm)),vu>O5?(vu=O5,Qm=Math.abs(vu*Math.sin(jm)/Math.cos(jm))):Qm=_1):(vu=Math.min(O5,_1),Qm=Math.abs(vu*Math.sin(jm)/Math.cos(jm))),cF=r.x+wl.nx*vu,uF=r.y+wl.ny*vu,oF=cF-wl.ny*Qm*eg,lF=uF+wl.nx*Qm*eg,b2e=r.x+bu.nx*vu,T2e=r.y+bu.ny*vu,$xe=r},"calcCornerArc");o(C2e,"drawPreparedRoundCorner");o(BF,"getRoundCorner");qT=.01,fmt=Math.sqrt(2*qT),ds={};ds.findMidptPtsEtc=function(e,t){var r=t.posPts,n=t.intersectionPts,i=t.vectorNormInverse,a,s=e.pstyle("source-endpoint"),l=e.pstyle("target-endpoint"),u=s.units!=null&&l.units!=null,h=o(function(C,w,S,R){var L=R-w,N=S-C,I=Math.sqrt(N*N+L*L);return{x:-L/I,y:N/I}},"recalcVectorNormInverse"),d=e.pstyle("edge-distances").value;switch(d){case"node-position":a=r;break;case"intersection":a=n;break;case"endpoints":{if(u){var f=this.manualEndptToPx(e.source()[0],s),p=Ki(f,2),m=p[0],g=p[1],y=this.manualEndptToPx(e.target()[0],l),v=Ki(y,2),x=v[0],b=v[1],T={x1:m,y1:g,x2:x,y2:b};i=h(m,g,x,b),a=T}else In("Edge ".concat(e.id()," has edge-distances:endpoints specified without manual endpoints specified via source-endpoint and target-endpoint.  Falling back on edge-distances:intersection (default).")),a=n;break}}return{midptPts:a,vectorNormInverse:i}};ds.findHaystackPoints=function(e){for(var t=0;t<e.length;t++){var r=e[t],n=r._private,i=n.rscratch;if(!i.haystack){var a=Math.random()*2*Math.PI;i.source={x:Math.cos(a),y:Math.sin(a)},a=Math.random()*2*Math.PI,i.target={x:Math.cos(a),y:Math.sin(a)}}var s=n.source,l=n.target,u=s.position(),h=l.position(),d=s.width(),f=l.width(),p=s.height(),m=l.height(),g=r.pstyle("haystack-radius").value,y=g/2;i.haystackPts=i.allpts=[i.source.x*d*y+u.x,i.source.y*p*y+u.y,i.target.x*f*y+h.x,i.target.y*m*y+h.y],i.midX=(i.allpts[0]+i.allpts[2])/2,i.midY=(i.allpts[1]+i.allpts[3])/2,i.edgeType="haystack",i.haystack=!0,this.storeEdgeProjections(r),this.calculateArrowAngles(r),this.recalculateEdgeLabelProjections(r),this.calculateLabelAngles(r)}};ds.findSegmentsPoints=function(e,t){var r=e._private.rscratch,n=e.pstyle("segment-weights"),i=e.pstyle("segment-distances"),a=e.pstyle("segment-radii"),s=e.pstyle("radius-type"),l=Math.min(n.pfValue.length,i.pfValue.length),u=a.pfValue[a.pfValue.length-1],h=s.pfValue[s.pfValue.length-1];r.edgeType="segments",r.segpts=[],r.radii=[],r.isArcRadius=[];for(var d=0;d<l;d++){var f=n.pfValue[d],p=i.pfValue[d],m=1-f,g=f,y=this.findMidptPtsEtc(e,t),v=y.midptPts,x=y.vectorNormInverse,b={x:v.x1*m+v.x2*g,y:v.y1*m+v.y2*g};r.segpts.push(b.x+x.x*p,b.y+x.y*p),r.radii.push(a.pfValue[d]!==void 0?a.pfValue[d]:u),r.isArcRadius.push((s.pfValue[d]!==void 0?s.pfValue[d]:h)==="arc-radius")}};ds.findLoopPoints=function(e,t,r,n){var i=e._private.rscratch,a=t.dirCounts,s=t.srcPos,l=e.pstyle("control-point-distances"),u=l?l.pfValue[0]:void 0,h=e.pstyle("loop-direction").pfValue,d=e.pstyle("loop-sweep").pfValue,f=e.pstyle("control-point-step-size").pfValue;i.edgeType="self";var p=r,m=f;n&&(p=0,m=u);var g=h-Math.PI/2,y=g-d/2,v=g+d/2,x=h+"_"+d;p=a[x]===void 0?a[x]=0:++a[x],i.ctrlpts=[s.x+Math.cos(y)*1.4*m*(p/3+1),s.y+Math.sin(y)*1.4*m*(p/3+1),s.x+Math.cos(v)*1.4*m*(p/3+1),s.y+Math.sin(v)*1.4*m*(p/3+1)]};ds.findCompoundLoopPoints=function(e,t,r,n){var i=e._private.rscratch;i.edgeType="compound";var a=t.srcPos,s=t.tgtPos,l=t.srcW,u=t.srcH,h=t.tgtW,d=t.tgtH,f=e.pstyle("control-point-step-size").pfValue,p=e.pstyle("control-point-distances"),m=p?p.pfValue[0]:void 0,g=r,y=f;n&&(g=0,y=m);var v=50,x={x:a.x-l/2,y:a.y-u/2},b={x:s.x-h/2,y:s.y-d/2},T={x:Math.min(x.x,b.x),y:Math.min(x.y,b.y)},k=.5,C=Math.max(k,Math.log(l*qT)),w=Math.max(k,Math.log(h*qT));i.ctrlpts=[T.x,T.y-(1+Math.pow(v,1.12)/100)*y*(g/3+1)*C,T.x-(1+Math.pow(v,1.12)/100)*y*(g/3+1)*w,T.y]};ds.findStraightEdgePoints=function(e){e._private.rscratch.edgeType="straight"};ds.findBezierPoints=function(e,t,r,n,i){var a=e._private.rscratch,s=e.pstyle("control-point-step-size").pfValue,l=e.pstyle("control-point-distances"),u=e.pstyle("control-point-weights"),h=l&&u?Math.min(l.value.length,u.value.length):1,d=l?l.pfValue[0]:void 0,f=u.value[0],p=n;a.edgeType=p?"multibezier":"bezier",a.ctrlpts=[];for(var m=0;m<h;m++){var g=(.5-t.eles.length/2+r)*s*(i?-1:1),y=void 0,v=kF(g);p&&(d=l?l.pfValue[m]:s,f=u.value[m]),n?y=d:y=d!==void 0?v*d:void 0;var x=y!==void 0?y:g,b=1-f,T=f,k=this.findMidptPtsEtc(e,t),C=k.midptPts,w=k.vectorNormInverse,S={x:C.x1*b+C.x2*T,y:C.y1*b+C.y2*T};a.ctrlpts.push(S.x+w.x*x,S.y+w.y*x)}};ds.findTaxiPoints=function(e,t){var r=e._private.rscratch;r.edgeType="segments";var n="vertical",i="horizontal",a="leftward",s="rightward",l="downward",u="upward",h="auto",d=t.posPts,f=t.srcW,p=t.srcH,m=t.tgtW,g=t.tgtH,y=e.pstyle("edge-distances").value,v=y!=="node-position",x=e.pstyle("taxi-direction").value,b=x,T=e.pstyle("taxi-turn"),k=T.units==="%",C=T.pfValue,w=C<0,S=e.pstyle("taxi-turn-min-distance").pfValue,R=v?(f+m)/2:0,L=v?(p+g)/2:0,N=d.x2-d.x1,I=d.y2-d.y1,_=o(function(X,fe){return X>0?Math.max(X-fe,0):Math.min(X+fe,0)},"subDWH"),A=_(N,R),M=_(I,L),D=!1;b===h?x=Math.abs(A)>Math.abs(M)?i:n:b===u||b===l?(x=n,D=!0):(b===a||b===s)&&(x=i,D=!0);var P=x===n,B=P?M:A,O=P?I:N,$=kF(O),V=!1;!(D&&(k||w))&&(b===l&&O<0||b===u&&O>0||b===a&&O>0||b===s&&O<0)&&($*=-1,B=$*Math.abs(B),V=!0);var G;if(k){var z=C<0?1+C:C;G=z*B}else{var W=C<0?B:0;G=W+C*$}var H=o(function(X){return Math.abs(X)<S||Math.abs(X)>=Math.abs(B)},"getIsTooClose"),j=H(G),Q=H(Math.abs(B)-Math.abs(G)),U=j||Q;if(U&&!V)if(P){var oe=Math.abs(O)<=p/2,te=Math.abs(N)<=m/2;if(oe){var le=(d.x1+d.x2)/2,ie=d.y1,ae=d.y2;r.segpts=[le,ie,le,ae]}else if(te){var Re=(d.y1+d.y2)/2,be=d.x1,Pe=d.x2;r.segpts=[be,Re,Pe,Re]}else r.segpts=[d.x1,d.y2]}else{var Ge=Math.abs(O)<=f/2,Oe=Math.abs(I)<=g/2;if(Ge){var ue=(d.y1+d.y2)/2,ye=d.x1,ke=d.x2;r.segpts=[ye,ue,ke,ue]}else if(Oe){var ce=(d.x1+d.x2)/2,re=d.y1,J=d.y2;r.segpts=[ce,re,ce,J]}else r.segpts=[d.x2,d.y1]}else if(P){var se=d.y1+G+(v?p/2*$:0),ge=d.x1,Te=d.x2;r.segpts=[ge,se,Te,se]}else{var we=d.x1+G+(v?f/2*$:0),Me=d.y1,ve=d.y2;r.segpts=[we,Me,we,ve]}if(r.isRound){var ne=e.pstyle("taxi-radius").value,q=e.pstyle("radius-type").value[0]==="arc-radius";r.radii=new Array(r.segpts.length/2).fill(ne),r.isArcRadius=new Array(r.segpts.length/2).fill(q)}};ds.tryToCorrectInvalidPoints=function(e,t){var r=e._private.rscratch;if(r.edgeType==="bezier"){var n=t.srcPos,i=t.tgtPos,a=t.srcW,s=t.srcH,l=t.tgtW,u=t.tgtH,h=t.srcShape,d=t.tgtShape,f=t.srcCornerRadius,p=t.tgtCornerRadius,m=t.srcRs,g=t.tgtRs,y=!Gt(r.startX)||!Gt(r.startY),v=!Gt(r.arrowStartX)||!Gt(r.arrowStartY),x=!Gt(r.endX)||!Gt(r.endY),b=!Gt(r.arrowEndX)||!Gt(r.arrowEndY),T=3,k=this.getArrowWidth(e.pstyle("width").pfValue,e.pstyle("arrow-scale").value)*this.arrowShapeWidth,C=T*k,w=ng({x:r.ctrlpts[0],y:r.ctrlpts[1]},{x:r.startX,y:r.startY}),S=w<C,R=ng({x:r.ctrlpts[0],y:r.ctrlpts[1]},{x:r.endX,y:r.endY}),L=R<C,N=!1;if(y||v||S){N=!0;var I={x:r.ctrlpts[0]-n.x,y:r.ctrlpts[1]-n.y},_=Math.sqrt(I.x*I.x+I.y*I.y),A={x:I.x/_,y:I.y/_},M=Math.max(a,s),D={x:r.ctrlpts[0]+A.x*2*M,y:r.ctrlpts[1]+A.y*2*M},P=h.intersectLine(n.x,n.y,a,s,D.x,D.y,0,f,m);S?(r.ctrlpts[0]=r.ctrlpts[0]+A.x*(C-w),r.ctrlpts[1]=r.ctrlpts[1]+A.y*(C-w)):(r.ctrlpts[0]=P[0]+A.x*C,r.ctrlpts[1]=P[1]+A.y*C)}if(x||b||L){N=!0;var B={x:r.ctrlpts[0]-i.x,y:r.ctrlpts[1]-i.y},O=Math.sqrt(B.x*B.x+B.y*B.y),$={x:B.x/O,y:B.y/O},V=Math.max(a,s),G={x:r.ctrlpts[0]+$.x*2*V,y:r.ctrlpts[1]+$.y*2*V},z=d.intersectLine(i.x,i.y,l,u,G.x,G.y,0,p,g);L?(r.ctrlpts[0]=r.ctrlpts[0]+$.x*(C-R),r.ctrlpts[1]=r.ctrlpts[1]+$.y*(C-R)):(r.ctrlpts[0]=z[0]+$.x*C,r.ctrlpts[1]=z[1]+$.y*C)}N&&this.findEndpoints(e)}};ds.storeAllpts=function(e){var t=e._private.rscratch;if(t.edgeType==="multibezier"||t.edgeType==="bezier"||t.edgeType==="self"||t.edgeType==="compound"){t.allpts=[],t.allpts.push(t.startX,t.startY);for(var r=0;r+1<t.ctrlpts.length;r+=2)t.allpts.push(t.ctrlpts[r],t.ctrlpts[r+1]),r+3<t.ctrlpts.length&&t.allpts.push((t.ctrlpts[r]+t.ctrlpts[r+2])/2,(t.ctrlpts[r+1]+t.ctrlpts[r+3])/2);t.allpts.push(t.endX,t.endY);var n,i;t.ctrlpts.length/2%2===0?(n=t.allpts.length/2-1,t.midX=t.allpts[n],t.midY=t.allpts[n+1]):(n=t.allpts.length/2-3,i=.5,t.midX=Aa(t.allpts[n],t.allpts[n+2],t.allpts[n+4],i),t.midY=Aa(t.allpts[n+1],t.allpts[n+3],t.allpts[n+5],i))}else if(t.edgeType==="straight")t.allpts=[t.startX,t.startY,t.endX,t.endY],t.midX=(t.startX+t.endX+t.arrowStartX+t.arrowEndX)/4,t.midY=(t.startY+t.endY+t.arrowStartY+t.arrowEndY)/4;else if(t.edgeType==="segments"){if(t.allpts=[],t.allpts.push(t.startX,t.startY),t.allpts.push.apply(t.allpts,t.segpts),t.allpts.push(t.endX,t.endY),t.isRound){t.roundCorners=[];for(var a=2;a+3<t.allpts.length;a+=2){var s=t.radii[a/2-1],l=t.isArcRadius[a/2-1];t.roundCorners.push(BF({x:t.allpts[a-2],y:t.allpts[a-1]},{x:t.allpts[a],y:t.allpts[a+1],radius:s},{x:t.allpts[a+2],y:t.allpts[a+3]},s,l))}}if(t.segpts.length%4===0){var u=t.segpts.length/2,h=u-2;t.midX=(t.segpts[h]+t.segpts[u])/2,t.midY=(t.segpts[h+1]+t.segpts[u+1])/2}else{var d=t.segpts.length/2-1;if(!t.isRound)t.midX=t.segpts[d],t.midY=t.segpts[d+1];else{var f={x:t.segpts[d],y:t.segpts[d+1]},p=t.roundCorners[d/2];if(p.radius===0){var m={x:t.segpts[d+2],y:t.segpts[d+3]};t.midX=f.x,t.midY=f.y,t.midVector=[f.y-m.y,m.x-f.x]}else{var g=[f.x-p.cx,f.y-p.cy],y=p.radius/Math.sqrt(Math.pow(g[0],2)+Math.pow(g[1],2));g=g.map(function(v){return v*y}),t.midX=p.cx+g[0],t.midY=p.cy+g[1],t.midVector=g}}}}};ds.checkForInvalidEdgeWarning=function(e){var t=e[0]._private.rscratch;t.nodesOverlap||Gt(t.startX)&&Gt(t.startY)&&Gt(t.endX)&&Gt(t.endY)?t.loggedErr=!1:t.loggedErr||(t.loggedErr=!0,In("Edge `"+e.id()+"` has invalid endpoints and so it is impossible to draw.  Adjust your edge style (e.g. control points) accordingly or use an alternative edge type.  This is expected behaviour when the source node and the target node overlap."))};ds.findEdgeControlPoints=function(e){var t=this;if(!(!e||e.length===0)){for(var r=this,n=r.cy,i=n.hasCompoundNodes(),a=new Nh,s=o(function(L,N){return[].concat(K5(L),[N?1:0]).join("-")},"getKey"),l=[],u=[],h=0;h<e.length;h++){var d=e[h],f=d._private,p=d.pstyle("curve-style").value;if(!(d.removed()||!d.takesUpSpace())){if(p==="haystack"){u.push(d);continue}var m=p==="unbundled-bezier"||Of(p,"segments")||p==="straight"||p==="straight-triangle"||Of(p,"taxi"),g=p==="unbundled-bezier"||p==="bezier",y=f.source,v=f.target,x=y.poolIndex(),b=v.poolIndex(),T=[x,b].sort(),k=s(T,m),C=a.get(k);C==null&&(C={eles:[]},l.push({pairId:T,edgeIsUnbundled:m}),a.set(k,C)),C.eles.push(d),m&&(C.hasUnbundled=!0),g&&(C.hasBezier=!0)}}for(var w=o(function(){var L=l[S],N=L.pairId,I=L.edgeIsUnbundled,_=s(N,I),A=a.get(_),M;if(!A.hasUnbundled){var D=A.eles[0].parallelEdges().filter(function(q){return q.isBundledBezier()});CF(A.eles),D.forEach(function(q){return A.eles.push(q)}),A.eles.sort(function(q,he){return q.poolIndex()-he.poolIndex()})}var P=A.eles[0],B=P.source(),O=P.target();if(B.poolIndex()>O.poolIndex()){var $=B;B=O,O=$}var V=A.srcPos=B.position(),G=A.tgtPos=O.position(),z=A.srcW=B.outerWidth(),W=A.srcH=B.outerHeight(),H=A.tgtW=O.outerWidth(),j=A.tgtH=O.outerHeight(),Q=A.srcShape=r.nodeShapes[t.getNodeShape(B)],U=A.tgtShape=r.nodeShapes[t.getNodeShape(O)],oe=A.srcCornerRadius=B.pstyle("corner-radius").value==="auto"?"auto":B.pstyle("corner-radius").pfValue,te=A.tgtCornerRadius=O.pstyle("corner-radius").value==="auto"?"auto":O.pstyle("corner-radius").pfValue,le=A.tgtRs=O._private.rscratch,ie=A.srcRs=B._private.rscratch;A.dirCounts={north:0,west:0,south:0,east:0,northwest:0,southwest:0,northeast:0,southeast:0};for(var ae=0;ae<A.eles.length;ae++){var Re=A.eles[ae],be=Re[0]._private.rscratch,Pe=Re.pstyle("curve-style").value,Ge=Pe==="unbundled-bezier"||Of(Pe,"segments")||Of(Pe,"taxi"),Oe=!B.same(Re.source());if(!A.calculatedIntersection&&B!==O&&(A.hasBezier||A.hasUnbundled)){A.calculatedIntersection=!0;var ue=Q.intersectLine(V.x,V.y,z,W,G.x,G.y,0,oe,ie),ye=A.srcIntn=ue,ke=U.intersectLine(G.x,G.y,H,j,V.x,V.y,0,te,le),ce=A.tgtIntn=ke,re=A.intersectionPts={x1:ue[0],x2:ke[0],y1:ue[1],y2:ke[1]},J=A.posPts={x1:V.x,x2:G.x,y1:V.y,y2:G.y},se=ke[1]-ue[1],ge=ke[0]-ue[0],Te=Math.sqrt(ge*ge+se*se);Gt(Te)&&Te>=fmt||(Te=Math.sqrt(Math.max(ge*ge,qT)+Math.max(se*se,qT)));var we=A.vector={x:ge,y:se},Me=A.vectorNorm={x:we.x/Te,y:we.y/Te},ve={x:-Me.y,y:Me.x};A.nodesOverlap=!Gt(Te)||U.checkPoint(ue[0],ue[1],0,H,j,G.x,G.y,te,le)||Q.checkPoint(ke[0],ke[1],0,z,W,V.x,V.y,oe,ie),A.vectorNormInverse=ve,M={nodesOverlap:A.nodesOverlap,dirCounts:A.dirCounts,calculatedIntersection:!0,hasBezier:A.hasBezier,hasUnbundled:A.hasUnbundled,eles:A.eles,srcPos:G,srcRs:le,tgtPos:V,tgtRs:ie,srcW:H,srcH:j,tgtW:z,tgtH:W,srcIntn:ce,tgtIntn:ye,srcShape:U,tgtShape:Q,posPts:{x1:J.x2,y1:J.y2,x2:J.x1,y2:J.y1},intersectionPts:{x1:re.x2,y1:re.y2,x2:re.x1,y2:re.y1},vector:{x:-we.x,y:-we.y},vectorNorm:{x:-Me.x,y:-Me.y},vectorNormInverse:{x:-ve.x,y:-ve.y}}}var ne=Oe?M:A;be.nodesOverlap=ne.nodesOverlap,be.srcIntn=ne.srcIntn,be.tgtIntn=ne.tgtIntn,be.isRound=Pe.startsWith("round"),i&&(B.isParent()||B.isChild()||O.isParent()||O.isChild())&&(B.parents().anySame(O)||O.parents().anySame(B)||B.same(O)&&B.isParent())?t.findCompoundLoopPoints(Re,ne,ae,Ge):B===O?t.findLoopPoints(Re,ne,ae,Ge):Pe.endsWith("segments")?t.findSegmentsPoints(Re,ne):Pe.endsWith("taxi")?t.findTaxiPoints(Re,ne):Pe==="straight"||!Ge&&A.eles.length%2===1&&ae===Math.floor(A.eles.length/2)?t.findStraightEdgePoints(Re):t.findBezierPoints(Re,ne,ae,Ge,Oe),t.findEndpoints(Re),t.tryToCorrectInvalidPoints(Re,ne),t.checkForInvalidEdgeWarning(Re),t.storeAllpts(Re),t.storeEdgeProjections(Re),t.calculateArrowAngles(Re),t.recalculateEdgeLabelProjections(Re),t.calculateLabelAngles(Re)}},"_loop"),S=0;S<l.length;S++)w();this.findHaystackPoints(u)}};o(w2e,"getPts");ds.getSegmentPoints=function(e){var t=e[0]._private.rscratch;this.recalculateRenderedStyle(e);var r=t.edgeType;if(r==="segments")return w2e(t.segpts)};ds.getControlPoints=function(e){var t=e[0]._private.rscratch;this.recalculateRenderedStyle(e);var r=t.edgeType;if(r==="bezier"||r==="multibezier"||r==="self"||r==="compound")return w2e(t.ctrlpts)};ds.getEdgeMidpoint=function(e){var t=e[0]._private.rscratch;return this.recalculateRenderedStyle(e),{x:t.midX,y:t.midY}};eC={};eC.manualEndptToPx=function(e,t){var r=this,n=e.position(),i=e.outerWidth(),a=e.outerHeight(),s=e._private.rscratch;if(t.value.length===2){var l=[t.pfValue[0],t.pfValue[1]];return t.units[0]==="%"&&(l[0]=l[0]*i),t.units[1]==="%"&&(l[1]=l[1]*a),l[0]+=n.x,l[1]+=n.y,l}else{var u=t.pfValue[0];u=-Math.PI/2+u;var h=2*Math.max(i,a),d=[n.x+Math.cos(u)*h,n.y+Math.sin(u)*h];return r.nodeShapes[this.getNodeShape(e)].intersectLine(n.x,n.y,i,a,d[0],d[1],0,e.pstyle("corner-radius").value==="auto"?"auto":e.pstyle("corner-radius").pfValue,s)}};eC.findEndpoints=function(e){var t,r,n,i,a=this,s,l=e.source()[0],u=e.target()[0],h=l.position(),d=u.position(),f=e.pstyle("target-arrow-shape").value,p=e.pstyle("source-arrow-shape").value,m=e.pstyle("target-distance-from-node").pfValue,g=e.pstyle("source-distance-from-node").pfValue,y=l._private.rscratch,v=u._private.rscratch,x=e.pstyle("curve-style").value,b=e._private.rscratch,T=b.edgeType,k=Of(x,"taxi"),C=T==="self"||T==="compound",w=T==="bezier"||T==="multibezier"||C,S=T!=="bezier",R=T==="straight"||T==="segments",L=T==="segments",N=w||S||R,I=C||k,_=e.pstyle("source-endpoint"),A=I?"outside-to-node":_.value,M=l.pstyle("corner-radius").value==="auto"?"auto":l.pstyle("corner-radius").pfValue,D=e.pstyle("target-endpoint"),P=I?"outside-to-node":D.value,B=u.pstyle("corner-radius").value==="auto"?"auto":u.pstyle("corner-radius").pfValue;b.srcManEndpt=_,b.tgtManEndpt=D;var O,$,V,G,z=(t=(D==null||(r=D.pfValue)===null||r===void 0?void 0:r.length)===2?D.pfValue:null)!==null&&t!==void 0?t:[0,0],W=(n=(_==null||(i=_.pfValue)===null||i===void 0?void 0:i.length)===2?_.pfValue:null)!==null&&n!==void 0?n:[0,0];if(w){var H=[b.ctrlpts[0],b.ctrlpts[1]],j=S?[b.ctrlpts[b.ctrlpts.length-2],b.ctrlpts[b.ctrlpts.length-1]]:H;O=j,$=H}else if(R){var Q=L?b.segpts.slice(0,2):[d.x+z[0],d.y+z[1]],U=L?b.segpts.slice(b.segpts.length-2):[h.x+W[0],h.y+W[1]];O=U,$=Q}if(P==="inside-to-node")s=[d.x,d.y];else if(D.units)s=this.manualEndptToPx(u,D);else if(P==="outside-to-line")s=b.tgtIntn;else if(P==="outside-to-node"||P==="outside-to-node-or-label"?V=O:(P==="outside-to-line"||P==="outside-to-line-or-label")&&(V=[h.x,h.y]),s=a.nodeShapes[this.getNodeShape(u)].intersectLine(d.x,d.y,u.outerWidth(),u.outerHeight(),V[0],V[1],0,B,v),P==="outside-to-node-or-label"||P==="outside-to-line-or-label"){var oe=u._private.rscratch,te=oe.labelWidth,le=oe.labelHeight,ie=oe.labelX,ae=oe.labelY,Re=te/2,be=le/2,Pe=u.pstyle("text-valign").value;Pe==="top"?ae-=be:Pe==="bottom"&&(ae+=be);var Ge=u.pstyle("text-halign").value;Ge==="left"?ie-=Re:Ge==="right"&&(ie+=Re);var Oe=FT(V[0],V[1],[ie-Re,ae-be,ie+Re,ae-be,ie+Re,ae+be,ie-Re,ae+be],d.x,d.y);if(Oe.length>0){var ue=h,ye=Zm(ue,M1(s)),ke=Zm(ue,M1(Oe)),ce=ye;if(ke<ye&&(s=Oe,ce=ke),Oe.length>2){var re=Zm(ue,{x:Oe[2],y:Oe[3]});re<ce&&(s=[Oe[2],Oe[3]])}}}var J=_5(s,O,a.arrowShapes[f].spacing(e)+m),se=_5(s,O,a.arrowShapes[f].gap(e)+m);if(b.endX=se[0],b.endY=se[1],b.arrowEndX=J[0],b.arrowEndY=J[1],A==="inside-to-node")s=[h.x,h.y];else if(_.units)s=this.manualEndptToPx(l,_);else if(A==="outside-to-line")s=b.srcIntn;else if(A==="outside-to-node"||A==="outside-to-node-or-label"?G=$:(A==="outside-to-line"||A==="outside-to-line-or-label")&&(G=[d.x,d.y]),s=a.nodeShapes[this.getNodeShape(l)].intersectLine(h.x,h.y,l.outerWidth(),l.outerHeight(),G[0],G[1],0,M,y),A==="outside-to-node-or-label"||A==="outside-to-line-or-label"){var ge=l._private.rscratch,Te=ge.labelWidth,we=ge.labelHeight,Me=ge.labelX,ve=ge.labelY,ne=Te/2,q=we/2,he=l.pstyle("text-valign").value;he==="top"?ve-=q:he==="bottom"&&(ve+=q);var X=l.pstyle("text-halign").value;X==="left"?Me-=ne:X==="right"&&(Me+=ne);var fe=FT(G[0],G[1],[Me-ne,ve-q,Me+ne,ve-q,Me+ne,ve+q,Me-ne,ve+q],h.x,h.y);if(fe.length>0){var K=d,qe=Zm(K,M1(s)),_e=Zm(K,M1(fe)),Be=qe;if(_e<qe&&(s=[fe[0],fe[1]],Be=_e),fe.length>2){var Ne=Zm(K,{x:fe[2],y:fe[3]});Ne<Be&&(s=[fe[2],fe[3]])}}}var He=_5(s,$,a.arrowShapes[p].spacing(e)+g),$e=_5(s,$,a.arrowShapes[p].gap(e)+g);b.startX=$e[0],b.startY=$e[1],b.arrowStartX=He[0],b.arrowStartY=He[1],N&&(!Gt(b.startX)||!Gt(b.startY)||!Gt(b.endX)||!Gt(b.endY)?b.badLine=!0:b.badLine=!1)};eC.getSourceEndpoint=function(e){var t=e[0]._private.rscratch;switch(this.recalculateRenderedStyle(e),t.edgeType){case"haystack":return{x:t.haystackPts[0],y:t.haystackPts[1]};default:return{x:t.arrowStartX,y:t.arrowStartY}}};eC.getTargetEndpoint=function(e){var t=e[0]._private.rscratch;switch(this.recalculateRenderedStyle(e),t.edgeType){case"haystack":return{x:t.haystackPts[2],y:t.haystackPts[3]};default:return{x:t.arrowEndX,y:t.arrowEndY}}};$F={};o(pmt,"pushBezierPts");$F.storeEdgeProjections=function(e){var t=e._private,r=t.rscratch,n=r.edgeType;if(t.rstyle.bezierPts=null,t.rstyle.linePts=null,t.rstyle.haystackPts=null,n==="multibezier"||n==="bezier"||n==="self"||n==="compound"){t.rstyle.bezierPts=[];for(var i=0;i+5<r.allpts.length;i+=4)pmt(this,e,r.allpts.slice(i,i+6))}else if(n==="segments")for(var a=t.rstyle.linePts=[],i=0;i+1<r.allpts.length;i+=2)a.push({x:r.allpts[i],y:r.allpts[i+1]});else if(n==="haystack"){var s=r.haystackPts;t.rstyle.haystackPts=[{x:s[0],y:s[1]},{x:s[2],y:s[3]}]}t.rstyle.arrowWidth=this.getArrowWidth(e.pstyle("width").pfValue,e.pstyle("arrow-scale").value)*this.arrowShapeWidth};$F.recalculateEdgeProjections=function(e){this.findEdgeControlPoints(e)};wu={};wu.recalculateNodeLabelProjection=function(e){var t=e.pstyle("label").strValue;if(!Gf(t)){var r,n,i=e._private,a=e.width(),s=e.height(),l=e.padding(),u=e.position(),h=e.pstyle("text-halign").strValue,d=e.pstyle("text-valign").strValue,f=i.rscratch,p=i.rstyle;switch(h){case"left":r=u.x-a/2-l;break;case"right":r=u.x+a/2+l;break;default:r=u.x}switch(d){case"top":n=u.y-s/2-l;break;case"bottom":n=u.y+s/2+l;break;default:n=u.y}f.labelX=r,f.labelY=n,p.labelX=r,p.labelY=n,this.calculateLabelAngles(e),this.applyLabelDimensions(e)}};k2e=o(function(t,r){var n=Math.atan(r/t);return t===0&&n<0&&(n=n*-1),n},"lineAngleFromDelta"),S2e=o(function(t,r){var n=r.x-t.x,i=r.y-t.y;return k2e(n,i)},"lineAngle"),mmt=o(function(t,r,n,i){var a=$T(0,i-.001,1),s=$T(0,i+.001,1),l=O1(t,r,n,a),u=O1(t,r,n,s);return S2e(l,u)},"bezierAngle");wu.recalculateEdgeLabelProjections=function(e){var t,r=e._private,n=r.rscratch,i=this,a={mid:e.pstyle("label").strValue,source:e.pstyle("source-label").strValue,target:e.pstyle("target-label").strValue};if(a.mid||a.source||a.target){t={x:n.midX,y:n.midY};var s=o(function(f,p,m){Mh(r.rscratch,f,p,m),Mh(r.rstyle,f,p,m)},"setRs");s("labelX",null,t.x),s("labelY",null,t.y);var l=k2e(n.midDispX,n.midDispY);s("labelAutoAngle",null,l);var u=o(function(){if(u.cache)return u.cache;for(var f=[],p=0;p+5<n.allpts.length;p+=4){var m={x:n.allpts[p],y:n.allpts[p+1]},g={x:n.allpts[p+2],y:n.allpts[p+3]},y={x:n.allpts[p+4],y:n.allpts[p+5]};f.push({p0:m,p1:g,p2:y,startDist:0,length:0,segments:[]})}var v=r.rstyle.bezierPts,x=i.bezierProjPcts.length;function b(S,R,L,N,I){var _=ng(R,L),A=S.segments[S.segments.length-1],M={p0:R,p1:L,t0:N,t1:I,startDist:A?A.startDist+A.length:0,length:_};S.segments.push(M),S.length+=_}o(b,"addSegment");for(var T=0;T<f.length;T++){var k=f[T],C=f[T-1];C&&(k.startDist=C.startDist+C.length),b(k,k.p0,v[T*x],0,i.bezierProjPcts[0]);for(var w=0;w<x-1;w++)b(k,v[T*x+w],v[T*x+w+1],i.bezierProjPcts[w],i.bezierProjPcts[w+1]);b(k,v[T*x+x-1],k.p2,i.bezierProjPcts[x-1],1)}return u.cache=f},"createControlPointInfo"),h=o(function(f){var p,m=f==="source";if(a[f]){var g=e.pstyle(f+"-text-offset").pfValue;switch(n.edgeType){case"self":case"compound":case"bezier":case"multibezier":{for(var y=u(),v,x=0,b=0,T=0;T<y.length;T++){for(var k=y[m?T:y.length-1-T],C=0;C<k.segments.length;C++){var w=k.segments[m?C:k.segments.length-1-C],S=T===y.length-1&&C===k.segments.length-1;if(x=b,b+=w.length,b>=g||S){v={cp:k,segment:w};break}}if(v)break}var R=v.cp,L=v.segment,N=(g-x)/L.length,I=L.t1-L.t0,_=m?L.t0+I*N:L.t1-I*N;_=$T(0,_,1),t=O1(R.p0,R.p1,R.p2,_),p=mmt(R.p0,R.p1,R.p2,_);break}case"straight":case"segments":case"haystack":{for(var A=0,M,D,P,B,O=n.allpts.length,$=0;$+3<O&&(m?(P={x:n.allpts[$],y:n.allpts[$+1]},B={x:n.allpts[$+2],y:n.allpts[$+3]}):(P={x:n.allpts[O-2-$],y:n.allpts[O-1-$]},B={x:n.allpts[O-4-$],y:n.allpts[O-3-$]}),M=ng(P,B),D=A,A+=M,!(A>=g));$+=2);var V=g-D,G=V/M;G=$T(0,G,1),t=Bht(P,B,G),p=S2e(P,B);break}}s("labelX",f,t.x),s("labelY",f,t.y),s("labelAutoAngle",f,p)}},"calculateEndProjection");h("source"),h("target"),this.applyLabelDimensions(e)}};wu.applyLabelDimensions=function(e){this.applyPrefixedLabelDimensions(e),e.isEdge()&&(this.applyPrefixedLabelDimensions(e,"source"),this.applyPrefixedLabelDimensions(e,"target"))};wu.applyPrefixedLabelDimensions=function(e,t){var r=e._private,n=this.getLabelText(e,t),i=rg(n,e._private.labelDimsKey);if(mo(r.rscratch,"prefixedLabelDimsKey",t)!==i){Mh(r.rscratch,"prefixedLabelDimsKey",t,i);var a=this.calculateLabelDimensions(e,n),s=e.pstyle("line-height").pfValue,l=e.pstyle("text-wrap").strValue,u=mo(r.rscratch,"labelWrapCachedLines",t)||[],h=l!=="wrap"?1:Math.max(u.length,1),d=a.height/h,f=d*s,p=a.width,m=a.height+(h-1)*(s-1)*d;Mh(r.rstyle,"labelWidth",t,p),Mh(r.rscratch,"labelWidth",t,p),Mh(r.rstyle,"labelHeight",t,m),Mh(r.rscratch,"labelHeight",t,m),Mh(r.rscratch,"labelLineHeight",t,f)}};wu.getLabelText=function(e,t){var r=e._private,n=t?t+"-":"",i=e.pstyle(n+"label").strValue,a=e.pstyle("text-transform").value,s=o(function(W,H){return H?(Mh(r.rscratch,W,t,H),H):mo(r.rscratch,W,t)},"rscratch");if(!i)return"";a=="none"||(a=="uppercase"?i=i.toUpperCase():a=="lowercase"&&(i=i.toLowerCase()));var l=e.pstyle("text-wrap").value;if(l==="wrap"){var u=s("labelKey");if(u!=null&&s("labelWrapKey")===u)return s("labelWrapCachedText");for(var h="\u200B",d=i.split(`
+`),f=e.pstyle("text-max-width").pfValue,p=e.pstyle("text-overflow-wrap").value,m=p==="anywhere",g=[],y=/[\s\u200b]+|$/g,v=0;v<d.length;v++){var x=d[v],b=this.calculateLabelDimensions(e,x),T=b.width;if(m){var k=x.split("").join(h);x=k}if(T>f){var C=x.matchAll(y),w="",S=0,R=yo(C),L;try{for(R.s();!(L=R.n()).done;){var N=L.value,I=N[0],_=x.substring(S,N.index);S=N.index+I.length;var A=w.length===0?_:w+_+I,M=this.calculateLabelDimensions(e,A),D=M.width;D<=f?w+=_+I:(w&&g.push(w),w=_+I)}}catch(z){R.e(z)}finally{R.f()}w.match(/^[\s\u200b]+$/)||g.push(w)}else g.push(x)}s("labelWrapCachedLines",g),i=s("labelWrapCachedText",g.join(`
+`)),s("labelWrapKey",u)}else if(l==="ellipsis"){var P=e.pstyle("text-max-width").pfValue,B="",O="\u2026",$=!1;if(this.calculateLabelDimensions(e,i).width<P)return i;for(var V=0;V<i.length;V++){var G=this.calculateLabelDimensions(e,B+i[V]+O).width;if(G>P)break;B+=i[V],V===i.length-1&&($=!0)}return $||(B+=O),B}return i};wu.getLabelJustification=function(e){var t=e.pstyle("text-justification").strValue,r=e.pstyle("text-halign").strValue;if(t==="auto")if(e.isNode())switch(r){case"left":return"right";case"right":return"left";default:return"center"}else return"center";else return t};wu.calculateLabelDimensions=function(e,t){var r=this,n=r.cy.window(),i=n.document,a=0,s=e.pstyle("font-style").strValue,l=e.pstyle("font-size").pfValue,u=e.pstyle("font-family").strValue,h=e.pstyle("font-weight").strValue,d=this.labelCalcCanvas,f=this.labelCalcCanvasContext;if(!d){d=this.labelCalcCanvas=i.createElement("canvas"),f=this.labelCalcCanvasContext=d.getContext("2d");var p=d.style;p.position="absolute",p.left="-9999px",p.top="-9999px",p.zIndex="-1",p.visibility="hidden",p.pointerEvents="none"}f.font="".concat(s," ").concat(h," ").concat(l,"px ").concat(u);for(var m=0,g=0,y=t.split(`
+`),v=0;v<y.length;v++){var x=y[v],b=f.measureText(x),T=Math.ceil(b.width),k=l;m=Math.max(T,m),g+=k}return m+=a,g+=a,{width:m,height:g}};wu.calculateLabelAngle=function(e,t){var r=e._private,n=r.rscratch,i=e.isEdge(),a=t?t+"-":"",s=e.pstyle(a+"text-rotation"),l=s.strValue;return l==="none"?0:i&&l==="autorotate"?n.labelAutoAngle:l==="autorotate"?0:s.pfValue};wu.calculateLabelAngles=function(e){var t=this,r=e.isEdge(),n=e._private,i=n.rscratch;i.labelAngle=t.calculateLabelAngle(e),r&&(i.sourceLabelAngle=t.calculateLabelAngle(e,"source"),i.targetLabelAngle=t.calculateLabelAngle(e,"target"))};E2e={},zxe=28,Gxe=!1;E2e.getNodeShape=function(e){var t=this,r=e.pstyle("shape").value;if(r==="cutrectangle"&&(e.width()<zxe||e.height()<zxe))return Gxe||(In("The `cutrectangle` node shape can not be used at small sizes so `rectangle` is used instead"),Gxe=!0),"rectangle";if(e.isParent())return r==="rectangle"||r==="roundrectangle"||r==="round-rectangle"||r==="cutrectangle"||r==="cut-rectangle"||r==="barrel"?r:"rectangle";if(r==="polygon"){var n=e.pstyle("shape-polygon-points").value;return t.nodeShapes.makePolygon(n).name}return r};EA={};EA.registerCalculationListeners=function(){var e=this.cy,t=e.collection(),r=this,n=o(function(s){var l=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!0;if(t.merge(s),l)for(var u=0;u<s.length;u++){var h=s[u],d=h._private,f=d.rstyle;f.clean=!1,f.cleanConnected=!1}},"enqueue");r.binder(e).on("bounds.* dirty.*",o(function(s){var l=s.target;n(l)},"onDirtyBounds")).on("style.* background.*",o(function(s){var l=s.target;n(l,!1)},"onDirtyStyle"));var i=o(function(s){if(s){var l=r.onUpdateEleCalcsFns;t.cleanStyle();for(var u=0;u<t.length;u++){var h=t[u],d=h._private.rstyle;h.isNode()&&!d.cleanConnected&&(n(h.connectedEdges()),d.cleanConnected=!0)}if(l)for(var f=0;f<l.length;f++){var p=l[f];p(s,t)}r.recalculateRenderedStyle(t),t=e.collection()}},"updateEleCalcs");r.flushRenderedStyleQueue=function(){i(!0)},r.beforeRender(i,r.beforeRenderPriorities.eleCalcs)};EA.onUpdateEleCalcs=function(e){var t=this.onUpdateEleCalcsFns=this.onUpdateEleCalcsFns||[];t.push(e)};EA.recalculateRenderedStyle=function(e,t){var r=o(function(k){return k._private.rstyle.cleanConnected},"isCleanConnected");if(e.length!==0){var n=[],i=[];if(!this.destroyed){t===void 0&&(t=!0);for(var a=0;a<e.length;a++){var s=e[a],l=s._private,u=l.rstyle;s.isEdge()&&(!r(s.source())||!r(s.target()))&&(u.clean=!1),s.isEdge()&&s.isBundledBezier()&&s.parallelEdges().some(function(T){return!T._private.rstyle.clean&&T.isBundledBezier()})&&(u.clean=!1),!(t&&u.clean||s.removed())&&s.pstyle("display").value!=="none"&&(l.group==="nodes"?i.push(s):n.push(s),u.clean=!0)}for(var h=0;h<i.length;h++){var d=i[h],f=d._private,p=f.rstyle,m=d.position();this.recalculateNodeLabelProjection(d),p.nodeX=m.x,p.nodeY=m.y,p.nodeW=d.pstyle("width").pfValue,p.nodeH=d.pstyle("height").pfValue}this.recalculateEdgeProjections(n);for(var g=0;g<n.length;g++){var y=n[g],v=y._private,x=v.rstyle,b=v.rscratch;x.srcX=b.arrowStartX,x.srcY=b.arrowStartY,x.tgtX=b.arrowEndX,x.tgtY=b.arrowEndY,x.midX=b.midX,x.midY=b.midY,x.labelAngle=b.labelAngle,x.sourceLabelAngle=b.sourceLabelAngle,x.targetLabelAngle=b.targetLabelAngle}}}};AA={};AA.updateCachedGrabbedEles=function(){var e=this.cachedZSortedEles;if(e){e.drag=[],e.nondrag=[];for(var t=[],r=0;r<e.length;r++){var n=e[r],i=n._private.rscratch;n.grabbed()&&!n.isParent()?t.push(n):i.inDragLayer?e.drag.push(n):e.nondrag.push(n)}for(var r=0;r<t.length;r++){var n=t[r];e.drag.push(n)}}};AA.invalidateCachedZSortedEles=function(){this.cachedZSortedEles=null};AA.getCachedZSortedEles=function(e){if(e||!this.cachedZSortedEles){var t=this.cy.mutableElements().toArray();t.sort(o2e),t.interactive=t.filter(function(r){return r.interactive()}),this.cachedZSortedEles=t,this.updateCachedGrabbedEles()}else t=this.cachedZSortedEles;return t};A2e={};[og,sA,ds,eC,$F,wu,E2e,EA,AA].forEach(function(e){br(A2e,e)});R2e={};R2e.getCachedImage=function(e,t,r){var n=this,i=n.imageCache=n.imageCache||{},a=i[e];if(a)return a.image.complete||a.image.addEventListener("load",r),a.image;a=i[e]=i[e]||{};var s=a.image=new Image;s.addEventListener("load",r),s.addEventListener("error",function(){s.error=!0});var l="data:",u=e.substring(0,l.length).toLowerCase()===l;return u||(t=t==="null"?null:t,s.crossOrigin=t),s.src=e,s};_2e=o(function(t,r){var n=t[0];!n||n._private.grabbed===r||(n._private.grabbed=r,t.updateStyle(!1))},"setGrabState"),gmt=o(function(t){_2e(t,!0)},"setGrabbed"),ymt=o(function(t){_2e(t,!1)},"setFreed"),Y1={};Y1.registerBinding=function(e,t,r,n){var i=Array.prototype.slice.apply(arguments,[1]);if(Array.isArray(e)){for(var a=[],s=0;s<e.length;s++){var l=e[s];if(l!==void 0){var u=this.binder(l);a.push(u.on.apply(u,i))}}return a}var u=this.binder(e);return u.on.apply(u,i)};Y1.binder=function(e){var t=this,r=t.cy.window(),n=e===r||e===r.document||e===r.document.body||Aut(e);if(t.supportsPassiveEvents==null){var i=!1;try{var a=Object.defineProperty({},"passive",{get:o(function(){return i=!0,!0},"get")});r.addEventListener("test",null,a)}catch{}t.supportsPassiveEvents=i}var s=o(function(u,h,d){var f=Array.prototype.slice.call(arguments);return n&&t.supportsPassiveEvents&&(f[2]={capture:d??!1,passive:!1,once:!1}),t.bindings.push({target:e,args:f}),(e.addEventListener||e.on).apply(e,f),this},"on");return{on:s,addEventListener:s,addListener:s,bind:s}};Y1.nodeIsDraggable=function(e){return e&&e.isNode()&&!e.locked()&&e.grabbable()};Y1.nodeIsGrabbable=function(e){return this.nodeIsDraggable(e)&&e.interactive()};Y1.load=function(){var e=this,t=e.cy.window(),r=o(function(q){return q.selected()},"isSelected"),n=o(function(q){var he=q.getRootNode();if(he&&he.nodeType===11&&he.host!==void 0)return he},"getShadowRoot"),i=o(function(q,he,X,fe){q==null&&(q=e.cy);for(var K=0;K<he.length;K++){var qe=he[K];q.emit({originalEvent:X,type:qe,position:fe})}},"triggerEvents"),a=o(function(q){return q.shiftKey||q.metaKey||q.ctrlKey},"isMultSelKeyDown"),s=o(function(q,he){var X=!0;if(e.cy.hasCompoundNodes()&&q&&q.pannable())for(var fe=0;he&&fe<he.length;fe++){var q=he[fe];if(q.isNode()&&q.isParent()&&!q.pannable()){X=!1;break}}else X=!0;return X},"allowPanningPassthrough"),l=o(function(q){q[0]._private.rscratch.inDragLayer=!0},"setInDragLayer"),u=o(function(q){q[0]._private.rscratch.inDragLayer=!1},"setOutDragLayer"),h=o(function(q){q[0]._private.rscratch.isGrabTarget=!0},"setGrabTarget"),d=o(function(q){q[0]._private.rscratch.isGrabTarget=!1},"removeGrabTarget"),f=o(function(q,he){var X=he.addToList,fe=X.has(q);!fe&&q.grabbable()&&!q.locked()&&(X.merge(q),gmt(q))},"addToDragList"),p=o(function(q,he){if(q.cy().hasCompoundNodes()&&!(he.inDragLayer==null&&he.addToList==null)){var X=q.descendants();he.inDragLayer&&(X.forEach(l),X.connectedEdges().forEach(l)),he.addToList&&f(X,he)}},"addDescendantsToDrag"),m=o(function(q,he){he=he||{};var X=q.cy().hasCompoundNodes();he.inDragLayer&&(q.forEach(l),q.neighborhood().stdFilter(function(fe){return!X||fe.isEdge()}).forEach(l)),he.addToList&&q.forEach(function(fe){f(fe,he)}),p(q,he),v(q,{inDragLayer:he.inDragLayer}),e.updateCachedGrabbedEles()},"addNodesToDrag"),g=m,y=o(function(q){q&&(e.getCachedZSortedEles().forEach(function(he){ymt(he),u(he),d(he)}),e.updateCachedGrabbedEles())},"freeDraggedElements"),v=o(function(q,he){if(!(he.inDragLayer==null&&he.addToList==null)&&q.cy().hasCompoundNodes()){var X=q.ancestors().orphans();if(!X.same(q)){var fe=X.descendants().spawnSelf().merge(X).unmerge(q).unmerge(q.descendants()),K=fe.connectedEdges();he.inDragLayer&&(K.forEach(l),fe.forEach(l)),he.addToList&&fe.forEach(function(qe){f(qe,he)})}}},"updateAncestorsInDragLayer"),x=o(function(){document.activeElement!=null&&document.activeElement.blur!=null&&document.activeElement.blur()},"blurActiveDomElement"),b=typeof MutationObserver<"u",T=typeof ResizeObserver<"u";b?(e.removeObserver=new MutationObserver(function(ne){for(var q=0;q<ne.length;q++){var he=ne[q],X=he.removedNodes;if(X)for(var fe=0;fe<X.length;fe++){var K=X[fe];if(K===e.container){e.destroy();break}}}}),e.container.parentNode&&e.removeObserver.observe(e.container.parentNode,{childList:!0})):e.registerBinding(e.container,"DOMNodeRemoved",function(ne){e.destroy()});var k=KT(function(){e.cy.resize()},100);b&&(e.styleObserver=new MutationObserver(k),e.styleObserver.observe(e.container,{attributes:!0})),e.registerBinding(t,"resize",k),T&&(e.resizeObserver=new ResizeObserver(k),e.resizeObserver.observe(e.container));var C=o(function(q,he){for(;q!=null;)he(q),q=q.parentNode},"forEachUp"),w=o(function(){e.invalidateContainerClientCoordsCache()},"invalidateCoords");C(e.container,function(ne){e.registerBinding(ne,"transitionend",w),e.registerBinding(ne,"animationend",w),e.registerBinding(ne,"scroll",w)}),e.registerBinding(e.container,"contextmenu",function(ne){ne.preventDefault()});var S=o(function(){return e.selection[4]!==0},"inBoxSelection"),R=o(function(q){for(var he=e.findContainerClientCoords(),X=he[0],fe=he[1],K=he[2],qe=he[3],_e=q.touches?q.touches:[q],Be=!1,Ne=0;Ne<_e.length;Ne++){var He=_e[Ne];if(X<=He.clientX&&He.clientX<=X+K&&fe<=He.clientY&&He.clientY<=fe+qe){Be=!0;break}}if(!Be)return!1;for(var $e=e.container,Xe=q.target,Fe=Xe.parentNode,Ke=!1;Fe;){if(Fe===$e){Ke=!0;break}Fe=Fe.parentNode}return!!Ke},"eventInContainer");e.registerBinding(e.container,"mousedown",o(function(q){if(R(q)&&!(e.hoverData.which===1&&q.which!==1)){q.preventDefault(),x(),e.hoverData.capture=!0,e.hoverData.which=q.which;var he=e.cy,X=[q.clientX,q.clientY],fe=e.projectIntoViewport(X[0],X[1]),K=e.selection,qe=e.findNearestElements(fe[0],fe[1],!0,!1),_e=qe[0],Be=e.dragData.possibleDragElements;e.hoverData.mdownPos=fe,e.hoverData.mdownGPos=X;var Ne=o(function(xe){return{originalEvent:q,type:xe,position:{x:fe[0],y:fe[1]}}},"makeEvent"),He=o(function(){e.hoverData.tapholdCancelled=!1,clearTimeout(e.hoverData.tapholdTimeout),e.hoverData.tapholdTimeout=setTimeout(function(){if(!e.hoverData.tapholdCancelled){var xe=e.hoverData.down;xe?xe.emit(Ne("taphold")):he.emit(Ne("taphold"))}},e.tapholdDuration)},"checkForTaphold");if(q.which==3){e.hoverData.cxtStarted=!0;var $e={originalEvent:q,type:"cxttapstart",position:{x:fe[0],y:fe[1]}};_e?(_e.activate(),_e.emit($e),e.hoverData.down=_e):he.emit($e),e.hoverData.downTime=new Date().getTime(),e.hoverData.cxtDragged=!1}else if(q.which==1){_e&&_e.activate();{if(_e!=null&&e.nodeIsGrabbable(_e)){var Xe=o(function(xe){xe.emit(Ne("grab"))},"triggerGrab");if(h(_e),!_e.selected())Be=e.dragData.possibleDragElements=he.collection(),g(_e,{addToList:Be}),_e.emit(Ne("grabon")).emit(Ne("grab"));else{Be=e.dragData.possibleDragElements=he.collection();var Fe=he.$(function(Ke){return Ke.isNode()&&Ke.selected()&&e.nodeIsGrabbable(Ke)});m(Fe,{addToList:Be}),_e.emit(Ne("grabon")),Fe.forEach(Xe)}e.redrawHint("eles",!0),e.redrawHint("drag",!0)}e.hoverData.down=_e,e.hoverData.downs=qe,e.hoverData.downTime=new Date().getTime()}i(_e,["mousedown","tapstart","vmousedown"],q,{x:fe[0],y:fe[1]}),_e==null?(K[4]=1,e.data.bgActivePosistion={x:fe[0],y:fe[1]},e.redrawHint("select",!0),e.redraw()):_e.pannable()&&(K[4]=1),He()}K[0]=K[2]=fe[0],K[1]=K[3]=fe[1]}},"mousedownHandler"),!1);var L=n(e.container);e.registerBinding([t,L],"mousemove",o(function(q){var he=e.hoverData.capture;if(!(!he&&!R(q))){var X=!1,fe=e.cy,K=fe.zoom(),qe=[q.clientX,q.clientY],_e=e.projectIntoViewport(qe[0],qe[1]),Be=e.hoverData.mdownPos,Ne=e.hoverData.mdownGPos,He=e.selection,$e=null;!e.hoverData.draggingEles&&!e.hoverData.dragging&&!e.hoverData.selecting&&($e=e.findNearestElement(_e[0],_e[1],!0,!1));var Xe=e.hoverData.last,Fe=e.hoverData.down,Ke=[_e[0]-He[2],_e[1]-He[3]],xe=e.dragData.possibleDragElements,mt;if(Ne){var Le=qe[0]-Ne[0],ft=Le*Le,wt=qe[1]-Ne[1],zt=wt*wt,St=ft+zt;e.hoverData.isOverThresholdDrag=mt=St>=e.desktopTapThreshold2}var At=a(q);mt&&(e.hoverData.tapholdCancelled=!0);var bt=o(function(){var qt=e.hoverData.dragDelta=e.hoverData.dragDelta||[];qt.length===0?(qt.push(Ke[0]),qt.push(Ke[1])):(qt[0]+=Ke[0],qt[1]+=Ke[1])},"updateDragDelta");X=!0,i($e,["mousemove","vmousemove","tapdrag"],q,{x:_e[0],y:_e[1]});var me=o(function(qt){return{originalEvent:q,type:qt,position:{x:_e[0],y:_e[1]}}},"makeEvent"),lt=o(function(){e.data.bgActivePosistion=void 0,e.hoverData.selecting||fe.emit(me("boxstart")),He[4]=1,e.hoverData.selecting=!0,e.redrawHint("select",!0),e.redraw()},"goIntoBoxMode");if(e.hoverData.which===3){if(mt){var gt=me("cxtdrag");Fe?Fe.emit(gt):fe.emit(gt),e.hoverData.cxtDragged=!0,(!e.hoverData.cxtOver||$e!==e.hoverData.cxtOver)&&(e.hoverData.cxtOver&&e.hoverData.cxtOver.emit(me("cxtdragout")),e.hoverData.cxtOver=$e,$e&&$e.emit(me("cxtdragover")))}}else if(e.hoverData.dragging){if(X=!0,fe.panningEnabled()&&fe.userPanningEnabled()){var Ze;if(e.hoverData.justStartedPan){var Ee=e.hoverData.mdownPos;Ze={x:(_e[0]-Ee[0])*K,y:(_e[1]-Ee[1])*K},e.hoverData.justStartedPan=!1}else Ze={x:Ke[0]*K,y:Ke[1]*K};fe.panBy(Ze),fe.emit(me("dragpan")),e.hoverData.dragged=!0}_e=e.projectIntoViewport(q.clientX,q.clientY)}else if(He[4]==1&&(Fe==null||Fe.pannable())){if(mt){if(!e.hoverData.dragging&&fe.boxSelectionEnabled()&&(At||!fe.panningEnabled()||!fe.userPanningEnabled()))lt();else if(!e.hoverData.selecting&&fe.panningEnabled()&&fe.userPanningEnabled()){var tt=s(Fe,e.hoverData.downs);tt&&(e.hoverData.dragging=!0,e.hoverData.justStartedPan=!0,He[4]=0,e.data.bgActivePosistion=M1(Be),e.redrawHint("select",!0),e.redraw())}Fe&&Fe.pannable()&&Fe.active()&&Fe.unactivate()}}else{if(Fe&&Fe.pannable()&&Fe.active()&&Fe.unactivate(),(!Fe||!Fe.grabbed())&&$e!=Xe&&(Xe&&i(Xe,["mouseout","tapdragout"],q,{x:_e[0],y:_e[1]}),$e&&i($e,["mouseover","tapdragover"],q,{x:_e[0],y:_e[1]}),e.hoverData.last=$e),Fe)if(mt){if(fe.boxSelectionEnabled()&&At)Fe&&Fe.grabbed()&&(y(xe),Fe.emit(me("freeon")),xe.emit(me("free")),e.dragData.didDrag&&(Fe.emit(me("dragfreeon")),xe.emit(me("dragfree")))),lt();else if(Fe&&Fe.grabbed()&&e.nodeIsDraggable(Fe)){var at=!e.dragData.didDrag;at&&e.redrawHint("eles",!0),e.dragData.didDrag=!0,e.hoverData.draggingEles||m(xe,{inDragLayer:!0});var ot={x:0,y:0};if(Gt(Ke[0])&&Gt(Ke[1])&&(ot.x+=Ke[0],ot.y+=Ke[1],at)){var Wt=e.hoverData.dragDelta;Wt&&Gt(Wt[0])&&Gt(Wt[1])&&(ot.x+=Wt[0],ot.y+=Wt[1])}e.hoverData.draggingEles=!0,xe.silentShift(ot).emit(me("position")).emit(me("drag")),e.redrawHint("drag",!0),e.redraw()}}else bt();X=!0}if(He[2]=_e[0],He[3]=_e[1],X)return q.stopPropagation&&q.stopPropagation(),q.preventDefault&&q.preventDefault(),!1}},"mousemoveHandler"),!1);var N,I,_;e.registerBinding(t,"mouseup",o(function(q){if(!(e.hoverData.which===1&&q.which!==1&&e.hoverData.capture)){var he=e.hoverData.capture;if(he){e.hoverData.capture=!1;var X=e.cy,fe=e.projectIntoViewport(q.clientX,q.clientY),K=e.selection,qe=e.findNearestElement(fe[0],fe[1],!0,!1),_e=e.dragData.possibleDragElements,Be=e.hoverData.down,Ne=a(q);e.data.bgActivePosistion&&(e.redrawHint("select",!0),e.redraw()),e.hoverData.tapholdCancelled=!0,e.data.bgActivePosistion=void 0,Be&&Be.unactivate();var He=o(function(Le){return{originalEvent:q,type:Le,position:{x:fe[0],y:fe[1]}}},"makeEvent");if(e.hoverData.which===3){var $e=He("cxttapend");if(Be?Be.emit($e):X.emit($e),!e.hoverData.cxtDragged){var Xe=He("cxttap");Be?Be.emit(Xe):X.emit(Xe)}e.hoverData.cxtDragged=!1,e.hoverData.which=null}else if(e.hoverData.which===1){if(i(qe,["mouseup","tapend","vmouseup"],q,{x:fe[0],y:fe[1]}),!e.dragData.didDrag&&!e.hoverData.dragged&&!e.hoverData.selecting&&!e.hoverData.isOverThresholdDrag&&(i(Be,["click","tap","vclick"],q,{x:fe[0],y:fe[1]}),I=!1,q.timeStamp-_<=X.multiClickDebounceTime()?(N&&clearTimeout(N),I=!0,_=null,i(Be,["dblclick","dbltap","vdblclick"],q,{x:fe[0],y:fe[1]})):(N=setTimeout(function(){I||i(Be,["oneclick","onetap","voneclick"],q,{x:fe[0],y:fe[1]})},X.multiClickDebounceTime()),_=q.timeStamp)),Be==null&&!e.dragData.didDrag&&!e.hoverData.selecting&&!e.hoverData.dragged&&!a(q)&&(X.$(r).unselect(["tapunselect"]),_e.length>0&&e.redrawHint("eles",!0),e.dragData.possibleDragElements=_e=X.collection()),qe==Be&&!e.dragData.didDrag&&!e.hoverData.selecting&&qe!=null&&qe._private.selectable&&(e.hoverData.dragging||(X.selectionType()==="additive"||Ne?qe.selected()?qe.unselect(["tapunselect"]):qe.select(["tapselect"]):Ne||(X.$(r).unmerge(qe).unselect(["tapunselect"]),qe.select(["tapselect"]))),e.redrawHint("eles",!0)),e.hoverData.selecting){var Fe=X.collection(e.getAllInBox(K[0],K[1],K[2],K[3]));e.redrawHint("select",!0),Fe.length>0&&e.redrawHint("eles",!0),X.emit(He("boxend"));var Ke=o(function(Le){return Le.selectable()&&!Le.selected()},"eleWouldBeSelected");X.selectionType()==="additive"||Ne||X.$(r).unmerge(Fe).unselect(),Fe.emit(He("box")).stdFilter(Ke).select().emit(He("boxselect")),e.redraw()}if(e.hoverData.dragging&&(e.hoverData.dragging=!1,e.redrawHint("select",!0),e.redrawHint("eles",!0),e.redraw()),!K[4]){e.redrawHint("drag",!0),e.redrawHint("eles",!0);var xe=Be&&Be.grabbed();y(_e),xe&&(Be.emit(He("freeon")),_e.emit(He("free")),e.dragData.didDrag&&(Be.emit(He("dragfreeon")),_e.emit(He("dragfree"))))}}K[4]=0,e.hoverData.down=null,e.hoverData.cxtStarted=!1,e.hoverData.draggingEles=!1,e.hoverData.selecting=!1,e.hoverData.isOverThresholdDrag=!1,e.dragData.didDrag=!1,e.hoverData.dragged=!1,e.hoverData.dragDelta=[],e.hoverData.mdownPos=null,e.hoverData.mdownGPos=null,e.hoverData.which=null}}},"mouseupHandler"),!1);var A=[],M=4,D,P=1e5,B=o(function(q,he){for(var X=0;X<q.length;X++)if(q[X]%he!==0)return!1;return!0},"allAreDivisibleBy"),O=o(function(q){for(var he=Math.abs(q[0]),X=1;X<q.length;X++)if(Math.abs(q[X])!==he)return!1;return!0},"allAreSameMagnitude"),$=o(function(q){var he=!1,X=q.deltaY;if(X==null&&(q.wheelDeltaY!=null?X=q.wheelDeltaY/4:q.wheelDelta!=null&&(X=q.wheelDelta/4)),X!==0){if(D==null)if(A.length>=M){var fe=A;if(D=B(fe,5),!D){var K=Math.abs(fe[0]);D=O(fe)&&K>5}if(D)for(var qe=0;qe<fe.length;qe++)P=Math.min(Math.abs(fe[qe]),P)}else A.push(X),he=!0;else D&&(P=Math.min(Math.abs(X),P));if(!e.scrollingPage){var _e=e.cy,Be=_e.zoom(),Ne=_e.pan(),He=e.projectIntoViewport(q.clientX,q.clientY),$e=[He[0]*Be+Ne.x,He[1]*Be+Ne.y];if(e.hoverData.draggingEles||e.hoverData.dragging||e.hoverData.cxtStarted||S()){q.preventDefault();return}if(_e.panningEnabled()&&_e.userPanningEnabled()&&_e.zoomingEnabled()&&_e.userZoomingEnabled()){q.preventDefault(),e.data.wheelZooming=!0,clearTimeout(e.data.wheelTimeout),e.data.wheelTimeout=setTimeout(function(){e.data.wheelZooming=!1,e.redrawHint("eles",!0),e.redraw()},150);var Xe;he&&Math.abs(X)>5&&(X=kF(X)*5),Xe=X/-250,D&&(Xe/=P,Xe*=3),Xe=Xe*e.wheelSensitivity;var Fe=q.deltaMode===1;Fe&&(Xe*=33);var Ke=_e.zoom()*Math.pow(10,Xe);q.type==="gesturechange"&&(Ke=e.gestureStartZoom*q.scale),_e.zoom({level:Ke,renderedPosition:{x:$e[0],y:$e[1]}}),_e.emit({type:q.type==="gesturechange"?"pinchzoom":"scrollzoom",originalEvent:q,position:{x:He[0],y:He[1]}})}}}},"wheelHandler");e.registerBinding(e.container,"wheel",$,!0),e.registerBinding(t,"scroll",o(function(q){e.scrollingPage=!0,clearTimeout(e.scrollingPageTimeout),e.scrollingPageTimeout=setTimeout(function(){e.scrollingPage=!1},250)},"scrollHandler"),!0),e.registerBinding(e.container,"gesturestart",o(function(q){e.gestureStartZoom=e.cy.zoom(),e.hasTouchStarted||q.preventDefault()},"gestureStartHandler"),!0),e.registerBinding(e.container,"gesturechange",function(ne){e.hasTouchStarted||$(ne)},!0),e.registerBinding(e.container,"mouseout",o(function(q){var he=e.projectIntoViewport(q.clientX,q.clientY);e.cy.emit({originalEvent:q,type:"mouseout",position:{x:he[0],y:he[1]}})},"mouseOutHandler"),!1),e.registerBinding(e.container,"mouseover",o(function(q){var he=e.projectIntoViewport(q.clientX,q.clientY);e.cy.emit({originalEvent:q,type:"mouseover",position:{x:he[0],y:he[1]}})},"mouseOverHandler"),!1);var V,G,z,W,H,j,Q,U,oe,te,le,ie,ae,Re=o(function(q,he,X,fe){return Math.sqrt((X-q)*(X-q)+(fe-he)*(fe-he))},"distance"),be=o(function(q,he,X,fe){return(X-q)*(X-q)+(fe-he)*(fe-he)},"distanceSq"),Pe;e.registerBinding(e.container,"touchstart",Pe=o(function(q){if(e.hasTouchStarted=!0,!!R(q)){x(),e.touchData.capture=!0,e.data.bgActivePosistion=void 0;var he=e.cy,X=e.touchData.now,fe=e.touchData.earlier;if(q.touches[0]){var K=e.projectIntoViewport(q.touches[0].clientX,q.touches[0].clientY);X[0]=K[0],X[1]=K[1]}if(q.touches[1]){var K=e.projectIntoViewport(q.touches[1].clientX,q.touches[1].clientY);X[2]=K[0],X[3]=K[1]}if(q.touches[2]){var K=e.projectIntoViewport(q.touches[2].clientX,q.touches[2].clientY);X[4]=K[0],X[5]=K[1]}var qe=o(function(At){return{originalEvent:q,type:At,position:{x:X[0],y:X[1]}}},"makeEvent");if(q.touches[1]){e.touchData.singleTouchMoved=!0,y(e.dragData.touchDragEles);var _e=e.findContainerClientCoords();oe=_e[0],te=_e[1],le=_e[2],ie=_e[3],V=q.touches[0].clientX-oe,G=q.touches[0].clientY-te,z=q.touches[1].clientX-oe,W=q.touches[1].clientY-te,ae=0<=V&&V<=le&&0<=z&&z<=le&&0<=G&&G<=ie&&0<=W&&W<=ie;var Be=he.pan(),Ne=he.zoom();H=Re(V,G,z,W),j=be(V,G,z,W),Q=[(V+z)/2,(G+W)/2],U=[(Q[0]-Be.x)/Ne,(Q[1]-Be.y)/Ne];var He=200,$e=He*He;if(j<$e&&!q.touches[2]){var Xe=e.findNearestElement(X[0],X[1],!0,!0),Fe=e.findNearestElement(X[2],X[3],!0,!0);Xe&&Xe.isNode()?(Xe.activate().emit(qe("cxttapstart")),e.touchData.start=Xe):Fe&&Fe.isNode()?(Fe.activate().emit(qe("cxttapstart")),e.touchData.start=Fe):he.emit(qe("cxttapstart")),e.touchData.start&&(e.touchData.start._private.grabbed=!1),e.touchData.cxt=!0,e.touchData.cxtDragged=!1,e.data.bgActivePosistion=void 0,e.redraw();return}}if(q.touches[2])he.boxSelectionEnabled()&&q.preventDefault();else if(!q.touches[1]){if(q.touches[0]){var Ke=e.findNearestElements(X[0],X[1],!0,!0),xe=Ke[0];if(xe!=null&&(xe.activate(),e.touchData.start=xe,e.touchData.starts=Ke,e.nodeIsGrabbable(xe))){var mt=e.dragData.touchDragEles=he.collection(),Le=null;e.redrawHint("eles",!0),e.redrawHint("drag",!0),xe.selected()?(Le=he.$(function(St){return St.selected()&&e.nodeIsGrabbable(St)}),m(Le,{addToList:mt})):g(xe,{addToList:mt}),h(xe),xe.emit(qe("grabon")),Le?Le.forEach(function(St){St.emit(qe("grab"))}):xe.emit(qe("grab"))}i(xe,["touchstart","tapstart","vmousedown"],q,{x:X[0],y:X[1]}),xe==null&&(e.data.bgActivePosistion={x:K[0],y:K[1]},e.redrawHint("select",!0),e.redraw()),e.touchData.singleTouchMoved=!1,e.touchData.singleTouchStartTime=+new Date,clearTimeout(e.touchData.tapholdTimeout),e.touchData.tapholdTimeout=setTimeout(function(){e.touchData.singleTouchMoved===!1&&!e.pinching&&!e.touchData.selecting&&i(e.touchData.start,["taphold"],q,{x:X[0],y:X[1]})},e.tapholdDuration)}}if(q.touches.length>=1){for(var ft=e.touchData.startPosition=[null,null,null,null,null,null],wt=0;wt<X.length;wt++)ft[wt]=fe[wt]=X[wt];var zt=q.touches[0];e.touchData.startGPosition=[zt.clientX,zt.clientY]}}},"touchstartHandler"),!1);var Ge;e.registerBinding(t,"touchmove",Ge=o(function(q){var he=e.touchData.capture;if(!(!he&&!R(q))){var X=e.selection,fe=e.cy,K=e.touchData.now,qe=e.touchData.earlier,_e=fe.zoom();if(q.touches[0]){var Be=e.projectIntoViewport(q.touches[0].clientX,q.touches[0].clientY);K[0]=Be[0],K[1]=Be[1]}if(q.touches[1]){var Be=e.projectIntoViewport(q.touches[1].clientX,q.touches[1].clientY);K[2]=Be[0],K[3]=Be[1]}if(q.touches[2]){var Be=e.projectIntoViewport(q.touches[2].clientX,q.touches[2].clientY);K[4]=Be[0],K[5]=Be[1]}var Ne=o(function(Nr){return{originalEvent:q,type:Nr,position:{x:K[0],y:K[1]}}},"makeEvent"),He=e.touchData.startGPosition,$e;if(he&&q.touches[0]&&He){for(var Xe=[],Fe=0;Fe<K.length;Fe++)Xe[Fe]=K[Fe]-qe[Fe];var Ke=q.touches[0].clientX-He[0],xe=Ke*Ke,mt=q.touches[0].clientY-He[1],Le=mt*mt,ft=xe+Le;$e=ft>=e.touchTapThreshold2}if(he&&e.touchData.cxt){q.preventDefault();var wt=q.touches[0].clientX-oe,zt=q.touches[0].clientY-te,St=q.touches[1].clientX-oe,At=q.touches[1].clientY-te,bt=be(wt,zt,St,At),me=bt/j,lt=150,gt=lt*lt,Ze=1.5,Ee=Ze*Ze;if(me>=Ee||bt>=gt){e.touchData.cxt=!1,e.data.bgActivePosistion=void 0,e.redrawHint("select",!0);var tt=Ne("cxttapend");e.touchData.start?(e.touchData.start.unactivate().emit(tt),e.touchData.start=null):fe.emit(tt)}}if(he&&e.touchData.cxt){var tt=Ne("cxtdrag");e.data.bgActivePosistion=void 0,e.redrawHint("select",!0),e.touchData.start?e.touchData.start.emit(tt):fe.emit(tt),e.touchData.start&&(e.touchData.start._private.grabbed=!1),e.touchData.cxtDragged=!0;var at=e.findNearestElement(K[0],K[1],!0,!0);(!e.touchData.cxtOver||at!==e.touchData.cxtOver)&&(e.touchData.cxtOver&&e.touchData.cxtOver.emit(Ne("cxtdragout")),e.touchData.cxtOver=at,at&&at.emit(Ne("cxtdragover")))}else if(he&&q.touches[2]&&fe.boxSelectionEnabled())q.preventDefault(),e.data.bgActivePosistion=void 0,this.lastThreeTouch=+new Date,e.touchData.selecting||fe.emit(Ne("boxstart")),e.touchData.selecting=!0,e.touchData.didSelect=!0,X[4]=1,!X||X.length===0||X[0]===void 0?(X[0]=(K[0]+K[2]+K[4])/3,X[1]=(K[1]+K[3]+K[5])/3,X[2]=(K[0]+K[2]+K[4])/3+1,X[3]=(K[1]+K[3]+K[5])/3+1):(X[2]=(K[0]+K[2]+K[4])/3,X[3]=(K[1]+K[3]+K[5])/3),e.redrawHint("select",!0),e.redraw();else if(he&&q.touches[1]&&!e.touchData.didSelect&&fe.zoomingEnabled()&&fe.panningEnabled()&&fe.userZoomingEnabled()&&fe.userPanningEnabled()){q.preventDefault(),e.data.bgActivePosistion=void 0,e.redrawHint("select",!0);var ot=e.dragData.touchDragEles;if(ot){e.redrawHint("drag",!0);for(var Wt=0;Wt<ot.length;Wt++){var Bt=ot[Wt]._private;Bt.grabbed=!1,Bt.rscratch.inDragLayer=!1}}var qt=e.touchData.start,wt=q.touches[0].clientX-oe,zt=q.touches[0].clientY-te,St=q.touches[1].clientX-oe,At=q.touches[1].clientY-te,vr=Re(wt,zt,St,At),Tt=vr/H;if(ae){var De=wt-V,it=zt-G,We=St-z,rt=At-W,yt=(De+We)/2,Yt=(it+rt)/2,Ht=fe.zoom(),pr=Ht*Tt,Hr=fe.pan(),Er=U[0]*Ht+Hr.x,kt=U[1]*Ht+Hr.y,Ct={x:-pr/Ht*(Er-Hr.x-yt)+Er,y:-pr/Ht*(kt-Hr.y-Yt)+kt};if(qt&&qt.active()){var ot=e.dragData.touchDragEles;y(ot),e.redrawHint("drag",!0),e.redrawHint("eles",!0),qt.unactivate().emit(Ne("freeon")),ot.emit(Ne("free")),e.dragData.didDrag&&(qt.emit(Ne("dragfreeon")),ot.emit(Ne("dragfree")))}fe.viewport({zoom:pr,pan:Ct,cancelOnFailedZoom:!0}),fe.emit(Ne("pinchzoom")),H=vr,V=wt,G=zt,z=St,W=At,e.pinching=!0}if(q.touches[0]){var Be=e.projectIntoViewport(q.touches[0].clientX,q.touches[0].clientY);K[0]=Be[0],K[1]=Be[1]}if(q.touches[1]){var Be=e.projectIntoViewport(q.touches[1].clientX,q.touches[1].clientY);K[2]=Be[0],K[3]=Be[1]}if(q.touches[2]){var Be=e.projectIntoViewport(q.touches[2].clientX,q.touches[2].clientY);K[4]=Be[0],K[5]=Be[1]}}else if(q.touches[0]&&!e.touchData.didSelect){var Ot=e.touchData.start,Ft=e.touchData.last,at;if(!e.hoverData.draggingEles&&!e.swipePanning&&(at=e.findNearestElement(K[0],K[1],!0,!0)),he&&Ot!=null&&q.preventDefault(),he&&Ot!=null&&e.nodeIsDraggable(Ot))if($e){var ot=e.dragData.touchDragEles,Rt=!e.dragData.didDrag;Rt&&m(ot,{inDragLayer:!0}),e.dragData.didDrag=!0;var gr={x:0,y:0};if(Gt(Xe[0])&&Gt(Xe[1])&&(gr.x+=Xe[0],gr.y+=Xe[1],Rt)){e.redrawHint("eles",!0);var Se=e.touchData.dragDelta;Se&&Gt(Se[0])&&Gt(Se[1])&&(gr.x+=Se[0],gr.y+=Se[1])}e.hoverData.draggingEles=!0,ot.silentShift(gr).emit(Ne("position")).emit(Ne("drag")),e.redrawHint("drag",!0),e.touchData.startPosition[0]==qe[0]&&e.touchData.startPosition[1]==qe[1]&&e.redrawHint("eles",!0),e.redraw()}else{var Se=e.touchData.dragDelta=e.touchData.dragDelta||[];Se.length===0?(Se.push(Xe[0]),Se.push(Xe[1])):(Se[0]+=Xe[0],Se[1]+=Xe[1])}if(i(Ot||at,["touchmove","tapdrag","vmousemove"],q,{x:K[0],y:K[1]}),(!Ot||!Ot.grabbed())&&at!=Ft&&(Ft&&Ft.emit(Ne("tapdragout")),at&&at.emit(Ne("tapdragover"))),e.touchData.last=at,he)for(var Wt=0;Wt<K.length;Wt++)K[Wt]&&e.touchData.startPosition[Wt]&&$e&&(e.touchData.singleTouchMoved=!0);if(he&&(Ot==null||Ot.pannable())&&fe.panningEnabled()&&fe.userPanningEnabled()){var ri=s(Ot,e.touchData.starts);ri&&(q.preventDefault(),e.data.bgActivePosistion||(e.data.bgActivePosistion=M1(e.touchData.startPosition)),e.swipePanning?(fe.panBy({x:Xe[0]*_e,y:Xe[1]*_e}),fe.emit(Ne("dragpan"))):$e&&(e.swipePanning=!0,fe.panBy({x:Ke*_e,y:mt*_e}),fe.emit(Ne("dragpan")),Ot&&(Ot.unactivate(),e.redrawHint("select",!0),e.touchData.start=null)));var Be=e.projectIntoViewport(q.touches[0].clientX,q.touches[0].clientY);K[0]=Be[0],K[1]=Be[1]}}for(var Fe=0;Fe<K.length;Fe++)qe[Fe]=K[Fe];he&&q.touches.length>0&&!e.hoverData.draggingEles&&!e.swipePanning&&e.data.bgActivePosistion!=null&&(e.data.bgActivePosistion=void 0,e.redrawHint("select",!0),e.redraw())}},"touchmoveHandler"),!1);var Oe;e.registerBinding(t,"touchcancel",Oe=o(function(q){var he=e.touchData.start;e.touchData.capture=!1,he&&he.unactivate()},"touchcancelHandler"));var ue,ye,ke,ce;if(e.registerBinding(t,"touchend",ue=o(function(q){var he=e.touchData.start,X=e.touchData.capture;if(X)q.touches.length===0&&(e.touchData.capture=!1),q.preventDefault();else return;var fe=e.selection;e.swipePanning=!1,e.hoverData.draggingEles=!1;var K=e.cy,qe=K.zoom(),_e=e.touchData.now,Be=e.touchData.earlier;if(q.touches[0]){var Ne=e.projectIntoViewport(q.touches[0].clientX,q.touches[0].clientY);_e[0]=Ne[0],_e[1]=Ne[1]}if(q.touches[1]){var Ne=e.projectIntoViewport(q.touches[1].clientX,q.touches[1].clientY);_e[2]=Ne[0],_e[3]=Ne[1]}if(q.touches[2]){var Ne=e.projectIntoViewport(q.touches[2].clientX,q.touches[2].clientY);_e[4]=Ne[0],_e[5]=Ne[1]}var He=o(function(gt){return{originalEvent:q,type:gt,position:{x:_e[0],y:_e[1]}}},"makeEvent");he&&he.unactivate();var $e;if(e.touchData.cxt){if($e=He("cxttapend"),he?he.emit($e):K.emit($e),!e.touchData.cxtDragged){var Xe=He("cxttap");he?he.emit(Xe):K.emit(Xe)}e.touchData.start&&(e.touchData.start._private.grabbed=!1),e.touchData.cxt=!1,e.touchData.start=null,e.redraw();return}if(!q.touches[2]&&K.boxSelectionEnabled()&&e.touchData.selecting){e.touchData.selecting=!1;var Fe=K.collection(e.getAllInBox(fe[0],fe[1],fe[2],fe[3]));fe[0]=void 0,fe[1]=void 0,fe[2]=void 0,fe[3]=void 0,fe[4]=0,e.redrawHint("select",!0),K.emit(He("boxend"));var Ke=o(function(gt){return gt.selectable()&&!gt.selected()},"eleWouldBeSelected");Fe.emit(He("box")).stdFilter(Ke).select().emit(He("boxselect")),Fe.nonempty()&&e.redrawHint("eles",!0),e.redraw()}if(he?.unactivate(),q.touches[2])e.data.bgActivePosistion=void 0,e.redrawHint("select",!0);else if(!q.touches[1]){if(!q.touches[0]){if(!q.touches[0]){e.data.bgActivePosistion=void 0,e.redrawHint("select",!0);var xe=e.dragData.touchDragEles;if(he!=null){var mt=he._private.grabbed;y(xe),e.redrawHint("drag",!0),e.redrawHint("eles",!0),mt&&(he.emit(He("freeon")),xe.emit(He("free")),e.dragData.didDrag&&(he.emit(He("dragfreeon")),xe.emit(He("dragfree")))),i(he,["touchend","tapend","vmouseup","tapdragout"],q,{x:_e[0],y:_e[1]}),he.unactivate(),e.touchData.start=null}else{var Le=e.findNearestElement(_e[0],_e[1],!0,!0);i(Le,["touchend","tapend","vmouseup","tapdragout"],q,{x:_e[0],y:_e[1]})}var ft=e.touchData.startPosition[0]-_e[0],wt=ft*ft,zt=e.touchData.startPosition[1]-_e[1],St=zt*zt,At=wt+St,bt=At*qe*qe;e.touchData.singleTouchMoved||(he||K.$(":selected").unselect(["tapunselect"]),i(he,["tap","vclick"],q,{x:_e[0],y:_e[1]}),ye=!1,q.timeStamp-ce<=K.multiClickDebounceTime()?(ke&&clearTimeout(ke),ye=!0,ce=null,i(he,["dbltap","vdblclick"],q,{x:_e[0],y:_e[1]})):(ke=setTimeout(function(){ye||i(he,["onetap","voneclick"],q,{x:_e[0],y:_e[1]})},K.multiClickDebounceTime()),ce=q.timeStamp)),he!=null&&!e.dragData.didDrag&&he._private.selectable&&bt<e.touchTapThreshold2&&!e.pinching&&(K.selectionType()==="single"?(K.$(r).unmerge(he).unselect(["tapunselect"]),he.select(["tapselect"])):he.selected()?he.unselect(["tapunselect"]):he.select(["tapselect"]),e.redrawHint("eles",!0)),e.touchData.singleTouchMoved=!0}}}for(var me=0;me<_e.length;me++)Be[me]=_e[me];e.dragData.didDrag=!1,q.touches.length===0&&(e.touchData.dragDelta=[],e.touchData.startPosition=[null,null,null,null,null,null],e.touchData.startGPosition=null,e.touchData.didSelect=!1),q.touches.length<2&&(q.touches.length===1&&(e.touchData.startGPosition=[q.touches[0].clientX,q.touches[0].clientY]),e.pinching=!1,e.redrawHint("eles",!0),e.redraw())},"touchendHandler"),!1),typeof TouchEvent>"u"){var re=[],J=o(function(q){return{clientX:q.clientX,clientY:q.clientY,force:1,identifier:q.pointerId,pageX:q.pageX,pageY:q.pageY,radiusX:q.width/2,radiusY:q.height/2,screenX:q.screenX,screenY:q.screenY,target:q.target}},"makeTouch"),se=o(function(q){return{event:q,touch:J(q)}},"makePointer"),ge=o(function(q){re.push(se(q))},"addPointer"),Te=o(function(q){for(var he=0;he<re.length;he++){var X=re[he];if(X.event.pointerId===q.pointerId){re.splice(he,1);return}}},"removePointer"),we=o(function(q){var he=re.filter(function(X){return X.event.pointerId===q.pointerId})[0];he.event=q,he.touch=J(q)},"updatePointer"),Me=o(function(q){q.touches=re.map(function(he){return he.touch})},"addTouchesToEvent"),ve=o(function(q){return q.pointerType==="mouse"||q.pointerType===4},"pointerIsMouse");e.registerBinding(e.container,"pointerdown",function(ne){ve(ne)||(ne.preventDefault(),ge(ne),Me(ne),Pe(ne))}),e.registerBinding(e.container,"pointerup",function(ne){ve(ne)||(Te(ne),Me(ne),ue(ne))}),e.registerBinding(e.container,"pointercancel",function(ne){ve(ne)||(Te(ne),Me(ne),Oe(ne))}),e.registerBinding(e.container,"pointermove",function(ne){ve(ne)||(ne.preventDefault(),we(ne),Me(ne),Ge(ne))})}};Bh={};Bh.generatePolygon=function(e,t){return this.nodeShapes[e]={renderer:this,name:e,points:t,draw:o(function(n,i,a,s,l,u){this.renderer.nodeShapeImpl("polygon",n,i,a,s,l,this.points)},"draw"),intersectLine:o(function(n,i,a,s,l,u,h,d){return FT(l,u,this.points,n,i,a/2,s/2,h)},"intersectLine"),checkPoint:o(function(n,i,a,s,l,u,h,d){return Oh(n,i,this.points,u,h,s,l,[0,-1],a)},"checkPoint"),hasMiterBounds:e!=="rectangle",miterBounds:o(function(n,i,a,s,l,u){return Wht(this.points,n,i,a,s,l)},"miterBounds")}};Bh.generateEllipse=function(){return this.nodeShapes.ellipse={renderer:this,name:"ellipse",draw:o(function(t,r,n,i,a,s){this.renderer.nodeShapeImpl(this.name,t,r,n,i,a)},"draw"),intersectLine:o(function(t,r,n,i,a,s,l,u){return Zht(a,s,t,r,n/2+l,i/2+l)},"intersectLine"),checkPoint:o(function(t,r,n,i,a,s,l,u){return tg(t,r,i,a,s,l,n)},"checkPoint")}};Bh.generateRoundPolygon=function(e,t){return this.nodeShapes[e]={renderer:this,name:e,points:t,getOrCreateCorners:o(function(n,i,a,s,l,u,h){if(u[h]!==void 0&&u[h+"-cx"]===n&&u[h+"-cy"]===i)return u[h];u[h]=new Array(t.length/2),u[h+"-cx"]=n,u[h+"-cy"]=i;var d=a/2,f=s/2;l=l==="auto"?_be(a,s):l;for(var p=new Array(t.length/2),m=0;m<t.length/2;m++)p[m]={x:n+d*t[m*2],y:i+f*t[m*2+1]};var g,y,v,x,b=p.length;for(y=p[b-1],g=0;g<b;g++)v=p[g%b],x=p[(g+1)%b],u[h][g]=BF(y,v,x,l),y=v,v=x;return u[h]},"getOrCreateCorners"),draw:o(function(n,i,a,s,l,u,h){this.renderer.nodeShapeImpl("round-polygon",n,i,a,s,l,this.points,this.getOrCreateCorners(i,a,s,l,u,h,"drawCorners"))},"draw"),intersectLine:o(function(n,i,a,s,l,u,h,d,f){return Jht(l,u,this.points,n,i,a,s,h,this.getOrCreateCorners(n,i,a,s,d,f,"corners"))},"intersectLine"),checkPoint:o(function(n,i,a,s,l,u,h,d,f){return Kht(n,i,this.points,u,h,s,l,this.getOrCreateCorners(u,h,s,l,d,f,"corners"))},"checkPoint")}};Bh.generateRoundRectangle=function(){return this.nodeShapes["round-rectangle"]=this.nodeShapes.roundrectangle={renderer:this,name:"round-rectangle",points:Ms(4,0),draw:o(function(t,r,n,i,a,s){this.renderer.nodeShapeImpl(this.name,t,r,n,i,a,this.points,s)},"draw"),intersectLine:o(function(t,r,n,i,a,s,l,u){return Abe(a,s,t,r,n,i,l,u)},"intersectLine"),checkPoint:o(function(t,r,n,i,a,s,l,u){var h=i/2,d=a/2;u=u==="auto"?Wf(i,a):u,u=Math.min(h,d,u);var f=u*2;return!!(Oh(t,r,this.points,s,l,i,a-f,[0,-1],n)||Oh(t,r,this.points,s,l,i-f,a,[0,-1],n)||tg(t,r,f,f,s-h+u,l-d+u,n)||tg(t,r,f,f,s+h-u,l-d+u,n)||tg(t,r,f,f,s+h-u,l+d-u,n)||tg(t,r,f,f,s-h+u,l+d-u,n))},"checkPoint")}};Bh.generateCutRectangle=function(){return this.nodeShapes["cut-rectangle"]=this.nodeShapes.cutrectangle={renderer:this,name:"cut-rectangle",cornerLength:EF(),points:Ms(4,0),draw:o(function(t,r,n,i,a,s){this.renderer.nodeShapeImpl(this.name,t,r,n,i,a,null,s)},"draw"),generateCutTrianglePts:o(function(t,r,n,i,a){var s=a==="auto"?this.cornerLength:a,l=r/2,u=t/2,h=n-u,d=n+u,f=i-l,p=i+l;return{topLeft:[h,f+s,h+s,f,h+s,f+s],topRight:[d-s,f,d,f+s,d-s,f+s],bottomRight:[d,p-s,d-s,p,d-s,p-s],bottomLeft:[h+s,p,h,p-s,h+s,p-s]}},"generateCutTrianglePts"),intersectLine:o(function(t,r,n,i,a,s,l,u){var h=this.generateCutTrianglePts(n+2*l,i+2*l,t,r,u),d=[].concat.apply([],[h.topLeft.splice(0,4),h.topRight.splice(0,4),h.bottomRight.splice(0,4),h.bottomLeft.splice(0,4)]);return FT(a,s,d,t,r)},"intersectLine"),checkPoint:o(function(t,r,n,i,a,s,l,u){var h=u==="auto"?this.cornerLength:u;if(Oh(t,r,this.points,s,l,i,a-2*h,[0,-1],n)||Oh(t,r,this.points,s,l,i-2*h,a,[0,-1],n))return!0;var d=this.generateCutTrianglePts(i,a,s,l);return go(t,r,d.topLeft)||go(t,r,d.topRight)||go(t,r,d.bottomRight)||go(t,r,d.bottomLeft)},"checkPoint")}};Bh.generateBarrel=function(){return this.nodeShapes.barrel={renderer:this,name:"barrel",points:Ms(4,0),draw:o(function(t,r,n,i,a,s){this.renderer.nodeShapeImpl(this.name,t,r,n,i,a)},"draw"),intersectLine:o(function(t,r,n,i,a,s,l,u){var h=.15,d=.5,f=.85,p=this.generateBarrelBezierPts(n+2*l,i+2*l,t,r),m=o(function(v){var x=O1({x:v[0],y:v[1]},{x:v[2],y:v[3]},{x:v[4],y:v[5]},h),b=O1({x:v[0],y:v[1]},{x:v[2],y:v[3]},{x:v[4],y:v[5]},d),T=O1({x:v[0],y:v[1]},{x:v[2],y:v[3]},{x:v[4],y:v[5]},f);return[v[0],v[1],x.x,x.y,b.x,b.y,T.x,T.y,v[4],v[5]]},"approximateBarrelCurvePts"),g=[].concat(m(p.topLeft),m(p.topRight),m(p.bottomRight),m(p.bottomLeft));return FT(a,s,g,t,r)},"intersectLine"),generateBarrelBezierPts:o(function(t,r,n,i){var a=r/2,s=t/2,l=n-s,u=n+s,h=i-a,d=i+a,f=Q$(t,r),p=f.heightOffset,m=f.widthOffset,g=f.ctrlPtOffsetPct*t,y={topLeft:[l,h+p,l+g,h,l+m,h],topRight:[u-m,h,u-g,h,u,h+p],bottomRight:[u,d-p,u-g,d,u-m,d],bottomLeft:[l+m,d,l+g,d,l,d-p]};return y.topLeft.isTop=!0,y.topRight.isTop=!0,y.bottomLeft.isBottom=!0,y.bottomRight.isBottom=!0,y},"generateBarrelBezierPts"),checkPoint:o(function(t,r,n,i,a,s,l,u){var h=Q$(i,a),d=h.heightOffset,f=h.widthOffset;if(Oh(t,r,this.points,s,l,i,a-2*d,[0,-1],n)||Oh(t,r,this.points,s,l,i-2*f,a,[0,-1],n))return!0;for(var p=this.generateBarrelBezierPts(i,a,s,l),m=o(function(R,L,N){var I=N[4],_=N[2],A=N[0],M=N[5],D=N[1],P=Math.min(I,A),B=Math.max(I,A),O=Math.min(M,D),$=Math.max(M,D);if(P<=R&&R<=B&&O<=L&&L<=$){var V=edt(I,_,A),G=Uht(V[0],V[1],V[2],R),z=G.filter(function(W){return 0<=W&&W<=1});if(z.length>0)return z[0]}return null},"getCurveT"),g=Object.keys(p),y=0;y<g.length;y++){var v=g[y],x=p[v],b=m(t,r,x);if(b!=null){var T=x[5],k=x[3],C=x[1],w=Aa(T,k,C,b);if(x.isTop&&w<=r||x.isBottom&&r<=w)return!0}}return!1},"checkPoint")}};Bh.generateBottomRoundrectangle=function(){return this.nodeShapes["bottom-round-rectangle"]=this.nodeShapes.bottomroundrectangle={renderer:this,name:"bottom-round-rectangle",points:Ms(4,0),draw:o(function(t,r,n,i,a,s){this.renderer.nodeShapeImpl(this.name,t,r,n,i,a,this.points,s)},"draw"),intersectLine:o(function(t,r,n,i,a,s,l,u){var h=t-(n/2+l),d=r-(i/2+l),f=d,p=t+(n/2+l),m=$f(a,s,t,r,h,d,p,f,!1);return m.length>0?m:Abe(a,s,t,r,n,i,l,u)},"intersectLine"),checkPoint:o(function(t,r,n,i,a,s,l,u){u=u==="auto"?Wf(i,a):u;var h=2*u;if(Oh(t,r,this.points,s,l,i,a-h,[0,-1],n)||Oh(t,r,this.points,s,l,i-h,a,[0,-1],n))return!0;var d=i/2+2*n,f=a/2+2*n,p=[s-d,l-f,s-d,l,s+d,l,s+d,l-f];return!!(go(t,r,p)||tg(t,r,h,h,s+i/2-u,l+a/2-u,n)||tg(t,r,h,h,s-i/2+u,l+a/2-u,n))},"checkPoint")}};Bh.registerNodeShapes=function(){var e=this.nodeShapes={},t=this;this.generateEllipse(),this.generatePolygon("triangle",Ms(3,0)),this.generateRoundPolygon("round-triangle",Ms(3,0)),this.generatePolygon("rectangle",Ms(4,0)),e.square=e.rectangle,this.generateRoundRectangle(),this.generateCutRectangle(),this.generateBarrel(),this.generateBottomRoundrectangle();{var r=[0,1,1,0,0,-1,-1,0];this.generatePolygon("diamond",r),this.generateRoundPolygon("round-diamond",r)}this.generatePolygon("pentagon",Ms(5,0)),this.generateRoundPolygon("round-pentagon",Ms(5,0)),this.generatePolygon("hexagon",Ms(6,0)),this.generateRoundPolygon("round-hexagon",Ms(6,0)),this.generatePolygon("heptagon",Ms(7,0)),this.generateRoundPolygon("round-heptagon",Ms(7,0)),this.generatePolygon("octagon",Ms(8,0)),this.generateRoundPolygon("round-octagon",Ms(8,0));var n=new Array(20);{var i=Z$(5,0),a=Z$(5,Math.PI/5),s=.5*(3-Math.sqrt(5));s*=1.57;for(var l=0;l<a.length/2;l++)a[l*2]*=s,a[l*2+1]*=s;for(var l=0;l<20/4;l++)n[l*4]=i[l*2],n[l*4+1]=i[l*2+1],n[l*4+2]=a[l*2],n[l*4+3]=a[l*2+1]}n=Rbe(n),this.generatePolygon("star",n),this.generatePolygon("vee",[-1,-1,0,-.333,1,-1,0,1]),this.generatePolygon("rhomboid",[-1,-1,.333,-1,1,1,-.333,1]),this.generatePolygon("right-rhomboid",[-.333,-1,1,-1,.333,1,-1,1]),this.nodeShapes.concavehexagon=this.generatePolygon("concave-hexagon",[-1,-.95,-.75,0,-1,.95,1,.95,.75,0,1,-.95]);{var u=[-1,-1,.25,-1,1,0,.25,1,-1,1];this.generatePolygon("tag",u),this.generateRoundPolygon("round-tag",u)}e.makePolygon=function(h){var d=h.join("$"),f="polygon-"+d,p;return(p=this[f])?p:t.generatePolygon(f,h)}};tC={};tC.timeToRender=function(){return this.redrawTotalTime/this.redrawCount};tC.redraw=function(e){e=e||wbe();var t=this;t.averageRedrawTime===void 0&&(t.averageRedrawTime=0),t.lastRedrawTime===void 0&&(t.lastRedrawTime=0),t.lastDrawTime===void 0&&(t.lastDrawTime=0),t.requestedFrame=!0,t.renderOptions=e};tC.beforeRender=function(e,t){if(!this.destroyed){t==null&&pi("Priority is not optional for beforeRender");var r=this.beforeRenderCallbacks;r.push({fn:e,priority:t}),r.sort(function(n,i){return i.priority-n.priority})}};Vxe=o(function(t,r,n){for(var i=t.beforeRenderCallbacks,a=0;a<i.length;a++)i[a].fn(r,n)},"beforeRenderCallbacks");tC.startRenderLoop=function(){var e=this,t=e.cy;if(!e.renderLoopStarted){e.renderLoopStarted=!0;var r=o(function(i){if(!e.destroyed){if(!t.batching())if(e.requestedFrame&&!e.skipFrame){Vxe(e,!0,i);var a=Ph();e.render(e.renderOptions);var s=e.lastDrawTime=Ph();e.averageRedrawTime===void 0&&(e.averageRedrawTime=s-a),e.redrawCount===void 0&&(e.redrawCount=0),e.redrawCount++,e.redrawTotalTime===void 0&&(e.redrawTotalTime=0);var l=s-a;e.redrawTotalTime+=l,e.lastRedrawTime=l,e.averageRedrawTime=e.averageRedrawTime/2+l/2,e.requestedFrame=!1}else Vxe(e,!1,i);e.skipFrame=!1,Q5(r)}},"renderFn");Q5(r)}};vmt=o(function(t){this.init(t)},"BaseRenderer"),L2e=vmt,j1=L2e.prototype;j1.clientFunctions=["redrawHint","render","renderTo","matchCanvasSize","nodeShapeImpl","arrowShapeImpl"];j1.init=function(e){var t=this;t.options=e,t.cy=e.cy;var r=t.container=e.cy.container(),n=t.cy.window();if(n){var i=n.document,a=i.head,s="__________cytoscape_stylesheet",l="__________cytoscape_container",u=i.getElementById(s)!=null;if(r.className.indexOf(l)<0&&(r.className=(r.className||"")+" "+l),!u){var h=i.createElement("style");h.id=s,h.textContent="."+l+" { position: relative; }",a.insertBefore(h,a.children[0])}var d=n.getComputedStyle(r),f=d.getPropertyValue("position");f==="static"&&In("A Cytoscape container has style position:static and so can not use UI extensions properly")}t.selection=[void 0,void 0,void 0,void 0,0],t.bezierProjPcts=[.05,.225,.4,.5,.6,.775,.95],t.hoverData={down:null,last:null,downTime:null,triggerMode:null,dragging:!1,initialPan:[null,null],capture:!1},t.dragData={possibleDragElements:[]},t.touchData={start:null,capture:!1,startPosition:[null,null,null,null,null,null],singleTouchStartTime:null,singleTouchMoved:!0,now:[null,null,null,null,null,null],earlier:[null,null,null,null,null,null]},t.redraws=0,t.showFps=e.showFps,t.debug=e.debug,t.webgl=e.webgl,t.hideEdgesOnViewport=e.hideEdgesOnViewport,t.textureOnViewport=e.textureOnViewport,t.wheelSensitivity=e.wheelSensitivity,t.motionBlurEnabled=e.motionBlur,t.forcedPixelRatio=Gt(e.pixelRatio)?e.pixelRatio:null,t.motionBlur=e.motionBlur,t.motionBlurOpacity=e.motionBlurOpacity,t.motionBlurTransparency=1-t.motionBlurOpacity,t.motionBlurPxRatio=1,t.mbPxRBlurry=1,t.minMbLowQualFrames=4,t.fullQualityMb=!1,t.clearedForMotionBlur=[],t.desktopTapThreshold=e.desktopTapThreshold,t.desktopTapThreshold2=e.desktopTapThreshold*e.desktopTapThreshold,t.touchTapThreshold=e.touchTapThreshold,t.touchTapThreshold2=e.touchTapThreshold*e.touchTapThreshold,t.tapholdDuration=500,t.bindings=[],t.beforeRenderCallbacks=[],t.beforeRenderPriorities={animations:400,eleCalcs:300,eleTxrDeq:200,lyrTxrDeq:150,lyrTxrSkip:100},t.registerNodeShapes(),t.registerArrowShapes(),t.registerCalculationListeners()};j1.notify=function(e,t){var r=this,n=r.cy;if(!this.destroyed){if(e==="init"){r.load();return}if(e==="destroy"){r.destroy();return}(e==="add"||e==="remove"||e==="move"&&n.hasCompoundNodes()||e==="load"||e==="zorder"||e==="mount")&&r.invalidateCachedZSortedEles(),e==="viewport"&&r.redrawHint("select",!0),e==="gc"&&r.redrawHint("gc",!0),(e==="load"||e==="resize"||e==="mount")&&(r.invalidateContainerClientCoordsCache(),r.matchCanvasSize(r.container)),r.redrawHint("eles",!0),r.redrawHint("drag",!0),this.startRenderLoop(),this.redraw()}};j1.destroy=function(){var e=this;e.destroyed=!0,e.cy.stopAnimationLoop();for(var t=0;t<e.bindings.length;t++){var r=e.bindings[t],n=r,i=n.target;(i.off||i.removeEventListener).apply(i,n.args)}if(e.bindings=[],e.beforeRenderCallbacks=[],e.onUpdateEleCalcsFns=[],e.removeObserver&&e.removeObserver.disconnect(),e.styleObserver&&e.styleObserver.disconnect(),e.resizeObserver&&e.resizeObserver.disconnect(),e.labelCalcDiv)try{document.body.removeChild(e.labelCalcDiv)}catch{}};j1.isHeadless=function(){return!1};[OF,A2e,R2e,Y1,Bh,tC].forEach(function(e){br(j1,e)});V$=1e3/60,D2e={setupDequeueing:o(function(t){return o(function(){var n=this,i=this.renderer;if(!n.dequeueingSetup){n.dequeueingSetup=!0;var a=KT(function(){i.redrawHint("eles",!0),i.redrawHint("drag",!0),i.redraw()},t.deqRedrawThreshold),s=o(function(h,d){var f=Ph(),p=i.averageRedrawTime,m=i.lastRedrawTime,g=[],y=i.cy.extent(),v=i.getPixelRatio();for(h||i.flushRenderedStyleQueue();;){var x=Ph(),b=x-f,T=x-d;if(m<V$){var k=V$-(h?p:0);if(T>=t.deqFastCost*k)break}else if(h){if(b>=t.deqCost*m||b>=t.deqAvgCost*p)break}else if(T>=t.deqNoDrawCost*V$)break;var C=t.deq(n,v,y);if(C.length>0)for(var w=0;w<C.length;w++)g.push(C[w]);else break}g.length>0&&(t.onDeqd(n,g),!h&&t.shouldRedraw(n,g,v,y)&&a())},"dequeue"),l=t.priority||TF;i.beforeRender(s,l(n))}},"setupDequeueingImpl")},"setupDequeueing")},xmt=(function(){function e(t){var r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:J5;Yf(this,e),this.idsByKey=new Nh,this.keyForId=new Nh,this.cachesByLvl=new Nh,this.lvls=[],this.getKey=t,this.doesEleInvalidateKey=r}return o(e,"ElementTextureCacheLookup"),jf(e,[{key:"getIdsFor",value:o(function(r){r==null&&pi("Can not get id list for null key");var n=this.idsByKey,i=this.idsByKey.get(r);return i||(i=new W1,n.set(r,i)),i},"getIdsFor")},{key:"addIdForKey",value:o(function(r,n){r!=null&&this.getIdsFor(r).add(n)},"addIdForKey")},{key:"deleteIdForKey",value:o(function(r,n){r!=null&&this.getIdsFor(r).delete(n)},"deleteIdForKey")},{key:"getNumberOfIdsForKey",value:o(function(r){return r==null?0:this.getIdsFor(r).size},"getNumberOfIdsForKey")},{key:"updateKeyMappingFor",value:o(function(r){var n=r.id(),i=this.keyForId.get(n),a=this.getKey(r);this.deleteIdForKey(i,n),this.addIdForKey(a,n),this.keyForId.set(n,a)},"updateKeyMappingFor")},{key:"deleteKeyMappingFor",value:o(function(r){var n=r.id(),i=this.keyForId.get(n);this.deleteIdForKey(i,n),this.keyForId.delete(n)},"deleteKeyMappingFor")},{key:"keyHasChangedFor",value:o(function(r){var n=r.id(),i=this.keyForId.get(n),a=this.getKey(r);return i!==a},"keyHasChangedFor")},{key:"isInvalid",value:o(function(r){return this.keyHasChangedFor(r)||this.doesEleInvalidateKey(r)},"isInvalid")},{key:"getCachesAt",value:o(function(r){var n=this.cachesByLvl,i=this.lvls,a=n.get(r);return a||(a=new Nh,n.set(r,a),i.push(r)),a},"getCachesAt")},{key:"getCache",value:o(function(r,n){return this.getCachesAt(n).get(r)},"getCache")},{key:"get",value:o(function(r,n){var i=this.getKey(r),a=this.getCache(i,n);return a!=null&&this.updateKeyMappingFor(r),a},"get")},{key:"getForCachedKey",value:o(function(r,n){var i=this.keyForId.get(r.id()),a=this.getCache(i,n);return a},"getForCachedKey")},{key:"hasCache",value:o(function(r,n){return this.getCachesAt(n).has(r)},"hasCache")},{key:"has",value:o(function(r,n){var i=this.getKey(r);return this.hasCache(i,n)},"has")},{key:"setCache",value:o(function(r,n,i){i.key=r,this.getCachesAt(n).set(r,i)},"setCache")},{key:"set",value:o(function(r,n,i){var a=this.getKey(r);this.setCache(a,n,i),this.updateKeyMappingFor(r)},"set")},{key:"deleteCache",value:o(function(r,n){this.getCachesAt(n).delete(r)},"deleteCache")},{key:"delete",value:o(function(r,n){var i=this.getKey(r);this.deleteCache(i,n)},"_delete")},{key:"invalidateKey",value:o(function(r){var n=this;this.lvls.forEach(function(i){return n.deleteCache(r,i)})},"invalidateKey")},{key:"invalidate",value:o(function(r){var n=r.id(),i=this.keyForId.get(n);this.deleteKeyMappingFor(r);var a=this.doesEleInvalidateKey(r);return a&&this.invalidateKey(i),a||this.getNumberOfIdsForKey(i)===0},"invalidate")}])})(),Wxe=25,B5=50,j5=-4,hF=3,I2e=7.99,bmt=8,Tmt=1024,Cmt=1024,wmt=1024,kmt=.2,Smt=.8,Emt=10,Amt=.15,Rmt=.1,_mt=.9,Lmt=.9,Dmt=100,Imt=1,P1={dequeue:"dequeue",downscale:"downscale",highQuality:"highQuality"},Mmt=Va({getKey:null,doesEleInvalidateKey:J5,drawElement:null,getBoundingBox:null,getRotationPoint:null,getRotationOffset:null,isVisible:bbe,allowEdgeTxrCaching:!0,allowParentTxrCaching:!0}),DT=o(function(t,r){var n=this;n.renderer=t,n.onDequeues=[];var i=Mmt(r);br(n,i),n.lookup=new xmt(i.getKey,i.doesEleInvalidateKey),n.setupDequeueing()},"ElementTextureCache"),ua=DT.prototype;ua.reasons=P1;ua.getTextureQueue=function(e){var t=this;return t.eleImgCaches=t.eleImgCaches||{},t.eleImgCaches[e]=t.eleImgCaches[e]||[]};ua.getRetiredTextureQueue=function(e){var t=this,r=t.eleImgCaches.retired=t.eleImgCaches.retired||{},n=r[e]=r[e]||[];return n};ua.getElementQueue=function(){var e=this,t=e.eleCacheQueue=e.eleCacheQueue||new ZT(function(r,n){return n.reqs-r.reqs});return t};ua.getElementKeyToQueue=function(){var e=this,t=e.eleKeyToCacheQueue=e.eleKeyToCacheQueue||{};return t};ua.getElement=function(e,t,r,n,i){var a=this,s=this.renderer,l=s.cy.zoom(),u=this.lookup;if(!t||t.w===0||t.h===0||isNaN(t.w)||isNaN(t.h)||!e.visible()||e.removed()||!a.allowEdgeTxrCaching&&e.isEdge()||!a.allowParentTxrCaching&&e.isParent())return null;if(n==null&&(n=Math.ceil(wF(l*r))),n<j5)n=j5;else if(l>=I2e||n>hF)return null;var h=Math.pow(2,n),d=t.h*h,f=t.w*h,p=s.eleTextBiggerThanMin(e,h);if(!this.isVisible(e,p))return null;var m=u.get(e,n);if(m&&m.invalidated&&(m.invalidated=!1,m.texture.invalidatedWidth-=m.width),m)return m;var g;if(d<=Wxe?g=Wxe:d<=B5?g=B5:g=Math.ceil(d/B5)*B5,d>wmt||f>Cmt)return null;var y=a.getTextureQueue(g),v=y[y.length-2],x=o(function(){return a.recycleTexture(g,f)||a.addTexture(g,f)},"addNewTxr");v||(v=y[y.length-1]),v||(v=x()),v.width-v.usedWidth<f&&(v=x());for(var b=o(function(P){return P&&P.scaledLabelShown===p},"scalableFrom"),T=i&&i===P1.dequeue,k=i&&i===P1.highQuality,C=i&&i===P1.downscale,w,S=n+1;S<=hF;S++){var R=u.get(e,S);if(R){w=R;break}}var L=w&&w.level===n+1?w:null,N=o(function(){v.context.drawImage(L.texture.canvas,L.x,0,L.width,L.height,v.usedWidth,0,f,d)},"downscale");if(v.context.setTransform(1,0,0,1,0,0),v.context.clearRect(v.usedWidth,0,f,g),b(L))N();else if(b(w))if(k){for(var I=w.level;I>n;I--)L=a.getElement(e,t,r,I,P1.downscale);N()}else return a.queueElement(e,w.level-1),w;else{var _;if(!T&&!k&&!C)for(var A=n-1;A>=j5;A--){var M=u.get(e,A);if(M){_=M;break}}if(b(_))return a.queueElement(e,n),_;v.context.translate(v.usedWidth,0),v.context.scale(h,h),this.drawElement(v.context,e,t,p,!1),v.context.scale(1/h,1/h),v.context.translate(-v.usedWidth,0)}return m={x:v.usedWidth,texture:v,level:n,scale:h,width:f,height:d,scaledLabelShown:p},v.usedWidth+=Math.ceil(f+bmt),v.eleCaches.push(m),u.set(e,n,m),a.checkTextureFullness(v),m};ua.invalidateElements=function(e){for(var t=0;t<e.length;t++)this.invalidateElement(e[t])};ua.invalidateElement=function(e){var t=this,r=t.lookup,n=[],i=r.isInvalid(e);if(i){for(var a=j5;a<=hF;a++){var s=r.getForCachedKey(e,a);s&&n.push(s)}var l=r.invalidate(e);if(l)for(var u=0;u<n.length;u++){var h=n[u],d=h.texture;d.invalidatedWidth+=h.width,h.invalidated=!0,t.checkTextureUtility(d)}t.removeFromQueue(e)}};ua.checkTextureUtility=function(e){e.invalidatedWidth>=kmt*e.width&&this.retireTexture(e)};ua.checkTextureFullness=function(e){var t=this,r=t.getTextureQueue(e.height);e.usedWidth/e.width>Smt&&e.fullnessChecks>=Emt?Vf(r,e):e.fullnessChecks++};ua.retireTexture=function(e){var t=this,r=e.height,n=t.getTextureQueue(r),i=this.lookup;Vf(n,e),e.retired=!0;for(var a=e.eleCaches,s=0;s<a.length;s++){var l=a[s];i.deleteCache(l.key,l.level)}CF(a);var u=t.getRetiredTextureQueue(r);u.push(e)};ua.addTexture=function(e,t){var r=this,n=r.getTextureQueue(e),i={};return n.push(i),i.eleCaches=[],i.height=e,i.width=Math.max(Tmt,t),i.usedWidth=0,i.invalidatedWidth=0,i.fullnessChecks=0,i.canvas=r.renderer.makeOffscreenCanvas(i.width,i.height),i.context=i.canvas.getContext("2d"),i};ua.recycleTexture=function(e,t){for(var r=this,n=r.getTextureQueue(e),i=r.getRetiredTextureQueue(e),a=0;a<i.length;a++){var s=i[a];if(s.width>=t)return s.retired=!1,s.usedWidth=0,s.invalidatedWidth=0,s.fullnessChecks=0,CF(s.eleCaches),s.context.setTransform(1,0,0,1,0,0),s.context.clearRect(0,0,s.width,s.height),Vf(i,s),n.push(s),s}};ua.queueElement=function(e,t){var r=this,n=r.getElementQueue(),i=r.getElementKeyToQueue(),a=this.getKey(e),s=i[a];if(s)s.level=Math.max(s.level,t),s.eles.merge(e),s.reqs++,n.updateItem(s);else{var l={eles:e.spawn().merge(e),level:t,reqs:1,key:a};n.push(l),i[a]=l}};ua.dequeue=function(e){for(var t=this,r=t.getElementQueue(),n=t.getElementKeyToQueue(),i=[],a=t.lookup,s=0;s<Imt&&r.size()>0;s++){var l=r.pop(),u=l.key,h=l.eles[0],d=a.hasCache(h,l.level);if(n[u]=null,d)continue;i.push(l);var f=t.getBoundingBox(h);t.getElement(h,f,e,l.level,P1.dequeue)}return i};ua.removeFromQueue=function(e){var t=this,r=t.getElementQueue(),n=t.getElementKeyToQueue(),i=this.getKey(e),a=n[i];a!=null&&(a.eles.length===1?(a.reqs=bF,r.updateItem(a),r.pop(),n[i]=null):a.eles.unmerge(e))};ua.onDequeue=function(e){this.onDequeues.push(e)};ua.offDequeue=function(e){Vf(this.onDequeues,e)};ua.setupDequeueing=D2e.setupDequeueing({deqRedrawThreshold:Dmt,deqCost:Amt,deqAvgCost:Rmt,deqNoDrawCost:_mt,deqFastCost:Lmt,deq:o(function(t,r,n){return t.dequeue(r,n)},"deq"),onDeqd:o(function(t,r){for(var n=0;n<t.onDequeues.length;n++){var i=t.onDequeues[n];i(r)}},"onDeqd"),shouldRedraw:o(function(t,r,n,i){for(var a=0;a<r.length;a++)for(var s=r[a].eles,l=0;l<s.length;l++){var u=s[l].boundingBox();if(SF(u,i))return!0}return!1},"shouldRedraw"),priority:o(function(t){return t.renderer.beforeRenderPriorities.eleTxrDeq},"priority")});Nmt=1,MT=-4,oA=2,Pmt=3.99,Omt=50,Bmt=50,$mt=.15,Fmt=.1,zmt=.9,Gmt=.9,Vmt=1,qxe=250,Wmt=4e3*4e3,Hxe=32767,qmt=!0,M2e=o(function(t){var r=this,n=r.renderer=t,i=n.cy;r.layersByLevel={},r.firstGet=!0,r.lastInvalidationTime=Ph()-2*qxe,r.skipping=!1,r.eleTxrDeqs=i.collection(),r.scheduleElementRefinement=KT(function(){r.refineElementTextures(r.eleTxrDeqs),r.eleTxrDeqs.unmerge(r.eleTxrDeqs)},Bmt),n.beforeRender(function(s,l){l-r.lastInvalidationTime<=qxe?r.skipping=!0:r.skipping=!1},n.beforeRenderPriorities.lyrTxrSkip);var a=o(function(l,u){return u.reqs-l.reqs},"qSort");r.layersQueue=new ZT(a),r.setupDequeueing()},"LayeredTextureCache"),Wa=M2e.prototype,Uxe=0,Hmt=Math.pow(2,53)-1;Wa.makeLayer=function(e,t){var r=Math.pow(2,t),n=Math.ceil(e.w*r),i=Math.ceil(e.h*r),a=this.renderer.makeOffscreenCanvas(n,i),s={id:Uxe=++Uxe%Hmt,bb:e,level:t,width:n,height:i,canvas:a,context:a.getContext("2d"),eles:[],elesQueue:[],reqs:0},l=s.context,u=-s.bb.x1,h=-s.bb.y1;return l.scale(r,r),l.translate(u,h),s};Wa.getLayers=function(e,t,r){var n=this,i=n.renderer,a=i.cy,s=a.zoom(),l=n.firstGet;if(n.firstGet=!1,r==null){if(r=Math.ceil(wF(s*t)),r<MT)r=MT;else if(s>=Pmt||r>oA)return null}n.validateLayersElesOrdering(r,e);var u=n.layersByLevel,h=Math.pow(2,r),d=u[r]=u[r]||[],f,p=n.levelIsComplete(r,e),m,g=o(function(){var N=o(function(D){if(n.validateLayersElesOrdering(D,e),n.levelIsComplete(D,e))return m=u[D],!0},"canUseAsTmpLvl"),I=o(function(D){if(!m)for(var P=r+D;MT<=P&&P<=oA&&!N(P);P+=D);},"checkLvls");I(1),I(-1);for(var _=d.length-1;_>=0;_--){var A=d[_];A.invalid&&Vf(d,A)}},"checkTempLevels");if(!p)g();else return d;var y=o(function(){if(!f){f=Ns();for(var N=0;N<e.length;N++)zht(f,e[N].boundingBox())}return f},"getBb"),v=o(function(N){N=N||{};var I=N.after;y();var _=Math.ceil(f.w*h),A=Math.ceil(f.h*h);if(_>Hxe||A>Hxe)return null;var M=_*A;if(M>Wmt)return null;var D=n.makeLayer(f,r);if(I!=null){var P=d.indexOf(I)+1;d.splice(P,0,D)}else(N.insert===void 0||N.insert)&&d.unshift(D);return D},"makeLayer");if(n.skipping&&!l)return null;for(var x=null,b=e.length/Nmt,T=!l,k=0;k<e.length;k++){var C=e[k],w=C._private.rscratch,S=w.imgLayerCaches=w.imgLayerCaches||{},R=S[r];if(R){x=R;continue}if((!x||x.eles.length>=b||!Ebe(x.bb,C.boundingBox()))&&(x=v({insert:!0,after:x}),!x))return null;m||T?n.queueLayer(x,C):n.drawEleInLayer(x,C,r,t),x.eles.push(C),S[r]=x}return m||(T?null:d)};Wa.getEleLevelForLayerLevel=function(e,t){return e};Wa.drawEleInLayer=function(e,t,r,n){var i=this,a=this.renderer,s=e.context,l=t.boundingBox();l.w===0||l.h===0||!t.visible()||(r=i.getEleLevelForLayerLevel(r,n),a.setImgSmoothing(s,!1),a.drawCachedElement(s,t,null,null,r,qmt),a.setImgSmoothing(s,!0))};Wa.levelIsComplete=function(e,t){var r=this,n=r.layersByLevel[e];if(!n||n.length===0)return!1;for(var i=0,a=0;a<n.length;a++){var s=n[a];if(s.reqs>0||s.invalid)return!1;i+=s.eles.length}return i===t.length};Wa.validateLayersElesOrdering=function(e,t){var r=this.layersByLevel[e];if(r)for(var n=0;n<r.length;n++){for(var i=r[n],a=-1,s=0;s<t.length;s++)if(i.eles[0]===t[s]){a=s;break}if(a<0){this.invalidateLayer(i);continue}for(var l=a,s=0;s<i.eles.length;s++)if(i.eles[s]!==t[l+s]){this.invalidateLayer(i);break}}};Wa.updateElementsInLayers=function(e,t){for(var r=this,n=UT(e[0]),i=0;i<e.length;i++)for(var a=n?null:e[i],s=n?e[i]:e[i].ele,l=s._private.rscratch,u=l.imgLayerCaches=l.imgLayerCaches||{},h=MT;h<=oA;h++){var d=u[h];d&&(a&&r.getEleLevelForLayerLevel(d.level)!==a.level||t(d,s,a))}};Wa.haveLayers=function(){for(var e=this,t=!1,r=MT;r<=oA;r++){var n=e.layersByLevel[r];if(n&&n.length>0){t=!0;break}}return t};Wa.invalidateElements=function(e){var t=this;e.length!==0&&(t.lastInvalidationTime=Ph(),!(e.length===0||!t.haveLayers())&&t.updateElementsInLayers(e,o(function(n,i,a){t.invalidateLayer(n)},"invalAssocLayers")))};Wa.invalidateLayer=function(e){if(this.lastInvalidationTime=Ph(),!e.invalid){var t=e.level,r=e.eles,n=this.layersByLevel[t];Vf(n,e),e.elesQueue=[],e.invalid=!0,e.replacement&&(e.replacement.invalid=!0);for(var i=0;i<r.length;i++){var a=r[i]._private.rscratch.imgLayerCaches;a&&(a[t]=null)}}};Wa.refineElementTextures=function(e){var t=this;t.updateElementsInLayers(e,o(function(n,i,a){var s=n.replacement;if(s||(s=n.replacement=t.makeLayer(n.bb,n.level),s.replaces=n,s.eles=n.eles),!s.reqs)for(var l=0;l<s.eles.length;l++)t.queueLayer(s,s.eles[l])},"refineEachEle"))};Wa.enqueueElementRefinement=function(e){this.eleTxrDeqs.merge(e),this.scheduleElementRefinement()};Wa.queueLayer=function(e,t){var r=this,n=r.layersQueue,i=e.elesQueue,a=i.hasId=i.hasId||{};if(!e.replacement){if(t){if(a[t.id()])return;i.push(t),a[t.id()]=!0}e.reqs?(e.reqs++,n.updateItem(e)):(e.reqs=1,n.push(e))}};Wa.dequeue=function(e){for(var t=this,r=t.layersQueue,n=[],i=0;i<Vmt&&r.size()!==0;){var a=r.peek();if(a.replacement){r.pop();continue}if(a.replaces&&a!==a.replaces.replacement){r.pop();continue}if(a.invalid){r.pop();continue}var s=a.elesQueue.shift();s&&(t.drawEleInLayer(a,s,a.level,e),i++),n.length===0&&n.push(!0),a.elesQueue.length===0&&(r.pop(),a.reqs=0,a.replaces&&t.applyLayerReplacement(a),t.requestRedraw())}return n};Wa.applyLayerReplacement=function(e){var t=this,r=t.layersByLevel[e.level],n=e.replaces,i=r.indexOf(n);if(!(i<0||n.invalid)){r[i]=e;for(var a=0;a<e.eles.length;a++){var s=e.eles[a]._private,l=s.imgLayerCaches=s.imgLayerCaches||{};l&&(l[e.level]=e)}t.requestRedraw()}};Wa.requestRedraw=KT(function(){var e=this.renderer;e.redrawHint("eles",!0),e.redrawHint("drag",!0),e.redraw()},100);Wa.setupDequeueing=D2e.setupDequeueing({deqRedrawThreshold:Omt,deqCost:$mt,deqAvgCost:Fmt,deqNoDrawCost:zmt,deqFastCost:Gmt,deq:o(function(t,r){return t.dequeue(r)},"deq"),onDeqd:TF,shouldRedraw:bbe,priority:o(function(t){return t.renderer.beforeRenderPriorities.lyrTxrDeq},"priority")});N2e={};o(Umt,"polygon");o(Ymt,"triangleBackcurve");o(jxe,"triangleTee");o(jmt,"circleTriangle");o(Xmt,"circle$1");N2e.arrowShapeImpl=function(e){return(Yxe||(Yxe={polygon:Umt,"triangle-backcurve":Ymt,"triangle-tee":jxe,"circle-triangle":jmt,"triangle-cross":jxe,circle:Xmt}))[e]};ku={};ku.drawElement=function(e,t,r,n,i,a){var s=this;t.isNode()?s.drawNode(e,t,r,n,i,a):s.drawEdge(e,t,r,n,i,a)};ku.drawElementOverlay=function(e,t){var r=this;t.isNode()?r.drawNodeOverlay(e,t):r.drawEdgeOverlay(e,t)};ku.drawElementUnderlay=function(e,t){var r=this;t.isNode()?r.drawNodeUnderlay(e,t):r.drawEdgeUnderlay(e,t)};ku.drawCachedElementPortion=function(e,t,r,n,i,a,s,l){var u=this,h=r.getBoundingBox(t);if(!(h.w===0||h.h===0)){var d=r.getElement(t,h,n,i,a);if(d!=null){var f=l(u,t);if(f===0)return;var p=s(u,t),m=h.x1,g=h.y1,y=h.w,v=h.h,x,b,T,k,C;if(p!==0){var w=r.getRotationPoint(t);T=w.x,k=w.y,e.translate(T,k),e.rotate(p),C=u.getImgSmoothing(e),C||u.setImgSmoothing(e,!0);var S=r.getRotationOffset(t);x=S.x,b=S.y}else x=m,b=g;var R;f!==1&&(R=e.globalAlpha,e.globalAlpha=R*f),e.drawImage(d.texture.canvas,d.x,0,d.width,d.height,x,b,y,v),f!==1&&(e.globalAlpha=R),p!==0&&(e.rotate(-p),e.translate(-T,-k),C||u.setImgSmoothing(e,!1))}else r.drawElement(e,t)}};Kmt=o(function(){return 0},"getZeroRotation"),Zmt=o(function(t,r){return t.getTextAngle(r,null)},"getLabelRotation"),Qmt=o(function(t,r){return t.getTextAngle(r,"source")},"getSourceLabelRotation"),Jmt=o(function(t,r){return t.getTextAngle(r,"target")},"getTargetLabelRotation"),egt=o(function(t,r){return r.effectiveOpacity()},"getOpacity"),W$=o(function(t,r){return r.pstyle("text-opacity").pfValue*r.effectiveOpacity()},"getTextOpacity");ku.drawCachedElement=function(e,t,r,n,i,a){var s=this,l=s.data,u=l.eleTxrCache,h=l.lblTxrCache,d=l.slbTxrCache,f=l.tlbTxrCache,p=t.boundingBox(),m=a===!0?u.reasons.highQuality:null;if(!(p.w===0||p.h===0||!t.visible())&&(!n||SF(p,n))){var g=t.isEdge(),y=t.element()._private.rscratch.badLine;s.drawElementUnderlay(e,t),s.drawCachedElementPortion(e,t,u,r,i,m,Kmt,egt),(!g||!y)&&s.drawCachedElementPortion(e,t,h,r,i,m,Zmt,W$),g&&!y&&(s.drawCachedElementPortion(e,t,d,r,i,m,Qmt,W$),s.drawCachedElementPortion(e,t,f,r,i,m,Jmt,W$)),s.drawElementOverlay(e,t)}};ku.drawElements=function(e,t){for(var r=this,n=0;n<t.length;n++){var i=t[n];r.drawElement(e,i)}};ku.drawCachedElements=function(e,t,r,n){for(var i=this,a=0;a<t.length;a++){var s=t[a];i.drawCachedElement(e,s,r,n)}};ku.drawCachedNodes=function(e,t,r,n){for(var i=this,a=0;a<t.length;a++){var s=t[a];s.isNode()&&i.drawCachedElement(e,s,r,n)}};ku.drawLayeredElements=function(e,t,r,n){var i=this,a=i.data.lyrTxrCache.getLayers(t,r);if(a)for(var s=0;s<a.length;s++){var l=a[s],u=l.bb;u.w===0||u.h===0||e.drawImage(l.canvas,u.x1,u.y1,u.w,u.h)}else i.drawCachedElements(e,t,r,n)};$h={};$h.drawEdge=function(e,t,r){var n=arguments.length>3&&arguments[3]!==void 0?arguments[3]:!0,i=arguments.length>4&&arguments[4]!==void 0?arguments[4]:!0,a=arguments.length>5&&arguments[5]!==void 0?arguments[5]:!0,s=this,l=t._private.rscratch;if(!(a&&!t.visible())&&!(l.badLine||l.allpts==null||isNaN(l.allpts[0]))){var u;r&&(u=r,e.translate(-u.x1,-u.y1));var h=a?t.pstyle("opacity").value:1,d=a?t.pstyle("line-opacity").value:1,f=t.pstyle("curve-style").value,p=t.pstyle("line-style").value,m=t.pstyle("width").pfValue,g=t.pstyle("line-cap").value,y=t.pstyle("line-outline-width").value,v=t.pstyle("line-outline-color").value,x=h*d,b=h*d,T=o(function(){var D=arguments.length>0&&arguments[0]!==void 0?arguments[0]:x;f==="straight-triangle"?(s.eleStrokeStyle(e,t,D),s.drawEdgeTrianglePath(t,e,l.allpts)):(e.lineWidth=m,e.lineCap=g,s.eleStrokeStyle(e,t,D),s.drawEdgePath(t,e,l.allpts,p),e.lineCap="butt")},"drawLine"),k=o(function(){var D=arguments.length>0&&arguments[0]!==void 0?arguments[0]:x;if(e.lineWidth=m+y,e.lineCap=g,y>0)s.colorStrokeStyle(e,v[0],v[1],v[2],D);else{e.lineCap="butt";return}f==="straight-triangle"?s.drawEdgeTrianglePath(t,e,l.allpts):(s.drawEdgePath(t,e,l.allpts,p),e.lineCap="butt")},"drawLineOutline"),C=o(function(){i&&s.drawEdgeOverlay(e,t)},"drawOverlay"),w=o(function(){i&&s.drawEdgeUnderlay(e,t)},"drawUnderlay"),S=o(function(){var D=arguments.length>0&&arguments[0]!==void 0?arguments[0]:b;s.drawArrowheads(e,t,D)},"drawArrows"),R=o(function(){s.drawElementText(e,t,null,n)},"drawText");e.lineJoin="round";var L=t.pstyle("ghost").value==="yes";if(L){var N=t.pstyle("ghost-offset-x").pfValue,I=t.pstyle("ghost-offset-y").pfValue,_=t.pstyle("ghost-opacity").value,A=x*_;e.translate(N,I),T(A),S(A),e.translate(-N,-I)}else k();w(),T(),S(),C(),R(),r&&e.translate(u.x1,u.y1)}};P2e=o(function(t){if(!["overlay","underlay"].includes(t))throw new Error("Invalid state");return function(r,n){if(n.visible()){var i=n.pstyle("".concat(t,"-opacity")).value;if(i!==0){var a=this,s=a.usePaths(),l=n._private.rscratch,u=n.pstyle("".concat(t,"-padding")).pfValue,h=2*u,d=n.pstyle("".concat(t,"-color")).value;r.lineWidth=h,l.edgeType==="self"&&!s?r.lineCap="butt":r.lineCap="round",a.colorStrokeStyle(r,d[0],d[1],d[2],i),a.drawEdgePath(n,r,l.allpts,"solid")}}}},"drawEdgeOverlayUnderlay");$h.drawEdgeOverlay=P2e("overlay");$h.drawEdgeUnderlay=P2e("underlay");$h.drawEdgePath=function(e,t,r,n){var i=e._private.rscratch,a=t,s,l=!1,u=this.usePaths(),h=e.pstyle("line-dash-pattern").pfValue,d=e.pstyle("line-dash-offset").pfValue;if(u){var f=r.join("$"),p=i.pathCacheKey&&i.pathCacheKey===f;p?(s=t=i.pathCache,l=!0):(s=t=new Path2D,i.pathCacheKey=f,i.pathCache=s)}if(a.setLineDash)switch(n){case"dotted":a.setLineDash([1,1]);break;case"dashed":a.setLineDash(h),a.lineDashOffset=d;break;case"solid":a.setLineDash([]);break}if(!l&&!i.badLine)switch(t.beginPath&&t.beginPath(),t.moveTo(r[0],r[1]),i.edgeType){case"bezier":case"self":case"compound":case"multibezier":for(var m=2;m+3<r.length;m+=4)t.quadraticCurveTo(r[m],r[m+1],r[m+2],r[m+3]);break;case"straight":case"haystack":for(var g=2;g+1<r.length;g+=2)t.lineTo(r[g],r[g+1]);break;case"segments":if(i.isRound){var y=yo(i.roundCorners),v;try{for(y.s();!(v=y.n()).done;){var x=v.value;C2e(t,x)}}catch(T){y.e(T)}finally{y.f()}t.lineTo(r[r.length-2],r[r.length-1])}else for(var b=2;b+1<r.length;b+=2)t.lineTo(r[b],r[b+1]);break}t=a,u?t.stroke(s):t.stroke(),t.setLineDash&&t.setLineDash([])};$h.drawEdgeTrianglePath=function(e,t,r){t.fillStyle=t.strokeStyle;for(var n=e.pstyle("width").pfValue,i=0;i+1<r.length;i+=2){var a=[r[i+2]-r[i],r[i+3]-r[i+1]],s=Math.sqrt(a[0]*a[0]+a[1]*a[1]),l=[a[1]/s,-a[0]/s],u=[l[0]*n/2,l[1]*n/2];t.beginPath(),t.moveTo(r[i]-u[0],r[i+1]-u[1]),t.lineTo(r[i]+u[0],r[i+1]+u[1]),t.lineTo(r[i+2],r[i+3]),t.closePath(),t.fill()}};$h.drawArrowheads=function(e,t,r){var n=t._private.rscratch,i=n.edgeType==="haystack";i||this.drawArrowhead(e,t,"source",n.arrowStartX,n.arrowStartY,n.srcArrowAngle,r),this.drawArrowhead(e,t,"mid-target",n.midX,n.midY,n.midtgtArrowAngle,r),this.drawArrowhead(e,t,"mid-source",n.midX,n.midY,n.midsrcArrowAngle,r),i||this.drawArrowhead(e,t,"target",n.arrowEndX,n.arrowEndY,n.tgtArrowAngle,r)};$h.drawArrowhead=function(e,t,r,n,i,a,s){if(!(isNaN(n)||n==null||isNaN(i)||i==null||isNaN(a)||a==null)){var l=this,u=t.pstyle(r+"-arrow-shape").value;if(u!=="none"){var h=t.pstyle(r+"-arrow-fill").value==="hollow"?"both":"filled",d=t.pstyle(r+"-arrow-fill").value,f=t.pstyle("width").pfValue,p=t.pstyle(r+"-arrow-width"),m=p.value==="match-line"?f:p.pfValue;p.units==="%"&&(m*=f);var g=t.pstyle("opacity").value;s===void 0&&(s=g);var y=e.globalCompositeOperation;(s!==1||d==="hollow")&&(e.globalCompositeOperation="destination-out",l.colorFillStyle(e,255,255,255,1),l.colorStrokeStyle(e,255,255,255,1),l.drawArrowShape(t,e,h,f,u,m,n,i,a),e.globalCompositeOperation=y);var v=t.pstyle(r+"-arrow-color").value;l.colorFillStyle(e,v[0],v[1],v[2],s),l.colorStrokeStyle(e,v[0],v[1],v[2],s),l.drawArrowShape(t,e,d,f,u,m,n,i,a)}}};$h.drawArrowShape=function(e,t,r,n,i,a,s,l,u){var h=this,d=this.usePaths()&&i!=="triangle-cross",f=!1,p,m=t,g={x:s,y:l},y=e.pstyle("arrow-scale").value,v=this.getArrowWidth(n,y),x=h.arrowShapes[i];if(d){var b=h.arrowPathCache=h.arrowPathCache||[],T=rg(i),k=b[T];k!=null?(p=t=k,f=!0):(p=t=new Path2D,b[T]=p)}f||(t.beginPath&&t.beginPath(),d?x.draw(t,1,0,{x:0,y:0},1):x.draw(t,v,u,g,n),t.closePath&&t.closePath()),t=m,d&&(t.translate(s,l),t.rotate(u),t.scale(v,v)),(r==="filled"||r==="both")&&(d?t.fill(p):t.fill()),(r==="hollow"||r==="both")&&(t.lineWidth=a/(d?v:1),t.lineJoin="miter",d?t.stroke(p):t.stroke()),d&&(t.scale(1/v,1/v),t.rotate(-u),t.translate(-s,-l))};FF={};FF.safeDrawImage=function(e,t,r,n,i,a,s,l,u,h){if(!(i<=0||a<=0||u<=0||h<=0))try{e.drawImage(t,r,n,i,a,s,l,u,h)}catch(d){In(d)}};FF.drawInscribedImage=function(e,t,r,n,i){var a=this,s=r.position(),l=s.x,u=s.y,h=r.cy().style(),d=h.getIndexedStyle.bind(h),f=d(r,"background-fit","value",n),p=d(r,"background-repeat","value",n),m=r.width(),g=r.height(),y=r.padding()*2,v=m+(d(r,"background-width-relative-to","value",n)==="inner"?0:y),x=g+(d(r,"background-height-relative-to","value",n)==="inner"?0:y),b=r._private.rscratch,T=d(r,"background-clip","value",n),k=T==="node",C=d(r,"background-image-opacity","value",n)*i,w=d(r,"background-image-smoothing","value",n),S=r.pstyle("corner-radius").value;S!=="auto"&&(S=r.pstyle("corner-radius").pfValue);var R=t.width||t.cachedW,L=t.height||t.cachedH;(R==null||L==null)&&(document.body.appendChild(t),R=t.cachedW=t.width||t.offsetWidth,L=t.cachedH=t.height||t.offsetHeight,document.body.removeChild(t));var N=R,I=L;if(d(r,"background-width","value",n)!=="auto"&&(d(r,"background-width","units",n)==="%"?N=d(r,"background-width","pfValue",n)*v:N=d(r,"background-width","pfValue",n)),d(r,"background-height","value",n)!=="auto"&&(d(r,"background-height","units",n)==="%"?I=d(r,"background-height","pfValue",n)*x:I=d(r,"background-height","pfValue",n)),!(N===0||I===0)){if(f==="contain"){var _=Math.min(v/N,x/I);N*=_,I*=_}else if(f==="cover"){var _=Math.max(v/N,x/I);N*=_,I*=_}var A=l-v/2,M=d(r,"background-position-x","units",n),D=d(r,"background-position-x","pfValue",n);M==="%"?A+=(v-N)*D:A+=D;var P=d(r,"background-offset-x","units",n),B=d(r,"background-offset-x","pfValue",n);P==="%"?A+=(v-N)*B:A+=B;var O=u-x/2,$=d(r,"background-position-y","units",n),V=d(r,"background-position-y","pfValue",n);$==="%"?O+=(x-I)*V:O+=V;var G=d(r,"background-offset-y","units",n),z=d(r,"background-offset-y","pfValue",n);G==="%"?O+=(x-I)*z:O+=z,b.pathCache&&(A-=l,O-=u,l=0,u=0);var W=e.globalAlpha;e.globalAlpha=C;var H=a.getImgSmoothing(e),j=!1;if(w==="no"&&H?(a.setImgSmoothing(e,!1),j=!0):w==="yes"&&!H&&(a.setImgSmoothing(e,!0),j=!0),p==="no-repeat")k&&(e.save(),b.pathCache?e.clip(b.pathCache):(a.nodeShapes[a.getNodeShape(r)].draw(e,l,u,v,x,S,b),e.clip())),a.safeDrawImage(e,t,0,0,R,L,A,O,N,I),k&&e.restore();else{var Q=e.createPattern(t,p);e.fillStyle=Q,a.nodeShapes[a.getNodeShape(r)].draw(e,l,u,v,x,S,b),e.translate(A,O),e.fill(),e.translate(-A,-O)}e.globalAlpha=W,j&&a.setImgSmoothing(e,H)}};lg={};lg.eleTextBiggerThanMin=function(e,t){if(!t){var r=e.cy().zoom(),n=this.getPixelRatio(),i=Math.ceil(wF(r*n));t=Math.pow(2,i)}var a=e.pstyle("font-size").pfValue*t,s=e.pstyle("min-zoomed-font-size").pfValue;return!(a<s)};lg.drawElementText=function(e,t,r,n,i){var a=arguments.length>5&&arguments[5]!==void 0?arguments[5]:!0,s=this;if(n==null){if(a&&!s.eleTextBiggerThanMin(t))return}else if(n===!1)return;if(t.isNode()){var l=t.pstyle("label");if(!l||!l.value)return;var u=s.getLabelJustification(t);e.textAlign=u,e.textBaseline="bottom"}else{var h=t.element()._private.rscratch.badLine,d=t.pstyle("label"),f=t.pstyle("source-label"),p=t.pstyle("target-label");if(h||(!d||!d.value)&&(!f||!f.value)&&(!p||!p.value))return;e.textAlign="center",e.textBaseline="bottom"}var m=!r,g;r&&(g=r,e.translate(-g.x1,-g.y1)),i==null?(s.drawText(e,t,null,m,a),t.isEdge()&&(s.drawText(e,t,"source",m,a),s.drawText(e,t,"target",m,a))):s.drawText(e,t,i,m,a),r&&e.translate(g.x1,g.y1)};lg.getFontCache=function(e){var t;this.fontCaches=this.fontCaches||[];for(var r=0;r<this.fontCaches.length;r++)if(t=this.fontCaches[r],t.context===e)return t;return t={context:e},this.fontCaches.push(t),t};lg.setupTextStyle=function(e,t){var r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!0,n=t.pstyle("font-style").strValue,i=t.pstyle("font-size").pfValue+"px",a=t.pstyle("font-family").strValue,s=t.pstyle("font-weight").strValue,l=r?t.effectiveOpacity()*t.pstyle("text-opacity").value:1,u=t.pstyle("text-outline-opacity").value*l,h=t.pstyle("color").value,d=t.pstyle("text-outline-color").value;e.font=n+" "+s+" "+i+" "+a,e.lineJoin="round",this.colorFillStyle(e,h[0],h[1],h[2],l),this.colorStrokeStyle(e,d[0],d[1],d[2],u)};o(tgt,"circle");o(Xxe,"roundRect");lg.getTextAngle=function(e,t){var r,n=e._private,i=n.rscratch,a=t?t+"-":"",s=e.pstyle(a+"text-rotation");if(s.strValue==="autorotate"){var l=mo(i,"labelAngle",t);r=e.isEdge()?l:0}else s.strValue==="none"?r=0:r=s.pfValue;return r};lg.drawText=function(e,t,r){var n=arguments.length>3&&arguments[3]!==void 0?arguments[3]:!0,i=arguments.length>4&&arguments[4]!==void 0?arguments[4]:!0,a=t._private,s=a.rscratch,l=i?t.effectiveOpacity():1;if(!(i&&(l===0||t.pstyle("text-opacity").value===0))){r==="main"&&(r=null);var u=mo(s,"labelX",r),h=mo(s,"labelY",r),d,f,p=this.getLabelText(t,r);if(p!=null&&p!==""&&!isNaN(u)&&!isNaN(h)){this.setupTextStyle(e,t,i);var m=r?r+"-":"",g=mo(s,"labelWidth",r),y=mo(s,"labelHeight",r),v=t.pstyle(m+"text-margin-x").pfValue,x=t.pstyle(m+"text-margin-y").pfValue,b=t.isEdge(),T=t.pstyle("text-halign").value,k=t.pstyle("text-valign").value;b&&(T="center",k="center"),u+=v,h+=x;var C;switch(n?C=this.getTextAngle(t,r):C=0,C!==0&&(d=u,f=h,e.translate(d,f),e.rotate(C),u=0,h=0),k){case"top":break;case"center":h+=y/2;break;case"bottom":h+=y;break}var w=t.pstyle("text-background-opacity").value,S=t.pstyle("text-border-opacity").value,R=t.pstyle("text-border-width").pfValue,L=t.pstyle("text-background-padding").pfValue,N=t.pstyle("text-background-shape").strValue,I=N==="round-rectangle"||N==="roundrectangle",_=N==="circle",A=2;if(w>0||R>0&&S>0){var M=e.fillStyle,D=e.strokeStyle,P=e.lineWidth,B=t.pstyle("text-background-color").value,O=t.pstyle("text-border-color").value,$=t.pstyle("text-border-style").value,V=w>0,G=R>0&&S>0,z=u-L;switch(T){case"left":z-=g;break;case"center":z-=g/2;break}var W=h-y-L,H=g+2*L,j=y+2*L;if(V&&(e.fillStyle="rgba(".concat(B[0],",").concat(B[1],",").concat(B[2],",").concat(w*l,")")),G&&(e.strokeStyle="rgba(".concat(O[0],",").concat(O[1],",").concat(O[2],",").concat(S*l,")"),e.lineWidth=R,e.setLineDash))switch($){case"dotted":e.setLineDash([1,1]);break;case"dashed":e.setLineDash([4,2]);break;case"double":e.lineWidth=R/4,e.setLineDash([]);break;case"solid":default:e.setLineDash([]);break}if(I?(e.beginPath(),Xxe(e,z,W,H,j,A)):_?(e.beginPath(),tgt(e,z,W,H,j)):(e.beginPath(),e.rect(z,W,H,j)),V&&e.fill(),G&&e.stroke(),G&&$==="double"){var Q=R/2;e.beginPath(),I?Xxe(e,z+Q,W+Q,H-2*Q,j-2*Q,A):e.rect(z+Q,W+Q,H-2*Q,j-2*Q),e.stroke()}e.fillStyle=M,e.strokeStyle=D,e.lineWidth=P,e.setLineDash&&e.setLineDash([])}var U=2*t.pstyle("text-outline-width").pfValue;if(U>0&&(e.lineWidth=U),t.pstyle("text-wrap").value==="wrap"){var oe=mo(s,"labelWrapCachedLines",r),te=mo(s,"labelLineHeight",r),le=g/2,ie=this.getLabelJustification(t);switch(ie==="auto"||(T==="left"?ie==="left"?u+=-g:ie==="center"&&(u+=-le):T==="center"?ie==="left"?u+=-le:ie==="right"&&(u+=le):T==="right"&&(ie==="center"?u+=le:ie==="right"&&(u+=g))),k){case"top":h-=(oe.length-1)*te;break;case"center":case"bottom":h-=(oe.length-1)*te;break}for(var ae=0;ae<oe.length;ae++)U>0&&e.strokeText(oe[ae],u,h),e.fillText(oe[ae],u,h),h+=te}else U>0&&e.strokeText(p,u,h),e.fillText(p,u,h);C!==0&&(e.rotate(-C),e.translate(-d,-f))}}};Kf={};Kf.drawNode=function(e,t,r){var n=arguments.length>3&&arguments[3]!==void 0?arguments[3]:!0,i=arguments.length>4&&arguments[4]!==void 0?arguments[4]:!0,a=arguments.length>5&&arguments[5]!==void 0?arguments[5]:!0,s=this,l,u,h=t._private,d=h.rscratch,f=t.position();if(!(!Gt(f.x)||!Gt(f.y))&&!(a&&!t.visible())){var p=a?t.effectiveOpacity():1,m=s.usePaths(),g,y=!1,v=t.padding();l=t.width()+2*v,u=t.height()+2*v;var x;r&&(x=r,e.translate(-x.x1,-x.y1));for(var b=t.pstyle("background-image"),T=b.value,k=new Array(T.length),C=new Array(T.length),w=0,S=0;S<T.length;S++){var R=T[S],L=k[S]=R!=null&&R!=="none";if(L){var N=t.cy().style().getIndexedStyle(t,"background-image-crossorigin","value",S);w++,C[S]=s.getCachedImage(R,N,function(){h.backgroundTimestamp=Date.now(),t.emitAndNotify("background")})}}var I=t.pstyle("background-blacken").value,_=t.pstyle("border-width").pfValue,A=t.pstyle("background-opacity").value*p,M=t.pstyle("border-color").value,D=t.pstyle("border-style").value,P=t.pstyle("border-join").value,B=t.pstyle("border-cap").value,O=t.pstyle("border-position").value,$=t.pstyle("border-dash-pattern").pfValue,V=t.pstyle("border-dash-offset").pfValue,G=t.pstyle("border-opacity").value*p,z=t.pstyle("outline-width").pfValue,W=t.pstyle("outline-color").value,H=t.pstyle("outline-style").value,j=t.pstyle("outline-opacity").value*p,Q=t.pstyle("outline-offset").value,U=t.pstyle("corner-radius").value;U!=="auto"&&(U=t.pstyle("corner-radius").pfValue);var oe=o(function(){var q=arguments.length>0&&arguments[0]!==void 0?arguments[0]:A;s.eleFillStyle(e,t,q)},"setupShapeColor"),te=o(function(){var q=arguments.length>0&&arguments[0]!==void 0?arguments[0]:G;s.colorStrokeStyle(e,M[0],M[1],M[2],q)},"setupBorderColor"),le=o(function(){var q=arguments.length>0&&arguments[0]!==void 0?arguments[0]:j;s.colorStrokeStyle(e,W[0],W[1],W[2],q)},"setupOutlineColor"),ie=o(function(q,he,X,fe){var K=s.nodePathCache=s.nodePathCache||[],qe=xbe(X==="polygon"?X+","+fe.join(","):X,""+he,""+q,""+U),_e=K[qe],Be,Ne=!1;return _e!=null?(Be=_e,Ne=!0,d.pathCache=Be):(Be=new Path2D,K[qe]=d.pathCache=Be),{path:Be,cacheHit:Ne}},"getPath"),ae=t.pstyle("shape").strValue,Re=t.pstyle("shape-polygon-points").pfValue;if(m){e.translate(f.x,f.y);var be=ie(l,u,ae,Re);g=be.path,y=be.cacheHit}var Pe=o(function(){if(!y){var q=f;m&&(q={x:0,y:0}),s.nodeShapes[s.getNodeShape(t)].draw(g||e,q.x,q.y,l,u,U,d)}m?e.fill(g):e.fill()},"drawShape"),Ge=o(function(){for(var q=arguments.length>0&&arguments[0]!==void 0?arguments[0]:p,he=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!0,X=h.backgrounding,fe=0,K=0;K<C.length;K++){var qe=t.cy().style().getIndexedStyle(t,"background-image-containment","value",K);if(he&&qe==="over"||!he&&qe==="inside"){fe++;continue}k[K]&&C[K].complete&&!C[K].error&&(fe++,s.drawInscribedImage(e,C[K],t,K,q))}h.backgrounding=fe!==w,X!==h.backgrounding&&t.updateStyle(!1)},"drawImages"),Oe=o(function(){var q=arguments.length>0&&arguments[0]!==void 0?arguments[0]:!1,he=arguments.length>1&&arguments[1]!==void 0?arguments[1]:p;s.hasPie(t)&&(s.drawPie(e,t,he),q&&(m||s.nodeShapes[s.getNodeShape(t)].draw(e,f.x,f.y,l,u,U,d)))},"drawPie"),ue=o(function(){var q=arguments.length>0&&arguments[0]!==void 0?arguments[0]:!1,he=arguments.length>1&&arguments[1]!==void 0?arguments[1]:p;s.hasStripe(t)&&(e.save(),m?e.clip(d.pathCache):(s.nodeShapes[s.getNodeShape(t)].draw(e,f.x,f.y,l,u,U,d),e.clip()),s.drawStripe(e,t,he),e.restore(),q&&(m||s.nodeShapes[s.getNodeShape(t)].draw(e,f.x,f.y,l,u,U,d)))},"drawStripe"),ye=o(function(){var q=arguments.length>0&&arguments[0]!==void 0?arguments[0]:p,he=(I>0?I:-I)*q,X=I>0?0:255;I!==0&&(s.colorFillStyle(e,X,X,X,he),m?e.fill(g):e.fill())},"darken"),ke=o(function(){if(_>0){if(e.lineWidth=_,e.lineCap=B,e.lineJoin=P,e.setLineDash)switch(D){case"dotted":e.setLineDash([1,1]);break;case"dashed":e.setLineDash($),e.lineDashOffset=V;break;case"solid":case"double":e.setLineDash([]);break}if(O!=="center"){if(e.save(),e.lineWidth*=2,O==="inside")m?e.clip(g):e.clip();else{var q=new Path2D;q.rect(-l/2-_,-u/2-_,l+2*_,u+2*_),q.addPath(g),e.clip(q,"evenodd")}m?e.stroke(g):e.stroke(),e.restore()}else m?e.stroke(g):e.stroke();if(D==="double"){e.lineWidth=_/3;var he=e.globalCompositeOperation;e.globalCompositeOperation="destination-out",m?e.stroke(g):e.stroke(),e.globalCompositeOperation=he}e.setLineDash&&e.setLineDash([])}},"drawBorder"),ce=o(function(){if(z>0){if(e.lineWidth=z,e.lineCap="butt",e.setLineDash)switch(H){case"dotted":e.setLineDash([1,1]);break;case"dashed":e.setLineDash([4,2]);break;case"solid":case"double":e.setLineDash([]);break}var q=f;m&&(q={x:0,y:0});var he=s.getNodeShape(t),X=_;O==="inside"&&(X=0),O==="outside"&&(X*=2);var fe=(l+X+(z+Q))/l,K=(u+X+(z+Q))/u,qe=l*fe,_e=u*K,Be=s.nodeShapes[he].points,Ne;if(m){var He=ie(qe,_e,he,Be);Ne=He.path}if(he==="ellipse")s.drawEllipsePath(Ne||e,q.x,q.y,qe,_e);else if(["round-diamond","round-heptagon","round-hexagon","round-octagon","round-pentagon","round-polygon","round-triangle","round-tag"].includes(he)){var $e=0,Xe=0,Fe=0;he==="round-diamond"?$e=(X+Q+z)*1.4:he==="round-heptagon"?($e=(X+Q+z)*1.075,Fe=-(X/2+Q+z)/35):he==="round-hexagon"?$e=(X+Q+z)*1.12:he==="round-pentagon"?($e=(X+Q+z)*1.13,Fe=-(X/2+Q+z)/15):he==="round-tag"?($e=(X+Q+z)*1.12,Xe=(X/2+z+Q)*.07):he==="round-triangle"&&($e=(X+Q+z)*(Math.PI/2),Fe=-(X+Q/2+z)/Math.PI),$e!==0&&(fe=(l+$e)/l,qe=l*fe,["round-hexagon","round-tag"].includes(he)||(K=(u+$e)/u,_e=u*K)),U=U==="auto"?_be(qe,_e):U;for(var Ke=qe/2,xe=_e/2,mt=U+(X+z+Q)/2,Le=new Array(Be.length/2),ft=new Array(Be.length/2),wt=0;wt<Be.length/2;wt++)Le[wt]={x:q.x+Xe+Ke*Be[wt*2],y:q.y+Fe+xe*Be[wt*2+1]};var zt,St,At,bt,me=Le.length;for(St=Le[me-1],zt=0;zt<me;zt++)At=Le[zt%me],bt=Le[(zt+1)%me],ft[zt]=BF(St,At,bt,mt),St=At,At=bt;s.drawRoundPolygonPath(Ne||e,q.x+Xe,q.y+Fe,l*fe,u*K,Be,ft)}else if(["roundrectangle","round-rectangle"].includes(he))U=U==="auto"?Wf(qe,_e):U,s.drawRoundRectanglePath(Ne||e,q.x,q.y,qe,_e,U+(X+z+Q)/2);else if(["cutrectangle","cut-rectangle"].includes(he))U=U==="auto"?EF():U,s.drawCutRectanglePath(Ne||e,q.x,q.y,qe,_e,null,U+(X+z+Q)/4);else if(["bottomroundrectangle","bottom-round-rectangle"].includes(he))U=U==="auto"?Wf(qe,_e):U,s.drawBottomRoundRectanglePath(Ne||e,q.x,q.y,qe,_e,U+(X+z+Q)/2);else if(he==="barrel")s.drawBarrelPath(Ne||e,q.x,q.y,qe,_e);else if(he.startsWith("polygon")||["rhomboid","right-rhomboid","round-tag","tag","vee"].includes(he)){var lt=(X+z+Q)/l;Be=eA(tA(Be,lt)),s.drawPolygonPath(Ne||e,q.x,q.y,l,u,Be)}else{var gt=(X+z+Q)/l;Be=eA(tA(Be,-gt)),s.drawPolygonPath(Ne||e,q.x,q.y,l,u,Be)}if(m?e.stroke(Ne):e.stroke(),H==="double"){e.lineWidth=X/3;var Ze=e.globalCompositeOperation;e.globalCompositeOperation="destination-out",m?e.stroke(Ne):e.stroke(),e.globalCompositeOperation=Ze}e.setLineDash&&e.setLineDash([])}},"drawOutline"),re=o(function(){i&&s.drawNodeOverlay(e,t,f,l,u)},"drawOverlay"),J=o(function(){i&&s.drawNodeUnderlay(e,t,f,l,u)},"drawUnderlay"),se=o(function(){s.drawElementText(e,t,null,n)},"drawText"),ge=t.pstyle("ghost").value==="yes";if(ge){var Te=t.pstyle("ghost-offset-x").pfValue,we=t.pstyle("ghost-offset-y").pfValue,Me=t.pstyle("ghost-opacity").value,ve=Me*p;e.translate(Te,we),le(),ce(),oe(Me*A),Pe(),Ge(ve,!0),te(Me*G),ke(),Oe(I!==0||_!==0),ue(I!==0||_!==0),Ge(ve,!1),ye(ve),e.translate(-Te,-we)}m&&e.translate(-f.x,-f.y),J(),m&&e.translate(f.x,f.y),le(),ce(),oe(),Pe(),Ge(p,!0),te(),ke(),Oe(I!==0||_!==0),ue(I!==0||_!==0),Ge(p,!1),ye(),m&&e.translate(-f.x,-f.y),se(),re(),r&&e.translate(x.x1,x.y1)}};O2e=o(function(t){if(!["overlay","underlay"].includes(t))throw new Error("Invalid state");return function(r,n,i,a,s){var l=this;if(n.visible()){var u=n.pstyle("".concat(t,"-padding")).pfValue,h=n.pstyle("".concat(t,"-opacity")).value,d=n.pstyle("".concat(t,"-color")).value,f=n.pstyle("".concat(t,"-shape")).value,p=n.pstyle("".concat(t,"-corner-radius")).value;if(h>0){if(i=i||n.position(),a==null||s==null){var m=n.padding();a=n.width()+2*m,s=n.height()+2*m}l.colorFillStyle(r,d[0],d[1],d[2],h),l.nodeShapes[f].draw(r,i.x,i.y,a+u*2,s+u*2,p),r.fill()}}}},"drawNodeOverlayUnderlay");Kf.drawNodeOverlay=O2e("overlay");Kf.drawNodeUnderlay=O2e("underlay");Kf.hasPie=function(e){return e=e[0],e._private.hasPie};Kf.hasStripe=function(e){return e=e[0],e._private.hasStripe};Kf.drawPie=function(e,t,r,n){t=t[0],n=n||t.position();var i=t.cy().style(),a=t.pstyle("pie-size"),s=t.pstyle("pie-hole"),l=t.pstyle("pie-start-angle").pfValue,u=n.x,h=n.y,d=t.width(),f=t.height(),p=Math.min(d,f)/2,m,g=0,y=this.usePaths();if(y&&(u=0,h=0),a.units==="%"?p=p*a.pfValue:a.pfValue!==void 0&&(p=a.pfValue/2),s.units==="%"?m=p*s.pfValue:s.pfValue!==void 0&&(m=s.pfValue/2),!(m>=p))for(var v=1;v<=i.pieBackgroundN;v++){var x=t.pstyle("pie-"+v+"-background-size").value,b=t.pstyle("pie-"+v+"-background-color").value,T=t.pstyle("pie-"+v+"-background-opacity").value*r,k=x/100;k+g>1&&(k=1-g);var C=1.5*Math.PI+2*Math.PI*g;C+=l;var w=2*Math.PI*k,S=C+w;x===0||g>=1||g+k>1||(m===0?(e.beginPath(),e.moveTo(u,h),e.arc(u,h,p,C,S),e.closePath()):(e.beginPath(),e.arc(u,h,p,C,S),e.arc(u,h,m,S,C,!0),e.closePath()),this.colorFillStyle(e,b[0],b[1],b[2],T),e.fill(),g+=k)}};Kf.drawStripe=function(e,t,r,n){t=t[0],n=n||t.position();var i=t.cy().style(),a=n.x,s=n.y,l=t.width(),u=t.height(),h=0,d=this.usePaths();e.save();var f=t.pstyle("stripe-direction").value,p=t.pstyle("stripe-size");switch(f){case"vertical":break;case"righward":e.rotate(-Math.PI/2);break}var m=l,g=u;p.units==="%"?(m=m*p.pfValue,g=g*p.pfValue):p.pfValue!==void 0&&(m=p.pfValue,g=p.pfValue),d&&(a=0,s=0),s-=m/2,a-=g/2;for(var y=1;y<=i.stripeBackgroundN;y++){var v=t.pstyle("stripe-"+y+"-background-size").value,x=t.pstyle("stripe-"+y+"-background-color").value,b=t.pstyle("stripe-"+y+"-background-opacity").value*r,T=v/100;T+h>1&&(T=1-h),!(v===0||h>=1||h+T>1)&&(e.beginPath(),e.rect(a,s+g*h,m,g*T),e.closePath(),this.colorFillStyle(e,x[0],x[1],x[2],b),e.fill(),h+=T)}e.restore()};Ps={},rgt=100;Ps.getPixelRatio=function(){var e=this.data.contexts[0];if(this.forcedPixelRatio!=null)return this.forcedPixelRatio;var t=this.cy.window(),r=e.backingStorePixelRatio||e.webkitBackingStorePixelRatio||e.mozBackingStorePixelRatio||e.msBackingStorePixelRatio||e.oBackingStorePixelRatio||e.backingStorePixelRatio||1;return(t.devicePixelRatio||1)/r};Ps.paintCache=function(e){for(var t=this.paintCaches=this.paintCaches||[],r=!0,n,i=0;i<t.length;i++)if(n=t[i],n.context===e){r=!1;break}return r&&(n={context:e},t.push(n)),n};Ps.createGradientStyleFor=function(e,t,r,n,i){var a,s=this.usePaths(),l=r.pstyle(t+"-gradient-stop-colors").value,u=r.pstyle(t+"-gradient-stop-positions").pfValue;if(n==="radial-gradient")if(r.isEdge()){var h=r.sourceEndpoint(),d=r.targetEndpoint(),f=r.midpoint(),p=ng(h,f),m=ng(d,f);a=e.createRadialGradient(f.x,f.y,0,f.x,f.y,Math.max(p,m))}else{var g=s?{x:0,y:0}:r.position(),y=r.paddedWidth(),v=r.paddedHeight();a=e.createRadialGradient(g.x,g.y,0,g.x,g.y,Math.max(y,v))}else if(r.isEdge()){var x=r.sourceEndpoint(),b=r.targetEndpoint();a=e.createLinearGradient(x.x,x.y,b.x,b.y)}else{var T=s?{x:0,y:0}:r.position(),k=r.paddedWidth(),C=r.paddedHeight(),w=k/2,S=C/2,R=r.pstyle("background-gradient-direction").value;switch(R){case"to-bottom":a=e.createLinearGradient(T.x,T.y-S,T.x,T.y+S);break;case"to-top":a=e.createLinearGradient(T.x,T.y+S,T.x,T.y-S);break;case"to-left":a=e.createLinearGradient(T.x+w,T.y,T.x-w,T.y);break;case"to-right":a=e.createLinearGradient(T.x-w,T.y,T.x+w,T.y);break;case"to-bottom-right":case"to-right-bottom":a=e.createLinearGradient(T.x-w,T.y-S,T.x+w,T.y+S);break;case"to-top-right":case"to-right-top":a=e.createLinearGradient(T.x-w,T.y+S,T.x+w,T.y-S);break;case"to-bottom-left":case"to-left-bottom":a=e.createLinearGradient(T.x+w,T.y-S,T.x-w,T.y+S);break;case"to-top-left":case"to-left-top":a=e.createLinearGradient(T.x+w,T.y+S,T.x-w,T.y-S);break}}if(!a)return null;for(var L=u.length===l.length,N=l.length,I=0;I<N;I++)a.addColorStop(L?u[I]:I/(N-1),"rgba("+l[I][0]+","+l[I][1]+","+l[I][2]+","+i+")");return a};Ps.gradientFillStyle=function(e,t,r,n){var i=this.createGradientStyleFor(e,"background",t,r,n);if(!i)return null;e.fillStyle=i};Ps.colorFillStyle=function(e,t,r,n,i){e.fillStyle="rgba("+t+","+r+","+n+","+i+")"};Ps.eleFillStyle=function(e,t,r){var n=t.pstyle("background-fill").value;if(n==="linear-gradient"||n==="radial-gradient")this.gradientFillStyle(e,t,n,r);else{var i=t.pstyle("background-color").value;this.colorFillStyle(e,i[0],i[1],i[2],r)}};Ps.gradientStrokeStyle=function(e,t,r,n){var i=this.createGradientStyleFor(e,"line",t,r,n);if(!i)return null;e.strokeStyle=i};Ps.colorStrokeStyle=function(e,t,r,n,i){e.strokeStyle="rgba("+t+","+r+","+n+","+i+")"};Ps.eleStrokeStyle=function(e,t,r){var n=t.pstyle("line-fill").value;if(n==="linear-gradient"||n==="radial-gradient")this.gradientStrokeStyle(e,t,n,r);else{var i=t.pstyle("line-color").value;this.colorStrokeStyle(e,i[0],i[1],i[2],r)}};Ps.matchCanvasSize=function(e){var t=this,r=t.data,n=t.findContainerClientCoords(),i=n[2],a=n[3],s=t.getPixelRatio(),l=t.motionBlurPxRatio;(e===t.data.bufferCanvases[t.MOTIONBLUR_BUFFER_NODE]||e===t.data.bufferCanvases[t.MOTIONBLUR_BUFFER_DRAG])&&(s=l);var u=i*s,h=a*s,d;if(!(u===t.canvasWidth&&h===t.canvasHeight)){t.fontCaches=null;var f=r.canvasContainer;f.style.width=i+"px",f.style.height=a+"px";for(var p=0;p<t.CANVAS_LAYERS;p++)d=r.canvases[p],d.width=u,d.height=h,d.style.width=i+"px",d.style.height=a+"px";for(var p=0;p<t.BUFFER_COUNT;p++)d=r.bufferCanvases[p],d.width=u,d.height=h,d.style.width=i+"px",d.style.height=a+"px";t.textureMult=1,s<=1&&(d=r.bufferCanvases[t.TEXTURE_BUFFER],t.textureMult=2,d.width=u*t.textureMult,d.height=h*t.textureMult),t.canvasWidth=u,t.canvasHeight=h,t.pixelRatio=s}};Ps.renderTo=function(e,t,r,n){this.render({forcedContext:e,forcedZoom:t,forcedPan:r,drawAllLayers:!0,forcedPxRatio:n})};Ps.clearCanvas=function(){var e=this,t=e.data;function r(n){n.clearRect(0,0,e.canvasWidth,e.canvasHeight)}o(r,"clear"),r(t.contexts[e.NODE]),r(t.contexts[e.DRAG])};Ps.render=function(e){var t=this;e=e||wbe();var r=t.cy,n=e.forcedContext,i=e.drawAllLayers,a=e.drawOnlyNodeLayer,s=e.forcedZoom,l=e.forcedPan,u=e.forcedPxRatio===void 0?this.getPixelRatio():e.forcedPxRatio,h=t.data,d=h.canvasNeedsRedraw,f=t.textureOnViewport&&!n&&(t.pinching||t.hoverData.dragging||t.swipePanning||t.data.wheelZooming),p=e.motionBlur!==void 0?e.motionBlur:t.motionBlur,m=t.motionBlurPxRatio,g=r.hasCompoundNodes(),y=t.hoverData.draggingEles,v=!!(t.hoverData.selecting||t.touchData.selecting);p=p&&!n&&t.motionBlurEnabled&&!v;var x=p;n||(t.prevPxRatio!==u&&(t.invalidateContainerClientCoordsCache(),t.matchCanvasSize(t.container),t.redrawHint("eles",!0),t.redrawHint("drag",!0)),t.prevPxRatio=u),!n&&t.motionBlurTimeout&&clearTimeout(t.motionBlurTimeout),p&&(t.mbFrames==null&&(t.mbFrames=0),t.mbFrames++,t.mbFrames<3&&(x=!1),t.mbFrames>t.minMbLowQualFrames&&(t.motionBlurPxRatio=t.mbPxRBlurry)),t.clearingMotionBlur&&(t.motionBlurPxRatio=1),t.textureDrawLastFrame&&!f&&(d[t.NODE]=!0,d[t.SELECT_BOX]=!0);var b=r.style(),T=r.zoom(),k=s!==void 0?s:T,C=r.pan(),w={x:C.x,y:C.y},S={zoom:T,pan:{x:C.x,y:C.y}},R=t.prevViewport,L=R===void 0||S.zoom!==R.zoom||S.pan.x!==R.pan.x||S.pan.y!==R.pan.y;!L&&!(y&&!g)&&(t.motionBlurPxRatio=1),l&&(w=l),k*=u,w.x*=u,w.y*=u;var N=t.getCachedZSortedEles();function I(te,le,ie,ae,Re){var be=te.globalCompositeOperation;te.globalCompositeOperation="destination-out",t.colorFillStyle(te,255,255,255,t.motionBlurTransparency),te.fillRect(le,ie,ae,Re),te.globalCompositeOperation=be}o(I,"mbclear");function _(te,le){var ie,ae,Re,be;!t.clearingMotionBlur&&(te===h.bufferContexts[t.MOTIONBLUR_BUFFER_NODE]||te===h.bufferContexts[t.MOTIONBLUR_BUFFER_DRAG])?(ie={x:C.x*m,y:C.y*m},ae=T*m,Re=t.canvasWidth*m,be=t.canvasHeight*m):(ie=w,ae=k,Re=t.canvasWidth,be=t.canvasHeight),te.setTransform(1,0,0,1,0,0),le==="motionBlur"?I(te,0,0,Re,be):!n&&(le===void 0||le)&&te.clearRect(0,0,Re,be),i||(te.translate(ie.x,ie.y),te.scale(ae,ae)),l&&te.translate(l.x,l.y),s&&te.scale(s,s)}if(o(_,"setContextTransform"),f||(t.textureDrawLastFrame=!1),f){if(t.textureDrawLastFrame=!0,!t.textureCache){t.textureCache={},t.textureCache.bb=r.mutableElements().boundingBox(),t.textureCache.texture=t.data.bufferCanvases[t.TEXTURE_BUFFER];var A=t.data.bufferContexts[t.TEXTURE_BUFFER];A.setTransform(1,0,0,1,0,0),A.clearRect(0,0,t.canvasWidth*t.textureMult,t.canvasHeight*t.textureMult),t.render({forcedContext:A,drawOnlyNodeLayer:!0,forcedPxRatio:u*t.textureMult});var S=t.textureCache.viewport={zoom:r.zoom(),pan:r.pan(),width:t.canvasWidth,height:t.canvasHeight};S.mpan={x:(0-S.pan.x)/S.zoom,y:(0-S.pan.y)/S.zoom}}d[t.DRAG]=!1,d[t.NODE]=!1;var M=h.contexts[t.NODE],D=t.textureCache.texture,S=t.textureCache.viewport;M.setTransform(1,0,0,1,0,0),p?I(M,0,0,S.width,S.height):M.clearRect(0,0,S.width,S.height);var P=b.core("outside-texture-bg-color").value,B=b.core("outside-texture-bg-opacity").value;t.colorFillStyle(M,P[0],P[1],P[2],B),M.fillRect(0,0,S.width,S.height);var T=r.zoom();_(M,!1),M.clearRect(S.mpan.x,S.mpan.y,S.width/S.zoom/u,S.height/S.zoom/u),M.drawImage(D,S.mpan.x,S.mpan.y,S.width/S.zoom/u,S.height/S.zoom/u)}else t.textureOnViewport&&!n&&(t.textureCache=null);var O=r.extent(),$=t.pinching||t.hoverData.dragging||t.swipePanning||t.data.wheelZooming||t.hoverData.draggingEles||t.cy.animated(),V=t.hideEdgesOnViewport&&$,G=[];if(G[t.NODE]=!d[t.NODE]&&p&&!t.clearedForMotionBlur[t.NODE]||t.clearingMotionBlur,G[t.NODE]&&(t.clearedForMotionBlur[t.NODE]=!0),G[t.DRAG]=!d[t.DRAG]&&p&&!t.clearedForMotionBlur[t.DRAG]||t.clearingMotionBlur,G[t.DRAG]&&(t.clearedForMotionBlur[t.DRAG]=!0),d[t.NODE]||i||a||G[t.NODE]){var z=p&&!G[t.NODE]&&m!==1,M=n||(z?t.data.bufferContexts[t.MOTIONBLUR_BUFFER_NODE]:h.contexts[t.NODE]),W=p&&!z?"motionBlur":void 0;_(M,W),V?t.drawCachedNodes(M,N.nondrag,u,O):t.drawLayeredElements(M,N.nondrag,u,O),t.debug&&t.drawDebugPoints(M,N.nondrag),!i&&!p&&(d[t.NODE]=!1)}if(!a&&(d[t.DRAG]||i||G[t.DRAG])){var z=p&&!G[t.DRAG]&&m!==1,M=n||(z?t.data.bufferContexts[t.MOTIONBLUR_BUFFER_DRAG]:h.contexts[t.DRAG]);_(M,p&&!z?"motionBlur":void 0),V?t.drawCachedNodes(M,N.drag,u,O):t.drawCachedElements(M,N.drag,u,O),t.debug&&t.drawDebugPoints(M,N.drag),!i&&!p&&(d[t.DRAG]=!1)}if(this.drawSelectionRectangle(e,_),p&&m!==1){var H=h.contexts[t.NODE],j=t.data.bufferCanvases[t.MOTIONBLUR_BUFFER_NODE],Q=h.contexts[t.DRAG],U=t.data.bufferCanvases[t.MOTIONBLUR_BUFFER_DRAG],oe=o(function(le,ie,ae){le.setTransform(1,0,0,1,0,0),ae||!x?le.clearRect(0,0,t.canvasWidth,t.canvasHeight):I(le,0,0,t.canvasWidth,t.canvasHeight);var Re=m;le.drawImage(ie,0,0,t.canvasWidth*Re,t.canvasHeight*Re,0,0,t.canvasWidth,t.canvasHeight)},"drawMotionBlur");(d[t.NODE]||G[t.NODE])&&(oe(H,j,G[t.NODE]),d[t.NODE]=!1),(d[t.DRAG]||G[t.DRAG])&&(oe(Q,U,G[t.DRAG]),d[t.DRAG]=!1)}t.prevViewport=S,t.clearingMotionBlur&&(t.clearingMotionBlur=!1,t.motionBlurCleared=!0,t.motionBlur=!0),p&&(t.motionBlurTimeout=setTimeout(function(){t.motionBlurTimeout=null,t.clearedForMotionBlur[t.NODE]=!1,t.clearedForMotionBlur[t.DRAG]=!1,t.motionBlur=!1,t.clearingMotionBlur=!f,t.mbFrames=0,d[t.NODE]=!0,d[t.DRAG]=!0,t.redraw()},rgt)),n||r.emit("render")};Ps.drawSelectionRectangle=function(e,t){var r=this,n=r.cy,i=r.data,a=n.style(),s=e.drawOnlyNodeLayer,l=e.drawAllLayers,u=i.canvasNeedsRedraw,h=e.forcedContext;if(r.showFps||!s&&u[r.SELECT_BOX]&&!l){var d=h||i.contexts[r.SELECT_BOX];if(t(d),r.selection[4]==1&&(r.hoverData.selecting||r.touchData.selecting)){var f=r.cy.zoom(),p=a.core("selection-box-border-width").value/f;d.lineWidth=p,d.fillStyle="rgba("+a.core("selection-box-color").value[0]+","+a.core("selection-box-color").value[1]+","+a.core("selection-box-color").value[2]+","+a.core("selection-box-opacity").value+")",d.fillRect(r.selection[0],r.selection[1],r.selection[2]-r.selection[0],r.selection[3]-r.selection[1]),p>0&&(d.strokeStyle="rgba("+a.core("selection-box-border-color").value[0]+","+a.core("selection-box-border-color").value[1]+","+a.core("selection-box-border-color").value[2]+","+a.core("selection-box-opacity").value+")",d.strokeRect(r.selection[0],r.selection[1],r.selection[2]-r.selection[0],r.selection[3]-r.selection[1]))}if(i.bgActivePosistion&&!r.hoverData.selecting){var f=r.cy.zoom(),m=i.bgActivePosistion;d.fillStyle="rgba("+a.core("active-bg-color").value[0]+","+a.core("active-bg-color").value[1]+","+a.core("active-bg-color").value[2]+","+a.core("active-bg-opacity").value+")",d.beginPath(),d.arc(m.x,m.y,a.core("active-bg-size").pfValue/f,0,2*Math.PI),d.fill()}var g=r.lastRedrawTime;if(r.showFps&&g){g=Math.round(g);var y=Math.round(1e3/g),v="1 frame = "+g+" ms = "+y+" fps";if(d.setTransform(1,0,0,1,0,0),d.fillStyle="rgba(255, 0, 0, 0.75)",d.strokeStyle="rgba(255, 0, 0, 0.75)",d.font="30px Arial",!ET){var x=d.measureText(v);ET=x.actualBoundingBoxAscent}d.fillText(v,0,ET);var b=60;d.strokeRect(0,ET+10,250,20),d.fillRect(0,ET+10,250*Math.min(y/b,1),20)}l||(u[r.SELECT_BOX]=!1)}};o(Kxe,"compileShader");o(ngt,"createProgram");o(igt,"createTextureCanvas");o(zF,"getEffectivePanZoom");o(agt,"getEffectiveZoom");o(sgt,"modelToRenderedPosition");o(ogt,"isSimpleShape");o(lgt,"arrayEqual");o(Xm,"toWebGLColor");o(L1,"indexToVec4");o(cgt,"vec4ToIndex");o(ugt,"createTexture");o(B2e,"getTypeInfo");o($2e,"createTypedArray");o(hgt,"createTypedArrayView");o(dgt,"createBufferStaticDraw");o(xu,"createBufferDynamicDraw");o(fgt,"create3x3MatrixBufferDynamicDraw");o(pgt,"createPickingFrameBuffer");Zxe=typeof Float32Array<"u"?Float32Array:Array;Math.hypot||(Math.hypot=function(){for(var e=0,t=arguments.length;t--;)e+=arguments[t]*arguments[t];return Math.sqrt(e)});o(q$,"create");o(Qxe,"identity");o(mgt,"multiply");o(X5,"translate");o(Jxe,"rotate");o(dF,"scale");o(ggt,"projection");ygt=(function(){function e(t,r,n,i){Yf(this,e),this.debugID=Math.floor(Math.random()*1e4),this.r=t,this.texSize=r,this.texRows=n,this.texHeight=Math.floor(r/n),this.enableWrapping=!0,this.locked=!1,this.texture=null,this.needsBuffer=!0,this.freePointer={x:0,row:0},this.keyToLocation=new Map,this.canvas=i(t,r,r),this.scratch=i(t,r,this.texHeight,"scratch")}return o(e,"Atlas"),jf(e,[{key:"lock",value:o(function(){this.locked=!0},"lock")},{key:"getKeys",value:o(function(){return new Set(this.keyToLocation.keys())},"getKeys")},{key:"getScale",value:o(function(r){var n=r.w,i=r.h,a=this.texHeight,s=this.texSize,l=a/i,u=n*l,h=i*l;return u>s&&(l=s/n,u=n*l,h=i*l),{scale:l,texW:u,texH:h}},"getScale")},{key:"draw",value:o(function(r,n,i){var a=this;if(this.locked)throw new Error("can't draw, atlas is locked");var s=this.texSize,l=this.texRows,u=this.texHeight,h=this.getScale(n),d=h.scale,f=h.texW,p=h.texH,m=o(function(T,k){if(i&&k){var C=k.context,w=T.x,S=T.row,R=w,L=u*S;C.save(),C.translate(R,L),C.scale(d,d),i(C,n),C.restore()}},"drawAt"),g=[null,null],y=o(function(){m(a.freePointer,a.canvas),g[0]={x:a.freePointer.x,y:a.freePointer.row*u,w:f,h:p},g[1]={x:a.freePointer.x+f,y:a.freePointer.row*u,w:0,h:p},a.freePointer.x+=f,a.freePointer.x==s&&(a.freePointer.x=0,a.freePointer.row++)},"drawNormal"),v=o(function(){var T=a.scratch,k=a.canvas;T.clear(),m({x:0,row:0},T);var C=s-a.freePointer.x,w=f-C,S=u;{var R=a.freePointer.x,L=a.freePointer.row*u,N=C;k.context.drawImage(T,0,0,N,S,R,L,N,S),g[0]={x:R,y:L,w:N,h:p}}{var I=C,_=(a.freePointer.row+1)*u,A=w;k&&k.context.drawImage(T,I,0,A,S,0,_,A,S),g[1]={x:0,y:_,w:A,h:p}}a.freePointer.x=w,a.freePointer.row++},"drawWrapped"),x=o(function(){a.freePointer.x=0,a.freePointer.row++},"moveToStartOfNextRow");if(this.freePointer.x+f<=s)y();else{if(this.freePointer.row>=l-1)return!1;this.freePointer.x===s?(x(),y()):this.enableWrapping?v():(x(),y())}return this.keyToLocation.set(r,g),this.needsBuffer=!0,g},"draw")},{key:"getOffsets",value:o(function(r){return this.keyToLocation.get(r)},"getOffsets")},{key:"isEmpty",value:o(function(){return this.freePointer.x===0&&this.freePointer.row===0},"isEmpty")},{key:"canFit",value:o(function(r){if(this.locked)return!1;var n=this.texSize,i=this.texRows,a=this.getScale(r),s=a.texW;return this.freePointer.x+s>n?this.freePointer.row<i-1:!0},"canFit")},{key:"bufferIfNeeded",value:o(function(r){this.texture||(this.texture=ugt(r,this.debugID)),this.needsBuffer&&(this.texture.buffer(this.canvas),this.needsBuffer=!1,this.locked&&(this.canvas=null,this.scratch=null))},"bufferIfNeeded")},{key:"dispose",value:o(function(){this.texture&&(this.texture.deleteTexture(),this.texture=null),this.canvas=null,this.scratch=null,this.locked=!0},"dispose")}])})(),vgt=(function(){function e(t,r,n,i){Yf(this,e),this.r=t,this.texSize=r,this.texRows=n,this.createTextureCanvas=i,this.atlases=[],this.styleKeyToAtlas=new Map,this.markedKeys=new Set}return o(e,"AtlasCollection"),jf(e,[{key:"getKeys",value:o(function(){return new Set(this.styleKeyToAtlas.keys())},"getKeys")},{key:"_createAtlas",value:o(function(){var r=this.r,n=this.texSize,i=this.texRows,a=this.createTextureCanvas;return new ygt(r,n,i,a)},"_createAtlas")},{key:"_getScratchCanvas",value:o(function(){if(!this.scratch){var r=this.r,n=this.texSize,i=this.texRows,a=this.createTextureCanvas,s=Math.floor(n/i);this.scratch=a(r,n,s,"scratch")}return this.scratch},"_getScratchCanvas")},{key:"draw",value:o(function(r,n,i){var a=this.styleKeyToAtlas.get(r);return a||(a=this.atlases[this.atlases.length-1],(!a||!a.canFit(n))&&(a&&a.lock(),a=this._createAtlas(),this.atlases.push(a)),a.draw(r,n,i),this.styleKeyToAtlas.set(r,a)),a},"draw")},{key:"getAtlas",value:o(function(r){return this.styleKeyToAtlas.get(r)},"getAtlas")},{key:"hasAtlas",value:o(function(r){return this.styleKeyToAtlas.has(r)},"hasAtlas")},{key:"markKeyForGC",value:o(function(r){this.markedKeys.add(r)},"markKeyForGC")},{key:"gc",value:o(function(){var r=this,n=this.markedKeys;if(n.size===0){console.log("nothing to garbage collect");return}var i=[],a=new Map,s=null,l=yo(this.atlases),u;try{var h=o(function(){var f=u.value,p=f.getKeys(),m=xgt(n,p);if(m.size===0)return i.push(f),p.forEach(function(C){return a.set(C,f)}),1;s||(s=r._createAtlas(),i.push(s));var g=yo(p),y;try{for(g.s();!(y=g.n()).done;){var v=y.value;if(!m.has(v)){var x=f.getOffsets(v),b=Ki(x,2),T=b[0],k=b[1];s.canFit({w:T.w+k.w,h:T.h})||(s.lock(),s=r._createAtlas(),i.push(s)),f.canvas&&(r._copyTextureToNewAtlas(v,f,s),a.set(v,s))}}}catch(C){g.e(C)}finally{g.f()}f.dispose()},"_loop");for(l.s();!(u=l.n()).done;)h()}catch(d){l.e(d)}finally{l.f()}this.atlases=i,this.styleKeyToAtlas=a,this.markedKeys=new Set},"gc")},{key:"_copyTextureToNewAtlas",value:o(function(r,n,i){var a=n.getOffsets(r),s=Ki(a,2),l=s[0],u=s[1];if(u.w===0)i.draw(r,l,function(p){p.drawImage(n.canvas,l.x,l.y,l.w,l.h,0,0,l.w,l.h)});else{var h=this._getScratchCanvas();h.clear(),h.context.drawImage(n.canvas,l.x,l.y,l.w,l.h,0,0,l.w,l.h),h.context.drawImage(n.canvas,u.x,u.y,u.w,u.h,l.w,0,u.w,u.h);var d=l.w+u.w,f=l.h;i.draw(r,{w:d,h:f},function(p){p.drawImage(h,0,0,d,f,0,0,d,f)})}},"_copyTextureToNewAtlas")},{key:"getCounts",value:o(function(){return{keyCount:this.styleKeyToAtlas.size,atlasCount:new Set(this.styleKeyToAtlas.values()).size}},"getCounts")}])})();o(xgt,"intersection");bgt=(function(){function e(t,r){Yf(this,e),this.r=t,this.globalOptions=r,this.atlasSize=r.webglTexSize,this.maxAtlasesPerBatch=r.webglTexPerBatch,this.renderTypes=new Map,this.collections=new Map,this.typeAndIdToKey=new Map}return o(e,"AtlasManager"),jf(e,[{key:"getAtlasSize",value:o(function(){return this.atlasSize},"getAtlasSize")},{key:"addAtlasCollection",value:o(function(r,n){var i=this.globalOptions,a=i.webglTexSize,s=i.createTextureCanvas,l=n.texRows,u=this._cacheScratchCanvas(s),h=new vgt(this.r,a,l,u);this.collections.set(r,h)},"addAtlasCollection")},{key:"addRenderType",value:o(function(r,n){var i=n.collection;if(!this.collections.has(i))throw new Error("invalid atlas collection name '".concat(i,"'"));var a=this.collections.get(i),s=br({type:r,atlasCollection:a},n);this.renderTypes.set(r,s)},"addRenderType")},{key:"getRenderTypeOpts",value:o(function(r){return this.renderTypes.get(r)},"getRenderTypeOpts")},{key:"getAtlasCollection",value:o(function(r){return this.collections.get(r)},"getAtlasCollection")},{key:"_cacheScratchCanvas",value:o(function(r){var n=-1,i=-1,a=null;return function(s,l,u,h){return h?((!a||l!=n||u!=i)&&(n=l,i=u,a=r(s,l,u)),a):r(s,l,u)}},"_cacheScratchCanvas")},{key:"_key",value:o(function(r,n){return"".concat(r,"-").concat(n)},"_key")},{key:"invalidate",value:o(function(r){var n=this,i=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},a=i.forceRedraw,s=a===void 0?!1:a,l=i.filterEle,u=l===void 0?function(){return!0}:l,h=i.filterType,d=h===void 0?function(){return!0}:h,f=!1,p=!1,m=yo(r),g;try{for(m.s();!(g=m.n()).done;){var y=g.value;if(u(y)){var v=yo(this.renderTypes.values()),x;try{var b=o(function(){var k=x.value,C=k.type;if(d(C)){var w=n.collections.get(k.collection),S=k.getKey(y),R=Array.isArray(S)?S:[S];if(s)R.forEach(function(_){return w.markKeyForGC(_)}),p=!0;else{var L=k.getID?k.getID(y):y.id(),N=n._key(C,L),I=n.typeAndIdToKey.get(N);I!==void 0&&!lgt(R,I)&&(f=!0,n.typeAndIdToKey.delete(N),I.forEach(function(_){return w.markKeyForGC(_)}))}}},"_loop2");for(v.s();!(x=v.n()).done;)b()}catch(T){v.e(T)}finally{v.f()}}}}catch(T){m.e(T)}finally{m.f()}return p&&(this.gc(),f=!1),f},"invalidate")},{key:"gc",value:o(function(){var r=yo(this.collections.values()),n;try{for(r.s();!(n=r.n()).done;){var i=n.value;i.gc()}}catch(a){r.e(a)}finally{r.f()}},"gc")},{key:"getOrCreateAtlas",value:o(function(r,n,i,a){var s=this.renderTypes.get(n),l=this.collections.get(s.collection),u=!1,h=l.draw(a,i,function(p){s.drawClipped?(p.save(),p.beginPath(),p.rect(0,0,i.w,i.h),p.clip(),s.drawElement(p,r,i,!0,!0),p.restore()):s.drawElement(p,r,i,!0,!0),u=!0});if(u){var d=s.getID?s.getID(r):r.id(),f=this._key(n,d);this.typeAndIdToKey.has(f)?this.typeAndIdToKey.get(f).push(a):this.typeAndIdToKey.set(f,[a])}return h},"getOrCreateAtlas")},{key:"getAtlasInfo",value:o(function(r,n){var i=this,a=this.renderTypes.get(n),s=a.getKey(r),l=Array.isArray(s)?s:[s];return l.map(function(u){var h=a.getBoundingBox(r,u),d=i.getOrCreateAtlas(r,n,h,u),f=d.getOffsets(u),p=Ki(f,2),m=p[0],g=p[1];return{atlas:d,tex:m,tex1:m,tex2:g,bb:h}})},"getAtlasInfo")},{key:"getDebugInfo",value:o(function(){var r=[],n=yo(this.collections),i;try{for(n.s();!(i=n.n()).done;){var a=Ki(i.value,2),s=a[0],l=a[1],u=l.getCounts(),h=u.keyCount,d=u.atlasCount;r.push({type:s,keyCount:h,atlasCount:d})}}catch(f){n.e(f)}finally{n.f()}return r},"getDebugInfo")}])})(),Tgt=(function(){function e(t){Yf(this,e),this.globalOptions=t,this.atlasSize=t.webglTexSize,this.maxAtlasesPerBatch=t.webglTexPerBatch,this.batchAtlases=[]}return o(e,"AtlasBatchManager"),jf(e,[{key:"getMaxAtlasesPerBatch",value:o(function(){return this.maxAtlasesPerBatch},"getMaxAtlasesPerBatch")},{key:"getAtlasSize",value:o(function(){return this.atlasSize},"getAtlasSize")},{key:"getIndexArray",value:o(function(){return Array.from({length:this.maxAtlasesPerBatch},function(r,n){return n})},"getIndexArray")},{key:"startBatch",value:o(function(){this.batchAtlases=[]},"startBatch")},{key:"getAtlasCount",value:o(function(){return this.batchAtlases.length},"getAtlasCount")},{key:"getAtlases",value:o(function(){return this.batchAtlases},"getAtlases")},{key:"canAddToCurrentBatch",value:o(function(r){return this.batchAtlases.length===this.maxAtlasesPerBatch?this.batchAtlases.includes(r):!0},"canAddToCurrentBatch")},{key:"getAtlasIndexForBatch",value:o(function(r){var n=this.batchAtlases.indexOf(r);if(n<0){if(this.batchAtlases.length===this.maxAtlasesPerBatch)throw new Error("cannot add more atlases to batch");this.batchAtlases.push(r),n=this.batchAtlases.length-1}return n},"getAtlasIndexForBatch")}])})(),Cgt=`
   float circleSD(vec2 p, float r) {
     return distance(vec2(0), p) - r; // signed distance
   }
-`,xot=`
+`,wgt=`
   float rectangleSD(vec2 p, vec2 b) {
     vec2 d = abs(p)-b;
     return distance(vec2(0),max(d,0.0)) + min(max(d.x,d.y),0.0);
   }
-`,bot=`
+`,kgt=`
   float roundRectangleSD(vec2 p, vec2 b, vec4 cr) {
     cr.xy = (p.x > 0.0) ? cr.xy : cr.zw;
     cr.x  = (p.y > 0.0) ? cr.x  : cr.y;
     vec2 q = abs(p) - b + cr.x;
     return min(max(q.x, q.y), 0.0) + distance(vec2(0), max(q, 0.0)) - cr.x;
   }
-`,Tot=`
+`,Sgt=`
   float ellipseSD(vec2 p, vec2 ab) {
     p = abs( p ); // symmetry
 
@@ -613,7 +612,7 @@
     // return signed distance
     return (dot(p/ab,p/ab)>1.0) ? d : -d;
   }
-`,Ub={SCREEN:{name:"screen",screen:!0},PICKING:{name:"picking",picking:!0}},U3={IGNORE:1,USE_BB:2},$O=0,$0e=1,z0e=2,zO=3,a1=4,T3=5,Fb=6,$b=7,Cot=(function(){function e(t,r,i){Kd(this,e),this.r=t,this.gl=r,this.maxInstances=i.webglBatchSize,this.atlasSize=i.webglTexSize,this.bgColor=i.bgColor,this.debug=i.webglDebug,this.batchDebugInfo=[],i.enableWrapping=!0,i.createTextureCanvas=eot,this.atlasManager=new got(t,i),this.batchManager=new yot(i),this.simpleShapeOptions=new Map,this.program=this._createShaderProgram(Ub.SCREEN),this.pickingProgram=this._createShaderProgram(Ub.PICKING),this.vao=this._createVAO()}return o(e,"ElementDrawingWebGL"),Zd(e,[{key:"addAtlasCollection",value:o(function(r,i){this.atlasManager.addAtlasCollection(r,i)},"addAtlasCollection")},{key:"addTextureAtlasRenderType",value:o(function(r,i){this.atlasManager.addRenderType(r,i)},"addTextureAtlasRenderType")},{key:"addSimpleShapeRenderType",value:o(function(r,i){this.simpleShapeOptions.set(r,i)},"addSimpleShapeRenderType")},{key:"invalidate",value:o(function(r){var i=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},n=i.type,a=this.atlasManager;return n?a.invalidate(r,{filterType:o(function(l){return l===n},"filterType"),forceRedraw:!0}):a.invalidate(r)},"invalidate")},{key:"gc",value:o(function(){this.atlasManager.gc()},"gc")},{key:"_createShaderProgram",value:o(function(r){var i=this.gl,n=`#version 300 es
+`,NT={SCREEN:{name:"screen",screen:!0},PICKING:{name:"picking",picking:!0}},lA={IGNORE:1,USE_BB:2},H$=0,ebe=1,tbe=2,U$=3,D1=4,$5=5,AT=6,RT=7,Egt=(function(){function e(t,r,n){Yf(this,e),this.r=t,this.gl=r,this.maxInstances=n.webglBatchSize,this.atlasSize=n.webglTexSize,this.bgColor=n.bgColor,this.debug=n.webglDebug,this.batchDebugInfo=[],n.enableWrapping=!0,n.createTextureCanvas=igt,this.atlasManager=new bgt(t,n),this.batchManager=new Tgt(n),this.simpleShapeOptions=new Map,this.program=this._createShaderProgram(NT.SCREEN),this.pickingProgram=this._createShaderProgram(NT.PICKING),this.vao=this._createVAO()}return o(e,"ElementDrawingWebGL"),jf(e,[{key:"addAtlasCollection",value:o(function(r,n){this.atlasManager.addAtlasCollection(r,n)},"addAtlasCollection")},{key:"addTextureAtlasRenderType",value:o(function(r,n){this.atlasManager.addRenderType(r,n)},"addTextureAtlasRenderType")},{key:"addSimpleShapeRenderType",value:o(function(r,n){this.simpleShapeOptions.set(r,n)},"addSimpleShapeRenderType")},{key:"invalidate",value:o(function(r){var n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},i=n.type,a=this.atlasManager;return i?a.invalidate(r,{filterType:o(function(l){return l===i},"filterType"),forceRedraw:!0}):a.invalidate(r)},"invalidate")},{key:"gc",value:o(function(){this.atlasManager.gc()},"gc")},{key:"_createShaderProgram",value:o(function(r){var n=this.gl,i=`#version 300 es
       precision highp float;
 
       uniform mat3 uPanZoomMatrix;
@@ -660,7 +659,7 @@
         int vid = gl_VertexID;
         vec2 position = aPosition; // TODO make this a vec3, simplifies some code below
 
-        if(aVertType == `.concat($O,`) {
+        if(aVertType == `.concat(H$,`) {
           float texX = aTex.x; // texture coordinates
           float texY = aTex.y;
           float texW = aTex.z;
@@ -678,8 +677,8 @@
 
           gl_Position = vec4(uPanZoomMatrix * aTransform * vec3(position, 1.0), 1.0);
         }
-        else if(aVertType == `).concat(a1," || aVertType == ").concat($b,` 
-             || aVertType == `).concat(T3," || aVertType == ").concat(Fb,`) { // simple shapes
+        else if(aVertType == `).concat(D1," || aVertType == ").concat(RT,` 
+             || aVertType == `).concat($5," || aVertType == ").concat(AT,`) { // simple shapes
 
           // the bounding box is needed by the fragment shader
           vBotLeft  = (aTransform * vec3(0, 0, 1)).xy; // flat
@@ -694,7 +693,7 @@
 
           gl_Position = vec4(uPanZoomMatrix * aTransform * vec3(position, 1.0), 1.0);
         }
-        else if(aVertType == `).concat($0e,`) {
+        else if(aVertType == `).concat(ebe,`) {
           vec2 source = aPointAPointB.xy;
           vec2 target = aPointAPointB.zw;
 
@@ -709,7 +708,7 @@
           gl_Position = vec4(uPanZoomMatrix * vec3(point, 1.0), 1.0);
           vColor = aColor;
         } 
-        else if(aVertType == `).concat(z0e,`) {
+        else if(aVertType == `).concat(tbe,`) {
           vec2 pointA = aPointAPointB.xy;
           vec2 pointB = aPointAPointB.zw;
           vec2 pointC = aPointCPointD.xy;
@@ -758,7 +757,7 @@
 
           vColor = aColor;
         } 
-        else if(aVertType == `).concat(zO,` && vid < 3) {
+        else if(aVertType == `).concat(U$,` && vid < 3) {
           // massage the first triangle into an edge arrow
           if(vid == 0)
             position = vec2(-0.15, -0.3);
@@ -803,10 +802,10 @@
 
       out vec4 outColor;
 
-      `).concat(vot,`
-      `).concat(xot,`
-      `).concat(bot,`
-      `).concat(Tot,`
+      `).concat(Cgt,`
+      `).concat(wgt,`
+      `).concat(kgt,`
+      `).concat(Sgt,`
 
       vec4 blend(vec4 top, vec4 bot) { // blend colors with premultiplied alpha
         return vec4( 
@@ -822,21 +821,21 @@
       }
 
       void main(void) {
-        if(vVertType == `).concat($O,`) {
+        if(vVertType == `).concat(H$,`) {
           // look up the texel from the texture unit
           `).concat(a.map(function(h){return"if(vAtlasId == ".concat(h,") outColor = texture(uTexture").concat(h,", vTexCoord);")}).join(`
 	else `),`
         } 
-        else if(vVertType == `).concat(zO,`) {
+        else if(vVertType == `).concat(U$,`) {
           // mimics how canvas renderer uses context.globalCompositeOperation = 'destination-out';
           outColor = blend(vColor, uBGColor);
           outColor.a = 1.0; // make opaque, masks out line under arrow
         }
-        else if(vVertType == `).concat(a1,` && vBorderWidth == vec2(0.0)) { // simple rectangle with no border
+        else if(vVertType == `).concat(D1,` && vBorderWidth == vec2(0.0)) { // simple rectangle with no border
           outColor = vColor; // unit square is already transformed to the rectangle, nothing else needs to be done
         }
-        else if(vVertType == `).concat(a1," || vVertType == ").concat($b,` 
-          || vVertType == `).concat(T3," || vVertType == ").concat(Fb,`) { // use SDF
+        else if(vVertType == `).concat(D1," || vVertType == ").concat(RT,` 
+          || vVertType == `).concat($5," || vVertType == ").concat(AT,`) { // use SDF
 
           float outerBorder = vBorderWidth[0];
           float innerBorder = vBorderWidth[1];
@@ -847,11 +846,11 @@
           vec2 p = vPosition - vec2(vTopRight.x - b[0] - outerBorder, vTopRight.y - b[1] - outerBorder); // translate to center
 
           float d; // signed distance
-          if(vVertType == `).concat(a1,`) {
+          if(vVertType == `).concat(D1,`) {
             d = rectangleSD(p, b);
-          } else if(vVertType == `).concat($b,` && w == h) {
+          } else if(vVertType == `).concat(RT,` && w == h) {
             d = circleSD(p, b.x); // faster than ellipse
-          } else if(vVertType == `).concat($b,`) {
+          } else if(vVertType == `).concat(RT,`) {
             d = ellipseSD(p, b);
           } else {
             d = roundRectangleSD(p, b, vCornerRadius.wzyx);
@@ -891,13 +890,13 @@
         `).concat(r.picking?`if(outColor.a == 0.0) discard;
              else outColor = vIndex;`:"",`
       }
-    `),l=Jst(i,n,s);l.aPosition=i.getAttribLocation(l,"aPosition"),l.aIndex=i.getAttribLocation(l,"aIndex"),l.aVertType=i.getAttribLocation(l,"aVertType"),l.aTransform=i.getAttribLocation(l,"aTransform"),l.aAtlasId=i.getAttribLocation(l,"aAtlasId"),l.aTex=i.getAttribLocation(l,"aTex"),l.aPointAPointB=i.getAttribLocation(l,"aPointAPointB"),l.aPointCPointD=i.getAttribLocation(l,"aPointCPointD"),l.aLineWidth=i.getAttribLocation(l,"aLineWidth"),l.aColor=i.getAttribLocation(l,"aColor"),l.aCornerRadius=i.getAttribLocation(l,"aCornerRadius"),l.aBorderColor=i.getAttribLocation(l,"aBorderColor"),l.uPanZoomMatrix=i.getUniformLocation(l,"uPanZoomMatrix"),l.uAtlasSize=i.getUniformLocation(l,"uAtlasSize"),l.uBGColor=i.getUniformLocation(l,"uBGColor"),l.uZoom=i.getUniformLocation(l,"uZoom"),l.uTextures=[];for(var u=0;u<this.batchManager.getMaxAtlasesPerBatch();u++)l.uTextures.push(i.getUniformLocation(l,"uTexture".concat(u)));return l},"_createShaderProgram")},{key:"_createVAO",value:o(function(){var r=[0,0,1,0,1,1,0,0,1,1,0,1];this.vertexCount=r.length/2;var i=this.maxInstances,n=this.gl,a=this.program,s=n.createVertexArray();return n.bindVertexArray(s),lot(n,"vec2",a.aPosition,r),this.transformBuffer=cot(n,i,a.aTransform),this.indexBuffer=Oc(n,i,"vec4",a.aIndex),this.vertTypeBuffer=Oc(n,i,"int",a.aVertType),this.atlasIdBuffer=Oc(n,i,"int",a.aAtlasId),this.texBuffer=Oc(n,i,"vec4",a.aTex),this.pointAPointBBuffer=Oc(n,i,"vec4",a.aPointAPointB),this.pointCPointDBuffer=Oc(n,i,"vec4",a.aPointCPointD),this.lineWidthBuffer=Oc(n,i,"vec2",a.aLineWidth),this.colorBuffer=Oc(n,i,"vec4",a.aColor),this.cornerRadiusBuffer=Oc(n,i,"vec4",a.aCornerRadius),this.borderColorBuffer=Oc(n,i,"vec4",a.aBorderColor),n.bindVertexArray(null),s},"_createVAO")},{key:"buffers",get:o(function(){var r=this;return this._buffers||(this._buffers=Object.keys(this).filter(function(i){return $d(i,"Buffer")}).map(function(i){return r[i]})),this._buffers},"get")},{key:"startFrame",value:o(function(r){var i=arguments.length>1&&arguments[1]!==void 0?arguments[1]:Ub.SCREEN;this.panZoomMatrix=r,this.renderTarget=i,this.batchDebugInfo=[],this.wrappedCount=0,this.simpleCount=0,this.startBatch()},"startFrame")},{key:"startBatch",value:o(function(){this.instanceCount=0,this.batchManager.startBatch()},"startBatch")},{key:"endFrame",value:o(function(){this.endBatch()},"endFrame")},{key:"_isVisible",value:o(function(r,i){return r.visible()?i&&i.isVisible?i.isVisible(r):!0:!1},"_isVisible")},{key:"drawTexture",value:o(function(r,i,n){var a=this.atlasManager,s=this.batchManager,l=a.getRenderTypeOpts(n);if(this._isVisible(r,l)&&!(r.isEdge()&&!this._isValidEdge(r))){if(this.renderTarget.picking&&l.getTexPickingMode){var u=l.getTexPickingMode(r);if(u===U3.IGNORE)return;if(u==U3.USE_BB){this.drawPickingRectangle(r,i,n);return}}var h=a.getAtlasInfo(r,n),d=Fs(h),f;try{for(d.s();!(f=d.n()).done;){var p=f.value,m=p.atlas,g=p.tex1,y=p.tex2;s.canAddToCurrentBatch(m)||this.endBatch();for(var v=s.getAtlasIndexForBatch(m),x=0,b=[[g,!0],[y,!1]];x<b.length;x++){var T=Dn(b[x],2),w=T[0],C=T[1];if(w.w!=0){var k=this.instanceCount;this.vertTypeBuffer.getView(k)[0]=$O;var E=this.indexBuffer.getView(k);n1(i,E);var A=this.atlasIdBuffer.getView(k);A[0]=v;var N=this.texBuffer.getView(k);N[0]=w.x,N[1]=w.y,N[2]=w.w,N[3]=w.h;var P=this.transformBuffer.getMatrixView(k);this.setTransformMatrix(r,P,l,p,C),this.instanceCount++,C||this.wrappedCount++,this.instanceCount>=this.maxInstances&&this.endBatch()}}}}catch(I){d.e(I)}finally{d.f()}}},"drawTexture")},{key:"setTransformMatrix",value:o(function(r,i,n,a){var s=arguments.length>4&&arguments[4]!==void 0?arguments[4]:!0,l=0;if(n.shapeProps&&n.shapeProps.padding&&(l=r.pstyle(n.shapeProps.padding).pfValue),a){var u=a.bb,h=a.tex1,d=a.tex2,f=h.w/(h.w+d.w);s||(f=1-f);var p=this._getAdjustedBB(u,l,s,f);this._applyTransformMatrix(i,p,n,r)}else{var m=n.getBoundingBox(r),g=this._getAdjustedBB(m,l,!0,1);this._applyTransformMatrix(i,g,n,r)}},"setTransformMatrix")},{key:"_applyTransformMatrix",value:o(function(r,i,n,a){var s,l;B0e(r);var u=n.getRotation?n.getRotation(a):0;if(u!==0){var h=n.getRotationPoint(a),d=h.x,f=h.y;M3(r,r,[d,f]),F0e(r,r,u);var p=n.getRotationOffset(a);s=p.x+(i.xOffset||0),l=p.y+(i.yOffset||0)}else s=i.x1,l=i.y1;M3(r,r,[s,l]),sP(r,r,[i.w,i.h])},"_applyTransformMatrix")},{key:"_getAdjustedBB",value:o(function(r,i,n,a){var s=r.x1,l=r.y1,u=r.w,h=r.h,d=r.yOffset;i&&(s-=i,l-=i,u+=2*i,h+=2*i);var f=0,p=u*a;return n&&a<1?u=p:!n&&a<1&&(f=u-p,s+=f,u=p),{x1:s,y1:l,w:u,h,xOffset:f,yOffset:d}},"_getAdjustedBB")},{key:"drawPickingRectangle",value:o(function(r,i,n){var a=this.atlasManager.getRenderTypeOpts(n),s=this.instanceCount;this.vertTypeBuffer.getView(s)[0]=a1;var l=this.indexBuffer.getView(s);n1(i,l);var u=this.colorBuffer.getView(s);Hp([0,0,0],1,u);var h=this.transformBuffer.getMatrixView(s);this.setTransformMatrix(r,h,a),this.simpleCount++,this.instanceCount++,this.instanceCount>=this.maxInstances&&this.endBatch()},"drawPickingRectangle")},{key:"drawNode",value:o(function(r,i,n){var a=this.simpleShapeOptions.get(n);if(this._isVisible(r,a)){var s=a.shapeProps,l=this._getVertTypeForShape(r,s.shape);if(l===void 0||a.isSimple&&!a.isSimple(r)){this.drawTexture(r,i,n);return}var u=this.instanceCount;if(this.vertTypeBuffer.getView(u)[0]=l,l===T3||l===Fb){var h=a.getBoundingBox(r),d=this._getCornerRadius(r,s.radius,h),f=this.cornerRadiusBuffer.getView(u);f[0]=d,f[1]=d,f[2]=d,f[3]=d,l===Fb&&(f[0]=0,f[2]=0)}var p=this.indexBuffer.getView(u);n1(i,p);var m=r.pstyle(s.color).value,g=r.pstyle(s.opacity).value,y=this.colorBuffer.getView(u);Hp(m,g,y);var v=this.lineWidthBuffer.getView(u);if(v[0]=0,v[1]=0,s.border){var x=r.pstyle("border-width").value;if(x>0){var b=r.pstyle("border-color").value,T=r.pstyle("border-opacity").value,w=this.borderColorBuffer.getView(u);Hp(b,T,w);var C=r.pstyle("border-position").value;if(C==="inside")v[0]=0,v[1]=-x;else if(C==="outside")v[0]=x,v[1]=0;else{var k=x/2;v[0]=k,v[1]=-k}}}var E=this.transformBuffer.getMatrixView(u);this.setTransformMatrix(r,E,a),this.simpleCount++,this.instanceCount++,this.instanceCount>=this.maxInstances&&this.endBatch()}},"drawNode")},{key:"_getVertTypeForShape",value:o(function(r,i){var n=r.pstyle(i).value;switch(n){case"rectangle":return a1;case"ellipse":return $b;case"roundrectangle":case"round-rectangle":return T3;case"bottom-round-rectangle":return Fb;default:return}},"_getVertTypeForShape")},{key:"_getCornerRadius",value:o(function(r,i,n){var a=n.w,s=n.h;if(r.pstyle(i).value==="auto")return Hd(a,s);var l=r.pstyle(i).pfValue,u=a/2,h=s/2;return Math.min(l,h,u)},"_getCornerRadius")},{key:"drawEdgeArrow",value:o(function(r,i,n){if(r.visible()){var a=r._private.rscratch,s,l,u;if(n==="source"?(s=a.arrowStartX,l=a.arrowStartY,u=a.srcArrowAngle):(s=a.arrowEndX,l=a.arrowEndY,u=a.tgtArrowAngle),!(isNaN(s)||s==null||isNaN(l)||l==null||isNaN(u)||u==null)){var h=r.pstyle(n+"-arrow-shape").value;if(h!=="none"){var d=r.pstyle(n+"-arrow-color").value,f=r.pstyle("opacity").value,p=r.pstyle("line-opacity").value,m=f*p,g=r.pstyle("width").pfValue,y=r.pstyle("arrow-scale").value,v=this.r.getArrowWidth(g,y),x=this.instanceCount,b=this.transformBuffer.getMatrixView(x);B0e(b),M3(b,b,[s,l]),sP(b,b,[v,v]),F0e(b,b,u),this.vertTypeBuffer.getView(x)[0]=zO;var T=this.indexBuffer.getView(x);n1(i,T);var w=this.colorBuffer.getView(x);Hp(d,m,w),this.instanceCount++,this.instanceCount>=this.maxInstances&&this.endBatch()}}}},"drawEdgeArrow")},{key:"drawEdgeLine",value:o(function(r,i){if(r.visible()){var n=this._getEdgePoints(r);if(n){var a=r.pstyle("opacity").value,s=r.pstyle("line-opacity").value,l=r.pstyle("width").pfValue,u=r.pstyle("line-color").value,h=a*s;if(n.length/2+this.instanceCount>this.maxInstances&&this.endBatch(),n.length==4){var d=this.instanceCount;this.vertTypeBuffer.getView(d)[0]=$0e;var f=this.indexBuffer.getView(d);n1(i,f);var p=this.colorBuffer.getView(d);Hp(u,h,p);var m=this.lineWidthBuffer.getView(d);m[0]=l;var g=this.pointAPointBBuffer.getView(d);g[0]=n[0],g[1]=n[1],g[2]=n[2],g[3]=n[3],this.instanceCount++,this.instanceCount>=this.maxInstances&&this.endBatch()}else for(var y=0;y<n.length-2;y+=2){var v=this.instanceCount;this.vertTypeBuffer.getView(v)[0]=z0e;var x=this.indexBuffer.getView(v);n1(i,x);var b=this.colorBuffer.getView(v);Hp(u,h,b);var T=this.lineWidthBuffer.getView(v);T[0]=l;var w=n[y-2],C=n[y-1],k=n[y],E=n[y+1],A=n[y+2],N=n[y+3],P=n[y+4],I=n[y+5];y==0&&(w=2*k-A+.001,C=2*E-N+.001),y==n.length-4&&(P=2*A-k+.001,I=2*N-E+.001);var D=this.pointAPointBBuffer.getView(v);D[0]=w,D[1]=C,D[2]=k,D[3]=E;var _=this.pointCPointDBuffer.getView(v);_[0]=A,_[1]=N,_[2]=P,_[3]=I,this.instanceCount++,this.instanceCount>=this.maxInstances&&this.endBatch()}}}},"drawEdgeLine")},{key:"_isValidEdge",value:o(function(r){var i=r._private.rscratch;return!(i.badLine||i.allpts==null||isNaN(i.allpts[0]))},"_isValidEdge")},{key:"_getEdgePoints",value:o(function(r){var i=r._private.rscratch;if(this._isValidEdge(r)){var n=i.allpts;if(n.length==4)return n;var a=this._getNumSegments(r);return this._getCurveSegmentPoints(n,a)}},"_getEdgePoints")},{key:"_getNumSegments",value:o(function(r){var i=15;return Math.min(Math.max(i,5),this.maxInstances)},"_getNumSegments")},{key:"_getCurveSegmentPoints",value:o(function(r,i){if(r.length==4)return r;for(var n=Array((i+1)*2),a=0;a<=i;a++)if(a==0)n[0]=r[0],n[1]=r[1];else if(a==i)n[a*2]=r[r.length-2],n[a*2+1]=r[r.length-1];else{var s=a/i;this._setCurvePoint(r,s,n,a*2)}return n},"_getCurveSegmentPoints")},{key:"_setCurvePoint",value:o(function(r,i,n,a){if(r.length<=2)n[a]=r[0],n[a+1]=r[1];else{for(var s=Array(r.length-2),l=0;l<s.length;l+=2){var u=(1-i)*r[l]+i*r[l+2],h=(1-i)*r[l+1]+i*r[l+3];s[l]=u,s[l+1]=h}return this._setCurvePoint(s,i,n,a)}},"_setCurvePoint")},{key:"endBatch",value:o(function(){var r=this.gl,i=this.vao,n=this.vertexCount,a=this.instanceCount;if(a!==0){var s=this.renderTarget.picking?this.pickingProgram:this.program;r.useProgram(s),r.bindVertexArray(i);var l=Fs(this.buffers),u;try{for(l.s();!(u=l.n()).done;){var h=u.value;h.bufferSubData(a)}}catch(g){l.e(g)}finally{l.f()}for(var d=this.batchManager.getAtlases(),f=0;f<d.length;f++)d[f].bufferIfNeeded(r);for(var p=0;p<d.length;p++)r.activeTexture(r.TEXTURE0+p),r.bindTexture(r.TEXTURE_2D,d[p].texture),r.uniform1i(s.uTextures[p],p);r.uniform1f(s.uZoom,tot(this.r)),r.uniformMatrix3fv(s.uPanZoomMatrix,!1,this.panZoomMatrix),r.uniform1i(s.uAtlasSize,this.batchManager.getAtlasSize());var m=Hp(this.bgColor,1);r.uniform4fv(s.uBGColor,m),r.drawArraysInstanced(r.TRIANGLES,0,n,a),r.bindVertexArray(null),r.bindTexture(r.TEXTURE_2D,null),this.debug&&this.batchDebugInfo.push({count:a,atlasCount:d.length}),this.startBatch()}},"endBatch")},{key:"getDebugInfo",value:o(function(){var r=this.atlasManager.getDebugInfo(),i=r.reduce(function(s,l){return s+l.atlasCount},0),n=this.batchDebugInfo,a=n.reduce(function(s,l){return s+l.count},0);return{atlasInfo:r,totalAtlases:i,wrappedCount:this.wrappedCount,simpleCount:this.simpleCount,batchCount:n.length,batchInfo:n,totalInstances:a}},"getDebugInfo")}])})(),kge={};kge.initWebgl=function(e,t){var r=this,i=r.data.contexts[r.WEBGL];e.bgColor=kot(r),e.webglTexSize=Math.min(e.webglTexSize,i.getParameter(i.MAX_TEXTURE_SIZE)),e.webglTexRows=Math.min(e.webglTexRows,54),e.webglTexRowsNodes=Math.min(e.webglTexRowsNodes,54),e.webglBatchSize=Math.min(e.webglBatchSize,16384),e.webglTexPerBatch=Math.min(e.webglTexPerBatch,i.getParameter(i.MAX_TEXTURE_IMAGE_UNITS)),r.webglDebug=e.webglDebug,r.webglDebugShowAtlases=e.webglDebugShowAtlases,r.pickingFrameBuffer=uot(i),r.pickingFrameBuffer.needsDraw=!0,r.drawing=new Cot(r,i,e);var n=o(function(f){return function(p){return r.getTextAngle(p,f)}},"getLabelRotation"),a=o(function(f){return function(p){var m=p.pstyle(f);return m&&m.value}},"isLabelVisible"),s=o(function(f){return function(p){return p.pstyle("".concat(f,"-opacity")).value>0}},"isLayerVisible"),l=o(function(f){var p=f.pstyle("text-events").strValue==="yes";return p?U3.USE_BB:U3.IGNORE},"getTexPickingMode"),u=o(function(f){var p=f.position(),m=p.x,g=p.y,y=f.outerWidth(),v=f.outerHeight();return{w:y,h:v,x1:m-y/2,y1:g-v/2}},"getBBForSimpleShape");r.drawing.addAtlasCollection("node",{texRows:e.webglTexRowsNodes}),r.drawing.addAtlasCollection("label",{texRows:e.webglTexRows}),r.drawing.addTextureAtlasRenderType("node-body",{collection:"node",getKey:t.getStyleKey,getBoundingBox:t.getElementBox,drawElement:t.drawElement}),r.drawing.addSimpleShapeRenderType("node-body",{getBoundingBox:u,isSimple:iot,shapeProps:{shape:"shape",color:"background-color",opacity:"background-opacity",radius:"corner-radius",border:!0}}),r.drawing.addSimpleShapeRenderType("node-overlay",{getBoundingBox:u,isVisible:s("overlay"),shapeProps:{shape:"overlay-shape",color:"overlay-color",opacity:"overlay-opacity",padding:"overlay-padding",radius:"overlay-corner-radius"}}),r.drawing.addSimpleShapeRenderType("node-underlay",{getBoundingBox:u,isVisible:s("underlay"),shapeProps:{shape:"underlay-shape",color:"underlay-color",opacity:"underlay-opacity",padding:"underlay-padding",radius:"underlay-corner-radius"}}),r.drawing.addTextureAtlasRenderType("label",{collection:"label",getTexPickingMode:l,getKey:GO(t.getLabelKey,null),getBoundingBox:VO(t.getLabelBox,null),drawClipped:!0,drawElement:t.drawLabel,getRotation:n(null),getRotationPoint:t.getLabelRotationPoint,getRotationOffset:t.getLabelRotationOffset,isVisible:a("label")}),r.drawing.addTextureAtlasRenderType("edge-source-label",{collection:"label",getTexPickingMode:l,getKey:GO(t.getSourceLabelKey,"source"),getBoundingBox:VO(t.getSourceLabelBox,"source"),drawClipped:!0,drawElement:t.drawSourceLabel,getRotation:n("source"),getRotationPoint:t.getSourceLabelRotationPoint,getRotationOffset:t.getSourceLabelRotationOffset,isVisible:a("source-label")}),r.drawing.addTextureAtlasRenderType("edge-target-label",{collection:"label",getTexPickingMode:l,getKey:GO(t.getTargetLabelKey,"target"),getBoundingBox:VO(t.getTargetLabelBox,"target"),drawClipped:!0,drawElement:t.drawTargetLabel,getRotation:n("target"),getRotationPoint:t.getTargetLabelRotationPoint,getRotationOffset:t.getTargetLabelRotationOffset,isVisible:a("target-label")});var h=o2(function(){console.log("garbage collect flag set"),r.data.gc=!0},1e4);r.onUpdateEleCalcs(function(d,f){var p=!1;f&&f.length>0&&(p|=r.drawing.invalidate(f)),p&&h()}),wot(r)};o(kot,"getBGColor");o(wge,"getLabelLines");GO=o(function(t,r){return function(i){var n=t(i),a=wge(i,r);return a.length>1?a.map(function(s,l){return"".concat(n,"_").concat(l)}):n}},"getStyleKeysForLabel"),VO=o(function(t,r){return function(i,n){var a=t(i);if(typeof n=="string"){var s=n.indexOf("_");if(s>0){var l=Number(n.substring(s+1)),u=wge(i,r),h=a.h/u.length,d=h*l,f=a.y1+d;return{x1:a.x1,w:a.w,y1:f,h,yOffset:d}}}return a}},"getBoundingBoxForLabel");o(wot,"overrideCanvasRendererFunctions");o(Sot,"clearWebgl");o(Eot,"clearCanvas");o(Aot,"createPanZoomMatrix");o(Sge,"setContextTransform");o(_ot,"drawSelectionRectangle");o(Dot,"drawAxes");o(Rot,"drawAtlases");o(Lot,"getPickingIndexes");o(Mot,"findNearestElementsWebgl");o(WO,"drawEle");o(Ege,"renderWebgl");ef={};ef.drawPolygonPath=function(e,t,r,i,n,a){var s=i/2,l=n/2;e.beginPath&&e.beginPath(),e.moveTo(t+s*a[0],r+l*a[1]);for(var u=1;u<a.length/2;u++)e.lineTo(t+s*a[u*2],r+l*a[u*2+1]);e.closePath()};ef.drawRoundPolygonPath=function(e,t,r,i,n,a,s){s.forEach(function(l){return oge(e,l)}),e.closePath()};ef.drawRoundRectanglePath=function(e,t,r,i,n,a){var s=i/2,l=n/2,u=a==="auto"?Hd(i,n):Math.min(a,l,s);e.beginPath&&e.beginPath(),e.moveTo(t,r-l),e.arcTo(t+s,r-l,t+s,r,u),e.arcTo(t+s,r+l,t,r+l,u),e.arcTo(t-s,r+l,t-s,r,u),e.arcTo(t-s,r-l,t,r-l,u),e.lineTo(t,r-l),e.closePath()};ef.drawBottomRoundRectanglePath=function(e,t,r,i,n,a){var s=i/2,l=n/2,u=a==="auto"?Hd(i,n):a;e.beginPath&&e.beginPath(),e.moveTo(t,r-l),e.lineTo(t+s,r-l),e.lineTo(t+s,r),e.arcTo(t+s,r+l,t,r+l,u),e.arcTo(t-s,r+l,t-s,r,u),e.lineTo(t-s,r-l),e.lineTo(t,r-l),e.closePath()};ef.drawCutRectanglePath=function(e,t,r,i,n,a,s){var l=i/2,u=n/2,h=s==="auto"?bP():s;e.beginPath&&e.beginPath(),e.moveTo(t-l+h,r-u),e.lineTo(t+l-h,r-u),e.lineTo(t+l,r-u+h),e.lineTo(t+l,r+u-h),e.lineTo(t+l-h,r+u),e.lineTo(t-l+h,r+u),e.lineTo(t-l,r+u-h),e.lineTo(t-l,r-u+h),e.closePath()};ef.drawBarrelPath=function(e,t,r,i,n){var a=i/2,s=n/2,l=t-a,u=t+a,h=r-s,d=r+s,f=HO(i,n),p=f.widthOffset,m=f.heightOffset,g=f.ctrlPtOffsetPct*p;e.beginPath&&e.beginPath(),e.moveTo(l,h+m),e.lineTo(l,d-m),e.quadraticCurveTo(l+g,d,l+p,d),e.lineTo(u-p,d),e.quadraticCurveTo(u-g,d,u,d-m),e.lineTo(u,h+m),e.quadraticCurveTo(u-g,h,u-p,h),e.lineTo(l+p,h),e.quadraticCurveTo(l+g,h,l,h+m),e.closePath()};G0e=Math.sin(0),V0e=Math.cos(0),oP={},lP={},Age=Math.PI/40;for(Yp=0*Math.PI;Yp<2*Math.PI;Yp+=Age)oP[Yp]=Math.sin(Yp),lP[Yp]=Math.cos(Yp);ef.drawEllipsePath=function(e,t,r,i,n){if(e.beginPath&&e.beginPath(),e.ellipse)e.ellipse(t,r,i/2,n/2,0,0,2*Math.PI);else for(var a,s,l=i/2,u=n/2,h=0*Math.PI;h<2*Math.PI;h+=Age)a=t-l*oP[h]*G0e+l*lP[h]*V0e,s=r+u*lP[h]*G0e+u*oP[h]*V0e,h===0?e.moveTo(a,s):e.lineTo(a,s);e.closePath()};f2={};f2.createBuffer=function(e,t){var r=document.createElement("canvas");return r.width=e,r.height=t,[r,r.getContext("2d")]};f2.bufferCanvasImage=function(e){var t=this.cy,r=t.mutableElements(),i=r.boundingBox(),n=this.findContainerClientCoords(),a=e.full?Math.ceil(i.w):n[2],s=e.full?Math.ceil(i.h):n[3],l=Ot(e.maxWidth)||Ot(e.maxHeight),u=this.getPixelRatio(),h=1;if(e.scale!==void 0)a*=e.scale,s*=e.scale,h=e.scale;else if(l){var d=1/0,f=1/0;Ot(e.maxWidth)&&(d=h*e.maxWidth/a),Ot(e.maxHeight)&&(f=h*e.maxHeight/s),h=Math.min(d,f),a*=h,s*=h}l||(a*=u,s*=u,h*=u);var p=document.createElement("canvas");p.width=a,p.height=s,p.style.width=a+"px",p.style.height=s+"px";var m=p.getContext("2d");if(a>0&&s>0){m.clearRect(0,0,a,s),m.globalCompositeOperation="source-over";var g=this.getCachedZSortedEles();if(e.full)m.translate(-i.x1*h,-i.y1*h),m.scale(h,h),this.drawElements(m,g),m.scale(1/h,1/h),m.translate(i.x1*h,i.y1*h);else{var y=t.pan(),v={x:y.x*h,y:y.y*h};h*=t.zoom(),m.translate(v.x,v.y),m.scale(h,h),this.drawElements(m,g),m.scale(1/h,1/h),m.translate(-v.x,-v.y)}e.bg&&(m.globalCompositeOperation="destination-over",m.fillStyle=e.bg,m.rect(0,0,a,s),m.fill())}return p};o(Not,"b64ToBlob");o(W0e,"b64UriToB64");o(_ge,"output");f2.png=function(e){return _ge(e,this.bufferCanvasImage(e),"image/png")};f2.jpg=function(e){return _ge(e,this.bufferCanvasImage(e),"image/jpeg")};Dge={};Dge.nodeShapeImpl=function(e,t,r,i,n,a,s,l){switch(e){case"ellipse":return this.drawEllipsePath(t,r,i,n,a);case"polygon":return this.drawPolygonPath(t,r,i,n,a,s);case"round-polygon":return this.drawRoundPolygonPath(t,r,i,n,a,s,l);case"roundrectangle":case"round-rectangle":return this.drawRoundRectanglePath(t,r,i,n,a,l);case"cutrectangle":case"cut-rectangle":return this.drawCutRectanglePath(t,r,i,n,a,s,l);case"bottomroundrectangle":case"bottom-round-rectangle":return this.drawBottomRoundRectanglePath(t,r,i,n,a,l);case"barrel":return this.drawBarrelPath(t,r,i,n,a)}};Iot=Rge,Fr=Rge.prototype;Fr.CANVAS_LAYERS=3;Fr.SELECT_BOX=0;Fr.DRAG=1;Fr.NODE=2;Fr.WEBGL=3;Fr.CANVAS_TYPES=["2d","2d","2d","webgl2"];Fr.BUFFER_COUNT=3;Fr.TEXTURE_BUFFER=0;Fr.MOTIONBLUR_BUFFER_NODE=1;Fr.MOTIONBLUR_BUFFER_DRAG=2;o(Rge,"CanvasRenderer");Fr.redrawHint=function(e,t){var r=this;switch(e){case"eles":r.data.canvasNeedsRedraw[Fr.NODE]=t;break;case"drag":r.data.canvasNeedsRedraw[Fr.DRAG]=t;break;case"select":r.data.canvasNeedsRedraw[Fr.SELECT_BOX]=t;break;case"gc":r.data.gc=!0;break}};Oot=typeof Path2D<"u";Fr.path2dEnabled=function(e){if(e===void 0)return this.pathsEnabled;this.pathsEnabled=!!e};Fr.usePaths=function(){return Oot&&this.pathsEnabled};Fr.setImgSmoothing=function(e,t){e.imageSmoothingEnabled!=null?e.imageSmoothingEnabled=t:(e.webkitImageSmoothingEnabled=t,e.mozImageSmoothingEnabled=t,e.msImageSmoothingEnabled=t)};Fr.getImgSmoothing=function(e){return e.imageSmoothingEnabled!=null?e.imageSmoothingEnabled:e.webkitImageSmoothingEnabled||e.mozImageSmoothingEnabled||e.msImageSmoothingEnabled};Fr.makeOffscreenCanvas=function(e,t){var r;if((typeof OffscreenCanvas>"u"?"undefined":Wn(OffscreenCanvas))!=="undefined")r=new OffscreenCanvas(e,t);else{var i=this.cy.window(),n=i.document;r=n.createElement("canvas"),r.width=e,r.height=t}return r};[vge,zc,eh,NP,a0,Jd,ns,kge,ef,f2,Dge].forEach(function(e){hr(Fr,e)});Pot=[{name:"null",impl:nge},{name:"base",impl:pge},{name:"canvas",impl:Iot}],Bot=[{type:"layout",extensions:lst},{type:"renderer",extensions:Pot}],Lge={},Mge={};o(Nge,"setExtension");o(Ige,"getExtension");o(Fot,"setModule");o($ot,"getModule");cP=o(function(){if(arguments.length===2)return Ige.apply(null,arguments);if(arguments.length===3)return Nge.apply(null,arguments);if(arguments.length===4)return $ot.apply(null,arguments);if(arguments.length===5)return Fot.apply(null,arguments);Yi("Invalid extension access syntax")},"extension");e2.prototype.extension=cP;Bot.forEach(function(e){e.extensions.forEach(function(t){Nge(e.type,t.name,t.impl)})});H3=o(function(){if(!(this instanceof H3))return new H3;this.length=0},"Stylesheet"),i0=H3.prototype;i0.instanceString=function(){return"stylesheet"};i0.selector=function(e){var t=this.length++;return this[t]={selector:e,properties:[]},this};i0.css=function(e,t){var r=this.length-1;if(sr(e))this[r].properties.push({name:e,value:t});else if(Xr(e))for(var i=e,n=Object.keys(i),a=0;a<n.length;a++){var s=n[a],l=i[s];if(l!=null){var u=aa.properties[s]||aa.properties[Y3(s)];if(u!=null){var h=u.name,d=l;this[r].properties.push({name:h,value:d})}}}return this};i0.style=i0.css;i0.generateStyle=function(e){var t=new aa(e);return this.appendToStyle(t)};i0.appendToStyle=function(e){for(var t=0;t<this.length;t++){var r=this[t],i=r.selector,n=r.properties;e.selector(i);for(var a=0;a<n.length;a++){var s=n[a];e.css(s.name,s.value)}}return e};zot="3.33.1",Ko=o(function(t){if(t===void 0&&(t={}),Xr(t))return new e2(t);if(sr(t))return cP.apply(cP,arguments)},"cytoscape");Ko.use=function(e){var t=Array.prototype.slice.call(arguments,1);return t.unshift(Ko),e.apply(null,t),this};Ko.warnings=function(e){return sme(e)};Ko.version=zot;Ko.stylesheet=Ko.Stylesheet=H3});var BP=Js((p2,PP)=>{"use strict";o((function(t,r){typeof p2=="object"&&typeof PP=="object"?PP.exports=r():typeof define=="function"&&define.amd?define([],r):typeof p2=="object"?p2.layoutBase=r():t.layoutBase=r()}),"webpackUniversalModuleDefinition")(p2,function(){return(function(e){var t={};function r(i){if(t[i])return t[i].exports;var n=t[i]={i,l:!1,exports:{}};return e[i].call(n.exports,n,n.exports,r),n.l=!0,n.exports}return o(r,"__webpack_require__"),r.m=e,r.c=t,r.i=function(i){return i},r.d=function(i,n,a){r.o(i,n)||Object.defineProperty(i,n,{configurable:!1,enumerable:!0,get:a})},r.n=function(i){var n=i&&i.__esModule?o(function(){return i.default},"getDefault"):o(function(){return i},"getModuleExports");return r.d(n,"a",n),n},r.o=function(i,n){return Object.prototype.hasOwnProperty.call(i,n)},r.p="",r(r.s=26)})([(function(e,t,r){"use strict";function i(){}o(i,"LayoutConstants"),i.QUALITY=1,i.DEFAULT_CREATE_BENDS_AS_NEEDED=!1,i.DEFAULT_INCREMENTAL=!1,i.DEFAULT_ANIMATION_ON_LAYOUT=!0,i.DEFAULT_ANIMATION_DURING_LAYOUT=!1,i.DEFAULT_ANIMATION_PERIOD=50,i.DEFAULT_UNIFORM_LEAF_NODE_SIZES=!1,i.DEFAULT_GRAPH_MARGIN=15,i.NODE_DIMENSIONS_INCLUDE_LABELS=!1,i.SIMPLE_NODE_SIZE=40,i.SIMPLE_NODE_HALF_SIZE=i.SIMPLE_NODE_SIZE/2,i.EMPTY_COMPOUND_NODE_SIZE=40,i.MIN_EDGE_LENGTH=1,i.WORLD_BOUNDARY=1e6,i.INITIAL_WORLD_BOUNDARY=i.WORLD_BOUNDARY/1e3,i.WORLD_CENTER_X=1200,i.WORLD_CENTER_Y=900,e.exports=i}),(function(e,t,r){"use strict";var i=r(2),n=r(8),a=r(9);function s(u,h,d){i.call(this,d),this.isOverlapingSourceAndTarget=!1,this.vGraphObject=d,this.bendpoints=[],this.source=u,this.target=h}o(s,"LEdge"),s.prototype=Object.create(i.prototype);for(var l in i)s[l]=i[l];s.prototype.getSource=function(){return this.source},s.prototype.getTarget=function(){return this.target},s.prototype.isInterGraph=function(){return this.isInterGraph},s.prototype.getLength=function(){return this.length},s.prototype.isOverlapingSourceAndTarget=function(){return this.isOverlapingSourceAndTarget},s.prototype.getBendpoints=function(){return this.bendpoints},s.prototype.getLca=function(){return this.lca},s.prototype.getSourceInLca=function(){return this.sourceInLca},s.prototype.getTargetInLca=function(){return this.targetInLca},s.prototype.getOtherEnd=function(u){if(this.source===u)return this.target;if(this.target===u)return this.source;throw"Node is not incident with this edge"},s.prototype.getOtherEndInGraph=function(u,h){for(var d=this.getOtherEnd(u),f=h.getGraphManager().getRoot();;){if(d.getOwner()==h)return d;if(d.getOwner()==f)break;d=d.getOwner().getParent()}return null},s.prototype.updateLength=function(){var u=new Array(4);this.isOverlapingSourceAndTarget=n.getIntersection(this.target.getRect(),this.source.getRect(),u),this.isOverlapingSourceAndTarget||(this.lengthX=u[0]-u[2],this.lengthY=u[1]-u[3],Math.abs(this.lengthX)<1&&(this.lengthX=a.sign(this.lengthX)),Math.abs(this.lengthY)<1&&(this.lengthY=a.sign(this.lengthY)),this.length=Math.sqrt(this.lengthX*this.lengthX+this.lengthY*this.lengthY))},s.prototype.updateLengthSimple=function(){this.lengthX=this.target.getCenterX()-this.source.getCenterX(),this.lengthY=this.target.getCenterY()-this.source.getCenterY(),Math.abs(this.lengthX)<1&&(this.lengthX=a.sign(this.lengthX)),Math.abs(this.lengthY)<1&&(this.lengthY=a.sign(this.lengthY)),this.length=Math.sqrt(this.lengthX*this.lengthX+this.lengthY*this.lengthY)},e.exports=s}),(function(e,t,r){"use strict";function i(n){this.vGraphObject=n}o(i,"LGraphObject"),e.exports=i}),(function(e,t,r){"use strict";var i=r(2),n=r(10),a=r(13),s=r(0),l=r(16),u=r(4);function h(f,p,m,g){m==null&&g==null&&(g=p),i.call(this,g),f.graphManager!=null&&(f=f.graphManager),this.estimatedSize=n.MIN_VALUE,this.inclusionTreeDepth=n.MAX_VALUE,this.vGraphObject=g,this.edges=[],this.graphManager=f,m!=null&&p!=null?this.rect=new a(p.x,p.y,m.width,m.height):this.rect=new a}o(h,"LNode"),h.prototype=Object.create(i.prototype);for(var d in i)h[d]=i[d];h.prototype.getEdges=function(){return this.edges},h.prototype.getChild=function(){return this.child},h.prototype.getOwner=function(){return this.owner},h.prototype.getWidth=function(){return this.rect.width},h.prototype.setWidth=function(f){this.rect.width=f},h.prototype.getHeight=function(){return this.rect.height},h.prototype.setHeight=function(f){this.rect.height=f},h.prototype.getCenterX=function(){return this.rect.x+this.rect.width/2},h.prototype.getCenterY=function(){return this.rect.y+this.rect.height/2},h.prototype.getCenter=function(){return new u(this.rect.x+this.rect.width/2,this.rect.y+this.rect.height/2)},h.prototype.getLocation=function(){return new u(this.rect.x,this.rect.y)},h.prototype.getRect=function(){return this.rect},h.prototype.getDiagonal=function(){return Math.sqrt(this.rect.width*this.rect.width+this.rect.height*this.rect.height)},h.prototype.getHalfTheDiagonal=function(){return Math.sqrt(this.rect.height*this.rect.height+this.rect.width*this.rect.width)/2},h.prototype.setRect=function(f,p){this.rect.x=f.x,this.rect.y=f.y,this.rect.width=p.width,this.rect.height=p.height},h.prototype.setCenter=function(f,p){this.rect.x=f-this.rect.width/2,this.rect.y=p-this.rect.height/2},h.prototype.setLocation=function(f,p){this.rect.x=f,this.rect.y=p},h.prototype.moveBy=function(f,p){this.rect.x+=f,this.rect.y+=p},h.prototype.getEdgeListToNode=function(f){var p=[],m,g=this;return g.edges.forEach(function(y){if(y.target==f){if(y.source!=g)throw"Incorrect edge source!";p.push(y)}}),p},h.prototype.getEdgesBetween=function(f){var p=[],m,g=this;return g.edges.forEach(function(y){if(!(y.source==g||y.target==g))throw"Incorrect edge source and/or target";(y.target==f||y.source==f)&&p.push(y)}),p},h.prototype.getNeighborsList=function(){var f=new Set,p=this;return p.edges.forEach(function(m){if(m.source==p)f.add(m.target);else{if(m.target!=p)throw"Incorrect incidency!";f.add(m.source)}}),f},h.prototype.withChildren=function(){var f=new Set,p,m;if(f.add(this),this.child!=null)for(var g=this.child.getNodes(),y=0;y<g.length;y++)p=g[y],m=p.withChildren(),m.forEach(function(v){f.add(v)});return f},h.prototype.getNoOfChildren=function(){var f=0,p;if(this.child==null)f=1;else for(var m=this.child.getNodes(),g=0;g<m.length;g++)p=m[g],f+=p.getNoOfChildren();return f==0&&(f=1),f},h.prototype.getEstimatedSize=function(){if(this.estimatedSize==n.MIN_VALUE)throw"assert failed";return this.estimatedSize},h.prototype.calcEstimatedSize=function(){return this.child==null?this.estimatedSize=(this.rect.width+this.rect.height)/2:(this.estimatedSize=this.child.calcEstimatedSize(),this.rect.width=this.estimatedSize,this.rect.height=this.estimatedSize,this.estimatedSize)},h.prototype.scatter=function(){var f,p,m=-s.INITIAL_WORLD_BOUNDARY,g=s.INITIAL_WORLD_BOUNDARY;f=s.WORLD_CENTER_X+l.nextDouble()*(g-m)+m;var y=-s.INITIAL_WORLD_BOUNDARY,v=s.INITIAL_WORLD_BOUNDARY;p=s.WORLD_CENTER_Y+l.nextDouble()*(v-y)+y,this.rect.x=f,this.rect.y=p},h.prototype.updateBounds=function(){if(this.getChild()==null)throw"assert failed";if(this.getChild().getNodes().length!=0){var f=this.getChild();if(f.updateBounds(!0),this.rect.x=f.getLeft(),this.rect.y=f.getTop(),this.setWidth(f.getRight()-f.getLeft()),this.setHeight(f.getBottom()-f.getTop()),s.NODE_DIMENSIONS_INCLUDE_LABELS){var p=f.getRight()-f.getLeft(),m=f.getBottom()-f.getTop();this.labelWidth>p&&(this.rect.x-=(this.labelWidth-p)/2,this.setWidth(this.labelWidth)),this.labelHeight>m&&(this.labelPos=="center"?this.rect.y-=(this.labelHeight-m)/2:this.labelPos=="top"&&(this.rect.y-=this.labelHeight-m),this.setHeight(this.labelHeight))}}},h.prototype.getInclusionTreeDepth=function(){if(this.inclusionTreeDepth==n.MAX_VALUE)throw"assert failed";return this.inclusionTreeDepth},h.prototype.transform=function(f){var p=this.rect.x;p>s.WORLD_BOUNDARY?p=s.WORLD_BOUNDARY:p<-s.WORLD_BOUNDARY&&(p=-s.WORLD_BOUNDARY);var m=this.rect.y;m>s.WORLD_BOUNDARY?m=s.WORLD_BOUNDARY:m<-s.WORLD_BOUNDARY&&(m=-s.WORLD_BOUNDARY);var g=new u(p,m),y=f.inverseTransformPoint(g);this.setLocation(y.x,y.y)},h.prototype.getLeft=function(){return this.rect.x},h.prototype.getRight=function(){return this.rect.x+this.rect.width},h.prototype.getTop=function(){return this.rect.y},h.prototype.getBottom=function(){return this.rect.y+this.rect.height},h.prototype.getParent=function(){return this.owner==null?null:this.owner.getParent()},e.exports=h}),(function(e,t,r){"use strict";function i(n,a){n==null&&a==null?(this.x=0,this.y=0):(this.x=n,this.y=a)}o(i,"PointD"),i.prototype.getX=function(){return this.x},i.prototype.getY=function(){return this.y},i.prototype.setX=function(n){this.x=n},i.prototype.setY=function(n){this.y=n},i.prototype.getDifference=function(n){return new DimensionD(this.x-n.x,this.y-n.y)},i.prototype.getCopy=function(){return new i(this.x,this.y)},i.prototype.translate=function(n){return this.x+=n.width,this.y+=n.height,this},e.exports=i}),(function(e,t,r){"use strict";var i=r(2),n=r(10),a=r(0),s=r(6),l=r(3),u=r(1),h=r(13),d=r(12),f=r(11);function p(g,y,v){i.call(this,v),this.estimatedSize=n.MIN_VALUE,this.margin=a.DEFAULT_GRAPH_MARGIN,this.edges=[],this.nodes=[],this.isConnected=!1,this.parent=g,y!=null&&y instanceof s?this.graphManager=y:y!=null&&y instanceof Layout&&(this.graphManager=y.graphManager)}o(p,"LGraph"),p.prototype=Object.create(i.prototype);for(var m in i)p[m]=i[m];p.prototype.getNodes=function(){return this.nodes},p.prototype.getEdges=function(){return this.edges},p.prototype.getGraphManager=function(){return this.graphManager},p.prototype.getParent=function(){return this.parent},p.prototype.getLeft=function(){return this.left},p.prototype.getRight=function(){return this.right},p.prototype.getTop=function(){return this.top},p.prototype.getBottom=function(){return this.bottom},p.prototype.isConnected=function(){return this.isConnected},p.prototype.add=function(g,y,v){if(y==null&&v==null){var x=g;if(this.graphManager==null)throw"Graph has no graph mgr!";if(this.getNodes().indexOf(x)>-1)throw"Node already in graph!";return x.owner=this,this.getNodes().push(x),x}else{var b=g;if(!(this.getNodes().indexOf(y)>-1&&this.getNodes().indexOf(v)>-1))throw"Source or target not in graph!";if(!(y.owner==v.owner&&y.owner==this))throw"Both owners must be this graph!";return y.owner!=v.owner?null:(b.source=y,b.target=v,b.isInterGraph=!1,this.getEdges().push(b),y.edges.push(b),v!=y&&v.edges.push(b),b)}},p.prototype.remove=function(g){var y=g;if(g instanceof l){if(y==null)throw"Node is null!";if(!(y.owner!=null&&y.owner==this))throw"Owner graph is invalid!";if(this.graphManager==null)throw"Owner graph manager is invalid!";for(var v=y.edges.slice(),x,b=v.length,T=0;T<b;T++)x=v[T],x.isInterGraph?this.graphManager.remove(x):x.source.owner.remove(x);var w=this.nodes.indexOf(y);if(w==-1)throw"Node not in owner node list!";this.nodes.splice(w,1)}else if(g instanceof u){var x=g;if(x==null)throw"Edge is null!";if(!(x.source!=null&&x.target!=null))throw"Source and/or target is null!";if(!(x.source.owner!=null&&x.target.owner!=null&&x.source.owner==this&&x.target.owner==this))throw"Source and/or target owner is invalid!";var C=x.source.edges.indexOf(x),k=x.target.edges.indexOf(x);if(!(C>-1&&k>-1))throw"Source and/or target doesn't know this edge!";x.source.edges.splice(C,1),x.target!=x.source&&x.target.edges.splice(k,1);var w=x.source.owner.getEdges().indexOf(x);if(w==-1)throw"Not in owner's edge list!";x.source.owner.getEdges().splice(w,1)}},p.prototype.updateLeftTop=function(){for(var g=n.MAX_VALUE,y=n.MAX_VALUE,v,x,b,T=this.getNodes(),w=T.length,C=0;C<w;C++){var k=T[C];v=k.getTop(),x=k.getLeft(),g>v&&(g=v),y>x&&(y=x)}return g==n.MAX_VALUE?null:(T[0].getParent().paddingLeft!=null?b=T[0].getParent().paddingLeft:b=this.margin,this.left=y-b,this.top=g-b,new d(this.left,this.top))},p.prototype.updateBounds=function(g){for(var y=n.MAX_VALUE,v=-n.MAX_VALUE,x=n.MAX_VALUE,b=-n.MAX_VALUE,T,w,C,k,E,A=this.nodes,N=A.length,P=0;P<N;P++){var I=A[P];g&&I.child!=null&&I.updateBounds(),T=I.getLeft(),w=I.getRight(),C=I.getTop(),k=I.getBottom(),y>T&&(y=T),v<w&&(v=w),x>C&&(x=C),b<k&&(b=k)}var D=new h(y,x,v-y,b-x);y==n.MAX_VALUE&&(this.left=this.parent.getLeft(),this.right=this.parent.getRight(),this.top=this.parent.getTop(),this.bottom=this.parent.getBottom()),A[0].getParent().paddingLeft!=null?E=A[0].getParent().paddingLeft:E=this.margin,this.left=D.x-E,this.right=D.x+D.width+E,this.top=D.y-E,this.bottom=D.y+D.height+E},p.calculateBounds=function(g){for(var y=n.MAX_VALUE,v=-n.MAX_VALUE,x=n.MAX_VALUE,b=-n.MAX_VALUE,T,w,C,k,E=g.length,A=0;A<E;A++){var N=g[A];T=N.getLeft(),w=N.getRight(),C=N.getTop(),k=N.getBottom(),y>T&&(y=T),v<w&&(v=w),x>C&&(x=C),b<k&&(b=k)}var P=new h(y,x,v-y,b-x);return P},p.prototype.getInclusionTreeDepth=function(){return this==this.graphManager.getRoot()?1:this.parent.getInclusionTreeDepth()},p.prototype.getEstimatedSize=function(){if(this.estimatedSize==n.MIN_VALUE)throw"assert failed";return this.estimatedSize},p.prototype.calcEstimatedSize=function(){for(var g=0,y=this.nodes,v=y.length,x=0;x<v;x++){var b=y[x];g+=b.calcEstimatedSize()}return g==0?this.estimatedSize=a.EMPTY_COMPOUND_NODE_SIZE:this.estimatedSize=g/Math.sqrt(this.nodes.length),this.estimatedSize},p.prototype.updateConnected=function(){var g=this;if(this.nodes.length==0){this.isConnected=!0;return}var y=new f,v=new Set,x=this.nodes[0],b,T,w=x.withChildren();for(w.forEach(function(P){y.push(P),v.add(P)});y.length!==0;){x=y.shift(),b=x.getEdges();for(var C=b.length,k=0;k<C;k++){var E=b[k];if(T=E.getOtherEndInGraph(x,this),T!=null&&!v.has(T)){var A=T.withChildren();A.forEach(function(P){y.push(P),v.add(P)})}}}if(this.isConnected=!1,v.size>=this.nodes.length){var N=0;v.forEach(function(P){P.owner==g&&N++}),N==this.nodes.length&&(this.isConnected=!0)}},e.exports=p}),(function(e,t,r){"use strict";var i,n=r(1);function a(s){i=r(5),this.layout=s,this.graphs=[],this.edges=[]}o(a,"LGraphManager"),a.prototype.addRoot=function(){var s=this.layout.newGraph(),l=this.layout.newNode(null),u=this.add(s,l);return this.setRootGraph(u),this.rootGraph},a.prototype.add=function(s,l,u,h,d){if(u==null&&h==null&&d==null){if(s==null)throw"Graph is null!";if(l==null)throw"Parent node is null!";if(this.graphs.indexOf(s)>-1)throw"Graph already in this graph mgr!";if(this.graphs.push(s),s.parent!=null)throw"Already has a parent!";if(l.child!=null)throw"Already has a child!";return s.parent=l,l.child=s,s}else{d=u,h=l,u=s;var f=h.getOwner(),p=d.getOwner();if(!(f!=null&&f.getGraphManager()==this))throw"Source not in this graph mgr!";if(!(p!=null&&p.getGraphManager()==this))throw"Target not in this graph mgr!";if(f==p)return u.isInterGraph=!1,f.add(u,h,d);if(u.isInterGraph=!0,u.source=h,u.target=d,this.edges.indexOf(u)>-1)throw"Edge already in inter-graph edge list!";if(this.edges.push(u),!(u.source!=null&&u.target!=null))throw"Edge source and/or target is null!";if(!(u.source.edges.indexOf(u)==-1&&u.target.edges.indexOf(u)==-1))throw"Edge already in source and/or target incidency list!";return u.source.edges.push(u),u.target.edges.push(u),u}},a.prototype.remove=function(s){if(s instanceof i){var l=s;if(l.getGraphManager()!=this)throw"Graph not in this graph mgr";if(!(l==this.rootGraph||l.parent!=null&&l.parent.graphManager==this))throw"Invalid parent node!";var u=[];u=u.concat(l.getEdges());for(var h,d=u.length,f=0;f<d;f++)h=u[f],l.remove(h);var p=[];p=p.concat(l.getNodes());var m;d=p.length;for(var f=0;f<d;f++)m=p[f],l.remove(m);l==this.rootGraph&&this.setRootGraph(null);var g=this.graphs.indexOf(l);this.graphs.splice(g,1),l.parent=null}else if(s instanceof n){if(h=s,h==null)throw"Edge is null!";if(!h.isInterGraph)throw"Not an inter-graph edge!";if(!(h.source!=null&&h.target!=null))throw"Source and/or target is null!";if(!(h.source.edges.indexOf(h)!=-1&&h.target.edges.indexOf(h)!=-1))throw"Source and/or target doesn't know this edge!";var g=h.source.edges.indexOf(h);if(h.source.edges.splice(g,1),g=h.target.edges.indexOf(h),h.target.edges.splice(g,1),!(h.source.owner!=null&&h.source.owner.getGraphManager()!=null))throw"Edge owner graph or owner graph manager is null!";if(h.source.owner.getGraphManager().edges.indexOf(h)==-1)throw"Not in owner graph manager's edge list!";var g=h.source.owner.getGraphManager().edges.indexOf(h);h.source.owner.getGraphManager().edges.splice(g,1)}},a.prototype.updateBounds=function(){this.rootGraph.updateBounds(!0)},a.prototype.getGraphs=function(){return this.graphs},a.prototype.getAllNodes=function(){if(this.allNodes==null){for(var s=[],l=this.getGraphs(),u=l.length,h=0;h<u;h++)s=s.concat(l[h].getNodes());this.allNodes=s}return this.allNodes},a.prototype.resetAllNodes=function(){this.allNodes=null},a.prototype.resetAllEdges=function(){this.allEdges=null},a.prototype.resetAllNodesToApplyGravitation=function(){this.allNodesToApplyGravitation=null},a.prototype.getAllEdges=function(){if(this.allEdges==null){for(var s=[],l=this.getGraphs(),u=l.length,h=0;h<l.length;h++)s=s.concat(l[h].getEdges());s=s.concat(this.edges),this.allEdges=s}return this.allEdges},a.prototype.getAllNodesToApplyGravitation=function(){return this.allNodesToApplyGravitation},a.prototype.setAllNodesToApplyGravitation=function(s){if(this.allNodesToApplyGravitation!=null)throw"assert failed";this.allNodesToApplyGravitation=s},a.prototype.getRoot=function(){return this.rootGraph},a.prototype.setRootGraph=function(s){if(s.getGraphManager()!=this)throw"Root not in this graph mgr!";this.rootGraph=s,s.parent==null&&(s.parent=this.layout.newNode("Root node"))},a.prototype.getLayout=function(){return this.layout},a.prototype.isOneAncestorOfOther=function(s,l){if(!(s!=null&&l!=null))throw"assert failed";if(s==l)return!0;var u=s.getOwner(),h;do{if(h=u.getParent(),h==null)break;if(h==l)return!0;if(u=h.getOwner(),u==null)break}while(!0);u=l.getOwner();do{if(h=u.getParent(),h==null)break;if(h==s)return!0;if(u=h.getOwner(),u==null)break}while(!0);return!1},a.prototype.calcLowestCommonAncestors=function(){for(var s,l,u,h,d,f=this.getAllEdges(),p=f.length,m=0;m<p;m++){if(s=f[m],l=s.source,u=s.target,s.lca=null,s.sourceInLca=l,s.targetInLca=u,l==u){s.lca=l.getOwner();continue}for(h=l.getOwner();s.lca==null;){for(s.targetInLca=u,d=u.getOwner();s.lca==null;){if(d==h){s.lca=d;break}if(d==this.rootGraph)break;if(s.lca!=null)throw"assert failed";s.targetInLca=d.getParent(),d=s.targetInLca.getOwner()}if(h==this.rootGraph)break;s.lca==null&&(s.sourceInLca=h.getParent(),h=s.sourceInLca.getOwner())}if(s.lca==null)throw"assert failed"}},a.prototype.calcLowestCommonAncestor=function(s,l){if(s==l)return s.getOwner();var u=s.getOwner();do{if(u==null)break;var h=l.getOwner();do{if(h==null)break;if(h==u)return h;h=h.getParent().getOwner()}while(!0);u=u.getParent().getOwner()}while(!0);return u},a.prototype.calcInclusionTreeDepths=function(s,l){s==null&&l==null&&(s=this.rootGraph,l=1);for(var u,h=s.getNodes(),d=h.length,f=0;f<d;f++)u=h[f],u.inclusionTreeDepth=l,u.child!=null&&this.calcInclusionTreeDepths(u.child,l+1)},a.prototype.includesInvalidEdge=function(){for(var s,l=this.edges.length,u=0;u<l;u++)if(s=this.edges[u],this.isOneAncestorOfOther(s.source,s.target))return!0;return!1},e.exports=a}),(function(e,t,r){"use strict";var i=r(0);function n(){}o(n,"FDLayoutConstants");for(var a in i)n[a]=i[a];n.MAX_ITERATIONS=2500,n.DEFAULT_EDGE_LENGTH=50,n.DEFAULT_SPRING_STRENGTH=.45,n.DEFAULT_REPULSION_STRENGTH=4500,n.DEFAULT_GRAVITY_STRENGTH=.4,n.DEFAULT_COMPOUND_GRAVITY_STRENGTH=1,n.DEFAULT_GRAVITY_RANGE_FACTOR=3.8,n.DEFAULT_COMPOUND_GRAVITY_RANGE_FACTOR=1.5,n.DEFAULT_USE_SMART_IDEAL_EDGE_LENGTH_CALCULATION=!0,n.DEFAULT_USE_SMART_REPULSION_RANGE_CALCULATION=!0,n.DEFAULT_COOLING_FACTOR_INCREMENTAL=.3,n.COOLING_ADAPTATION_FACTOR=.33,n.ADAPTATION_LOWER_NODE_LIMIT=1e3,n.ADAPTATION_UPPER_NODE_LIMIT=5e3,n.MAX_NODE_DISPLACEMENT_INCREMENTAL=100,n.MAX_NODE_DISPLACEMENT=n.MAX_NODE_DISPLACEMENT_INCREMENTAL*3,n.MIN_REPULSION_DIST=n.DEFAULT_EDGE_LENGTH/10,n.CONVERGENCE_CHECK_PERIOD=100,n.PER_LEVEL_IDEAL_EDGE_LENGTH_FACTOR=.1,n.MIN_EDGE_LENGTH=1,n.GRID_CALCULATION_CHECK_PERIOD=10,e.exports=n}),(function(e,t,r){"use strict";var i=r(12);function n(){}o(n,"IGeometry"),n.calcSeparationAmount=function(a,s,l,u){if(!a.intersects(s))throw"assert failed";var h=new Array(2);this.decideDirectionsForOverlappingNodes(a,s,h),l[0]=Math.min(a.getRight(),s.getRight())-Math.max(a.x,s.x),l[1]=Math.min(a.getBottom(),s.getBottom())-Math.max(a.y,s.y),a.getX()<=s.getX()&&a.getRight()>=s.getRight()?l[0]+=Math.min(s.getX()-a.getX(),a.getRight()-s.getRight()):s.getX()<=a.getX()&&s.getRight()>=a.getRight()&&(l[0]+=Math.min(a.getX()-s.getX(),s.getRight()-a.getRight())),a.getY()<=s.getY()&&a.getBottom()>=s.getBottom()?l[1]+=Math.min(s.getY()-a.getY(),a.getBottom()-s.getBottom()):s.getY()<=a.getY()&&s.getBottom()>=a.getBottom()&&(l[1]+=Math.min(a.getY()-s.getY(),s.getBottom()-a.getBottom()));var d=Math.abs((s.getCenterY()-a.getCenterY())/(s.getCenterX()-a.getCenterX()));s.getCenterY()===a.getCenterY()&&s.getCenterX()===a.getCenterX()&&(d=1);var f=d*l[0],p=l[1]/d;l[0]<p?p=l[0]:f=l[1],l[0]=-1*h[0]*(p/2+u),l[1]=-1*h[1]*(f/2+u)},n.decideDirectionsForOverlappingNodes=function(a,s,l){a.getCenterX()<s.getCenterX()?l[0]=-1:l[0]=1,a.getCenterY()<s.getCenterY()?l[1]=-1:l[1]=1},n.getIntersection2=function(a,s,l){var u=a.getCenterX(),h=a.getCenterY(),d=s.getCenterX(),f=s.getCenterY();if(a.intersects(s))return l[0]=u,l[1]=h,l[2]=d,l[3]=f,!0;var p=a.getX(),m=a.getY(),g=a.getRight(),y=a.getX(),v=a.getBottom(),x=a.getRight(),b=a.getWidthHalf(),T=a.getHeightHalf(),w=s.getX(),C=s.getY(),k=s.getRight(),E=s.getX(),A=s.getBottom(),N=s.getRight(),P=s.getWidthHalf(),I=s.getHeightHalf(),D=!1,_=!1;if(u===d){if(h>f)return l[0]=u,l[1]=m,l[2]=d,l[3]=A,!1;if(h<f)return l[0]=u,l[1]=v,l[2]=d,l[3]=C,!1}else if(h===f){if(u>d)return l[0]=p,l[1]=h,l[2]=k,l[3]=f,!1;if(u<d)return l[0]=g,l[1]=h,l[2]=w,l[3]=f,!1}else{var R=a.height/a.width,M=s.height/s.width,L=(f-h)/(d-u),B=void 0,O=void 0,$=void 0,G=void 0,F=void 0,V=void 0;if(-R===L?u>d?(l[0]=y,l[1]=v,D=!0):(l[0]=g,l[1]=m,D=!0):R===L&&(u>d?(l[0]=p,l[1]=m,D=!0):(l[0]=x,l[1]=v,D=!0)),-M===L?d>u?(l[2]=E,l[3]=A,_=!0):(l[2]=k,l[3]=C,_=!0):M===L&&(d>u?(l[2]=w,l[3]=C,_=!0):(l[2]=N,l[3]=A,_=!0)),D&&_)return!1;if(u>d?h>f?(B=this.getCardinalDirection(R,L,4),O=this.getCardinalDirection(M,L,2)):(B=this.getCardinalDirection(-R,L,3),O=this.getCardinalDirection(-M,L,1)):h>f?(B=this.getCardinalDirection(-R,L,1),O=this.getCardinalDirection(-M,L,3)):(B=this.getCardinalDirection(R,L,2),O=this.getCardinalDirection(M,L,4)),!D)switch(B){case 1:G=m,$=u+-T/L,l[0]=$,l[1]=G;break;case 2:$=x,G=h+b*L,l[0]=$,l[1]=G;break;case 3:G=v,$=u+T/L,l[0]=$,l[1]=G;break;case 4:$=y,G=h+-b*L,l[0]=$,l[1]=G;break}if(!_)switch(O){case 1:V=C,F=d+-I/L,l[2]=F,l[3]=V;break;case 2:F=N,V=f+P*L,l[2]=F,l[3]=V;break;case 3:V=A,F=d+I/L,l[2]=F,l[3]=V;break;case 4:F=E,V=f+-P*L,l[2]=F,l[3]=V;break}}return!1},n.getCardinalDirection=function(a,s,l){return a>s?l:1+l%4},n.getIntersection=function(a,s,l,u){if(u==null)return this.getIntersection2(a,s,l);var h=a.x,d=a.y,f=s.x,p=s.y,m=l.x,g=l.y,y=u.x,v=u.y,x=void 0,b=void 0,T=void 0,w=void 0,C=void 0,k=void 0,E=void 0,A=void 0,N=void 0;return T=p-d,C=h-f,E=f*d-h*p,w=v-g,k=m-y,A=y*g-m*v,N=T*k-w*C,N===0?null:(x=(C*A-k*E)/N,b=(w*E-T*A)/N,new i(x,b))},n.angleOfVector=function(a,s,l,u){var h=void 0;return a!==l?(h=Math.atan((u-s)/(l-a)),l<a?h+=Math.PI:u<s&&(h+=this.TWO_PI)):u<s?h=this.ONE_AND_HALF_PI:h=this.HALF_PI,h},n.doIntersect=function(a,s,l,u){var h=a.x,d=a.y,f=s.x,p=s.y,m=l.x,g=l.y,y=u.x,v=u.y,x=(f-h)*(v-g)-(y-m)*(p-d);if(x===0)return!1;var b=((v-g)*(y-h)+(m-y)*(v-d))/x,T=((d-p)*(y-h)+(f-h)*(v-d))/x;return 0<b&&b<1&&0<T&&T<1},n.HALF_PI=.5*Math.PI,n.ONE_AND_HALF_PI=1.5*Math.PI,n.TWO_PI=2*Math.PI,n.THREE_PI=3*Math.PI,e.exports=n}),(function(e,t,r){"use strict";function i(){}o(i,"IMath"),i.sign=function(n){return n>0?1:n<0?-1:0},i.floor=function(n){return n<0?Math.ceil(n):Math.floor(n)},i.ceil=function(n){return n<0?Math.floor(n):Math.ceil(n)},e.exports=i}),(function(e,t,r){"use strict";function i(){}o(i,"Integer"),i.MAX_VALUE=2147483647,i.MIN_VALUE=-2147483648,e.exports=i}),(function(e,t,r){"use strict";var i=(function(){function h(d,f){for(var p=0;p<f.length;p++){var m=f[p];m.enumerable=m.enumerable||!1,m.configurable=!0,"value"in m&&(m.writable=!0),Object.defineProperty(d,m.key,m)}}return o(h,"defineProperties"),function(d,f,p){return f&&h(d.prototype,f),p&&h(d,p),d}})();function n(h,d){if(!(h instanceof d))throw new TypeError("Cannot call a class as a function")}o(n,"_classCallCheck");var a=o(function(d){return{value:d,next:null,prev:null}},"nodeFrom"),s=o(function(d,f,p,m){return d!==null?d.next=f:m.head=f,p!==null?p.prev=f:m.tail=f,f.prev=d,f.next=p,m.length++,f},"add"),l=o(function(d,f){var p=d.prev,m=d.next;return p!==null?p.next=m:f.head=m,m!==null?m.prev=p:f.tail=p,d.prev=d.next=null,f.length--,d},"_remove"),u=(function(){function h(d){var f=this;n(this,h),this.length=0,this.head=null,this.tail=null,d?.forEach(function(p){return f.push(p)})}return o(h,"LinkedList"),i(h,[{key:"size",value:o(function(){return this.length},"size")},{key:"insertBefore",value:o(function(f,p){return s(p.prev,a(f),p,this)},"insertBefore")},{key:"insertAfter",value:o(function(f,p){return s(p,a(f),p.next,this)},"insertAfter")},{key:"insertNodeBefore",value:o(function(f,p){return s(p.prev,f,p,this)},"insertNodeBefore")},{key:"insertNodeAfter",value:o(function(f,p){return s(p,f,p.next,this)},"insertNodeAfter")},{key:"push",value:o(function(f){return s(this.tail,a(f),null,this)},"push")},{key:"unshift",value:o(function(f){return s(null,a(f),this.head,this)},"unshift")},{key:"remove",value:o(function(f){return l(f,this)},"remove")},{key:"pop",value:o(function(){return l(this.tail,this).value},"pop")},{key:"popNode",value:o(function(){return l(this.tail,this)},"popNode")},{key:"shift",value:o(function(){return l(this.head,this).value},"shift")},{key:"shiftNode",value:o(function(){return l(this.head,this)},"shiftNode")},{key:"get_object_at",value:o(function(f){if(f<=this.length()){for(var p=1,m=this.head;p<f;)m=m.next,p++;return m.value}},"get_object_at")},{key:"set_object_at",value:o(function(f,p){if(f<=this.length()){for(var m=1,g=this.head;m<f;)g=g.next,m++;g.value=p}},"set_object_at")}]),h})();e.exports=u}),(function(e,t,r){"use strict";function i(n,a,s){this.x=null,this.y=null,n==null&&a==null&&s==null?(this.x=0,this.y=0):typeof n=="number"&&typeof a=="number"&&s==null?(this.x=n,this.y=a):n.constructor.name=="Point"&&a==null&&s==null&&(s=n,this.x=s.x,this.y=s.y)}o(i,"Point"),i.prototype.getX=function(){return this.x},i.prototype.getY=function(){return this.y},i.prototype.getLocation=function(){return new i(this.x,this.y)},i.prototype.setLocation=function(n,a,s){n.constructor.name=="Point"&&a==null&&s==null?(s=n,this.setLocation(s.x,s.y)):typeof n=="number"&&typeof a=="number"&&s==null&&(parseInt(n)==n&&parseInt(a)==a?this.move(n,a):(this.x=Math.floor(n+.5),this.y=Math.floor(a+.5)))},i.prototype.move=function(n,a){this.x=n,this.y=a},i.prototype.translate=function(n,a){this.x+=n,this.y+=a},i.prototype.equals=function(n){if(n.constructor.name=="Point"){var a=n;return this.x==a.x&&this.y==a.y}return this==n},i.prototype.toString=function(){return new i().constructor.name+"[x="+this.x+",y="+this.y+"]"},e.exports=i}),(function(e,t,r){"use strict";function i(n,a,s,l){this.x=0,this.y=0,this.width=0,this.height=0,n!=null&&a!=null&&s!=null&&l!=null&&(this.x=n,this.y=a,this.width=s,this.height=l)}o(i,"RectangleD"),i.prototype.getX=function(){return this.x},i.prototype.setX=function(n){this.x=n},i.prototype.getY=function(){return this.y},i.prototype.setY=function(n){this.y=n},i.prototype.getWidth=function(){return this.width},i.prototype.setWidth=function(n){this.width=n},i.prototype.getHeight=function(){return this.height},i.prototype.setHeight=function(n){this.height=n},i.prototype.getRight=function(){return this.x+this.width},i.prototype.getBottom=function(){return this.y+this.height},i.prototype.intersects=function(n){return!(this.getRight()<n.x||this.getBottom()<n.y||n.getRight()<this.x||n.getBottom()<this.y)},i.prototype.getCenterX=function(){return this.x+this.width/2},i.prototype.getMinX=function(){return this.getX()},i.prototype.getMaxX=function(){return this.getX()+this.width},i.prototype.getCenterY=function(){return this.y+this.height/2},i.prototype.getMinY=function(){return this.getY()},i.prototype.getMaxY=function(){return this.getY()+this.height},i.prototype.getWidthHalf=function(){return this.width/2},i.prototype.getHeightHalf=function(){return this.height/2},e.exports=i}),(function(e,t,r){"use strict";var i=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(a){return typeof a}:function(a){return a&&typeof Symbol=="function"&&a.constructor===Symbol&&a!==Symbol.prototype?"symbol":typeof a};function n(){}o(n,"UniqueIDGeneretor"),n.lastID=0,n.createID=function(a){return n.isPrimitive(a)?a:(a.uniqueID!=null||(a.uniqueID=n.getString(),n.lastID++),a.uniqueID)},n.getString=function(a){return a==null&&(a=n.lastID),"Object#"+a},n.isPrimitive=function(a){var s=typeof a>"u"?"undefined":i(a);return a==null||s!="object"&&s!="function"},e.exports=n}),(function(e,t,r){"use strict";function i(m){if(Array.isArray(m)){for(var g=0,y=Array(m.length);g<m.length;g++)y[g]=m[g];return y}else return Array.from(m)}o(i,"_toConsumableArray");var n=r(0),a=r(6),s=r(3),l=r(1),u=r(5),h=r(4),d=r(17),f=r(27);function p(m){f.call(this),this.layoutQuality=n.QUALITY,this.createBendsAsNeeded=n.DEFAULT_CREATE_BENDS_AS_NEEDED,this.incremental=n.DEFAULT_INCREMENTAL,this.animationOnLayout=n.DEFAULT_ANIMATION_ON_LAYOUT,this.animationDuringLayout=n.DEFAULT_ANIMATION_DURING_LAYOUT,this.animationPeriod=n.DEFAULT_ANIMATION_PERIOD,this.uniformLeafNodeSizes=n.DEFAULT_UNIFORM_LEAF_NODE_SIZES,this.edgeToDummyNodes=new Map,this.graphManager=new a(this),this.isLayoutFinished=!1,this.isSubLayout=!1,this.isRemoteUse=!1,m!=null&&(this.isRemoteUse=m)}o(p,"Layout"),p.RANDOM_SEED=1,p.prototype=Object.create(f.prototype),p.prototype.getGraphManager=function(){return this.graphManager},p.prototype.getAllNodes=function(){return this.graphManager.getAllNodes()},p.prototype.getAllEdges=function(){return this.graphManager.getAllEdges()},p.prototype.getAllNodesToApplyGravitation=function(){return this.graphManager.getAllNodesToApplyGravitation()},p.prototype.newGraphManager=function(){var m=new a(this);return this.graphManager=m,m},p.prototype.newGraph=function(m){return new u(null,this.graphManager,m)},p.prototype.newNode=function(m){return new s(this.graphManager,m)},p.prototype.newEdge=function(m){return new l(null,null,m)},p.prototype.checkLayoutSuccess=function(){return this.graphManager.getRoot()==null||this.graphManager.getRoot().getNodes().length==0||this.graphManager.includesInvalidEdge()},p.prototype.runLayout=function(){this.isLayoutFinished=!1,this.tilingPreLayout&&this.tilingPreLayout(),this.initParameters();var m;return this.checkLayoutSuccess()?m=!1:m=this.layout(),n.ANIMATE==="during"?!1:(m&&(this.isSubLayout||this.doPostLayout()),this.tilingPostLayout&&this.tilingPostLayout(),this.isLayoutFinished=!0,m)},p.prototype.doPostLayout=function(){this.incremental||this.transform(),this.update()},p.prototype.update2=function(){if(this.createBendsAsNeeded&&(this.createBendpointsFromDummyNodes(),this.graphManager.resetAllEdges()),!this.isRemoteUse){for(var m,g=this.graphManager.getAllEdges(),y=0;y<g.length;y++)m=g[y];for(var v,x=this.graphManager.getRoot().getNodes(),y=0;y<x.length;y++)v=x[y];this.update(this.graphManager.getRoot())}},p.prototype.update=function(m){if(m==null)this.update2();else if(m instanceof s){var g=m;if(g.getChild()!=null)for(var y=g.getChild().getNodes(),v=0;v<y.length;v++)update(y[v]);if(g.vGraphObject!=null){var x=g.vGraphObject;x.update(g)}}else if(m instanceof l){var b=m;if(b.vGraphObject!=null){var T=b.vGraphObject;T.update(b)}}else if(m instanceof u){var w=m;if(w.vGraphObject!=null){var C=w.vGraphObject;C.update(w)}}},p.prototype.initParameters=function(){this.isSubLayout||(this.layoutQuality=n.QUALITY,this.animationDuringLayout=n.DEFAULT_ANIMATION_DURING_LAYOUT,this.animationPeriod=n.DEFAULT_ANIMATION_PERIOD,this.animationOnLayout=n.DEFAULT_ANIMATION_ON_LAYOUT,this.incremental=n.DEFAULT_INCREMENTAL,this.createBendsAsNeeded=n.DEFAULT_CREATE_BENDS_AS_NEEDED,this.uniformLeafNodeSizes=n.DEFAULT_UNIFORM_LEAF_NODE_SIZES),this.animationDuringLayout&&(this.animationOnLayout=!1)},p.prototype.transform=function(m){if(m==null)this.transform(new h(0,0));else{var g=new d,y=this.graphManager.getRoot().updateLeftTop();if(y!=null){g.setWorldOrgX(m.x),g.setWorldOrgY(m.y),g.setDeviceOrgX(y.x),g.setDeviceOrgY(y.y);for(var v=this.getAllNodes(),x,b=0;b<v.length;b++)x=v[b],x.transform(g)}}},p.prototype.positionNodesRandomly=function(m){if(m==null)this.positionNodesRandomly(this.getGraphManager().getRoot()),this.getGraphManager().getRoot().updateBounds(!0);else for(var g,y,v=m.getNodes(),x=0;x<v.length;x++)g=v[x],y=g.getChild(),y==null||y.getNodes().length==0?g.scatter():(this.positionNodesRandomly(y),g.updateBounds())},p.prototype.getFlatForest=function(){for(var m=[],g=!0,y=this.graphManager.getRoot().getNodes(),v=!0,x=0;x<y.length;x++)y[x].getChild()!=null&&(v=!1);if(!v)return m;var b=new Set,T=[],w=new Map,C=[];for(C=C.concat(y);C.length>0&&g;){for(T.push(C[0]);T.length>0&&g;){var k=T[0];T.splice(0,1),b.add(k);for(var E=k.getEdges(),x=0;x<E.length;x++){var A=E[x].getOtherEnd(k);if(w.get(k)!=A)if(!b.has(A))T.push(A),w.set(A,k);else{g=!1;break}}}if(!g)m=[];else{var N=[].concat(i(b));m.push(N);for(var x=0;x<N.length;x++){var P=N[x],I=C.indexOf(P);I>-1&&C.splice(I,1)}b=new Set,w=new Map}}return m},p.prototype.createDummyNodesForBendpoints=function(m){for(var g=[],y=m.source,v=this.graphManager.calcLowestCommonAncestor(m.source,m.target),x=0;x<m.bendpoints.length;x++){var b=this.newNode(null);b.setRect(new Point(0,0),new Dimension(1,1)),v.add(b);var T=this.newEdge(null);this.graphManager.add(T,y,b),g.add(b),y=b}var T=this.newEdge(null);return this.graphManager.add(T,y,m.target),this.edgeToDummyNodes.set(m,g),m.isInterGraph()?this.graphManager.remove(m):v.remove(m),g},p.prototype.createBendpointsFromDummyNodes=function(){var m=[];m=m.concat(this.graphManager.getAllEdges()),m=[].concat(i(this.edgeToDummyNodes.keys())).concat(m);for(var g=0;g<m.length;g++){var y=m[g];if(y.bendpoints.length>0){for(var v=this.edgeToDummyNodes.get(y),x=0;x<v.length;x++){var b=v[x],T=new h(b.getCenterX(),b.getCenterY()),w=y.bendpoints.get(x);w.x=T.x,w.y=T.y,b.getOwner().remove(b)}this.graphManager.add(y,y.source,y.target)}}},p.transform=function(m,g,y,v){if(y!=null&&v!=null){var x=g;if(m<=50){var b=g/y;x-=(g-b)/50*(50-m)}else{var T=g*v;x+=(T-g)/50*(m-50)}return x}else{var w,C;return m<=50?(w=9*g/500,C=g/10):(w=9*g/50,C=-8*g),w*m+C}},p.findCenterOfTree=function(m){var g=[];g=g.concat(m);var y=[],v=new Map,x=!1,b=null;(g.length==1||g.length==2)&&(x=!0,b=g[0]);for(var T=0;T<g.length;T++){var w=g[T],C=w.getNeighborsList().size;v.set(w,w.getNeighborsList().size),C==1&&y.push(w)}var k=[];for(k=k.concat(y);!x;){var E=[];E=E.concat(k),k=[];for(var T=0;T<g.length;T++){var w=g[T],A=g.indexOf(w);A>=0&&g.splice(A,1);var N=w.getNeighborsList();N.forEach(function(D){if(y.indexOf(D)<0){var _=v.get(D),R=_-1;R==1&&k.push(D),v.set(D,R)}})}y=y.concat(k),(g.length==1||g.length==2)&&(x=!0,b=g[0])}return b},p.prototype.setGraphManager=function(m){this.graphManager=m},e.exports=p}),(function(e,t,r){"use strict";function i(){}o(i,"RandomSeed"),i.seed=1,i.x=0,i.nextDouble=function(){return i.x=Math.sin(i.seed++)*1e4,i.x-Math.floor(i.x)},e.exports=i}),(function(e,t,r){"use strict";var i=r(4);function n(a,s){this.lworldOrgX=0,this.lworldOrgY=0,this.ldeviceOrgX=0,this.ldeviceOrgY=0,this.lworldExtX=1,this.lworldExtY=1,this.ldeviceExtX=1,this.ldeviceExtY=1}o(n,"Transform"),n.prototype.getWorldOrgX=function(){return this.lworldOrgX},n.prototype.setWorldOrgX=function(a){this.lworldOrgX=a},n.prototype.getWorldOrgY=function(){return this.lworldOrgY},n.prototype.setWorldOrgY=function(a){this.lworldOrgY=a},n.prototype.getWorldExtX=function(){return this.lworldExtX},n.prototype.setWorldExtX=function(a){this.lworldExtX=a},n.prototype.getWorldExtY=function(){return this.lworldExtY},n.prototype.setWorldExtY=function(a){this.lworldExtY=a},n.prototype.getDeviceOrgX=function(){return this.ldeviceOrgX},n.prototype.setDeviceOrgX=function(a){this.ldeviceOrgX=a},n.prototype.getDeviceOrgY=function(){return this.ldeviceOrgY},n.prototype.setDeviceOrgY=function(a){this.ldeviceOrgY=a},n.prototype.getDeviceExtX=function(){return this.ldeviceExtX},n.prototype.setDeviceExtX=function(a){this.ldeviceExtX=a},n.prototype.getDeviceExtY=function(){return this.ldeviceExtY},n.prototype.setDeviceExtY=function(a){this.ldeviceExtY=a},n.prototype.transformX=function(a){var s=0,l=this.lworldExtX;return l!=0&&(s=this.ldeviceOrgX+(a-this.lworldOrgX)*this.ldeviceExtX/l),s},n.prototype.transformY=function(a){var s=0,l=this.lworldExtY;return l!=0&&(s=this.ldeviceOrgY+(a-this.lworldOrgY)*this.ldeviceExtY/l),s},n.prototype.inverseTransformX=function(a){var s=0,l=this.ldeviceExtX;return l!=0&&(s=this.lworldOrgX+(a-this.ldeviceOrgX)*this.lworldExtX/l),s},n.prototype.inverseTransformY=function(a){var s=0,l=this.ldeviceExtY;return l!=0&&(s=this.lworldOrgY+(a-this.ldeviceOrgY)*this.lworldExtY/l),s},n.prototype.inverseTransformPoint=function(a){var s=new i(this.inverseTransformX(a.x),this.inverseTransformY(a.y));return s},e.exports=n}),(function(e,t,r){"use strict";function i(f){if(Array.isArray(f)){for(var p=0,m=Array(f.length);p<f.length;p++)m[p]=f[p];return m}else return Array.from(f)}o(i,"_toConsumableArray");var n=r(15),a=r(7),s=r(0),l=r(8),u=r(9);function h(){n.call(this),this.useSmartIdealEdgeLengthCalculation=a.DEFAULT_USE_SMART_IDEAL_EDGE_LENGTH_CALCULATION,this.idealEdgeLength=a.DEFAULT_EDGE_LENGTH,this.springConstant=a.DEFAULT_SPRING_STRENGTH,this.repulsionConstant=a.DEFAULT_REPULSION_STRENGTH,this.gravityConstant=a.DEFAULT_GRAVITY_STRENGTH,this.compoundGravityConstant=a.DEFAULT_COMPOUND_GRAVITY_STRENGTH,this.gravityRangeFactor=a.DEFAULT_GRAVITY_RANGE_FACTOR,this.compoundGravityRangeFactor=a.DEFAULT_COMPOUND_GRAVITY_RANGE_FACTOR,this.displacementThresholdPerNode=3*a.DEFAULT_EDGE_LENGTH/100,this.coolingFactor=a.DEFAULT_COOLING_FACTOR_INCREMENTAL,this.initialCoolingFactor=a.DEFAULT_COOLING_FACTOR_INCREMENTAL,this.totalDisplacement=0,this.oldTotalDisplacement=0,this.maxIterations=a.MAX_ITERATIONS}o(h,"FDLayout"),h.prototype=Object.create(n.prototype);for(var d in n)h[d]=n[d];h.prototype.initParameters=function(){n.prototype.initParameters.call(this,arguments),this.totalIterations=0,this.notAnimatedIterations=0,this.useFRGridVariant=a.DEFAULT_USE_SMART_REPULSION_RANGE_CALCULATION,this.grid=[]},h.prototype.calcIdealEdgeLengths=function(){for(var f,p,m,g,y,v,x=this.getGraphManager().getAllEdges(),b=0;b<x.length;b++)f=x[b],f.idealLength=this.idealEdgeLength,f.isInterGraph&&(m=f.getSource(),g=f.getTarget(),y=f.getSourceInLca().getEstimatedSize(),v=f.getTargetInLca().getEstimatedSize(),this.useSmartIdealEdgeLengthCalculation&&(f.idealLength+=y+v-2*s.SIMPLE_NODE_SIZE),p=f.getLca().getInclusionTreeDepth(),f.idealLength+=a.DEFAULT_EDGE_LENGTH*a.PER_LEVEL_IDEAL_EDGE_LENGTH_FACTOR*(m.getInclusionTreeDepth()+g.getInclusionTreeDepth()-2*p))},h.prototype.initSpringEmbedder=function(){var f=this.getAllNodes().length;this.incremental?(f>a.ADAPTATION_LOWER_NODE_LIMIT&&(this.coolingFactor=Math.max(this.coolingFactor*a.COOLING_ADAPTATION_FACTOR,this.coolingFactor-(f-a.ADAPTATION_LOWER_NODE_LIMIT)/(a.ADAPTATION_UPPER_NODE_LIMIT-a.ADAPTATION_LOWER_NODE_LIMIT)*this.coolingFactor*(1-a.COOLING_ADAPTATION_FACTOR))),this.maxNodeDisplacement=a.MAX_NODE_DISPLACEMENT_INCREMENTAL):(f>a.ADAPTATION_LOWER_NODE_LIMIT?this.coolingFactor=Math.max(a.COOLING_ADAPTATION_FACTOR,1-(f-a.ADAPTATION_LOWER_NODE_LIMIT)/(a.ADAPTATION_UPPER_NODE_LIMIT-a.ADAPTATION_LOWER_NODE_LIMIT)*(1-a.COOLING_ADAPTATION_FACTOR)):this.coolingFactor=1,this.initialCoolingFactor=this.coolingFactor,this.maxNodeDisplacement=a.MAX_NODE_DISPLACEMENT),this.maxIterations=Math.max(this.getAllNodes().length*5,this.maxIterations),this.totalDisplacementThreshold=this.displacementThresholdPerNode*this.getAllNodes().length,this.repulsionRange=this.calcRepulsionRange()},h.prototype.calcSpringForces=function(){for(var f=this.getAllEdges(),p,m=0;m<f.length;m++)p=f[m],this.calcSpringForce(p,p.idealLength)},h.prototype.calcRepulsionForces=function(){var f=arguments.length>0&&arguments[0]!==void 0?arguments[0]:!0,p=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1,m,g,y,v,x=this.getAllNodes(),b;if(this.useFRGridVariant)for(this.totalIterations%a.GRID_CALCULATION_CHECK_PERIOD==1&&f&&this.updateGrid(),b=new Set,m=0;m<x.length;m++)y=x[m],this.calculateRepulsionForceOfANode(y,b,f,p),b.add(y);else for(m=0;m<x.length;m++)for(y=x[m],g=m+1;g<x.length;g++)v=x[g],y.getOwner()==v.getOwner()&&this.calcRepulsionForce(y,v)},h.prototype.calcGravitationalForces=function(){for(var f,p=this.getAllNodesToApplyGravitation(),m=0;m<p.length;m++)f=p[m],this.calcGravitationalForce(f)},h.prototype.moveNodes=function(){for(var f=this.getAllNodes(),p,m=0;m<f.length;m++)p=f[m],p.move()},h.prototype.calcSpringForce=function(f,p){var m=f.getSource(),g=f.getTarget(),y,v,x,b;if(this.uniformLeafNodeSizes&&m.getChild()==null&&g.getChild()==null)f.updateLengthSimple();else if(f.updateLength(),f.isOverlapingSourceAndTarget)return;y=f.getLength(),y!=0&&(v=this.springConstant*(y-p),x=v*(f.lengthX/y),b=v*(f.lengthY/y),m.springForceX+=x,m.springForceY+=b,g.springForceX-=x,g.springForceY-=b)},h.prototype.calcRepulsionForce=function(f,p){var m=f.getRect(),g=p.getRect(),y=new Array(2),v=new Array(4),x,b,T,w,C,k,E;if(m.intersects(g)){l.calcSeparationAmount(m,g,y,a.DEFAULT_EDGE_LENGTH/2),k=2*y[0],E=2*y[1];var A=f.noOfChildren*p.noOfChildren/(f.noOfChildren+p.noOfChildren);f.repulsionForceX-=A*k,f.repulsionForceY-=A*E,p.repulsionForceX+=A*k,p.repulsionForceY+=A*E}else this.uniformLeafNodeSizes&&f.getChild()==null&&p.getChild()==null?(x=g.getCenterX()-m.getCenterX(),b=g.getCenterY()-m.getCenterY()):(l.getIntersection(m,g,v),x=v[2]-v[0],b=v[3]-v[1]),Math.abs(x)<a.MIN_REPULSION_DIST&&(x=u.sign(x)*a.MIN_REPULSION_DIST),Math.abs(b)<a.MIN_REPULSION_DIST&&(b=u.sign(b)*a.MIN_REPULSION_DIST),T=x*x+b*b,w=Math.sqrt(T),C=this.repulsionConstant*f.noOfChildren*p.noOfChildren/T,k=C*x/w,E=C*b/w,f.repulsionForceX-=k,f.repulsionForceY-=E,p.repulsionForceX+=k,p.repulsionForceY+=E},h.prototype.calcGravitationalForce=function(f){var p,m,g,y,v,x,b,T;p=f.getOwner(),m=(p.getRight()+p.getLeft())/2,g=(p.getTop()+p.getBottom())/2,y=f.getCenterX()-m,v=f.getCenterY()-g,x=Math.abs(y)+f.getWidth()/2,b=Math.abs(v)+f.getHeight()/2,f.getOwner()==this.graphManager.getRoot()?(T=p.getEstimatedSize()*this.gravityRangeFactor,(x>T||b>T)&&(f.gravitationForceX=-this.gravityConstant*y,f.gravitationForceY=-this.gravityConstant*v)):(T=p.getEstimatedSize()*this.compoundGravityRangeFactor,(x>T||b>T)&&(f.gravitationForceX=-this.gravityConstant*y*this.compoundGravityConstant,f.gravitationForceY=-this.gravityConstant*v*this.compoundGravityConstant))},h.prototype.isConverged=function(){var f,p=!1;return this.totalIterations>this.maxIterations/3&&(p=Math.abs(this.totalDisplacement-this.oldTotalDisplacement)<2),f=this.totalDisplacement<this.totalDisplacementThreshold,this.oldTotalDisplacement=this.totalDisplacement,f||p},h.prototype.animate=function(){this.animationDuringLayout&&!this.isSubLayout&&(this.notAnimatedIterations==this.animationPeriod?(this.update(),this.notAnimatedIterations=0):this.notAnimatedIterations++)},h.prototype.calcNoOfChildrenForAllNodes=function(){for(var f,p=this.graphManager.getAllNodes(),m=0;m<p.length;m++)f=p[m],f.noOfChildren=f.getNoOfChildren()},h.prototype.calcGrid=function(f){var p=0,m=0;p=parseInt(Math.ceil((f.getRight()-f.getLeft())/this.repulsionRange)),m=parseInt(Math.ceil((f.getBottom()-f.getTop())/this.repulsionRange));for(var g=new Array(p),y=0;y<p;y++)g[y]=new Array(m);for(var y=0;y<p;y++)for(var v=0;v<m;v++)g[y][v]=new Array;return g},h.prototype.addNodeToGrid=function(f,p,m){var g=0,y=0,v=0,x=0;g=parseInt(Math.floor((f.getRect().x-p)/this.repulsionRange)),y=parseInt(Math.floor((f.getRect().width+f.getRect().x-p)/this.repulsionRange)),v=parseInt(Math.floor((f.getRect().y-m)/this.repulsionRange)),x=parseInt(Math.floor((f.getRect().height+f.getRect().y-m)/this.repulsionRange));for(var b=g;b<=y;b++)for(var T=v;T<=x;T++)this.grid[b][T].push(f),f.setGridCoordinates(g,y,v,x)},h.prototype.updateGrid=function(){var f,p,m=this.getAllNodes();for(this.grid=this.calcGrid(this.graphManager.getRoot()),f=0;f<m.length;f++)p=m[f],this.addNodeToGrid(p,this.graphManager.getRoot().getLeft(),this.graphManager.getRoot().getTop())},h.prototype.calculateRepulsionForceOfANode=function(f,p,m,g){if(this.totalIterations%a.GRID_CALCULATION_CHECK_PERIOD==1&&m||g){var y=new Set;f.surrounding=new Array;for(var v,x=this.grid,b=f.startX-1;b<f.finishX+2;b++)for(var T=f.startY-1;T<f.finishY+2;T++)if(!(b<0||T<0||b>=x.length||T>=x[0].length)){for(var w=0;w<x[b][T].length;w++)if(v=x[b][T][w],!(f.getOwner()!=v.getOwner()||f==v)&&!p.has(v)&&!y.has(v)){var C=Math.abs(f.getCenterX()-v.getCenterX())-(f.getWidth()/2+v.getWidth()/2),k=Math.abs(f.getCenterY()-v.getCenterY())-(f.getHeight()/2+v.getHeight()/2);C<=this.repulsionRange&&k<=this.repulsionRange&&y.add(v)}}f.surrounding=[].concat(i(y))}for(b=0;b<f.surrounding.length;b++)this.calcRepulsionForce(f,f.surrounding[b])},h.prototype.calcRepulsionRange=function(){return 0},e.exports=h}),(function(e,t,r){"use strict";var i=r(1),n=r(7);function a(l,u,h){i.call(this,l,u,h),this.idealLength=n.DEFAULT_EDGE_LENGTH}o(a,"FDLayoutEdge"),a.prototype=Object.create(i.prototype);for(var s in i)a[s]=i[s];e.exports=a}),(function(e,t,r){"use strict";var i=r(3);function n(s,l,u,h){i.call(this,s,l,u,h),this.springForceX=0,this.springForceY=0,this.repulsionForceX=0,this.repulsionForceY=0,this.gravitationForceX=0,this.gravitationForceY=0,this.displacementX=0,this.displacementY=0,this.startX=0,this.finishX=0,this.startY=0,this.finishY=0,this.surrounding=[]}o(n,"FDLayoutNode"),n.prototype=Object.create(i.prototype);for(var a in i)n[a]=i[a];n.prototype.setGridCoordinates=function(s,l,u,h){this.startX=s,this.finishX=l,this.startY=u,this.finishY=h},e.exports=n}),(function(e,t,r){"use strict";function i(n,a){this.width=0,this.height=0,n!==null&&a!==null&&(this.height=a,this.width=n)}o(i,"DimensionD"),i.prototype.getWidth=function(){return this.width},i.prototype.setWidth=function(n){this.width=n},i.prototype.getHeight=function(){return this.height},i.prototype.setHeight=function(n){this.height=n},e.exports=i}),(function(e,t,r){"use strict";var i=r(14);function n(){this.map={},this.keys=[]}o(n,"HashMap"),n.prototype.put=function(a,s){var l=i.createID(a);this.contains(l)||(this.map[l]=s,this.keys.push(a))},n.prototype.contains=function(a){var s=i.createID(a);return this.map[a]!=null},n.prototype.get=function(a){var s=i.createID(a);return this.map[s]},n.prototype.keySet=function(){return this.keys},e.exports=n}),(function(e,t,r){"use strict";var i=r(14);function n(){this.set={}}o(n,"HashSet"),n.prototype.add=function(a){var s=i.createID(a);this.contains(s)||(this.set[s]=a)},n.prototype.remove=function(a){delete this.set[i.createID(a)]},n.prototype.clear=function(){this.set={}},n.prototype.contains=function(a){return this.set[i.createID(a)]==a},n.prototype.isEmpty=function(){return this.size()===0},n.prototype.size=function(){return Object.keys(this.set).length},n.prototype.addAllTo=function(a){for(var s=Object.keys(this.set),l=s.length,u=0;u<l;u++)a.push(this.set[s[u]])},n.prototype.size=function(){return Object.keys(this.set).length},n.prototype.addAll=function(a){for(var s=a.length,l=0;l<s;l++){var u=a[l];this.add(u)}},e.exports=n}),(function(e,t,r){"use strict";var i=(function(){function l(u,h){for(var d=0;d<h.length;d++){var f=h[d];f.enumerable=f.enumerable||!1,f.configurable=!0,"value"in f&&(f.writable=!0),Object.defineProperty(u,f.key,f)}}return o(l,"defineProperties"),function(u,h,d){return h&&l(u.prototype,h),d&&l(u,d),u}})();function n(l,u){if(!(l instanceof u))throw new TypeError("Cannot call a class as a function")}o(n,"_classCallCheck");var a=r(11),s=(function(){function l(u,h){n(this,l),(h!==null||h!==void 0)&&(this.compareFunction=this._defaultCompareFunction);var d=void 0;u instanceof a?d=u.size():d=u.length,this._quicksort(u,0,d-1)}return o(l,"Quicksort"),i(l,[{key:"_quicksort",value:o(function(h,d,f){if(d<f){var p=this._partition(h,d,f);this._quicksort(h,d,p),this._quicksort(h,p+1,f)}},"_quicksort")},{key:"_partition",value:o(function(h,d,f){for(var p=this._get(h,d),m=d,g=f;;){for(;this.compareFunction(p,this._get(h,g));)g--;for(;this.compareFunction(this._get(h,m),p);)m++;if(m<g)this._swap(h,m,g),m++,g--;else return g}},"_partition")},{key:"_get",value:o(function(h,d){return h instanceof a?h.get_object_at(d):h[d]},"_get")},{key:"_set",value:o(function(h,d,f){h instanceof a?h.set_object_at(d,f):h[d]=f},"_set")},{key:"_swap",value:o(function(h,d,f){var p=this._get(h,d);this._set(h,d,this._get(h,f)),this._set(h,f,p)},"_swap")},{key:"_defaultCompareFunction",value:o(function(h,d){return d>h},"_defaultCompareFunction")}]),l})();e.exports=s}),(function(e,t,r){"use strict";var i=(function(){function s(l,u){for(var h=0;h<u.length;h++){var d=u[h];d.enumerable=d.enumerable||!1,d.configurable=!0,"value"in d&&(d.writable=!0),Object.defineProperty(l,d.key,d)}}return o(s,"defineProperties"),function(l,u,h){return u&&s(l.prototype,u),h&&s(l,h),l}})();function n(s,l){if(!(s instanceof l))throw new TypeError("Cannot call a class as a function")}o(n,"_classCallCheck");var a=(function(){function s(l,u){var h=arguments.length>2&&arguments[2]!==void 0?arguments[2]:1,d=arguments.length>3&&arguments[3]!==void 0?arguments[3]:-1,f=arguments.length>4&&arguments[4]!==void 0?arguments[4]:-1;n(this,s),this.sequence1=l,this.sequence2=u,this.match_score=h,this.mismatch_penalty=d,this.gap_penalty=f,this.iMax=l.length+1,this.jMax=u.length+1,this.grid=new Array(this.iMax);for(var p=0;p<this.iMax;p++){this.grid[p]=new Array(this.jMax);for(var m=0;m<this.jMax;m++)this.grid[p][m]=0}this.tracebackGrid=new Array(this.iMax);for(var g=0;g<this.iMax;g++){this.tracebackGrid[g]=new Array(this.jMax);for(var y=0;y<this.jMax;y++)this.tracebackGrid[g][y]=[null,null,null]}this.alignments=[],this.score=-1,this.computeGrids()}return o(s,"NeedlemanWunsch"),i(s,[{key:"getScore",value:o(function(){return this.score},"getScore")},{key:"getAlignments",value:o(function(){return this.alignments},"getAlignments")},{key:"computeGrids",value:o(function(){for(var u=1;u<this.jMax;u++)this.grid[0][u]=this.grid[0][u-1]+this.gap_penalty,this.tracebackGrid[0][u]=[!1,!1,!0];for(var h=1;h<this.iMax;h++)this.grid[h][0]=this.grid[h-1][0]+this.gap_penalty,this.tracebackGrid[h][0]=[!1,!0,!1];for(var d=1;d<this.iMax;d++)for(var f=1;f<this.jMax;f++){var p=void 0;this.sequence1[d-1]===this.sequence2[f-1]?p=this.grid[d-1][f-1]+this.match_score:p=this.grid[d-1][f-1]+this.mismatch_penalty;var m=this.grid[d-1][f]+this.gap_penalty,g=this.grid[d][f-1]+this.gap_penalty,y=[p,m,g],v=this.arrayAllMaxIndexes(y);this.grid[d][f]=y[v[0]],this.tracebackGrid[d][f]=[v.includes(0),v.includes(1),v.includes(2)]}this.score=this.grid[this.iMax-1][this.jMax-1]},"computeGrids")},{key:"alignmentTraceback",value:o(function(){var u=[];for(u.push({pos:[this.sequence1.length,this.sequence2.length],seq1:"",seq2:""});u[0];){var h=u[0],d=this.tracebackGrid[h.pos[0]][h.pos[1]];d[0]&&u.push({pos:[h.pos[0]-1,h.pos[1]-1],seq1:this.sequence1[h.pos[0]-1]+h.seq1,seq2:this.sequence2[h.pos[1]-1]+h.seq2}),d[1]&&u.push({pos:[h.pos[0]-1,h.pos[1]],seq1:this.sequence1[h.pos[0]-1]+h.seq1,seq2:"-"+h.seq2}),d[2]&&u.push({pos:[h.pos[0],h.pos[1]-1],seq1:"-"+h.seq1,seq2:this.sequence2[h.pos[1]-1]+h.seq2}),h.pos[0]===0&&h.pos[1]===0&&this.alignments.push({sequence1:h.seq1,sequence2:h.seq2}),u.shift()}return this.alignments},"alignmentTraceback")},{key:"getAllIndexes",value:o(function(u,h){for(var d=[],f=-1;(f=u.indexOf(h,f+1))!==-1;)d.push(f);return d},"getAllIndexes")},{key:"arrayAllMaxIndexes",value:o(function(u){return this.getAllIndexes(u,Math.max.apply(null,u))},"arrayAllMaxIndexes")}]),s})();e.exports=a}),(function(e,t,r){"use strict";var i=o(function(){},"layoutBase");i.FDLayout=r(18),i.FDLayoutConstants=r(7),i.FDLayoutEdge=r(19),i.FDLayoutNode=r(20),i.DimensionD=r(21),i.HashMap=r(22),i.HashSet=r(23),i.IGeometry=r(8),i.IMath=r(9),i.Integer=r(10),i.Point=r(12),i.PointD=r(4),i.RandomSeed=r(16),i.RectangleD=r(13),i.Transform=r(17),i.UniqueIDGeneretor=r(14),i.Quicksort=r(24),i.LinkedList=r(11),i.LGraphObject=r(2),i.LGraph=r(5),i.LEdge=r(1),i.LGraphManager=r(6),i.LNode=r(3),i.Layout=r(15),i.LayoutConstants=r(0),i.NeedlemanWunsch=r(25),e.exports=i}),(function(e,t,r){"use strict";function i(){this.listeners=[]}o(i,"Emitter");var n=i.prototype;n.addListener=function(a,s){this.listeners.push({event:a,callback:s})},n.removeListener=function(a,s){for(var l=this.listeners.length;l>=0;l--){var u=this.listeners[l];u.event===a&&u.callback===s&&this.listeners.splice(l,1)}},n.emit=function(a,s){for(var l=0;l<this.listeners.length;l++){var u=this.listeners[l];a===u.event&&u.callback(s)}},e.exports=i})])})});var $P=Js((m2,FP)=>{"use strict";o((function(t,r){typeof m2=="object"&&typeof FP=="object"?FP.exports=r(BP()):typeof define=="function"&&define.amd?define(["layout-base"],r):typeof m2=="object"?m2.coseBase=r(BP()):t.coseBase=r(t.layoutBase)}),"webpackUniversalModuleDefinition")(m2,function(e){return(function(t){var r={};function i(n){if(r[n])return r[n].exports;var a=r[n]={i:n,l:!1,exports:{}};return t[n].call(a.exports,a,a.exports,i),a.l=!0,a.exports}return o(i,"__webpack_require__"),i.m=t,i.c=r,i.i=function(n){return n},i.d=function(n,a,s){i.o(n,a)||Object.defineProperty(n,a,{configurable:!1,enumerable:!0,get:s})},i.n=function(n){var a=n&&n.__esModule?o(function(){return n.default},"getDefault"):o(function(){return n},"getModuleExports");return i.d(a,"a",a),a},i.o=function(n,a){return Object.prototype.hasOwnProperty.call(n,a)},i.p="",i(i.s=7)})([(function(t,r){t.exports=e}),(function(t,r,i){"use strict";var n=i(0).FDLayoutConstants;function a(){}o(a,"CoSEConstants");for(var s in n)a[s]=n[s];a.DEFAULT_USE_MULTI_LEVEL_SCALING=!1,a.DEFAULT_RADIAL_SEPARATION=n.DEFAULT_EDGE_LENGTH,a.DEFAULT_COMPONENT_SEPERATION=60,a.TILE=!0,a.TILING_PADDING_VERTICAL=10,a.TILING_PADDING_HORIZONTAL=10,a.TREE_REDUCTION_ON_INCREMENTAL=!1,t.exports=a}),(function(t,r,i){"use strict";var n=i(0).FDLayoutEdge;function a(l,u,h){n.call(this,l,u,h)}o(a,"CoSEEdge"),a.prototype=Object.create(n.prototype);for(var s in n)a[s]=n[s];t.exports=a}),(function(t,r,i){"use strict";var n=i(0).LGraph;function a(l,u,h){n.call(this,l,u,h)}o(a,"CoSEGraph"),a.prototype=Object.create(n.prototype);for(var s in n)a[s]=n[s];t.exports=a}),(function(t,r,i){"use strict";var n=i(0).LGraphManager;function a(l){n.call(this,l)}o(a,"CoSEGraphManager"),a.prototype=Object.create(n.prototype);for(var s in n)a[s]=n[s];t.exports=a}),(function(t,r,i){"use strict";var n=i(0).FDLayoutNode,a=i(0).IMath;function s(u,h,d,f){n.call(this,u,h,d,f)}o(s,"CoSENode"),s.prototype=Object.create(n.prototype);for(var l in n)s[l]=n[l];s.prototype.move=function(){var u=this.graphManager.getLayout();this.displacementX=u.coolingFactor*(this.springForceX+this.repulsionForceX+this.gravitationForceX)/this.noOfChildren,this.displacementY=u.coolingFactor*(this.springForceY+this.repulsionForceY+this.gravitationForceY)/this.noOfChildren,Math.abs(this.displacementX)>u.coolingFactor*u.maxNodeDisplacement&&(this.displacementX=u.coolingFactor*u.maxNodeDisplacement*a.sign(this.displacementX)),Math.abs(this.displacementY)>u.coolingFactor*u.maxNodeDisplacement&&(this.displacementY=u.coolingFactor*u.maxNodeDisplacement*a.sign(this.displacementY)),this.child==null?this.moveBy(this.displacementX,this.displacementY):this.child.getNodes().length==0?this.moveBy(this.displacementX,this.displacementY):this.propogateDisplacementToChildren(this.displacementX,this.displacementY),u.totalDisplacement+=Math.abs(this.displacementX)+Math.abs(this.displacementY),this.springForceX=0,this.springForceY=0,this.repulsionForceX=0,this.repulsionForceY=0,this.gravitationForceX=0,this.gravitationForceY=0,this.displacementX=0,this.displacementY=0},s.prototype.propogateDisplacementToChildren=function(u,h){for(var d=this.getChild().getNodes(),f,p=0;p<d.length;p++)f=d[p],f.getChild()==null?(f.moveBy(u,h),f.displacementX+=u,f.displacementY+=h):f.propogateDisplacementToChildren(u,h)},s.prototype.setPred1=function(u){this.pred1=u},s.prototype.getPred1=function(){return pred1},s.prototype.getPred2=function(){return pred2},s.prototype.setNext=function(u){this.next=u},s.prototype.getNext=function(){return next},s.prototype.setProcessed=function(u){this.processed=u},s.prototype.isProcessed=function(){return processed},t.exports=s}),(function(t,r,i){"use strict";var n=i(0).FDLayout,a=i(4),s=i(3),l=i(5),u=i(2),h=i(1),d=i(0).FDLayoutConstants,f=i(0).LayoutConstants,p=i(0).Point,m=i(0).PointD,g=i(0).Layout,y=i(0).Integer,v=i(0).IGeometry,x=i(0).LGraph,b=i(0).Transform;function T(){n.call(this),this.toBeTiled={}}o(T,"CoSELayout"),T.prototype=Object.create(n.prototype);for(var w in n)T[w]=n[w];T.prototype.newGraphManager=function(){var C=new a(this);return this.graphManager=C,C},T.prototype.newGraph=function(C){return new s(null,this.graphManager,C)},T.prototype.newNode=function(C){return new l(this.graphManager,C)},T.prototype.newEdge=function(C){return new u(null,null,C)},T.prototype.initParameters=function(){n.prototype.initParameters.call(this,arguments),this.isSubLayout||(h.DEFAULT_EDGE_LENGTH<10?this.idealEdgeLength=10:this.idealEdgeLength=h.DEFAULT_EDGE_LENGTH,this.useSmartIdealEdgeLengthCalculation=h.DEFAULT_USE_SMART_IDEAL_EDGE_LENGTH_CALCULATION,this.springConstant=d.DEFAULT_SPRING_STRENGTH,this.repulsionConstant=d.DEFAULT_REPULSION_STRENGTH,this.gravityConstant=d.DEFAULT_GRAVITY_STRENGTH,this.compoundGravityConstant=d.DEFAULT_COMPOUND_GRAVITY_STRENGTH,this.gravityRangeFactor=d.DEFAULT_GRAVITY_RANGE_FACTOR,this.compoundGravityRangeFactor=d.DEFAULT_COMPOUND_GRAVITY_RANGE_FACTOR,this.prunedNodesAll=[],this.growTreeIterations=0,this.afterGrowthIterations=0,this.isTreeGrowing=!1,this.isGrowthFinished=!1,this.coolingCycle=0,this.maxCoolingCycle=this.maxIterations/d.CONVERGENCE_CHECK_PERIOD,this.finalTemperature=d.CONVERGENCE_CHECK_PERIOD/this.maxIterations,this.coolingAdjuster=1)},T.prototype.layout=function(){var C=f.DEFAULT_CREATE_BENDS_AS_NEEDED;return C&&(this.createBendpoints(),this.graphManager.resetAllEdges()),this.level=0,this.classicLayout()},T.prototype.classicLayout=function(){if(this.nodesWithGravity=this.calculateNodesToApplyGravitationTo(),this.graphManager.setAllNodesToApplyGravitation(this.nodesWithGravity),this.calcNoOfChildrenForAllNodes(),this.graphManager.calcLowestCommonAncestors(),this.graphManager.calcInclusionTreeDepths(),this.graphManager.getRoot().calcEstimatedSize(),this.calcIdealEdgeLengths(),this.incremental){if(h.TREE_REDUCTION_ON_INCREMENTAL){this.reduceTrees(),this.graphManager.resetAllNodesToApplyGravitation();var k=new Set(this.getAllNodes()),E=this.nodesWithGravity.filter(function(P){return k.has(P)});this.graphManager.setAllNodesToApplyGravitation(E)}}else{var C=this.getFlatForest();if(C.length>0)this.positionNodesRadially(C);else{this.reduceTrees(),this.graphManager.resetAllNodesToApplyGravitation();var k=new Set(this.getAllNodes()),E=this.nodesWithGravity.filter(function(A){return k.has(A)});this.graphManager.setAllNodesToApplyGravitation(E),this.positionNodesRandomly()}}return this.initSpringEmbedder(),this.runSpringEmbedder(),!0},T.prototype.tick=function(){if(this.totalIterations++,this.totalIterations===this.maxIterations&&!this.isTreeGrowing&&!this.isGrowthFinished)if(this.prunedNodesAll.length>0)this.isTreeGrowing=!0;else return!0;if(this.totalIterations%d.CONVERGENCE_CHECK_PERIOD==0&&!this.isTreeGrowing&&!this.isGrowthFinished){if(this.isConverged())if(this.prunedNodesAll.length>0)this.isTreeGrowing=!0;else return!0;this.coolingCycle++,this.layoutQuality==0?this.coolingAdjuster=this.coolingCycle:this.layoutQuality==1&&(this.coolingAdjuster=this.coolingCycle/3),this.coolingFactor=Math.max(this.initialCoolingFactor-Math.pow(this.coolingCycle,Math.log(100*(this.initialCoolingFactor-this.finalTemperature))/Math.log(this.maxCoolingCycle))/100*this.coolingAdjuster,this.finalTemperature),this.animationPeriod=Math.ceil(this.initialAnimationPeriod*Math.sqrt(this.coolingFactor))}if(this.isTreeGrowing){if(this.growTreeIterations%10==0)if(this.prunedNodesAll.length>0){this.graphManager.updateBounds(),this.updateGrid(),this.growTree(this.prunedNodesAll),this.graphManager.resetAllNodesToApplyGravitation();var C=new Set(this.getAllNodes()),k=this.nodesWithGravity.filter(function(N){return C.has(N)});this.graphManager.setAllNodesToApplyGravitation(k),this.graphManager.updateBounds(),this.updateGrid(),this.coolingFactor=d.DEFAULT_COOLING_FACTOR_INCREMENTAL}else this.isTreeGrowing=!1,this.isGrowthFinished=!0;this.growTreeIterations++}if(this.isGrowthFinished){if(this.isConverged())return!0;this.afterGrowthIterations%10==0&&(this.graphManager.updateBounds(),this.updateGrid()),this.coolingFactor=d.DEFAULT_COOLING_FACTOR_INCREMENTAL*((100-this.afterGrowthIterations)/100),this.afterGrowthIterations++}var E=!this.isTreeGrowing&&!this.isGrowthFinished,A=this.growTreeIterations%10==1&&this.isTreeGrowing||this.afterGrowthIterations%10==1&&this.isGrowthFinished;return this.totalDisplacement=0,this.graphManager.updateBounds(),this.calcSpringForces(),this.calcRepulsionForces(E,A),this.calcGravitationalForces(),this.moveNodes(),this.animate(),!1},T.prototype.getPositionsData=function(){for(var C=this.graphManager.getAllNodes(),k={},E=0;E<C.length;E++){var A=C[E].rect,N=C[E].id;k[N]={id:N,x:A.getCenterX(),y:A.getCenterY(),w:A.width,h:A.height}}return k},T.prototype.runSpringEmbedder=function(){this.initialAnimationPeriod=25,this.animationPeriod=this.initialAnimationPeriod;var C=!1;if(d.ANIMATE==="during")this.emit("layoutstarted");else{for(;!C;)C=this.tick();this.graphManager.updateBounds()}},T.prototype.calculateNodesToApplyGravitationTo=function(){var C=[],k,E=this.graphManager.getGraphs(),A=E.length,N;for(N=0;N<A;N++)k=E[N],k.updateConnected(),k.isConnected||(C=C.concat(k.getNodes()));return C},T.prototype.createBendpoints=function(){var C=[];C=C.concat(this.graphManager.getAllEdges());var k=new Set,E;for(E=0;E<C.length;E++){var A=C[E];if(!k.has(A)){var N=A.getSource(),P=A.getTarget();if(N==P)A.getBendpoints().push(new m),A.getBendpoints().push(new m),this.createDummyNodesForBendpoints(A),k.add(A);else{var I=[];if(I=I.concat(N.getEdgeListToNode(P)),I=I.concat(P.getEdgeListToNode(N)),!k.has(I[0])){if(I.length>1){var D;for(D=0;D<I.length;D++){var _=I[D];_.getBendpoints().push(new m),this.createDummyNodesForBendpoints(_)}}I.forEach(function(R){k.add(R)})}}}if(k.size==C.length)break}},T.prototype.positionNodesRadially=function(C){for(var k=new p(0,0),E=Math.ceil(Math.sqrt(C.length)),A=0,N=0,P=0,I=new m(0,0),D=0;D<C.length;D++){D%E==0&&(P=0,N=A,D!=0&&(N+=h.DEFAULT_COMPONENT_SEPERATION),A=0);var _=C[D],R=g.findCenterOfTree(_);k.x=P,k.y=N,I=T.radialLayout(_,R,k),I.y>A&&(A=Math.floor(I.y)),P=Math.floor(I.x+h.DEFAULT_COMPONENT_SEPERATION)}this.transform(new m(f.WORLD_CENTER_X-I.x/2,f.WORLD_CENTER_Y-I.y/2))},T.radialLayout=function(C,k,E){var A=Math.max(this.maxDiagonalInTree(C),h.DEFAULT_RADIAL_SEPARATION);T.branchRadialLayout(k,null,0,359,0,A);var N=x.calculateBounds(C),P=new b;P.setDeviceOrgX(N.getMinX()),P.setDeviceOrgY(N.getMinY()),P.setWorldOrgX(E.x),P.setWorldOrgY(E.y);for(var I=0;I<C.length;I++){var D=C[I];D.transform(P)}var _=new m(N.getMaxX(),N.getMaxY());return P.inverseTransformPoint(_)},T.branchRadialLayout=function(C,k,E,A,N,P){var I=(A-E+1)/2;I<0&&(I+=180);var D=(I+E)%360,_=D*v.TWO_PI/360,R=Math.cos(_),M=N*Math.cos(_),L=N*Math.sin(_);C.setCenter(M,L);var B=[];B=B.concat(C.getEdges());var O=B.length;k!=null&&O--;for(var $=0,G=B.length,F,V=C.getEdgesBetween(k);V.length>1;){var H=V[0];V.splice(0,1);var j=B.indexOf(H);j>=0&&B.splice(j,1),G--,O--}k!=null?F=(B.indexOf(V[0])+1)%G:F=0;for(var U=Math.abs(A-E)/O,Q=F;$!=O;Q=++Q%G){var Y=B[Q].getOtherEnd(C);if(Y!=k){var ae=(E+$*U)%360,J=(ae+U)%360;T.branchRadialLayout(Y,C,ae,J,N+P,P),$++}}},T.maxDiagonalInTree=function(C){for(var k=y.MIN_VALUE,E=0;E<C.length;E++){var A=C[E],N=A.getDiagonal();N>k&&(k=N)}return k},T.prototype.calcRepulsionRange=function(){return 2*(this.level+1)*this.idealEdgeLength},T.prototype.groupZeroDegreeMembers=function(){var C=this,k={};this.memberGroups={},this.idToDummyNode={};for(var E=[],A=this.graphManager.getAllNodes(),N=0;N<A.length;N++){var P=A[N],I=P.getParent();this.getNodeDegreeWithChildren(P)===0&&(I.id==null||!this.getToBeTiled(I))&&E.push(P)}for(var N=0;N<E.length;N++){var P=E[N],D=P.getParent().id;typeof k[D]>"u"&&(k[D]=[]),k[D]=k[D].concat(P)}Object.keys(k).forEach(function(_){if(k[_].length>1){var R="DummyCompound_"+_;C.memberGroups[R]=k[_];var M=k[_][0].getParent(),L=new l(C.graphManager);L.id=R,L.paddingLeft=M.paddingLeft||0,L.paddingRight=M.paddingRight||0,L.paddingBottom=M.paddingBottom||0,L.paddingTop=M.paddingTop||0,C.idToDummyNode[R]=L;var B=C.getGraphManager().add(C.newGraph(),L),O=M.getChild();O.add(L);for(var $=0;$<k[_].length;$++){var G=k[_][$];O.remove(G),B.add(G)}}})},T.prototype.clearCompounds=function(){var C={},k={};this.performDFSOnCompounds();for(var E=0;E<this.compoundOrder.length;E++)k[this.compoundOrder[E].id]=this.compoundOrder[E],C[this.compoundOrder[E].id]=[].concat(this.compoundOrder[E].getChild().getNodes()),this.graphManager.remove(this.compoundOrder[E].getChild()),this.compoundOrder[E].child=null;this.graphManager.resetAllNodes(),this.tileCompoundMembers(C,k)},T.prototype.clearZeroDegreeMembers=function(){var C=this,k=this.tiledZeroDegreePack=[];Object.keys(this.memberGroups).forEach(function(E){var A=C.idToDummyNode[E];k[E]=C.tileNodes(C.memberGroups[E],A.paddingLeft+A.paddingRight),A.rect.width=k[E].width,A.rect.height=k[E].height})},T.prototype.repopulateCompounds=function(){for(var C=this.compoundOrder.length-1;C>=0;C--){var k=this.compoundOrder[C],E=k.id,A=k.paddingLeft,N=k.paddingTop;this.adjustLocations(this.tiledMemberPack[E],k.rect.x,k.rect.y,A,N)}},T.prototype.repopulateZeroDegreeMembers=function(){var C=this,k=this.tiledZeroDegreePack;Object.keys(k).forEach(function(E){var A=C.idToDummyNode[E],N=A.paddingLeft,P=A.paddingTop;C.adjustLocations(k[E],A.rect.x,A.rect.y,N,P)})},T.prototype.getToBeTiled=function(C){var k=C.id;if(this.toBeTiled[k]!=null)return this.toBeTiled[k];var E=C.getChild();if(E==null)return this.toBeTiled[k]=!1,!1;for(var A=E.getNodes(),N=0;N<A.length;N++){var P=A[N];if(this.getNodeDegree(P)>0)return this.toBeTiled[k]=!1,!1;if(P.getChild()==null){this.toBeTiled[P.id]=!1;continue}if(!this.getToBeTiled(P))return this.toBeTiled[k]=!1,!1}return this.toBeTiled[k]=!0,!0},T.prototype.getNodeDegree=function(C){for(var k=C.id,E=C.getEdges(),A=0,N=0;N<E.length;N++){var P=E[N];P.getSource().id!==P.getTarget().id&&(A=A+1)}return A},T.prototype.getNodeDegreeWithChildren=function(C){var k=this.getNodeDegree(C);if(C.getChild()==null)return k;for(var E=C.getChild().getNodes(),A=0;A<E.length;A++){var N=E[A];k+=this.getNodeDegreeWithChildren(N)}return k},T.prototype.performDFSOnCompounds=function(){this.compoundOrder=[],this.fillCompexOrderByDFS(this.graphManager.getRoot().getNodes())},T.prototype.fillCompexOrderByDFS=function(C){for(var k=0;k<C.length;k++){var E=C[k];E.getChild()!=null&&this.fillCompexOrderByDFS(E.getChild().getNodes()),this.getToBeTiled(E)&&this.compoundOrder.push(E)}},T.prototype.adjustLocations=function(C,k,E,A,N){k+=A,E+=N;for(var P=k,I=0;I<C.rows.length;I++){var D=C.rows[I];k=P;for(var _=0,R=0;R<D.length;R++){var M=D[R];M.rect.x=k,M.rect.y=E,k+=M.rect.width+C.horizontalPadding,M.rect.height>_&&(_=M.rect.height)}E+=_+C.verticalPadding}},T.prototype.tileCompoundMembers=function(C,k){var E=this;this.tiledMemberPack=[],Object.keys(C).forEach(function(A){var N=k[A];E.tiledMemberPack[A]=E.tileNodes(C[A],N.paddingLeft+N.paddingRight),N.rect.width=E.tiledMemberPack[A].width,N.rect.height=E.tiledMemberPack[A].height})},T.prototype.tileNodes=function(C,k){var E=h.TILING_PADDING_VERTICAL,A=h.TILING_PADDING_HORIZONTAL,N={rows:[],rowWidth:[],rowHeight:[],width:0,height:k,verticalPadding:E,horizontalPadding:A};C.sort(function(D,_){return D.rect.width*D.rect.height>_.rect.width*_.rect.height?-1:D.rect.width*D.rect.height<_.rect.width*_.rect.height?1:0});for(var P=0;P<C.length;P++){var I=C[P];N.rows.length==0?this.insertNodeToRow(N,I,0,k):this.canAddHorizontal(N,I.rect.width,I.rect.height)?this.insertNodeToRow(N,I,this.getShortestRowIndex(N),k):this.insertNodeToRow(N,I,N.rows.length,k),this.shiftToLastRow(N)}return N},T.prototype.insertNodeToRow=function(C,k,E,A){var N=A;if(E==C.rows.length){var P=[];C.rows.push(P),C.rowWidth.push(N),C.rowHeight.push(0)}var I=C.rowWidth[E]+k.rect.width;C.rows[E].length>0&&(I+=C.horizontalPadding),C.rowWidth[E]=I,C.width<I&&(C.width=I);var D=k.rect.height;E>0&&(D+=C.verticalPadding);var _=0;D>C.rowHeight[E]&&(_=C.rowHeight[E],C.rowHeight[E]=D,_=C.rowHeight[E]-_),C.height+=_,C.rows[E].push(k)},T.prototype.getShortestRowIndex=function(C){for(var k=-1,E=Number.MAX_VALUE,A=0;A<C.rows.length;A++)C.rowWidth[A]<E&&(k=A,E=C.rowWidth[A]);return k},T.prototype.getLongestRowIndex=function(C){for(var k=-1,E=Number.MIN_VALUE,A=0;A<C.rows.length;A++)C.rowWidth[A]>E&&(k=A,E=C.rowWidth[A]);return k},T.prototype.canAddHorizontal=function(C,k,E){var A=this.getShortestRowIndex(C);if(A<0)return!0;var N=C.rowWidth[A];if(N+C.horizontalPadding+k<=C.width)return!0;var P=0;C.rowHeight[A]<E&&A>0&&(P=E+C.verticalPadding-C.rowHeight[A]);var I;C.width-N>=k+C.horizontalPadding?I=(C.height+P)/(N+k+C.horizontalPadding):I=(C.height+P)/C.width,P=E+C.verticalPadding;var D;return C.width<k?D=(C.height+P)/k:D=(C.height+P)/C.width,D<1&&(D=1/D),I<1&&(I=1/I),I<D},T.prototype.shiftToLastRow=function(C){var k=this.getLongestRowIndex(C),E=C.rowWidth.length-1,A=C.rows[k],N=A[A.length-1],P=N.width+C.horizontalPadding;if(C.width-C.rowWidth[E]>P&&k!=E){A.splice(-1,1),C.rows[E].push(N),C.rowWidth[k]=C.rowWidth[k]-P,C.rowWidth[E]=C.rowWidth[E]+P,C.width=C.rowWidth[instance.getLongestRowIndex(C)];for(var I=Number.MIN_VALUE,D=0;D<A.length;D++)A[D].height>I&&(I=A[D].height);k>0&&(I+=C.verticalPadding);var _=C.rowHeight[k]+C.rowHeight[E];C.rowHeight[k]=I,C.rowHeight[E]<N.height+C.verticalPadding&&(C.rowHeight[E]=N.height+C.verticalPadding);var R=C.rowHeight[k]+C.rowHeight[E];C.height+=R-_,this.shiftToLastRow(C)}},T.prototype.tilingPreLayout=function(){h.TILE&&(this.groupZeroDegreeMembers(),this.clearCompounds(),this.clearZeroDegreeMembers())},T.prototype.tilingPostLayout=function(){h.TILE&&(this.repopulateZeroDegreeMembers(),this.repopulateCompounds())},T.prototype.reduceTrees=function(){for(var C=[],k=!0,E;k;){var A=this.graphManager.getAllNodes(),N=[];k=!1;for(var P=0;P<A.length;P++)E=A[P],E.getEdges().length==1&&!E.getEdges()[0].isInterGraph&&E.getChild()==null&&(N.push([E,E.getEdges()[0],E.getOwner()]),k=!0);if(k==!0){for(var I=[],D=0;D<N.length;D++)N[D][0].getEdges().length==1&&(I.push(N[D]),N[D][0].getOwner().remove(N[D][0]));C.push(I),this.graphManager.resetAllNodes(),this.graphManager.resetAllEdges()}}this.prunedNodesAll=C},T.prototype.growTree=function(C){for(var k=C.length,E=C[k-1],A,N=0;N<E.length;N++)A=E[N],this.findPlaceforPrunedNode(A),A[2].add(A[0]),A[2].add(A[1],A[1].source,A[1].target);C.splice(C.length-1,1),this.graphManager.resetAllNodes(),this.graphManager.resetAllEdges()},T.prototype.findPlaceforPrunedNode=function(C){var k,E,A=C[0];A==C[1].source?E=C[1].target:E=C[1].source;var N=E.startX,P=E.finishX,I=E.startY,D=E.finishY,_=0,R=0,M=0,L=0,B=[_,M,R,L];if(I>0)for(var O=N;O<=P;O++)B[0]+=this.grid[O][I-1].length+this.grid[O][I].length-1;if(P<this.grid.length-1)for(var O=I;O<=D;O++)B[1]+=this.grid[P+1][O].length+this.grid[P][O].length-1;if(D<this.grid[0].length-1)for(var O=N;O<=P;O++)B[2]+=this.grid[O][D+1].length+this.grid[O][D].length-1;if(N>0)for(var O=I;O<=D;O++)B[3]+=this.grid[N-1][O].length+this.grid[N][O].length-1;for(var $=y.MAX_VALUE,G,F,V=0;V<B.length;V++)B[V]<$?($=B[V],G=1,F=V):B[V]==$&&G++;if(G==3&&$==0)B[0]==0&&B[1]==0&&B[2]==0?k=1:B[0]==0&&B[1]==0&&B[3]==0?k=0:B[0]==0&&B[2]==0&&B[3]==0?k=3:B[1]==0&&B[2]==0&&B[3]==0&&(k=2);else if(G==2&&$==0){var H=Math.floor(Math.random()*2);B[0]==0&&B[1]==0?H==0?k=0:k=1:B[0]==0&&B[2]==0?H==0?k=0:k=2:B[0]==0&&B[3]==0?H==0?k=0:k=3:B[1]==0&&B[2]==0?H==0?k=1:k=2:B[1]==0&&B[3]==0?H==0?k=1:k=3:H==0?k=2:k=3}else if(G==4&&$==0){var H=Math.floor(Math.random()*4);k=H}else k=F;k==0?A.setCenter(E.getCenterX(),E.getCenterY()-E.getHeight()/2-d.DEFAULT_EDGE_LENGTH-A.getHeight()/2):k==1?A.setCenter(E.getCenterX()+E.getWidth()/2+d.DEFAULT_EDGE_LENGTH+A.getWidth()/2,E.getCenterY()):k==2?A.setCenter(E.getCenterX(),E.getCenterY()+E.getHeight()/2+d.DEFAULT_EDGE_LENGTH+A.getHeight()/2):A.setCenter(E.getCenterX()-E.getWidth()/2-d.DEFAULT_EDGE_LENGTH-A.getWidth()/2,E.getCenterY())},t.exports=T}),(function(t,r,i){"use strict";var n={};n.layoutBase=i(0),n.CoSEConstants=i(1),n.CoSEEdge=i(2),n.CoSEGraph=i(3),n.CoSEGraphManager=i(4),n.CoSELayout=i(6),n.CoSENode=i(5),t.exports=n})])})});var Oge=Js((g2,zP)=>{"use strict";o((function(t,r){typeof g2=="object"&&typeof zP=="object"?zP.exports=r($P()):typeof define=="function"&&define.amd?define(["cose-base"],r):typeof g2=="object"?g2.cytoscapeCoseBilkent=r($P()):t.cytoscapeCoseBilkent=r(t.coseBase)}),"webpackUniversalModuleDefinition")(g2,function(e){return(function(t){var r={};function i(n){if(r[n])return r[n].exports;var a=r[n]={i:n,l:!1,exports:{}};return t[n].call(a.exports,a,a.exports,i),a.l=!0,a.exports}return o(i,"__webpack_require__"),i.m=t,i.c=r,i.i=function(n){return n},i.d=function(n,a,s){i.o(n,a)||Object.defineProperty(n,a,{configurable:!1,enumerable:!0,get:s})},i.n=function(n){var a=n&&n.__esModule?o(function(){return n.default},"getDefault"):o(function(){return n},"getModuleExports");return i.d(a,"a",a),a},i.o=function(n,a){return Object.prototype.hasOwnProperty.call(n,a)},i.p="",i(i.s=1)})([(function(t,r){t.exports=e}),(function(t,r,i){"use strict";var n=i(0).layoutBase.LayoutConstants,a=i(0).layoutBase.FDLayoutConstants,s=i(0).CoSEConstants,l=i(0).CoSELayout,u=i(0).CoSENode,h=i(0).layoutBase.PointD,d=i(0).layoutBase.DimensionD,f={ready:o(function(){},"ready"),stop:o(function(){},"stop"),quality:"default",nodeDimensionsIncludeLabels:!1,refresh:30,fit:!0,padding:10,randomize:!0,nodeRepulsion:4500,idealEdgeLength:50,edgeElasticity:.45,nestingFactor:.1,gravity:.25,numIter:2500,tile:!0,animate:"end",animationDuration:500,tilingPaddingVertical:10,tilingPaddingHorizontal:10,gravityRangeCompound:1.5,gravityCompound:1,gravityRange:3.8,initialEnergyOnIncremental:.5};function p(v,x){var b={};for(var T in v)b[T]=v[T];for(var T in x)b[T]=x[T];return b}o(p,"extend");function m(v){this.options=p(f,v),g(this.options)}o(m,"_CoSELayout");var g=o(function(x){x.nodeRepulsion!=null&&(s.DEFAULT_REPULSION_STRENGTH=a.DEFAULT_REPULSION_STRENGTH=x.nodeRepulsion),x.idealEdgeLength!=null&&(s.DEFAULT_EDGE_LENGTH=a.DEFAULT_EDGE_LENGTH=x.idealEdgeLength),x.edgeElasticity!=null&&(s.DEFAULT_SPRING_STRENGTH=a.DEFAULT_SPRING_STRENGTH=x.edgeElasticity),x.nestingFactor!=null&&(s.PER_LEVEL_IDEAL_EDGE_LENGTH_FACTOR=a.PER_LEVEL_IDEAL_EDGE_LENGTH_FACTOR=x.nestingFactor),x.gravity!=null&&(s.DEFAULT_GRAVITY_STRENGTH=a.DEFAULT_GRAVITY_STRENGTH=x.gravity),x.numIter!=null&&(s.MAX_ITERATIONS=a.MAX_ITERATIONS=x.numIter),x.gravityRange!=null&&(s.DEFAULT_GRAVITY_RANGE_FACTOR=a.DEFAULT_GRAVITY_RANGE_FACTOR=x.gravityRange),x.gravityCompound!=null&&(s.DEFAULT_COMPOUND_GRAVITY_STRENGTH=a.DEFAULT_COMPOUND_GRAVITY_STRENGTH=x.gravityCompound),x.gravityRangeCompound!=null&&(s.DEFAULT_COMPOUND_GRAVITY_RANGE_FACTOR=a.DEFAULT_COMPOUND_GRAVITY_RANGE_FACTOR=x.gravityRangeCompound),x.initialEnergyOnIncremental!=null&&(s.DEFAULT_COOLING_FACTOR_INCREMENTAL=a.DEFAULT_COOLING_FACTOR_INCREMENTAL=x.initialEnergyOnIncremental),x.quality=="draft"?n.QUALITY=0:x.quality=="proof"?n.QUALITY=2:n.QUALITY=1,s.NODE_DIMENSIONS_INCLUDE_LABELS=a.NODE_DIMENSIONS_INCLUDE_LABELS=n.NODE_DIMENSIONS_INCLUDE_LABELS=x.nodeDimensionsIncludeLabels,s.DEFAULT_INCREMENTAL=a.DEFAULT_INCREMENTAL=n.DEFAULT_INCREMENTAL=!x.randomize,s.ANIMATE=a.ANIMATE=n.ANIMATE=x.animate,s.TILE=x.tile,s.TILING_PADDING_VERTICAL=typeof x.tilingPaddingVertical=="function"?x.tilingPaddingVertical.call():x.tilingPaddingVertical,s.TILING_PADDING_HORIZONTAL=typeof x.tilingPaddingHorizontal=="function"?x.tilingPaddingHorizontal.call():x.tilingPaddingHorizontal},"getUserOptions");m.prototype.run=function(){var v,x,b=this.options,T=this.idToLNode={},w=this.layout=new l,C=this;C.stopped=!1,this.cy=this.options.cy,this.cy.trigger({type:"layoutstart",layout:this});var k=w.newGraphManager();this.gm=k;var E=this.options.eles.nodes(),A=this.options.eles.edges();this.root=k.addRoot(),this.processChildrenList(this.root,this.getTopMostNodes(E),w);for(var N=0;N<A.length;N++){var P=A[N],I=this.idToLNode[P.data("source")],D=this.idToLNode[P.data("target")];if(I!==D&&I.getEdgesBetween(D).length==0){var _=k.add(w.newEdge(),I,D);_.id=P.id()}}var R=o(function(B,O){typeof B=="number"&&(B=O);var $=B.data("id"),G=C.idToLNode[$];return{x:G.getRect().getCenterX(),y:G.getRect().getCenterY()}},"getPositions"),M=o(function L(){for(var B=o(function(){b.fit&&b.cy.fit(b.eles,b.padding),v||(v=!0,C.cy.one("layoutready",b.ready),C.cy.trigger({type:"layoutready",layout:C}))},"afterReposition"),O=C.options.refresh,$,G=0;G<O&&!$;G++)$=C.stopped||C.layout.tick();if($){w.checkLayoutSuccess()&&!w.isSubLayout&&w.doPostLayout(),w.tilingPostLayout&&w.tilingPostLayout(),w.isLayoutFinished=!0,C.options.eles.nodes().positions(R),B(),C.cy.one("layoutstop",C.options.stop),C.cy.trigger({type:"layoutstop",layout:C}),x&&cancelAnimationFrame(x),v=!1;return}var F=C.layout.getPositionsData();b.eles.nodes().positions(function(V,H){if(typeof V=="number"&&(V=H),!V.isParent()){for(var j=V.id(),U=F[j],Q=V;U==null&&(U=F[Q.data("parent")]||F["DummyCompound_"+Q.data("parent")],F[j]=U,Q=Q.parent()[0],Q!=null););return U!=null?{x:U.x,y:U.y}:{x:V.position("x"),y:V.position("y")}}}),B(),x=requestAnimationFrame(L)},"iterateAnimated");return w.addListener("layoutstarted",function(){C.options.animate==="during"&&(x=requestAnimationFrame(M))}),w.runLayout(),this.options.animate!=="during"&&(C.options.eles.nodes().not(":parent").layoutPositions(C,C.options,R),v=!1),this},m.prototype.getTopMostNodes=function(v){for(var x={},b=0;b<v.length;b++)x[v[b].id()]=!0;var T=v.filter(function(w,C){typeof w=="number"&&(w=C);for(var k=w.parent()[0];k!=null;){if(x[k.id()])return!1;k=k.parent()[0]}return!0});return T},m.prototype.processChildrenList=function(v,x,b){for(var T=x.length,w=0;w<T;w++){var C=x[w],k=C.children(),E,A=C.layoutDimensions({nodeDimensionsIncludeLabels:this.options.nodeDimensionsIncludeLabels});if(C.outerWidth()!=null&&C.outerHeight()!=null?E=v.add(new u(b.graphManager,new h(C.position("x")-A.w/2,C.position("y")-A.h/2),new d(parseFloat(A.w),parseFloat(A.h)))):E=v.add(new u(this.graphManager)),E.id=C.data("id"),E.paddingLeft=parseInt(C.css("padding")),E.paddingTop=parseInt(C.css("padding")),E.paddingRight=parseInt(C.css("padding")),E.paddingBottom=parseInt(C.css("padding")),this.options.nodeDimensionsIncludeLabels&&C.isParent()){var N=C.boundingBox({includeLabels:!0,includeNodes:!1}).w,P=C.boundingBox({includeLabels:!0,includeNodes:!1}).h,I=C.css("text-halign");E.labelWidth=N,E.labelHeight=P,E.labelPos=I}if(this.idToLNode[C.data("id")]=E,isNaN(E.rect.x)&&(E.rect.x=0),isNaN(E.rect.y)&&(E.rect.y=0),k!=null&&k.length>0){var D;D=b.getGraphManager().add(b.newGraph(),E),this.processChildrenList(D,k,b)}}},m.prototype.stop=function(){return this.stopped=!0,this};var y=o(function(x){x("layout","cose-bilkent",m)},"register");typeof cytoscape<"u"&&y(cytoscape),t.exports=y})])})});function Got(e,t){e.forEach(r=>{let i={id:r.id,labelText:r.label,height:r.height,width:r.width,padding:r.padding??0};Object.keys(r).forEach(n=>{["id","label","height","width","padding","x","y"].includes(n)||(i[n]=r[n])}),t.add({group:"nodes",data:i,position:{x:r.x??0,y:r.y??0}})})}function Vot(e,t){e.forEach(r=>{let i={id:r.id,source:r.start,target:r.end};Object.keys(r).forEach(n=>{["id","start","end"].includes(n)||(i[n]=r[n])}),t.add({group:"edges",data:i})})}function Bge(e){return new Promise(t=>{let r=Je("body").append("div").attr("id","cy").attr("style","display:none"),i=Ko({container:document.getElementById("cy"),style:[{selector:"edge",style:{"curve-style":"bezier"}}]});r.remove(),Got(e.nodes,i),Vot(e.edges,i),i.nodes().forEach(function(a){a.layoutDimensions=()=>{let s=a.data();return{w:s.width,h:s.height}}});let n={name:"cose-bilkent",quality:"proof",styleEnabled:!1,animate:!1};i.layout(n).run(),i.ready(a=>{Z.info("Cytoscape ready",a),t(i)})})}function Fge(e){return e.nodes().map(t=>{let r=t.data(),i=t.position(),n={id:r.id,x:i.x,y:i.y};return Object.keys(r).forEach(a=>{a!=="id"&&(n[a]=r[a])}),n})}function $ge(e){return e.edges().map(t=>{let r=t.data(),i=t._private.rscratch,n={id:r.id,source:r.source,target:r.target,startX:i.startX,startY:i.startY,midX:i.midX,midY:i.midY,endX:i.endX,endY:i.endY};return Object.keys(r).forEach(a=>{["id","source","target"].includes(a)||(n[a]=r[a])}),n})}var Pge,zge=z(()=>{"use strict";OP();Pge=ys(Oge(),1);Rr();St();Ko.use(Pge.default);o(Got,"addNodes");o(Vot,"addEdges");o(Bge,"createCytoscapeInstance");o(Fge,"extractPositionedNodes");o($ge,"extractPositionedEdges")});async function Gge(e,t){Z.debug("Starting cose-bilkent layout algorithm");try{Wot(e);let r=await Bge(e),i=Fge(r),n=$ge(r);return Z.debug(`Layout completed: ${i.length} nodes, ${n.length} edges`),{nodes:i,edges:n}}catch(r){throw Z.error("Error in cose-bilkent layout algorithm:",r),r}}function Wot(e){if(!e)throw new Error("Layout data is required");if(!e.config)throw new Error("Configuration is required in layout data");if(!e.rootNode)throw new Error("Root node is required");if(!e.nodes||!Array.isArray(e.nodes))throw new Error("No nodes found in layout data");if(!Array.isArray(e.edges))throw new Error("Edges array is required in layout data");return!0}var Vge=z(()=>{"use strict";St();zge();o(Gge,"executeCoseBilkentLayout");o(Wot,"validateLayoutData")});var Wge,qge=z(()=>{"use strict";Vge();Wge=o(async(e,t,{insertCluster:r,insertEdge:i,insertEdgeLabel:n,insertMarkers:a,insertNode:s,log:l,positionEdgeLabel:u},{algorithm:h})=>{let d={},f={},p=t.select("g");a(p,e.markers,e.type,e.diagramId);let m=p.insert("g").attr("class","subgraphs"),g=p.insert("g").attr("class","edgePaths"),y=p.insert("g").attr("class","edgeLabels"),v=p.insert("g").attr("class","nodes");l.debug("Inserting nodes into DOM for dimension calculation"),await Promise.all(e.nodes.map(async T=>{if(T.isGroup){let w={...T};f[T.id]=w,d[T.id]=w,await r(m,T)}else{let w={...T};d[T.id]=w;let C=await s(v,T,{config:e.config,dir:e.direction||"TB"}),k=C.node().getBBox();w.width=k.width,w.height=k.height,w.domId=C,l.debug(`Node ${T.id} dimensions: ${k.width}x${k.height}`)}})),l.debug("Running cose-bilkent layout algorithm");let x={...e,nodes:e.nodes.map(T=>{let w=d[T.id];return{...T,width:w.width,height:w.height}})},b=await Gge(x,e.config);l.debug("Positioning nodes based on layout results"),b.nodes.forEach(T=>{let w=d[T.id];w?.domId&&(w.domId.attr("transform",`translate(${T.x}, ${T.y})`),w.x=T.x,w.y=T.y,l.debug(`Positioned node ${w.id} at center (${T.x}, ${T.y})`))}),b.edges.forEach(T=>{let w=e.edges.find(C=>C.id===T.id);w&&(w.points=[{x:T.startX,y:T.startY},{x:T.midX,y:T.midY},{x:T.endX,y:T.endY}])}),l.debug("Inserting and positioning edges"),await Promise.all(e.edges.map(async T=>{let w=await n(y,T),C=d[T.start??""],k=d[T.end??""];if(C&&k){let E=b.edges.find(A=>A.id===T.id);if(E){l.debug("APA01 positionedEdge",E);let A={...T},N=i(g,A,f,e.type,C,k,e.diagramId);u(A,N)}else{let A={...T,points:[{x:C.x||0,y:C.y||0},{x:k.x||0,y:k.y||0}]},N=i(g,A,f,e.type,C,k,e.diagramId);u(A,N)}}})),l.debug("Cose-bilkent rendering completed")},"render")});var Uge={};xr(Uge,{render:()=>qot});var qot,Hge=z(()=>{"use strict";qge();qot=Wge});var y2,GP,Uot,Zo,Gc,tf=z(()=>{"use strict";Hae();St();y2={},GP=o(e=>{for(let t of e)y2[t.name]=t},"registerLayoutLoaders"),Uot=o(()=>{GP([{name:"dagre",loader:o(async()=>await Promise.resolve().then(()=>(mfe(),pfe)),"loader")},{name:"cose-bilkent",loader:o(async()=>await Promise.resolve().then(()=>(Hge(),Uge)),"loader")}])},"registerDefaultLayoutLoaders");Uot();Zo=o(async(e,t)=>{if(!(e.layoutAlgorithm in y2))throw new Error(`Unknown layout algorithm: ${e.layoutAlgorithm}`);if(e.diagramId)for(let d of e.nodes){let f=d.domId||d.id;d.domId=`${e.diagramId}-${f}`}let r=y2[e.layoutAlgorithm],i=await r.loader(),{theme:n,themeVariables:a}=e.config,{useGradient:s,gradientStart:l,gradientStop:u}=a,h=t.attr("id");if(t.append("defs").append("filter").attr("id",`${h}-drop-shadow`).attr("height","130%").attr("width","130%").append("feDropShadow").attr("dx","4").attr("dy","4").attr("stdDeviation",0).attr("flood-opacity","0.06").attr("flood-color",`${n?.includes("dark")?"#FFFFFF":"#000000"}`),t.append("defs").append("filter").attr("id",`${h}-drop-shadow-small`).attr("height","150%").attr("width","150%").append("feDropShadow").attr("dx","2").attr("dy","2").attr("stdDeviation",0).attr("flood-opacity","0.06").attr("flood-color",`${n?.includes("dark")?"#FFFFFF":"#000000"}`),s){let d=t.append("linearGradient").attr("id",t.attr("id")+"-gradient").attr("gradientUnits","objectBoundingBox").attr("x1","0%").attr("y1","0%").attr("x2","100%").attr("y2","0%");d.append("svg:stop").attr("offset","0%").attr("stop-color",l).attr("stop-opacity",1),d.append("svg:stop").attr("offset","100%").attr("stop-color",u).attr("stop-opacity",1)}return i.render(e,t,Uae,{algorithm:r.algorithm})},"render"),Gc=o((e="",{fallback:t="dagre"}={})=>{if(e in y2)return e;if(t in y2)return Z.warn(`Layout algorithm ${e} is not registered. Using ${t} as fallback.`),t;throw new Error(`Both layout algorithms ${e} and ${t} are not registered.`)},"getRegisteredLayoutAlgorithm")});var $s,Hot,Yot,rf=z(()=>{"use strict";Di();St();$s=o((e,t,r,i)=>{e.attr("class",r);let{width:n,height:a,x:s,y:l}=Hot(e,t);Br(e,a,n,i);let u=Yot(s,l,n,a,t);e.attr("viewBox",u),Z.debug(`viewBox configured: ${u} with padding: ${t}`)},"setupViewPortForSVG"),Hot=o((e,t)=>{let r=e.node()?.getBBox()||{width:0,height:0,x:0,y:0};return{width:r.width+t*2,height:r.height+t*2,x:r.x,y:r.y}},"calculateDimensionsWithPadding"),Yot=o((e,t,r,i,n)=>`${e-n} ${t-n} ${r} ${i}`,"createViewBox")});var jot,Xot,Yge,jge=z(()=>{"use strict";Ut();St();Lp();tf();rf();Xt();jot=o(function(e,t){return t.db.getClasses()},"getClasses"),Xot=o(async function(e,t,r,i){Z.info("REF0:"),Z.info("Drawing state diagram (v2)",t);let{securityLevel:n,flowchart:a,layout:s}=ge();i.db.setDiagramId(t),Z.debug("Before getData: ");let l=i.db.getData();Z.debug("Data: ",l);let u=Fo(t,n),h=i.db.getDirection();l.type=i.type,l.layoutAlgorithm=Gc(s),l.layoutAlgorithm==="dagre"&&s==="elk"&&Z.warn("flowchart-elk was moved to an external package in Mermaid v11. Please refer [release notes](https://github.com/mermaid-js/mermaid/releases/tag/v11.0.0) for more details. This diagram will be rendered using `dagre` layout as a fallback."),l.direction=h,l.nodeSpacing=a?.nodeSpacing||50,l.rankSpacing=a?.rankSpacing||50,l.markers=["point","circle","cross"],l.diagramId=t,Z.debug("REF1:",l),await Zo(l,u);let d=l.config.flowchart?.diagramPadding??8;Zt.insertTitle(u,"flowchartTitleText",a?.titleTopMargin||0,i.db.getDiagramTitle()),$s(u,d,"flowchart",a?.useMaxWidth||!1)},"draw"),Yge={getClasses:jot,draw:Xot}});var VP,WP,Xge=z(()=>{"use strict";VP=(function(){var e=o(function(zt,Mt,qt,Qt){for(qt=qt||{},Qt=zt.length;Qt--;qt[zt[Qt]]=Mt);return qt},"o"),t=[1,4],r=[1,3],i=[1,5],n=[1,8,9,10,11,27,34,36,38,44,60,84,85,86,87,88,89,102,105,106,109,111,114,115,116,121,122,123,124,125],a=[2,2],s=[1,13],l=[1,14],u=[1,15],h=[1,16],d=[1,23],f=[1,25],p=[1,26],m=[1,27],g=[1,50],y=[1,49],v=[1,29],x=[1,30],b=[1,31],T=[1,32],w=[1,33],C=[1,45],k=[1,47],E=[1,43],A=[1,48],N=[1,44],P=[1,51],I=[1,46],D=[1,52],_=[1,53],R=[1,34],M=[1,35],L=[1,36],B=[1,37],O=[1,38],$=[1,58],G=[1,8,9,10,11,27,32,34,36,38,44,60,84,85,86,87,88,89,102,105,106,109,111,114,115,116,121,122,123,124,125],F=[1,62],V=[1,61],H=[1,63],j=[8,9,11,75,77,78],U=[1,79],Q=[1,92],Y=[1,97],ae=[1,96],J=[1,93],te=[1,89],re=[1,95],ee=[1,91],Te=[1,98],ue=[1,94],De=[1,99],Ie=[1,90],Ee=[8,9,10,11,40,75,77,78],we=[8,9,10,11,40,46,75,77,78],Me=[8,9,10,11,29,40,44,46,48,50,52,54,56,58,60,63,65,67,68,70,75,77,78,89,102,105,106,109,111,114,115,116],$e=[8,9,11,44,60,75,77,78,89,102,105,106,109,111,114,115,116],de=[44,60,89,102,105,106,109,111,114,115,116],rt=[1,122],ke=[1,123],Fe=[1,125],He=[1,124],at=[44,60,62,74,89,102,105,106,109,111,114,115,116],qe=[1,134],Ue=[1,148],ye=[1,149],ve=[1,150],ie=[1,151],fe=[1,136],W=[1,138],ce=[1,142],K=[1,143],Re=[1,144],xe=[1,145],Oe=[1,146],be=[1,147],Be=[1,152],Ae=[1,153],Ve=[1,132],Pe=[1,133],Ye=[1,140],le=[1,135],st=[1,139],me=[1,137],ot=[8,9,10,11,27,32,34,36,38,44,60,84,85,86,87,88,89,102,105,106,109,111,114,115,116,121,122,123,124,125],kt=[1,155],Gt=[1,157],Tt=[8,9,11],Et=[8,9,10,11,14,44,60,89,105,106,109,111,114,115,116],yt=[1,177],oe=[1,173],ht=[1,174],gt=[1,178],et=[1,175],pe=[1,176],Qe=[77,116,119],nt=[8,9,10,11,12,14,27,29,32,44,60,75,84,85,86,87,88,89,90,105,109,111,114,115,116],dt=[10,106],Ft=[31,49,51,53,55,57,62,64,66,67,69,71,116,117,118],Rt=[1,248],$t=[1,246],lr=[1,250],pt=[1,244],Se=[1,245],it=[1,247],xt=[1,249],rr=[1,251],_r=[1,269],Ur=[8,9,11,106],Dr=[8,9,10,11,60,84,105,106,109,110,111,112],Xi={trace:o(function(){},"trace"),yy:{},symbols_:{error:2,start:3,graphConfig:4,document:5,line:6,statement:7,SEMI:8,NEWLINE:9,SPACE:10,EOF:11,GRAPH:12,NODIR:13,DIR:14,FirstStmtSeparator:15,ending:16,endToken:17,spaceList:18,spaceListNewline:19,vertexStatement:20,separator:21,styleStatement:22,linkStyleStatement:23,classDefStatement:24,classStatement:25,clickStatement:26,subgraph:27,textNoTags:28,SQS:29,text:30,SQE:31,end:32,direction:33,acc_title:34,acc_title_value:35,acc_descr:36,acc_descr_value:37,acc_descr_multiline_value:38,shapeData:39,SHAPE_DATA:40,link:41,node:42,styledVertex:43,AMP:44,vertex:45,STYLE_SEPARATOR:46,idString:47,DOUBLECIRCLESTART:48,DOUBLECIRCLEEND:49,PS:50,PE:51,"(-":52,"-)":53,STADIUMSTART:54,STADIUMEND:55,SUBROUTINESTART:56,SUBROUTINEEND:57,VERTEX_WITH_PROPS_START:58,"NODE_STRING[field]":59,COLON:60,"NODE_STRING[value]":61,PIPE:62,CYLINDERSTART:63,CYLINDEREND:64,DIAMOND_START:65,DIAMOND_STOP:66,TAGEND:67,TRAPSTART:68,TRAPEND:69,INVTRAPSTART:70,INVTRAPEND:71,linkStatement:72,arrowText:73,TESTSTR:74,START_LINK:75,edgeText:76,LINK:77,LINK_ID:78,edgeTextToken:79,STR:80,MD_STR:81,textToken:82,keywords:83,STYLE:84,LINKSTYLE:85,CLASSDEF:86,CLASS:87,CLICK:88,DOWN:89,UP:90,textNoTagsToken:91,stylesOpt:92,"idString[vertex]":93,"idString[class]":94,CALLBACKNAME:95,CALLBACKARGS:96,HREF:97,LINK_TARGET:98,"STR[link]":99,"STR[tooltip]":100,alphaNum:101,DEFAULT:102,numList:103,INTERPOLATE:104,NUM:105,COMMA:106,style:107,styleComponent:108,NODE_STRING:109,UNIT:110,BRKT:111,PCT:112,idStringToken:113,MINUS:114,MULT:115,UNICODE_TEXT:116,TEXT:117,TAGSTART:118,EDGE_TEXT:119,alphaNumToken:120,direction_tb:121,direction_bt:122,direction_rl:123,direction_lr:124,direction_td:125,$accept:0,$end:1},terminals_:{2:"error",8:"SEMI",9:"NEWLINE",10:"SPACE",11:"EOF",12:"GRAPH",13:"NODIR",14:"DIR",27:"subgraph",29:"SQS",31:"SQE",32:"end",34:"acc_title",35:"acc_title_value",36:"acc_descr",37:"acc_descr_value",38:"acc_descr_multiline_value",40:"SHAPE_DATA",44:"AMP",46:"STYLE_SEPARATOR",48:"DOUBLECIRCLESTART",49:"DOUBLECIRCLEEND",50:"PS",51:"PE",52:"(-",53:"-)",54:"STADIUMSTART",55:"STADIUMEND",56:"SUBROUTINESTART",57:"SUBROUTINEEND",58:"VERTEX_WITH_PROPS_START",59:"NODE_STRING[field]",60:"COLON",61:"NODE_STRING[value]",62:"PIPE",63:"CYLINDERSTART",64:"CYLINDEREND",65:"DIAMOND_START",66:"DIAMOND_STOP",67:"TAGEND",68:"TRAPSTART",69:"TRAPEND",70:"INVTRAPSTART",71:"INVTRAPEND",74:"TESTSTR",75:"START_LINK",77:"LINK",78:"LINK_ID",80:"STR",81:"MD_STR",84:"STYLE",85:"LINKSTYLE",86:"CLASSDEF",87:"CLASS",88:"CLICK",89:"DOWN",90:"UP",93:"idString[vertex]",94:"idString[class]",95:"CALLBACKNAME",96:"CALLBACKARGS",97:"HREF",98:"LINK_TARGET",99:"STR[link]",100:"STR[tooltip]",102:"DEFAULT",104:"INTERPOLATE",105:"NUM",106:"COMMA",109:"NODE_STRING",110:"UNIT",111:"BRKT",112:"PCT",114:"MINUS",115:"MULT",116:"UNICODE_TEXT",117:"TEXT",118:"TAGSTART",119:"EDGE_TEXT",121:"direction_tb",122:"direction_bt",123:"direction_rl",124:"direction_lr",125:"direction_td"},productions_:[0,[3,2],[5,0],[5,2],[6,1],[6,1],[6,1],[6,1],[6,1],[4,2],[4,2],[4,2],[4,3],[16,2],[16,1],[17,1],[17,1],[17,1],[15,1],[15,1],[15,2],[19,2],[19,2],[19,1],[19,1],[18,2],[18,1],[7,2],[7,2],[7,2],[7,2],[7,2],[7,2],[7,9],[7,6],[7,4],[7,1],[7,2],[7,2],[7,1],[21,1],[21,1],[21,1],[39,2],[39,1],[20,4],[20,3],[20,4],[20,2],[20,2],[20,1],[42,1],[42,6],[42,5],[43,1],[43,3],[45,4],[45,4],[45,6],[45,4],[45,4],[45,4],[45,8],[45,4],[45,4],[45,4],[45,6],[45,4],[45,4],[45,4],[45,4],[45,4],[45,1],[41,2],[41,3],[41,3],[41,1],[41,3],[41,4],[76,1],[76,2],[76,1],[76,1],[72,1],[72,2],[73,3],[30,1],[30,2],[30,1],[30,1],[83,1],[83,1],[83,1],[83,1],[83,1],[83,1],[83,1],[83,1],[83,1],[83,1],[83,1],[28,1],[28,2],[28,1],[28,1],[24,5],[25,5],[26,2],[26,4],[26,3],[26,5],[26,3],[26,5],[26,5],[26,7],[26,2],[26,4],[26,2],[26,4],[26,4],[26,6],[22,5],[23,5],[23,5],[23,9],[23,9],[23,7],[23,7],[103,1],[103,3],[92,1],[92,3],[107,1],[107,2],[108,1],[108,1],[108,1],[108,1],[108,1],[108,1],[108,1],[108,1],[113,1],[113,1],[113,1],[113,1],[113,1],[113,1],[113,1],[113,1],[113,1],[113,1],[113,1],[82,1],[82,1],[82,1],[82,1],[91,1],[91,1],[91,1],[91,1],[91,1],[91,1],[91,1],[91,1],[91,1],[91,1],[91,1],[79,1],[79,1],[120,1],[120,1],[120,1],[120,1],[120,1],[120,1],[120,1],[120,1],[120,1],[120,1],[120,1],[47,1],[47,2],[101,1],[101,2],[33,1],[33,1],[33,1],[33,1],[33,1]],performAction:o(function(Mt,qt,Qt,_t,oi,Ce,Zs){var _e=Ce.length-1;switch(oi){case 2:this.$=[];break;case 3:(!Array.isArray(Ce[_e])||Ce[_e].length>0)&&Ce[_e-1].push(Ce[_e]),this.$=Ce[_e-1];break;case 4:case 183:this.$=Ce[_e];break;case 11:_t.setDirection("TB"),this.$="TB";break;case 12:_t.setDirection(Ce[_e-1]),this.$=Ce[_e-1];break;case 27:this.$=Ce[_e-1].nodes;break;case 28:case 29:case 30:case 31:case 32:this.$=[];break;case 33:this.$=_t.addSubGraph(Ce[_e-6],Ce[_e-1],Ce[_e-4]);break;case 34:this.$=_t.addSubGraph(Ce[_e-3],Ce[_e-1],Ce[_e-3]);break;case 35:this.$=_t.addSubGraph(void 0,Ce[_e-1],void 0);break;case 37:this.$=Ce[_e].trim(),_t.setAccTitle(this.$);break;case 38:case 39:this.$=Ce[_e].trim(),_t.setAccDescription(this.$);break;case 43:this.$=Ce[_e-1]+Ce[_e];break;case 44:this.$=Ce[_e];break;case 45:_t.addVertex(Ce[_e-1][Ce[_e-1].length-1],void 0,void 0,void 0,void 0,void 0,void 0,Ce[_e]),_t.addLink(Ce[_e-3].stmt,Ce[_e-1],Ce[_e-2]),this.$={stmt:Ce[_e-1],nodes:Ce[_e-1].concat(Ce[_e-3].nodes)};break;case 46:_t.addLink(Ce[_e-2].stmt,Ce[_e],Ce[_e-1]),this.$={stmt:Ce[_e],nodes:Ce[_e].concat(Ce[_e-2].nodes)};break;case 47:_t.addLink(Ce[_e-3].stmt,Ce[_e-1],Ce[_e-2]),this.$={stmt:Ce[_e-1],nodes:Ce[_e-1].concat(Ce[_e-3].nodes)};break;case 48:this.$={stmt:Ce[_e-1],nodes:Ce[_e-1]};break;case 49:_t.addVertex(Ce[_e-1][Ce[_e-1].length-1],void 0,void 0,void 0,void 0,void 0,void 0,Ce[_e]),this.$={stmt:Ce[_e-1],nodes:Ce[_e-1],shapeData:Ce[_e]};break;case 50:this.$={stmt:Ce[_e],nodes:Ce[_e]};break;case 51:this.$=[Ce[_e]];break;case 52:_t.addVertex(Ce[_e-5][Ce[_e-5].length-1],void 0,void 0,void 0,void 0,void 0,void 0,Ce[_e-4]),this.$=Ce[_e-5].concat(Ce[_e]);break;case 53:this.$=Ce[_e-4].concat(Ce[_e]);break;case 54:this.$=Ce[_e];break;case 55:this.$=Ce[_e-2],_t.setClass(Ce[_e-2],Ce[_e]);break;case 56:this.$=Ce[_e-3],_t.addVertex(Ce[_e-3],Ce[_e-1],"square");break;case 57:this.$=Ce[_e-3],_t.addVertex(Ce[_e-3],Ce[_e-1],"doublecircle");break;case 58:this.$=Ce[_e-5],_t.addVertex(Ce[_e-5],Ce[_e-2],"circle");break;case 59:this.$=Ce[_e-3],_t.addVertex(Ce[_e-3],Ce[_e-1],"ellipse");break;case 60:this.$=Ce[_e-3],_t.addVertex(Ce[_e-3],Ce[_e-1],"stadium");break;case 61:this.$=Ce[_e-3],_t.addVertex(Ce[_e-3],Ce[_e-1],"subroutine");break;case 62:this.$=Ce[_e-7],_t.addVertex(Ce[_e-7],Ce[_e-1],"rect",void 0,void 0,void 0,Object.fromEntries([[Ce[_e-5],Ce[_e-3]]]));break;case 63:this.$=Ce[_e-3],_t.addVertex(Ce[_e-3],Ce[_e-1],"cylinder");break;case 64:this.$=Ce[_e-3],_t.addVertex(Ce[_e-3],Ce[_e-1],"round");break;case 65:this.$=Ce[_e-3],_t.addVertex(Ce[_e-3],Ce[_e-1],"diamond");break;case 66:this.$=Ce[_e-5],_t.addVertex(Ce[_e-5],Ce[_e-2],"hexagon");break;case 67:this.$=Ce[_e-3],_t.addVertex(Ce[_e-3],Ce[_e-1],"odd");break;case 68:this.$=Ce[_e-3],_t.addVertex(Ce[_e-3],Ce[_e-1],"trapezoid");break;case 69:this.$=Ce[_e-3],_t.addVertex(Ce[_e-3],Ce[_e-1],"inv_trapezoid");break;case 70:this.$=Ce[_e-3],_t.addVertex(Ce[_e-3],Ce[_e-1],"lean_right");break;case 71:this.$=Ce[_e-3],_t.addVertex(Ce[_e-3],Ce[_e-1],"lean_left");break;case 72:this.$=Ce[_e],_t.addVertex(Ce[_e]);break;case 73:Ce[_e-1].text=Ce[_e],this.$=Ce[_e-1];break;case 74:case 75:Ce[_e-2].text=Ce[_e-1],this.$=Ce[_e-2];break;case 76:this.$=Ce[_e];break;case 77:var an=_t.destructLink(Ce[_e],Ce[_e-2]);this.$={type:an.type,stroke:an.stroke,length:an.length,text:Ce[_e-1]};break;case 78:var an=_t.destructLink(Ce[_e],Ce[_e-2]);this.$={type:an.type,stroke:an.stroke,length:an.length,text:Ce[_e-1],id:Ce[_e-3]};break;case 79:this.$={text:Ce[_e],type:"text"};break;case 80:this.$={text:Ce[_e-1].text+""+Ce[_e],type:Ce[_e-1].type};break;case 81:this.$={text:Ce[_e],type:"string"};break;case 82:this.$={text:Ce[_e],type:"markdown"};break;case 83:var an=_t.destructLink(Ce[_e]);this.$={type:an.type,stroke:an.stroke,length:an.length};break;case 84:var an=_t.destructLink(Ce[_e]);this.$={type:an.type,stroke:an.stroke,length:an.length,id:Ce[_e-1]};break;case 85:this.$=Ce[_e-1];break;case 86:this.$={text:Ce[_e],type:"text"};break;case 87:this.$={text:Ce[_e-1].text+""+Ce[_e],type:Ce[_e-1].type};break;case 88:this.$={text:Ce[_e],type:"string"};break;case 89:case 104:this.$={text:Ce[_e],type:"markdown"};break;case 101:this.$={text:Ce[_e],type:"text"};break;case 102:this.$={text:Ce[_e-1].text+""+Ce[_e],type:Ce[_e-1].type};break;case 103:this.$={text:Ce[_e],type:"text"};break;case 105:this.$=Ce[_e-4],_t.addClass(Ce[_e-2],Ce[_e]);break;case 106:this.$=Ce[_e-4],_t.setClass(Ce[_e-2],Ce[_e]);break;case 107:case 115:this.$=Ce[_e-1],_t.setClickEvent(Ce[_e-1],Ce[_e]);break;case 108:case 116:this.$=Ce[_e-3],_t.setClickEvent(Ce[_e-3],Ce[_e-2]),_t.setTooltip(Ce[_e-3],Ce[_e]);break;case 109:this.$=Ce[_e-2],_t.setClickEvent(Ce[_e-2],Ce[_e-1],Ce[_e]);break;case 110:this.$=Ce[_e-4],_t.setClickEvent(Ce[_e-4],Ce[_e-3],Ce[_e-2]),_t.setTooltip(Ce[_e-4],Ce[_e]);break;case 111:this.$=Ce[_e-2],_t.setLink(Ce[_e-2],Ce[_e]);break;case 112:this.$=Ce[_e-4],_t.setLink(Ce[_e-4],Ce[_e-2]),_t.setTooltip(Ce[_e-4],Ce[_e]);break;case 113:this.$=Ce[_e-4],_t.setLink(Ce[_e-4],Ce[_e-2],Ce[_e]);break;case 114:this.$=Ce[_e-6],_t.setLink(Ce[_e-6],Ce[_e-4],Ce[_e]),_t.setTooltip(Ce[_e-6],Ce[_e-2]);break;case 117:this.$=Ce[_e-1],_t.setLink(Ce[_e-1],Ce[_e]);break;case 118:this.$=Ce[_e-3],_t.setLink(Ce[_e-3],Ce[_e-2]),_t.setTooltip(Ce[_e-3],Ce[_e]);break;case 119:this.$=Ce[_e-3],_t.setLink(Ce[_e-3],Ce[_e-2],Ce[_e]);break;case 120:this.$=Ce[_e-5],_t.setLink(Ce[_e-5],Ce[_e-4],Ce[_e]),_t.setTooltip(Ce[_e-5],Ce[_e-2]);break;case 121:this.$=Ce[_e-4],_t.addVertex(Ce[_e-2],void 0,void 0,Ce[_e]);break;case 122:this.$=Ce[_e-4],_t.updateLink([Ce[_e-2]],Ce[_e]);break;case 123:this.$=Ce[_e-4],_t.updateLink(Ce[_e-2],Ce[_e]);break;case 124:this.$=Ce[_e-8],_t.updateLinkInterpolate([Ce[_e-6]],Ce[_e-2]),_t.updateLink([Ce[_e-6]],Ce[_e]);break;case 125:this.$=Ce[_e-8],_t.updateLinkInterpolate(Ce[_e-6],Ce[_e-2]),_t.updateLink(Ce[_e-6],Ce[_e]);break;case 126:this.$=Ce[_e-6],_t.updateLinkInterpolate([Ce[_e-4]],Ce[_e]);break;case 127:this.$=Ce[_e-6],_t.updateLinkInterpolate(Ce[_e-4],Ce[_e]);break;case 128:case 130:this.$=[Ce[_e]];break;case 129:case 131:Ce[_e-2].push(Ce[_e]),this.$=Ce[_e-2];break;case 133:this.$=Ce[_e-1]+Ce[_e];break;case 181:this.$=Ce[_e];break;case 182:this.$=Ce[_e-1]+""+Ce[_e];break;case 184:this.$=Ce[_e-1]+""+Ce[_e];break;case 185:this.$={stmt:"dir",value:"TB"};break;case 186:this.$={stmt:"dir",value:"BT"};break;case 187:this.$={stmt:"dir",value:"RL"};break;case 188:this.$={stmt:"dir",value:"LR"};break;case 189:this.$={stmt:"dir",value:"TD"};break}},"anonymous"),table:[{3:1,4:2,9:t,10:r,12:i},{1:[3]},e(n,a,{5:6}),{4:7,9:t,10:r,12:i},{4:8,9:t,10:r,12:i},{13:[1,9],14:[1,10]},{1:[2,1],6:11,7:12,8:s,9:l,10:u,11:h,20:17,22:18,23:19,24:20,25:21,26:22,27:d,33:24,34:f,36:p,38:m,42:28,43:39,44:g,45:40,47:41,60:y,84:v,85:x,86:b,87:T,88:w,89:C,102:k,105:E,106:A,109:N,111:P,113:42,114:I,115:D,116:_,121:R,122:M,123:L,124:B,125:O},e(n,[2,9]),e(n,[2,10]),e(n,[2,11]),{8:[1,55],9:[1,56],10:$,15:54,18:57},e(G,[2,3]),e(G,[2,4]),e(G,[2,5]),e(G,[2,6]),e(G,[2,7]),e(G,[2,8]),{8:F,9:V,11:H,21:59,41:60,72:64,75:[1,65],77:[1,67],78:[1,66]},{8:F,9:V,11:H,21:68},{8:F,9:V,11:H,21:69},{8:F,9:V,11:H,21:70},{8:F,9:V,11:H,21:71},{8:F,9:V,11:H,21:72},{8:F,9:V,10:[1,73],11:H,21:74},e(G,[2,36]),{35:[1,75]},{37:[1,76]},e(G,[2,39]),e(j,[2,50],{18:77,39:78,10:$,40:U}),{10:[1,80]},{10:[1,81]},{10:[1,82]},{10:[1,83]},{14:Q,44:Y,60:ae,80:[1,87],89:J,95:[1,84],97:[1,85],101:86,105:te,106:re,109:ee,111:Te,114:ue,115:De,116:Ie,120:88},e(G,[2,185]),e(G,[2,186]),e(G,[2,187]),e(G,[2,188]),e(G,[2,189]),e(Ee,[2,51]),e(Ee,[2,54],{46:[1,100]}),e(we,[2,72],{113:113,29:[1,101],44:g,48:[1,102],50:[1,103],52:[1,104],54:[1,105],56:[1,106],58:[1,107],60:y,63:[1,108],65:[1,109],67:[1,110],68:[1,111],70:[1,112],89:C,102:k,105:E,106:A,109:N,111:P,114:I,115:D,116:_}),e(Me,[2,181]),e(Me,[2,142]),e(Me,[2,143]),e(Me,[2,144]),e(Me,[2,145]),e(Me,[2,146]),e(Me,[2,147]),e(Me,[2,148]),e(Me,[2,149]),e(Me,[2,150]),e(Me,[2,151]),e(Me,[2,152]),e(n,[2,12]),e(n,[2,18]),e(n,[2,19]),{9:[1,114]},e($e,[2,26],{18:115,10:$}),e(G,[2,27]),{42:116,43:39,44:g,45:40,47:41,60:y,89:C,102:k,105:E,106:A,109:N,111:P,113:42,114:I,115:D,116:_},e(G,[2,40]),e(G,[2,41]),e(G,[2,42]),e(de,[2,76],{73:117,62:[1,119],74:[1,118]}),{76:120,79:121,80:rt,81:ke,116:Fe,119:He},{75:[1,126],77:[1,127]},e(at,[2,83]),e(G,[2,28]),e(G,[2,29]),e(G,[2,30]),e(G,[2,31]),e(G,[2,32]),{10:qe,12:Ue,14:ye,27:ve,28:128,32:ie,44:fe,60:W,75:ce,80:[1,130],81:[1,131],83:141,84:K,85:Re,86:xe,87:Oe,88:be,89:Be,90:Ae,91:129,105:Ve,109:Pe,111:Ye,114:le,115:st,116:me},e(ot,a,{5:154}),e(G,[2,37]),e(G,[2,38]),e(j,[2,48],{44:kt}),e(j,[2,49],{18:156,10:$,40:Gt}),e(Ee,[2,44]),{44:g,47:158,60:y,89:C,102:k,105:E,106:A,109:N,111:P,113:42,114:I,115:D,116:_},{102:[1,159],103:160,105:[1,161]},{44:g,47:162,60:y,89:C,102:k,105:E,106:A,109:N,111:P,113:42,114:I,115:D,116:_},{44:g,47:163,60:y,89:C,102:k,105:E,106:A,109:N,111:P,113:42,114:I,115:D,116:_},e(Tt,[2,107],{10:[1,164],96:[1,165]}),{80:[1,166]},e(Tt,[2,115],{120:168,10:[1,167],14:Q,44:Y,60:ae,89:J,105:te,106:re,109:ee,111:Te,114:ue,115:De,116:Ie}),e(Tt,[2,117],{10:[1,169]}),e(Et,[2,183]),e(Et,[2,170]),e(Et,[2,171]),e(Et,[2,172]),e(Et,[2,173]),e(Et,[2,174]),e(Et,[2,175]),e(Et,[2,176]),e(Et,[2,177]),e(Et,[2,178]),e(Et,[2,179]),e(Et,[2,180]),{44:g,47:170,60:y,89:C,102:k,105:E,106:A,109:N,111:P,113:42,114:I,115:D,116:_},{30:171,67:yt,80:oe,81:ht,82:172,116:gt,117:et,118:pe},{30:179,67:yt,80:oe,81:ht,82:172,116:gt,117:et,118:pe},{30:181,50:[1,180],67:yt,80:oe,81:ht,82:172,116:gt,117:et,118:pe},{30:182,67:yt,80:oe,81:ht,82:172,116:gt,117:et,118:pe},{30:183,67:yt,80:oe,81:ht,82:172,116:gt,117:et,118:pe},{30:184,67:yt,80:oe,81:ht,82:172,116:gt,117:et,118:pe},{109:[1,185]},{30:186,67:yt,80:oe,81:ht,82:172,116:gt,117:et,118:pe},{30:187,65:[1,188],67:yt,80:oe,81:ht,82:172,116:gt,117:et,118:pe},{30:189,67:yt,80:oe,81:ht,82:172,116:gt,117:et,118:pe},{30:190,67:yt,80:oe,81:ht,82:172,116:gt,117:et,118:pe},{30:191,67:yt,80:oe,81:ht,82:172,116:gt,117:et,118:pe},e(Me,[2,182]),e(n,[2,20]),e($e,[2,25]),e(j,[2,46],{39:192,18:193,10:$,40:U}),e(de,[2,73],{10:[1,194]}),{10:[1,195]},{30:196,67:yt,80:oe,81:ht,82:172,116:gt,117:et,118:pe},{77:[1,197],79:198,116:Fe,119:He},e(Qe,[2,79]),e(Qe,[2,81]),e(Qe,[2,82]),e(Qe,[2,168]),e(Qe,[2,169]),{76:199,79:121,80:rt,81:ke,116:Fe,119:He},e(at,[2,84]),{8:F,9:V,10:qe,11:H,12:Ue,14:ye,21:201,27:ve,29:[1,200],32:ie,44:fe,60:W,75:ce,83:141,84:K,85:Re,86:xe,87:Oe,88:be,89:Be,90:Ae,91:202,105:Ve,109:Pe,111:Ye,114:le,115:st,116:me},e(nt,[2,101]),e(nt,[2,103]),e(nt,[2,104]),e(nt,[2,157]),e(nt,[2,158]),e(nt,[2,159]),e(nt,[2,160]),e(nt,[2,161]),e(nt,[2,162]),e(nt,[2,163]),e(nt,[2,164]),e(nt,[2,165]),e(nt,[2,166]),e(nt,[2,167]),e(nt,[2,90]),e(nt,[2,91]),e(nt,[2,92]),e(nt,[2,93]),e(nt,[2,94]),e(nt,[2,95]),e(nt,[2,96]),e(nt,[2,97]),e(nt,[2,98]),e(nt,[2,99]),e(nt,[2,100]),{6:11,7:12,8:s,9:l,10:u,11:h,20:17,22:18,23:19,24:20,25:21,26:22,27:d,32:[1,203],33:24,34:f,36:p,38:m,42:28,43:39,44:g,45:40,47:41,60:y,84:v,85:x,86:b,87:T,88:w,89:C,102:k,105:E,106:A,109:N,111:P,113:42,114:I,115:D,116:_,121:R,122:M,123:L,124:B,125:O},{10:$,18:204},{44:[1,205]},e(Ee,[2,43]),{10:[1,206],44:g,60:y,89:C,102:k,105:E,106:A,109:N,111:P,113:113,114:I,115:D,116:_},{10:[1,207]},{10:[1,208],106:[1,209]},e(dt,[2,128]),{10:[1,210],44:g,60:y,89:C,102:k,105:E,106:A,109:N,111:P,113:113,114:I,115:D,116:_},{10:[1,211],44:g,60:y,89:C,102:k,105:E,106:A,109:N,111:P,113:113,114:I,115:D,116:_},{80:[1,212]},e(Tt,[2,109],{10:[1,213]}),e(Tt,[2,111],{10:[1,214]}),{80:[1,215]},e(Et,[2,184]),{80:[1,216],98:[1,217]},e(Ee,[2,55],{113:113,44:g,60:y,89:C,102:k,105:E,106:A,109:N,111:P,114:I,115:D,116:_}),{31:[1,218],67:yt,82:219,116:gt,117:et,118:pe},e(Ft,[2,86]),e(Ft,[2,88]),e(Ft,[2,89]),e(Ft,[2,153]),e(Ft,[2,154]),e(Ft,[2,155]),e(Ft,[2,156]),{49:[1,220],67:yt,82:219,116:gt,117:et,118:pe},{30:221,67:yt,80:oe,81:ht,82:172,116:gt,117:et,118:pe},{51:[1,222],67:yt,82:219,116:gt,117:et,118:pe},{53:[1,223],67:yt,82:219,116:gt,117:et,118:pe},{55:[1,224],67:yt,82:219,116:gt,117:et,118:pe},{57:[1,225],67:yt,82:219,116:gt,117:et,118:pe},{60:[1,226]},{64:[1,227],67:yt,82:219,116:gt,117:et,118:pe},{66:[1,228],67:yt,82:219,116:gt,117:et,118:pe},{30:229,67:yt,80:oe,81:ht,82:172,116:gt,117:et,118:pe},{31:[1,230],67:yt,82:219,116:gt,117:et,118:pe},{67:yt,69:[1,231],71:[1,232],82:219,116:gt,117:et,118:pe},{67:yt,69:[1,234],71:[1,233],82:219,116:gt,117:et,118:pe},e(j,[2,45],{18:156,10:$,40:Gt}),e(j,[2,47],{44:kt}),e(de,[2,75]),e(de,[2,74]),{62:[1,235],67:yt,82:219,116:gt,117:et,118:pe},e(de,[2,77]),e(Qe,[2,80]),{77:[1,236],79:198,116:Fe,119:He},{30:237,67:yt,80:oe,81:ht,82:172,116:gt,117:et,118:pe},e(ot,a,{5:238}),e(nt,[2,102]),e(G,[2,35]),{43:239,44:g,45:40,47:41,60:y,89:C,102:k,105:E,106:A,109:N,111:P,113:42,114:I,115:D,116:_},{10:$,18:240},{10:Rt,60:$t,84:lr,92:241,105:pt,107:242,108:243,109:Se,110:it,111:xt,112:rr},{10:Rt,60:$t,84:lr,92:252,104:[1,253],105:pt,107:242,108:243,109:Se,110:it,111:xt,112:rr},{10:Rt,60:$t,84:lr,92:254,104:[1,255],105:pt,107:242,108:243,109:Se,110:it,111:xt,112:rr},{105:[1,256]},{10:Rt,60:$t,84:lr,92:257,105:pt,107:242,108:243,109:Se,110:it,111:xt,112:rr},{44:g,47:258,60:y,89:C,102:k,105:E,106:A,109:N,111:P,113:42,114:I,115:D,116:_},e(Tt,[2,108]),{80:[1,259]},{80:[1,260],98:[1,261]},e(Tt,[2,116]),e(Tt,[2,118],{10:[1,262]}),e(Tt,[2,119]),e(we,[2,56]),e(Ft,[2,87]),e(we,[2,57]),{51:[1,263],67:yt,82:219,116:gt,117:et,118:pe},e(we,[2,64]),e(we,[2,59]),e(we,[2,60]),e(we,[2,61]),{109:[1,264]},e(we,[2,63]),e(we,[2,65]),{66:[1,265],67:yt,82:219,116:gt,117:et,118:pe},e(we,[2,67]),e(we,[2,68]),e(we,[2,70]),e(we,[2,69]),e(we,[2,71]),e([10,44,60,89,102,105,106,109,111,114,115,116],[2,85]),e(de,[2,78]),{31:[1,266],67:yt,82:219,116:gt,117:et,118:pe},{6:11,7:12,8:s,9:l,10:u,11:h,20:17,22:18,23:19,24:20,25:21,26:22,27:d,32:[1,267],33:24,34:f,36:p,38:m,42:28,43:39,44:g,45:40,47:41,60:y,84:v,85:x,86:b,87:T,88:w,89:C,102:k,105:E,106:A,109:N,111:P,113:42,114:I,115:D,116:_,121:R,122:M,123:L,124:B,125:O},e(Ee,[2,53]),{43:268,44:g,45:40,47:41,60:y,89:C,102:k,105:E,106:A,109:N,111:P,113:42,114:I,115:D,116:_},e(Tt,[2,121],{106:_r}),e(Ur,[2,130],{108:270,10:Rt,60:$t,84:lr,105:pt,109:Se,110:it,111:xt,112:rr}),e(Dr,[2,132]),e(Dr,[2,134]),e(Dr,[2,135]),e(Dr,[2,136]),e(Dr,[2,137]),e(Dr,[2,138]),e(Dr,[2,139]),e(Dr,[2,140]),e(Dr,[2,141]),e(Tt,[2,122],{106:_r}),{10:[1,271]},e(Tt,[2,123],{106:_r}),{10:[1,272]},e(dt,[2,129]),e(Tt,[2,105],{106:_r}),e(Tt,[2,106],{113:113,44:g,60:y,89:C,102:k,105:E,106:A,109:N,111:P,114:I,115:D,116:_}),e(Tt,[2,110]),e(Tt,[2,112],{10:[1,273]}),e(Tt,[2,113]),{98:[1,274]},{51:[1,275]},{62:[1,276]},{66:[1,277]},{8:F,9:V,11:H,21:278},e(G,[2,34]),e(Ee,[2,52]),{10:Rt,60:$t,84:lr,105:pt,107:279,108:243,109:Se,110:it,111:xt,112:rr},e(Dr,[2,133]),{14:Q,44:Y,60:ae,89:J,101:280,105:te,106:re,109:ee,111:Te,114:ue,115:De,116:Ie,120:88},{14:Q,44:Y,60:ae,89:J,101:281,105:te,106:re,109:ee,111:Te,114:ue,115:De,116:Ie,120:88},{98:[1,282]},e(Tt,[2,120]),e(we,[2,58]),{30:283,67:yt,80:oe,81:ht,82:172,116:gt,117:et,118:pe},e(we,[2,66]),e(ot,a,{5:284}),e(Ur,[2,131],{108:270,10:Rt,60:$t,84:lr,105:pt,109:Se,110:it,111:xt,112:rr}),e(Tt,[2,126],{120:168,10:[1,285],14:Q,44:Y,60:ae,89:J,105:te,106:re,109:ee,111:Te,114:ue,115:De,116:Ie}),e(Tt,[2,127],{120:168,10:[1,286],14:Q,44:Y,60:ae,89:J,105:te,106:re,109:ee,111:Te,114:ue,115:De,116:Ie}),e(Tt,[2,114]),{31:[1,287],67:yt,82:219,116:gt,117:et,118:pe},{6:11,7:12,8:s,9:l,10:u,11:h,20:17,22:18,23:19,24:20,25:21,26:22,27:d,32:[1,288],33:24,34:f,36:p,38:m,42:28,43:39,44:g,45:40,47:41,60:y,84:v,85:x,86:b,87:T,88:w,89:C,102:k,105:E,106:A,109:N,111:P,113:42,114:I,115:D,116:_,121:R,122:M,123:L,124:B,125:O},{10:Rt,60:$t,84:lr,92:289,105:pt,107:242,108:243,109:Se,110:it,111:xt,112:rr},{10:Rt,60:$t,84:lr,92:290,105:pt,107:242,108:243,109:Se,110:it,111:xt,112:rr},e(we,[2,62]),e(G,[2,33]),e(Tt,[2,124],{106:_r}),e(Tt,[2,125],{106:_r})],defaultActions:{},parseError:o(function(Mt,qt){if(qt.recoverable)this.trace(Mt);else{var Qt=new Error(Mt);throw Qt.hash=qt,Qt}},"parseError"),parse:o(function(Mt){var qt=this,Qt=[0],_t=[],oi=[null],Ce=[],Zs=this.table,_e="",an=0,H_=0,xC=0,rNe=2,SU=1,iNe=Ce.slice.call(arguments,1),Kn=Object.create(this.lexer),Of={yy:{}};for(var Y_ in this.yy)Object.prototype.hasOwnProperty.call(this.yy,Y_)&&(Of.yy[Y_]=this.yy[Y_]);Kn.setInput(Mt,Of.yy),Of.yy.lexer=Kn,Of.yy.parser=this,typeof Kn.yylloc>"u"&&(Kn.yylloc={});var j_=Kn.yylloc;Ce.push(j_);var nNe=Kn.options&&Kn.options.ranges;typeof Of.yy.parseError=="function"?this.parseError=Of.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function o6t(Qs){Qt.length=Qt.length-2*Qs,oi.length=oi.length-Qs,Ce.length=Ce.length-Qs}o(o6t,"popStack");function aNe(){var Qs;return Qs=_t.pop()||Kn.lex()||SU,typeof Qs!="number"&&(Qs instanceof Array&&(_t=Qs,Qs=_t.pop()),Qs=qt.symbols_[Qs]||Qs),Qs}o(aNe,"lex");for(var Va,X_,Pf,wo,l6t,K_,Am={},bC,hu,EU,TC;;){if(Pf=Qt[Qt.length-1],this.defaultActions[Pf]?wo=this.defaultActions[Pf]:((Va===null||typeof Va>"u")&&(Va=aNe()),wo=Zs[Pf]&&Zs[Pf][Va]),typeof wo>"u"||!wo.length||!wo[0]){var Z_="";TC=[];for(bC in Zs[Pf])this.terminals_[bC]&&bC>rNe&&TC.push("'"+this.terminals_[bC]+"'");Kn.showPosition?Z_="Parse error on line "+(an+1)+`:
-`+Kn.showPosition()+`
-Expecting `+TC.join(", ")+", got '"+(this.terminals_[Va]||Va)+"'":Z_="Parse error on line "+(an+1)+": Unexpected "+(Va==SU?"end of input":"'"+(this.terminals_[Va]||Va)+"'"),this.parseError(Z_,{text:Kn.match,token:this.terminals_[Va]||Va,line:Kn.yylineno,loc:j_,expected:TC})}if(wo[0]instanceof Array&&wo.length>1)throw new Error("Parse Error: multiple actions possible at state: "+Pf+", token: "+Va);switch(wo[0]){case 1:Qt.push(Va),oi.push(Kn.yytext),Ce.push(Kn.yylloc),Qt.push(wo[1]),Va=null,X_?(Va=X_,X_=null):(H_=Kn.yyleng,_e=Kn.yytext,an=Kn.yylineno,j_=Kn.yylloc,xC>0&&xC--);break;case 2:if(hu=this.productions_[wo[1]][1],Am.$=oi[oi.length-hu],Am._$={first_line:Ce[Ce.length-(hu||1)].first_line,last_line:Ce[Ce.length-1].last_line,first_column:Ce[Ce.length-(hu||1)].first_column,last_column:Ce[Ce.length-1].last_column},nNe&&(Am._$.range=[Ce[Ce.length-(hu||1)].range[0],Ce[Ce.length-1].range[1]]),K_=this.performAction.apply(Am,[_e,H_,an,Of.yy,wo[1],oi,Ce].concat(iNe)),typeof K_<"u")return K_;hu&&(Qt=Qt.slice(0,-1*hu*2),oi=oi.slice(0,-1*hu),Ce=Ce.slice(0,-1*hu)),Qt.push(this.productions_[wo[1]][0]),oi.push(Am.$),Ce.push(Am._$),EU=Zs[Qt[Qt.length-2]][Qt[Qt.length-1]],Qt.push(EU);break;case 3:return!0}}return!0},"parse")},In=(function(){var zt={EOF:1,parseError:o(function(qt,Qt){if(this.yy.parser)this.yy.parser.parseError(qt,Qt);else throw new Error(qt)},"parseError"),setInput:o(function(Mt,qt){return this.yy=qt||this.yy||{},this._input=Mt,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},"setInput"),input:o(function(){var Mt=this._input[0];this.yytext+=Mt,this.yyleng++,this.offset++,this.match+=Mt,this.matched+=Mt;var qt=Mt.match(/(?:\r\n?|\n).*/g);return qt?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),Mt},"input"),unput:o(function(Mt){var qt=Mt.length,Qt=Mt.split(/(?:\r\n?|\n)/g);this._input=Mt+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-qt),this.offset-=qt;var _t=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),Qt.length-1&&(this.yylineno-=Qt.length-1);var oi=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:Qt?(Qt.length===_t.length?this.yylloc.first_column:0)+_t[_t.length-Qt.length].length-Qt[0].length:this.yylloc.first_column-qt},this.options.ranges&&(this.yylloc.range=[oi[0],oi[0]+this.yyleng-qt]),this.yyleng=this.yytext.length,this},"unput"),more:o(function(){return this._more=!0,this},"more"),reject:o(function(){if(this.options.backtrack_lexer)this._backtrack=!0;else return this.parseError("Lexical error on line "+(this.yylineno+1)+`. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).
-`+this.showPosition(),{text:"",token:null,line:this.yylineno});return this},"reject"),less:o(function(Mt){this.unput(this.match.slice(Mt))},"less"),pastInput:o(function(){var Mt=this.matched.substr(0,this.matched.length-this.match.length);return(Mt.length>20?"...":"")+Mt.substr(-20).replace(/\n/g,"")},"pastInput"),upcomingInput:o(function(){var Mt=this.match;return Mt.length<20&&(Mt+=this._input.substr(0,20-Mt.length)),(Mt.substr(0,20)+(Mt.length>20?"...":"")).replace(/\n/g,"")},"upcomingInput"),showPosition:o(function(){var Mt=this.pastInput(),qt=new Array(Mt.length+1).join("-");return Mt+this.upcomingInput()+`
-`+qt+"^"},"showPosition"),test_match:o(function(Mt,qt){var Qt,_t,oi;if(this.options.backtrack_lexer&&(oi={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(oi.yylloc.range=this.yylloc.range.slice(0))),_t=Mt[0].match(/(?:\r\n?|\n).*/g),_t&&(this.yylineno+=_t.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:_t?_t[_t.length-1].length-_t[_t.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+Mt[0].length},this.yytext+=Mt[0],this.match+=Mt[0],this.matches=Mt,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(Mt[0].length),this.matched+=Mt[0],Qt=this.performAction.call(this,this.yy,this,qt,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),Qt)return Qt;if(this._backtrack){for(var Ce in oi)this[Ce]=oi[Ce];return!1}return!1},"test_match"),next:o(function(){if(this.done)return this.EOF;this._input||(this.done=!0);var Mt,qt,Qt,_t;this._more||(this.yytext="",this.match="");for(var oi=this._currentRules(),Ce=0;Ce<oi.length;Ce++)if(Qt=this._input.match(this.rules[oi[Ce]]),Qt&&(!qt||Qt[0].length>qt[0].length)){if(qt=Qt,_t=Ce,this.options.backtrack_lexer){if(Mt=this.test_match(Qt,oi[Ce]),Mt!==!1)return Mt;if(this._backtrack){qt=!1;continue}else return!1}else if(!this.options.flex)break}return qt?(Mt=this.test_match(qt,oi[_t]),Mt!==!1?Mt:!1):this._input===""?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+`. Unrecognized text.
-`+this.showPosition(),{text:"",token:null,line:this.yylineno})},"next"),lex:o(function(){var qt=this.next();return qt||this.lex()},"lex"),begin:o(function(qt){this.conditionStack.push(qt)},"begin"),popState:o(function(){var qt=this.conditionStack.length-1;return qt>0?this.conditionStack.pop():this.conditionStack[0]},"popState"),_currentRules:o(function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},"_currentRules"),topState:o(function(qt){return qt=this.conditionStack.length-1-Math.abs(qt||0),qt>=0?this.conditionStack[qt]:"INITIAL"},"topState"),pushState:o(function(qt){this.begin(qt)},"pushState"),stateStackSize:o(function(){return this.conditionStack.length},"stateStackSize"),options:{},performAction:o(function(qt,Qt,_t,oi){var Ce=oi;switch(_t){case 0:return this.begin("acc_title"),34;break;case 1:return this.popState(),"acc_title_value";break;case 2:return this.begin("acc_descr"),36;break;case 3:return this.popState(),"acc_descr_value";break;case 4:this.begin("acc_descr_multiline");break;case 5:this.popState();break;case 6:return"acc_descr_multiline_value";case 7:return this.pushState("shapeData"),Qt.yytext="",40;break;case 8:return this.pushState("shapeDataStr"),40;break;case 9:return this.popState(),40;break;case 10:let Zs=/\n\s*/g;return Qt.yytext=Qt.yytext.replace(Zs,"<br/>"),40;break;case 11:return 40;case 12:this.popState();break;case 13:this.begin("callbackname");break;case 14:this.popState();break;case 15:this.popState(),this.begin("callbackargs");break;case 16:return 95;case 17:this.popState();break;case 18:return 96;case 19:return"MD_STR";case 20:this.popState();break;case 21:this.begin("md_string");break;case 22:return"STR";case 23:this.popState();break;case 24:this.pushState("string");break;case 25:return 84;case 26:return 102;case 27:return 85;case 28:return 104;case 29:return 86;case 30:return 87;case 31:return 97;case 32:this.begin("click");break;case 33:this.popState();break;case 34:return 88;case 35:return qt.lex.firstGraph()&&this.begin("dir"),12;break;case 36:return qt.lex.firstGraph()&&this.begin("dir"),12;break;case 37:return qt.lex.firstGraph()&&this.begin("dir"),12;break;case 38:return 27;case 39:return 32;case 40:return 98;case 41:return 98;case 42:return 98;case 43:return 98;case 44:return this.popState(),13;break;case 45:return this.popState(),14;break;case 46:return this.popState(),14;break;case 47:return this.popState(),14;break;case 48:return this.popState(),14;break;case 49:return this.popState(),14;break;case 50:return this.popState(),14;break;case 51:return this.popState(),14;break;case 52:return this.popState(),14;break;case 53:return this.popState(),14;break;case 54:return this.popState(),14;break;case 55:return 121;case 56:return 122;case 57:return 123;case 58:return 124;case 59:return 125;case 60:return 78;case 61:return 105;case 62:return 111;case 63:return 46;case 64:return 60;case 65:return 44;case 66:return 8;case 67:return 106;case 68:return 115;case 69:return this.popState(),77;break;case 70:return this.pushState("edgeText"),75;break;case 71:return 119;case 72:return this.popState(),77;break;case 73:return this.pushState("thickEdgeText"),75;break;case 74:return 119;case 75:return this.popState(),77;break;case 76:return this.pushState("dottedEdgeText"),75;break;case 77:return 119;case 78:return 77;case 79:return this.popState(),53;break;case 80:return"TEXT";case 81:return this.pushState("ellipseText"),52;break;case 82:return this.popState(),55;break;case 83:return this.pushState("text"),54;break;case 84:return this.popState(),57;break;case 85:return this.pushState("text"),56;break;case 86:return 58;case 87:return this.pushState("text"),67;break;case 88:return this.popState(),64;break;case 89:return this.pushState("text"),63;break;case 90:return this.popState(),49;break;case 91:return this.pushState("text"),48;break;case 92:return this.popState(),69;break;case 93:return this.popState(),71;break;case 94:return 117;case 95:return this.pushState("trapText"),68;break;case 96:return this.pushState("trapText"),70;break;case 97:return 118;case 98:return 67;case 99:return 90;case 100:return"SEP";case 101:return 89;case 102:return 115;case 103:return 111;case 104:return 44;case 105:return 109;case 106:return 114;case 107:return 116;case 108:return this.popState(),62;break;case 109:return this.pushState("text"),62;break;case 110:return this.popState(),51;break;case 111:return this.pushState("text"),50;break;case 112:return this.popState(),31;break;case 113:return this.pushState("text"),29;break;case 114:return this.popState(),66;break;case 115:return this.pushState("text"),65;break;case 116:return"TEXT";case 117:return"QUOTE";case 118:return 9;case 119:return 10;case 120:return 11}},"anonymous"),rules:[/^(?:accTitle\s*:\s*)/,/^(?:(?!\n||)*[^\n]*)/,/^(?:accDescr\s*:\s*)/,/^(?:(?!\n||)*[^\n]*)/,/^(?:accDescr\s*\{\s*)/,/^(?:[\}])/,/^(?:[^\}]*)/,/^(?:@\{)/,/^(?:["])/,/^(?:["])/,/^(?:[^\"]+)/,/^(?:[^}^"]+)/,/^(?:\})/,/^(?:call[\s]+)/,/^(?:\([\s]*\))/,/^(?:\()/,/^(?:[^(]*)/,/^(?:\))/,/^(?:[^)]*)/,/^(?:[^`"]+)/,/^(?:[`]["])/,/^(?:["][`])/,/^(?:[^"]+)/,/^(?:["])/,/^(?:["])/,/^(?:style\b)/,/^(?:default\b)/,/^(?:linkStyle\b)/,/^(?:interpolate\b)/,/^(?:classDef\b)/,/^(?:class\b)/,/^(?:href[\s])/,/^(?:click[\s]+)/,/^(?:[\s\n])/,/^(?:[^\s\n]*)/,/^(?:flowchart-elk\b)/,/^(?:graph\b)/,/^(?:flowchart\b)/,/^(?:subgraph\b)/,/^(?:end\b\s*)/,/^(?:_self\b)/,/^(?:_blank\b)/,/^(?:_parent\b)/,/^(?:_top\b)/,/^(?:(\r?\n)*\s*\n)/,/^(?:\s*LR\b)/,/^(?:\s*RL\b)/,/^(?:\s*TB\b)/,/^(?:\s*BT\b)/,/^(?:\s*TD\b)/,/^(?:\s*BR\b)/,/^(?:\s*<)/,/^(?:\s*>)/,/^(?:\s*\^)/,/^(?:\s*v\b)/,/^(?:.*direction\s+TB[^\n]*)/,/^(?:.*direction\s+BT[^\n]*)/,/^(?:.*direction\s+RL[^\n]*)/,/^(?:.*direction\s+LR[^\n]*)/,/^(?:.*direction\s+TD[^\n]*)/,/^(?:[^\s\"]+@(?=[^\{\"]))/,/^(?:[0-9]+)/,/^(?:#)/,/^(?::::)/,/^(?::)/,/^(?:&)/,/^(?:;)/,/^(?:,)/,/^(?:\*)/,/^(?:\s*[xo<]?--+[-xo>]\s*)/,/^(?:\s*[xo<]?--\s*)/,/^(?:[^-]|-(?!-)+)/,/^(?:\s*[xo<]?==+[=xo>]\s*)/,/^(?:\s*[xo<]?==\s*)/,/^(?:[^=]|=(?!))/,/^(?:\s*[xo<]?-?\.+-[xo>]?\s*)/,/^(?:\s*[xo<]?-\.\s*)/,/^(?:[^\.]|\.(?!))/,/^(?:\s*~~[\~]+\s*)/,/^(?:[-/\)][\)])/,/^(?:[^\(\)\[\]\{\}]|!\)+)/,/^(?:\(-)/,/^(?:\]\))/,/^(?:\(\[)/,/^(?:\]\])/,/^(?:\[\[)/,/^(?:\[\|)/,/^(?:>)/,/^(?:\)\])/,/^(?:\[\()/,/^(?:\)\)\))/,/^(?:\(\(\()/,/^(?:[\\(?=\])][\]])/,/^(?:\/(?=\])\])/,/^(?:\/(?!\])|\\(?!\])|[^\\\[\]\(\)\{\}\/]+)/,/^(?:\[\/)/,/^(?:\[\\)/,/^(?:<)/,/^(?:>)/,/^(?:\^)/,/^(?:\\\|)/,/^(?:v\b)/,/^(?:\*)/,/^(?:#)/,/^(?:&)/,/^(?:([A-Za-z0-9!"\#$%&'*+\.`?\\_\/]|-(?=[^\>\-\.])|(?!))+)/,/^(?:-)/,/^(?:[\u00AA\u00B5\u00BA\u00C0-\u00D6\u00D8-\u00F6]|[\u00F8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377]|[\u037A-\u037D\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5]|[\u03F7-\u0481\u048A-\u0527\u0531-\u0556\u0559\u0561-\u0587\u05D0-\u05EA]|[\u05F0-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE]|[\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA]|[\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u08A0]|[\u08A2-\u08AC\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0977]|[\u0979-\u097F\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2]|[\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u0A05-\u0A0A]|[\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39]|[\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8]|[\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0B05-\u0B0C]|[\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C]|[\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99]|[\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0]|[\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C33\u0C35-\u0C39\u0C3D]|[\u0C58\u0C59\u0C60\u0C61\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3]|[\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D05-\u0D0C\u0D0E-\u0D10]|[\u0D12-\u0D3A\u0D3D\u0D4E\u0D60\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1]|[\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81]|[\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3]|[\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6]|[\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A]|[\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081]|[\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D]|[\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0]|[\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310]|[\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F4\u1401-\u166C]|[\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u1700-\u170C\u170E-\u1711]|[\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7]|[\u17DC\u1820-\u1877\u1880-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191C]|[\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19C1-\u19C7\u1A00-\u1A16]|[\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4B\u1B83-\u1BA0\u1BAE\u1BAF]|[\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1CE9-\u1CEC]|[\u1CEE-\u1CF1\u1CF5\u1CF6\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D]|[\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D]|[\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3]|[\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F]|[\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128]|[\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2183\u2184]|[\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3]|[\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6]|[\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE]|[\u2DD0-\u2DD6\u2DD8-\u2DDE\u2E2F\u3005\u3006\u3031-\u3035\u303B\u303C]|[\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312D]|[\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FCC]|[\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B]|[\uA640-\uA66E\uA67F-\uA697\uA6A0-\uA6E5\uA717-\uA71F\uA722-\uA788]|[\uA78B-\uA78E\uA790-\uA793\uA7A0-\uA7AA\uA7F8-\uA801\uA803-\uA805]|[\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB]|[\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uAA00-\uAA28]|[\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA80-\uAAAF\uAAB1\uAAB5]|[\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4]|[\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E]|[\uABC0-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D]|[\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36]|[\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D]|[\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC]|[\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF]|[\uFFD2-\uFFD7\uFFDA-\uFFDC])/,/^(?:\|)/,/^(?:\|)/,/^(?:\))/,/^(?:\()/,/^(?:\])/,/^(?:\[)/,/^(?:(\}))/,/^(?:\{)/,/^(?:[^\[\]\(\)\{\}\|\"]+)/,/^(?:")/,/^(?:(\r?\n)+)/,/^(?:\s)/,/^(?:$)/],conditions:{shapeDataEndBracket:{rules:[21,24,78,81,83,85,89,91,95,96,109,111,113,115],inclusive:!1},shapeDataStr:{rules:[9,10,21,24,78,81,83,85,89,91,95,96,109,111,113,115],inclusive:!1},shapeData:{rules:[8,11,12,21,24,78,81,83,85,89,91,95,96,109,111,113,115],inclusive:!1},callbackargs:{rules:[17,18,21,24,78,81,83,85,89,91,95,96,109,111,113,115],inclusive:!1},callbackname:{rules:[14,15,16,21,24,78,81,83,85,89,91,95,96,109,111,113,115],inclusive:!1},href:{rules:[21,24,78,81,83,85,89,91,95,96,109,111,113,115],inclusive:!1},click:{rules:[21,24,33,34,78,81,83,85,89,91,95,96,109,111,113,115],inclusive:!1},dottedEdgeText:{rules:[21,24,75,77,78,81,83,85,89,91,95,96,109,111,113,115],inclusive:!1},thickEdgeText:{rules:[21,24,72,74,78,81,83,85,89,91,95,96,109,111,113,115],inclusive:!1},edgeText:{rules:[21,24,69,71,78,81,83,85,89,91,95,96,109,111,113,115],inclusive:!1},trapText:{rules:[21,24,78,81,83,85,89,91,92,93,94,95,96,109,111,113,115],inclusive:!1},ellipseText:{rules:[21,24,78,79,80,81,83,85,89,91,95,96,109,111,113,115],inclusive:!1},text:{rules:[21,24,78,81,82,83,84,85,88,89,90,91,95,96,108,109,110,111,112,113,114,115,116],inclusive:!1},vertex:{rules:[21,24,78,81,83,85,89,91,95,96,109,111,113,115],inclusive:!1},dir:{rules:[21,24,44,45,46,47,48,49,50,51,52,53,54,78,81,83,85,89,91,95,96,109,111,113,115],inclusive:!1},acc_descr_multiline:{rules:[5,6,21,24,78,81,83,85,89,91,95,96,109,111,113,115],inclusive:!1},acc_descr:{rules:[3,21,24,78,81,83,85,89,91,95,96,109,111,113,115],inclusive:!1},acc_title:{rules:[1,21,24,78,81,83,85,89,91,95,96,109,111,113,115],inclusive:!1},md_string:{rules:[19,20,21,24,78,81,83,85,89,91,95,96,109,111,113,115],inclusive:!1},string:{rules:[21,22,23,24,78,81,83,85,89,91,95,96,109,111,113,115],inclusive:!1},INITIAL:{rules:[0,2,4,7,13,21,24,25,26,27,28,29,30,31,32,35,36,37,38,39,40,41,42,43,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,72,73,75,76,78,81,83,85,86,87,89,91,95,96,97,98,99,100,101,102,103,104,105,106,107,109,111,113,115,117,118,119,120],inclusive:!0}}};return zt})();Xi.lexer=In;function pi(){this.yy={}}return o(pi,"Parser"),pi.prototype=Xi,Xi.Parser=pi,new pi})();VP.parser=VP;WP=VP});var Kge,Zge,Qge=z(()=>{"use strict";Xge();Kge=Object.assign({},WP);Kge.parse=e=>{let t=e.replace(/}\s*\n/g,`}
-`);return WP.parse(t)};Zge=Kge});var Vc,k1=z(()=>{"use strict";Vc=o(()=>`
+    `),l=ngt(n,i,s);l.aPosition=n.getAttribLocation(l,"aPosition"),l.aIndex=n.getAttribLocation(l,"aIndex"),l.aVertType=n.getAttribLocation(l,"aVertType"),l.aTransform=n.getAttribLocation(l,"aTransform"),l.aAtlasId=n.getAttribLocation(l,"aAtlasId"),l.aTex=n.getAttribLocation(l,"aTex"),l.aPointAPointB=n.getAttribLocation(l,"aPointAPointB"),l.aPointCPointD=n.getAttribLocation(l,"aPointCPointD"),l.aLineWidth=n.getAttribLocation(l,"aLineWidth"),l.aColor=n.getAttribLocation(l,"aColor"),l.aCornerRadius=n.getAttribLocation(l,"aCornerRadius"),l.aBorderColor=n.getAttribLocation(l,"aBorderColor"),l.uPanZoomMatrix=n.getUniformLocation(l,"uPanZoomMatrix"),l.uAtlasSize=n.getUniformLocation(l,"uAtlasSize"),l.uBGColor=n.getUniformLocation(l,"uBGColor"),l.uZoom=n.getUniformLocation(l,"uZoom"),l.uTextures=[];for(var u=0;u<this.batchManager.getMaxAtlasesPerBatch();u++)l.uTextures.push(n.getUniformLocation(l,"uTexture".concat(u)));return l},"_createShaderProgram")},{key:"_createVAO",value:o(function(){var r=[0,0,1,0,1,1,0,0,1,1,0,1];this.vertexCount=r.length/2;var n=this.maxInstances,i=this.gl,a=this.program,s=i.createVertexArray();return i.bindVertexArray(s),dgt(i,"vec2",a.aPosition,r),this.transformBuffer=fgt(i,n,a.aTransform),this.indexBuffer=xu(i,n,"vec4",a.aIndex),this.vertTypeBuffer=xu(i,n,"int",a.aVertType),this.atlasIdBuffer=xu(i,n,"int",a.aAtlasId),this.texBuffer=xu(i,n,"vec4",a.aTex),this.pointAPointBBuffer=xu(i,n,"vec4",a.aPointAPointB),this.pointCPointDBuffer=xu(i,n,"vec4",a.aPointCPointD),this.lineWidthBuffer=xu(i,n,"vec2",a.aLineWidth),this.colorBuffer=xu(i,n,"vec4",a.aColor),this.cornerRadiusBuffer=xu(i,n,"vec4",a.aCornerRadius),this.borderColorBuffer=xu(i,n,"vec4",a.aBorderColor),i.bindVertexArray(null),s},"_createVAO")},{key:"buffers",get:o(function(){var r=this;return this._buffers||(this._buffers=Object.keys(this).filter(function(n){return Of(n,"Buffer")}).map(function(n){return r[n]})),this._buffers},"get")},{key:"startFrame",value:o(function(r){var n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:NT.SCREEN;this.panZoomMatrix=r,this.renderTarget=n,this.batchDebugInfo=[],this.wrappedCount=0,this.simpleCount=0,this.startBatch()},"startFrame")},{key:"startBatch",value:o(function(){this.instanceCount=0,this.batchManager.startBatch()},"startBatch")},{key:"endFrame",value:o(function(){this.endBatch()},"endFrame")},{key:"_isVisible",value:o(function(r,n){return r.visible()?n&&n.isVisible?n.isVisible(r):!0:!1},"_isVisible")},{key:"drawTexture",value:o(function(r,n,i){var a=this.atlasManager,s=this.batchManager,l=a.getRenderTypeOpts(i);if(this._isVisible(r,l)&&!(r.isEdge()&&!this._isValidEdge(r))){if(this.renderTarget.picking&&l.getTexPickingMode){var u=l.getTexPickingMode(r);if(u===lA.IGNORE)return;if(u==lA.USE_BB){this.drawPickingRectangle(r,n,i);return}}var h=a.getAtlasInfo(r,i),d=yo(h),f;try{for(d.s();!(f=d.n()).done;){var p=f.value,m=p.atlas,g=p.tex1,y=p.tex2;s.canAddToCurrentBatch(m)||this.endBatch();for(var v=s.getAtlasIndexForBatch(m),x=0,b=[[g,!0],[y,!1]];x<b.length;x++){var T=Ki(b[x],2),k=T[0],C=T[1];if(k.w!=0){var w=this.instanceCount;this.vertTypeBuffer.getView(w)[0]=H$;var S=this.indexBuffer.getView(w);L1(n,S);var R=this.atlasIdBuffer.getView(w);R[0]=v;var L=this.texBuffer.getView(w);L[0]=k.x,L[1]=k.y,L[2]=k.w,L[3]=k.h;var N=this.transformBuffer.getMatrixView(w);this.setTransformMatrix(r,N,l,p,C),this.instanceCount++,C||this.wrappedCount++,this.instanceCount>=this.maxInstances&&this.endBatch()}}}}catch(I){d.e(I)}finally{d.f()}}},"drawTexture")},{key:"setTransformMatrix",value:o(function(r,n,i,a){var s=arguments.length>4&&arguments[4]!==void 0?arguments[4]:!0,l=0;if(i.shapeProps&&i.shapeProps.padding&&(l=r.pstyle(i.shapeProps.padding).pfValue),a){var u=a.bb,h=a.tex1,d=a.tex2,f=h.w/(h.w+d.w);s||(f=1-f);var p=this._getAdjustedBB(u,l,s,f);this._applyTransformMatrix(n,p,i,r)}else{var m=i.getBoundingBox(r),g=this._getAdjustedBB(m,l,!0,1);this._applyTransformMatrix(n,g,i,r)}},"setTransformMatrix")},{key:"_applyTransformMatrix",value:o(function(r,n,i,a){var s,l;Qxe(r);var u=i.getRotation?i.getRotation(a):0;if(u!==0){var h=i.getRotationPoint(a),d=h.x,f=h.y;X5(r,r,[d,f]),Jxe(r,r,u);var p=i.getRotationOffset(a);s=p.x+(n.xOffset||0),l=p.y+(n.yOffset||0)}else s=n.x1,l=n.y1;X5(r,r,[s,l]),dF(r,r,[n.w,n.h])},"_applyTransformMatrix")},{key:"_getAdjustedBB",value:o(function(r,n,i,a){var s=r.x1,l=r.y1,u=r.w,h=r.h,d=r.yOffset;n&&(s-=n,l-=n,u+=2*n,h+=2*n);var f=0,p=u*a;return i&&a<1?u=p:!i&&a<1&&(f=u-p,s+=f,u=p),{x1:s,y1:l,w:u,h,xOffset:f,yOffset:d}},"_getAdjustedBB")},{key:"drawPickingRectangle",value:o(function(r,n,i){var a=this.atlasManager.getRenderTypeOpts(i),s=this.instanceCount;this.vertTypeBuffer.getView(s)[0]=D1;var l=this.indexBuffer.getView(s);L1(n,l);var u=this.colorBuffer.getView(s);Xm([0,0,0],1,u);var h=this.transformBuffer.getMatrixView(s);this.setTransformMatrix(r,h,a),this.simpleCount++,this.instanceCount++,this.instanceCount>=this.maxInstances&&this.endBatch()},"drawPickingRectangle")},{key:"drawNode",value:o(function(r,n,i){var a=this.simpleShapeOptions.get(i);if(this._isVisible(r,a)){var s=a.shapeProps,l=this._getVertTypeForShape(r,s.shape);if(l===void 0||a.isSimple&&!a.isSimple(r,this.renderTarget)){this.drawTexture(r,n,i);return}var u=this.instanceCount;if(this.vertTypeBuffer.getView(u)[0]=l,l===$5||l===AT){var h=a.getBoundingBox(r),d=this._getCornerRadius(r,s.radius,h),f=this.cornerRadiusBuffer.getView(u);f[0]=d,f[1]=d,f[2]=d,f[3]=d,l===AT&&(f[0]=0,f[2]=0)}var p=this.indexBuffer.getView(u);L1(n,p);var m=this.renderTarget.picking?1:i==="node-body"?r.effectiveOpacity():1,g=this.renderTarget.picking?1:r.pstyle(s.opacity).value*m,y=r.pstyle(s.color).value,v=this.colorBuffer.getView(u);Xm(y,g,v);var x=this.lineWidthBuffer.getView(u);if(x[0]=0,x[1]=0,s.border){var b=r.pstyle("border-width").value;if(b>0){var T=r.pstyle("border-color").value,k=m*r.pstyle("border-opacity").value,C=this.borderColorBuffer.getView(u);Xm(T,k,C);var w=r.pstyle("border-position").value;if(w==="inside")x[0]=0,x[1]=-b;else if(w==="outside")x[0]=b,x[1]=0;else{var S=b/2;x[0]=S,x[1]=-S}}}var R=this.transformBuffer.getMatrixView(u);this.setTransformMatrix(r,R,a),this.simpleCount++,this.instanceCount++,this.instanceCount>=this.maxInstances&&this.endBatch()}},"drawNode")},{key:"_getVertTypeForShape",value:o(function(r,n){var i=r.pstyle(n).value;switch(i){case"rectangle":return D1;case"ellipse":return RT;case"roundrectangle":case"round-rectangle":return $5;case"bottom-round-rectangle":return AT;default:return}},"_getVertTypeForShape")},{key:"_getCornerRadius",value:o(function(r,n,i){var a=i.w,s=i.h;if(r.pstyle(n).value==="auto")return Wf(a,s);var l=r.pstyle(n).pfValue,u=a/2,h=s/2;return Math.min(l,h,u)},"_getCornerRadius")},{key:"drawEdgeArrow",value:o(function(r,n,i){if(r.visible()){var a=r._private.rscratch,s,l,u;if(i==="source"?(s=a.arrowStartX,l=a.arrowStartY,u=a.srcArrowAngle):(s=a.arrowEndX,l=a.arrowEndY,u=a.tgtArrowAngle),!(isNaN(s)||s==null||isNaN(l)||l==null||isNaN(u)||u==null)){var h=r.pstyle(i+"-arrow-shape").value;if(h!=="none"){var d=r.pstyle(i+"-arrow-color").value,f=r.pstyle("opacity").value,p=r.pstyle("line-opacity").value,m=f*p,g=r.pstyle("width").pfValue,y=r.pstyle("arrow-scale").value,v=this.r.getArrowWidth(g,y),x=this.instanceCount,b=this.transformBuffer.getMatrixView(x);Qxe(b),X5(b,b,[s,l]),dF(b,b,[v,v]),Jxe(b,b,u),this.vertTypeBuffer.getView(x)[0]=U$;var T=this.indexBuffer.getView(x);L1(n,T);var k=this.colorBuffer.getView(x);Xm(d,m,k),this.instanceCount++,this.instanceCount>=this.maxInstances&&this.endBatch()}}}},"drawEdgeArrow")},{key:"drawEdgeLine",value:o(function(r,n){if(r.visible()){var i=this._getEdgePoints(r);if(i){var a=r.pstyle("opacity").value,s=r.pstyle("line-opacity").value,l=r.pstyle("width").pfValue,u=r.pstyle("line-color").value,h=a*s;if(i.length/2+this.instanceCount>this.maxInstances&&this.endBatch(),i.length==4){var d=this.instanceCount;this.vertTypeBuffer.getView(d)[0]=ebe;var f=this.indexBuffer.getView(d);L1(n,f);var p=this.colorBuffer.getView(d);Xm(u,h,p);var m=this.lineWidthBuffer.getView(d);m[0]=l;var g=this.pointAPointBBuffer.getView(d);g[0]=i[0],g[1]=i[1],g[2]=i[2],g[3]=i[3],this.instanceCount++,this.instanceCount>=this.maxInstances&&this.endBatch()}else for(var y=0;y<i.length-2;y+=2){var v=this.instanceCount;this.vertTypeBuffer.getView(v)[0]=tbe;var x=this.indexBuffer.getView(v);L1(n,x);var b=this.colorBuffer.getView(v);Xm(u,h,b);var T=this.lineWidthBuffer.getView(v);T[0]=l;var k=i[y-2],C=i[y-1],w=i[y],S=i[y+1],R=i[y+2],L=i[y+3],N=i[y+4],I=i[y+5];y==0&&(k=2*w-R+.001,C=2*S-L+.001),y==i.length-4&&(N=2*R-w+.001,I=2*L-S+.001);var _=this.pointAPointBBuffer.getView(v);_[0]=k,_[1]=C,_[2]=w,_[3]=S;var A=this.pointCPointDBuffer.getView(v);A[0]=R,A[1]=L,A[2]=N,A[3]=I,this.instanceCount++,this.instanceCount>=this.maxInstances&&this.endBatch()}}}},"drawEdgeLine")},{key:"_isValidEdge",value:o(function(r){var n=r._private.rscratch;return!(n.badLine||n.allpts==null||isNaN(n.allpts[0]))},"_isValidEdge")},{key:"_getEdgePoints",value:o(function(r){var n=r._private.rscratch;if(this._isValidEdge(r)){var i=n.allpts;if(i.length==4)return i;var a=this._getNumSegments(r);return this._getCurveSegmentPoints(i,a)}},"_getEdgePoints")},{key:"_getNumSegments",value:o(function(r){var n=15;return Math.min(Math.max(n,5),this.maxInstances)},"_getNumSegments")},{key:"_getCurveSegmentPoints",value:o(function(r,n){if(r.length==4)return r;for(var i=Array((n+1)*2),a=0;a<=n;a++)if(a==0)i[0]=r[0],i[1]=r[1];else if(a==n)i[a*2]=r[r.length-2],i[a*2+1]=r[r.length-1];else{var s=a/n;this._setCurvePoint(r,s,i,a*2)}return i},"_getCurveSegmentPoints")},{key:"_setCurvePoint",value:o(function(r,n,i,a){if(r.length<=2)i[a]=r[0],i[a+1]=r[1];else{for(var s=Array(r.length-2),l=0;l<s.length;l+=2){var u=(1-n)*r[l]+n*r[l+2],h=(1-n)*r[l+1]+n*r[l+3];s[l]=u,s[l+1]=h}return this._setCurvePoint(s,n,i,a)}},"_setCurvePoint")},{key:"endBatch",value:o(function(){var r=this.gl,n=this.vao,i=this.vertexCount,a=this.instanceCount;if(a!==0){var s=this.renderTarget.picking?this.pickingProgram:this.program;r.useProgram(s),r.bindVertexArray(n);var l=yo(this.buffers),u;try{for(l.s();!(u=l.n()).done;){var h=u.value;h.bufferSubData(a)}}catch(g){l.e(g)}finally{l.f()}for(var d=this.batchManager.getAtlases(),f=0;f<d.length;f++)d[f].bufferIfNeeded(r);for(var p=0;p<d.length;p++)r.activeTexture(r.TEXTURE0+p),r.bindTexture(r.TEXTURE_2D,d[p].texture),r.uniform1i(s.uTextures[p],p);r.uniform1f(s.uZoom,agt(this.r)),r.uniformMatrix3fv(s.uPanZoomMatrix,!1,this.panZoomMatrix),r.uniform1i(s.uAtlasSize,this.batchManager.getAtlasSize());var m=Xm(this.bgColor,1);r.uniform4fv(s.uBGColor,m),r.drawArraysInstanced(r.TRIANGLES,0,i,a),r.bindVertexArray(null),r.bindTexture(r.TEXTURE_2D,null),this.debug&&this.batchDebugInfo.push({count:a,atlasCount:d.length}),this.startBatch()}},"endBatch")},{key:"getDebugInfo",value:o(function(){var r=this.atlasManager.getDebugInfo(),n=r.reduce(function(s,l){return s+l.atlasCount},0),i=this.batchDebugInfo,a=i.reduce(function(s,l){return s+l.count},0);return{atlasInfo:r,totalAtlases:n,wrappedCount:this.wrappedCount,simpleCount:this.simpleCount,batchCount:i.length,batchInfo:i,totalInstances:a}},"getDebugInfo")}])})(),F2e={};F2e.initWebgl=function(e,t){var r=this,n=r.data.contexts[r.WEBGL];e.bgColor=Agt(r),e.webglTexSize=Math.min(e.webglTexSize,n.getParameter(n.MAX_TEXTURE_SIZE)),e.webglTexRows=Math.min(e.webglTexRows,54),e.webglTexRowsNodes=Math.min(e.webglTexRowsNodes,54),e.webglBatchSize=Math.min(e.webglBatchSize,16384),e.webglTexPerBatch=Math.min(e.webglTexPerBatch,n.getParameter(n.MAX_TEXTURE_IMAGE_UNITS)),r.webglDebug=e.webglDebug,r.webglDebugShowAtlases=e.webglDebugShowAtlases,r.pickingFrameBuffer=pgt(n),r.pickingFrameBuffer.needsDraw=!0,r.drawing=new Egt(r,n,e);var i=o(function(f){return function(p){return r.getTextAngle(p,f)}},"getLabelRotation"),a=o(function(f){return function(p){var m=p.pstyle(f);return m&&m.value}},"isLabelVisible"),s=o(function(f){return function(p){return p.pstyle("".concat(f,"-opacity")).value>0}},"isLayerVisible"),l=o(function(f){var p=f.pstyle("text-events").strValue==="yes";return p?lA.USE_BB:lA.IGNORE},"getTexPickingMode"),u=o(function(f){var p=f.position(),m=p.x,g=p.y,y=f.outerWidth(),v=f.outerHeight();return{w:y,h:v,x1:m-y/2,y1:g-v/2}},"getBBForSimpleShape");r.drawing.addAtlasCollection("node",{texRows:e.webglTexRowsNodes}),r.drawing.addAtlasCollection("label",{texRows:e.webglTexRows}),r.drawing.addTextureAtlasRenderType("node-body",{collection:"node",getKey:t.getStyleKey,getBoundingBox:t.getElementBox,drawElement:t.drawElement}),r.drawing.addSimpleShapeRenderType("node-body",{getBoundingBox:u,isSimple:ogt,shapeProps:{shape:"shape",color:"background-color",opacity:"background-opacity",radius:"corner-radius",border:!0}}),r.drawing.addSimpleShapeRenderType("node-overlay",{getBoundingBox:u,isVisible:s("overlay"),shapeProps:{shape:"overlay-shape",color:"overlay-color",opacity:"overlay-opacity",padding:"overlay-padding",radius:"overlay-corner-radius"}}),r.drawing.addSimpleShapeRenderType("node-underlay",{getBoundingBox:u,isVisible:s("underlay"),shapeProps:{shape:"underlay-shape",color:"underlay-color",opacity:"underlay-opacity",padding:"underlay-padding",radius:"underlay-corner-radius"}}),r.drawing.addTextureAtlasRenderType("label",{collection:"label",getTexPickingMode:l,getKey:Y$(t.getLabelKey,null),getBoundingBox:j$(t.getLabelBox,null),drawClipped:!0,drawElement:t.drawLabel,getRotation:i(null),getRotationPoint:t.getLabelRotationPoint,getRotationOffset:t.getLabelRotationOffset,isVisible:a("label")}),r.drawing.addTextureAtlasRenderType("edge-source-label",{collection:"label",getTexPickingMode:l,getKey:Y$(t.getSourceLabelKey,"source"),getBoundingBox:j$(t.getSourceLabelBox,"source"),drawClipped:!0,drawElement:t.drawSourceLabel,getRotation:i("source"),getRotationPoint:t.getSourceLabelRotationPoint,getRotationOffset:t.getSourceLabelRotationOffset,isVisible:a("source-label")}),r.drawing.addTextureAtlasRenderType("edge-target-label",{collection:"label",getTexPickingMode:l,getKey:Y$(t.getTargetLabelKey,"target"),getBoundingBox:j$(t.getTargetLabelBox,"target"),drawClipped:!0,drawElement:t.drawTargetLabel,getRotation:i("target"),getRotationPoint:t.getTargetLabelRotationPoint,getRotationOffset:t.getTargetLabelRotationOffset,isVisible:a("target-label")});var h=KT(function(){console.log("garbage collect flag set"),r.data.gc=!0},1e4);r.onUpdateEleCalcs(function(d,f){var p=!1;f&&f.length>0&&(p|=r.drawing.invalidate(f)),p&&h()}),Rgt(r)};o(Agt,"getBGColor");o(z2e,"getLabelLines");Y$=o(function(t,r){return function(n){var i=t(n),a=z2e(n,r);return a.length>1?a.map(function(s,l){return"".concat(i,"_").concat(l)}):i}},"getStyleKeysForLabel"),j$=o(function(t,r){return function(n,i){var a=t(n);if(typeof i=="string"){var s=i.indexOf("_");if(s>0){var l=Number(i.substring(s+1)),u=z2e(n,r),h=a.h/u.length,d=h*l,f=a.y1+d;return{x1:a.x1,w:a.w,y1:f,h,yOffset:d}}}return a}},"getBoundingBoxForLabel");o(Rgt,"overrideCanvasRendererFunctions");o(_gt,"clearWebgl");o(Lgt,"clearCanvas");o(Dgt,"createPanZoomMatrix");o(G2e,"setContextTransform");o(Igt,"drawSelectionRectangle");o(Mgt,"drawAxes");o(Ngt,"drawAtlases");o(Pgt,"getPickingIndexes");o(Ogt,"findNearestElementsWebgl");o(X$,"drawEle");o(V2e,"renderWebgl");Zf={};Zf.drawPolygonPath=function(e,t,r,n,i,a){var s=n/2,l=i/2;e.beginPath&&e.beginPath(),e.moveTo(t+s*a[0],r+l*a[1]);for(var u=1;u<a.length/2;u++)e.lineTo(t+s*a[u*2],r+l*a[u*2+1]);e.closePath()};Zf.drawRoundPolygonPath=function(e,t,r,n,i,a,s){s.forEach(function(l){return C2e(e,l)}),e.closePath()};Zf.drawRoundRectanglePath=function(e,t,r,n,i,a){var s=n/2,l=i/2,u=a==="auto"?Wf(n,i):Math.min(a,l,s);e.beginPath&&e.beginPath(),e.moveTo(t,r-l),e.arcTo(t+s,r-l,t+s,r,u),e.arcTo(t+s,r+l,t,r+l,u),e.arcTo(t-s,r+l,t-s,r,u),e.arcTo(t-s,r-l,t,r-l,u),e.lineTo(t,r-l),e.closePath()};Zf.drawBottomRoundRectanglePath=function(e,t,r,n,i,a){var s=n/2,l=i/2,u=a==="auto"?Wf(n,i):a;e.beginPath&&e.beginPath(),e.moveTo(t,r-l),e.lineTo(t+s,r-l),e.lineTo(t+s,r),e.arcTo(t+s,r+l,t,r+l,u),e.arcTo(t-s,r+l,t-s,r,u),e.lineTo(t-s,r-l),e.lineTo(t,r-l),e.closePath()};Zf.drawCutRectanglePath=function(e,t,r,n,i,a,s){var l=n/2,u=i/2,h=s==="auto"?EF():s;e.beginPath&&e.beginPath(),e.moveTo(t-l+h,r-u),e.lineTo(t+l-h,r-u),e.lineTo(t+l,r-u+h),e.lineTo(t+l,r+u-h),e.lineTo(t+l-h,r+u),e.lineTo(t-l+h,r+u),e.lineTo(t-l,r+u-h),e.lineTo(t-l,r-u+h),e.closePath()};Zf.drawBarrelPath=function(e,t,r,n,i){var a=n/2,s=i/2,l=t-a,u=t+a,h=r-s,d=r+s,f=Q$(n,i),p=f.widthOffset,m=f.heightOffset,g=f.ctrlPtOffsetPct*p;e.beginPath&&e.beginPath(),e.moveTo(l,h+m),e.lineTo(l,d-m),e.quadraticCurveTo(l+g,d,l+p,d),e.lineTo(u-p,d),e.quadraticCurveTo(u-g,d,u,d-m),e.lineTo(u,h+m),e.quadraticCurveTo(u-g,h,u-p,h),e.lineTo(l+p,h),e.quadraticCurveTo(l+g,h,l,h+m),e.closePath()};rbe=Math.sin(0),nbe=Math.cos(0),fF={},pF={},W2e=Math.PI/40;for(Km=0*Math.PI;Km<2*Math.PI;Km+=W2e)fF[Km]=Math.sin(Km),pF[Km]=Math.cos(Km);Zf.drawEllipsePath=function(e,t,r,n,i){if(e.beginPath&&e.beginPath(),e.ellipse)e.ellipse(t,r,n/2,i/2,0,0,2*Math.PI);else for(var a,s,l=n/2,u=i/2,h=0*Math.PI;h<2*Math.PI;h+=W2e)a=t-l*fF[h]*rbe+l*pF[h]*nbe,s=r+u*pF[h]*rbe+u*fF[h]*nbe,h===0?e.moveTo(a,s):e.lineTo(a,s);e.closePath()};rC={};rC.createBuffer=function(e,t){var r=document.createElement("canvas");return r.width=e,r.height=t,[r,r.getContext("2d")]};rC.bufferCanvasImage=function(e){var t=this.cy,r=t.mutableElements(),n=r.boundingBox(),i=this.findContainerClientCoords(),a=e.full?Math.ceil(n.w):i[2],s=e.full?Math.ceil(n.h):i[3],l=Gt(e.maxWidth)||Gt(e.maxHeight),u=this.getPixelRatio(),h=1;if(e.scale!==void 0)a*=e.scale,s*=e.scale,h=e.scale;else if(l){var d=1/0,f=1/0;Gt(e.maxWidth)&&(d=h*e.maxWidth/a),Gt(e.maxHeight)&&(f=h*e.maxHeight/s),h=Math.min(d,f),a*=h,s*=h}l||(a*=u,s*=u,h*=u);var p=document.createElement("canvas");p.width=a,p.height=s,p.style.width=a+"px",p.style.height=s+"px";var m=p.getContext("2d");if(a>0&&s>0){m.clearRect(0,0,a,s),m.globalCompositeOperation="source-over";var g=this.getCachedZSortedEles();if(e.full)m.translate(-n.x1*h,-n.y1*h),m.scale(h,h),this.drawElements(m,g),m.scale(1/h,1/h),m.translate(n.x1*h,n.y1*h);else{var y=t.pan(),v={x:y.x*h,y:y.y*h};h*=t.zoom(),m.translate(v.x,v.y),m.scale(h,h),this.drawElements(m,g),m.scale(1/h,1/h),m.translate(-v.x,-v.y)}e.bg&&(m.globalCompositeOperation="destination-over",m.fillStyle=e.bg,m.rect(0,0,a,s),m.fill())}return p};o(Bgt,"b64ToBlob");o(ibe,"b64UriToB64");o(q2e,"output");rC.png=function(e){return q2e(e,this.bufferCanvasImage(e),"image/png")};rC.jpg=function(e){return q2e(e,this.bufferCanvasImage(e),"image/jpeg")};H2e={};H2e.nodeShapeImpl=function(e,t,r,n,i,a,s,l){switch(e){case"ellipse":return this.drawEllipsePath(t,r,n,i,a);case"polygon":return this.drawPolygonPath(t,r,n,i,a,s);case"round-polygon":return this.drawRoundPolygonPath(t,r,n,i,a,s,l);case"roundrectangle":case"round-rectangle":return this.drawRoundRectanglePath(t,r,n,i,a,l);case"cutrectangle":case"cut-rectangle":return this.drawCutRectanglePath(t,r,n,i,a,s,l);case"bottomroundrectangle":case"bottom-round-rectangle":return this.drawBottomRoundRectanglePath(t,r,n,i,a,l);case"barrel":return this.drawBarrelPath(t,r,n,i,a)}};$gt=U2e,Kr=U2e.prototype;Kr.CANVAS_LAYERS=3;Kr.SELECT_BOX=0;Kr.DRAG=1;Kr.NODE=2;Kr.WEBGL=3;Kr.CANVAS_TYPES=["2d","2d","2d","webgl2"];Kr.BUFFER_COUNT=3;Kr.TEXTURE_BUFFER=0;Kr.MOTIONBLUR_BUFFER_NODE=1;Kr.MOTIONBLUR_BUFFER_DRAG=2;o(U2e,"CanvasRenderer");Kr.redrawHint=function(e,t){var r=this;switch(e){case"eles":r.data.canvasNeedsRedraw[Kr.NODE]=t;break;case"drag":r.data.canvasNeedsRedraw[Kr.DRAG]=t;break;case"select":r.data.canvasNeedsRedraw[Kr.SELECT_BOX]=t;break;case"gc":r.data.gc=!0;break}};Fgt=typeof Path2D<"u";Kr.path2dEnabled=function(e){if(e===void 0)return this.pathsEnabled;this.pathsEnabled=!!e};Kr.usePaths=function(){return Fgt&&this.pathsEnabled};Kr.setImgSmoothing=function(e,t){e.imageSmoothingEnabled!=null?e.imageSmoothingEnabled=t:(e.webkitImageSmoothingEnabled=t,e.mozImageSmoothingEnabled=t,e.msImageSmoothingEnabled=t)};Kr.getImgSmoothing=function(e){return e.imageSmoothingEnabled!=null?e.imageSmoothingEnabled:e.webkitImageSmoothingEnabled||e.mozImageSmoothingEnabled||e.msImageSmoothingEnabled};Kr.makeOffscreenCanvas=function(e,t){var r;if((typeof OffscreenCanvas>"u"?"undefined":ca(OffscreenCanvas))!=="undefined")r=new OffscreenCanvas(e,t);else{var n=this.cy.window(),i=n.document;r=i.createElement("canvas"),r.width=e,r.height=t}return r};[N2e,ku,$h,FF,lg,Kf,Ps,F2e,Zf,rC,H2e].forEach(function(e){br(Kr,e)});zgt=[{name:"null",impl:x2e},{name:"base",impl:L2e},{name:"canvas",impl:$gt}],Ggt=[{type:"layout",extensions:umt},{type:"renderer",extensions:zgt}],Y2e={},j2e={};o(X2e,"setExtension");o(K2e,"getExtension");o(Vgt,"setModule");o(Wgt,"getModule");mF=o(function(){if(arguments.length===2)return K2e.apply(null,arguments);if(arguments.length===3)return X2e.apply(null,arguments);if(arguments.length===4)return Wgt.apply(null,arguments);if(arguments.length===5)return Vgt.apply(null,arguments);pi("Invalid extension access syntax")},"extension");WT.prototype.extension=mF;Ggt.forEach(function(e){e.extensions.forEach(function(t){X2e(e.type,t.name,t.impl)})});cA=o(function(){if(!(this instanceof cA))return new cA;this.length=0},"Stylesheet"),sg=cA.prototype;sg.instanceString=function(){return"stylesheet"};sg.selector=function(e){var t=this.length++;return this[t]={selector:e,properties:[]},this};sg.css=function(e,t){var r=this.length-1;if(fr(e))this[r].properties.push({name:e,value:t});else if(cn(e))for(var n=e,i=Object.keys(n),a=0;a<i.length;a++){var s=i[a],l=n[s];if(l!=null){var u=Ra.properties[s]||Ra.properties[uA(s)];if(u!=null){var h=u.name,d=l;this[r].properties.push({name:h,value:d})}}}return this};sg.style=sg.css;sg.generateStyle=function(e){var t=new Ra(e);return this.appendToStyle(t)};sg.appendToStyle=function(e){for(var t=0;t<this.length;t++){var r=this[t],n=r.selector,i=r.properties;e.selector(n);for(var a=0;a<i.length;a++){var s=i[a];e.css(s.name,s.value)}}return e};qgt="3.33.3",El=o(function(t){if(t===void 0&&(t={}),cn(t))return new WT(t);if(fr(t))return mF.apply(mF,arguments)},"cytoscape");El.use=function(e){var t=Array.prototype.slice.call(arguments,1);return t.unshift(El),e.apply(null,t),this};El.warnings=function(e){return Tbe(e)};El.version=qgt;El.stylesheet=El.Stylesheet=cA});var WF=Io((nC,VF)=>{"use strict";o((function(t,r){typeof nC=="object"&&typeof VF=="object"?VF.exports=r():typeof define=="function"&&define.amd?define([],r):typeof nC=="object"?nC.layoutBase=r():t.layoutBase=r()}),"webpackUniversalModuleDefinition")(nC,function(){return(function(e){var t={};function r(n){if(t[n])return t[n].exports;var i=t[n]={i:n,l:!1,exports:{}};return e[n].call(i.exports,i,i.exports,r),i.l=!0,i.exports}return o(r,"__webpack_require__"),r.m=e,r.c=t,r.i=function(n){return n},r.d=function(n,i,a){r.o(n,i)||Object.defineProperty(n,i,{configurable:!1,enumerable:!0,get:a})},r.n=function(n){var i=n&&n.__esModule?o(function(){return n.default},"getDefault"):o(function(){return n},"getModuleExports");return r.d(i,"a",i),i},r.o=function(n,i){return Object.prototype.hasOwnProperty.call(n,i)},r.p="",r(r.s=26)})([(function(e,t,r){"use strict";function n(){}o(n,"LayoutConstants"),n.QUALITY=1,n.DEFAULT_CREATE_BENDS_AS_NEEDED=!1,n.DEFAULT_INCREMENTAL=!1,n.DEFAULT_ANIMATION_ON_LAYOUT=!0,n.DEFAULT_ANIMATION_DURING_LAYOUT=!1,n.DEFAULT_ANIMATION_PERIOD=50,n.DEFAULT_UNIFORM_LEAF_NODE_SIZES=!1,n.DEFAULT_GRAPH_MARGIN=15,n.NODE_DIMENSIONS_INCLUDE_LABELS=!1,n.SIMPLE_NODE_SIZE=40,n.SIMPLE_NODE_HALF_SIZE=n.SIMPLE_NODE_SIZE/2,n.EMPTY_COMPOUND_NODE_SIZE=40,n.MIN_EDGE_LENGTH=1,n.WORLD_BOUNDARY=1e6,n.INITIAL_WORLD_BOUNDARY=n.WORLD_BOUNDARY/1e3,n.WORLD_CENTER_X=1200,n.WORLD_CENTER_Y=900,e.exports=n}),(function(e,t,r){"use strict";var n=r(2),i=r(8),a=r(9);function s(u,h,d){n.call(this,d),this.isOverlapingSourceAndTarget=!1,this.vGraphObject=d,this.bendpoints=[],this.source=u,this.target=h}o(s,"LEdge"),s.prototype=Object.create(n.prototype);for(var l in n)s[l]=n[l];s.prototype.getSource=function(){return this.source},s.prototype.getTarget=function(){return this.target},s.prototype.isInterGraph=function(){return this.isInterGraph},s.prototype.getLength=function(){return this.length},s.prototype.isOverlapingSourceAndTarget=function(){return this.isOverlapingSourceAndTarget},s.prototype.getBendpoints=function(){return this.bendpoints},s.prototype.getLca=function(){return this.lca},s.prototype.getSourceInLca=function(){return this.sourceInLca},s.prototype.getTargetInLca=function(){return this.targetInLca},s.prototype.getOtherEnd=function(u){if(this.source===u)return this.target;if(this.target===u)return this.source;throw"Node is not incident with this edge"},s.prototype.getOtherEndInGraph=function(u,h){for(var d=this.getOtherEnd(u),f=h.getGraphManager().getRoot();;){if(d.getOwner()==h)return d;if(d.getOwner()==f)break;d=d.getOwner().getParent()}return null},s.prototype.updateLength=function(){var u=new Array(4);this.isOverlapingSourceAndTarget=i.getIntersection(this.target.getRect(),this.source.getRect(),u),this.isOverlapingSourceAndTarget||(this.lengthX=u[0]-u[2],this.lengthY=u[1]-u[3],Math.abs(this.lengthX)<1&&(this.lengthX=a.sign(this.lengthX)),Math.abs(this.lengthY)<1&&(this.lengthY=a.sign(this.lengthY)),this.length=Math.sqrt(this.lengthX*this.lengthX+this.lengthY*this.lengthY))},s.prototype.updateLengthSimple=function(){this.lengthX=this.target.getCenterX()-this.source.getCenterX(),this.lengthY=this.target.getCenterY()-this.source.getCenterY(),Math.abs(this.lengthX)<1&&(this.lengthX=a.sign(this.lengthX)),Math.abs(this.lengthY)<1&&(this.lengthY=a.sign(this.lengthY)),this.length=Math.sqrt(this.lengthX*this.lengthX+this.lengthY*this.lengthY)},e.exports=s}),(function(e,t,r){"use strict";function n(i){this.vGraphObject=i}o(n,"LGraphObject"),e.exports=n}),(function(e,t,r){"use strict";var n=r(2),i=r(10),a=r(13),s=r(0),l=r(16),u=r(4);function h(f,p,m,g){m==null&&g==null&&(g=p),n.call(this,g),f.graphManager!=null&&(f=f.graphManager),this.estimatedSize=i.MIN_VALUE,this.inclusionTreeDepth=i.MAX_VALUE,this.vGraphObject=g,this.edges=[],this.graphManager=f,m!=null&&p!=null?this.rect=new a(p.x,p.y,m.width,m.height):this.rect=new a}o(h,"LNode"),h.prototype=Object.create(n.prototype);for(var d in n)h[d]=n[d];h.prototype.getEdges=function(){return this.edges},h.prototype.getChild=function(){return this.child},h.prototype.getOwner=function(){return this.owner},h.prototype.getWidth=function(){return this.rect.width},h.prototype.setWidth=function(f){this.rect.width=f},h.prototype.getHeight=function(){return this.rect.height},h.prototype.setHeight=function(f){this.rect.height=f},h.prototype.getCenterX=function(){return this.rect.x+this.rect.width/2},h.prototype.getCenterY=function(){return this.rect.y+this.rect.height/2},h.prototype.getCenter=function(){return new u(this.rect.x+this.rect.width/2,this.rect.y+this.rect.height/2)},h.prototype.getLocation=function(){return new u(this.rect.x,this.rect.y)},h.prototype.getRect=function(){return this.rect},h.prototype.getDiagonal=function(){return Math.sqrt(this.rect.width*this.rect.width+this.rect.height*this.rect.height)},h.prototype.getHalfTheDiagonal=function(){return Math.sqrt(this.rect.height*this.rect.height+this.rect.width*this.rect.width)/2},h.prototype.setRect=function(f,p){this.rect.x=f.x,this.rect.y=f.y,this.rect.width=p.width,this.rect.height=p.height},h.prototype.setCenter=function(f,p){this.rect.x=f-this.rect.width/2,this.rect.y=p-this.rect.height/2},h.prototype.setLocation=function(f,p){this.rect.x=f,this.rect.y=p},h.prototype.moveBy=function(f,p){this.rect.x+=f,this.rect.y+=p},h.prototype.getEdgeListToNode=function(f){var p=[],m,g=this;return g.edges.forEach(function(y){if(y.target==f){if(y.source!=g)throw"Incorrect edge source!";p.push(y)}}),p},h.prototype.getEdgesBetween=function(f){var p=[],m,g=this;return g.edges.forEach(function(y){if(!(y.source==g||y.target==g))throw"Incorrect edge source and/or target";(y.target==f||y.source==f)&&p.push(y)}),p},h.prototype.getNeighborsList=function(){var f=new Set,p=this;return p.edges.forEach(function(m){if(m.source==p)f.add(m.target);else{if(m.target!=p)throw"Incorrect incidency!";f.add(m.source)}}),f},h.prototype.withChildren=function(){var f=new Set,p,m;if(f.add(this),this.child!=null)for(var g=this.child.getNodes(),y=0;y<g.length;y++)p=g[y],m=p.withChildren(),m.forEach(function(v){f.add(v)});return f},h.prototype.getNoOfChildren=function(){var f=0,p;if(this.child==null)f=1;else for(var m=this.child.getNodes(),g=0;g<m.length;g++)p=m[g],f+=p.getNoOfChildren();return f==0&&(f=1),f},h.prototype.getEstimatedSize=function(){if(this.estimatedSize==i.MIN_VALUE)throw"assert failed";return this.estimatedSize},h.prototype.calcEstimatedSize=function(){return this.child==null?this.estimatedSize=(this.rect.width+this.rect.height)/2:(this.estimatedSize=this.child.calcEstimatedSize(),this.rect.width=this.estimatedSize,this.rect.height=this.estimatedSize,this.estimatedSize)},h.prototype.scatter=function(){var f,p,m=-s.INITIAL_WORLD_BOUNDARY,g=s.INITIAL_WORLD_BOUNDARY;f=s.WORLD_CENTER_X+l.nextDouble()*(g-m)+m;var y=-s.INITIAL_WORLD_BOUNDARY,v=s.INITIAL_WORLD_BOUNDARY;p=s.WORLD_CENTER_Y+l.nextDouble()*(v-y)+y,this.rect.x=f,this.rect.y=p},h.prototype.updateBounds=function(){if(this.getChild()==null)throw"assert failed";if(this.getChild().getNodes().length!=0){var f=this.getChild();if(f.updateBounds(!0),this.rect.x=f.getLeft(),this.rect.y=f.getTop(),this.setWidth(f.getRight()-f.getLeft()),this.setHeight(f.getBottom()-f.getTop()),s.NODE_DIMENSIONS_INCLUDE_LABELS){var p=f.getRight()-f.getLeft(),m=f.getBottom()-f.getTop();this.labelWidth>p&&(this.rect.x-=(this.labelWidth-p)/2,this.setWidth(this.labelWidth)),this.labelHeight>m&&(this.labelPos=="center"?this.rect.y-=(this.labelHeight-m)/2:this.labelPos=="top"&&(this.rect.y-=this.labelHeight-m),this.setHeight(this.labelHeight))}}},h.prototype.getInclusionTreeDepth=function(){if(this.inclusionTreeDepth==i.MAX_VALUE)throw"assert failed";return this.inclusionTreeDepth},h.prototype.transform=function(f){var p=this.rect.x;p>s.WORLD_BOUNDARY?p=s.WORLD_BOUNDARY:p<-s.WORLD_BOUNDARY&&(p=-s.WORLD_BOUNDARY);var m=this.rect.y;m>s.WORLD_BOUNDARY?m=s.WORLD_BOUNDARY:m<-s.WORLD_BOUNDARY&&(m=-s.WORLD_BOUNDARY);var g=new u(p,m),y=f.inverseTransformPoint(g);this.setLocation(y.x,y.y)},h.prototype.getLeft=function(){return this.rect.x},h.prototype.getRight=function(){return this.rect.x+this.rect.width},h.prototype.getTop=function(){return this.rect.y},h.prototype.getBottom=function(){return this.rect.y+this.rect.height},h.prototype.getParent=function(){return this.owner==null?null:this.owner.getParent()},e.exports=h}),(function(e,t,r){"use strict";function n(i,a){i==null&&a==null?(this.x=0,this.y=0):(this.x=i,this.y=a)}o(n,"PointD"),n.prototype.getX=function(){return this.x},n.prototype.getY=function(){return this.y},n.prototype.setX=function(i){this.x=i},n.prototype.setY=function(i){this.y=i},n.prototype.getDifference=function(i){return new DimensionD(this.x-i.x,this.y-i.y)},n.prototype.getCopy=function(){return new n(this.x,this.y)},n.prototype.translate=function(i){return this.x+=i.width,this.y+=i.height,this},e.exports=n}),(function(e,t,r){"use strict";var n=r(2),i=r(10),a=r(0),s=r(6),l=r(3),u=r(1),h=r(13),d=r(12),f=r(11);function p(g,y,v){n.call(this,v),this.estimatedSize=i.MIN_VALUE,this.margin=a.DEFAULT_GRAPH_MARGIN,this.edges=[],this.nodes=[],this.isConnected=!1,this.parent=g,y!=null&&y instanceof s?this.graphManager=y:y!=null&&y instanceof Layout&&(this.graphManager=y.graphManager)}o(p,"LGraph"),p.prototype=Object.create(n.prototype);for(var m in n)p[m]=n[m];p.prototype.getNodes=function(){return this.nodes},p.prototype.getEdges=function(){return this.edges},p.prototype.getGraphManager=function(){return this.graphManager},p.prototype.getParent=function(){return this.parent},p.prototype.getLeft=function(){return this.left},p.prototype.getRight=function(){return this.right},p.prototype.getTop=function(){return this.top},p.prototype.getBottom=function(){return this.bottom},p.prototype.isConnected=function(){return this.isConnected},p.prototype.add=function(g,y,v){if(y==null&&v==null){var x=g;if(this.graphManager==null)throw"Graph has no graph mgr!";if(this.getNodes().indexOf(x)>-1)throw"Node already in graph!";return x.owner=this,this.getNodes().push(x),x}else{var b=g;if(!(this.getNodes().indexOf(y)>-1&&this.getNodes().indexOf(v)>-1))throw"Source or target not in graph!";if(!(y.owner==v.owner&&y.owner==this))throw"Both owners must be this graph!";return y.owner!=v.owner?null:(b.source=y,b.target=v,b.isInterGraph=!1,this.getEdges().push(b),y.edges.push(b),v!=y&&v.edges.push(b),b)}},p.prototype.remove=function(g){var y=g;if(g instanceof l){if(y==null)throw"Node is null!";if(!(y.owner!=null&&y.owner==this))throw"Owner graph is invalid!";if(this.graphManager==null)throw"Owner graph manager is invalid!";for(var v=y.edges.slice(),x,b=v.length,T=0;T<b;T++)x=v[T],x.isInterGraph?this.graphManager.remove(x):x.source.owner.remove(x);var k=this.nodes.indexOf(y);if(k==-1)throw"Node not in owner node list!";this.nodes.splice(k,1)}else if(g instanceof u){var x=g;if(x==null)throw"Edge is null!";if(!(x.source!=null&&x.target!=null))throw"Source and/or target is null!";if(!(x.source.owner!=null&&x.target.owner!=null&&x.source.owner==this&&x.target.owner==this))throw"Source and/or target owner is invalid!";var C=x.source.edges.indexOf(x),w=x.target.edges.indexOf(x);if(!(C>-1&&w>-1))throw"Source and/or target doesn't know this edge!";x.source.edges.splice(C,1),x.target!=x.source&&x.target.edges.splice(w,1);var k=x.source.owner.getEdges().indexOf(x);if(k==-1)throw"Not in owner's edge list!";x.source.owner.getEdges().splice(k,1)}},p.prototype.updateLeftTop=function(){for(var g=i.MAX_VALUE,y=i.MAX_VALUE,v,x,b,T=this.getNodes(),k=T.length,C=0;C<k;C++){var w=T[C];v=w.getTop(),x=w.getLeft(),g>v&&(g=v),y>x&&(y=x)}return g==i.MAX_VALUE?null:(T[0].getParent().paddingLeft!=null?b=T[0].getParent().paddingLeft:b=this.margin,this.left=y-b,this.top=g-b,new d(this.left,this.top))},p.prototype.updateBounds=function(g){for(var y=i.MAX_VALUE,v=-i.MAX_VALUE,x=i.MAX_VALUE,b=-i.MAX_VALUE,T,k,C,w,S,R=this.nodes,L=R.length,N=0;N<L;N++){var I=R[N];g&&I.child!=null&&I.updateBounds(),T=I.getLeft(),k=I.getRight(),C=I.getTop(),w=I.getBottom(),y>T&&(y=T),v<k&&(v=k),x>C&&(x=C),b<w&&(b=w)}var _=new h(y,x,v-y,b-x);y==i.MAX_VALUE&&(this.left=this.parent.getLeft(),this.right=this.parent.getRight(),this.top=this.parent.getTop(),this.bottom=this.parent.getBottom()),R[0].getParent().paddingLeft!=null?S=R[0].getParent().paddingLeft:S=this.margin,this.left=_.x-S,this.right=_.x+_.width+S,this.top=_.y-S,this.bottom=_.y+_.height+S},p.calculateBounds=function(g){for(var y=i.MAX_VALUE,v=-i.MAX_VALUE,x=i.MAX_VALUE,b=-i.MAX_VALUE,T,k,C,w,S=g.length,R=0;R<S;R++){var L=g[R];T=L.getLeft(),k=L.getRight(),C=L.getTop(),w=L.getBottom(),y>T&&(y=T),v<k&&(v=k),x>C&&(x=C),b<w&&(b=w)}var N=new h(y,x,v-y,b-x);return N},p.prototype.getInclusionTreeDepth=function(){return this==this.graphManager.getRoot()?1:this.parent.getInclusionTreeDepth()},p.prototype.getEstimatedSize=function(){if(this.estimatedSize==i.MIN_VALUE)throw"assert failed";return this.estimatedSize},p.prototype.calcEstimatedSize=function(){for(var g=0,y=this.nodes,v=y.length,x=0;x<v;x++){var b=y[x];g+=b.calcEstimatedSize()}return g==0?this.estimatedSize=a.EMPTY_COMPOUND_NODE_SIZE:this.estimatedSize=g/Math.sqrt(this.nodes.length),this.estimatedSize},p.prototype.updateConnected=function(){var g=this;if(this.nodes.length==0){this.isConnected=!0;return}var y=new f,v=new Set,x=this.nodes[0],b,T,k=x.withChildren();for(k.forEach(function(N){y.push(N),v.add(N)});y.length!==0;){x=y.shift(),b=x.getEdges();for(var C=b.length,w=0;w<C;w++){var S=b[w];if(T=S.getOtherEndInGraph(x,this),T!=null&&!v.has(T)){var R=T.withChildren();R.forEach(function(N){y.push(N),v.add(N)})}}}if(this.isConnected=!1,v.size>=this.nodes.length){var L=0;v.forEach(function(N){N.owner==g&&L++}),L==this.nodes.length&&(this.isConnected=!0)}},e.exports=p}),(function(e,t,r){"use strict";var n,i=r(1);function a(s){n=r(5),this.layout=s,this.graphs=[],this.edges=[]}o(a,"LGraphManager"),a.prototype.addRoot=function(){var s=this.layout.newGraph(),l=this.layout.newNode(null),u=this.add(s,l);return this.setRootGraph(u),this.rootGraph},a.prototype.add=function(s,l,u,h,d){if(u==null&&h==null&&d==null){if(s==null)throw"Graph is null!";if(l==null)throw"Parent node is null!";if(this.graphs.indexOf(s)>-1)throw"Graph already in this graph mgr!";if(this.graphs.push(s),s.parent!=null)throw"Already has a parent!";if(l.child!=null)throw"Already has a child!";return s.parent=l,l.child=s,s}else{d=u,h=l,u=s;var f=h.getOwner(),p=d.getOwner();if(!(f!=null&&f.getGraphManager()==this))throw"Source not in this graph mgr!";if(!(p!=null&&p.getGraphManager()==this))throw"Target not in this graph mgr!";if(f==p)return u.isInterGraph=!1,f.add(u,h,d);if(u.isInterGraph=!0,u.source=h,u.target=d,this.edges.indexOf(u)>-1)throw"Edge already in inter-graph edge list!";if(this.edges.push(u),!(u.source!=null&&u.target!=null))throw"Edge source and/or target is null!";if(!(u.source.edges.indexOf(u)==-1&&u.target.edges.indexOf(u)==-1))throw"Edge already in source and/or target incidency list!";return u.source.edges.push(u),u.target.edges.push(u),u}},a.prototype.remove=function(s){if(s instanceof n){var l=s;if(l.getGraphManager()!=this)throw"Graph not in this graph mgr";if(!(l==this.rootGraph||l.parent!=null&&l.parent.graphManager==this))throw"Invalid parent node!";var u=[];u=u.concat(l.getEdges());for(var h,d=u.length,f=0;f<d;f++)h=u[f],l.remove(h);var p=[];p=p.concat(l.getNodes());var m;d=p.length;for(var f=0;f<d;f++)m=p[f],l.remove(m);l==this.rootGraph&&this.setRootGraph(null);var g=this.graphs.indexOf(l);this.graphs.splice(g,1),l.parent=null}else if(s instanceof i){if(h=s,h==null)throw"Edge is null!";if(!h.isInterGraph)throw"Not an inter-graph edge!";if(!(h.source!=null&&h.target!=null))throw"Source and/or target is null!";if(!(h.source.edges.indexOf(h)!=-1&&h.target.edges.indexOf(h)!=-1))throw"Source and/or target doesn't know this edge!";var g=h.source.edges.indexOf(h);if(h.source.edges.splice(g,1),g=h.target.edges.indexOf(h),h.target.edges.splice(g,1),!(h.source.owner!=null&&h.source.owner.getGraphManager()!=null))throw"Edge owner graph or owner graph manager is null!";if(h.source.owner.getGraphManager().edges.indexOf(h)==-1)throw"Not in owner graph manager's edge list!";var g=h.source.owner.getGraphManager().edges.indexOf(h);h.source.owner.getGraphManager().edges.splice(g,1)}},a.prototype.updateBounds=function(){this.rootGraph.updateBounds(!0)},a.prototype.getGraphs=function(){return this.graphs},a.prototype.getAllNodes=function(){if(this.allNodes==null){for(var s=[],l=this.getGraphs(),u=l.length,h=0;h<u;h++)s=s.concat(l[h].getNodes());this.allNodes=s}return this.allNodes},a.prototype.resetAllNodes=function(){this.allNodes=null},a.prototype.resetAllEdges=function(){this.allEdges=null},a.prototype.resetAllNodesToApplyGravitation=function(){this.allNodesToApplyGravitation=null},a.prototype.getAllEdges=function(){if(this.allEdges==null){for(var s=[],l=this.getGraphs(),u=l.length,h=0;h<l.length;h++)s=s.concat(l[h].getEdges());s=s.concat(this.edges),this.allEdges=s}return this.allEdges},a.prototype.getAllNodesToApplyGravitation=function(){return this.allNodesToApplyGravitation},a.prototype.setAllNodesToApplyGravitation=function(s){if(this.allNodesToApplyGravitation!=null)throw"assert failed";this.allNodesToApplyGravitation=s},a.prototype.getRoot=function(){return this.rootGraph},a.prototype.setRootGraph=function(s){if(s.getGraphManager()!=this)throw"Root not in this graph mgr!";this.rootGraph=s,s.parent==null&&(s.parent=this.layout.newNode("Root node"))},a.prototype.getLayout=function(){return this.layout},a.prototype.isOneAncestorOfOther=function(s,l){if(!(s!=null&&l!=null))throw"assert failed";if(s==l)return!0;var u=s.getOwner(),h;do{if(h=u.getParent(),h==null)break;if(h==l)return!0;if(u=h.getOwner(),u==null)break}while(!0);u=l.getOwner();do{if(h=u.getParent(),h==null)break;if(h==s)return!0;if(u=h.getOwner(),u==null)break}while(!0);return!1},a.prototype.calcLowestCommonAncestors=function(){for(var s,l,u,h,d,f=this.getAllEdges(),p=f.length,m=0;m<p;m++){if(s=f[m],l=s.source,u=s.target,s.lca=null,s.sourceInLca=l,s.targetInLca=u,l==u){s.lca=l.getOwner();continue}for(h=l.getOwner();s.lca==null;){for(s.targetInLca=u,d=u.getOwner();s.lca==null;){if(d==h){s.lca=d;break}if(d==this.rootGraph)break;if(s.lca!=null)throw"assert failed";s.targetInLca=d.getParent(),d=s.targetInLca.getOwner()}if(h==this.rootGraph)break;s.lca==null&&(s.sourceInLca=h.getParent(),h=s.sourceInLca.getOwner())}if(s.lca==null)throw"assert failed"}},a.prototype.calcLowestCommonAncestor=function(s,l){if(s==l)return s.getOwner();var u=s.getOwner();do{if(u==null)break;var h=l.getOwner();do{if(h==null)break;if(h==u)return h;h=h.getParent().getOwner()}while(!0);u=u.getParent().getOwner()}while(!0);return u},a.prototype.calcInclusionTreeDepths=function(s,l){s==null&&l==null&&(s=this.rootGraph,l=1);for(var u,h=s.getNodes(),d=h.length,f=0;f<d;f++)u=h[f],u.inclusionTreeDepth=l,u.child!=null&&this.calcInclusionTreeDepths(u.child,l+1)},a.prototype.includesInvalidEdge=function(){for(var s,l=this.edges.length,u=0;u<l;u++)if(s=this.edges[u],this.isOneAncestorOfOther(s.source,s.target))return!0;return!1},e.exports=a}),(function(e,t,r){"use strict";var n=r(0);function i(){}o(i,"FDLayoutConstants");for(var a in n)i[a]=n[a];i.MAX_ITERATIONS=2500,i.DEFAULT_EDGE_LENGTH=50,i.DEFAULT_SPRING_STRENGTH=.45,i.DEFAULT_REPULSION_STRENGTH=4500,i.DEFAULT_GRAVITY_STRENGTH=.4,i.DEFAULT_COMPOUND_GRAVITY_STRENGTH=1,i.DEFAULT_GRAVITY_RANGE_FACTOR=3.8,i.DEFAULT_COMPOUND_GRAVITY_RANGE_FACTOR=1.5,i.DEFAULT_USE_SMART_IDEAL_EDGE_LENGTH_CALCULATION=!0,i.DEFAULT_USE_SMART_REPULSION_RANGE_CALCULATION=!0,i.DEFAULT_COOLING_FACTOR_INCREMENTAL=.3,i.COOLING_ADAPTATION_FACTOR=.33,i.ADAPTATION_LOWER_NODE_LIMIT=1e3,i.ADAPTATION_UPPER_NODE_LIMIT=5e3,i.MAX_NODE_DISPLACEMENT_INCREMENTAL=100,i.MAX_NODE_DISPLACEMENT=i.MAX_NODE_DISPLACEMENT_INCREMENTAL*3,i.MIN_REPULSION_DIST=i.DEFAULT_EDGE_LENGTH/10,i.CONVERGENCE_CHECK_PERIOD=100,i.PER_LEVEL_IDEAL_EDGE_LENGTH_FACTOR=.1,i.MIN_EDGE_LENGTH=1,i.GRID_CALCULATION_CHECK_PERIOD=10,e.exports=i}),(function(e,t,r){"use strict";var n=r(12);function i(){}o(i,"IGeometry"),i.calcSeparationAmount=function(a,s,l,u){if(!a.intersects(s))throw"assert failed";var h=new Array(2);this.decideDirectionsForOverlappingNodes(a,s,h),l[0]=Math.min(a.getRight(),s.getRight())-Math.max(a.x,s.x),l[1]=Math.min(a.getBottom(),s.getBottom())-Math.max(a.y,s.y),a.getX()<=s.getX()&&a.getRight()>=s.getRight()?l[0]+=Math.min(s.getX()-a.getX(),a.getRight()-s.getRight()):s.getX()<=a.getX()&&s.getRight()>=a.getRight()&&(l[0]+=Math.min(a.getX()-s.getX(),s.getRight()-a.getRight())),a.getY()<=s.getY()&&a.getBottom()>=s.getBottom()?l[1]+=Math.min(s.getY()-a.getY(),a.getBottom()-s.getBottom()):s.getY()<=a.getY()&&s.getBottom()>=a.getBottom()&&(l[1]+=Math.min(a.getY()-s.getY(),s.getBottom()-a.getBottom()));var d=Math.abs((s.getCenterY()-a.getCenterY())/(s.getCenterX()-a.getCenterX()));s.getCenterY()===a.getCenterY()&&s.getCenterX()===a.getCenterX()&&(d=1);var f=d*l[0],p=l[1]/d;l[0]<p?p=l[0]:f=l[1],l[0]=-1*h[0]*(p/2+u),l[1]=-1*h[1]*(f/2+u)},i.decideDirectionsForOverlappingNodes=function(a,s,l){a.getCenterX()<s.getCenterX()?l[0]=-1:l[0]=1,a.getCenterY()<s.getCenterY()?l[1]=-1:l[1]=1},i.getIntersection2=function(a,s,l){var u=a.getCenterX(),h=a.getCenterY(),d=s.getCenterX(),f=s.getCenterY();if(a.intersects(s))return l[0]=u,l[1]=h,l[2]=d,l[3]=f,!0;var p=a.getX(),m=a.getY(),g=a.getRight(),y=a.getX(),v=a.getBottom(),x=a.getRight(),b=a.getWidthHalf(),T=a.getHeightHalf(),k=s.getX(),C=s.getY(),w=s.getRight(),S=s.getX(),R=s.getBottom(),L=s.getRight(),N=s.getWidthHalf(),I=s.getHeightHalf(),_=!1,A=!1;if(u===d){if(h>f)return l[0]=u,l[1]=m,l[2]=d,l[3]=R,!1;if(h<f)return l[0]=u,l[1]=v,l[2]=d,l[3]=C,!1}else if(h===f){if(u>d)return l[0]=p,l[1]=h,l[2]=w,l[3]=f,!1;if(u<d)return l[0]=g,l[1]=h,l[2]=k,l[3]=f,!1}else{var M=a.height/a.width,D=s.height/s.width,P=(f-h)/(d-u),B=void 0,O=void 0,$=void 0,V=void 0,G=void 0,z=void 0;if(-M===P?u>d?(l[0]=y,l[1]=v,_=!0):(l[0]=g,l[1]=m,_=!0):M===P&&(u>d?(l[0]=p,l[1]=m,_=!0):(l[0]=x,l[1]=v,_=!0)),-D===P?d>u?(l[2]=S,l[3]=R,A=!0):(l[2]=w,l[3]=C,A=!0):D===P&&(d>u?(l[2]=k,l[3]=C,A=!0):(l[2]=L,l[3]=R,A=!0)),_&&A)return!1;if(u>d?h>f?(B=this.getCardinalDirection(M,P,4),O=this.getCardinalDirection(D,P,2)):(B=this.getCardinalDirection(-M,P,3),O=this.getCardinalDirection(-D,P,1)):h>f?(B=this.getCardinalDirection(-M,P,1),O=this.getCardinalDirection(-D,P,3)):(B=this.getCardinalDirection(M,P,2),O=this.getCardinalDirection(D,P,4)),!_)switch(B){case 1:V=m,$=u+-T/P,l[0]=$,l[1]=V;break;case 2:$=x,V=h+b*P,l[0]=$,l[1]=V;break;case 3:V=v,$=u+T/P,l[0]=$,l[1]=V;break;case 4:$=y,V=h+-b*P,l[0]=$,l[1]=V;break}if(!A)switch(O){case 1:z=C,G=d+-I/P,l[2]=G,l[3]=z;break;case 2:G=L,z=f+N*P,l[2]=G,l[3]=z;break;case 3:z=R,G=d+I/P,l[2]=G,l[3]=z;break;case 4:G=S,z=f+-N*P,l[2]=G,l[3]=z;break}}return!1},i.getCardinalDirection=function(a,s,l){return a>s?l:1+l%4},i.getIntersection=function(a,s,l,u){if(u==null)return this.getIntersection2(a,s,l);var h=a.x,d=a.y,f=s.x,p=s.y,m=l.x,g=l.y,y=u.x,v=u.y,x=void 0,b=void 0,T=void 0,k=void 0,C=void 0,w=void 0,S=void 0,R=void 0,L=void 0;return T=p-d,C=h-f,S=f*d-h*p,k=v-g,w=m-y,R=y*g-m*v,L=T*w-k*C,L===0?null:(x=(C*R-w*S)/L,b=(k*S-T*R)/L,new n(x,b))},i.angleOfVector=function(a,s,l,u){var h=void 0;return a!==l?(h=Math.atan((u-s)/(l-a)),l<a?h+=Math.PI:u<s&&(h+=this.TWO_PI)):u<s?h=this.ONE_AND_HALF_PI:h=this.HALF_PI,h},i.doIntersect=function(a,s,l,u){var h=a.x,d=a.y,f=s.x,p=s.y,m=l.x,g=l.y,y=u.x,v=u.y,x=(f-h)*(v-g)-(y-m)*(p-d);if(x===0)return!1;var b=((v-g)*(y-h)+(m-y)*(v-d))/x,T=((d-p)*(y-h)+(f-h)*(v-d))/x;return 0<b&&b<1&&0<T&&T<1},i.HALF_PI=.5*Math.PI,i.ONE_AND_HALF_PI=1.5*Math.PI,i.TWO_PI=2*Math.PI,i.THREE_PI=3*Math.PI,e.exports=i}),(function(e,t,r){"use strict";function n(){}o(n,"IMath"),n.sign=function(i){return i>0?1:i<0?-1:0},n.floor=function(i){return i<0?Math.ceil(i):Math.floor(i)},n.ceil=function(i){return i<0?Math.floor(i):Math.ceil(i)},e.exports=n}),(function(e,t,r){"use strict";function n(){}o(n,"Integer"),n.MAX_VALUE=2147483647,n.MIN_VALUE=-2147483648,e.exports=n}),(function(e,t,r){"use strict";var n=(function(){function h(d,f){for(var p=0;p<f.length;p++){var m=f[p];m.enumerable=m.enumerable||!1,m.configurable=!0,"value"in m&&(m.writable=!0),Object.defineProperty(d,m.key,m)}}return o(h,"defineProperties"),function(d,f,p){return f&&h(d.prototype,f),p&&h(d,p),d}})();function i(h,d){if(!(h instanceof d))throw new TypeError("Cannot call a class as a function")}o(i,"_classCallCheck");var a=o(function(d){return{value:d,next:null,prev:null}},"nodeFrom"),s=o(function(d,f,p,m){return d!==null?d.next=f:m.head=f,p!==null?p.prev=f:m.tail=f,f.prev=d,f.next=p,m.length++,f},"add"),l=o(function(d,f){var p=d.prev,m=d.next;return p!==null?p.next=m:f.head=m,m!==null?m.prev=p:f.tail=p,d.prev=d.next=null,f.length--,d},"_remove"),u=(function(){function h(d){var f=this;i(this,h),this.length=0,this.head=null,this.tail=null,d?.forEach(function(p){return f.push(p)})}return o(h,"LinkedList"),n(h,[{key:"size",value:o(function(){return this.length},"size")},{key:"insertBefore",value:o(function(f,p){return s(p.prev,a(f),p,this)},"insertBefore")},{key:"insertAfter",value:o(function(f,p){return s(p,a(f),p.next,this)},"insertAfter")},{key:"insertNodeBefore",value:o(function(f,p){return s(p.prev,f,p,this)},"insertNodeBefore")},{key:"insertNodeAfter",value:o(function(f,p){return s(p,f,p.next,this)},"insertNodeAfter")},{key:"push",value:o(function(f){return s(this.tail,a(f),null,this)},"push")},{key:"unshift",value:o(function(f){return s(null,a(f),this.head,this)},"unshift")},{key:"remove",value:o(function(f){return l(f,this)},"remove")},{key:"pop",value:o(function(){return l(this.tail,this).value},"pop")},{key:"popNode",value:o(function(){return l(this.tail,this)},"popNode")},{key:"shift",value:o(function(){return l(this.head,this).value},"shift")},{key:"shiftNode",value:o(function(){return l(this.head,this)},"shiftNode")},{key:"get_object_at",value:o(function(f){if(f<=this.length()){for(var p=1,m=this.head;p<f;)m=m.next,p++;return m.value}},"get_object_at")},{key:"set_object_at",value:o(function(f,p){if(f<=this.length()){for(var m=1,g=this.head;m<f;)g=g.next,m++;g.value=p}},"set_object_at")}]),h})();e.exports=u}),(function(e,t,r){"use strict";function n(i,a,s){this.x=null,this.y=null,i==null&&a==null&&s==null?(this.x=0,this.y=0):typeof i=="number"&&typeof a=="number"&&s==null?(this.x=i,this.y=a):i.constructor.name=="Point"&&a==null&&s==null&&(s=i,this.x=s.x,this.y=s.y)}o(n,"Point"),n.prototype.getX=function(){return this.x},n.prototype.getY=function(){return this.y},n.prototype.getLocation=function(){return new n(this.x,this.y)},n.prototype.setLocation=function(i,a,s){i.constructor.name=="Point"&&a==null&&s==null?(s=i,this.setLocation(s.x,s.y)):typeof i=="number"&&typeof a=="number"&&s==null&&(parseInt(i)==i&&parseInt(a)==a?this.move(i,a):(this.x=Math.floor(i+.5),this.y=Math.floor(a+.5)))},n.prototype.move=function(i,a){this.x=i,this.y=a},n.prototype.translate=function(i,a){this.x+=i,this.y+=a},n.prototype.equals=function(i){if(i.constructor.name=="Point"){var a=i;return this.x==a.x&&this.y==a.y}return this==i},n.prototype.toString=function(){return new n().constructor.name+"[x="+this.x+",y="+this.y+"]"},e.exports=n}),(function(e,t,r){"use strict";function n(i,a,s,l){this.x=0,this.y=0,this.width=0,this.height=0,i!=null&&a!=null&&s!=null&&l!=null&&(this.x=i,this.y=a,this.width=s,this.height=l)}o(n,"RectangleD"),n.prototype.getX=function(){return this.x},n.prototype.setX=function(i){this.x=i},n.prototype.getY=function(){return this.y},n.prototype.setY=function(i){this.y=i},n.prototype.getWidth=function(){return this.width},n.prototype.setWidth=function(i){this.width=i},n.prototype.getHeight=function(){return this.height},n.prototype.setHeight=function(i){this.height=i},n.prototype.getRight=function(){return this.x+this.width},n.prototype.getBottom=function(){return this.y+this.height},n.prototype.intersects=function(i){return!(this.getRight()<i.x||this.getBottom()<i.y||i.getRight()<this.x||i.getBottom()<this.y)},n.prototype.getCenterX=function(){return this.x+this.width/2},n.prototype.getMinX=function(){return this.getX()},n.prototype.getMaxX=function(){return this.getX()+this.width},n.prototype.getCenterY=function(){return this.y+this.height/2},n.prototype.getMinY=function(){return this.getY()},n.prototype.getMaxY=function(){return this.getY()+this.height},n.prototype.getWidthHalf=function(){return this.width/2},n.prototype.getHeightHalf=function(){return this.height/2},e.exports=n}),(function(e,t,r){"use strict";var n=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(a){return typeof a}:function(a){return a&&typeof Symbol=="function"&&a.constructor===Symbol&&a!==Symbol.prototype?"symbol":typeof a};function i(){}o(i,"UniqueIDGeneretor"),i.lastID=0,i.createID=function(a){return i.isPrimitive(a)?a:(a.uniqueID!=null||(a.uniqueID=i.getString(),i.lastID++),a.uniqueID)},i.getString=function(a){return a==null&&(a=i.lastID),"Object#"+a},i.isPrimitive=function(a){var s=typeof a>"u"?"undefined":n(a);return a==null||s!="object"&&s!="function"},e.exports=i}),(function(e,t,r){"use strict";function n(m){if(Array.isArray(m)){for(var g=0,y=Array(m.length);g<m.length;g++)y[g]=m[g];return y}else return Array.from(m)}o(n,"_toConsumableArray");var i=r(0),a=r(6),s=r(3),l=r(1),u=r(5),h=r(4),d=r(17),f=r(27);function p(m){f.call(this),this.layoutQuality=i.QUALITY,this.createBendsAsNeeded=i.DEFAULT_CREATE_BENDS_AS_NEEDED,this.incremental=i.DEFAULT_INCREMENTAL,this.animationOnLayout=i.DEFAULT_ANIMATION_ON_LAYOUT,this.animationDuringLayout=i.DEFAULT_ANIMATION_DURING_LAYOUT,this.animationPeriod=i.DEFAULT_ANIMATION_PERIOD,this.uniformLeafNodeSizes=i.DEFAULT_UNIFORM_LEAF_NODE_SIZES,this.edgeToDummyNodes=new Map,this.graphManager=new a(this),this.isLayoutFinished=!1,this.isSubLayout=!1,this.isRemoteUse=!1,m!=null&&(this.isRemoteUse=m)}o(p,"Layout"),p.RANDOM_SEED=1,p.prototype=Object.create(f.prototype),p.prototype.getGraphManager=function(){return this.graphManager},p.prototype.getAllNodes=function(){return this.graphManager.getAllNodes()},p.prototype.getAllEdges=function(){return this.graphManager.getAllEdges()},p.prototype.getAllNodesToApplyGravitation=function(){return this.graphManager.getAllNodesToApplyGravitation()},p.prototype.newGraphManager=function(){var m=new a(this);return this.graphManager=m,m},p.prototype.newGraph=function(m){return new u(null,this.graphManager,m)},p.prototype.newNode=function(m){return new s(this.graphManager,m)},p.prototype.newEdge=function(m){return new l(null,null,m)},p.prototype.checkLayoutSuccess=function(){return this.graphManager.getRoot()==null||this.graphManager.getRoot().getNodes().length==0||this.graphManager.includesInvalidEdge()},p.prototype.runLayout=function(){this.isLayoutFinished=!1,this.tilingPreLayout&&this.tilingPreLayout(),this.initParameters();var m;return this.checkLayoutSuccess()?m=!1:m=this.layout(),i.ANIMATE==="during"?!1:(m&&(this.isSubLayout||this.doPostLayout()),this.tilingPostLayout&&this.tilingPostLayout(),this.isLayoutFinished=!0,m)},p.prototype.doPostLayout=function(){this.incremental||this.transform(),this.update()},p.prototype.update2=function(){if(this.createBendsAsNeeded&&(this.createBendpointsFromDummyNodes(),this.graphManager.resetAllEdges()),!this.isRemoteUse){for(var m,g=this.graphManager.getAllEdges(),y=0;y<g.length;y++)m=g[y];for(var v,x=this.graphManager.getRoot().getNodes(),y=0;y<x.length;y++)v=x[y];this.update(this.graphManager.getRoot())}},p.prototype.update=function(m){if(m==null)this.update2();else if(m instanceof s){var g=m;if(g.getChild()!=null)for(var y=g.getChild().getNodes(),v=0;v<y.length;v++)update(y[v]);if(g.vGraphObject!=null){var x=g.vGraphObject;x.update(g)}}else if(m instanceof l){var b=m;if(b.vGraphObject!=null){var T=b.vGraphObject;T.update(b)}}else if(m instanceof u){var k=m;if(k.vGraphObject!=null){var C=k.vGraphObject;C.update(k)}}},p.prototype.initParameters=function(){this.isSubLayout||(this.layoutQuality=i.QUALITY,this.animationDuringLayout=i.DEFAULT_ANIMATION_DURING_LAYOUT,this.animationPeriod=i.DEFAULT_ANIMATION_PERIOD,this.animationOnLayout=i.DEFAULT_ANIMATION_ON_LAYOUT,this.incremental=i.DEFAULT_INCREMENTAL,this.createBendsAsNeeded=i.DEFAULT_CREATE_BENDS_AS_NEEDED,this.uniformLeafNodeSizes=i.DEFAULT_UNIFORM_LEAF_NODE_SIZES),this.animationDuringLayout&&(this.animationOnLayout=!1)},p.prototype.transform=function(m){if(m==null)this.transform(new h(0,0));else{var g=new d,y=this.graphManager.getRoot().updateLeftTop();if(y!=null){g.setWorldOrgX(m.x),g.setWorldOrgY(m.y),g.setDeviceOrgX(y.x),g.setDeviceOrgY(y.y);for(var v=this.getAllNodes(),x,b=0;b<v.length;b++)x=v[b],x.transform(g)}}},p.prototype.positionNodesRandomly=function(m){if(m==null)this.positionNodesRandomly(this.getGraphManager().getRoot()),this.getGraphManager().getRoot().updateBounds(!0);else for(var g,y,v=m.getNodes(),x=0;x<v.length;x++)g=v[x],y=g.getChild(),y==null||y.getNodes().length==0?g.scatter():(this.positionNodesRandomly(y),g.updateBounds())},p.prototype.getFlatForest=function(){for(var m=[],g=!0,y=this.graphManager.getRoot().getNodes(),v=!0,x=0;x<y.length;x++)y[x].getChild()!=null&&(v=!1);if(!v)return m;var b=new Set,T=[],k=new Map,C=[];for(C=C.concat(y);C.length>0&&g;){for(T.push(C[0]);T.length>0&&g;){var w=T[0];T.splice(0,1),b.add(w);for(var S=w.getEdges(),x=0;x<S.length;x++){var R=S[x].getOtherEnd(w);if(k.get(w)!=R)if(!b.has(R))T.push(R),k.set(R,w);else{g=!1;break}}}if(!g)m=[];else{var L=[].concat(n(b));m.push(L);for(var x=0;x<L.length;x++){var N=L[x],I=C.indexOf(N);I>-1&&C.splice(I,1)}b=new Set,k=new Map}}return m},p.prototype.createDummyNodesForBendpoints=function(m){for(var g=[],y=m.source,v=this.graphManager.calcLowestCommonAncestor(m.source,m.target),x=0;x<m.bendpoints.length;x++){var b=this.newNode(null);b.setRect(new Point(0,0),new Dimension(1,1)),v.add(b);var T=this.newEdge(null);this.graphManager.add(T,y,b),g.add(b),y=b}var T=this.newEdge(null);return this.graphManager.add(T,y,m.target),this.edgeToDummyNodes.set(m,g),m.isInterGraph()?this.graphManager.remove(m):v.remove(m),g},p.prototype.createBendpointsFromDummyNodes=function(){var m=[];m=m.concat(this.graphManager.getAllEdges()),m=[].concat(n(this.edgeToDummyNodes.keys())).concat(m);for(var g=0;g<m.length;g++){var y=m[g];if(y.bendpoints.length>0){for(var v=this.edgeToDummyNodes.get(y),x=0;x<v.length;x++){var b=v[x],T=new h(b.getCenterX(),b.getCenterY()),k=y.bendpoints.get(x);k.x=T.x,k.y=T.y,b.getOwner().remove(b)}this.graphManager.add(y,y.source,y.target)}}},p.transform=function(m,g,y,v){if(y!=null&&v!=null){var x=g;if(m<=50){var b=g/y;x-=(g-b)/50*(50-m)}else{var T=g*v;x+=(T-g)/50*(m-50)}return x}else{var k,C;return m<=50?(k=9*g/500,C=g/10):(k=9*g/50,C=-8*g),k*m+C}},p.findCenterOfTree=function(m){var g=[];g=g.concat(m);var y=[],v=new Map,x=!1,b=null;(g.length==1||g.length==2)&&(x=!0,b=g[0]);for(var T=0;T<g.length;T++){var k=g[T],C=k.getNeighborsList().size;v.set(k,k.getNeighborsList().size),C==1&&y.push(k)}var w=[];for(w=w.concat(y);!x;){var S=[];S=S.concat(w),w=[];for(var T=0;T<g.length;T++){var k=g[T],R=g.indexOf(k);R>=0&&g.splice(R,1);var L=k.getNeighborsList();L.forEach(function(_){if(y.indexOf(_)<0){var A=v.get(_),M=A-1;M==1&&w.push(_),v.set(_,M)}})}y=y.concat(w),(g.length==1||g.length==2)&&(x=!0,b=g[0])}return b},p.prototype.setGraphManager=function(m){this.graphManager=m},e.exports=p}),(function(e,t,r){"use strict";function n(){}o(n,"RandomSeed"),n.seed=1,n.x=0,n.nextDouble=function(){return n.x=Math.sin(n.seed++)*1e4,n.x-Math.floor(n.x)},e.exports=n}),(function(e,t,r){"use strict";var n=r(4);function i(a,s){this.lworldOrgX=0,this.lworldOrgY=0,this.ldeviceOrgX=0,this.ldeviceOrgY=0,this.lworldExtX=1,this.lworldExtY=1,this.ldeviceExtX=1,this.ldeviceExtY=1}o(i,"Transform"),i.prototype.getWorldOrgX=function(){return this.lworldOrgX},i.prototype.setWorldOrgX=function(a){this.lworldOrgX=a},i.prototype.getWorldOrgY=function(){return this.lworldOrgY},i.prototype.setWorldOrgY=function(a){this.lworldOrgY=a},i.prototype.getWorldExtX=function(){return this.lworldExtX},i.prototype.setWorldExtX=function(a){this.lworldExtX=a},i.prototype.getWorldExtY=function(){return this.lworldExtY},i.prototype.setWorldExtY=function(a){this.lworldExtY=a},i.prototype.getDeviceOrgX=function(){return this.ldeviceOrgX},i.prototype.setDeviceOrgX=function(a){this.ldeviceOrgX=a},i.prototype.getDeviceOrgY=function(){return this.ldeviceOrgY},i.prototype.setDeviceOrgY=function(a){this.ldeviceOrgY=a},i.prototype.getDeviceExtX=function(){return this.ldeviceExtX},i.prototype.setDeviceExtX=function(a){this.ldeviceExtX=a},i.prototype.getDeviceExtY=function(){return this.ldeviceExtY},i.prototype.setDeviceExtY=function(a){this.ldeviceExtY=a},i.prototype.transformX=function(a){var s=0,l=this.lworldExtX;return l!=0&&(s=this.ldeviceOrgX+(a-this.lworldOrgX)*this.ldeviceExtX/l),s},i.prototype.transformY=function(a){var s=0,l=this.lworldExtY;return l!=0&&(s=this.ldeviceOrgY+(a-this.lworldOrgY)*this.ldeviceExtY/l),s},i.prototype.inverseTransformX=function(a){var s=0,l=this.ldeviceExtX;return l!=0&&(s=this.lworldOrgX+(a-this.ldeviceOrgX)*this.lworldExtX/l),s},i.prototype.inverseTransformY=function(a){var s=0,l=this.ldeviceExtY;return l!=0&&(s=this.lworldOrgY+(a-this.ldeviceOrgY)*this.lworldExtY/l),s},i.prototype.inverseTransformPoint=function(a){var s=new n(this.inverseTransformX(a.x),this.inverseTransformY(a.y));return s},e.exports=i}),(function(e,t,r){"use strict";function n(f){if(Array.isArray(f)){for(var p=0,m=Array(f.length);p<f.length;p++)m[p]=f[p];return m}else return Array.from(f)}o(n,"_toConsumableArray");var i=r(15),a=r(7),s=r(0),l=r(8),u=r(9);function h(){i.call(this),this.useSmartIdealEdgeLengthCalculation=a.DEFAULT_USE_SMART_IDEAL_EDGE_LENGTH_CALCULATION,this.idealEdgeLength=a.DEFAULT_EDGE_LENGTH,this.springConstant=a.DEFAULT_SPRING_STRENGTH,this.repulsionConstant=a.DEFAULT_REPULSION_STRENGTH,this.gravityConstant=a.DEFAULT_GRAVITY_STRENGTH,this.compoundGravityConstant=a.DEFAULT_COMPOUND_GRAVITY_STRENGTH,this.gravityRangeFactor=a.DEFAULT_GRAVITY_RANGE_FACTOR,this.compoundGravityRangeFactor=a.DEFAULT_COMPOUND_GRAVITY_RANGE_FACTOR,this.displacementThresholdPerNode=3*a.DEFAULT_EDGE_LENGTH/100,this.coolingFactor=a.DEFAULT_COOLING_FACTOR_INCREMENTAL,this.initialCoolingFactor=a.DEFAULT_COOLING_FACTOR_INCREMENTAL,this.totalDisplacement=0,this.oldTotalDisplacement=0,this.maxIterations=a.MAX_ITERATIONS}o(h,"FDLayout"),h.prototype=Object.create(i.prototype);for(var d in i)h[d]=i[d];h.prototype.initParameters=function(){i.prototype.initParameters.call(this,arguments),this.totalIterations=0,this.notAnimatedIterations=0,this.useFRGridVariant=a.DEFAULT_USE_SMART_REPULSION_RANGE_CALCULATION,this.grid=[]},h.prototype.calcIdealEdgeLengths=function(){for(var f,p,m,g,y,v,x=this.getGraphManager().getAllEdges(),b=0;b<x.length;b++)f=x[b],f.idealLength=this.idealEdgeLength,f.isInterGraph&&(m=f.getSource(),g=f.getTarget(),y=f.getSourceInLca().getEstimatedSize(),v=f.getTargetInLca().getEstimatedSize(),this.useSmartIdealEdgeLengthCalculation&&(f.idealLength+=y+v-2*s.SIMPLE_NODE_SIZE),p=f.getLca().getInclusionTreeDepth(),f.idealLength+=a.DEFAULT_EDGE_LENGTH*a.PER_LEVEL_IDEAL_EDGE_LENGTH_FACTOR*(m.getInclusionTreeDepth()+g.getInclusionTreeDepth()-2*p))},h.prototype.initSpringEmbedder=function(){var f=this.getAllNodes().length;this.incremental?(f>a.ADAPTATION_LOWER_NODE_LIMIT&&(this.coolingFactor=Math.max(this.coolingFactor*a.COOLING_ADAPTATION_FACTOR,this.coolingFactor-(f-a.ADAPTATION_LOWER_NODE_LIMIT)/(a.ADAPTATION_UPPER_NODE_LIMIT-a.ADAPTATION_LOWER_NODE_LIMIT)*this.coolingFactor*(1-a.COOLING_ADAPTATION_FACTOR))),this.maxNodeDisplacement=a.MAX_NODE_DISPLACEMENT_INCREMENTAL):(f>a.ADAPTATION_LOWER_NODE_LIMIT?this.coolingFactor=Math.max(a.COOLING_ADAPTATION_FACTOR,1-(f-a.ADAPTATION_LOWER_NODE_LIMIT)/(a.ADAPTATION_UPPER_NODE_LIMIT-a.ADAPTATION_LOWER_NODE_LIMIT)*(1-a.COOLING_ADAPTATION_FACTOR)):this.coolingFactor=1,this.initialCoolingFactor=this.coolingFactor,this.maxNodeDisplacement=a.MAX_NODE_DISPLACEMENT),this.maxIterations=Math.max(this.getAllNodes().length*5,this.maxIterations),this.totalDisplacementThreshold=this.displacementThresholdPerNode*this.getAllNodes().length,this.repulsionRange=this.calcRepulsionRange()},h.prototype.calcSpringForces=function(){for(var f=this.getAllEdges(),p,m=0;m<f.length;m++)p=f[m],this.calcSpringForce(p,p.idealLength)},h.prototype.calcRepulsionForces=function(){var f=arguments.length>0&&arguments[0]!==void 0?arguments[0]:!0,p=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1,m,g,y,v,x=this.getAllNodes(),b;if(this.useFRGridVariant)for(this.totalIterations%a.GRID_CALCULATION_CHECK_PERIOD==1&&f&&this.updateGrid(),b=new Set,m=0;m<x.length;m++)y=x[m],this.calculateRepulsionForceOfANode(y,b,f,p),b.add(y);else for(m=0;m<x.length;m++)for(y=x[m],g=m+1;g<x.length;g++)v=x[g],y.getOwner()==v.getOwner()&&this.calcRepulsionForce(y,v)},h.prototype.calcGravitationalForces=function(){for(var f,p=this.getAllNodesToApplyGravitation(),m=0;m<p.length;m++)f=p[m],this.calcGravitationalForce(f)},h.prototype.moveNodes=function(){for(var f=this.getAllNodes(),p,m=0;m<f.length;m++)p=f[m],p.move()},h.prototype.calcSpringForce=function(f,p){var m=f.getSource(),g=f.getTarget(),y,v,x,b;if(this.uniformLeafNodeSizes&&m.getChild()==null&&g.getChild()==null)f.updateLengthSimple();else if(f.updateLength(),f.isOverlapingSourceAndTarget)return;y=f.getLength(),y!=0&&(v=this.springConstant*(y-p),x=v*(f.lengthX/y),b=v*(f.lengthY/y),m.springForceX+=x,m.springForceY+=b,g.springForceX-=x,g.springForceY-=b)},h.prototype.calcRepulsionForce=function(f,p){var m=f.getRect(),g=p.getRect(),y=new Array(2),v=new Array(4),x,b,T,k,C,w,S;if(m.intersects(g)){l.calcSeparationAmount(m,g,y,a.DEFAULT_EDGE_LENGTH/2),w=2*y[0],S=2*y[1];var R=f.noOfChildren*p.noOfChildren/(f.noOfChildren+p.noOfChildren);f.repulsionForceX-=R*w,f.repulsionForceY-=R*S,p.repulsionForceX+=R*w,p.repulsionForceY+=R*S}else this.uniformLeafNodeSizes&&f.getChild()==null&&p.getChild()==null?(x=g.getCenterX()-m.getCenterX(),b=g.getCenterY()-m.getCenterY()):(l.getIntersection(m,g,v),x=v[2]-v[0],b=v[3]-v[1]),Math.abs(x)<a.MIN_REPULSION_DIST&&(x=u.sign(x)*a.MIN_REPULSION_DIST),Math.abs(b)<a.MIN_REPULSION_DIST&&(b=u.sign(b)*a.MIN_REPULSION_DIST),T=x*x+b*b,k=Math.sqrt(T),C=this.repulsionConstant*f.noOfChildren*p.noOfChildren/T,w=C*x/k,S=C*b/k,f.repulsionForceX-=w,f.repulsionForceY-=S,p.repulsionForceX+=w,p.repulsionForceY+=S},h.prototype.calcGravitationalForce=function(f){var p,m,g,y,v,x,b,T;p=f.getOwner(),m=(p.getRight()+p.getLeft())/2,g=(p.getTop()+p.getBottom())/2,y=f.getCenterX()-m,v=f.getCenterY()-g,x=Math.abs(y)+f.getWidth()/2,b=Math.abs(v)+f.getHeight()/2,f.getOwner()==this.graphManager.getRoot()?(T=p.getEstimatedSize()*this.gravityRangeFactor,(x>T||b>T)&&(f.gravitationForceX=-this.gravityConstant*y,f.gravitationForceY=-this.gravityConstant*v)):(T=p.getEstimatedSize()*this.compoundGravityRangeFactor,(x>T||b>T)&&(f.gravitationForceX=-this.gravityConstant*y*this.compoundGravityConstant,f.gravitationForceY=-this.gravityConstant*v*this.compoundGravityConstant))},h.prototype.isConverged=function(){var f,p=!1;return this.totalIterations>this.maxIterations/3&&(p=Math.abs(this.totalDisplacement-this.oldTotalDisplacement)<2),f=this.totalDisplacement<this.totalDisplacementThreshold,this.oldTotalDisplacement=this.totalDisplacement,f||p},h.prototype.animate=function(){this.animationDuringLayout&&!this.isSubLayout&&(this.notAnimatedIterations==this.animationPeriod?(this.update(),this.notAnimatedIterations=0):this.notAnimatedIterations++)},h.prototype.calcNoOfChildrenForAllNodes=function(){for(var f,p=this.graphManager.getAllNodes(),m=0;m<p.length;m++)f=p[m],f.noOfChildren=f.getNoOfChildren()},h.prototype.calcGrid=function(f){var p=0,m=0;p=parseInt(Math.ceil((f.getRight()-f.getLeft())/this.repulsionRange)),m=parseInt(Math.ceil((f.getBottom()-f.getTop())/this.repulsionRange));for(var g=new Array(p),y=0;y<p;y++)g[y]=new Array(m);for(var y=0;y<p;y++)for(var v=0;v<m;v++)g[y][v]=new Array;return g},h.prototype.addNodeToGrid=function(f,p,m){var g=0,y=0,v=0,x=0;g=parseInt(Math.floor((f.getRect().x-p)/this.repulsionRange)),y=parseInt(Math.floor((f.getRect().width+f.getRect().x-p)/this.repulsionRange)),v=parseInt(Math.floor((f.getRect().y-m)/this.repulsionRange)),x=parseInt(Math.floor((f.getRect().height+f.getRect().y-m)/this.repulsionRange));for(var b=g;b<=y;b++)for(var T=v;T<=x;T++)this.grid[b][T].push(f),f.setGridCoordinates(g,y,v,x)},h.prototype.updateGrid=function(){var f,p,m=this.getAllNodes();for(this.grid=this.calcGrid(this.graphManager.getRoot()),f=0;f<m.length;f++)p=m[f],this.addNodeToGrid(p,this.graphManager.getRoot().getLeft(),this.graphManager.getRoot().getTop())},h.prototype.calculateRepulsionForceOfANode=function(f,p,m,g){if(this.totalIterations%a.GRID_CALCULATION_CHECK_PERIOD==1&&m||g){var y=new Set;f.surrounding=new Array;for(var v,x=this.grid,b=f.startX-1;b<f.finishX+2;b++)for(var T=f.startY-1;T<f.finishY+2;T++)if(!(b<0||T<0||b>=x.length||T>=x[0].length)){for(var k=0;k<x[b][T].length;k++)if(v=x[b][T][k],!(f.getOwner()!=v.getOwner()||f==v)&&!p.has(v)&&!y.has(v)){var C=Math.abs(f.getCenterX()-v.getCenterX())-(f.getWidth()/2+v.getWidth()/2),w=Math.abs(f.getCenterY()-v.getCenterY())-(f.getHeight()/2+v.getHeight()/2);C<=this.repulsionRange&&w<=this.repulsionRange&&y.add(v)}}f.surrounding=[].concat(n(y))}for(b=0;b<f.surrounding.length;b++)this.calcRepulsionForce(f,f.surrounding[b])},h.prototype.calcRepulsionRange=function(){return 0},e.exports=h}),(function(e,t,r){"use strict";var n=r(1),i=r(7);function a(l,u,h){n.call(this,l,u,h),this.idealLength=i.DEFAULT_EDGE_LENGTH}o(a,"FDLayoutEdge"),a.prototype=Object.create(n.prototype);for(var s in n)a[s]=n[s];e.exports=a}),(function(e,t,r){"use strict";var n=r(3);function i(s,l,u,h){n.call(this,s,l,u,h),this.springForceX=0,this.springForceY=0,this.repulsionForceX=0,this.repulsionForceY=0,this.gravitationForceX=0,this.gravitationForceY=0,this.displacementX=0,this.displacementY=0,this.startX=0,this.finishX=0,this.startY=0,this.finishY=0,this.surrounding=[]}o(i,"FDLayoutNode"),i.prototype=Object.create(n.prototype);for(var a in n)i[a]=n[a];i.prototype.setGridCoordinates=function(s,l,u,h){this.startX=s,this.finishX=l,this.startY=u,this.finishY=h},e.exports=i}),(function(e,t,r){"use strict";function n(i,a){this.width=0,this.height=0,i!==null&&a!==null&&(this.height=a,this.width=i)}o(n,"DimensionD"),n.prototype.getWidth=function(){return this.width},n.prototype.setWidth=function(i){this.width=i},n.prototype.getHeight=function(){return this.height},n.prototype.setHeight=function(i){this.height=i},e.exports=n}),(function(e,t,r){"use strict";var n=r(14);function i(){this.map={},this.keys=[]}o(i,"HashMap"),i.prototype.put=function(a,s){var l=n.createID(a);this.contains(l)||(this.map[l]=s,this.keys.push(a))},i.prototype.contains=function(a){var s=n.createID(a);return this.map[a]!=null},i.prototype.get=function(a){var s=n.createID(a);return this.map[s]},i.prototype.keySet=function(){return this.keys},e.exports=i}),(function(e,t,r){"use strict";var n=r(14);function i(){this.set={}}o(i,"HashSet"),i.prototype.add=function(a){var s=n.createID(a);this.contains(s)||(this.set[s]=a)},i.prototype.remove=function(a){delete this.set[n.createID(a)]},i.prototype.clear=function(){this.set={}},i.prototype.contains=function(a){return this.set[n.createID(a)]==a},i.prototype.isEmpty=function(){return this.size()===0},i.prototype.size=function(){return Object.keys(this.set).length},i.prototype.addAllTo=function(a){for(var s=Object.keys(this.set),l=s.length,u=0;u<l;u++)a.push(this.set[s[u]])},i.prototype.size=function(){return Object.keys(this.set).length},i.prototype.addAll=function(a){for(var s=a.length,l=0;l<s;l++){var u=a[l];this.add(u)}},e.exports=i}),(function(e,t,r){"use strict";var n=(function(){function l(u,h){for(var d=0;d<h.length;d++){var f=h[d];f.enumerable=f.enumerable||!1,f.configurable=!0,"value"in f&&(f.writable=!0),Object.defineProperty(u,f.key,f)}}return o(l,"defineProperties"),function(u,h,d){return h&&l(u.prototype,h),d&&l(u,d),u}})();function i(l,u){if(!(l instanceof u))throw new TypeError("Cannot call a class as a function")}o(i,"_classCallCheck");var a=r(11),s=(function(){function l(u,h){i(this,l),(h!==null||h!==void 0)&&(this.compareFunction=this._defaultCompareFunction);var d=void 0;u instanceof a?d=u.size():d=u.length,this._quicksort(u,0,d-1)}return o(l,"Quicksort"),n(l,[{key:"_quicksort",value:o(function(h,d,f){if(d<f){var p=this._partition(h,d,f);this._quicksort(h,d,p),this._quicksort(h,p+1,f)}},"_quicksort")},{key:"_partition",value:o(function(h,d,f){for(var p=this._get(h,d),m=d,g=f;;){for(;this.compareFunction(p,this._get(h,g));)g--;for(;this.compareFunction(this._get(h,m),p);)m++;if(m<g)this._swap(h,m,g),m++,g--;else return g}},"_partition")},{key:"_get",value:o(function(h,d){return h instanceof a?h.get_object_at(d):h[d]},"_get")},{key:"_set",value:o(function(h,d,f){h instanceof a?h.set_object_at(d,f):h[d]=f},"_set")},{key:"_swap",value:o(function(h,d,f){var p=this._get(h,d);this._set(h,d,this._get(h,f)),this._set(h,f,p)},"_swap")},{key:"_defaultCompareFunction",value:o(function(h,d){return d>h},"_defaultCompareFunction")}]),l})();e.exports=s}),(function(e,t,r){"use strict";var n=(function(){function s(l,u){for(var h=0;h<u.length;h++){var d=u[h];d.enumerable=d.enumerable||!1,d.configurable=!0,"value"in d&&(d.writable=!0),Object.defineProperty(l,d.key,d)}}return o(s,"defineProperties"),function(l,u,h){return u&&s(l.prototype,u),h&&s(l,h),l}})();function i(s,l){if(!(s instanceof l))throw new TypeError("Cannot call a class as a function")}o(i,"_classCallCheck");var a=(function(){function s(l,u){var h=arguments.length>2&&arguments[2]!==void 0?arguments[2]:1,d=arguments.length>3&&arguments[3]!==void 0?arguments[3]:-1,f=arguments.length>4&&arguments[4]!==void 0?arguments[4]:-1;i(this,s),this.sequence1=l,this.sequence2=u,this.match_score=h,this.mismatch_penalty=d,this.gap_penalty=f,this.iMax=l.length+1,this.jMax=u.length+1,this.grid=new Array(this.iMax);for(var p=0;p<this.iMax;p++){this.grid[p]=new Array(this.jMax);for(var m=0;m<this.jMax;m++)this.grid[p][m]=0}this.tracebackGrid=new Array(this.iMax);for(var g=0;g<this.iMax;g++){this.tracebackGrid[g]=new Array(this.jMax);for(var y=0;y<this.jMax;y++)this.tracebackGrid[g][y]=[null,null,null]}this.alignments=[],this.score=-1,this.computeGrids()}return o(s,"NeedlemanWunsch"),n(s,[{key:"getScore",value:o(function(){return this.score},"getScore")},{key:"getAlignments",value:o(function(){return this.alignments},"getAlignments")},{key:"computeGrids",value:o(function(){for(var u=1;u<this.jMax;u++)this.grid[0][u]=this.grid[0][u-1]+this.gap_penalty,this.tracebackGrid[0][u]=[!1,!1,!0];for(var h=1;h<this.iMax;h++)this.grid[h][0]=this.grid[h-1][0]+this.gap_penalty,this.tracebackGrid[h][0]=[!1,!0,!1];for(var d=1;d<this.iMax;d++)for(var f=1;f<this.jMax;f++){var p=void 0;this.sequence1[d-1]===this.sequence2[f-1]?p=this.grid[d-1][f-1]+this.match_score:p=this.grid[d-1][f-1]+this.mismatch_penalty;var m=this.grid[d-1][f]+this.gap_penalty,g=this.grid[d][f-1]+this.gap_penalty,y=[p,m,g],v=this.arrayAllMaxIndexes(y);this.grid[d][f]=y[v[0]],this.tracebackGrid[d][f]=[v.includes(0),v.includes(1),v.includes(2)]}this.score=this.grid[this.iMax-1][this.jMax-1]},"computeGrids")},{key:"alignmentTraceback",value:o(function(){var u=[];for(u.push({pos:[this.sequence1.length,this.sequence2.length],seq1:"",seq2:""});u[0];){var h=u[0],d=this.tracebackGrid[h.pos[0]][h.pos[1]];d[0]&&u.push({pos:[h.pos[0]-1,h.pos[1]-1],seq1:this.sequence1[h.pos[0]-1]+h.seq1,seq2:this.sequence2[h.pos[1]-1]+h.seq2}),d[1]&&u.push({pos:[h.pos[0]-1,h.pos[1]],seq1:this.sequence1[h.pos[0]-1]+h.seq1,seq2:"-"+h.seq2}),d[2]&&u.push({pos:[h.pos[0],h.pos[1]-1],seq1:"-"+h.seq1,seq2:this.sequence2[h.pos[1]-1]+h.seq2}),h.pos[0]===0&&h.pos[1]===0&&this.alignments.push({sequence1:h.seq1,sequence2:h.seq2}),u.shift()}return this.alignments},"alignmentTraceback")},{key:"getAllIndexes",value:o(function(u,h){for(var d=[],f=-1;(f=u.indexOf(h,f+1))!==-1;)d.push(f);return d},"getAllIndexes")},{key:"arrayAllMaxIndexes",value:o(function(u){return this.getAllIndexes(u,Math.max.apply(null,u))},"arrayAllMaxIndexes")}]),s})();e.exports=a}),(function(e,t,r){"use strict";var n=o(function(){},"layoutBase");n.FDLayout=r(18),n.FDLayoutConstants=r(7),n.FDLayoutEdge=r(19),n.FDLayoutNode=r(20),n.DimensionD=r(21),n.HashMap=r(22),n.HashSet=r(23),n.IGeometry=r(8),n.IMath=r(9),n.Integer=r(10),n.Point=r(12),n.PointD=r(4),n.RandomSeed=r(16),n.RectangleD=r(13),n.Transform=r(17),n.UniqueIDGeneretor=r(14),n.Quicksort=r(24),n.LinkedList=r(11),n.LGraphObject=r(2),n.LGraph=r(5),n.LEdge=r(1),n.LGraphManager=r(6),n.LNode=r(3),n.Layout=r(15),n.LayoutConstants=r(0),n.NeedlemanWunsch=r(25),e.exports=n}),(function(e,t,r){"use strict";function n(){this.listeners=[]}o(n,"Emitter");var i=n.prototype;i.addListener=function(a,s){this.listeners.push({event:a,callback:s})},i.removeListener=function(a,s){for(var l=this.listeners.length;l>=0;l--){var u=this.listeners[l];u.event===a&&u.callback===s&&this.listeners.splice(l,1)}},i.emit=function(a,s){for(var l=0;l<this.listeners.length;l++){var u=this.listeners[l];a===u.event&&u.callback(s)}},e.exports=n})])})});var HF=Io((iC,qF)=>{"use strict";o((function(t,r){typeof iC=="object"&&typeof qF=="object"?qF.exports=r(WF()):typeof define=="function"&&define.amd?define(["layout-base"],r):typeof iC=="object"?iC.coseBase=r(WF()):t.coseBase=r(t.layoutBase)}),"webpackUniversalModuleDefinition")(iC,function(e){return(function(t){var r={};function n(i){if(r[i])return r[i].exports;var a=r[i]={i,l:!1,exports:{}};return t[i].call(a.exports,a,a.exports,n),a.l=!0,a.exports}return o(n,"__webpack_require__"),n.m=t,n.c=r,n.i=function(i){return i},n.d=function(i,a,s){n.o(i,a)||Object.defineProperty(i,a,{configurable:!1,enumerable:!0,get:s})},n.n=function(i){var a=i&&i.__esModule?o(function(){return i.default},"getDefault"):o(function(){return i},"getModuleExports");return n.d(a,"a",a),a},n.o=function(i,a){return Object.prototype.hasOwnProperty.call(i,a)},n.p="",n(n.s=7)})([(function(t,r){t.exports=e}),(function(t,r,n){"use strict";var i=n(0).FDLayoutConstants;function a(){}o(a,"CoSEConstants");for(var s in i)a[s]=i[s];a.DEFAULT_USE_MULTI_LEVEL_SCALING=!1,a.DEFAULT_RADIAL_SEPARATION=i.DEFAULT_EDGE_LENGTH,a.DEFAULT_COMPONENT_SEPERATION=60,a.TILE=!0,a.TILING_PADDING_VERTICAL=10,a.TILING_PADDING_HORIZONTAL=10,a.TREE_REDUCTION_ON_INCREMENTAL=!1,t.exports=a}),(function(t,r,n){"use strict";var i=n(0).FDLayoutEdge;function a(l,u,h){i.call(this,l,u,h)}o(a,"CoSEEdge"),a.prototype=Object.create(i.prototype);for(var s in i)a[s]=i[s];t.exports=a}),(function(t,r,n){"use strict";var i=n(0).LGraph;function a(l,u,h){i.call(this,l,u,h)}o(a,"CoSEGraph"),a.prototype=Object.create(i.prototype);for(var s in i)a[s]=i[s];t.exports=a}),(function(t,r,n){"use strict";var i=n(0).LGraphManager;function a(l){i.call(this,l)}o(a,"CoSEGraphManager"),a.prototype=Object.create(i.prototype);for(var s in i)a[s]=i[s];t.exports=a}),(function(t,r,n){"use strict";var i=n(0).FDLayoutNode,a=n(0).IMath;function s(u,h,d,f){i.call(this,u,h,d,f)}o(s,"CoSENode"),s.prototype=Object.create(i.prototype);for(var l in i)s[l]=i[l];s.prototype.move=function(){var u=this.graphManager.getLayout();this.displacementX=u.coolingFactor*(this.springForceX+this.repulsionForceX+this.gravitationForceX)/this.noOfChildren,this.displacementY=u.coolingFactor*(this.springForceY+this.repulsionForceY+this.gravitationForceY)/this.noOfChildren,Math.abs(this.displacementX)>u.coolingFactor*u.maxNodeDisplacement&&(this.displacementX=u.coolingFactor*u.maxNodeDisplacement*a.sign(this.displacementX)),Math.abs(this.displacementY)>u.coolingFactor*u.maxNodeDisplacement&&(this.displacementY=u.coolingFactor*u.maxNodeDisplacement*a.sign(this.displacementY)),this.child==null?this.moveBy(this.displacementX,this.displacementY):this.child.getNodes().length==0?this.moveBy(this.displacementX,this.displacementY):this.propogateDisplacementToChildren(this.displacementX,this.displacementY),u.totalDisplacement+=Math.abs(this.displacementX)+Math.abs(this.displacementY),this.springForceX=0,this.springForceY=0,this.repulsionForceX=0,this.repulsionForceY=0,this.gravitationForceX=0,this.gravitationForceY=0,this.displacementX=0,this.displacementY=0},s.prototype.propogateDisplacementToChildren=function(u,h){for(var d=this.getChild().getNodes(),f,p=0;p<d.length;p++)f=d[p],f.getChild()==null?(f.moveBy(u,h),f.displacementX+=u,f.displacementY+=h):f.propogateDisplacementToChildren(u,h)},s.prototype.setPred1=function(u){this.pred1=u},s.prototype.getPred1=function(){return pred1},s.prototype.getPred2=function(){return pred2},s.prototype.setNext=function(u){this.next=u},s.prototype.getNext=function(){return next},s.prototype.setProcessed=function(u){this.processed=u},s.prototype.isProcessed=function(){return processed},t.exports=s}),(function(t,r,n){"use strict";var i=n(0).FDLayout,a=n(4),s=n(3),l=n(5),u=n(2),h=n(1),d=n(0).FDLayoutConstants,f=n(0).LayoutConstants,p=n(0).Point,m=n(0).PointD,g=n(0).Layout,y=n(0).Integer,v=n(0).IGeometry,x=n(0).LGraph,b=n(0).Transform;function T(){i.call(this),this.toBeTiled={}}o(T,"CoSELayout"),T.prototype=Object.create(i.prototype);for(var k in i)T[k]=i[k];T.prototype.newGraphManager=function(){var C=new a(this);return this.graphManager=C,C},T.prototype.newGraph=function(C){return new s(null,this.graphManager,C)},T.prototype.newNode=function(C){return new l(this.graphManager,C)},T.prototype.newEdge=function(C){return new u(null,null,C)},T.prototype.initParameters=function(){i.prototype.initParameters.call(this,arguments),this.isSubLayout||(h.DEFAULT_EDGE_LENGTH<10?this.idealEdgeLength=10:this.idealEdgeLength=h.DEFAULT_EDGE_LENGTH,this.useSmartIdealEdgeLengthCalculation=h.DEFAULT_USE_SMART_IDEAL_EDGE_LENGTH_CALCULATION,this.springConstant=d.DEFAULT_SPRING_STRENGTH,this.repulsionConstant=d.DEFAULT_REPULSION_STRENGTH,this.gravityConstant=d.DEFAULT_GRAVITY_STRENGTH,this.compoundGravityConstant=d.DEFAULT_COMPOUND_GRAVITY_STRENGTH,this.gravityRangeFactor=d.DEFAULT_GRAVITY_RANGE_FACTOR,this.compoundGravityRangeFactor=d.DEFAULT_COMPOUND_GRAVITY_RANGE_FACTOR,this.prunedNodesAll=[],this.growTreeIterations=0,this.afterGrowthIterations=0,this.isTreeGrowing=!1,this.isGrowthFinished=!1,this.coolingCycle=0,this.maxCoolingCycle=this.maxIterations/d.CONVERGENCE_CHECK_PERIOD,this.finalTemperature=d.CONVERGENCE_CHECK_PERIOD/this.maxIterations,this.coolingAdjuster=1)},T.prototype.layout=function(){var C=f.DEFAULT_CREATE_BENDS_AS_NEEDED;return C&&(this.createBendpoints(),this.graphManager.resetAllEdges()),this.level=0,this.classicLayout()},T.prototype.classicLayout=function(){if(this.nodesWithGravity=this.calculateNodesToApplyGravitationTo(),this.graphManager.setAllNodesToApplyGravitation(this.nodesWithGravity),this.calcNoOfChildrenForAllNodes(),this.graphManager.calcLowestCommonAncestors(),this.graphManager.calcInclusionTreeDepths(),this.graphManager.getRoot().calcEstimatedSize(),this.calcIdealEdgeLengths(),this.incremental){if(h.TREE_REDUCTION_ON_INCREMENTAL){this.reduceTrees(),this.graphManager.resetAllNodesToApplyGravitation();var w=new Set(this.getAllNodes()),S=this.nodesWithGravity.filter(function(N){return w.has(N)});this.graphManager.setAllNodesToApplyGravitation(S)}}else{var C=this.getFlatForest();if(C.length>0)this.positionNodesRadially(C);else{this.reduceTrees(),this.graphManager.resetAllNodesToApplyGravitation();var w=new Set(this.getAllNodes()),S=this.nodesWithGravity.filter(function(R){return w.has(R)});this.graphManager.setAllNodesToApplyGravitation(S),this.positionNodesRandomly()}}return this.initSpringEmbedder(),this.runSpringEmbedder(),!0},T.prototype.tick=function(){if(this.totalIterations++,this.totalIterations===this.maxIterations&&!this.isTreeGrowing&&!this.isGrowthFinished)if(this.prunedNodesAll.length>0)this.isTreeGrowing=!0;else return!0;if(this.totalIterations%d.CONVERGENCE_CHECK_PERIOD==0&&!this.isTreeGrowing&&!this.isGrowthFinished){if(this.isConverged())if(this.prunedNodesAll.length>0)this.isTreeGrowing=!0;else return!0;this.coolingCycle++,this.layoutQuality==0?this.coolingAdjuster=this.coolingCycle:this.layoutQuality==1&&(this.coolingAdjuster=this.coolingCycle/3),this.coolingFactor=Math.max(this.initialCoolingFactor-Math.pow(this.coolingCycle,Math.log(100*(this.initialCoolingFactor-this.finalTemperature))/Math.log(this.maxCoolingCycle))/100*this.coolingAdjuster,this.finalTemperature),this.animationPeriod=Math.ceil(this.initialAnimationPeriod*Math.sqrt(this.coolingFactor))}if(this.isTreeGrowing){if(this.growTreeIterations%10==0)if(this.prunedNodesAll.length>0){this.graphManager.updateBounds(),this.updateGrid(),this.growTree(this.prunedNodesAll),this.graphManager.resetAllNodesToApplyGravitation();var C=new Set(this.getAllNodes()),w=this.nodesWithGravity.filter(function(L){return C.has(L)});this.graphManager.setAllNodesToApplyGravitation(w),this.graphManager.updateBounds(),this.updateGrid(),this.coolingFactor=d.DEFAULT_COOLING_FACTOR_INCREMENTAL}else this.isTreeGrowing=!1,this.isGrowthFinished=!0;this.growTreeIterations++}if(this.isGrowthFinished){if(this.isConverged())return!0;this.afterGrowthIterations%10==0&&(this.graphManager.updateBounds(),this.updateGrid()),this.coolingFactor=d.DEFAULT_COOLING_FACTOR_INCREMENTAL*((100-this.afterGrowthIterations)/100),this.afterGrowthIterations++}var S=!this.isTreeGrowing&&!this.isGrowthFinished,R=this.growTreeIterations%10==1&&this.isTreeGrowing||this.afterGrowthIterations%10==1&&this.isGrowthFinished;return this.totalDisplacement=0,this.graphManager.updateBounds(),this.calcSpringForces(),this.calcRepulsionForces(S,R),this.calcGravitationalForces(),this.moveNodes(),this.animate(),!1},T.prototype.getPositionsData=function(){for(var C=this.graphManager.getAllNodes(),w={},S=0;S<C.length;S++){var R=C[S].rect,L=C[S].id;w[L]={id:L,x:R.getCenterX(),y:R.getCenterY(),w:R.width,h:R.height}}return w},T.prototype.runSpringEmbedder=function(){this.initialAnimationPeriod=25,this.animationPeriod=this.initialAnimationPeriod;var C=!1;if(d.ANIMATE==="during")this.emit("layoutstarted");else{for(;!C;)C=this.tick();this.graphManager.updateBounds()}},T.prototype.calculateNodesToApplyGravitationTo=function(){var C=[],w,S=this.graphManager.getGraphs(),R=S.length,L;for(L=0;L<R;L++)w=S[L],w.updateConnected(),w.isConnected||(C=C.concat(w.getNodes()));return C},T.prototype.createBendpoints=function(){var C=[];C=C.concat(this.graphManager.getAllEdges());var w=new Set,S;for(S=0;S<C.length;S++){var R=C[S];if(!w.has(R)){var L=R.getSource(),N=R.getTarget();if(L==N)R.getBendpoints().push(new m),R.getBendpoints().push(new m),this.createDummyNodesForBendpoints(R),w.add(R);else{var I=[];if(I=I.concat(L.getEdgeListToNode(N)),I=I.concat(N.getEdgeListToNode(L)),!w.has(I[0])){if(I.length>1){var _;for(_=0;_<I.length;_++){var A=I[_];A.getBendpoints().push(new m),this.createDummyNodesForBendpoints(A)}}I.forEach(function(M){w.add(M)})}}}if(w.size==C.length)break}},T.prototype.positionNodesRadially=function(C){for(var w=new p(0,0),S=Math.ceil(Math.sqrt(C.length)),R=0,L=0,N=0,I=new m(0,0),_=0;_<C.length;_++){_%S==0&&(N=0,L=R,_!=0&&(L+=h.DEFAULT_COMPONENT_SEPERATION),R=0);var A=C[_],M=g.findCenterOfTree(A);w.x=N,w.y=L,I=T.radialLayout(A,M,w),I.y>R&&(R=Math.floor(I.y)),N=Math.floor(I.x+h.DEFAULT_COMPONENT_SEPERATION)}this.transform(new m(f.WORLD_CENTER_X-I.x/2,f.WORLD_CENTER_Y-I.y/2))},T.radialLayout=function(C,w,S){var R=Math.max(this.maxDiagonalInTree(C),h.DEFAULT_RADIAL_SEPARATION);T.branchRadialLayout(w,null,0,359,0,R);var L=x.calculateBounds(C),N=new b;N.setDeviceOrgX(L.getMinX()),N.setDeviceOrgY(L.getMinY()),N.setWorldOrgX(S.x),N.setWorldOrgY(S.y);for(var I=0;I<C.length;I++){var _=C[I];_.transform(N)}var A=new m(L.getMaxX(),L.getMaxY());return N.inverseTransformPoint(A)},T.branchRadialLayout=function(C,w,S,R,L,N){var I=(R-S+1)/2;I<0&&(I+=180);var _=(I+S)%360,A=_*v.TWO_PI/360,M=Math.cos(A),D=L*Math.cos(A),P=L*Math.sin(A);C.setCenter(D,P);var B=[];B=B.concat(C.getEdges());var O=B.length;w!=null&&O--;for(var $=0,V=B.length,G,z=C.getEdgesBetween(w);z.length>1;){var W=z[0];z.splice(0,1);var H=B.indexOf(W);H>=0&&B.splice(H,1),V--,O--}w!=null?G=(B.indexOf(z[0])+1)%V:G=0;for(var j=Math.abs(R-S)/O,Q=G;$!=O;Q=++Q%V){var U=B[Q].getOtherEnd(C);if(U!=w){var oe=(S+$*j)%360,te=(oe+j)%360;T.branchRadialLayout(U,C,oe,te,L+N,N),$++}}},T.maxDiagonalInTree=function(C){for(var w=y.MIN_VALUE,S=0;S<C.length;S++){var R=C[S],L=R.getDiagonal();L>w&&(w=L)}return w},T.prototype.calcRepulsionRange=function(){return 2*(this.level+1)*this.idealEdgeLength},T.prototype.groupZeroDegreeMembers=function(){var C=this,w={};this.memberGroups={},this.idToDummyNode={};for(var S=[],R=this.graphManager.getAllNodes(),L=0;L<R.length;L++){var N=R[L],I=N.getParent();this.getNodeDegreeWithChildren(N)===0&&(I.id==null||!this.getToBeTiled(I))&&S.push(N)}for(var L=0;L<S.length;L++){var N=S[L],_=N.getParent().id;typeof w[_]>"u"&&(w[_]=[]),w[_]=w[_].concat(N)}Object.keys(w).forEach(function(A){if(w[A].length>1){var M="DummyCompound_"+A;C.memberGroups[M]=w[A];var D=w[A][0].getParent(),P=new l(C.graphManager);P.id=M,P.paddingLeft=D.paddingLeft||0,P.paddingRight=D.paddingRight||0,P.paddingBottom=D.paddingBottom||0,P.paddingTop=D.paddingTop||0,C.idToDummyNode[M]=P;var B=C.getGraphManager().add(C.newGraph(),P),O=D.getChild();O.add(P);for(var $=0;$<w[A].length;$++){var V=w[A][$];O.remove(V),B.add(V)}}})},T.prototype.clearCompounds=function(){var C={},w={};this.performDFSOnCompounds();for(var S=0;S<this.compoundOrder.length;S++)w[this.compoundOrder[S].id]=this.compoundOrder[S],C[this.compoundOrder[S].id]=[].concat(this.compoundOrder[S].getChild().getNodes()),this.graphManager.remove(this.compoundOrder[S].getChild()),this.compoundOrder[S].child=null;this.graphManager.resetAllNodes(),this.tileCompoundMembers(C,w)},T.prototype.clearZeroDegreeMembers=function(){var C=this,w=this.tiledZeroDegreePack=[];Object.keys(this.memberGroups).forEach(function(S){var R=C.idToDummyNode[S];w[S]=C.tileNodes(C.memberGroups[S],R.paddingLeft+R.paddingRight),R.rect.width=w[S].width,R.rect.height=w[S].height})},T.prototype.repopulateCompounds=function(){for(var C=this.compoundOrder.length-1;C>=0;C--){var w=this.compoundOrder[C],S=w.id,R=w.paddingLeft,L=w.paddingTop;this.adjustLocations(this.tiledMemberPack[S],w.rect.x,w.rect.y,R,L)}},T.prototype.repopulateZeroDegreeMembers=function(){var C=this,w=this.tiledZeroDegreePack;Object.keys(w).forEach(function(S){var R=C.idToDummyNode[S],L=R.paddingLeft,N=R.paddingTop;C.adjustLocations(w[S],R.rect.x,R.rect.y,L,N)})},T.prototype.getToBeTiled=function(C){var w=C.id;if(this.toBeTiled[w]!=null)return this.toBeTiled[w];var S=C.getChild();if(S==null)return this.toBeTiled[w]=!1,!1;for(var R=S.getNodes(),L=0;L<R.length;L++){var N=R[L];if(this.getNodeDegree(N)>0)return this.toBeTiled[w]=!1,!1;if(N.getChild()==null){this.toBeTiled[N.id]=!1;continue}if(!this.getToBeTiled(N))return this.toBeTiled[w]=!1,!1}return this.toBeTiled[w]=!0,!0},T.prototype.getNodeDegree=function(C){for(var w=C.id,S=C.getEdges(),R=0,L=0;L<S.length;L++){var N=S[L];N.getSource().id!==N.getTarget().id&&(R=R+1)}return R},T.prototype.getNodeDegreeWithChildren=function(C){var w=this.getNodeDegree(C);if(C.getChild()==null)return w;for(var S=C.getChild().getNodes(),R=0;R<S.length;R++){var L=S[R];w+=this.getNodeDegreeWithChildren(L)}return w},T.prototype.performDFSOnCompounds=function(){this.compoundOrder=[],this.fillCompexOrderByDFS(this.graphManager.getRoot().getNodes())},T.prototype.fillCompexOrderByDFS=function(C){for(var w=0;w<C.length;w++){var S=C[w];S.getChild()!=null&&this.fillCompexOrderByDFS(S.getChild().getNodes()),this.getToBeTiled(S)&&this.compoundOrder.push(S)}},T.prototype.adjustLocations=function(C,w,S,R,L){w+=R,S+=L;for(var N=w,I=0;I<C.rows.length;I++){var _=C.rows[I];w=N;for(var A=0,M=0;M<_.length;M++){var D=_[M];D.rect.x=w,D.rect.y=S,w+=D.rect.width+C.horizontalPadding,D.rect.height>A&&(A=D.rect.height)}S+=A+C.verticalPadding}},T.prototype.tileCompoundMembers=function(C,w){var S=this;this.tiledMemberPack=[],Object.keys(C).forEach(function(R){var L=w[R];S.tiledMemberPack[R]=S.tileNodes(C[R],L.paddingLeft+L.paddingRight),L.rect.width=S.tiledMemberPack[R].width,L.rect.height=S.tiledMemberPack[R].height})},T.prototype.tileNodes=function(C,w){var S=h.TILING_PADDING_VERTICAL,R=h.TILING_PADDING_HORIZONTAL,L={rows:[],rowWidth:[],rowHeight:[],width:0,height:w,verticalPadding:S,horizontalPadding:R};C.sort(function(_,A){return _.rect.width*_.rect.height>A.rect.width*A.rect.height?-1:_.rect.width*_.rect.height<A.rect.width*A.rect.height?1:0});for(var N=0;N<C.length;N++){var I=C[N];L.rows.length==0?this.insertNodeToRow(L,I,0,w):this.canAddHorizontal(L,I.rect.width,I.rect.height)?this.insertNodeToRow(L,I,this.getShortestRowIndex(L),w):this.insertNodeToRow(L,I,L.rows.length,w),this.shiftToLastRow(L)}return L},T.prototype.insertNodeToRow=function(C,w,S,R){var L=R;if(S==C.rows.length){var N=[];C.rows.push(N),C.rowWidth.push(L),C.rowHeight.push(0)}var I=C.rowWidth[S]+w.rect.width;C.rows[S].length>0&&(I+=C.horizontalPadding),C.rowWidth[S]=I,C.width<I&&(C.width=I);var _=w.rect.height;S>0&&(_+=C.verticalPadding);var A=0;_>C.rowHeight[S]&&(A=C.rowHeight[S],C.rowHeight[S]=_,A=C.rowHeight[S]-A),C.height+=A,C.rows[S].push(w)},T.prototype.getShortestRowIndex=function(C){for(var w=-1,S=Number.MAX_VALUE,R=0;R<C.rows.length;R++)C.rowWidth[R]<S&&(w=R,S=C.rowWidth[R]);return w},T.prototype.getLongestRowIndex=function(C){for(var w=-1,S=Number.MIN_VALUE,R=0;R<C.rows.length;R++)C.rowWidth[R]>S&&(w=R,S=C.rowWidth[R]);return w},T.prototype.canAddHorizontal=function(C,w,S){var R=this.getShortestRowIndex(C);if(R<0)return!0;var L=C.rowWidth[R];if(L+C.horizontalPadding+w<=C.width)return!0;var N=0;C.rowHeight[R]<S&&R>0&&(N=S+C.verticalPadding-C.rowHeight[R]);var I;C.width-L>=w+C.horizontalPadding?I=(C.height+N)/(L+w+C.horizontalPadding):I=(C.height+N)/C.width,N=S+C.verticalPadding;var _;return C.width<w?_=(C.height+N)/w:_=(C.height+N)/C.width,_<1&&(_=1/_),I<1&&(I=1/I),I<_},T.prototype.shiftToLastRow=function(C){var w=this.getLongestRowIndex(C),S=C.rowWidth.length-1,R=C.rows[w],L=R[R.length-1],N=L.width+C.horizontalPadding;if(C.width-C.rowWidth[S]>N&&w!=S){R.splice(-1,1),C.rows[S].push(L),C.rowWidth[w]=C.rowWidth[w]-N,C.rowWidth[S]=C.rowWidth[S]+N,C.width=C.rowWidth[instance.getLongestRowIndex(C)];for(var I=Number.MIN_VALUE,_=0;_<R.length;_++)R[_].height>I&&(I=R[_].height);w>0&&(I+=C.verticalPadding);var A=C.rowHeight[w]+C.rowHeight[S];C.rowHeight[w]=I,C.rowHeight[S]<L.height+C.verticalPadding&&(C.rowHeight[S]=L.height+C.verticalPadding);var M=C.rowHeight[w]+C.rowHeight[S];C.height+=M-A,this.shiftToLastRow(C)}},T.prototype.tilingPreLayout=function(){h.TILE&&(this.groupZeroDegreeMembers(),this.clearCompounds(),this.clearZeroDegreeMembers())},T.prototype.tilingPostLayout=function(){h.TILE&&(this.repopulateZeroDegreeMembers(),this.repopulateCompounds())},T.prototype.reduceTrees=function(){for(var C=[],w=!0,S;w;){var R=this.graphManager.getAllNodes(),L=[];w=!1;for(var N=0;N<R.length;N++)S=R[N],S.getEdges().length==1&&!S.getEdges()[0].isInterGraph&&S.getChild()==null&&(L.push([S,S.getEdges()[0],S.getOwner()]),w=!0);if(w==!0){for(var I=[],_=0;_<L.length;_++)L[_][0].getEdges().length==1&&(I.push(L[_]),L[_][0].getOwner().remove(L[_][0]));C.push(I),this.graphManager.resetAllNodes(),this.graphManager.resetAllEdges()}}this.prunedNodesAll=C},T.prototype.growTree=function(C){for(var w=C.length,S=C[w-1],R,L=0;L<S.length;L++)R=S[L],this.findPlaceforPrunedNode(R),R[2].add(R[0]),R[2].add(R[1],R[1].source,R[1].target);C.splice(C.length-1,1),this.graphManager.resetAllNodes(),this.graphManager.resetAllEdges()},T.prototype.findPlaceforPrunedNode=function(C){var w,S,R=C[0];R==C[1].source?S=C[1].target:S=C[1].source;var L=S.startX,N=S.finishX,I=S.startY,_=S.finishY,A=0,M=0,D=0,P=0,B=[A,D,M,P];if(I>0)for(var O=L;O<=N;O++)B[0]+=this.grid[O][I-1].length+this.grid[O][I].length-1;if(N<this.grid.length-1)for(var O=I;O<=_;O++)B[1]+=this.grid[N+1][O].length+this.grid[N][O].length-1;if(_<this.grid[0].length-1)for(var O=L;O<=N;O++)B[2]+=this.grid[O][_+1].length+this.grid[O][_].length-1;if(L>0)for(var O=I;O<=_;O++)B[3]+=this.grid[L-1][O].length+this.grid[L][O].length-1;for(var $=y.MAX_VALUE,V,G,z=0;z<B.length;z++)B[z]<$?($=B[z],V=1,G=z):B[z]==$&&V++;if(V==3&&$==0)B[0]==0&&B[1]==0&&B[2]==0?w=1:B[0]==0&&B[1]==0&&B[3]==0?w=0:B[0]==0&&B[2]==0&&B[3]==0?w=3:B[1]==0&&B[2]==0&&B[3]==0&&(w=2);else if(V==2&&$==0){var W=Math.floor(Math.random()*2);B[0]==0&&B[1]==0?W==0?w=0:w=1:B[0]==0&&B[2]==0?W==0?w=0:w=2:B[0]==0&&B[3]==0?W==0?w=0:w=3:B[1]==0&&B[2]==0?W==0?w=1:w=2:B[1]==0&&B[3]==0?W==0?w=1:w=3:W==0?w=2:w=3}else if(V==4&&$==0){var W=Math.floor(Math.random()*4);w=W}else w=G;w==0?R.setCenter(S.getCenterX(),S.getCenterY()-S.getHeight()/2-d.DEFAULT_EDGE_LENGTH-R.getHeight()/2):w==1?R.setCenter(S.getCenterX()+S.getWidth()/2+d.DEFAULT_EDGE_LENGTH+R.getWidth()/2,S.getCenterY()):w==2?R.setCenter(S.getCenterX(),S.getCenterY()+S.getHeight()/2+d.DEFAULT_EDGE_LENGTH+R.getHeight()/2):R.setCenter(S.getCenterX()-S.getWidth()/2-d.DEFAULT_EDGE_LENGTH-R.getWidth()/2,S.getCenterY())},t.exports=T}),(function(t,r,n){"use strict";var i={};i.layoutBase=n(0),i.CoSEConstants=n(1),i.CoSEEdge=n(2),i.CoSEGraph=n(3),i.CoSEGraphManager=n(4),i.CoSELayout=n(6),i.CoSENode=n(5),t.exports=i})])})});var Z2e=Io((aC,UF)=>{"use strict";o((function(t,r){typeof aC=="object"&&typeof UF=="object"?UF.exports=r(HF()):typeof define=="function"&&define.amd?define(["cose-base"],r):typeof aC=="object"?aC.cytoscapeCoseBilkent=r(HF()):t.cytoscapeCoseBilkent=r(t.coseBase)}),"webpackUniversalModuleDefinition")(aC,function(e){return(function(t){var r={};function n(i){if(r[i])return r[i].exports;var a=r[i]={i,l:!1,exports:{}};return t[i].call(a.exports,a,a.exports,n),a.l=!0,a.exports}return o(n,"__webpack_require__"),n.m=t,n.c=r,n.i=function(i){return i},n.d=function(i,a,s){n.o(i,a)||Object.defineProperty(i,a,{configurable:!1,enumerable:!0,get:s})},n.n=function(i){var a=i&&i.__esModule?o(function(){return i.default},"getDefault"):o(function(){return i},"getModuleExports");return n.d(a,"a",a),a},n.o=function(i,a){return Object.prototype.hasOwnProperty.call(i,a)},n.p="",n(n.s=1)})([(function(t,r){t.exports=e}),(function(t,r,n){"use strict";var i=n(0).layoutBase.LayoutConstants,a=n(0).layoutBase.FDLayoutConstants,s=n(0).CoSEConstants,l=n(0).CoSELayout,u=n(0).CoSENode,h=n(0).layoutBase.PointD,d=n(0).layoutBase.DimensionD,f={ready:o(function(){},"ready"),stop:o(function(){},"stop"),quality:"default",nodeDimensionsIncludeLabels:!1,refresh:30,fit:!0,padding:10,randomize:!0,nodeRepulsion:4500,idealEdgeLength:50,edgeElasticity:.45,nestingFactor:.1,gravity:.25,numIter:2500,tile:!0,animate:"end",animationDuration:500,tilingPaddingVertical:10,tilingPaddingHorizontal:10,gravityRangeCompound:1.5,gravityCompound:1,gravityRange:3.8,initialEnergyOnIncremental:.5};function p(v,x){var b={};for(var T in v)b[T]=v[T];for(var T in x)b[T]=x[T];return b}o(p,"extend");function m(v){this.options=p(f,v),g(this.options)}o(m,"_CoSELayout");var g=o(function(x){x.nodeRepulsion!=null&&(s.DEFAULT_REPULSION_STRENGTH=a.DEFAULT_REPULSION_STRENGTH=x.nodeRepulsion),x.idealEdgeLength!=null&&(s.DEFAULT_EDGE_LENGTH=a.DEFAULT_EDGE_LENGTH=x.idealEdgeLength),x.edgeElasticity!=null&&(s.DEFAULT_SPRING_STRENGTH=a.DEFAULT_SPRING_STRENGTH=x.edgeElasticity),x.nestingFactor!=null&&(s.PER_LEVEL_IDEAL_EDGE_LENGTH_FACTOR=a.PER_LEVEL_IDEAL_EDGE_LENGTH_FACTOR=x.nestingFactor),x.gravity!=null&&(s.DEFAULT_GRAVITY_STRENGTH=a.DEFAULT_GRAVITY_STRENGTH=x.gravity),x.numIter!=null&&(s.MAX_ITERATIONS=a.MAX_ITERATIONS=x.numIter),x.gravityRange!=null&&(s.DEFAULT_GRAVITY_RANGE_FACTOR=a.DEFAULT_GRAVITY_RANGE_FACTOR=x.gravityRange),x.gravityCompound!=null&&(s.DEFAULT_COMPOUND_GRAVITY_STRENGTH=a.DEFAULT_COMPOUND_GRAVITY_STRENGTH=x.gravityCompound),x.gravityRangeCompound!=null&&(s.DEFAULT_COMPOUND_GRAVITY_RANGE_FACTOR=a.DEFAULT_COMPOUND_GRAVITY_RANGE_FACTOR=x.gravityRangeCompound),x.initialEnergyOnIncremental!=null&&(s.DEFAULT_COOLING_FACTOR_INCREMENTAL=a.DEFAULT_COOLING_FACTOR_INCREMENTAL=x.initialEnergyOnIncremental),x.quality=="draft"?i.QUALITY=0:x.quality=="proof"?i.QUALITY=2:i.QUALITY=1,s.NODE_DIMENSIONS_INCLUDE_LABELS=a.NODE_DIMENSIONS_INCLUDE_LABELS=i.NODE_DIMENSIONS_INCLUDE_LABELS=x.nodeDimensionsIncludeLabels,s.DEFAULT_INCREMENTAL=a.DEFAULT_INCREMENTAL=i.DEFAULT_INCREMENTAL=!x.randomize,s.ANIMATE=a.ANIMATE=i.ANIMATE=x.animate,s.TILE=x.tile,s.TILING_PADDING_VERTICAL=typeof x.tilingPaddingVertical=="function"?x.tilingPaddingVertical.call():x.tilingPaddingVertical,s.TILING_PADDING_HORIZONTAL=typeof x.tilingPaddingHorizontal=="function"?x.tilingPaddingHorizontal.call():x.tilingPaddingHorizontal},"getUserOptions");m.prototype.run=function(){var v,x,b=this.options,T=this.idToLNode={},k=this.layout=new l,C=this;C.stopped=!1,this.cy=this.options.cy,this.cy.trigger({type:"layoutstart",layout:this});var w=k.newGraphManager();this.gm=w;var S=this.options.eles.nodes(),R=this.options.eles.edges();this.root=w.addRoot(),this.processChildrenList(this.root,this.getTopMostNodes(S),k);for(var L=0;L<R.length;L++){var N=R[L],I=this.idToLNode[N.data("source")],_=this.idToLNode[N.data("target")];if(I!==_&&I.getEdgesBetween(_).length==0){var A=w.add(k.newEdge(),I,_);A.id=N.id()}}var M=o(function(B,O){typeof B=="number"&&(B=O);var $=B.data("id"),V=C.idToLNode[$];return{x:V.getRect().getCenterX(),y:V.getRect().getCenterY()}},"getPositions"),D=o(function P(){for(var B=o(function(){b.fit&&b.cy.fit(b.eles,b.padding),v||(v=!0,C.cy.one("layoutready",b.ready),C.cy.trigger({type:"layoutready",layout:C}))},"afterReposition"),O=C.options.refresh,$,V=0;V<O&&!$;V++)$=C.stopped||C.layout.tick();if($){k.checkLayoutSuccess()&&!k.isSubLayout&&k.doPostLayout(),k.tilingPostLayout&&k.tilingPostLayout(),k.isLayoutFinished=!0,C.options.eles.nodes().positions(M),B(),C.cy.one("layoutstop",C.options.stop),C.cy.trigger({type:"layoutstop",layout:C}),x&&cancelAnimationFrame(x),v=!1;return}var G=C.layout.getPositionsData();b.eles.nodes().positions(function(z,W){if(typeof z=="number"&&(z=W),!z.isParent()){for(var H=z.id(),j=G[H],Q=z;j==null&&(j=G[Q.data("parent")]||G["DummyCompound_"+Q.data("parent")],G[H]=j,Q=Q.parent()[0],Q!=null););return j!=null?{x:j.x,y:j.y}:{x:z.position("x"),y:z.position("y")}}}),B(),x=requestAnimationFrame(P)},"iterateAnimated");return k.addListener("layoutstarted",function(){C.options.animate==="during"&&(x=requestAnimationFrame(D))}),k.runLayout(),this.options.animate!=="during"&&(C.options.eles.nodes().not(":parent").layoutPositions(C,C.options,M),v=!1),this},m.prototype.getTopMostNodes=function(v){for(var x={},b=0;b<v.length;b++)x[v[b].id()]=!0;var T=v.filter(function(k,C){typeof k=="number"&&(k=C);for(var w=k.parent()[0];w!=null;){if(x[w.id()])return!1;w=w.parent()[0]}return!0});return T},m.prototype.processChildrenList=function(v,x,b){for(var T=x.length,k=0;k<T;k++){var C=x[k],w=C.children(),S,R=C.layoutDimensions({nodeDimensionsIncludeLabels:this.options.nodeDimensionsIncludeLabels});if(C.outerWidth()!=null&&C.outerHeight()!=null?S=v.add(new u(b.graphManager,new h(C.position("x")-R.w/2,C.position("y")-R.h/2),new d(parseFloat(R.w),parseFloat(R.h)))):S=v.add(new u(this.graphManager)),S.id=C.data("id"),S.paddingLeft=parseInt(C.css("padding")),S.paddingTop=parseInt(C.css("padding")),S.paddingRight=parseInt(C.css("padding")),S.paddingBottom=parseInt(C.css("padding")),this.options.nodeDimensionsIncludeLabels&&C.isParent()){var L=C.boundingBox({includeLabels:!0,includeNodes:!1}).w,N=C.boundingBox({includeLabels:!0,includeNodes:!1}).h,I=C.css("text-halign");S.labelWidth=L,S.labelHeight=N,S.labelPos=I}if(this.idToLNode[C.data("id")]=S,isNaN(S.rect.x)&&(S.rect.x=0),isNaN(S.rect.y)&&(S.rect.y=0),w!=null&&w.length>0){var _;_=b.getGraphManager().add(b.newGraph(),S),this.processChildrenList(_,w,b)}}},m.prototype.stop=function(){return this.stopped=!0,this};var y=o(function(x){x("layout","cose-bilkent",m)},"register");typeof cytoscape<"u"&&y(cytoscape),t.exports=y})])})});function Hgt(e,t){e.forEach(r=>{let n={id:r.id,labelText:r.label,height:r.height,width:r.width,padding:r.padding??0};Object.keys(r).forEach(i=>{["id","label","height","width","padding","x","y"].includes(i)||(n[i]=r[i])}),t.add({group:"nodes",data:n,position:{x:r.x??0,y:r.y??0}})})}function Ugt(e,t){e.forEach(r=>{let n={id:r.id,source:r.start,target:r.end};Object.keys(r).forEach(i=>{["id","start","end"].includes(i)||(n[i]=r[i])}),t.add({group:"edges",data:n})})}function J2e(e){return new Promise(t=>{let r=et("body").append("div").attr("id","cy").attr("style","display:none"),n=El({container:document.getElementById("cy"),style:[{selector:"edge",style:{"curve-style":"bezier"}}]});r.remove(),Hgt(e.nodes,n),Ugt(e.edges,n),n.nodes().forEach(function(a){a.layoutDimensions=()=>{let s=a.data();return{w:s.width,h:s.height}}});let i={name:"cose-bilkent",quality:"proof",styleEnabled:!1,animate:!1};n.layout(i).run(),n.ready(a=>{Z.info("Cytoscape ready",a),t(n)})})}function eTe(e){return e.nodes().map(t=>{let r=t.data(),n=t.position(),i={id:r.id,x:n.x,y:n.y};return Object.keys(r).forEach(a=>{a!=="id"&&(i[a]=r[a])}),i})}function tTe(e){return e.edges().map(t=>{let r=t.data(),n=t._private.rscratch,i={id:r.id,source:r.source,target:r.target,startX:n.startX,startY:n.startY,midX:n.midX,midY:n.midY,endX:n.endX,endY:n.endY};return Object.keys(r).forEach(a=>{["id","source","target"].includes(a)||(i[a]=r[a])}),i})}var Q2e,rTe=F(()=>{"use strict";GF();Q2e=Xs(Z2e(),1);$r();vt();El.use(Q2e.default);o(Hgt,"addNodes");o(Ugt,"addEdges");o(J2e,"createCytoscapeInstance");o(eTe,"extractPositionedNodes");o(tTe,"extractPositionedEdges")});async function nTe(e,t){Z.debug("Starting cose-bilkent layout algorithm");try{Ygt(e);let r=await J2e(e),n=eTe(r),i=tTe(r);return Z.debug(`Layout completed: ${n.length} nodes, ${i.length} edges`),{nodes:n,edges:i}}catch(r){throw Z.error("Error in cose-bilkent layout algorithm:",r),r}}function Ygt(e){if(!e)throw new Error("Layout data is required");if(!e.config)throw new Error("Configuration is required in layout data");if(!e.rootNode)throw new Error("Root node is required");if(!e.nodes||!Array.isArray(e.nodes))throw new Error("No nodes found in layout data");if(!Array.isArray(e.edges))throw new Error("Edges array is required in layout data");return!0}var iTe=F(()=>{"use strict";vt();rTe();o(nTe,"executeCoseBilkentLayout");o(Ygt,"validateLayoutData")});var aTe,sTe=F(()=>{"use strict";iTe();aTe=o(async(e,t,{insertCluster:r,insertEdge:n,insertEdgeLabel:i,insertMarkers:a,insertNode:s,log:l,positionEdgeLabel:u},{algorithm:h})=>{let d={},f={},p=t.select("g");a(p,e.markers,e.type,e.diagramId);let m=p.insert("g").attr("class","subgraphs"),g=p.insert("g").attr("class","edgePaths"),y=p.insert("g").attr("class","edgeLabels"),v=p.insert("g").attr("class","nodes");l.debug("Inserting nodes into DOM for dimension calculation"),await Promise.all(e.nodes.map(async T=>{if(T.isGroup){let k={...T};f[T.id]=k,d[T.id]=k,await r(m,T)}else{let k={...T};d[T.id]=k;let C=await s(v,T,{config:e.config,dir:e.direction||"TB"}),w=C.node().getBBox();k.width=w.width,k.height=w.height,k.domId=C,l.debug(`Node ${T.id} dimensions: ${w.width}x${w.height}`)}})),l.debug("Running cose-bilkent layout algorithm");let x={...e,nodes:e.nodes.map(T=>{let k=d[T.id];return{...T,width:k.width,height:k.height}})},b=await nTe(x,e.config);l.debug("Positioning nodes based on layout results"),b.nodes.forEach(T=>{let k=d[T.id];k?.domId&&(k.domId.attr("transform",`translate(${T.x}, ${T.y})`),k.x=T.x,k.y=T.y,l.debug(`Positioned node ${k.id} at center (${T.x}, ${T.y})`))}),b.edges.forEach(T=>{let k=e.edges.find(C=>C.id===T.id);k&&(k.points=[{x:T.startX,y:T.startY},{x:T.midX,y:T.midY},{x:T.endX,y:T.endY}])}),l.debug("Inserting and positioning edges"),await Promise.all(e.edges.map(async T=>{let k=await i(y,T),C=d[T.start??""],w=d[T.end??""];if(C&&w){let S=b.edges.find(R=>R.id===T.id);if(S){l.debug("APA01 positionedEdge",S);let R={...T},L=n(g,R,f,e.type,C,w,e.diagramId);u(R,L)}else{let R={...T,points:[{x:C.x||0,y:C.y||0},{x:w.x||0,y:w.y||0}]},L=n(g,R,f,e.type,C,w,e.diagramId);u(R,L)}}})),l.debug("Cose-bilkent rendering completed")},"render")});var oTe={};ir(oTe,{render:()=>jgt});var jgt,lTe=F(()=>{"use strict";sTe();jgt=aTe});var sC,YF,Xgt,Al,Su,Qf=F(()=>{"use strict";Qce();vt();sC={},YF=o(e=>{for(let t of e)sC[t.name]=t},"registerLayoutLoaders"),Xgt=o(()=>{YF([{name:"dagre",loader:o(async()=>await Promise.resolve().then(()=>(C0e(),T0e)),"loader")},{name:"swimlane",loader:o(async()=>await Promise.resolve().then(()=>(L1e(),_1e)),"loader")},{name:"cose-bilkent",loader:o(async()=>await Promise.resolve().then(()=>(lTe(),oTe)),"loader")}])},"registerDefaultLayoutLoaders");Xgt();Al=o(async(e,t,r)=>{if(!(e.layoutAlgorithm in sC))throw new Error(`Unknown layout algorithm: ${e.layoutAlgorithm}`);if(e.diagramId)for(let f of e.nodes){let p=f.domId||f.id;f.domId=`${e.diagramId}-${p}`}let n=sC[e.layoutAlgorithm],i=await n.loader(),{theme:a,themeVariables:s}=e.config,{useGradient:l,gradientStart:u,gradientStop:h}=s,d=t.attr("id");if(t.append("defs").append("filter").attr("id",`${d}-drop-shadow`).attr("height","130%").attr("width","130%").append("feDropShadow").attr("dx","4").attr("dy","4").attr("stdDeviation",0).attr("flood-opacity","0.06").attr("flood-color",`${a?.includes("dark")?"#FFFFFF":"#000000"}`),t.append("defs").append("filter").attr("id",`${d}-drop-shadow-small`).attr("height","150%").attr("width","150%").append("feDropShadow").attr("dx","2").attr("dy","2").attr("stdDeviation",0).attr("flood-opacity","0.06").attr("flood-color",`${a?.includes("dark")?"#FFFFFF":"#000000"}`),l){let f=t.append("linearGradient").attr("id",t.attr("id")+"-gradient").attr("gradientUnits","objectBoundingBox").attr("x1","0%").attr("y1","0%").attr("x2","100%").attr("y2","0%");f.append("svg:stop").attr("offset","0%").attr("stop-color",u).attr("stop-opacity",1),f.append("svg:stop").attr("offset","100%").attr("stop-color",h).attr("stop-opacity",1)}return i.render(e,t,Zce,{algorithm:n.algorithm},r)},"render"),Su=o((e="",{fallback:t="dagre"}={})=>{if(e in sC)return e;if(t in sC)return Z.warn(`Layout algorithm ${e} is not registered. Using ${t} as fallback.`),t;throw new Error(`Both layout algorithms ${e} and ${t} are not registered.`)},"getRegisteredLayoutAlgorithm")});var vo,Kgt,Zgt,Jf=F(()=>{"use strict";$n();vt();vo=o((e,t,r,n)=>{e.attr("class",r);let{width:i,height:a,x:s,y:l}=Kgt(e,t);Wr(e,a,i,n);let u=Zgt(s,l,i,a,t);e.attr("viewBox",u),Z.debug(`viewBox configured: ${u} with padding: ${t}`)},"setupViewPortForSVG"),Kgt=o((e,t)=>{let r=e.node()?.getBBox()||{width:0,height:0,x:0,y:0};return{width:r.width+t*2,height:r.height+t*2,x:r.x,y:r.y}},"calculateDimensionsWithPadding"),Zgt=o((e,t,r,n,i)=>`${e-i} ${t-i} ${r} ${n}`,"createViewBox")});var Qgt,Jgt,cTe,uTe=F(()=>{"use strict";Xt();vt();Am();Qf();Jf();Qt();Qgt=o(function(e,t){return t.db.getClasses()},"getClasses"),Jgt=o(async function(e,t,r,n,i){Z.info("REF0:"),Z.info("Drawing state diagram (v2)",t);let{securityLevel:a,flowchart:s,layout:l}=Ae();n.db.setDiagramId(t),Z.debug("Before getData: ");let u=n.db.getData();Z.debug("Data: ",u);let h=pl(t,a),d=n.db.getDirection();u.type=n.type,u.layoutAlgorithm=Su(l),u.layoutAlgorithm==="dagre"&&l==="elk"&&Z.warn("flowchart-elk was moved to an external package in Mermaid v11. Please refer [release notes](https://github.com/mermaid-js/mermaid/releases/tag/v11.0.0) for more details. This diagram will be rendered using `dagre` layout as a fallback."),u.direction=d,u.nodeSpacing=s?.nodeSpacing||50,u.rankSpacing=s?.rankSpacing||50,u.markers=["point","circle","cross"],u.diagramId=t,Z.debug("REF1:",u),await Al(u,h,i);let f=u.config.flowchart?.diagramPadding??8;Zt.insertTitle(h,"flowchartTitleText",s?.titleTopMargin||0,n.db.getDiagramTitle()),vo(h,f,"flowchart",s?.useMaxWidth||!1)},"draw"),cTe={getClasses:Qgt,draw:Jgt}});var jF,XF,hTe=F(()=>{"use strict";jF=(function(){var e=o(function(kt,Ct,Ot,Ft){for(Ot=Ot||{},Ft=kt.length;Ft--;Ot[kt[Ft]]=Ct);return Ot},"o"),t=[1,4],r=[1,3],n=[1,5],i=[1,8,9,10,11,27,34,36,38,44,60,84,85,86,87,88,89,102,105,106,109,111,114,115,116,121,122,123,124,125],a=[2,2],s=[1,13],l=[1,14],u=[1,15],h=[1,16],d=[1,23],f=[1,25],p=[1,26],m=[1,27],g=[1,50],y=[1,49],v=[1,29],x=[1,30],b=[1,31],T=[1,32],k=[1,33],C=[1,45],w=[1,47],S=[1,43],R=[1,48],L=[1,44],N=[1,51],I=[1,46],_=[1,52],A=[1,53],M=[1,34],D=[1,35],P=[1,36],B=[1,37],O=[1,38],$=[1,58],V=[1,8,9,10,11,27,32,34,36,38,44,60,84,85,86,87,88,89,102,105,106,109,111,114,115,116,121,122,123,124,125],G=[1,62],z=[1,61],W=[1,63],H=[8,9,11,75,77,78],j=[1,79],Q=[1,92],U=[1,97],oe=[1,96],te=[1,93],le=[1,89],ie=[1,95],ae=[1,91],Re=[1,98],be=[1,94],Pe=[1,99],Ge=[1,90],Oe=[8,9,10,11,40,75,77,78],ue=[8,9,10,11,40,46,75,77,78],ye=[8,9,10,11,29,40,44,46,48,50,52,54,56,58,60,63,65,67,68,70,75,77,78,89,102,105,106,109,111,114,115,116],ke=[8,9,11,44,60,75,77,78,89,102,105,106,109,111,114,115,116],ce=[44,60,89,102,105,106,109,111,114,115,116],re=[1,122],J=[1,123],se=[1,125],ge=[1,124],Te=[44,60,62,74,89,102,105,106,109,111,114,115,116],we=[1,134],Me=[1,148],ve=[1,149],ne=[1,150],q=[1,151],he=[1,136],X=[1,138],fe=[1,142],K=[1,143],qe=[1,144],_e=[1,145],Be=[1,146],Ne=[1,147],He=[1,152],$e=[1,153],Xe=[1,132],Fe=[1,133],Ke=[1,140],xe=[1,135],mt=[1,139],Le=[1,137],ft=[8,9,10,11,27,32,34,36,38,44,60,84,85,86,87,88,89,102,105,106,109,111,114,115,116,121,122,123,124,125],wt=[1,155],zt=[1,157],St=[8,9,11],At=[8,9,10,11,14,44,60,89,105,106,109,111,114,115,116],bt=[1,177],me=[1,173],lt=[1,174],gt=[1,178],Ze=[1,175],Ee=[1,176],tt=[77,116,119],at=[8,9,10,11,12,14,27,29,32,44,60,75,84,85,86,87,88,89,90,105,109,111,114,115,116],ot=[10,106],Wt=[31,49,51,53,55,57,62,64,66,67,69,71,116,117,118],Bt=[1,248],qt=[1,246],vr=[1,250],Tt=[1,244],De=[1,245],it=[1,247],We=[1,249],rt=[1,251],yt=[1,269],Yt=[8,9,11,106],Ht=[8,9,10,11,60,84,105,106,109,110,111,112],pr={trace:o(function(){},"trace"),yy:{},symbols_:{error:2,start:3,graphConfig:4,document:5,line:6,statement:7,SEMI:8,NEWLINE:9,SPACE:10,EOF:11,GRAPH:12,NODIR:13,DIR:14,FirstStmtSeparator:15,ending:16,endToken:17,spaceList:18,spaceListNewline:19,vertexStatement:20,separator:21,styleStatement:22,linkStyleStatement:23,classDefStatement:24,classStatement:25,clickStatement:26,subgraph:27,textNoTags:28,SQS:29,text:30,SQE:31,end:32,direction:33,acc_title:34,acc_title_value:35,acc_descr:36,acc_descr_value:37,acc_descr_multiline_value:38,shapeData:39,SHAPE_DATA:40,link:41,node:42,styledVertex:43,AMP:44,vertex:45,STYLE_SEPARATOR:46,idString:47,DOUBLECIRCLESTART:48,DOUBLECIRCLEEND:49,PS:50,PE:51,"(-":52,"-)":53,STADIUMSTART:54,STADIUMEND:55,SUBROUTINESTART:56,SUBROUTINEEND:57,VERTEX_WITH_PROPS_START:58,"NODE_STRING[field]":59,COLON:60,"NODE_STRING[value]":61,PIPE:62,CYLINDERSTART:63,CYLINDEREND:64,DIAMOND_START:65,DIAMOND_STOP:66,TAGEND:67,TRAPSTART:68,TRAPEND:69,INVTRAPSTART:70,INVTRAPEND:71,linkStatement:72,arrowText:73,TESTSTR:74,START_LINK:75,edgeText:76,LINK:77,LINK_ID:78,edgeTextToken:79,STR:80,MD_STR:81,textToken:82,keywords:83,STYLE:84,LINKSTYLE:85,CLASSDEF:86,CLASS:87,CLICK:88,DOWN:89,UP:90,textNoTagsToken:91,stylesOpt:92,"idString[vertex]":93,"idString[class]":94,CALLBACKNAME:95,CALLBACKARGS:96,HREF:97,LINK_TARGET:98,"STR[link]":99,"STR[tooltip]":100,alphaNum:101,DEFAULT:102,numList:103,INTERPOLATE:104,NUM:105,COMMA:106,style:107,styleComponent:108,NODE_STRING:109,UNIT:110,BRKT:111,PCT:112,idStringToken:113,MINUS:114,MULT:115,UNICODE_TEXT:116,TEXT:117,TAGSTART:118,EDGE_TEXT:119,alphaNumToken:120,direction_tb:121,direction_bt:122,direction_rl:123,direction_lr:124,direction_td:125,$accept:0,$end:1},terminals_:{2:"error",8:"SEMI",9:"NEWLINE",10:"SPACE",11:"EOF",12:"GRAPH",13:"NODIR",14:"DIR",27:"subgraph",29:"SQS",31:"SQE",32:"end",34:"acc_title",35:"acc_title_value",36:"acc_descr",37:"acc_descr_value",38:"acc_descr_multiline_value",40:"SHAPE_DATA",44:"AMP",46:"STYLE_SEPARATOR",48:"DOUBLECIRCLESTART",49:"DOUBLECIRCLEEND",50:"PS",51:"PE",52:"(-",53:"-)",54:"STADIUMSTART",55:"STADIUMEND",56:"SUBROUTINESTART",57:"SUBROUTINEEND",58:"VERTEX_WITH_PROPS_START",59:"NODE_STRING[field]",60:"COLON",61:"NODE_STRING[value]",62:"PIPE",63:"CYLINDERSTART",64:"CYLINDEREND",65:"DIAMOND_START",66:"DIAMOND_STOP",67:"TAGEND",68:"TRAPSTART",69:"TRAPEND",70:"INVTRAPSTART",71:"INVTRAPEND",74:"TESTSTR",75:"START_LINK",77:"LINK",78:"LINK_ID",80:"STR",81:"MD_STR",84:"STYLE",85:"LINKSTYLE",86:"CLASSDEF",87:"CLASS",88:"CLICK",89:"DOWN",90:"UP",93:"idString[vertex]",94:"idString[class]",95:"CALLBACKNAME",96:"CALLBACKARGS",97:"HREF",98:"LINK_TARGET",99:"STR[link]",100:"STR[tooltip]",102:"DEFAULT",104:"INTERPOLATE",105:"NUM",106:"COMMA",109:"NODE_STRING",110:"UNIT",111:"BRKT",112:"PCT",114:"MINUS",115:"MULT",116:"UNICODE_TEXT",117:"TEXT",118:"TAGSTART",119:"EDGE_TEXT",121:"direction_tb",122:"direction_bt",123:"direction_rl",124:"direction_lr",125:"direction_td"},productions_:[0,[3,2],[5,0],[5,2],[6,1],[6,1],[6,1],[6,1],[6,1],[4,2],[4,2],[4,2],[4,3],[16,2],[16,1],[17,1],[17,1],[17,1],[15,1],[15,1],[15,2],[19,2],[19,2],[19,1],[19,1],[18,2],[18,1],[7,2],[7,2],[7,2],[7,2],[7,2],[7,2],[7,9],[7,6],[7,4],[7,1],[7,2],[7,2],[7,1],[21,1],[21,1],[21,1],[39,2],[39,1],[20,4],[20,3],[20,4],[20,2],[20,2],[20,1],[42,1],[42,6],[42,5],[43,1],[43,3],[45,4],[45,4],[45,6],[45,4],[45,4],[45,4],[45,8],[45,4],[45,4],[45,4],[45,6],[45,4],[45,4],[45,4],[45,4],[45,4],[45,1],[41,2],[41,3],[41,3],[41,1],[41,3],[41,4],[76,1],[76,2],[76,1],[76,1],[72,1],[72,2],[73,3],[30,1],[30,2],[30,1],[30,1],[83,1],[83,1],[83,1],[83,1],[83,1],[83,1],[83,1],[83,1],[83,1],[83,1],[83,1],[28,1],[28,2],[28,1],[28,1],[24,5],[25,5],[26,2],[26,4],[26,3],[26,5],[26,3],[26,5],[26,5],[26,7],[26,2],[26,4],[26,2],[26,4],[26,4],[26,6],[22,5],[23,5],[23,5],[23,9],[23,9],[23,7],[23,7],[103,1],[103,3],[92,1],[92,3],[107,1],[107,2],[108,1],[108,1],[108,1],[108,1],[108,1],[108,1],[108,1],[108,1],[113,1],[113,1],[113,1],[113,1],[113,1],[113,1],[113,1],[113,1],[113,1],[113,1],[113,1],[82,1],[82,1],[82,1],[82,1],[91,1],[91,1],[91,1],[91,1],[91,1],[91,1],[91,1],[91,1],[91,1],[91,1],[91,1],[79,1],[79,1],[120,1],[120,1],[120,1],[120,1],[120,1],[120,1],[120,1],[120,1],[120,1],[120,1],[120,1],[47,1],[47,2],[101,1],[101,2],[33,1],[33,1],[33,1],[33,1],[33,1]],performAction:o(function(Ct,Ot,Ft,Rt,gr,Se,ri){var Ie=Se.length-1;switch(gr){case 2:this.$=[];break;case 3:(!Array.isArray(Se[Ie])||Se[Ie].length>0)&&Se[Ie-1].push(Se[Ie]),this.$=Se[Ie-1];break;case 4:case 183:this.$=Se[Ie];break;case 11:Rt.setDirection("TB"),this.$="TB";break;case 12:Rt.setDirection(Se[Ie-1]),this.$=Se[Ie-1];break;case 27:this.$=Se[Ie-1].nodes;break;case 28:case 29:case 30:case 31:case 32:this.$=[];break;case 33:this.$=Rt.addSubGraph(Se[Ie-6],Se[Ie-1],Se[Ie-4]);break;case 34:this.$=Rt.addSubGraph(Se[Ie-3],Se[Ie-1],Se[Ie-3]);break;case 35:this.$=Rt.addSubGraph(void 0,Se[Ie-1],void 0);break;case 37:this.$=Se[Ie].trim(),Rt.setAccTitle(this.$);break;case 38:case 39:this.$=Se[Ie].trim(),Rt.setAccDescription(this.$);break;case 43:this.$=Se[Ie-1]+Se[Ie];break;case 44:this.$=Se[Ie];break;case 45:Rt.addVertex(Se[Ie-1][Se[Ie-1].length-1],void 0,void 0,void 0,void 0,void 0,void 0,Se[Ie]),Rt.addLink(Se[Ie-3].stmt,Se[Ie-1],Se[Ie-2]),this.$={stmt:Se[Ie-1],nodes:Se[Ie-1].concat(Se[Ie-3].nodes)};break;case 46:Rt.addLink(Se[Ie-2].stmt,Se[Ie],Se[Ie-1]),this.$={stmt:Se[Ie],nodes:Se[Ie].concat(Se[Ie-2].nodes)};break;case 47:Rt.addLink(Se[Ie-3].stmt,Se[Ie-1],Se[Ie-2]),this.$={stmt:Se[Ie-1],nodes:Se[Ie-1].concat(Se[Ie-3].nodes)};break;case 48:this.$={stmt:Se[Ie-1],nodes:Se[Ie-1]};break;case 49:Rt.addVertex(Se[Ie-1][Se[Ie-1].length-1],void 0,void 0,void 0,void 0,void 0,void 0,Se[Ie]),this.$={stmt:Se[Ie-1],nodes:Se[Ie-1],shapeData:Se[Ie]};break;case 50:this.$={stmt:Se[Ie],nodes:Se[Ie]};break;case 51:this.$=[Se[Ie]];break;case 52:Rt.addVertex(Se[Ie-5][Se[Ie-5].length-1],void 0,void 0,void 0,void 0,void 0,void 0,Se[Ie-4]),this.$=Se[Ie-5].concat(Se[Ie]);break;case 53:this.$=Se[Ie-4].concat(Se[Ie]);break;case 54:this.$=Se[Ie];break;case 55:this.$=Se[Ie-2],Rt.setClass(Se[Ie-2],Se[Ie]);break;case 56:this.$=Se[Ie-3],Rt.addVertex(Se[Ie-3],Se[Ie-1],"square");break;case 57:this.$=Se[Ie-3],Rt.addVertex(Se[Ie-3],Se[Ie-1],"doublecircle");break;case 58:this.$=Se[Ie-5],Rt.addVertex(Se[Ie-5],Se[Ie-2],"circle");break;case 59:this.$=Se[Ie-3],Rt.addVertex(Se[Ie-3],Se[Ie-1],"ellipse");break;case 60:this.$=Se[Ie-3],Rt.addVertex(Se[Ie-3],Se[Ie-1],"stadium");break;case 61:this.$=Se[Ie-3],Rt.addVertex(Se[Ie-3],Se[Ie-1],"subroutine");break;case 62:this.$=Se[Ie-7],Rt.addVertex(Se[Ie-7],Se[Ie-1],"rect",void 0,void 0,void 0,Object.fromEntries([[Se[Ie-5],Se[Ie-3]]]));break;case 63:this.$=Se[Ie-3],Rt.addVertex(Se[Ie-3],Se[Ie-1],"cylinder");break;case 64:this.$=Se[Ie-3],Rt.addVertex(Se[Ie-3],Se[Ie-1],"round");break;case 65:this.$=Se[Ie-3],Rt.addVertex(Se[Ie-3],Se[Ie-1],"diamond");break;case 66:this.$=Se[Ie-5],Rt.addVertex(Se[Ie-5],Se[Ie-2],"hexagon");break;case 67:this.$=Se[Ie-3],Rt.addVertex(Se[Ie-3],Se[Ie-1],"odd");break;case 68:this.$=Se[Ie-3],Rt.addVertex(Se[Ie-3],Se[Ie-1],"trapezoid");break;case 69:this.$=Se[Ie-3],Rt.addVertex(Se[Ie-3],Se[Ie-1],"inv_trapezoid");break;case 70:this.$=Se[Ie-3],Rt.addVertex(Se[Ie-3],Se[Ie-1],"lean_right");break;case 71:this.$=Se[Ie-3],Rt.addVertex(Se[Ie-3],Se[Ie-1],"lean_left");break;case 72:this.$=Se[Ie],Rt.addVertex(Se[Ie]);break;case 73:Se[Ie-1].text=Se[Ie],this.$=Se[Ie-1];break;case 74:case 75:Se[Ie-2].text=Se[Ie-1],this.$=Se[Ie-2];break;case 76:this.$=Se[Ie];break;case 77:var Nr=Rt.destructLink(Se[Ie],Se[Ie-2]);this.$={type:Nr.type,stroke:Nr.stroke,length:Nr.length,text:Se[Ie-1]};break;case 78:var Nr=Rt.destructLink(Se[Ie],Se[Ie-2]);this.$={type:Nr.type,stroke:Nr.stroke,length:Nr.length,text:Se[Ie-1],id:Se[Ie-3]};break;case 79:this.$={text:Se[Ie],type:"text"};break;case 80:this.$={text:Se[Ie-1].text+""+Se[Ie],type:Se[Ie-1].type};break;case 81:this.$={text:Se[Ie],type:"string"};break;case 82:this.$={text:Se[Ie],type:"markdown"};break;case 83:var Nr=Rt.destructLink(Se[Ie]);this.$={type:Nr.type,stroke:Nr.stroke,length:Nr.length};break;case 84:var Nr=Rt.destructLink(Se[Ie]);this.$={type:Nr.type,stroke:Nr.stroke,length:Nr.length,id:Se[Ie-1]};break;case 85:this.$=Se[Ie-1];break;case 86:this.$={text:Se[Ie],type:"text"};break;case 87:this.$={text:Se[Ie-1].text+""+Se[Ie],type:Se[Ie-1].type};break;case 88:this.$={text:Se[Ie],type:"string"};break;case 89:case 104:this.$={text:Se[Ie],type:"markdown"};break;case 101:this.$={text:Se[Ie],type:"text"};break;case 102:this.$={text:Se[Ie-1].text+""+Se[Ie],type:Se[Ie-1].type};break;case 103:this.$={text:Se[Ie],type:"text"};break;case 105:this.$=Se[Ie-4],Rt.addClass(Se[Ie-2],Se[Ie]);break;case 106:this.$=Se[Ie-4],Rt.setClass(Se[Ie-2],Se[Ie]);break;case 107:case 115:this.$=Se[Ie-1],Rt.setClickEvent(Se[Ie-1],Se[Ie]);break;case 108:case 116:this.$=Se[Ie-3],Rt.setClickEvent(Se[Ie-3],Se[Ie-2]),Rt.setTooltip(Se[Ie-3],Se[Ie]);break;case 109:this.$=Se[Ie-2],Rt.setClickEvent(Se[Ie-2],Se[Ie-1],Se[Ie]);break;case 110:this.$=Se[Ie-4],Rt.setClickEvent(Se[Ie-4],Se[Ie-3],Se[Ie-2]),Rt.setTooltip(Se[Ie-4],Se[Ie]);break;case 111:this.$=Se[Ie-2],Rt.setLink(Se[Ie-2],Se[Ie]);break;case 112:this.$=Se[Ie-4],Rt.setLink(Se[Ie-4],Se[Ie-2]),Rt.setTooltip(Se[Ie-4],Se[Ie]);break;case 113:this.$=Se[Ie-4],Rt.setLink(Se[Ie-4],Se[Ie-2],Se[Ie]);break;case 114:this.$=Se[Ie-6],Rt.setLink(Se[Ie-6],Se[Ie-4],Se[Ie]),Rt.setTooltip(Se[Ie-6],Se[Ie-2]);break;case 117:this.$=Se[Ie-1],Rt.setLink(Se[Ie-1],Se[Ie]);break;case 118:this.$=Se[Ie-3],Rt.setLink(Se[Ie-3],Se[Ie-2]),Rt.setTooltip(Se[Ie-3],Se[Ie]);break;case 119:this.$=Se[Ie-3],Rt.setLink(Se[Ie-3],Se[Ie-2],Se[Ie]);break;case 120:this.$=Se[Ie-5],Rt.setLink(Se[Ie-5],Se[Ie-4],Se[Ie]),Rt.setTooltip(Se[Ie-5],Se[Ie-2]);break;case 121:this.$=Se[Ie-4],Rt.addVertex(Se[Ie-2],void 0,void 0,Se[Ie]);break;case 122:this.$=Se[Ie-4],Rt.updateLink([Se[Ie-2]],Se[Ie]);break;case 123:this.$=Se[Ie-4],Rt.updateLink(Se[Ie-2],Se[Ie]);break;case 124:this.$=Se[Ie-8],Rt.updateLinkInterpolate([Se[Ie-6]],Se[Ie-2]),Rt.updateLink([Se[Ie-6]],Se[Ie]);break;case 125:this.$=Se[Ie-8],Rt.updateLinkInterpolate(Se[Ie-6],Se[Ie-2]),Rt.updateLink(Se[Ie-6],Se[Ie]);break;case 126:this.$=Se[Ie-6],Rt.updateLinkInterpolate([Se[Ie-4]],Se[Ie]);break;case 127:this.$=Se[Ie-6],Rt.updateLinkInterpolate(Se[Ie-4],Se[Ie]);break;case 128:case 130:this.$=[Se[Ie]];break;case 129:case 131:Se[Ie-2].push(Se[Ie]),this.$=Se[Ie-2];break;case 133:this.$=Se[Ie-1]+Se[Ie];break;case 181:this.$=Se[Ie];break;case 182:this.$=Se[Ie-1]+""+Se[Ie];break;case 184:this.$=Se[Ie-1]+""+Se[Ie];break;case 185:this.$={stmt:"dir",value:"TB"};break;case 186:this.$={stmt:"dir",value:"BT"};break;case 187:this.$={stmt:"dir",value:"RL"};break;case 188:this.$={stmt:"dir",value:"LR"};break;case 189:this.$={stmt:"dir",value:"TD"};break}},"anonymous"),table:[{3:1,4:2,9:t,10:r,12:n},{1:[3]},e(i,a,{5:6}),{4:7,9:t,10:r,12:n},{4:8,9:t,10:r,12:n},{13:[1,9],14:[1,10]},{1:[2,1],6:11,7:12,8:s,9:l,10:u,11:h,20:17,22:18,23:19,24:20,25:21,26:22,27:d,33:24,34:f,36:p,38:m,42:28,43:39,44:g,45:40,47:41,60:y,84:v,85:x,86:b,87:T,88:k,89:C,102:w,105:S,106:R,109:L,111:N,113:42,114:I,115:_,116:A,121:M,122:D,123:P,124:B,125:O},e(i,[2,9]),e(i,[2,10]),e(i,[2,11]),{8:[1,55],9:[1,56],10:$,15:54,18:57},e(V,[2,3]),e(V,[2,4]),e(V,[2,5]),e(V,[2,6]),e(V,[2,7]),e(V,[2,8]),{8:G,9:z,11:W,21:59,41:60,72:64,75:[1,65],77:[1,67],78:[1,66]},{8:G,9:z,11:W,21:68},{8:G,9:z,11:W,21:69},{8:G,9:z,11:W,21:70},{8:G,9:z,11:W,21:71},{8:G,9:z,11:W,21:72},{8:G,9:z,10:[1,73],11:W,21:74},e(V,[2,36]),{35:[1,75]},{37:[1,76]},e(V,[2,39]),e(H,[2,50],{18:77,39:78,10:$,40:j}),{10:[1,80]},{10:[1,81]},{10:[1,82]},{10:[1,83]},{14:Q,44:U,60:oe,80:[1,87],89:te,95:[1,84],97:[1,85],101:86,105:le,106:ie,109:ae,111:Re,114:be,115:Pe,116:Ge,120:88},e(V,[2,185]),e(V,[2,186]),e(V,[2,187]),e(V,[2,188]),e(V,[2,189]),e(Oe,[2,51]),e(Oe,[2,54],{46:[1,100]}),e(ue,[2,72],{113:113,29:[1,101],44:g,48:[1,102],50:[1,103],52:[1,104],54:[1,105],56:[1,106],58:[1,107],60:y,63:[1,108],65:[1,109],67:[1,110],68:[1,111],70:[1,112],89:C,102:w,105:S,106:R,109:L,111:N,114:I,115:_,116:A}),e(ye,[2,181]),e(ye,[2,142]),e(ye,[2,143]),e(ye,[2,144]),e(ye,[2,145]),e(ye,[2,146]),e(ye,[2,147]),e(ye,[2,148]),e(ye,[2,149]),e(ye,[2,150]),e(ye,[2,151]),e(ye,[2,152]),e(i,[2,12]),e(i,[2,18]),e(i,[2,19]),{9:[1,114]},e(ke,[2,26],{18:115,10:$}),e(V,[2,27]),{42:116,43:39,44:g,45:40,47:41,60:y,89:C,102:w,105:S,106:R,109:L,111:N,113:42,114:I,115:_,116:A},e(V,[2,40]),e(V,[2,41]),e(V,[2,42]),e(ce,[2,76],{73:117,62:[1,119],74:[1,118]}),{76:120,79:121,80:re,81:J,116:se,119:ge},{75:[1,126],77:[1,127]},e(Te,[2,83]),e(V,[2,28]),e(V,[2,29]),e(V,[2,30]),e(V,[2,31]),e(V,[2,32]),{10:we,12:Me,14:ve,27:ne,28:128,32:q,44:he,60:X,75:fe,80:[1,130],81:[1,131],83:141,84:K,85:qe,86:_e,87:Be,88:Ne,89:He,90:$e,91:129,105:Xe,109:Fe,111:Ke,114:xe,115:mt,116:Le},e(ft,a,{5:154}),e(V,[2,37]),e(V,[2,38]),e(H,[2,48],{44:wt}),e(H,[2,49],{18:156,10:$,40:zt}),e(Oe,[2,44]),{44:g,47:158,60:y,89:C,102:w,105:S,106:R,109:L,111:N,113:42,114:I,115:_,116:A},{102:[1,159],103:160,105:[1,161]},{44:g,47:162,60:y,89:C,102:w,105:S,106:R,109:L,111:N,113:42,114:I,115:_,116:A},{44:g,47:163,60:y,89:C,102:w,105:S,106:R,109:L,111:N,113:42,114:I,115:_,116:A},e(St,[2,107],{10:[1,164],96:[1,165]}),{80:[1,166]},e(St,[2,115],{120:168,10:[1,167],14:Q,44:U,60:oe,89:te,105:le,106:ie,109:ae,111:Re,114:be,115:Pe,116:Ge}),e(St,[2,117],{10:[1,169]}),e(At,[2,183]),e(At,[2,170]),e(At,[2,171]),e(At,[2,172]),e(At,[2,173]),e(At,[2,174]),e(At,[2,175]),e(At,[2,176]),e(At,[2,177]),e(At,[2,178]),e(At,[2,179]),e(At,[2,180]),{44:g,47:170,60:y,89:C,102:w,105:S,106:R,109:L,111:N,113:42,114:I,115:_,116:A},{30:171,67:bt,80:me,81:lt,82:172,116:gt,117:Ze,118:Ee},{30:179,67:bt,80:me,81:lt,82:172,116:gt,117:Ze,118:Ee},{30:181,50:[1,180],67:bt,80:me,81:lt,82:172,116:gt,117:Ze,118:Ee},{30:182,67:bt,80:me,81:lt,82:172,116:gt,117:Ze,118:Ee},{30:183,67:bt,80:me,81:lt,82:172,116:gt,117:Ze,118:Ee},{30:184,67:bt,80:me,81:lt,82:172,116:gt,117:Ze,118:Ee},{109:[1,185]},{30:186,67:bt,80:me,81:lt,82:172,116:gt,117:Ze,118:Ee},{30:187,65:[1,188],67:bt,80:me,81:lt,82:172,116:gt,117:Ze,118:Ee},{30:189,67:bt,80:me,81:lt,82:172,116:gt,117:Ze,118:Ee},{30:190,67:bt,80:me,81:lt,82:172,116:gt,117:Ze,118:Ee},{30:191,67:bt,80:me,81:lt,82:172,116:gt,117:Ze,118:Ee},e(ye,[2,182]),e(i,[2,20]),e(ke,[2,25]),e(H,[2,46],{39:192,18:193,10:$,40:j}),e(ce,[2,73],{10:[1,194]}),{10:[1,195]},{30:196,67:bt,80:me,81:lt,82:172,116:gt,117:Ze,118:Ee},{77:[1,197],79:198,116:se,119:ge},e(tt,[2,79]),e(tt,[2,81]),e(tt,[2,82]),e(tt,[2,168]),e(tt,[2,169]),{76:199,79:121,80:re,81:J,116:se,119:ge},e(Te,[2,84]),{8:G,9:z,10:we,11:W,12:Me,14:ve,21:201,27:ne,29:[1,200],32:q,44:he,60:X,75:fe,83:141,84:K,85:qe,86:_e,87:Be,88:Ne,89:He,90:$e,91:202,105:Xe,109:Fe,111:Ke,114:xe,115:mt,116:Le},e(at,[2,101]),e(at,[2,103]),e(at,[2,104]),e(at,[2,157]),e(at,[2,158]),e(at,[2,159]),e(at,[2,160]),e(at,[2,161]),e(at,[2,162]),e(at,[2,163]),e(at,[2,164]),e(at,[2,165]),e(at,[2,166]),e(at,[2,167]),e(at,[2,90]),e(at,[2,91]),e(at,[2,92]),e(at,[2,93]),e(at,[2,94]),e(at,[2,95]),e(at,[2,96]),e(at,[2,97]),e(at,[2,98]),e(at,[2,99]),e(at,[2,100]),{6:11,7:12,8:s,9:l,10:u,11:h,20:17,22:18,23:19,24:20,25:21,26:22,27:d,32:[1,203],33:24,34:f,36:p,38:m,42:28,43:39,44:g,45:40,47:41,60:y,84:v,85:x,86:b,87:T,88:k,89:C,102:w,105:S,106:R,109:L,111:N,113:42,114:I,115:_,116:A,121:M,122:D,123:P,124:B,125:O},{10:$,18:204},{44:[1,205]},e(Oe,[2,43]),{10:[1,206],44:g,60:y,89:C,102:w,105:S,106:R,109:L,111:N,113:113,114:I,115:_,116:A},{10:[1,207]},{10:[1,208],106:[1,209]},e(ot,[2,128]),{10:[1,210],44:g,60:y,89:C,102:w,105:S,106:R,109:L,111:N,113:113,114:I,115:_,116:A},{10:[1,211],44:g,60:y,89:C,102:w,105:S,106:R,109:L,111:N,113:113,114:I,115:_,116:A},{80:[1,212]},e(St,[2,109],{10:[1,213]}),e(St,[2,111],{10:[1,214]}),{80:[1,215]},e(At,[2,184]),{80:[1,216],98:[1,217]},e(Oe,[2,55],{113:113,44:g,60:y,89:C,102:w,105:S,106:R,109:L,111:N,114:I,115:_,116:A}),{31:[1,218],67:bt,82:219,116:gt,117:Ze,118:Ee},e(Wt,[2,86]),e(Wt,[2,88]),e(Wt,[2,89]),e(Wt,[2,153]),e(Wt,[2,154]),e(Wt,[2,155]),e(Wt,[2,156]),{49:[1,220],67:bt,82:219,116:gt,117:Ze,118:Ee},{30:221,67:bt,80:me,81:lt,82:172,116:gt,117:Ze,118:Ee},{51:[1,222],67:bt,82:219,116:gt,117:Ze,118:Ee},{53:[1,223],67:bt,82:219,116:gt,117:Ze,118:Ee},{55:[1,224],67:bt,82:219,116:gt,117:Ze,118:Ee},{57:[1,225],67:bt,82:219,116:gt,117:Ze,118:Ee},{60:[1,226]},{64:[1,227],67:bt,82:219,116:gt,117:Ze,118:Ee},{66:[1,228],67:bt,82:219,116:gt,117:Ze,118:Ee},{30:229,67:bt,80:me,81:lt,82:172,116:gt,117:Ze,118:Ee},{31:[1,230],67:bt,82:219,116:gt,117:Ze,118:Ee},{67:bt,69:[1,231],71:[1,232],82:219,116:gt,117:Ze,118:Ee},{67:bt,69:[1,234],71:[1,233],82:219,116:gt,117:Ze,118:Ee},e(H,[2,45],{18:156,10:$,40:zt}),e(H,[2,47],{44:wt}),e(ce,[2,75]),e(ce,[2,74]),{62:[1,235],67:bt,82:219,116:gt,117:Ze,118:Ee},e(ce,[2,77]),e(tt,[2,80]),{77:[1,236],79:198,116:se,119:ge},{30:237,67:bt,80:me,81:lt,82:172,116:gt,117:Ze,118:Ee},e(ft,a,{5:238}),e(at,[2,102]),e(V,[2,35]),{43:239,44:g,45:40,47:41,60:y,89:C,102:w,105:S,106:R,109:L,111:N,113:42,114:I,115:_,116:A},{10:$,18:240},{10:Bt,60:qt,84:vr,92:241,105:Tt,107:242,108:243,109:De,110:it,111:We,112:rt},{10:Bt,60:qt,84:vr,92:252,104:[1,253],105:Tt,107:242,108:243,109:De,110:it,111:We,112:rt},{10:Bt,60:qt,84:vr,92:254,104:[1,255],105:Tt,107:242,108:243,109:De,110:it,111:We,112:rt},{105:[1,256]},{10:Bt,60:qt,84:vr,92:257,105:Tt,107:242,108:243,109:De,110:it,111:We,112:rt},{44:g,47:258,60:y,89:C,102:w,105:S,106:R,109:L,111:N,113:42,114:I,115:_,116:A},e(St,[2,108]),{80:[1,259]},{80:[1,260],98:[1,261]},e(St,[2,116]),e(St,[2,118],{10:[1,262]}),e(St,[2,119]),e(ue,[2,56]),e(Wt,[2,87]),e(ue,[2,57]),{51:[1,263],67:bt,82:219,116:gt,117:Ze,118:Ee},e(ue,[2,64]),e(ue,[2,59]),e(ue,[2,60]),e(ue,[2,61]),{109:[1,264]},e(ue,[2,63]),e(ue,[2,65]),{66:[1,265],67:bt,82:219,116:gt,117:Ze,118:Ee},e(ue,[2,67]),e(ue,[2,68]),e(ue,[2,70]),e(ue,[2,69]),e(ue,[2,71]),e([10,44,60,89,102,105,106,109,111,114,115,116],[2,85]),e(ce,[2,78]),{31:[1,266],67:bt,82:219,116:gt,117:Ze,118:Ee},{6:11,7:12,8:s,9:l,10:u,11:h,20:17,22:18,23:19,24:20,25:21,26:22,27:d,32:[1,267],33:24,34:f,36:p,38:m,42:28,43:39,44:g,45:40,47:41,60:y,84:v,85:x,86:b,87:T,88:k,89:C,102:w,105:S,106:R,109:L,111:N,113:42,114:I,115:_,116:A,121:M,122:D,123:P,124:B,125:O},e(Oe,[2,53]),{43:268,44:g,45:40,47:41,60:y,89:C,102:w,105:S,106:R,109:L,111:N,113:42,114:I,115:_,116:A},e(St,[2,121],{106:yt}),e(Yt,[2,130],{108:270,10:Bt,60:qt,84:vr,105:Tt,109:De,110:it,111:We,112:rt}),e(Ht,[2,132]),e(Ht,[2,134]),e(Ht,[2,135]),e(Ht,[2,136]),e(Ht,[2,137]),e(Ht,[2,138]),e(Ht,[2,139]),e(Ht,[2,140]),e(Ht,[2,141]),e(St,[2,122],{106:yt}),{10:[1,271]},e(St,[2,123],{106:yt}),{10:[1,272]},e(ot,[2,129]),e(St,[2,105],{106:yt}),e(St,[2,106],{113:113,44:g,60:y,89:C,102:w,105:S,106:R,109:L,111:N,114:I,115:_,116:A}),e(St,[2,110]),e(St,[2,112],{10:[1,273]}),e(St,[2,113]),{98:[1,274]},{51:[1,275]},{62:[1,276]},{66:[1,277]},{8:G,9:z,11:W,21:278},e(V,[2,34]),e(Oe,[2,52]),{10:Bt,60:qt,84:vr,105:Tt,107:279,108:243,109:De,110:it,111:We,112:rt},e(Ht,[2,133]),{14:Q,44:U,60:oe,89:te,101:280,105:le,106:ie,109:ae,111:Re,114:be,115:Pe,116:Ge,120:88},{14:Q,44:U,60:oe,89:te,101:281,105:le,106:ie,109:ae,111:Re,114:be,115:Pe,116:Ge,120:88},{98:[1,282]},e(St,[2,120]),e(ue,[2,58]),{30:283,67:bt,80:me,81:lt,82:172,116:gt,117:Ze,118:Ee},e(ue,[2,66]),e(ft,a,{5:284}),e(Yt,[2,131],{108:270,10:Bt,60:qt,84:vr,105:Tt,109:De,110:it,111:We,112:rt}),e(St,[2,126],{120:168,10:[1,285],14:Q,44:U,60:oe,89:te,105:le,106:ie,109:ae,111:Re,114:be,115:Pe,116:Ge}),e(St,[2,127],{120:168,10:[1,286],14:Q,44:U,60:oe,89:te,105:le,106:ie,109:ae,111:Re,114:be,115:Pe,116:Ge}),e(St,[2,114]),{31:[1,287],67:bt,82:219,116:gt,117:Ze,118:Ee},{6:11,7:12,8:s,9:l,10:u,11:h,20:17,22:18,23:19,24:20,25:21,26:22,27:d,32:[1,288],33:24,34:f,36:p,38:m,42:28,43:39,44:g,45:40,47:41,60:y,84:v,85:x,86:b,87:T,88:k,89:C,102:w,105:S,106:R,109:L,111:N,113:42,114:I,115:_,116:A,121:M,122:D,123:P,124:B,125:O},{10:Bt,60:qt,84:vr,92:289,105:Tt,107:242,108:243,109:De,110:it,111:We,112:rt},{10:Bt,60:qt,84:vr,92:290,105:Tt,107:242,108:243,109:De,110:it,111:We,112:rt},e(ue,[2,62]),e(V,[2,33]),e(St,[2,124],{106:yt}),e(St,[2,125],{106:yt})],defaultActions:{},parseError:o(function(Ct,Ot){if(Ot.recoverable)this.trace(Ct);else{var Ft=new Error(Ct);throw Ft.hash=Ot,Ft}},"parseError"),parse:o(function(Ct){var Ot=this,Ft=[0],Rt=[],gr=[null],Se=[],ri=this.table,Ie="",Nr=0,Pa=0,Xu=0,B0=2,$0=1,dk=Se.slice.call(arguments,1),Pi=Object.create(this.lexer),Mc={yy:{}};for(var Px in this.yy)Object.prototype.hasOwnProperty.call(this.yy,Px)&&(Mc.yy[Px]=this.yy[Px]);Pi.setInput(Ct,Mc.yy),Mc.yy.lexer=Pi,Mc.yy.parser=this,typeof Pi.yylloc>"u"&&(Pi.yylloc={});var bd=Pi.yylloc;Se.push(bd);var fk=Pi.options&&Pi.options.ranges;typeof Mc.yy.parseError=="function"?this.parseError=Mc.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function js(Do){Ft.length=Ft.length-2*Do,gr.length=gr.length-Do,Se.length=Se.length-Do}o(js,"popStack");function RD(){var Do;return Do=Rt.pop()||Pi.lex()||$0,typeof Do!="number"&&(Do instanceof Array&&(Rt=Do,Do=Rt.pop()),Do=Ot.symbols_[Do]||Do),Do}o(RD,"lex");for(var ys,_D,Op,nl,rOt,LD,F0={},pk,Ku,OX,mk;;){if(Op=Ft[Ft.length-1],this.defaultActions[Op]?nl=this.defaultActions[Op]:((ys===null||typeof ys>"u")&&(ys=RD()),nl=ri[Op]&&ri[Op][ys]),typeof nl>"u"||!nl.length||!nl[0]){var DD="";mk=[];for(pk in ri[Op])this.terminals_[pk]&&pk>B0&&mk.push("'"+this.terminals_[pk]+"'");Pi.showPosition?DD="Parse error on line "+(Nr+1)+`:
+`+Pi.showPosition()+`
+Expecting `+mk.join(", ")+", got '"+(this.terminals_[ys]||ys)+"'":DD="Parse error on line "+(Nr+1)+": Unexpected "+(ys==$0?"end of input":"'"+(this.terminals_[ys]||ys)+"'"),this.parseError(DD,{text:Pi.match,token:this.terminals_[ys]||ys,line:Pi.yylineno,loc:bd,expected:mk})}if(nl[0]instanceof Array&&nl.length>1)throw new Error("Parse Error: multiple actions possible at state: "+Op+", token: "+ys);switch(nl[0]){case 1:Ft.push(ys),gr.push(Pi.yytext),Se.push(Pi.yylloc),Ft.push(nl[1]),ys=null,_D?(ys=_D,_D=null):(Pa=Pi.yyleng,Ie=Pi.yytext,Nr=Pi.yylineno,bd=Pi.yylloc,Xu>0&&Xu--);break;case 2:if(Ku=this.productions_[nl[1]][1],F0.$=gr[gr.length-Ku],F0._$={first_line:Se[Se.length-(Ku||1)].first_line,last_line:Se[Se.length-1].last_line,first_column:Se[Se.length-(Ku||1)].first_column,last_column:Se[Se.length-1].last_column},fk&&(F0._$.range=[Se[Se.length-(Ku||1)].range[0],Se[Se.length-1].range[1]]),LD=this.performAction.apply(F0,[Ie,Pa,Nr,Mc.yy,nl[1],gr,Se].concat(dk)),typeof LD<"u")return LD;Ku&&(Ft=Ft.slice(0,-1*Ku*2),gr=gr.slice(0,-1*Ku),Se=Se.slice(0,-1*Ku)),Ft.push(this.productions_[nl[1]][0]),gr.push(F0.$),Se.push(F0._$),OX=ri[Ft[Ft.length-2]][Ft[Ft.length-1]],Ft.push(OX);break;case 3:return!0}}return!0},"parse")},Hr=(function(){var kt={EOF:1,parseError:o(function(Ot,Ft){if(this.yy.parser)this.yy.parser.parseError(Ot,Ft);else throw new Error(Ot)},"parseError"),setInput:o(function(Ct,Ot){return this.yy=Ot||this.yy||{},this._input=Ct,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},"setInput"),input:o(function(){var Ct=this._input[0];this.yytext+=Ct,this.yyleng++,this.offset++,this.match+=Ct,this.matched+=Ct;var Ot=Ct.match(/(?:\r\n?|\n).*/g);return Ot?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),Ct},"input"),unput:o(function(Ct){var Ot=Ct.length,Ft=Ct.split(/(?:\r\n?|\n)/g);this._input=Ct+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-Ot),this.offset-=Ot;var Rt=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),Ft.length-1&&(this.yylineno-=Ft.length-1);var gr=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:Ft?(Ft.length===Rt.length?this.yylloc.first_column:0)+Rt[Rt.length-Ft.length].length-Ft[0].length:this.yylloc.first_column-Ot},this.options.ranges&&(this.yylloc.range=[gr[0],gr[0]+this.yyleng-Ot]),this.yyleng=this.yytext.length,this},"unput"),more:o(function(){return this._more=!0,this},"more"),reject:o(function(){if(this.options.backtrack_lexer)this._backtrack=!0;else return this.parseError("Lexical error on line "+(this.yylineno+1)+`. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).
+`+this.showPosition(),{text:"",token:null,line:this.yylineno});return this},"reject"),less:o(function(Ct){this.unput(this.match.slice(Ct))},"less"),pastInput:o(function(){var Ct=this.matched.substr(0,this.matched.length-this.match.length);return(Ct.length>20?"...":"")+Ct.substr(-20).replace(/\n/g,"")},"pastInput"),upcomingInput:o(function(){var Ct=this.match;return Ct.length<20&&(Ct+=this._input.substr(0,20-Ct.length)),(Ct.substr(0,20)+(Ct.length>20?"...":"")).replace(/\n/g,"")},"upcomingInput"),showPosition:o(function(){var Ct=this.pastInput(),Ot=new Array(Ct.length+1).join("-");return Ct+this.upcomingInput()+`
+`+Ot+"^"},"showPosition"),test_match:o(function(Ct,Ot){var Ft,Rt,gr;if(this.options.backtrack_lexer&&(gr={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(gr.yylloc.range=this.yylloc.range.slice(0))),Rt=Ct[0].match(/(?:\r\n?|\n).*/g),Rt&&(this.yylineno+=Rt.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:Rt?Rt[Rt.length-1].length-Rt[Rt.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+Ct[0].length},this.yytext+=Ct[0],this.match+=Ct[0],this.matches=Ct,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(Ct[0].length),this.matched+=Ct[0],Ft=this.performAction.call(this,this.yy,this,Ot,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),Ft)return Ft;if(this._backtrack){for(var Se in gr)this[Se]=gr[Se];return!1}return!1},"test_match"),next:o(function(){if(this.done)return this.EOF;this._input||(this.done=!0);var Ct,Ot,Ft,Rt;this._more||(this.yytext="",this.match="");for(var gr=this._currentRules(),Se=0;Se<gr.length;Se++)if(Ft=this._input.match(this.rules[gr[Se]]),Ft&&(!Ot||Ft[0].length>Ot[0].length)){if(Ot=Ft,Rt=Se,this.options.backtrack_lexer){if(Ct=this.test_match(Ft,gr[Se]),Ct!==!1)return Ct;if(this._backtrack){Ot=!1;continue}else return!1}else if(!this.options.flex)break}return Ot?(Ct=this.test_match(Ot,gr[Rt]),Ct!==!1?Ct:!1):this._input===""?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+`. Unrecognized text.
+`+this.showPosition(),{text:"",token:null,line:this.yylineno})},"next"),lex:o(function(){var Ot=this.next();return Ot||this.lex()},"lex"),begin:o(function(Ot){this.conditionStack.push(Ot)},"begin"),popState:o(function(){var Ot=this.conditionStack.length-1;return Ot>0?this.conditionStack.pop():this.conditionStack[0]},"popState"),_currentRules:o(function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},"_currentRules"),topState:o(function(Ot){return Ot=this.conditionStack.length-1-Math.abs(Ot||0),Ot>=0?this.conditionStack[Ot]:"INITIAL"},"topState"),pushState:o(function(Ot){this.begin(Ot)},"pushState"),stateStackSize:o(function(){return this.conditionStack.length},"stateStackSize"),options:{},performAction:o(function(Ot,Ft,Rt,gr){var Se=gr;switch(Rt){case 0:return this.begin("acc_title"),34;break;case 1:return this.popState(),"acc_title_value";break;case 2:return this.begin("acc_descr"),36;break;case 3:return this.popState(),"acc_descr_value";break;case 4:this.begin("acc_descr_multiline");break;case 5:this.popState();break;case 6:return"acc_descr_multiline_value";case 7:return this.pushState("shapeData"),Ft.yytext="",40;break;case 8:return this.pushState("shapeDataStr"),40;break;case 9:return this.popState(),40;break;case 10:let ri=/\n\s*/g;return Ft.yytext=Ft.yytext.replace(ri,"<br/>"),40;break;case 11:return 40;case 12:this.popState();break;case 13:this.begin("callbackname");break;case 14:this.popState();break;case 15:this.popState(),this.begin("callbackargs");break;case 16:return 95;case 17:this.popState();break;case 18:return 96;case 19:return"MD_STR";case 20:this.popState();break;case 21:this.begin("md_string");break;case 22:return"STR";case 23:this.popState();break;case 24:this.pushState("string");break;case 25:return 84;case 26:return 102;case 27:return 85;case 28:return 104;case 29:return 86;case 30:return 87;case 31:return 97;case 32:this.begin("click");break;case 33:this.popState();break;case 34:return 88;case 35:return Ot.lex.firstGraph()&&this.begin("dir"),12;break;case 36:return Ot.lex.firstGraph()&&this.begin("dir"),12;break;case 37:return Ot.lex.firstGraph()&&this.begin("dir"),12;break;case 38:return Ot.lex.firstGraph()&&this.begin("dir"),12;break;case 39:return 27;case 40:return 32;case 41:return 98;case 42:return 98;case 43:return 98;case 44:return 98;case 45:return this.popState(),13;break;case 46:return this.popState(),14;break;case 47:return this.popState(),14;break;case 48:return this.popState(),14;break;case 49:return this.popState(),14;break;case 50:return this.popState(),14;break;case 51:return this.popState(),14;break;case 52:return this.popState(),14;break;case 53:return this.popState(),14;break;case 54:return this.popState(),14;break;case 55:return this.popState(),14;break;case 56:return 121;case 57:return 122;case 58:return 123;case 59:return 124;case 60:return 125;case 61:return 78;case 62:return 105;case 63:return 111;case 64:return 46;case 65:return 60;case 66:return 44;case 67:return 8;case 68:return 106;case 69:return 115;case 70:return this.popState(),77;break;case 71:return this.pushState("edgeText"),75;break;case 72:return 119;case 73:return this.popState(),77;break;case 74:return this.pushState("thickEdgeText"),75;break;case 75:return 119;case 76:return this.popState(),77;break;case 77:return this.pushState("dottedEdgeText"),75;break;case 78:return 119;case 79:return 77;case 80:return this.popState(),53;break;case 81:return"TEXT";case 82:return this.pushState("ellipseText"),52;break;case 83:return this.popState(),55;break;case 84:return this.pushState("text"),54;break;case 85:return this.popState(),57;break;case 86:return this.pushState("text"),56;break;case 87:return 58;case 88:return this.pushState("text"),67;break;case 89:return this.popState(),64;break;case 90:return this.pushState("text"),63;break;case 91:return this.popState(),49;break;case 92:return this.pushState("text"),48;break;case 93:return this.popState(),69;break;case 94:return this.popState(),71;break;case 95:return 117;case 96:return this.pushState("trapText"),68;break;case 97:return this.pushState("trapText"),70;break;case 98:return 118;case 99:return 67;case 100:return 90;case 101:return"SEP";case 102:return 89;case 103:return 115;case 104:return 111;case 105:return 44;case 106:return 109;case 107:return 114;case 108:return 116;case 109:return this.popState(),62;break;case 110:return this.pushState("text"),62;break;case 111:return this.popState(),51;break;case 112:return this.pushState("text"),50;break;case 113:return this.popState(),31;break;case 114:return this.pushState("text"),29;break;case 115:return this.popState(),66;break;case 116:return this.pushState("text"),65;break;case 117:return"TEXT";case 118:return"QUOTE";case 119:return 9;case 120:return 10;case 121:return 11}},"anonymous"),rules:[/^(?:accTitle\s*:\s*)/,/^(?:(?!\n||)*[^\n]*)/,/^(?:accDescr\s*:\s*)/,/^(?:(?!\n||)*[^\n]*)/,/^(?:accDescr\s*\{\s*)/,/^(?:[\}])/,/^(?:[^\}]*)/,/^(?:@\{)/,/^(?:["])/,/^(?:["])/,/^(?:[^\"]+)/,/^(?:[^}^"]+)/,/^(?:\})/,/^(?:call[\s]+)/,/^(?:\([\s]*\))/,/^(?:\()/,/^(?:[^(]*)/,/^(?:\))/,/^(?:[^)]*)/,/^(?:[^`"]+)/,/^(?:[`]["])/,/^(?:["][`])/,/^(?:[^"]+)/,/^(?:["])/,/^(?:["])/,/^(?:style\b)/,/^(?:default\b)/,/^(?:linkStyle\b)/,/^(?:interpolate\b)/,/^(?:classDef\b)/,/^(?:class\b)/,/^(?:href[\s])/,/^(?:click[\s]+)/,/^(?:[\s\n])/,/^(?:[^\s\n]*)/,/^(?:flowchart-elk\b)/,/^(?:swimlane-beta\b)/,/^(?:graph\b)/,/^(?:flowchart\b)/,/^(?:subgraph\b)/,/^(?:end\b\s*)/,/^(?:_self\b)/,/^(?:_blank\b)/,/^(?:_parent\b)/,/^(?:_top\b)/,/^(?:(\r?\n)*\s*\n)/,/^(?:\s*LR\b)/,/^(?:\s*RL\b)/,/^(?:\s*TB\b)/,/^(?:\s*BT\b)/,/^(?:\s*TD\b)/,/^(?:\s*BR\b)/,/^(?:\s*<)/,/^(?:\s*>)/,/^(?:\s*\^)/,/^(?:\s*v\b)/,/^(?:.*direction\s+TB[^\n]*)/,/^(?:.*direction\s+BT[^\n]*)/,/^(?:.*direction\s+RL[^\n]*)/,/^(?:.*direction\s+LR[^\n]*)/,/^(?:.*direction\s+TD[^\n]*)/,/^(?:[^\s\"]+@(?=[^\{\"]))/,/^(?:[0-9]+)/,/^(?:#)/,/^(?::::)/,/^(?::)/,/^(?:&)/,/^(?:;)/,/^(?:,)/,/^(?:\*)/,/^(?:\s*[xo<]?--+[-xo>]\s*)/,/^(?:\s*[xo<]?--\s*)/,/^(?:[^-]|-(?!-)+)/,/^(?:\s*[xo<]?==+[=xo>]\s*)/,/^(?:\s*[xo<]?==\s*)/,/^(?:[^=]|=(?!))/,/^(?:\s*[xo<]?-?\.+-[xo>]?\s*)/,/^(?:\s*[xo<]?-\.\s*)/,/^(?:[^\.]|\.(?!))/,/^(?:\s*~~[\~]+\s*)/,/^(?:[-/\)][\)])/,/^(?:[^\(\)\[\]\{\}]|!\)+)/,/^(?:\(-)/,/^(?:\]\))/,/^(?:\(\[)/,/^(?:\]\])/,/^(?:\[\[)/,/^(?:\[\|)/,/^(?:>)/,/^(?:\)\])/,/^(?:\[\()/,/^(?:\)\)\))/,/^(?:\(\(\()/,/^(?:[\\(?=\])][\]])/,/^(?:\/(?=\])\])/,/^(?:\/(?!\])|\\(?!\])|[^\\\[\]\(\)\{\}\/]+)/,/^(?:\[\/)/,/^(?:\[\\)/,/^(?:<)/,/^(?:>)/,/^(?:\^)/,/^(?:\\\|)/,/^(?:v\b)/,/^(?:\*)/,/^(?:#)/,/^(?:&)/,/^(?:([A-Za-z0-9!"\#$%&'*+\.`?\\_\/]|-(?=[^\>\-\.])|(?!))+)/,/^(?:-)/,/^(?:[\u00AA\u00B5\u00BA\u00C0-\u00D6\u00D8-\u00F6]|[\u00F8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377]|[\u037A-\u037D\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5]|[\u03F7-\u0481\u048A-\u0527\u0531-\u0556\u0559\u0561-\u0587\u05D0-\u05EA]|[\u05F0-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE]|[\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA]|[\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u08A0]|[\u08A2-\u08AC\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0977]|[\u0979-\u097F\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2]|[\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u0A05-\u0A0A]|[\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39]|[\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8]|[\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0B05-\u0B0C]|[\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C]|[\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99]|[\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0]|[\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C33\u0C35-\u0C39\u0C3D]|[\u0C58\u0C59\u0C60\u0C61\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3]|[\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D05-\u0D0C\u0D0E-\u0D10]|[\u0D12-\u0D3A\u0D3D\u0D4E\u0D60\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1]|[\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81]|[\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3]|[\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6]|[\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A]|[\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081]|[\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D]|[\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0]|[\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310]|[\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F4\u1401-\u166C]|[\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u1700-\u170C\u170E-\u1711]|[\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7]|[\u17DC\u1820-\u1877\u1880-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191C]|[\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19C1-\u19C7\u1A00-\u1A16]|[\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4B\u1B83-\u1BA0\u1BAE\u1BAF]|[\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1CE9-\u1CEC]|[\u1CEE-\u1CF1\u1CF5\u1CF6\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D]|[\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D]|[\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3]|[\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F]|[\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128]|[\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2183\u2184]|[\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3]|[\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6]|[\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE]|[\u2DD0-\u2DD6\u2DD8-\u2DDE\u2E2F\u3005\u3006\u3031-\u3035\u303B\u303C]|[\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312D]|[\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FCC]|[\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B]|[\uA640-\uA66E\uA67F-\uA697\uA6A0-\uA6E5\uA717-\uA71F\uA722-\uA788]|[\uA78B-\uA78E\uA790-\uA793\uA7A0-\uA7AA\uA7F8-\uA801\uA803-\uA805]|[\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB]|[\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uAA00-\uAA28]|[\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA80-\uAAAF\uAAB1\uAAB5]|[\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4]|[\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E]|[\uABC0-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D]|[\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36]|[\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D]|[\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC]|[\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF]|[\uFFD2-\uFFD7\uFFDA-\uFFDC])/,/^(?:\|)/,/^(?:\|)/,/^(?:\))/,/^(?:\()/,/^(?:\])/,/^(?:\[)/,/^(?:(\}))/,/^(?:\{)/,/^(?:[^\[\]\(\)\{\}\|\"]+)/,/^(?:")/,/^(?:(\r?\n)+)/,/^(?:\s)/,/^(?:$)/],conditions:{shapeDataEndBracket:{rules:[21,24,79,82,84,86,90,92,96,97,110,112,114,116],inclusive:!1},shapeDataStr:{rules:[9,10,21,24,79,82,84,86,90,92,96,97,110,112,114,116],inclusive:!1},shapeData:{rules:[8,11,12,21,24,79,82,84,86,90,92,96,97,110,112,114,116],inclusive:!1},callbackargs:{rules:[17,18,21,24,79,82,84,86,90,92,96,97,110,112,114,116],inclusive:!1},callbackname:{rules:[14,15,16,21,24,79,82,84,86,90,92,96,97,110,112,114,116],inclusive:!1},href:{rules:[21,24,79,82,84,86,90,92,96,97,110,112,114,116],inclusive:!1},click:{rules:[21,24,33,34,79,82,84,86,90,92,96,97,110,112,114,116],inclusive:!1},dottedEdgeText:{rules:[21,24,76,78,79,82,84,86,90,92,96,97,110,112,114,116],inclusive:!1},thickEdgeText:{rules:[21,24,73,75,79,82,84,86,90,92,96,97,110,112,114,116],inclusive:!1},edgeText:{rules:[21,24,70,72,79,82,84,86,90,92,96,97,110,112,114,116],inclusive:!1},trapText:{rules:[21,24,79,82,84,86,90,92,93,94,95,96,97,110,112,114,116],inclusive:!1},ellipseText:{rules:[21,24,79,80,81,82,84,86,90,92,96,97,110,112,114,116],inclusive:!1},text:{rules:[21,24,79,82,83,84,85,86,89,90,91,92,96,97,109,110,111,112,113,114,115,116,117],inclusive:!1},vertex:{rules:[21,24,79,82,84,86,90,92,96,97,110,112,114,116],inclusive:!1},dir:{rules:[21,24,45,46,47,48,49,50,51,52,53,54,55,79,82,84,86,90,92,96,97,110,112,114,116],inclusive:!1},acc_descr_multiline:{rules:[5,6,21,24,79,82,84,86,90,92,96,97,110,112,114,116],inclusive:!1},acc_descr:{rules:[3,21,24,79,82,84,86,90,92,96,97,110,112,114,116],inclusive:!1},acc_title:{rules:[1,21,24,79,82,84,86,90,92,96,97,110,112,114,116],inclusive:!1},md_string:{rules:[19,20,21,24,79,82,84,86,90,92,96,97,110,112,114,116],inclusive:!1},string:{rules:[21,22,23,24,79,82,84,86,90,92,96,97,110,112,114,116],inclusive:!1},INITIAL:{rules:[0,2,4,7,13,21,24,25,26,27,28,29,30,31,32,35,36,37,38,39,40,41,42,43,44,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,73,74,76,77,79,82,84,86,87,88,90,92,96,97,98,99,100,101,102,103,104,105,106,107,108,110,112,114,116,118,119,120,121],inclusive:!0}}};return kt})();pr.lexer=Hr;function Er(){this.yy={}}return o(Er,"Parser"),Er.prototype=pr,pr.Parser=Er,new Er})();jF.parser=jF;XF=jF});var dTe,fTe,pTe=F(()=>{"use strict";hTe();dTe=Object.assign({},XF);dTe.parse=e=>{let t=e.replace(/}\s*\n/g,`}
+`);return XF.parse(t)};fTe=dTe});var Eu,X1=F(()=>{"use strict";Eu=o(()=>`
   /* Font Awesome icon styling - consolidated */
   .label-icon {
     display: inline-block;
@@ -911,7 +910,7 @@
     stroke: revert;
     stroke-width: revert;
   }
-`,"getIconStyles")});var Kot,Zot,Jge,e1e=z(()=>{"use strict";Cn();k1();Kot=o((e,t)=>{let r=Ff,i=r(e,"r"),n=r(e,"g"),a=r(e,"b");return mn(i,n,a,t)},"fade"),Zot=o(e=>`.label {
+`,"getIconStyles")});var e0t,t0t,RA,KF=F(()=>{"use strict";zi();X1();e0t=o((e,t)=>{let r=$p,n=r(e,"r"),i=r(e,"g"),a=r(e,"b");return Oi(n,i,a,t)},"fade"),t0t=o(e=>`.label {
     font-family: ${e.fontFamily};
     color: ${e.nodeTextColor||e.textColor};
   }
@@ -942,12 +941,6 @@
   .rough-node .label text , .node .label text, .image-shape .label, .icon-shape .label {
     text-anchor: middle;
   }
-  // .flowchart-label .text-outer-tspan {
-  //   text-anchor: middle;
-  // }
-  // .flowchart-label .text-inner-tspan {
-  //   text-anchor: start;
-  // }
 
   .node .katex path {
     fill: #000;
@@ -998,7 +991,7 @@
 
   /* For html labels only */
   .labelBkg {
-    background-color: ${Kot(e.edgeLabelBackground,.5)};
+    background-color: ${e0t(e.edgeLabelBackground,.5)};
     // background-color:
   }
 
@@ -1057,25 +1050,32 @@
     }
     text-align: center;
   }
-  ${Vc()}
-`,"getStyles"),Jge=Zot});var hE={};xr(hE,{diagram:()=>Qot});var Qot,dE=z(()=>{"use strict";Ut();Mae();jge();Qge();e1e();Qot={parser:Zge,get db(){return new V4},renderer:Yge,styles:Jge,init:o(e=>{e.flowchart||(e.flowchart={}),e.layout&&Sv({layout:e.layout}),e.flowchart.arrowMarkerAbsolute=e.arrowMarkerAbsolute,Sv({flowchart:{arrowMarkerAbsolute:e.arrowMarkerAbsolute}})},"init")}});var qP,a1e,s1e=z(()=>{"use strict";qP=(function(){var e=o(function(De,Ie,Ee,we){for(Ee=Ee||{},we=De.length;we--;Ee[De[we]]=Ie);return Ee},"o"),t=[6,8,10,22,24,26,28,33,34,35,36,37,40,43,44,48,50,51,52],r=[1,10],i=[1,11],n=[1,12],a=[1,13],s=[1,23],l=[1,24],u=[1,25],h=[1,26],d=[1,27],f=[1,19],p=[1,28],m=[1,29],g=[1,20],y=[1,18],v=[1,21],x=[1,22],b=[1,36],T=[1,37],w=[1,38],C=[1,39],k=[1,40],E=[6,8,10,13,15,17,20,21,22,24,26,28,33,34,35,36,37,40,43,44,48,50,51,52,65,66,67,68,69],A=[1,45],N=[1,46],P=[1,55],I=[40,48,50,51,52,70,71],D=[1,66],_=[1,64],R=[1,61],M=[1,65],L=[1,67],B=[6,8,10,13,17,22,24,26,28,33,34,35,36,37,40,41,42,43,44,48,49,50,51,52,65,66,67,68,69],O=[65,66,67,68,69],$=[1,84],G=[1,83],F=[1,81],V=[1,82],H=[6,10,42,47],j=[6,10,13,41,42,47,48,49],U=[1,92],Q=[1,91],Y=[1,90],ae=[19,58],J=[1,101],te=[1,100],re=[19,58,60,62],ee={trace:o(function(){},"trace"),yy:{},symbols_:{error:2,start:3,ER_DIAGRAM:4,document:5,EOF:6,line:7,SPACE:8,statement:9,NEWLINE:10,entityName:11,relSpec:12,COLON:13,role:14,STYLE_SEPARATOR:15,idList:16,BLOCK_START:17,attributes:18,BLOCK_STOP:19,SQS:20,SQE:21,title:22,title_value:23,acc_title:24,acc_title_value:25,acc_descr:26,acc_descr_value:27,acc_descr_multiline_value:28,direction:29,classDefStatement:30,classStatement:31,styleStatement:32,direction_tb:33,direction_bt:34,direction_rl:35,direction_lr:36,CLASSDEF:37,stylesOpt:38,separator:39,UNICODE_TEXT:40,STYLE_TEXT:41,COMMA:42,CLASS:43,STYLE:44,style:45,styleComponent:46,SEMI:47,NUM:48,BRKT:49,ENTITY_NAME:50,DECIMAL_NUM:51,ENTITY_ONE:52,attribute:53,attributeType:54,attributeName:55,attributeKeyTypeList:56,attributeComment:57,ATTRIBUTE_WORD:58,attributeKeyType:59,",":60,ATTRIBUTE_KEY:61,COMMENT:62,cardinality:63,relType:64,ZERO_OR_ONE:65,ZERO_OR_MORE:66,ONE_OR_MORE:67,ONLY_ONE:68,MD_PARENT:69,NON_IDENTIFYING:70,IDENTIFYING:71,WORD:72,$accept:0,$end:1},terminals_:{2:"error",4:"ER_DIAGRAM",6:"EOF",8:"SPACE",10:"NEWLINE",13:"COLON",15:"STYLE_SEPARATOR",17:"BLOCK_START",19:"BLOCK_STOP",20:"SQS",21:"SQE",22:"title",23:"title_value",24:"acc_title",25:"acc_title_value",26:"acc_descr",27:"acc_descr_value",28:"acc_descr_multiline_value",33:"direction_tb",34:"direction_bt",35:"direction_rl",36:"direction_lr",37:"CLASSDEF",40:"UNICODE_TEXT",41:"STYLE_TEXT",42:"COMMA",43:"CLASS",44:"STYLE",47:"SEMI",48:"NUM",49:"BRKT",50:"ENTITY_NAME",51:"DECIMAL_NUM",52:"ENTITY_ONE",58:"ATTRIBUTE_WORD",60:",",61:"ATTRIBUTE_KEY",62:"COMMENT",65:"ZERO_OR_ONE",66:"ZERO_OR_MORE",67:"ONE_OR_MORE",68:"ONLY_ONE",69:"MD_PARENT",70:"NON_IDENTIFYING",71:"IDENTIFYING",72:"WORD"},productions_:[0,[3,3],[5,0],[5,2],[7,2],[7,1],[7,1],[7,1],[9,5],[9,9],[9,7],[9,7],[9,4],[9,6],[9,3],[9,5],[9,1],[9,3],[9,7],[9,9],[9,6],[9,8],[9,4],[9,6],[9,2],[9,2],[9,2],[9,1],[9,1],[9,1],[9,1],[9,1],[29,1],[29,1],[29,1],[29,1],[30,4],[16,1],[16,1],[16,3],[16,3],[31,3],[32,4],[38,1],[38,3],[45,1],[45,2],[39,1],[39,1],[39,1],[46,1],[46,1],[46,1],[46,1],[11,1],[11,1],[11,1],[11,1],[11,1],[18,1],[18,2],[53,2],[53,3],[53,3],[53,4],[54,1],[55,1],[56,1],[56,3],[59,1],[57,1],[12,3],[63,1],[63,1],[63,1],[63,1],[63,1],[64,1],[64,1],[14,1],[14,1],[14,1]],performAction:o(function(Ie,Ee,we,Me,$e,de,rt){var ke=de.length-1;switch($e){case 1:break;case 2:this.$=[];break;case 3:de[ke-1].push(de[ke]),this.$=de[ke-1];break;case 4:case 5:this.$=de[ke];break;case 6:case 7:this.$=[];break;case 8:Me.addEntity(de[ke-4]),Me.addEntity(de[ke-2]),Me.addRelationship(de[ke-4],de[ke],de[ke-2],de[ke-3]);break;case 9:Me.addEntity(de[ke-8]),Me.addEntity(de[ke-4]),Me.addRelationship(de[ke-8],de[ke],de[ke-4],de[ke-5]),Me.setClass([de[ke-8]],de[ke-6]),Me.setClass([de[ke-4]],de[ke-2]);break;case 10:Me.addEntity(de[ke-6]),Me.addEntity(de[ke-2]),Me.addRelationship(de[ke-6],de[ke],de[ke-2],de[ke-3]),Me.setClass([de[ke-6]],de[ke-4]);break;case 11:Me.addEntity(de[ke-6]),Me.addEntity(de[ke-4]),Me.addRelationship(de[ke-6],de[ke],de[ke-4],de[ke-5]),Me.setClass([de[ke-4]],de[ke-2]);break;case 12:Me.addEntity(de[ke-3]),Me.addAttributes(de[ke-3],de[ke-1]);break;case 13:Me.addEntity(de[ke-5]),Me.addAttributes(de[ke-5],de[ke-1]),Me.setClass([de[ke-5]],de[ke-3]);break;case 14:Me.addEntity(de[ke-2]);break;case 15:Me.addEntity(de[ke-4]),Me.setClass([de[ke-4]],de[ke-2]);break;case 16:Me.addEntity(de[ke]);break;case 17:Me.addEntity(de[ke-2]),Me.setClass([de[ke-2]],de[ke]);break;case 18:Me.addEntity(de[ke-6],de[ke-4]),Me.addAttributes(de[ke-6],de[ke-1]);break;case 19:Me.addEntity(de[ke-8],de[ke-6]),Me.addAttributes(de[ke-8],de[ke-1]),Me.setClass([de[ke-8]],de[ke-3]);break;case 20:Me.addEntity(de[ke-5],de[ke-3]);break;case 21:Me.addEntity(de[ke-7],de[ke-5]),Me.setClass([de[ke-7]],de[ke-2]);break;case 22:Me.addEntity(de[ke-3],de[ke-1]);break;case 23:Me.addEntity(de[ke-5],de[ke-3]),Me.setClass([de[ke-5]],de[ke]);break;case 24:case 25:this.$=de[ke].trim(),Me.setAccTitle(this.$);break;case 26:case 27:this.$=de[ke].trim(),Me.setAccDescription(this.$);break;case 32:Me.setDirection("TB");break;case 33:Me.setDirection("BT");break;case 34:Me.setDirection("RL");break;case 35:Me.setDirection("LR");break;case 36:this.$=de[ke-3],Me.addClass(de[ke-2],de[ke-1]);break;case 37:case 38:case 59:case 67:this.$=[de[ke]];break;case 39:case 40:this.$=de[ke-2].concat([de[ke]]);break;case 41:this.$=de[ke-2],Me.setClass(de[ke-1],de[ke]);break;case 42:this.$=de[ke-3],Me.addCssStyles(de[ke-2],de[ke-1]);break;case 43:this.$=[de[ke]];break;case 44:de[ke-2].push(de[ke]),this.$=de[ke-2];break;case 46:this.$=de[ke-1]+de[ke];break;case 54:case 79:case 80:this.$=de[ke].replace(/"/g,"");break;case 55:case 56:case 57:case 58:case 81:this.$=de[ke];break;case 60:de[ke].push(de[ke-1]),this.$=de[ke];break;case 61:this.$={type:de[ke-1],name:de[ke]};break;case 62:this.$={type:de[ke-2],name:de[ke-1],keys:de[ke]};break;case 63:this.$={type:de[ke-2],name:de[ke-1],comment:de[ke]};break;case 64:this.$={type:de[ke-3],name:de[ke-2],keys:de[ke-1],comment:de[ke]};break;case 65:case 66:case 69:this.$=de[ke];break;case 68:de[ke-2].push(de[ke]),this.$=de[ke-2];break;case 70:this.$=de[ke].replace(/"/g,"");break;case 71:this.$={cardA:de[ke],relType:de[ke-1],cardB:de[ke-2]};break;case 72:this.$=Me.Cardinality.ZERO_OR_ONE;break;case 73:this.$=Me.Cardinality.ZERO_OR_MORE;break;case 74:this.$=Me.Cardinality.ONE_OR_MORE;break;case 75:this.$=Me.Cardinality.ONLY_ONE;break;case 76:this.$=Me.Cardinality.MD_PARENT;break;case 77:this.$=Me.Identification.NON_IDENTIFYING;break;case 78:this.$=Me.Identification.IDENTIFYING;break}},"anonymous"),table:[{3:1,4:[1,2]},{1:[3]},e(t,[2,2],{5:3}),{6:[1,4],7:5,8:[1,6],9:7,10:[1,8],11:9,22:r,24:i,26:n,28:a,29:14,30:15,31:16,32:17,33:s,34:l,35:u,36:h,37:d,40:f,43:p,44:m,48:g,50:y,51:v,52:x},e(t,[2,7],{1:[2,1]}),e(t,[2,3]),{9:30,11:9,22:r,24:i,26:n,28:a,29:14,30:15,31:16,32:17,33:s,34:l,35:u,36:h,37:d,40:f,43:p,44:m,48:g,50:y,51:v,52:x},e(t,[2,5]),e(t,[2,6]),e(t,[2,16],{12:31,63:35,15:[1,32],17:[1,33],20:[1,34],65:b,66:T,67:w,68:C,69:k}),{23:[1,41]},{25:[1,42]},{27:[1,43]},e(t,[2,27]),e(t,[2,28]),e(t,[2,29]),e(t,[2,30]),e(t,[2,31]),e(E,[2,54]),e(E,[2,55]),e(E,[2,56]),e(E,[2,57]),e(E,[2,58]),e(t,[2,32]),e(t,[2,33]),e(t,[2,34]),e(t,[2,35]),{16:44,40:A,41:N},{16:47,40:A,41:N},{16:48,40:A,41:N},e(t,[2,4]),{11:49,40:f,48:g,50:y,51:v,52:x},{16:50,40:A,41:N},{18:51,19:[1,52],53:53,54:54,58:P},{11:56,40:f,48:g,50:y,51:v,52:x},{64:57,70:[1,58],71:[1,59]},e(I,[2,72]),e(I,[2,73]),e(I,[2,74]),e(I,[2,75]),e(I,[2,76]),e(t,[2,24]),e(t,[2,25]),e(t,[2,26]),{13:D,38:60,41:_,42:R,45:62,46:63,48:M,49:L},e(B,[2,37]),e(B,[2,38]),{16:68,40:A,41:N,42:R},{13:D,38:69,41:_,42:R,45:62,46:63,48:M,49:L},{13:[1,70],15:[1,71]},e(t,[2,17],{63:35,12:72,17:[1,73],42:R,65:b,66:T,67:w,68:C,69:k}),{19:[1,74]},e(t,[2,14]),{18:75,19:[2,59],53:53,54:54,58:P},{55:76,58:[1,77]},{58:[2,65]},{21:[1,78]},{63:79,65:b,66:T,67:w,68:C,69:k},e(O,[2,77]),e(O,[2,78]),{6:$,10:G,39:80,42:F,47:V},{40:[1,85],41:[1,86]},e(H,[2,43],{46:87,13:D,41:_,48:M,49:L}),e(j,[2,45]),e(j,[2,50]),e(j,[2,51]),e(j,[2,52]),e(j,[2,53]),e(t,[2,41],{42:R}),{6:$,10:G,39:88,42:F,47:V},{14:89,40:U,50:Q,72:Y},{16:93,40:A,41:N},{11:94,40:f,48:g,50:y,51:v,52:x},{18:95,19:[1,96],53:53,54:54,58:P},e(t,[2,12]),{19:[2,60]},e(ae,[2,61],{56:97,57:98,59:99,61:J,62:te}),e([19,58,61,62],[2,66]),e(t,[2,22],{15:[1,103],17:[1,102]}),e([40,48,50,51,52],[2,71]),e(t,[2,36]),{13:D,41:_,45:104,46:63,48:M,49:L},e(t,[2,47]),e(t,[2,48]),e(t,[2,49]),e(B,[2,39]),e(B,[2,40]),e(j,[2,46]),e(t,[2,42]),e(t,[2,8]),e(t,[2,79]),e(t,[2,80]),e(t,[2,81]),{13:[1,105],42:R},{13:[1,107],15:[1,106]},{19:[1,108]},e(t,[2,15]),e(ae,[2,62],{57:109,60:[1,110],62:te}),e(ae,[2,63]),e(re,[2,67]),e(ae,[2,70]),e(re,[2,69]),{18:111,19:[1,112],53:53,54:54,58:P},{16:113,40:A,41:N},e(H,[2,44],{46:87,13:D,41:_,48:M,49:L}),{14:114,40:U,50:Q,72:Y},{16:115,40:A,41:N},{14:116,40:U,50:Q,72:Y},e(t,[2,13]),e(ae,[2,64]),{59:117,61:J},{19:[1,118]},e(t,[2,20]),e(t,[2,23],{17:[1,119],42:R}),e(t,[2,11]),{13:[1,120],42:R},e(t,[2,10]),e(re,[2,68]),e(t,[2,18]),{18:121,19:[1,122],53:53,54:54,58:P},{14:123,40:U,50:Q,72:Y},{19:[1,124]},e(t,[2,21]),e(t,[2,9]),e(t,[2,19])],defaultActions:{55:[2,65],75:[2,60]},parseError:o(function(Ie,Ee){if(Ee.recoverable)this.trace(Ie);else{var we=new Error(Ie);throw we.hash=Ee,we}},"parseError"),parse:o(function(Ie){var Ee=this,we=[0],Me=[],$e=[null],de=[],rt=this.table,ke="",Fe=0,He=0,at=0,qe=2,Ue=1,ye=de.slice.call(arguments,1),ve=Object.create(this.lexer),ie={yy:{}};for(var fe in this.yy)Object.prototype.hasOwnProperty.call(this.yy,fe)&&(ie.yy[fe]=this.yy[fe]);ve.setInput(Ie,ie.yy),ie.yy.lexer=ve,ie.yy.parser=this,typeof ve.yylloc>"u"&&(ve.yylloc={});var W=ve.yylloc;de.push(W);var ce=ve.options&&ve.options.ranges;typeof ie.yy.parseError=="function"?this.parseError=ie.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function K(kt){we.length=we.length-2*kt,$e.length=$e.length-kt,de.length=de.length-kt}o(K,"popStack");function Re(){var kt;return kt=Me.pop()||ve.lex()||Ue,typeof kt!="number"&&(kt instanceof Array&&(Me=kt,kt=Me.pop()),kt=Ee.symbols_[kt]||kt),kt}o(Re,"lex");for(var xe,Oe,be,Be,Ae,Ve,Pe={},Ye,le,st,me;;){if(be=we[we.length-1],this.defaultActions[be]?Be=this.defaultActions[be]:((xe===null||typeof xe>"u")&&(xe=Re()),Be=rt[be]&&rt[be][xe]),typeof Be>"u"||!Be.length||!Be[0]){var ot="";me=[];for(Ye in rt[be])this.terminals_[Ye]&&Ye>qe&&me.push("'"+this.terminals_[Ye]+"'");ve.showPosition?ot="Parse error on line "+(Fe+1)+`:
-`+ve.showPosition()+`
-Expecting `+me.join(", ")+", got '"+(this.terminals_[xe]||xe)+"'":ot="Parse error on line "+(Fe+1)+": Unexpected "+(xe==Ue?"end of input":"'"+(this.terminals_[xe]||xe)+"'"),this.parseError(ot,{text:ve.match,token:this.terminals_[xe]||xe,line:ve.yylineno,loc:W,expected:me})}if(Be[0]instanceof Array&&Be.length>1)throw new Error("Parse Error: multiple actions possible at state: "+be+", token: "+xe);switch(Be[0]){case 1:we.push(xe),$e.push(ve.yytext),de.push(ve.yylloc),we.push(Be[1]),xe=null,Oe?(xe=Oe,Oe=null):(He=ve.yyleng,ke=ve.yytext,Fe=ve.yylineno,W=ve.yylloc,at>0&&at--);break;case 2:if(le=this.productions_[Be[1]][1],Pe.$=$e[$e.length-le],Pe._$={first_line:de[de.length-(le||1)].first_line,last_line:de[de.length-1].last_line,first_column:de[de.length-(le||1)].first_column,last_column:de[de.length-1].last_column},ce&&(Pe._$.range=[de[de.length-(le||1)].range[0],de[de.length-1].range[1]]),Ve=this.performAction.apply(Pe,[ke,He,Fe,ie.yy,Be[1],$e,de].concat(ye)),typeof Ve<"u")return Ve;le&&(we=we.slice(0,-1*le*2),$e=$e.slice(0,-1*le),de=de.slice(0,-1*le)),we.push(this.productions_[Be[1]][0]),$e.push(Pe.$),de.push(Pe._$),st=rt[we[we.length-2]][we[we.length-1]],we.push(st);break;case 3:return!0}}return!0},"parse")},Te=(function(){var De={EOF:1,parseError:o(function(Ee,we){if(this.yy.parser)this.yy.parser.parseError(Ee,we);else throw new Error(Ee)},"parseError"),setInput:o(function(Ie,Ee){return this.yy=Ee||this.yy||{},this._input=Ie,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},"setInput"),input:o(function(){var Ie=this._input[0];this.yytext+=Ie,this.yyleng++,this.offset++,this.match+=Ie,this.matched+=Ie;var Ee=Ie.match(/(?:\r\n?|\n).*/g);return Ee?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),Ie},"input"),unput:o(function(Ie){var Ee=Ie.length,we=Ie.split(/(?:\r\n?|\n)/g);this._input=Ie+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-Ee),this.offset-=Ee;var Me=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),we.length-1&&(this.yylineno-=we.length-1);var $e=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:we?(we.length===Me.length?this.yylloc.first_column:0)+Me[Me.length-we.length].length-we[0].length:this.yylloc.first_column-Ee},this.options.ranges&&(this.yylloc.range=[$e[0],$e[0]+this.yyleng-Ee]),this.yyleng=this.yytext.length,this},"unput"),more:o(function(){return this._more=!0,this},"more"),reject:o(function(){if(this.options.backtrack_lexer)this._backtrack=!0;else return this.parseError("Lexical error on line "+(this.yylineno+1)+`. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).
-`+this.showPosition(),{text:"",token:null,line:this.yylineno});return this},"reject"),less:o(function(Ie){this.unput(this.match.slice(Ie))},"less"),pastInput:o(function(){var Ie=this.matched.substr(0,this.matched.length-this.match.length);return(Ie.length>20?"...":"")+Ie.substr(-20).replace(/\n/g,"")},"pastInput"),upcomingInput:o(function(){var Ie=this.match;return Ie.length<20&&(Ie+=this._input.substr(0,20-Ie.length)),(Ie.substr(0,20)+(Ie.length>20?"...":"")).replace(/\n/g,"")},"upcomingInput"),showPosition:o(function(){var Ie=this.pastInput(),Ee=new Array(Ie.length+1).join("-");return Ie+this.upcomingInput()+`
-`+Ee+"^"},"showPosition"),test_match:o(function(Ie,Ee){var we,Me,$e;if(this.options.backtrack_lexer&&($e={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&($e.yylloc.range=this.yylloc.range.slice(0))),Me=Ie[0].match(/(?:\r\n?|\n).*/g),Me&&(this.yylineno+=Me.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:Me?Me[Me.length-1].length-Me[Me.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+Ie[0].length},this.yytext+=Ie[0],this.match+=Ie[0],this.matches=Ie,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(Ie[0].length),this.matched+=Ie[0],we=this.performAction.call(this,this.yy,this,Ee,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),we)return we;if(this._backtrack){for(var de in $e)this[de]=$e[de];return!1}return!1},"test_match"),next:o(function(){if(this.done)return this.EOF;this._input||(this.done=!0);var Ie,Ee,we,Me;this._more||(this.yytext="",this.match="");for(var $e=this._currentRules(),de=0;de<$e.length;de++)if(we=this._input.match(this.rules[$e[de]]),we&&(!Ee||we[0].length>Ee[0].length)){if(Ee=we,Me=de,this.options.backtrack_lexer){if(Ie=this.test_match(we,$e[de]),Ie!==!1)return Ie;if(this._backtrack){Ee=!1;continue}else return!1}else if(!this.options.flex)break}return Ee?(Ie=this.test_match(Ee,$e[Me]),Ie!==!1?Ie:!1):this._input===""?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+`. Unrecognized text.
-`+this.showPosition(),{text:"",token:null,line:this.yylineno})},"next"),lex:o(function(){var Ee=this.next();return Ee||this.lex()},"lex"),begin:o(function(Ee){this.conditionStack.push(Ee)},"begin"),popState:o(function(){var Ee=this.conditionStack.length-1;return Ee>0?this.conditionStack.pop():this.conditionStack[0]},"popState"),_currentRules:o(function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},"_currentRules"),topState:o(function(Ee){return Ee=this.conditionStack.length-1-Math.abs(Ee||0),Ee>=0?this.conditionStack[Ee]:"INITIAL"},"topState"),pushState:o(function(Ee){this.begin(Ee)},"pushState"),stateStackSize:o(function(){return this.conditionStack.length},"stateStackSize"),options:{"case-insensitive":!0},performAction:o(function(Ee,we,Me,$e){var de=$e;switch(Me){case 0:return this.begin("acc_title"),24;break;case 1:return this.popState(),"acc_title_value";break;case 2:return this.begin("acc_descr"),26;break;case 3:return this.popState(),"acc_descr_value";break;case 4:this.begin("acc_descr_multiline");break;case 5:this.popState();break;case 6:return"acc_descr_multiline_value";case 7:return 33;case 8:return 34;case 9:return 35;case 10:return 36;case 11:return 10;case 12:break;case 13:return 8;case 14:return 50;case 15:return 72;case 16:return 4;case 17:return this.begin("block"),17;break;case 18:return 49;case 19:return 49;case 20:return 42;case 21:return 15;case 22:return 13;case 23:break;case 24:return 61;case 25:return 58;case 26:return 58;case 27:return 62;case 28:break;case 29:return this.popState(),19;break;case 30:return we.yytext[0];case 31:return 20;case 32:return 21;case 33:return this.begin("style"),44;break;case 34:return this.popState(),10;break;case 35:break;case 36:return 13;case 37:return 42;case 38:return 49;case 39:return this.begin("style"),37;break;case 40:return 43;case 41:return 65;case 42:return 67;case 43:return 67;case 44:return 67;case 45:return 65;case 46:return 65;case 47:return 66;case 48:return 66;case 49:return 66;case 50:return 66;case 51:return 66;case 52:return 67;case 53:return 66;case 54:return 67;case 55:return 68;case 56:return 68;case 57:return 51;case 58:return 68;case 59:return 68;case 60:return 68;case 61:return 52;case 62:return 48;case 63:return 68;case 64:return 65;case 65:return 66;case 66:return 67;case 67:return 69;case 68:return 70;case 69:return 71;case 70:return 71;case 71:return 70;case 72:return 70;case 73:return 70;case 74:return 41;case 75:return 47;case 76:return 40;case 77:return we.yytext[0];case 78:return 6}},"anonymous"),rules:[/^(?:accTitle\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*\{\s*)/i,/^(?:[\}])/i,/^(?:[^\}]*)/i,/^(?:.*direction\s+TB[^\n]*)/i,/^(?:.*direction\s+BT[^\n]*)/i,/^(?:.*direction\s+RL[^\n]*)/i,/^(?:.*direction\s+LR[^\n]*)/i,/^(?:[\n]+)/i,/^(?:\s+)/i,/^(?:[\s]+)/i,/^(?:"[^"%\r\n\v\b\\]+")/i,/^(?:"[^"]*")/i,/^(?:erDiagram\b)/i,/^(?:\{)/i,/^(?:#)/i,/^(?:#)/i,/^(?:,)/i,/^(?::::)/i,/^(?::)/i,/^(?:\s+)/i,/^(?:\b((?:PK)|(?:FK)|(?:UK))\b)/i,/^(?:([^\s]*)[~].*[~]([^\s]*))/i,/^(?:([\*A-Za-z_\u00C0-\uFFFF][A-Za-z0-9\-\_\[\]\(\)\u00C0-\uFFFF\*]*))/i,/^(?:"[^"]*")/i,/^(?:[\n]+)/i,/^(?:\})/i,/^(?:.)/i,/^(?:\[)/i,/^(?:\])/i,/^(?:style\b)/i,/^(?:[\n]+)/i,/^(?:\s+)/i,/^(?::)/i,/^(?:,)/i,/^(?:#)/i,/^(?:classDef\b)/i,/^(?:class\b)/i,/^(?:one or zero\b)/i,/^(?:one or more\b)/i,/^(?:one or many\b)/i,/^(?:1\+)/i,/^(?:\|o\b)/i,/^(?:zero or one\b)/i,/^(?:zero or more\b)/i,/^(?:zero or many\b)/i,/^(?:0\+)/i,/^(?:\}o\b)/i,/^(?:many\(0\))/i,/^(?:many\(1\))/i,/^(?:many\b)/i,/^(?:\}\|)/i,/^(?:one\b)/i,/^(?:only one\b)/i,/^(?:[0-9]+\.[0-9]+)/i,/^(?:1(?=\s+[A-Za-z_"']))/i,/^(?:1(?=\s+[0-9]))/i,/^(?:1(?=(--|\.\.|\.-|-\.)))/i,/^(?:1\b)/i,/^(?:[0-9]+)/i,/^(?:\|\|)/i,/^(?:o\|)/i,/^(?:o\{)/i,/^(?:\|\{)/i,/^(?:u(?=[\.\-\|]))/i,/^(?:\.\.)/i,/^(?:--)/i,/^(?:to\b)/i,/^(?:optionally to\b)/i,/^(?:\.-)/i,/^(?:-\.)/i,/^(?:([^\x00-\x7F]|\w|-|\*)+)/i,/^(?:;)/i,/^(?:([^\x00-\x7F]|\w|-|\*|\.)+)/i,/^(?:.)/i,/^(?:$)/i],conditions:{style:{rules:[34,35,36,37,38,74,75],inclusive:!1},acc_descr_multiline:{rules:[5,6],inclusive:!1},acc_descr:{rules:[3],inclusive:!1},acc_title:{rules:[1],inclusive:!1},block:{rules:[23,24,25,26,27,28,29,30],inclusive:!1},INITIAL:{rules:[0,2,4,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,31,32,33,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,76,77,78],inclusive:!0}}};return De})();ee.lexer=Te;function ue(){this.yy={}}return o(ue,"Parser"),ue.prototype=ee,ee.Parser=ue,new ue})();qP.parser=qP;a1e=qP});var fE,o1e=z(()=>{"use strict";St();Ut();Ci();Xt();fE=class{constructor(){this.entities=new Map;this.relationships=[];this.classes=new Map;this.direction="TB";this.Cardinality={ZERO_OR_ONE:"ZERO_OR_ONE",ZERO_OR_MORE:"ZERO_OR_MORE",ONE_OR_MORE:"ONE_OR_MORE",ONLY_ONE:"ONLY_ONE",MD_PARENT:"MD_PARENT"};this.Identification={NON_IDENTIFYING:"NON_IDENTIFYING",IDENTIFYING:"IDENTIFYING"};this.setAccTitle=Cr;this.getAccTitle=kr;this.setAccDescription=wr;this.getAccDescription=Sr;this.setDiagramTitle=Ar;this.getDiagramTitle=Er;this.getConfig=o(()=>ge().er,"getConfig");this.clear(),this.addEntity=this.addEntity.bind(this),this.addAttributes=this.addAttributes.bind(this),this.addRelationship=this.addRelationship.bind(this),this.setDirection=this.setDirection.bind(this),this.addCssStyles=this.addCssStyles.bind(this),this.addClass=this.addClass.bind(this),this.setClass=this.setClass.bind(this),this.setAccTitle=this.setAccTitle.bind(this),this.setAccDescription=this.setAccDescription.bind(this)}static{o(this,"ErDB")}addEntity(t,r=""){return this.entities.has(t)?!this.entities.get(t)?.alias&&r&&(this.entities.get(t).alias=r,Z.info(`Add alias '${r}' to entity '${t}'`)):(this.entities.set(t,{id:`entity-${t}-${this.entities.size}`,label:t,attributes:[],alias:r,shape:"erBox",look:ge().look??"default",cssClasses:"default",cssStyles:[],labelType:"markdown"}),Z.info("Added new entity :",t)),this.entities.get(t)}getEntity(t){return this.entities.get(t)}getEntities(){return this.entities}getClasses(){return this.classes}addAttributes(t,r){let i=this.addEntity(t),n;for(n=r.length-1;n>=0;n--)r[n].keys||(r[n].keys=[]),r[n].comment||(r[n].comment=""),i.attributes.push(r[n]),Z.debug("Added attribute ",r[n].name)}addRelationship(t,r,i,n){let a=this.entities.get(t),s=this.entities.get(i);if(!a||!s)return;let l={entityA:a.id,roleA:r,entityB:s.id,relSpec:n};this.relationships.push(l),Z.debug("Added new relationship :",l)}getRelationships(){return this.relationships}getDirection(){return this.direction}setDirection(t){this.direction=t}getCompiledStyles(t){let r=[];for(let i of t){let n=this.classes.get(i);n?.styles&&(r=[...r,...n.styles??[]].map(a=>a.trim())),n?.textStyles&&(r=[...r,...n.textStyles??[]].map(a=>a.trim()))}return r}addCssStyles(t,r){for(let i of t){let n=this.entities.get(i);if(!r||!n)return;for(let a of r)n.cssStyles.push(a)}}addClass(t,r){t.forEach(i=>{let n=this.classes.get(i);n===void 0&&(n={id:i,styles:[],textStyles:[]},this.classes.set(i,n)),r&&r.forEach(function(a){if(/color/.exec(a)){let s=a.replace("fill","bgFill");n.textStyles.push(s)}n.styles.push(a)})})}setClass(t,r){for(let i of t){let n=this.entities.get(i);if(n)for(let a of r)n.cssClasses+=" "+a}}clear(){this.entities=new Map,this.classes=new Map,this.relationships=[],gr()}getData(){let t=[],r=[],i=ge(),n=0;for(let s of this.entities.keys()){let l=this.entities.get(s);l&&(l.cssCompiledStyles=this.getCompiledStyles(l.cssClasses.split(" ")),l.colorIndex=n++,t.push(l))}let a=0;for(let s of this.relationships){let l={id:bc(s.entityA,s.entityB,{prefix:"id",counter:a++}),type:"normal",curve:"basis",start:s.entityA,end:s.entityB,label:s.roleA,labelpos:"c",thickness:"normal",classes:"relationshipLine",arrowTypeStart:s.relSpec.cardB.toLowerCase(),arrowTypeEnd:s.relSpec.cardA.toLowerCase(),pattern:s.relSpec.relType=="IDENTIFYING"?"solid":"dashed",look:i.look,labelType:"markdown"};r.push(l)}return{nodes:t,edges:r,other:{},config:i,direction:"TB"}}}});var UP={};xr(UP,{draw:()=>alt});var alt,l1e=z(()=>{"use strict";Ut();St();Lp();tf();rf();Xt();Rr();alt=o(async function(e,t,r,i){Z.info("REF0:"),Z.info("Drawing er diagram (unified)",t);let{securityLevel:n,er:a,layout:s}=ge(),l=i.db.getData(),u=Fo(t,n);l.type=i.type,l.layoutAlgorithm=Gc(s),l.config.flowchart.nodeSpacing=a?.nodeSpacing||140,l.config.flowchart.rankSpacing=a?.rankSpacing||80,l.direction=i.db.getDirection();let{config:h}=l,{look:d}=h;d==="neo"?l.markers=["only_one_neo","zero_or_one_neo","one_or_more_neo","zero_or_more_neo"]:l.markers=["only_one","zero_or_one","one_or_more","zero_or_more"],l.diagramId=t,await Zo(l,u),l.layoutAlgorithm==="elk"&&u.select(".edges").lower();let f=u.selectAll('[id*="-background"]');Array.from(f).length>0&&f.each(function(){let m=Je(this),y=m.attr("id").replace("-background",""),v=u.select(`#${CSS.escape(y)}`);if(!v.empty()){let x=v.attr("transform");m.attr("transform",x)}});let p=8;Zt.insertTitle(u,"erDiagramTitleText",a?.titleTopMargin??25,i.db.getDiagramTitle()),$s(u,p,"erDiagram",a?.useMaxWidth??!0)},"draw")});var c1e,pE,slt,olt,u1e,h1e=z(()=>{"use strict";Cn();c1e=o((e,t)=>{let r=Ff,i=r(e,"r"),n=r(e,"g"),a=r(e,"b");return mn(i,n,a,t)},"fade"),pE=new Set(["redux-color","redux-dark-color"]),slt=o(e=>{let{theme:t,look:r,bkgColorArray:i,borderColorArray:n}=e;if(!pE.has(t))return"";let a=i?.length>0,s="";for(let l=0;l<e.THEME_COLOR_LIMIT;l++)s+=`
+  ${Eu()}
+`,"getStyles"),RA=t0t});var LA={};ir(LA,{createFlowDiagram:()=>_A,diagram:()=>r0t});var _A,r0t,oC=F(()=>{"use strict";ur();Xt();Fce();uTe();pTe();KF();_A=o(({defaultLayout:e,styles:t=RA}={})=>({parser:fTe,get db(){return new W4},renderer:cTe,styles:t,init:o(r=>{r.flowchart||(r.flowchart={});let n=Lk().layout??e??r.layout;n&&cb({layout:n}),r.flowchart.arrowMarkerAbsolute=r.arrowMarkerAbsolute,cb({flowchart:{arrowMarkerAbsolute:r.arrowMarkerAbsolute}})},"init")}),"createFlowDiagram"),r0t=_A()});var c0t,xTe,bTe=F(()=>{"use strict";KF();c0t=o(e=>`${RA(e)}
+  .swimlane.cluster rect {
+    stroke: ${e.clusterBorder} !important;
+  }
+  [data-look="neo"].cluster rect {
+    filter: none;
+  }
+`,"getStyles"),xTe=c0t});var TTe={};ir(TTe,{diagram:()=>u0t});var u0t,CTe=F(()=>{"use strict";oC();bTe();u0t=_A({defaultLayout:"swimlane",styles:xTe})});var ZF,STe,ETe=F(()=>{"use strict";ZF=(function(){var e=o(function(Pe,Ge,Oe,ue){for(Oe=Oe||{},ue=Pe.length;ue--;Oe[Pe[ue]]=Ge);return Oe},"o"),t=[6,8,10,22,24,26,28,33,34,35,36,37,40,43,44,48,50,51,52],r=[1,10],n=[1,11],i=[1,12],a=[1,13],s=[1,23],l=[1,24],u=[1,25],h=[1,26],d=[1,27],f=[1,19],p=[1,28],m=[1,29],g=[1,20],y=[1,18],v=[1,21],x=[1,22],b=[1,36],T=[1,37],k=[1,38],C=[1,39],w=[1,40],S=[6,8,10,13,15,17,20,21,22,24,26,28,33,34,35,36,37,40,43,44,48,50,51,52,66,67,68,69,70],R=[1,45],L=[1,46],N=[1,55],I=[40,48,50,51,52,71,72],_=[1,66],A=[1,64],M=[1,61],D=[1,65],P=[1,67],B=[6,8,10,13,17,22,24,26,28,33,34,35,36,37,40,41,42,43,44,48,49,50,51,52,66,67,68,69,70],O=[66,67,68,69,70],$=[1,85],V=[1,84],G=[1,82],z=[1,83],W=[6,10,42,47],H=[6,10,13,41,42,47,48,49],j=[1,93],Q=[1,92],U=[1,91],oe=[19,58],te=[1,102],le=[1,101],ie=[19,58,61,63],ae={trace:o(function(){},"trace"),yy:{},symbols_:{error:2,start:3,ER_DIAGRAM:4,document:5,EOF:6,line:7,SPACE:8,statement:9,NEWLINE:10,entityName:11,relSpec:12,COLON:13,role:14,STYLE_SEPARATOR:15,idList:16,BLOCK_START:17,attributes:18,BLOCK_STOP:19,SQS:20,SQE:21,title:22,title_value:23,acc_title:24,acc_title_value:25,acc_descr:26,acc_descr_value:27,acc_descr_multiline_value:28,direction:29,classDefStatement:30,classStatement:31,styleStatement:32,direction_tb:33,direction_bt:34,direction_rl:35,direction_lr:36,CLASSDEF:37,stylesOpt:38,separator:39,UNICODE_TEXT:40,STYLE_TEXT:41,COMMA:42,CLASS:43,STYLE:44,style:45,styleComponent:46,SEMI:47,NUM:48,BRKT:49,ENTITY_NAME:50,DECIMAL_NUM:51,ENTITY_ONE:52,attribute:53,attributeType:54,attributeName:55,attributeKeyTypeList:56,attributeComment:57,ATTRIBUTE_WORD:58,"?":59,attributeKeyType:60,",":61,ATTRIBUTE_KEY:62,COMMENT:63,cardinality:64,relType:65,ZERO_OR_ONE:66,ZERO_OR_MORE:67,ONE_OR_MORE:68,ONLY_ONE:69,MD_PARENT:70,NON_IDENTIFYING:71,IDENTIFYING:72,WORD:73,$accept:0,$end:1},terminals_:{2:"error",4:"ER_DIAGRAM",6:"EOF",8:"SPACE",10:"NEWLINE",13:"COLON",15:"STYLE_SEPARATOR",17:"BLOCK_START",19:"BLOCK_STOP",20:"SQS",21:"SQE",22:"title",23:"title_value",24:"acc_title",25:"acc_title_value",26:"acc_descr",27:"acc_descr_value",28:"acc_descr_multiline_value",33:"direction_tb",34:"direction_bt",35:"direction_rl",36:"direction_lr",37:"CLASSDEF",40:"UNICODE_TEXT",41:"STYLE_TEXT",42:"COMMA",43:"CLASS",44:"STYLE",47:"SEMI",48:"NUM",49:"BRKT",50:"ENTITY_NAME",51:"DECIMAL_NUM",52:"ENTITY_ONE",58:"ATTRIBUTE_WORD",59:"?",61:",",62:"ATTRIBUTE_KEY",63:"COMMENT",66:"ZERO_OR_ONE",67:"ZERO_OR_MORE",68:"ONE_OR_MORE",69:"ONLY_ONE",70:"MD_PARENT",71:"NON_IDENTIFYING",72:"IDENTIFYING",73:"WORD"},productions_:[0,[3,3],[5,0],[5,2],[7,2],[7,1],[7,1],[7,1],[9,5],[9,9],[9,7],[9,7],[9,4],[9,6],[9,3],[9,5],[9,1],[9,3],[9,7],[9,9],[9,6],[9,8],[9,4],[9,6],[9,2],[9,2],[9,2],[9,1],[9,1],[9,1],[9,1],[9,1],[29,1],[29,1],[29,1],[29,1],[30,4],[16,1],[16,1],[16,3],[16,3],[31,3],[32,4],[38,1],[38,3],[45,1],[45,2],[39,1],[39,1],[39,1],[46,1],[46,1],[46,1],[46,1],[11,1],[11,1],[11,1],[11,1],[11,1],[18,1],[18,2],[53,2],[53,3],[53,3],[53,4],[54,1],[54,2],[55,1],[56,1],[56,3],[60,1],[57,1],[12,3],[64,1],[64,1],[64,1],[64,1],[64,1],[65,1],[65,1],[14,1],[14,1],[14,1]],performAction:o(function(Ge,Oe,ue,ye,ke,ce,re){var J=ce.length-1;switch(ke){case 1:break;case 2:this.$=[];break;case 3:ce[J-1].push(ce[J]),this.$=ce[J-1];break;case 4:case 5:this.$=ce[J];break;case 6:case 7:this.$=[];break;case 8:ye.addEntity(ce[J-4]),ye.addEntity(ce[J-2]),ye.addRelationship(ce[J-4],ce[J],ce[J-2],ce[J-3]);break;case 9:ye.addEntity(ce[J-8]),ye.addEntity(ce[J-4]),ye.addRelationship(ce[J-8],ce[J],ce[J-4],ce[J-5]),ye.setClass([ce[J-8]],ce[J-6]),ye.setClass([ce[J-4]],ce[J-2]);break;case 10:ye.addEntity(ce[J-6]),ye.addEntity(ce[J-2]),ye.addRelationship(ce[J-6],ce[J],ce[J-2],ce[J-3]),ye.setClass([ce[J-6]],ce[J-4]);break;case 11:ye.addEntity(ce[J-6]),ye.addEntity(ce[J-4]),ye.addRelationship(ce[J-6],ce[J],ce[J-4],ce[J-5]),ye.setClass([ce[J-4]],ce[J-2]);break;case 12:ye.addEntity(ce[J-3]),ye.addAttributes(ce[J-3],ce[J-1]);break;case 13:ye.addEntity(ce[J-5]),ye.addAttributes(ce[J-5],ce[J-1]),ye.setClass([ce[J-5]],ce[J-3]);break;case 14:ye.addEntity(ce[J-2]);break;case 15:ye.addEntity(ce[J-4]),ye.setClass([ce[J-4]],ce[J-2]);break;case 16:ye.addEntity(ce[J]);break;case 17:ye.addEntity(ce[J-2]),ye.setClass([ce[J-2]],ce[J]);break;case 18:ye.addEntity(ce[J-6],ce[J-4]),ye.addAttributes(ce[J-6],ce[J-1]);break;case 19:ye.addEntity(ce[J-8],ce[J-6]),ye.addAttributes(ce[J-8],ce[J-1]),ye.setClass([ce[J-8]],ce[J-3]);break;case 20:ye.addEntity(ce[J-5],ce[J-3]);break;case 21:ye.addEntity(ce[J-7],ce[J-5]),ye.setClass([ce[J-7]],ce[J-2]);break;case 22:ye.addEntity(ce[J-3],ce[J-1]);break;case 23:ye.addEntity(ce[J-5],ce[J-3]),ye.setClass([ce[J-5]],ce[J]);break;case 24:case 25:this.$=ce[J].trim(),ye.setAccTitle(this.$);break;case 26:case 27:this.$=ce[J].trim(),ye.setAccDescription(this.$);break;case 32:ye.setDirection("TB");break;case 33:ye.setDirection("BT");break;case 34:ye.setDirection("RL");break;case 35:ye.setDirection("LR");break;case 36:this.$=ce[J-3],ye.addClass(ce[J-2],ce[J-1]);break;case 37:case 38:case 59:case 68:this.$=[ce[J]];break;case 39:case 40:this.$=ce[J-2].concat([ce[J]]);break;case 41:this.$=ce[J-2],ye.setClass(ce[J-1],ce[J]);break;case 42:this.$=ce[J-3],ye.addCssStyles(ce[J-2],ce[J-1]);break;case 43:this.$=[ce[J]];break;case 44:ce[J-2].push(ce[J]),this.$=ce[J-2];break;case 46:this.$=ce[J-1]+ce[J];break;case 54:case 80:case 81:this.$=ce[J].replace(/"/g,"");break;case 55:case 56:case 57:case 58:case 82:this.$=ce[J];break;case 60:ce[J].push(ce[J-1]),this.$=ce[J];break;case 61:this.$={type:ce[J-1],name:ce[J]};break;case 62:this.$={type:ce[J-2],name:ce[J-1],keys:ce[J]};break;case 63:this.$={type:ce[J-2],name:ce[J-1],comment:ce[J]};break;case 64:this.$={type:ce[J-3],name:ce[J-2],keys:ce[J-1],comment:ce[J]};break;case 65:case 67:case 70:this.$=ce[J];break;case 66:this.$=ce[J-1]+ce[J];break;case 69:ce[J-2].push(ce[J]),this.$=ce[J-2];break;case 71:this.$=ce[J].replace(/"/g,"");break;case 72:this.$={cardA:ce[J],relType:ce[J-1],cardB:ce[J-2]};break;case 73:this.$=ye.Cardinality.ZERO_OR_ONE;break;case 74:this.$=ye.Cardinality.ZERO_OR_MORE;break;case 75:this.$=ye.Cardinality.ONE_OR_MORE;break;case 76:this.$=ye.Cardinality.ONLY_ONE;break;case 77:this.$=ye.Cardinality.MD_PARENT;break;case 78:this.$=ye.Identification.NON_IDENTIFYING;break;case 79:this.$=ye.Identification.IDENTIFYING;break}},"anonymous"),table:[{3:1,4:[1,2]},{1:[3]},e(t,[2,2],{5:3}),{6:[1,4],7:5,8:[1,6],9:7,10:[1,8],11:9,22:r,24:n,26:i,28:a,29:14,30:15,31:16,32:17,33:s,34:l,35:u,36:h,37:d,40:f,43:p,44:m,48:g,50:y,51:v,52:x},e(t,[2,7],{1:[2,1]}),e(t,[2,3]),{9:30,11:9,22:r,24:n,26:i,28:a,29:14,30:15,31:16,32:17,33:s,34:l,35:u,36:h,37:d,40:f,43:p,44:m,48:g,50:y,51:v,52:x},e(t,[2,5]),e(t,[2,6]),e(t,[2,16],{12:31,64:35,15:[1,32],17:[1,33],20:[1,34],66:b,67:T,68:k,69:C,70:w}),{23:[1,41]},{25:[1,42]},{27:[1,43]},e(t,[2,27]),e(t,[2,28]),e(t,[2,29]),e(t,[2,30]),e(t,[2,31]),e(S,[2,54]),e(S,[2,55]),e(S,[2,56]),e(S,[2,57]),e(S,[2,58]),e(t,[2,32]),e(t,[2,33]),e(t,[2,34]),e(t,[2,35]),{16:44,40:R,41:L},{16:47,40:R,41:L},{16:48,40:R,41:L},e(t,[2,4]),{11:49,40:f,48:g,50:y,51:v,52:x},{16:50,40:R,41:L},{18:51,19:[1,52],53:53,54:54,58:N},{11:56,40:f,48:g,50:y,51:v,52:x},{65:57,71:[1,58],72:[1,59]},e(I,[2,73]),e(I,[2,74]),e(I,[2,75]),e(I,[2,76]),e(I,[2,77]),e(t,[2,24]),e(t,[2,25]),e(t,[2,26]),{13:_,38:60,41:A,42:M,45:62,46:63,48:D,49:P},e(B,[2,37]),e(B,[2,38]),{16:68,40:R,41:L,42:M},{13:_,38:69,41:A,42:M,45:62,46:63,48:D,49:P},{13:[1,70],15:[1,71]},e(t,[2,17],{64:35,12:72,17:[1,73],42:M,66:b,67:T,68:k,69:C,70:w}),{19:[1,74]},e(t,[2,14]),{18:75,19:[2,59],53:53,54:54,58:N},{55:76,58:[1,77]},{58:[2,65],59:[1,78]},{21:[1,79]},{64:80,66:b,67:T,68:k,69:C,70:w},e(O,[2,78]),e(O,[2,79]),{6:$,10:V,39:81,42:G,47:z},{40:[1,86],41:[1,87]},e(W,[2,43],{46:88,13:_,41:A,48:D,49:P}),e(H,[2,45]),e(H,[2,50]),e(H,[2,51]),e(H,[2,52]),e(H,[2,53]),e(t,[2,41],{42:M}),{6:$,10:V,39:89,42:G,47:z},{14:90,40:j,50:Q,73:U},{16:94,40:R,41:L},{11:95,40:f,48:g,50:y,51:v,52:x},{18:96,19:[1,97],53:53,54:54,58:N},e(t,[2,12]),{19:[2,60]},e(oe,[2,61],{56:98,57:99,60:100,62:te,63:le}),e([19,58,62,63],[2,67]),{58:[2,66]},e(t,[2,22],{15:[1,104],17:[1,103]}),e([40,48,50,51,52],[2,72]),e(t,[2,36]),{13:_,41:A,45:105,46:63,48:D,49:P},e(t,[2,47]),e(t,[2,48]),e(t,[2,49]),e(B,[2,39]),e(B,[2,40]),e(H,[2,46]),e(t,[2,42]),e(t,[2,8]),e(t,[2,80]),e(t,[2,81]),e(t,[2,82]),{13:[1,106],42:M},{13:[1,108],15:[1,107]},{19:[1,109]},e(t,[2,15]),e(oe,[2,62],{57:110,61:[1,111],63:le}),e(oe,[2,63]),e(ie,[2,68]),e(oe,[2,71]),e(ie,[2,70]),{18:112,19:[1,113],53:53,54:54,58:N},{16:114,40:R,41:L},e(W,[2,44],{46:88,13:_,41:A,48:D,49:P}),{14:115,40:j,50:Q,73:U},{16:116,40:R,41:L},{14:117,40:j,50:Q,73:U},e(t,[2,13]),e(oe,[2,64]),{60:118,62:te},{19:[1,119]},e(t,[2,20]),e(t,[2,23],{17:[1,120],42:M}),e(t,[2,11]),{13:[1,121],42:M},e(t,[2,10]),e(ie,[2,69]),e(t,[2,18]),{18:122,19:[1,123],53:53,54:54,58:N},{14:124,40:j,50:Q,73:U},{19:[1,125]},e(t,[2,21]),e(t,[2,9]),e(t,[2,19])],defaultActions:{75:[2,60],78:[2,66]},parseError:o(function(Ge,Oe){if(Oe.recoverable)this.trace(Ge);else{var ue=new Error(Ge);throw ue.hash=Oe,ue}},"parseError"),parse:o(function(Ge){var Oe=this,ue=[0],ye=[],ke=[null],ce=[],re=this.table,J="",se=0,ge=0,Te=0,we=2,Me=1,ve=ce.slice.call(arguments,1),ne=Object.create(this.lexer),q={yy:{}};for(var he in this.yy)Object.prototype.hasOwnProperty.call(this.yy,he)&&(q.yy[he]=this.yy[he]);ne.setInput(Ge,q.yy),q.yy.lexer=ne,q.yy.parser=this,typeof ne.yylloc>"u"&&(ne.yylloc={});var X=ne.yylloc;ce.push(X);var fe=ne.options&&ne.options.ranges;typeof q.yy.parseError=="function"?this.parseError=q.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function K(wt){ue.length=ue.length-2*wt,ke.length=ke.length-wt,ce.length=ce.length-wt}o(K,"popStack");function qe(){var wt;return wt=ye.pop()||ne.lex()||Me,typeof wt!="number"&&(wt instanceof Array&&(ye=wt,wt=ye.pop()),wt=Oe.symbols_[wt]||wt),wt}o(qe,"lex");for(var _e,Be,Ne,He,$e,Xe,Fe={},Ke,xe,mt,Le;;){if(Ne=ue[ue.length-1],this.defaultActions[Ne]?He=this.defaultActions[Ne]:((_e===null||typeof _e>"u")&&(_e=qe()),He=re[Ne]&&re[Ne][_e]),typeof He>"u"||!He.length||!He[0]){var ft="";Le=[];for(Ke in re[Ne])this.terminals_[Ke]&&Ke>we&&Le.push("'"+this.terminals_[Ke]+"'");ne.showPosition?ft="Parse error on line "+(se+1)+`:
+`+ne.showPosition()+`
+Expecting `+Le.join(", ")+", got '"+(this.terminals_[_e]||_e)+"'":ft="Parse error on line "+(se+1)+": Unexpected "+(_e==Me?"end of input":"'"+(this.terminals_[_e]||_e)+"'"),this.parseError(ft,{text:ne.match,token:this.terminals_[_e]||_e,line:ne.yylineno,loc:X,expected:Le})}if(He[0]instanceof Array&&He.length>1)throw new Error("Parse Error: multiple actions possible at state: "+Ne+", token: "+_e);switch(He[0]){case 1:ue.push(_e),ke.push(ne.yytext),ce.push(ne.yylloc),ue.push(He[1]),_e=null,Be?(_e=Be,Be=null):(ge=ne.yyleng,J=ne.yytext,se=ne.yylineno,X=ne.yylloc,Te>0&&Te--);break;case 2:if(xe=this.productions_[He[1]][1],Fe.$=ke[ke.length-xe],Fe._$={first_line:ce[ce.length-(xe||1)].first_line,last_line:ce[ce.length-1].last_line,first_column:ce[ce.length-(xe||1)].first_column,last_column:ce[ce.length-1].last_column},fe&&(Fe._$.range=[ce[ce.length-(xe||1)].range[0],ce[ce.length-1].range[1]]),Xe=this.performAction.apply(Fe,[J,ge,se,q.yy,He[1],ke,ce].concat(ve)),typeof Xe<"u")return Xe;xe&&(ue=ue.slice(0,-1*xe*2),ke=ke.slice(0,-1*xe),ce=ce.slice(0,-1*xe)),ue.push(this.productions_[He[1]][0]),ke.push(Fe.$),ce.push(Fe._$),mt=re[ue[ue.length-2]][ue[ue.length-1]],ue.push(mt);break;case 3:return!0}}return!0},"parse")},Re=(function(){var Pe={EOF:1,parseError:o(function(Oe,ue){if(this.yy.parser)this.yy.parser.parseError(Oe,ue);else throw new Error(Oe)},"parseError"),setInput:o(function(Ge,Oe){return this.yy=Oe||this.yy||{},this._input=Ge,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},"setInput"),input:o(function(){var Ge=this._input[0];this.yytext+=Ge,this.yyleng++,this.offset++,this.match+=Ge,this.matched+=Ge;var Oe=Ge.match(/(?:\r\n?|\n).*/g);return Oe?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),Ge},"input"),unput:o(function(Ge){var Oe=Ge.length,ue=Ge.split(/(?:\r\n?|\n)/g);this._input=Ge+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-Oe),this.offset-=Oe;var ye=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),ue.length-1&&(this.yylineno-=ue.length-1);var ke=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:ue?(ue.length===ye.length?this.yylloc.first_column:0)+ye[ye.length-ue.length].length-ue[0].length:this.yylloc.first_column-Oe},this.options.ranges&&(this.yylloc.range=[ke[0],ke[0]+this.yyleng-Oe]),this.yyleng=this.yytext.length,this},"unput"),more:o(function(){return this._more=!0,this},"more"),reject:o(function(){if(this.options.backtrack_lexer)this._backtrack=!0;else return this.parseError("Lexical error on line "+(this.yylineno+1)+`. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).
+`+this.showPosition(),{text:"",token:null,line:this.yylineno});return this},"reject"),less:o(function(Ge){this.unput(this.match.slice(Ge))},"less"),pastInput:o(function(){var Ge=this.matched.substr(0,this.matched.length-this.match.length);return(Ge.length>20?"...":"")+Ge.substr(-20).replace(/\n/g,"")},"pastInput"),upcomingInput:o(function(){var Ge=this.match;return Ge.length<20&&(Ge+=this._input.substr(0,20-Ge.length)),(Ge.substr(0,20)+(Ge.length>20?"...":"")).replace(/\n/g,"")},"upcomingInput"),showPosition:o(function(){var Ge=this.pastInput(),Oe=new Array(Ge.length+1).join("-");return Ge+this.upcomingInput()+`
+`+Oe+"^"},"showPosition"),test_match:o(function(Ge,Oe){var ue,ye,ke;if(this.options.backtrack_lexer&&(ke={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(ke.yylloc.range=this.yylloc.range.slice(0))),ye=Ge[0].match(/(?:\r\n?|\n).*/g),ye&&(this.yylineno+=ye.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:ye?ye[ye.length-1].length-ye[ye.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+Ge[0].length},this.yytext+=Ge[0],this.match+=Ge[0],this.matches=Ge,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(Ge[0].length),this.matched+=Ge[0],ue=this.performAction.call(this,this.yy,this,Oe,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),ue)return ue;if(this._backtrack){for(var ce in ke)this[ce]=ke[ce];return!1}return!1},"test_match"),next:o(function(){if(this.done)return this.EOF;this._input||(this.done=!0);var Ge,Oe,ue,ye;this._more||(this.yytext="",this.match="");for(var ke=this._currentRules(),ce=0;ce<ke.length;ce++)if(ue=this._input.match(this.rules[ke[ce]]),ue&&(!Oe||ue[0].length>Oe[0].length)){if(Oe=ue,ye=ce,this.options.backtrack_lexer){if(Ge=this.test_match(ue,ke[ce]),Ge!==!1)return Ge;if(this._backtrack){Oe=!1;continue}else return!1}else if(!this.options.flex)break}return Oe?(Ge=this.test_match(Oe,ke[ye]),Ge!==!1?Ge:!1):this._input===""?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+`. Unrecognized text.
+`+this.showPosition(),{text:"",token:null,line:this.yylineno})},"next"),lex:o(function(){var Oe=this.next();return Oe||this.lex()},"lex"),begin:o(function(Oe){this.conditionStack.push(Oe)},"begin"),popState:o(function(){var Oe=this.conditionStack.length-1;return Oe>0?this.conditionStack.pop():this.conditionStack[0]},"popState"),_currentRules:o(function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},"_currentRules"),topState:o(function(Oe){return Oe=this.conditionStack.length-1-Math.abs(Oe||0),Oe>=0?this.conditionStack[Oe]:"INITIAL"},"topState"),pushState:o(function(Oe){this.begin(Oe)},"pushState"),stateStackSize:o(function(){return this.conditionStack.length},"stateStackSize"),options:{"case-insensitive":!0},performAction:o(function(Oe,ue,ye,ke){var ce=ke;switch(ye){case 0:return this.begin("acc_title"),24;break;case 1:return this.popState(),"acc_title_value";break;case 2:return this.begin("acc_descr"),26;break;case 3:return this.popState(),"acc_descr_value";break;case 4:this.begin("acc_descr_multiline");break;case 5:this.popState();break;case 6:return"acc_descr_multiline_value";case 7:return 33;case 8:return 34;case 9:return 35;case 10:return 36;case 11:return 10;case 12:break;case 13:return 8;case 14:return 50;case 15:return 73;case 16:return 4;case 17:return this.begin("block"),17;break;case 18:return 49;case 19:return 49;case 20:return 42;case 21:return 15;case 22:return 13;case 23:break;case 24:return 62;case 25:return 58;case 26:return 58;case 27:this.begin("block_bq");break;case 28:return 58;case 29:this.popState();break;case 30:return 63;case 31:break;case 32:return this.popState(),19;break;case 33:return ue.yytext[0];case 34:return 20;case 35:return 21;case 36:return this.begin("style"),44;break;case 37:return this.popState(),10;break;case 38:break;case 39:return 13;case 40:return 42;case 41:return 49;case 42:return this.begin("style"),37;break;case 43:return 43;case 44:return 66;case 45:return 68;case 46:return 68;case 47:return 68;case 48:return 66;case 49:return 66;case 50:return 67;case 51:return 67;case 52:return 67;case 53:return 67;case 54:return 67;case 55:return 68;case 56:return 67;case 57:return 68;case 58:return 69;case 59:return 69;case 60:return 51;case 61:return 69;case 62:return 69;case 63:return 69;case 64:return 52;case 65:return 48;case 66:return 69;case 67:return 66;case 68:return 67;case 69:return 68;case 70:return 70;case 71:return 71;case 72:return 72;case 73:return 72;case 74:return 71;case 75:return 71;case 76:return 71;case 77:return 41;case 78:return 47;case 79:return 40;case 80:return ue.yytext[0];case 81:return 6}},"anonymous"),rules:[/^(?:accTitle\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*\{\s*)/i,/^(?:[\}])/i,/^(?:[^\}]*)/i,/^(?:.*direction\s+TB[^\n]*)/i,/^(?:.*direction\s+BT[^\n]*)/i,/^(?:.*direction\s+RL[^\n]*)/i,/^(?:.*direction\s+LR[^\n]*)/i,/^(?:[\n]+)/i,/^(?:\s+)/i,/^(?:[\s]+)/i,/^(?:"[^"%\r\n\v\b\\]+")/i,/^(?:"[^"]*")/i,/^(?:erDiagram\b)/i,/^(?:\{)/i,/^(?:#)/i,/^(?:#)/i,/^(?:,)/i,/^(?::::)/i,/^(?::)/i,/^(?:\s+)/i,/^(?:\b((?:PK)|(?:FK)|(?:UK))\b)/i,/^(?:([^\s]*)[~].*[~]([^\s]*))/i,/^(?:([\*A-Za-z_\u00C0-\uFFFF][A-Za-z0-9\-\_\[\]\(\)\.,\u00C0-\uFFFF\*]*))/i,/^(?:[`])/i,/^(?:[^`]+)/i,/^(?:[`])/i,/^(?:"[^"]*")/i,/^(?:[\n]+)/i,/^(?:\})/i,/^(?:.)/i,/^(?:\[)/i,/^(?:\])/i,/^(?:style\b)/i,/^(?:[\n]+)/i,/^(?:\s+)/i,/^(?::)/i,/^(?:,)/i,/^(?:#)/i,/^(?:classDef\b)/i,/^(?:class\b)/i,/^(?:one or zero\b)/i,/^(?:one or more\b)/i,/^(?:one or many\b)/i,/^(?:1\+)/i,/^(?:\|o\b)/i,/^(?:zero or one\b)/i,/^(?:zero or more\b)/i,/^(?:zero or many\b)/i,/^(?:0\+)/i,/^(?:\}o\b)/i,/^(?:many\(0\))/i,/^(?:many\(1\))/i,/^(?:many\b)/i,/^(?:\}\|)/i,/^(?:one\b)/i,/^(?:only one\b)/i,/^(?:[0-9]+\.[0-9]+)/i,/^(?:1(?=\s+[A-Za-z_"']))/i,/^(?:1(?=\s+[0-9]))/i,/^(?:1(?=(--|\.\.|\.-|-\.)))/i,/^(?:1\b)/i,/^(?:[0-9]+)/i,/^(?:\|\|)/i,/^(?:o\|)/i,/^(?:o\{)/i,/^(?:\|\{)/i,/^(?:u(?=[\.\-\|]))/i,/^(?:\.\.)/i,/^(?:--)/i,/^(?:to\b)/i,/^(?:optionally to\b)/i,/^(?:\.-)/i,/^(?:-\.)/i,/^(?:([^\x00-\x7F]|\w|-|\*)+)/i,/^(?:;)/i,/^(?:([^\x00-\x7F]|\w|-|\*|\.)+)/i,/^(?:.)/i,/^(?:$)/i],conditions:{style:{rules:[37,38,39,40,41,77,78],inclusive:!1},acc_descr_multiline:{rules:[5,6],inclusive:!1},acc_descr:{rules:[3],inclusive:!1},acc_title:{rules:[1],inclusive:!1},block_bq:{rules:[28,29],inclusive:!1},block:{rules:[23,24,25,26,27,30,31,32,33],inclusive:!1},INITIAL:{rules:[0,2,4,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,34,35,36,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,79,80,81],inclusive:!0}}};return Pe})();ae.lexer=Re;function be(){this.yy={}}return o(be,"Parser"),be.prototype=ae,ae.Parser=be,new be})();ZF.parser=ZF;STe=ZF});var DA,ATe=F(()=>{"use strict";vt();Xt();Nn();Qt();DA=class{constructor(){this.entities=new Map;this.relationships=[];this.classes=new Map;this.direction="TB";this.Cardinality={ZERO_OR_ONE:"ZERO_OR_ONE",ZERO_OR_MORE:"ZERO_OR_MORE",ONE_OR_MORE:"ONE_OR_MORE",ONLY_ONE:"ONLY_ONE",MD_PARENT:"MD_PARENT"};this.Identification={NON_IDENTIFYING:"NON_IDENTIFYING",IDENTIFYING:"IDENTIFYING"};this.setAccTitle=kr;this.getAccTitle=Ar;this.setAccDescription=Rr;this.getAccDescription=_r;this.setDiagramTitle=Or;this.getDiagramTitle=Lr;this.getConfig=o(()=>Ae().er,"getConfig");this.clear(),this.addEntity=this.addEntity.bind(this),this.addAttributes=this.addAttributes.bind(this),this.addRelationship=this.addRelationship.bind(this),this.setDirection=this.setDirection.bind(this),this.addCssStyles=this.addCssStyles.bind(this),this.addClass=this.addClass.bind(this),this.setClass=this.setClass.bind(this),this.setAccTitle=this.setAccTitle.bind(this),this.setAccDescription=this.setAccDescription.bind(this)}static{o(this,"ErDB")}addEntity(t,r=""){return this.entities.has(t)?!this.entities.get(t)?.alias&&r&&(this.entities.get(t).alias=r,Z.info(`Add alias '${r}' to entity '${t}'`)):(this.entities.set(t,{id:`entity-${t}-${this.entities.size}`,label:t,attributes:[],alias:r,shape:"erBox",look:Ae().look??"default",cssClasses:"default",cssStyles:[],labelType:"markdown"}),Z.info("Added new entity :",t)),this.entities.get(t)}getEntity(t){return this.entities.get(t)}getEntities(){return this.entities}getClasses(){return this.classes}addAttributes(t,r){let n=this.addEntity(t),i;for(i=r.length-1;i>=0;i--)r[i].keys||(r[i].keys=[]),r[i].comment||(r[i].comment=""),n.attributes.push(r[i]),Z.debug("Added attribute ",r[i].name)}addRelationship(t,r,n,i){let a=this.entities.get(t),s=this.entities.get(n);if(!a||!s)return;let l={entityA:a.id,roleA:r,entityB:s.id,relSpec:i};this.relationships.push(l),Z.debug("Added new relationship :",l)}getRelationships(){return this.relationships}getDirection(){return this.direction}setDirection(t){this.direction=t}getCompiledStyles(t){let r=[];for(let n of t){let i=this.classes.get(n);i?.styles&&(r=[...r,...i.styles??[]].map(a=>a.trim())),i?.textStyles&&(r=[...r,...i.textStyles??[]].map(a=>a.trim()))}return r}addCssStyles(t,r){for(let n of t){let i=this.entities.get(n);if(!r||!i)return;for(let a of r)i.cssStyles.push(a)}}addClass(t,r){t.forEach(n=>{let i=this.classes.get(n);i===void 0&&(i={id:n,styles:[],textStyles:[]},this.classes.set(n,i)),r&&r.forEach(function(a){if(/color/.exec(a)){let s=a.replace("fill","bgFill");i.textStyles.push(s)}i.styles.push(a)})})}setClass(t,r){for(let n of t){let i=this.entities.get(n);if(i)for(let a of r)i.cssClasses+=" "+a}}clear(){this.entities=new Map,this.classes=new Map,this.relationships=[],yr()}getData(){let t=[],r=[],n=Ae(),i=0;for(let s of this.entities.keys()){let l=this.entities.get(s);l&&(l.cssCompiledStyles=this.getCompiledStyles(l.cssClasses.split(" ")),l.colorIndex=i++,t.push(l))}let a=0;for(let s of this.relationships){let l={id:eu(s.entityA,s.entityB,{prefix:"id",counter:a++}),type:"normal",curve:"basis",start:s.entityA,end:s.entityB,label:s.roleA,labelpos:"c",thickness:"normal",classes:"relationshipLine",arrowTypeStart:s.relSpec.cardB.toLowerCase(),arrowTypeEnd:s.relSpec.cardA.toLowerCase(),pattern:s.relSpec.relType=="IDENTIFYING"?"solid":"dashed",look:n.look,labelType:"markdown"};r.push(l)}return{nodes:t,edges:r,other:{},config:n,direction:"TB"}}}});var QF={};ir(QF,{draw:()=>p0t});var p0t,RTe=F(()=>{"use strict";Xt();vt();Am();Qf();Jf();Qt();$r();p0t=o(async function(e,t,r,n){Z.info("REF0:"),Z.info("Drawing er diagram (unified)",t);let{securityLevel:i,er:a,layout:s}=Ae(),l=n.db.getData(),u=pl(t,i);l.type=n.type,l.layoutAlgorithm=Su(s),l.config.flowchart.nodeSpacing=a?.nodeSpacing||140,l.config.flowchart.rankSpacing=a?.rankSpacing||80,l.direction=n.db.getDirection();let{config:h}=l,{look:d}=h;d==="neo"?l.markers=["only_one_neo","zero_or_one_neo","one_or_more_neo","zero_or_more_neo"]:l.markers=["only_one","zero_or_one","one_or_more","zero_or_more"],l.diagramId=t,await Al(l,u),l.layoutAlgorithm==="elk"&&u.select(".edges").lower();let f=u.selectAll('[id*="-background"]');Array.from(f).length>0&&f.each(function(){let m=et(this),y=m.attr("id").replace("-background",""),v=u.select(`#${CSS.escape(y)}`);if(!v.empty()){let x=v.attr("transform");m.attr("transform",x)}});let p=8;Zt.insertTitle(u,"erDiagramTitleText",a?.titleTopMargin??25,n.db.getDiagramTitle()),vo(u,p,"erDiagram",a?.useMaxWidth??!0)},"draw")});var _Te,IA,m0t,g0t,LTe,DTe=F(()=>{"use strict";zi();_Te=o((e,t)=>{let r=$p,n=r(e,"r"),i=r(e,"g"),a=r(e,"b");return Oi(n,i,a,t)},"fade"),IA=new Set(["redux-color","redux-dark-color"]),m0t=o(e=>{let{theme:t,look:r,bkgColorArray:n,borderColorArray:i}=e;if(!IA.has(t))return"";let a=n?.length>0,s="";for(let l=0;l<e.THEME_COLOR_LIMIT;l++)s+=`
 
     [data-look="${r}"][data-color-id="color-${l}"].node path {
-    stroke: ${n[l]};
-    ${a?`fill: ${i[l]};`:""}
+    stroke: ${i[l]};
+    ${a?`fill: ${n[l]};`:""}
     }
 
     [data-look="${r}"][data-color-id="color-${l}"].node  rect {
-    stroke: ${n[l]};
-    ${a?`fill: ${i[l]};`:""}
+    stroke: ${i[l]};
+    ${a?`fill: ${n[l]};`:""}
      }
-    `;return s},"genColor"),olt=o(e=>{let{look:t,theme:r,erEdgeLabelBackground:i,strokeWidth:n}=e;return`
-    ${slt(e)}
+    `;return s},"genColor"),g0t=o(e=>{let{look:t,theme:r,erEdgeLabelBackground:n,strokeWidth:i}=e;return`
+    ${m0t(e)}
   .entityBox {
     fill: ${e.mainBkg};
     stroke: ${e.nodeBorder};
@@ -1091,14 +1091,14 @@
   }
 
   .labelBkg {
-    background-color: ${pE.has(r)&&i?i:c1e(e.tertiaryColor,.5)};
+    background-color: ${IA.has(r)&&n?n:_Te(e.tertiaryColor,.5)};
   }
 
   .edgeLabel {
-    background-color: ${pE.has(r)&&i?i:e.edgeLabelBackground};
+    background-color: ${IA.has(r)&&n?n:e.edgeLabelBackground};
   }
   .edgeLabel .label rect {
-    fill: ${pE.has(r)&&i?i:e.edgeLabelBackground};
+    fill: ${IA.has(r)&&n?n:e.edgeLabelBackground};
   }
   .edgeLabel .label text {
     fill: ${e.textColor};
@@ -1125,12 +1125,12 @@
   {
     fill: ${e.mainBkg};
     stroke: ${e.nodeBorder};
-    stroke-width: ${t==="neo"?n:"1px"};
+    stroke-width: ${t==="neo"?i:"1px"};
   }
 
   .relationshipLine {
     stroke: ${e.lineColor};
-    stroke-width: ${t==="neo"?n:"1px"};
+    stroke-width: ${t==="neo"?i:"1px"};
     fill: none;
   }
 
@@ -1140,208 +1140,213 @@
     stroke-width: 1;
   }
   [data-look=neo].labelBkg {
-    background-color: ${c1e(e.tertiaryColor,.5)};
+    background-color: ${_Te(e.tertiaryColor,.5)};
   }
-`},"getStyles"),u1e=olt});var d1e={};xr(d1e,{diagram:()=>llt});var llt,f1e=z(()=>{"use strict";s1e();o1e();l1e();h1e();llt={parser:a1e,get db(){return new fE},renderer:UP,styles:u1e}});function Rn(e){return typeof e=="object"&&e!==null&&typeof e.$type=="string"}function ss(e){return typeof e=="object"&&e!==null&&typeof e.$refText=="string"&&"ref"in e}function Qc(e){return typeof e=="object"&&e!==null&&typeof e.$refText=="string"&&"items"in e}function f$(e){return typeof e=="object"&&e!==null&&typeof e.name=="string"&&typeof e.type=="string"&&typeof e.path=="string"}function g0(e){return typeof e=="object"&&e!==null&&typeof e.info=="object"&&typeof e.message=="string"}function oh(e){return typeof e=="object"&&e!==null&&Array.isArray(e.content)}function q0(e){return typeof e=="object"&&e!==null&&typeof e.tokenType=="object"}function H5(e){return oh(e)&&typeof e.fullText=="string"}function hve(e){return typeof e=="string"?e:typeof e>"u"?"undefined":typeof e.toString=="function"?e.toString():Object.prototype.toString.call(e)}function rT(e){return!!e&&typeof e[Symbol.iterator]=="function"}function gi(...e){if(e.length===1){let t=e[0];if(t instanceof Kc)return t;if(rT(t))return new Kc(()=>t[Symbol.iterator](),r=>r.next());if(typeof t.length=="number")return new Kc(()=>({index:0}),r=>r.index<t.length?{done:!1,value:t[r.index++]}:as)}return e.length>1?new Kc(()=>({collIndex:0,arrIndex:0}),t=>{do{if(t.iterator){let r=t.iterator.next();if(!r.done)return r;t.iterator=void 0}if(t.array){if(t.arrIndex<t.array.length)return{done:!1,value:t.array[t.arrIndex++]};t.array=void 0,t.arrIndex=0}if(t.collIndex<e.length){let r=e[t.collIndex++];rT(r)?t.iterator=r[Symbol.iterator]():r&&typeof r.length=="number"&&(t.array=r)}}while(t.iterator||t.array||t.collIndex<e.length);return as}):H1}function j1(e,t={}){for(let[r,i]of Object.entries(e))r.startsWith("$")||(Array.isArray(i)?i.forEach((n,a)=>{Rn(n)&&(n.$container=e,n.$containerProperty=r,n.$containerIndex=a,t.deep&&j1(n,t))}):Rn(i)&&(i.$container=e,i.$containerProperty=r,t.deep&&j1(i,t)))}function U0(e,t){let r=e;for(;r;){if(t(r))return r;r=r.$container}}function dve(e,t){let r=e;for(;r;){if(t(r))return!0;r=r.$container}return!1}function Wl(e){let r=V1(e).$document;if(!r)throw new Error("AST node has no document.");return r}function V1(e){for(;e.$container;)e=e.$container;return e}function r5(e){return ss(e)?e.ref?[e.ref]:[]:Qc(e)?e.items.map(t=>t.ref):[]}function CT(e,t){if(!e)throw new Error("Node must be an AstNode.");let r=t?.range;return new Kc(()=>({keys:Object.keys(e),keyIndex:0,arrayIndex:0}),i=>{for(;i.keyIndex<i.keys.length;){let n=i.keys[i.keyIndex];if(!n.startsWith("$")){let a=e[n];if(Rn(a)){if(i.keyIndex++,i5(a,r))return{done:!1,value:a}}else if(Array.isArray(a)){for(;i.arrayIndex<a.length;){let s=i.arrayIndex++,l=a[s];if(Rn(l)&&i5(l,r))return{done:!1,value:l}}i.arrayIndex=0}}i.keyIndex++}return as})}function yh(e,t){if(!e)throw new Error("Root node must be an AstNode.");return new Y1(e,r=>CT(r,t))}function ql(e,t){if(e){if(t?.range&&!i5(e,t.range))return new Y1(e,()=>[])}else throw new Error("Root node must be an AstNode.");return new Y1(e,r=>CT(r,t),{includeRoot:!0})}function i5(e,t){if(!t)return!0;let r=e.$cstNode?.range;return r?$$(r,t):!1}function X1(e){return new Kc(()=>({keys:Object.keys(e),keyIndex:0,arrayIndex:0}),t=>{for(;t.keyIndex<t.keys.length;){let r=t.keys[t.keyIndex];if(!r.startsWith("$")){let i=e[r];if(ss(i)||Qc(i))return t.keyIndex++,{done:!1,value:{reference:i,container:e,property:r}};if(Array.isArray(i)){for(;t.arrayIndex<i.length;){let n=t.arrayIndex++,a=i[n];if(ss(a)||Qc(i))return{done:!1,value:{reference:a,container:e,property:r,index:n}}}t.arrayIndex=0}}t.keyIndex++}return as})}function g$(e,t){let r=e.getTypeMetaData(t.$type),i=t;for(let n of Object.values(r.properties))n.defaultValue!==void 0&&i[n.name]===void 0&&(i[n.name]=y$(n.defaultValue))}function y$(e){return Array.isArray(e)?[...e.map(y$)]:e}function n5(e,t,r){let i={$type:e.$type};r&&(r.set(e,i),r.set(i,e));for(let[n,a]of Object.entries(e))if(!n.startsWith("$"))if(Rn(a))i[n]=n5(a,t,r);else if(ss(a))i[n]=t(i,n,a.$refNode,a.$refText,a);else if(Array.isArray(a)){let s=[];for(let l of a)Rn(l)?s.push(n5(l,t,r)):ss(l)?s.push(t(i,n,l.$refNode,l.$refText,l)):s.push(l);i[n]=s}else i[n]=a;return j1(i,{deep:!0}),i}function Y5(e){return dr.isInstance(e,zs.$type)}function H0(e){return dr.isInstance(e,$2.$type)}function pve(e){return dr.isInstance(e,N1.$type)}function mve(e){return dr.isInstance(e,ho.$type)}function pf(e){return dr.isInstance(e,of.$type)}function j5(e){return dr.isInstance(e,z2.$type)}function gve(e){return dr.isInstance(e,a5.$type)}function v$(e){return dr.isInstance(e,s5.$type)}function lh(e){return dr.isInstance(e,lf.$type)}function x$(e){return dr.isInstance(e,o5.$type)}function b$(e){return dr.isInstance(e,cf.$type)}function yve(e){return dr.isInstance(e,uf.$type)}function T$(e){return dr.isInstance(e,G2.$type)}function Y0(e){return dr.isInstance(e,hf.$type)}function C$(e){return dr.isInstance(e,V2.$type)}function k$(e){return dr.isInstance(e,l5.$type)}function vve(e){return dr.isInstance(e,nh.$type)}function xve(e){return dr.isInstance(e,c5.$type)}function j0(e){return dr.isInstance(e,y0.$type)}function kT(e){return dr.isInstance(e,u5.$type)}function K1(e){return dr.isInstance(e,Hc.$type)}function bve(e){return dr.isInstance(e,W2.$type)}function Tve(e){return dr.isInstance(e,h5.$type)}function w$(e){return dr.isInstance(e,I1.$type)}function ch(e){return dr.isInstance(e,O1.$type)}function Cve(e){return dr.isInstance(e,P1.$type)}function S$(e){return dr.isInstance(e,v0.$type)}function E$(e){return dr.isInstance(e,d5.$type)}function kve(e){return dr.isInstance(e,f5.$type)}function wve(e){return dr.isInstance(e,B1.$type)}function A$(e){return dr.isInstance(e,p5.$type)}function cs(e){return dr.isInstance(e,zl.$type)}function _$(e){return dr.isInstance(e,q2.$type)}function D$(e){return dr.isInstance(e,x0.$type)}function R$(e){return dr.isInstance(e,m5.$type)}function uh(e){return dr.isInstance(e,b0.$type)}function X5(e){return dr.isInstance(e,F1.$type)}function Sve(e){return dr.isInstance(e,g5.$type)}function L$(e){return dr.isInstance(e,T0.$type)}function Eve(e){return dr.isInstance(e,Gs.$type)}function M$(e){return dr.isInstance(e,C0.$type)}function rl(e){return dr.isInstance(e,ah.$type)}function K5(e){return dr.isInstance(e,k0.$type)}function Z5(e){return dr.isInstance(e,U2.$type)}function Ave(e){return dr.isInstance(e,w0.$type)}function _ve(e){return dr.isInstance(e,S0.$type)}function N$(e){return dr.isInstance(e,y5.$type)}function Q5(e){return dr.isInstance(e,H2.$type)}function I$(e){return dr.isInstance(e,E0.$type)}function Dve(e){return dr.isInstance(e,A0.$type)}function O$(e){return dr.isInstance(e,$1.$type)}function Rve(e){let t=e,r=!1;for(;t;){let i=U0(t.grammarSource,cs);if(i&&i.dataType)t=t.container,r=!0;else return r?t:void 0}}function Z1(e){return new Y1(e,t=>oh(t)?t.content:[],{includeRoot:!0})}function Lve(e){return Z1(e).filter(q0)}function B$(e,t){for(;e.container;)if(e=e.container,e===t)return!0;return!1}function nT(e){return{start:{character:e.startColumn-1,line:e.startLine-1},end:{character:e.endColumn,line:e.endLine-1}}}function Q1(e){if(!e)return;let{offset:t,end:r,range:i}=e;return{range:i,offset:t,end:r,length:r-t}}function F$(e,t){if(e.end.line<t.start.line||e.end.line===t.start.line&&e.end.character<=t.start.character)return Xc.Before;if(e.start.line>t.end.line||e.start.line===t.end.line&&e.start.character>=t.end.character)return Xc.After;let r=e.start.line>t.start.line||e.start.line===t.start.line&&e.start.character>=t.start.character,i=e.end.line<t.end.line||e.end.line===t.end.line&&e.end.character<=t.end.character;return r&&i?Xc.Inside:r?Xc.OverlapBack:i?Xc.OverlapFront:Xc.Outside}function $$(e,t){return F$(e,t)>Xc.After}function Mve(e,t,r=z$){if(e){if(t>0){let i=t-e.offset,n=e.text.charAt(i);r.test(n)||t--}return J5(e,t)}}function G$(e,t){if(e){let r=q$(e,!0);if(r&&v5(r,t))return r;if(H5(e)){let i=e.content.findIndex(n=>!n.hidden);for(let n=i-1;n>=0;n--){let a=e.content[n];if(v5(a,t))return a}}}}function v5(e,t){return q0(e)&&t.includes(e.tokenType.name)}function J5(e,t){if(q0(e))return e;if(oh(e)){let r=W$(e,t,!1);if(r)return J5(r,t)}}function V$(e,t){if(q0(e))return e;if(oh(e)){let r=W$(e,t,!0);if(r)return V$(r,t)}}function W$(e,t,r){let i=0,n=e.content.length-1,a;for(;i<=n;){let s=Math.floor((i+n)/2),l=e.content[s];if(l.offset<=t&&l.end>t)return l;l.end<=t?(a=r?l:void 0,i=s+1):n=s-1}return a}function q$(e,t=!0){for(;e.container;){let r=e.container,i=r.content.indexOf(e);for(;i>0;){i--;let n=r.content[i];if(t||!n.hidden)return n}e=r}}function Nve(e,t=!0){for(;e.container;){let r=e.container,i=r.content.indexOf(e),n=r.content.length-1;for(;i<n;){i++;let a=r.content[i];if(t||!a.hidden)return a}e=r}}function Ive(e){if(e.range.start.character===0)return e;let t=e.range.start.line,r=e,i;for(;e.container;){let n=e.container,a=i??n.content.indexOf(e);if(a===0?(e=n,i=void 0):(i=a-1,e=n.content[i]),e.range.start.line!==t)break;r=e}return r}function Ove(e,t){let r=Pve(e,t);return r?r.parent.content.slice(r.a+1,r.b):[]}function Pve(e,t){let r=pF(e),i=pF(t),n;for(let a=0;a<r.length&&a<i.length;a++){let s=r[a],l=i[a];if(s.parent===l.parent)n={parent:s.parent,a:s.index,b:l.index};else break}return n}function pF(e){let t=[];for(;e.container;){let r=e.container,i=r.content.indexOf(e);t.push({parent:r,index:i}),e=r}return t.reverse()}function bf(e,t="Error: Got unexpected value."){throw new Error(t)}function H$(e,t="Error: Condition is violated."){if(!e)throw new Error(t)}function yr(e){return e.charCodeAt(0)}function GE(e,t){Array.isArray(e)?e.forEach(function(r){t.push(r)}):t.push(e)}function R1(e,t){if(e[t]===!0)throw"duplicate flag "+t;let r=e[t];e[t]=!0}function u0(e){if(e===void 0)throw Error("Internal Error - Should never get here!");return!0}function I2(){throw Error("Internal Error - Should never get here!")}function mF(e){return e.type==="Character"}function zve(e){try{typeof e!="string"&&(e=e.source),e=`/${e}/`;let t=$ve.pattern(e),r=[];for(let i of t.value.value)N0.reset(e),N0.visit(i),r.push({start:N0.startRegexp,end:N0.endRegex});return r}catch{return[]}}function j$(e){try{return typeof e=="string"&&(e=new RegExp(e)),e=e.toString(),N0.reset(e),N0.visit($ve.pattern(e)),N0.multiline}catch{return!1}}function rA(e){let t=typeof e=="string"?new RegExp(e):e;return Gve.some(r=>t.test(r))}function sy(e){return e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function X$(e,t){let r=K$(e),i=t.match(r);return!!i&&i[0].length>0}function K$(e){typeof e=="string"&&(e=new RegExp(e));let t=e,r=e.source,i=0;function n(){let a="",s;function l(h){a+=r.substr(i,h),i+=h}o(l,"appendRaw"),S(l,"appendRaw");function u(h){a+="(?:"+r.substr(i,h)+"|$)",i+=h}for(o(u,"appendOptional"),S(u,"appendOptional");i<r.length;)switch(r[i]){case"\\":switch(r[i+1]){case"c":u(3);break;case"x":u(4);break;case"u":t.unicode?r[i+2]==="{"?u(r.indexOf("}",i)-i+1):u(6):u(2);break;case"p":case"P":t.unicode?u(r.indexOf("}",i)-i+1):u(2);break;case"k":u(r.indexOf(">",i)-i+1);break;default:u(2);break}break;case"[":s=/\[(?:\\.|.)*?\]/g,s.lastIndex=i,s=s.exec(r)||[],u(s[0].length);break;case"|":case"^":case"$":case"*":case"+":case"?":l(1);break;case"{":s=/\{\d+,?\d*\}/g,s.lastIndex=i,s=s.exec(r),s?l(s[0].length):u(1);break;case"(":if(r[i+1]==="?")switch(r[i+2]){case":":a+="(?:",i+=3,a+=n()+"|$)";break;case"=":a+="(?=",i+=3,a+=n()+")";break;case"!":s=i,i+=3,n(),a+=r.substr(s,i-s);break;case"<":switch(r[i+3]){case"=":case"!":s=i,i+=4,n(),a+=r.substr(s,i-s);break;default:l(r.indexOf(">",i)-i+1),a+=n()+"|$)";break}break}else l(1),a+=n()+"|$)";break;case")":return++i,a;default:u(1);break}return a}return o(n,"process2"),S(n,"process"),new RegExp(n(),e.flags)}function Z$(e){return e.rules.find(t=>cs(t)&&t.entry)}function Q$(e){return e.rules.filter(t=>rl(t)&&t.hidden)}function iA(e,t){let r=new Set,i=Z$(e);if(!i)return new Set(e.rules);let n=[i].concat(Q$(e));for(let s of n)J$(s,r,t);let a=new Set;for(let s of e.rules)(r.has(s.name)||rl(s)&&s.hidden)&&a.add(s);return a}function J$(e,t,r){t.add(e.name),yh(e).forEach(i=>{if(uh(i)||r&&K5(i)){let n=i.rule.ref;n&&!t.has(n.name)&&J$(n,t,r)}})}function Vve(e){let t=new Set;return yh(e).forEach(r=>{Y0(r)&&(cs(r.type.ref)&&t.add(r.type.ref),kT(r.type.ref)&&cs(r.type.ref.$container)&&t.add(r.type.ref.$container))}),t}function ez(e){if(e.terminal)return e.terminal;if(e.type.ref)return oA(e.type.ref)?.terminal}function tz(e){return e.hidden&&!rA(ET(e))}function rz(e,t){return!e||!t?[]:aA(e,t,e.astNode,!0)}function nA(e,t,r){if(!e||!t)return;let i=aA(e,t,e.astNode,!0);if(i.length!==0)return r!==void 0?r=Math.max(0,Math.min(r,i.length-1)):r=0,i[r]}function aA(e,t,r,i){if(!i){let n=U0(e.grammarSource,lh);if(n&&n.feature===t)return[e]}return oh(e)&&e.astNode===r?e.content.flatMap(n=>aA(n,t,r,!1)):[]}function Wve(e,t){return e?sA(e,t,e?.astNode):[]}function iz(e,t,r){if(!e)return;let i=sA(e,t,e?.astNode);if(i.length!==0)return r!==void 0?r=Math.max(0,Math.min(r,i.length-1)):r=0,i[r]}function sA(e,t,r){if(e.astNode!==r)return[];if(ch(e.grammarSource)&&e.grammarSource.value===t)return[e];let i=Z1(e).iterator(),n,a=[];do if(n=i.next(),!n.done){let s=n.value;s.astNode===r?ch(s.grammarSource)&&s.grammarSource.value===t&&a.push(s):i.prune()}while(!n.done);return a}function nz(e){let t=e.astNode;for(;t===e.container?.astNode;){let r=U0(e.grammarSource,lh);if(r)return r;e=e.container}}function oA(e){let t=e;return kT(t)&&(pf(t.$container)?t=t.$container.$container:H0(t.$container)?t=t.$container:bf(t.$container)),az(e,t,new Map)}function az(e,t,r){function i(n,a){let s;return U0(n,lh)||(s=az(a,a,r)),r.set(e,s),s}if(o(i,"go"),S(i,"go"),r.has(e))return r.get(e);r.set(e,void 0);for(let n of yh(t)){if(lh(n)&&n.feature.toLowerCase()==="name")return r.set(e,n),n;if(uh(n)&&cs(n.rule.ref))return i(n,n.rule.ref);if(X5(n)&&n.typeRef?.ref)return i(n,n.typeRef.ref)}}function sz(e){let t=e.$container;if(j0(t)){let r=t.elements,i=r.indexOf(e);for(let n=i-1;n>=0;n--){let a=r[n];if(pf(a))return a;{let s=yh(r[n]).find(pf);if(s)return s}}}if(Y5(t))return sz(t)}function qve(e,t){return e==="?"||e==="*"||j0(t)&&!!t.guardCondition}function Uve(e){return e==="*"||e==="+"}function Hve(e){return e==="+="}function wT(e){return oz(e,new Set)}function oz(e,t){if(t.has(e))return!0;t.add(e);for(let r of yh(e))if(uh(r)){if(!r.rule.ref||cs(r.rule.ref)&&!oz(r.rule.ref,t)||K1(r.rule.ref))return!1}else{if(lh(r))return!1;if(pf(r))return!1}return!!e.definition}function Yve(e){return T5(e.type,new Set)}function T5(e,t){if(t.has(e))return!0;if(t.add(e),v$(e))return!1;if(_$(e))return!1;if(N$(e))return e.types.every(r=>T5(r,t));if(X5(e)){if(e.primitiveType!==void 0)return!0;if(e.stringType!==void 0)return!0;if(e.typeRef!==void 0){let r=e.typeRef.ref;return Z5(r)?T5(r.type,t):!1}else return!1}else return!1}function ST(e){if(!rl(e)){if(e.inferredType)return e.inferredType.name;if(e.dataType)return e.dataType;if(e.returnType){let t=e.returnType.ref;if(t)return t.name}}}function $0(e){if(H0(e))return cs(e)&&wT(e)?e.name:ST(e)??e.name;if(w$(e)||Z5(e)||R$(e))return e.name;if(pf(e)){let t=lz(e);if(t)return t}else if(kT(e))return e.name;throw new Error("Cannot get name of Unknown Type")}function lz(e){if(e.inferredType)return e.inferredType.name;if(e.type?.ref)return $0(e.type.ref)}function jve(e){return rl(e)?e.type?.name??"string":cs(e)&&wT(e)?e.name:ST(e)??e.name}function cz(e){return rl(e)?e.type?.name??"string":ST(e)??e.name}function ET(e){let t={s:!1,i:!1,u:!1},r=X0(e.definition,t),i=Object.entries(t).filter(([,n])=>n).map(([n])=>n).join("");return new RegExp(r,i)}function X0(e,t){if(L$(e))return Xve(e);if(M$(e))return Kve(e);if(b$(e))return Jve(e);if(K5(e)){let r=e.rule.ref;if(!r)throw new Error("Missing rule reference.");return Jc(X0(r.definition),{cardinality:e.cardinality,lookahead:e.lookahead,parenthesized:e.parenthesized})}else{if(S$(e))return Qve(e);if(I$(e))return Zve(e);if(D$(e)){let r=e.regex.lastIndexOf("/"),i=e.regex.substring(1,r),n=e.regex.substring(r+1);return t&&(t.i=n.includes("i"),t.s=n.includes("s"),t.u=n.includes("u")),Jc(i,{cardinality:e.cardinality,lookahead:e.lookahead,parenthesized:e.parenthesized,wrap:!1})}else{if(O$(e))return Jc(uz,{cardinality:e.cardinality,lookahead:e.lookahead,parenthesized:e.parenthesized});throw new Error(`Invalid terminal element: ${e?.$type}, ${e?.$cstNode?.text}`)}}}function Xve(e){return Jc(e.elements.map(t=>X0(t)).join("|"),{cardinality:e.cardinality,lookahead:e.lookahead,parenthesized:e.parenthesized,wrap:!1})}function Kve(e){return Jc(e.elements.map(t=>X0(t)).join(""),{cardinality:e.cardinality,lookahead:e.lookahead,parenthesized:e.parenthesized,wrap:!1})}function Zve(e){return Jc(`${uz}*?${X0(e.terminal)}`,{cardinality:e.cardinality,lookahead:e.lookahead,parenthesized:e.parenthesized})}function Qve(e){return Jc(`(?!${X0(e.terminal)})${uz}*?`,{cardinality:e.cardinality,lookahead:e.lookahead,parenthesized:e.parenthesized})}function Jve(e){return e.right?Jc(`[${VE(e.left)}-${VE(e.right)}]`,{cardinality:e.cardinality,lookahead:e.lookahead,parenthesized:e.parenthesized,wrap:!1}):Jc(VE(e.left),{cardinality:e.cardinality,lookahead:e.lookahead,parenthesized:e.parenthesized,wrap:!1})}function VE(e){return sy(e.value)}function Jc(e,t){return(t.parenthesized||t.lookahead||t.wrap!==!1)&&(e=`(${t.lookahead??(t.parenthesized?"":"?:")}${e})`),t.cardinality?`${e}${t.cardinality}`:e}function hz(e){let t=[],r=e.Grammar;for(let i of r.rules)rl(i)&&tz(i)&&j$(ET(i))&&t.push(i.name);return{multilineCommentRules:t,nameRegexp:z$}}function rxe(e){var t=ict.call(e,x2),r=e[x2];try{e[x2]=void 0;var i=!0}catch{}var n=nct.call(e);return i&&(t?e[x2]=r:delete e[x2]),n}function ixe(e){return oct.call(e)}function nxe(e){return e==null?e===void 0?uct:cct:v1e&&v1e in Object(e)?act(e):lct(e)}function axe(e){return e!=null&&typeof e=="object"}function sxe(e){return typeof e=="symbol"||Yl(e)&&Tf(e)==hct}function oxe(e,t){for(var r=-1,i=e==null?0:e.length,n=Array(i);++r<i;)n[r]=t(e[r],r,e);return n}function dz(e){if(typeof e=="string")return e;if(Kr(e))return AT(e,dz)+"";if(lA(e))return b1e?b1e.call(e):"";var t=e+"";return t=="0"&&1/e==-fct?"-0":t}function lxe(e){for(var t=e.length;t--&&mct.test(e.charAt(t)););return t}function cxe(e){return e&&e.slice(0,gct(e)+1).replace(yct,"")}function uxe(e){var t=typeof e;return e!=null&&(t=="object"||t=="function")}function hxe(e){if(typeof e=="number")return e;if(lA(e))return T1e;if(tl(e)){var t=typeof e.valueOf=="function"?e.valueOf():e;e=tl(t)?t+"":t}if(typeof e!="string")return e===0?e:+e;e=vct(e);var r=bct.test(e);return r||Tct.test(e)?Cct(e.slice(2),r?2:8):xct.test(e)?T1e:+e}function dxe(e){if(!e)return e===0?e:0;if(e=kct(e),e===C1e||e===-C1e){var t=e<0?-1:1;return t*wct}return e===e?e:0}function fxe(e){var t=Sct(e),r=t%1;return t===t?r?t-r:t:0}function pxe(e){return e}function mxe(e){if(!tl(e))return!1;var t=Tf(e);return t==Act||t==_ct||t==Ect||t==Dct}function gxe(e){return!!k1e&&k1e in e}function yxe(e){if(e!=null){try{return Nct.call(e)}catch{}try{return e+""}catch{}}return""}function vxe(e){if(!tl(e)||Lct(e))return!1;var t=vh(e)?zct:Oct;return t.test(K0(e))}function xxe(e,t){return e?.[t]}function bxe(e,t){var r=Vct(e,t);return Gct(r)?r:void 0}function Txe(e,t,r){switch(r.length){case 0:return e.call(t);case 1:return e.call(t,r[0]);case 2:return e.call(t,r[0],r[1]);case 3:return e.call(t,r[0],r[1],r[2])}return e.apply(t,r)}function Cxe(){}function kxe(e,t){var r=-1,i=e.length;for(t||(t=Array(i));++r<i;)t[r]=e[r];return t}function wxe(e){var t=0,r=0;return function(){var i=Kct(),n=Xct-(i-r);if(r=i,n>0){if(++t>=jct)return arguments[0]}else t=0;return e.apply(void 0,arguments)}}function Sxe(e){return function(){return e}}function Exe(e,t){for(var r=-1,i=e==null?0:e.length;++r<i&&t(e[r],r,e)!==!1;);return e}function _xe(e,t,r,i){for(var n=e.length,a=r+(i?1:-1);i?a--:++a<n;)if(t(e[a],a,e))return a;return-1}function Rxe(e){return e!==e}function Lxe(e,t,r){for(var i=r-1,n=e.length;++i<n;)if(e[i]===t)return i;return-1}function Mxe(e,t,r){return t===t?aut(e,t,r):Dxe(e,nut,r)}function Nxe(e,t){var r=e==null?0:e.length;return!!r&&fz(e,t,0)>-1}function Oxe(e,t){var r=typeof e;return t=t??sut,!!t&&(r=="number"||r!="symbol"&&out.test(e))&&e>-1&&e%1==0&&e<t}function Pxe(e,t,r){t=="__proto__"&&C5?C5(e,t,{configurable:!0,enumerable:!0,value:r,writable:!0}):e[t]=r}function Bxe(e,t){return e===t||e!==e&&t!==t}function Fxe(e,t,r){var i=e[t];(!(cut.call(e,t)&&DT(i,r))||r===void 0&&!(t in e))&&pz(e,t,r)}function $xe(e,t,r,i){var n=!r;r||(r={});for(var a=-1,s=t.length;++a<s;){var l=t[a],u=i?i(r[l],e[l],l,r,e):void 0;u===void 0&&(u=e[l]),n?pz(r,l,u):uA(r,l,u)}return r}function zxe(e,t,r){return t=S1e(t===void 0?e.length-1:t,0),function(){for(var i=arguments,n=-1,a=S1e(i.length-t,0),s=Array(a);++n<a;)s[n]=i[t+n];n=-1;for(var l=Array(t+1);++n<t;)l[n]=i[n];return l[t]=r(s),Hct(e,this,l)}}function Gxe(e,t){return iut(uut(e,t,J1),e+"")}function Vxe(e){return typeof e=="number"&&e>-1&&e%1==0&&e<=hut}function Wxe(e){return e!=null&&gz(e.length)&&!vh(e)}function qxe(e,t,r){if(!tl(r))return!1;var i=typeof t;return(i=="number"?ru(r)&&cA(t,r.length):i=="string"&&t in r)?DT(r[t],e):!1}function Uxe(e){return mz(function(t,r){var i=-1,n=r.length,a=n>1?r[n-1]:void 0,s=n>2?r[2]:void 0;for(a=e.length>3&&typeof a=="function"?(n--,a):void 0,s&&hA(r[0],r[1],s)&&(a=n<3?void 0:a,n=1),t=Object(t);++i<n;){var l=r[i];l&&e(t,l,i,a)}return t})}function Hxe(e){var t=e&&e.constructor,r=typeof t=="function"&&t.prototype||fut;return e===r}function Yxe(e,t){for(var r=-1,i=Array(e);++r<e;)i[r]=t(r);return i}function jxe(e){return Yl(e)&&Tf(e)==mut}function Kxe(){return!1}function Qxe(e){return Yl(e)&&gz(e.length)&&!!Gi[Tf(e)]}function Jxe(e){return function(t){return e(t)}}function tbe(e,t){var r=Kr(e),i=!r&&dA(e),n=!r&&!i&&aT(e),a=!r&&!i&&!n&&yz(e),s=r||i||n||a,l=s?put(e.length,String):[],u=l.length;for(var h in e)(t||Qut.call(e,h))&&!(s&&(h=="length"||n&&(h=="offset"||h=="parent")||a&&(h=="buffer"||h=="byteLength"||h=="byteOffset")||cA(h,u)))&&l.push(h);return l}function ibe(e,t){return function(r){return e(t(r))}}function abe(e){if(!LT(e))return eht(e);var t=[];for(var r in Object(e))rht.call(e,r)&&r!="constructor"&&t.push(r);return t}function obe(e){return ru(e)?rbe(e):sbe(e)}function lbe(e){var t=[];if(e!=null)for(var r in Object(e))t.push(r);return t}function cbe(e){if(!tl(e))return sht(e);var t=LT(e),r=[];for(var i in e)i=="constructor"&&(t||!lht.call(e,i))||r.push(i);return r}function ube(e){return ru(e)?rbe(e,!0):cht(e)}function hbe(e,t){if(Kr(e))return!1;var r=typeof e;return r=="number"||r=="symbol"||r=="boolean"||e==null||lA(e)?!0:hht.test(e)||!uht.test(e)||t!=null&&e in Object(t)}function dbe(){this.__data__=sT?sT(null):{},this.size=0}function fbe(e){var t=this.has(e)&&delete this.__data__[e];return this.size-=t?1:0,t}function pbe(e){var t=this.__data__;if(sT){var r=t[e];return r===mht?void 0:r}return yht.call(t,e)?t[e]:void 0}function mbe(e){var t=this.__data__;return sT?t[e]!==void 0:bht.call(t,e)}function gbe(e,t){var r=this.__data__;return this.size+=this.has(e)?0:1,r[e]=sT&&t===void 0?Cht:t,this}function Q0(e){var t=-1,r=e==null?0:e.length;for(this.clear();++t<r;){var i=e[t];this.set(i[0],i[1])}}function ybe(){this.__data__=[],this.size=0}function vbe(e,t){for(var r=e.length;r--;)if(DT(e[r][0],t))return r;return-1}function xbe(e){var t=this.__data__,r=pA(t,e);if(r<0)return!1;var i=t.length-1;return r==i?t.pop():Eht.call(t,r,1),--this.size,!0}function bbe(e){var t=this.__data__,r=pA(t,e);return r<0?void 0:t[r][1]}function Tbe(e){return pA(this.__data__,e)>-1}function Cbe(e,t){var r=this.__data__,i=pA(r,e);return i<0?(++this.size,r.push([e,t])):r[i][1]=t,this}function J0(e){var t=-1,r=e==null?0:e.length;for(this.clear();++t<r;){var i=e[t];this.set(i[0],i[1])}}function kbe(){this.size=0,this.__data__={hash:new R1e,map:new(oT||mA),string:new R1e}}function wbe(e){var t=typeof e;return t=="string"||t=="number"||t=="symbol"||t=="boolean"?e!=="__proto__":e===null}function Sbe(e,t){var r=e.__data__;return Nht(t)?r[typeof t=="string"?"string":"hash"]:r.map}function Ebe(e){var t=gA(this,e).delete(e);return this.size-=t?1:0,t}function Abe(e){return gA(this,e).get(e)}function _be(e){return gA(this,e).has(e)}function Dbe(e,t){var r=gA(this,e),i=r.size;return r.set(e,t),this.size+=r.size==i?0:1,this}function em(e){var t=-1,r=e==null?0:e.length;for(this.clear();++t<r;){var i=e[t];this.set(i[0],i[1])}}function vA(e,t){if(typeof e!="function"||t!=null&&typeof t!="function")throw new TypeError(Fht);var r=S(function(){var i=arguments,n=t?t.apply(this,i):i[0],a=r.cache;if(a.has(n))return a.get(n);var s=e.apply(this,i);return r.cache=a.set(n,s)||a,s},"memoized");return r.cache=new(vA.Cache||yA),r}function Rbe(e){var t=$ht(e,function(i){return r.size===zht&&r.clear(),i}),r=t.cache;return t}function Lbe(e){return e==null?"":pct(e)}function Mbe(e,t){return Kr(e)?e:vz(e,t)?[e]:Uht(Hht(e))}function Nbe(e){if(typeof e=="string"||lA(e))return e;var t=e+"";return t=="0"&&1/e==-Yht?"-0":t}function Ibe(e,t){t=xA(t,e);for(var r=0,i=t.length;e!=null&&r<i;)e=e[NT(t[r++])];return r&&r==i?e:void 0}function Obe(e,t,r){var i=e==null?void 0:xz(e,t);return i===void 0?r:i}function Pbe(e,t){for(var r=-1,i=t.length,n=e.length;++r<i;)e[n+r]=t[r];return e}function Bbe(e){return Kr(e)||dA(e)||!!(L1e&&e&&e[L1e])}function Tz(e,t,r,i,n){var a=-1,s=e.length;for(r||(r=Xht),n||(n=[]);++a<s;){var l=e[a];t>0&&r(l)?t>1?Tz(l,t-1,r,i,n):bz(n,l):i||(n[n.length]=l)}return n}function Fbe(e){var t=e==null?0:e.length;return t?Cz(e,1):[]}function zbe(e,t,r){var i=-1,n=e.length;t<0&&(t=-t>n?0:n+t),r=r>n?n:r,r<0&&(r+=n),n=t>r?0:r-t>>>0,t>>>=0;for(var a=Array(n);++i<n;)a[i]=e[i+t];return a}function Vbe(e,t,r,i){var n=-1,a=e==null?0:e.length;for(i&&a&&(r=e[++n]);++n<a;)r=t(r,e[n],n,e);return r}function Wbe(){this.__data__=new mA,this.size=0}function qbe(e){var t=this.__data__,r=t.delete(e);return this.size=t.size,r}function Ube(e){return this.__data__.get(e)}function Hbe(e){return this.__data__.has(e)}function Ybe(e,t){var r=this.__data__;if(r instanceof mA){var i=r.__data__;if(!oT||i.length<rdt-1)return i.push([e,t]),this.size=++r.size,this;r=this.__data__=new yA(i)}return r.set(e,t),this.size=r.size,this}function tm(e){var t=this.__data__=new mA(e);this.size=t.size}function jbe(e,t){return e&&RT(t,po(t),e)}function Xbe(e,t){return e&&RT(t,fA(t),e)}function Zbe(e,t){if(t)return e.slice();var r=e.length,i=I1e?I1e(r):new e.constructor(r);return e.copy(i),i}function Qbe(e,t){for(var r=-1,i=e==null?0:e.length,n=0,a=[];++r<i;){var s=e[r];t(s,r,e)&&(a[n++]=s)}return a}function Jbe(){return[]}function t2e(e,t){return RT(e,wz(e),t)}function i2e(e,t){return RT(e,r2e(e),t)}function n2e(e,t,r){var i=t(e);return Kr(e)?i:bz(i,r(e))}function s2e(e){return a2e(e,po,wz)}function o2e(e){return a2e(e,fA,r2e)}function c2e(e){var t=e.length,r=new e.constructor(t);return t&&typeof e[0]=="string"&&Sdt.call(e,"index")&&(r.index=e.index,r.input=e.input),r}function u2e(e){var t=new e.constructor(e.byteLength);return new k5(t).set(new k5(e)),t}function h2e(e,t){var r=t?Sz(e.buffer):e.buffer;return new e.constructor(r,e.byteOffset,e.byteLength)}function d2e(e){var t=new e.constructor(e.source,Ddt.exec(e));return t.lastIndex=e.lastIndex,t}function f2e(e){return V1e?Object(V1e.call(e)):{}}function p2e(e,t){var r=t?Sz(e.buffer):e.buffer;return new e.constructor(r,e.byteOffset,e.length)}function m2e(e,t,r){var i=e.constructor;switch(t){case Gdt:return Sz(e);case Ndt:case Idt:return new i(+e);case Vdt:return _dt(e,r);case Wdt:case qdt:case Udt:case Hdt:case Ydt:case jdt:case Xdt:case Kdt:case Zdt:return Mdt(e,r);case Odt:return new i;case Pdt:case $dt:return new i(e);case Bdt:return Rdt(e);case Fdt:return new i;case zdt:return Ldt(e)}}function g2e(e){return typeof e.constructor=="function"&&!LT(e)?Uct($be(e)):{}}function y2e(e){return Yl(e)&&ey(e)==eft}function v2e(e){return Yl(e)&&ey(e)==nft}function X2(e,t,r,i,n,a){var s,l=t&lft,u=t&cft,h=t&uft;if(r&&(s=n?r(e,i,n,a):r(e)),s!==void 0)return s;if(!tl(e))return e;var d=Kr(e);if(d){if(s=Edt(e),!l)return Yct(e,s)}else{var f=ey(e),p=f==b2e||f==mft;if(aT(e))return odt(e,l);if(f==T2e||f==x2e||p&&!n){if(s=u||p?{}:Jdt(e),!l)return u?pdt(e,adt(s,e)):hdt(e,ndt(s,e))}else{if(!Ni[f])return n?e:{};s=Qdt(e,f,l)}}a||(a=new j2);var m=a.get(e);if(m)return m;a.set(e,s),oft(e)?e.forEach(function(v){s.add(X2(v,t,r,v,e,a))}):ift(e)&&e.forEach(function(v,x){s.set(x,X2(v,t,r,x,e,a))});var g=h?u?l2e:yF:u?fA:po,y=d?void 0:g(e);return Axe(y||e,function(v,x){y&&(x=v,v=e[x]),uA(s,x,X2(v,t,r,x,e,a))}),s}function C2e(e){return Ift(e,Oft)}function k2e(e){for(var t=-1,r=e==null?0:e.length,i=0,n=[];++t<r;){var a=e[t];a&&(n[i++]=a)}return n}function w2e(e){return this.__data__.set(e,Pft),this}function S2e(e){return this.__data__.has(e)}function lT(e){var t=-1,r=e==null?0:e.length;for(this.__data__=new yA;++t<r;)this.add(e[t])}function E2e(e,t){for(var r=-1,i=e==null?0:e.length;++r<i;)if(t(e[r],r,e))return!0;return!1}function _2e(e,t){return e.has(t)}function D2e(e,t,r,i,n,a){var s=r&$ft,l=e.length,u=t.length;if(l!=u&&!(s&&u>l))return!1;var h=a.get(e),d=a.get(t);if(h&&d)return h==t&&d==e;var f=-1,p=!0,m=r&zft?new Ez:void 0;for(a.set(e,t),a.set(t,e);++f<l;){var g=e[f],y=t[f];if(i)var v=s?i(y,g,f,t,e,a):i(g,y,f,e,t,a);if(v!==void 0){if(v)continue;p=!1;break}if(m){if(!A2e(t,function(x,b){if(!Az(m,b)&&(g===x||n(g,x,r,i,a)))return m.push(b)})){p=!1;break}}else if(!(g===y||n(g,y,r,i,a))){p=!1;break}}return a.delete(e),a.delete(t),p}function L2e(e){var t=-1,r=Array(e.size);return e.forEach(function(i,n){r[++t]=[n,i]}),r}function M2e(e){var t=-1,r=Array(e.size);return e.forEach(function(i){r[++t]=i}),r}function N2e(e,t,r,i,n,a,s){switch(r){case ept:if(e.byteLength!=t.byteLength||e.byteOffset!=t.byteOffset)return!1;e=e.buffer,t=t.buffer;case Jft:return!(e.byteLength!=t.byteLength||!a(new k5(e),new k5(t)));case qft:case Uft:case jft:return DT(+e,+t);case Hft:return e.name==t.name&&e.message==t.message;case Xft:case Zft:return e==t+"";case Yft:var l=Gft;case Kft:var u=i&Vft;if(l||(l=_z),e.size!=t.size&&!u)return!1;var h=s.get(e);if(h)return h==t;i|=Wft,s.set(e,t);var d=R2e(l(e),l(t),i,n,a,s);return s.delete(e),d;case Qft:if(XP)return XP.call(e)==XP.call(t)}return!1}function I2e(e,t,r,i,n,a){var s=r&rpt,l=yF(e),u=l.length,h=yF(t),d=h.length;if(u!=d&&!s)return!1;for(var f=u;f--;){var p=l[f];if(!(s?p in t:npt.call(t,p)))return!1}var m=a.get(e),g=a.get(t);if(m&&g)return m==t&&g==e;var y=!0;a.set(e,t),a.set(t,e);for(var v=s;++f<u;){p=l[f];var x=e[p],b=t[p];if(i)var T=s?i(b,x,p,t,e,a):i(x,b,p,e,t,a);if(!(T===void 0?x===b||n(x,b,r,i,a):T)){y=!1;break}v||(v=p=="constructor")}if(y&&!v){var w=e.constructor,C=t.constructor;w!=C&&"constructor"in e&&"constructor"in t&&!(typeof w=="function"&&w instanceof w&&typeof C=="function"&&C instanceof C)&&(y=!1)}return a.delete(e),a.delete(t),y}function O2e(e,t,r,i,n,a){var s=Kr(e),l=Kr(t),u=s?Y1e:ey(e),h=l?Y1e:ey(t);u=u==H1e?gE:u,h=h==H1e?gE:h;var d=u==gE,f=h==gE,p=u==h;if(p&&aT(e)){if(!aT(t))return!1;s=!0,d=!1}if(p&&!d)return a||(a=new j2),s||yz(e)?R2e(e,t,r,i,n,a):tpt(e,t,u,r,i,n,a);if(!(r&spt)){var m=d&&j1e.call(e,"__wrapped__"),g=f&&j1e.call(t,"__wrapped__");if(m||g){var y=m?e.value():e,v=g?t.value():t;return a||(a=new j2),n(y,v,r,i,a)}}return p?(a||(a=new j2),apt(e,t,r,i,n,a)):!1}function Dz(e,t,r,i,n){return e===t?!0:e==null||t==null||!Yl(e)&&!Yl(t)?e!==e&&t!==t:lpt(e,t,r,i,Dz,n)}function B2e(e,t,r,i){var n=r.length,a=n,s=!i;if(e==null)return!a;for(e=Object(e);n--;){var l=r[n];if(s&&l[2]?l[1]!==e[l[0]]:!(l[0]in e))return!1}for(;++n<a;){l=r[n];var u=l[0],h=e[u],d=l[1];if(s&&l[2]){if(h===void 0&&!(u in e))return!1}else{var f=new j2;if(i)var p=i(h,d,u,e,t,f);if(!(p===void 0?P2e(d,h,cpt|upt,i,f):p))return!1}}return!0}function F2e(e){return e===e&&!tl(e)}function z2e(e){for(var t=po(e),r=t.length;r--;){var i=t[r],n=e[i];t[r]=[i,n,$2e(n)]}return t}function G2e(e,t){return function(r){return r==null?!1:r[e]===t&&(t!==void 0||e in Object(r))}}function W2e(e){var t=dpt(e);return t.length==1&&t[0][2]?V2e(t[0][0],t[0][1]):function(r){return r===e||hpt(r,e,t)}}function q2e(e,t){return e!=null&&t in Object(e)}function U2e(e,t,r){t=xA(t,e);for(var i=-1,n=t.length,a=!1;++i<n;){var s=NT(t[i]);if(!(a=e!=null&&r(e,s)))break;e=e[s]}return a||++i!=n?a:(n=e==null?0:e.length,!!n&&gz(n)&&cA(s,n)&&(Kr(e)||dA(e)))}function Y2e(e,t){return e!=null&&H2e(e,t,ppt)}function j2e(e,t){return vz(e)&&$2e(t)?V2e(NT(e),t):function(r){var i=jht(r,e);return i===void 0&&i===t?mpt(r,e):P2e(t,i,gpt|ypt)}}function X2e(e){return function(t){return t?.[e]}}function K2e(e){return function(t){return xz(t,e)}}function Z2e(e){return vz(e)?xpt(NT(e)):bpt(e)}function Q2e(e){return typeof e=="function"?e:e==null?J1:typeof e=="object"?Kr(e)?vpt(e[0],e[1]):fpt(e):Tpt(e)}function J2e(e,t,r,i){for(var n=-1,a=e==null?0:e.length;++n<a;){var s=e[n];t(i,s,r(s),e)}return i}function eTe(e){return function(t,r,i){for(var n=-1,a=Object(t),s=i(t),l=s.length;l--;){var u=s[e?l:++n];if(r(a[u],u,a)===!1)break}return t}}function tTe(e,t){return e&&Spt(e,t,po)}function rTe(e,t){return function(r,i){if(r==null)return r;if(!ru(r))return e(r,i);for(var n=r.length,a=t?n:-1,s=Object(r);(t?a--:++a<n)&&i(s[a],a,s)!==!1;);return r}}function iTe(e,t,r,i){return rm(e,function(n,a,s){t(i,n,r(n),s)}),i}function nTe(e,t){return function(r,i){var n=Kr(r)?Cpt:Dpt,a=t?t():{};return n(r,e,iu(i,2),a)}}function sTe(e){return Yl(e)&&ru(e)}function oTe(e,t,r){for(var i=-1,n=e==null?0:e.length;++i<n;)if(r(t,e[i]))return!0;return!1}function cTe(e,t,r,i){var n=-1,a=Ixe,s=!0,l=e.length,u=[],h=t.length;if(!l)return u;r&&(t=AT(t,MT(r))),i?(a=lTe,s=!1):t.length>=Npt&&(a=Az,s=!1,t=new Ez(t));e:for(;++n<l;){var d=e[n],f=r==null?d:r(d);if(d=i||d!==0?d:0,s&&f===f){for(var p=h;p--;)if(t[p]===f)continue e;u.push(d)}else a(t,f,i)||u.push(d)}return u}function uTe(e){var t=e==null?0:e.length;return t?e[t-1]:void 0}function hTe(e,t,r){var i=e==null?0:e.length;return i?(t=r||t===void 0?1:_T(t),Gbe(e,t<0?0:t,i)):[]}function dTe(e,t,r){var i=e==null?0:e.length;return i?(t=r||t===void 0?1:_T(t),t=i-t,Gbe(e,0,t<0?0:t)):[]}function fTe(e){return typeof e=="function"?e:J1}function pTe(e,t){var r=Kr(e)?Axe:rm;return r(e,Ppt(t))}function mTe(e,t){for(var r=-1,i=e==null?0:e.length;++r<i;)if(!t(e[r],r,e))return!1;return!0}function gTe(e,t){var r=!0;return rm(e,function(i,n,a){return r=!!t(i,n,a),r}),r}function yTe(e,t,r){var i=Kr(e)?Bpt:Fpt;return r&&hA(e,t,r)&&(t=void 0),i(e,iu(t,3))}function vTe(e,t){var r=[];return rm(e,function(i,n,a){t(i,n,a)&&r.push(i)}),r}function bTe(e,t){var r=Kr(e)?kz:xTe;return r(e,iu(t,3))}function TTe(e){return function(t,r,i){var n=Object(t);if(!ru(t)){var a=iu(r,3);t=po(t),r=S(function(l){return a(n[l],l,n)},"predicate")}var s=e(t,r,i);return s>-1?n[a?t[s]:s]:void 0}}function CTe(e,t,r){var i=e==null?0:e.length;if(!i)return-1;var n=r==null?0:_T(r);return n<0&&(n=zpt(i+n,0)),Dxe(e,iu(t,3),n)}function kTe(e){return e&&e.length?e[0]:void 0}function wTe(e,t){var r=-1,i=ru(e)?Array(e.length):[];return rm(e,function(n,a,s){i[++r]=t(n,a,s)}),i}function STe(e,t){var r=Kr(e)?AT:Wpt;return r(e,iu(t,3))}function ETe(e,t){return Cz(nr(e,t),1)}function ATe(e,t){return e!=null&&Xpt.call(e,t)}function _Te(e,t){return e!=null&&H2e(e,t,Kpt)}function DTe(e){return typeof e=="string"||!Kr(e)&&Yl(e)&&Tf(e)==Zpt}function RTe(e,t){return AT(t,function(r){return e[r]})}function LTe(e){return e==null?[]:Qpt(e,po(e))}function MTe(e,t,r,i){e=ru(e)?e:Hn(e),r=r&&!i?_T(r):0;var n=e.length;return r<0&&(r=Jpt(n+r,0)),Vs(e)?r<=n&&e.indexOf(t,r)>-1:!!n&&fz(e,t,r)>-1}function NTe(e,t,r){var i=e==null?0:e.length;if(!i)return-1;var n=r==null?0:_T(r);return n<0&&(n=e0t(i+n,0)),fz(e,t,n)}function ITe(e){if(e==null)return!0;if(ru(e)&&(Kr(e)||typeof e=="string"||typeof e.splice=="function"||aT(e)||yz(e)||dA(e)))return!e.length;var t=ey(e);if(t==t0t||t==r0t)return!e.size;if(LT(e))return!sbe(e).length;for(var r in e)if(n0t.call(e,r))return!1;return!0}function OTe(e){return Yl(e)&&Tf(e)==a0t}function PTe(e){return e===void 0}function BTe(e){if(typeof e!="function")throw new TypeError(l0t);return function(){var t=arguments;switch(t.length){case 0:return!e.call(this);case 1:return!e.call(this,t[0]);case 2:return!e.call(this,t[0],t[1]);case 3:return!e.call(this,t[0],t[1],t[2])}return!e.apply(this,t)}}function FTe(e,t,r,i){if(!tl(e))return e;t=xA(t,e);for(var n=-1,a=t.length,s=a-1,l=e;l!=null&&++n<a;){var u=NT(t[n]),h=r;if(u==="__proto__"||u==="constructor"||u==="prototype")return e;if(n!=s){var d=l[u];h=i?i(d,u,l):void 0,h===void 0&&(h=tl(d)?d:cA(t[n+1])?[]:{})}uA(l,u,h),l=l[u]}return e}function $Te(e,t,r){for(var i=-1,n=t.length,a={};++i<n;){var s=t[i],l=xz(e,s);r(l,s)&&u0t(a,xA(s,e),l)}return a}function zTe(e,t){if(e==null)return{};var r=AT(l2e(e),function(i){return[i]});return t=iu(t),h0t(e,r,function(i,n){return t(i,n[0])})}function GTe(e,t,r,i,n){return n(e,function(a,s,l){r=i?(i=!1,a):t(r,a,s,l)}),r}function VTe(e,t,r){var i=Kr(e)?Zht:d0t,n=arguments.length<3;return i(e,iu(t,4),r,n,rm)}function WTe(e,t){var r=Kr(e)?kz:xTe;return r(e,c0t(iu(t,3)))}function qTe(e,t){var r;return rm(e,function(i,n,a){return r=t(i,n,a),!r}),!!r}function UTe(e,t,r){var i=Kr(e)?A2e:f0t;return r&&hA(e,t,r)&&(t=void 0),i(e,iu(t,3))}function YTe(e,t,r){var i=-1,n=Ixe,a=e.length,s=!0,l=[],u=l;if(r)s=!1,n=lTe;else if(a>=y0t){var h=t?null:g0t(e);if(h)return _z(h);s=!1,n=Az,u=new Ez}else u=t?[]:l;e:for(;++i<a;){var d=e[i],f=t?t(d):d;if(d=r||d!==0?d:0,s&&f===f){for(var p=u.length;p--;)if(u[p]===f)continue e;t&&u.push(f),l.push(d)}else n(u,f,r)||(u!==l&&u.push(f),l.push(d))}return l}function jTe(e){return e&&e.length?v0t(e):[]}function w5(e){console&&console.error&&console.error(`Error: ${e}`)}function Mz(e){console&&console.warn&&console.warn(`Warning: ${e}`)}function Nz(e){let t=new Date().getTime(),r=e();return{time:new Date().getTime()-t,value:r}}function Iz(e){function t(){}o(t,"FakeConstructor"),S(t,"FakeConstructor"),t.prototype=e;let r=new t;function i(){return typeof r.bar}return o(i,"fakeAccess"),S(i,"fakeAccess"),i(),i(),e;(0,eval)(e)}function XTe(e){return KTe(e)?e.LABEL:e.name}function KTe(e){return Vs(e.LABEL)&&e.LABEL!==""}function ZTe(e){return nr(e,K2)}function K2(e){function t(r){return nr(r,K2)}if(o(t,"convertDefinition"),S(t,"convertDefinition"),e instanceof us){let r={type:"NonTerminal",name:e.nonTerminalName,idx:e.idx};return Vs(e.label)&&(r.label=e.label),r}else{if(e instanceof Ws)return{type:"Alternative",definition:t(e.definition)};if(e instanceof Ca)return{type:"Option",idx:e.idx,definition:t(e.definition)};if(e instanceof yo)return{type:"RepetitionMandatory",idx:e.idx,definition:t(e.definition)};if(e instanceof vo)return{type:"RepetitionMandatoryWithSeparator",idx:e.idx,separator:K2(new Wi({terminalType:e.separator})),definition:t(e.definition)};if(e instanceof qs)return{type:"RepetitionWithSeparator",idx:e.idx,separator:K2(new Wi({terminalType:e.separator})),definition:t(e.definition)};if(e instanceof hn)return{type:"Repetition",idx:e.idx,definition:t(e.definition)};if(e instanceof Us)return{type:"Alternation",idx:e.idx,definition:t(e.definition)};if(e instanceof Wi){let r={type:"Terminal",name:e.terminalType.name,label:XTe(e.terminalType),idx:e.idx};Vs(e.label)&&(r.terminalLabel=e.label);let i=e.terminalType.PATTERN;return e.terminalType.PATTERN&&(r.pattern=hh(i)?i.source:i),r}else{if(e instanceof oy)return{type:"Rule",name:e.name,orgText:e.orgText,definition:t(e.definition)};throw Error("non exhaustive match")}}}function QTe(e){return e instanceof Ws||e instanceof Ca||e instanceof hn||e instanceof yo||e instanceof vo||e instanceof qs||e instanceof Wi||e instanceof oy}function uT(e,t=[]){return e instanceof Ca||e instanceof hn||e instanceof qs?!0:e instanceof Us?HTe(e.definition,i=>uT(i,t)):e instanceof us&&fs(t,e)?!1:e instanceof nu?(e instanceof us&&t.push(e),Hl(e.definition,i=>uT(i,t))):!1}function JTe(e){return e instanceof Us}function Gl(e){if(e instanceof us)return"SUBRULE";if(e instanceof Ca)return"OPTION";if(e instanceof Us)return"OR";if(e instanceof yo)return"AT_LEAST_ONE";if(e instanceof vo)return"AT_LEAST_ONE_SEP";if(e instanceof qs)return"MANY_SEP";if(e instanceof hn)return"MANY";if(e instanceof Wi)return"CONSUME";throw Error("non exhaustive match")}function bF(e,t,r){return[new Ca({definition:[new Wi({terminalType:e.separator})].concat(e.definition)})].concat(t,r)}function cy(e){if(e instanceof us)return cy(e.referencedRule);if(e instanceof Wi)return rCe(e);if(QTe(e))return eCe(e);if(JTe(e))return tCe(e);throw Error("non exhaustive match")}function eCe(e){let t=[],r=e.definition,i=0,n=r.length>i,a,s=!0;for(;n&&s;)a=r[i],s=uT(a),t=t.concat(cy(a)),i=i+1,n=r.length>i;return Lz(t)}function tCe(e){let t=nr(e.definition,r=>cy(r));return Lz(Ul(t))}function rCe(e){return[e.terminalType]}function nCe(e){let t={};return vr(e,r=>{let i=new x0t(r).startWalking();mo(t,i)}),t}function aCe(e,t){return e.name+t+iCe}function OT(e){let t=e.toString();if(WE.hasOwnProperty(t))return WE[t];{let r=b0t.pattern(t);return WE[t]=r,r}}function sCe(){WE={}}function lCe(e,t=!1){try{let r=OT(e);return E5(r.value,{},r.flags.ignoreCase)}catch(r){if(r.message===oCe)t&&Mz(`${S5}	Unable to optimize: < ${e.toString()} >
+`},"getStyles"),LTe=g0t});var ITe={};ir(ITe,{diagram:()=>y0t});var y0t,MTe=F(()=>{"use strict";ETe();ATe();RTe();DTe();y0t={parser:STe,get db(){return new DA},renderer:QF,styles:LTe}});function Zi(e){return typeof e=="object"&&e!==null&&typeof e.$type=="string"}function Bs(e){return typeof e=="object"&&e!==null&&typeof e.$refText=="string"&&"ref"in e}function Ou(e){return typeof e=="object"&&e!==null&&typeof e.$refText=="string"&&"items"in e}function iW(e){return typeof e=="object"&&e!==null&&typeof e.name=="string"&&typeof e.type=="string"&&typeof e.path=="string"}function Tg(e){return typeof e=="object"&&e!==null&&typeof e.info=="object"&&typeof e.message=="string"}function Hh(e){return typeof e=="object"&&e!==null&&Array.isArray(e.content)}function Jg(e){return typeof e=="object"&&e!==null&&typeof e.tokenType=="object"}function vR(e){return Hh(e)&&typeof e.fullText=="string"}function Owe(e){return typeof e=="string"?e:typeof e>"u"?"undefined":typeof e.toString=="function"?e.toString():Object.prototype.toString.call(e)}function YC(e){return!!e&&typeof e[Symbol.iterator]=="function"}function Bn(...e){if(e.length===1){let t=e[0];if(t instanceof Nu)return t;if(YC(t))return new Nu(()=>t[Symbol.iterator](),r=>r.next());if(typeof t.length=="number")return new Nu(()=>({index:0}),r=>r.index<t.length?{done:!1,value:t[r.index++]}:Os)}return e.length>1?new Nu(()=>({collIndex:0,arrIndex:0}),t=>{do{if(t.iterator){let r=t.iterator.next();if(!r.done)return r;t.iterator=void 0}if(t.array){if(t.arrIndex<t.array.length)return{done:!1,value:t.array[t.arrIndex++]};t.array=void 0,t.arrIndex=0}if(t.collIndex<e.length){let r=e[t.collIndex++];YC(r)?t.iterator=r[Symbol.iterator]():r&&typeof r.length=="number"&&(t.array=r)}}while(t.iterator||t.array||t.collIndex<e.length);return Os}):Tv}function wv(e,t={}){for(let[r,n]of Object.entries(e))r.startsWith("$")||(Array.isArray(n)?n.forEach((i,a)=>{Zi(i)&&(i.$container=e,i.$containerProperty=r,i.$containerIndex=a,t.deep&&wv(i,t))}):Zi(n)&&(n.$container=e,n.$containerProperty=r,t.deep&&wv(n,t)))}function e0(e,t){let r=e;for(;r;){if(t(r))return r;r=r.$container}}function Bwe(e,t){let r=e;for(;r;){if(t(r))return!0;r=r.$container}return!1}function wc(e){let r=yv(e).$document;if(!r)throw new Error("AST node has no document.");return r}function yv(e){for(;e.$container;)e=e.$container;return e}function A6(e){return Bs(e)?e.ref?[e.ref]:[]:Ou(e)?e.items.map(t=>t.ref):[]}function fw(e,t){if(!e)throw new Error("Node must be an AstNode.");let r=t?.range;return new Nu(()=>({keys:Object.keys(e),keyIndex:0,arrayIndex:0}),n=>{for(;n.keyIndex<n.keys.length;){let i=n.keys[n.keyIndex];if(!i.startsWith("$")){let a=e[i];if(Zi(a)){if(n.keyIndex++,R6(a,r))return{done:!1,value:a}}else if(Array.isArray(a)){for(;n.arrayIndex<a.length;){let s=n.arrayIndex++,l=a[s];if(Zi(l)&&R6(l,r))return{done:!1,value:l}}n.arrayIndex=0}}n.keyIndex++}return Os})}function td(e,t){if(!e)throw new Error("Root node must be an AstNode.");return new Cv(e,r=>fw(r,t))}function kc(e,t){if(e){if(t?.range&&!R6(e,t.range))return new Cv(e,()=>[])}else throw new Error("Root node must be an AstNode.");return new Cv(e,r=>fw(r,t),{includeRoot:!0})}function R6(e,t){if(!t)return!0;let r=e.$cstNode?.range;return r?LW(r,t):!1}function kv(e){return new Nu(()=>({keys:Object.keys(e),keyIndex:0,arrayIndex:0}),t=>{for(;t.keyIndex<t.keys.length;){let r=t.keys[t.keyIndex];if(!r.startsWith("$")){let n=e[r];if(Bs(n)||Ou(n))return t.keyIndex++,{done:!1,value:{reference:n,container:e,property:r}};if(Array.isArray(n)){for(;t.arrayIndex<n.length;){let i=t.arrayIndex++,a=n[i];if(Bs(a)||Ou(n))return{done:!1,value:{reference:a,container:e,property:r,index:i}}}t.arrayIndex=0}}t.keyIndex++}return Os})}function oW(e,t){let r=e.getTypeMetaData(t.$type),n=t;for(let i of Object.values(r.properties))i.defaultValue!==void 0&&n[i.name]===void 0&&(n[i.name]=lW(i.defaultValue))}function lW(e){return Array.isArray(e)?[...e.map(lW)]:e}function _6(e,t,r){let n={$type:e.$type};r&&(r.set(e,n),r.set(n,e));for(let[i,a]of Object.entries(e))if(!i.startsWith("$"))if(Zi(a))n[i]=_6(a,t,r);else if(Bs(a))n[i]=t(n,i,a.$refNode,a.$refText,a);else if(Array.isArray(a)){let s=[];for(let l of a)Zi(l)?s.push(_6(l,t,r)):Bs(l)?s.push(t(n,i,l.$refNode,l.$refText,l)):s.push(l);n[i]=s}else n[i]=a;return wv(n,{deep:!0}),n}function xR(e){return Tr.isInstance(e,xo.$type)}function t0(e){return Tr.isInstance(e,_C.$type)}function Fwe(e){return Tr.isInstance(e,ov.$type)}function zwe(e){return Tr.isInstance(e,Uo.$type)}function dp(e){return Tr.isInstance(e,ip.$type)}function bR(e){return Tr.isInstance(e,LC.$type)}function Gwe(e){return Tr.isInstance(e,L6.$type)}function cW(e){return Tr.isInstance(e,D6.$type)}function Uh(e){return Tr.isInstance(e,ap.$type)}function uW(e){return Tr.isInstance(e,I6.$type)}function hW(e){return Tr.isInstance(e,sp.$type)}function Vwe(e){return Tr.isInstance(e,op.$type)}function dW(e){return Tr.isInstance(e,DC.$type)}function r0(e){return Tr.isInstance(e,lp.$type)}function fW(e){return Tr.isInstance(e,IC.$type)}function pW(e){return Tr.isInstance(e,M6.$type)}function Wwe(e){return Tr.isInstance(e,Vh.$type)}function qwe(e){return Tr.isInstance(e,N6.$type)}function n0(e){return Tr.isInstance(e,Cg.$type)}function pw(e){return Tr.isInstance(e,P6.$type)}function Sv(e){return Tr.isInstance(e,Du.$type)}function Hwe(e){return Tr.isInstance(e,MC.$type)}function Uwe(e){return Tr.isInstance(e,O6.$type)}function mW(e){return Tr.isInstance(e,lv.$type)}function Yh(e){return Tr.isInstance(e,cv.$type)}function Ywe(e){return Tr.isInstance(e,uv.$type)}function gW(e){return Tr.isInstance(e,wg.$type)}function yW(e){return Tr.isInstance(e,B6.$type)}function jwe(e){return Tr.isInstance(e,$6.$type)}function Xwe(e){return Tr.isInstance(e,hv.$type)}function vW(e){return Tr.isInstance(e,F6.$type)}function zs(e){return Tr.isInstance(e,xc.$type)}function xW(e){return Tr.isInstance(e,NC.$type)}function bW(e){return Tr.isInstance(e,kg.$type)}function TW(e){return Tr.isInstance(e,z6.$type)}function jh(e){return Tr.isInstance(e,Sg.$type)}function TR(e){return Tr.isInstance(e,dv.$type)}function Kwe(e){return Tr.isInstance(e,G6.$type)}function CW(e){return Tr.isInstance(e,Eg.$type)}function Zwe(e){return Tr.isInstance(e,bo.$type)}function wW(e){return Tr.isInstance(e,Ag.$type)}function Il(e){return Tr.isInstance(e,Wh.$type)}function CR(e){return Tr.isInstance(e,Rg.$type)}function wR(e){return Tr.isInstance(e,PC.$type)}function Qwe(e){return Tr.isInstance(e,_g.$type)}function Jwe(e){return Tr.isInstance(e,Lg.$type)}function kW(e){return Tr.isInstance(e,V6.$type)}function kR(e){return Tr.isInstance(e,OC.$type)}function SW(e){return Tr.isInstance(e,Dg.$type)}function eke(e){return Tr.isInstance(e,Ig.$type)}function EW(e){return Tr.isInstance(e,fv.$type)}function tke(e){let t=e,r=!1;for(;t;){let n=e0(t.grammarSource,zs);if(n&&n.dataType)t=t.container,r=!0;else return r?t:void 0}}function Ev(e){return new Cv(e,t=>Hh(t)?t.content:[],{includeRoot:!0})}function rke(e){return Ev(e).filter(Jg)}function RW(e,t){for(;e.container;)if(e=e.container,e===t)return!0;return!1}function XC(e){return{start:{character:e.startColumn-1,line:e.startLine-1},end:{character:e.endColumn,line:e.endLine-1}}}function Av(e){if(!e)return;let{offset:t,end:r,range:n}=e;return{range:n,offset:t,end:r,length:r-t}}function _W(e,t){if(e.end.line<t.start.line||e.end.line===t.start.line&&e.end.character<=t.start.character)return Mu.Before;if(e.start.line>t.end.line||e.start.line===t.end.line&&e.start.character>=t.end.character)return Mu.After;let r=e.start.line>t.start.line||e.start.line===t.start.line&&e.start.character>=t.start.character,n=e.end.line<t.end.line||e.end.line===t.end.line&&e.end.character<=t.end.character;return r&&n?Mu.Inside:r?Mu.OverlapBack:n?Mu.OverlapFront:Mu.Outside}function LW(e,t){return _W(e,t)>Mu.After}function nke(e,t,r=DW){if(e){if(t>0){let n=t-e.offset,i=e.text.charAt(n);r.test(i)||t--}return SR(e,t)}}function IW(e,t){if(e){let r=PW(e,!0);if(r&&W6(r,t))return r;if(vR(e)){let n=e.content.findIndex(i=>!i.hidden);for(let i=n-1;i>=0;i--){let a=e.content[i];if(W6(a,t))return a}}}}function W6(e,t){return Jg(e)&&t.includes(e.tokenType.name)}function SR(e,t){if(Jg(e))return e;if(Hh(e)){let r=NW(e,t,!1);if(r)return SR(r,t)}}function MW(e,t){if(Jg(e))return e;if(Hh(e)){let r=NW(e,t,!0);if(r)return MW(r,t)}}function NW(e,t,r){let n=0,i=e.content.length-1,a;for(;n<=i;){let s=Math.floor((n+i)/2),l=e.content[s];if(l.offset<=t&&l.end>t)return l;l.end<=t?(a=r?l:void 0,n=s+1):i=s-1}return a}function PW(e,t=!0){for(;e.container;){let r=e.container,n=r.content.indexOf(e);for(;n>0;){n--;let i=r.content[n];if(t||!i.hidden)return i}e=r}}function ike(e,t=!0){for(;e.container;){let r=e.container,n=r.content.indexOf(e),i=r.content.length-1;for(;n<i;){n++;let a=r.content[n];if(t||!a.hidden)return a}e=r}}function ake(e){if(e.range.start.character===0)return e;let t=e.range.start.line,r=e,n;for(;e.container;){let i=e.container,a=n??i.content.indexOf(e);if(a===0?(e=i,n=void 0):(n=a-1,e=i.content[n]),e.range.start.line!==t)break;r=e}return r}function ske(e,t){let r=oke(e,t);return r?r.parent.content.slice(r.a+1,r.b):[]}function oke(e,t){let r=CG(e),n=CG(t),i;for(let a=0;a<r.length&&a<n.length;a++){let s=r[a],l=n[a];if(s.parent===l.parent)i={parent:s.parent,a:s.index,b:l.index};else break}return i}function CG(e){let t=[];for(;e.container;){let r=e.container,n=r.content.indexOf(e);t.push({parent:r,index:n}),e=r}return t.reverse()}function vp(e,t="Error: Got unexpected value."){throw new Error(t)}function BW(e,t="Error: Condition is violated."){if(!e)throw new Error(t)}function Dr(e){return e.charCodeAt(0)}function a6(e,t){Array.isArray(e)?e.forEach(function(r){t.push(r)}):t.push(e)}function rv(e,t){if(e[t]===!0)throw"duplicate flag "+t;let r=e[t];e[t]=!0}function fg(e){if(e===void 0)throw Error("Internal Error - Should never get here!");return!0}function kC(){throw Error("Internal Error - Should never get here!")}function wG(e){return e.type==="Character"}function hke(e){try{typeof e!="string"&&(e=e.source),e=`/${e}/`;let t=uke.pattern(e),r=[];for(let n of t.value.value)Vg.reset(e),Vg.visit(n),r.push({start:Vg.startRegexp,end:Vg.endRegex});return r}catch{return[]}}function FW(e){try{return typeof e=="string"&&(e=new RegExp(e)),e=e.toString(),Vg.reset(e),Vg.visit(uke.pattern(e)),Vg.multiline}catch{return!1}}function RR(e){let t=typeof e=="string"?new RegExp(e):e;return dke.some(r=>t.test(r))}function Nv(e){return e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function zW(e,t){let r=GW(e),n=t.match(r);return!!n&&n[0].length>0}function GW(e){typeof e=="string"&&(e=new RegExp(e));let t=e,r=e.source,n=0;function i(){let a="",s;function l(h){a+=r.substr(n,h),n+=h}o(l,"appendRaw"),E(l,"appendRaw");function u(h){a+="(?:"+r.substr(n,h)+"|$)",n+=h}for(o(u,"appendOptional"),E(u,"appendOptional");n<r.length;)switch(r[n]){case"\\":switch(r[n+1]){case"c":u(3);break;case"x":u(4);break;case"u":t.unicode?r[n+2]==="{"?u(r.indexOf("}",n)-n+1):u(6):u(2);break;case"p":case"P":t.unicode?u(r.indexOf("}",n)-n+1):u(2);break;case"k":u(r.indexOf(">",n)-n+1);break;default:u(2);break}break;case"[":s=/\[(?:\\.|.)*?\]/g,s.lastIndex=n,s=s.exec(r)||[],u(s[0].length);break;case"|":case"^":case"$":case"*":case"+":case"?":l(1);break;case"{":s=/\{\d+,?\d*\}/g,s.lastIndex=n,s=s.exec(r),s?l(s[0].length):u(1);break;case"(":if(r[n+1]==="?")switch(r[n+2]){case":":a+="(?:",n+=3,a+=i()+"|$)";break;case"=":a+="(?=",n+=3,a+=i()+")";break;case"!":s=n,n+=3,i(),a+=r.substr(s,n-s);break;case"<":switch(r[n+3]){case"=":case"!":s=n,n+=4,i(),a+=r.substr(s,n-s);break;default:l(r.indexOf(">",n)-n+1),a+=i()+"|$)";break}break}else l(1),a+=i()+"|$)";break;case")":return++n,a;default:u(1);break}return a}return o(i,"process2"),E(i,"process"),new RegExp(i(),e.flags)}function VW(e){return e.rules.find(t=>zs(t)&&t.entry)}function WW(e){return e.rules.filter(t=>Il(t)&&t.hidden)}function _R(e,t){let r=new Set,n=VW(e);if(!n)return new Set(e.rules);let i=[n].concat(WW(e));for(let s of i)qW(s,r,t);let a=new Set;for(let s of e.rules)(r.has(s.name)||Il(s)&&s.hidden)&&a.add(s);return a}function qW(e,t,r){t.add(e.name),td(e).forEach(n=>{if(jh(n)||r&&CR(n)){let i=n.rule.ref;i&&!t.has(i.name)&&qW(i,t,r)}})}function fke(e){let t=new Set;return td(e).forEach(r=>{r0(r)&&(zs(r.type.ref)&&t.add(r.type.ref),pw(r.type.ref)&&zs(r.type.ref.$container)&&t.add(r.type.ref.$container))}),t}function HW(e){if(e.terminal)return e.terminal;if(e.type.ref)return MR(e.type.ref)?.terminal}function UW(e){return e.hidden&&!RR(yw(e))}function YW(e,t){return!e||!t?[]:DR(e,t,e.astNode,!0)}function LR(e,t,r){if(!e||!t)return;let n=DR(e,t,e.astNode,!0);if(n.length!==0)return r!==void 0?r=Math.max(0,Math.min(r,n.length-1)):r=0,n[r]}function DR(e,t,r,n){if(!n){let i=e0(e.grammarSource,Uh);if(i&&i.feature===t)return[e]}return Hh(e)&&e.astNode===r?e.content.flatMap(i=>DR(i,t,r,!1)):[]}function pke(e,t){return e?IR(e,t,e?.astNode):[]}function jW(e,t,r){if(!e)return;let n=IR(e,t,e?.astNode);if(n.length!==0)return r!==void 0?r=Math.max(0,Math.min(r,n.length-1)):r=0,n[r]}function IR(e,t,r){if(e.astNode!==r)return[];if(Yh(e.grammarSource)&&e.grammarSource.value===t)return[e];let n=Ev(e).iterator(),i,a=[];do if(i=n.next(),!i.done){let s=i.value;s.astNode===r?Yh(s.grammarSource)&&s.grammarSource.value===t&&a.push(s):n.prune()}while(!i.done);return a}function XW(e){let t=e.astNode;for(;t===e.container?.astNode;){let r=e0(e.grammarSource,Uh);if(r)return r;e=e.container}}function MR(e){let t=e;return pw(t)&&(dp(t.$container)?t=t.$container.$container:t0(t.$container)?t=t.$container:vp(t.$container)),KW(e,t,new Map)}function KW(e,t,r){function n(i,a){let s;return e0(i,Uh)||(s=KW(a,a,r)),r.set(e,s),s}if(o(n,"go"),E(n,"go"),r.has(e))return r.get(e);r.set(e,void 0);for(let i of td(t)){if(Uh(i)&&i.feature.toLowerCase()==="name")return r.set(e,i),i;if(jh(i)&&zs(i.rule.ref))return n(i,i.rule.ref);if(TR(i)&&i.typeRef?.ref)return n(i,i.typeRef.ref)}}function ZW(e){let t=e.$container;if(n0(t)){let r=t.elements,n=r.indexOf(e);for(let i=n-1;i>=0;i--){let a=r[i];if(dp(a))return a;{let s=td(r[i]).find(dp);if(s)return s}}}if(xR(t))return ZW(t)}function mke(e,t){return e==="?"||e==="*"||n0(t)&&!!t.guardCondition}function gke(e){return e==="*"||e==="+"}function yke(e){return e==="+="}function mw(e){return QW(e,new Set)}function QW(e,t){if(t.has(e))return!0;t.add(e);for(let r of td(e))if(jh(r)){if(!r.rule.ref||zs(r.rule.ref)&&!QW(r.rule.ref,t)||Sv(r.rule.ref))return!1}else{if(Uh(r))return!1;if(dp(r))return!1}return!!e.definition}function vke(e){return U6(e.type,new Set)}function U6(e,t){if(t.has(e))return!0;if(t.add(e),cW(e))return!1;if(xW(e))return!1;if(kW(e))return e.types.every(r=>U6(r,t));if(TR(e)){if(e.primitiveType!==void 0)return!0;if(e.stringType!==void 0)return!0;if(e.typeRef!==void 0){let r=e.typeRef.ref;return wR(r)?U6(r.type,t):!1}else return!1}else return!1}function gw(e){if(!Il(e)){if(e.inferredType)return e.inferredType.name;if(e.dataType)return e.dataType;if(e.returnType){let t=e.returnType.ref;if(t)return t.name}}}function jg(e){if(t0(e))return zs(e)&&mw(e)?e.name:gw(e)??e.name;if(mW(e)||wR(e)||TW(e))return e.name;if(dp(e)){let t=JW(e);if(t)return t}else if(pw(e))return e.name;throw new Error("Cannot get name of Unknown Type")}function JW(e){if(e.inferredType)return e.inferredType.name;if(e.type?.ref)return jg(e.type.ref)}function xke(e){return Il(e)?e.type?.name??"string":zs(e)&&mw(e)?e.name:gw(e)??e.name}function eq(e){return Il(e)?e.type?.name??"string":gw(e)??e.name}function yw(e){let t={s:!1,i:!1,u:!1},r=i0(e.definition,t),n=Object.entries(t).filter(([,i])=>i).map(([i])=>i).join("");return new RegExp(r,n)}function i0(e,t){if(CW(e))return bke(e);if(wW(e))return Tke(e);if(hW(e))return kke(e);if(CR(e)){let r=e.rule.ref;if(!r)throw new Error("Missing rule reference.");return Bu(i0(r.definition),{cardinality:e.cardinality,lookahead:e.lookahead,parenthesized:e.parenthesized})}else{if(gW(e))return wke(e);if(SW(e))return Cke(e);if(bW(e)){let r=e.regex.lastIndexOf("/"),n=e.regex.substring(1,r),i=e.regex.substring(r+1);return t&&(t.i=i.includes("i"),t.s=i.includes("s"),t.u=i.includes("u")),Bu(n,{cardinality:e.cardinality,lookahead:e.lookahead,parenthesized:e.parenthesized,wrap:!1})}else{if(EW(e))return Bu(tq,{cardinality:e.cardinality,lookahead:e.lookahead,parenthesized:e.parenthesized});throw new Error(`Invalid terminal element: ${e?.$type}, ${e?.$cstNode?.text}`)}}}function bke(e){return Bu(e.elements.map(t=>i0(t)).join("|"),{cardinality:e.cardinality,lookahead:e.lookahead,parenthesized:e.parenthesized,wrap:!1})}function Tke(e){return Bu(e.elements.map(t=>i0(t)).join(""),{cardinality:e.cardinality,lookahead:e.lookahead,parenthesized:e.parenthesized,wrap:!1})}function Cke(e){return Bu(`${tq}*?${i0(e.terminal)}`,{cardinality:e.cardinality,lookahead:e.lookahead,parenthesized:e.parenthesized})}function wke(e){return Bu(`(?!${i0(e.terminal)})${tq}*?`,{cardinality:e.cardinality,lookahead:e.lookahead,parenthesized:e.parenthesized})}function kke(e){return e.right?Bu(`[${s6(e.left)}-${s6(e.right)}]`,{cardinality:e.cardinality,lookahead:e.lookahead,parenthesized:e.parenthesized,wrap:!1}):Bu(s6(e.left),{cardinality:e.cardinality,lookahead:e.lookahead,parenthesized:e.parenthesized,wrap:!1})}function s6(e){return Nv(e.value)}function Bu(e,t){return(t.parenthesized||t.lookahead||t.wrap!==!1)&&(e=`(${t.lookahead??(t.parenthesized?"":"?:")}${e})`),t.cardinality?`${e}${t.cardinality}`:e}function rq(e){let t=[],r=e.Grammar;for(let n of r.rules)Il(n)&&UW(n)&&FW(yw(n))&&t.push(n.name);return{multilineCommentRules:t,nameRegexp:DW}}function Ake(e){var t=dyt.call(e,cC),r=e[cC];try{e[cC]=void 0;var n=!0}catch{}var i=fyt.call(e);return n&&(t?e[cC]=r:delete e[cC]),i}function Rke(e){return gyt.call(e)}function _ke(e){return e==null?e===void 0?xyt:vyt:$Te&&$Te in Object(e)?pyt(e):yyt(e)}function Lke(e){return e!=null&&typeof e=="object"}function Dke(e){return typeof e=="symbol"||Ac(e)&&xp(e)==byt}function Ike(e,t){for(var r=-1,n=e==null?0:e.length,i=Array(n);++r<n;)i[r]=t(e[r],r,e);return i}function nq(e){if(typeof e=="string")return e;if(un(e))return vw(e,nq)+"";if(NR(e))return zTe?zTe.call(e):"";var t=e+"";return t=="0"&&1/e==-Cyt?"-0":t}function Mke(e){for(var t=e.length;t--&&kyt.test(e.charAt(t)););return t}function Nke(e){return e&&e.slice(0,Syt(e)+1).replace(Eyt,"")}function Pke(e){var t=typeof e;return e!=null&&(t=="object"||t=="function")}function Oke(e){if(typeof e=="number")return e;if(NR(e))return GTe;if(Dl(e)){var t=typeof e.valueOf=="function"?e.valueOf():e;e=Dl(t)?t+"":t}if(typeof e!="string")return e===0?e:+e;e=Ayt(e);var r=_yt.test(e);return r||Lyt.test(e)?Dyt(e.slice(2),r?2:8):Ryt.test(e)?GTe:+e}function Bke(e){if(!e)return e===0?e:0;if(e=Iyt(e),e===VTe||e===-VTe){var t=e<0?-1:1;return t*Myt}return e===e?e:0}function $ke(e){var t=Nyt(e),r=t%1;return t===t?r?t-r:t:0}function Fke(e){return e}function zke(e){if(!Dl(e))return!1;var t=xp(e);return t==Oyt||t==Byt||t==Pyt||t==$yt}function Gke(e){return!!WTe&&WTe in e}function Vke(e){if(e!=null){try{return Vyt.call(e)}catch{}try{return e+""}catch{}}return""}function Wke(e){if(!Dl(e)||zyt(e))return!1;var t=rd(e)?Xyt:qyt;return t.test(a0(e))}function qke(e,t){return e?.[t]}function Hke(e,t){var r=Zyt(e,t);return Kyt(r)?r:void 0}function Uke(e,t,r){switch(r.length){case 0:return e.call(t);case 1:return e.call(t,r[0]);case 2:return e.call(t,r[0],r[1]);case 3:return e.call(t,r[0],r[1],r[2])}return e.apply(t,r)}function Yke(){}function jke(e,t){var r=-1,n=e.length;for(t||(t=Array(n));++r<n;)t[r]=e[r];return t}function Xke(e){var t=0,r=0;return function(){var n=a1t(),i=i1t-(n-r);if(r=n,i>0){if(++t>=n1t)return arguments[0]}else t=0;return e.apply(void 0,arguments)}}function Kke(e){return function(){return e}}function Zke(e,t){for(var r=-1,n=e==null?0:e.length;++r<n&&t(e[r],r,e)!==!1;);return e}function Jke(e,t,r,n){for(var i=e.length,a=r+(n?1:-1);n?a--:++a<i;)if(t(e[a],a,e))return a;return-1}function tSe(e){return e!==e}function rSe(e,t,r){for(var n=r-1,i=e.length;++n<i;)if(e[n]===t)return n;return-1}function nSe(e,t,r){return t===t?p1t(e,t,r):eSe(e,f1t,r)}function iSe(e,t){var r=e==null?0:e.length;return!!r&&iq(e,t,0)>-1}function sSe(e,t){var r=typeof e;return t=t??m1t,!!t&&(r=="number"||r!="symbol"&&g1t.test(e))&&e>-1&&e%1==0&&e<t}function oSe(e,t,r){t=="__proto__"&&Y6?Y6(e,t,{configurable:!0,enumerable:!0,value:r,writable:!0}):e[t]=r}function lSe(e,t){return e===t||e!==e&&t!==t}function cSe(e,t,r){var n=e[t];(!(v1t.call(e,t)&&Tw(n,r))||r===void 0&&!(t in e))&&aq(e,t,r)}function uSe(e,t,r,n){var i=!r;r||(r={});for(var a=-1,s=t.length;++a<s;){var l=t[a],u=n?n(r[l],e[l],l,r,e):void 0;u===void 0&&(u=e[l]),i?aq(r,l,u):OR(r,l,u)}return r}function hSe(e,t,r){return t=HTe(t===void 0?e.length-1:t,0),function(){for(var n=arguments,i=-1,a=HTe(n.length-t,0),s=Array(a);++i<a;)s[i]=n[t+i];i=-1;for(var l=Array(t+1);++i<t;)l[i]=n[i];return l[t]=r(s),t1t(e,this,l)}}function dSe(e,t){return d1t(x1t(e,t,bw),e+"")}function fSe(e){return typeof e=="number"&&e>-1&&e%1==0&&e<=b1t}function pSe(e){return e!=null&&oq(e.length)&&!rd(e)}function mSe(e,t,r){if(!Dl(r))return!1;var n=typeof t;return(n=="number"?zu(r)&&PR(t,r.length):n=="string"&&t in r)?Tw(r[t],e):!1}function gSe(e){return sq(function(t,r){var n=-1,i=r.length,a=i>1?r[i-1]:void 0,s=i>2?r[2]:void 0;for(a=e.length>3&&typeof a=="function"?(i--,a):void 0,s&&BR(r[0],r[1],s)&&(a=i<3?void 0:a,i=1),t=Object(t);++n<i;){var l=r[n];l&&e(t,l,n,a)}return t})}function ySe(e){var t=e&&e.constructor,r=typeof t=="function"&&t.prototype||C1t;return e===r}function vSe(e,t){for(var r=-1,n=Array(e);++r<e;)n[r]=t(r);return n}function xSe(e){return Ac(e)&&xp(e)==k1t}function TSe(){return!1}function wSe(e){return Ac(e)&&oq(e.length)&&!!oi[xp(e)]}function kSe(e){return function(t){return e(t)}}function ESe(e,t){var r=un(e),n=!r&&$R(e),i=!r&&!n&&KC(e),a=!r&&!n&&!i&&lq(e),s=r||n||i||a,l=s?w1t(e.length,String):[],u=l.length;for(var h in e)(t||ovt.call(e,h))&&!(s&&(h=="length"||i&&(h=="offset"||h=="parent")||a&&(h=="buffer"||h=="byteLength"||h=="byteOffset")||PR(h,u)))&&l.push(h);return l}function RSe(e,t){return function(r){return e(t(r))}}function LSe(e){if(!ww(e))return cvt(e);var t=[];for(var r in Object(e))hvt.call(e,r)&&r!="constructor"&&t.push(r);return t}function ISe(e){return zu(e)?ASe(e):DSe(e)}function MSe(e){var t=[];if(e!=null)for(var r in Object(e))t.push(r);return t}function NSe(e){if(!Dl(e))return mvt(e);var t=ww(e),r=[];for(var n in e)n=="constructor"&&(t||!yvt.call(e,n))||r.push(n);return r}function PSe(e){return zu(e)?ASe(e,!0):vvt(e)}function OSe(e,t){if(un(e))return!1;var r=typeof e;return r=="number"||r=="symbol"||r=="boolean"||e==null||NR(e)?!0:bvt.test(e)||!xvt.test(e)||t!=null&&e in Object(t)}function BSe(){this.__data__=ZC?ZC(null):{},this.size=0}function $Se(e){var t=this.has(e)&&delete this.__data__[e];return this.size-=t?1:0,t}function FSe(e){var t=this.__data__;if(ZC){var r=t[e];return r===kvt?void 0:r}return Evt.call(t,e)?t[e]:void 0}function zSe(e){var t=this.__data__;return ZC?t[e]!==void 0:_vt.call(t,e)}function GSe(e,t){var r=this.__data__;return this.size+=this.has(e)?0:1,r[e]=ZC&&t===void 0?Dvt:t,this}function o0(e){var t=-1,r=e==null?0:e.length;for(this.clear();++t<r;){var n=e[t];this.set(n[0],n[1])}}function VSe(){this.__data__=[],this.size=0}function WSe(e,t){for(var r=e.length;r--;)if(Tw(e[r][0],t))return r;return-1}function qSe(e){var t=this.__data__,r=zR(t,e);if(r<0)return!1;var n=t.length-1;return r==n?t.pop():Pvt.call(t,r,1),--this.size,!0}function HSe(e){var t=this.__data__,r=zR(t,e);return r<0?void 0:t[r][1]}function USe(e){return zR(this.__data__,e)>-1}function YSe(e,t){var r=this.__data__,n=zR(r,e);return n<0?(++this.size,r.push([e,t])):r[n][1]=t,this}function l0(e){var t=-1,r=e==null?0:e.length;for(this.clear();++t<r;){var n=e[t];this.set(n[0],n[1])}}function jSe(){this.size=0,this.__data__={hash:new KTe,map:new(QC||GR),string:new KTe}}function XSe(e){var t=typeof e;return t=="string"||t=="number"||t=="symbol"||t=="boolean"?e!=="__proto__":e===null}function KSe(e,t){var r=e.__data__;return Vvt(t)?r[typeof t=="string"?"string":"hash"]:r.map}function ZSe(e){var t=VR(this,e).delete(e);return this.size-=t?1:0,t}function QSe(e){return VR(this,e).get(e)}function JSe(e){return VR(this,e).has(e)}function eEe(e,t){var r=VR(this,e),n=r.size;return r.set(e,t),this.size+=r.size==n?0:1,this}function c0(e){var t=-1,r=e==null?0:e.length;for(this.clear();++t<r;){var n=e[t];this.set(n[0],n[1])}}function qR(e,t){if(typeof e!="function"||t!=null&&typeof t!="function")throw new TypeError(Yvt);var r=E(function(){var n=arguments,i=t?t.apply(this,n):n[0],a=r.cache;if(a.has(i))return a.get(i);var s=e.apply(this,n);return r.cache=a.set(i,s)||a,s},"memoized");return r.cache=new(qR.Cache||WR),r}function tEe(e){var t=jvt(e,function(n){return r.size===Xvt&&r.clear(),n}),r=t.cache;return t}function rEe(e){return e==null?"":wyt(e)}function nEe(e,t){return un(e)?e:cq(e,t)?[e]:ext(txt(e))}function iEe(e){if(typeof e=="string"||NR(e))return e;var t=e+"";return t=="0"&&1/e==-rxt?"-0":t}function aEe(e,t){t=HR(t,e);for(var r=0,n=t.length;e!=null&&r<n;)e=e[Sw(t[r++])];return r&&r==n?e:void 0}function sEe(e,t,r){var n=e==null?void 0:uq(e,t);return n===void 0?r:n}function oEe(e,t){for(var r=-1,n=t.length,i=e.length;++r<n;)e[i+r]=t[r];return e}function lEe(e){return un(e)||$R(e)||!!(ZTe&&e&&e[ZTe])}function dq(e,t,r,n,i){var a=-1,s=e.length;for(r||(r=ixt),i||(i=[]);++a<s;){var l=e[a];t>0&&r(l)?t>1?dq(l,t-1,r,n,i):hq(i,l):n||(i[i.length]=l)}return i}function cEe(e){var t=e==null?0:e.length;return t?fq(e,1):[]}function hEe(e,t,r){var n=-1,i=e.length;t<0&&(t=-t>i?0:i+t),r=r>i?i:r,r<0&&(r+=i),i=t>r?0:r-t>>>0,t>>>=0;for(var a=Array(i);++n<i;)a[n]=e[n+t];return a}function fEe(e,t,r,n){var i=-1,a=e==null?0:e.length;for(n&&a&&(r=e[++i]);++i<a;)r=t(r,e[i],i,e);return r}function pEe(){this.__data__=new GR,this.size=0}function mEe(e){var t=this.__data__,r=t.delete(e);return this.size=t.size,r}function gEe(e){return this.__data__.get(e)}function yEe(e){return this.__data__.has(e)}function vEe(e,t){var r=this.__data__;if(r instanceof GR){var n=r.__data__;if(!QC||n.length<hxt-1)return n.push([e,t]),this.size=++r.size,this;r=this.__data__=new WR(n)}return r.set(e,t),this.size=r.size,this}function u0(e){var t=this.__data__=new GR(e);this.size=t.size}function xEe(e,t){return e&&Cw(t,jo(t),e)}function bEe(e,t){return e&&Cw(t,FR(t),e)}function CEe(e,t){if(t)return e.slice();var r=e.length,n=eCe?eCe(r):new e.constructor(r);return e.copy(n),n}function wEe(e,t){for(var r=-1,n=e==null?0:e.length,i=0,a=[];++r<n;){var s=e[r];t(s,r,e)&&(a[i++]=s)}return a}function kEe(){return[]}function EEe(e,t){return Cw(e,mq(e),t)}function REe(e,t){return Cw(e,AEe(e),t)}function _Ee(e,t,r){var n=t(e);return un(e)?n:hq(n,r(e))}function DEe(e){return LEe(e,jo,mq)}function IEe(e){return LEe(e,FR,AEe)}function NEe(e){var t=e.length,r=new e.constructor(t);return t&&typeof e[0]=="string"&&Nxt.call(e,"index")&&(r.index=e.index,r.input=e.input),r}function PEe(e){var t=new e.constructor(e.byteLength);return new j6(t).set(new j6(e)),t}function OEe(e,t){var r=t?gq(e.buffer):e.buffer;return new e.constructor(r,e.byteOffset,e.byteLength)}function BEe(e){var t=new e.constructor(e.source,$xt.exec(e));return t.lastIndex=e.lastIndex,t}function $Ee(e){return lCe?Object(lCe.call(e)):{}}function FEe(e,t){var r=t?gq(e.buffer):e.buffer;return new e.constructor(r,e.byteOffset,e.length)}function zEe(e,t,r){var n=e.constructor;switch(t){case Kxt:return gq(e);case Vxt:case Wxt:return new n(+e);case Zxt:return Bxt(e,r);case Qxt:case Jxt:case ebt:case tbt:case rbt:case nbt:case ibt:case abt:case sbt:return Gxt(e,r);case qxt:return new n;case Hxt:case jxt:return new n(e);case Uxt:return Fxt(e);case Yxt:return new n;case Xxt:return zxt(e)}}function GEe(e){return typeof e.constructor=="function"&&!ww(e)?e1t(uEe(e)):{}}function VEe(e){return Ac(e)&&Rv(e)==cbt}function WEe(e){return Ac(e)&&Rv(e)==fbt}function FC(e,t,r,n,i,a){var s,l=t&ybt,u=t&vbt,h=t&xbt;if(r&&(s=i?r(e,n,i,a):r(e)),s!==void 0)return s;if(!Dl(e))return e;var d=un(e);if(d){if(s=Pxt(e),!l)return r1t(e,s)}else{var f=Rv(e),p=f==HEe||f==kbt;if(KC(e))return gxt(e,l);if(f==UEe||f==qEe||p&&!i){if(s=u||p?{}:lbt(e),!l)return u?wxt(e,pxt(s,e)):bxt(e,fxt(s,e))}else{if(!Qn[f])return i?e:{};s=obt(e,f,l)}}a||(a=new $C);var m=a.get(e);if(m)return m;a.set(e,s),gbt(e)?e.forEach(function(v){s.add(FC(v,t,r,v,e,a))}):dbt(e)&&e.forEach(function(v,x){s.set(x,FC(v,t,r,x,e,a))});var g=h?u?MEe:SG:u?FR:jo,y=d?void 0:g(e);return Qke(y||e,function(v,x){y&&(x=v,v=e[x]),OR(s,x,FC(v,t,r,x,e,a))}),s}function YEe(e){return Wbt(e,qbt)}function jEe(e){for(var t=-1,r=e==null?0:e.length,n=0,i=[];++t<r;){var a=e[t];a&&(i[n++]=a)}return i}function XEe(e){return this.__data__.set(e,Hbt),this}function KEe(e){return this.__data__.has(e)}function JC(e){var t=-1,r=e==null?0:e.length;for(this.__data__=new WR;++t<r;)this.add(e[t])}function ZEe(e,t){for(var r=-1,n=e==null?0:e.length;++r<n;)if(t(e[r],r,e))return!0;return!1}function JEe(e,t){return e.has(t)}function e4e(e,t,r,n,i,a){var s=r&jbt,l=e.length,u=t.length;if(l!=u&&!(s&&u>l))return!1;var h=a.get(e),d=a.get(t);if(h&&d)return h==t&&d==e;var f=-1,p=!0,m=r&Xbt?new yq:void 0;for(a.set(e,t),a.set(t,e);++f<l;){var g=e[f],y=t[f];if(n)var v=s?n(y,g,f,t,e,a):n(g,y,f,e,t,a);if(v!==void 0){if(v)continue;p=!1;break}if(m){if(!QEe(t,function(x,b){if(!vq(m,b)&&(g===x||i(g,x,r,n,a)))return m.push(b)})){p=!1;break}}else if(!(g===y||i(g,y,r,n,a))){p=!1;break}}return a.delete(e),a.delete(t),p}function r4e(e){var t=-1,r=Array(e.size);return e.forEach(function(n,i){r[++t]=[i,n]}),r}function n4e(e){var t=-1,r=Array(e.size);return e.forEach(function(n){r[++t]=n}),r}function i4e(e,t,r,n,i,a,s){switch(r){case c2t:if(e.byteLength!=t.byteLength||e.byteOffset!=t.byteOffset)return!1;e=e.buffer,t=t.buffer;case l2t:return!(e.byteLength!=t.byteLength||!a(new j6(e),new j6(t)));case Jbt:case e2t:case n2t:return Tw(+e,+t);case t2t:return e.name==t.name&&e.message==t.message;case i2t:case s2t:return e==t+"";case r2t:var l=Kbt;case a2t:var u=n&Zbt;if(l||(l=xq),e.size!=t.size&&!u)return!1;var h=s.get(e);if(h)return h==t;n|=Qbt,s.set(e,t);var d=t4e(l(e),l(t),n,i,a,s);return s.delete(e),d;case o2t:if(rz)return rz.call(e)==rz.call(t)}return!1}function a4e(e,t,r,n,i,a){var s=r&h2t,l=SG(e),u=l.length,h=SG(t),d=h.length;if(u!=d&&!s)return!1;for(var f=u;f--;){var p=l[f];if(!(s?p in t:f2t.call(t,p)))return!1}var m=a.get(e),g=a.get(t);if(m&&g)return m==t&&g==e;var y=!0;a.set(e,t),a.set(t,e);for(var v=s;++f<u;){p=l[f];var x=e[p],b=t[p];if(n)var T=s?n(b,x,p,t,e,a):n(x,b,p,e,t,a);if(!(T===void 0?x===b||i(x,b,r,n,a):T)){y=!1;break}v||(v=p=="constructor")}if(y&&!v){var k=e.constructor,C=t.constructor;k!=C&&"constructor"in e&&"constructor"in t&&!(typeof k=="function"&&k instanceof k&&typeof C=="function"&&C instanceof C)&&(y=!1)}return a.delete(e),a.delete(t),y}function s4e(e,t,r,n,i,a){var s=un(e),l=un(t),u=s?fCe:Rv(e),h=l?fCe:Rv(t);u=u==dCe?NA:u,h=h==dCe?NA:h;var d=u==NA,f=h==NA,p=u==h;if(p&&KC(e)){if(!KC(t))return!1;s=!0,d=!1}if(p&&!d)return a||(a=new $C),s||lq(e)?t4e(e,t,r,n,i,a):u2t(e,t,u,r,n,i,a);if(!(r&m2t)){var m=d&&pCe.call(e,"__wrapped__"),g=f&&pCe.call(t,"__wrapped__");if(m||g){var y=m?e.value():e,v=g?t.value():t;return a||(a=new $C),i(y,v,r,n,a)}}return p?(a||(a=new $C),p2t(e,t,r,n,i,a)):!1}function bq(e,t,r,n,i){return e===t?!0:e==null||t==null||!Ac(e)&&!Ac(t)?e!==e&&t!==t:y2t(e,t,r,n,bq,i)}function l4e(e,t,r,n){var i=r.length,a=i,s=!n;if(e==null)return!a;for(e=Object(e);i--;){var l=r[i];if(s&&l[2]?l[1]!==e[l[0]]:!(l[0]in e))return!1}for(;++i<a;){l=r[i];var u=l[0],h=e[u],d=l[1];if(s&&l[2]){if(h===void 0&&!(u in e))return!1}else{var f=new $C;if(n)var p=n(h,d,u,e,t,f);if(!(p===void 0?o4e(d,h,v2t|x2t,n,f):p))return!1}}return!0}function c4e(e){return e===e&&!Dl(e)}function h4e(e){for(var t=jo(e),r=t.length;r--;){var n=t[r],i=e[n];t[r]=[n,i,u4e(i)]}return t}function d4e(e,t){return function(r){return r==null?!1:r[e]===t&&(t!==void 0||e in Object(r))}}function p4e(e){var t=T2t(e);return t.length==1&&t[0][2]?f4e(t[0][0],t[0][1]):function(r){return r===e||b2t(r,e,t)}}function m4e(e,t){return e!=null&&t in Object(e)}function g4e(e,t,r){t=HR(t,e);for(var n=-1,i=t.length,a=!1;++n<i;){var s=Sw(t[n]);if(!(a=e!=null&&r(e,s)))break;e=e[s]}return a||++n!=i?a:(i=e==null?0:e.length,!!i&&oq(i)&&PR(s,i)&&(un(e)||$R(e)))}function v4e(e,t){return e!=null&&y4e(e,t,w2t)}function x4e(e,t){return cq(e)&&u4e(t)?f4e(Sw(e),t):function(r){var n=nxt(r,e);return n===void 0&&n===t?k2t(r,e):o4e(t,n,S2t|E2t)}}function b4e(e){return function(t){return t?.[e]}}function T4e(e){return function(t){return uq(t,e)}}function C4e(e){return cq(e)?R2t(Sw(e)):_2t(e)}function w4e(e){return typeof e=="function"?e:e==null?bw:typeof e=="object"?un(e)?A2t(e[0],e[1]):C2t(e):L2t(e)}function k4e(e,t,r,n){for(var i=-1,a=e==null?0:e.length;++i<a;){var s=e[i];t(n,s,r(s),e)}return n}function S4e(e){return function(t,r,n){for(var i=-1,a=Object(t),s=n(t),l=s.length;l--;){var u=s[e?l:++i];if(r(a[u],u,a)===!1)break}return t}}function E4e(e,t){return e&&N2t(e,t,jo)}function A4e(e,t){return function(r,n){if(r==null)return r;if(!zu(r))return e(r,n);for(var i=r.length,a=t?i:-1,s=Object(r);(t?a--:++a<i)&&n(s[a],a,s)!==!1;);return r}}function R4e(e,t,r,n){return h0(e,function(i,a,s){t(n,i,r(i),s)}),n}function _4e(e,t){return function(r,n){var i=un(r)?D2t:$2t,a=t?t():{};return i(r,e,Gu(n,2),a)}}function D4e(e){return Ac(e)&&zu(e)}function I4e(e,t,r){for(var n=-1,i=e==null?0:e.length;++n<i;)if(r(t,e[n]))return!0;return!1}function N4e(e,t,r,n){var i=-1,a=aSe,s=!0,l=e.length,u=[],h=t.length;if(!l)return u;r&&(t=vw(t,kw(r))),n?(a=M4e,s=!1):t.length>=V2t&&(a=vq,s=!1,t=new yq(t));e:for(;++i<l;){var d=e[i],f=r==null?d:r(d);if(d=n||d!==0?d:0,s&&f===f){for(var p=h;p--;)if(t[p]===f)continue e;u.push(d)}else a(t,f,n)||u.push(d)}return u}function P4e(e){var t=e==null?0:e.length;return t?e[t-1]:void 0}function O4e(e,t,r){var n=e==null?0:e.length;return n?(t=r||t===void 0?1:xw(t),dEe(e,t<0?0:t,n)):[]}function B4e(e,t,r){var n=e==null?0:e.length;return n?(t=r||t===void 0?1:xw(t),t=n-t,dEe(e,0,t<0?0:t)):[]}function $4e(e){return typeof e=="function"?e:bw}function F4e(e,t){var r=un(e)?Qke:h0;return r(e,H2t(t))}function z4e(e,t){for(var r=-1,n=e==null?0:e.length;++r<n;)if(!t(e[r],r,e))return!1;return!0}function G4e(e,t){var r=!0;return h0(e,function(n,i,a){return r=!!t(n,i,a),r}),r}function V4e(e,t,r){var n=un(e)?U2t:Y2t;return r&&BR(e,t,r)&&(t=void 0),n(e,Gu(t,3))}function W4e(e,t){var r=[];return h0(e,function(n,i,a){t(n,i,a)&&r.push(n)}),r}function H4e(e,t){var r=un(e)?pq:q4e;return r(e,Gu(t,3))}function U4e(e){return function(t,r,n){var i=Object(t);if(!zu(t)){var a=Gu(r,3);t=jo(t),r=E(function(l){return a(i[l],l,i)},"predicate")}var s=e(t,r,n);return s>-1?i[a?t[s]:s]:void 0}}function Y4e(e,t,r){var n=e==null?0:e.length;if(!n)return-1;var i=r==null?0:xw(r);return i<0&&(i=X2t(n+i,0)),eSe(e,Gu(t,3),i)}function j4e(e){return e&&e.length?e[0]:void 0}function X4e(e,t){var r=-1,n=zu(e)?Array(e.length):[];return h0(e,function(i,a,s){n[++r]=t(i,a,s)}),n}function K4e(e,t){var r=un(e)?vw:Q2t;return r(e,Gu(t,3))}function Z4e(e,t){return fq(hr(e,t),1)}function Q4e(e,t){return e!=null&&iTt.call(e,t)}function J4e(e,t){return e!=null&&y4e(e,t,aTt)}function e3e(e){return typeof e=="string"||!un(e)&&Ac(e)&&xp(e)==sTt}function t3e(e,t){return vw(t,function(r){return e[r]})}function r3e(e){return e==null?[]:oTt(e,jo(e))}function n3e(e,t,r,n){e=zu(e)?e:ha(e),r=r&&!n?xw(r):0;var i=e.length;return r<0&&(r=lTt(i+r,0)),To(e)?r<=i&&e.indexOf(t,r)>-1:!!i&&iq(e,t,r)>-1}function i3e(e,t,r){var n=e==null?0:e.length;if(!n)return-1;var i=r==null?0:xw(r);return i<0&&(i=cTt(n+i,0)),iq(e,t,i)}function a3e(e){if(e==null)return!0;if(zu(e)&&(un(e)||typeof e=="string"||typeof e.splice=="function"||KC(e)||lq(e)||$R(e)))return!e.length;var t=Rv(e);if(t==uTt||t==hTt)return!e.size;if(ww(e))return!DSe(e).length;for(var r in e)if(fTt.call(e,r))return!1;return!0}function s3e(e){return Ac(e)&&xp(e)==pTt}function o3e(e){return e===void 0}function l3e(e){if(typeof e!="function")throw new TypeError(yTt);return function(){var t=arguments;switch(t.length){case 0:return!e.call(this);case 1:return!e.call(this,t[0]);case 2:return!e.call(this,t[0],t[1]);case 3:return!e.call(this,t[0],t[1],t[2])}return!e.apply(this,t)}}function c3e(e,t,r,n){if(!Dl(e))return e;t=HR(t,e);for(var i=-1,a=t.length,s=a-1,l=e;l!=null&&++i<a;){var u=Sw(t[i]),h=r;if(u==="__proto__"||u==="constructor"||u==="prototype")return e;if(i!=s){var d=l[u];h=n?n(d,u,l):void 0,h===void 0&&(h=Dl(d)?d:PR(t[i+1])?[]:{})}OR(l,u,h),l=l[u]}return e}function u3e(e,t,r){for(var n=-1,i=t.length,a={};++n<i;){var s=t[n],l=uq(e,s);r(l,s)&&xTt(a,HR(s,e),l)}return a}function h3e(e,t){if(e==null)return{};var r=vw(MEe(e),function(n){return[n]});return t=Gu(t),bTt(e,r,function(n,i){return t(n,i[0])})}function d3e(e,t,r,n,i){return i(e,function(a,s,l){r=n?(n=!1,a):t(r,a,s,l)}),r}function f3e(e,t,r){var n=un(e)?sxt:TTt,i=arguments.length<3;return n(e,Gu(t,4),r,i,h0)}function p3e(e,t){var r=un(e)?pq:q4e;return r(e,vTt(Gu(t,3)))}function m3e(e,t){var r;return h0(e,function(n,i,a){return r=t(n,i,a),!r}),!!r}function g3e(e,t,r){var n=un(e)?QEe:CTt;return r&&BR(e,t,r)&&(t=void 0),n(e,Gu(t,3))}function v3e(e,t,r){var n=-1,i=aSe,a=e.length,s=!0,l=[],u=l;if(r)s=!1,i=M4e;else if(a>=ETt){var h=t?null:STt(e);if(h)return xq(h);s=!1,i=vq,u=new yq}else u=t?[]:l;e:for(;++n<a;){var d=e[n],f=t?t(d):d;if(d=r||d!==0?d:0,s&&f===f){for(var p=u.length;p--;)if(u[p]===f)continue e;t&&u.push(f),l.push(d)}else i(u,f,r)||(u!==l&&u.push(f),l.push(d))}return l}function x3e(e){return e&&e.length?ATt(e):[]}function X6(e){console&&console.error&&console.error(`Error: ${e}`)}function wq(e){console&&console.warn&&console.warn(`Warning: ${e}`)}function kq(e){let t=new Date().getTime(),r=e();return{time:new Date().getTime()-t,value:r}}function Sq(e){function t(){}o(t,"FakeConstructor"),E(t,"FakeConstructor"),t.prototype=e;let r=new t;function n(){return typeof r.bar}return o(n,"fakeAccess"),E(n,"fakeAccess"),n(),n(),e;(0,eval)(e)}function b3e(e){return T3e(e)?e.LABEL:e.name}function T3e(e){return To(e.LABEL)&&e.LABEL!==""}function C3e(e){return hr(e,zC)}function zC(e){function t(r){return hr(r,zC)}if(o(t,"convertDefinition"),E(t,"convertDefinition"),e instanceof Gs){let r={type:"NonTerminal",name:e.nonTerminalName,idx:e.idx};return To(e.label)&&(r.label=e.label),r}else{if(e instanceof Co)return{type:"Alternative",definition:t(e.definition)};if(e instanceof Ua)return{type:"Option",idx:e.idx,definition:t(e.definition)};if(e instanceof Zo)return{type:"RepetitionMandatory",idx:e.idx,definition:t(e.definition)};if(e instanceof Qo)return{type:"RepetitionMandatoryWithSeparator",idx:e.idx,separator:zC(new ci({terminalType:e.separator})),definition:t(e.definition)};if(e instanceof wo)return{type:"RepetitionWithSeparator",idx:e.idx,separator:zC(new ci({terminalType:e.separator})),definition:t(e.definition)};if(e instanceof Mi)return{type:"Repetition",idx:e.idx,definition:t(e.definition)};if(e instanceof ko)return{type:"Alternation",idx:e.idx,definition:t(e.definition)};if(e instanceof ci){let r={type:"Terminal",name:e.terminalType.name,label:b3e(e.terminalType),idx:e.idx};To(e.label)&&(r.terminalLabel=e.label);let n=e.terminalType.PATTERN;return e.terminalType.PATTERN&&(r.pattern=Xh(n)?n.source:n),r}else{if(e instanceof Pv)return{type:"Rule",name:e.name,orgText:e.orgText,definition:t(e.definition)};throw Error("non exhaustive match")}}}function w3e(e){return e instanceof Co||e instanceof Ua||e instanceof Mi||e instanceof Zo||e instanceof Qo||e instanceof wo||e instanceof ci||e instanceof Pv}function tw(e,t=[]){return e instanceof Ua||e instanceof Mi||e instanceof wo?!0:e instanceof ko?y3e(e.definition,n=>tw(n,t)):e instanceof Gs&&qs(t,e)?!1:e instanceof Vu?(e instanceof Gs&&t.push(e),Ec(e.definition,n=>tw(n,t))):!1}function k3e(e){return e instanceof ko}function Tc(e){if(e instanceof Gs)return"SUBRULE";if(e instanceof Ua)return"OPTION";if(e instanceof ko)return"OR";if(e instanceof Zo)return"AT_LEAST_ONE";if(e instanceof Qo)return"AT_LEAST_ONE_SEP";if(e instanceof wo)return"MANY_SEP";if(e instanceof Mi)return"MANY";if(e instanceof ci)return"CONSUME";throw Error("non exhaustive match")}function RG(e,t,r){return[new Ua({definition:[new ci({terminalType:e.separator})].concat(e.definition)})].concat(t,r)}function Bv(e){if(e instanceof Gs)return Bv(e.referencedRule);if(e instanceof ci)return A3e(e);if(w3e(e))return S3e(e);if(k3e(e))return E3e(e);throw Error("non exhaustive match")}function S3e(e){let t=[],r=e.definition,n=0,i=r.length>n,a,s=!0;for(;i&&s;)a=r[n],s=tw(a),t=t.concat(Bv(a)),n=n+1,i=r.length>n;return Cq(t)}function E3e(e){let t=hr(e.definition,r=>Bv(r));return Cq(Sc(t))}function A3e(e){return[e.terminalType]}function _3e(e){let t={};return Ir(e,r=>{let n=new RTt(r).startWalking();Xo(t,n)}),t}function L3e(e,t){return e.name+t+R3e}function Aw(e){let t=e.toString();if(o6.hasOwnProperty(t))return o6[t];{let r=_Tt.pattern(t);return o6[t]=r,r}}function D3e(){o6={}}function M3e(e,t=!1){try{let r=Aw(e);return Z6(r.value,{},r.flags.ignoreCase)}catch(r){if(r.message===I3e)t&&wq(`${K6}	Unable to optimize: < ${e.toString()} >
 	Complement Sets cannot be automatically optimized.
 	This will disable the lexer's first char optimizations.
-	See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#COMPLEMENT for details.`);else{let i="";t&&(i=`
+	See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#COMPLEMENT for details.`);else{let n="";t&&(n=`
 	This will disable the lexer's first char optimizations.
-	See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#REGEXP_PARSING for details.`),w5(`${S5}
+	See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#REGEXP_PARSING for details.`),X6(`${K6}
 	Failed parsing: < ${e.toString()} >
 	Using the @chevrotain/regexp-to-ast library
-	Please open an issue at: https://github.com/chevrotain/chevrotain/issues`+i)}}return[]}function E5(e,t,r){switch(e.type){case"Disjunction":for(let n=0;n<e.value.length;n++)E5(e.value[n],t,r);break;case"Alternative":let i=e.value;for(let n=0;n<i.length;n++){let a=i[n];switch(a.type){case"EndAnchor":case"GroupBackReference":case"Lookahead":case"NegativeLookahead":case"Lookbehind":case"NegativeLookbehind":case"StartAnchor":case"WordBoundary":case"NonWordBoundary":continue}let s=a;switch(s.type){case"Character":O2(s.value,t,r);break;case"Set":if(s.complement===!0)throw Error(oCe);vr(s.value,u=>{if(typeof u=="number")O2(u,t,r);else{let h=u;if(r===!0)for(let d=h.from;d<=h.to;d++)O2(d,t,r);else{for(let d=h.from;d<=h.to&&d<B2;d++)O2(d,t,r);if(h.to>=B2){let d=h.from>=B2?h.from:B2,f=h.to,p=fh(d),m=fh(f);for(let g=p;g<=m;g++)t[g]=g}}}});break;case"Group":E5(s.value,t,r);break;default:throw Error("Non Exhaustive Match")}let l=s.quantifier!==void 0&&s.quantifier.atLeast===0;if(s.type==="Group"&&A5(s)===!1||s.type!=="Group"&&l===!1)break}break;default:throw Error("non exhaustive match!")}return Hn(t)}function O2(e,t,r){let i=fh(e);t[i]=i,r===!0&&cCe(e,t)}function cCe(e,t){let r=String.fromCharCode(e),i=r.toUpperCase();if(i!==r){let n=fh(i.charCodeAt(0));t[n]=n}else{let n=r.toLowerCase();if(n!==r){let a=fh(n.charCodeAt(0));t[a]=a}}}function TF(e,t){return ty(e.value,r=>{if(typeof r=="number")return fs(t,r);{let i=r;return ty(t,n=>i.from<=n&&n<=i.to)!==void 0}})}function A5(e){let t=e.quantifier;return t&&t.atLeast===0?!0:e.value?Kr(e.value)?Hl(e.value,A5):A5(e.value):!1}function kA(e,t){if(t instanceof RegExp){let r=OT(t),i=new T0t(e);return i.visit(r),i.found}else return ty(t,r=>fs(e,r.charCodeAt(0)))!==void 0}function hCe(e,t){t=Rz(t,{useSticky:uCe,debug:!1,safeMode:!1,positionTracking:"full",lineTerminatorCharacters:["\r",`
-`],tracer:S((b,T)=>T(),"tracer")});let r=t.tracer;r("initCharCodeToOptimizedIndexMap",()=>{MCe()});let i;r("Reject Lexer.NA",()=>{i=TA(e,b=>b[G0]===ls.NA)});let n=!1,a;r("Transform Patterns",()=>{n=!1,a=nr(i,b=>{let T=b[G0];if(hh(T)){let w=T.source;return w.length===1&&w!=="^"&&w!=="$"&&w!=="."&&!T.ignoreCase?w:w.length===2&&w[0]==="\\"&&!fs(["d","D","s","S","t","r","n","t","0","c","b","B","f","v","w","W"],w[1])?w[1]:t.useSticky?kF(T):CF(T)}else{if(vh(T))return n=!0,{exec:T};if(typeof T=="object")return n=!0,T;if(typeof T=="string"){if(T.length===1)return T;{let w=T.replace(/[\\^$.*+?()[\]{}|]/g,"\\$&"),C=new RegExp(w);return t.useSticky?kF(C):CF(C)}}else throw Error("non exhaustive match")}})});let s,l,u,h,d;r("misc mapping",()=>{s=nr(i,b=>b.tokenTypeIdx),l=nr(i,b=>{let T=b.GROUP;if(T!==ls.SKIPPED){if(Vs(T))return T;if(dh(T))return!1;throw Error("non exhaustive match")}}),u=nr(i,b=>{let T=b.LONGER_ALT;if(T)return Kr(T)?nr(T,C=>K1e(i,C)):[K1e(i,T)]}),h=nr(i,b=>b.PUSH_MODE),d=nr(i,b=>mr(b,"POP_MODE"))});let f;r("Line Terminator Handling",()=>{let b=Bz(t.lineTerminatorCharacters);f=nr(i,T=>!1),t.positionTracking!=="onlyOffset"&&(f=nr(i,T=>mr(T,"LINE_BREAKS")?!!T.LINE_BREAKS:Pz(T,b)===!1&&kA(b,T.PATTERN)))});let p,m,g,y;r("Misc Mapping #2",()=>{p=nr(i,Oz),m=nr(a,RCe),g=go(i,(b,T)=>{let w=T.GROUP;return Vs(w)&&w!==ls.SKIPPED&&(b[w]=[]),b},{}),y=nr(a,(b,T)=>({pattern:a[T],longerAlt:u[T],canLineTerminator:f[T],isCustom:p[T],short:m[T],group:l[T],push:h[T],pop:d[T],tokenTypeIdx:s[T],tokenType:i[T]}))});let v=!0,x=[];return t.safeMode||r("First Char Optimization",()=>{x=go(i,(b,T,w)=>{if(typeof T.PATTERN=="string"){let C=T.PATTERN.charCodeAt(0),k=fh(C);qE(b,k,y[w])}else if(Kr(T.START_CHARS_HINT)){let C;vr(T.START_CHARS_HINT,k=>{let E=typeof k=="string"?k.charCodeAt(0):k,A=fh(E);C!==A&&(C=A,qE(b,A,y[w]))})}else if(hh(T.PATTERN))if(T.PATTERN.unicode)v=!1,t.ensureOptimizations&&w5(`${S5}	Unable to analyze < ${T.PATTERN.toString()} > pattern.
+	Please open an issue at: https://github.com/chevrotain/chevrotain/issues`+n)}}return[]}function Z6(e,t,r){switch(e.type){case"Disjunction":for(let i=0;i<e.value.length;i++)Z6(e.value[i],t,r);break;case"Alternative":let n=e.value;for(let i=0;i<n.length;i++){let a=n[i];switch(a.type){case"EndAnchor":case"GroupBackReference":case"Lookahead":case"NegativeLookahead":case"Lookbehind":case"NegativeLookbehind":case"StartAnchor":case"WordBoundary":case"NonWordBoundary":continue}let s=a;switch(s.type){case"Character":SC(s.value,t,r);break;case"Set":if(s.complement===!0)throw Error(I3e);Ir(s.value,u=>{if(typeof u=="number")SC(u,t,r);else{let h=u;if(r===!0)for(let d=h.from;d<=h.to;d++)SC(d,t,r);else{for(let d=h.from;d<=h.to&&d<AC;d++)SC(d,t,r);if(h.to>=AC){let d=h.from>=AC?h.from:AC,f=h.to,p=Zh(d),m=Zh(f);for(let g=p;g<=m;g++)t[g]=g}}}});break;case"Group":Z6(s.value,t,r);break;default:throw Error("Non Exhaustive Match")}let l=s.quantifier!==void 0&&s.quantifier.atLeast===0;if(s.type==="Group"&&Q6(s)===!1||s.type!=="Group"&&l===!1)break}break;default:throw Error("non exhaustive match!")}return ha(t)}function SC(e,t,r){let n=Zh(e);t[n]=n,r===!0&&N3e(e,t)}function N3e(e,t){let r=String.fromCharCode(e),n=r.toUpperCase();if(n!==r){let i=Zh(n.charCodeAt(0));t[i]=i}else{let i=r.toLowerCase();if(i!==r){let a=Zh(i.charCodeAt(0));t[a]=a}}}function _G(e,t){return _v(e.value,r=>{if(typeof r=="number")return qs(t,r);{let n=r;return _v(t,i=>n.from<=i&&i<=n.to)!==void 0}})}function Q6(e){let t=e.quantifier;return t&&t.atLeast===0?!0:e.value?un(e.value)?Ec(e.value,Q6):Q6(e.value):!1}function XR(e,t){if(t instanceof RegExp){let r=Aw(t),n=new LTt(e);return n.visit(r),n.found}else return _v(t,r=>qs(e,r.charCodeAt(0)))!==void 0}function P3e(e,t){t=Tq(t,{debug:!1,safeMode:!1,positionTracking:"full",lineTerminatorCharacters:["\r",`
+`],tracer:E((b,T)=>T(),"tracer")});let r=t.tracer;r("initCharCodeToOptimizedIndexMap",()=>{r5e()});let n;r("Reject Lexer.NA",()=>{n=YR(e,b=>b[Kg]===Fs.NA)});let i=!1,a;r("Transform Patterns",()=>{i=!1,a=hr(n,b=>{let T=b[Kg];if(Xh(T)){let k=T.source;return k.length===1&&k!=="^"&&k!=="$"&&k!=="."&&!T.ignoreCase?k:k.length===2&&k[0]==="\\"&&!qs(["d","D","s","S","t","r","n","t","0","c","b","B","f","v","w","W"],k[1])?k[1]:LG(T)}else{if(rd(T))return i=!0,{exec:T};if(typeof T=="object")return i=!0,T;if(typeof T=="string"){if(T.length===1)return T;{let k=T.replace(/[\\^$.*+?()[\]{}|]/g,"\\$&"),C=new RegExp(k);return LG(C)}}else throw Error("non exhaustive match")}})});let s,l,u,h,d;r("misc mapping",()=>{s=hr(n,b=>b.tokenTypeIdx),l=hr(n,b=>{let T=b.GROUP;if(T!==Fs.SKIPPED){if(To(T))return T;if(Kh(T))return!1;throw Error("non exhaustive match")}}),u=hr(n,b=>{let T=b.LONGER_ALT;if(T)return un(T)?hr(T,C=>gCe(n,C)):[gCe(n,T)]}),h=hr(n,b=>b.PUSH_MODE),d=hr(n,b=>wr(b,"POP_MODE"))});let f;r("Line Terminator Handling",()=>{let b=Rq(t.lineTerminatorCharacters);f=hr(n,T=>!1),t.positionTracking!=="onlyOffset"&&(f=hr(n,T=>wr(T,"LINE_BREAKS")?!!T.LINE_BREAKS:Aq(T,b)===!1&&XR(b,T.PATTERN)))});let p,m,g,y;r("Misc Mapping #2",()=>{p=hr(n,Eq),m=hr(a,e5e),g=Ko(n,(b,T)=>{let k=T.GROUP;return To(k)&&k!==Fs.SKIPPED&&(b[k]=[]),b},{}),y=hr(a,(b,T)=>({pattern:a[T],longerAlt:u[T],canLineTerminator:f[T],isCustom:p[T],short:m[T],group:l[T],push:h[T],pop:d[T],tokenTypeIdx:s[T],tokenType:n[T]}))});let v=!0,x=[];return t.safeMode||r("First Char Optimization",()=>{x=Ko(n,(b,T,k)=>{if(typeof T.PATTERN=="string"){let C=T.PATTERN.charCodeAt(0),w=Zh(C);l6(b,w,y[k])}else if(un(T.START_CHARS_HINT)){let C;Ir(T.START_CHARS_HINT,w=>{let S=typeof w=="string"?w.charCodeAt(0):w,R=Zh(S);C!==R&&(C=R,l6(b,R,y[k]))})}else if(Xh(T.PATTERN))if(T.PATTERN.unicode)v=!1,t.ensureOptimizations&&X6(`${K6}	Unable to analyze < ${T.PATTERN.toString()} > pattern.
 	The regexp unicode flag is not currently supported by the regexp-to-ast library.
 	This will disable the lexer's first char optimizations.
-	For details See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#UNICODE_OPTIMIZE`);else{let C=lCe(T.PATTERN,t.ensureOptimizations);Oi(C)&&(v=!1),vr(C,k=>{qE(b,k,y[w])})}else t.ensureOptimizations&&w5(`${S5}	TokenType: <${T.name}> is using a custom token pattern without providing <start_chars_hint> parameter.
+	For details See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#UNICODE_OPTIMIZE`);else{let C=M3e(T.PATTERN,t.ensureOptimizations);ei(C)&&(v=!1),Ir(C,w=>{l6(b,w,y[k])})}else t.ensureOptimizations&&X6(`${K6}	TokenType: <${T.name}> is using a custom token pattern without providing <start_chars_hint> parameter.
 	This will disable the lexer's first char optimizations.
-	For details See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#CUSTOM_OPTIMIZE`),v=!1;return b},[])}),{emptyGroups:g,patternIdxToConfig:y,charCodeToPatternIdxToConfig:x,hasCustom:n,canBeOptimized:v}}function dCe(e,t){let r=[],i=pCe(e);r=r.concat(i.errors);let n=mCe(i.valid),a=n.valid;return r=r.concat(n.errors),r=r.concat(fCe(a)),r=r.concat(TCe(a)),r=r.concat(CCe(a,t)),r=r.concat(kCe(a)),r}function fCe(e){let t=[],r=il(e,i=>hh(i[G0]));return t=t.concat(gCe(r)),t=t.concat(vCe(r)),t=t.concat(xCe(r)),t=t.concat(bCe(r)),t=t.concat(yCe(r)),t}function pCe(e){let t=il(e,n=>!mr(n,G0)),r=nr(t,n=>({message:"Token Type: ->"+n.name+"<- missing static 'PATTERN' property",type:dn.MISSING_PATTERN,tokenTypes:[n]})),i=bA(e,t);return{errors:r,valid:i}}function mCe(e){let t=il(e,n=>{let a=n[G0];return!hh(a)&&!vh(a)&&!mr(a,"exec")&&!Vs(a)}),r=nr(t,n=>({message:"Token Type: ->"+n.name+"<- static 'PATTERN' can only be a RegExp, a Function matching the {CustomPatternMatcherFunc} type or an Object matching the {ICustomPattern} interface.",type:dn.INVALID_PATTERN,tokenTypes:[n]})),i=bA(e,t);return{errors:r,valid:i}}function gCe(e){class t extends tA{static{o(this,"EndAnchorFinder")}static{S(this,"EndAnchorFinder")}constructor(){super(...arguments),this.found=!1}visitEndAnchor(a){this.found=!0}}let r=il(e,n=>{let a=n.PATTERN;try{let s=OT(a),l=new t;return l.visit(s),l.found}catch{return C0t.test(a.source)}});return nr(r,n=>({message:`Unexpected RegExp Anchor Error:
-	Token Type: ->`+n.name+`<- static 'PATTERN' cannot contain end of input anchor '$'
-	See chevrotain.io/docs/guide/resolving_lexer_errors.html#ANCHORS	for details.`,type:dn.EOI_ANCHOR_FOUND,tokenTypes:[n]}))}function yCe(e){let t=il(e,i=>i.PATTERN.test(""));return nr(t,i=>({message:"Token Type: ->"+i.name+"<- static 'PATTERN' must not match an empty string",type:dn.EMPTY_MATCH_PATTERN,tokenTypes:[i]}))}function vCe(e){class t extends tA{static{o(this,"StartAnchorFinder")}static{S(this,"StartAnchorFinder")}constructor(){super(...arguments),this.found=!1}visitStartAnchor(a){this.found=!0}}let r=il(e,n=>{let a=n.PATTERN;try{let s=OT(a),l=new t;return l.visit(s),l.found}catch{return k0t.test(a.source)}});return nr(r,n=>({message:`Unexpected RegExp Anchor Error:
-	Token Type: ->`+n.name+`<- static 'PATTERN' cannot contain start of input anchor '^'
-	See https://chevrotain.io/docs/guide/resolving_lexer_errors.html#ANCHORS	for details.`,type:dn.SOI_ANCHOR_FOUND,tokenTypes:[n]}))}function xCe(e){let t=il(e,i=>{let n=i[G0];return n instanceof RegExp&&(n.multiline||n.global)});return nr(t,i=>({message:"Token Type: ->"+i.name+"<- static 'PATTERN' may NOT contain global('g') or multiline('m')",type:dn.UNSUPPORTED_FLAGS_FOUND,tokenTypes:[i]}))}function bCe(e){let t=[],r=nr(e,a=>go(e,(s,l)=>(a.PATTERN.source===l.PATTERN.source&&!fs(t,l)&&l.PATTERN!==ls.NA&&(t.push(l),s.push(l)),s),[]));r=IT(r);let i=il(r,a=>a.length>1);return nr(i,a=>{let s=nr(a,u=>u.name);return{message:`The same RegExp pattern ->${jl(a).PATTERN}<-has been used in all of the following Token Types: ${s.join(", ")} <-`,type:dn.DUPLICATE_PATTERNS_FOUND,tokenTypes:a}})}function TCe(e){let t=il(e,i=>{if(!mr(i,"GROUP"))return!1;let n=i.GROUP;return n!==ls.SKIPPED&&n!==ls.NA&&!Vs(n)});return nr(t,i=>({message:"Token Type: ->"+i.name+"<- static 'GROUP' can only be Lexer.SKIPPED/Lexer.NA/A String",type:dn.INVALID_GROUP_TYPE_FOUND,tokenTypes:[i]}))}function CCe(e,t){let r=il(e,n=>n.PUSH_MODE!==void 0&&!fs(t,n.PUSH_MODE));return nr(r,n=>({message:`Token Type: ->${n.name}<- static 'PUSH_MODE' value cannot refer to a Lexer Mode ->${n.PUSH_MODE}<-which does not exist`,type:dn.PUSH_MODE_DOES_NOT_EXIST,tokenTypes:[n]}))}function kCe(e){let t=[],r=go(e,(i,n,a)=>{let s=n.PATTERN;return s===ls.NA||(Vs(s)?i.push({str:s,idx:a,tokenType:n}):hh(s)&&SCe(s)&&i.push({str:s.source,idx:a,tokenType:n})),i},[]);return vr(e,(i,n)=>{vr(r,({str:a,idx:s,tokenType:l})=>{if(n<s&&wCe(a,i.PATTERN)){let u=`Token: ->${l.name}<- can never be matched.
-Because it appears AFTER the Token Type ->${i.name}<-in the lexer's definition.
-See https://chevrotain.io/docs/guide/resolving_lexer_errors.html#UNREACHABLE`;t.push({message:u,type:dn.UNREACHABLE_PATTERN,tokenTypes:[i,l]})}})}),t}function wCe(e,t){if(hh(t)){if(ECe(t))return!1;let r=t.exec(e);return r!==null&&r.index===0}else{if(vh(t))return t(e,0,[],{});if(mr(t,"exec"))return t.exec(e,0,[],{});if(typeof t=="string")return t===e;throw Error("non exhaustive match")}}function SCe(e){return ty([".","\\","[","]","|","^","$","(",")","?","*","+","{"],r=>e.source.indexOf(r)!==-1)===void 0}function ECe(e){return/(\(\?=)|(\(\?!)|(\(\?<=)|(\(\?<!)/.test(e.source)}function CF(e){let t=e.ignoreCase?"i":"";return new RegExp(`^(?:${e.source})`,t)}function kF(e){let t=e.ignoreCase?"iy":"y";return new RegExp(`${e.source}`,t)}function ACe(e,t,r){let i=[];return mr(e,P2)||i.push({message:"A MultiMode Lexer cannot be initialized without a <"+P2+`> property in its definition
-`,type:dn.MULTI_MODE_LEXER_WITHOUT_DEFAULT_MODE}),mr(e,yE)||i.push({message:"A MultiMode Lexer cannot be initialized without a <"+yE+`> property in its definition
-`,type:dn.MULTI_MODE_LEXER_WITHOUT_MODES_PROPERTY}),mr(e,yE)&&mr(e,P2)&&!mr(e.modes,e.defaultMode)&&i.push({message:`A MultiMode Lexer cannot be initialized with a ${P2}: <${e.defaultMode}>which does not exist
-`,type:dn.MULTI_MODE_LEXER_DEFAULT_MODE_VALUE_DOES_NOT_EXIST}),mr(e,yE)&&vr(e.modes,(n,a)=>{vr(n,(s,l)=>{if(dh(s))i.push({message:`A Lexer cannot be initialized using an undefined Token Type. Mode:<${a}> at index: <${l}>
-`,type:dn.LEXER_DEFINITION_CANNOT_CONTAIN_UNDEFINED});else if(mr(s,"LONGER_ALT")){let u=Kr(s.LONGER_ALT)?s.LONGER_ALT:[s.LONGER_ALT];vr(u,h=>{!dh(h)&&!fs(n,h)&&i.push({message:`A MultiMode Lexer cannot be initialized with a longer_alt <${h.name}> on token <${s.name}> outside of mode <${a}>
-`,type:dn.MULTI_MODE_LEXER_LONGER_ALT_NOT_IN_CURRENT_MODE})})}})}),i}function _Ce(e,t,r){let i=[],n=!1,a=IT(Ul(Hn(e.modes))),s=TA(a,u=>u[G0]===ls.NA),l=Bz(r);return t&&vr(s,u=>{let h=Pz(u,l);if(h!==!1){let f={message:LCe(u,h),type:h.issue,tokenType:u};i.push(f)}else mr(u,"LINE_BREAKS")?u.LINE_BREAKS===!0&&(n=!0):kA(l,u.PATTERN)&&(n=!0)}),t&&!n&&i.push({message:`Warning: No LINE_BREAKS Found.
+	For details See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#CUSTOM_OPTIMIZE`),v=!1;return b},[])}),{emptyGroups:g,patternIdxToConfig:y,charCodeToPatternIdxToConfig:x,hasCustom:i,canBeOptimized:v}}function O3e(e,t){let r=[],n=$3e(e);r=r.concat(n.errors);let i=F3e(n.valid),a=i.valid;return r=r.concat(i.errors),r=r.concat(B3e(a)),r=r.concat(H3e(a)),r=r.concat(U3e(a,t)),r=r.concat(Y3e(a)),r}function B3e(e){let t=[],r=Ml(e,n=>Xh(n[Kg]));return t=t.concat(z3e(r)),t=t.concat(V3e(r)),t=t.concat(W3e(r)),t=t.concat(q3e(r)),t=t.concat(G3e(r)),t}function $3e(e){let t=Ml(e,i=>!wr(i,Kg)),r=hr(t,i=>({message:"Token Type: ->"+i.name+"<- missing static 'PATTERN' property",type:Ni.MISSING_PATTERN,tokenTypes:[i]})),n=UR(e,t);return{errors:r,valid:n}}function F3e(e){let t=Ml(e,i=>{let a=i[Kg];return!Xh(a)&&!rd(a)&&!wr(a,"exec")&&!To(a)}),r=hr(t,i=>({message:"Token Type: ->"+i.name+"<- static 'PATTERN' can only be a RegExp, a Function matching the {CustomPatternMatcherFunc} type or an Object matching the {ICustomPattern} interface.",type:Ni.INVALID_PATTERN,tokenTypes:[i]})),n=UR(e,t);return{errors:r,valid:n}}function z3e(e){class t extends AR{static{o(this,"EndAnchorFinder")}static{E(this,"EndAnchorFinder")}constructor(){super(...arguments),this.found=!1}visitEndAnchor(a){this.found=!0}}let r=Ml(e,i=>{let a=i.PATTERN;try{let s=Aw(a),l=new t;return l.visit(s),l.found}catch{return DTt.test(a.source)}});return hr(r,i=>({message:`Unexpected RegExp Anchor Error:
+	Token Type: ->`+i.name+`<- static 'PATTERN' cannot contain end of input anchor '$'
+	See chevrotain.io/docs/guide/resolving_lexer_errors.html#ANCHORS	for details.`,type:Ni.EOI_ANCHOR_FOUND,tokenTypes:[i]}))}function G3e(e){let t=Ml(e,n=>n.PATTERN.test(""));return hr(t,n=>({message:"Token Type: ->"+n.name+"<- static 'PATTERN' must not match an empty string",type:Ni.EMPTY_MATCH_PATTERN,tokenTypes:[n]}))}function V3e(e){class t extends AR{static{o(this,"StartAnchorFinder")}static{E(this,"StartAnchorFinder")}constructor(){super(...arguments),this.found=!1}visitStartAnchor(a){this.found=!0}}let r=Ml(e,i=>{let a=i.PATTERN;try{let s=Aw(a),l=new t;return l.visit(s),l.found}catch{return ITt.test(a.source)}});return hr(r,i=>({message:`Unexpected RegExp Anchor Error:
+	Token Type: ->`+i.name+`<- static 'PATTERN' cannot contain start of input anchor '^'
+	See https://chevrotain.io/docs/guide/resolving_lexer_errors.html#ANCHORS	for details.`,type:Ni.SOI_ANCHOR_FOUND,tokenTypes:[i]}))}function W3e(e){let t=Ml(e,n=>{let i=n[Kg];return i instanceof RegExp&&(i.multiline||i.global)});return hr(t,n=>({message:"Token Type: ->"+n.name+"<- static 'PATTERN' may NOT contain global('g') or multiline('m')",type:Ni.UNSUPPORTED_FLAGS_FOUND,tokenTypes:[n]}))}function q3e(e){let t=[],r=hr(e,a=>Ko(e,(s,l)=>(a.PATTERN.source===l.PATTERN.source&&!qs(t,l)&&l.PATTERN!==Fs.NA&&(t.push(l),s.push(l)),s),[]));r=Ew(r);let n=Ml(r,a=>a.length>1);return hr(n,a=>{let s=hr(a,u=>u.name);return{message:`The same RegExp pattern ->${Rc(a).PATTERN}<-has been used in all of the following Token Types: ${s.join(", ")} <-`,type:Ni.DUPLICATE_PATTERNS_FOUND,tokenTypes:a}})}function H3e(e){let t=Ml(e,n=>{if(!wr(n,"GROUP"))return!1;let i=n.GROUP;return i!==Fs.SKIPPED&&i!==Fs.NA&&!To(i)});return hr(t,n=>({message:"Token Type: ->"+n.name+"<- static 'GROUP' can only be Lexer.SKIPPED/Lexer.NA/A String",type:Ni.INVALID_GROUP_TYPE_FOUND,tokenTypes:[n]}))}function U3e(e,t){let r=Ml(e,i=>i.PUSH_MODE!==void 0&&!qs(t,i.PUSH_MODE));return hr(r,i=>({message:`Token Type: ->${i.name}<- static 'PUSH_MODE' value cannot refer to a Lexer Mode ->${i.PUSH_MODE}<-which does not exist`,type:Ni.PUSH_MODE_DOES_NOT_EXIST,tokenTypes:[i]}))}function Y3e(e){let t=[],r=Ko(e,(n,i,a)=>{let s=i.PATTERN;return s===Fs.NA||(To(s)?n.push({str:s,idx:a,tokenType:i}):Xh(s)&&X3e(s)&&n.push({str:s.source,idx:a,tokenType:i})),n},[]);return Ir(e,(n,i)=>{Ir(r,({str:a,idx:s,tokenType:l})=>{if(i<s&&j3e(a,n.PATTERN)){let u=`Token: ->${l.name}<- can never be matched.
+Because it appears AFTER the Token Type ->${n.name}<-in the lexer's definition.
+See https://chevrotain.io/docs/guide/resolving_lexer_errors.html#UNREACHABLE`;t.push({message:u,type:Ni.UNREACHABLE_PATTERN,tokenTypes:[n,l]})}})}),t}function j3e(e,t){if(Xh(t)){if(K3e(t))return!1;let r=t.exec(e);return r!==null&&r.index===0}else{if(rd(t))return t(e,0,[],{});if(wr(t,"exec"))return t.exec(e,0,[],{});if(typeof t=="string")return t===e;throw Error("non exhaustive match")}}function X3e(e){return _v([".","\\","[","]","|","^","$","(",")","?","*","+","{"],r=>e.source.indexOf(r)!==-1)===void 0}function K3e(e){return/(\(\?=)|(\(\?!)|(\(\?<=)|(\(\?<!)/.test(e.source)}function LG(e){let t=e.ignoreCase?"iy":"y";return new RegExp(`${e.source}`,t)}function Z3e(e,t,r){let n=[];return wr(e,EC)||n.push({message:"A MultiMode Lexer cannot be initialized without a <"+EC+`> property in its definition
+`,type:Ni.MULTI_MODE_LEXER_WITHOUT_DEFAULT_MODE}),wr(e,PA)||n.push({message:"A MultiMode Lexer cannot be initialized without a <"+PA+`> property in its definition
+`,type:Ni.MULTI_MODE_LEXER_WITHOUT_MODES_PROPERTY}),wr(e,PA)&&wr(e,EC)&&!wr(e.modes,e.defaultMode)&&n.push({message:`A MultiMode Lexer cannot be initialized with a ${EC}: <${e.defaultMode}>which does not exist
+`,type:Ni.MULTI_MODE_LEXER_DEFAULT_MODE_VALUE_DOES_NOT_EXIST}),wr(e,PA)&&Ir(e.modes,(i,a)=>{Ir(i,(s,l)=>{if(Kh(s))n.push({message:`A Lexer cannot be initialized using an undefined Token Type. Mode:<${a}> at index: <${l}>
+`,type:Ni.LEXER_DEFINITION_CANNOT_CONTAIN_UNDEFINED});else if(wr(s,"LONGER_ALT")){let u=un(s.LONGER_ALT)?s.LONGER_ALT:[s.LONGER_ALT];Ir(u,h=>{!Kh(h)&&!qs(i,h)&&n.push({message:`A MultiMode Lexer cannot be initialized with a longer_alt <${h.name}> on token <${s.name}> outside of mode <${a}>
+`,type:Ni.MULTI_MODE_LEXER_LONGER_ALT_NOT_IN_CURRENT_MODE})})}})}),n}function Q3e(e,t,r){let n=[],i=!1,a=Ew(Sc(ha(e.modes))),s=YR(a,u=>u[Kg]===Fs.NA),l=Rq(r);return t&&Ir(s,u=>{let h=Aq(u,l);if(h!==!1){let f={message:t5e(u,h),type:h.issue,tokenType:u};n.push(f)}else wr(u,"LINE_BREAKS")?u.LINE_BREAKS===!0&&(i=!0):XR(l,u.PATTERN)&&(i=!0)}),t&&!i&&n.push({message:`Warning: No LINE_BREAKS Found.
 	This Lexer has been defined to track line and column information,
 	But none of the Token Types can be identified as matching a line terminator.
 	See https://chevrotain.io/docs/guide/resolving_lexer_errors.html#LINE_BREAKS 
-	for details.`,type:dn.NO_LINE_BREAKS_FLAGS}),i}function DCe(e){let t={},r=po(e);return vr(r,i=>{let n=e[i];if(Kr(n))t[i]=[];else throw Error("non exhaustive match")}),t}function Oz(e){let t=e.PATTERN;if(hh(t))return!1;if(vh(t))return!0;if(mr(t,"exec"))return!0;if(Vs(t))return!1;throw Error("non exhaustive match")}function RCe(e){return Vs(e)&&e.length===1?e.charCodeAt(0):!1}function Pz(e,t){if(mr(e,"LINE_BREAKS"))return!1;if(hh(e.PATTERN)){try{kA(t,e.PATTERN)}catch(r){return{issue:dn.IDENTIFY_TERMINATOR,errMsg:r.message}}return!1}else{if(Vs(e.PATTERN))return!1;if(Oz(e))return{issue:dn.CUSTOM_LINE_BREAK};throw Error("non exhaustive match")}}function LCe(e,t){if(t.issue===dn.IDENTIFY_TERMINATOR)return`Warning: unable to identify line terminator usage in pattern.
+	for details.`,type:Ni.NO_LINE_BREAKS_FLAGS}),n}function J3e(e){let t={},r=jo(e);return Ir(r,n=>{let i=e[n];if(un(i))t[n]=[];else throw Error("non exhaustive match")}),t}function Eq(e){let t=e.PATTERN;if(Xh(t))return!1;if(rd(t))return!0;if(wr(t,"exec"))return!0;if(To(t))return!1;throw Error("non exhaustive match")}function e5e(e){return To(e)&&e.length===1?e.charCodeAt(0):!1}function Aq(e,t){if(wr(e,"LINE_BREAKS"))return!1;if(Xh(e.PATTERN)){try{XR(t,e.PATTERN)}catch(r){return{issue:Ni.IDENTIFY_TERMINATOR,errMsg:r.message}}return!1}else{if(To(e.PATTERN))return!1;if(Eq(e))return{issue:Ni.CUSTOM_LINE_BREAK};throw Error("non exhaustive match")}}function t5e(e,t){if(t.issue===Ni.IDENTIFY_TERMINATOR)return`Warning: unable to identify line terminator usage in pattern.
 	The problem is in the <${e.name}> Token Type
 	 Root cause: ${t.errMsg}.
-	For details See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#IDENTIFY_TERMINATOR`;if(t.issue===dn.CUSTOM_LINE_BREAK)return`Warning: A Custom Token Pattern should specify the <line_breaks> option.
+	For details See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#IDENTIFY_TERMINATOR`;if(t.issue===Ni.CUSTOM_LINE_BREAK)return`Warning: A Custom Token Pattern should specify the <line_breaks> option.
 	The problem is in the <${e.name}> Token Type
-	For details See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#CUSTOM_LINE_BREAK`;throw Error("non exhaustive match")}function Bz(e){return nr(e,r=>Vs(r)?r.charCodeAt(0):r)}function qE(e,t,r){e[t]===void 0?e[t]=[r]:e[t].push(r)}function fh(e){return e<B2?e:UE[e]}function MCe(){if(Oi(UE)){UE=new Array(65536);for(let e=0;e<65536;e++)UE[e]=e>255?255+~~(e/255):e}}function uy(e,t){let r=e.tokenTypeIdx;return r===t.tokenTypeIdx?!0:t.isParent===!0&&t.categoryMatchesMap[r]===!0}function hT(e,t){return e.tokenTypeIdx===t.tokenTypeIdx}function hy(e){let t=ICe(e);OCe(t),BCe(t),PCe(t),vr(t,r=>{r.isParent=r.categoryMatches.length>0})}function ICe(e){let t=ka(e),r=e,i=!0;for(;i;){r=IT(Ul(nr(r,a=>a.CATEGORIES)));let n=bA(r,t);t=t.concat(n),Oi(n)?i=!1:r=n}return t}function OCe(e){vr(e,t=>{$z(t)||(NCe[Q1e]=t,t.tokenTypeIdx=Q1e++),wF(t)&&!Kr(t.CATEGORIES)&&(t.CATEGORIES=[t.CATEGORIES]),wF(t)||(t.CATEGORIES=[]),FCe(t)||(t.categoryMatches=[]),$Ce(t)||(t.categoryMatchesMap={})})}function PCe(e){vr(e,t=>{t.categoryMatches=[],vr(t.categoryMatchesMap,(r,i)=>{t.categoryMatches.push(NCe[i].tokenTypeIdx)})})}function BCe(e){vr(e,t=>{Fz([],t)})}function Fz(e,t){vr(e,r=>{t.categoryMatchesMap[r.tokenTypeIdx]=!0}),vr(t.CATEGORIES,r=>{let i=e.concat(t);fs(i,r)||Fz(i,r)})}function $z(e){return mr(e,"tokenTypeIdx")}function wF(e){return mr(e,"CATEGORIES")}function FCe(e){return mr(e,"categoryMatches")}function $Ce(e){return mr(e,"categoryMatchesMap")}function zCe(e){return mr(e,"tokenTypeIdx")}function B0(e){return zz(e)?e.LABEL:e.name}function zz(e){return Vs(e.LABEL)&&e.LABEL!==""}function q1(e){return GCe(e)}function GCe(e){let t=e.pattern,r={};if(r.name=e.name,dh(t)||(r.PATTERN=t),mr(e,S0t))throw`The parent property is no longer supported.
-See: https://github.com/chevrotain/chevrotain/issues/564#issuecomment-349062346 for details.`;return mr(e,J1e)&&(r.CATEGORIES=e[J1e]),hy([r]),mr(e,eye)&&(r.LABEL=e[eye]),mr(e,tye)&&(r.GROUP=e[tye]),mr(e,iye)&&(r.POP_MODE=e[iye]),mr(e,rye)&&(r.PUSH_MODE=e[rye]),mr(e,nye)&&(r.LONGER_ALT=e[nye]),mr(e,aye)&&(r.LINE_BREAKS=e[aye]),mr(e,sye)&&(r.START_CHARS_HINT=e[sye]),r}function PT(e,t,r,i,n,a,s,l){return{image:t,startOffset:r,endOffset:i,startLine:n,endLine:a,startColumn:s,endColumn:l,tokenTypeIdx:e.tokenTypeIdx,tokenType:e}}function Gz(e,t){return uy(e,t)}function VCe(e,t){let r=new A0t(e,t);return r.resolveRefs(),r.errors}function _5(e,t,r=[]){r=ka(r);let i=[],n=0;function a(l){return l.concat(Ta(e,n+1))}o(a,"remainingPathWith"),S(a,"remainingPathWith");function s(l){let u=_5(a(l),t,r);return i.concat(u)}for(o(s,"getAlternativesForProd"),S(s,"getAlternativesForProd");r.length<t&&n<e.length;){let l=e[n];if(l instanceof Ws)return s(l.definition);if(l instanceof us)return s(l.definition);if(l instanceof Ca)i=s(l.definition);else if(l instanceof yo){let u=l.definition.concat([new hn({definition:l.definition})]);return s(u)}else if(l instanceof vo){let u=[new Ws({definition:l.definition}),new hn({definition:[new Wi({terminalType:l.separator})].concat(l.definition)})];return s(u)}else if(l instanceof qs){let u=l.definition.concat([new hn({definition:[new Wi({terminalType:l.separator})].concat(l.definition)})]);i=s(u)}else if(l instanceof hn){let u=l.definition.concat([new hn({definition:l.definition})]);i=s(u)}else{if(l instanceof Us)return vr(l.definition,u=>{Oi(u.definition)===!1&&(i=s(u.definition))}),i;if(l instanceof Wi)r.push(l.terminalType);else throw Error("non exhaustive match")}n++}return i.push({partialPath:r,suffixDef:Ta(e,n)}),i}function Vz(e,t,r,i){let n="EXIT_NONE_TERMINAL",a=[n],s="EXIT_ALTERNATIVE",l=!1,u=t.length,h=u-i-1,d=[],f=[];for(f.push({idx:-1,def:e,ruleStack:[],occurrenceStack:[]});!Oi(f);){let p=f.pop();if(p===s){l&&z0(f).idx<=h&&f.pop();continue}let m=p.def,g=p.idx,y=p.ruleStack,v=p.occurrenceStack;if(Oi(m))continue;let x=m[0];if(x===n){let b={idx:g,def:Ta(m),ruleStack:cT(y),occurrenceStack:cT(v)};f.push(b)}else if(x instanceof Wi)if(g<u-1){let b=g+1,T=t[b];if(r(T,x.terminalType)){let w={idx:b,def:Ta(m),ruleStack:y,occurrenceStack:v};f.push(w)}}else if(g===u-1)d.push({nextTokenType:x.terminalType,nextTokenOccurrence:x.idx,ruleStack:y,occurrenceStack:v}),l=!0;else throw Error("non exhaustive match");else if(x instanceof us){let b=ka(y);b.push(x.nonTerminalName);let T=ka(v);T.push(x.idx);let w={idx:g,def:x.definition.concat(a,Ta(m)),ruleStack:b,occurrenceStack:T};f.push(w)}else if(x instanceof Ca){let b={idx:g,def:Ta(m),ruleStack:y,occurrenceStack:v};f.push(b),f.push(s);let T={idx:g,def:x.definition.concat(Ta(m)),ruleStack:y,occurrenceStack:v};f.push(T)}else if(x instanceof yo){let b=new hn({definition:x.definition,idx:x.idx}),T=x.definition.concat([b],Ta(m)),w={idx:g,def:T,ruleStack:y,occurrenceStack:v};f.push(w)}else if(x instanceof vo){let b=new Wi({terminalType:x.separator}),T=new hn({definition:[b].concat(x.definition),idx:x.idx}),w=x.definition.concat([T],Ta(m)),C={idx:g,def:w,ruleStack:y,occurrenceStack:v};f.push(C)}else if(x instanceof qs){let b={idx:g,def:Ta(m),ruleStack:y,occurrenceStack:v};f.push(b),f.push(s);let T=new Wi({terminalType:x.separator}),w=new hn({definition:[T].concat(x.definition),idx:x.idx}),C=x.definition.concat([w],Ta(m)),k={idx:g,def:C,ruleStack:y,occurrenceStack:v};f.push(k)}else if(x instanceof hn){let b={idx:g,def:Ta(m),ruleStack:y,occurrenceStack:v};f.push(b),f.push(s);let T=new hn({definition:x.definition,idx:x.idx}),w=x.definition.concat([T],Ta(m)),C={idx:g,def:w,ruleStack:y,occurrenceStack:v};f.push(C)}else if(x instanceof Us)for(let b=x.definition.length-1;b>=0;b--){let T=x.definition[b],w={idx:g,def:T.definition.concat(Ta(m)),ruleStack:y,occurrenceStack:v};f.push(w),f.push(s)}else if(x instanceof Ws)f.push({idx:g,def:x.definition.concat(Ta(m)),ruleStack:y,occurrenceStack:v});else if(x instanceof oy)f.push(WCe(x,g,y,v));else throw Error("non exhaustive match")}return d}function WCe(e,t,r,i){let n=ka(r);n.push(e.name);let a=ka(i);return a.push(1),{idx:t,def:e.definition,ruleStack:n,occurrenceStack:a}}function SA(e){if(e instanceof Ca||e==="Option")return en.OPTION;if(e instanceof hn||e==="Repetition")return en.REPETITION;if(e instanceof yo||e==="RepetitionMandatory")return en.REPETITION_MANDATORY;if(e instanceof vo||e==="RepetitionMandatoryWithSeparator")return en.REPETITION_MANDATORY_WITH_SEPARATOR;if(e instanceof qs||e==="RepetitionWithSeparator")return en.REPETITION_WITH_SEPARATOR;if(e instanceof Us||e==="Alternation")return en.ALTERNATION;throw Error("non exhaustive match")}function EF(e){let{occurrence:t,rule:r,prodType:i,maxLookahead:n}=e,a=SA(i);return a===en.ALTERNATION?BT(t,r,n):FT(t,r,a,n)}function qCe(e,t,r,i,n,a){let s=BT(e,t,r),l=qz(s)?hT:uy;return a(s,i,l,n)}function UCe(e,t,r,i,n,a){let s=FT(e,t,n,r),l=qz(s)?hT:uy;return a(s[0],l,i)}function HCe(e,t,r,i){let n=e.length,a=Hl(e,s=>Hl(s,l=>l.length===1));if(t)return function(s){let l=nr(s,u=>u.GATE);for(let u=0;u<n;u++){let h=e[u],d=h.length,f=l[u];if(!(f!==void 0&&f.call(this)===!1))e:for(let p=0;p<d;p++){let m=h[p],g=m.length;for(let y=0;y<g;y++){let v=this.LA(y+1);if(r(v,m[y])===!1)continue e}return u}}};if(a&&!i){let s=nr(e,u=>Ul(u)),l=go(s,(u,h,d)=>(vr(h,f=>{mr(u,f.tokenTypeIdx)||(u[f.tokenTypeIdx]=d),vr(f.categoryMatches,p=>{mr(u,p)||(u[p]=d)})}),u),{});return function(){let u=this.LA(1);return l[u.tokenTypeIdx]}}else return function(){for(let s=0;s<n;s++){let l=e[s],u=l.length;e:for(let h=0;h<u;h++){let d=l[h],f=d.length;for(let p=0;p<f;p++){let m=this.LA(p+1);if(r(m,d[p])===!1)continue e}return s}}}}function YCe(e,t,r){let i=Hl(e,a=>a.length===1),n=e.length;if(i&&!r){let a=Ul(e);if(a.length===1&&Oi(a[0].categoryMatches)){let l=a[0].tokenTypeIdx;return function(){return this.LA(1).tokenTypeIdx===l}}else{let s=go(a,(l,u,h)=>(l[u.tokenTypeIdx]=!0,vr(u.categoryMatches,d=>{l[d]=!0}),l),[]);return function(){let l=this.LA(1);return s[l.tokenTypeIdx]===!0}}}else return function(){e:for(let a=0;a<n;a++){let s=e[a],l=s.length;for(let u=0;u<l;u++){let h=this.LA(u+1);if(t(h,s[u])===!1)continue e}return!0}return!1}}function AF(e){let t=new Array(e);for(let r=0;r<e;r++)t[r]=[];return t}function HE(e){let t=[""];for(let r=0;r<e.length;r++){let i=e[r],n=[];for(let a=0;a<t.length;a++){let s=t[a];n.push(s+"_"+i.tokenTypeIdx);for(let l=0;l<i.categoryMatches.length;l++){let u="_"+i.categoryMatches[l];n.push(s+u)}}t=n}return t}function XCe(e,t,r){for(let i=0;i<e.length;i++){if(i===r)continue;let n=e[i];for(let a=0;a<t.length;a++){let s=t[a];if(n[s]===!0)return!1}}return!0}function Wz(e,t){let r=nr(e,s=>_5([s],1)),i=AF(r.length),n=nr(r,s=>{let l={};return vr(s,u=>{let h=HE(u.partialPath);vr(h,d=>{l[d]=!0})}),l}),a=r;for(let s=1;s<=t;s++){let l=a;a=AF(l.length);for(let u=0;u<l.length;u++){let h=l[u];for(let d=0;d<h.length;d++){let f=h[d].partialPath,p=h[d].suffixDef,m=HE(f);if(XCe(n,m,u)||Oi(p)||f.length===t){let y=i[u];if(D5(y,f)===!1){y.push(f);for(let v=0;v<m.length;v++){let x=m[v];n[u][x]=!0}}}else{let y=_5(p,s+1,f);a[u]=a[u].concat(y),vr(y,v=>{let x=HE(v.partialPath);vr(x,b=>{n[u][b]=!0})})}}}}return i}function BT(e,t,r,i){let n=new jCe(e,en.ALTERNATION,i);return t.accept(n),Wz(n.result,r)}function FT(e,t,r,i){let n=new jCe(e,r);t.accept(n);let a=n.result,l=new M0t(t,e,r).startWalking(),u=new Ws({definition:a}),h=new Ws({definition:l});return Wz([u,h],i)}function D5(e,t){e:for(let r=0;r<e.length;r++){let i=e[r];if(i.length===t.length){for(let n=0;n<i.length;n++){let a=t[n],s=i[n];if((a===s||s.categoryMatchesMap[a.tokenTypeIdx]!==void 0)===!1)continue e}return!0}}return!1}function KCe(e,t){return e.length<t.length&&Hl(e,(r,i)=>{let n=t[i];return r===n||n.categoryMatchesMap[r.tokenTypeIdx]})}function qz(e){return Hl(e,t=>Hl(t,r=>Hl(r,i=>Oi(i.categoryMatches))))}function ZCe(e){let t=e.lookaheadStrategy.validate({rules:e.rules,tokenTypes:e.tokenTypes,grammarName:e.grammarName});return nr(t,r=>Object.assign({type:hs.CUSTOM_LOOKAHEAD_VALIDATION},r))}function QCe(e,t,r,i){let n=Jo(e,u=>JCe(u,r)),a=cke(e,t,r),s=Jo(e,u=>ake(u,r)),l=Jo(e,u=>tke(u,e,i,r));return n.concat(a,s,l)}function JCe(e,t){let r=new N0t;e.accept(r);let i=r.allProductions,n=Ypt(i,eke),a=Xl(n,l=>l.length>1);return nr(Hn(a),l=>{let u=jl(l),h=t.buildDuplicateFoundError(e,l),d=Gl(u),f={message:h,type:hs.DUPLICATE_PRODUCTIONS,ruleName:e.name,dslName:d,occurrence:u.idx},p=Uz(u);return p&&(f.parameter=p),f})}function eke(e){return`${Gl(e)}_#_${e.idx}_#_${Uz(e)}`}function Uz(e){return e instanceof Wi?e.terminalType.name:e instanceof us?e.nonTerminalName:""}function tke(e,t,r,i){let n=[];if(go(t,(s,l)=>l.name===e.name?s+1:s,0)>1){let s=i.buildDuplicateRuleNameError({topLevelRule:e,grammarName:r});n.push({message:s,type:hs.DUPLICATE_RULE_NAME,ruleName:e.name})}return n}function rke(e,t,r){let i=[],n;return fs(t,e)||(n=`Invalid rule override, rule: ->${e}<- cannot be overridden in the grammar: ->${r}<-as it is not defined in any of the super grammars `,i.push({message:n,type:hs.INVALID_RULE_OVERRIDE,ruleName:e})),i}function Hz(e,t,r,i=[]){let n=[],a=Z2(t.definition);if(Oi(a))return[];{let s=e.name;fs(a,e)&&n.push({message:r.buildLeftRecursionError({topLevelRule:e,leftRecursionPath:i}),type:hs.LEFT_RECURSION,ruleName:s});let u=bA(a,i.concat([e])),h=Jo(u,d=>{let f=ka(i);return f.push(d),Hz(e,d,r,f)});return n.concat(h)}}function Z2(e){let t=[];if(Oi(e))return t;let r=jl(e);if(r instanceof us)t.push(r.referencedRule);else if(r instanceof Ws||r instanceof Ca||r instanceof yo||r instanceof vo||r instanceof qs||r instanceof hn)t=t.concat(Z2(r.definition));else if(r instanceof Us)t=Ul(nr(r.definition,a=>Z2(a.definition)));else if(!(r instanceof Wi))throw Error("non exhaustive match");let i=uT(r),n=e.length>1;if(i&&n){let a=Ta(e);return t.concat(Z2(a))}else return t}function ike(e,t){let r=new Yz;e.accept(r);let i=r.alternations;return Jo(i,a=>{let s=cT(a.definition);return Jo(s,(l,u)=>{let h=Vz([l],[],uy,1);return Oi(h)?[{message:t.buildEmptyAlternationError({topLevelRule:e,alternation:a,emptyChoiceIdx:u}),type:hs.NONE_LAST_EMPTY_ALT,ruleName:e.name,occurrence:a.idx,alternative:u+1}]:[]})})}function nke(e,t,r){let i=new Yz;e.accept(i);let n=i.alternations;return n=TA(n,s=>s.ignoreAmbiguities===!0),Jo(n,s=>{let l=s.idx,u=s.maxLookahead||t,h=BT(l,e,u,s),d=oke(h,s,e,r),f=lke(h,s,e,r);return d.concat(f)})}function ake(e,t){let r=new Yz;e.accept(r);let i=r.alternations;return Jo(i,a=>a.definition.length>255?[{message:t.buildTooManyAlternativesError({topLevelRule:e,alternation:a}),type:hs.TOO_MANY_ALTS,ruleName:e.name,occurrence:a.idx}]:[])}function ske(e,t,r){let i=[];return vr(e,n=>{let a=new I0t;n.accept(a);let s=a.allProductions;vr(s,l=>{let u=SA(l),h=l.maxLookahead||t,d=l.idx,p=FT(d,n,u,h)[0];if(Oi(Ul(p))){let m=r.buildEmptyRepetitionError({topLevelRule:n,repetition:l});i.push({message:m,type:hs.NO_NON_EMPTY_LOOKAHEAD,ruleName:n.name})}})}),i}function oke(e,t,r,i){let n=[],a=go(e,(l,u,h)=>(t.definition[h].ignoreAmbiguities===!0||vr(u,d=>{let f=[h];vr(e,(p,m)=>{h!==m&&D5(p,d)&&t.definition[m].ignoreAmbiguities!==!0&&f.push(m)}),f.length>1&&!D5(n,d)&&(n.push(d),l.push({alts:f,path:d}))}),l),[]);return nr(a,l=>{let u=nr(l.alts,d=>d+1);return{message:i.buildAlternationAmbiguityError({topLevelRule:r,alternation:t,ambiguityIndices:u,prefixPath:l.path}),type:hs.AMBIGUOUS_ALTS,ruleName:r.name,occurrence:t.idx,alternatives:l.alts}})}function lke(e,t,r,i){let n=go(e,(s,l,u)=>{let h=nr(l,d=>({idx:u,path:d}));return s.concat(h)},[]);return IT(Jo(n,s=>{if(t.definition[s.idx].ignoreAmbiguities===!0)return[];let u=s.idx,h=s.path,d=il(n,p=>t.definition[p.idx].ignoreAmbiguities!==!0&&p.idx<u&&KCe(p.path,h));return nr(d,p=>{let m=[p.idx+1,u+1],g=t.idx===0?"":t.idx;return{message:i.buildAlternationPrefixAmbiguityError({topLevelRule:r,alternation:t,ambiguityIndices:m,prefixPath:p.path}),type:hs.AMBIGUOUS_PREFIX_ALTS,ruleName:r.name,occurrence:g,alternatives:m}})}))}function cke(e,t,r){let i=[],n=nr(t,a=>a.name);return vr(e,a=>{let s=a.name;if(fs(n,s)){let l=r.buildNamespaceConflictError(a);i.push({message:l,type:hs.CONFLICT_TOKENS_RULES_NAMESPACE,ruleName:s})}}),i}function uke(e){let t=Rz(e,{errMsgProvider:E0t}),r={};return vr(e.rules,i=>{r[i.name]=i}),VCe(r,t.errMsgProvider)}function hke(e){return e=Rz(e,{errMsgProvider:I0}),QCe(e.rules,e.tokenTypes,e.errMsgProvider,e.grammarName)}function dT(e){return fs(gke,e.name)}function xke(e,t,r,i,n,a,s){let l=this.getKeyForAutomaticLookahead(i,n),u=this.firstAfterRepMap[l];if(u===void 0){let p=this.getCurrRuleFullName(),m=this.getGAstProductions()[p];u=new a(m,n).startWalking(),this.firstAfterRepMap[l]=u}let h=u.token,d=u.occurrence,f=u.isEndOfRule;this.RULE_STACK.length===1&&f&&h===void 0&&(h=gf,d=1),!(h===void 0||d===void 0)&&this.shouldInRepetitionRecoveryBeTried(h,d,s)&&this.tryInRepetitionRecovery(e,t,r,h)}function jE(e,t,r){return r|t|e}function Cke(e){vE.reset(),e.accept(vE);let t=vE.dslMethods;return vE.reset(),t}function LF(e,t){isNaN(e.startOffset)===!0?(e.startOffset=t.startOffset,e.endOffset=t.endOffset):e.endOffset<t.endOffset&&(e.endOffset=t.endOffset)}function MF(e,t){isNaN(e.startOffset)===!0?(e.startOffset=t.startOffset,e.startColumn=t.startColumn,e.startLine=t.startLine,e.endOffset=t.endOffset,e.endColumn=t.endColumn,e.endLine=t.endLine):e.endOffset<t.endOffset&&(e.endOffset=t.endOffset,e.endColumn=t.endColumn,e.endLine=t.endLine)}function kke(e,t,r){e.children[r]===void 0?e.children[r]=[t]:e.children[r].push(t)}function wke(e,t,r){e.children[t]===void 0?e.children[t]=[r]:e.children[t].push(r)}function Xz(e,t){Object.defineProperty(e,q0t,{enumerable:!1,configurable:!0,writable:!1,value:t})}function Ske(e,t){let r=po(e),i=r.length;for(let n=0;n<i;n++){let a=r[n],s=e[a],l=s.length;for(let u=0;u<l;u++){let h=s[u];h.tokenTypeIdx===void 0&&this[h.name](h.children,t)}}}function Eke(e,t){let r=S(function(){},"derivedConstructor");Xz(r,e+"BaseSemantics");let i={visit:S(function(n,a){if(Kr(n)&&(n=n[0]),!dh(n))return this[n.name](n.children,a)},"visit"),validateVisitor:S(function(){let n=_ke(this,t);if(!Oi(n)){let a=nr(n,s=>s.msg);throw Error(`Errors Detected in CST Visitor <${this.constructor.name}>:
+	For details See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#CUSTOM_LINE_BREAK`;throw Error("non exhaustive match")}function Rq(e){return hr(e,r=>To(r)?r.charCodeAt(0):r)}function l6(e,t,r){e[t]===void 0?e[t]=[r]:e[t].push(r)}function Zh(e){return e<AC?e:c6[e]}function r5e(){if(ei(c6)){c6=new Array(65536);for(let e=0;e<65536;e++)c6[e]=e>255?255+~~(e/255):e}}function $v(e,t){let r=e.tokenTypeIdx;return r===t.tokenTypeIdx?!0:t.isParent===!0&&t.categoryMatchesMap[r]===!0}function rw(e,t){return e.tokenTypeIdx===t.tokenTypeIdx}function Fv(e){let t=i5e(e);a5e(t),o5e(t),s5e(t),Ir(t,r=>{r.isParent=r.categoryMatches.length>0})}function i5e(e){let t=Ya(e),r=e,n=!0;for(;n;){r=Ew(Sc(hr(r,a=>a.CATEGORIES)));let i=UR(r,t);t=t.concat(i),ei(i)?n=!1:r=i}return t}function a5e(e){Ir(e,t=>{Lq(t)||(n5e[vCe]=t,t.tokenTypeIdx=vCe++),DG(t)&&!un(t.CATEGORIES)&&(t.CATEGORIES=[t.CATEGORIES]),DG(t)||(t.CATEGORIES=[]),l5e(t)||(t.categoryMatches=[]),c5e(t)||(t.categoryMatchesMap={})})}function s5e(e){Ir(e,t=>{t.categoryMatches=[],Ir(t.categoryMatchesMap,(r,n)=>{t.categoryMatches.push(n5e[n].tokenTypeIdx)})})}function o5e(e){Ir(e,t=>{_q([],t)})}function _q(e,t){Ir(e,r=>{t.categoryMatchesMap[r.tokenTypeIdx]=!0}),Ir(t.CATEGORIES,r=>{let n=e.concat(t);qs(n,r)||_q(n,r)})}function Lq(e){return wr(e,"tokenTypeIdx")}function DG(e){return wr(e,"CATEGORIES")}function l5e(e){return wr(e,"categoryMatches")}function c5e(e){return wr(e,"categoryMatchesMap")}function u5e(e){return wr(e,"tokenTypeIdx")}function Ug(e){return Dq(e)?e.LABEL:e.name}function Dq(e){return To(e.LABEL)&&e.LABEL!==""}function xv(e){return h5e(e)}function h5e(e){let t=e.pattern,r={};if(r.name=e.name,Kh(t)||(r.PATTERN=t),wr(e,NTt))throw`The parent property is no longer supported.
+See: https://github.com/chevrotain/chevrotain/issues/564#issuecomment-349062346 for details.`;return wr(e,xCe)&&(r.CATEGORIES=e[xCe]),Fv([r]),wr(e,bCe)&&(r.LABEL=e[bCe]),wr(e,TCe)&&(r.GROUP=e[TCe]),wr(e,wCe)&&(r.POP_MODE=e[wCe]),wr(e,CCe)&&(r.PUSH_MODE=e[CCe]),wr(e,kCe)&&(r.LONGER_ALT=e[kCe]),wr(e,SCe)&&(r.LINE_BREAKS=e[SCe]),wr(e,ECe)&&(r.START_CHARS_HINT=e[ECe]),r}function Rw(e,t,r,n,i,a,s,l){return{image:t,startOffset:r,endOffset:n,startLine:i,endLine:a,startColumn:s,endColumn:l,tokenTypeIdx:e.tokenTypeIdx,tokenType:e}}function Iq(e,t){return $v(e,t)}function d5e(e,t){let r=new OTt(e,t);return r.resolveRefs(),r.errors}function J6(e,t,r=[]){r=Ya(r);let n=[],i=0;function a(l){return l.concat(Ha(e,i+1))}o(a,"remainingPathWith"),E(a,"remainingPathWith");function s(l){let u=J6(a(l),t,r);return n.concat(u)}for(o(s,"getAlternativesForProd"),E(s,"getAlternativesForProd");r.length<t&&i<e.length;){let l=e[i];if(l instanceof Co)return s(l.definition);if(l instanceof Gs)return s(l.definition);if(l instanceof Ua)n=s(l.definition);else if(l instanceof Zo){let u=l.definition.concat([new Mi({definition:l.definition})]);return s(u)}else if(l instanceof Qo){let u=[new Co({definition:l.definition}),new Mi({definition:[new ci({terminalType:l.separator})].concat(l.definition)})];return s(u)}else if(l instanceof wo){let u=l.definition.concat([new Mi({definition:[new ci({terminalType:l.separator})].concat(l.definition)})]);n=s(u)}else if(l instanceof Mi){let u=l.definition.concat([new Mi({definition:l.definition})]);n=s(u)}else{if(l instanceof ko)return Ir(l.definition,u=>{ei(u.definition)===!1&&(n=s(u.definition))}),n;if(l instanceof ci)r.push(l.terminalType);else throw Error("non exhaustive match")}i++}return n.push({partialPath:r,suffixDef:Ha(e,i)}),n}function Mq(e,t,r,n){let i="EXIT_NONE_TERMINAL",a=[i],s="EXIT_ALTERNATIVE",l=!1,u=t.length,h=u-n-1,d=[],f=[];for(f.push({idx:-1,def:e,ruleStack:[],occurrenceStack:[]});!ei(f);){let p=f.pop();if(p===s){l&&Xg(f).idx<=h&&f.pop();continue}let m=p.def,g=p.idx,y=p.ruleStack,v=p.occurrenceStack;if(ei(m))continue;let x=m[0];if(x===i){let b={idx:g,def:Ha(m),ruleStack:ew(y),occurrenceStack:ew(v)};f.push(b)}else if(x instanceof ci)if(g<u-1){let b=g+1,T=t[b];if(r(T,x.terminalType)){let k={idx:b,def:Ha(m),ruleStack:y,occurrenceStack:v};f.push(k)}}else if(g===u-1)d.push({nextTokenType:x.terminalType,nextTokenOccurrence:x.idx,ruleStack:y,occurrenceStack:v}),l=!0;else throw Error("non exhaustive match");else if(x instanceof Gs){let b=Ya(y);b.push(x.nonTerminalName);let T=Ya(v);T.push(x.idx);let k={idx:g,def:x.definition.concat(a,Ha(m)),ruleStack:b,occurrenceStack:T};f.push(k)}else if(x instanceof Ua){let b={idx:g,def:Ha(m),ruleStack:y,occurrenceStack:v};f.push(b),f.push(s);let T={idx:g,def:x.definition.concat(Ha(m)),ruleStack:y,occurrenceStack:v};f.push(T)}else if(x instanceof Zo){let b=new Mi({definition:x.definition,idx:x.idx}),T=x.definition.concat([b],Ha(m)),k={idx:g,def:T,ruleStack:y,occurrenceStack:v};f.push(k)}else if(x instanceof Qo){let b=new ci({terminalType:x.separator}),T=new Mi({definition:[b].concat(x.definition),idx:x.idx}),k=x.definition.concat([T],Ha(m)),C={idx:g,def:k,ruleStack:y,occurrenceStack:v};f.push(C)}else if(x instanceof wo){let b={idx:g,def:Ha(m),ruleStack:y,occurrenceStack:v};f.push(b),f.push(s);let T=new ci({terminalType:x.separator}),k=new Mi({definition:[T].concat(x.definition),idx:x.idx}),C=x.definition.concat([k],Ha(m)),w={idx:g,def:C,ruleStack:y,occurrenceStack:v};f.push(w)}else if(x instanceof Mi){let b={idx:g,def:Ha(m),ruleStack:y,occurrenceStack:v};f.push(b),f.push(s);let T=new Mi({definition:x.definition,idx:x.idx}),k=x.definition.concat([T],Ha(m)),C={idx:g,def:k,ruleStack:y,occurrenceStack:v};f.push(C)}else if(x instanceof ko)for(let b=x.definition.length-1;b>=0;b--){let T=x.definition[b],k={idx:g,def:T.definition.concat(Ha(m)),ruleStack:y,occurrenceStack:v};f.push(k),f.push(s)}else if(x instanceof Co)f.push({idx:g,def:x.definition.concat(Ha(m)),ruleStack:y,occurrenceStack:v});else if(x instanceof Pv)f.push(f5e(x,g,y,v));else throw Error("non exhaustive match")}return d}function f5e(e,t,r,n){let i=Ya(r);i.push(e.name);let a=Ya(n);return a.push(1),{idx:t,def:e.definition,ruleStack:i,occurrenceStack:a}}function ZR(e){if(e instanceof Ua||e==="Option")return wi.OPTION;if(e instanceof Mi||e==="Repetition")return wi.REPETITION;if(e instanceof Zo||e==="RepetitionMandatory")return wi.REPETITION_MANDATORY;if(e instanceof Qo||e==="RepetitionMandatoryWithSeparator")return wi.REPETITION_MANDATORY_WITH_SEPARATOR;if(e instanceof wo||e==="RepetitionWithSeparator")return wi.REPETITION_WITH_SEPARATOR;if(e instanceof ko||e==="Alternation")return wi.ALTERNATION;throw Error("non exhaustive match")}function MG(e){let{occurrence:t,rule:r,prodType:n,maxLookahead:i}=e,a=ZR(n);return a===wi.ALTERNATION?_w(t,r,i):Lw(t,r,a,i)}function p5e(e,t,r,n,i,a){let s=_w(e,t,r),l=Pq(s)?rw:$v;return a(s,n,l,i)}function m5e(e,t,r,n,i,a){let s=Lw(e,t,i,r),l=Pq(s)?rw:$v;return a(s[0],l,n)}function g5e(e,t,r,n){let i=e.length,a=Ec(e,s=>Ec(s,l=>l.length===1));if(t)return function(s){let l=hr(s,u=>u.GATE);for(let u=0;u<i;u++){let h=e[u],d=h.length,f=l[u];if(!(f!==void 0&&f.call(this)===!1))e:for(let p=0;p<d;p++){let m=h[p],g=m.length;for(let y=0;y<g;y++){let v=this.LA(y+1);if(r(v,m[y])===!1)continue e}return u}}};if(a&&!n){let s=hr(e,u=>Sc(u)),l=Ko(s,(u,h,d)=>(Ir(h,f=>{wr(u,f.tokenTypeIdx)||(u[f.tokenTypeIdx]=d),Ir(f.categoryMatches,p=>{wr(u,p)||(u[p]=d)})}),u),{});return function(){let u=this.LA(1);return l[u.tokenTypeIdx]}}else return function(){for(let s=0;s<i;s++){let l=e[s],u=l.length;e:for(let h=0;h<u;h++){let d=l[h],f=d.length;for(let p=0;p<f;p++){let m=this.LA(p+1);if(r(m,d[p])===!1)continue e}return s}}}}function y5e(e,t,r){let n=Ec(e,a=>a.length===1),i=e.length;if(n&&!r){let a=Sc(e);if(a.length===1&&ei(a[0].categoryMatches)){let l=a[0].tokenTypeIdx;return function(){return this.LA(1).tokenTypeIdx===l}}else{let s=Ko(a,(l,u,h)=>(l[u.tokenTypeIdx]=!0,Ir(u.categoryMatches,d=>{l[d]=!0}),l),[]);return function(){let l=this.LA(1);return s[l.tokenTypeIdx]===!0}}}else return function(){e:for(let a=0;a<i;a++){let s=e[a],l=s.length;for(let u=0;u<l;u++){let h=this.LA(u+1);if(t(h,s[u])===!1)continue e}return!0}return!1}}function NG(e){let t=new Array(e);for(let r=0;r<e;r++)t[r]=[];return t}function u6(e){let t=[""];for(let r=0;r<e.length;r++){let n=e[r],i=[];for(let a=0;a<t.length;a++){let s=t[a];i.push(s+"_"+n.tokenTypeIdx);for(let l=0;l<n.categoryMatches.length;l++){let u="_"+n.categoryMatches[l];i.push(s+u)}}t=i}return t}function x5e(e,t,r){for(let n=0;n<e.length;n++){if(n===r)continue;let i=e[n];for(let a=0;a<t.length;a++){let s=t[a];if(i[s]===!0)return!1}}return!0}function Nq(e,t){let r=hr(e,s=>J6([s],1)),n=NG(r.length),i=hr(r,s=>{let l={};return Ir(s,u=>{let h=u6(u.partialPath);Ir(h,d=>{l[d]=!0})}),l}),a=r;for(let s=1;s<=t;s++){let l=a;a=NG(l.length);for(let u=0;u<l.length;u++){let h=l[u];for(let d=0;d<h.length;d++){let f=h[d].partialPath,p=h[d].suffixDef,m=u6(f);if(x5e(i,m,u)||ei(p)||f.length===t){let y=n[u];if(eR(y,f)===!1){y.push(f);for(let v=0;v<m.length;v++){let x=m[v];i[u][x]=!0}}}else{let y=J6(p,s+1,f);a[u]=a[u].concat(y),Ir(y,v=>{let x=u6(v.partialPath);Ir(x,b=>{i[u][b]=!0})})}}}}return n}function _w(e,t,r,n){let i=new v5e(e,wi.ALTERNATION,n);return t.accept(i),Nq(i.result,r)}function Lw(e,t,r,n){let i=new v5e(e,r);t.accept(i);let a=i.result,l=new GTt(t,e,r).startWalking(),u=new Co({definition:a}),h=new Co({definition:l});return Nq([u,h],n)}function eR(e,t){e:for(let r=0;r<e.length;r++){let n=e[r];if(n.length===t.length){for(let i=0;i<n.length;i++){let a=t[i],s=n[i];if((a===s||s.categoryMatchesMap[a.tokenTypeIdx]!==void 0)===!1)continue e}return!0}}return!1}function b5e(e,t){return e.length<t.length&&Ec(e,(r,n)=>{let i=t[n];return r===i||i.categoryMatchesMap[r.tokenTypeIdx]})}function Pq(e){return Ec(e,t=>Ec(t,r=>Ec(r,n=>ei(n.categoryMatches))))}function T5e(e){let t=e.lookaheadStrategy.validate({rules:e.rules,tokenTypes:e.tokenTypes,grammarName:e.grammarName});return hr(t,r=>Object.assign({type:Vs.CUSTOM_LOOKAHEAD_VALIDATION},r))}function C5e(e,t,r,n){let i=_l(e,u=>w5e(u,r)),a=M5e(e,t,r),s=_l(e,u=>_5e(u,r)),l=_l(e,u=>S5e(u,e,n,r));return i.concat(a,s,l)}function w5e(e,t){let r=new VTt;e.accept(r);let n=r.allProductions,i=rTt(n,k5e),a=_c(i,l=>l.length>1);return hr(ha(a),l=>{let u=Rc(l),h=t.buildDuplicateFoundError(e,l),d=Tc(u),f={message:h,type:Vs.DUPLICATE_PRODUCTIONS,ruleName:e.name,dslName:d,occurrence:u.idx},p=Oq(u);return p&&(f.parameter=p),f})}function k5e(e){return`${Tc(e)}_#_${e.idx}_#_${Oq(e)}`}function Oq(e){return e instanceof ci?e.terminalType.name:e instanceof Gs?e.nonTerminalName:""}function S5e(e,t,r,n){let i=[];if(Ko(t,(s,l)=>l.name===e.name?s+1:s,0)>1){let s=n.buildDuplicateRuleNameError({topLevelRule:e,grammarName:r});i.push({message:s,type:Vs.DUPLICATE_RULE_NAME,ruleName:e.name})}return i}function E5e(e,t,r){let n=[],i;return qs(t,e)||(i=`Invalid rule override, rule: ->${e}<- cannot be overridden in the grammar: ->${r}<-as it is not defined in any of the super grammars `,n.push({message:i,type:Vs.INVALID_RULE_OVERRIDE,ruleName:e})),n}function Bq(e,t,r,n=[]){let i=[],a=GC(t.definition);if(ei(a))return[];{let s=e.name;qs(a,e)&&i.push({message:r.buildLeftRecursionError({topLevelRule:e,leftRecursionPath:n}),type:Vs.LEFT_RECURSION,ruleName:s});let u=UR(a,n.concat([e])),h=_l(u,d=>{let f=Ya(n);return f.push(d),Bq(e,d,r,f)});return i.concat(h)}}function GC(e){let t=[];if(ei(e))return t;let r=Rc(e);if(r instanceof Gs)t.push(r.referencedRule);else if(r instanceof Co||r instanceof Ua||r instanceof Zo||r instanceof Qo||r instanceof wo||r instanceof Mi)t=t.concat(GC(r.definition));else if(r instanceof ko)t=Sc(hr(r.definition,a=>GC(a.definition)));else if(!(r instanceof ci))throw Error("non exhaustive match");let n=tw(r),i=e.length>1;if(n&&i){let a=Ha(e);return t.concat(GC(a))}else return t}function A5e(e,t){let r=new $q;e.accept(r);let n=r.alternations;return _l(n,a=>{let s=ew(a.definition);return _l(s,(l,u)=>{let h=Mq([l],[],$v,1);return ei(h)?[{message:t.buildEmptyAlternationError({topLevelRule:e,alternation:a,emptyChoiceIdx:u}),type:Vs.NONE_LAST_EMPTY_ALT,ruleName:e.name,occurrence:a.idx,alternative:u+1}]:[]})})}function R5e(e,t,r){let n=new $q;e.accept(n);let i=n.alternations;return i=YR(i,s=>s.ignoreAmbiguities===!0),_l(i,s=>{let l=s.idx,u=s.maxLookahead||t,h=_w(l,e,u,s),d=D5e(h,s,e,r),f=I5e(h,s,e,r);return d.concat(f)})}function _5e(e,t){let r=new $q;e.accept(r);let n=r.alternations;return _l(n,a=>a.definition.length>255?[{message:t.buildTooManyAlternativesError({topLevelRule:e,alternation:a}),type:Vs.TOO_MANY_ALTS,ruleName:e.name,occurrence:a.idx}]:[])}function L5e(e,t,r){let n=[];return Ir(e,i=>{let a=new WTt;i.accept(a);let s=a.allProductions;Ir(s,l=>{let u=ZR(l),h=l.maxLookahead||t,d=l.idx,p=Lw(d,i,u,h)[0];if(ei(Sc(p))){let m=r.buildEmptyRepetitionError({topLevelRule:i,repetition:l});n.push({message:m,type:Vs.NO_NON_EMPTY_LOOKAHEAD,ruleName:i.name})}})}),n}function D5e(e,t,r,n){let i=[],a=Ko(e,(l,u,h)=>(t.definition[h].ignoreAmbiguities===!0||Ir(u,d=>{let f=[h];Ir(e,(p,m)=>{h!==m&&eR(p,d)&&t.definition[m].ignoreAmbiguities!==!0&&f.push(m)}),f.length>1&&!eR(i,d)&&(i.push(d),l.push({alts:f,path:d}))}),l),[]);return hr(a,l=>{let u=hr(l.alts,d=>d+1);return{message:n.buildAlternationAmbiguityError({topLevelRule:r,alternation:t,ambiguityIndices:u,prefixPath:l.path}),type:Vs.AMBIGUOUS_ALTS,ruleName:r.name,occurrence:t.idx,alternatives:l.alts}})}function I5e(e,t,r,n){let i=Ko(e,(s,l,u)=>{let h=hr(l,d=>({idx:u,path:d}));return s.concat(h)},[]);return Ew(_l(i,s=>{if(t.definition[s.idx].ignoreAmbiguities===!0)return[];let u=s.idx,h=s.path,d=Ml(i,p=>t.definition[p.idx].ignoreAmbiguities!==!0&&p.idx<u&&b5e(p.path,h));return hr(d,p=>{let m=[p.idx+1,u+1],g=t.idx===0?"":t.idx;return{message:n.buildAlternationPrefixAmbiguityError({topLevelRule:r,alternation:t,ambiguityIndices:m,prefixPath:p.path}),type:Vs.AMBIGUOUS_PREFIX_ALTS,ruleName:r.name,occurrence:g,alternatives:m}})}))}function M5e(e,t,r){let n=[],i=hr(t,a=>a.name);return Ir(e,a=>{let s=a.name;if(qs(i,s)){let l=r.buildNamespaceConflictError(a);n.push({message:l,type:Vs.CONFLICT_TOKENS_RULES_NAMESPACE,ruleName:s})}}),n}function N5e(e){let t=Tq(e,{errMsgProvider:PTt}),r={};return Ir(e.rules,n=>{r[n.name]=n}),d5e(r,t.errMsgProvider)}function P5e(e){return e=Tq(e,{errMsgProvider:Wg}),C5e(e.rules,e.tokenTypes,e.errMsgProvider,e.grammarName)}function nw(e){return qs(z5e,e.name)}function W5e(e,t,r,n,i,a,s){let l=this.getKeyForAutomaticLookahead(n,i),u=this.firstAfterRepMap[l];if(u===void 0){let p=this.getCurrRuleFullName(),m=this.getGAstProductions()[p];u=new a(m,i).startWalking(),this.firstAfterRepMap[l]=u}let h=u.token,d=u.occurrence,f=u.isEndOfRule;this.RULE_STACK.length===1&&f&&h===void 0&&(h=pp,d=1),!(h===void 0||d===void 0)&&this.shouldInRepetitionRecoveryBeTried(h,d,s)&&this.tryInRepetitionRecovery(e,t,r,h)}function d6(e,t,r){return r|t|e}function U5e(e){OA.reset(),e.accept(OA);let t=OA.dslMethods;return OA.reset(),t}function $G(e,t){isNaN(e.startOffset)===!0?(e.startOffset=t.startOffset,e.endOffset=t.endOffset):e.endOffset<t.endOffset&&(e.endOffset=t.endOffset)}function FG(e,t){isNaN(e.startOffset)===!0?(e.startOffset=t.startOffset,e.startColumn=t.startColumn,e.startLine=t.startLine,e.endOffset=t.endOffset,e.endColumn=t.endColumn,e.endLine=t.endLine):e.endOffset<t.endOffset&&(e.endOffset=t.endOffset,e.endColumn=t.endColumn,e.endLine=t.endLine)}function Y5e(e,t,r){e.children[r]===void 0?e.children[r]=[t]:e.children[r].push(t)}function j5e(e,t,r){e.children[t]===void 0?e.children[t]=[r]:e.children[t].push(r)}function zq(e,t){Object.defineProperty(e,JTt,{enumerable:!1,configurable:!0,writable:!1,value:t})}function X5e(e,t){let r=jo(e),n=r.length;for(let i=0;i<n;i++){let a=r[i],s=e[a],l=s.length;for(let u=0;u<l;u++){let h=s[u];h.tokenTypeIdx===void 0&&this[h.name](h.children,t)}}}function K5e(e,t){let r=E(function(){},"derivedConstructor");zq(r,e+"BaseSemantics");let n={visit:E(function(i,a){if(un(i)&&(i=i[0]),!Kh(i))return this[i.name](i.children,a)},"visit"),validateVisitor:E(function(){let i=Q5e(this,t);if(!ei(i)){let a=hr(i,s=>s.msg);throw Error(`Errors Detected in CST Visitor <${this.constructor.name}>:
 	${a.join(`
 
 `).replace(/\n/g,`
-	`)}`)}},"validateVisitor")};return r.prototype=i,r.prototype.constructor=r,r._RULE_NAMES=t,r}function Ake(e,t,r){let i=S(function(){},"derivedConstructor");Xz(i,e+"BaseSemanticsWithDefaults");let n=Object.create(r.prototype);return vr(t,a=>{n[a]=Ske}),i.prototype=n,i.prototype.constructor=i,i}function _ke(e,t){return Dke(e,t)}function Dke(e,t){let r=il(t,n=>vh(e[n])===!1),i=nr(r,n=>({msg:`Missing visitor method: <${n}> on ${e.constructor.name} CST Visitor.`,type:NF.MISSING_METHOD,methodName:n}));return IT(i)}function L1(e,t,r,i=!1){fT(r);let n=z0(this.recordingProdStack),a=vh(t)?t:t.DEF,s=new e({definition:[],idx:r});return i&&(s.separator=t.SEP),mr(t,"MAX_LOOKAHEAD")&&(s.maxLookahead=t.MAX_LOOKAHEAD),this.recordingProdStack.push(s),a.call(this),n.definition.push(s),this.recordingProdStack.pop(),AA}function Mke(e,t){fT(t);let r=z0(this.recordingProdStack),i=Kr(e)===!1,n=i===!1?e:e.DEF,a=new Us({definition:[],idx:t,ignoreAmbiguities:i&&e.IGNORE_AMBIGUITIES===!0});mr(e,"MAX_LOOKAHEAD")&&(a.maxLookahead=e.MAX_LOOKAHEAD);let s=HTe(n,l=>vh(l.GATE));return a.hasPredicates=s,r.definition.push(a),vr(n,l=>{let u=new Ws({definition:[]});a.definition.push(u),mr(l,"IGNORE_AMBIGUITIES")?u.ignoreAmbiguities=l.IGNORE_AMBIGUITIES:mr(l,"GATE")&&(u.ignoreAmbiguities=!0),this.recordingProdStack.push(u),l.ALT.call(this),this.recordingProdStack.pop()}),AA}function IF(e){return e===0?"":`${e}`}function fT(e){if(e<0||e>uye){let t=new Error(`Invalid DSL Method idx value: <${e}>
-	Idx value must be a none negative value smaller than ${uye+1}`);throw t.KNOWN_RECORDER_ERROR=!0,t}}function Nke(e,t){t.forEach(r=>{let i=r.prototype;Object.getOwnPropertyNames(i).forEach(n=>{if(n==="constructor")return;let a=Object.getOwnPropertyDescriptor(i,n);a&&(a.get||a.set)?Object.defineProperty(e.prototype,n,a):e.prototype[n]=r.prototype[n]})})}function OF(e=void 0){return function(){return e}}function Oke(e,t){for(var r=-1,i=e==null?0:e.length,n=Array(i);++r<i;)n[r]=t(e[r],r,e);return n}function Bke(){this.__data__=[],this.size=0}function Fke(e,t){return e===t||e!==e&&t!==t}function zke(e,t){for(var r=e.length;r--;)if($ke(e[r][0],t))return r;return-1}function Gke(e){var t=this.__data__,r=_A(t,e);if(r<0)return!1;var i=t.length-1;return r==i?t.pop():imt.call(t,r,1),--this.size,!0}function Vke(e){var t=this.__data__,r=_A(t,e);return r<0?void 0:t[r][1]}function Wke(e){return _A(this.__data__,e)>-1}function qke(e,t){var r=this.__data__,i=_A(r,e);return i<0?(++this.size,r.push([e,t])):r[i][1]=t,this}function im(e){var t=-1,r=e==null?0:e.length;for(this.clear();++t<r;){var i=e[t];this.set(i[0],i[1])}}function Uke(){this.__data__=new DA,this.size=0}function Hke(e){var t=this.__data__,r=t.delete(e);return this.size=t.size,r}function Yke(e){return this.__data__.get(e)}function jke(e){return this.__data__.has(e)}function Zke(e){var t=gmt.call(e,b2),r=e[b2];try{e[b2]=void 0;var i=!0}catch{}var n=ymt.call(e);return i&&(t?e[b2]=r:delete e[b2]),n}function Qke(e){return bmt.call(e)}function Jke(e){return e==null?e===void 0?kmt:Cmt:hye&&hye in Object(e)?vmt(e):Tmt(e)}function ewe(e){var t=typeof e;return e!=null&&(t=="object"||t=="function")}function twe(e){if(!Zz(e))return!1;var t=dy(e);return t==Smt||t==Emt||t==wmt||t==Amt}function iwe(e){return!!dye&&dye in e}function nwe(e){if(e!=null){try{return Lmt.call(e)}catch{}try{return e+""}catch{}}return""}function awe(e){if(!Zz(e)||Dmt(e))return!1;var t=rwe(e)?Fmt:Nmt;return t.test(nm(e))}function swe(e,t){return e?.[t]}function owe(e,t){var r=zmt(e,t);return $mt(r)?r:void 0}function lwe(){this.__data__=mT?mT(null):{},this.size=0}function cwe(e){var t=this.has(e)&&delete this.__data__[e];return this.size-=t?1:0,t}function uwe(e){var t=this.__data__;if(mT){var r=t[e];return r===Umt?void 0:r}return Ymt.call(t,e)?t[e]:void 0}function hwe(e){var t=this.__data__;return mT?t[e]!==void 0:Kmt.call(t,e)}function dwe(e,t){var r=this.__data__;return this.size+=this.has(e)?0:1,r[e]=mT&&t===void 0?Qmt:t,this}function am(e){var t=-1,r=e==null?0:e.length;for(this.clear();++t<r;){var i=e[t];this.set(i[0],i[1])}}function fwe(){this.size=0,this.__data__={hash:new fye,map:new(pT||DA),string:new fye}}function pwe(e){var t=typeof e;return t=="string"||t=="number"||t=="symbol"||t=="boolean"?e!=="__proto__":e===null}function mwe(e,t){var r=e.__data__;return tgt(t)?r[typeof t=="string"?"string":"hash"]:r.map}function gwe(e){var t=RA(this,e).delete(e);return this.size-=t?1:0,t}function ywe(e){return RA(this,e).get(e)}function vwe(e){return RA(this,e).has(e)}function xwe(e,t){var r=RA(this,e),i=r.size;return r.set(e,t),this.size+=r.size==i?0:1,this}function sm(e){var t=-1,r=e==null?0:e.length;for(this.clear();++t<r;){var i=e[t];this.set(i[0],i[1])}}function bwe(e,t){var r=this.__data__;if(r instanceof DA){var i=r.__data__;if(!pT||i.length<sgt-1)return i.push([e,t]),this.size=++r.size,this;r=this.__data__=new LA(i)}return r.set(e,t),this.size=r.size,this}function om(e){var t=this.__data__=new DA(e);this.size=t.size}function Twe(e){return this.__data__.set(e,lgt),this}function Cwe(e){return this.__data__.has(e)}function gT(e){var t=-1,r=e==null?0:e.length;for(this.__data__=new LA;++t<r;)this.add(e[t])}function wwe(e,t){for(var r=-1,i=e==null?0:e.length;++r<i;)if(t(e[r],r,e))return!0;return!1}function Swe(e,t){return e.has(t)}function Awe(e,t,r,i,n,a){var s=r&dgt,l=e.length,u=t.length;if(l!=u&&!(s&&u>l))return!1;var h=a.get(e),d=a.get(t);if(h&&d)return h==t&&d==e;var f=-1,p=!0,m=r&fgt?new kwe:void 0;for(a.set(e,t),a.set(t,e);++f<l;){var g=e[f],y=t[f];if(i)var v=s?i(y,g,f,t,e,a):i(g,y,f,e,t,a);if(v!==void 0){if(v)continue;p=!1;break}if(m){if(!hgt(t,function(x,b){if(!Ewe(m,b)&&(g===x||n(g,x,r,i,a)))return m.push(b)})){p=!1;break}}else if(!(g===y||n(g,y,r,i,a))){p=!1;break}}return a.delete(e),a.delete(t),p}function Dwe(e){var t=-1,r=Array(e.size);return e.forEach(function(i,n){r[++t]=[n,i]}),r}function Rwe(e){var t=-1,r=Array(e.size);return e.forEach(function(i){r[++t]=i}),r}function Lwe(e,t,r,i,n,a,s){switch(r){case _gt:if(e.byteLength!=t.byteLength||e.byteOffset!=t.byteOffset)return!1;e=e.buffer,t=t.buffer;case Agt:return!(e.byteLength!=t.byteLength||!a(new pye(e),new pye(t)));case vgt:case xgt:case Cgt:return $ke(+e,+t);case bgt:return e.name==t.name&&e.message==t.message;case kgt:case Sgt:return e==t+"";case Tgt:var l=mgt;case wgt:var u=i&ggt;if(l||(l=Qz),e.size!=t.size&&!u)return!1;var h=s.get(e);if(h)return h==t;i|=ygt,s.set(e,t);var d=_we(l(e),l(t),i,n,a,s);return s.delete(e),d;case Egt:if(QP)return QP.call(e)==QP.call(t)}return!1}function Mwe(e,t){for(var r=-1,i=t.length,n=e.length;++r<i;)e[n+r]=t[r];return e}function Iwe(e,t,r){var i=t(e);return ds(e)?i:Nwe(i,r(e))}function Owe(e,t){for(var r=-1,i=e==null?0:e.length,n=0,a=[];++r<i;){var s=e[r];t(s,r,e)&&(a[n++]=s)}return a}function Bwe(){return[]}function Fwe(e,t){for(var r=-1,i=Array(e);++r<e;)i[r]=t(r);return i}function $we(e){return e!=null&&typeof e=="object"}function zwe(e){return ry(e)&&dy(e)==Fgt}function Vwe(){return!1}function qwe(e,t){var r=typeof e;return t=t??Hgt,!!t&&(r=="number"||r!="symbol"&&Ygt.test(e))&&e>-1&&e%1==0&&e<t}function Hwe(e){return typeof e=="number"&&e>-1&&e%1==0&&e<=jgt}function Ywe(e){return ry(e)&&Jz(e.length)&&!!Vi[dy(e)]}function jwe(e){return function(t){return e(t)}}function Kwe(e,t){var r=ds(e),i=!r&&MA(e),n=!r&&!i&&M5(e),a=!r&&!i&&!n&&eG(e),s=r||i||n||a,l=s?Bgt(e.length,String):[],u=l.length;for(var h in e)(t||S1t.call(e,h))&&!(s&&(h=="length"||n&&(h=="offset"||h=="parent")||a&&(h=="buffer"||h=="byteLength"||h=="byteOffset")||Uwe(h,u)))&&l.push(h);return l}function Zwe(e){var t=e&&e.constructor,r=typeof t=="function"&&t.prototype||A1t;return e===r}function Jwe(e,t){return function(r){return e(t(r))}}function e4e(e){if(!Qwe(e))return R1t(e);var t=[];for(var r in Object(e))M1t.call(e,r)&&r!="constructor"&&t.push(r);return t}function r4e(e){return e!=null&&Jz(e.length)&&!rwe(e)}function i4e(e){return NA(e)?E1t(e):t4e(e)}function n4e(e){return Lgt(e,tG,Pgt)}function a4e(e,t,r,i,n,a){var s=r&N1t,l=Cye(e),u=l.length,h=Cye(t),d=h.length;if(u!=d&&!s)return!1;for(var f=u;f--;){var p=l[f];if(!(s?p in t:O1t.call(t,p)))return!1}var m=a.get(e),g=a.get(t);if(m&&g)return m==t&&g==e;var y=!0;a.set(e,t),a.set(t,e);for(var v=s;++f<u;){p=l[f];var x=e[p],b=t[p];if(i)var T=s?i(b,x,p,t,e,a):i(x,b,p,e,t,a);if(!(T===void 0?x===b||n(x,b,r,i,a):T)){y=!1;break}v||(v=p=="constructor")}if(y&&!v){var w=e.constructor,C=t.constructor;w!=C&&"constructor"in e&&"constructor"in t&&!(typeof w=="function"&&w instanceof w&&typeof C=="function"&&C instanceof C)&&(y=!1)}return a.delete(e),a.delete(t),y}function s4e(e,t,r,i,n,a){var s=ds(e),l=ds(t),u=s?Dye:$F(e),h=l?Dye:$F(t);u=u==_ye?xE:u,h=h==_ye?xE:h;var d=u==xE,f=h==xE,p=u==h;if(p&&M5(e)){if(!M5(t))return!1;s=!0,d=!1}if(p&&!d)return a||(a=new XE),s||eG(e)?_we(e,t,r,i,n,a):Dgt(e,t,u,r,i,n,a);if(!(r&Y1t)){var m=d&&Rye.call(e,"__wrapped__"),g=f&&Rye.call(t,"__wrapped__");if(m||g){var y=m?e.value():e,v=g?t.value():t;return a||(a=new XE),n(y,v,r,i,a)}}return p?(a||(a=new XE),P1t(e,t,r,i,n,a)):!1}function rG(e,t,r,i,n){return e===t?!0:e==null||t==null||!ry(e)&&!ry(t)?e!==e&&t!==t:X1t(e,t,r,i,rG,n)}function l4e(e,t,r,i){var n=r.length,a=n,s=!i;if(e==null)return!a;for(e=Object(e);n--;){var l=r[n];if(s&&l[2]?l[1]!==e[l[0]]:!(l[0]in e))return!1}for(;++n<a;){l=r[n];var u=l[0],h=e[u],d=l[1];if(s&&l[2]){if(h===void 0&&!(u in e))return!1}else{var f=new XE;if(i)var p=i(h,d,u,e,t,f);if(!(p===void 0?o4e(d,h,K1t|Z1t,i,f):p))return!1}}return!0}function c4e(e){return e===e&&!Zz(e)}function h4e(e){for(var t=tG(e),r=t.length;r--;){var i=t[r],n=e[i];t[r]=[i,n,u4e(n)]}return t}function d4e(e,t){return function(r){return r==null?!1:r[e]===t&&(t!==void 0||e in Object(r))}}function p4e(e){var t=J1t(e);return t.length==1&&t[0][2]?f4e(t[0][0],t[0][1]):function(r){return r===e||Q1t(r,e,t)}}function m4e(e){return typeof e=="symbol"||ry(e)&&dy(e)==tyt}function g4e(e,t){if(ds(e))return!1;var r=typeof e;return r=="number"||r=="symbol"||r=="boolean"||e==null||IA(e)?!0:iyt.test(e)||!ryt.test(e)||t!=null&&e in Object(t)}function OA(e,t){if(typeof e!="function"||t!=null&&typeof t!="function")throw new TypeError(nyt);var r=S(function(){var i=arguments,n=t?t.apply(this,i):i[0],a=r.cache;if(a.has(n))return a.get(n);var s=e.apply(this,i);return r.cache=a.set(n,s)||a,s},"memoized");return r.cache=new(OA.Cache||LA),r}function y4e(e){var t=ayt(e,function(i){return r.size===syt&&r.clear(),i}),r=t.cache;return t}function nG(e){if(typeof e=="string")return e;if(ds(e))return Pke(e,nG)+"";if(IA(e))return Mye?Mye.call(e):"";var t=e+"";return t=="0"&&1/e==-dyt?"-0":t}function v4e(e){return e==null?"":fyt(e)}function x4e(e,t){return ds(e)?e:iG(e,t)?[e]:hyt(pyt(e))}function T4e(e){if(typeof e=="string"||IA(e))return e;var t=e+"";return t=="0"&&1/e==-myt?"-0":t}function C4e(e,t){t=b4e(t,e);for(var r=0,i=t.length;e!=null&&r<i;)e=e[PA(t[r++])];return r&&r==i?e:void 0}function w4e(e,t,r){var i=e==null?void 0:k4e(e,t);return i===void 0?r:i}function S4e(e,t){return e!=null&&t in Object(e)}function E4e(e,t,r){t=b4e(t,e);for(var i=-1,n=t.length,a=!1;++i<n;){var s=PA(t[i]);if(!(a=e!=null&&r(e,s)))break;e=e[s]}return a||++i!=n?a:(n=e==null?0:e.length,!!n&&Jz(n)&&Uwe(s,n)&&(ds(e)||MA(e)))}function A4e(e,t){return e!=null&&vyt(e,t,yyt)}function _4e(e,t){return iG(e)&&u4e(t)?f4e(PA(e),t):function(r){var i=gyt(r,e);return i===void 0&&i===t?xyt(r,e):o4e(t,i,byt|Tyt)}}function D4e(e){return e}function R4e(e){return function(t){return t?.[e]}}function L4e(e){return function(t){return k4e(t,e)}}function M4e(e){return iG(e)?kyt(PA(e)):wyt(e)}function N4e(e){return typeof e=="function"?e:e==null?aG:typeof e=="object"?ds(e)?Cyt(e[0],e[1]):eyt(e):Syt(e)}function I4e(e){return function(t,r,i){for(var n=-1,a=Object(t),s=i(t),l=s.length;l--;){var u=s[e?l:++n];if(r(a[u],u,a)===!1)break}return t}}function O4e(e,t){return e&&_yt(e,t,tG)}function P4e(e,t){return function(r,i){if(r==null)return r;if(!NA(r))return e(r,i);for(var n=r.length,a=t?n:-1,s=Object(r);(t?a--:++a<n)&&i(s[a],a,s)!==!1;);return r}}function B4e(e,t){var r=-1,i=NA(e)?Array(e.length):[];return FA(e,function(n,a,s){i[++r]=t(n,a,s)}),i}function F4e(e,t){var r=ds(e)?Pke:Myt;return r(e,BA(t,3))}function $4e(e,t){var r=[];return FA(e,function(i,n,a){t(i,n,a)&&r.push(i)}),r}function z4e(e,t){var r=ds(e)?Pwe:Nyt;return r(e,BA(t,3))}function V0(e,t,r){return`${e.name}_${t}_${r}`}function U4e(e){let t={decisionMap:{},decisionStates:[],ruleToStartState:new Map,ruleToStopState:new Map,states:[]};H4e(t,e);let r=e.length;for(let i=0;i<r;i++){let n=e[i],a=kf(t,n,n);a!==void 0&&iSe(t,n,a)}return t}function H4e(e,t){let r=t.length;for(let i=0;i<r;i++){let n=t[i],a=Yn(e,n,void 0,{type:Oyt}),s=Yn(e,n,void 0,{type:$T});a.stop=s,e.ruleToStartState.set(n,a),e.ruleToStopState.set(n,s)}}function cG(e,t,r){return r instanceof Wi?$A(e,t,r.terminalType,r):r instanceof us?rSe(e,t,r):r instanceof Us?Z4e(e,t,r):r instanceof Ca?Q4e(e,t,r):r instanceof hn?Y4e(e,t,r):r instanceof qs?j4e(e,t,r):r instanceof yo?X4e(e,t,r):r instanceof vo?K4e(e,t,r):kf(e,t,r)}function Y4e(e,t,r){let i=Yn(e,t,r,{type:V4e});bh(e,i);let n=lm(e,t,i,r,kf(e,t,r));return hG(e,t,r,n)}function j4e(e,t,r){let i=Yn(e,t,r,{type:V4e});bh(e,i);let n=lm(e,t,i,r,kf(e,t,r)),a=$A(e,t,r.separator,r);return hG(e,t,r,n,a)}function X4e(e,t,r){let i=Yn(e,t,r,{type:G4e});bh(e,i);let n=lm(e,t,i,r,kf(e,t,r));return uG(e,t,r,n)}function K4e(e,t,r){let i=Yn(e,t,r,{type:G4e});bh(e,i);let n=lm(e,t,i,r,kf(e,t,r)),a=$A(e,t,r.separator,r);return uG(e,t,r,n,a)}function Z4e(e,t,r){let i=Yn(e,t,r,{type:yf});bh(e,i);let n=sh(r.definition,s=>cG(e,t,s));return lm(e,t,i,r,...n)}function Q4e(e,t,r){let i=Yn(e,t,r,{type:yf});bh(e,i);let n=lm(e,t,i,r,kf(e,t,r));return J4e(e,t,r,n)}function kf(e,t,r){let i=Iyt(sh(r.definition,n=>cG(e,t,n)),n=>n!==void 0);return i.length===1?i[0]:i.length===0?void 0:tSe(e,i)}function uG(e,t,r,i,n){let a=i.left,s=i.right,l=Yn(e,t,r,{type:$yt});bh(e,l);let u=Yn(e,t,r,{type:W4e});return a.loopback=l,u.loopback=l,e.decisionMap[V0(t,n?"RepetitionMandatoryWithSeparator":"RepetitionMandatory",r.idx)]=l,vn(s,l),n===void 0?(vn(l,a),vn(l,u)):(vn(l,u),vn(l,n.left),vn(n.right,a)),{left:a,right:u}}function hG(e,t,r,i,n){let a=i.left,s=i.right,l=Yn(e,t,r,{type:Fyt});bh(e,l);let u=Yn(e,t,r,{type:W4e}),h=Yn(e,t,r,{type:Byt});return l.loopback=h,u.loopback=h,vn(l,a),vn(l,u),vn(s,h),n!==void 0?(vn(h,u),vn(h,n.left),vn(n.right,a)):vn(h,l),e.decisionMap[V0(t,n?"RepetitionWithSeparator":"Repetition",r.idx)]=l,{left:l,right:u}}function J4e(e,t,r,i){let n=i.left,a=i.right;return vn(n,a),e.decisionMap[V0(t,"Option",r.idx)]=n,i}function bh(e,t){return e.decisionStates.push(t),t.decision=e.decisionStates.length-1,t.decision}function lm(e,t,r,i,...n){let a=Yn(e,t,i,{type:Pyt,start:r});r.end=a;for(let l of n)l!==void 0?(vn(r,l.left),vn(l.right,a)):vn(r,a);let s={left:r,right:a};return e.decisionMap[V0(t,eSe(i),i.idx)]=r,s}function eSe(e){if(e instanceof Us)return"Alternation";if(e instanceof Ca)return"Option";if(e instanceof hn)return"Repetition";if(e instanceof qs)return"RepetitionWithSeparator";if(e instanceof yo)return"RepetitionMandatory";if(e instanceof vo)return"RepetitionMandatoryWithSeparator";throw new Error("Invalid production type encountered")}function tSe(e,t){let r=t.length;for(let a=0;a<r-1;a++){let s=t[a],l;s.left.transitions.length===1&&(l=s.left.transitions[0]);let u=l instanceof lG,h=l,d=t[a+1].left;s.left.type===yf&&s.right.type===yf&&l!==void 0&&(u&&h.followState===s.right||l.target===s.right)?(u?h.followState=d:l.target=d,nSe(e,s.right)):vn(s.right,d)}let i=t[0],n=t[r-1];return{left:i.left,right:n.right}}function $A(e,t,r,i){let n=Yn(e,t,i,{type:yf}),a=Yn(e,t,i,{type:yf});return zA(n,new oG(a,r)),{left:n,right:a}}function rSe(e,t,r){let i=r.referencedRule,n=e.ruleToStartState.get(i),a=Yn(e,t,r,{type:yf}),s=Yn(e,t,r,{type:yf}),l=new lG(n,i,s);return zA(a,l),{left:a,right:s}}function iSe(e,t,r){let i=e.ruleToStartState.get(t);vn(i,r.left);let n=e.ruleToStopState.get(t);return vn(r.right,n),{left:i,right:n}}function vn(e,t){let r=new q4e(t);zA(e,r)}function Yn(e,t,r,i){let n=Object.assign({atn:e,production:r,epsilonOnlyTransitions:!1,rule:t,transitions:[],nextTokenWithinRule:[],stateNumber:e.states.length},i);return e.states.push(n),n}function zA(e,t){e.transitions.length===0&&(e.epsilonOnlyTransitions=t.isEpsilon()),e.transitions.push(t)}function nSe(e,t){e.states.splice(e.states.indexOf(t),1)}function dG(e,t=!0){return`${t?`a${e.alt}`:""}s${e.state.stateNumber}:${e.stack.map(r=>r.stateNumber.toString()).join("_")}`}function aSe(e,t,r){for(var i=-1,n=e.length;++i<n;){var a=e[i],s=t(a);if(s!=null&&(l===void 0?s===s&&!IA(s):r(s,l)))var l=s,u=a}return u}function sSe(e,t){return e<t}function oSe(e){return e&&e.length?zyt(e,aG,Gyt):void 0}function lSe(e){return ds(e)||MA(e)||!!(Nye&&e&&e[Nye])}function fG(e,t,r,i,n){var a=-1,s=e.length;for(r||(r=Wyt),n||(n=[]);++a<s;){var l=e[a];t>0&&r(l)?t>1?fG(l,t-1,r,i,n):Nwe(n,l):i||(n[n.length]=l)}return n}function uSe(e,t){return cSe(sh(e,t),1)}function hSe(e,t,r,i){for(var n=e.length,a=r+(i?1:-1);i?a--:++a<n;)if(t(e[a],a,e))return a;return-1}function dSe(e){return e!==e}function fSe(e,t,r){for(var i=r-1,n=e.length;++i<n;)if(e[i]===t)return i;return-1}function pSe(e,t,r){return t===t?Yyt(e,t,r):Uyt(e,Hyt,r)}function mSe(e,t){var r=e==null?0:e.length;return!!r&&jyt(e,t,0)>-1}function gSe(e,t,r){for(var i=-1,n=e==null?0:e.length;++i<n;)if(r(t,e[i]))return!0;return!1}function ySe(){}function vSe(e,t,r){var i=-1,n=Xyt,a=e.length,s=!0,l=[],u=l;if(r)s=!1,n=Kyt;else if(a>=tvt){var h=t?null:evt(e);if(h)return Qz(h);s=!1,n=Ewe,u=new kwe}else u=t?[]:l;e:for(;++i<a;){var d=e[i],f=t?t(d):d;if(d=r||d!==0?d:0,s&&f===f){for(var p=u.length;p--;)if(u[p]===f)continue e;t&&u.push(f),l.push(d)}else n(u,f,r)||(u!==l&&u.push(f),l.push(d))}return l}function xSe(e,t){return e&&e.length?rvt(e,BA(t,2)):[]}function bSe(e){var t=e==null?0:e.length;return t?cSe(e,1):[]}function TSe(e,t){for(var r=-1,i=e==null?0:e.length;++r<i&&t(e[r],r,e)!==!1;);return e}function CSe(e){return typeof e=="function"?e:aG}function kSe(e,t){var r=ds(e)?avt:FA;return r(e,svt(t))}function wSe(e){if(e==null)return!0;if(NA(e)&&(ds(e)||typeof e=="string"||typeof e.splice=="function"||M5(e)||eG(e)||MA(e)))return!e.length;var t=$F(e);if(t==ovt||t==lvt)return!e.size;if(Qwe(e))return!t4e(e).length;for(var r in e)if(uvt.call(e,r))return!1;return!0}function SSe(e,t,r,i){var n=-1,a=e==null?0:e.length;for(i&&a&&(r=e[++n]);++n<a;)r=t(r,e[n],n,e);return r}function ESe(e,t,r,i,n){return n(e,function(a,s,l){r=i?(i=!1,a):t(r,a,s,l)}),r}function ASe(e,t,r){var i=ds(e)?dvt:fvt,n=arguments.length<3;return i(e,BA(t,4),r,n,FA)}function _Se(e,t){let r={};return i=>{let n=i.toString(),a=r[n];return a!==void 0||(a={atnStartState:e,decision:t,states:{}},r[n]=a),a}}function GF(e,t=!0){let r=new Set;for(let i of e){let n=new Set;for(let a of i){if(a===void 0){if(t)break;return!1}let s=[a.tokenTypeIdx].concat(a.categoryMatches);for(let l of s)if(r.has(l)){if(!n.has(l))return!1}else r.add(l),n.add(l)}}return!0}function RSe(e){let t=e.decisionStates.length,r=Array(t);for(let i=0;i<t;i++)r[i]=_Se(e.decisionStates[i],i);return r}function KE(e,t,r,i){let n=e[t](r),a=n.start;if(a===void 0){let l=GSe(n.atnStartState);a=mG(n,pG(l)),n.start=a}return LSe.apply(this,[n,a,r,i])}function LSe(e,t,r,i){let n=t,a=1,s=[],l=this.LA(a++);for(;;){let u=BSe(n,l);if(u===void 0&&(u=MSe.apply(this,[e,n,l,a,r,i])),u===N5)return PSe(s,n,l);if(u.isAcceptState===!0)return u.prediction;n=u,s.push(l),l=this.LA(a++)}}function MSe(e,t,r,i,n,a){let s=FSe(t.configs,r,n);if(s.size===0)return VF(e,t,r,N5),N5;let l=pG(s),u=zSe(s,n);if(u!==void 0)l.isAcceptState=!0,l.prediction=u,l.configs.uniqueAlt=u;else if(USe(s)){let h=Vyt(s.alts);l.isAcceptState=!0,l.prediction=h,l.configs.uniqueAlt=h,NSe.apply(this,[e,i,s.alts,a])}return l=VF(e,t,r,l),l}function NSe(e,t,r,i){let n=[];for(let h=1;h<=t;h++)n.push(this.LA(h).tokenType);let a=e.atnStartState,s=a.rule,l=a.production,u=ISe({topLevelRule:s,ambiguityIndices:r,production:l,prefixPath:n});i(u)}function ISe(e){let t=sh(e.prefixPath,n=>B0(n)).join(", "),r=e.production.idx===0?"":e.production.idx,i=`Ambiguous Alternatives Detected: <${e.ambiguityIndices.join(", ")}> in <${OSe(e.production)}${r}> inside <${e.topLevelRule.name}> Rule,
+	`)}`)}},"validateVisitor")};return r.prototype=n,r.prototype.constructor=r,r._RULE_NAMES=t,r}function Z5e(e,t,r){let n=E(function(){},"derivedConstructor");zq(n,e+"BaseSemanticsWithDefaults");let i=Object.create(r.prototype);return Ir(t,a=>{i[a]=X5e}),n.prototype=i,n.prototype.constructor=n,n}function Q5e(e,t){return J5e(e,t)}function J5e(e,t){let r=Ml(t,i=>rd(e[i])===!1),n=hr(r,i=>({msg:`Missing visitor method: <${i}> on ${e.constructor.name} CST Visitor.`,type:zG.MISSING_METHOD,methodName:i}));return Ew(n)}function nv(e,t,r,n=!1){iw(r);let i=Xg(this.recordingProdStack),a=rd(t)?t:t.DEF,s=new e({definition:[],idx:r});return n&&(s.separator=t.SEP),wr(t,"MAX_LOOKAHEAD")&&(s.maxLookahead=t.MAX_LOOKAHEAD),this.recordingProdStack.push(s),a.call(this),i.definition.push(s),this.recordingProdStack.pop(),JR}function rAe(e,t){iw(t);let r=Xg(this.recordingProdStack),n=un(e)===!1,i=n===!1?e:e.DEF,a=new ko({definition:[],idx:t,ignoreAmbiguities:n&&e.IGNORE_AMBIGUITIES===!0});wr(e,"MAX_LOOKAHEAD")&&(a.maxLookahead=e.MAX_LOOKAHEAD);let s=y3e(i,l=>rd(l.GATE));return a.hasPredicates=s,r.definition.push(a),Ir(i,l=>{let u=new Co({definition:[]});a.definition.push(u),wr(l,"IGNORE_AMBIGUITIES")?u.ignoreAmbiguities=l.IGNORE_AMBIGUITIES:wr(l,"GATE")&&(u.ignoreAmbiguities=!0),this.recordingProdStack.push(u),l.ALT.call(this),this.recordingProdStack.pop()}),JR}function GG(e){return e===0?"":`${e}`}function iw(e){if(e<0||e>LCe){let t=new Error(`Invalid DSL Method idx value: <${e}>
+	Idx value must be a none negative value smaller than ${LCe+1}`);throw t.KNOWN_RECORDER_ERROR=!0,t}}function nAe(e,t){t.forEach(r=>{let n=r.prototype;Object.getOwnPropertyNames(n).forEach(i=>{if(i==="constructor")return;let a=Object.getOwnPropertyDescriptor(n,i);a&&(a.get||a.set)?Object.defineProperty(e.prototype,i,a):e.prototype[i]=r.prototype[i]})})}function VG(e=void 0){return function(){return e}}function aAe(e,t){for(var r=-1,n=e==null?0:e.length,i=Array(n);++r<n;)i[r]=t(e[r],r,e);return i}function oAe(){this.__data__=[],this.size=0}function lAe(e,t){return e===t||e!==e&&t!==t}function uAe(e,t){for(var r=e.length;r--;)if(cAe(e[r][0],t))return r;return-1}function hAe(e){var t=this.__data__,r=e_(t,e);if(r<0)return!1;var n=t.length-1;return r==n?t.pop():dCt.call(t,r,1),--this.size,!0}function dAe(e){var t=this.__data__,r=e_(t,e);return r<0?void 0:t[r][1]}function fAe(e){return e_(this.__data__,e)>-1}function pAe(e,t){var r=this.__data__,n=e_(r,e);return n<0?(++this.size,r.push([e,t])):r[n][1]=t,this}function d0(e){var t=-1,r=e==null?0:e.length;for(this.clear();++t<r;){var n=e[t];this.set(n[0],n[1])}}function mAe(){this.__data__=new t_,this.size=0}function gAe(e){var t=this.__data__,r=t.delete(e);return this.size=t.size,r}function yAe(e){return this.__data__.get(e)}function vAe(e){return this.__data__.has(e)}function TAe(e){var t=SCt.call(e,uC),r=e[uC];try{e[uC]=void 0;var n=!0}catch{}var i=ECt.call(e);return n&&(t?e[uC]=r:delete e[uC]),i}function CAe(e){return _Ct.call(e)}function wAe(e){return e==null?e===void 0?ICt:DCt:DCe&&DCe in Object(e)?ACt(e):LCt(e)}function kAe(e){var t=typeof e;return e!=null&&(t=="object"||t=="function")}function SAe(e){if(!Vq(e))return!1;var t=zv(e);return t==NCt||t==PCt||t==MCt||t==OCt}function AAe(e){return!!ICe&&ICe in e}function RAe(e){if(e!=null){try{return zCt.call(e)}catch{}try{return e+""}catch{}}return""}function _Ae(e){if(!Vq(e)||$Ct(e))return!1;var t=EAe(e)?YCt:VCt;return t.test(f0(e))}function LAe(e,t){return e?.[t]}function DAe(e,t){var r=XCt(e,t);return jCt(r)?r:void 0}function IAe(){this.__data__=sw?sw(null):{},this.size=0}function MAe(e){var t=this.has(e)&&delete this.__data__[e];return this.size-=t?1:0,t}function NAe(e){var t=this.__data__;if(sw){var r=t[e];return r===ewt?void 0:r}return rwt.call(t,e)?t[e]:void 0}function PAe(e){var t=this.__data__;return sw?t[e]!==void 0:awt.call(t,e)}function OAe(e,t){var r=this.__data__;return this.size+=this.has(e)?0:1,r[e]=sw&&t===void 0?owt:t,this}function p0(e){var t=-1,r=e==null?0:e.length;for(this.clear();++t<r;){var n=e[t];this.set(n[0],n[1])}}function BAe(){this.size=0,this.__data__={hash:new MCe,map:new(aw||t_),string:new MCe}}function $Ae(e){var t=typeof e;return t=="string"||t=="number"||t=="symbol"||t=="boolean"?e!=="__proto__":e===null}function FAe(e,t){var r=e.__data__;return uwt(t)?r[typeof t=="string"?"string":"hash"]:r.map}function zAe(e){var t=r_(this,e).delete(e);return this.size-=t?1:0,t}function GAe(e){return r_(this,e).get(e)}function VAe(e){return r_(this,e).has(e)}function WAe(e,t){var r=r_(this,e),n=r.size;return r.set(e,t),this.size+=r.size==n?0:1,this}function m0(e){var t=-1,r=e==null?0:e.length;for(this.clear();++t<r;){var n=e[t];this.set(n[0],n[1])}}function qAe(e,t){var r=this.__data__;if(r instanceof t_){var n=r.__data__;if(!aw||n.length<mwt-1)return n.push([e,t]),this.size=++r.size,this;r=this.__data__=new n_(n)}return r.set(e,t),this.size=r.size,this}function g0(e){var t=this.__data__=new t_(e);this.size=t.size}function HAe(e){return this.__data__.set(e,ywt),this}function UAe(e){return this.__data__.has(e)}function ow(e){var t=-1,r=e==null?0:e.length;for(this.__data__=new n_;++t<r;)this.add(e[t])}function jAe(e,t){for(var r=-1,n=e==null?0:e.length;++r<n;)if(t(e[r],r,e))return!0;return!1}function XAe(e,t){return e.has(t)}function ZAe(e,t,r,n,i,a){var s=r&Twt,l=e.length,u=t.length;if(l!=u&&!(s&&u>l))return!1;var h=a.get(e),d=a.get(t);if(h&&d)return h==t&&d==e;var f=-1,p=!0,m=r&Cwt?new YAe:void 0;for(a.set(e,t),a.set(t,e);++f<l;){var g=e[f],y=t[f];if(n)var v=s?n(y,g,f,t,e,a):n(g,y,f,e,t,a);if(v!==void 0){if(v)continue;p=!1;break}if(m){if(!bwt(t,function(x,b){if(!KAe(m,b)&&(g===x||i(g,x,r,n,a)))return m.push(b)})){p=!1;break}}else if(!(g===y||i(g,y,r,n,a))){p=!1;break}}return a.delete(e),a.delete(t),p}function JAe(e){var t=-1,r=Array(e.size);return e.forEach(function(n,i){r[++t]=[i,n]}),r}function e6e(e){var t=-1,r=Array(e.size);return e.forEach(function(n){r[++t]=n}),r}function t6e(e,t,r,n,i,a,s){switch(r){case Bwt:if(e.byteLength!=t.byteLength||e.byteOffset!=t.byteOffset)return!1;e=e.buffer,t=t.buffer;case Owt:return!(e.byteLength!=t.byteLength||!a(new NCe(e),new NCe(t)));case Awt:case Rwt:case Dwt:return cAe(+e,+t);case _wt:return e.name==t.name&&e.message==t.message;case Iwt:case Nwt:return e==t+"";case Lwt:var l=kwt;case Mwt:var u=n&Swt;if(l||(l=Wq),e.size!=t.size&&!u)return!1;var h=s.get(e);if(h)return h==t;n|=Ewt,s.set(e,t);var d=QAe(l(e),l(t),n,i,a,s);return s.delete(e),d;case Pwt:if(az)return az.call(e)==az.call(t)}return!1}function r6e(e,t){for(var r=-1,n=t.length,i=e.length;++r<n;)e[i+r]=t[r];return e}function i6e(e,t,r){var n=t(e);return Ws(e)?n:n6e(n,r(e))}function a6e(e,t){for(var r=-1,n=e==null?0:e.length,i=0,a=[];++r<n;){var s=e[r];t(s,r,e)&&(a[i++]=s)}return a}function o6e(){return[]}function l6e(e,t){for(var r=-1,n=Array(e);++r<e;)n[r]=t(r);return n}function c6e(e){return e!=null&&typeof e=="object"}function u6e(e){return Lv(e)&&zv(e)==Ywt}function d6e(){return!1}function p6e(e,t){var r=typeof e;return t=t??tkt,!!t&&(r=="number"||r!="symbol"&&rkt.test(e))&&e>-1&&e%1==0&&e<t}function g6e(e){return typeof e=="number"&&e>-1&&e%1==0&&e<=nkt}function y6e(e){return Lv(e)&&qq(e.length)&&!!li[zv(e)]}function v6e(e){return function(t){return e(t)}}function b6e(e,t){var r=Ws(e),n=!r&&i_(e),i=!r&&!n&&nR(e),a=!r&&!n&&!i&&Hq(e),s=r||n||i||a,l=s?Uwt(e.length,String):[],u=l.length;for(var h in e)(t||Nkt.call(e,h))&&!(s&&(h=="length"||i&&(h=="offset"||h=="parent")||a&&(h=="buffer"||h=="byteLength"||h=="byteOffset")||m6e(h,u)))&&l.push(h);return l}function T6e(e){var t=e&&e.constructor,r=typeof t=="function"&&t.prototype||Okt;return e===r}function w6e(e,t){return function(r){return e(t(r))}}function k6e(e){if(!C6e(e))return Fkt(e);var t=[];for(var r in Object(e))Gkt.call(e,r)&&r!="constructor"&&t.push(r);return t}function E6e(e){return e!=null&&qq(e.length)&&!EAe(e)}function A6e(e){return a_(e)?Pkt(e):S6e(e)}function R6e(e){return zwt(e,Uq,Hwt)}function _6e(e,t,r,n,i,a){var s=r&Vkt,l=VCe(e),u=l.length,h=VCe(t),d=h.length;if(u!=d&&!s)return!1;for(var f=u;f--;){var p=l[f];if(!(s?p in t:qkt.call(t,p)))return!1}var m=a.get(e),g=a.get(t);if(m&&g)return m==t&&g==e;var y=!0;a.set(e,t),a.set(t,e);for(var v=s;++f<u;){p=l[f];var x=e[p],b=t[p];if(n)var T=s?n(b,x,p,t,e,a):n(x,b,p,e,t,a);if(!(T===void 0?x===b||i(x,b,r,n,a):T)){y=!1;break}v||(v=p=="constructor")}if(y&&!v){var k=e.constructor,C=t.constructor;k!=C&&"constructor"in e&&"constructor"in t&&!(typeof k=="function"&&k instanceof k&&typeof C=="function"&&C instanceof C)&&(y=!1)}return a.delete(e),a.delete(t),y}function L6e(e,t,r,n,i,a){var s=Ws(e),l=Ws(t),u=s?XCe:UG(e),h=l?XCe:UG(t);u=u==jCe?BA:u,h=h==jCe?BA:h;var d=u==BA,f=h==BA,p=u==h;if(p&&nR(e)){if(!nR(t))return!1;s=!0,d=!1}if(p&&!d)return a||(a=new f6),s||Hq(e)?QAe(e,t,r,n,i,a):$wt(e,t,u,r,n,i,a);if(!(r&rSt)){var m=d&&KCe.call(e,"__wrapped__"),g=f&&KCe.call(t,"__wrapped__");if(m||g){var y=m?e.value():e,v=g?t.value():t;return a||(a=new f6),i(y,v,r,n,a)}}return p?(a||(a=new f6),Hkt(e,t,r,n,i,a)):!1}function Yq(e,t,r,n,i){return e===t?!0:e==null||t==null||!Lv(e)&&!Lv(t)?e!==e&&t!==t:iSt(e,t,r,n,Yq,i)}function I6e(e,t,r,n){var i=r.length,a=i,s=!n;if(e==null)return!a;for(e=Object(e);i--;){var l=r[i];if(s&&l[2]?l[1]!==e[l[0]]:!(l[0]in e))return!1}for(;++i<a;){l=r[i];var u=l[0],h=e[u],d=l[1];if(s&&l[2]){if(h===void 0&&!(u in e))return!1}else{var f=new f6;if(n)var p=n(h,d,u,e,t,f);if(!(p===void 0?D6e(d,h,aSt|sSt,n,f):p))return!1}}return!0}function M6e(e){return e===e&&!Vq(e)}function P6e(e){for(var t=Uq(e),r=t.length;r--;){var n=t[r],i=e[n];t[r]=[n,i,N6e(i)]}return t}function O6e(e,t){return function(r){return r==null?!1:r[e]===t&&(t!==void 0||e in Object(r))}}function $6e(e){var t=lSt(e);return t.length==1&&t[0][2]?B6e(t[0][0],t[0][1]):function(r){return r===e||oSt(r,e,t)}}function F6e(e){return typeof e=="symbol"||Lv(e)&&zv(e)==uSt}function z6e(e,t){if(Ws(e))return!1;var r=typeof e;return r=="number"||r=="symbol"||r=="boolean"||e==null||s_(e)?!0:dSt.test(e)||!hSt.test(e)||t!=null&&e in Object(t)}function o_(e,t){if(typeof e!="function"||t!=null&&typeof t!="function")throw new TypeError(fSt);var r=E(function(){var n=arguments,i=t?t.apply(this,n):n[0],a=r.cache;if(a.has(i))return a.get(i);var s=e.apply(this,n);return r.cache=a.set(i,s)||a,s},"memoized");return r.cache=new(o_.Cache||n_),r}function G6e(e){var t=pSt(e,function(n){return r.size===mSt&&r.clear(),n}),r=t.cache;return t}function Xq(e){if(typeof e=="string")return e;if(Ws(e))return sAe(e,Xq)+"";if(s_(e))return QCe?QCe.call(e):"";var t=e+"";return t=="0"&&1/e==-TSt?"-0":t}function V6e(e){return e==null?"":CSt(e)}function W6e(e,t){return Ws(e)?e:jq(e,t)?[e]:bSt(wSt(e))}function H6e(e){if(typeof e=="string"||s_(e))return e;var t=e+"";return t=="0"&&1/e==-kSt?"-0":t}function U6e(e,t){t=q6e(t,e);for(var r=0,n=t.length;e!=null&&r<n;)e=e[l_(t[r++])];return r&&r==n?e:void 0}function j6e(e,t,r){var n=e==null?void 0:Y6e(e,t);return n===void 0?r:n}function X6e(e,t){return e!=null&&t in Object(e)}function K6e(e,t,r){t=q6e(t,e);for(var n=-1,i=t.length,a=!1;++n<i;){var s=l_(t[n]);if(!(a=e!=null&&r(e,s)))break;e=e[s]}return a||++n!=i?a:(i=e==null?0:e.length,!!i&&qq(i)&&m6e(s,i)&&(Ws(e)||i_(e)))}function Z6e(e,t){return e!=null&&ASt(e,t,ESt)}function Q6e(e,t){return jq(e)&&N6e(t)?B6e(l_(e),t):function(r){var n=SSt(r,e);return n===void 0&&n===t?RSt(r,e):D6e(t,n,_St|LSt)}}function J6e(e){return e}function eRe(e){return function(t){return t?.[e]}}function tRe(e){return function(t){return Y6e(t,e)}}function rRe(e){return jq(e)?ISt(l_(e)):MSt(e)}function nRe(e){return typeof e=="function"?e:e==null?Kq:typeof e=="object"?Ws(e)?DSt(e[0],e[1]):cSt(e):NSt(e)}function iRe(e){return function(t,r,n){for(var i=-1,a=Object(t),s=n(t),l=s.length;l--;){var u=s[e?l:++i];if(r(a[u],u,a)===!1)break}return t}}function aRe(e,t){return e&&BSt(e,t,Uq)}function sRe(e,t){return function(r,n){if(r==null)return r;if(!a_(r))return e(r,n);for(var i=r.length,a=t?i:-1,s=Object(r);(t?a--:++a<i)&&n(s[a],a,s)!==!1;);return r}}function oRe(e,t){var r=-1,n=a_(e)?Array(e.length):[];return u_(e,function(i,a,s){n[++r]=t(i,a,s)}),n}function lRe(e,t){var r=Ws(e)?sAe:GSt;return r(e,c_(t,3))}function cRe(e,t){var r=[];return u_(e,function(n,i,a){t(n,i,a)&&r.push(n)}),r}function uRe(e,t){var r=Ws(e)?s6e:VSt;return r(e,c_(t,3))}function Zg(e,t,r){return`${e.name}_${t}_${r}`}function mRe(e){let t={decisionMap:{},decisionStates:[],ruleToStartState:new Map,ruleToStopState:new Map,states:[]};gRe(t,e);let r=e.length;for(let n=0;n<r;n++){let i=e[n],a=Tp(t,i,i);a!==void 0&&ARe(t,i,a)}return t}function gRe(e,t){let r=t.length;for(let n=0;n<r;n++){let i=t[n],a=da(e,i,void 0,{type:qSt}),s=da(e,i,void 0,{type:Dw});a.stop=s,e.ruleToStartState.set(i,a),e.ruleToStopState.set(i,s)}}function eH(e,t,r){return r instanceof ci?h_(e,t,r.terminalType,r):r instanceof Gs?ERe(e,t,r):r instanceof ko?TRe(e,t,r):r instanceof Ua?CRe(e,t,r):r instanceof Mi?yRe(e,t,r):r instanceof wo?vRe(e,t,r):r instanceof Zo?xRe(e,t,r):r instanceof Qo?bRe(e,t,r):Tp(e,t,r)}function yRe(e,t,r){let n=da(e,t,r,{type:dRe});id(e,n);let i=y0(e,t,n,r,Tp(e,t,r));return rH(e,t,r,i)}function vRe(e,t,r){let n=da(e,t,r,{type:dRe});id(e,n);let i=y0(e,t,n,r,Tp(e,t,r)),a=h_(e,t,r.separator,r);return rH(e,t,r,i,a)}function xRe(e,t,r){let n=da(e,t,r,{type:hRe});id(e,n);let i=y0(e,t,n,r,Tp(e,t,r));return tH(e,t,r,i)}function bRe(e,t,r){let n=da(e,t,r,{type:hRe});id(e,n);let i=y0(e,t,n,r,Tp(e,t,r)),a=h_(e,t,r.separator,r);return tH(e,t,r,i,a)}function TRe(e,t,r){let n=da(e,t,r,{type:mp});id(e,n);let i=qh(r.definition,s=>eH(e,t,s));return y0(e,t,n,r,...i)}function CRe(e,t,r){let n=da(e,t,r,{type:mp});id(e,n);let i=y0(e,t,n,r,Tp(e,t,r));return wRe(e,t,r,i)}function Tp(e,t,r){let n=WSt(qh(r.definition,i=>eH(e,t,i)),i=>i!==void 0);return n.length===1?n[0]:n.length===0?void 0:SRe(e,n)}function tH(e,t,r,n,i){let a=n.left,s=n.right,l=da(e,t,r,{type:jSt});id(e,l);let u=da(e,t,r,{type:fRe});return a.loopback=l,u.loopback=l,e.decisionMap[Zg(t,i?"RepetitionMandatoryWithSeparator":"RepetitionMandatory",r.idx)]=l,$i(s,l),i===void 0?($i(l,a),$i(l,u)):($i(l,u),$i(l,i.left),$i(i.right,a)),{left:a,right:u}}function rH(e,t,r,n,i){let a=n.left,s=n.right,l=da(e,t,r,{type:YSt});id(e,l);let u=da(e,t,r,{type:fRe}),h=da(e,t,r,{type:USt});return l.loopback=h,u.loopback=h,$i(l,a),$i(l,u),$i(s,h),i!==void 0?($i(h,u),$i(h,i.left),$i(i.right,a)):$i(h,l),e.decisionMap[Zg(t,i?"RepetitionWithSeparator":"Repetition",r.idx)]=l,{left:l,right:u}}function wRe(e,t,r,n){let i=n.left,a=n.right;return $i(i,a),e.decisionMap[Zg(t,"Option",r.idx)]=i,n}function id(e,t){return e.decisionStates.push(t),t.decision=e.decisionStates.length-1,t.decision}function y0(e,t,r,n,...i){let a=da(e,t,n,{type:HSt,start:r});r.end=a;for(let l of i)l!==void 0?($i(r,l.left),$i(l.right,a)):$i(r,a);let s={left:r,right:a};return e.decisionMap[Zg(t,kRe(n),n.idx)]=r,s}function kRe(e){if(e instanceof ko)return"Alternation";if(e instanceof Ua)return"Option";if(e instanceof Mi)return"Repetition";if(e instanceof wo)return"RepetitionWithSeparator";if(e instanceof Zo)return"RepetitionMandatory";if(e instanceof Qo)return"RepetitionMandatoryWithSeparator";throw new Error("Invalid production type encountered")}function SRe(e,t){let r=t.length;for(let a=0;a<r-1;a++){let s=t[a],l;s.left.transitions.length===1&&(l=s.left.transitions[0]);let u=l instanceof Jq,h=l,d=t[a+1].left;s.left.type===mp&&s.right.type===mp&&l!==void 0&&(u&&h.followState===s.right||l.target===s.right)?(u?h.followState=d:l.target=d,RRe(e,s.right)):$i(s.right,d)}let n=t[0],i=t[r-1];return{left:n.left,right:i.right}}function h_(e,t,r,n){let i=da(e,t,n,{type:mp}),a=da(e,t,n,{type:mp});return d_(i,new Qq(a,r)),{left:i,right:a}}function ERe(e,t,r){let n=r.referencedRule,i=e.ruleToStartState.get(n),a=da(e,t,r,{type:mp}),s=da(e,t,r,{type:mp}),l=new Jq(i,n,s);return d_(a,l),{left:a,right:s}}function ARe(e,t,r){let n=e.ruleToStartState.get(t);$i(n,r.left);let i=e.ruleToStopState.get(t);return $i(r.right,i),{left:n,right:i}}function $i(e,t){let r=new pRe(t);d_(e,r)}function da(e,t,r,n){let i=Object.assign({atn:e,production:r,epsilonOnlyTransitions:!1,rule:t,transitions:[],nextTokenWithinRule:[],stateNumber:e.states.length},n);return e.states.push(i),i}function d_(e,t){e.transitions.length===0&&(e.epsilonOnlyTransitions=t.isEpsilon()),e.transitions.push(t)}function RRe(e,t){e.states.splice(e.states.indexOf(t),1)}function nH(e,t=!0){return`${t?`a${e.alt}`:""}s${e.state.stateNumber}:${e.stack.map(r=>r.stateNumber.toString()).join("_")}`}function _Re(e,t,r){for(var n=-1,i=e.length;++n<i;){var a=e[n],s=t(a);if(s!=null&&(l===void 0?s===s&&!s_(s):r(s,l)))var l=s,u=a}return u}function LRe(e,t){return e<t}function DRe(e){return e&&e.length?XSt(e,Kq,KSt):void 0}function IRe(e){return Ws(e)||i_(e)||!!(JCe&&e&&e[JCe])}function iH(e,t,r,n,i){var a=-1,s=e.length;for(r||(r=QSt),i||(i=[]);++a<s;){var l=e[a];t>0&&r(l)?t>1?iH(l,t-1,r,n,i):n6e(i,l):n||(i[i.length]=l)}return i}function NRe(e,t){return MRe(qh(e,t),1)}function PRe(e,t,r,n){for(var i=e.length,a=r+(n?1:-1);n?a--:++a<i;)if(t(e[a],a,e))return a;return-1}function ORe(e){return e!==e}function BRe(e,t,r){for(var n=r-1,i=e.length;++n<i;)if(e[n]===t)return n;return-1}function $Re(e,t,r){return t===t?rEt(e,t,r):eEt(e,tEt,r)}function FRe(e,t){var r=e==null?0:e.length;return!!r&&nEt(e,t,0)>-1}function zRe(e,t,r){for(var n=-1,i=e==null?0:e.length;++n<i;)if(r(t,e[n]))return!0;return!1}function GRe(){}function VRe(e,t,r){var n=-1,i=iEt,a=e.length,s=!0,l=[],u=l;if(r)s=!1,i=aEt;else if(a>=uEt){var h=t?null:cEt(e);if(h)return Wq(h);s=!1,i=KAe,u=new YAe}else u=t?[]:l;e:for(;++n<a;){var d=e[n],f=t?t(d):d;if(d=r||d!==0?d:0,s&&f===f){for(var p=u.length;p--;)if(u[p]===f)continue e;t&&u.push(f),l.push(d)}else i(u,f,r)||(u!==l&&u.push(f),l.push(d))}return l}function WRe(e,t){return e&&e.length?hEt(e,c_(t,2)):[]}function qRe(e){var t=e==null?0:e.length;return t?MRe(e,1):[]}function HRe(e,t){for(var r=-1,n=e==null?0:e.length;++r<n&&t(e[r],r,e)!==!1;);return e}function URe(e){return typeof e=="function"?e:Kq}function YRe(e,t){var r=Ws(e)?pEt:u_;return r(e,mEt(t))}function jRe(e){if(e==null)return!0;if(a_(e)&&(Ws(e)||typeof e=="string"||typeof e.splice=="function"||nR(e)||Hq(e)||i_(e)))return!e.length;var t=UG(e);if(t==gEt||t==yEt)return!e.size;if(C6e(e))return!S6e(e).length;for(var r in e)if(xEt.call(e,r))return!1;return!0}function XRe(e,t,r,n){var i=-1,a=e==null?0:e.length;for(n&&a&&(r=e[++i]);++i<a;)r=t(r,e[i],i,e);return r}function KRe(e,t,r,n,i){return i(e,function(a,s,l){r=n?(n=!1,a):t(r,a,s,l)}),r}function ZRe(e,t,r){var n=Ws(e)?TEt:CEt,i=arguments.length<3;return n(e,c_(t,4),r,i,u_)}function QRe(e,t){let r={};return n=>{let i=n.toString(),a=r[i];return a!==void 0||(a={atnStartState:e,decision:t,states:{}},r[i]=a),a}}function jG(e,t=!0){let r=new Set;for(let n of e){let i=new Set;for(let a of n){if(a===void 0){if(t)break;return!1}let s=[a.tokenTypeIdx].concat(a.categoryMatches);for(let l of s)if(r.has(l)){if(!i.has(l))return!1}else r.add(l),i.add(l)}}return!0}function e_e(e){let t=e.decisionStates.length,r=Array(t);for(let n=0;n<t;n++)r[n]=QRe(e.decisionStates[n],n);return r}function p6(e,t,r,n){let i=e[t](r),a=i.start;if(a===void 0){let l=h_e(i.atnStartState);a=sH(i,aH(l)),i.start=a}return t_e.apply(this,[i,a,r,n])}function t_e(e,t,r,n){let i=t,a=1,s=[],l=this.LA(a++);for(;;){let u=o_e(i,l);if(u===void 0&&(u=r_e.apply(this,[e,i,l,a,r,n])),u===iR)return s_e(s,i,l);if(u.isAcceptState===!0)return u.prediction;i=u,s.push(l),l=this.LA(a++)}}function r_e(e,t,r,n,i,a){let s=l_e(t.configs,r,i);if(s.size===0)return XG(e,t,r,iR),iR;let l=aH(s),u=u_e(s,i);if(u!==void 0)l.isAcceptState=!0,l.prediction=u,l.configs.uniqueAlt=u;else if(m_e(s)){let h=ZSt(s.alts);l.isAcceptState=!0,l.prediction=h,l.configs.uniqueAlt=h,n_e.apply(this,[e,n,s.alts,a])}return l=XG(e,t,r,l),l}function n_e(e,t,r,n){let i=[];for(let h=1;h<=t;h++)i.push(this.LA(h).tokenType);let a=e.atnStartState,s=a.rule,l=a.production,u=i_e({topLevelRule:s,ambiguityIndices:r,production:l,prefixPath:i});n(u)}function i_e(e){let t=qh(e.prefixPath,i=>Ug(i)).join(", "),r=e.production.idx===0?"":e.production.idx,n=`Ambiguous Alternatives Detected: <${e.ambiguityIndices.join(", ")}> in <${a_e(e.production)}${r}> inside <${e.topLevelRule.name}> Rule,
 <${t}> may appears as a prefix path in all these alternatives.
-`;return i=i+`See: https://chevrotain.io/docs/guide/resolving_grammar_errors.html#AMBIGUOUS_ALTERNATIVES
-For Further details.`,i}function OSe(e){if(e instanceof us)return"SUBRULE";if(e instanceof Ca)return"OPTION";if(e instanceof Us)return"OR";if(e instanceof yo)return"AT_LEAST_ONE";if(e instanceof vo)return"AT_LEAST_ONE_SEP";if(e instanceof qs)return"MANY_SEP";if(e instanceof hn)return"MANY";if(e instanceof Wi)return"CONSUME";throw Error("non exhaustive match")}function PSe(e,t,r){let i=qyt(t.configs.elements,a=>a.state.transitions),n=ivt(i.filter(a=>a instanceof oG).map(a=>a.tokenType),a=>a.tokenTypeIdx);return{actualToken:r,possibleTokenTypes:n,tokenPath:e}}function BSe(e,t){return e.edges[t.tokenTypeIdx]}function FSe(e,t,r){let i=new zF,n=[];for(let s of e.elements){if(r.is(s.alt)===!1)continue;if(s.state.type===$T){n.push(s);continue}let l=s.state.transitions.length;for(let u=0;u<l;u++){let h=s.state.transitions[u],d=$Se(h,t);d!==void 0&&i.add({state:d,alt:s.alt,stack:s.stack})}}let a;if(n.length===0&&i.size===1&&(a=i),a===void 0){a=new zF;for(let s of i.elements)yT(s,a)}if(n.length>0&&!WSe(a))for(let s of n)a.add(s);return a}function $Se(e,t){if(e instanceof oG&&Gz(t,e.tokenType))return e.target}function zSe(e,t){let r;for(let i of e.elements)if(t.is(i.alt)===!0){if(r===void 0)r=i.alt;else if(r!==i.alt)return}return r}function pG(e){return{configs:e,edges:{},isAcceptState:!1,prediction:-1}}function VF(e,t,r,i){return i=mG(e,i),t.edges[r.tokenTypeIdx]=i,i}function mG(e,t){if(t===N5)return t;let r=t.configs.key,i=e.states[r];return i!==void 0?i:(t.configs.finalize(),e.states[r]=t,t)}function GSe(e){let t=new zF,r=e.transitions.length;for(let i=0;i<r;i++){let a={state:e.transitions[i].target,alt:i,stack:[]};yT(a,t)}return t}function yT(e,t){let r=e.state;if(r.type===$T){if(e.stack.length>0){let n=[...e.stack],s={state:n.pop(),alt:e.alt,stack:n};yT(s,t)}else t.add(e);return}r.epsilonOnlyTransitions||t.add(e);let i=r.transitions.length;for(let n=0;n<i;n++){let a=r.transitions[n],s=VSe(e,a);s!==void 0&&yT(s,t)}}function VSe(e,t){if(t instanceof q4e)return{state:t.target,alt:e.alt,stack:e.stack};if(t instanceof lG){let r=[...e.stack,t.followState];return{state:t.target,alt:e.alt,stack:r}}}function WSe(e){for(let t of e.elements)if(t.state.type===$T)return!0;return!1}function qSe(e){for(let t of e.elements)if(t.state.type!==$T)return!1;return!0}function USe(e){if(qSe(e))return!0;let t=HSe(e.elements);return YSe(t)&&!jSe(t)}function HSe(e){let t=new Map;for(let r of e){let i=dG(r,!1),n=t.get(i);n===void 0&&(n={},t.set(i,n)),n[r.alt]=!0}return t}function YSe(e){for(let t of Array.from(e.values()))if(Object.keys(t).length>1)return!0;return!1}function jSe(e){for(let t of Array.from(e.values()))if(Object.keys(t).length===1)return!0;return!1}function ZE(e){return e.$type===O5}function VA(e,t,r){return r3e({parser:t,tokens:r,ruleNames:new Map},e),t}function r3e(e,t){let r=iA(t,!1),i=gi(t.rules).filter(cs).filter(a=>r.has(a));for(let a of i){let s={...e,consume:1,optional:1,subrule:1,many:1,or:1};e.parser.rule(a,vf(s,a.definition))}let n=gi(t.rules).filter(K1).filter(a=>r.has(a));for(let a of n)e.parser.rule(a,i3e(e,a))}function i3e(e,t){let r=t.call.rule.ref;if(!r)throw new Error("Could not resolve reference to infix operator rule: "+t.call.rule.$refText);if(rl(r))throw new Error("Cannot use terminal rule in infix expression");let i=t.operators.precedences.flatMap(m=>m.operators),n={$type:"Group",elements:[]},a={$container:n,$type:"Assignment",feature:"parts",operator:"+=",terminal:t.call},s={$container:n,$type:"Group",elements:[],cardinality:"*"};n.elements.push(a,s);let u={$container:s,$type:"Assignment",feature:"operators",operator:"+=",terminal:{$type:"Alternatives",elements:i}},h={...a,$container:s};s.elements.push(u,h);let f=i.map(m=>e.tokens[m.value]).map((m,g)=>({ALT:S(()=>e.parser.consume(g,m,u),"ALT")})),p;return m=>{p??(p=WA(e,r)),e.parser.subrule(0,p,!1,a,m),e.parser.many(0,{DEF:S(()=>{e.parser.alternatives(0,f),e.parser.subrule(1,p,!1,h,m)},"DEF")})}}function vf(e,t,r=!1){let i;if(ch(t))i=u3e(e,t);else if(pf(t))i=n3e(e,t);else if(lh(t))i=vf(e,t.terminal);else if(Y0(t))i=bG(e,t);else if(uh(t))i=a3e(e,t);else if(j5(t))i=o3e(e,t);else if(Q5(t))i=l3e(e,t);else if(j0(t))i=c3e(e,t);else if(k$(t)){let n=e.consume++;i=S(()=>e.parser.consume(n,gf,t),"method")}else throw new eA(t.$cstNode,`Unexpected element type: ${t.$type}`);return TG(e,r?void 0:vT(t),i,t.cardinality)}function n3e(e,t){let r=$0(t);return()=>e.parser.action(r,t)}function a3e(e,t){let r=t.rule.ref;if(H0(r)){let i=e.subrule++,n=cs(r)&&r.fragment,a=t.arguments.length>0?s3e(r,t.arguments):()=>({}),s;return l=>{s??(s=WA(e,r)),e.parser.subrule(i,s,n,t,a(l))}}else if(rl(r)){let i=e.consume++,n=P5(e,r.name);return()=>e.parser.consume(i,n,t)}else if(r)bf(r);else throw new eA(t.$cstNode,`Undefined rule: ${t.rule.$refText}`)}function s3e(e,t){if(t.some(i=>i.calledByName)){let i=t.map(n=>({parameterName:n.parameter?.ref?.name,predicate:Vl(n.value)}));return n=>{let a={};for(let{parameterName:s,predicate:l}of i)s&&(a[s]=l(n));return a}}else{let i=t.map(n=>Vl(n.value));return n=>{let a={};for(let s=0;s<i.length;s++)if(s<e.parameters.length){let l=e.parameters[s].name,u=i[s];a[l]=u(n)}return a}}}function Vl(e){if(C$(e)){let t=Vl(e.left),r=Vl(e.right);return i=>t(i)||r(i)}else if(T$(e)){let t=Vl(e.left),r=Vl(e.right);return i=>t(i)&&r(i)}else if(E$(e)){let t=Vl(e.value);return r=>!t(r)}else if(A$(e)){let t=e.parameter.ref.name;return r=>r!==void 0&&r[t]===!0}else if(x$(e)){let t=!!e.true;return()=>t}bf(e)}function o3e(e,t){if(t.elements.length===1)return vf(e,t.elements[0]);{let r=[];for(let n of t.elements){let a={ALT:vf(e,n,!0)},s=vT(n);s&&(a.GATE=Vl(s)),r.push(a)}let i=e.or++;return n=>e.parser.alternatives(i,r.map(a=>{let s={ALT:S(()=>a.ALT(n),"ALT")},l=a.GATE;return l&&(s.GATE=()=>l(n)),s}))}}function l3e(e,t){if(t.elements.length===1)return vf(e,t.elements[0]);let r=[];for(let l of t.elements){let u={ALT:vf(e,l,!0)},h=vT(l);h&&(u.GATE=Vl(h)),r.push(u)}let i=e.or++,n=S((l,u)=>{let h=u.getRuleStack().join("-");return`uGroup_${l}_${h}`},"idFunc"),a=S(l=>e.parser.alternatives(i,r.map((u,h)=>{let d={ALT:S(()=>!0,"ALT")},f=e.parser;d.ALT=()=>{if(u.ALT(l),!f.isRecording()){let m=n(i,f);f.unorderedGroups.get(m)||f.unorderedGroups.set(m,[]);let g=f.unorderedGroups.get(m);typeof g?.[h]>"u"&&(g[h]=!0)}};let p=u.GATE;return p?d.GATE=()=>p(l):d.GATE=()=>!f.unorderedGroups.get(n(i,f))?.[h],d})),"alternatives"),s=TG(e,vT(t),a,"*");return l=>{s(l),e.parser.isRecording()||e.parser.unorderedGroups.delete(n(i,e.parser))}}function c3e(e,t){let r=t.elements.map(i=>vf(e,i));return i=>r.forEach(n=>n(i))}function vT(e){if(j0(e))return e.guardCondition}function bG(e,t,r=t.terminal){if(r)if(uh(r)&&cs(r.rule.ref)){let i=r.rule.ref,n=e.subrule++,a;return s=>{a??(a=WA(e,i)),e.parser.subrule(n,a,!1,t,s)}}else if(uh(r)&&rl(r.rule.ref)){let i=e.consume++,n=P5(e,r.rule.ref.name);return()=>e.parser.consume(i,n,t)}else if(ch(r)){let i=e.consume++,n=P5(e,r.value);return()=>e.parser.consume(i,n,t)}else throw new Error("Could not build cross reference parser");else{if(!t.type.ref)throw new Error("Could not resolve reference to type: "+t.type.$refText);let n=oA(t.type.ref)?.terminal;if(!n)throw new Error("Could not find name assignment for type: "+$0(t.type.ref));return bG(e,t,n)}}function u3e(e,t){let r=e.consume++,i=e.tokens[t.value];if(!i)throw new Error("Could not find token for keyword: "+t.value);return()=>e.parser.consume(r,i,t)}function TG(e,t,r,i){let n=t&&Vl(t);if(!i)if(n){let a=e.or++;return s=>e.parser.alternatives(a,[{ALT:S(()=>r(s),"ALT"),GATE:S(()=>n(s),"GATE")},{ALT:OF(),GATE:S(()=>!n(s),"GATE")}])}else return r;if(i==="*"){let a=e.many++;return s=>e.parser.many(a,{DEF:S(()=>r(s),"DEF"),GATE:n?()=>n(s):void 0})}else if(i==="+"){let a=e.many++;if(n){let s=e.or++;return l=>e.parser.alternatives(s,[{ALT:S(()=>e.parser.atLeastOne(a,{DEF:S(()=>r(l),"DEF")}),"ALT"),GATE:S(()=>n(l),"GATE")},{ALT:OF(),GATE:S(()=>!n(l),"GATE")}])}else return s=>e.parser.atLeastOne(a,{DEF:S(()=>r(s),"DEF")})}else if(i==="?"){let a=e.optional++;return s=>e.parser.optional(a,{DEF:S(()=>r(s),"DEF"),GATE:n?()=>n(s):void 0})}else bf(i)}function WA(e,t){let r=h3e(e,t),i=e.parser.getRule(r);if(!i)throw new Error(`Rule "${r}" not found."`);return i}function h3e(e,t){if(H0(t))return t.name;if(e.ruleNames.has(t))return e.ruleNames.get(t);{let r=t,i=r.$container,n=t.$type;for(;!cs(i);)(j0(i)||j5(i)||Q5(i))&&(n=i.elements.indexOf(r).toString()+":"+n),r=i,i=i.$container;return n=i.name+":"+n,e.ruleNames.set(t,n),n}}function P5(e,t){let r=e.tokens[t];if(!r)throw new Error(`Token "${t}" not found."`);return r}function CG(e){let t=e.Grammar,r=e.parser.Lexer,i=new e3e(e);return VA(t,i,r.definition),i.finalize(),i}function kG(e){let t=wG(e);return t.finalize(),t}function wG(e){let t=e.Grammar,r=e.parser.Lexer,i=new QSe(e);return VA(t,i,r.definition)}function UA(){return new Promise(e=>{typeof setImmediate>"u"?setTimeout(e,0):setImmediate(e)})}function HA(){return QE=performance.now(),new Ii.CancellationTokenSource}function EG(e){d3e=e}function cm(e){return e===Zc}async function la(e){if(e===Ii.CancellationToken.None)return;let t=performance.now();if(t-QE>=d3e&&(QE=t,await UA(),QE=performance.now()),e.isCancellationRequested)throw Zc}function F5(e,t){if(e.length<=1)return e;let r=e.length/2|0,i=e.slice(0,r),n=e.slice(r);F5(i,t),F5(n,t);let a=0,s=0,l=0;for(;a<i.length&&s<n.length;)t(i[a],n[s])<=0?e[l++]=i[a++]:e[l++]=n[s++];for(;a<i.length;)e[l++]=i[a++];for(;s<n.length;)e[l++]=n[s++];return e}function qF(e,t,r=0){let i=t?[r]:[];for(let n=0;n<e.length;n++){let a=e.charCodeAt(n);AG(a)&&(a===13&&n+1<e.length&&e.charCodeAt(n+1)===10&&n++,i.push(r+n+1))}return i}function AG(e){return e===13||e===10}function _G(e){let t=e.start,r=e.end;return t.line>r.line||t.line===r.line&&t.character>r.character?{start:r,end:t}:e}function f3e(e){let t=_G(e.range);return t!==e.range?{newText:e.newText,range:t}:e}function RG(e){return typeof e.name=="string"}function NG(e){return typeof e.$comment=="string"}function HF(e){return typeof e=="object"&&!!e&&("$ref"in e||"$error"in e)}function O0(e){return{code:e}}function IG(e){if(e.range)return e.range;let t;return typeof e.property=="string"?t=nA(e.node.$cstNode,e.property,e.index):typeof e.keyword=="string"&&(t=iz(e.node.$cstNode,e.keyword,e.index)),t??(t=e.node.$cstNode),t?t.range:{start:{line:0,character:0},end:{line:0,character:0}}}function J2(e){switch(e){case"error":return 1;case"warning":return 2;case"info":return 3;case"hint":return 4;default:throw new Error("Invalid diagnostic severity: "+e)}}function OG(e){switch(e){case"error":return O0(Qo.LexingError);case"warning":return O0(Qo.LexingWarning);case"info":return O0(Qo.LexingInfo);case"hint":return O0(Qo.LexingHint);default:throw new Error("Invalid diagnostic severity: "+e)}}function KA(e){return Array.isArray(e)&&(e.length===0||"name"in e[0])}function ZA(e){return e&&"modes"in e&&"defaultMode"in e}function G5(e){return!KA(e)&&!ZA(e)}function FG(e,t,r){let i,n;typeof e=="string"?(n=t,i=r):(n=e.range.start,i=t),n||(n=ai.create(0,0));let a=zG(e),s=QA(i),l=B3e({lines:a,position:n,options:s});return z3e({index:0,tokens:l,position:n})}function $G(e,t){let r=QA(t),i=zG(e);if(i.length===0)return!1;let n=i[0],a=i[i.length-1],s=r.start,l=r.end;return!!s?.exec(n)&&!!l?.exec(a)}function zG(e){let t="";return typeof e=="string"?t=e:t=e.text,t.split(Fve)}function B3e(e){let t=[],r=e.position.line,i=e.position.character;for(let n=0;n<e.lines.length;n++){let a=n===0,s=n===e.lines.length-1,l=e.lines[n],u=0;if(a&&e.options.start){let d=e.options.start?.exec(l);d&&(u=d.index+d[0].length)}else{let d=e.options.line?.exec(l);d&&(u=d.index+d[0].length)}if(s){let d=e.options.end?.exec(l);d&&(l=l.substring(0,d.index))}if(l=l.substring(0,$3e(l)),V5(l,u)>=l.length){if(t.length>0){let d=ai.create(r,i);t.push({type:"break",content:"",range:qr.create(d,d)})}}else{Fye.lastIndex=u;let d=Fye.exec(l);if(d){let f=d[0],p=d[1],m=ai.create(r,i+u),g=ai.create(r,i+u+f.length);t.push({type:"tag",content:p,range:qr.create(m,g)}),u+=f.length,u=V5(l,u)}if(u<l.length){let f=l.substring(u),p=Array.from(f.matchAll(bvt));t.push(...F3e(p,f,r,i+u))}}r++,i=0}return t.length>0&&t[t.length-1].type==="break"?t.slice(0,-1):t}function F3e(e,t,r,i){let n=[];if(e.length===0){let a=ai.create(r,i),s=ai.create(r,i+t.length);n.push({type:"text",content:t,range:qr.create(a,s)})}else{let a=0;for(let l of e){let u=l.index,h=t.substring(a,u);h.length>0&&n.push({type:"text",content:t.substring(a,u),range:qr.create(ai.create(r,a+i),ai.create(r,u+i))});let d=h.length+1,f=l[1];if(n.push({type:"inline-tag",content:f,range:qr.create(ai.create(r,a+d+i),ai.create(r,a+d+f.length+i))}),d+=f.length,l.length===4){d+=l[2].length;let p=l[3];n.push({type:"text",content:p,range:qr.create(ai.create(r,a+d+i),ai.create(r,a+d+p.length+i))})}else n.push({type:"text",content:"",range:qr.create(ai.create(r,a+d+i),ai.create(r,a+d+i))});a=u+l[0].length}let s=t.substring(a);s.length>0&&n.push({type:"text",content:s,range:qr.create(ai.create(r,a+i),ai.create(r,a+i+s.length))})}return n}function V5(e,t){let r=e.substring(t).match(Tvt);return r?t+r.index:e.length}function $3e(e){let t=e.match(Cvt);if(t&&typeof t.index=="number")return t.index}function z3e(e){let t=ai.create(e.position.line,e.position.character);if(e.tokens.length===0)return new $ye([],qr.create(t,t));let r=[];for(;e.index<e.tokens.length;){let a=G3e(e,r[r.length-1]);a&&r.push(a)}let i=r[0]?.range.start??t,n=r[r.length-1]?.range.end??t;return new $ye(r,qr.create(i,n))}function G3e(e,t){let r=e.tokens[e.index];if(r.type==="tag")return VG(e,!1);if(r.type==="text"||r.type==="inline-tag")return GG(e);V3e(r,t),e.index++}function V3e(e,t){if(t){let r=new H3e("",e.range);"inlines"in t?t.inlines.push(r):t.content.inlines.push(r)}}function GG(e){let t=e.tokens[e.index],r=t,i=t,n=[];for(;t&&t.type!=="break"&&t.type!=="tag";)n.push(W3e(e)),i=t,t=e.tokens[e.index];return new YF(n,qr.create(r.range.start,i.range.end))}function W3e(e){return e.tokens[e.index].type==="inline-tag"?VG(e,!0):WG(e)}function VG(e,t){let r=e.tokens[e.index++],i=r.content.substring(1);if(e.tokens[e.index]?.type==="text")if(t){let a=WG(e);return new tB(i,new YF([a],a.range),t,qr.create(r.range.start,a.range.end))}else{let a=GG(e);return new tB(i,a,t,qr.create(r.range.start,a.range.end))}else{let a=r.range;return new tB(i,new YF([],a),t,a)}}function WG(e){let t=e.tokens[e.index++];return new H3e(t.content,t.range)}function QA(e){if(!e)return QA({start:"/**",end:"*/",line:"*"});let{start:t,end:r,line:i}=e;return{start:JE(t,!0),end:JE(r,!1),line:JE(i,!0)}}function JE(e,t){if(typeof e=="string"||typeof e=="object"){let r=typeof e=="string"?sy(e):e.source;return t?new RegExp(`^\\s*${r}`):new RegExp(`\\s*${r}\\s*$`)}else return e}function q3e(e,t,r){if(e==="linkplain"||e==="linkcode"||e==="link"){let i=t.indexOf(" "),n=t;if(i>0){let s=V5(t,i);n=t.substring(s),t=t.substring(0,i)}return(e==="linkcode"||e==="link"&&r.link==="code")&&(n=`\`${n}\``),r.renderLink?.(t,n)??U3e(t,n)}}function U3e(e,t){try{return fo.parse(e,!0),`[${t}](${e})`}catch{return e}}function jF(e){return e.endsWith(`
+`;return n=n+`See: https://chevrotain.io/docs/guide/resolving_grammar_errors.html#AMBIGUOUS_ALTERNATIVES
+For Further details.`,n}function a_e(e){if(e instanceof Gs)return"SUBRULE";if(e instanceof Ua)return"OPTION";if(e instanceof ko)return"OR";if(e instanceof Zo)return"AT_LEAST_ONE";if(e instanceof Qo)return"AT_LEAST_ONE_SEP";if(e instanceof wo)return"MANY_SEP";if(e instanceof Mi)return"MANY";if(e instanceof ci)return"CONSUME";throw Error("non exhaustive match")}function s_e(e,t,r){let n=JSt(t.configs.elements,a=>a.state.transitions),i=dEt(n.filter(a=>a instanceof Qq).map(a=>a.tokenType),a=>a.tokenTypeIdx);return{actualToken:r,possibleTokenTypes:i,tokenPath:e}}function o_e(e,t){return e.edges[t.tokenTypeIdx]}function l_e(e,t,r){let n=new YG,i=[];for(let s of e.elements){if(r.is(s.alt)===!1)continue;if(s.state.type===Dw){i.push(s);continue}let l=s.state.transitions.length;for(let u=0;u<l;u++){let h=s.state.transitions[u],d=c_e(h,t);d!==void 0&&n.add({state:d,alt:s.alt,stack:s.stack})}}let a;if(i.length===0&&n.size===1&&(a=n),a===void 0){a=new YG;for(let s of n.elements)lw(s,a)}if(i.length>0&&!f_e(a))for(let s of i)a.add(s);return a}function c_e(e,t){if(e instanceof Qq&&Iq(t,e.tokenType))return e.target}function u_e(e,t){let r;for(let n of e.elements)if(t.is(n.alt)===!0){if(r===void 0)r=n.alt;else if(r!==n.alt)return}return r}function aH(e){return{configs:e,edges:{},isAcceptState:!1,prediction:-1}}function XG(e,t,r,n){return n=sH(e,n),t.edges[r.tokenTypeIdx]=n,n}function sH(e,t){if(t===iR)return t;let r=t.configs.key,n=e.states[r];return n!==void 0?n:(t.configs.finalize(),e.states[r]=t,t)}function h_e(e){let t=new YG,r=e.transitions.length;for(let n=0;n<r;n++){let a={state:e.transitions[n].target,alt:n,stack:[]};lw(a,t)}return t}function lw(e,t){let r=e.state;if(r.type===Dw){if(e.stack.length>0){let i=[...e.stack],s={state:i.pop(),alt:e.alt,stack:i};lw(s,t)}else t.add(e);return}r.epsilonOnlyTransitions||t.add(e);let n=r.transitions.length;for(let i=0;i<n;i++){let a=r.transitions[i],s=d_e(e,a);s!==void 0&&lw(s,t)}}function d_e(e,t){if(t instanceof pRe)return{state:t.target,alt:e.alt,stack:e.stack};if(t instanceof Jq){let r=[...e.stack,t.followState];return{state:t.target,alt:e.alt,stack:r}}}function f_e(e){for(let t of e.elements)if(t.state.type===Dw)return!0;return!1}function p_e(e){for(let t of e.elements)if(t.state.type!==Dw)return!1;return!0}function m_e(e){if(p_e(e))return!0;let t=g_e(e.elements);return y_e(t)&&!v_e(t)}function g_e(e){let t=new Map;for(let r of e){let n=nH(r,!1),i=t.get(n);i===void 0&&(i={},t.set(n,i)),i[r.alt]=!0}return t}function y_e(e){for(let t of Array.from(e.values()))if(Object.keys(t).length>1)return!0;return!1}function v_e(e){for(let t of Array.from(e.values()))if(Object.keys(t).length===1)return!0;return!1}function m6(e){return e.$type===sR}function p_(e,t,r){return E_e({parser:t,tokens:r,ruleNames:new Map},e),t}function E_e(e,t){let r=_R(t,!1),n=Bn(t.rules).filter(zs).filter(a=>r.has(a));for(let a of n){let s={...e,consume:1,optional:1,subrule:1,many:1,or:1};e.parser.rule(a,gp(s,a.definition))}let i=Bn(t.rules).filter(Sv).filter(a=>r.has(a));for(let a of i)e.parser.rule(a,A_e(e,a))}function A_e(e,t){let r=t.call.rule.ref;if(!r)throw new Error("Could not resolve reference to infix operator rule: "+t.call.rule.$refText);if(Il(r))throw new Error("Cannot use terminal rule in infix expression");let n=t.operators.precedences.flatMap(m=>m.operators),i={$type:"Group",elements:[]},a={$container:i,$type:"Assignment",feature:"parts",operator:"+=",terminal:t.call},s={$container:i,$type:"Group",elements:[],cardinality:"*"};i.elements.push(a,s);let u={$container:s,$type:"Assignment",feature:"operators",operator:"+=",terminal:{$type:"Alternatives",elements:n}},h={...a,$container:s};s.elements.push(u,h);let f=n.map(m=>e.tokens[m.value]).map((m,g)=>({ALT:E(()=>e.parser.consume(g,m,u),"ALT")})),p;return m=>{p??(p=m_(e,r)),e.parser.subrule(0,p,!1,a,m),e.parser.many(0,{DEF:E(()=>{e.parser.alternatives(0,f),e.parser.subrule(1,p,!1,h,m)},"DEF")})}}function gp(e,t,r=!1){let n;if(Yh(t))n=N_e(e,t);else if(dp(t))n=R_e(e,t);else if(Uh(t))n=gp(e,t.terminal);else if(r0(t))n=hH(e,t);else if(jh(t))n=__e(e,t);else if(bR(t))n=D_e(e,t);else if(kR(t))n=I_e(e,t);else if(n0(t))n=M_e(e,t);else if(pW(t)){let i=e.consume++;n=E(()=>e.parser.consume(i,pp,t),"method")}else throw new ER(t.$cstNode,`Unexpected element type: ${t.$type}`);return dH(e,r?void 0:cw(t),n,t.cardinality)}function R_e(e,t){let r=jg(t);return()=>e.parser.action(r,t)}function __e(e,t){let r=t.rule.ref;if(t0(r)){let n=e.subrule++,i=zs(r)&&r.fragment,a=t.arguments.length>0?L_e(r,t.arguments):()=>({}),s;return l=>{s??(s=m_(e,r)),e.parser.subrule(n,s,i,t,a(l))}}else if(Il(r)){let n=e.consume++,i=oR(e,r.name);return()=>e.parser.consume(n,i,t)}else if(r)vp(r);else throw new ER(t.$cstNode,`Undefined rule: ${t.rule.$refText}`)}function L_e(e,t){if(t.some(n=>n.calledByName)){let n=t.map(i=>({parameterName:i.parameter?.ref?.name,predicate:Cc(i.value)}));return i=>{let a={};for(let{parameterName:s,predicate:l}of n)s&&(a[s]=l(i));return a}}else{let n=t.map(i=>Cc(i.value));return i=>{let a={};for(let s=0;s<n.length;s++)if(s<e.parameters.length){let l=e.parameters[s].name,u=n[s];a[l]=u(i)}return a}}}function Cc(e){if(fW(e)){let t=Cc(e.left),r=Cc(e.right);return n=>t(n)||r(n)}else if(dW(e)){let t=Cc(e.left),r=Cc(e.right);return n=>t(n)&&r(n)}else if(yW(e)){let t=Cc(e.value);return r=>!t(r)}else if(vW(e)){let t=e.parameter.ref.name;return r=>r!==void 0&&r[t]===!0}else if(uW(e)){let t=!!e.true;return()=>t}vp(e)}function D_e(e,t){if(t.elements.length===1)return gp(e,t.elements[0]);{let r=[];for(let i of t.elements){let a={ALT:gp(e,i,!0)},s=cw(i);s&&(a.GATE=Cc(s)),r.push(a)}let n=e.or++;return i=>e.parser.alternatives(n,r.map(a=>{let s={ALT:E(()=>a.ALT(i),"ALT")},l=a.GATE;return l&&(s.GATE=()=>l(i)),s}))}}function I_e(e,t){if(t.elements.length===1)return gp(e,t.elements[0]);let r=[];for(let l of t.elements){let u={ALT:gp(e,l,!0)},h=cw(l);h&&(u.GATE=Cc(h)),r.push(u)}let n=e.or++,i=E((l,u)=>{let h=u.getRuleStack().join("-");return`uGroup_${l}_${h}`},"idFunc"),a=E(l=>e.parser.alternatives(n,r.map((u,h)=>{let d={ALT:E(()=>!0,"ALT")},f=e.parser;d.ALT=()=>{if(u.ALT(l),!f.isRecording()){let m=i(n,f);f.unorderedGroups.get(m)||f.unorderedGroups.set(m,[]);let g=f.unorderedGroups.get(m);typeof g?.[h]>"u"&&(g[h]=!0)}};let p=u.GATE;return p?d.GATE=()=>p(l):d.GATE=()=>!f.unorderedGroups.get(i(n,f))?.[h],d})),"alternatives"),s=dH(e,cw(t),a,"*");return l=>{s(l),e.parser.isRecording()||e.parser.unorderedGroups.delete(i(n,e.parser))}}function M_e(e,t){let r=t.elements.map(n=>gp(e,n));return n=>r.forEach(i=>i(n))}function cw(e){if(n0(e))return e.guardCondition}function hH(e,t,r=t.terminal){if(r)if(jh(r)&&zs(r.rule.ref)){let n=r.rule.ref,i=e.subrule++,a;return s=>{a??(a=m_(e,n)),e.parser.subrule(i,a,!1,t,s)}}else if(jh(r)&&Il(r.rule.ref)){let n=e.consume++,i=oR(e,r.rule.ref.name);return()=>e.parser.consume(n,i,t)}else if(Yh(r)){let n=e.consume++,i=oR(e,r.value);return()=>e.parser.consume(n,i,t)}else throw new Error("Could not build cross reference parser");else{if(!t.type.ref)throw new Error("Could not resolve reference to type: "+t.type.$refText);let i=MR(t.type.ref)?.terminal;if(!i)throw new Error("Could not find name assignment for type: "+jg(t.type.ref));return hH(e,t,i)}}function N_e(e,t){let r=e.consume++,n=e.tokens[t.value];if(!n)throw new Error("Could not find token for keyword: "+t.value);return()=>e.parser.consume(r,n,t)}function dH(e,t,r,n){let i=t&&Cc(t);if(!n)if(i){let a=e.or++;return s=>e.parser.alternatives(a,[{ALT:E(()=>r(s),"ALT"),GATE:E(()=>i(s),"GATE")},{ALT:VG(),GATE:E(()=>!i(s),"GATE")}])}else return r;if(n==="*"){let a=e.many++;return s=>e.parser.many(a,{DEF:E(()=>r(s),"DEF"),GATE:i?()=>i(s):void 0})}else if(n==="+"){let a=e.many++;if(i){let s=e.or++;return l=>e.parser.alternatives(s,[{ALT:E(()=>e.parser.atLeastOne(a,{DEF:E(()=>r(l),"DEF")}),"ALT"),GATE:E(()=>i(l),"GATE")},{ALT:VG(),GATE:E(()=>!i(l),"GATE")}])}else return s=>e.parser.atLeastOne(a,{DEF:E(()=>r(s),"DEF")})}else if(n==="?"){let a=e.optional++;return s=>e.parser.optional(a,{DEF:E(()=>r(s),"DEF"),GATE:i?()=>i(s):void 0})}else vp(n)}function m_(e,t){let r=P_e(e,t),n=e.parser.getRule(r);if(!n)throw new Error(`Rule "${r}" not found."`);return n}function P_e(e,t){if(t0(t))return t.name;if(e.ruleNames.has(t))return e.ruleNames.get(t);{let r=t,n=r.$container,i=t.$type;for(;!zs(n);)(n0(n)||bR(n)||kR(n))&&(i=n.elements.indexOf(r).toString()+":"+i),r=n,n=n.$container;return i=n.name+":"+i,e.ruleNames.set(t,i),i}}function oR(e,t){let r=e.tokens[t];if(!r)throw new Error(`Token "${t}" not found."`);return r}function fH(e){let t=e.Grammar,r=e.parser.Lexer,n=new k_e(e);return p_(t,n,r.definition),n.finalize(),n}function pH(e){let t=mH(e);return t.finalize(),t}function mH(e){let t=e.Grammar,r=e.parser.Lexer,n=new C_e(e);return p_(t,n,r.definition)}function y_(){return new Promise(e=>{typeof setImmediate>"u"?setTimeout(e,0):setImmediate(e)})}function v_(){return g6=performance.now(),new Jn.CancellationTokenSource}function yH(e){O_e=e}function v0(e){return e===Pu}async function Ia(e){if(e===Jn.CancellationToken.None)return;let t=performance.now();if(t-g6>=O_e&&(g6=t,await y_(),g6=performance.now()),e.isCancellationRequested)throw Pu}function cR(e,t){if(e.length<=1)return e;let r=e.length/2|0,n=e.slice(0,r),i=e.slice(r);cR(n,t),cR(i,t);let a=0,s=0,l=0;for(;a<n.length&&s<i.length;)t(n[a],i[s])<=0?e[l++]=n[a++]:e[l++]=i[s++];for(;a<n.length;)e[l++]=n[a++];for(;s<i.length;)e[l++]=i[s++];return e}function ZG(e,t,r=0){let n=t?[r]:[];for(let i=0;i<e.length;i++){let a=e.charCodeAt(i);vH(a)&&(a===13&&i+1<e.length&&e.charCodeAt(i+1)===10&&i++,n.push(r+i+1))}return n}function vH(e){return e===13||e===10}function xH(e){let t=e.start,r=e.end;return t.line>r.line||t.line===r.line&&t.character>r.character?{start:r,end:t}:e}function B_e(e){let t=xH(e.range);return t!==e.range?{newText:e.newText,range:t}:e}function TH(e){return typeof e.name=="string"}function kH(e){return typeof e.$comment=="string"}function JG(e){return typeof e=="object"&&!!e&&("$ref"in e||"$error"in e)}function qg(e){return{code:e}}function SH(e){if(e.range)return e.range;let t;return typeof e.property=="string"?t=LR(e.node.$cstNode,e.property,e.index):typeof e.keyword=="string"&&(t=jW(e.node.$cstNode,e.keyword,e.index)),t??(t=e.node.$cstNode),t?t.range:{start:{line:0,character:0},end:{line:0,character:0}}}function WC(e){switch(e){case"error":return 1;case"warning":return 2;case"info":return 3;case"hint":return 4;default:throw new Error("Invalid diagnostic severity: "+e)}}function EH(e){switch(e){case"error":return qg(Rl.LexingError);case"warning":return qg(Rl.LexingWarning);case"info":return qg(Rl.LexingInfo);case"hint":return qg(Rl.LexingHint);default:throw new Error("Invalid diagnostic severity: "+e)}}function C_(e){return Array.isArray(e)&&(e.length===0||"name"in e[0])}function w_(e){return e&&"modes"in e&&"defaultMode"in e}function dR(e){return!C_(e)&&!w_(e)}function _H(e,t,r){let n,i;typeof e=="string"?(i=t,n=r):(i=e.range.start,n=t),i||(i=En.create(0,0));let a=DH(e),s=k_(n),l=oLe({lines:a,position:i,options:s});return uLe({index:0,tokens:l,position:i})}function LH(e,t){let r=k_(t),n=DH(e);if(n.length===0)return!1;let i=n[0],a=n[n.length-1],s=r.start,l=r.end;return!!s?.exec(i)&&!!l?.exec(a)}function DH(e){let t="";return typeof e=="string"?t=e:t=e.text,t.split(cke)}function oLe(e){let t=[],r=e.position.line,n=e.position.character;for(let i=0;i<e.lines.length;i++){let a=i===0,s=i===e.lines.length-1,l=e.lines[i],u=0;if(a&&e.options.start){let d=e.options.start?.exec(l);d&&(u=d.index+d[0].length)}else{let d=e.options.line?.exec(l);d&&(u=d.index+d[0].length)}if(s){let d=e.options.end?.exec(l);d&&(l=l.substring(0,d.index))}if(l=l.substring(0,cLe(l)),fR(l,u)>=l.length){if(t.length>0){let d=En.create(r,n);t.push({type:"break",content:"",range:an.create(d,d)})}}else{iwe.lastIndex=u;let d=iwe.exec(l);if(d){let f=d[0],p=d[1],m=En.create(r,n+u),g=En.create(r,n+u+f.length);t.push({type:"tag",content:p,range:an.create(m,g)}),u+=f.length,u=fR(l,u)}if(u<l.length){let f=l.substring(u),p=Array.from(f.matchAll(_Et));t.push(...lLe(p,f,r,n+u))}}r++,n=0}return t.length>0&&t[t.length-1].type==="break"?t.slice(0,-1):t}function lLe(e,t,r,n){let i=[];if(e.length===0){let a=En.create(r,n),s=En.create(r,n+t.length);i.push({type:"text",content:t,range:an.create(a,s)})}else{let a=0;for(let l of e){let u=l.index,h=t.substring(a,u);h.length>0&&i.push({type:"text",content:t.substring(a,u),range:an.create(En.create(r,a+n),En.create(r,u+n))});let d=h.length+1,f=l[1];if(i.push({type:"inline-tag",content:f,range:an.create(En.create(r,a+d+n),En.create(r,a+d+f.length+n))}),d+=f.length,l.length===4){d+=l[2].length;let p=l[3];i.push({type:"text",content:p,range:an.create(En.create(r,a+d+n),En.create(r,a+d+p.length+n))})}else i.push({type:"text",content:"",range:an.create(En.create(r,a+d+n),En.create(r,a+d+n))});a=u+l[0].length}let s=t.substring(a);s.length>0&&i.push({type:"text",content:s,range:an.create(En.create(r,a+n),En.create(r,a+n+s.length))})}return i}function fR(e,t){let r=e.substring(t).match(LEt);return r?t+r.index:e.length}function cLe(e){let t=e.match(DEt);if(t&&typeof t.index=="number")return t.index}function uLe(e){let t=En.create(e.position.line,e.position.character);if(e.tokens.length===0)return new awe([],an.create(t,t));let r=[];for(;e.index<e.tokens.length;){let a=hLe(e,r[r.length-1]);a&&r.push(a)}let n=r[0]?.range.start??t,i=r[r.length-1]?.range.end??t;return new awe(r,an.create(n,i))}function hLe(e,t){let r=e.tokens[e.index];if(r.type==="tag")return MH(e,!1);if(r.type==="text"||r.type==="inline-tag")return IH(e);dLe(r,t),e.index++}function dLe(e,t){if(t){let r=new gLe("",e.range);"inlines"in t?t.inlines.push(r):t.content.inlines.push(r)}}function IH(e){let t=e.tokens[e.index],r=t,n=t,i=[];for(;t&&t.type!=="break"&&t.type!=="tag";)i.push(fLe(e)),n=t,t=e.tokens[e.index];return new eV(i,an.create(r.range.start,n.range.end))}function fLe(e){return e.tokens[e.index].type==="inline-tag"?MH(e,!0):NH(e)}function MH(e,t){let r=e.tokens[e.index++],n=r.content.substring(1);if(e.tokens[e.index]?.type==="text")if(t){let a=NH(e);return new lz(n,new eV([a],a.range),t,an.create(r.range.start,a.range.end))}else{let a=IH(e);return new lz(n,a,t,an.create(r.range.start,a.range.end))}else{let a=r.range;return new lz(n,new eV([],a),t,a)}}function NH(e){let t=e.tokens[e.index++];return new gLe(t.content,t.range)}function k_(e){if(!e)return k_({start:"/**",end:"*/",line:"*"});let{start:t,end:r,line:n}=e;return{start:y6(t,!0),end:y6(r,!1),line:y6(n,!0)}}function y6(e,t){if(typeof e=="string"||typeof e=="object"){let r=typeof e=="string"?Nv(e):e.source;return t?new RegExp(`^\\s*${r}`):new RegExp(`\\s*${r}\\s*$`)}else return e}function pLe(e,t,r){if(e==="linkplain"||e==="linkcode"||e==="link"){let n=t.indexOf(" "),i=t;if(n>0){let s=fR(t,n);i=t.substring(s),t=t.substring(0,n)}return(e==="linkcode"||e==="link"&&r.link==="code")&&(i=`\`${i}\``),r.renderLink?.(t,i)??mLe(t,i)}}function mLe(e,t){try{return Yo.parse(e,!0),`[${t}](${e})`}catch{return e}}function tV(e){return e.endsWith(`
 `)?`
 `:`
 
-`}function rn(e){return{documentation:{CommentProvider:S(t=>new j3e(t),"CommentProvider"),DocumentationProvider:S(t=>new Y3e(t),"DocumentationProvider")},parser:{AsyncParser:S(t=>new X3e(t),"AsyncParser"),GrammarConfig:S(t=>hz(t),"GrammarConfig"),LangiumParser:S(t=>kG(t),"LangiumParser"),CompletionParser:S(t=>CG(t),"CompletionParser"),ValueConverter:S(()=>new SG,"ValueConverter"),TokenBuilder:S(()=>new qA,"TokenBuilder"),Lexer:S(t=>new BG(t),"Lexer"),ParserErrorMessageProvider:S(()=>new xG,"ParserErrorMessageProvider"),LexerErrorMessageProvider:S(()=>new P3e,"LexerErrorMessageProvider")},workspace:{AstNodeLocator:S(()=>new L3e,"AstNodeLocator"),AstNodeDescriptionProvider:S(t=>new D3e(t),"AstNodeDescriptionProvider"),ReferenceDescriptionProvider:S(t=>new R3e(t),"ReferenceDescriptionProvider")},references:{Linker:S(t=>new y3e(t),"Linker"),NameProvider:S(()=>new v3e,"NameProvider"),ScopeProvider:S(t=>new k3e(t),"ScopeProvider"),ScopeComputation:S(t=>new b3e(t),"ScopeComputation"),References:S(t=>new x3e(t),"References")},serializer:{Hydrator:S(t=>new Z3e(t),"Hydrator"),JsonSerializer:S(t=>new w3e(t),"JsonSerializer")},validation:{DocumentValidator:S(t=>new _3e(t),"DocumentValidator"),ValidationRegistry:S(t=>new E3e(t),"ValidationRegistry")},shared:S(()=>e.shared,"shared")}}function nn(e){return{ServiceRegistry:S(t=>new S3e(t),"ServiceRegistry"),workspace:{LangiumDocuments:S(t=>new g3e(t),"LangiumDocuments"),LangiumDocumentFactory:S(t=>new m3e(t),"LangiumDocumentFactory"),DocumentBuilder:S(t=>new N3e(t),"DocumentBuilder"),IndexManager:S(t=>new I3e(t),"IndexManager"),WorkspaceManager:S(t=>new O3e(t),"WorkspaceManager"),FileSystemProvider:S(t=>e.fileSystemProvider(t),"FileSystemProvider"),WorkspaceLock:S(()=>new K3e,"WorkspaceLock"),ConfigurationProvider:S(t=>new M3e(t),"ConfigurationProvider")},profilers:{}}}function Hr(e,t,r,i,n,a,s,l,u){let h=[e,t,r,i,n,a,s,l,u].reduce(iy,{});return UG(h)}function qG(e){if(e&&e[Q3e])for(let t of Object.values(e))qG(t);return e}function UG(e,t){let r=new Proxy({},{deleteProperty:S(()=>!1,"deleteProperty"),set:S(()=>{throw new Error("Cannot set property on injected service container")},"set"),get:S((i,n)=>n===Q3e?!0:KF(i,n,e,t||r),"get"),getOwnPropertyDescriptor:S((i,n)=>(KF(i,n,e,t||r),Object.getOwnPropertyDescriptor(i,n)),"getOwnPropertyDescriptor"),has:S((i,n)=>n in e,"has"),ownKeys:S(()=>[...Object.getOwnPropertyNames(e)],"ownKeys")});return r}function KF(e,t,r,i){if(t in e){if(e[t]instanceof Error)throw new Error("Construction failure. Please make sure that your dependencies are constructable. Cause: "+e[t]);if(e[t]===zye)throw new Error('Cycle detected. Please make "'+String(t)+'" lazy. Visit https://langium.org/docs/reference/configuration-services/#resolving-cyclic-dependencies');return e[t]}else if(t in r){let n=r[t];e[t]=zye;try{e[t]=typeof n=="function"?n(i):UG(n,i)}catch(a){throw e[t]=a instanceof Error?a:void 0,a}return e[t]}else return}function iy(e,t){if(t){for(let[r,i]of Object.entries(t))if(i!=null)if(typeof i=="object"){let n=e[r];typeof n=="object"&&n!==null?e[r]=iy(n,i):e[r]=iy({},i)}else e[r]=i}return e}function tEe(){let e=Hr(nn(fn),Avt),t=Hr(rn({shared:e}),Evt);return e.ServiceRegistry.register(t),t}function xo(e){let t=tEe(),r=t.serializer.JsonSerializer.deserialize(e);return t.shared.workspace.LangiumDocumentFactory.fromModel(r,fo.parse(`memory:/${r.name??"grammar"}.langium`)),r}function iEe(e){return bo.isInstance(e,Yc.$type)}function nEe(e){return bo.isInstance(e,eT.$type)}function aEe(e){return bo.isInstance(e,_0.$type)}function sEe(e){return e==="rmo"||e==="readmodel"||e==="ui"||e==="cmd"||e==="command"||e==="evt"||e==="event"||e==="pcr"||e==="processor"}function JA(e){return bo.isInstance(e,ih.$type)}function oEe(e){return bo.isInstance(e,df.$type)}function lEe(e){return bo.isInstance(e,G1.$type)}function cEe(e){return bo.isInstance(e,D0.$type)}function uEe(e){return bo.isInstance(e,R0.$type)}function hEe(e){return bo.isInstance(e,L0.$type)}function dEe(e){return bo.isInstance(e,ff.$type)}function fEe(e){return bo.isInstance(e,tT.$type)}function pEe(e){return bo.isInstance(e,M0.$type)}function mEe(e){return bo.isInstance(e,oa.$type)}var dlt,xT,flt,l$,plt,mlt,S,glt,Lr,xf,t5,W5,c$,u$,q5,fB,NE,pB,A2,ai,qr,_2,mB,IE,gB,yB,vB,xB,OE,bB,TB,CB,D2,l0,qc,c0,ba,th,R2,E1,A1,_1,PE,v2,HP,tve,kB,wB,L2,SB,BE,D1,EB,AB,_B,DB,RB,LB,MB,NB,M2,IB,OB,PB,BB,FB,$B,zB,GB,VB,WB,qB,N2,UB,HB,YB,jB,XB,KB,ZB,QB,JB,eF,tF,rF,iF,FE,$E,nF,aF,sF,oF,lF,cF,uF,hF,rve,dF,m1e,Ze,bT,W0,TT,ny,U5,nve,sve,ylt,vlt,ove,xlt,blt,Tlt,Clt,fF,klt,ay,g1e,tn,h$,wlt,Slt,Elt,Alt,_lt,Dlt,Rlt,Llt,Mlt,Nlt,Ilt,Olt,Plt,Blt,Flt,$lt,zlt,Glt,Vlt,Wlt,qlt,Ult,Hlt,Ylt,jlt,uve,d$,p$,Kc,H1,as,Y1,iT,m$,fve,Xlt,zs,$2,N1,ho,of,z2,a5,s5,lf,o5,cf,uf,G2,hf,V2,l5,nh,c5,y0,u5,Hc,W2,h5,I1,O1,P1,v0,d5,f5,B1,p5,zl,q2,x0,m5,b0,F1,g5,T0,Gs,C0,ah,k0,U2,w0,S0,y5,H2,E0,A0,$1,P$,dr,Xc,z$,U$,eA,Y$,x5,b5,y1e,Klt,mE,Zlt,Bve,tA,Fve,$ve,Qlt,N0,Gve,uz,Jlt,exe,ect,tct,tu,rct,el,txe,ict,nct,x2,act,sct,oct,lct,cct,uct,v1e,Tf,Yl,hct,lA,AT,dct,Kr,fct,x1e,b1e,pct,mct,gct,yct,vct,tl,T1e,xct,bct,Tct,Cct,kct,C1e,wct,Sct,_T,J1,Ect,Act,_ct,Dct,vh,Rct,YP,k1e,Lct,Mct,Nct,K0,Ict,Oct,Pct,Bct,Fct,$ct,zct,Gct,Vct,Z0,Wct,gF,w1e,qct,Uct,Hct,Un,Yct,jct,Xct,Kct,Zct,Qct,Jct,C5,eut,tut,rut,iut,Axe,Dxe,nut,aut,fz,Ixe,sut,out,cA,pz,DT,lut,cut,uA,RT,S1e,uut,mz,hut,gz,ru,hA,dut,fut,LT,put,mut,E1e,Xxe,gut,yut,vut,dA,xut,Zxe,A1e,but,_1e,Tut,Cut,aT,kut,wut,Sut,Eut,Aut,_ut,Dut,Rut,Lut,Mut,Nut,Iut,Out,Put,But,Fut,$ut,zut,Gut,Vut,Wut,qut,Uut,Hut,Gi,Yut,MT,ebe,Y2,jut,jP,Xut,mf,D1e,Kut,yz,Zut,Qut,rbe,nbe,Jut,eht,tht,rht,sbe,po,iht,nht,aht,mo,sht,oht,lht,cht,fA,uht,hht,vz,dht,sT,fht,pht,mht,ght,yht,vht,xht,bht,Tht,Cht,kht,R1e,wht,pA,Sht,Eht,Aht,_ht,Dht,Rht,mA,Lht,oT,Mht,Nht,gA,Iht,Oht,Pht,Bht,yA,Fht,$ht,zht,Ght,Vht,Wht,qht,Uht,Hht,xA,Yht,NT,xz,jht,bz,L1e,Xht,Cz,Ul,Kht,$be,Gbe,Zht,Qht,Jht,edt,tdt,rdt,idt,j2,ndt,adt,Kbe,M1e,sdt,N1e,I1e,odt,kz,e2e,ldt,cdt,O1e,udt,wz,hdt,ddt,fdt,r2e,pdt,a2e,yF,l2e,mdt,vF,gdt,xF,ydt,W1,P1e,vdt,B1e,F1e,$1e,z1e,xdt,bdt,Tdt,Cdt,kdt,h0,ey,wdt,Sdt,Edt,Adt,k5,Sz,_dt,Ddt,Rdt,G1e,V1e,Ldt,Mdt,Ndt,Idt,Odt,Pdt,Bdt,Fdt,$dt,zdt,Gdt,Vdt,Wdt,qdt,Udt,Hdt,Ydt,jdt,Xdt,Kdt,Zdt,Qdt,Jdt,eft,tft,W1e,rft,ift,nft,aft,q1e,sft,oft,lft,cft,uft,x2e,hft,dft,fft,pft,b2e,mft,gft,yft,T2e,vft,xft,bft,Tft,Cft,kft,wft,Sft,Eft,Aft,_ft,Dft,Rft,Lft,Mft,Nft,Ni,Ift,Oft,ka,IT,Pft,Bft,Fft,Ez,A2e,Az,$ft,zft,R2e,Gft,_z,Vft,Wft,qft,Uft,Hft,Yft,jft,Xft,Kft,Zft,Qft,Jft,ept,U1e,XP,tpt,rpt,ipt,npt,apt,spt,H1e,Y1e,gE,opt,j1e,lpt,P2e,cpt,upt,hpt,$2e,dpt,V2e,fpt,ppt,H2e,mpt,gpt,ypt,vpt,xpt,bpt,Tpt,iu,Cpt,kpt,wpt,Spt,Ept,Apt,_pt,rm,Dpt,Rpt,aTe,Lpt,Mpt,Rz,X1e,lTe,Npt,Ipt,Opt,bA,z0,Ta,cT,Ppt,vr,Bpt,Fpt,Hl,xTe,il,$pt,zpt,Gpt,Vpt,ty,jl,Wpt,nr,Jo,qpt,Upt,Hpt,Ypt,jpt,Xpt,Kpt,mr,Zpt,Vs,Qpt,Hn,Jpt,fs,e0t,K1e,t0t,r0t,i0t,n0t,Oi,a0t,s0t,Z1e,o0t,hh,dh,l0t,c0t,u0t,h0t,Xl,d0t,go,TA,f0t,HTe,p0t,m0t,g0t,y0t,v0t,Lz,nu,us,oy,Ws,Ca,yo,vo,hn,qs,Us,Wi,ly,CA,iCe,x0t,WE,b0t,oCe,S5,T0t,G0,P2,yE,uCe,C0t,k0t,w0t,B2,UE,Q1e,NCe,SF,dn,F2,ls,S0t,J1e,eye,tye,rye,iye,nye,aye,sye,gf,z1,E0t,I0,A0t,_0t,D0t,wA,R0t,oye,L0t,lye,en,M0t,jCe,N0t,Yz,I0t,dke,fke,pke,mke,gke,EA,yke,O0t,P0t,B0t,KP,vke,F0t,$0t,z0t,Cf,G0t,bke,Tke,_F,DF,RF,YE,_wr,jz,V0t,W0t,vE,q0t,NF,U0t,H0t,Y0t,j0t,X0t,K0t,AA,cye,uye,Rke,Lke,Z0t,Q0t,J0t,R5,ph,L5,hs,Kz,emt,Pke,tmt,$ke,_A,rmt,imt,nmt,amt,smt,omt,DA,lmt,cmt,umt,hmt,dmt,Xke,fmt,pmt,xh,mmt,eu,Kke,gmt,ymt,b2,vmt,xmt,bmt,Tmt,Cmt,kmt,hye,dy,Zz,wmt,Smt,Emt,Amt,rwe,_mt,ZP,dye,Dmt,Rmt,Lmt,nm,Mmt,Nmt,Imt,Omt,Pmt,Bmt,Fmt,$mt,zmt,fy,Gmt,pT,Vmt,mT,Wmt,qmt,Umt,Hmt,Ymt,jmt,Xmt,Kmt,Zmt,Qmt,Jmt,fye,egt,tgt,RA,rgt,igt,ngt,agt,LA,sgt,ogt,XE,lgt,cgt,ugt,kwe,hgt,Ewe,dgt,fgt,_we,pgt,pye,mgt,Qz,ggt,ygt,vgt,xgt,bgt,Tgt,Cgt,kgt,wgt,Sgt,Egt,Agt,_gt,mye,QP,Dgt,Nwe,Rgt,ds,Lgt,Pwe,Mgt,Ngt,Igt,gye,Ogt,Pgt,Bgt,ry,Fgt,yye,Gwe,$gt,zgt,Ggt,MA,Vgt,Wwe,vye,Wgt,xye,qgt,Ugt,M5,Hgt,Ygt,Uwe,jgt,Jz,Xgt,Kgt,Zgt,Qgt,Jgt,e1t,t1t,r1t,i1t,n1t,a1t,s1t,o1t,l1t,c1t,u1t,h1t,d1t,f1t,p1t,m1t,g1t,y1t,v1t,Vi,x1t,b1t,Xwe,Q2,T1t,JP,C1t,bye,Tye,k1t,eG,w1t,S1t,E1t,A1t,Qwe,_1t,D1t,R1t,L1t,M1t,t4e,NA,tG,Cye,N1t,I1t,O1t,P1t,B1t,PF,F1t,BF,$1t,U1,z1t,FF,kye,G1t,wye,Sye,Eye,Aye,V1t,W1t,q1t,U1t,H1t,d0,$F,Y1t,_ye,Dye,xE,j1t,Rye,X1t,o4e,K1t,Z1t,Q1t,u4e,J1t,f4e,eyt,tyt,IA,ryt,iyt,iG,nyt,ayt,syt,oyt,lyt,cyt,uyt,hyt,dyt,Lye,Mye,fyt,pyt,b4e,myt,PA,k4e,gyt,yyt,vyt,xyt,byt,Tyt,Cyt,aG,kyt,wyt,Syt,BA,Eyt,Ayt,_yt,Dyt,Ryt,Lyt,FA,Myt,sh,Nyt,Iyt,yf,Oyt,G4e,V4e,$T,Pyt,Byt,Fyt,$yt,W4e,sG,oG,q4e,lG,N5,zF,zyt,Gyt,Vyt,Nye,Wyt,cSe,qyt,Uyt,Hyt,Yyt,jyt,Xyt,Kyt,Zyt,Qyt,Jyt,evt,tvt,rvt,ivt,nvt,avt,svt,eB,ovt,lvt,cvt,uvt,hvt,dvt,fvt,Iye,DSe,Oye,pvt,XSe,gG,I5,GA,mvt,yG,O5,Pye,ZSe,vG,QSe,JSe,xG,e3e,gvt,t3e,yvt,qA,SG,jc,Ii,QE,d3e,Zc,mh,Bye,B5,p3e,fo,T2,os,DG,zr,m3e,g3e,f0,y3e,v3e,x3e,gh,$5,b3e,UF,vvt,T3e,xvt,YA,LG,jA,C3e,MG,k3e,w3e,S3e,z5,E3e,A3e,_3e,Qo,D3e,R3e,L3e,XA,M3e,bE,F0,N3e,I3e,O3e,P3e,PG,BG,Fye,bvt,Tvt,Cvt,$ye,tB,YF,H3e,Y3e,j3e,X3e,kvt,wvt,K3e,Z3e,XF,Q3e,zye,ZF,P0,J3e,Svt,HG,eEe,fn,Evt,Avt,_vt,rEe,QF,JF,e$,t$,r$,i$,n$,a$,s$,o$,Dwr,TE,CE,C2,rB,Yc,kE,eT,Gye,wE,iB,_0,SE,s0,EE,AE,Vye,w1,Wc,p0,af,k2,Wye,nB,_E,ih,nf,aB,Uc,qye,DE,sB,df,w2,G1,S2,oB,E2,RE,o0,D0,LE,lB,R0,L0,ff,tT,cB,ME,sf,uB,S1,hB,m0,M0,dB,e5,M1,oa,gEe,bo,Uye,Dvt,Hye,Rvt,Yye,Lvt,jye,Mvt,Xye,Nvt,Kye,Ivt,Zye,Ovt,Qye,Pvt,Jye,Bvt,eve,Fvt,$vt,zvt,Gvt,Vvt,Wvt,qvt,Uvt,Hvt,Yvt,jvt,xn,YG,jG,XG,KG,ZG,QG,JG,eV,tV,rV,Xvt,Kvt,Zvt,Qvt,nl,Kl,Ln,Jvt,pn=z(()=>{"use strict";dlt=Object.create,xT=Object.defineProperty,flt=Object.getOwnPropertyDescriptor,l$=Object.getOwnPropertyNames,plt=Object.getPrototypeOf,mlt=Object.prototype.hasOwnProperty,S=o((e,t)=>xT(e,"name",{value:t,configurable:!0}),"__name"),glt=o((e,t)=>o(function(){return e&&(t=(0,e[l$(e)[0]])(e=0)),t},"__init"),"__esm"),Lr=o((e,t)=>o(function(){return t||(0,e[l$(e)[0]])((t={exports:{}}).exports,t),t.exports},"__require"),"__commonJS"),xf=o((e,t)=>{for(var r in t)xT(e,r,{get:t[r],enumerable:!0})},"__export"),t5=o((e,t,r,i)=>{if(t&&typeof t=="object"||typeof t=="function")for(let n of l$(t))!mlt.call(e,n)&&n!==r&&xT(e,n,{get:o(()=>t[n],"get"),enumerable:!(i=flt(t,n))||i.enumerable});return e},"__copyProps"),W5=o((e,t,r)=>(t5(e,t,"default"),r&&t5(r,t,"default")),"__reExport"),c$=o((e,t,r)=>(r=e!=null?dlt(plt(e)):{},t5(t||!e||!e.__esModule?xT(r,"default",{value:e,enumerable:!0}):r,e)),"__toESM"),u$=o(e=>t5(xT({},"__esModule",{value:!0}),e),"__toCommonJS"),q5={};xf(q5,{AnnotatedTextEdit:o(()=>th,"AnnotatedTextEdit"),ChangeAnnotation:o(()=>c0,"ChangeAnnotation"),ChangeAnnotationIdentifier:o(()=>ba,"ChangeAnnotationIdentifier"),CodeAction:o(()=>HB,"CodeAction"),CodeActionContext:o(()=>UB,"CodeActionContext"),CodeActionKind:o(()=>qB,"CodeActionKind"),CodeActionTriggerKind:o(()=>N2,"CodeActionTriggerKind"),CodeDescription:o(()=>CB,"CodeDescription"),CodeLens:o(()=>YB,"CodeLens"),Color:o(()=>IE,"Color"),ColorInformation:o(()=>gB,"ColorInformation"),ColorPresentation:o(()=>yB,"ColorPresentation"),Command:o(()=>l0,"Command"),CompletionItem:o(()=>MB,"CompletionItem"),CompletionItemKind:o(()=>EB,"CompletionItemKind"),CompletionItemLabelDetails:o(()=>LB,"CompletionItemLabelDetails"),CompletionItemTag:o(()=>_B,"CompletionItemTag"),CompletionList:o(()=>NB,"CompletionList"),CreateFile:o(()=>E1,"CreateFile"),DeleteFile:o(()=>_1,"DeleteFile"),Diagnostic:o(()=>D2,"Diagnostic"),DiagnosticRelatedInformation:o(()=>OE,"DiagnosticRelatedInformation"),DiagnosticSeverity:o(()=>bB,"DiagnosticSeverity"),DiagnosticTag:o(()=>TB,"DiagnosticTag"),DocumentHighlight:o(()=>FB,"DocumentHighlight"),DocumentHighlightKind:o(()=>BB,"DocumentHighlightKind"),DocumentLink:o(()=>XB,"DocumentLink"),DocumentSymbol:o(()=>WB,"DocumentSymbol"),DocumentUri:o(()=>fB,"DocumentUri"),EOL:o(()=>rve,"EOL"),FoldingRange:o(()=>xB,"FoldingRange"),FoldingRangeKind:o(()=>vB,"FoldingRangeKind"),FormattingOptions:o(()=>jB,"FormattingOptions"),Hover:o(()=>IB,"Hover"),InlayHint:o(()=>nF,"InlayHint"),InlayHintKind:o(()=>FE,"InlayHintKind"),InlayHintLabelPart:o(()=>$E,"InlayHintLabelPart"),InlineCompletionContext:o(()=>uF,"InlineCompletionContext"),InlineCompletionItem:o(()=>sF,"InlineCompletionItem"),InlineCompletionList:o(()=>oF,"InlineCompletionList"),InlineCompletionTriggerKind:o(()=>lF,"InlineCompletionTriggerKind"),InlineValueContext:o(()=>iF,"InlineValueContext"),InlineValueEvaluatableExpression:o(()=>rF,"InlineValueEvaluatableExpression"),InlineValueText:o(()=>eF,"InlineValueText"),InlineValueVariableLookup:o(()=>tF,"InlineValueVariableLookup"),InsertReplaceEdit:o(()=>DB,"InsertReplaceEdit"),InsertTextFormat:o(()=>AB,"InsertTextFormat"),InsertTextMode:o(()=>RB,"InsertTextMode"),Location:o(()=>_2,"Location"),LocationLink:o(()=>mB,"LocationLink"),MarkedString:o(()=>M2,"MarkedString"),MarkupContent:o(()=>D1,"MarkupContent"),MarkupKind:o(()=>BE,"MarkupKind"),OptionalVersionedTextDocumentIdentifier:o(()=>L2,"OptionalVersionedTextDocumentIdentifier"),ParameterInformation:o(()=>OB,"ParameterInformation"),Position:o(()=>ai,"Position"),Range:o(()=>qr,"Range"),RenameFile:o(()=>A1,"RenameFile"),SelectedCompletionInfo:o(()=>cF,"SelectedCompletionInfo"),SelectionRange:o(()=>KB,"SelectionRange"),SemanticTokenModifiers:o(()=>QB,"SemanticTokenModifiers"),SemanticTokenTypes:o(()=>ZB,"SemanticTokenTypes"),SemanticTokens:o(()=>JB,"SemanticTokens"),SignatureInformation:o(()=>PB,"SignatureInformation"),StringValue:o(()=>aF,"StringValue"),SymbolInformation:o(()=>GB,"SymbolInformation"),SymbolKind:o(()=>$B,"SymbolKind"),SymbolTag:o(()=>zB,"SymbolTag"),TextDocument:o(()=>dF,"TextDocument"),TextDocumentEdit:o(()=>R2,"TextDocumentEdit"),TextDocumentIdentifier:o(()=>kB,"TextDocumentIdentifier"),TextDocumentItem:o(()=>SB,"TextDocumentItem"),TextEdit:o(()=>qc,"TextEdit"),URI:o(()=>NE,"URI"),VersionedTextDocumentIdentifier:o(()=>wB,"VersionedTextDocumentIdentifier"),WorkspaceChange:o(()=>tve,"WorkspaceChange"),WorkspaceEdit:o(()=>PE,"WorkspaceEdit"),WorkspaceFolder:o(()=>hF,"WorkspaceFolder"),WorkspaceSymbol:o(()=>VB,"WorkspaceSymbol"),integer:o(()=>pB,"integer"),uinteger:o(()=>A2,"uinteger")});bT=glt({"../../node_modules/.pnpm/vscode-languageserver-types@3.17.5/node_modules/vscode-languageserver-types/lib/esm/main.js"(){"use strict";(function(e){function t(r){return typeof r=="string"}o(t,"is"),S(t,"is"),e.is=t})(fB||(fB={})),(function(e){function t(r){return typeof r=="string"}o(t,"is"),S(t,"is"),e.is=t})(NE||(NE={})),(function(e){e.MIN_VALUE=-2147483648,e.MAX_VALUE=2147483647;function t(r){return typeof r=="number"&&e.MIN_VALUE<=r&&r<=e.MAX_VALUE}o(t,"is"),S(t,"is"),e.is=t})(pB||(pB={})),(function(e){e.MIN_VALUE=0,e.MAX_VALUE=2147483647;function t(r){return typeof r=="number"&&e.MIN_VALUE<=r&&r<=e.MAX_VALUE}o(t,"is"),S(t,"is"),e.is=t})(A2||(A2={})),(function(e){function t(i,n){return i===Number.MAX_VALUE&&(i=A2.MAX_VALUE),n===Number.MAX_VALUE&&(n=A2.MAX_VALUE),{line:i,character:n}}o(t,"create"),S(t,"create"),e.create=t;function r(i){let n=i;return Ze.objectLiteral(n)&&Ze.uinteger(n.line)&&Ze.uinteger(n.character)}o(r,"is"),S(r,"is"),e.is=r})(ai||(ai={})),(function(e){function t(i,n,a,s){if(Ze.uinteger(i)&&Ze.uinteger(n)&&Ze.uinteger(a)&&Ze.uinteger(s))return{start:ai.create(i,n),end:ai.create(a,s)};if(ai.is(i)&&ai.is(n))return{start:i,end:n};throw new Error(`Range#create called with invalid arguments[${i}, ${n}, ${a}, ${s}]`)}o(t,"create"),S(t,"create"),e.create=t;function r(i){let n=i;return Ze.objectLiteral(n)&&ai.is(n.start)&&ai.is(n.end)}o(r,"is"),S(r,"is"),e.is=r})(qr||(qr={})),(function(e){function t(i,n){return{uri:i,range:n}}o(t,"create"),S(t,"create"),e.create=t;function r(i){let n=i;return Ze.objectLiteral(n)&&qr.is(n.range)&&(Ze.string(n.uri)||Ze.undefined(n.uri))}o(r,"is"),S(r,"is"),e.is=r})(_2||(_2={})),(function(e){function t(i,n,a,s){return{targetUri:i,targetRange:n,targetSelectionRange:a,originSelectionRange:s}}o(t,"create"),S(t,"create"),e.create=t;function r(i){let n=i;return Ze.objectLiteral(n)&&qr.is(n.targetRange)&&Ze.string(n.targetUri)&&qr.is(n.targetSelectionRange)&&(qr.is(n.originSelectionRange)||Ze.undefined(n.originSelectionRange))}o(r,"is"),S(r,"is"),e.is=r})(mB||(mB={})),(function(e){function t(i,n,a,s){return{red:i,green:n,blue:a,alpha:s}}o(t,"create"),S(t,"create"),e.create=t;function r(i){let n=i;return Ze.objectLiteral(n)&&Ze.numberRange(n.red,0,1)&&Ze.numberRange(n.green,0,1)&&Ze.numberRange(n.blue,0,1)&&Ze.numberRange(n.alpha,0,1)}o(r,"is"),S(r,"is"),e.is=r})(IE||(IE={})),(function(e){function t(i,n){return{range:i,color:n}}o(t,"create"),S(t,"create"),e.create=t;function r(i){let n=i;return Ze.objectLiteral(n)&&qr.is(n.range)&&IE.is(n.color)}o(r,"is"),S(r,"is"),e.is=r})(gB||(gB={})),(function(e){function t(i,n,a){return{label:i,textEdit:n,additionalTextEdits:a}}o(t,"create"),S(t,"create"),e.create=t;function r(i){let n=i;return Ze.objectLiteral(n)&&Ze.string(n.label)&&(Ze.undefined(n.textEdit)||qc.is(n))&&(Ze.undefined(n.additionalTextEdits)||Ze.typedArray(n.additionalTextEdits,qc.is))}o(r,"is"),S(r,"is"),e.is=r})(yB||(yB={})),(function(e){e.Comment="comment",e.Imports="imports",e.Region="region"})(vB||(vB={})),(function(e){function t(i,n,a,s,l,u){let h={startLine:i,endLine:n};return Ze.defined(a)&&(h.startCharacter=a),Ze.defined(s)&&(h.endCharacter=s),Ze.defined(l)&&(h.kind=l),Ze.defined(u)&&(h.collapsedText=u),h}o(t,"create"),S(t,"create"),e.create=t;function r(i){let n=i;return Ze.objectLiteral(n)&&Ze.uinteger(n.startLine)&&Ze.uinteger(n.startLine)&&(Ze.undefined(n.startCharacter)||Ze.uinteger(n.startCharacter))&&(Ze.undefined(n.endCharacter)||Ze.uinteger(n.endCharacter))&&(Ze.undefined(n.kind)||Ze.string(n.kind))}o(r,"is"),S(r,"is"),e.is=r})(xB||(xB={})),(function(e){function t(i,n){return{location:i,message:n}}o(t,"create"),S(t,"create"),e.create=t;function r(i){let n=i;return Ze.defined(n)&&_2.is(n.location)&&Ze.string(n.message)}o(r,"is"),S(r,"is"),e.is=r})(OE||(OE={})),(function(e){e.Error=1,e.Warning=2,e.Information=3,e.Hint=4})(bB||(bB={})),(function(e){e.Unnecessary=1,e.Deprecated=2})(TB||(TB={})),(function(e){function t(r){let i=r;return Ze.objectLiteral(i)&&Ze.string(i.href)}o(t,"is"),S(t,"is"),e.is=t})(CB||(CB={})),(function(e){function t(i,n,a,s,l,u){let h={range:i,message:n};return Ze.defined(a)&&(h.severity=a),Ze.defined(s)&&(h.code=s),Ze.defined(l)&&(h.source=l),Ze.defined(u)&&(h.relatedInformation=u),h}o(t,"create"),S(t,"create"),e.create=t;function r(i){var n;let a=i;return Ze.defined(a)&&qr.is(a.range)&&Ze.string(a.message)&&(Ze.number(a.severity)||Ze.undefined(a.severity))&&(Ze.integer(a.code)||Ze.string(a.code)||Ze.undefined(a.code))&&(Ze.undefined(a.codeDescription)||Ze.string((n=a.codeDescription)===null||n===void 0?void 0:n.href))&&(Ze.string(a.source)||Ze.undefined(a.source))&&(Ze.undefined(a.relatedInformation)||Ze.typedArray(a.relatedInformation,OE.is))}o(r,"is"),S(r,"is"),e.is=r})(D2||(D2={})),(function(e){function t(i,n,...a){let s={title:i,command:n};return Ze.defined(a)&&a.length>0&&(s.arguments=a),s}o(t,"create"),S(t,"create"),e.create=t;function r(i){let n=i;return Ze.defined(n)&&Ze.string(n.title)&&Ze.string(n.command)}o(r,"is"),S(r,"is"),e.is=r})(l0||(l0={})),(function(e){function t(a,s){return{range:a,newText:s}}o(t,"replace"),S(t,"replace"),e.replace=t;function r(a,s){return{range:{start:a,end:a},newText:s}}o(r,"insert"),S(r,"insert"),e.insert=r;function i(a){return{range:a,newText:""}}o(i,"del"),S(i,"del"),e.del=i;function n(a){let s=a;return Ze.objectLiteral(s)&&Ze.string(s.newText)&&qr.is(s.range)}o(n,"is"),S(n,"is"),e.is=n})(qc||(qc={})),(function(e){function t(i,n,a){let s={label:i};return n!==void 0&&(s.needsConfirmation=n),a!==void 0&&(s.description=a),s}o(t,"create"),S(t,"create"),e.create=t;function r(i){let n=i;return Ze.objectLiteral(n)&&Ze.string(n.label)&&(Ze.boolean(n.needsConfirmation)||n.needsConfirmation===void 0)&&(Ze.string(n.description)||n.description===void 0)}o(r,"is"),S(r,"is"),e.is=r})(c0||(c0={})),(function(e){function t(r){let i=r;return Ze.string(i)}o(t,"is"),S(t,"is"),e.is=t})(ba||(ba={})),(function(e){function t(a,s,l){return{range:a,newText:s,annotationId:l}}o(t,"replace"),S(t,"replace"),e.replace=t;function r(a,s,l){return{range:{start:a,end:a},newText:s,annotationId:l}}o(r,"insert"),S(r,"insert"),e.insert=r;function i(a,s){return{range:a,newText:"",annotationId:s}}o(i,"del"),S(i,"del"),e.del=i;function n(a){let s=a;return qc.is(s)&&(c0.is(s.annotationId)||ba.is(s.annotationId))}o(n,"is"),S(n,"is"),e.is=n})(th||(th={})),(function(e){function t(i,n){return{textDocument:i,edits:n}}o(t,"create"),S(t,"create"),e.create=t;function r(i){let n=i;return Ze.defined(n)&&L2.is(n.textDocument)&&Array.isArray(n.edits)}o(r,"is"),S(r,"is"),e.is=r})(R2||(R2={})),(function(e){function t(i,n,a){let s={kind:"create",uri:i};return n!==void 0&&(n.overwrite!==void 0||n.ignoreIfExists!==void 0)&&(s.options=n),a!==void 0&&(s.annotationId=a),s}o(t,"create"),S(t,"create"),e.create=t;function r(i){let n=i;return n&&n.kind==="create"&&Ze.string(n.uri)&&(n.options===void 0||(n.options.overwrite===void 0||Ze.boolean(n.options.overwrite))&&(n.options.ignoreIfExists===void 0||Ze.boolean(n.options.ignoreIfExists)))&&(n.annotationId===void 0||ba.is(n.annotationId))}o(r,"is"),S(r,"is"),e.is=r})(E1||(E1={})),(function(e){function t(i,n,a,s){let l={kind:"rename",oldUri:i,newUri:n};return a!==void 0&&(a.overwrite!==void 0||a.ignoreIfExists!==void 0)&&(l.options=a),s!==void 0&&(l.annotationId=s),l}o(t,"create"),S(t,"create"),e.create=t;function r(i){let n=i;return n&&n.kind==="rename"&&Ze.string(n.oldUri)&&Ze.string(n.newUri)&&(n.options===void 0||(n.options.overwrite===void 0||Ze.boolean(n.options.overwrite))&&(n.options.ignoreIfExists===void 0||Ze.boolean(n.options.ignoreIfExists)))&&(n.annotationId===void 0||ba.is(n.annotationId))}o(r,"is"),S(r,"is"),e.is=r})(A1||(A1={})),(function(e){function t(i,n,a){let s={kind:"delete",uri:i};return n!==void 0&&(n.recursive!==void 0||n.ignoreIfNotExists!==void 0)&&(s.options=n),a!==void 0&&(s.annotationId=a),s}o(t,"create"),S(t,"create"),e.create=t;function r(i){let n=i;return n&&n.kind==="delete"&&Ze.string(n.uri)&&(n.options===void 0||(n.options.recursive===void 0||Ze.boolean(n.options.recursive))&&(n.options.ignoreIfNotExists===void 0||Ze.boolean(n.options.ignoreIfNotExists)))&&(n.annotationId===void 0||ba.is(n.annotationId))}o(r,"is"),S(r,"is"),e.is=r})(_1||(_1={})),(function(e){function t(r){let i=r;return i&&(i.changes!==void 0||i.documentChanges!==void 0)&&(i.documentChanges===void 0||i.documentChanges.every(n=>Ze.string(n.kind)?E1.is(n)||A1.is(n)||_1.is(n):R2.is(n)))}o(t,"is"),S(t,"is"),e.is=t})(PE||(PE={})),v2=class{static{o(this,"TextEditChangeImpl")}static{S(this,"TextEditChangeImpl")}constructor(e,t){this.edits=e,this.changeAnnotations=t}insert(e,t,r){let i,n;if(r===void 0?i=qc.insert(e,t):ba.is(r)?(n=r,i=th.insert(e,t,r)):(this.assertChangeAnnotations(this.changeAnnotations),n=this.changeAnnotations.manage(r),i=th.insert(e,t,n)),this.edits.push(i),n!==void 0)return n}replace(e,t,r){let i,n;if(r===void 0?i=qc.replace(e,t):ba.is(r)?(n=r,i=th.replace(e,t,r)):(this.assertChangeAnnotations(this.changeAnnotations),n=this.changeAnnotations.manage(r),i=th.replace(e,t,n)),this.edits.push(i),n!==void 0)return n}delete(e,t){let r,i;if(t===void 0?r=qc.del(e):ba.is(t)?(i=t,r=th.del(e,t)):(this.assertChangeAnnotations(this.changeAnnotations),i=this.changeAnnotations.manage(t),r=th.del(e,i)),this.edits.push(r),i!==void 0)return i}add(e){this.edits.push(e)}all(){return this.edits}clear(){this.edits.splice(0,this.edits.length)}assertChangeAnnotations(e){if(e===void 0)throw new Error("Text edit change is not configured to manage change annotations.")}},HP=class{static{o(this,"ChangeAnnotations")}static{S(this,"ChangeAnnotations")}constructor(e){this._annotations=e===void 0?Object.create(null):e,this._counter=0,this._size=0}all(){return this._annotations}get size(){return this._size}manage(e,t){let r;if(ba.is(e)?r=e:(r=this.nextId(),t=e),this._annotations[r]!==void 0)throw new Error(`Id ${r} is already in use.`);if(t===void 0)throw new Error(`No annotation provided for id ${r}`);return this._annotations[r]=t,this._size++,r}nextId(){return this._counter++,this._counter.toString()}},tve=class{static{o(this,"WorkspaceChange")}static{S(this,"WorkspaceChange")}constructor(e){this._textEditChanges=Object.create(null),e!==void 0?(this._workspaceEdit=e,e.documentChanges?(this._changeAnnotations=new HP(e.changeAnnotations),e.changeAnnotations=this._changeAnnotations.all(),e.documentChanges.forEach(t=>{if(R2.is(t)){let r=new v2(t.edits,this._changeAnnotations);this._textEditChanges[t.textDocument.uri]=r}})):e.changes&&Object.keys(e.changes).forEach(t=>{let r=new v2(e.changes[t]);this._textEditChanges[t]=r})):this._workspaceEdit={}}get edit(){return this.initDocumentChanges(),this._changeAnnotations!==void 0&&(this._changeAnnotations.size===0?this._workspaceEdit.changeAnnotations=void 0:this._workspaceEdit.changeAnnotations=this._changeAnnotations.all()),this._workspaceEdit}getTextEditChange(e){if(L2.is(e)){if(this.initDocumentChanges(),this._workspaceEdit.documentChanges===void 0)throw new Error("Workspace edit is not configured for document changes.");let t={uri:e.uri,version:e.version},r=this._textEditChanges[t.uri];if(!r){let i=[],n={textDocument:t,edits:i};this._workspaceEdit.documentChanges.push(n),r=new v2(i,this._changeAnnotations),this._textEditChanges[t.uri]=r}return r}else{if(this.initChanges(),this._workspaceEdit.changes===void 0)throw new Error("Workspace edit is not configured for normal text edit changes.");let t=this._textEditChanges[e];if(!t){let r=[];this._workspaceEdit.changes[e]=r,t=new v2(r),this._textEditChanges[e]=t}return t}}initDocumentChanges(){this._workspaceEdit.documentChanges===void 0&&this._workspaceEdit.changes===void 0&&(this._changeAnnotations=new HP,this._workspaceEdit.documentChanges=[],this._workspaceEdit.changeAnnotations=this._changeAnnotations.all())}initChanges(){this._workspaceEdit.documentChanges===void 0&&this._workspaceEdit.changes===void 0&&(this._workspaceEdit.changes=Object.create(null))}createFile(e,t,r){if(this.initDocumentChanges(),this._workspaceEdit.documentChanges===void 0)throw new Error("Workspace edit is not configured for document changes.");let i;c0.is(t)||ba.is(t)?i=t:r=t;let n,a;if(i===void 0?n=E1.create(e,r):(a=ba.is(i)?i:this._changeAnnotations.manage(i),n=E1.create(e,r,a)),this._workspaceEdit.documentChanges.push(n),a!==void 0)return a}renameFile(e,t,r,i){if(this.initDocumentChanges(),this._workspaceEdit.documentChanges===void 0)throw new Error("Workspace edit is not configured for document changes.");let n;c0.is(r)||ba.is(r)?n=r:i=r;let a,s;if(n===void 0?a=A1.create(e,t,i):(s=ba.is(n)?n:this._changeAnnotations.manage(n),a=A1.create(e,t,i,s)),this._workspaceEdit.documentChanges.push(a),s!==void 0)return s}deleteFile(e,t,r){if(this.initDocumentChanges(),this._workspaceEdit.documentChanges===void 0)throw new Error("Workspace edit is not configured for document changes.");let i;c0.is(t)||ba.is(t)?i=t:r=t;let n,a;if(i===void 0?n=_1.create(e,r):(a=ba.is(i)?i:this._changeAnnotations.manage(i),n=_1.create(e,r,a)),this._workspaceEdit.documentChanges.push(n),a!==void 0)return a}},(function(e){function t(i){return{uri:i}}o(t,"create"),S(t,"create"),e.create=t;function r(i){let n=i;return Ze.defined(n)&&Ze.string(n.uri)}o(r,"is"),S(r,"is"),e.is=r})(kB||(kB={})),(function(e){function t(i,n){return{uri:i,version:n}}o(t,"create"),S(t,"create"),e.create=t;function r(i){let n=i;return Ze.defined(n)&&Ze.string(n.uri)&&Ze.integer(n.version)}o(r,"is"),S(r,"is"),e.is=r})(wB||(wB={})),(function(e){function t(i,n){return{uri:i,version:n}}o(t,"create"),S(t,"create"),e.create=t;function r(i){let n=i;return Ze.defined(n)&&Ze.string(n.uri)&&(n.version===null||Ze.integer(n.version))}o(r,"is"),S(r,"is"),e.is=r})(L2||(L2={})),(function(e){function t(i,n,a,s){return{uri:i,languageId:n,version:a,text:s}}o(t,"create"),S(t,"create"),e.create=t;function r(i){let n=i;return Ze.defined(n)&&Ze.string(n.uri)&&Ze.string(n.languageId)&&Ze.integer(n.version)&&Ze.string(n.text)}o(r,"is"),S(r,"is"),e.is=r})(SB||(SB={})),(function(e){e.PlainText="plaintext",e.Markdown="markdown";function t(r){let i=r;return i===e.PlainText||i===e.Markdown}o(t,"is"),S(t,"is"),e.is=t})(BE||(BE={})),(function(e){function t(r){let i=r;return Ze.objectLiteral(r)&&BE.is(i.kind)&&Ze.string(i.value)}o(t,"is"),S(t,"is"),e.is=t})(D1||(D1={})),(function(e){e.Text=1,e.Method=2,e.Function=3,e.Constructor=4,e.Field=5,e.Variable=6,e.Class=7,e.Interface=8,e.Module=9,e.Property=10,e.Unit=11,e.Value=12,e.Enum=13,e.Keyword=14,e.Snippet=15,e.Color=16,e.File=17,e.Reference=18,e.Folder=19,e.EnumMember=20,e.Constant=21,e.Struct=22,e.Event=23,e.Operator=24,e.TypeParameter=25})(EB||(EB={})),(function(e){e.PlainText=1,e.Snippet=2})(AB||(AB={})),(function(e){e.Deprecated=1})(_B||(_B={})),(function(e){function t(i,n,a){return{newText:i,insert:n,replace:a}}o(t,"create"),S(t,"create"),e.create=t;function r(i){let n=i;return n&&Ze.string(n.newText)&&qr.is(n.insert)&&qr.is(n.replace)}o(r,"is"),S(r,"is"),e.is=r})(DB||(DB={})),(function(e){e.asIs=1,e.adjustIndentation=2})(RB||(RB={})),(function(e){function t(r){let i=r;return i&&(Ze.string(i.detail)||i.detail===void 0)&&(Ze.string(i.description)||i.description===void 0)}o(t,"is"),S(t,"is"),e.is=t})(LB||(LB={})),(function(e){function t(r){return{label:r}}o(t,"create"),S(t,"create"),e.create=t})(MB||(MB={})),(function(e){function t(r,i){return{items:r||[],isIncomplete:!!i}}o(t,"create"),S(t,"create"),e.create=t})(NB||(NB={})),(function(e){function t(i){return i.replace(/[\\`*_{}[\]()#+\-.!]/g,"\\$&")}o(t,"fromPlainText"),S(t,"fromPlainText"),e.fromPlainText=t;function r(i){let n=i;return Ze.string(n)||Ze.objectLiteral(n)&&Ze.string(n.language)&&Ze.string(n.value)}o(r,"is"),S(r,"is"),e.is=r})(M2||(M2={})),(function(e){function t(r){let i=r;return!!i&&Ze.objectLiteral(i)&&(D1.is(i.contents)||M2.is(i.contents)||Ze.typedArray(i.contents,M2.is))&&(r.range===void 0||qr.is(r.range))}o(t,"is"),S(t,"is"),e.is=t})(IB||(IB={})),(function(e){function t(r,i){return i?{label:r,documentation:i}:{label:r}}o(t,"create"),S(t,"create"),e.create=t})(OB||(OB={})),(function(e){function t(r,i,...n){let a={label:r};return Ze.defined(i)&&(a.documentation=i),Ze.defined(n)?a.parameters=n:a.parameters=[],a}o(t,"create"),S(t,"create"),e.create=t})(PB||(PB={})),(function(e){e.Text=1,e.Read=2,e.Write=3})(BB||(BB={})),(function(e){function t(r,i){let n={range:r};return Ze.number(i)&&(n.kind=i),n}o(t,"create"),S(t,"create"),e.create=t})(FB||(FB={})),(function(e){e.File=1,e.Module=2,e.Namespace=3,e.Package=4,e.Class=5,e.Method=6,e.Property=7,e.Field=8,e.Constructor=9,e.Enum=10,e.Interface=11,e.Function=12,e.Variable=13,e.Constant=14,e.String=15,e.Number=16,e.Boolean=17,e.Array=18,e.Object=19,e.Key=20,e.Null=21,e.EnumMember=22,e.Struct=23,e.Event=24,e.Operator=25,e.TypeParameter=26})($B||($B={})),(function(e){e.Deprecated=1})(zB||(zB={})),(function(e){function t(r,i,n,a,s){let l={name:r,kind:i,location:{uri:a,range:n}};return s&&(l.containerName=s),l}o(t,"create"),S(t,"create"),e.create=t})(GB||(GB={})),(function(e){function t(r,i,n,a){return a!==void 0?{name:r,kind:i,location:{uri:n,range:a}}:{name:r,kind:i,location:{uri:n}}}o(t,"create"),S(t,"create"),e.create=t})(VB||(VB={})),(function(e){function t(i,n,a,s,l,u){let h={name:i,detail:n,kind:a,range:s,selectionRange:l};return u!==void 0&&(h.children=u),h}o(t,"create"),S(t,"create"),e.create=t;function r(i){let n=i;return n&&Ze.string(n.name)&&Ze.number(n.kind)&&qr.is(n.range)&&qr.is(n.selectionRange)&&(n.detail===void 0||Ze.string(n.detail))&&(n.deprecated===void 0||Ze.boolean(n.deprecated))&&(n.children===void 0||Array.isArray(n.children))&&(n.tags===void 0||Array.isArray(n.tags))}o(r,"is"),S(r,"is"),e.is=r})(WB||(WB={})),(function(e){e.Empty="",e.QuickFix="quickfix",e.Refactor="refactor",e.RefactorExtract="refactor.extract",e.RefactorInline="refactor.inline",e.RefactorRewrite="refactor.rewrite",e.Source="source",e.SourceOrganizeImports="source.organizeImports",e.SourceFixAll="source.fixAll"})(qB||(qB={})),(function(e){e.Invoked=1,e.Automatic=2})(N2||(N2={})),(function(e){function t(i,n,a){let s={diagnostics:i};return n!=null&&(s.only=n),a!=null&&(s.triggerKind=a),s}o(t,"create"),S(t,"create"),e.create=t;function r(i){let n=i;return Ze.defined(n)&&Ze.typedArray(n.diagnostics,D2.is)&&(n.only===void 0||Ze.typedArray(n.only,Ze.string))&&(n.triggerKind===void 0||n.triggerKind===N2.Invoked||n.triggerKind===N2.Automatic)}o(r,"is"),S(r,"is"),e.is=r})(UB||(UB={})),(function(e){function t(i,n,a){let s={title:i},l=!0;return typeof n=="string"?(l=!1,s.kind=n):l0.is(n)?s.command=n:s.edit=n,l&&a!==void 0&&(s.kind=a),s}o(t,"create"),S(t,"create"),e.create=t;function r(i){let n=i;return n&&Ze.string(n.title)&&(n.diagnostics===void 0||Ze.typedArray(n.diagnostics,D2.is))&&(n.kind===void 0||Ze.string(n.kind))&&(n.edit!==void 0||n.command!==void 0)&&(n.command===void 0||l0.is(n.command))&&(n.isPreferred===void 0||Ze.boolean(n.isPreferred))&&(n.edit===void 0||PE.is(n.edit))}o(r,"is"),S(r,"is"),e.is=r})(HB||(HB={})),(function(e){function t(i,n){let a={range:i};return Ze.defined(n)&&(a.data=n),a}o(t,"create"),S(t,"create"),e.create=t;function r(i){let n=i;return Ze.defined(n)&&qr.is(n.range)&&(Ze.undefined(n.command)||l0.is(n.command))}o(r,"is"),S(r,"is"),e.is=r})(YB||(YB={})),(function(e){function t(i,n){return{tabSize:i,insertSpaces:n}}o(t,"create"),S(t,"create"),e.create=t;function r(i){let n=i;return Ze.defined(n)&&Ze.uinteger(n.tabSize)&&Ze.boolean(n.insertSpaces)}o(r,"is"),S(r,"is"),e.is=r})(jB||(jB={})),(function(e){function t(i,n,a){return{range:i,target:n,data:a}}o(t,"create"),S(t,"create"),e.create=t;function r(i){let n=i;return Ze.defined(n)&&qr.is(n.range)&&(Ze.undefined(n.target)||Ze.string(n.target))}o(r,"is"),S(r,"is"),e.is=r})(XB||(XB={})),(function(e){function t(i,n){return{range:i,parent:n}}o(t,"create"),S(t,"create"),e.create=t;function r(i){let n=i;return Ze.objectLiteral(n)&&qr.is(n.range)&&(n.parent===void 0||e.is(n.parent))}o(r,"is"),S(r,"is"),e.is=r})(KB||(KB={})),(function(e){e.namespace="namespace",e.type="type",e.class="class",e.enum="enum",e.interface="interface",e.struct="struct",e.typeParameter="typeParameter",e.parameter="parameter",e.variable="variable",e.property="property",e.enumMember="enumMember",e.event="event",e.function="function",e.method="method",e.macro="macro",e.keyword="keyword",e.modifier="modifier",e.comment="comment",e.string="string",e.number="number",e.regexp="regexp",e.operator="operator",e.decorator="decorator"})(ZB||(ZB={})),(function(e){e.declaration="declaration",e.definition="definition",e.readonly="readonly",e.static="static",e.deprecated="deprecated",e.abstract="abstract",e.async="async",e.modification="modification",e.documentation="documentation",e.defaultLibrary="defaultLibrary"})(QB||(QB={})),(function(e){function t(r){let i=r;return Ze.objectLiteral(i)&&(i.resultId===void 0||typeof i.resultId=="string")&&Array.isArray(i.data)&&(i.data.length===0||typeof i.data[0]=="number")}o(t,"is"),S(t,"is"),e.is=t})(JB||(JB={})),(function(e){function t(i,n){return{range:i,text:n}}o(t,"create"),S(t,"create"),e.create=t;function r(i){let n=i;return n!=null&&qr.is(n.range)&&Ze.string(n.text)}o(r,"is"),S(r,"is"),e.is=r})(eF||(eF={})),(function(e){function t(i,n,a){return{range:i,variableName:n,caseSensitiveLookup:a}}o(t,"create"),S(t,"create"),e.create=t;function r(i){let n=i;return n!=null&&qr.is(n.range)&&Ze.boolean(n.caseSensitiveLookup)&&(Ze.string(n.variableName)||n.variableName===void 0)}o(r,"is"),S(r,"is"),e.is=r})(tF||(tF={})),(function(e){function t(i,n){return{range:i,expression:n}}o(t,"create"),S(t,"create"),e.create=t;function r(i){let n=i;return n!=null&&qr.is(n.range)&&(Ze.string(n.expression)||n.expression===void 0)}o(r,"is"),S(r,"is"),e.is=r})(rF||(rF={})),(function(e){function t(i,n){return{frameId:i,stoppedLocation:n}}o(t,"create"),S(t,"create"),e.create=t;function r(i){let n=i;return Ze.defined(n)&&qr.is(i.stoppedLocation)}o(r,"is"),S(r,"is"),e.is=r})(iF||(iF={})),(function(e){e.Type=1,e.Parameter=2;function t(r){return r===1||r===2}o(t,"is"),S(t,"is"),e.is=t})(FE||(FE={})),(function(e){function t(i){return{value:i}}o(t,"create"),S(t,"create"),e.create=t;function r(i){let n=i;return Ze.objectLiteral(n)&&(n.tooltip===void 0||Ze.string(n.tooltip)||D1.is(n.tooltip))&&(n.location===void 0||_2.is(n.location))&&(n.command===void 0||l0.is(n.command))}o(r,"is"),S(r,"is"),e.is=r})($E||($E={})),(function(e){function t(i,n,a){let s={position:i,label:n};return a!==void 0&&(s.kind=a),s}o(t,"create"),S(t,"create"),e.create=t;function r(i){let n=i;return Ze.objectLiteral(n)&&ai.is(n.position)&&(Ze.string(n.label)||Ze.typedArray(n.label,$E.is))&&(n.kind===void 0||FE.is(n.kind))&&n.textEdits===void 0||Ze.typedArray(n.textEdits,qc.is)&&(n.tooltip===void 0||Ze.string(n.tooltip)||D1.is(n.tooltip))&&(n.paddingLeft===void 0||Ze.boolean(n.paddingLeft))&&(n.paddingRight===void 0||Ze.boolean(n.paddingRight))}o(r,"is"),S(r,"is"),e.is=r})(nF||(nF={})),(function(e){function t(r){return{kind:"snippet",value:r}}o(t,"createSnippet"),S(t,"createSnippet"),e.createSnippet=t})(aF||(aF={})),(function(e){function t(r,i,n,a){return{insertText:r,filterText:i,range:n,command:a}}o(t,"create"),S(t,"create"),e.create=t})(sF||(sF={})),(function(e){function t(r){return{items:r}}o(t,"create"),S(t,"create"),e.create=t})(oF||(oF={})),(function(e){e.Invoked=0,e.Automatic=1})(lF||(lF={})),(function(e){function t(r,i){return{range:r,text:i}}o(t,"create"),S(t,"create"),e.create=t})(cF||(cF={})),(function(e){function t(r,i){return{triggerKind:r,selectedCompletionInfo:i}}o(t,"create"),S(t,"create"),e.create=t})(uF||(uF={})),(function(e){function t(r){let i=r;return Ze.objectLiteral(i)&&NE.is(i.uri)&&Ze.string(i.name)}o(t,"is"),S(t,"is"),e.is=t})(hF||(hF={})),rve=[`
+`}function hn(e){return{documentation:{CommentProvider:E(t=>new vLe(t),"CommentProvider"),DocumentationProvider:E(t=>new yLe(t),"DocumentationProvider")},parser:{AsyncParser:E(t=>new xLe(t),"AsyncParser"),GrammarConfig:E(t=>rq(t),"GrammarConfig"),LangiumParser:E(t=>pH(t),"LangiumParser"),CompletionParser:E(t=>fH(t),"CompletionParser"),ValueConverter:E(()=>new gH,"ValueConverter"),TokenBuilder:E(()=>new g_,"TokenBuilder"),Lexer:E(t=>new RH(t),"Lexer"),ParserErrorMessageProvider:E(()=>new uH,"ParserErrorMessageProvider"),LexerErrorMessageProvider:E(()=>new sLe,"LexerErrorMessageProvider")},workspace:{AstNodeLocator:E(()=>new tLe,"AstNodeLocator"),AstNodeDescriptionProvider:E(t=>new J_e(t),"AstNodeDescriptionProvider"),ReferenceDescriptionProvider:E(t=>new eLe(t),"ReferenceDescriptionProvider")},references:{Linker:E(t=>new G_e(t),"Linker"),NameProvider:E(()=>new V_e,"NameProvider"),ScopeProvider:E(t=>new Y_e(t),"ScopeProvider"),ScopeComputation:E(t=>new q_e(t),"ScopeComputation"),References:E(t=>new W_e(t),"References")},serializer:{Hydrator:E(t=>new TLe(t),"Hydrator"),JsonSerializer:E(t=>new j_e(t),"JsonSerializer")},validation:{DocumentValidator:E(t=>new Q_e(t),"DocumentValidator"),ValidationRegistry:E(t=>new K_e(t),"ValidationRegistry")},shared:E(()=>e.shared,"shared")}}function dn(e){return{ServiceRegistry:E(t=>new X_e(t),"ServiceRegistry"),workspace:{LangiumDocuments:E(t=>new z_e(t),"LangiumDocuments"),LangiumDocumentFactory:E(t=>new F_e(t),"LangiumDocumentFactory"),DocumentBuilder:E(t=>new nLe(t),"DocumentBuilder"),IndexManager:E(t=>new iLe(t),"IndexManager"),WorkspaceManager:E(t=>new aLe(t),"WorkspaceManager"),FileSystemProvider:E(t=>e.fileSystemProvider(t),"FileSystemProvider"),WorkspaceLock:E(()=>new bLe,"WorkspaceLock"),ConfigurationProvider:E(t=>new rLe(t),"ConfigurationProvider")},profilers:{}}}function Mr(e,t,r,n,i,a,s,l,u){let h=[e,t,r,n,i,a,s,l,u].reduce(Dv,{});return OH(h)}function PH(e){if(e&&e[CLe])for(let t of Object.values(e))PH(t);return e}function OH(e,t){let r=new Proxy({},{deleteProperty:E(()=>!1,"deleteProperty"),set:E(()=>{throw new Error("Cannot set property on injected service container")},"set"),get:E((n,i)=>i===CLe?!0:nV(n,i,e,t||r),"get"),getOwnPropertyDescriptor:E((n,i)=>(nV(n,i,e,t||r),Object.getOwnPropertyDescriptor(n,i)),"getOwnPropertyDescriptor"),has:E((n,i)=>i in e,"has"),ownKeys:E(()=>[...Object.getOwnPropertyNames(e)],"ownKeys")});return r}function nV(e,t,r,n){if(t in e){if(e[t]instanceof Error)throw new Error("Construction failure. Please make sure that your dependencies are constructable. Cause: "+e[t]);if(e[t]===swe)throw new Error('Cycle detected. Please make "'+String(t)+'" lazy. Visit https://langium.org/docs/reference/configuration-services/#resolving-cyclic-dependencies');return e[t]}else if(t in r){let i=r[t];e[t]=swe;try{e[t]=typeof i=="function"?i(n):OH(i,n)}catch(a){throw e[t]=a instanceof Error?a:void 0,a}return e[t]}else return}function Dv(e,t){if(t){for(let[r,n]of Object.entries(t))if(n!=null)if(typeof n=="object"){let i=e[r];typeof i=="object"&&i!==null?e[r]=Dv(i,n):e[r]=Dv({},n)}else e[r]=n}return e}function SLe(){let e=Mr(dn(yn),OEt),t=Mr(hn({shared:e}),PEt);return e.ServiceRegistry.register(t),t}function Ma(e){let t=SLe(),r=t.serializer.JsonSerializer.deserialize(e);return t.shared.workspace.LangiumDocumentFactory.fromModel(r,Yo.parse(`memory:/${r.name??"grammar"}.langium`)),r}function ALe(e){return Fi.isInstance(e,bc.$type)}function RLe(e){return Fi.isInstance(e,qC.$type)}function _Le(e){return Fi.isInstance(e,Mg.$type)}function LLe(e){return Fi.isInstance(e,cp.$type)}function DLe(e){return Fi.isInstance(e,HC.$type)}function ILe(e){return Fi.isInstance(e,pR.$type)}function MLe(e){return e==="rmo"||e==="readmodel"||e==="ui"||e==="cmd"||e==="command"||e==="evt"||e==="event"||e==="pcr"||e==="processor"}function S_(e){return Fi.isInstance(e,Gh.$type)}function NLe(e){return Fi.isInstance(e,up.$type)}function PLe(e){return Fi.isInstance(e,mv.$type)}function OLe(e){return Fi.isInstance(e,Ng.$type)}function BLe(e){return Fi.isInstance(e,Pg.$type)}function $Le(e){return Fi.isInstance(e,Og.$type)}function FLe(e){return Fi.isInstance(e,hp.$type)}function zLe(e){return Fi.isInstance(e,UC.$type)}function GLe(e){return Fi.isInstance(e,Bg.$type)}function VLe(e){return Fi.isInstance(e,$g.$type)}function WLe(e){return Fi.isInstance(e,Fg.$type)}function qLe(e){return Fi.isInstance(e,zg.$type)}function HLe(e){return Fi.isInstance(e,gv.$type)}function ULe(e){return Fi.isInstance(e,Gg.$type)}function YLe(e){return Fi.isInstance(e,La.$type)}var T0t,uw,C0t,JV,w0t,k0t,E,S0t,zr,yp,E6,mR,eW,tW,gR,Tz,ZA,Cz,yC,En,an,vC,wz,QA,kz,Sz,Ez,Az,JA,Rz,_z,Lz,xC,hg,Ru,dg,qa,Fh,bC,Q1,J1,ev,e6,lC,JF,Ewe,Dz,Iz,TC,Mz,t6,tv,Nz,Pz,Oz,Bz,$z,Fz,zz,Gz,CC,Vz,Wz,qz,Hz,Uz,Yz,jz,Xz,Kz,Zz,Qz,wC,Jz,eG,tG,rG,nG,iG,aG,sG,oG,lG,cG,uG,hG,r6,n6,dG,fG,pG,mG,gG,yG,vG,xG,Awe,bG,PTe,nt,hw,Qg,dw,Iv,yR,_we,Dwe,E0t,A0t,Iwe,R0t,_0t,L0t,D0t,TG,I0t,Mv,OTe,ki,rW,M0t,N0t,P0t,O0t,B0t,$0t,F0t,z0t,G0t,V0t,W0t,q0t,H0t,U0t,Y0t,j0t,X0t,K0t,Z0t,Q0t,J0t,eyt,tyt,ryt,nyt,Pwe,nW,aW,Nu,Tv,Os,Cv,jC,sW,$we,iyt,xo,_C,ov,Uo,ip,LC,L6,D6,ap,I6,sp,op,DC,lp,IC,M6,Vh,N6,Cg,P6,Du,MC,O6,lv,cv,uv,wg,B6,$6,hv,F6,xc,NC,kg,z6,Sg,dv,G6,Eg,bo,Ag,Wh,Rg,PC,_g,Lg,V6,OC,Dg,Ig,fv,AW,Tr,Mu,DW,OW,ER,$W,q6,H6,BTe,ayt,MA,syt,lke,AR,cke,uke,oyt,Vg,dke,tq,lyt,Ske,cyt,uyt,Fu,hyt,Ll,Eke,dyt,fyt,cC,pyt,myt,gyt,yyt,vyt,xyt,$Te,xp,Ac,byt,NR,vw,Tyt,un,Cyt,FTe,zTe,wyt,kyt,Syt,Eyt,Ayt,Dl,GTe,Ryt,_yt,Lyt,Dyt,Iyt,VTe,Myt,Nyt,xw,bw,Pyt,Oyt,Byt,$yt,rd,Fyt,ez,WTe,zyt,Gyt,Vyt,a0,Wyt,qyt,Hyt,Uyt,Yyt,jyt,Xyt,Kyt,Zyt,s0,Qyt,kG,qTe,Jyt,e1t,t1t,Da,r1t,n1t,i1t,a1t,s1t,o1t,l1t,Y6,c1t,u1t,h1t,d1t,Qke,eSe,f1t,p1t,iq,aSe,m1t,g1t,PR,aq,Tw,y1t,v1t,OR,Cw,HTe,x1t,sq,b1t,oq,zu,BR,T1t,C1t,ww,w1t,k1t,UTe,bSe,S1t,E1t,A1t,$R,R1t,CSe,YTe,_1t,jTe,L1t,D1t,KC,I1t,M1t,N1t,P1t,O1t,B1t,$1t,F1t,z1t,G1t,V1t,W1t,q1t,H1t,U1t,Y1t,j1t,X1t,K1t,Z1t,Q1t,J1t,evt,tvt,oi,rvt,kw,SSe,BC,nvt,tz,ivt,fp,XTe,avt,lq,svt,ovt,ASe,_Se,lvt,cvt,uvt,hvt,DSe,jo,dvt,fvt,pvt,Xo,mvt,gvt,yvt,vvt,FR,xvt,bvt,cq,Tvt,ZC,Cvt,wvt,kvt,Svt,Evt,Avt,Rvt,_vt,Lvt,Dvt,Ivt,KTe,Mvt,zR,Nvt,Pvt,Ovt,Bvt,$vt,Fvt,GR,zvt,QC,Gvt,Vvt,VR,Wvt,qvt,Hvt,Uvt,WR,Yvt,jvt,Xvt,Kvt,Zvt,Qvt,Jvt,ext,txt,HR,rxt,Sw,uq,nxt,hq,ZTe,ixt,fq,Sc,axt,uEe,dEe,sxt,oxt,lxt,cxt,uxt,hxt,dxt,$C,fxt,pxt,TEe,QTe,mxt,JTe,eCe,gxt,pq,SEe,yxt,vxt,tCe,xxt,mq,bxt,Txt,Cxt,AEe,wxt,LEe,SG,MEe,kxt,EG,Sxt,AG,Ext,vv,rCe,Axt,nCe,iCe,aCe,sCe,Rxt,_xt,Lxt,Dxt,Ixt,pg,Rv,Mxt,Nxt,Pxt,Oxt,j6,gq,Bxt,$xt,Fxt,oCe,lCe,zxt,Gxt,Vxt,Wxt,qxt,Hxt,Uxt,Yxt,jxt,Xxt,Kxt,Zxt,Qxt,Jxt,ebt,tbt,rbt,nbt,ibt,abt,sbt,obt,lbt,cbt,ubt,cCe,hbt,dbt,fbt,pbt,uCe,mbt,gbt,ybt,vbt,xbt,qEe,bbt,Tbt,Cbt,wbt,HEe,kbt,Sbt,Ebt,UEe,Abt,Rbt,_bt,Lbt,Dbt,Ibt,Mbt,Nbt,Pbt,Obt,Bbt,$bt,Fbt,zbt,Gbt,Vbt,Qn,Wbt,qbt,Ya,Ew,Hbt,Ubt,Ybt,yq,QEe,vq,jbt,Xbt,t4e,Kbt,xq,Zbt,Qbt,Jbt,e2t,t2t,r2t,n2t,i2t,a2t,s2t,o2t,l2t,c2t,hCe,rz,u2t,h2t,d2t,f2t,p2t,m2t,dCe,fCe,NA,g2t,pCe,y2t,o4e,v2t,x2t,b2t,u4e,T2t,f4e,C2t,w2t,y4e,k2t,S2t,E2t,A2t,R2t,_2t,L2t,Gu,D2t,I2t,M2t,N2t,P2t,O2t,B2t,h0,$2t,F2t,L4e,z2t,G2t,Tq,mCe,M4e,V2t,W2t,q2t,UR,Xg,Ha,ew,H2t,Ir,U2t,Y2t,Ec,q4e,Ml,j2t,X2t,K2t,Z2t,_v,Rc,Q2t,hr,_l,J2t,eTt,tTt,rTt,nTt,iTt,aTt,wr,sTt,To,oTt,ha,lTt,qs,cTt,gCe,uTt,hTt,dTt,fTt,ei,pTt,mTt,yCe,gTt,Xh,Kh,yTt,vTt,xTt,bTt,_c,TTt,Ko,YR,CTt,y3e,wTt,kTt,STt,ETt,ATt,Cq,Vu,Gs,Pv,Co,Ua,Zo,Qo,Mi,wo,ko,ci,Ov,jR,R3e,RTt,o6,_Tt,I3e,K6,LTt,Kg,EC,PA,DTt,ITt,MTt,AC,c6,vCe,n5e,IG,Ni,RC,Fs,NTt,xCe,bCe,TCe,CCe,wCe,kCe,SCe,ECe,pp,pv,PTt,Wg,OTt,BTt,$Tt,KR,FTt,ACe,zTt,RCe,wi,GTt,v5e,VTt,$q,WTt,O5e,B5e,$5e,F5e,z5e,QR,G5e,qTt,HTt,UTt,nz,V5e,YTt,jTt,XTt,bp,KTt,q5e,H5e,PG,OG,BG,h6,zIr,Fq,ZTt,QTt,OA,JTt,zG,eCt,tCt,rCt,nCt,iCt,aCt,JR,_Ce,LCe,eAe,tAe,sCt,oCt,lCt,tR,Qh,rR,Vs,Gq,cCt,sAe,uCt,cAe,e_,hCt,dCt,fCt,pCt,mCt,gCt,t_,yCt,vCt,xCt,bCt,TCt,xAe,CCt,wCt,nd,kCt,$u,bAe,SCt,ECt,uC,ACt,RCt,_Ct,LCt,DCt,ICt,DCe,zv,Vq,MCt,NCt,PCt,OCt,EAe,BCt,iz,ICe,$Ct,FCt,zCt,f0,GCt,VCt,WCt,qCt,HCt,UCt,YCt,jCt,XCt,Gv,KCt,aw,ZCt,sw,QCt,JCt,ewt,twt,rwt,nwt,iwt,awt,swt,owt,lwt,MCe,cwt,uwt,r_,hwt,dwt,fwt,pwt,n_,mwt,gwt,f6,ywt,vwt,xwt,YAe,bwt,KAe,Twt,Cwt,QAe,wwt,NCe,kwt,Wq,Swt,Ewt,Awt,Rwt,_wt,Lwt,Dwt,Iwt,Mwt,Nwt,Pwt,Owt,Bwt,PCe,az,$wt,n6e,Fwt,Ws,zwt,s6e,Gwt,Vwt,Wwt,OCe,qwt,Hwt,Uwt,Lv,Ywt,BCe,h6e,jwt,Xwt,Kwt,i_,Zwt,f6e,$Ce,Qwt,FCe,Jwt,ekt,nR,tkt,rkt,m6e,nkt,qq,ikt,akt,skt,okt,lkt,ckt,ukt,hkt,dkt,fkt,pkt,mkt,gkt,ykt,vkt,xkt,bkt,Tkt,Ckt,wkt,kkt,Skt,Ekt,Akt,li,Rkt,_kt,x6e,VC,Lkt,sz,Dkt,zCe,GCe,Ikt,Hq,Mkt,Nkt,Pkt,Okt,C6e,Bkt,$kt,Fkt,zkt,Gkt,S6e,a_,Uq,VCe,Vkt,Wkt,qkt,Hkt,Ukt,WG,Ykt,qG,jkt,bv,Xkt,HG,WCe,Kkt,qCe,HCe,UCe,YCe,Zkt,Qkt,Jkt,eSt,tSt,mg,UG,rSt,jCe,XCe,BA,nSt,KCe,iSt,D6e,aSt,sSt,oSt,N6e,lSt,B6e,cSt,uSt,s_,hSt,dSt,jq,fSt,pSt,mSt,gSt,ySt,vSt,xSt,bSt,TSt,ZCe,QCe,CSt,wSt,q6e,kSt,l_,Y6e,SSt,ESt,ASt,RSt,_St,LSt,DSt,Kq,ISt,MSt,NSt,c_,PSt,OSt,BSt,$St,FSt,zSt,u_,GSt,qh,VSt,WSt,mp,qSt,hRe,dRe,Dw,HSt,USt,YSt,jSt,fRe,Zq,Qq,pRe,Jq,iR,YG,XSt,KSt,ZSt,JCe,QSt,MRe,JSt,eEt,tEt,rEt,nEt,iEt,aEt,sEt,oEt,lEt,cEt,uEt,hEt,dEt,fEt,pEt,mEt,oz,gEt,yEt,vEt,xEt,bEt,TEt,CEt,ewe,JRe,twe,wEt,x_e,oH,aR,f_,kEt,lH,sR,rwe,T_e,cH,C_e,w_e,uH,k_e,SEt,S_e,EEt,g_,gH,Iu,Jn,g6,O_e,Pu,Jh,nwe,lR,$_e,Yo,hC,$s,bH,en,F_e,z_e,gg,G_e,V_e,W_e,ed,uR,q_e,QG,AEt,H_e,REt,x_,CH,b_,U_e,wH,Y_e,j_e,X_e,hR,K_e,Z_e,Q_e,Rl,J_e,eLe,tLe,T_,rLe,$A,Yg,nLe,iLe,aLe,sLe,AH,RH,iwe,_Et,LEt,DEt,awe,lz,eV,gLe,yLe,vLe,xLe,IEt,MEt,bLe,TLe,rV,CLe,swe,iV,Hg,wLe,NEt,BH,kLe,yn,PEt,OEt,BEt,ELe,aV,sV,oV,lV,cV,uV,hV,dV,fV,pV,mV,gV,yV,vV,xV,GIr,bV,TV,v6,CV,wV,kV,yg,x6,SV,EV,FA,cz,zA,dC,uz,bc,GA,qC,owe,VA,hz,Mg,WA,cg,qA,cp,HA,lwe,K1,HC,pR,AV,RV,_V,LV,DV,IV,MV,iv,tp,NV,b6,PV,OV,T6,BV,$V,Au,vg,rp,fC,cwe,dz,UA,Gh,ep,fz,_u,uwe,YA,pz,up,pC,mv,mC,mz,gC,jA,ug,Ng,XA,gz,Pg,Og,FV,zV,GV,VV,WV,C6,av,w6,qV,k6,hp,UC,yz,KA,np,Bg,$g,HV,Fg,Lu,UV,YV,jV,zg,S6,XV,KV,ZV,QV,vz,Z1,xz,xg,gv,Gg,bz,bg,sv,La,jLe,Fi,hwe,$Et,dwe,FEt,fwe,zEt,pwe,GEt,mwe,VEt,gwe,WEt,ywe,qEt,vwe,HEt,xwe,UEt,bwe,YEt,Twe,jEt,Cwe,XEt,wwe,KEt,kwe,ZEt,Swe,QEt,JEt,e4t,t4t,r4t,n4t,i4t,a4t,s4t,o4t,l4t,c4t,u4t,h4t,d4t,f4t,An,$H,FH,zH,GH,VH,WH,qH,HH,UH,YH,jH,XH,KH,ZH,QH,p4t,m4t,g4t,y4t,Qi,Jo,Mn,v4t,vn=F(()=>{"use strict";T0t=Object.create,uw=Object.defineProperty,C0t=Object.getOwnPropertyDescriptor,JV=Object.getOwnPropertyNames,w0t=Object.getPrototypeOf,k0t=Object.prototype.hasOwnProperty,E=o((e,t)=>uw(e,"name",{value:t,configurable:!0}),"__name"),S0t=o((e,t)=>o(function(){return e&&(t=(0,e[JV(e)[0]])(e=0)),t},"__init"),"__esm"),zr=o((e,t)=>o(function(){return t||(0,e[JV(e)[0]])((t={exports:{}}).exports,t),t.exports},"__require"),"__commonJS"),yp=o((e,t)=>{for(var r in t)uw(e,r,{get:t[r],enumerable:!0})},"__export"),E6=o((e,t,r,n)=>{if(t&&typeof t=="object"||typeof t=="function")for(let i of JV(t))!k0t.call(e,i)&&i!==r&&uw(e,i,{get:o(()=>t[i],"get"),enumerable:!(n=C0t(t,i))||n.enumerable});return e},"__copyProps"),mR=o((e,t,r)=>(E6(e,t,"default"),r&&E6(r,t,"default")),"__reExport"),eW=o((e,t,r)=>(r=e!=null?T0t(w0t(e)):{},E6(t||!e||!e.__esModule?uw(r,"default",{value:e,enumerable:!0}):r,e)),"__toESM"),tW=o(e=>E6(uw({},"__esModule",{value:!0}),e),"__toCommonJS"),gR={};yp(gR,{AnnotatedTextEdit:o(()=>Fh,"AnnotatedTextEdit"),ChangeAnnotation:o(()=>dg,"ChangeAnnotation"),ChangeAnnotationIdentifier:o(()=>qa,"ChangeAnnotationIdentifier"),CodeAction:o(()=>eG,"CodeAction"),CodeActionContext:o(()=>Jz,"CodeActionContext"),CodeActionKind:o(()=>Qz,"CodeActionKind"),CodeActionTriggerKind:o(()=>wC,"CodeActionTriggerKind"),CodeDescription:o(()=>Lz,"CodeDescription"),CodeLens:o(()=>tG,"CodeLens"),Color:o(()=>QA,"Color"),ColorInformation:o(()=>kz,"ColorInformation"),ColorPresentation:o(()=>Sz,"ColorPresentation"),Command:o(()=>hg,"Command"),CompletionItem:o(()=>zz,"CompletionItem"),CompletionItemKind:o(()=>Nz,"CompletionItemKind"),CompletionItemLabelDetails:o(()=>Fz,"CompletionItemLabelDetails"),CompletionItemTag:o(()=>Oz,"CompletionItemTag"),CompletionList:o(()=>Gz,"CompletionList"),CreateFile:o(()=>Q1,"CreateFile"),DeleteFile:o(()=>ev,"DeleteFile"),Diagnostic:o(()=>xC,"Diagnostic"),DiagnosticRelatedInformation:o(()=>JA,"DiagnosticRelatedInformation"),DiagnosticSeverity:o(()=>Rz,"DiagnosticSeverity"),DiagnosticTag:o(()=>_z,"DiagnosticTag"),DocumentHighlight:o(()=>Uz,"DocumentHighlight"),DocumentHighlightKind:o(()=>Hz,"DocumentHighlightKind"),DocumentLink:o(()=>nG,"DocumentLink"),DocumentSymbol:o(()=>Zz,"DocumentSymbol"),DocumentUri:o(()=>Tz,"DocumentUri"),EOL:o(()=>Awe,"EOL"),FoldingRange:o(()=>Az,"FoldingRange"),FoldingRangeKind:o(()=>Ez,"FoldingRangeKind"),FormattingOptions:o(()=>rG,"FormattingOptions"),Hover:o(()=>Vz,"Hover"),InlayHint:o(()=>dG,"InlayHint"),InlayHintKind:o(()=>r6,"InlayHintKind"),InlayHintLabelPart:o(()=>n6,"InlayHintLabelPart"),InlineCompletionContext:o(()=>vG,"InlineCompletionContext"),InlineCompletionItem:o(()=>pG,"InlineCompletionItem"),InlineCompletionList:o(()=>mG,"InlineCompletionList"),InlineCompletionTriggerKind:o(()=>gG,"InlineCompletionTriggerKind"),InlineValueContext:o(()=>hG,"InlineValueContext"),InlineValueEvaluatableExpression:o(()=>uG,"InlineValueEvaluatableExpression"),InlineValueText:o(()=>lG,"InlineValueText"),InlineValueVariableLookup:o(()=>cG,"InlineValueVariableLookup"),InsertReplaceEdit:o(()=>Bz,"InsertReplaceEdit"),InsertTextFormat:o(()=>Pz,"InsertTextFormat"),InsertTextMode:o(()=>$z,"InsertTextMode"),Location:o(()=>vC,"Location"),LocationLink:o(()=>wz,"LocationLink"),MarkedString:o(()=>CC,"MarkedString"),MarkupContent:o(()=>tv,"MarkupContent"),MarkupKind:o(()=>t6,"MarkupKind"),OptionalVersionedTextDocumentIdentifier:o(()=>TC,"OptionalVersionedTextDocumentIdentifier"),ParameterInformation:o(()=>Wz,"ParameterInformation"),Position:o(()=>En,"Position"),Range:o(()=>an,"Range"),RenameFile:o(()=>J1,"RenameFile"),SelectedCompletionInfo:o(()=>yG,"SelectedCompletionInfo"),SelectionRange:o(()=>iG,"SelectionRange"),SemanticTokenModifiers:o(()=>sG,"SemanticTokenModifiers"),SemanticTokenTypes:o(()=>aG,"SemanticTokenTypes"),SemanticTokens:o(()=>oG,"SemanticTokens"),SignatureInformation:o(()=>qz,"SignatureInformation"),StringValue:o(()=>fG,"StringValue"),SymbolInformation:o(()=>Xz,"SymbolInformation"),SymbolKind:o(()=>Yz,"SymbolKind"),SymbolTag:o(()=>jz,"SymbolTag"),TextDocument:o(()=>bG,"TextDocument"),TextDocumentEdit:o(()=>bC,"TextDocumentEdit"),TextDocumentIdentifier:o(()=>Dz,"TextDocumentIdentifier"),TextDocumentItem:o(()=>Mz,"TextDocumentItem"),TextEdit:o(()=>Ru,"TextEdit"),URI:o(()=>ZA,"URI"),VersionedTextDocumentIdentifier:o(()=>Iz,"VersionedTextDocumentIdentifier"),WorkspaceChange:o(()=>Ewe,"WorkspaceChange"),WorkspaceEdit:o(()=>e6,"WorkspaceEdit"),WorkspaceFolder:o(()=>xG,"WorkspaceFolder"),WorkspaceSymbol:o(()=>Kz,"WorkspaceSymbol"),integer:o(()=>Cz,"integer"),uinteger:o(()=>yC,"uinteger")});hw=S0t({"../../node_modules/.pnpm/vscode-languageserver-types@3.17.5/node_modules/vscode-languageserver-types/lib/esm/main.js"(){"use strict";(function(e){function t(r){return typeof r=="string"}o(t,"is"),E(t,"is"),e.is=t})(Tz||(Tz={})),(function(e){function t(r){return typeof r=="string"}o(t,"is"),E(t,"is"),e.is=t})(ZA||(ZA={})),(function(e){e.MIN_VALUE=-2147483648,e.MAX_VALUE=2147483647;function t(r){return typeof r=="number"&&e.MIN_VALUE<=r&&r<=e.MAX_VALUE}o(t,"is"),E(t,"is"),e.is=t})(Cz||(Cz={})),(function(e){e.MIN_VALUE=0,e.MAX_VALUE=2147483647;function t(r){return typeof r=="number"&&e.MIN_VALUE<=r&&r<=e.MAX_VALUE}o(t,"is"),E(t,"is"),e.is=t})(yC||(yC={})),(function(e){function t(n,i){return n===Number.MAX_VALUE&&(n=yC.MAX_VALUE),i===Number.MAX_VALUE&&(i=yC.MAX_VALUE),{line:n,character:i}}o(t,"create"),E(t,"create"),e.create=t;function r(n){let i=n;return nt.objectLiteral(i)&&nt.uinteger(i.line)&&nt.uinteger(i.character)}o(r,"is"),E(r,"is"),e.is=r})(En||(En={})),(function(e){function t(n,i,a,s){if(nt.uinteger(n)&&nt.uinteger(i)&&nt.uinteger(a)&&nt.uinteger(s))return{start:En.create(n,i),end:En.create(a,s)};if(En.is(n)&&En.is(i))return{start:n,end:i};throw new Error(`Range#create called with invalid arguments[${n}, ${i}, ${a}, ${s}]`)}o(t,"create"),E(t,"create"),e.create=t;function r(n){let i=n;return nt.objectLiteral(i)&&En.is(i.start)&&En.is(i.end)}o(r,"is"),E(r,"is"),e.is=r})(an||(an={})),(function(e){function t(n,i){return{uri:n,range:i}}o(t,"create"),E(t,"create"),e.create=t;function r(n){let i=n;return nt.objectLiteral(i)&&an.is(i.range)&&(nt.string(i.uri)||nt.undefined(i.uri))}o(r,"is"),E(r,"is"),e.is=r})(vC||(vC={})),(function(e){function t(n,i,a,s){return{targetUri:n,targetRange:i,targetSelectionRange:a,originSelectionRange:s}}o(t,"create"),E(t,"create"),e.create=t;function r(n){let i=n;return nt.objectLiteral(i)&&an.is(i.targetRange)&&nt.string(i.targetUri)&&an.is(i.targetSelectionRange)&&(an.is(i.originSelectionRange)||nt.undefined(i.originSelectionRange))}o(r,"is"),E(r,"is"),e.is=r})(wz||(wz={})),(function(e){function t(n,i,a,s){return{red:n,green:i,blue:a,alpha:s}}o(t,"create"),E(t,"create"),e.create=t;function r(n){let i=n;return nt.objectLiteral(i)&&nt.numberRange(i.red,0,1)&&nt.numberRange(i.green,0,1)&&nt.numberRange(i.blue,0,1)&&nt.numberRange(i.alpha,0,1)}o(r,"is"),E(r,"is"),e.is=r})(QA||(QA={})),(function(e){function t(n,i){return{range:n,color:i}}o(t,"create"),E(t,"create"),e.create=t;function r(n){let i=n;return nt.objectLiteral(i)&&an.is(i.range)&&QA.is(i.color)}o(r,"is"),E(r,"is"),e.is=r})(kz||(kz={})),(function(e){function t(n,i,a){return{label:n,textEdit:i,additionalTextEdits:a}}o(t,"create"),E(t,"create"),e.create=t;function r(n){let i=n;return nt.objectLiteral(i)&&nt.string(i.label)&&(nt.undefined(i.textEdit)||Ru.is(i))&&(nt.undefined(i.additionalTextEdits)||nt.typedArray(i.additionalTextEdits,Ru.is))}o(r,"is"),E(r,"is"),e.is=r})(Sz||(Sz={})),(function(e){e.Comment="comment",e.Imports="imports",e.Region="region"})(Ez||(Ez={})),(function(e){function t(n,i,a,s,l,u){let h={startLine:n,endLine:i};return nt.defined(a)&&(h.startCharacter=a),nt.defined(s)&&(h.endCharacter=s),nt.defined(l)&&(h.kind=l),nt.defined(u)&&(h.collapsedText=u),h}o(t,"create"),E(t,"create"),e.create=t;function r(n){let i=n;return nt.objectLiteral(i)&&nt.uinteger(i.startLine)&&nt.uinteger(i.startLine)&&(nt.undefined(i.startCharacter)||nt.uinteger(i.startCharacter))&&(nt.undefined(i.endCharacter)||nt.uinteger(i.endCharacter))&&(nt.undefined(i.kind)||nt.string(i.kind))}o(r,"is"),E(r,"is"),e.is=r})(Az||(Az={})),(function(e){function t(n,i){return{location:n,message:i}}o(t,"create"),E(t,"create"),e.create=t;function r(n){let i=n;return nt.defined(i)&&vC.is(i.location)&&nt.string(i.message)}o(r,"is"),E(r,"is"),e.is=r})(JA||(JA={})),(function(e){e.Error=1,e.Warning=2,e.Information=3,e.Hint=4})(Rz||(Rz={})),(function(e){e.Unnecessary=1,e.Deprecated=2})(_z||(_z={})),(function(e){function t(r){let n=r;return nt.objectLiteral(n)&&nt.string(n.href)}o(t,"is"),E(t,"is"),e.is=t})(Lz||(Lz={})),(function(e){function t(n,i,a,s,l,u){let h={range:n,message:i};return nt.defined(a)&&(h.severity=a),nt.defined(s)&&(h.code=s),nt.defined(l)&&(h.source=l),nt.defined(u)&&(h.relatedInformation=u),h}o(t,"create"),E(t,"create"),e.create=t;function r(n){var i;let a=n;return nt.defined(a)&&an.is(a.range)&&nt.string(a.message)&&(nt.number(a.severity)||nt.undefined(a.severity))&&(nt.integer(a.code)||nt.string(a.code)||nt.undefined(a.code))&&(nt.undefined(a.codeDescription)||nt.string((i=a.codeDescription)===null||i===void 0?void 0:i.href))&&(nt.string(a.source)||nt.undefined(a.source))&&(nt.undefined(a.relatedInformation)||nt.typedArray(a.relatedInformation,JA.is))}o(r,"is"),E(r,"is"),e.is=r})(xC||(xC={})),(function(e){function t(n,i,...a){let s={title:n,command:i};return nt.defined(a)&&a.length>0&&(s.arguments=a),s}o(t,"create"),E(t,"create"),e.create=t;function r(n){let i=n;return nt.defined(i)&&nt.string(i.title)&&nt.string(i.command)}o(r,"is"),E(r,"is"),e.is=r})(hg||(hg={})),(function(e){function t(a,s){return{range:a,newText:s}}o(t,"replace"),E(t,"replace"),e.replace=t;function r(a,s){return{range:{start:a,end:a},newText:s}}o(r,"insert"),E(r,"insert"),e.insert=r;function n(a){return{range:a,newText:""}}o(n,"del"),E(n,"del"),e.del=n;function i(a){let s=a;return nt.objectLiteral(s)&&nt.string(s.newText)&&an.is(s.range)}o(i,"is"),E(i,"is"),e.is=i})(Ru||(Ru={})),(function(e){function t(n,i,a){let s={label:n};return i!==void 0&&(s.needsConfirmation=i),a!==void 0&&(s.description=a),s}o(t,"create"),E(t,"create"),e.create=t;function r(n){let i=n;return nt.objectLiteral(i)&&nt.string(i.label)&&(nt.boolean(i.needsConfirmation)||i.needsConfirmation===void 0)&&(nt.string(i.description)||i.description===void 0)}o(r,"is"),E(r,"is"),e.is=r})(dg||(dg={})),(function(e){function t(r){let n=r;return nt.string(n)}o(t,"is"),E(t,"is"),e.is=t})(qa||(qa={})),(function(e){function t(a,s,l){return{range:a,newText:s,annotationId:l}}o(t,"replace"),E(t,"replace"),e.replace=t;function r(a,s,l){return{range:{start:a,end:a},newText:s,annotationId:l}}o(r,"insert"),E(r,"insert"),e.insert=r;function n(a,s){return{range:a,newText:"",annotationId:s}}o(n,"del"),E(n,"del"),e.del=n;function i(a){let s=a;return Ru.is(s)&&(dg.is(s.annotationId)||qa.is(s.annotationId))}o(i,"is"),E(i,"is"),e.is=i})(Fh||(Fh={})),(function(e){function t(n,i){return{textDocument:n,edits:i}}o(t,"create"),E(t,"create"),e.create=t;function r(n){let i=n;return nt.defined(i)&&TC.is(i.textDocument)&&Array.isArray(i.edits)}o(r,"is"),E(r,"is"),e.is=r})(bC||(bC={})),(function(e){function t(n,i,a){let s={kind:"create",uri:n};return i!==void 0&&(i.overwrite!==void 0||i.ignoreIfExists!==void 0)&&(s.options=i),a!==void 0&&(s.annotationId=a),s}o(t,"create"),E(t,"create"),e.create=t;function r(n){let i=n;return i&&i.kind==="create"&&nt.string(i.uri)&&(i.options===void 0||(i.options.overwrite===void 0||nt.boolean(i.options.overwrite))&&(i.options.ignoreIfExists===void 0||nt.boolean(i.options.ignoreIfExists)))&&(i.annotationId===void 0||qa.is(i.annotationId))}o(r,"is"),E(r,"is"),e.is=r})(Q1||(Q1={})),(function(e){function t(n,i,a,s){let l={kind:"rename",oldUri:n,newUri:i};return a!==void 0&&(a.overwrite!==void 0||a.ignoreIfExists!==void 0)&&(l.options=a),s!==void 0&&(l.annotationId=s),l}o(t,"create"),E(t,"create"),e.create=t;function r(n){let i=n;return i&&i.kind==="rename"&&nt.string(i.oldUri)&&nt.string(i.newUri)&&(i.options===void 0||(i.options.overwrite===void 0||nt.boolean(i.options.overwrite))&&(i.options.ignoreIfExists===void 0||nt.boolean(i.options.ignoreIfExists)))&&(i.annotationId===void 0||qa.is(i.annotationId))}o(r,"is"),E(r,"is"),e.is=r})(J1||(J1={})),(function(e){function t(n,i,a){let s={kind:"delete",uri:n};return i!==void 0&&(i.recursive!==void 0||i.ignoreIfNotExists!==void 0)&&(s.options=i),a!==void 0&&(s.annotationId=a),s}o(t,"create"),E(t,"create"),e.create=t;function r(n){let i=n;return i&&i.kind==="delete"&&nt.string(i.uri)&&(i.options===void 0||(i.options.recursive===void 0||nt.boolean(i.options.recursive))&&(i.options.ignoreIfNotExists===void 0||nt.boolean(i.options.ignoreIfNotExists)))&&(i.annotationId===void 0||qa.is(i.annotationId))}o(r,"is"),E(r,"is"),e.is=r})(ev||(ev={})),(function(e){function t(r){let n=r;return n&&(n.changes!==void 0||n.documentChanges!==void 0)&&(n.documentChanges===void 0||n.documentChanges.every(i=>nt.string(i.kind)?Q1.is(i)||J1.is(i)||ev.is(i):bC.is(i)))}o(t,"is"),E(t,"is"),e.is=t})(e6||(e6={})),lC=class{static{o(this,"TextEditChangeImpl")}static{E(this,"TextEditChangeImpl")}constructor(e,t){this.edits=e,this.changeAnnotations=t}insert(e,t,r){let n,i;if(r===void 0?n=Ru.insert(e,t):qa.is(r)?(i=r,n=Fh.insert(e,t,r)):(this.assertChangeAnnotations(this.changeAnnotations),i=this.changeAnnotations.manage(r),n=Fh.insert(e,t,i)),this.edits.push(n),i!==void 0)return i}replace(e,t,r){let n,i;if(r===void 0?n=Ru.replace(e,t):qa.is(r)?(i=r,n=Fh.replace(e,t,r)):(this.assertChangeAnnotations(this.changeAnnotations),i=this.changeAnnotations.manage(r),n=Fh.replace(e,t,i)),this.edits.push(n),i!==void 0)return i}delete(e,t){let r,n;if(t===void 0?r=Ru.del(e):qa.is(t)?(n=t,r=Fh.del(e,t)):(this.assertChangeAnnotations(this.changeAnnotations),n=this.changeAnnotations.manage(t),r=Fh.del(e,n)),this.edits.push(r),n!==void 0)return n}add(e){this.edits.push(e)}all(){return this.edits}clear(){this.edits.splice(0,this.edits.length)}assertChangeAnnotations(e){if(e===void 0)throw new Error("Text edit change is not configured to manage change annotations.")}},JF=class{static{o(this,"ChangeAnnotations")}static{E(this,"ChangeAnnotations")}constructor(e){this._annotations=e===void 0?Object.create(null):e,this._counter=0,this._size=0}all(){return this._annotations}get size(){return this._size}manage(e,t){let r;if(qa.is(e)?r=e:(r=this.nextId(),t=e),this._annotations[r]!==void 0)throw new Error(`Id ${r} is already in use.`);if(t===void 0)throw new Error(`No annotation provided for id ${r}`);return this._annotations[r]=t,this._size++,r}nextId(){return this._counter++,this._counter.toString()}},Ewe=class{static{o(this,"WorkspaceChange")}static{E(this,"WorkspaceChange")}constructor(e){this._textEditChanges=Object.create(null),e!==void 0?(this._workspaceEdit=e,e.documentChanges?(this._changeAnnotations=new JF(e.changeAnnotations),e.changeAnnotations=this._changeAnnotations.all(),e.documentChanges.forEach(t=>{if(bC.is(t)){let r=new lC(t.edits,this._changeAnnotations);this._textEditChanges[t.textDocument.uri]=r}})):e.changes&&Object.keys(e.changes).forEach(t=>{let r=new lC(e.changes[t]);this._textEditChanges[t]=r})):this._workspaceEdit={}}get edit(){return this.initDocumentChanges(),this._changeAnnotations!==void 0&&(this._changeAnnotations.size===0?this._workspaceEdit.changeAnnotations=void 0:this._workspaceEdit.changeAnnotations=this._changeAnnotations.all()),this._workspaceEdit}getTextEditChange(e){if(TC.is(e)){if(this.initDocumentChanges(),this._workspaceEdit.documentChanges===void 0)throw new Error("Workspace edit is not configured for document changes.");let t={uri:e.uri,version:e.version},r=this._textEditChanges[t.uri];if(!r){let n=[],i={textDocument:t,edits:n};this._workspaceEdit.documentChanges.push(i),r=new lC(n,this._changeAnnotations),this._textEditChanges[t.uri]=r}return r}else{if(this.initChanges(),this._workspaceEdit.changes===void 0)throw new Error("Workspace edit is not configured for normal text edit changes.");let t=this._textEditChanges[e];if(!t){let r=[];this._workspaceEdit.changes[e]=r,t=new lC(r),this._textEditChanges[e]=t}return t}}initDocumentChanges(){this._workspaceEdit.documentChanges===void 0&&this._workspaceEdit.changes===void 0&&(this._changeAnnotations=new JF,this._workspaceEdit.documentChanges=[],this._workspaceEdit.changeAnnotations=this._changeAnnotations.all())}initChanges(){this._workspaceEdit.documentChanges===void 0&&this._workspaceEdit.changes===void 0&&(this._workspaceEdit.changes=Object.create(null))}createFile(e,t,r){if(this.initDocumentChanges(),this._workspaceEdit.documentChanges===void 0)throw new Error("Workspace edit is not configured for document changes.");let n;dg.is(t)||qa.is(t)?n=t:r=t;let i,a;if(n===void 0?i=Q1.create(e,r):(a=qa.is(n)?n:this._changeAnnotations.manage(n),i=Q1.create(e,r,a)),this._workspaceEdit.documentChanges.push(i),a!==void 0)return a}renameFile(e,t,r,n){if(this.initDocumentChanges(),this._workspaceEdit.documentChanges===void 0)throw new Error("Workspace edit is not configured for document changes.");let i;dg.is(r)||qa.is(r)?i=r:n=r;let a,s;if(i===void 0?a=J1.create(e,t,n):(s=qa.is(i)?i:this._changeAnnotations.manage(i),a=J1.create(e,t,n,s)),this._workspaceEdit.documentChanges.push(a),s!==void 0)return s}deleteFile(e,t,r){if(this.initDocumentChanges(),this._workspaceEdit.documentChanges===void 0)throw new Error("Workspace edit is not configured for document changes.");let n;dg.is(t)||qa.is(t)?n=t:r=t;let i,a;if(n===void 0?i=ev.create(e,r):(a=qa.is(n)?n:this._changeAnnotations.manage(n),i=ev.create(e,r,a)),this._workspaceEdit.documentChanges.push(i),a!==void 0)return a}},(function(e){function t(n){return{uri:n}}o(t,"create"),E(t,"create"),e.create=t;function r(n){let i=n;return nt.defined(i)&&nt.string(i.uri)}o(r,"is"),E(r,"is"),e.is=r})(Dz||(Dz={})),(function(e){function t(n,i){return{uri:n,version:i}}o(t,"create"),E(t,"create"),e.create=t;function r(n){let i=n;return nt.defined(i)&&nt.string(i.uri)&&nt.integer(i.version)}o(r,"is"),E(r,"is"),e.is=r})(Iz||(Iz={})),(function(e){function t(n,i){return{uri:n,version:i}}o(t,"create"),E(t,"create"),e.create=t;function r(n){let i=n;return nt.defined(i)&&nt.string(i.uri)&&(i.version===null||nt.integer(i.version))}o(r,"is"),E(r,"is"),e.is=r})(TC||(TC={})),(function(e){function t(n,i,a,s){return{uri:n,languageId:i,version:a,text:s}}o(t,"create"),E(t,"create"),e.create=t;function r(n){let i=n;return nt.defined(i)&&nt.string(i.uri)&&nt.string(i.languageId)&&nt.integer(i.version)&&nt.string(i.text)}o(r,"is"),E(r,"is"),e.is=r})(Mz||(Mz={})),(function(e){e.PlainText="plaintext",e.Markdown="markdown";function t(r){let n=r;return n===e.PlainText||n===e.Markdown}o(t,"is"),E(t,"is"),e.is=t})(t6||(t6={})),(function(e){function t(r){let n=r;return nt.objectLiteral(r)&&t6.is(n.kind)&&nt.string(n.value)}o(t,"is"),E(t,"is"),e.is=t})(tv||(tv={})),(function(e){e.Text=1,e.Method=2,e.Function=3,e.Constructor=4,e.Field=5,e.Variable=6,e.Class=7,e.Interface=8,e.Module=9,e.Property=10,e.Unit=11,e.Value=12,e.Enum=13,e.Keyword=14,e.Snippet=15,e.Color=16,e.File=17,e.Reference=18,e.Folder=19,e.EnumMember=20,e.Constant=21,e.Struct=22,e.Event=23,e.Operator=24,e.TypeParameter=25})(Nz||(Nz={})),(function(e){e.PlainText=1,e.Snippet=2})(Pz||(Pz={})),(function(e){e.Deprecated=1})(Oz||(Oz={})),(function(e){function t(n,i,a){return{newText:n,insert:i,replace:a}}o(t,"create"),E(t,"create"),e.create=t;function r(n){let i=n;return i&&nt.string(i.newText)&&an.is(i.insert)&&an.is(i.replace)}o(r,"is"),E(r,"is"),e.is=r})(Bz||(Bz={})),(function(e){e.asIs=1,e.adjustIndentation=2})($z||($z={})),(function(e){function t(r){let n=r;return n&&(nt.string(n.detail)||n.detail===void 0)&&(nt.string(n.description)||n.description===void 0)}o(t,"is"),E(t,"is"),e.is=t})(Fz||(Fz={})),(function(e){function t(r){return{label:r}}o(t,"create"),E(t,"create"),e.create=t})(zz||(zz={})),(function(e){function t(r,n){return{items:r||[],isIncomplete:!!n}}o(t,"create"),E(t,"create"),e.create=t})(Gz||(Gz={})),(function(e){function t(n){return n.replace(/[\\`*_{}[\]()#+\-.!]/g,"\\$&")}o(t,"fromPlainText"),E(t,"fromPlainText"),e.fromPlainText=t;function r(n){let i=n;return nt.string(i)||nt.objectLiteral(i)&&nt.string(i.language)&&nt.string(i.value)}o(r,"is"),E(r,"is"),e.is=r})(CC||(CC={})),(function(e){function t(r){let n=r;return!!n&&nt.objectLiteral(n)&&(tv.is(n.contents)||CC.is(n.contents)||nt.typedArray(n.contents,CC.is))&&(r.range===void 0||an.is(r.range))}o(t,"is"),E(t,"is"),e.is=t})(Vz||(Vz={})),(function(e){function t(r,n){return n?{label:r,documentation:n}:{label:r}}o(t,"create"),E(t,"create"),e.create=t})(Wz||(Wz={})),(function(e){function t(r,n,...i){let a={label:r};return nt.defined(n)&&(a.documentation=n),nt.defined(i)?a.parameters=i:a.parameters=[],a}o(t,"create"),E(t,"create"),e.create=t})(qz||(qz={})),(function(e){e.Text=1,e.Read=2,e.Write=3})(Hz||(Hz={})),(function(e){function t(r,n){let i={range:r};return nt.number(n)&&(i.kind=n),i}o(t,"create"),E(t,"create"),e.create=t})(Uz||(Uz={})),(function(e){e.File=1,e.Module=2,e.Namespace=3,e.Package=4,e.Class=5,e.Method=6,e.Property=7,e.Field=8,e.Constructor=9,e.Enum=10,e.Interface=11,e.Function=12,e.Variable=13,e.Constant=14,e.String=15,e.Number=16,e.Boolean=17,e.Array=18,e.Object=19,e.Key=20,e.Null=21,e.EnumMember=22,e.Struct=23,e.Event=24,e.Operator=25,e.TypeParameter=26})(Yz||(Yz={})),(function(e){e.Deprecated=1})(jz||(jz={})),(function(e){function t(r,n,i,a,s){let l={name:r,kind:n,location:{uri:a,range:i}};return s&&(l.containerName=s),l}o(t,"create"),E(t,"create"),e.create=t})(Xz||(Xz={})),(function(e){function t(r,n,i,a){return a!==void 0?{name:r,kind:n,location:{uri:i,range:a}}:{name:r,kind:n,location:{uri:i}}}o(t,"create"),E(t,"create"),e.create=t})(Kz||(Kz={})),(function(e){function t(n,i,a,s,l,u){let h={name:n,detail:i,kind:a,range:s,selectionRange:l};return u!==void 0&&(h.children=u),h}o(t,"create"),E(t,"create"),e.create=t;function r(n){let i=n;return i&&nt.string(i.name)&&nt.number(i.kind)&&an.is(i.range)&&an.is(i.selectionRange)&&(i.detail===void 0||nt.string(i.detail))&&(i.deprecated===void 0||nt.boolean(i.deprecated))&&(i.children===void 0||Array.isArray(i.children))&&(i.tags===void 0||Array.isArray(i.tags))}o(r,"is"),E(r,"is"),e.is=r})(Zz||(Zz={})),(function(e){e.Empty="",e.QuickFix="quickfix",e.Refactor="refactor",e.RefactorExtract="refactor.extract",e.RefactorInline="refactor.inline",e.RefactorRewrite="refactor.rewrite",e.Source="source",e.SourceOrganizeImports="source.organizeImports",e.SourceFixAll="source.fixAll"})(Qz||(Qz={})),(function(e){e.Invoked=1,e.Automatic=2})(wC||(wC={})),(function(e){function t(n,i,a){let s={diagnostics:n};return i!=null&&(s.only=i),a!=null&&(s.triggerKind=a),s}o(t,"create"),E(t,"create"),e.create=t;function r(n){let i=n;return nt.defined(i)&&nt.typedArray(i.diagnostics,xC.is)&&(i.only===void 0||nt.typedArray(i.only,nt.string))&&(i.triggerKind===void 0||i.triggerKind===wC.Invoked||i.triggerKind===wC.Automatic)}o(r,"is"),E(r,"is"),e.is=r})(Jz||(Jz={})),(function(e){function t(n,i,a){let s={title:n},l=!0;return typeof i=="string"?(l=!1,s.kind=i):hg.is(i)?s.command=i:s.edit=i,l&&a!==void 0&&(s.kind=a),s}o(t,"create"),E(t,"create"),e.create=t;function r(n){let i=n;return i&&nt.string(i.title)&&(i.diagnostics===void 0||nt.typedArray(i.diagnostics,xC.is))&&(i.kind===void 0||nt.string(i.kind))&&(i.edit!==void 0||i.command!==void 0)&&(i.command===void 0||hg.is(i.command))&&(i.isPreferred===void 0||nt.boolean(i.isPreferred))&&(i.edit===void 0||e6.is(i.edit))}o(r,"is"),E(r,"is"),e.is=r})(eG||(eG={})),(function(e){function t(n,i){let a={range:n};return nt.defined(i)&&(a.data=i),a}o(t,"create"),E(t,"create"),e.create=t;function r(n){let i=n;return nt.defined(i)&&an.is(i.range)&&(nt.undefined(i.command)||hg.is(i.command))}o(r,"is"),E(r,"is"),e.is=r})(tG||(tG={})),(function(e){function t(n,i){return{tabSize:n,insertSpaces:i}}o(t,"create"),E(t,"create"),e.create=t;function r(n){let i=n;return nt.defined(i)&&nt.uinteger(i.tabSize)&&nt.boolean(i.insertSpaces)}o(r,"is"),E(r,"is"),e.is=r})(rG||(rG={})),(function(e){function t(n,i,a){return{range:n,target:i,data:a}}o(t,"create"),E(t,"create"),e.create=t;function r(n){let i=n;return nt.defined(i)&&an.is(i.range)&&(nt.undefined(i.target)||nt.string(i.target))}o(r,"is"),E(r,"is"),e.is=r})(nG||(nG={})),(function(e){function t(n,i){return{range:n,parent:i}}o(t,"create"),E(t,"create"),e.create=t;function r(n){let i=n;return nt.objectLiteral(i)&&an.is(i.range)&&(i.parent===void 0||e.is(i.parent))}o(r,"is"),E(r,"is"),e.is=r})(iG||(iG={})),(function(e){e.namespace="namespace",e.type="type",e.class="class",e.enum="enum",e.interface="interface",e.struct="struct",e.typeParameter="typeParameter",e.parameter="parameter",e.variable="variable",e.property="property",e.enumMember="enumMember",e.event="event",e.function="function",e.method="method",e.macro="macro",e.keyword="keyword",e.modifier="modifier",e.comment="comment",e.string="string",e.number="number",e.regexp="regexp",e.operator="operator",e.decorator="decorator"})(aG||(aG={})),(function(e){e.declaration="declaration",e.definition="definition",e.readonly="readonly",e.static="static",e.deprecated="deprecated",e.abstract="abstract",e.async="async",e.modification="modification",e.documentation="documentation",e.defaultLibrary="defaultLibrary"})(sG||(sG={})),(function(e){function t(r){let n=r;return nt.objectLiteral(n)&&(n.resultId===void 0||typeof n.resultId=="string")&&Array.isArray(n.data)&&(n.data.length===0||typeof n.data[0]=="number")}o(t,"is"),E(t,"is"),e.is=t})(oG||(oG={})),(function(e){function t(n,i){return{range:n,text:i}}o(t,"create"),E(t,"create"),e.create=t;function r(n){let i=n;return i!=null&&an.is(i.range)&&nt.string(i.text)}o(r,"is"),E(r,"is"),e.is=r})(lG||(lG={})),(function(e){function t(n,i,a){return{range:n,variableName:i,caseSensitiveLookup:a}}o(t,"create"),E(t,"create"),e.create=t;function r(n){let i=n;return i!=null&&an.is(i.range)&&nt.boolean(i.caseSensitiveLookup)&&(nt.string(i.variableName)||i.variableName===void 0)}o(r,"is"),E(r,"is"),e.is=r})(cG||(cG={})),(function(e){function t(n,i){return{range:n,expression:i}}o(t,"create"),E(t,"create"),e.create=t;function r(n){let i=n;return i!=null&&an.is(i.range)&&(nt.string(i.expression)||i.expression===void 0)}o(r,"is"),E(r,"is"),e.is=r})(uG||(uG={})),(function(e){function t(n,i){return{frameId:n,stoppedLocation:i}}o(t,"create"),E(t,"create"),e.create=t;function r(n){let i=n;return nt.defined(i)&&an.is(n.stoppedLocation)}o(r,"is"),E(r,"is"),e.is=r})(hG||(hG={})),(function(e){e.Type=1,e.Parameter=2;function t(r){return r===1||r===2}o(t,"is"),E(t,"is"),e.is=t})(r6||(r6={})),(function(e){function t(n){return{value:n}}o(t,"create"),E(t,"create"),e.create=t;function r(n){let i=n;return nt.objectLiteral(i)&&(i.tooltip===void 0||nt.string(i.tooltip)||tv.is(i.tooltip))&&(i.location===void 0||vC.is(i.location))&&(i.command===void 0||hg.is(i.command))}o(r,"is"),E(r,"is"),e.is=r})(n6||(n6={})),(function(e){function t(n,i,a){let s={position:n,label:i};return a!==void 0&&(s.kind=a),s}o(t,"create"),E(t,"create"),e.create=t;function r(n){let i=n;return nt.objectLiteral(i)&&En.is(i.position)&&(nt.string(i.label)||nt.typedArray(i.label,n6.is))&&(i.kind===void 0||r6.is(i.kind))&&i.textEdits===void 0||nt.typedArray(i.textEdits,Ru.is)&&(i.tooltip===void 0||nt.string(i.tooltip)||tv.is(i.tooltip))&&(i.paddingLeft===void 0||nt.boolean(i.paddingLeft))&&(i.paddingRight===void 0||nt.boolean(i.paddingRight))}o(r,"is"),E(r,"is"),e.is=r})(dG||(dG={})),(function(e){function t(r){return{kind:"snippet",value:r}}o(t,"createSnippet"),E(t,"createSnippet"),e.createSnippet=t})(fG||(fG={})),(function(e){function t(r,n,i,a){return{insertText:r,filterText:n,range:i,command:a}}o(t,"create"),E(t,"create"),e.create=t})(pG||(pG={})),(function(e){function t(r){return{items:r}}o(t,"create"),E(t,"create"),e.create=t})(mG||(mG={})),(function(e){e.Invoked=0,e.Automatic=1})(gG||(gG={})),(function(e){function t(r,n){return{range:r,text:n}}o(t,"create"),E(t,"create"),e.create=t})(yG||(yG={})),(function(e){function t(r,n){return{triggerKind:r,selectedCompletionInfo:n}}o(t,"create"),E(t,"create"),e.create=t})(vG||(vG={})),(function(e){function t(r){let n=r;return nt.objectLiteral(n)&&ZA.is(n.uri)&&nt.string(n.name)}o(t,"is"),E(t,"is"),e.is=t})(xG||(xG={})),Awe=[`
 `,`\r
-`,"\r"],(function(e){function t(a,s,l,u){return new m1e(a,s,l,u)}o(t,"create"),S(t,"create"),e.create=t;function r(a){let s=a;return!!(Ze.defined(s)&&Ze.string(s.uri)&&(Ze.undefined(s.languageId)||Ze.string(s.languageId))&&Ze.uinteger(s.lineCount)&&Ze.func(s.getText)&&Ze.func(s.positionAt)&&Ze.func(s.offsetAt))}o(r,"is"),S(r,"is"),e.is=r;function i(a,s){let l=a.getText(),u=n(s,(d,f)=>{let p=d.range.start.line-f.range.start.line;return p===0?d.range.start.character-f.range.start.character:p}),h=l.length;for(let d=u.length-1;d>=0;d--){let f=u[d],p=a.offsetAt(f.range.start),m=a.offsetAt(f.range.end);if(m<=h)l=l.substring(0,p)+f.newText+l.substring(m,l.length);else throw new Error("Overlapping edit");h=p}return l}o(i,"applyEdits"),S(i,"applyEdits"),e.applyEdits=i;function n(a,s){if(a.length<=1)return a;let l=a.length/2|0,u=a.slice(0,l),h=a.slice(l);n(u,s),n(h,s);let d=0,f=0,p=0;for(;d<u.length&&f<h.length;)s(u[d],h[f])<=0?a[p++]=u[d++]:a[p++]=h[f++];for(;d<u.length;)a[p++]=u[d++];for(;f<h.length;)a[p++]=h[f++];return a}o(n,"mergeSort2"),S(n,"mergeSort")})(dF||(dF={})),m1e=class{static{o(this,"FullTextDocument")}static{S(this,"FullTextDocument")}constructor(e,t,r,i){this._uri=e,this._languageId=t,this._version=r,this._content=i,this._lineOffsets=void 0}get uri(){return this._uri}get languageId(){return this._languageId}get version(){return this._version}getText(e){if(e){let t=this.offsetAt(e.start),r=this.offsetAt(e.end);return this._content.substring(t,r)}return this._content}update(e,t){this._content=e.text,this._version=t,this._lineOffsets=void 0}getLineOffsets(){if(this._lineOffsets===void 0){let e=[],t=this._content,r=!0;for(let i=0;i<t.length;i++){r&&(e.push(i),r=!1);let n=t.charAt(i);r=n==="\r"||n===`
-`,n==="\r"&&i+1<t.length&&t.charAt(i+1)===`
-`&&i++}r&&t.length>0&&e.push(t.length),this._lineOffsets=e}return this._lineOffsets}positionAt(e){e=Math.max(Math.min(e,this._content.length),0);let t=this.getLineOffsets(),r=0,i=t.length;if(i===0)return ai.create(0,e);for(;r<i;){let a=Math.floor((r+i)/2);t[a]>e?i=a:r=a+1}let n=r-1;return ai.create(n,e-t[n])}offsetAt(e){let t=this.getLineOffsets();if(e.line>=t.length)return this._content.length;if(e.line<0)return 0;let r=t[e.line],i=e.line+1<t.length?t[e.line+1]:this._content.length;return Math.max(Math.min(r+e.character,i),r)}get lineCount(){return this.getLineOffsets().length}},(function(e){let t=Object.prototype.toString;function r(m){return typeof m<"u"}o(r,"defined"),S(r,"defined"),e.defined=r;function i(m){return typeof m>"u"}o(i,"undefined2"),S(i,"undefined"),e.undefined=i;function n(m){return m===!0||m===!1}o(n,"boolean"),S(n,"boolean"),e.boolean=n;function a(m){return t.call(m)==="[object String]"}o(a,"string"),S(a,"string"),e.string=a;function s(m){return t.call(m)==="[object Number]"}o(s,"number"),S(s,"number"),e.number=s;function l(m,g,y){return t.call(m)==="[object Number]"&&g<=m&&m<=y}o(l,"numberRange"),S(l,"numberRange"),e.numberRange=l;function u(m){return t.call(m)==="[object Number]"&&-2147483648<=m&&m<=2147483647}o(u,"integer2"),S(u,"integer"),e.integer=u;function h(m){return t.call(m)==="[object Number]"&&0<=m&&m<=2147483647}o(h,"uinteger2"),S(h,"uinteger"),e.uinteger=h;function d(m){return t.call(m)==="[object Function]"}o(d,"func"),S(d,"func"),e.func=d;function f(m){return m!==null&&typeof m=="object"}o(f,"objectLiteral"),S(f,"objectLiteral"),e.objectLiteral=f;function p(m,g){return Array.isArray(m)&&m.every(g)}o(p,"typedArray"),S(p,"typedArray"),e.typedArray=p})(Ze||(Ze={}))}}),W0=Lr({"../../node_modules/.pnpm/vscode-jsonrpc@8.2.0/node_modules/vscode-jsonrpc/lib/common/ral.js"(e){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var t;function r(){if(t===void 0)throw new Error("No runtime abstraction layer installed");return t}o(r,"RAL"),S(r,"RAL"),(function(i){function n(a){if(a===void 0)throw new Error("No runtime abstraction layer provided");t=a}o(n,"install"),S(n,"install"),i.install=n})(r||(r={})),e.default=r}}),TT=Lr({"../../node_modules/.pnpm/vscode-jsonrpc@8.2.0/node_modules/vscode-jsonrpc/lib/common/is.js"(e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.stringArray=e.array=e.func=e.error=e.number=e.string=e.boolean=void 0;function t(u){return u===!0||u===!1}o(t,"boolean"),S(t,"boolean"),e.boolean=t;function r(u){return typeof u=="string"||u instanceof String}o(r,"string"),S(r,"string"),e.string=r;function i(u){return typeof u=="number"||u instanceof Number}o(i,"number"),S(i,"number"),e.number=i;function n(u){return u instanceof Error}o(n,"error"),S(n,"error"),e.error=n;function a(u){return typeof u=="function"}o(a,"func"),S(a,"func"),e.func=a;function s(u){return Array.isArray(u)}o(s,"array"),S(s,"array"),e.array=s;function l(u){return s(u)&&u.every(h=>r(h))}o(l,"stringArray"),S(l,"stringArray"),e.stringArray=l}}),ny=Lr({"../../node_modules/.pnpm/vscode-jsonrpc@8.2.0/node_modules/vscode-jsonrpc/lib/common/events.js"(e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.Emitter=e.Event=void 0;var t=W0(),r;(function(a){let s={dispose(){}};a.None=function(){return s}})(r||(e.Event=r={}));var i=class{static{o(this,"CallbackList")}static{S(this,"CallbackList")}add(a,s=null,l){this._callbacks||(this._callbacks=[],this._contexts=[]),this._callbacks.push(a),this._contexts.push(s),Array.isArray(l)&&l.push({dispose:S(()=>this.remove(a,s),"dispose")})}remove(a,s=null){if(!this._callbacks)return;let l=!1;for(let u=0,h=this._callbacks.length;u<h;u++)if(this._callbacks[u]===a)if(this._contexts[u]===s){this._callbacks.splice(u,1),this._contexts.splice(u,1);return}else l=!0;if(l)throw new Error("When adding a listener with a context, you should remove it with the same context")}invoke(...a){if(!this._callbacks)return[];let s=[],l=this._callbacks.slice(0),u=this._contexts.slice(0);for(let h=0,d=l.length;h<d;h++)try{s.push(l[h].apply(u[h],a))}catch(f){(0,t.default)().console.error(f)}return s}isEmpty(){return!this._callbacks||this._callbacks.length===0}dispose(){this._callbacks=void 0,this._contexts=void 0}},n=class ive{static{o(this,"_Emitter")}static{S(this,"Emitter")}constructor(s){this._options=s}get event(){return this._event||(this._event=(s,l,u)=>{this._callbacks||(this._callbacks=new i),this._options&&this._options.onFirstListenerAdd&&this._callbacks.isEmpty()&&this._options.onFirstListenerAdd(this),this._callbacks.add(s,l);let h={dispose:S(()=>{this._callbacks&&(this._callbacks.remove(s,l),h.dispose=ive._noop,this._options&&this._options.onLastListenerRemove&&this._callbacks.isEmpty()&&this._options.onLastListenerRemove(this))},"dispose")};return Array.isArray(u)&&u.push(h),h}),this._event}fire(s){this._callbacks&&this._callbacks.invoke.call(this._callbacks,s)}dispose(){this._callbacks&&(this._callbacks.dispose(),this._callbacks=void 0)}};e.Emitter=n,n._noop=function(){}}}),U5=Lr({"../../node_modules/.pnpm/vscode-jsonrpc@8.2.0/node_modules/vscode-jsonrpc/lib/common/cancellation.js"(e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.CancellationTokenSource=e.CancellationToken=void 0;var t=W0(),r=TT(),i=ny(),n;(function(u){u.None=Object.freeze({isCancellationRequested:!1,onCancellationRequested:i.Event.None}),u.Cancelled=Object.freeze({isCancellationRequested:!0,onCancellationRequested:i.Event.None});function h(d){let f=d;return f&&(f===u.None||f===u.Cancelled||r.boolean(f.isCancellationRequested)&&!!f.onCancellationRequested)}o(h,"is"),S(h,"is"),u.is=h})(n||(e.CancellationToken=n={}));var a=Object.freeze(function(u,h){let d=(0,t.default)().timer.setTimeout(u.bind(h),0);return{dispose(){d.dispose()}}}),s=class{static{o(this,"MutableToken")}static{S(this,"MutableToken")}constructor(){this._isCancelled=!1}cancel(){this._isCancelled||(this._isCancelled=!0,this._emitter&&(this._emitter.fire(void 0),this.dispose()))}get isCancellationRequested(){return this._isCancelled}get onCancellationRequested(){return this._isCancelled?a:(this._emitter||(this._emitter=new i.Emitter),this._emitter.event)}dispose(){this._emitter&&(this._emitter.dispose(),this._emitter=void 0)}},l=class{static{o(this,"CancellationTokenSource3")}static{S(this,"CancellationTokenSource")}get token(){return this._token||(this._token=new s),this._token}cancel(){this._token?this._token.cancel():this._token=n.Cancelled}dispose(){this._token?this._token instanceof s&&this._token.dispose():this._token=n.None}};e.CancellationTokenSource=l}}),nve=Lr({"../../node_modules/.pnpm/vscode-jsonrpc@8.2.0/node_modules/vscode-jsonrpc/lib/common/messages.js"(e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.Message=e.NotificationType9=e.NotificationType8=e.NotificationType7=e.NotificationType6=e.NotificationType5=e.NotificationType4=e.NotificationType3=e.NotificationType2=e.NotificationType1=e.NotificationType0=e.NotificationType=e.RequestType9=e.RequestType8=e.RequestType7=e.RequestType6=e.RequestType5=e.RequestType4=e.RequestType3=e.RequestType2=e.RequestType1=e.RequestType=e.RequestType0=e.AbstractMessageSignature=e.ParameterStructures=e.ResponseError=e.ErrorCodes=void 0;var t=TT(),r;(function(_){_.ParseError=-32700,_.InvalidRequest=-32600,_.MethodNotFound=-32601,_.InvalidParams=-32602,_.InternalError=-32603,_.jsonrpcReservedErrorRangeStart=-32099,_.serverErrorStart=-32099,_.MessageWriteError=-32099,_.MessageReadError=-32098,_.PendingResponseRejected=-32097,_.ConnectionInactive=-32096,_.ServerNotInitialized=-32002,_.UnknownErrorCode=-32001,_.jsonrpcReservedErrorRangeEnd=-32e3,_.serverErrorEnd=-32e3})(r||(e.ErrorCodes=r={}));var i=class ave extends Error{static{o(this,"_ResponseError")}static{S(this,"ResponseError")}constructor(R,M,L){super(M),this.code=t.number(R)?R:r.UnknownErrorCode,this.data=L,Object.setPrototypeOf(this,ave.prototype)}toJson(){let R={code:this.code,message:this.message};return this.data!==void 0&&(R.data=this.data),R}};e.ResponseError=i;var n=class zE{static{o(this,"_ParameterStructures")}static{S(this,"ParameterStructures")}constructor(R){this.kind=R}static is(R){return R===zE.auto||R===zE.byName||R===zE.byPosition}toString(){return this.kind}};e.ParameterStructures=n,n.auto=new n("auto"),n.byPosition=new n("byPosition"),n.byName=new n("byName");var a=class{static{o(this,"AbstractMessageSignature")}static{S(this,"AbstractMessageSignature")}constructor(_,R){this.method=_,this.numberOfParams=R}get parameterStructures(){return n.auto}};e.AbstractMessageSignature=a;var s=class extends a{static{o(this,"RequestType0")}static{S(this,"RequestType0")}constructor(_){super(_,0)}};e.RequestType0=s;var l=class extends a{static{o(this,"RequestType")}static{S(this,"RequestType")}constructor(_,R=n.auto){super(_,1),this._parameterStructures=R}get parameterStructures(){return this._parameterStructures}};e.RequestType=l;var u=class extends a{static{o(this,"RequestType1")}static{S(this,"RequestType1")}constructor(_,R=n.auto){super(_,1),this._parameterStructures=R}get parameterStructures(){return this._parameterStructures}};e.RequestType1=u;var h=class extends a{static{o(this,"RequestType2")}static{S(this,"RequestType2")}constructor(_){super(_,2)}};e.RequestType2=h;var d=class extends a{static{o(this,"RequestType3")}static{S(this,"RequestType3")}constructor(_){super(_,3)}};e.RequestType3=d;var f=class extends a{static{o(this,"RequestType4")}static{S(this,"RequestType4")}constructor(_){super(_,4)}};e.RequestType4=f;var p=class extends a{static{o(this,"RequestType5")}static{S(this,"RequestType5")}constructor(_){super(_,5)}};e.RequestType5=p;var m=class extends a{static{o(this,"RequestType6")}static{S(this,"RequestType6")}constructor(_){super(_,6)}};e.RequestType6=m;var g=class extends a{static{o(this,"RequestType7")}static{S(this,"RequestType7")}constructor(_){super(_,7)}};e.RequestType7=g;var y=class extends a{static{o(this,"RequestType8")}static{S(this,"RequestType8")}constructor(_){super(_,8)}};e.RequestType8=y;var v=class extends a{static{o(this,"RequestType9")}static{S(this,"RequestType9")}constructor(_){super(_,9)}};e.RequestType9=v;var x=class extends a{static{o(this,"NotificationType")}static{S(this,"NotificationType")}constructor(_,R=n.auto){super(_,1),this._parameterStructures=R}get parameterStructures(){return this._parameterStructures}};e.NotificationType=x;var b=class extends a{static{o(this,"NotificationType0")}static{S(this,"NotificationType0")}constructor(_){super(_,0)}};e.NotificationType0=b;var T=class extends a{static{o(this,"NotificationType1")}static{S(this,"NotificationType1")}constructor(_,R=n.auto){super(_,1),this._parameterStructures=R}get parameterStructures(){return this._parameterStructures}};e.NotificationType1=T;var w=class extends a{static{o(this,"NotificationType2")}static{S(this,"NotificationType2")}constructor(_){super(_,2)}};e.NotificationType2=w;var C=class extends a{static{o(this,"NotificationType3")}static{S(this,"NotificationType3")}constructor(_){super(_,3)}};e.NotificationType3=C;var k=class extends a{static{o(this,"NotificationType4")}static{S(this,"NotificationType4")}constructor(_){super(_,4)}};e.NotificationType4=k;var E=class extends a{static{o(this,"NotificationType5")}static{S(this,"NotificationType5")}constructor(_){super(_,5)}};e.NotificationType5=E;var A=class extends a{static{o(this,"NotificationType6")}static{S(this,"NotificationType6")}constructor(_){super(_,6)}};e.NotificationType6=A;var N=class extends a{static{o(this,"NotificationType7")}static{S(this,"NotificationType7")}constructor(_){super(_,7)}};e.NotificationType7=N;var P=class extends a{static{o(this,"NotificationType8")}static{S(this,"NotificationType8")}constructor(_){super(_,8)}};e.NotificationType8=P;var I=class extends a{static{o(this,"NotificationType9")}static{S(this,"NotificationType9")}constructor(_){super(_,9)}};e.NotificationType9=I;var D;(function(_){function R(B){let O=B;return O&&t.string(O.method)&&(t.string(O.id)||t.number(O.id))}o(R,"isRequest"),S(R,"isRequest"),_.isRequest=R;function M(B){let O=B;return O&&t.string(O.method)&&B.id===void 0}o(M,"isNotification"),S(M,"isNotification"),_.isNotification=M;function L(B){let O=B;return O&&(O.result!==void 0||!!O.error)&&(t.string(O.id)||t.number(O.id)||O.id===null)}o(L,"isResponse"),S(L,"isResponse"),_.isResponse=L})(D||(e.Message=D={}))}}),sve=Lr({"../../node_modules/.pnpm/vscode-jsonrpc@8.2.0/node_modules/vscode-jsonrpc/lib/common/linkedMap.js"(e){"use strict";var t;Object.defineProperty(e,"__esModule",{value:!0}),e.LRUCache=e.LinkedMap=e.Touch=void 0;var r;(function(a){a.None=0,a.First=1,a.AsOld=a.First,a.Last=2,a.AsNew=a.Last})(r||(e.Touch=r={}));var i=class{static{o(this,"LinkedMap")}static{S(this,"LinkedMap")}constructor(){this[t]="LinkedMap",this._map=new Map,this._head=void 0,this._tail=void 0,this._size=0,this._state=0}clear(){this._map.clear(),this._head=void 0,this._tail=void 0,this._size=0,this._state++}isEmpty(){return!this._head&&!this._tail}get size(){return this._size}get first(){return this._head?.value}get last(){return this._tail?.value}has(a){return this._map.has(a)}get(a,s=r.None){let l=this._map.get(a);if(l)return s!==r.None&&this.touch(l,s),l.value}set(a,s,l=r.None){let u=this._map.get(a);if(u)u.value=s,l!==r.None&&this.touch(u,l);else{switch(u={key:a,value:s,next:void 0,previous:void 0},l){case r.None:this.addItemLast(u);break;case r.First:this.addItemFirst(u);break;case r.Last:this.addItemLast(u);break;default:this.addItemLast(u);break}this._map.set(a,u),this._size++}return this}delete(a){return!!this.remove(a)}remove(a){let s=this._map.get(a);if(s)return this._map.delete(a),this.removeItem(s),this._size--,s.value}shift(){if(!this._head&&!this._tail)return;if(!this._head||!this._tail)throw new Error("Invalid list");let a=this._head;return this._map.delete(a.key),this.removeItem(a),this._size--,a.value}forEach(a,s){let l=this._state,u=this._head;for(;u;){if(s?a.bind(s)(u.value,u.key,this):a(u.value,u.key,this),this._state!==l)throw new Error("LinkedMap got modified during iteration.");u=u.next}}keys(){let a=this._state,s=this._head,l={[Symbol.iterator]:()=>l,next:S(()=>{if(this._state!==a)throw new Error("LinkedMap got modified during iteration.");if(s){let u={value:s.key,done:!1};return s=s.next,u}else return{value:void 0,done:!0}},"next")};return l}values(){let a=this._state,s=this._head,l={[Symbol.iterator]:()=>l,next:S(()=>{if(this._state!==a)throw new Error("LinkedMap got modified during iteration.");if(s){let u={value:s.value,done:!1};return s=s.next,u}else return{value:void 0,done:!0}},"next")};return l}entries(){let a=this._state,s=this._head,l={[Symbol.iterator]:()=>l,next:S(()=>{if(this._state!==a)throw new Error("LinkedMap got modified during iteration.");if(s){let u={value:[s.key,s.value],done:!1};return s=s.next,u}else return{value:void 0,done:!0}},"next")};return l}[(t=Symbol.toStringTag,Symbol.iterator)](){return this.entries()}trimOld(a){if(a>=this.size)return;if(a===0){this.clear();return}let s=this._head,l=this.size;for(;s&&l>a;)this._map.delete(s.key),s=s.next,l--;this._head=s,this._size=l,s&&(s.previous=void 0),this._state++}addItemFirst(a){if(!this._head&&!this._tail)this._tail=a;else if(this._head)a.next=this._head,this._head.previous=a;else throw new Error("Invalid list");this._head=a,this._state++}addItemLast(a){if(!this._head&&!this._tail)this._head=a;else if(this._tail)a.previous=this._tail,this._tail.next=a;else throw new Error("Invalid list");this._tail=a,this._state++}removeItem(a){if(a===this._head&&a===this._tail)this._head=void 0,this._tail=void 0;else if(a===this._head){if(!a.next)throw new Error("Invalid list");a.next.previous=void 0,this._head=a.next}else if(a===this._tail){if(!a.previous)throw new Error("Invalid list");a.previous.next=void 0,this._tail=a.previous}else{let s=a.next,l=a.previous;if(!s||!l)throw new Error("Invalid list");s.previous=l,l.next=s}a.next=void 0,a.previous=void 0,this._state++}touch(a,s){if(!this._head||!this._tail)throw new Error("Invalid list");if(!(s!==r.First&&s!==r.Last)){if(s===r.First){if(a===this._head)return;let l=a.next,u=a.previous;a===this._tail?(u.next=void 0,this._tail=u):(l.previous=u,u.next=l),a.previous=void 0,a.next=this._head,this._head.previous=a,this._head=a,this._state++}else if(s===r.Last){if(a===this._tail)return;let l=a.next,u=a.previous;a===this._head?(l.previous=void 0,this._head=l):(l.previous=u,u.next=l),a.next=void 0,a.previous=this._tail,this._tail.next=a,this._tail=a,this._state++}}}toJSON(){let a=[];return this.forEach((s,l)=>{a.push([l,s])}),a}fromJSON(a){this.clear();for(let[s,l]of a)this.set(s,l)}};e.LinkedMap=i;var n=class extends i{static{o(this,"LRUCache")}static{S(this,"LRUCache")}constructor(a,s=1){super(),this._limit=a,this._ratio=Math.min(Math.max(0,s),1)}get limit(){return this._limit}set limit(a){this._limit=a,this.checkTrim()}get ratio(){return this._ratio}set ratio(a){this._ratio=Math.min(Math.max(0,a),1),this.checkTrim()}get(a,s=r.AsNew){return super.get(a,s)}peek(a){return super.get(a,r.None)}set(a,s){return super.set(a,s,r.Last),this.checkTrim(),this}checkTrim(){this.size>this._limit&&this.trimOld(Math.round(this._limit*this._ratio))}};e.LRUCache=n}}),ylt=Lr({"../../node_modules/.pnpm/vscode-jsonrpc@8.2.0/node_modules/vscode-jsonrpc/lib/common/disposable.js"(e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.Disposable=void 0;var t;(function(r){function i(n){return{dispose:n}}o(i,"create"),S(i,"create"),r.create=i})(t||(e.Disposable=t={}))}}),vlt=Lr({"../../node_modules/.pnpm/vscode-jsonrpc@8.2.0/node_modules/vscode-jsonrpc/lib/common/sharedArrayCancellation.js"(e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.SharedArrayReceiverStrategy=e.SharedArraySenderStrategy=void 0;var t=U5(),r;(function(l){l.Continue=0,l.Cancelled=1})(r||(r={}));var i=class{static{o(this,"SharedArraySenderStrategy")}static{S(this,"SharedArraySenderStrategy")}constructor(){this.buffers=new Map}enableCancellation(l){if(l.id===null)return;let u=new SharedArrayBuffer(4),h=new Int32Array(u,0,1);h[0]=r.Continue,this.buffers.set(l.id,u),l.$cancellationData=u}async sendCancellation(l,u){let h=this.buffers.get(u);if(h===void 0)return;let d=new Int32Array(h,0,1);Atomics.store(d,0,r.Cancelled)}cleanup(l){this.buffers.delete(l)}dispose(){this.buffers.clear()}};e.SharedArraySenderStrategy=i;var n=class{static{o(this,"SharedArrayBufferCancellationToken")}static{S(this,"SharedArrayBufferCancellationToken")}constructor(l){this.data=new Int32Array(l,0,1)}get isCancellationRequested(){return Atomics.load(this.data,0)===r.Cancelled}get onCancellationRequested(){throw new Error("Cancellation over SharedArrayBuffer doesn't support cancellation events")}},a=class{static{o(this,"SharedArrayBufferCancellationTokenSource")}static{S(this,"SharedArrayBufferCancellationTokenSource")}constructor(l){this.token=new n(l)}cancel(){}dispose(){}},s=class{static{o(this,"SharedArrayReceiverStrategy")}static{S(this,"SharedArrayReceiverStrategy")}constructor(){this.kind="request"}createCancellationTokenSource(l){let u=l.$cancellationData;return u===void 0?new t.CancellationTokenSource:new a(u)}};e.SharedArrayReceiverStrategy=s}}),ove=Lr({"../../node_modules/.pnpm/vscode-jsonrpc@8.2.0/node_modules/vscode-jsonrpc/lib/common/semaphore.js"(e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.Semaphore=void 0;var t=W0(),r=class{static{o(this,"Semaphore")}static{S(this,"Semaphore")}constructor(i=1){if(i<=0)throw new Error("Capacity must be greater than 0");this._capacity=i,this._active=0,this._waiting=[]}lock(i){return new Promise((n,a)=>{this._waiting.push({thunk:i,resolve:n,reject:a}),this.runNext()})}get active(){return this._active}runNext(){this._waiting.length===0||this._active===this._capacity||(0,t.default)().timer.setImmediate(()=>this.doRunNext())}doRunNext(){if(this._waiting.length===0||this._active===this._capacity)return;let i=this._waiting.shift();if(this._active++,this._active>this._capacity)throw new Error("To many thunks active");try{let n=i.thunk();n instanceof Promise?n.then(a=>{this._active--,i.resolve(a),this.runNext()},a=>{this._active--,i.reject(a),this.runNext()}):(this._active--,i.resolve(n),this.runNext())}catch(n){this._active--,i.reject(n),this.runNext()}}};e.Semaphore=r}}),xlt=Lr({"../../node_modules/.pnpm/vscode-jsonrpc@8.2.0/node_modules/vscode-jsonrpc/lib/common/messageReader.js"(e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.ReadableStreamMessageReader=e.AbstractMessageReader=e.MessageReader=void 0;var t=W0(),r=TT(),i=ny(),n=ove(),a;(function(h){function d(f){let p=f;return p&&r.func(p.listen)&&r.func(p.dispose)&&r.func(p.onError)&&r.func(p.onClose)&&r.func(p.onPartialMessage)}o(d,"is"),S(d,"is"),h.is=d})(a||(e.MessageReader=a={}));var s=class{static{o(this,"AbstractMessageReader")}static{S(this,"AbstractMessageReader")}constructor(){this.errorEmitter=new i.Emitter,this.closeEmitter=new i.Emitter,this.partialMessageEmitter=new i.Emitter}dispose(){this.errorEmitter.dispose(),this.closeEmitter.dispose()}get onError(){return this.errorEmitter.event}fireError(h){this.errorEmitter.fire(this.asError(h))}get onClose(){return this.closeEmitter.event}fireClose(){this.closeEmitter.fire(void 0)}get onPartialMessage(){return this.partialMessageEmitter.event}firePartialMessage(h){this.partialMessageEmitter.fire(h)}asError(h){return h instanceof Error?h:new Error(`Reader received error. Reason: ${r.string(h.message)?h.message:"unknown"}`)}};e.AbstractMessageReader=s;var l;(function(h){function d(f){let p,m,g,y=new Map,v,x=new Map;if(f===void 0||typeof f=="string")p=f??"utf-8";else{if(p=f.charset??"utf-8",f.contentDecoder!==void 0&&(g=f.contentDecoder,y.set(g.name,g)),f.contentDecoders!==void 0)for(let b of f.contentDecoders)y.set(b.name,b);if(f.contentTypeDecoder!==void 0&&(v=f.contentTypeDecoder,x.set(v.name,v)),f.contentTypeDecoders!==void 0)for(let b of f.contentTypeDecoders)x.set(b.name,b)}return v===void 0&&(v=(0,t.default)().applicationJson.decoder,x.set(v.name,v)),{charset:p,contentDecoder:g,contentDecoders:y,contentTypeDecoder:v,contentTypeDecoders:x}}o(d,"fromOptions"),S(d,"fromOptions"),h.fromOptions=d})(l||(l={}));var u=class extends s{static{o(this,"ReadableStreamMessageReader")}static{S(this,"ReadableStreamMessageReader")}constructor(h,d){super(),this.readable=h,this.options=l.fromOptions(d),this.buffer=(0,t.default)().messageBuffer.create(this.options.charset),this._partialMessageTimeout=1e4,this.nextMessageLength=-1,this.messageToken=0,this.readSemaphore=new n.Semaphore(1)}set partialMessageTimeout(h){this._partialMessageTimeout=h}get partialMessageTimeout(){return this._partialMessageTimeout}listen(h){this.nextMessageLength=-1,this.messageToken=0,this.partialMessageTimer=void 0,this.callback=h;let d=this.readable.onData(f=>{this.onData(f)});return this.readable.onError(f=>this.fireError(f)),this.readable.onClose(()=>this.fireClose()),d}onData(h){try{for(this.buffer.append(h);;){if(this.nextMessageLength===-1){let f=this.buffer.tryReadHeaders(!0);if(!f)return;let p=f.get("content-length");if(!p){this.fireError(new Error(`Header must provide a Content-Length property.
-${JSON.stringify(Object.fromEntries(f))}`));return}let m=parseInt(p);if(isNaN(m)){this.fireError(new Error(`Content-Length value must be a number. Got ${p}`));return}this.nextMessageLength=m}let d=this.buffer.tryReadBody(this.nextMessageLength);if(d===void 0){this.setPartialMessageTimer();return}this.clearPartialMessageTimer(),this.nextMessageLength=-1,this.readSemaphore.lock(async()=>{let f=this.options.contentDecoder!==void 0?await this.options.contentDecoder.decode(d):d,p=await this.options.contentTypeDecoder.decode(f,this.options);this.callback(p)}).catch(f=>{this.fireError(f)})}}catch(d){this.fireError(d)}}clearPartialMessageTimer(){this.partialMessageTimer&&(this.partialMessageTimer.dispose(),this.partialMessageTimer=void 0)}setPartialMessageTimer(){this.clearPartialMessageTimer(),!(this._partialMessageTimeout<=0)&&(this.partialMessageTimer=(0,t.default)().timer.setTimeout((h,d)=>{this.partialMessageTimer=void 0,h===this.messageToken&&(this.firePartialMessage({messageToken:h,waitingTime:d}),this.setPartialMessageTimer())},this._partialMessageTimeout,this.messageToken,this._partialMessageTimeout))}};e.ReadableStreamMessageReader=u}}),blt=Lr({"../../node_modules/.pnpm/vscode-jsonrpc@8.2.0/node_modules/vscode-jsonrpc/lib/common/messageWriter.js"(e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.WriteableStreamMessageWriter=e.AbstractMessageWriter=e.MessageWriter=void 0;var t=W0(),r=TT(),i=ove(),n=ny(),a="Content-Length: ",s=`\r
-`,l;(function(f){function p(m){let g=m;return g&&r.func(g.dispose)&&r.func(g.onClose)&&r.func(g.onError)&&r.func(g.write)}o(p,"is"),S(p,"is"),f.is=p})(l||(e.MessageWriter=l={}));var u=class{static{o(this,"AbstractMessageWriter")}static{S(this,"AbstractMessageWriter")}constructor(){this.errorEmitter=new n.Emitter,this.closeEmitter=new n.Emitter}dispose(){this.errorEmitter.dispose(),this.closeEmitter.dispose()}get onError(){return this.errorEmitter.event}fireError(f,p,m){this.errorEmitter.fire([this.asError(f),p,m])}get onClose(){return this.closeEmitter.event}fireClose(){this.closeEmitter.fire(void 0)}asError(f){return f instanceof Error?f:new Error(`Writer received error. Reason: ${r.string(f.message)?f.message:"unknown"}`)}};e.AbstractMessageWriter=u;var h;(function(f){function p(m){return m===void 0||typeof m=="string"?{charset:m??"utf-8",contentTypeEncoder:(0,t.default)().applicationJson.encoder}:{charset:m.charset??"utf-8",contentEncoder:m.contentEncoder,contentTypeEncoder:m.contentTypeEncoder??(0,t.default)().applicationJson.encoder}}o(p,"fromOptions"),S(p,"fromOptions"),f.fromOptions=p})(h||(h={}));var d=class extends u{static{o(this,"WriteableStreamMessageWriter")}static{S(this,"WriteableStreamMessageWriter")}constructor(f,p){super(),this.writable=f,this.options=h.fromOptions(p),this.errorCount=0,this.writeSemaphore=new i.Semaphore(1),this.writable.onError(m=>this.fireError(m)),this.writable.onClose(()=>this.fireClose())}async write(f){return this.writeSemaphore.lock(async()=>this.options.contentTypeEncoder.encode(f,this.options).then(m=>this.options.contentEncoder!==void 0?this.options.contentEncoder.encode(m):m).then(m=>{let g=[];return g.push(a,m.byteLength.toString(),s),g.push(s),this.doWrite(f,g,m)},m=>{throw this.fireError(m),m}))}async doWrite(f,p,m){try{return await this.writable.write(p.join(""),"ascii"),this.writable.write(m)}catch(g){return this.handleError(g,f),Promise.reject(g)}}handleError(f,p){this.errorCount++,this.fireError(f,p,this.errorCount)}end(){this.writable.end()}};e.WriteableStreamMessageWriter=d}}),Tlt=Lr({"../../node_modules/.pnpm/vscode-jsonrpc@8.2.0/node_modules/vscode-jsonrpc/lib/common/messageBuffer.js"(e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.AbstractMessageBuffer=void 0;var t=13,r=10,i=`\r
-`,n=class{static{o(this,"AbstractMessageBuffer")}static{S(this,"AbstractMessageBuffer")}constructor(a="utf-8"){this._encoding=a,this._chunks=[],this._totalLength=0}get encoding(){return this._encoding}append(a){let s=typeof a=="string"?this.fromString(a,this._encoding):a;this._chunks.push(s),this._totalLength+=s.byteLength}tryReadHeaders(a=!1){if(this._chunks.length===0)return;let s=0,l=0,u=0,h=0;e:for(;l<this._chunks.length;){let m=this._chunks[l];for(u=0;u<m.length;){switch(m[u]){case t:switch(s){case 0:s=1;break;case 2:s=3;break;default:s=0}break;case r:switch(s){case 1:s=2;break;case 3:s=4,u++;break e;default:s=0}break;default:s=0}u++}h+=m.byteLength,l++}if(s!==4)return;let d=this._read(h+u),f=new Map,p=this.toString(d,"ascii").split(i);if(p.length<2)return f;for(let m=0;m<p.length-2;m++){let g=p[m],y=g.indexOf(":");if(y===-1)throw new Error(`Message header must separate key and value using ':'
-${g}`);let v=g.substr(0,y),x=g.substr(y+1).trim();f.set(a?v.toLowerCase():v,x)}return f}tryReadBody(a){if(!(this._totalLength<a))return this._read(a)}get numberOfBytes(){return this._totalLength}_read(a){if(a===0)return this.emptyBuffer();if(a>this._totalLength)throw new Error("Cannot read so many bytes!");if(this._chunks[0].byteLength===a){let h=this._chunks[0];return this._chunks.shift(),this._totalLength-=a,this.asNative(h)}if(this._chunks[0].byteLength>a){let h=this._chunks[0],d=this.asNative(h,a);return this._chunks[0]=h.slice(a),this._totalLength-=a,d}let s=this.allocNative(a),l=0,u=0;for(;a>0;){let h=this._chunks[u];if(h.byteLength>a){let d=h.slice(0,a);s.set(d,l),l+=a,this._chunks[u]=h.slice(a),this._totalLength-=a,a-=a}else s.set(h,l),l+=h.byteLength,this._chunks.shift(),this._totalLength-=h.byteLength,a-=h.byteLength}return s}};e.AbstractMessageBuffer=n}}),Clt=Lr({"../../node_modules/.pnpm/vscode-jsonrpc@8.2.0/node_modules/vscode-jsonrpc/lib/common/connection.js"(e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.createMessageConnection=e.ConnectionOptions=e.MessageStrategy=e.CancellationStrategy=e.CancellationSenderStrategy=e.CancellationReceiverStrategy=e.RequestCancellationReceiverStrategy=e.IdCancellationReceiverStrategy=e.ConnectionStrategy=e.ConnectionError=e.ConnectionErrors=e.LogTraceNotification=e.SetTraceNotification=e.TraceFormat=e.TraceValues=e.Trace=e.NullLogger=e.ProgressType=e.ProgressToken=void 0;var t=W0(),r=TT(),i=nve(),n=sve(),a=ny(),s=U5(),l;(function(_){_.type=new i.NotificationType("$/cancelRequest")})(l||(l={}));var u;(function(_){function R(M){return typeof M=="string"||typeof M=="number"}o(R,"is"),S(R,"is"),_.is=R})(u||(e.ProgressToken=u={}));var h;(function(_){_.type=new i.NotificationType("$/progress")})(h||(h={}));var d=class{static{o(this,"ProgressType")}static{S(this,"ProgressType")}constructor(){}};e.ProgressType=d;var f;(function(_){function R(M){return r.func(M)}o(R,"is"),S(R,"is"),_.is=R})(f||(f={})),e.NullLogger=Object.freeze({error:S(()=>{},"error"),warn:S(()=>{},"warn"),info:S(()=>{},"info"),log:S(()=>{},"log")});var p;(function(_){_[_.Off=0]="Off",_[_.Messages=1]="Messages",_[_.Compact=2]="Compact",_[_.Verbose=3]="Verbose"})(p||(e.Trace=p={}));var m;(function(_){_.Off="off",_.Messages="messages",_.Compact="compact",_.Verbose="verbose"})(m||(e.TraceValues=m={})),(function(_){function R(L){if(!r.string(L))return _.Off;switch(L=L.toLowerCase(),L){case"off":return _.Off;case"messages":return _.Messages;case"compact":return _.Compact;case"verbose":return _.Verbose;default:return _.Off}}o(R,"fromString"),S(R,"fromString"),_.fromString=R;function M(L){switch(L){case _.Off:return"off";case _.Messages:return"messages";case _.Compact:return"compact";case _.Verbose:return"verbose";default:return"off"}}o(M,"toString4"),S(M,"toString"),_.toString=M})(p||(e.Trace=p={}));var g;(function(_){_.Text="text",_.JSON="json"})(g||(e.TraceFormat=g={})),(function(_){function R(M){return r.string(M)?(M=M.toLowerCase(),M==="json"?_.JSON:_.Text):_.Text}o(R,"fromString"),S(R,"fromString"),_.fromString=R})(g||(e.TraceFormat=g={}));var y;(function(_){_.type=new i.NotificationType("$/setTrace")})(y||(e.SetTraceNotification=y={}));var v;(function(_){_.type=new i.NotificationType("$/logTrace")})(v||(e.LogTraceNotification=v={}));var x;(function(_){_[_.Closed=1]="Closed",_[_.Disposed=2]="Disposed",_[_.AlreadyListening=3]="AlreadyListening"})(x||(e.ConnectionErrors=x={}));var b=class lve extends Error{static{o(this,"_ConnectionError")}static{S(this,"ConnectionError")}constructor(R,M){super(M),this.code=R,Object.setPrototypeOf(this,lve.prototype)}};e.ConnectionError=b;var T;(function(_){function R(M){let L=M;return L&&r.func(L.cancelUndispatched)}o(R,"is"),S(R,"is"),_.is=R})(T||(e.ConnectionStrategy=T={}));var w;(function(_){function R(M){let L=M;return L&&(L.kind===void 0||L.kind==="id")&&r.func(L.createCancellationTokenSource)&&(L.dispose===void 0||r.func(L.dispose))}o(R,"is"),S(R,"is"),_.is=R})(w||(e.IdCancellationReceiverStrategy=w={}));var C;(function(_){function R(M){let L=M;return L&&L.kind==="request"&&r.func(L.createCancellationTokenSource)&&(L.dispose===void 0||r.func(L.dispose))}o(R,"is"),S(R,"is"),_.is=R})(C||(e.RequestCancellationReceiverStrategy=C={}));var k;(function(_){_.Message=Object.freeze({createCancellationTokenSource(M){return new s.CancellationTokenSource}});function R(M){return w.is(M)||C.is(M)}o(R,"is"),S(R,"is"),_.is=R})(k||(e.CancellationReceiverStrategy=k={}));var E;(function(_){_.Message=Object.freeze({sendCancellation(M,L){return M.sendNotification(l.type,{id:L})},cleanup(M){}});function R(M){let L=M;return L&&r.func(L.sendCancellation)&&r.func(L.cleanup)}o(R,"is"),S(R,"is"),_.is=R})(E||(e.CancellationSenderStrategy=E={}));var A;(function(_){_.Message=Object.freeze({receiver:k.Message,sender:E.Message});function R(M){let L=M;return L&&k.is(L.receiver)&&E.is(L.sender)}o(R,"is"),S(R,"is"),_.is=R})(A||(e.CancellationStrategy=A={}));var N;(function(_){function R(M){let L=M;return L&&r.func(L.handleMessage)}o(R,"is"),S(R,"is"),_.is=R})(N||(e.MessageStrategy=N={}));var P;(function(_){function R(M){let L=M;return L&&(A.is(L.cancellationStrategy)||T.is(L.connectionStrategy)||N.is(L.messageStrategy))}o(R,"is"),S(R,"is"),_.is=R})(P||(e.ConnectionOptions=P={}));var I;(function(_){_[_.New=1]="New",_[_.Listening=2]="Listening",_[_.Closed=3]="Closed",_[_.Disposed=4]="Disposed"})(I||(I={}));function D(_,R,M,L){let B=M!==void 0?M:e.NullLogger,O=0,$=0,G=0,F="2.0",V,H=new Map,j,U=new Map,Q=new Map,Y,ae=new n.LinkedMap,J=new Map,te=new Set,re=new Map,ee=p.Off,Te=g.Text,ue,De=I.New,Ie=new a.Emitter,Ee=new a.Emitter,we=new a.Emitter,Me=new a.Emitter,$e=new a.Emitter,de=L&&L.cancellationStrategy?L.cancellationStrategy:A.Message;function rt(pe){if(pe===null)throw new Error("Can't send requests with id null since the response can't be correlated.");return"req-"+pe.toString()}o(rt,"createRequestQueueKey"),S(rt,"createRequestQueueKey");function ke(pe){return pe===null?"res-unknown-"+(++G).toString():"res-"+pe.toString()}o(ke,"createResponseQueueKey"),S(ke,"createResponseQueueKey");function Fe(){return"not-"+(++$).toString()}o(Fe,"createNotificationQueueKey"),S(Fe,"createNotificationQueueKey");function He(pe,Qe){i.Message.isRequest(Qe)?pe.set(rt(Qe.id),Qe):i.Message.isResponse(Qe)?pe.set(ke(Qe.id),Qe):pe.set(Fe(),Qe)}o(He,"addMessageToQueue"),S(He,"addMessageToQueue");function at(pe){}o(at,"cancelUndispatched"),S(at,"cancelUndispatched");function qe(){return De===I.Listening}o(qe,"isListening"),S(qe,"isListening");function Ue(){return De===I.Closed}o(Ue,"isClosed"),S(Ue,"isClosed");function ye(){return De===I.Disposed}o(ye,"isDisposed"),S(ye,"isDisposed");function ve(){(De===I.New||De===I.Listening)&&(De=I.Closed,Ee.fire(void 0))}o(ve,"closeHandler"),S(ve,"closeHandler");function ie(pe){Ie.fire([pe,void 0,void 0])}o(ie,"readErrorHandler"),S(ie,"readErrorHandler");function fe(pe){Ie.fire(pe)}o(fe,"writeErrorHandler"),S(fe,"writeErrorHandler"),_.onClose(ve),_.onError(ie),R.onClose(ve),R.onError(fe);function W(){Y||ae.size===0||(Y=(0,t.default)().timer.setImmediate(()=>{Y=void 0,K()}))}o(W,"triggerMessageQueue"),S(W,"triggerMessageQueue");function ce(pe){i.Message.isRequest(pe)?xe(pe):i.Message.isNotification(pe)?be(pe):i.Message.isResponse(pe)?Oe(pe):Be(pe)}o(ce,"handleMessage"),S(ce,"handleMessage");function K(){if(ae.size===0)return;let pe=ae.shift();try{let Qe=L?.messageStrategy;N.is(Qe)?Qe.handleMessage(pe,ce):ce(pe)}finally{W()}}o(K,"processMessageQueue"),S(K,"processMessageQueue");let Re=S(pe=>{try{if(i.Message.isNotification(pe)&&pe.method===l.type.method){let Qe=pe.params.id,nt=rt(Qe),dt=ae.get(nt);if(i.Message.isRequest(dt)){let Rt=L?.connectionStrategy,$t=Rt&&Rt.cancelUndispatched?Rt.cancelUndispatched(dt,at):void 0;if($t&&($t.error!==void 0||$t.result!==void 0)){ae.delete(nt),re.delete(Qe),$t.id=dt.id,Ye($t,pe.method,Date.now()),R.write($t).catch(()=>B.error("Sending response for canceled message failed."));return}}let Ft=re.get(Qe);if(Ft!==void 0){Ft.cancel(),st(pe);return}else te.add(Qe)}He(ae,pe)}finally{W()}},"callback");function xe(pe){if(ye())return;function Qe(pt,Se,it){let xt={jsonrpc:F,id:pe.id};pt instanceof i.ResponseError?xt.error=pt.toJson():xt.result=pt===void 0?null:pt,Ye(xt,Se,it),R.write(xt).catch(()=>B.error("Sending response failed."))}o(Qe,"reply"),S(Qe,"reply");function nt(pt,Se,it){let xt={jsonrpc:F,id:pe.id,error:pt.toJson()};Ye(xt,Se,it),R.write(xt).catch(()=>B.error("Sending response failed."))}o(nt,"replyError"),S(nt,"replyError");function dt(pt,Se,it){pt===void 0&&(pt=null);let xt={jsonrpc:F,id:pe.id,result:pt};Ye(xt,Se,it),R.write(xt).catch(()=>B.error("Sending response failed."))}o(dt,"replySuccess"),S(dt,"replySuccess"),le(pe);let Ft=H.get(pe.method),Rt,$t;Ft&&(Rt=Ft.type,$t=Ft.handler);let lr=Date.now();if($t||V){let pt=pe.id??String(Date.now()),Se=w.is(de.receiver)?de.receiver.createCancellationTokenSource(pt):de.receiver.createCancellationTokenSource(pe);pe.id!==null&&te.has(pe.id)&&Se.cancel(),pe.id!==null&&re.set(pt,Se);try{let it;if($t)if(pe.params===void 0){if(Rt!==void 0&&Rt.numberOfParams!==0){nt(new i.ResponseError(i.ErrorCodes.InvalidParams,`Request ${pe.method} defines ${Rt.numberOfParams} params but received none.`),pe.method,lr);return}it=$t(Se.token)}else if(Array.isArray(pe.params)){if(Rt!==void 0&&Rt.parameterStructures===i.ParameterStructures.byName){nt(new i.ResponseError(i.ErrorCodes.InvalidParams,`Request ${pe.method} defines parameters by name but received parameters by position`),pe.method,lr);return}it=$t(...pe.params,Se.token)}else{if(Rt!==void 0&&Rt.parameterStructures===i.ParameterStructures.byPosition){nt(new i.ResponseError(i.ErrorCodes.InvalidParams,`Request ${pe.method} defines parameters by position but received parameters by name`),pe.method,lr);return}it=$t(pe.params,Se.token)}else V&&(it=V(pe.method,pe.params,Se.token));let xt=it;it?xt.then?xt.then(rr=>{re.delete(pt),Qe(rr,pe.method,lr)},rr=>{re.delete(pt),rr instanceof i.ResponseError?nt(rr,pe.method,lr):rr&&r.string(rr.message)?nt(new i.ResponseError(i.ErrorCodes.InternalError,`Request ${pe.method} failed with message: ${rr.message}`),pe.method,lr):nt(new i.ResponseError(i.ErrorCodes.InternalError,`Request ${pe.method} failed unexpectedly without providing any details.`),pe.method,lr)}):(re.delete(pt),Qe(it,pe.method,lr)):(re.delete(pt),dt(it,pe.method,lr))}catch(it){re.delete(pt),it instanceof i.ResponseError?Qe(it,pe.method,lr):it&&r.string(it.message)?nt(new i.ResponseError(i.ErrorCodes.InternalError,`Request ${pe.method} failed with message: ${it.message}`),pe.method,lr):nt(new i.ResponseError(i.ErrorCodes.InternalError,`Request ${pe.method} failed unexpectedly without providing any details.`),pe.method,lr)}}else nt(new i.ResponseError(i.ErrorCodes.MethodNotFound,`Unhandled method ${pe.method}`),pe.method,lr)}o(xe,"handleRequest"),S(xe,"handleRequest");function Oe(pe){if(!ye())if(pe.id===null)pe.error?B.error(`Received response message without id: Error is: 
-${JSON.stringify(pe.error,void 0,4)}`):B.error("Received response message without id. No further error information provided.");else{let Qe=pe.id,nt=J.get(Qe);if(me(pe,nt),nt!==void 0){J.delete(Qe);try{if(pe.error){let dt=pe.error;nt.reject(new i.ResponseError(dt.code,dt.message,dt.data))}else if(pe.result!==void 0)nt.resolve(pe.result);else throw new Error("Should never happen.")}catch(dt){dt.message?B.error(`Response handler '${nt.method}' failed with message: ${dt.message}`):B.error(`Response handler '${nt.method}' failed unexpectedly.`)}}}}o(Oe,"handleResponse"),S(Oe,"handleResponse");function be(pe){if(ye())return;let Qe,nt;if(pe.method===l.type.method){let dt=pe.params.id;te.delete(dt),st(pe);return}else{let dt=U.get(pe.method);dt&&(nt=dt.handler,Qe=dt.type)}if(nt||j)try{if(st(pe),nt)if(pe.params===void 0)Qe!==void 0&&Qe.numberOfParams!==0&&Qe.parameterStructures!==i.ParameterStructures.byName&&B.error(`Notification ${pe.method} defines ${Qe.numberOfParams} params but received none.`),nt();else if(Array.isArray(pe.params)){let dt=pe.params;pe.method===h.type.method&&dt.length===2&&u.is(dt[0])?nt({token:dt[0],value:dt[1]}):(Qe!==void 0&&(Qe.parameterStructures===i.ParameterStructures.byName&&B.error(`Notification ${pe.method} defines parameters by name but received parameters by position`),Qe.numberOfParams!==pe.params.length&&B.error(`Notification ${pe.method} defines ${Qe.numberOfParams} params but received ${dt.length} arguments`)),nt(...dt))}else Qe!==void 0&&Qe.parameterStructures===i.ParameterStructures.byPosition&&B.error(`Notification ${pe.method} defines parameters by position but received parameters by name`),nt(pe.params);else j&&j(pe.method,pe.params)}catch(dt){dt.message?B.error(`Notification handler '${pe.method}' failed with message: ${dt.message}`):B.error(`Notification handler '${pe.method}' failed unexpectedly.`)}else we.fire(pe)}o(be,"handleNotification"),S(be,"handleNotification");function Be(pe){if(!pe){B.error("Received empty message.");return}B.error(`Received message which is neither a response nor a notification message:
-${JSON.stringify(pe,null,4)}`);let Qe=pe;if(r.string(Qe.id)||r.number(Qe.id)){let nt=Qe.id,dt=J.get(nt);dt&&dt.reject(new Error("The received response has neither a result nor an error property."))}}o(Be,"handleInvalidMessage"),S(Be,"handleInvalidMessage");function Ae(pe){if(pe!=null)switch(ee){case p.Verbose:return JSON.stringify(pe,null,4);case p.Compact:return JSON.stringify(pe);default:return}}o(Ae,"stringifyTrace"),S(Ae,"stringifyTrace");function Ve(pe){if(!(ee===p.Off||!ue))if(Te===g.Text){let Qe;(ee===p.Verbose||ee===p.Compact)&&pe.params&&(Qe=`Params: ${Ae(pe.params)}
+`,"\r"],(function(e){function t(a,s,l,u){return new PTe(a,s,l,u)}o(t,"create"),E(t,"create"),e.create=t;function r(a){let s=a;return!!(nt.defined(s)&&nt.string(s.uri)&&(nt.undefined(s.languageId)||nt.string(s.languageId))&&nt.uinteger(s.lineCount)&&nt.func(s.getText)&&nt.func(s.positionAt)&&nt.func(s.offsetAt))}o(r,"is"),E(r,"is"),e.is=r;function n(a,s){let l=a.getText(),u=i(s,(d,f)=>{let p=d.range.start.line-f.range.start.line;return p===0?d.range.start.character-f.range.start.character:p}),h=l.length;for(let d=u.length-1;d>=0;d--){let f=u[d],p=a.offsetAt(f.range.start),m=a.offsetAt(f.range.end);if(m<=h)l=l.substring(0,p)+f.newText+l.substring(m,l.length);else throw new Error("Overlapping edit");h=p}return l}o(n,"applyEdits"),E(n,"applyEdits"),e.applyEdits=n;function i(a,s){if(a.length<=1)return a;let l=a.length/2|0,u=a.slice(0,l),h=a.slice(l);i(u,s),i(h,s);let d=0,f=0,p=0;for(;d<u.length&&f<h.length;)s(u[d],h[f])<=0?a[p++]=u[d++]:a[p++]=h[f++];for(;d<u.length;)a[p++]=u[d++];for(;f<h.length;)a[p++]=h[f++];return a}o(i,"mergeSort2"),E(i,"mergeSort")})(bG||(bG={})),PTe=class{static{o(this,"FullTextDocument")}static{E(this,"FullTextDocument")}constructor(e,t,r,n){this._uri=e,this._languageId=t,this._version=r,this._content=n,this._lineOffsets=void 0}get uri(){return this._uri}get languageId(){return this._languageId}get version(){return this._version}getText(e){if(e){let t=this.offsetAt(e.start),r=this.offsetAt(e.end);return this._content.substring(t,r)}return this._content}update(e,t){this._content=e.text,this._version=t,this._lineOffsets=void 0}getLineOffsets(){if(this._lineOffsets===void 0){let e=[],t=this._content,r=!0;for(let n=0;n<t.length;n++){r&&(e.push(n),r=!1);let i=t.charAt(n);r=i==="\r"||i===`
+`,i==="\r"&&n+1<t.length&&t.charAt(n+1)===`
+`&&n++}r&&t.length>0&&e.push(t.length),this._lineOffsets=e}return this._lineOffsets}positionAt(e){e=Math.max(Math.min(e,this._content.length),0);let t=this.getLineOffsets(),r=0,n=t.length;if(n===0)return En.create(0,e);for(;r<n;){let a=Math.floor((r+n)/2);t[a]>e?n=a:r=a+1}let i=r-1;return En.create(i,e-t[i])}offsetAt(e){let t=this.getLineOffsets();if(e.line>=t.length)return this._content.length;if(e.line<0)return 0;let r=t[e.line],n=e.line+1<t.length?t[e.line+1]:this._content.length;return Math.max(Math.min(r+e.character,n),r)}get lineCount(){return this.getLineOffsets().length}},(function(e){let t=Object.prototype.toString;function r(m){return typeof m<"u"}o(r,"defined"),E(r,"defined"),e.defined=r;function n(m){return typeof m>"u"}o(n,"undefined2"),E(n,"undefined"),e.undefined=n;function i(m){return m===!0||m===!1}o(i,"boolean"),E(i,"boolean"),e.boolean=i;function a(m){return t.call(m)==="[object String]"}o(a,"string"),E(a,"string"),e.string=a;function s(m){return t.call(m)==="[object Number]"}o(s,"number"),E(s,"number"),e.number=s;function l(m,g,y){return t.call(m)==="[object Number]"&&g<=m&&m<=y}o(l,"numberRange"),E(l,"numberRange"),e.numberRange=l;function u(m){return t.call(m)==="[object Number]"&&-2147483648<=m&&m<=2147483647}o(u,"integer2"),E(u,"integer"),e.integer=u;function h(m){return t.call(m)==="[object Number]"&&0<=m&&m<=2147483647}o(h,"uinteger2"),E(h,"uinteger"),e.uinteger=h;function d(m){return t.call(m)==="[object Function]"}o(d,"func"),E(d,"func"),e.func=d;function f(m){return m!==null&&typeof m=="object"}o(f,"objectLiteral"),E(f,"objectLiteral"),e.objectLiteral=f;function p(m,g){return Array.isArray(m)&&m.every(g)}o(p,"typedArray"),E(p,"typedArray"),e.typedArray=p})(nt||(nt={}))}}),Qg=zr({"../../node_modules/.pnpm/vscode-jsonrpc@8.2.0/node_modules/vscode-jsonrpc/lib/common/ral.js"(e){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var t;function r(){if(t===void 0)throw new Error("No runtime abstraction layer installed");return t}o(r,"RAL"),E(r,"RAL"),(function(n){function i(a){if(a===void 0)throw new Error("No runtime abstraction layer provided");t=a}o(i,"install"),E(i,"install"),n.install=i})(r||(r={})),e.default=r}}),dw=zr({"../../node_modules/.pnpm/vscode-jsonrpc@8.2.0/node_modules/vscode-jsonrpc/lib/common/is.js"(e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.stringArray=e.array=e.func=e.error=e.number=e.string=e.boolean=void 0;function t(u){return u===!0||u===!1}o(t,"boolean"),E(t,"boolean"),e.boolean=t;function r(u){return typeof u=="string"||u instanceof String}o(r,"string"),E(r,"string"),e.string=r;function n(u){return typeof u=="number"||u instanceof Number}o(n,"number"),E(n,"number"),e.number=n;function i(u){return u instanceof Error}o(i,"error"),E(i,"error"),e.error=i;function a(u){return typeof u=="function"}o(a,"func"),E(a,"func"),e.func=a;function s(u){return Array.isArray(u)}o(s,"array"),E(s,"array"),e.array=s;function l(u){return s(u)&&u.every(h=>r(h))}o(l,"stringArray"),E(l,"stringArray"),e.stringArray=l}}),Iv=zr({"../../node_modules/.pnpm/vscode-jsonrpc@8.2.0/node_modules/vscode-jsonrpc/lib/common/events.js"(e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.Emitter=e.Event=void 0;var t=Qg(),r;(function(a){let s={dispose(){}};a.None=function(){return s}})(r||(e.Event=r={}));var n=class{static{o(this,"CallbackList")}static{E(this,"CallbackList")}add(a,s=null,l){this._callbacks||(this._callbacks=[],this._contexts=[]),this._callbacks.push(a),this._contexts.push(s),Array.isArray(l)&&l.push({dispose:E(()=>this.remove(a,s),"dispose")})}remove(a,s=null){if(!this._callbacks)return;let l=!1;for(let u=0,h=this._callbacks.length;u<h;u++)if(this._callbacks[u]===a)if(this._contexts[u]===s){this._callbacks.splice(u,1),this._contexts.splice(u,1);return}else l=!0;if(l)throw new Error("When adding a listener with a context, you should remove it with the same context")}invoke(...a){if(!this._callbacks)return[];let s=[],l=this._callbacks.slice(0),u=this._contexts.slice(0);for(let h=0,d=l.length;h<d;h++)try{s.push(l[h].apply(u[h],a))}catch(f){(0,t.default)().console.error(f)}return s}isEmpty(){return!this._callbacks||this._callbacks.length===0}dispose(){this._callbacks=void 0,this._contexts=void 0}},i=class Rwe{static{o(this,"_Emitter")}static{E(this,"Emitter")}constructor(s){this._options=s}get event(){return this._event||(this._event=(s,l,u)=>{this._callbacks||(this._callbacks=new n),this._options&&this._options.onFirstListenerAdd&&this._callbacks.isEmpty()&&this._options.onFirstListenerAdd(this),this._callbacks.add(s,l);let h={dispose:E(()=>{this._callbacks&&(this._callbacks.remove(s,l),h.dispose=Rwe._noop,this._options&&this._options.onLastListenerRemove&&this._callbacks.isEmpty()&&this._options.onLastListenerRemove(this))},"dispose")};return Array.isArray(u)&&u.push(h),h}),this._event}fire(s){this._callbacks&&this._callbacks.invoke.call(this._callbacks,s)}dispose(){this._callbacks&&(this._callbacks.dispose(),this._callbacks=void 0)}};e.Emitter=i,i._noop=function(){}}}),yR=zr({"../../node_modules/.pnpm/vscode-jsonrpc@8.2.0/node_modules/vscode-jsonrpc/lib/common/cancellation.js"(e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.CancellationTokenSource=e.CancellationToken=void 0;var t=Qg(),r=dw(),n=Iv(),i;(function(u){u.None=Object.freeze({isCancellationRequested:!1,onCancellationRequested:n.Event.None}),u.Cancelled=Object.freeze({isCancellationRequested:!0,onCancellationRequested:n.Event.None});function h(d){let f=d;return f&&(f===u.None||f===u.Cancelled||r.boolean(f.isCancellationRequested)&&!!f.onCancellationRequested)}o(h,"is"),E(h,"is"),u.is=h})(i||(e.CancellationToken=i={}));var a=Object.freeze(function(u,h){let d=(0,t.default)().timer.setTimeout(u.bind(h),0);return{dispose(){d.dispose()}}}),s=class{static{o(this,"MutableToken")}static{E(this,"MutableToken")}constructor(){this._isCancelled=!1}cancel(){this._isCancelled||(this._isCancelled=!0,this._emitter&&(this._emitter.fire(void 0),this.dispose()))}get isCancellationRequested(){return this._isCancelled}get onCancellationRequested(){return this._isCancelled?a:(this._emitter||(this._emitter=new n.Emitter),this._emitter.event)}dispose(){this._emitter&&(this._emitter.dispose(),this._emitter=void 0)}},l=class{static{o(this,"CancellationTokenSource3")}static{E(this,"CancellationTokenSource")}get token(){return this._token||(this._token=new s),this._token}cancel(){this._token?this._token.cancel():this._token=i.Cancelled}dispose(){this._token?this._token instanceof s&&this._token.dispose():this._token=i.None}};e.CancellationTokenSource=l}}),_we=zr({"../../node_modules/.pnpm/vscode-jsonrpc@8.2.0/node_modules/vscode-jsonrpc/lib/common/messages.js"(e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.Message=e.NotificationType9=e.NotificationType8=e.NotificationType7=e.NotificationType6=e.NotificationType5=e.NotificationType4=e.NotificationType3=e.NotificationType2=e.NotificationType1=e.NotificationType0=e.NotificationType=e.RequestType9=e.RequestType8=e.RequestType7=e.RequestType6=e.RequestType5=e.RequestType4=e.RequestType3=e.RequestType2=e.RequestType1=e.RequestType=e.RequestType0=e.AbstractMessageSignature=e.ParameterStructures=e.ResponseError=e.ErrorCodes=void 0;var t=dw(),r;(function(A){A.ParseError=-32700,A.InvalidRequest=-32600,A.MethodNotFound=-32601,A.InvalidParams=-32602,A.InternalError=-32603,A.jsonrpcReservedErrorRangeStart=-32099,A.serverErrorStart=-32099,A.MessageWriteError=-32099,A.MessageReadError=-32098,A.PendingResponseRejected=-32097,A.ConnectionInactive=-32096,A.ServerNotInitialized=-32002,A.UnknownErrorCode=-32001,A.jsonrpcReservedErrorRangeEnd=-32e3,A.serverErrorEnd=-32e3})(r||(e.ErrorCodes=r={}));var n=class Lwe extends Error{static{o(this,"_ResponseError")}static{E(this,"ResponseError")}constructor(M,D,P){super(D),this.code=t.number(M)?M:r.UnknownErrorCode,this.data=P,Object.setPrototypeOf(this,Lwe.prototype)}toJson(){let M={code:this.code,message:this.message};return this.data!==void 0&&(M.data=this.data),M}};e.ResponseError=n;var i=class i6{static{o(this,"_ParameterStructures")}static{E(this,"ParameterStructures")}constructor(M){this.kind=M}static is(M){return M===i6.auto||M===i6.byName||M===i6.byPosition}toString(){return this.kind}};e.ParameterStructures=i,i.auto=new i("auto"),i.byPosition=new i("byPosition"),i.byName=new i("byName");var a=class{static{o(this,"AbstractMessageSignature")}static{E(this,"AbstractMessageSignature")}constructor(A,M){this.method=A,this.numberOfParams=M}get parameterStructures(){return i.auto}};e.AbstractMessageSignature=a;var s=class extends a{static{o(this,"RequestType0")}static{E(this,"RequestType0")}constructor(A){super(A,0)}};e.RequestType0=s;var l=class extends a{static{o(this,"RequestType")}static{E(this,"RequestType")}constructor(A,M=i.auto){super(A,1),this._parameterStructures=M}get parameterStructures(){return this._parameterStructures}};e.RequestType=l;var u=class extends a{static{o(this,"RequestType1")}static{E(this,"RequestType1")}constructor(A,M=i.auto){super(A,1),this._parameterStructures=M}get parameterStructures(){return this._parameterStructures}};e.RequestType1=u;var h=class extends a{static{o(this,"RequestType2")}static{E(this,"RequestType2")}constructor(A){super(A,2)}};e.RequestType2=h;var d=class extends a{static{o(this,"RequestType3")}static{E(this,"RequestType3")}constructor(A){super(A,3)}};e.RequestType3=d;var f=class extends a{static{o(this,"RequestType4")}static{E(this,"RequestType4")}constructor(A){super(A,4)}};e.RequestType4=f;var p=class extends a{static{o(this,"RequestType5")}static{E(this,"RequestType5")}constructor(A){super(A,5)}};e.RequestType5=p;var m=class extends a{static{o(this,"RequestType6")}static{E(this,"RequestType6")}constructor(A){super(A,6)}};e.RequestType6=m;var g=class extends a{static{o(this,"RequestType7")}static{E(this,"RequestType7")}constructor(A){super(A,7)}};e.RequestType7=g;var y=class extends a{static{o(this,"RequestType8")}static{E(this,"RequestType8")}constructor(A){super(A,8)}};e.RequestType8=y;var v=class extends a{static{o(this,"RequestType9")}static{E(this,"RequestType9")}constructor(A){super(A,9)}};e.RequestType9=v;var x=class extends a{static{o(this,"NotificationType")}static{E(this,"NotificationType")}constructor(A,M=i.auto){super(A,1),this._parameterStructures=M}get parameterStructures(){return this._parameterStructures}};e.NotificationType=x;var b=class extends a{static{o(this,"NotificationType0")}static{E(this,"NotificationType0")}constructor(A){super(A,0)}};e.NotificationType0=b;var T=class extends a{static{o(this,"NotificationType1")}static{E(this,"NotificationType1")}constructor(A,M=i.auto){super(A,1),this._parameterStructures=M}get parameterStructures(){return this._parameterStructures}};e.NotificationType1=T;var k=class extends a{static{o(this,"NotificationType2")}static{E(this,"NotificationType2")}constructor(A){super(A,2)}};e.NotificationType2=k;var C=class extends a{static{o(this,"NotificationType3")}static{E(this,"NotificationType3")}constructor(A){super(A,3)}};e.NotificationType3=C;var w=class extends a{static{o(this,"NotificationType4")}static{E(this,"NotificationType4")}constructor(A){super(A,4)}};e.NotificationType4=w;var S=class extends a{static{o(this,"NotificationType5")}static{E(this,"NotificationType5")}constructor(A){super(A,5)}};e.NotificationType5=S;var R=class extends a{static{o(this,"NotificationType6")}static{E(this,"NotificationType6")}constructor(A){super(A,6)}};e.NotificationType6=R;var L=class extends a{static{o(this,"NotificationType7")}static{E(this,"NotificationType7")}constructor(A){super(A,7)}};e.NotificationType7=L;var N=class extends a{static{o(this,"NotificationType8")}static{E(this,"NotificationType8")}constructor(A){super(A,8)}};e.NotificationType8=N;var I=class extends a{static{o(this,"NotificationType9")}static{E(this,"NotificationType9")}constructor(A){super(A,9)}};e.NotificationType9=I;var _;(function(A){function M(B){let O=B;return O&&t.string(O.method)&&(t.string(O.id)||t.number(O.id))}o(M,"isRequest"),E(M,"isRequest"),A.isRequest=M;function D(B){let O=B;return O&&t.string(O.method)&&B.id===void 0}o(D,"isNotification"),E(D,"isNotification"),A.isNotification=D;function P(B){let O=B;return O&&(O.result!==void 0||!!O.error)&&(t.string(O.id)||t.number(O.id)||O.id===null)}o(P,"isResponse"),E(P,"isResponse"),A.isResponse=P})(_||(e.Message=_={}))}}),Dwe=zr({"../../node_modules/.pnpm/vscode-jsonrpc@8.2.0/node_modules/vscode-jsonrpc/lib/common/linkedMap.js"(e){"use strict";var t;Object.defineProperty(e,"__esModule",{value:!0}),e.LRUCache=e.LinkedMap=e.Touch=void 0;var r;(function(a){a.None=0,a.First=1,a.AsOld=a.First,a.Last=2,a.AsNew=a.Last})(r||(e.Touch=r={}));var n=class{static{o(this,"LinkedMap")}static{E(this,"LinkedMap")}constructor(){this[t]="LinkedMap",this._map=new Map,this._head=void 0,this._tail=void 0,this._size=0,this._state=0}clear(){this._map.clear(),this._head=void 0,this._tail=void 0,this._size=0,this._state++}isEmpty(){return!this._head&&!this._tail}get size(){return this._size}get first(){return this._head?.value}get last(){return this._tail?.value}has(a){return this._map.has(a)}get(a,s=r.None){let l=this._map.get(a);if(l)return s!==r.None&&this.touch(l,s),l.value}set(a,s,l=r.None){let u=this._map.get(a);if(u)u.value=s,l!==r.None&&this.touch(u,l);else{switch(u={key:a,value:s,next:void 0,previous:void 0},l){case r.None:this.addItemLast(u);break;case r.First:this.addItemFirst(u);break;case r.Last:this.addItemLast(u);break;default:this.addItemLast(u);break}this._map.set(a,u),this._size++}return this}delete(a){return!!this.remove(a)}remove(a){let s=this._map.get(a);if(s)return this._map.delete(a),this.removeItem(s),this._size--,s.value}shift(){if(!this._head&&!this._tail)return;if(!this._head||!this._tail)throw new Error("Invalid list");let a=this._head;return this._map.delete(a.key),this.removeItem(a),this._size--,a.value}forEach(a,s){let l=this._state,u=this._head;for(;u;){if(s?a.bind(s)(u.value,u.key,this):a(u.value,u.key,this),this._state!==l)throw new Error("LinkedMap got modified during iteration.");u=u.next}}keys(){let a=this._state,s=this._head,l={[Symbol.iterator]:()=>l,next:E(()=>{if(this._state!==a)throw new Error("LinkedMap got modified during iteration.");if(s){let u={value:s.key,done:!1};return s=s.next,u}else return{value:void 0,done:!0}},"next")};return l}values(){let a=this._state,s=this._head,l={[Symbol.iterator]:()=>l,next:E(()=>{if(this._state!==a)throw new Error("LinkedMap got modified during iteration.");if(s){let u={value:s.value,done:!1};return s=s.next,u}else return{value:void 0,done:!0}},"next")};return l}entries(){let a=this._state,s=this._head,l={[Symbol.iterator]:()=>l,next:E(()=>{if(this._state!==a)throw new Error("LinkedMap got modified during iteration.");if(s){let u={value:[s.key,s.value],done:!1};return s=s.next,u}else return{value:void 0,done:!0}},"next")};return l}[(t=Symbol.toStringTag,Symbol.iterator)](){return this.entries()}trimOld(a){if(a>=this.size)return;if(a===0){this.clear();return}let s=this._head,l=this.size;for(;s&&l>a;)this._map.delete(s.key),s=s.next,l--;this._head=s,this._size=l,s&&(s.previous=void 0),this._state++}addItemFirst(a){if(!this._head&&!this._tail)this._tail=a;else if(this._head)a.next=this._head,this._head.previous=a;else throw new Error("Invalid list");this._head=a,this._state++}addItemLast(a){if(!this._head&&!this._tail)this._head=a;else if(this._tail)a.previous=this._tail,this._tail.next=a;else throw new Error("Invalid list");this._tail=a,this._state++}removeItem(a){if(a===this._head&&a===this._tail)this._head=void 0,this._tail=void 0;else if(a===this._head){if(!a.next)throw new Error("Invalid list");a.next.previous=void 0,this._head=a.next}else if(a===this._tail){if(!a.previous)throw new Error("Invalid list");a.previous.next=void 0,this._tail=a.previous}else{let s=a.next,l=a.previous;if(!s||!l)throw new Error("Invalid list");s.previous=l,l.next=s}a.next=void 0,a.previous=void 0,this._state++}touch(a,s){if(!this._head||!this._tail)throw new Error("Invalid list");if(!(s!==r.First&&s!==r.Last)){if(s===r.First){if(a===this._head)return;let l=a.next,u=a.previous;a===this._tail?(u.next=void 0,this._tail=u):(l.previous=u,u.next=l),a.previous=void 0,a.next=this._head,this._head.previous=a,this._head=a,this._state++}else if(s===r.Last){if(a===this._tail)return;let l=a.next,u=a.previous;a===this._head?(l.previous=void 0,this._head=l):(l.previous=u,u.next=l),a.next=void 0,a.previous=this._tail,this._tail.next=a,this._tail=a,this._state++}}}toJSON(){let a=[];return this.forEach((s,l)=>{a.push([l,s])}),a}fromJSON(a){this.clear();for(let[s,l]of a)this.set(s,l)}};e.LinkedMap=n;var i=class extends n{static{o(this,"LRUCache")}static{E(this,"LRUCache")}constructor(a,s=1){super(),this._limit=a,this._ratio=Math.min(Math.max(0,s),1)}get limit(){return this._limit}set limit(a){this._limit=a,this.checkTrim()}get ratio(){return this._ratio}set ratio(a){this._ratio=Math.min(Math.max(0,a),1),this.checkTrim()}get(a,s=r.AsNew){return super.get(a,s)}peek(a){return super.get(a,r.None)}set(a,s){return super.set(a,s,r.Last),this.checkTrim(),this}checkTrim(){this.size>this._limit&&this.trimOld(Math.round(this._limit*this._ratio))}};e.LRUCache=i}}),E0t=zr({"../../node_modules/.pnpm/vscode-jsonrpc@8.2.0/node_modules/vscode-jsonrpc/lib/common/disposable.js"(e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.Disposable=void 0;var t;(function(r){function n(i){return{dispose:i}}o(n,"create"),E(n,"create"),r.create=n})(t||(e.Disposable=t={}))}}),A0t=zr({"../../node_modules/.pnpm/vscode-jsonrpc@8.2.0/node_modules/vscode-jsonrpc/lib/common/sharedArrayCancellation.js"(e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.SharedArrayReceiverStrategy=e.SharedArraySenderStrategy=void 0;var t=yR(),r;(function(l){l.Continue=0,l.Cancelled=1})(r||(r={}));var n=class{static{o(this,"SharedArraySenderStrategy")}static{E(this,"SharedArraySenderStrategy")}constructor(){this.buffers=new Map}enableCancellation(l){if(l.id===null)return;let u=new SharedArrayBuffer(4),h=new Int32Array(u,0,1);h[0]=r.Continue,this.buffers.set(l.id,u),l.$cancellationData=u}async sendCancellation(l,u){let h=this.buffers.get(u);if(h===void 0)return;let d=new Int32Array(h,0,1);Atomics.store(d,0,r.Cancelled)}cleanup(l){this.buffers.delete(l)}dispose(){this.buffers.clear()}};e.SharedArraySenderStrategy=n;var i=class{static{o(this,"SharedArrayBufferCancellationToken")}static{E(this,"SharedArrayBufferCancellationToken")}constructor(l){this.data=new Int32Array(l,0,1)}get isCancellationRequested(){return Atomics.load(this.data,0)===r.Cancelled}get onCancellationRequested(){throw new Error("Cancellation over SharedArrayBuffer doesn't support cancellation events")}},a=class{static{o(this,"SharedArrayBufferCancellationTokenSource")}static{E(this,"SharedArrayBufferCancellationTokenSource")}constructor(l){this.token=new i(l)}cancel(){}dispose(){}},s=class{static{o(this,"SharedArrayReceiverStrategy")}static{E(this,"SharedArrayReceiverStrategy")}constructor(){this.kind="request"}createCancellationTokenSource(l){let u=l.$cancellationData;return u===void 0?new t.CancellationTokenSource:new a(u)}};e.SharedArrayReceiverStrategy=s}}),Iwe=zr({"../../node_modules/.pnpm/vscode-jsonrpc@8.2.0/node_modules/vscode-jsonrpc/lib/common/semaphore.js"(e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.Semaphore=void 0;var t=Qg(),r=class{static{o(this,"Semaphore")}static{E(this,"Semaphore")}constructor(n=1){if(n<=0)throw new Error("Capacity must be greater than 0");this._capacity=n,this._active=0,this._waiting=[]}lock(n){return new Promise((i,a)=>{this._waiting.push({thunk:n,resolve:i,reject:a}),this.runNext()})}get active(){return this._active}runNext(){this._waiting.length===0||this._active===this._capacity||(0,t.default)().timer.setImmediate(()=>this.doRunNext())}doRunNext(){if(this._waiting.length===0||this._active===this._capacity)return;let n=this._waiting.shift();if(this._active++,this._active>this._capacity)throw new Error("To many thunks active");try{let i=n.thunk();i instanceof Promise?i.then(a=>{this._active--,n.resolve(a),this.runNext()},a=>{this._active--,n.reject(a),this.runNext()}):(this._active--,n.resolve(i),this.runNext())}catch(i){this._active--,n.reject(i),this.runNext()}}};e.Semaphore=r}}),R0t=zr({"../../node_modules/.pnpm/vscode-jsonrpc@8.2.0/node_modules/vscode-jsonrpc/lib/common/messageReader.js"(e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.ReadableStreamMessageReader=e.AbstractMessageReader=e.MessageReader=void 0;var t=Qg(),r=dw(),n=Iv(),i=Iwe(),a;(function(h){function d(f){let p=f;return p&&r.func(p.listen)&&r.func(p.dispose)&&r.func(p.onError)&&r.func(p.onClose)&&r.func(p.onPartialMessage)}o(d,"is"),E(d,"is"),h.is=d})(a||(e.MessageReader=a={}));var s=class{static{o(this,"AbstractMessageReader")}static{E(this,"AbstractMessageReader")}constructor(){this.errorEmitter=new n.Emitter,this.closeEmitter=new n.Emitter,this.partialMessageEmitter=new n.Emitter}dispose(){this.errorEmitter.dispose(),this.closeEmitter.dispose()}get onError(){return this.errorEmitter.event}fireError(h){this.errorEmitter.fire(this.asError(h))}get onClose(){return this.closeEmitter.event}fireClose(){this.closeEmitter.fire(void 0)}get onPartialMessage(){return this.partialMessageEmitter.event}firePartialMessage(h){this.partialMessageEmitter.fire(h)}asError(h){return h instanceof Error?h:new Error(`Reader received error. Reason: ${r.string(h.message)?h.message:"unknown"}`)}};e.AbstractMessageReader=s;var l;(function(h){function d(f){let p,m,g,y=new Map,v,x=new Map;if(f===void 0||typeof f=="string")p=f??"utf-8";else{if(p=f.charset??"utf-8",f.contentDecoder!==void 0&&(g=f.contentDecoder,y.set(g.name,g)),f.contentDecoders!==void 0)for(let b of f.contentDecoders)y.set(b.name,b);if(f.contentTypeDecoder!==void 0&&(v=f.contentTypeDecoder,x.set(v.name,v)),f.contentTypeDecoders!==void 0)for(let b of f.contentTypeDecoders)x.set(b.name,b)}return v===void 0&&(v=(0,t.default)().applicationJson.decoder,x.set(v.name,v)),{charset:p,contentDecoder:g,contentDecoders:y,contentTypeDecoder:v,contentTypeDecoders:x}}o(d,"fromOptions"),E(d,"fromOptions"),h.fromOptions=d})(l||(l={}));var u=class extends s{static{o(this,"ReadableStreamMessageReader")}static{E(this,"ReadableStreamMessageReader")}constructor(h,d){super(),this.readable=h,this.options=l.fromOptions(d),this.buffer=(0,t.default)().messageBuffer.create(this.options.charset),this._partialMessageTimeout=1e4,this.nextMessageLength=-1,this.messageToken=0,this.readSemaphore=new i.Semaphore(1)}set partialMessageTimeout(h){this._partialMessageTimeout=h}get partialMessageTimeout(){return this._partialMessageTimeout}listen(h){this.nextMessageLength=-1,this.messageToken=0,this.partialMessageTimer=void 0,this.callback=h;let d=this.readable.onData(f=>{this.onData(f)});return this.readable.onError(f=>this.fireError(f)),this.readable.onClose(()=>this.fireClose()),d}onData(h){try{for(this.buffer.append(h);;){if(this.nextMessageLength===-1){let f=this.buffer.tryReadHeaders(!0);if(!f)return;let p=f.get("content-length");if(!p){this.fireError(new Error(`Header must provide a Content-Length property.
+${JSON.stringify(Object.fromEntries(f))}`));return}let m=parseInt(p);if(isNaN(m)){this.fireError(new Error(`Content-Length value must be a number. Got ${p}`));return}this.nextMessageLength=m}let d=this.buffer.tryReadBody(this.nextMessageLength);if(d===void 0){this.setPartialMessageTimer();return}this.clearPartialMessageTimer(),this.nextMessageLength=-1,this.readSemaphore.lock(async()=>{let f=this.options.contentDecoder!==void 0?await this.options.contentDecoder.decode(d):d,p=await this.options.contentTypeDecoder.decode(f,this.options);this.callback(p)}).catch(f=>{this.fireError(f)})}}catch(d){this.fireError(d)}}clearPartialMessageTimer(){this.partialMessageTimer&&(this.partialMessageTimer.dispose(),this.partialMessageTimer=void 0)}setPartialMessageTimer(){this.clearPartialMessageTimer(),!(this._partialMessageTimeout<=0)&&(this.partialMessageTimer=(0,t.default)().timer.setTimeout((h,d)=>{this.partialMessageTimer=void 0,h===this.messageToken&&(this.firePartialMessage({messageToken:h,waitingTime:d}),this.setPartialMessageTimer())},this._partialMessageTimeout,this.messageToken,this._partialMessageTimeout))}};e.ReadableStreamMessageReader=u}}),_0t=zr({"../../node_modules/.pnpm/vscode-jsonrpc@8.2.0/node_modules/vscode-jsonrpc/lib/common/messageWriter.js"(e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.WriteableStreamMessageWriter=e.AbstractMessageWriter=e.MessageWriter=void 0;var t=Qg(),r=dw(),n=Iwe(),i=Iv(),a="Content-Length: ",s=`\r
+`,l;(function(f){function p(m){let g=m;return g&&r.func(g.dispose)&&r.func(g.onClose)&&r.func(g.onError)&&r.func(g.write)}o(p,"is"),E(p,"is"),f.is=p})(l||(e.MessageWriter=l={}));var u=class{static{o(this,"AbstractMessageWriter")}static{E(this,"AbstractMessageWriter")}constructor(){this.errorEmitter=new i.Emitter,this.closeEmitter=new i.Emitter}dispose(){this.errorEmitter.dispose(),this.closeEmitter.dispose()}get onError(){return this.errorEmitter.event}fireError(f,p,m){this.errorEmitter.fire([this.asError(f),p,m])}get onClose(){return this.closeEmitter.event}fireClose(){this.closeEmitter.fire(void 0)}asError(f){return f instanceof Error?f:new Error(`Writer received error. Reason: ${r.string(f.message)?f.message:"unknown"}`)}};e.AbstractMessageWriter=u;var h;(function(f){function p(m){return m===void 0||typeof m=="string"?{charset:m??"utf-8",contentTypeEncoder:(0,t.default)().applicationJson.encoder}:{charset:m.charset??"utf-8",contentEncoder:m.contentEncoder,contentTypeEncoder:m.contentTypeEncoder??(0,t.default)().applicationJson.encoder}}o(p,"fromOptions"),E(p,"fromOptions"),f.fromOptions=p})(h||(h={}));var d=class extends u{static{o(this,"WriteableStreamMessageWriter")}static{E(this,"WriteableStreamMessageWriter")}constructor(f,p){super(),this.writable=f,this.options=h.fromOptions(p),this.errorCount=0,this.writeSemaphore=new n.Semaphore(1),this.writable.onError(m=>this.fireError(m)),this.writable.onClose(()=>this.fireClose())}async write(f){return this.writeSemaphore.lock(async()=>this.options.contentTypeEncoder.encode(f,this.options).then(m=>this.options.contentEncoder!==void 0?this.options.contentEncoder.encode(m):m).then(m=>{let g=[];return g.push(a,m.byteLength.toString(),s),g.push(s),this.doWrite(f,g,m)},m=>{throw this.fireError(m),m}))}async doWrite(f,p,m){try{return await this.writable.write(p.join(""),"ascii"),this.writable.write(m)}catch(g){return this.handleError(g,f),Promise.reject(g)}}handleError(f,p){this.errorCount++,this.fireError(f,p,this.errorCount)}end(){this.writable.end()}};e.WriteableStreamMessageWriter=d}}),L0t=zr({"../../node_modules/.pnpm/vscode-jsonrpc@8.2.0/node_modules/vscode-jsonrpc/lib/common/messageBuffer.js"(e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.AbstractMessageBuffer=void 0;var t=13,r=10,n=`\r
+`,i=class{static{o(this,"AbstractMessageBuffer")}static{E(this,"AbstractMessageBuffer")}constructor(a="utf-8"){this._encoding=a,this._chunks=[],this._totalLength=0}get encoding(){return this._encoding}append(a){let s=typeof a=="string"?this.fromString(a,this._encoding):a;this._chunks.push(s),this._totalLength+=s.byteLength}tryReadHeaders(a=!1){if(this._chunks.length===0)return;let s=0,l=0,u=0,h=0;e:for(;l<this._chunks.length;){let m=this._chunks[l];for(u=0;u<m.length;){switch(m[u]){case t:switch(s){case 0:s=1;break;case 2:s=3;break;default:s=0}break;case r:switch(s){case 1:s=2;break;case 3:s=4,u++;break e;default:s=0}break;default:s=0}u++}h+=m.byteLength,l++}if(s!==4)return;let d=this._read(h+u),f=new Map,p=this.toString(d,"ascii").split(n);if(p.length<2)return f;for(let m=0;m<p.length-2;m++){let g=p[m],y=g.indexOf(":");if(y===-1)throw new Error(`Message header must separate key and value using ':'
+${g}`);let v=g.substr(0,y),x=g.substr(y+1).trim();f.set(a?v.toLowerCase():v,x)}return f}tryReadBody(a){if(!(this._totalLength<a))return this._read(a)}get numberOfBytes(){return this._totalLength}_read(a){if(a===0)return this.emptyBuffer();if(a>this._totalLength)throw new Error("Cannot read so many bytes!");if(this._chunks[0].byteLength===a){let h=this._chunks[0];return this._chunks.shift(),this._totalLength-=a,this.asNative(h)}if(this._chunks[0].byteLength>a){let h=this._chunks[0],d=this.asNative(h,a);return this._chunks[0]=h.slice(a),this._totalLength-=a,d}let s=this.allocNative(a),l=0,u=0;for(;a>0;){let h=this._chunks[u];if(h.byteLength>a){let d=h.slice(0,a);s.set(d,l),l+=a,this._chunks[u]=h.slice(a),this._totalLength-=a,a-=a}else s.set(h,l),l+=h.byteLength,this._chunks.shift(),this._totalLength-=h.byteLength,a-=h.byteLength}return s}};e.AbstractMessageBuffer=i}}),D0t=zr({"../../node_modules/.pnpm/vscode-jsonrpc@8.2.0/node_modules/vscode-jsonrpc/lib/common/connection.js"(e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.createMessageConnection=e.ConnectionOptions=e.MessageStrategy=e.CancellationStrategy=e.CancellationSenderStrategy=e.CancellationReceiverStrategy=e.RequestCancellationReceiverStrategy=e.IdCancellationReceiverStrategy=e.ConnectionStrategy=e.ConnectionError=e.ConnectionErrors=e.LogTraceNotification=e.SetTraceNotification=e.TraceFormat=e.TraceValues=e.Trace=e.NullLogger=e.ProgressType=e.ProgressToken=void 0;var t=Qg(),r=dw(),n=_we(),i=Dwe(),a=Iv(),s=yR(),l;(function(A){A.type=new n.NotificationType("$/cancelRequest")})(l||(l={}));var u;(function(A){function M(D){return typeof D=="string"||typeof D=="number"}o(M,"is"),E(M,"is"),A.is=M})(u||(e.ProgressToken=u={}));var h;(function(A){A.type=new n.NotificationType("$/progress")})(h||(h={}));var d=class{static{o(this,"ProgressType")}static{E(this,"ProgressType")}constructor(){}};e.ProgressType=d;var f;(function(A){function M(D){return r.func(D)}o(M,"is"),E(M,"is"),A.is=M})(f||(f={})),e.NullLogger=Object.freeze({error:E(()=>{},"error"),warn:E(()=>{},"warn"),info:E(()=>{},"info"),log:E(()=>{},"log")});var p;(function(A){A[A.Off=0]="Off",A[A.Messages=1]="Messages",A[A.Compact=2]="Compact",A[A.Verbose=3]="Verbose"})(p||(e.Trace=p={}));var m;(function(A){A.Off="off",A.Messages="messages",A.Compact="compact",A.Verbose="verbose"})(m||(e.TraceValues=m={})),(function(A){function M(P){if(!r.string(P))return A.Off;switch(P=P.toLowerCase(),P){case"off":return A.Off;case"messages":return A.Messages;case"compact":return A.Compact;case"verbose":return A.Verbose;default:return A.Off}}o(M,"fromString"),E(M,"fromString"),A.fromString=M;function D(P){switch(P){case A.Off:return"off";case A.Messages:return"messages";case A.Compact:return"compact";case A.Verbose:return"verbose";default:return"off"}}o(D,"toString4"),E(D,"toString"),A.toString=D})(p||(e.Trace=p={}));var g;(function(A){A.Text="text",A.JSON="json"})(g||(e.TraceFormat=g={})),(function(A){function M(D){return r.string(D)?(D=D.toLowerCase(),D==="json"?A.JSON:A.Text):A.Text}o(M,"fromString"),E(M,"fromString"),A.fromString=M})(g||(e.TraceFormat=g={}));var y;(function(A){A.type=new n.NotificationType("$/setTrace")})(y||(e.SetTraceNotification=y={}));var v;(function(A){A.type=new n.NotificationType("$/logTrace")})(v||(e.LogTraceNotification=v={}));var x;(function(A){A[A.Closed=1]="Closed",A[A.Disposed=2]="Disposed",A[A.AlreadyListening=3]="AlreadyListening"})(x||(e.ConnectionErrors=x={}));var b=class Mwe extends Error{static{o(this,"_ConnectionError")}static{E(this,"ConnectionError")}constructor(M,D){super(D),this.code=M,Object.setPrototypeOf(this,Mwe.prototype)}};e.ConnectionError=b;var T;(function(A){function M(D){let P=D;return P&&r.func(P.cancelUndispatched)}o(M,"is"),E(M,"is"),A.is=M})(T||(e.ConnectionStrategy=T={}));var k;(function(A){function M(D){let P=D;return P&&(P.kind===void 0||P.kind==="id")&&r.func(P.createCancellationTokenSource)&&(P.dispose===void 0||r.func(P.dispose))}o(M,"is"),E(M,"is"),A.is=M})(k||(e.IdCancellationReceiverStrategy=k={}));var C;(function(A){function M(D){let P=D;return P&&P.kind==="request"&&r.func(P.createCancellationTokenSource)&&(P.dispose===void 0||r.func(P.dispose))}o(M,"is"),E(M,"is"),A.is=M})(C||(e.RequestCancellationReceiverStrategy=C={}));var w;(function(A){A.Message=Object.freeze({createCancellationTokenSource(D){return new s.CancellationTokenSource}});function M(D){return k.is(D)||C.is(D)}o(M,"is"),E(M,"is"),A.is=M})(w||(e.CancellationReceiverStrategy=w={}));var S;(function(A){A.Message=Object.freeze({sendCancellation(D,P){return D.sendNotification(l.type,{id:P})},cleanup(D){}});function M(D){let P=D;return P&&r.func(P.sendCancellation)&&r.func(P.cleanup)}o(M,"is"),E(M,"is"),A.is=M})(S||(e.CancellationSenderStrategy=S={}));var R;(function(A){A.Message=Object.freeze({receiver:w.Message,sender:S.Message});function M(D){let P=D;return P&&w.is(P.receiver)&&S.is(P.sender)}o(M,"is"),E(M,"is"),A.is=M})(R||(e.CancellationStrategy=R={}));var L;(function(A){function M(D){let P=D;return P&&r.func(P.handleMessage)}o(M,"is"),E(M,"is"),A.is=M})(L||(e.MessageStrategy=L={}));var N;(function(A){function M(D){let P=D;return P&&(R.is(P.cancellationStrategy)||T.is(P.connectionStrategy)||L.is(P.messageStrategy))}o(M,"is"),E(M,"is"),A.is=M})(N||(e.ConnectionOptions=N={}));var I;(function(A){A[A.New=1]="New",A[A.Listening=2]="Listening",A[A.Closed=3]="Closed",A[A.Disposed=4]="Disposed"})(I||(I={}));function _(A,M,D,P){let B=D!==void 0?D:e.NullLogger,O=0,$=0,V=0,G="2.0",z,W=new Map,H,j=new Map,Q=new Map,U,oe=new i.LinkedMap,te=new Map,le=new Set,ie=new Map,ae=p.Off,Re=g.Text,be,Pe=I.New,Ge=new a.Emitter,Oe=new a.Emitter,ue=new a.Emitter,ye=new a.Emitter,ke=new a.Emitter,ce=P&&P.cancellationStrategy?P.cancellationStrategy:R.Message;function re(Ee){if(Ee===null)throw new Error("Can't send requests with id null since the response can't be correlated.");return"req-"+Ee.toString()}o(re,"createRequestQueueKey"),E(re,"createRequestQueueKey");function J(Ee){return Ee===null?"res-unknown-"+(++V).toString():"res-"+Ee.toString()}o(J,"createResponseQueueKey"),E(J,"createResponseQueueKey");function se(){return"not-"+(++$).toString()}o(se,"createNotificationQueueKey"),E(se,"createNotificationQueueKey");function ge(Ee,tt){n.Message.isRequest(tt)?Ee.set(re(tt.id),tt):n.Message.isResponse(tt)?Ee.set(J(tt.id),tt):Ee.set(se(),tt)}o(ge,"addMessageToQueue"),E(ge,"addMessageToQueue");function Te(Ee){}o(Te,"cancelUndispatched"),E(Te,"cancelUndispatched");function we(){return Pe===I.Listening}o(we,"isListening"),E(we,"isListening");function Me(){return Pe===I.Closed}o(Me,"isClosed"),E(Me,"isClosed");function ve(){return Pe===I.Disposed}o(ve,"isDisposed"),E(ve,"isDisposed");function ne(){(Pe===I.New||Pe===I.Listening)&&(Pe=I.Closed,Oe.fire(void 0))}o(ne,"closeHandler"),E(ne,"closeHandler");function q(Ee){Ge.fire([Ee,void 0,void 0])}o(q,"readErrorHandler"),E(q,"readErrorHandler");function he(Ee){Ge.fire(Ee)}o(he,"writeErrorHandler"),E(he,"writeErrorHandler"),A.onClose(ne),A.onError(q),M.onClose(ne),M.onError(he);function X(){U||oe.size===0||(U=(0,t.default)().timer.setImmediate(()=>{U=void 0,K()}))}o(X,"triggerMessageQueue"),E(X,"triggerMessageQueue");function fe(Ee){n.Message.isRequest(Ee)?_e(Ee):n.Message.isNotification(Ee)?Ne(Ee):n.Message.isResponse(Ee)?Be(Ee):He(Ee)}o(fe,"handleMessage"),E(fe,"handleMessage");function K(){if(oe.size===0)return;let Ee=oe.shift();try{let tt=P?.messageStrategy;L.is(tt)?tt.handleMessage(Ee,fe):fe(Ee)}finally{X()}}o(K,"processMessageQueue"),E(K,"processMessageQueue");let qe=E(Ee=>{try{if(n.Message.isNotification(Ee)&&Ee.method===l.type.method){let tt=Ee.params.id,at=re(tt),ot=oe.get(at);if(n.Message.isRequest(ot)){let Bt=P?.connectionStrategy,qt=Bt&&Bt.cancelUndispatched?Bt.cancelUndispatched(ot,Te):void 0;if(qt&&(qt.error!==void 0||qt.result!==void 0)){oe.delete(at),ie.delete(tt),qt.id=ot.id,Ke(qt,Ee.method,Date.now()),M.write(qt).catch(()=>B.error("Sending response for canceled message failed."));return}}let Wt=ie.get(tt);if(Wt!==void 0){Wt.cancel(),mt(Ee);return}else le.add(tt)}ge(oe,Ee)}finally{X()}},"callback");function _e(Ee){if(ve())return;function tt(Tt,De,it){let We={jsonrpc:G,id:Ee.id};Tt instanceof n.ResponseError?We.error=Tt.toJson():We.result=Tt===void 0?null:Tt,Ke(We,De,it),M.write(We).catch(()=>B.error("Sending response failed."))}o(tt,"reply"),E(tt,"reply");function at(Tt,De,it){let We={jsonrpc:G,id:Ee.id,error:Tt.toJson()};Ke(We,De,it),M.write(We).catch(()=>B.error("Sending response failed."))}o(at,"replyError"),E(at,"replyError");function ot(Tt,De,it){Tt===void 0&&(Tt=null);let We={jsonrpc:G,id:Ee.id,result:Tt};Ke(We,De,it),M.write(We).catch(()=>B.error("Sending response failed."))}o(ot,"replySuccess"),E(ot,"replySuccess"),xe(Ee);let Wt=W.get(Ee.method),Bt,qt;Wt&&(Bt=Wt.type,qt=Wt.handler);let vr=Date.now();if(qt||z){let Tt=Ee.id??String(Date.now()),De=k.is(ce.receiver)?ce.receiver.createCancellationTokenSource(Tt):ce.receiver.createCancellationTokenSource(Ee);Ee.id!==null&&le.has(Ee.id)&&De.cancel(),Ee.id!==null&&ie.set(Tt,De);try{let it;if(qt)if(Ee.params===void 0){if(Bt!==void 0&&Bt.numberOfParams!==0){at(new n.ResponseError(n.ErrorCodes.InvalidParams,`Request ${Ee.method} defines ${Bt.numberOfParams} params but received none.`),Ee.method,vr);return}it=qt(De.token)}else if(Array.isArray(Ee.params)){if(Bt!==void 0&&Bt.parameterStructures===n.ParameterStructures.byName){at(new n.ResponseError(n.ErrorCodes.InvalidParams,`Request ${Ee.method} defines parameters by name but received parameters by position`),Ee.method,vr);return}it=qt(...Ee.params,De.token)}else{if(Bt!==void 0&&Bt.parameterStructures===n.ParameterStructures.byPosition){at(new n.ResponseError(n.ErrorCodes.InvalidParams,`Request ${Ee.method} defines parameters by position but received parameters by name`),Ee.method,vr);return}it=qt(Ee.params,De.token)}else z&&(it=z(Ee.method,Ee.params,De.token));let We=it;it?We.then?We.then(rt=>{ie.delete(Tt),tt(rt,Ee.method,vr)},rt=>{ie.delete(Tt),rt instanceof n.ResponseError?at(rt,Ee.method,vr):rt&&r.string(rt.message)?at(new n.ResponseError(n.ErrorCodes.InternalError,`Request ${Ee.method} failed with message: ${rt.message}`),Ee.method,vr):at(new n.ResponseError(n.ErrorCodes.InternalError,`Request ${Ee.method} failed unexpectedly without providing any details.`),Ee.method,vr)}):(ie.delete(Tt),tt(it,Ee.method,vr)):(ie.delete(Tt),ot(it,Ee.method,vr))}catch(it){ie.delete(Tt),it instanceof n.ResponseError?tt(it,Ee.method,vr):it&&r.string(it.message)?at(new n.ResponseError(n.ErrorCodes.InternalError,`Request ${Ee.method} failed with message: ${it.message}`),Ee.method,vr):at(new n.ResponseError(n.ErrorCodes.InternalError,`Request ${Ee.method} failed unexpectedly without providing any details.`),Ee.method,vr)}}else at(new n.ResponseError(n.ErrorCodes.MethodNotFound,`Unhandled method ${Ee.method}`),Ee.method,vr)}o(_e,"handleRequest"),E(_e,"handleRequest");function Be(Ee){if(!ve())if(Ee.id===null)Ee.error?B.error(`Received response message without id: Error is: 
+${JSON.stringify(Ee.error,void 0,4)}`):B.error("Received response message without id. No further error information provided.");else{let tt=Ee.id,at=te.get(tt);if(Le(Ee,at),at!==void 0){te.delete(tt);try{if(Ee.error){let ot=Ee.error;at.reject(new n.ResponseError(ot.code,ot.message,ot.data))}else if(Ee.result!==void 0)at.resolve(Ee.result);else throw new Error("Should never happen.")}catch(ot){ot.message?B.error(`Response handler '${at.method}' failed with message: ${ot.message}`):B.error(`Response handler '${at.method}' failed unexpectedly.`)}}}}o(Be,"handleResponse"),E(Be,"handleResponse");function Ne(Ee){if(ve())return;let tt,at;if(Ee.method===l.type.method){let ot=Ee.params.id;le.delete(ot),mt(Ee);return}else{let ot=j.get(Ee.method);ot&&(at=ot.handler,tt=ot.type)}if(at||H)try{if(mt(Ee),at)if(Ee.params===void 0)tt!==void 0&&tt.numberOfParams!==0&&tt.parameterStructures!==n.ParameterStructures.byName&&B.error(`Notification ${Ee.method} defines ${tt.numberOfParams} params but received none.`),at();else if(Array.isArray(Ee.params)){let ot=Ee.params;Ee.method===h.type.method&&ot.length===2&&u.is(ot[0])?at({token:ot[0],value:ot[1]}):(tt!==void 0&&(tt.parameterStructures===n.ParameterStructures.byName&&B.error(`Notification ${Ee.method} defines parameters by name but received parameters by position`),tt.numberOfParams!==Ee.params.length&&B.error(`Notification ${Ee.method} defines ${tt.numberOfParams} params but received ${ot.length} arguments`)),at(...ot))}else tt!==void 0&&tt.parameterStructures===n.ParameterStructures.byPosition&&B.error(`Notification ${Ee.method} defines parameters by position but received parameters by name`),at(Ee.params);else H&&H(Ee.method,Ee.params)}catch(ot){ot.message?B.error(`Notification handler '${Ee.method}' failed with message: ${ot.message}`):B.error(`Notification handler '${Ee.method}' failed unexpectedly.`)}else ue.fire(Ee)}o(Ne,"handleNotification"),E(Ne,"handleNotification");function He(Ee){if(!Ee){B.error("Received empty message.");return}B.error(`Received message which is neither a response nor a notification message:
+${JSON.stringify(Ee,null,4)}`);let tt=Ee;if(r.string(tt.id)||r.number(tt.id)){let at=tt.id,ot=te.get(at);ot&&ot.reject(new Error("The received response has neither a result nor an error property."))}}o(He,"handleInvalidMessage"),E(He,"handleInvalidMessage");function $e(Ee){if(Ee!=null)switch(ae){case p.Verbose:return JSON.stringify(Ee,null,4);case p.Compact:return JSON.stringify(Ee);default:return}}o($e,"stringifyTrace"),E($e,"stringifyTrace");function Xe(Ee){if(!(ae===p.Off||!be))if(Re===g.Text){let tt;(ae===p.Verbose||ae===p.Compact)&&Ee.params&&(tt=`Params: ${$e(Ee.params)}
 
-`),ue.log(`Sending request '${pe.method} - (${pe.id})'.`,Qe)}else ot("send-request",pe)}o(Ve,"traceSendingRequest"),S(Ve,"traceSendingRequest");function Pe(pe){if(!(ee===p.Off||!ue))if(Te===g.Text){let Qe;(ee===p.Verbose||ee===p.Compact)&&(pe.params?Qe=`Params: ${Ae(pe.params)}
+`),be.log(`Sending request '${Ee.method} - (${Ee.id})'.`,tt)}else ft("send-request",Ee)}o(Xe,"traceSendingRequest"),E(Xe,"traceSendingRequest");function Fe(Ee){if(!(ae===p.Off||!be))if(Re===g.Text){let tt;(ae===p.Verbose||ae===p.Compact)&&(Ee.params?tt=`Params: ${$e(Ee.params)}
 
-`:Qe=`No parameters provided.
+`:tt=`No parameters provided.
 
-`),ue.log(`Sending notification '${pe.method}'.`,Qe)}else ot("send-notification",pe)}o(Pe,"traceSendingNotification"),S(Pe,"traceSendingNotification");function Ye(pe,Qe,nt){if(!(ee===p.Off||!ue))if(Te===g.Text){let dt;(ee===p.Verbose||ee===p.Compact)&&(pe.error&&pe.error.data?dt=`Error data: ${Ae(pe.error.data)}
+`),be.log(`Sending notification '${Ee.method}'.`,tt)}else ft("send-notification",Ee)}o(Fe,"traceSendingNotification"),E(Fe,"traceSendingNotification");function Ke(Ee,tt,at){if(!(ae===p.Off||!be))if(Re===g.Text){let ot;(ae===p.Verbose||ae===p.Compact)&&(Ee.error&&Ee.error.data?ot=`Error data: ${$e(Ee.error.data)}
 
-`:pe.result?dt=`Result: ${Ae(pe.result)}
+`:Ee.result?ot=`Result: ${$e(Ee.result)}
 
-`:pe.error===void 0&&(dt=`No result returned.
+`:Ee.error===void 0&&(ot=`No result returned.
 
-`)),ue.log(`Sending response '${Qe} - (${pe.id})'. Processing request took ${Date.now()-nt}ms`,dt)}else ot("send-response",pe)}o(Ye,"traceSendingResponse"),S(Ye,"traceSendingResponse");function le(pe){if(!(ee===p.Off||!ue))if(Te===g.Text){let Qe;(ee===p.Verbose||ee===p.Compact)&&pe.params&&(Qe=`Params: ${Ae(pe.params)}
+`)),be.log(`Sending response '${tt} - (${Ee.id})'. Processing request took ${Date.now()-at}ms`,ot)}else ft("send-response",Ee)}o(Ke,"traceSendingResponse"),E(Ke,"traceSendingResponse");function xe(Ee){if(!(ae===p.Off||!be))if(Re===g.Text){let tt;(ae===p.Verbose||ae===p.Compact)&&Ee.params&&(tt=`Params: ${$e(Ee.params)}
 
-`),ue.log(`Received request '${pe.method} - (${pe.id})'.`,Qe)}else ot("receive-request",pe)}o(le,"traceReceivedRequest"),S(le,"traceReceivedRequest");function st(pe){if(!(ee===p.Off||!ue||pe.method===v.type.method))if(Te===g.Text){let Qe;(ee===p.Verbose||ee===p.Compact)&&(pe.params?Qe=`Params: ${Ae(pe.params)}
+`),be.log(`Received request '${Ee.method} - (${Ee.id})'.`,tt)}else ft("receive-request",Ee)}o(xe,"traceReceivedRequest"),E(xe,"traceReceivedRequest");function mt(Ee){if(!(ae===p.Off||!be||Ee.method===v.type.method))if(Re===g.Text){let tt;(ae===p.Verbose||ae===p.Compact)&&(Ee.params?tt=`Params: ${$e(Ee.params)}
 
-`:Qe=`No parameters provided.
+`:tt=`No parameters provided.
 
-`),ue.log(`Received notification '${pe.method}'.`,Qe)}else ot("receive-notification",pe)}o(st,"traceReceivedNotification"),S(st,"traceReceivedNotification");function me(pe,Qe){if(!(ee===p.Off||!ue))if(Te===g.Text){let nt;if((ee===p.Verbose||ee===p.Compact)&&(pe.error&&pe.error.data?nt=`Error data: ${Ae(pe.error.data)}
+`),be.log(`Received notification '${Ee.method}'.`,tt)}else ft("receive-notification",Ee)}o(mt,"traceReceivedNotification"),E(mt,"traceReceivedNotification");function Le(Ee,tt){if(!(ae===p.Off||!be))if(Re===g.Text){let at;if((ae===p.Verbose||ae===p.Compact)&&(Ee.error&&Ee.error.data?at=`Error data: ${$e(Ee.error.data)}
 
-`:pe.result?nt=`Result: ${Ae(pe.result)}
+`:Ee.result?at=`Result: ${$e(Ee.result)}
 
-`:pe.error===void 0&&(nt=`No result returned.
+`:Ee.error===void 0&&(at=`No result returned.
 
-`)),Qe){let dt=pe.error?` Request failed: ${pe.error.message} (${pe.error.code}).`:"";ue.log(`Received response '${Qe.method} - (${pe.id})' in ${Date.now()-Qe.timerStart}ms.${dt}`,nt)}else ue.log(`Received response ${pe.id} without active response promise.`,nt)}else ot("receive-response",pe)}o(me,"traceReceivedResponse"),S(me,"traceReceivedResponse");function ot(pe,Qe){if(!ue||ee===p.Off)return;let nt={isLSPMessage:!0,type:pe,message:Qe,timestamp:Date.now()};ue.log(nt)}o(ot,"logLSPMessage"),S(ot,"logLSPMessage");function kt(){if(Ue())throw new b(x.Closed,"Connection is closed.");if(ye())throw new b(x.Disposed,"Connection is disposed.")}o(kt,"throwIfClosedOrDisposed"),S(kt,"throwIfClosedOrDisposed");function Gt(){if(qe())throw new b(x.AlreadyListening,"Connection is already listening")}o(Gt,"throwIfListening"),S(Gt,"throwIfListening");function Tt(){if(!qe())throw new Error("Call listen() first.")}o(Tt,"throwIfNotListening"),S(Tt,"throwIfNotListening");function Et(pe){return pe===void 0?null:pe}o(Et,"undefinedToNull"),S(Et,"undefinedToNull");function yt(pe){if(pe!==null)return pe}o(yt,"nullToUndefined"),S(yt,"nullToUndefined");function oe(pe){return pe!=null&&!Array.isArray(pe)&&typeof pe=="object"}o(oe,"isNamedParam"),S(oe,"isNamedParam");function ht(pe,Qe){switch(pe){case i.ParameterStructures.auto:return oe(Qe)?yt(Qe):[Et(Qe)];case i.ParameterStructures.byName:if(!oe(Qe))throw new Error("Received parameters by name but param is not an object literal.");return yt(Qe);case i.ParameterStructures.byPosition:return[Et(Qe)];default:throw new Error(`Unknown parameter structure ${pe.toString()}`)}}o(ht,"computeSingleParam"),S(ht,"computeSingleParam");function gt(pe,Qe){let nt,dt=pe.numberOfParams;switch(dt){case 0:nt=void 0;break;case 1:nt=ht(pe.parameterStructures,Qe[0]);break;default:nt=[];for(let Ft=0;Ft<Qe.length&&Ft<dt;Ft++)nt.push(Et(Qe[Ft]));if(Qe.length<dt)for(let Ft=Qe.length;Ft<dt;Ft++)nt.push(null);break}return nt}o(gt,"computeMessageParams"),S(gt,"computeMessageParams");let et={sendNotification:S((pe,...Qe)=>{kt();let nt,dt;if(r.string(pe)){nt=pe;let Rt=Qe[0],$t=0,lr=i.ParameterStructures.auto;i.ParameterStructures.is(Rt)&&($t=1,lr=Rt);let pt=Qe.length,Se=pt-$t;switch(Se){case 0:dt=void 0;break;case 1:dt=ht(lr,Qe[$t]);break;default:if(lr===i.ParameterStructures.byName)throw new Error(`Received ${Se} parameters for 'by Name' notification parameter structure.`);dt=Qe.slice($t,pt).map(it=>Et(it));break}}else{let Rt=Qe;nt=pe.method,dt=gt(pe,Rt)}let Ft={jsonrpc:F,method:nt,params:dt};return Pe(Ft),R.write(Ft).catch(Rt=>{throw B.error("Sending notification failed."),Rt})},"sendNotification"),onNotification:S((pe,Qe)=>{kt();let nt;return r.func(pe)?j=pe:Qe&&(r.string(pe)?(nt=pe,U.set(pe,{type:void 0,handler:Qe})):(nt=pe.method,U.set(pe.method,{type:pe,handler:Qe}))),{dispose:S(()=>{nt!==void 0?U.delete(nt):j=void 0},"dispose")}},"onNotification"),onProgress:S((pe,Qe,nt)=>{if(Q.has(Qe))throw new Error(`Progress handler for token ${Qe} already registered`);return Q.set(Qe,nt),{dispose:S(()=>{Q.delete(Qe)},"dispose")}},"onProgress"),sendProgress:S((pe,Qe,nt)=>et.sendNotification(h.type,{token:Qe,value:nt}),"sendProgress"),onUnhandledProgress:Me.event,sendRequest:S((pe,...Qe)=>{kt(),Tt();let nt,dt,Ft;if(r.string(pe)){nt=pe;let pt=Qe[0],Se=Qe[Qe.length-1],it=0,xt=i.ParameterStructures.auto;i.ParameterStructures.is(pt)&&(it=1,xt=pt);let rr=Qe.length;s.CancellationToken.is(Se)&&(rr=rr-1,Ft=Se);let _r=rr-it;switch(_r){case 0:dt=void 0;break;case 1:dt=ht(xt,Qe[it]);break;default:if(xt===i.ParameterStructures.byName)throw new Error(`Received ${_r} parameters for 'by Name' request parameter structure.`);dt=Qe.slice(it,rr).map(Ur=>Et(Ur));break}}else{let pt=Qe;nt=pe.method,dt=gt(pe,pt);let Se=pe.numberOfParams;Ft=s.CancellationToken.is(pt[Se])?pt[Se]:void 0}let Rt=O++,$t;Ft&&($t=Ft.onCancellationRequested(()=>{let pt=de.sender.sendCancellation(et,Rt);return pt===void 0?(B.log(`Received no promise from cancellation strategy when cancelling id ${Rt}`),Promise.resolve()):pt.catch(()=>{B.log(`Sending cancellation messages for id ${Rt} failed`)})}));let lr={jsonrpc:F,id:Rt,method:nt,params:dt};return Ve(lr),typeof de.sender.enableCancellation=="function"&&de.sender.enableCancellation(lr),new Promise(async(pt,Se)=>{let it=S(_r=>{pt(_r),de.sender.cleanup(Rt),$t?.dispose()},"resolveWithCleanup"),xt=S(_r=>{Se(_r),de.sender.cleanup(Rt),$t?.dispose()},"rejectWithCleanup"),rr={method:nt,timerStart:Date.now(),resolve:it,reject:xt};try{await R.write(lr),J.set(Rt,rr)}catch(_r){throw B.error("Sending request failed."),rr.reject(new i.ResponseError(i.ErrorCodes.MessageWriteError,_r.message?_r.message:"Unknown reason")),_r}})},"sendRequest"),onRequest:S((pe,Qe)=>{kt();let nt=null;return f.is(pe)?(nt=void 0,V=pe):r.string(pe)?(nt=null,Qe!==void 0&&(nt=pe,H.set(pe,{handler:Qe,type:void 0}))):Qe!==void 0&&(nt=pe.method,H.set(pe.method,{type:pe,handler:Qe})),{dispose:S(()=>{nt!==null&&(nt!==void 0?H.delete(nt):V=void 0)},"dispose")}},"onRequest"),hasPendingResponse:S(()=>J.size>0,"hasPendingResponse"),trace:S(async(pe,Qe,nt)=>{let dt=!1,Ft=g.Text;nt!==void 0&&(r.boolean(nt)?dt=nt:(dt=nt.sendNotification||!1,Ft=nt.traceFormat||g.Text)),ee=pe,Te=Ft,ee===p.Off?ue=void 0:ue=Qe,dt&&!Ue()&&!ye()&&await et.sendNotification(y.type,{value:p.toString(pe)})},"trace"),onError:Ie.event,onClose:Ee.event,onUnhandledNotification:we.event,onDispose:$e.event,end:S(()=>{R.end()},"end"),dispose:S(()=>{if(ye())return;De=I.Disposed,$e.fire(void 0);let pe=new i.ResponseError(i.ErrorCodes.PendingResponseRejected,"Pending response rejected since connection got disposed");for(let Qe of J.values())Qe.reject(pe);J=new Map,re=new Map,te=new Set,ae=new n.LinkedMap,r.func(R.dispose)&&R.dispose(),r.func(_.dispose)&&_.dispose()},"dispose"),listen:S(()=>{kt(),Gt(),De=I.Listening,_.listen(Re)},"listen"),inspect:S(()=>{(0,t.default)().console.log("inspect")},"inspect")};return et.onNotification(v.type,pe=>{if(ee===p.Off||!ue)return;let Qe=ee===p.Verbose||ee===p.Compact;ue.log(pe.message,Qe?pe.verbose:void 0)}),et.onNotification(h.type,pe=>{let Qe=Q.get(pe.token);Qe?Qe(pe.value):Me.fire(pe)}),et}o(D,"createMessageConnection"),S(D,"createMessageConnection"),e.createMessageConnection=D}}),fF=Lr({"../../node_modules/.pnpm/vscode-jsonrpc@8.2.0/node_modules/vscode-jsonrpc/lib/common/api.js"(e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.ProgressType=e.ProgressToken=e.createMessageConnection=e.NullLogger=e.ConnectionOptions=e.ConnectionStrategy=e.AbstractMessageBuffer=e.WriteableStreamMessageWriter=e.AbstractMessageWriter=e.MessageWriter=e.ReadableStreamMessageReader=e.AbstractMessageReader=e.MessageReader=e.SharedArrayReceiverStrategy=e.SharedArraySenderStrategy=e.CancellationToken=e.CancellationTokenSource=e.Emitter=e.Event=e.Disposable=e.LRUCache=e.Touch=e.LinkedMap=e.ParameterStructures=e.NotificationType9=e.NotificationType8=e.NotificationType7=e.NotificationType6=e.NotificationType5=e.NotificationType4=e.NotificationType3=e.NotificationType2=e.NotificationType1=e.NotificationType0=e.NotificationType=e.ErrorCodes=e.ResponseError=e.RequestType9=e.RequestType8=e.RequestType7=e.RequestType6=e.RequestType5=e.RequestType4=e.RequestType3=e.RequestType2=e.RequestType1=e.RequestType0=e.RequestType=e.Message=e.RAL=void 0,e.MessageStrategy=e.CancellationStrategy=e.CancellationSenderStrategy=e.CancellationReceiverStrategy=e.ConnectionError=e.ConnectionErrors=e.LogTraceNotification=e.SetTraceNotification=e.TraceFormat=e.TraceValues=e.Trace=void 0;var t=nve();Object.defineProperty(e,"Message",{enumerable:!0,get:S(function(){return t.Message},"get")}),Object.defineProperty(e,"RequestType",{enumerable:!0,get:S(function(){return t.RequestType},"get")}),Object.defineProperty(e,"RequestType0",{enumerable:!0,get:S(function(){return t.RequestType0},"get")}),Object.defineProperty(e,"RequestType1",{enumerable:!0,get:S(function(){return t.RequestType1},"get")}),Object.defineProperty(e,"RequestType2",{enumerable:!0,get:S(function(){return t.RequestType2},"get")}),Object.defineProperty(e,"RequestType3",{enumerable:!0,get:S(function(){return t.RequestType3},"get")}),Object.defineProperty(e,"RequestType4",{enumerable:!0,get:S(function(){return t.RequestType4},"get")}),Object.defineProperty(e,"RequestType5",{enumerable:!0,get:S(function(){return t.RequestType5},"get")}),Object.defineProperty(e,"RequestType6",{enumerable:!0,get:S(function(){return t.RequestType6},"get")}),Object.defineProperty(e,"RequestType7",{enumerable:!0,get:S(function(){return t.RequestType7},"get")}),Object.defineProperty(e,"RequestType8",{enumerable:!0,get:S(function(){return t.RequestType8},"get")}),Object.defineProperty(e,"RequestType9",{enumerable:!0,get:S(function(){return t.RequestType9},"get")}),Object.defineProperty(e,"ResponseError",{enumerable:!0,get:S(function(){return t.ResponseError},"get")}),Object.defineProperty(e,"ErrorCodes",{enumerable:!0,get:S(function(){return t.ErrorCodes},"get")}),Object.defineProperty(e,"NotificationType",{enumerable:!0,get:S(function(){return t.NotificationType},"get")}),Object.defineProperty(e,"NotificationType0",{enumerable:!0,get:S(function(){return t.NotificationType0},"get")}),Object.defineProperty(e,"NotificationType1",{enumerable:!0,get:S(function(){return t.NotificationType1},"get")}),Object.defineProperty(e,"NotificationType2",{enumerable:!0,get:S(function(){return t.NotificationType2},"get")}),Object.defineProperty(e,"NotificationType3",{enumerable:!0,get:S(function(){return t.NotificationType3},"get")}),Object.defineProperty(e,"NotificationType4",{enumerable:!0,get:S(function(){return t.NotificationType4},"get")}),Object.defineProperty(e,"NotificationType5",{enumerable:!0,get:S(function(){return t.NotificationType5},"get")}),Object.defineProperty(e,"NotificationType6",{enumerable:!0,get:S(function(){return t.NotificationType6},"get")}),Object.defineProperty(e,"NotificationType7",{enumerable:!0,get:S(function(){return t.NotificationType7},"get")}),Object.defineProperty(e,"NotificationType8",{enumerable:!0,get:S(function(){return t.NotificationType8},"get")}),Object.defineProperty(e,"NotificationType9",{enumerable:!0,get:S(function(){return t.NotificationType9},"get")}),Object.defineProperty(e,"ParameterStructures",{enumerable:!0,get:S(function(){return t.ParameterStructures},"get")});var r=sve();Object.defineProperty(e,"LinkedMap",{enumerable:!0,get:S(function(){return r.LinkedMap},"get")}),Object.defineProperty(e,"LRUCache",{enumerable:!0,get:S(function(){return r.LRUCache},"get")}),Object.defineProperty(e,"Touch",{enumerable:!0,get:S(function(){return r.Touch},"get")});var i=ylt();Object.defineProperty(e,"Disposable",{enumerable:!0,get:S(function(){return i.Disposable},"get")});var n=ny();Object.defineProperty(e,"Event",{enumerable:!0,get:S(function(){return n.Event},"get")}),Object.defineProperty(e,"Emitter",{enumerable:!0,get:S(function(){return n.Emitter},"get")});var a=U5();Object.defineProperty(e,"CancellationTokenSource",{enumerable:!0,get:S(function(){return a.CancellationTokenSource},"get")}),Object.defineProperty(e,"CancellationToken",{enumerable:!0,get:S(function(){return a.CancellationToken},"get")});var s=vlt();Object.defineProperty(e,"SharedArraySenderStrategy",{enumerable:!0,get:S(function(){return s.SharedArraySenderStrategy},"get")}),Object.defineProperty(e,"SharedArrayReceiverStrategy",{enumerable:!0,get:S(function(){return s.SharedArrayReceiverStrategy},"get")});var l=xlt();Object.defineProperty(e,"MessageReader",{enumerable:!0,get:S(function(){return l.MessageReader},"get")}),Object.defineProperty(e,"AbstractMessageReader",{enumerable:!0,get:S(function(){return l.AbstractMessageReader},"get")}),Object.defineProperty(e,"ReadableStreamMessageReader",{enumerable:!0,get:S(function(){return l.ReadableStreamMessageReader},"get")});var u=blt();Object.defineProperty(e,"MessageWriter",{enumerable:!0,get:S(function(){return u.MessageWriter},"get")}),Object.defineProperty(e,"AbstractMessageWriter",{enumerable:!0,get:S(function(){return u.AbstractMessageWriter},"get")}),Object.defineProperty(e,"WriteableStreamMessageWriter",{enumerable:!0,get:S(function(){return u.WriteableStreamMessageWriter},"get")});var h=Tlt();Object.defineProperty(e,"AbstractMessageBuffer",{enumerable:!0,get:S(function(){return h.AbstractMessageBuffer},"get")});var d=Clt();Object.defineProperty(e,"ConnectionStrategy",{enumerable:!0,get:S(function(){return d.ConnectionStrategy},"get")}),Object.defineProperty(e,"ConnectionOptions",{enumerable:!0,get:S(function(){return d.ConnectionOptions},"get")}),Object.defineProperty(e,"NullLogger",{enumerable:!0,get:S(function(){return d.NullLogger},"get")}),Object.defineProperty(e,"createMessageConnection",{enumerable:!0,get:S(function(){return d.createMessageConnection},"get")}),Object.defineProperty(e,"ProgressToken",{enumerable:!0,get:S(function(){return d.ProgressToken},"get")}),Object.defineProperty(e,"ProgressType",{enumerable:!0,get:S(function(){return d.ProgressType},"get")}),Object.defineProperty(e,"Trace",{enumerable:!0,get:S(function(){return d.Trace},"get")}),Object.defineProperty(e,"TraceValues",{enumerable:!0,get:S(function(){return d.TraceValues},"get")}),Object.defineProperty(e,"TraceFormat",{enumerable:!0,get:S(function(){return d.TraceFormat},"get")}),Object.defineProperty(e,"SetTraceNotification",{enumerable:!0,get:S(function(){return d.SetTraceNotification},"get")}),Object.defineProperty(e,"LogTraceNotification",{enumerable:!0,get:S(function(){return d.LogTraceNotification},"get")}),Object.defineProperty(e,"ConnectionErrors",{enumerable:!0,get:S(function(){return d.ConnectionErrors},"get")}),Object.defineProperty(e,"ConnectionError",{enumerable:!0,get:S(function(){return d.ConnectionError},"get")}),Object.defineProperty(e,"CancellationReceiverStrategy",{enumerable:!0,get:S(function(){return d.CancellationReceiverStrategy},"get")}),Object.defineProperty(e,"CancellationSenderStrategy",{enumerable:!0,get:S(function(){return d.CancellationSenderStrategy},"get")}),Object.defineProperty(e,"CancellationStrategy",{enumerable:!0,get:S(function(){return d.CancellationStrategy},"get")}),Object.defineProperty(e,"MessageStrategy",{enumerable:!0,get:S(function(){return d.MessageStrategy},"get")});var f=W0();e.RAL=f.default}}),klt=Lr({"../../node_modules/.pnpm/vscode-jsonrpc@8.2.0/node_modules/vscode-jsonrpc/lib/browser/ril.js"(e){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var t=fF(),r=class cve extends t.AbstractMessageBuffer{static{o(this,"_MessageBuffer")}static{S(this,"MessageBuffer")}constructor(h="utf-8"){super(h),this.asciiDecoder=new TextDecoder("ascii")}emptyBuffer(){return cve.emptyBuffer}fromString(h,d){return new TextEncoder().encode(h)}toString(h,d){return d==="ascii"?this.asciiDecoder.decode(h):new TextDecoder(d).decode(h)}asNative(h,d){return d===void 0?h:h.slice(0,d)}allocNative(h){return new Uint8Array(h)}};r.emptyBuffer=new Uint8Array(0);var i=class{static{o(this,"ReadableStreamWrapper")}static{S(this,"ReadableStreamWrapper")}constructor(u){this.socket=u,this._onData=new t.Emitter,this._messageListener=h=>{h.data.arrayBuffer().then(f=>{this._onData.fire(new Uint8Array(f))},()=>{(0,t.RAL)().console.error("Converting blob to array buffer failed.")})},this.socket.addEventListener("message",this._messageListener)}onClose(u){return this.socket.addEventListener("close",u),t.Disposable.create(()=>this.socket.removeEventListener("close",u))}onError(u){return this.socket.addEventListener("error",u),t.Disposable.create(()=>this.socket.removeEventListener("error",u))}onEnd(u){return this.socket.addEventListener("end",u),t.Disposable.create(()=>this.socket.removeEventListener("end",u))}onData(u){return this._onData.event(u)}},n=class{static{o(this,"WritableStreamWrapper")}static{S(this,"WritableStreamWrapper")}constructor(u){this.socket=u}onClose(u){return this.socket.addEventListener("close",u),t.Disposable.create(()=>this.socket.removeEventListener("close",u))}onError(u){return this.socket.addEventListener("error",u),t.Disposable.create(()=>this.socket.removeEventListener("error",u))}onEnd(u){return this.socket.addEventListener("end",u),t.Disposable.create(()=>this.socket.removeEventListener("end",u))}write(u,h){if(typeof u=="string"){if(h!==void 0&&h!=="utf-8")throw new Error(`In a Browser environments only utf-8 text encoding is supported. But got encoding: ${h}`);this.socket.send(u)}else this.socket.send(u);return Promise.resolve()}end(){this.socket.close()}},a=new TextEncoder,s=Object.freeze({messageBuffer:Object.freeze({create:S(u=>new r(u),"create")}),applicationJson:Object.freeze({encoder:Object.freeze({name:"application/json",encode:S((u,h)=>{if(h.charset!=="utf-8")throw new Error(`In a Browser environments only utf-8 text encoding is supported. But got encoding: ${h.charset}`);return Promise.resolve(a.encode(JSON.stringify(u,void 0,0)))},"encode")}),decoder:Object.freeze({name:"application/json",decode:S((u,h)=>{if(!(u instanceof Uint8Array))throw new Error("In a Browser environments only Uint8Arrays are supported.");return Promise.resolve(JSON.parse(new TextDecoder(h.charset).decode(u)))},"decode")})}),stream:Object.freeze({asReadableStream:S(u=>new i(u),"asReadableStream"),asWritableStream:S(u=>new n(u),"asWritableStream")}),console,timer:Object.freeze({setTimeout(u,h,...d){let f=setTimeout(u,h,...d);return{dispose:S(()=>clearTimeout(f),"dispose")}},setImmediate(u,...h){let d=setTimeout(u,0,...h);return{dispose:S(()=>clearTimeout(d),"dispose")}},setInterval(u,h,...d){let f=setInterval(u,h,...d);return{dispose:S(()=>clearInterval(f),"dispose")}}})});function l(){return s}o(l,"RIL"),S(l,"RIL"),(function(u){function h(){t.RAL.install(s)}o(h,"install"),S(h,"install"),u.install=h})(l||(l={})),e.default=l}}),ay=Lr({"../../node_modules/.pnpm/vscode-jsonrpc@8.2.0/node_modules/vscode-jsonrpc/lib/browser/main.js"(e){"use strict";var t=e&&e.__createBinding||(Object.create?(function(u,h,d,f){f===void 0&&(f=d);var p=Object.getOwnPropertyDescriptor(h,d);(!p||("get"in p?!h.__esModule:p.writable||p.configurable))&&(p={enumerable:!0,get:S(function(){return h[d]},"get")}),Object.defineProperty(u,f,p)}):(function(u,h,d,f){f===void 0&&(f=d),u[f]=h[d]})),r=e&&e.__exportStar||function(u,h){for(var d in u)d!=="default"&&!Object.prototype.hasOwnProperty.call(h,d)&&t(h,u,d)};Object.defineProperty(e,"__esModule",{value:!0}),e.createMessageConnection=e.BrowserMessageWriter=e.BrowserMessageReader=void 0;var i=klt();i.default.install();var n=fF();r(fF(),e);var a=class extends n.AbstractMessageReader{static{o(this,"BrowserMessageReader")}static{S(this,"BrowserMessageReader")}constructor(u){super(),this._onData=new n.Emitter,this._messageListener=h=>{this._onData.fire(h.data)},u.addEventListener("error",h=>this.fireError(h)),u.onmessage=this._messageListener}listen(u){return this._onData.event(u)}};e.BrowserMessageReader=a;var s=class extends n.AbstractMessageWriter{static{o(this,"BrowserMessageWriter")}static{S(this,"BrowserMessageWriter")}constructor(u){super(),this.port=u,this.errorCount=0,u.addEventListener("error",h=>this.fireError(h))}write(u){try{return this.port.postMessage(u),Promise.resolve()}catch(h){return this.handleError(h,u),Promise.reject(h)}}handleError(u,h){this.errorCount++,this.fireError(u,h,this.errorCount)}end(){}};e.BrowserMessageWriter=s;function l(u,h,d,f){return d===void 0&&(d=n.NullLogger),n.ConnectionStrategy.is(f)&&(f={connectionStrategy:f}),(0,n.createMessageConnection)(u,h,d,f)}o(l,"createMessageConnection"),S(l,"createMessageConnection"),e.createMessageConnection=l}}),g1e=Lr({"../../node_modules/.pnpm/vscode-jsonrpc@8.2.0/node_modules/vscode-jsonrpc/browser.js"(e,t){"use strict";t.exports=ay()}}),tn=Lr({"../../node_modules/.pnpm/vscode-languageserver-protocol@3.17.5/node_modules/vscode-languageserver-protocol/lib/common/messages.js"(e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.ProtocolNotificationType=e.ProtocolNotificationType0=e.ProtocolRequestType=e.ProtocolRequestType0=e.RegistrationType=e.MessageDirection=void 0;var t=ay(),r;(function(u){u.clientToServer="clientToServer",u.serverToClient="serverToClient",u.both="both"})(r||(e.MessageDirection=r={}));var i=class{static{o(this,"RegistrationType")}static{S(this,"RegistrationType")}constructor(u){this.method=u}};e.RegistrationType=i;var n=class extends t.RequestType0{static{o(this,"ProtocolRequestType0")}static{S(this,"ProtocolRequestType0")}constructor(u){super(u)}};e.ProtocolRequestType0=n;var a=class extends t.RequestType{static{o(this,"ProtocolRequestType")}static{S(this,"ProtocolRequestType")}constructor(u){super(u,t.ParameterStructures.byName)}};e.ProtocolRequestType=a;var s=class extends t.NotificationType0{static{o(this,"ProtocolNotificationType0")}static{S(this,"ProtocolNotificationType0")}constructor(u){super(u)}};e.ProtocolNotificationType0=s;var l=class extends t.NotificationType{static{o(this,"ProtocolNotificationType")}static{S(this,"ProtocolNotificationType")}constructor(u){super(u,t.ParameterStructures.byName)}};e.ProtocolNotificationType=l}}),h$=Lr({"../../node_modules/.pnpm/vscode-languageserver-protocol@3.17.5/node_modules/vscode-languageserver-protocol/lib/common/utils/is.js"(e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.objectLiteral=e.typedArray=e.stringArray=e.array=e.func=e.error=e.number=e.string=e.boolean=void 0;function t(d){return d===!0||d===!1}o(t,"boolean"),S(t,"boolean"),e.boolean=t;function r(d){return typeof d=="string"||d instanceof String}o(r,"string"),S(r,"string"),e.string=r;function i(d){return typeof d=="number"||d instanceof Number}o(i,"number"),S(i,"number"),e.number=i;function n(d){return d instanceof Error}o(n,"error"),S(n,"error"),e.error=n;function a(d){return typeof d=="function"}o(a,"func"),S(a,"func"),e.func=a;function s(d){return Array.isArray(d)}o(s,"array"),S(s,"array"),e.array=s;function l(d){return s(d)&&d.every(f=>r(f))}o(l,"stringArray"),S(l,"stringArray"),e.stringArray=l;function u(d,f){return Array.isArray(d)&&d.every(f)}o(u,"typedArray"),S(u,"typedArray"),e.typedArray=u;function h(d){return d!==null&&typeof d=="object"}o(h,"objectLiteral"),S(h,"objectLiteral"),e.objectLiteral=h}}),wlt=Lr({"../../node_modules/.pnpm/vscode-languageserver-protocol@3.17.5/node_modules/vscode-languageserver-protocol/lib/common/protocol.implementation.js"(e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.ImplementationRequest=void 0;var t=tn(),r;(function(i){i.method="textDocument/implementation",i.messageDirection=t.MessageDirection.clientToServer,i.type=new t.ProtocolRequestType(i.method)})(r||(e.ImplementationRequest=r={}))}}),Slt=Lr({"../../node_modules/.pnpm/vscode-languageserver-protocol@3.17.5/node_modules/vscode-languageserver-protocol/lib/common/protocol.typeDefinition.js"(e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.TypeDefinitionRequest=void 0;var t=tn(),r;(function(i){i.method="textDocument/typeDefinition",i.messageDirection=t.MessageDirection.clientToServer,i.type=new t.ProtocolRequestType(i.method)})(r||(e.TypeDefinitionRequest=r={}))}}),Elt=Lr({"../../node_modules/.pnpm/vscode-languageserver-protocol@3.17.5/node_modules/vscode-languageserver-protocol/lib/common/protocol.workspaceFolder.js"(e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.DidChangeWorkspaceFoldersNotification=e.WorkspaceFoldersRequest=void 0;var t=tn(),r;(function(n){n.method="workspace/workspaceFolders",n.messageDirection=t.MessageDirection.serverToClient,n.type=new t.ProtocolRequestType0(n.method)})(r||(e.WorkspaceFoldersRequest=r={}));var i;(function(n){n.method="workspace/didChangeWorkspaceFolders",n.messageDirection=t.MessageDirection.clientToServer,n.type=new t.ProtocolNotificationType(n.method)})(i||(e.DidChangeWorkspaceFoldersNotification=i={}))}}),Alt=Lr({"../../node_modules/.pnpm/vscode-languageserver-protocol@3.17.5/node_modules/vscode-languageserver-protocol/lib/common/protocol.configuration.js"(e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.ConfigurationRequest=void 0;var t=tn(),r;(function(i){i.method="workspace/configuration",i.messageDirection=t.MessageDirection.serverToClient,i.type=new t.ProtocolRequestType(i.method)})(r||(e.ConfigurationRequest=r={}))}}),_lt=Lr({"../../node_modules/.pnpm/vscode-languageserver-protocol@3.17.5/node_modules/vscode-languageserver-protocol/lib/common/protocol.colorProvider.js"(e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.ColorPresentationRequest=e.DocumentColorRequest=void 0;var t=tn(),r;(function(n){n.method="textDocument/documentColor",n.messageDirection=t.MessageDirection.clientToServer,n.type=new t.ProtocolRequestType(n.method)})(r||(e.DocumentColorRequest=r={}));var i;(function(n){n.method="textDocument/colorPresentation",n.messageDirection=t.MessageDirection.clientToServer,n.type=new t.ProtocolRequestType(n.method)})(i||(e.ColorPresentationRequest=i={}))}}),Dlt=Lr({"../../node_modules/.pnpm/vscode-languageserver-protocol@3.17.5/node_modules/vscode-languageserver-protocol/lib/common/protocol.foldingRange.js"(e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.FoldingRangeRefreshRequest=e.FoldingRangeRequest=void 0;var t=tn(),r;(function(n){n.method="textDocument/foldingRange",n.messageDirection=t.MessageDirection.clientToServer,n.type=new t.ProtocolRequestType(n.method)})(r||(e.FoldingRangeRequest=r={}));var i;(function(n){n.method="workspace/foldingRange/refresh",n.messageDirection=t.MessageDirection.serverToClient,n.type=new t.ProtocolRequestType0(n.method)})(i||(e.FoldingRangeRefreshRequest=i={}))}}),Rlt=Lr({"../../node_modules/.pnpm/vscode-languageserver-protocol@3.17.5/node_modules/vscode-languageserver-protocol/lib/common/protocol.declaration.js"(e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.DeclarationRequest=void 0;var t=tn(),r;(function(i){i.method="textDocument/declaration",i.messageDirection=t.MessageDirection.clientToServer,i.type=new t.ProtocolRequestType(i.method)})(r||(e.DeclarationRequest=r={}))}}),Llt=Lr({"../../node_modules/.pnpm/vscode-languageserver-protocol@3.17.5/node_modules/vscode-languageserver-protocol/lib/common/protocol.selectionRange.js"(e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.SelectionRangeRequest=void 0;var t=tn(),r;(function(i){i.method="textDocument/selectionRange",i.messageDirection=t.MessageDirection.clientToServer,i.type=new t.ProtocolRequestType(i.method)})(r||(e.SelectionRangeRequest=r={}))}}),Mlt=Lr({"../../node_modules/.pnpm/vscode-languageserver-protocol@3.17.5/node_modules/vscode-languageserver-protocol/lib/common/protocol.progress.js"(e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.WorkDoneProgressCancelNotification=e.WorkDoneProgressCreateRequest=e.WorkDoneProgress=void 0;var t=ay(),r=tn(),i;(function(s){s.type=new t.ProgressType;function l(u){return u===s.type}o(l,"is"),S(l,"is"),s.is=l})(i||(e.WorkDoneProgress=i={}));var n;(function(s){s.method="window/workDoneProgress/create",s.messageDirection=r.MessageDirection.serverToClient,s.type=new r.ProtocolRequestType(s.method)})(n||(e.WorkDoneProgressCreateRequest=n={}));var a;(function(s){s.method="window/workDoneProgress/cancel",s.messageDirection=r.MessageDirection.clientToServer,s.type=new r.ProtocolNotificationType(s.method)})(a||(e.WorkDoneProgressCancelNotification=a={}))}}),Nlt=Lr({"../../node_modules/.pnpm/vscode-languageserver-protocol@3.17.5/node_modules/vscode-languageserver-protocol/lib/common/protocol.callHierarchy.js"(e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.CallHierarchyOutgoingCallsRequest=e.CallHierarchyIncomingCallsRequest=e.CallHierarchyPrepareRequest=void 0;var t=tn(),r;(function(a){a.method="textDocument/prepareCallHierarchy",a.messageDirection=t.MessageDirection.clientToServer,a.type=new t.ProtocolRequestType(a.method)})(r||(e.CallHierarchyPrepareRequest=r={}));var i;(function(a){a.method="callHierarchy/incomingCalls",a.messageDirection=t.MessageDirection.clientToServer,a.type=new t.ProtocolRequestType(a.method)})(i||(e.CallHierarchyIncomingCallsRequest=i={}));var n;(function(a){a.method="callHierarchy/outgoingCalls",a.messageDirection=t.MessageDirection.clientToServer,a.type=new t.ProtocolRequestType(a.method)})(n||(e.CallHierarchyOutgoingCallsRequest=n={}))}}),Ilt=Lr({"../../node_modules/.pnpm/vscode-languageserver-protocol@3.17.5/node_modules/vscode-languageserver-protocol/lib/common/protocol.semanticTokens.js"(e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.SemanticTokensRefreshRequest=e.SemanticTokensRangeRequest=e.SemanticTokensDeltaRequest=e.SemanticTokensRequest=e.SemanticTokensRegistrationType=e.TokenFormat=void 0;var t=tn(),r;(function(u){u.Relative="relative"})(r||(e.TokenFormat=r={}));var i;(function(u){u.method="textDocument/semanticTokens",u.type=new t.RegistrationType(u.method)})(i||(e.SemanticTokensRegistrationType=i={}));var n;(function(u){u.method="textDocument/semanticTokens/full",u.messageDirection=t.MessageDirection.clientToServer,u.type=new t.ProtocolRequestType(u.method),u.registrationMethod=i.method})(n||(e.SemanticTokensRequest=n={}));var a;(function(u){u.method="textDocument/semanticTokens/full/delta",u.messageDirection=t.MessageDirection.clientToServer,u.type=new t.ProtocolRequestType(u.method),u.registrationMethod=i.method})(a||(e.SemanticTokensDeltaRequest=a={}));var s;(function(u){u.method="textDocument/semanticTokens/range",u.messageDirection=t.MessageDirection.clientToServer,u.type=new t.ProtocolRequestType(u.method),u.registrationMethod=i.method})(s||(e.SemanticTokensRangeRequest=s={}));var l;(function(u){u.method="workspace/semanticTokens/refresh",u.messageDirection=t.MessageDirection.serverToClient,u.type=new t.ProtocolRequestType0(u.method)})(l||(e.SemanticTokensRefreshRequest=l={}))}}),Olt=Lr({"../../node_modules/.pnpm/vscode-languageserver-protocol@3.17.5/node_modules/vscode-languageserver-protocol/lib/common/protocol.showDocument.js"(e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.ShowDocumentRequest=void 0;var t=tn(),r;(function(i){i.method="window/showDocument",i.messageDirection=t.MessageDirection.serverToClient,i.type=new t.ProtocolRequestType(i.method)})(r||(e.ShowDocumentRequest=r={}))}}),Plt=Lr({"../../node_modules/.pnpm/vscode-languageserver-protocol@3.17.5/node_modules/vscode-languageserver-protocol/lib/common/protocol.linkedEditingRange.js"(e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.LinkedEditingRangeRequest=void 0;var t=tn(),r;(function(i){i.method="textDocument/linkedEditingRange",i.messageDirection=t.MessageDirection.clientToServer,i.type=new t.ProtocolRequestType(i.method)})(r||(e.LinkedEditingRangeRequest=r={}))}}),Blt=Lr({"../../node_modules/.pnpm/vscode-languageserver-protocol@3.17.5/node_modules/vscode-languageserver-protocol/lib/common/protocol.fileOperations.js"(e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.WillDeleteFilesRequest=e.DidDeleteFilesNotification=e.DidRenameFilesNotification=e.WillRenameFilesRequest=e.DidCreateFilesNotification=e.WillCreateFilesRequest=e.FileOperationPatternKind=void 0;var t=tn(),r;(function(h){h.file="file",h.folder="folder"})(r||(e.FileOperationPatternKind=r={}));var i;(function(h){h.method="workspace/willCreateFiles",h.messageDirection=t.MessageDirection.clientToServer,h.type=new t.ProtocolRequestType(h.method)})(i||(e.WillCreateFilesRequest=i={}));var n;(function(h){h.method="workspace/didCreateFiles",h.messageDirection=t.MessageDirection.clientToServer,h.type=new t.ProtocolNotificationType(h.method)})(n||(e.DidCreateFilesNotification=n={}));var a;(function(h){h.method="workspace/willRenameFiles",h.messageDirection=t.MessageDirection.clientToServer,h.type=new t.ProtocolRequestType(h.method)})(a||(e.WillRenameFilesRequest=a={}));var s;(function(h){h.method="workspace/didRenameFiles",h.messageDirection=t.MessageDirection.clientToServer,h.type=new t.ProtocolNotificationType(h.method)})(s||(e.DidRenameFilesNotification=s={}));var l;(function(h){h.method="workspace/didDeleteFiles",h.messageDirection=t.MessageDirection.clientToServer,h.type=new t.ProtocolNotificationType(h.method)})(l||(e.DidDeleteFilesNotification=l={}));var u;(function(h){h.method="workspace/willDeleteFiles",h.messageDirection=t.MessageDirection.clientToServer,h.type=new t.ProtocolRequestType(h.method)})(u||(e.WillDeleteFilesRequest=u={}))}}),Flt=Lr({"../../node_modules/.pnpm/vscode-languageserver-protocol@3.17.5/node_modules/vscode-languageserver-protocol/lib/common/protocol.moniker.js"(e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.MonikerRequest=e.MonikerKind=e.UniquenessLevel=void 0;var t=tn(),r;(function(a){a.document="document",a.project="project",a.group="group",a.scheme="scheme",a.global="global"})(r||(e.UniquenessLevel=r={}));var i;(function(a){a.$import="import",a.$export="export",a.local="local"})(i||(e.MonikerKind=i={}));var n;(function(a){a.method="textDocument/moniker",a.messageDirection=t.MessageDirection.clientToServer,a.type=new t.ProtocolRequestType(a.method)})(n||(e.MonikerRequest=n={}))}}),$lt=Lr({"../../node_modules/.pnpm/vscode-languageserver-protocol@3.17.5/node_modules/vscode-languageserver-protocol/lib/common/protocol.typeHierarchy.js"(e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.TypeHierarchySubtypesRequest=e.TypeHierarchySupertypesRequest=e.TypeHierarchyPrepareRequest=void 0;var t=tn(),r;(function(a){a.method="textDocument/prepareTypeHierarchy",a.messageDirection=t.MessageDirection.clientToServer,a.type=new t.ProtocolRequestType(a.method)})(r||(e.TypeHierarchyPrepareRequest=r={}));var i;(function(a){a.method="typeHierarchy/supertypes",a.messageDirection=t.MessageDirection.clientToServer,a.type=new t.ProtocolRequestType(a.method)})(i||(e.TypeHierarchySupertypesRequest=i={}));var n;(function(a){a.method="typeHierarchy/subtypes",a.messageDirection=t.MessageDirection.clientToServer,a.type=new t.ProtocolRequestType(a.method)})(n||(e.TypeHierarchySubtypesRequest=n={}))}}),zlt=Lr({"../../node_modules/.pnpm/vscode-languageserver-protocol@3.17.5/node_modules/vscode-languageserver-protocol/lib/common/protocol.inlineValue.js"(e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.InlineValueRefreshRequest=e.InlineValueRequest=void 0;var t=tn(),r;(function(n){n.method="textDocument/inlineValue",n.messageDirection=t.MessageDirection.clientToServer,n.type=new t.ProtocolRequestType(n.method)})(r||(e.InlineValueRequest=r={}));var i;(function(n){n.method="workspace/inlineValue/refresh",n.messageDirection=t.MessageDirection.serverToClient,n.type=new t.ProtocolRequestType0(n.method)})(i||(e.InlineValueRefreshRequest=i={}))}}),Glt=Lr({"../../node_modules/.pnpm/vscode-languageserver-protocol@3.17.5/node_modules/vscode-languageserver-protocol/lib/common/protocol.inlayHint.js"(e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.InlayHintRefreshRequest=e.InlayHintResolveRequest=e.InlayHintRequest=void 0;var t=tn(),r;(function(a){a.method="textDocument/inlayHint",a.messageDirection=t.MessageDirection.clientToServer,a.type=new t.ProtocolRequestType(a.method)})(r||(e.InlayHintRequest=r={}));var i;(function(a){a.method="inlayHint/resolve",a.messageDirection=t.MessageDirection.clientToServer,a.type=new t.ProtocolRequestType(a.method)})(i||(e.InlayHintResolveRequest=i={}));var n;(function(a){a.method="workspace/inlayHint/refresh",a.messageDirection=t.MessageDirection.serverToClient,a.type=new t.ProtocolRequestType0(a.method)})(n||(e.InlayHintRefreshRequest=n={}))}}),Vlt=Lr({"../../node_modules/.pnpm/vscode-languageserver-protocol@3.17.5/node_modules/vscode-languageserver-protocol/lib/common/protocol.diagnostic.js"(e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.DiagnosticRefreshRequest=e.WorkspaceDiagnosticRequest=e.DocumentDiagnosticRequest=e.DocumentDiagnosticReportKind=e.DiagnosticServerCancellationData=void 0;var t=ay(),r=h$(),i=tn(),n;(function(h){function d(f){let p=f;return p&&r.boolean(p.retriggerRequest)}o(d,"is"),S(d,"is"),h.is=d})(n||(e.DiagnosticServerCancellationData=n={}));var a;(function(h){h.Full="full",h.Unchanged="unchanged"})(a||(e.DocumentDiagnosticReportKind=a={}));var s;(function(h){h.method="textDocument/diagnostic",h.messageDirection=i.MessageDirection.clientToServer,h.type=new i.ProtocolRequestType(h.method),h.partialResult=new t.ProgressType})(s||(e.DocumentDiagnosticRequest=s={}));var l;(function(h){h.method="workspace/diagnostic",h.messageDirection=i.MessageDirection.clientToServer,h.type=new i.ProtocolRequestType(h.method),h.partialResult=new t.ProgressType})(l||(e.WorkspaceDiagnosticRequest=l={}));var u;(function(h){h.method="workspace/diagnostic/refresh",h.messageDirection=i.MessageDirection.serverToClient,h.type=new i.ProtocolRequestType0(h.method)})(u||(e.DiagnosticRefreshRequest=u={}))}}),Wlt=Lr({"../../node_modules/.pnpm/vscode-languageserver-protocol@3.17.5/node_modules/vscode-languageserver-protocol/lib/common/protocol.notebook.js"(e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.DidCloseNotebookDocumentNotification=e.DidSaveNotebookDocumentNotification=e.DidChangeNotebookDocumentNotification=e.NotebookCellArrayChange=e.DidOpenNotebookDocumentNotification=e.NotebookDocumentSyncRegistrationType=e.NotebookDocument=e.NotebookCell=e.ExecutionSummary=e.NotebookCellKind=void 0;var t=(bT(),u$(q5)),r=h$(),i=tn(),n;(function(g){g.Markup=1,g.Code=2;function y(v){return v===1||v===2}o(y,"is"),S(y,"is"),g.is=y})(n||(e.NotebookCellKind=n={}));var a;(function(g){function y(b,T){let w={executionOrder:b};return(T===!0||T===!1)&&(w.success=T),w}o(y,"create"),S(y,"create"),g.create=y;function v(b){let T=b;return r.objectLiteral(T)&&t.uinteger.is(T.executionOrder)&&(T.success===void 0||r.boolean(T.success))}o(v,"is"),S(v,"is"),g.is=v;function x(b,T){return b===T?!0:b==null||T===null||T===void 0?!1:b.executionOrder===T.executionOrder&&b.success===T.success}o(x,"equals"),S(x,"equals"),g.equals=x})(a||(e.ExecutionSummary=a={}));var s;(function(g){function y(T,w){return{kind:T,document:w}}o(y,"create"),S(y,"create"),g.create=y;function v(T){let w=T;return r.objectLiteral(w)&&n.is(w.kind)&&t.DocumentUri.is(w.document)&&(w.metadata===void 0||r.objectLiteral(w.metadata))}o(v,"is"),S(v,"is"),g.is=v;function x(T,w){let C=new Set;return T.document!==w.document&&C.add("document"),T.kind!==w.kind&&C.add("kind"),T.executionSummary!==w.executionSummary&&C.add("executionSummary"),(T.metadata!==void 0||w.metadata!==void 0)&&!b(T.metadata,w.metadata)&&C.add("metadata"),(T.executionSummary!==void 0||w.executionSummary!==void 0)&&!a.equals(T.executionSummary,w.executionSummary)&&C.add("executionSummary"),C}o(x,"diff"),S(x,"diff"),g.diff=x;function b(T,w){if(T===w)return!0;if(T==null||w===null||w===void 0||typeof T!=typeof w||typeof T!="object")return!1;let C=Array.isArray(T),k=Array.isArray(w);if(C!==k)return!1;if(C&&k){if(T.length!==w.length)return!1;for(let E=0;E<T.length;E++)if(!b(T[E],w[E]))return!1}if(r.objectLiteral(T)&&r.objectLiteral(w)){let E=Object.keys(T),A=Object.keys(w);if(E.length!==A.length||(E.sort(),A.sort(),!b(E,A)))return!1;for(let N=0;N<E.length;N++){let P=E[N];if(!b(T[P],w[P]))return!1}}return!0}o(b,"equalsMetadata"),S(b,"equalsMetadata")})(s||(e.NotebookCell=s={}));var l;(function(g){function y(x,b,T,w){return{uri:x,notebookType:b,version:T,cells:w}}o(y,"create"),S(y,"create"),g.create=y;function v(x){let b=x;return r.objectLiteral(b)&&r.string(b.uri)&&t.integer.is(b.version)&&r.typedArray(b.cells,s.is)}o(v,"is"),S(v,"is"),g.is=v})(l||(e.NotebookDocument=l={}));var u;(function(g){g.method="notebookDocument/sync",g.messageDirection=i.MessageDirection.clientToServer,g.type=new i.RegistrationType(g.method)})(u||(e.NotebookDocumentSyncRegistrationType=u={}));var h;(function(g){g.method="notebookDocument/didOpen",g.messageDirection=i.MessageDirection.clientToServer,g.type=new i.ProtocolNotificationType(g.method),g.registrationMethod=u.method})(h||(e.DidOpenNotebookDocumentNotification=h={}));var d;(function(g){function y(x){let b=x;return r.objectLiteral(b)&&t.uinteger.is(b.start)&&t.uinteger.is(b.deleteCount)&&(b.cells===void 0||r.typedArray(b.cells,s.is))}o(y,"is"),S(y,"is"),g.is=y;function v(x,b,T){let w={start:x,deleteCount:b};return T!==void 0&&(w.cells=T),w}o(v,"create"),S(v,"create"),g.create=v})(d||(e.NotebookCellArrayChange=d={}));var f;(function(g){g.method="notebookDocument/didChange",g.messageDirection=i.MessageDirection.clientToServer,g.type=new i.ProtocolNotificationType(g.method),g.registrationMethod=u.method})(f||(e.DidChangeNotebookDocumentNotification=f={}));var p;(function(g){g.method="notebookDocument/didSave",g.messageDirection=i.MessageDirection.clientToServer,g.type=new i.ProtocolNotificationType(g.method),g.registrationMethod=u.method})(p||(e.DidSaveNotebookDocumentNotification=p={}));var m;(function(g){g.method="notebookDocument/didClose",g.messageDirection=i.MessageDirection.clientToServer,g.type=new i.ProtocolNotificationType(g.method),g.registrationMethod=u.method})(m||(e.DidCloseNotebookDocumentNotification=m={}))}}),qlt=Lr({"../../node_modules/.pnpm/vscode-languageserver-protocol@3.17.5/node_modules/vscode-languageserver-protocol/lib/common/protocol.inlineCompletion.js"(e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.InlineCompletionRequest=void 0;var t=tn(),r;(function(i){i.method="textDocument/inlineCompletion",i.messageDirection=t.MessageDirection.clientToServer,i.type=new t.ProtocolRequestType(i.method)})(r||(e.InlineCompletionRequest=r={}))}}),Ult=Lr({"../../node_modules/.pnpm/vscode-languageserver-protocol@3.17.5/node_modules/vscode-languageserver-protocol/lib/common/protocol.js"(e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.WorkspaceSymbolRequest=e.CodeActionResolveRequest=e.CodeActionRequest=e.DocumentSymbolRequest=e.DocumentHighlightRequest=e.ReferencesRequest=e.DefinitionRequest=e.SignatureHelpRequest=e.SignatureHelpTriggerKind=e.HoverRequest=e.CompletionResolveRequest=e.CompletionRequest=e.CompletionTriggerKind=e.PublishDiagnosticsNotification=e.WatchKind=e.RelativePattern=e.FileChangeType=e.DidChangeWatchedFilesNotification=e.WillSaveTextDocumentWaitUntilRequest=e.WillSaveTextDocumentNotification=e.TextDocumentSaveReason=e.DidSaveTextDocumentNotification=e.DidCloseTextDocumentNotification=e.DidChangeTextDocumentNotification=e.TextDocumentContentChangeEvent=e.DidOpenTextDocumentNotification=e.TextDocumentSyncKind=e.TelemetryEventNotification=e.LogMessageNotification=e.ShowMessageRequest=e.ShowMessageNotification=e.MessageType=e.DidChangeConfigurationNotification=e.ExitNotification=e.ShutdownRequest=e.InitializedNotification=e.InitializeErrorCodes=e.InitializeRequest=e.WorkDoneProgressOptions=e.TextDocumentRegistrationOptions=e.StaticRegistrationOptions=e.PositionEncodingKind=e.FailureHandlingKind=e.ResourceOperationKind=e.UnregistrationRequest=e.RegistrationRequest=e.DocumentSelector=e.NotebookCellTextDocumentFilter=e.NotebookDocumentFilter=e.TextDocumentFilter=void 0,e.MonikerRequest=e.MonikerKind=e.UniquenessLevel=e.WillDeleteFilesRequest=e.DidDeleteFilesNotification=e.WillRenameFilesRequest=e.DidRenameFilesNotification=e.WillCreateFilesRequest=e.DidCreateFilesNotification=e.FileOperationPatternKind=e.LinkedEditingRangeRequest=e.ShowDocumentRequest=e.SemanticTokensRegistrationType=e.SemanticTokensRefreshRequest=e.SemanticTokensRangeRequest=e.SemanticTokensDeltaRequest=e.SemanticTokensRequest=e.TokenFormat=e.CallHierarchyPrepareRequest=e.CallHierarchyOutgoingCallsRequest=e.CallHierarchyIncomingCallsRequest=e.WorkDoneProgressCancelNotification=e.WorkDoneProgressCreateRequest=e.WorkDoneProgress=e.SelectionRangeRequest=e.DeclarationRequest=e.FoldingRangeRefreshRequest=e.FoldingRangeRequest=e.ColorPresentationRequest=e.DocumentColorRequest=e.ConfigurationRequest=e.DidChangeWorkspaceFoldersNotification=e.WorkspaceFoldersRequest=e.TypeDefinitionRequest=e.ImplementationRequest=e.ApplyWorkspaceEditRequest=e.ExecuteCommandRequest=e.PrepareRenameRequest=e.RenameRequest=e.PrepareSupportDefaultBehavior=e.DocumentOnTypeFormattingRequest=e.DocumentRangesFormattingRequest=e.DocumentRangeFormattingRequest=e.DocumentFormattingRequest=e.DocumentLinkResolveRequest=e.DocumentLinkRequest=e.CodeLensRefreshRequest=e.CodeLensResolveRequest=e.CodeLensRequest=e.WorkspaceSymbolResolveRequest=void 0,e.InlineCompletionRequest=e.DidCloseNotebookDocumentNotification=e.DidSaveNotebookDocumentNotification=e.DidChangeNotebookDocumentNotification=e.NotebookCellArrayChange=e.DidOpenNotebookDocumentNotification=e.NotebookDocumentSyncRegistrationType=e.NotebookDocument=e.NotebookCell=e.ExecutionSummary=e.NotebookCellKind=e.DiagnosticRefreshRequest=e.WorkspaceDiagnosticRequest=e.DocumentDiagnosticRequest=e.DocumentDiagnosticReportKind=e.DiagnosticServerCancellationData=e.InlayHintRefreshRequest=e.InlayHintResolveRequest=e.InlayHintRequest=e.InlineValueRefreshRequest=e.InlineValueRequest=e.TypeHierarchySupertypesRequest=e.TypeHierarchySubtypesRequest=e.TypeHierarchyPrepareRequest=void 0;var t=tn(),r=(bT(),u$(q5)),i=h$(),n=wlt();Object.defineProperty(e,"ImplementationRequest",{enumerable:!0,get:S(function(){return n.ImplementationRequest},"get")});var a=Slt();Object.defineProperty(e,"TypeDefinitionRequest",{enumerable:!0,get:S(function(){return a.TypeDefinitionRequest},"get")});var s=Elt();Object.defineProperty(e,"WorkspaceFoldersRequest",{enumerable:!0,get:S(function(){return s.WorkspaceFoldersRequest},"get")}),Object.defineProperty(e,"DidChangeWorkspaceFoldersNotification",{enumerable:!0,get:S(function(){return s.DidChangeWorkspaceFoldersNotification},"get")});var l=Alt();Object.defineProperty(e,"ConfigurationRequest",{enumerable:!0,get:S(function(){return l.ConfigurationRequest},"get")});var u=_lt();Object.defineProperty(e,"DocumentColorRequest",{enumerable:!0,get:S(function(){return u.DocumentColorRequest},"get")}),Object.defineProperty(e,"ColorPresentationRequest",{enumerable:!0,get:S(function(){return u.ColorPresentationRequest},"get")});var h=Dlt();Object.defineProperty(e,"FoldingRangeRequest",{enumerable:!0,get:S(function(){return h.FoldingRangeRequest},"get")}),Object.defineProperty(e,"FoldingRangeRefreshRequest",{enumerable:!0,get:S(function(){return h.FoldingRangeRefreshRequest},"get")});var d=Rlt();Object.defineProperty(e,"DeclarationRequest",{enumerable:!0,get:S(function(){return d.DeclarationRequest},"get")});var f=Llt();Object.defineProperty(e,"SelectionRangeRequest",{enumerable:!0,get:S(function(){return f.SelectionRangeRequest},"get")});var p=Mlt();Object.defineProperty(e,"WorkDoneProgress",{enumerable:!0,get:S(function(){return p.WorkDoneProgress},"get")}),Object.defineProperty(e,"WorkDoneProgressCreateRequest",{enumerable:!0,get:S(function(){return p.WorkDoneProgressCreateRequest},"get")}),Object.defineProperty(e,"WorkDoneProgressCancelNotification",{enumerable:!0,get:S(function(){return p.WorkDoneProgressCancelNotification},"get")});var m=Nlt();Object.defineProperty(e,"CallHierarchyIncomingCallsRequest",{enumerable:!0,get:S(function(){return m.CallHierarchyIncomingCallsRequest},"get")}),Object.defineProperty(e,"CallHierarchyOutgoingCallsRequest",{enumerable:!0,get:S(function(){return m.CallHierarchyOutgoingCallsRequest},"get")}),Object.defineProperty(e,"CallHierarchyPrepareRequest",{enumerable:!0,get:S(function(){return m.CallHierarchyPrepareRequest},"get")});var g=Ilt();Object.defineProperty(e,"TokenFormat",{enumerable:!0,get:S(function(){return g.TokenFormat},"get")}),Object.defineProperty(e,"SemanticTokensRequest",{enumerable:!0,get:S(function(){return g.SemanticTokensRequest},"get")}),Object.defineProperty(e,"SemanticTokensDeltaRequest",{enumerable:!0,get:S(function(){return g.SemanticTokensDeltaRequest},"get")}),Object.defineProperty(e,"SemanticTokensRangeRequest",{enumerable:!0,get:S(function(){return g.SemanticTokensRangeRequest},"get")}),Object.defineProperty(e,"SemanticTokensRefreshRequest",{enumerable:!0,get:S(function(){return g.SemanticTokensRefreshRequest},"get")}),Object.defineProperty(e,"SemanticTokensRegistrationType",{enumerable:!0,get:S(function(){return g.SemanticTokensRegistrationType},"get")});var y=Olt();Object.defineProperty(e,"ShowDocumentRequest",{enumerable:!0,get:S(function(){return y.ShowDocumentRequest},"get")});var v=Plt();Object.defineProperty(e,"LinkedEditingRangeRequest",{enumerable:!0,get:S(function(){return v.LinkedEditingRangeRequest},"get")});var x=Blt();Object.defineProperty(e,"FileOperationPatternKind",{enumerable:!0,get:S(function(){return x.FileOperationPatternKind},"get")}),Object.defineProperty(e,"DidCreateFilesNotification",{enumerable:!0,get:S(function(){return x.DidCreateFilesNotification},"get")}),Object.defineProperty(e,"WillCreateFilesRequest",{enumerable:!0,get:S(function(){return x.WillCreateFilesRequest},"get")}),Object.defineProperty(e,"DidRenameFilesNotification",{enumerable:!0,get:S(function(){return x.DidRenameFilesNotification},"get")}),Object.defineProperty(e,"WillRenameFilesRequest",{enumerable:!0,get:S(function(){return x.WillRenameFilesRequest},"get")}),Object.defineProperty(e,"DidDeleteFilesNotification",{enumerable:!0,get:S(function(){return x.DidDeleteFilesNotification},"get")}),Object.defineProperty(e,"WillDeleteFilesRequest",{enumerable:!0,get:S(function(){return x.WillDeleteFilesRequest},"get")});var b=Flt();Object.defineProperty(e,"UniquenessLevel",{enumerable:!0,get:S(function(){return b.UniquenessLevel},"get")}),Object.defineProperty(e,"MonikerKind",{enumerable:!0,get:S(function(){return b.MonikerKind},"get")}),Object.defineProperty(e,"MonikerRequest",{enumerable:!0,get:S(function(){return b.MonikerRequest},"get")});var T=$lt();Object.defineProperty(e,"TypeHierarchyPrepareRequest",{enumerable:!0,get:S(function(){return T.TypeHierarchyPrepareRequest},"get")}),Object.defineProperty(e,"TypeHierarchySubtypesRequest",{enumerable:!0,get:S(function(){return T.TypeHierarchySubtypesRequest},"get")}),Object.defineProperty(e,"TypeHierarchySupertypesRequest",{enumerable:!0,get:S(function(){return T.TypeHierarchySupertypesRequest},"get")});var w=zlt();Object.defineProperty(e,"InlineValueRequest",{enumerable:!0,get:S(function(){return w.InlineValueRequest},"get")}),Object.defineProperty(e,"InlineValueRefreshRequest",{enumerable:!0,get:S(function(){return w.InlineValueRefreshRequest},"get")});var C=Glt();Object.defineProperty(e,"InlayHintRequest",{enumerable:!0,get:S(function(){return C.InlayHintRequest},"get")}),Object.defineProperty(e,"InlayHintResolveRequest",{enumerable:!0,get:S(function(){return C.InlayHintResolveRequest},"get")}),Object.defineProperty(e,"InlayHintRefreshRequest",{enumerable:!0,get:S(function(){return C.InlayHintRefreshRequest},"get")});var k=Vlt();Object.defineProperty(e,"DiagnosticServerCancellationData",{enumerable:!0,get:S(function(){return k.DiagnosticServerCancellationData},"get")}),Object.defineProperty(e,"DocumentDiagnosticReportKind",{enumerable:!0,get:S(function(){return k.DocumentDiagnosticReportKind},"get")}),Object.defineProperty(e,"DocumentDiagnosticRequest",{enumerable:!0,get:S(function(){return k.DocumentDiagnosticRequest},"get")}),Object.defineProperty(e,"WorkspaceDiagnosticRequest",{enumerable:!0,get:S(function(){return k.WorkspaceDiagnosticRequest},"get")}),Object.defineProperty(e,"DiagnosticRefreshRequest",{enumerable:!0,get:S(function(){return k.DiagnosticRefreshRequest},"get")});var E=Wlt();Object.defineProperty(e,"NotebookCellKind",{enumerable:!0,get:S(function(){return E.NotebookCellKind},"get")}),Object.defineProperty(e,"ExecutionSummary",{enumerable:!0,get:S(function(){return E.ExecutionSummary},"get")}),Object.defineProperty(e,"NotebookCell",{enumerable:!0,get:S(function(){return E.NotebookCell},"get")}),Object.defineProperty(e,"NotebookDocument",{enumerable:!0,get:S(function(){return E.NotebookDocument},"get")}),Object.defineProperty(e,"NotebookDocumentSyncRegistrationType",{enumerable:!0,get:S(function(){return E.NotebookDocumentSyncRegistrationType},"get")}),Object.defineProperty(e,"DidOpenNotebookDocumentNotification",{enumerable:!0,get:S(function(){return E.DidOpenNotebookDocumentNotification},"get")}),Object.defineProperty(e,"NotebookCellArrayChange",{enumerable:!0,get:S(function(){return E.NotebookCellArrayChange},"get")}),Object.defineProperty(e,"DidChangeNotebookDocumentNotification",{enumerable:!0,get:S(function(){return E.DidChangeNotebookDocumentNotification},"get")}),Object.defineProperty(e,"DidSaveNotebookDocumentNotification",{enumerable:!0,get:S(function(){return E.DidSaveNotebookDocumentNotification},"get")}),Object.defineProperty(e,"DidCloseNotebookDocumentNotification",{enumerable:!0,get:S(function(){return E.DidCloseNotebookDocumentNotification},"get")});var A=qlt();Object.defineProperty(e,"InlineCompletionRequest",{enumerable:!0,get:S(function(){return A.InlineCompletionRequest},"get")});var N;(function(oe){function ht(gt){let et=gt;return i.string(et)||i.string(et.language)||i.string(et.scheme)||i.string(et.pattern)}o(ht,"is"),S(ht,"is"),oe.is=ht})(N||(e.TextDocumentFilter=N={}));var P;(function(oe){function ht(gt){let et=gt;return i.objectLiteral(et)&&(i.string(et.notebookType)||i.string(et.scheme)||i.string(et.pattern))}o(ht,"is"),S(ht,"is"),oe.is=ht})(P||(e.NotebookDocumentFilter=P={}));var I;(function(oe){function ht(gt){let et=gt;return i.objectLiteral(et)&&(i.string(et.notebook)||P.is(et.notebook))&&(et.language===void 0||i.string(et.language))}o(ht,"is"),S(ht,"is"),oe.is=ht})(I||(e.NotebookCellTextDocumentFilter=I={}));var D;(function(oe){function ht(gt){if(!Array.isArray(gt))return!1;for(let et of gt)if(!i.string(et)&&!N.is(et)&&!I.is(et))return!1;return!0}o(ht,"is"),S(ht,"is"),oe.is=ht})(D||(e.DocumentSelector=D={}));var _;(function(oe){oe.method="client/registerCapability",oe.messageDirection=t.MessageDirection.serverToClient,oe.type=new t.ProtocolRequestType(oe.method)})(_||(e.RegistrationRequest=_={}));var R;(function(oe){oe.method="client/unregisterCapability",oe.messageDirection=t.MessageDirection.serverToClient,oe.type=new t.ProtocolRequestType(oe.method)})(R||(e.UnregistrationRequest=R={}));var M;(function(oe){oe.Create="create",oe.Rename="rename",oe.Delete="delete"})(M||(e.ResourceOperationKind=M={}));var L;(function(oe){oe.Abort="abort",oe.Transactional="transactional",oe.TextOnlyTransactional="textOnlyTransactional",oe.Undo="undo"})(L||(e.FailureHandlingKind=L={}));var B;(function(oe){oe.UTF8="utf-8",oe.UTF16="utf-16",oe.UTF32="utf-32"})(B||(e.PositionEncodingKind=B={}));var O;(function(oe){function ht(gt){let et=gt;return et&&i.string(et.id)&&et.id.length>0}o(ht,"hasId"),S(ht,"hasId"),oe.hasId=ht})(O||(e.StaticRegistrationOptions=O={}));var $;(function(oe){function ht(gt){let et=gt;return et&&(et.documentSelector===null||D.is(et.documentSelector))}o(ht,"is"),S(ht,"is"),oe.is=ht})($||(e.TextDocumentRegistrationOptions=$={}));var G;(function(oe){function ht(et){let pe=et;return i.objectLiteral(pe)&&(pe.workDoneProgress===void 0||i.boolean(pe.workDoneProgress))}o(ht,"is"),S(ht,"is"),oe.is=ht;function gt(et){let pe=et;return pe&&i.boolean(pe.workDoneProgress)}o(gt,"hasWorkDoneProgress"),S(gt,"hasWorkDoneProgress"),oe.hasWorkDoneProgress=gt})(G||(e.WorkDoneProgressOptions=G={}));var F;(function(oe){oe.method="initialize",oe.messageDirection=t.MessageDirection.clientToServer,oe.type=new t.ProtocolRequestType(oe.method)})(F||(e.InitializeRequest=F={}));var V;(function(oe){oe.unknownProtocolVersion=1})(V||(e.InitializeErrorCodes=V={}));var H;(function(oe){oe.method="initialized",oe.messageDirection=t.MessageDirection.clientToServer,oe.type=new t.ProtocolNotificationType(oe.method)})(H||(e.InitializedNotification=H={}));var j;(function(oe){oe.method="shutdown",oe.messageDirection=t.MessageDirection.clientToServer,oe.type=new t.ProtocolRequestType0(oe.method)})(j||(e.ShutdownRequest=j={}));var U;(function(oe){oe.method="exit",oe.messageDirection=t.MessageDirection.clientToServer,oe.type=new t.ProtocolNotificationType0(oe.method)})(U||(e.ExitNotification=U={}));var Q;(function(oe){oe.method="workspace/didChangeConfiguration",oe.messageDirection=t.MessageDirection.clientToServer,oe.type=new t.ProtocolNotificationType(oe.method)})(Q||(e.DidChangeConfigurationNotification=Q={}));var Y;(function(oe){oe.Error=1,oe.Warning=2,oe.Info=3,oe.Log=4,oe.Debug=5})(Y||(e.MessageType=Y={}));var ae;(function(oe){oe.method="window/showMessage",oe.messageDirection=t.MessageDirection.serverToClient,oe.type=new t.ProtocolNotificationType(oe.method)})(ae||(e.ShowMessageNotification=ae={}));var J;(function(oe){oe.method="window/showMessageRequest",oe.messageDirection=t.MessageDirection.serverToClient,oe.type=new t.ProtocolRequestType(oe.method)})(J||(e.ShowMessageRequest=J={}));var te;(function(oe){oe.method="window/logMessage",oe.messageDirection=t.MessageDirection.serverToClient,oe.type=new t.ProtocolNotificationType(oe.method)})(te||(e.LogMessageNotification=te={}));var re;(function(oe){oe.method="telemetry/event",oe.messageDirection=t.MessageDirection.serverToClient,oe.type=new t.ProtocolNotificationType(oe.method)})(re||(e.TelemetryEventNotification=re={}));var ee;(function(oe){oe.None=0,oe.Full=1,oe.Incremental=2})(ee||(e.TextDocumentSyncKind=ee={}));var Te;(function(oe){oe.method="textDocument/didOpen",oe.messageDirection=t.MessageDirection.clientToServer,oe.type=new t.ProtocolNotificationType(oe.method)})(Te||(e.DidOpenTextDocumentNotification=Te={}));var ue;(function(oe){function ht(et){let pe=et;return pe!=null&&typeof pe.text=="string"&&pe.range!==void 0&&(pe.rangeLength===void 0||typeof pe.rangeLength=="number")}o(ht,"isIncremental"),S(ht,"isIncremental"),oe.isIncremental=ht;function gt(et){let pe=et;return pe!=null&&typeof pe.text=="string"&&pe.range===void 0&&pe.rangeLength===void 0}o(gt,"isFull"),S(gt,"isFull"),oe.isFull=gt})(ue||(e.TextDocumentContentChangeEvent=ue={}));var De;(function(oe){oe.method="textDocument/didChange",oe.messageDirection=t.MessageDirection.clientToServer,oe.type=new t.ProtocolNotificationType(oe.method)})(De||(e.DidChangeTextDocumentNotification=De={}));var Ie;(function(oe){oe.method="textDocument/didClose",oe.messageDirection=t.MessageDirection.clientToServer,oe.type=new t.ProtocolNotificationType(oe.method)})(Ie||(e.DidCloseTextDocumentNotification=Ie={}));var Ee;(function(oe){oe.method="textDocument/didSave",oe.messageDirection=t.MessageDirection.clientToServer,oe.type=new t.ProtocolNotificationType(oe.method)})(Ee||(e.DidSaveTextDocumentNotification=Ee={}));var we;(function(oe){oe.Manual=1,oe.AfterDelay=2,oe.FocusOut=3})(we||(e.TextDocumentSaveReason=we={}));var Me;(function(oe){oe.method="textDocument/willSave",oe.messageDirection=t.MessageDirection.clientToServer,oe.type=new t.ProtocolNotificationType(oe.method)})(Me||(e.WillSaveTextDocumentNotification=Me={}));var $e;(function(oe){oe.method="textDocument/willSaveWaitUntil",oe.messageDirection=t.MessageDirection.clientToServer,oe.type=new t.ProtocolRequestType(oe.method)})($e||(e.WillSaveTextDocumentWaitUntilRequest=$e={}));var de;(function(oe){oe.method="workspace/didChangeWatchedFiles",oe.messageDirection=t.MessageDirection.clientToServer,oe.type=new t.ProtocolNotificationType(oe.method)})(de||(e.DidChangeWatchedFilesNotification=de={}));var rt;(function(oe){oe.Created=1,oe.Changed=2,oe.Deleted=3})(rt||(e.FileChangeType=rt={}));var ke;(function(oe){function ht(gt){let et=gt;return i.objectLiteral(et)&&(r.URI.is(et.baseUri)||r.WorkspaceFolder.is(et.baseUri))&&i.string(et.pattern)}o(ht,"is"),S(ht,"is"),oe.is=ht})(ke||(e.RelativePattern=ke={}));var Fe;(function(oe){oe.Create=1,oe.Change=2,oe.Delete=4})(Fe||(e.WatchKind=Fe={}));var He;(function(oe){oe.method="textDocument/publishDiagnostics",oe.messageDirection=t.MessageDirection.serverToClient,oe.type=new t.ProtocolNotificationType(oe.method)})(He||(e.PublishDiagnosticsNotification=He={}));var at;(function(oe){oe.Invoked=1,oe.TriggerCharacter=2,oe.TriggerForIncompleteCompletions=3})(at||(e.CompletionTriggerKind=at={}));var qe;(function(oe){oe.method="textDocument/completion",oe.messageDirection=t.MessageDirection.clientToServer,oe.type=new t.ProtocolRequestType(oe.method)})(qe||(e.CompletionRequest=qe={}));var Ue;(function(oe){oe.method="completionItem/resolve",oe.messageDirection=t.MessageDirection.clientToServer,oe.type=new t.ProtocolRequestType(oe.method)})(Ue||(e.CompletionResolveRequest=Ue={}));var ye;(function(oe){oe.method="textDocument/hover",oe.messageDirection=t.MessageDirection.clientToServer,oe.type=new t.ProtocolRequestType(oe.method)})(ye||(e.HoverRequest=ye={}));var ve;(function(oe){oe.Invoked=1,oe.TriggerCharacter=2,oe.ContentChange=3})(ve||(e.SignatureHelpTriggerKind=ve={}));var ie;(function(oe){oe.method="textDocument/signatureHelp",oe.messageDirection=t.MessageDirection.clientToServer,oe.type=new t.ProtocolRequestType(oe.method)})(ie||(e.SignatureHelpRequest=ie={}));var fe;(function(oe){oe.method="textDocument/definition",oe.messageDirection=t.MessageDirection.clientToServer,oe.type=new t.ProtocolRequestType(oe.method)})(fe||(e.DefinitionRequest=fe={}));var W;(function(oe){oe.method="textDocument/references",oe.messageDirection=t.MessageDirection.clientToServer,oe.type=new t.ProtocolRequestType(oe.method)})(W||(e.ReferencesRequest=W={}));var ce;(function(oe){oe.method="textDocument/documentHighlight",oe.messageDirection=t.MessageDirection.clientToServer,oe.type=new t.ProtocolRequestType(oe.method)})(ce||(e.DocumentHighlightRequest=ce={}));var K;(function(oe){oe.method="textDocument/documentSymbol",oe.messageDirection=t.MessageDirection.clientToServer,oe.type=new t.ProtocolRequestType(oe.method)})(K||(e.DocumentSymbolRequest=K={}));var Re;(function(oe){oe.method="textDocument/codeAction",oe.messageDirection=t.MessageDirection.clientToServer,oe.type=new t.ProtocolRequestType(oe.method)})(Re||(e.CodeActionRequest=Re={}));var xe;(function(oe){oe.method="codeAction/resolve",oe.messageDirection=t.MessageDirection.clientToServer,oe.type=new t.ProtocolRequestType(oe.method)})(xe||(e.CodeActionResolveRequest=xe={}));var Oe;(function(oe){oe.method="workspace/symbol",oe.messageDirection=t.MessageDirection.clientToServer,oe.type=new t.ProtocolRequestType(oe.method)})(Oe||(e.WorkspaceSymbolRequest=Oe={}));var be;(function(oe){oe.method="workspaceSymbol/resolve",oe.messageDirection=t.MessageDirection.clientToServer,oe.type=new t.ProtocolRequestType(oe.method)})(be||(e.WorkspaceSymbolResolveRequest=be={}));var Be;(function(oe){oe.method="textDocument/codeLens",oe.messageDirection=t.MessageDirection.clientToServer,oe.type=new t.ProtocolRequestType(oe.method)})(Be||(e.CodeLensRequest=Be={}));var Ae;(function(oe){oe.method="codeLens/resolve",oe.messageDirection=t.MessageDirection.clientToServer,oe.type=new t.ProtocolRequestType(oe.method)})(Ae||(e.CodeLensResolveRequest=Ae={}));var Ve;(function(oe){oe.method="workspace/codeLens/refresh",oe.messageDirection=t.MessageDirection.serverToClient,oe.type=new t.ProtocolRequestType0(oe.method)})(Ve||(e.CodeLensRefreshRequest=Ve={}));var Pe;(function(oe){oe.method="textDocument/documentLink",oe.messageDirection=t.MessageDirection.clientToServer,oe.type=new t.ProtocolRequestType(oe.method)})(Pe||(e.DocumentLinkRequest=Pe={}));var Ye;(function(oe){oe.method="documentLink/resolve",oe.messageDirection=t.MessageDirection.clientToServer,oe.type=new t.ProtocolRequestType(oe.method)})(Ye||(e.DocumentLinkResolveRequest=Ye={}));var le;(function(oe){oe.method="textDocument/formatting",oe.messageDirection=t.MessageDirection.clientToServer,oe.type=new t.ProtocolRequestType(oe.method)})(le||(e.DocumentFormattingRequest=le={}));var st;(function(oe){oe.method="textDocument/rangeFormatting",oe.messageDirection=t.MessageDirection.clientToServer,oe.type=new t.ProtocolRequestType(oe.method)})(st||(e.DocumentRangeFormattingRequest=st={}));var me;(function(oe){oe.method="textDocument/rangesFormatting",oe.messageDirection=t.MessageDirection.clientToServer,oe.type=new t.ProtocolRequestType(oe.method)})(me||(e.DocumentRangesFormattingRequest=me={}));var ot;(function(oe){oe.method="textDocument/onTypeFormatting",oe.messageDirection=t.MessageDirection.clientToServer,oe.type=new t.ProtocolRequestType(oe.method)})(ot||(e.DocumentOnTypeFormattingRequest=ot={}));var kt;(function(oe){oe.Identifier=1})(kt||(e.PrepareSupportDefaultBehavior=kt={}));var Gt;(function(oe){oe.method="textDocument/rename",oe.messageDirection=t.MessageDirection.clientToServer,oe.type=new t.ProtocolRequestType(oe.method)})(Gt||(e.RenameRequest=Gt={}));var Tt;(function(oe){oe.method="textDocument/prepareRename",oe.messageDirection=t.MessageDirection.clientToServer,oe.type=new t.ProtocolRequestType(oe.method)})(Tt||(e.PrepareRenameRequest=Tt={}));var Et;(function(oe){oe.method="workspace/executeCommand",oe.messageDirection=t.MessageDirection.clientToServer,oe.type=new t.ProtocolRequestType(oe.method)})(Et||(e.ExecuteCommandRequest=Et={}));var yt;(function(oe){oe.method="workspace/applyEdit",oe.messageDirection=t.MessageDirection.serverToClient,oe.type=new t.ProtocolRequestType("workspace/applyEdit")})(yt||(e.ApplyWorkspaceEditRequest=yt={}))}}),Hlt=Lr({"../../node_modules/.pnpm/vscode-languageserver-protocol@3.17.5/node_modules/vscode-languageserver-protocol/lib/common/connection.js"(e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.createProtocolConnection=void 0;var t=ay();function r(i,n,a,s){return t.ConnectionStrategy.is(s)&&(s={connectionStrategy:s}),(0,t.createMessageConnection)(i,n,a,s)}o(r,"createProtocolConnection"),S(r,"createProtocolConnection"),e.createProtocolConnection=r}}),Ylt=Lr({"../../node_modules/.pnpm/vscode-languageserver-protocol@3.17.5/node_modules/vscode-languageserver-protocol/lib/common/api.js"(e){"use strict";var t=e&&e.__createBinding||(Object.create?(function(a,s,l,u){u===void 0&&(u=l);var h=Object.getOwnPropertyDescriptor(s,l);(!h||("get"in h?!s.__esModule:h.writable||h.configurable))&&(h={enumerable:!0,get:S(function(){return s[l]},"get")}),Object.defineProperty(a,u,h)}):(function(a,s,l,u){u===void 0&&(u=l),a[u]=s[l]})),r=e&&e.__exportStar||function(a,s){for(var l in a)l!=="default"&&!Object.prototype.hasOwnProperty.call(s,l)&&t(s,a,l)};Object.defineProperty(e,"__esModule",{value:!0}),e.LSPErrorCodes=e.createProtocolConnection=void 0,r(ay(),e),r((bT(),u$(q5)),e),r(tn(),e),r(Ult(),e);var i=Hlt();Object.defineProperty(e,"createProtocolConnection",{enumerable:!0,get:S(function(){return i.createProtocolConnection},"get")});var n;(function(a){a.lspReservedErrorRangeStart=-32899,a.RequestFailed=-32803,a.ServerCancelled=-32802,a.ContentModified=-32801,a.RequestCancelled=-32800,a.lspReservedErrorRangeEnd=-32800})(n||(e.LSPErrorCodes=n={}))}}),jlt=Lr({"../../node_modules/.pnpm/vscode-languageserver-protocol@3.17.5/node_modules/vscode-languageserver-protocol/lib/browser/main.js"(e){"use strict";var t=e&&e.__createBinding||(Object.create?(function(a,s,l,u){u===void 0&&(u=l);var h=Object.getOwnPropertyDescriptor(s,l);(!h||("get"in h?!s.__esModule:h.writable||h.configurable))&&(h={enumerable:!0,get:S(function(){return s[l]},"get")}),Object.defineProperty(a,u,h)}):(function(a,s,l,u){u===void 0&&(u=l),a[u]=s[l]})),r=e&&e.__exportStar||function(a,s){for(var l in a)l!=="default"&&!Object.prototype.hasOwnProperty.call(s,l)&&t(s,a,l)};Object.defineProperty(e,"__esModule",{value:!0}),e.createProtocolConnection=void 0;var i=g1e();r(g1e(),e),r(Ylt(),e);function n(a,s,l,u){return(0,i.createMessageConnection)(a,s,l,u)}o(n,"createProtocolConnection"),S(n,"createProtocolConnection"),e.createProtocolConnection=n}}),uve={};xf(uve,{AbstractAstReflection:o(()=>p$,"AbstractAstReflection"),AbstractCstNode:o(()=>gG,"AbstractCstNode"),AbstractLangiumParser:o(()=>vG,"AbstractLangiumParser"),AbstractParserErrorMessageProvider:o(()=>JSe,"AbstractParserErrorMessageProvider"),AbstractThreadedAsyncParser:o(()=>kvt,"AbstractThreadedAsyncParser"),AstUtils:o(()=>m$,"AstUtils"),BiMap:o(()=>$5,"BiMap"),Cancellation:o(()=>Ii,"Cancellation"),CompositeCstNodeImpl:o(()=>GA,"CompositeCstNodeImpl"),ContextCache:o(()=>jA,"ContextCache"),CstNodeBuilder:o(()=>XSe,"CstNodeBuilder"),CstUtils:o(()=>d$,"CstUtils"),DEFAULT_TOKENIZE_OPTIONS:o(()=>PG,"DEFAULT_TOKENIZE_OPTIONS"),DONE_RESULT:o(()=>as,"DONE_RESULT"),DatatypeSymbol:o(()=>O5,"DatatypeSymbol"),DefaultAstNodeDescriptionProvider:o(()=>D3e,"DefaultAstNodeDescriptionProvider"),DefaultAstNodeLocator:o(()=>L3e,"DefaultAstNodeLocator"),DefaultAsyncParser:o(()=>X3e,"DefaultAsyncParser"),DefaultCommentProvider:o(()=>j3e,"DefaultCommentProvider"),DefaultConfigurationProvider:o(()=>M3e,"DefaultConfigurationProvider"),DefaultDocumentBuilder:o(()=>N3e,"DefaultDocumentBuilder"),DefaultDocumentValidator:o(()=>_3e,"DefaultDocumentValidator"),DefaultHydrator:o(()=>Z3e,"DefaultHydrator"),DefaultIndexManager:o(()=>I3e,"DefaultIndexManager"),DefaultJsonSerializer:o(()=>w3e,"DefaultJsonSerializer"),DefaultLangiumDocumentFactory:o(()=>m3e,"DefaultLangiumDocumentFactory"),DefaultLangiumDocuments:o(()=>g3e,"DefaultLangiumDocuments"),DefaultLangiumProfiler:o(()=>_vt,"DefaultLangiumProfiler"),DefaultLexer:o(()=>BG,"DefaultLexer"),DefaultLexerErrorMessageProvider:o(()=>P3e,"DefaultLexerErrorMessageProvider"),DefaultLinker:o(()=>y3e,"DefaultLinker"),DefaultNameProvider:o(()=>v3e,"DefaultNameProvider"),DefaultReferenceDescriptionProvider:o(()=>R3e,"DefaultReferenceDescriptionProvider"),DefaultReferences:o(()=>x3e,"DefaultReferences"),DefaultScopeComputation:o(()=>b3e,"DefaultScopeComputation"),DefaultScopeProvider:o(()=>k3e,"DefaultScopeProvider"),DefaultServiceRegistry:o(()=>S3e,"DefaultServiceRegistry"),DefaultTokenBuilder:o(()=>qA,"DefaultTokenBuilder"),DefaultValueConverter:o(()=>SG,"DefaultValueConverter"),DefaultWorkspaceLock:o(()=>K3e,"DefaultWorkspaceLock"),DefaultWorkspaceManager:o(()=>O3e,"DefaultWorkspaceManager"),Deferred:o(()=>mh,"Deferred"),Disposable:o(()=>F0,"Disposable"),DisposableCache:o(()=>YA,"DisposableCache"),DocumentCache:o(()=>C3e,"DocumentCache"),DocumentState:o(()=>zr,"DocumentState"),DocumentValidator:o(()=>Qo,"DocumentValidator"),EMPTY_SCOPE:o(()=>xvt,"EMPTY_SCOPE"),EMPTY_STREAM:o(()=>H1,"EMPTY_STREAM"),EmptyFileSystem:o(()=>fn,"EmptyFileSystem"),EmptyFileSystemProvider:o(()=>eEe,"EmptyFileSystemProvider"),ErrorWithLocation:o(()=>eA,"ErrorWithLocation"),GrammarAST:o(()=>fve,"GrammarAST"),GrammarUtils:o(()=>U$,"GrammarUtils"),IndentationAwareLexer:o(()=>Svt,"IndentationAwareLexer"),IndentationAwareTokenBuilder:o(()=>J3e,"IndentationAwareTokenBuilder"),JSDocDocumentationProvider:o(()=>Y3e,"JSDocDocumentationProvider"),LangiumCompletionParser:o(()=>e3e,"LangiumCompletionParser"),LangiumParser:o(()=>QSe,"LangiumParser"),LangiumParserErrorMessageProvider:o(()=>xG,"LangiumParserErrorMessageProvider"),LeafCstNodeImpl:o(()=>I5,"LeafCstNodeImpl"),LexingMode:o(()=>P0,"LexingMode"),MapScope:o(()=>vvt,"MapScope"),Module:o(()=>XF,"Module"),MultiMap:o(()=>gh,"MultiMap"),MultiMapScope:o(()=>T3e,"MultiMapScope"),OperationCancelled:o(()=>Zc,"OperationCancelled"),ParserWorker:o(()=>wvt,"ParserWorker"),ProfilingTask:o(()=>rEe,"ProfilingTask"),Reduction:o(()=>iT,"Reduction"),RefResolving:o(()=>f0,"RefResolving"),RegExpUtils:o(()=>Y$,"RegExpUtils"),RootCstNodeImpl:o(()=>yG,"RootCstNodeImpl"),SimpleCache:o(()=>LG,"SimpleCache"),StreamImpl:o(()=>Kc,"StreamImpl"),StreamScope:o(()=>UF,"StreamScope"),TextDocument:o(()=>B5,"TextDocument"),TreeStreamImpl:o(()=>Y1,"TreeStreamImpl"),URI:o(()=>fo,"URI"),UriTrie:o(()=>DG,"UriTrie"),UriUtils:o(()=>os,"UriUtils"),VALIDATE_EACH_NODE:o(()=>A3e,"VALIDATE_EACH_NODE"),ValidationCategory:o(()=>z5,"ValidationCategory"),ValidationRegistry:o(()=>E3e,"ValidationRegistry"),ValueConverter:o(()=>jc,"ValueConverter"),WorkspaceCache:o(()=>MG,"WorkspaceCache"),assertCondition:o(()=>H$,"assertCondition"),assertUnreachable:o(()=>bf,"assertUnreachable"),createCompletionParser:o(()=>CG,"createCompletionParser"),createDefaultCoreModule:o(()=>rn,"createDefaultCoreModule"),createDefaultSharedCoreModule:o(()=>nn,"createDefaultSharedCoreModule"),createGrammarConfig:o(()=>hz,"createGrammarConfig"),createLangiumParser:o(()=>kG,"createLangiumParser"),createParser:o(()=>VA,"createParser"),delayNextTick:o(()=>UA,"delayNextTick"),diagnosticData:o(()=>O0,"diagnosticData"),eagerLoad:o(()=>qG,"eagerLoad"),getDiagnosticRange:o(()=>IG,"getDiagnosticRange"),indentationBuilderDefaultOptions:o(()=>ZF,"indentationBuilderDefaultOptions"),inject:o(()=>Hr,"inject"),interruptAndCheck:o(()=>la,"interruptAndCheck"),isAstNode:o(()=>Rn,"isAstNode"),isAstNodeDescription:o(()=>f$,"isAstNodeDescription"),isAstNodeWithComment:o(()=>NG,"isAstNodeWithComment"),isCompositeCstNode:o(()=>oh,"isCompositeCstNode"),isIMultiModeLexerDefinition:o(()=>ZA,"isIMultiModeLexerDefinition"),isJSDoc:o(()=>$G,"isJSDoc"),isLeafCstNode:o(()=>q0,"isLeafCstNode"),isLinkingError:o(()=>g0,"isLinkingError"),isMultiReference:o(()=>Qc,"isMultiReference"),isNamed:o(()=>RG,"isNamed"),isOperationCancelled:o(()=>cm,"isOperationCancelled"),isReference:o(()=>ss,"isReference"),isRootCstNode:o(()=>H5,"isRootCstNode"),isTokenTypeArray:o(()=>KA,"isTokenTypeArray"),isTokenTypeDictionary:o(()=>G5,"isTokenTypeDictionary"),loadGrammarFromJson:o(()=>xo,"loadGrammarFromJson"),parseJSDoc:o(()=>FG,"parseJSDoc"),prepareLangiumParser:o(()=>wG,"prepareLangiumParser"),setInterruptionPeriod:o(()=>EG,"setInterruptionPeriod"),startCancelableOperation:o(()=>HA,"startCancelableOperation"),stream:o(()=>gi,"stream"),toDiagnosticData:o(()=>OG,"toDiagnosticData"),toDiagnosticSeverity:o(()=>J2,"toDiagnosticSeverity")});d$={};xf(d$,{DefaultNameRegexp:o(()=>z$,"DefaultNameRegexp"),RangeComparison:o(()=>Xc,"RangeComparison"),compareRange:o(()=>F$,"compareRange"),findCommentNode:o(()=>G$,"findCommentNode"),findDeclarationNodeAtOffset:o(()=>Mve,"findDeclarationNodeAtOffset"),findLeafNodeAtOffset:o(()=>J5,"findLeafNodeAtOffset"),findLeafNodeBeforeOffset:o(()=>V$,"findLeafNodeBeforeOffset"),flattenCst:o(()=>Lve,"flattenCst"),getDatatypeNode:o(()=>Rve,"getDatatypeNode"),getInteriorNodes:o(()=>Ove,"getInteriorNodes"),getNextNode:o(()=>Nve,"getNextNode"),getPreviousNode:o(()=>q$,"getPreviousNode"),getStartlineNode:o(()=>Ive,"getStartlineNode"),inRange:o(()=>$$,"inRange"),isChildNode:o(()=>B$,"isChildNode"),isCommentNode:o(()=>v5,"isCommentNode"),streamCst:o(()=>Z1,"streamCst"),toDocumentSegment:o(()=>Q1,"toDocumentSegment"),tokenToRange:o(()=>nT,"tokenToRange")});o(Rn,"isAstNode");S(Rn,"isAstNode");o(ss,"isReference");S(ss,"isReference");o(Qc,"isMultiReference");S(Qc,"isMultiReference");o(f$,"isAstNodeDescription");S(f$,"isAstNodeDescription");o(g0,"isLinkingError");S(g0,"isLinkingError");p$=class{static{o(this,"AbstractAstReflection")}static{S(this,"AbstractAstReflection")}constructor(){this.subtypes={},this.allSubtypes={}}getAllTypes(){return Object.keys(this.types)}getReferenceType(e){let t=this.types[e.container.$type];if(!t)throw new Error(`Type ${e.container.$type||"undefined"} not found.`);let r=t.properties[e.property]?.referenceType;if(!r)throw new Error(`Property ${e.property||"undefined"} of type ${e.container.$type} is not a reference.`);return r}getTypeMetaData(e){let t=this.types[e];return t||{name:e,properties:{},superTypes:[]}}isInstance(e,t){return Rn(e)&&this.isSubtype(e.$type,t)}isSubtype(e,t){if(e===t)return!0;let r=this.subtypes[e];r||(r=this.subtypes[e]={});let i=r[t];if(i!==void 0)return i;{let n=this.types[e],a=n?n.superTypes.some(s=>this.isSubtype(s,t)):!1;return r[t]=a,a}}getAllSubTypes(e){let t=this.allSubtypes[e];if(t)return t;{let r=this.getAllTypes(),i=[];for(let n of r)this.isSubtype(n,e)&&i.push(n);return this.allSubtypes[e]=i,i}}};o(oh,"isCompositeCstNode");S(oh,"isCompositeCstNode");o(q0,"isLeafCstNode");S(q0,"isLeafCstNode");o(H5,"isRootCstNode");S(H5,"isRootCstNode");Kc=class rh{static{o(this,"_StreamImpl")}static{S(this,"StreamImpl")}constructor(t,r){this.startFn=t,this.nextFn=r}iterator(){let t={state:this.startFn(),next:S(()=>this.nextFn(t.state),"next"),[Symbol.iterator]:()=>t};return t}[Symbol.iterator](){return this.iterator()}isEmpty(){return!!this.iterator().next().done}count(){let t=this.iterator(),r=0,i=t.next();for(;!i.done;)r++,i=t.next();return r}toArray(){let t=[],r=this.iterator(),i;do i=r.next(),i.value!==void 0&&t.push(i.value);while(!i.done);return t}toSet(){return new Set(this)}toMap(t,r){let i=this.map(n=>[t?t(n):n,r?r(n):n]);return new Map(i)}toString(){return this.join()}concat(t){return new rh(()=>({first:this.startFn(),firstDone:!1,iterator:t[Symbol.iterator]()}),r=>{let i;if(!r.firstDone){do if(i=this.nextFn(r.first),!i.done)return i;while(!i.done);r.firstDone=!0}do if(i=r.iterator.next(),!i.done)return i;while(!i.done);return as})}join(t=","){let r=this.iterator(),i="",n,a=!1;do n=r.next(),n.done||(a&&(i+=t),i+=hve(n.value)),a=!0;while(!n.done);return i}indexOf(t,r=0){let i=this.iterator(),n=0,a=i.next();for(;!a.done;){if(n>=r&&a.value===t)return n;a=i.next(),n++}return-1}every(t){let r=this.iterator(),i=r.next();for(;!i.done;){if(!t(i.value))return!1;i=r.next()}return!0}some(t){let r=this.iterator(),i=r.next();for(;!i.done;){if(t(i.value))return!0;i=r.next()}return!1}forEach(t){let r=this.iterator(),i=0,n=r.next();for(;!n.done;)t(n.value,i),n=r.next(),i++}map(t){return new rh(this.startFn,r=>{let{done:i,value:n}=this.nextFn(r);return i?as:{done:!1,value:t(n)}})}filter(t){return new rh(this.startFn,r=>{let i;do if(i=this.nextFn(r),!i.done&&t(i.value))return i;while(!i.done);return as})}nonNullable(){return this.filter(t=>t!=null)}reduce(t,r){let i=this.iterator(),n=r,a=i.next();for(;!a.done;)n===void 0?n=a.value:n=t(n,a.value),a=i.next();return n}reduceRight(t,r){return this.recursiveReduce(this.iterator(),t,r)}recursiveReduce(t,r,i){let n=t.next();if(n.done)return i;let a=this.recursiveReduce(t,r,i);return a===void 0?n.value:r(a,n.value)}find(t){let r=this.iterator(),i=r.next();for(;!i.done;){if(t(i.value))return i.value;i=r.next()}}findIndex(t){let r=this.iterator(),i=0,n=r.next();for(;!n.done;){if(t(n.value))return i;n=r.next(),i++}return-1}includes(t){let r=this.iterator(),i=r.next();for(;!i.done;){if(i.value===t)return!0;i=r.next()}return!1}flatMap(t){return new rh(()=>({this:this.startFn()}),r=>{do{if(r.iterator){let a=r.iterator.next();if(a.done)r.iterator=void 0;else return a}let{done:i,value:n}=this.nextFn(r.this);if(!i){let a=t(n);if(rT(a))r.iterator=a[Symbol.iterator]();else return{done:!1,value:a}}}while(r.iterator);return as})}flat(t){if(t===void 0&&(t=1),t<=0)return this;let r=t>1?this.flat(t-1):this;return new rh(()=>({this:r.startFn()}),i=>{do{if(i.iterator){let s=i.iterator.next();if(s.done)i.iterator=void 0;else return s}let{done:n,value:a}=r.nextFn(i.this);if(!n)if(rT(a))i.iterator=a[Symbol.iterator]();else return{done:!1,value:a}}while(i.iterator);return as})}head(){let r=this.iterator().next();if(!r.done)return r.value}tail(t=1){return new rh(()=>{let r=this.startFn();for(let i=0;i<t;i++)if(this.nextFn(r).done)return r;return r},this.nextFn)}limit(t){return new rh(()=>({size:0,state:this.startFn()}),r=>(r.size++,r.size>t?as:this.nextFn(r.state)))}distinct(t){return new rh(()=>({set:new Set,internalState:this.startFn()}),r=>{let i;do if(i=this.nextFn(r.internalState),!i.done){let n=t?t(i.value):i.value;if(!r.set.has(n))return r.set.add(n),i}while(!i.done);return as})}exclude(t,r){let i=new Set;for(let n of t){let a=r?r(n):n;i.add(a)}return this.filter(n=>{let a=r?r(n):n;return!i.has(a)})}};o(hve,"toString");S(hve,"toString");o(rT,"isIterable");S(rT,"isIterable");H1=new Kc(()=>{},()=>as),as=Object.freeze({done:!0,value:void 0});o(gi,"stream");S(gi,"stream");Y1=class extends Kc{static{o(this,"TreeStreamImpl")}static{S(this,"TreeStreamImpl")}constructor(e,t,r){super(()=>({iterators:r?.includeRoot?[[e][Symbol.iterator]()]:[t(e)[Symbol.iterator]()],pruned:!1}),i=>{for(i.pruned&&(i.iterators.pop(),i.pruned=!1);i.iterators.length>0;){let a=i.iterators[i.iterators.length-1].next();if(a.done)i.iterators.pop();else return i.iterators.push(t(a.value)[Symbol.iterator]()),a}return as})}iterator(){let e={state:this.startFn(),next:S(()=>this.nextFn(e.state),"next"),prune:S(()=>{e.state.pruned=!0},"prune"),[Symbol.iterator]:()=>e};return e}};(function(e){function t(a){return a.reduce((s,l)=>s+l,0)}o(t,"sum"),S(t,"sum"),e.sum=t;function r(a){return a.reduce((s,l)=>s*l,0)}o(r,"product"),S(r,"product"),e.product=r;function i(a){return a.reduce((s,l)=>Math.min(s,l))}o(i,"min2"),S(i,"min"),e.min=i;function n(a){return a.reduce((s,l)=>Math.max(s,l))}o(n,"max"),S(n,"max"),e.max=n})(iT||(iT={}));m$={};xf(m$,{assignMandatoryProperties:o(()=>g$,"assignMandatoryProperties"),copyAstNode:o(()=>n5,"copyAstNode"),findRootNode:o(()=>V1,"findRootNode"),getContainerOfType:o(()=>U0,"getContainerOfType"),getDocument:o(()=>Wl,"getDocument"),getReferenceNodes:o(()=>r5,"getReferenceNodes"),hasContainerOfType:o(()=>dve,"hasContainerOfType"),linkContentToContainer:o(()=>j1,"linkContentToContainer"),streamAllContents:o(()=>yh,"streamAllContents"),streamAst:o(()=>ql,"streamAst"),streamContents:o(()=>CT,"streamContents"),streamReferences:o(()=>X1,"streamReferences")});o(j1,"linkContentToContainer");S(j1,"linkContentToContainer");o(U0,"getContainerOfType");S(U0,"getContainerOfType");o(dve,"hasContainerOfType");S(dve,"hasContainerOfType");o(Wl,"getDocument");S(Wl,"getDocument");o(V1,"findRootNode");S(V1,"findRootNode");o(r5,"getReferenceNodes");S(r5,"getReferenceNodes");o(CT,"streamContents");S(CT,"streamContents");o(yh,"streamAllContents");S(yh,"streamAllContents");o(ql,"streamAst");S(ql,"streamAst");o(i5,"isAstNodeInRange");S(i5,"isAstNodeInRange");o(X1,"streamReferences");S(X1,"streamReferences");o(g$,"assignMandatoryProperties");S(g$,"assignMandatoryProperties");o(y$,"copyDefaultValue");S(y$,"copyDefaultValue");o(n5,"copyAstNode");S(n5,"copyAstNode");fve={};xf(fve,{AbstractElement:o(()=>zs,"AbstractElement"),AbstractParserRule:o(()=>$2,"AbstractParserRule"),AbstractRule:o(()=>N1,"AbstractRule"),AbstractType:o(()=>ho,"AbstractType"),Action:o(()=>of,"Action"),Alternatives:o(()=>z2,"Alternatives"),ArrayLiteral:o(()=>a5,"ArrayLiteral"),ArrayType:o(()=>s5,"ArrayType"),Assignment:o(()=>lf,"Assignment"),BooleanLiteral:o(()=>o5,"BooleanLiteral"),CharacterRange:o(()=>cf,"CharacterRange"),Condition:o(()=>uf,"Condition"),Conjunction:o(()=>G2,"Conjunction"),CrossReference:o(()=>hf,"CrossReference"),Disjunction:o(()=>V2,"Disjunction"),EndOfFile:o(()=>l5,"EndOfFile"),Grammar:o(()=>nh,"Grammar"),GrammarImport:o(()=>c5,"GrammarImport"),Group:o(()=>y0,"Group"),InferredType:o(()=>u5,"InferredType"),InfixRule:o(()=>Hc,"InfixRule"),InfixRuleOperatorList:o(()=>W2,"InfixRuleOperatorList"),InfixRuleOperators:o(()=>h5,"InfixRuleOperators"),Interface:o(()=>I1,"Interface"),Keyword:o(()=>O1,"Keyword"),LangiumGrammarAstReflection:o(()=>P$,"LangiumGrammarAstReflection"),LangiumGrammarTerminals:o(()=>Xlt,"LangiumGrammarTerminals"),NamedArgument:o(()=>P1,"NamedArgument"),NegatedToken:o(()=>v0,"NegatedToken"),Negation:o(()=>d5,"Negation"),NumberLiteral:o(()=>f5,"NumberLiteral"),Parameter:o(()=>B1,"Parameter"),ParameterReference:o(()=>p5,"ParameterReference"),ParserRule:o(()=>zl,"ParserRule"),ReferenceType:o(()=>q2,"ReferenceType"),RegexToken:o(()=>x0,"RegexToken"),ReturnType:o(()=>m5,"ReturnType"),RuleCall:o(()=>b0,"RuleCall"),SimpleType:o(()=>F1,"SimpleType"),StringLiteral:o(()=>g5,"StringLiteral"),TerminalAlternatives:o(()=>T0,"TerminalAlternatives"),TerminalElement:o(()=>Gs,"TerminalElement"),TerminalGroup:o(()=>C0,"TerminalGroup"),TerminalRule:o(()=>ah,"TerminalRule"),TerminalRuleCall:o(()=>k0,"TerminalRuleCall"),Type:o(()=>U2,"Type"),TypeAttribute:o(()=>w0,"TypeAttribute"),TypeDefinition:o(()=>S0,"TypeDefinition"),UnionType:o(()=>y5,"UnionType"),UnorderedGroup:o(()=>H2,"UnorderedGroup"),UntilToken:o(()=>E0,"UntilToken"),ValueLiteral:o(()=>A0,"ValueLiteral"),Wildcard:o(()=>$1,"Wildcard"),isAbstractElement:o(()=>Y5,"isAbstractElement"),isAbstractParserRule:o(()=>H0,"isAbstractParserRule"),isAbstractRule:o(()=>pve,"isAbstractRule"),isAbstractType:o(()=>mve,"isAbstractType"),isAction:o(()=>pf,"isAction"),isAlternatives:o(()=>j5,"isAlternatives"),isArrayLiteral:o(()=>gve,"isArrayLiteral"),isArrayType:o(()=>v$,"isArrayType"),isAssignment:o(()=>lh,"isAssignment"),isBooleanLiteral:o(()=>x$,"isBooleanLiteral"),isCharacterRange:o(()=>b$,"isCharacterRange"),isCondition:o(()=>yve,"isCondition"),isConjunction:o(()=>T$,"isConjunction"),isCrossReference:o(()=>Y0,"isCrossReference"),isDisjunction:o(()=>C$,"isDisjunction"),isEndOfFile:o(()=>k$,"isEndOfFile"),isGrammar:o(()=>vve,"isGrammar"),isGrammarImport:o(()=>xve,"isGrammarImport"),isGroup:o(()=>j0,"isGroup"),isInferredType:o(()=>kT,"isInferredType"),isInfixRule:o(()=>K1,"isInfixRule"),isInfixRuleOperatorList:o(()=>bve,"isInfixRuleOperatorList"),isInfixRuleOperators:o(()=>Tve,"isInfixRuleOperators"),isInterface:o(()=>w$,"isInterface"),isKeyword:o(()=>ch,"isKeyword"),isNamedArgument:o(()=>Cve,"isNamedArgument"),isNegatedToken:o(()=>S$,"isNegatedToken"),isNegation:o(()=>E$,"isNegation"),isNumberLiteral:o(()=>kve,"isNumberLiteral"),isParameter:o(()=>wve,"isParameter"),isParameterReference:o(()=>A$,"isParameterReference"),isParserRule:o(()=>cs,"isParserRule"),isReferenceType:o(()=>_$,"isReferenceType"),isRegexToken:o(()=>D$,"isRegexToken"),isReturnType:o(()=>R$,"isReturnType"),isRuleCall:o(()=>uh,"isRuleCall"),isSimpleType:o(()=>X5,"isSimpleType"),isStringLiteral:o(()=>Sve,"isStringLiteral"),isTerminalAlternatives:o(()=>L$,"isTerminalAlternatives"),isTerminalElement:o(()=>Eve,"isTerminalElement"),isTerminalGroup:o(()=>M$,"isTerminalGroup"),isTerminalRule:o(()=>rl,"isTerminalRule"),isTerminalRuleCall:o(()=>K5,"isTerminalRuleCall"),isType:o(()=>Z5,"isType"),isTypeAttribute:o(()=>Ave,"isTypeAttribute"),isTypeDefinition:o(()=>_ve,"isTypeDefinition"),isUnionType:o(()=>N$,"isUnionType"),isUnorderedGroup:o(()=>Q5,"isUnorderedGroup"),isUntilToken:o(()=>I$,"isUntilToken"),isValueLiteral:o(()=>Dve,"isValueLiteral"),isWildcard:o(()=>O$,"isWildcard"),reflection:o(()=>dr,"reflection")});Xlt={ID:/\^?[_a-zA-Z][\w_]*/,STRING:/"(\\.|[^"\\])*"|'(\\.|[^'\\])*'/,NUMBER:/NaN|-?((\d*\.\d+|\d+)([Ee][+-]?\d+)?|Infinity)/,RegexLiteral:/\/(?![*+?])(?:[^\r\n\[/\\]|\\.|\[(?:[^\r\n\]\\]|\\.)*\])+\/[a-z]*/,WS:/\s+/,ML_COMMENT:/\/\*[\s\S]*?\*\//,SL_COMMENT:/\/\/[^\n\r]*/},zs={$type:"AbstractElement",cardinality:"cardinality"};o(Y5,"isAbstractElement");S(Y5,"isAbstractElement");$2={$type:"AbstractParserRule"};o(H0,"isAbstractParserRule");S(H0,"isAbstractParserRule");N1={$type:"AbstractRule"};o(pve,"isAbstractRule");S(pve,"isAbstractRule");ho={$type:"AbstractType"};o(mve,"isAbstractType");S(mve,"isAbstractType");of={$type:"Action",cardinality:"cardinality",feature:"feature",inferredType:"inferredType",operator:"operator",type:"type"};o(pf,"isAction");S(pf,"isAction");z2={$type:"Alternatives",cardinality:"cardinality",elements:"elements"};o(j5,"isAlternatives");S(j5,"isAlternatives");a5={$type:"ArrayLiteral",elements:"elements"};o(gve,"isArrayLiteral");S(gve,"isArrayLiteral");s5={$type:"ArrayType",elementType:"elementType"};o(v$,"isArrayType");S(v$,"isArrayType");lf={$type:"Assignment",cardinality:"cardinality",feature:"feature",operator:"operator",predicate:"predicate",terminal:"terminal"};o(lh,"isAssignment");S(lh,"isAssignment");o5={$type:"BooleanLiteral",true:"true"};o(x$,"isBooleanLiteral");S(x$,"isBooleanLiteral");cf={$type:"CharacterRange",cardinality:"cardinality",left:"left",lookahead:"lookahead",parenthesized:"parenthesized",right:"right"};o(b$,"isCharacterRange");S(b$,"isCharacterRange");uf={$type:"Condition"};o(yve,"isCondition");S(yve,"isCondition");G2={$type:"Conjunction",left:"left",right:"right"};o(T$,"isConjunction");S(T$,"isConjunction");hf={$type:"CrossReference",cardinality:"cardinality",deprecatedSyntax:"deprecatedSyntax",isMulti:"isMulti",terminal:"terminal",type:"type"};o(Y0,"isCrossReference");S(Y0,"isCrossReference");V2={$type:"Disjunction",left:"left",right:"right"};o(C$,"isDisjunction");S(C$,"isDisjunction");l5={$type:"EndOfFile",cardinality:"cardinality"};o(k$,"isEndOfFile");S(k$,"isEndOfFile");nh={$type:"Grammar",imports:"imports",interfaces:"interfaces",isDeclared:"isDeclared",name:"name",rules:"rules",types:"types"};o(vve,"isGrammar");S(vve,"isGrammar");c5={$type:"GrammarImport",path:"path"};o(xve,"isGrammarImport");S(xve,"isGrammarImport");y0={$type:"Group",cardinality:"cardinality",elements:"elements",guardCondition:"guardCondition",predicate:"predicate"};o(j0,"isGroup");S(j0,"isGroup");u5={$type:"InferredType",name:"name"};o(kT,"isInferredType");S(kT,"isInferredType");Hc={$type:"InfixRule",call:"call",dataType:"dataType",inferredType:"inferredType",name:"name",operators:"operators",parameters:"parameters",returnType:"returnType"};o(K1,"isInfixRule");S(K1,"isInfixRule");W2={$type:"InfixRuleOperatorList",associativity:"associativity",operators:"operators"};o(bve,"isInfixRuleOperatorList");S(bve,"isInfixRuleOperatorList");h5={$type:"InfixRuleOperators",precedences:"precedences"};o(Tve,"isInfixRuleOperators");S(Tve,"isInfixRuleOperators");I1={$type:"Interface",attributes:"attributes",name:"name",superTypes:"superTypes"};o(w$,"isInterface");S(w$,"isInterface");O1={$type:"Keyword",cardinality:"cardinality",predicate:"predicate",value:"value"};o(ch,"isKeyword");S(ch,"isKeyword");P1={$type:"NamedArgument",calledByName:"calledByName",parameter:"parameter",value:"value"};o(Cve,"isNamedArgument");S(Cve,"isNamedArgument");v0={$type:"NegatedToken",cardinality:"cardinality",lookahead:"lookahead",parenthesized:"parenthesized",terminal:"terminal"};o(S$,"isNegatedToken");S(S$,"isNegatedToken");d5={$type:"Negation",value:"value"};o(E$,"isNegation");S(E$,"isNegation");f5={$type:"NumberLiteral",value:"value"};o(kve,"isNumberLiteral");S(kve,"isNumberLiteral");B1={$type:"Parameter",name:"name"};o(wve,"isParameter");S(wve,"isParameter");p5={$type:"ParameterReference",parameter:"parameter"};o(A$,"isParameterReference");S(A$,"isParameterReference");zl={$type:"ParserRule",dataType:"dataType",definition:"definition",entry:"entry",fragment:"fragment",inferredType:"inferredType",name:"name",parameters:"parameters",returnType:"returnType"};o(cs,"isParserRule");S(cs,"isParserRule");q2={$type:"ReferenceType",isMulti:"isMulti",referenceType:"referenceType"};o(_$,"isReferenceType");S(_$,"isReferenceType");x0={$type:"RegexToken",cardinality:"cardinality",lookahead:"lookahead",parenthesized:"parenthesized",regex:"regex"};o(D$,"isRegexToken");S(D$,"isRegexToken");m5={$type:"ReturnType",name:"name"};o(R$,"isReturnType");S(R$,"isReturnType");b0={$type:"RuleCall",arguments:"arguments",cardinality:"cardinality",predicate:"predicate",rule:"rule"};o(uh,"isRuleCall");S(uh,"isRuleCall");F1={$type:"SimpleType",primitiveType:"primitiveType",stringType:"stringType",typeRef:"typeRef"};o(X5,"isSimpleType");S(X5,"isSimpleType");g5={$type:"StringLiteral",value:"value"};o(Sve,"isStringLiteral");S(Sve,"isStringLiteral");T0={$type:"TerminalAlternatives",cardinality:"cardinality",elements:"elements",lookahead:"lookahead",parenthesized:"parenthesized"};o(L$,"isTerminalAlternatives");S(L$,"isTerminalAlternatives");Gs={$type:"TerminalElement",cardinality:"cardinality",lookahead:"lookahead",parenthesized:"parenthesized"};o(Eve,"isTerminalElement");S(Eve,"isTerminalElement");C0={$type:"TerminalGroup",cardinality:"cardinality",elements:"elements",lookahead:"lookahead",parenthesized:"parenthesized"};o(M$,"isTerminalGroup");S(M$,"isTerminalGroup");ah={$type:"TerminalRule",definition:"definition",fragment:"fragment",hidden:"hidden",name:"name",type:"type"};o(rl,"isTerminalRule");S(rl,"isTerminalRule");k0={$type:"TerminalRuleCall",cardinality:"cardinality",lookahead:"lookahead",parenthesized:"parenthesized",rule:"rule"};o(K5,"isTerminalRuleCall");S(K5,"isTerminalRuleCall");U2={$type:"Type",name:"name",type:"type"};o(Z5,"isType");S(Z5,"isType");w0={$type:"TypeAttribute",defaultValue:"defaultValue",isOptional:"isOptional",name:"name",type:"type"};o(Ave,"isTypeAttribute");S(Ave,"isTypeAttribute");S0={$type:"TypeDefinition"};o(_ve,"isTypeDefinition");S(_ve,"isTypeDefinition");y5={$type:"UnionType",types:"types"};o(N$,"isUnionType");S(N$,"isUnionType");H2={$type:"UnorderedGroup",cardinality:"cardinality",elements:"elements"};o(Q5,"isUnorderedGroup");S(Q5,"isUnorderedGroup");E0={$type:"UntilToken",cardinality:"cardinality",lookahead:"lookahead",parenthesized:"parenthesized",terminal:"terminal"};o(I$,"isUntilToken");S(I$,"isUntilToken");A0={$type:"ValueLiteral"};o(Dve,"isValueLiteral");S(Dve,"isValueLiteral");$1={$type:"Wildcard",cardinality:"cardinality",lookahead:"lookahead",parenthesized:"parenthesized"};o(O$,"isWildcard");S(O$,"isWildcard");P$=class extends p${static{o(this,"LangiumGrammarAstReflection")}static{S(this,"LangiumGrammarAstReflection")}constructor(){super(...arguments),this.types={AbstractElement:{name:zs.$type,properties:{cardinality:{name:zs.cardinality}},superTypes:[]},AbstractParserRule:{name:$2.$type,properties:{},superTypes:[N1.$type,ho.$type]},AbstractRule:{name:N1.$type,properties:{},superTypes:[]},AbstractType:{name:ho.$type,properties:{},superTypes:[]},Action:{name:of.$type,properties:{cardinality:{name:of.cardinality},feature:{name:of.feature},inferredType:{name:of.inferredType},operator:{name:of.operator},type:{name:of.type,referenceType:ho.$type}},superTypes:[zs.$type]},Alternatives:{name:z2.$type,properties:{cardinality:{name:z2.cardinality},elements:{name:z2.elements,defaultValue:[]}},superTypes:[zs.$type]},ArrayLiteral:{name:a5.$type,properties:{elements:{name:a5.elements,defaultValue:[]}},superTypes:[A0.$type]},ArrayType:{name:s5.$type,properties:{elementType:{name:s5.elementType}},superTypes:[S0.$type]},Assignment:{name:lf.$type,properties:{cardinality:{name:lf.cardinality},feature:{name:lf.feature},operator:{name:lf.operator},predicate:{name:lf.predicate},terminal:{name:lf.terminal}},superTypes:[zs.$type]},BooleanLiteral:{name:o5.$type,properties:{true:{name:o5.true,defaultValue:!1}},superTypes:[uf.$type,A0.$type]},CharacterRange:{name:cf.$type,properties:{cardinality:{name:cf.cardinality},left:{name:cf.left},lookahead:{name:cf.lookahead},parenthesized:{name:cf.parenthesized,defaultValue:!1},right:{name:cf.right}},superTypes:[Gs.$type]},Condition:{name:uf.$type,properties:{},superTypes:[]},Conjunction:{name:G2.$type,properties:{left:{name:G2.left},right:{name:G2.right}},superTypes:[uf.$type]},CrossReference:{name:hf.$type,properties:{cardinality:{name:hf.cardinality},deprecatedSyntax:{name:hf.deprecatedSyntax,defaultValue:!1},isMulti:{name:hf.isMulti,defaultValue:!1},terminal:{name:hf.terminal},type:{name:hf.type,referenceType:ho.$type}},superTypes:[zs.$type]},Disjunction:{name:V2.$type,properties:{left:{name:V2.left},right:{name:V2.right}},superTypes:[uf.$type]},EndOfFile:{name:l5.$type,properties:{cardinality:{name:l5.cardinality}},superTypes:[zs.$type]},Grammar:{name:nh.$type,properties:{imports:{name:nh.imports,defaultValue:[]},interfaces:{name:nh.interfaces,defaultValue:[]},isDeclared:{name:nh.isDeclared,defaultValue:!1},name:{name:nh.name},rules:{name:nh.rules,defaultValue:[]},types:{name:nh.types,defaultValue:[]}},superTypes:[]},GrammarImport:{name:c5.$type,properties:{path:{name:c5.path}},superTypes:[]},Group:{name:y0.$type,properties:{cardinality:{name:y0.cardinality},elements:{name:y0.elements,defaultValue:[]},guardCondition:{name:y0.guardCondition},predicate:{name:y0.predicate}},superTypes:[zs.$type]},InferredType:{name:u5.$type,properties:{name:{name:u5.name}},superTypes:[ho.$type]},InfixRule:{name:Hc.$type,properties:{call:{name:Hc.call},dataType:{name:Hc.dataType},inferredType:{name:Hc.inferredType},name:{name:Hc.name},operators:{name:Hc.operators},parameters:{name:Hc.parameters,defaultValue:[]},returnType:{name:Hc.returnType,referenceType:ho.$type}},superTypes:[$2.$type]},InfixRuleOperatorList:{name:W2.$type,properties:{associativity:{name:W2.associativity},operators:{name:W2.operators,defaultValue:[]}},superTypes:[]},InfixRuleOperators:{name:h5.$type,properties:{precedences:{name:h5.precedences,defaultValue:[]}},superTypes:[]},Interface:{name:I1.$type,properties:{attributes:{name:I1.attributes,defaultValue:[]},name:{name:I1.name},superTypes:{name:I1.superTypes,defaultValue:[],referenceType:ho.$type}},superTypes:[ho.$type]},Keyword:{name:O1.$type,properties:{cardinality:{name:O1.cardinality},predicate:{name:O1.predicate},value:{name:O1.value}},superTypes:[zs.$type]},NamedArgument:{name:P1.$type,properties:{calledByName:{name:P1.calledByName,defaultValue:!1},parameter:{name:P1.parameter,referenceType:B1.$type},value:{name:P1.value}},superTypes:[]},NegatedToken:{name:v0.$type,properties:{cardinality:{name:v0.cardinality},lookahead:{name:v0.lookahead},parenthesized:{name:v0.parenthesized,defaultValue:!1},terminal:{name:v0.terminal}},superTypes:[Gs.$type]},Negation:{name:d5.$type,properties:{value:{name:d5.value}},superTypes:[uf.$type]},NumberLiteral:{name:f5.$type,properties:{value:{name:f5.value}},superTypes:[A0.$type]},Parameter:{name:B1.$type,properties:{name:{name:B1.name}},superTypes:[]},ParameterReference:{name:p5.$type,properties:{parameter:{name:p5.parameter,referenceType:B1.$type}},superTypes:[uf.$type]},ParserRule:{name:zl.$type,properties:{dataType:{name:zl.dataType},definition:{name:zl.definition},entry:{name:zl.entry,defaultValue:!1},fragment:{name:zl.fragment,defaultValue:!1},inferredType:{name:zl.inferredType},name:{name:zl.name},parameters:{name:zl.parameters,defaultValue:[]},returnType:{name:zl.returnType,referenceType:ho.$type}},superTypes:[$2.$type]},ReferenceType:{name:q2.$type,properties:{isMulti:{name:q2.isMulti,defaultValue:!1},referenceType:{name:q2.referenceType}},superTypes:[S0.$type]},RegexToken:{name:x0.$type,properties:{cardinality:{name:x0.cardinality},lookahead:{name:x0.lookahead},parenthesized:{name:x0.parenthesized,defaultValue:!1},regex:{name:x0.regex}},superTypes:[Gs.$type]},ReturnType:{name:m5.$type,properties:{name:{name:m5.name}},superTypes:[]},RuleCall:{name:b0.$type,properties:{arguments:{name:b0.arguments,defaultValue:[]},cardinality:{name:b0.cardinality},predicate:{name:b0.predicate},rule:{name:b0.rule,referenceType:N1.$type}},superTypes:[zs.$type]},SimpleType:{name:F1.$type,properties:{primitiveType:{name:F1.primitiveType},stringType:{name:F1.stringType},typeRef:{name:F1.typeRef,referenceType:ho.$type}},superTypes:[S0.$type]},StringLiteral:{name:g5.$type,properties:{value:{name:g5.value}},superTypes:[A0.$type]},TerminalAlternatives:{name:T0.$type,properties:{cardinality:{name:T0.cardinality},elements:{name:T0.elements,defaultValue:[]},lookahead:{name:T0.lookahead},parenthesized:{name:T0.parenthesized,defaultValue:!1}},superTypes:[Gs.$type]},TerminalElement:{name:Gs.$type,properties:{cardinality:{name:Gs.cardinality},lookahead:{name:Gs.lookahead},parenthesized:{name:Gs.parenthesized,defaultValue:!1}},superTypes:[zs.$type]},TerminalGroup:{name:C0.$type,properties:{cardinality:{name:C0.cardinality},elements:{name:C0.elements,defaultValue:[]},lookahead:{name:C0.lookahead},parenthesized:{name:C0.parenthesized,defaultValue:!1}},superTypes:[Gs.$type]},TerminalRule:{name:ah.$type,properties:{definition:{name:ah.definition},fragment:{name:ah.fragment,defaultValue:!1},hidden:{name:ah.hidden,defaultValue:!1},name:{name:ah.name},type:{name:ah.type}},superTypes:[N1.$type]},TerminalRuleCall:{name:k0.$type,properties:{cardinality:{name:k0.cardinality},lookahead:{name:k0.lookahead},parenthesized:{name:k0.parenthesized,defaultValue:!1},rule:{name:k0.rule,referenceType:ah.$type}},superTypes:[Gs.$type]},Type:{name:U2.$type,properties:{name:{name:U2.name},type:{name:U2.type}},superTypes:[ho.$type]},TypeAttribute:{name:w0.$type,properties:{defaultValue:{name:w0.defaultValue},isOptional:{name:w0.isOptional,defaultValue:!1},name:{name:w0.name},type:{name:w0.type}},superTypes:[]},TypeDefinition:{name:S0.$type,properties:{},superTypes:[]},UnionType:{name:y5.$type,properties:{types:{name:y5.types,defaultValue:[]}},superTypes:[S0.$type]},UnorderedGroup:{name:H2.$type,properties:{cardinality:{name:H2.cardinality},elements:{name:H2.elements,defaultValue:[]}},superTypes:[zs.$type]},UntilToken:{name:E0.$type,properties:{cardinality:{name:E0.cardinality},lookahead:{name:E0.lookahead},parenthesized:{name:E0.parenthesized,defaultValue:!1},terminal:{name:E0.terminal}},superTypes:[Gs.$type]},ValueLiteral:{name:A0.$type,properties:{},superTypes:[]},Wildcard:{name:$1.$type,properties:{cardinality:{name:$1.cardinality},lookahead:{name:$1.lookahead},parenthesized:{name:$1.parenthesized,defaultValue:!1}},superTypes:[Gs.$type]}}}},dr=new P$;o(Rve,"getDatatypeNode");S(Rve,"getDatatypeNode");o(Z1,"streamCst");S(Z1,"streamCst");o(Lve,"flattenCst");S(Lve,"flattenCst");o(B$,"isChildNode");S(B$,"isChildNode");o(nT,"tokenToRange");S(nT,"tokenToRange");o(Q1,"toDocumentSegment");S(Q1,"toDocumentSegment");(function(e){e[e.Before=0]="Before",e[e.After=1]="After",e[e.OverlapFront=2]="OverlapFront",e[e.OverlapBack=3]="OverlapBack",e[e.Inside=4]="Inside",e[e.Outside=5]="Outside"})(Xc||(Xc={}));o(F$,"compareRange");S(F$,"compareRange");o($$,"inRange");S($$,"inRange");z$=/^[\w\p{L}]$/u;o(Mve,"findDeclarationNodeAtOffset");S(Mve,"findDeclarationNodeAtOffset");o(G$,"findCommentNode");S(G$,"findCommentNode");o(v5,"isCommentNode");S(v5,"isCommentNode");o(J5,"findLeafNodeAtOffset");S(J5,"findLeafNodeAtOffset");o(V$,"findLeafNodeBeforeOffset");S(V$,"findLeafNodeBeforeOffset");o(W$,"binarySearch");S(W$,"binarySearch");o(q$,"getPreviousNode");S(q$,"getPreviousNode");o(Nve,"getNextNode");S(Nve,"getNextNode");o(Ive,"getStartlineNode");S(Ive,"getStartlineNode");o(Ove,"getInteriorNodes");S(Ove,"getInteriorNodes");o(Pve,"getCommonParent");S(Pve,"getCommonParent");o(pF,"getParentChain");S(pF,"getParentChain");U$={};xf(U$,{findAssignment:o(()=>nz,"findAssignment"),findNameAssignment:o(()=>oA,"findNameAssignment"),findNodeForKeyword:o(()=>iz,"findNodeForKeyword"),findNodeForProperty:o(()=>nA,"findNodeForProperty"),findNodesForKeyword:o(()=>Wve,"findNodesForKeyword"),findNodesForKeywordInternal:o(()=>sA,"findNodesForKeywordInternal"),findNodesForProperty:o(()=>rz,"findNodesForProperty"),getActionAtElement:o(()=>sz,"getActionAtElement"),getActionType:o(()=>lz,"getActionType"),getAllReachableRules:o(()=>iA,"getAllReachableRules"),getAllRulesUsedForCrossReferences:o(()=>Vve,"getAllRulesUsedForCrossReferences"),getCrossReferenceTerminal:o(()=>ez,"getCrossReferenceTerminal"),getEntryRule:o(()=>Z$,"getEntryRule"),getExplicitRuleType:o(()=>ST,"getExplicitRuleType"),getHiddenRules:o(()=>Q$,"getHiddenRules"),getRuleType:o(()=>cz,"getRuleType"),getRuleTypeName:o(()=>jve,"getRuleTypeName"),getTypeName:o(()=>$0,"getTypeName"),isArrayCardinality:o(()=>Uve,"isArrayCardinality"),isArrayOperator:o(()=>Hve,"isArrayOperator"),isCommentTerminal:o(()=>tz,"isCommentTerminal"),isDataType:o(()=>Yve,"isDataType"),isDataTypeRule:o(()=>wT,"isDataTypeRule"),isOptionalCardinality:o(()=>qve,"isOptionalCardinality"),terminalRegex:o(()=>ET,"terminalRegex")});eA=class extends Error{static{o(this,"ErrorWithLocation")}static{S(this,"ErrorWithLocation")}constructor(e,t){super(e?`${t} at ${e.range.start.line}:${e.range.start.character}`:t)}};o(bf,"assertUnreachable");S(bf,"assertUnreachable");o(H$,"assertCondition");S(H$,"assertCondition");Y$={};xf(Y$,{NEWLINE_REGEXP:o(()=>Fve,"NEWLINE_REGEXP"),escapeRegExp:o(()=>sy,"escapeRegExp"),getTerminalParts:o(()=>zve,"getTerminalParts"),isMultilineComment:o(()=>j$,"isMultilineComment"),isWhitespace:o(()=>rA,"isWhitespace"),partialMatches:o(()=>X$,"partialMatches"),partialRegExp:o(()=>K$,"partialRegExp"),whitespaceCharacters:o(()=>Gve,"whitespaceCharacters")});o(yr,"cc");S(yr,"cc");o(GE,"insertToSet");S(GE,"insertToSet");o(R1,"addFlag");S(R1,"addFlag");o(u0,"ASSERT_EXISTS");S(u0,"ASSERT_EXISTS");o(I2,"ASSERT_NEVER_REACH_HERE");S(I2,"ASSERT_NEVER_REACH_HERE");o(mF,"isCharacter");S(mF,"isCharacter");x5=[];for(let e=yr("0");e<=yr("9");e++)x5.push(e);b5=[yr("_")].concat(x5);for(let e=yr("a");e<=yr("z");e++)b5.push(e);for(let e=yr("A");e<=yr("Z");e++)b5.push(e);y1e=[yr(" "),yr("\f"),yr(`
-`),yr("\r"),yr("	"),yr("\v"),yr("	"),yr("\xA0"),yr("\u1680"),yr("\u2000"),yr("\u2001"),yr("\u2002"),yr("\u2003"),yr("\u2004"),yr("\u2005"),yr("\u2006"),yr("\u2007"),yr("\u2008"),yr("\u2009"),yr("\u200A"),yr("\u2028"),yr("\u2029"),yr("\u202F"),yr("\u205F"),yr("\u3000"),yr("\uFEFF")],Klt=/[0-9a-fA-F]/,mE=/[0-9]/,Zlt=/[1-9]/,Bve=class{static{o(this,"RegExpParser")}static{S(this,"RegExpParser")}constructor(){this.idx=0,this.input="",this.groupIdx=0}saveState(){return{idx:this.idx,input:this.input,groupIdx:this.groupIdx}}restoreState(e){this.idx=e.idx,this.input=e.input,this.groupIdx=e.groupIdx}pattern(e){this.idx=0,this.input=e,this.groupIdx=0,this.consumeChar("/");let t=this.disjunction();this.consumeChar("/");let r={type:"Flags",loc:{begin:this.idx,end:e.length},global:!1,ignoreCase:!1,multiLine:!1,unicode:!1,sticky:!1};for(;this.isRegExpFlag();)switch(this.popChar()){case"g":R1(r,"global");break;case"i":R1(r,"ignoreCase");break;case"m":R1(r,"multiLine");break;case"u":R1(r,"unicode");break;case"y":R1(r,"sticky");break}if(this.idx!==this.input.length)throw Error("Redundant input: "+this.input.substring(this.idx));return{type:"Pattern",flags:r,value:t,loc:this.loc(0)}}disjunction(){let e=[],t=this.idx;for(e.push(this.alternative());this.peekChar()==="|";)this.consumeChar("|"),e.push(this.alternative());return{type:"Disjunction",value:e,loc:this.loc(t)}}alternative(){let e=[],t=this.idx;for(;this.isTerm();)e.push(this.term());return{type:"Alternative",value:e,loc:this.loc(t)}}term(){return this.isAssertion()?this.assertion():this.atom()}assertion(){let e=this.idx;switch(this.popChar()){case"^":return{type:"StartAnchor",loc:this.loc(e)};case"$":return{type:"EndAnchor",loc:this.loc(e)};case"\\":switch(this.popChar()){case"b":return{type:"WordBoundary",loc:this.loc(e)};case"B":return{type:"NonWordBoundary",loc:this.loc(e)}}throw Error("Invalid Assertion Escape");case"(":this.consumeChar("?");let t;switch(this.popChar()){case"=":t="Lookahead";break;case"!":t="NegativeLookahead";break;case"<":{switch(this.popChar()){case"=":t="Lookbehind";break;case"!":t="NegativeLookbehind"}break}}u0(t);let r=this.disjunction();return this.consumeChar(")"),{type:t,value:r,loc:this.loc(e)}}return I2()}quantifier(e=!1){let t,r=this.idx;switch(this.popChar()){case"*":t={atLeast:0,atMost:1/0};break;case"+":t={atLeast:1,atMost:1/0};break;case"?":t={atLeast:0,atMost:1};break;case"{":let i=this.integerIncludingZero();switch(this.popChar()){case"}":t={atLeast:i,atMost:i};break;case",":let n;this.isDigit()?(n=this.integerIncludingZero(),t={atLeast:i,atMost:n}):t={atLeast:i,atMost:1/0},this.consumeChar("}");break}if(e===!0&&t===void 0)return;u0(t);break}if(!(e===!0&&t===void 0)&&u0(t))return this.peekChar(0)==="?"?(this.consumeChar("?"),t.greedy=!1):t.greedy=!0,t.type="Quantifier",t.loc=this.loc(r),t}atom(){let e,t=this.idx;switch(this.peekChar()){case".":e=this.dotAll();break;case"\\":e=this.atomEscape();break;case"[":e=this.characterClass();break;case"(":e=this.group();break}return e===void 0&&this.isPatternCharacter()&&(e=this.patternCharacter()),u0(e)?(e.loc=this.loc(t),this.isQuantifier()&&(e.quantifier=this.quantifier()),e):I2()}dotAll(){return this.consumeChar("."),{type:"Set",complement:!0,value:[yr(`
-`),yr("\r"),yr("\u2028"),yr("\u2029")]}}atomEscape(){switch(this.consumeChar("\\"),this.peekChar()){case"1":case"2":case"3":case"4":case"5":case"6":case"7":case"8":case"9":return this.decimalEscapeAtom();case"d":case"D":case"s":case"S":case"w":case"W":return this.characterClassEscape();case"f":case"n":case"r":case"t":case"v":return this.controlEscapeAtom();case"c":return this.controlLetterEscapeAtom();case"0":return this.nulCharacterAtom();case"x":return this.hexEscapeSequenceAtom();case"u":return this.regExpUnicodeEscapeSequenceAtom();default:return this.identityEscapeAtom()}}decimalEscapeAtom(){return{type:"GroupBackReference",value:this.positiveInteger()}}characterClassEscape(){let e,t=!1;switch(this.popChar()){case"d":e=x5;break;case"D":e=x5,t=!0;break;case"s":e=y1e;break;case"S":e=y1e,t=!0;break;case"w":e=b5;break;case"W":e=b5,t=!0;break}return u0(e)?{type:"Set",value:e,complement:t}:I2()}controlEscapeAtom(){let e;switch(this.popChar()){case"f":e=yr("\f");break;case"n":e=yr(`
-`);break;case"r":e=yr("\r");break;case"t":e=yr("	");break;case"v":e=yr("\v");break}return u0(e)?{type:"Character",value:e}:I2()}controlLetterEscapeAtom(){this.consumeChar("c");let e=this.popChar();if(/[a-zA-Z]/.test(e)===!1)throw Error("Invalid ");return{type:"Character",value:e.toUpperCase().charCodeAt(0)-64}}nulCharacterAtom(){return this.consumeChar("0"),{type:"Character",value:yr("\0")}}hexEscapeSequenceAtom(){return this.consumeChar("x"),this.parseHexDigits(2)}regExpUnicodeEscapeSequenceAtom(){return this.consumeChar("u"),this.parseHexDigits(4)}identityEscapeAtom(){let e=this.popChar();return{type:"Character",value:yr(e)}}classPatternCharacterAtom(){switch(this.peekChar()){case`
-`:case"\r":case"\u2028":case"\u2029":case"\\":case"]":throw Error("TBD");default:let e=this.popChar();return{type:"Character",value:yr(e)}}}characterClass(){let e=[],t=!1;for(this.consumeChar("["),this.peekChar(0)==="^"&&(this.consumeChar("^"),t=!0);this.isClassAtom();){let r=this.classAtom(),i=r.type==="Character";if(mF(r)&&this.isRangeDash()){this.consumeChar("-");let n=this.classAtom(),a=n.type==="Character";if(mF(n)){if(n.value<r.value)throw Error("Range out of order in character class");e.push({from:r.value,to:n.value})}else GE(r.value,e),e.push(yr("-")),GE(n.value,e)}else GE(r.value,e)}return this.consumeChar("]"),{type:"Set",complement:t,value:e}}classAtom(){switch(this.peekChar()){case"]":case`
-`:case"\r":case"\u2028":case"\u2029":throw Error("TBD");case"\\":return this.classEscape();default:return this.classPatternCharacterAtom()}}classEscape(){switch(this.consumeChar("\\"),this.peekChar()){case"b":return this.consumeChar("b"),{type:"Character",value:yr("\b")};case"d":case"D":case"s":case"S":case"w":case"W":return this.characterClassEscape();case"f":case"n":case"r":case"t":case"v":return this.controlEscapeAtom();case"c":return this.controlLetterEscapeAtom();case"0":return this.nulCharacterAtom();case"x":return this.hexEscapeSequenceAtom();case"u":return this.regExpUnicodeEscapeSequenceAtom();default:return this.identityEscapeAtom()}}group(){let e=!0;switch(this.consumeChar("("),this.peekChar(0)){case"?":this.consumeChar("?"),this.consumeChar(":"),e=!1;break;default:this.groupIdx++;break}let t=this.disjunction();this.consumeChar(")");let r={type:"Group",capturing:e,value:t};return e&&(r.idx=this.groupIdx),r}positiveInteger(){let e=this.popChar();if(Zlt.test(e)===!1)throw Error("Expecting a positive integer");for(;mE.test(this.peekChar(0));)e+=this.popChar();return parseInt(e,10)}integerIncludingZero(){let e=this.popChar();if(mE.test(e)===!1)throw Error("Expecting an integer");for(;mE.test(this.peekChar(0));)e+=this.popChar();return parseInt(e,10)}patternCharacter(){let e=this.popChar();switch(e){case`
-`:case"\r":case"\u2028":case"\u2029":case"^":case"$":case"\\":case".":case"*":case"+":case"?":case"(":case")":case"[":case"|":throw Error("TBD");default:return{type:"Character",value:yr(e)}}}isRegExpFlag(){switch(this.peekChar(0)){case"g":case"i":case"m":case"u":case"y":return!0;default:return!1}}isRangeDash(){return this.peekChar()==="-"&&this.isClassAtom(1)}isDigit(){return mE.test(this.peekChar(0))}isClassAtom(e=0){switch(this.peekChar(e)){case"]":case`
+`)),tt){let ot=Ee.error?` Request failed: ${Ee.error.message} (${Ee.error.code}).`:"";be.log(`Received response '${tt.method} - (${Ee.id})' in ${Date.now()-tt.timerStart}ms.${ot}`,at)}else be.log(`Received response ${Ee.id} without active response promise.`,at)}else ft("receive-response",Ee)}o(Le,"traceReceivedResponse"),E(Le,"traceReceivedResponse");function ft(Ee,tt){if(!be||ae===p.Off)return;let at={isLSPMessage:!0,type:Ee,message:tt,timestamp:Date.now()};be.log(at)}o(ft,"logLSPMessage"),E(ft,"logLSPMessage");function wt(){if(Me())throw new b(x.Closed,"Connection is closed.");if(ve())throw new b(x.Disposed,"Connection is disposed.")}o(wt,"throwIfClosedOrDisposed"),E(wt,"throwIfClosedOrDisposed");function zt(){if(we())throw new b(x.AlreadyListening,"Connection is already listening")}o(zt,"throwIfListening"),E(zt,"throwIfListening");function St(){if(!we())throw new Error("Call listen() first.")}o(St,"throwIfNotListening"),E(St,"throwIfNotListening");function At(Ee){return Ee===void 0?null:Ee}o(At,"undefinedToNull"),E(At,"undefinedToNull");function bt(Ee){if(Ee!==null)return Ee}o(bt,"nullToUndefined"),E(bt,"nullToUndefined");function me(Ee){return Ee!=null&&!Array.isArray(Ee)&&typeof Ee=="object"}o(me,"isNamedParam"),E(me,"isNamedParam");function lt(Ee,tt){switch(Ee){case n.ParameterStructures.auto:return me(tt)?bt(tt):[At(tt)];case n.ParameterStructures.byName:if(!me(tt))throw new Error("Received parameters by name but param is not an object literal.");return bt(tt);case n.ParameterStructures.byPosition:return[At(tt)];default:throw new Error(`Unknown parameter structure ${Ee.toString()}`)}}o(lt,"computeSingleParam"),E(lt,"computeSingleParam");function gt(Ee,tt){let at,ot=Ee.numberOfParams;switch(ot){case 0:at=void 0;break;case 1:at=lt(Ee.parameterStructures,tt[0]);break;default:at=[];for(let Wt=0;Wt<tt.length&&Wt<ot;Wt++)at.push(At(tt[Wt]));if(tt.length<ot)for(let Wt=tt.length;Wt<ot;Wt++)at.push(null);break}return at}o(gt,"computeMessageParams"),E(gt,"computeMessageParams");let Ze={sendNotification:E((Ee,...tt)=>{wt();let at,ot;if(r.string(Ee)){at=Ee;let Bt=tt[0],qt=0,vr=n.ParameterStructures.auto;n.ParameterStructures.is(Bt)&&(qt=1,vr=Bt);let Tt=tt.length,De=Tt-qt;switch(De){case 0:ot=void 0;break;case 1:ot=lt(vr,tt[qt]);break;default:if(vr===n.ParameterStructures.byName)throw new Error(`Received ${De} parameters for 'by Name' notification parameter structure.`);ot=tt.slice(qt,Tt).map(it=>At(it));break}}else{let Bt=tt;at=Ee.method,ot=gt(Ee,Bt)}let Wt={jsonrpc:G,method:at,params:ot};return Fe(Wt),M.write(Wt).catch(Bt=>{throw B.error("Sending notification failed."),Bt})},"sendNotification"),onNotification:E((Ee,tt)=>{wt();let at;return r.func(Ee)?H=Ee:tt&&(r.string(Ee)?(at=Ee,j.set(Ee,{type:void 0,handler:tt})):(at=Ee.method,j.set(Ee.method,{type:Ee,handler:tt}))),{dispose:E(()=>{at!==void 0?j.delete(at):H=void 0},"dispose")}},"onNotification"),onProgress:E((Ee,tt,at)=>{if(Q.has(tt))throw new Error(`Progress handler for token ${tt} already registered`);return Q.set(tt,at),{dispose:E(()=>{Q.delete(tt)},"dispose")}},"onProgress"),sendProgress:E((Ee,tt,at)=>Ze.sendNotification(h.type,{token:tt,value:at}),"sendProgress"),onUnhandledProgress:ye.event,sendRequest:E((Ee,...tt)=>{wt(),St();let at,ot,Wt;if(r.string(Ee)){at=Ee;let Tt=tt[0],De=tt[tt.length-1],it=0,We=n.ParameterStructures.auto;n.ParameterStructures.is(Tt)&&(it=1,We=Tt);let rt=tt.length;s.CancellationToken.is(De)&&(rt=rt-1,Wt=De);let yt=rt-it;switch(yt){case 0:ot=void 0;break;case 1:ot=lt(We,tt[it]);break;default:if(We===n.ParameterStructures.byName)throw new Error(`Received ${yt} parameters for 'by Name' request parameter structure.`);ot=tt.slice(it,rt).map(Yt=>At(Yt));break}}else{let Tt=tt;at=Ee.method,ot=gt(Ee,Tt);let De=Ee.numberOfParams;Wt=s.CancellationToken.is(Tt[De])?Tt[De]:void 0}let Bt=O++,qt;Wt&&(qt=Wt.onCancellationRequested(()=>{let Tt=ce.sender.sendCancellation(Ze,Bt);return Tt===void 0?(B.log(`Received no promise from cancellation strategy when cancelling id ${Bt}`),Promise.resolve()):Tt.catch(()=>{B.log(`Sending cancellation messages for id ${Bt} failed`)})}));let vr={jsonrpc:G,id:Bt,method:at,params:ot};return Xe(vr),typeof ce.sender.enableCancellation=="function"&&ce.sender.enableCancellation(vr),new Promise(async(Tt,De)=>{let it=E(yt=>{Tt(yt),ce.sender.cleanup(Bt),qt?.dispose()},"resolveWithCleanup"),We=E(yt=>{De(yt),ce.sender.cleanup(Bt),qt?.dispose()},"rejectWithCleanup"),rt={method:at,timerStart:Date.now(),resolve:it,reject:We};try{await M.write(vr),te.set(Bt,rt)}catch(yt){throw B.error("Sending request failed."),rt.reject(new n.ResponseError(n.ErrorCodes.MessageWriteError,yt.message?yt.message:"Unknown reason")),yt}})},"sendRequest"),onRequest:E((Ee,tt)=>{wt();let at=null;return f.is(Ee)?(at=void 0,z=Ee):r.string(Ee)?(at=null,tt!==void 0&&(at=Ee,W.set(Ee,{handler:tt,type:void 0}))):tt!==void 0&&(at=Ee.method,W.set(Ee.method,{type:Ee,handler:tt})),{dispose:E(()=>{at!==null&&(at!==void 0?W.delete(at):z=void 0)},"dispose")}},"onRequest"),hasPendingResponse:E(()=>te.size>0,"hasPendingResponse"),trace:E(async(Ee,tt,at)=>{let ot=!1,Wt=g.Text;at!==void 0&&(r.boolean(at)?ot=at:(ot=at.sendNotification||!1,Wt=at.traceFormat||g.Text)),ae=Ee,Re=Wt,ae===p.Off?be=void 0:be=tt,ot&&!Me()&&!ve()&&await Ze.sendNotification(y.type,{value:p.toString(Ee)})},"trace"),onError:Ge.event,onClose:Oe.event,onUnhandledNotification:ue.event,onDispose:ke.event,end:E(()=>{M.end()},"end"),dispose:E(()=>{if(ve())return;Pe=I.Disposed,ke.fire(void 0);let Ee=new n.ResponseError(n.ErrorCodes.PendingResponseRejected,"Pending response rejected since connection got disposed");for(let tt of te.values())tt.reject(Ee);te=new Map,ie=new Map,le=new Set,oe=new i.LinkedMap,r.func(M.dispose)&&M.dispose(),r.func(A.dispose)&&A.dispose()},"dispose"),listen:E(()=>{wt(),zt(),Pe=I.Listening,A.listen(qe)},"listen"),inspect:E(()=>{(0,t.default)().console.log("inspect")},"inspect")};return Ze.onNotification(v.type,Ee=>{if(ae===p.Off||!be)return;let tt=ae===p.Verbose||ae===p.Compact;be.log(Ee.message,tt?Ee.verbose:void 0)}),Ze.onNotification(h.type,Ee=>{let tt=Q.get(Ee.token);tt?tt(Ee.value):ye.fire(Ee)}),Ze}o(_,"createMessageConnection"),E(_,"createMessageConnection"),e.createMessageConnection=_}}),TG=zr({"../../node_modules/.pnpm/vscode-jsonrpc@8.2.0/node_modules/vscode-jsonrpc/lib/common/api.js"(e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.ProgressType=e.ProgressToken=e.createMessageConnection=e.NullLogger=e.ConnectionOptions=e.ConnectionStrategy=e.AbstractMessageBuffer=e.WriteableStreamMessageWriter=e.AbstractMessageWriter=e.MessageWriter=e.ReadableStreamMessageReader=e.AbstractMessageReader=e.MessageReader=e.SharedArrayReceiverStrategy=e.SharedArraySenderStrategy=e.CancellationToken=e.CancellationTokenSource=e.Emitter=e.Event=e.Disposable=e.LRUCache=e.Touch=e.LinkedMap=e.ParameterStructures=e.NotificationType9=e.NotificationType8=e.NotificationType7=e.NotificationType6=e.NotificationType5=e.NotificationType4=e.NotificationType3=e.NotificationType2=e.NotificationType1=e.NotificationType0=e.NotificationType=e.ErrorCodes=e.ResponseError=e.RequestType9=e.RequestType8=e.RequestType7=e.RequestType6=e.RequestType5=e.RequestType4=e.RequestType3=e.RequestType2=e.RequestType1=e.RequestType0=e.RequestType=e.Message=e.RAL=void 0,e.MessageStrategy=e.CancellationStrategy=e.CancellationSenderStrategy=e.CancellationReceiverStrategy=e.ConnectionError=e.ConnectionErrors=e.LogTraceNotification=e.SetTraceNotification=e.TraceFormat=e.TraceValues=e.Trace=void 0;var t=_we();Object.defineProperty(e,"Message",{enumerable:!0,get:E(function(){return t.Message},"get")}),Object.defineProperty(e,"RequestType",{enumerable:!0,get:E(function(){return t.RequestType},"get")}),Object.defineProperty(e,"RequestType0",{enumerable:!0,get:E(function(){return t.RequestType0},"get")}),Object.defineProperty(e,"RequestType1",{enumerable:!0,get:E(function(){return t.RequestType1},"get")}),Object.defineProperty(e,"RequestType2",{enumerable:!0,get:E(function(){return t.RequestType2},"get")}),Object.defineProperty(e,"RequestType3",{enumerable:!0,get:E(function(){return t.RequestType3},"get")}),Object.defineProperty(e,"RequestType4",{enumerable:!0,get:E(function(){return t.RequestType4},"get")}),Object.defineProperty(e,"RequestType5",{enumerable:!0,get:E(function(){return t.RequestType5},"get")}),Object.defineProperty(e,"RequestType6",{enumerable:!0,get:E(function(){return t.RequestType6},"get")}),Object.defineProperty(e,"RequestType7",{enumerable:!0,get:E(function(){return t.RequestType7},"get")}),Object.defineProperty(e,"RequestType8",{enumerable:!0,get:E(function(){return t.RequestType8},"get")}),Object.defineProperty(e,"RequestType9",{enumerable:!0,get:E(function(){return t.RequestType9},"get")}),Object.defineProperty(e,"ResponseError",{enumerable:!0,get:E(function(){return t.ResponseError},"get")}),Object.defineProperty(e,"ErrorCodes",{enumerable:!0,get:E(function(){return t.ErrorCodes},"get")}),Object.defineProperty(e,"NotificationType",{enumerable:!0,get:E(function(){return t.NotificationType},"get")}),Object.defineProperty(e,"NotificationType0",{enumerable:!0,get:E(function(){return t.NotificationType0},"get")}),Object.defineProperty(e,"NotificationType1",{enumerable:!0,get:E(function(){return t.NotificationType1},"get")}),Object.defineProperty(e,"NotificationType2",{enumerable:!0,get:E(function(){return t.NotificationType2},"get")}),Object.defineProperty(e,"NotificationType3",{enumerable:!0,get:E(function(){return t.NotificationType3},"get")}),Object.defineProperty(e,"NotificationType4",{enumerable:!0,get:E(function(){return t.NotificationType4},"get")}),Object.defineProperty(e,"NotificationType5",{enumerable:!0,get:E(function(){return t.NotificationType5},"get")}),Object.defineProperty(e,"NotificationType6",{enumerable:!0,get:E(function(){return t.NotificationType6},"get")}),Object.defineProperty(e,"NotificationType7",{enumerable:!0,get:E(function(){return t.NotificationType7},"get")}),Object.defineProperty(e,"NotificationType8",{enumerable:!0,get:E(function(){return t.NotificationType8},"get")}),Object.defineProperty(e,"NotificationType9",{enumerable:!0,get:E(function(){return t.NotificationType9},"get")}),Object.defineProperty(e,"ParameterStructures",{enumerable:!0,get:E(function(){return t.ParameterStructures},"get")});var r=Dwe();Object.defineProperty(e,"LinkedMap",{enumerable:!0,get:E(function(){return r.LinkedMap},"get")}),Object.defineProperty(e,"LRUCache",{enumerable:!0,get:E(function(){return r.LRUCache},"get")}),Object.defineProperty(e,"Touch",{enumerable:!0,get:E(function(){return r.Touch},"get")});var n=E0t();Object.defineProperty(e,"Disposable",{enumerable:!0,get:E(function(){return n.Disposable},"get")});var i=Iv();Object.defineProperty(e,"Event",{enumerable:!0,get:E(function(){return i.Event},"get")}),Object.defineProperty(e,"Emitter",{enumerable:!0,get:E(function(){return i.Emitter},"get")});var a=yR();Object.defineProperty(e,"CancellationTokenSource",{enumerable:!0,get:E(function(){return a.CancellationTokenSource},"get")}),Object.defineProperty(e,"CancellationToken",{enumerable:!0,get:E(function(){return a.CancellationToken},"get")});var s=A0t();Object.defineProperty(e,"SharedArraySenderStrategy",{enumerable:!0,get:E(function(){return s.SharedArraySenderStrategy},"get")}),Object.defineProperty(e,"SharedArrayReceiverStrategy",{enumerable:!0,get:E(function(){return s.SharedArrayReceiverStrategy},"get")});var l=R0t();Object.defineProperty(e,"MessageReader",{enumerable:!0,get:E(function(){return l.MessageReader},"get")}),Object.defineProperty(e,"AbstractMessageReader",{enumerable:!0,get:E(function(){return l.AbstractMessageReader},"get")}),Object.defineProperty(e,"ReadableStreamMessageReader",{enumerable:!0,get:E(function(){return l.ReadableStreamMessageReader},"get")});var u=_0t();Object.defineProperty(e,"MessageWriter",{enumerable:!0,get:E(function(){return u.MessageWriter},"get")}),Object.defineProperty(e,"AbstractMessageWriter",{enumerable:!0,get:E(function(){return u.AbstractMessageWriter},"get")}),Object.defineProperty(e,"WriteableStreamMessageWriter",{enumerable:!0,get:E(function(){return u.WriteableStreamMessageWriter},"get")});var h=L0t();Object.defineProperty(e,"AbstractMessageBuffer",{enumerable:!0,get:E(function(){return h.AbstractMessageBuffer},"get")});var d=D0t();Object.defineProperty(e,"ConnectionStrategy",{enumerable:!0,get:E(function(){return d.ConnectionStrategy},"get")}),Object.defineProperty(e,"ConnectionOptions",{enumerable:!0,get:E(function(){return d.ConnectionOptions},"get")}),Object.defineProperty(e,"NullLogger",{enumerable:!0,get:E(function(){return d.NullLogger},"get")}),Object.defineProperty(e,"createMessageConnection",{enumerable:!0,get:E(function(){return d.createMessageConnection},"get")}),Object.defineProperty(e,"ProgressToken",{enumerable:!0,get:E(function(){return d.ProgressToken},"get")}),Object.defineProperty(e,"ProgressType",{enumerable:!0,get:E(function(){return d.ProgressType},"get")}),Object.defineProperty(e,"Trace",{enumerable:!0,get:E(function(){return d.Trace},"get")}),Object.defineProperty(e,"TraceValues",{enumerable:!0,get:E(function(){return d.TraceValues},"get")}),Object.defineProperty(e,"TraceFormat",{enumerable:!0,get:E(function(){return d.TraceFormat},"get")}),Object.defineProperty(e,"SetTraceNotification",{enumerable:!0,get:E(function(){return d.SetTraceNotification},"get")}),Object.defineProperty(e,"LogTraceNotification",{enumerable:!0,get:E(function(){return d.LogTraceNotification},"get")}),Object.defineProperty(e,"ConnectionErrors",{enumerable:!0,get:E(function(){return d.ConnectionErrors},"get")}),Object.defineProperty(e,"ConnectionError",{enumerable:!0,get:E(function(){return d.ConnectionError},"get")}),Object.defineProperty(e,"CancellationReceiverStrategy",{enumerable:!0,get:E(function(){return d.CancellationReceiverStrategy},"get")}),Object.defineProperty(e,"CancellationSenderStrategy",{enumerable:!0,get:E(function(){return d.CancellationSenderStrategy},"get")}),Object.defineProperty(e,"CancellationStrategy",{enumerable:!0,get:E(function(){return d.CancellationStrategy},"get")}),Object.defineProperty(e,"MessageStrategy",{enumerable:!0,get:E(function(){return d.MessageStrategy},"get")});var f=Qg();e.RAL=f.default}}),I0t=zr({"../../node_modules/.pnpm/vscode-jsonrpc@8.2.0/node_modules/vscode-jsonrpc/lib/browser/ril.js"(e){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var t=TG(),r=class Nwe extends t.AbstractMessageBuffer{static{o(this,"_MessageBuffer")}static{E(this,"MessageBuffer")}constructor(h="utf-8"){super(h),this.asciiDecoder=new TextDecoder("ascii")}emptyBuffer(){return Nwe.emptyBuffer}fromString(h,d){return new TextEncoder().encode(h)}toString(h,d){return d==="ascii"?this.asciiDecoder.decode(h):new TextDecoder(d).decode(h)}asNative(h,d){return d===void 0?h:h.slice(0,d)}allocNative(h){return new Uint8Array(h)}};r.emptyBuffer=new Uint8Array(0);var n=class{static{o(this,"ReadableStreamWrapper")}static{E(this,"ReadableStreamWrapper")}constructor(u){this.socket=u,this._onData=new t.Emitter,this._messageListener=h=>{h.data.arrayBuffer().then(f=>{this._onData.fire(new Uint8Array(f))},()=>{(0,t.RAL)().console.error("Converting blob to array buffer failed.")})},this.socket.addEventListener("message",this._messageListener)}onClose(u){return this.socket.addEventListener("close",u),t.Disposable.create(()=>this.socket.removeEventListener("close",u))}onError(u){return this.socket.addEventListener("error",u),t.Disposable.create(()=>this.socket.removeEventListener("error",u))}onEnd(u){return this.socket.addEventListener("end",u),t.Disposable.create(()=>this.socket.removeEventListener("end",u))}onData(u){return this._onData.event(u)}},i=class{static{o(this,"WritableStreamWrapper")}static{E(this,"WritableStreamWrapper")}constructor(u){this.socket=u}onClose(u){return this.socket.addEventListener("close",u),t.Disposable.create(()=>this.socket.removeEventListener("close",u))}onError(u){return this.socket.addEventListener("error",u),t.Disposable.create(()=>this.socket.removeEventListener("error",u))}onEnd(u){return this.socket.addEventListener("end",u),t.Disposable.create(()=>this.socket.removeEventListener("end",u))}write(u,h){if(typeof u=="string"){if(h!==void 0&&h!=="utf-8")throw new Error(`In a Browser environments only utf-8 text encoding is supported. But got encoding: ${h}`);this.socket.send(u)}else this.socket.send(u);return Promise.resolve()}end(){this.socket.close()}},a=new TextEncoder,s=Object.freeze({messageBuffer:Object.freeze({create:E(u=>new r(u),"create")}),applicationJson:Object.freeze({encoder:Object.freeze({name:"application/json",encode:E((u,h)=>{if(h.charset!=="utf-8")throw new Error(`In a Browser environments only utf-8 text encoding is supported. But got encoding: ${h.charset}`);return Promise.resolve(a.encode(JSON.stringify(u,void 0,0)))},"encode")}),decoder:Object.freeze({name:"application/json",decode:E((u,h)=>{if(!(u instanceof Uint8Array))throw new Error("In a Browser environments only Uint8Arrays are supported.");return Promise.resolve(JSON.parse(new TextDecoder(h.charset).decode(u)))},"decode")})}),stream:Object.freeze({asReadableStream:E(u=>new n(u),"asReadableStream"),asWritableStream:E(u=>new i(u),"asWritableStream")}),console,timer:Object.freeze({setTimeout(u,h,...d){let f=setTimeout(u,h,...d);return{dispose:E(()=>clearTimeout(f),"dispose")}},setImmediate(u,...h){let d=setTimeout(u,0,...h);return{dispose:E(()=>clearTimeout(d),"dispose")}},setInterval(u,h,...d){let f=setInterval(u,h,...d);return{dispose:E(()=>clearInterval(f),"dispose")}}})});function l(){return s}o(l,"RIL"),E(l,"RIL"),(function(u){function h(){t.RAL.install(s)}o(h,"install"),E(h,"install"),u.install=h})(l||(l={})),e.default=l}}),Mv=zr({"../../node_modules/.pnpm/vscode-jsonrpc@8.2.0/node_modules/vscode-jsonrpc/lib/browser/main.js"(e){"use strict";var t=e&&e.__createBinding||(Object.create?(function(u,h,d,f){f===void 0&&(f=d);var p=Object.getOwnPropertyDescriptor(h,d);(!p||("get"in p?!h.__esModule:p.writable||p.configurable))&&(p={enumerable:!0,get:E(function(){return h[d]},"get")}),Object.defineProperty(u,f,p)}):(function(u,h,d,f){f===void 0&&(f=d),u[f]=h[d]})),r=e&&e.__exportStar||function(u,h){for(var d in u)d!=="default"&&!Object.prototype.hasOwnProperty.call(h,d)&&t(h,u,d)};Object.defineProperty(e,"__esModule",{value:!0}),e.createMessageConnection=e.BrowserMessageWriter=e.BrowserMessageReader=void 0;var n=I0t();n.default.install();var i=TG();r(TG(),e);var a=class extends i.AbstractMessageReader{static{o(this,"BrowserMessageReader")}static{E(this,"BrowserMessageReader")}constructor(u){super(),this._onData=new i.Emitter,this._messageListener=h=>{this._onData.fire(h.data)},u.addEventListener("error",h=>this.fireError(h)),u.onmessage=this._messageListener}listen(u){return this._onData.event(u)}};e.BrowserMessageReader=a;var s=class extends i.AbstractMessageWriter{static{o(this,"BrowserMessageWriter")}static{E(this,"BrowserMessageWriter")}constructor(u){super(),this.port=u,this.errorCount=0,u.addEventListener("error",h=>this.fireError(h))}write(u){try{return this.port.postMessage(u),Promise.resolve()}catch(h){return this.handleError(h,u),Promise.reject(h)}}handleError(u,h){this.errorCount++,this.fireError(u,h,this.errorCount)}end(){}};e.BrowserMessageWriter=s;function l(u,h,d,f){return d===void 0&&(d=i.NullLogger),i.ConnectionStrategy.is(f)&&(f={connectionStrategy:f}),(0,i.createMessageConnection)(u,h,d,f)}o(l,"createMessageConnection"),E(l,"createMessageConnection"),e.createMessageConnection=l}}),OTe=zr({"../../node_modules/.pnpm/vscode-jsonrpc@8.2.0/node_modules/vscode-jsonrpc/browser.js"(e,t){"use strict";t.exports=Mv()}}),ki=zr({"../../node_modules/.pnpm/vscode-languageserver-protocol@3.17.5/node_modules/vscode-languageserver-protocol/lib/common/messages.js"(e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.ProtocolNotificationType=e.ProtocolNotificationType0=e.ProtocolRequestType=e.ProtocolRequestType0=e.RegistrationType=e.MessageDirection=void 0;var t=Mv(),r;(function(u){u.clientToServer="clientToServer",u.serverToClient="serverToClient",u.both="both"})(r||(e.MessageDirection=r={}));var n=class{static{o(this,"RegistrationType")}static{E(this,"RegistrationType")}constructor(u){this.method=u}};e.RegistrationType=n;var i=class extends t.RequestType0{static{o(this,"ProtocolRequestType0")}static{E(this,"ProtocolRequestType0")}constructor(u){super(u)}};e.ProtocolRequestType0=i;var a=class extends t.RequestType{static{o(this,"ProtocolRequestType")}static{E(this,"ProtocolRequestType")}constructor(u){super(u,t.ParameterStructures.byName)}};e.ProtocolRequestType=a;var s=class extends t.NotificationType0{static{o(this,"ProtocolNotificationType0")}static{E(this,"ProtocolNotificationType0")}constructor(u){super(u)}};e.ProtocolNotificationType0=s;var l=class extends t.NotificationType{static{o(this,"ProtocolNotificationType")}static{E(this,"ProtocolNotificationType")}constructor(u){super(u,t.ParameterStructures.byName)}};e.ProtocolNotificationType=l}}),rW=zr({"../../node_modules/.pnpm/vscode-languageserver-protocol@3.17.5/node_modules/vscode-languageserver-protocol/lib/common/utils/is.js"(e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.objectLiteral=e.typedArray=e.stringArray=e.array=e.func=e.error=e.number=e.string=e.boolean=void 0;function t(d){return d===!0||d===!1}o(t,"boolean"),E(t,"boolean"),e.boolean=t;function r(d){return typeof d=="string"||d instanceof String}o(r,"string"),E(r,"string"),e.string=r;function n(d){return typeof d=="number"||d instanceof Number}o(n,"number"),E(n,"number"),e.number=n;function i(d){return d instanceof Error}o(i,"error"),E(i,"error"),e.error=i;function a(d){return typeof d=="function"}o(a,"func"),E(a,"func"),e.func=a;function s(d){return Array.isArray(d)}o(s,"array"),E(s,"array"),e.array=s;function l(d){return s(d)&&d.every(f=>r(f))}o(l,"stringArray"),E(l,"stringArray"),e.stringArray=l;function u(d,f){return Array.isArray(d)&&d.every(f)}o(u,"typedArray"),E(u,"typedArray"),e.typedArray=u;function h(d){return d!==null&&typeof d=="object"}o(h,"objectLiteral"),E(h,"objectLiteral"),e.objectLiteral=h}}),M0t=zr({"../../node_modules/.pnpm/vscode-languageserver-protocol@3.17.5/node_modules/vscode-languageserver-protocol/lib/common/protocol.implementation.js"(e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.ImplementationRequest=void 0;var t=ki(),r;(function(n){n.method="textDocument/implementation",n.messageDirection=t.MessageDirection.clientToServer,n.type=new t.ProtocolRequestType(n.method)})(r||(e.ImplementationRequest=r={}))}}),N0t=zr({"../../node_modules/.pnpm/vscode-languageserver-protocol@3.17.5/node_modules/vscode-languageserver-protocol/lib/common/protocol.typeDefinition.js"(e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.TypeDefinitionRequest=void 0;var t=ki(),r;(function(n){n.method="textDocument/typeDefinition",n.messageDirection=t.MessageDirection.clientToServer,n.type=new t.ProtocolRequestType(n.method)})(r||(e.TypeDefinitionRequest=r={}))}}),P0t=zr({"../../node_modules/.pnpm/vscode-languageserver-protocol@3.17.5/node_modules/vscode-languageserver-protocol/lib/common/protocol.workspaceFolder.js"(e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.DidChangeWorkspaceFoldersNotification=e.WorkspaceFoldersRequest=void 0;var t=ki(),r;(function(i){i.method="workspace/workspaceFolders",i.messageDirection=t.MessageDirection.serverToClient,i.type=new t.ProtocolRequestType0(i.method)})(r||(e.WorkspaceFoldersRequest=r={}));var n;(function(i){i.method="workspace/didChangeWorkspaceFolders",i.messageDirection=t.MessageDirection.clientToServer,i.type=new t.ProtocolNotificationType(i.method)})(n||(e.DidChangeWorkspaceFoldersNotification=n={}))}}),O0t=zr({"../../node_modules/.pnpm/vscode-languageserver-protocol@3.17.5/node_modules/vscode-languageserver-protocol/lib/common/protocol.configuration.js"(e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.ConfigurationRequest=void 0;var t=ki(),r;(function(n){n.method="workspace/configuration",n.messageDirection=t.MessageDirection.serverToClient,n.type=new t.ProtocolRequestType(n.method)})(r||(e.ConfigurationRequest=r={}))}}),B0t=zr({"../../node_modules/.pnpm/vscode-languageserver-protocol@3.17.5/node_modules/vscode-languageserver-protocol/lib/common/protocol.colorProvider.js"(e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.ColorPresentationRequest=e.DocumentColorRequest=void 0;var t=ki(),r;(function(i){i.method="textDocument/documentColor",i.messageDirection=t.MessageDirection.clientToServer,i.type=new t.ProtocolRequestType(i.method)})(r||(e.DocumentColorRequest=r={}));var n;(function(i){i.method="textDocument/colorPresentation",i.messageDirection=t.MessageDirection.clientToServer,i.type=new t.ProtocolRequestType(i.method)})(n||(e.ColorPresentationRequest=n={}))}}),$0t=zr({"../../node_modules/.pnpm/vscode-languageserver-protocol@3.17.5/node_modules/vscode-languageserver-protocol/lib/common/protocol.foldingRange.js"(e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.FoldingRangeRefreshRequest=e.FoldingRangeRequest=void 0;var t=ki(),r;(function(i){i.method="textDocument/foldingRange",i.messageDirection=t.MessageDirection.clientToServer,i.type=new t.ProtocolRequestType(i.method)})(r||(e.FoldingRangeRequest=r={}));var n;(function(i){i.method="workspace/foldingRange/refresh",i.messageDirection=t.MessageDirection.serverToClient,i.type=new t.ProtocolRequestType0(i.method)})(n||(e.FoldingRangeRefreshRequest=n={}))}}),F0t=zr({"../../node_modules/.pnpm/vscode-languageserver-protocol@3.17.5/node_modules/vscode-languageserver-protocol/lib/common/protocol.declaration.js"(e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.DeclarationRequest=void 0;var t=ki(),r;(function(n){n.method="textDocument/declaration",n.messageDirection=t.MessageDirection.clientToServer,n.type=new t.ProtocolRequestType(n.method)})(r||(e.DeclarationRequest=r={}))}}),z0t=zr({"../../node_modules/.pnpm/vscode-languageserver-protocol@3.17.5/node_modules/vscode-languageserver-protocol/lib/common/protocol.selectionRange.js"(e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.SelectionRangeRequest=void 0;var t=ki(),r;(function(n){n.method="textDocument/selectionRange",n.messageDirection=t.MessageDirection.clientToServer,n.type=new t.ProtocolRequestType(n.method)})(r||(e.SelectionRangeRequest=r={}))}}),G0t=zr({"../../node_modules/.pnpm/vscode-languageserver-protocol@3.17.5/node_modules/vscode-languageserver-protocol/lib/common/protocol.progress.js"(e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.WorkDoneProgressCancelNotification=e.WorkDoneProgressCreateRequest=e.WorkDoneProgress=void 0;var t=Mv(),r=ki(),n;(function(s){s.type=new t.ProgressType;function l(u){return u===s.type}o(l,"is"),E(l,"is"),s.is=l})(n||(e.WorkDoneProgress=n={}));var i;(function(s){s.method="window/workDoneProgress/create",s.messageDirection=r.MessageDirection.serverToClient,s.type=new r.ProtocolRequestType(s.method)})(i||(e.WorkDoneProgressCreateRequest=i={}));var a;(function(s){s.method="window/workDoneProgress/cancel",s.messageDirection=r.MessageDirection.clientToServer,s.type=new r.ProtocolNotificationType(s.method)})(a||(e.WorkDoneProgressCancelNotification=a={}))}}),V0t=zr({"../../node_modules/.pnpm/vscode-languageserver-protocol@3.17.5/node_modules/vscode-languageserver-protocol/lib/common/protocol.callHierarchy.js"(e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.CallHierarchyOutgoingCallsRequest=e.CallHierarchyIncomingCallsRequest=e.CallHierarchyPrepareRequest=void 0;var t=ki(),r;(function(a){a.method="textDocument/prepareCallHierarchy",a.messageDirection=t.MessageDirection.clientToServer,a.type=new t.ProtocolRequestType(a.method)})(r||(e.CallHierarchyPrepareRequest=r={}));var n;(function(a){a.method="callHierarchy/incomingCalls",a.messageDirection=t.MessageDirection.clientToServer,a.type=new t.ProtocolRequestType(a.method)})(n||(e.CallHierarchyIncomingCallsRequest=n={}));var i;(function(a){a.method="callHierarchy/outgoingCalls",a.messageDirection=t.MessageDirection.clientToServer,a.type=new t.ProtocolRequestType(a.method)})(i||(e.CallHierarchyOutgoingCallsRequest=i={}))}}),W0t=zr({"../../node_modules/.pnpm/vscode-languageserver-protocol@3.17.5/node_modules/vscode-languageserver-protocol/lib/common/protocol.semanticTokens.js"(e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.SemanticTokensRefreshRequest=e.SemanticTokensRangeRequest=e.SemanticTokensDeltaRequest=e.SemanticTokensRequest=e.SemanticTokensRegistrationType=e.TokenFormat=void 0;var t=ki(),r;(function(u){u.Relative="relative"})(r||(e.TokenFormat=r={}));var n;(function(u){u.method="textDocument/semanticTokens",u.type=new t.RegistrationType(u.method)})(n||(e.SemanticTokensRegistrationType=n={}));var i;(function(u){u.method="textDocument/semanticTokens/full",u.messageDirection=t.MessageDirection.clientToServer,u.type=new t.ProtocolRequestType(u.method),u.registrationMethod=n.method})(i||(e.SemanticTokensRequest=i={}));var a;(function(u){u.method="textDocument/semanticTokens/full/delta",u.messageDirection=t.MessageDirection.clientToServer,u.type=new t.ProtocolRequestType(u.method),u.registrationMethod=n.method})(a||(e.SemanticTokensDeltaRequest=a={}));var s;(function(u){u.method="textDocument/semanticTokens/range",u.messageDirection=t.MessageDirection.clientToServer,u.type=new t.ProtocolRequestType(u.method),u.registrationMethod=n.method})(s||(e.SemanticTokensRangeRequest=s={}));var l;(function(u){u.method="workspace/semanticTokens/refresh",u.messageDirection=t.MessageDirection.serverToClient,u.type=new t.ProtocolRequestType0(u.method)})(l||(e.SemanticTokensRefreshRequest=l={}))}}),q0t=zr({"../../node_modules/.pnpm/vscode-languageserver-protocol@3.17.5/node_modules/vscode-languageserver-protocol/lib/common/protocol.showDocument.js"(e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.ShowDocumentRequest=void 0;var t=ki(),r;(function(n){n.method="window/showDocument",n.messageDirection=t.MessageDirection.serverToClient,n.type=new t.ProtocolRequestType(n.method)})(r||(e.ShowDocumentRequest=r={}))}}),H0t=zr({"../../node_modules/.pnpm/vscode-languageserver-protocol@3.17.5/node_modules/vscode-languageserver-protocol/lib/common/protocol.linkedEditingRange.js"(e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.LinkedEditingRangeRequest=void 0;var t=ki(),r;(function(n){n.method="textDocument/linkedEditingRange",n.messageDirection=t.MessageDirection.clientToServer,n.type=new t.ProtocolRequestType(n.method)})(r||(e.LinkedEditingRangeRequest=r={}))}}),U0t=zr({"../../node_modules/.pnpm/vscode-languageserver-protocol@3.17.5/node_modules/vscode-languageserver-protocol/lib/common/protocol.fileOperations.js"(e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.WillDeleteFilesRequest=e.DidDeleteFilesNotification=e.DidRenameFilesNotification=e.WillRenameFilesRequest=e.DidCreateFilesNotification=e.WillCreateFilesRequest=e.FileOperationPatternKind=void 0;var t=ki(),r;(function(h){h.file="file",h.folder="folder"})(r||(e.FileOperationPatternKind=r={}));var n;(function(h){h.method="workspace/willCreateFiles",h.messageDirection=t.MessageDirection.clientToServer,h.type=new t.ProtocolRequestType(h.method)})(n||(e.WillCreateFilesRequest=n={}));var i;(function(h){h.method="workspace/didCreateFiles",h.messageDirection=t.MessageDirection.clientToServer,h.type=new t.ProtocolNotificationType(h.method)})(i||(e.DidCreateFilesNotification=i={}));var a;(function(h){h.method="workspace/willRenameFiles",h.messageDirection=t.MessageDirection.clientToServer,h.type=new t.ProtocolRequestType(h.method)})(a||(e.WillRenameFilesRequest=a={}));var s;(function(h){h.method="workspace/didRenameFiles",h.messageDirection=t.MessageDirection.clientToServer,h.type=new t.ProtocolNotificationType(h.method)})(s||(e.DidRenameFilesNotification=s={}));var l;(function(h){h.method="workspace/didDeleteFiles",h.messageDirection=t.MessageDirection.clientToServer,h.type=new t.ProtocolNotificationType(h.method)})(l||(e.DidDeleteFilesNotification=l={}));var u;(function(h){h.method="workspace/willDeleteFiles",h.messageDirection=t.MessageDirection.clientToServer,h.type=new t.ProtocolRequestType(h.method)})(u||(e.WillDeleteFilesRequest=u={}))}}),Y0t=zr({"../../node_modules/.pnpm/vscode-languageserver-protocol@3.17.5/node_modules/vscode-languageserver-protocol/lib/common/protocol.moniker.js"(e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.MonikerRequest=e.MonikerKind=e.UniquenessLevel=void 0;var t=ki(),r;(function(a){a.document="document",a.project="project",a.group="group",a.scheme="scheme",a.global="global"})(r||(e.UniquenessLevel=r={}));var n;(function(a){a.$import="import",a.$export="export",a.local="local"})(n||(e.MonikerKind=n={}));var i;(function(a){a.method="textDocument/moniker",a.messageDirection=t.MessageDirection.clientToServer,a.type=new t.ProtocolRequestType(a.method)})(i||(e.MonikerRequest=i={}))}}),j0t=zr({"../../node_modules/.pnpm/vscode-languageserver-protocol@3.17.5/node_modules/vscode-languageserver-protocol/lib/common/protocol.typeHierarchy.js"(e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.TypeHierarchySubtypesRequest=e.TypeHierarchySupertypesRequest=e.TypeHierarchyPrepareRequest=void 0;var t=ki(),r;(function(a){a.method="textDocument/prepareTypeHierarchy",a.messageDirection=t.MessageDirection.clientToServer,a.type=new t.ProtocolRequestType(a.method)})(r||(e.TypeHierarchyPrepareRequest=r={}));var n;(function(a){a.method="typeHierarchy/supertypes",a.messageDirection=t.MessageDirection.clientToServer,a.type=new t.ProtocolRequestType(a.method)})(n||(e.TypeHierarchySupertypesRequest=n={}));var i;(function(a){a.method="typeHierarchy/subtypes",a.messageDirection=t.MessageDirection.clientToServer,a.type=new t.ProtocolRequestType(a.method)})(i||(e.TypeHierarchySubtypesRequest=i={}))}}),X0t=zr({"../../node_modules/.pnpm/vscode-languageserver-protocol@3.17.5/node_modules/vscode-languageserver-protocol/lib/common/protocol.inlineValue.js"(e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.InlineValueRefreshRequest=e.InlineValueRequest=void 0;var t=ki(),r;(function(i){i.method="textDocument/inlineValue",i.messageDirection=t.MessageDirection.clientToServer,i.type=new t.ProtocolRequestType(i.method)})(r||(e.InlineValueRequest=r={}));var n;(function(i){i.method="workspace/inlineValue/refresh",i.messageDirection=t.MessageDirection.serverToClient,i.type=new t.ProtocolRequestType0(i.method)})(n||(e.InlineValueRefreshRequest=n={}))}}),K0t=zr({"../../node_modules/.pnpm/vscode-languageserver-protocol@3.17.5/node_modules/vscode-languageserver-protocol/lib/common/protocol.inlayHint.js"(e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.InlayHintRefreshRequest=e.InlayHintResolveRequest=e.InlayHintRequest=void 0;var t=ki(),r;(function(a){a.method="textDocument/inlayHint",a.messageDirection=t.MessageDirection.clientToServer,a.type=new t.ProtocolRequestType(a.method)})(r||(e.InlayHintRequest=r={}));var n;(function(a){a.method="inlayHint/resolve",a.messageDirection=t.MessageDirection.clientToServer,a.type=new t.ProtocolRequestType(a.method)})(n||(e.InlayHintResolveRequest=n={}));var i;(function(a){a.method="workspace/inlayHint/refresh",a.messageDirection=t.MessageDirection.serverToClient,a.type=new t.ProtocolRequestType0(a.method)})(i||(e.InlayHintRefreshRequest=i={}))}}),Z0t=zr({"../../node_modules/.pnpm/vscode-languageserver-protocol@3.17.5/node_modules/vscode-languageserver-protocol/lib/common/protocol.diagnostic.js"(e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.DiagnosticRefreshRequest=e.WorkspaceDiagnosticRequest=e.DocumentDiagnosticRequest=e.DocumentDiagnosticReportKind=e.DiagnosticServerCancellationData=void 0;var t=Mv(),r=rW(),n=ki(),i;(function(h){function d(f){let p=f;return p&&r.boolean(p.retriggerRequest)}o(d,"is"),E(d,"is"),h.is=d})(i||(e.DiagnosticServerCancellationData=i={}));var a;(function(h){h.Full="full",h.Unchanged="unchanged"})(a||(e.DocumentDiagnosticReportKind=a={}));var s;(function(h){h.method="textDocument/diagnostic",h.messageDirection=n.MessageDirection.clientToServer,h.type=new n.ProtocolRequestType(h.method),h.partialResult=new t.ProgressType})(s||(e.DocumentDiagnosticRequest=s={}));var l;(function(h){h.method="workspace/diagnostic",h.messageDirection=n.MessageDirection.clientToServer,h.type=new n.ProtocolRequestType(h.method),h.partialResult=new t.ProgressType})(l||(e.WorkspaceDiagnosticRequest=l={}));var u;(function(h){h.method="workspace/diagnostic/refresh",h.messageDirection=n.MessageDirection.serverToClient,h.type=new n.ProtocolRequestType0(h.method)})(u||(e.DiagnosticRefreshRequest=u={}))}}),Q0t=zr({"../../node_modules/.pnpm/vscode-languageserver-protocol@3.17.5/node_modules/vscode-languageserver-protocol/lib/common/protocol.notebook.js"(e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.DidCloseNotebookDocumentNotification=e.DidSaveNotebookDocumentNotification=e.DidChangeNotebookDocumentNotification=e.NotebookCellArrayChange=e.DidOpenNotebookDocumentNotification=e.NotebookDocumentSyncRegistrationType=e.NotebookDocument=e.NotebookCell=e.ExecutionSummary=e.NotebookCellKind=void 0;var t=(hw(),tW(gR)),r=rW(),n=ki(),i;(function(g){g.Markup=1,g.Code=2;function y(v){return v===1||v===2}o(y,"is"),E(y,"is"),g.is=y})(i||(e.NotebookCellKind=i={}));var a;(function(g){function y(b,T){let k={executionOrder:b};return(T===!0||T===!1)&&(k.success=T),k}o(y,"create"),E(y,"create"),g.create=y;function v(b){let T=b;return r.objectLiteral(T)&&t.uinteger.is(T.executionOrder)&&(T.success===void 0||r.boolean(T.success))}o(v,"is"),E(v,"is"),g.is=v;function x(b,T){return b===T?!0:b==null||T===null||T===void 0?!1:b.executionOrder===T.executionOrder&&b.success===T.success}o(x,"equals"),E(x,"equals"),g.equals=x})(a||(e.ExecutionSummary=a={}));var s;(function(g){function y(T,k){return{kind:T,document:k}}o(y,"create"),E(y,"create"),g.create=y;function v(T){let k=T;return r.objectLiteral(k)&&i.is(k.kind)&&t.DocumentUri.is(k.document)&&(k.metadata===void 0||r.objectLiteral(k.metadata))}o(v,"is"),E(v,"is"),g.is=v;function x(T,k){let C=new Set;return T.document!==k.document&&C.add("document"),T.kind!==k.kind&&C.add("kind"),T.executionSummary!==k.executionSummary&&C.add("executionSummary"),(T.metadata!==void 0||k.metadata!==void 0)&&!b(T.metadata,k.metadata)&&C.add("metadata"),(T.executionSummary!==void 0||k.executionSummary!==void 0)&&!a.equals(T.executionSummary,k.executionSummary)&&C.add("executionSummary"),C}o(x,"diff"),E(x,"diff"),g.diff=x;function b(T,k){if(T===k)return!0;if(T==null||k===null||k===void 0||typeof T!=typeof k||typeof T!="object")return!1;let C=Array.isArray(T),w=Array.isArray(k);if(C!==w)return!1;if(C&&w){if(T.length!==k.length)return!1;for(let S=0;S<T.length;S++)if(!b(T[S],k[S]))return!1}if(r.objectLiteral(T)&&r.objectLiteral(k)){let S=Object.keys(T),R=Object.keys(k);if(S.length!==R.length||(S.sort(),R.sort(),!b(S,R)))return!1;for(let L=0;L<S.length;L++){let N=S[L];if(!b(T[N],k[N]))return!1}}return!0}o(b,"equalsMetadata"),E(b,"equalsMetadata")})(s||(e.NotebookCell=s={}));var l;(function(g){function y(x,b,T,k){return{uri:x,notebookType:b,version:T,cells:k}}o(y,"create"),E(y,"create"),g.create=y;function v(x){let b=x;return r.objectLiteral(b)&&r.string(b.uri)&&t.integer.is(b.version)&&r.typedArray(b.cells,s.is)}o(v,"is"),E(v,"is"),g.is=v})(l||(e.NotebookDocument=l={}));var u;(function(g){g.method="notebookDocument/sync",g.messageDirection=n.MessageDirection.clientToServer,g.type=new n.RegistrationType(g.method)})(u||(e.NotebookDocumentSyncRegistrationType=u={}));var h;(function(g){g.method="notebookDocument/didOpen",g.messageDirection=n.MessageDirection.clientToServer,g.type=new n.ProtocolNotificationType(g.method),g.registrationMethod=u.method})(h||(e.DidOpenNotebookDocumentNotification=h={}));var d;(function(g){function y(x){let b=x;return r.objectLiteral(b)&&t.uinteger.is(b.start)&&t.uinteger.is(b.deleteCount)&&(b.cells===void 0||r.typedArray(b.cells,s.is))}o(y,"is"),E(y,"is"),g.is=y;function v(x,b,T){let k={start:x,deleteCount:b};return T!==void 0&&(k.cells=T),k}o(v,"create"),E(v,"create"),g.create=v})(d||(e.NotebookCellArrayChange=d={}));var f;(function(g){g.method="notebookDocument/didChange",g.messageDirection=n.MessageDirection.clientToServer,g.type=new n.ProtocolNotificationType(g.method),g.registrationMethod=u.method})(f||(e.DidChangeNotebookDocumentNotification=f={}));var p;(function(g){g.method="notebookDocument/didSave",g.messageDirection=n.MessageDirection.clientToServer,g.type=new n.ProtocolNotificationType(g.method),g.registrationMethod=u.method})(p||(e.DidSaveNotebookDocumentNotification=p={}));var m;(function(g){g.method="notebookDocument/didClose",g.messageDirection=n.MessageDirection.clientToServer,g.type=new n.ProtocolNotificationType(g.method),g.registrationMethod=u.method})(m||(e.DidCloseNotebookDocumentNotification=m={}))}}),J0t=zr({"../../node_modules/.pnpm/vscode-languageserver-protocol@3.17.5/node_modules/vscode-languageserver-protocol/lib/common/protocol.inlineCompletion.js"(e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.InlineCompletionRequest=void 0;var t=ki(),r;(function(n){n.method="textDocument/inlineCompletion",n.messageDirection=t.MessageDirection.clientToServer,n.type=new t.ProtocolRequestType(n.method)})(r||(e.InlineCompletionRequest=r={}))}}),eyt=zr({"../../node_modules/.pnpm/vscode-languageserver-protocol@3.17.5/node_modules/vscode-languageserver-protocol/lib/common/protocol.js"(e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.WorkspaceSymbolRequest=e.CodeActionResolveRequest=e.CodeActionRequest=e.DocumentSymbolRequest=e.DocumentHighlightRequest=e.ReferencesRequest=e.DefinitionRequest=e.SignatureHelpRequest=e.SignatureHelpTriggerKind=e.HoverRequest=e.CompletionResolveRequest=e.CompletionRequest=e.CompletionTriggerKind=e.PublishDiagnosticsNotification=e.WatchKind=e.RelativePattern=e.FileChangeType=e.DidChangeWatchedFilesNotification=e.WillSaveTextDocumentWaitUntilRequest=e.WillSaveTextDocumentNotification=e.TextDocumentSaveReason=e.DidSaveTextDocumentNotification=e.DidCloseTextDocumentNotification=e.DidChangeTextDocumentNotification=e.TextDocumentContentChangeEvent=e.DidOpenTextDocumentNotification=e.TextDocumentSyncKind=e.TelemetryEventNotification=e.LogMessageNotification=e.ShowMessageRequest=e.ShowMessageNotification=e.MessageType=e.DidChangeConfigurationNotification=e.ExitNotification=e.ShutdownRequest=e.InitializedNotification=e.InitializeErrorCodes=e.InitializeRequest=e.WorkDoneProgressOptions=e.TextDocumentRegistrationOptions=e.StaticRegistrationOptions=e.PositionEncodingKind=e.FailureHandlingKind=e.ResourceOperationKind=e.UnregistrationRequest=e.RegistrationRequest=e.DocumentSelector=e.NotebookCellTextDocumentFilter=e.NotebookDocumentFilter=e.TextDocumentFilter=void 0,e.MonikerRequest=e.MonikerKind=e.UniquenessLevel=e.WillDeleteFilesRequest=e.DidDeleteFilesNotification=e.WillRenameFilesRequest=e.DidRenameFilesNotification=e.WillCreateFilesRequest=e.DidCreateFilesNotification=e.FileOperationPatternKind=e.LinkedEditingRangeRequest=e.ShowDocumentRequest=e.SemanticTokensRegistrationType=e.SemanticTokensRefreshRequest=e.SemanticTokensRangeRequest=e.SemanticTokensDeltaRequest=e.SemanticTokensRequest=e.TokenFormat=e.CallHierarchyPrepareRequest=e.CallHierarchyOutgoingCallsRequest=e.CallHierarchyIncomingCallsRequest=e.WorkDoneProgressCancelNotification=e.WorkDoneProgressCreateRequest=e.WorkDoneProgress=e.SelectionRangeRequest=e.DeclarationRequest=e.FoldingRangeRefreshRequest=e.FoldingRangeRequest=e.ColorPresentationRequest=e.DocumentColorRequest=e.ConfigurationRequest=e.DidChangeWorkspaceFoldersNotification=e.WorkspaceFoldersRequest=e.TypeDefinitionRequest=e.ImplementationRequest=e.ApplyWorkspaceEditRequest=e.ExecuteCommandRequest=e.PrepareRenameRequest=e.RenameRequest=e.PrepareSupportDefaultBehavior=e.DocumentOnTypeFormattingRequest=e.DocumentRangesFormattingRequest=e.DocumentRangeFormattingRequest=e.DocumentFormattingRequest=e.DocumentLinkResolveRequest=e.DocumentLinkRequest=e.CodeLensRefreshRequest=e.CodeLensResolveRequest=e.CodeLensRequest=e.WorkspaceSymbolResolveRequest=void 0,e.InlineCompletionRequest=e.DidCloseNotebookDocumentNotification=e.DidSaveNotebookDocumentNotification=e.DidChangeNotebookDocumentNotification=e.NotebookCellArrayChange=e.DidOpenNotebookDocumentNotification=e.NotebookDocumentSyncRegistrationType=e.NotebookDocument=e.NotebookCell=e.ExecutionSummary=e.NotebookCellKind=e.DiagnosticRefreshRequest=e.WorkspaceDiagnosticRequest=e.DocumentDiagnosticRequest=e.DocumentDiagnosticReportKind=e.DiagnosticServerCancellationData=e.InlayHintRefreshRequest=e.InlayHintResolveRequest=e.InlayHintRequest=e.InlineValueRefreshRequest=e.InlineValueRequest=e.TypeHierarchySupertypesRequest=e.TypeHierarchySubtypesRequest=e.TypeHierarchyPrepareRequest=void 0;var t=ki(),r=(hw(),tW(gR)),n=rW(),i=M0t();Object.defineProperty(e,"ImplementationRequest",{enumerable:!0,get:E(function(){return i.ImplementationRequest},"get")});var a=N0t();Object.defineProperty(e,"TypeDefinitionRequest",{enumerable:!0,get:E(function(){return a.TypeDefinitionRequest},"get")});var s=P0t();Object.defineProperty(e,"WorkspaceFoldersRequest",{enumerable:!0,get:E(function(){return s.WorkspaceFoldersRequest},"get")}),Object.defineProperty(e,"DidChangeWorkspaceFoldersNotification",{enumerable:!0,get:E(function(){return s.DidChangeWorkspaceFoldersNotification},"get")});var l=O0t();Object.defineProperty(e,"ConfigurationRequest",{enumerable:!0,get:E(function(){return l.ConfigurationRequest},"get")});var u=B0t();Object.defineProperty(e,"DocumentColorRequest",{enumerable:!0,get:E(function(){return u.DocumentColorRequest},"get")}),Object.defineProperty(e,"ColorPresentationRequest",{enumerable:!0,get:E(function(){return u.ColorPresentationRequest},"get")});var h=$0t();Object.defineProperty(e,"FoldingRangeRequest",{enumerable:!0,get:E(function(){return h.FoldingRangeRequest},"get")}),Object.defineProperty(e,"FoldingRangeRefreshRequest",{enumerable:!0,get:E(function(){return h.FoldingRangeRefreshRequest},"get")});var d=F0t();Object.defineProperty(e,"DeclarationRequest",{enumerable:!0,get:E(function(){return d.DeclarationRequest},"get")});var f=z0t();Object.defineProperty(e,"SelectionRangeRequest",{enumerable:!0,get:E(function(){return f.SelectionRangeRequest},"get")});var p=G0t();Object.defineProperty(e,"WorkDoneProgress",{enumerable:!0,get:E(function(){return p.WorkDoneProgress},"get")}),Object.defineProperty(e,"WorkDoneProgressCreateRequest",{enumerable:!0,get:E(function(){return p.WorkDoneProgressCreateRequest},"get")}),Object.defineProperty(e,"WorkDoneProgressCancelNotification",{enumerable:!0,get:E(function(){return p.WorkDoneProgressCancelNotification},"get")});var m=V0t();Object.defineProperty(e,"CallHierarchyIncomingCallsRequest",{enumerable:!0,get:E(function(){return m.CallHierarchyIncomingCallsRequest},"get")}),Object.defineProperty(e,"CallHierarchyOutgoingCallsRequest",{enumerable:!0,get:E(function(){return m.CallHierarchyOutgoingCallsRequest},"get")}),Object.defineProperty(e,"CallHierarchyPrepareRequest",{enumerable:!0,get:E(function(){return m.CallHierarchyPrepareRequest},"get")});var g=W0t();Object.defineProperty(e,"TokenFormat",{enumerable:!0,get:E(function(){return g.TokenFormat},"get")}),Object.defineProperty(e,"SemanticTokensRequest",{enumerable:!0,get:E(function(){return g.SemanticTokensRequest},"get")}),Object.defineProperty(e,"SemanticTokensDeltaRequest",{enumerable:!0,get:E(function(){return g.SemanticTokensDeltaRequest},"get")}),Object.defineProperty(e,"SemanticTokensRangeRequest",{enumerable:!0,get:E(function(){return g.SemanticTokensRangeRequest},"get")}),Object.defineProperty(e,"SemanticTokensRefreshRequest",{enumerable:!0,get:E(function(){return g.SemanticTokensRefreshRequest},"get")}),Object.defineProperty(e,"SemanticTokensRegistrationType",{enumerable:!0,get:E(function(){return g.SemanticTokensRegistrationType},"get")});var y=q0t();Object.defineProperty(e,"ShowDocumentRequest",{enumerable:!0,get:E(function(){return y.ShowDocumentRequest},"get")});var v=H0t();Object.defineProperty(e,"LinkedEditingRangeRequest",{enumerable:!0,get:E(function(){return v.LinkedEditingRangeRequest},"get")});var x=U0t();Object.defineProperty(e,"FileOperationPatternKind",{enumerable:!0,get:E(function(){return x.FileOperationPatternKind},"get")}),Object.defineProperty(e,"DidCreateFilesNotification",{enumerable:!0,get:E(function(){return x.DidCreateFilesNotification},"get")}),Object.defineProperty(e,"WillCreateFilesRequest",{enumerable:!0,get:E(function(){return x.WillCreateFilesRequest},"get")}),Object.defineProperty(e,"DidRenameFilesNotification",{enumerable:!0,get:E(function(){return x.DidRenameFilesNotification},"get")}),Object.defineProperty(e,"WillRenameFilesRequest",{enumerable:!0,get:E(function(){return x.WillRenameFilesRequest},"get")}),Object.defineProperty(e,"DidDeleteFilesNotification",{enumerable:!0,get:E(function(){return x.DidDeleteFilesNotification},"get")}),Object.defineProperty(e,"WillDeleteFilesRequest",{enumerable:!0,get:E(function(){return x.WillDeleteFilesRequest},"get")});var b=Y0t();Object.defineProperty(e,"UniquenessLevel",{enumerable:!0,get:E(function(){return b.UniquenessLevel},"get")}),Object.defineProperty(e,"MonikerKind",{enumerable:!0,get:E(function(){return b.MonikerKind},"get")}),Object.defineProperty(e,"MonikerRequest",{enumerable:!0,get:E(function(){return b.MonikerRequest},"get")});var T=j0t();Object.defineProperty(e,"TypeHierarchyPrepareRequest",{enumerable:!0,get:E(function(){return T.TypeHierarchyPrepareRequest},"get")}),Object.defineProperty(e,"TypeHierarchySubtypesRequest",{enumerable:!0,get:E(function(){return T.TypeHierarchySubtypesRequest},"get")}),Object.defineProperty(e,"TypeHierarchySupertypesRequest",{enumerable:!0,get:E(function(){return T.TypeHierarchySupertypesRequest},"get")});var k=X0t();Object.defineProperty(e,"InlineValueRequest",{enumerable:!0,get:E(function(){return k.InlineValueRequest},"get")}),Object.defineProperty(e,"InlineValueRefreshRequest",{enumerable:!0,get:E(function(){return k.InlineValueRefreshRequest},"get")});var C=K0t();Object.defineProperty(e,"InlayHintRequest",{enumerable:!0,get:E(function(){return C.InlayHintRequest},"get")}),Object.defineProperty(e,"InlayHintResolveRequest",{enumerable:!0,get:E(function(){return C.InlayHintResolveRequest},"get")}),Object.defineProperty(e,"InlayHintRefreshRequest",{enumerable:!0,get:E(function(){return C.InlayHintRefreshRequest},"get")});var w=Z0t();Object.defineProperty(e,"DiagnosticServerCancellationData",{enumerable:!0,get:E(function(){return w.DiagnosticServerCancellationData},"get")}),Object.defineProperty(e,"DocumentDiagnosticReportKind",{enumerable:!0,get:E(function(){return w.DocumentDiagnosticReportKind},"get")}),Object.defineProperty(e,"DocumentDiagnosticRequest",{enumerable:!0,get:E(function(){return w.DocumentDiagnosticRequest},"get")}),Object.defineProperty(e,"WorkspaceDiagnosticRequest",{enumerable:!0,get:E(function(){return w.WorkspaceDiagnosticRequest},"get")}),Object.defineProperty(e,"DiagnosticRefreshRequest",{enumerable:!0,get:E(function(){return w.DiagnosticRefreshRequest},"get")});var S=Q0t();Object.defineProperty(e,"NotebookCellKind",{enumerable:!0,get:E(function(){return S.NotebookCellKind},"get")}),Object.defineProperty(e,"ExecutionSummary",{enumerable:!0,get:E(function(){return S.ExecutionSummary},"get")}),Object.defineProperty(e,"NotebookCell",{enumerable:!0,get:E(function(){return S.NotebookCell},"get")}),Object.defineProperty(e,"NotebookDocument",{enumerable:!0,get:E(function(){return S.NotebookDocument},"get")}),Object.defineProperty(e,"NotebookDocumentSyncRegistrationType",{enumerable:!0,get:E(function(){return S.NotebookDocumentSyncRegistrationType},"get")}),Object.defineProperty(e,"DidOpenNotebookDocumentNotification",{enumerable:!0,get:E(function(){return S.DidOpenNotebookDocumentNotification},"get")}),Object.defineProperty(e,"NotebookCellArrayChange",{enumerable:!0,get:E(function(){return S.NotebookCellArrayChange},"get")}),Object.defineProperty(e,"DidChangeNotebookDocumentNotification",{enumerable:!0,get:E(function(){return S.DidChangeNotebookDocumentNotification},"get")}),Object.defineProperty(e,"DidSaveNotebookDocumentNotification",{enumerable:!0,get:E(function(){return S.DidSaveNotebookDocumentNotification},"get")}),Object.defineProperty(e,"DidCloseNotebookDocumentNotification",{enumerable:!0,get:E(function(){return S.DidCloseNotebookDocumentNotification},"get")});var R=J0t();Object.defineProperty(e,"InlineCompletionRequest",{enumerable:!0,get:E(function(){return R.InlineCompletionRequest},"get")});var L;(function(me){function lt(gt){let Ze=gt;return n.string(Ze)||n.string(Ze.language)||n.string(Ze.scheme)||n.string(Ze.pattern)}o(lt,"is"),E(lt,"is"),me.is=lt})(L||(e.TextDocumentFilter=L={}));var N;(function(me){function lt(gt){let Ze=gt;return n.objectLiteral(Ze)&&(n.string(Ze.notebookType)||n.string(Ze.scheme)||n.string(Ze.pattern))}o(lt,"is"),E(lt,"is"),me.is=lt})(N||(e.NotebookDocumentFilter=N={}));var I;(function(me){function lt(gt){let Ze=gt;return n.objectLiteral(Ze)&&(n.string(Ze.notebook)||N.is(Ze.notebook))&&(Ze.language===void 0||n.string(Ze.language))}o(lt,"is"),E(lt,"is"),me.is=lt})(I||(e.NotebookCellTextDocumentFilter=I={}));var _;(function(me){function lt(gt){if(!Array.isArray(gt))return!1;for(let Ze of gt)if(!n.string(Ze)&&!L.is(Ze)&&!I.is(Ze))return!1;return!0}o(lt,"is"),E(lt,"is"),me.is=lt})(_||(e.DocumentSelector=_={}));var A;(function(me){me.method="client/registerCapability",me.messageDirection=t.MessageDirection.serverToClient,me.type=new t.ProtocolRequestType(me.method)})(A||(e.RegistrationRequest=A={}));var M;(function(me){me.method="client/unregisterCapability",me.messageDirection=t.MessageDirection.serverToClient,me.type=new t.ProtocolRequestType(me.method)})(M||(e.UnregistrationRequest=M={}));var D;(function(me){me.Create="create",me.Rename="rename",me.Delete="delete"})(D||(e.ResourceOperationKind=D={}));var P;(function(me){me.Abort="abort",me.Transactional="transactional",me.TextOnlyTransactional="textOnlyTransactional",me.Undo="undo"})(P||(e.FailureHandlingKind=P={}));var B;(function(me){me.UTF8="utf-8",me.UTF16="utf-16",me.UTF32="utf-32"})(B||(e.PositionEncodingKind=B={}));var O;(function(me){function lt(gt){let Ze=gt;return Ze&&n.string(Ze.id)&&Ze.id.length>0}o(lt,"hasId"),E(lt,"hasId"),me.hasId=lt})(O||(e.StaticRegistrationOptions=O={}));var $;(function(me){function lt(gt){let Ze=gt;return Ze&&(Ze.documentSelector===null||_.is(Ze.documentSelector))}o(lt,"is"),E(lt,"is"),me.is=lt})($||(e.TextDocumentRegistrationOptions=$={}));var V;(function(me){function lt(Ze){let Ee=Ze;return n.objectLiteral(Ee)&&(Ee.workDoneProgress===void 0||n.boolean(Ee.workDoneProgress))}o(lt,"is"),E(lt,"is"),me.is=lt;function gt(Ze){let Ee=Ze;return Ee&&n.boolean(Ee.workDoneProgress)}o(gt,"hasWorkDoneProgress"),E(gt,"hasWorkDoneProgress"),me.hasWorkDoneProgress=gt})(V||(e.WorkDoneProgressOptions=V={}));var G;(function(me){me.method="initialize",me.messageDirection=t.MessageDirection.clientToServer,me.type=new t.ProtocolRequestType(me.method)})(G||(e.InitializeRequest=G={}));var z;(function(me){me.unknownProtocolVersion=1})(z||(e.InitializeErrorCodes=z={}));var W;(function(me){me.method="initialized",me.messageDirection=t.MessageDirection.clientToServer,me.type=new t.ProtocolNotificationType(me.method)})(W||(e.InitializedNotification=W={}));var H;(function(me){me.method="shutdown",me.messageDirection=t.MessageDirection.clientToServer,me.type=new t.ProtocolRequestType0(me.method)})(H||(e.ShutdownRequest=H={}));var j;(function(me){me.method="exit",me.messageDirection=t.MessageDirection.clientToServer,me.type=new t.ProtocolNotificationType0(me.method)})(j||(e.ExitNotification=j={}));var Q;(function(me){me.method="workspace/didChangeConfiguration",me.messageDirection=t.MessageDirection.clientToServer,me.type=new t.ProtocolNotificationType(me.method)})(Q||(e.DidChangeConfigurationNotification=Q={}));var U;(function(me){me.Error=1,me.Warning=2,me.Info=3,me.Log=4,me.Debug=5})(U||(e.MessageType=U={}));var oe;(function(me){me.method="window/showMessage",me.messageDirection=t.MessageDirection.serverToClient,me.type=new t.ProtocolNotificationType(me.method)})(oe||(e.ShowMessageNotification=oe={}));var te;(function(me){me.method="window/showMessageRequest",me.messageDirection=t.MessageDirection.serverToClient,me.type=new t.ProtocolRequestType(me.method)})(te||(e.ShowMessageRequest=te={}));var le;(function(me){me.method="window/logMessage",me.messageDirection=t.MessageDirection.serverToClient,me.type=new t.ProtocolNotificationType(me.method)})(le||(e.LogMessageNotification=le={}));var ie;(function(me){me.method="telemetry/event",me.messageDirection=t.MessageDirection.serverToClient,me.type=new t.ProtocolNotificationType(me.method)})(ie||(e.TelemetryEventNotification=ie={}));var ae;(function(me){me.None=0,me.Full=1,me.Incremental=2})(ae||(e.TextDocumentSyncKind=ae={}));var Re;(function(me){me.method="textDocument/didOpen",me.messageDirection=t.MessageDirection.clientToServer,me.type=new t.ProtocolNotificationType(me.method)})(Re||(e.DidOpenTextDocumentNotification=Re={}));var be;(function(me){function lt(Ze){let Ee=Ze;return Ee!=null&&typeof Ee.text=="string"&&Ee.range!==void 0&&(Ee.rangeLength===void 0||typeof Ee.rangeLength=="number")}o(lt,"isIncremental"),E(lt,"isIncremental"),me.isIncremental=lt;function gt(Ze){let Ee=Ze;return Ee!=null&&typeof Ee.text=="string"&&Ee.range===void 0&&Ee.rangeLength===void 0}o(gt,"isFull"),E(gt,"isFull"),me.isFull=gt})(be||(e.TextDocumentContentChangeEvent=be={}));var Pe;(function(me){me.method="textDocument/didChange",me.messageDirection=t.MessageDirection.clientToServer,me.type=new t.ProtocolNotificationType(me.method)})(Pe||(e.DidChangeTextDocumentNotification=Pe={}));var Ge;(function(me){me.method="textDocument/didClose",me.messageDirection=t.MessageDirection.clientToServer,me.type=new t.ProtocolNotificationType(me.method)})(Ge||(e.DidCloseTextDocumentNotification=Ge={}));var Oe;(function(me){me.method="textDocument/didSave",me.messageDirection=t.MessageDirection.clientToServer,me.type=new t.ProtocolNotificationType(me.method)})(Oe||(e.DidSaveTextDocumentNotification=Oe={}));var ue;(function(me){me.Manual=1,me.AfterDelay=2,me.FocusOut=3})(ue||(e.TextDocumentSaveReason=ue={}));var ye;(function(me){me.method="textDocument/willSave",me.messageDirection=t.MessageDirection.clientToServer,me.type=new t.ProtocolNotificationType(me.method)})(ye||(e.WillSaveTextDocumentNotification=ye={}));var ke;(function(me){me.method="textDocument/willSaveWaitUntil",me.messageDirection=t.MessageDirection.clientToServer,me.type=new t.ProtocolRequestType(me.method)})(ke||(e.WillSaveTextDocumentWaitUntilRequest=ke={}));var ce;(function(me){me.method="workspace/didChangeWatchedFiles",me.messageDirection=t.MessageDirection.clientToServer,me.type=new t.ProtocolNotificationType(me.method)})(ce||(e.DidChangeWatchedFilesNotification=ce={}));var re;(function(me){me.Created=1,me.Changed=2,me.Deleted=3})(re||(e.FileChangeType=re={}));var J;(function(me){function lt(gt){let Ze=gt;return n.objectLiteral(Ze)&&(r.URI.is(Ze.baseUri)||r.WorkspaceFolder.is(Ze.baseUri))&&n.string(Ze.pattern)}o(lt,"is"),E(lt,"is"),me.is=lt})(J||(e.RelativePattern=J={}));var se;(function(me){me.Create=1,me.Change=2,me.Delete=4})(se||(e.WatchKind=se={}));var ge;(function(me){me.method="textDocument/publishDiagnostics",me.messageDirection=t.MessageDirection.serverToClient,me.type=new t.ProtocolNotificationType(me.method)})(ge||(e.PublishDiagnosticsNotification=ge={}));var Te;(function(me){me.Invoked=1,me.TriggerCharacter=2,me.TriggerForIncompleteCompletions=3})(Te||(e.CompletionTriggerKind=Te={}));var we;(function(me){me.method="textDocument/completion",me.messageDirection=t.MessageDirection.clientToServer,me.type=new t.ProtocolRequestType(me.method)})(we||(e.CompletionRequest=we={}));var Me;(function(me){me.method="completionItem/resolve",me.messageDirection=t.MessageDirection.clientToServer,me.type=new t.ProtocolRequestType(me.method)})(Me||(e.CompletionResolveRequest=Me={}));var ve;(function(me){me.method="textDocument/hover",me.messageDirection=t.MessageDirection.clientToServer,me.type=new t.ProtocolRequestType(me.method)})(ve||(e.HoverRequest=ve={}));var ne;(function(me){me.Invoked=1,me.TriggerCharacter=2,me.ContentChange=3})(ne||(e.SignatureHelpTriggerKind=ne={}));var q;(function(me){me.method="textDocument/signatureHelp",me.messageDirection=t.MessageDirection.clientToServer,me.type=new t.ProtocolRequestType(me.method)})(q||(e.SignatureHelpRequest=q={}));var he;(function(me){me.method="textDocument/definition",me.messageDirection=t.MessageDirection.clientToServer,me.type=new t.ProtocolRequestType(me.method)})(he||(e.DefinitionRequest=he={}));var X;(function(me){me.method="textDocument/references",me.messageDirection=t.MessageDirection.clientToServer,me.type=new t.ProtocolRequestType(me.method)})(X||(e.ReferencesRequest=X={}));var fe;(function(me){me.method="textDocument/documentHighlight",me.messageDirection=t.MessageDirection.clientToServer,me.type=new t.ProtocolRequestType(me.method)})(fe||(e.DocumentHighlightRequest=fe={}));var K;(function(me){me.method="textDocument/documentSymbol",me.messageDirection=t.MessageDirection.clientToServer,me.type=new t.ProtocolRequestType(me.method)})(K||(e.DocumentSymbolRequest=K={}));var qe;(function(me){me.method="textDocument/codeAction",me.messageDirection=t.MessageDirection.clientToServer,me.type=new t.ProtocolRequestType(me.method)})(qe||(e.CodeActionRequest=qe={}));var _e;(function(me){me.method="codeAction/resolve",me.messageDirection=t.MessageDirection.clientToServer,me.type=new t.ProtocolRequestType(me.method)})(_e||(e.CodeActionResolveRequest=_e={}));var Be;(function(me){me.method="workspace/symbol",me.messageDirection=t.MessageDirection.clientToServer,me.type=new t.ProtocolRequestType(me.method)})(Be||(e.WorkspaceSymbolRequest=Be={}));var Ne;(function(me){me.method="workspaceSymbol/resolve",me.messageDirection=t.MessageDirection.clientToServer,me.type=new t.ProtocolRequestType(me.method)})(Ne||(e.WorkspaceSymbolResolveRequest=Ne={}));var He;(function(me){me.method="textDocument/codeLens",me.messageDirection=t.MessageDirection.clientToServer,me.type=new t.ProtocolRequestType(me.method)})(He||(e.CodeLensRequest=He={}));var $e;(function(me){me.method="codeLens/resolve",me.messageDirection=t.MessageDirection.clientToServer,me.type=new t.ProtocolRequestType(me.method)})($e||(e.CodeLensResolveRequest=$e={}));var Xe;(function(me){me.method="workspace/codeLens/refresh",me.messageDirection=t.MessageDirection.serverToClient,me.type=new t.ProtocolRequestType0(me.method)})(Xe||(e.CodeLensRefreshRequest=Xe={}));var Fe;(function(me){me.method="textDocument/documentLink",me.messageDirection=t.MessageDirection.clientToServer,me.type=new t.ProtocolRequestType(me.method)})(Fe||(e.DocumentLinkRequest=Fe={}));var Ke;(function(me){me.method="documentLink/resolve",me.messageDirection=t.MessageDirection.clientToServer,me.type=new t.ProtocolRequestType(me.method)})(Ke||(e.DocumentLinkResolveRequest=Ke={}));var xe;(function(me){me.method="textDocument/formatting",me.messageDirection=t.MessageDirection.clientToServer,me.type=new t.ProtocolRequestType(me.method)})(xe||(e.DocumentFormattingRequest=xe={}));var mt;(function(me){me.method="textDocument/rangeFormatting",me.messageDirection=t.MessageDirection.clientToServer,me.type=new t.ProtocolRequestType(me.method)})(mt||(e.DocumentRangeFormattingRequest=mt={}));var Le;(function(me){me.method="textDocument/rangesFormatting",me.messageDirection=t.MessageDirection.clientToServer,me.type=new t.ProtocolRequestType(me.method)})(Le||(e.DocumentRangesFormattingRequest=Le={}));var ft;(function(me){me.method="textDocument/onTypeFormatting",me.messageDirection=t.MessageDirection.clientToServer,me.type=new t.ProtocolRequestType(me.method)})(ft||(e.DocumentOnTypeFormattingRequest=ft={}));var wt;(function(me){me.Identifier=1})(wt||(e.PrepareSupportDefaultBehavior=wt={}));var zt;(function(me){me.method="textDocument/rename",me.messageDirection=t.MessageDirection.clientToServer,me.type=new t.ProtocolRequestType(me.method)})(zt||(e.RenameRequest=zt={}));var St;(function(me){me.method="textDocument/prepareRename",me.messageDirection=t.MessageDirection.clientToServer,me.type=new t.ProtocolRequestType(me.method)})(St||(e.PrepareRenameRequest=St={}));var At;(function(me){me.method="workspace/executeCommand",me.messageDirection=t.MessageDirection.clientToServer,me.type=new t.ProtocolRequestType(me.method)})(At||(e.ExecuteCommandRequest=At={}));var bt;(function(me){me.method="workspace/applyEdit",me.messageDirection=t.MessageDirection.serverToClient,me.type=new t.ProtocolRequestType("workspace/applyEdit")})(bt||(e.ApplyWorkspaceEditRequest=bt={}))}}),tyt=zr({"../../node_modules/.pnpm/vscode-languageserver-protocol@3.17.5/node_modules/vscode-languageserver-protocol/lib/common/connection.js"(e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.createProtocolConnection=void 0;var t=Mv();function r(n,i,a,s){return t.ConnectionStrategy.is(s)&&(s={connectionStrategy:s}),(0,t.createMessageConnection)(n,i,a,s)}o(r,"createProtocolConnection"),E(r,"createProtocolConnection"),e.createProtocolConnection=r}}),ryt=zr({"../../node_modules/.pnpm/vscode-languageserver-protocol@3.17.5/node_modules/vscode-languageserver-protocol/lib/common/api.js"(e){"use strict";var t=e&&e.__createBinding||(Object.create?(function(a,s,l,u){u===void 0&&(u=l);var h=Object.getOwnPropertyDescriptor(s,l);(!h||("get"in h?!s.__esModule:h.writable||h.configurable))&&(h={enumerable:!0,get:E(function(){return s[l]},"get")}),Object.defineProperty(a,u,h)}):(function(a,s,l,u){u===void 0&&(u=l),a[u]=s[l]})),r=e&&e.__exportStar||function(a,s){for(var l in a)l!=="default"&&!Object.prototype.hasOwnProperty.call(s,l)&&t(s,a,l)};Object.defineProperty(e,"__esModule",{value:!0}),e.LSPErrorCodes=e.createProtocolConnection=void 0,r(Mv(),e),r((hw(),tW(gR)),e),r(ki(),e),r(eyt(),e);var n=tyt();Object.defineProperty(e,"createProtocolConnection",{enumerable:!0,get:E(function(){return n.createProtocolConnection},"get")});var i;(function(a){a.lspReservedErrorRangeStart=-32899,a.RequestFailed=-32803,a.ServerCancelled=-32802,a.ContentModified=-32801,a.RequestCancelled=-32800,a.lspReservedErrorRangeEnd=-32800})(i||(e.LSPErrorCodes=i={}))}}),nyt=zr({"../../node_modules/.pnpm/vscode-languageserver-protocol@3.17.5/node_modules/vscode-languageserver-protocol/lib/browser/main.js"(e){"use strict";var t=e&&e.__createBinding||(Object.create?(function(a,s,l,u){u===void 0&&(u=l);var h=Object.getOwnPropertyDescriptor(s,l);(!h||("get"in h?!s.__esModule:h.writable||h.configurable))&&(h={enumerable:!0,get:E(function(){return s[l]},"get")}),Object.defineProperty(a,u,h)}):(function(a,s,l,u){u===void 0&&(u=l),a[u]=s[l]})),r=e&&e.__exportStar||function(a,s){for(var l in a)l!=="default"&&!Object.prototype.hasOwnProperty.call(s,l)&&t(s,a,l)};Object.defineProperty(e,"__esModule",{value:!0}),e.createProtocolConnection=void 0;var n=OTe();r(OTe(),e),r(ryt(),e);function i(a,s,l,u){return(0,n.createMessageConnection)(a,s,l,u)}o(i,"createProtocolConnection"),E(i,"createProtocolConnection"),e.createProtocolConnection=i}}),Pwe={};yp(Pwe,{AbstractAstReflection:o(()=>aW,"AbstractAstReflection"),AbstractCstNode:o(()=>oH,"AbstractCstNode"),AbstractLangiumParser:o(()=>cH,"AbstractLangiumParser"),AbstractParserErrorMessageProvider:o(()=>w_e,"AbstractParserErrorMessageProvider"),AbstractThreadedAsyncParser:o(()=>IEt,"AbstractThreadedAsyncParser"),AstUtils:o(()=>sW,"AstUtils"),BiMap:o(()=>uR,"BiMap"),Cancellation:o(()=>Jn,"Cancellation"),CompositeCstNodeImpl:o(()=>f_,"CompositeCstNodeImpl"),ContextCache:o(()=>b_,"ContextCache"),CstNodeBuilder:o(()=>x_e,"CstNodeBuilder"),CstUtils:o(()=>nW,"CstUtils"),DEFAULT_TOKENIZE_OPTIONS:o(()=>AH,"DEFAULT_TOKENIZE_OPTIONS"),DONE_RESULT:o(()=>Os,"DONE_RESULT"),DatatypeSymbol:o(()=>sR,"DatatypeSymbol"),DefaultAstNodeDescriptionProvider:o(()=>J_e,"DefaultAstNodeDescriptionProvider"),DefaultAstNodeLocator:o(()=>tLe,"DefaultAstNodeLocator"),DefaultAsyncParser:o(()=>xLe,"DefaultAsyncParser"),DefaultCommentProvider:o(()=>vLe,"DefaultCommentProvider"),DefaultConfigurationProvider:o(()=>rLe,"DefaultConfigurationProvider"),DefaultDocumentBuilder:o(()=>nLe,"DefaultDocumentBuilder"),DefaultDocumentValidator:o(()=>Q_e,"DefaultDocumentValidator"),DefaultHydrator:o(()=>TLe,"DefaultHydrator"),DefaultIndexManager:o(()=>iLe,"DefaultIndexManager"),DefaultJsonSerializer:o(()=>j_e,"DefaultJsonSerializer"),DefaultLangiumDocumentFactory:o(()=>F_e,"DefaultLangiumDocumentFactory"),DefaultLangiumDocuments:o(()=>z_e,"DefaultLangiumDocuments"),DefaultLangiumProfiler:o(()=>BEt,"DefaultLangiumProfiler"),DefaultLexer:o(()=>RH,"DefaultLexer"),DefaultLexerErrorMessageProvider:o(()=>sLe,"DefaultLexerErrorMessageProvider"),DefaultLinker:o(()=>G_e,"DefaultLinker"),DefaultNameProvider:o(()=>V_e,"DefaultNameProvider"),DefaultReferenceDescriptionProvider:o(()=>eLe,"DefaultReferenceDescriptionProvider"),DefaultReferences:o(()=>W_e,"DefaultReferences"),DefaultScopeComputation:o(()=>q_e,"DefaultScopeComputation"),DefaultScopeProvider:o(()=>Y_e,"DefaultScopeProvider"),DefaultServiceRegistry:o(()=>X_e,"DefaultServiceRegistry"),DefaultTokenBuilder:o(()=>g_,"DefaultTokenBuilder"),DefaultValueConverter:o(()=>gH,"DefaultValueConverter"),DefaultWorkspaceLock:o(()=>bLe,"DefaultWorkspaceLock"),DefaultWorkspaceManager:o(()=>aLe,"DefaultWorkspaceManager"),Deferred:o(()=>Jh,"Deferred"),Disposable:o(()=>Yg,"Disposable"),DisposableCache:o(()=>x_,"DisposableCache"),DocumentCache:o(()=>U_e,"DocumentCache"),DocumentState:o(()=>en,"DocumentState"),DocumentValidator:o(()=>Rl,"DocumentValidator"),EMPTY_SCOPE:o(()=>REt,"EMPTY_SCOPE"),EMPTY_STREAM:o(()=>Tv,"EMPTY_STREAM"),EmptyFileSystem:o(()=>yn,"EmptyFileSystem"),EmptyFileSystemProvider:o(()=>kLe,"EmptyFileSystemProvider"),ErrorWithLocation:o(()=>ER,"ErrorWithLocation"),GrammarAST:o(()=>$we,"GrammarAST"),GrammarUtils:o(()=>OW,"GrammarUtils"),IndentationAwareLexer:o(()=>NEt,"IndentationAwareLexer"),IndentationAwareTokenBuilder:o(()=>wLe,"IndentationAwareTokenBuilder"),JSDocDocumentationProvider:o(()=>yLe,"JSDocDocumentationProvider"),LangiumCompletionParser:o(()=>k_e,"LangiumCompletionParser"),LangiumParser:o(()=>C_e,"LangiumParser"),LangiumParserErrorMessageProvider:o(()=>uH,"LangiumParserErrorMessageProvider"),LeafCstNodeImpl:o(()=>aR,"LeafCstNodeImpl"),LexingMode:o(()=>Hg,"LexingMode"),MapScope:o(()=>AEt,"MapScope"),Module:o(()=>rV,"Module"),MultiMap:o(()=>ed,"MultiMap"),MultiMapScope:o(()=>H_e,"MultiMapScope"),OperationCancelled:o(()=>Pu,"OperationCancelled"),ParserWorker:o(()=>MEt,"ParserWorker"),ProfilingTask:o(()=>ELe,"ProfilingTask"),Reduction:o(()=>jC,"Reduction"),RefResolving:o(()=>gg,"RefResolving"),RegExpUtils:o(()=>$W,"RegExpUtils"),RootCstNodeImpl:o(()=>lH,"RootCstNodeImpl"),SimpleCache:o(()=>CH,"SimpleCache"),StreamImpl:o(()=>Nu,"StreamImpl"),StreamScope:o(()=>QG,"StreamScope"),TextDocument:o(()=>lR,"TextDocument"),TreeStreamImpl:o(()=>Cv,"TreeStreamImpl"),URI:o(()=>Yo,"URI"),UriTrie:o(()=>bH,"UriTrie"),UriUtils:o(()=>$s,"UriUtils"),VALIDATE_EACH_NODE:o(()=>Z_e,"VALIDATE_EACH_NODE"),ValidationCategory:o(()=>hR,"ValidationCategory"),ValidationRegistry:o(()=>K_e,"ValidationRegistry"),ValueConverter:o(()=>Iu,"ValueConverter"),WorkspaceCache:o(()=>wH,"WorkspaceCache"),assertCondition:o(()=>BW,"assertCondition"),assertUnreachable:o(()=>vp,"assertUnreachable"),createCompletionParser:o(()=>fH,"createCompletionParser"),createDefaultCoreModule:o(()=>hn,"createDefaultCoreModule"),createDefaultSharedCoreModule:o(()=>dn,"createDefaultSharedCoreModule"),createGrammarConfig:o(()=>rq,"createGrammarConfig"),createLangiumParser:o(()=>pH,"createLangiumParser"),createParser:o(()=>p_,"createParser"),delayNextTick:o(()=>y_,"delayNextTick"),diagnosticData:o(()=>qg,"diagnosticData"),eagerLoad:o(()=>PH,"eagerLoad"),getDiagnosticRange:o(()=>SH,"getDiagnosticRange"),indentationBuilderDefaultOptions:o(()=>iV,"indentationBuilderDefaultOptions"),inject:o(()=>Mr,"inject"),interruptAndCheck:o(()=>Ia,"interruptAndCheck"),isAstNode:o(()=>Zi,"isAstNode"),isAstNodeDescription:o(()=>iW,"isAstNodeDescription"),isAstNodeWithComment:o(()=>kH,"isAstNodeWithComment"),isCompositeCstNode:o(()=>Hh,"isCompositeCstNode"),isIMultiModeLexerDefinition:o(()=>w_,"isIMultiModeLexerDefinition"),isJSDoc:o(()=>LH,"isJSDoc"),isLeafCstNode:o(()=>Jg,"isLeafCstNode"),isLinkingError:o(()=>Tg,"isLinkingError"),isMultiReference:o(()=>Ou,"isMultiReference"),isNamed:o(()=>TH,"isNamed"),isOperationCancelled:o(()=>v0,"isOperationCancelled"),isReference:o(()=>Bs,"isReference"),isRootCstNode:o(()=>vR,"isRootCstNode"),isTokenTypeArray:o(()=>C_,"isTokenTypeArray"),isTokenTypeDictionary:o(()=>dR,"isTokenTypeDictionary"),loadGrammarFromJson:o(()=>Ma,"loadGrammarFromJson"),parseJSDoc:o(()=>_H,"parseJSDoc"),prepareLangiumParser:o(()=>mH,"prepareLangiumParser"),setInterruptionPeriod:o(()=>yH,"setInterruptionPeriod"),startCancelableOperation:o(()=>v_,"startCancelableOperation"),stream:o(()=>Bn,"stream"),toDiagnosticData:o(()=>EH,"toDiagnosticData"),toDiagnosticSeverity:o(()=>WC,"toDiagnosticSeverity")});nW={};yp(nW,{DefaultNameRegexp:o(()=>DW,"DefaultNameRegexp"),RangeComparison:o(()=>Mu,"RangeComparison"),compareRange:o(()=>_W,"compareRange"),findCommentNode:o(()=>IW,"findCommentNode"),findDeclarationNodeAtOffset:o(()=>nke,"findDeclarationNodeAtOffset"),findLeafNodeAtOffset:o(()=>SR,"findLeafNodeAtOffset"),findLeafNodeBeforeOffset:o(()=>MW,"findLeafNodeBeforeOffset"),flattenCst:o(()=>rke,"flattenCst"),getDatatypeNode:o(()=>tke,"getDatatypeNode"),getInteriorNodes:o(()=>ske,"getInteriorNodes"),getNextNode:o(()=>ike,"getNextNode"),getPreviousNode:o(()=>PW,"getPreviousNode"),getStartlineNode:o(()=>ake,"getStartlineNode"),inRange:o(()=>LW,"inRange"),isChildNode:o(()=>RW,"isChildNode"),isCommentNode:o(()=>W6,"isCommentNode"),streamCst:o(()=>Ev,"streamCst"),toDocumentSegment:o(()=>Av,"toDocumentSegment"),tokenToRange:o(()=>XC,"tokenToRange")});o(Zi,"isAstNode");E(Zi,"isAstNode");o(Bs,"isReference");E(Bs,"isReference");o(Ou,"isMultiReference");E(Ou,"isMultiReference");o(iW,"isAstNodeDescription");E(iW,"isAstNodeDescription");o(Tg,"isLinkingError");E(Tg,"isLinkingError");aW=class{static{o(this,"AbstractAstReflection")}static{E(this,"AbstractAstReflection")}constructor(){this.subtypes={},this.allSubtypes={}}getAllTypes(){return Object.keys(this.types)}getReferenceType(e){let t=this.types[e.container.$type];if(!t)throw new Error(`Type ${e.container.$type||"undefined"} not found.`);let r=t.properties[e.property]?.referenceType;if(!r)throw new Error(`Property ${e.property||"undefined"} of type ${e.container.$type} is not a reference.`);return r}getTypeMetaData(e){let t=this.types[e];return t||{name:e,properties:{},superTypes:[]}}isInstance(e,t){return Zi(e)&&this.isSubtype(e.$type,t)}isSubtype(e,t){if(e===t)return!0;let r=this.subtypes[e];r||(r=this.subtypes[e]={});let n=r[t];if(n!==void 0)return n;{let i=this.types[e],a=i?i.superTypes.some(s=>this.isSubtype(s,t)):!1;return r[t]=a,a}}getAllSubTypes(e){let t=this.allSubtypes[e];if(t)return t;{let r=this.getAllTypes(),n=[];for(let i of r)this.isSubtype(i,e)&&n.push(i);return this.allSubtypes[e]=n,n}}};o(Hh,"isCompositeCstNode");E(Hh,"isCompositeCstNode");o(Jg,"isLeafCstNode");E(Jg,"isLeafCstNode");o(vR,"isRootCstNode");E(vR,"isRootCstNode");Nu=class zh{static{o(this,"_StreamImpl")}static{E(this,"StreamImpl")}constructor(t,r){this.startFn=t,this.nextFn=r}iterator(){let t={state:this.startFn(),next:E(()=>this.nextFn(t.state),"next"),[Symbol.iterator]:()=>t};return t}[Symbol.iterator](){return this.iterator()}isEmpty(){return!!this.iterator().next().done}count(){let t=this.iterator(),r=0,n=t.next();for(;!n.done;)r++,n=t.next();return r}toArray(){let t=[],r=this.iterator(),n;do n=r.next(),n.value!==void 0&&t.push(n.value);while(!n.done);return t}toSet(){return new Set(this)}toMap(t,r){let n=this.map(i=>[t?t(i):i,r?r(i):i]);return new Map(n)}toString(){return this.join()}concat(t){return new zh(()=>({first:this.startFn(),firstDone:!1,iterator:t[Symbol.iterator]()}),r=>{let n;if(!r.firstDone){do if(n=this.nextFn(r.first),!n.done)return n;while(!n.done);r.firstDone=!0}do if(n=r.iterator.next(),!n.done)return n;while(!n.done);return Os})}join(t=","){let r=this.iterator(),n="",i,a=!1;do i=r.next(),i.done||(a&&(n+=t),n+=Owe(i.value)),a=!0;while(!i.done);return n}indexOf(t,r=0){let n=this.iterator(),i=0,a=n.next();for(;!a.done;){if(i>=r&&a.value===t)return i;a=n.next(),i++}return-1}every(t){let r=this.iterator(),n=r.next();for(;!n.done;){if(!t(n.value))return!1;n=r.next()}return!0}some(t){let r=this.iterator(),n=r.next();for(;!n.done;){if(t(n.value))return!0;n=r.next()}return!1}forEach(t){let r=this.iterator(),n=0,i=r.next();for(;!i.done;)t(i.value,n),i=r.next(),n++}map(t){return new zh(this.startFn,r=>{let{done:n,value:i}=this.nextFn(r);return n?Os:{done:!1,value:t(i)}})}filter(t){return new zh(this.startFn,r=>{let n;do if(n=this.nextFn(r),!n.done&&t(n.value))return n;while(!n.done);return Os})}nonNullable(){return this.filter(t=>t!=null)}reduce(t,r){let n=this.iterator(),i=r,a=n.next();for(;!a.done;)i===void 0?i=a.value:i=t(i,a.value),a=n.next();return i}reduceRight(t,r){return this.recursiveReduce(this.iterator(),t,r)}recursiveReduce(t,r,n){let i=t.next();if(i.done)return n;let a=this.recursiveReduce(t,r,n);return a===void 0?i.value:r(a,i.value)}find(t){let r=this.iterator(),n=r.next();for(;!n.done;){if(t(n.value))return n.value;n=r.next()}}findIndex(t){let r=this.iterator(),n=0,i=r.next();for(;!i.done;){if(t(i.value))return n;i=r.next(),n++}return-1}includes(t){let r=this.iterator(),n=r.next();for(;!n.done;){if(n.value===t)return!0;n=r.next()}return!1}flatMap(t){return new zh(()=>({this:this.startFn()}),r=>{do{if(r.iterator){let a=r.iterator.next();if(a.done)r.iterator=void 0;else return a}let{done:n,value:i}=this.nextFn(r.this);if(!n){let a=t(i);if(YC(a))r.iterator=a[Symbol.iterator]();else return{done:!1,value:a}}}while(r.iterator);return Os})}flat(t){if(t===void 0&&(t=1),t<=0)return this;let r=t>1?this.flat(t-1):this;return new zh(()=>({this:r.startFn()}),n=>{do{if(n.iterator){let s=n.iterator.next();if(s.done)n.iterator=void 0;else return s}let{done:i,value:a}=r.nextFn(n.this);if(!i)if(YC(a))n.iterator=a[Symbol.iterator]();else return{done:!1,value:a}}while(n.iterator);return Os})}head(){let r=this.iterator().next();if(!r.done)return r.value}tail(t=1){return new zh(()=>{let r=this.startFn();for(let n=0;n<t;n++)if(this.nextFn(r).done)return r;return r},this.nextFn)}limit(t){return new zh(()=>({size:0,state:this.startFn()}),r=>(r.size++,r.size>t?Os:this.nextFn(r.state)))}distinct(t){return new zh(()=>({set:new Set,internalState:this.startFn()}),r=>{let n;do if(n=this.nextFn(r.internalState),!n.done){let i=t?t(n.value):n.value;if(!r.set.has(i))return r.set.add(i),n}while(!n.done);return Os})}exclude(t,r){let n=new Set;for(let i of t){let a=r?r(i):i;n.add(a)}return this.filter(i=>{let a=r?r(i):i;return!n.has(a)})}};o(Owe,"toString");E(Owe,"toString");o(YC,"isIterable");E(YC,"isIterable");Tv=new Nu(()=>{},()=>Os),Os=Object.freeze({done:!0,value:void 0});o(Bn,"stream");E(Bn,"stream");Cv=class extends Nu{static{o(this,"TreeStreamImpl")}static{E(this,"TreeStreamImpl")}constructor(e,t,r){super(()=>({iterators:r?.includeRoot?[[e][Symbol.iterator]()]:[t(e)[Symbol.iterator]()],pruned:!1}),n=>{for(n.pruned&&(n.iterators.pop(),n.pruned=!1);n.iterators.length>0;){let a=n.iterators[n.iterators.length-1].next();if(a.done)n.iterators.pop();else return n.iterators.push(t(a.value)[Symbol.iterator]()),a}return Os})}iterator(){let e={state:this.startFn(),next:E(()=>this.nextFn(e.state),"next"),prune:E(()=>{e.state.pruned=!0},"prune"),[Symbol.iterator]:()=>e};return e}};(function(e){function t(a){return a.reduce((s,l)=>s+l,0)}o(t,"sum"),E(t,"sum"),e.sum=t;function r(a){return a.reduce((s,l)=>s*l,0)}o(r,"product"),E(r,"product"),e.product=r;function n(a){return a.reduce((s,l)=>Math.min(s,l))}o(n,"min2"),E(n,"min"),e.min=n;function i(a){return a.reduce((s,l)=>Math.max(s,l))}o(i,"max"),E(i,"max"),e.max=i})(jC||(jC={}));sW={};yp(sW,{assignMandatoryProperties:o(()=>oW,"assignMandatoryProperties"),copyAstNode:o(()=>_6,"copyAstNode"),findRootNode:o(()=>yv,"findRootNode"),getContainerOfType:o(()=>e0,"getContainerOfType"),getDocument:o(()=>wc,"getDocument"),getReferenceNodes:o(()=>A6,"getReferenceNodes"),hasContainerOfType:o(()=>Bwe,"hasContainerOfType"),linkContentToContainer:o(()=>wv,"linkContentToContainer"),streamAllContents:o(()=>td,"streamAllContents"),streamAst:o(()=>kc,"streamAst"),streamContents:o(()=>fw,"streamContents"),streamReferences:o(()=>kv,"streamReferences")});o(wv,"linkContentToContainer");E(wv,"linkContentToContainer");o(e0,"getContainerOfType");E(e0,"getContainerOfType");o(Bwe,"hasContainerOfType");E(Bwe,"hasContainerOfType");o(wc,"getDocument");E(wc,"getDocument");o(yv,"findRootNode");E(yv,"findRootNode");o(A6,"getReferenceNodes");E(A6,"getReferenceNodes");o(fw,"streamContents");E(fw,"streamContents");o(td,"streamAllContents");E(td,"streamAllContents");o(kc,"streamAst");E(kc,"streamAst");o(R6,"isAstNodeInRange");E(R6,"isAstNodeInRange");o(kv,"streamReferences");E(kv,"streamReferences");o(oW,"assignMandatoryProperties");E(oW,"assignMandatoryProperties");o(lW,"copyDefaultValue");E(lW,"copyDefaultValue");o(_6,"copyAstNode");E(_6,"copyAstNode");$we={};yp($we,{AbstractElement:o(()=>xo,"AbstractElement"),AbstractParserRule:o(()=>_C,"AbstractParserRule"),AbstractRule:o(()=>ov,"AbstractRule"),AbstractType:o(()=>Uo,"AbstractType"),Action:o(()=>ip,"Action"),Alternatives:o(()=>LC,"Alternatives"),ArrayLiteral:o(()=>L6,"ArrayLiteral"),ArrayType:o(()=>D6,"ArrayType"),Assignment:o(()=>ap,"Assignment"),BooleanLiteral:o(()=>I6,"BooleanLiteral"),CharacterRange:o(()=>sp,"CharacterRange"),Condition:o(()=>op,"Condition"),Conjunction:o(()=>DC,"Conjunction"),CrossReference:o(()=>lp,"CrossReference"),Disjunction:o(()=>IC,"Disjunction"),EndOfFile:o(()=>M6,"EndOfFile"),Grammar:o(()=>Vh,"Grammar"),GrammarImport:o(()=>N6,"GrammarImport"),Group:o(()=>Cg,"Group"),InferredType:o(()=>P6,"InferredType"),InfixRule:o(()=>Du,"InfixRule"),InfixRuleOperatorList:o(()=>MC,"InfixRuleOperatorList"),InfixRuleOperators:o(()=>O6,"InfixRuleOperators"),Interface:o(()=>lv,"Interface"),Keyword:o(()=>cv,"Keyword"),LangiumGrammarAstReflection:o(()=>AW,"LangiumGrammarAstReflection"),LangiumGrammarTerminals:o(()=>iyt,"LangiumGrammarTerminals"),NamedArgument:o(()=>uv,"NamedArgument"),NegatedToken:o(()=>wg,"NegatedToken"),Negation:o(()=>B6,"Negation"),NumberLiteral:o(()=>$6,"NumberLiteral"),Parameter:o(()=>hv,"Parameter"),ParameterReference:o(()=>F6,"ParameterReference"),ParserRule:o(()=>xc,"ParserRule"),ReferenceType:o(()=>NC,"ReferenceType"),RegexToken:o(()=>kg,"RegexToken"),ReturnType:o(()=>z6,"ReturnType"),RuleCall:o(()=>Sg,"RuleCall"),SimpleType:o(()=>dv,"SimpleType"),StringLiteral:o(()=>G6,"StringLiteral"),TerminalAlternatives:o(()=>Eg,"TerminalAlternatives"),TerminalElement:o(()=>bo,"TerminalElement"),TerminalGroup:o(()=>Ag,"TerminalGroup"),TerminalRule:o(()=>Wh,"TerminalRule"),TerminalRuleCall:o(()=>Rg,"TerminalRuleCall"),Type:o(()=>PC,"Type"),TypeAttribute:o(()=>_g,"TypeAttribute"),TypeDefinition:o(()=>Lg,"TypeDefinition"),UnionType:o(()=>V6,"UnionType"),UnorderedGroup:o(()=>OC,"UnorderedGroup"),UntilToken:o(()=>Dg,"UntilToken"),ValueLiteral:o(()=>Ig,"ValueLiteral"),Wildcard:o(()=>fv,"Wildcard"),isAbstractElement:o(()=>xR,"isAbstractElement"),isAbstractParserRule:o(()=>t0,"isAbstractParserRule"),isAbstractRule:o(()=>Fwe,"isAbstractRule"),isAbstractType:o(()=>zwe,"isAbstractType"),isAction:o(()=>dp,"isAction"),isAlternatives:o(()=>bR,"isAlternatives"),isArrayLiteral:o(()=>Gwe,"isArrayLiteral"),isArrayType:o(()=>cW,"isArrayType"),isAssignment:o(()=>Uh,"isAssignment"),isBooleanLiteral:o(()=>uW,"isBooleanLiteral"),isCharacterRange:o(()=>hW,"isCharacterRange"),isCondition:o(()=>Vwe,"isCondition"),isConjunction:o(()=>dW,"isConjunction"),isCrossReference:o(()=>r0,"isCrossReference"),isDisjunction:o(()=>fW,"isDisjunction"),isEndOfFile:o(()=>pW,"isEndOfFile"),isGrammar:o(()=>Wwe,"isGrammar"),isGrammarImport:o(()=>qwe,"isGrammarImport"),isGroup:o(()=>n0,"isGroup"),isInferredType:o(()=>pw,"isInferredType"),isInfixRule:o(()=>Sv,"isInfixRule"),isInfixRuleOperatorList:o(()=>Hwe,"isInfixRuleOperatorList"),isInfixRuleOperators:o(()=>Uwe,"isInfixRuleOperators"),isInterface:o(()=>mW,"isInterface"),isKeyword:o(()=>Yh,"isKeyword"),isNamedArgument:o(()=>Ywe,"isNamedArgument"),isNegatedToken:o(()=>gW,"isNegatedToken"),isNegation:o(()=>yW,"isNegation"),isNumberLiteral:o(()=>jwe,"isNumberLiteral"),isParameter:o(()=>Xwe,"isParameter"),isParameterReference:o(()=>vW,"isParameterReference"),isParserRule:o(()=>zs,"isParserRule"),isReferenceType:o(()=>xW,"isReferenceType"),isRegexToken:o(()=>bW,"isRegexToken"),isReturnType:o(()=>TW,"isReturnType"),isRuleCall:o(()=>jh,"isRuleCall"),isSimpleType:o(()=>TR,"isSimpleType"),isStringLiteral:o(()=>Kwe,"isStringLiteral"),isTerminalAlternatives:o(()=>CW,"isTerminalAlternatives"),isTerminalElement:o(()=>Zwe,"isTerminalElement"),isTerminalGroup:o(()=>wW,"isTerminalGroup"),isTerminalRule:o(()=>Il,"isTerminalRule"),isTerminalRuleCall:o(()=>CR,"isTerminalRuleCall"),isType:o(()=>wR,"isType"),isTypeAttribute:o(()=>Qwe,"isTypeAttribute"),isTypeDefinition:o(()=>Jwe,"isTypeDefinition"),isUnionType:o(()=>kW,"isUnionType"),isUnorderedGroup:o(()=>kR,"isUnorderedGroup"),isUntilToken:o(()=>SW,"isUntilToken"),isValueLiteral:o(()=>eke,"isValueLiteral"),isWildcard:o(()=>EW,"isWildcard"),reflection:o(()=>Tr,"reflection")});iyt={ID:/\^?[_a-zA-Z][\w_]*/,STRING:/"(\\.|[^"\\])*"|'(\\.|[^'\\])*'/,NUMBER:/NaN|-?((\d*\.\d+|\d+)([Ee][+-]?\d+)?|Infinity)/,RegexLiteral:/\/(?![*+?])(?:[^\r\n\[/\\]|\\.|\[(?:[^\r\n\]\\]|\\.)*\])+\/[a-z]*/,WS:/\s+/,ML_COMMENT:/\/\*[\s\S]*?\*\//,SL_COMMENT:/\/\/[^\n\r]*/},xo={$type:"AbstractElement",cardinality:"cardinality"};o(xR,"isAbstractElement");E(xR,"isAbstractElement");_C={$type:"AbstractParserRule"};o(t0,"isAbstractParserRule");E(t0,"isAbstractParserRule");ov={$type:"AbstractRule"};o(Fwe,"isAbstractRule");E(Fwe,"isAbstractRule");Uo={$type:"AbstractType"};o(zwe,"isAbstractType");E(zwe,"isAbstractType");ip={$type:"Action",cardinality:"cardinality",feature:"feature",inferredType:"inferredType",operator:"operator",type:"type"};o(dp,"isAction");E(dp,"isAction");LC={$type:"Alternatives",cardinality:"cardinality",elements:"elements"};o(bR,"isAlternatives");E(bR,"isAlternatives");L6={$type:"ArrayLiteral",elements:"elements"};o(Gwe,"isArrayLiteral");E(Gwe,"isArrayLiteral");D6={$type:"ArrayType",elementType:"elementType"};o(cW,"isArrayType");E(cW,"isArrayType");ap={$type:"Assignment",cardinality:"cardinality",feature:"feature",operator:"operator",predicate:"predicate",terminal:"terminal"};o(Uh,"isAssignment");E(Uh,"isAssignment");I6={$type:"BooleanLiteral",true:"true"};o(uW,"isBooleanLiteral");E(uW,"isBooleanLiteral");sp={$type:"CharacterRange",cardinality:"cardinality",left:"left",lookahead:"lookahead",parenthesized:"parenthesized",right:"right"};o(hW,"isCharacterRange");E(hW,"isCharacterRange");op={$type:"Condition"};o(Vwe,"isCondition");E(Vwe,"isCondition");DC={$type:"Conjunction",left:"left",right:"right"};o(dW,"isConjunction");E(dW,"isConjunction");lp={$type:"CrossReference",cardinality:"cardinality",deprecatedSyntax:"deprecatedSyntax",isMulti:"isMulti",terminal:"terminal",type:"type"};o(r0,"isCrossReference");E(r0,"isCrossReference");IC={$type:"Disjunction",left:"left",right:"right"};o(fW,"isDisjunction");E(fW,"isDisjunction");M6={$type:"EndOfFile",cardinality:"cardinality"};o(pW,"isEndOfFile");E(pW,"isEndOfFile");Vh={$type:"Grammar",imports:"imports",interfaces:"interfaces",isDeclared:"isDeclared",name:"name",rules:"rules",types:"types"};o(Wwe,"isGrammar");E(Wwe,"isGrammar");N6={$type:"GrammarImport",path:"path"};o(qwe,"isGrammarImport");E(qwe,"isGrammarImport");Cg={$type:"Group",cardinality:"cardinality",elements:"elements",guardCondition:"guardCondition",predicate:"predicate"};o(n0,"isGroup");E(n0,"isGroup");P6={$type:"InferredType",name:"name"};o(pw,"isInferredType");E(pw,"isInferredType");Du={$type:"InfixRule",call:"call",dataType:"dataType",inferredType:"inferredType",name:"name",operators:"operators",parameters:"parameters",returnType:"returnType"};o(Sv,"isInfixRule");E(Sv,"isInfixRule");MC={$type:"InfixRuleOperatorList",associativity:"associativity",operators:"operators"};o(Hwe,"isInfixRuleOperatorList");E(Hwe,"isInfixRuleOperatorList");O6={$type:"InfixRuleOperators",precedences:"precedences"};o(Uwe,"isInfixRuleOperators");E(Uwe,"isInfixRuleOperators");lv={$type:"Interface",attributes:"attributes",name:"name",superTypes:"superTypes"};o(mW,"isInterface");E(mW,"isInterface");cv={$type:"Keyword",cardinality:"cardinality",predicate:"predicate",value:"value"};o(Yh,"isKeyword");E(Yh,"isKeyword");uv={$type:"NamedArgument",calledByName:"calledByName",parameter:"parameter",value:"value"};o(Ywe,"isNamedArgument");E(Ywe,"isNamedArgument");wg={$type:"NegatedToken",cardinality:"cardinality",lookahead:"lookahead",parenthesized:"parenthesized",terminal:"terminal"};o(gW,"isNegatedToken");E(gW,"isNegatedToken");B6={$type:"Negation",value:"value"};o(yW,"isNegation");E(yW,"isNegation");$6={$type:"NumberLiteral",value:"value"};o(jwe,"isNumberLiteral");E(jwe,"isNumberLiteral");hv={$type:"Parameter",name:"name"};o(Xwe,"isParameter");E(Xwe,"isParameter");F6={$type:"ParameterReference",parameter:"parameter"};o(vW,"isParameterReference");E(vW,"isParameterReference");xc={$type:"ParserRule",dataType:"dataType",definition:"definition",entry:"entry",fragment:"fragment",inferredType:"inferredType",name:"name",parameters:"parameters",returnType:"returnType"};o(zs,"isParserRule");E(zs,"isParserRule");NC={$type:"ReferenceType",isMulti:"isMulti",referenceType:"referenceType"};o(xW,"isReferenceType");E(xW,"isReferenceType");kg={$type:"RegexToken",cardinality:"cardinality",lookahead:"lookahead",parenthesized:"parenthesized",regex:"regex"};o(bW,"isRegexToken");E(bW,"isRegexToken");z6={$type:"ReturnType",name:"name"};o(TW,"isReturnType");E(TW,"isReturnType");Sg={$type:"RuleCall",arguments:"arguments",cardinality:"cardinality",predicate:"predicate",rule:"rule"};o(jh,"isRuleCall");E(jh,"isRuleCall");dv={$type:"SimpleType",primitiveType:"primitiveType",stringType:"stringType",typeRef:"typeRef"};o(TR,"isSimpleType");E(TR,"isSimpleType");G6={$type:"StringLiteral",value:"value"};o(Kwe,"isStringLiteral");E(Kwe,"isStringLiteral");Eg={$type:"TerminalAlternatives",cardinality:"cardinality",elements:"elements",lookahead:"lookahead",parenthesized:"parenthesized"};o(CW,"isTerminalAlternatives");E(CW,"isTerminalAlternatives");bo={$type:"TerminalElement",cardinality:"cardinality",lookahead:"lookahead",parenthesized:"parenthesized"};o(Zwe,"isTerminalElement");E(Zwe,"isTerminalElement");Ag={$type:"TerminalGroup",cardinality:"cardinality",elements:"elements",lookahead:"lookahead",parenthesized:"parenthesized"};o(wW,"isTerminalGroup");E(wW,"isTerminalGroup");Wh={$type:"TerminalRule",definition:"definition",fragment:"fragment",hidden:"hidden",name:"name",type:"type"};o(Il,"isTerminalRule");E(Il,"isTerminalRule");Rg={$type:"TerminalRuleCall",cardinality:"cardinality",lookahead:"lookahead",parenthesized:"parenthesized",rule:"rule"};o(CR,"isTerminalRuleCall");E(CR,"isTerminalRuleCall");PC={$type:"Type",name:"name",type:"type"};o(wR,"isType");E(wR,"isType");_g={$type:"TypeAttribute",defaultValue:"defaultValue",isOptional:"isOptional",name:"name",type:"type"};o(Qwe,"isTypeAttribute");E(Qwe,"isTypeAttribute");Lg={$type:"TypeDefinition"};o(Jwe,"isTypeDefinition");E(Jwe,"isTypeDefinition");V6={$type:"UnionType",types:"types"};o(kW,"isUnionType");E(kW,"isUnionType");OC={$type:"UnorderedGroup",cardinality:"cardinality",elements:"elements"};o(kR,"isUnorderedGroup");E(kR,"isUnorderedGroup");Dg={$type:"UntilToken",cardinality:"cardinality",lookahead:"lookahead",parenthesized:"parenthesized",terminal:"terminal"};o(SW,"isUntilToken");E(SW,"isUntilToken");Ig={$type:"ValueLiteral"};o(eke,"isValueLiteral");E(eke,"isValueLiteral");fv={$type:"Wildcard",cardinality:"cardinality",lookahead:"lookahead",parenthesized:"parenthesized"};o(EW,"isWildcard");E(EW,"isWildcard");AW=class extends aW{static{o(this,"LangiumGrammarAstReflection")}static{E(this,"LangiumGrammarAstReflection")}constructor(){super(...arguments),this.types={AbstractElement:{name:xo.$type,properties:{cardinality:{name:xo.cardinality}},superTypes:[]},AbstractParserRule:{name:_C.$type,properties:{},superTypes:[ov.$type,Uo.$type]},AbstractRule:{name:ov.$type,properties:{},superTypes:[]},AbstractType:{name:Uo.$type,properties:{},superTypes:[]},Action:{name:ip.$type,properties:{cardinality:{name:ip.cardinality},feature:{name:ip.feature},inferredType:{name:ip.inferredType},operator:{name:ip.operator},type:{name:ip.type,referenceType:Uo.$type}},superTypes:[xo.$type]},Alternatives:{name:LC.$type,properties:{cardinality:{name:LC.cardinality},elements:{name:LC.elements,defaultValue:[]}},superTypes:[xo.$type]},ArrayLiteral:{name:L6.$type,properties:{elements:{name:L6.elements,defaultValue:[]}},superTypes:[Ig.$type]},ArrayType:{name:D6.$type,properties:{elementType:{name:D6.elementType}},superTypes:[Lg.$type]},Assignment:{name:ap.$type,properties:{cardinality:{name:ap.cardinality},feature:{name:ap.feature},operator:{name:ap.operator},predicate:{name:ap.predicate},terminal:{name:ap.terminal}},superTypes:[xo.$type]},BooleanLiteral:{name:I6.$type,properties:{true:{name:I6.true,defaultValue:!1}},superTypes:[op.$type,Ig.$type]},CharacterRange:{name:sp.$type,properties:{cardinality:{name:sp.cardinality},left:{name:sp.left},lookahead:{name:sp.lookahead},parenthesized:{name:sp.parenthesized,defaultValue:!1},right:{name:sp.right}},superTypes:[bo.$type]},Condition:{name:op.$type,properties:{},superTypes:[]},Conjunction:{name:DC.$type,properties:{left:{name:DC.left},right:{name:DC.right}},superTypes:[op.$type]},CrossReference:{name:lp.$type,properties:{cardinality:{name:lp.cardinality},deprecatedSyntax:{name:lp.deprecatedSyntax,defaultValue:!1},isMulti:{name:lp.isMulti,defaultValue:!1},terminal:{name:lp.terminal},type:{name:lp.type,referenceType:Uo.$type}},superTypes:[xo.$type]},Disjunction:{name:IC.$type,properties:{left:{name:IC.left},right:{name:IC.right}},superTypes:[op.$type]},EndOfFile:{name:M6.$type,properties:{cardinality:{name:M6.cardinality}},superTypes:[xo.$type]},Grammar:{name:Vh.$type,properties:{imports:{name:Vh.imports,defaultValue:[]},interfaces:{name:Vh.interfaces,defaultValue:[]},isDeclared:{name:Vh.isDeclared,defaultValue:!1},name:{name:Vh.name},rules:{name:Vh.rules,defaultValue:[]},types:{name:Vh.types,defaultValue:[]}},superTypes:[]},GrammarImport:{name:N6.$type,properties:{path:{name:N6.path}},superTypes:[]},Group:{name:Cg.$type,properties:{cardinality:{name:Cg.cardinality},elements:{name:Cg.elements,defaultValue:[]},guardCondition:{name:Cg.guardCondition},predicate:{name:Cg.predicate}},superTypes:[xo.$type]},InferredType:{name:P6.$type,properties:{name:{name:P6.name}},superTypes:[Uo.$type]},InfixRule:{name:Du.$type,properties:{call:{name:Du.call},dataType:{name:Du.dataType},inferredType:{name:Du.inferredType},name:{name:Du.name},operators:{name:Du.operators},parameters:{name:Du.parameters,defaultValue:[]},returnType:{name:Du.returnType,referenceType:Uo.$type}},superTypes:[_C.$type]},InfixRuleOperatorList:{name:MC.$type,properties:{associativity:{name:MC.associativity},operators:{name:MC.operators,defaultValue:[]}},superTypes:[]},InfixRuleOperators:{name:O6.$type,properties:{precedences:{name:O6.precedences,defaultValue:[]}},superTypes:[]},Interface:{name:lv.$type,properties:{attributes:{name:lv.attributes,defaultValue:[]},name:{name:lv.name},superTypes:{name:lv.superTypes,defaultValue:[],referenceType:Uo.$type}},superTypes:[Uo.$type]},Keyword:{name:cv.$type,properties:{cardinality:{name:cv.cardinality},predicate:{name:cv.predicate},value:{name:cv.value}},superTypes:[xo.$type]},NamedArgument:{name:uv.$type,properties:{calledByName:{name:uv.calledByName,defaultValue:!1},parameter:{name:uv.parameter,referenceType:hv.$type},value:{name:uv.value}},superTypes:[]},NegatedToken:{name:wg.$type,properties:{cardinality:{name:wg.cardinality},lookahead:{name:wg.lookahead},parenthesized:{name:wg.parenthesized,defaultValue:!1},terminal:{name:wg.terminal}},superTypes:[bo.$type]},Negation:{name:B6.$type,properties:{value:{name:B6.value}},superTypes:[op.$type]},NumberLiteral:{name:$6.$type,properties:{value:{name:$6.value}},superTypes:[Ig.$type]},Parameter:{name:hv.$type,properties:{name:{name:hv.name}},superTypes:[]},ParameterReference:{name:F6.$type,properties:{parameter:{name:F6.parameter,referenceType:hv.$type}},superTypes:[op.$type]},ParserRule:{name:xc.$type,properties:{dataType:{name:xc.dataType},definition:{name:xc.definition},entry:{name:xc.entry,defaultValue:!1},fragment:{name:xc.fragment,defaultValue:!1},inferredType:{name:xc.inferredType},name:{name:xc.name},parameters:{name:xc.parameters,defaultValue:[]},returnType:{name:xc.returnType,referenceType:Uo.$type}},superTypes:[_C.$type]},ReferenceType:{name:NC.$type,properties:{isMulti:{name:NC.isMulti,defaultValue:!1},referenceType:{name:NC.referenceType}},superTypes:[Lg.$type]},RegexToken:{name:kg.$type,properties:{cardinality:{name:kg.cardinality},lookahead:{name:kg.lookahead},parenthesized:{name:kg.parenthesized,defaultValue:!1},regex:{name:kg.regex}},superTypes:[bo.$type]},ReturnType:{name:z6.$type,properties:{name:{name:z6.name}},superTypes:[]},RuleCall:{name:Sg.$type,properties:{arguments:{name:Sg.arguments,defaultValue:[]},cardinality:{name:Sg.cardinality},predicate:{name:Sg.predicate},rule:{name:Sg.rule,referenceType:ov.$type}},superTypes:[xo.$type]},SimpleType:{name:dv.$type,properties:{primitiveType:{name:dv.primitiveType},stringType:{name:dv.stringType},typeRef:{name:dv.typeRef,referenceType:Uo.$type}},superTypes:[Lg.$type]},StringLiteral:{name:G6.$type,properties:{value:{name:G6.value}},superTypes:[Ig.$type]},TerminalAlternatives:{name:Eg.$type,properties:{cardinality:{name:Eg.cardinality},elements:{name:Eg.elements,defaultValue:[]},lookahead:{name:Eg.lookahead},parenthesized:{name:Eg.parenthesized,defaultValue:!1}},superTypes:[bo.$type]},TerminalElement:{name:bo.$type,properties:{cardinality:{name:bo.cardinality},lookahead:{name:bo.lookahead},parenthesized:{name:bo.parenthesized,defaultValue:!1}},superTypes:[xo.$type]},TerminalGroup:{name:Ag.$type,properties:{cardinality:{name:Ag.cardinality},elements:{name:Ag.elements,defaultValue:[]},lookahead:{name:Ag.lookahead},parenthesized:{name:Ag.parenthesized,defaultValue:!1}},superTypes:[bo.$type]},TerminalRule:{name:Wh.$type,properties:{definition:{name:Wh.definition},fragment:{name:Wh.fragment,defaultValue:!1},hidden:{name:Wh.hidden,defaultValue:!1},name:{name:Wh.name},type:{name:Wh.type}},superTypes:[ov.$type]},TerminalRuleCall:{name:Rg.$type,properties:{cardinality:{name:Rg.cardinality},lookahead:{name:Rg.lookahead},parenthesized:{name:Rg.parenthesized,defaultValue:!1},rule:{name:Rg.rule,referenceType:Wh.$type}},superTypes:[bo.$type]},Type:{name:PC.$type,properties:{name:{name:PC.name},type:{name:PC.type}},superTypes:[Uo.$type]},TypeAttribute:{name:_g.$type,properties:{defaultValue:{name:_g.defaultValue},isOptional:{name:_g.isOptional,defaultValue:!1},name:{name:_g.name},type:{name:_g.type}},superTypes:[]},TypeDefinition:{name:Lg.$type,properties:{},superTypes:[]},UnionType:{name:V6.$type,properties:{types:{name:V6.types,defaultValue:[]}},superTypes:[Lg.$type]},UnorderedGroup:{name:OC.$type,properties:{cardinality:{name:OC.cardinality},elements:{name:OC.elements,defaultValue:[]}},superTypes:[xo.$type]},UntilToken:{name:Dg.$type,properties:{cardinality:{name:Dg.cardinality},lookahead:{name:Dg.lookahead},parenthesized:{name:Dg.parenthesized,defaultValue:!1},terminal:{name:Dg.terminal}},superTypes:[bo.$type]},ValueLiteral:{name:Ig.$type,properties:{},superTypes:[]},Wildcard:{name:fv.$type,properties:{cardinality:{name:fv.cardinality},lookahead:{name:fv.lookahead},parenthesized:{name:fv.parenthesized,defaultValue:!1}},superTypes:[bo.$type]}}}},Tr=new AW;o(tke,"getDatatypeNode");E(tke,"getDatatypeNode");o(Ev,"streamCst");E(Ev,"streamCst");o(rke,"flattenCst");E(rke,"flattenCst");o(RW,"isChildNode");E(RW,"isChildNode");o(XC,"tokenToRange");E(XC,"tokenToRange");o(Av,"toDocumentSegment");E(Av,"toDocumentSegment");(function(e){e[e.Before=0]="Before",e[e.After=1]="After",e[e.OverlapFront=2]="OverlapFront",e[e.OverlapBack=3]="OverlapBack",e[e.Inside=4]="Inside",e[e.Outside=5]="Outside"})(Mu||(Mu={}));o(_W,"compareRange");E(_W,"compareRange");o(LW,"inRange");E(LW,"inRange");DW=/^[\w\p{L}]$/u;o(nke,"findDeclarationNodeAtOffset");E(nke,"findDeclarationNodeAtOffset");o(IW,"findCommentNode");E(IW,"findCommentNode");o(W6,"isCommentNode");E(W6,"isCommentNode");o(SR,"findLeafNodeAtOffset");E(SR,"findLeafNodeAtOffset");o(MW,"findLeafNodeBeforeOffset");E(MW,"findLeafNodeBeforeOffset");o(NW,"binarySearch");E(NW,"binarySearch");o(PW,"getPreviousNode");E(PW,"getPreviousNode");o(ike,"getNextNode");E(ike,"getNextNode");o(ake,"getStartlineNode");E(ake,"getStartlineNode");o(ske,"getInteriorNodes");E(ske,"getInteriorNodes");o(oke,"getCommonParent");E(oke,"getCommonParent");o(CG,"getParentChain");E(CG,"getParentChain");OW={};yp(OW,{findAssignment:o(()=>XW,"findAssignment"),findNameAssignment:o(()=>MR,"findNameAssignment"),findNodeForKeyword:o(()=>jW,"findNodeForKeyword"),findNodeForProperty:o(()=>LR,"findNodeForProperty"),findNodesForKeyword:o(()=>pke,"findNodesForKeyword"),findNodesForKeywordInternal:o(()=>IR,"findNodesForKeywordInternal"),findNodesForProperty:o(()=>YW,"findNodesForProperty"),getActionAtElement:o(()=>ZW,"getActionAtElement"),getActionType:o(()=>JW,"getActionType"),getAllReachableRules:o(()=>_R,"getAllReachableRules"),getAllRulesUsedForCrossReferences:o(()=>fke,"getAllRulesUsedForCrossReferences"),getCrossReferenceTerminal:o(()=>HW,"getCrossReferenceTerminal"),getEntryRule:o(()=>VW,"getEntryRule"),getExplicitRuleType:o(()=>gw,"getExplicitRuleType"),getHiddenRules:o(()=>WW,"getHiddenRules"),getRuleType:o(()=>eq,"getRuleType"),getRuleTypeName:o(()=>xke,"getRuleTypeName"),getTypeName:o(()=>jg,"getTypeName"),isArrayCardinality:o(()=>gke,"isArrayCardinality"),isArrayOperator:o(()=>yke,"isArrayOperator"),isCommentTerminal:o(()=>UW,"isCommentTerminal"),isDataType:o(()=>vke,"isDataType"),isDataTypeRule:o(()=>mw,"isDataTypeRule"),isOptionalCardinality:o(()=>mke,"isOptionalCardinality"),terminalRegex:o(()=>yw,"terminalRegex")});ER=class extends Error{static{o(this,"ErrorWithLocation")}static{E(this,"ErrorWithLocation")}constructor(e,t){super(e?`${t} at ${e.range.start.line}:${e.range.start.character}`:t)}};o(vp,"assertUnreachable");E(vp,"assertUnreachable");o(BW,"assertCondition");E(BW,"assertCondition");$W={};yp($W,{NEWLINE_REGEXP:o(()=>cke,"NEWLINE_REGEXP"),escapeRegExp:o(()=>Nv,"escapeRegExp"),getTerminalParts:o(()=>hke,"getTerminalParts"),isMultilineComment:o(()=>FW,"isMultilineComment"),isWhitespace:o(()=>RR,"isWhitespace"),partialMatches:o(()=>zW,"partialMatches"),partialRegExp:o(()=>GW,"partialRegExp"),whitespaceCharacters:o(()=>dke,"whitespaceCharacters")});o(Dr,"cc");E(Dr,"cc");o(a6,"insertToSet");E(a6,"insertToSet");o(rv,"addFlag");E(rv,"addFlag");o(fg,"ASSERT_EXISTS");E(fg,"ASSERT_EXISTS");o(kC,"ASSERT_NEVER_REACH_HERE");E(kC,"ASSERT_NEVER_REACH_HERE");o(wG,"isCharacter");E(wG,"isCharacter");q6=[];for(let e=Dr("0");e<=Dr("9");e++)q6.push(e);H6=[Dr("_")].concat(q6);for(let e=Dr("a");e<=Dr("z");e++)H6.push(e);for(let e=Dr("A");e<=Dr("Z");e++)H6.push(e);BTe=[Dr(" "),Dr("\f"),Dr(`
+`),Dr("\r"),Dr("	"),Dr("\v"),Dr("	"),Dr("\xA0"),Dr("\u1680"),Dr("\u2000"),Dr("\u2001"),Dr("\u2002"),Dr("\u2003"),Dr("\u2004"),Dr("\u2005"),Dr("\u2006"),Dr("\u2007"),Dr("\u2008"),Dr("\u2009"),Dr("\u200A"),Dr("\u2028"),Dr("\u2029"),Dr("\u202F"),Dr("\u205F"),Dr("\u3000"),Dr("\uFEFF")],ayt=/[0-9a-fA-F]/,MA=/[0-9]/,syt=/[1-9]/,lke=class{static{o(this,"RegExpParser")}static{E(this,"RegExpParser")}constructor(){this.idx=0,this.input="",this.groupIdx=0}saveState(){return{idx:this.idx,input:this.input,groupIdx:this.groupIdx}}restoreState(e){this.idx=e.idx,this.input=e.input,this.groupIdx=e.groupIdx}pattern(e){this.idx=0,this.input=e,this.groupIdx=0,this.consumeChar("/");let t=this.disjunction();this.consumeChar("/");let r={type:"Flags",loc:{begin:this.idx,end:e.length},global:!1,ignoreCase:!1,multiLine:!1,unicode:!1,sticky:!1};for(;this.isRegExpFlag();)switch(this.popChar()){case"g":rv(r,"global");break;case"i":rv(r,"ignoreCase");break;case"m":rv(r,"multiLine");break;case"u":rv(r,"unicode");break;case"y":rv(r,"sticky");break}if(this.idx!==this.input.length)throw Error("Redundant input: "+this.input.substring(this.idx));return{type:"Pattern",flags:r,value:t,loc:this.loc(0)}}disjunction(){let e=[],t=this.idx;for(e.push(this.alternative());this.peekChar()==="|";)this.consumeChar("|"),e.push(this.alternative());return{type:"Disjunction",value:e,loc:this.loc(t)}}alternative(){let e=[],t=this.idx;for(;this.isTerm();)e.push(this.term());return{type:"Alternative",value:e,loc:this.loc(t)}}term(){return this.isAssertion()?this.assertion():this.atom()}assertion(){let e=this.idx;switch(this.popChar()){case"^":return{type:"StartAnchor",loc:this.loc(e)};case"$":return{type:"EndAnchor",loc:this.loc(e)};case"\\":switch(this.popChar()){case"b":return{type:"WordBoundary",loc:this.loc(e)};case"B":return{type:"NonWordBoundary",loc:this.loc(e)}}throw Error("Invalid Assertion Escape");case"(":this.consumeChar("?");let t;switch(this.popChar()){case"=":t="Lookahead";break;case"!":t="NegativeLookahead";break;case"<":{switch(this.popChar()){case"=":t="Lookbehind";break;case"!":t="NegativeLookbehind"}break}}fg(t);let r=this.disjunction();return this.consumeChar(")"),{type:t,value:r,loc:this.loc(e)}}return kC()}quantifier(e=!1){let t,r=this.idx;switch(this.popChar()){case"*":t={atLeast:0,atMost:1/0};break;case"+":t={atLeast:1,atMost:1/0};break;case"?":t={atLeast:0,atMost:1};break;case"{":let n=this.integerIncludingZero();switch(this.popChar()){case"}":t={atLeast:n,atMost:n};break;case",":let i;this.isDigit()?(i=this.integerIncludingZero(),t={atLeast:n,atMost:i}):t={atLeast:n,atMost:1/0},this.consumeChar("}");break}if(e===!0&&t===void 0)return;fg(t);break}if(!(e===!0&&t===void 0)&&fg(t))return this.peekChar(0)==="?"?(this.consumeChar("?"),t.greedy=!1):t.greedy=!0,t.type="Quantifier",t.loc=this.loc(r),t}atom(){let e,t=this.idx;switch(this.peekChar()){case".":e=this.dotAll();break;case"\\":e=this.atomEscape();break;case"[":e=this.characterClass();break;case"(":e=this.group();break}return e===void 0&&this.isPatternCharacter()&&(e=this.patternCharacter()),fg(e)?(e.loc=this.loc(t),this.isQuantifier()&&(e.quantifier=this.quantifier()),e):kC()}dotAll(){return this.consumeChar("."),{type:"Set",complement:!0,value:[Dr(`
+`),Dr("\r"),Dr("\u2028"),Dr("\u2029")]}}atomEscape(){switch(this.consumeChar("\\"),this.peekChar()){case"1":case"2":case"3":case"4":case"5":case"6":case"7":case"8":case"9":return this.decimalEscapeAtom();case"d":case"D":case"s":case"S":case"w":case"W":return this.characterClassEscape();case"f":case"n":case"r":case"t":case"v":return this.controlEscapeAtom();case"c":return this.controlLetterEscapeAtom();case"0":return this.nulCharacterAtom();case"x":return this.hexEscapeSequenceAtom();case"u":return this.regExpUnicodeEscapeSequenceAtom();default:return this.identityEscapeAtom()}}decimalEscapeAtom(){return{type:"GroupBackReference",value:this.positiveInteger()}}characterClassEscape(){let e,t=!1;switch(this.popChar()){case"d":e=q6;break;case"D":e=q6,t=!0;break;case"s":e=BTe;break;case"S":e=BTe,t=!0;break;case"w":e=H6;break;case"W":e=H6,t=!0;break}return fg(e)?{type:"Set",value:e,complement:t}:kC()}controlEscapeAtom(){let e;switch(this.popChar()){case"f":e=Dr("\f");break;case"n":e=Dr(`
+`);break;case"r":e=Dr("\r");break;case"t":e=Dr("	");break;case"v":e=Dr("\v");break}return fg(e)?{type:"Character",value:e}:kC()}controlLetterEscapeAtom(){this.consumeChar("c");let e=this.popChar();if(/[a-zA-Z]/.test(e)===!1)throw Error("Invalid ");return{type:"Character",value:e.toUpperCase().charCodeAt(0)-64}}nulCharacterAtom(){return this.consumeChar("0"),{type:"Character",value:Dr("\0")}}hexEscapeSequenceAtom(){return this.consumeChar("x"),this.parseHexDigits(2)}regExpUnicodeEscapeSequenceAtom(){return this.consumeChar("u"),this.parseHexDigits(4)}identityEscapeAtom(){let e=this.popChar();return{type:"Character",value:Dr(e)}}classPatternCharacterAtom(){switch(this.peekChar()){case`
+`:case"\r":case"\u2028":case"\u2029":case"\\":case"]":throw Error("TBD");default:let e=this.popChar();return{type:"Character",value:Dr(e)}}}characterClass(){let e=[],t=!1;for(this.consumeChar("["),this.peekChar(0)==="^"&&(this.consumeChar("^"),t=!0);this.isClassAtom();){let r=this.classAtom(),n=r.type==="Character";if(wG(r)&&this.isRangeDash()){this.consumeChar("-");let i=this.classAtom(),a=i.type==="Character";if(wG(i)){if(i.value<r.value)throw Error("Range out of order in character class");e.push({from:r.value,to:i.value})}else a6(r.value,e),e.push(Dr("-")),a6(i.value,e)}else a6(r.value,e)}return this.consumeChar("]"),{type:"Set",complement:t,value:e}}classAtom(){switch(this.peekChar()){case"]":case`
+`:case"\r":case"\u2028":case"\u2029":throw Error("TBD");case"\\":return this.classEscape();default:return this.classPatternCharacterAtom()}}classEscape(){switch(this.consumeChar("\\"),this.peekChar()){case"b":return this.consumeChar("b"),{type:"Character",value:Dr("\b")};case"d":case"D":case"s":case"S":case"w":case"W":return this.characterClassEscape();case"f":case"n":case"r":case"t":case"v":return this.controlEscapeAtom();case"c":return this.controlLetterEscapeAtom();case"0":return this.nulCharacterAtom();case"x":return this.hexEscapeSequenceAtom();case"u":return this.regExpUnicodeEscapeSequenceAtom();default:return this.identityEscapeAtom()}}group(){let e=!0;switch(this.consumeChar("("),this.peekChar(0)){case"?":this.consumeChar("?"),this.consumeChar(":"),e=!1;break;default:this.groupIdx++;break}let t=this.disjunction();this.consumeChar(")");let r={type:"Group",capturing:e,value:t};return e&&(r.idx=this.groupIdx),r}positiveInteger(){let e=this.popChar();if(syt.test(e)===!1)throw Error("Expecting a positive integer");for(;MA.test(this.peekChar(0));)e+=this.popChar();return parseInt(e,10)}integerIncludingZero(){let e=this.popChar();if(MA.test(e)===!1)throw Error("Expecting an integer");for(;MA.test(this.peekChar(0));)e+=this.popChar();return parseInt(e,10)}patternCharacter(){let e=this.popChar();switch(e){case`
+`:case"\r":case"\u2028":case"\u2029":case"^":case"$":case"\\":case".":case"*":case"+":case"?":case"(":case")":case"[":case"|":throw Error("TBD");default:return{type:"Character",value:Dr(e)}}}isRegExpFlag(){switch(this.peekChar(0)){case"g":case"i":case"m":case"u":case"y":return!0;default:return!1}}isRangeDash(){return this.peekChar()==="-"&&this.isClassAtom(1)}isDigit(){return MA.test(this.peekChar(0))}isClassAtom(e=0){switch(this.peekChar(e)){case"]":case`
 `:case"\r":case"\u2028":case"\u2029":return!1;default:return!0}}isTerm(){return this.isAtom()||this.isAssertion()}isAtom(){if(this.isPatternCharacter())return!0;switch(this.peekChar(0)){case".":case"\\":case"[":case"(":return!0;default:return!1}}isAssertion(){switch(this.peekChar(0)){case"^":case"$":return!0;case"\\":switch(this.peekChar(1)){case"b":case"B":return!0;default:return!1}case"(":return this.peekChar(1)==="?"&&(this.peekChar(2)==="="||this.peekChar(2)==="!"||this.peekChar(2)==="<"&&(this.peekChar(3)==="="||this.peekChar(3)==="!"));default:return!1}}isQuantifier(){let e=this.saveState();try{return this.quantifier(!0)!==void 0}catch{return!1}finally{this.restoreState(e)}}isPatternCharacter(){switch(this.peekChar()){case"^":case"$":case"\\":case".":case"*":case"+":case"?":case"(":case")":case"[":case"|":case"/":case`
-`:case"\r":case"\u2028":case"\u2029":return!1;default:return!0}}parseHexDigits(e){let t="";for(let i=0;i<e;i++){let n=this.popChar();if(Klt.test(n)===!1)throw Error("Expecting a HexDecimal digits");t+=n}return{type:"Character",value:parseInt(t,16)}}peekChar(e=0){return this.input[this.idx+e]}popChar(){let e=this.peekChar(0);return this.consumeChar(void 0),e}consumeChar(e){if(e!==void 0&&this.input[this.idx]!==e)throw Error("Expected: '"+e+"' but found: '"+this.input[this.idx]+"' at offset: "+this.idx);if(this.idx>=this.input.length)throw Error("Unexpected end of input");this.idx++}loc(e){return{begin:e,end:this.idx}}},tA=class{static{o(this,"BaseRegExpVisitor")}static{S(this,"BaseRegExpVisitor")}visitChildren(e){for(let t in e){let r=e[t];e.hasOwnProperty(t)&&(r.type!==void 0?this.visit(r):Array.isArray(r)&&r.forEach(i=>{this.visit(i)},this))}}visit(e){switch(e.type){case"Pattern":this.visitPattern(e);break;case"Flags":this.visitFlags(e);break;case"Disjunction":this.visitDisjunction(e);break;case"Alternative":this.visitAlternative(e);break;case"StartAnchor":this.visitStartAnchor(e);break;case"EndAnchor":this.visitEndAnchor(e);break;case"WordBoundary":this.visitWordBoundary(e);break;case"NonWordBoundary":this.visitNonWordBoundary(e);break;case"Lookahead":this.visitLookahead(e);break;case"NegativeLookahead":this.visitNegativeLookahead(e);break;case"Lookbehind":this.visitLookbehind(e);break;case"NegativeLookbehind":this.visitNegativeLookbehind(e);break;case"Character":this.visitCharacter(e);break;case"Set":this.visitSet(e);break;case"Group":this.visitGroup(e);break;case"GroupBackReference":this.visitGroupBackReference(e);break;case"Quantifier":this.visitQuantifier(e);break}this.visitChildren(e)}visitPattern(e){}visitFlags(e){}visitDisjunction(e){}visitAlternative(e){}visitStartAnchor(e){}visitEndAnchor(e){}visitWordBoundary(e){}visitNonWordBoundary(e){}visitLookahead(e){}visitNegativeLookahead(e){}visitLookbehind(e){}visitNegativeLookbehind(e){}visitCharacter(e){}visitSet(e){}visitGroup(e){}visitGroupBackReference(e){}visitQuantifier(e){}},Fve=/\r?\n/gm,$ve=new Bve,Qlt=class extends tA{static{o(this,"TerminalRegExpVisitor")}static{S(this,"TerminalRegExpVisitor")}constructor(){super(...arguments),this.isStarting=!0,this.endRegexpStack=[],this.multiline=!1}get endRegex(){return this.endRegexpStack.join("")}reset(e){this.multiline=!1,this.regex=e,this.startRegexp="",this.isStarting=!0,this.endRegexpStack=[]}visitGroup(e){e.quantifier&&(this.isStarting=!1,this.endRegexpStack=[])}visitCharacter(e){let t=String.fromCharCode(e.value);if(!this.multiline&&t===`
-`&&(this.multiline=!0),e.quantifier)this.isStarting=!1,this.endRegexpStack=[];else{let r=sy(t);this.endRegexpStack.push(r),this.isStarting&&(this.startRegexp+=r)}}visitSet(e){if(!this.multiline){let t=this.regex.substring(e.loc.begin,e.loc.end),r=new RegExp(t);this.multiline=!!`
-`.match(r)}if(e.quantifier)this.isStarting=!1,this.endRegexpStack=[];else{let t=this.regex.substring(e.loc.begin,e.loc.end);this.endRegexpStack.push(t),this.isStarting&&(this.startRegexp+=t)}}visitChildren(e){e.type==="Group"&&e.quantifier||super.visitChildren(e)}},N0=new Qlt;o(zve,"getTerminalParts");S(zve,"getTerminalParts");o(j$,"isMultilineComment");S(j$,"isMultilineComment");Gve=`\f
-\r	\v \xA0\u1680\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200A\u2028\u2029\u202F\u205F\u3000\uFEFF`.split("");o(rA,"isWhitespace");S(rA,"isWhitespace");o(sy,"escapeRegExp");S(sy,"escapeRegExp");o(X$,"partialMatches");S(X$,"partialMatches");o(K$,"partialRegExp");S(K$,"partialRegExp");o(Z$,"getEntryRule");S(Z$,"getEntryRule");o(Q$,"getHiddenRules");S(Q$,"getHiddenRules");o(iA,"getAllReachableRules");S(iA,"getAllReachableRules");o(J$,"ruleDfs");S(J$,"ruleDfs");o(Vve,"getAllRulesUsedForCrossReferences");S(Vve,"getAllRulesUsedForCrossReferences");o(ez,"getCrossReferenceTerminal");S(ez,"getCrossReferenceTerminal");o(tz,"isCommentTerminal");S(tz,"isCommentTerminal");o(rz,"findNodesForProperty");S(rz,"findNodesForProperty");o(nA,"findNodeForProperty");S(nA,"findNodeForProperty");o(aA,"findNodesForPropertyInternal");S(aA,"findNodesForPropertyInternal");o(Wve,"findNodesForKeyword");S(Wve,"findNodesForKeyword");o(iz,"findNodeForKeyword");S(iz,"findNodeForKeyword");o(sA,"findNodesForKeywordInternal");S(sA,"findNodesForKeywordInternal");o(nz,"findAssignment");S(nz,"findAssignment");o(oA,"findNameAssignment");S(oA,"findNameAssignment");o(az,"findNameAssignmentInternal");S(az,"findNameAssignmentInternal");o(sz,"getActionAtElement");S(sz,"getActionAtElement");o(qve,"isOptionalCardinality");S(qve,"isOptionalCardinality");o(Uve,"isArrayCardinality");S(Uve,"isArrayCardinality");o(Hve,"isArrayOperator");S(Hve,"isArrayOperator");o(wT,"isDataTypeRule");S(wT,"isDataTypeRule");o(oz,"isDataTypeRuleInternal");S(oz,"isDataTypeRuleInternal");o(Yve,"isDataType");S(Yve,"isDataType");o(T5,"isDataTypeInternal");S(T5,"isDataTypeInternal");o(ST,"getExplicitRuleType");S(ST,"getExplicitRuleType");o($0,"getTypeName");S($0,"getTypeName");o(lz,"getActionType");S(lz,"getActionType");o(jve,"getRuleTypeName");S(jve,"getRuleTypeName");o(cz,"getRuleType");S(cz,"getRuleType");o(ET,"terminalRegex");S(ET,"terminalRegex");uz=/[\s\S]/.source;o(X0,"abstractElementToRegex");S(X0,"abstractElementToRegex");o(Xve,"terminalAlternativesToRegex");S(Xve,"terminalAlternativesToRegex");o(Kve,"terminalGroupToRegex");S(Kve,"terminalGroupToRegex");o(Zve,"untilTokenToRegex");S(Zve,"untilTokenToRegex");o(Qve,"negateTokenToRegex");S(Qve,"negateTokenToRegex");o(Jve,"characterRangeToRegex");S(Jve,"characterRangeToRegex");o(VE,"keywordToRegex");S(VE,"keywordToRegex");o(Jc,"withCardinality");S(Jc,"withCardinality");o(hz,"createGrammarConfig");S(hz,"createGrammarConfig");Jlt=typeof global=="object"&&global&&global.Object===Object&&global,exe=Jlt,ect=typeof self=="object"&&self&&self.Object===Object&&self,tct=exe||ect||Function("return this")(),tu=tct,rct=tu.Symbol,el=rct,txe=Object.prototype,ict=txe.hasOwnProperty,nct=txe.toString,x2=el?el.toStringTag:void 0;o(rxe,"getRawTag");S(rxe,"getRawTag");act=rxe,sct=Object.prototype,oct=sct.toString;o(ixe,"objectToString");S(ixe,"objectToString");lct=ixe,cct="[object Null]",uct="[object Undefined]",v1e=el?el.toStringTag:void 0;o(nxe,"baseGetTag");S(nxe,"baseGetTag");Tf=nxe;o(axe,"isObjectLike");S(axe,"isObjectLike");Yl=axe,hct="[object Symbol]";o(sxe,"isSymbol");S(sxe,"isSymbol");lA=sxe;o(oxe,"arrayMap");S(oxe,"arrayMap");AT=oxe,dct=Array.isArray,Kr=dct,fct=1/0,x1e=el?el.prototype:void 0,b1e=x1e?x1e.toString:void 0;o(dz,"baseToString");S(dz,"baseToString");pct=dz,mct=/\s/;o(lxe,"trimmedEndIndex");S(lxe,"trimmedEndIndex");gct=lxe,yct=/^\s+/;o(cxe,"baseTrim");S(cxe,"baseTrim");vct=cxe;o(uxe,"isObject");S(uxe,"isObject");tl=uxe,T1e=NaN,xct=/^[-+]0x[0-9a-f]+$/i,bct=/^0b[01]+$/i,Tct=/^0o[0-7]+$/i,Cct=parseInt;o(hxe,"toNumber");S(hxe,"toNumber");kct=hxe,C1e=1/0,wct=17976931348623157e292;o(dxe,"toFinite");S(dxe,"toFinite");Sct=dxe;o(fxe,"toInteger");S(fxe,"toInteger");_T=fxe;o(pxe,"identity");S(pxe,"identity");J1=pxe,Ect="[object AsyncFunction]",Act="[object Function]",_ct="[object GeneratorFunction]",Dct="[object Proxy]";o(mxe,"isFunction");S(mxe,"isFunction");vh=mxe,Rct=tu["__core-js_shared__"],YP=Rct,k1e=(function(){var e=/[^.]+$/.exec(YP&&YP.keys&&YP.keys.IE_PROTO||"");return e?"Symbol(src)_1."+e:""})();o(gxe,"isMasked");S(gxe,"isMasked");Lct=gxe,Mct=Function.prototype,Nct=Mct.toString;o(yxe,"toSource");S(yxe,"toSource");K0=yxe,Ict=/[\\^$.*+?()[\]{}|]/g,Oct=/^\[object .+?Constructor\]$/,Pct=Function.prototype,Bct=Object.prototype,Fct=Pct.toString,$ct=Bct.hasOwnProperty,zct=RegExp("^"+Fct.call($ct).replace(Ict,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");o(vxe,"baseIsNative");S(vxe,"baseIsNative");Gct=vxe;o(xxe,"getValue");S(xxe,"getValue");Vct=xxe;o(bxe,"getNative");S(bxe,"getNative");Z0=bxe,Wct=Z0(tu,"WeakMap"),gF=Wct,w1e=Object.create,qct=(function(){function e(){}return o(e,"object"),S(e,"object"),function(t){if(!tl(t))return{};if(w1e)return w1e(t);e.prototype=t;var r=new e;return e.prototype=void 0,r}})(),Uct=qct;o(Txe,"apply");S(Txe,"apply");Hct=Txe;o(Cxe,"noop");S(Cxe,"noop");Un=Cxe;o(kxe,"copyArray");S(kxe,"copyArray");Yct=kxe,jct=800,Xct=16,Kct=Date.now;o(wxe,"shortOut");S(wxe,"shortOut");Zct=wxe;o(Sxe,"constant");S(Sxe,"constant");Qct=Sxe,Jct=(function(){try{var e=Z0(Object,"defineProperty");return e({},"",{}),e}catch{}})(),C5=Jct,eut=C5?function(e,t){return C5(e,"toString",{configurable:!0,enumerable:!1,value:Qct(t),writable:!0})}:J1,tut=eut,rut=Zct(tut),iut=rut;o(Exe,"arrayEach");S(Exe,"arrayEach");Axe=Exe;o(_xe,"baseFindIndex");S(_xe,"baseFindIndex");Dxe=_xe;o(Rxe,"baseIsNaN");S(Rxe,"baseIsNaN");nut=Rxe;o(Lxe,"strictIndexOf");S(Lxe,"strictIndexOf");aut=Lxe;o(Mxe,"baseIndexOf");S(Mxe,"baseIndexOf");fz=Mxe;o(Nxe,"arrayIncludes");S(Nxe,"arrayIncludes");Ixe=Nxe,sut=9007199254740991,out=/^(?:0|[1-9]\d*)$/;o(Oxe,"isIndex");S(Oxe,"isIndex");cA=Oxe;o(Pxe,"baseAssignValue");S(Pxe,"baseAssignValue");pz=Pxe;o(Bxe,"eq");S(Bxe,"eq");DT=Bxe,lut=Object.prototype,cut=lut.hasOwnProperty;o(Fxe,"assignValue");S(Fxe,"assignValue");uA=Fxe;o($xe,"copyObject");S($xe,"copyObject");RT=$xe,S1e=Math.max;o(zxe,"overRest");S(zxe,"overRest");uut=zxe;o(Gxe,"baseRest");S(Gxe,"baseRest");mz=Gxe,hut=9007199254740991;o(Vxe,"isLength");S(Vxe,"isLength");gz=Vxe;o(Wxe,"isArrayLike");S(Wxe,"isArrayLike");ru=Wxe;o(qxe,"isIterateeCall");S(qxe,"isIterateeCall");hA=qxe;o(Uxe,"createAssigner");S(Uxe,"createAssigner");dut=Uxe,fut=Object.prototype;o(Hxe,"isPrototype");S(Hxe,"isPrototype");LT=Hxe;o(Yxe,"baseTimes");S(Yxe,"baseTimes");put=Yxe,mut="[object Arguments]";o(jxe,"baseIsArguments");S(jxe,"baseIsArguments");E1e=jxe,Xxe=Object.prototype,gut=Xxe.hasOwnProperty,yut=Xxe.propertyIsEnumerable,vut=E1e((function(){return arguments})())?E1e:function(e){return Yl(e)&&gut.call(e,"callee")&&!yut.call(e,"callee")},dA=vut;o(Kxe,"stubFalse");S(Kxe,"stubFalse");xut=Kxe,Zxe=typeof exports=="object"&&exports&&!exports.nodeType&&exports,A1e=Zxe&&typeof module=="object"&&module&&!module.nodeType&&module,but=A1e&&A1e.exports===Zxe,_1e=but?tu.Buffer:void 0,Tut=_1e?_1e.isBuffer:void 0,Cut=Tut||xut,aT=Cut,kut="[object Arguments]",wut="[object Array]",Sut="[object Boolean]",Eut="[object Date]",Aut="[object Error]",_ut="[object Function]",Dut="[object Map]",Rut="[object Number]",Lut="[object Object]",Mut="[object RegExp]",Nut="[object Set]",Iut="[object String]",Out="[object WeakMap]",Put="[object ArrayBuffer]",But="[object DataView]",Fut="[object Float32Array]",$ut="[object Float64Array]",zut="[object Int8Array]",Gut="[object Int16Array]",Vut="[object Int32Array]",Wut="[object Uint8Array]",qut="[object Uint8ClampedArray]",Uut="[object Uint16Array]",Hut="[object Uint32Array]",Gi={};Gi[Fut]=Gi[$ut]=Gi[zut]=Gi[Gut]=Gi[Vut]=Gi[Wut]=Gi[qut]=Gi[Uut]=Gi[Hut]=!0;Gi[kut]=Gi[wut]=Gi[Put]=Gi[Sut]=Gi[But]=Gi[Eut]=Gi[Aut]=Gi[_ut]=Gi[Dut]=Gi[Rut]=Gi[Lut]=Gi[Mut]=Gi[Nut]=Gi[Iut]=Gi[Out]=!1;o(Qxe,"baseIsTypedArray");S(Qxe,"baseIsTypedArray");Yut=Qxe;o(Jxe,"baseUnary");S(Jxe,"baseUnary");MT=Jxe,ebe=typeof exports=="object"&&exports&&!exports.nodeType&&exports,Y2=ebe&&typeof module=="object"&&module&&!module.nodeType&&module,jut=Y2&&Y2.exports===ebe,jP=jut&&exe.process,Xut=(function(){try{var e=Y2&&Y2.require&&Y2.require("util").types;return e||jP&&jP.binding&&jP.binding("util")}catch{}})(),mf=Xut,D1e=mf&&mf.isTypedArray,Kut=D1e?MT(D1e):Yut,yz=Kut,Zut=Object.prototype,Qut=Zut.hasOwnProperty;o(tbe,"arrayLikeKeys");S(tbe,"arrayLikeKeys");rbe=tbe;o(ibe,"overArg");S(ibe,"overArg");nbe=ibe,Jut=nbe(Object.keys,Object),eht=Jut,tht=Object.prototype,rht=tht.hasOwnProperty;o(abe,"baseKeys");S(abe,"baseKeys");sbe=abe;o(obe,"keys");S(obe,"keys");po=obe,iht=Object.prototype,nht=iht.hasOwnProperty,aht=dut(function(e,t){if(LT(t)||ru(t)){RT(t,po(t),e);return}for(var r in t)nht.call(t,r)&&uA(e,r,t[r])}),mo=aht;o(lbe,"nativeKeysIn");S(lbe,"nativeKeysIn");sht=lbe,oht=Object.prototype,lht=oht.hasOwnProperty;o(cbe,"baseKeysIn");S(cbe,"baseKeysIn");cht=cbe;o(ube,"keysIn");S(ube,"keysIn");fA=ube,uht=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,hht=/^\w*$/;o(hbe,"isKey");S(hbe,"isKey");vz=hbe,dht=Z0(Object,"create"),sT=dht;o(dbe,"hashClear");S(dbe,"hashClear");fht=dbe;o(fbe,"hashDelete");S(fbe,"hashDelete");pht=fbe,mht="__lodash_hash_undefined__",ght=Object.prototype,yht=ght.hasOwnProperty;o(pbe,"hashGet");S(pbe,"hashGet");vht=pbe,xht=Object.prototype,bht=xht.hasOwnProperty;o(mbe,"hashHas");S(mbe,"hashHas");Tht=mbe,Cht="__lodash_hash_undefined__";o(gbe,"hashSet");S(gbe,"hashSet");kht=gbe;o(Q0,"Hash");S(Q0,"Hash");Q0.prototype.clear=fht;Q0.prototype.delete=pht;Q0.prototype.get=vht;Q0.prototype.has=Tht;Q0.prototype.set=kht;R1e=Q0;o(ybe,"listCacheClear");S(ybe,"listCacheClear");wht=ybe;o(vbe,"assocIndexOf");S(vbe,"assocIndexOf");pA=vbe,Sht=Array.prototype,Eht=Sht.splice;o(xbe,"listCacheDelete");S(xbe,"listCacheDelete");Aht=xbe;o(bbe,"listCacheGet");S(bbe,"listCacheGet");_ht=bbe;o(Tbe,"listCacheHas");S(Tbe,"listCacheHas");Dht=Tbe;o(Cbe,"listCacheSet");S(Cbe,"listCacheSet");Rht=Cbe;o(J0,"ListCache");S(J0,"ListCache");J0.prototype.clear=wht;J0.prototype.delete=Aht;J0.prototype.get=_ht;J0.prototype.has=Dht;J0.prototype.set=Rht;mA=J0,Lht=Z0(tu,"Map"),oT=Lht;o(kbe,"mapCacheClear");S(kbe,"mapCacheClear");Mht=kbe;o(wbe,"isKeyable");S(wbe,"isKeyable");Nht=wbe;o(Sbe,"getMapData");S(Sbe,"getMapData");gA=Sbe;o(Ebe,"mapCacheDelete");S(Ebe,"mapCacheDelete");Iht=Ebe;o(Abe,"mapCacheGet");S(Abe,"mapCacheGet");Oht=Abe;o(_be,"mapCacheHas");S(_be,"mapCacheHas");Pht=_be;o(Dbe,"mapCacheSet");S(Dbe,"mapCacheSet");Bht=Dbe;o(em,"MapCache");S(em,"MapCache");em.prototype.clear=Mht;em.prototype.delete=Iht;em.prototype.get=Oht;em.prototype.has=Pht;em.prototype.set=Bht;yA=em,Fht="Expected a function";o(vA,"memoize");S(vA,"memoize");vA.Cache=yA;$ht=vA,zht=500;o(Rbe,"memoizeCapped");S(Rbe,"memoizeCapped");Ght=Rbe,Vht=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,Wht=/\\(\\)?/g,qht=Ght(function(e){var t=[];return e.charCodeAt(0)===46&&t.push(""),e.replace(Vht,function(r,i,n,a){t.push(n?a.replace(Wht,"$1"):i||r)}),t}),Uht=qht;o(Lbe,"toString2");S(Lbe,"toString");Hht=Lbe;o(Mbe,"castPath");S(Mbe,"castPath");xA=Mbe,Yht=1/0;o(Nbe,"toKey");S(Nbe,"toKey");NT=Nbe;o(Ibe,"baseGet");S(Ibe,"baseGet");xz=Ibe;o(Obe,"get");S(Obe,"get");jht=Obe;o(Pbe,"arrayPush");S(Pbe,"arrayPush");bz=Pbe,L1e=el?el.isConcatSpreadable:void 0;o(Bbe,"isFlattenable");S(Bbe,"isFlattenable");Xht=Bbe;o(Tz,"baseFlatten");S(Tz,"baseFlatten");Cz=Tz;o(Fbe,"flatten");S(Fbe,"flatten");Ul=Fbe,Kht=nbe(Object.getPrototypeOf,Object),$be=Kht;o(zbe,"baseSlice");S(zbe,"baseSlice");Gbe=zbe;o(Vbe,"arrayReduce");S(Vbe,"arrayReduce");Zht=Vbe;o(Wbe,"stackClear");S(Wbe,"stackClear");Qht=Wbe;o(qbe,"stackDelete");S(qbe,"stackDelete");Jht=qbe;o(Ube,"stackGet");S(Ube,"stackGet");edt=Ube;o(Hbe,"stackHas");S(Hbe,"stackHas");tdt=Hbe,rdt=200;o(Ybe,"stackSet");S(Ybe,"stackSet");idt=Ybe;o(tm,"Stack");S(tm,"Stack");tm.prototype.clear=Qht;tm.prototype.delete=Jht;tm.prototype.get=edt;tm.prototype.has=tdt;tm.prototype.set=idt;j2=tm;o(jbe,"baseAssign");S(jbe,"baseAssign");ndt=jbe;o(Xbe,"baseAssignIn");S(Xbe,"baseAssignIn");adt=Xbe,Kbe=typeof exports=="object"&&exports&&!exports.nodeType&&exports,M1e=Kbe&&typeof module=="object"&&module&&!module.nodeType&&module,sdt=M1e&&M1e.exports===Kbe,N1e=sdt?tu.Buffer:void 0,I1e=N1e?N1e.allocUnsafe:void 0;o(Zbe,"cloneBuffer");S(Zbe,"cloneBuffer");odt=Zbe;o(Qbe,"arrayFilter");S(Qbe,"arrayFilter");kz=Qbe;o(Jbe,"stubArray");S(Jbe,"stubArray");e2e=Jbe,ldt=Object.prototype,cdt=ldt.propertyIsEnumerable,O1e=Object.getOwnPropertySymbols,udt=O1e?function(e){return e==null?[]:(e=Object(e),kz(O1e(e),function(t){return cdt.call(e,t)}))}:e2e,wz=udt;o(t2e,"copySymbols");S(t2e,"copySymbols");hdt=t2e,ddt=Object.getOwnPropertySymbols,fdt=ddt?function(e){for(var t=[];e;)bz(t,wz(e)),e=$be(e);return t}:e2e,r2e=fdt;o(i2e,"copySymbolsIn");S(i2e,"copySymbolsIn");pdt=i2e;o(n2e,"baseGetAllKeys");S(n2e,"baseGetAllKeys");a2e=n2e;o(s2e,"getAllKeys");S(s2e,"getAllKeys");yF=s2e;o(o2e,"getAllKeysIn");S(o2e,"getAllKeysIn");l2e=o2e,mdt=Z0(tu,"DataView"),vF=mdt,gdt=Z0(tu,"Promise"),xF=gdt,ydt=Z0(tu,"Set"),W1=ydt,P1e="[object Map]",vdt="[object Object]",B1e="[object Promise]",F1e="[object Set]",$1e="[object WeakMap]",z1e="[object DataView]",xdt=K0(vF),bdt=K0(oT),Tdt=K0(xF),Cdt=K0(W1),kdt=K0(gF),h0=Tf;(vF&&h0(new vF(new ArrayBuffer(1)))!=z1e||oT&&h0(new oT)!=P1e||xF&&h0(xF.resolve())!=B1e||W1&&h0(new W1)!=F1e||gF&&h0(new gF)!=$1e)&&(h0=S(function(e){var t=Tf(e),r=t==vdt?e.constructor:void 0,i=r?K0(r):"";if(i)switch(i){case xdt:return z1e;case bdt:return P1e;case Tdt:return B1e;case Cdt:return F1e;case kdt:return $1e}return t},"getTag"));ey=h0,wdt=Object.prototype,Sdt=wdt.hasOwnProperty;o(c2e,"initCloneArray");S(c2e,"initCloneArray");Edt=c2e,Adt=tu.Uint8Array,k5=Adt;o(u2e,"cloneArrayBuffer");S(u2e,"cloneArrayBuffer");Sz=u2e;o(h2e,"cloneDataView");S(h2e,"cloneDataView");_dt=h2e,Ddt=/\w*$/;o(d2e,"cloneRegExp");S(d2e,"cloneRegExp");Rdt=d2e,G1e=el?el.prototype:void 0,V1e=G1e?G1e.valueOf:void 0;o(f2e,"cloneSymbol");S(f2e,"cloneSymbol");Ldt=f2e;o(p2e,"cloneTypedArray");S(p2e,"cloneTypedArray");Mdt=p2e,Ndt="[object Boolean]",Idt="[object Date]",Odt="[object Map]",Pdt="[object Number]",Bdt="[object RegExp]",Fdt="[object Set]",$dt="[object String]",zdt="[object Symbol]",Gdt="[object ArrayBuffer]",Vdt="[object DataView]",Wdt="[object Float32Array]",qdt="[object Float64Array]",Udt="[object Int8Array]",Hdt="[object Int16Array]",Ydt="[object Int32Array]",jdt="[object Uint8Array]",Xdt="[object Uint8ClampedArray]",Kdt="[object Uint16Array]",Zdt="[object Uint32Array]";o(m2e,"initCloneByTag");S(m2e,"initCloneByTag");Qdt=m2e;o(g2e,"initCloneObject");S(g2e,"initCloneObject");Jdt=g2e,eft="[object Map]";o(y2e,"baseIsMap");S(y2e,"baseIsMap");tft=y2e,W1e=mf&&mf.isMap,rft=W1e?MT(W1e):tft,ift=rft,nft="[object Set]";o(v2e,"baseIsSet");S(v2e,"baseIsSet");aft=v2e,q1e=mf&&mf.isSet,sft=q1e?MT(q1e):aft,oft=sft,lft=1,cft=2,uft=4,x2e="[object Arguments]",hft="[object Array]",dft="[object Boolean]",fft="[object Date]",pft="[object Error]",b2e="[object Function]",mft="[object GeneratorFunction]",gft="[object Map]",yft="[object Number]",T2e="[object Object]",vft="[object RegExp]",xft="[object Set]",bft="[object String]",Tft="[object Symbol]",Cft="[object WeakMap]",kft="[object ArrayBuffer]",wft="[object DataView]",Sft="[object Float32Array]",Eft="[object Float64Array]",Aft="[object Int8Array]",_ft="[object Int16Array]",Dft="[object Int32Array]",Rft="[object Uint8Array]",Lft="[object Uint8ClampedArray]",Mft="[object Uint16Array]",Nft="[object Uint32Array]",Ni={};Ni[x2e]=Ni[hft]=Ni[kft]=Ni[wft]=Ni[dft]=Ni[fft]=Ni[Sft]=Ni[Eft]=Ni[Aft]=Ni[_ft]=Ni[Dft]=Ni[gft]=Ni[yft]=Ni[T2e]=Ni[vft]=Ni[xft]=Ni[bft]=Ni[Tft]=Ni[Rft]=Ni[Lft]=Ni[Mft]=Ni[Nft]=!0;Ni[pft]=Ni[b2e]=Ni[Cft]=!1;o(X2,"baseClone");S(X2,"baseClone");Ift=X2,Oft=4;o(C2e,"clone");S(C2e,"clone");ka=C2e;o(k2e,"compact");S(k2e,"compact");IT=k2e,Pft="__lodash_hash_undefined__";o(w2e,"setCacheAdd");S(w2e,"setCacheAdd");Bft=w2e;o(S2e,"setCacheHas");S(S2e,"setCacheHas");Fft=S2e;o(lT,"SetCache");S(lT,"SetCache");lT.prototype.add=lT.prototype.push=Bft;lT.prototype.has=Fft;Ez=lT;o(E2e,"arraySome");S(E2e,"arraySome");A2e=E2e;o(_2e,"cacheHas");S(_2e,"cacheHas");Az=_2e,$ft=1,zft=2;o(D2e,"equalArrays");S(D2e,"equalArrays");R2e=D2e;o(L2e,"mapToArray");S(L2e,"mapToArray");Gft=L2e;o(M2e,"setToArray");S(M2e,"setToArray");_z=M2e,Vft=1,Wft=2,qft="[object Boolean]",Uft="[object Date]",Hft="[object Error]",Yft="[object Map]",jft="[object Number]",Xft="[object RegExp]",Kft="[object Set]",Zft="[object String]",Qft="[object Symbol]",Jft="[object ArrayBuffer]",ept="[object DataView]",U1e=el?el.prototype:void 0,XP=U1e?U1e.valueOf:void 0;o(N2e,"equalByTag");S(N2e,"equalByTag");tpt=N2e,rpt=1,ipt=Object.prototype,npt=ipt.hasOwnProperty;o(I2e,"equalObjects");S(I2e,"equalObjects");apt=I2e,spt=1,H1e="[object Arguments]",Y1e="[object Array]",gE="[object Object]",opt=Object.prototype,j1e=opt.hasOwnProperty;o(O2e,"baseIsEqualDeep");S(O2e,"baseIsEqualDeep");lpt=O2e;o(Dz,"baseIsEqual");S(Dz,"baseIsEqual");P2e=Dz,cpt=1,upt=2;o(B2e,"baseIsMatch");S(B2e,"baseIsMatch");hpt=B2e;o(F2e,"isStrictComparable");S(F2e,"isStrictComparable");$2e=F2e;o(z2e,"getMatchData");S(z2e,"getMatchData");dpt=z2e;o(G2e,"matchesStrictComparable");S(G2e,"matchesStrictComparable");V2e=G2e;o(W2e,"baseMatches");S(W2e,"baseMatches");fpt=W2e;o(q2e,"baseHasIn");S(q2e,"baseHasIn");ppt=q2e;o(U2e,"hasPath");S(U2e,"hasPath");H2e=U2e;o(Y2e,"hasIn");S(Y2e,"hasIn");mpt=Y2e,gpt=1,ypt=2;o(j2e,"baseMatchesProperty");S(j2e,"baseMatchesProperty");vpt=j2e;o(X2e,"baseProperty");S(X2e,"baseProperty");xpt=X2e;o(K2e,"basePropertyDeep");S(K2e,"basePropertyDeep");bpt=K2e;o(Z2e,"property");S(Z2e,"property");Tpt=Z2e;o(Q2e,"baseIteratee");S(Q2e,"baseIteratee");iu=Q2e;o(J2e,"arrayAggregator");S(J2e,"arrayAggregator");Cpt=J2e;o(eTe,"createBaseFor");S(eTe,"createBaseFor");kpt=eTe,wpt=kpt(),Spt=wpt;o(tTe,"baseForOwn");S(tTe,"baseForOwn");Ept=tTe;o(rTe,"createBaseEach");S(rTe,"createBaseEach");Apt=rTe,_pt=Apt(Ept),rm=_pt;o(iTe,"baseAggregator");S(iTe,"baseAggregator");Dpt=iTe;o(nTe,"createAggregator");S(nTe,"createAggregator");Rpt=nTe,aTe=Object.prototype,Lpt=aTe.hasOwnProperty,Mpt=mz(function(e,t){e=Object(e);var r=-1,i=t.length,n=i>2?t[2]:void 0;for(n&&hA(t[0],t[1],n)&&(i=1);++r<i;)for(var a=t[r],s=fA(a),l=-1,u=s.length;++l<u;){var h=s[l],d=e[h];(d===void 0||DT(d,aTe[h])&&!Lpt.call(e,h))&&(e[h]=a[h])}return e}),Rz=Mpt;o(sTe,"isArrayLikeObject");S(sTe,"isArrayLikeObject");X1e=sTe;o(oTe,"arrayIncludesWith");S(oTe,"arrayIncludesWith");lTe=oTe,Npt=200;o(cTe,"baseDifference");S(cTe,"baseDifference");Ipt=cTe,Opt=mz(function(e,t){return X1e(e)?Ipt(e,Cz(t,1,X1e,!0)):[]}),bA=Opt;o(uTe,"last");S(uTe,"last");z0=uTe;o(hTe,"drop");S(hTe,"drop");Ta=hTe;o(dTe,"dropRight");S(dTe,"dropRight");cT=dTe;o(fTe,"castFunction");S(fTe,"castFunction");Ppt=fTe;o(pTe,"forEach");S(pTe,"forEach");vr=pTe;o(mTe,"arrayEvery");S(mTe,"arrayEvery");Bpt=mTe;o(gTe,"baseEvery");S(gTe,"baseEvery");Fpt=gTe;o(yTe,"every");S(yTe,"every");Hl=yTe;o(vTe,"baseFilter");S(vTe,"baseFilter");xTe=vTe;o(bTe,"filter");S(bTe,"filter");il=bTe;o(TTe,"createFind");S(TTe,"createFind");$pt=TTe,zpt=Math.max;o(CTe,"findIndex");S(CTe,"findIndex");Gpt=CTe,Vpt=$pt(Gpt),ty=Vpt;o(kTe,"head");S(kTe,"head");jl=kTe;o(wTe,"baseMap");S(wTe,"baseMap");Wpt=wTe;o(STe,"map");S(STe,"map");nr=STe;o(ETe,"flatMap");S(ETe,"flatMap");Jo=ETe,qpt=Object.prototype,Upt=qpt.hasOwnProperty,Hpt=Rpt(function(e,t,r){Upt.call(e,r)?e[r].push(t):pz(e,r,[t])}),Ypt=Hpt,jpt=Object.prototype,Xpt=jpt.hasOwnProperty;o(ATe,"baseHas");S(ATe,"baseHas");Kpt=ATe;o(_Te,"has");S(_Te,"has");mr=_Te,Zpt="[object String]";o(DTe,"isString");S(DTe,"isString");Vs=DTe;o(RTe,"baseValues");S(RTe,"baseValues");Qpt=RTe;o(LTe,"values");S(LTe,"values");Hn=LTe,Jpt=Math.max;o(MTe,"includes");S(MTe,"includes");fs=MTe,e0t=Math.max;o(NTe,"indexOf");S(NTe,"indexOf");K1e=NTe,t0t="[object Map]",r0t="[object Set]",i0t=Object.prototype,n0t=i0t.hasOwnProperty;o(ITe,"isEmpty");S(ITe,"isEmpty");Oi=ITe,a0t="[object RegExp]";o(OTe,"baseIsRegExp");S(OTe,"baseIsRegExp");s0t=OTe,Z1e=mf&&mf.isRegExp,o0t=Z1e?MT(Z1e):s0t,hh=o0t;o(PTe,"isUndefined");S(PTe,"isUndefined");dh=PTe,l0t="Expected a function";o(BTe,"negate");S(BTe,"negate");c0t=BTe;o(FTe,"baseSet");S(FTe,"baseSet");u0t=FTe;o($Te,"basePickBy");S($Te,"basePickBy");h0t=$Te;o(zTe,"pickBy");S(zTe,"pickBy");Xl=zTe;o(GTe,"baseReduce");S(GTe,"baseReduce");d0t=GTe;o(VTe,"reduce");S(VTe,"reduce");go=VTe;o(WTe,"reject");S(WTe,"reject");TA=WTe;o(qTe,"baseSome");S(qTe,"baseSome");f0t=qTe;o(UTe,"some");S(UTe,"some");HTe=UTe,p0t=1/0,m0t=W1&&1/_z(new W1([,-0]))[1]==p0t?function(e){return new W1(e)}:Un,g0t=m0t,y0t=200;o(YTe,"baseUniq");S(YTe,"baseUniq");v0t=YTe;o(jTe,"uniq");S(jTe,"uniq");Lz=jTe;o(w5,"PRINT_ERROR");S(w5,"PRINT_ERROR");o(Mz,"PRINT_WARNING");S(Mz,"PRINT_WARNING");o(Nz,"timer");S(Nz,"timer");o(Iz,"toFastProperties");S(Iz,"toFastProperties");o(XTe,"tokenLabel");S(XTe,"tokenLabel");o(KTe,"hasTokenLabel");S(KTe,"hasTokenLabel");nu=class{static{o(this,"AbstractProduction")}static{S(this,"AbstractProduction")}get definition(){return this._definition}set definition(e){this._definition=e}constructor(e){this._definition=e}accept(e){e.visit(this),vr(this.definition,t=>{t.accept(e)})}},us=class extends nu{static{o(this,"NonTerminal")}static{S(this,"NonTerminal")}constructor(e){super([]),this.idx=1,mo(this,Xl(e,t=>t!==void 0))}set definition(e){}get definition(){return this.referencedRule!==void 0?this.referencedRule.definition:[]}accept(e){e.visit(this)}},oy=class extends nu{static{o(this,"Rule")}static{S(this,"Rule")}constructor(e){super(e.definition),this.orgText="",mo(this,Xl(e,t=>t!==void 0))}},Ws=class extends nu{static{o(this,"Alternative")}static{S(this,"Alternative")}constructor(e){super(e.definition),this.ignoreAmbiguities=!1,mo(this,Xl(e,t=>t!==void 0))}},Ca=class extends nu{static{o(this,"Option")}static{S(this,"Option")}constructor(e){super(e.definition),this.idx=1,mo(this,Xl(e,t=>t!==void 0))}},yo=class extends nu{static{o(this,"RepetitionMandatory")}static{S(this,"RepetitionMandatory")}constructor(e){super(e.definition),this.idx=1,mo(this,Xl(e,t=>t!==void 0))}},vo=class extends nu{static{o(this,"RepetitionMandatoryWithSeparator")}static{S(this,"RepetitionMandatoryWithSeparator")}constructor(e){super(e.definition),this.idx=1,mo(this,Xl(e,t=>t!==void 0))}},hn=class extends nu{static{o(this,"Repetition")}static{S(this,"Repetition")}constructor(e){super(e.definition),this.idx=1,mo(this,Xl(e,t=>t!==void 0))}},qs=class extends nu{static{o(this,"RepetitionWithSeparator")}static{S(this,"RepetitionWithSeparator")}constructor(e){super(e.definition),this.idx=1,mo(this,Xl(e,t=>t!==void 0))}},Us=class extends nu{static{o(this,"Alternation")}static{S(this,"Alternation")}get definition(){return this._definition}set definition(e){this._definition=e}constructor(e){super(e.definition),this.idx=1,this.ignoreAmbiguities=!1,this.hasPredicates=!1,mo(this,Xl(e,t=>t!==void 0))}},Wi=class{static{o(this,"Terminal")}static{S(this,"Terminal")}constructor(e){this.idx=1,mo(this,Xl(e,t=>t!==void 0))}accept(e){e.visit(this)}};o(ZTe,"serializeGrammar");S(ZTe,"serializeGrammar");o(K2,"serializeProduction");S(K2,"serializeProduction");ly=class{static{o(this,"GAstVisitor")}static{S(this,"GAstVisitor")}visit(e){let t=e;switch(t.constructor){case us:return this.visitNonTerminal(t);case Ws:return this.visitAlternative(t);case Ca:return this.visitOption(t);case yo:return this.visitRepetitionMandatory(t);case vo:return this.visitRepetitionMandatoryWithSeparator(t);case qs:return this.visitRepetitionWithSeparator(t);case hn:return this.visitRepetition(t);case Us:return this.visitAlternation(t);case Wi:return this.visitTerminal(t);case oy:return this.visitRule(t);default:throw Error("non exhaustive match")}}visitNonTerminal(e){}visitAlternative(e){}visitOption(e){}visitRepetition(e){}visitRepetitionMandatory(e){}visitRepetitionMandatoryWithSeparator(e){}visitRepetitionWithSeparator(e){}visitAlternation(e){}visitTerminal(e){}visitRule(e){}};o(QTe,"isSequenceProd");S(QTe,"isSequenceProd");o(uT,"isOptionalProd");S(uT,"isOptionalProd");o(JTe,"isBranchingProd");S(JTe,"isBranchingProd");o(Gl,"getProductionDslName");S(Gl,"getProductionDslName");CA=class{static{o(this,"RestWalker")}static{S(this,"RestWalker")}walk(e,t=[]){vr(e.definition,(r,i)=>{let n=Ta(e.definition,i+1);if(r instanceof us)this.walkProdRef(r,n,t);else if(r instanceof Wi)this.walkTerminal(r,n,t);else if(r instanceof Ws)this.walkFlat(r,n,t);else if(r instanceof Ca)this.walkOption(r,n,t);else if(r instanceof yo)this.walkAtLeastOne(r,n,t);else if(r instanceof vo)this.walkAtLeastOneSep(r,n,t);else if(r instanceof qs)this.walkManySep(r,n,t);else if(r instanceof hn)this.walkMany(r,n,t);else if(r instanceof Us)this.walkOr(r,n,t);else throw Error("non exhaustive match")})}walkTerminal(e,t,r){}walkProdRef(e,t,r){}walkFlat(e,t,r){let i=t.concat(r);this.walk(e,i)}walkOption(e,t,r){let i=t.concat(r);this.walk(e,i)}walkAtLeastOne(e,t,r){let i=[new Ca({definition:e.definition})].concat(t,r);this.walk(e,i)}walkAtLeastOneSep(e,t,r){let i=bF(e,t,r);this.walk(e,i)}walkMany(e,t,r){let i=[new Ca({definition:e.definition})].concat(t,r);this.walk(e,i)}walkManySep(e,t,r){let i=bF(e,t,r);this.walk(e,i)}walkOr(e,t,r){let i=t.concat(r);vr(e.definition,n=>{let a=new Ws({definition:[n]});this.walk(a,i)})}};o(bF,"restForRepetitionWithSeparator");S(bF,"restForRepetitionWithSeparator");o(cy,"first");S(cy,"first");o(eCe,"firstForSequence");S(eCe,"firstForSequence");o(tCe,"firstForBranching");S(tCe,"firstForBranching");o(rCe,"firstForTerminal");S(rCe,"firstForTerminal");iCe="_~IN~_",x0t=class extends CA{static{o(this,"ResyncFollowsWalker")}static{S(this,"ResyncFollowsWalker")}constructor(e){super(),this.topProd=e,this.follows={}}startWalking(){return this.walk(this.topProd),this.follows}walkTerminal(e,t,r){}walkProdRef(e,t,r){let i=aCe(e.referencedRule,e.idx)+this.topProd.name,n=t.concat(r),a=new Ws({definition:n}),s=cy(a);this.follows[i]=s}};o(nCe,"computeAllProdsFollows");S(nCe,"computeAllProdsFollows");o(aCe,"buildBetweenProdsFollowPrefix");S(aCe,"buildBetweenProdsFollowPrefix");WE={},b0t=new Bve;o(OT,"getRegExpAst");S(OT,"getRegExpAst");o(sCe,"clearRegExpParserCache");S(sCe,"clearRegExpParserCache");oCe="Complement Sets are not supported for first char optimization",S5=`Unable to use "first char" lexer optimizations:
-`;o(lCe,"getOptimizedStartCodesIndices");S(lCe,"getOptimizedStartCodesIndices");o(E5,"firstCharOptimizedIndices");S(E5,"firstCharOptimizedIndices");o(O2,"addOptimizedIdxToResult");S(O2,"addOptimizedIdxToResult");o(cCe,"handleIgnoreCase");S(cCe,"handleIgnoreCase");o(TF,"findCode");S(TF,"findCode");o(A5,"isWholeOptional");S(A5,"isWholeOptional");T0t=class extends tA{static{o(this,"CharCodeFinder")}static{S(this,"CharCodeFinder")}constructor(e){super(),this.targetCharCodes=e,this.found=!1}visitChildren(e){if(this.found!==!0){switch(e.type){case"Lookahead":this.visitLookahead(e);return;case"NegativeLookahead":this.visitNegativeLookahead(e);return;case"Lookbehind":this.visitLookbehind(e);return;case"NegativeLookbehind":this.visitNegativeLookbehind(e);return}super.visitChildren(e)}}visitCharacter(e){fs(this.targetCharCodes,e.value)&&(this.found=!0)}visitSet(e){e.complement?TF(e,this.targetCharCodes)===void 0&&(this.found=!0):TF(e,this.targetCharCodes)!==void 0&&(this.found=!0)}};o(kA,"canMatchCharCode");S(kA,"canMatchCharCode");G0="PATTERN",P2="defaultMode",yE="modes",uCe=typeof new RegExp("(?:)").sticky=="boolean";o(hCe,"analyzeTokenTypes");S(hCe,"analyzeTokenTypes");o(dCe,"validatePatterns");S(dCe,"validatePatterns");o(fCe,"validateRegExpPattern");S(fCe,"validateRegExpPattern");o(pCe,"findMissingPatterns");S(pCe,"findMissingPatterns");o(mCe,"findInvalidPatterns");S(mCe,"findInvalidPatterns");C0t=/[^\\][$]/;o(gCe,"findEndOfInputAnchor");S(gCe,"findEndOfInputAnchor");o(yCe,"findEmptyMatchRegExps");S(yCe,"findEmptyMatchRegExps");k0t=/[^\\[][\^]|^\^/;o(vCe,"findStartOfInputAnchor");S(vCe,"findStartOfInputAnchor");o(xCe,"findUnsupportedFlags");S(xCe,"findUnsupportedFlags");o(bCe,"findDuplicatePatterns");S(bCe,"findDuplicatePatterns");o(TCe,"findInvalidGroupType");S(TCe,"findInvalidGroupType");o(CCe,"findModesThatDoNotExist");S(CCe,"findModesThatDoNotExist");o(kCe,"findUnreachablePatterns");S(kCe,"findUnreachablePatterns");o(wCe,"tryToMatchStrToPattern");S(wCe,"tryToMatchStrToPattern");o(SCe,"noMetaChar");S(SCe,"noMetaChar");o(ECe,"usesLookAheadOrBehind");S(ECe,"usesLookAheadOrBehind");o(CF,"addStartOfInput");S(CF,"addStartOfInput");o(kF,"addStickyFlag");S(kF,"addStickyFlag");o(ACe,"performRuntimeChecks");S(ACe,"performRuntimeChecks");o(_Ce,"performWarningRuntimeChecks");S(_Ce,"performWarningRuntimeChecks");o(DCe,"cloneEmptyGroups");S(DCe,"cloneEmptyGroups");o(Oz,"isCustomPattern");S(Oz,"isCustomPattern");o(RCe,"isShortPattern");S(RCe,"isShortPattern");w0t={test:S(function(e){let t=e.length;for(let r=this.lastIndex;r<t;r++){let i=e.charCodeAt(r);if(i===10)return this.lastIndex=r+1,!0;if(i===13)return e.charCodeAt(r+1)===10?this.lastIndex=r+2:this.lastIndex=r+1,!0}return!1},"test"),lastIndex:0};o(Pz,"checkLineBreaksIssues");S(Pz,"checkLineBreaksIssues");o(LCe,"buildLineBreakIssueMessage");S(LCe,"buildLineBreakIssueMessage");o(Bz,"getCharCodes");S(Bz,"getCharCodes");o(qE,"addToMapOfArrays");S(qE,"addToMapOfArrays");B2=256,UE=[];o(fh,"charCodeToOptimizedIndex");S(fh,"charCodeToOptimizedIndex");o(MCe,"initCharCodeToOptimizedIndexMap");S(MCe,"initCharCodeToOptimizedIndexMap");o(uy,"tokenStructuredMatcher");S(uy,"tokenStructuredMatcher");o(hT,"tokenStructuredMatcherNoCategories");S(hT,"tokenStructuredMatcherNoCategories");Q1e=1,NCe={};o(hy,"augmentTokenTypes");S(hy,"augmentTokenTypes");o(ICe,"expandCategories");S(ICe,"expandCategories");o(OCe,"assignTokenDefaultProps");S(OCe,"assignTokenDefaultProps");o(PCe,"assignCategoriesTokensProp");S(PCe,"assignCategoriesTokensProp");o(BCe,"assignCategoriesMapProp");S(BCe,"assignCategoriesMapProp");o(Fz,"singleAssignCategoriesToksMap");S(Fz,"singleAssignCategoriesToksMap");o($z,"hasShortKeyProperty");S($z,"hasShortKeyProperty");o(wF,"hasCategoriesProperty");S(wF,"hasCategoriesProperty");o(FCe,"hasExtendingTokensTypesProperty");S(FCe,"hasExtendingTokensTypesProperty");o($Ce,"hasExtendingTokensTypesMapProperty");S($Ce,"hasExtendingTokensTypesMapProperty");o(zCe,"isTokenType");S(zCe,"isTokenType");SF={buildUnableToPopLexerModeMessage(e){return`Unable to pop Lexer Mode after encountering Token ->${e.image}<- The Mode Stack is empty`},buildUnexpectedCharactersMessage(e,t,r,i,n,a){return`unexpected character: ->${e.charAt(t)}<- at offset: ${t}, skipped ${r} characters.`}};(function(e){e[e.MISSING_PATTERN=0]="MISSING_PATTERN",e[e.INVALID_PATTERN=1]="INVALID_PATTERN",e[e.EOI_ANCHOR_FOUND=2]="EOI_ANCHOR_FOUND",e[e.UNSUPPORTED_FLAGS_FOUND=3]="UNSUPPORTED_FLAGS_FOUND",e[e.DUPLICATE_PATTERNS_FOUND=4]="DUPLICATE_PATTERNS_FOUND",e[e.INVALID_GROUP_TYPE_FOUND=5]="INVALID_GROUP_TYPE_FOUND",e[e.PUSH_MODE_DOES_NOT_EXIST=6]="PUSH_MODE_DOES_NOT_EXIST",e[e.MULTI_MODE_LEXER_WITHOUT_DEFAULT_MODE=7]="MULTI_MODE_LEXER_WITHOUT_DEFAULT_MODE",e[e.MULTI_MODE_LEXER_WITHOUT_MODES_PROPERTY=8]="MULTI_MODE_LEXER_WITHOUT_MODES_PROPERTY",e[e.MULTI_MODE_LEXER_DEFAULT_MODE_VALUE_DOES_NOT_EXIST=9]="MULTI_MODE_LEXER_DEFAULT_MODE_VALUE_DOES_NOT_EXIST",e[e.LEXER_DEFINITION_CANNOT_CONTAIN_UNDEFINED=10]="LEXER_DEFINITION_CANNOT_CONTAIN_UNDEFINED",e[e.SOI_ANCHOR_FOUND=11]="SOI_ANCHOR_FOUND",e[e.EMPTY_MATCH_PATTERN=12]="EMPTY_MATCH_PATTERN",e[e.NO_LINE_BREAKS_FLAGS=13]="NO_LINE_BREAKS_FLAGS",e[e.UNREACHABLE_PATTERN=14]="UNREACHABLE_PATTERN",e[e.IDENTIFY_TERMINATOR=15]="IDENTIFY_TERMINATOR",e[e.CUSTOM_LINE_BREAK=16]="CUSTOM_LINE_BREAK",e[e.MULTI_MODE_LEXER_LONGER_ALT_NOT_IN_CURRENT_MODE=17]="MULTI_MODE_LEXER_LONGER_ALT_NOT_IN_CURRENT_MODE"})(dn||(dn={}));F2={deferDefinitionErrorsHandling:!1,positionTracking:"full",lineTerminatorsPattern:/\n|\r\n?/g,lineTerminatorCharacters:[`
-`,"\r"],ensureOptimizations:!1,safeMode:!1,errorMessageProvider:SF,traceInitPerf:!1,skipValidations:!1,recoveryEnabled:!0};Object.freeze(F2);ls=class{static{o(this,"Lexer")}static{S(this,"Lexer")}constructor(e,t=F2){if(this.lexerDefinition=e,this.lexerDefinitionErrors=[],this.lexerDefinitionWarning=[],this.patternIdxToConfig={},this.charCodeToPatternIdxToConfig={},this.modes=[],this.emptyGroups={},this.trackStartLines=!0,this.trackEndLines=!0,this.hasCustom=!1,this.canModeBeOptimized={},this.TRACE_INIT=(i,n)=>{if(this.traceInitPerf===!0){this.traceInitIndent++;let a=new Array(this.traceInitIndent+1).join("	");this.traceInitIndent<this.traceInitMaxIdent&&console.log(`${a}--> <${i}>`);let{time:s,value:l}=Nz(n),u=s>10?console.warn:console.log;return this.traceInitIndent<this.traceInitMaxIdent&&u(`${a}<-- <${i}> time: ${s}ms`),this.traceInitIndent--,l}else return n()},typeof t=="boolean")throw Error(`The second argument to the Lexer constructor is now an ILexerConfig Object.
-a boolean 2nd argument is no longer supported`);this.config=mo({},F2,t);let r=this.config.traceInitPerf;r===!0?(this.traceInitMaxIdent=1/0,this.traceInitPerf=!0):typeof r=="number"&&(this.traceInitMaxIdent=r,this.traceInitPerf=!0),this.traceInitIndent=-1,this.TRACE_INIT("Lexer Constructor",()=>{let i,n=!0;this.TRACE_INIT("Lexer Config handling",()=>{if(this.config.lineTerminatorsPattern===F2.lineTerminatorsPattern)this.config.lineTerminatorsPattern=w0t;else if(this.config.lineTerminatorCharacters===F2.lineTerminatorCharacters)throw Error(`Error: Missing <lineTerminatorCharacters> property on the Lexer config.
-	For details See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#MISSING_LINE_TERM_CHARS`);if(t.safeMode&&t.ensureOptimizations)throw Error('"safeMode" and "ensureOptimizations" flags are mutually exclusive.');this.trackStartLines=/full|onlyStart/i.test(this.config.positionTracking),this.trackEndLines=/full/i.test(this.config.positionTracking),Kr(e)?i={modes:{defaultMode:ka(e)},defaultMode:P2}:(n=!1,i=ka(e))}),this.config.skipValidations===!1&&(this.TRACE_INIT("performRuntimeChecks",()=>{this.lexerDefinitionErrors=this.lexerDefinitionErrors.concat(ACe(i,this.trackStartLines,this.config.lineTerminatorCharacters))}),this.TRACE_INIT("performWarningRuntimeChecks",()=>{this.lexerDefinitionWarning=this.lexerDefinitionWarning.concat(_Ce(i,this.trackStartLines,this.config.lineTerminatorCharacters))})),i.modes=i.modes?i.modes:{},vr(i.modes,(s,l)=>{i.modes[l]=TA(s,u=>dh(u))});let a=po(i.modes);if(vr(i.modes,(s,l)=>{this.TRACE_INIT(`Mode: <${l}> processing`,()=>{if(this.modes.push(l),this.config.skipValidations===!1&&this.TRACE_INIT("validatePatterns",()=>{this.lexerDefinitionErrors=this.lexerDefinitionErrors.concat(dCe(s,a))}),Oi(this.lexerDefinitionErrors)){hy(s);let u;this.TRACE_INIT("analyzeTokenTypes",()=>{u=hCe(s,{lineTerminatorCharacters:this.config.lineTerminatorCharacters,positionTracking:t.positionTracking,ensureOptimizations:t.ensureOptimizations,safeMode:t.safeMode,tracer:this.TRACE_INIT})}),this.patternIdxToConfig[l]=u.patternIdxToConfig,this.charCodeToPatternIdxToConfig[l]=u.charCodeToPatternIdxToConfig,this.emptyGroups=mo({},this.emptyGroups,u.emptyGroups),this.hasCustom=u.hasCustom||this.hasCustom,this.canModeBeOptimized[l]=u.canBeOptimized}})}),this.defaultMode=i.defaultMode,!Oi(this.lexerDefinitionErrors)&&!this.config.deferDefinitionErrorsHandling){let l=nr(this.lexerDefinitionErrors,u=>u.message).join(`-----------------------
+`:case"\r":case"\u2028":case"\u2029":return!1;default:return!0}}parseHexDigits(e){let t="";for(let n=0;n<e;n++){let i=this.popChar();if(ayt.test(i)===!1)throw Error("Expecting a HexDecimal digits");t+=i}return{type:"Character",value:parseInt(t,16)}}peekChar(e=0){return this.input[this.idx+e]}popChar(){let e=this.peekChar(0);return this.consumeChar(void 0),e}consumeChar(e){if(e!==void 0&&this.input[this.idx]!==e)throw Error("Expected: '"+e+"' but found: '"+this.input[this.idx]+"' at offset: "+this.idx);if(this.idx>=this.input.length)throw Error("Unexpected end of input");this.idx++}loc(e){return{begin:e,end:this.idx}}},AR=class{static{o(this,"BaseRegExpVisitor")}static{E(this,"BaseRegExpVisitor")}visitChildren(e){for(let t in e){let r=e[t];e.hasOwnProperty(t)&&(r.type!==void 0?this.visit(r):Array.isArray(r)&&r.forEach(n=>{this.visit(n)},this))}}visit(e){switch(e.type){case"Pattern":this.visitPattern(e);break;case"Flags":this.visitFlags(e);break;case"Disjunction":this.visitDisjunction(e);break;case"Alternative":this.visitAlternative(e);break;case"StartAnchor":this.visitStartAnchor(e);break;case"EndAnchor":this.visitEndAnchor(e);break;case"WordBoundary":this.visitWordBoundary(e);break;case"NonWordBoundary":this.visitNonWordBoundary(e);break;case"Lookahead":this.visitLookahead(e);break;case"NegativeLookahead":this.visitNegativeLookahead(e);break;case"Lookbehind":this.visitLookbehind(e);break;case"NegativeLookbehind":this.visitNegativeLookbehind(e);break;case"Character":this.visitCharacter(e);break;case"Set":this.visitSet(e);break;case"Group":this.visitGroup(e);break;case"GroupBackReference":this.visitGroupBackReference(e);break;case"Quantifier":this.visitQuantifier(e);break}this.visitChildren(e)}visitPattern(e){}visitFlags(e){}visitDisjunction(e){}visitAlternative(e){}visitStartAnchor(e){}visitEndAnchor(e){}visitWordBoundary(e){}visitNonWordBoundary(e){}visitLookahead(e){}visitNegativeLookahead(e){}visitLookbehind(e){}visitNegativeLookbehind(e){}visitCharacter(e){}visitSet(e){}visitGroup(e){}visitGroupBackReference(e){}visitQuantifier(e){}},cke=/\r?\n/gm,uke=new lke,oyt=class extends AR{static{o(this,"TerminalRegExpVisitor")}static{E(this,"TerminalRegExpVisitor")}constructor(){super(...arguments),this.isStarting=!0,this.endRegexpStack=[],this.multiline=!1}get endRegex(){return this.endRegexpStack.join("")}reset(e){this.multiline=!1,this.regex=e,this.startRegexp="",this.isStarting=!0,this.endRegexpStack=[]}visitGroup(e){e.quantifier&&(this.isStarting=!1,this.endRegexpStack=[])}visitCharacter(e){let t=String.fromCharCode(e.value);if(!this.multiline&&t===`
+`&&(this.multiline=!0),e.quantifier)this.isStarting=!1,this.endRegexpStack=[];else{let r=Nv(t);this.endRegexpStack.push(r),this.isStarting&&(this.startRegexp+=r)}}visitSet(e){if(!this.multiline){let t=this.regex.substring(e.loc.begin,e.loc.end),r=new RegExp(t);this.multiline=!!`
+`.match(r)}if(e.quantifier)this.isStarting=!1,this.endRegexpStack=[];else{let t=this.regex.substring(e.loc.begin,e.loc.end);this.endRegexpStack.push(t),this.isStarting&&(this.startRegexp+=t)}}visitChildren(e){e.type==="Group"&&e.quantifier||super.visitChildren(e)}},Vg=new oyt;o(hke,"getTerminalParts");E(hke,"getTerminalParts");o(FW,"isMultilineComment");E(FW,"isMultilineComment");dke=`\f
+\r	\v \xA0\u1680\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200A\u2028\u2029\u202F\u205F\u3000\uFEFF`.split("");o(RR,"isWhitespace");E(RR,"isWhitespace");o(Nv,"escapeRegExp");E(Nv,"escapeRegExp");o(zW,"partialMatches");E(zW,"partialMatches");o(GW,"partialRegExp");E(GW,"partialRegExp");o(VW,"getEntryRule");E(VW,"getEntryRule");o(WW,"getHiddenRules");E(WW,"getHiddenRules");o(_R,"getAllReachableRules");E(_R,"getAllReachableRules");o(qW,"ruleDfs");E(qW,"ruleDfs");o(fke,"getAllRulesUsedForCrossReferences");E(fke,"getAllRulesUsedForCrossReferences");o(HW,"getCrossReferenceTerminal");E(HW,"getCrossReferenceTerminal");o(UW,"isCommentTerminal");E(UW,"isCommentTerminal");o(YW,"findNodesForProperty");E(YW,"findNodesForProperty");o(LR,"findNodeForProperty");E(LR,"findNodeForProperty");o(DR,"findNodesForPropertyInternal");E(DR,"findNodesForPropertyInternal");o(pke,"findNodesForKeyword");E(pke,"findNodesForKeyword");o(jW,"findNodeForKeyword");E(jW,"findNodeForKeyword");o(IR,"findNodesForKeywordInternal");E(IR,"findNodesForKeywordInternal");o(XW,"findAssignment");E(XW,"findAssignment");o(MR,"findNameAssignment");E(MR,"findNameAssignment");o(KW,"findNameAssignmentInternal");E(KW,"findNameAssignmentInternal");o(ZW,"getActionAtElement");E(ZW,"getActionAtElement");o(mke,"isOptionalCardinality");E(mke,"isOptionalCardinality");o(gke,"isArrayCardinality");E(gke,"isArrayCardinality");o(yke,"isArrayOperator");E(yke,"isArrayOperator");o(mw,"isDataTypeRule");E(mw,"isDataTypeRule");o(QW,"isDataTypeRuleInternal");E(QW,"isDataTypeRuleInternal");o(vke,"isDataType");E(vke,"isDataType");o(U6,"isDataTypeInternal");E(U6,"isDataTypeInternal");o(gw,"getExplicitRuleType");E(gw,"getExplicitRuleType");o(jg,"getTypeName");E(jg,"getTypeName");o(JW,"getActionType");E(JW,"getActionType");o(xke,"getRuleTypeName");E(xke,"getRuleTypeName");o(eq,"getRuleType");E(eq,"getRuleType");o(yw,"terminalRegex");E(yw,"terminalRegex");tq=/[\s\S]/.source;o(i0,"abstractElementToRegex");E(i0,"abstractElementToRegex");o(bke,"terminalAlternativesToRegex");E(bke,"terminalAlternativesToRegex");o(Tke,"terminalGroupToRegex");E(Tke,"terminalGroupToRegex");o(Cke,"untilTokenToRegex");E(Cke,"untilTokenToRegex");o(wke,"negateTokenToRegex");E(wke,"negateTokenToRegex");o(kke,"characterRangeToRegex");E(kke,"characterRangeToRegex");o(s6,"keywordToRegex");E(s6,"keywordToRegex");o(Bu,"withCardinality");E(Bu,"withCardinality");o(rq,"createGrammarConfig");E(rq,"createGrammarConfig");lyt=typeof global=="object"&&global&&global.Object===Object&&global,Ske=lyt,cyt=typeof self=="object"&&self&&self.Object===Object&&self,uyt=Ske||cyt||Function("return this")(),Fu=uyt,hyt=Fu.Symbol,Ll=hyt,Eke=Object.prototype,dyt=Eke.hasOwnProperty,fyt=Eke.toString,cC=Ll?Ll.toStringTag:void 0;o(Ake,"getRawTag");E(Ake,"getRawTag");pyt=Ake,myt=Object.prototype,gyt=myt.toString;o(Rke,"objectToString");E(Rke,"objectToString");yyt=Rke,vyt="[object Null]",xyt="[object Undefined]",$Te=Ll?Ll.toStringTag:void 0;o(_ke,"baseGetTag");E(_ke,"baseGetTag");xp=_ke;o(Lke,"isObjectLike");E(Lke,"isObjectLike");Ac=Lke,byt="[object Symbol]";o(Dke,"isSymbol");E(Dke,"isSymbol");NR=Dke;o(Ike,"arrayMap");E(Ike,"arrayMap");vw=Ike,Tyt=Array.isArray,un=Tyt,Cyt=1/0,FTe=Ll?Ll.prototype:void 0,zTe=FTe?FTe.toString:void 0;o(nq,"baseToString");E(nq,"baseToString");wyt=nq,kyt=/\s/;o(Mke,"trimmedEndIndex");E(Mke,"trimmedEndIndex");Syt=Mke,Eyt=/^\s+/;o(Nke,"baseTrim");E(Nke,"baseTrim");Ayt=Nke;o(Pke,"isObject");E(Pke,"isObject");Dl=Pke,GTe=NaN,Ryt=/^[-+]0x[0-9a-f]+$/i,_yt=/^0b[01]+$/i,Lyt=/^0o[0-7]+$/i,Dyt=parseInt;o(Oke,"toNumber");E(Oke,"toNumber");Iyt=Oke,VTe=1/0,Myt=17976931348623157e292;o(Bke,"toFinite");E(Bke,"toFinite");Nyt=Bke;o($ke,"toInteger");E($ke,"toInteger");xw=$ke;o(Fke,"identity");E(Fke,"identity");bw=Fke,Pyt="[object AsyncFunction]",Oyt="[object Function]",Byt="[object GeneratorFunction]",$yt="[object Proxy]";o(zke,"isFunction");E(zke,"isFunction");rd=zke,Fyt=Fu["__core-js_shared__"],ez=Fyt,WTe=(function(){var e=/[^.]+$/.exec(ez&&ez.keys&&ez.keys.IE_PROTO||"");return e?"Symbol(src)_1."+e:""})();o(Gke,"isMasked");E(Gke,"isMasked");zyt=Gke,Gyt=Function.prototype,Vyt=Gyt.toString;o(Vke,"toSource");E(Vke,"toSource");a0=Vke,Wyt=/[\\^$.*+?()[\]{}|]/g,qyt=/^\[object .+?Constructor\]$/,Hyt=Function.prototype,Uyt=Object.prototype,Yyt=Hyt.toString,jyt=Uyt.hasOwnProperty,Xyt=RegExp("^"+Yyt.call(jyt).replace(Wyt,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");o(Wke,"baseIsNative");E(Wke,"baseIsNative");Kyt=Wke;o(qke,"getValue");E(qke,"getValue");Zyt=qke;o(Hke,"getNative");E(Hke,"getNative");s0=Hke,Qyt=s0(Fu,"WeakMap"),kG=Qyt,qTe=Object.create,Jyt=(function(){function e(){}return o(e,"object"),E(e,"object"),function(t){if(!Dl(t))return{};if(qTe)return qTe(t);e.prototype=t;var r=new e;return e.prototype=void 0,r}})(),e1t=Jyt;o(Uke,"apply");E(Uke,"apply");t1t=Uke;o(Yke,"noop");E(Yke,"noop");Da=Yke;o(jke,"copyArray");E(jke,"copyArray");r1t=jke,n1t=800,i1t=16,a1t=Date.now;o(Xke,"shortOut");E(Xke,"shortOut");s1t=Xke;o(Kke,"constant");E(Kke,"constant");o1t=Kke,l1t=(function(){try{var e=s0(Object,"defineProperty");return e({},"",{}),e}catch{}})(),Y6=l1t,c1t=Y6?function(e,t){return Y6(e,"toString",{configurable:!0,enumerable:!1,value:o1t(t),writable:!0})}:bw,u1t=c1t,h1t=s1t(u1t),d1t=h1t;o(Zke,"arrayEach");E(Zke,"arrayEach");Qke=Zke;o(Jke,"baseFindIndex");E(Jke,"baseFindIndex");eSe=Jke;o(tSe,"baseIsNaN");E(tSe,"baseIsNaN");f1t=tSe;o(rSe,"strictIndexOf");E(rSe,"strictIndexOf");p1t=rSe;o(nSe,"baseIndexOf");E(nSe,"baseIndexOf");iq=nSe;o(iSe,"arrayIncludes");E(iSe,"arrayIncludes");aSe=iSe,m1t=9007199254740991,g1t=/^(?:0|[1-9]\d*)$/;o(sSe,"isIndex");E(sSe,"isIndex");PR=sSe;o(oSe,"baseAssignValue");E(oSe,"baseAssignValue");aq=oSe;o(lSe,"eq");E(lSe,"eq");Tw=lSe,y1t=Object.prototype,v1t=y1t.hasOwnProperty;o(cSe,"assignValue");E(cSe,"assignValue");OR=cSe;o(uSe,"copyObject");E(uSe,"copyObject");Cw=uSe,HTe=Math.max;o(hSe,"overRest");E(hSe,"overRest");x1t=hSe;o(dSe,"baseRest");E(dSe,"baseRest");sq=dSe,b1t=9007199254740991;o(fSe,"isLength");E(fSe,"isLength");oq=fSe;o(pSe,"isArrayLike");E(pSe,"isArrayLike");zu=pSe;o(mSe,"isIterateeCall");E(mSe,"isIterateeCall");BR=mSe;o(gSe,"createAssigner");E(gSe,"createAssigner");T1t=gSe,C1t=Object.prototype;o(ySe,"isPrototype");E(ySe,"isPrototype");ww=ySe;o(vSe,"baseTimes");E(vSe,"baseTimes");w1t=vSe,k1t="[object Arguments]";o(xSe,"baseIsArguments");E(xSe,"baseIsArguments");UTe=xSe,bSe=Object.prototype,S1t=bSe.hasOwnProperty,E1t=bSe.propertyIsEnumerable,A1t=UTe((function(){return arguments})())?UTe:function(e){return Ac(e)&&S1t.call(e,"callee")&&!E1t.call(e,"callee")},$R=A1t;o(TSe,"stubFalse");E(TSe,"stubFalse");R1t=TSe,CSe=typeof exports=="object"&&exports&&!exports.nodeType&&exports,YTe=CSe&&typeof module=="object"&&module&&!module.nodeType&&module,_1t=YTe&&YTe.exports===CSe,jTe=_1t?Fu.Buffer:void 0,L1t=jTe?jTe.isBuffer:void 0,D1t=L1t||R1t,KC=D1t,I1t="[object Arguments]",M1t="[object Array]",N1t="[object Boolean]",P1t="[object Date]",O1t="[object Error]",B1t="[object Function]",$1t="[object Map]",F1t="[object Number]",z1t="[object Object]",G1t="[object RegExp]",V1t="[object Set]",W1t="[object String]",q1t="[object WeakMap]",H1t="[object ArrayBuffer]",U1t="[object DataView]",Y1t="[object Float32Array]",j1t="[object Float64Array]",X1t="[object Int8Array]",K1t="[object Int16Array]",Z1t="[object Int32Array]",Q1t="[object Uint8Array]",J1t="[object Uint8ClampedArray]",evt="[object Uint16Array]",tvt="[object Uint32Array]",oi={};oi[Y1t]=oi[j1t]=oi[X1t]=oi[K1t]=oi[Z1t]=oi[Q1t]=oi[J1t]=oi[evt]=oi[tvt]=!0;oi[I1t]=oi[M1t]=oi[H1t]=oi[N1t]=oi[U1t]=oi[P1t]=oi[O1t]=oi[B1t]=oi[$1t]=oi[F1t]=oi[z1t]=oi[G1t]=oi[V1t]=oi[W1t]=oi[q1t]=!1;o(wSe,"baseIsTypedArray");E(wSe,"baseIsTypedArray");rvt=wSe;o(kSe,"baseUnary");E(kSe,"baseUnary");kw=kSe,SSe=typeof exports=="object"&&exports&&!exports.nodeType&&exports,BC=SSe&&typeof module=="object"&&module&&!module.nodeType&&module,nvt=BC&&BC.exports===SSe,tz=nvt&&Ske.process,ivt=(function(){try{var e=BC&&BC.require&&BC.require("util").types;return e||tz&&tz.binding&&tz.binding("util")}catch{}})(),fp=ivt,XTe=fp&&fp.isTypedArray,avt=XTe?kw(XTe):rvt,lq=avt,svt=Object.prototype,ovt=svt.hasOwnProperty;o(ESe,"arrayLikeKeys");E(ESe,"arrayLikeKeys");ASe=ESe;o(RSe,"overArg");E(RSe,"overArg");_Se=RSe,lvt=_Se(Object.keys,Object),cvt=lvt,uvt=Object.prototype,hvt=uvt.hasOwnProperty;o(LSe,"baseKeys");E(LSe,"baseKeys");DSe=LSe;o(ISe,"keys");E(ISe,"keys");jo=ISe,dvt=Object.prototype,fvt=dvt.hasOwnProperty,pvt=T1t(function(e,t){if(ww(t)||zu(t)){Cw(t,jo(t),e);return}for(var r in t)fvt.call(t,r)&&OR(e,r,t[r])}),Xo=pvt;o(MSe,"nativeKeysIn");E(MSe,"nativeKeysIn");mvt=MSe,gvt=Object.prototype,yvt=gvt.hasOwnProperty;o(NSe,"baseKeysIn");E(NSe,"baseKeysIn");vvt=NSe;o(PSe,"keysIn");E(PSe,"keysIn");FR=PSe,xvt=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,bvt=/^\w*$/;o(OSe,"isKey");E(OSe,"isKey");cq=OSe,Tvt=s0(Object,"create"),ZC=Tvt;o(BSe,"hashClear");E(BSe,"hashClear");Cvt=BSe;o($Se,"hashDelete");E($Se,"hashDelete");wvt=$Se,kvt="__lodash_hash_undefined__",Svt=Object.prototype,Evt=Svt.hasOwnProperty;o(FSe,"hashGet");E(FSe,"hashGet");Avt=FSe,Rvt=Object.prototype,_vt=Rvt.hasOwnProperty;o(zSe,"hashHas");E(zSe,"hashHas");Lvt=zSe,Dvt="__lodash_hash_undefined__";o(GSe,"hashSet");E(GSe,"hashSet");Ivt=GSe;o(o0,"Hash");E(o0,"Hash");o0.prototype.clear=Cvt;o0.prototype.delete=wvt;o0.prototype.get=Avt;o0.prototype.has=Lvt;o0.prototype.set=Ivt;KTe=o0;o(VSe,"listCacheClear");E(VSe,"listCacheClear");Mvt=VSe;o(WSe,"assocIndexOf");E(WSe,"assocIndexOf");zR=WSe,Nvt=Array.prototype,Pvt=Nvt.splice;o(qSe,"listCacheDelete");E(qSe,"listCacheDelete");Ovt=qSe;o(HSe,"listCacheGet");E(HSe,"listCacheGet");Bvt=HSe;o(USe,"listCacheHas");E(USe,"listCacheHas");$vt=USe;o(YSe,"listCacheSet");E(YSe,"listCacheSet");Fvt=YSe;o(l0,"ListCache");E(l0,"ListCache");l0.prototype.clear=Mvt;l0.prototype.delete=Ovt;l0.prototype.get=Bvt;l0.prototype.has=$vt;l0.prototype.set=Fvt;GR=l0,zvt=s0(Fu,"Map"),QC=zvt;o(jSe,"mapCacheClear");E(jSe,"mapCacheClear");Gvt=jSe;o(XSe,"isKeyable");E(XSe,"isKeyable");Vvt=XSe;o(KSe,"getMapData");E(KSe,"getMapData");VR=KSe;o(ZSe,"mapCacheDelete");E(ZSe,"mapCacheDelete");Wvt=ZSe;o(QSe,"mapCacheGet");E(QSe,"mapCacheGet");qvt=QSe;o(JSe,"mapCacheHas");E(JSe,"mapCacheHas");Hvt=JSe;o(eEe,"mapCacheSet");E(eEe,"mapCacheSet");Uvt=eEe;o(c0,"MapCache");E(c0,"MapCache");c0.prototype.clear=Gvt;c0.prototype.delete=Wvt;c0.prototype.get=qvt;c0.prototype.has=Hvt;c0.prototype.set=Uvt;WR=c0,Yvt="Expected a function";o(qR,"memoize");E(qR,"memoize");qR.Cache=WR;jvt=qR,Xvt=500;o(tEe,"memoizeCapped");E(tEe,"memoizeCapped");Kvt=tEe,Zvt=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,Qvt=/\\(\\)?/g,Jvt=Kvt(function(e){var t=[];return e.charCodeAt(0)===46&&t.push(""),e.replace(Zvt,function(r,n,i,a){t.push(i?a.replace(Qvt,"$1"):n||r)}),t}),ext=Jvt;o(rEe,"toString2");E(rEe,"toString");txt=rEe;o(nEe,"castPath");E(nEe,"castPath");HR=nEe,rxt=1/0;o(iEe,"toKey");E(iEe,"toKey");Sw=iEe;o(aEe,"baseGet");E(aEe,"baseGet");uq=aEe;o(sEe,"get");E(sEe,"get");nxt=sEe;o(oEe,"arrayPush");E(oEe,"arrayPush");hq=oEe,ZTe=Ll?Ll.isConcatSpreadable:void 0;o(lEe,"isFlattenable");E(lEe,"isFlattenable");ixt=lEe;o(dq,"baseFlatten");E(dq,"baseFlatten");fq=dq;o(cEe,"flatten");E(cEe,"flatten");Sc=cEe,axt=_Se(Object.getPrototypeOf,Object),uEe=axt;o(hEe,"baseSlice");E(hEe,"baseSlice");dEe=hEe;o(fEe,"arrayReduce");E(fEe,"arrayReduce");sxt=fEe;o(pEe,"stackClear");E(pEe,"stackClear");oxt=pEe;o(mEe,"stackDelete");E(mEe,"stackDelete");lxt=mEe;o(gEe,"stackGet");E(gEe,"stackGet");cxt=gEe;o(yEe,"stackHas");E(yEe,"stackHas");uxt=yEe,hxt=200;o(vEe,"stackSet");E(vEe,"stackSet");dxt=vEe;o(u0,"Stack");E(u0,"Stack");u0.prototype.clear=oxt;u0.prototype.delete=lxt;u0.prototype.get=cxt;u0.prototype.has=uxt;u0.prototype.set=dxt;$C=u0;o(xEe,"baseAssign");E(xEe,"baseAssign");fxt=xEe;o(bEe,"baseAssignIn");E(bEe,"baseAssignIn");pxt=bEe,TEe=typeof exports=="object"&&exports&&!exports.nodeType&&exports,QTe=TEe&&typeof module=="object"&&module&&!module.nodeType&&module,mxt=QTe&&QTe.exports===TEe,JTe=mxt?Fu.Buffer:void 0,eCe=JTe?JTe.allocUnsafe:void 0;o(CEe,"cloneBuffer");E(CEe,"cloneBuffer");gxt=CEe;o(wEe,"arrayFilter");E(wEe,"arrayFilter");pq=wEe;o(kEe,"stubArray");E(kEe,"stubArray");SEe=kEe,yxt=Object.prototype,vxt=yxt.propertyIsEnumerable,tCe=Object.getOwnPropertySymbols,xxt=tCe?function(e){return e==null?[]:(e=Object(e),pq(tCe(e),function(t){return vxt.call(e,t)}))}:SEe,mq=xxt;o(EEe,"copySymbols");E(EEe,"copySymbols");bxt=EEe,Txt=Object.getOwnPropertySymbols,Cxt=Txt?function(e){for(var t=[];e;)hq(t,mq(e)),e=uEe(e);return t}:SEe,AEe=Cxt;o(REe,"copySymbolsIn");E(REe,"copySymbolsIn");wxt=REe;o(_Ee,"baseGetAllKeys");E(_Ee,"baseGetAllKeys");LEe=_Ee;o(DEe,"getAllKeys");E(DEe,"getAllKeys");SG=DEe;o(IEe,"getAllKeysIn");E(IEe,"getAllKeysIn");MEe=IEe,kxt=s0(Fu,"DataView"),EG=kxt,Sxt=s0(Fu,"Promise"),AG=Sxt,Ext=s0(Fu,"Set"),vv=Ext,rCe="[object Map]",Axt="[object Object]",nCe="[object Promise]",iCe="[object Set]",aCe="[object WeakMap]",sCe="[object DataView]",Rxt=a0(EG),_xt=a0(QC),Lxt=a0(AG),Dxt=a0(vv),Ixt=a0(kG),pg=xp;(EG&&pg(new EG(new ArrayBuffer(1)))!=sCe||QC&&pg(new QC)!=rCe||AG&&pg(AG.resolve())!=nCe||vv&&pg(new vv)!=iCe||kG&&pg(new kG)!=aCe)&&(pg=E(function(e){var t=xp(e),r=t==Axt?e.constructor:void 0,n=r?a0(r):"";if(n)switch(n){case Rxt:return sCe;case _xt:return rCe;case Lxt:return nCe;case Dxt:return iCe;case Ixt:return aCe}return t},"getTag"));Rv=pg,Mxt=Object.prototype,Nxt=Mxt.hasOwnProperty;o(NEe,"initCloneArray");E(NEe,"initCloneArray");Pxt=NEe,Oxt=Fu.Uint8Array,j6=Oxt;o(PEe,"cloneArrayBuffer");E(PEe,"cloneArrayBuffer");gq=PEe;o(OEe,"cloneDataView");E(OEe,"cloneDataView");Bxt=OEe,$xt=/\w*$/;o(BEe,"cloneRegExp");E(BEe,"cloneRegExp");Fxt=BEe,oCe=Ll?Ll.prototype:void 0,lCe=oCe?oCe.valueOf:void 0;o($Ee,"cloneSymbol");E($Ee,"cloneSymbol");zxt=$Ee;o(FEe,"cloneTypedArray");E(FEe,"cloneTypedArray");Gxt=FEe,Vxt="[object Boolean]",Wxt="[object Date]",qxt="[object Map]",Hxt="[object Number]",Uxt="[object RegExp]",Yxt="[object Set]",jxt="[object String]",Xxt="[object Symbol]",Kxt="[object ArrayBuffer]",Zxt="[object DataView]",Qxt="[object Float32Array]",Jxt="[object Float64Array]",ebt="[object Int8Array]",tbt="[object Int16Array]",rbt="[object Int32Array]",nbt="[object Uint8Array]",ibt="[object Uint8ClampedArray]",abt="[object Uint16Array]",sbt="[object Uint32Array]";o(zEe,"initCloneByTag");E(zEe,"initCloneByTag");obt=zEe;o(GEe,"initCloneObject");E(GEe,"initCloneObject");lbt=GEe,cbt="[object Map]";o(VEe,"baseIsMap");E(VEe,"baseIsMap");ubt=VEe,cCe=fp&&fp.isMap,hbt=cCe?kw(cCe):ubt,dbt=hbt,fbt="[object Set]";o(WEe,"baseIsSet");E(WEe,"baseIsSet");pbt=WEe,uCe=fp&&fp.isSet,mbt=uCe?kw(uCe):pbt,gbt=mbt,ybt=1,vbt=2,xbt=4,qEe="[object Arguments]",bbt="[object Array]",Tbt="[object Boolean]",Cbt="[object Date]",wbt="[object Error]",HEe="[object Function]",kbt="[object GeneratorFunction]",Sbt="[object Map]",Ebt="[object Number]",UEe="[object Object]",Abt="[object RegExp]",Rbt="[object Set]",_bt="[object String]",Lbt="[object Symbol]",Dbt="[object WeakMap]",Ibt="[object ArrayBuffer]",Mbt="[object DataView]",Nbt="[object Float32Array]",Pbt="[object Float64Array]",Obt="[object Int8Array]",Bbt="[object Int16Array]",$bt="[object Int32Array]",Fbt="[object Uint8Array]",zbt="[object Uint8ClampedArray]",Gbt="[object Uint16Array]",Vbt="[object Uint32Array]",Qn={};Qn[qEe]=Qn[bbt]=Qn[Ibt]=Qn[Mbt]=Qn[Tbt]=Qn[Cbt]=Qn[Nbt]=Qn[Pbt]=Qn[Obt]=Qn[Bbt]=Qn[$bt]=Qn[Sbt]=Qn[Ebt]=Qn[UEe]=Qn[Abt]=Qn[Rbt]=Qn[_bt]=Qn[Lbt]=Qn[Fbt]=Qn[zbt]=Qn[Gbt]=Qn[Vbt]=!0;Qn[wbt]=Qn[HEe]=Qn[Dbt]=!1;o(FC,"baseClone");E(FC,"baseClone");Wbt=FC,qbt=4;o(YEe,"clone");E(YEe,"clone");Ya=YEe;o(jEe,"compact");E(jEe,"compact");Ew=jEe,Hbt="__lodash_hash_undefined__";o(XEe,"setCacheAdd");E(XEe,"setCacheAdd");Ubt=XEe;o(KEe,"setCacheHas");E(KEe,"setCacheHas");Ybt=KEe;o(JC,"SetCache");E(JC,"SetCache");JC.prototype.add=JC.prototype.push=Ubt;JC.prototype.has=Ybt;yq=JC;o(ZEe,"arraySome");E(ZEe,"arraySome");QEe=ZEe;o(JEe,"cacheHas");E(JEe,"cacheHas");vq=JEe,jbt=1,Xbt=2;o(e4e,"equalArrays");E(e4e,"equalArrays");t4e=e4e;o(r4e,"mapToArray");E(r4e,"mapToArray");Kbt=r4e;o(n4e,"setToArray");E(n4e,"setToArray");xq=n4e,Zbt=1,Qbt=2,Jbt="[object Boolean]",e2t="[object Date]",t2t="[object Error]",r2t="[object Map]",n2t="[object Number]",i2t="[object RegExp]",a2t="[object Set]",s2t="[object String]",o2t="[object Symbol]",l2t="[object ArrayBuffer]",c2t="[object DataView]",hCe=Ll?Ll.prototype:void 0,rz=hCe?hCe.valueOf:void 0;o(i4e,"equalByTag");E(i4e,"equalByTag");u2t=i4e,h2t=1,d2t=Object.prototype,f2t=d2t.hasOwnProperty;o(a4e,"equalObjects");E(a4e,"equalObjects");p2t=a4e,m2t=1,dCe="[object Arguments]",fCe="[object Array]",NA="[object Object]",g2t=Object.prototype,pCe=g2t.hasOwnProperty;o(s4e,"baseIsEqualDeep");E(s4e,"baseIsEqualDeep");y2t=s4e;o(bq,"baseIsEqual");E(bq,"baseIsEqual");o4e=bq,v2t=1,x2t=2;o(l4e,"baseIsMatch");E(l4e,"baseIsMatch");b2t=l4e;o(c4e,"isStrictComparable");E(c4e,"isStrictComparable");u4e=c4e;o(h4e,"getMatchData");E(h4e,"getMatchData");T2t=h4e;o(d4e,"matchesStrictComparable");E(d4e,"matchesStrictComparable");f4e=d4e;o(p4e,"baseMatches");E(p4e,"baseMatches");C2t=p4e;o(m4e,"baseHasIn");E(m4e,"baseHasIn");w2t=m4e;o(g4e,"hasPath");E(g4e,"hasPath");y4e=g4e;o(v4e,"hasIn");E(v4e,"hasIn");k2t=v4e,S2t=1,E2t=2;o(x4e,"baseMatchesProperty");E(x4e,"baseMatchesProperty");A2t=x4e;o(b4e,"baseProperty");E(b4e,"baseProperty");R2t=b4e;o(T4e,"basePropertyDeep");E(T4e,"basePropertyDeep");_2t=T4e;o(C4e,"property");E(C4e,"property");L2t=C4e;o(w4e,"baseIteratee");E(w4e,"baseIteratee");Gu=w4e;o(k4e,"arrayAggregator");E(k4e,"arrayAggregator");D2t=k4e;o(S4e,"createBaseFor");E(S4e,"createBaseFor");I2t=S4e,M2t=I2t(),N2t=M2t;o(E4e,"baseForOwn");E(E4e,"baseForOwn");P2t=E4e;o(A4e,"createBaseEach");E(A4e,"createBaseEach");O2t=A4e,B2t=O2t(P2t),h0=B2t;o(R4e,"baseAggregator");E(R4e,"baseAggregator");$2t=R4e;o(_4e,"createAggregator");E(_4e,"createAggregator");F2t=_4e,L4e=Object.prototype,z2t=L4e.hasOwnProperty,G2t=sq(function(e,t){e=Object(e);var r=-1,n=t.length,i=n>2?t[2]:void 0;for(i&&BR(t[0],t[1],i)&&(n=1);++r<n;)for(var a=t[r],s=FR(a),l=-1,u=s.length;++l<u;){var h=s[l],d=e[h];(d===void 0||Tw(d,L4e[h])&&!z2t.call(e,h))&&(e[h]=a[h])}return e}),Tq=G2t;o(D4e,"isArrayLikeObject");E(D4e,"isArrayLikeObject");mCe=D4e;o(I4e,"arrayIncludesWith");E(I4e,"arrayIncludesWith");M4e=I4e,V2t=200;o(N4e,"baseDifference");E(N4e,"baseDifference");W2t=N4e,q2t=sq(function(e,t){return mCe(e)?W2t(e,fq(t,1,mCe,!0)):[]}),UR=q2t;o(P4e,"last");E(P4e,"last");Xg=P4e;o(O4e,"drop");E(O4e,"drop");Ha=O4e;o(B4e,"dropRight");E(B4e,"dropRight");ew=B4e;o($4e,"castFunction");E($4e,"castFunction");H2t=$4e;o(F4e,"forEach");E(F4e,"forEach");Ir=F4e;o(z4e,"arrayEvery");E(z4e,"arrayEvery");U2t=z4e;o(G4e,"baseEvery");E(G4e,"baseEvery");Y2t=G4e;o(V4e,"every");E(V4e,"every");Ec=V4e;o(W4e,"baseFilter");E(W4e,"baseFilter");q4e=W4e;o(H4e,"filter");E(H4e,"filter");Ml=H4e;o(U4e,"createFind");E(U4e,"createFind");j2t=U4e,X2t=Math.max;o(Y4e,"findIndex");E(Y4e,"findIndex");K2t=Y4e,Z2t=j2t(K2t),_v=Z2t;o(j4e,"head");E(j4e,"head");Rc=j4e;o(X4e,"baseMap");E(X4e,"baseMap");Q2t=X4e;o(K4e,"map");E(K4e,"map");hr=K4e;o(Z4e,"flatMap");E(Z4e,"flatMap");_l=Z4e,J2t=Object.prototype,eTt=J2t.hasOwnProperty,tTt=F2t(function(e,t,r){eTt.call(e,r)?e[r].push(t):aq(e,r,[t])}),rTt=tTt,nTt=Object.prototype,iTt=nTt.hasOwnProperty;o(Q4e,"baseHas");E(Q4e,"baseHas");aTt=Q4e;o(J4e,"has");E(J4e,"has");wr=J4e,sTt="[object String]";o(e3e,"isString");E(e3e,"isString");To=e3e;o(t3e,"baseValues");E(t3e,"baseValues");oTt=t3e;o(r3e,"values");E(r3e,"values");ha=r3e,lTt=Math.max;o(n3e,"includes");E(n3e,"includes");qs=n3e,cTt=Math.max;o(i3e,"indexOf");E(i3e,"indexOf");gCe=i3e,uTt="[object Map]",hTt="[object Set]",dTt=Object.prototype,fTt=dTt.hasOwnProperty;o(a3e,"isEmpty");E(a3e,"isEmpty");ei=a3e,pTt="[object RegExp]";o(s3e,"baseIsRegExp");E(s3e,"baseIsRegExp");mTt=s3e,yCe=fp&&fp.isRegExp,gTt=yCe?kw(yCe):mTt,Xh=gTt;o(o3e,"isUndefined");E(o3e,"isUndefined");Kh=o3e,yTt="Expected a function";o(l3e,"negate");E(l3e,"negate");vTt=l3e;o(c3e,"baseSet");E(c3e,"baseSet");xTt=c3e;o(u3e,"basePickBy");E(u3e,"basePickBy");bTt=u3e;o(h3e,"pickBy");E(h3e,"pickBy");_c=h3e;o(d3e,"baseReduce");E(d3e,"baseReduce");TTt=d3e;o(f3e,"reduce");E(f3e,"reduce");Ko=f3e;o(p3e,"reject");E(p3e,"reject");YR=p3e;o(m3e,"baseSome");E(m3e,"baseSome");CTt=m3e;o(g3e,"some");E(g3e,"some");y3e=g3e,wTt=1/0,kTt=vv&&1/xq(new vv([,-0]))[1]==wTt?function(e){return new vv(e)}:Da,STt=kTt,ETt=200;o(v3e,"baseUniq");E(v3e,"baseUniq");ATt=v3e;o(x3e,"uniq");E(x3e,"uniq");Cq=x3e;o(X6,"PRINT_ERROR");E(X6,"PRINT_ERROR");o(wq,"PRINT_WARNING");E(wq,"PRINT_WARNING");o(kq,"timer");E(kq,"timer");o(Sq,"toFastProperties");E(Sq,"toFastProperties");o(b3e,"tokenLabel");E(b3e,"tokenLabel");o(T3e,"hasTokenLabel");E(T3e,"hasTokenLabel");Vu=class{static{o(this,"AbstractProduction")}static{E(this,"AbstractProduction")}get definition(){return this._definition}set definition(e){this._definition=e}constructor(e){this._definition=e}accept(e){e.visit(this),Ir(this.definition,t=>{t.accept(e)})}},Gs=class extends Vu{static{o(this,"NonTerminal")}static{E(this,"NonTerminal")}constructor(e){super([]),this.idx=1,Xo(this,_c(e,t=>t!==void 0))}set definition(e){}get definition(){return this.referencedRule!==void 0?this.referencedRule.definition:[]}accept(e){e.visit(this)}},Pv=class extends Vu{static{o(this,"Rule")}static{E(this,"Rule")}constructor(e){super(e.definition),this.orgText="",Xo(this,_c(e,t=>t!==void 0))}},Co=class extends Vu{static{o(this,"Alternative")}static{E(this,"Alternative")}constructor(e){super(e.definition),this.ignoreAmbiguities=!1,Xo(this,_c(e,t=>t!==void 0))}},Ua=class extends Vu{static{o(this,"Option")}static{E(this,"Option")}constructor(e){super(e.definition),this.idx=1,Xo(this,_c(e,t=>t!==void 0))}},Zo=class extends Vu{static{o(this,"RepetitionMandatory")}static{E(this,"RepetitionMandatory")}constructor(e){super(e.definition),this.idx=1,Xo(this,_c(e,t=>t!==void 0))}},Qo=class extends Vu{static{o(this,"RepetitionMandatoryWithSeparator")}static{E(this,"RepetitionMandatoryWithSeparator")}constructor(e){super(e.definition),this.idx=1,Xo(this,_c(e,t=>t!==void 0))}},Mi=class extends Vu{static{o(this,"Repetition")}static{E(this,"Repetition")}constructor(e){super(e.definition),this.idx=1,Xo(this,_c(e,t=>t!==void 0))}},wo=class extends Vu{static{o(this,"RepetitionWithSeparator")}static{E(this,"RepetitionWithSeparator")}constructor(e){super(e.definition),this.idx=1,Xo(this,_c(e,t=>t!==void 0))}},ko=class extends Vu{static{o(this,"Alternation")}static{E(this,"Alternation")}get definition(){return this._definition}set definition(e){this._definition=e}constructor(e){super(e.definition),this.idx=1,this.ignoreAmbiguities=!1,this.hasPredicates=!1,Xo(this,_c(e,t=>t!==void 0))}},ci=class{static{o(this,"Terminal")}static{E(this,"Terminal")}constructor(e){this.idx=1,Xo(this,_c(e,t=>t!==void 0))}accept(e){e.visit(this)}};o(C3e,"serializeGrammar");E(C3e,"serializeGrammar");o(zC,"serializeProduction");E(zC,"serializeProduction");Ov=class{static{o(this,"GAstVisitor")}static{E(this,"GAstVisitor")}visit(e){let t=e;switch(t.constructor){case Gs:return this.visitNonTerminal(t);case Co:return this.visitAlternative(t);case Ua:return this.visitOption(t);case Zo:return this.visitRepetitionMandatory(t);case Qo:return this.visitRepetitionMandatoryWithSeparator(t);case wo:return this.visitRepetitionWithSeparator(t);case Mi:return this.visitRepetition(t);case ko:return this.visitAlternation(t);case ci:return this.visitTerminal(t);case Pv:return this.visitRule(t);default:throw Error("non exhaustive match")}}visitNonTerminal(e){}visitAlternative(e){}visitOption(e){}visitRepetition(e){}visitRepetitionMandatory(e){}visitRepetitionMandatoryWithSeparator(e){}visitRepetitionWithSeparator(e){}visitAlternation(e){}visitTerminal(e){}visitRule(e){}};o(w3e,"isSequenceProd");E(w3e,"isSequenceProd");o(tw,"isOptionalProd");E(tw,"isOptionalProd");o(k3e,"isBranchingProd");E(k3e,"isBranchingProd");o(Tc,"getProductionDslName");E(Tc,"getProductionDslName");jR=class{static{o(this,"RestWalker")}static{E(this,"RestWalker")}walk(e,t=[]){Ir(e.definition,(r,n)=>{let i=Ha(e.definition,n+1);if(r instanceof Gs)this.walkProdRef(r,i,t);else if(r instanceof ci)this.walkTerminal(r,i,t);else if(r instanceof Co)this.walkFlat(r,i,t);else if(r instanceof Ua)this.walkOption(r,i,t);else if(r instanceof Zo)this.walkAtLeastOne(r,i,t);else if(r instanceof Qo)this.walkAtLeastOneSep(r,i,t);else if(r instanceof wo)this.walkManySep(r,i,t);else if(r instanceof Mi)this.walkMany(r,i,t);else if(r instanceof ko)this.walkOr(r,i,t);else throw Error("non exhaustive match")})}walkTerminal(e,t,r){}walkProdRef(e,t,r){}walkFlat(e,t,r){let n=t.concat(r);this.walk(e,n)}walkOption(e,t,r){let n=t.concat(r);this.walk(e,n)}walkAtLeastOne(e,t,r){let n=[new Ua({definition:e.definition})].concat(t,r);this.walk(e,n)}walkAtLeastOneSep(e,t,r){let n=RG(e,t,r);this.walk(e,n)}walkMany(e,t,r){let n=[new Ua({definition:e.definition})].concat(t,r);this.walk(e,n)}walkManySep(e,t,r){let n=RG(e,t,r);this.walk(e,n)}walkOr(e,t,r){let n=t.concat(r);Ir(e.definition,i=>{let a=new Co({definition:[i]});this.walk(a,n)})}};o(RG,"restForRepetitionWithSeparator");E(RG,"restForRepetitionWithSeparator");o(Bv,"first");E(Bv,"first");o(S3e,"firstForSequence");E(S3e,"firstForSequence");o(E3e,"firstForBranching");E(E3e,"firstForBranching");o(A3e,"firstForTerminal");E(A3e,"firstForTerminal");R3e="_~IN~_",RTt=class extends jR{static{o(this,"ResyncFollowsWalker")}static{E(this,"ResyncFollowsWalker")}constructor(e){super(),this.topProd=e,this.follows={}}startWalking(){return this.walk(this.topProd),this.follows}walkTerminal(e,t,r){}walkProdRef(e,t,r){let n=L3e(e.referencedRule,e.idx)+this.topProd.name,i=t.concat(r),a=new Co({definition:i}),s=Bv(a);this.follows[n]=s}};o(_3e,"computeAllProdsFollows");E(_3e,"computeAllProdsFollows");o(L3e,"buildBetweenProdsFollowPrefix");E(L3e,"buildBetweenProdsFollowPrefix");o6={},_Tt=new lke;o(Aw,"getRegExpAst");E(Aw,"getRegExpAst");o(D3e,"clearRegExpParserCache");E(D3e,"clearRegExpParserCache");I3e="Complement Sets are not supported for first char optimization",K6=`Unable to use "first char" lexer optimizations:
+`;o(M3e,"getOptimizedStartCodesIndices");E(M3e,"getOptimizedStartCodesIndices");o(Z6,"firstCharOptimizedIndices");E(Z6,"firstCharOptimizedIndices");o(SC,"addOptimizedIdxToResult");E(SC,"addOptimizedIdxToResult");o(N3e,"handleIgnoreCase");E(N3e,"handleIgnoreCase");o(_G,"findCode");E(_G,"findCode");o(Q6,"isWholeOptional");E(Q6,"isWholeOptional");LTt=class extends AR{static{o(this,"CharCodeFinder")}static{E(this,"CharCodeFinder")}constructor(e){super(),this.targetCharCodes=e,this.found=!1}visitChildren(e){if(this.found!==!0){switch(e.type){case"Lookahead":this.visitLookahead(e);return;case"NegativeLookahead":this.visitNegativeLookahead(e);return;case"Lookbehind":this.visitLookbehind(e);return;case"NegativeLookbehind":this.visitNegativeLookbehind(e);return}super.visitChildren(e)}}visitCharacter(e){qs(this.targetCharCodes,e.value)&&(this.found=!0)}visitSet(e){e.complement?_G(e,this.targetCharCodes)===void 0&&(this.found=!0):_G(e,this.targetCharCodes)!==void 0&&(this.found=!0)}};o(XR,"canMatchCharCode");E(XR,"canMatchCharCode");Kg="PATTERN",EC="defaultMode",PA="modes";o(P3e,"analyzeTokenTypes");E(P3e,"analyzeTokenTypes");o(O3e,"validatePatterns");E(O3e,"validatePatterns");o(B3e,"validateRegExpPattern");E(B3e,"validateRegExpPattern");o($3e,"findMissingPatterns");E($3e,"findMissingPatterns");o(F3e,"findInvalidPatterns");E(F3e,"findInvalidPatterns");DTt=/[^\\][$]/;o(z3e,"findEndOfInputAnchor");E(z3e,"findEndOfInputAnchor");o(G3e,"findEmptyMatchRegExps");E(G3e,"findEmptyMatchRegExps");ITt=/[^\\[][\^]|^\^/;o(V3e,"findStartOfInputAnchor");E(V3e,"findStartOfInputAnchor");o(W3e,"findUnsupportedFlags");E(W3e,"findUnsupportedFlags");o(q3e,"findDuplicatePatterns");E(q3e,"findDuplicatePatterns");o(H3e,"findInvalidGroupType");E(H3e,"findInvalidGroupType");o(U3e,"findModesThatDoNotExist");E(U3e,"findModesThatDoNotExist");o(Y3e,"findUnreachablePatterns");E(Y3e,"findUnreachablePatterns");o(j3e,"tryToMatchStrToPattern");E(j3e,"tryToMatchStrToPattern");o(X3e,"noMetaChar");E(X3e,"noMetaChar");o(K3e,"usesLookAheadOrBehind");E(K3e,"usesLookAheadOrBehind");o(LG,"addStickyFlag");E(LG,"addStickyFlag");o(Z3e,"performRuntimeChecks");E(Z3e,"performRuntimeChecks");o(Q3e,"performWarningRuntimeChecks");E(Q3e,"performWarningRuntimeChecks");o(J3e,"cloneEmptyGroups");E(J3e,"cloneEmptyGroups");o(Eq,"isCustomPattern");E(Eq,"isCustomPattern");o(e5e,"isShortPattern");E(e5e,"isShortPattern");MTt={test:E(function(e){let t=e.length;for(let r=this.lastIndex;r<t;r++){let n=e.charCodeAt(r);if(n===10)return this.lastIndex=r+1,!0;if(n===13)return e.charCodeAt(r+1)===10?this.lastIndex=r+2:this.lastIndex=r+1,!0}return!1},"test"),lastIndex:0};o(Aq,"checkLineBreaksIssues");E(Aq,"checkLineBreaksIssues");o(t5e,"buildLineBreakIssueMessage");E(t5e,"buildLineBreakIssueMessage");o(Rq,"getCharCodes");E(Rq,"getCharCodes");o(l6,"addToMapOfArrays");E(l6,"addToMapOfArrays");AC=256,c6=[];o(Zh,"charCodeToOptimizedIndex");E(Zh,"charCodeToOptimizedIndex");o(r5e,"initCharCodeToOptimizedIndexMap");E(r5e,"initCharCodeToOptimizedIndexMap");o($v,"tokenStructuredMatcher");E($v,"tokenStructuredMatcher");o(rw,"tokenStructuredMatcherNoCategories");E(rw,"tokenStructuredMatcherNoCategories");vCe=1,n5e={};o(Fv,"augmentTokenTypes");E(Fv,"augmentTokenTypes");o(i5e,"expandCategories");E(i5e,"expandCategories");o(a5e,"assignTokenDefaultProps");E(a5e,"assignTokenDefaultProps");o(s5e,"assignCategoriesTokensProp");E(s5e,"assignCategoriesTokensProp");o(o5e,"assignCategoriesMapProp");E(o5e,"assignCategoriesMapProp");o(_q,"singleAssignCategoriesToksMap");E(_q,"singleAssignCategoriesToksMap");o(Lq,"hasShortKeyProperty");E(Lq,"hasShortKeyProperty");o(DG,"hasCategoriesProperty");E(DG,"hasCategoriesProperty");o(l5e,"hasExtendingTokensTypesProperty");E(l5e,"hasExtendingTokensTypesProperty");o(c5e,"hasExtendingTokensTypesMapProperty");E(c5e,"hasExtendingTokensTypesMapProperty");o(u5e,"isTokenType");E(u5e,"isTokenType");IG={buildUnableToPopLexerModeMessage(e){return`Unable to pop Lexer Mode after encountering Token ->${e.image}<- The Mode Stack is empty`},buildUnexpectedCharactersMessage(e,t,r,n,i,a){return`unexpected character: ->${e.charAt(t)}<- at offset: ${t}, skipped ${r} characters.`}};(function(e){e[e.MISSING_PATTERN=0]="MISSING_PATTERN",e[e.INVALID_PATTERN=1]="INVALID_PATTERN",e[e.EOI_ANCHOR_FOUND=2]="EOI_ANCHOR_FOUND",e[e.UNSUPPORTED_FLAGS_FOUND=3]="UNSUPPORTED_FLAGS_FOUND",e[e.DUPLICATE_PATTERNS_FOUND=4]="DUPLICATE_PATTERNS_FOUND",e[e.INVALID_GROUP_TYPE_FOUND=5]="INVALID_GROUP_TYPE_FOUND",e[e.PUSH_MODE_DOES_NOT_EXIST=6]="PUSH_MODE_DOES_NOT_EXIST",e[e.MULTI_MODE_LEXER_WITHOUT_DEFAULT_MODE=7]="MULTI_MODE_LEXER_WITHOUT_DEFAULT_MODE",e[e.MULTI_MODE_LEXER_WITHOUT_MODES_PROPERTY=8]="MULTI_MODE_LEXER_WITHOUT_MODES_PROPERTY",e[e.MULTI_MODE_LEXER_DEFAULT_MODE_VALUE_DOES_NOT_EXIST=9]="MULTI_MODE_LEXER_DEFAULT_MODE_VALUE_DOES_NOT_EXIST",e[e.LEXER_DEFINITION_CANNOT_CONTAIN_UNDEFINED=10]="LEXER_DEFINITION_CANNOT_CONTAIN_UNDEFINED",e[e.SOI_ANCHOR_FOUND=11]="SOI_ANCHOR_FOUND",e[e.EMPTY_MATCH_PATTERN=12]="EMPTY_MATCH_PATTERN",e[e.NO_LINE_BREAKS_FLAGS=13]="NO_LINE_BREAKS_FLAGS",e[e.UNREACHABLE_PATTERN=14]="UNREACHABLE_PATTERN",e[e.IDENTIFY_TERMINATOR=15]="IDENTIFY_TERMINATOR",e[e.CUSTOM_LINE_BREAK=16]="CUSTOM_LINE_BREAK",e[e.MULTI_MODE_LEXER_LONGER_ALT_NOT_IN_CURRENT_MODE=17]="MULTI_MODE_LEXER_LONGER_ALT_NOT_IN_CURRENT_MODE"})(Ni||(Ni={}));RC={deferDefinitionErrorsHandling:!1,positionTracking:"full",lineTerminatorsPattern:/\n|\r\n?/g,lineTerminatorCharacters:[`
+`,"\r"],ensureOptimizations:!1,safeMode:!1,errorMessageProvider:IG,traceInitPerf:!1,skipValidations:!1,recoveryEnabled:!0};Object.freeze(RC);Fs=class{static{o(this,"Lexer")}static{E(this,"Lexer")}constructor(e,t=RC){if(this.lexerDefinition=e,this.lexerDefinitionErrors=[],this.lexerDefinitionWarning=[],this.patternIdxToConfig={},this.charCodeToPatternIdxToConfig={},this.modes=[],this.emptyGroups={},this.trackStartLines=!0,this.trackEndLines=!0,this.hasCustom=!1,this.canModeBeOptimized={},this.TRACE_INIT=(n,i)=>{if(this.traceInitPerf===!0){this.traceInitIndent++;let a=new Array(this.traceInitIndent+1).join("	");this.traceInitIndent<this.traceInitMaxIdent&&console.log(`${a}--> <${n}>`);let{time:s,value:l}=kq(i),u=s>10?console.warn:console.log;return this.traceInitIndent<this.traceInitMaxIdent&&u(`${a}<-- <${n}> time: ${s}ms`),this.traceInitIndent--,l}else return i()},typeof t=="boolean")throw Error(`The second argument to the Lexer constructor is now an ILexerConfig Object.
+a boolean 2nd argument is no longer supported`);this.config=Xo({},RC,t);let r=this.config.traceInitPerf;r===!0?(this.traceInitMaxIdent=1/0,this.traceInitPerf=!0):typeof r=="number"&&(this.traceInitMaxIdent=r,this.traceInitPerf=!0),this.traceInitIndent=-1,this.TRACE_INIT("Lexer Constructor",()=>{let n,i=!0;this.TRACE_INIT("Lexer Config handling",()=>{if(this.config.lineTerminatorsPattern===RC.lineTerminatorsPattern)this.config.lineTerminatorsPattern=MTt;else if(this.config.lineTerminatorCharacters===RC.lineTerminatorCharacters)throw Error(`Error: Missing <lineTerminatorCharacters> property on the Lexer config.
+	For details See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#MISSING_LINE_TERM_CHARS`);if(t.safeMode&&t.ensureOptimizations)throw Error('"safeMode" and "ensureOptimizations" flags are mutually exclusive.');this.trackStartLines=/full|onlyStart/i.test(this.config.positionTracking),this.trackEndLines=/full/i.test(this.config.positionTracking),un(e)?n={modes:{defaultMode:Ya(e)},defaultMode:EC}:(i=!1,n=Ya(e))}),this.config.skipValidations===!1&&(this.TRACE_INIT("performRuntimeChecks",()=>{this.lexerDefinitionErrors=this.lexerDefinitionErrors.concat(Z3e(n,this.trackStartLines,this.config.lineTerminatorCharacters))}),this.TRACE_INIT("performWarningRuntimeChecks",()=>{this.lexerDefinitionWarning=this.lexerDefinitionWarning.concat(Q3e(n,this.trackStartLines,this.config.lineTerminatorCharacters))})),n.modes=n.modes?n.modes:{},Ir(n.modes,(s,l)=>{n.modes[l]=YR(s,u=>Kh(u))});let a=jo(n.modes);if(Ir(n.modes,(s,l)=>{this.TRACE_INIT(`Mode: <${l}> processing`,()=>{if(this.modes.push(l),this.config.skipValidations===!1&&this.TRACE_INIT("validatePatterns",()=>{this.lexerDefinitionErrors=this.lexerDefinitionErrors.concat(O3e(s,a))}),ei(this.lexerDefinitionErrors)){Fv(s);let u;this.TRACE_INIT("analyzeTokenTypes",()=>{u=P3e(s,{lineTerminatorCharacters:this.config.lineTerminatorCharacters,positionTracking:t.positionTracking,ensureOptimizations:t.ensureOptimizations,safeMode:t.safeMode,tracer:this.TRACE_INIT})}),this.patternIdxToConfig[l]=u.patternIdxToConfig,this.charCodeToPatternIdxToConfig[l]=u.charCodeToPatternIdxToConfig,this.emptyGroups=Xo({},this.emptyGroups,u.emptyGroups),this.hasCustom=u.hasCustom||this.hasCustom,this.canModeBeOptimized[l]=u.canBeOptimized}})}),this.defaultMode=n.defaultMode,!ei(this.lexerDefinitionErrors)&&!this.config.deferDefinitionErrorsHandling){let l=hr(this.lexerDefinitionErrors,u=>u.message).join(`-----------------------
 `);throw new Error(`Errors detected in definition of Lexer:
-`+l)}vr(this.lexerDefinitionWarning,s=>{Mz(s.message)}),this.TRACE_INIT("Choosing sub-methods implementations",()=>{if(uCe?(this.chopInput=J1,this.match=this.matchWithTest):(this.updateLastIndex=Un,this.match=this.matchWithExec),n&&(this.handleModes=Un),this.trackStartLines===!1&&(this.computeNewColumn=J1),this.trackEndLines===!1&&(this.updateTokenEndLineColumnLocation=Un),/full/i.test(this.config.positionTracking))this.createTokenInstance=this.createFullToken;else if(/onlyStart/i.test(this.config.positionTracking))this.createTokenInstance=this.createStartOnlyToken;else if(/onlyOffset/i.test(this.config.positionTracking))this.createTokenInstance=this.createOffsetOnlyToken;else throw Error(`Invalid <positionTracking> config option: "${this.config.positionTracking}"`);this.hasCustom?(this.addToken=this.addTokenUsingPush,this.handlePayload=this.handlePayloadWithCustom):(this.addToken=this.addTokenUsingMemberAccess,this.handlePayload=this.handlePayloadNoCustom)}),this.TRACE_INIT("Failed Optimization Warnings",()=>{let s=go(this.canModeBeOptimized,(l,u,h)=>(u===!1&&l.push(h),l),[]);if(t.ensureOptimizations&&!Oi(s))throw Error(`Lexer Modes: < ${s.join(", ")} > cannot be optimized.
+`+l)}Ir(this.lexerDefinitionWarning,s=>{wq(s.message)}),this.TRACE_INIT("Choosing sub-methods implementations",()=>{if(i&&(this.handleModes=Da),this.trackStartLines===!1&&(this.computeNewColumn=bw),this.trackEndLines===!1&&(this.updateTokenEndLineColumnLocation=Da),/full/i.test(this.config.positionTracking))this.createTokenInstance=this.createFullToken;else if(/onlyStart/i.test(this.config.positionTracking))this.createTokenInstance=this.createStartOnlyToken;else if(/onlyOffset/i.test(this.config.positionTracking))this.createTokenInstance=this.createOffsetOnlyToken;else throw Error(`Invalid <positionTracking> config option: "${this.config.positionTracking}"`);this.hasCustom?(this.addToken=this.addTokenUsingPush,this.handlePayload=this.handlePayloadWithCustom):(this.addToken=this.addTokenUsingMemberAccess,this.handlePayload=this.handlePayloadNoCustom)}),this.TRACE_INIT("Failed Optimization Warnings",()=>{let s=Ko(this.canModeBeOptimized,(l,u,h)=>(u===!1&&l.push(h),l),[]);if(t.ensureOptimizations&&!ei(s))throw Error(`Lexer Modes: < ${s.join(", ")} > cannot be optimized.
 	 Disable the "ensureOptimizations" lexer config flag to silently ignore this and run the lexer in an un-optimized mode.
-	 Or inspect the console log for details on how to resolve these issues.`)}),this.TRACE_INIT("clearRegExpParserCache",()=>{sCe()}),this.TRACE_INIT("toFastProperties",()=>{Iz(this)})})}tokenize(e,t=this.defaultMode){if(!Oi(this.lexerDefinitionErrors)){let i=nr(this.lexerDefinitionErrors,n=>n.message).join(`-----------------------
+	 Or inspect the console log for details on how to resolve these issues.`)}),this.TRACE_INIT("clearRegExpParserCache",()=>{D3e()}),this.TRACE_INIT("toFastProperties",()=>{Sq(this)})})}tokenize(e,t=this.defaultMode){if(!ei(this.lexerDefinitionErrors)){let n=hr(this.lexerDefinitionErrors,i=>i.message).join(`-----------------------
 `);throw new Error(`Unable to Tokenize because Errors detected in definition of Lexer:
-`+i)}return this.tokenizeInternal(e,t)}tokenizeInternal(e,t){let r,i,n,a,s,l,u,h,d,f,p,m,g,y,v,x,b=e,T=b.length,w=0,C=0,k=this.hasCustom?0:Math.floor(e.length/10),E=new Array(k),A=[],N=this.trackStartLines?1:void 0,P=this.trackStartLines?1:void 0,I=DCe(this.emptyGroups),D=this.trackStartLines,_=this.config.lineTerminatorsPattern,R=0,M=[],L=[],B=[],O=[];Object.freeze(O);let $;function G(){return M}o(G,"getPossiblePatternsSlow"),S(G,"getPossiblePatternsSlow");function F(Q){let Y=fh(Q),ae=L[Y];return ae===void 0?O:ae}o(F,"getPossiblePatternsOptimized"),S(F,"getPossiblePatternsOptimized");let V=S(Q=>{if(B.length===1&&Q.tokenType.PUSH_MODE===void 0){let Y=this.config.errorMessageProvider.buildUnableToPopLexerModeMessage(Q);A.push({offset:Q.startOffset,line:Q.startLine,column:Q.startColumn,length:Q.image.length,message:Y})}else{B.pop();let Y=z0(B);M=this.patternIdxToConfig[Y],L=this.charCodeToPatternIdxToConfig[Y],R=M.length;let ae=this.canModeBeOptimized[Y]&&this.config.safeMode===!1;L&&ae?$=F:$=G}},"pop_mode");function H(Q){B.push(Q),L=this.charCodeToPatternIdxToConfig[Q],M=this.patternIdxToConfig[Q],R=M.length,R=M.length;let Y=this.canModeBeOptimized[Q]&&this.config.safeMode===!1;L&&Y?$=F:$=G}o(H,"push_mode"),S(H,"push_mode"),H.call(this,t);let j,U=this.config.recoveryEnabled;for(;w<T;){l=null;let Q=b.charCodeAt(w),Y=$(Q),ae=Y.length;for(r=0;r<ae;r++){j=Y[r];let J=j.pattern;u=null;let te=j.short;if(te!==!1?Q===te&&(l=J):j.isCustom===!0?(x=J.exec(b,w,E,I),x!==null?(l=x[0],x.payload!==void 0&&(u=x.payload)):l=null):(this.updateLastIndex(J,w),l=this.match(J,e,w)),l!==null){if(s=j.longerAlt,s!==void 0){let re=s.length;for(n=0;n<re;n++){let ee=M[s[n]],Te=ee.pattern;if(h=null,ee.isCustom===!0?(x=Te.exec(b,w,E,I),x!==null?(a=x[0],x.payload!==void 0&&(h=x.payload)):a=null):(this.updateLastIndex(Te,w),a=this.match(Te,e,w)),a&&a.length>l.length){l=a,u=h,j=ee;break}}}break}}if(l!==null){if(d=l.length,f=j.group,f!==void 0&&(p=j.tokenTypeIdx,m=this.createTokenInstance(l,w,p,j.tokenType,N,P,d),this.handlePayload(m,u),f===!1?C=this.addToken(E,C,m):I[f].push(m)),e=this.chopInput(e,d),w=w+d,P=this.computeNewColumn(P,d),D===!0&&j.canLineTerminator===!0){let J=0,te,re;_.lastIndex=0;do te=_.test(l),te===!0&&(re=_.lastIndex-1,J++);while(te===!0);J!==0&&(N=N+J,P=d-re,this.updateTokenEndLineColumnLocation(m,f,re,J,N,P,d))}this.handleModes(j,V,H,m)}else{let J=w,te=N,re=P,ee=U===!1;for(;ee===!1&&w<T;)for(e=this.chopInput(e,1),w++,i=0;i<R;i++){let Te=M[i],ue=Te.pattern,De=Te.short;if(De!==!1?b.charCodeAt(w)===De&&(ee=!0):Te.isCustom===!0?ee=ue.exec(b,w,E,I)!==null:(this.updateLastIndex(ue,w),ee=ue.exec(e)!==null),ee===!0)break}if(g=w-J,P=this.computeNewColumn(P,g),v=this.config.errorMessageProvider.buildUnexpectedCharactersMessage(b,J,g,te,re,z0(B)),A.push({offset:J,line:te,column:re,length:g,message:v}),U===!1)break}}return this.hasCustom||(E.length=C),{tokens:E,groups:I,errors:A}}handleModes(e,t,r,i){if(e.pop===!0){let n=e.push;t(i),n!==void 0&&r.call(this,n)}else e.push!==void 0&&r.call(this,e.push)}chopInput(e,t){return e.substring(t)}updateLastIndex(e,t){e.lastIndex=t}updateTokenEndLineColumnLocation(e,t,r,i,n,a,s){let l,u;t!==void 0&&(l=r===s-1,u=l?-1:0,i===1&&l===!0||(e.endLine=n+u,e.endColumn=a-1+-u))}computeNewColumn(e,t){return e+t}createOffsetOnlyToken(e,t,r,i){return{image:e,startOffset:t,tokenTypeIdx:r,tokenType:i}}createStartOnlyToken(e,t,r,i,n,a){return{image:e,startOffset:t,startLine:n,startColumn:a,tokenTypeIdx:r,tokenType:i}}createFullToken(e,t,r,i,n,a,s){return{image:e,startOffset:t,endOffset:t+s-1,startLine:n,endLine:n,startColumn:a,endColumn:a+s-1,tokenTypeIdx:r,tokenType:i}}addTokenUsingPush(e,t,r){return e.push(r),t}addTokenUsingMemberAccess(e,t,r){return e[t]=r,t++,t}handlePayloadNoCustom(e,t){}handlePayloadWithCustom(e,t){t!==null&&(e.payload=t)}matchWithTest(e,t,r){return e.test(t)===!0?t.substring(r,e.lastIndex):null}matchWithExec(e,t){let r=e.exec(t);return r!==null?r[0]:null}};ls.SKIPPED="This marks a skipped Token pattern, this means each token identified by it will be consumed and then thrown into oblivion, this can be used to for example to completely ignore whitespace.";ls.NA=/NOT_APPLICABLE/;o(B0,"tokenLabel2");S(B0,"tokenLabel");o(zz,"hasTokenLabel2");S(zz,"hasTokenLabel");S0t="parent",J1e="categories",eye="label",tye="group",rye="push_mode",iye="pop_mode",nye="longer_alt",aye="line_breaks",sye="start_chars_hint";o(q1,"createToken");S(q1,"createToken");o(GCe,"createTokenInternal");S(GCe,"createTokenInternal");gf=q1({name:"EOF",pattern:ls.NA});hy([gf]);o(PT,"createTokenInstance");S(PT,"createTokenInstance");o(Gz,"tokenMatcher");S(Gz,"tokenMatcher");z1={buildMismatchTokenMessage({expected:e,actual:t,previous:r,ruleName:i}){return`Expecting ${zz(e)?`--> ${B0(e)} <--`:`token of type --> ${e.name} <--`} but found --> '${t.image}' <--`},buildNotAllInputParsedMessage({firstRedundant:e,ruleName:t}){return"Redundant input, expecting EOF but found: "+e.image},buildNoViableAltMessage({expectedPathsPerAlt:e,actual:t,previous:r,customUserDescription:i,ruleName:n}){let a="Expecting: ",l=`
-but found: '`+jl(t).image+"'";if(i)return a+i+l;{let u=go(e,(p,m)=>p.concat(m),[]),h=nr(u,p=>`[${nr(p,m=>B0(m)).join(", ")}]`),f=`one of these possible Token sequences:
-${nr(h,(p,m)=>`  ${m+1}. ${p}`).join(`
-`)}`;return a+f+l}},buildEarlyExitMessage({expectedIterationPaths:e,actual:t,customUserDescription:r,ruleName:i}){let n="Expecting: ",s=`
-but found: '`+jl(t).image+"'";if(r)return n+r+s;{let u=`expecting at least one iteration which starts with one of these possible Token sequences::
-  <${nr(e,h=>`[${nr(h,d=>B0(d)).join(",")}]`).join(" ,")}>`;return n+u+s}}};Object.freeze(z1);E0t={buildRuleNotFoundError(e,t){return"Invalid grammar, reference to a rule which is not defined: ->"+t.nonTerminalName+`<-
-inside top level rule: ->`+e.name+"<-"}},I0={buildDuplicateFoundError(e,t){function r(d){return d instanceof Wi?d.terminalType.name:d instanceof us?d.nonTerminalName:""}o(r,"getExtraProductionArgument2"),S(r,"getExtraProductionArgument");let i=e.name,n=jl(t),a=n.idx,s=Gl(n),l=r(n),u=a>0,h=`->${s}${u?a:""}<- ${l?`with argument: ->${l}<-`:""}
-                  appears more than once (${t.length} times) in the top level rule: ->${i}<-.                  
+`+n)}return this.tokenizeInternal(e,t)}tokenizeInternal(e,t){let r,n,i,a,s,l,u,h,d,f,p,m,g,y,v,x=e,b=x.length,T=0,k=0,C=this.hasCustom?0:Math.floor(e.length/10),w=new Array(C),S=[],R=this.trackStartLines?1:void 0,L=this.trackStartLines?1:void 0,N=J3e(this.emptyGroups),I=this.trackStartLines,_=this.config.lineTerminatorsPattern,A=0,M=[],D=[],P=[],B=[];Object.freeze(B);let O=!1,$=E(W=>{if(P.length===1&&W.tokenType.PUSH_MODE===void 0){let H=this.config.errorMessageProvider.buildUnableToPopLexerModeMessage(W);S.push({offset:W.startOffset,line:W.startLine,column:W.startColumn,length:W.image.length,message:H})}else{P.pop();let H=Xg(P);M=this.patternIdxToConfig[H],D=this.charCodeToPatternIdxToConfig[H],A=M.length;let j=this.canModeBeOptimized[H]&&this.config.safeMode===!1;D&&j?O=!0:O=!1}},"pop_mode");function V(W){P.push(W),D=this.charCodeToPatternIdxToConfig[W],M=this.patternIdxToConfig[W],A=M.length,A=M.length;let H=this.canModeBeOptimized[W]&&this.config.safeMode===!1;D&&H?O=!0:O=!1}o(V,"push_mode"),E(V,"push_mode"),V.call(this,t);let G,z=this.config.recoveryEnabled;for(;T<b;){l=null,d=-1;let W=x.charCodeAt(T),H;if(O){let Q=Zh(W),U=D[Q];H=U!==void 0?U:B}else H=M;let j=H.length;for(r=0;r<j;r++){G=H[r];let Q=G.pattern;u=null;let U=G.short;if(U!==!1?W===U&&(d=1,l=Q):G.isCustom===!0?(v=Q.exec(x,T,w,N),v!==null?(l=v[0],d=l.length,v.payload!==void 0&&(u=v.payload)):l=null):(Q.lastIndex=T,d=this.matchLength(Q,e,T)),d!==-1){if(s=G.longerAlt,s!==void 0){l=e.substring(T,T+d);let oe=s.length;for(i=0;i<oe;i++){let te=M[s[i]],le=te.pattern;if(h=null,te.isCustom===!0?(v=le.exec(x,T,w,N),v!==null?(a=v[0],v.payload!==void 0&&(h=v.payload)):a=null):(le.lastIndex=T,a=this.match(le,e,T)),a&&a.length>l.length){l=a,d=a.length,u=h,G=te;break}}}break}}if(d!==-1){if(f=G.group,f!==void 0&&(l=l!==null?l:e.substring(T,T+d),p=G.tokenTypeIdx,m=this.createTokenInstance(l,T,p,G.tokenType,R,L,d),this.handlePayload(m,u),f===!1?k=this.addToken(w,k,m):N[f].push(m)),I===!0&&G.canLineTerminator===!0){let Q=0,U,oe;_.lastIndex=0;do l=l!==null?l:e.substring(T,T+d),U=_.test(l),U===!0&&(oe=_.lastIndex-1,Q++);while(U===!0);Q!==0?(R=R+Q,L=d-oe,this.updateTokenEndLineColumnLocation(m,f,oe,Q,R,L,d)):L=this.computeNewColumn(L,d)}else L=this.computeNewColumn(L,d);T=T+d,this.handleModes(G,$,V,m)}else{let Q=T,U=R,oe=L,te=z===!1;for(;te===!1&&T<b;)for(T++,n=0;n<A;n++){let le=M[n],ie=le.pattern,ae=le.short;if(ae!==!1?x.charCodeAt(T)===ae&&(te=!0):le.isCustom===!0?te=ie.exec(x,T,w,N)!==null:(ie.lastIndex=T,te=ie.exec(e)!==null),te===!0)break}if(g=T-Q,L=this.computeNewColumn(L,g),y=this.config.errorMessageProvider.buildUnexpectedCharactersMessage(x,Q,g,U,oe,Xg(P)),S.push({offset:Q,line:U,column:oe,length:g,message:y}),z===!1)break}}return this.hasCustom||(w.length=k),{tokens:w,groups:N,errors:S}}handleModes(e,t,r,n){if(e.pop===!0){let i=e.push;t(n),i!==void 0&&r.call(this,i)}else e.push!==void 0&&r.call(this,e.push)}updateTokenEndLineColumnLocation(e,t,r,n,i,a,s){let l,u;t!==void 0&&(l=r===s-1,u=l?-1:0,n===1&&l===!0||(e.endLine=i+u,e.endColumn=a-1+-u))}computeNewColumn(e,t){return e+t}createOffsetOnlyToken(e,t,r,n){return{image:e,startOffset:t,tokenTypeIdx:r,tokenType:n}}createStartOnlyToken(e,t,r,n,i,a){return{image:e,startOffset:t,startLine:i,startColumn:a,tokenTypeIdx:r,tokenType:n}}createFullToken(e,t,r,n,i,a,s){return{image:e,startOffset:t,endOffset:t+s-1,startLine:i,endLine:i,startColumn:a,endColumn:a+s-1,tokenTypeIdx:r,tokenType:n}}addTokenUsingPush(e,t,r){return e.push(r),t}addTokenUsingMemberAccess(e,t,r){return e[t]=r,t++,t}handlePayloadNoCustom(e,t){}handlePayloadWithCustom(e,t){t!==null&&(e.payload=t)}match(e,t,r){return e.test(t)===!0?t.substring(r,e.lastIndex):null}matchLength(e,t,r){return e.test(t)===!0?e.lastIndex-r:-1}};Fs.SKIPPED="This marks a skipped Token pattern, this means each token identified by it will be consumed and then thrown into oblivion, this can be used to for example to completely ignore whitespace.";Fs.NA=/NOT_APPLICABLE/;o(Ug,"tokenLabel2");E(Ug,"tokenLabel");o(Dq,"hasTokenLabel2");E(Dq,"hasTokenLabel");NTt="parent",xCe="categories",bCe="label",TCe="group",CCe="push_mode",wCe="pop_mode",kCe="longer_alt",SCe="line_breaks",ECe="start_chars_hint";o(xv,"createToken");E(xv,"createToken");o(h5e,"createTokenInternal");E(h5e,"createTokenInternal");pp=xv({name:"EOF",pattern:Fs.NA});Fv([pp]);o(Rw,"createTokenInstance");E(Rw,"createTokenInstance");o(Iq,"tokenMatcher");E(Iq,"tokenMatcher");pv={buildMismatchTokenMessage({expected:e,actual:t,previous:r,ruleName:n}){return`Expecting ${Dq(e)?`--> ${Ug(e)} <--`:`token of type --> ${e.name} <--`} but found --> '${t.image}' <--`},buildNotAllInputParsedMessage({firstRedundant:e,ruleName:t}){return"Redundant input, expecting EOF but found: "+e.image},buildNoViableAltMessage({expectedPathsPerAlt:e,actual:t,previous:r,customUserDescription:n,ruleName:i}){let a="Expecting: ",l=`
+but found: '`+Rc(t).image+"'";if(n)return a+n+l;{let u=Ko(e,(p,m)=>p.concat(m),[]),h=hr(u,p=>`[${hr(p,m=>Ug(m)).join(", ")}]`),f=`one of these possible Token sequences:
+${hr(h,(p,m)=>`  ${m+1}. ${p}`).join(`
+`)}`;return a+f+l}},buildEarlyExitMessage({expectedIterationPaths:e,actual:t,customUserDescription:r,ruleName:n}){let i="Expecting: ",s=`
+but found: '`+Rc(t).image+"'";if(r)return i+r+s;{let u=`expecting at least one iteration which starts with one of these possible Token sequences::
+  <${hr(e,h=>`[${hr(h,d=>Ug(d)).join(",")}]`).join(" ,")}>`;return i+u+s}}};Object.freeze(pv);PTt={buildRuleNotFoundError(e,t){return"Invalid grammar, reference to a rule which is not defined: ->"+t.nonTerminalName+`<-
+inside top level rule: ->`+e.name+"<-"}},Wg={buildDuplicateFoundError(e,t){function r(d){return d instanceof ci?d.terminalType.name:d instanceof Gs?d.nonTerminalName:""}o(r,"getExtraProductionArgument2"),E(r,"getExtraProductionArgument");let n=e.name,i=Rc(t),a=i.idx,s=Tc(i),l=r(i),u=a>0,h=`->${s}${u?a:""}<- ${l?`with argument: ->${l}<-`:""}
+                  appears more than once (${t.length} times) in the top level rule: ->${n}<-.                  
                   For further details see: https://chevrotain.io/docs/FAQ.html#NUMERICAL_SUFFIXES 
                   `;return h=h.replace(/[ \t]+/g," "),h=h.replace(/\s\s+/g,`
 `),h},buildNamespaceConflictError(e){return`Namespace conflict found in grammar.
 The grammar has both a Terminal(Token) and a Non-Terminal(Rule) named: <${e.name}>.
 To resolve this make sure each Terminal and Non-Terminal names are unique
 This is easy to accomplish by using the convention that Terminal names start with an uppercase letter
-and Non-Terminal names start with a lower case letter.`},buildAlternationPrefixAmbiguityError(e){let t=nr(e.prefixPath,n=>B0(n)).join(", "),r=e.alternation.idx===0?"":e.alternation.idx;return`Ambiguous alternatives: <${e.ambiguityIndices.join(" ,")}> due to common lookahead prefix
+and Non-Terminal names start with a lower case letter.`},buildAlternationPrefixAmbiguityError(e){let t=hr(e.prefixPath,i=>Ug(i)).join(", "),r=e.alternation.idx===0?"":e.alternation.idx;return`Ambiguous alternatives: <${e.ambiguityIndices.join(" ,")}> due to common lookahead prefix
 in <OR${r}> inside <${e.topLevelRule.name}> Rule,
 <${t}> may appears as a prefix path in all these alternatives.
 See: https://chevrotain.io/docs/guide/resolving_grammar_errors.html#COMMON_PREFIX
-For Further details.`},buildAlternationAmbiguityError(e){let t=nr(e.prefixPath,n=>B0(n)).join(", "),r=e.alternation.idx===0?"":e.alternation.idx,i=`Ambiguous Alternatives Detected: <${e.ambiguityIndices.join(" ,")}> in <OR${r}> inside <${e.topLevelRule.name}> Rule,
-<${t}> may appears as a prefix path in all these alternatives.
-`;return i=i+`See: https://chevrotain.io/docs/guide/resolving_grammar_errors.html#AMBIGUOUS_ALTERNATIVES
-For Further details.`,i},buildEmptyRepetitionError(e){let t=Gl(e.repetition);return e.repetition.idx!==0&&(t+=e.repetition.idx),`The repetition <${t}> within Rule <${e.topLevelRule.name}> can never consume any tokens.
+For Further details.`},buildAlternationAmbiguityError(e){let t=e.alternation.idx===0?"":e.alternation.idx,r=e.prefixPath.length===0,n=`Ambiguous Alternatives Detected: <${e.ambiguityIndices.join(" ,")}> in <OR${t}> inside <${e.topLevelRule.name}> Rule,
+`;if(r)n+=`These alternatives are all empty (match no tokens), making them indistinguishable.
+Only the last alternative may be empty.
+`;else{let i=hr(e.prefixPath,a=>Ug(a)).join(", ");n+=`<${i}> may appears as a prefix path in all these alternatives.
+`}return n+=`See: https://chevrotain.io/docs/guide/resolving_grammar_errors.html#AMBIGUOUS_ALTERNATIVES
+For Further details.`,n},buildEmptyRepetitionError(e){let t=Tc(e.repetition);return e.repetition.idx!==0&&(t+=e.repetition.idx),`The repetition <${t}> within Rule <${e.topLevelRule.name}> can never consume any tokens.
 This could lead to an infinite loop.`},buildTokenNameError(e){return"deprecated"},buildEmptyAlternationError(e){return`Ambiguous empty alternative: <${e.emptyChoiceIdx+1}> in <OR${e.alternation.idx}> inside <${e.topLevelRule.name}> Rule.
 Only the last alternative may be an empty alternative.`},buildTooManyAlternativesError(e){return`An Alternation cannot have more than 256 alternatives:
 <OR${e.alternation.idx}> inside <${e.topLevelRule.name}> Rule.
- has ${e.alternation.definition.length+1} alternatives.`},buildLeftRecursionError(e){let t=e.topLevelRule.name,r=nr(e.leftRecursionPath,a=>a.name),i=`${t} --> ${r.concat([t]).join(" --> ")}`;return`Left Recursion found in grammar.
+ has ${e.alternation.definition.length+1} alternatives.`},buildLeftRecursionError(e){let t=e.topLevelRule.name,r=hr(e.leftRecursionPath,a=>a.name),n=`${t} --> ${r.concat([t]).join(" --> ")}`;return`Left Recursion found in grammar.
 rule: <${t}> can be invoked from itself (directly or indirectly)
 without consuming any Tokens. The grammar path that causes this is: 
- ${i}
+ ${n}
  To fix this refactor your grammar to remove the left recursion.
-see: https://en.wikipedia.org/wiki/LL_parser#Left_factoring.`},buildInvalidRuleNameError(e){return"deprecated"},buildDuplicateRuleNameError(e){let t;return e.topLevelRule instanceof oy?t=e.topLevelRule.name:t=e.topLevelRule,`Duplicate definition, rule: ->${t}<- is already defined in the grammar: ->${e.grammarName}<-`}};o(VCe,"resolveGrammar");S(VCe,"resolveGrammar");A0t=class extends ly{static{o(this,"GastRefResolverVisitor")}static{S(this,"GastRefResolverVisitor")}constructor(e,t){super(),this.nameToTopRule=e,this.errMsgProvider=t,this.errors=[]}resolveRefs(){vr(Hn(this.nameToTopRule),e=>{this.currTopLevel=e,e.accept(this)})}visitNonTerminal(e){let t=this.nameToTopRule[e.nonTerminalName];if(t)e.referencedRule=t;else{let r=this.errMsgProvider.buildRuleNotFoundError(this.currTopLevel,e);this.errors.push({message:r,type:hs.UNRESOLVED_SUBRULE_REF,ruleName:this.currTopLevel.name,unresolvedRefName:e.nonTerminalName})}}},_0t=class extends CA{static{o(this,"AbstractNextPossibleTokensWalker")}static{S(this,"AbstractNextPossibleTokensWalker")}constructor(e,t){super(),this.topProd=e,this.path=t,this.possibleTokTypes=[],this.nextProductionName="",this.nextProductionOccurrence=0,this.found=!1,this.isAtEndOfPath=!1}startWalking(){if(this.found=!1,this.path.ruleStack[0]!==this.topProd.name)throw Error("The path does not start with the walker's top Rule!");return this.ruleStack=ka(this.path.ruleStack).reverse(),this.occurrenceStack=ka(this.path.occurrenceStack).reverse(),this.ruleStack.pop(),this.occurrenceStack.pop(),this.updateExpectedNext(),this.walk(this.topProd),this.possibleTokTypes}walk(e,t=[]){this.found||super.walk(e,t)}walkProdRef(e,t,r){if(e.referencedRule.name===this.nextProductionName&&e.idx===this.nextProductionOccurrence){let i=t.concat(r);this.updateExpectedNext(),this.walk(e.referencedRule,i)}}updateExpectedNext(){Oi(this.ruleStack)?(this.nextProductionName="",this.nextProductionOccurrence=0,this.isAtEndOfPath=!0):(this.nextProductionName=this.ruleStack.pop(),this.nextProductionOccurrence=this.occurrenceStack.pop())}},D0t=class extends _0t{static{o(this,"NextAfterTokenWalker")}static{S(this,"NextAfterTokenWalker")}constructor(e,t){super(e,t),this.path=t,this.nextTerminalName="",this.nextTerminalOccurrence=0,this.nextTerminalName=this.path.lastTok.name,this.nextTerminalOccurrence=this.path.lastTokOccurrence}walkTerminal(e,t,r){if(this.isAtEndOfPath&&e.terminalType.name===this.nextTerminalName&&e.idx===this.nextTerminalOccurrence&&!this.found){let i=t.concat(r),n=new Ws({definition:i});this.possibleTokTypes=cy(n),this.found=!0}}},wA=class extends CA{static{o(this,"AbstractNextTerminalAfterProductionWalker")}static{S(this,"AbstractNextTerminalAfterProductionWalker")}constructor(e,t){super(),this.topRule=e,this.occurrence=t,this.result={token:void 0,occurrence:void 0,isEndOfRule:void 0}}startWalking(){return this.walk(this.topRule),this.result}},R0t=class extends wA{static{o(this,"NextTerminalAfterManyWalker")}static{S(this,"NextTerminalAfterManyWalker")}walkMany(e,t,r){if(e.idx===this.occurrence){let i=jl(t.concat(r));this.result.isEndOfRule=i===void 0,i instanceof Wi&&(this.result.token=i.terminalType,this.result.occurrence=i.idx)}else super.walkMany(e,t,r)}},oye=class extends wA{static{o(this,"NextTerminalAfterManySepWalker")}static{S(this,"NextTerminalAfterManySepWalker")}walkManySep(e,t,r){if(e.idx===this.occurrence){let i=jl(t.concat(r));this.result.isEndOfRule=i===void 0,i instanceof Wi&&(this.result.token=i.terminalType,this.result.occurrence=i.idx)}else super.walkManySep(e,t,r)}},L0t=class extends wA{static{o(this,"NextTerminalAfterAtLeastOneWalker")}static{S(this,"NextTerminalAfterAtLeastOneWalker")}walkAtLeastOne(e,t,r){if(e.idx===this.occurrence){let i=jl(t.concat(r));this.result.isEndOfRule=i===void 0,i instanceof Wi&&(this.result.token=i.terminalType,this.result.occurrence=i.idx)}else super.walkAtLeastOne(e,t,r)}},lye=class extends wA{static{o(this,"NextTerminalAfterAtLeastOneSepWalker")}static{S(this,"NextTerminalAfterAtLeastOneSepWalker")}walkAtLeastOneSep(e,t,r){if(e.idx===this.occurrence){let i=jl(t.concat(r));this.result.isEndOfRule=i===void 0,i instanceof Wi&&(this.result.token=i.terminalType,this.result.occurrence=i.idx)}else super.walkAtLeastOneSep(e,t,r)}};o(_5,"possiblePathsFrom");S(_5,"possiblePathsFrom");o(Vz,"nextPossibleTokensAfter");S(Vz,"nextPossibleTokensAfter");o(WCe,"expandTopLevelRule");S(WCe,"expandTopLevelRule");(function(e){e[e.OPTION=0]="OPTION",e[e.REPETITION=1]="REPETITION",e[e.REPETITION_MANDATORY=2]="REPETITION_MANDATORY",e[e.REPETITION_MANDATORY_WITH_SEPARATOR=3]="REPETITION_MANDATORY_WITH_SEPARATOR",e[e.REPETITION_WITH_SEPARATOR=4]="REPETITION_WITH_SEPARATOR",e[e.ALTERNATION=5]="ALTERNATION"})(en||(en={}));o(SA,"getProdType");S(SA,"getProdType");o(EF,"getLookaheadPaths");S(EF,"getLookaheadPaths");o(qCe,"buildLookaheadFuncForOr");S(qCe,"buildLookaheadFuncForOr");o(UCe,"buildLookaheadFuncForOptionalProd");S(UCe,"buildLookaheadFuncForOptionalProd");o(HCe,"buildAlternativesLookAheadFunc");S(HCe,"buildAlternativesLookAheadFunc");o(YCe,"buildSingleAlternativeLookaheadFunction");S(YCe,"buildSingleAlternativeLookaheadFunction");M0t=class extends CA{static{o(this,"RestDefinitionFinderWalker")}static{S(this,"RestDefinitionFinderWalker")}constructor(e,t,r){super(),this.topProd=e,this.targetOccurrence=t,this.targetProdType=r}startWalking(){return this.walk(this.topProd),this.restDef}checkIsTarget(e,t,r,i){return e.idx===this.targetOccurrence&&this.targetProdType===t?(this.restDef=r.concat(i),!0):!1}walkOption(e,t,r){this.checkIsTarget(e,en.OPTION,t,r)||super.walkOption(e,t,r)}walkAtLeastOne(e,t,r){this.checkIsTarget(e,en.REPETITION_MANDATORY,t,r)||super.walkOption(e,t,r)}walkAtLeastOneSep(e,t,r){this.checkIsTarget(e,en.REPETITION_MANDATORY_WITH_SEPARATOR,t,r)||super.walkOption(e,t,r)}walkMany(e,t,r){this.checkIsTarget(e,en.REPETITION,t,r)||super.walkOption(e,t,r)}walkManySep(e,t,r){this.checkIsTarget(e,en.REPETITION_WITH_SEPARATOR,t,r)||super.walkOption(e,t,r)}},jCe=class extends ly{static{o(this,"InsideDefinitionFinderVisitor")}static{S(this,"InsideDefinitionFinderVisitor")}constructor(e,t,r){super(),this.targetOccurrence=e,this.targetProdType=t,this.targetRef=r,this.result=[]}checkIsTarget(e,t){e.idx===this.targetOccurrence&&this.targetProdType===t&&(this.targetRef===void 0||e===this.targetRef)&&(this.result=e.definition)}visitOption(e){this.checkIsTarget(e,en.OPTION)}visitRepetition(e){this.checkIsTarget(e,en.REPETITION)}visitRepetitionMandatory(e){this.checkIsTarget(e,en.REPETITION_MANDATORY)}visitRepetitionMandatoryWithSeparator(e){this.checkIsTarget(e,en.REPETITION_MANDATORY_WITH_SEPARATOR)}visitRepetitionWithSeparator(e){this.checkIsTarget(e,en.REPETITION_WITH_SEPARATOR)}visitAlternation(e){this.checkIsTarget(e,en.ALTERNATION)}};o(AF,"initializeArrayOfArrays");S(AF,"initializeArrayOfArrays");o(HE,"pathToHashKeys");S(HE,"pathToHashKeys");o(XCe,"isUniquePrefixHash");S(XCe,"isUniquePrefixHash");o(Wz,"lookAheadSequenceFromAlternatives");S(Wz,"lookAheadSequenceFromAlternatives");o(BT,"getLookaheadPathsForOr");S(BT,"getLookaheadPathsForOr");o(FT,"getLookaheadPathsForOptionalProd");S(FT,"getLookaheadPathsForOptionalProd");o(D5,"containsPath");S(D5,"containsPath");o(KCe,"isStrictPrefixOfPath");S(KCe,"isStrictPrefixOfPath");o(qz,"areTokenCategoriesNotUsed");S(qz,"areTokenCategoriesNotUsed");o(ZCe,"validateLookahead");S(ZCe,"validateLookahead");o(QCe,"validateGrammar");S(QCe,"validateGrammar");o(JCe,"validateDuplicateProductions");S(JCe,"validateDuplicateProductions");o(eke,"identifyProductionForDuplicates");S(eke,"identifyProductionForDuplicates");o(Uz,"getExtraProductionArgument");S(Uz,"getExtraProductionArgument");N0t=class extends ly{static{o(this,"OccurrenceValidationCollector")}static{S(this,"OccurrenceValidationCollector")}constructor(){super(...arguments),this.allProductions=[]}visitNonTerminal(e){this.allProductions.push(e)}visitOption(e){this.allProductions.push(e)}visitRepetitionWithSeparator(e){this.allProductions.push(e)}visitRepetitionMandatory(e){this.allProductions.push(e)}visitRepetitionMandatoryWithSeparator(e){this.allProductions.push(e)}visitRepetition(e){this.allProductions.push(e)}visitAlternation(e){this.allProductions.push(e)}visitTerminal(e){this.allProductions.push(e)}};o(tke,"validateRuleDoesNotAlreadyExist");S(tke,"validateRuleDoesNotAlreadyExist");o(rke,"validateRuleIsOverridden");S(rke,"validateRuleIsOverridden");o(Hz,"validateNoLeftRecursion");S(Hz,"validateNoLeftRecursion");o(Z2,"getFirstNoneTerminal");S(Z2,"getFirstNoneTerminal");Yz=class extends ly{static{o(this,"OrCollector")}static{S(this,"OrCollector")}constructor(){super(...arguments),this.alternations=[]}visitAlternation(e){this.alternations.push(e)}};o(ike,"validateEmptyOrAlternative");S(ike,"validateEmptyOrAlternative");o(nke,"validateAmbiguousAlternationAlternatives");S(nke,"validateAmbiguousAlternationAlternatives");I0t=class extends ly{static{o(this,"RepetitionCollector")}static{S(this,"RepetitionCollector")}constructor(){super(...arguments),this.allProductions=[]}visitRepetitionWithSeparator(e){this.allProductions.push(e)}visitRepetitionMandatory(e){this.allProductions.push(e)}visitRepetitionMandatoryWithSeparator(e){this.allProductions.push(e)}visitRepetition(e){this.allProductions.push(e)}};o(ake,"validateTooManyAlts");S(ake,"validateTooManyAlts");o(ske,"validateSomeNonEmptyLookaheadPath");S(ske,"validateSomeNonEmptyLookaheadPath");o(oke,"checkAlternativesAmbiguities");S(oke,"checkAlternativesAmbiguities");o(lke,"checkPrefixAlternativesAmbiguities");S(lke,"checkPrefixAlternativesAmbiguities");o(cke,"checkTerminalAndNoneTerminalsNameSpace");S(cke,"checkTerminalAndNoneTerminalsNameSpace");o(uke,"resolveGrammar2");S(uke,"resolveGrammar");o(hke,"validateGrammar2");S(hke,"validateGrammar");dke="MismatchedTokenException",fke="NoViableAltException",pke="EarlyExitException",mke="NotAllInputParsedException",gke=[dke,fke,pke,mke];Object.freeze(gke);o(dT,"isRecognitionException");S(dT,"isRecognitionException");EA=class extends Error{static{o(this,"RecognitionException")}static{S(this,"RecognitionException")}constructor(e,t){super(e),this.token=t,this.resyncedTokens=[],Object.setPrototypeOf(this,new.target.prototype),Error.captureStackTrace&&Error.captureStackTrace(this,this.constructor)}},yke=class extends EA{static{o(this,"MismatchedTokenException")}static{S(this,"MismatchedTokenException")}constructor(e,t,r){super(e,t),this.previousToken=r,this.name=dke}},O0t=class extends EA{static{o(this,"NoViableAltException")}static{S(this,"NoViableAltException")}constructor(e,t,r){super(e,t),this.previousToken=r,this.name=fke}},P0t=class extends EA{static{o(this,"NotAllInputParsedException")}static{S(this,"NotAllInputParsedException")}constructor(e,t){super(e,t),this.name=mke}},B0t=class extends EA{static{o(this,"EarlyExitException")}static{S(this,"EarlyExitException")}constructor(e,t,r){super(e,t),this.previousToken=r,this.name=pke}},KP={},vke="InRuleRecoveryException",F0t=class extends Error{static{o(this,"InRuleRecoveryException")}static{S(this,"InRuleRecoveryException")}constructor(e){super(e),this.name=vke}},$0t=class{static{o(this,"Recoverable")}static{S(this,"Recoverable")}initRecoverable(e){this.firstAfterRepMap={},this.resyncFollows={},this.recoveryEnabled=mr(e,"recoveryEnabled")?e.recoveryEnabled:ph.recoveryEnabled,this.recoveryEnabled&&(this.attemptInRepetitionRecovery=xke)}getTokenToInsert(e){let t=PT(e,"",NaN,NaN,NaN,NaN,NaN,NaN);return t.isInsertedInRecovery=!0,t}canTokenTypeBeInsertedInRecovery(e){return!0}canTokenTypeBeDeletedInRecovery(e){return!0}tryInRepetitionRecovery(e,t,r,i){let n=this.findReSyncTokenType(),a=this.exportLexerState(),s=[],l=!1,u=this.LA(1),h=this.LA(1),d=S(()=>{let f=this.LA(0),p=this.errorMessageProvider.buildMismatchTokenMessage({expected:i,actual:u,previous:f,ruleName:this.getCurrRuleFullName()}),m=new yke(p,u,this.LA(0));m.resyncedTokens=cT(s),this.SAVE_ERROR(m)},"generateErrorMessage");for(;!l;)if(this.tokenMatcher(h,i)){d();return}else if(r.call(this)){d(),e.apply(this,t);return}else this.tokenMatcher(h,n)?l=!0:(h=this.SKIP_TOKEN(),this.addToResyncTokens(h,s));this.importLexerState(a)}shouldInRepetitionRecoveryBeTried(e,t,r){return!(r===!1||this.tokenMatcher(this.LA(1),e)||this.isBackTracking()||this.canPerformInRuleRecovery(e,this.getFollowsForInRuleRecovery(e,t)))}getFollowsForInRuleRecovery(e,t){let r=this.getCurrentGrammarPath(e,t);return this.getNextPossibleTokenTypes(r)}tryInRuleRecovery(e,t){if(this.canRecoverWithSingleTokenInsertion(e,t))return this.getTokenToInsert(e);if(this.canRecoverWithSingleTokenDeletion(e)){let r=this.SKIP_TOKEN();return this.consumeToken(),r}throw new F0t("sad sad panda")}canPerformInRuleRecovery(e,t){return this.canRecoverWithSingleTokenInsertion(e,t)||this.canRecoverWithSingleTokenDeletion(e)}canRecoverWithSingleTokenInsertion(e,t){if(!this.canTokenTypeBeInsertedInRecovery(e)||Oi(t))return!1;let r=this.LA(1);return ty(t,n=>this.tokenMatcher(r,n))!==void 0}canRecoverWithSingleTokenDeletion(e){return this.canTokenTypeBeDeletedInRecovery(e)?this.tokenMatcher(this.LA(2),e):!1}isInCurrentRuleReSyncSet(e){let t=this.getCurrFollowKey(),r=this.getFollowSetFromFollowKey(t);return fs(r,e)}findReSyncTokenType(){let e=this.flattenFollowSet(),t=this.LA(1),r=2;for(;;){let i=ty(e,n=>Gz(t,n));if(i!==void 0)return i;t=this.LA(r),r++}}getCurrFollowKey(){if(this.RULE_STACK.length===1)return KP;let e=this.getLastExplicitRuleShortName(),t=this.getLastExplicitRuleOccurrenceIndex(),r=this.getPreviousExplicitRuleShortName();return{ruleName:this.shortRuleNameToFullName(e),idxInCallingRule:t,inRule:this.shortRuleNameToFullName(r)}}buildFullFollowKeyStack(){let e=this.RULE_STACK,t=this.RULE_OCCURRENCE_STACK;return nr(e,(r,i)=>i===0?KP:{ruleName:this.shortRuleNameToFullName(r),idxInCallingRule:t[i],inRule:this.shortRuleNameToFullName(e[i-1])})}flattenFollowSet(){let e=nr(this.buildFullFollowKeyStack(),t=>this.getFollowSetFromFollowKey(t));return Ul(e)}getFollowSetFromFollowKey(e){if(e===KP)return[gf];let t=e.ruleName+e.idxInCallingRule+iCe+e.inRule;return this.resyncFollows[t]}addToResyncTokens(e,t){return this.tokenMatcher(e,gf)||t.push(e),t}reSyncTo(e){let t=[],r=this.LA(1);for(;this.tokenMatcher(r,e)===!1;)r=this.SKIP_TOKEN(),this.addToResyncTokens(r,t);return cT(t)}attemptInRepetitionRecovery(e,t,r,i,n,a,s){}getCurrentGrammarPath(e,t){let r=this.getHumanReadableRuleStack(),i=ka(this.RULE_OCCURRENCE_STACK);return{ruleStack:r,occurrenceStack:i,lastTok:e,lastTokOccurrence:t}}getHumanReadableRuleStack(){return nr(this.RULE_STACK,e=>this.shortRuleNameToFullName(e))}};o(xke,"attemptInRepetitionRecovery");S(xke,"attemptInRepetitionRecovery");z0t=4,Cf=8,G0t=8,bke=1<<Cf,Tke=2<<Cf,_F=3<<Cf,DF=4<<Cf,RF=5<<Cf,YE=6<<Cf;o(jE,"getKeyForAutomaticLookahead");S(jE,"getKeyForAutomaticLookahead");_wr=32-G0t,jz=class{static{o(this,"LLkLookaheadStrategy")}static{S(this,"LLkLookaheadStrategy")}constructor(e){var t;this.maxLookahead=(t=e?.maxLookahead)!==null&&t!==void 0?t:ph.maxLookahead}validate(e){let t=this.validateNoLeftRecursion(e.rules);if(Oi(t)){let r=this.validateEmptyOrAlternatives(e.rules),i=this.validateAmbiguousAlternationAlternatives(e.rules,this.maxLookahead),n=this.validateSomeNonEmptyLookaheadPath(e.rules,this.maxLookahead);return[...t,...r,...i,...n]}return t}validateNoLeftRecursion(e){return Jo(e,t=>Hz(t,t,I0))}validateEmptyOrAlternatives(e){return Jo(e,t=>ike(t,I0))}validateAmbiguousAlternationAlternatives(e,t){return Jo(e,r=>nke(r,t,I0))}validateSomeNonEmptyLookaheadPath(e,t){return ske(e,t,I0)}buildLookaheadForAlternation(e){return qCe(e.prodOccurrence,e.rule,e.maxLookahead,e.hasPredicates,e.dynamicTokensEnabled,HCe)}buildLookaheadForOptional(e){return UCe(e.prodOccurrence,e.rule,e.maxLookahead,e.dynamicTokensEnabled,SA(e.prodType),YCe)}},V0t=class{static{o(this,"LooksAhead")}static{S(this,"LooksAhead")}initLooksAhead(e){this.dynamicTokensEnabled=mr(e,"dynamicTokensEnabled")?e.dynamicTokensEnabled:ph.dynamicTokensEnabled,this.maxLookahead=mr(e,"maxLookahead")?e.maxLookahead:ph.maxLookahead,this.lookaheadStrategy=mr(e,"lookaheadStrategy")?e.lookaheadStrategy:new jz({maxLookahead:this.maxLookahead}),this.lookAheadFuncsCache=new Map}preComputeLookaheadFunctions(e){vr(e,t=>{this.TRACE_INIT(`${t.name} Rule Lookahead`,()=>{let{alternation:r,repetition:i,option:n,repetitionMandatory:a,repetitionMandatoryWithSeparator:s,repetitionWithSeparator:l}=Cke(t);vr(r,u=>{let h=u.idx===0?"":u.idx;this.TRACE_INIT(`${Gl(u)}${h}`,()=>{let d=this.lookaheadStrategy.buildLookaheadForAlternation({prodOccurrence:u.idx,rule:t,maxLookahead:u.maxLookahead||this.maxLookahead,hasPredicates:u.hasPredicates,dynamicTokensEnabled:this.dynamicTokensEnabled}),f=jE(this.fullRuleNameToShort[t.name],bke,u.idx);this.setLaFuncCache(f,d)})}),vr(i,u=>{this.computeLookaheadFunc(t,u.idx,_F,"Repetition",u.maxLookahead,Gl(u))}),vr(n,u=>{this.computeLookaheadFunc(t,u.idx,Tke,"Option",u.maxLookahead,Gl(u))}),vr(a,u=>{this.computeLookaheadFunc(t,u.idx,DF,"RepetitionMandatory",u.maxLookahead,Gl(u))}),vr(s,u=>{this.computeLookaheadFunc(t,u.idx,YE,"RepetitionMandatoryWithSeparator",u.maxLookahead,Gl(u))}),vr(l,u=>{this.computeLookaheadFunc(t,u.idx,RF,"RepetitionWithSeparator",u.maxLookahead,Gl(u))})})})}computeLookaheadFunc(e,t,r,i,n,a){this.TRACE_INIT(`${a}${t===0?"":t}`,()=>{let s=this.lookaheadStrategy.buildLookaheadForOptional({prodOccurrence:t,rule:e,maxLookahead:n||this.maxLookahead,dynamicTokensEnabled:this.dynamicTokensEnabled,prodType:i}),l=jE(this.fullRuleNameToShort[e.name],r,t);this.setLaFuncCache(l,s)})}getKeyForAutomaticLookahead(e,t){let r=this.getLastExplicitRuleShortName();return jE(r,e,t)}getLaFuncFromCache(e){return this.lookAheadFuncsCache.get(e)}setLaFuncCache(e,t){this.lookAheadFuncsCache.set(e,t)}},W0t=class extends ly{static{o(this,"DslMethodsCollectorVisitor")}static{S(this,"DslMethodsCollectorVisitor")}constructor(){super(...arguments),this.dslMethods={option:[],alternation:[],repetition:[],repetitionWithSeparator:[],repetitionMandatory:[],repetitionMandatoryWithSeparator:[]}}reset(){this.dslMethods={option:[],alternation:[],repetition:[],repetitionWithSeparator:[],repetitionMandatory:[],repetitionMandatoryWithSeparator:[]}}visitOption(e){this.dslMethods.option.push(e)}visitRepetitionWithSeparator(e){this.dslMethods.repetitionWithSeparator.push(e)}visitRepetitionMandatory(e){this.dslMethods.repetitionMandatory.push(e)}visitRepetitionMandatoryWithSeparator(e){this.dslMethods.repetitionMandatoryWithSeparator.push(e)}visitRepetition(e){this.dslMethods.repetition.push(e)}visitAlternation(e){this.dslMethods.alternation.push(e)}},vE=new W0t;o(Cke,"collectMethods");S(Cke,"collectMethods");o(LF,"setNodeLocationOnlyOffset");S(LF,"setNodeLocationOnlyOffset");o(MF,"setNodeLocationFull");S(MF,"setNodeLocationFull");o(kke,"addTerminalToCst");S(kke,"addTerminalToCst");o(wke,"addNoneTerminalToCst");S(wke,"addNoneTerminalToCst");q0t="name";o(Xz,"defineNameProp");S(Xz,"defineNameProp");o(Ske,"defaultVisit");S(Ske,"defaultVisit");o(Eke,"createBaseSemanticVisitorConstructor");S(Eke,"createBaseSemanticVisitorConstructor");o(Ake,"createBaseVisitorConstructorWithDefaults");S(Ake,"createBaseVisitorConstructorWithDefaults");(function(e){e[e.REDUNDANT_METHOD=0]="REDUNDANT_METHOD",e[e.MISSING_METHOD=1]="MISSING_METHOD"})(NF||(NF={}));o(_ke,"validateVisitor");S(_ke,"validateVisitor");o(Dke,"validateMissingCstMethods");S(Dke,"validateMissingCstMethods");U0t=class{static{o(this,"TreeBuilder")}static{S(this,"TreeBuilder")}initTreeBuilder(e){if(this.CST_STACK=[],this.outputCst=e.outputCst,this.nodeLocationTracking=mr(e,"nodeLocationTracking")?e.nodeLocationTracking:ph.nodeLocationTracking,!this.outputCst)this.cstInvocationStateUpdate=Un,this.cstFinallyStateUpdate=Un,this.cstPostTerminal=Un,this.cstPostNonTerminal=Un,this.cstPostRule=Un;else if(/full/i.test(this.nodeLocationTracking))this.recoveryEnabled?(this.setNodeLocationFromToken=MF,this.setNodeLocationFromNode=MF,this.cstPostRule=Un,this.setInitialNodeLocation=this.setInitialNodeLocationFullRecovery):(this.setNodeLocationFromToken=Un,this.setNodeLocationFromNode=Un,this.cstPostRule=this.cstPostRuleFull,this.setInitialNodeLocation=this.setInitialNodeLocationFullRegular);else if(/onlyOffset/i.test(this.nodeLocationTracking))this.recoveryEnabled?(this.setNodeLocationFromToken=LF,this.setNodeLocationFromNode=LF,this.cstPostRule=Un,this.setInitialNodeLocation=this.setInitialNodeLocationOnlyOffsetRecovery):(this.setNodeLocationFromToken=Un,this.setNodeLocationFromNode=Un,this.cstPostRule=this.cstPostRuleOnlyOffset,this.setInitialNodeLocation=this.setInitialNodeLocationOnlyOffsetRegular);else if(/none/i.test(this.nodeLocationTracking))this.setNodeLocationFromToken=Un,this.setNodeLocationFromNode=Un,this.cstPostRule=Un,this.setInitialNodeLocation=Un;else throw Error(`Invalid <nodeLocationTracking> config option: "${e.nodeLocationTracking}"`)}setInitialNodeLocationOnlyOffsetRecovery(e){e.location={startOffset:NaN,endOffset:NaN}}setInitialNodeLocationOnlyOffsetRegular(e){e.location={startOffset:this.LA(1).startOffset,endOffset:NaN}}setInitialNodeLocationFullRecovery(e){e.location={startOffset:NaN,startLine:NaN,startColumn:NaN,endOffset:NaN,endLine:NaN,endColumn:NaN}}setInitialNodeLocationFullRegular(e){let t=this.LA(1);e.location={startOffset:t.startOffset,startLine:t.startLine,startColumn:t.startColumn,endOffset:NaN,endLine:NaN,endColumn:NaN}}cstInvocationStateUpdate(e){let t={name:e,children:Object.create(null)};this.setInitialNodeLocation(t),this.CST_STACK.push(t)}cstFinallyStateUpdate(){this.CST_STACK.pop()}cstPostRuleFull(e){let t=this.LA(0),r=e.location;r.startOffset<=t.startOffset?(r.endOffset=t.endOffset,r.endLine=t.endLine,r.endColumn=t.endColumn):(r.startOffset=NaN,r.startLine=NaN,r.startColumn=NaN)}cstPostRuleOnlyOffset(e){let t=this.LA(0),r=e.location;r.startOffset<=t.startOffset?r.endOffset=t.endOffset:r.startOffset=NaN}cstPostTerminal(e,t){let r=this.CST_STACK[this.CST_STACK.length-1];kke(r,t,e),this.setNodeLocationFromToken(r.location,t)}cstPostNonTerminal(e,t){let r=this.CST_STACK[this.CST_STACK.length-1];wke(r,t,e),this.setNodeLocationFromNode(r.location,e.location)}getBaseCstVisitorConstructor(){if(dh(this.baseCstVisitorConstructor)){let e=Eke(this.className,po(this.gastProductionsCache));return this.baseCstVisitorConstructor=e,e}return this.baseCstVisitorConstructor}getBaseCstVisitorConstructorWithDefaults(){if(dh(this.baseCstVisitorWithDefaultsConstructor)){let e=Ake(this.className,po(this.gastProductionsCache),this.getBaseCstVisitorConstructor());return this.baseCstVisitorWithDefaultsConstructor=e,e}return this.baseCstVisitorWithDefaultsConstructor}getLastExplicitRuleShortName(){let e=this.RULE_STACK;return e[e.length-1]}getPreviousExplicitRuleShortName(){let e=this.RULE_STACK;return e[e.length-2]}getLastExplicitRuleOccurrenceIndex(){let e=this.RULE_OCCURRENCE_STACK;return e[e.length-1]}},H0t=class{static{o(this,"LexerAdapter")}static{S(this,"LexerAdapter")}initLexerAdapter(){this.tokVector=[],this.tokVectorLength=0,this.currIdx=-1}set input(e){if(this.selfAnalysisDone!==!0)throw Error("Missing <performSelfAnalysis> invocation at the end of the Parser's constructor.");this.reset(),this.tokVector=e,this.tokVectorLength=e.length}get input(){return this.tokVector}SKIP_TOKEN(){return this.currIdx<=this.tokVector.length-2?(this.consumeToken(),this.LA(1)):R5}LA(e){let t=this.currIdx+e;return t<0||this.tokVectorLength<=t?R5:this.tokVector[t]}consumeToken(){this.currIdx++}exportLexerState(){return this.currIdx}importLexerState(e){this.currIdx=e}resetLexerState(){this.currIdx=-1}moveToTerminatedState(){this.currIdx=this.tokVector.length-1}getLexerPosition(){return this.exportLexerState()}},Y0t=class{static{o(this,"RecognizerApi")}static{S(this,"RecognizerApi")}ACTION(e){return e.call(this)}consume(e,t,r){return this.consumeInternal(t,e,r)}subrule(e,t,r){return this.subruleInternal(t,e,r)}option(e,t){return this.optionInternal(t,e)}or(e,t){return this.orInternal(t,e)}many(e,t){return this.manyInternal(e,t)}atLeastOne(e,t){return this.atLeastOneInternal(e,t)}CONSUME(e,t){return this.consumeInternal(e,0,t)}CONSUME1(e,t){return this.consumeInternal(e,1,t)}CONSUME2(e,t){return this.consumeInternal(e,2,t)}CONSUME3(e,t){return this.consumeInternal(e,3,t)}CONSUME4(e,t){return this.consumeInternal(e,4,t)}CONSUME5(e,t){return this.consumeInternal(e,5,t)}CONSUME6(e,t){return this.consumeInternal(e,6,t)}CONSUME7(e,t){return this.consumeInternal(e,7,t)}CONSUME8(e,t){return this.consumeInternal(e,8,t)}CONSUME9(e,t){return this.consumeInternal(e,9,t)}SUBRULE(e,t){return this.subruleInternal(e,0,t)}SUBRULE1(e,t){return this.subruleInternal(e,1,t)}SUBRULE2(e,t){return this.subruleInternal(e,2,t)}SUBRULE3(e,t){return this.subruleInternal(e,3,t)}SUBRULE4(e,t){return this.subruleInternal(e,4,t)}SUBRULE5(e,t){return this.subruleInternal(e,5,t)}SUBRULE6(e,t){return this.subruleInternal(e,6,t)}SUBRULE7(e,t){return this.subruleInternal(e,7,t)}SUBRULE8(e,t){return this.subruleInternal(e,8,t)}SUBRULE9(e,t){return this.subruleInternal(e,9,t)}OPTION(e){return this.optionInternal(e,0)}OPTION1(e){return this.optionInternal(e,1)}OPTION2(e){return this.optionInternal(e,2)}OPTION3(e){return this.optionInternal(e,3)}OPTION4(e){return this.optionInternal(e,4)}OPTION5(e){return this.optionInternal(e,5)}OPTION6(e){return this.optionInternal(e,6)}OPTION7(e){return this.optionInternal(e,7)}OPTION8(e){return this.optionInternal(e,8)}OPTION9(e){return this.optionInternal(e,9)}OR(e){return this.orInternal(e,0)}OR1(e){return this.orInternal(e,1)}OR2(e){return this.orInternal(e,2)}OR3(e){return this.orInternal(e,3)}OR4(e){return this.orInternal(e,4)}OR5(e){return this.orInternal(e,5)}OR6(e){return this.orInternal(e,6)}OR7(e){return this.orInternal(e,7)}OR8(e){return this.orInternal(e,8)}OR9(e){return this.orInternal(e,9)}MANY(e){this.manyInternal(0,e)}MANY1(e){this.manyInternal(1,e)}MANY2(e){this.manyInternal(2,e)}MANY3(e){this.manyInternal(3,e)}MANY4(e){this.manyInternal(4,e)}MANY5(e){this.manyInternal(5,e)}MANY6(e){this.manyInternal(6,e)}MANY7(e){this.manyInternal(7,e)}MANY8(e){this.manyInternal(8,e)}MANY9(e){this.manyInternal(9,e)}MANY_SEP(e){this.manySepFirstInternal(0,e)}MANY_SEP1(e){this.manySepFirstInternal(1,e)}MANY_SEP2(e){this.manySepFirstInternal(2,e)}MANY_SEP3(e){this.manySepFirstInternal(3,e)}MANY_SEP4(e){this.manySepFirstInternal(4,e)}MANY_SEP5(e){this.manySepFirstInternal(5,e)}MANY_SEP6(e){this.manySepFirstInternal(6,e)}MANY_SEP7(e){this.manySepFirstInternal(7,e)}MANY_SEP8(e){this.manySepFirstInternal(8,e)}MANY_SEP9(e){this.manySepFirstInternal(9,e)}AT_LEAST_ONE(e){this.atLeastOneInternal(0,e)}AT_LEAST_ONE1(e){return this.atLeastOneInternal(1,e)}AT_LEAST_ONE2(e){this.atLeastOneInternal(2,e)}AT_LEAST_ONE3(e){this.atLeastOneInternal(3,e)}AT_LEAST_ONE4(e){this.atLeastOneInternal(4,e)}AT_LEAST_ONE5(e){this.atLeastOneInternal(5,e)}AT_LEAST_ONE6(e){this.atLeastOneInternal(6,e)}AT_LEAST_ONE7(e){this.atLeastOneInternal(7,e)}AT_LEAST_ONE8(e){this.atLeastOneInternal(8,e)}AT_LEAST_ONE9(e){this.atLeastOneInternal(9,e)}AT_LEAST_ONE_SEP(e){this.atLeastOneSepFirstInternal(0,e)}AT_LEAST_ONE_SEP1(e){this.atLeastOneSepFirstInternal(1,e)}AT_LEAST_ONE_SEP2(e){this.atLeastOneSepFirstInternal(2,e)}AT_LEAST_ONE_SEP3(e){this.atLeastOneSepFirstInternal(3,e)}AT_LEAST_ONE_SEP4(e){this.atLeastOneSepFirstInternal(4,e)}AT_LEAST_ONE_SEP5(e){this.atLeastOneSepFirstInternal(5,e)}AT_LEAST_ONE_SEP6(e){this.atLeastOneSepFirstInternal(6,e)}AT_LEAST_ONE_SEP7(e){this.atLeastOneSepFirstInternal(7,e)}AT_LEAST_ONE_SEP8(e){this.atLeastOneSepFirstInternal(8,e)}AT_LEAST_ONE_SEP9(e){this.atLeastOneSepFirstInternal(9,e)}RULE(e,t,r=L5){if(fs(this.definedRulesNames,e)){let a={message:I0.buildDuplicateRuleNameError({topLevelRule:e,grammarName:this.className}),type:hs.DUPLICATE_RULE_NAME,ruleName:e};this.definitionErrors.push(a)}this.definedRulesNames.push(e);let i=this.defineRule(e,t,r);return this[e]=i,i}OVERRIDE_RULE(e,t,r=L5){let i=rke(e,this.definedRulesNames,this.className);this.definitionErrors=this.definitionErrors.concat(i);let n=this.defineRule(e,t,r);return this[e]=n,n}BACKTRACK(e,t){return function(){this.isBackTrackingStack.push(1);let r=this.saveRecogState();try{return e.apply(this,t),!0}catch(i){if(dT(i))return!1;throw i}finally{this.reloadRecogState(r),this.isBackTrackingStack.pop()}}}getGAstProductions(){return this.gastProductionsCache}getSerializedGastProductions(){return ZTe(Hn(this.gastProductionsCache))}},j0t=class{static{o(this,"RecognizerEngine")}static{S(this,"RecognizerEngine")}initRecognizerEngine(e,t){if(this.className=this.constructor.name,this.shortRuleNameToFull={},this.fullRuleNameToShort={},this.ruleShortNameIdx=256,this.tokenMatcher=hT,this.subruleIdx=0,this.definedRulesNames=[],this.tokensMap={},this.isBackTrackingStack=[],this.RULE_STACK=[],this.RULE_OCCURRENCE_STACK=[],this.gastProductionsCache={},mr(t,"serializedGrammar"))throw Error(`The Parser's configuration can no longer contain a <serializedGrammar> property.
+see: https://en.wikipedia.org/wiki/LL_parser#Left_factoring.`},buildInvalidRuleNameError(e){return"deprecated"},buildDuplicateRuleNameError(e){let t;return e.topLevelRule instanceof Pv?t=e.topLevelRule.name:t=e.topLevelRule,`Duplicate definition, rule: ->${t}<- is already defined in the grammar: ->${e.grammarName}<-`}};o(d5e,"resolveGrammar");E(d5e,"resolveGrammar");OTt=class extends Ov{static{o(this,"GastRefResolverVisitor")}static{E(this,"GastRefResolverVisitor")}constructor(e,t){super(),this.nameToTopRule=e,this.errMsgProvider=t,this.errors=[]}resolveRefs(){Ir(ha(this.nameToTopRule),e=>{this.currTopLevel=e,e.accept(this)})}visitNonTerminal(e){let t=this.nameToTopRule[e.nonTerminalName];if(t)e.referencedRule=t;else{let r=this.errMsgProvider.buildRuleNotFoundError(this.currTopLevel,e);this.errors.push({message:r,type:Vs.UNRESOLVED_SUBRULE_REF,ruleName:this.currTopLevel.name,unresolvedRefName:e.nonTerminalName})}}},BTt=class extends jR{static{o(this,"AbstractNextPossibleTokensWalker")}static{E(this,"AbstractNextPossibleTokensWalker")}constructor(e,t){super(),this.topProd=e,this.path=t,this.possibleTokTypes=[],this.nextProductionName="",this.nextProductionOccurrence=0,this.found=!1,this.isAtEndOfPath=!1}startWalking(){if(this.found=!1,this.path.ruleStack[0]!==this.topProd.name)throw Error("The path does not start with the walker's top Rule!");return this.ruleStack=Ya(this.path.ruleStack).reverse(),this.occurrenceStack=Ya(this.path.occurrenceStack).reverse(),this.ruleStack.pop(),this.occurrenceStack.pop(),this.updateExpectedNext(),this.walk(this.topProd),this.possibleTokTypes}walk(e,t=[]){this.found||super.walk(e,t)}walkProdRef(e,t,r){if(e.referencedRule.name===this.nextProductionName&&e.idx===this.nextProductionOccurrence){let n=t.concat(r);this.updateExpectedNext(),this.walk(e.referencedRule,n)}}updateExpectedNext(){ei(this.ruleStack)?(this.nextProductionName="",this.nextProductionOccurrence=0,this.isAtEndOfPath=!0):(this.nextProductionName=this.ruleStack.pop(),this.nextProductionOccurrence=this.occurrenceStack.pop())}},$Tt=class extends BTt{static{o(this,"NextAfterTokenWalker")}static{E(this,"NextAfterTokenWalker")}constructor(e,t){super(e,t),this.path=t,this.nextTerminalName="",this.nextTerminalOccurrence=0,this.nextTerminalName=this.path.lastTok.name,this.nextTerminalOccurrence=this.path.lastTokOccurrence}walkTerminal(e,t,r){if(this.isAtEndOfPath&&e.terminalType.name===this.nextTerminalName&&e.idx===this.nextTerminalOccurrence&&!this.found){let n=t.concat(r),i=new Co({definition:n});this.possibleTokTypes=Bv(i),this.found=!0}}},KR=class extends jR{static{o(this,"AbstractNextTerminalAfterProductionWalker")}static{E(this,"AbstractNextTerminalAfterProductionWalker")}constructor(e,t){super(),this.topRule=e,this.occurrence=t,this.result={token:void 0,occurrence:void 0,isEndOfRule:void 0}}startWalking(){return this.walk(this.topRule),this.result}},FTt=class extends KR{static{o(this,"NextTerminalAfterManyWalker")}static{E(this,"NextTerminalAfterManyWalker")}walkMany(e,t,r){if(e.idx===this.occurrence){let n=Rc(t.concat(r));this.result.isEndOfRule=n===void 0,n instanceof ci&&(this.result.token=n.terminalType,this.result.occurrence=n.idx)}else super.walkMany(e,t,r)}},ACe=class extends KR{static{o(this,"NextTerminalAfterManySepWalker")}static{E(this,"NextTerminalAfterManySepWalker")}walkManySep(e,t,r){if(e.idx===this.occurrence){let n=Rc(t.concat(r));this.result.isEndOfRule=n===void 0,n instanceof ci&&(this.result.token=n.terminalType,this.result.occurrence=n.idx)}else super.walkManySep(e,t,r)}},zTt=class extends KR{static{o(this,"NextTerminalAfterAtLeastOneWalker")}static{E(this,"NextTerminalAfterAtLeastOneWalker")}walkAtLeastOne(e,t,r){if(e.idx===this.occurrence){let n=Rc(t.concat(r));this.result.isEndOfRule=n===void 0,n instanceof ci&&(this.result.token=n.terminalType,this.result.occurrence=n.idx)}else super.walkAtLeastOne(e,t,r)}},RCe=class extends KR{static{o(this,"NextTerminalAfterAtLeastOneSepWalker")}static{E(this,"NextTerminalAfterAtLeastOneSepWalker")}walkAtLeastOneSep(e,t,r){if(e.idx===this.occurrence){let n=Rc(t.concat(r));this.result.isEndOfRule=n===void 0,n instanceof ci&&(this.result.token=n.terminalType,this.result.occurrence=n.idx)}else super.walkAtLeastOneSep(e,t,r)}};o(J6,"possiblePathsFrom");E(J6,"possiblePathsFrom");o(Mq,"nextPossibleTokensAfter");E(Mq,"nextPossibleTokensAfter");o(f5e,"expandTopLevelRule");E(f5e,"expandTopLevelRule");(function(e){e[e.OPTION=0]="OPTION",e[e.REPETITION=1]="REPETITION",e[e.REPETITION_MANDATORY=2]="REPETITION_MANDATORY",e[e.REPETITION_MANDATORY_WITH_SEPARATOR=3]="REPETITION_MANDATORY_WITH_SEPARATOR",e[e.REPETITION_WITH_SEPARATOR=4]="REPETITION_WITH_SEPARATOR",e[e.ALTERNATION=5]="ALTERNATION"})(wi||(wi={}));o(ZR,"getProdType");E(ZR,"getProdType");o(MG,"getLookaheadPaths");E(MG,"getLookaheadPaths");o(p5e,"buildLookaheadFuncForOr");E(p5e,"buildLookaheadFuncForOr");o(m5e,"buildLookaheadFuncForOptionalProd");E(m5e,"buildLookaheadFuncForOptionalProd");o(g5e,"buildAlternativesLookAheadFunc");E(g5e,"buildAlternativesLookAheadFunc");o(y5e,"buildSingleAlternativeLookaheadFunction");E(y5e,"buildSingleAlternativeLookaheadFunction");GTt=class extends jR{static{o(this,"RestDefinitionFinderWalker")}static{E(this,"RestDefinitionFinderWalker")}constructor(e,t,r){super(),this.topProd=e,this.targetOccurrence=t,this.targetProdType=r}startWalking(){return this.walk(this.topProd),this.restDef}checkIsTarget(e,t,r,n){return e.idx===this.targetOccurrence&&this.targetProdType===t?(this.restDef=r.concat(n),!0):!1}walkOption(e,t,r){this.checkIsTarget(e,wi.OPTION,t,r)||super.walkOption(e,t,r)}walkAtLeastOne(e,t,r){this.checkIsTarget(e,wi.REPETITION_MANDATORY,t,r)||super.walkOption(e,t,r)}walkAtLeastOneSep(e,t,r){this.checkIsTarget(e,wi.REPETITION_MANDATORY_WITH_SEPARATOR,t,r)||super.walkOption(e,t,r)}walkMany(e,t,r){this.checkIsTarget(e,wi.REPETITION,t,r)||super.walkOption(e,t,r)}walkManySep(e,t,r){this.checkIsTarget(e,wi.REPETITION_WITH_SEPARATOR,t,r)||super.walkOption(e,t,r)}},v5e=class extends Ov{static{o(this,"InsideDefinitionFinderVisitor")}static{E(this,"InsideDefinitionFinderVisitor")}constructor(e,t,r){super(),this.targetOccurrence=e,this.targetProdType=t,this.targetRef=r,this.result=[]}checkIsTarget(e,t){e.idx===this.targetOccurrence&&this.targetProdType===t&&(this.targetRef===void 0||e===this.targetRef)&&(this.result=e.definition)}visitOption(e){this.checkIsTarget(e,wi.OPTION)}visitRepetition(e){this.checkIsTarget(e,wi.REPETITION)}visitRepetitionMandatory(e){this.checkIsTarget(e,wi.REPETITION_MANDATORY)}visitRepetitionMandatoryWithSeparator(e){this.checkIsTarget(e,wi.REPETITION_MANDATORY_WITH_SEPARATOR)}visitRepetitionWithSeparator(e){this.checkIsTarget(e,wi.REPETITION_WITH_SEPARATOR)}visitAlternation(e){this.checkIsTarget(e,wi.ALTERNATION)}};o(NG,"initializeArrayOfArrays");E(NG,"initializeArrayOfArrays");o(u6,"pathToHashKeys");E(u6,"pathToHashKeys");o(x5e,"isUniquePrefixHash");E(x5e,"isUniquePrefixHash");o(Nq,"lookAheadSequenceFromAlternatives");E(Nq,"lookAheadSequenceFromAlternatives");o(_w,"getLookaheadPathsForOr");E(_w,"getLookaheadPathsForOr");o(Lw,"getLookaheadPathsForOptionalProd");E(Lw,"getLookaheadPathsForOptionalProd");o(eR,"containsPath");E(eR,"containsPath");o(b5e,"isStrictPrefixOfPath");E(b5e,"isStrictPrefixOfPath");o(Pq,"areTokenCategoriesNotUsed");E(Pq,"areTokenCategoriesNotUsed");o(T5e,"validateLookahead");E(T5e,"validateLookahead");o(C5e,"validateGrammar");E(C5e,"validateGrammar");o(w5e,"validateDuplicateProductions");E(w5e,"validateDuplicateProductions");o(k5e,"identifyProductionForDuplicates");E(k5e,"identifyProductionForDuplicates");o(Oq,"getExtraProductionArgument");E(Oq,"getExtraProductionArgument");VTt=class extends Ov{static{o(this,"OccurrenceValidationCollector")}static{E(this,"OccurrenceValidationCollector")}constructor(){super(...arguments),this.allProductions=[]}visitNonTerminal(e){this.allProductions.push(e)}visitOption(e){this.allProductions.push(e)}visitRepetitionWithSeparator(e){this.allProductions.push(e)}visitRepetitionMandatory(e){this.allProductions.push(e)}visitRepetitionMandatoryWithSeparator(e){this.allProductions.push(e)}visitRepetition(e){this.allProductions.push(e)}visitAlternation(e){this.allProductions.push(e)}visitTerminal(e){this.allProductions.push(e)}};o(S5e,"validateRuleDoesNotAlreadyExist");E(S5e,"validateRuleDoesNotAlreadyExist");o(E5e,"validateRuleIsOverridden");E(E5e,"validateRuleIsOverridden");o(Bq,"validateNoLeftRecursion");E(Bq,"validateNoLeftRecursion");o(GC,"getFirstNoneTerminal");E(GC,"getFirstNoneTerminal");$q=class extends Ov{static{o(this,"OrCollector")}static{E(this,"OrCollector")}constructor(){super(...arguments),this.alternations=[]}visitAlternation(e){this.alternations.push(e)}};o(A5e,"validateEmptyOrAlternative");E(A5e,"validateEmptyOrAlternative");o(R5e,"validateAmbiguousAlternationAlternatives");E(R5e,"validateAmbiguousAlternationAlternatives");WTt=class extends Ov{static{o(this,"RepetitionCollector")}static{E(this,"RepetitionCollector")}constructor(){super(...arguments),this.allProductions=[]}visitRepetitionWithSeparator(e){this.allProductions.push(e)}visitRepetitionMandatory(e){this.allProductions.push(e)}visitRepetitionMandatoryWithSeparator(e){this.allProductions.push(e)}visitRepetition(e){this.allProductions.push(e)}};o(_5e,"validateTooManyAlts");E(_5e,"validateTooManyAlts");o(L5e,"validateSomeNonEmptyLookaheadPath");E(L5e,"validateSomeNonEmptyLookaheadPath");o(D5e,"checkAlternativesAmbiguities");E(D5e,"checkAlternativesAmbiguities");o(I5e,"checkPrefixAlternativesAmbiguities");E(I5e,"checkPrefixAlternativesAmbiguities");o(M5e,"checkTerminalAndNoneTerminalsNameSpace");E(M5e,"checkTerminalAndNoneTerminalsNameSpace");o(N5e,"resolveGrammar2");E(N5e,"resolveGrammar");o(P5e,"validateGrammar2");E(P5e,"validateGrammar");O5e="MismatchedTokenException",B5e="NoViableAltException",$5e="EarlyExitException",F5e="NotAllInputParsedException",z5e=[O5e,B5e,$5e,F5e];Object.freeze(z5e);o(nw,"isRecognitionException");E(nw,"isRecognitionException");QR=class extends Error{static{o(this,"RecognitionException")}static{E(this,"RecognitionException")}constructor(e,t){super(e),this.token=t,this.resyncedTokens=[],Object.setPrototypeOf(this,new.target.prototype),Error.captureStackTrace&&Error.captureStackTrace(this,this.constructor)}},G5e=class extends QR{static{o(this,"MismatchedTokenException")}static{E(this,"MismatchedTokenException")}constructor(e,t,r){super(e,t),this.previousToken=r,this.name=O5e}},qTt=class extends QR{static{o(this,"NoViableAltException")}static{E(this,"NoViableAltException")}constructor(e,t,r){super(e,t),this.previousToken=r,this.name=B5e}},HTt=class extends QR{static{o(this,"NotAllInputParsedException")}static{E(this,"NotAllInputParsedException")}constructor(e,t){super(e,t),this.name=F5e}},UTt=class extends QR{static{o(this,"EarlyExitException")}static{E(this,"EarlyExitException")}constructor(e,t,r){super(e,t),this.previousToken=r,this.name=$5e}},nz={},V5e="InRuleRecoveryException",YTt=class extends Error{static{o(this,"InRuleRecoveryException")}static{E(this,"InRuleRecoveryException")}constructor(e){super(e),this.name=V5e}},jTt=class{static{o(this,"Recoverable")}static{E(this,"Recoverable")}initRecoverable(e){this.firstAfterRepMap={},this.resyncFollows={},this.recoveryEnabled=wr(e,"recoveryEnabled")?e.recoveryEnabled:Qh.recoveryEnabled,this.recoveryEnabled&&(this.attemptInRepetitionRecovery=W5e)}getTokenToInsert(e){let t=Rw(e,"",NaN,NaN,NaN,NaN,NaN,NaN);return t.isInsertedInRecovery=!0,t}canTokenTypeBeInsertedInRecovery(e){return!0}canTokenTypeBeDeletedInRecovery(e){return!0}tryInRepetitionRecovery(e,t,r,n){let i=this.findReSyncTokenType(),a=this.exportLexerState(),s=[],l=!1,u=this.LA(1),h=this.LA(1),d=E(()=>{let f=this.LA(0),p=this.errorMessageProvider.buildMismatchTokenMessage({expected:n,actual:u,previous:f,ruleName:this.getCurrRuleFullName()}),m=new G5e(p,u,this.LA(0));m.resyncedTokens=ew(s),this.SAVE_ERROR(m)},"generateErrorMessage");for(;!l;)if(this.tokenMatcher(h,n)){d();return}else if(r.call(this)){d(),e.apply(this,t);return}else this.tokenMatcher(h,i)?l=!0:(h=this.SKIP_TOKEN(),this.addToResyncTokens(h,s));this.importLexerState(a)}shouldInRepetitionRecoveryBeTried(e,t,r){return!(r===!1||this.tokenMatcher(this.LA(1),e)||this.isBackTracking()||this.canPerformInRuleRecovery(e,this.getFollowsForInRuleRecovery(e,t)))}getFollowsForInRuleRecovery(e,t){let r=this.getCurrentGrammarPath(e,t);return this.getNextPossibleTokenTypes(r)}tryInRuleRecovery(e,t){if(this.canRecoverWithSingleTokenInsertion(e,t))return this.getTokenToInsert(e);if(this.canRecoverWithSingleTokenDeletion(e)){let r=this.SKIP_TOKEN();return this.consumeToken(),r}throw new YTt("sad sad panda")}canPerformInRuleRecovery(e,t){return this.canRecoverWithSingleTokenInsertion(e,t)||this.canRecoverWithSingleTokenDeletion(e)}canRecoverWithSingleTokenInsertion(e,t){if(!this.canTokenTypeBeInsertedInRecovery(e)||ei(t))return!1;let r=this.LA(1);return _v(t,i=>this.tokenMatcher(r,i))!==void 0}canRecoverWithSingleTokenDeletion(e){return this.canTokenTypeBeDeletedInRecovery(e)?this.tokenMatcher(this.LA(2),e):!1}isInCurrentRuleReSyncSet(e){let t=this.getCurrFollowKey(),r=this.getFollowSetFromFollowKey(t);return qs(r,e)}findReSyncTokenType(){let e=this.flattenFollowSet(),t=this.LA(1),r=2;for(;;){let n=_v(e,i=>Iq(t,i));if(n!==void 0)return n;t=this.LA(r),r++}}getCurrFollowKey(){if(this.RULE_STACK.length===1)return nz;let e=this.getLastExplicitRuleShortName(),t=this.getLastExplicitRuleOccurrenceIndex(),r=this.getPreviousExplicitRuleShortName();return{ruleName:this.shortRuleNameToFullName(e),idxInCallingRule:t,inRule:this.shortRuleNameToFullName(r)}}buildFullFollowKeyStack(){let e=this.RULE_STACK,t=this.RULE_OCCURRENCE_STACK;return hr(e,(r,n)=>n===0?nz:{ruleName:this.shortRuleNameToFullName(r),idxInCallingRule:t[n],inRule:this.shortRuleNameToFullName(e[n-1])})}flattenFollowSet(){let e=hr(this.buildFullFollowKeyStack(),t=>this.getFollowSetFromFollowKey(t));return Sc(e)}getFollowSetFromFollowKey(e){if(e===nz)return[pp];let t=e.ruleName+e.idxInCallingRule+R3e+e.inRule;return this.resyncFollows[t]}addToResyncTokens(e,t){return this.tokenMatcher(e,pp)||t.push(e),t}reSyncTo(e){let t=[],r=this.LA(1);for(;this.tokenMatcher(r,e)===!1;)r=this.SKIP_TOKEN(),this.addToResyncTokens(r,t);return ew(t)}attemptInRepetitionRecovery(e,t,r,n,i,a,s){}getCurrentGrammarPath(e,t){let r=this.getHumanReadableRuleStack(),n=Ya(this.RULE_OCCURRENCE_STACK);return{ruleStack:r,occurrenceStack:n,lastTok:e,lastTokOccurrence:t}}getHumanReadableRuleStack(){return hr(this.RULE_STACK,e=>this.shortRuleNameToFullName(e))}};o(W5e,"attemptInRepetitionRecovery");E(W5e,"attemptInRepetitionRecovery");XTt=4,bp=8,KTt=8,q5e=1<<bp,H5e=2<<bp,PG=3<<bp,OG=4<<bp,BG=5<<bp,h6=6<<bp;o(d6,"getKeyForAutomaticLookahead");E(d6,"getKeyForAutomaticLookahead");zIr=32-KTt,Fq=class{static{o(this,"LLkLookaheadStrategy")}static{E(this,"LLkLookaheadStrategy")}constructor(e){var t;this.maxLookahead=(t=e?.maxLookahead)!==null&&t!==void 0?t:Qh.maxLookahead}validate(e){let t=this.validateNoLeftRecursion(e.rules);if(ei(t)){let r=this.validateEmptyOrAlternatives(e.rules),n=this.validateAmbiguousAlternationAlternatives(e.rules,this.maxLookahead),i=this.validateSomeNonEmptyLookaheadPath(e.rules,this.maxLookahead);return[...t,...r,...n,...i]}return t}validateNoLeftRecursion(e){return _l(e,t=>Bq(t,t,Wg))}validateEmptyOrAlternatives(e){return _l(e,t=>A5e(t,Wg))}validateAmbiguousAlternationAlternatives(e,t){return _l(e,r=>R5e(r,t,Wg))}validateSomeNonEmptyLookaheadPath(e,t){return L5e(e,t,Wg)}buildLookaheadForAlternation(e){return p5e(e.prodOccurrence,e.rule,e.maxLookahead,e.hasPredicates,e.dynamicTokensEnabled,g5e)}buildLookaheadForOptional(e){return m5e(e.prodOccurrence,e.rule,e.maxLookahead,e.dynamicTokensEnabled,ZR(e.prodType),y5e)}},ZTt=class{static{o(this,"LooksAhead")}static{E(this,"LooksAhead")}initLooksAhead(e){this.dynamicTokensEnabled=wr(e,"dynamicTokensEnabled")?e.dynamicTokensEnabled:Qh.dynamicTokensEnabled,this.maxLookahead=wr(e,"maxLookahead")?e.maxLookahead:Qh.maxLookahead,this.lookaheadStrategy=wr(e,"lookaheadStrategy")?e.lookaheadStrategy:new Fq({maxLookahead:this.maxLookahead}),this.lookAheadFuncsCache=new Map}preComputeLookaheadFunctions(e){Ir(e,t=>{this.TRACE_INIT(`${t.name} Rule Lookahead`,()=>{let{alternation:r,repetition:n,option:i,repetitionMandatory:a,repetitionMandatoryWithSeparator:s,repetitionWithSeparator:l}=U5e(t);Ir(r,u=>{let h=u.idx===0?"":u.idx;this.TRACE_INIT(`${Tc(u)}${h}`,()=>{let d=this.lookaheadStrategy.buildLookaheadForAlternation({prodOccurrence:u.idx,rule:t,maxLookahead:u.maxLookahead||this.maxLookahead,hasPredicates:u.hasPredicates,dynamicTokensEnabled:this.dynamicTokensEnabled}),f=d6(this.fullRuleNameToShort[t.name],q5e,u.idx);this.setLaFuncCache(f,d)})}),Ir(n,u=>{this.computeLookaheadFunc(t,u.idx,PG,"Repetition",u.maxLookahead,Tc(u))}),Ir(i,u=>{this.computeLookaheadFunc(t,u.idx,H5e,"Option",u.maxLookahead,Tc(u))}),Ir(a,u=>{this.computeLookaheadFunc(t,u.idx,OG,"RepetitionMandatory",u.maxLookahead,Tc(u))}),Ir(s,u=>{this.computeLookaheadFunc(t,u.idx,h6,"RepetitionMandatoryWithSeparator",u.maxLookahead,Tc(u))}),Ir(l,u=>{this.computeLookaheadFunc(t,u.idx,BG,"RepetitionWithSeparator",u.maxLookahead,Tc(u))})})})}computeLookaheadFunc(e,t,r,n,i,a){this.TRACE_INIT(`${a}${t===0?"":t}`,()=>{let s=this.lookaheadStrategy.buildLookaheadForOptional({prodOccurrence:t,rule:e,maxLookahead:i||this.maxLookahead,dynamicTokensEnabled:this.dynamicTokensEnabled,prodType:n}),l=d6(this.fullRuleNameToShort[e.name],r,t);this.setLaFuncCache(l,s)})}getKeyForAutomaticLookahead(e,t){let r=this.getLastExplicitRuleShortName();return d6(r,e,t)}getLaFuncFromCache(e){return this.lookAheadFuncsCache.get(e)}setLaFuncCache(e,t){this.lookAheadFuncsCache.set(e,t)}},QTt=class extends Ov{static{o(this,"DslMethodsCollectorVisitor")}static{E(this,"DslMethodsCollectorVisitor")}constructor(){super(...arguments),this.dslMethods={option:[],alternation:[],repetition:[],repetitionWithSeparator:[],repetitionMandatory:[],repetitionMandatoryWithSeparator:[]}}reset(){this.dslMethods={option:[],alternation:[],repetition:[],repetitionWithSeparator:[],repetitionMandatory:[],repetitionMandatoryWithSeparator:[]}}visitOption(e){this.dslMethods.option.push(e)}visitRepetitionWithSeparator(e){this.dslMethods.repetitionWithSeparator.push(e)}visitRepetitionMandatory(e){this.dslMethods.repetitionMandatory.push(e)}visitRepetitionMandatoryWithSeparator(e){this.dslMethods.repetitionMandatoryWithSeparator.push(e)}visitRepetition(e){this.dslMethods.repetition.push(e)}visitAlternation(e){this.dslMethods.alternation.push(e)}},OA=new QTt;o(U5e,"collectMethods");E(U5e,"collectMethods");o($G,"setNodeLocationOnlyOffset");E($G,"setNodeLocationOnlyOffset");o(FG,"setNodeLocationFull");E(FG,"setNodeLocationFull");o(Y5e,"addTerminalToCst");E(Y5e,"addTerminalToCst");o(j5e,"addNoneTerminalToCst");E(j5e,"addNoneTerminalToCst");JTt="name";o(zq,"defineNameProp");E(zq,"defineNameProp");o(X5e,"defaultVisit");E(X5e,"defaultVisit");o(K5e,"createBaseSemanticVisitorConstructor");E(K5e,"createBaseSemanticVisitorConstructor");o(Z5e,"createBaseVisitorConstructorWithDefaults");E(Z5e,"createBaseVisitorConstructorWithDefaults");(function(e){e[e.REDUNDANT_METHOD=0]="REDUNDANT_METHOD",e[e.MISSING_METHOD=1]="MISSING_METHOD"})(zG||(zG={}));o(Q5e,"validateVisitor");E(Q5e,"validateVisitor");o(J5e,"validateMissingCstMethods");E(J5e,"validateMissingCstMethods");eCt=class{static{o(this,"TreeBuilder")}static{E(this,"TreeBuilder")}initTreeBuilder(e){if(this.CST_STACK=[],this.outputCst=e.outputCst,this.nodeLocationTracking=wr(e,"nodeLocationTracking")?e.nodeLocationTracking:Qh.nodeLocationTracking,!this.outputCst)this.cstInvocationStateUpdate=Da,this.cstFinallyStateUpdate=Da,this.cstPostTerminal=Da,this.cstPostNonTerminal=Da,this.cstPostRule=Da;else if(/full/i.test(this.nodeLocationTracking))this.recoveryEnabled?(this.setNodeLocationFromToken=FG,this.setNodeLocationFromNode=FG,this.cstPostRule=Da,this.setInitialNodeLocation=this.setInitialNodeLocationFullRecovery):(this.setNodeLocationFromToken=Da,this.setNodeLocationFromNode=Da,this.cstPostRule=this.cstPostRuleFull,this.setInitialNodeLocation=this.setInitialNodeLocationFullRegular);else if(/onlyOffset/i.test(this.nodeLocationTracking))this.recoveryEnabled?(this.setNodeLocationFromToken=$G,this.setNodeLocationFromNode=$G,this.cstPostRule=Da,this.setInitialNodeLocation=this.setInitialNodeLocationOnlyOffsetRecovery):(this.setNodeLocationFromToken=Da,this.setNodeLocationFromNode=Da,this.cstPostRule=this.cstPostRuleOnlyOffset,this.setInitialNodeLocation=this.setInitialNodeLocationOnlyOffsetRegular);else if(/none/i.test(this.nodeLocationTracking))this.setNodeLocationFromToken=Da,this.setNodeLocationFromNode=Da,this.cstPostRule=Da,this.setInitialNodeLocation=Da;else throw Error(`Invalid <nodeLocationTracking> config option: "${e.nodeLocationTracking}"`)}setInitialNodeLocationOnlyOffsetRecovery(e){e.location={startOffset:NaN,endOffset:NaN}}setInitialNodeLocationOnlyOffsetRegular(e){e.location={startOffset:this.LA(1).startOffset,endOffset:NaN}}setInitialNodeLocationFullRecovery(e){e.location={startOffset:NaN,startLine:NaN,startColumn:NaN,endOffset:NaN,endLine:NaN,endColumn:NaN}}setInitialNodeLocationFullRegular(e){let t=this.LA(1);e.location={startOffset:t.startOffset,startLine:t.startLine,startColumn:t.startColumn,endOffset:NaN,endLine:NaN,endColumn:NaN}}cstInvocationStateUpdate(e){let t={name:e,children:Object.create(null)};this.setInitialNodeLocation(t),this.CST_STACK.push(t)}cstFinallyStateUpdate(){this.CST_STACK.pop()}cstPostRuleFull(e){let t=this.LA(0),r=e.location;r.startOffset<=t.startOffset?(r.endOffset=t.endOffset,r.endLine=t.endLine,r.endColumn=t.endColumn):(r.startOffset=NaN,r.startLine=NaN,r.startColumn=NaN)}cstPostRuleOnlyOffset(e){let t=this.LA(0),r=e.location;r.startOffset<=t.startOffset?r.endOffset=t.endOffset:r.startOffset=NaN}cstPostTerminal(e,t){let r=this.CST_STACK[this.CST_STACK.length-1];Y5e(r,t,e),this.setNodeLocationFromToken(r.location,t)}cstPostNonTerminal(e,t){let r=this.CST_STACK[this.CST_STACK.length-1];j5e(r,t,e),this.setNodeLocationFromNode(r.location,e.location)}getBaseCstVisitorConstructor(){if(Kh(this.baseCstVisitorConstructor)){let e=K5e(this.className,jo(this.gastProductionsCache));return this.baseCstVisitorConstructor=e,e}return this.baseCstVisitorConstructor}getBaseCstVisitorConstructorWithDefaults(){if(Kh(this.baseCstVisitorWithDefaultsConstructor)){let e=Z5e(this.className,jo(this.gastProductionsCache),this.getBaseCstVisitorConstructor());return this.baseCstVisitorWithDefaultsConstructor=e,e}return this.baseCstVisitorWithDefaultsConstructor}getLastExplicitRuleShortName(){let e=this.RULE_STACK;return e[e.length-1]}getPreviousExplicitRuleShortName(){let e=this.RULE_STACK;return e[e.length-2]}getLastExplicitRuleOccurrenceIndex(){let e=this.RULE_OCCURRENCE_STACK;return e[e.length-1]}},tCt=class{static{o(this,"LexerAdapter")}static{E(this,"LexerAdapter")}initLexerAdapter(){this.tokVector=[],this.tokVectorLength=0,this.currIdx=-1}set input(e){if(this.selfAnalysisDone!==!0)throw Error("Missing <performSelfAnalysis> invocation at the end of the Parser's constructor.");this.reset(),this.tokVector=e,this.tokVectorLength=e.length}get input(){return this.tokVector}SKIP_TOKEN(){return this.currIdx<=this.tokVector.length-2?(this.consumeToken(),this.LA(1)):tR}LA(e){let t=this.currIdx+e;return t<0||this.tokVectorLength<=t?tR:this.tokVector[t]}consumeToken(){this.currIdx++}exportLexerState(){return this.currIdx}importLexerState(e){this.currIdx=e}resetLexerState(){this.currIdx=-1}moveToTerminatedState(){this.currIdx=this.tokVector.length-1}getLexerPosition(){return this.exportLexerState()}},rCt=class{static{o(this,"RecognizerApi")}static{E(this,"RecognizerApi")}ACTION(e){return e.call(this)}consume(e,t,r){return this.consumeInternal(t,e,r)}subrule(e,t,r){return this.subruleInternal(t,e,r)}option(e,t){return this.optionInternal(t,e)}or(e,t){return this.orInternal(t,e)}many(e,t){return this.manyInternal(e,t)}atLeastOne(e,t){return this.atLeastOneInternal(e,t)}CONSUME(e,t){return this.consumeInternal(e,0,t)}CONSUME1(e,t){return this.consumeInternal(e,1,t)}CONSUME2(e,t){return this.consumeInternal(e,2,t)}CONSUME3(e,t){return this.consumeInternal(e,3,t)}CONSUME4(e,t){return this.consumeInternal(e,4,t)}CONSUME5(e,t){return this.consumeInternal(e,5,t)}CONSUME6(e,t){return this.consumeInternal(e,6,t)}CONSUME7(e,t){return this.consumeInternal(e,7,t)}CONSUME8(e,t){return this.consumeInternal(e,8,t)}CONSUME9(e,t){return this.consumeInternal(e,9,t)}SUBRULE(e,t){return this.subruleInternal(e,0,t)}SUBRULE1(e,t){return this.subruleInternal(e,1,t)}SUBRULE2(e,t){return this.subruleInternal(e,2,t)}SUBRULE3(e,t){return this.subruleInternal(e,3,t)}SUBRULE4(e,t){return this.subruleInternal(e,4,t)}SUBRULE5(e,t){return this.subruleInternal(e,5,t)}SUBRULE6(e,t){return this.subruleInternal(e,6,t)}SUBRULE7(e,t){return this.subruleInternal(e,7,t)}SUBRULE8(e,t){return this.subruleInternal(e,8,t)}SUBRULE9(e,t){return this.subruleInternal(e,9,t)}OPTION(e){return this.optionInternal(e,0)}OPTION1(e){return this.optionInternal(e,1)}OPTION2(e){return this.optionInternal(e,2)}OPTION3(e){return this.optionInternal(e,3)}OPTION4(e){return this.optionInternal(e,4)}OPTION5(e){return this.optionInternal(e,5)}OPTION6(e){return this.optionInternal(e,6)}OPTION7(e){return this.optionInternal(e,7)}OPTION8(e){return this.optionInternal(e,8)}OPTION9(e){return this.optionInternal(e,9)}OR(e){return this.orInternal(e,0)}OR1(e){return this.orInternal(e,1)}OR2(e){return this.orInternal(e,2)}OR3(e){return this.orInternal(e,3)}OR4(e){return this.orInternal(e,4)}OR5(e){return this.orInternal(e,5)}OR6(e){return this.orInternal(e,6)}OR7(e){return this.orInternal(e,7)}OR8(e){return this.orInternal(e,8)}OR9(e){return this.orInternal(e,9)}MANY(e){this.manyInternal(0,e)}MANY1(e){this.manyInternal(1,e)}MANY2(e){this.manyInternal(2,e)}MANY3(e){this.manyInternal(3,e)}MANY4(e){this.manyInternal(4,e)}MANY5(e){this.manyInternal(5,e)}MANY6(e){this.manyInternal(6,e)}MANY7(e){this.manyInternal(7,e)}MANY8(e){this.manyInternal(8,e)}MANY9(e){this.manyInternal(9,e)}MANY_SEP(e){this.manySepFirstInternal(0,e)}MANY_SEP1(e){this.manySepFirstInternal(1,e)}MANY_SEP2(e){this.manySepFirstInternal(2,e)}MANY_SEP3(e){this.manySepFirstInternal(3,e)}MANY_SEP4(e){this.manySepFirstInternal(4,e)}MANY_SEP5(e){this.manySepFirstInternal(5,e)}MANY_SEP6(e){this.manySepFirstInternal(6,e)}MANY_SEP7(e){this.manySepFirstInternal(7,e)}MANY_SEP8(e){this.manySepFirstInternal(8,e)}MANY_SEP9(e){this.manySepFirstInternal(9,e)}AT_LEAST_ONE(e){this.atLeastOneInternal(0,e)}AT_LEAST_ONE1(e){return this.atLeastOneInternal(1,e)}AT_LEAST_ONE2(e){this.atLeastOneInternal(2,e)}AT_LEAST_ONE3(e){this.atLeastOneInternal(3,e)}AT_LEAST_ONE4(e){this.atLeastOneInternal(4,e)}AT_LEAST_ONE5(e){this.atLeastOneInternal(5,e)}AT_LEAST_ONE6(e){this.atLeastOneInternal(6,e)}AT_LEAST_ONE7(e){this.atLeastOneInternal(7,e)}AT_LEAST_ONE8(e){this.atLeastOneInternal(8,e)}AT_LEAST_ONE9(e){this.atLeastOneInternal(9,e)}AT_LEAST_ONE_SEP(e){this.atLeastOneSepFirstInternal(0,e)}AT_LEAST_ONE_SEP1(e){this.atLeastOneSepFirstInternal(1,e)}AT_LEAST_ONE_SEP2(e){this.atLeastOneSepFirstInternal(2,e)}AT_LEAST_ONE_SEP3(e){this.atLeastOneSepFirstInternal(3,e)}AT_LEAST_ONE_SEP4(e){this.atLeastOneSepFirstInternal(4,e)}AT_LEAST_ONE_SEP5(e){this.atLeastOneSepFirstInternal(5,e)}AT_LEAST_ONE_SEP6(e){this.atLeastOneSepFirstInternal(6,e)}AT_LEAST_ONE_SEP7(e){this.atLeastOneSepFirstInternal(7,e)}AT_LEAST_ONE_SEP8(e){this.atLeastOneSepFirstInternal(8,e)}AT_LEAST_ONE_SEP9(e){this.atLeastOneSepFirstInternal(9,e)}RULE(e,t,r=rR){if(qs(this.definedRulesNames,e)){let a={message:Wg.buildDuplicateRuleNameError({topLevelRule:e,grammarName:this.className}),type:Vs.DUPLICATE_RULE_NAME,ruleName:e};this.definitionErrors.push(a)}this.definedRulesNames.push(e);let n=this.defineRule(e,t,r);return this[e]=n,n}OVERRIDE_RULE(e,t,r=rR){let n=E5e(e,this.definedRulesNames,this.className);this.definitionErrors=this.definitionErrors.concat(n);let i=this.defineRule(e,t,r);return this[e]=i,i}BACKTRACK(e,t){return function(){this.isBackTrackingStack.push(1);let r=this.saveRecogState();try{return e.apply(this,t),!0}catch(n){if(nw(n))return!1;throw n}finally{this.reloadRecogState(r),this.isBackTrackingStack.pop()}}}getGAstProductions(){return this.gastProductionsCache}getSerializedGastProductions(){return C3e(ha(this.gastProductionsCache))}},nCt=class{static{o(this,"RecognizerEngine")}static{E(this,"RecognizerEngine")}initRecognizerEngine(e,t){if(this.className=this.constructor.name,this.shortRuleNameToFull={},this.fullRuleNameToShort={},this.ruleShortNameIdx=256,this.tokenMatcher=rw,this.subruleIdx=0,this.definedRulesNames=[],this.tokensMap={},this.isBackTrackingStack=[],this.RULE_STACK=[],this.RULE_OCCURRENCE_STACK=[],this.gastProductionsCache={},wr(t,"serializedGrammar"))throw Error(`The Parser's configuration can no longer contain a <serializedGrammar> property.
 	See: https://chevrotain.io/docs/changes/BREAKING_CHANGES.html#_6-0-0
-	For Further details.`);if(Kr(e)){if(Oi(e))throw Error(`A Token Vocabulary cannot be empty.
+	For Further details.`);if(un(e)){if(ei(e))throw Error(`A Token Vocabulary cannot be empty.
 	Note that the first argument for the parser constructor
 	is no longer a Token vector (since v4.0).`);if(typeof e[0].startOffset=="number")throw Error(`The Parser constructor no longer accepts a token vector as the first argument.
 	See: https://chevrotain.io/docs/changes/BREAKING_CHANGES.html#_4-0-0
-	For Further details.`)}if(Kr(e))this.tokensMap=go(e,(n,a)=>(n[a.name]=a,n),{});else if(mr(e,"modes")&&Hl(Ul(Hn(e.modes)),zCe)){let n=Ul(Hn(e.modes)),a=Lz(n);this.tokensMap=go(a,(s,l)=>(s[l.name]=l,s),{})}else if(tl(e))this.tokensMap=ka(e);else throw new Error("<tokensDictionary> argument must be An Array of Token constructors, A dictionary of Token constructors or an IMultiModeLexerDefinition");this.tokensMap.EOF=gf;let r=mr(e,"modes")?Ul(Hn(e.modes)):Hn(e),i=Hl(r,n=>Oi(n.categoryMatches));this.tokenMatcher=i?hT:uy,hy(Hn(this.tokensMap))}defineRule(e,t,r){if(this.selfAnalysisDone)throw Error(`Grammar rule <${e}> may not be defined after the 'performSelfAnalysis' method has been called'
-Make sure that all grammar rule definitions are done before 'performSelfAnalysis' is called.`);let i=mr(r,"resyncEnabled")?r.resyncEnabled:L5.resyncEnabled,n=mr(r,"recoveryValueFunc")?r.recoveryValueFunc:L5.recoveryValueFunc,a=this.ruleShortNameIdx<<z0t+Cf;this.ruleShortNameIdx++,this.shortRuleNameToFull[a]=e,this.fullRuleNameToShort[e]=a;let s;return this.outputCst===!0?s=S(o(function(...h){try{this.ruleInvocationStateUpdate(a,e,this.subruleIdx),t.apply(this,h);let d=this.CST_STACK[this.CST_STACK.length-1];return this.cstPostRule(d),d}catch(d){return this.invokeRuleCatch(d,i,n)}finally{this.ruleFinallyStateUpdate()}},"invokeRuleWithTry2"),"invokeRuleWithTry"):s=S(o(function(...h){try{return this.ruleInvocationStateUpdate(a,e,this.subruleIdx),t.apply(this,h)}catch(d){return this.invokeRuleCatch(d,i,n)}finally{this.ruleFinallyStateUpdate()}},"invokeRuleWithTryCst"),"invokeRuleWithTryCst"),Object.assign(s,{ruleName:e,originalGrammarAction:t})}invokeRuleCatch(e,t,r){let i=this.RULE_STACK.length===1,n=t&&!this.isBackTracking()&&this.recoveryEnabled;if(dT(e)){let a=e;if(n){let s=this.findReSyncTokenType();if(this.isInCurrentRuleReSyncSet(s))if(a.resyncedTokens=this.reSyncTo(s),this.outputCst){let l=this.CST_STACK[this.CST_STACK.length-1];return l.recoveredNode=!0,l}else return r(e);else{if(this.outputCst){let l=this.CST_STACK[this.CST_STACK.length-1];l.recoveredNode=!0,a.partialCstResult=l}throw a}}else{if(i)return this.moveToTerminatedState(),r(e);throw a}}else throw e}optionInternal(e,t){let r=this.getKeyForAutomaticLookahead(Tke,t);return this.optionInternalLogic(e,t,r)}optionInternalLogic(e,t,r){let i=this.getLaFuncFromCache(r),n;if(typeof e!="function"){n=e.DEF;let a=e.GATE;if(a!==void 0){let s=i;i=S(()=>a.call(this)&&s.call(this),"lookAheadFunc")}}else n=e;if(i.call(this)===!0)return n.call(this)}atLeastOneInternal(e,t){let r=this.getKeyForAutomaticLookahead(DF,e);return this.atLeastOneInternalLogic(e,t,r)}atLeastOneInternalLogic(e,t,r){let i=this.getLaFuncFromCache(r),n;if(typeof t!="function"){n=t.DEF;let a=t.GATE;if(a!==void 0){let s=i;i=S(()=>a.call(this)&&s.call(this),"lookAheadFunc")}}else n=t;if(i.call(this)===!0){let a=this.doSingleRepetition(n);for(;i.call(this)===!0&&a===!0;)a=this.doSingleRepetition(n)}else throw this.raiseEarlyExitException(e,en.REPETITION_MANDATORY,t.ERR_MSG);this.attemptInRepetitionRecovery(this.atLeastOneInternal,[e,t],i,DF,e,L0t)}atLeastOneSepFirstInternal(e,t){let r=this.getKeyForAutomaticLookahead(YE,e);this.atLeastOneSepFirstInternalLogic(e,t,r)}atLeastOneSepFirstInternalLogic(e,t,r){let i=t.DEF,n=t.SEP;if(this.getLaFuncFromCache(r).call(this)===!0){i.call(this);let s=S(()=>this.tokenMatcher(this.LA(1),n),"separatorLookAheadFunc");for(;this.tokenMatcher(this.LA(1),n)===!0;)this.CONSUME(n),i.call(this);this.attemptInRepetitionRecovery(this.repetitionSepSecondInternal,[e,n,s,i,lye],s,YE,e,lye)}else throw this.raiseEarlyExitException(e,en.REPETITION_MANDATORY_WITH_SEPARATOR,t.ERR_MSG)}manyInternal(e,t){let r=this.getKeyForAutomaticLookahead(_F,e);return this.manyInternalLogic(e,t,r)}manyInternalLogic(e,t,r){let i=this.getLaFuncFromCache(r),n;if(typeof t!="function"){n=t.DEF;let s=t.GATE;if(s!==void 0){let l=i;i=S(()=>s.call(this)&&l.call(this),"lookaheadFunction")}}else n=t;let a=!0;for(;i.call(this)===!0&&a===!0;)a=this.doSingleRepetition(n);this.attemptInRepetitionRecovery(this.manyInternal,[e,t],i,_F,e,R0t,a)}manySepFirstInternal(e,t){let r=this.getKeyForAutomaticLookahead(RF,e);this.manySepFirstInternalLogic(e,t,r)}manySepFirstInternalLogic(e,t,r){let i=t.DEF,n=t.SEP;if(this.getLaFuncFromCache(r).call(this)===!0){i.call(this);let s=S(()=>this.tokenMatcher(this.LA(1),n),"separatorLookAheadFunc");for(;this.tokenMatcher(this.LA(1),n)===!0;)this.CONSUME(n),i.call(this);this.attemptInRepetitionRecovery(this.repetitionSepSecondInternal,[e,n,s,i,oye],s,RF,e,oye)}}repetitionSepSecondInternal(e,t,r,i,n){for(;r();)this.CONSUME(t),i.call(this);this.attemptInRepetitionRecovery(this.repetitionSepSecondInternal,[e,t,r,i,n],r,YE,e,n)}doSingleRepetition(e){let t=this.getLexerPosition();return e.call(this),this.getLexerPosition()>t}orInternal(e,t){let r=this.getKeyForAutomaticLookahead(bke,t),i=Kr(e)?e:e.DEF,a=this.getLaFuncFromCache(r).call(this,i);if(a!==void 0)return i[a].ALT.call(this);this.raiseNoAltException(t,e.ERR_MSG)}ruleFinallyStateUpdate(){if(this.RULE_STACK.pop(),this.RULE_OCCURRENCE_STACK.pop(),this.cstFinallyStateUpdate(),this.RULE_STACK.length===0&&this.isAtEndOfInput()===!1){let e=this.LA(1),t=this.errorMessageProvider.buildNotAllInputParsedMessage({firstRedundant:e,ruleName:this.getCurrRuleFullName()});this.SAVE_ERROR(new P0t(t,e))}}subruleInternal(e,t,r){let i;try{let n=r!==void 0?r.ARGS:void 0;return this.subruleIdx=t,i=e.apply(this,n),this.cstPostNonTerminal(i,r!==void 0&&r.LABEL!==void 0?r.LABEL:e.ruleName),i}catch(n){throw this.subruleInternalError(n,r,e.ruleName)}}subruleInternalError(e,t,r){throw dT(e)&&e.partialCstResult!==void 0&&(this.cstPostNonTerminal(e.partialCstResult,t!==void 0&&t.LABEL!==void 0?t.LABEL:r),delete e.partialCstResult),e}consumeInternal(e,t,r){let i;try{let n=this.LA(1);this.tokenMatcher(n,e)===!0?(this.consumeToken(),i=n):this.consumeInternalError(e,n,r)}catch(n){i=this.consumeInternalRecovery(e,t,n)}return this.cstPostTerminal(r!==void 0&&r.LABEL!==void 0?r.LABEL:e.name,i),i}consumeInternalError(e,t,r){let i,n=this.LA(0);throw r!==void 0&&r.ERR_MSG?i=r.ERR_MSG:i=this.errorMessageProvider.buildMismatchTokenMessage({expected:e,actual:t,previous:n,ruleName:this.getCurrRuleFullName()}),this.SAVE_ERROR(new yke(i,t,n))}consumeInternalRecovery(e,t,r){if(this.recoveryEnabled&&r.name==="MismatchedTokenException"&&!this.isBackTracking()){let i=this.getFollowsForInRuleRecovery(e,t);try{return this.tryInRuleRecovery(e,i)}catch(n){throw n.name===vke?r:n}}else throw r}saveRecogState(){let e=this.errors,t=ka(this.RULE_STACK);return{errors:e,lexerState:this.exportLexerState(),RULE_STACK:t,CST_STACK:this.CST_STACK}}reloadRecogState(e){this.errors=e.errors,this.importLexerState(e.lexerState),this.RULE_STACK=e.RULE_STACK}ruleInvocationStateUpdate(e,t,r){this.RULE_OCCURRENCE_STACK.push(r),this.RULE_STACK.push(e),this.cstInvocationStateUpdate(t)}isBackTracking(){return this.isBackTrackingStack.length!==0}getCurrRuleFullName(){let e=this.getLastExplicitRuleShortName();return this.shortRuleNameToFull[e]}shortRuleNameToFullName(e){return this.shortRuleNameToFull[e]}isAtEndOfInput(){return this.tokenMatcher(this.LA(1),gf)}reset(){this.resetLexerState(),this.subruleIdx=0,this.isBackTrackingStack=[],this.errors=[],this.RULE_STACK=[],this.CST_STACK=[],this.RULE_OCCURRENCE_STACK=[]}},X0t=class{static{o(this,"ErrorHandler")}static{S(this,"ErrorHandler")}initErrorHandler(e){this._errors=[],this.errorMessageProvider=mr(e,"errorMessageProvider")?e.errorMessageProvider:ph.errorMessageProvider}SAVE_ERROR(e){if(dT(e))return e.context={ruleStack:this.getHumanReadableRuleStack(),ruleOccurrenceStack:ka(this.RULE_OCCURRENCE_STACK)},this._errors.push(e),e;throw Error("Trying to save an Error which is not a RecognitionException")}get errors(){return ka(this._errors)}set errors(e){this._errors=e}raiseEarlyExitException(e,t,r){let i=this.getCurrRuleFullName(),n=this.getGAstProductions()[i],s=FT(e,n,t,this.maxLookahead)[0],l=[];for(let h=1;h<=this.maxLookahead;h++)l.push(this.LA(h));let u=this.errorMessageProvider.buildEarlyExitMessage({expectedIterationPaths:s,actual:l,previous:this.LA(0),customUserDescription:r,ruleName:i});throw this.SAVE_ERROR(new B0t(u,this.LA(1),this.LA(0)))}raiseNoAltException(e,t){let r=this.getCurrRuleFullName(),i=this.getGAstProductions()[r],n=BT(e,i,this.maxLookahead),a=[];for(let u=1;u<=this.maxLookahead;u++)a.push(this.LA(u));let s=this.LA(0),l=this.errorMessageProvider.buildNoViableAltMessage({expectedPathsPerAlt:n,actual:a,previous:s,customUserDescription:t,ruleName:this.getCurrRuleFullName()});throw this.SAVE_ERROR(new O0t(l,this.LA(1),s))}},K0t=class{static{o(this,"ContentAssist")}static{S(this,"ContentAssist")}initContentAssist(){}computeContentAssist(e,t){let r=this.gastProductionsCache[e];if(dh(r))throw Error(`Rule ->${e}<- does not exist in this grammar.`);return Vz([r],t,this.tokenMatcher,this.maxLookahead)}getNextPossibleTokenTypes(e){let t=jl(e.ruleStack),i=this.getGAstProductions()[t];return new D0t(i,e).startWalking()}},AA={description:"This Object indicates the Parser is during Recording Phase"};Object.freeze(AA);cye=!0,uye=Math.pow(2,Cf)-1,Rke=q1({name:"RECORDING_PHASE_TOKEN",pattern:ls.NA});hy([Rke]);Lke=PT(Rke,`This IToken indicates the Parser is in Recording Phase
-	See: https://chevrotain.io/docs/guide/internals.html#grammar-recording for details`,-1,-1,-1,-1,-1,-1);Object.freeze(Lke);Z0t={name:`This CSTNode indicates the Parser is in Recording Phase
-	See: https://chevrotain.io/docs/guide/internals.html#grammar-recording for details`,children:{}},Q0t=class{static{o(this,"GastRecorder")}static{S(this,"GastRecorder")}initGastRecorder(e){this.recordingProdStack=[],this.RECORDING_PHASE=!1}enableRecording(){this.RECORDING_PHASE=!0,this.TRACE_INIT("Enable Recording",()=>{for(let e=0;e<10;e++){let t=e>0?e:"";this[`CONSUME${t}`]=function(r,i){return this.consumeInternalRecord(r,e,i)},this[`SUBRULE${t}`]=function(r,i){return this.subruleInternalRecord(r,e,i)},this[`OPTION${t}`]=function(r){return this.optionInternalRecord(r,e)},this[`OR${t}`]=function(r){return this.orInternalRecord(r,e)},this[`MANY${t}`]=function(r){this.manyInternalRecord(e,r)},this[`MANY_SEP${t}`]=function(r){this.manySepFirstInternalRecord(e,r)},this[`AT_LEAST_ONE${t}`]=function(r){this.atLeastOneInternalRecord(e,r)},this[`AT_LEAST_ONE_SEP${t}`]=function(r){this.atLeastOneSepFirstInternalRecord(e,r)}}this.consume=function(e,t,r){return this.consumeInternalRecord(t,e,r)},this.subrule=function(e,t,r){return this.subruleInternalRecord(t,e,r)},this.option=function(e,t){return this.optionInternalRecord(t,e)},this.or=function(e,t){return this.orInternalRecord(t,e)},this.many=function(e,t){this.manyInternalRecord(e,t)},this.atLeastOne=function(e,t){this.atLeastOneInternalRecord(e,t)},this.ACTION=this.ACTION_RECORD,this.BACKTRACK=this.BACKTRACK_RECORD,this.LA=this.LA_RECORD})}disableRecording(){this.RECORDING_PHASE=!1,this.TRACE_INIT("Deleting Recording methods",()=>{let e=this;for(let t=0;t<10;t++){let r=t>0?t:"";delete e[`CONSUME${r}`],delete e[`SUBRULE${r}`],delete e[`OPTION${r}`],delete e[`OR${r}`],delete e[`MANY${r}`],delete e[`MANY_SEP${r}`],delete e[`AT_LEAST_ONE${r}`],delete e[`AT_LEAST_ONE_SEP${r}`]}delete e.consume,delete e.subrule,delete e.option,delete e.or,delete e.many,delete e.atLeastOne,delete e.ACTION,delete e.BACKTRACK,delete e.LA})}ACTION_RECORD(e){}BACKTRACK_RECORD(e,t){return()=>!0}LA_RECORD(e){return R5}topLevelRuleRecord(e,t){try{let r=new oy({definition:[],name:e});return r.name=e,this.recordingProdStack.push(r),t.call(this),this.recordingProdStack.pop(),r}catch(r){if(r.KNOWN_RECORDER_ERROR!==!0)try{r.message=r.message+`
+	For Further details.`)}if(un(e))this.tokensMap=Ko(e,(i,a)=>(i[a.name]=a,i),{});else if(wr(e,"modes")&&Ec(Sc(ha(e.modes)),u5e)){let i=Sc(ha(e.modes)),a=Cq(i);this.tokensMap=Ko(a,(s,l)=>(s[l.name]=l,s),{})}else if(Dl(e))this.tokensMap=Ya(e);else throw new Error("<tokensDictionary> argument must be An Array of Token constructors, A dictionary of Token constructors or an IMultiModeLexerDefinition");this.tokensMap.EOF=pp;let r=wr(e,"modes")?Sc(ha(e.modes)):ha(e),n=Ec(r,i=>ei(i.categoryMatches));this.tokenMatcher=n?rw:$v,Fv(ha(this.tokensMap))}defineRule(e,t,r){if(this.selfAnalysisDone)throw Error(`Grammar rule <${e}> may not be defined after the 'performSelfAnalysis' method has been called'
+Make sure that all grammar rule definitions are done before 'performSelfAnalysis' is called.`);let n=wr(r,"resyncEnabled")?r.resyncEnabled:rR.resyncEnabled,i=wr(r,"recoveryValueFunc")?r.recoveryValueFunc:rR.recoveryValueFunc,a=this.ruleShortNameIdx<<XTt+bp;this.ruleShortNameIdx++,this.shortRuleNameToFull[a]=e,this.fullRuleNameToShort[e]=a;let s;return this.outputCst===!0?s=E(o(function(...h){try{this.ruleInvocationStateUpdate(a,e,this.subruleIdx),t.apply(this,h);let d=this.CST_STACK[this.CST_STACK.length-1];return this.cstPostRule(d),d}catch(d){return this.invokeRuleCatch(d,n,i)}finally{this.ruleFinallyStateUpdate()}},"invokeRuleWithTry2"),"invokeRuleWithTry"):s=E(o(function(...h){try{return this.ruleInvocationStateUpdate(a,e,this.subruleIdx),t.apply(this,h)}catch(d){return this.invokeRuleCatch(d,n,i)}finally{this.ruleFinallyStateUpdate()}},"invokeRuleWithTryCst"),"invokeRuleWithTryCst"),Object.assign(s,{ruleName:e,originalGrammarAction:t})}invokeRuleCatch(e,t,r){let n=this.RULE_STACK.length===1,i=t&&!this.isBackTracking()&&this.recoveryEnabled;if(nw(e)){let a=e;if(i){let s=this.findReSyncTokenType();if(this.isInCurrentRuleReSyncSet(s))if(a.resyncedTokens=this.reSyncTo(s),this.outputCst){let l=this.CST_STACK[this.CST_STACK.length-1];return l.recoveredNode=!0,l}else return r(e);else{if(this.outputCst){let l=this.CST_STACK[this.CST_STACK.length-1];l.recoveredNode=!0,a.partialCstResult=l}throw a}}else{if(n)return this.moveToTerminatedState(),r(e);throw a}}else throw e}optionInternal(e,t){let r=this.getKeyForAutomaticLookahead(H5e,t);return this.optionInternalLogic(e,t,r)}optionInternalLogic(e,t,r){let n=this.getLaFuncFromCache(r),i;if(typeof e!="function"){i=e.DEF;let a=e.GATE;if(a!==void 0){let s=n;n=E(()=>a.call(this)&&s.call(this),"lookAheadFunc")}}else i=e;if(n.call(this)===!0)return i.call(this)}atLeastOneInternal(e,t){let r=this.getKeyForAutomaticLookahead(OG,e);return this.atLeastOneInternalLogic(e,t,r)}atLeastOneInternalLogic(e,t,r){let n=this.getLaFuncFromCache(r),i;if(typeof t!="function"){i=t.DEF;let a=t.GATE;if(a!==void 0){let s=n;n=E(()=>a.call(this)&&s.call(this),"lookAheadFunc")}}else i=t;if(n.call(this)===!0){let a=this.doSingleRepetition(i);for(;n.call(this)===!0&&a===!0;)a=this.doSingleRepetition(i)}else throw this.raiseEarlyExitException(e,wi.REPETITION_MANDATORY,t.ERR_MSG);this.attemptInRepetitionRecovery(this.atLeastOneInternal,[e,t],n,OG,e,zTt)}atLeastOneSepFirstInternal(e,t){let r=this.getKeyForAutomaticLookahead(h6,e);this.atLeastOneSepFirstInternalLogic(e,t,r)}atLeastOneSepFirstInternalLogic(e,t,r){let n=t.DEF,i=t.SEP;if(this.getLaFuncFromCache(r).call(this)===!0){n.call(this);let s=E(()=>this.tokenMatcher(this.LA(1),i),"separatorLookAheadFunc");for(;this.tokenMatcher(this.LA(1),i)===!0;)this.CONSUME(i),n.call(this);this.attemptInRepetitionRecovery(this.repetitionSepSecondInternal,[e,i,s,n,RCe],s,h6,e,RCe)}else throw this.raiseEarlyExitException(e,wi.REPETITION_MANDATORY_WITH_SEPARATOR,t.ERR_MSG)}manyInternal(e,t){let r=this.getKeyForAutomaticLookahead(PG,e);return this.manyInternalLogic(e,t,r)}manyInternalLogic(e,t,r){let n=this.getLaFuncFromCache(r),i;if(typeof t!="function"){i=t.DEF;let s=t.GATE;if(s!==void 0){let l=n;n=E(()=>s.call(this)&&l.call(this),"lookaheadFunction")}}else i=t;let a=!0;for(;n.call(this)===!0&&a===!0;)a=this.doSingleRepetition(i);this.attemptInRepetitionRecovery(this.manyInternal,[e,t],n,PG,e,FTt,a)}manySepFirstInternal(e,t){let r=this.getKeyForAutomaticLookahead(BG,e);this.manySepFirstInternalLogic(e,t,r)}manySepFirstInternalLogic(e,t,r){let n=t.DEF,i=t.SEP;if(this.getLaFuncFromCache(r).call(this)===!0){n.call(this);let s=E(()=>this.tokenMatcher(this.LA(1),i),"separatorLookAheadFunc");for(;this.tokenMatcher(this.LA(1),i)===!0;)this.CONSUME(i),n.call(this);this.attemptInRepetitionRecovery(this.repetitionSepSecondInternal,[e,i,s,n,ACe],s,BG,e,ACe)}}repetitionSepSecondInternal(e,t,r,n,i){for(;r();)this.CONSUME(t),n.call(this);this.attemptInRepetitionRecovery(this.repetitionSepSecondInternal,[e,t,r,n,i],r,h6,e,i)}doSingleRepetition(e){let t=this.getLexerPosition();return e.call(this),this.getLexerPosition()>t}orInternal(e,t){let r=this.getKeyForAutomaticLookahead(q5e,t),n=un(e)?e:e.DEF,a=this.getLaFuncFromCache(r).call(this,n);if(a!==void 0)return n[a].ALT.call(this);this.raiseNoAltException(t,e.ERR_MSG)}ruleFinallyStateUpdate(){if(this.RULE_STACK.pop(),this.RULE_OCCURRENCE_STACK.pop(),this.cstFinallyStateUpdate(),this.RULE_STACK.length===0&&this.isAtEndOfInput()===!1){let e=this.LA(1),t=this.errorMessageProvider.buildNotAllInputParsedMessage({firstRedundant:e,ruleName:this.getCurrRuleFullName()});this.SAVE_ERROR(new HTt(t,e))}}subruleInternal(e,t,r){let n;try{let i=r!==void 0?r.ARGS:void 0;return this.subruleIdx=t,n=e.apply(this,i),this.cstPostNonTerminal(n,r!==void 0&&r.LABEL!==void 0?r.LABEL:e.ruleName),n}catch(i){throw this.subruleInternalError(i,r,e.ruleName)}}subruleInternalError(e,t,r){throw nw(e)&&e.partialCstResult!==void 0&&(this.cstPostNonTerminal(e.partialCstResult,t!==void 0&&t.LABEL!==void 0?t.LABEL:r),delete e.partialCstResult),e}consumeInternal(e,t,r){let n;try{let i=this.LA(1);this.tokenMatcher(i,e)===!0?(this.consumeToken(),n=i):this.consumeInternalError(e,i,r)}catch(i){n=this.consumeInternalRecovery(e,t,i)}return this.cstPostTerminal(r!==void 0&&r.LABEL!==void 0?r.LABEL:e.name,n),n}consumeInternalError(e,t,r){let n,i=this.LA(0);throw r!==void 0&&r.ERR_MSG?n=r.ERR_MSG:n=this.errorMessageProvider.buildMismatchTokenMessage({expected:e,actual:t,previous:i,ruleName:this.getCurrRuleFullName()}),this.SAVE_ERROR(new G5e(n,t,i))}consumeInternalRecovery(e,t,r){if(this.recoveryEnabled&&r.name==="MismatchedTokenException"&&!this.isBackTracking()){let n=this.getFollowsForInRuleRecovery(e,t);try{return this.tryInRuleRecovery(e,n)}catch(i){throw i.name===V5e?r:i}}else throw r}saveRecogState(){let e=this.errors,t=Ya(this.RULE_STACK);return{errors:e,lexerState:this.exportLexerState(),RULE_STACK:t,CST_STACK:this.CST_STACK}}reloadRecogState(e){this.errors=e.errors,this.importLexerState(e.lexerState),this.RULE_STACK=e.RULE_STACK}ruleInvocationStateUpdate(e,t,r){this.RULE_OCCURRENCE_STACK.push(r),this.RULE_STACK.push(e),this.cstInvocationStateUpdate(t)}isBackTracking(){return this.isBackTrackingStack.length!==0}getCurrRuleFullName(){let e=this.getLastExplicitRuleShortName();return this.shortRuleNameToFull[e]}shortRuleNameToFullName(e){return this.shortRuleNameToFull[e]}isAtEndOfInput(){return this.tokenMatcher(this.LA(1),pp)}reset(){this.resetLexerState(),this.subruleIdx=0,this.isBackTrackingStack=[],this.errors=[],this.RULE_STACK=[],this.CST_STACK=[],this.RULE_OCCURRENCE_STACK=[]}},iCt=class{static{o(this,"ErrorHandler")}static{E(this,"ErrorHandler")}initErrorHandler(e){this._errors=[],this.errorMessageProvider=wr(e,"errorMessageProvider")?e.errorMessageProvider:Qh.errorMessageProvider}SAVE_ERROR(e){if(nw(e))return e.context={ruleStack:this.getHumanReadableRuleStack(),ruleOccurrenceStack:Ya(this.RULE_OCCURRENCE_STACK)},this._errors.push(e),e;throw Error("Trying to save an Error which is not a RecognitionException")}get errors(){return Ya(this._errors)}set errors(e){this._errors=e}raiseEarlyExitException(e,t,r){let n=this.getCurrRuleFullName(),i=this.getGAstProductions()[n],s=Lw(e,i,t,this.maxLookahead)[0],l=[];for(let h=1;h<=this.maxLookahead;h++)l.push(this.LA(h));let u=this.errorMessageProvider.buildEarlyExitMessage({expectedIterationPaths:s,actual:l,previous:this.LA(0),customUserDescription:r,ruleName:n});throw this.SAVE_ERROR(new UTt(u,this.LA(1),this.LA(0)))}raiseNoAltException(e,t){let r=this.getCurrRuleFullName(),n=this.getGAstProductions()[r],i=_w(e,n,this.maxLookahead),a=[];for(let u=1;u<=this.maxLookahead;u++)a.push(this.LA(u));let s=this.LA(0),l=this.errorMessageProvider.buildNoViableAltMessage({expectedPathsPerAlt:i,actual:a,previous:s,customUserDescription:t,ruleName:this.getCurrRuleFullName()});throw this.SAVE_ERROR(new qTt(l,this.LA(1),s))}},aCt=class{static{o(this,"ContentAssist")}static{E(this,"ContentAssist")}initContentAssist(){}computeContentAssist(e,t){let r=this.gastProductionsCache[e];if(Kh(r))throw Error(`Rule ->${e}<- does not exist in this grammar.`);return Mq([r],t,this.tokenMatcher,this.maxLookahead)}getNextPossibleTokenTypes(e){let t=Rc(e.ruleStack),n=this.getGAstProductions()[t];return new $Tt(n,e).startWalking()}},JR={description:"This Object indicates the Parser is during Recording Phase"};Object.freeze(JR);_Ce=!0,LCe=Math.pow(2,bp)-1,eAe=xv({name:"RECORDING_PHASE_TOKEN",pattern:Fs.NA});Fv([eAe]);tAe=Rw(eAe,`This IToken indicates the Parser is in Recording Phase
+	See: https://chevrotain.io/docs/guide/internals.html#grammar-recording for details`,-1,-1,-1,-1,-1,-1);Object.freeze(tAe);sCt={name:`This CSTNode indicates the Parser is in Recording Phase
+	See: https://chevrotain.io/docs/guide/internals.html#grammar-recording for details`,children:{}},oCt=class{static{o(this,"GastRecorder")}static{E(this,"GastRecorder")}initGastRecorder(e){this.recordingProdStack=[],this.RECORDING_PHASE=!1}enableRecording(){this.RECORDING_PHASE=!0,this.TRACE_INIT("Enable Recording",()=>{for(let e=0;e<10;e++){let t=e>0?e:"";this[`CONSUME${t}`]=function(r,n){return this.consumeInternalRecord(r,e,n)},this[`SUBRULE${t}`]=function(r,n){return this.subruleInternalRecord(r,e,n)},this[`OPTION${t}`]=function(r){return this.optionInternalRecord(r,e)},this[`OR${t}`]=function(r){return this.orInternalRecord(r,e)},this[`MANY${t}`]=function(r){this.manyInternalRecord(e,r)},this[`MANY_SEP${t}`]=function(r){this.manySepFirstInternalRecord(e,r)},this[`AT_LEAST_ONE${t}`]=function(r){this.atLeastOneInternalRecord(e,r)},this[`AT_LEAST_ONE_SEP${t}`]=function(r){this.atLeastOneSepFirstInternalRecord(e,r)}}this.consume=function(e,t,r){return this.consumeInternalRecord(t,e,r)},this.subrule=function(e,t,r){return this.subruleInternalRecord(t,e,r)},this.option=function(e,t){return this.optionInternalRecord(t,e)},this.or=function(e,t){return this.orInternalRecord(t,e)},this.many=function(e,t){this.manyInternalRecord(e,t)},this.atLeastOne=function(e,t){this.atLeastOneInternalRecord(e,t)},this.ACTION=this.ACTION_RECORD,this.BACKTRACK=this.BACKTRACK_RECORD,this.LA=this.LA_RECORD})}disableRecording(){this.RECORDING_PHASE=!1,this.TRACE_INIT("Deleting Recording methods",()=>{let e=this;for(let t=0;t<10;t++){let r=t>0?t:"";delete e[`CONSUME${r}`],delete e[`SUBRULE${r}`],delete e[`OPTION${r}`],delete e[`OR${r}`],delete e[`MANY${r}`],delete e[`MANY_SEP${r}`],delete e[`AT_LEAST_ONE${r}`],delete e[`AT_LEAST_ONE_SEP${r}`]}delete e.consume,delete e.subrule,delete e.option,delete e.or,delete e.many,delete e.atLeastOne,delete e.ACTION,delete e.BACKTRACK,delete e.LA})}ACTION_RECORD(e){}BACKTRACK_RECORD(e,t){return()=>!0}LA_RECORD(e){return tR}topLevelRuleRecord(e,t){try{let r=new Pv({definition:[],name:e});return r.name=e,this.recordingProdStack.push(r),t.call(this),this.recordingProdStack.pop(),r}catch(r){if(r.KNOWN_RECORDER_ERROR!==!0)try{r.message=r.message+`
 	 This error was thrown during the "grammar recording phase" For more info see:
-	https://chevrotain.io/docs/guide/internals.html#grammar-recording`}catch{throw r}throw r}}optionInternalRecord(e,t){return L1.call(this,Ca,e,t)}atLeastOneInternalRecord(e,t){L1.call(this,yo,t,e)}atLeastOneSepFirstInternalRecord(e,t){L1.call(this,vo,t,e,cye)}manyInternalRecord(e,t){L1.call(this,hn,t,e)}manySepFirstInternalRecord(e,t){L1.call(this,qs,t,e,cye)}orInternalRecord(e,t){return Mke.call(this,e,t)}subruleInternalRecord(e,t,r){if(fT(t),!e||mr(e,"ruleName")===!1){let s=new Error(`<SUBRULE${IF(t)}> argument is invalid expecting a Parser method reference but got: <${JSON.stringify(e)}>
- inside top level rule: <${this.recordingProdStack[0].name}>`);throw s.KNOWN_RECORDER_ERROR=!0,s}let i=z0(this.recordingProdStack),n=e.ruleName,a=new us({idx:t,nonTerminalName:n,label:r?.LABEL,referencedRule:void 0});return i.definition.push(a),this.outputCst?Z0t:AA}consumeInternalRecord(e,t,r){if(fT(t),!$z(e)){let a=new Error(`<CONSUME${IF(t)}> argument is invalid expecting a TokenType reference but got: <${JSON.stringify(e)}>
- inside top level rule: <${this.recordingProdStack[0].name}>`);throw a.KNOWN_RECORDER_ERROR=!0,a}let i=z0(this.recordingProdStack),n=new Wi({idx:t,terminalType:e,label:r?.LABEL});return i.definition.push(n),Lke}};o(L1,"recordProd");S(L1,"recordProd");o(Mke,"recordOrProd");S(Mke,"recordOrProd");o(IF,"getIdxSuffix");S(IF,"getIdxSuffix");o(fT,"assertMethodIdxIsValid");S(fT,"assertMethodIdxIsValid");J0t=class{static{o(this,"PerformanceTracer")}static{S(this,"PerformanceTracer")}initPerformanceTracer(e){if(mr(e,"traceInitPerf")){let t=e.traceInitPerf,r=typeof t=="number";this.traceInitMaxIdent=r?t:1/0,this.traceInitPerf=r?t>0:t}else this.traceInitMaxIdent=0,this.traceInitPerf=ph.traceInitPerf;this.traceInitIndent=-1}TRACE_INIT(e,t){if(this.traceInitPerf===!0){this.traceInitIndent++;let r=new Array(this.traceInitIndent+1).join("	");this.traceInitIndent<this.traceInitMaxIdent&&console.log(`${r}--> <${e}>`);let{time:i,value:n}=Nz(t),a=i>10?console.warn:console.log;return this.traceInitIndent<this.traceInitMaxIdent&&a(`${r}<-- <${e}> time: ${i}ms`),this.traceInitIndent--,n}else return t()}};o(Nke,"applyMixins");S(Nke,"applyMixins");R5=PT(gf,"",NaN,NaN,NaN,NaN,NaN,NaN);Object.freeze(R5);ph=Object.freeze({recoveryEnabled:!1,maxLookahead:3,dynamicTokensEnabled:!1,outputCst:!0,errorMessageProvider:z1,nodeLocationTracking:"none",traceInitPerf:!1,skipValidations:!1}),L5=Object.freeze({recoveryValueFunc:S(()=>{},"recoveryValueFunc"),resyncEnabled:!0});(function(e){e[e.INVALID_RULE_NAME=0]="INVALID_RULE_NAME",e[e.DUPLICATE_RULE_NAME=1]="DUPLICATE_RULE_NAME",e[e.INVALID_RULE_OVERRIDE=2]="INVALID_RULE_OVERRIDE",e[e.DUPLICATE_PRODUCTIONS=3]="DUPLICATE_PRODUCTIONS",e[e.UNRESOLVED_SUBRULE_REF=4]="UNRESOLVED_SUBRULE_REF",e[e.LEFT_RECURSION=5]="LEFT_RECURSION",e[e.NONE_LAST_EMPTY_ALT=6]="NONE_LAST_EMPTY_ALT",e[e.AMBIGUOUS_ALTS=7]="AMBIGUOUS_ALTS",e[e.CONFLICT_TOKENS_RULES_NAMESPACE=8]="CONFLICT_TOKENS_RULES_NAMESPACE",e[e.INVALID_TOKEN_NAME=9]="INVALID_TOKEN_NAME",e[e.NO_NON_EMPTY_LOOKAHEAD=10]="NO_NON_EMPTY_LOOKAHEAD",e[e.AMBIGUOUS_PREFIX_ALTS=11]="AMBIGUOUS_PREFIX_ALTS",e[e.TOO_MANY_ALTS=12]="TOO_MANY_ALTS",e[e.CUSTOM_LOOKAHEAD_VALIDATION=13]="CUSTOM_LOOKAHEAD_VALIDATION"})(hs||(hs={}));o(OF,"EMPTY_ALT");S(OF,"EMPTY_ALT");Kz=class Ike{static{o(this,"_Parser")}static{S(this,"Parser")}static performSelfAnalysis(t){throw Error("The **static** `performSelfAnalysis` method has been deprecated.	\nUse the **instance** method with the same name instead.")}performSelfAnalysis(){this.TRACE_INIT("performSelfAnalysis",()=>{let t;this.selfAnalysisDone=!0;let r=this.className;this.TRACE_INIT("toFastProps",()=>{Iz(this)}),this.TRACE_INIT("Grammar Recording",()=>{try{this.enableRecording(),vr(this.definedRulesNames,n=>{let s=this[n].originalGrammarAction,l;this.TRACE_INIT(`${n} Rule`,()=>{l=this.topLevelRuleRecord(n,s)}),this.gastProductionsCache[n]=l})}finally{this.disableRecording()}});let i=[];if(this.TRACE_INIT("Grammar Resolving",()=>{i=uke({rules:Hn(this.gastProductionsCache)}),this.definitionErrors=this.definitionErrors.concat(i)}),this.TRACE_INIT("Grammar Validations",()=>{if(Oi(i)&&this.skipValidations===!1){let n=hke({rules:Hn(this.gastProductionsCache),tokenTypes:Hn(this.tokensMap),errMsgProvider:I0,grammarName:r}),a=ZCe({lookaheadStrategy:this.lookaheadStrategy,rules:Hn(this.gastProductionsCache),tokenTypes:Hn(this.tokensMap),grammarName:r});this.definitionErrors=this.definitionErrors.concat(n,a)}}),Oi(this.definitionErrors)&&(this.recoveryEnabled&&this.TRACE_INIT("computeAllProdsFollows",()=>{let n=nCe(Hn(this.gastProductionsCache));this.resyncFollows=n}),this.TRACE_INIT("ComputeLookaheadFunctions",()=>{var n,a;(a=(n=this.lookaheadStrategy).initialize)===null||a===void 0||a.call(n,{rules:Hn(this.gastProductionsCache)}),this.preComputeLookaheadFunctions(Hn(this.gastProductionsCache))})),!Ike.DEFER_DEFINITION_ERRORS_HANDLING&&!Oi(this.definitionErrors))throw t=nr(this.definitionErrors,n=>n.message),new Error(`Parser Definition Errors detected:
+	https://chevrotain.io/docs/guide/internals.html#grammar-recording`}catch{throw r}throw r}}optionInternalRecord(e,t){return nv.call(this,Ua,e,t)}atLeastOneInternalRecord(e,t){nv.call(this,Zo,t,e)}atLeastOneSepFirstInternalRecord(e,t){nv.call(this,Qo,t,e,_Ce)}manyInternalRecord(e,t){nv.call(this,Mi,t,e)}manySepFirstInternalRecord(e,t){nv.call(this,wo,t,e,_Ce)}orInternalRecord(e,t){return rAe.call(this,e,t)}subruleInternalRecord(e,t,r){if(iw(t),!e||wr(e,"ruleName")===!1){let s=new Error(`<SUBRULE${GG(t)}> argument is invalid expecting a Parser method reference but got: <${JSON.stringify(e)}>
+ inside top level rule: <${this.recordingProdStack[0].name}>`);throw s.KNOWN_RECORDER_ERROR=!0,s}let n=Xg(this.recordingProdStack),i=e.ruleName,a=new Gs({idx:t,nonTerminalName:i,label:r?.LABEL,referencedRule:void 0});return n.definition.push(a),this.outputCst?sCt:JR}consumeInternalRecord(e,t,r){if(iw(t),!Lq(e)){let a=new Error(`<CONSUME${GG(t)}> argument is invalid expecting a TokenType reference but got: <${JSON.stringify(e)}>
+ inside top level rule: <${this.recordingProdStack[0].name}>`);throw a.KNOWN_RECORDER_ERROR=!0,a}let n=Xg(this.recordingProdStack),i=new ci({idx:t,terminalType:e,label:r?.LABEL});return n.definition.push(i),tAe}};o(nv,"recordProd");E(nv,"recordProd");o(rAe,"recordOrProd");E(rAe,"recordOrProd");o(GG,"getIdxSuffix");E(GG,"getIdxSuffix");o(iw,"assertMethodIdxIsValid");E(iw,"assertMethodIdxIsValid");lCt=class{static{o(this,"PerformanceTracer")}static{E(this,"PerformanceTracer")}initPerformanceTracer(e){if(wr(e,"traceInitPerf")){let t=e.traceInitPerf,r=typeof t=="number";this.traceInitMaxIdent=r?t:1/0,this.traceInitPerf=r?t>0:t}else this.traceInitMaxIdent=0,this.traceInitPerf=Qh.traceInitPerf;this.traceInitIndent=-1}TRACE_INIT(e,t){if(this.traceInitPerf===!0){this.traceInitIndent++;let r=new Array(this.traceInitIndent+1).join("	");this.traceInitIndent<this.traceInitMaxIdent&&console.log(`${r}--> <${e}>`);let{time:n,value:i}=kq(t),a=n>10?console.warn:console.log;return this.traceInitIndent<this.traceInitMaxIdent&&a(`${r}<-- <${e}> time: ${n}ms`),this.traceInitIndent--,i}else return t()}};o(nAe,"applyMixins");E(nAe,"applyMixins");tR=Rw(pp,"",NaN,NaN,NaN,NaN,NaN,NaN);Object.freeze(tR);Qh=Object.freeze({recoveryEnabled:!1,maxLookahead:3,dynamicTokensEnabled:!1,outputCst:!0,errorMessageProvider:pv,nodeLocationTracking:"none",traceInitPerf:!1,skipValidations:!1}),rR=Object.freeze({recoveryValueFunc:E(()=>{},"recoveryValueFunc"),resyncEnabled:!0});(function(e){e[e.INVALID_RULE_NAME=0]="INVALID_RULE_NAME",e[e.DUPLICATE_RULE_NAME=1]="DUPLICATE_RULE_NAME",e[e.INVALID_RULE_OVERRIDE=2]="INVALID_RULE_OVERRIDE",e[e.DUPLICATE_PRODUCTIONS=3]="DUPLICATE_PRODUCTIONS",e[e.UNRESOLVED_SUBRULE_REF=4]="UNRESOLVED_SUBRULE_REF",e[e.LEFT_RECURSION=5]="LEFT_RECURSION",e[e.NONE_LAST_EMPTY_ALT=6]="NONE_LAST_EMPTY_ALT",e[e.AMBIGUOUS_ALTS=7]="AMBIGUOUS_ALTS",e[e.CONFLICT_TOKENS_RULES_NAMESPACE=8]="CONFLICT_TOKENS_RULES_NAMESPACE",e[e.INVALID_TOKEN_NAME=9]="INVALID_TOKEN_NAME",e[e.NO_NON_EMPTY_LOOKAHEAD=10]="NO_NON_EMPTY_LOOKAHEAD",e[e.AMBIGUOUS_PREFIX_ALTS=11]="AMBIGUOUS_PREFIX_ALTS",e[e.TOO_MANY_ALTS=12]="TOO_MANY_ALTS",e[e.CUSTOM_LOOKAHEAD_VALIDATION=13]="CUSTOM_LOOKAHEAD_VALIDATION"})(Vs||(Vs={}));o(VG,"EMPTY_ALT");E(VG,"EMPTY_ALT");Gq=class iAe{static{o(this,"_Parser")}static{E(this,"Parser")}static performSelfAnalysis(t){throw Error("The **static** `performSelfAnalysis` method has been deprecated.	\nUse the **instance** method with the same name instead.")}performSelfAnalysis(){this.TRACE_INIT("performSelfAnalysis",()=>{let t;this.selfAnalysisDone=!0;let r=this.className;this.TRACE_INIT("toFastProps",()=>{Sq(this)}),this.TRACE_INIT("Grammar Recording",()=>{try{this.enableRecording(),Ir(this.definedRulesNames,i=>{let s=this[i].originalGrammarAction,l;this.TRACE_INIT(`${i} Rule`,()=>{l=this.topLevelRuleRecord(i,s)}),this.gastProductionsCache[i]=l})}finally{this.disableRecording()}});let n=[];if(this.TRACE_INIT("Grammar Resolving",()=>{n=N5e({rules:ha(this.gastProductionsCache)}),this.definitionErrors=this.definitionErrors.concat(n)}),this.TRACE_INIT("Grammar Validations",()=>{if(ei(n)&&this.skipValidations===!1){let i=P5e({rules:ha(this.gastProductionsCache),tokenTypes:ha(this.tokensMap),errMsgProvider:Wg,grammarName:r}),a=T5e({lookaheadStrategy:this.lookaheadStrategy,rules:ha(this.gastProductionsCache),tokenTypes:ha(this.tokensMap),grammarName:r});this.definitionErrors=this.definitionErrors.concat(i,a)}}),ei(this.definitionErrors)&&(this.recoveryEnabled&&this.TRACE_INIT("computeAllProdsFollows",()=>{let i=_3e(ha(this.gastProductionsCache));this.resyncFollows=i}),this.TRACE_INIT("ComputeLookaheadFunctions",()=>{var i,a;(a=(i=this.lookaheadStrategy).initialize)===null||a===void 0||a.call(i,{rules:ha(this.gastProductionsCache)}),this.preComputeLookaheadFunctions(ha(this.gastProductionsCache))})),!iAe.DEFER_DEFINITION_ERRORS_HANDLING&&!ei(this.definitionErrors))throw t=hr(this.definitionErrors,i=>i.message),new Error(`Parser Definition Errors detected:
  ${t.join(`
 -------------------------------
-`)}`)})}constructor(t,r){this.definitionErrors=[],this.selfAnalysisDone=!1;let i=this;if(i.initErrorHandler(r),i.initLexerAdapter(),i.initLooksAhead(r),i.initRecognizerEngine(t,r),i.initRecoverable(r),i.initTreeBuilder(r),i.initContentAssist(),i.initGastRecorder(r),i.initPerformanceTracer(r),mr(r,"ignoredIssues"))throw new Error(`The <ignoredIssues> IParserConfig property has been deprecated.
+`)}`)})}constructor(t,r){this.definitionErrors=[],this.selfAnalysisDone=!1;let n=this;if(n.initErrorHandler(r),n.initLexerAdapter(),n.initLooksAhead(r),n.initRecognizerEngine(t,r),n.initRecoverable(r),n.initTreeBuilder(r),n.initContentAssist(),n.initGastRecorder(r),n.initPerformanceTracer(r),wr(r,"ignoredIssues"))throw new Error(`The <ignoredIssues> IParserConfig property has been deprecated.
 	Please use the <IGNORE_AMBIGUITIES> flag on the relevant DSL method instead.
 	See: https://chevrotain.io/docs/guide/resolving_grammar_errors.html#IGNORING_AMBIGUITIES
-	For further details.`);this.skipValidations=mr(r,"skipValidations")?r.skipValidations:ph.skipValidations}};Kz.DEFER_DEFINITION_ERRORS_HANDLING=!1;Nke(Kz,[$0t,V0t,U0t,H0t,j0t,Y0t,X0t,K0t,Q0t,J0t]);emt=class extends Kz{static{o(this,"EmbeddedActionsParser")}static{S(this,"EmbeddedActionsParser")}constructor(e,t=ph){let r=ka(t);r.outputCst=!1,super(e,r)}};o(Oke,"arrayMap2");S(Oke,"arrayMap");Pke=Oke;o(Bke,"listCacheClear2");S(Bke,"listCacheClear");tmt=Bke;o(Fke,"eq2");S(Fke,"eq");$ke=Fke;o(zke,"assocIndexOf2");S(zke,"assocIndexOf");_A=zke,rmt=Array.prototype,imt=rmt.splice;o(Gke,"listCacheDelete2");S(Gke,"listCacheDelete");nmt=Gke;o(Vke,"listCacheGet2");S(Vke,"listCacheGet");amt=Vke;o(Wke,"listCacheHas2");S(Wke,"listCacheHas");smt=Wke;o(qke,"listCacheSet2");S(qke,"listCacheSet");omt=qke;o(im,"ListCache2");S(im,"ListCache");im.prototype.clear=tmt;im.prototype.delete=nmt;im.prototype.get=amt;im.prototype.has=smt;im.prototype.set=omt;DA=im;o(Uke,"stackClear2");S(Uke,"stackClear");lmt=Uke;o(Hke,"stackDelete2");S(Hke,"stackDelete");cmt=Hke;o(Yke,"stackGet2");S(Yke,"stackGet");umt=Yke;o(jke,"stackHas2");S(jke,"stackHas");hmt=jke,dmt=typeof global=="object"&&global&&global.Object===Object&&global,Xke=dmt,fmt=typeof self=="object"&&self&&self.Object===Object&&self,pmt=Xke||fmt||Function("return this")(),xh=pmt,mmt=xh.Symbol,eu=mmt,Kke=Object.prototype,gmt=Kke.hasOwnProperty,ymt=Kke.toString,b2=eu?eu.toStringTag:void 0;o(Zke,"getRawTag2");S(Zke,"getRawTag");vmt=Zke,xmt=Object.prototype,bmt=xmt.toString;o(Qke,"objectToString2");S(Qke,"objectToString");Tmt=Qke,Cmt="[object Null]",kmt="[object Undefined]",hye=eu?eu.toStringTag:void 0;o(Jke,"baseGetTag2");S(Jke,"baseGetTag");dy=Jke;o(ewe,"isObject2");S(ewe,"isObject");Zz=ewe,wmt="[object AsyncFunction]",Smt="[object Function]",Emt="[object GeneratorFunction]",Amt="[object Proxy]";o(twe,"isFunction2");S(twe,"isFunction");rwe=twe,_mt=xh["__core-js_shared__"],ZP=_mt,dye=(function(){var e=/[^.]+$/.exec(ZP&&ZP.keys&&ZP.keys.IE_PROTO||"");return e?"Symbol(src)_1."+e:""})();o(iwe,"isMasked2");S(iwe,"isMasked");Dmt=iwe,Rmt=Function.prototype,Lmt=Rmt.toString;o(nwe,"toSource2");S(nwe,"toSource");nm=nwe,Mmt=/[\\^$.*+?()[\]{}|]/g,Nmt=/^\[object .+?Constructor\]$/,Imt=Function.prototype,Omt=Object.prototype,Pmt=Imt.toString,Bmt=Omt.hasOwnProperty,Fmt=RegExp("^"+Pmt.call(Bmt).replace(Mmt,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");o(awe,"baseIsNative2");S(awe,"baseIsNative");$mt=awe;o(swe,"getValue2");S(swe,"getValue");zmt=swe;o(owe,"getNative2");S(owe,"getNative");fy=owe,Gmt=fy(xh,"Map"),pT=Gmt,Vmt=fy(Object,"create"),mT=Vmt;o(lwe,"hashClear2");S(lwe,"hashClear");Wmt=lwe;o(cwe,"hashDelete2");S(cwe,"hashDelete");qmt=cwe,Umt="__lodash_hash_undefined__",Hmt=Object.prototype,Ymt=Hmt.hasOwnProperty;o(uwe,"hashGet2");S(uwe,"hashGet");jmt=uwe,Xmt=Object.prototype,Kmt=Xmt.hasOwnProperty;o(hwe,"hashHas2");S(hwe,"hashHas");Zmt=hwe,Qmt="__lodash_hash_undefined__";o(dwe,"hashSet2");S(dwe,"hashSet");Jmt=dwe;o(am,"Hash2");S(am,"Hash");am.prototype.clear=Wmt;am.prototype.delete=qmt;am.prototype.get=jmt;am.prototype.has=Zmt;am.prototype.set=Jmt;fye=am;o(fwe,"mapCacheClear2");S(fwe,"mapCacheClear");egt=fwe;o(pwe,"isKeyable2");S(pwe,"isKeyable");tgt=pwe;o(mwe,"getMapData2");S(mwe,"getMapData");RA=mwe;o(gwe,"mapCacheDelete2");S(gwe,"mapCacheDelete");rgt=gwe;o(ywe,"mapCacheGet2");S(ywe,"mapCacheGet");igt=ywe;o(vwe,"mapCacheHas2");S(vwe,"mapCacheHas");ngt=vwe;o(xwe,"mapCacheSet2");S(xwe,"mapCacheSet");agt=xwe;o(sm,"MapCache2");S(sm,"MapCache");sm.prototype.clear=egt;sm.prototype.delete=rgt;sm.prototype.get=igt;sm.prototype.has=ngt;sm.prototype.set=agt;LA=sm,sgt=200;o(bwe,"stackSet2");S(bwe,"stackSet");ogt=bwe;o(om,"Stack2");S(om,"Stack");om.prototype.clear=lmt;om.prototype.delete=cmt;om.prototype.get=umt;om.prototype.has=hmt;om.prototype.set=ogt;XE=om,lgt="__lodash_hash_undefined__";o(Twe,"setCacheAdd2");S(Twe,"setCacheAdd");cgt=Twe;o(Cwe,"setCacheHas2");S(Cwe,"setCacheHas");ugt=Cwe;o(gT,"SetCache2");S(gT,"SetCache");gT.prototype.add=gT.prototype.push=cgt;gT.prototype.has=ugt;kwe=gT;o(wwe,"arraySome2");S(wwe,"arraySome");hgt=wwe;o(Swe,"cacheHas2");S(Swe,"cacheHas");Ewe=Swe,dgt=1,fgt=2;o(Awe,"equalArrays2");S(Awe,"equalArrays");_we=Awe,pgt=xh.Uint8Array,pye=pgt;o(Dwe,"mapToArray2");S(Dwe,"mapToArray");mgt=Dwe;o(Rwe,"setToArray2");S(Rwe,"setToArray");Qz=Rwe,ggt=1,ygt=2,vgt="[object Boolean]",xgt="[object Date]",bgt="[object Error]",Tgt="[object Map]",Cgt="[object Number]",kgt="[object RegExp]",wgt="[object Set]",Sgt="[object String]",Egt="[object Symbol]",Agt="[object ArrayBuffer]",_gt="[object DataView]",mye=eu?eu.prototype:void 0,QP=mye?mye.valueOf:void 0;o(Lwe,"equalByTag2");S(Lwe,"equalByTag");Dgt=Lwe;o(Mwe,"arrayPush2");S(Mwe,"arrayPush");Nwe=Mwe,Rgt=Array.isArray,ds=Rgt;o(Iwe,"baseGetAllKeys2");S(Iwe,"baseGetAllKeys");Lgt=Iwe;o(Owe,"arrayFilter2");S(Owe,"arrayFilter");Pwe=Owe;o(Bwe,"stubArray2");S(Bwe,"stubArray");Mgt=Bwe,Ngt=Object.prototype,Igt=Ngt.propertyIsEnumerable,gye=Object.getOwnPropertySymbols,Ogt=gye?function(e){return e==null?[]:(e=Object(e),Pwe(gye(e),function(t){return Igt.call(e,t)}))}:Mgt,Pgt=Ogt;o(Fwe,"baseTimes2");S(Fwe,"baseTimes");Bgt=Fwe;o($we,"isObjectLike2");S($we,"isObjectLike");ry=$we,Fgt="[object Arguments]";o(zwe,"baseIsArguments2");S(zwe,"baseIsArguments");yye=zwe,Gwe=Object.prototype,$gt=Gwe.hasOwnProperty,zgt=Gwe.propertyIsEnumerable,Ggt=yye((function(){return arguments})())?yye:function(e){return ry(e)&&$gt.call(e,"callee")&&!zgt.call(e,"callee")},MA=Ggt;o(Vwe,"stubFalse2");S(Vwe,"stubFalse");Vgt=Vwe,Wwe=typeof exports=="object"&&exports&&!exports.nodeType&&exports,vye=Wwe&&typeof module=="object"&&module&&!module.nodeType&&module,Wgt=vye&&vye.exports===Wwe,xye=Wgt?xh.Buffer:void 0,qgt=xye?xye.isBuffer:void 0,Ugt=qgt||Vgt,M5=Ugt,Hgt=9007199254740991,Ygt=/^(?:0|[1-9]\d*)$/;o(qwe,"isIndex2");S(qwe,"isIndex");Uwe=qwe,jgt=9007199254740991;o(Hwe,"isLength2");S(Hwe,"isLength");Jz=Hwe,Xgt="[object Arguments]",Kgt="[object Array]",Zgt="[object Boolean]",Qgt="[object Date]",Jgt="[object Error]",e1t="[object Function]",t1t="[object Map]",r1t="[object Number]",i1t="[object Object]",n1t="[object RegExp]",a1t="[object Set]",s1t="[object String]",o1t="[object WeakMap]",l1t="[object ArrayBuffer]",c1t="[object DataView]",u1t="[object Float32Array]",h1t="[object Float64Array]",d1t="[object Int8Array]",f1t="[object Int16Array]",p1t="[object Int32Array]",m1t="[object Uint8Array]",g1t="[object Uint8ClampedArray]",y1t="[object Uint16Array]",v1t="[object Uint32Array]",Vi={};Vi[u1t]=Vi[h1t]=Vi[d1t]=Vi[f1t]=Vi[p1t]=Vi[m1t]=Vi[g1t]=Vi[y1t]=Vi[v1t]=!0;Vi[Xgt]=Vi[Kgt]=Vi[l1t]=Vi[Zgt]=Vi[c1t]=Vi[Qgt]=Vi[Jgt]=Vi[e1t]=Vi[t1t]=Vi[r1t]=Vi[i1t]=Vi[n1t]=Vi[a1t]=Vi[s1t]=Vi[o1t]=!1;o(Ywe,"baseIsTypedArray2");S(Ywe,"baseIsTypedArray");x1t=Ywe;o(jwe,"baseUnary2");S(jwe,"baseUnary");b1t=jwe,Xwe=typeof exports=="object"&&exports&&!exports.nodeType&&exports,Q2=Xwe&&typeof module=="object"&&module&&!module.nodeType&&module,T1t=Q2&&Q2.exports===Xwe,JP=T1t&&Xke.process,C1t=(function(){try{var e=Q2&&Q2.require&&Q2.require("util").types;return e||JP&&JP.binding&&JP.binding("util")}catch{}})(),bye=C1t,Tye=bye&&bye.isTypedArray,k1t=Tye?b1t(Tye):x1t,eG=k1t,w1t=Object.prototype,S1t=w1t.hasOwnProperty;o(Kwe,"arrayLikeKeys2");S(Kwe,"arrayLikeKeys");E1t=Kwe,A1t=Object.prototype;o(Zwe,"isPrototype2");S(Zwe,"isPrototype");Qwe=Zwe;o(Jwe,"overArg2");S(Jwe,"overArg");_1t=Jwe,D1t=_1t(Object.keys,Object),R1t=D1t,L1t=Object.prototype,M1t=L1t.hasOwnProperty;o(e4e,"baseKeys2");S(e4e,"baseKeys");t4e=e4e;o(r4e,"isArrayLike2");S(r4e,"isArrayLike");NA=r4e;o(i4e,"keys2");S(i4e,"keys");tG=i4e;o(n4e,"getAllKeys2");S(n4e,"getAllKeys");Cye=n4e,N1t=1,I1t=Object.prototype,O1t=I1t.hasOwnProperty;o(a4e,"equalObjects2");S(a4e,"equalObjects");P1t=a4e,B1t=fy(xh,"DataView"),PF=B1t,F1t=fy(xh,"Promise"),BF=F1t,$1t=fy(xh,"Set"),U1=$1t,z1t=fy(xh,"WeakMap"),FF=z1t,kye="[object Map]",G1t="[object Object]",wye="[object Promise]",Sye="[object Set]",Eye="[object WeakMap]",Aye="[object DataView]",V1t=nm(PF),W1t=nm(pT),q1t=nm(BF),U1t=nm(U1),H1t=nm(FF),d0=dy;(PF&&d0(new PF(new ArrayBuffer(1)))!=Aye||pT&&d0(new pT)!=kye||BF&&d0(BF.resolve())!=wye||U1&&d0(new U1)!=Sye||FF&&d0(new FF)!=Eye)&&(d0=S(function(e){var t=dy(e),r=t==G1t?e.constructor:void 0,i=r?nm(r):"";if(i)switch(i){case V1t:return Aye;case W1t:return kye;case q1t:return wye;case U1t:return Sye;case H1t:return Eye}return t},"getTag"));$F=d0,Y1t=1,_ye="[object Arguments]",Dye="[object Array]",xE="[object Object]",j1t=Object.prototype,Rye=j1t.hasOwnProperty;o(s4e,"baseIsEqualDeep2");S(s4e,"baseIsEqualDeep");X1t=s4e;o(rG,"baseIsEqual2");S(rG,"baseIsEqual");o4e=rG,K1t=1,Z1t=2;o(l4e,"baseIsMatch2");S(l4e,"baseIsMatch");Q1t=l4e;o(c4e,"isStrictComparable2");S(c4e,"isStrictComparable");u4e=c4e;o(h4e,"getMatchData2");S(h4e,"getMatchData");J1t=h4e;o(d4e,"matchesStrictComparable2");S(d4e,"matchesStrictComparable");f4e=d4e;o(p4e,"baseMatches2");S(p4e,"baseMatches");eyt=p4e,tyt="[object Symbol]";o(m4e,"isSymbol2");S(m4e,"isSymbol");IA=m4e,ryt=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,iyt=/^\w*$/;o(g4e,"isKey2");S(g4e,"isKey");iG=g4e,nyt="Expected a function";o(OA,"memoize2");S(OA,"memoize");OA.Cache=LA;ayt=OA,syt=500;o(y4e,"memoizeCapped2");S(y4e,"memoizeCapped");oyt=y4e,lyt=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,cyt=/\\(\\)?/g,uyt=oyt(function(e){var t=[];return e.charCodeAt(0)===46&&t.push(""),e.replace(lyt,function(r,i,n,a){t.push(n?a.replace(cyt,"$1"):i||r)}),t}),hyt=uyt,dyt=1/0,Lye=eu?eu.prototype:void 0,Mye=Lye?Lye.toString:void 0;o(nG,"baseToString2");S(nG,"baseToString");fyt=nG;o(v4e,"toString3");S(v4e,"toString");pyt=v4e;o(x4e,"castPath2");S(x4e,"castPath");b4e=x4e,myt=1/0;o(T4e,"toKey2");S(T4e,"toKey");PA=T4e;o(C4e,"baseGet2");S(C4e,"baseGet");k4e=C4e;o(w4e,"get2");S(w4e,"get");gyt=w4e;o(S4e,"baseHasIn2");S(S4e,"baseHasIn");yyt=S4e;o(E4e,"hasPath2");S(E4e,"hasPath");vyt=E4e;o(A4e,"hasIn2");S(A4e,"hasIn");xyt=A4e,byt=1,Tyt=2;o(_4e,"baseMatchesProperty2");S(_4e,"baseMatchesProperty");Cyt=_4e;o(D4e,"identity2");S(D4e,"identity");aG=D4e;o(R4e,"baseProperty2");S(R4e,"baseProperty");kyt=R4e;o(L4e,"basePropertyDeep2");S(L4e,"basePropertyDeep");wyt=L4e;o(M4e,"property2");S(M4e,"property");Syt=M4e;o(N4e,"baseIteratee2");S(N4e,"baseIteratee");BA=N4e;o(I4e,"createBaseFor2");S(I4e,"createBaseFor");Eyt=I4e,Ayt=Eyt(),_yt=Ayt;o(O4e,"baseForOwn2");S(O4e,"baseForOwn");Dyt=O4e;o(P4e,"createBaseEach2");S(P4e,"createBaseEach");Ryt=P4e,Lyt=Ryt(Dyt),FA=Lyt;o(B4e,"baseMap2");S(B4e,"baseMap");Myt=B4e;o(F4e,"map2");S(F4e,"map");sh=F4e;o($4e,"baseFilter2");S($4e,"baseFilter");Nyt=$4e;o(z4e,"filter2");S(z4e,"filter");Iyt=z4e;o(V0,"buildATNKey");S(V0,"buildATNKey");yf=1,Oyt=2,G4e=4,V4e=5,$T=7,Pyt=8,Byt=9,Fyt=10,$yt=11,W4e=12,sG=class{static{o(this,"AbstractTransition")}static{S(this,"AbstractTransition")}constructor(e){this.target=e}isEpsilon(){return!1}},oG=class extends sG{static{o(this,"AtomTransition")}static{S(this,"AtomTransition")}constructor(e,t){super(e),this.tokenType=t}},q4e=class extends sG{static{o(this,"EpsilonTransition")}static{S(this,"EpsilonTransition")}constructor(e){super(e)}isEpsilon(){return!0}},lG=class extends sG{static{o(this,"RuleTransition")}static{S(this,"RuleTransition")}constructor(e,t,r){super(e),this.rule=t,this.followState=r}isEpsilon(){return!0}};o(U4e,"createATN");S(U4e,"createATN");o(H4e,"createRuleStartAndStopATNStates");S(H4e,"createRuleStartAndStopATNStates");o(cG,"atom");S(cG,"atom");o(Y4e,"repetition");S(Y4e,"repetition");o(j4e,"repetitionSep");S(j4e,"repetitionSep");o(X4e,"repetitionMandatory");S(X4e,"repetitionMandatory");o(K4e,"repetitionMandatorySep");S(K4e,"repetitionMandatorySep");o(Z4e,"alternation");S(Z4e,"alternation");o(Q4e,"option");S(Q4e,"option");o(kf,"block");S(kf,"block");o(uG,"plus");S(uG,"plus");o(hG,"star");S(hG,"star");o(J4e,"optional");S(J4e,"optional");o(bh,"defineDecisionState");S(bh,"defineDecisionState");o(lm,"makeAlts");S(lm,"makeAlts");o(eSe,"getProdType2");S(eSe,"getProdType");o(tSe,"makeBlock");S(tSe,"makeBlock");o($A,"tokenRef");S($A,"tokenRef");o(rSe,"ruleRef");S(rSe,"ruleRef");o(iSe,"buildRuleHandle");S(iSe,"buildRuleHandle");o(vn,"epsilon");S(vn,"epsilon");o(Yn,"newState");S(Yn,"newState");o(zA,"addTransition");S(zA,"addTransition");o(nSe,"removeState");S(nSe,"removeState");N5={},zF=class{static{o(this,"ATNConfigSet")}static{S(this,"ATNConfigSet")}constructor(){this.map={},this.configs=[]}get size(){return this.configs.length}finalize(){this.map={}}add(e){let t=dG(e);t in this.map||(this.map[t]=this.configs.length,this.configs.push(e))}get elements(){return this.configs}get alts(){return sh(this.configs,e=>e.alt)}get key(){let e="";for(let t in this.map)e+=t+":";return e}};o(dG,"getATNConfigKey");S(dG,"getATNConfigKey");o(aSe,"baseExtremum");S(aSe,"baseExtremum");zyt=aSe;o(sSe,"baseLt");S(sSe,"baseLt");Gyt=sSe;o(oSe,"min");S(oSe,"min");Vyt=oSe,Nye=eu?eu.isConcatSpreadable:void 0;o(lSe,"isFlattenable2");S(lSe,"isFlattenable");Wyt=lSe;o(fG,"baseFlatten2");S(fG,"baseFlatten");cSe=fG;o(uSe,"flatMap2");S(uSe,"flatMap");qyt=uSe;o(hSe,"baseFindIndex2");S(hSe,"baseFindIndex");Uyt=hSe;o(dSe,"baseIsNaN2");S(dSe,"baseIsNaN");Hyt=dSe;o(fSe,"strictIndexOf2");S(fSe,"strictIndexOf");Yyt=fSe;o(pSe,"baseIndexOf2");S(pSe,"baseIndexOf");jyt=pSe;o(mSe,"arrayIncludes2");S(mSe,"arrayIncludes");Xyt=mSe;o(gSe,"arrayIncludesWith2");S(gSe,"arrayIncludesWith");Kyt=gSe;o(ySe,"noop2");S(ySe,"noop");Zyt=ySe,Qyt=1/0,Jyt=U1&&1/Qz(new U1([,-0]))[1]==Qyt?function(e){return new U1(e)}:Zyt,evt=Jyt,tvt=200;o(vSe,"baseUniq2");S(vSe,"baseUniq");rvt=vSe;o(xSe,"uniqBy");S(xSe,"uniqBy");ivt=xSe;o(bSe,"flatten2");S(bSe,"flatten");nvt=bSe;o(TSe,"arrayEach2");S(TSe,"arrayEach");avt=TSe;o(CSe,"castFunction2");S(CSe,"castFunction");svt=CSe;o(kSe,"forEach2");S(kSe,"forEach");eB=kSe,ovt="[object Map]",lvt="[object Set]",cvt=Object.prototype,uvt=cvt.hasOwnProperty;o(wSe,"isEmpty2");S(wSe,"isEmpty");hvt=wSe;o(SSe,"arrayReduce2");S(SSe,"arrayReduce");dvt=SSe;o(ESe,"baseReduce2");S(ESe,"baseReduce");fvt=ESe;o(ASe,"reduce2");S(ASe,"reduce");Iye=ASe;o(_Se,"createDFACache");S(_Se,"createDFACache");DSe=class{static{o(this,"PredicateSet")}static{S(this,"PredicateSet")}constructor(){this.predicates=[]}is(e){return e>=this.predicates.length||this.predicates[e]}set(e,t){this.predicates[e]=t}toString(){let e="",t=this.predicates.length;for(let r=0;r<t;r++)e+=this.predicates[r]===!0?"1":"0";return e}},Oye=new DSe,pvt=class extends jz{static{o(this,"LLStarLookaheadStrategy")}static{S(this,"LLStarLookaheadStrategy")}constructor(e){var t;super(),this.logging=(t=e?.logging)!==null&&t!==void 0?t:(r=>console.log(r))}initialize(e){this.atn=U4e(e.rules),this.dfas=RSe(this.atn)}validateAmbiguousAlternationAlternatives(){return[]}validateEmptyOrAlternatives(){return[]}buildLookaheadForAlternation(e){let{prodOccurrence:t,rule:r,hasPredicates:i,dynamicTokensEnabled:n}=e,a=this.dfas,s=this.logging,l=V0(r,"Alternation",t),h=this.atn.decisionMap[l].decision,d=sh(EF({maxLookahead:1,occurrence:t,prodType:"Alternation",rule:r}),f=>sh(f,p=>p[0]));if(GF(d,!1)&&!n){let f=Iye(d,(p,m,g)=>(eB(m,y=>{y&&(p[y.tokenTypeIdx]=g,eB(y.categoryMatches,v=>{p[v]=g}))}),p),{});return i?function(p){var m;let g=this.LA(1),y=f[g.tokenTypeIdx];if(p!==void 0&&y!==void 0){let v=(m=p[y])===null||m===void 0?void 0:m.GATE;if(v!==void 0&&v.call(this)===!1)return}return y}:function(){let p=this.LA(1);return f[p.tokenTypeIdx]}}else return i?function(f){let p=new DSe,m=f===void 0?0:f.length;for(let y=0;y<m;y++){let v=f?.[y].GATE;p.set(y,v===void 0||v.call(this))}let g=KE.call(this,a,h,p,s);return typeof g=="number"?g:void 0}:function(){let f=KE.call(this,a,h,Oye,s);return typeof f=="number"?f:void 0}}buildLookaheadForOptional(e){let{prodOccurrence:t,rule:r,prodType:i,dynamicTokensEnabled:n}=e,a=this.dfas,s=this.logging,l=V0(r,i,t),h=this.atn.decisionMap[l].decision,d=sh(EF({maxLookahead:1,occurrence:t,prodType:i,rule:r}),f=>sh(f,p=>p[0]));if(GF(d)&&d[0][0]&&!n){let f=d[0],p=nvt(f);if(p.length===1&&hvt(p[0].categoryMatches)){let g=p[0].tokenTypeIdx;return function(){return this.LA(1).tokenTypeIdx===g}}else{let m=Iye(p,(g,y)=>(y!==void 0&&(g[y.tokenTypeIdx]=!0,eB(y.categoryMatches,v=>{g[v]=!0})),g),{});return function(){let g=this.LA(1);return m[g.tokenTypeIdx]===!0}}}return function(){let f=KE.call(this,a,h,Oye,s);return typeof f=="object"?!1:f===0}}};o(GF,"isLL1Sequence");S(GF,"isLL1Sequence");o(RSe,"initATNSimulator");S(RSe,"initATNSimulator");o(KE,"adaptivePredict");S(KE,"adaptivePredict");o(LSe,"performLookahead");S(LSe,"performLookahead");o(MSe,"computeLookaheadTarget");S(MSe,"computeLookaheadTarget");o(NSe,"reportLookaheadAmbiguity");S(NSe,"reportLookaheadAmbiguity");o(ISe,"buildAmbiguityError");S(ISe,"buildAmbiguityError");o(OSe,"getProductionDslName2");S(OSe,"getProductionDslName");o(PSe,"buildAdaptivePredictError");S(PSe,"buildAdaptivePredictError");o(BSe,"getExistingTargetState");S(BSe,"getExistingTargetState");o(FSe,"computeReachSet");S(FSe,"computeReachSet");o($Se,"getReachableTarget");S($Se,"getReachableTarget");o(zSe,"getUniqueAlt");S(zSe,"getUniqueAlt");o(pG,"newDFAState");S(pG,"newDFAState");o(VF,"addDFAEdge");S(VF,"addDFAEdge");o(mG,"addDFAState");S(mG,"addDFAState");o(GSe,"computeStartState");S(GSe,"computeStartState");o(yT,"closure");S(yT,"closure");o(VSe,"getEpsilonTarget");S(VSe,"getEpsilonTarget");o(WSe,"hasConfigInRuleStopState");S(WSe,"hasConfigInRuleStopState");o(qSe,"allConfigsInRuleStopStates");S(qSe,"allConfigsInRuleStopStates");o(USe,"hasConflictTerminatingPrediction");S(USe,"hasConflictTerminatingPrediction");o(HSe,"getConflictingAltSets");S(HSe,"getConflictingAltSets");o(YSe,"hasConflictingAltSet");S(YSe,"hasConflictingAltSet");o(jSe,"hasStateAssociatedWithOneAlt");S(jSe,"hasStateAssociatedWithOneAlt");bT();XSe=class{static{o(this,"CstNodeBuilder")}static{S(this,"CstNodeBuilder")}constructor(){this.nodeStack=[]}get current(){return this.nodeStack[this.nodeStack.length-1]??this.rootNode}buildRootNode(e){return this.rootNode=new yG(e),this.rootNode.root=this.rootNode,this.nodeStack=[this.rootNode],this.rootNode}buildCompositeNode(e){let t=new GA;return t.grammarSource=e,t.root=this.rootNode,this.current.content.push(t),this.nodeStack.push(t),t}buildLeafNode(e,t){let r=new I5(e.startOffset,e.image.length,nT(e),e.tokenType,!t);return r.grammarSource=t,r.root=this.rootNode,this.current.content.push(r),r}removeNode(e){let t=e.container;if(t){let r=t.content.indexOf(e);r>=0&&t.content.splice(r,1)}}addHiddenNodes(e){let t=[];for(let n of e){let a=new I5(n.startOffset,n.image.length,nT(n),n.tokenType,!0);a.root=this.rootNode,t.push(a)}let r=this.current,i=!1;if(r.content.length>0){r.content.push(...t);return}for(;r.container;){let n=r.container.content.indexOf(r);if(n>0){r.container.content.splice(n,0,...t),i=!0;break}r=r.container}i||this.rootNode.content.unshift(...t)}construct(e){let t=this.current;typeof e.$type=="string"&&!e.$infix&&(this.current.astNode=e),e.$cstNode=t;let r=this.nodeStack.pop();r?.content.length===0&&this.removeNode(r)}},gG=class{static{o(this,"AbstractCstNode")}static{S(this,"AbstractCstNode")}get hidden(){return!1}get astNode(){let e=typeof this._astNode?.$type=="string"?this._astNode:this.container?.astNode;if(!e)throw new Error("This node has no associated AST element");return e}set astNode(e){this._astNode=e}get text(){return this.root.fullText.substring(this.offset,this.end)}},I5=class extends gG{static{o(this,"LeafCstNodeImpl")}static{S(this,"LeafCstNodeImpl")}get offset(){return this._offset}get length(){return this._length}get end(){return this._offset+this._length}get hidden(){return this._hidden}get tokenType(){return this._tokenType}get range(){return this._range}constructor(e,t,r,i,n=!1){super(),this._hidden=n,this._offset=e,this._tokenType=i,this._length=t,this._range=r}},GA=class extends gG{static{o(this,"CompositeCstNodeImpl")}static{S(this,"CompositeCstNodeImpl")}constructor(){super(...arguments),this.content=new mvt(this)}get offset(){return this.firstNonHiddenNode?.offset??0}get length(){return this.end-this.offset}get end(){return this.lastNonHiddenNode?.end??0}get range(){let e=this.firstNonHiddenNode,t=this.lastNonHiddenNode;if(e&&t){if(this._rangeCache===void 0){let{range:r}=e,{range:i}=t;this._rangeCache={start:r.start,end:i.end.line<r.start.line?r.start:i.end}}return this._rangeCache}else return{start:ai.create(0,0),end:ai.create(0,0)}}get firstNonHiddenNode(){for(let e of this.content)if(!e.hidden)return e;return this.content[0]}get lastNonHiddenNode(){for(let e=this.content.length-1;e>=0;e--){let t=this.content[e];if(!t.hidden)return t}return this.content[this.content.length-1]}},mvt=class KSe extends Array{static{o(this,"_CstNodeContainer")}static{S(this,"CstNodeContainer")}constructor(t){super(),this.parent=t,Object.setPrototypeOf(this,KSe.prototype)}push(...t){return this.addParents(t),super.push(...t)}unshift(...t){return this.addParents(t),super.unshift(...t)}splice(t,r,...i){return this.addParents(i),super.splice(t,r,...i)}addParents(t){for(let r of t)r.container=this.parent}},yG=class extends GA{static{o(this,"RootCstNodeImpl")}static{S(this,"RootCstNodeImpl")}get text(){return this._text.substring(this.offset,this.end)}get fullText(){return this._text}constructor(e){super(),this._text="",this._text=e??""}},O5=Symbol("Datatype");o(ZE,"isDataTypeNode");S(ZE,"isDataTypeNode");Pye="\u200B",ZSe=S(e=>e.endsWith(Pye)?e:e+Pye,"withRuleSuffix"),vG=class{static{o(this,"AbstractLangiumParser")}static{S(this,"AbstractLangiumParser")}constructor(e){this._unorderedGroups=new Map,this.allRules=new Map,this.lexer=e.parser.Lexer;let t=this.lexer.definition,r=e.LanguageMetaData.mode==="production";e.shared.profilers.LangiumProfiler?.isActive("parsing")?this.wrapper=new yvt(t,{...e.parser.ParserConfig,skipValidations:r,errorMessageProvider:e.parser.ParserErrorMessageProvider},e.shared.profilers.LangiumProfiler.createTask("parsing",e.LanguageMetaData.languageId)):this.wrapper=new t3e(t,{...e.parser.ParserConfig,skipValidations:r,errorMessageProvider:e.parser.ParserErrorMessageProvider})}alternatives(e,t){this.wrapper.wrapOr(e,t)}optional(e,t){this.wrapper.wrapOption(e,t)}many(e,t){this.wrapper.wrapMany(e,t)}atLeastOne(e,t){this.wrapper.wrapAtLeastOne(e,t)}getRule(e){return this.allRules.get(e)}isRecording(){return this.wrapper.IS_RECORDING}get unorderedGroups(){return this._unorderedGroups}getRuleStack(){return this.wrapper.RULE_STACK}finalize(){this.wrapper.wrapSelfAnalysis()}},QSe=class extends vG{static{o(this,"LangiumParser")}static{S(this,"LangiumParser")}get current(){return this.stack[this.stack.length-1]}constructor(e){super(e),this.nodeBuilder=new XSe,this.stack=[],this.assignmentMap=new Map,this.operatorPrecedence=new Map,this.linker=e.references.Linker,this.converter=e.parser.ValueConverter,this.astReflection=e.shared.AstReflection}rule(e,t){let r=this.computeRuleType(e),i;K1(e)&&(i=e.name,this.registerPrecedenceMap(e));let n=this.wrapper.DEFINE_RULE(ZSe(e.name),this.startImplementation(r,i,t).bind(this));return this.allRules.set(e.name,n),cs(e)&&e.entry&&(this.mainRule=n),n}registerPrecedenceMap(e){let t=e.name,r=new Map;for(let i=0;i<e.operators.precedences.length;i++){let n=e.operators.precedences[i];for(let a of n.operators)r.set(a.value,{precedence:i,rightAssoc:n.associativity==="right"})}this.operatorPrecedence.set(t,r)}computeRuleType(e){return K1(e)?$0(e):e.fragment?void 0:wT(e)?O5:$0(e)}parse(e,t={}){this.nodeBuilder.buildRootNode(e);let r=this.lexerResult=this.lexer.tokenize(e);this.wrapper.input=r.tokens;let i=t.rule?this.allRules.get(t.rule):this.mainRule;if(!i)throw new Error(t.rule?`No rule found with name '${t.rule}'`:"No main rule available.");let n=this.doParse(i);return this.nodeBuilder.addHiddenNodes(r.hidden),this.unorderedGroups.clear(),this.lexerResult=void 0,j1(n,{deep:!0}),{value:n,lexerErrors:r.errors,lexerReport:r.report,parserErrors:this.wrapper.errors}}doParse(e){let t=this.wrapper.rule(e);if(this.stack.length>0&&(t=this.construct()),t===void 0)throw new Error("No result from parser");if(this.stack.length>0)throw new Error("Parser stack is not empty after parsing");return t}startImplementation(e,t,r){return i=>{let n=!this.isRecording()&&e!==void 0;if(n){let a={$type:e};this.stack.push(a),e===O5?a.value="":t!==void 0&&(a.$infixName=t)}return r(i),n?this.construct():void 0}}extractHiddenTokens(e){let t=this.lexerResult.hidden;if(!t.length)return[];let r=e.startOffset;for(let i=0;i<t.length;i++)if(t[i].startOffset>r)return t.splice(0,i);return t.splice(0,t.length)}consume(e,t,r){let i=this.wrapper.wrapConsume(e,t);if(!this.isRecording()&&this.isValidToken(i)){let n=this.extractHiddenTokens(i);this.nodeBuilder.addHiddenNodes(n);let a=this.nodeBuilder.buildLeafNode(i,r),{assignment:s,crossRef:l}=this.getAssignment(r),u=this.current;if(s){let h=ch(r)?i.image:this.converter.convert(i.image,a);this.assign(s.operator,s.feature,h,a,l)}else if(ZE(u)){let h=i.image;ch(r)||(h=this.converter.convert(h,a).toString()),u.value+=h}}}isValidToken(e){return!e.isInsertedInRecovery&&!isNaN(e.startOffset)&&typeof e.endOffset=="number"&&!isNaN(e.endOffset)}subrule(e,t,r,i,n){let a;!this.isRecording()&&!r&&(a=this.nodeBuilder.buildCompositeNode(i));let s;try{s=this.wrapper.wrapSubrule(e,t,n)}finally{this.isRecording()||(s===void 0&&!r&&(s=this.construct()),s!==void 0&&a&&a.length>0&&this.performSubruleAssignment(s,i,a))}}performSubruleAssignment(e,t,r){let{assignment:i,crossRef:n}=this.getAssignment(t);if(i)this.assign(i.operator,i.feature,e,r,n);else if(!i){let a=this.current;if(ZE(a))a.value+=e.toString();else if(typeof e=="object"&&e){let l=this.assignWithoutOverride(e,a);this.stack.pop(),this.stack.push(l)}}}action(e,t){if(!this.isRecording()){let r=this.current;if(t.feature&&t.operator){r=this.construct(),this.nodeBuilder.removeNode(r.$cstNode),this.nodeBuilder.buildCompositeNode(t).content.push(r.$cstNode);let n={$type:e};this.stack.push(n),this.assign(t.operator,t.feature,r,r.$cstNode)}else r.$type=e}}construct(){if(this.isRecording())return;let e=this.stack.pop();return this.nodeBuilder.construct(e),"$infixName"in e?this.constructInfix(e,this.operatorPrecedence.get(e.$infixName)):ZE(e)?this.converter.convert(e.value,e.$cstNode):(g$(this.astReflection,e),e)}constructInfix(e,t){let r=e.parts;if(!Array.isArray(r)||r.length===0)return;let i=e.operators;if(!Array.isArray(i)||r.length<2)return r[0];let n=0,a=-1;for(let g=0;g<i.length;g++){let y=i[g],v=t.get(y)??{precedence:1/0,rightAssoc:!1};v.precedence>a?(a=v.precedence,n=g):v.precedence===a&&(v.rightAssoc||(n=g))}let s=i.slice(0,n),l=i.slice(n+1),u=r.slice(0,n+1),h=r.slice(n+1),d={$infixName:e.$infixName,$type:e.$type,$cstNode:e.$cstNode,parts:u,operators:s},f={$infixName:e.$infixName,$type:e.$type,$cstNode:e.$cstNode,parts:h,operators:l},p=this.constructInfix(d,t),m=this.constructInfix(f,t);return{$type:e.$type,$cstNode:e.$cstNode,left:p,operator:i[n],right:m}}getAssignment(e){if(!this.assignmentMap.has(e)){let t=U0(e,lh);this.assignmentMap.set(e,{assignment:t,crossRef:t&&Y0(t.terminal)?t.terminal.isMulti?"multi":"single":void 0})}return this.assignmentMap.get(e)}assign(e,t,r,i,n){let a=this.current,s;switch(n==="single"&&typeof r=="string"?s=this.linker.buildReference(a,t,i,r):n==="multi"&&typeof r=="string"?s=this.linker.buildMultiReference(a,t,i,r):s=r,e){case"=":{a[t]=s;break}case"?=":{a[t]=!0;break}case"+=":Array.isArray(a[t])||(a[t]=[]),a[t].push(s)}}assignWithoutOverride(e,t){for(let[i,n]of Object.entries(t)){let a=e[i];a===void 0?e[i]=n:Array.isArray(a)&&Array.isArray(n)&&(n.push(...a),e[i]=n)}let r=e.$cstNode;return r&&(r.astNode=void 0,e.$cstNode=void 0),e}get definitionErrors(){return this.wrapper.definitionErrors}},JSe=class{static{o(this,"AbstractParserErrorMessageProvider")}static{S(this,"AbstractParserErrorMessageProvider")}buildMismatchTokenMessage(e){return z1.buildMismatchTokenMessage(e)}buildNotAllInputParsedMessage(e){return z1.buildNotAllInputParsedMessage(e)}buildNoViableAltMessage(e){return z1.buildNoViableAltMessage(e)}buildEarlyExitMessage(e){return z1.buildEarlyExitMessage(e)}},xG=class extends JSe{static{o(this,"LangiumParserErrorMessageProvider")}static{S(this,"LangiumParserErrorMessageProvider")}buildMismatchTokenMessage({expected:e,actual:t}){return`Expecting ${e.LABEL?"`"+e.LABEL+"`":e.name.endsWith(":KW")?`keyword '${e.name.substring(0,e.name.length-3)}'`:`token of type '${e.name}'`} but found \`${t.image}\`.`}buildNotAllInputParsedMessage({firstRedundant:e}){return`Expecting end of file but found \`${e.image}\`.`}},e3e=class extends vG{static{o(this,"LangiumCompletionParser")}static{S(this,"LangiumCompletionParser")}constructor(){super(...arguments),this.tokens=[],this.elementStack=[],this.lastElementStack=[],this.nextTokenIndex=0,this.stackSize=0}action(){}construct(){}parse(e){this.resetState();let t=this.lexer.tokenize(e,{mode:"partial"});return this.tokens=t.tokens,this.wrapper.input=[...this.tokens],this.mainRule.call(this.wrapper,{}),this.unorderedGroups.clear(),{tokens:this.tokens,elementStack:[...this.lastElementStack],tokenIndex:this.nextTokenIndex}}rule(e,t){let r=this.wrapper.DEFINE_RULE(ZSe(e.name),this.startImplementation(t).bind(this));return this.allRules.set(e.name,r),e.entry&&(this.mainRule=r),r}resetState(){this.elementStack=[],this.lastElementStack=[],this.nextTokenIndex=0,this.stackSize=0}startImplementation(e){return t=>{let r=this.keepStackSize();try{e(t)}finally{this.resetStackSize(r)}}}removeUnexpectedElements(){this.elementStack.splice(this.stackSize)}keepStackSize(){let e=this.elementStack.length;return this.stackSize=e,e}resetStackSize(e){this.removeUnexpectedElements(),this.stackSize=e}consume(e,t,r){this.wrapper.wrapConsume(e,t),this.isRecording()||(this.lastElementStack=[...this.elementStack,r],this.nextTokenIndex=this.currIdx+1)}subrule(e,t,r,i,n){this.before(i),this.wrapper.wrapSubrule(e,t,n),this.after(i)}before(e){this.isRecording()||this.elementStack.push(e)}after(e){if(!this.isRecording()){let t=this.elementStack.lastIndexOf(e);t>=0&&this.elementStack.splice(t)}}get currIdx(){return this.wrapper.currIdx}},gvt={recoveryEnabled:!0,nodeLocationTracking:"full",skipValidations:!0,errorMessageProvider:new xG},t3e=class extends emt{static{o(this,"ChevrotainWrapper")}static{S(this,"ChevrotainWrapper")}constructor(e,t){let r=t&&"maxLookahead"in t;super(e,{...gvt,lookaheadStrategy:r?new jz({maxLookahead:t.maxLookahead}):new pvt({logging:t.skipValidations?()=>{}:void 0}),...t})}get IS_RECORDING(){return this.RECORDING_PHASE}DEFINE_RULE(e,t,r){return this.RULE(e,t,r)}wrapSelfAnalysis(){this.performSelfAnalysis()}wrapConsume(e,t){return this.consume(e,t,void 0)}wrapSubrule(e,t,r){return this.subrule(e,t,{ARGS:[r]})}wrapOr(e,t){this.or(e,t)}wrapOption(e,t){this.option(e,t)}wrapMany(e,t){this.many(e,t)}wrapAtLeastOne(e,t){this.atLeastOne(e,t)}rule(e){return e.call(this,{})}},yvt=class extends t3e{static{o(this,"ProfilerWrapper")}static{S(this,"ProfilerWrapper")}constructor(e,t,r){super(e,t),this.task=r}rule(e){this.task.start(),this.task.startSubTask(this.ruleName(e));try{return super.rule(e)}finally{this.task.stopSubTask(this.ruleName(e)),this.task.stop()}}ruleName(e){return e.ruleName}subrule(e,t,r){this.task.startSubTask(this.ruleName(t));try{return super.subrule(e,t,r)}finally{this.task.stopSubTask(this.ruleName(t))}}};o(VA,"createParser");S(VA,"createParser");o(r3e,"buildRules");S(r3e,"buildRules");o(i3e,"buildInfixRule");S(i3e,"buildInfixRule");o(vf,"buildElement");S(vf,"buildElement");o(n3e,"buildAction");S(n3e,"buildAction");o(a3e,"buildRuleCall");S(a3e,"buildRuleCall");o(s3e,"buildRuleCallPredicate");S(s3e,"buildRuleCallPredicate");o(Vl,"buildPredicate");S(Vl,"buildPredicate");o(o3e,"buildAlternatives");S(o3e,"buildAlternatives");o(l3e,"buildUnorderedGroup");S(l3e,"buildUnorderedGroup");o(c3e,"buildGroup");S(c3e,"buildGroup");o(vT,"getGuardCondition");S(vT,"getGuardCondition");o(bG,"buildCrossReference");S(bG,"buildCrossReference");o(u3e,"buildKeyword");S(u3e,"buildKeyword");o(TG,"wrap");S(TG,"wrap");o(WA,"getRule");S(WA,"getRule");o(h3e,"getRuleName");S(h3e,"getRuleName");o(P5,"getToken");S(P5,"getToken");o(CG,"createCompletionParser");S(CG,"createCompletionParser");o(kG,"createLangiumParser");S(kG,"createLangiumParser");o(wG,"prepareLangiumParser");S(wG,"prepareLangiumParser");qA=class{static{o(this,"DefaultTokenBuilder")}static{S(this,"DefaultTokenBuilder")}constructor(){this.diagnostics=[]}buildTokens(e,t){let r=gi(iA(e,!1)),i=this.buildTerminalTokens(r),n=this.buildKeywordTokens(r,i,t);return n.push(...i),n}flushLexingReport(e){return{diagnostics:this.popDiagnostics()}}popDiagnostics(){let e=[...this.diagnostics];return this.diagnostics=[],e}buildTerminalTokens(e){return e.filter(rl).filter(t=>!t.fragment).map(t=>this.buildTerminalToken(t)).toArray()}buildTerminalToken(e){let t=ET(e),r=this.requiresCustomPattern(t)?this.regexPatternFunction(t):t,i={name:e.name,PATTERN:r};return typeof r=="function"&&(i.LINE_BREAKS=!0),e.hidden&&(i.GROUP=rA(t)?ls.SKIPPED:"hidden"),i}requiresCustomPattern(e){return!!(e.flags.includes("u")||e.flags.includes("s"))}regexPatternFunction(e){let t=new RegExp(e,e.flags+"y");return(r,i)=>(t.lastIndex=i,t.exec(r))}buildKeywordTokens(e,t,r){return e.filter(H0).flatMap(i=>yh(i).filter(ch)).distinct(i=>i.value).toArray().sort((i,n)=>n.value.length-i.value.length).map(i=>this.buildKeywordToken(i,t,!!r?.caseInsensitive))}buildKeywordToken(e,t,r){let i=this.buildKeywordPattern(e,r),n={name:e.value,PATTERN:i,LONGER_ALT:this.findLongerAlt(e,t)};return typeof i=="function"&&(n.LINE_BREAKS=!0),n}buildKeywordPattern(e,t){return t?new RegExp(sy(e.value),"i"):e.value}findLongerAlt(e,t){return t.reduce((r,i)=>{let n=i?.PATTERN;return n?.source&&X$("^"+n.source+"$",e.value)&&r.push(i),r},[])}},SG=class{static{o(this,"DefaultValueConverter")}static{S(this,"DefaultValueConverter")}convert(e,t){let r=t.grammarSource;if(Y0(r)&&(r=ez(r)),uh(r)){let i=r.rule.ref;if(!i)throw new Error("This cst node was not parsed by a rule.");return this.runConverter(i,e,t)}return e}runConverter(e,t,r){switch(e.name.toUpperCase()){case"INT":return jc.convertInt(t);case"STRING":return jc.convertString(t);case"ID":return jc.convertID(t)}switch(cz(e)?.toLowerCase()){case"number":return jc.convertNumber(t);case"boolean":return jc.convertBoolean(t);case"bigint":return jc.convertBigint(t);case"date":return jc.convertDate(t);default:return t}}};(function(e){function t(h){let d="";for(let f=1;f<h.length-1;f++){let p=h.charAt(f);if(p==="\\"){let m=h.charAt(++f);d+=r(m)}else d+=p}return d}o(t,"convertString"),S(t,"convertString"),e.convertString=t;function r(h){switch(h){case"b":return"\b";case"f":return"\f";case"n":return`
-`;case"r":return"\r";case"t":return"	";case"v":return"\v";case"0":return"\0";default:return h}}o(r,"convertEscapeCharacter"),S(r,"convertEscapeCharacter");function i(h){return h.charAt(0)==="^"?h.substring(1):h}o(i,"convertID"),S(i,"convertID"),e.convertID=i;function n(h){return parseInt(h)}o(n,"convertInt"),S(n,"convertInt"),e.convertInt=n;function a(h){return BigInt(h)}o(a,"convertBigint"),S(a,"convertBigint"),e.convertBigint=a;function s(h){return new Date(h)}o(s,"convertDate"),S(s,"convertDate"),e.convertDate=s;function l(h){return Number(h)}o(l,"convertNumber"),S(l,"convertNumber"),e.convertNumber=l;function u(h){return h.toLowerCase()==="true"}o(u,"convertBoolean"),S(u,"convertBoolean"),e.convertBoolean=u})(jc||(jc={}));Ii={};W5(Ii,c$(U5(),1));o(UA,"delayNextTick");S(UA,"delayNextTick");QE=0,d3e=10;o(HA,"startCancelableOperation");S(HA,"startCancelableOperation");o(EG,"setInterruptionPeriod");S(EG,"setInterruptionPeriod");Zc=Symbol("OperationCancelled");o(cm,"isOperationCancelled");S(cm,"isOperationCancelled");o(la,"interruptAndCheck");S(la,"interruptAndCheck");mh=class{static{o(this,"Deferred")}static{S(this,"Deferred")}constructor(){this.promise=new Promise((e,t)=>{this.resolve=r=>(e(r),this),this.reject=r=>(t(r),this)})}},Bye=class WF{static{o(this,"_FullTextDocument")}static{S(this,"FullTextDocument")}constructor(t,r,i,n){this._uri=t,this._languageId=r,this._version=i,this._content=n,this._lineOffsets=void 0}get uri(){return this._uri}get languageId(){return this._languageId}get version(){return this._version}getText(t){if(t){let r=this.offsetAt(t.start),i=this.offsetAt(t.end);return this._content.substring(r,i)}return this._content}update(t,r){for(let i of t)if(WF.isIncremental(i)){let n=_G(i.range),a=this.offsetAt(n.start),s=this.offsetAt(n.end);this._content=this._content.substring(0,a)+i.text+this._content.substring(s,this._content.length);let l=Math.max(n.start.line,0),u=Math.max(n.end.line,0),h=this._lineOffsets,d=qF(i.text,!1,a);if(u-l===d.length)for(let p=0,m=d.length;p<m;p++)h[p+l+1]=d[p];else d.length<1e4?h.splice(l+1,u-l,...d):this._lineOffsets=h=h.slice(0,l+1).concat(d,h.slice(u+1));let f=i.text.length-(s-a);if(f!==0)for(let p=l+1+d.length,m=h.length;p<m;p++)h[p]=h[p]+f}else if(WF.isFull(i))this._content=i.text,this._lineOffsets=void 0;else throw new Error("Unknown change event received");this._version=r}getLineOffsets(){return this._lineOffsets===void 0&&(this._lineOffsets=qF(this._content,!0)),this._lineOffsets}positionAt(t){t=Math.max(Math.min(t,this._content.length),0);let r=this.getLineOffsets(),i=0,n=r.length;if(n===0)return{line:0,character:t};for(;i<n;){let s=Math.floor((i+n)/2);r[s]>t?n=s:i=s+1}let a=i-1;return t=this.ensureBeforeEOL(t,r[a]),{line:a,character:t-r[a]}}offsetAt(t){let r=this.getLineOffsets();if(t.line>=r.length)return this._content.length;if(t.line<0)return 0;let i=r[t.line];if(t.character<=0)return i;let n=t.line+1<r.length?r[t.line+1]:this._content.length,a=Math.min(i+t.character,n);return this.ensureBeforeEOL(a,i)}ensureBeforeEOL(t,r){for(;t>r&&AG(this._content.charCodeAt(t-1));)t--;return t}get lineCount(){return this.getLineOffsets().length}static isIncremental(t){let r=t;return r!=null&&typeof r.text=="string"&&r.range!==void 0&&(r.rangeLength===void 0||typeof r.rangeLength=="number")}static isFull(t){let r=t;return r!=null&&typeof r.text=="string"&&r.range===void 0&&r.rangeLength===void 0}};(function(e){function t(n,a,s,l){return new Bye(n,a,s,l)}o(t,"create"),S(t,"create"),e.create=t;function r(n,a,s){if(n instanceof Bye)return n.update(a,s),n;throw new Error("TextDocument.update: document must be created by TextDocument.create")}o(r,"update"),S(r,"update"),e.update=r;function i(n,a){let s=n.getText(),l=F5(a.map(f3e),(d,f)=>{let p=d.range.start.line-f.range.start.line;return p===0?d.range.start.character-f.range.start.character:p}),u=0,h=[];for(let d of l){let f=n.offsetAt(d.range.start);if(f<u)throw new Error("Overlapping edit");f>u&&h.push(s.substring(u,f)),d.newText.length&&h.push(d.newText),u=n.offsetAt(d.range.end)}return h.push(s.substr(u)),h.join("")}o(i,"applyEdits"),S(i,"applyEdits"),e.applyEdits=i})(B5||(B5={}));o(F5,"mergeSort");S(F5,"mergeSort");o(qF,"computeLineOffsets");S(qF,"computeLineOffsets");o(AG,"isEOL");S(AG,"isEOL");o(_G,"getWellformedRange");S(_G,"getWellformedRange");o(f3e,"getWellformedEdit");S(f3e,"getWellformedEdit");(()=>{"use strict";var e={975:I=>{function D(M){if(typeof M!="string")throw new TypeError("Path must be a string. Received "+JSON.stringify(M))}o(D,"e2"),S(D,"e");function _(M,L){for(var B,O="",$=0,G=-1,F=0,V=0;V<=M.length;++V){if(V<M.length)B=M.charCodeAt(V);else{if(B===47)break;B=47}if(B===47){if(!(G===V-1||F===1))if(G!==V-1&&F===2){if(O.length<2||$!==2||O.charCodeAt(O.length-1)!==46||O.charCodeAt(O.length-2)!==46){if(O.length>2){var H=O.lastIndexOf("/");if(H!==O.length-1){H===-1?(O="",$=0):$=(O=O.slice(0,H)).length-1-O.lastIndexOf("/"),G=V,F=0;continue}}else if(O.length===2||O.length===1){O="",$=0,G=V,F=0;continue}}L&&(O.length>0?O+="/..":O="..",$=2)}else O.length>0?O+="/"+M.slice(G+1,V):O=M.slice(G+1,V),$=V-G-1;G=V,F=0}else B===46&&F!==-1?++F:F=-1}return O}o(_,"r2"),S(_,"r");var R={resolve:S(function(){for(var M,L="",B=!1,O=arguments.length-1;O>=-1&&!B;O--){var $;O>=0?$=arguments[O]:(M===void 0&&(M=process.cwd()),$=M),D($),$.length!==0&&(L=$+"/"+L,B=$.charCodeAt(0)===47)}return L=_(L,!B),B?L.length>0?"/"+L:"/":L.length>0?L:"."},"resolve"),normalize:S(function(M){if(D(M),M.length===0)return".";var L=M.charCodeAt(0)===47,B=M.charCodeAt(M.length-1)===47;return(M=_(M,!L)).length!==0||L||(M="."),M.length>0&&B&&(M+="/"),L?"/"+M:M},"normalize"),isAbsolute:S(function(M){return D(M),M.length>0&&M.charCodeAt(0)===47},"isAbsolute"),join:S(function(){if(arguments.length===0)return".";for(var M,L=0;L<arguments.length;++L){var B=arguments[L];D(B),B.length>0&&(M===void 0?M=B:M+="/"+B)}return M===void 0?".":R.normalize(M)},"join"),relative:S(function(M,L){if(D(M),D(L),M===L||(M=R.resolve(M))===(L=R.resolve(L)))return"";for(var B=1;B<M.length&&M.charCodeAt(B)===47;++B);for(var O=M.length,$=O-B,G=1;G<L.length&&L.charCodeAt(G)===47;++G);for(var F=L.length-G,V=$<F?$:F,H=-1,j=0;j<=V;++j){if(j===V){if(F>V){if(L.charCodeAt(G+j)===47)return L.slice(G+j+1);if(j===0)return L.slice(G+j)}else $>V&&(M.charCodeAt(B+j)===47?H=j:j===0&&(H=0));break}var U=M.charCodeAt(B+j);if(U!==L.charCodeAt(G+j))break;U===47&&(H=j)}var Q="";for(j=B+H+1;j<=O;++j)j!==O&&M.charCodeAt(j)!==47||(Q.length===0?Q+="..":Q+="/..");return Q.length>0?Q+L.slice(G+H):(G+=H,L.charCodeAt(G)===47&&++G,L.slice(G))},"relative"),_makeLong:S(function(M){return M},"_makeLong"),dirname:S(function(M){if(D(M),M.length===0)return".";for(var L=M.charCodeAt(0),B=L===47,O=-1,$=!0,G=M.length-1;G>=1;--G)if((L=M.charCodeAt(G))===47){if(!$){O=G;break}}else $=!1;return O===-1?B?"/":".":B&&O===1?"//":M.slice(0,O)},"dirname"),basename:S(function(M,L){if(L!==void 0&&typeof L!="string")throw new TypeError('"ext" argument must be a string');D(M);var B,O=0,$=-1,G=!0;if(L!==void 0&&L.length>0&&L.length<=M.length){if(L.length===M.length&&L===M)return"";var F=L.length-1,V=-1;for(B=M.length-1;B>=0;--B){var H=M.charCodeAt(B);if(H===47){if(!G){O=B+1;break}}else V===-1&&(G=!1,V=B+1),F>=0&&(H===L.charCodeAt(F)?--F==-1&&($=B):(F=-1,$=V))}return O===$?$=V:$===-1&&($=M.length),M.slice(O,$)}for(B=M.length-1;B>=0;--B)if(M.charCodeAt(B)===47){if(!G){O=B+1;break}}else $===-1&&(G=!1,$=B+1);return $===-1?"":M.slice(O,$)},"basename"),extname:S(function(M){D(M);for(var L=-1,B=0,O=-1,$=!0,G=0,F=M.length-1;F>=0;--F){var V=M.charCodeAt(F);if(V!==47)O===-1&&($=!1,O=F+1),V===46?L===-1?L=F:G!==1&&(G=1):L!==-1&&(G=-1);else if(!$){B=F+1;break}}return L===-1||O===-1||G===0||G===1&&L===O-1&&L===B+1?"":M.slice(L,O)},"extname"),format:S(function(M){if(M===null||typeof M!="object")throw new TypeError('The "pathObject" argument must be of type Object. Received type '+typeof M);return(function(L,B){var O=B.dir||B.root,$=B.base||(B.name||"")+(B.ext||"");return O?O===B.root?O+$:O+"/"+$:$})(0,M)},"format"),parse:S(function(M){D(M);var L={root:"",dir:"",base:"",ext:"",name:""};if(M.length===0)return L;var B,O=M.charCodeAt(0),$=O===47;$?(L.root="/",B=1):B=0;for(var G=-1,F=0,V=-1,H=!0,j=M.length-1,U=0;j>=B;--j)if((O=M.charCodeAt(j))!==47)V===-1&&(H=!1,V=j+1),O===46?G===-1?G=j:U!==1&&(U=1):G!==-1&&(U=-1);else if(!H){F=j+1;break}return G===-1||V===-1||U===0||U===1&&G===V-1&&G===F+1?V!==-1&&(L.base=L.name=F===0&&$?M.slice(1,V):M.slice(F,V)):(F===0&&$?(L.name=M.slice(1,G),L.base=M.slice(1,V)):(L.name=M.slice(F,G),L.base=M.slice(F,V)),L.ext=M.slice(G,V)),F>0?L.dir=M.slice(0,F-1):$&&(L.dir="/"),L},"parse"),sep:"/",delimiter:":",win32:null,posix:null};R.posix=R,I.exports=R}},t={};function r(I){var D=t[I];if(D!==void 0)return D.exports;var _=t[I]={exports:{}};return e[I](_,_.exports,r),_.exports}o(r,"r"),S(r,"r"),r.d=(I,D)=>{for(var _ in D)r.o(D,_)&&!r.o(I,_)&&Object.defineProperty(I,_,{enumerable:!0,get:D[_]})},r.o=(I,D)=>Object.prototype.hasOwnProperty.call(I,D),r.r=I=>{typeof Symbol<"u"&&Symbol.toStringTag&&Object.defineProperty(I,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(I,"__esModule",{value:!0})};var i={};let n;r.r(i),r.d(i,{URI:S(()=>p,"URI"),Utils:S(()=>P,"Utils")}),typeof process=="object"?n=process.platform==="win32":typeof navigator=="object"&&(n=navigator.userAgent.indexOf("Windows")>=0);let a=/^\w[\w\d+.-]*$/,s=/^\//,l=/^\/\//;function u(I,D){if(!I.scheme&&D)throw new Error(`[UriError]: Scheme is missing: {scheme: "", authority: "${I.authority}", path: "${I.path}", query: "${I.query}", fragment: "${I.fragment}"}`);if(I.scheme&&!a.test(I.scheme))throw new Error("[UriError]: Scheme contains illegal characters.");if(I.path){if(I.authority){if(!s.test(I.path))throw new Error('[UriError]: If a URI contains an authority component, then the path component must either be empty or begin with a slash ("/") character')}else if(l.test(I.path))throw new Error('[UriError]: If a URI does not contain an authority component, then the path cannot begin with two slash characters ("//")')}}o(u,"a"),S(u,"a");let h="",d="/",f=/^(([^:/?#]+?):)?(\/\/([^/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?/;class p{static{o(this,"l")}static{S(this,"l")}static isUri(D){return D instanceof p||!!D&&typeof D.authority=="string"&&typeof D.fragment=="string"&&typeof D.path=="string"&&typeof D.query=="string"&&typeof D.scheme=="string"&&typeof D.fsPath=="string"&&typeof D.with=="function"&&typeof D.toString=="function"}scheme;authority;path;query;fragment;constructor(D,_,R,M,L,B=!1){typeof D=="object"?(this.scheme=D.scheme||h,this.authority=D.authority||h,this.path=D.path||h,this.query=D.query||h,this.fragment=D.fragment||h):(this.scheme=(function(O,$){return O||$?O:"file"})(D,B),this.authority=_||h,this.path=(function(O,$){switch(O){case"https":case"http":case"file":$?$[0]!==d&&($=d+$):$=d}return $})(this.scheme,R||h),this.query=M||h,this.fragment=L||h,u(this,B))}get fsPath(){return b(this,!1)}with(D){if(!D)return this;let{scheme:_,authority:R,path:M,query:L,fragment:B}=D;return _===void 0?_=this.scheme:_===null&&(_=h),R===void 0?R=this.authority:R===null&&(R=h),M===void 0?M=this.path:M===null&&(M=h),L===void 0?L=this.query:L===null&&(L=h),B===void 0?B=this.fragment:B===null&&(B=h),_===this.scheme&&R===this.authority&&M===this.path&&L===this.query&&B===this.fragment?this:new g(_,R,M,L,B)}static parse(D,_=!1){let R=f.exec(D);return R?new g(R[2]||h,k(R[4]||h),k(R[5]||h),k(R[7]||h),k(R[9]||h),_):new g(h,h,h,h,h)}static file(D){let _=h;if(n&&(D=D.replace(/\\/g,d)),D[0]===d&&D[1]===d){let R=D.indexOf(d,2);R===-1?(_=D.substring(2),D=d):(_=D.substring(2,R),D=D.substring(R)||d)}return new g("file",_,D,h,h)}static from(D){let _=new g(D.scheme,D.authority,D.path,D.query,D.fragment);return u(_,!0),_}toString(D=!1){return T(this,D)}toJSON(){return this}static revive(D){if(D){if(D instanceof p)return D;{let _=new g(D);return _._formatted=D.external,_._fsPath=D._sep===m?D.fsPath:null,_}}return D}}let m=n?1:void 0;class g extends p{static{o(this,"d")}static{S(this,"d")}_formatted=null;_fsPath=null;get fsPath(){return this._fsPath||(this._fsPath=b(this,!1)),this._fsPath}toString(D=!1){return D?T(this,!0):(this._formatted||(this._formatted=T(this,!1)),this._formatted)}toJSON(){let D={$mid:1};return this._fsPath&&(D.fsPath=this._fsPath,D._sep=m),this._formatted&&(D.external=this._formatted),this.path&&(D.path=this.path),this.scheme&&(D.scheme=this.scheme),this.authority&&(D.authority=this.authority),this.query&&(D.query=this.query),this.fragment&&(D.fragment=this.fragment),D}}let y={58:"%3A",47:"%2F",63:"%3F",35:"%23",91:"%5B",93:"%5D",64:"%40",33:"%21",36:"%24",38:"%26",39:"%27",40:"%28",41:"%29",42:"%2A",43:"%2B",44:"%2C",59:"%3B",61:"%3D",32:"%20"};function v(I,D,_){let R,M=-1;for(let L=0;L<I.length;L++){let B=I.charCodeAt(L);if(B>=97&&B<=122||B>=65&&B<=90||B>=48&&B<=57||B===45||B===46||B===95||B===126||D&&B===47||_&&B===91||_&&B===93||_&&B===58)M!==-1&&(R+=encodeURIComponent(I.substring(M,L)),M=-1),R!==void 0&&(R+=I.charAt(L));else{R===void 0&&(R=I.substr(0,L));let O=y[B];O!==void 0?(M!==-1&&(R+=encodeURIComponent(I.substring(M,L)),M=-1),R+=O):M===-1&&(M=L)}}return M!==-1&&(R+=encodeURIComponent(I.substring(M))),R!==void 0?R:I}o(v,"m"),S(v,"m");function x(I){let D;for(let _=0;_<I.length;_++){let R=I.charCodeAt(_);R===35||R===63?(D===void 0&&(D=I.substr(0,_)),D+=y[R]):D!==void 0&&(D+=I[_])}return D!==void 0?D:I}o(x,"y"),S(x,"y");function b(I,D){let _;return _=I.authority&&I.path.length>1&&I.scheme==="file"?`//${I.authority}${I.path}`:I.path.charCodeAt(0)===47&&(I.path.charCodeAt(1)>=65&&I.path.charCodeAt(1)<=90||I.path.charCodeAt(1)>=97&&I.path.charCodeAt(1)<=122)&&I.path.charCodeAt(2)===58?D?I.path.substr(1):I.path[1].toLowerCase()+I.path.substr(2):I.path,n&&(_=_.replace(/\//g,"\\")),_}o(b,"v"),S(b,"v");function T(I,D){let _=D?x:v,R="",{scheme:M,authority:L,path:B,query:O,fragment:$}=I;if(M&&(R+=M,R+=":"),(L||M==="file")&&(R+=d,R+=d),L){let G=L.indexOf("@");if(G!==-1){let F=L.substr(0,G);L=L.substr(G+1),G=F.lastIndexOf(":"),G===-1?R+=_(F,!1,!1):(R+=_(F.substr(0,G),!1,!1),R+=":",R+=_(F.substr(G+1),!1,!0)),R+="@"}L=L.toLowerCase(),G=L.lastIndexOf(":"),G===-1?R+=_(L,!1,!0):(R+=_(L.substr(0,G),!1,!0),R+=L.substr(G))}if(B){if(B.length>=3&&B.charCodeAt(0)===47&&B.charCodeAt(2)===58){let G=B.charCodeAt(1);G>=65&&G<=90&&(B=`/${String.fromCharCode(G+32)}:${B.substr(3)}`)}else if(B.length>=2&&B.charCodeAt(1)===58){let G=B.charCodeAt(0);G>=65&&G<=90&&(B=`${String.fromCharCode(G+32)}:${B.substr(2)}`)}R+=_(B,!0,!1)}return O&&(R+="?",R+=_(O,!1,!1)),$&&(R+="#",R+=D?$:v($,!1,!1)),R}o(T,"b"),S(T,"b");function w(I){try{return decodeURIComponent(I)}catch{return I.length>3?I.substr(0,3)+w(I.substr(3)):I}}o(w,"C"),S(w,"C");let C=/(%[0-9A-Za-z][0-9A-Za-z])+/g;function k(I){return I.match(C)?I.replace(C,(D=>w(D))):I}o(k,"w"),S(k,"w");var E=r(975);let A=E.posix||E,N="/";var P;(function(I){I.joinPath=function(D,..._){return D.with({path:A.join(D.path,..._)})},I.resolvePath=function(D,..._){let R=D.path,M=!1;R[0]!==N&&(R=N+R,M=!0);let L=A.resolve(R,..._);return M&&L[0]===N&&!D.authority&&(L=L.substring(1)),D.with({path:L})},I.dirname=function(D){if(D.path.length===0||D.path===N)return D;let _=A.dirname(D.path);return _.length===1&&_.charCodeAt(0)===46&&(_=""),D.with({path:_})},I.basename=function(D){return A.basename(D.path)},I.extname=function(D){return A.extname(D.path)}})(P||(P={})),p3e=i})();({URI:fo,Utils:T2}=p3e);(function(e){e.basename=T2.basename,e.dirname=T2.dirname,e.extname=T2.extname,e.joinPath=T2.joinPath,e.resolvePath=T2.resolvePath;let t=typeof process=="object"&&process?.platform==="win32";function r(s,l){return s?.toString()===l?.toString()}o(r,"equals"),S(r,"equals"),e.equals=r;function i(s,l){let u=typeof s=="string"?fo.parse(s).path:s.path,h=typeof l=="string"?fo.parse(l).path:l.path,d=u.split("/").filter(y=>y.length>0),f=h.split("/").filter(y=>y.length>0);if(t){let y=/^[A-Z]:$/;if(d[0]&&y.test(d[0])&&(d[0]=d[0].toLowerCase()),f[0]&&y.test(f[0])&&(f[0]=f[0].toLowerCase()),d[0]!==f[0])return h.substring(1)}let p=0;for(;p<d.length&&d[p]===f[p];p++);let m="../".repeat(d.length-p),g=f.slice(p).join("/");return m+g}o(i,"relative"),S(i,"relative"),e.relative=i;function n(s){return fo.parse(s.toString()).toString()}o(n,"normalize"),S(n,"normalize"),e.normalize=n;function a(s,l){let u=typeof s=="string"?s:s.path,h=typeof l=="string"?l:l.path;return h.charAt(h.length-1)==="/"&&(h=h.slice(0,-1)),u.charAt(u.length-1)==="/"&&(u=u.slice(0,-1)),h===u?!0:h.length<u.length||h.charAt(u.length)!=="/"?!1:h.startsWith(u)}o(a,"contains"),S(a,"contains"),e.contains=a})(os||(os={}));DG=class{static{o(this,"UriTrie")}static{S(this,"UriTrie")}constructor(){this.root={name:"",children:new Map}}normalizeUri(e){return os.normalize(e)}clear(){this.root.children.clear()}insert(e,t){let r=this.getNode(this.normalizeUri(e),!0);r.element=t}delete(e){let t=this.getNode(this.normalizeUri(e),!1);t?.parent&&t.parent.children.delete(t.name)}has(e){return this.getNode(this.normalizeUri(e),!1)?.element!==void 0}hasNode(e){return this.getNode(this.normalizeUri(e),!1)!==void 0}find(e){return this.getNode(this.normalizeUri(e),!1)?.element}findNode(e){let t=this.normalizeUri(e),r=this.getNode(t,!1);if(r)return{name:r.name,uri:os.joinPath(fo.parse(t),r.name).toString(),element:r.element}}findChildren(e){let t=this.normalizeUri(e),r=this.getNode(t,!1);return r?Array.from(r.children.values()).map(i=>({name:i.name,uri:os.joinPath(fo.parse(t),i.name).toString(),element:i.element})):[]}all(){return this.collectValues(this.root)}findAll(e){let t=this.getNode(os.normalize(e),!1);return t?this.collectValues(t):[]}getNode(e,t){let r=e.split("/");e.charAt(e.length-1)==="/"&&r.pop();let i=this.root;for(let n of r){let a=i.children.get(n);if(!a)if(t)a={name:n,children:new Map,parent:i},i.children.set(n,a);else return;i=a}return i}collectValues(e){let t=[];e.element&&t.push(e.element);for(let r of e.children.values())t.push(...this.collectValues(r));return t}};(function(e){e[e.Changed=0]="Changed",e[e.Parsed=1]="Parsed",e[e.IndexedContent=2]="IndexedContent",e[e.ComputedScopes=3]="ComputedScopes",e[e.Linked=4]="Linked",e[e.IndexedReferences=5]="IndexedReferences",e[e.Validated=6]="Validated"})(zr||(zr={}));m3e=class{static{o(this,"DefaultLangiumDocumentFactory")}static{S(this,"DefaultLangiumDocumentFactory")}constructor(e){this.serviceRegistry=e.ServiceRegistry,this.textDocuments=e.workspace.TextDocuments,this.fileSystemProvider=e.workspace.FileSystemProvider}async fromUri(e,t=Ii.CancellationToken.None){let r=await this.fileSystemProvider.readFile(e);return this.createAsync(e,r,t)}fromTextDocument(e,t,r){return t=t??fo.parse(e.uri),Ii.CancellationToken.is(r)?this.createAsync(t,e,r):this.create(t,e,r)}fromString(e,t,r){return Ii.CancellationToken.is(r)?this.createAsync(t,e,r):this.create(t,e,r)}fromModel(e,t){return this.create(t,{$model:e})}create(e,t,r){if(typeof t=="string"){let i=this.parse(e,t,r);return this.createLangiumDocument(i,e,void 0,t)}else if("$model"in t){let i={value:t.$model,parserErrors:[],lexerErrors:[]};return this.createLangiumDocument(i,e)}else{let i=this.parse(e,t.getText(),r);return this.createLangiumDocument(i,e,t)}}async createAsync(e,t,r){if(typeof t=="string"){let i=await this.parseAsync(e,t,r);return this.createLangiumDocument(i,e,void 0,t)}else{let i=await this.parseAsync(e,t.getText(),r);return this.createLangiumDocument(i,e,t)}}createLangiumDocument(e,t,r,i){let n;if(r)n={parseResult:e,uri:t,state:zr.Parsed,references:[],textDocument:r};else{let a=this.createTextDocumentGetter(t,i);n={parseResult:e,uri:t,state:zr.Parsed,references:[],get textDocument(){return a()}}}return e.value.$document=n,n}async update(e,t){let r=e.parseResult.value.$cstNode?.root.fullText,i=this.textDocuments?.get(e.uri.toString()),n=i?i.getText():await this.fileSystemProvider.readFile(e.uri);if(i)Object.defineProperty(e,"textDocument",{value:i});else{let a=this.createTextDocumentGetter(e.uri,n);Object.defineProperty(e,"textDocument",{get:a})}return r!==n&&(e.parseResult=await this.parseAsync(e.uri,n,t),e.parseResult.value.$document=e),e.state=zr.Parsed,e}parse(e,t,r){return this.serviceRegistry.getServices(e).parser.LangiumParser.parse(t,r)}parseAsync(e,t,r){return this.serviceRegistry.getServices(e).parser.AsyncParser.parse(t,r)}createTextDocumentGetter(e,t){let r=this.serviceRegistry,i;return()=>i??(i=B5.create(e.toString(),r.getServices(e).LanguageMetaData.languageId,0,t??""))}},g3e=class{static{o(this,"DefaultLangiumDocuments")}static{S(this,"DefaultLangiumDocuments")}constructor(e){this.documentTrie=new DG,this.services=e,this.langiumDocumentFactory=e.workspace.LangiumDocumentFactory,this.documentBuilder=()=>e.workspace.DocumentBuilder}get all(){return gi(this.documentTrie.all())}addDocument(e){let t=e.uri.toString();if(this.documentTrie.has(t))throw new Error(`A document with the URI '${t}' is already present.`);this.documentTrie.insert(t,e)}getDocument(e){let t=e.toString();return this.documentTrie.find(t)}getDocuments(e){let t=e.toString();return this.documentTrie.findAll(t)}async getOrCreateDocument(e,t){let r=this.getDocument(e);return r||(r=await this.langiumDocumentFactory.fromUri(e,t),this.addDocument(r),r)}createDocument(e,t,r){if(r)return this.langiumDocumentFactory.fromString(t,e,r).then(i=>(this.addDocument(i),i));{let i=this.langiumDocumentFactory.fromString(t,e);return this.addDocument(i),i}}hasDocument(e){return this.documentTrie.has(e.toString())}invalidateDocument(e){let t=e.toString(),r=this.documentTrie.find(t);return r&&this.documentBuilder().resetToState(r,zr.Changed),r}deleteDocument(e){let t=e.toString(),r=this.documentTrie.find(t);return r&&(r.state=zr.Changed,this.documentTrie.delete(t)),r}deleteDocuments(e){let t=e.toString(),r=this.documentTrie.findAll(t);for(let i of r)i.state=zr.Changed;return this.documentTrie.delete(t),r}},f0=Symbol("RefResolving"),y3e=class{static{o(this,"DefaultLinker")}static{S(this,"DefaultLinker")}constructor(e){this.reflection=e.shared.AstReflection,this.langiumDocuments=()=>e.shared.workspace.LangiumDocuments,this.scopeProvider=e.references.ScopeProvider,this.astNodeLocator=e.workspace.AstNodeLocator,this.profiler=e.shared.profilers.LangiumProfiler,this.languageId=e.LanguageMetaData.languageId}async link(e,t=Ii.CancellationToken.None){if(this.profiler?.isActive("linking")){let r=this.profiler.createTask("linking",this.languageId);r.start();try{for(let i of ql(e.parseResult.value))await la(t),X1(i).forEach(n=>{let a=`${i.$type}:${n.property}`;r.startSubTask(a);try{this.doLink(n,e)}finally{r.stopSubTask(a)}})}finally{r.stop()}}else for(let r of ql(e.parseResult.value))await la(t),X1(r).forEach(i=>this.doLink(i,e))}doLink(e,t){let r=e.reference;if("_ref"in r&&r._ref===void 0){r._ref=f0;try{let i=this.getCandidate(e);if(g0(i))r._ref=i;else{r._nodeDescription=i;let n=this.loadAstNode(i);r._ref=n??this.createLinkingError(e,i)}}catch(i){console.error(`An error occurred while resolving reference to '${r.$refText}':`,i);let n=i.message??String(i);r._ref={info:e,message:`An error occurred while resolving reference to '${r.$refText}': ${n}`}}t.references.push(r)}else if("_items"in r&&r._items===void 0){r._items=f0;try{let i=this.getCandidates(e),n=[];if(g0(i))r._linkingError=i;else for(let a of i){let s=this.loadAstNode(a);s&&n.push({ref:s,$nodeDescription:a})}r._items=n}catch(i){r._linkingError={info:e,message:`An error occurred while resolving reference to '${r.$refText}': ${i}`},r._items=[]}t.references.push(r)}}unlink(e){for(let t of e.references)"_ref"in t?(t._ref=void 0,delete t._nodeDescription):"_items"in t&&(t._items=void 0,delete t._linkingError);e.references=[]}getCandidate(e){return this.scopeProvider.getScope(e).getElement(e.reference.$refText)??this.createLinkingError(e)}getCandidates(e){let r=this.scopeProvider.getScope(e).getElements(e.reference.$refText).distinct(i=>`${i.documentUri}#${i.path}`).toArray();return r.length>0?r:this.createLinkingError(e)}buildReference(e,t,r,i){let n=this,a={$refNode:r,$refText:i,_ref:void 0,get ref(){if(Rn(this._ref))return this._ref;if(f$(this._nodeDescription)){let s=n.loadAstNode(this._nodeDescription);this._ref=s??n.createLinkingError({reference:a,container:e,property:t},this._nodeDescription)}else if(this._ref===void 0){this._ref=f0;let s=V1(e).$document,l=n.getLinkedNode({reference:a,container:e,property:t});if(l.error&&s&&s.state<zr.ComputedScopes)return this._ref=void 0;this._ref=l.node??l.error,this._nodeDescription=l.descr,s?.references.push(this)}else this._ref===f0&&n.throwCyclicReferenceError(e,t,i);return Rn(this._ref)?this._ref:void 0},get $nodeDescription(){return this._nodeDescription},get error(){return g0(this._ref)?this._ref:void 0}};return a}buildMultiReference(e,t,r,i){let n=this,a={$refNode:r,$refText:i,_items:void 0,get items(){if(Array.isArray(this._items))return this._items;if(this._items===void 0){this._items=f0;let s=V1(e).$document,l=n.getCandidates({reference:a,container:e,property:t}),u=[];if(g0(l))this._linkingError=l;else for(let h of l){let d=n.loadAstNode(h);d&&u.push({ref:d,$nodeDescription:h})}this._items=u,s?.references.push(this)}else this._items===f0&&n.throwCyclicReferenceError(e,t,i);return Array.isArray(this._items)?this._items:[]},get error(){if(this._linkingError)return this._linkingError;if(!(this.items.length>0))return this._linkingError=n.createLinkingError({reference:a,container:e,property:t})}};return a}throwCyclicReferenceError(e,t,r){throw new Error(`Cyclic reference resolution detected: ${this.astNodeLocator.getAstNodePath(e)}/${t} (symbol '${r}')`)}getLinkedNode(e){try{let t=this.getCandidate(e);if(g0(t))return{error:t};let r=this.loadAstNode(t);return r?{node:r,descr:t}:{descr:t,error:this.createLinkingError(e,t)}}catch(t){console.error(`An error occurred while resolving reference to '${e.reference.$refText}':`,t);let r=t.message??String(t);return{error:{info:e,message:`An error occurred while resolving reference to '${e.reference.$refText}': ${r}`}}}}loadAstNode(e){if(e.node)return e.node;let t=this.langiumDocuments().getDocument(e.documentUri);if(t)return this.astNodeLocator.getAstNode(t.parseResult.value,e.path)}createLinkingError(e,t){let r=V1(e.container).$document;r&&r.state<zr.ComputedScopes&&console.warn(`Attempted reference resolution before document reached ComputedScopes state (${r.uri}).`);let i=this.reflection.getReferenceType(e);return{info:e,message:`Could not resolve reference to ${i} named '${e.reference.$refText}'.`,targetDescription:t}}};o(RG,"isNamed");S(RG,"isNamed");v3e=class{static{o(this,"DefaultNameProvider")}static{S(this,"DefaultNameProvider")}getName(e){if(RG(e))return e.name}getNameNode(e){return nA(e.$cstNode,"name")}},x3e=class{static{o(this,"DefaultReferences")}static{S(this,"DefaultReferences")}constructor(e){this.nameProvider=e.references.NameProvider,this.index=e.shared.workspace.IndexManager,this.nodeLocator=e.workspace.AstNodeLocator,this.documents=e.shared.workspace.LangiumDocuments,this.hasMultiReference=ql(e.Grammar).some(t=>Y0(t)&&t.isMulti)}findDeclarations(e){if(e){let t=nz(e),r=e.astNode;if(t&&r){let i=r[t.feature];if(ss(i)||Qc(i))return r5(i);if(Array.isArray(i)){for(let n of i)if((ss(n)||Qc(n))&&n.$refNode&&n.$refNode.offset<=e.offset&&n.$refNode.end>=e.end)return r5(n)}}if(r){let i=this.nameProvider.getNameNode(r);if(i&&(i===e||B$(e,i)))return this.getSelfNodes(r)}}return[]}getSelfNodes(e){if(this.hasMultiReference){let t=this.index.findAllReferences(e,this.nodeLocator.getAstNodePath(e)),r=this.getNodeFromReferenceDescription(t.head());if(r){for(let i of X1(r))if(Qc(i.reference)&&i.reference.items.some(n=>n.ref===e))return i.reference.items.map(n=>n.ref)}return[e]}else return[e]}getNodeFromReferenceDescription(e){if(!e)return;let t=this.documents.getDocument(e.sourceUri);if(t)return this.nodeLocator.getAstNode(t.parseResult.value,e.sourcePath)}findDeclarationNodes(e){let t=this.findDeclarations(e),r=[];for(let i of t){let n=this.nameProvider.getNameNode(i)??i.$cstNode;n&&r.push(n)}return r}findReferences(e,t){let r=[];t.includeDeclaration&&r.push(...this.getSelfReferences(e));let i=this.index.findAllReferences(e,this.nodeLocator.getAstNodePath(e));return t.documentUri&&(i=i.filter(n=>os.equals(n.sourceUri,t.documentUri))),r.push(...i),gi(r)}getSelfReferences(e){let t=this.getSelfNodes(e),r=[];for(let i of t){let n=this.nameProvider.getNameNode(i);if(n){let a=Wl(i),s=this.nodeLocator.getAstNodePath(i);r.push({sourceUri:a.uri,sourcePath:s,targetUri:a.uri,targetPath:s,segment:Q1(n),local:!0})}}return r}},gh=class{static{o(this,"MultiMap")}static{S(this,"MultiMap")}constructor(e){if(this.map=new Map,e)for(let[t,r]of e)this.add(t,r)}get size(){return iT.sum(gi(this.map.values()).map(e=>e.length))}clear(){this.map.clear()}delete(e,t){if(t===void 0)return this.map.delete(e);{let r=this.map.get(e);if(r){let i=r.indexOf(t);if(i>=0)return r.length===1?this.map.delete(e):r.splice(i,1),!0}return!1}}get(e){return this.map.get(e)??[]}getStream(e){let t=this.map.get(e);return t?gi(t):H1}has(e,t){if(t===void 0)return this.map.has(e);{let r=this.map.get(e);return r?r.indexOf(t)>=0:!1}}add(e,t){return this.map.has(e)?this.map.get(e).push(t):this.map.set(e,[t]),this}addAll(e,t){return this.map.has(e)?this.map.get(e).push(...t):this.map.set(e,Array.from(t)),this}forEach(e){this.map.forEach((t,r)=>t.forEach(i=>e(i,r,this)))}[Symbol.iterator](){return this.entries().iterator()}entries(){return gi(this.map.entries()).flatMap(([e,t])=>t.map(r=>[e,r]))}keys(){return gi(this.map.keys())}values(){return gi(this.map.values()).flat()}entriesGroupedByKey(){return gi(this.map.entries())}},$5=class{static{o(this,"BiMap")}static{S(this,"BiMap")}get size(){return this.map.size}constructor(e){if(this.map=new Map,this.inverse=new Map,e)for(let[t,r]of e)this.set(t,r)}clear(){this.map.clear(),this.inverse.clear()}set(e,t){return this.map.set(e,t),this.inverse.set(t,e),this}get(e){return this.map.get(e)}getKey(e){return this.inverse.get(e)}delete(e){let t=this.map.get(e);return t!==void 0?(this.map.delete(e),this.inverse.delete(t),!0):!1}},b3e=class{static{o(this,"DefaultScopeComputation")}static{S(this,"DefaultScopeComputation")}constructor(e){this.nameProvider=e.references.NameProvider,this.descriptions=e.workspace.AstNodeDescriptionProvider}async collectExportedSymbols(e,t=Ii.CancellationToken.None){return this.collectExportedSymbolsForNode(e.parseResult.value,e,void 0,t)}async collectExportedSymbolsForNode(e,t,r=CT,i=Ii.CancellationToken.None){let n=[];this.addExportedSymbol(e,n,t);for(let a of r(e))await la(i),this.addExportedSymbol(a,n,t);return n}addExportedSymbol(e,t,r){let i=this.nameProvider.getName(e);i&&t.push(this.descriptions.createDescription(e,i,r))}async collectLocalSymbols(e,t=Ii.CancellationToken.None){let r=e.parseResult.value,i=new gh;for(let n of yh(r))await la(t),this.addLocalSymbol(n,e,i);return i}addLocalSymbol(e,t,r){let i=e.$container;if(i){let n=this.nameProvider.getName(e);n&&r.add(i,this.descriptions.createDescription(e,n,t))}}},UF=class{static{o(this,"StreamScope")}static{S(this,"StreamScope")}constructor(e,t,r){this.elements=e,this.outerScope=t,this.caseInsensitive=r?.caseInsensitive??!1,this.concatOuterScope=r?.concatOuterScope??!0}getAllElements(){return this.outerScope?this.elements.concat(this.outerScope.getAllElements()):this.elements}getElement(e){let t=this.caseInsensitive?e.toLowerCase():e,r=this.caseInsensitive?this.elements.find(i=>i.name.toLowerCase()===t):this.elements.find(i=>i.name===e);if(r)return r;if(this.outerScope)return this.outerScope.getElement(e)}getElements(e){let t=this.caseInsensitive?e.toLowerCase():e,r=this.caseInsensitive?this.elements.filter(i=>i.name.toLowerCase()===t):this.elements.filter(i=>i.name===e);return(this.concatOuterScope||r.isEmpty())&&this.outerScope?r.concat(this.outerScope.getElements(e)):r}},vvt=class{static{o(this,"MapScope")}static{S(this,"MapScope")}constructor(e,t,r){this.elements=new Map,this.caseInsensitive=r?.caseInsensitive??!1,this.concatOuterScope=r?.concatOuterScope??!0;for(let i of e){let n=this.caseInsensitive?i.name.toLowerCase():i.name;this.elements.set(n,i)}this.outerScope=t}getElement(e){let t=this.caseInsensitive?e.toLowerCase():e,r=this.elements.get(t);if(r)return r;if(this.outerScope)return this.outerScope.getElement(e)}getElements(e){let t=this.caseInsensitive?e.toLowerCase():e,r=this.elements.get(t),i=r?[r]:[];return(this.concatOuterScope||i.length>0)&&this.outerScope?gi(i).concat(this.outerScope.getElements(e)):gi(i)}getAllElements(){let e=gi(this.elements.values());return this.outerScope&&(e=e.concat(this.outerScope.getAllElements())),e}},T3e=class{static{o(this,"MultiMapScope")}static{S(this,"MultiMapScope")}constructor(e,t,r){this.elements=new gh,this.caseInsensitive=r?.caseInsensitive??!1,this.concatOuterScope=r?.concatOuterScope??!0;for(let i of e){let n=this.caseInsensitive?i.name.toLowerCase():i.name;this.elements.add(n,i)}this.outerScope=t}getElement(e){let t=this.caseInsensitive?e.toLowerCase():e,r=this.elements.get(t)[0];if(r)return r;if(this.outerScope)return this.outerScope.getElement(e)}getElements(e){let t=this.caseInsensitive?e.toLowerCase():e,r=this.elements.get(t);return(this.concatOuterScope||r.length===0)&&this.outerScope?gi(r).concat(this.outerScope.getElements(e)):gi(r)}getAllElements(){let e=gi(this.elements.values());return this.outerScope&&(e=e.concat(this.outerScope.getAllElements())),e}},xvt={getElement(){},getElements(){return H1},getAllElements(){return H1}},YA=class{static{o(this,"DisposableCache")}static{S(this,"DisposableCache")}constructor(){this.toDispose=[],this.isDisposed=!1}onDispose(e){this.toDispose.push(e)}dispose(){this.throwIfDisposed(),this.clear(),this.isDisposed=!0,this.toDispose.forEach(e=>e.dispose())}throwIfDisposed(){if(this.isDisposed)throw new Error("This cache has already been disposed")}},LG=class extends YA{static{o(this,"SimpleCache")}static{S(this,"SimpleCache")}constructor(){super(...arguments),this.cache=new Map}has(e){return this.throwIfDisposed(),this.cache.has(e)}set(e,t){this.throwIfDisposed(),this.cache.set(e,t)}get(e,t){if(this.throwIfDisposed(),this.cache.has(e))return this.cache.get(e);if(t){let r=t();return this.cache.set(e,r),r}else return}delete(e){return this.throwIfDisposed(),this.cache.delete(e)}clear(){this.throwIfDisposed(),this.cache.clear()}},jA=class extends YA{static{o(this,"ContextCache")}static{S(this,"ContextCache")}constructor(e){super(),this.cache=new Map,this.converter=e??(t=>t)}has(e,t){return this.throwIfDisposed(),this.cacheForContext(e).has(t)}set(e,t,r){this.throwIfDisposed(),this.cacheForContext(e).set(t,r)}get(e,t,r){this.throwIfDisposed();let i=this.cacheForContext(e);if(i.has(t))return i.get(t);if(r){let n=r();return i.set(t,n),n}else return}delete(e,t){return this.throwIfDisposed(),this.cacheForContext(e).delete(t)}clear(e){if(this.throwIfDisposed(),e){let t=this.converter(e);this.cache.delete(t)}else this.cache.clear()}cacheForContext(e){let t=this.converter(e),r=this.cache.get(t);return r||(r=new Map,this.cache.set(t,r)),r}},C3e=class extends jA{static{o(this,"DocumentCache")}static{S(this,"DocumentCache")}constructor(e,t){super(r=>r.toString()),t?(this.toDispose.push(e.workspace.DocumentBuilder.onDocumentPhase(t,r=>{this.clear(r.uri.toString())})),this.toDispose.push(e.workspace.DocumentBuilder.onUpdate((r,i)=>{for(let n of i)this.clear(n)}))):this.toDispose.push(e.workspace.DocumentBuilder.onUpdate((r,i)=>{let n=r.concat(i);for(let a of n)this.clear(a)}))}},MG=class extends LG{static{o(this,"WorkspaceCache")}static{S(this,"WorkspaceCache")}constructor(e,t){super(),t?(this.toDispose.push(e.workspace.DocumentBuilder.onBuildPhase(t,()=>{this.clear()})),this.toDispose.push(e.workspace.DocumentBuilder.onUpdate((r,i)=>{i.length>0&&this.clear()}))):this.toDispose.push(e.workspace.DocumentBuilder.onUpdate(()=>{this.clear()}))}},k3e=class{static{o(this,"DefaultScopeProvider")}static{S(this,"DefaultScopeProvider")}constructor(e){this.reflection=e.shared.AstReflection,this.nameProvider=e.references.NameProvider,this.descriptions=e.workspace.AstNodeDescriptionProvider,this.indexManager=e.shared.workspace.IndexManager,this.globalScopeCache=new MG(e.shared)}getScope(e){let t=[],r=this.reflection.getReferenceType(e),i=Wl(e.container).localSymbols;if(i){let a=e.container;do i.has(a)&&t.push(i.getStream(a).filter(s=>this.reflection.isSubtype(s.type,r))),a=a.$container;while(a)}let n=this.getGlobalScope(r,e);for(let a=t.length-1;a>=0;a--)n=this.createScope(t[a],n);return n}createScope(e,t,r){return new UF(gi(e),t,r)}createScopeForNodes(e,t,r){let i=gi(e).map(n=>{let a=this.nameProvider.getName(n);if(a)return this.descriptions.createDescription(n,a)}).nonNullable();return new UF(i,t,r)}getGlobalScope(e,t){return this.globalScopeCache.get(e,()=>new T3e(this.indexManager.allElements(e)))}};o(NG,"isAstNodeWithComment");S(NG,"isAstNodeWithComment");o(HF,"isIntermediateReference");S(HF,"isIntermediateReference");w3e=class{static{o(this,"DefaultJsonSerializer")}static{S(this,"DefaultJsonSerializer")}constructor(e){this.ignoreProperties=new Set(["$container","$containerProperty","$containerIndex","$document","$cstNode"]),this.langiumDocuments=e.shared.workspace.LangiumDocuments,this.astNodeLocator=e.workspace.AstNodeLocator,this.nameProvider=e.references.NameProvider,this.commentProvider=e.documentation.CommentProvider}serialize(e,t){let r=t??{},i=t?.replacer,n=S((s,l)=>this.replacer(s,l,r),"defaultReplacer"),a=i?(s,l)=>i(s,l,n):n;try{return this.currentDocument=Wl(e),JSON.stringify(e,a,t?.space)}finally{this.currentDocument=void 0}}deserialize(e,t){let r=t??{},i=JSON.parse(e);return this.linkNode(i,i,r),i}replacer(e,t,{refText:r,sourceText:i,textRegions:n,comments:a,uriConverter:s}){if(!this.ignoreProperties.has(e))if(ss(t)){let l=t.ref,u=r?t.$refText:void 0;if(l){let h=Wl(l),d="";this.currentDocument&&this.currentDocument!==h&&(s?d=s(h.uri,l):d=h.uri.toString());let f=this.astNodeLocator.getAstNodePath(l);return{$ref:`${d}#${f}`,$refText:u}}else return{$error:t.error?.message??"Could not resolve reference",$refText:u}}else if(Qc(t)){let l=r?t.$refText:void 0,u=[];for(let h of t.items){let d=h.ref,f=Wl(h.ref),p="";this.currentDocument&&this.currentDocument!==f&&(s?p=s(f.uri,d):p=f.uri.toString());let m=this.astNodeLocator.getAstNodePath(d);u.push(`${p}#${m}`)}return{$refs:u,$refText:l}}else if(Rn(t)){let l;if(n&&(l=this.addAstNodeRegionWithAssignmentsTo({...t}),(!e||t.$document)&&l?.$textRegion&&(l.$textRegion.documentURI=this.currentDocument?.uri.toString())),i&&!e&&(l??(l={...t}),l.$sourceText=t.$cstNode?.text),a){l??(l={...t});let u=this.commentProvider.getComment(t);u&&(l.$comment=u.replace(/\r/g,""))}return l??t}else return t}addAstNodeRegionWithAssignmentsTo(e){let t=S(r=>({offset:r.offset,end:r.end,length:r.length,range:r.range}),"createDocumentSegment");if(e.$cstNode){let r=e.$textRegion=t(e.$cstNode),i=r.assignments={};return Object.keys(e).filter(n=>!n.startsWith("$")).forEach(n=>{let a=rz(e.$cstNode,n).map(t);a.length!==0&&(i[n]=a)}),e}}linkNode(e,t,r,i,n,a){for(let[l,u]of Object.entries(e))if(Array.isArray(u))for(let h=0;h<u.length;h++){let d=u[h];HF(d)?u[h]=this.reviveReference(e,l,t,d,r):Rn(d)&&this.linkNode(d,t,r,e,l,h)}else HF(u)?e[l]=this.reviveReference(e,l,t,u,r):Rn(u)&&this.linkNode(u,t,r,e,l);let s=e;s.$container=i,s.$containerProperty=n,s.$containerIndex=a}reviveReference(e,t,r,i,n){let a=i.$refText,s=i.$error,l;if(i.$ref){let u=this.getRefNode(r,i.$ref,n.uriConverter);if(Rn(u))return a||(a=this.nameProvider.getName(u)),{$refText:a??"",ref:u};s=u}else if(i.$refs){let u=[];for(let h of i.$refs){let d=this.getRefNode(r,h,n.uriConverter);Rn(d)&&u.push({ref:d})}if(u.length===0)l={$refText:a??"",items:u},s??(s="Could not resolve multi-reference");else return{$refText:a??"",items:u}}if(s)return l??(l={$refText:a??"",ref:void 0}),l.error={info:{container:e,property:t,reference:l},message:s},l}getRefNode(e,t,r){try{let i=t.indexOf("#");if(i===0){let l=this.astNodeLocator.getAstNode(e,t.substring(1));return l||"Could not resolve path: "+t}if(i<0){let l=r?r(t):fo.parse(t),u=this.langiumDocuments.getDocument(l);return u?u.parseResult.value:"Could not find document for URI: "+t}let n=r?r(t.substring(0,i)):fo.parse(t.substring(0,i)),a=this.langiumDocuments.getDocument(n);if(!a)return"Could not find document for URI: "+t;if(i===t.length-1)return a.parseResult.value;let s=this.astNodeLocator.getAstNode(a.parseResult.value,t.substring(i+1));return s||"Could not resolve URI: "+t}catch(i){return String(i)}}},S3e=class{static{o(this,"DefaultServiceRegistry")}static{S(this,"DefaultServiceRegistry")}get map(){return this.fileExtensionMap}constructor(e){this.languageIdMap=new Map,this.fileExtensionMap=new Map,this.fileNameMap=new Map,this.textDocuments=e?.workspace.TextDocuments}register(e){let t=e.LanguageMetaData;for(let r of t.fileExtensions)this.fileExtensionMap.has(r)&&console.warn(`The file extension ${r} is used by multiple languages. It is now assigned to '${t.languageId}'.`),this.fileExtensionMap.set(r,e);if(t.fileNames)for(let r of t.fileNames)this.fileNameMap.has(r)&&console.warn(`The file name ${r} is used by multiple languages. It is now assigned to '${t.languageId}'.`),this.fileNameMap.set(r,e);this.languageIdMap.set(t.languageId,e)}getServices(e){if(this.languageIdMap.size===0)throw new Error("The service registry is empty. Use `register` to register the services of a language.");let t=this.textDocuments?.get(e)?.languageId;if(t!==void 0){let a=this.languageIdMap.get(t);if(a)return a}let r=os.extname(e),i=os.basename(e),n=this.fileNameMap.get(i)??this.fileExtensionMap.get(r);if(!n)throw t?new Error(`The service registry contains no services for the extension '${r}' for language '${t}'.`):new Error(`The service registry contains no services for the extension '${r}'.`);return n}hasServices(e){try{return this.getServices(e),!0}catch{return!1}}get all(){return Array.from(this.languageIdMap.values())}};o(O0,"diagnosticData");S(O0,"diagnosticData");(function(e){e.defaults=["fast","slow","built-in"],e.all=e.defaults})(z5||(z5={}));E3e=class{static{o(this,"ValidationRegistry")}static{S(this,"ValidationRegistry")}constructor(e){this.entries=new gh,this.knownCategories=new Set(z5.defaults),this.entriesBefore=[],this.entriesAfter=[],this.reflection=e.shared.AstReflection}register(e,t=this,r="fast"){if(r==="built-in")throw new Error("The 'built-in' category is reserved for lexer, parser, and linker errors.");this.knownCategories.add(r);for(let[i,n]of Object.entries(e)){let a=n;if(Array.isArray(a))for(let s of a){let l={check:this.wrapValidationException(s,t),category:r};this.addEntry(i,l)}else if(typeof a=="function"){let s={check:this.wrapValidationException(a,t),category:r};this.addEntry(i,s)}else bf(a)}}wrapValidationException(e,t){return async(r,i,n)=>{await this.handleException(()=>e.call(t,r,i,n),"An error occurred during validation",i,r)}}async handleException(e,t,r,i){try{await e()}catch(n){if(cm(n))throw n;console.error(`${t}:`,n),n instanceof Error&&n.stack&&console.error(n.stack);let a=n instanceof Error?n.message:String(n);r("error",`${t}: ${a}`,{node:i})}}addEntry(e,t){if(e==="AstNode"){this.entries.add("AstNode",t);return}for(let r of this.reflection.getAllSubTypes(e))this.entries.add(r,t)}getChecks(e,t){let r=gi(this.entries.get(e)).concat(this.entries.get("AstNode"));return t&&(r=r.filter(i=>t.includes(i.category))),r.map(i=>i.check)}registerBeforeDocument(e,t=this){this.entriesBefore.push(this.wrapPreparationException(e,"An error occurred during set-up of the validation",t))}registerAfterDocument(e,t=this){this.entriesAfter.push(this.wrapPreparationException(e,"An error occurred during tear-down of the validation",t))}wrapPreparationException(e,t,r){return async(i,n,a,s)=>{await this.handleException(()=>e.call(r,i,n,a,s),t,n,i)}}get checksBefore(){return this.entriesBefore}get checksAfter(){return this.entriesAfter}getAllValidationCategories(e){return this.knownCategories}},A3e=Object.freeze({validateNode:!0,validateChildren:!0}),_3e=class{static{o(this,"DefaultDocumentValidator")}static{S(this,"DefaultDocumentValidator")}constructor(e){this.validationRegistry=e.validation.ValidationRegistry,this.metadata=e.LanguageMetaData,this.profiler=e.shared.profilers.LangiumProfiler,this.languageId=e.LanguageMetaData.languageId}async validateDocument(e,t={},r=Ii.CancellationToken.None){let i=e.parseResult,n=[];if(await la(r),(!t.categories||t.categories.includes("built-in"))&&(this.processLexingErrors(i,n,t),t.stopAfterLexingErrors&&n.some(a=>a.data?.code===Qo.LexingError)||(this.processParsingErrors(i,n,t),t.stopAfterParsingErrors&&n.some(a=>a.data?.code===Qo.ParsingError))||(this.processLinkingErrors(e,n,t),t.stopAfterLinkingErrors&&n.some(a=>a.data?.code===Qo.LinkingError))))return n;try{n.push(...await this.validateAst(i.value,t,r))}catch(a){if(cm(a))throw a;console.error("An error occurred during validation:",a)}return await la(r),n}processLexingErrors(e,t,r){let i=[...e.lexerErrors,...e.lexerReport?.diagnostics??[]];for(let n of i){let a=n.severity??"error",s={severity:J2(a),range:{start:{line:n.line-1,character:n.column-1},end:{line:n.line-1,character:n.column+n.length-1}},message:n.message,data:OG(a),source:this.getSource()};t.push(s)}}processParsingErrors(e,t,r){for(let i of e.parserErrors){let n;if(isNaN(i.token.startOffset)){if("previousToken"in i){let a=i.previousToken;if(isNaN(a.startOffset)){let s={line:0,character:0};n={start:s,end:s}}else{let s={line:a.endLine-1,character:a.endColumn};n={start:s,end:s}}}}else n=nT(i.token);if(n){let a={severity:J2("error"),range:n,message:i.message,data:O0(Qo.ParsingError),source:this.getSource()};t.push(a)}}}processLinkingErrors(e,t,r){for(let i of e.references){let n=i.error;if(n){let a={node:n.info.container,range:i.$refNode?.range,property:n.info.property,index:n.info.index,data:{code:Qo.LinkingError,containerType:n.info.container.$type,property:n.info.property,refText:n.info.reference.$refText}};t.push(this.toDiagnostic("error",n.message,a))}}}async validateAst(e,t,r=Ii.CancellationToken.None){let i=[],n=S((a,s,l)=>{i.push(this.toDiagnostic(a,s,l))},"acceptor");return await this.validateAstBefore(e,t,n,r),await this.validateAstNodes(e,t,n,r),await this.validateAstAfter(e,t,n,r),i}async validateAstBefore(e,t,r,i=Ii.CancellationToken.None){let n=this.validationRegistry.checksBefore;for(let a of n)await la(i),await a(e,r,t.categories??[],i)}async validateAstNodes(e,t,r,i=Ii.CancellationToken.None){if(this.profiler?.isActive("validating")){let n=this.profiler.createTask("validating",this.languageId);n.start();try{let a=ql(e).iterator();for(let s of a){n.startSubTask(s.$type);let l=this.validateSingleNodeOptions(s,t);if(l.validateNode)try{let u=this.validationRegistry.getChecks(s.$type,t.categories);for(let h of u)await h(s,r,i)}finally{n.stopSubTask(s.$type)}l.validateChildren||a.prune()}}finally{n.stop()}}else{let n=ql(e).iterator();for(let a of n){await la(i);let s=this.validateSingleNodeOptions(a,t);if(s.validateNode){let l=this.validationRegistry.getChecks(a.$type,t.categories);for(let u of l)await u(a,r,i)}s.validateChildren||n.prune()}}}validateSingleNodeOptions(e,t){return A3e}async validateAstAfter(e,t,r,i=Ii.CancellationToken.None){let n=this.validationRegistry.checksAfter;for(let a of n)await la(i),await a(e,r,t.categories??[],i)}toDiagnostic(e,t,r){return{message:t,range:IG(r),severity:J2(e),code:r.code,codeDescription:r.codeDescription,tags:r.tags,relatedInformation:r.relatedInformation,data:r.data,source:this.getSource()}}getSource(){return this.metadata.languageId}};o(IG,"getDiagnosticRange");S(IG,"getDiagnosticRange");o(J2,"toDiagnosticSeverity");S(J2,"toDiagnosticSeverity");o(OG,"toDiagnosticData");S(OG,"toDiagnosticData");(function(e){e.LexingError="lexing-error",e.LexingWarning="lexing-warning",e.LexingInfo="lexing-info",e.LexingHint="lexing-hint",e.ParsingError="parsing-error",e.LinkingError="linking-error"})(Qo||(Qo={}));D3e=class{static{o(this,"DefaultAstNodeDescriptionProvider")}static{S(this,"DefaultAstNodeDescriptionProvider")}constructor(e){this.astNodeLocator=e.workspace.AstNodeLocator,this.nameProvider=e.references.NameProvider}createDescription(e,t,r){let i=r??Wl(e);t??(t=this.nameProvider.getName(e));let n=this.astNodeLocator.getAstNodePath(e);if(!t)throw new Error(`Node at path ${n} has no name.`);let a,s=S(()=>a??(a=Q1(this.nameProvider.getNameNode(e)??e.$cstNode)),"nameSegmentGetter");return{node:e,name:t,get nameSegment(){return s()},selectionSegment:Q1(e.$cstNode),type:e.$type,documentUri:i.uri,path:n}}},R3e=class{static{o(this,"DefaultReferenceDescriptionProvider")}static{S(this,"DefaultReferenceDescriptionProvider")}constructor(e){this.nodeLocator=e.workspace.AstNodeLocator}async createDescriptions(e,t=Ii.CancellationToken.None){let r=[],i=e.parseResult.value;for(let n of ql(i))await la(t),X1(n).forEach(a=>{a.reference.error||r.push(...this.createInfoDescriptions(a))});return r}createInfoDescriptions(e){let t=e.reference;if(t.error||!t.$refNode)return[];let r=[];ss(t)&&t.$nodeDescription?r=[t.$nodeDescription]:Qc(t)&&(r=t.items.map(l=>l.$nodeDescription).filter(l=>l!==void 0));let i=Wl(e.container).uri,n=this.nodeLocator.getAstNodePath(e.container),a=[],s=Q1(t.$refNode);for(let l of r)a.push({sourceUri:i,sourcePath:n,targetUri:l.documentUri,targetPath:l.path,segment:s,local:os.equals(l.documentUri,i)});return a}},L3e=class{static{o(this,"DefaultAstNodeLocator")}static{S(this,"DefaultAstNodeLocator")}constructor(){this.segmentSeparator="/",this.indexSeparator="@"}getAstNodePath(e){if(e.$container){let t=this.getAstNodePath(e.$container),r=this.getPathSegment(e);return t+this.segmentSeparator+r}return""}getPathSegment({$containerProperty:e,$containerIndex:t}){if(!e)throw new Error("Missing '$containerProperty' in AST node.");return t!==void 0?e+this.indexSeparator+t:e}getAstNode(e,t){return t.split(this.segmentSeparator).reduce((i,n)=>{if(!i||n.length===0)return i;let a=n.indexOf(this.indexSeparator);if(a>0){let s=n.substring(0,a),l=parseInt(n.substring(a+1));return i[s]?.[l]}return i[n]},e)}},XA={};W5(XA,c$(ny(),1));M3e=class{static{o(this,"DefaultConfigurationProvider")}static{S(this,"DefaultConfigurationProvider")}constructor(e){this._ready=new mh,this.onConfigurationSectionUpdateEmitter=new XA.Emitter,this.settings={},this.workspaceConfig=!1,this.serviceRegistry=e.ServiceRegistry}get ready(){return this._ready.promise}initialize(e){this.workspaceConfig=e.capabilities.workspace?.configuration??!1}async initialized(e){if(this.workspaceConfig){if(e.register){let t=this.serviceRegistry.all;e.register({section:t.map(r=>this.toSectionName(r.LanguageMetaData.languageId))})}if(e.fetchConfiguration){let t=this.serviceRegistry.all.map(i=>({section:this.toSectionName(i.LanguageMetaData.languageId)})),r=await e.fetchConfiguration(t);t.forEach((i,n)=>{this.updateSectionConfiguration(i.section,r[n])})}}this._ready.resolve()}updateConfiguration(e){typeof e.settings!="object"||e.settings===null||Object.entries(e.settings).forEach(([t,r])=>{this.updateSectionConfiguration(t,r),this.onConfigurationSectionUpdateEmitter.fire({section:t,configuration:r})})}updateSectionConfiguration(e,t){this.settings[e]=t}async getConfiguration(e,t){await this.ready;let r=this.toSectionName(e);if(this.settings[r])return this.settings[r][t]}toSectionName(e){return`${e}`}get onConfigurationSectionUpdate(){return this.onConfigurationSectionUpdateEmitter.event}},bE=c$(jlt(),1);(function(e){function t(r){return{dispose:S(async()=>await r(),"dispose")}}o(t,"create"),S(t,"create"),e.create=t})(F0||(F0={}));N3e=class{static{o(this,"DefaultDocumentBuilder")}static{S(this,"DefaultDocumentBuilder")}constructor(e){this.updateBuildOptions={validation:{categories:["built-in","fast"]}},this.updateListeners=[],this.buildPhaseListeners=new gh,this.documentPhaseListeners=new gh,this.buildState=new Map,this.documentBuildWaiters=new Map,this.currentState=zr.Changed,this.langiumDocuments=e.workspace.LangiumDocuments,this.langiumDocumentFactory=e.workspace.LangiumDocumentFactory,this.textDocuments=e.workspace.TextDocuments,this.indexManager=e.workspace.IndexManager,this.fileSystemProvider=e.workspace.FileSystemProvider,this.workspaceManager=()=>e.workspace.WorkspaceManager,this.serviceRegistry=e.ServiceRegistry}async build(e,t={},r=Ii.CancellationToken.None){for(let i of e){let n=i.uri.toString();if(i.state===zr.Validated){if(typeof t.validation=="boolean"&&t.validation)this.resetToState(i,zr.IndexedReferences);else if(typeof t.validation=="object"){let a=this.findMissingValidationCategories(i,t);a.length>0&&(this.buildState.set(n,{completed:!1,options:{validation:{categories:a}},result:this.buildState.get(n)?.result}),i.state=zr.IndexedReferences)}}else this.buildState.delete(n)}this.currentState=zr.Changed,await this.emitUpdate(e.map(i=>i.uri),[]),await this.buildDocuments(e,t,r)}async update(e,t,r=Ii.CancellationToken.None){this.currentState=zr.Changed;let i=[];for(let l of t){let u=this.langiumDocuments.deleteDocuments(l);for(let h of u)i.push(h.uri),this.cleanUpDeleted(h)}let n=(await Promise.all(e.map(l=>this.findChangedUris(l)))).flat();for(let l of n){let u=this.langiumDocuments.getDocument(l);u===void 0&&(u=this.langiumDocumentFactory.fromModel({$type:"INVALID"},l),u.state=zr.Changed,this.langiumDocuments.addDocument(u)),this.resetToState(u,zr.Changed)}let a=gi(n).concat(i).map(l=>l.toString()).toSet();this.langiumDocuments.all.filter(l=>!a.has(l.uri.toString())&&this.shouldRelink(l,a)).forEach(l=>this.resetToState(l,zr.ComputedScopes)),await this.emitUpdate(n,i),await la(r);let s=this.sortDocuments(this.langiumDocuments.all.filter(l=>l.state<zr.Validated||!this.buildState.get(l.uri.toString())?.completed||this.resultsAreIncomplete(l,this.updateBuildOptions)).toArray());await this.buildDocuments(s,this.updateBuildOptions,r)}resultsAreIncomplete(e,t){return this.findMissingValidationCategories(e,t).length>=1}findMissingValidationCategories(e,t){let r=this.buildState.get(e.uri.toString()),i=this.serviceRegistry.getServices(e.uri).validation.ValidationRegistry.getAllValidationCategories(e),n=r?.result?.validationChecks?new Set(r?.result?.validationChecks):r?.completed?i:new Set,a=t===void 0||t.validation===!0?i:typeof t.validation=="object"?t.validation.categories??i:[];return gi(a).filter(s=>!n.has(s)).toArray()}async findChangedUris(e){if(this.langiumDocuments.getDocument(e)??this.textDocuments?.get(e))return[e];try{let r=await this.fileSystemProvider.stat(e);if(r.isDirectory)return await this.workspaceManager().searchFolder(e);if(this.workspaceManager().shouldIncludeEntry(r))return[e]}catch{}return[]}async emitUpdate(e,t){await Promise.all(this.updateListeners.map(r=>r(e,t)))}sortDocuments(e){let t=0,r=e.length-1;for(;t<r;){for(;t<e.length&&this.hasTextDocument(e[t]);)t++;for(;r>=0&&!this.hasTextDocument(e[r]);)r--;t<r&&([e[t],e[r]]=[e[r],e[t]])}return e}hasTextDocument(e){return!!this.textDocuments?.get(e.uri)}shouldRelink(e,t){return e.references.some(r=>r.error!==void 0)?!0:this.indexManager.isAffected(e,t)}onUpdate(e){return this.updateListeners.push(e),F0.create(()=>{let t=this.updateListeners.indexOf(e);t>=0&&this.updateListeners.splice(t,1)})}resetToState(e,t){switch(t){case zr.Changed:case zr.Parsed:this.indexManager.removeContent(e.uri);case zr.IndexedContent:e.localSymbols=void 0;case zr.ComputedScopes:this.serviceRegistry.getServices(e.uri).references.Linker.unlink(e);case zr.Linked:this.indexManager.removeReferences(e.uri);case zr.IndexedReferences:e.diagnostics=void 0,this.buildState.delete(e.uri.toString());case zr.Validated:}e.state>t&&(e.state=t)}cleanUpDeleted(e){this.buildState.delete(e.uri.toString()),this.indexManager.remove(e.uri),e.state=zr.Changed}async buildDocuments(e,t,r){this.prepareBuild(e,t),await this.runCancelable(e,zr.Parsed,r,a=>this.langiumDocumentFactory.update(a,r)),await this.runCancelable(e,zr.IndexedContent,r,a=>this.indexManager.updateContent(a,r)),await this.runCancelable(e,zr.ComputedScopes,r,async a=>{let s=this.serviceRegistry.getServices(a.uri).references.ScopeComputation;a.localSymbols=await s.collectLocalSymbols(a,r)});let i=e.filter(a=>this.shouldLink(a));await this.runCancelable(i,zr.Linked,r,a=>this.serviceRegistry.getServices(a.uri).references.Linker.link(a,r)),await this.runCancelable(i,zr.IndexedReferences,r,a=>this.indexManager.updateReferences(a,r));let n=e.filter(a=>this.shouldValidate(a)?!0:(this.markAsCompleted(a),!1));await this.runCancelable(n,zr.Validated,r,async a=>{await this.validate(a,r),this.markAsCompleted(a)})}markAsCompleted(e){let t=this.buildState.get(e.uri.toString());t&&(t.completed=!0)}prepareBuild(e,t){for(let r of e){let i=r.uri.toString(),n=this.buildState.get(i);(!n||n.completed)&&this.buildState.set(i,{completed:!1,options:t,result:n?.result})}}async runCancelable(e,t,r,i){for(let a of e)a.state<t&&(await la(r),await i(a),a.state=t,await this.notifyDocumentPhase(a,t,r));let n=e.filter(a=>a.state===t);await this.notifyBuildPhase(n,t,r),this.currentState=t}onBuildPhase(e,t){return this.buildPhaseListeners.add(e,t),F0.create(()=>{this.buildPhaseListeners.delete(e,t)})}onDocumentPhase(e,t){return this.documentPhaseListeners.add(e,t),F0.create(()=>{this.documentPhaseListeners.delete(e,t)})}waitUntil(e,t,r){let i;return t&&"path"in t?i=t:r=t,r??(r=Ii.CancellationToken.None),i?this.awaitDocumentState(e,i,r):this.awaitBuilderState(e,r)}awaitDocumentState(e,t,r){let i=this.langiumDocuments.getDocument(t);if(i){if(i.state>=e)return Promise.resolve(t);if(r.isCancellationRequested)return Promise.reject(Zc);if(this.currentState>=e&&e>i.state)return Promise.reject(new bE.ResponseError(bE.LSPErrorCodes.RequestFailed,`Document state of ${t.toString()} is ${zr[i.state]}, requiring ${zr[e]}, but workspace state is already ${zr[this.currentState]}. Returning undefined.`))}else return Promise.reject(new bE.ResponseError(bE.LSPErrorCodes.ServerCancelled,`No document found for URI: ${t.toString()}`));return new Promise((n,a)=>{let s=this.onDocumentPhase(e,u=>{os.equals(u.uri,t)&&(s.dispose(),l.dispose(),n(u.uri))}),l=r.onCancellationRequested(()=>{s.dispose(),l.dispose(),a(Zc)})})}awaitBuilderState(e,t){return this.currentState>=e?Promise.resolve():t.isCancellationRequested?Promise.reject(Zc):new Promise((r,i)=>{let n=this.onBuildPhase(e,()=>{n.dispose(),a.dispose(),r()}),a=t.onCancellationRequested(()=>{n.dispose(),a.dispose(),i(Zc)})})}async notifyDocumentPhase(e,t,r){let n=this.documentPhaseListeners.get(t).slice();for(let a of n)try{await la(r),await a(e,r)}catch(s){if(!cm(s))throw s}}async notifyBuildPhase(e,t,r){if(e.length===0)return;let n=this.buildPhaseListeners.get(t).slice();for(let a of n)await la(r),await a(e,r)}shouldLink(e){return this.getBuildOptions(e).eagerLinking??!0}shouldValidate(e){return!!this.getBuildOptions(e).validation}async validate(e,t){let r=this.serviceRegistry.getServices(e.uri).validation.DocumentValidator,i=this.getBuildOptions(e),n=typeof i.validation=="object"?{...i.validation}:{};n.categories=this.findMissingValidationCategories(e,i);let a=await r.validateDocument(e,n,t);e.diagnostics?e.diagnostics.push(...a):e.diagnostics=a;let s=this.buildState.get(e.uri.toString());s&&(s.result??(s.result={}),s.result.validationChecks?s.result.validationChecks=gi(s.result.validationChecks).concat(n.categories).distinct().toArray():s.result.validationChecks=[...n.categories])}getBuildOptions(e){return this.buildState.get(e.uri.toString())?.options??{}}},I3e=class{static{o(this,"DefaultIndexManager")}static{S(this,"DefaultIndexManager")}constructor(e){this.symbolIndex=new Map,this.symbolByTypeIndex=new jA,this.referenceIndex=new Map,this.documents=e.workspace.LangiumDocuments,this.serviceRegistry=e.ServiceRegistry,this.astReflection=e.AstReflection}findAllReferences(e,t){let r=Wl(e).uri,i=[];return this.referenceIndex.forEach(n=>{n.forEach(a=>{os.equals(a.targetUri,r)&&a.targetPath===t&&i.push(a)})}),gi(i)}allElements(e,t){let r=gi(this.symbolIndex.keys());return t&&(r=r.filter(i=>!t||t.has(i))),r.map(i=>this.getFileDescriptions(i,e)).flat()}getFileDescriptions(e,t){return t?this.symbolByTypeIndex.get(e,t,()=>(this.symbolIndex.get(e)??[]).filter(n=>this.astReflection.isSubtype(n.type,t))):this.symbolIndex.get(e)??[]}remove(e){this.removeContent(e),this.removeReferences(e)}removeContent(e){let t=e.toString();this.symbolIndex.delete(t),this.symbolByTypeIndex.clear(t)}removeReferences(e){let t=e.toString();this.referenceIndex.delete(t)}async updateContent(e,t=Ii.CancellationToken.None){let i=await this.serviceRegistry.getServices(e.uri).references.ScopeComputation.collectExportedSymbols(e,t),n=e.uri.toString();this.symbolIndex.set(n,i),this.symbolByTypeIndex.clear(n)}async updateReferences(e,t=Ii.CancellationToken.None){let i=await this.serviceRegistry.getServices(e.uri).workspace.ReferenceDescriptionProvider.createDescriptions(e,t);this.referenceIndex.set(e.uri.toString(),i)}isAffected(e,t){let r=this.referenceIndex.get(e.uri.toString());return r?r.some(i=>!i.local&&t.has(i.targetUri.toString())):!1}},O3e=class{static{o(this,"DefaultWorkspaceManager")}static{S(this,"DefaultWorkspaceManager")}constructor(e){this.initialBuildOptions={},this._ready=new mh,this.serviceRegistry=e.ServiceRegistry,this.langiumDocuments=e.workspace.LangiumDocuments,this.documentBuilder=e.workspace.DocumentBuilder,this.fileSystemProvider=e.workspace.FileSystemProvider,this.mutex=e.workspace.WorkspaceLock}get ready(){return this._ready.promise}get workspaceFolders(){return this.folders}initialize(e){this.folders=e.workspaceFolders??void 0}initialized(e){return this.mutex.write(t=>this.initializeWorkspace(this.folders??[],t))}async initializeWorkspace(e,t=Ii.CancellationToken.None){let r=await this.performStartup(e);await la(t),await this.documentBuilder.build(r,this.initialBuildOptions,t)}async performStartup(e){let t=[],r=S(a=>{t.push(a),this.langiumDocuments.hasDocument(a.uri)||this.langiumDocuments.addDocument(a)},"collector");await this.loadAdditionalDocuments(e,r);let i=[];await Promise.all(e.map(a=>this.getRootFolder(a)).map(async a=>this.traverseFolder(a,i)));let n=gi(i).distinct(a=>a.toString()).filter(a=>!this.langiumDocuments.hasDocument(a));return await this.loadWorkspaceDocuments(n,r),this._ready.resolve(),t}async loadWorkspaceDocuments(e,t){await Promise.all(e.map(async r=>{let i=await this.langiumDocuments.getOrCreateDocument(r);t(i)}))}loadAdditionalDocuments(e,t){return Promise.resolve()}getRootFolder(e){return fo.parse(e.uri)}async traverseFolder(e,t){try{let r=await this.fileSystemProvider.readDirectory(e);await Promise.all(r.map(async i=>{this.shouldIncludeEntry(i)&&(i.isDirectory?await this.traverseFolder(i.uri,t):i.isFile&&t.push(i.uri))}))}catch(r){console.error("Failure to read directory content of "+e.toString(!0),r)}}async searchFolder(e){let t=[];return await this.traverseFolder(e,t),t}shouldIncludeEntry(e){let t=os.basename(e.uri);return t.startsWith(".")?!1:e.isDirectory?t!=="node_modules"&&t!=="out":e.isFile?this.serviceRegistry.hasServices(e.uri):!1}},P3e=class{static{o(this,"DefaultLexerErrorMessageProvider")}static{S(this,"DefaultLexerErrorMessageProvider")}buildUnexpectedCharactersMessage(e,t,r,i,n){return SF.buildUnexpectedCharactersMessage(e,t,r,i,n)}buildUnableToPopLexerModeMessage(e){return SF.buildUnableToPopLexerModeMessage(e)}},PG={mode:"full"},BG=class{static{o(this,"DefaultLexer")}static{S(this,"DefaultLexer")}constructor(e){this.errorMessageProvider=e.parser.LexerErrorMessageProvider,this.tokenBuilder=e.parser.TokenBuilder;let t=this.tokenBuilder.buildTokens(e.Grammar,{caseInsensitive:e.LanguageMetaData.caseInsensitive});this.tokenTypes=this.toTokenTypeDictionary(t);let r=G5(t)?Object.values(t):t,i=e.LanguageMetaData.mode==="production";this.chevrotainLexer=new ls(r,{positionTracking:"full",skipValidations:i,errorMessageProvider:this.errorMessageProvider})}get definition(){return this.tokenTypes}tokenize(e,t=PG){let r=this.chevrotainLexer.tokenize(e);return{tokens:r.tokens,errors:r.errors,hidden:r.groups.hidden??[],report:this.tokenBuilder.flushLexingReport?.(e)}}toTokenTypeDictionary(e){if(G5(e))return e;let t=ZA(e)?Object.values(e.modes).flat():e,r={};return t.forEach(i=>r[i.name]=i),r}};o(KA,"isTokenTypeArray");S(KA,"isTokenTypeArray");o(ZA,"isIMultiModeLexerDefinition");S(ZA,"isIMultiModeLexerDefinition");o(G5,"isTokenTypeDictionary");S(G5,"isTokenTypeDictionary");bT();o(FG,"parseJSDoc");S(FG,"parseJSDoc");o($G,"isJSDoc");S($G,"isJSDoc");o(zG,"getLines");S(zG,"getLines");Fye=/\s*(@([\p{L}][\p{L}\p{N}]*)?)/uy,bvt=/\{(@[\p{L}][\p{L}\p{N}]*)(\s*)([^\r\n}]+)?\}/gu;o(B3e,"tokenize");S(B3e,"tokenize");o(F3e,"buildInlineTokens");S(F3e,"buildInlineTokens");Tvt=/\S/,Cvt=/\s*$/;o(V5,"skipWhitespace");S(V5,"skipWhitespace");o($3e,"lastCharacter");S($3e,"lastCharacter");o(z3e,"parseJSDocComment");S(z3e,"parseJSDocComment");o(G3e,"parseJSDocElement");S(G3e,"parseJSDocElement");o(V3e,"appendEmptyLine");S(V3e,"appendEmptyLine");o(GG,"parseJSDocText");S(GG,"parseJSDocText");o(W3e,"parseJSDocInline");S(W3e,"parseJSDocInline");o(VG,"parseJSDocTag");S(VG,"parseJSDocTag");o(WG,"parseJSDocLine");S(WG,"parseJSDocLine");o(QA,"normalizeOptions");S(QA,"normalizeOptions");o(JE,"normalizeOption");S(JE,"normalizeOption");$ye=class{static{o(this,"JSDocCommentImpl")}static{S(this,"JSDocCommentImpl")}constructor(e,t){this.elements=e,this.range=t}getTag(e){return this.getAllTags().find(t=>t.name===e)}getTags(e){return this.getAllTags().filter(t=>t.name===e)}getAllTags(){return this.elements.filter(e=>"name"in e)}toString(){let e="";for(let t of this.elements)if(e.length===0)e=t.toString();else{let r=t.toString();e+=jF(e)+r}return e.trim()}toMarkdown(e){let t="";for(let r of this.elements)if(t.length===0)t=r.toMarkdown(e);else{let i=r.toMarkdown(e);t+=jF(t)+i}return t.trim()}},tB=class{static{o(this,"JSDocTagImpl")}static{S(this,"JSDocTagImpl")}constructor(e,t,r,i){this.name=e,this.content=t,this.inline=r,this.range=i}toString(){let e=`@${this.name}`,t=this.content.toString();return this.content.inlines.length===1?e=`${e} ${t}`:this.content.inlines.length>1&&(e=`${e}
-${t}`),this.inline?`{${e}}`:e}toMarkdown(e){return e?.renderTag?.(this)??this.toMarkdownDefault(e)}toMarkdownDefault(e){let t=this.content.toMarkdown(e);if(this.inline){let n=q3e(this.name,t,e??{});if(typeof n=="string")return n}let r="";e?.tag==="italic"||e?.tag===void 0?r="*":e?.tag==="bold"?r="**":e?.tag==="bold-italic"&&(r="***");let i=`${r}@${this.name}${r}`;return this.content.inlines.length===1?i=`${i} \u2014 ${t}`:this.content.inlines.length>1&&(i=`${i}
-${t}`),this.inline?`{${i}}`:i}};o(q3e,"renderInlineTag");S(q3e,"renderInlineTag");o(U3e,"renderLinkDefault");S(U3e,"renderLinkDefault");YF=class{static{o(this,"JSDocTextImpl")}static{S(this,"JSDocTextImpl")}constructor(e,t){this.inlines=e,this.range=t}toString(){let e="";for(let t=0;t<this.inlines.length;t++){let r=this.inlines[t],i=this.inlines[t+1];e+=r.toString(),i&&i.range.start.line>r.range.start.line&&(e+=`
-`)}return e}toMarkdown(e){let t="";for(let r=0;r<this.inlines.length;r++){let i=this.inlines[r],n=this.inlines[r+1];t+=i.toMarkdown(e),n&&n.range.start.line>i.range.start.line&&(t+=`
-`)}return t}},H3e=class{static{o(this,"JSDocLineImpl")}static{S(this,"JSDocLineImpl")}constructor(e,t){this.text=e,this.range=t}toString(){return this.text}toMarkdown(){return this.text}};o(jF,"fillNewlines");S(jF,"fillNewlines");Y3e=class{static{o(this,"JSDocDocumentationProvider")}static{S(this,"JSDocDocumentationProvider")}constructor(e){this.indexManager=e.shared.workspace.IndexManager,this.commentProvider=e.documentation.CommentProvider}getDocumentation(e){let t=this.commentProvider.getComment(e);if(t&&$G(t))return FG(t).toMarkdown({renderLink:S((i,n)=>this.documentationLinkRenderer(e,i,n),"renderLink"),renderTag:S(i=>this.documentationTagRenderer(e,i),"renderTag")})}documentationLinkRenderer(e,t,r){let i=this.findNameInLocalSymbols(e,t)??this.findNameInGlobalScope(e,t);if(i&&i.nameSegment){let n=i.nameSegment.range.start.line+1,a=i.nameSegment.range.start.character+1,s=i.documentUri.with({fragment:`L${n},${a}`});return`[${r}](${s.toString()})`}else return}documentationTagRenderer(e,t){}findNameInLocalSymbols(e,t){let i=Wl(e).localSymbols;if(!i)return;let n=e;do{let s=i.getStream(n).find(l=>l.name===t);if(s)return s;n=n.$container}while(n)}findNameInGlobalScope(e,t){return this.indexManager.allElements().find(i=>i.name===t)}},j3e=class{static{o(this,"DefaultCommentProvider")}static{S(this,"DefaultCommentProvider")}constructor(e){this.grammarConfig=()=>e.parser.GrammarConfig}getComment(e){return NG(e)?e.$comment:G$(e.$cstNode,this.grammarConfig().multilineCommentRules)?.text}},X3e=class{static{o(this,"DefaultAsyncParser")}static{S(this,"DefaultAsyncParser")}constructor(e){this.syncParser=e.parser.LangiumParser}parse(e,t){return Promise.resolve(this.syncParser.parse(e))}},kvt=class{static{o(this,"AbstractThreadedAsyncParser")}static{S(this,"AbstractThreadedAsyncParser")}constructor(e){this.threadCount=8,this.terminationDelay=200,this.workerPool=[],this.queue=[],this.hydrator=e.serializer.Hydrator}initializeWorkers(){for(;this.workerPool.length<this.threadCount;){let e=this.createWorker();e.onReady(()=>{if(this.queue.length>0){let t=this.queue.shift();t&&(e.lock(),t.resolve(e))}}),this.workerPool.push(e)}}async parse(e,t){let r=await this.acquireParserWorker(t),i=new mh,n,a=t.onCancellationRequested(()=>{n=setTimeout(()=>{this.terminateWorker(r)},this.terminationDelay)});return r.parse(e).then(s=>{let l=this.hydrator.hydrate(s);i.resolve(l)}).catch(s=>{i.reject(s)}).finally(()=>{a.dispose(),clearTimeout(n)}),i.promise}terminateWorker(e){e.terminate();let t=this.workerPool.indexOf(e);t>=0&&this.workerPool.splice(t,1)}async acquireParserWorker(e){this.initializeWorkers();for(let r of this.workerPool)if(r.ready)return r.lock(),r;let t=new mh;return e.onCancellationRequested(()=>{let r=this.queue.indexOf(t);r>=0&&this.queue.splice(r,1),t.reject(Zc)}),this.queue.push(t),t.promise}},wvt=class{static{o(this,"ParserWorker")}static{S(this,"ParserWorker")}get ready(){return this._ready}get onReady(){return this.onReadyEmitter.event}constructor(e,t,r,i){this.onReadyEmitter=new XA.Emitter,this.deferred=new mh,this._ready=!0,this._parsing=!1,this.sendMessage=e,this._terminate=i,t(n=>{let a=n;this.deferred.resolve(a),this.unlock()}),r(n=>{this.deferred.reject(n),this.unlock()})}terminate(){this.deferred.reject(Zc),this._terminate()}lock(){this._ready=!1}unlock(){this._parsing=!1,this._ready=!0,this.onReadyEmitter.fire()}parse(e){if(this._parsing)throw new Error("Parser worker is busy");return this._parsing=!0,this.deferred=new mh,this.sendMessage(e),this.deferred.promise}},K3e=class{static{o(this,"DefaultWorkspaceLock")}static{S(this,"DefaultWorkspaceLock")}constructor(){this.previousTokenSource=new Ii.CancellationTokenSource,this.writeQueue=[],this.readQueue=[],this.done=!0}write(e){this.cancelWrite();let t=HA();return this.previousTokenSource=t,this.enqueue(this.writeQueue,e,t.token)}read(e){return this.enqueue(this.readQueue,e)}enqueue(e,t,r=Ii.CancellationToken.None){let i=new mh,n={action:t,deferred:i,cancellationToken:r};return e.push(n),this.performNextOperation(),i.promise}async performNextOperation(){if(!this.done)return;let e=[];if(this.writeQueue.length>0)e.push(this.writeQueue.shift());else if(this.readQueue.length>0)e.push(...this.readQueue.splice(0,this.readQueue.length));else return;this.done=!1,await Promise.all(e.map(async({action:t,deferred:r,cancellationToken:i})=>{try{let n=await Promise.resolve().then(()=>t(i));r.resolve(n)}catch(n){cm(n)?r.resolve(void 0):r.reject(n)}})),this.done=!0,this.performNextOperation()}cancelWrite(){this.previousTokenSource.cancel()}},Z3e=class{static{o(this,"DefaultHydrator")}static{S(this,"DefaultHydrator")}constructor(e){this.grammarElementIdMap=new $5,this.tokenTypeIdMap=new $5,this.grammar=e.Grammar,this.lexer=e.parser.Lexer,this.linker=e.references.Linker}dehydrate(e){return{lexerErrors:e.lexerErrors,lexerReport:e.lexerReport?this.dehydrateLexerReport(e.lexerReport):void 0,parserErrors:e.parserErrors.map(t=>({...t,message:t.message})),value:this.dehydrateAstNode(e.value,this.createDehyrationContext(e.value))}}dehydrateLexerReport(e){return e}createDehyrationContext(e){let t=new Map,r=new Map;for(let i of ql(e))t.set(i,{});if(e.$cstNode)for(let i of Z1(e.$cstNode))r.set(i,{});return{astNodes:t,cstNodes:r}}dehydrateAstNode(e,t){let r=t.astNodes.get(e);r.$type=e.$type,r.$containerIndex=e.$containerIndex,r.$containerProperty=e.$containerProperty,e.$cstNode!==void 0&&(r.$cstNode=this.dehydrateCstNode(e.$cstNode,t));for(let[i,n]of Object.entries(e))if(!i.startsWith("$"))if(Array.isArray(n)){let a=[];r[i]=a;for(let s of n)Rn(s)?a.push(this.dehydrateAstNode(s,t)):ss(s)?a.push(this.dehydrateReference(s,t)):a.push(s)}else Rn(n)?r[i]=this.dehydrateAstNode(n,t):ss(n)?r[i]=this.dehydrateReference(n,t):n!==void 0&&(r[i]=n);return r}dehydrateReference(e,t){let r={};return r.$refText=e.$refText,e.$refNode&&(r.$refNode=t.cstNodes.get(e.$refNode)),r}dehydrateCstNode(e,t){let r=t.cstNodes.get(e);return H5(e)?r.fullText=e.fullText:r.grammarSource=this.getGrammarElementId(e.grammarSource),r.hidden=e.hidden,r.astNode=t.astNodes.get(e.astNode),oh(e)?r.content=e.content.map(i=>this.dehydrateCstNode(i,t)):q0(e)&&(r.tokenType=e.tokenType.name,r.offset=e.offset,r.length=e.length,r.startLine=e.range.start.line,r.startColumn=e.range.start.character,r.endLine=e.range.end.line,r.endColumn=e.range.end.character),r}hydrate(e){let t=e.value,r=this.createHydrationContext(t);return"$cstNode"in t&&this.hydrateCstNode(t.$cstNode,r),{lexerErrors:e.lexerErrors,lexerReport:e.lexerReport,parserErrors:e.parserErrors,value:this.hydrateAstNode(t,r)}}createHydrationContext(e){let t=new Map,r=new Map;for(let n of ql(e))t.set(n,{});let i;if(e.$cstNode)for(let n of Z1(e.$cstNode)){let a;"fullText"in n?(a=new yG(n.fullText),i=a):"content"in n?a=new GA:"tokenType"in n&&(a=this.hydrateCstLeafNode(n)),a&&(r.set(n,a),a.root=i)}return{astNodes:t,cstNodes:r}}hydrateAstNode(e,t){let r=t.astNodes.get(e);r.$type=e.$type,r.$containerIndex=e.$containerIndex,r.$containerProperty=e.$containerProperty,e.$cstNode&&(r.$cstNode=t.cstNodes.get(e.$cstNode));for(let[i,n]of Object.entries(e))if(!i.startsWith("$"))if(Array.isArray(n)){let a=[];r[i]=a;for(let s of n)Rn(s)?a.push(this.setParent(this.hydrateAstNode(s,t),r)):ss(s)?a.push(this.hydrateReference(s,r,i,t)):a.push(s)}else Rn(n)?r[i]=this.setParent(this.hydrateAstNode(n,t),r):ss(n)?r[i]=this.hydrateReference(n,r,i,t):n!==void 0&&(r[i]=n);return r}setParent(e,t){return e.$container=t,e}hydrateReference(e,t,r,i){return this.linker.buildReference(t,r,i.cstNodes.get(e.$refNode),e.$refText)}hydrateCstNode(e,t,r=0){let i=t.cstNodes.get(e);if(typeof e.grammarSource=="number"&&(i.grammarSource=this.getGrammarElement(e.grammarSource)),i.astNode=t.astNodes.get(e.astNode),oh(i))for(let n of e.content){let a=this.hydrateCstNode(n,t,r++);i.content.push(a)}return i}hydrateCstLeafNode(e){let t=this.getTokenType(e.tokenType),r=e.offset,i=e.length,n=e.startLine,a=e.startColumn,s=e.endLine,l=e.endColumn,u=e.hidden;return new I5(r,i,{start:{line:n,character:a},end:{line:s,character:l}},t,u)}getTokenType(e){return this.lexer.definition[e]}getGrammarElementId(e){if(e)return this.grammarElementIdMap.size===0&&this.createGrammarElementIdMap(),this.grammarElementIdMap.get(e)}getGrammarElement(e){return this.grammarElementIdMap.size===0&&this.createGrammarElementIdMap(),this.grammarElementIdMap.getKey(e)}createGrammarElementIdMap(){let e=0;for(let t of ql(this.grammar))Y5(t)&&this.grammarElementIdMap.set(t,e++)}};o(rn,"createDefaultCoreModule");S(rn,"createDefaultCoreModule");o(nn,"createDefaultSharedCoreModule");S(nn,"createDefaultSharedCoreModule");(function(e){e.merge=(t,r)=>iy(iy({},t),r)})(XF||(XF={}));o(Hr,"inject");S(Hr,"inject");Q3e=Symbol("isProxy");o(qG,"eagerLoad");S(qG,"eagerLoad");o(UG,"_inject");S(UG,"_inject");zye=Symbol();o(KF,"_resolve");S(KF,"_resolve");o(iy,"_merge");S(iy,"_merge");ZF={indentTokenName:"INDENT",dedentTokenName:"DEDENT",whitespaceTokenName:"WS",ignoreIndentationDelimiters:[]};(function(e){e.REGULAR="indentation-sensitive",e.IGNORE_INDENTATION="ignore-indentation"})(P0||(P0={}));J3e=class extends qA{static{o(this,"IndentationAwareTokenBuilder")}static{S(this,"IndentationAwareTokenBuilder")}constructor(e=ZF){super(),this.indentationStack=[0],this.whitespaceRegExp=/[ \t]+/y,this.options={...ZF,...e},this.indentTokenType=q1({name:this.options.indentTokenName,pattern:this.indentMatcher.bind(this),line_breaks:!1}),this.dedentTokenType=q1({name:this.options.dedentTokenName,pattern:this.dedentMatcher.bind(this),line_breaks:!1})}buildTokens(e,t){let r=super.buildTokens(e,t);if(!KA(r))throw new Error("Invalid tokens built by default builder");let{indentTokenName:i,dedentTokenName:n,whitespaceTokenName:a,ignoreIndentationDelimiters:s}=this.options,l,u,h,d=[];for(let f of r){for(let[p,m]of s)f.name===p?f.PUSH_MODE=P0.IGNORE_INDENTATION:f.name===m&&(f.POP_MODE=!0);f.name===n?l=f:f.name===i?u=f:f.name===a?h=f:d.push(f)}if(!l||!u||!h)throw new Error("Some indentation/whitespace tokens not found!");return s.length>0?{modes:{[P0.REGULAR]:[l,u,...d,h],[P0.IGNORE_INDENTATION]:[...d,h]},defaultMode:P0.REGULAR}:[l,u,h,...d]}flushLexingReport(e){return{...super.flushLexingReport(e),remainingDedents:this.flushRemainingDedents(e)}}isStartOfLine(e,t){return t===0||`\r
-`.includes(e[t-1])}matchWhitespace(e,t,r,i){this.whitespaceRegExp.lastIndex=t;let n=this.whitespaceRegExp.exec(e);return{currIndentLevel:n?.[0].length??0,prevIndentLevel:this.indentationStack.at(-1),match:n}}createIndentationTokenInstance(e,t,r,i){let n=this.getLineNumber(t,i);return PT(e,r,i,i+r.length,n,n,1,r.length)}getLineNumber(e,t){return e.substring(0,t).split(/\r\n|\r|\n/).length}indentMatcher(e,t,r,i){if(!this.isStartOfLine(e,t))return null;let{currIndentLevel:n,prevIndentLevel:a,match:s}=this.matchWhitespace(e,t,r,i);return n<=a?null:(this.indentationStack.push(n),s)}dedentMatcher(e,t,r,i){if(!this.isStartOfLine(e,t))return null;let{currIndentLevel:n,prevIndentLevel:a,match:s}=this.matchWhitespace(e,t,r,i);if(n>=a)return null;let l=this.indentationStack.lastIndexOf(n);if(l===-1)return this.diagnostics.push({severity:"error",message:`Invalid dedent level ${n} at offset: ${t}. Current indentation stack: ${this.indentationStack}`,offset:t,length:s?.[0]?.length??0,line:this.getLineNumber(e,t),column:1}),null;let u=this.indentationStack.length-l-1,h=e.substring(0,t).match(/[\r\n]+$/)?.[0].length??1;for(let d=0;d<u;d++){let f=this.createIndentationTokenInstance(this.dedentTokenType,e,"",t-(h-1));r.push(f),this.indentationStack.pop()}return null}buildTerminalToken(e){let t=super.buildTerminalToken(e),{indentTokenName:r,dedentTokenName:i,whitespaceTokenName:n}=this.options;return t.name===r?this.indentTokenType:t.name===i?this.dedentTokenType:t.name===n?q1({name:n,pattern:this.whitespaceRegExp,group:ls.SKIPPED}):t}flushRemainingDedents(e){let t=[];for(;this.indentationStack.length>1;)t.push(this.createIndentationTokenInstance(this.dedentTokenType,e,"",e.length)),this.indentationStack.pop();return this.indentationStack=[0],t}},Svt=class extends BG{static{o(this,"IndentationAwareLexer")}static{S(this,"IndentationAwareLexer")}constructor(e){if(super(e),e.parser.TokenBuilder instanceof J3e)this.indentationTokenBuilder=e.parser.TokenBuilder;else throw new Error("IndentationAwareLexer requires an accompanying IndentationAwareTokenBuilder")}tokenize(e,t=PG){let r=super.tokenize(e),i=r.report;t?.mode==="full"&&r.tokens.push(...i.remainingDedents),i.remainingDedents=[];let{indentTokenType:n,dedentTokenType:a}=this.indentationTokenBuilder,s=n.tokenTypeIdx,l=a.tokenTypeIdx,u=[],h=r.tokens.length-1;for(let d=0;d<h;d++){let f=r.tokens[d],p=r.tokens[d+1];if(f.tokenTypeIdx===s&&p.tokenTypeIdx===l){d++;continue}u.push(f)}return h>=0&&u.push(r.tokens[h]),r.tokens=u,r}},HG={};xf(HG,{AstUtils:o(()=>m$,"AstUtils"),BiMap:o(()=>$5,"BiMap"),Cancellation:o(()=>Ii,"Cancellation"),ContextCache:o(()=>jA,"ContextCache"),CstUtils:o(()=>d$,"CstUtils"),DONE_RESULT:o(()=>as,"DONE_RESULT"),Deferred:o(()=>mh,"Deferred"),Disposable:o(()=>F0,"Disposable"),DisposableCache:o(()=>YA,"DisposableCache"),DocumentCache:o(()=>C3e,"DocumentCache"),EMPTY_STREAM:o(()=>H1,"EMPTY_STREAM"),ErrorWithLocation:o(()=>eA,"ErrorWithLocation"),GrammarUtils:o(()=>U$,"GrammarUtils"),MultiMap:o(()=>gh,"MultiMap"),OperationCancelled:o(()=>Zc,"OperationCancelled"),Reduction:o(()=>iT,"Reduction"),RegExpUtils:o(()=>Y$,"RegExpUtils"),SimpleCache:o(()=>LG,"SimpleCache"),StreamImpl:o(()=>Kc,"StreamImpl"),TreeStreamImpl:o(()=>Y1,"TreeStreamImpl"),URI:o(()=>fo,"URI"),UriTrie:o(()=>DG,"UriTrie"),UriUtils:o(()=>os,"UriUtils"),WorkspaceCache:o(()=>MG,"WorkspaceCache"),assertCondition:o(()=>H$,"assertCondition"),assertUnreachable:o(()=>bf,"assertUnreachable"),delayNextTick:o(()=>UA,"delayNextTick"),interruptAndCheck:o(()=>la,"interruptAndCheck"),isOperationCancelled:o(()=>cm,"isOperationCancelled"),loadGrammarFromJson:o(()=>xo,"loadGrammarFromJson"),setInterruptionPeriod:o(()=>EG,"setInterruptionPeriod"),startCancelableOperation:o(()=>HA,"startCancelableOperation"),stream:o(()=>gi,"stream")});W5(HG,XA);eEe=class{static{o(this,"EmptyFileSystemProvider")}static{S(this,"EmptyFileSystemProvider")}stat(e){throw new Error("No file system is available.")}statSync(e){throw new Error("No file system is available.")}async exists(){return!1}existsSync(){return!1}readBinary(){throw new Error("No file system is available.")}readBinarySync(){throw new Error("No file system is available.")}readFile(){throw new Error("No file system is available.")}readFileSync(){throw new Error("No file system is available.")}async readDirectory(){return[]}readDirectorySync(){return[]}},fn={fileSystemProvider:S(()=>new eEe,"fileSystemProvider")},Evt={Grammar:S(()=>{},"Grammar"),LanguageMetaData:S(()=>({caseInsensitive:!1,fileExtensions:[".langium"],languageId:"langium"}),"LanguageMetaData")},Avt={AstReflection:S(()=>new P$,"AstReflection")};o(tEe,"createMinimalGrammarServices");S(tEe,"createMinimalGrammarServices");o(xo,"loadGrammarFromJson");S(xo,"loadGrammarFromJson");W5(uve,HG);_vt=class{static{o(this,"DefaultLangiumProfiler")}static{S(this,"DefaultLangiumProfiler")}constructor(e){this.activeCategories=new Set,this.allCategories=new Set(["validating","parsing","linking"]),this.activeCategories=e??new Set(this.allCategories),this.records=new gh}isActive(e){return this.activeCategories.has(e)}start(...e){e?e.forEach(t=>this.activeCategories.add(t)):this.activeCategories=new Set(this.allCategories)}stop(...e){e?e.forEach(t=>this.activeCategories.delete(t)):this.activeCategories.clear()}createTask(e,t){if(!this.isActive(e))throw new Error(`Category "${e}" is not active.`);return console.log(`Creating profiling task for '${e}.${t}'.`),new rEe(r=>this.records.add(e,this.dumpRecord(e,r)),t)}dumpRecord(e,t){console.info(`Task ${e}.${t.identifier} executed in ${t.duration.toFixed(2)}ms and ended at ${t.date.toISOString()}`);let r=[];for(let a of t.entries.keys()){let s=t.entries.get(a),l=s.reduce((u,h)=>u+h);r.push({name:`${t.identifier}.${a}`,count:s.length,duration:l})}let i=t.duration-r.map(a=>a.duration).reduce((a,s)=>a+s,0);r.push({name:t.identifier,count:1,duration:i}),r.sort((a,s)=>s.duration-a.duration);function n(a){return Math.round(100*a)/100}return o(n,"Round"),S(n,"Round"),console.table(r.map(a=>({Element:a.name,Count:a.count,"Self %":n(100*a.duration/t.duration),"Time (ms)":n(a.duration)}))),t}getRecords(...e){return e.length===0?this.records.values():this.records.entries().filter(t=>e.some(r=>r===t[0])).flatMap(t=>t[1])}},rEe=class{static{o(this,"ProfilingTask")}static{S(this,"ProfilingTask")}constructor(e,t){this.stack=[],this.entries=new gh,this.addRecord=e,this.identifier=t}start(){if(this.startTime!==void 0)throw new Error(`Task "${this.identifier}" is already started.`);this.startTime=performance.now()}stop(){if(this.startTime===void 0)throw new Error(`Task "${this.identifier}" was not started.`);if(this.stack.length!==0)throw new Error(`Task "${this.identifier}" cannot be stopped before sub-task(s): ${this.stack.map(t=>t.id).join(", ")}.`);let e={identifier:this.identifier,date:new Date,duration:performance.now()-this.startTime,entries:this.entries};this.addRecord(e),this.startTime=void 0,this.entries.clear()}startSubTask(e){this.stack.push({id:e,start:performance.now(),content:0})}stopSubTask(e){let t=this.stack.pop();if(!t)throw new Error(`Task "${this.identifier}.${e}" was not started.`);if(t.id!==e)throw new Error(`Sub-Task "${t.id}" is not already stopped.`);let r=performance.now()-t.start;this.stack.at(-1)!==void 0&&(this.stack[this.stack.length-1].content+=r);let i=r-t.content;this.entries.add(e,i)}};(e=>{e.Terminals={ARROW_DIRECTION:/L|R|T|B/,ARROW_GROUP:/\{group\}/,ARROW_INTO:/<|>/,ACC_DESCR:/[\t ]*accDescr(?:[\t ]*:([^\n\r]*?(?=%%)|[^\n\r]*)|\s*{([^}]*)})/,ACC_TITLE:/[\t ]*accTitle[\t ]*:(?:[^\n\r]*?(?=%%)|[^\n\r]*)/,TITLE:/[\t ]*title(?:[\t ][^\n\r]*?(?=%%)|[\t ][^\n\r]*|)/,STRING:/"([^"\\]|\\.)*"|'([^'\\]|\\.)*'/,ID:/[\w]([-\w]*\w)?/,NEWLINE:/\r?\n/,WHITESPACE:/[\t ]+/,YAML:/---[\t ]*\r?\n(?:[\S\s]*?\r?\n)?---(?:\r?\n|(?!\S))/,DIRECTIVE:/[\t ]*%%{[\S\s]*?}%%(?:\r?\n|(?!\S))/,SINGLE_LINE_COMMENT:/[\t ]*%%[^\n\r]*/,ARCH_ICON:/\([\w-:]+\)/,ARCH_TITLE:/\[(?:"([^"\\]|\\.)*"|'([^'\\]|\\.)*'|[\w ]+)\]/}})(QF||(QF={}));(e=>{e.Terminals={EM_ID:/[_a-zA-Z][\w_]*/,EM_FID:/\d{1,3}/,EM_DATA_INLINE:/\{(.*)\}|"(.*)"|'(.*)'/,EM_DATA_BLOCK:/\{[\t ]*\r?\n(?:[\S\s]*?\r?\n)?\}(?:\r?\n|(?!\S))/,EM_ACC_DESCR:/[\t ]*accDescr(?:[\t ]*:([^\n\r]*?(?=%%)|[^\n\r]*)|\s*{([^}]*)})/,EM_ACC_TITLE:/[\t ]*accTitle[\t ]*:(?:[^\n\r]*?(?=%%)|[^\n\r]*)/,EM_TITLE:/[\t ]*title(?:[\t ][^\n\r]*?(?=%%)|[\t ][^\n\r]*|)/,EM_WS:/\s+/,EM_YAML:/---[\t ]*\r?\n(?:[\S\s]*?\r?\n)?---(?:\r?\n|(?!\S))/,EM_DIRECTIVE:/[\t ]*%%{[\S\s]*?}%%(?:\r?\n|(?!\S))/,EM_SINGLE_LINE_COMMENT:/[\t ]*%%[^\n\r]*/,EM_ML_COMMENT:/\/\*[\s\S]*?\*\//,EM_SL_COMMENT:/\/\/[^\n\r]*/}})(JF||(JF={}));(e=>{e.Terminals={ACC_DESCR:/[\t ]*accDescr(?:[\t ]*:([^\n\r]*?(?=%%)|[^\n\r]*)|\s*{([^}]*)})/,ACC_TITLE:/[\t ]*accTitle[\t ]*:(?:[^\n\r]*?(?=%%)|[^\n\r]*)/,TITLE:/[\t ]*title(?:[\t ][^\n\r]*?(?=%%)|[\t ][^\n\r]*|)/,INT:/0|[1-9][0-9]*(?!\.)/,STRING:/"([^"\\]|\\.)*"|'([^'\\]|\\.)*'/,NEWLINE:/\r?\n/,WHITESPACE:/[\t ]+/,YAML:/---[\t ]*\r?\n(?:[\S\s]*?\r?\n)?---(?:\r?\n|(?!\S))/,DIRECTIVE:/[\t ]*%%{[\S\s]*?}%%(?:\r?\n|(?!\S))/,SINGLE_LINE_COMMENT:/[\t ]*%%[^\n\r]*/,REFERENCE:/\w([-\./\w]*[-\w])?/}})(e$||(e$={}));(e=>{e.Terminals={ACC_DESCR:/[\t ]*accDescr(?:[\t ]*:([^\n\r]*?(?=%%)|[^\n\r]*)|\s*{([^}]*)})/,ACC_TITLE:/[\t ]*accTitle[\t ]*:(?:[^\n\r]*?(?=%%)|[^\n\r]*)/,TITLE:/[\t ]*title(?:[\t ][^\n\r]*?(?=%%)|[\t ][^\n\r]*|)/,NEWLINE:/\r?\n/,WHITESPACE:/[\t ]+/,YAML:/---[\t ]*\r?\n(?:[\S\s]*?\r?\n)?---(?:\r?\n|(?!\S))/,DIRECTIVE:/[\t ]*%%{[\S\s]*?}%%(?:\r?\n|(?!\S))/,SINGLE_LINE_COMMENT:/[\t ]*%%[^\n\r]*/}})(t$||(t$={}));(e=>{e.Terminals={ACC_DESCR:/[\t ]*accDescr(?:[\t ]*:([^\n\r]*?(?=%%)|[^\n\r]*)|\s*{([^}]*)})/,ACC_TITLE:/[\t ]*accTitle[\t ]*:(?:[^\n\r]*?(?=%%)|[^\n\r]*)/,TITLE:/[\t ]*title(?:[\t ][^\n\r]*?(?=%%)|[\t ][^\n\r]*|)/,INT:/0|[1-9][0-9]*(?!\.)/,STRING:/"([^"\\]|\\.)*"|'([^'\\]|\\.)*'/,NEWLINE:/\r?\n/,WHITESPACE:/[\t ]+/,YAML:/---[\t ]*\r?\n(?:[\S\s]*?\r?\n)?---(?:\r?\n|(?!\S))/,DIRECTIVE:/[\t ]*%%{[\S\s]*?}%%(?:\r?\n|(?!\S))/,SINGLE_LINE_COMMENT:/[\t ]*%%[^\n\r]*/}})(r$||(r$={}));(e=>{e.Terminals={NUMBER_PIE:/(?:-?[0-9]+\.[0-9]+(?!\.))|(?:-?(0|[1-9][0-9]*)(?!\.))/,ACC_DESCR:/[\t ]*accDescr(?:[\t ]*:([^\n\r]*?(?=%%)|[^\n\r]*)|\s*{([^}]*)})/,ACC_TITLE:/[\t ]*accTitle[\t ]*:(?:[^\n\r]*?(?=%%)|[^\n\r]*)/,TITLE:/[\t ]*title(?:[\t ][^\n\r]*?(?=%%)|[\t ][^\n\r]*|)/,STRING:/"([^"\\]|\\.)*"|'([^'\\]|\\.)*'/,NEWLINE:/\r?\n/,WHITESPACE:/[\t ]+/,YAML:/---[\t ]*\r?\n(?:[\S\s]*?\r?\n)?---(?:\r?\n|(?!\S))/,DIRECTIVE:/[\t ]*%%{[\S\s]*?}%%(?:\r?\n|(?!\S))/,SINGLE_LINE_COMMENT:/[\t ]*%%[^\n\r]*/}})(i$||(i$={}));(e=>{e.Terminals={GRATICULE:/circle|polygon/,BOOLEAN:/true|false/,ACC_DESCR:/[\t ]*accDescr(?:[\t ]*:([^\n\r]*?(?=%%)|[^\n\r]*)|\s*{([^}]*)})/,ACC_TITLE:/[\t ]*accTitle[\t ]*:(?:[^\n\r]*?(?=%%)|[^\n\r]*)/,TITLE:/[\t ]*title(?:[\t ][^\n\r]*?(?=%%)|[\t ][^\n\r]*|)/,NUMBER:/(?:[0-9]+\.[0-9]+(?!\.))|(?:0|[1-9][0-9]*(?!\.))/,STRING:/"([^"\\]|\\.)*"|'([^'\\]|\\.)*'/,ID:/[\w]([-\w]*\w)?/,NEWLINE:/\r?\n/,WHITESPACE:/[\t ]+/,YAML:/---[\t ]*\r?\n(?:[\S\s]*?\r?\n)?---(?:\r?\n|(?!\S))/,DIRECTIVE:/[\t ]*%%{[\S\s]*?}%%(?:\r?\n|(?!\S))/,SINGLE_LINE_COMMENT:/[\t ]*%%[^\n\r]*/}})(n$||(n$={}));(e=>{e.Terminals={ACC_DESCR:/[\t ]*accDescr(?:[\t ]*:([^\n\r]*?(?=%%)|[^\n\r]*)|\s*{([^}]*)})/,ACC_TITLE:/[\t ]*accTitle[\t ]*:(?:[^\n\r]*?(?=%%)|[^\n\r]*)/,TITLE:/[\t ]*title(?:[\t ][^\n\r]*?(?=%%)|[\t ][^\n\r]*|)/,TREEMAP_KEYWORD:/treemap-beta|treemap/,CLASS_DEF:/classDef\s+([a-zA-Z_][a-zA-Z0-9_]+)(?:\s+([^;\r\n]*))?(?:;)?/,STYLE_SEPARATOR:/:::/,SEPARATOR:/:/,COMMA:/,/,INDENTATION:/[ \t]{1,}/,WS:/[ \t]+/,ML_COMMENT:/\%\%[^\n]*/,NL:/\r?\n/,ID2:/[a-zA-Z_][a-zA-Z0-9_]*/,NUMBER2:/[0-9_\.\,]+/,STRING2:/"[^"]*"|'[^']*'/}})(a$||(a$={}));(e=>{e.Terminals={ACC_DESCR:/[\t ]*accDescr(?:[\t ]*:([^\n\r]*?(?=%%)|[^\n\r]*)|\s*{([^}]*)})/,ACC_TITLE:/[\t ]*accTitle[\t ]*:(?:[^\n\r]*?(?=%%)|[^\n\r]*)/,TITLE:/[\t ]*title(?:[\t ][^\n\r]*?(?=%%)|[\t ][^\n\r]*|)/,INDENTATION:/[ \t]{1,}/,WS:/[ \t]+/,ML_COMMENT:/\%\%[^\n]*/,NL:/\r?\n/,STRING2:/"[^"]*"|'[^']*'/}})(s$||(s$={}));(e=>{e.Terminals={WARDLEY_NUMBER:/[0-9]+\.[0-9]+/,ARROW:/->/,LINK_PORT:/\+<>|\+>|\+</,LINK_ARROW:/-->|-\.->|>|\+'[^']*'<>|\+'[^']*'<|\+'[^']*'>/,LINK_LABEL:/;[^\n\r]+/,STRATEGY:/build|buy|outsource|market/,KW_WARDLEY:/wardley-beta/,KW_SIZE:/size/,KW_EVOLUTION:/evolution/,KW_ANCHOR:/anchor/,KW_COMPONENT:/component/,KW_LABEL:/label/,KW_INERTIA:/inertia/,KW_EVOLVE:/evolve/,KW_PIPELINE:/pipeline/,KW_NOTE:/note/,KW_ANNOTATIONS:/annotations/,KW_ANNOTATION:/annotation/,KW_ACCELERATOR:/accelerator/,KW_DEACCELERATOR:/deaccelerator/,NAME_WITH_SPACES:/(?!title\s|accTitle|accDescr)[A-Za-z](?:[A-Za-z0-9_()&]|-(?!>))*(?:[ \t]+[A-Za-z(](?:[A-Za-z0-9_()&]|-(?!>))*)*/,WS:/[ \t]+/,ACC_DESCR:/[\t ]*accDescr(?:[\t ]*:([^\n\r]*?(?=%%)|[^\n\r]*)|\s*{([^}]*)})/,ACC_TITLE:/[\t ]*accTitle[\t ]*:(?:[^\n\r]*?(?=%%)|[^\n\r]*)/,TITLE:/[\t ]*title(?:[\t ][^\n\r]*?(?=%%)|[\t ][^\n\r]*|)/,INT:/0|[1-9][0-9]*(?!\.)/,STRING:/"([^"\\]|\\.)*"|'([^'\\]|\\.)*'/,ID:/[\w]([-\w]*\w)?/,NEWLINE:/\r?\n/,WHITESPACE:/[\t ]+/,YAML:/---[\t ]*\r?\n(?:[\S\s]*?\r?\n)?---(?:\r?\n|(?!\S))/,DIRECTIVE:/[\t ]*%%{[\S\s]*?}%%(?:\r?\n|(?!\S))/,SINGLE_LINE_COMMENT:/[\t ]*%%[^\n\r]*/}})(o$||(o$={}));Dwr={...QF.Terminals,...JF.Terminals,...e$.Terminals,...t$.Terminals,...r$.Terminals,...i$.Terminals,...n$.Terminals,...s$.Terminals,...a$.Terminals,...o$.Terminals},TE={$type:"Accelerator",name:"name",x:"x",y:"y"},CE={$type:"Anchor",evolution:"evolution",name:"name",visibility:"visibility"},C2={$type:"Annotation",number:"number",text:"text",x:"x",y:"y"},rB={$type:"Annotations",x:"x",y:"y"},Yc={$type:"Architecture",accDescr:"accDescr",accTitle:"accTitle",edges:"edges",groups:"groups",junctions:"junctions",services:"services",title:"title"};o(iEe,"isArchitecture");S(iEe,"isArchitecture");kE={$type:"Axis",label:"label",name:"name"},eT={$type:"Branch",name:"name",order:"order"};o(nEe,"isBranch");S(nEe,"isBranch");Gye={$type:"Checkout",branch:"branch"},wE={$type:"CherryPicking",id:"id",parent:"parent",tags:"tags"},iB={$type:"ClassDefStatement",className:"className",styleText:"styleText"},_0={$type:"Commit",id:"id",message:"message",tags:"tags",type:"type"};o(aEe,"isCommit");S(aEe,"isCommit");SE={$type:"Common",accDescr:"accDescr",accTitle:"accTitle",title:"title"},s0={$type:"Component",decorator:"decorator",evolution:"evolution",inertia:"inertia",label:"label",name:"name",visibility:"visibility"},EE={$type:"Curve",entries:"entries",label:"label",name:"name"},AE={$type:"Deaccelerator",name:"name",x:"x",y:"y"},Vye={$type:"Decorator",strategy:"strategy"},w1={$type:"Direction",accDescr:"accDescr",accTitle:"accTitle",dir:"dir",statements:"statements",title:"title"},Wc={$type:"Edge",lhsDir:"lhsDir",lhsGroup:"lhsGroup",lhsId:"lhsId",lhsInto:"lhsInto",rhsDir:"rhsDir",rhsGroup:"rhsGroup",rhsId:"rhsId",rhsInto:"rhsInto",title:"title"},p0={$type:"EmDataEntity",dataBlockValue:"dataBlockValue",dataType:"dataType",name:"name"},af={$type:"EmFrame"},k2={$type:"EmGwt",givenStatements:"givenStatements",sourceFrame:"sourceFrame",thenStatements:"thenStatements",whenStatements:"whenStatements"},Wye={$type:"EmGwtStatement",entityIdentifier:"entityIdentifier"},nB={$type:"EmModelEntity",name:"name"};o(sEe,"isEmModelEntityType");S(sEe,"isEmModelEntityType");_E={$type:"EmNoteEntity",dataBlockValue:"dataBlockValue",dataType:"dataType",sourceFrame:"sourceFrame"},ih={$type:"EmResetFrame",dataInlineValue:"dataInlineValue",dataReference:"dataReference",dataType:"dataType",entityIdentifier:"entityIdentifier",modelEntityType:"modelEntityType",name:"name",sourceFrames:"sourceFrames"};o(JA,"isEmResetFrame");S(JA,"isEmResetFrame");nf={$type:"EmTimeFrame",dataInlineValue:"dataInlineValue",dataReference:"dataReference",dataType:"dataType",entityIdentifier:"entityIdentifier",modelEntityType:"modelEntityType",name:"name",sourceFrames:"sourceFrames"},aB={$type:"Entry",axis:"axis",value:"value"},Uc={$type:"EventModel",accDescr:"accDescr",accTitle:"accTitle",dataEntities:"dataEntities",frames:"frames",gwtEntities:"gwtEntities",modelEntities:"modelEntities",noteEntities:"noteEntities",title:"title"},qye={$type:"Evolution",stages:"stages"},DE={$type:"EvolutionStage",boundary:"boundary",name:"name",secondName:"secondName"},sB={$type:"Evolve",component:"component",target:"target"},df={$type:"GitGraph",accDescr:"accDescr",accTitle:"accTitle",statements:"statements",title:"title"};o(oEe,"isGitGraph");S(oEe,"isGitGraph");w2={$type:"Group",icon:"icon",id:"id",in:"in",title:"title"},G1={$type:"Info",accDescr:"accDescr",accTitle:"accTitle",title:"title"};o(lEe,"isInfo");S(lEe,"isInfo");S2={$type:"Item",classSelector:"classSelector",name:"name"},oB={$type:"Junction",id:"id",in:"in"},E2={$type:"Label",negX:"negX",negY:"negY",offsetX:"offsetX",offsetY:"offsetY"},RE={$type:"Leaf",classSelector:"classSelector",name:"name",value:"value"},o0={$type:"Link",arrow:"arrow",from:"from",fromPort:"fromPort",linkLabel:"linkLabel",to:"to",toPort:"toPort"},D0={$type:"Merge",branch:"branch",id:"id",tags:"tags",type:"type"};o(cEe,"isMerge");S(cEe,"isMerge");LE={$type:"Note",evolution:"evolution",text:"text",visibility:"visibility"},lB={$type:"Option",name:"name",value:"value"},R0={$type:"Packet",accDescr:"accDescr",accTitle:"accTitle",blocks:"blocks",title:"title"};o(uEe,"isPacket");S(uEe,"isPacket");L0={$type:"PacketBlock",bits:"bits",end:"end",label:"label",start:"start"};o(hEe,"isPacketBlock");S(hEe,"isPacketBlock");ff={$type:"Pie",accDescr:"accDescr",accTitle:"accTitle",sections:"sections",showData:"showData",title:"title"};o(dEe,"isPie");S(dEe,"isPie");tT={$type:"PieSection",label:"label",value:"value"};o(fEe,"isPieSection");S(fEe,"isPieSection");cB={$type:"Pipeline",components:"components",parent:"parent"},ME={$type:"PipelineComponent",evolution:"evolution",label:"label",name:"name"},sf={$type:"Radar",accDescr:"accDescr",accTitle:"accTitle",axes:"axes",curves:"curves",options:"options",title:"title"},uB={$type:"Section",classSelector:"classSelector",name:"name"},S1={$type:"Service",icon:"icon",iconText:"iconText",id:"id",in:"in",title:"title"},hB={$type:"Size",height:"height",width:"width"},m0={$type:"Statement"},M0={$type:"Treemap",accDescr:"accDescr",accTitle:"accTitle",title:"title",TreemapRows:"TreemapRows"};o(pEe,"isTreemap");S(pEe,"isTreemap");dB={$type:"TreemapRow",indent:"indent",item:"item"},e5={$type:"TreeNode",indent:"indent",name:"name"},M1={$type:"TreeView",accDescr:"accDescr",accTitle:"accTitle",nodes:"nodes",title:"title"},oa={$type:"Wardley",accDescr:"accDescr",accelerators:"accelerators",accTitle:"accTitle",anchors:"anchors",annotation:"annotation",annotations:"annotations",components:"components",deaccelerators:"deaccelerators",evolution:"evolution",evolves:"evolves",links:"links",notes:"notes",pipelines:"pipelines",size:"size",title:"title"};o(mEe,"isWardley");S(mEe,"isWardley");gEe=class extends p${static{o(this,"MermaidAstReflection")}constructor(){super(...arguments),this.types={Accelerator:{name:TE.$type,properties:{name:{name:TE.name},x:{name:TE.x},y:{name:TE.y}},superTypes:[]},Anchor:{name:CE.$type,properties:{evolution:{name:CE.evolution},name:{name:CE.name},visibility:{name:CE.visibility}},superTypes:[]},Annotation:{name:C2.$type,properties:{number:{name:C2.number},text:{name:C2.text},x:{name:C2.x},y:{name:C2.y}},superTypes:[]},Annotations:{name:rB.$type,properties:{x:{name:rB.x},y:{name:rB.y}},superTypes:[]},Architecture:{name:Yc.$type,properties:{accDescr:{name:Yc.accDescr},accTitle:{name:Yc.accTitle},edges:{name:Yc.edges,defaultValue:[]},groups:{name:Yc.groups,defaultValue:[]},junctions:{name:Yc.junctions,defaultValue:[]},services:{name:Yc.services,defaultValue:[]},title:{name:Yc.title}},superTypes:[]},Axis:{name:kE.$type,properties:{label:{name:kE.label},name:{name:kE.name}},superTypes:[]},Branch:{name:eT.$type,properties:{name:{name:eT.name},order:{name:eT.order}},superTypes:[m0.$type]},Checkout:{name:Gye.$type,properties:{branch:{name:Gye.branch}},superTypes:[m0.$type]},CherryPicking:{name:wE.$type,properties:{id:{name:wE.id},parent:{name:wE.parent},tags:{name:wE.tags,defaultValue:[]}},superTypes:[m0.$type]},ClassDefStatement:{name:iB.$type,properties:{className:{name:iB.className},styleText:{name:iB.styleText}},superTypes:[]},Commit:{name:_0.$type,properties:{id:{name:_0.id},message:{name:_0.message},tags:{name:_0.tags,defaultValue:[]},type:{name:_0.type}},superTypes:[m0.$type]},Common:{name:SE.$type,properties:{accDescr:{name:SE.accDescr},accTitle:{name:SE.accTitle},title:{name:SE.title}},superTypes:[]},Component:{name:s0.$type,properties:{decorator:{name:s0.decorator},evolution:{name:s0.evolution},inertia:{name:s0.inertia,defaultValue:!1},label:{name:s0.label},name:{name:s0.name},visibility:{name:s0.visibility}},superTypes:[]},Curve:{name:EE.$type,properties:{entries:{name:EE.entries,defaultValue:[]},label:{name:EE.label},name:{name:EE.name}},superTypes:[]},Deaccelerator:{name:AE.$type,properties:{name:{name:AE.name},x:{name:AE.x},y:{name:AE.y}},superTypes:[]},Decorator:{name:Vye.$type,properties:{strategy:{name:Vye.strategy}},superTypes:[]},Direction:{name:w1.$type,properties:{accDescr:{name:w1.accDescr},accTitle:{name:w1.accTitle},dir:{name:w1.dir},statements:{name:w1.statements,defaultValue:[]},title:{name:w1.title}},superTypes:[df.$type]},Edge:{name:Wc.$type,properties:{lhsDir:{name:Wc.lhsDir},lhsGroup:{name:Wc.lhsGroup,defaultValue:!1},lhsId:{name:Wc.lhsId},lhsInto:{name:Wc.lhsInto,defaultValue:!1},rhsDir:{name:Wc.rhsDir},rhsGroup:{name:Wc.rhsGroup,defaultValue:!1},rhsId:{name:Wc.rhsId},rhsInto:{name:Wc.rhsInto,defaultValue:!1},title:{name:Wc.title}},superTypes:[]},EmDataEntity:{name:p0.$type,properties:{dataBlockValue:{name:p0.dataBlockValue},dataType:{name:p0.dataType},name:{name:p0.name}},superTypes:[]},EmFrame:{name:af.$type,properties:{},superTypes:[]},EmGwt:{name:k2.$type,properties:{givenStatements:{name:k2.givenStatements,defaultValue:[]},sourceFrame:{name:k2.sourceFrame,referenceType:af.$type},thenStatements:{name:k2.thenStatements,defaultValue:[]},whenStatements:{name:k2.whenStatements,defaultValue:[]}},superTypes:[]},EmGwtStatement:{name:Wye.$type,properties:{entityIdentifier:{name:Wye.entityIdentifier,referenceType:nB.$type}},superTypes:[]},EmModelEntity:{name:nB.$type,properties:{name:{name:nB.name}},superTypes:[]},EmNoteEntity:{name:_E.$type,properties:{dataBlockValue:{name:_E.dataBlockValue},dataType:{name:_E.dataType},sourceFrame:{name:_E.sourceFrame,referenceType:af.$type}},superTypes:[]},EmResetFrame:{name:ih.$type,properties:{dataInlineValue:{name:ih.dataInlineValue},dataReference:{name:ih.dataReference,referenceType:p0.$type},dataType:{name:ih.dataType},entityIdentifier:{name:ih.entityIdentifier},modelEntityType:{name:ih.modelEntityType},name:{name:ih.name},sourceFrames:{name:ih.sourceFrames,defaultValue:[],referenceType:af.$type}},superTypes:[af.$type]},EmTimeFrame:{name:nf.$type,properties:{dataInlineValue:{name:nf.dataInlineValue},dataReference:{name:nf.dataReference,referenceType:p0.$type},dataType:{name:nf.dataType},entityIdentifier:{name:nf.entityIdentifier},modelEntityType:{name:nf.modelEntityType},name:{name:nf.name},sourceFrames:{name:nf.sourceFrames,defaultValue:[],referenceType:af.$type}},superTypes:[af.$type]},Entry:{name:aB.$type,properties:{axis:{name:aB.axis,referenceType:kE.$type},value:{name:aB.value}},superTypes:[]},EventModel:{name:Uc.$type,properties:{accDescr:{name:Uc.accDescr},accTitle:{name:Uc.accTitle},dataEntities:{name:Uc.dataEntities,defaultValue:[]},frames:{name:Uc.frames,defaultValue:[]},gwtEntities:{name:Uc.gwtEntities,defaultValue:[]},modelEntities:{name:Uc.modelEntities,defaultValue:[]},noteEntities:{name:Uc.noteEntities,defaultValue:[]},title:{name:Uc.title}},superTypes:[]},Evolution:{name:qye.$type,properties:{stages:{name:qye.stages,defaultValue:[]}},superTypes:[]},EvolutionStage:{name:DE.$type,properties:{boundary:{name:DE.boundary},name:{name:DE.name},secondName:{name:DE.secondName}},superTypes:[]},Evolve:{name:sB.$type,properties:{component:{name:sB.component},target:{name:sB.target}},superTypes:[]},GitGraph:{name:df.$type,properties:{accDescr:{name:df.accDescr},accTitle:{name:df.accTitle},statements:{name:df.statements,defaultValue:[]},title:{name:df.title}},superTypes:[]},Group:{name:w2.$type,properties:{icon:{name:w2.icon},id:{name:w2.id},in:{name:w2.in},title:{name:w2.title}},superTypes:[]},Info:{name:G1.$type,properties:{accDescr:{name:G1.accDescr},accTitle:{name:G1.accTitle},title:{name:G1.title}},superTypes:[]},Item:{name:S2.$type,properties:{classSelector:{name:S2.classSelector},name:{name:S2.name}},superTypes:[]},Junction:{name:oB.$type,properties:{id:{name:oB.id},in:{name:oB.in}},superTypes:[]},Label:{name:E2.$type,properties:{negX:{name:E2.negX,defaultValue:!1},negY:{name:E2.negY,defaultValue:!1},offsetX:{name:E2.offsetX},offsetY:{name:E2.offsetY}},superTypes:[]},Leaf:{name:RE.$type,properties:{classSelector:{name:RE.classSelector},name:{name:RE.name},value:{name:RE.value}},superTypes:[S2.$type]},Link:{name:o0.$type,properties:{arrow:{name:o0.arrow},from:{name:o0.from},fromPort:{name:o0.fromPort},linkLabel:{name:o0.linkLabel},to:{name:o0.to},toPort:{name:o0.toPort}},superTypes:[]},Merge:{name:D0.$type,properties:{branch:{name:D0.branch},id:{name:D0.id},tags:{name:D0.tags,defaultValue:[]},type:{name:D0.type}},superTypes:[m0.$type]},Note:{name:LE.$type,properties:{evolution:{name:LE.evolution},text:{name:LE.text},visibility:{name:LE.visibility}},superTypes:[]},Option:{name:lB.$type,properties:{name:{name:lB.name},value:{name:lB.value,defaultValue:!1}},superTypes:[]},Packet:{name:R0.$type,properties:{accDescr:{name:R0.accDescr},accTitle:{name:R0.accTitle},blocks:{name:R0.blocks,defaultValue:[]},title:{name:R0.title}},superTypes:[]},PacketBlock:{name:L0.$type,properties:{bits:{name:L0.bits},end:{name:L0.end},label:{name:L0.label},start:{name:L0.start}},superTypes:[]},Pie:{name:ff.$type,properties:{accDescr:{name:ff.accDescr},accTitle:{name:ff.accTitle},sections:{name:ff.sections,defaultValue:[]},showData:{name:ff.showData,defaultValue:!1},title:{name:ff.title}},superTypes:[]},PieSection:{name:tT.$type,properties:{label:{name:tT.label},value:{name:tT.value}},superTypes:[]},Pipeline:{name:cB.$type,properties:{components:{name:cB.components,defaultValue:[]},parent:{name:cB.parent}},superTypes:[]},PipelineComponent:{name:ME.$type,properties:{evolution:{name:ME.evolution},label:{name:ME.label},name:{name:ME.name}},superTypes:[]},Radar:{name:sf.$type,properties:{accDescr:{name:sf.accDescr},accTitle:{name:sf.accTitle},axes:{name:sf.axes,defaultValue:[]},curves:{name:sf.curves,defaultValue:[]},options:{name:sf.options,defaultValue:[]},title:{name:sf.title}},superTypes:[]},Section:{name:uB.$type,properties:{classSelector:{name:uB.classSelector},name:{name:uB.name}},superTypes:[S2.$type]},Service:{name:S1.$type,properties:{icon:{name:S1.icon},iconText:{name:S1.iconText},id:{name:S1.id},in:{name:S1.in},title:{name:S1.title}},superTypes:[]},Size:{name:hB.$type,properties:{height:{name:hB.height},width:{name:hB.width}},superTypes:[]},Statement:{name:m0.$type,properties:{},superTypes:[]},TreeNode:{name:e5.$type,properties:{indent:{name:e5.indent},name:{name:e5.name}},superTypes:[]},TreeView:{name:M1.$type,properties:{accDescr:{name:M1.accDescr},accTitle:{name:M1.accTitle},nodes:{name:M1.nodes,defaultValue:[]},title:{name:M1.title}},superTypes:[]},Treemap:{name:M0.$type,properties:{accDescr:{name:M0.accDescr},accTitle:{name:M0.accTitle},title:{name:M0.title},TreemapRows:{name:M0.TreemapRows,defaultValue:[]}},superTypes:[]},TreemapRow:{name:dB.$type,properties:{indent:{name:dB.indent},item:{name:dB.item}},superTypes:[]},Wardley:{name:oa.$type,properties:{accDescr:{name:oa.accDescr},accelerators:{name:oa.accelerators,defaultValue:[]},accTitle:{name:oa.accTitle},anchors:{name:oa.anchors,defaultValue:[]},annotation:{name:oa.annotation,defaultValue:[]},annotations:{name:oa.annotations,defaultValue:[]},components:{name:oa.components,defaultValue:[]},deaccelerators:{name:oa.deaccelerators,defaultValue:[]},evolution:{name:oa.evolution},evolves:{name:oa.evolves,defaultValue:[]},links:{name:oa.links,defaultValue:[]},notes:{name:oa.notes,defaultValue:[]},pipelines:{name:oa.pipelines,defaultValue:[]},size:{name:oa.size},title:{name:oa.title}},superTypes:[]}}}static{S(this,"MermaidAstReflection")}},bo=new gEe,Dvt=S(()=>Uye??(Uye=xo(`{"$type":"Grammar","isDeclared":true,"name":"ArchitectureGrammar","imports":[],"rules":[{"$type":"ParserRule","entry":true,"name":"Architecture","definition":{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@23"},"arguments":[],"cardinality":"*"},{"$type":"Keyword","value":"architecture-beta"},{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@23"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@13"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@1"},"arguments":[]}],"cardinality":"*"}]},"fragment":false,"parameters":[]},{"$type":"ParserRule","fragment":true,"name":"Statement","definition":{"$type":"Alternatives","elements":[{"$type":"Assignment","feature":"groups","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@5"},"arguments":[]}},{"$type":"Assignment","feature":"services","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@6"},"arguments":[]}},{"$type":"Assignment","feature":"junctions","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@7"},"arguments":[]}},{"$type":"Assignment","feature":"edges","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@8"},"arguments":[]}}]},"entry":false,"parameters":[]},{"$type":"ParserRule","fragment":true,"name":"LeftPort","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":":"},{"$type":"Assignment","feature":"lhsDir","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@9"},"arguments":[]}}]},"entry":false,"parameters":[]},{"$type":"ParserRule","fragment":true,"name":"RightPort","definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"rhsDir","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@9"},"arguments":[]}},{"$type":"Keyword","value":":"}]},"entry":false,"parameters":[]},{"$type":"ParserRule","fragment":true,"name":"Arrow","definition":{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@2"},"arguments":[]},{"$type":"Assignment","feature":"lhsInto","operator":"?=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@11"},"arguments":[]},"cardinality":"?"},{"$type":"Alternatives","elements":[{"$type":"Keyword","value":"--"},{"$type":"Group","elements":[{"$type":"Keyword","value":"-"},{"$type":"Assignment","feature":"title","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@29"},"arguments":[]}},{"$type":"Keyword","value":"-"}]}]},{"$type":"Assignment","feature":"rhsInto","operator":"?=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@11"},"arguments":[]},"cardinality":"?"},{"$type":"RuleCall","rule":{"$ref":"#/rules@3"},"arguments":[]}]},"entry":false,"parameters":[]},{"$type":"ParserRule","name":"Group","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"group"},{"$type":"Assignment","feature":"id","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@22"},"arguments":[]}},{"$type":"Assignment","feature":"icon","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@28"},"arguments":[]},"cardinality":"?"},{"$type":"Assignment","feature":"title","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@29"},"arguments":[]},"cardinality":"?"},{"$type":"Group","elements":[{"$type":"Keyword","value":"in"},{"$type":"Assignment","feature":"in","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@22"},"arguments":[]}}],"cardinality":"?"},{"$type":"RuleCall","rule":{"$ref":"#/rules@12"},"arguments":[]}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"Service","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"service"},{"$type":"Assignment","feature":"id","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@22"},"arguments":[]}},{"$type":"Alternatives","elements":[{"$type":"Assignment","feature":"iconText","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@21"},"arguments":[]}},{"$type":"Assignment","feature":"icon","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@28"},"arguments":[]}}],"cardinality":"?"},{"$type":"Assignment","feature":"title","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@29"},"arguments":[]},"cardinality":"?"},{"$type":"Group","elements":[{"$type":"Keyword","value":"in"},{"$type":"Assignment","feature":"in","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@22"},"arguments":[]}}],"cardinality":"?"},{"$type":"RuleCall","rule":{"$ref":"#/rules@12"},"arguments":[]}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"Junction","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"junction"},{"$type":"Assignment","feature":"id","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@22"},"arguments":[]}},{"$type":"Group","elements":[{"$type":"Keyword","value":"in"},{"$type":"Assignment","feature":"in","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@22"},"arguments":[]}}],"cardinality":"?"},{"$type":"RuleCall","rule":{"$ref":"#/rules@12"},"arguments":[]}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"Edge","definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"lhsId","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@22"},"arguments":[]}},{"$type":"Assignment","feature":"lhsGroup","operator":"?=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@10"},"arguments":[]},"cardinality":"?"},{"$type":"RuleCall","rule":{"$ref":"#/rules@4"},"arguments":[]},{"$type":"Assignment","feature":"rhsId","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@22"},"arguments":[]}},{"$type":"Assignment","feature":"rhsGroup","operator":"?=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@10"},"arguments":[]},"cardinality":"?"},{"$type":"RuleCall","rule":{"$ref":"#/rules@12"},"arguments":[]}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"TerminalRule","name":"ARROW_DIRECTION","definition":{"$type":"TerminalAlternatives","elements":[{"$type":"TerminalAlternatives","elements":[{"$type":"TerminalAlternatives","elements":[{"$type":"CharacterRange","left":{"$type":"Keyword","value":"L"},"parenthesized":false},{"$type":"CharacterRange","left":{"$type":"Keyword","value":"R"},"parenthesized":false}],"parenthesized":false},{"$type":"CharacterRange","left":{"$type":"Keyword","value":"T"},"parenthesized":false}],"parenthesized":false},{"$type":"CharacterRange","left":{"$type":"Keyword","value":"B"},"parenthesized":false}],"parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ARROW_GROUP","definition":{"$type":"RegexToken","regex":"/\\\\{group\\\\}/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ARROW_INTO","definition":{"$type":"RegexToken","regex":"/<|>/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"ParserRule","name":"EOL","dataType":"string","definition":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@23"},"arguments":[],"cardinality":"+"},{"$type":"EndOfFile"}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","fragment":true,"name":"TitleAndAccessibilities","definition":{"$type":"Group","elements":[{"$type":"Alternatives","elements":[{"$type":"Assignment","feature":"accDescr","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@15"},"arguments":[]}},{"$type":"Assignment","feature":"accTitle","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@16"},"arguments":[]}},{"$type":"Assignment","feature":"title","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}}]},{"$type":"RuleCall","rule":{"$ref":"#/rules@12"},"arguments":[]}],"cardinality":"+"},"entry":false,"parameters":[]},{"$type":"TerminalRule","name":"BOOLEAN","type":{"$type":"ReturnType","name":"boolean"},"definition":{"$type":"TerminalAlternatives","elements":[{"$type":"CharacterRange","left":{"$type":"Keyword","value":"true"},"parenthesized":false},{"$type":"CharacterRange","left":{"$type":"Keyword","value":"false"},"parenthesized":false}],"parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ACC_DESCR","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*accDescr(?:[\\\\t ]*:([^\\\\n\\\\r]*?(?=%%)|[^\\\\n\\\\r]*)|\\\\s*{([^}]*)})/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ACC_TITLE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*accTitle[\\\\t ]*:(?:[^\\\\n\\\\r]*?(?=%%)|[^\\\\n\\\\r]*)/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"TITLE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*title(?:[\\\\t ][^\\\\n\\\\r]*?(?=%%)|[\\\\t ][^\\\\n\\\\r]*|)/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"FLOAT","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"RegexToken","regex":"/[0-9]+\\\\.[0-9]+(?!\\\\.)/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"INT","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"RegexToken","regex":"/0|[1-9][0-9]*(?!\\\\.)/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"NUMBER","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"TerminalAlternatives","elements":[{"$type":"TerminalRuleCall","rule":{"$ref":"#/rules@18"},"parenthesized":false},{"$type":"TerminalRuleCall","rule":{"$ref":"#/rules@19"},"parenthesized":false}],"parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"STRING","type":{"$type":"ReturnType","name":"string"},"definition":{"$type":"RegexToken","regex":"/\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\"|'([^'\\\\\\\\]|\\\\\\\\.)*'/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ID","type":{"$type":"ReturnType","name":"string"},"definition":{"$type":"RegexToken","regex":"/[\\\\w]([-\\\\w]*\\\\w)?/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"NEWLINE","definition":{"$type":"RegexToken","regex":"/\\\\r?\\\\n/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","hidden":true,"name":"WHITESPACE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]+/","parenthesized":false},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"YAML","definition":{"$type":"RegexToken","regex":"/---[\\\\t ]*\\\\r?\\\\n(?:[\\\\S\\\\s]*?\\\\r?\\\\n)?---(?:\\\\r?\\\\n|(?!\\\\S))/","parenthesized":false},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"DIRECTIVE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*%%{[\\\\S\\\\s]*?}%%(?:\\\\r?\\\\n|(?!\\\\S))/","parenthesized":false},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"SINGLE_LINE_COMMENT","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*%%[^\\\\n\\\\r]*/","parenthesized":false},"fragment":false},{"$type":"TerminalRule","name":"ARCH_ICON","definition":{"$type":"RegexToken","regex":"/\\\\([\\\\w-:]+\\\\)/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ARCH_TITLE","definition":{"$type":"RegexToken","regex":"/\\\\[(?:\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\"|'([^'\\\\\\\\]|\\\\\\\\.)*'|[\\\\w ]+)\\\\]/","parenthesized":false},"fragment":false,"hidden":false}],"interfaces":[],"types":[]}`)),"ArchitectureGrammarGrammar"),Rvt=S(()=>Hye??(Hye=xo('{"$type":"Grammar","isDeclared":true,"name":"EventModeling","interfaces":[{"$type":"Interface","name":"Common","attributes":[{"$type":"TypeAttribute","name":"accDescr","isOptional":true,"type":{"$type":"SimpleType","primitiveType":"string"}},{"$type":"TypeAttribute","name":"accTitle","isOptional":true,"type":{"$type":"SimpleType","primitiveType":"string"}},{"$type":"TypeAttribute","name":"title","isOptional":true,"type":{"$type":"SimpleType","primitiveType":"string"}}],"superTypes":[]}],"rules":[{"$type":"ParserRule","entry":true,"name":"EventModel","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"eventmodeling"},{"$type":"Alternatives","elements":[{"$type":"Assignment","feature":"accDescr","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@20"},"arguments":[]}},{"$type":"Assignment","feature":"accTitle","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@21"},"arguments":[]}},{"$type":"Assignment","feature":"title","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@22"},"arguments":[]}},{"$type":"Assignment","feature":"modelEntities","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@9"},"arguments":[]}},{"$type":"Assignment","feature":"frames","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@8"},"arguments":[]}},{"$type":"Assignment","feature":"dataEntities","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@10"},"arguments":[]}},{"$type":"Assignment","feature":"noteEntities","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@11"},"arguments":[]}},{"$type":"Assignment","feature":"gwtEntities","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@12"},"arguments":[]}}],"cardinality":"*"}]},"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"EmModelEntityType","dataType":"string","definition":{"$type":"Alternatives","elements":[{"$type":"Keyword","value":"rmo"},{"$type":"Keyword","value":"readmodel"},{"$type":"Keyword","value":"ui"},{"$type":"Keyword","value":"cmd"},{"$type":"Keyword","value":"command"},{"$type":"Keyword","value":"evt"},{"$type":"Keyword","value":"event"},{"$type":"Keyword","value":"pcr"},{"$type":"Keyword","value":"processor"}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"EmDataType","dataType":"string","definition":{"$type":"Alternatives","elements":[{"$type":"Keyword","value":"json"},{"$type":"Keyword","value":"jsobj"},{"$type":"Keyword","value":"figma"},{"$type":"Keyword","value":"salt"},{"$type":"Keyword","value":"uri"},{"$type":"Keyword","value":"md"},{"$type":"Keyword","value":"html"},{"$type":"Keyword","value":"text"}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","fragment":true,"name":"EmDataInline","definition":{"$type":"Group","elements":[{"$type":"Group","elements":[{"$type":"Keyword","value":"`"},{"$type":"Assignment","feature":"dataType","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@2"},"arguments":[]}},{"$type":"Keyword","value":"`"}],"cardinality":"?"},{"$type":"Assignment","feature":"dataInlineValue","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@18"},"arguments":[]}}]},"entry":false,"parameters":[]},{"$type":"ParserRule","fragment":true,"name":"EmDataBlock","definition":{"$type":"Group","elements":[{"$type":"Group","elements":[{"$type":"Keyword","value":"`"},{"$type":"Assignment","feature":"dataType","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@2"},"arguments":[]}},{"$type":"Keyword","value":"`"}],"cardinality":"?"},{"$type":"Assignment","feature":"dataBlockValue","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@19"},"arguments":[]}}]},"entry":false,"parameters":[]},{"$type":"ParserRule","name":"QualifiedName","dataType":"string","definition":{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@14"},"arguments":[]},{"$type":"Group","elements":[{"$type":"Keyword","value":"."},{"$type":"RuleCall","rule":{"$ref":"#/rules@14"},"arguments":[]}],"cardinality":"*"}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"EmTimeFrame","definition":{"$type":"Group","elements":[{"$type":"Alternatives","elements":[{"$type":"Keyword","value":"tf"},{"$type":"Keyword","value":"timeframe"}]},{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@15"},"arguments":[]}},{"$type":"Assignment","feature":"modelEntityType","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@1"},"arguments":[]}},{"$type":"Assignment","feature":"entityIdentifier","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@5"},"arguments":[]}},{"$type":"Group","elements":[{"$type":"Keyword","value":"->>"},{"$type":"Assignment","feature":"sourceFrames","operator":"+=","terminal":{"$type":"CrossReference","type":{"$ref":"#/rules@8"},"terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@15"},"arguments":[]},"deprecatedSyntax":false,"isMulti":false}}],"cardinality":"*"},{"$type":"Group","elements":[{"$type":"Keyword","value":"[["},{"$type":"Assignment","feature":"dataReference","operator":"=","terminal":{"$type":"CrossReference","type":{"$ref":"#/rules@10"},"terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@14"},"arguments":[]},"deprecatedSyntax":false,"isMulti":false}},{"$type":"Keyword","value":"]]"}],"cardinality":"?"},{"$type":"RuleCall","rule":{"$ref":"#/rules@3"},"arguments":[],"cardinality":"?"}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"EmResetFrame","definition":{"$type":"Group","elements":[{"$type":"Alternatives","elements":[{"$type":"Keyword","value":"rf"},{"$type":"Keyword","value":"resetframe"}]},{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@15"},"arguments":[]}},{"$type":"Assignment","feature":"modelEntityType","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@1"},"arguments":[]}},{"$type":"Assignment","feature":"entityIdentifier","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@5"},"arguments":[]}},{"$type":"Group","elements":[{"$type":"Keyword","value":"->>"},{"$type":"Assignment","feature":"sourceFrames","operator":"+=","terminal":{"$type":"CrossReference","type":{"$ref":"#/rules@8"},"terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@15"},"arguments":[]},"deprecatedSyntax":false,"isMulti":false}}],"cardinality":"*"},{"$type":"Group","elements":[{"$type":"Keyword","value":"[["},{"$type":"Assignment","feature":"dataReference","operator":"=","terminal":{"$type":"CrossReference","type":{"$ref":"#/rules@10"},"terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@14"},"arguments":[]},"deprecatedSyntax":false,"isMulti":false}},{"$type":"Keyword","value":"]]"}],"cardinality":"?"},{"$type":"RuleCall","rule":{"$ref":"#/rules@3"},"arguments":[],"cardinality":"?"}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"EmFrame","definition":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@6"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@7"},"arguments":[]}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"EmModelEntity","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"entity"},{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@5"},"arguments":[]}}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"EmDataEntity","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"data"},{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@14"},"arguments":[]}},{"$type":"RuleCall","rule":{"$ref":"#/rules@4"},"arguments":[]}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"EmNoteEntity","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"note"},{"$type":"Assignment","feature":"sourceFrame","operator":"=","terminal":{"$type":"CrossReference","type":{"$ref":"#/rules@8"},"terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@15"},"arguments":[]},"deprecatedSyntax":false,"isMulti":false}},{"$type":"RuleCall","rule":{"$ref":"#/rules@4"},"arguments":[]}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"EmGwt","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"gwt"},{"$type":"Assignment","feature":"sourceFrame","operator":"=","terminal":{"$type":"CrossReference","type":{"$ref":"#/rules@8"},"terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@15"},"arguments":[]},"deprecatedSyntax":false,"isMulti":false}},{"$type":"Keyword","value":"given"},{"$type":"Assignment","feature":"givenStatements","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@13"},"arguments":[]},"cardinality":"+"},{"$type":"Group","elements":[{"$type":"Keyword","value":"when"},{"$type":"Assignment","feature":"whenStatements","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@13"},"arguments":[]},"cardinality":"+"}],"cardinality":"?"},{"$type":"Keyword","value":"then"},{"$type":"Assignment","feature":"thenStatements","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@13"},"arguments":[]},"cardinality":"+"}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"EmGwtStatement","definition":{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@1"},"arguments":[]},{"$type":"Assignment","feature":"entityIdentifier","operator":"=","terminal":{"$type":"CrossReference","type":{"$ref":"#/rules@9"},"terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@14"},"arguments":[]},"deprecatedSyntax":false,"isMulti":false}}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"EM_EID","dataType":"string","definition":{"$type":"RuleCall","rule":{"$ref":"#/rules@16"},"arguments":[]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"EM_FI","dataType":"string","definition":{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]},"entry":false,"fragment":false,"parameters":[]},{"$type":"TerminalRule","name":"EM_ID","definition":{"$type":"RegexToken","regex":"/[_a-zA-Z][\\\\w_]*/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"EM_FID","definition":{"$type":"RegexToken","regex":"/\\\\d{1,3}/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"EM_DATA_INLINE","definition":{"$type":"RegexToken","regex":"/\\\\{(.*)\\\\}|\\"(.*)\\"|\'(.*)\'/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"EM_DATA_BLOCK","definition":{"$type":"RegexToken","regex":"/\\\\{[\\\\t ]*\\\\r?\\\\n(?:[\\\\S\\\\s]*?\\\\r?\\\\n)?\\\\}(?:\\\\r?\\\\n|(?!\\\\S))/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"EM_ACC_DESCR","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*accDescr(?:[\\\\t ]*:([^\\\\n\\\\r]*?(?=%%)|[^\\\\n\\\\r]*)|\\\\s*{([^}]*)})/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"EM_ACC_TITLE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*accTitle[\\\\t ]*:(?:[^\\\\n\\\\r]*?(?=%%)|[^\\\\n\\\\r]*)/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"EM_TITLE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*title(?:[\\\\t ][^\\\\n\\\\r]*?(?=%%)|[\\\\t ][^\\\\n\\\\r]*|)/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","hidden":true,"name":"EM_WS","definition":{"$type":"RegexToken","regex":"/\\\\s+/","parenthesized":false},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"EM_YAML","definition":{"$type":"RegexToken","regex":"/---[\\\\t ]*\\\\r?\\\\n(?:[\\\\S\\\\s]*?\\\\r?\\\\n)?---(?:\\\\r?\\\\n|(?!\\\\S))/","parenthesized":false},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"EM_DIRECTIVE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*%%{[\\\\S\\\\s]*?}%%(?:\\\\r?\\\\n|(?!\\\\S))/","parenthesized":false},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"EM_SINGLE_LINE_COMMENT","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*%%[^\\\\n\\\\r]*/","parenthesized":false},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"EM_ML_COMMENT","definition":{"$type":"RegexToken","regex":"/\\\\/\\\\*[\\\\s\\\\S]*?\\\\*\\\\//","parenthesized":false},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"EM_SL_COMMENT","definition":{"$type":"RegexToken","regex":"/\\\\/\\\\/[^\\\\n\\\\r]*/","parenthesized":false},"fragment":false}],"imports":[],"types":[]}')),"EventModelingGrammar"),Lvt=S(()=>Yye??(Yye=xo(`{"$type":"Grammar","isDeclared":true,"name":"GitGraphGrammar","imports":[],"rules":[{"$type":"ParserRule","entry":true,"name":"GitGraph","definition":{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@19"},"arguments":[],"cardinality":"*"},{"$type":"Alternatives","elements":[{"$type":"Keyword","value":"gitGraph"},{"$type":"Group","elements":[{"$type":"Keyword","value":"gitGraph"},{"$type":"Keyword","value":":"}]},{"$type":"Keyword","value":"gitGraph:"},{"$type":"Group","elements":[{"$type":"Keyword","value":"gitGraph"},{"$type":"RuleCall","rule":{"$ref":"#/rules@2"},"arguments":[]},{"$type":"Keyword","value":":"}]}]},{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@19"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@9"},"arguments":[]},{"$type":"Assignment","feature":"statements","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@1"},"arguments":[]}}],"cardinality":"*"}]},"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"Statement","definition":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@3"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@4"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@5"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@6"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@7"},"arguments":[]}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"Direction","definition":{"$type":"Assignment","feature":"dir","operator":"=","terminal":{"$type":"Alternatives","elements":[{"$type":"Keyword","value":"LR"},{"$type":"Keyword","value":"TB"},{"$type":"Keyword","value":"BT"}]}},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"Commit","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"commit"},{"$type":"Alternatives","elements":[{"$type":"Group","elements":[{"$type":"Keyword","value":"id:"},{"$type":"Assignment","feature":"id","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}}]},{"$type":"Group","elements":[{"$type":"Keyword","value":"msg:","cardinality":"?"},{"$type":"Assignment","feature":"message","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}}]},{"$type":"Group","elements":[{"$type":"Keyword","value":"tag:"},{"$type":"Assignment","feature":"tags","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}}]},{"$type":"Group","elements":[{"$type":"Keyword","value":"type:"},{"$type":"Assignment","feature":"type","operator":"=","terminal":{"$type":"Alternatives","elements":[{"$type":"Keyword","value":"NORMAL"},{"$type":"Keyword","value":"REVERSE"},{"$type":"Keyword","value":"HIGHLIGHT"}]}}]}],"cardinality":"*"},{"$type":"RuleCall","rule":{"$ref":"#/rules@8"},"arguments":[]}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"Branch","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"branch"},{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@24"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}]}},{"$type":"Group","elements":[{"$type":"Keyword","value":"order:"},{"$type":"Assignment","feature":"order","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@15"},"arguments":[]}}],"cardinality":"?"},{"$type":"RuleCall","rule":{"$ref":"#/rules@8"},"arguments":[]}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"Merge","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"merge"},{"$type":"Assignment","feature":"branch","operator":"=","terminal":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@24"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}]}},{"$type":"Alternatives","elements":[{"$type":"Group","elements":[{"$type":"Keyword","value":"id:"},{"$type":"Assignment","feature":"id","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}}]},{"$type":"Group","elements":[{"$type":"Keyword","value":"tag:"},{"$type":"Assignment","feature":"tags","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}}]},{"$type":"Group","elements":[{"$type":"Keyword","value":"type:"},{"$type":"Assignment","feature":"type","operator":"=","terminal":{"$type":"Alternatives","elements":[{"$type":"Keyword","value":"NORMAL"},{"$type":"Keyword","value":"REVERSE"},{"$type":"Keyword","value":"HIGHLIGHT"}]}}]}],"cardinality":"*"},{"$type":"RuleCall","rule":{"$ref":"#/rules@8"},"arguments":[]}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"Checkout","definition":{"$type":"Group","elements":[{"$type":"Alternatives","elements":[{"$type":"Keyword","value":"checkout"},{"$type":"Keyword","value":"switch"}]},{"$type":"Assignment","feature":"branch","operator":"=","terminal":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@24"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}]}},{"$type":"RuleCall","rule":{"$ref":"#/rules@8"},"arguments":[]}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"CherryPicking","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"cherry-pick"},{"$type":"Alternatives","elements":[{"$type":"Group","elements":[{"$type":"Keyword","value":"id:"},{"$type":"Assignment","feature":"id","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}}]},{"$type":"Group","elements":[{"$type":"Keyword","value":"tag:"},{"$type":"Assignment","feature":"tags","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}}]},{"$type":"Group","elements":[{"$type":"Keyword","value":"parent:"},{"$type":"Assignment","feature":"parent","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}}]}],"cardinality":"*"},{"$type":"RuleCall","rule":{"$ref":"#/rules@8"},"arguments":[]}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"EOL","dataType":"string","definition":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@19"},"arguments":[],"cardinality":"+"},{"$type":"EndOfFile"}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","fragment":true,"name":"TitleAndAccessibilities","definition":{"$type":"Group","elements":[{"$type":"Alternatives","elements":[{"$type":"Assignment","feature":"accDescr","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@11"},"arguments":[]}},{"$type":"Assignment","feature":"accTitle","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@12"},"arguments":[]}},{"$type":"Assignment","feature":"title","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@13"},"arguments":[]}}]},{"$type":"RuleCall","rule":{"$ref":"#/rules@8"},"arguments":[]}],"cardinality":"+"},"entry":false,"parameters":[]},{"$type":"TerminalRule","name":"BOOLEAN","type":{"$type":"ReturnType","name":"boolean"},"definition":{"$type":"TerminalAlternatives","elements":[{"$type":"CharacterRange","left":{"$type":"Keyword","value":"true"},"parenthesized":false},{"$type":"CharacterRange","left":{"$type":"Keyword","value":"false"},"parenthesized":false}],"parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ACC_DESCR","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*accDescr(?:[\\\\t ]*:([^\\\\n\\\\r]*?(?=%%)|[^\\\\n\\\\r]*)|\\\\s*{([^}]*)})/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ACC_TITLE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*accTitle[\\\\t ]*:(?:[^\\\\n\\\\r]*?(?=%%)|[^\\\\n\\\\r]*)/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"TITLE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*title(?:[\\\\t ][^\\\\n\\\\r]*?(?=%%)|[\\\\t ][^\\\\n\\\\r]*|)/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"FLOAT","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"RegexToken","regex":"/[0-9]+\\\\.[0-9]+(?!\\\\.)/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"INT","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"RegexToken","regex":"/0|[1-9][0-9]*(?!\\\\.)/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"NUMBER","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"TerminalAlternatives","elements":[{"$type":"TerminalRuleCall","rule":{"$ref":"#/rules@14"},"parenthesized":false},{"$type":"TerminalRuleCall","rule":{"$ref":"#/rules@15"},"parenthesized":false}],"parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"STRING","type":{"$type":"ReturnType","name":"string"},"definition":{"$type":"RegexToken","regex":"/\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\"|'([^'\\\\\\\\]|\\\\\\\\.)*'/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ID","type":{"$type":"ReturnType","name":"string"},"definition":{"$type":"RegexToken","regex":"/[\\\\w]([-\\\\w]*\\\\w)?/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"NEWLINE","definition":{"$type":"RegexToken","regex":"/\\\\r?\\\\n/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","hidden":true,"name":"WHITESPACE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]+/","parenthesized":false},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"YAML","definition":{"$type":"RegexToken","regex":"/---[\\\\t ]*\\\\r?\\\\n(?:[\\\\S\\\\s]*?\\\\r?\\\\n)?---(?:\\\\r?\\\\n|(?!\\\\S))/","parenthesized":false},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"DIRECTIVE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*%%{[\\\\S\\\\s]*?}%%(?:\\\\r?\\\\n|(?!\\\\S))/","parenthesized":false},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"SINGLE_LINE_COMMENT","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*%%[^\\\\n\\\\r]*/","parenthesized":false},"fragment":false},{"$type":"TerminalRule","name":"REFERENCE","type":{"$type":"ReturnType","name":"string"},"definition":{"$type":"RegexToken","regex":"/\\\\w([-\\\\./\\\\w]*[-\\\\w])?/","parenthesized":false},"fragment":false,"hidden":false}],"interfaces":[],"types":[]}`)),"GitGraphGrammarGrammar"),Mvt=S(()=>jye??(jye=xo(`{"$type":"Grammar","isDeclared":true,"name":"InfoGrammar","imports":[],"rules":[{"$type":"ParserRule","entry":true,"name":"Info","definition":{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@12"},"arguments":[],"cardinality":"*"},{"$type":"Keyword","value":"info"},{"$type":"RuleCall","rule":{"$ref":"#/rules@12"},"arguments":[],"cardinality":"*"},{"$type":"Group","elements":[{"$type":"Keyword","value":"showInfo"},{"$type":"RuleCall","rule":{"$ref":"#/rules@12"},"arguments":[],"cardinality":"*"}],"cardinality":"?"},{"$type":"RuleCall","rule":{"$ref":"#/rules@2"},"arguments":[],"cardinality":"?"}]},"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"EOL","dataType":"string","definition":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@12"},"arguments":[],"cardinality":"+"},{"$type":"EndOfFile"}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","fragment":true,"name":"TitleAndAccessibilities","definition":{"$type":"Group","elements":[{"$type":"Alternatives","elements":[{"$type":"Assignment","feature":"accDescr","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@4"},"arguments":[]}},{"$type":"Assignment","feature":"accTitle","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@5"},"arguments":[]}},{"$type":"Assignment","feature":"title","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@6"},"arguments":[]}}]},{"$type":"RuleCall","rule":{"$ref":"#/rules@1"},"arguments":[]}],"cardinality":"+"},"entry":false,"parameters":[]},{"$type":"TerminalRule","name":"BOOLEAN","type":{"$type":"ReturnType","name":"boolean"},"definition":{"$type":"TerminalAlternatives","elements":[{"$type":"CharacterRange","left":{"$type":"Keyword","value":"true"},"parenthesized":false},{"$type":"CharacterRange","left":{"$type":"Keyword","value":"false"},"parenthesized":false}],"parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ACC_DESCR","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*accDescr(?:[\\\\t ]*:([^\\\\n\\\\r]*?(?=%%)|[^\\\\n\\\\r]*)|\\\\s*{([^}]*)})/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ACC_TITLE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*accTitle[\\\\t ]*:(?:[^\\\\n\\\\r]*?(?=%%)|[^\\\\n\\\\r]*)/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"TITLE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*title(?:[\\\\t ][^\\\\n\\\\r]*?(?=%%)|[\\\\t ][^\\\\n\\\\r]*|)/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"FLOAT","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"RegexToken","regex":"/[0-9]+\\\\.[0-9]+(?!\\\\.)/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"INT","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"RegexToken","regex":"/0|[1-9][0-9]*(?!\\\\.)/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"NUMBER","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"TerminalAlternatives","elements":[{"$type":"TerminalRuleCall","rule":{"$ref":"#/rules@7"},"parenthesized":false},{"$type":"TerminalRuleCall","rule":{"$ref":"#/rules@8"},"parenthesized":false}],"parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"STRING","type":{"$type":"ReturnType","name":"string"},"definition":{"$type":"RegexToken","regex":"/\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\"|'([^'\\\\\\\\]|\\\\\\\\.)*'/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ID","type":{"$type":"ReturnType","name":"string"},"definition":{"$type":"RegexToken","regex":"/[\\\\w]([-\\\\w]*\\\\w)?/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"NEWLINE","definition":{"$type":"RegexToken","regex":"/\\\\r?\\\\n/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","hidden":true,"name":"WHITESPACE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]+/","parenthesized":false},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"YAML","definition":{"$type":"RegexToken","regex":"/---[\\\\t ]*\\\\r?\\\\n(?:[\\\\S\\\\s]*?\\\\r?\\\\n)?---(?:\\\\r?\\\\n|(?!\\\\S))/","parenthesized":false},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"DIRECTIVE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*%%{[\\\\S\\\\s]*?}%%(?:\\\\r?\\\\n|(?!\\\\S))/","parenthesized":false},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"SINGLE_LINE_COMMENT","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*%%[^\\\\n\\\\r]*/","parenthesized":false},"fragment":false}],"interfaces":[],"types":[]}`)),"InfoGrammarGrammar"),Nvt=S(()=>Xye??(Xye=xo(`{"$type":"Grammar","isDeclared":true,"name":"PacketGrammar","imports":[],"rules":[{"$type":"ParserRule","entry":true,"name":"Packet","definition":{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@13"},"arguments":[],"cardinality":"*"},{"$type":"Alternatives","elements":[{"$type":"Keyword","value":"packet"},{"$type":"Keyword","value":"packet-beta"}]},{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@3"},"arguments":[]},{"$type":"Assignment","feature":"blocks","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@1"},"arguments":[]}},{"$type":"RuleCall","rule":{"$ref":"#/rules@13"},"arguments":[]}],"cardinality":"*"}]},"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"PacketBlock","definition":{"$type":"Group","elements":[{"$type":"Alternatives","elements":[{"$type":"Group","elements":[{"$type":"Assignment","feature":"start","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@9"},"arguments":[]}},{"$type":"Group","elements":[{"$type":"Keyword","value":"-"},{"$type":"Assignment","feature":"end","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@9"},"arguments":[]}}],"cardinality":"?"}]},{"$type":"Group","elements":[{"$type":"Keyword","value":"+"},{"$type":"Assignment","feature":"bits","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@9"},"arguments":[]}}]}]},{"$type":"Keyword","value":":"},{"$type":"Assignment","feature":"label","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@11"},"arguments":[]}},{"$type":"RuleCall","rule":{"$ref":"#/rules@2"},"arguments":[]}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"EOL","dataType":"string","definition":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@13"},"arguments":[],"cardinality":"+"},{"$type":"EndOfFile"}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","fragment":true,"name":"TitleAndAccessibilities","definition":{"$type":"Group","elements":[{"$type":"Alternatives","elements":[{"$type":"Assignment","feature":"accDescr","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@5"},"arguments":[]}},{"$type":"Assignment","feature":"accTitle","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@6"},"arguments":[]}},{"$type":"Assignment","feature":"title","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@7"},"arguments":[]}}]},{"$type":"RuleCall","rule":{"$ref":"#/rules@2"},"arguments":[]}],"cardinality":"+"},"entry":false,"parameters":[]},{"$type":"TerminalRule","name":"BOOLEAN","type":{"$type":"ReturnType","name":"boolean"},"definition":{"$type":"TerminalAlternatives","elements":[{"$type":"CharacterRange","left":{"$type":"Keyword","value":"true"},"parenthesized":false},{"$type":"CharacterRange","left":{"$type":"Keyword","value":"false"},"parenthesized":false}],"parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ACC_DESCR","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*accDescr(?:[\\\\t ]*:([^\\\\n\\\\r]*?(?=%%)|[^\\\\n\\\\r]*)|\\\\s*{([^}]*)})/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ACC_TITLE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*accTitle[\\\\t ]*:(?:[^\\\\n\\\\r]*?(?=%%)|[^\\\\n\\\\r]*)/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"TITLE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*title(?:[\\\\t ][^\\\\n\\\\r]*?(?=%%)|[\\\\t ][^\\\\n\\\\r]*|)/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"FLOAT","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"RegexToken","regex":"/[0-9]+\\\\.[0-9]+(?!\\\\.)/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"INT","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"RegexToken","regex":"/0|[1-9][0-9]*(?!\\\\.)/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"NUMBER","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"TerminalAlternatives","elements":[{"$type":"TerminalRuleCall","rule":{"$ref":"#/rules@8"},"parenthesized":false},{"$type":"TerminalRuleCall","rule":{"$ref":"#/rules@9"},"parenthesized":false}],"parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"STRING","type":{"$type":"ReturnType","name":"string"},"definition":{"$type":"RegexToken","regex":"/\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\"|'([^'\\\\\\\\]|\\\\\\\\.)*'/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ID","type":{"$type":"ReturnType","name":"string"},"definition":{"$type":"RegexToken","regex":"/[\\\\w]([-\\\\w]*\\\\w)?/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"NEWLINE","definition":{"$type":"RegexToken","regex":"/\\\\r?\\\\n/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","hidden":true,"name":"WHITESPACE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]+/","parenthesized":false},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"YAML","definition":{"$type":"RegexToken","regex":"/---[\\\\t ]*\\\\r?\\\\n(?:[\\\\S\\\\s]*?\\\\r?\\\\n)?---(?:\\\\r?\\\\n|(?!\\\\S))/","parenthesized":false},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"DIRECTIVE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*%%{[\\\\S\\\\s]*?}%%(?:\\\\r?\\\\n|(?!\\\\S))/","parenthesized":false},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"SINGLE_LINE_COMMENT","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*%%[^\\\\n\\\\r]*/","parenthesized":false},"fragment":false}],"interfaces":[],"types":[]}`)),"PacketGrammarGrammar"),Ivt=S(()=>Kye??(Kye=xo(`{"$type":"Grammar","isDeclared":true,"name":"PieGrammar","imports":[],"rules":[{"$type":"ParserRule","entry":true,"name":"Pie","definition":{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@16"},"arguments":[],"cardinality":"*"},{"$type":"Keyword","value":"pie"},{"$type":"Assignment","feature":"showData","operator":"?=","terminal":{"$type":"Keyword","value":"showData"},"cardinality":"?"},{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@6"},"arguments":[]},{"$type":"Assignment","feature":"sections","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@1"},"arguments":[]}},{"$type":"RuleCall","rule":{"$ref":"#/rules@16"},"arguments":[]}],"cardinality":"*"}]},"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"PieSection","definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"label","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@14"},"arguments":[]}},{"$type":"Keyword","value":":"},{"$type":"Assignment","feature":"value","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@4"},"arguments":[]}},{"$type":"RuleCall","rule":{"$ref":"#/rules@5"},"arguments":[]}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"TerminalRule","name":"FLOAT_PIE","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"RegexToken","regex":"/-?[0-9]+\\\\.[0-9]+(?!\\\\.)/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"INT_PIE","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"RegexToken","regex":"/-?(0|[1-9][0-9]*)(?!\\\\.)/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"NUMBER_PIE","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"TerminalAlternatives","elements":[{"$type":"TerminalRuleCall","rule":{"$ref":"#/rules@2"},"parenthesized":false},{"$type":"TerminalRuleCall","rule":{"$ref":"#/rules@3"},"parenthesized":false}],"parenthesized":false},"fragment":false,"hidden":false},{"$type":"ParserRule","name":"EOL","dataType":"string","definition":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@16"},"arguments":[],"cardinality":"+"},{"$type":"EndOfFile"}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","fragment":true,"name":"TitleAndAccessibilities","definition":{"$type":"Group","elements":[{"$type":"Alternatives","elements":[{"$type":"Assignment","feature":"accDescr","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@8"},"arguments":[]}},{"$type":"Assignment","feature":"accTitle","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@9"},"arguments":[]}},{"$type":"Assignment","feature":"title","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@10"},"arguments":[]}}]},{"$type":"RuleCall","rule":{"$ref":"#/rules@5"},"arguments":[]}],"cardinality":"+"},"entry":false,"parameters":[]},{"$type":"TerminalRule","name":"BOOLEAN","type":{"$type":"ReturnType","name":"boolean"},"definition":{"$type":"TerminalAlternatives","elements":[{"$type":"CharacterRange","left":{"$type":"Keyword","value":"true"},"parenthesized":false},{"$type":"CharacterRange","left":{"$type":"Keyword","value":"false"},"parenthesized":false}],"parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ACC_DESCR","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*accDescr(?:[\\\\t ]*:([^\\\\n\\\\r]*?(?=%%)|[^\\\\n\\\\r]*)|\\\\s*{([^}]*)})/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ACC_TITLE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*accTitle[\\\\t ]*:(?:[^\\\\n\\\\r]*?(?=%%)|[^\\\\n\\\\r]*)/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"TITLE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*title(?:[\\\\t ][^\\\\n\\\\r]*?(?=%%)|[\\\\t ][^\\\\n\\\\r]*|)/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"FLOAT","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"RegexToken","regex":"/[0-9]+\\\\.[0-9]+(?!\\\\.)/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"INT","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"RegexToken","regex":"/0|[1-9][0-9]*(?!\\\\.)/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"NUMBER","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"TerminalAlternatives","elements":[{"$type":"TerminalRuleCall","rule":{"$ref":"#/rules@11"},"parenthesized":false},{"$type":"TerminalRuleCall","rule":{"$ref":"#/rules@12"},"parenthesized":false}],"parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"STRING","type":{"$type":"ReturnType","name":"string"},"definition":{"$type":"RegexToken","regex":"/\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\"|'([^'\\\\\\\\]|\\\\\\\\.)*'/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ID","type":{"$type":"ReturnType","name":"string"},"definition":{"$type":"RegexToken","regex":"/[\\\\w]([-\\\\w]*\\\\w)?/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"NEWLINE","definition":{"$type":"RegexToken","regex":"/\\\\r?\\\\n/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","hidden":true,"name":"WHITESPACE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]+/","parenthesized":false},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"YAML","definition":{"$type":"RegexToken","regex":"/---[\\\\t ]*\\\\r?\\\\n(?:[\\\\S\\\\s]*?\\\\r?\\\\n)?---(?:\\\\r?\\\\n|(?!\\\\S))/","parenthesized":false},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"DIRECTIVE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*%%{[\\\\S\\\\s]*?}%%(?:\\\\r?\\\\n|(?!\\\\S))/","parenthesized":false},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"SINGLE_LINE_COMMENT","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*%%[^\\\\n\\\\r]*/","parenthesized":false},"fragment":false}],"interfaces":[],"types":[]}`)),"PieGrammarGrammar"),Ovt=S(()=>Zye??(Zye=xo(`{"$type":"Grammar","isDeclared":true,"name":"RadarGrammar","imports":[],"rules":[{"$type":"ParserRule","entry":true,"name":"Radar","definition":{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@20"},"arguments":[],"cardinality":"*"},{"$type":"Alternatives","elements":[{"$type":"Keyword","value":"radar-beta"},{"$type":"Keyword","value":"radar-beta:"},{"$type":"Group","elements":[{"$type":"Keyword","value":"radar-beta"},{"$type":"Keyword","value":":"}]}]},{"$type":"RuleCall","rule":{"$ref":"#/rules@20"},"arguments":[],"cardinality":"*"},{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@10"},"arguments":[]},{"$type":"Group","elements":[{"$type":"Keyword","value":"axis"},{"$type":"Assignment","feature":"axes","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@2"},"arguments":[]}},{"$type":"Group","elements":[{"$type":"Keyword","value":","},{"$type":"Assignment","feature":"axes","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@2"},"arguments":[]}}],"cardinality":"*"}]},{"$type":"Group","elements":[{"$type":"Keyword","value":"curve"},{"$type":"Assignment","feature":"curves","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@3"},"arguments":[]}},{"$type":"Group","elements":[{"$type":"Keyword","value":","},{"$type":"Assignment","feature":"curves","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@3"},"arguments":[]}}],"cardinality":"*"}]},{"$type":"Group","elements":[{"$type":"Assignment","feature":"options","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@7"},"arguments":[]}},{"$type":"Group","elements":[{"$type":"Keyword","value":","},{"$type":"Assignment","feature":"options","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@7"},"arguments":[]}}],"cardinality":"*"}]},{"$type":"RuleCall","rule":{"$ref":"#/rules@20"},"arguments":[]}],"cardinality":"*"}]},"fragment":false,"parameters":[]},{"$type":"ParserRule","fragment":true,"name":"Label","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"["},{"$type":"Assignment","feature":"label","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@18"},"arguments":[]}},{"$type":"Keyword","value":"]"}]},"entry":false,"parameters":[]},{"$type":"ParserRule","name":"Axis","definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@19"},"arguments":[]}},{"$type":"RuleCall","rule":{"$ref":"#/rules@1"},"arguments":[],"cardinality":"?"}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"Curve","definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@19"},"arguments":[]}},{"$type":"RuleCall","rule":{"$ref":"#/rules@1"},"arguments":[],"cardinality":"?"},{"$type":"Keyword","value":"{"},{"$type":"RuleCall","rule":{"$ref":"#/rules@4"},"arguments":[]},{"$type":"Keyword","value":"}"}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","fragment":true,"name":"Entries","definition":{"$type":"Alternatives","elements":[{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@20"},"arguments":[],"cardinality":"*"},{"$type":"Assignment","feature":"entries","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@6"},"arguments":[]}},{"$type":"Group","elements":[{"$type":"Keyword","value":","},{"$type":"RuleCall","rule":{"$ref":"#/rules@20"},"arguments":[],"cardinality":"*"},{"$type":"Assignment","feature":"entries","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@6"},"arguments":[]}}],"cardinality":"*"},{"$type":"RuleCall","rule":{"$ref":"#/rules@20"},"arguments":[],"cardinality":"*"}]},{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@20"},"arguments":[],"cardinality":"*"},{"$type":"Assignment","feature":"entries","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@5"},"arguments":[]}},{"$type":"Group","elements":[{"$type":"Keyword","value":","},{"$type":"RuleCall","rule":{"$ref":"#/rules@20"},"arguments":[],"cardinality":"*"},{"$type":"Assignment","feature":"entries","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@5"},"arguments":[]}}],"cardinality":"*"},{"$type":"RuleCall","rule":{"$ref":"#/rules@20"},"arguments":[],"cardinality":"*"}]}]},"entry":false,"parameters":[]},{"$type":"ParserRule","name":"DetailedEntry","returnType":{"$ref":"#/interfaces@0"},"definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"axis","operator":"=","terminal":{"$type":"CrossReference","type":{"$ref":"#/rules@2"},"terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@19"},"arguments":[]},"deprecatedSyntax":false,"isMulti":false}},{"$type":"Keyword","value":":","cardinality":"?"},{"$type":"Assignment","feature":"value","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"NumberEntry","returnType":{"$ref":"#/interfaces@0"},"definition":{"$type":"Assignment","feature":"value","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"Option","definition":{"$type":"Alternatives","elements":[{"$type":"Group","elements":[{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"Keyword","value":"showLegend"}},{"$type":"Assignment","feature":"value","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@11"},"arguments":[]}}]},{"$type":"Group","elements":[{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"Keyword","value":"ticks"}},{"$type":"Assignment","feature":"value","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}}]},{"$type":"Group","elements":[{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"Keyword","value":"max"}},{"$type":"Assignment","feature":"value","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}}]},{"$type":"Group","elements":[{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"Keyword","value":"min"}},{"$type":"Assignment","feature":"value","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}}]},{"$type":"Group","elements":[{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"Keyword","value":"graticule"}},{"$type":"Assignment","feature":"value","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@8"},"arguments":[]}}]}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"TerminalRule","name":"GRATICULE","type":{"$type":"ReturnType","name":"string"},"definition":{"$type":"TerminalAlternatives","elements":[{"$type":"CharacterRange","left":{"$type":"Keyword","value":"circle"},"parenthesized":false},{"$type":"CharacterRange","left":{"$type":"Keyword","value":"polygon"},"parenthesized":false}],"parenthesized":false},"fragment":false,"hidden":false},{"$type":"ParserRule","name":"EOL","dataType":"string","definition":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@20"},"arguments":[],"cardinality":"+"},{"$type":"EndOfFile"}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","fragment":true,"name":"TitleAndAccessibilities","definition":{"$type":"Group","elements":[{"$type":"Alternatives","elements":[{"$type":"Assignment","feature":"accDescr","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@12"},"arguments":[]}},{"$type":"Assignment","feature":"accTitle","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@13"},"arguments":[]}},{"$type":"Assignment","feature":"title","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@14"},"arguments":[]}}]},{"$type":"RuleCall","rule":{"$ref":"#/rules@9"},"arguments":[]}],"cardinality":"+"},"entry":false,"parameters":[]},{"$type":"TerminalRule","name":"BOOLEAN","type":{"$type":"ReturnType","name":"boolean"},"definition":{"$type":"TerminalAlternatives","elements":[{"$type":"CharacterRange","left":{"$type":"Keyword","value":"true"},"parenthesized":false},{"$type":"CharacterRange","left":{"$type":"Keyword","value":"false"},"parenthesized":false}],"parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ACC_DESCR","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*accDescr(?:[\\\\t ]*:([^\\\\n\\\\r]*?(?=%%)|[^\\\\n\\\\r]*)|\\\\s*{([^}]*)})/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ACC_TITLE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*accTitle[\\\\t ]*:(?:[^\\\\n\\\\r]*?(?=%%)|[^\\\\n\\\\r]*)/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"TITLE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*title(?:[\\\\t ][^\\\\n\\\\r]*?(?=%%)|[\\\\t ][^\\\\n\\\\r]*|)/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"FLOAT","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"RegexToken","regex":"/[0-9]+\\\\.[0-9]+(?!\\\\.)/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"INT","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"RegexToken","regex":"/0|[1-9][0-9]*(?!\\\\.)/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"NUMBER","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"TerminalAlternatives","elements":[{"$type":"TerminalRuleCall","rule":{"$ref":"#/rules@15"},"parenthesized":false},{"$type":"TerminalRuleCall","rule":{"$ref":"#/rules@16"},"parenthesized":false}],"parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"STRING","type":{"$type":"ReturnType","name":"string"},"definition":{"$type":"RegexToken","regex":"/\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\"|'([^'\\\\\\\\]|\\\\\\\\.)*'/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ID","type":{"$type":"ReturnType","name":"string"},"definition":{"$type":"RegexToken","regex":"/[\\\\w]([-\\\\w]*\\\\w)?/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"NEWLINE","definition":{"$type":"RegexToken","regex":"/\\\\r?\\\\n/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","hidden":true,"name":"WHITESPACE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]+/","parenthesized":false},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"YAML","definition":{"$type":"RegexToken","regex":"/---[\\\\t ]*\\\\r?\\\\n(?:[\\\\S\\\\s]*?\\\\r?\\\\n)?---(?:\\\\r?\\\\n|(?!\\\\S))/","parenthesized":false},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"DIRECTIVE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*%%{[\\\\S\\\\s]*?}%%(?:\\\\r?\\\\n|(?!\\\\S))/","parenthesized":false},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"SINGLE_LINE_COMMENT","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*%%[^\\\\n\\\\r]*/","parenthesized":false},"fragment":false}],"interfaces":[{"$type":"Interface","name":"Entry","attributes":[{"$type":"TypeAttribute","name":"axis","isOptional":true,"type":{"$type":"ReferenceType","referenceType":{"$type":"SimpleType","typeRef":{"$ref":"#/rules@2"}},"isMulti":false}},{"$type":"TypeAttribute","name":"value","type":{"$type":"SimpleType","primitiveType":"number"},"isOptional":false}],"superTypes":[]}],"types":[]}`)),"RadarGrammarGrammar"),Pvt=S(()=>Qye??(Qye=xo(`{"$type":"Grammar","isDeclared":true,"name":"TreemapGrammar","rules":[{"$type":"ParserRule","fragment":true,"name":"TitleAndAccessibilities","definition":{"$type":"Alternatives","elements":[{"$type":"Assignment","feature":"accDescr","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@2"},"arguments":[]}},{"$type":"Assignment","feature":"accTitle","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@3"},"arguments":[]}},{"$type":"Assignment","feature":"title","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@4"},"arguments":[]}}],"cardinality":"+"},"entry":false,"parameters":[]},{"$type":"TerminalRule","name":"BOOLEAN","type":{"$type":"ReturnType","name":"boolean"},"definition":{"$type":"TerminalAlternatives","elements":[{"$type":"CharacterRange","left":{"$type":"Keyword","value":"true"},"parenthesized":false},{"$type":"CharacterRange","left":{"$type":"Keyword","value":"false"},"parenthesized":false}],"parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ACC_DESCR","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*accDescr(?:[\\\\t ]*:([^\\\\n\\\\r]*?(?=%%)|[^\\\\n\\\\r]*)|\\\\s*{([^}]*)})/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ACC_TITLE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*accTitle[\\\\t ]*:(?:[^\\\\n\\\\r]*?(?=%%)|[^\\\\n\\\\r]*)/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"TITLE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*title(?:[\\\\t ][^\\\\n\\\\r]*?(?=%%)|[\\\\t ][^\\\\n\\\\r]*|)/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"ParserRule","entry":true,"name":"Treemap","returnType":{"$ref":"#/interfaces@4"},"definition":{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@6"},"arguments":[]},{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@0"},"arguments":[]},{"$type":"Assignment","feature":"TreemapRows","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@15"},"arguments":[]}}],"cardinality":"*"}]},"fragment":false,"parameters":[]},{"$type":"TerminalRule","name":"TREEMAP_KEYWORD","definition":{"$type":"TerminalAlternatives","elements":[{"$type":"CharacterRange","left":{"$type":"Keyword","value":"treemap-beta"},"parenthesized":false},{"$type":"CharacterRange","left":{"$type":"Keyword","value":"treemap"},"parenthesized":false}],"parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"CLASS_DEF","definition":{"$type":"RegexToken","regex":"/classDef\\\\s+([a-zA-Z_][a-zA-Z0-9_]+)(?:\\\\s+([^;\\\\r\\\\n]*))?(?:;)?/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"STYLE_SEPARATOR","definition":{"$type":"CharacterRange","left":{"$type":"Keyword","value":":::"},"parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"SEPARATOR","definition":{"$type":"CharacterRange","left":{"$type":"Keyword","value":":"},"parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"COMMA","definition":{"$type":"CharacterRange","left":{"$type":"Keyword","value":","},"parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"INDENTATION","definition":{"$type":"RegexToken","regex":"/[ \\\\t]{1,}/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","hidden":true,"name":"WS","definition":{"$type":"RegexToken","regex":"/[ \\\\t]+/","parenthesized":false},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"ML_COMMENT","definition":{"$type":"RegexToken","regex":"/\\\\%\\\\%[^\\\\n]*/","parenthesized":false},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"NL","definition":{"$type":"RegexToken","regex":"/\\\\r?\\\\n/","parenthesized":false},"fragment":false},{"$type":"ParserRule","name":"TreemapRow","definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"indent","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@11"},"arguments":[]},"cardinality":"?"},{"$type":"Alternatives","elements":[{"$type":"Assignment","feature":"item","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}},{"$type":"RuleCall","rule":{"$ref":"#/rules@16"},"arguments":[]}]}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"ClassDef","dataType":"string","definition":{"$type":"RuleCall","rule":{"$ref":"#/rules@7"},"arguments":[]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"Item","returnType":{"$ref":"#/interfaces@0"},"definition":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@19"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@18"},"arguments":[]}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"Section","returnType":{"$ref":"#/interfaces@1"},"definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@23"},"arguments":[]}},{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@8"},"arguments":[]},{"$type":"Assignment","feature":"classSelector","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@20"},"arguments":[]}}],"cardinality":"?"}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"Leaf","returnType":{"$ref":"#/interfaces@2"},"definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@23"},"arguments":[]}},{"$type":"RuleCall","rule":{"$ref":"#/rules@11"},"arguments":[],"cardinality":"?"},{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@9"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@10"},"arguments":[]}]},{"$type":"RuleCall","rule":{"$ref":"#/rules@11"},"arguments":[],"cardinality":"?"},{"$type":"Assignment","feature":"value","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@22"},"arguments":[]}},{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@8"},"arguments":[]},{"$type":"Assignment","feature":"classSelector","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@20"},"arguments":[]}}],"cardinality":"?"}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"TerminalRule","name":"ID2","definition":{"$type":"RegexToken","regex":"/[a-zA-Z_][a-zA-Z0-9_]*/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"NUMBER2","definition":{"$type":"RegexToken","regex":"/[0-9_\\\\.\\\\,]+/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"ParserRule","name":"MyNumber","dataType":"number","definition":{"$type":"RuleCall","rule":{"$ref":"#/rules@21"},"arguments":[]},"entry":false,"fragment":false,"parameters":[]},{"$type":"TerminalRule","name":"STRING2","definition":{"$type":"RegexToken","regex":"/\\"[^\\"]*\\"|'[^']*'/","parenthesized":false},"fragment":false,"hidden":false}],"interfaces":[{"$type":"Interface","name":"Item","attributes":[{"$type":"TypeAttribute","name":"name","type":{"$type":"SimpleType","primitiveType":"string"},"isOptional":false},{"$type":"TypeAttribute","name":"classSelector","isOptional":true,"type":{"$type":"SimpleType","primitiveType":"string"}}],"superTypes":[]},{"$type":"Interface","name":"Section","superTypes":[{"$ref":"#/interfaces@0"}],"attributes":[]},{"$type":"Interface","name":"Leaf","superTypes":[{"$ref":"#/interfaces@0"}],"attributes":[{"$type":"TypeAttribute","name":"value","type":{"$type":"SimpleType","primitiveType":"number"},"isOptional":false}]},{"$type":"Interface","name":"ClassDefStatement","attributes":[{"$type":"TypeAttribute","name":"className","type":{"$type":"SimpleType","primitiveType":"string"},"isOptional":false},{"$type":"TypeAttribute","name":"styleText","type":{"$type":"SimpleType","primitiveType":"string"},"isOptional":false}],"superTypes":[]},{"$type":"Interface","name":"Treemap","attributes":[{"$type":"TypeAttribute","name":"TreemapRows","type":{"$type":"ArrayType","elementType":{"$type":"SimpleType","typeRef":{"$ref":"#/rules@15"}}},"isOptional":false},{"$type":"TypeAttribute","name":"title","isOptional":true,"type":{"$type":"SimpleType","primitiveType":"string"}},{"$type":"TypeAttribute","name":"accTitle","isOptional":true,"type":{"$type":"SimpleType","primitiveType":"string"}},{"$type":"TypeAttribute","name":"accDescr","isOptional":true,"type":{"$type":"SimpleType","primitiveType":"string"}}],"superTypes":[]}],"imports":[],"types":[],"$comment":"/**\\n * Treemap grammar for Langium\\n * Converted from mindmap grammar\\n *\\n * The ML_COMMENT and NL hidden terminals handle whitespace, comments, and newlines\\n * before the treemap keyword, allowing for empty lines and comments before the\\n * treemap declaration.\\n */"}`)),"TreemapGrammarGrammar"),Bvt=S(()=>Jye??(Jye=xo(`{"$type":"Grammar","isDeclared":true,"name":"TreeViewGrammar","rules":[{"$type":"TerminalRule","name":"ACC_DESCR","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*accDescr(?:[\\\\t ]*:([^\\\\n\\\\r]*?(?=%%)|[^\\\\n\\\\r]*)|\\\\s*{([^}]*)})/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ACC_TITLE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*accTitle[\\\\t ]*:(?:[^\\\\n\\\\r]*?(?=%%)|[^\\\\n\\\\r]*)/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"TITLE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*title(?:[\\\\t ][^\\\\n\\\\r]*?(?=%%)|[\\\\t ][^\\\\n\\\\r]*|)/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"ParserRule","entry":true,"name":"TreeView","returnType":{"$ref":"#/interfaces@0"},"definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"treeView-beta"},{"$type":"RuleCall","rule":{"$ref":"#/rules@4"},"arguments":[],"cardinality":"?"},{"$type":"Assignment","feature":"nodes","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@9"},"arguments":[]},"cardinality":"*"}]},"fragment":false,"parameters":[]},{"$type":"ParserRule","fragment":true,"name":"TitleAndAccessibilities","definition":{"$type":"Alternatives","elements":[{"$type":"Assignment","feature":"accDescr","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@0"},"arguments":[]}},{"$type":"Assignment","feature":"accTitle","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@1"},"arguments":[]}},{"$type":"Assignment","feature":"title","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@2"},"arguments":[]}}],"cardinality":"+"},"entry":false,"parameters":[]},{"$type":"TerminalRule","name":"INDENTATION","definition":{"$type":"RegexToken","regex":"/[ \\\\t]{1,}/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","hidden":true,"name":"WS","definition":{"$type":"RegexToken","regex":"/[ \\\\t]+/","parenthesized":false},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"ML_COMMENT","definition":{"$type":"RegexToken","regex":"/\\\\%\\\\%[^\\\\n]*/","parenthesized":false},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"NL","definition":{"$type":"RegexToken","regex":"/\\\\r?\\\\n/","parenthesized":false},"fragment":false},{"$type":"ParserRule","name":"TreeNode","definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"indent","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@5"},"arguments":[]},"cardinality":"?"},{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@10"},"arguments":[]}}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"TerminalRule","name":"STRING2","definition":{"$type":"RegexToken","regex":"/\\"[^\\"]*\\"|'[^']*'/","parenthesized":false},"fragment":false,"hidden":false}],"interfaces":[{"$type":"Interface","name":"TreeView","attributes":[{"$type":"TypeAttribute","name":"nodes","type":{"$type":"ArrayType","elementType":{"$type":"SimpleType","typeRef":{"$ref":"#/rules@9"}}},"isOptional":false},{"$type":"TypeAttribute","name":"title","isOptional":true,"type":{"$type":"SimpleType","primitiveType":"string"}},{"$type":"TypeAttribute","name":"accTitle","isOptional":true,"type":{"$type":"SimpleType","primitiveType":"string"}},{"$type":"TypeAttribute","name":"accDescr","isOptional":true,"type":{"$type":"SimpleType","primitiveType":"string"}}],"superTypes":[]}],"imports":[],"types":[],"$comment":"/**\\n * TreeView grammar for Langium\\n * Converted from treemap grammar\\n *\\n * The ML_COMMENT and NL hidden terminals handle whitespace, comments, and newlines\\n * before the treemap keyword, allowing for empty lines and comments before the\\n * treeView declaration.\\n */"}`)),"TreeViewGrammarGrammar"),Fvt=S(()=>eve??(eve=xo(`{"$type":"Grammar","isDeclared":true,"name":"WardleyGrammar","imports":[],"rules":[{"$type":"ParserRule","entry":true,"name":"Wardley","definition":{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@52"},"arguments":[],"cardinality":"*"},{"$type":"RuleCall","rule":{"$ref":"#/rules@25"},"arguments":[]},{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@52"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@42"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@1"},"arguments":[]}],"cardinality":"*"}]},"fragment":false,"parameters":[]},{"$type":"ParserRule","fragment":true,"name":"Statement","definition":{"$type":"Alternatives","elements":[{"$type":"Assignment","feature":"size","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@2"},"arguments":[]}},{"$type":"Assignment","feature":"evolution","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@3"},"arguments":[]}},{"$type":"Assignment","feature":"anchors","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@5"},"arguments":[]}},{"$type":"Assignment","feature":"components","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@6"},"arguments":[]}},{"$type":"Assignment","feature":"links","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@9"},"arguments":[]}},{"$type":"Assignment","feature":"evolves","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@10"},"arguments":[]}},{"$type":"Assignment","feature":"pipelines","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@11"},"arguments":[]}},{"$type":"Assignment","feature":"notes","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@13"},"arguments":[]}},{"$type":"Assignment","feature":"annotations","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@14"},"arguments":[]}},{"$type":"Assignment","feature":"annotation","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@15"},"arguments":[]}},{"$type":"Assignment","feature":"accelerators","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}},{"$type":"Assignment","feature":"deaccelerators","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@18"},"arguments":[]}}]},"entry":false,"parameters":[]},{"$type":"ParserRule","name":"Size","definition":{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@26"},"arguments":[]},{"$type":"Keyword","value":"["},{"$type":"Assignment","feature":"width","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@48"},"arguments":[]}},{"$type":"Keyword","value":","},{"$type":"Assignment","feature":"height","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@48"},"arguments":[]}},{"$type":"Keyword","value":"]"},{"$type":"RuleCall","rule":{"$ref":"#/rules@41"},"arguments":[]}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"Evolution","definition":{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@27"},"arguments":[]},{"$type":"Assignment","feature":"stages","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@4"},"arguments":[]}},{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@20"},"arguments":[]},{"$type":"Assignment","feature":"stages","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@4"},"arguments":[]}}],"cardinality":"+"},{"$type":"RuleCall","rule":{"$ref":"#/rules@41"},"arguments":[]}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"EvolutionStage","definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@51"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@50"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@39"},"arguments":[]}]}},{"$type":"Group","elements":[{"$type":"Keyword","value":"@"},{"$type":"Assignment","feature":"boundary","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@19"},"arguments":[]}}],"cardinality":"?"},{"$type":"Group","elements":[{"$type":"Keyword","value":"/"},{"$type":"Assignment","feature":"secondName","operator":"=","terminal":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@51"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@50"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@39"},"arguments":[]}]}}],"cardinality":"?"}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"Anchor","definition":{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@28"},"arguments":[]},{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@50"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@51"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@39"},"arguments":[]}]}},{"$type":"Keyword","value":"["},{"$type":"Assignment","feature":"visibility","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@19"},"arguments":[]}},{"$type":"Keyword","value":","},{"$type":"Assignment","feature":"evolution","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@19"},"arguments":[]}},{"$type":"Keyword","value":"]"},{"$type":"RuleCall","rule":{"$ref":"#/rules@41"},"arguments":[]}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"Component","definition":{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@29"},"arguments":[]},{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@50"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@51"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@39"},"arguments":[]}]}},{"$type":"Keyword","value":"["},{"$type":"Assignment","feature":"visibility","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@19"},"arguments":[]}},{"$type":"Keyword","value":","},{"$type":"Assignment","feature":"evolution","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@19"},"arguments":[]}},{"$type":"Keyword","value":"]"},{"$type":"Assignment","feature":"label","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@7"},"arguments":[]},"cardinality":"?"},{"$type":"Assignment","feature":"decorator","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@8"},"arguments":[]},"cardinality":"?"},{"$type":"Alternatives","elements":[{"$type":"Assignment","feature":"inertia","operator":"?=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@31"},"arguments":[]}},{"$type":"Group","elements":[{"$type":"Keyword","value":"("},{"$type":"Assignment","feature":"inertia","operator":"?=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@31"},"arguments":[]}},{"$type":"Keyword","value":")"}]}],"cardinality":"?"},{"$type":"RuleCall","rule":{"$ref":"#/rules@41"},"arguments":[]}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"Label","definition":{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@30"},"arguments":[]},{"$type":"Keyword","value":"["},{"$type":"Assignment","feature":"negX","operator":"?=","terminal":{"$type":"Keyword","value":"-"},"cardinality":"?"},{"$type":"Assignment","feature":"offsetX","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@48"},"arguments":[]}},{"$type":"Keyword","value":","},{"$type":"Assignment","feature":"negY","operator":"?=","terminal":{"$type":"Keyword","value":"-"},"cardinality":"?"},{"$type":"Assignment","feature":"offsetY","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@48"},"arguments":[]}},{"$type":"Keyword","value":"]"}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"Decorator","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"("},{"$type":"Assignment","feature":"strategy","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@24"},"arguments":[]}},{"$type":"Keyword","value":")"}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"Link","definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"from","operator":"=","terminal":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@50"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@51"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@39"},"arguments":[]}]}},{"$type":"Assignment","feature":"fromPort","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@21"},"arguments":[]},"cardinality":"?"},{"$type":"Assignment","feature":"arrow","operator":"=","terminal":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@22"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@20"},"arguments":[]}]},"cardinality":"?"},{"$type":"Assignment","feature":"to","operator":"=","terminal":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@50"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@51"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@39"},"arguments":[]}]}},{"$type":"Assignment","feature":"toPort","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@21"},"arguments":[]},"cardinality":"?"},{"$type":"Assignment","feature":"linkLabel","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@23"},"arguments":[]},"cardinality":"?"},{"$type":"RuleCall","rule":{"$ref":"#/rules@41"},"arguments":[]}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"Evolve","definition":{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@32"},"arguments":[]},{"$type":"Assignment","feature":"component","operator":"=","terminal":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@50"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@51"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@39"},"arguments":[]}]}},{"$type":"Assignment","feature":"target","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@19"},"arguments":[]}},{"$type":"RuleCall","rule":{"$ref":"#/rules@41"},"arguments":[]}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"Pipeline","definition":{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@33"},"arguments":[]},{"$type":"Assignment","feature":"parent","operator":"=","terminal":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@50"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@51"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@39"},"arguments":[]}]}},{"$type":"Keyword","value":"{"},{"$type":"RuleCall","rule":{"$ref":"#/rules@52"},"arguments":[],"cardinality":"+"},{"$type":"Assignment","feature":"components","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@12"},"arguments":[]},"cardinality":"+"},{"$type":"Keyword","value":"}"},{"$type":"RuleCall","rule":{"$ref":"#/rules@41"},"arguments":[]}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"PipelineComponent","definition":{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@29"},"arguments":[]},{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@50"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@51"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@39"},"arguments":[]}]}},{"$type":"Keyword","value":"["},{"$type":"Assignment","feature":"evolution","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@19"},"arguments":[]}},{"$type":"Keyword","value":"]"},{"$type":"Assignment","feature":"label","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@7"},"arguments":[]},"cardinality":"?"},{"$type":"RuleCall","rule":{"$ref":"#/rules@41"},"arguments":[]}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"Note","definition":{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@34"},"arguments":[]},{"$type":"Assignment","feature":"text","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@50"},"arguments":[]}},{"$type":"Keyword","value":"["},{"$type":"Assignment","feature":"visibility","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@19"},"arguments":[]}},{"$type":"Keyword","value":","},{"$type":"Assignment","feature":"evolution","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@19"},"arguments":[]}},{"$type":"Keyword","value":"]"},{"$type":"RuleCall","rule":{"$ref":"#/rules@41"},"arguments":[]}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"Annotations","definition":{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@35"},"arguments":[]},{"$type":"Keyword","value":"["},{"$type":"Assignment","feature":"x","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@16"},"arguments":[]}},{"$type":"Keyword","value":","},{"$type":"Assignment","feature":"y","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@16"},"arguments":[]}},{"$type":"Keyword","value":"]"},{"$type":"RuleCall","rule":{"$ref":"#/rules@41"},"arguments":[]}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"Annotation","definition":{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@36"},"arguments":[]},{"$type":"Assignment","feature":"number","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@48"},"arguments":[]}},{"$type":"Keyword","value":","},{"$type":"Keyword","value":"["},{"$type":"Assignment","feature":"x","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@16"},"arguments":[]}},{"$type":"Keyword","value":","},{"$type":"Assignment","feature":"y","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@16"},"arguments":[]}},{"$type":"Keyword","value":"]"},{"$type":"Assignment","feature":"text","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@50"},"arguments":[]}},{"$type":"RuleCall","rule":{"$ref":"#/rules@41"},"arguments":[]}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"CoordinateValue","dataType":"number","definition":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@19"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@48"},"arguments":[]}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"Accelerator","definition":{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@37"},"arguments":[]},{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@50"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@51"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@39"},"arguments":[]}]}},{"$type":"Keyword","value":"["},{"$type":"Assignment","feature":"x","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@19"},"arguments":[]}},{"$type":"Keyword","value":","},{"$type":"Assignment","feature":"y","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@19"},"arguments":[]}},{"$type":"Keyword","value":"]"},{"$type":"RuleCall","rule":{"$ref":"#/rules@41"},"arguments":[]}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"Deaccelerator","definition":{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@38"},"arguments":[]},{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@50"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@51"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@39"},"arguments":[]}]}},{"$type":"Keyword","value":"["},{"$type":"Assignment","feature":"x","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@19"},"arguments":[]}},{"$type":"Keyword","value":","},{"$type":"Assignment","feature":"y","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@19"},"arguments":[]}},{"$type":"Keyword","value":"]"},{"$type":"RuleCall","rule":{"$ref":"#/rules@41"},"arguments":[]}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"TerminalRule","name":"WARDLEY_NUMBER","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"RegexToken","regex":"/[0-9]+\\\\.[0-9]+/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ARROW","definition":{"$type":"CharacterRange","left":{"$type":"Keyword","value":"->"},"parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"LINK_PORT","definition":{"$type":"TerminalAlternatives","elements":[{"$type":"TerminalAlternatives","elements":[{"$type":"CharacterRange","left":{"$type":"Keyword","value":"+<>"},"parenthesized":false},{"$type":"CharacterRange","left":{"$type":"Keyword","value":"+>"},"parenthesized":false}],"parenthesized":false},{"$type":"CharacterRange","left":{"$type":"Keyword","value":"+<"},"parenthesized":false}],"parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"LINK_ARROW","definition":{"$type":"TerminalAlternatives","elements":[{"$type":"TerminalAlternatives","elements":[{"$type":"TerminalAlternatives","elements":[{"$type":"TerminalAlternatives","elements":[{"$type":"TerminalAlternatives","elements":[{"$type":"CharacterRange","left":{"$type":"Keyword","value":"-->"},"parenthesized":false},{"$type":"CharacterRange","left":{"$type":"Keyword","value":"-.->"},"parenthesized":false}],"parenthesized":false},{"$type":"CharacterRange","left":{"$type":"Keyword","value":">"},"parenthesized":false}],"parenthesized":false},{"$type":"RegexToken","regex":"/\\\\+'[^']*'<>/","parenthesized":false}],"parenthesized":false},{"$type":"RegexToken","regex":"/\\\\+'[^']*'</","parenthesized":false}],"parenthesized":false},{"$type":"RegexToken","regex":"/\\\\+'[^']*'>/","parenthesized":false}],"parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"LINK_LABEL","definition":{"$type":"RegexToken","regex":"/;[^\\\\n\\\\r]+/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"STRATEGY","definition":{"$type":"TerminalAlternatives","elements":[{"$type":"TerminalAlternatives","elements":[{"$type":"TerminalAlternatives","elements":[{"$type":"CharacterRange","left":{"$type":"Keyword","value":"build"},"parenthesized":false},{"$type":"CharacterRange","left":{"$type":"Keyword","value":"buy"},"parenthesized":false}],"parenthesized":false},{"$type":"CharacterRange","left":{"$type":"Keyword","value":"outsource"},"parenthesized":false}],"parenthesized":false},{"$type":"CharacterRange","left":{"$type":"Keyword","value":"market"},"parenthesized":false}],"parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"KW_WARDLEY","definition":{"$type":"CharacterRange","left":{"$type":"Keyword","value":"wardley-beta"},"parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"KW_SIZE","definition":{"$type":"CharacterRange","left":{"$type":"Keyword","value":"size"},"parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"KW_EVOLUTION","definition":{"$type":"CharacterRange","left":{"$type":"Keyword","value":"evolution"},"parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"KW_ANCHOR","definition":{"$type":"CharacterRange","left":{"$type":"Keyword","value":"anchor"},"parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"KW_COMPONENT","definition":{"$type":"CharacterRange","left":{"$type":"Keyword","value":"component"},"parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"KW_LABEL","definition":{"$type":"CharacterRange","left":{"$type":"Keyword","value":"label"},"parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"KW_INERTIA","definition":{"$type":"CharacterRange","left":{"$type":"Keyword","value":"inertia"},"parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"KW_EVOLVE","definition":{"$type":"CharacterRange","left":{"$type":"Keyword","value":"evolve"},"parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"KW_PIPELINE","definition":{"$type":"CharacterRange","left":{"$type":"Keyword","value":"pipeline"},"parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"KW_NOTE","definition":{"$type":"CharacterRange","left":{"$type":"Keyword","value":"note"},"parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"KW_ANNOTATIONS","definition":{"$type":"CharacterRange","left":{"$type":"Keyword","value":"annotations"},"parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"KW_ANNOTATION","definition":{"$type":"CharacterRange","left":{"$type":"Keyword","value":"annotation"},"parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"KW_ACCELERATOR","definition":{"$type":"CharacterRange","left":{"$type":"Keyword","value":"accelerator"},"parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"KW_DEACCELERATOR","definition":{"$type":"CharacterRange","left":{"$type":"Keyword","value":"deaccelerator"},"parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"NAME_WITH_SPACES","definition":{"$type":"RegexToken","regex":"/(?!title\\\\s|accTitle|accDescr)[A-Za-z](?:[A-Za-z0-9_()&]|-(?!>))*(?:[ \\\\t]+[A-Za-z(](?:[A-Za-z0-9_()&]|-(?!>))*)*/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","hidden":true,"name":"WS","definition":{"$type":"RegexToken","regex":"/[ \\\\t]+/","parenthesized":false},"fragment":false},{"$type":"ParserRule","name":"EOL","dataType":"string","definition":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@52"},"arguments":[],"cardinality":"+"},{"$type":"EndOfFile"}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","fragment":true,"name":"TitleAndAccessibilities","definition":{"$type":"Group","elements":[{"$type":"Alternatives","elements":[{"$type":"Assignment","feature":"accDescr","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@44"},"arguments":[]}},{"$type":"Assignment","feature":"accTitle","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@45"},"arguments":[]}},{"$type":"Assignment","feature":"title","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@46"},"arguments":[]}}]},{"$type":"RuleCall","rule":{"$ref":"#/rules@41"},"arguments":[]}],"cardinality":"+"},"entry":false,"parameters":[]},{"$type":"TerminalRule","name":"BOOLEAN","type":{"$type":"ReturnType","name":"boolean"},"definition":{"$type":"TerminalAlternatives","elements":[{"$type":"CharacterRange","left":{"$type":"Keyword","value":"true"},"parenthesized":false},{"$type":"CharacterRange","left":{"$type":"Keyword","value":"false"},"parenthesized":false}],"parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ACC_DESCR","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*accDescr(?:[\\\\t ]*:([^\\\\n\\\\r]*?(?=%%)|[^\\\\n\\\\r]*)|\\\\s*{([^}]*)})/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ACC_TITLE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*accTitle[\\\\t ]*:(?:[^\\\\n\\\\r]*?(?=%%)|[^\\\\n\\\\r]*)/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"TITLE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*title(?:[\\\\t ][^\\\\n\\\\r]*?(?=%%)|[\\\\t ][^\\\\n\\\\r]*|)/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"FLOAT","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"RegexToken","regex":"/[0-9]+\\\\.[0-9]+(?!\\\\.)/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"INT","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"RegexToken","regex":"/0|[1-9][0-9]*(?!\\\\.)/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"NUMBER","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"TerminalAlternatives","elements":[{"$type":"TerminalRuleCall","rule":{"$ref":"#/rules@47"},"parenthesized":false},{"$type":"TerminalRuleCall","rule":{"$ref":"#/rules@48"},"parenthesized":false}],"parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"STRING","type":{"$type":"ReturnType","name":"string"},"definition":{"$type":"RegexToken","regex":"/\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\"|'([^'\\\\\\\\]|\\\\\\\\.)*'/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ID","type":{"$type":"ReturnType","name":"string"},"definition":{"$type":"RegexToken","regex":"/[\\\\w]([-\\\\w]*\\\\w)?/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"NEWLINE","definition":{"$type":"RegexToken","regex":"/\\\\r?\\\\n/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","hidden":true,"name":"WHITESPACE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]+/","parenthesized":false},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"YAML","definition":{"$type":"RegexToken","regex":"/---[\\\\t ]*\\\\r?\\\\n(?:[\\\\S\\\\s]*?\\\\r?\\\\n)?---(?:\\\\r?\\\\n|(?!\\\\S))/","parenthesized":false},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"DIRECTIVE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*%%{[\\\\S\\\\s]*?}%%(?:\\\\r?\\\\n|(?!\\\\S))/","parenthesized":false},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"SINGLE_LINE_COMMENT","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*%%[^\\\\n\\\\r]*/","parenthesized":false},"fragment":false}],"interfaces":[],"types":[]}`)),"WardleyGrammarGrammar"),$vt={languageId:"architecture",fileExtensions:[".mmd",".mermaid"],caseInsensitive:!1,mode:"production"},zvt={languageId:"eventmodeling",fileExtensions:[".mmd",".mermaid"],caseInsensitive:!1,mode:"production"},Gvt={languageId:"gitGraph",fileExtensions:[".mmd",".mermaid"],caseInsensitive:!1,mode:"production"},Vvt={languageId:"info",fileExtensions:[".mmd",".mermaid"],caseInsensitive:!1,mode:"production"},Wvt={languageId:"packet",fileExtensions:[".mmd",".mermaid"],caseInsensitive:!1,mode:"production"},qvt={languageId:"pie",fileExtensions:[".mmd",".mermaid"],caseInsensitive:!1,mode:"production"},Uvt={languageId:"radar",fileExtensions:[".mmd",".mermaid"],caseInsensitive:!1,mode:"production"},Hvt={languageId:"treemap",fileExtensions:[".mmd",".mermaid"],caseInsensitive:!1,mode:"production"},Yvt={languageId:"treeView",fileExtensions:[".mmd",".mermaid"],caseInsensitive:!1,mode:"production"},jvt={languageId:"wardley",fileExtensions:[".mmd",".mermaid"],caseInsensitive:!1,mode:"production"},xn={AstReflection:S(()=>new gEe,"AstReflection")},YG={Grammar:S(()=>Dvt(),"Grammar"),LanguageMetaData:S(()=>$vt,"LanguageMetaData"),parser:{}},jG={Grammar:S(()=>Rvt(),"Grammar"),LanguageMetaData:S(()=>zvt,"LanguageMetaData"),parser:{}},XG={Grammar:S(()=>Lvt(),"Grammar"),LanguageMetaData:S(()=>Gvt,"LanguageMetaData"),parser:{}},KG={Grammar:S(()=>Mvt(),"Grammar"),LanguageMetaData:S(()=>Vvt,"LanguageMetaData"),parser:{}},ZG={Grammar:S(()=>Nvt(),"Grammar"),LanguageMetaData:S(()=>Wvt,"LanguageMetaData"),parser:{}},QG={Grammar:S(()=>Ivt(),"Grammar"),LanguageMetaData:S(()=>qvt,"LanguageMetaData"),parser:{}},JG={Grammar:S(()=>Ovt(),"Grammar"),LanguageMetaData:S(()=>Uvt,"LanguageMetaData"),parser:{}},eV={Grammar:S(()=>Pvt(),"Grammar"),LanguageMetaData:S(()=>Hvt,"LanguageMetaData"),parser:{}},tV={Grammar:S(()=>Bvt(),"Grammar"),LanguageMetaData:S(()=>Yvt,"LanguageMetaData"),parser:{}},rV={Grammar:S(()=>Fvt(),"Grammar"),LanguageMetaData:S(()=>jvt,"LanguageMetaData"),parser:{}},Xvt=/accDescr(?:[\t ]*:([^\n\r]*)|\s*{([^}]*)})/,Kvt=/accTitle[\t ]*:([^\n\r]*)/,Zvt=/title([\t ][^\n\r]*|)/,Qvt={ACC_DESCR:Xvt,ACC_TITLE:Kvt,TITLE:Zvt},nl=class extends SG{static{o(this,"AbstractMermaidValueConverter")}static{S(this,"AbstractMermaidValueConverter")}runConverter(e,t,r){let i=this.runCommonConverter(e,t,r);return i===void 0&&(i=this.runCustomConverter(e,t,r)),i===void 0?super.runConverter(e,t,r):i}runCommonConverter(e,t,r){let i=Qvt[e.name];if(i===void 0)return;let n=i.exec(t);if(n!==null){if(n[1]!==void 0)return n[1].trim().replace(/[\t ]{2,}/gm," ");if(n[2]!==void 0)return n[2].replace(/^\s*/gm,"").replace(/\s+$/gm,"").replace(/[\t ]{2,}/gm," ").replace(/[\n\r]{2,}/gm,`
-`)}}},Kl=class extends nl{static{o(this,"CommonValueConverter")}static{S(this,"CommonValueConverter")}runCustomConverter(e,t,r){}},Ln=class extends qA{static{o(this,"AbstractMermaidTokenBuilder")}static{S(this,"AbstractMermaidTokenBuilder")}constructor(e){super(),this.keywords=new Set(e)}buildKeywordTokens(e,t,r){let i=super.buildKeywordTokens(e,t,r);return i.forEach(n=>{this.keywords.has(n.name)&&n.PATTERN!==void 0&&(n.PATTERN=new RegExp(n.PATTERN.toString()+"(?:(?=%%)|(?!\\S))"))}),i}},Jvt=class extends Ln{static{o(this,"CommonTokenBuilder")}static{S(this,"CommonTokenBuilder")}};});function t6(e=fn){let t=Hr(nn(e),xn),r=Hr(rn({shared:t}),JG,e6);return t.ServiceRegistry.register(r),{shared:t,Radar:r}}var ext,e6,iV=z(()=>{"use strict";pn();ext=class extends Ln{static{o(this,"RadarTokenBuilder")}static{S(this,"RadarTokenBuilder")}constructor(){super(["radar-beta"])}},e6={parser:{TokenBuilder:S(()=>new ext,"TokenBuilder"),ValueConverter:S(()=>new Kl,"ValueConverter")}};o(t6,"createRadarServices");S(t6,"createRadarServices")});function yEe(e){let t=e.validation.TreemapValidator,r=e.validation.ValidationRegistry;if(r){let i={Treemap:t.checkSingleRoot.bind(t)};r.register(i,t)}}function i6(e=fn){let t=Hr(nn(e),xn),r=Hr(rn({shared:t}),eV,r6);return t.ServiceRegistry.register(r),yEe(r),{shared:t,Treemap:r}}var txt,rxt,ixt,nxt,r6,nV=z(()=>{"use strict";pn();txt=class extends Ln{static{o(this,"TreemapTokenBuilder")}static{S(this,"TreemapTokenBuilder")}constructor(){super(["treemap"])}},rxt=/classDef\s+([A-Z_a-z]\w+)(?:\s+([^\n\r;]*))?;?/,ixt=class extends nl{static{o(this,"TreemapValueConverter")}static{S(this,"TreemapValueConverter")}runCustomConverter(e,t,r){if(e.name==="NUMBER2")return parseFloat(t.replace(/,/g,""));if(e.name==="SEPARATOR")return t.substring(1,t.length-1);if(e.name==="STRING2")return t.substring(1,t.length-1);if(e.name==="INDENTATION")return t.length;if(e.name==="ClassDef"){if(typeof t!="string")return t;let i=rxt.exec(t);if(i)return{$type:"ClassDefStatement",className:i[1],styleText:i[2]||void 0}}}};o(yEe,"registerValidationChecks");S(yEe,"registerValidationChecks");nxt=class{static{o(this,"TreemapValidator")}static{S(this,"TreemapValidator")}checkSingleRoot(e,t){let r;for(let i of e.TreemapRows)i.item&&(r===void 0&&i.indent===void 0?r=0:i.indent===void 0?t("error","Multiple root nodes are not allowed in a treemap.",{node:i,property:"item"}):r!==void 0&&r>=parseInt(i.indent,10)&&t("error","Multiple root nodes are not allowed in a treemap.",{node:i,property:"item"}))}},r6={parser:{TokenBuilder:S(()=>new txt,"TokenBuilder"),ValueConverter:S(()=>new ixt,"ValueConverter")},validation:{TreemapValidator:S(()=>new nxt,"TreemapValidator")}};o(i6,"createTreemapServices");S(i6,"createTreemapServices")});function a6(e=fn){let t=Hr(nn(e),xn),r=Hr(rn({shared:t}),rV,n6);return t.ServiceRegistry.register(r),{shared:t,Wardley:r}}var axt,n6,aV=z(()=>{"use strict";pn();axt=class extends nl{static{o(this,"WardleyValueConverter")}static{S(this,"WardleyValueConverter")}runCustomConverter(e,t,r){switch(e.name.toUpperCase()){case"LINK_LABEL":return t.substring(1).trim();default:return}}},n6={parser:{ValueConverter:S(()=>new axt,"ValueConverter")}};o(a6,"createWardleyServices");S(a6,"createWardleyServices")});function o6(e=fn){let t=Hr(nn(e),xn),r=Hr(rn({shared:t}),XG,s6);return t.ServiceRegistry.register(r),{shared:t,GitGraph:r}}var sxt,s6,sV=z(()=>{"use strict";pn();sxt=class extends Ln{static{o(this,"GitGraphTokenBuilder")}static{S(this,"GitGraphTokenBuilder")}constructor(){super(["gitGraph"])}},s6={parser:{TokenBuilder:S(()=>new sxt,"TokenBuilder"),ValueConverter:S(()=>new Kl,"ValueConverter")}};o(o6,"createGitGraphServices");S(o6,"createGitGraphServices")});function c6(e=fn){let t=Hr(nn(e),xn),r=Hr(rn({shared:t}),KG,l6);return t.ServiceRegistry.register(r),{shared:t,Info:r}}var oxt,l6,oV=z(()=>{"use strict";pn();oxt=class extends Ln{static{o(this,"InfoTokenBuilder")}static{S(this,"InfoTokenBuilder")}constructor(){super(["info","showInfo"])}},l6={parser:{TokenBuilder:S(()=>new oxt,"TokenBuilder"),ValueConverter:S(()=>new Kl,"ValueConverter")}};o(c6,"createInfoServices");S(c6,"createInfoServices")});function h6(e=fn){let t=Hr(nn(e),xn),r=Hr(rn({shared:t}),ZG,u6);return t.ServiceRegistry.register(r),{shared:t,Packet:r}}var lxt,u6,lV=z(()=>{"use strict";pn();lxt=class extends Ln{static{o(this,"PacketTokenBuilder")}static{S(this,"PacketTokenBuilder")}constructor(){super(["packet"])}},u6={parser:{TokenBuilder:S(()=>new lxt,"TokenBuilder"),ValueConverter:S(()=>new Kl,"ValueConverter")}};o(h6,"createPacketServices");S(h6,"createPacketServices")});function f6(e=fn){let t=Hr(nn(e),xn),r=Hr(rn({shared:t}),QG,d6);return t.ServiceRegistry.register(r),{shared:t,Pie:r}}var cxt,uxt,d6,cV=z(()=>{"use strict";pn();cxt=class extends Ln{static{o(this,"PieTokenBuilder")}static{S(this,"PieTokenBuilder")}constructor(){super(["pie","showData"])}},uxt=class extends nl{static{o(this,"PieValueConverter")}static{S(this,"PieValueConverter")}runCustomConverter(e,t,r){if(e.name==="PIE_SECTION_LABEL")return t.replace(/"/g,"").trim()}},d6={parser:{TokenBuilder:S(()=>new cxt,"TokenBuilder"),ValueConverter:S(()=>new uxt,"ValueConverter")}};o(f6,"createPieServices");S(f6,"createPieServices")});function m6(e=fn){let t=Hr(nn(e),xn),r=Hr(rn({shared:t}),tV,p6);return t.ServiceRegistry.register(r),{shared:t,TreeView:r}}var hxt,dxt,p6,uV=z(()=>{"use strict";pn();hxt=class extends nl{static{o(this,"TreeViewValueConverter")}static{S(this,"TreeViewValueConverter")}runCustomConverter(e,t,r){if(e.name==="INDENTATION")return t?.length||0;if(e.name==="STRING2")return t.substring(1,t.length-1)}},dxt=class extends Ln{static{o(this,"TreeViewTokenBuilder")}static{S(this,"TreeViewTokenBuilder")}constructor(){super(["treeView-beta"])}},p6={parser:{TokenBuilder:S(()=>new dxt,"TokenBuilder"),ValueConverter:S(()=>new hxt,"ValueConverter")}};o(m6,"createTreeViewServices");S(m6,"createTreeViewServices")});function y6(e=fn){let t=Hr(nn(e),xn),r=Hr(rn({shared:t}),YG,g6);return t.ServiceRegistry.register(r),{shared:t,Architecture:r}}var fxt,pxt,g6,hV=z(()=>{"use strict";pn();fxt=class extends Ln{static{o(this,"ArchitectureTokenBuilder")}static{S(this,"ArchitectureTokenBuilder")}constructor(){super(["architecture"])}},pxt=class extends nl{static{o(this,"ArchitectureValueConverter")}static{S(this,"ArchitectureValueConverter")}runCustomConverter(e,t,r){if(e.name==="ARCH_ICON")return t.replace(/[()]/g,"").trim();if(e.name==="ARCH_TEXT_ICON")return t.replace(/["()]/g,"");if(e.name==="ARCH_TITLE"){let i=t.replace(/^\[|]$/g,"").trim();return(i.startsWith('"')&&i.endsWith('"')||i.startsWith("'")&&i.endsWith("'"))&&(i=i.slice(1,-1),i=i.replace(/\\"/g,'"').replace(/\\'/g,"'")),i.trim()}}},g6={parser:{TokenBuilder:S(()=>new fxt,"TokenBuilder"),ValueConverter:S(()=>new pxt,"ValueConverter")}};o(y6,"createArchitectureServices");S(y6,"createArchitectureServices")});function CEe(e){let t=e.validation.EventModelingValidator,r=e.validation.ValidationRegistry;if(r){let i={EmTimeFrame:t.checkSourceFrameTypes.bind(t),EmResetFrame:t.checkSourceFrameTypes.bind(t)};r.register(i,t)}}function x6(e=fn){let t=Hr(nn(e),xn),r=Hr(rn({shared:t}),jG,v6);return t.ServiceRegistry.register(r),CEe(r),{shared:t,EventModel:r}}var mxt,vEe,xEe,dV,bEe,TEe,gxt,v6,fV=z(()=>{"use strict";pn();mxt=class extends Ln{static{o(this,"EventModelingTokenBuilder")}static{S(this,"EventModelingTokenBuilder")}constructor(){super(["eventmodeling"])}},vEe=new Set(["cmd","command"]),xEe=new Set(["evt","event"]),dV=new Set(["rmo","readmodel"]),bEe=new Set(["pcr","processor"]),TEe=new Set(["ui"]);o(CEe,"registerValidationChecks");S(CEe,"registerValidationChecks");gxt=class{static{o(this,"EventModelingValidator")}static{S(this,"EventModelingValidator")}checkSourceFrameTypes(e,t){e.sourceFrames.length!==0&&(vEe.has(e.modelEntityType)?this.validateSources(e,new Set([...TEe,...bEe]),"command","ui or processor",t):xEe.has(e.modelEntityType)?this.validateSources(e,vEe,"event","command",t):dV.has(e.modelEntityType)?this.validateSources(e,xEe,"read model","event",t):bEe.has(e.modelEntityType)?this.validateSources(e,dV,"processor","read model",t):TEe.has(e.modelEntityType)&&this.validateSources(e,dV,"ui","read model",t))}validateSources(e,t,r,i,n){for(let a of e.sourceFrames){let s=a.ref;s!==void 0&&!t.has(s.modelEntityType)&&n("error",`A ${r} can only receive input from a ${i}, not from '${s.modelEntityType}'.`,{node:e,property:"sourceFrames"})}}},v6={parser:{TokenBuilder:S(()=>new mxt,"TokenBuilder"),ValueConverter:S(()=>new Kl,"ValueConverter")},validation:{EventModelingValidator:S(()=>new gxt,"EventModelingValidator")}};o(x6,"createEventModelingServices");S(x6,"createEventModelingServices")});var kEe={};xr(kEe,{InfoModule:()=>l6,createInfoServices:()=>c6});var wEe=z(()=>{"use strict";oV();pn()});var SEe={};xr(SEe,{PacketModule:()=>u6,createPacketServices:()=>h6});var EEe=z(()=>{"use strict";lV();pn()});var AEe={};xr(AEe,{PieModule:()=>d6,createPieServices:()=>f6});var _Ee=z(()=>{"use strict";cV();pn()});var DEe={};xr(DEe,{TreeViewModule:()=>p6,createTreeViewServices:()=>m6});var REe=z(()=>{"use strict";uV();pn()});var LEe={};xr(LEe,{ArchitectureModule:()=>g6,createArchitectureServices:()=>y6});var MEe=z(()=>{"use strict";hV();pn()});var NEe={};xr(NEe,{GitGraphModule:()=>s6,createGitGraphServices:()=>o6});var IEe=z(()=>{"use strict";sV();pn()});var OEe={};xr(OEe,{EventModelingModule:()=>v6,createEventModelingServices:()=>x6});var PEe=z(()=>{"use strict";fV();pn()});var BEe={};xr(BEe,{RadarModule:()=>e6,createRadarServices:()=>t6});var FEe=z(()=>{"use strict";iV();pn()});var $Ee={};xr($Ee,{TreemapModule:()=>r6,createTreemapServices:()=>i6});var zEe=z(()=>{"use strict";nV();pn()});var GEe={};xr(GEe,{WardleyModule:()=>n6,createWardleyServices:()=>a6});var VEe=z(()=>{"use strict";aV();pn()});async function bn(e,t){let r=yxt[e];if(!r)throw new Error(`Unknown diagram type: ${e}`);al[e]||await r();let n=al[e].parse(t);if(n.lexerErrors.length>0||n.parserErrors.length>0)throw new vxt(n);return n.value}var al,yxt,vxt,sl=z(()=>{"use strict";iV();nV();aV();sV();oV();lV();cV();uV();hV();fV();pn();al={},yxt={info:S(async()=>{let{createInfoServices:e}=await Promise.resolve().then(()=>(wEe(),kEe)),t=e().Info.parser.LangiumParser;al.info=t},"info"),packet:S(async()=>{let{createPacketServices:e}=await Promise.resolve().then(()=>(EEe(),SEe)),t=e().Packet.parser.LangiumParser;al.packet=t},"packet"),pie:S(async()=>{let{createPieServices:e}=await Promise.resolve().then(()=>(_Ee(),AEe)),t=e().Pie.parser.LangiumParser;al.pie=t},"pie"),treeView:S(async()=>{let{createTreeViewServices:e}=await Promise.resolve().then(()=>(REe(),DEe)),t=e().TreeView.parser.LangiumParser;al.treeView=t},"treeView"),architecture:S(async()=>{let{createArchitectureServices:e}=await Promise.resolve().then(()=>(MEe(),LEe)),t=e().Architecture.parser.LangiumParser;al.architecture=t},"architecture"),gitGraph:S(async()=>{let{createGitGraphServices:e}=await Promise.resolve().then(()=>(IEe(),NEe)),t=e().GitGraph.parser.LangiumParser;al.gitGraph=t},"gitGraph"),eventmodeling:S(async()=>{let{createEventModelingServices:e}=await Promise.resolve().then(()=>(PEe(),OEe)),t=e().EventModel.parser.LangiumParser;al.eventmodeling=t},"eventmodeling"),radar:S(async()=>{let{createRadarServices:e}=await Promise.resolve().then(()=>(FEe(),BEe)),t=e().Radar.parser.LangiumParser;al.radar=t},"radar"),treemap:S(async()=>{let{createTreemapServices:e}=await Promise.resolve().then(()=>(zEe(),$Ee)),t=e().Treemap.parser.LangiumParser;al.treemap=t},"treemap"),wardley:S(async()=>{let{createWardleyServices:e}=await Promise.resolve().then(()=>(VEe(),GEe)),t=e().Wardley.parser.LangiumParser;al.wardley=t},"wardley")};o(bn,"parse");S(bn,"parse");vxt=class extends Error{static{o(this,"MermaidParseError")}constructor(e){let t=e.lexerErrors.map(i=>{let n=i.line!==void 0&&!isNaN(i.line)?i.line:"?",a=i.column!==void 0&&!isNaN(i.column)?i.column:"?";return`Lexer error on line ${n}, column ${a}: ${i.message}`}).join(`
-`),r=e.parserErrors.map(i=>{let n=i.token.startLine!==void 0&&!isNaN(i.token.startLine)?i.token.startLine:"?",a=i.token.startColumn!==void 0&&!isNaN(i.token.startColumn)?i.token.startColumn:"?";return`Parse error on line ${n}, column ${a}: ${i.message}`}).join(`
-`);super(`Parsing failed: ${t} ${r}`),this.result=e}static{S(this,"MermaidParseError")}}});function ca(e,t){e.accDescr&&t.setAccDescription?.(e.accDescr),e.accTitle&&t.setAccTitle?.(e.accTitle),e.title&&t.setDiagramTitle?.(e.title)}var au=z(()=>{"use strict";o(ca,"populateCommonDb")});var si,b6=z(()=>{"use strict";si={NORMAL:0,REVERSE:1,HIGHLIGHT:2,MERGE:3,CHERRY_PICK:4}});var wf,T6=z(()=>{"use strict";wf=class{constructor(t){this.init=t;this.records=this.init()}static{o(this,"ImperativeState")}reset(){this.records=this.init()}}});function pV(){return RM({length:7})}function bxt(e,t){let r=Object.create(null);return e.reduce((i,n)=>{let a=t(n);return r[a]||(r[a]=!0,i.push(n)),i},[])}function WEe(e,t,r){let i=e.indexOf(t);i===-1?e.push(r):e.splice(i,1,r)}function UEe(e){let t=e.reduce((n,a)=>n.seq>a.seq?n:a,e[0]),r="";e.forEach(function(n){n===t?r+="	*":r+="	|"});let i=[r,t.id,t.seq];for(let n in Pt.records.branches)Pt.records.branches.get(n)===t.id&&i.push(n);if(Z.debug(i.join(" ")),t.parents&&t.parents.length==2&&t.parents[0]&&t.parents[1]){let n=Pt.records.commits.get(t.parents[0]);WEe(e,t,n),t.parents[1]&&e.push(Pt.records.commits.get(t.parents[1]))}else{if(t.parents.length==0)return;if(t.parents[0]){let n=Pt.records.commits.get(t.parents[0]);WEe(e,t,n)}}e=bxt(e,n=>n.id),UEe(e)}var xxt,um,Pt,Txt,Cxt,kxt,wxt,Sxt,Ext,Axt,qEe,_xt,Dxt,Rxt,Lxt,Mxt,HEe,Nxt,Ixt,Oxt,C6,mV=z(()=>{"use strict";St();Xt();br();Ir();Ci();b6();T6();Bn();xxt=or.gitGraph,um=o(()=>Gr({...xxt,...Nt().gitGraph}),"getConfig"),Pt=new wf(()=>{let e=um(),t=e.mainBranchName,r=e.mainBranchOrder;return{mainBranchName:t,commits:new Map,head:null,branchConfig:new Map([[t,{name:t,order:r}]]),branches:new Map([[t,null]]),currBranch:t,direction:"LR",seq:0,options:{}}});o(pV,"getID");o(bxt,"uniqBy");Txt=o(function(e){Pt.records.direction=e},"setDirection"),Cxt=o(function(e){Z.debug("options str",e),e=e?.trim(),e=e||"{}";try{Pt.records.options=JSON.parse(e)}catch(t){Z.error("error while parsing gitGraph options",t.message)}},"setOptions"),kxt=o(function(){return Pt.records.options},"getOptions"),wxt=o(function(e){let t=e.msg,r=e.id,i=e.type,n=e.tags;Z.info("commit",t,r,i,n),Z.debug("Entering commit:",t,r,i,n);let a=um();r=vt.sanitizeText(r,a),t=vt.sanitizeText(t,a),n=n?.map(l=>vt.sanitizeText(l,a));let s={id:r||Pt.records.seq+"-"+pV(),message:t,seq:Pt.records.seq++,type:i??si.NORMAL,tags:n??[],parents:Pt.records.head==null?[]:[Pt.records.head.id],branch:Pt.records.currBranch};Pt.records.head=s,Z.info("main branch",a.mainBranchName),Pt.records.commits.has(s.id)&&Z.warn(`Commit ID ${s.id} already exists`),Pt.records.commits.set(s.id,s),Pt.records.branches.set(Pt.records.currBranch,s.id),Z.debug("in pushCommit "+s.id)},"commit"),Sxt=o(function(e){let t=e.name,r=e.order;if(t=vt.sanitizeText(t,um()),Pt.records.branches.has(t))throw new Error(`Trying to create an existing branch. (Help: Either use a new name if you want create a new branch or try using "checkout ${t}")`);Pt.records.branches.set(t,Pt.records.head!=null?Pt.records.head.id:null),Pt.records.branchConfig.set(t,{name:t,order:r}),qEe(t),Z.debug("in createBranch")},"branch"),Ext=o(e=>{let t=e.branch,r=e.id,i=e.type,n=e.tags,a=um();t=vt.sanitizeText(t,a),r&&(r=vt.sanitizeText(r,a));let s=Pt.records.branches.get(Pt.records.currBranch),l=Pt.records.branches.get(t),u=s?Pt.records.commits.get(s):void 0,h=l?Pt.records.commits.get(l):void 0;if(u&&h&&u.branch===t)throw new Error(`Cannot merge branch '${t}' into itself.`);if(Pt.records.currBranch===t){let p=new Error('Incorrect usage of "merge". Cannot merge a branch to itself');throw p.hash={text:`merge ${t}`,token:`merge ${t}`,expected:["branch abc"]},p}if(u===void 0||!u){let p=new Error(`Incorrect usage of "merge". Current branch (${Pt.records.currBranch})has no commits`);throw p.hash={text:`merge ${t}`,token:`merge ${t}`,expected:["commit"]},p}if(!Pt.records.branches.has(t)){let p=new Error('Incorrect usage of "merge". Branch to be merged ('+t+") does not exist");throw p.hash={text:`merge ${t}`,token:`merge ${t}`,expected:[`branch ${t}`]},p}if(h===void 0||!h){let p=new Error('Incorrect usage of "merge". Branch to be merged ('+t+") has no commits");throw p.hash={text:`merge ${t}`,token:`merge ${t}`,expected:['"commit"']},p}if(u===h){let p=new Error('Incorrect usage of "merge". Both branches have same head');throw p.hash={text:`merge ${t}`,token:`merge ${t}`,expected:["branch abc"]},p}if(r&&Pt.records.commits.has(r)){let p=new Error('Incorrect usage of "merge". Commit with id:'+r+" already exists, use different custom id");throw p.hash={text:`merge ${t} ${r} ${i} ${n?.join(" ")}`,token:`merge ${t} ${r} ${i} ${n?.join(" ")}`,expected:[`merge ${t} ${r}_UNIQUE ${i} ${n?.join(" ")}`]},p}let d=l||"",f={id:r||`${Pt.records.seq}-${pV()}`,message:`merged branch ${t} into ${Pt.records.currBranch}`,seq:Pt.records.seq++,parents:Pt.records.head==null?[]:[Pt.records.head.id,d],branch:Pt.records.currBranch,type:si.MERGE,customType:i,customId:!!r,tags:n??[]};Pt.records.head=f,Pt.records.commits.set(f.id,f),Pt.records.branches.set(Pt.records.currBranch,f.id),Z.debug(Pt.records.branches),Z.debug("in mergeBranch")},"merge"),Axt=o(function(e){let t=e.id,r=e.targetId,i=e.tags,n=e.parent;Z.debug("Entering cherryPick:",t,r,i);let a=um();if(t=vt.sanitizeText(t,a),r=vt.sanitizeText(r,a),i=i?.map(u=>vt.sanitizeText(u,a)),n=vt.sanitizeText(n,a),!t||!Pt.records.commits.has(t)){let u=new Error('Incorrect usage of "cherryPick". Source commit id should exist and provided');throw u.hash={text:`cherryPick ${t} ${r}`,token:`cherryPick ${t} ${r}`,expected:["cherry-pick abc"]},u}let s=Pt.records.commits.get(t);if(s===void 0||!s)throw new Error('Incorrect usage of "cherryPick". Source commit id should exist and provided');if(n&&!(Array.isArray(s.parents)&&s.parents.includes(n)))throw new Error("Invalid operation: The specified parent commit is not an immediate parent of the cherry-picked commit.");let l=s.branch;if(s.type===si.MERGE&&!n)throw new Error("Incorrect usage of cherry-pick: If the source commit is a merge commit, an immediate parent commit must be specified.");if(!r||!Pt.records.commits.has(r)){if(l===Pt.records.currBranch){let f=new Error('Incorrect usage of "cherryPick". Source commit is already on current branch');throw f.hash={text:`cherryPick ${t} ${r}`,token:`cherryPick ${t} ${r}`,expected:["cherry-pick abc"]},f}let u=Pt.records.branches.get(Pt.records.currBranch);if(u===void 0||!u){let f=new Error(`Incorrect usage of "cherry-pick". Current branch (${Pt.records.currBranch})has no commits`);throw f.hash={text:`cherryPick ${t} ${r}`,token:`cherryPick ${t} ${r}`,expected:["cherry-pick abc"]},f}let h=Pt.records.commits.get(u);if(h===void 0||!h){let f=new Error(`Incorrect usage of "cherry-pick". Current branch (${Pt.records.currBranch})has no commits`);throw f.hash={text:`cherryPick ${t} ${r}`,token:`cherryPick ${t} ${r}`,expected:["cherry-pick abc"]},f}let d={id:Pt.records.seq+"-"+pV(),message:`cherry-picked ${s?.message} into ${Pt.records.currBranch}`,seq:Pt.records.seq++,parents:Pt.records.head==null?[]:[Pt.records.head.id,s.id],branch:Pt.records.currBranch,type:si.CHERRY_PICK,tags:i?i.filter(Boolean):[`cherry-pick:${s.id}${s.type===si.MERGE?`|parent:${n}`:""}`]};Pt.records.head=d,Pt.records.commits.set(d.id,d),Pt.records.branches.set(Pt.records.currBranch,d.id),Z.debug(Pt.records.branches),Z.debug("in cherryPick")}},"cherryPick"),qEe=o(function(e){if(e=vt.sanitizeText(e,um()),Pt.records.branches.has(e)){Pt.records.currBranch=e;let t=Pt.records.branches.get(Pt.records.currBranch);t===void 0||!t?Pt.records.head=null:Pt.records.head=Pt.records.commits.get(t)??null}else{let t=new Error(`Trying to checkout branch which is not yet created. (Help try using "branch ${e}")`);throw t.hash={text:`checkout ${e}`,token:`checkout ${e}`,expected:[`branch ${e}`]},t}},"checkout");o(WEe,"upsert");o(UEe,"prettyPrintCommitHistory");_xt=o(function(){Z.debug(Pt.records.commits);let e=HEe()[0];UEe([e])},"prettyPrint"),Dxt=o(function(){Pt.reset(),gr()},"clear"),Rxt=o(function(){return[...Pt.records.branchConfig.values()].map((t,r)=>t.order!==null&&t.order!==void 0?t:{...t,order:parseFloat(`0.${r}`)}).sort((t,r)=>(t.order??0)-(r.order??0)).map(({name:t})=>({name:t}))},"getBranchesAsObjArray"),Lxt=o(function(){return Pt.records.branches},"getBranches"),Mxt=o(function(){return Pt.records.commits},"getCommits"),HEe=o(function(){let e=[...Pt.records.commits.values()];return e.forEach(function(t){Z.debug(t.id)}),e.sort((t,r)=>t.seq-r.seq),e},"getCommitsArray"),Nxt=o(function(){return Pt.records.currBranch},"getCurrentBranch"),Ixt=o(function(){return Pt.records.direction},"getDirection"),Oxt=o(function(){return Pt.records.head},"getHead"),C6={commitType:si,getConfig:um,setDirection:Txt,setOptions:Cxt,getOptions:kxt,commit:wxt,branch:Sxt,merge:Ext,cherryPick:Axt,checkout:qEe,prettyPrint:_xt,clear:Dxt,getBranchesAsObjArray:Rxt,getBranches:Lxt,getCommits:Mxt,getCommitsArray:HEe,getCurrentBranch:Nxt,getDirection:Ixt,getHead:Oxt,setAccTitle:Cr,getAccTitle:kr,getAccDescription:Sr,setAccDescription:wr,setDiagramTitle:Ar,getDiagramTitle:Er}});var Pxt,Bxt,Fxt,$xt,zxt,Gxt,Vxt,YEe,jEe=z(()=>{"use strict";sl();St();au();mV();b6();Pxt=o((e,t)=>{ca(e,t),e.dir&&t.setDirection(e.dir);for(let r of e.statements)Bxt(r,t)},"populate"),Bxt=o((e,t)=>{let i={Commit:o(n=>t.commit(Fxt(n)),"Commit"),Branch:o(n=>t.branch($xt(n)),"Branch"),Merge:o(n=>t.merge(zxt(n)),"Merge"),Checkout:o(n=>t.checkout(Gxt(n)),"Checkout"),CherryPicking:o(n=>t.cherryPick(Vxt(n)),"CherryPicking")}[e.$type];i?i(e):Z.error(`Unknown statement type: ${e.$type}`)},"parseStatement"),Fxt=o(e=>({id:e.id,msg:e.message??"",type:e.type!==void 0?si[e.type]:si.NORMAL,tags:e.tags??void 0}),"parseCommit"),$xt=o(e=>({name:e.name,order:e.order??0}),"parseBranch"),zxt=o(e=>({branch:e.branch,id:e.id??"",type:e.type!==void 0?si[e.type]:void 0,tags:e.tags??void 0}),"parseMerge"),Gxt=o(e=>e.branch,"parseCheckout"),Vxt=o(e=>({id:e.id,targetId:"",tags:e.tags?.length===0?void 0:e.tags,parent:e.parent}),"parseCherryPicking"),YEe={parse:o(async e=>{let t=await bn("gitGraph",e);Z.debug(t),Pxt(t,C6)},"parse")}});var Sf,Ef,su,Th,hm,S6,gV,yV,Wxt,dm,Hs,Ys,k6,zT,w6,Ch,Vr,qxt,KEe,ZEe,Uxt,Hxt,Yxt,jxt,Xxt,Kxt,Zxt,Qxt,Jxt,ebt,tbt,rbt,XEe,ibt,GT,nbt,abt,sbt,obt,lbt,QEe,JEe=z(()=>{"use strict";Rr();Ut();St();Xt();b6();Sf=10,Ef=40,su=4,Th=2,hm=8,S6=new Set(["redux","redux-dark","redux-color","redux-dark-color"]),gV=12,yV=new Set(["redux-color","redux-dark-color"]),Wxt=new Set(["dark","redux-dark","redux-dark-color","neo-dark"]),dm=o((e,t,r=!1)=>r&&e>0?(e-1)%(t-1)+1:e%t,"calcColorIndex"),Hs=new Map,Ys=new Map,k6=30,zT=new Map,w6=[],Ch=0,Vr="LR",qxt=o(()=>{Hs.clear(),Ys.clear(),zT.clear(),Ch=0,w6=[],Vr="LR"},"clear"),KEe=o(e=>{let t=document.createElementNS("http://www.w3.org/2000/svg","text");return(typeof e=="string"?e.split(/\\n|\n|<br\s*\/?>/gi):e).forEach(i=>{let n=document.createElementNS("http://www.w3.org/2000/svg","tspan");n.setAttributeNS("http://www.w3.org/XML/1998/namespace","xml:space","preserve"),n.setAttribute("dy","1em"),n.setAttribute("x","0"),n.setAttribute("class","row"),n.textContent=i.trim(),t.appendChild(n)}),t},"drawText"),ZEe=o(e=>{let t,r,i;return Vr==="BT"?(r=o((n,a)=>n<=a,"comparisonFunc"),i=1/0):(r=o((n,a)=>n>=a,"comparisonFunc"),i=0),e.forEach(n=>{let a=Vr==="TB"||Vr=="BT"?Ys.get(n)?.y:Ys.get(n)?.x;a!==void 0&&r(a,i)&&(t=n,i=a)}),t},"findClosestParent"),Uxt=o(e=>{let t="",r=1/0;return e.forEach(i=>{let n=Ys.get(i).y;n<=r&&(t=i,r=n)}),t||void 0},"findClosestParentBT"),Hxt=o((e,t,r)=>{let i=r,n=r,a=[];e.forEach(s=>{let l=t.get(s);if(!l)throw new Error(`Commit not found for key ${s}`);l.parents.length?(i=jxt(l),n=Math.max(i,n)):a.push(l),Xxt(l,i)}),i=n,a.forEach(s=>{Kxt(s,i,r)}),e.forEach(s=>{let l=t.get(s);if(l?.parents.length){let u=Uxt(l.parents);i=Ys.get(u).y-Ef,i<=n&&(n=i);let h=Hs.get(l.branch).pos,d=i-Sf;Ys.set(l.id,{x:h,y:d})}})},"setParallelBTPos"),Yxt=o(e=>{let t=ZEe(e.parents.filter(i=>i!==null));if(!t)throw new Error(`Closest parent not found for commit ${e.id}`);let r=Ys.get(t)?.y;if(r===void 0)throw new Error(`Closest parent position not found for commit ${e.id}`);return r},"findClosestParentPos"),jxt=o(e=>Yxt(e)+Ef,"calculateCommitPosition"),Xxt=o((e,t)=>{let r=Hs.get(e.branch);if(!r)throw new Error(`Branch not found for commit ${e.id}`);let i=r.pos,n=t+Sf;return Ys.set(e.id,{x:i,y:n}),{x:i,y:n}},"setCommitPosition"),Kxt=o((e,t,r)=>{let i=Hs.get(e.branch);if(!i)throw new Error(`Branch not found for commit ${e.id}`);let n=t+r,a=i.pos;Ys.set(e.id,{x:a,y:n})},"setRootPosition"),Zxt=o((e,t,r,i,n,a)=>{let{theme:s}=ge(),l=S6.has(s??""),u=yV.has(s??""),h=Wxt.has(s??"");if(a===si.HIGHLIGHT)e.append("rect").attr("x",r.x-10+(l?3:0)).attr("y",r.y-10+(l?3:0)).attr("width",l?14:20).attr("height",l?14:20).attr("class",`commit ${t.id} commit-highlight${dm(n,hm,u)} ${i}-outer`),e.append("rect").attr("x",r.x-6+(l?2:0)).attr("y",r.y-6+(l?2:0)).attr("width",l?8:12).attr("height",l?8:12).attr("class",`commit ${t.id} commit${dm(n,hm,u)} ${i}-inner`);else if(a===si.CHERRY_PICK)e.append("circle").attr("cx",r.x).attr("cy",r.y).attr("r",l?7:10).attr("class",`commit ${t.id} ${i}`),e.append("circle").attr("cx",r.x-3).attr("cy",r.y+2).attr("r",l?2.5:2.75).attr("fill",h?"#000000":"#fff").attr("class",`commit ${t.id} ${i}`),e.append("circle").attr("cx",r.x+3).attr("cy",r.y+2).attr("r",l?2.5:2.75).attr("fill",h?"#000000":"#fff").attr("class",`commit ${t.id} ${i}`),e.append("line").attr("x1",r.x+3).attr("y1",r.y+1).attr("x2",r.x).attr("y2",r.y-5).attr("stroke",h?"#000000":"#fff").attr("class",`commit ${t.id} ${i}`),e.append("line").attr("x1",r.x-3).attr("y1",r.y+1).attr("x2",r.x).attr("y2",r.y-5).attr("stroke",h?"#000000":"#fff").attr("class",`commit ${t.id} ${i}`);else{let d=e.append("circle");if(d.attr("cx",r.x),d.attr("cy",r.y),d.attr("r",l?7:10),d.attr("class",`commit ${t.id} commit${dm(n,hm,u)}`),a===si.MERGE){let f=e.append("circle");f.attr("cx",r.x),f.attr("cy",r.y),f.attr("r",l?5:6),f.attr("class",`commit ${i} ${t.id} commit${dm(n,hm,u)}`)}if(a===si.REVERSE){let f=e.append("path"),p=l?4:5;f.attr("d",`M ${r.x-p},${r.y-p}L${r.x+p},${r.y+p}M${r.x-p},${r.y+p}L${r.x+p},${r.y-p}`).attr("class",`commit ${i} ${t.id} commit${dm(n,hm,u)}`)}}},"drawCommitBullet"),Qxt=o((e,t,r,i,n)=>{if(t.type!==si.CHERRY_PICK&&(t.customId&&t.type===si.MERGE||t.type!==si.MERGE)&&n.showCommitLabel){let a=e.append("g"),s=a.insert("rect").attr("class","commit-label-bkg"),l=a.append("text").attr("x",i).attr("y",r.y+25).attr("class","commit-label").text(t.id),u=l.node()?.getBBox();if(u&&(s.attr("x",r.posWithOffset-u.width/2-Th).attr("y",r.y+13.5).attr("width",u.width+2*Th).attr("height",u.height+2*Th),Vr==="TB"||Vr==="BT"?(s.attr("x",r.x-(u.width+4*su+5)).attr("y",r.y-12),l.attr("x",r.x-(u.width+4*su)).attr("y",r.y+u.height-12)):l.attr("x",r.posWithOffset-u.width/2),n.rotateCommitLabel))if(Vr==="TB"||Vr==="BT")l.attr("transform","rotate(-45, "+r.x+", "+r.y+")"),s.attr("transform","rotate(-45, "+r.x+", "+r.y+")");else{let h=-7.5-(u.width+10)/25*9.5,d=10+u.width/25*8.5;a.attr("transform","translate("+h+", "+d+") rotate(-45, "+i+", "+r.y+")")}}},"drawCommitLabel"),Jxt=o((e,t,r,i)=>{if(t.tags.length>0){let n=0,a=0,s=0,l=[];for(let u of t.tags.reverse()){let h=e.insert("polygon"),d=e.append("circle"),f=e.append("text").attr("y",r.y-16-n).attr("class","tag-label").text(u),p=f.node()?.getBBox();if(!p)throw new Error("Tag bbox not found");a=Math.max(a,p.width),s=Math.max(s,p.height),f.attr("x",r.posWithOffset-p.width/2),l.push({tag:f,hole:d,rect:h,yOffset:n}),n+=20}for(let{tag:u,hole:h,rect:d,yOffset:f}of l){let p=s/2,m=r.y-19.2-f;if(d.attr("class","tag-label-bkg").attr("points",`
-      ${i-a/2-su/2},${m+Th}  
-      ${i-a/2-su/2},${m-Th}
-      ${r.posWithOffset-a/2-su},${m-p-Th}
-      ${r.posWithOffset+a/2+su},${m-p-Th}
-      ${r.posWithOffset+a/2+su},${m+p+Th}
-      ${r.posWithOffset-a/2-su},${m+p+Th}`),h.attr("cy",m).attr("cx",i-a/2+su/2).attr("r",1.5).attr("class","tag-hole"),Vr==="TB"||Vr==="BT"){let g=i+f;d.attr("class","tag-label-bkg").attr("points",`
+	For further details.`);this.skipValidations=wr(r,"skipValidations")?r.skipValidations:Qh.skipValidations}};Gq.DEFER_DEFINITION_ERRORS_HANDLING=!1;nAe(Gq,[jTt,ZTt,eCt,tCt,nCt,rCt,iCt,aCt,oCt,lCt]);cCt=class extends Gq{static{o(this,"EmbeddedActionsParser")}static{E(this,"EmbeddedActionsParser")}constructor(e,t=Qh){let r=Ya(t);r.outputCst=!1,super(e,r)}};o(aAe,"arrayMap2");E(aAe,"arrayMap");sAe=aAe;o(oAe,"listCacheClear2");E(oAe,"listCacheClear");uCt=oAe;o(lAe,"eq2");E(lAe,"eq");cAe=lAe;o(uAe,"assocIndexOf2");E(uAe,"assocIndexOf");e_=uAe,hCt=Array.prototype,dCt=hCt.splice;o(hAe,"listCacheDelete2");E(hAe,"listCacheDelete");fCt=hAe;o(dAe,"listCacheGet2");E(dAe,"listCacheGet");pCt=dAe;o(fAe,"listCacheHas2");E(fAe,"listCacheHas");mCt=fAe;o(pAe,"listCacheSet2");E(pAe,"listCacheSet");gCt=pAe;o(d0,"ListCache2");E(d0,"ListCache");d0.prototype.clear=uCt;d0.prototype.delete=fCt;d0.prototype.get=pCt;d0.prototype.has=mCt;d0.prototype.set=gCt;t_=d0;o(mAe,"stackClear2");E(mAe,"stackClear");yCt=mAe;o(gAe,"stackDelete2");E(gAe,"stackDelete");vCt=gAe;o(yAe,"stackGet2");E(yAe,"stackGet");xCt=yAe;o(vAe,"stackHas2");E(vAe,"stackHas");bCt=vAe,TCt=typeof global=="object"&&global&&global.Object===Object&&global,xAe=TCt,CCt=typeof self=="object"&&self&&self.Object===Object&&self,wCt=xAe||CCt||Function("return this")(),nd=wCt,kCt=nd.Symbol,$u=kCt,bAe=Object.prototype,SCt=bAe.hasOwnProperty,ECt=bAe.toString,uC=$u?$u.toStringTag:void 0;o(TAe,"getRawTag2");E(TAe,"getRawTag");ACt=TAe,RCt=Object.prototype,_Ct=RCt.toString;o(CAe,"objectToString2");E(CAe,"objectToString");LCt=CAe,DCt="[object Null]",ICt="[object Undefined]",DCe=$u?$u.toStringTag:void 0;o(wAe,"baseGetTag2");E(wAe,"baseGetTag");zv=wAe;o(kAe,"isObject2");E(kAe,"isObject");Vq=kAe,MCt="[object AsyncFunction]",NCt="[object Function]",PCt="[object GeneratorFunction]",OCt="[object Proxy]";o(SAe,"isFunction2");E(SAe,"isFunction");EAe=SAe,BCt=nd["__core-js_shared__"],iz=BCt,ICe=(function(){var e=/[^.]+$/.exec(iz&&iz.keys&&iz.keys.IE_PROTO||"");return e?"Symbol(src)_1."+e:""})();o(AAe,"isMasked2");E(AAe,"isMasked");$Ct=AAe,FCt=Function.prototype,zCt=FCt.toString;o(RAe,"toSource2");E(RAe,"toSource");f0=RAe,GCt=/[\\^$.*+?()[\]{}|]/g,VCt=/^\[object .+?Constructor\]$/,WCt=Function.prototype,qCt=Object.prototype,HCt=WCt.toString,UCt=qCt.hasOwnProperty,YCt=RegExp("^"+HCt.call(UCt).replace(GCt,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");o(_Ae,"baseIsNative2");E(_Ae,"baseIsNative");jCt=_Ae;o(LAe,"getValue2");E(LAe,"getValue");XCt=LAe;o(DAe,"getNative2");E(DAe,"getNative");Gv=DAe,KCt=Gv(nd,"Map"),aw=KCt,ZCt=Gv(Object,"create"),sw=ZCt;o(IAe,"hashClear2");E(IAe,"hashClear");QCt=IAe;o(MAe,"hashDelete2");E(MAe,"hashDelete");JCt=MAe,ewt="__lodash_hash_undefined__",twt=Object.prototype,rwt=twt.hasOwnProperty;o(NAe,"hashGet2");E(NAe,"hashGet");nwt=NAe,iwt=Object.prototype,awt=iwt.hasOwnProperty;o(PAe,"hashHas2");E(PAe,"hashHas");swt=PAe,owt="__lodash_hash_undefined__";o(OAe,"hashSet2");E(OAe,"hashSet");lwt=OAe;o(p0,"Hash2");E(p0,"Hash");p0.prototype.clear=QCt;p0.prototype.delete=JCt;p0.prototype.get=nwt;p0.prototype.has=swt;p0.prototype.set=lwt;MCe=p0;o(BAe,"mapCacheClear2");E(BAe,"mapCacheClear");cwt=BAe;o($Ae,"isKeyable2");E($Ae,"isKeyable");uwt=$Ae;o(FAe,"getMapData2");E(FAe,"getMapData");r_=FAe;o(zAe,"mapCacheDelete2");E(zAe,"mapCacheDelete");hwt=zAe;o(GAe,"mapCacheGet2");E(GAe,"mapCacheGet");dwt=GAe;o(VAe,"mapCacheHas2");E(VAe,"mapCacheHas");fwt=VAe;o(WAe,"mapCacheSet2");E(WAe,"mapCacheSet");pwt=WAe;o(m0,"MapCache2");E(m0,"MapCache");m0.prototype.clear=cwt;m0.prototype.delete=hwt;m0.prototype.get=dwt;m0.prototype.has=fwt;m0.prototype.set=pwt;n_=m0,mwt=200;o(qAe,"stackSet2");E(qAe,"stackSet");gwt=qAe;o(g0,"Stack2");E(g0,"Stack");g0.prototype.clear=yCt;g0.prototype.delete=vCt;g0.prototype.get=xCt;g0.prototype.has=bCt;g0.prototype.set=gwt;f6=g0,ywt="__lodash_hash_undefined__";o(HAe,"setCacheAdd2");E(HAe,"setCacheAdd");vwt=HAe;o(UAe,"setCacheHas2");E(UAe,"setCacheHas");xwt=UAe;o(ow,"SetCache2");E(ow,"SetCache");ow.prototype.add=ow.prototype.push=vwt;ow.prototype.has=xwt;YAe=ow;o(jAe,"arraySome2");E(jAe,"arraySome");bwt=jAe;o(XAe,"cacheHas2");E(XAe,"cacheHas");KAe=XAe,Twt=1,Cwt=2;o(ZAe,"equalArrays2");E(ZAe,"equalArrays");QAe=ZAe,wwt=nd.Uint8Array,NCe=wwt;o(JAe,"mapToArray2");E(JAe,"mapToArray");kwt=JAe;o(e6e,"setToArray2");E(e6e,"setToArray");Wq=e6e,Swt=1,Ewt=2,Awt="[object Boolean]",Rwt="[object Date]",_wt="[object Error]",Lwt="[object Map]",Dwt="[object Number]",Iwt="[object RegExp]",Mwt="[object Set]",Nwt="[object String]",Pwt="[object Symbol]",Owt="[object ArrayBuffer]",Bwt="[object DataView]",PCe=$u?$u.prototype:void 0,az=PCe?PCe.valueOf:void 0;o(t6e,"equalByTag2");E(t6e,"equalByTag");$wt=t6e;o(r6e,"arrayPush2");E(r6e,"arrayPush");n6e=r6e,Fwt=Array.isArray,Ws=Fwt;o(i6e,"baseGetAllKeys2");E(i6e,"baseGetAllKeys");zwt=i6e;o(a6e,"arrayFilter2");E(a6e,"arrayFilter");s6e=a6e;o(o6e,"stubArray2");E(o6e,"stubArray");Gwt=o6e,Vwt=Object.prototype,Wwt=Vwt.propertyIsEnumerable,OCe=Object.getOwnPropertySymbols,qwt=OCe?function(e){return e==null?[]:(e=Object(e),s6e(OCe(e),function(t){return Wwt.call(e,t)}))}:Gwt,Hwt=qwt;o(l6e,"baseTimes2");E(l6e,"baseTimes");Uwt=l6e;o(c6e,"isObjectLike2");E(c6e,"isObjectLike");Lv=c6e,Ywt="[object Arguments]";o(u6e,"baseIsArguments2");E(u6e,"baseIsArguments");BCe=u6e,h6e=Object.prototype,jwt=h6e.hasOwnProperty,Xwt=h6e.propertyIsEnumerable,Kwt=BCe((function(){return arguments})())?BCe:function(e){return Lv(e)&&jwt.call(e,"callee")&&!Xwt.call(e,"callee")},i_=Kwt;o(d6e,"stubFalse2");E(d6e,"stubFalse");Zwt=d6e,f6e=typeof exports=="object"&&exports&&!exports.nodeType&&exports,$Ce=f6e&&typeof module=="object"&&module&&!module.nodeType&&module,Qwt=$Ce&&$Ce.exports===f6e,FCe=Qwt?nd.Buffer:void 0,Jwt=FCe?FCe.isBuffer:void 0,ekt=Jwt||Zwt,nR=ekt,tkt=9007199254740991,rkt=/^(?:0|[1-9]\d*)$/;o(p6e,"isIndex2");E(p6e,"isIndex");m6e=p6e,nkt=9007199254740991;o(g6e,"isLength2");E(g6e,"isLength");qq=g6e,ikt="[object Arguments]",akt="[object Array]",skt="[object Boolean]",okt="[object Date]",lkt="[object Error]",ckt="[object Function]",ukt="[object Map]",hkt="[object Number]",dkt="[object Object]",fkt="[object RegExp]",pkt="[object Set]",mkt="[object String]",gkt="[object WeakMap]",ykt="[object ArrayBuffer]",vkt="[object DataView]",xkt="[object Float32Array]",bkt="[object Float64Array]",Tkt="[object Int8Array]",Ckt="[object Int16Array]",wkt="[object Int32Array]",kkt="[object Uint8Array]",Skt="[object Uint8ClampedArray]",Ekt="[object Uint16Array]",Akt="[object Uint32Array]",li={};li[xkt]=li[bkt]=li[Tkt]=li[Ckt]=li[wkt]=li[kkt]=li[Skt]=li[Ekt]=li[Akt]=!0;li[ikt]=li[akt]=li[ykt]=li[skt]=li[vkt]=li[okt]=li[lkt]=li[ckt]=li[ukt]=li[hkt]=li[dkt]=li[fkt]=li[pkt]=li[mkt]=li[gkt]=!1;o(y6e,"baseIsTypedArray2");E(y6e,"baseIsTypedArray");Rkt=y6e;o(v6e,"baseUnary2");E(v6e,"baseUnary");_kt=v6e,x6e=typeof exports=="object"&&exports&&!exports.nodeType&&exports,VC=x6e&&typeof module=="object"&&module&&!module.nodeType&&module,Lkt=VC&&VC.exports===x6e,sz=Lkt&&xAe.process,Dkt=(function(){try{var e=VC&&VC.require&&VC.require("util").types;return e||sz&&sz.binding&&sz.binding("util")}catch{}})(),zCe=Dkt,GCe=zCe&&zCe.isTypedArray,Ikt=GCe?_kt(GCe):Rkt,Hq=Ikt,Mkt=Object.prototype,Nkt=Mkt.hasOwnProperty;o(b6e,"arrayLikeKeys2");E(b6e,"arrayLikeKeys");Pkt=b6e,Okt=Object.prototype;o(T6e,"isPrototype2");E(T6e,"isPrototype");C6e=T6e;o(w6e,"overArg2");E(w6e,"overArg");Bkt=w6e,$kt=Bkt(Object.keys,Object),Fkt=$kt,zkt=Object.prototype,Gkt=zkt.hasOwnProperty;o(k6e,"baseKeys2");E(k6e,"baseKeys");S6e=k6e;o(E6e,"isArrayLike2");E(E6e,"isArrayLike");a_=E6e;o(A6e,"keys2");E(A6e,"keys");Uq=A6e;o(R6e,"getAllKeys2");E(R6e,"getAllKeys");VCe=R6e,Vkt=1,Wkt=Object.prototype,qkt=Wkt.hasOwnProperty;o(_6e,"equalObjects2");E(_6e,"equalObjects");Hkt=_6e,Ukt=Gv(nd,"DataView"),WG=Ukt,Ykt=Gv(nd,"Promise"),qG=Ykt,jkt=Gv(nd,"Set"),bv=jkt,Xkt=Gv(nd,"WeakMap"),HG=Xkt,WCe="[object Map]",Kkt="[object Object]",qCe="[object Promise]",HCe="[object Set]",UCe="[object WeakMap]",YCe="[object DataView]",Zkt=f0(WG),Qkt=f0(aw),Jkt=f0(qG),eSt=f0(bv),tSt=f0(HG),mg=zv;(WG&&mg(new WG(new ArrayBuffer(1)))!=YCe||aw&&mg(new aw)!=WCe||qG&&mg(qG.resolve())!=qCe||bv&&mg(new bv)!=HCe||HG&&mg(new HG)!=UCe)&&(mg=E(function(e){var t=zv(e),r=t==Kkt?e.constructor:void 0,n=r?f0(r):"";if(n)switch(n){case Zkt:return YCe;case Qkt:return WCe;case Jkt:return qCe;case eSt:return HCe;case tSt:return UCe}return t},"getTag"));UG=mg,rSt=1,jCe="[object Arguments]",XCe="[object Array]",BA="[object Object]",nSt=Object.prototype,KCe=nSt.hasOwnProperty;o(L6e,"baseIsEqualDeep2");E(L6e,"baseIsEqualDeep");iSt=L6e;o(Yq,"baseIsEqual2");E(Yq,"baseIsEqual");D6e=Yq,aSt=1,sSt=2;o(I6e,"baseIsMatch2");E(I6e,"baseIsMatch");oSt=I6e;o(M6e,"isStrictComparable2");E(M6e,"isStrictComparable");N6e=M6e;o(P6e,"getMatchData2");E(P6e,"getMatchData");lSt=P6e;o(O6e,"matchesStrictComparable2");E(O6e,"matchesStrictComparable");B6e=O6e;o($6e,"baseMatches2");E($6e,"baseMatches");cSt=$6e,uSt="[object Symbol]";o(F6e,"isSymbol2");E(F6e,"isSymbol");s_=F6e,hSt=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,dSt=/^\w*$/;o(z6e,"isKey2");E(z6e,"isKey");jq=z6e,fSt="Expected a function";o(o_,"memoize2");E(o_,"memoize");o_.Cache=n_;pSt=o_,mSt=500;o(G6e,"memoizeCapped2");E(G6e,"memoizeCapped");gSt=G6e,ySt=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,vSt=/\\(\\)?/g,xSt=gSt(function(e){var t=[];return e.charCodeAt(0)===46&&t.push(""),e.replace(ySt,function(r,n,i,a){t.push(i?a.replace(vSt,"$1"):n||r)}),t}),bSt=xSt,TSt=1/0,ZCe=$u?$u.prototype:void 0,QCe=ZCe?ZCe.toString:void 0;o(Xq,"baseToString2");E(Xq,"baseToString");CSt=Xq;o(V6e,"toString3");E(V6e,"toString");wSt=V6e;o(W6e,"castPath2");E(W6e,"castPath");q6e=W6e,kSt=1/0;o(H6e,"toKey2");E(H6e,"toKey");l_=H6e;o(U6e,"baseGet2");E(U6e,"baseGet");Y6e=U6e;o(j6e,"get2");E(j6e,"get");SSt=j6e;o(X6e,"baseHasIn2");E(X6e,"baseHasIn");ESt=X6e;o(K6e,"hasPath2");E(K6e,"hasPath");ASt=K6e;o(Z6e,"hasIn2");E(Z6e,"hasIn");RSt=Z6e,_St=1,LSt=2;o(Q6e,"baseMatchesProperty2");E(Q6e,"baseMatchesProperty");DSt=Q6e;o(J6e,"identity2");E(J6e,"identity");Kq=J6e;o(eRe,"baseProperty2");E(eRe,"baseProperty");ISt=eRe;o(tRe,"basePropertyDeep2");E(tRe,"basePropertyDeep");MSt=tRe;o(rRe,"property2");E(rRe,"property");NSt=rRe;o(nRe,"baseIteratee2");E(nRe,"baseIteratee");c_=nRe;o(iRe,"createBaseFor2");E(iRe,"createBaseFor");PSt=iRe,OSt=PSt(),BSt=OSt;o(aRe,"baseForOwn2");E(aRe,"baseForOwn");$St=aRe;o(sRe,"createBaseEach2");E(sRe,"createBaseEach");FSt=sRe,zSt=FSt($St),u_=zSt;o(oRe,"baseMap2");E(oRe,"baseMap");GSt=oRe;o(lRe,"map2");E(lRe,"map");qh=lRe;o(cRe,"baseFilter2");E(cRe,"baseFilter");VSt=cRe;o(uRe,"filter2");E(uRe,"filter");WSt=uRe;o(Zg,"buildATNKey");E(Zg,"buildATNKey");mp=1,qSt=2,hRe=4,dRe=5,Dw=7,HSt=8,USt=9,YSt=10,jSt=11,fRe=12,Zq=class{static{o(this,"AbstractTransition")}static{E(this,"AbstractTransition")}constructor(e){this.target=e}isEpsilon(){return!1}},Qq=class extends Zq{static{o(this,"AtomTransition")}static{E(this,"AtomTransition")}constructor(e,t){super(e),this.tokenType=t}},pRe=class extends Zq{static{o(this,"EpsilonTransition")}static{E(this,"EpsilonTransition")}constructor(e){super(e)}isEpsilon(){return!0}},Jq=class extends Zq{static{o(this,"RuleTransition")}static{E(this,"RuleTransition")}constructor(e,t,r){super(e),this.rule=t,this.followState=r}isEpsilon(){return!0}};o(mRe,"createATN");E(mRe,"createATN");o(gRe,"createRuleStartAndStopATNStates");E(gRe,"createRuleStartAndStopATNStates");o(eH,"atom");E(eH,"atom");o(yRe,"repetition");E(yRe,"repetition");o(vRe,"repetitionSep");E(vRe,"repetitionSep");o(xRe,"repetitionMandatory");E(xRe,"repetitionMandatory");o(bRe,"repetitionMandatorySep");E(bRe,"repetitionMandatorySep");o(TRe,"alternation");E(TRe,"alternation");o(CRe,"option");E(CRe,"option");o(Tp,"block");E(Tp,"block");o(tH,"plus");E(tH,"plus");o(rH,"star");E(rH,"star");o(wRe,"optional");E(wRe,"optional");o(id,"defineDecisionState");E(id,"defineDecisionState");o(y0,"makeAlts");E(y0,"makeAlts");o(kRe,"getProdType2");E(kRe,"getProdType");o(SRe,"makeBlock");E(SRe,"makeBlock");o(h_,"tokenRef");E(h_,"tokenRef");o(ERe,"ruleRef");E(ERe,"ruleRef");o(ARe,"buildRuleHandle");E(ARe,"buildRuleHandle");o($i,"epsilon");E($i,"epsilon");o(da,"newState");E(da,"newState");o(d_,"addTransition");E(d_,"addTransition");o(RRe,"removeState");E(RRe,"removeState");iR={},YG=class{static{o(this,"ATNConfigSet")}static{E(this,"ATNConfigSet")}constructor(){this.map={},this.configs=[]}get size(){return this.configs.length}finalize(){this.map={}}add(e){let t=nH(e);t in this.map||(this.map[t]=this.configs.length,this.configs.push(e))}get elements(){return this.configs}get alts(){return qh(this.configs,e=>e.alt)}get key(){let e="";for(let t in this.map)e+=t+":";return e}};o(nH,"getATNConfigKey");E(nH,"getATNConfigKey");o(_Re,"baseExtremum");E(_Re,"baseExtremum");XSt=_Re;o(LRe,"baseLt");E(LRe,"baseLt");KSt=LRe;o(DRe,"min");E(DRe,"min");ZSt=DRe,JCe=$u?$u.isConcatSpreadable:void 0;o(IRe,"isFlattenable2");E(IRe,"isFlattenable");QSt=IRe;o(iH,"baseFlatten2");E(iH,"baseFlatten");MRe=iH;o(NRe,"flatMap2");E(NRe,"flatMap");JSt=NRe;o(PRe,"baseFindIndex2");E(PRe,"baseFindIndex");eEt=PRe;o(ORe,"baseIsNaN2");E(ORe,"baseIsNaN");tEt=ORe;o(BRe,"strictIndexOf2");E(BRe,"strictIndexOf");rEt=BRe;o($Re,"baseIndexOf2");E($Re,"baseIndexOf");nEt=$Re;o(FRe,"arrayIncludes2");E(FRe,"arrayIncludes");iEt=FRe;o(zRe,"arrayIncludesWith2");E(zRe,"arrayIncludesWith");aEt=zRe;o(GRe,"noop2");E(GRe,"noop");sEt=GRe,oEt=1/0,lEt=bv&&1/Wq(new bv([,-0]))[1]==oEt?function(e){return new bv(e)}:sEt,cEt=lEt,uEt=200;o(VRe,"baseUniq2");E(VRe,"baseUniq");hEt=VRe;o(WRe,"uniqBy");E(WRe,"uniqBy");dEt=WRe;o(qRe,"flatten2");E(qRe,"flatten");fEt=qRe;o(HRe,"arrayEach2");E(HRe,"arrayEach");pEt=HRe;o(URe,"castFunction2");E(URe,"castFunction");mEt=URe;o(YRe,"forEach2");E(YRe,"forEach");oz=YRe,gEt="[object Map]",yEt="[object Set]",vEt=Object.prototype,xEt=vEt.hasOwnProperty;o(jRe,"isEmpty2");E(jRe,"isEmpty");bEt=jRe;o(XRe,"arrayReduce2");E(XRe,"arrayReduce");TEt=XRe;o(KRe,"baseReduce2");E(KRe,"baseReduce");CEt=KRe;o(ZRe,"reduce2");E(ZRe,"reduce");ewe=ZRe;o(QRe,"createDFACache");E(QRe,"createDFACache");JRe=class{static{o(this,"PredicateSet")}static{E(this,"PredicateSet")}constructor(){this.predicates=[]}is(e){return e>=this.predicates.length||this.predicates[e]}set(e,t){this.predicates[e]=t}toString(){let e="",t=this.predicates.length;for(let r=0;r<t;r++)e+=this.predicates[r]===!0?"1":"0";return e}},twe=new JRe,wEt=class extends Fq{static{o(this,"LLStarLookaheadStrategy")}static{E(this,"LLStarLookaheadStrategy")}constructor(e){var t;super(),this.logging=(t=e?.logging)!==null&&t!==void 0?t:(r=>console.log(r))}initialize(e){this.atn=mRe(e.rules),this.dfas=e_e(this.atn)}validateAmbiguousAlternationAlternatives(){return[]}validateEmptyOrAlternatives(){return[]}buildLookaheadForAlternation(e){let{prodOccurrence:t,rule:r,hasPredicates:n,dynamicTokensEnabled:i}=e,a=this.dfas,s=this.logging,l=Zg(r,"Alternation",t),h=this.atn.decisionMap[l].decision,d=qh(MG({maxLookahead:1,occurrence:t,prodType:"Alternation",rule:r}),f=>qh(f,p=>p[0]));if(jG(d,!1)&&!i){let f=ewe(d,(p,m,g)=>(oz(m,y=>{y&&(p[y.tokenTypeIdx]=g,oz(y.categoryMatches,v=>{p[v]=g}))}),p),{});return n?function(p){var m;let g=this.LA(1),y=f[g.tokenTypeIdx];if(p!==void 0&&y!==void 0){let v=(m=p[y])===null||m===void 0?void 0:m.GATE;if(v!==void 0&&v.call(this)===!1)return}return y}:function(){let p=this.LA(1);return f[p.tokenTypeIdx]}}else return n?function(f){let p=new JRe,m=f===void 0?0:f.length;for(let y=0;y<m;y++){let v=f?.[y].GATE;p.set(y,v===void 0||v.call(this))}let g=p6.call(this,a,h,p,s);return typeof g=="number"?g:void 0}:function(){let f=p6.call(this,a,h,twe,s);return typeof f=="number"?f:void 0}}buildLookaheadForOptional(e){let{prodOccurrence:t,rule:r,prodType:n,dynamicTokensEnabled:i}=e,a=this.dfas,s=this.logging,l=Zg(r,n,t),h=this.atn.decisionMap[l].decision,d=qh(MG({maxLookahead:1,occurrence:t,prodType:n,rule:r}),f=>qh(f,p=>p[0]));if(jG(d)&&d[0][0]&&!i){let f=d[0],p=fEt(f);if(p.length===1&&bEt(p[0].categoryMatches)){let g=p[0].tokenTypeIdx;return function(){return this.LA(1).tokenTypeIdx===g}}else{let m=ewe(p,(g,y)=>(y!==void 0&&(g[y.tokenTypeIdx]=!0,oz(y.categoryMatches,v=>{g[v]=!0})),g),{});return function(){let g=this.LA(1);return m[g.tokenTypeIdx]===!0}}}return function(){let f=p6.call(this,a,h,twe,s);return typeof f=="object"?!1:f===0}}};o(jG,"isLL1Sequence");E(jG,"isLL1Sequence");o(e_e,"initATNSimulator");E(e_e,"initATNSimulator");o(p6,"adaptivePredict");E(p6,"adaptivePredict");o(t_e,"performLookahead");E(t_e,"performLookahead");o(r_e,"computeLookaheadTarget");E(r_e,"computeLookaheadTarget");o(n_e,"reportLookaheadAmbiguity");E(n_e,"reportLookaheadAmbiguity");o(i_e,"buildAmbiguityError");E(i_e,"buildAmbiguityError");o(a_e,"getProductionDslName2");E(a_e,"getProductionDslName");o(s_e,"buildAdaptivePredictError");E(s_e,"buildAdaptivePredictError");o(o_e,"getExistingTargetState");E(o_e,"getExistingTargetState");o(l_e,"computeReachSet");E(l_e,"computeReachSet");o(c_e,"getReachableTarget");E(c_e,"getReachableTarget");o(u_e,"getUniqueAlt");E(u_e,"getUniqueAlt");o(aH,"newDFAState");E(aH,"newDFAState");o(XG,"addDFAEdge");E(XG,"addDFAEdge");o(sH,"addDFAState");E(sH,"addDFAState");o(h_e,"computeStartState");E(h_e,"computeStartState");o(lw,"closure");E(lw,"closure");o(d_e,"getEpsilonTarget");E(d_e,"getEpsilonTarget");o(f_e,"hasConfigInRuleStopState");E(f_e,"hasConfigInRuleStopState");o(p_e,"allConfigsInRuleStopStates");E(p_e,"allConfigsInRuleStopStates");o(m_e,"hasConflictTerminatingPrediction");E(m_e,"hasConflictTerminatingPrediction");o(g_e,"getConflictingAltSets");E(g_e,"getConflictingAltSets");o(y_e,"hasConflictingAltSet");E(y_e,"hasConflictingAltSet");o(v_e,"hasStateAssociatedWithOneAlt");E(v_e,"hasStateAssociatedWithOneAlt");hw();x_e=class{static{o(this,"CstNodeBuilder")}static{E(this,"CstNodeBuilder")}constructor(){this.nodeStack=[]}get current(){return this.nodeStack[this.nodeStack.length-1]??this.rootNode}buildRootNode(e){return this.rootNode=new lH(e),this.rootNode.root=this.rootNode,this.nodeStack=[this.rootNode],this.rootNode}buildCompositeNode(e){let t=new f_;return t.grammarSource=e,t.root=this.rootNode,this.current.content.push(t),this.nodeStack.push(t),t}buildLeafNode(e,t){let r=new aR(e.startOffset,e.image.length,XC(e),e.tokenType,!t);return r.grammarSource=t,r.root=this.rootNode,this.current.content.push(r),r}removeNode(e){let t=e.container;if(t){let r=t.content.indexOf(e);r>=0&&t.content.splice(r,1)}}addHiddenNodes(e){let t=[];for(let i of e){let a=new aR(i.startOffset,i.image.length,XC(i),i.tokenType,!0);a.root=this.rootNode,t.push(a)}let r=this.current,n=!1;if(r.content.length>0){r.content.push(...t);return}for(;r.container;){let i=r.container.content.indexOf(r);if(i>0){r.container.content.splice(i,0,...t),n=!0;break}r=r.container}n||this.rootNode.content.unshift(...t)}construct(e){let t=this.current;typeof e.$type=="string"&&!e.$infix&&(this.current.astNode=e),e.$cstNode=t;let r=this.nodeStack.pop();r?.content.length===0&&this.removeNode(r)}},oH=class{static{o(this,"AbstractCstNode")}static{E(this,"AbstractCstNode")}get hidden(){return!1}get astNode(){let e=typeof this._astNode?.$type=="string"?this._astNode:this.container?.astNode;if(!e)throw new Error("This node has no associated AST element");return e}set astNode(e){this._astNode=e}get text(){return this.root.fullText.substring(this.offset,this.end)}},aR=class extends oH{static{o(this,"LeafCstNodeImpl")}static{E(this,"LeafCstNodeImpl")}get offset(){return this._offset}get length(){return this._length}get end(){return this._offset+this._length}get hidden(){return this._hidden}get tokenType(){return this._tokenType}get range(){return this._range}constructor(e,t,r,n,i=!1){super(),this._hidden=i,this._offset=e,this._tokenType=n,this._length=t,this._range=r}},f_=class extends oH{static{o(this,"CompositeCstNodeImpl")}static{E(this,"CompositeCstNodeImpl")}constructor(){super(...arguments),this.content=new kEt(this)}get offset(){return this.firstNonHiddenNode?.offset??0}get length(){return this.end-this.offset}get end(){return this.lastNonHiddenNode?.end??0}get range(){let e=this.firstNonHiddenNode,t=this.lastNonHiddenNode;if(e&&t){if(this._rangeCache===void 0){let{range:r}=e,{range:n}=t;this._rangeCache={start:r.start,end:n.end.line<r.start.line?r.start:n.end}}return this._rangeCache}else return{start:En.create(0,0),end:En.create(0,0)}}get firstNonHiddenNode(){for(let e of this.content)if(!e.hidden)return e;return this.content[0]}get lastNonHiddenNode(){for(let e=this.content.length-1;e>=0;e--){let t=this.content[e];if(!t.hidden)return t}return this.content[this.content.length-1]}},kEt=class b_e extends Array{static{o(this,"_CstNodeContainer")}static{E(this,"CstNodeContainer")}constructor(t){super(),this.parent=t,Object.setPrototypeOf(this,b_e.prototype)}push(...t){return this.addParents(t),super.push(...t)}unshift(...t){return this.addParents(t),super.unshift(...t)}splice(t,r,...n){return this.addParents(n),super.splice(t,r,...n)}addParents(t){for(let r of t)r.container=this.parent}},lH=class extends f_{static{o(this,"RootCstNodeImpl")}static{E(this,"RootCstNodeImpl")}get text(){return this._text.substring(this.offset,this.end)}get fullText(){return this._text}constructor(e){super(),this._text="",this._text=e??""}},sR=Symbol("Datatype");o(m6,"isDataTypeNode");E(m6,"isDataTypeNode");rwe="\u200B",T_e=E(e=>e.endsWith(rwe)?e:e+rwe,"withRuleSuffix"),cH=class{static{o(this,"AbstractLangiumParser")}static{E(this,"AbstractLangiumParser")}constructor(e){this._unorderedGroups=new Map,this.allRules=new Map,this.lexer=e.parser.Lexer;let t=this.lexer.definition,r=e.LanguageMetaData.mode==="production";e.shared.profilers.LangiumProfiler?.isActive("parsing")?this.wrapper=new EEt(t,{...e.parser.ParserConfig,skipValidations:r,errorMessageProvider:e.parser.ParserErrorMessageProvider},e.shared.profilers.LangiumProfiler.createTask("parsing",e.LanguageMetaData.languageId)):this.wrapper=new S_e(t,{...e.parser.ParserConfig,skipValidations:r,errorMessageProvider:e.parser.ParserErrorMessageProvider})}alternatives(e,t){this.wrapper.wrapOr(e,t)}optional(e,t){this.wrapper.wrapOption(e,t)}many(e,t){this.wrapper.wrapMany(e,t)}atLeastOne(e,t){this.wrapper.wrapAtLeastOne(e,t)}getRule(e){return this.allRules.get(e)}isRecording(){return this.wrapper.IS_RECORDING}get unorderedGroups(){return this._unorderedGroups}getRuleStack(){return this.wrapper.RULE_STACK}finalize(){this.wrapper.wrapSelfAnalysis()}},C_e=class extends cH{static{o(this,"LangiumParser")}static{E(this,"LangiumParser")}get current(){return this.stack[this.stack.length-1]}constructor(e){super(e),this.nodeBuilder=new x_e,this.stack=[],this.assignmentMap=new Map,this.operatorPrecedence=new Map,this.linker=e.references.Linker,this.converter=e.parser.ValueConverter,this.astReflection=e.shared.AstReflection}rule(e,t){let r=this.computeRuleType(e),n;Sv(e)&&(n=e.name,this.registerPrecedenceMap(e));let i=this.wrapper.DEFINE_RULE(T_e(e.name),this.startImplementation(r,n,t).bind(this));return this.allRules.set(e.name,i),zs(e)&&e.entry&&(this.mainRule=i),i}registerPrecedenceMap(e){let t=e.name,r=new Map;for(let n=0;n<e.operators.precedences.length;n++){let i=e.operators.precedences[n];for(let a of i.operators)r.set(a.value,{precedence:n,rightAssoc:i.associativity==="right"})}this.operatorPrecedence.set(t,r)}computeRuleType(e){return Sv(e)?jg(e):e.fragment?void 0:mw(e)?sR:jg(e)}parse(e,t={}){this.nodeBuilder.buildRootNode(e);let r=this.lexerResult=this.lexer.tokenize(e);this.wrapper.input=r.tokens;let n=t.rule?this.allRules.get(t.rule):this.mainRule;if(!n)throw new Error(t.rule?`No rule found with name '${t.rule}'`:"No main rule available.");let i=this.doParse(n);return this.nodeBuilder.addHiddenNodes(r.hidden),this.unorderedGroups.clear(),this.lexerResult=void 0,wv(i,{deep:!0}),{value:i,lexerErrors:r.errors,lexerReport:r.report,parserErrors:this.wrapper.errors}}doParse(e){let t=this.wrapper.rule(e);if(this.stack.length>0&&(t=this.construct()),t===void 0)throw new Error("No result from parser");if(this.stack.length>0)throw new Error("Parser stack is not empty after parsing");return t}startImplementation(e,t,r){return n=>{let i=!this.isRecording()&&e!==void 0;if(i){let a={$type:e};this.stack.push(a),e===sR?a.value="":t!==void 0&&(a.$infixName=t)}return r(n),i?this.construct():void 0}}extractHiddenTokens(e){let t=this.lexerResult.hidden;if(!t.length)return[];let r=e.startOffset;for(let n=0;n<t.length;n++)if(t[n].startOffset>r)return t.splice(0,n);return t.splice(0,t.length)}consume(e,t,r){let n=this.wrapper.wrapConsume(e,t);if(!this.isRecording()&&this.isValidToken(n)){let i=this.extractHiddenTokens(n);this.nodeBuilder.addHiddenNodes(i);let a=this.nodeBuilder.buildLeafNode(n,r),{assignment:s,crossRef:l}=this.getAssignment(r),u=this.current;if(s){let h=Yh(r)?n.image:this.converter.convert(n.image,a);this.assign(s.operator,s.feature,h,a,l)}else if(m6(u)){let h=n.image;Yh(r)||(h=this.converter.convert(h,a).toString()),u.value+=h}}}isValidToken(e){return!e.isInsertedInRecovery&&!isNaN(e.startOffset)&&typeof e.endOffset=="number"&&!isNaN(e.endOffset)}subrule(e,t,r,n,i){let a;!this.isRecording()&&!r&&(a=this.nodeBuilder.buildCompositeNode(n));let s;try{s=this.wrapper.wrapSubrule(e,t,i)}finally{this.isRecording()||(s===void 0&&!r&&(s=this.construct()),s!==void 0&&a&&a.length>0&&this.performSubruleAssignment(s,n,a))}}performSubruleAssignment(e,t,r){let{assignment:n,crossRef:i}=this.getAssignment(t);if(n)this.assign(n.operator,n.feature,e,r,i);else if(!n){let a=this.current;if(m6(a))a.value+=e.toString();else if(typeof e=="object"&&e){let l=this.assignWithoutOverride(e,a);this.stack.pop(),this.stack.push(l)}}}action(e,t){if(!this.isRecording()){let r=this.current;if(t.feature&&t.operator){r=this.construct(),this.nodeBuilder.removeNode(r.$cstNode),this.nodeBuilder.buildCompositeNode(t).content.push(r.$cstNode);let i={$type:e};this.stack.push(i),this.assign(t.operator,t.feature,r,r.$cstNode)}else r.$type=e}}construct(){if(this.isRecording())return;let e=this.stack.pop();return this.nodeBuilder.construct(e),"$infixName"in e?this.constructInfix(e,this.operatorPrecedence.get(e.$infixName)):m6(e)?this.converter.convert(e.value,e.$cstNode):(oW(this.astReflection,e),e)}constructInfix(e,t){let r=e.parts;if(!Array.isArray(r)||r.length===0)return;let n=e.operators;if(!Array.isArray(n)||r.length<2)return r[0];let i=0,a=-1;for(let g=0;g<n.length;g++){let y=n[g],v=t.get(y)??{precedence:1/0,rightAssoc:!1};v.precedence>a?(a=v.precedence,i=g):v.precedence===a&&(v.rightAssoc||(i=g))}let s=n.slice(0,i),l=n.slice(i+1),u=r.slice(0,i+1),h=r.slice(i+1),d={$infixName:e.$infixName,$type:e.$type,$cstNode:e.$cstNode,parts:u,operators:s},f={$infixName:e.$infixName,$type:e.$type,$cstNode:e.$cstNode,parts:h,operators:l},p=this.constructInfix(d,t),m=this.constructInfix(f,t);return{$type:e.$type,$cstNode:e.$cstNode,left:p,operator:n[i],right:m}}getAssignment(e){if(!this.assignmentMap.has(e)){let t=e0(e,Uh);this.assignmentMap.set(e,{assignment:t,crossRef:t&&r0(t.terminal)?t.terminal.isMulti?"multi":"single":void 0})}return this.assignmentMap.get(e)}assign(e,t,r,n,i){let a=this.current,s;switch(i==="single"&&typeof r=="string"?s=this.linker.buildReference(a,t,n,r):i==="multi"&&typeof r=="string"?s=this.linker.buildMultiReference(a,t,n,r):s=r,e){case"=":{a[t]=s;break}case"?=":{a[t]=!0;break}case"+=":Array.isArray(a[t])||(a[t]=[]),a[t].push(s)}}assignWithoutOverride(e,t){for(let[n,i]of Object.entries(t)){let a=e[n];a===void 0?e[n]=i:Array.isArray(a)&&Array.isArray(i)&&(i.push(...a),e[n]=i)}let r=e.$cstNode;return r&&(r.astNode=void 0,e.$cstNode=void 0),e}get definitionErrors(){return this.wrapper.definitionErrors}},w_e=class{static{o(this,"AbstractParserErrorMessageProvider")}static{E(this,"AbstractParserErrorMessageProvider")}buildMismatchTokenMessage(e){return pv.buildMismatchTokenMessage(e)}buildNotAllInputParsedMessage(e){return pv.buildNotAllInputParsedMessage(e)}buildNoViableAltMessage(e){return pv.buildNoViableAltMessage(e)}buildEarlyExitMessage(e){return pv.buildEarlyExitMessage(e)}},uH=class extends w_e{static{o(this,"LangiumParserErrorMessageProvider")}static{E(this,"LangiumParserErrorMessageProvider")}buildMismatchTokenMessage({expected:e,actual:t}){return`Expecting ${e.LABEL?"`"+e.LABEL+"`":e.name.endsWith(":KW")?`keyword '${e.name.substring(0,e.name.length-3)}'`:`token of type '${e.name}'`} but found \`${t.image}\`.`}buildNotAllInputParsedMessage({firstRedundant:e}){return`Expecting end of file but found \`${e.image}\`.`}},k_e=class extends cH{static{o(this,"LangiumCompletionParser")}static{E(this,"LangiumCompletionParser")}constructor(){super(...arguments),this.tokens=[],this.elementStack=[],this.lastElementStack=[],this.nextTokenIndex=0,this.stackSize=0}action(){}construct(){}parse(e){this.resetState();let t=this.lexer.tokenize(e,{mode:"partial"});return this.tokens=t.tokens,this.wrapper.input=[...this.tokens],this.mainRule.call(this.wrapper,{}),this.unorderedGroups.clear(),{tokens:this.tokens,elementStack:[...this.lastElementStack],tokenIndex:this.nextTokenIndex}}rule(e,t){let r=this.wrapper.DEFINE_RULE(T_e(e.name),this.startImplementation(t).bind(this));return this.allRules.set(e.name,r),e.entry&&(this.mainRule=r),r}resetState(){this.elementStack=[],this.lastElementStack=[],this.nextTokenIndex=0,this.stackSize=0}startImplementation(e){return t=>{let r=this.keepStackSize();try{e(t)}finally{this.resetStackSize(r)}}}removeUnexpectedElements(){this.elementStack.splice(this.stackSize)}keepStackSize(){let e=this.elementStack.length;return this.stackSize=e,e}resetStackSize(e){this.removeUnexpectedElements(),this.stackSize=e}consume(e,t,r){this.wrapper.wrapConsume(e,t),this.isRecording()||(this.lastElementStack=[...this.elementStack,r],this.nextTokenIndex=this.currIdx+1)}subrule(e,t,r,n,i){this.before(n),this.wrapper.wrapSubrule(e,t,i),this.after(n)}before(e){this.isRecording()||this.elementStack.push(e)}after(e){if(!this.isRecording()){let t=this.elementStack.lastIndexOf(e);t>=0&&this.elementStack.splice(t)}}get currIdx(){return this.wrapper.currIdx}},SEt={recoveryEnabled:!0,nodeLocationTracking:"full",skipValidations:!0,errorMessageProvider:new uH},S_e=class extends cCt{static{o(this,"ChevrotainWrapper")}static{E(this,"ChevrotainWrapper")}constructor(e,t){let r=t&&"maxLookahead"in t;super(e,{...SEt,lookaheadStrategy:r?new Fq({maxLookahead:t.maxLookahead}):new wEt({logging:t.skipValidations?()=>{}:void 0}),...t})}get IS_RECORDING(){return this.RECORDING_PHASE}DEFINE_RULE(e,t,r){return this.RULE(e,t,r)}wrapSelfAnalysis(){this.performSelfAnalysis()}wrapConsume(e,t){return this.consume(e,t,void 0)}wrapSubrule(e,t,r){return this.subrule(e,t,{ARGS:[r]})}wrapOr(e,t){this.or(e,t)}wrapOption(e,t){this.option(e,t)}wrapMany(e,t){this.many(e,t)}wrapAtLeastOne(e,t){this.atLeastOne(e,t)}rule(e){return e.call(this,{})}},EEt=class extends S_e{static{o(this,"ProfilerWrapper")}static{E(this,"ProfilerWrapper")}constructor(e,t,r){super(e,t),this.task=r}rule(e){this.task.start(),this.task.startSubTask(this.ruleName(e));try{return super.rule(e)}finally{this.task.stopSubTask(this.ruleName(e)),this.task.stop()}}ruleName(e){return e.ruleName}subrule(e,t,r){this.task.startSubTask(this.ruleName(t));try{return super.subrule(e,t,r)}finally{this.task.stopSubTask(this.ruleName(t))}}};o(p_,"createParser");E(p_,"createParser");o(E_e,"buildRules");E(E_e,"buildRules");o(A_e,"buildInfixRule");E(A_e,"buildInfixRule");o(gp,"buildElement");E(gp,"buildElement");o(R_e,"buildAction");E(R_e,"buildAction");o(__e,"buildRuleCall");E(__e,"buildRuleCall");o(L_e,"buildRuleCallPredicate");E(L_e,"buildRuleCallPredicate");o(Cc,"buildPredicate");E(Cc,"buildPredicate");o(D_e,"buildAlternatives");E(D_e,"buildAlternatives");o(I_e,"buildUnorderedGroup");E(I_e,"buildUnorderedGroup");o(M_e,"buildGroup");E(M_e,"buildGroup");o(cw,"getGuardCondition");E(cw,"getGuardCondition");o(hH,"buildCrossReference");E(hH,"buildCrossReference");o(N_e,"buildKeyword");E(N_e,"buildKeyword");o(dH,"wrap");E(dH,"wrap");o(m_,"getRule");E(m_,"getRule");o(P_e,"getRuleName");E(P_e,"getRuleName");o(oR,"getToken");E(oR,"getToken");o(fH,"createCompletionParser");E(fH,"createCompletionParser");o(pH,"createLangiumParser");E(pH,"createLangiumParser");o(mH,"prepareLangiumParser");E(mH,"prepareLangiumParser");g_=class{static{o(this,"DefaultTokenBuilder")}static{E(this,"DefaultTokenBuilder")}constructor(){this.diagnostics=[]}buildTokens(e,t){let r=Bn(_R(e,!1)),n=this.buildTerminalTokens(r),i=this.buildKeywordTokens(r,n,t);return i.push(...n),i}flushLexingReport(e){return{diagnostics:this.popDiagnostics()}}popDiagnostics(){let e=[...this.diagnostics];return this.diagnostics=[],e}buildTerminalTokens(e){return e.filter(Il).filter(t=>!t.fragment).map(t=>this.buildTerminalToken(t)).toArray()}buildTerminalToken(e){let t=yw(e),r=this.requiresCustomPattern(t)?this.regexPatternFunction(t):t,n={name:e.name,PATTERN:r};return typeof r=="function"&&(n.LINE_BREAKS=!0),e.hidden&&(n.GROUP=RR(t)?Fs.SKIPPED:"hidden"),n}requiresCustomPattern(e){return!!(e.flags.includes("u")||e.flags.includes("s"))}regexPatternFunction(e){let t=new RegExp(e,e.flags+"y");return(r,n)=>(t.lastIndex=n,t.exec(r))}buildKeywordTokens(e,t,r){return e.filter(t0).flatMap(n=>td(n).filter(Yh)).distinct(n=>n.value).toArray().sort((n,i)=>i.value.length-n.value.length).map(n=>this.buildKeywordToken(n,t,!!r?.caseInsensitive))}buildKeywordToken(e,t,r){let n=this.buildKeywordPattern(e,r),i={name:e.value,PATTERN:n,LONGER_ALT:this.findLongerAlt(e,t)};return typeof n=="function"&&(i.LINE_BREAKS=!0),i}buildKeywordPattern(e,t){return t?new RegExp(Nv(e.value),"i"):e.value}findLongerAlt(e,t){return t.reduce((r,n)=>{let i=n?.PATTERN;return i?.source&&zW("^"+i.source+"$",e.value)&&r.push(n),r},[])}},gH=class{static{o(this,"DefaultValueConverter")}static{E(this,"DefaultValueConverter")}convert(e,t){let r=t.grammarSource;if(r0(r)&&(r=HW(r)),jh(r)){let n=r.rule.ref;if(!n)throw new Error("This cst node was not parsed by a rule.");return this.runConverter(n,e,t)}return e}runConverter(e,t,r){switch(e.name.toUpperCase()){case"INT":return Iu.convertInt(t);case"STRING":return Iu.convertString(t);case"ID":return Iu.convertID(t)}switch(eq(e)?.toLowerCase()){case"number":return Iu.convertNumber(t);case"boolean":return Iu.convertBoolean(t);case"bigint":return Iu.convertBigint(t);case"date":return Iu.convertDate(t);default:return t}}};(function(e){function t(h){let d="";for(let f=1;f<h.length-1;f++){let p=h.charAt(f);if(p==="\\"){let m=h.charAt(++f);d+=r(m)}else d+=p}return d}o(t,"convertString"),E(t,"convertString"),e.convertString=t;function r(h){switch(h){case"b":return"\b";case"f":return"\f";case"n":return`
+`;case"r":return"\r";case"t":return"	";case"v":return"\v";case"0":return"\0";default:return h}}o(r,"convertEscapeCharacter"),E(r,"convertEscapeCharacter");function n(h){return h.charAt(0)==="^"?h.substring(1):h}o(n,"convertID"),E(n,"convertID"),e.convertID=n;function i(h){return parseInt(h)}o(i,"convertInt"),E(i,"convertInt"),e.convertInt=i;function a(h){return BigInt(h)}o(a,"convertBigint"),E(a,"convertBigint"),e.convertBigint=a;function s(h){return new Date(h)}o(s,"convertDate"),E(s,"convertDate"),e.convertDate=s;function l(h){return Number(h)}o(l,"convertNumber"),E(l,"convertNumber"),e.convertNumber=l;function u(h){return h.toLowerCase()==="true"}o(u,"convertBoolean"),E(u,"convertBoolean"),e.convertBoolean=u})(Iu||(Iu={}));Jn={};mR(Jn,eW(yR(),1));o(y_,"delayNextTick");E(y_,"delayNextTick");g6=0,O_e=10;o(v_,"startCancelableOperation");E(v_,"startCancelableOperation");o(yH,"setInterruptionPeriod");E(yH,"setInterruptionPeriod");Pu=Symbol("OperationCancelled");o(v0,"isOperationCancelled");E(v0,"isOperationCancelled");o(Ia,"interruptAndCheck");E(Ia,"interruptAndCheck");Jh=class{static{o(this,"Deferred")}static{E(this,"Deferred")}constructor(){this.promise=new Promise((e,t)=>{this.resolve=r=>(e(r),this),this.reject=r=>(t(r),this)})}},nwe=class KG{static{o(this,"_FullTextDocument")}static{E(this,"FullTextDocument")}constructor(t,r,n,i){this._uri=t,this._languageId=r,this._version=n,this._content=i,this._lineOffsets=void 0}get uri(){return this._uri}get languageId(){return this._languageId}get version(){return this._version}getText(t){if(t){let r=this.offsetAt(t.start),n=this.offsetAt(t.end);return this._content.substring(r,n)}return this._content}update(t,r){for(let n of t)if(KG.isIncremental(n)){let i=xH(n.range),a=this.offsetAt(i.start),s=this.offsetAt(i.end);this._content=this._content.substring(0,a)+n.text+this._content.substring(s,this._content.length);let l=Math.max(i.start.line,0),u=Math.max(i.end.line,0),h=this._lineOffsets,d=ZG(n.text,!1,a);if(u-l===d.length)for(let p=0,m=d.length;p<m;p++)h[p+l+1]=d[p];else d.length<1e4?h.splice(l+1,u-l,...d):this._lineOffsets=h=h.slice(0,l+1).concat(d,h.slice(u+1));let f=n.text.length-(s-a);if(f!==0)for(let p=l+1+d.length,m=h.length;p<m;p++)h[p]=h[p]+f}else if(KG.isFull(n))this._content=n.text,this._lineOffsets=void 0;else throw new Error("Unknown change event received");this._version=r}getLineOffsets(){return this._lineOffsets===void 0&&(this._lineOffsets=ZG(this._content,!0)),this._lineOffsets}positionAt(t){t=Math.max(Math.min(t,this._content.length),0);let r=this.getLineOffsets(),n=0,i=r.length;if(i===0)return{line:0,character:t};for(;n<i;){let s=Math.floor((n+i)/2);r[s]>t?i=s:n=s+1}let a=n-1;return t=this.ensureBeforeEOL(t,r[a]),{line:a,character:t-r[a]}}offsetAt(t){let r=this.getLineOffsets();if(t.line>=r.length)return this._content.length;if(t.line<0)return 0;let n=r[t.line];if(t.character<=0)return n;let i=t.line+1<r.length?r[t.line+1]:this._content.length,a=Math.min(n+t.character,i);return this.ensureBeforeEOL(a,n)}ensureBeforeEOL(t,r){for(;t>r&&vH(this._content.charCodeAt(t-1));)t--;return t}get lineCount(){return this.getLineOffsets().length}static isIncremental(t){let r=t;return r!=null&&typeof r.text=="string"&&r.range!==void 0&&(r.rangeLength===void 0||typeof r.rangeLength=="number")}static isFull(t){let r=t;return r!=null&&typeof r.text=="string"&&r.range===void 0&&r.rangeLength===void 0}};(function(e){function t(i,a,s,l){return new nwe(i,a,s,l)}o(t,"create"),E(t,"create"),e.create=t;function r(i,a,s){if(i instanceof nwe)return i.update(a,s),i;throw new Error("TextDocument.update: document must be created by TextDocument.create")}o(r,"update"),E(r,"update"),e.update=r;function n(i,a){let s=i.getText(),l=cR(a.map(B_e),(d,f)=>{let p=d.range.start.line-f.range.start.line;return p===0?d.range.start.character-f.range.start.character:p}),u=0,h=[];for(let d of l){let f=i.offsetAt(d.range.start);if(f<u)throw new Error("Overlapping edit");f>u&&h.push(s.substring(u,f)),d.newText.length&&h.push(d.newText),u=i.offsetAt(d.range.end)}return h.push(s.substr(u)),h.join("")}o(n,"applyEdits"),E(n,"applyEdits"),e.applyEdits=n})(lR||(lR={}));o(cR,"mergeSort");E(cR,"mergeSort");o(ZG,"computeLineOffsets");E(ZG,"computeLineOffsets");o(vH,"isEOL");E(vH,"isEOL");o(xH,"getWellformedRange");E(xH,"getWellformedRange");o(B_e,"getWellformedEdit");E(B_e,"getWellformedEdit");(()=>{"use strict";var e={975:I=>{function _(D){if(typeof D!="string")throw new TypeError("Path must be a string. Received "+JSON.stringify(D))}o(_,"e2"),E(_,"e");function A(D,P){for(var B,O="",$=0,V=-1,G=0,z=0;z<=D.length;++z){if(z<D.length)B=D.charCodeAt(z);else{if(B===47)break;B=47}if(B===47){if(!(V===z-1||G===1))if(V!==z-1&&G===2){if(O.length<2||$!==2||O.charCodeAt(O.length-1)!==46||O.charCodeAt(O.length-2)!==46){if(O.length>2){var W=O.lastIndexOf("/");if(W!==O.length-1){W===-1?(O="",$=0):$=(O=O.slice(0,W)).length-1-O.lastIndexOf("/"),V=z,G=0;continue}}else if(O.length===2||O.length===1){O="",$=0,V=z,G=0;continue}}P&&(O.length>0?O+="/..":O="..",$=2)}else O.length>0?O+="/"+D.slice(V+1,z):O=D.slice(V+1,z),$=z-V-1;V=z,G=0}else B===46&&G!==-1?++G:G=-1}return O}o(A,"r2"),E(A,"r");var M={resolve:E(function(){for(var D,P="",B=!1,O=arguments.length-1;O>=-1&&!B;O--){var $;O>=0?$=arguments[O]:(D===void 0&&(D=process.cwd()),$=D),_($),$.length!==0&&(P=$+"/"+P,B=$.charCodeAt(0)===47)}return P=A(P,!B),B?P.length>0?"/"+P:"/":P.length>0?P:"."},"resolve"),normalize:E(function(D){if(_(D),D.length===0)return".";var P=D.charCodeAt(0)===47,B=D.charCodeAt(D.length-1)===47;return(D=A(D,!P)).length!==0||P||(D="."),D.length>0&&B&&(D+="/"),P?"/"+D:D},"normalize"),isAbsolute:E(function(D){return _(D),D.length>0&&D.charCodeAt(0)===47},"isAbsolute"),join:E(function(){if(arguments.length===0)return".";for(var D,P=0;P<arguments.length;++P){var B=arguments[P];_(B),B.length>0&&(D===void 0?D=B:D+="/"+B)}return D===void 0?".":M.normalize(D)},"join"),relative:E(function(D,P){if(_(D),_(P),D===P||(D=M.resolve(D))===(P=M.resolve(P)))return"";for(var B=1;B<D.length&&D.charCodeAt(B)===47;++B);for(var O=D.length,$=O-B,V=1;V<P.length&&P.charCodeAt(V)===47;++V);for(var G=P.length-V,z=$<G?$:G,W=-1,H=0;H<=z;++H){if(H===z){if(G>z){if(P.charCodeAt(V+H)===47)return P.slice(V+H+1);if(H===0)return P.slice(V+H)}else $>z&&(D.charCodeAt(B+H)===47?W=H:H===0&&(W=0));break}var j=D.charCodeAt(B+H);if(j!==P.charCodeAt(V+H))break;j===47&&(W=H)}var Q="";for(H=B+W+1;H<=O;++H)H!==O&&D.charCodeAt(H)!==47||(Q.length===0?Q+="..":Q+="/..");return Q.length>0?Q+P.slice(V+W):(V+=W,P.charCodeAt(V)===47&&++V,P.slice(V))},"relative"),_makeLong:E(function(D){return D},"_makeLong"),dirname:E(function(D){if(_(D),D.length===0)return".";for(var P=D.charCodeAt(0),B=P===47,O=-1,$=!0,V=D.length-1;V>=1;--V)if((P=D.charCodeAt(V))===47){if(!$){O=V;break}}else $=!1;return O===-1?B?"/":".":B&&O===1?"//":D.slice(0,O)},"dirname"),basename:E(function(D,P){if(P!==void 0&&typeof P!="string")throw new TypeError('"ext" argument must be a string');_(D);var B,O=0,$=-1,V=!0;if(P!==void 0&&P.length>0&&P.length<=D.length){if(P.length===D.length&&P===D)return"";var G=P.length-1,z=-1;for(B=D.length-1;B>=0;--B){var W=D.charCodeAt(B);if(W===47){if(!V){O=B+1;break}}else z===-1&&(V=!1,z=B+1),G>=0&&(W===P.charCodeAt(G)?--G==-1&&($=B):(G=-1,$=z))}return O===$?$=z:$===-1&&($=D.length),D.slice(O,$)}for(B=D.length-1;B>=0;--B)if(D.charCodeAt(B)===47){if(!V){O=B+1;break}}else $===-1&&(V=!1,$=B+1);return $===-1?"":D.slice(O,$)},"basename"),extname:E(function(D){_(D);for(var P=-1,B=0,O=-1,$=!0,V=0,G=D.length-1;G>=0;--G){var z=D.charCodeAt(G);if(z!==47)O===-1&&($=!1,O=G+1),z===46?P===-1?P=G:V!==1&&(V=1):P!==-1&&(V=-1);else if(!$){B=G+1;break}}return P===-1||O===-1||V===0||V===1&&P===O-1&&P===B+1?"":D.slice(P,O)},"extname"),format:E(function(D){if(D===null||typeof D!="object")throw new TypeError('The "pathObject" argument must be of type Object. Received type '+typeof D);return(function(P,B){var O=B.dir||B.root,$=B.base||(B.name||"")+(B.ext||"");return O?O===B.root?O+$:O+"/"+$:$})(0,D)},"format"),parse:E(function(D){_(D);var P={root:"",dir:"",base:"",ext:"",name:""};if(D.length===0)return P;var B,O=D.charCodeAt(0),$=O===47;$?(P.root="/",B=1):B=0;for(var V=-1,G=0,z=-1,W=!0,H=D.length-1,j=0;H>=B;--H)if((O=D.charCodeAt(H))!==47)z===-1&&(W=!1,z=H+1),O===46?V===-1?V=H:j!==1&&(j=1):V!==-1&&(j=-1);else if(!W){G=H+1;break}return V===-1||z===-1||j===0||j===1&&V===z-1&&V===G+1?z!==-1&&(P.base=P.name=G===0&&$?D.slice(1,z):D.slice(G,z)):(G===0&&$?(P.name=D.slice(1,V),P.base=D.slice(1,z)):(P.name=D.slice(G,V),P.base=D.slice(G,z)),P.ext=D.slice(V,z)),G>0?P.dir=D.slice(0,G-1):$&&(P.dir="/"),P},"parse"),sep:"/",delimiter:":",win32:null,posix:null};M.posix=M,I.exports=M}},t={};function r(I){var _=t[I];if(_!==void 0)return _.exports;var A=t[I]={exports:{}};return e[I](A,A.exports,r),A.exports}o(r,"r"),E(r,"r"),r.d=(I,_)=>{for(var A in _)r.o(_,A)&&!r.o(I,A)&&Object.defineProperty(I,A,{enumerable:!0,get:_[A]})},r.o=(I,_)=>Object.prototype.hasOwnProperty.call(I,_),r.r=I=>{typeof Symbol<"u"&&Symbol.toStringTag&&Object.defineProperty(I,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(I,"__esModule",{value:!0})};var n={};let i;r.r(n),r.d(n,{URI:E(()=>p,"URI"),Utils:E(()=>N,"Utils")}),typeof process=="object"?i=process.platform==="win32":typeof navigator=="object"&&(i=navigator.userAgent.indexOf("Windows")>=0);let a=/^\w[\w\d+.-]*$/,s=/^\//,l=/^\/\//;function u(I,_){if(!I.scheme&&_)throw new Error(`[UriError]: Scheme is missing: {scheme: "", authority: "${I.authority}", path: "${I.path}", query: "${I.query}", fragment: "${I.fragment}"}`);if(I.scheme&&!a.test(I.scheme))throw new Error("[UriError]: Scheme contains illegal characters.");if(I.path){if(I.authority){if(!s.test(I.path))throw new Error('[UriError]: If a URI contains an authority component, then the path component must either be empty or begin with a slash ("/") character')}else if(l.test(I.path))throw new Error('[UriError]: If a URI does not contain an authority component, then the path cannot begin with two slash characters ("//")')}}o(u,"a"),E(u,"a");let h="",d="/",f=/^(([^:/?#]+?):)?(\/\/([^/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?/;class p{static{o(this,"l")}static{E(this,"l")}static isUri(_){return _ instanceof p||!!_&&typeof _.authority=="string"&&typeof _.fragment=="string"&&typeof _.path=="string"&&typeof _.query=="string"&&typeof _.scheme=="string"&&typeof _.fsPath=="string"&&typeof _.with=="function"&&typeof _.toString=="function"}scheme;authority;path;query;fragment;constructor(_,A,M,D,P,B=!1){typeof _=="object"?(this.scheme=_.scheme||h,this.authority=_.authority||h,this.path=_.path||h,this.query=_.query||h,this.fragment=_.fragment||h):(this.scheme=(function(O,$){return O||$?O:"file"})(_,B),this.authority=A||h,this.path=(function(O,$){switch(O){case"https":case"http":case"file":$?$[0]!==d&&($=d+$):$=d}return $})(this.scheme,M||h),this.query=D||h,this.fragment=P||h,u(this,B))}get fsPath(){return b(this,!1)}with(_){if(!_)return this;let{scheme:A,authority:M,path:D,query:P,fragment:B}=_;return A===void 0?A=this.scheme:A===null&&(A=h),M===void 0?M=this.authority:M===null&&(M=h),D===void 0?D=this.path:D===null&&(D=h),P===void 0?P=this.query:P===null&&(P=h),B===void 0?B=this.fragment:B===null&&(B=h),A===this.scheme&&M===this.authority&&D===this.path&&P===this.query&&B===this.fragment?this:new g(A,M,D,P,B)}static parse(_,A=!1){let M=f.exec(_);return M?new g(M[2]||h,w(M[4]||h),w(M[5]||h),w(M[7]||h),w(M[9]||h),A):new g(h,h,h,h,h)}static file(_){let A=h;if(i&&(_=_.replace(/\\/g,d)),_[0]===d&&_[1]===d){let M=_.indexOf(d,2);M===-1?(A=_.substring(2),_=d):(A=_.substring(2,M),_=_.substring(M)||d)}return new g("file",A,_,h,h)}static from(_){let A=new g(_.scheme,_.authority,_.path,_.query,_.fragment);return u(A,!0),A}toString(_=!1){return T(this,_)}toJSON(){return this}static revive(_){if(_){if(_ instanceof p)return _;{let A=new g(_);return A._formatted=_.external,A._fsPath=_._sep===m?_.fsPath:null,A}}return _}}let m=i?1:void 0;class g extends p{static{o(this,"d")}static{E(this,"d")}_formatted=null;_fsPath=null;get fsPath(){return this._fsPath||(this._fsPath=b(this,!1)),this._fsPath}toString(_=!1){return _?T(this,!0):(this._formatted||(this._formatted=T(this,!1)),this._formatted)}toJSON(){let _={$mid:1};return this._fsPath&&(_.fsPath=this._fsPath,_._sep=m),this._formatted&&(_.external=this._formatted),this.path&&(_.path=this.path),this.scheme&&(_.scheme=this.scheme),this.authority&&(_.authority=this.authority),this.query&&(_.query=this.query),this.fragment&&(_.fragment=this.fragment),_}}let y={58:"%3A",47:"%2F",63:"%3F",35:"%23",91:"%5B",93:"%5D",64:"%40",33:"%21",36:"%24",38:"%26",39:"%27",40:"%28",41:"%29",42:"%2A",43:"%2B",44:"%2C",59:"%3B",61:"%3D",32:"%20"};function v(I,_,A){let M,D=-1;for(let P=0;P<I.length;P++){let B=I.charCodeAt(P);if(B>=97&&B<=122||B>=65&&B<=90||B>=48&&B<=57||B===45||B===46||B===95||B===126||_&&B===47||A&&B===91||A&&B===93||A&&B===58)D!==-1&&(M+=encodeURIComponent(I.substring(D,P)),D=-1),M!==void 0&&(M+=I.charAt(P));else{M===void 0&&(M=I.substr(0,P));let O=y[B];O!==void 0?(D!==-1&&(M+=encodeURIComponent(I.substring(D,P)),D=-1),M+=O):D===-1&&(D=P)}}return D!==-1&&(M+=encodeURIComponent(I.substring(D))),M!==void 0?M:I}o(v,"m"),E(v,"m");function x(I){let _;for(let A=0;A<I.length;A++){let M=I.charCodeAt(A);M===35||M===63?(_===void 0&&(_=I.substr(0,A)),_+=y[M]):_!==void 0&&(_+=I[A])}return _!==void 0?_:I}o(x,"y"),E(x,"y");function b(I,_){let A;return A=I.authority&&I.path.length>1&&I.scheme==="file"?`//${I.authority}${I.path}`:I.path.charCodeAt(0)===47&&(I.path.charCodeAt(1)>=65&&I.path.charCodeAt(1)<=90||I.path.charCodeAt(1)>=97&&I.path.charCodeAt(1)<=122)&&I.path.charCodeAt(2)===58?_?I.path.substr(1):I.path[1].toLowerCase()+I.path.substr(2):I.path,i&&(A=A.replace(/\//g,"\\")),A}o(b,"v"),E(b,"v");function T(I,_){let A=_?x:v,M="",{scheme:D,authority:P,path:B,query:O,fragment:$}=I;if(D&&(M+=D,M+=":"),(P||D==="file")&&(M+=d,M+=d),P){let V=P.indexOf("@");if(V!==-1){let G=P.substr(0,V);P=P.substr(V+1),V=G.lastIndexOf(":"),V===-1?M+=A(G,!1,!1):(M+=A(G.substr(0,V),!1,!1),M+=":",M+=A(G.substr(V+1),!1,!0)),M+="@"}P=P.toLowerCase(),V=P.lastIndexOf(":"),V===-1?M+=A(P,!1,!0):(M+=A(P.substr(0,V),!1,!0),M+=P.substr(V))}if(B){if(B.length>=3&&B.charCodeAt(0)===47&&B.charCodeAt(2)===58){let V=B.charCodeAt(1);V>=65&&V<=90&&(B=`/${String.fromCharCode(V+32)}:${B.substr(3)}`)}else if(B.length>=2&&B.charCodeAt(1)===58){let V=B.charCodeAt(0);V>=65&&V<=90&&(B=`${String.fromCharCode(V+32)}:${B.substr(2)}`)}M+=A(B,!0,!1)}return O&&(M+="?",M+=A(O,!1,!1)),$&&(M+="#",M+=_?$:v($,!1,!1)),M}o(T,"b"),E(T,"b");function k(I){try{return decodeURIComponent(I)}catch{return I.length>3?I.substr(0,3)+k(I.substr(3)):I}}o(k,"C"),E(k,"C");let C=/(%[0-9A-Za-z][0-9A-Za-z])+/g;function w(I){return I.match(C)?I.replace(C,(_=>k(_))):I}o(w,"w"),E(w,"w");var S=r(975);let R=S.posix||S,L="/";var N;(function(I){I.joinPath=function(_,...A){return _.with({path:R.join(_.path,...A)})},I.resolvePath=function(_,...A){let M=_.path,D=!1;M[0]!==L&&(M=L+M,D=!0);let P=R.resolve(M,...A);return D&&P[0]===L&&!_.authority&&(P=P.substring(1)),_.with({path:P})},I.dirname=function(_){if(_.path.length===0||_.path===L)return _;let A=R.dirname(_.path);return A.length===1&&A.charCodeAt(0)===46&&(A=""),_.with({path:A})},I.basename=function(_){return R.basename(_.path)},I.extname=function(_){return R.extname(_.path)}})(N||(N={})),$_e=n})();({URI:Yo,Utils:hC}=$_e);(function(e){e.basename=hC.basename,e.dirname=hC.dirname,e.extname=hC.extname,e.joinPath=hC.joinPath,e.resolvePath=hC.resolvePath;let t=typeof process=="object"&&process?.platform==="win32";function r(s,l){return s?.toString()===l?.toString()}o(r,"equals"),E(r,"equals"),e.equals=r;function n(s,l){let u=typeof s=="string"?Yo.parse(s).path:s.path,h=typeof l=="string"?Yo.parse(l).path:l.path,d=u.split("/").filter(y=>y.length>0),f=h.split("/").filter(y=>y.length>0);if(t){let y=/^[A-Z]:$/;if(d[0]&&y.test(d[0])&&(d[0]=d[0].toLowerCase()),f[0]&&y.test(f[0])&&(f[0]=f[0].toLowerCase()),d[0]!==f[0])return h.substring(1)}let p=0;for(;p<d.length&&d[p]===f[p];p++);let m="../".repeat(d.length-p),g=f.slice(p).join("/");return m+g}o(n,"relative"),E(n,"relative"),e.relative=n;function i(s){return Yo.parse(s.toString()).toString()}o(i,"normalize"),E(i,"normalize"),e.normalize=i;function a(s,l){let u=typeof s=="string"?s:s.path,h=typeof l=="string"?l:l.path;return h.charAt(h.length-1)==="/"&&(h=h.slice(0,-1)),u.charAt(u.length-1)==="/"&&(u=u.slice(0,-1)),h===u?!0:h.length<u.length||h.charAt(u.length)!=="/"?!1:h.startsWith(u)}o(a,"contains"),E(a,"contains"),e.contains=a})($s||($s={}));bH=class{static{o(this,"UriTrie")}static{E(this,"UriTrie")}constructor(){this.root={name:"",children:new Map}}normalizeUri(e){return $s.normalize(e)}clear(){this.root.children.clear()}insert(e,t){let r=this.getNode(this.normalizeUri(e),!0);r.element=t}delete(e){let t=this.getNode(this.normalizeUri(e),!1);t?.parent&&t.parent.children.delete(t.name)}has(e){return this.getNode(this.normalizeUri(e),!1)?.element!==void 0}hasNode(e){return this.getNode(this.normalizeUri(e),!1)!==void 0}find(e){return this.getNode(this.normalizeUri(e),!1)?.element}findNode(e){let t=this.normalizeUri(e),r=this.getNode(t,!1);if(r)return{name:r.name,uri:$s.joinPath(Yo.parse(t),r.name).toString(),element:r.element}}findChildren(e){let t=this.normalizeUri(e),r=this.getNode(t,!1);return r?Array.from(r.children.values()).map(n=>({name:n.name,uri:$s.joinPath(Yo.parse(t),n.name).toString(),element:n.element})):[]}all(){return this.collectValues(this.root)}findAll(e){let t=this.getNode($s.normalize(e),!1);return t?this.collectValues(t):[]}getNode(e,t){let r=e.split("/");e.charAt(e.length-1)==="/"&&r.pop();let n=this.root;for(let i of r){let a=n.children.get(i);if(!a)if(t)a={name:i,children:new Map,parent:n},n.children.set(i,a);else return;n=a}return n}collectValues(e){let t=[];e.element&&t.push(e.element);for(let r of e.children.values())t.push(...this.collectValues(r));return t}};(function(e){e[e.Changed=0]="Changed",e[e.Parsed=1]="Parsed",e[e.IndexedContent=2]="IndexedContent",e[e.ComputedScopes=3]="ComputedScopes",e[e.Linked=4]="Linked",e[e.IndexedReferences=5]="IndexedReferences",e[e.Validated=6]="Validated"})(en||(en={}));F_e=class{static{o(this,"DefaultLangiumDocumentFactory")}static{E(this,"DefaultLangiumDocumentFactory")}constructor(e){this.serviceRegistry=e.ServiceRegistry,this.textDocuments=e.workspace.TextDocuments,this.fileSystemProvider=e.workspace.FileSystemProvider}async fromUri(e,t=Jn.CancellationToken.None){let r=await this.fileSystemProvider.readFile(e);return this.createAsync(e,r,t)}fromTextDocument(e,t,r){return t=t??Yo.parse(e.uri),Jn.CancellationToken.is(r)?this.createAsync(t,e,r):this.create(t,e,r)}fromString(e,t,r){return Jn.CancellationToken.is(r)?this.createAsync(t,e,r):this.create(t,e,r)}fromModel(e,t){return this.create(t,{$model:e})}create(e,t,r){if(typeof t=="string"){let n=this.parse(e,t,r);return this.createLangiumDocument(n,e,void 0,t)}else if("$model"in t){let n={value:t.$model,parserErrors:[],lexerErrors:[]};return this.createLangiumDocument(n,e)}else{let n=this.parse(e,t.getText(),r);return this.createLangiumDocument(n,e,t)}}async createAsync(e,t,r){if(typeof t=="string"){let n=await this.parseAsync(e,t,r);return this.createLangiumDocument(n,e,void 0,t)}else{let n=await this.parseAsync(e,t.getText(),r);return this.createLangiumDocument(n,e,t)}}createLangiumDocument(e,t,r,n){let i;if(r)i={parseResult:e,uri:t,state:en.Parsed,references:[],textDocument:r};else{let a=this.createTextDocumentGetter(t,n);i={parseResult:e,uri:t,state:en.Parsed,references:[],get textDocument(){return a()}}}return e.value.$document=i,i}async update(e,t){let r=e.parseResult.value.$cstNode?.root.fullText,n=this.textDocuments?.get(e.uri.toString()),i=n?n.getText():await this.fileSystemProvider.readFile(e.uri);if(n)Object.defineProperty(e,"textDocument",{value:n});else{let a=this.createTextDocumentGetter(e.uri,i);Object.defineProperty(e,"textDocument",{get:a})}return r!==i&&(e.parseResult=await this.parseAsync(e.uri,i,t),e.parseResult.value.$document=e),e.state=en.Parsed,e}parse(e,t,r){return this.serviceRegistry.getServices(e).parser.LangiumParser.parse(t,r)}parseAsync(e,t,r){return this.serviceRegistry.getServices(e).parser.AsyncParser.parse(t,r)}createTextDocumentGetter(e,t){let r=this.serviceRegistry,n;return()=>n??(n=lR.create(e.toString(),r.getServices(e).LanguageMetaData.languageId,0,t??""))}},z_e=class{static{o(this,"DefaultLangiumDocuments")}static{E(this,"DefaultLangiumDocuments")}constructor(e){this.documentTrie=new bH,this.services=e,this.langiumDocumentFactory=e.workspace.LangiumDocumentFactory,this.documentBuilder=()=>e.workspace.DocumentBuilder}get all(){return Bn(this.documentTrie.all())}addDocument(e){let t=e.uri.toString();if(this.documentTrie.has(t))throw new Error(`A document with the URI '${t}' is already present.`);this.documentTrie.insert(t,e)}getDocument(e){let t=e.toString();return this.documentTrie.find(t)}getDocuments(e){let t=e.toString();return this.documentTrie.findAll(t)}async getOrCreateDocument(e,t){let r=this.getDocument(e);return r||(r=await this.langiumDocumentFactory.fromUri(e,t),this.addDocument(r),r)}createDocument(e,t,r){if(r)return this.langiumDocumentFactory.fromString(t,e,r).then(n=>(this.addDocument(n),n));{let n=this.langiumDocumentFactory.fromString(t,e);return this.addDocument(n),n}}hasDocument(e){return this.documentTrie.has(e.toString())}invalidateDocument(e){let t=e.toString(),r=this.documentTrie.find(t);return r&&this.documentBuilder().resetToState(r,en.Changed),r}deleteDocument(e){let t=e.toString(),r=this.documentTrie.find(t);return r&&(r.state=en.Changed,this.documentTrie.delete(t)),r}deleteDocuments(e){let t=e.toString(),r=this.documentTrie.findAll(t);for(let n of r)n.state=en.Changed;return this.documentTrie.delete(t),r}},gg=Symbol("RefResolving"),G_e=class{static{o(this,"DefaultLinker")}static{E(this,"DefaultLinker")}constructor(e){this.reflection=e.shared.AstReflection,this.langiumDocuments=()=>e.shared.workspace.LangiumDocuments,this.scopeProvider=e.references.ScopeProvider,this.astNodeLocator=e.workspace.AstNodeLocator,this.profiler=e.shared.profilers.LangiumProfiler,this.languageId=e.LanguageMetaData.languageId}async link(e,t=Jn.CancellationToken.None){if(this.profiler?.isActive("linking")){let r=this.profiler.createTask("linking",this.languageId);r.start();try{for(let n of kc(e.parseResult.value))await Ia(t),kv(n).forEach(i=>{let a=`${n.$type}:${i.property}`;r.startSubTask(a);try{this.doLink(i,e)}finally{r.stopSubTask(a)}})}finally{r.stop()}}else for(let r of kc(e.parseResult.value))await Ia(t),kv(r).forEach(n=>this.doLink(n,e))}doLink(e,t){let r=e.reference;if("_ref"in r&&r._ref===void 0){r._ref=gg;try{let n=this.getCandidate(e);if(Tg(n))r._ref=n;else{r._nodeDescription=n;let i=this.loadAstNode(n);r._ref=i??this.createLinkingError(e,n)}}catch(n){console.error(`An error occurred while resolving reference to '${r.$refText}':`,n);let i=n.message??String(n);r._ref={info:e,message:`An error occurred while resolving reference to '${r.$refText}': ${i}`}}t.references.push(r)}else if("_items"in r&&r._items===void 0){r._items=gg;try{let n=this.getCandidates(e),i=[];if(Tg(n))r._linkingError=n;else for(let a of n){let s=this.loadAstNode(a);s&&i.push({ref:s,$nodeDescription:a})}r._items=i}catch(n){r._linkingError={info:e,message:`An error occurred while resolving reference to '${r.$refText}': ${n}`},r._items=[]}t.references.push(r)}}unlink(e){for(let t of e.references)"_ref"in t?(t._ref=void 0,delete t._nodeDescription):"_items"in t&&(t._items=void 0,delete t._linkingError);e.references=[]}getCandidate(e){return this.scopeProvider.getScope(e).getElement(e.reference.$refText)??this.createLinkingError(e)}getCandidates(e){let r=this.scopeProvider.getScope(e).getElements(e.reference.$refText).distinct(n=>`${n.documentUri}#${n.path}`).toArray();return r.length>0?r:this.createLinkingError(e)}buildReference(e,t,r,n){let i=this,a={$refNode:r,$refText:n,_ref:void 0,get ref(){if(Zi(this._ref))return this._ref;if(iW(this._nodeDescription)){let s=i.loadAstNode(this._nodeDescription);this._ref=s??i.createLinkingError({reference:a,container:e,property:t},this._nodeDescription)}else if(this._ref===void 0){this._ref=gg;let s=yv(e).$document,l=i.getLinkedNode({reference:a,container:e,property:t});if(l.error&&s&&s.state<en.ComputedScopes)return this._ref=void 0;this._ref=l.node??l.error,this._nodeDescription=l.descr,s?.references.push(this)}else this._ref===gg&&i.throwCyclicReferenceError(e,t,n);return Zi(this._ref)?this._ref:void 0},get $nodeDescription(){return this._nodeDescription},get error(){return Tg(this._ref)?this._ref:void 0}};return a}buildMultiReference(e,t,r,n){let i=this,a={$refNode:r,$refText:n,_items:void 0,get items(){if(Array.isArray(this._items))return this._items;if(this._items===void 0){this._items=gg;let s=yv(e).$document,l=i.getCandidates({reference:a,container:e,property:t}),u=[];if(Tg(l))this._linkingError=l;else for(let h of l){let d=i.loadAstNode(h);d&&u.push({ref:d,$nodeDescription:h})}this._items=u,s?.references.push(this)}else this._items===gg&&i.throwCyclicReferenceError(e,t,n);return Array.isArray(this._items)?this._items:[]},get error(){if(this._linkingError)return this._linkingError;if(!(this.items.length>0))return this._linkingError=i.createLinkingError({reference:a,container:e,property:t})}};return a}throwCyclicReferenceError(e,t,r){throw new Error(`Cyclic reference resolution detected: ${this.astNodeLocator.getAstNodePath(e)}/${t} (symbol '${r}')`)}getLinkedNode(e){try{let t=this.getCandidate(e);if(Tg(t))return{error:t};let r=this.loadAstNode(t);return r?{node:r,descr:t}:{descr:t,error:this.createLinkingError(e,t)}}catch(t){console.error(`An error occurred while resolving reference to '${e.reference.$refText}':`,t);let r=t.message??String(t);return{error:{info:e,message:`An error occurred while resolving reference to '${e.reference.$refText}': ${r}`}}}}loadAstNode(e){if(e.node)return e.node;let t=this.langiumDocuments().getDocument(e.documentUri);if(t)return this.astNodeLocator.getAstNode(t.parseResult.value,e.path)}createLinkingError(e,t){let r=yv(e.container).$document;r&&r.state<en.ComputedScopes&&console.warn(`Attempted reference resolution before document reached ComputedScopes state (${r.uri}).`);let n=this.reflection.getReferenceType(e);return{info:e,message:`Could not resolve reference to ${n} named '${e.reference.$refText}'.`,targetDescription:t}}};o(TH,"isNamed");E(TH,"isNamed");V_e=class{static{o(this,"DefaultNameProvider")}static{E(this,"DefaultNameProvider")}getName(e){if(TH(e))return e.name}getNameNode(e){return LR(e.$cstNode,"name")}},W_e=class{static{o(this,"DefaultReferences")}static{E(this,"DefaultReferences")}constructor(e){this.nameProvider=e.references.NameProvider,this.index=e.shared.workspace.IndexManager,this.nodeLocator=e.workspace.AstNodeLocator,this.documents=e.shared.workspace.LangiumDocuments,this.hasMultiReference=kc(e.Grammar).some(t=>r0(t)&&t.isMulti)}findDeclarations(e){if(e){let t=XW(e),r=e.astNode;if(t&&r){let n=r[t.feature];if(Bs(n)||Ou(n))return A6(n);if(Array.isArray(n)){for(let i of n)if((Bs(i)||Ou(i))&&i.$refNode&&i.$refNode.offset<=e.offset&&i.$refNode.end>=e.end)return A6(i)}}if(r){let n=this.nameProvider.getNameNode(r);if(n&&(n===e||RW(e,n)))return this.getSelfNodes(r)}}return[]}getSelfNodes(e){if(this.hasMultiReference){let t=this.index.findAllReferences(e,this.nodeLocator.getAstNodePath(e)),r=this.getNodeFromReferenceDescription(t.head());if(r){for(let n of kv(r))if(Ou(n.reference)&&n.reference.items.some(i=>i.ref===e))return n.reference.items.map(i=>i.ref)}return[e]}else return[e]}getNodeFromReferenceDescription(e){if(!e)return;let t=this.documents.getDocument(e.sourceUri);if(t)return this.nodeLocator.getAstNode(t.parseResult.value,e.sourcePath)}findDeclarationNodes(e){let t=this.findDeclarations(e),r=[];for(let n of t){let i=this.nameProvider.getNameNode(n)??n.$cstNode;i&&r.push(i)}return r}findReferences(e,t){let r=[];t.includeDeclaration&&r.push(...this.getSelfReferences(e));let n=this.index.findAllReferences(e,this.nodeLocator.getAstNodePath(e));return t.documentUri&&(n=n.filter(i=>$s.equals(i.sourceUri,t.documentUri))),r.push(...n),Bn(r)}getSelfReferences(e){let t=this.getSelfNodes(e),r=[];for(let n of t){let i=this.nameProvider.getNameNode(n);if(i){let a=wc(n),s=this.nodeLocator.getAstNodePath(n);r.push({sourceUri:a.uri,sourcePath:s,targetUri:a.uri,targetPath:s,segment:Av(i),local:!0})}}return r}},ed=class{static{o(this,"MultiMap")}static{E(this,"MultiMap")}constructor(e){if(this.map=new Map,e)for(let[t,r]of e)this.add(t,r)}get size(){return jC.sum(Bn(this.map.values()).map(e=>e.length))}clear(){this.map.clear()}delete(e,t){if(t===void 0)return this.map.delete(e);{let r=this.map.get(e);if(r){let n=r.indexOf(t);if(n>=0)return r.length===1?this.map.delete(e):r.splice(n,1),!0}return!1}}get(e){return this.map.get(e)??[]}getStream(e){let t=this.map.get(e);return t?Bn(t):Tv}has(e,t){if(t===void 0)return this.map.has(e);{let r=this.map.get(e);return r?r.indexOf(t)>=0:!1}}add(e,t){return this.map.has(e)?this.map.get(e).push(t):this.map.set(e,[t]),this}addAll(e,t){return this.map.has(e)?this.map.get(e).push(...t):this.map.set(e,Array.from(t)),this}forEach(e){this.map.forEach((t,r)=>t.forEach(n=>e(n,r,this)))}[Symbol.iterator](){return this.entries().iterator()}entries(){return Bn(this.map.entries()).flatMap(([e,t])=>t.map(r=>[e,r]))}keys(){return Bn(this.map.keys())}values(){return Bn(this.map.values()).flat()}entriesGroupedByKey(){return Bn(this.map.entries())}},uR=class{static{o(this,"BiMap")}static{E(this,"BiMap")}get size(){return this.map.size}constructor(e){if(this.map=new Map,this.inverse=new Map,e)for(let[t,r]of e)this.set(t,r)}clear(){this.map.clear(),this.inverse.clear()}set(e,t){return this.map.set(e,t),this.inverse.set(t,e),this}get(e){return this.map.get(e)}getKey(e){return this.inverse.get(e)}delete(e){let t=this.map.get(e);return t!==void 0?(this.map.delete(e),this.inverse.delete(t),!0):!1}},q_e=class{static{o(this,"DefaultScopeComputation")}static{E(this,"DefaultScopeComputation")}constructor(e){this.nameProvider=e.references.NameProvider,this.descriptions=e.workspace.AstNodeDescriptionProvider}async collectExportedSymbols(e,t=Jn.CancellationToken.None){return this.collectExportedSymbolsForNode(e.parseResult.value,e,void 0,t)}async collectExportedSymbolsForNode(e,t,r=fw,n=Jn.CancellationToken.None){let i=[];this.addExportedSymbol(e,i,t);for(let a of r(e))await Ia(n),this.addExportedSymbol(a,i,t);return i}addExportedSymbol(e,t,r){let n=this.nameProvider.getName(e);n&&t.push(this.descriptions.createDescription(e,n,r))}async collectLocalSymbols(e,t=Jn.CancellationToken.None){let r=e.parseResult.value,n=new ed;for(let i of td(r))await Ia(t),this.addLocalSymbol(i,e,n);return n}addLocalSymbol(e,t,r){let n=e.$container;if(n){let i=this.nameProvider.getName(e);i&&r.add(n,this.descriptions.createDescription(e,i,t))}}},QG=class{static{o(this,"StreamScope")}static{E(this,"StreamScope")}constructor(e,t,r){this.elements=e,this.outerScope=t,this.caseInsensitive=r?.caseInsensitive??!1,this.concatOuterScope=r?.concatOuterScope??!0}getAllElements(){return this.outerScope?this.elements.concat(this.outerScope.getAllElements()):this.elements}getElement(e){let t=this.caseInsensitive?e.toLowerCase():e,r=this.caseInsensitive?this.elements.find(n=>n.name.toLowerCase()===t):this.elements.find(n=>n.name===e);if(r)return r;if(this.outerScope)return this.outerScope.getElement(e)}getElements(e){let t=this.caseInsensitive?e.toLowerCase():e,r=this.caseInsensitive?this.elements.filter(n=>n.name.toLowerCase()===t):this.elements.filter(n=>n.name===e);return(this.concatOuterScope||r.isEmpty())&&this.outerScope?r.concat(this.outerScope.getElements(e)):r}},AEt=class{static{o(this,"MapScope")}static{E(this,"MapScope")}constructor(e,t,r){this.elements=new Map,this.caseInsensitive=r?.caseInsensitive??!1,this.concatOuterScope=r?.concatOuterScope??!0;for(let n of e){let i=this.caseInsensitive?n.name.toLowerCase():n.name;this.elements.set(i,n)}this.outerScope=t}getElement(e){let t=this.caseInsensitive?e.toLowerCase():e,r=this.elements.get(t);if(r)return r;if(this.outerScope)return this.outerScope.getElement(e)}getElements(e){let t=this.caseInsensitive?e.toLowerCase():e,r=this.elements.get(t),n=r?[r]:[];return(this.concatOuterScope||n.length>0)&&this.outerScope?Bn(n).concat(this.outerScope.getElements(e)):Bn(n)}getAllElements(){let e=Bn(this.elements.values());return this.outerScope&&(e=e.concat(this.outerScope.getAllElements())),e}},H_e=class{static{o(this,"MultiMapScope")}static{E(this,"MultiMapScope")}constructor(e,t,r){this.elements=new ed,this.caseInsensitive=r?.caseInsensitive??!1,this.concatOuterScope=r?.concatOuterScope??!0;for(let n of e){let i=this.caseInsensitive?n.name.toLowerCase():n.name;this.elements.add(i,n)}this.outerScope=t}getElement(e){let t=this.caseInsensitive?e.toLowerCase():e,r=this.elements.get(t)[0];if(r)return r;if(this.outerScope)return this.outerScope.getElement(e)}getElements(e){let t=this.caseInsensitive?e.toLowerCase():e,r=this.elements.get(t);return(this.concatOuterScope||r.length===0)&&this.outerScope?Bn(r).concat(this.outerScope.getElements(e)):Bn(r)}getAllElements(){let e=Bn(this.elements.values());return this.outerScope&&(e=e.concat(this.outerScope.getAllElements())),e}},REt={getElement(){},getElements(){return Tv},getAllElements(){return Tv}},x_=class{static{o(this,"DisposableCache")}static{E(this,"DisposableCache")}constructor(){this.toDispose=[],this.isDisposed=!1}onDispose(e){this.toDispose.push(e)}dispose(){this.throwIfDisposed(),this.clear(),this.isDisposed=!0,this.toDispose.forEach(e=>e.dispose())}throwIfDisposed(){if(this.isDisposed)throw new Error("This cache has already been disposed")}},CH=class extends x_{static{o(this,"SimpleCache")}static{E(this,"SimpleCache")}constructor(){super(...arguments),this.cache=new Map}has(e){return this.throwIfDisposed(),this.cache.has(e)}set(e,t){this.throwIfDisposed(),this.cache.set(e,t)}get(e,t){if(this.throwIfDisposed(),this.cache.has(e))return this.cache.get(e);if(t){let r=t();return this.cache.set(e,r),r}else return}delete(e){return this.throwIfDisposed(),this.cache.delete(e)}clear(){this.throwIfDisposed(),this.cache.clear()}},b_=class extends x_{static{o(this,"ContextCache")}static{E(this,"ContextCache")}constructor(e){super(),this.cache=new Map,this.converter=e??(t=>t)}has(e,t){return this.throwIfDisposed(),this.cacheForContext(e).has(t)}set(e,t,r){this.throwIfDisposed(),this.cacheForContext(e).set(t,r)}get(e,t,r){this.throwIfDisposed();let n=this.cacheForContext(e);if(n.has(t))return n.get(t);if(r){let i=r();return n.set(t,i),i}else return}delete(e,t){return this.throwIfDisposed(),this.cacheForContext(e).delete(t)}clear(e){if(this.throwIfDisposed(),e){let t=this.converter(e);this.cache.delete(t)}else this.cache.clear()}cacheForContext(e){let t=this.converter(e),r=this.cache.get(t);return r||(r=new Map,this.cache.set(t,r)),r}},U_e=class extends b_{static{o(this,"DocumentCache")}static{E(this,"DocumentCache")}constructor(e,t){super(r=>r.toString()),t?(this.toDispose.push(e.workspace.DocumentBuilder.onDocumentPhase(t,r=>{this.clear(r.uri.toString())})),this.toDispose.push(e.workspace.DocumentBuilder.onUpdate((r,n)=>{for(let i of n)this.clear(i)}))):this.toDispose.push(e.workspace.DocumentBuilder.onUpdate((r,n)=>{let i=r.concat(n);for(let a of i)this.clear(a)}))}},wH=class extends CH{static{o(this,"WorkspaceCache")}static{E(this,"WorkspaceCache")}constructor(e,t){super(),t?(this.toDispose.push(e.workspace.DocumentBuilder.onBuildPhase(t,()=>{this.clear()})),this.toDispose.push(e.workspace.DocumentBuilder.onUpdate((r,n)=>{n.length>0&&this.clear()}))):this.toDispose.push(e.workspace.DocumentBuilder.onUpdate(()=>{this.clear()}))}},Y_e=class{static{o(this,"DefaultScopeProvider")}static{E(this,"DefaultScopeProvider")}constructor(e){this.reflection=e.shared.AstReflection,this.nameProvider=e.references.NameProvider,this.descriptions=e.workspace.AstNodeDescriptionProvider,this.indexManager=e.shared.workspace.IndexManager,this.globalScopeCache=new wH(e.shared)}getScope(e){let t=[],r=this.reflection.getReferenceType(e),n=wc(e.container).localSymbols;if(n){let a=e.container;do n.has(a)&&t.push(n.getStream(a).filter(s=>this.reflection.isSubtype(s.type,r))),a=a.$container;while(a)}let i=this.getGlobalScope(r,e);for(let a=t.length-1;a>=0;a--)i=this.createScope(t[a],i);return i}createScope(e,t,r){return new QG(Bn(e),t,r)}createScopeForNodes(e,t,r){let n=Bn(e).map(i=>{let a=this.nameProvider.getName(i);if(a)return this.descriptions.createDescription(i,a)}).nonNullable();return new QG(n,t,r)}getGlobalScope(e,t){return this.globalScopeCache.get(e,()=>new H_e(this.indexManager.allElements(e)))}};o(kH,"isAstNodeWithComment");E(kH,"isAstNodeWithComment");o(JG,"isIntermediateReference");E(JG,"isIntermediateReference");j_e=class{static{o(this,"DefaultJsonSerializer")}static{E(this,"DefaultJsonSerializer")}constructor(e){this.ignoreProperties=new Set(["$container","$containerProperty","$containerIndex","$document","$cstNode"]),this.langiumDocuments=e.shared.workspace.LangiumDocuments,this.astNodeLocator=e.workspace.AstNodeLocator,this.nameProvider=e.references.NameProvider,this.commentProvider=e.documentation.CommentProvider}serialize(e,t){let r=t??{},n=t?.replacer,i=E((s,l)=>this.replacer(s,l,r),"defaultReplacer"),a=n?(s,l)=>n(s,l,i):i;try{return this.currentDocument=wc(e),JSON.stringify(e,a,t?.space)}finally{this.currentDocument=void 0}}deserialize(e,t){let r=t??{},n=JSON.parse(e);return this.linkNode(n,n,r),n}replacer(e,t,{refText:r,sourceText:n,textRegions:i,comments:a,uriConverter:s}){if(!this.ignoreProperties.has(e))if(Bs(t)){let l=t.ref,u=r?t.$refText:void 0;if(l){let h=wc(l),d="";this.currentDocument&&this.currentDocument!==h&&(s?d=s(h.uri,l):d=h.uri.toString());let f=this.astNodeLocator.getAstNodePath(l);return{$ref:`${d}#${f}`,$refText:u}}else return{$error:t.error?.message??"Could not resolve reference",$refText:u}}else if(Ou(t)){let l=r?t.$refText:void 0,u=[];for(let h of t.items){let d=h.ref,f=wc(h.ref),p="";this.currentDocument&&this.currentDocument!==f&&(s?p=s(f.uri,d):p=f.uri.toString());let m=this.astNodeLocator.getAstNodePath(d);u.push(`${p}#${m}`)}return{$refs:u,$refText:l}}else if(Zi(t)){let l;if(i&&(l=this.addAstNodeRegionWithAssignmentsTo({...t}),(!e||t.$document)&&l?.$textRegion&&(l.$textRegion.documentURI=this.currentDocument?.uri.toString())),n&&!e&&(l??(l={...t}),l.$sourceText=t.$cstNode?.text),a){l??(l={...t});let u=this.commentProvider.getComment(t);u&&(l.$comment=u.replace(/\r/g,""))}return l??t}else return t}addAstNodeRegionWithAssignmentsTo(e){let t=E(r=>({offset:r.offset,end:r.end,length:r.length,range:r.range}),"createDocumentSegment");if(e.$cstNode){let r=e.$textRegion=t(e.$cstNode),n=r.assignments={};return Object.keys(e).filter(i=>!i.startsWith("$")).forEach(i=>{let a=YW(e.$cstNode,i).map(t);a.length!==0&&(n[i]=a)}),e}}linkNode(e,t,r,n,i,a){for(let[l,u]of Object.entries(e))if(Array.isArray(u))for(let h=0;h<u.length;h++){let d=u[h];JG(d)?u[h]=this.reviveReference(e,l,t,d,r):Zi(d)&&this.linkNode(d,t,r,e,l,h)}else JG(u)?e[l]=this.reviveReference(e,l,t,u,r):Zi(u)&&this.linkNode(u,t,r,e,l);let s=e;s.$container=n,s.$containerProperty=i,s.$containerIndex=a}reviveReference(e,t,r,n,i){let a=n.$refText,s=n.$error,l;if(n.$ref){let u=this.getRefNode(r,n.$ref,i.uriConverter);if(Zi(u))return a||(a=this.nameProvider.getName(u)),{$refText:a??"",ref:u};s=u}else if(n.$refs){let u=[];for(let h of n.$refs){let d=this.getRefNode(r,h,i.uriConverter);Zi(d)&&u.push({ref:d})}if(u.length===0)l={$refText:a??"",items:u},s??(s="Could not resolve multi-reference");else return{$refText:a??"",items:u}}if(s)return l??(l={$refText:a??"",ref:void 0}),l.error={info:{container:e,property:t,reference:l},message:s},l}getRefNode(e,t,r){try{let n=t.indexOf("#");if(n===0){let l=this.astNodeLocator.getAstNode(e,t.substring(1));return l||"Could not resolve path: "+t}if(n<0){let l=r?r(t):Yo.parse(t),u=this.langiumDocuments.getDocument(l);return u?u.parseResult.value:"Could not find document for URI: "+t}let i=r?r(t.substring(0,n)):Yo.parse(t.substring(0,n)),a=this.langiumDocuments.getDocument(i);if(!a)return"Could not find document for URI: "+t;if(n===t.length-1)return a.parseResult.value;let s=this.astNodeLocator.getAstNode(a.parseResult.value,t.substring(n+1));return s||"Could not resolve URI: "+t}catch(n){return String(n)}}},X_e=class{static{o(this,"DefaultServiceRegistry")}static{E(this,"DefaultServiceRegistry")}get map(){return this.fileExtensionMap}constructor(e){this.languageIdMap=new Map,this.fileExtensionMap=new Map,this.fileNameMap=new Map,this.textDocuments=e?.workspace.TextDocuments}register(e){let t=e.LanguageMetaData;for(let r of t.fileExtensions)this.fileExtensionMap.has(r)&&console.warn(`The file extension ${r} is used by multiple languages. It is now assigned to '${t.languageId}'.`),this.fileExtensionMap.set(r,e);if(t.fileNames)for(let r of t.fileNames)this.fileNameMap.has(r)&&console.warn(`The file name ${r} is used by multiple languages. It is now assigned to '${t.languageId}'.`),this.fileNameMap.set(r,e);this.languageIdMap.set(t.languageId,e)}getServices(e){if(this.languageIdMap.size===0)throw new Error("The service registry is empty. Use `register` to register the services of a language.");let t=this.textDocuments?.get(e)?.languageId;if(t!==void 0){let a=this.languageIdMap.get(t);if(a)return a}let r=$s.extname(e),n=$s.basename(e),i=this.fileNameMap.get(n)??this.fileExtensionMap.get(r);if(!i)throw t?new Error(`The service registry contains no services for the extension '${r}' for language '${t}'.`):new Error(`The service registry contains no services for the extension '${r}'.`);return i}hasServices(e){try{return this.getServices(e),!0}catch{return!1}}get all(){return Array.from(this.languageIdMap.values())}};o(qg,"diagnosticData");E(qg,"diagnosticData");(function(e){e.defaults=["fast","slow","built-in"],e.all=e.defaults})(hR||(hR={}));K_e=class{static{o(this,"ValidationRegistry")}static{E(this,"ValidationRegistry")}constructor(e){this.entries=new ed,this.knownCategories=new Set(hR.defaults),this.entriesBefore=[],this.entriesAfter=[],this.reflection=e.shared.AstReflection}register(e,t=this,r="fast"){if(r==="built-in")throw new Error("The 'built-in' category is reserved for lexer, parser, and linker errors.");this.knownCategories.add(r);for(let[n,i]of Object.entries(e)){let a=i;if(Array.isArray(a))for(let s of a){let l={check:this.wrapValidationException(s,t),category:r};this.addEntry(n,l)}else if(typeof a=="function"){let s={check:this.wrapValidationException(a,t),category:r};this.addEntry(n,s)}else vp(a)}}wrapValidationException(e,t){return async(r,n,i)=>{await this.handleException(()=>e.call(t,r,n,i),"An error occurred during validation",n,r)}}async handleException(e,t,r,n){try{await e()}catch(i){if(v0(i))throw i;console.error(`${t}:`,i),i instanceof Error&&i.stack&&console.error(i.stack);let a=i instanceof Error?i.message:String(i);r("error",`${t}: ${a}`,{node:n})}}addEntry(e,t){if(e==="AstNode"){this.entries.add("AstNode",t);return}for(let r of this.reflection.getAllSubTypes(e))this.entries.add(r,t)}getChecks(e,t){let r=Bn(this.entries.get(e)).concat(this.entries.get("AstNode"));return t&&(r=r.filter(n=>t.includes(n.category))),r.map(n=>n.check)}registerBeforeDocument(e,t=this){this.entriesBefore.push(this.wrapPreparationException(e,"An error occurred during set-up of the validation",t))}registerAfterDocument(e,t=this){this.entriesAfter.push(this.wrapPreparationException(e,"An error occurred during tear-down of the validation",t))}wrapPreparationException(e,t,r){return async(n,i,a,s)=>{await this.handleException(()=>e.call(r,n,i,a,s),t,i,n)}}get checksBefore(){return this.entriesBefore}get checksAfter(){return this.entriesAfter}getAllValidationCategories(e){return this.knownCategories}},Z_e=Object.freeze({validateNode:!0,validateChildren:!0}),Q_e=class{static{o(this,"DefaultDocumentValidator")}static{E(this,"DefaultDocumentValidator")}constructor(e){this.validationRegistry=e.validation.ValidationRegistry,this.metadata=e.LanguageMetaData,this.profiler=e.shared.profilers.LangiumProfiler,this.languageId=e.LanguageMetaData.languageId}async validateDocument(e,t={},r=Jn.CancellationToken.None){let n=e.parseResult,i=[];if(await Ia(r),(!t.categories||t.categories.includes("built-in"))&&(this.processLexingErrors(n,i,t),t.stopAfterLexingErrors&&i.some(a=>a.data?.code===Rl.LexingError)||(this.processParsingErrors(n,i,t),t.stopAfterParsingErrors&&i.some(a=>a.data?.code===Rl.ParsingError))||(this.processLinkingErrors(e,i,t),t.stopAfterLinkingErrors&&i.some(a=>a.data?.code===Rl.LinkingError))))return i;try{i.push(...await this.validateAst(n.value,t,r))}catch(a){if(v0(a))throw a;console.error("An error occurred during validation:",a)}return await Ia(r),i}processLexingErrors(e,t,r){let n=[...e.lexerErrors,...e.lexerReport?.diagnostics??[]];for(let i of n){let a=i.severity??"error",s={severity:WC(a),range:{start:{line:i.line-1,character:i.column-1},end:{line:i.line-1,character:i.column+i.length-1}},message:i.message,data:EH(a),source:this.getSource()};t.push(s)}}processParsingErrors(e,t,r){for(let n of e.parserErrors){let i;if(isNaN(n.token.startOffset)){if("previousToken"in n){let a=n.previousToken;if(isNaN(a.startOffset)){let s={line:0,character:0};i={start:s,end:s}}else{let s={line:a.endLine-1,character:a.endColumn};i={start:s,end:s}}}}else i=XC(n.token);if(i){let a={severity:WC("error"),range:i,message:n.message,data:qg(Rl.ParsingError),source:this.getSource()};t.push(a)}}}processLinkingErrors(e,t,r){for(let n of e.references){let i=n.error;if(i){let a={node:i.info.container,range:n.$refNode?.range,property:i.info.property,index:i.info.index,data:{code:Rl.LinkingError,containerType:i.info.container.$type,property:i.info.property,refText:i.info.reference.$refText}};t.push(this.toDiagnostic("error",i.message,a))}}}async validateAst(e,t,r=Jn.CancellationToken.None){let n=[],i=E((a,s,l)=>{n.push(this.toDiagnostic(a,s,l))},"acceptor");return await this.validateAstBefore(e,t,i,r),await this.validateAstNodes(e,t,i,r),await this.validateAstAfter(e,t,i,r),n}async validateAstBefore(e,t,r,n=Jn.CancellationToken.None){let i=this.validationRegistry.checksBefore;for(let a of i)await Ia(n),await a(e,r,t.categories??[],n)}async validateAstNodes(e,t,r,n=Jn.CancellationToken.None){if(this.profiler?.isActive("validating")){let i=this.profiler.createTask("validating",this.languageId);i.start();try{let a=kc(e).iterator();for(let s of a){i.startSubTask(s.$type);let l=this.validateSingleNodeOptions(s,t);if(l.validateNode)try{let u=this.validationRegistry.getChecks(s.$type,t.categories);for(let h of u)await h(s,r,n)}finally{i.stopSubTask(s.$type)}l.validateChildren||a.prune()}}finally{i.stop()}}else{let i=kc(e).iterator();for(let a of i){await Ia(n);let s=this.validateSingleNodeOptions(a,t);if(s.validateNode){let l=this.validationRegistry.getChecks(a.$type,t.categories);for(let u of l)await u(a,r,n)}s.validateChildren||i.prune()}}}validateSingleNodeOptions(e,t){return Z_e}async validateAstAfter(e,t,r,n=Jn.CancellationToken.None){let i=this.validationRegistry.checksAfter;for(let a of i)await Ia(n),await a(e,r,t.categories??[],n)}toDiagnostic(e,t,r){return{message:t,range:SH(r),severity:WC(e),code:r.code,codeDescription:r.codeDescription,tags:r.tags,relatedInformation:r.relatedInformation,data:r.data,source:this.getSource()}}getSource(){return this.metadata.languageId}};o(SH,"getDiagnosticRange");E(SH,"getDiagnosticRange");o(WC,"toDiagnosticSeverity");E(WC,"toDiagnosticSeverity");o(EH,"toDiagnosticData");E(EH,"toDiagnosticData");(function(e){e.LexingError="lexing-error",e.LexingWarning="lexing-warning",e.LexingInfo="lexing-info",e.LexingHint="lexing-hint",e.ParsingError="parsing-error",e.LinkingError="linking-error"})(Rl||(Rl={}));J_e=class{static{o(this,"DefaultAstNodeDescriptionProvider")}static{E(this,"DefaultAstNodeDescriptionProvider")}constructor(e){this.astNodeLocator=e.workspace.AstNodeLocator,this.nameProvider=e.references.NameProvider}createDescription(e,t,r){let n=r??wc(e);t??(t=this.nameProvider.getName(e));let i=this.astNodeLocator.getAstNodePath(e);if(!t)throw new Error(`Node at path ${i} has no name.`);let a,s=E(()=>a??(a=Av(this.nameProvider.getNameNode(e)??e.$cstNode)),"nameSegmentGetter");return{node:e,name:t,get nameSegment(){return s()},selectionSegment:Av(e.$cstNode),type:e.$type,documentUri:n.uri,path:i}}},eLe=class{static{o(this,"DefaultReferenceDescriptionProvider")}static{E(this,"DefaultReferenceDescriptionProvider")}constructor(e){this.nodeLocator=e.workspace.AstNodeLocator}async createDescriptions(e,t=Jn.CancellationToken.None){let r=[],n=e.parseResult.value;for(let i of kc(n))await Ia(t),kv(i).forEach(a=>{a.reference.error||r.push(...this.createInfoDescriptions(a))});return r}createInfoDescriptions(e){let t=e.reference;if(t.error||!t.$refNode)return[];let r=[];Bs(t)&&t.$nodeDescription?r=[t.$nodeDescription]:Ou(t)&&(r=t.items.map(l=>l.$nodeDescription).filter(l=>l!==void 0));let n=wc(e.container).uri,i=this.nodeLocator.getAstNodePath(e.container),a=[],s=Av(t.$refNode);for(let l of r)a.push({sourceUri:n,sourcePath:i,targetUri:l.documentUri,targetPath:l.path,segment:s,local:$s.equals(l.documentUri,n)});return a}},tLe=class{static{o(this,"DefaultAstNodeLocator")}static{E(this,"DefaultAstNodeLocator")}constructor(){this.segmentSeparator="/",this.indexSeparator="@"}getAstNodePath(e){if(e.$container){let t=this.getAstNodePath(e.$container),r=this.getPathSegment(e);return t+this.segmentSeparator+r}return""}getPathSegment({$containerProperty:e,$containerIndex:t}){if(!e)throw new Error("Missing '$containerProperty' in AST node.");return t!==void 0?e+this.indexSeparator+t:e}getAstNode(e,t){return t.split(this.segmentSeparator).reduce((n,i)=>{if(!n||i.length===0)return n;let a=i.indexOf(this.indexSeparator);if(a>0){let s=i.substring(0,a),l=parseInt(i.substring(a+1));return n[s]?.[l]}return n[i]},e)}},T_={};mR(T_,eW(Iv(),1));rLe=class{static{o(this,"DefaultConfigurationProvider")}static{E(this,"DefaultConfigurationProvider")}constructor(e){this._ready=new Jh,this.onConfigurationSectionUpdateEmitter=new T_.Emitter,this.settings={},this.workspaceConfig=!1,this.serviceRegistry=e.ServiceRegistry}get ready(){return this._ready.promise}initialize(e){this.workspaceConfig=e.capabilities.workspace?.configuration??!1}async initialized(e){if(this.workspaceConfig){if(e.register){let t=this.serviceRegistry.all;e.register({section:t.map(r=>this.toSectionName(r.LanguageMetaData.languageId))})}if(e.fetchConfiguration){let t=this.serviceRegistry.all.map(n=>({section:this.toSectionName(n.LanguageMetaData.languageId)})),r=await e.fetchConfiguration(t);t.forEach((n,i)=>{this.updateSectionConfiguration(n.section,r[i])})}}this._ready.resolve()}updateConfiguration(e){typeof e.settings!="object"||e.settings===null||Object.entries(e.settings).forEach(([t,r])=>{this.updateSectionConfiguration(t,r),this.onConfigurationSectionUpdateEmitter.fire({section:t,configuration:r})})}updateSectionConfiguration(e,t){this.settings[e]=t}async getConfiguration(e,t){await this.ready;let r=this.toSectionName(e);if(this.settings[r])return this.settings[r][t]}toSectionName(e){return`${e}`}get onConfigurationSectionUpdate(){return this.onConfigurationSectionUpdateEmitter.event}},$A=eW(nyt(),1);(function(e){function t(r){return{dispose:E(async()=>await r(),"dispose")}}o(t,"create"),E(t,"create"),e.create=t})(Yg||(Yg={}));nLe=class{static{o(this,"DefaultDocumentBuilder")}static{E(this,"DefaultDocumentBuilder")}constructor(e){this.updateBuildOptions={validation:{categories:["built-in","fast"]}},this.updateListeners=[],this.buildPhaseListeners=new ed,this.documentPhaseListeners=new ed,this.buildState=new Map,this.documentBuildWaiters=new Map,this.currentState=en.Changed,this.langiumDocuments=e.workspace.LangiumDocuments,this.langiumDocumentFactory=e.workspace.LangiumDocumentFactory,this.textDocuments=e.workspace.TextDocuments,this.indexManager=e.workspace.IndexManager,this.fileSystemProvider=e.workspace.FileSystemProvider,this.workspaceManager=()=>e.workspace.WorkspaceManager,this.serviceRegistry=e.ServiceRegistry}async build(e,t={},r=Jn.CancellationToken.None){for(let n of e){let i=n.uri.toString();if(n.state===en.Validated){if(typeof t.validation=="boolean"&&t.validation)this.resetToState(n,en.IndexedReferences);else if(typeof t.validation=="object"){let a=this.findMissingValidationCategories(n,t);a.length>0&&(this.buildState.set(i,{completed:!1,options:{validation:{categories:a}},result:this.buildState.get(i)?.result}),n.state=en.IndexedReferences)}}else this.buildState.delete(i)}this.currentState=en.Changed,await this.emitUpdate(e.map(n=>n.uri),[]),await this.buildDocuments(e,t,r)}async update(e,t,r=Jn.CancellationToken.None){this.currentState=en.Changed;let n=[];for(let l of t){let u=this.langiumDocuments.deleteDocuments(l);for(let h of u)n.push(h.uri),this.cleanUpDeleted(h)}let i=(await Promise.all(e.map(l=>this.findChangedUris(l)))).flat();for(let l of i){let u=this.langiumDocuments.getDocument(l);u===void 0&&(u=this.langiumDocumentFactory.fromModel({$type:"INVALID"},l),u.state=en.Changed,this.langiumDocuments.addDocument(u)),this.resetToState(u,en.Changed)}let a=Bn(i).concat(n).map(l=>l.toString()).toSet();this.langiumDocuments.all.filter(l=>!a.has(l.uri.toString())&&this.shouldRelink(l,a)).forEach(l=>this.resetToState(l,en.ComputedScopes)),await this.emitUpdate(i,n),await Ia(r);let s=this.sortDocuments(this.langiumDocuments.all.filter(l=>l.state<en.Validated||!this.buildState.get(l.uri.toString())?.completed||this.resultsAreIncomplete(l,this.updateBuildOptions)).toArray());await this.buildDocuments(s,this.updateBuildOptions,r)}resultsAreIncomplete(e,t){return this.findMissingValidationCategories(e,t).length>=1}findMissingValidationCategories(e,t){let r=this.buildState.get(e.uri.toString()),n=this.serviceRegistry.getServices(e.uri).validation.ValidationRegistry.getAllValidationCategories(e),i=r?.result?.validationChecks?new Set(r?.result?.validationChecks):r?.completed?n:new Set,a=t===void 0||t.validation===!0?n:typeof t.validation=="object"?t.validation.categories??n:[];return Bn(a).filter(s=>!i.has(s)).toArray()}async findChangedUris(e){if(this.langiumDocuments.getDocument(e)??this.textDocuments?.get(e))return[e];try{let r=await this.fileSystemProvider.stat(e);if(r.isDirectory)return await this.workspaceManager().searchFolder(e);if(this.workspaceManager().shouldIncludeEntry(r))return[e]}catch{}return[]}async emitUpdate(e,t){await Promise.all(this.updateListeners.map(r=>r(e,t)))}sortDocuments(e){let t=0,r=e.length-1;for(;t<r;){for(;t<e.length&&this.hasTextDocument(e[t]);)t++;for(;r>=0&&!this.hasTextDocument(e[r]);)r--;t<r&&([e[t],e[r]]=[e[r],e[t]])}return e}hasTextDocument(e){return!!this.textDocuments?.get(e.uri)}shouldRelink(e,t){return e.references.some(r=>r.error!==void 0)?!0:this.indexManager.isAffected(e,t)}onUpdate(e){return this.updateListeners.push(e),Yg.create(()=>{let t=this.updateListeners.indexOf(e);t>=0&&this.updateListeners.splice(t,1)})}resetToState(e,t){switch(t){case en.Changed:case en.Parsed:this.indexManager.removeContent(e.uri);case en.IndexedContent:e.localSymbols=void 0;case en.ComputedScopes:this.serviceRegistry.getServices(e.uri).references.Linker.unlink(e);case en.Linked:this.indexManager.removeReferences(e.uri);case en.IndexedReferences:e.diagnostics=void 0,this.buildState.delete(e.uri.toString());case en.Validated:}e.state>t&&(e.state=t)}cleanUpDeleted(e){this.buildState.delete(e.uri.toString()),this.indexManager.remove(e.uri),e.state=en.Changed}async buildDocuments(e,t,r){this.prepareBuild(e,t),await this.runCancelable(e,en.Parsed,r,a=>this.langiumDocumentFactory.update(a,r)),await this.runCancelable(e,en.IndexedContent,r,a=>this.indexManager.updateContent(a,r)),await this.runCancelable(e,en.ComputedScopes,r,async a=>{let s=this.serviceRegistry.getServices(a.uri).references.ScopeComputation;a.localSymbols=await s.collectLocalSymbols(a,r)});let n=e.filter(a=>this.shouldLink(a));await this.runCancelable(n,en.Linked,r,a=>this.serviceRegistry.getServices(a.uri).references.Linker.link(a,r)),await this.runCancelable(n,en.IndexedReferences,r,a=>this.indexManager.updateReferences(a,r));let i=e.filter(a=>this.shouldValidate(a)?!0:(this.markAsCompleted(a),!1));await this.runCancelable(i,en.Validated,r,async a=>{await this.validate(a,r),this.markAsCompleted(a)})}markAsCompleted(e){let t=this.buildState.get(e.uri.toString());t&&(t.completed=!0)}prepareBuild(e,t){for(let r of e){let n=r.uri.toString(),i=this.buildState.get(n);(!i||i.completed)&&this.buildState.set(n,{completed:!1,options:t,result:i?.result})}}async runCancelable(e,t,r,n){for(let a of e)a.state<t&&(await Ia(r),await n(a),a.state=t,await this.notifyDocumentPhase(a,t,r));let i=e.filter(a=>a.state===t);await this.notifyBuildPhase(i,t,r),this.currentState=t}onBuildPhase(e,t){return this.buildPhaseListeners.add(e,t),Yg.create(()=>{this.buildPhaseListeners.delete(e,t)})}onDocumentPhase(e,t){return this.documentPhaseListeners.add(e,t),Yg.create(()=>{this.documentPhaseListeners.delete(e,t)})}waitUntil(e,t,r){let n;return t&&"path"in t?n=t:r=t,r??(r=Jn.CancellationToken.None),n?this.awaitDocumentState(e,n,r):this.awaitBuilderState(e,r)}awaitDocumentState(e,t,r){let n=this.langiumDocuments.getDocument(t);if(n){if(n.state>=e)return Promise.resolve(t);if(r.isCancellationRequested)return Promise.reject(Pu);if(this.currentState>=e&&e>n.state)return Promise.reject(new $A.ResponseError($A.LSPErrorCodes.RequestFailed,`Document state of ${t.toString()} is ${en[n.state]}, requiring ${en[e]}, but workspace state is already ${en[this.currentState]}. Returning undefined.`))}else return Promise.reject(new $A.ResponseError($A.LSPErrorCodes.ServerCancelled,`No document found for URI: ${t.toString()}`));return new Promise((i,a)=>{let s=this.onDocumentPhase(e,u=>{$s.equals(u.uri,t)&&(s.dispose(),l.dispose(),i(u.uri))}),l=r.onCancellationRequested(()=>{s.dispose(),l.dispose(),a(Pu)})})}awaitBuilderState(e,t){return this.currentState>=e?Promise.resolve():t.isCancellationRequested?Promise.reject(Pu):new Promise((r,n)=>{let i=this.onBuildPhase(e,()=>{i.dispose(),a.dispose(),r()}),a=t.onCancellationRequested(()=>{i.dispose(),a.dispose(),n(Pu)})})}async notifyDocumentPhase(e,t,r){let i=this.documentPhaseListeners.get(t).slice();for(let a of i)try{await Ia(r),await a(e,r)}catch(s){if(!v0(s))throw s}}async notifyBuildPhase(e,t,r){if(e.length===0)return;let i=this.buildPhaseListeners.get(t).slice();for(let a of i)await Ia(r),await a(e,r)}shouldLink(e){return this.getBuildOptions(e).eagerLinking??!0}shouldValidate(e){return!!this.getBuildOptions(e).validation}async validate(e,t){let r=this.serviceRegistry.getServices(e.uri).validation.DocumentValidator,n=this.getBuildOptions(e),i=typeof n.validation=="object"?{...n.validation}:{};i.categories=this.findMissingValidationCategories(e,n);let a=await r.validateDocument(e,i,t);e.diagnostics?e.diagnostics.push(...a):e.diagnostics=a;let s=this.buildState.get(e.uri.toString());s&&(s.result??(s.result={}),s.result.validationChecks?s.result.validationChecks=Bn(s.result.validationChecks).concat(i.categories).distinct().toArray():s.result.validationChecks=[...i.categories])}getBuildOptions(e){return this.buildState.get(e.uri.toString())?.options??{}}},iLe=class{static{o(this,"DefaultIndexManager")}static{E(this,"DefaultIndexManager")}constructor(e){this.symbolIndex=new Map,this.symbolByTypeIndex=new b_,this.referenceIndex=new Map,this.documents=e.workspace.LangiumDocuments,this.serviceRegistry=e.ServiceRegistry,this.astReflection=e.AstReflection}findAllReferences(e,t){let r=wc(e).uri,n=[];return this.referenceIndex.forEach(i=>{i.forEach(a=>{$s.equals(a.targetUri,r)&&a.targetPath===t&&n.push(a)})}),Bn(n)}allElements(e,t){let r=Bn(this.symbolIndex.keys());return t&&(r=r.filter(n=>!t||t.has(n))),r.map(n=>this.getFileDescriptions(n,e)).flat()}getFileDescriptions(e,t){return t?this.symbolByTypeIndex.get(e,t,()=>(this.symbolIndex.get(e)??[]).filter(i=>this.astReflection.isSubtype(i.type,t))):this.symbolIndex.get(e)??[]}remove(e){this.removeContent(e),this.removeReferences(e)}removeContent(e){let t=e.toString();this.symbolIndex.delete(t),this.symbolByTypeIndex.clear(t)}removeReferences(e){let t=e.toString();this.referenceIndex.delete(t)}async updateContent(e,t=Jn.CancellationToken.None){let n=await this.serviceRegistry.getServices(e.uri).references.ScopeComputation.collectExportedSymbols(e,t),i=e.uri.toString();this.symbolIndex.set(i,n),this.symbolByTypeIndex.clear(i)}async updateReferences(e,t=Jn.CancellationToken.None){let n=await this.serviceRegistry.getServices(e.uri).workspace.ReferenceDescriptionProvider.createDescriptions(e,t);this.referenceIndex.set(e.uri.toString(),n)}isAffected(e,t){let r=this.referenceIndex.get(e.uri.toString());return r?r.some(n=>!n.local&&t.has(n.targetUri.toString())):!1}},aLe=class{static{o(this,"DefaultWorkspaceManager")}static{E(this,"DefaultWorkspaceManager")}constructor(e){this.initialBuildOptions={},this._ready=new Jh,this.serviceRegistry=e.ServiceRegistry,this.langiumDocuments=e.workspace.LangiumDocuments,this.documentBuilder=e.workspace.DocumentBuilder,this.fileSystemProvider=e.workspace.FileSystemProvider,this.mutex=e.workspace.WorkspaceLock}get ready(){return this._ready.promise}get workspaceFolders(){return this.folders}initialize(e){this.folders=e.workspaceFolders??void 0}initialized(e){return this.mutex.write(t=>this.initializeWorkspace(this.folders??[],t))}async initializeWorkspace(e,t=Jn.CancellationToken.None){let r=await this.performStartup(e);await Ia(t),await this.documentBuilder.build(r,this.initialBuildOptions,t)}async performStartup(e){let t=[],r=E(a=>{t.push(a),this.langiumDocuments.hasDocument(a.uri)||this.langiumDocuments.addDocument(a)},"collector");await this.loadAdditionalDocuments(e,r);let n=[];await Promise.all(e.map(a=>this.getRootFolder(a)).map(async a=>this.traverseFolder(a,n)));let i=Bn(n).distinct(a=>a.toString()).filter(a=>!this.langiumDocuments.hasDocument(a));return await this.loadWorkspaceDocuments(i,r),this._ready.resolve(),t}async loadWorkspaceDocuments(e,t){await Promise.all(e.map(async r=>{let n=await this.langiumDocuments.getOrCreateDocument(r);t(n)}))}loadAdditionalDocuments(e,t){return Promise.resolve()}getRootFolder(e){return Yo.parse(e.uri)}async traverseFolder(e,t){try{let r=await this.fileSystemProvider.readDirectory(e);await Promise.all(r.map(async n=>{this.shouldIncludeEntry(n)&&(n.isDirectory?await this.traverseFolder(n.uri,t):n.isFile&&t.push(n.uri))}))}catch(r){console.error("Failure to read directory content of "+e.toString(!0),r)}}async searchFolder(e){let t=[];return await this.traverseFolder(e,t),t}shouldIncludeEntry(e){let t=$s.basename(e.uri);return t.startsWith(".")?!1:e.isDirectory?t!=="node_modules"&&t!=="out":e.isFile?this.serviceRegistry.hasServices(e.uri):!1}},sLe=class{static{o(this,"DefaultLexerErrorMessageProvider")}static{E(this,"DefaultLexerErrorMessageProvider")}buildUnexpectedCharactersMessage(e,t,r,n,i){return IG.buildUnexpectedCharactersMessage(e,t,r,n,i)}buildUnableToPopLexerModeMessage(e){return IG.buildUnableToPopLexerModeMessage(e)}},AH={mode:"full"},RH=class{static{o(this,"DefaultLexer")}static{E(this,"DefaultLexer")}constructor(e){this.errorMessageProvider=e.parser.LexerErrorMessageProvider,this.tokenBuilder=e.parser.TokenBuilder;let t=this.tokenBuilder.buildTokens(e.Grammar,{caseInsensitive:e.LanguageMetaData.caseInsensitive});this.tokenTypes=this.toTokenTypeDictionary(t);let r=dR(t)?Object.values(t):t,n=e.LanguageMetaData.mode==="production";this.chevrotainLexer=new Fs(r,{positionTracking:"full",skipValidations:n,errorMessageProvider:this.errorMessageProvider})}get definition(){return this.tokenTypes}tokenize(e,t=AH){let r=this.chevrotainLexer.tokenize(e);return{tokens:r.tokens,errors:r.errors,hidden:r.groups.hidden??[],report:this.tokenBuilder.flushLexingReport?.(e)}}toTokenTypeDictionary(e){if(dR(e))return e;let t=w_(e)?Object.values(e.modes).flat():e,r={};return t.forEach(n=>r[n.name]=n),r}};o(C_,"isTokenTypeArray");E(C_,"isTokenTypeArray");o(w_,"isIMultiModeLexerDefinition");E(w_,"isIMultiModeLexerDefinition");o(dR,"isTokenTypeDictionary");E(dR,"isTokenTypeDictionary");hw();o(_H,"parseJSDoc");E(_H,"parseJSDoc");o(LH,"isJSDoc");E(LH,"isJSDoc");o(DH,"getLines");E(DH,"getLines");iwe=/\s*(@([\p{L}][\p{L}\p{N}]*)?)/uy,_Et=/\{(@[\p{L}][\p{L}\p{N}]*)(\s*)([^\r\n}]+)?\}/gu;o(oLe,"tokenize");E(oLe,"tokenize");o(lLe,"buildInlineTokens");E(lLe,"buildInlineTokens");LEt=/\S/,DEt=/\s*$/;o(fR,"skipWhitespace");E(fR,"skipWhitespace");o(cLe,"lastCharacter");E(cLe,"lastCharacter");o(uLe,"parseJSDocComment");E(uLe,"parseJSDocComment");o(hLe,"parseJSDocElement");E(hLe,"parseJSDocElement");o(dLe,"appendEmptyLine");E(dLe,"appendEmptyLine");o(IH,"parseJSDocText");E(IH,"parseJSDocText");o(fLe,"parseJSDocInline");E(fLe,"parseJSDocInline");o(MH,"parseJSDocTag");E(MH,"parseJSDocTag");o(NH,"parseJSDocLine");E(NH,"parseJSDocLine");o(k_,"normalizeOptions");E(k_,"normalizeOptions");o(y6,"normalizeOption");E(y6,"normalizeOption");awe=class{static{o(this,"JSDocCommentImpl")}static{E(this,"JSDocCommentImpl")}constructor(e,t){this.elements=e,this.range=t}getTag(e){return this.getAllTags().find(t=>t.name===e)}getTags(e){return this.getAllTags().filter(t=>t.name===e)}getAllTags(){return this.elements.filter(e=>"name"in e)}toString(){let e="";for(let t of this.elements)if(e.length===0)e=t.toString();else{let r=t.toString();e+=tV(e)+r}return e.trim()}toMarkdown(e){let t="";for(let r of this.elements)if(t.length===0)t=r.toMarkdown(e);else{let n=r.toMarkdown(e);t+=tV(t)+n}return t.trim()}},lz=class{static{o(this,"JSDocTagImpl")}static{E(this,"JSDocTagImpl")}constructor(e,t,r,n){this.name=e,this.content=t,this.inline=r,this.range=n}toString(){let e=`@${this.name}`,t=this.content.toString();return this.content.inlines.length===1?e=`${e} ${t}`:this.content.inlines.length>1&&(e=`${e}
+${t}`),this.inline?`{${e}}`:e}toMarkdown(e){return e?.renderTag?.(this)??this.toMarkdownDefault(e)}toMarkdownDefault(e){let t=this.content.toMarkdown(e);if(this.inline){let i=pLe(this.name,t,e??{});if(typeof i=="string")return i}let r="";e?.tag==="italic"||e?.tag===void 0?r="*":e?.tag==="bold"?r="**":e?.tag==="bold-italic"&&(r="***");let n=`${r}@${this.name}${r}`;return this.content.inlines.length===1?n=`${n} \u2014 ${t}`:this.content.inlines.length>1&&(n=`${n}
+${t}`),this.inline?`{${n}}`:n}};o(pLe,"renderInlineTag");E(pLe,"renderInlineTag");o(mLe,"renderLinkDefault");E(mLe,"renderLinkDefault");eV=class{static{o(this,"JSDocTextImpl")}static{E(this,"JSDocTextImpl")}constructor(e,t){this.inlines=e,this.range=t}toString(){let e="";for(let t=0;t<this.inlines.length;t++){let r=this.inlines[t],n=this.inlines[t+1];e+=r.toString(),n&&n.range.start.line>r.range.start.line&&(e+=`
+`)}return e}toMarkdown(e){let t="";for(let r=0;r<this.inlines.length;r++){let n=this.inlines[r],i=this.inlines[r+1];t+=n.toMarkdown(e),i&&i.range.start.line>n.range.start.line&&(t+=`
+`)}return t}},gLe=class{static{o(this,"JSDocLineImpl")}static{E(this,"JSDocLineImpl")}constructor(e,t){this.text=e,this.range=t}toString(){return this.text}toMarkdown(){return this.text}};o(tV,"fillNewlines");E(tV,"fillNewlines");yLe=class{static{o(this,"JSDocDocumentationProvider")}static{E(this,"JSDocDocumentationProvider")}constructor(e){this.indexManager=e.shared.workspace.IndexManager,this.commentProvider=e.documentation.CommentProvider}getDocumentation(e){let t=this.commentProvider.getComment(e);if(t&&LH(t))return _H(t).toMarkdown({renderLink:E((n,i)=>this.documentationLinkRenderer(e,n,i),"renderLink"),renderTag:E(n=>this.documentationTagRenderer(e,n),"renderTag")})}documentationLinkRenderer(e,t,r){let n=this.findNameInLocalSymbols(e,t)??this.findNameInGlobalScope(e,t);if(n&&n.nameSegment){let i=n.nameSegment.range.start.line+1,a=n.nameSegment.range.start.character+1,s=n.documentUri.with({fragment:`L${i},${a}`});return`[${r}](${s.toString()})`}else return}documentationTagRenderer(e,t){}findNameInLocalSymbols(e,t){let n=wc(e).localSymbols;if(!n)return;let i=e;do{let s=n.getStream(i).find(l=>l.name===t);if(s)return s;i=i.$container}while(i)}findNameInGlobalScope(e,t){return this.indexManager.allElements().find(n=>n.name===t)}},vLe=class{static{o(this,"DefaultCommentProvider")}static{E(this,"DefaultCommentProvider")}constructor(e){this.grammarConfig=()=>e.parser.GrammarConfig}getComment(e){return kH(e)?e.$comment:IW(e.$cstNode,this.grammarConfig().multilineCommentRules)?.text}},xLe=class{static{o(this,"DefaultAsyncParser")}static{E(this,"DefaultAsyncParser")}constructor(e){this.syncParser=e.parser.LangiumParser}parse(e,t){return Promise.resolve(this.syncParser.parse(e))}},IEt=class{static{o(this,"AbstractThreadedAsyncParser")}static{E(this,"AbstractThreadedAsyncParser")}constructor(e){this.threadCount=8,this.terminationDelay=200,this.workerPool=[],this.queue=[],this.hydrator=e.serializer.Hydrator}initializeWorkers(){for(;this.workerPool.length<this.threadCount;){let e=this.createWorker();e.onReady(()=>{if(this.queue.length>0){let t=this.queue.shift();t&&(e.lock(),t.resolve(e))}}),this.workerPool.push(e)}}async parse(e,t){let r=await this.acquireParserWorker(t),n=new Jh,i,a=t.onCancellationRequested(()=>{i=setTimeout(()=>{this.terminateWorker(r)},this.terminationDelay)});return r.parse(e).then(s=>{let l=this.hydrator.hydrate(s);n.resolve(l)}).catch(s=>{n.reject(s)}).finally(()=>{a.dispose(),clearTimeout(i)}),n.promise}terminateWorker(e){e.terminate();let t=this.workerPool.indexOf(e);t>=0&&this.workerPool.splice(t,1)}async acquireParserWorker(e){this.initializeWorkers();for(let r of this.workerPool)if(r.ready)return r.lock(),r;let t=new Jh;return e.onCancellationRequested(()=>{let r=this.queue.indexOf(t);r>=0&&this.queue.splice(r,1),t.reject(Pu)}),this.queue.push(t),t.promise}},MEt=class{static{o(this,"ParserWorker")}static{E(this,"ParserWorker")}get ready(){return this._ready}get onReady(){return this.onReadyEmitter.event}constructor(e,t,r,n){this.onReadyEmitter=new T_.Emitter,this.deferred=new Jh,this._ready=!0,this._parsing=!1,this.sendMessage=e,this._terminate=n,t(i=>{let a=i;this.deferred.resolve(a),this.unlock()}),r(i=>{this.deferred.reject(i),this.unlock()})}terminate(){this.deferred.reject(Pu),this._terminate()}lock(){this._ready=!1}unlock(){this._parsing=!1,this._ready=!0,this.onReadyEmitter.fire()}parse(e){if(this._parsing)throw new Error("Parser worker is busy");return this._parsing=!0,this.deferred=new Jh,this.sendMessage(e),this.deferred.promise}},bLe=class{static{o(this,"DefaultWorkspaceLock")}static{E(this,"DefaultWorkspaceLock")}constructor(){this.previousTokenSource=new Jn.CancellationTokenSource,this.writeQueue=[],this.readQueue=[],this.done=!0}write(e){this.cancelWrite();let t=v_();return this.previousTokenSource=t,this.enqueue(this.writeQueue,e,t.token)}read(e){return this.enqueue(this.readQueue,e)}enqueue(e,t,r=Jn.CancellationToken.None){let n=new Jh,i={action:t,deferred:n,cancellationToken:r};return e.push(i),this.performNextOperation(),n.promise}async performNextOperation(){if(!this.done)return;let e=[];if(this.writeQueue.length>0)e.push(this.writeQueue.shift());else if(this.readQueue.length>0)e.push(...this.readQueue.splice(0,this.readQueue.length));else return;this.done=!1,await Promise.all(e.map(async({action:t,deferred:r,cancellationToken:n})=>{try{let i=await Promise.resolve().then(()=>t(n));r.resolve(i)}catch(i){v0(i)?r.resolve(void 0):r.reject(i)}})),this.done=!0,this.performNextOperation()}cancelWrite(){this.previousTokenSource.cancel()}},TLe=class{static{o(this,"DefaultHydrator")}static{E(this,"DefaultHydrator")}constructor(e){this.grammarElementIdMap=new uR,this.tokenTypeIdMap=new uR,this.grammar=e.Grammar,this.lexer=e.parser.Lexer,this.linker=e.references.Linker}dehydrate(e){return{lexerErrors:e.lexerErrors,lexerReport:e.lexerReport?this.dehydrateLexerReport(e.lexerReport):void 0,parserErrors:e.parserErrors.map(t=>({...t,message:t.message})),value:this.dehydrateAstNode(e.value,this.createDehyrationContext(e.value))}}dehydrateLexerReport(e){return e}createDehyrationContext(e){let t=new Map,r=new Map;for(let n of kc(e))t.set(n,{});if(e.$cstNode)for(let n of Ev(e.$cstNode))r.set(n,{});return{astNodes:t,cstNodes:r}}dehydrateAstNode(e,t){let r=t.astNodes.get(e);r.$type=e.$type,r.$containerIndex=e.$containerIndex,r.$containerProperty=e.$containerProperty,e.$cstNode!==void 0&&(r.$cstNode=this.dehydrateCstNode(e.$cstNode,t));for(let[n,i]of Object.entries(e))if(!n.startsWith("$"))if(Array.isArray(i)){let a=[];r[n]=a;for(let s of i)Zi(s)?a.push(this.dehydrateAstNode(s,t)):Bs(s)?a.push(this.dehydrateReference(s,t)):a.push(s)}else Zi(i)?r[n]=this.dehydrateAstNode(i,t):Bs(i)?r[n]=this.dehydrateReference(i,t):i!==void 0&&(r[n]=i);return r}dehydrateReference(e,t){let r={};return r.$refText=e.$refText,e.$refNode&&(r.$refNode=t.cstNodes.get(e.$refNode)),r}dehydrateCstNode(e,t){let r=t.cstNodes.get(e);return vR(e)?r.fullText=e.fullText:r.grammarSource=this.getGrammarElementId(e.grammarSource),r.hidden=e.hidden,r.astNode=t.astNodes.get(e.astNode),Hh(e)?r.content=e.content.map(n=>this.dehydrateCstNode(n,t)):Jg(e)&&(r.tokenType=e.tokenType.name,r.offset=e.offset,r.length=e.length,r.startLine=e.range.start.line,r.startColumn=e.range.start.character,r.endLine=e.range.end.line,r.endColumn=e.range.end.character),r}hydrate(e){let t=e.value,r=this.createHydrationContext(t);return"$cstNode"in t&&this.hydrateCstNode(t.$cstNode,r),{lexerErrors:e.lexerErrors,lexerReport:e.lexerReport,parserErrors:e.parserErrors,value:this.hydrateAstNode(t,r)}}createHydrationContext(e){let t=new Map,r=new Map;for(let i of kc(e))t.set(i,{});let n;if(e.$cstNode)for(let i of Ev(e.$cstNode)){let a;"fullText"in i?(a=new lH(i.fullText),n=a):"content"in i?a=new f_:"tokenType"in i&&(a=this.hydrateCstLeafNode(i)),a&&(r.set(i,a),a.root=n)}return{astNodes:t,cstNodes:r}}hydrateAstNode(e,t){let r=t.astNodes.get(e);r.$type=e.$type,r.$containerIndex=e.$containerIndex,r.$containerProperty=e.$containerProperty,e.$cstNode&&(r.$cstNode=t.cstNodes.get(e.$cstNode));for(let[n,i]of Object.entries(e))if(!n.startsWith("$"))if(Array.isArray(i)){let a=[];r[n]=a;for(let s of i)Zi(s)?a.push(this.setParent(this.hydrateAstNode(s,t),r)):Bs(s)?a.push(this.hydrateReference(s,r,n,t)):a.push(s)}else Zi(i)?r[n]=this.setParent(this.hydrateAstNode(i,t),r):Bs(i)?r[n]=this.hydrateReference(i,r,n,t):i!==void 0&&(r[n]=i);return r}setParent(e,t){return e.$container=t,e}hydrateReference(e,t,r,n){return this.linker.buildReference(t,r,n.cstNodes.get(e.$refNode),e.$refText)}hydrateCstNode(e,t,r=0){let n=t.cstNodes.get(e);if(typeof e.grammarSource=="number"&&(n.grammarSource=this.getGrammarElement(e.grammarSource)),n.astNode=t.astNodes.get(e.astNode),Hh(n))for(let i of e.content){let a=this.hydrateCstNode(i,t,r++);n.content.push(a)}return n}hydrateCstLeafNode(e){let t=this.getTokenType(e.tokenType),r=e.offset,n=e.length,i=e.startLine,a=e.startColumn,s=e.endLine,l=e.endColumn,u=e.hidden;return new aR(r,n,{start:{line:i,character:a},end:{line:s,character:l}},t,u)}getTokenType(e){return this.lexer.definition[e]}getGrammarElementId(e){if(e)return this.grammarElementIdMap.size===0&&this.createGrammarElementIdMap(),this.grammarElementIdMap.get(e)}getGrammarElement(e){return this.grammarElementIdMap.size===0&&this.createGrammarElementIdMap(),this.grammarElementIdMap.getKey(e)}createGrammarElementIdMap(){let e=0;for(let t of kc(this.grammar))xR(t)&&this.grammarElementIdMap.set(t,e++)}};o(hn,"createDefaultCoreModule");E(hn,"createDefaultCoreModule");o(dn,"createDefaultSharedCoreModule");E(dn,"createDefaultSharedCoreModule");(function(e){e.merge=(t,r)=>Dv(Dv({},t),r)})(rV||(rV={}));o(Mr,"inject");E(Mr,"inject");CLe=Symbol("isProxy");o(PH,"eagerLoad");E(PH,"eagerLoad");o(OH,"_inject");E(OH,"_inject");swe=Symbol();o(nV,"_resolve");E(nV,"_resolve");o(Dv,"_merge");E(Dv,"_merge");iV={indentTokenName:"INDENT",dedentTokenName:"DEDENT",whitespaceTokenName:"WS",ignoreIndentationDelimiters:[]};(function(e){e.REGULAR="indentation-sensitive",e.IGNORE_INDENTATION="ignore-indentation"})(Hg||(Hg={}));wLe=class extends g_{static{o(this,"IndentationAwareTokenBuilder")}static{E(this,"IndentationAwareTokenBuilder")}constructor(e=iV){super(),this.indentationStack=[0],this.whitespaceRegExp=/[ \t]+/y,this.options={...iV,...e},this.indentTokenType=xv({name:this.options.indentTokenName,pattern:this.indentMatcher.bind(this),line_breaks:!1}),this.dedentTokenType=xv({name:this.options.dedentTokenName,pattern:this.dedentMatcher.bind(this),line_breaks:!1})}buildTokens(e,t){let r=super.buildTokens(e,t);if(!C_(r))throw new Error("Invalid tokens built by default builder");let{indentTokenName:n,dedentTokenName:i,whitespaceTokenName:a,ignoreIndentationDelimiters:s}=this.options,l,u,h,d=[];for(let f of r){for(let[p,m]of s)f.name===p?f.PUSH_MODE=Hg.IGNORE_INDENTATION:f.name===m&&(f.POP_MODE=!0);f.name===i?l=f:f.name===n?u=f:f.name===a?h=f:d.push(f)}if(!l||!u||!h)throw new Error("Some indentation/whitespace tokens not found!");return s.length>0?{modes:{[Hg.REGULAR]:[l,u,...d,h],[Hg.IGNORE_INDENTATION]:[...d,h]},defaultMode:Hg.REGULAR}:[l,u,h,...d]}flushLexingReport(e){return{...super.flushLexingReport(e),remainingDedents:this.flushRemainingDedents(e)}}isStartOfLine(e,t){return t===0||`\r
+`.includes(e[t-1])}matchWhitespace(e,t,r,n){this.whitespaceRegExp.lastIndex=t;let i=this.whitespaceRegExp.exec(e);return{currIndentLevel:i?.[0].length??0,prevIndentLevel:this.indentationStack.at(-1),match:i}}createIndentationTokenInstance(e,t,r,n){let i=this.getLineNumber(t,n);return Rw(e,r,n,n+r.length,i,i,1,r.length)}getLineNumber(e,t){return e.substring(0,t).split(/\r\n|\r|\n/).length}indentMatcher(e,t,r,n){if(!this.isStartOfLine(e,t))return null;let{currIndentLevel:i,prevIndentLevel:a,match:s}=this.matchWhitespace(e,t,r,n);return i<=a?null:(this.indentationStack.push(i),s)}dedentMatcher(e,t,r,n){if(!this.isStartOfLine(e,t))return null;let{currIndentLevel:i,prevIndentLevel:a,match:s}=this.matchWhitespace(e,t,r,n);if(i>=a)return null;let l=this.indentationStack.lastIndexOf(i);if(l===-1)return this.diagnostics.push({severity:"error",message:`Invalid dedent level ${i} at offset: ${t}. Current indentation stack: ${this.indentationStack}`,offset:t,length:s?.[0]?.length??0,line:this.getLineNumber(e,t),column:1}),null;let u=this.indentationStack.length-l-1,h=e.substring(0,t).match(/[\r\n]+$/)?.[0].length??1;for(let d=0;d<u;d++){let f=this.createIndentationTokenInstance(this.dedentTokenType,e,"",t-(h-1));r.push(f),this.indentationStack.pop()}return null}buildTerminalToken(e){let t=super.buildTerminalToken(e),{indentTokenName:r,dedentTokenName:n,whitespaceTokenName:i}=this.options;return t.name===r?this.indentTokenType:t.name===n?this.dedentTokenType:t.name===i?xv({name:i,pattern:this.whitespaceRegExp,group:Fs.SKIPPED}):t}flushRemainingDedents(e){let t=[];for(;this.indentationStack.length>1;)t.push(this.createIndentationTokenInstance(this.dedentTokenType,e,"",e.length)),this.indentationStack.pop();return this.indentationStack=[0],t}},NEt=class extends RH{static{o(this,"IndentationAwareLexer")}static{E(this,"IndentationAwareLexer")}constructor(e){if(super(e),e.parser.TokenBuilder instanceof wLe)this.indentationTokenBuilder=e.parser.TokenBuilder;else throw new Error("IndentationAwareLexer requires an accompanying IndentationAwareTokenBuilder")}tokenize(e,t=AH){let r=super.tokenize(e),n=r.report;t?.mode==="full"&&r.tokens.push(...n.remainingDedents),n.remainingDedents=[];let{indentTokenType:i,dedentTokenType:a}=this.indentationTokenBuilder,s=i.tokenTypeIdx,l=a.tokenTypeIdx,u=[],h=r.tokens.length-1;for(let d=0;d<h;d++){let f=r.tokens[d],p=r.tokens[d+1];if(f.tokenTypeIdx===s&&p.tokenTypeIdx===l){d++;continue}u.push(f)}return h>=0&&u.push(r.tokens[h]),r.tokens=u,r}},BH={};yp(BH,{AstUtils:o(()=>sW,"AstUtils"),BiMap:o(()=>uR,"BiMap"),Cancellation:o(()=>Jn,"Cancellation"),ContextCache:o(()=>b_,"ContextCache"),CstUtils:o(()=>nW,"CstUtils"),DONE_RESULT:o(()=>Os,"DONE_RESULT"),Deferred:o(()=>Jh,"Deferred"),Disposable:o(()=>Yg,"Disposable"),DisposableCache:o(()=>x_,"DisposableCache"),DocumentCache:o(()=>U_e,"DocumentCache"),EMPTY_STREAM:o(()=>Tv,"EMPTY_STREAM"),ErrorWithLocation:o(()=>ER,"ErrorWithLocation"),GrammarUtils:o(()=>OW,"GrammarUtils"),MultiMap:o(()=>ed,"MultiMap"),OperationCancelled:o(()=>Pu,"OperationCancelled"),Reduction:o(()=>jC,"Reduction"),RegExpUtils:o(()=>$W,"RegExpUtils"),SimpleCache:o(()=>CH,"SimpleCache"),StreamImpl:o(()=>Nu,"StreamImpl"),TreeStreamImpl:o(()=>Cv,"TreeStreamImpl"),URI:o(()=>Yo,"URI"),UriTrie:o(()=>bH,"UriTrie"),UriUtils:o(()=>$s,"UriUtils"),WorkspaceCache:o(()=>wH,"WorkspaceCache"),assertCondition:o(()=>BW,"assertCondition"),assertUnreachable:o(()=>vp,"assertUnreachable"),delayNextTick:o(()=>y_,"delayNextTick"),interruptAndCheck:o(()=>Ia,"interruptAndCheck"),isOperationCancelled:o(()=>v0,"isOperationCancelled"),loadGrammarFromJson:o(()=>Ma,"loadGrammarFromJson"),setInterruptionPeriod:o(()=>yH,"setInterruptionPeriod"),startCancelableOperation:o(()=>v_,"startCancelableOperation"),stream:o(()=>Bn,"stream")});mR(BH,T_);kLe=class{static{o(this,"EmptyFileSystemProvider")}static{E(this,"EmptyFileSystemProvider")}stat(e){throw new Error("No file system is available.")}statSync(e){throw new Error("No file system is available.")}async exists(){return!1}existsSync(){return!1}readBinary(){throw new Error("No file system is available.")}readBinarySync(){throw new Error("No file system is available.")}readFile(){throw new Error("No file system is available.")}readFileSync(){throw new Error("No file system is available.")}async readDirectory(){return[]}readDirectorySync(){return[]}},yn={fileSystemProvider:E(()=>new kLe,"fileSystemProvider")},PEt={Grammar:E(()=>{},"Grammar"),LanguageMetaData:E(()=>({caseInsensitive:!1,fileExtensions:[".langium"],languageId:"langium"}),"LanguageMetaData")},OEt={AstReflection:E(()=>new AW,"AstReflection")};o(SLe,"createMinimalGrammarServices");E(SLe,"createMinimalGrammarServices");o(Ma,"loadGrammarFromJson");E(Ma,"loadGrammarFromJson");mR(Pwe,BH);BEt=class{static{o(this,"DefaultLangiumProfiler")}static{E(this,"DefaultLangiumProfiler")}constructor(e){this.activeCategories=new Set,this.allCategories=new Set(["validating","parsing","linking"]),this.activeCategories=e??new Set(this.allCategories),this.records=new ed}isActive(e){return this.activeCategories.has(e)}start(...e){e?e.forEach(t=>this.activeCategories.add(t)):this.activeCategories=new Set(this.allCategories)}stop(...e){e?e.forEach(t=>this.activeCategories.delete(t)):this.activeCategories.clear()}createTask(e,t){if(!this.isActive(e))throw new Error(`Category "${e}" is not active.`);return console.log(`Creating profiling task for '${e}.${t}'.`),new ELe(r=>this.records.add(e,this.dumpRecord(e,r)),t)}dumpRecord(e,t){console.info(`Task ${e}.${t.identifier} executed in ${t.duration.toFixed(2)}ms and ended at ${t.date.toISOString()}`);let r=[];for(let a of t.entries.keys()){let s=t.entries.get(a),l=s.reduce((u,h)=>u+h);r.push({name:`${t.identifier}.${a}`,count:s.length,duration:l})}let n=t.duration-r.map(a=>a.duration).reduce((a,s)=>a+s,0);r.push({name:t.identifier,count:1,duration:n}),r.sort((a,s)=>s.duration-a.duration);function i(a){return Math.round(100*a)/100}return o(i,"Round"),E(i,"Round"),console.table(r.map(a=>({Element:a.name,Count:a.count,"Self %":i(100*a.duration/t.duration),"Time (ms)":i(a.duration)}))),t}getRecords(...e){return e.length===0?this.records.values():this.records.entries().filter(t=>e.some(r=>r===t[0])).flatMap(t=>t[1])}},ELe=class{static{o(this,"ProfilingTask")}static{E(this,"ProfilingTask")}constructor(e,t){this.stack=[],this.entries=new ed,this.addRecord=e,this.identifier=t}start(){if(this.startTime!==void 0)throw new Error(`Task "${this.identifier}" is already started.`);this.startTime=performance.now()}stop(){if(this.startTime===void 0)throw new Error(`Task "${this.identifier}" was not started.`);if(this.stack.length!==0)throw new Error(`Task "${this.identifier}" cannot be stopped before sub-task(s): ${this.stack.map(t=>t.id).join(", ")}.`);let e={identifier:this.identifier,date:new Date,duration:performance.now()-this.startTime,entries:this.entries};this.addRecord(e),this.startTime=void 0,this.entries.clear()}startSubTask(e){this.stack.push({id:e,start:performance.now(),content:0})}stopSubTask(e){let t=this.stack.pop();if(!t)throw new Error(`Task "${this.identifier}.${e}" was not started.`);if(t.id!==e)throw new Error(`Sub-Task "${t.id}" is not already stopped.`);let r=performance.now()-t.start;this.stack.at(-1)!==void 0&&(this.stack[this.stack.length-1].content+=r);let n=r-t.content;this.entries.add(e,n)}};(e=>{e.Terminals={ARROW_DIRECTION:/L|R|T|B/,ARROW_GROUP:/\{group\}/,ARROW_INTO:/<|>/,ACC_DESCR:/[\t ]*accDescr(?:[\t ]*:([^\n\r]*?(?=%%)|[^\n\r]*)|\s*{([^}]*)})/,ACC_TITLE:/[\t ]*accTitle[\t ]*:(?:[^\n\r]*?(?=%%)|[^\n\r]*)/,TITLE:/[\t ]*title(?:[\t ][^\n\r]*?(?=%%)|[\t ][^\n\r]*|)/,STRING:/"([^"\\]|\\.)*"|'([^'\\]|\\.)*'/,ID:/[\w]([-\w]*\w)?/,NEWLINE:/\r?\n/,WHITESPACE:/[\t ]+/,YAML:/---[\t ]*\r?\n(?:[\S\s]*?\r?\n)?---(?:\r?\n|(?!\S))/,DIRECTIVE:/[\t ]*%%{[\S\s]*?}%%(?:\r?\n|(?!\S))/,SINGLE_LINE_COMMENT:/[\t ]*%%[^\n\r]*/,ARCH_ICON:/\([\w-:]+\)/,ARCH_TITLE:/\[(?:"([^"\\]|\\.)*"|'([^'\\]|\\.)*'|[\w ]+)\]/}})(aV||(aV={}));(e=>{e.Terminals={DOMAIN_NAME:/complex|complicated|clear|chaotic|confusion/,ACC_DESCR:/[\t ]*accDescr(?:[\t ]*:([^\n\r]*?(?=%%)|[^\n\r]*)|\s*{([^}]*)})/,ACC_TITLE:/[\t ]*accTitle[\t ]*:(?:[^\n\r]*?(?=%%)|[^\n\r]*)/,TITLE:/[\t ]*title(?:[\t ][^\n\r]*?(?=%%)|[\t ][^\n\r]*|)/,STRING:/"([^"\\]|\\.)*"|'([^'\\]|\\.)*'/,NEWLINE:/\r?\n/,WHITESPACE:/[\t ]+/,YAML:/---[\t ]*\r?\n(?:[\S\s]*?\r?\n)?---(?:\r?\n|(?!\S))/,DIRECTIVE:/[\t ]*%%{[\S\s]*?}%%(?:\r?\n|(?!\S))/,SINGLE_LINE_COMMENT:/[\t ]*%%[^\n\r]*/}})(sV||(sV={}));(e=>{e.Terminals={EM_ID:/[_a-zA-Z][\w_]*/,EM_FID:/\d{1,3}/,EM_DATA_INLINE:/\{(.*)\}|"(.*)"|'(.*)'/,EM_DATA_BLOCK:/\{[\t ]*\r?\n(?:[\S\s]*?\r?\n)?\}(?:\r?\n|(?!\S))/,EM_ACC_DESCR:/[\t ]*accDescr(?:[\t ]*:([^\n\r]*?(?=%%)|[^\n\r]*)|\s*{([^}]*)})/,EM_ACC_TITLE:/[\t ]*accTitle[\t ]*:(?:[^\n\r]*?(?=%%)|[^\n\r]*)/,EM_TITLE:/[\t ]*title(?:[\t ][^\n\r]*?(?=%%)|[\t ][^\n\r]*|)/,EM_WS:/\s+/,EM_YAML:/---[\t ]*\r?\n(?:[\S\s]*?\r?\n)?---(?:\r?\n|(?!\S))/,EM_DIRECTIVE:/[\t ]*%%{[\S\s]*?}%%(?:\r?\n|(?!\S))/,EM_SINGLE_LINE_COMMENT:/[\t ]*%%[^\n\r]*/,EM_ML_COMMENT:/\/\*[\s\S]*?\*\//,EM_SL_COMMENT:/\/\/[^\n\r]*/}})(oV||(oV={}));(e=>{e.Terminals={ACC_DESCR:/[\t ]*accDescr(?:[\t ]*:([^\n\r]*?(?=%%)|[^\n\r]*)|\s*{([^}]*)})/,ACC_TITLE:/[\t ]*accTitle[\t ]*:(?:[^\n\r]*?(?=%%)|[^\n\r]*)/,TITLE:/[\t ]*title(?:[\t ][^\n\r]*?(?=%%)|[\t ][^\n\r]*|)/,INT:/0|[1-9][0-9]*(?!\.)/,STRING:/"([^"\\]|\\.)*"|'([^'\\]|\\.)*'/,NEWLINE:/\r?\n/,WHITESPACE:/[\t ]+/,YAML:/---[\t ]*\r?\n(?:[\S\s]*?\r?\n)?---(?:\r?\n|(?!\S))/,DIRECTIVE:/[\t ]*%%{[\S\s]*?}%%(?:\r?\n|(?!\S))/,SINGLE_LINE_COMMENT:/[\t ]*%%[^\n\r]*/,REFERENCE:/\w([-\./\w]*[-\w])?/}})(lV||(lV={}));(e=>{e.Terminals={ACC_DESCR:/[\t ]*accDescr(?:[\t ]*:([^\n\r]*?(?=%%)|[^\n\r]*)|\s*{([^}]*)})/,ACC_TITLE:/[\t ]*accTitle[\t ]*:(?:[^\n\r]*?(?=%%)|[^\n\r]*)/,TITLE:/[\t ]*title(?:[\t ][^\n\r]*?(?=%%)|[\t ][^\n\r]*|)/,NEWLINE:/\r?\n/,WHITESPACE:/[\t ]+/,YAML:/---[\t ]*\r?\n(?:[\S\s]*?\r?\n)?---(?:\r?\n|(?!\S))/,DIRECTIVE:/[\t ]*%%{[\S\s]*?}%%(?:\r?\n|(?!\S))/,SINGLE_LINE_COMMENT:/[\t ]*%%[^\n\r]*/}})(cV||(cV={}));(e=>{e.Terminals={ACC_DESCR:/[\t ]*accDescr(?:[\t ]*:([^\n\r]*?(?=%%)|[^\n\r]*)|\s*{([^}]*)})/,ACC_TITLE:/[\t ]*accTitle[\t ]*:(?:[^\n\r]*?(?=%%)|[^\n\r]*)/,TITLE:/[\t ]*title(?:[\t ][^\n\r]*?(?=%%)|[\t ][^\n\r]*|)/,INT:/0|[1-9][0-9]*(?!\.)/,STRING:/"([^"\\]|\\.)*"|'([^'\\]|\\.)*'/,NEWLINE:/\r?\n/,WHITESPACE:/[\t ]+/,YAML:/---[\t ]*\r?\n(?:[\S\s]*?\r?\n)?---(?:\r?\n|(?!\S))/,DIRECTIVE:/[\t ]*%%{[\S\s]*?}%%(?:\r?\n|(?!\S))/,SINGLE_LINE_COMMENT:/[\t ]*%%[^\n\r]*/}})(uV||(uV={}));(e=>{e.Terminals={NUMBER_PIE:/(?:-?[0-9]+\.[0-9]+(?!\.))|(?:-?(0|[1-9][0-9]*)(?!\.))/,ACC_DESCR:/[\t ]*accDescr(?:[\t ]*:([^\n\r]*?(?=%%)|[^\n\r]*)|\s*{([^}]*)})/,ACC_TITLE:/[\t ]*accTitle[\t ]*:(?:[^\n\r]*?(?=%%)|[^\n\r]*)/,TITLE:/[\t ]*title(?:[\t ][^\n\r]*?(?=%%)|[\t ][^\n\r]*|)/,STRING:/"([^"\\]|\\.)*"|'([^'\\]|\\.)*'/,NEWLINE:/\r?\n/,WHITESPACE:/[\t ]+/,YAML:/---[\t ]*\r?\n(?:[\S\s]*?\r?\n)?---(?:\r?\n|(?!\S))/,DIRECTIVE:/[\t ]*%%{[\S\s]*?}%%(?:\r?\n|(?!\S))/,SINGLE_LINE_COMMENT:/[\t ]*%%[^\n\r]*/}})(hV||(hV={}));(e=>{e.Terminals={GRATICULE:/circle|polygon/,BOOLEAN:/true|false/,ACC_DESCR:/[\t ]*accDescr(?:[\t ]*:([^\n\r]*?(?=%%)|[^\n\r]*)|\s*{([^}]*)})/,ACC_TITLE:/[\t ]*accTitle[\t ]*:(?:[^\n\r]*?(?=%%)|[^\n\r]*)/,TITLE:/[\t ]*title(?:[\t ][^\n\r]*?(?=%%)|[\t ][^\n\r]*|)/,NUMBER:/(?:[0-9]+\.[0-9]+(?!\.))|(?:0|[1-9][0-9]*(?!\.))/,STRING:/"([^"\\]|\\.)*"|'([^'\\]|\\.)*'/,ID:/[\w]([-\w]*\w)?/,NEWLINE:/\r?\n/,WHITESPACE:/[\t ]+/,YAML:/---[\t ]*\r?\n(?:[\S\s]*?\r?\n)?---(?:\r?\n|(?!\S))/,DIRECTIVE:/[\t ]*%%{[\S\s]*?}%%(?:\r?\n|(?!\S))/,SINGLE_LINE_COMMENT:/[\t ]*%%[^\n\r]*/}})(dV||(dV={}));(e=>{e.Terminals={TITLE:/title(?:[\t ][^\n\r]*?(?=%%)|[\t ][^\n\r]*|)/,ACC_TITLE:/accTitle[\t ]*:(?:[^\n\r]*?(?=%%)|[^\n\r]*)/,ACC_DESCR:/accDescr(?:[\t ]*:([^\n\r]*?(?=%%)|[^\n\r]*)|\s*{([^}]*)})/,ABNF_RULENAME:/[A-Za-z][A-Za-z0-9-]*/,ABNF_STRING:/"[^"]*"/,ABNF_NUMVAL:/%[xXdDbB][0-9A-Fa-f]+(?:-[0-9A-Fa-f]+|\.[0-9A-Fa-f]+)*/,ABNF_REPEAT:/[0-9]*\*[0-9]*/,ABNF_EXACT_REPEAT:/[0-9]+/,ABNF_WHITESPACE:/[\t \r\n]+/,ABNF_YAML:/---[\t ]*\r?\n(?:[\S\s]*?\r?\n)?---(?:\r?\n|(?!\S))/,ABNF_DIRECTIVE:/[\t ]*%%{[\S\s]*?}%%(?:\r?\n|(?!\S))/,ABNF_SINGLE_LINE_COMMENT:/[\t ]*%%[^\n\r]*/,ABNF_COMMENT:/;[^\n\r]*/}})(fV||(fV={}));(e=>{e.Terminals={TITLE:/title(?:[\t ][^\n\r]*?(?=%%)|[\t ][^\n\r]*|)/,ACC_TITLE:/accTitle[\t ]*:(?:[^\n\r]*?(?=%%)|[^\n\r]*)/,ACC_DESCR:/accDescr(?:[\t ]*:([^\n\r]*?(?=%%)|[^\n\r]*)|\s*{([^}]*)})/,EBNF_ID:/[A-Z_a-z][\w-]*/,EBNF_STRING:/"([^"\\]|\\.)*"|'([^'\\]|\\.)*'/,EBNF_SPECIAL_SEQUENCE:/\?(?=[^?;]*[^?\s;][^?;]*\?)[^?;]*\?/,EBNF_WHITESPACE:/[\t \r\n]+/,EBNF_YAML:/---[\t ]*\r?\n(?:[\S\s]*?\r?\n)?---(?:\r?\n|(?!\S))/,EBNF_DIRECTIVE:/[\t ]*%%{[\S\s]*?}%%(?:\r?\n|(?!\S))/,EBNF_SINGLE_LINE_COMMENT:/[\t ]*%%[^\n\r]*/,EBNF_BLOCK_COMMENT:/\/\*[\s\S]*?\*\//,EBNF_ISO_COMMENT:/\(\*[\s\S]*?\*\)/}})(pV||(pV={}));(e=>{e.Terminals={TITLE:/title(?:[\t ][^\n\r]*?(?=%%)|[\t ][^\n\r]*|)/,ACC_TITLE:/accTitle[\t ]*:(?:[^\n\r]*?(?=%%)|[^\n\r]*)/,ACC_DESCR:/accDescr(?:[\t ]*:([^\n\r]*?(?=%%)|[^\n\r]*)|\s*{([^}]*)})/,RR_ID:/[A-Z_a-z][\w-]*/,RR_STRING:/"([^"\\]|\\.)*"|'([^'\\]|\\.)*'/,RR_WHITESPACE:/[\t \r\n]+/,RR_YAML:/---[\t ]*\r?\n(?:[\S\s]*?\r?\n)?---(?:\r?\n|(?!\S))/,RR_DIRECTIVE:/[\t ]*%%{[\S\s]*?}%%(?:\r?\n|(?!\S))/,RR_SINGLE_LINE_COMMENT:/[\t ]*%%[^\n\r]*/,RR_BLOCK_COMMENT:/\/\*[\s\S]*?\*\//}})(mV||(mV={}));(e=>{e.Terminals={TITLE:/title(?:[\t ][^\n\r]*?(?=%%)|[\t ][^\n\r]*|)/,ACC_TITLE:/accTitle[\t ]*:(?:[^\n\r]*?(?=%%)|[^\n\r]*)/,ACC_DESCR:/accDescr(?:[\t ]*:([^\n\r]*?(?=%%)|[^\n\r]*)|\s*{([^}]*)})/,PEG_ID:/[A-Z_a-z][\w-]*/,PEG_STRING:/"([^"\\]|\\.)*"|'([^'\\]|\\.)*'/,PEG_WHITESPACE:/[\t \r\n]+/,PEG_YAML:/---[\t ]*\r?\n(?:[\S\s]*?\r?\n)?---(?:\r?\n|(?!\S))/,PEG_DIRECTIVE:/[\t ]*%%{[\S\s]*?}%%(?:\r?\n|(?!\S))/,PEG_SINGLE_LINE_COMMENT:/[\t ]*%%[^\n\r]*/,PEG_LINE_COMMENT:/#[^\n\r]*/}})(gV||(gV={}));(e=>{e.Terminals={ACC_DESCR:/[\t ]*accDescr(?:[\t ]*:([^\n\r]*?(?=%%)|[^\n\r]*)|\s*{([^}]*)})/,ACC_TITLE:/[\t ]*accTitle[\t ]*:(?:[^\n\r]*?(?=%%)|[^\n\r]*)/,TITLE:/[\t ]*title(?:[\t ][^\n\r]*?(?=%%)|[\t ][^\n\r]*|)/,TREEMAP_KEYWORD:/treemap-beta|treemap/,CLASS_DEF:/classDef\s+([a-zA-Z_][a-zA-Z0-9_]+)(?:\s+([^;\r\n]*))?(?:;)?/,STYLE_SEPARATOR:/:::/,SEPARATOR:/:/,COMMA:/,/,INDENTATION:/[ \t]{1,}/,WS:/[ \t]+/,ML_COMMENT:/\%\%[^\n]*/,NL:/\r?\n/,ID2:/[a-zA-Z_][a-zA-Z0-9_]*/,NUMBER2:/[0-9_\.\,]+/,STRING2:/"[^"]*"|'[^']*'/}})(yV||(yV={}));(e=>{e.Terminals={ACC_DESCR:/[\t ]*accDescr(?:[\t ]*:([^\n\r]*?(?=%%)|[^\n\r]*)|\s*{([^}]*)})/,ACC_TITLE:/[\t ]*accTitle[\t ]*:(?:[^\n\r]*?(?=%%)|[^\n\r]*)/,TITLE:/[\t ]*title(?:[\t ][^\n\r]*?(?=%%)|[\t ][^\n\r]*|)/,CLASS_ANNOTATION:/[ \t]+:::[ \t]*[A-Za-z_][\w-]*/,ICON_ANNOTATION:/[ \t]+icon\([\w-]*(?::[\w-]+)?\)/,DESC_ANNOTATION:/[ \t]+##[^\n\r]*/,INDENTATION:/[ \t]{1,}/,QUOTED_NAME:/"[^"]*"|'[^']*'/,WS:/[ \t]+/,ML_COMMENT:/\%\%[^\n]*/,NL:/\r?\n/,BARE_NAME:/(?!:::|icon\(|##)[^ \t\n\r"'](?:(?![ \t]+:::[ \t]*[A-Za-z_]|[ \t]+icon\(|[ \t]+##)[^\n\r])*/}})(vV||(vV={}));(e=>{e.Terminals={WARDLEY_NUMBER:/[0-9]+\.[0-9]+/,ARROW:/->/,LINK_PORT:/\+<>|\+>|\+</,LINK_ARROW:/-->|-\.->|>|\+'[^']*'<>|\+'[^']*'<|\+'[^']*'>/,LINK_LABEL:/;[^\n\r]+/,STRATEGY:/build|buy|outsource|market/,KW_WARDLEY:/wardley-beta/,KW_SIZE:/size/,KW_EVOLUTION:/evolution/,KW_ANCHOR:/anchor/,KW_COMPONENT:/component/,KW_LABEL:/label/,KW_INERTIA:/inertia/,KW_EVOLVE:/evolve/,KW_PIPELINE:/pipeline/,KW_NOTE:/note/,KW_ANNOTATIONS:/annotations/,KW_ANNOTATION:/annotation/,KW_ACCELERATOR:/accelerator/,KW_DEACCELERATOR:/deaccelerator/,NAME_WITH_SPACES:/(?!title\s|accTitle|accDescr)[A-Za-z](?:[A-Za-z0-9_()&]|-(?!>))*(?:[ \t]+[A-Za-z(](?:[A-Za-z0-9_()&]|-(?!>))*)*/,WS:/[ \t]+/,ACC_DESCR:/[\t ]*accDescr(?:[\t ]*:([^\n\r]*?(?=%%)|[^\n\r]*)|\s*{([^}]*)})/,ACC_TITLE:/[\t ]*accTitle[\t ]*:(?:[^\n\r]*?(?=%%)|[^\n\r]*)/,TITLE:/[\t ]*title(?:[\t ][^\n\r]*?(?=%%)|[\t ][^\n\r]*|)/,INT:/0|[1-9][0-9]*(?!\.)/,STRING:/"([^"\\]|\\.)*"|'([^'\\]|\\.)*'/,ID:/[\w]([-\w]*\w)?/,NEWLINE:/\r?\n/,WHITESPACE:/[\t ]+/,YAML:/---[\t ]*\r?\n(?:[\S\s]*?\r?\n)?---(?:\r?\n|(?!\S))/,DIRECTIVE:/[\t ]*%%{[\S\s]*?}%%(?:\r?\n|(?!\S))/,SINGLE_LINE_COMMENT:/[\t ]*%%[^\n\r]*/}})(xV||(xV={}));GIr={...aV.Terminals,...sV.Terminals,...oV.Terminals,...lV.Terminals,...cV.Terminals,...uV.Terminals,...hV.Terminals,...dV.Terminals,...fV.Terminals,...pV.Terminals,...mV.Terminals,...gV.Terminals,...vV.Terminals,...yV.Terminals,...xV.Terminals},bV={$type:"AbnfAlternation",alternatives:"alternatives"},TV={$type:"AbnfConcatenation",elements:"elements"},v6={$type:"AbnfElement",primary:"primary",repeat:"repeat"},CV={$type:"AbnfGroup",element:"element"},wV={$type:"AbnfNumVal",value:"value"},kV={$type:"AbnfOptionalGroup",element:"element"},yg={$type:"AbnfPrimary"},x6={$type:"AbnfRule",definition:"definition",name:"name"},SV={$type:"AbnfRuleName",name:"name"},EV={$type:"AbnfStringLiteral",value:"value"},FA={$type:"Accelerator",name:"name",x:"x",y:"y"},cz={$type:"Alignment",direction:"direction",members:"members"},zA={$type:"Anchor",evolution:"evolution",name:"name",visibility:"visibility"},dC={$type:"Annotation",number:"number",text:"text",x:"x",y:"y"},uz={$type:"Annotations",x:"x",y:"y"},bc={$type:"Architecture",accDescr:"accDescr",accTitle:"accTitle",alignments:"alignments",edges:"edges",groups:"groups",junctions:"junctions",services:"services",title:"title"};o(ALe,"isArchitecture");E(ALe,"isArchitecture");GA={$type:"Axis",label:"label",name:"name"},qC={$type:"Branch",name:"name",order:"order"};o(RLe,"isBranch");E(RLe,"isBranch");owe={$type:"Checkout",branch:"branch"},VA={$type:"CherryPicking",id:"id",parent:"parent",tags:"tags"},hz={$type:"ClassDefStatement",className:"className",styleText:"styleText"},Mg={$type:"Commit",id:"id",message:"message",tags:"tags",type:"type"};o(_Le,"isCommit");E(_Le,"isCommit");WA={$type:"Common",accDescr:"accDescr",accTitle:"accTitle",title:"title"},cg={$type:"Component",decorator:"decorator",evolution:"evolution",inertia:"inertia",label:"label",name:"name",visibility:"visibility"},qA={$type:"Curve",entries:"entries",label:"label",name:"name"},cp={$type:"Cynefin",accDescr:"accDescr",accTitle:"accTitle",domains:"domains",title:"title",transitions:"transitions"};o(LLe,"isCynefin");E(LLe,"isCynefin");HA={$type:"Deaccelerator",name:"name",x:"x",y:"y"},lwe={$type:"Decorator",strategy:"strategy"},K1={$type:"Direction",accDescr:"accDescr",accTitle:"accTitle",dir:"dir",statements:"statements",title:"title"},HC={$type:"DomainBlock",domain:"domain",items:"items"};o(DLe,"isDomainBlock");E(DLe,"isDomainBlock");pR={$type:"DomainItem",label:"label"};o(ILe,"isDomainItem");E(ILe,"isDomainItem");AV={$type:"EbnfChoice",alternatives:"alternatives"},RV={$type:"EbnfExceptionPostfix",except:"except"},_V={$type:"EbnfGroup",element:"element"},LV={$type:"EbnfNonTerminal",name:"name"},DV={$type:"EbnfOneOrMorePostfix",operator:"operator"},IV={$type:"EbnfOptional",element:"element"},MV={$type:"EbnfOptionalPostfix",operator:"operator"},iv={$type:"EbnfPostfix"},tp={$type:"EbnfPrimary"},NV={$type:"EbnfRepetition",element:"element"},b6={$type:"EbnfRule",definition:"definition",name:"name"},PV={$type:"EbnfSequence",elements:"elements"},OV={$type:"EbnfSpecial",text:"text"},T6={$type:"EbnfTerm",base:"base",postfixes:"postfixes"},BV={$type:"EbnfTerminal",value:"value"},$V={$type:"EbnfZeroOrMorePostfix",operator:"operator"},Au={$type:"Edge",lhsDir:"lhsDir",lhsGroup:"lhsGroup",lhsId:"lhsId",lhsInto:"lhsInto",rhsDir:"rhsDir",rhsGroup:"rhsGroup",rhsId:"rhsId",rhsInto:"rhsInto",title:"title"},vg={$type:"EmDataEntity",dataBlockValue:"dataBlockValue",dataType:"dataType",name:"name"},rp={$type:"EmFrame"},fC={$type:"EmGwt",givenStatements:"givenStatements",sourceFrame:"sourceFrame",thenStatements:"thenStatements",whenStatements:"whenStatements"},cwe={$type:"EmGwtStatement",entityIdentifier:"entityIdentifier"},dz={$type:"EmModelEntity",name:"name"};o(MLe,"isEmModelEntityType");E(MLe,"isEmModelEntityType");UA={$type:"EmNoteEntity",dataBlockValue:"dataBlockValue",dataType:"dataType",sourceFrame:"sourceFrame"},Gh={$type:"EmResetFrame",dataInlineValue:"dataInlineValue",dataReference:"dataReference",dataType:"dataType",entityIdentifier:"entityIdentifier",modelEntityType:"modelEntityType",name:"name",sourceFrames:"sourceFrames"};o(S_,"isEmResetFrame");E(S_,"isEmResetFrame");ep={$type:"EmTimeFrame",dataInlineValue:"dataInlineValue",dataReference:"dataReference",dataType:"dataType",entityIdentifier:"entityIdentifier",modelEntityType:"modelEntityType",name:"name",sourceFrames:"sourceFrames"},fz={$type:"Entry",axis:"axis",value:"value"},_u={$type:"EventModel",accDescr:"accDescr",accTitle:"accTitle",dataEntities:"dataEntities",frames:"frames",gwtEntities:"gwtEntities",modelEntities:"modelEntities",noteEntities:"noteEntities",title:"title"},uwe={$type:"Evolution",stages:"stages"},YA={$type:"EvolutionStage",boundary:"boundary",name:"name",secondName:"secondName"},pz={$type:"Evolve",component:"component",target:"target"},up={$type:"GitGraph",accDescr:"accDescr",accTitle:"accTitle",statements:"statements",title:"title"};o(NLe,"isGitGraph");E(NLe,"isGitGraph");pC={$type:"Group",icon:"icon",id:"id",in:"in",title:"title"},mv={$type:"Info",accDescr:"accDescr",accTitle:"accTitle",title:"title"};o(PLe,"isInfo");E(PLe,"isInfo");mC={$type:"Item",classSelector:"classSelector",name:"name"},mz={$type:"Junction",id:"id",in:"in"},gC={$type:"Label",negX:"negX",negY:"negY",offsetX:"offsetX",offsetY:"offsetY"},jA={$type:"Leaf",classSelector:"classSelector",name:"name",value:"value"},ug={$type:"Link",arrow:"arrow",from:"from",fromPort:"fromPort",linkLabel:"linkLabel",to:"to",toPort:"toPort"},Ng={$type:"Merge",branch:"branch",id:"id",tags:"tags",type:"type"};o(OLe,"isMerge");E(OLe,"isMerge");XA={$type:"Note",evolution:"evolution",text:"text",visibility:"visibility"},gz={$type:"Option",name:"name",value:"value"},Pg={$type:"Packet",accDescr:"accDescr",accTitle:"accTitle",blocks:"blocks",title:"title"};o(BLe,"isPacket");E(BLe,"isPacket");Og={$type:"PacketBlock",bits:"bits",end:"end",label:"label",start:"start"};o($Le,"isPacketBlock");E($Le,"isPacketBlock");FV={$type:"PegAny",dot:"dot"},zV={$type:"PegGroup",element:"element"},GV={$type:"PegIdentifier",name:"name"},VV={$type:"PegLiteral",value:"value"},WV={$type:"PegOrderedChoice",alternatives:"alternatives"},C6={$type:"PegPrefix",operator:"operator",suffix:"suffix"},av={$type:"PegPrimary"},w6={$type:"PegRule",definition:"definition",name:"name"},qV={$type:"PegSequence",elements:"elements"},k6={$type:"PegSuffix",operator:"operator",primary:"primary"},hp={$type:"Pie",accDescr:"accDescr",accTitle:"accTitle",sections:"sections",showData:"showData",title:"title"};o(FLe,"isPie");E(FLe,"isPie");UC={$type:"PieSection",label:"label",value:"value"};o(zLe,"isPieSection");E(zLe,"isPieSection");yz={$type:"Pipeline",components:"components",parent:"parent"},KA={$type:"PipelineComponent",evolution:"evolution",label:"label",name:"name"},np={$type:"Radar",accDescr:"accDescr",accTitle:"accTitle",axes:"axes",curves:"curves",options:"options",title:"title"},Bg={$type:"Railroad",accDescr:"accDescr",accTitle:"accTitle",rules:"rules",title:"title"};o(GLe,"isRailroad");E(GLe,"isRailroad");$g={$type:"RailroadAbnf",accDescr:"accDescr",accTitle:"accTitle",rules:"rules",title:"title"};o(VLe,"isRailroadAbnf");E(VLe,"isRailroadAbnf");HV={$type:"RailroadChoiceExpr",alternatives:"alternatives"},Fg={$type:"RailroadEbnf",accDescr:"accDescr",accTitle:"accTitle",rules:"rules",title:"title"};o(WLe,"isRailroadEbnf");E(WLe,"isRailroadEbnf");Lu={$type:"RailroadExpression"},UV={$type:"RailroadNonTerminalExpr",name:"name"},YV={$type:"RailroadOneOrMoreExpr",element:"element"},jV={$type:"RailroadOptionalExpr",element:"element"},zg={$type:"RailroadPeg",accDescr:"accDescr",accTitle:"accTitle",rules:"rules",title:"title"};o(qLe,"isRailroadPeg");E(qLe,"isRailroadPeg");S6={$type:"RailroadRule",definition:"definition",name:"name"},XV={$type:"RailroadSequenceExpr",elements:"elements"},KV={$type:"RailroadSpecialExpr",text:"text"},ZV={$type:"RailroadTerminalExpr",value:"value"},QV={$type:"RailroadZeroOrMoreExpr",element:"element"},vz={$type:"Section",classSelector:"classSelector",name:"name"},Z1={$type:"Service",icon:"icon",iconText:"iconText",id:"id",in:"in",title:"title"},xz={$type:"Size",height:"height",width:"width"},xg={$type:"Statement"},gv={$type:"Transition",from:"from",label:"label",to:"to"};o(HLe,"isTransition");E(HLe,"isTransition");Gg={$type:"Treemap",accDescr:"accDescr",accTitle:"accTitle",title:"title",TreemapRows:"TreemapRows"};o(ULe,"isTreemap");E(ULe,"isTreemap");bz={$type:"TreemapRow",indent:"indent",item:"item"},bg={$type:"TreeNode",classAnnotation:"classAnnotation",descAnnotation:"descAnnotation",iconAnnotation:"iconAnnotation",indent:"indent",name:"name"},sv={$type:"TreeView",accDescr:"accDescr",accTitle:"accTitle",nodes:"nodes",title:"title"},La={$type:"Wardley",accDescr:"accDescr",accelerators:"accelerators",accTitle:"accTitle",anchors:"anchors",annotation:"annotation",annotations:"annotations",components:"components",deaccelerators:"deaccelerators",evolution:"evolution",evolves:"evolves",links:"links",notes:"notes",pipelines:"pipelines",size:"size",title:"title"};o(YLe,"isWardley");E(YLe,"isWardley");jLe=class extends aW{static{o(this,"MermaidAstReflection")}constructor(){super(...arguments),this.types={AbnfAlternation:{name:bV.$type,properties:{alternatives:{name:bV.alternatives,defaultValue:[]}},superTypes:[]},AbnfConcatenation:{name:TV.$type,properties:{elements:{name:TV.elements,defaultValue:[]}},superTypes:[]},AbnfElement:{name:v6.$type,properties:{primary:{name:v6.primary},repeat:{name:v6.repeat}},superTypes:[]},AbnfGroup:{name:CV.$type,properties:{element:{name:CV.element}},superTypes:[yg.$type]},AbnfNumVal:{name:wV.$type,properties:{value:{name:wV.value}},superTypes:[yg.$type]},AbnfOptionalGroup:{name:kV.$type,properties:{element:{name:kV.element}},superTypes:[yg.$type]},AbnfPrimary:{name:yg.$type,properties:{},superTypes:[]},AbnfRule:{name:x6.$type,properties:{definition:{name:x6.definition},name:{name:x6.name}},superTypes:[]},AbnfRuleName:{name:SV.$type,properties:{name:{name:SV.name}},superTypes:[yg.$type]},AbnfStringLiteral:{name:EV.$type,properties:{value:{name:EV.value}},superTypes:[yg.$type]},Accelerator:{name:FA.$type,properties:{name:{name:FA.name},x:{name:FA.x},y:{name:FA.y}},superTypes:[]},Alignment:{name:cz.$type,properties:{direction:{name:cz.direction},members:{name:cz.members,defaultValue:[]}},superTypes:[]},Anchor:{name:zA.$type,properties:{evolution:{name:zA.evolution},name:{name:zA.name},visibility:{name:zA.visibility}},superTypes:[]},Annotation:{name:dC.$type,properties:{number:{name:dC.number},text:{name:dC.text},x:{name:dC.x},y:{name:dC.y}},superTypes:[]},Annotations:{name:uz.$type,properties:{x:{name:uz.x},y:{name:uz.y}},superTypes:[]},Architecture:{name:bc.$type,properties:{accDescr:{name:bc.accDescr},accTitle:{name:bc.accTitle},alignments:{name:bc.alignments,defaultValue:[]},edges:{name:bc.edges,defaultValue:[]},groups:{name:bc.groups,defaultValue:[]},junctions:{name:bc.junctions,defaultValue:[]},services:{name:bc.services,defaultValue:[]},title:{name:bc.title}},superTypes:[]},Axis:{name:GA.$type,properties:{label:{name:GA.label},name:{name:GA.name}},superTypes:[]},Branch:{name:qC.$type,properties:{name:{name:qC.name},order:{name:qC.order}},superTypes:[xg.$type]},Checkout:{name:owe.$type,properties:{branch:{name:owe.branch}},superTypes:[xg.$type]},CherryPicking:{name:VA.$type,properties:{id:{name:VA.id},parent:{name:VA.parent},tags:{name:VA.tags,defaultValue:[]}},superTypes:[xg.$type]},ClassDefStatement:{name:hz.$type,properties:{className:{name:hz.className},styleText:{name:hz.styleText}},superTypes:[]},Commit:{name:Mg.$type,properties:{id:{name:Mg.id},message:{name:Mg.message},tags:{name:Mg.tags,defaultValue:[]},type:{name:Mg.type}},superTypes:[xg.$type]},Common:{name:WA.$type,properties:{accDescr:{name:WA.accDescr},accTitle:{name:WA.accTitle},title:{name:WA.title}},superTypes:[]},Component:{name:cg.$type,properties:{decorator:{name:cg.decorator},evolution:{name:cg.evolution},inertia:{name:cg.inertia,defaultValue:!1},label:{name:cg.label},name:{name:cg.name},visibility:{name:cg.visibility}},superTypes:[]},Curve:{name:qA.$type,properties:{entries:{name:qA.entries,defaultValue:[]},label:{name:qA.label},name:{name:qA.name}},superTypes:[]},Cynefin:{name:cp.$type,properties:{accDescr:{name:cp.accDescr},accTitle:{name:cp.accTitle},domains:{name:cp.domains,defaultValue:[]},title:{name:cp.title},transitions:{name:cp.transitions,defaultValue:[]}},superTypes:[]},Deaccelerator:{name:HA.$type,properties:{name:{name:HA.name},x:{name:HA.x},y:{name:HA.y}},superTypes:[]},Decorator:{name:lwe.$type,properties:{strategy:{name:lwe.strategy}},superTypes:[]},Direction:{name:K1.$type,properties:{accDescr:{name:K1.accDescr},accTitle:{name:K1.accTitle},dir:{name:K1.dir},statements:{name:K1.statements,defaultValue:[]},title:{name:K1.title}},superTypes:[up.$type]},DomainBlock:{name:HC.$type,properties:{domain:{name:HC.domain},items:{name:HC.items,defaultValue:[]}},superTypes:[]},DomainItem:{name:pR.$type,properties:{label:{name:pR.label}},superTypes:[]},EbnfChoice:{name:AV.$type,properties:{alternatives:{name:AV.alternatives,defaultValue:[]}},superTypes:[]},EbnfExceptionPostfix:{name:RV.$type,properties:{except:{name:RV.except}},superTypes:[iv.$type]},EbnfGroup:{name:_V.$type,properties:{element:{name:_V.element}},superTypes:[tp.$type]},EbnfNonTerminal:{name:LV.$type,properties:{name:{name:LV.name}},superTypes:[tp.$type]},EbnfOneOrMorePostfix:{name:DV.$type,properties:{operator:{name:DV.operator}},superTypes:[iv.$type]},EbnfOptional:{name:IV.$type,properties:{element:{name:IV.element}},superTypes:[tp.$type]},EbnfOptionalPostfix:{name:MV.$type,properties:{operator:{name:MV.operator}},superTypes:[iv.$type]},EbnfPostfix:{name:iv.$type,properties:{},superTypes:[]},EbnfPrimary:{name:tp.$type,properties:{},superTypes:[]},EbnfRepetition:{name:NV.$type,properties:{element:{name:NV.element}},superTypes:[tp.$type]},EbnfRule:{name:b6.$type,properties:{definition:{name:b6.definition},name:{name:b6.name}},superTypes:[]},EbnfSequence:{name:PV.$type,properties:{elements:{name:PV.elements,defaultValue:[]}},superTypes:[]},EbnfSpecial:{name:OV.$type,properties:{text:{name:OV.text}},superTypes:[tp.$type]},EbnfTerm:{name:T6.$type,properties:{base:{name:T6.base},postfixes:{name:T6.postfixes,defaultValue:[]}},superTypes:[]},EbnfTerminal:{name:BV.$type,properties:{value:{name:BV.value}},superTypes:[tp.$type]},EbnfZeroOrMorePostfix:{name:$V.$type,properties:{operator:{name:$V.operator}},superTypes:[iv.$type]},Edge:{name:Au.$type,properties:{lhsDir:{name:Au.lhsDir},lhsGroup:{name:Au.lhsGroup,defaultValue:!1},lhsId:{name:Au.lhsId},lhsInto:{name:Au.lhsInto,defaultValue:!1},rhsDir:{name:Au.rhsDir},rhsGroup:{name:Au.rhsGroup,defaultValue:!1},rhsId:{name:Au.rhsId},rhsInto:{name:Au.rhsInto,defaultValue:!1},title:{name:Au.title}},superTypes:[]},EmDataEntity:{name:vg.$type,properties:{dataBlockValue:{name:vg.dataBlockValue},dataType:{name:vg.dataType},name:{name:vg.name}},superTypes:[]},EmFrame:{name:rp.$type,properties:{},superTypes:[]},EmGwt:{name:fC.$type,properties:{givenStatements:{name:fC.givenStatements,defaultValue:[]},sourceFrame:{name:fC.sourceFrame,referenceType:rp.$type},thenStatements:{name:fC.thenStatements,defaultValue:[]},whenStatements:{name:fC.whenStatements,defaultValue:[]}},superTypes:[]},EmGwtStatement:{name:cwe.$type,properties:{entityIdentifier:{name:cwe.entityIdentifier,referenceType:dz.$type}},superTypes:[]},EmModelEntity:{name:dz.$type,properties:{name:{name:dz.name}},superTypes:[]},EmNoteEntity:{name:UA.$type,properties:{dataBlockValue:{name:UA.dataBlockValue},dataType:{name:UA.dataType},sourceFrame:{name:UA.sourceFrame,referenceType:rp.$type}},superTypes:[]},EmResetFrame:{name:Gh.$type,properties:{dataInlineValue:{name:Gh.dataInlineValue},dataReference:{name:Gh.dataReference,referenceType:vg.$type},dataType:{name:Gh.dataType},entityIdentifier:{name:Gh.entityIdentifier},modelEntityType:{name:Gh.modelEntityType},name:{name:Gh.name},sourceFrames:{name:Gh.sourceFrames,defaultValue:[],referenceType:rp.$type}},superTypes:[rp.$type]},EmTimeFrame:{name:ep.$type,properties:{dataInlineValue:{name:ep.dataInlineValue},dataReference:{name:ep.dataReference,referenceType:vg.$type},dataType:{name:ep.dataType},entityIdentifier:{name:ep.entityIdentifier},modelEntityType:{name:ep.modelEntityType},name:{name:ep.name},sourceFrames:{name:ep.sourceFrames,defaultValue:[],referenceType:rp.$type}},superTypes:[rp.$type]},Entry:{name:fz.$type,properties:{axis:{name:fz.axis,referenceType:GA.$type},value:{name:fz.value}},superTypes:[]},EventModel:{name:_u.$type,properties:{accDescr:{name:_u.accDescr},accTitle:{name:_u.accTitle},dataEntities:{name:_u.dataEntities,defaultValue:[]},frames:{name:_u.frames,defaultValue:[]},gwtEntities:{name:_u.gwtEntities,defaultValue:[]},modelEntities:{name:_u.modelEntities,defaultValue:[]},noteEntities:{name:_u.noteEntities,defaultValue:[]},title:{name:_u.title}},superTypes:[]},Evolution:{name:uwe.$type,properties:{stages:{name:uwe.stages,defaultValue:[]}},superTypes:[]},EvolutionStage:{name:YA.$type,properties:{boundary:{name:YA.boundary},name:{name:YA.name},secondName:{name:YA.secondName}},superTypes:[]},Evolve:{name:pz.$type,properties:{component:{name:pz.component},target:{name:pz.target}},superTypes:[]},GitGraph:{name:up.$type,properties:{accDescr:{name:up.accDescr},accTitle:{name:up.accTitle},statements:{name:up.statements,defaultValue:[]},title:{name:up.title}},superTypes:[]},Group:{name:pC.$type,properties:{icon:{name:pC.icon},id:{name:pC.id},in:{name:pC.in},title:{name:pC.title}},superTypes:[]},Info:{name:mv.$type,properties:{accDescr:{name:mv.accDescr},accTitle:{name:mv.accTitle},title:{name:mv.title}},superTypes:[]},Item:{name:mC.$type,properties:{classSelector:{name:mC.classSelector},name:{name:mC.name}},superTypes:[]},Junction:{name:mz.$type,properties:{id:{name:mz.id},in:{name:mz.in}},superTypes:[]},Label:{name:gC.$type,properties:{negX:{name:gC.negX,defaultValue:!1},negY:{name:gC.negY,defaultValue:!1},offsetX:{name:gC.offsetX},offsetY:{name:gC.offsetY}},superTypes:[]},Leaf:{name:jA.$type,properties:{classSelector:{name:jA.classSelector},name:{name:jA.name},value:{name:jA.value}},superTypes:[mC.$type]},Link:{name:ug.$type,properties:{arrow:{name:ug.arrow},from:{name:ug.from},fromPort:{name:ug.fromPort},linkLabel:{name:ug.linkLabel},to:{name:ug.to},toPort:{name:ug.toPort}},superTypes:[]},Merge:{name:Ng.$type,properties:{branch:{name:Ng.branch},id:{name:Ng.id},tags:{name:Ng.tags,defaultValue:[]},type:{name:Ng.type}},superTypes:[xg.$type]},Note:{name:XA.$type,properties:{evolution:{name:XA.evolution},text:{name:XA.text},visibility:{name:XA.visibility}},superTypes:[]},Option:{name:gz.$type,properties:{name:{name:gz.name},value:{name:gz.value,defaultValue:!1}},superTypes:[]},Packet:{name:Pg.$type,properties:{accDescr:{name:Pg.accDescr},accTitle:{name:Pg.accTitle},blocks:{name:Pg.blocks,defaultValue:[]},title:{name:Pg.title}},superTypes:[]},PacketBlock:{name:Og.$type,properties:{bits:{name:Og.bits},end:{name:Og.end},label:{name:Og.label},start:{name:Og.start}},superTypes:[]},PegAny:{name:FV.$type,properties:{dot:{name:FV.dot}},superTypes:[av.$type]},PegGroup:{name:zV.$type,properties:{element:{name:zV.element}},superTypes:[av.$type]},PegIdentifier:{name:GV.$type,properties:{name:{name:GV.name}},superTypes:[av.$type]},PegLiteral:{name:VV.$type,properties:{value:{name:VV.value}},superTypes:[av.$type]},PegOrderedChoice:{name:WV.$type,properties:{alternatives:{name:WV.alternatives,defaultValue:[]}},superTypes:[]},PegPrefix:{name:C6.$type,properties:{operator:{name:C6.operator},suffix:{name:C6.suffix}},superTypes:[]},PegPrimary:{name:av.$type,properties:{},superTypes:[]},PegRule:{name:w6.$type,properties:{definition:{name:w6.definition},name:{name:w6.name}},superTypes:[]},PegSequence:{name:qV.$type,properties:{elements:{name:qV.elements,defaultValue:[]}},superTypes:[]},PegSuffix:{name:k6.$type,properties:{operator:{name:k6.operator},primary:{name:k6.primary}},superTypes:[]},Pie:{name:hp.$type,properties:{accDescr:{name:hp.accDescr},accTitle:{name:hp.accTitle},sections:{name:hp.sections,defaultValue:[]},showData:{name:hp.showData,defaultValue:!1},title:{name:hp.title}},superTypes:[]},PieSection:{name:UC.$type,properties:{label:{name:UC.label},value:{name:UC.value}},superTypes:[]},Pipeline:{name:yz.$type,properties:{components:{name:yz.components,defaultValue:[]},parent:{name:yz.parent}},superTypes:[]},PipelineComponent:{name:KA.$type,properties:{evolution:{name:KA.evolution},label:{name:KA.label},name:{name:KA.name}},superTypes:[]},Radar:{name:np.$type,properties:{accDescr:{name:np.accDescr},accTitle:{name:np.accTitle},axes:{name:np.axes,defaultValue:[]},curves:{name:np.curves,defaultValue:[]},options:{name:np.options,defaultValue:[]},title:{name:np.title}},superTypes:[]},Railroad:{name:Bg.$type,properties:{accDescr:{name:Bg.accDescr},accTitle:{name:Bg.accTitle},rules:{name:Bg.rules,defaultValue:[]},title:{name:Bg.title}},superTypes:[]},RailroadAbnf:{name:$g.$type,properties:{accDescr:{name:$g.accDescr},accTitle:{name:$g.accTitle},rules:{name:$g.rules,defaultValue:[]},title:{name:$g.title}},superTypes:[]},RailroadChoiceExpr:{name:HV.$type,properties:{alternatives:{name:HV.alternatives,defaultValue:[]}},superTypes:[Lu.$type]},RailroadEbnf:{name:Fg.$type,properties:{accDescr:{name:Fg.accDescr},accTitle:{name:Fg.accTitle},rules:{name:Fg.rules,defaultValue:[]},title:{name:Fg.title}},superTypes:[]},RailroadExpression:{name:Lu.$type,properties:{},superTypes:[]},RailroadNonTerminalExpr:{name:UV.$type,properties:{name:{name:UV.name}},superTypes:[Lu.$type]},RailroadOneOrMoreExpr:{name:YV.$type,properties:{element:{name:YV.element}},superTypes:[Lu.$type]},RailroadOptionalExpr:{name:jV.$type,properties:{element:{name:jV.element}},superTypes:[Lu.$type]},RailroadPeg:{name:zg.$type,properties:{accDescr:{name:zg.accDescr},accTitle:{name:zg.accTitle},rules:{name:zg.rules,defaultValue:[]},title:{name:zg.title}},superTypes:[]},RailroadRule:{name:S6.$type,properties:{definition:{name:S6.definition},name:{name:S6.name}},superTypes:[]},RailroadSequenceExpr:{name:XV.$type,properties:{elements:{name:XV.elements,defaultValue:[]}},superTypes:[Lu.$type]},RailroadSpecialExpr:{name:KV.$type,properties:{text:{name:KV.text}},superTypes:[Lu.$type]},RailroadTerminalExpr:{name:ZV.$type,properties:{value:{name:ZV.value}},superTypes:[Lu.$type]},RailroadZeroOrMoreExpr:{name:QV.$type,properties:{element:{name:QV.element}},superTypes:[Lu.$type]},Section:{name:vz.$type,properties:{classSelector:{name:vz.classSelector},name:{name:vz.name}},superTypes:[mC.$type]},Service:{name:Z1.$type,properties:{icon:{name:Z1.icon},iconText:{name:Z1.iconText},id:{name:Z1.id},in:{name:Z1.in},title:{name:Z1.title}},superTypes:[]},Size:{name:xz.$type,properties:{height:{name:xz.height},width:{name:xz.width}},superTypes:[]},Statement:{name:xg.$type,properties:{},superTypes:[]},Transition:{name:gv.$type,properties:{from:{name:gv.from},label:{name:gv.label},to:{name:gv.to}},superTypes:[]},TreeNode:{name:bg.$type,properties:{classAnnotation:{name:bg.classAnnotation},descAnnotation:{name:bg.descAnnotation},iconAnnotation:{name:bg.iconAnnotation},indent:{name:bg.indent},name:{name:bg.name}},superTypes:[]},TreeView:{name:sv.$type,properties:{accDescr:{name:sv.accDescr},accTitle:{name:sv.accTitle},nodes:{name:sv.nodes,defaultValue:[]},title:{name:sv.title}},superTypes:[]},Treemap:{name:Gg.$type,properties:{accDescr:{name:Gg.accDescr},accTitle:{name:Gg.accTitle},title:{name:Gg.title},TreemapRows:{name:Gg.TreemapRows,defaultValue:[]}},superTypes:[]},TreemapRow:{name:bz.$type,properties:{indent:{name:bz.indent},item:{name:bz.item}},superTypes:[]},Wardley:{name:La.$type,properties:{accDescr:{name:La.accDescr},accelerators:{name:La.accelerators,defaultValue:[]},accTitle:{name:La.accTitle},anchors:{name:La.anchors,defaultValue:[]},annotation:{name:La.annotation,defaultValue:[]},annotations:{name:La.annotations,defaultValue:[]},components:{name:La.components,defaultValue:[]},deaccelerators:{name:La.deaccelerators,defaultValue:[]},evolution:{name:La.evolution},evolves:{name:La.evolves,defaultValue:[]},links:{name:La.links,defaultValue:[]},notes:{name:La.notes,defaultValue:[]},pipelines:{name:La.pipelines,defaultValue:[]},size:{name:La.size},title:{name:La.title}},superTypes:[]}}}static{E(this,"MermaidAstReflection")}},Fi=new jLe,$Et=E(()=>hwe??(hwe=Ma(`{"$type":"Grammar","isDeclared":true,"name":"ArchitectureGrammar","imports":[],"rules":[{"$type":"ParserRule","entry":true,"name":"Architecture","definition":{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@24"},"arguments":[],"cardinality":"*"},{"$type":"Keyword","value":"architecture-beta"},{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@24"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@14"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@1"},"arguments":[]}],"cardinality":"*"}]},"fragment":false,"parameters":[]},{"$type":"ParserRule","fragment":true,"name":"Statement","definition":{"$type":"Alternatives","elements":[{"$type":"Assignment","feature":"groups","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@5"},"arguments":[]}},{"$type":"Assignment","feature":"services","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@6"},"arguments":[]}},{"$type":"Assignment","feature":"junctions","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@7"},"arguments":[]}},{"$type":"Assignment","feature":"edges","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@8"},"arguments":[]}},{"$type":"Assignment","feature":"alignments","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@9"},"arguments":[]}}]},"entry":false,"parameters":[]},{"$type":"ParserRule","fragment":true,"name":"LeftPort","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":":"},{"$type":"Assignment","feature":"lhsDir","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@10"},"arguments":[]}}]},"entry":false,"parameters":[]},{"$type":"ParserRule","fragment":true,"name":"RightPort","definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"rhsDir","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@10"},"arguments":[]}},{"$type":"Keyword","value":":"}]},"entry":false,"parameters":[]},{"$type":"ParserRule","fragment":true,"name":"Arrow","definition":{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@2"},"arguments":[]},{"$type":"Assignment","feature":"lhsInto","operator":"?=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@12"},"arguments":[]},"cardinality":"?"},{"$type":"Alternatives","elements":[{"$type":"Keyword","value":"--"},{"$type":"Group","elements":[{"$type":"Keyword","value":"-"},{"$type":"Assignment","feature":"title","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@30"},"arguments":[]}},{"$type":"Keyword","value":"-"}]}]},{"$type":"Assignment","feature":"rhsInto","operator":"?=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@12"},"arguments":[]},"cardinality":"?"},{"$type":"RuleCall","rule":{"$ref":"#/rules@3"},"arguments":[]}]},"entry":false,"parameters":[]},{"$type":"ParserRule","name":"Group","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"group"},{"$type":"Assignment","feature":"id","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@23"},"arguments":[]}},{"$type":"Assignment","feature":"icon","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@29"},"arguments":[]},"cardinality":"?"},{"$type":"Assignment","feature":"title","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@30"},"arguments":[]},"cardinality":"?"},{"$type":"Group","elements":[{"$type":"Keyword","value":"in"},{"$type":"Assignment","feature":"in","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@23"},"arguments":[]}}],"cardinality":"?"},{"$type":"RuleCall","rule":{"$ref":"#/rules@13"},"arguments":[]}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"Service","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"service"},{"$type":"Assignment","feature":"id","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@23"},"arguments":[]}},{"$type":"Alternatives","elements":[{"$type":"Assignment","feature":"iconText","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@22"},"arguments":[]}},{"$type":"Assignment","feature":"icon","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@29"},"arguments":[]}}],"cardinality":"?"},{"$type":"Assignment","feature":"title","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@30"},"arguments":[]},"cardinality":"?"},{"$type":"Group","elements":[{"$type":"Keyword","value":"in"},{"$type":"Assignment","feature":"in","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@23"},"arguments":[]}}],"cardinality":"?"},{"$type":"RuleCall","rule":{"$ref":"#/rules@13"},"arguments":[]}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"Junction","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"junction"},{"$type":"Assignment","feature":"id","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@23"},"arguments":[]}},{"$type":"Group","elements":[{"$type":"Keyword","value":"in"},{"$type":"Assignment","feature":"in","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@23"},"arguments":[]}}],"cardinality":"?"},{"$type":"RuleCall","rule":{"$ref":"#/rules@13"},"arguments":[]}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"Edge","definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"lhsId","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@23"},"arguments":[]}},{"$type":"Assignment","feature":"lhsGroup","operator":"?=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@11"},"arguments":[]},"cardinality":"?"},{"$type":"RuleCall","rule":{"$ref":"#/rules@4"},"arguments":[]},{"$type":"Assignment","feature":"rhsId","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@23"},"arguments":[]}},{"$type":"Assignment","feature":"rhsGroup","operator":"?=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@11"},"arguments":[]},"cardinality":"?"},{"$type":"RuleCall","rule":{"$ref":"#/rules@13"},"arguments":[]}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"Alignment","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"align"},{"$type":"Assignment","feature":"direction","operator":"=","terminal":{"$type":"Alternatives","elements":[{"$type":"Keyword","value":"row"},{"$type":"Keyword","value":"column"}]}},{"$type":"Assignment","feature":"members","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@23"},"arguments":[]}},{"$type":"Assignment","feature":"members","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@23"},"arguments":[]},"cardinality":"+"},{"$type":"RuleCall","rule":{"$ref":"#/rules@13"},"arguments":[]}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"TerminalRule","name":"ARROW_DIRECTION","definition":{"$type":"TerminalAlternatives","elements":[{"$type":"TerminalAlternatives","elements":[{"$type":"TerminalAlternatives","elements":[{"$type":"CharacterRange","left":{"$type":"Keyword","value":"L"},"parenthesized":false},{"$type":"CharacterRange","left":{"$type":"Keyword","value":"R"},"parenthesized":false}],"parenthesized":false},{"$type":"CharacterRange","left":{"$type":"Keyword","value":"T"},"parenthesized":false}],"parenthesized":false},{"$type":"CharacterRange","left":{"$type":"Keyword","value":"B"},"parenthesized":false}],"parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ARROW_GROUP","definition":{"$type":"RegexToken","regex":"/\\\\{group\\\\}/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ARROW_INTO","definition":{"$type":"RegexToken","regex":"/<|>/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"ParserRule","name":"EOL","dataType":"string","definition":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@24"},"arguments":[],"cardinality":"+"},{"$type":"EndOfFile"}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","fragment":true,"name":"TitleAndAccessibilities","definition":{"$type":"Group","elements":[{"$type":"Alternatives","elements":[{"$type":"Assignment","feature":"accDescr","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@16"},"arguments":[]}},{"$type":"Assignment","feature":"accTitle","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}},{"$type":"Assignment","feature":"title","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@18"},"arguments":[]}}]},{"$type":"RuleCall","rule":{"$ref":"#/rules@13"},"arguments":[]}],"cardinality":"+"},"entry":false,"parameters":[]},{"$type":"TerminalRule","name":"BOOLEAN","type":{"$type":"ReturnType","name":"boolean"},"definition":{"$type":"TerminalAlternatives","elements":[{"$type":"CharacterRange","left":{"$type":"Keyword","value":"true"},"parenthesized":false},{"$type":"CharacterRange","left":{"$type":"Keyword","value":"false"},"parenthesized":false}],"parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ACC_DESCR","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*accDescr(?:[\\\\t ]*:([^\\\\n\\\\r]*?(?=%%)|[^\\\\n\\\\r]*)|\\\\s*{([^}]*)})/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ACC_TITLE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*accTitle[\\\\t ]*:(?:[^\\\\n\\\\r]*?(?=%%)|[^\\\\n\\\\r]*)/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"TITLE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*title(?:[\\\\t ][^\\\\n\\\\r]*?(?=%%)|[\\\\t ][^\\\\n\\\\r]*|)/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"FLOAT","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"RegexToken","regex":"/[0-9]+\\\\.[0-9]+(?!\\\\.)/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"INT","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"RegexToken","regex":"/0|[1-9][0-9]*(?!\\\\.)/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"NUMBER","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"TerminalAlternatives","elements":[{"$type":"TerminalRuleCall","rule":{"$ref":"#/rules@19"},"parenthesized":false},{"$type":"TerminalRuleCall","rule":{"$ref":"#/rules@20"},"parenthesized":false}],"parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"STRING","type":{"$type":"ReturnType","name":"string"},"definition":{"$type":"RegexToken","regex":"/\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\"|'([^'\\\\\\\\]|\\\\\\\\.)*'/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ID","type":{"$type":"ReturnType","name":"string"},"definition":{"$type":"RegexToken","regex":"/[\\\\w]([-\\\\w]*\\\\w)?/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"NEWLINE","definition":{"$type":"RegexToken","regex":"/\\\\r?\\\\n/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","hidden":true,"name":"WHITESPACE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]+/","parenthesized":false},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"YAML","definition":{"$type":"RegexToken","regex":"/---[\\\\t ]*\\\\r?\\\\n(?:[\\\\S\\\\s]*?\\\\r?\\\\n)?---(?:\\\\r?\\\\n|(?!\\\\S))/","parenthesized":false},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"DIRECTIVE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*%%{[\\\\S\\\\s]*?}%%(?:\\\\r?\\\\n|(?!\\\\S))/","parenthesized":false},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"SINGLE_LINE_COMMENT","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*%%[^\\\\n\\\\r]*/","parenthesized":false},"fragment":false},{"$type":"TerminalRule","name":"ARCH_ICON","definition":{"$type":"RegexToken","regex":"/\\\\([\\\\w-:]+\\\\)/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ARCH_TITLE","definition":{"$type":"RegexToken","regex":"/\\\\[(?:\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\"|'([^'\\\\\\\\]|\\\\\\\\.)*'|[\\\\w ]+)\\\\]/","parenthesized":false},"fragment":false,"hidden":false}],"interfaces":[],"types":[]}`)),"ArchitectureGrammarGrammar"),FEt=E(()=>dwe??(dwe=Ma(`{"$type":"Grammar","isDeclared":true,"name":"CynefinGrammar","imports":[],"rules":[{"$type":"ParserRule","entry":true,"name":"Cynefin","definition":{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@16"},"arguments":[],"cardinality":"*"},{"$type":"Alternatives","elements":[{"$type":"Keyword","value":"cynefin-beta"},{"$type":"Keyword","value":"cynefin-beta:"}]},{"$type":"RuleCall","rule":{"$ref":"#/rules@16"},"arguments":[],"cardinality":"*"},{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@6"},"arguments":[]},{"$type":"Assignment","feature":"domains","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@1"},"arguments":[]}},{"$type":"Assignment","feature":"transitions","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@3"},"arguments":[]}},{"$type":"RuleCall","rule":{"$ref":"#/rules@16"},"arguments":[]}],"cardinality":"*"}]},"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"DomainBlock","definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"domain","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@4"},"arguments":[]}},{"$type":"RuleCall","rule":{"$ref":"#/rules@16"},"arguments":[],"cardinality":"*"},{"$type":"Group","elements":[{"$type":"Assignment","feature":"items","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@2"},"arguments":[]}},{"$type":"RuleCall","rule":{"$ref":"#/rules@16"},"arguments":[],"cardinality":"*"}],"cardinality":"*"}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"DomainItem","definition":{"$type":"Assignment","feature":"label","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@14"},"arguments":[]}},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"Transition","definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"from","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@4"},"arguments":[]}},{"$type":"Keyword","value":"-->"},{"$type":"Assignment","feature":"to","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@4"},"arguments":[]}},{"$type":"Group","elements":[{"$type":"Keyword","value":":"},{"$type":"Assignment","feature":"label","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@14"},"arguments":[]}}],"cardinality":"?"},{"$type":"RuleCall","rule":{"$ref":"#/rules@5"},"arguments":[]}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"TerminalRule","name":"DOMAIN_NAME","type":{"$type":"ReturnType","name":"string"},"definition":{"$type":"TerminalAlternatives","elements":[{"$type":"TerminalAlternatives","elements":[{"$type":"TerminalAlternatives","elements":[{"$type":"TerminalAlternatives","elements":[{"$type":"CharacterRange","left":{"$type":"Keyword","value":"complex"},"parenthesized":false},{"$type":"CharacterRange","left":{"$type":"Keyword","value":"complicated"},"parenthesized":false}],"parenthesized":false},{"$type":"CharacterRange","left":{"$type":"Keyword","value":"clear"},"parenthesized":false}],"parenthesized":false},{"$type":"CharacterRange","left":{"$type":"Keyword","value":"chaotic"},"parenthesized":false}],"parenthesized":false},{"$type":"CharacterRange","left":{"$type":"Keyword","value":"confusion"},"parenthesized":false}],"parenthesized":false},"fragment":false,"hidden":false},{"$type":"ParserRule","name":"EOL","dataType":"string","definition":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@16"},"arguments":[],"cardinality":"+"},{"$type":"EndOfFile"}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","fragment":true,"name":"TitleAndAccessibilities","definition":{"$type":"Group","elements":[{"$type":"Alternatives","elements":[{"$type":"Assignment","feature":"accDescr","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@8"},"arguments":[]}},{"$type":"Assignment","feature":"accTitle","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@9"},"arguments":[]}},{"$type":"Assignment","feature":"title","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@10"},"arguments":[]}}]},{"$type":"RuleCall","rule":{"$ref":"#/rules@5"},"arguments":[]}],"cardinality":"+"},"entry":false,"parameters":[]},{"$type":"TerminalRule","name":"BOOLEAN","type":{"$type":"ReturnType","name":"boolean"},"definition":{"$type":"TerminalAlternatives","elements":[{"$type":"CharacterRange","left":{"$type":"Keyword","value":"true"},"parenthesized":false},{"$type":"CharacterRange","left":{"$type":"Keyword","value":"false"},"parenthesized":false}],"parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ACC_DESCR","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*accDescr(?:[\\\\t ]*:([^\\\\n\\\\r]*?(?=%%)|[^\\\\n\\\\r]*)|\\\\s*{([^}]*)})/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ACC_TITLE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*accTitle[\\\\t ]*:(?:[^\\\\n\\\\r]*?(?=%%)|[^\\\\n\\\\r]*)/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"TITLE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*title(?:[\\\\t ][^\\\\n\\\\r]*?(?=%%)|[\\\\t ][^\\\\n\\\\r]*|)/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"FLOAT","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"RegexToken","regex":"/[0-9]+\\\\.[0-9]+(?!\\\\.)/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"INT","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"RegexToken","regex":"/0|[1-9][0-9]*(?!\\\\.)/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"NUMBER","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"TerminalAlternatives","elements":[{"$type":"TerminalRuleCall","rule":{"$ref":"#/rules@11"},"parenthesized":false},{"$type":"TerminalRuleCall","rule":{"$ref":"#/rules@12"},"parenthesized":false}],"parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"STRING","type":{"$type":"ReturnType","name":"string"},"definition":{"$type":"RegexToken","regex":"/\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\"|'([^'\\\\\\\\]|\\\\\\\\.)*'/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ID","type":{"$type":"ReturnType","name":"string"},"definition":{"$type":"RegexToken","regex":"/[\\\\w]([-\\\\w]*\\\\w)?/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"NEWLINE","definition":{"$type":"RegexToken","regex":"/\\\\r?\\\\n/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","hidden":true,"name":"WHITESPACE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]+/","parenthesized":false},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"YAML","definition":{"$type":"RegexToken","regex":"/---[\\\\t ]*\\\\r?\\\\n(?:[\\\\S\\\\s]*?\\\\r?\\\\n)?---(?:\\\\r?\\\\n|(?!\\\\S))/","parenthesized":false},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"DIRECTIVE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*%%{[\\\\S\\\\s]*?}%%(?:\\\\r?\\\\n|(?!\\\\S))/","parenthesized":false},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"SINGLE_LINE_COMMENT","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*%%[^\\\\n\\\\r]*/","parenthesized":false},"fragment":false}],"interfaces":[],"types":[]}`)),"CynefinGrammarGrammar"),zEt=E(()=>fwe??(fwe=Ma('{"$type":"Grammar","isDeclared":true,"name":"EventModeling","interfaces":[{"$type":"Interface","name":"Common","attributes":[{"$type":"TypeAttribute","name":"accDescr","isOptional":true,"type":{"$type":"SimpleType","primitiveType":"string"}},{"$type":"TypeAttribute","name":"accTitle","isOptional":true,"type":{"$type":"SimpleType","primitiveType":"string"}},{"$type":"TypeAttribute","name":"title","isOptional":true,"type":{"$type":"SimpleType","primitiveType":"string"}}],"superTypes":[]}],"rules":[{"$type":"ParserRule","entry":true,"name":"EventModel","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"eventmodeling"},{"$type":"Alternatives","elements":[{"$type":"Assignment","feature":"accDescr","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@20"},"arguments":[]}},{"$type":"Assignment","feature":"accTitle","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@21"},"arguments":[]}},{"$type":"Assignment","feature":"title","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@22"},"arguments":[]}},{"$type":"Assignment","feature":"modelEntities","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@9"},"arguments":[]}},{"$type":"Assignment","feature":"frames","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@8"},"arguments":[]}},{"$type":"Assignment","feature":"dataEntities","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@10"},"arguments":[]}},{"$type":"Assignment","feature":"noteEntities","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@11"},"arguments":[]}},{"$type":"Assignment","feature":"gwtEntities","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@12"},"arguments":[]}}],"cardinality":"*"}]},"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"EmModelEntityType","dataType":"string","definition":{"$type":"Alternatives","elements":[{"$type":"Keyword","value":"rmo"},{"$type":"Keyword","value":"readmodel"},{"$type":"Keyword","value":"ui"},{"$type":"Keyword","value":"cmd"},{"$type":"Keyword","value":"command"},{"$type":"Keyword","value":"evt"},{"$type":"Keyword","value":"event"},{"$type":"Keyword","value":"pcr"},{"$type":"Keyword","value":"processor"}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"EmDataType","dataType":"string","definition":{"$type":"Alternatives","elements":[{"$type":"Keyword","value":"json"},{"$type":"Keyword","value":"jsobj"},{"$type":"Keyword","value":"figma"},{"$type":"Keyword","value":"salt"},{"$type":"Keyword","value":"uri"},{"$type":"Keyword","value":"md"},{"$type":"Keyword","value":"html"},{"$type":"Keyword","value":"text"}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","fragment":true,"name":"EmDataInline","definition":{"$type":"Group","elements":[{"$type":"Group","elements":[{"$type":"Keyword","value":"`"},{"$type":"Assignment","feature":"dataType","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@2"},"arguments":[]}},{"$type":"Keyword","value":"`"}],"cardinality":"?"},{"$type":"Assignment","feature":"dataInlineValue","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@18"},"arguments":[]}}]},"entry":false,"parameters":[]},{"$type":"ParserRule","fragment":true,"name":"EmDataBlock","definition":{"$type":"Group","elements":[{"$type":"Group","elements":[{"$type":"Keyword","value":"`"},{"$type":"Assignment","feature":"dataType","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@2"},"arguments":[]}},{"$type":"Keyword","value":"`"}],"cardinality":"?"},{"$type":"Assignment","feature":"dataBlockValue","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@19"},"arguments":[]}}]},"entry":false,"parameters":[]},{"$type":"ParserRule","name":"QualifiedName","dataType":"string","definition":{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@14"},"arguments":[]},{"$type":"Group","elements":[{"$type":"Keyword","value":"."},{"$type":"RuleCall","rule":{"$ref":"#/rules@14"},"arguments":[]}],"cardinality":"*"}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"EmTimeFrame","definition":{"$type":"Group","elements":[{"$type":"Alternatives","elements":[{"$type":"Keyword","value":"tf"},{"$type":"Keyword","value":"timeframe"}]},{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@15"},"arguments":[]}},{"$type":"Assignment","feature":"modelEntityType","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@1"},"arguments":[]}},{"$type":"Assignment","feature":"entityIdentifier","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@5"},"arguments":[]}},{"$type":"Group","elements":[{"$type":"Keyword","value":"->>"},{"$type":"Assignment","feature":"sourceFrames","operator":"+=","terminal":{"$type":"CrossReference","type":{"$ref":"#/rules@8"},"terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@15"},"arguments":[]},"deprecatedSyntax":false,"isMulti":false}}],"cardinality":"*"},{"$type":"Group","elements":[{"$type":"Keyword","value":"[["},{"$type":"Assignment","feature":"dataReference","operator":"=","terminal":{"$type":"CrossReference","type":{"$ref":"#/rules@10"},"terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@14"},"arguments":[]},"deprecatedSyntax":false,"isMulti":false}},{"$type":"Keyword","value":"]]"}],"cardinality":"?"},{"$type":"RuleCall","rule":{"$ref":"#/rules@3"},"arguments":[],"cardinality":"?"}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"EmResetFrame","definition":{"$type":"Group","elements":[{"$type":"Alternatives","elements":[{"$type":"Keyword","value":"rf"},{"$type":"Keyword","value":"resetframe"}]},{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@15"},"arguments":[]}},{"$type":"Assignment","feature":"modelEntityType","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@1"},"arguments":[]}},{"$type":"Assignment","feature":"entityIdentifier","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@5"},"arguments":[]}},{"$type":"Group","elements":[{"$type":"Keyword","value":"->>"},{"$type":"Assignment","feature":"sourceFrames","operator":"+=","terminal":{"$type":"CrossReference","type":{"$ref":"#/rules@8"},"terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@15"},"arguments":[]},"deprecatedSyntax":false,"isMulti":false}}],"cardinality":"*"},{"$type":"Group","elements":[{"$type":"Keyword","value":"[["},{"$type":"Assignment","feature":"dataReference","operator":"=","terminal":{"$type":"CrossReference","type":{"$ref":"#/rules@10"},"terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@14"},"arguments":[]},"deprecatedSyntax":false,"isMulti":false}},{"$type":"Keyword","value":"]]"}],"cardinality":"?"},{"$type":"RuleCall","rule":{"$ref":"#/rules@3"},"arguments":[],"cardinality":"?"}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"EmFrame","definition":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@6"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@7"},"arguments":[]}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"EmModelEntity","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"entity"},{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@5"},"arguments":[]}}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"EmDataEntity","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"data"},{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@14"},"arguments":[]}},{"$type":"RuleCall","rule":{"$ref":"#/rules@4"},"arguments":[]}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"EmNoteEntity","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"note"},{"$type":"Assignment","feature":"sourceFrame","operator":"=","terminal":{"$type":"CrossReference","type":{"$ref":"#/rules@8"},"terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@15"},"arguments":[]},"deprecatedSyntax":false,"isMulti":false}},{"$type":"RuleCall","rule":{"$ref":"#/rules@4"},"arguments":[]}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"EmGwt","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"gwt"},{"$type":"Assignment","feature":"sourceFrame","operator":"=","terminal":{"$type":"CrossReference","type":{"$ref":"#/rules@8"},"terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@15"},"arguments":[]},"deprecatedSyntax":false,"isMulti":false}},{"$type":"Keyword","value":"given"},{"$type":"Assignment","feature":"givenStatements","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@13"},"arguments":[]},"cardinality":"+"},{"$type":"Group","elements":[{"$type":"Keyword","value":"when"},{"$type":"Assignment","feature":"whenStatements","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@13"},"arguments":[]},"cardinality":"+"}],"cardinality":"?"},{"$type":"Keyword","value":"then"},{"$type":"Assignment","feature":"thenStatements","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@13"},"arguments":[]},"cardinality":"+"}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"EmGwtStatement","definition":{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@1"},"arguments":[]},{"$type":"Assignment","feature":"entityIdentifier","operator":"=","terminal":{"$type":"CrossReference","type":{"$ref":"#/rules@9"},"terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@14"},"arguments":[]},"deprecatedSyntax":false,"isMulti":false}}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"EM_EID","dataType":"string","definition":{"$type":"RuleCall","rule":{"$ref":"#/rules@16"},"arguments":[]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"EM_FI","dataType":"string","definition":{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]},"entry":false,"fragment":false,"parameters":[]},{"$type":"TerminalRule","name":"EM_ID","definition":{"$type":"RegexToken","regex":"/[_a-zA-Z][\\\\w_]*/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"EM_FID","definition":{"$type":"RegexToken","regex":"/\\\\d{1,3}/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"EM_DATA_INLINE","definition":{"$type":"RegexToken","regex":"/\\\\{(.*)\\\\}|\\"(.*)\\"|\'(.*)\'/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"EM_DATA_BLOCK","definition":{"$type":"RegexToken","regex":"/\\\\{[\\\\t ]*\\\\r?\\\\n(?:[\\\\S\\\\s]*?\\\\r?\\\\n)?\\\\}(?:\\\\r?\\\\n|(?!\\\\S))/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"EM_ACC_DESCR","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*accDescr(?:[\\\\t ]*:([^\\\\n\\\\r]*?(?=%%)|[^\\\\n\\\\r]*)|\\\\s*{([^}]*)})/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"EM_ACC_TITLE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*accTitle[\\\\t ]*:(?:[^\\\\n\\\\r]*?(?=%%)|[^\\\\n\\\\r]*)/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"EM_TITLE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*title(?:[\\\\t ][^\\\\n\\\\r]*?(?=%%)|[\\\\t ][^\\\\n\\\\r]*|)/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","hidden":true,"name":"EM_WS","definition":{"$type":"RegexToken","regex":"/\\\\s+/","parenthesized":false},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"EM_YAML","definition":{"$type":"RegexToken","regex":"/---[\\\\t ]*\\\\r?\\\\n(?:[\\\\S\\\\s]*?\\\\r?\\\\n)?---(?:\\\\r?\\\\n|(?!\\\\S))/","parenthesized":false},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"EM_DIRECTIVE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*%%{[\\\\S\\\\s]*?}%%(?:\\\\r?\\\\n|(?!\\\\S))/","parenthesized":false},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"EM_SINGLE_LINE_COMMENT","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*%%[^\\\\n\\\\r]*/","parenthesized":false},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"EM_ML_COMMENT","definition":{"$type":"RegexToken","regex":"/\\\\/\\\\*[\\\\s\\\\S]*?\\\\*\\\\//","parenthesized":false},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"EM_SL_COMMENT","definition":{"$type":"RegexToken","regex":"/\\\\/\\\\/[^\\\\n\\\\r]*/","parenthesized":false},"fragment":false}],"imports":[],"types":[]}')),"EventModelingGrammar"),GEt=E(()=>pwe??(pwe=Ma(`{"$type":"Grammar","isDeclared":true,"name":"GitGraphGrammar","imports":[],"rules":[{"$type":"ParserRule","entry":true,"name":"GitGraph","definition":{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@19"},"arguments":[],"cardinality":"*"},{"$type":"Alternatives","elements":[{"$type":"Keyword","value":"gitGraph"},{"$type":"Group","elements":[{"$type":"Keyword","value":"gitGraph"},{"$type":"Keyword","value":":"}]},{"$type":"Keyword","value":"gitGraph:"},{"$type":"Group","elements":[{"$type":"Keyword","value":"gitGraph"},{"$type":"RuleCall","rule":{"$ref":"#/rules@2"},"arguments":[]},{"$type":"Keyword","value":":"}]}]},{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@19"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@9"},"arguments":[]},{"$type":"Assignment","feature":"statements","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@1"},"arguments":[]}}],"cardinality":"*"}]},"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"Statement","definition":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@3"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@4"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@5"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@6"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@7"},"arguments":[]}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"Direction","definition":{"$type":"Assignment","feature":"dir","operator":"=","terminal":{"$type":"Alternatives","elements":[{"$type":"Keyword","value":"LR"},{"$type":"Keyword","value":"TB"},{"$type":"Keyword","value":"BT"}]}},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"Commit","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"commit"},{"$type":"Alternatives","elements":[{"$type":"Group","elements":[{"$type":"Keyword","value":"id:"},{"$type":"Assignment","feature":"id","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}}]},{"$type":"Group","elements":[{"$type":"Keyword","value":"msg:","cardinality":"?"},{"$type":"Assignment","feature":"message","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}}]},{"$type":"Group","elements":[{"$type":"Keyword","value":"tag:"},{"$type":"Assignment","feature":"tags","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}}]},{"$type":"Group","elements":[{"$type":"Keyword","value":"type:"},{"$type":"Assignment","feature":"type","operator":"=","terminal":{"$type":"Alternatives","elements":[{"$type":"Keyword","value":"NORMAL"},{"$type":"Keyword","value":"REVERSE"},{"$type":"Keyword","value":"HIGHLIGHT"}]}}]}],"cardinality":"*"},{"$type":"RuleCall","rule":{"$ref":"#/rules@8"},"arguments":[]}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"Branch","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"branch"},{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@24"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}]}},{"$type":"Group","elements":[{"$type":"Keyword","value":"order:"},{"$type":"Assignment","feature":"order","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@15"},"arguments":[]}}],"cardinality":"?"},{"$type":"RuleCall","rule":{"$ref":"#/rules@8"},"arguments":[]}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"Merge","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"merge"},{"$type":"Assignment","feature":"branch","operator":"=","terminal":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@24"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}]}},{"$type":"Alternatives","elements":[{"$type":"Group","elements":[{"$type":"Keyword","value":"id:"},{"$type":"Assignment","feature":"id","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}}]},{"$type":"Group","elements":[{"$type":"Keyword","value":"tag:"},{"$type":"Assignment","feature":"tags","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}}]},{"$type":"Group","elements":[{"$type":"Keyword","value":"type:"},{"$type":"Assignment","feature":"type","operator":"=","terminal":{"$type":"Alternatives","elements":[{"$type":"Keyword","value":"NORMAL"},{"$type":"Keyword","value":"REVERSE"},{"$type":"Keyword","value":"HIGHLIGHT"}]}}]}],"cardinality":"*"},{"$type":"RuleCall","rule":{"$ref":"#/rules@8"},"arguments":[]}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"Checkout","definition":{"$type":"Group","elements":[{"$type":"Alternatives","elements":[{"$type":"Keyword","value":"checkout"},{"$type":"Keyword","value":"switch"}]},{"$type":"Assignment","feature":"branch","operator":"=","terminal":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@24"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}]}},{"$type":"RuleCall","rule":{"$ref":"#/rules@8"},"arguments":[]}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"CherryPicking","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"cherry-pick"},{"$type":"Alternatives","elements":[{"$type":"Group","elements":[{"$type":"Keyword","value":"id:"},{"$type":"Assignment","feature":"id","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}}]},{"$type":"Group","elements":[{"$type":"Keyword","value":"tag:"},{"$type":"Assignment","feature":"tags","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}}]},{"$type":"Group","elements":[{"$type":"Keyword","value":"parent:"},{"$type":"Assignment","feature":"parent","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}}]}],"cardinality":"*"},{"$type":"RuleCall","rule":{"$ref":"#/rules@8"},"arguments":[]}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"EOL","dataType":"string","definition":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@19"},"arguments":[],"cardinality":"+"},{"$type":"EndOfFile"}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","fragment":true,"name":"TitleAndAccessibilities","definition":{"$type":"Group","elements":[{"$type":"Alternatives","elements":[{"$type":"Assignment","feature":"accDescr","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@11"},"arguments":[]}},{"$type":"Assignment","feature":"accTitle","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@12"},"arguments":[]}},{"$type":"Assignment","feature":"title","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@13"},"arguments":[]}}]},{"$type":"RuleCall","rule":{"$ref":"#/rules@8"},"arguments":[]}],"cardinality":"+"},"entry":false,"parameters":[]},{"$type":"TerminalRule","name":"BOOLEAN","type":{"$type":"ReturnType","name":"boolean"},"definition":{"$type":"TerminalAlternatives","elements":[{"$type":"CharacterRange","left":{"$type":"Keyword","value":"true"},"parenthesized":false},{"$type":"CharacterRange","left":{"$type":"Keyword","value":"false"},"parenthesized":false}],"parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ACC_DESCR","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*accDescr(?:[\\\\t ]*:([^\\\\n\\\\r]*?(?=%%)|[^\\\\n\\\\r]*)|\\\\s*{([^}]*)})/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ACC_TITLE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*accTitle[\\\\t ]*:(?:[^\\\\n\\\\r]*?(?=%%)|[^\\\\n\\\\r]*)/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"TITLE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*title(?:[\\\\t ][^\\\\n\\\\r]*?(?=%%)|[\\\\t ][^\\\\n\\\\r]*|)/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"FLOAT","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"RegexToken","regex":"/[0-9]+\\\\.[0-9]+(?!\\\\.)/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"INT","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"RegexToken","regex":"/0|[1-9][0-9]*(?!\\\\.)/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"NUMBER","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"TerminalAlternatives","elements":[{"$type":"TerminalRuleCall","rule":{"$ref":"#/rules@14"},"parenthesized":false},{"$type":"TerminalRuleCall","rule":{"$ref":"#/rules@15"},"parenthesized":false}],"parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"STRING","type":{"$type":"ReturnType","name":"string"},"definition":{"$type":"RegexToken","regex":"/\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\"|'([^'\\\\\\\\]|\\\\\\\\.)*'/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ID","type":{"$type":"ReturnType","name":"string"},"definition":{"$type":"RegexToken","regex":"/[\\\\w]([-\\\\w]*\\\\w)?/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"NEWLINE","definition":{"$type":"RegexToken","regex":"/\\\\r?\\\\n/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","hidden":true,"name":"WHITESPACE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]+/","parenthesized":false},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"YAML","definition":{"$type":"RegexToken","regex":"/---[\\\\t ]*\\\\r?\\\\n(?:[\\\\S\\\\s]*?\\\\r?\\\\n)?---(?:\\\\r?\\\\n|(?!\\\\S))/","parenthesized":false},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"DIRECTIVE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*%%{[\\\\S\\\\s]*?}%%(?:\\\\r?\\\\n|(?!\\\\S))/","parenthesized":false},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"SINGLE_LINE_COMMENT","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*%%[^\\\\n\\\\r]*/","parenthesized":false},"fragment":false},{"$type":"TerminalRule","name":"REFERENCE","type":{"$type":"ReturnType","name":"string"},"definition":{"$type":"RegexToken","regex":"/\\\\w([-\\\\./\\\\w]*[-\\\\w])?/","parenthesized":false},"fragment":false,"hidden":false}],"interfaces":[],"types":[]}`)),"GitGraphGrammarGrammar"),VEt=E(()=>mwe??(mwe=Ma(`{"$type":"Grammar","isDeclared":true,"name":"InfoGrammar","imports":[],"rules":[{"$type":"ParserRule","entry":true,"name":"Info","definition":{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@12"},"arguments":[],"cardinality":"*"},{"$type":"Keyword","value":"info"},{"$type":"RuleCall","rule":{"$ref":"#/rules@12"},"arguments":[],"cardinality":"*"},{"$type":"Group","elements":[{"$type":"Keyword","value":"showInfo"},{"$type":"RuleCall","rule":{"$ref":"#/rules@12"},"arguments":[],"cardinality":"*"}],"cardinality":"?"},{"$type":"RuleCall","rule":{"$ref":"#/rules@2"},"arguments":[],"cardinality":"?"}]},"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"EOL","dataType":"string","definition":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@12"},"arguments":[],"cardinality":"+"},{"$type":"EndOfFile"}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","fragment":true,"name":"TitleAndAccessibilities","definition":{"$type":"Group","elements":[{"$type":"Alternatives","elements":[{"$type":"Assignment","feature":"accDescr","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@4"},"arguments":[]}},{"$type":"Assignment","feature":"accTitle","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@5"},"arguments":[]}},{"$type":"Assignment","feature":"title","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@6"},"arguments":[]}}]},{"$type":"RuleCall","rule":{"$ref":"#/rules@1"},"arguments":[]}],"cardinality":"+"},"entry":false,"parameters":[]},{"$type":"TerminalRule","name":"BOOLEAN","type":{"$type":"ReturnType","name":"boolean"},"definition":{"$type":"TerminalAlternatives","elements":[{"$type":"CharacterRange","left":{"$type":"Keyword","value":"true"},"parenthesized":false},{"$type":"CharacterRange","left":{"$type":"Keyword","value":"false"},"parenthesized":false}],"parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ACC_DESCR","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*accDescr(?:[\\\\t ]*:([^\\\\n\\\\r]*?(?=%%)|[^\\\\n\\\\r]*)|\\\\s*{([^}]*)})/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ACC_TITLE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*accTitle[\\\\t ]*:(?:[^\\\\n\\\\r]*?(?=%%)|[^\\\\n\\\\r]*)/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"TITLE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*title(?:[\\\\t ][^\\\\n\\\\r]*?(?=%%)|[\\\\t ][^\\\\n\\\\r]*|)/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"FLOAT","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"RegexToken","regex":"/[0-9]+\\\\.[0-9]+(?!\\\\.)/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"INT","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"RegexToken","regex":"/0|[1-9][0-9]*(?!\\\\.)/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"NUMBER","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"TerminalAlternatives","elements":[{"$type":"TerminalRuleCall","rule":{"$ref":"#/rules@7"},"parenthesized":false},{"$type":"TerminalRuleCall","rule":{"$ref":"#/rules@8"},"parenthesized":false}],"parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"STRING","type":{"$type":"ReturnType","name":"string"},"definition":{"$type":"RegexToken","regex":"/\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\"|'([^'\\\\\\\\]|\\\\\\\\.)*'/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ID","type":{"$type":"ReturnType","name":"string"},"definition":{"$type":"RegexToken","regex":"/[\\\\w]([-\\\\w]*\\\\w)?/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"NEWLINE","definition":{"$type":"RegexToken","regex":"/\\\\r?\\\\n/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","hidden":true,"name":"WHITESPACE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]+/","parenthesized":false},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"YAML","definition":{"$type":"RegexToken","regex":"/---[\\\\t ]*\\\\r?\\\\n(?:[\\\\S\\\\s]*?\\\\r?\\\\n)?---(?:\\\\r?\\\\n|(?!\\\\S))/","parenthesized":false},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"DIRECTIVE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*%%{[\\\\S\\\\s]*?}%%(?:\\\\r?\\\\n|(?!\\\\S))/","parenthesized":false},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"SINGLE_LINE_COMMENT","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*%%[^\\\\n\\\\r]*/","parenthesized":false},"fragment":false}],"interfaces":[],"types":[]}`)),"InfoGrammarGrammar"),WEt=E(()=>gwe??(gwe=Ma(`{"$type":"Grammar","isDeclared":true,"name":"PacketGrammar","imports":[],"rules":[{"$type":"ParserRule","entry":true,"name":"Packet","definition":{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@13"},"arguments":[],"cardinality":"*"},{"$type":"Alternatives","elements":[{"$type":"Keyword","value":"packet"},{"$type":"Keyword","value":"packet-beta"}]},{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@3"},"arguments":[]},{"$type":"Assignment","feature":"blocks","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@1"},"arguments":[]}},{"$type":"RuleCall","rule":{"$ref":"#/rules@13"},"arguments":[]}],"cardinality":"*"}]},"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"PacketBlock","definition":{"$type":"Group","elements":[{"$type":"Alternatives","elements":[{"$type":"Group","elements":[{"$type":"Assignment","feature":"start","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@9"},"arguments":[]}},{"$type":"Group","elements":[{"$type":"Keyword","value":"-"},{"$type":"Assignment","feature":"end","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@9"},"arguments":[]}}],"cardinality":"?"}]},{"$type":"Group","elements":[{"$type":"Keyword","value":"+"},{"$type":"Assignment","feature":"bits","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@9"},"arguments":[]}}]}]},{"$type":"Keyword","value":":"},{"$type":"Assignment","feature":"label","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@11"},"arguments":[]}},{"$type":"RuleCall","rule":{"$ref":"#/rules@2"},"arguments":[]}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"EOL","dataType":"string","definition":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@13"},"arguments":[],"cardinality":"+"},{"$type":"EndOfFile"}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","fragment":true,"name":"TitleAndAccessibilities","definition":{"$type":"Group","elements":[{"$type":"Alternatives","elements":[{"$type":"Assignment","feature":"accDescr","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@5"},"arguments":[]}},{"$type":"Assignment","feature":"accTitle","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@6"},"arguments":[]}},{"$type":"Assignment","feature":"title","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@7"},"arguments":[]}}]},{"$type":"RuleCall","rule":{"$ref":"#/rules@2"},"arguments":[]}],"cardinality":"+"},"entry":false,"parameters":[]},{"$type":"TerminalRule","name":"BOOLEAN","type":{"$type":"ReturnType","name":"boolean"},"definition":{"$type":"TerminalAlternatives","elements":[{"$type":"CharacterRange","left":{"$type":"Keyword","value":"true"},"parenthesized":false},{"$type":"CharacterRange","left":{"$type":"Keyword","value":"false"},"parenthesized":false}],"parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ACC_DESCR","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*accDescr(?:[\\\\t ]*:([^\\\\n\\\\r]*?(?=%%)|[^\\\\n\\\\r]*)|\\\\s*{([^}]*)})/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ACC_TITLE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*accTitle[\\\\t ]*:(?:[^\\\\n\\\\r]*?(?=%%)|[^\\\\n\\\\r]*)/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"TITLE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*title(?:[\\\\t ][^\\\\n\\\\r]*?(?=%%)|[\\\\t ][^\\\\n\\\\r]*|)/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"FLOAT","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"RegexToken","regex":"/[0-9]+\\\\.[0-9]+(?!\\\\.)/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"INT","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"RegexToken","regex":"/0|[1-9][0-9]*(?!\\\\.)/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"NUMBER","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"TerminalAlternatives","elements":[{"$type":"TerminalRuleCall","rule":{"$ref":"#/rules@8"},"parenthesized":false},{"$type":"TerminalRuleCall","rule":{"$ref":"#/rules@9"},"parenthesized":false}],"parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"STRING","type":{"$type":"ReturnType","name":"string"},"definition":{"$type":"RegexToken","regex":"/\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\"|'([^'\\\\\\\\]|\\\\\\\\.)*'/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ID","type":{"$type":"ReturnType","name":"string"},"definition":{"$type":"RegexToken","regex":"/[\\\\w]([-\\\\w]*\\\\w)?/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"NEWLINE","definition":{"$type":"RegexToken","regex":"/\\\\r?\\\\n/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","hidden":true,"name":"WHITESPACE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]+/","parenthesized":false},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"YAML","definition":{"$type":"RegexToken","regex":"/---[\\\\t ]*\\\\r?\\\\n(?:[\\\\S\\\\s]*?\\\\r?\\\\n)?---(?:\\\\r?\\\\n|(?!\\\\S))/","parenthesized":false},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"DIRECTIVE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*%%{[\\\\S\\\\s]*?}%%(?:\\\\r?\\\\n|(?!\\\\S))/","parenthesized":false},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"SINGLE_LINE_COMMENT","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*%%[^\\\\n\\\\r]*/","parenthesized":false},"fragment":false}],"interfaces":[],"types":[]}`)),"PacketGrammarGrammar"),qEt=E(()=>ywe??(ywe=Ma(`{"$type":"Grammar","isDeclared":true,"name":"PieGrammar","imports":[],"rules":[{"$type":"ParserRule","entry":true,"name":"Pie","definition":{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@16"},"arguments":[],"cardinality":"*"},{"$type":"Keyword","value":"pie"},{"$type":"Assignment","feature":"showData","operator":"?=","terminal":{"$type":"Keyword","value":"showData"},"cardinality":"?"},{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@6"},"arguments":[]},{"$type":"Assignment","feature":"sections","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@1"},"arguments":[]}},{"$type":"RuleCall","rule":{"$ref":"#/rules@16"},"arguments":[]}],"cardinality":"*"}]},"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"PieSection","definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"label","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@14"},"arguments":[]}},{"$type":"Keyword","value":":"},{"$type":"Assignment","feature":"value","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@4"},"arguments":[]}},{"$type":"RuleCall","rule":{"$ref":"#/rules@5"},"arguments":[]}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"TerminalRule","name":"FLOAT_PIE","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"RegexToken","regex":"/-?[0-9]+\\\\.[0-9]+(?!\\\\.)/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"INT_PIE","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"RegexToken","regex":"/-?(0|[1-9][0-9]*)(?!\\\\.)/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"NUMBER_PIE","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"TerminalAlternatives","elements":[{"$type":"TerminalRuleCall","rule":{"$ref":"#/rules@2"},"parenthesized":false},{"$type":"TerminalRuleCall","rule":{"$ref":"#/rules@3"},"parenthesized":false}],"parenthesized":false},"fragment":false,"hidden":false},{"$type":"ParserRule","name":"EOL","dataType":"string","definition":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@16"},"arguments":[],"cardinality":"+"},{"$type":"EndOfFile"}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","fragment":true,"name":"TitleAndAccessibilities","definition":{"$type":"Group","elements":[{"$type":"Alternatives","elements":[{"$type":"Assignment","feature":"accDescr","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@8"},"arguments":[]}},{"$type":"Assignment","feature":"accTitle","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@9"},"arguments":[]}},{"$type":"Assignment","feature":"title","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@10"},"arguments":[]}}]},{"$type":"RuleCall","rule":{"$ref":"#/rules@5"},"arguments":[]}],"cardinality":"+"},"entry":false,"parameters":[]},{"$type":"TerminalRule","name":"BOOLEAN","type":{"$type":"ReturnType","name":"boolean"},"definition":{"$type":"TerminalAlternatives","elements":[{"$type":"CharacterRange","left":{"$type":"Keyword","value":"true"},"parenthesized":false},{"$type":"CharacterRange","left":{"$type":"Keyword","value":"false"},"parenthesized":false}],"parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ACC_DESCR","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*accDescr(?:[\\\\t ]*:([^\\\\n\\\\r]*?(?=%%)|[^\\\\n\\\\r]*)|\\\\s*{([^}]*)})/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ACC_TITLE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*accTitle[\\\\t ]*:(?:[^\\\\n\\\\r]*?(?=%%)|[^\\\\n\\\\r]*)/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"TITLE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*title(?:[\\\\t ][^\\\\n\\\\r]*?(?=%%)|[\\\\t ][^\\\\n\\\\r]*|)/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"FLOAT","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"RegexToken","regex":"/[0-9]+\\\\.[0-9]+(?!\\\\.)/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"INT","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"RegexToken","regex":"/0|[1-9][0-9]*(?!\\\\.)/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"NUMBER","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"TerminalAlternatives","elements":[{"$type":"TerminalRuleCall","rule":{"$ref":"#/rules@11"},"parenthesized":false},{"$type":"TerminalRuleCall","rule":{"$ref":"#/rules@12"},"parenthesized":false}],"parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"STRING","type":{"$type":"ReturnType","name":"string"},"definition":{"$type":"RegexToken","regex":"/\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\"|'([^'\\\\\\\\]|\\\\\\\\.)*'/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ID","type":{"$type":"ReturnType","name":"string"},"definition":{"$type":"RegexToken","regex":"/[\\\\w]([-\\\\w]*\\\\w)?/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"NEWLINE","definition":{"$type":"RegexToken","regex":"/\\\\r?\\\\n/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","hidden":true,"name":"WHITESPACE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]+/","parenthesized":false},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"YAML","definition":{"$type":"RegexToken","regex":"/---[\\\\t ]*\\\\r?\\\\n(?:[\\\\S\\\\s]*?\\\\r?\\\\n)?---(?:\\\\r?\\\\n|(?!\\\\S))/","parenthesized":false},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"DIRECTIVE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*%%{[\\\\S\\\\s]*?}%%(?:\\\\r?\\\\n|(?!\\\\S))/","parenthesized":false},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"SINGLE_LINE_COMMENT","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*%%[^\\\\n\\\\r]*/","parenthesized":false},"fragment":false}],"interfaces":[],"types":[]}`)),"PieGrammarGrammar"),HEt=E(()=>vwe??(vwe=Ma(`{"$type":"Grammar","isDeclared":true,"name":"RadarGrammar","imports":[],"rules":[{"$type":"ParserRule","entry":true,"name":"Radar","definition":{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@20"},"arguments":[],"cardinality":"*"},{"$type":"Alternatives","elements":[{"$type":"Keyword","value":"radar-beta"},{"$type":"Keyword","value":"radar-beta:"},{"$type":"Group","elements":[{"$type":"Keyword","value":"radar-beta"},{"$type":"Keyword","value":":"}]}]},{"$type":"RuleCall","rule":{"$ref":"#/rules@20"},"arguments":[],"cardinality":"*"},{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@10"},"arguments":[]},{"$type":"Group","elements":[{"$type":"Keyword","value":"axis"},{"$type":"Assignment","feature":"axes","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@2"},"arguments":[]}},{"$type":"Group","elements":[{"$type":"Keyword","value":","},{"$type":"Assignment","feature":"axes","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@2"},"arguments":[]}}],"cardinality":"*"}]},{"$type":"Group","elements":[{"$type":"Keyword","value":"curve"},{"$type":"Assignment","feature":"curves","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@3"},"arguments":[]}},{"$type":"Group","elements":[{"$type":"Keyword","value":","},{"$type":"Assignment","feature":"curves","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@3"},"arguments":[]}}],"cardinality":"*"}]},{"$type":"Group","elements":[{"$type":"Assignment","feature":"options","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@7"},"arguments":[]}},{"$type":"Group","elements":[{"$type":"Keyword","value":","},{"$type":"Assignment","feature":"options","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@7"},"arguments":[]}}],"cardinality":"*"}]},{"$type":"RuleCall","rule":{"$ref":"#/rules@20"},"arguments":[]}],"cardinality":"*"}]},"fragment":false,"parameters":[]},{"$type":"ParserRule","fragment":true,"name":"Label","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"["},{"$type":"Assignment","feature":"label","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@18"},"arguments":[]}},{"$type":"Keyword","value":"]"}]},"entry":false,"parameters":[]},{"$type":"ParserRule","name":"Axis","definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@19"},"arguments":[]}},{"$type":"RuleCall","rule":{"$ref":"#/rules@1"},"arguments":[],"cardinality":"?"}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"Curve","definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@19"},"arguments":[]}},{"$type":"RuleCall","rule":{"$ref":"#/rules@1"},"arguments":[],"cardinality":"?"},{"$type":"Keyword","value":"{"},{"$type":"RuleCall","rule":{"$ref":"#/rules@4"},"arguments":[]},{"$type":"Keyword","value":"}"}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","fragment":true,"name":"Entries","definition":{"$type":"Alternatives","elements":[{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@20"},"arguments":[],"cardinality":"*"},{"$type":"Assignment","feature":"entries","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@6"},"arguments":[]}},{"$type":"Group","elements":[{"$type":"Keyword","value":","},{"$type":"RuleCall","rule":{"$ref":"#/rules@20"},"arguments":[],"cardinality":"*"},{"$type":"Assignment","feature":"entries","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@6"},"arguments":[]}}],"cardinality":"*"},{"$type":"RuleCall","rule":{"$ref":"#/rules@20"},"arguments":[],"cardinality":"*"}]},{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@20"},"arguments":[],"cardinality":"*"},{"$type":"Assignment","feature":"entries","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@5"},"arguments":[]}},{"$type":"Group","elements":[{"$type":"Keyword","value":","},{"$type":"RuleCall","rule":{"$ref":"#/rules@20"},"arguments":[],"cardinality":"*"},{"$type":"Assignment","feature":"entries","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@5"},"arguments":[]}}],"cardinality":"*"},{"$type":"RuleCall","rule":{"$ref":"#/rules@20"},"arguments":[],"cardinality":"*"}]}]},"entry":false,"parameters":[]},{"$type":"ParserRule","name":"DetailedEntry","returnType":{"$ref":"#/interfaces@0"},"definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"axis","operator":"=","terminal":{"$type":"CrossReference","type":{"$ref":"#/rules@2"},"terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@19"},"arguments":[]},"deprecatedSyntax":false,"isMulti":false}},{"$type":"Keyword","value":":","cardinality":"?"},{"$type":"Assignment","feature":"value","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"NumberEntry","returnType":{"$ref":"#/interfaces@0"},"definition":{"$type":"Assignment","feature":"value","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"Option","definition":{"$type":"Alternatives","elements":[{"$type":"Group","elements":[{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"Keyword","value":"showLegend"}},{"$type":"Assignment","feature":"value","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@11"},"arguments":[]}}]},{"$type":"Group","elements":[{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"Keyword","value":"ticks"}},{"$type":"Assignment","feature":"value","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}}]},{"$type":"Group","elements":[{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"Keyword","value":"max"}},{"$type":"Assignment","feature":"value","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}}]},{"$type":"Group","elements":[{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"Keyword","value":"min"}},{"$type":"Assignment","feature":"value","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}}]},{"$type":"Group","elements":[{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"Keyword","value":"graticule"}},{"$type":"Assignment","feature":"value","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@8"},"arguments":[]}}]}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"TerminalRule","name":"GRATICULE","type":{"$type":"ReturnType","name":"string"},"definition":{"$type":"TerminalAlternatives","elements":[{"$type":"CharacterRange","left":{"$type":"Keyword","value":"circle"},"parenthesized":false},{"$type":"CharacterRange","left":{"$type":"Keyword","value":"polygon"},"parenthesized":false}],"parenthesized":false},"fragment":false,"hidden":false},{"$type":"ParserRule","name":"EOL","dataType":"string","definition":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@20"},"arguments":[],"cardinality":"+"},{"$type":"EndOfFile"}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","fragment":true,"name":"TitleAndAccessibilities","definition":{"$type":"Group","elements":[{"$type":"Alternatives","elements":[{"$type":"Assignment","feature":"accDescr","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@12"},"arguments":[]}},{"$type":"Assignment","feature":"accTitle","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@13"},"arguments":[]}},{"$type":"Assignment","feature":"title","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@14"},"arguments":[]}}]},{"$type":"RuleCall","rule":{"$ref":"#/rules@9"},"arguments":[]}],"cardinality":"+"},"entry":false,"parameters":[]},{"$type":"TerminalRule","name":"BOOLEAN","type":{"$type":"ReturnType","name":"boolean"},"definition":{"$type":"TerminalAlternatives","elements":[{"$type":"CharacterRange","left":{"$type":"Keyword","value":"true"},"parenthesized":false},{"$type":"CharacterRange","left":{"$type":"Keyword","value":"false"},"parenthesized":false}],"parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ACC_DESCR","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*accDescr(?:[\\\\t ]*:([^\\\\n\\\\r]*?(?=%%)|[^\\\\n\\\\r]*)|\\\\s*{([^}]*)})/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ACC_TITLE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*accTitle[\\\\t ]*:(?:[^\\\\n\\\\r]*?(?=%%)|[^\\\\n\\\\r]*)/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"TITLE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*title(?:[\\\\t ][^\\\\n\\\\r]*?(?=%%)|[\\\\t ][^\\\\n\\\\r]*|)/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"FLOAT","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"RegexToken","regex":"/[0-9]+\\\\.[0-9]+(?!\\\\.)/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"INT","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"RegexToken","regex":"/0|[1-9][0-9]*(?!\\\\.)/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"NUMBER","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"TerminalAlternatives","elements":[{"$type":"TerminalRuleCall","rule":{"$ref":"#/rules@15"},"parenthesized":false},{"$type":"TerminalRuleCall","rule":{"$ref":"#/rules@16"},"parenthesized":false}],"parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"STRING","type":{"$type":"ReturnType","name":"string"},"definition":{"$type":"RegexToken","regex":"/\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\"|'([^'\\\\\\\\]|\\\\\\\\.)*'/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ID","type":{"$type":"ReturnType","name":"string"},"definition":{"$type":"RegexToken","regex":"/[\\\\w]([-\\\\w]*\\\\w)?/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"NEWLINE","definition":{"$type":"RegexToken","regex":"/\\\\r?\\\\n/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","hidden":true,"name":"WHITESPACE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]+/","parenthesized":false},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"YAML","definition":{"$type":"RegexToken","regex":"/---[\\\\t ]*\\\\r?\\\\n(?:[\\\\S\\\\s]*?\\\\r?\\\\n)?---(?:\\\\r?\\\\n|(?!\\\\S))/","parenthesized":false},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"DIRECTIVE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*%%{[\\\\S\\\\s]*?}%%(?:\\\\r?\\\\n|(?!\\\\S))/","parenthesized":false},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"SINGLE_LINE_COMMENT","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*%%[^\\\\n\\\\r]*/","parenthesized":false},"fragment":false}],"interfaces":[{"$type":"Interface","name":"Entry","attributes":[{"$type":"TypeAttribute","name":"axis","isOptional":true,"type":{"$type":"ReferenceType","referenceType":{"$type":"SimpleType","typeRef":{"$ref":"#/rules@2"}},"isMulti":false}},{"$type":"TypeAttribute","name":"value","type":{"$type":"SimpleType","primitiveType":"number"},"isOptional":false}],"superTypes":[]}],"types":[]}`)),"RadarGrammarGrammar"),UEt=E(()=>xwe??(xwe=Ma('{"$type":"Grammar","isDeclared":true,"name":"RailroadAbnfGrammar","rules":[{"$type":"TerminalRule","name":"TITLE","definition":{"$type":"RegexToken","regex":"/title(?:[\\\\t ][^\\\\n\\\\r]*?(?=%%)|[\\\\t ][^\\\\n\\\\r]*|)/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ACC_TITLE","definition":{"$type":"RegexToken","regex":"/accTitle[\\\\t ]*:(?:[^\\\\n\\\\r]*?(?=%%)|[^\\\\n\\\\r]*)/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ACC_DESCR","definition":{"$type":"RegexToken","regex":"/accDescr(?:[\\\\t ]*:([^\\\\n\\\\r]*?(?=%%)|[^\\\\n\\\\r]*)|\\\\s*{([^}]*)})/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ABNF_RULENAME","type":{"$type":"ReturnType","name":"string"},"definition":{"$type":"RegexToken","regex":"/[A-Za-z][A-Za-z0-9-]*/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ABNF_STRING","type":{"$type":"ReturnType","name":"string"},"definition":{"$type":"RegexToken","regex":"/\\"[^\\"]*\\"/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ABNF_NUMVAL","type":{"$type":"ReturnType","name":"string"},"definition":{"$type":"RegexToken","regex":"/%[xXdDbB][0-9A-Fa-f]+(?:-[0-9A-Fa-f]+|\\\\.[0-9A-Fa-f]+)*/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ABNF_REPEAT","type":{"$type":"ReturnType","name":"string"},"definition":{"$type":"RegexToken","regex":"/[0-9]*\\\\*[0-9]*/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ABNF_EXACT_REPEAT","type":{"$type":"ReturnType","name":"string"},"definition":{"$type":"RegexToken","regex":"/[0-9]+/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","hidden":true,"name":"ABNF_WHITESPACE","definition":{"$type":"RegexToken","regex":"/[\\\\t \\\\r\\\\n]+/","parenthesized":false},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"ABNF_YAML","definition":{"$type":"RegexToken","regex":"/---[\\\\t ]*\\\\r?\\\\n(?:[\\\\S\\\\s]*?\\\\r?\\\\n)?---(?:\\\\r?\\\\n|(?!\\\\S))/","parenthesized":false},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"ABNF_DIRECTIVE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*%%{[\\\\S\\\\s]*?}%%(?:\\\\r?\\\\n|(?!\\\\S))/","parenthesized":false},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"ABNF_SINGLE_LINE_COMMENT","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*%%[^\\\\n\\\\r]*/","parenthesized":false},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"ABNF_COMMENT","definition":{"$type":"RegexToken","regex":"/;[^\\\\n\\\\r]*/","parenthesized":false},"fragment":false},{"$type":"ParserRule","entry":true,"name":"RailroadAbnf","returnType":{"$ref":"#/interfaces@0"},"definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"railroad-abnf-beta"},{"$type":"Alternatives","elements":[{"$type":"Assignment","feature":"title","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@0"},"arguments":[]}},{"$type":"Assignment","feature":"accTitle","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@1"},"arguments":[]}},{"$type":"Assignment","feature":"accDescr","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@2"},"arguments":[]}}],"cardinality":"*"},{"$type":"Assignment","feature":"rules","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@14"},"arguments":[]},"cardinality":"*"}]},"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"AbnfRule","returnType":{"$ref":"#/interfaces@1"},"definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@3"},"arguments":[]}},{"$type":"Keyword","value":"="},{"$type":"Assignment","feature":"definition","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@15"},"arguments":[]}},{"$type":"Keyword","value":";"}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"AbnfAlternation","returnType":{"$ref":"#/interfaces@2"},"definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"alternatives","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@16"},"arguments":[]}},{"$type":"Group","elements":[{"$type":"Keyword","value":"/"},{"$type":"Assignment","feature":"alternatives","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@16"},"arguments":[]}}],"cardinality":"*"}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"AbnfConcatenation","returnType":{"$ref":"#/interfaces@3"},"definition":{"$type":"Assignment","feature":"elements","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]},"cardinality":"+"},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"AbnfElement","returnType":{"$ref":"#/interfaces@4"},"definition":{"$type":"Group","elements":[{"$type":"Alternatives","elements":[{"$type":"Assignment","feature":"repeat","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@6"},"arguments":[]}},{"$type":"Assignment","feature":"repeat","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@7"},"arguments":[]}}],"cardinality":"?"},{"$type":"Assignment","feature":"primary","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@18"},"arguments":[]}}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"AbnfPrimary","returnType":{"$ref":"#/interfaces@5"},"definition":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@19"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@20"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@21"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@22"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@23"},"arguments":[]}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"AbnfStringLiteral","returnType":{"$ref":"#/interfaces@6"},"definition":{"$type":"Assignment","feature":"value","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@4"},"arguments":[]}},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"AbnfNumVal","returnType":{"$ref":"#/interfaces@7"},"definition":{"$type":"Assignment","feature":"value","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@5"},"arguments":[]}},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"AbnfRuleName","returnType":{"$ref":"#/interfaces@8"},"definition":{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@3"},"arguments":[]}},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"AbnfGroup","returnType":{"$ref":"#/interfaces@9"},"definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"("},{"$type":"Assignment","feature":"element","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@15"},"arguments":[]}},{"$type":"Keyword","value":")"}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"AbnfOptionalGroup","returnType":{"$ref":"#/interfaces@10"},"definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"["},{"$type":"Assignment","feature":"element","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@15"},"arguments":[]}},{"$type":"Keyword","value":"]"}]},"entry":false,"fragment":false,"parameters":[]}],"interfaces":[{"$type":"Interface","name":"RailroadAbnf","attributes":[{"$type":"TypeAttribute","name":"title","isOptional":true,"type":{"$type":"SimpleType","primitiveType":"string"}},{"$type":"TypeAttribute","name":"accTitle","isOptional":true,"type":{"$type":"SimpleType","primitiveType":"string"}},{"$type":"TypeAttribute","name":"accDescr","isOptional":true,"type":{"$type":"SimpleType","primitiveType":"string"}},{"$type":"TypeAttribute","name":"rules","type":{"$type":"ArrayType","elementType":{"$type":"SimpleType","typeRef":{"$ref":"#/interfaces@1"}}},"isOptional":false}],"superTypes":[]},{"$type":"Interface","name":"AbnfRule","attributes":[{"$type":"TypeAttribute","name":"name","type":{"$type":"SimpleType","primitiveType":"string"},"isOptional":false},{"$type":"TypeAttribute","name":"definition","type":{"$type":"SimpleType","typeRef":{"$ref":"#/interfaces@2"}},"isOptional":false}],"superTypes":[]},{"$type":"Interface","name":"AbnfAlternation","attributes":[{"$type":"TypeAttribute","name":"alternatives","type":{"$type":"ArrayType","elementType":{"$type":"SimpleType","typeRef":{"$ref":"#/interfaces@3"}}},"isOptional":false}],"superTypes":[]},{"$type":"Interface","name":"AbnfConcatenation","attributes":[{"$type":"TypeAttribute","name":"elements","type":{"$type":"ArrayType","elementType":{"$type":"SimpleType","typeRef":{"$ref":"#/interfaces@4"}}},"isOptional":false}],"superTypes":[]},{"$type":"Interface","name":"AbnfElement","attributes":[{"$type":"TypeAttribute","name":"repeat","isOptional":true,"type":{"$type":"SimpleType","primitiveType":"string"}},{"$type":"TypeAttribute","name":"primary","type":{"$type":"SimpleType","typeRef":{"$ref":"#/interfaces@5"}},"isOptional":false}],"superTypes":[]},{"$type":"Interface","name":"AbnfPrimary","attributes":[],"superTypes":[]},{"$type":"Interface","name":"AbnfStringLiteral","superTypes":[{"$ref":"#/interfaces@5"}],"attributes":[{"$type":"TypeAttribute","name":"value","type":{"$type":"SimpleType","primitiveType":"string"},"isOptional":false}]},{"$type":"Interface","name":"AbnfNumVal","superTypes":[{"$ref":"#/interfaces@5"}],"attributes":[{"$type":"TypeAttribute","name":"value","type":{"$type":"SimpleType","primitiveType":"string"},"isOptional":false}]},{"$type":"Interface","name":"AbnfRuleName","superTypes":[{"$ref":"#/interfaces@5"}],"attributes":[{"$type":"TypeAttribute","name":"name","type":{"$type":"SimpleType","primitiveType":"string"},"isOptional":false}]},{"$type":"Interface","name":"AbnfGroup","superTypes":[{"$ref":"#/interfaces@5"}],"attributes":[{"$type":"TypeAttribute","name":"element","type":{"$type":"SimpleType","typeRef":{"$ref":"#/interfaces@2"}},"isOptional":false}]},{"$type":"Interface","name":"AbnfOptionalGroup","superTypes":[{"$ref":"#/interfaces@5"}],"attributes":[{"$type":"TypeAttribute","name":"element","type":{"$type":"SimpleType","typeRef":{"$ref":"#/interfaces@2"}},"isOptional":false}]}],"imports":[],"types":[]}')),"RailroadAbnfGrammarGrammar"),YEt=E(()=>bwe??(bwe=Ma(`{"$type":"Grammar","isDeclared":true,"name":"RailroadEbnfGrammar","rules":[{"$type":"TerminalRule","name":"TITLE","definition":{"$type":"RegexToken","regex":"/title(?:[\\\\t ][^\\\\n\\\\r]*?(?=%%)|[\\\\t ][^\\\\n\\\\r]*|)/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ACC_TITLE","definition":{"$type":"RegexToken","regex":"/accTitle[\\\\t ]*:(?:[^\\\\n\\\\r]*?(?=%%)|[^\\\\n\\\\r]*)/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ACC_DESCR","definition":{"$type":"RegexToken","regex":"/accDescr(?:[\\\\t ]*:([^\\\\n\\\\r]*?(?=%%)|[^\\\\n\\\\r]*)|\\\\s*{([^}]*)})/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"EBNF_ID","type":{"$type":"ReturnType","name":"string"},"definition":{"$type":"RegexToken","regex":"/[A-Z_a-z][\\\\w-]*/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"EBNF_STRING","type":{"$type":"ReturnType","name":"string"},"definition":{"$type":"RegexToken","regex":"/\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\"|'([^'\\\\\\\\]|\\\\\\\\.)*'/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"EBNF_SPECIAL_SEQUENCE","type":{"$type":"ReturnType","name":"string"},"definition":{"$type":"RegexToken","regex":"/\\\\?(?=[^?;]*[^?\\\\s;][^?;]*\\\\?)[^?;]*\\\\?/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","hidden":true,"name":"EBNF_WHITESPACE","definition":{"$type":"RegexToken","regex":"/[\\\\t \\\\r\\\\n]+/","parenthesized":false},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"EBNF_YAML","definition":{"$type":"RegexToken","regex":"/---[\\\\t ]*\\\\r?\\\\n(?:[\\\\S\\\\s]*?\\\\r?\\\\n)?---(?:\\\\r?\\\\n|(?!\\\\S))/","parenthesized":false},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"EBNF_DIRECTIVE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*%%{[\\\\S\\\\s]*?}%%(?:\\\\r?\\\\n|(?!\\\\S))/","parenthesized":false},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"EBNF_SINGLE_LINE_COMMENT","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*%%[^\\\\n\\\\r]*/","parenthesized":false},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"EBNF_BLOCK_COMMENT","definition":{"$type":"RegexToken","regex":"/\\\\/\\\\*[\\\\s\\\\S]*?\\\\*\\\\//","parenthesized":false},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"EBNF_ISO_COMMENT","definition":{"$type":"RegexToken","regex":"/\\\\(\\\\*[\\\\s\\\\S]*?\\\\*\\\\)/","parenthesized":false},"fragment":false},{"$type":"ParserRule","entry":true,"name":"RailroadEbnf","returnType":{"$ref":"#/interfaces@0"},"definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"railroad-ebnf-beta"},{"$type":"Alternatives","elements":[{"$type":"Assignment","feature":"title","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@0"},"arguments":[]}},{"$type":"Assignment","feature":"accTitle","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@1"},"arguments":[]}},{"$type":"Assignment","feature":"accDescr","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@2"},"arguments":[]}}],"cardinality":"*"},{"$type":"Assignment","feature":"rules","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@13"},"arguments":[]},"cardinality":"*"}]},"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"EbnfRule","returnType":{"$ref":"#/interfaces@1"},"definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@3"},"arguments":[]}},{"$type":"Alternatives","elements":[{"$type":"Keyword","value":"="},{"$type":"Keyword","value":"::="}]},{"$type":"Assignment","feature":"definition","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@14"},"arguments":[]}},{"$type":"Keyword","value":";"}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"EbnfChoice","returnType":{"$ref":"#/interfaces@2"},"definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"alternatives","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@15"},"arguments":[]}},{"$type":"Group","elements":[{"$type":"Keyword","value":"|"},{"$type":"Assignment","feature":"alternatives","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@15"},"arguments":[]}}],"cardinality":"*"}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"EbnfSequence","returnType":{"$ref":"#/interfaces@3"},"definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"elements","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@16"},"arguments":[]}},{"$type":"Group","elements":[{"$type":"Keyword","value":",","cardinality":"?"},{"$type":"Assignment","feature":"elements","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@16"},"arguments":[]}}],"cardinality":"*"}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"EbnfTerm","returnType":{"$ref":"#/interfaces@4"},"definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"base","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}},{"$type":"Assignment","feature":"postfixes","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@24"},"arguments":[]},"cardinality":"*"}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"EbnfPrimary","returnType":{"$ref":"#/interfaces@5"},"definition":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@18"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@20"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@19"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@21"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@22"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@23"},"arguments":[]}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"EbnfTerminal","returnType":{"$ref":"#/interfaces@7"},"definition":{"$type":"Assignment","feature":"value","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@4"},"arguments":[]}},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"EbnfNonTerminal","returnType":{"$ref":"#/interfaces@8"},"definition":{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@3"},"arguments":[]}},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"EbnfSpecial","returnType":{"$ref":"#/interfaces@9"},"definition":{"$type":"Assignment","feature":"text","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@5"},"arguments":[]}},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"EbnfGroup","returnType":{"$ref":"#/interfaces@10"},"definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"("},{"$type":"Assignment","feature":"element","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@14"},"arguments":[]}},{"$type":"Keyword","value":")"}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"EbnfOptional","returnType":{"$ref":"#/interfaces@11"},"definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"["},{"$type":"Assignment","feature":"element","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@14"},"arguments":[]}},{"$type":"Keyword","value":"]"}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"EbnfRepetition","returnType":{"$ref":"#/interfaces@12"},"definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"{"},{"$type":"Assignment","feature":"element","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@14"},"arguments":[]}},{"$type":"Keyword","value":"}"}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"EbnfPostfix","returnType":{"$ref":"#/interfaces@6"},"definition":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@25"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@26"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@27"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@28"},"arguments":[]}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"EbnfOptionalPostfix","returnType":{"$ref":"#/interfaces@13"},"definition":{"$type":"Assignment","feature":"operator","operator":"=","terminal":{"$type":"Keyword","value":"?"}},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"EbnfZeroOrMorePostfix","returnType":{"$ref":"#/interfaces@14"},"definition":{"$type":"Assignment","feature":"operator","operator":"=","terminal":{"$type":"Keyword","value":"*"}},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"EbnfOneOrMorePostfix","returnType":{"$ref":"#/interfaces@15"},"definition":{"$type":"Assignment","feature":"operator","operator":"=","terminal":{"$type":"Keyword","value":"+"}},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"EbnfExceptionPostfix","returnType":{"$ref":"#/interfaces@16"},"definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"-"},{"$type":"Assignment","feature":"except","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}}]},"entry":false,"fragment":false,"parameters":[]}],"interfaces":[{"$type":"Interface","name":"RailroadEbnf","attributes":[{"$type":"TypeAttribute","name":"title","isOptional":true,"type":{"$type":"SimpleType","primitiveType":"string"}},{"$type":"TypeAttribute","name":"accTitle","isOptional":true,"type":{"$type":"SimpleType","primitiveType":"string"}},{"$type":"TypeAttribute","name":"accDescr","isOptional":true,"type":{"$type":"SimpleType","primitiveType":"string"}},{"$type":"TypeAttribute","name":"rules","type":{"$type":"ArrayType","elementType":{"$type":"SimpleType","typeRef":{"$ref":"#/interfaces@1"}}},"isOptional":false}],"superTypes":[]},{"$type":"Interface","name":"EbnfRule","attributes":[{"$type":"TypeAttribute","name":"name","type":{"$type":"SimpleType","primitiveType":"string"},"isOptional":false},{"$type":"TypeAttribute","name":"definition","type":{"$type":"SimpleType","typeRef":{"$ref":"#/interfaces@2"}},"isOptional":false}],"superTypes":[]},{"$type":"Interface","name":"EbnfChoice","attributes":[{"$type":"TypeAttribute","name":"alternatives","type":{"$type":"ArrayType","elementType":{"$type":"SimpleType","typeRef":{"$ref":"#/interfaces@3"}}},"isOptional":false}],"superTypes":[]},{"$type":"Interface","name":"EbnfSequence","attributes":[{"$type":"TypeAttribute","name":"elements","type":{"$type":"ArrayType","elementType":{"$type":"SimpleType","typeRef":{"$ref":"#/interfaces@4"}}},"isOptional":false}],"superTypes":[]},{"$type":"Interface","name":"EbnfTerm","attributes":[{"$type":"TypeAttribute","name":"base","type":{"$type":"SimpleType","typeRef":{"$ref":"#/interfaces@5"}},"isOptional":false},{"$type":"TypeAttribute","name":"postfixes","type":{"$type":"ArrayType","elementType":{"$type":"SimpleType","typeRef":{"$ref":"#/interfaces@6"}}},"isOptional":false}],"superTypes":[]},{"$type":"Interface","name":"EbnfPrimary","attributes":[],"superTypes":[]},{"$type":"Interface","name":"EbnfPostfix","attributes":[],"superTypes":[]},{"$type":"Interface","name":"EbnfTerminal","superTypes":[{"$ref":"#/interfaces@5"}],"attributes":[{"$type":"TypeAttribute","name":"value","type":{"$type":"SimpleType","primitiveType":"string"},"isOptional":false}]},{"$type":"Interface","name":"EbnfNonTerminal","superTypes":[{"$ref":"#/interfaces@5"}],"attributes":[{"$type":"TypeAttribute","name":"name","type":{"$type":"SimpleType","primitiveType":"string"},"isOptional":false}]},{"$type":"Interface","name":"EbnfSpecial","superTypes":[{"$ref":"#/interfaces@5"}],"attributes":[{"$type":"TypeAttribute","name":"text","type":{"$type":"SimpleType","primitiveType":"string"},"isOptional":false}]},{"$type":"Interface","name":"EbnfGroup","superTypes":[{"$ref":"#/interfaces@5"}],"attributes":[{"$type":"TypeAttribute","name":"element","type":{"$type":"SimpleType","typeRef":{"$ref":"#/interfaces@2"}},"isOptional":false}]},{"$type":"Interface","name":"EbnfOptional","superTypes":[{"$ref":"#/interfaces@5"}],"attributes":[{"$type":"TypeAttribute","name":"element","type":{"$type":"SimpleType","typeRef":{"$ref":"#/interfaces@2"}},"isOptional":false}]},{"$type":"Interface","name":"EbnfRepetition","superTypes":[{"$ref":"#/interfaces@5"}],"attributes":[{"$type":"TypeAttribute","name":"element","type":{"$type":"SimpleType","typeRef":{"$ref":"#/interfaces@2"}},"isOptional":false}]},{"$type":"Interface","name":"EbnfOptionalPostfix","superTypes":[{"$ref":"#/interfaces@6"}],"attributes":[{"$type":"TypeAttribute","name":"operator","type":{"$type":"SimpleType","primitiveType":"string"},"isOptional":false}]},{"$type":"Interface","name":"EbnfZeroOrMorePostfix","superTypes":[{"$ref":"#/interfaces@6"}],"attributes":[{"$type":"TypeAttribute","name":"operator","type":{"$type":"SimpleType","primitiveType":"string"},"isOptional":false}]},{"$type":"Interface","name":"EbnfOneOrMorePostfix","superTypes":[{"$ref":"#/interfaces@6"}],"attributes":[{"$type":"TypeAttribute","name":"operator","type":{"$type":"SimpleType","primitiveType":"string"},"isOptional":false}]},{"$type":"Interface","name":"EbnfExceptionPostfix","superTypes":[{"$ref":"#/interfaces@6"}],"attributes":[{"$type":"TypeAttribute","name":"except","type":{"$type":"SimpleType","typeRef":{"$ref":"#/interfaces@5"}},"isOptional":false}]}],"imports":[],"types":[]}`)),"RailroadEbnfGrammarGrammar"),jEt=E(()=>Twe??(Twe=Ma(`{"$type":"Grammar","isDeclared":true,"name":"RailroadGrammar","rules":[{"$type":"TerminalRule","name":"TITLE","definition":{"$type":"RegexToken","regex":"/title(?:[\\\\t ][^\\\\n\\\\r]*?(?=%%)|[\\\\t ][^\\\\n\\\\r]*|)/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ACC_TITLE","definition":{"$type":"RegexToken","regex":"/accTitle[\\\\t ]*:(?:[^\\\\n\\\\r]*?(?=%%)|[^\\\\n\\\\r]*)/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ACC_DESCR","definition":{"$type":"RegexToken","regex":"/accDescr(?:[\\\\t ]*:([^\\\\n\\\\r]*?(?=%%)|[^\\\\n\\\\r]*)|\\\\s*{([^}]*)})/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"RR_ID","type":{"$type":"ReturnType","name":"string"},"definition":{"$type":"RegexToken","regex":"/[A-Z_a-z][\\\\w-]*/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"RR_STRING","type":{"$type":"ReturnType","name":"string"},"definition":{"$type":"RegexToken","regex":"/\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\"|'([^'\\\\\\\\]|\\\\\\\\.)*'/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","hidden":true,"name":"RR_WHITESPACE","definition":{"$type":"RegexToken","regex":"/[\\\\t \\\\r\\\\n]+/","parenthesized":false},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"RR_YAML","definition":{"$type":"RegexToken","regex":"/---[\\\\t ]*\\\\r?\\\\n(?:[\\\\S\\\\s]*?\\\\r?\\\\n)?---(?:\\\\r?\\\\n|(?!\\\\S))/","parenthesized":false},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"RR_DIRECTIVE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*%%{[\\\\S\\\\s]*?}%%(?:\\\\r?\\\\n|(?!\\\\S))/","parenthesized":false},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"RR_SINGLE_LINE_COMMENT","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*%%[^\\\\n\\\\r]*/","parenthesized":false},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"RR_BLOCK_COMMENT","definition":{"$type":"RegexToken","regex":"/\\\\/\\\\*[\\\\s\\\\S]*?\\\\*\\\\//","parenthesized":false},"fragment":false},{"$type":"ParserRule","entry":true,"name":"Railroad","returnType":{"$ref":"#/interfaces@0"},"definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"railroad-beta"},{"$type":"Alternatives","elements":[{"$type":"Assignment","feature":"title","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@0"},"arguments":[]}},{"$type":"Assignment","feature":"accTitle","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@1"},"arguments":[]}},{"$type":"Assignment","feature":"accDescr","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@2"},"arguments":[]}}],"cardinality":"*"},{"$type":"Assignment","feature":"rules","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@11"},"arguments":[]},"cardinality":"*"}]},"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"RailroadRule","returnType":{"$ref":"#/interfaces@1"},"definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@3"},"arguments":[]}},{"$type":"Keyword","value":"="},{"$type":"Assignment","feature":"definition","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@12"},"arguments":[]}},{"$type":"Keyword","value":";"}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"RailroadExpression","returnType":{"$ref":"#/interfaces@2"},"definition":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@13"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@14"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@15"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@16"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@18"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@19"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@20"},"arguments":[]}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"RailroadSequenceExpr","returnType":{"$ref":"#/interfaces@3"},"definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"sequence"},{"$type":"Keyword","value":"("},{"$type":"Assignment","feature":"elements","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@12"},"arguments":[]}},{"$type":"Group","elements":[{"$type":"Keyword","value":","},{"$type":"Assignment","feature":"elements","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@12"},"arguments":[]}}],"cardinality":"*"},{"$type":"Keyword","value":")"}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"RailroadChoiceExpr","returnType":{"$ref":"#/interfaces@4"},"definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"choice"},{"$type":"Keyword","value":"("},{"$type":"Assignment","feature":"alternatives","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@12"},"arguments":[]}},{"$type":"Group","elements":[{"$type":"Keyword","value":","},{"$type":"Assignment","feature":"alternatives","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@12"},"arguments":[]}}],"cardinality":"*"},{"$type":"Keyword","value":")"}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"RailroadOptionalExpr","returnType":{"$ref":"#/interfaces@5"},"definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"optional"},{"$type":"Keyword","value":"("},{"$type":"Assignment","feature":"element","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@12"},"arguments":[]}},{"$type":"Keyword","value":")"}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"RailroadOneOrMoreExpr","returnType":{"$ref":"#/interfaces@6"},"definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"oneOrMore"},{"$type":"Keyword","value":"("},{"$type":"Assignment","feature":"element","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@12"},"arguments":[]}},{"$type":"Keyword","value":")"}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"RailroadZeroOrMoreExpr","returnType":{"$ref":"#/interfaces@7"},"definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"zeroOrMore"},{"$type":"Keyword","value":"("},{"$type":"Assignment","feature":"element","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@12"},"arguments":[]}},{"$type":"Keyword","value":")"}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"RailroadTerminalExpr","returnType":{"$ref":"#/interfaces@8"},"definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"terminal"},{"$type":"Keyword","value":"("},{"$type":"Assignment","feature":"value","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@4"},"arguments":[]}},{"$type":"Keyword","value":")"}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"RailroadNonTerminalExpr","returnType":{"$ref":"#/interfaces@9"},"definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"nonterminal"},{"$type":"Keyword","value":"("},{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@4"},"arguments":[]}},{"$type":"Keyword","value":")"}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"RailroadSpecialExpr","returnType":{"$ref":"#/interfaces@10"},"definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"special"},{"$type":"Keyword","value":"("},{"$type":"Assignment","feature":"text","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@4"},"arguments":[]}},{"$type":"Keyword","value":")"}]},"entry":false,"fragment":false,"parameters":[]}],"interfaces":[{"$type":"Interface","name":"Railroad","attributes":[{"$type":"TypeAttribute","name":"title","isOptional":true,"type":{"$type":"SimpleType","primitiveType":"string"}},{"$type":"TypeAttribute","name":"accTitle","isOptional":true,"type":{"$type":"SimpleType","primitiveType":"string"}},{"$type":"TypeAttribute","name":"accDescr","isOptional":true,"type":{"$type":"SimpleType","primitiveType":"string"}},{"$type":"TypeAttribute","name":"rules","type":{"$type":"ArrayType","elementType":{"$type":"SimpleType","typeRef":{"$ref":"#/interfaces@1"}}},"isOptional":false}],"superTypes":[]},{"$type":"Interface","name":"RailroadRule","attributes":[{"$type":"TypeAttribute","name":"name","type":{"$type":"SimpleType","primitiveType":"string"},"isOptional":false},{"$type":"TypeAttribute","name":"definition","type":{"$type":"SimpleType","typeRef":{"$ref":"#/interfaces@2"}},"isOptional":false}],"superTypes":[]},{"$type":"Interface","name":"RailroadExpression","attributes":[],"superTypes":[]},{"$type":"Interface","name":"RailroadSequenceExpr","superTypes":[{"$ref":"#/interfaces@2"}],"attributes":[{"$type":"TypeAttribute","name":"elements","type":{"$type":"ArrayType","elementType":{"$type":"SimpleType","typeRef":{"$ref":"#/interfaces@2"}}},"isOptional":false}]},{"$type":"Interface","name":"RailroadChoiceExpr","superTypes":[{"$ref":"#/interfaces@2"}],"attributes":[{"$type":"TypeAttribute","name":"alternatives","type":{"$type":"ArrayType","elementType":{"$type":"SimpleType","typeRef":{"$ref":"#/interfaces@2"}}},"isOptional":false}]},{"$type":"Interface","name":"RailroadOptionalExpr","superTypes":[{"$ref":"#/interfaces@2"}],"attributes":[{"$type":"TypeAttribute","name":"element","type":{"$type":"SimpleType","typeRef":{"$ref":"#/interfaces@2"}},"isOptional":false}]},{"$type":"Interface","name":"RailroadOneOrMoreExpr","superTypes":[{"$ref":"#/interfaces@2"}],"attributes":[{"$type":"TypeAttribute","name":"element","type":{"$type":"SimpleType","typeRef":{"$ref":"#/interfaces@2"}},"isOptional":false}]},{"$type":"Interface","name":"RailroadZeroOrMoreExpr","superTypes":[{"$ref":"#/interfaces@2"}],"attributes":[{"$type":"TypeAttribute","name":"element","type":{"$type":"SimpleType","typeRef":{"$ref":"#/interfaces@2"}},"isOptional":false}]},{"$type":"Interface","name":"RailroadTerminalExpr","superTypes":[{"$ref":"#/interfaces@2"}],"attributes":[{"$type":"TypeAttribute","name":"value","type":{"$type":"SimpleType","primitiveType":"string"},"isOptional":false}]},{"$type":"Interface","name":"RailroadNonTerminalExpr","superTypes":[{"$ref":"#/interfaces@2"}],"attributes":[{"$type":"TypeAttribute","name":"name","type":{"$type":"SimpleType","primitiveType":"string"},"isOptional":false}]},{"$type":"Interface","name":"RailroadSpecialExpr","superTypes":[{"$ref":"#/interfaces@2"}],"attributes":[{"$type":"TypeAttribute","name":"text","type":{"$type":"SimpleType","primitiveType":"string"},"isOptional":false}]}],"imports":[],"types":[]}`)),"RailroadGrammarGrammar"),XEt=E(()=>Cwe??(Cwe=Ma(`{"$type":"Grammar","isDeclared":true,"name":"RailroadPegGrammar","rules":[{"$type":"TerminalRule","name":"TITLE","definition":{"$type":"RegexToken","regex":"/title(?:[\\\\t ][^\\\\n\\\\r]*?(?=%%)|[\\\\t ][^\\\\n\\\\r]*|)/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ACC_TITLE","definition":{"$type":"RegexToken","regex":"/accTitle[\\\\t ]*:(?:[^\\\\n\\\\r]*?(?=%%)|[^\\\\n\\\\r]*)/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ACC_DESCR","definition":{"$type":"RegexToken","regex":"/accDescr(?:[\\\\t ]*:([^\\\\n\\\\r]*?(?=%%)|[^\\\\n\\\\r]*)|\\\\s*{([^}]*)})/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"PEG_ID","type":{"$type":"ReturnType","name":"string"},"definition":{"$type":"RegexToken","regex":"/[A-Z_a-z][\\\\w-]*/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"PEG_STRING","type":{"$type":"ReturnType","name":"string"},"definition":{"$type":"RegexToken","regex":"/\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\"|'([^'\\\\\\\\]|\\\\\\\\.)*'/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","hidden":true,"name":"PEG_WHITESPACE","definition":{"$type":"RegexToken","regex":"/[\\\\t \\\\r\\\\n]+/","parenthesized":false},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"PEG_YAML","definition":{"$type":"RegexToken","regex":"/---[\\\\t ]*\\\\r?\\\\n(?:[\\\\S\\\\s]*?\\\\r?\\\\n)?---(?:\\\\r?\\\\n|(?!\\\\S))/","parenthesized":false},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"PEG_DIRECTIVE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*%%{[\\\\S\\\\s]*?}%%(?:\\\\r?\\\\n|(?!\\\\S))/","parenthesized":false},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"PEG_SINGLE_LINE_COMMENT","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*%%[^\\\\n\\\\r]*/","parenthesized":false},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"PEG_LINE_COMMENT","definition":{"$type":"RegexToken","regex":"/#[^\\\\n\\\\r]*/","parenthesized":false},"fragment":false},{"$type":"ParserRule","entry":true,"name":"RailroadPeg","returnType":{"$ref":"#/interfaces@0"},"definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"railroad-peg-beta"},{"$type":"Alternatives","elements":[{"$type":"Assignment","feature":"title","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@0"},"arguments":[]}},{"$type":"Assignment","feature":"accTitle","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@1"},"arguments":[]}},{"$type":"Assignment","feature":"accDescr","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@2"},"arguments":[]}}],"cardinality":"*"},{"$type":"Assignment","feature":"rules","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@11"},"arguments":[]},"cardinality":"*"}]},"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"PegRule","returnType":{"$ref":"#/interfaces@1"},"definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@3"},"arguments":[]}},{"$type":"Keyword","value":"<-"},{"$type":"Assignment","feature":"definition","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@12"},"arguments":[]}},{"$type":"Keyword","value":";"}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"PegOrderedChoice","returnType":{"$ref":"#/interfaces@2"},"definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"alternatives","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@13"},"arguments":[]}},{"$type":"Group","elements":[{"$type":"Keyword","value":"/"},{"$type":"Assignment","feature":"alternatives","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@13"},"arguments":[]}}],"cardinality":"*"}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"PegSequence","returnType":{"$ref":"#/interfaces@3"},"definition":{"$type":"Assignment","feature":"elements","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@14"},"arguments":[]},"cardinality":"+"},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"PegPrefix","returnType":{"$ref":"#/interfaces@4"},"definition":{"$type":"Group","elements":[{"$type":"Alternatives","elements":[{"$type":"Assignment","feature":"operator","operator":"=","terminal":{"$type":"Keyword","value":"&"}},{"$type":"Assignment","feature":"operator","operator":"=","terminal":{"$type":"Keyword","value":"!"}}],"cardinality":"?"},{"$type":"Assignment","feature":"suffix","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@15"},"arguments":[]}}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"PegSuffix","returnType":{"$ref":"#/interfaces@5"},"definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"primary","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@16"},"arguments":[]}},{"$type":"Alternatives","elements":[{"$type":"Assignment","feature":"operator","operator":"=","terminal":{"$type":"Keyword","value":"?"}},{"$type":"Assignment","feature":"operator","operator":"=","terminal":{"$type":"Keyword","value":"*"}},{"$type":"Assignment","feature":"operator","operator":"=","terminal":{"$type":"Keyword","value":"+"}}],"cardinality":"?"}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"PegPrimary","returnType":{"$ref":"#/interfaces@6"},"definition":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@18"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@19"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@20"},"arguments":[]}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"PegLiteral","returnType":{"$ref":"#/interfaces@7"},"definition":{"$type":"Assignment","feature":"value","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@4"},"arguments":[]}},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"PegIdentifier","returnType":{"$ref":"#/interfaces@8"},"definition":{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@3"},"arguments":[]}},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"PegGroup","returnType":{"$ref":"#/interfaces@9"},"definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"("},{"$type":"Assignment","feature":"element","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@12"},"arguments":[]}},{"$type":"Keyword","value":")"}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"PegAny","returnType":{"$ref":"#/interfaces@10"},"definition":{"$type":"Assignment","feature":"dot","operator":"=","terminal":{"$type":"Keyword","value":"."}},"entry":false,"fragment":false,"parameters":[]}],"interfaces":[{"$type":"Interface","name":"RailroadPeg","attributes":[{"$type":"TypeAttribute","name":"title","isOptional":true,"type":{"$type":"SimpleType","primitiveType":"string"}},{"$type":"TypeAttribute","name":"accTitle","isOptional":true,"type":{"$type":"SimpleType","primitiveType":"string"}},{"$type":"TypeAttribute","name":"accDescr","isOptional":true,"type":{"$type":"SimpleType","primitiveType":"string"}},{"$type":"TypeAttribute","name":"rules","type":{"$type":"ArrayType","elementType":{"$type":"SimpleType","typeRef":{"$ref":"#/interfaces@1"}}},"isOptional":false}],"superTypes":[]},{"$type":"Interface","name":"PegRule","attributes":[{"$type":"TypeAttribute","name":"name","type":{"$type":"SimpleType","primitiveType":"string"},"isOptional":false},{"$type":"TypeAttribute","name":"definition","type":{"$type":"SimpleType","typeRef":{"$ref":"#/interfaces@2"}},"isOptional":false}],"superTypes":[]},{"$type":"Interface","name":"PegOrderedChoice","attributes":[{"$type":"TypeAttribute","name":"alternatives","type":{"$type":"ArrayType","elementType":{"$type":"SimpleType","typeRef":{"$ref":"#/interfaces@3"}}},"isOptional":false}],"superTypes":[]},{"$type":"Interface","name":"PegSequence","attributes":[{"$type":"TypeAttribute","name":"elements","type":{"$type":"ArrayType","elementType":{"$type":"SimpleType","typeRef":{"$ref":"#/interfaces@4"}}},"isOptional":false}],"superTypes":[]},{"$type":"Interface","name":"PegPrefix","attributes":[{"$type":"TypeAttribute","name":"operator","isOptional":true,"type":{"$type":"SimpleType","primitiveType":"string"}},{"$type":"TypeAttribute","name":"suffix","type":{"$type":"SimpleType","typeRef":{"$ref":"#/interfaces@5"}},"isOptional":false}],"superTypes":[]},{"$type":"Interface","name":"PegSuffix","attributes":[{"$type":"TypeAttribute","name":"primary","type":{"$type":"SimpleType","typeRef":{"$ref":"#/interfaces@6"}},"isOptional":false},{"$type":"TypeAttribute","name":"operator","isOptional":true,"type":{"$type":"SimpleType","primitiveType":"string"}}],"superTypes":[]},{"$type":"Interface","name":"PegPrimary","attributes":[],"superTypes":[]},{"$type":"Interface","name":"PegLiteral","superTypes":[{"$ref":"#/interfaces@6"}],"attributes":[{"$type":"TypeAttribute","name":"value","type":{"$type":"SimpleType","primitiveType":"string"},"isOptional":false}]},{"$type":"Interface","name":"PegIdentifier","superTypes":[{"$ref":"#/interfaces@6"}],"attributes":[{"$type":"TypeAttribute","name":"name","type":{"$type":"SimpleType","primitiveType":"string"},"isOptional":false}]},{"$type":"Interface","name":"PegGroup","superTypes":[{"$ref":"#/interfaces@6"}],"attributes":[{"$type":"TypeAttribute","name":"element","type":{"$type":"SimpleType","typeRef":{"$ref":"#/interfaces@2"}},"isOptional":false}]},{"$type":"Interface","name":"PegAny","superTypes":[{"$ref":"#/interfaces@6"}],"attributes":[{"$type":"TypeAttribute","name":"dot","type":{"$type":"SimpleType","primitiveType":"string"},"isOptional":false}]}],"imports":[],"types":[]}`)),"RailroadPegGrammarGrammar"),KEt=E(()=>wwe??(wwe=Ma(`{"$type":"Grammar","isDeclared":true,"name":"TreemapGrammar","rules":[{"$type":"ParserRule","fragment":true,"name":"TitleAndAccessibilities","definition":{"$type":"Alternatives","elements":[{"$type":"Assignment","feature":"accDescr","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@2"},"arguments":[]}},{"$type":"Assignment","feature":"accTitle","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@3"},"arguments":[]}},{"$type":"Assignment","feature":"title","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@4"},"arguments":[]}}],"cardinality":"+"},"entry":false,"parameters":[]},{"$type":"TerminalRule","name":"BOOLEAN","type":{"$type":"ReturnType","name":"boolean"},"definition":{"$type":"TerminalAlternatives","elements":[{"$type":"CharacterRange","left":{"$type":"Keyword","value":"true"},"parenthesized":false},{"$type":"CharacterRange","left":{"$type":"Keyword","value":"false"},"parenthesized":false}],"parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ACC_DESCR","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*accDescr(?:[\\\\t ]*:([^\\\\n\\\\r]*?(?=%%)|[^\\\\n\\\\r]*)|\\\\s*{([^}]*)})/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ACC_TITLE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*accTitle[\\\\t ]*:(?:[^\\\\n\\\\r]*?(?=%%)|[^\\\\n\\\\r]*)/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"TITLE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*title(?:[\\\\t ][^\\\\n\\\\r]*?(?=%%)|[\\\\t ][^\\\\n\\\\r]*|)/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"ParserRule","entry":true,"name":"Treemap","returnType":{"$ref":"#/interfaces@4"},"definition":{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@6"},"arguments":[]},{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@0"},"arguments":[]},{"$type":"Assignment","feature":"TreemapRows","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@15"},"arguments":[]}}],"cardinality":"*"}]},"fragment":false,"parameters":[]},{"$type":"TerminalRule","name":"TREEMAP_KEYWORD","definition":{"$type":"TerminalAlternatives","elements":[{"$type":"CharacterRange","left":{"$type":"Keyword","value":"treemap-beta"},"parenthesized":false},{"$type":"CharacterRange","left":{"$type":"Keyword","value":"treemap"},"parenthesized":false}],"parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"CLASS_DEF","definition":{"$type":"RegexToken","regex":"/classDef\\\\s+([a-zA-Z_][a-zA-Z0-9_]+)(?:\\\\s+([^;\\\\r\\\\n]*))?(?:;)?/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"STYLE_SEPARATOR","definition":{"$type":"CharacterRange","left":{"$type":"Keyword","value":":::"},"parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"SEPARATOR","definition":{"$type":"CharacterRange","left":{"$type":"Keyword","value":":"},"parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"COMMA","definition":{"$type":"CharacterRange","left":{"$type":"Keyword","value":","},"parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"INDENTATION","definition":{"$type":"RegexToken","regex":"/[ \\\\t]{1,}/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","hidden":true,"name":"WS","definition":{"$type":"RegexToken","regex":"/[ \\\\t]+/","parenthesized":false},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"ML_COMMENT","definition":{"$type":"RegexToken","regex":"/\\\\%\\\\%[^\\\\n]*/","parenthesized":false},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"NL","definition":{"$type":"RegexToken","regex":"/\\\\r?\\\\n/","parenthesized":false},"fragment":false},{"$type":"ParserRule","name":"TreemapRow","definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"indent","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@11"},"arguments":[]},"cardinality":"?"},{"$type":"Alternatives","elements":[{"$type":"Assignment","feature":"item","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}},{"$type":"RuleCall","rule":{"$ref":"#/rules@16"},"arguments":[]}]}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"ClassDef","dataType":"string","definition":{"$type":"RuleCall","rule":{"$ref":"#/rules@7"},"arguments":[]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"Item","returnType":{"$ref":"#/interfaces@0"},"definition":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@19"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@18"},"arguments":[]}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"Section","returnType":{"$ref":"#/interfaces@1"},"definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@23"},"arguments":[]}},{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@8"},"arguments":[]},{"$type":"Assignment","feature":"classSelector","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@20"},"arguments":[]}}],"cardinality":"?"}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"Leaf","returnType":{"$ref":"#/interfaces@2"},"definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@23"},"arguments":[]}},{"$type":"RuleCall","rule":{"$ref":"#/rules@11"},"arguments":[],"cardinality":"?"},{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@9"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@10"},"arguments":[]}]},{"$type":"RuleCall","rule":{"$ref":"#/rules@11"},"arguments":[],"cardinality":"?"},{"$type":"Assignment","feature":"value","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@22"},"arguments":[]}},{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@8"},"arguments":[]},{"$type":"Assignment","feature":"classSelector","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@20"},"arguments":[]}}],"cardinality":"?"}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"TerminalRule","name":"ID2","definition":{"$type":"RegexToken","regex":"/[a-zA-Z_][a-zA-Z0-9_]*/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"NUMBER2","definition":{"$type":"RegexToken","regex":"/[0-9_\\\\.\\\\,]+/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"ParserRule","name":"MyNumber","dataType":"number","definition":{"$type":"RuleCall","rule":{"$ref":"#/rules@21"},"arguments":[]},"entry":false,"fragment":false,"parameters":[]},{"$type":"TerminalRule","name":"STRING2","definition":{"$type":"RegexToken","regex":"/\\"[^\\"]*\\"|'[^']*'/","parenthesized":false},"fragment":false,"hidden":false}],"interfaces":[{"$type":"Interface","name":"Item","attributes":[{"$type":"TypeAttribute","name":"name","type":{"$type":"SimpleType","primitiveType":"string"},"isOptional":false},{"$type":"TypeAttribute","name":"classSelector","isOptional":true,"type":{"$type":"SimpleType","primitiveType":"string"}}],"superTypes":[]},{"$type":"Interface","name":"Section","superTypes":[{"$ref":"#/interfaces@0"}],"attributes":[]},{"$type":"Interface","name":"Leaf","superTypes":[{"$ref":"#/interfaces@0"}],"attributes":[{"$type":"TypeAttribute","name":"value","type":{"$type":"SimpleType","primitiveType":"number"},"isOptional":false}]},{"$type":"Interface","name":"ClassDefStatement","attributes":[{"$type":"TypeAttribute","name":"className","type":{"$type":"SimpleType","primitiveType":"string"},"isOptional":false},{"$type":"TypeAttribute","name":"styleText","type":{"$type":"SimpleType","primitiveType":"string"},"isOptional":false}],"superTypes":[]},{"$type":"Interface","name":"Treemap","attributes":[{"$type":"TypeAttribute","name":"TreemapRows","type":{"$type":"ArrayType","elementType":{"$type":"SimpleType","typeRef":{"$ref":"#/rules@15"}}},"isOptional":false},{"$type":"TypeAttribute","name":"title","isOptional":true,"type":{"$type":"SimpleType","primitiveType":"string"}},{"$type":"TypeAttribute","name":"accTitle","isOptional":true,"type":{"$type":"SimpleType","primitiveType":"string"}},{"$type":"TypeAttribute","name":"accDescr","isOptional":true,"type":{"$type":"SimpleType","primitiveType":"string"}}],"superTypes":[]}],"imports":[],"types":[],"$comment":"/**\\n * Treemap grammar for Langium\\n * Converted from mindmap grammar\\n *\\n * The ML_COMMENT and NL hidden terminals handle whitespace, comments, and newlines\\n * before the treemap keyword, allowing for empty lines and comments before the\\n * treemap declaration.\\n */"}`)),"TreemapGrammarGrammar"),ZEt=E(()=>kwe??(kwe=Ma(`{"$type":"Grammar","isDeclared":true,"name":"TreeViewGrammar","rules":[{"$type":"TerminalRule","name":"ACC_DESCR","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*accDescr(?:[\\\\t ]*:([^\\\\n\\\\r]*?(?=%%)|[^\\\\n\\\\r]*)|\\\\s*{([^}]*)})/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ACC_TITLE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*accTitle[\\\\t ]*:(?:[^\\\\n\\\\r]*?(?=%%)|[^\\\\n\\\\r]*)/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"TITLE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*title(?:[\\\\t ][^\\\\n\\\\r]*?(?=%%)|[\\\\t ][^\\\\n\\\\r]*|)/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"ParserRule","entry":true,"name":"TreeView","returnType":{"$ref":"#/interfaces@0"},"definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"treeView-beta"},{"$type":"RuleCall","rule":{"$ref":"#/rules@4"},"arguments":[],"cardinality":"?"},{"$type":"Assignment","feature":"nodes","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@14"},"arguments":[]},"cardinality":"*"}]},"fragment":false,"parameters":[]},{"$type":"ParserRule","fragment":true,"name":"TitleAndAccessibilities","definition":{"$type":"Alternatives","elements":[{"$type":"Assignment","feature":"accDescr","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@0"},"arguments":[]}},{"$type":"Assignment","feature":"accTitle","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@1"},"arguments":[]}},{"$type":"Assignment","feature":"title","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@2"},"arguments":[]}}],"cardinality":"+"},"entry":false,"parameters":[]},{"$type":"TerminalRule","name":"CLASS_ANNOTATION","definition":{"$type":"RegexToken","regex":"/[ \\\\t]+:::[ \\\\t]*[A-Za-z_][\\\\w-]*/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ICON_ANNOTATION","definition":{"$type":"RegexToken","regex":"/[ \\\\t]+icon\\\\([\\\\w-]*(?::[\\\\w-]+)?\\\\)/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"DESC_ANNOTATION","definition":{"$type":"RegexToken","regex":"/[ \\\\t]+##[^\\\\n\\\\r]*/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"INDENTATION","definition":{"$type":"RegexToken","regex":"/[ \\\\t]{1,}/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"QUOTED_NAME","definition":{"$type":"RegexToken","regex":"/\\"[^\\"]*\\"|'[^']*'/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","hidden":true,"name":"WS","definition":{"$type":"RegexToken","regex":"/[ \\\\t]+/","parenthesized":false},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"ML_COMMENT","definition":{"$type":"RegexToken","regex":"/\\\\%\\\\%[^\\\\n]*/","parenthesized":false},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"NL","definition":{"$type":"RegexToken","regex":"/\\\\r?\\\\n/","parenthesized":false},"fragment":false},{"$type":"TerminalRule","name":"BARE_NAME","definition":{"$type":"RegexToken","regex":"/(?!:::|icon\\\\(|##)[^ \\\\t\\\\n\\\\r\\"'](?:(?![ \\\\t]+:::[ \\\\t]*[A-Za-z_]|[ \\\\t]+icon\\\\(|[ \\\\t]+##)[^\\\\n\\\\r])*/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"ParserRule","name":"TreeNode","definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"indent","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@8"},"arguments":[]},"cardinality":"?"},{"$type":"Alternatives","elements":[{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@9"},"arguments":[]}},{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@13"},"arguments":[]}}]},{"$type":"Alternatives","elements":[{"$type":"Assignment","feature":"classAnnotation","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@5"},"arguments":[]}},{"$type":"Assignment","feature":"iconAnnotation","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@6"},"arguments":[]}},{"$type":"Assignment","feature":"descAnnotation","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@7"},"arguments":[]}}],"cardinality":"*"}]},"entry":false,"fragment":false,"parameters":[]}],"interfaces":[{"$type":"Interface","name":"TreeView","attributes":[{"$type":"TypeAttribute","name":"nodes","type":{"$type":"ArrayType","elementType":{"$type":"SimpleType","typeRef":{"$ref":"#/rules@14"}}},"isOptional":false},{"$type":"TypeAttribute","name":"title","isOptional":true,"type":{"$type":"SimpleType","primitiveType":"string"}},{"$type":"TypeAttribute","name":"accTitle","isOptional":true,"type":{"$type":"SimpleType","primitiveType":"string"}},{"$type":"TypeAttribute","name":"accDescr","isOptional":true,"type":{"$type":"SimpleType","primitiveType":"string"}}],"superTypes":[]}],"imports":[],"types":[],"$comment":"/**\\n * TreeView grammar for Langium\\n *\\n * Supports both quoted labels (\\"my file\\") and bare labels (index.js).\\n * Annotations (:::class, icon(), ## description) are parsed directly into\\n * AST fields by the grammar. Value conversion for stripping quotes, extracting\\n * class names, icon names, and description text happens in valueConverter.ts.\\n *\\n * The ML_COMMENT and NL hidden terminals handle whitespace, comments, and newlines\\n * before the treeView keyword, allowing for empty lines and comments before the\\n * treeView declaration.\\n */"}`)),"TreeViewGrammarGrammar"),QEt=E(()=>Swe??(Swe=Ma(`{"$type":"Grammar","isDeclared":true,"name":"WardleyGrammar","imports":[],"rules":[{"$type":"ParserRule","entry":true,"name":"Wardley","definition":{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@52"},"arguments":[],"cardinality":"*"},{"$type":"RuleCall","rule":{"$ref":"#/rules@25"},"arguments":[]},{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@52"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@42"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@1"},"arguments":[]}],"cardinality":"*"}]},"fragment":false,"parameters":[]},{"$type":"ParserRule","fragment":true,"name":"Statement","definition":{"$type":"Alternatives","elements":[{"$type":"Assignment","feature":"size","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@2"},"arguments":[]}},{"$type":"Assignment","feature":"evolution","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@3"},"arguments":[]}},{"$type":"Assignment","feature":"anchors","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@5"},"arguments":[]}},{"$type":"Assignment","feature":"components","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@6"},"arguments":[]}},{"$type":"Assignment","feature":"links","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@9"},"arguments":[]}},{"$type":"Assignment","feature":"evolves","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@10"},"arguments":[]}},{"$type":"Assignment","feature":"pipelines","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@11"},"arguments":[]}},{"$type":"Assignment","feature":"notes","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@13"},"arguments":[]}},{"$type":"Assignment","feature":"annotations","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@14"},"arguments":[]}},{"$type":"Assignment","feature":"annotation","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@15"},"arguments":[]}},{"$type":"Assignment","feature":"accelerators","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}},{"$type":"Assignment","feature":"deaccelerators","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@18"},"arguments":[]}}]},"entry":false,"parameters":[]},{"$type":"ParserRule","name":"Size","definition":{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@26"},"arguments":[]},{"$type":"Keyword","value":"["},{"$type":"Assignment","feature":"width","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@48"},"arguments":[]}},{"$type":"Keyword","value":","},{"$type":"Assignment","feature":"height","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@48"},"arguments":[]}},{"$type":"Keyword","value":"]"},{"$type":"RuleCall","rule":{"$ref":"#/rules@41"},"arguments":[]}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"Evolution","definition":{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@27"},"arguments":[]},{"$type":"Assignment","feature":"stages","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@4"},"arguments":[]}},{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@20"},"arguments":[]},{"$type":"Assignment","feature":"stages","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@4"},"arguments":[]}}],"cardinality":"+"},{"$type":"RuleCall","rule":{"$ref":"#/rules@41"},"arguments":[]}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"EvolutionStage","definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@51"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@50"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@39"},"arguments":[]}]}},{"$type":"Group","elements":[{"$type":"Keyword","value":"@"},{"$type":"Assignment","feature":"boundary","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@19"},"arguments":[]}}],"cardinality":"?"},{"$type":"Group","elements":[{"$type":"Keyword","value":"/"},{"$type":"Assignment","feature":"secondName","operator":"=","terminal":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@51"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@50"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@39"},"arguments":[]}]}}],"cardinality":"?"}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"Anchor","definition":{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@28"},"arguments":[]},{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@50"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@51"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@39"},"arguments":[]}]}},{"$type":"Keyword","value":"["},{"$type":"Assignment","feature":"visibility","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@19"},"arguments":[]}},{"$type":"Keyword","value":","},{"$type":"Assignment","feature":"evolution","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@19"},"arguments":[]}},{"$type":"Keyword","value":"]"},{"$type":"RuleCall","rule":{"$ref":"#/rules@41"},"arguments":[]}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"Component","definition":{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@29"},"arguments":[]},{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@50"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@51"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@39"},"arguments":[]}]}},{"$type":"Keyword","value":"["},{"$type":"Assignment","feature":"visibility","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@19"},"arguments":[]}},{"$type":"Keyword","value":","},{"$type":"Assignment","feature":"evolution","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@19"},"arguments":[]}},{"$type":"Keyword","value":"]"},{"$type":"Assignment","feature":"label","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@7"},"arguments":[]},"cardinality":"?"},{"$type":"Assignment","feature":"decorator","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@8"},"arguments":[]},"cardinality":"?"},{"$type":"Alternatives","elements":[{"$type":"Assignment","feature":"inertia","operator":"?=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@31"},"arguments":[]}},{"$type":"Group","elements":[{"$type":"Keyword","value":"("},{"$type":"Assignment","feature":"inertia","operator":"?=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@31"},"arguments":[]}},{"$type":"Keyword","value":")"}]}],"cardinality":"?"},{"$type":"RuleCall","rule":{"$ref":"#/rules@41"},"arguments":[]}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"Label","definition":{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@30"},"arguments":[]},{"$type":"Keyword","value":"["},{"$type":"Assignment","feature":"negX","operator":"?=","terminal":{"$type":"Keyword","value":"-"},"cardinality":"?"},{"$type":"Assignment","feature":"offsetX","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@48"},"arguments":[]}},{"$type":"Keyword","value":","},{"$type":"Assignment","feature":"negY","operator":"?=","terminal":{"$type":"Keyword","value":"-"},"cardinality":"?"},{"$type":"Assignment","feature":"offsetY","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@48"},"arguments":[]}},{"$type":"Keyword","value":"]"}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"Decorator","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"("},{"$type":"Assignment","feature":"strategy","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@24"},"arguments":[]}},{"$type":"Keyword","value":")"}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"Link","definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"from","operator":"=","terminal":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@50"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@51"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@39"},"arguments":[]}]}},{"$type":"Assignment","feature":"fromPort","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@21"},"arguments":[]},"cardinality":"?"},{"$type":"Assignment","feature":"arrow","operator":"=","terminal":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@22"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@20"},"arguments":[]}]},"cardinality":"?"},{"$type":"Assignment","feature":"to","operator":"=","terminal":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@50"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@51"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@39"},"arguments":[]}]}},{"$type":"Assignment","feature":"toPort","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@21"},"arguments":[]},"cardinality":"?"},{"$type":"Assignment","feature":"linkLabel","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@23"},"arguments":[]},"cardinality":"?"},{"$type":"RuleCall","rule":{"$ref":"#/rules@41"},"arguments":[]}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"Evolve","definition":{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@32"},"arguments":[]},{"$type":"Assignment","feature":"component","operator":"=","terminal":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@50"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@51"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@39"},"arguments":[]}]}},{"$type":"Assignment","feature":"target","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@19"},"arguments":[]}},{"$type":"RuleCall","rule":{"$ref":"#/rules@41"},"arguments":[]}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"Pipeline","definition":{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@33"},"arguments":[]},{"$type":"Assignment","feature":"parent","operator":"=","terminal":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@50"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@51"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@39"},"arguments":[]}]}},{"$type":"Keyword","value":"{"},{"$type":"RuleCall","rule":{"$ref":"#/rules@52"},"arguments":[],"cardinality":"+"},{"$type":"Assignment","feature":"components","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@12"},"arguments":[]},"cardinality":"+"},{"$type":"Keyword","value":"}"},{"$type":"RuleCall","rule":{"$ref":"#/rules@41"},"arguments":[]}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"PipelineComponent","definition":{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@29"},"arguments":[]},{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@50"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@51"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@39"},"arguments":[]}]}},{"$type":"Keyword","value":"["},{"$type":"Assignment","feature":"evolution","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@19"},"arguments":[]}},{"$type":"Keyword","value":"]"},{"$type":"Assignment","feature":"label","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@7"},"arguments":[]},"cardinality":"?"},{"$type":"RuleCall","rule":{"$ref":"#/rules@41"},"arguments":[]}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"Note","definition":{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@34"},"arguments":[]},{"$type":"Assignment","feature":"text","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@50"},"arguments":[]}},{"$type":"Keyword","value":"["},{"$type":"Assignment","feature":"visibility","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@19"},"arguments":[]}},{"$type":"Keyword","value":","},{"$type":"Assignment","feature":"evolution","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@19"},"arguments":[]}},{"$type":"Keyword","value":"]"},{"$type":"RuleCall","rule":{"$ref":"#/rules@41"},"arguments":[]}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"Annotations","definition":{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@35"},"arguments":[]},{"$type":"Keyword","value":"["},{"$type":"Assignment","feature":"x","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@16"},"arguments":[]}},{"$type":"Keyword","value":","},{"$type":"Assignment","feature":"y","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@16"},"arguments":[]}},{"$type":"Keyword","value":"]"},{"$type":"RuleCall","rule":{"$ref":"#/rules@41"},"arguments":[]}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"Annotation","definition":{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@36"},"arguments":[]},{"$type":"Assignment","feature":"number","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@48"},"arguments":[]}},{"$type":"Keyword","value":","},{"$type":"Keyword","value":"["},{"$type":"Assignment","feature":"x","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@16"},"arguments":[]}},{"$type":"Keyword","value":","},{"$type":"Assignment","feature":"y","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@16"},"arguments":[]}},{"$type":"Keyword","value":"]"},{"$type":"Assignment","feature":"text","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@50"},"arguments":[]}},{"$type":"RuleCall","rule":{"$ref":"#/rules@41"},"arguments":[]}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"CoordinateValue","dataType":"number","definition":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@19"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@48"},"arguments":[]}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"Accelerator","definition":{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@37"},"arguments":[]},{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@50"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@51"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@39"},"arguments":[]}]}},{"$type":"Keyword","value":"["},{"$type":"Assignment","feature":"x","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@19"},"arguments":[]}},{"$type":"Keyword","value":","},{"$type":"Assignment","feature":"y","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@19"},"arguments":[]}},{"$type":"Keyword","value":"]"},{"$type":"RuleCall","rule":{"$ref":"#/rules@41"},"arguments":[]}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"Deaccelerator","definition":{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@38"},"arguments":[]},{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@50"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@51"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@39"},"arguments":[]}]}},{"$type":"Keyword","value":"["},{"$type":"Assignment","feature":"x","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@19"},"arguments":[]}},{"$type":"Keyword","value":","},{"$type":"Assignment","feature":"y","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@19"},"arguments":[]}},{"$type":"Keyword","value":"]"},{"$type":"RuleCall","rule":{"$ref":"#/rules@41"},"arguments":[]}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"TerminalRule","name":"WARDLEY_NUMBER","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"RegexToken","regex":"/[0-9]+\\\\.[0-9]+/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ARROW","definition":{"$type":"CharacterRange","left":{"$type":"Keyword","value":"->"},"parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"LINK_PORT","definition":{"$type":"TerminalAlternatives","elements":[{"$type":"TerminalAlternatives","elements":[{"$type":"CharacterRange","left":{"$type":"Keyword","value":"+<>"},"parenthesized":false},{"$type":"CharacterRange","left":{"$type":"Keyword","value":"+>"},"parenthesized":false}],"parenthesized":false},{"$type":"CharacterRange","left":{"$type":"Keyword","value":"+<"},"parenthesized":false}],"parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"LINK_ARROW","definition":{"$type":"TerminalAlternatives","elements":[{"$type":"TerminalAlternatives","elements":[{"$type":"TerminalAlternatives","elements":[{"$type":"TerminalAlternatives","elements":[{"$type":"TerminalAlternatives","elements":[{"$type":"CharacterRange","left":{"$type":"Keyword","value":"-->"},"parenthesized":false},{"$type":"CharacterRange","left":{"$type":"Keyword","value":"-.->"},"parenthesized":false}],"parenthesized":false},{"$type":"CharacterRange","left":{"$type":"Keyword","value":">"},"parenthesized":false}],"parenthesized":false},{"$type":"RegexToken","regex":"/\\\\+'[^']*'<>/","parenthesized":false}],"parenthesized":false},{"$type":"RegexToken","regex":"/\\\\+'[^']*'</","parenthesized":false}],"parenthesized":false},{"$type":"RegexToken","regex":"/\\\\+'[^']*'>/","parenthesized":false}],"parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"LINK_LABEL","definition":{"$type":"RegexToken","regex":"/;[^\\\\n\\\\r]+/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"STRATEGY","definition":{"$type":"TerminalAlternatives","elements":[{"$type":"TerminalAlternatives","elements":[{"$type":"TerminalAlternatives","elements":[{"$type":"CharacterRange","left":{"$type":"Keyword","value":"build"},"parenthesized":false},{"$type":"CharacterRange","left":{"$type":"Keyword","value":"buy"},"parenthesized":false}],"parenthesized":false},{"$type":"CharacterRange","left":{"$type":"Keyword","value":"outsource"},"parenthesized":false}],"parenthesized":false},{"$type":"CharacterRange","left":{"$type":"Keyword","value":"market"},"parenthesized":false}],"parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"KW_WARDLEY","definition":{"$type":"CharacterRange","left":{"$type":"Keyword","value":"wardley-beta"},"parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"KW_SIZE","definition":{"$type":"CharacterRange","left":{"$type":"Keyword","value":"size"},"parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"KW_EVOLUTION","definition":{"$type":"CharacterRange","left":{"$type":"Keyword","value":"evolution"},"parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"KW_ANCHOR","definition":{"$type":"CharacterRange","left":{"$type":"Keyword","value":"anchor"},"parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"KW_COMPONENT","definition":{"$type":"CharacterRange","left":{"$type":"Keyword","value":"component"},"parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"KW_LABEL","definition":{"$type":"CharacterRange","left":{"$type":"Keyword","value":"label"},"parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"KW_INERTIA","definition":{"$type":"CharacterRange","left":{"$type":"Keyword","value":"inertia"},"parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"KW_EVOLVE","definition":{"$type":"CharacterRange","left":{"$type":"Keyword","value":"evolve"},"parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"KW_PIPELINE","definition":{"$type":"CharacterRange","left":{"$type":"Keyword","value":"pipeline"},"parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"KW_NOTE","definition":{"$type":"CharacterRange","left":{"$type":"Keyword","value":"note"},"parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"KW_ANNOTATIONS","definition":{"$type":"CharacterRange","left":{"$type":"Keyword","value":"annotations"},"parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"KW_ANNOTATION","definition":{"$type":"CharacterRange","left":{"$type":"Keyword","value":"annotation"},"parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"KW_ACCELERATOR","definition":{"$type":"CharacterRange","left":{"$type":"Keyword","value":"accelerator"},"parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"KW_DEACCELERATOR","definition":{"$type":"CharacterRange","left":{"$type":"Keyword","value":"deaccelerator"},"parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"NAME_WITH_SPACES","definition":{"$type":"RegexToken","regex":"/(?!title\\\\s|accTitle|accDescr)[A-Za-z](?:[A-Za-z0-9_()&]|-(?!>))*(?:[ \\\\t]+[A-Za-z(](?:[A-Za-z0-9_()&]|-(?!>))*)*/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","hidden":true,"name":"WS","definition":{"$type":"RegexToken","regex":"/[ \\\\t]+/","parenthesized":false},"fragment":false},{"$type":"ParserRule","name":"EOL","dataType":"string","definition":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@52"},"arguments":[],"cardinality":"+"},{"$type":"EndOfFile"}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","fragment":true,"name":"TitleAndAccessibilities","definition":{"$type":"Group","elements":[{"$type":"Alternatives","elements":[{"$type":"Assignment","feature":"accDescr","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@44"},"arguments":[]}},{"$type":"Assignment","feature":"accTitle","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@45"},"arguments":[]}},{"$type":"Assignment","feature":"title","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@46"},"arguments":[]}}]},{"$type":"RuleCall","rule":{"$ref":"#/rules@41"},"arguments":[]}],"cardinality":"+"},"entry":false,"parameters":[]},{"$type":"TerminalRule","name":"BOOLEAN","type":{"$type":"ReturnType","name":"boolean"},"definition":{"$type":"TerminalAlternatives","elements":[{"$type":"CharacterRange","left":{"$type":"Keyword","value":"true"},"parenthesized":false},{"$type":"CharacterRange","left":{"$type":"Keyword","value":"false"},"parenthesized":false}],"parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ACC_DESCR","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*accDescr(?:[\\\\t ]*:([^\\\\n\\\\r]*?(?=%%)|[^\\\\n\\\\r]*)|\\\\s*{([^}]*)})/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ACC_TITLE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*accTitle[\\\\t ]*:(?:[^\\\\n\\\\r]*?(?=%%)|[^\\\\n\\\\r]*)/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"TITLE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*title(?:[\\\\t ][^\\\\n\\\\r]*?(?=%%)|[\\\\t ][^\\\\n\\\\r]*|)/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"FLOAT","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"RegexToken","regex":"/[0-9]+\\\\.[0-9]+(?!\\\\.)/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"INT","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"RegexToken","regex":"/0|[1-9][0-9]*(?!\\\\.)/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"NUMBER","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"TerminalAlternatives","elements":[{"$type":"TerminalRuleCall","rule":{"$ref":"#/rules@47"},"parenthesized":false},{"$type":"TerminalRuleCall","rule":{"$ref":"#/rules@48"},"parenthesized":false}],"parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"STRING","type":{"$type":"ReturnType","name":"string"},"definition":{"$type":"RegexToken","regex":"/\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\"|'([^'\\\\\\\\]|\\\\\\\\.)*'/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ID","type":{"$type":"ReturnType","name":"string"},"definition":{"$type":"RegexToken","regex":"/[\\\\w]([-\\\\w]*\\\\w)?/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"NEWLINE","definition":{"$type":"RegexToken","regex":"/\\\\r?\\\\n/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","hidden":true,"name":"WHITESPACE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]+/","parenthesized":false},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"YAML","definition":{"$type":"RegexToken","regex":"/---[\\\\t ]*\\\\r?\\\\n(?:[\\\\S\\\\s]*?\\\\r?\\\\n)?---(?:\\\\r?\\\\n|(?!\\\\S))/","parenthesized":false},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"DIRECTIVE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*%%{[\\\\S\\\\s]*?}%%(?:\\\\r?\\\\n|(?!\\\\S))/","parenthesized":false},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"SINGLE_LINE_COMMENT","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*%%[^\\\\n\\\\r]*/","parenthesized":false},"fragment":false}],"interfaces":[],"types":[]}`)),"WardleyGrammarGrammar"),JEt={languageId:"architecture",fileExtensions:[".mmd",".mermaid"],caseInsensitive:!1,mode:"production"},e4t={languageId:"cynefin",fileExtensions:[".mmd",".mermaid"],caseInsensitive:!1,mode:"production"},t4t={languageId:"eventmodeling",fileExtensions:[".mmd",".mermaid"],caseInsensitive:!1,mode:"production"},r4t={languageId:"gitGraph",fileExtensions:[".mmd",".mermaid"],caseInsensitive:!1,mode:"production"},n4t={languageId:"info",fileExtensions:[".mmd",".mermaid"],caseInsensitive:!1,mode:"production"},i4t={languageId:"packet",fileExtensions:[".mmd",".mermaid"],caseInsensitive:!1,mode:"production"},a4t={languageId:"pie",fileExtensions:[".mmd",".mermaid"],caseInsensitive:!1,mode:"production"},s4t={languageId:"radar",fileExtensions:[".mmd",".mermaid"],caseInsensitive:!1,mode:"production"},o4t={languageId:"railroadAbnf",fileExtensions:[".mmd",".mermaid"],caseInsensitive:!1,mode:"production"},l4t={languageId:"railroadEbnf",fileExtensions:[".mmd",".mermaid"],caseInsensitive:!1,mode:"production"},c4t={languageId:"railroad",fileExtensions:[".mmd",".mermaid"],caseInsensitive:!1,mode:"production"},u4t={languageId:"railroadPeg",fileExtensions:[".mmd",".mermaid"],caseInsensitive:!1,mode:"production"},h4t={languageId:"treemap",fileExtensions:[".mmd",".mermaid"],caseInsensitive:!1,mode:"production"},d4t={languageId:"treeView",fileExtensions:[".mmd",".mermaid"],caseInsensitive:!1,mode:"production"},f4t={languageId:"wardley",fileExtensions:[".mmd",".mermaid"],caseInsensitive:!1,mode:"production"},An={AstReflection:E(()=>new jLe,"AstReflection")},$H={Grammar:E(()=>$Et(),"Grammar"),LanguageMetaData:E(()=>JEt,"LanguageMetaData"),parser:{}},FH={Grammar:E(()=>FEt(),"Grammar"),LanguageMetaData:E(()=>e4t,"LanguageMetaData"),parser:{}},zH={Grammar:E(()=>zEt(),"Grammar"),LanguageMetaData:E(()=>t4t,"LanguageMetaData"),parser:{}},GH={Grammar:E(()=>GEt(),"Grammar"),LanguageMetaData:E(()=>r4t,"LanguageMetaData"),parser:{}},VH={Grammar:E(()=>VEt(),"Grammar"),LanguageMetaData:E(()=>n4t,"LanguageMetaData"),parser:{}},WH={Grammar:E(()=>WEt(),"Grammar"),LanguageMetaData:E(()=>i4t,"LanguageMetaData"),parser:{}},qH={Grammar:E(()=>qEt(),"Grammar"),LanguageMetaData:E(()=>a4t,"LanguageMetaData"),parser:{}},HH={Grammar:E(()=>HEt(),"Grammar"),LanguageMetaData:E(()=>s4t,"LanguageMetaData"),parser:{}},UH={Grammar:E(()=>UEt(),"Grammar"),LanguageMetaData:E(()=>o4t,"LanguageMetaData"),parser:{}},YH={Grammar:E(()=>YEt(),"Grammar"),LanguageMetaData:E(()=>l4t,"LanguageMetaData"),parser:{}},jH={Grammar:E(()=>jEt(),"Grammar"),LanguageMetaData:E(()=>c4t,"LanguageMetaData"),parser:{}},XH={Grammar:E(()=>XEt(),"Grammar"),LanguageMetaData:E(()=>u4t,"LanguageMetaData"),parser:{}},KH={Grammar:E(()=>KEt(),"Grammar"),LanguageMetaData:E(()=>h4t,"LanguageMetaData"),parser:{}},ZH={Grammar:E(()=>ZEt(),"Grammar"),LanguageMetaData:E(()=>d4t,"LanguageMetaData"),parser:{}},QH={Grammar:E(()=>QEt(),"Grammar"),LanguageMetaData:E(()=>f4t,"LanguageMetaData"),parser:{}},p4t=/accDescr(?:[\t ]*:([^\n\r]*)|\s*{([^}]*)})/,m4t=/accTitle[\t ]*:([^\n\r]*)/,g4t=/title([\t ][^\n\r]*|)/,y4t={ACC_DESCR:p4t,ACC_TITLE:m4t,TITLE:g4t},Qi=class extends gH{static{o(this,"AbstractMermaidValueConverter")}static{E(this,"AbstractMermaidValueConverter")}runConverter(e,t,r){let n=this.runCommonConverter(e,t,r);return n===void 0&&(n=this.runCustomConverter(e,t,r)),n===void 0?super.runConverter(e,t,r):n}runCommonConverter(e,t,r){let n=y4t[e.name];if(n===void 0)return;let i=n.exec(t);if(i!==null){if(i[1]!==void 0)return i[1].trim().replace(/[\t ]{2,}/gm," ");if(i[2]!==void 0)return i[2].replace(/^\s*/gm,"").replace(/\s+$/gm,"").replace(/[\t ]{2,}/gm," ").replace(/[\n\r]{2,}/gm,`
+`)}}},Jo=class extends Qi{static{o(this,"CommonValueConverter")}static{E(this,"CommonValueConverter")}runCustomConverter(e,t,r){}},Mn=class extends g_{static{o(this,"AbstractMermaidTokenBuilder")}static{E(this,"AbstractMermaidTokenBuilder")}constructor(e){super(),this.keywords=new Set(e)}buildKeywordTokens(e,t,r){let n=super.buildKeywordTokens(e,t,r);return n.forEach(i=>{this.keywords.has(i.name)&&i.PATTERN!==void 0&&(i.PATTERN=new RegExp(i.PATTERN.toString()+"(?:(?=%%)|(?!\\S))"))}),n}},v4t=class extends Mn{static{o(this,"CommonTokenBuilder")}static{E(this,"CommonTokenBuilder")}};});function A_(e=yn){let t=Mr(dn(e),An),r=Mr(hn({shared:t}),HH,E_);return t.ServiceRegistry.register(r),{shared:t,Radar:r}}var x4t,E_,JH=F(()=>{"use strict";vn();x4t=class extends Mn{static{o(this,"RadarTokenBuilder")}static{E(this,"RadarTokenBuilder")}constructor(){super(["radar-beta"])}},E_={parser:{TokenBuilder:E(()=>new x4t,"TokenBuilder"),ValueConverter:E(()=>new Jo,"ValueConverter")}};o(A_,"createRadarServices");E(A_,"createRadarServices")});function Vv(e=yn){let t=Mr(dn(e),An),r=Mr(hn({shared:t}),jH,R_);return t.ServiceRegistry.register(r),{shared:t,Railroad:r}}var b4t,XLe,T4t,R_,eU=F(()=>{"use strict";vn();b4t=class extends Mn{static{o(this,"RailroadTokenBuilder")}static{E(this,"RailroadTokenBuilder")}constructor(){super(["railroad-beta"])}},XLe=E(e=>{let t=e.slice(1,-1),r="";for(let n=0;n<t.length;n++){let i=t[n];if(i==="\\"&&n+1<t.length){n++;let a=t[n];switch(a){case"n":r+=`
+`;break;case"r":r+="\r";break;case"t":r+="	";break;default:r+=a}continue}r+=i}return r},"decodeEscapedString"),T4t=class extends Qi{static{o(this,"RailroadValueConverter")}static{E(this,"RailroadValueConverter")}runConverter(e,t,r){let n=super.runConverter(e,t,r);if(e.name==="TITLE"&&typeof n=="string"){let i=n.trim();if(i.startsWith('"')&&i.endsWith('"')||i.startsWith("'")&&i.endsWith("'"))return XLe(i)}return n}runCustomConverter(e,t,r){if(e.name==="RR_STRING")return XLe(t)}},R_={parser:{TokenBuilder:E(()=>new b4t,"TokenBuilder"),ValueConverter:E(()=>new T4t,"ValueConverter")}};o(Vv,"createRailroadServices");E(Vv,"createRailroadServices")});function Wv(e=yn){let t=Mr(dn(e),An),r=Mr(hn({shared:t}),YH,__);return t.ServiceRegistry.register(r),{shared:t,RailroadEbnf:r}}var C4t,KLe,w4t,__,tU=F(()=>{"use strict";vn();C4t=class extends Mn{static{o(this,"RailroadEbnfTokenBuilder")}static{E(this,"RailroadEbnfTokenBuilder")}constructor(){super(["railroad-ebnf-beta"])}},KLe=E(e=>{let t=e.slice(1,-1),r="";for(let n=0;n<t.length;n++){let i=t[n];if(i==="\\"&&n+1<t.length){n++;let a=t[n];switch(a){case"n":r+=`
+`;break;case"r":r+="\r";break;case"t":r+="	";break;default:r+=a}continue}r+=i}return r},"decodeEscapedString"),w4t=class extends Qi{static{o(this,"RailroadEbnfValueConverter")}static{E(this,"RailroadEbnfValueConverter")}runConverter(e,t,r){let n=super.runConverter(e,t,r);if(e.name==="TITLE"&&typeof n=="string"){let i=n.trim();if(i.startsWith('"')&&i.endsWith('"')||i.startsWith("'")&&i.endsWith("'"))return KLe(i)}return n}runCustomConverter(e,t,r){if(e.name==="EBNF_STRING")return KLe(t);if(e.name==="EBNF_SPECIAL_SEQUENCE")return t.slice(1,-1).trim()}},__={parser:{TokenBuilder:E(()=>new C4t,"TokenBuilder"),ValueConverter:E(()=>new w4t,"ValueConverter")}};o(Wv,"createRailroadEbnfServices");E(Wv,"createRailroadEbnfServices")});function qv(e=yn){let t=Mr(dn(e),An),r=Mr(hn({shared:t}),UH,L_);return t.ServiceRegistry.register(r),{shared:t,RailroadAbnf:r}}var k4t,S4t,L_,rU=F(()=>{"use strict";vn();k4t=class extends Mn{static{o(this,"RailroadAbnfTokenBuilder")}static{E(this,"RailroadAbnfTokenBuilder")}constructor(){super(["railroad-abnf-beta"])}},S4t=class extends Qi{static{o(this,"RailroadAbnfValueConverter")}static{E(this,"RailroadAbnfValueConverter")}runConverter(e,t,r){let n=super.runConverter(e,t,r);if(e.name==="TITLE"&&typeof n=="string"){let i=n.trim();if(i.startsWith('"')&&i.endsWith('"')||i.startsWith("'")&&i.endsWith("'"))return i.slice(1,-1)}return n}runCustomConverter(e,t,r){if(e.name==="ABNF_STRING")return t.slice(1,-1)}},L_={parser:{TokenBuilder:E(()=>new k4t,"TokenBuilder"),ValueConverter:E(()=>new S4t,"ValueConverter")}};o(qv,"createRailroadAbnfServices");E(qv,"createRailroadAbnfServices")});function Hv(e=yn){let t=Mr(dn(e),An),r=Mr(hn({shared:t}),XH,D_);return t.ServiceRegistry.register(r),{shared:t,RailroadPeg:r}}var E4t,ZLe,A4t,D_,nU=F(()=>{"use strict";vn();E4t=class extends Mn{static{o(this,"RailroadPegTokenBuilder")}static{E(this,"RailroadPegTokenBuilder")}constructor(){super(["railroad-peg-beta"])}},ZLe=E(e=>{let t=e.slice(1,-1),r="";for(let n=0;n<t.length;n++){let i=t[n];if(i==="\\"&&n+1<t.length){n++;let a=t[n];switch(a){case"n":r+=`
+`;break;case"r":r+="\r";break;case"t":r+="	";break;default:r+=a}continue}r+=i}return r},"decodeEscapedString"),A4t=class extends Qi{static{o(this,"RailroadPegValueConverter")}static{E(this,"RailroadPegValueConverter")}runConverter(e,t,r){let n=super.runConverter(e,t,r);if(e.name==="TITLE"&&typeof n=="string"){let i=n.trim();if(i.startsWith('"')&&i.endsWith('"')||i.startsWith("'")&&i.endsWith("'"))return ZLe(i)}return n}runCustomConverter(e,t,r){if(e.name==="PEG_STRING")return ZLe(t)}},D_={parser:{TokenBuilder:E(()=>new E4t,"TokenBuilder"),ValueConverter:E(()=>new A4t,"ValueConverter")}};o(Hv,"createRailroadPegServices");E(Hv,"createRailroadPegServices")});function QLe(e){let t=e.validation.TreemapValidator,r=e.validation.ValidationRegistry;if(r){let n={Treemap:t.checkSingleRoot.bind(t)};r.register(n,t)}}function M_(e=yn){let t=Mr(dn(e),An),r=Mr(hn({shared:t}),KH,I_);return t.ServiceRegistry.register(r),QLe(r),{shared:t,Treemap:r}}var R4t,_4t,L4t,D4t,I_,iU=F(()=>{"use strict";vn();R4t=class extends Mn{static{o(this,"TreemapTokenBuilder")}static{E(this,"TreemapTokenBuilder")}constructor(){super(["treemap"])}},_4t=/classDef\s+([A-Z_a-z]\w+)(?:\s+([^\n\r;]*))?;?/,L4t=class extends Qi{static{o(this,"TreemapValueConverter")}static{E(this,"TreemapValueConverter")}runCustomConverter(e,t,r){if(e.name==="NUMBER2")return parseFloat(t.replace(/,/g,""));if(e.name==="SEPARATOR")return t.substring(1,t.length-1);if(e.name==="STRING2")return t.substring(1,t.length-1);if(e.name==="INDENTATION")return t.length;if(e.name==="ClassDef"){if(typeof t!="string")return t;let n=_4t.exec(t);if(n)return{$type:"ClassDefStatement",className:n[1],styleText:n[2]||void 0}}}};o(QLe,"registerValidationChecks");E(QLe,"registerValidationChecks");D4t=class{static{o(this,"TreemapValidator")}static{E(this,"TreemapValidator")}checkSingleRoot(e,t){let r;for(let n of e.TreemapRows)n.item&&(r===void 0&&n.indent===void 0?r=0:n.indent===void 0?t("error","Multiple root nodes are not allowed in a treemap.",{node:n,property:"item"}):r!==void 0&&r>=parseInt(n.indent,10)&&t("error","Multiple root nodes are not allowed in a treemap.",{node:n,property:"item"}))}},I_={parser:{TokenBuilder:E(()=>new R4t,"TokenBuilder"),ValueConverter:E(()=>new L4t,"ValueConverter")},validation:{TreemapValidator:E(()=>new D4t,"TreemapValidator")}};o(M_,"createTreemapServices");E(M_,"createTreemapServices")});function P_(e=yn){let t=Mr(dn(e),An),r=Mr(hn({shared:t}),QH,N_);return t.ServiceRegistry.register(r),{shared:t,Wardley:r}}var I4t,N_,aU=F(()=>{"use strict";vn();I4t=class extends Qi{static{o(this,"WardleyValueConverter")}static{E(this,"WardleyValueConverter")}runCustomConverter(e,t,r){switch(e.name.toUpperCase()){case"LINK_LABEL":return t.substring(1).trim();default:return}}},N_={parser:{ValueConverter:E(()=>new I4t,"ValueConverter")}};o(P_,"createWardleyServices");E(P_,"createWardleyServices")});function B_(e=yn){let t=Mr(dn(e),An),r=Mr(hn({shared:t}),FH,O_);return t.ServiceRegistry.register(r),{shared:t,Cynefin:r}}var M4t,O_,sU=F(()=>{"use strict";vn();M4t=class extends Mn{static{o(this,"CynefinTokenBuilder")}static{E(this,"CynefinTokenBuilder")}constructor(){super(["cynefin-beta"])}},O_={parser:{TokenBuilder:E(()=>new M4t,"TokenBuilder"),ValueConverter:E(()=>new Jo,"ValueConverter")}};o(B_,"createCynefinServices");E(B_,"createCynefinServices")});function F_(e=yn){let t=Mr(dn(e),An),r=Mr(hn({shared:t}),GH,$_);return t.ServiceRegistry.register(r),{shared:t,GitGraph:r}}var N4t,$_,oU=F(()=>{"use strict";vn();N4t=class extends Mn{static{o(this,"GitGraphTokenBuilder")}static{E(this,"GitGraphTokenBuilder")}constructor(){super(["gitGraph"])}},$_={parser:{TokenBuilder:E(()=>new N4t,"TokenBuilder"),ValueConverter:E(()=>new Jo,"ValueConverter")}};o(F_,"createGitGraphServices");E(F_,"createGitGraphServices")});function G_(e=yn){let t=Mr(dn(e),An),r=Mr(hn({shared:t}),VH,z_);return t.ServiceRegistry.register(r),{shared:t,Info:r}}var P4t,z_,lU=F(()=>{"use strict";vn();P4t=class extends Mn{static{o(this,"InfoTokenBuilder")}static{E(this,"InfoTokenBuilder")}constructor(){super(["info","showInfo"])}},z_={parser:{TokenBuilder:E(()=>new P4t,"TokenBuilder"),ValueConverter:E(()=>new Jo,"ValueConverter")}};o(G_,"createInfoServices");E(G_,"createInfoServices")});function W_(e=yn){let t=Mr(dn(e),An),r=Mr(hn({shared:t}),WH,V_);return t.ServiceRegistry.register(r),{shared:t,Packet:r}}var O4t,V_,cU=F(()=>{"use strict";vn();O4t=class extends Mn{static{o(this,"PacketTokenBuilder")}static{E(this,"PacketTokenBuilder")}constructor(){super(["packet"])}},V_={parser:{TokenBuilder:E(()=>new O4t,"TokenBuilder"),ValueConverter:E(()=>new Jo,"ValueConverter")}};o(W_,"createPacketServices");E(W_,"createPacketServices")});function H_(e=yn){let t=Mr(dn(e),An),r=Mr(hn({shared:t}),qH,q_);return t.ServiceRegistry.register(r),{shared:t,Pie:r}}var B4t,$4t,q_,uU=F(()=>{"use strict";vn();B4t=class extends Mn{static{o(this,"PieTokenBuilder")}static{E(this,"PieTokenBuilder")}constructor(){super(["pie","showData"])}},$4t=class extends Qi{static{o(this,"PieValueConverter")}static{E(this,"PieValueConverter")}runCustomConverter(e,t,r){if(e.name==="PIE_SECTION_LABEL")return t.replace(/"/g,"").trim()}},q_={parser:{TokenBuilder:E(()=>new B4t,"TokenBuilder"),ValueConverter:E(()=>new $4t,"ValueConverter")}};o(H_,"createPieServices");E(H_,"createPieServices")});function Y_(e=yn){let t=Mr(dn(e),An),r=Mr(hn({shared:t}),ZH,U_);return t.ServiceRegistry.register(r),{shared:t,TreeView:r}}var F4t,z4t,U_,hU=F(()=>{"use strict";vn();F4t=class extends Qi{static{o(this,"TreeViewValueConverter")}static{E(this,"TreeViewValueConverter")}runCustomConverter(e,t,r){if(e.name==="INDENTATION")return t?.length||0;if(e.name==="QUOTED_NAME")return t.substring(1,t.length-1);if(e.name==="BARE_NAME")return t.replace(/[\t ]+$/,"");if(e.name==="CLASS_ANNOTATION")return t.trim().substring(3).trim();if(e.name==="ICON_ANNOTATION"){let n=t.trim();return n.substring(5,n.length-1)}if(e.name==="DESC_ANNOTATION")return t.trim().substring(2).trim()}},z4t=class extends Mn{static{o(this,"TreeViewTokenBuilder")}static{E(this,"TreeViewTokenBuilder")}constructor(){super(["treeView-beta"])}},U_={parser:{TokenBuilder:E(()=>new z4t,"TokenBuilder"),ValueConverter:E(()=>new F4t,"ValueConverter")}};o(Y_,"createTreeViewServices");E(Y_,"createTreeViewServices")});function X_(e=yn){let t=Mr(dn(e),An),r=Mr(hn({shared:t}),$H,j_);return t.ServiceRegistry.register(r),{shared:t,Architecture:r}}var G4t,V4t,j_,dU=F(()=>{"use strict";vn();G4t=class extends Mn{static{o(this,"ArchitectureTokenBuilder")}static{E(this,"ArchitectureTokenBuilder")}constructor(){super(["architecture"])}},V4t=class extends Qi{static{o(this,"ArchitectureValueConverter")}static{E(this,"ArchitectureValueConverter")}runCustomConverter(e,t,r){if(e.name==="ARCH_ICON")return t.replace(/[()]/g,"").trim();if(e.name==="ARCH_TEXT_ICON")return t.replace(/["()]/g,"");if(e.name==="ARCH_TITLE"){let n=t.replace(/^\[|]$/g,"").trim();return(n.startsWith('"')&&n.endsWith('"')||n.startsWith("'")&&n.endsWith("'"))&&(n=n.slice(1,-1),n=n.replace(/\\"/g,'"').replace(/\\'/g,"'")),n.trim()}}},j_={parser:{TokenBuilder:E(()=>new G4t,"TokenBuilder"),ValueConverter:E(()=>new V4t,"ValueConverter")}};o(X_,"createArchitectureServices");E(X_,"createArchitectureServices")});function nDe(e){let t=e.validation.EventModelingValidator,r=e.validation.ValidationRegistry;if(r){let n={EmTimeFrame:t.checkSourceFrameTypes.bind(t),EmResetFrame:t.checkSourceFrameTypes.bind(t)};r.register(n,t)}}function Z_(e=yn){let t=Mr(dn(e),An),r=Mr(hn({shared:t}),zH,K_);return t.ServiceRegistry.register(r),nDe(r),{shared:t,EventModel:r}}var W4t,JLe,eDe,fU,tDe,rDe,q4t,K_,pU=F(()=>{"use strict";vn();W4t=class extends Mn{static{o(this,"EventModelingTokenBuilder")}static{E(this,"EventModelingTokenBuilder")}constructor(){super(["eventmodeling"])}},JLe=new Set(["cmd","command"]),eDe=new Set(["evt","event"]),fU=new Set(["rmo","readmodel"]),tDe=new Set(["pcr","processor"]),rDe=new Set(["ui"]);o(nDe,"registerValidationChecks");E(nDe,"registerValidationChecks");q4t=class{static{o(this,"EventModelingValidator")}static{E(this,"EventModelingValidator")}checkSourceFrameTypes(e,t){e.sourceFrames.length!==0&&(JLe.has(e.modelEntityType)?this.validateSources(e,new Set([...rDe,...tDe]),"command","ui or processor",t):eDe.has(e.modelEntityType)?this.validateSources(e,JLe,"event","command",t):fU.has(e.modelEntityType)?this.validateSources(e,eDe,"read model","event",t):tDe.has(e.modelEntityType)?this.validateSources(e,fU,"processor","read model",t):rDe.has(e.modelEntityType)&&this.validateSources(e,fU,"ui","read model",t))}validateSources(e,t,r,n,i){for(let a of e.sourceFrames){let s=a.ref;s!==void 0&&!t.has(s.modelEntityType)&&i("error",`A ${r} can only receive input from a ${n}, not from '${s.modelEntityType}'.`,{node:e,property:"sourceFrames"})}}},K_={parser:{TokenBuilder:E(()=>new W4t,"TokenBuilder"),ValueConverter:E(()=>new Jo,"ValueConverter")},validation:{EventModelingValidator:E(()=>new q4t,"EventModelingValidator")}};o(Z_,"createEventModelingServices");E(Z_,"createEventModelingServices")});var iDe={};ir(iDe,{InfoModule:()=>z_,createInfoServices:()=>G_});var aDe=F(()=>{"use strict";lU();vn()});var sDe={};ir(sDe,{PacketModule:()=>V_,createPacketServices:()=>W_});var oDe=F(()=>{"use strict";cU();vn()});var lDe={};ir(lDe,{PieModule:()=>q_,createPieServices:()=>H_});var cDe=F(()=>{"use strict";uU();vn()});var uDe={};ir(uDe,{TreeViewModule:()=>U_,createTreeViewServices:()=>Y_});var hDe=F(()=>{"use strict";hU();vn()});var dDe={};ir(dDe,{ArchitectureModule:()=>j_,createArchitectureServices:()=>X_});var fDe=F(()=>{"use strict";dU();vn()});var pDe={};ir(pDe,{GitGraphModule:()=>$_,createGitGraphServices:()=>F_});var mDe=F(()=>{"use strict";oU();vn()});var gDe={};ir(gDe,{EventModelingModule:()=>K_,createEventModelingServices:()=>Z_});var yDe=F(()=>{"use strict";pU();vn()});var vDe={};ir(vDe,{RadarModule:()=>E_,createRadarServices:()=>A_});var xDe=F(()=>{"use strict";JH();vn()});var bDe={};ir(bDe,{RailroadModule:()=>R_,createRailroadServices:()=>Vv});var TDe=F(()=>{"use strict";eU();vn()});var CDe={};ir(CDe,{RailroadEbnfModule:()=>__,createRailroadEbnfServices:()=>Wv});var wDe=F(()=>{"use strict";tU();vn()});var kDe={};ir(kDe,{RailroadAbnfModule:()=>L_,createRailroadAbnfServices:()=>qv});var SDe=F(()=>{"use strict";rU();vn()});var EDe={};ir(EDe,{RailroadPegModule:()=>D_,createRailroadPegServices:()=>Hv});var ADe=F(()=>{"use strict";nU();vn()});var RDe={};ir(RDe,{TreemapModule:()=>I_,createTreemapServices:()=>M_});var _De=F(()=>{"use strict";iU();vn()});var LDe={};ir(LDe,{WardleyModule:()=>N_,createWardleyServices:()=>P_});var DDe=F(()=>{"use strict";aU();vn()});var IDe={};ir(IDe,{CynefinModule:()=>O_,createCynefinServices:()=>B_});var MDe=F(()=>{"use strict";sU();vn()});async function Si(e,t){let r=H4t[e];if(!r)throw new Error(`Unknown diagram type: ${e}`);ja[e]||await r();let i=ja[e].parse(t);if(i.lexerErrors.length>0||i.parserErrors.length>0)throw new ad(i);return i.value}var ja,H4t,ad,Xa=F(()=>{"use strict";JH();eU();tU();rU();nU();iU();aU();sU();oU();lU();cU();uU();hU();dU();pU();vn();ja={},H4t={info:E(async()=>{let{createInfoServices:e}=await Promise.resolve().then(()=>(aDe(),iDe)),t=e().Info.parser.LangiumParser;ja.info=t},"info"),packet:E(async()=>{let{createPacketServices:e}=await Promise.resolve().then(()=>(oDe(),sDe)),t=e().Packet.parser.LangiumParser;ja.packet=t},"packet"),pie:E(async()=>{let{createPieServices:e}=await Promise.resolve().then(()=>(cDe(),lDe)),t=e().Pie.parser.LangiumParser;ja.pie=t},"pie"),treeView:E(async()=>{let{createTreeViewServices:e}=await Promise.resolve().then(()=>(hDe(),uDe)),t=e().TreeView.parser.LangiumParser;ja.treeView=t},"treeView"),architecture:E(async()=>{let{createArchitectureServices:e}=await Promise.resolve().then(()=>(fDe(),dDe)),t=e().Architecture.parser.LangiumParser;ja.architecture=t},"architecture"),gitGraph:E(async()=>{let{createGitGraphServices:e}=await Promise.resolve().then(()=>(mDe(),pDe)),t=e().GitGraph.parser.LangiumParser;ja.gitGraph=t},"gitGraph"),eventmodeling:E(async()=>{let{createEventModelingServices:e}=await Promise.resolve().then(()=>(yDe(),gDe)),t=e().EventModel.parser.LangiumParser;ja.eventmodeling=t},"eventmodeling"),radar:E(async()=>{let{createRadarServices:e}=await Promise.resolve().then(()=>(xDe(),vDe)),t=e().Radar.parser.LangiumParser;ja.radar=t},"radar"),railroad:E(async()=>{let{createRailroadServices:e}=await Promise.resolve().then(()=>(TDe(),bDe)),t=e().Railroad.parser.LangiumParser;ja.railroad=t},"railroad"),railroadEbnf:E(async()=>{let{createRailroadEbnfServices:e}=await Promise.resolve().then(()=>(wDe(),CDe)),t=e().RailroadEbnf.parser.LangiumParser;ja.railroadEbnf=t},"railroadEbnf"),railroadAbnf:E(async()=>{let{createRailroadAbnfServices:e}=await Promise.resolve().then(()=>(SDe(),kDe)),t=e().RailroadAbnf.parser.LangiumParser;ja.railroadAbnf=t},"railroadAbnf"),railroadPeg:E(async()=>{let{createRailroadPegServices:e}=await Promise.resolve().then(()=>(ADe(),EDe)),t=e().RailroadPeg.parser.LangiumParser;ja.railroadPeg=t},"railroadPeg"),treemap:E(async()=>{let{createTreemapServices:e}=await Promise.resolve().then(()=>(_De(),RDe)),t=e().Treemap.parser.LangiumParser;ja.treemap=t},"treemap"),wardley:E(async()=>{let{createWardleyServices:e}=await Promise.resolve().then(()=>(DDe(),LDe)),t=e().Wardley.parser.LangiumParser;ja.wardley=t},"wardley"),cynefin:E(async()=>{let{createCynefinServices:e}=await Promise.resolve().then(()=>(MDe(),IDe)),t=e().Cynefin.parser.LangiumParser;ja.cynefin=t},"cynefin")};o(Si,"parse");E(Si,"parse");ad=class extends Error{static{o(this,"MermaidParseError")}constructor(e){let t=e.lexerErrors.map(n=>{let i=n.line!==void 0&&!isNaN(n.line)?n.line:"?",a=n.column!==void 0&&!isNaN(n.column)?n.column:"?";return`Lexer error on line ${i}, column ${a}: ${n.message}`}).join(`
+`),r=e.parserErrors.map(n=>{let i=n.token.startLine!==void 0&&!isNaN(n.token.startLine)?n.token.startLine:"?",a=n.token.startColumn!==void 0&&!isNaN(n.token.startColumn)?n.token.startColumn:"?";return`Parse error on line ${i}, column ${a}: ${n.message}`}).join(`
+`);super(`Parsing failed: ${t} ${r}`),this.result=e}static{E(this,"MermaidParseError")}}});function Gn(e,t){e.accDescr&&t.setAccDescription?.(e.accDescr),e.accTitle&&t.setAccTitle?.(e.accTitle),e.title&&t.setDiagramTitle?.(e.title)}var Hs=F(()=>{"use strict";o(Gn,"populateCommonDb")});var Rn,Q_=F(()=>{"use strict";Rn={NORMAL:0,REVERSE:1,HIGHLIGHT:2,MERGE:3,CHERRY_PICK:4}});var Cp,J_=F(()=>{"use strict";Cp=class{constructor(t){this.init=t;this.records=this.init()}static{o(this,"ImperativeState")}reset(){this.records=this.init()}}});function mU(){return dP({length:7})}function Y4t(e,t){let r=Object.create(null);return e.reduce((n,i)=>{let a=t(i);return r[a]||(r[a]=!0,n.push(i)),n},[])}function NDe(e,t,r){let n=e.indexOf(t);n===-1?e.push(r):e.splice(n,1,r)}function ODe(e){let t=e.reduce((i,a)=>i.seq>a.seq?i:a,e[0]),r="";e.forEach(function(i){i===t?r+="	*":r+="	|"});let n=[r,t.id,t.seq];for(let i in Vt.records.branches)Vt.records.branches.get(i)===t.id&&n.push(i);if(Z.debug(n.join(" ")),t.parents&&t.parents.length==2&&t.parents[0]&&t.parents[1]){let i=Vt.records.commits.get(t.parents[0]);NDe(e,t,i),t.parents[1]&&e.push(Vt.records.commits.get(t.parents[1]))}else{if(t.parents.length==0)return;if(t.parents[0]){let i=Vt.records.commits.get(t.parents[0]);NDe(e,t,i)}}e=Y4t(e,i=>i.id),ODe(e)}var U4t,x0,Vt,j4t,X4t,K4t,Z4t,Q4t,J4t,e3t,PDe,t3t,r3t,n3t,i3t,a3t,BDe,s3t,o3t,l3t,eL,gU=F(()=>{"use strict";vt();Qt();ur();Vr();Nn();Q_();J_();Wi();U4t=cr.gitGraph,x0=o(()=>qr({...U4t,..._t().gitGraph}),"getConfig"),Vt=new Cp(()=>{let e=x0(),t=e.mainBranchName,r=e.mainBranchOrder;return{mainBranchName:t,commits:new Map,head:null,branchConfig:new Map([[t,{name:t,order:r}]]),branches:new Map([[t,null]]),currBranch:t,direction:"LR",seq:0,options:{}}});o(mU,"getID");o(Y4t,"uniqBy");j4t=o(function(e){Vt.records.direction=e},"setDirection"),X4t=o(function(e){Z.debug("options str",e),e=e?.trim(),e=e||"{}";try{Vt.records.options=JSON.parse(e)}catch(t){Z.error("error while parsing gitGraph options",t.message)}},"setOptions"),K4t=o(function(){return Vt.records.options},"getOptions"),Z4t=o(function(e){let t=e.msg,r=e.id,n=e.type,i=e.tags;Z.info("commit",t,r,n,i),Z.debug("Entering commit:",t,r,n,i);let a=x0();r=xt.sanitizeText(r,a),t=xt.sanitizeText(t,a),i=i?.map(l=>xt.sanitizeText(l,a));let s={id:r||Vt.records.seq+"-"+mU(),message:t,seq:Vt.records.seq++,type:n??Rn.NORMAL,tags:i??[],parents:Vt.records.head==null?[]:[Vt.records.head.id],branch:Vt.records.currBranch};Vt.records.head=s,Z.info("main branch",a.mainBranchName),Vt.records.commits.has(s.id)&&Z.warn(`Commit ID ${s.id} already exists`),Vt.records.commits.set(s.id,s),Vt.records.branches.set(Vt.records.currBranch,s.id),Z.debug("in pushCommit "+s.id)},"commit"),Q4t=o(function(e){let t=e.name,r=e.order;if(t=xt.sanitizeText(t,x0()),Vt.records.branches.has(t))throw new Error(`Trying to create an existing branch. (Help: Either use a new name if you want create a new branch or try using "checkout ${t}")`);Vt.records.branches.set(t,Vt.records.head!=null?Vt.records.head.id:null),Vt.records.branchConfig.set(t,{name:t,order:r}),PDe(t),Z.debug("in createBranch")},"branch"),J4t=o(e=>{let t=e.branch,r=e.id,n=e.type,i=e.tags,a=x0();t=xt.sanitizeText(t,a),r&&(r=xt.sanitizeText(r,a));let s=Vt.records.branches.get(Vt.records.currBranch),l=Vt.records.branches.get(t),u=s?Vt.records.commits.get(s):void 0,h=l?Vt.records.commits.get(l):void 0;if(u&&h&&u.branch===t)throw new Error(`Cannot merge branch '${t}' into itself.`);if(Vt.records.currBranch===t){let p=new Error('Incorrect usage of "merge". Cannot merge a branch to itself');throw p.hash={text:`merge ${t}`,token:`merge ${t}`,expected:["branch abc"]},p}if(u===void 0||!u){let p=new Error(`Incorrect usage of "merge". Current branch (${Vt.records.currBranch})has no commits`);throw p.hash={text:`merge ${t}`,token:`merge ${t}`,expected:["commit"]},p}if(!Vt.records.branches.has(t)){let p=new Error('Incorrect usage of "merge". Branch to be merged ('+t+") does not exist");throw p.hash={text:`merge ${t}`,token:`merge ${t}`,expected:[`branch ${t}`]},p}if(h===void 0||!h){let p=new Error('Incorrect usage of "merge". Branch to be merged ('+t+") has no commits");throw p.hash={text:`merge ${t}`,token:`merge ${t}`,expected:['"commit"']},p}if(u===h){let p=new Error('Incorrect usage of "merge". Both branches have same head');throw p.hash={text:`merge ${t}`,token:`merge ${t}`,expected:["branch abc"]},p}if(r&&Vt.records.commits.has(r)){let p=new Error('Incorrect usage of "merge". Commit with id:'+r+" already exists, use different custom id");throw p.hash={text:`merge ${t} ${r} ${n} ${i?.join(" ")}`,token:`merge ${t} ${r} ${n} ${i?.join(" ")}`,expected:[`merge ${t} ${r}_UNIQUE ${n} ${i?.join(" ")}`]},p}let d=l||"",f={id:r||`${Vt.records.seq}-${mU()}`,message:`merged branch ${t} into ${Vt.records.currBranch}`,seq:Vt.records.seq++,parents:Vt.records.head==null?[]:[Vt.records.head.id,d],branch:Vt.records.currBranch,type:Rn.MERGE,customType:n,customId:!!r,tags:i??[]};Vt.records.head=f,Vt.records.commits.set(f.id,f),Vt.records.branches.set(Vt.records.currBranch,f.id),Z.debug(Vt.records.branches),Z.debug("in mergeBranch")},"merge"),e3t=o(function(e){let t=e.id,r=e.targetId,n=e.tags,i=e.parent;Z.debug("Entering cherryPick:",t,r,n);let a=x0();if(t=xt.sanitizeText(t,a),r=xt.sanitizeText(r,a),n=n?.map(u=>xt.sanitizeText(u,a)),i=xt.sanitizeText(i,a),!t||!Vt.records.commits.has(t)){let u=new Error('Incorrect usage of "cherryPick". Source commit id should exist and provided');throw u.hash={text:`cherryPick ${t} ${r}`,token:`cherryPick ${t} ${r}`,expected:["cherry-pick abc"]},u}let s=Vt.records.commits.get(t);if(s===void 0||!s)throw new Error('Incorrect usage of "cherryPick". Source commit id should exist and provided');if(i&&!(Array.isArray(s.parents)&&s.parents.includes(i)))throw new Error("Invalid operation: The specified parent commit is not an immediate parent of the cherry-picked commit.");let l=s.branch;if(s.type===Rn.MERGE&&!i)throw new Error("Incorrect usage of cherry-pick: If the source commit is a merge commit, an immediate parent commit must be specified.");if(!r||!Vt.records.commits.has(r)){if(l===Vt.records.currBranch){let f=new Error('Incorrect usage of "cherryPick". Source commit is already on current branch');throw f.hash={text:`cherryPick ${t} ${r}`,token:`cherryPick ${t} ${r}`,expected:["cherry-pick abc"]},f}let u=Vt.records.branches.get(Vt.records.currBranch);if(u===void 0||!u){let f=new Error(`Incorrect usage of "cherry-pick". Current branch (${Vt.records.currBranch})has no commits`);throw f.hash={text:`cherryPick ${t} ${r}`,token:`cherryPick ${t} ${r}`,expected:["cherry-pick abc"]},f}let h=Vt.records.commits.get(u);if(h===void 0||!h){let f=new Error(`Incorrect usage of "cherry-pick". Current branch (${Vt.records.currBranch})has no commits`);throw f.hash={text:`cherryPick ${t} ${r}`,token:`cherryPick ${t} ${r}`,expected:["cherry-pick abc"]},f}let d={id:Vt.records.seq+"-"+mU(),message:`cherry-picked ${s?.message} into ${Vt.records.currBranch}`,seq:Vt.records.seq++,parents:Vt.records.head==null?[]:[Vt.records.head.id,s.id],branch:Vt.records.currBranch,type:Rn.CHERRY_PICK,tags:n?n.filter(Boolean):[`cherry-pick:${s.id}${s.type===Rn.MERGE?`|parent:${i}`:""}`]};Vt.records.head=d,Vt.records.commits.set(d.id,d),Vt.records.branches.set(Vt.records.currBranch,d.id),Z.debug(Vt.records.branches),Z.debug("in cherryPick")}},"cherryPick"),PDe=o(function(e){if(e=xt.sanitizeText(e,x0()),Vt.records.branches.has(e)){Vt.records.currBranch=e;let t=Vt.records.branches.get(Vt.records.currBranch);t===void 0||!t?Vt.records.head=null:Vt.records.head=Vt.records.commits.get(t)??null}else{let t=new Error(`Trying to checkout branch which is not yet created. (Help try using "branch ${e}")`);throw t.hash={text:`checkout ${e}`,token:`checkout ${e}`,expected:[`branch ${e}`]},t}},"checkout");o(NDe,"upsert");o(ODe,"prettyPrintCommitHistory");t3t=o(function(){Z.debug(Vt.records.commits);let e=BDe()[0];ODe([e])},"prettyPrint"),r3t=o(function(){Vt.reset(),yr()},"clear"),n3t=o(function(){return[...Vt.records.branchConfig.values()].map((t,r)=>t.order!==null&&t.order!==void 0?t:{...t,order:parseFloat(`0.${r}`)}).sort((t,r)=>(t.order??0)-(r.order??0)).map(({name:t})=>({name:t}))},"getBranchesAsObjArray"),i3t=o(function(){return Vt.records.branches},"getBranches"),a3t=o(function(){return Vt.records.commits},"getCommits"),BDe=o(function(){let e=[...Vt.records.commits.values()];return e.forEach(function(t){Z.debug(t.id)}),e.sort((t,r)=>t.seq-r.seq),e},"getCommitsArray"),s3t=o(function(){return Vt.records.currBranch},"getCurrentBranch"),o3t=o(function(){return Vt.records.direction},"getDirection"),l3t=o(function(){return Vt.records.head},"getHead"),eL={commitType:Rn,getConfig:x0,setDirection:j4t,setOptions:X4t,getOptions:K4t,commit:Z4t,branch:Q4t,merge:J4t,cherryPick:e3t,checkout:PDe,prettyPrint:t3t,clear:r3t,getBranchesAsObjArray:n3t,getBranches:i3t,getCommits:a3t,getCommitsArray:BDe,getCurrentBranch:s3t,getDirection:o3t,getHead:l3t,setAccTitle:kr,getAccTitle:Ar,getAccDescription:_r,setAccDescription:Rr,setDiagramTitle:Or,getDiagramTitle:Lr}});var c3t,u3t,h3t,d3t,f3t,p3t,m3t,$De,FDe=F(()=>{"use strict";Xa();vt();Hs();gU();Q_();c3t=o((e,t)=>{Gn(e,t),e.dir&&t.setDirection(e.dir);for(let r of e.statements)u3t(r,t)},"populate"),u3t=o((e,t)=>{let n={Commit:o(i=>t.commit(h3t(i)),"Commit"),Branch:o(i=>t.branch(d3t(i)),"Branch"),Merge:o(i=>t.merge(f3t(i)),"Merge"),Checkout:o(i=>t.checkout(p3t(i)),"Checkout"),CherryPicking:o(i=>t.cherryPick(m3t(i)),"CherryPicking")}[e.$type];n?n(e):Z.error(`Unknown statement type: ${e.$type}`)},"parseStatement"),h3t=o(e=>({id:e.id,msg:e.message??"",type:e.type!==void 0?Rn[e.type]:Rn.NORMAL,tags:e.tags??void 0}),"parseCommit"),d3t=o(e=>({name:e.name,order:e.order??0}),"parseBranch"),f3t=o(e=>({branch:e.branch,id:e.id??"",type:e.type!==void 0?Rn[e.type]:void 0,tags:e.tags??void 0}),"parseMerge"),p3t=o(e=>e.branch,"parseCheckout"),m3t=o(e=>({id:e.id,targetId:"",tags:e.tags?.length===0?void 0:e.tags,parent:e.parent}),"parseCherryPicking"),$De={parse:o(async e=>{let t=await Si("gitGraph",e);Z.debug(t),c3t(t,eL)},"parse")}});var wp,kp,Wu,sd,b0,nL,yU,vU,g3t,T0,So,Eo,tL,Iw,rL,od,rn,y3t,GDe,VDe,v3t,x3t,b3t,T3t,C3t,w3t,k3t,S3t,E3t,A3t,R3t,_3t,zDe,L3t,Mw,D3t,I3t,M3t,N3t,P3t,WDe,qDe=F(()=>{"use strict";$r();Xt();vt();Qt();Q_();wp=10,kp=40,Wu=4,sd=2,b0=8,nL=new Set(["redux","redux-dark","redux-color","redux-dark-color"]),yU=12,vU=new Set(["redux-color","redux-dark-color"]),g3t=new Set(["dark","redux-dark","redux-dark-color","neo-dark"]),T0=o((e,t,r=!1)=>r&&e>0?(e-1)%(t-1)+1:e%t,"calcColorIndex"),So=new Map,Eo=new Map,tL=30,Iw=new Map,rL=[],od=0,rn="LR",y3t=o(()=>{So.clear(),Eo.clear(),Iw.clear(),od=0,rL=[],rn="LR"},"clear"),GDe=o(e=>{let t=document.createElementNS("http://www.w3.org/2000/svg","text");return(typeof e=="string"?e.split(/\\n|\n|<br\s*\/?>/gi):e).forEach(n=>{let i=document.createElementNS("http://www.w3.org/2000/svg","tspan");i.setAttributeNS("http://www.w3.org/XML/1998/namespace","xml:space","preserve"),i.setAttribute("dy","1em"),i.setAttribute("x","0"),i.setAttribute("class","row"),i.textContent=n.trim(),t.appendChild(i)}),t},"drawText"),VDe=o(e=>{let t,r,n;return rn==="BT"?(r=o((i,a)=>i<=a,"comparisonFunc"),n=1/0):(r=o((i,a)=>i>=a,"comparisonFunc"),n=0),e.forEach(i=>{let a=rn==="TB"||rn=="BT"?Eo.get(i)?.y:Eo.get(i)?.x;a!==void 0&&r(a,n)&&(t=i,n=a)}),t},"findClosestParent"),v3t=o(e=>{let t="",r=1/0;return e.forEach(n=>{let i=Eo.get(n).y;i<=r&&(t=n,r=i)}),t||void 0},"findClosestParentBT"),x3t=o((e,t,r)=>{let n=r,i=r,a=[];e.forEach(s=>{let l=t.get(s);if(!l)throw new Error(`Commit not found for key ${s}`);l.parents.length?(n=T3t(l),i=Math.max(n,i)):a.push(l),C3t(l,n)}),n=i,a.forEach(s=>{w3t(s,n,r)}),e.forEach(s=>{let l=t.get(s);if(l?.parents.length){let u=v3t(l.parents);n=Eo.get(u).y-kp,n<=i&&(i=n);let h=So.get(l.branch).pos,d=n-wp;Eo.set(l.id,{x:h,y:d})}})},"setParallelBTPos"),b3t=o(e=>{let t=VDe(e.parents.filter(n=>n!==null));if(!t)throw new Error(`Closest parent not found for commit ${e.id}`);let r=Eo.get(t)?.y;if(r===void 0)throw new Error(`Closest parent position not found for commit ${e.id}`);return r},"findClosestParentPos"),T3t=o(e=>b3t(e)+kp,"calculateCommitPosition"),C3t=o((e,t)=>{let r=So.get(e.branch);if(!r)throw new Error(`Branch not found for commit ${e.id}`);let n=r.pos,i=t+wp;return Eo.set(e.id,{x:n,y:i}),{x:n,y:i}},"setCommitPosition"),w3t=o((e,t,r)=>{let n=So.get(e.branch);if(!n)throw new Error(`Branch not found for commit ${e.id}`);let i=t+r,a=n.pos;Eo.set(e.id,{x:a,y:i})},"setRootPosition"),k3t=o((e,t,r,n,i,a)=>{let{theme:s}=Ae(),l=nL.has(s??""),u=vU.has(s??""),h=g3t.has(s??"");if(a===Rn.HIGHLIGHT)e.append("rect").attr("x",r.x-10+(l?3:0)).attr("y",r.y-10+(l?3:0)).attr("width",l?14:20).attr("height",l?14:20).attr("class",`commit ${t.id} commit-highlight${T0(i,b0,u)} ${n}-outer`),e.append("rect").attr("x",r.x-6+(l?2:0)).attr("y",r.y-6+(l?2:0)).attr("width",l?8:12).attr("height",l?8:12).attr("class",`commit ${t.id} commit${T0(i,b0,u)} ${n}-inner`);else if(a===Rn.CHERRY_PICK)e.append("circle").attr("cx",r.x).attr("cy",r.y).attr("r",l?7:10).attr("class",`commit ${t.id} ${n}`),e.append("circle").attr("cx",r.x-3).attr("cy",r.y+2).attr("r",l?2.5:2.75).attr("fill",h?"#000000":"#fff").attr("class",`commit ${t.id} ${n}`),e.append("circle").attr("cx",r.x+3).attr("cy",r.y+2).attr("r",l?2.5:2.75).attr("fill",h?"#000000":"#fff").attr("class",`commit ${t.id} ${n}`),e.append("line").attr("x1",r.x+3).attr("y1",r.y+1).attr("x2",r.x).attr("y2",r.y-5).attr("stroke",h?"#000000":"#fff").attr("class",`commit ${t.id} ${n}`),e.append("line").attr("x1",r.x-3).attr("y1",r.y+1).attr("x2",r.x).attr("y2",r.y-5).attr("stroke",h?"#000000":"#fff").attr("class",`commit ${t.id} ${n}`);else{let d=e.append("circle");if(d.attr("cx",r.x),d.attr("cy",r.y),d.attr("r",l?7:10),d.attr("class",`commit ${t.id} commit${T0(i,b0,u)}`),a===Rn.MERGE){let f=e.append("circle");f.attr("cx",r.x),f.attr("cy",r.y),f.attr("r",l?5:6),f.attr("class",`commit ${n} ${t.id} commit${T0(i,b0,u)}`)}if(a===Rn.REVERSE){let f=e.append("path"),p=l?4:5;f.attr("d",`M ${r.x-p},${r.y-p}L${r.x+p},${r.y+p}M${r.x-p},${r.y+p}L${r.x+p},${r.y-p}`).attr("class",`commit ${n} ${t.id} commit${T0(i,b0,u)}`)}}},"drawCommitBullet"),S3t=o((e,t,r,n,i)=>{if(t.type!==Rn.CHERRY_PICK&&(t.customId&&t.type===Rn.MERGE||t.type!==Rn.MERGE)&&i.showCommitLabel){let a=e.append("g"),s=a.insert("rect").attr("class","commit-label-bkg"),l=a.append("text").attr("x",n).attr("y",r.y+25).attr("class","commit-label").text(t.id),u=l.node()?.getBBox();if(u&&(s.attr("x",r.posWithOffset-u.width/2-sd).attr("y",r.y+13.5).attr("width",u.width+2*sd).attr("height",u.height+2*sd),rn==="TB"||rn==="BT"?(s.attr("x",r.x-(u.width+4*Wu+5)).attr("y",r.y-12),l.attr("x",r.x-(u.width+4*Wu)).attr("y",r.y+u.height-12)):l.attr("x",r.posWithOffset-u.width/2),i.rotateCommitLabel))if(rn==="TB"||rn==="BT")l.attr("transform","rotate(-45, "+r.x+", "+r.y+")"),s.attr("transform","rotate(-45, "+r.x+", "+r.y+")");else{let h=-7.5-(u.width+10)/25*9.5,d=10+u.width/25*8.5;a.attr("transform","translate("+h+", "+d+") rotate(-45, "+n+", "+r.y+")")}}},"drawCommitLabel"),E3t=o((e,t,r,n)=>{if(t.tags.length>0){let i=0,a=0,s=0,l=[];for(let u of t.tags.reverse()){let h=e.insert("polygon"),d=e.append("circle"),f=e.append("text").attr("y",r.y-16-i).attr("class","tag-label").text(u),p=f.node()?.getBBox();if(!p)throw new Error("Tag bbox not found");a=Math.max(a,p.width),s=Math.max(s,p.height),f.attr("x",r.posWithOffset-p.width/2),l.push({tag:f,hole:d,rect:h,yOffset:i}),i+=20}for(let{tag:u,hole:h,rect:d,yOffset:f}of l){let p=s/2,m=r.y-19.2-f;if(d.attr("class","tag-label-bkg").attr("points",`
+      ${n-a/2-Wu/2},${m+sd}  
+      ${n-a/2-Wu/2},${m-sd}
+      ${r.posWithOffset-a/2-Wu},${m-p-sd}
+      ${r.posWithOffset+a/2+Wu},${m-p-sd}
+      ${r.posWithOffset+a/2+Wu},${m+p+sd}
+      ${r.posWithOffset-a/2-Wu},${m+p+sd}`),h.attr("cy",m).attr("cx",n-a/2+Wu/2).attr("r",1.5).attr("class","tag-hole"),rn==="TB"||rn==="BT"){let g=n+f;d.attr("class","tag-label-bkg").attr("points",`
         ${r.x},${g+2}
         ${r.x},${g-2}
-        ${r.x+Sf},${g-p-2}
-        ${r.x+Sf+a+4},${g-p-2}
-        ${r.x+Sf+a+4},${g+p+2}
-        ${r.x+Sf},${g+p+2}`).attr("transform","translate(12,12) rotate(45, "+r.x+","+i+")"),h.attr("cx",r.x+su/2).attr("cy",g).attr("transform","translate(12,12) rotate(45, "+r.x+","+i+")"),u.attr("x",r.x+5).attr("y",g+3).attr("transform","translate(14,14) rotate(45, "+r.x+","+i+")")}}}},"drawCommitTags"),ebt=o(e=>{switch(e.customType??e.type){case si.NORMAL:return"commit-normal";case si.REVERSE:return"commit-reverse";case si.HIGHLIGHT:return"commit-highlight";case si.MERGE:return"commit-merge";case si.CHERRY_PICK:return"commit-cherry-pick";default:return"commit-normal"}},"getCommitClassType"),tbt=o((e,t,r,i)=>{let n={x:0,y:0};if(e.parents.length>0){let a=ZEe(e.parents);if(a){let s=i.get(a)??n;return t==="TB"?s.y+Ef:t==="BT"?(i.get(e.id)??n).y-Ef:s.x+Ef}}else return t==="TB"?k6:t==="BT"?(i.get(e.id)??n).y-Ef:0;return 0},"calculatePosition"),rbt=o((e,t,r)=>{let i=Vr==="BT"&&r?t:t+Sf,n=Hs.get(e.branch)?.pos,a=Vr==="TB"||Vr==="BT"?Hs.get(e.branch)?.pos:i;if(a===void 0||n===void 0)throw new Error(`Position were undefined for commit ${e.id}`);let s=S6.has(ge().theme??""),l=Vr==="TB"||Vr==="BT"?i:n+(s?gV/2+1:-2);return{x:a,y:l,posWithOffset:i}},"getCommitPosition"),XEe=o((e,t,r,i)=>{let n=e.append("g").attr("class","commit-bullets"),a=e.append("g").attr("class","commit-labels"),s=Vr==="TB"||Vr==="BT"?k6:0,l=[...t.keys()],u=i.parallelCommits??!1,h=o((f,p)=>{let m=t.get(f)?.seq,g=t.get(p)?.seq;return m!==void 0&&g!==void 0?m-g:0},"sortKeys"),d=l.sort(h);Vr==="BT"&&(u&&Hxt(d,t,s),d=d.reverse()),d.forEach(f=>{let p=t.get(f);if(!p)throw new Error(`Commit not found for key ${f}`);u&&(s=tbt(p,Vr,s,Ys));let m=rbt(p,s,u);if(r){let g=ebt(p),y=p.customType??p.type,v=Hs.get(p.branch)?.index??0;Zxt(n,p,m,g,v,y),Qxt(a,p,m,s,i),Jxt(a,p,m,s)}Vr==="TB"||Vr==="BT"?Ys.set(p.id,{x:m.x,y:m.posWithOffset}):Ys.set(p.id,{x:m.posWithOffset,y:m.y}),s=Vr==="BT"&&u?s+Ef:s+Ef+Sf,s>Ch&&(Ch=s)})},"drawCommits"),ibt=o((e,t,r,i,n)=>{let s=(Vr==="TB"||Vr==="BT"?r.x<i.x:r.y<i.y)?t.branch:e.branch,l=o(h=>h.branch===s,"isOnBranchToGetCurve"),u=o(h=>h.seq>e.seq&&h.seq<t.seq,"isBetweenCommits");return[...n.values()].some(h=>u(h)&&l(h))},"shouldRerouteArrow"),GT=o((e,t,r=0)=>{let i=e+Math.abs(e-t)/2;if(r>5)return i;if(w6.every(s=>Math.abs(s-i)>=10))return w6.push(i),i;let a=Math.abs(e-t);return GT(e,t-a/5,r+1)},"findLane"),nbt=o((e,t,r,i)=>{let{theme:n}=ge(),a=yV.has(n??""),s=Ys.get(t.id),l=Ys.get(r.id);if(s===void 0||l===void 0)throw new Error(`Commit positions not found for commits ${t.id} and ${r.id}`);let u=ibt(t,r,s,l,i),h="",d="",f=0,p=0,m=Hs.get(r.branch)?.index;r.type===si.MERGE&&t.id!==r.parents[0]&&(m=Hs.get(t.branch)?.index);let g;if(u){h="A 10 10, 0, 0, 0,",d="A 10 10, 0, 0, 1,",f=10,p=10;let y=s.y<l.y?GT(s.y,l.y):GT(l.y,s.y),v=s.x<l.x?GT(s.x,l.x):GT(l.x,s.x);Vr==="TB"?s.x<l.x?g=`M ${s.x} ${s.y} L ${v-f} ${s.y} ${d} ${v} ${s.y+p} L ${v} ${l.y-f} ${h} ${v+p} ${l.y} L ${l.x} ${l.y}`:(m=Hs.get(t.branch)?.index,g=`M ${s.x} ${s.y} L ${v+f} ${s.y} ${h} ${v} ${s.y+p} L ${v} ${l.y-f} ${d} ${v-p} ${l.y} L ${l.x} ${l.y}`):Vr==="BT"?s.x<l.x?g=`M ${s.x} ${s.y} L ${v-f} ${s.y} ${h} ${v} ${s.y-p} L ${v} ${l.y+f} ${d} ${v+p} ${l.y} L ${l.x} ${l.y}`:(m=Hs.get(t.branch)?.index,g=`M ${s.x} ${s.y} L ${v+f} ${s.y} ${d} ${v} ${s.y-p} L ${v} ${l.y+f} ${h} ${v-p} ${l.y} L ${l.x} ${l.y}`):s.y<l.y?g=`M ${s.x} ${s.y} L ${s.x} ${y-f} ${h} ${s.x+p} ${y} L ${l.x-f} ${y} ${d} ${l.x} ${y+p} L ${l.x} ${l.y}`:(m=Hs.get(t.branch)?.index,g=`M ${s.x} ${s.y} L ${s.x} ${y+f} ${d} ${s.x+p} ${y} L ${l.x-f} ${y} ${h} ${l.x} ${y-p} L ${l.x} ${l.y}`)}else h="A 20 20, 0, 0, 0,",d="A 20 20, 0, 0, 1,",f=20,p=20,Vr==="TB"?(s.x<l.x&&(r.type===si.MERGE&&t.id!==r.parents[0]?g=`M ${s.x} ${s.y} L ${s.x} ${l.y-f} ${h} ${s.x+p} ${l.y} L ${l.x} ${l.y}`:g=`M ${s.x} ${s.y} L ${l.x-f} ${s.y} ${d} ${l.x} ${s.y+p} L ${l.x} ${l.y}`),s.x>l.x&&(h="A 20 20, 0, 0, 0,",d="A 20 20, 0, 0, 1,",f=20,p=20,r.type===si.MERGE&&t.id!==r.parents[0]?g=`M ${s.x} ${s.y} L ${s.x} ${l.y-f} ${d} ${s.x-p} ${l.y} L ${l.x} ${l.y}`:g=`M ${s.x} ${s.y} L ${l.x+f} ${s.y} ${h} ${l.x} ${s.y+p} L ${l.x} ${l.y}`),s.x===l.x&&(g=`M ${s.x} ${s.y} L ${l.x} ${l.y}`)):Vr==="BT"?(s.x<l.x&&(r.type===si.MERGE&&t.id!==r.parents[0]?g=`M ${s.x} ${s.y} L ${s.x} ${l.y+f} ${d} ${s.x+p} ${l.y} L ${l.x} ${l.y}`:g=`M ${s.x} ${s.y} L ${l.x-f} ${s.y} ${h} ${l.x} ${s.y-p} L ${l.x} ${l.y}`),s.x>l.x&&(h="A 20 20, 0, 0, 0,",d="A 20 20, 0, 0, 1,",f=20,p=20,r.type===si.MERGE&&t.id!==r.parents[0]?g=`M ${s.x} ${s.y} L ${s.x} ${l.y+f} ${h} ${s.x-p} ${l.y} L ${l.x} ${l.y}`:g=`M ${s.x} ${s.y} L ${l.x+f} ${s.y} ${d} ${l.x} ${s.y-p} L ${l.x} ${l.y}`),s.x===l.x&&(g=`M ${s.x} ${s.y} L ${l.x} ${l.y}`)):(s.y<l.y&&(r.type===si.MERGE&&t.id!==r.parents[0]?g=`M ${s.x} ${s.y} L ${l.x-f} ${s.y} ${d} ${l.x} ${s.y+p} L ${l.x} ${l.y}`:g=`M ${s.x} ${s.y} L ${s.x} ${l.y-f} ${h} ${s.x+p} ${l.y} L ${l.x} ${l.y}`),s.y>l.y&&(r.type===si.MERGE&&t.id!==r.parents[0]?g=`M ${s.x} ${s.y} L ${l.x-f} ${s.y} ${h} ${l.x} ${s.y-p} L ${l.x} ${l.y}`:g=`M ${s.x} ${s.y} L ${s.x} ${l.y+f} ${d} ${s.x+p} ${l.y} L ${l.x} ${l.y}`),s.y===l.y&&(g=`M ${s.x} ${s.y} L ${l.x} ${l.y}`));if(g===void 0)throw new Error("Line definition not found");e.append("path").attr("d",g).attr("class","arrow arrow"+dm(m,hm,a))},"drawArrow"),abt=o((e,t)=>{let r=e.append("g").attr("class","commit-arrows");[...t.keys()].forEach(i=>{let n=t.get(i);n.parents&&n.parents.length>0&&n.parents.forEach(a=>{nbt(r,t.get(a),n,t)})})},"drawArrows"),sbt=o((e,t,r,i)=>{let{look:n,theme:a,themeVariables:s}=ge(),{dropShadow:l,THEME_COLOR_LIMIT:u}=s,h=S6.has(a??""),d=yV.has(a??""),f=e.append("g");t.forEach((p,m)=>{let g=dm(m,h?u:hm,d),y=Hs.get(p.name)?.pos;if(y===void 0)throw new Error(`Position not found for branch ${p.name}`);let v=Vr==="TB"||Vr==="BT"?y:h?y+gV/2+1:y-2,x=f.append("line");x.attr("x1",0),x.attr("y1",v),x.attr("x2",Ch),x.attr("y2",v),x.attr("class","branch branch"+g),Vr==="TB"?(x.attr("y1",k6),x.attr("x1",y),x.attr("y2",Ch),x.attr("x2",y)):Vr==="BT"&&(x.attr("y1",Ch),x.attr("x1",y),x.attr("y2",k6),x.attr("x2",y)),w6.push(v);let b=p.name,T=KEe(b),w=f.insert("rect"),k=f.insert("g").attr("class","branchLabel").insert("g").attr("class","label branch-label"+g);k.node().appendChild(T);let E=T.getBBox(),A=h?0:4,N=h?16:0,P=h?gV:0;n==="neo"&&w.attr("data-look","neo"),w.attr("class","branchLabelBkg label"+g).attr("style",n==="neo"?`filter:${h?`url(#${i}-drop-shadow)`:l}`:"").attr("rx",A).attr("ry",A).attr("x",-E.width-4-(r.rotateCommitLabel===!0?30:0)).attr("y",-E.height/2+10).attr("width",E.width+18+N).attr("height",E.height+4+P),k.attr("transform","translate("+(-E.width-14-(r.rotateCommitLabel===!0?30:0)+N/2)+", "+(v-E.height/2-2)+")"),Vr==="TB"?(w.attr("x",y-E.width/2-10).attr("y",0),k.attr("transform","translate("+(y-E.width/2-5)+", 0)"),h&&(w.attr("transform",`translate(${-N/2-3}, ${-P-10})`),k.attr("transform","translate("+(y-E.width/2-5)+", "+(-P*2+7)+")"))):Vr==="BT"?(w.attr("x",y-E.width/2-10).attr("y",Ch),k.attr("transform","translate("+(y-E.width/2-5)+", "+Ch+")"),h&&(w.attr("transform",`translate(${-N/2-3}, ${P+10})`),k.attr("transform","translate("+(y-E.width/2-5)+", "+(Ch+P*2+4)+")"))):w.attr("transform","translate(-19, "+(v-12-P/2)+")")})},"drawBranches"),obt=o(function(e,t,r,i,n){return Hs.set(e,{pos:t,index:r}),t+=50+(n?40:0)+(Vr==="TB"||Vr==="BT"?i.width/2:0),t},"setBranchPosition"),lbt=o(function(e,t,r,i){qxt(),Z.debug("in gitgraph renderer",e+`
-`,"id:",t,r);let n=i.db;if(!n.getConfig){Z.error("getConfig method is not available on db");return}let a=n.getConfig(),s=a.rotateCommitLabel??!1;zT=n.getCommits();let l=n.getBranchesAsObjArray();Vr=n.getDirection();let u=Je(`[id="${t}"]`),{look:h,theme:d,themeVariables:f}=ge(),{useGradient:p,gradientStart:m,gradientStop:g,filterColor:y}=f;if(p){let x=u.append("defs").append("linearGradient").attr("id",t+"-gradient").attr("gradientUnits","objectBoundingBox").attr("x1","0%").attr("y1","0%").attr("x2","100%").attr("y2","0%");x.append("stop").attr("offset","0%").attr("stop-color",m).attr("stop-opacity",1),x.append("stop").attr("offset","100%").attr("stop-color",g).attr("stop-opacity",1)}h==="neo"&&S6.has(d??"")&&u.append("defs").append("filter").attr("id",t+"-drop-shadow").attr("height","130%").attr("width","130%").append("feDropShadow").attr("dx","4").attr("dy","4").attr("stdDeviation",0).attr("flood-opacity","0.06").attr("flood-color",y);let v=0;l.forEach((x,b)=>{let T=KEe(x.name),w=u.append("g"),C=w.insert("g").attr("class","branchLabel"),k=C.insert("g").attr("class","label branch-label");k.node()?.appendChild(T);let E=T.getBBox();v=obt(x.name,v,b,E,s),k.remove(),C.remove(),w.remove()}),XEe(u,zT,!1,a),a.showBranches&&sbt(u,l,a,t),abt(u,zT),XEe(u,zT,!0,a),Zt.insertTitle(u,"gitTitleText",a.titleTopMargin??0,n.getDiagramTitle()),Av(void 0,u,a.diagramPadding,a.useMaxWidth)},"draw"),QEe={draw:lbt}});var e5e,t5e,cbt,ubt,hbt,dbt,fbt,pbt,mbt,gbt,r5e,i5e=z(()=>{"use strict";br();e5e=8,t5e=new Set(["redux","redux-dark","redux-color","redux-dark-color"]),cbt=new Set(["redux-color","redux-dark-color"]),ubt=new Set(["neo","neo-dark"]),hbt=new Set(["dark","redux-dark","redux-dark-color","neo-dark"]),dbt=new Set(["redux","redux-dark","redux-color","redux-dark-color","neo","neo-dark"]),fbt=o(e=>{let{svgId:t}=e,r="";if(e.useGradient&&t)for(let i=0;i<e.THEME_COLOR_LIMIT;i++)r+=`
-      .label${i}  { fill: ${e.mainBkg}; stroke: url(${t}-gradient); stroke-width: ${e.strokeWidth};}
-             `;return r},"genGitGraphGradient"),pbt=o(e=>{let t=Nt(),{theme:r,themeVariables:i}=t,{borderColorArray:n}=i,a=t5e.has(r);if(ubt.has(r)){let s="";for(let l=0;l<e.THEME_COLOR_LIMIT;l++)if(l===0)s+=`
+        ${r.x+wp},${g-p-2}
+        ${r.x+wp+a+4},${g-p-2}
+        ${r.x+wp+a+4},${g+p+2}
+        ${r.x+wp},${g+p+2}`).attr("transform","translate(12,12) rotate(45, "+r.x+","+n+")"),h.attr("cx",r.x+Wu/2).attr("cy",g).attr("transform","translate(12,12) rotate(45, "+r.x+","+n+")"),u.attr("x",r.x+5).attr("y",g+3).attr("transform","translate(14,14) rotate(45, "+r.x+","+n+")")}}}},"drawCommitTags"),A3t=o(e=>{switch(e.customType??e.type){case Rn.NORMAL:return"commit-normal";case Rn.REVERSE:return"commit-reverse";case Rn.HIGHLIGHT:return"commit-highlight";case Rn.MERGE:return"commit-merge";case Rn.CHERRY_PICK:return"commit-cherry-pick";default:return"commit-normal"}},"getCommitClassType"),R3t=o((e,t,r,n)=>{let i={x:0,y:0};if(e.parents.length>0){let a=VDe(e.parents);if(a){let s=n.get(a)??i;return t==="TB"?s.y+kp:t==="BT"?(n.get(e.id)??i).y-kp:s.x+kp}}else return t==="TB"?tL:t==="BT"?(n.get(e.id)??i).y-kp:0;return 0},"calculatePosition"),_3t=o((e,t,r)=>{let n=rn==="BT"&&r?t:t+wp,i=So.get(e.branch)?.pos,a=rn==="TB"||rn==="BT"?So.get(e.branch)?.pos:n;if(a===void 0||i===void 0)throw new Error(`Position were undefined for commit ${e.id}`);let s=nL.has(Ae().theme??""),l=rn==="TB"||rn==="BT"?n:i+(s?yU/2+1:-2);return{x:a,y:l,posWithOffset:n}},"getCommitPosition"),zDe=o((e,t,r,n)=>{let i=e.append("g").attr("class","commit-bullets"),a=e.append("g").attr("class","commit-labels"),s=rn==="TB"||rn==="BT"?tL:0,l=[...t.keys()],u=n.parallelCommits??!1,h=o((f,p)=>{let m=t.get(f)?.seq,g=t.get(p)?.seq;return m!==void 0&&g!==void 0?m-g:0},"sortKeys"),d=l.sort(h);rn==="BT"&&(u&&x3t(d,t,s),d=d.reverse()),d.forEach(f=>{let p=t.get(f);if(!p)throw new Error(`Commit not found for key ${f}`);u&&(s=R3t(p,rn,s,Eo));let m=_3t(p,s,u);if(r){let g=A3t(p),y=p.customType??p.type,v=So.get(p.branch)?.index??0;k3t(i,p,m,g,v,y),S3t(a,p,m,s,n),E3t(a,p,m,s)}rn==="TB"||rn==="BT"?Eo.set(p.id,{x:m.x,y:m.posWithOffset}):Eo.set(p.id,{x:m.posWithOffset,y:m.y}),s=rn==="BT"&&u?s+kp:s+kp+wp,s>od&&(od=s)})},"drawCommits"),L3t=o((e,t,r,n,i)=>{let s=(rn==="TB"||rn==="BT"?r.x<n.x:r.y<n.y)?t.branch:e.branch,l=o(h=>h.branch===s,"isOnBranchToGetCurve"),u=o(h=>h.seq>e.seq&&h.seq<t.seq,"isBetweenCommits");return[...i.values()].some(h=>u(h)&&l(h))},"shouldRerouteArrow"),Mw=o((e,t,r=0)=>{let n=e+Math.abs(e-t)/2;if(r>5)return n;if(rL.every(s=>Math.abs(s-n)>=10))return rL.push(n),n;let a=Math.abs(e-t);return Mw(e,t-a/5,r+1)},"findLane"),D3t=o((e,t,r,n)=>{let{theme:i}=Ae(),a=vU.has(i??""),s=Eo.get(t.id),l=Eo.get(r.id);if(s===void 0||l===void 0)throw new Error(`Commit positions not found for commits ${t.id} and ${r.id}`);let u=L3t(t,r,s,l,n),h="",d="",f=0,p=0,m=So.get(r.branch)?.index;r.type===Rn.MERGE&&t.id!==r.parents[0]&&(m=So.get(t.branch)?.index);let g;if(u){h="A 10 10, 0, 0, 0,",d="A 10 10, 0, 0, 1,",f=10,p=10;let y=s.y<l.y?Mw(s.y,l.y):Mw(l.y,s.y),v=s.x<l.x?Mw(s.x,l.x):Mw(l.x,s.x);rn==="TB"?s.x<l.x?g=`M ${s.x} ${s.y} L ${v-f} ${s.y} ${d} ${v} ${s.y+p} L ${v} ${l.y-f} ${h} ${v+p} ${l.y} L ${l.x} ${l.y}`:(m=So.get(t.branch)?.index,g=`M ${s.x} ${s.y} L ${v+f} ${s.y} ${h} ${v} ${s.y+p} L ${v} ${l.y-f} ${d} ${v-p} ${l.y} L ${l.x} ${l.y}`):rn==="BT"?s.x<l.x?g=`M ${s.x} ${s.y} L ${v-f} ${s.y} ${h} ${v} ${s.y-p} L ${v} ${l.y+f} ${d} ${v+p} ${l.y} L ${l.x} ${l.y}`:(m=So.get(t.branch)?.index,g=`M ${s.x} ${s.y} L ${v+f} ${s.y} ${d} ${v} ${s.y-p} L ${v} ${l.y+f} ${h} ${v-p} ${l.y} L ${l.x} ${l.y}`):s.y<l.y?g=`M ${s.x} ${s.y} L ${s.x} ${y-f} ${h} ${s.x+p} ${y} L ${l.x-f} ${y} ${d} ${l.x} ${y+p} L ${l.x} ${l.y}`:(m=So.get(t.branch)?.index,g=`M ${s.x} ${s.y} L ${s.x} ${y+f} ${d} ${s.x+p} ${y} L ${l.x-f} ${y} ${h} ${l.x} ${y-p} L ${l.x} ${l.y}`)}else h="A 20 20, 0, 0, 0,",d="A 20 20, 0, 0, 1,",f=20,p=20,rn==="TB"?(s.x<l.x&&(r.type===Rn.MERGE&&t.id!==r.parents[0]?g=`M ${s.x} ${s.y} L ${s.x} ${l.y-f} ${h} ${s.x+p} ${l.y} L ${l.x} ${l.y}`:g=`M ${s.x} ${s.y} L ${l.x-f} ${s.y} ${d} ${l.x} ${s.y+p} L ${l.x} ${l.y}`),s.x>l.x&&(h="A 20 20, 0, 0, 0,",d="A 20 20, 0, 0, 1,",f=20,p=20,r.type===Rn.MERGE&&t.id!==r.parents[0]?g=`M ${s.x} ${s.y} L ${s.x} ${l.y-f} ${d} ${s.x-p} ${l.y} L ${l.x} ${l.y}`:g=`M ${s.x} ${s.y} L ${l.x+f} ${s.y} ${h} ${l.x} ${s.y+p} L ${l.x} ${l.y}`),s.x===l.x&&(g=`M ${s.x} ${s.y} L ${l.x} ${l.y}`)):rn==="BT"?(s.x<l.x&&(r.type===Rn.MERGE&&t.id!==r.parents[0]?g=`M ${s.x} ${s.y} L ${s.x} ${l.y+f} ${d} ${s.x+p} ${l.y} L ${l.x} ${l.y}`:g=`M ${s.x} ${s.y} L ${l.x-f} ${s.y} ${h} ${l.x} ${s.y-p} L ${l.x} ${l.y}`),s.x>l.x&&(h="A 20 20, 0, 0, 0,",d="A 20 20, 0, 0, 1,",f=20,p=20,r.type===Rn.MERGE&&t.id!==r.parents[0]?g=`M ${s.x} ${s.y} L ${s.x} ${l.y+f} ${h} ${s.x-p} ${l.y} L ${l.x} ${l.y}`:g=`M ${s.x} ${s.y} L ${l.x+f} ${s.y} ${d} ${l.x} ${s.y-p} L ${l.x} ${l.y}`),s.x===l.x&&(g=`M ${s.x} ${s.y} L ${l.x} ${l.y}`)):(s.y<l.y&&(r.type===Rn.MERGE&&t.id!==r.parents[0]?g=`M ${s.x} ${s.y} L ${l.x-f} ${s.y} ${d} ${l.x} ${s.y+p} L ${l.x} ${l.y}`:g=`M ${s.x} ${s.y} L ${s.x} ${l.y-f} ${h} ${s.x+p} ${l.y} L ${l.x} ${l.y}`),s.y>l.y&&(r.type===Rn.MERGE&&t.id!==r.parents[0]?g=`M ${s.x} ${s.y} L ${l.x-f} ${s.y} ${h} ${l.x} ${s.y-p} L ${l.x} ${l.y}`:g=`M ${s.x} ${s.y} L ${s.x} ${l.y+f} ${d} ${s.x+p} ${l.y} L ${l.x} ${l.y}`),s.y===l.y&&(g=`M ${s.x} ${s.y} L ${l.x} ${l.y}`));if(g===void 0)throw new Error("Line definition not found");e.append("path").attr("d",g).attr("class","arrow arrow"+T0(m,b0,a))},"drawArrow"),I3t=o((e,t)=>{let r=e.append("g").attr("class","commit-arrows");[...t.keys()].forEach(n=>{let i=t.get(n);i.parents&&i.parents.length>0&&i.parents.forEach(a=>{D3t(r,t.get(a),i,t)})})},"drawArrows"),M3t=o((e,t,r,n)=>{let{look:i,theme:a,themeVariables:s}=Ae(),{dropShadow:l,THEME_COLOR_LIMIT:u}=s,h=nL.has(a??""),d=vU.has(a??""),f=e.append("g");t.forEach((p,m)=>{let g=T0(m,h?u:b0,d),y=So.get(p.name)?.pos;if(y===void 0)throw new Error(`Position not found for branch ${p.name}`);let v=rn==="TB"||rn==="BT"?y:h?y+yU/2+1:y-2,x=f.append("line");x.attr("x1",0),x.attr("y1",v),x.attr("x2",od),x.attr("y2",v),x.attr("class","branch branch"+g),rn==="TB"?(x.attr("y1",tL),x.attr("x1",y),x.attr("y2",od),x.attr("x2",y)):rn==="BT"&&(x.attr("y1",od),x.attr("x1",y),x.attr("y2",tL),x.attr("x2",y)),rL.push(v);let b=p.name,T=GDe(b),k=f.insert("rect"),w=f.insert("g").attr("class","branchLabel").insert("g").attr("class","label branch-label"+g);w.node().appendChild(T);let S=T.getBBox(),R=h?0:4,L=h?16:0,N=h?yU:0;i==="neo"&&k.attr("data-look","neo"),k.attr("class","branchLabelBkg label"+g).attr("style",i==="neo"?`filter:${h?`url(#${n}-drop-shadow)`:l}`:"").attr("rx",R).attr("ry",R).attr("x",-S.width-4-(r.rotateCommitLabel===!0?30:0)).attr("y",-S.height/2+10).attr("width",S.width+18+L).attr("height",S.height+4+N),w.attr("transform","translate("+(-S.width-14-(r.rotateCommitLabel===!0?30:0)+L/2)+", "+(v-S.height/2-2)+")"),rn==="TB"?(k.attr("x",y-S.width/2-10).attr("y",0),w.attr("transform","translate("+(y-S.width/2-5)+", 0)"),h&&(k.attr("transform",`translate(${-L/2-3}, ${-N-10})`),w.attr("transform","translate("+(y-S.width/2-5)+", "+(-N*2+7)+")"))):rn==="BT"?(k.attr("x",y-S.width/2-10).attr("y",od),w.attr("transform","translate("+(y-S.width/2-5)+", "+od+")"),h&&(k.attr("transform",`translate(${-L/2-3}, ${N+10})`),w.attr("transform","translate("+(y-S.width/2-5)+", "+(od+N*2+4)+")"))):k.attr("transform","translate(-19, "+(v-12-N/2)+")")})},"drawBranches"),N3t=o(function(e,t,r,n,i){return So.set(e,{pos:t,index:r}),t+=50+(i?40:0)+(rn==="TB"||rn==="BT"?n.width/2:0),t},"setBranchPosition"),P3t=o(function(e,t,r,n){y3t(),Z.debug("in gitgraph renderer",e+`
+`,"id:",t,r);let i=n.db;if(!i.getConfig){Z.error("getConfig method is not available on db");return}let a=i.getConfig(),s=a.rotateCommitLabel??!1;Iw=i.getCommits();let l=i.getBranchesAsObjArray();rn=i.getDirection();let u=et(`[id="${t}"]`),{look:h,theme:d,themeVariables:f}=Ae(),{useGradient:p,gradientStart:m,gradientStop:g,filterColor:y}=f;if(p){let x=u.append("defs").append("linearGradient").attr("id",t+"-gradient").attr("gradientUnits","objectBoundingBox").attr("x1","0%").attr("y1","0%").attr("x2","100%").attr("y2","0%");x.append("stop").attr("offset","0%").attr("stop-color",m).attr("stop-opacity",1),x.append("stop").attr("offset","100%").attr("stop-color",g).attr("stop-opacity",1)}h==="neo"&&nL.has(d??"")&&u.append("defs").append("filter").attr("id",t+"-drop-shadow").attr("height","130%").attr("width","130%").append("feDropShadow").attr("dx","4").attr("dy","4").attr("stdDeviation",0).attr("flood-opacity","0.06").attr("flood-color",y);let v=0;l.forEach((x,b)=>{let T=GDe(x.name),k=u.append("g"),C=k.insert("g").attr("class","branchLabel"),w=C.insert("g").attr("class","label branch-label");w.node()?.appendChild(T);let S=T.getBBox();v=N3t(x.name,v,b,S,s),w.remove(),C.remove(),k.remove()}),zDe(u,Iw,!1,a),a.showBranches&&M3t(u,l,a,t),I3t(u,Iw),zDe(u,Iw,!0,a),Zt.insertTitle(u,"gitTitleText",a.titleTopMargin??0,i.getDiagramTitle()),hb(void 0,u,a.diagramPadding,a.useMaxWidth)},"draw"),WDe={draw:P3t}});var HDe,UDe,O3t,B3t,$3t,F3t,z3t,G3t,V3t,W3t,YDe,jDe=F(()=>{"use strict";ur();HDe=8,UDe=new Set(["redux","redux-dark","redux-color","redux-dark-color"]),O3t=new Set(["redux-color","redux-dark-color"]),B3t=new Set(["neo","neo-dark"]),$3t=new Set(["dark","redux-dark","redux-dark-color","neo-dark"]),F3t=new Set(["redux","redux-dark","redux-color","redux-dark-color","neo","neo-dark"]),z3t=o(e=>{let{svgId:t}=e,r="";if(e.useGradient&&t)for(let n=0;n<e.THEME_COLOR_LIMIT;n++)r+=`
+      .label${n}  { fill: ${e.mainBkg}; stroke: url(${t}-gradient); stroke-width: ${e.strokeWidth};}
+             `;return r},"genGitGraphGradient"),G3t=o(e=>{let t=_t(),{theme:r,themeVariables:n}=t,{borderColorArray:i}=n,a=UDe.has(r);if(B3t.has(r)){let s="";for(let l=0;l<e.THEME_COLOR_LIMIT;l++)if(l===0)s+=`
         .branch-label${l} { fill: ${e.nodeBorder};}
         .commit${l} { stroke: ${e.nodeBorder};   }
         .commit-highlight${l} { stroke: ${e.nodeBorder}; fill: ${e.nodeBorder}; }
         .arrow${l} { stroke: ${e.nodeBorder}; }
         .commit-bullets { fill: ${e.nodeBorder}; }
         .commit-cherry-pick${l} { stroke: ${e.nodeBorder}; }
-        ${fbt(e)}`;else{let u=l%e5e;s+=`
+        ${z3t(e)}`;else{let u=l%HDe;s+=`
         .branch-label${l} { fill: ${e["gitBranchLabel"+u]}; }
         .commit${l} { stroke: ${e["git"+u]}; fill: ${e["git"+u]}; }
         .commit-highlight${l} { stroke: ${e["gitInv"+u]}; fill: ${e["gitInv"+u]}; }
         .arrow${l} { stroke: ${e["git"+u]}; }
-        `}return s}else if(cbt.has(r)){let s="";for(let l=0;l<e.THEME_COLOR_LIMIT;l++)if(l===0)s+=`
+        `}return s}else if(O3t.has(r)){let s="";for(let l=0;l<e.THEME_COLOR_LIMIT;l++)if(l===0)s+=`
         .branch-label${l} { fill: ${e.nodeBorder}; ${a?`font-weight:${e.noteFontWeight}`:""} }
         .commit${l} { stroke: ${e.nodeBorder}; }
         .commit-highlight${l} { stroke: ${e.nodeBorder}; fill: ${e.mainBkg}; }
         .label${l}  { fill: ${e.mainBkg}; stroke: ${e.nodeBorder}; stroke-width: ${e.strokeWidth}; ${a?`font-weight:${e.noteFontWeight}`:""} }
         .arrow${l} { stroke: ${e.nodeBorder}; }
         .commit-bullets { fill: ${e.nodeBorder}; }
-        `;else{let u=l%n.length;s+=`
+        `;else{let u=l%i.length;s+=`
         .branch-label${l} { fill: ${e.nodeBorder}; ${a?`font-weight:${e.noteFontWeight}`:""} }
-        .commit${l} { stroke: ${n[u]}; fill: ${n[u]}; }
-        .commit-highlight${l} { stroke: ${n[u]}; fill: ${n[u]}; }
-        .label${l}  { fill: ${hbt.has(r)?e.mainBkg:n[u]}; stroke: ${n[u]};  stroke-width: ${e.strokeWidth}; }
-        .arrow${l} { stroke: ${n[u]}; }
+        .commit${l} { stroke: ${i[u]}; fill: ${i[u]}; }
+        .commit-highlight${l} { stroke: ${i[u]}; fill: ${i[u]}; }
+        .label${l}  { fill: ${$3t.has(r)?e.mainBkg:i[u]}; stroke: ${i[u]};  stroke-width: ${e.strokeWidth}; }
+        .arrow${l} { stroke: ${i[u]}; }
         `}return s}else{let s="";for(let l=0;l<e.THEME_COLOR_LIMIT;l++)s+=`
         .branch-label${l} { fill: ${e.nodeBorder}; ${a?`font-weight:${e.noteFontWeight}`:""} }
         .commit${l} { stroke: ${e.nodeBorder};   }
@@ -1350,14 +1355,14 @@
         .arrow${l} { stroke: ${e.nodeBorder}; }
         .commit-bullets { fill: ${e.nodeBorder}; }
         .commit-cherry-pick${l} { stroke: ${e.nodeBorder}; }
-        `;return s}},"genColor"),mbt=o(e=>`${Array.from({length:e.THEME_COLOR_LIMIT},(t,r)=>r).map(t=>{let r=t%e5e;return`
+        `;return s}},"genColor"),V3t=o(e=>`${Array.from({length:e.THEME_COLOR_LIMIT},(t,r)=>r).map(t=>{let r=t%HDe;return`
         .branch-label${t} { fill: ${e["gitBranchLabel"+r]}; }
         .commit${t} { stroke: ${e["git"+r]}; fill: ${e["git"+r]}; }
         .commit-highlight${t} { stroke: ${e["gitInv"+r]}; fill: ${e["gitInv"+r]}; }
         .label${t}  { fill: ${e["git"+r]}; }
         .arrow${t} { stroke: ${e["git"+r]}; }
         `}).join(`
-`)}`,"normalTheme"),gbt=o(e=>{let t=Nt(),{theme:r}=t,i=dbt.has(r);return`
+`)}`,"normalTheme"),W3t=o(e=>{let t=_t(),{theme:r}=t,n=F3t.has(r);return`
   .commit-id,
   .commit-msg,
   .branch-label {
@@ -1367,38 +1372,38 @@
     font-family: var(--mermaid-font-family);
   }
   
-  ${i?pbt(e):mbt(e)}
+  ${n?G3t(e):V3t(e)}
 
   .branch {
     stroke-width: ${e.strokeWidth};
     stroke: ${e.commitLineColor??e.lineColor};
-    stroke-dasharray:  ${i?"4 2":"2"};
+    stroke-dasharray:  ${n?"4 2":"2"};
   }
-  .commit-label { font-size: ${e.commitLabelFontSize}; fill: ${i?e.nodeBorder:e.commitLabelColor}; ${i?`font-weight:${e.noteFontWeight};`:""}}
-  .commit-label-bkg { font-size: ${e.commitLabelFontSize}; fill: ${i?"transparent":e.commitLabelBackground}; opacity: ${i?"":.5};  }
+  .commit-label { font-size: ${e.commitLabelFontSize}; fill: ${n?e.nodeBorder:e.commitLabelColor}; ${n?`font-weight:${e.noteFontWeight};`:""}}
+  .commit-label-bkg { font-size: ${e.commitLabelFontSize}; fill: ${n?"transparent":e.commitLabelBackground}; opacity: ${n?"":.5};  }
   .tag-label { font-size: ${e.tagLabelFontSize}; fill: ${e.tagLabelColor};}
-  .tag-label-bkg { fill: ${i?e.mainBkg:e.tagLabelBackground}; stroke: ${i?e.nodeBorder:e.tagLabelBorder}; ${i?`filter:${e.dropShadow}`:""}  }
+  .tag-label-bkg { fill: ${n?e.mainBkg:e.tagLabelBackground}; stroke: ${n?e.nodeBorder:e.tagLabelBorder}; ${n?`filter:${e.dropShadow}`:""}  }
   .tag-hole { fill: ${e.textColor}; }
 
   .commit-merge {
-    stroke: ${i?e.mainBkg:e.primaryColor};
-    fill: ${i?e.mainBkg:e.primaryColor};
+    stroke: ${n?e.mainBkg:e.primaryColor};
+    fill: ${n?e.mainBkg:e.primaryColor};
   }
   .commit-reverse {
-    stroke: ${i?e.mainBkg:e.primaryColor};
-    fill: ${i?e.mainBkg:e.primaryColor};
-    stroke-width: ${i?e.strokeWidth:3};
+    stroke: ${n?e.mainBkg:e.primaryColor};
+    fill: ${n?e.mainBkg:e.primaryColor};
+    stroke-width: ${n?e.strokeWidth:3};
   }
   .commit-highlight-outer {
   }
   .commit-highlight-inner {
-    stroke: ${i?e.mainBkg:e.primaryColor};
-    fill: ${i?e.mainBkg:e.primaryColor};
+    stroke: ${n?e.mainBkg:e.primaryColor};
+    fill: ${n?e.mainBkg:e.primaryColor};
   }
 
   .arrow {
     /* Intentional: neo themes keep the bold 8px arrow (like classic themes); only redux-geometry themes use the thinner options.strokeWidth. */
-    stroke-width: ${t5e.has(r)?e.strokeWidth:8};
+    stroke-width: ${UDe.has(r)?e.strokeWidth:8};
     stroke-linecap: round;
     fill: none
   }
@@ -1407,12 +1412,12 @@
     font-size: 18px;
     fill: ${e.textColor};
   }
-`},"getStyles"),r5e=gbt});var n5e={};xr(n5e,{diagram:()=>ybt});var ybt,a5e=z(()=>{"use strict";jEe();mV();JEe();i5e();ybt={parser:YEe,db:C6,renderer:QEe,styles:r5e}});var vV,l5e,c5e=z(()=>{"use strict";vV=(function(){var e=o(function(_,R,M,L){for(M=M||{},L=_.length;L--;M[_[L]]=R);return M},"o"),t=[6,8,10,12,13,14,15,16,17,18,20,21,22,23,24,25,26,27,28,29,30,31,33,35,36,38,40],r=[1,26],i=[1,27],n=[1,28],a=[1,29],s=[1,30],l=[1,31],u=[1,32],h=[1,33],d=[1,34],f=[1,9],p=[1,10],m=[1,11],g=[1,12],y=[1,13],v=[1,14],x=[1,15],b=[1,16],T=[1,19],w=[1,20],C=[1,21],k=[1,22],E=[1,23],A=[1,25],N=[1,35],P={trace:o(function(){},"trace"),yy:{},symbols_:{error:2,start:3,gantt:4,document:5,EOF:6,line:7,SPACE:8,statement:9,NL:10,weekday:11,weekday_monday:12,weekday_tuesday:13,weekday_wednesday:14,weekday_thursday:15,weekday_friday:16,weekday_saturday:17,weekday_sunday:18,weekend:19,weekend_friday:20,weekend_saturday:21,dateFormat:22,inclusiveEndDates:23,topAxis:24,axisFormat:25,tickInterval:26,excludes:27,includes:28,todayMarker:29,title:30,acc_title:31,acc_title_value:32,acc_descr:33,acc_descr_value:34,acc_descr_multiline_value:35,section:36,clickStatement:37,taskTxt:38,taskData:39,click:40,callbackname:41,callbackargs:42,href:43,clickStatementDebug:44,$accept:0,$end:1},terminals_:{2:"error",4:"gantt",6:"EOF",8:"SPACE",10:"NL",12:"weekday_monday",13:"weekday_tuesday",14:"weekday_wednesday",15:"weekday_thursday",16:"weekday_friday",17:"weekday_saturday",18:"weekday_sunday",20:"weekend_friday",21:"weekend_saturday",22:"dateFormat",23:"inclusiveEndDates",24:"topAxis",25:"axisFormat",26:"tickInterval",27:"excludes",28:"includes",29:"todayMarker",30:"title",31:"acc_title",32:"acc_title_value",33:"acc_descr",34:"acc_descr_value",35:"acc_descr_multiline_value",36:"section",38:"taskTxt",39:"taskData",40:"click",41:"callbackname",42:"callbackargs",43:"href"},productions_:[0,[3,3],[5,0],[5,2],[7,2],[7,1],[7,1],[7,1],[11,1],[11,1],[11,1],[11,1],[11,1],[11,1],[11,1],[19,1],[19,1],[9,1],[9,1],[9,1],[9,1],[9,1],[9,1],[9,1],[9,1],[9,1],[9,1],[9,1],[9,2],[9,2],[9,1],[9,1],[9,1],[9,2],[37,2],[37,3],[37,3],[37,4],[37,3],[37,4],[37,2],[44,2],[44,3],[44,3],[44,4],[44,3],[44,4],[44,2]],performAction:o(function(R,M,L,B,O,$,G){var F=$.length-1;switch(O){case 1:return $[F-1];case 2:this.$=[];break;case 3:$[F-1].push($[F]),this.$=$[F-1];break;case 4:case 5:this.$=$[F];break;case 6:case 7:this.$=[];break;case 8:B.setWeekday("monday");break;case 9:B.setWeekday("tuesday");break;case 10:B.setWeekday("wednesday");break;case 11:B.setWeekday("thursday");break;case 12:B.setWeekday("friday");break;case 13:B.setWeekday("saturday");break;case 14:B.setWeekday("sunday");break;case 15:B.setWeekend("friday");break;case 16:B.setWeekend("saturday");break;case 17:B.setDateFormat($[F].substr(11)),this.$=$[F].substr(11);break;case 18:B.enableInclusiveEndDates(),this.$=$[F].substr(18);break;case 19:B.TopAxis(),this.$=$[F].substr(8);break;case 20:B.setAxisFormat($[F].substr(11)),this.$=$[F].substr(11);break;case 21:B.setTickInterval($[F].substr(13)),this.$=$[F].substr(13);break;case 22:B.setExcludes($[F].substr(9)),this.$=$[F].substr(9);break;case 23:B.setIncludes($[F].substr(9)),this.$=$[F].substr(9);break;case 24:B.setTodayMarker($[F].substr(12)),this.$=$[F].substr(12);break;case 27:B.setDiagramTitle($[F].substr(6)),this.$=$[F].substr(6);break;case 28:this.$=$[F].trim(),B.setAccTitle(this.$);break;case 29:case 30:this.$=$[F].trim(),B.setAccDescription(this.$);break;case 31:B.addSection($[F].substr(8)),this.$=$[F].substr(8);break;case 33:B.addTask($[F-1],$[F]),this.$="task";break;case 34:this.$=$[F-1],B.setClickEvent($[F-1],$[F],null);break;case 35:this.$=$[F-2],B.setClickEvent($[F-2],$[F-1],$[F]);break;case 36:this.$=$[F-2],B.setClickEvent($[F-2],$[F-1],null),B.setLink($[F-2],$[F]);break;case 37:this.$=$[F-3],B.setClickEvent($[F-3],$[F-2],$[F-1]),B.setLink($[F-3],$[F]);break;case 38:this.$=$[F-2],B.setClickEvent($[F-2],$[F],null),B.setLink($[F-2],$[F-1]);break;case 39:this.$=$[F-3],B.setClickEvent($[F-3],$[F-1],$[F]),B.setLink($[F-3],$[F-2]);break;case 40:this.$=$[F-1],B.setLink($[F-1],$[F]);break;case 41:case 47:this.$=$[F-1]+" "+$[F];break;case 42:case 43:case 45:this.$=$[F-2]+" "+$[F-1]+" "+$[F];break;case 44:case 46:this.$=$[F-3]+" "+$[F-2]+" "+$[F-1]+" "+$[F];break}},"anonymous"),table:[{3:1,4:[1,2]},{1:[3]},e(t,[2,2],{5:3}),{6:[1,4],7:5,8:[1,6],9:7,10:[1,8],11:17,12:r,13:i,14:n,15:a,16:s,17:l,18:u,19:18,20:h,21:d,22:f,23:p,24:m,25:g,26:y,27:v,28:x,29:b,30:T,31:w,33:C,35:k,36:E,37:24,38:A,40:N},e(t,[2,7],{1:[2,1]}),e(t,[2,3]),{9:36,11:17,12:r,13:i,14:n,15:a,16:s,17:l,18:u,19:18,20:h,21:d,22:f,23:p,24:m,25:g,26:y,27:v,28:x,29:b,30:T,31:w,33:C,35:k,36:E,37:24,38:A,40:N},e(t,[2,5]),e(t,[2,6]),e(t,[2,17]),e(t,[2,18]),e(t,[2,19]),e(t,[2,20]),e(t,[2,21]),e(t,[2,22]),e(t,[2,23]),e(t,[2,24]),e(t,[2,25]),e(t,[2,26]),e(t,[2,27]),{32:[1,37]},{34:[1,38]},e(t,[2,30]),e(t,[2,31]),e(t,[2,32]),{39:[1,39]},e(t,[2,8]),e(t,[2,9]),e(t,[2,10]),e(t,[2,11]),e(t,[2,12]),e(t,[2,13]),e(t,[2,14]),e(t,[2,15]),e(t,[2,16]),{41:[1,40],43:[1,41]},e(t,[2,4]),e(t,[2,28]),e(t,[2,29]),e(t,[2,33]),e(t,[2,34],{42:[1,42],43:[1,43]}),e(t,[2,40],{41:[1,44]}),e(t,[2,35],{43:[1,45]}),e(t,[2,36]),e(t,[2,38],{42:[1,46]}),e(t,[2,37]),e(t,[2,39])],defaultActions:{},parseError:o(function(R,M){if(M.recoverable)this.trace(R);else{var L=new Error(R);throw L.hash=M,L}},"parseError"),parse:o(function(R){var M=this,L=[0],B=[],O=[null],$=[],G=this.table,F="",V=0,H=0,j=0,U=2,Q=1,Y=$.slice.call(arguments,1),ae=Object.create(this.lexer),J={yy:{}};for(var te in this.yy)Object.prototype.hasOwnProperty.call(this.yy,te)&&(J.yy[te]=this.yy[te]);ae.setInput(R,J.yy),J.yy.lexer=ae,J.yy.parser=this,typeof ae.yylloc>"u"&&(ae.yylloc={});var re=ae.yylloc;$.push(re);var ee=ae.options&&ae.options.ranges;typeof J.yy.parseError=="function"?this.parseError=J.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function Te(qe){L.length=L.length-2*qe,O.length=O.length-qe,$.length=$.length-qe}o(Te,"popStack");function ue(){var qe;return qe=B.pop()||ae.lex()||Q,typeof qe!="number"&&(qe instanceof Array&&(B=qe,qe=B.pop()),qe=M.symbols_[qe]||qe),qe}o(ue,"lex");for(var De,Ie,Ee,we,Me,$e,de={},rt,ke,Fe,He;;){if(Ee=L[L.length-1],this.defaultActions[Ee]?we=this.defaultActions[Ee]:((De===null||typeof De>"u")&&(De=ue()),we=G[Ee]&&G[Ee][De]),typeof we>"u"||!we.length||!we[0]){var at="";He=[];for(rt in G[Ee])this.terminals_[rt]&&rt>U&&He.push("'"+this.terminals_[rt]+"'");ae.showPosition?at="Parse error on line "+(V+1)+`:
-`+ae.showPosition()+`
-Expecting `+He.join(", ")+", got '"+(this.terminals_[De]||De)+"'":at="Parse error on line "+(V+1)+": Unexpected "+(De==Q?"end of input":"'"+(this.terminals_[De]||De)+"'"),this.parseError(at,{text:ae.match,token:this.terminals_[De]||De,line:ae.yylineno,loc:re,expected:He})}if(we[0]instanceof Array&&we.length>1)throw new Error("Parse Error: multiple actions possible at state: "+Ee+", token: "+De);switch(we[0]){case 1:L.push(De),O.push(ae.yytext),$.push(ae.yylloc),L.push(we[1]),De=null,Ie?(De=Ie,Ie=null):(H=ae.yyleng,F=ae.yytext,V=ae.yylineno,re=ae.yylloc,j>0&&j--);break;case 2:if(ke=this.productions_[we[1]][1],de.$=O[O.length-ke],de._$={first_line:$[$.length-(ke||1)].first_line,last_line:$[$.length-1].last_line,first_column:$[$.length-(ke||1)].first_column,last_column:$[$.length-1].last_column},ee&&(de._$.range=[$[$.length-(ke||1)].range[0],$[$.length-1].range[1]]),$e=this.performAction.apply(de,[F,H,V,J.yy,we[1],O,$].concat(Y)),typeof $e<"u")return $e;ke&&(L=L.slice(0,-1*ke*2),O=O.slice(0,-1*ke),$=$.slice(0,-1*ke)),L.push(this.productions_[we[1]][0]),O.push(de.$),$.push(de._$),Fe=G[L[L.length-2]][L[L.length-1]],L.push(Fe);break;case 3:return!0}}return!0},"parse")},I=(function(){var _={EOF:1,parseError:o(function(M,L){if(this.yy.parser)this.yy.parser.parseError(M,L);else throw new Error(M)},"parseError"),setInput:o(function(R,M){return this.yy=M||this.yy||{},this._input=R,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},"setInput"),input:o(function(){var R=this._input[0];this.yytext+=R,this.yyleng++,this.offset++,this.match+=R,this.matched+=R;var M=R.match(/(?:\r\n?|\n).*/g);return M?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),R},"input"),unput:o(function(R){var M=R.length,L=R.split(/(?:\r\n?|\n)/g);this._input=R+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-M),this.offset-=M;var B=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),L.length-1&&(this.yylineno-=L.length-1);var O=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:L?(L.length===B.length?this.yylloc.first_column:0)+B[B.length-L.length].length-L[0].length:this.yylloc.first_column-M},this.options.ranges&&(this.yylloc.range=[O[0],O[0]+this.yyleng-M]),this.yyleng=this.yytext.length,this},"unput"),more:o(function(){return this._more=!0,this},"more"),reject:o(function(){if(this.options.backtrack_lexer)this._backtrack=!0;else return this.parseError("Lexical error on line "+(this.yylineno+1)+`. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).
-`+this.showPosition(),{text:"",token:null,line:this.yylineno});return this},"reject"),less:o(function(R){this.unput(this.match.slice(R))},"less"),pastInput:o(function(){var R=this.matched.substr(0,this.matched.length-this.match.length);return(R.length>20?"...":"")+R.substr(-20).replace(/\n/g,"")},"pastInput"),upcomingInput:o(function(){var R=this.match;return R.length<20&&(R+=this._input.substr(0,20-R.length)),(R.substr(0,20)+(R.length>20?"...":"")).replace(/\n/g,"")},"upcomingInput"),showPosition:o(function(){var R=this.pastInput(),M=new Array(R.length+1).join("-");return R+this.upcomingInput()+`
-`+M+"^"},"showPosition"),test_match:o(function(R,M){var L,B,O;if(this.options.backtrack_lexer&&(O={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(O.yylloc.range=this.yylloc.range.slice(0))),B=R[0].match(/(?:\r\n?|\n).*/g),B&&(this.yylineno+=B.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:B?B[B.length-1].length-B[B.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+R[0].length},this.yytext+=R[0],this.match+=R[0],this.matches=R,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(R[0].length),this.matched+=R[0],L=this.performAction.call(this,this.yy,this,M,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),L)return L;if(this._backtrack){for(var $ in O)this[$]=O[$];return!1}return!1},"test_match"),next:o(function(){if(this.done)return this.EOF;this._input||(this.done=!0);var R,M,L,B;this._more||(this.yytext="",this.match="");for(var O=this._currentRules(),$=0;$<O.length;$++)if(L=this._input.match(this.rules[O[$]]),L&&(!M||L[0].length>M[0].length)){if(M=L,B=$,this.options.backtrack_lexer){if(R=this.test_match(L,O[$]),R!==!1)return R;if(this._backtrack){M=!1;continue}else return!1}else if(!this.options.flex)break}return M?(R=this.test_match(M,O[B]),R!==!1?R:!1):this._input===""?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+`. Unrecognized text.
-`+this.showPosition(),{text:"",token:null,line:this.yylineno})},"next"),lex:o(function(){var M=this.next();return M||this.lex()},"lex"),begin:o(function(M){this.conditionStack.push(M)},"begin"),popState:o(function(){var M=this.conditionStack.length-1;return M>0?this.conditionStack.pop():this.conditionStack[0]},"popState"),_currentRules:o(function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},"_currentRules"),topState:o(function(M){return M=this.conditionStack.length-1-Math.abs(M||0),M>=0?this.conditionStack[M]:"INITIAL"},"topState"),pushState:o(function(M){this.begin(M)},"pushState"),stateStackSize:o(function(){return this.conditionStack.length},"stateStackSize"),options:{"case-insensitive":!0},performAction:o(function(M,L,B,O){var $=O;switch(B){case 0:return this.begin("open_directive"),"open_directive";break;case 1:return this.begin("acc_title"),31;break;case 2:return this.popState(),"acc_title_value";break;case 3:return this.begin("acc_descr"),33;break;case 4:return this.popState(),"acc_descr_value";break;case 5:this.begin("acc_descr_multiline");break;case 6:this.popState();break;case 7:return"acc_descr_multiline_value";case 8:break;case 9:break;case 10:break;case 11:return 10;case 12:break;case 13:break;case 14:this.begin("href");break;case 15:this.popState();break;case 16:return 43;case 17:this.begin("callbackname");break;case 18:this.popState();break;case 19:this.popState(),this.begin("callbackargs");break;case 20:return 41;case 21:this.popState();break;case 22:return 42;case 23:this.begin("click");break;case 24:this.popState();break;case 25:return 40;case 26:return 4;case 27:return 22;case 28:return 23;case 29:return 24;case 30:return 25;case 31:return 26;case 32:return 28;case 33:return 27;case 34:return 29;case 35:return 12;case 36:return 13;case 37:return 14;case 38:return 15;case 39:return 16;case 40:return 17;case 41:return 18;case 42:return 20;case 43:return 21;case 44:return"date";case 45:return 30;case 46:return"accDescription";case 47:return 36;case 48:return 38;case 49:return 39;case 50:return":";case 51:return 6;case 52:return"INVALID"}},"anonymous"),rules:[/^(?:%%\{)/i,/^(?:accTitle\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*\{\s*)/i,/^(?:[\}])/i,/^(?:[^\}]*)/i,/^(?:%%(?!\{)*[^\n]*)/i,/^(?:[^\}]%%*[^\n]*)/i,/^(?:%%*[^\n]*[\n]*)/i,/^(?:[\n]+)/i,/^(?:\s+)/i,/^(?:%[^\n]*)/i,/^(?:href[\s]+["])/i,/^(?:["])/i,/^(?:[^"]*)/i,/^(?:call[\s]+)/i,/^(?:\([\s]*\))/i,/^(?:\()/i,/^(?:[^(]*)/i,/^(?:\))/i,/^(?:[^)]*)/i,/^(?:click[\s]+)/i,/^(?:[\s\n])/i,/^(?:[^\s\n]*)/i,/^(?:gantt\b)/i,/^(?:dateFormat\s[^#\n;]+)/i,/^(?:inclusiveEndDates\b)/i,/^(?:topAxis\b)/i,/^(?:axisFormat\s[^#\n;]+)/i,/^(?:tickInterval\s[^#\n;]+)/i,/^(?:includes\s[^#\n;]+)/i,/^(?:excludes\s[^#\n;]+)/i,/^(?:todayMarker\s[^\n;]+)/i,/^(?:weekday\s+monday\b)/i,/^(?:weekday\s+tuesday\b)/i,/^(?:weekday\s+wednesday\b)/i,/^(?:weekday\s+thursday\b)/i,/^(?:weekday\s+friday\b)/i,/^(?:weekday\s+saturday\b)/i,/^(?:weekday\s+sunday\b)/i,/^(?:weekend\s+friday\b)/i,/^(?:weekend\s+saturday\b)/i,/^(?:\d\d\d\d-\d\d-\d\d\b)/i,/^(?:title\s[^\n]+)/i,/^(?:accDescription\s[^#\n;]+)/i,/^(?:section\s[^\n]+)/i,/^(?:[^:\n]+)/i,/^(?::[^#\n;]+)/i,/^(?::)/i,/^(?:$)/i,/^(?:.)/i],conditions:{acc_descr_multiline:{rules:[6,7],inclusive:!1},acc_descr:{rules:[4],inclusive:!1},acc_title:{rules:[2],inclusive:!1},callbackargs:{rules:[21,22],inclusive:!1},callbackname:{rules:[18,19,20],inclusive:!1},href:{rules:[15,16],inclusive:!1},click:{rules:[24,25],inclusive:!1},INITIAL:{rules:[0,1,3,5,8,9,10,11,12,13,14,17,23,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52],inclusive:!0}}};return _})();P.lexer=I;function D(){this.yy={}}return o(D,"Parser"),D.prototype=P,P.Parser=D,new D})();vV.parser=vV;l5e=vV});var u5e=Js((xV,bV)=>{"use strict";(function(e,t){typeof xV=="object"&&typeof bV<"u"?bV.exports=t():typeof define=="function"&&define.amd?define(t):(e=typeof globalThis<"u"?globalThis:e||self).dayjs_plugin_isoWeek=t()})(xV,(function(){"use strict";var e="day";return function(t,r,i){var n=o(function(l){return l.add(4-l.isoWeekday(),e)},"a"),a=r.prototype;a.isoWeekYear=function(){return n(this).year()},a.isoWeek=function(l){if(!this.$utils().u(l))return this.add(7*(l-this.isoWeek()),e);var u,h,d,f,p=n(this),m=(u=this.isoWeekYear(),h=this.$u,d=(h?i.utc:i)().year(u).startOf("year"),f=4-d.isoWeekday(),d.isoWeekday()>4&&(f+=7),d.add(f,e));return p.diff(m,"week")+1},a.isoWeekday=function(l){return this.$utils().u(l)?this.day()||7:this.day(this.day()%7?l:l-7)};var s=a.startOf;a.startOf=function(l,u){var h=this.$utils(),d=!!h.u(u)||u;return h.p(l)==="isoweek"?d?this.date(this.date()-(this.isoWeekday()-1)).startOf("day"):this.date(this.date()-1-(this.isoWeekday()-1)+7).endOf("day"):s.bind(this)(l,u)}}}))});var h5e=Js((TV,CV)=>{"use strict";(function(e,t){typeof TV=="object"&&typeof CV<"u"?CV.exports=t():typeof define=="function"&&define.amd?define(t):(e=typeof globalThis<"u"?globalThis:e||self).dayjs_plugin_customParseFormat=t()})(TV,(function(){"use strict";var e={LTS:"h:mm:ss A",LT:"h:mm A",L:"MM/DD/YYYY",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY h:mm A",LLLL:"dddd, MMMM D, YYYY h:mm A"},t=/(\[[^[]*\])|([-_:/.,()\s]+)|(A|a|Q|YYYY|YY?|ww?|MM?M?M?|Do|DD?|hh?|HH?|mm?|ss?|S{1,3}|z|ZZ?)/g,r=/\d/,i=/\d\d/,n=/\d\d?/,a=/\d*[^-_:/,()\s\d]+/,s={},l=o(function(g){return(g=+g)+(g>68?1900:2e3)},"a"),u=o(function(g){return function(y){this[g]=+y}},"f"),h=[/[+-]\d\d:?(\d\d)?|Z/,function(g){(this.zone||(this.zone={})).offset=(function(y){if(!y||y==="Z")return 0;var v=y.match(/([+-]|\d\d)/g),x=60*v[1]+(+v[2]||0);return x===0?0:v[0]==="+"?-x:x})(g)}],d=o(function(g){var y=s[g];return y&&(y.indexOf?y:y.s.concat(y.f))},"u"),f=o(function(g,y){var v,x=s.meridiem;if(x){for(var b=1;b<=24;b+=1)if(g.indexOf(x(b,0,y))>-1){v=b>12;break}}else v=g===(y?"pm":"PM");return v},"d"),p={A:[a,function(g){this.afternoon=f(g,!1)}],a:[a,function(g){this.afternoon=f(g,!0)}],Q:[r,function(g){this.month=3*(g-1)+1}],S:[r,function(g){this.milliseconds=100*+g}],SS:[i,function(g){this.milliseconds=10*+g}],SSS:[/\d{3}/,function(g){this.milliseconds=+g}],s:[n,u("seconds")],ss:[n,u("seconds")],m:[n,u("minutes")],mm:[n,u("minutes")],H:[n,u("hours")],h:[n,u("hours")],HH:[n,u("hours")],hh:[n,u("hours")],D:[n,u("day")],DD:[i,u("day")],Do:[a,function(g){var y=s.ordinal,v=g.match(/\d+/);if(this.day=v[0],y)for(var x=1;x<=31;x+=1)y(x).replace(/\[|\]/g,"")===g&&(this.day=x)}],w:[n,u("week")],ww:[i,u("week")],M:[n,u("month")],MM:[i,u("month")],MMM:[a,function(g){var y=d("months"),v=(d("monthsShort")||y.map((function(x){return x.slice(0,3)}))).indexOf(g)+1;if(v<1)throw new Error;this.month=v%12||v}],MMMM:[a,function(g){var y=d("months").indexOf(g)+1;if(y<1)throw new Error;this.month=y%12||y}],Y:[/[+-]?\d+/,u("year")],YY:[i,function(g){this.year=l(g)}],YYYY:[/\d{4}/,u("year")],Z:h,ZZ:h};function m(g){var y,v;y=g,v=s&&s.formats;for(var x=(g=y.replace(/(\[[^\]]+])|(LTS?|l{1,4}|L{1,4})/g,(function(A,N,P){var I=P&&P.toUpperCase();return N||v[P]||e[P]||v[I].replace(/(\[[^\]]+])|(MMMM|MM|DD|dddd)/g,(function(D,_,R){return _||R.slice(1)}))}))).match(t),b=x.length,T=0;T<b;T+=1){var w=x[T],C=p[w],k=C&&C[0],E=C&&C[1];x[T]=E?{regex:k,parser:E}:w.replace(/^\[|\]$/g,"")}return function(A){for(var N={},P=0,I=0;P<b;P+=1){var D=x[P];if(typeof D=="string")I+=D.length;else{var _=D.regex,R=D.parser,M=A.slice(I),L=_.exec(M)[0];R.call(N,L),A=A.replace(L,"")}}return(function(B){var O=B.afternoon;if(O!==void 0){var $=B.hours;O?$<12&&(B.hours+=12):$===12&&(B.hours=0),delete B.afternoon}})(N),N}}return o(m,"l"),function(g,y,v){v.p.customParseFormat=!0,g&&g.parseTwoDigitYear&&(l=g.parseTwoDigitYear);var x=y.prototype,b=x.parse;x.parse=function(T){var w=T.date,C=T.utc,k=T.args;this.$u=C;var E=k[1];if(typeof E=="string"){var A=k[2]===!0,N=k[3]===!0,P=A||N,I=k[2];N&&(I=k[2]),s=this.$locale(),!A&&I&&(s=v.Ls[I]),this.$d=(function(M,L,B,O){try{if(["x","X"].indexOf(L)>-1)return new Date((L==="X"?1e3:1)*M);var $=m(L)(M),G=$.year,F=$.month,V=$.day,H=$.hours,j=$.minutes,U=$.seconds,Q=$.milliseconds,Y=$.zone,ae=$.week,J=new Date,te=V||(G||F?1:J.getDate()),re=G||J.getFullYear(),ee=0;G&&!F||(ee=F>0?F-1:J.getMonth());var Te,ue=H||0,De=j||0,Ie=U||0,Ee=Q||0;return Y?new Date(Date.UTC(re,ee,te,ue,De,Ie,Ee+60*Y.offset*1e3)):B?new Date(Date.UTC(re,ee,te,ue,De,Ie,Ee)):(Te=new Date(re,ee,te,ue,De,Ie,Ee),ae&&(Te=O(Te).week(ae).toDate()),Te)}catch{return new Date("")}})(w,E,C,v),this.init(),I&&I!==!0&&(this.$L=this.locale(I).$L),P&&w!=this.format(E)&&(this.$d=new Date("")),s={}}else if(E instanceof Array)for(var D=E.length,_=1;_<=D;_+=1){k[1]=E[_-1];var R=v.apply(this,k);if(R.isValid()){this.$d=R.$d,this.$L=R.$L,this.init();break}_===D&&(this.$d=new Date(""))}else b.call(this,T)}}}))});var d5e=Js((kV,wV)=>{"use strict";(function(e,t){typeof kV=="object"&&typeof wV<"u"?wV.exports=t():typeof define=="function"&&define.amd?define(t):(e=typeof globalThis<"u"?globalThis:e||self).dayjs_plugin_advancedFormat=t()})(kV,(function(){"use strict";return function(e,t){var r=t.prototype,i=r.format;r.format=function(n){var a=this,s=this.$locale();if(!this.isValid())return i.bind(this)(n);var l=this.$utils(),u=(n||"YYYY-MM-DDTHH:mm:ssZ").replace(/\[([^\]]+)]|Q|wo|ww|w|WW|W|zzz|z|gggg|GGGG|Do|X|x|k{1,2}|S/g,(function(h){switch(h){case"Q":return Math.ceil((a.$M+1)/3);case"Do":return s.ordinal(a.$D);case"gggg":return a.weekYear();case"GGGG":return a.isoWeekYear();case"wo":return s.ordinal(a.week(),"W");case"w":case"ww":return l.s(a.week(),h==="w"?1:2,"0");case"W":case"WW":return l.s(a.isoWeek(),h==="W"?1:2,"0");case"k":case"kk":return l.s(String(a.$H===0?24:a.$H),h==="k"?1:2,"0");case"X":return Math.floor(a.$d.getTime()/1e3);case"x":return a.$d.getTime();case"z":return"["+a.offsetName()+"]";case"zzz":return"["+a.offsetName("long")+"]";default:return h}}));return i.bind(this)(u)}}}))});function _5e(e,t,r){let i=!0;for(;i;)i=!1,r.forEach(function(n){let a="^\\s*"+n+"\\s*$",s=new RegExp(a);e[0].match(s)&&(t[n]=!0,e.shift(1),i=!0)})}var m5e,To,g5e,y5e,v5e,f5e,ou,_V,DV,RV,VT,WT,LV,MV,_6,gy,NV,x5e,IV,py,qT,OV,PV,D6,SV,Tbt,Cbt,kbt,wbt,Sbt,Ebt,Abt,_bt,Dbt,Rbt,Lbt,Mbt,Nbt,Ibt,Obt,Pbt,Bbt,Fbt,$bt,zbt,Gbt,Vbt,Wbt,qbt,b5e,Ubt,Hbt,Ybt,T5e,jbt,EV,C5e,k5e,E6,my,Xbt,Kbt,AV,A6,jn,w5e,Zbt,fm,Qbt,p5e,Jbt,S5e,e2t,E5e,t2t,r2t,A5e,D5e=z(()=>{"use strict";m5e=ys(fg(),1),To=ys(wC(),1),g5e=ys(u5e(),1),y5e=ys(h5e(),1),v5e=ys(d5e(),1);St();Ut();Xt();Ci();To.default.extend(g5e.default);To.default.extend(y5e.default);To.default.extend(v5e.default);f5e={friday:5,saturday:6},ou="",_V="",RV="",VT=[],WT=[],LV=new Map,MV=[],_6=[],gy="",NV="",x5e=["active","done","crit","milestone","vert"],IV=[],py="",qT=!1,OV=!1,PV="sunday",D6="saturday",SV=0,Tbt=o(function(){MV=[],_6=[],gy="",IV=[],E6=0,AV=void 0,A6=void 0,jn=[],ou="",_V="",NV="",DV=void 0,RV="",VT=[],WT=[],qT=!1,OV=!1,SV=0,LV=new Map,py="",gr(),PV="sunday",D6="saturday"},"clear"),Cbt=o(function(e){py=e},"setDiagramId"),kbt=o(function(e){_V=e},"setAxisFormat"),wbt=o(function(){return _V},"getAxisFormat"),Sbt=o(function(e){DV=e},"setTickInterval"),Ebt=o(function(){return DV},"getTickInterval"),Abt=o(function(e){RV=e},"setTodayMarker"),_bt=o(function(){return RV},"getTodayMarker"),Dbt=o(function(e){ou=e},"setDateFormat"),Rbt=o(function(){qT=!0},"enableInclusiveEndDates"),Lbt=o(function(){return qT},"endDatesAreInclusive"),Mbt=o(function(){OV=!0},"enableTopAxis"),Nbt=o(function(){return OV},"topAxisEnabled"),Ibt=o(function(e){NV=e},"setDisplayMode"),Obt=o(function(){return NV},"getDisplayMode"),Pbt=o(function(){return ou},"getDateFormat"),Bbt=o(function(e){VT=e.toLowerCase().split(/[\s,]+/)},"setIncludes"),Fbt=o(function(){return VT},"getIncludes"),$bt=o(function(e){WT=e.toLowerCase().split(/[\s,]+/)},"setExcludes"),zbt=o(function(){return WT},"getExcludes"),Gbt=o(function(){return LV},"getLinks"),Vbt=o(function(e){gy=e,MV.push(e)},"addSection"),Wbt=o(function(){return MV},"getSections"),qbt=o(function(){let e=p5e(),t=10,r=0;for(;!e&&r<t;)e=p5e(),r++;return _6=jn,_6},"getTasks"),b5e=o(function(e,t,r,i){let n=e.format(t.trim()),a=e.format("YYYY-MM-DD");return i.includes(n)||i.includes(a)?!1:r.includes("weekends")&&(e.isoWeekday()===f5e[D6]||e.isoWeekday()===f5e[D6]+1)||r.includes(e.format("dddd").toLowerCase())?!0:r.includes(n)||r.includes(a)},"isInvalidDate"),Ubt=o(function(e){PV=e},"setWeekday"),Hbt=o(function(){return PV},"getWeekday"),Ybt=o(function(e){D6=e},"setWeekend"),T5e=o(function(e,t,r,i){if(!r.length||e.manualEndTime)return;let n;e.startTime instanceof Date?n=(0,To.default)(e.startTime):n=(0,To.default)(e.startTime,t,!0),n=n.add(1,"d");let a;e.endTime instanceof Date?a=(0,To.default)(e.endTime):a=(0,To.default)(e.endTime,t,!0);let[s,l]=jbt(n,a,t,r,i);e.endTime=s.toDate(),e.renderEndTime=l},"checkTaskDates"),jbt=o(function(e,t,r,i,n){let a=!1,s=null,l=t.add(1e4,"d");for(;e<=t;){if(a||(s=t.toDate()),a=b5e(e,r,i,n),a&&(t=t.add(1,"d"),t>l))throw new Error("Failed to find a valid date that was not excluded by `excludes` after 10,000 iterations.");e=e.add(1,"d")}return[t,s]},"fixTaskDates"),EV=o(function(e,t,r){if(r=r.trim(),o(l=>{let u=l.trim();return u==="x"||u==="X"},"isTimestampFormat")(t)&&/^\d+$/.test(r))return new Date(Number(r));let a=/^after\s+(?<ids>[\d\w- ]+)/.exec(r);if(a!==null){let l=null;for(let h of a.groups.ids.split(" ")){let d=fm(h);d!==void 0&&(!l||d.endTime>l.endTime)&&(l=d)}if(l)return l.endTime;let u=new Date;return u.setHours(0,0,0,0),u}let s=(0,To.default)(r,t.trim(),!0);if(s.isValid())return s.toDate();{Z.debug("Invalid date:"+r),Z.debug("With date format:"+t.trim());let l=new Date(r);if(l===void 0||isNaN(l.getTime())||l.getFullYear()<-1e4||l.getFullYear()>1e4)throw new Error("Invalid date:"+r);return l}},"getStartDate"),C5e=o(function(e){let t=/^(\d+(?:\.\d+)?)([Mdhmswy]|ms)$/.exec(e.trim());return t!==null?[Number.parseFloat(t[1]),t[2]]:[NaN,"ms"]},"parseDuration"),k5e=o(function(e,t,r,i=!1){r=r.trim();let a=/^until\s+(?<ids>[\d\w- ]+)/.exec(r);if(a!==null){let d=null;for(let p of a.groups.ids.split(" ")){let m=fm(p);m!==void 0&&(!d||m.startTime<d.startTime)&&(d=m)}if(d)return d.startTime;let f=new Date;return f.setHours(0,0,0,0),f}let s=(0,To.default)(r,t.trim(),!0);if(s.isValid())return i&&(s=s.add(1,"d")),s.toDate();let l=(0,To.default)(e),[u,h]=C5e(r);if(!Number.isNaN(u)){let d=l.add(u,h);d.isValid()&&(l=d)}return l.toDate()},"getEndDate"),E6=0,my=o(function(e){return e===void 0?(E6=E6+1,"task"+E6):e},"parseId"),Xbt=o(function(e,t){let r;t.substr(0,1)===":"?r=t.substr(1,t.length):r=t;let i=r.split(","),n={};_5e(i,n,x5e);for(let s=0;s<i.length;s++)i[s]=i[s].trim();let a="";switch(i.length){case 1:n.id=my(),n.startTime=e.endTime,a=i[0];break;case 2:n.id=my(),n.startTime=EV(void 0,ou,i[0]),a=i[1];break;case 3:n.id=my(i[0]),n.startTime=EV(void 0,ou,i[1]),a=i[2];break;default:}return a&&(n.endTime=k5e(n.startTime,ou,a,qT),n.manualEndTime=(0,To.default)(a,"YYYY-MM-DD",!0).isValid(),T5e(n,ou,WT,VT)),n},"compileData"),Kbt=o(function(e,t){let r;t.substr(0,1)===":"?r=t.substr(1,t.length):r=t;let i=r.split(","),n={};_5e(i,n,x5e);for(let a=0;a<i.length;a++)i[a]=i[a].trim();switch(i.length){case 1:n.id=my(),n.startTime={type:"prevTaskEnd",id:e},n.endTime={data:i[0]};break;case 2:n.id=my(),n.startTime={type:"getStartDate",startData:i[0]},n.endTime={data:i[1]};break;case 3:n.id=my(i[0]),n.startTime={type:"getStartDate",startData:i[1]},n.endTime={data:i[2]};break;default:}return n},"parseData"),jn=[],w5e={},Zbt=o(function(e,t){let r={section:gy,type:gy,processed:!1,manualEndTime:!1,renderEndTime:null,raw:{data:t},task:e,classes:[]},i=Kbt(A6,t);r.raw.startTime=i.startTime,r.raw.endTime=i.endTime,r.id=i.id,r.prevTaskId=A6,r.active=i.active,r.done=i.done,r.crit=i.crit,r.milestone=i.milestone,r.vert=i.vert,r.order=SV,SV++;let n=jn.push(r);A6=r.id,w5e[r.id]=n-1},"addTask"),fm=o(function(e){let t=w5e[e];return jn[t]},"findTaskById"),Qbt=o(function(e,t){let r={section:gy,type:gy,description:e,task:e,classes:[]},i=Xbt(AV,t);r.startTime=i.startTime,r.endTime=i.endTime,r.id=i.id,r.active=i.active,r.done=i.done,r.crit=i.crit,r.milestone=i.milestone,r.vert=i.vert,AV=r,_6.push(r)},"addTaskOrg"),p5e=o(function(){let e=o(function(r){let i=jn[r],n="";switch(jn[r].raw.startTime.type){case"prevTaskEnd":{let a=fm(i.prevTaskId);i.startTime=a.endTime;break}case"getStartDate":n=EV(void 0,ou,jn[r].raw.startTime.startData),n&&(jn[r].startTime=n);break}return jn[r].startTime&&(jn[r].endTime=k5e(jn[r].startTime,ou,jn[r].raw.endTime.data,qT),jn[r].endTime&&(jn[r].processed=!0,jn[r].manualEndTime=(0,To.default)(jn[r].raw.endTime.data,"YYYY-MM-DD",!0).isValid(),T5e(jn[r],ou,WT,VT))),jn[r].processed},"compileTask"),t=!0;for(let[r,i]of jn.entries())e(r),t=t&&i.processed;return t},"compileTasks"),Jbt=o(function(e,t){let r=t;ge().securityLevel!=="loose"&&(r=(0,m5e.sanitizeUrl)(t)),e.split(",").forEach(function(i){fm(i)!==void 0&&(E5e(i,()=>{window.open(r,"_self")}),LV.set(i,r))}),S5e(e,"clickable")},"setLink"),S5e=o(function(e,t){e.split(",").forEach(function(r){let i=fm(r);i!==void 0&&i.classes.push(t)})},"setClass"),e2t=o(function(e,t,r){if(ge().securityLevel!=="loose"||t===void 0)return;let i=[];if(typeof r=="string"){i=r.split(/,(?=(?:(?:[^"]*"){2})*[^"]*$)/);for(let a=0;a<i.length;a++){let s=i[a].trim();s.startsWith('"')&&s.endsWith('"')&&(s=s.substr(1,s.length-2)),i[a]=s}}i.length===0&&i.push(e),fm(e)!==void 0&&E5e(e,()=>{Zt.runFunc(t,...i)})},"setClickFun"),E5e=o(function(e,t){IV.push(function(){let r=py?`${py}-${e}`:e,i=document.querySelector(`[id="${r}"]`);i!==null&&i.addEventListener("click",function(){t()})},function(){let r=py?`${py}-${e}`:e,i=document.querySelector(`[id="${r}-text"]`);i!==null&&i.addEventListener("click",function(){t()})})},"pushFun"),t2t=o(function(e,t,r){e.split(",").forEach(function(i){e2t(i,t,r)}),S5e(e,"clickable")},"setClickEvent"),r2t=o(function(e){IV.forEach(function(t){t(e)})},"bindFunctions"),A5e={getConfig:o(()=>ge().gantt,"getConfig"),clear:Tbt,setDateFormat:Dbt,getDateFormat:Pbt,enableInclusiveEndDates:Rbt,endDatesAreInclusive:Lbt,enableTopAxis:Mbt,topAxisEnabled:Nbt,setAxisFormat:kbt,getAxisFormat:wbt,setTickInterval:Sbt,getTickInterval:Ebt,setTodayMarker:Abt,getTodayMarker:_bt,setAccTitle:Cr,getAccTitle:kr,setDiagramTitle:Ar,getDiagramTitle:Er,setDiagramId:Cbt,setDisplayMode:Ibt,getDisplayMode:Obt,setAccDescription:wr,getAccDescription:Sr,addSection:Vbt,getSections:Wbt,getTasks:qbt,addTask:Zbt,findTaskById:fm,addTaskOrg:Qbt,setIncludes:Bbt,getIncludes:Fbt,setExcludes:$bt,getExcludes:zbt,setClickEvent:t2t,setLink:Jbt,getLinks:Gbt,bindFunctions:r2t,parseDuration:C5e,isInvalidDate:b5e,setWeekday:Ubt,getWeekday:Hbt,setWeekend:Ybt};o(_5e,"getTaskTags")});var R5e=Js((BV,FV)=>{"use strict";(function(e,t){typeof BV=="object"&&typeof FV<"u"?FV.exports=t():typeof define=="function"&&define.amd?define(t):(e=typeof globalThis<"u"?globalThis:e||self).dayjs_plugin_duration=t()})(BV,(function(){"use strict";var e,t,r=1e3,i=6e4,n=36e5,a=864e5,s=/\[([^\]]+)]|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g,l=31536e6,u=2628e6,h=/^(-|\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/,d={years:l,months:u,days:a,hours:n,minutes:i,seconds:r,milliseconds:1,weeks:6048e5},f=o(function(w){return w instanceof b},"c"),p=o(function(w,C,k){return new b(w,k,C.$l)},"f"),m=o(function(w){return t.p(w)+"s"},"m"),g=o(function(w){return w<0},"l"),y=o(function(w){return g(w)?Math.ceil(w):Math.floor(w)},"$"),v=o(function(w){return Math.abs(w)},"y"),x=o(function(w,C){return w?g(w)?{negative:!0,format:""+v(w)+C}:{negative:!1,format:""+w+C}:{negative:!1,format:""}},"v"),b=(function(){function w(k,E,A){var N=this;if(this.$d={},this.$l=A,k===void 0&&(this.$ms=0,this.parseFromMilliseconds()),E)return p(k*d[m(E)],this);if(typeof k=="number")return this.$ms=k,this.parseFromMilliseconds(),this;if(typeof k=="object")return Object.keys(k).forEach((function(D){N.$d[m(D)]=k[D]})),this.calMilliseconds(),this;if(typeof k=="string"){var P=k.match(h);if(P){var I=P.slice(2).map((function(D){return D!=null?Number(D):0}));return this.$d.years=I[0],this.$d.months=I[1],this.$d.weeks=I[2],this.$d.days=I[3],this.$d.hours=I[4],this.$d.minutes=I[5],this.$d.seconds=I[6],this.calMilliseconds(),this}}return this}o(w,"l");var C=w.prototype;return C.calMilliseconds=function(){var k=this;this.$ms=Object.keys(this.$d).reduce((function(E,A){return E+(k.$d[A]||0)*d[A]}),0)},C.parseFromMilliseconds=function(){var k=this.$ms;this.$d.years=y(k/l),k%=l,this.$d.months=y(k/u),k%=u,this.$d.days=y(k/a),k%=a,this.$d.hours=y(k/n),k%=n,this.$d.minutes=y(k/i),k%=i,this.$d.seconds=y(k/r),k%=r,this.$d.milliseconds=k},C.toISOString=function(){var k=x(this.$d.years,"Y"),E=x(this.$d.months,"M"),A=+this.$d.days||0;this.$d.weeks&&(A+=7*this.$d.weeks);var N=x(A,"D"),P=x(this.$d.hours,"H"),I=x(this.$d.minutes,"M"),D=this.$d.seconds||0;this.$d.milliseconds&&(D+=this.$d.milliseconds/1e3,D=Math.round(1e3*D)/1e3);var _=x(D,"S"),R=k.negative||E.negative||N.negative||P.negative||I.negative||_.negative,M=P.format||I.format||_.format?"T":"",L=(R?"-":"")+"P"+k.format+E.format+N.format+M+P.format+I.format+_.format;return L==="P"||L==="-P"?"P0D":L},C.toJSON=function(){return this.toISOString()},C.format=function(k){var E=k||"YYYY-MM-DDTHH:mm:ss",A={Y:this.$d.years,YY:t.s(this.$d.years,2,"0"),YYYY:t.s(this.$d.years,4,"0"),M:this.$d.months,MM:t.s(this.$d.months,2,"0"),D:this.$d.days,DD:t.s(this.$d.days,2,"0"),H:this.$d.hours,HH:t.s(this.$d.hours,2,"0"),m:this.$d.minutes,mm:t.s(this.$d.minutes,2,"0"),s:this.$d.seconds,ss:t.s(this.$d.seconds,2,"0"),SSS:t.s(this.$d.milliseconds,3,"0")};return E.replace(s,(function(N,P){return P||String(A[N])}))},C.as=function(k){return this.$ms/d[m(k)]},C.get=function(k){var E=this.$ms,A=m(k);return A==="milliseconds"?E%=1e3:E=A==="weeks"?y(E/d[A]):this.$d[A],E||0},C.add=function(k,E,A){var N;return N=E?k*d[m(E)]:f(k)?k.$ms:p(k,this).$ms,p(this.$ms+N*(A?-1:1),this)},C.subtract=function(k,E){return this.add(k,E,!0)},C.locale=function(k){var E=this.clone();return E.$l=k,E},C.clone=function(){return p(this.$ms,this)},C.humanize=function(k){return e().add(this.$ms,"ms").locale(this.$l).fromNow(!k)},C.valueOf=function(){return this.asMilliseconds()},C.milliseconds=function(){return this.get("milliseconds")},C.asMilliseconds=function(){return this.as("milliseconds")},C.seconds=function(){return this.get("seconds")},C.asSeconds=function(){return this.as("seconds")},C.minutes=function(){return this.get("minutes")},C.asMinutes=function(){return this.as("minutes")},C.hours=function(){return this.get("hours")},C.asHours=function(){return this.as("hours")},C.days=function(){return this.get("days")},C.asDays=function(){return this.as("days")},C.weeks=function(){return this.get("weeks")},C.asWeeks=function(){return this.as("weeks")},C.months=function(){return this.get("months")},C.asMonths=function(){return this.as("months")},C.years=function(){return this.get("years")},C.asYears=function(){return this.as("years")},w})(),T=o(function(w,C,k){return w.add(C.years()*k,"y").add(C.months()*k,"M").add(C.days()*k,"d").add(C.hours()*k,"h").add(C.minutes()*k,"m").add(C.seconds()*k,"s").add(C.milliseconds()*k,"ms")},"p");return function(w,C,k){e=k,t=k().$utils(),k.duration=function(N,P){var I=k.locale();return p(N,{$l:I},P)},k.isDuration=f;var E=C.prototype.add,A=C.prototype.subtract;C.prototype.add=function(N,P){return f(N)?T(this,N,1):E.bind(this)(N,P)},C.prototype.subtract=function(N,P){return f(N)?T(this,N,-1):A.bind(this)(N,P)}}}))});var yy,M5e,i2t,L5e,n2t,kh,$V,a2t,N5e,I5e=z(()=>{"use strict";yy=ys(wC(),1),M5e=ys(R5e(),1);St();Rr();Ir();Ut();Di();yy.default.extend(M5e.default);i2t=o(function(){Z.debug("Something is calling, setConf, remove the call")},"setConf"),L5e={monday:Qh,tuesday:fw,wednesday:pw,thursday:vc,friday:mw,saturday:gw,sunday:wl},n2t=o((e,t)=>{let r=[...e].map(()=>-1/0),i=[...e].sort((a,s)=>a.startTime-s.startTime||a.order-s.order),n=0;for(let a of i)for(let s=0;s<r.length;s++)if(a.startTime>=r[s]){r[s]=a.endTime,a.order=s+t,s>n&&(n=s);break}return n},"getMaxIntersections"),$V=1e4,a2t=o(function(e,t,r,i){let n=ge().gantt;i.db.setDiagramId(t);let a=ge().securityLevel,s;a==="sandbox"&&(s=Je("#i"+t));let l=a==="sandbox"?Je(s.nodes()[0].contentDocument.body):Je("body"),u=a==="sandbox"?s.nodes()[0].contentDocument:document,h=u.getElementById(t);kh=h.parentElement.offsetWidth,kh===void 0&&(kh=1200),n.useWidth!==void 0&&(kh=n.useWidth);let d=i.db.getTasks(),f=[];for(let N of d)f.push(N.type);f=A(f);let p={},m=2*n.topPadding;if(i.db.getDisplayMode()==="compact"||n.displayMode==="compact"){let N={};for(let I of d)N[I.section]===void 0?N[I.section]=[I]:N[I.section].push(I);let P=0;for(let I of Object.keys(N)){let D=n2t(N[I],P)+1;P+=D,m+=D*(n.barHeight+n.barGap),p[I]=D}}else{m+=d.length*(n.barHeight+n.barGap);for(let N of f)p[N]=d.filter(P=>P.type===N).length}h.setAttribute("viewBox","0 0 "+kh+" "+m);let g=l.select(`[id="${t}"]`),y=xw().domain([wk(d,function(N){return N.startTime}),kk(d,function(N){return N.endTime})]).rangeRound([0,kh-n.leftPadding-n.rightPadding]);function v(N,P){let I=N.startTime,D=P.startTime,_=0;return I>D?_=1:I<D&&(_=-1),_}o(v,"taskCompare"),d.sort(v),x(d,kh,m),Br(g,m,kh,n.useMaxWidth),g.append("text").text(i.db.getDiagramTitle()).attr("x",kh/2).attr("y",n.titleTopMargin).attr("class","titleText");function x(N,P,I){let D=n.barHeight,_=D+n.barGap,R=n.topPadding,M=n.leftPadding,L=kl().domain([0,f.length]).range(["#00B9FA","#F95002"]).interpolate(vR);T(_,R,M,P,I,N,i.db.getExcludes(),i.db.getIncludes()),C(M,R,P,I),b(N,_,R,M,D,L,P,I),k(_,R,M,D,L),E(M,R,P,I)}o(x,"makeGantt");function b(N,P,I,D,_,R,M){N.sort((F,V)=>F.vert===V.vert?0:F.vert?1:-1);let B=[...new Set(N.map(F=>F.order))].map(F=>N.find(V=>V.order===F));g.append("g").selectAll("rect").data(B).enter().append("rect").attr("x",0).attr("y",function(F,V){return V=F.order,V*P+I-2}).attr("width",function(){return M-n.rightPadding/2}).attr("height",P).attr("class",function(F){for(let[V,H]of f.entries())if(F.type===H)return"section section"+V%n.numberSectionStyles;return"section section0"}).enter();let O=g.append("g").selectAll("rect").data(N).enter(),$=i.db.getLinks();if(O.append("rect").attr("id",function(F){return t+"-"+F.id}).attr("rx",3).attr("ry",3).attr("x",function(F){return F.milestone?y(F.startTime)+D+.5*(y(F.endTime)-y(F.startTime))-.5*_:y(F.startTime)+D}).attr("y",function(F,V){return V=F.order,F.vert?n.gridLineStartPadding:V*P+I}).attr("width",function(F){return F.milestone?_:F.vert?.08*_:y(F.renderEndTime||F.endTime)-y(F.startTime)}).attr("height",function(F){return F.vert?d.length*(n.barHeight+n.barGap)+n.barHeight*2:_}).attr("transform-origin",function(F,V){return V=F.order,(y(F.startTime)+D+.5*(y(F.endTime)-y(F.startTime))).toString()+"px "+(V*P+I+.5*_).toString()+"px"}).attr("class",function(F){let V="task",H="";F.classes.length>0&&(H=F.classes.join(" "));let j=0;for(let[Q,Y]of f.entries())F.type===Y&&(j=Q%n.numberSectionStyles);let U="";return F.active?F.crit?U+=" activeCrit":U=" active":F.done?F.crit?U=" doneCrit":U=" done":F.crit&&(U+=" crit"),U.length===0&&(U=" task"),F.milestone&&(U=" milestone "+U),F.vert&&(U=" vert "+U),U+=j,U+=" "+H,V+U}),O.append("text").attr("id",function(F){return t+"-"+F.id+"-text"}).text(function(F){return F.task}).attr("font-size",n.fontSize).attr("x",function(F){let V=y(F.startTime),H=y(F.renderEndTime||F.endTime);if(F.milestone&&(V+=.5*(y(F.endTime)-y(F.startTime))-.5*_,H=V+_),F.vert)return y(F.startTime)+D;let j=this.getBBox().width;return j>H-V?H+j+1.5*n.leftPadding>M?V+D-5:H+D+5:(H-V)/2+V+D}).attr("y",function(F,V){return F.vert?n.gridLineStartPadding+d.length*(n.barHeight+n.barGap)+60:(V=F.order,V*P+n.barHeight/2+(n.fontSize/2-2)+I)}).attr("text-height",_).attr("class",function(F){let V=y(F.startTime),H=y(F.endTime);F.milestone&&(H=V+_);let j=this.getBBox().width,U="";F.classes.length>0&&(U=F.classes.join(" "));let Q=0;for(let[ae,J]of f.entries())F.type===J&&(Q=ae%n.numberSectionStyles);let Y="";return F.active&&(F.crit?Y="activeCritText"+Q:Y="activeText"+Q),F.done?F.crit?Y=Y+" doneCritText"+Q:Y=Y+" doneText"+Q:F.crit&&(Y=Y+" critText"+Q),F.milestone&&(Y+=" milestoneText"),F.vert&&(Y+=" vertText"),j>H-V?H+j+1.5*n.leftPadding>M?U+" taskTextOutsideLeft taskTextOutside"+Q+" "+Y:U+" taskTextOutsideRight taskTextOutside"+Q+" "+Y+" width-"+j:U+" taskText taskText"+Q+" "+Y+" width-"+j}),ge().securityLevel==="sandbox"){let F;F=Je("#i"+t);let V=F.nodes()[0].contentDocument;O.filter(function(H){return $.has(H.id)}).each(function(H){var j=V.querySelector("#"+CSS.escape(t+"-"+H.id)),U=V.querySelector("#"+CSS.escape(t+"-"+H.id+"-text"));let Q=j.parentNode;var Y=V.createElement("a");Y.setAttribute("xlink:href",$.get(H.id)),Y.setAttribute("target","_top"),Q.appendChild(Y),Y.appendChild(j),Y.appendChild(U)})}}o(b,"drawRects");function T(N,P,I,D,_,R,M,L){if(M.length===0&&L.length===0)return;let B,O;for(let{startTime:j,endTime:U}of R)(B===void 0||j<B)&&(B=j),(O===void 0||U>O)&&(O=U);if(!B||!O)return;if((0,yy.default)(O).diff((0,yy.default)(B),"year")>5){Z.warn("The difference between the min and max time is more than 5 years. This will cause performance issues. Skipping drawing exclude days.");return}let $=i.db.getDateFormat(),G=[],F=null,V=(0,yy.default)(B);for(;V.valueOf()<=O;)i.db.isInvalidDate(V,$,M,L)?F?F.end=V:F={start:V,end:V}:F&&(G.push(F),F=null),V=V.add(1,"d");g.append("g").selectAll("rect").data(G).enter().append("rect").attr("id",j=>t+"-exclude-"+j.start.format("YYYY-MM-DD")).attr("x",j=>y(j.start.startOf("day"))+I).attr("y",n.gridLineStartPadding).attr("width",j=>y(j.end.endOf("day"))-y(j.start.startOf("day"))).attr("height",_-P-n.gridLineStartPadding).attr("transform-origin",function(j,U){return(y(j.start)+I+.5*(y(j.end)-y(j.start))).toString()+"px "+(U*N+.5*_).toString()+"px"}).attr("class","exclude-range")}o(T,"drawExcludeDays");function w(N,P,I,D){if(I<=0||N>P)return 1/0;let _=P-N,R=yy.default.duration({[D??"day"]:I}).asMilliseconds();return R<=0?1/0:Math.ceil(_/R)}o(w,"getEstimatedTickCount");function C(N,P,I,D){let _=i.db.getDateFormat(),R=i.db.getAxisFormat(),M;R?M=R:_==="D"?M="%d":M=n.axisFormat??"%Y-%m-%d";let L=JD(y).tickSize(-D+P+n.gridLineStartPadding).tickFormat(fp(M)),O=/^([1-9]\d*)(millisecond|second|minute|hour|day|week|month)$/.exec(i.db.getTickInterval()||n.tickInterval);if(O!==null){let $=parseInt(O[1],10);if(isNaN($)||$<=0)Z.warn(`Invalid tick interval value: "${O[1]}". Skipping custom tick interval.`);else{let G=O[2],F=i.db.getWeekday()||n.weekday,V=y.domain(),H=V[0],j=V[1],U=w(H,j,$,G);if(U>$V)Z.warn(`The tick interval "${$}${G}" would generate ${U} ticks, which exceeds the maximum allowed (${$V}). This may indicate an invalid date or time range. Skipping custom tick interval.`);else switch(G){case"millisecond":L.ticks(gc.every($));break;case"second":L.ticks(io.every($));break;case"minute":L.ticks(Ru.every($));break;case"hour":L.ticks(Lu.every($));break;case"day":L.ticks(Oo.every($));break;case"week":L.ticks(L5e[F].every($));break;case"month":L.ticks(Mu.every($));break}}}if(g.append("g").attr("class","grid").attr("transform","translate("+N+", "+(D-50)+")").call(L).selectAll("text").style("text-anchor","middle").attr("fill","#000").attr("stroke","none").attr("font-size",10).attr("dy","1em"),i.db.topAxisEnabled()||n.topAxis){let $=QD(y).tickSize(-D+P+n.gridLineStartPadding).tickFormat(fp(M));if(O!==null){let G=parseInt(O[1],10);if(isNaN(G)||G<=0)Z.warn(`Invalid tick interval value: "${O[1]}". Skipping custom tick interval.`);else{let F=O[2],V=i.db.getWeekday()||n.weekday,H=y.domain(),j=H[0],U=H[1];if(w(j,U,G,F)<=$V)switch(F){case"millisecond":$.ticks(gc.every(G));break;case"second":$.ticks(io.every(G));break;case"minute":$.ticks(Ru.every(G));break;case"hour":$.ticks(Lu.every(G));break;case"day":$.ticks(Oo.every(G));break;case"week":$.ticks(L5e[V].every(G));break;case"month":$.ticks(Mu.every(G));break}}}g.append("g").attr("class","grid").attr("transform","translate("+N+", "+P+")").call($).selectAll("text").style("text-anchor","middle").attr("fill","#000").attr("stroke","none").attr("font-size",10)}}o(C,"makeGrid");function k(N,P){let I=0,D=Object.keys(p).map(_=>[_,p[_]]);g.append("g").selectAll("text").data(D).enter().append(function(_){let R=_[0].split(vt.lineBreakRegex),M=-(R.length-1)/2,L=u.createElementNS("http://www.w3.org/2000/svg","text");L.setAttribute("dy",M+"em");for(let[B,O]of R.entries()){let $=u.createElementNS("http://www.w3.org/2000/svg","tspan");$.setAttribute("alignment-baseline","central"),$.setAttribute("x","10"),B>0&&$.setAttribute("dy","1em"),$.textContent=O,L.appendChild($)}return L}).attr("x",10).attr("y",function(_,R){if(R>0)for(let M=0;M<R;M++)return I+=D[R-1][1],_[1]*N/2+I*N+P;else return _[1]*N/2+P}).attr("font-size",n.sectionFontSize).attr("class",function(_){for(let[R,M]of f.entries())if(_[0]===M)return"sectionTitle sectionTitle"+R%n.numberSectionStyles;return"sectionTitle"})}o(k,"vertLabels");function E(N,P,I,D){let _=i.db.getTodayMarker();if(_==="off")return;let R=g.append("g").attr("class","today"),M=new Date,L=R.append("line");L.attr("x1",y(M)+N).attr("x2",y(M)+N).attr("y1",n.titleTopMargin).attr("y2",D-n.titleTopMargin).attr("class","today"),_!==""&&L.attr("style",_.replace(/,/g,";"))}o(E,"drawToday");function A(N){let P={},I=[];for(let D=0,_=N.length;D<_;++D)Object.prototype.hasOwnProperty.call(P,N[D])||(P[N[D]]=!0,I.push(N[D]));return I}o(A,"checkUnique")},"draw"),N5e={setConf:i2t,draw:a2t}});var s2t,O5e,P5e=z(()=>{"use strict";s2t=o(e=>`
+`},"getStyles"),YDe=W3t});var XDe={};ir(XDe,{diagram:()=>q3t});var q3t,KDe=F(()=>{"use strict";FDe();gU();qDe();jDe();q3t={parser:$De,db:eL,renderer:WDe,styles:YDe}});var xU,JDe,e7e=F(()=>{"use strict";xU=(function(){var e=o(function(A,M,D,P){for(D=D||{},P=A.length;P--;D[A[P]]=M);return D},"o"),t=[6,8,10,12,13,14,15,16,17,18,20,21,22,23,24,25,26,27,28,29,30,31,33,35,36,38,40],r=[1,26],n=[1,27],i=[1,28],a=[1,29],s=[1,30],l=[1,31],u=[1,32],h=[1,33],d=[1,34],f=[1,9],p=[1,10],m=[1,11],g=[1,12],y=[1,13],v=[1,14],x=[1,15],b=[1,16],T=[1,19],k=[1,20],C=[1,21],w=[1,22],S=[1,23],R=[1,25],L=[1,35],N={trace:o(function(){},"trace"),yy:{},symbols_:{error:2,start:3,gantt:4,document:5,EOF:6,line:7,SPACE:8,statement:9,NL:10,weekday:11,weekday_monday:12,weekday_tuesday:13,weekday_wednesday:14,weekday_thursday:15,weekday_friday:16,weekday_saturday:17,weekday_sunday:18,weekend:19,weekend_friday:20,weekend_saturday:21,dateFormat:22,inclusiveEndDates:23,topAxis:24,axisFormat:25,tickInterval:26,excludes:27,includes:28,todayMarker:29,title:30,acc_title:31,acc_title_value:32,acc_descr:33,acc_descr_value:34,acc_descr_multiline_value:35,section:36,clickStatement:37,taskTxt:38,taskData:39,click:40,callbackname:41,callbackargs:42,href:43,clickStatementDebug:44,$accept:0,$end:1},terminals_:{2:"error",4:"gantt",6:"EOF",8:"SPACE",10:"NL",12:"weekday_monday",13:"weekday_tuesday",14:"weekday_wednesday",15:"weekday_thursday",16:"weekday_friday",17:"weekday_saturday",18:"weekday_sunday",20:"weekend_friday",21:"weekend_saturday",22:"dateFormat",23:"inclusiveEndDates",24:"topAxis",25:"axisFormat",26:"tickInterval",27:"excludes",28:"includes",29:"todayMarker",30:"title",31:"acc_title",32:"acc_title_value",33:"acc_descr",34:"acc_descr_value",35:"acc_descr_multiline_value",36:"section",38:"taskTxt",39:"taskData",40:"click",41:"callbackname",42:"callbackargs",43:"href"},productions_:[0,[3,3],[5,0],[5,2],[7,2],[7,1],[7,1],[7,1],[11,1],[11,1],[11,1],[11,1],[11,1],[11,1],[11,1],[19,1],[19,1],[9,1],[9,1],[9,1],[9,1],[9,1],[9,1],[9,1],[9,1],[9,1],[9,1],[9,1],[9,2],[9,2],[9,1],[9,1],[9,1],[9,2],[37,2],[37,3],[37,3],[37,4],[37,3],[37,4],[37,2],[44,2],[44,3],[44,3],[44,4],[44,3],[44,4],[44,2]],performAction:o(function(M,D,P,B,O,$,V){var G=$.length-1;switch(O){case 1:return $[G-1];case 2:this.$=[];break;case 3:$[G-1].push($[G]),this.$=$[G-1];break;case 4:case 5:this.$=$[G];break;case 6:case 7:this.$=[];break;case 8:B.setWeekday("monday");break;case 9:B.setWeekday("tuesday");break;case 10:B.setWeekday("wednesday");break;case 11:B.setWeekday("thursday");break;case 12:B.setWeekday("friday");break;case 13:B.setWeekday("saturday");break;case 14:B.setWeekday("sunday");break;case 15:B.setWeekend("friday");break;case 16:B.setWeekend("saturday");break;case 17:B.setDateFormat($[G].substr(11)),this.$=$[G].substr(11);break;case 18:B.enableInclusiveEndDates(),this.$=$[G].substr(18);break;case 19:B.TopAxis(),this.$=$[G].substr(8);break;case 20:B.setAxisFormat($[G].substr(11)),this.$=$[G].substr(11);break;case 21:B.setTickInterval($[G].substr(13)),this.$=$[G].substr(13);break;case 22:B.setExcludes($[G].substr(9)),this.$=$[G].substr(9);break;case 23:B.setIncludes($[G].substr(9)),this.$=$[G].substr(9);break;case 24:B.setTodayMarker($[G].substr(12)),this.$=$[G].substr(12);break;case 27:B.setDiagramTitle($[G].substr(6)),this.$=$[G].substr(6);break;case 28:this.$=$[G].trim(),B.setAccTitle(this.$);break;case 29:case 30:this.$=$[G].trim(),B.setAccDescription(this.$);break;case 31:B.addSection($[G].substr(8)),this.$=$[G].substr(8);break;case 33:B.addTask($[G-1],$[G]),this.$="task";break;case 34:this.$=$[G-1],B.setClickEvent($[G-1],$[G],null);break;case 35:this.$=$[G-2],B.setClickEvent($[G-2],$[G-1],$[G]);break;case 36:this.$=$[G-2],B.setClickEvent($[G-2],$[G-1],null),B.setLink($[G-2],$[G]);break;case 37:this.$=$[G-3],B.setClickEvent($[G-3],$[G-2],$[G-1]),B.setLink($[G-3],$[G]);break;case 38:this.$=$[G-2],B.setClickEvent($[G-2],$[G],null),B.setLink($[G-2],$[G-1]);break;case 39:this.$=$[G-3],B.setClickEvent($[G-3],$[G-1],$[G]),B.setLink($[G-3],$[G-2]);break;case 40:this.$=$[G-1],B.setLink($[G-1],$[G]);break;case 41:case 47:this.$=$[G-1]+" "+$[G];break;case 42:case 43:case 45:this.$=$[G-2]+" "+$[G-1]+" "+$[G];break;case 44:case 46:this.$=$[G-3]+" "+$[G-2]+" "+$[G-1]+" "+$[G];break}},"anonymous"),table:[{3:1,4:[1,2]},{1:[3]},e(t,[2,2],{5:3}),{6:[1,4],7:5,8:[1,6],9:7,10:[1,8],11:17,12:r,13:n,14:i,15:a,16:s,17:l,18:u,19:18,20:h,21:d,22:f,23:p,24:m,25:g,26:y,27:v,28:x,29:b,30:T,31:k,33:C,35:w,36:S,37:24,38:R,40:L},e(t,[2,7],{1:[2,1]}),e(t,[2,3]),{9:36,11:17,12:r,13:n,14:i,15:a,16:s,17:l,18:u,19:18,20:h,21:d,22:f,23:p,24:m,25:g,26:y,27:v,28:x,29:b,30:T,31:k,33:C,35:w,36:S,37:24,38:R,40:L},e(t,[2,5]),e(t,[2,6]),e(t,[2,17]),e(t,[2,18]),e(t,[2,19]),e(t,[2,20]),e(t,[2,21]),e(t,[2,22]),e(t,[2,23]),e(t,[2,24]),e(t,[2,25]),e(t,[2,26]),e(t,[2,27]),{32:[1,37]},{34:[1,38]},e(t,[2,30]),e(t,[2,31]),e(t,[2,32]),{39:[1,39]},e(t,[2,8]),e(t,[2,9]),e(t,[2,10]),e(t,[2,11]),e(t,[2,12]),e(t,[2,13]),e(t,[2,14]),e(t,[2,15]),e(t,[2,16]),{41:[1,40],43:[1,41]},e(t,[2,4]),e(t,[2,28]),e(t,[2,29]),e(t,[2,33]),e(t,[2,34],{42:[1,42],43:[1,43]}),e(t,[2,40],{41:[1,44]}),e(t,[2,35],{43:[1,45]}),e(t,[2,36]),e(t,[2,38],{42:[1,46]}),e(t,[2,37]),e(t,[2,39])],defaultActions:{},parseError:o(function(M,D){if(D.recoverable)this.trace(M);else{var P=new Error(M);throw P.hash=D,P}},"parseError"),parse:o(function(M){var D=this,P=[0],B=[],O=[null],$=[],V=this.table,G="",z=0,W=0,H=0,j=2,Q=1,U=$.slice.call(arguments,1),oe=Object.create(this.lexer),te={yy:{}};for(var le in this.yy)Object.prototype.hasOwnProperty.call(this.yy,le)&&(te.yy[le]=this.yy[le]);oe.setInput(M,te.yy),te.yy.lexer=oe,te.yy.parser=this,typeof oe.yylloc>"u"&&(oe.yylloc={});var ie=oe.yylloc;$.push(ie);var ae=oe.options&&oe.options.ranges;typeof te.yy.parseError=="function"?this.parseError=te.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function Re(we){P.length=P.length-2*we,O.length=O.length-we,$.length=$.length-we}o(Re,"popStack");function be(){var we;return we=B.pop()||oe.lex()||Q,typeof we!="number"&&(we instanceof Array&&(B=we,we=B.pop()),we=D.symbols_[we]||we),we}o(be,"lex");for(var Pe,Ge,Oe,ue,ye,ke,ce={},re,J,se,ge;;){if(Oe=P[P.length-1],this.defaultActions[Oe]?ue=this.defaultActions[Oe]:((Pe===null||typeof Pe>"u")&&(Pe=be()),ue=V[Oe]&&V[Oe][Pe]),typeof ue>"u"||!ue.length||!ue[0]){var Te="";ge=[];for(re in V[Oe])this.terminals_[re]&&re>j&&ge.push("'"+this.terminals_[re]+"'");oe.showPosition?Te="Parse error on line "+(z+1)+`:
+`+oe.showPosition()+`
+Expecting `+ge.join(", ")+", got '"+(this.terminals_[Pe]||Pe)+"'":Te="Parse error on line "+(z+1)+": Unexpected "+(Pe==Q?"end of input":"'"+(this.terminals_[Pe]||Pe)+"'"),this.parseError(Te,{text:oe.match,token:this.terminals_[Pe]||Pe,line:oe.yylineno,loc:ie,expected:ge})}if(ue[0]instanceof Array&&ue.length>1)throw new Error("Parse Error: multiple actions possible at state: "+Oe+", token: "+Pe);switch(ue[0]){case 1:P.push(Pe),O.push(oe.yytext),$.push(oe.yylloc),P.push(ue[1]),Pe=null,Ge?(Pe=Ge,Ge=null):(W=oe.yyleng,G=oe.yytext,z=oe.yylineno,ie=oe.yylloc,H>0&&H--);break;case 2:if(J=this.productions_[ue[1]][1],ce.$=O[O.length-J],ce._$={first_line:$[$.length-(J||1)].first_line,last_line:$[$.length-1].last_line,first_column:$[$.length-(J||1)].first_column,last_column:$[$.length-1].last_column},ae&&(ce._$.range=[$[$.length-(J||1)].range[0],$[$.length-1].range[1]]),ke=this.performAction.apply(ce,[G,W,z,te.yy,ue[1],O,$].concat(U)),typeof ke<"u")return ke;J&&(P=P.slice(0,-1*J*2),O=O.slice(0,-1*J),$=$.slice(0,-1*J)),P.push(this.productions_[ue[1]][0]),O.push(ce.$),$.push(ce._$),se=V[P[P.length-2]][P[P.length-1]],P.push(se);break;case 3:return!0}}return!0},"parse")},I=(function(){var A={EOF:1,parseError:o(function(D,P){if(this.yy.parser)this.yy.parser.parseError(D,P);else throw new Error(D)},"parseError"),setInput:o(function(M,D){return this.yy=D||this.yy||{},this._input=M,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},"setInput"),input:o(function(){var M=this._input[0];this.yytext+=M,this.yyleng++,this.offset++,this.match+=M,this.matched+=M;var D=M.match(/(?:\r\n?|\n).*/g);return D?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),M},"input"),unput:o(function(M){var D=M.length,P=M.split(/(?:\r\n?|\n)/g);this._input=M+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-D),this.offset-=D;var B=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),P.length-1&&(this.yylineno-=P.length-1);var O=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:P?(P.length===B.length?this.yylloc.first_column:0)+B[B.length-P.length].length-P[0].length:this.yylloc.first_column-D},this.options.ranges&&(this.yylloc.range=[O[0],O[0]+this.yyleng-D]),this.yyleng=this.yytext.length,this},"unput"),more:o(function(){return this._more=!0,this},"more"),reject:o(function(){if(this.options.backtrack_lexer)this._backtrack=!0;else return this.parseError("Lexical error on line "+(this.yylineno+1)+`. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).
+`+this.showPosition(),{text:"",token:null,line:this.yylineno});return this},"reject"),less:o(function(M){this.unput(this.match.slice(M))},"less"),pastInput:o(function(){var M=this.matched.substr(0,this.matched.length-this.match.length);return(M.length>20?"...":"")+M.substr(-20).replace(/\n/g,"")},"pastInput"),upcomingInput:o(function(){var M=this.match;return M.length<20&&(M+=this._input.substr(0,20-M.length)),(M.substr(0,20)+(M.length>20?"...":"")).replace(/\n/g,"")},"upcomingInput"),showPosition:o(function(){var M=this.pastInput(),D=new Array(M.length+1).join("-");return M+this.upcomingInput()+`
+`+D+"^"},"showPosition"),test_match:o(function(M,D){var P,B,O;if(this.options.backtrack_lexer&&(O={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(O.yylloc.range=this.yylloc.range.slice(0))),B=M[0].match(/(?:\r\n?|\n).*/g),B&&(this.yylineno+=B.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:B?B[B.length-1].length-B[B.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+M[0].length},this.yytext+=M[0],this.match+=M[0],this.matches=M,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(M[0].length),this.matched+=M[0],P=this.performAction.call(this,this.yy,this,D,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),P)return P;if(this._backtrack){for(var $ in O)this[$]=O[$];return!1}return!1},"test_match"),next:o(function(){if(this.done)return this.EOF;this._input||(this.done=!0);var M,D,P,B;this._more||(this.yytext="",this.match="");for(var O=this._currentRules(),$=0;$<O.length;$++)if(P=this._input.match(this.rules[O[$]]),P&&(!D||P[0].length>D[0].length)){if(D=P,B=$,this.options.backtrack_lexer){if(M=this.test_match(P,O[$]),M!==!1)return M;if(this._backtrack){D=!1;continue}else return!1}else if(!this.options.flex)break}return D?(M=this.test_match(D,O[B]),M!==!1?M:!1):this._input===""?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+`. Unrecognized text.
+`+this.showPosition(),{text:"",token:null,line:this.yylineno})},"next"),lex:o(function(){var D=this.next();return D||this.lex()},"lex"),begin:o(function(D){this.conditionStack.push(D)},"begin"),popState:o(function(){var D=this.conditionStack.length-1;return D>0?this.conditionStack.pop():this.conditionStack[0]},"popState"),_currentRules:o(function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},"_currentRules"),topState:o(function(D){return D=this.conditionStack.length-1-Math.abs(D||0),D>=0?this.conditionStack[D]:"INITIAL"},"topState"),pushState:o(function(D){this.begin(D)},"pushState"),stateStackSize:o(function(){return this.conditionStack.length},"stateStackSize"),options:{"case-insensitive":!0},performAction:o(function(D,P,B,O){var $=O;switch(B){case 0:return this.begin("open_directive"),"open_directive";break;case 1:return this.begin("acc_title"),31;break;case 2:return this.popState(),"acc_title_value";break;case 3:return this.begin("acc_descr"),33;break;case 4:return this.popState(),"acc_descr_value";break;case 5:this.begin("acc_descr_multiline");break;case 6:this.popState();break;case 7:return"acc_descr_multiline_value";case 8:break;case 9:break;case 10:break;case 11:return 10;case 12:break;case 13:break;case 14:this.begin("href");break;case 15:this.popState();break;case 16:return 43;case 17:this.begin("callbackname");break;case 18:this.popState();break;case 19:this.popState(),this.begin("callbackargs");break;case 20:return 41;case 21:this.popState();break;case 22:return 42;case 23:this.begin("click");break;case 24:this.popState();break;case 25:return 40;case 26:return 4;case 27:return 22;case 28:return 23;case 29:return 24;case 30:return 25;case 31:return 26;case 32:return 28;case 33:return 27;case 34:return 29;case 35:return 12;case 36:return 13;case 37:return 14;case 38:return 15;case 39:return 16;case 40:return 17;case 41:return 18;case 42:return 20;case 43:return 21;case 44:return"date";case 45:return 30;case 46:return"accDescription";case 47:return 36;case 48:return 38;case 49:return 39;case 50:return":";case 51:return 6;case 52:return"INVALID"}},"anonymous"),rules:[/^(?:%%\{)/i,/^(?:accTitle\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*\{\s*)/i,/^(?:[\}])/i,/^(?:[^\}]*)/i,/^(?:%%(?!\{)*[^\n]*)/i,/^(?:[^\}]%%*[^\n]*)/i,/^(?:%%*[^\n]*[\n]*)/i,/^(?:[\n]+)/i,/^(?:\s+)/i,/^(?:%[^\n]*)/i,/^(?:href[\s]+["])/i,/^(?:["])/i,/^(?:[^"]*)/i,/^(?:call[\s]+)/i,/^(?:\([\s]*\))/i,/^(?:\()/i,/^(?:[^(]*)/i,/^(?:\))/i,/^(?:[^)]*)/i,/^(?:click[\s]+)/i,/^(?:[\s\n])/i,/^(?:[^\s\n]*)/i,/^(?:gantt\b)/i,/^(?:dateFormat\s[^#\n;]+)/i,/^(?:inclusiveEndDates\b)/i,/^(?:topAxis\b)/i,/^(?:axisFormat\s[^#\n;]+)/i,/^(?:tickInterval\s[^#\n;]+)/i,/^(?:includes\s[^#\n;]+)/i,/^(?:excludes\s[^#\n;]+)/i,/^(?:todayMarker\s[^\n;]+)/i,/^(?:weekday\s+monday\b)/i,/^(?:weekday\s+tuesday\b)/i,/^(?:weekday\s+wednesday\b)/i,/^(?:weekday\s+thursday\b)/i,/^(?:weekday\s+friday\b)/i,/^(?:weekday\s+saturday\b)/i,/^(?:weekday\s+sunday\b)/i,/^(?:weekend\s+friday\b)/i,/^(?:weekend\s+saturday\b)/i,/^(?:\d\d\d\d-\d\d-\d\d\b)/i,/^(?:title\s[^\n]+)/i,/^(?:accDescription\s[^#\n;]+)/i,/^(?:section\s[^\n]+)/i,/^(?:[^:\n]+)/i,/^(?::[^#\n;]+)/i,/^(?::)/i,/^(?:$)/i,/^(?:.)/i],conditions:{acc_descr_multiline:{rules:[6,7],inclusive:!1},acc_descr:{rules:[4],inclusive:!1},acc_title:{rules:[2],inclusive:!1},callbackargs:{rules:[21,22],inclusive:!1},callbackname:{rules:[18,19,20],inclusive:!1},href:{rules:[15,16],inclusive:!1},click:{rules:[24,25],inclusive:!1},INITIAL:{rules:[0,1,3,5,8,9,10,11,12,13,14,17,23,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52],inclusive:!0}}};return A})();N.lexer=I;function _(){this.yy={}}return o(_,"Parser"),_.prototype=N,N.Parser=_,new _})();xU.parser=xU;JDe=xU});var t7e=Io((bU,TU)=>{"use strict";(function(e,t){typeof bU=="object"&&typeof TU<"u"?TU.exports=t():typeof define=="function"&&define.amd?define(t):(e=typeof globalThis<"u"?globalThis:e||self).dayjs_plugin_isoWeek=t()})(bU,(function(){"use strict";var e="day";return function(t,r,n){var i=o(function(l){return l.add(4-l.isoWeekday(),e)},"a"),a=r.prototype;a.isoWeekYear=function(){return i(this).year()},a.isoWeek=function(l){if(!this.$utils().u(l))return this.add(7*(l-this.isoWeek()),e);var u,h,d,f,p=i(this),m=(u=this.isoWeekYear(),h=this.$u,d=(h?n.utc:n)().year(u).startOf("year"),f=4-d.isoWeekday(),d.isoWeekday()>4&&(f+=7),d.add(f,e));return p.diff(m,"week")+1},a.isoWeekday=function(l){return this.$utils().u(l)?this.day()||7:this.day(this.day()%7?l:l-7)};var s=a.startOf;a.startOf=function(l,u){var h=this.$utils(),d=!!h.u(u)||u;return h.p(l)==="isoweek"?d?this.date(this.date()-(this.isoWeekday()-1)).startOf("day"):this.date(this.date()-1-(this.isoWeekday()-1)+7).endOf("day"):s.bind(this)(l,u)}}}))});var r7e=Io((CU,wU)=>{"use strict";(function(e,t){typeof CU=="object"&&typeof wU<"u"?wU.exports=t():typeof define=="function"&&define.amd?define(t):(e=typeof globalThis<"u"?globalThis:e||self).dayjs_plugin_customParseFormat=t()})(CU,(function(){"use strict";var e={LTS:"h:mm:ss A",LT:"h:mm A",L:"MM/DD/YYYY",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY h:mm A",LLLL:"dddd, MMMM D, YYYY h:mm A"},t=/(\[[^[]*\])|([-_:/.,()\s]+)|(A|a|Q|YYYY|YY?|ww?|MM?M?M?|Do|DD?|hh?|HH?|mm?|ss?|S{1,3}|z|ZZ?)/g,r=/\d/,n=/\d\d/,i=/\d\d?/,a=/\d*[^-_:/,()\s\d]+/,s={},l=o(function(g){return(g=+g)+(g>68?1900:2e3)},"a"),u=o(function(g){return function(y){this[g]=+y}},"f"),h=[/[+-]\d\d:?(\d\d)?|Z/,function(g){(this.zone||(this.zone={})).offset=(function(y){if(!y||y==="Z")return 0;var v=y.match(/([+-]|\d\d)/g),x=60*v[1]+(+v[2]||0);return x===0?0:v[0]==="+"?-x:x})(g)}],d=o(function(g){var y=s[g];return y&&(y.indexOf?y:y.s.concat(y.f))},"u"),f=o(function(g,y){var v,x=s.meridiem;if(x){for(var b=1;b<=24;b+=1)if(g.indexOf(x(b,0,y))>-1){v=b>12;break}}else v=g===(y?"pm":"PM");return v},"d"),p={A:[a,function(g){this.afternoon=f(g,!1)}],a:[a,function(g){this.afternoon=f(g,!0)}],Q:[r,function(g){this.month=3*(g-1)+1}],S:[r,function(g){this.milliseconds=100*+g}],SS:[n,function(g){this.milliseconds=10*+g}],SSS:[/\d{3}/,function(g){this.milliseconds=+g}],s:[i,u("seconds")],ss:[i,u("seconds")],m:[i,u("minutes")],mm:[i,u("minutes")],H:[i,u("hours")],h:[i,u("hours")],HH:[i,u("hours")],hh:[i,u("hours")],D:[i,u("day")],DD:[n,u("day")],Do:[a,function(g){var y=s.ordinal,v=g.match(/\d+/);if(this.day=v[0],y)for(var x=1;x<=31;x+=1)y(x).replace(/\[|\]/g,"")===g&&(this.day=x)}],w:[i,u("week")],ww:[n,u("week")],M:[i,u("month")],MM:[n,u("month")],MMM:[a,function(g){var y=d("months"),v=(d("monthsShort")||y.map((function(x){return x.slice(0,3)}))).indexOf(g)+1;if(v<1)throw new Error;this.month=v%12||v}],MMMM:[a,function(g){var y=d("months").indexOf(g)+1;if(y<1)throw new Error;this.month=y%12||y}],Y:[/[+-]?\d+/,u("year")],YY:[n,function(g){this.year=l(g)}],YYYY:[/\d{4}/,u("year")],Z:h,ZZ:h};function m(g){var y,v;y=g,v=s&&s.formats;for(var x=(g=y.replace(/(\[[^\]]+])|(LTS?|l{1,4}|L{1,4})/g,(function(R,L,N){var I=N&&N.toUpperCase();return L||v[N]||e[N]||v[I].replace(/(\[[^\]]+])|(MMMM|MM|DD|dddd)/g,(function(_,A,M){return A||M.slice(1)}))}))).match(t),b=x.length,T=0;T<b;T+=1){var k=x[T],C=p[k],w=C&&C[0],S=C&&C[1];x[T]=S?{regex:w,parser:S}:k.replace(/^\[|\]$/g,"")}return function(R){for(var L={},N=0,I=0;N<b;N+=1){var _=x[N];if(typeof _=="string")I+=_.length;else{var A=_.regex,M=_.parser,D=R.slice(I),P=A.exec(D)[0];M.call(L,P),R=R.replace(P,"")}}return(function(B){var O=B.afternoon;if(O!==void 0){var $=B.hours;O?$<12&&(B.hours+=12):$===12&&(B.hours=0),delete B.afternoon}})(L),L}}return o(m,"l"),function(g,y,v){v.p.customParseFormat=!0,g&&g.parseTwoDigitYear&&(l=g.parseTwoDigitYear);var x=y.prototype,b=x.parse;x.parse=function(T){var k=T.date,C=T.utc,w=T.args;this.$u=C;var S=w[1];if(typeof S=="string"){var R=w[2]===!0,L=w[3]===!0,N=R||L,I=w[2];L&&(I=w[2]),s=this.$locale(),!R&&I&&(s=v.Ls[I]),this.$d=(function(D,P,B,O){try{if(["x","X"].indexOf(P)>-1)return new Date((P==="X"?1e3:1)*D);var $=m(P)(D),V=$.year,G=$.month,z=$.day,W=$.hours,H=$.minutes,j=$.seconds,Q=$.milliseconds,U=$.zone,oe=$.week,te=new Date,le=z||(V||G?1:te.getDate()),ie=V||te.getFullYear(),ae=0;V&&!G||(ae=G>0?G-1:te.getMonth());var Re,be=W||0,Pe=H||0,Ge=j||0,Oe=Q||0;return U?new Date(Date.UTC(ie,ae,le,be,Pe,Ge,Oe+60*U.offset*1e3)):B?new Date(Date.UTC(ie,ae,le,be,Pe,Ge,Oe)):(Re=new Date(ie,ae,le,be,Pe,Ge,Oe),oe&&(Re=O(Re).week(oe).toDate()),Re)}catch{return new Date("")}})(k,S,C,v),this.init(),I&&I!==!0&&(this.$L=this.locale(I).$L),N&&k!=this.format(S)&&(this.$d=new Date("")),s={}}else if(S instanceof Array)for(var _=S.length,A=1;A<=_;A+=1){w[1]=S[A-1];var M=v.apply(this,w);if(M.isValid()){this.$d=M.$d,this.$L=M.$L,this.init();break}A===_&&(this.$d=new Date(""))}else b.call(this,T)}}}))});var n7e=Io((kU,SU)=>{"use strict";(function(e,t){typeof kU=="object"&&typeof SU<"u"?SU.exports=t():typeof define=="function"&&define.amd?define(t):(e=typeof globalThis<"u"?globalThis:e||self).dayjs_plugin_advancedFormat=t()})(kU,(function(){"use strict";return function(e,t){var r=t.prototype,n=r.format;r.format=function(i){var a=this,s=this.$locale();if(!this.isValid())return n.bind(this)(i);var l=this.$utils(),u=(i||"YYYY-MM-DDTHH:mm:ssZ").replace(/\[([^\]]+)]|Q|wo|ww|w|WW|W|zzz|z|gggg|GGGG|Do|X|x|k{1,2}|S/g,(function(h){switch(h){case"Q":return Math.ceil((a.$M+1)/3);case"Do":return s.ordinal(a.$D);case"gggg":return a.weekYear();case"GGGG":return a.isoWeekYear();case"wo":return s.ordinal(a.week(),"W");case"w":case"ww":return l.s(a.week(),h==="w"?1:2,"0");case"W":case"WW":return l.s(a.isoWeek(),h==="W"?1:2,"0");case"k":case"kk":return l.s(String(a.$H===0?24:a.$H),h==="k"?1:2,"0");case"X":return Math.floor(a.$d.getTime()/1e3);case"x":return a.$d.getTime();case"z":return"["+a.offsetName()+"]";case"zzz":return"["+a.offsetName("long")+"]";default:return h}}));return n.bind(this)(u)}}}))});function b7e(e,t,r){let n=!0;for(;n;)n=!1,r.forEach(function(i){let a="^\\s*"+i+"\\s*$",s=new RegExp(a);e[0].match(s)&&(t[i]=!0,e.shift(1),n=!0)})}var s7e,el,o7e,l7e,c7e,i7e,qu,_U,LU,DU,jv,Xv,IU,MU,sL,Kv,NU,u7e,PU,Uv,Nw,OU,BU,oL,EU,j3t,X3t,K3t,Z3t,Q3t,J3t,e5t,t5t,r5t,n5t,i5t,a5t,s5t,o5t,l5t,c5t,h7e,u5t,h5t,d5t,f5t,p5t,m5t,g5t,y5t,d7e,v5t,x5t,b5t,f7e,T5t,AU,p7e,m7e,iL,Yv,C5t,w5t,RU,aL,fa,g7e,k5t,C0,S5t,a7e,E5t,y7e,A5t,v7e,R5t,_5t,x7e,T7e=F(()=>{"use strict";s7e=Xs(Ly(),1),el=Xs(vk(),1),o7e=Xs(t7e(),1),l7e=Xs(r7e(),1),c7e=Xs(n7e(),1);vt();Xt();Qt();Nn();el.default.extend(o7e.default);el.default.extend(l7e.default);el.default.extend(c7e.default);i7e={friday:5,saturday:6},qu="",_U="",DU="",jv=[],Xv=[],IU=new Map,MU=[],sL=[],Kv="",NU="",u7e=["active","done","crit","milestone","vert"],PU=[],Uv="",Nw=!1,OU=!1,BU="sunday",oL="saturday",EU=0,j3t=o(function(){MU=[],sL=[],Kv="",PU=[],iL=0,RU=void 0,aL=void 0,fa=[],qu="",_U="",NU="",LU=void 0,DU="",jv=[],Xv=[],Nw=!1,OU=!1,EU=0,IU=new Map,Uv="",yr(),BU="sunday",oL="saturday"},"clear"),X3t=o(function(e){Uv=e},"setDiagramId"),K3t=o(function(e){_U=e},"setAxisFormat"),Z3t=o(function(){return _U},"getAxisFormat"),Q3t=o(function(e){LU=e},"setTickInterval"),J3t=o(function(){return LU},"getTickInterval"),e5t=o(function(e){DU=e},"setTodayMarker"),t5t=o(function(){return DU},"getTodayMarker"),r5t=o(function(e){qu=e},"setDateFormat"),n5t=o(function(){Nw=!0},"enableInclusiveEndDates"),i5t=o(function(){return Nw},"endDatesAreInclusive"),a5t=o(function(){OU=!0},"enableTopAxis"),s5t=o(function(){return OU},"topAxisEnabled"),o5t=o(function(e){NU=e},"setDisplayMode"),l5t=o(function(){return NU},"getDisplayMode"),c5t=o(function(){return qu},"getDateFormat"),h7e=o((e,t)=>{let r=t.toLowerCase().split(/[\s,]+/).filter(n=>n!=="");return[...new Set([...e,...r])]},"mergeTokens"),u5t=o(function(e){jv=h7e(jv,e)},"setIncludes"),h5t=o(function(){return jv},"getIncludes"),d5t=o(function(e){Xv=h7e(Xv,e)},"setExcludes"),f5t=o(function(){return Xv},"getExcludes"),p5t=o(function(){return IU},"getLinks"),m5t=o(function(e){Kv=e,MU.push(e)},"addSection"),g5t=o(function(){return MU},"getSections"),y5t=o(function(){let e=a7e(),t=10,r=0;for(;!e&&r<t;)e=a7e(),r++;return sL=fa,sL},"getTasks"),d7e=o(function(e,t,r,n){let i=e.format(t.trim()),a=e.format("YYYY-MM-DD");return n.includes(i)||n.includes(a)?!1:r.includes("weekends")&&(e.isoWeekday()===i7e[oL]||e.isoWeekday()===i7e[oL]+1)||r.includes(e.format("dddd").toLowerCase())?!0:r.includes(i)||r.includes(a)},"isInvalidDate"),v5t=o(function(e){BU=e},"setWeekday"),x5t=o(function(){return BU},"getWeekday"),b5t=o(function(e){oL=e},"setWeekend"),f7e=o(function(e,t,r,n){if(!r.length||e.manualEndTime)return;let i;e.startTime instanceof Date?i=(0,el.default)(e.startTime):i=(0,el.default)(e.startTime,t,!0),i=i.add(1,"d");let a;e.endTime instanceof Date?a=(0,el.default)(e.endTime):a=(0,el.default)(e.endTime,t,!0);let[s,l]=T5t(i,a,t,r,n);e.endTime=s.toDate(),e.renderEndTime=l},"checkTaskDates"),T5t=o(function(e,t,r,n,i){let a=!1,s=null,l=t.add(1e4,"d");for(;e<=t;){if(a||(s=t.toDate()),a=d7e(e,r,n,i),a&&(t=t.add(1,"d"),t>l))throw new Error("Failed to find a valid date that was not excluded by `excludes` after 10,000 iterations.");e=e.add(1,"d")}return[t,s]},"fixTaskDates"),AU=o(function(e,t,r){if(r=r.trim(),o(l=>{let u=l.trim();return u==="x"||u==="X"},"isTimestampFormat")(t)&&/^\d+$/.test(r))return new Date(Number(r));let a=/^after\s+(?<ids>[\d\w- ]+)/.exec(r);if(a!==null){let l=null;for(let h of a.groups.ids.split(" ")){let d=C0(h);d!==void 0&&(!l||d.endTime>l.endTime)&&(l=d)}if(l)return l.endTime;let u=new Date;return u.setHours(0,0,0,0),u}let s=(0,el.default)(r,t.trim(),!0);if(s.isValid())return s.toDate();{Z.debug("Invalid date:"+r),Z.debug("With date format:"+t.trim());let l=new Date(r);if(l===void 0||isNaN(l.getTime())||l.getFullYear()<-1e4||l.getFullYear()>1e4)throw new Error("Invalid date:"+r);return l}},"getStartDate"),p7e=o(function(e){let t=/^(\d+(?:\.\d+)?)([Mdhmswy]|ms)$/.exec(e.trim());return t!==null?[Number.parseFloat(t[1]),t[2]]:[NaN,"ms"]},"parseDuration"),m7e=o(function(e,t,r,n=!1){r=r.trim();let a=/^until\s+(?<ids>[\d\w- ]+)/.exec(r);if(a!==null){let d=null;for(let p of a.groups.ids.split(" ")){let m=C0(p);m!==void 0&&(!d||m.startTime<d.startTime)&&(d=m)}if(d)return d.startTime;let f=new Date;return f.setHours(0,0,0,0),f}let s=(0,el.default)(r,t.trim(),!0);if(s.isValid())return n&&(s=s.add(1,"d")),s.toDate();let l=(0,el.default)(e),[u,h]=p7e(r);if(!Number.isNaN(u)){let d=l.add(u,h);d.isValid()&&(l=d)}return l.toDate()},"getEndDate"),iL=0,Yv=o(function(e){return e===void 0?(iL=iL+1,"task"+iL):e},"parseId"),C5t=o(function(e,t){let r;t.substr(0,1)===":"?r=t.substr(1,t.length):r=t;let n=r.split(","),i={};b7e(n,i,u7e);for(let s=0;s<n.length;s++)n[s]=n[s].trim();let a="";switch(n.length){case 1:i.id=Yv(),i.startTime=e.endTime,a=n[0];break;case 2:i.id=Yv(),i.startTime=AU(void 0,qu,n[0]),a=n[1];break;case 3:i.id=Yv(n[0]),i.startTime=AU(void 0,qu,n[1]),a=n[2];break;default:}return a&&(i.endTime=m7e(i.startTime,qu,a,Nw),i.manualEndTime=(0,el.default)(a,"YYYY-MM-DD",!0).isValid(),f7e(i,qu,Xv,jv)),i},"compileData"),w5t=o(function(e,t){let r;t.substr(0,1)===":"?r=t.substr(1,t.length):r=t;let n=r.split(","),i={};b7e(n,i,u7e);for(let a=0;a<n.length;a++)n[a]=n[a].trim();switch(n.length){case 1:i.id=Yv(),i.startTime={type:"prevTaskEnd",id:e},i.endTime={data:n[0]};break;case 2:i.id=Yv(),i.startTime={type:"getStartDate",startData:n[0]},i.endTime={data:n[1]};break;case 3:i.id=Yv(n[0]),i.startTime={type:"getStartDate",startData:n[1]},i.endTime={data:n[2]};break;default:}return i},"parseData"),fa=[],g7e={},k5t=o(function(e,t){let r={section:Kv,type:Kv,processed:!1,manualEndTime:!1,renderEndTime:null,raw:{data:t},task:e,classes:[]},n=w5t(aL,t);r.raw.startTime=n.startTime,r.raw.endTime=n.endTime,r.id=n.id,r.prevTaskId=aL,r.active=n.active,r.done=n.done,r.crit=n.crit,r.milestone=n.milestone,r.vert=n.vert,r.vert?r.order=-1:(r.order=EU,EU++);let i=fa.push(r);aL=r.id,g7e[r.id]=i-1},"addTask"),C0=o(function(e){let t=g7e[e];return fa[t]},"findTaskById"),S5t=o(function(e,t){let r={section:Kv,type:Kv,description:e,task:e,classes:[]},n=C5t(RU,t);r.startTime=n.startTime,r.endTime=n.endTime,r.id=n.id,r.active=n.active,r.done=n.done,r.crit=n.crit,r.milestone=n.milestone,r.vert=n.vert,RU=r,sL.push(r)},"addTaskOrg"),a7e=o(function(){let e=o(function(r){let n=fa[r],i="";switch(fa[r].raw.startTime.type){case"prevTaskEnd":{let a=C0(n.prevTaskId);n.startTime=a.endTime;break}case"getStartDate":i=AU(void 0,qu,fa[r].raw.startTime.startData),i&&(fa[r].startTime=i);break}return fa[r].startTime&&(fa[r].endTime=m7e(fa[r].startTime,qu,fa[r].raw.endTime.data,Nw),fa[r].endTime&&(fa[r].processed=!0,fa[r].manualEndTime=(0,el.default)(fa[r].raw.endTime.data,"YYYY-MM-DD",!0).isValid(),f7e(fa[r],qu,Xv,jv))),fa[r].processed},"compileTask"),t=!0;for(let[r,n]of fa.entries())e(r),t=t&&n.processed;return t},"compileTasks"),E5t=o(function(e,t){let r=t;Ae().securityLevel!=="loose"&&(r=(0,s7e.sanitizeUrl)(t)),e.split(",").forEach(function(n){C0(n)!==void 0&&(v7e(n,()=>{window.open(r,"_self")}),IU.set(n,r))}),y7e(e,"clickable")},"setLink"),y7e=o(function(e,t){e.split(",").forEach(function(r){let n=C0(r);n!==void 0&&n.classes.push(t)})},"setClass"),A5t=o(function(e,t,r){if(Ae().securityLevel!=="loose"||t===void 0)return;let n=[];if(typeof r=="string"){n=r.split(/,(?=(?:(?:[^"]*"){2})*[^"]*$)/);for(let a=0;a<n.length;a++){let s=n[a].trim();s.startsWith('"')&&s.endsWith('"')&&(s=s.substr(1,s.length-2)),n[a]=s}}n.length===0&&n.push(e),C0(e)!==void 0&&v7e(e,()=>{Zt.runFunc(t,...n)})},"setClickFun"),v7e=o(function(e,t){PU.push(function(){let r=Uv?`${Uv}-${e}`:e,n=document.querySelector(`[id="${r}"]`);n!==null&&n.addEventListener("click",function(){t()})},function(){let r=Uv?`${Uv}-${e}`:e,n=document.querySelector(`[id="${r}-text"]`);n!==null&&n.addEventListener("click",function(){t()})})},"pushFun"),R5t=o(function(e,t,r){e.split(",").forEach(function(n){A5t(n,t,r)}),y7e(e,"clickable")},"setClickEvent"),_5t=o(function(e){PU.forEach(function(t){t(e)})},"bindFunctions"),x7e={getConfig:o(()=>Ae().gantt,"getConfig"),clear:j3t,setDateFormat:r5t,getDateFormat:c5t,enableInclusiveEndDates:n5t,endDatesAreInclusive:i5t,enableTopAxis:a5t,topAxisEnabled:s5t,setAxisFormat:K3t,getAxisFormat:Z3t,setTickInterval:Q3t,getTickInterval:J3t,setTodayMarker:e5t,getTodayMarker:t5t,setAccTitle:kr,getAccTitle:Ar,setDiagramTitle:Or,getDiagramTitle:Lr,setDiagramId:X3t,setDisplayMode:o5t,getDisplayMode:l5t,setAccDescription:Rr,getAccDescription:_r,addSection:m5t,getSections:g5t,getTasks:y5t,addTask:k5t,findTaskById:C0,addTaskOrg:S5t,setIncludes:u5t,getIncludes:h5t,setExcludes:d5t,getExcludes:f5t,setClickEvent:R5t,setLink:E5t,getLinks:p5t,bindFunctions:_5t,parseDuration:p7e,isInvalidDate:d7e,setWeekday:v5t,getWeekday:x5t,setWeekend:b5t};o(b7e,"getTaskTags")});var C7e=Io(($U,FU)=>{"use strict";(function(e,t){typeof $U=="object"&&typeof FU<"u"?FU.exports=t():typeof define=="function"&&define.amd?define(t):(e=typeof globalThis<"u"?globalThis:e||self).dayjs_plugin_duration=t()})($U,(function(){"use strict";var e,t,r=1e3,n=6e4,i=36e5,a=864e5,s=/\[([^\]]+)]|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g,l=31536e6,u=2628e6,h=/^(-|\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/,d={years:l,months:u,days:a,hours:i,minutes:n,seconds:r,milliseconds:1,weeks:6048e5},f=o(function(k){return k instanceof b},"c"),p=o(function(k,C,w){return new b(k,w,C.$l)},"f"),m=o(function(k){return t.p(k)+"s"},"m"),g=o(function(k){return k<0},"l"),y=o(function(k){return g(k)?Math.ceil(k):Math.floor(k)},"$"),v=o(function(k){return Math.abs(k)},"y"),x=o(function(k,C){return k?g(k)?{negative:!0,format:""+v(k)+C}:{negative:!1,format:""+k+C}:{negative:!1,format:""}},"v"),b=(function(){function k(w,S,R){var L=this;if(this.$d={},this.$l=R,w===void 0&&(this.$ms=0,this.parseFromMilliseconds()),S)return p(w*d[m(S)],this);if(typeof w=="number")return this.$ms=w,this.parseFromMilliseconds(),this;if(typeof w=="object")return Object.keys(w).forEach((function(_){L.$d[m(_)]=w[_]})),this.calMilliseconds(),this;if(typeof w=="string"){var N=w.match(h);if(N){var I=N.slice(2).map((function(_){return _!=null?Number(_):0}));return this.$d.years=I[0],this.$d.months=I[1],this.$d.weeks=I[2],this.$d.days=I[3],this.$d.hours=I[4],this.$d.minutes=I[5],this.$d.seconds=I[6],this.calMilliseconds(),this}}return this}o(k,"l");var C=k.prototype;return C.calMilliseconds=function(){var w=this;this.$ms=Object.keys(this.$d).reduce((function(S,R){return S+(w.$d[R]||0)*d[R]}),0)},C.parseFromMilliseconds=function(){var w=this.$ms;this.$d.years=y(w/l),w%=l,this.$d.months=y(w/u),w%=u,this.$d.days=y(w/a),w%=a,this.$d.hours=y(w/i),w%=i,this.$d.minutes=y(w/n),w%=n,this.$d.seconds=y(w/r),w%=r,this.$d.milliseconds=w},C.toISOString=function(){var w=x(this.$d.years,"Y"),S=x(this.$d.months,"M"),R=+this.$d.days||0;this.$d.weeks&&(R+=7*this.$d.weeks);var L=x(R,"D"),N=x(this.$d.hours,"H"),I=x(this.$d.minutes,"M"),_=this.$d.seconds||0;this.$d.milliseconds&&(_+=this.$d.milliseconds/1e3,_=Math.round(1e3*_)/1e3);var A=x(_,"S"),M=w.negative||S.negative||L.negative||N.negative||I.negative||A.negative,D=N.format||I.format||A.format?"T":"",P=(M?"-":"")+"P"+w.format+S.format+L.format+D+N.format+I.format+A.format;return P==="P"||P==="-P"?"P0D":P},C.toJSON=function(){return this.toISOString()},C.format=function(w){var S=w||"YYYY-MM-DDTHH:mm:ss",R={Y:this.$d.years,YY:t.s(this.$d.years,2,"0"),YYYY:t.s(this.$d.years,4,"0"),M:this.$d.months,MM:t.s(this.$d.months,2,"0"),D:this.$d.days,DD:t.s(this.$d.days,2,"0"),H:this.$d.hours,HH:t.s(this.$d.hours,2,"0"),m:this.$d.minutes,mm:t.s(this.$d.minutes,2,"0"),s:this.$d.seconds,ss:t.s(this.$d.seconds,2,"0"),SSS:t.s(this.$d.milliseconds,3,"0")};return S.replace(s,(function(L,N){return N||String(R[L])}))},C.as=function(w){return this.$ms/d[m(w)]},C.get=function(w){var S=this.$ms,R=m(w);return R==="milliseconds"?S%=1e3:S=R==="weeks"?y(S/d[R]):this.$d[R],S||0},C.add=function(w,S,R){var L;return L=S?w*d[m(S)]:f(w)?w.$ms:p(w,this).$ms,p(this.$ms+L*(R?-1:1),this)},C.subtract=function(w,S){return this.add(w,S,!0)},C.locale=function(w){var S=this.clone();return S.$l=w,S},C.clone=function(){return p(this.$ms,this)},C.humanize=function(w){return e().add(this.$ms,"ms").locale(this.$l).fromNow(!w)},C.valueOf=function(){return this.asMilliseconds()},C.milliseconds=function(){return this.get("milliseconds")},C.asMilliseconds=function(){return this.as("milliseconds")},C.seconds=function(){return this.get("seconds")},C.asSeconds=function(){return this.as("seconds")},C.minutes=function(){return this.get("minutes")},C.asMinutes=function(){return this.as("minutes")},C.hours=function(){return this.get("hours")},C.asHours=function(){return this.as("hours")},C.days=function(){return this.get("days")},C.asDays=function(){return this.as("days")},C.weeks=function(){return this.get("weeks")},C.asWeeks=function(){return this.as("weeks")},C.months=function(){return this.get("months")},C.asMonths=function(){return this.as("months")},C.years=function(){return this.get("years")},C.asYears=function(){return this.as("years")},k})(),T=o(function(k,C,w){return k.add(C.years()*w,"y").add(C.months()*w,"M").add(C.days()*w,"d").add(C.hours()*w,"h").add(C.minutes()*w,"m").add(C.seconds()*w,"s").add(C.milliseconds()*w,"ms")},"p");return function(k,C,w){e=w,t=w().$utils(),w.duration=function(L,N){var I=w.locale();return p(L,{$l:I},N)},w.isDuration=f;var S=C.prototype.add,R=C.prototype.subtract;C.prototype.add=function(L,N){return f(L)?T(this,L,1):S.bind(this)(L,N)},C.prototype.subtract=function(L,N){return f(L)?T(this,L,-1):R.bind(this)(L,N)}}}))});var Zv,k7e,L5t,w7e,D5t,ld,zU,I5t,S7e,E7e=F(()=>{"use strict";Zv=Xs(vk(),1),k7e=Xs(C7e(),1);vt();$r();Vr();Xt();$n();Zv.default.extend(k7e.default);L5t=o(function(){Z.debug("Something is calling, setConf, remove the call")},"setConf"),w7e={monday:Gd,tuesday:mE,wednesday:gE,thursday:Qc,friday:yE,saturday:vE,sunday:Zl},D5t=o((e,t)=>{let r=[...e].map(()=>-1/0),n=[...e].sort((a,s)=>a.startTime-s.startTime||a.order-s.order),i=0;for(let a of n)for(let s=0;s<r.length;s++)if(a.startTime>=r[s]){r[s]=a.endTime,a.order=s+t,s>i&&(i=s);break}return i},"getMaxIntersections"),zU=1e4,I5t=o(function(e,t,r,n){let i=Ae().gantt;n.db.setDiagramId(t);let a=Ae().securityLevel,s;a==="sandbox"&&(s=et("#i"+t));let l=a==="sandbox"?et(s.nodes()[0].contentDocument.body):et("body"),u=a==="sandbox"?s.nodes()[0].contentDocument:document,h=u.getElementById(t);ld=h.parentElement.offsetWidth,ld===void 0&&(ld=1200),i.useWidth!==void 0&&(ld=i.useWidth);let d=n.db.getTasks(),f=d.filter(N=>!N.vert),p=[];for(let N of f)p.push(N.type);p=L(p);let m={},g=2*i.topPadding;if(n.db.getDisplayMode()==="compact"||i.displayMode==="compact"){let N={};for(let _ of f)N[_.section]===void 0?N[_.section]=[_]:N[_.section].push(_);let I=0;for(let _ of Object.keys(N)){let A=D5t(N[_],I)+1;I+=A,g+=A*(i.barHeight+i.barGap),m[_]=A}}else{g+=f.length*(i.barHeight+i.barGap);for(let N of p)m[N]=f.filter(I=>I.type===N).length}h.setAttribute("viewBox","0 0 "+ld+" "+g);let y=l.select(`[id="${t}"]`),v=TE().domain([ES(d,function(N){return N.startTime}),SS(d,function(N){return N.endTime})]).rangeRound([0,ld-i.leftPadding-i.rightPadding]);function x(N,I){let _=N.startTime,A=I.startTime,M=0;return _>A?M=1:_<A&&(M=-1),M}o(x,"taskCompare"),d.sort(x),b(d,ld,g),Wr(y,g,ld,i.useMaxWidth),y.append("text").text(n.db.getDiagramTitle()).attr("x",ld/2).attr("y",i.titleTopMargin).attr("class","titleText");function b(N,I,_){let A=i.barHeight,M=A+i.barGap,D=i.topPadding,P=i.leftPadding,B=Kl().domain([0,p.length]).range(["#00B9FA","#F95002"]).interpolate(JI);k(M,D,P,I,_,N,n.db.getExcludes(),n.db.getIncludes()),w(P,D,I,_),T(N,M,D,P,A,B,I,_),S(M,D,P,A,B),R(P,D,I,_)}o(b,"makeGantt");function T(N,I,_,A,M,D,P){N.sort((W,H)=>W.vert===H.vert?0:W.vert?1:-1);let B=N.filter(W=>!W.vert),$=[...new Set(B.map(W=>W.order))].map(W=>B.find(H=>H.order===W));y.append("g").selectAll("rect").data($).enter().append("rect").attr("x",0).attr("y",function(W,H){return H=W.order,H*I+_-2}).attr("width",function(){return P-i.rightPadding/2}).attr("height",I).attr("class",function(W){for(let[H,j]of p.entries())if(W.type===j)return"section section"+H%i.numberSectionStyles;return"section section0"}).enter();let V=y.append("g").selectAll("rect").data(N).enter(),G=n.db.getLinks();if(V.append("rect").attr("id",function(W){return t+"-"+W.id}).attr("rx",3).attr("ry",3).attr("x",function(W){return W.milestone?v(W.startTime)+A+.5*(v(W.endTime)-v(W.startTime))-.5*M:v(W.startTime)+A}).attr("y",function(W,H){return H=W.order,W.vert?i.gridLineStartPadding:H*I+_}).attr("width",function(W){return W.milestone?M:W.vert?.08*M:v(W.renderEndTime||W.endTime)-v(W.startTime)}).attr("height",function(W){return W.vert?B.length*(i.barHeight+i.barGap)+i.barHeight*2:M}).attr("transform-origin",function(W,H){return H=W.order,(v(W.startTime)+A+.5*(v(W.endTime)-v(W.startTime))).toString()+"px "+(H*I+_+.5*M).toString()+"px"}).attr("class",function(W){let H="task",j="";W.classes.length>0&&(j=W.classes.join(" "));let Q=0;for(let[oe,te]of p.entries())W.type===te&&(Q=oe%i.numberSectionStyles);let U="";return W.active?W.crit?U+=" activeCrit":U=" active":W.done?W.crit?U=" doneCrit":U=" done":W.crit&&(U+=" crit"),U.length===0&&(U=" task"),W.milestone&&(U=" milestone "+U),W.vert&&(U=" vert "+U),U+=Q,U+=" "+j,H+U}),V.append("text").attr("id",function(W){return t+"-"+W.id+"-text"}).text(function(W){return W.task}).attr("font-size",i.fontSize).attr("x",function(W){let H=v(W.startTime),j=v(W.renderEndTime||W.endTime);if(W.milestone&&(H+=.5*(v(W.endTime)-v(W.startTime))-.5*M,j=H+M),W.vert)return v(W.startTime)+A;let Q=this.getBBox().width;return Q>j-H?j+Q+1.5*i.leftPadding>P?H+A-5:j+A+5:(j-H)/2+H+A}).attr("y",function(W,H){return W.vert?i.gridLineStartPadding+B.length*(i.barHeight+i.barGap)+60:(H=W.order,H*I+i.barHeight/2+(i.fontSize/2-2)+_)}).attr("text-height",M).attr("class",function(W){let H=v(W.startTime),j=v(W.endTime);W.milestone&&(j=H+M);let Q=this.getBBox().width,U="";W.classes.length>0&&(U=W.classes.join(" "));let oe=0;for(let[le,ie]of p.entries())W.type===ie&&(oe=le%i.numberSectionStyles);let te="";return W.active&&(W.crit?te="activeCritText"+oe:te="activeText"+oe),W.done?W.crit?te=te+" doneCritText"+oe:te=te+" doneText"+oe:W.crit&&(te=te+" critText"+oe),W.milestone&&(te+=" milestoneText"),W.vert&&(te+=" vertText"),Q>j-H?j+Q+1.5*i.leftPadding>P?U+" taskTextOutsideLeft taskTextOutside"+oe+" "+te:U+" taskTextOutsideRight taskTextOutside"+oe+" "+te+" width-"+Q:U+" taskText taskText"+oe+" "+te+" width-"+Q}),Ae().securityLevel==="sandbox"){let W;W=et("#i"+t);let H=W.nodes()[0].contentDocument;V.filter(function(j){return G.has(j.id)}).each(function(j){var Q=H.querySelector("#"+CSS.escape(t+"-"+j.id)),U=H.querySelector("#"+CSS.escape(t+"-"+j.id+"-text"));let oe=Q.parentNode;var te=H.createElement("a");te.setAttribute("xlink:href",G.get(j.id)),te.setAttribute("target","_top"),oe.appendChild(te),te.appendChild(Q),te.appendChild(U)})}}o(T,"drawRects");function k(N,I,_,A,M,D,P,B){if(P.length===0&&B.length===0)return;let O,$;for(let{startTime:j,endTime:Q}of D)(O===void 0||j<O)&&(O=j),($===void 0||Q>$)&&($=Q);if(!O||!$)return;if((0,Zv.default)($).diff((0,Zv.default)(O),"year")>5){Z.warn("The difference between the min and max time is more than 5 years. This will cause performance issues. Skipping drawing exclude days.");return}let V=n.db.getDateFormat(),G=[],z=null,W=(0,Zv.default)(O);for(;W.valueOf()<=$;)n.db.isInvalidDate(W,V,P,B)?z?z.end=W:z={start:W,end:W}:z&&(G.push(z),z=null),W=W.add(1,"d");y.append("g").selectAll("rect").data(G).enter().append("rect").attr("id",j=>t+"-exclude-"+j.start.format("YYYY-MM-DD")).attr("x",j=>v(j.start.startOf("day"))+_).attr("y",i.gridLineStartPadding).attr("width",j=>v(j.end.endOf("day"))-v(j.start.startOf("day"))).attr("height",M-I-i.gridLineStartPadding).attr("transform-origin",function(j,Q){return(v(j.start)+_+.5*(v(j.end)-v(j.start))).toString()+"px "+(Q*N+.5*M).toString()+"px"}).attr("class","exclude-range")}o(k,"drawExcludeDays");function C(N,I,_,A){if(_<=0||N>I)return 1/0;let M=I-N,D=Zv.default.duration({[A??"day"]:_}).asMilliseconds();return D<=0?1/0:Math.ceil(M/D)}o(C,"getEstimatedTickCount");function w(N,I,_,A){let M=n.db.getDateFormat(),D=n.db.getAxisFormat(),P;D?P=D:M==="D"?P="%d":P=i.axisFormat??"%Y-%m-%d";let B=N8(v).tickSize(-A+I+i.gridLineStartPadding).tickFormat(um(P)),$=/^([1-9]\d*)(millisecond|second|minute|hour|day|week|month)$/.exec(n.db.getTickInterval()||i.tickInterval);if($!==null){let V=parseInt($[1],10);if(isNaN(V)||V<=0)Z.warn(`Invalid tick interval value: "${$[1]}". Skipping custom tick interval.`);else{let G=$[2],z=n.db.getWeekday()||i.weekday,W=v.domain(),H=W[0],j=W[1],Q=C(H,j,V,G);if(Q>zU)Z.warn(`The tick interval "${V}${G}" would generate ${Q} ticks, which exceeds the maximum allowed (${zU}). This may indicate an invalid date or time range. Skipping custom tick interval.`);else switch(G){case"millisecond":B.ticks(Kc.every(V));break;case"second":B.ticks(Bo.every(V));break;case"minute":B.ticks(ph.every(V));break;case"hour":B.ticks(mh.every(V));break;case"day":B.ticks(hl.every(V));break;case"week":B.ticks(w7e[z].every(V));break;case"month":B.ticks(gh.every(V));break}}}if(y.append("g").attr("class","grid").attr("transform","translate("+N+", "+(A-50)+")").call(B).selectAll("text").style("text-anchor","middle").attr("fill","#000").attr("stroke","none").attr("font-size",10).attr("dy","1em"),n.db.topAxisEnabled()||i.topAxis){let V=M8(v).tickSize(-A+I+i.gridLineStartPadding).tickFormat(um(P));if($!==null){let G=parseInt($[1],10);if(isNaN(G)||G<=0)Z.warn(`Invalid tick interval value: "${$[1]}". Skipping custom tick interval.`);else{let z=$[2],W=n.db.getWeekday()||i.weekday,H=v.domain(),j=H[0],Q=H[1];if(C(j,Q,G,z)<=zU)switch(z){case"millisecond":V.ticks(Kc.every(G));break;case"second":V.ticks(Bo.every(G));break;case"minute":V.ticks(ph.every(G));break;case"hour":V.ticks(mh.every(G));break;case"day":V.ticks(hl.every(G));break;case"week":V.ticks(w7e[W].every(G));break;case"month":V.ticks(gh.every(G));break}}}y.append("g").attr("class","grid").attr("transform","translate("+N+", "+I+")").call(V).selectAll("text").style("text-anchor","middle").attr("fill","#000").attr("stroke","none").attr("font-size",10)}}o(w,"makeGrid");function S(N,I){let _=0,A=Object.keys(m).map(M=>[M,m[M]]);y.append("g").selectAll("text").data(A).enter().append(function(M){let D=M[0].split(xt.lineBreakRegex),P=-(D.length-1)/2,B=u.createElementNS("http://www.w3.org/2000/svg","text");B.setAttribute("dy",P+"em");for(let[O,$]of D.entries()){let V=u.createElementNS("http://www.w3.org/2000/svg","tspan");V.setAttribute("alignment-baseline","central"),V.setAttribute("x","10"),O>0&&V.setAttribute("dy","1em"),V.textContent=$,B.appendChild(V)}return B}).attr("x",10).attr("y",function(M,D){if(D>0)for(let P=0;P<D;P++)return _+=A[D-1][1],M[1]*N/2+_*N+I;else return M[1]*N/2+I}).attr("font-size",i.sectionFontSize).attr("class",function(M){for(let[D,P]of p.entries())if(M[0]===P)return"sectionTitle sectionTitle"+D%i.numberSectionStyles;return"sectionTitle"})}o(S,"vertLabels");function R(N,I,_,A){let M=n.db.getTodayMarker();if(M==="off")return;let D=y.append("g").attr("class","today"),P=new Date,B=D.append("line");B.attr("x1",v(P)+N).attr("x2",v(P)+N).attr("y1",i.titleTopMargin).attr("y2",A-i.titleTopMargin).attr("class","today"),M!==""&&B.attr("style",M.replace(/,/g,";"))}o(R,"drawToday");function L(N){let I={},_=[];for(let A=0,M=N.length;A<M;++A)Object.prototype.hasOwnProperty.call(I,N[A])||(I[N[A]]=!0,_.push(N[A]));return _}o(L,"checkUnique")},"draw"),S7e={setConf:L5t,draw:I5t}});var M5t,A7e,R7e=F(()=>{"use strict";M5t=o(e=>`
   .mermaid-main-font {
         font-family: ${e.fontFamily};
   }
@@ -1698,13 +1703,22 @@
     fill: ${e.titleColor||e.textColor};
     font-family: ${e.fontFamily};
   }
-`,"getStyles"),O5e=s2t});var B5e={};xr(B5e,{diagram:()=>o2t});var o2t,F5e=z(()=>{"use strict";c5e();D5e();I5e();P5e();o2t={parser:l5e,db:A5e,renderer:N5e,styles:O5e}});var G5e,V5e=z(()=>{"use strict";sl();St();G5e={parse:o(async e=>{let t=await bn("info",e);Z.debug(t)},"parse")}});var h2t,d2t,W5e,q5e=z(()=>{"use strict";h2t={version:"11.15.0"},d2t=o(()=>h2t.version,"getVersion"),W5e={getVersion:d2t}});var bi,ps=z(()=>{"use strict";Rr();Ut();bi=o(e=>{let{securityLevel:t}=ge(),r=Je("body");if(t==="sandbox"){let a=Je(`#i${e}`).node()?.contentDocument??document;r=Je(a.body)}return r.select(`#${e}`)},"selectSvgElement")});var f2t,U5e,H5e=z(()=>{"use strict";St();ps();Di();f2t=o((e,t,r)=>{Z.debug(`rendering info diagram
-`+e);let i=bi(t);Br(i,100,400,!0),i.append("g").append("text").attr("x",100).attr("y",40).attr("class","version").attr("font-size",32).style("text-anchor","middle").text(`v${r}`)},"draw"),U5e={draw:f2t}});var Y5e={};xr(Y5e,{diagram:()=>p2t});var p2t,j5e=z(()=>{"use strict";V5e();q5e();H5e();p2t={parser:G5e,db:W5e,renderer:U5e}});var Z5e,zV,R6,GV,y2t,v2t,x2t,b2t,T2t,C2t,k2t,L6,VV=z(()=>{"use strict";St();Ci();Bn();Z5e=or.pie,zV={sections:new Map,showData:!1,config:Z5e},R6=zV.sections,GV=zV.showData,y2t=structuredClone(Z5e),v2t=o(()=>structuredClone(y2t),"getConfig"),x2t=o(()=>{R6=new Map,GV=zV.showData,gr()},"clear"),b2t=o(({label:e,value:t})=>{if(t<0)throw new Error(`"${e}" has invalid value: ${t}. Negative values are not allowed in pie charts. All slice values must be >= 0.`);R6.has(e)||(R6.set(e,t),Z.debug(`added new section: ${e}, with value: ${t}`))},"addSection"),T2t=o(()=>R6,"getSections"),C2t=o(e=>{GV=e},"setShowData"),k2t=o(()=>GV,"getShowData"),L6={getConfig:v2t,clear:x2t,setDiagramTitle:Ar,getDiagramTitle:Er,setAccTitle:Cr,getAccTitle:kr,setAccDescription:wr,getAccDescription:Sr,addSection:b2t,getSections:T2t,setShowData:C2t,getShowData:k2t}});var w2t,Q5e,J5e=z(()=>{"use strict";sl();St();au();VV();w2t=o((e,t)=>{ca(e,t),t.setShowData(e.showData),e.sections.map(t.addSection)},"populateDb"),Q5e={parse:o(async e=>{let t=await bn("pie",e);Z.debug(t),w2t(t,L6)},"parse")}});var S2t,eAe,tAe=z(()=>{"use strict";S2t=o(e=>`
+`,"getStyles"),A7e=M5t});var _7e={};ir(_7e,{diagram:()=>N5t});var N5t,L7e=F(()=>{"use strict";e7e();T7e();E7e();R7e();N5t={parser:JDe,db:x7e,renderer:S7e,styles:A7e}});var M7e,N7e=F(()=>{"use strict";Xa();vt();M7e={parse:o(async e=>{let t=await Si("info",e);Z.debug(t)},"parse")}});var $5t,F5t,P7e,O7e=F(()=>{"use strict";$5t={version:"11.16.0"},F5t=o(()=>$5t.version,"getVersion"),P7e={getVersion:F5t}});var xn,Ka=F(()=>{"use strict";$r();Xt();xn=o(e=>{let{securityLevel:t}=Ae(),r=et("body");if(t==="sandbox"){let a=et(`#i${e}`).node()?.contentDocument??document;r=et(a.body)}return r.select(`#${e}`)},"selectSvgElement")});var z5t,B7e,$7e=F(()=>{"use strict";vt();Ka();$n();z5t=o((e,t,r)=>{Z.debug(`rendering info diagram
+`+e);let n=xn(t);Wr(n,100,400,!0),n.append("g").append("text").attr("x",100).attr("y",40).attr("class","version").attr("font-size",32).style("text-anchor","middle").text(`v${r}`)},"draw"),B7e={draw:z5t}});var F7e={};ir(F7e,{diagram:()=>G5t});var G5t,z7e=F(()=>{"use strict";N7e();O7e();$7e();G5t={parser:M7e,db:P7e,renderer:B7e}});var W7e,GU,lL,VU,q5t,H5t,U5t,Y5t,j5t,X5t,K5t,cL,WU=F(()=>{"use strict";vt();Nn();Wi();W7e=cr.pie,GU={sections:new Map,showData:!1,config:W7e},lL=GU.sections,VU=GU.showData,q5t=structuredClone(W7e),H5t=o(()=>structuredClone(q5t),"getConfig"),U5t=o(()=>{lL=new Map,VU=GU.showData,yr()},"clear"),Y5t=o(({label:e,value:t})=>{if(t<0)throw new Error(`"${e}" has invalid value: ${t}. Negative values are not allowed in pie charts. All slice values must be >= 0.`);lL.has(e)||(lL.set(e,t),Z.debug(`added new section: ${e}, with value: ${t}`))},"addSection"),j5t=o(()=>lL,"getSections"),X5t=o(e=>{VU=e},"setShowData"),K5t=o(()=>VU,"getShowData"),cL={getConfig:H5t,clear:U5t,setDiagramTitle:Or,getDiagramTitle:Lr,setAccTitle:kr,getAccTitle:Ar,setAccDescription:Rr,getAccDescription:_r,addSection:Y5t,getSections:j5t,setShowData:X5t,getShowData:K5t}});var Z5t,q7e,H7e=F(()=>{"use strict";Xa();vt();Hs();WU();Z5t=o((e,t)=>{Gn(e,t),t.setShowData(e.showData),e.sections.map(t.addSection)},"populateDb"),q7e={parse:o(async e=>{let t=await Si("pie",e);Z.debug(t),Z5t(t,cL)},"parse")}});var Q5t,U7e,Y7e=F(()=>{"use strict";Q5t=o(e=>`
   .pieCircle{
     stroke: ${e.pieStrokeColor};
     stroke-width : ${e.pieStrokeWidth};
     opacity : ${e.pieOpacity};
   }
+  .pieCircle.highlighted{
+    scale: 1.05;
+    opacity: 1;
+  }
+  .pieCircle.highlightedOnHover:hover{
+    transition-duration: 250ms;
+    scale: 1.05;
+    opacity: 1;
+  }
   .pieOuterCircle{
     stroke: ${e.pieOuterStrokeColor};
     stroke-width: ${e.pieOuterStrokeWidth};
@@ -1727,37 +1741,37 @@
     font-family: ${e.fontFamily};
     font-size: ${e.pieLegendTextSize};
   }
-`,"getStyles"),eAe=S2t});var E2t,A2t,rAe,iAe=z(()=>{"use strict";Rr();Ut();St();ps();Di();Xt();E2t=o(e=>{let t=[...e.values()].reduce((n,a)=>n+a,0),r=[...e.entries()].map(([n,a])=>({label:n,value:a})).filter(n=>n.value/t*100>=1);return Sw().value(n=>n.value).sort(null)(r)},"createPieArcs"),A2t=o((e,t,r,i)=>{Z.debug(`rendering pie chart
-`+e);let n=i.db,a=ge(),s=Gr(n.getConfig(),a.pie),l=40,u=18,h=4,d=450,f=d,p=bi(t),m=p.append("g");m.attr("transform","translate("+f/2+","+d/2+")");let{themeVariables:g}=a,[y]=Za(g.pieOuterStrokeWidth);y??=2;let v=s.textPosition,x=Math.min(f,d)/2-l,b=Al().innerRadius(0).outerRadius(x),T=Al().innerRadius(x*v).outerRadius(x*v);m.append("circle").attr("cx",0).attr("cy",0).attr("r",x+y/2).attr("class","pieOuterCircle");let w=n.getSections(),C=E2t(w),k=[g.pie1,g.pie2,g.pie3,g.pie4,g.pie5,g.pie6,g.pie7,g.pie8,g.pie9,g.pie10,g.pie11,g.pie12],E=0;w.forEach(F=>{E+=F});let A=C.filter(F=>(F.data.value/E*100).toFixed(0)!=="0"),N=ro(k).domain([...w.keys()]);m.selectAll("mySlices").data(A).enter().append("path").attr("d",b).attr("fill",F=>N(F.data.label)).attr("class","pieCircle"),m.selectAll("mySlices").data(A).enter().append("text").text(F=>(F.data.value/E*100).toFixed(0)+"%").attr("transform",F=>"translate("+T.centroid(F)+")").style("text-anchor","middle").attr("class","slice");let P=m.append("text").text(n.getDiagramTitle()).attr("x",0).attr("y",-(d-50)/2).attr("class","pieTitleText"),I=[...w.entries()].map(([F,V])=>({label:F,value:V})),D=m.selectAll(".legend").data(I).enter().append("g").attr("class","legend").attr("transform",(F,V)=>{let H=u+h,j=H*I.length/2,U=12*u,Q=V*H-j;return"translate("+U+","+Q+")"});D.append("rect").attr("width",u).attr("height",u).style("fill",F=>N(F.label)).style("stroke",F=>N(F.label)),D.append("text").attr("x",u+h).attr("y",u-h).text(F=>n.getShowData()?`${F.label} [${F.value}]`:F.label);let _=Math.max(...D.selectAll("text").nodes().map(F=>F?.getBoundingClientRect().width??0)),R=f+l+u+h+_,M=P.node()?.getBoundingClientRect().width??0,L=f/2-M/2,B=f/2+M/2,O=Math.min(0,L),G=Math.max(R,B)-O;p.attr("viewBox",`${O} 0 ${G} ${d}`),Br(p,d,G,s.useMaxWidth)},"draw"),rAe={draw:A2t}});var nAe={};xr(nAe,{diagram:()=>_2t});var _2t,aAe=z(()=>{"use strict";J5e();VV();tAe();iAe();_2t={parser:Q5e,db:L6,renderer:rAe,styles:eAe}});var WV,oAe,lAe=z(()=>{"use strict";WV=(function(){var e=o(function(W,ce,K,Re){for(K=K||{},Re=W.length;Re--;K[W[Re]]=ce);return K},"o"),t=[1,3],r=[1,4],i=[1,5],n=[1,6],a=[1,7],s=[1,4,5,10,12,13,14,15,18,25,35,37,39,41,42,48,50,51,52,53,54,55,56,57,60,61,63,64,65,66,67],l=[1,4,5,10,12,13,14,15,18,25,28,35,37,39,41,42,48,50,51,52,53,54,55,56,57,60,61,63,64,65,66,67],u=[55,56,57],h=[2,36],d=[1,37],f=[1,36],p=[1,38],m=[1,35],g=[1,43],y=[1,41],v=[1,45],x=[1,14],b=[1,23],T=[1,18],w=[1,19],C=[1,20],k=[1,21],E=[1,22],A=[1,24],N=[1,25],P=[1,26],I=[1,27],D=[1,28],_=[1,29],R=[1,32],M=[1,33],L=[1,34],B=[1,39],O=[1,40],$=[1,42],G=[1,44],F=[1,63],V=[1,62],H=[4,5,8,10,12,13,14,15,18,44,47,49,55,56,57,63,64,65,66,67],j=[1,66],U=[1,67],Q=[1,68],Y=[1,69],ae=[1,70],J=[1,71],te=[1,72],re=[1,73],ee=[1,74],Te=[1,75],ue=[1,76],De=[1,77],Ie=[4,5,6,7,8,9,10,11,12,13,14,15,18],Ee=[1,91],we=[1,92],Me=[1,93],$e=[1,100],de=[1,94],rt=[1,97],ke=[1,95],Fe=[1,96],He=[1,98],at=[1,99],qe=[1,103],Ue=[10,55,56,57],ye=[4,5,6,8,10,11,13,17,18,19,20,55,56,57],ve={trace:o(function(){},"trace"),yy:{},symbols_:{error:2,idStringToken:3,ALPHA:4,NUM:5,NODE_STRING:6,DOWN:7,MINUS:8,DEFAULT:9,COMMA:10,COLON:11,AMP:12,BRKT:13,MULT:14,UNICODE_TEXT:15,styleComponent:16,UNIT:17,SPACE:18,STYLE:19,PCT:20,idString:21,style:22,stylesOpt:23,classDefStatement:24,CLASSDEF:25,start:26,eol:27,QUADRANT:28,document:29,line:30,statement:31,axisDetails:32,quadrantDetails:33,points:34,title:35,title_value:36,acc_title:37,acc_title_value:38,acc_descr:39,acc_descr_value:40,acc_descr_multiline_value:41,section:42,text:43,point_start:44,point_x:45,point_y:46,class_name:47,"X-AXIS":48,"AXIS-TEXT-DELIMITER":49,"Y-AXIS":50,QUADRANT_1:51,QUADRANT_2:52,QUADRANT_3:53,QUADRANT_4:54,NEWLINE:55,SEMI:56,EOF:57,alphaNumToken:58,textNoTagsToken:59,STR:60,MD_STR:61,alphaNum:62,PUNCTUATION:63,PLUS:64,EQUALS:65,DOT:66,UNDERSCORE:67,$accept:0,$end:1},terminals_:{2:"error",4:"ALPHA",5:"NUM",6:"NODE_STRING",7:"DOWN",8:"MINUS",9:"DEFAULT",10:"COMMA",11:"COLON",12:"AMP",13:"BRKT",14:"MULT",15:"UNICODE_TEXT",17:"UNIT",18:"SPACE",19:"STYLE",20:"PCT",25:"CLASSDEF",28:"QUADRANT",35:"title",36:"title_value",37:"acc_title",38:"acc_title_value",39:"acc_descr",40:"acc_descr_value",41:"acc_descr_multiline_value",42:"section",44:"point_start",45:"point_x",46:"point_y",47:"class_name",48:"X-AXIS",49:"AXIS-TEXT-DELIMITER",50:"Y-AXIS",51:"QUADRANT_1",52:"QUADRANT_2",53:"QUADRANT_3",54:"QUADRANT_4",55:"NEWLINE",56:"SEMI",57:"EOF",60:"STR",61:"MD_STR",63:"PUNCTUATION",64:"PLUS",65:"EQUALS",66:"DOT",67:"UNDERSCORE"},productions_:[0,[3,1],[3,1],[3,1],[3,1],[3,1],[3,1],[3,1],[3,1],[3,1],[3,1],[3,1],[3,1],[16,1],[16,1],[16,1],[16,1],[16,1],[16,1],[16,1],[16,1],[16,1],[16,1],[21,1],[21,2],[22,1],[22,2],[23,1],[23,3],[24,5],[26,2],[26,2],[26,2],[29,0],[29,2],[30,2],[31,0],[31,1],[31,2],[31,1],[31,1],[31,1],[31,2],[31,2],[31,2],[31,1],[31,1],[34,4],[34,5],[34,5],[34,6],[32,4],[32,3],[32,2],[32,4],[32,3],[32,2],[33,2],[33,2],[33,2],[33,2],[27,1],[27,1],[27,1],[43,1],[43,2],[43,1],[43,1],[62,1],[62,2],[58,1],[58,1],[58,1],[58,1],[58,1],[58,1],[58,1],[58,1],[58,1],[58,1],[58,1],[58,1],[59,1],[59,1],[59,1]],performAction:o(function(ce,K,Re,xe,Oe,be,Be){var Ae=be.length-1;switch(Oe){case 23:this.$=be[Ae];break;case 24:this.$=be[Ae-1]+""+be[Ae];break;case 26:this.$=be[Ae-1]+be[Ae];break;case 27:this.$=[be[Ae].trim()];break;case 28:be[Ae-2].push(be[Ae].trim()),this.$=be[Ae-2];break;case 29:this.$=be[Ae-4],xe.addClass(be[Ae-2],be[Ae]);break;case 37:this.$=[];break;case 42:this.$=be[Ae].trim(),xe.setDiagramTitle(this.$);break;case 43:this.$=be[Ae].trim(),xe.setAccTitle(this.$);break;case 44:case 45:this.$=be[Ae].trim(),xe.setAccDescription(this.$);break;case 46:xe.addSection(be[Ae].substr(8)),this.$=be[Ae].substr(8);break;case 47:xe.addPoint(be[Ae-3],"",be[Ae-1],be[Ae],[]);break;case 48:xe.addPoint(be[Ae-4],be[Ae-3],be[Ae-1],be[Ae],[]);break;case 49:xe.addPoint(be[Ae-4],"",be[Ae-2],be[Ae-1],be[Ae]);break;case 50:xe.addPoint(be[Ae-5],be[Ae-4],be[Ae-2],be[Ae-1],be[Ae]);break;case 51:xe.setXAxisLeftText(be[Ae-2]),xe.setXAxisRightText(be[Ae]);break;case 52:be[Ae-1].text+=" \u27F6 ",xe.setXAxisLeftText(be[Ae-1]);break;case 53:xe.setXAxisLeftText(be[Ae]);break;case 54:xe.setYAxisBottomText(be[Ae-2]),xe.setYAxisTopText(be[Ae]);break;case 55:be[Ae-1].text+=" \u27F6 ",xe.setYAxisBottomText(be[Ae-1]);break;case 56:xe.setYAxisBottomText(be[Ae]);break;case 57:xe.setQuadrant1Text(be[Ae]);break;case 58:xe.setQuadrant2Text(be[Ae]);break;case 59:xe.setQuadrant3Text(be[Ae]);break;case 60:xe.setQuadrant4Text(be[Ae]);break;case 64:this.$={text:be[Ae],type:"text"};break;case 65:this.$={text:be[Ae-1].text+""+be[Ae],type:be[Ae-1].type};break;case 66:this.$={text:be[Ae],type:"text"};break;case 67:this.$={text:be[Ae],type:"markdown"};break;case 68:this.$=be[Ae];break;case 69:this.$=be[Ae-1]+""+be[Ae];break}},"anonymous"),table:[{18:t,26:1,27:2,28:r,55:i,56:n,57:a},{1:[3]},{18:t,26:8,27:2,28:r,55:i,56:n,57:a},{18:t,26:9,27:2,28:r,55:i,56:n,57:a},e(s,[2,33],{29:10}),e(l,[2,61]),e(l,[2,62]),e(l,[2,63]),{1:[2,30]},{1:[2,31]},e(u,h,{30:11,31:12,24:13,32:15,33:16,34:17,43:30,58:31,1:[2,32],4:d,5:f,10:p,12:m,13:g,14:y,15:v,18:x,25:b,35:T,37:w,39:C,41:k,42:E,48:A,50:N,51:P,52:I,53:D,54:_,60:R,61:M,63:L,64:B,65:O,66:$,67:G}),e(s,[2,34]),{27:46,55:i,56:n,57:a},e(u,[2,37]),e(u,h,{24:13,32:15,33:16,34:17,43:30,58:31,31:47,4:d,5:f,10:p,12:m,13:g,14:y,15:v,18:x,25:b,35:T,37:w,39:C,41:k,42:E,48:A,50:N,51:P,52:I,53:D,54:_,60:R,61:M,63:L,64:B,65:O,66:$,67:G}),e(u,[2,39]),e(u,[2,40]),e(u,[2,41]),{36:[1,48]},{38:[1,49]},{40:[1,50]},e(u,[2,45]),e(u,[2,46]),{18:[1,51]},{4:d,5:f,10:p,12:m,13:g,14:y,15:v,43:52,58:31,60:R,61:M,63:L,64:B,65:O,66:$,67:G},{4:d,5:f,10:p,12:m,13:g,14:y,15:v,43:53,58:31,60:R,61:M,63:L,64:B,65:O,66:$,67:G},{4:d,5:f,10:p,12:m,13:g,14:y,15:v,43:54,58:31,60:R,61:M,63:L,64:B,65:O,66:$,67:G},{4:d,5:f,10:p,12:m,13:g,14:y,15:v,43:55,58:31,60:R,61:M,63:L,64:B,65:O,66:$,67:G},{4:d,5:f,10:p,12:m,13:g,14:y,15:v,43:56,58:31,60:R,61:M,63:L,64:B,65:O,66:$,67:G},{4:d,5:f,10:p,12:m,13:g,14:y,15:v,43:57,58:31,60:R,61:M,63:L,64:B,65:O,66:$,67:G},{4:d,5:f,8:F,10:p,12:m,13:g,14:y,15:v,18:V,44:[1,58],47:[1,59],58:61,59:60,63:L,64:B,65:O,66:$,67:G},e(H,[2,64]),e(H,[2,66]),e(H,[2,67]),e(H,[2,70]),e(H,[2,71]),e(H,[2,72]),e(H,[2,73]),e(H,[2,74]),e(H,[2,75]),e(H,[2,76]),e(H,[2,77]),e(H,[2,78]),e(H,[2,79]),e(H,[2,80]),e(H,[2,81]),e(s,[2,35]),e(u,[2,38]),e(u,[2,42]),e(u,[2,43]),e(u,[2,44]),{3:65,4:j,5:U,6:Q,7:Y,8:ae,9:J,10:te,11:re,12:ee,13:Te,14:ue,15:De,21:64},e(u,[2,53],{59:60,58:61,4:d,5:f,8:F,10:p,12:m,13:g,14:y,15:v,18:V,49:[1,78],63:L,64:B,65:O,66:$,67:G}),e(u,[2,56],{59:60,58:61,4:d,5:f,8:F,10:p,12:m,13:g,14:y,15:v,18:V,49:[1,79],63:L,64:B,65:O,66:$,67:G}),e(u,[2,57],{59:60,58:61,4:d,5:f,8:F,10:p,12:m,13:g,14:y,15:v,18:V,63:L,64:B,65:O,66:$,67:G}),e(u,[2,58],{59:60,58:61,4:d,5:f,8:F,10:p,12:m,13:g,14:y,15:v,18:V,63:L,64:B,65:O,66:$,67:G}),e(u,[2,59],{59:60,58:61,4:d,5:f,8:F,10:p,12:m,13:g,14:y,15:v,18:V,63:L,64:B,65:O,66:$,67:G}),e(u,[2,60],{59:60,58:61,4:d,5:f,8:F,10:p,12:m,13:g,14:y,15:v,18:V,63:L,64:B,65:O,66:$,67:G}),{45:[1,80]},{44:[1,81]},e(H,[2,65]),e(H,[2,82]),e(H,[2,83]),e(H,[2,84]),{3:83,4:j,5:U,6:Q,7:Y,8:ae,9:J,10:te,11:re,12:ee,13:Te,14:ue,15:De,18:[1,82]},e(Ie,[2,23]),e(Ie,[2,1]),e(Ie,[2,2]),e(Ie,[2,3]),e(Ie,[2,4]),e(Ie,[2,5]),e(Ie,[2,6]),e(Ie,[2,7]),e(Ie,[2,8]),e(Ie,[2,9]),e(Ie,[2,10]),e(Ie,[2,11]),e(Ie,[2,12]),e(u,[2,52],{58:31,43:84,4:d,5:f,10:p,12:m,13:g,14:y,15:v,60:R,61:M,63:L,64:B,65:O,66:$,67:G}),e(u,[2,55],{58:31,43:85,4:d,5:f,10:p,12:m,13:g,14:y,15:v,60:R,61:M,63:L,64:B,65:O,66:$,67:G}),{46:[1,86]},{45:[1,87]},{4:Ee,5:we,6:Me,8:$e,11:de,13:rt,16:90,17:ke,18:Fe,19:He,20:at,22:89,23:88},e(Ie,[2,24]),e(u,[2,51],{59:60,58:61,4:d,5:f,8:F,10:p,12:m,13:g,14:y,15:v,18:V,63:L,64:B,65:O,66:$,67:G}),e(u,[2,54],{59:60,58:61,4:d,5:f,8:F,10:p,12:m,13:g,14:y,15:v,18:V,63:L,64:B,65:O,66:$,67:G}),e(u,[2,47],{22:89,16:90,23:101,4:Ee,5:we,6:Me,8:$e,11:de,13:rt,17:ke,18:Fe,19:He,20:at}),{46:[1,102]},e(u,[2,29],{10:qe}),e(Ue,[2,27],{16:104,4:Ee,5:we,6:Me,8:$e,11:de,13:rt,17:ke,18:Fe,19:He,20:at}),e(ye,[2,25]),e(ye,[2,13]),e(ye,[2,14]),e(ye,[2,15]),e(ye,[2,16]),e(ye,[2,17]),e(ye,[2,18]),e(ye,[2,19]),e(ye,[2,20]),e(ye,[2,21]),e(ye,[2,22]),e(u,[2,49],{10:qe}),e(u,[2,48],{22:89,16:90,23:105,4:Ee,5:we,6:Me,8:$e,11:de,13:rt,17:ke,18:Fe,19:He,20:at}),{4:Ee,5:we,6:Me,8:$e,11:de,13:rt,16:90,17:ke,18:Fe,19:He,20:at,22:106},e(ye,[2,26]),e(u,[2,50],{10:qe}),e(Ue,[2,28],{16:104,4:Ee,5:we,6:Me,8:$e,11:de,13:rt,17:ke,18:Fe,19:He,20:at})],defaultActions:{8:[2,30],9:[2,31]},parseError:o(function(ce,K){if(K.recoverable)this.trace(ce);else{var Re=new Error(ce);throw Re.hash=K,Re}},"parseError"),parse:o(function(ce){var K=this,Re=[0],xe=[],Oe=[null],be=[],Be=this.table,Ae="",Ve=0,Pe=0,Ye=0,le=2,st=1,me=be.slice.call(arguments,1),ot=Object.create(this.lexer),kt={yy:{}};for(var Gt in this.yy)Object.prototype.hasOwnProperty.call(this.yy,Gt)&&(kt.yy[Gt]=this.yy[Gt]);ot.setInput(ce,kt.yy),kt.yy.lexer=ot,kt.yy.parser=this,typeof ot.yylloc>"u"&&(ot.yylloc={});var Tt=ot.yylloc;be.push(Tt);var Et=ot.options&&ot.options.ranges;typeof kt.yy.parseError=="function"?this.parseError=kt.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function yt(Se){Re.length=Re.length-2*Se,Oe.length=Oe.length-Se,be.length=be.length-Se}o(yt,"popStack");function oe(){var Se;return Se=xe.pop()||ot.lex()||st,typeof Se!="number"&&(Se instanceof Array&&(xe=Se,Se=xe.pop()),Se=K.symbols_[Se]||Se),Se}o(oe,"lex");for(var ht,gt,et,pe,Qe,nt,dt={},Ft,Rt,$t,lr;;){if(et=Re[Re.length-1],this.defaultActions[et]?pe=this.defaultActions[et]:((ht===null||typeof ht>"u")&&(ht=oe()),pe=Be[et]&&Be[et][ht]),typeof pe>"u"||!pe.length||!pe[0]){var pt="";lr=[];for(Ft in Be[et])this.terminals_[Ft]&&Ft>le&&lr.push("'"+this.terminals_[Ft]+"'");ot.showPosition?pt="Parse error on line "+(Ve+1)+`:
-`+ot.showPosition()+`
-Expecting `+lr.join(", ")+", got '"+(this.terminals_[ht]||ht)+"'":pt="Parse error on line "+(Ve+1)+": Unexpected "+(ht==st?"end of input":"'"+(this.terminals_[ht]||ht)+"'"),this.parseError(pt,{text:ot.match,token:this.terminals_[ht]||ht,line:ot.yylineno,loc:Tt,expected:lr})}if(pe[0]instanceof Array&&pe.length>1)throw new Error("Parse Error: multiple actions possible at state: "+et+", token: "+ht);switch(pe[0]){case 1:Re.push(ht),Oe.push(ot.yytext),be.push(ot.yylloc),Re.push(pe[1]),ht=null,gt?(ht=gt,gt=null):(Pe=ot.yyleng,Ae=ot.yytext,Ve=ot.yylineno,Tt=ot.yylloc,Ye>0&&Ye--);break;case 2:if(Rt=this.productions_[pe[1]][1],dt.$=Oe[Oe.length-Rt],dt._$={first_line:be[be.length-(Rt||1)].first_line,last_line:be[be.length-1].last_line,first_column:be[be.length-(Rt||1)].first_column,last_column:be[be.length-1].last_column},Et&&(dt._$.range=[be[be.length-(Rt||1)].range[0],be[be.length-1].range[1]]),nt=this.performAction.apply(dt,[Ae,Pe,Ve,kt.yy,pe[1],Oe,be].concat(me)),typeof nt<"u")return nt;Rt&&(Re=Re.slice(0,-1*Rt*2),Oe=Oe.slice(0,-1*Rt),be=be.slice(0,-1*Rt)),Re.push(this.productions_[pe[1]][0]),Oe.push(dt.$),be.push(dt._$),$t=Be[Re[Re.length-2]][Re[Re.length-1]],Re.push($t);break;case 3:return!0}}return!0},"parse")},ie=(function(){var W={EOF:1,parseError:o(function(K,Re){if(this.yy.parser)this.yy.parser.parseError(K,Re);else throw new Error(K)},"parseError"),setInput:o(function(ce,K){return this.yy=K||this.yy||{},this._input=ce,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},"setInput"),input:o(function(){var ce=this._input[0];this.yytext+=ce,this.yyleng++,this.offset++,this.match+=ce,this.matched+=ce;var K=ce.match(/(?:\r\n?|\n).*/g);return K?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),ce},"input"),unput:o(function(ce){var K=ce.length,Re=ce.split(/(?:\r\n?|\n)/g);this._input=ce+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-K),this.offset-=K;var xe=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),Re.length-1&&(this.yylineno-=Re.length-1);var Oe=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:Re?(Re.length===xe.length?this.yylloc.first_column:0)+xe[xe.length-Re.length].length-Re[0].length:this.yylloc.first_column-K},this.options.ranges&&(this.yylloc.range=[Oe[0],Oe[0]+this.yyleng-K]),this.yyleng=this.yytext.length,this},"unput"),more:o(function(){return this._more=!0,this},"more"),reject:o(function(){if(this.options.backtrack_lexer)this._backtrack=!0;else return this.parseError("Lexical error on line "+(this.yylineno+1)+`. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).
-`+this.showPosition(),{text:"",token:null,line:this.yylineno});return this},"reject"),less:o(function(ce){this.unput(this.match.slice(ce))},"less"),pastInput:o(function(){var ce=this.matched.substr(0,this.matched.length-this.match.length);return(ce.length>20?"...":"")+ce.substr(-20).replace(/\n/g,"")},"pastInput"),upcomingInput:o(function(){var ce=this.match;return ce.length<20&&(ce+=this._input.substr(0,20-ce.length)),(ce.substr(0,20)+(ce.length>20?"...":"")).replace(/\n/g,"")},"upcomingInput"),showPosition:o(function(){var ce=this.pastInput(),K=new Array(ce.length+1).join("-");return ce+this.upcomingInput()+`
-`+K+"^"},"showPosition"),test_match:o(function(ce,K){var Re,xe,Oe;if(this.options.backtrack_lexer&&(Oe={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(Oe.yylloc.range=this.yylloc.range.slice(0))),xe=ce[0].match(/(?:\r\n?|\n).*/g),xe&&(this.yylineno+=xe.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:xe?xe[xe.length-1].length-xe[xe.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+ce[0].length},this.yytext+=ce[0],this.match+=ce[0],this.matches=ce,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(ce[0].length),this.matched+=ce[0],Re=this.performAction.call(this,this.yy,this,K,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),Re)return Re;if(this._backtrack){for(var be in Oe)this[be]=Oe[be];return!1}return!1},"test_match"),next:o(function(){if(this.done)return this.EOF;this._input||(this.done=!0);var ce,K,Re,xe;this._more||(this.yytext="",this.match="");for(var Oe=this._currentRules(),be=0;be<Oe.length;be++)if(Re=this._input.match(this.rules[Oe[be]]),Re&&(!K||Re[0].length>K[0].length)){if(K=Re,xe=be,this.options.backtrack_lexer){if(ce=this.test_match(Re,Oe[be]),ce!==!1)return ce;if(this._backtrack){K=!1;continue}else return!1}else if(!this.options.flex)break}return K?(ce=this.test_match(K,Oe[xe]),ce!==!1?ce:!1):this._input===""?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+`. Unrecognized text.
-`+this.showPosition(),{text:"",token:null,line:this.yylineno})},"next"),lex:o(function(){var K=this.next();return K||this.lex()},"lex"),begin:o(function(K){this.conditionStack.push(K)},"begin"),popState:o(function(){var K=this.conditionStack.length-1;return K>0?this.conditionStack.pop():this.conditionStack[0]},"popState"),_currentRules:o(function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},"_currentRules"),topState:o(function(K){return K=this.conditionStack.length-1-Math.abs(K||0),K>=0?this.conditionStack[K]:"INITIAL"},"topState"),pushState:o(function(K){this.begin(K)},"pushState"),stateStackSize:o(function(){return this.conditionStack.length},"stateStackSize"),options:{"case-insensitive":!0},performAction:o(function(K,Re,xe,Oe){var be=Oe;switch(xe){case 0:break;case 1:break;case 2:return 55;case 3:break;case 4:return this.begin("title"),35;break;case 5:return this.popState(),"title_value";break;case 6:return this.begin("acc_title"),37;break;case 7:return this.popState(),"acc_title_value";break;case 8:return this.begin("acc_descr"),39;break;case 9:return this.popState(),"acc_descr_value";break;case 10:this.begin("acc_descr_multiline");break;case 11:this.popState();break;case 12:return"acc_descr_multiline_value";case 13:return 48;case 14:return 50;case 15:return 49;case 16:return 51;case 17:return 52;case 18:return 53;case 19:return 54;case 20:return 25;case 21:this.begin("md_string");break;case 22:return"MD_STR";case 23:this.popState();break;case 24:this.begin("string");break;case 25:this.popState();break;case 26:return"STR";case 27:this.begin("class_name");break;case 28:return this.popState(),47;break;case 29:return this.begin("point_start"),44;break;case 30:return this.begin("point_x"),45;break;case 31:this.popState();break;case 32:this.popState(),this.begin("point_y");break;case 33:return this.popState(),46;break;case 34:return 28;case 35:return 4;case 36:return 15;case 37:return 11;case 38:return 64;case 39:return 10;case 40:return 65;case 41:return 65;case 42:return 14;case 43:return 13;case 44:return 67;case 45:return 66;case 46:return 12;case 47:return 8;case 48:return 5;case 49:return 18;case 50:return 56;case 51:return 63;case 52:return 57}},"anonymous"),rules:[/^(?:%%(?!\{)[^\n]*)/i,/^(?:[^\}]%%[^\n]*)/i,/^(?:[\n\r]+)/i,/^(?:%%[^\n]*)/i,/^(?:title\b)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accTitle\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*\{\s*)/i,/^(?:[\}])/i,/^(?:[^\}]*)/i,/^(?: *x-axis *)/i,/^(?: *y-axis *)/i,/^(?: *--+> *)/i,/^(?: *quadrant-1 *)/i,/^(?: *quadrant-2 *)/i,/^(?: *quadrant-3 *)/i,/^(?: *quadrant-4 *)/i,/^(?:classDef\b)/i,/^(?:["][`])/i,/^(?:[^`"]+)/i,/^(?:[`]["])/i,/^(?:["])/i,/^(?:["])/i,/^(?:[^"]*)/i,/^(?::::)/i,/^(?:^\w+)/i,/^(?:\s*:\s*\[\s*)/i,/^(?:(1)|(0(.\d+)?))/i,/^(?:\s*\] *)/i,/^(?:\s*,\s*)/i,/^(?:(1)|(0(.\d+)?))/i,/^(?: *quadrantChart *)/i,/^(?:[A-Za-z]+)/i,/^(?:[^\x00-\x7F]+)/i,/^(?::)/i,/^(?:\+)/i,/^(?:,)/i,/^(?:=)/i,/^(?:=)/i,/^(?:\*)/i,/^(?:#)/i,/^(?:[\_])/i,/^(?:\.)/i,/^(?:&)/i,/^(?:-)/i,/^(?:[0-9]+)/i,/^(?:\s)/i,/^(?:;)/i,/^(?:[!"#$%&'*+,-.`?\\_/])/i,/^(?:$)/i],conditions:{class_name:{rules:[28],inclusive:!1},point_y:{rules:[33],inclusive:!1},point_x:{rules:[32],inclusive:!1},point_start:{rules:[30,31],inclusive:!1},acc_descr_multiline:{rules:[11,12],inclusive:!1},acc_descr:{rules:[9],inclusive:!1},acc_title:{rules:[7],inclusive:!1},title:{rules:[5],inclusive:!1},md_string:{rules:[22,23],inclusive:!1},string:{rules:[25,26],inclusive:!1},INITIAL:{rules:[0,1,2,3,4,6,8,10,13,14,15,16,17,18,19,20,21,24,27,29,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52],inclusive:!0}}};return W})();ve.lexer=ie;function fe(){this.yy={}}return o(fe,"Parser"),fe.prototype=ve,ve.Parser=fe,new fe})();WV.parser=WV;oAe=WV});var ms,M6,cAe=z(()=>{"use strict";Rr();Bn();St();$f();ms=Ao(),M6=class{constructor(){this.classes=new Map;this.config=this.getDefaultConfig(),this.themeConfig=this.getDefaultThemeConfig(),this.data=this.getDefaultData()}static{o(this,"QuadrantBuilder")}getDefaultData(){return{titleText:"",quadrant1Text:"",quadrant2Text:"",quadrant3Text:"",quadrant4Text:"",xAxisLeftText:"",xAxisRightText:"",yAxisBottomText:"",yAxisTopText:"",points:[]}}getDefaultConfig(){return{showXAxis:!0,showYAxis:!0,showTitle:!0,chartHeight:or.quadrantChart?.chartWidth||500,chartWidth:or.quadrantChart?.chartHeight||500,titlePadding:or.quadrantChart?.titlePadding||10,titleFontSize:or.quadrantChart?.titleFontSize||20,quadrantPadding:or.quadrantChart?.quadrantPadding||5,xAxisLabelPadding:or.quadrantChart?.xAxisLabelPadding||5,yAxisLabelPadding:or.quadrantChart?.yAxisLabelPadding||5,xAxisLabelFontSize:or.quadrantChart?.xAxisLabelFontSize||16,yAxisLabelFontSize:or.quadrantChart?.yAxisLabelFontSize||16,quadrantLabelFontSize:or.quadrantChart?.quadrantLabelFontSize||16,quadrantTextTopPadding:or.quadrantChart?.quadrantTextTopPadding||5,pointTextPadding:or.quadrantChart?.pointTextPadding||5,pointLabelFontSize:or.quadrantChart?.pointLabelFontSize||12,pointRadius:or.quadrantChart?.pointRadius||5,xAxisPosition:or.quadrantChart?.xAxisPosition||"top",yAxisPosition:or.quadrantChart?.yAxisPosition||"left",quadrantInternalBorderStrokeWidth:or.quadrantChart?.quadrantInternalBorderStrokeWidth||1,quadrantExternalBorderStrokeWidth:or.quadrantChart?.quadrantExternalBorderStrokeWidth||2}}getDefaultThemeConfig(){return{quadrant1Fill:ms.quadrant1Fill,quadrant2Fill:ms.quadrant2Fill,quadrant3Fill:ms.quadrant3Fill,quadrant4Fill:ms.quadrant4Fill,quadrant1TextFill:ms.quadrant1TextFill,quadrant2TextFill:ms.quadrant2TextFill,quadrant3TextFill:ms.quadrant3TextFill,quadrant4TextFill:ms.quadrant4TextFill,quadrantPointFill:ms.quadrantPointFill,quadrantPointTextFill:ms.quadrantPointTextFill,quadrantXAxisTextFill:ms.quadrantXAxisTextFill,quadrantYAxisTextFill:ms.quadrantYAxisTextFill,quadrantTitleFill:ms.quadrantTitleFill,quadrantInternalBorderStrokeFill:ms.quadrantInternalBorderStrokeFill,quadrantExternalBorderStrokeFill:ms.quadrantExternalBorderStrokeFill}}clear(){this.config=this.getDefaultConfig(),this.themeConfig=this.getDefaultThemeConfig(),this.data=this.getDefaultData(),this.classes=new Map,Z.info("clear called")}setData(t){this.data={...this.data,...t}}addPoints(t){this.data.points=[...t,...this.data.points]}addClass(t,r){this.classes.set(t,r)}setConfig(t){Z.trace("setConfig called with: ",t),this.config={...this.config,...t}}setThemeConfig(t){Z.trace("setThemeConfig called with: ",t),this.themeConfig={...this.themeConfig,...t}}calculateSpace(t,r,i,n){let a=this.config.xAxisLabelPadding*2+this.config.xAxisLabelFontSize,s={top:t==="top"&&r?a:0,bottom:t==="bottom"&&r?a:0},l=this.config.yAxisLabelPadding*2+this.config.yAxisLabelFontSize,u={left:this.config.yAxisPosition==="left"&&i?l:0,right:this.config.yAxisPosition==="right"&&i?l:0},h=this.config.titleFontSize+this.config.titlePadding*2,d={top:n?h:0},f=this.config.quadrantPadding+u.left,p=this.config.quadrantPadding+s.top+d.top,m=this.config.chartWidth-this.config.quadrantPadding*2-u.left-u.right,g=this.config.chartHeight-this.config.quadrantPadding*2-s.top-s.bottom-d.top,y=m/2,v=g/2;return{xAxisSpace:s,yAxisSpace:u,titleSpace:d,quadrantSpace:{quadrantLeft:f,quadrantTop:p,quadrantWidth:m,quadrantHalfWidth:y,quadrantHeight:g,quadrantHalfHeight:v}}}getAxisLabels(t,r,i,n){let{quadrantSpace:a,titleSpace:s}=n,{quadrantHalfHeight:l,quadrantHeight:u,quadrantLeft:h,quadrantHalfWidth:d,quadrantTop:f,quadrantWidth:p}=a,m=!!this.data.xAxisRightText,g=!!this.data.yAxisTopText,y=[];return this.data.xAxisLeftText&&r&&y.push({text:this.data.xAxisLeftText,fill:this.themeConfig.quadrantXAxisTextFill,x:h+(m?d/2:0),y:t==="top"?this.config.xAxisLabelPadding+s.top:this.config.xAxisLabelPadding+f+u+this.config.quadrantPadding,fontSize:this.config.xAxisLabelFontSize,verticalPos:m?"center":"left",horizontalPos:"top",rotation:0}),this.data.xAxisRightText&&r&&y.push({text:this.data.xAxisRightText,fill:this.themeConfig.quadrantXAxisTextFill,x:h+d+(m?d/2:0),y:t==="top"?this.config.xAxisLabelPadding+s.top:this.config.xAxisLabelPadding+f+u+this.config.quadrantPadding,fontSize:this.config.xAxisLabelFontSize,verticalPos:m?"center":"left",horizontalPos:"top",rotation:0}),this.data.yAxisBottomText&&i&&y.push({text:this.data.yAxisBottomText,fill:this.themeConfig.quadrantYAxisTextFill,x:this.config.yAxisPosition==="left"?this.config.yAxisLabelPadding:this.config.yAxisLabelPadding+h+p+this.config.quadrantPadding,y:f+u-(g?l/2:0),fontSize:this.config.yAxisLabelFontSize,verticalPos:g?"center":"left",horizontalPos:"top",rotation:-90}),this.data.yAxisTopText&&i&&y.push({text:this.data.yAxisTopText,fill:this.themeConfig.quadrantYAxisTextFill,x:this.config.yAxisPosition==="left"?this.config.yAxisLabelPadding:this.config.yAxisLabelPadding+h+p+this.config.quadrantPadding,y:f+l-(g?l/2:0),fontSize:this.config.yAxisLabelFontSize,verticalPos:g?"center":"left",horizontalPos:"top",rotation:-90}),y}getQuadrants(t){let{quadrantSpace:r}=t,{quadrantHalfHeight:i,quadrantLeft:n,quadrantHalfWidth:a,quadrantTop:s}=r,l=[{text:{text:this.data.quadrant1Text,fill:this.themeConfig.quadrant1TextFill,x:0,y:0,fontSize:this.config.quadrantLabelFontSize,verticalPos:"center",horizontalPos:"middle",rotation:0},x:n+a,y:s,width:a,height:i,fill:this.themeConfig.quadrant1Fill},{text:{text:this.data.quadrant2Text,fill:this.themeConfig.quadrant2TextFill,x:0,y:0,fontSize:this.config.quadrantLabelFontSize,verticalPos:"center",horizontalPos:"middle",rotation:0},x:n,y:s,width:a,height:i,fill:this.themeConfig.quadrant2Fill},{text:{text:this.data.quadrant3Text,fill:this.themeConfig.quadrant3TextFill,x:0,y:0,fontSize:this.config.quadrantLabelFontSize,verticalPos:"center",horizontalPos:"middle",rotation:0},x:n,y:s+i,width:a,height:i,fill:this.themeConfig.quadrant3Fill},{text:{text:this.data.quadrant4Text,fill:this.themeConfig.quadrant4TextFill,x:0,y:0,fontSize:this.config.quadrantLabelFontSize,verticalPos:"center",horizontalPos:"middle",rotation:0},x:n+a,y:s+i,width:a,height:i,fill:this.themeConfig.quadrant4Fill}];for(let u of l)u.text.x=u.x+u.width/2,this.data.points.length===0?(u.text.y=u.y+u.height/2,u.text.horizontalPos="middle"):(u.text.y=u.y+this.config.quadrantTextTopPadding,u.text.horizontalPos="top");return l}getQuadrantPoints(t){let{quadrantSpace:r}=t,{quadrantHeight:i,quadrantLeft:n,quadrantTop:a,quadrantWidth:s}=r,l=kl().domain([0,1]).range([n,s+n]),u=kl().domain([0,1]).range([i+a,a]);return this.data.points.map(d=>{let f=this.classes.get(d.className);return f&&(d={...f,...d}),{x:l(d.x),y:u(d.y),fill:d.color??this.themeConfig.quadrantPointFill,radius:d.radius??this.config.pointRadius,text:{text:d.text,fill:this.themeConfig.quadrantPointTextFill,x:l(d.x),y:u(d.y)+this.config.pointTextPadding,verticalPos:"center",horizontalPos:"top",fontSize:this.config.pointLabelFontSize,rotation:0},strokeColor:d.strokeColor??this.themeConfig.quadrantPointFill,strokeWidth:d.strokeWidth??"0px"}})}getBorders(t){let r=this.config.quadrantExternalBorderStrokeWidth/2,{quadrantSpace:i}=t,{quadrantHalfHeight:n,quadrantHeight:a,quadrantLeft:s,quadrantHalfWidth:l,quadrantTop:u,quadrantWidth:h}=i;return[{strokeFill:this.themeConfig.quadrantExternalBorderStrokeFill,strokeWidth:this.config.quadrantExternalBorderStrokeWidth,x1:s-r,y1:u,x2:s+h+r,y2:u},{strokeFill:this.themeConfig.quadrantExternalBorderStrokeFill,strokeWidth:this.config.quadrantExternalBorderStrokeWidth,x1:s+h,y1:u+r,x2:s+h,y2:u+a-r},{strokeFill:this.themeConfig.quadrantExternalBorderStrokeFill,strokeWidth:this.config.quadrantExternalBorderStrokeWidth,x1:s-r,y1:u+a,x2:s+h+r,y2:u+a},{strokeFill:this.themeConfig.quadrantExternalBorderStrokeFill,strokeWidth:this.config.quadrantExternalBorderStrokeWidth,x1:s,y1:u+r,x2:s,y2:u+a-r},{strokeFill:this.themeConfig.quadrantInternalBorderStrokeFill,strokeWidth:this.config.quadrantInternalBorderStrokeWidth,x1:s+l,y1:u+r,x2:s+l,y2:u+a-r},{strokeFill:this.themeConfig.quadrantInternalBorderStrokeFill,strokeWidth:this.config.quadrantInternalBorderStrokeWidth,x1:s+r,y1:u+n,x2:s+h-r,y2:u+n}]}getTitle(t){if(t)return{text:this.data.titleText,fill:this.themeConfig.quadrantTitleFill,fontSize:this.config.titleFontSize,horizontalPos:"top",verticalPos:"center",rotation:0,y:this.config.titlePadding,x:this.config.chartWidth/2}}build(){let t=this.config.showXAxis&&!!(this.data.xAxisLeftText||this.data.xAxisRightText),r=this.config.showYAxis&&!!(this.data.yAxisTopText||this.data.yAxisBottomText),i=this.config.showTitle&&!!this.data.titleText,n=this.data.points.length>0?"bottom":this.config.xAxisPosition,a=this.calculateSpace(n,t,r,i);return{points:this.getQuadrantPoints(a),quadrants:this.getQuadrants(a),axisLabels:this.getAxisLabels(n,t,r,a),borderLines:this.getBorders(a),title:this.getTitle(i)}}}});function qV(e){return!/^#?([\dA-Fa-f]{6}|[\dA-Fa-f]{3})$/.test(e)}function uAe(e){return!/^\d+$/.test(e)}function hAe(e){return!/^\d+px$/.test(e)}var pm,dAe=z(()=>{"use strict";pm=class extends Error{static{o(this,"InvalidStyleError")}constructor(t,r,i){super(`value for ${t} ${r} is invalid, please use a valid ${i}`),this.name="InvalidStyleError"}};o(qV,"validateHexCode");o(uAe,"validateNumber");o(hAe,"validateSizeInPixels")});function wh(e){return fr(e.trim(),L2t)}function M2t(e){wa.setData({quadrant1Text:wh(e.text)})}function N2t(e){wa.setData({quadrant2Text:wh(e.text)})}function I2t(e){wa.setData({quadrant3Text:wh(e.text)})}function O2t(e){wa.setData({quadrant4Text:wh(e.text)})}function P2t(e){wa.setData({xAxisLeftText:wh(e.text)})}function B2t(e){wa.setData({xAxisRightText:wh(e.text)})}function F2t(e){wa.setData({yAxisTopText:wh(e.text)})}function $2t(e){wa.setData({yAxisBottomText:wh(e.text)})}function UV(e){let t={};for(let r of e){let[i,n]=r.trim().split(/\s*:\s*/);if(i==="radius"){if(uAe(n))throw new pm(i,n,"number");t.radius=parseInt(n)}else if(i==="color"){if(qV(n))throw new pm(i,n,"hex code");t.color=n}else if(i==="stroke-color"){if(qV(n))throw new pm(i,n,"hex code");t.strokeColor=n}else if(i==="stroke-width"){if(hAe(n))throw new pm(i,n,"number of pixels (eg. 10px)");t.strokeWidth=n}else throw new Error(`style named ${i} is not supported.`)}return t}function z2t(e,t,r,i,n){let a=UV(n);wa.addPoints([{x:r,y:i,text:wh(e.text),className:t,...a}])}function G2t(e,t){wa.addClass(e,UV(t))}function V2t(e){wa.setConfig({chartWidth:e})}function W2t(e){wa.setConfig({chartHeight:e})}function q2t(){let e=ge(),{themeVariables:t,quadrantChart:r}=e;return r&&wa.setConfig(r),wa.setThemeConfig({quadrant1Fill:t.quadrant1Fill,quadrant2Fill:t.quadrant2Fill,quadrant3Fill:t.quadrant3Fill,quadrant4Fill:t.quadrant4Fill,quadrant1TextFill:t.quadrant1TextFill,quadrant2TextFill:t.quadrant2TextFill,quadrant3TextFill:t.quadrant3TextFill,quadrant4TextFill:t.quadrant4TextFill,quadrantPointFill:t.quadrantPointFill,quadrantPointTextFill:t.quadrantPointTextFill,quadrantXAxisTextFill:t.quadrantXAxisTextFill,quadrantYAxisTextFill:t.quadrantYAxisTextFill,quadrantExternalBorderStrokeFill:t.quadrantExternalBorderStrokeFill,quadrantInternalBorderStrokeFill:t.quadrantInternalBorderStrokeFill,quadrantTitleFill:t.quadrantTitleFill}),wa.setData({titleText:Er()}),wa.build()}var L2t,wa,U2t,fAe,pAe=z(()=>{"use strict";Ut();Ir();Ci();cAe();dAe();L2t=ge();o(wh,"textSanitizer");wa=new M6;o(M2t,"setQuadrant1Text");o(N2t,"setQuadrant2Text");o(I2t,"setQuadrant3Text");o(O2t,"setQuadrant4Text");o(P2t,"setXAxisLeftText");o(B2t,"setXAxisRightText");o(F2t,"setYAxisTopText");o($2t,"setYAxisBottomText");o(UV,"parseStyles");o(z2t,"addPoint");o(G2t,"addClass");o(V2t,"setWidth");o(W2t,"setHeight");o(q2t,"getQuadrantData");U2t=o(function(){wa.clear(),gr()},"clear"),fAe={setWidth:V2t,setHeight:W2t,setQuadrant1Text:M2t,setQuadrant2Text:N2t,setQuadrant3Text:I2t,setQuadrant4Text:O2t,setXAxisLeftText:P2t,setXAxisRightText:B2t,setYAxisTopText:F2t,setYAxisBottomText:$2t,parseStyles:UV,addPoint:z2t,addClass:G2t,getQuadrantData:q2t,clear:U2t,setAccTitle:Cr,getAccTitle:kr,setDiagramTitle:Ar,getDiagramTitle:Er,getAccDescription:Sr,setAccDescription:wr}});var H2t,mAe,gAe=z(()=>{"use strict";Rr();Ut();St();Di();H2t=o((e,t,r,i)=>{function n(A){return A==="top"?"hanging":"middle"}o(n,"getDominantBaseLine");function a(A){return A==="left"?"start":"middle"}o(a,"getTextAnchor");function s(A){return`translate(${A.x}, ${A.y}) rotate(${A.rotation||0})`}o(s,"getTransformation");let l=ge();Z.debug(`Rendering quadrant chart
-`+e);let u=l.securityLevel,h;u==="sandbox"&&(h=Je("#i"+t));let f=(u==="sandbox"?Je(h.nodes()[0].contentDocument.body):Je("body")).select(`[id="${t}"]`),p=f.append("g").attr("class","main"),m=l.quadrantChart?.chartWidth??500,g=l.quadrantChart?.chartHeight??500;Br(f,g,m,l.quadrantChart?.useMaxWidth??!0),f.attr("viewBox","0 0 "+m+" "+g),i.db.setHeight(g),i.db.setWidth(m);let y=i.db.getQuadrantData(),v=p.append("g").attr("class","quadrants"),x=p.append("g").attr("class","border"),b=p.append("g").attr("class","data-points"),T=p.append("g").attr("class","labels"),w=p.append("g").attr("class","title");y.title&&w.append("text").attr("x",0).attr("y",0).attr("fill",y.title.fill).attr("font-size",y.title.fontSize).attr("dominant-baseline",n(y.title.horizontalPos)).attr("text-anchor",a(y.title.verticalPos)).attr("transform",s(y.title)).text(y.title.text),y.borderLines&&x.selectAll("line").data(y.borderLines).enter().append("line").attr("x1",A=>A.x1).attr("y1",A=>A.y1).attr("x2",A=>A.x2).attr("y2",A=>A.y2).style("stroke",A=>A.strokeFill).style("stroke-width",A=>A.strokeWidth);let C=v.selectAll("g.quadrant").data(y.quadrants).enter().append("g").attr("class","quadrant");C.append("rect").attr("x",A=>A.x).attr("y",A=>A.y).attr("width",A=>A.width).attr("height",A=>A.height).attr("fill",A=>A.fill),C.append("text").attr("x",0).attr("y",0).attr("fill",A=>A.text.fill).attr("font-size",A=>A.text.fontSize).attr("dominant-baseline",A=>n(A.text.horizontalPos)).attr("text-anchor",A=>a(A.text.verticalPos)).attr("transform",A=>s(A.text)).text(A=>A.text.text),T.selectAll("g.label").data(y.axisLabels).enter().append("g").attr("class","label").append("text").attr("x",0).attr("y",0).text(A=>A.text).attr("fill",A=>A.fill).attr("font-size",A=>A.fontSize).attr("dominant-baseline",A=>n(A.horizontalPos)).attr("text-anchor",A=>a(A.verticalPos)).attr("transform",A=>s(A));let E=b.selectAll("g.data-point").data(y.points).enter().append("g").attr("class","data-point");E.append("circle").attr("cx",A=>A.x).attr("cy",A=>A.y).attr("r",A=>A.radius).attr("fill",A=>A.fill).attr("stroke",A=>A.strokeColor).attr("stroke-width",A=>A.strokeWidth),E.append("text").attr("x",0).attr("y",0).text(A=>A.text.text).attr("fill",A=>A.text.fill).attr("font-size",A=>A.text.fontSize).attr("dominant-baseline",A=>n(A.text.horizontalPos)).attr("text-anchor",A=>a(A.text.verticalPos)).attr("transform",A=>s(A.text))},"draw"),mAe={draw:H2t}});var yAe={};xr(yAe,{diagram:()=>Y2t});var Y2t,vAe=z(()=>{"use strict";lAe();pAe();gAe();Y2t={parser:oAe,db:fAe,renderer:mAe,styles:o(()=>"","styles")}});var HV,TAe,CAe=z(()=>{"use strict";HV=(function(){var e=o(function(M,L,B,O){for(B=B||{},O=M.length;O--;B[M[O]]=L);return B},"o"),t=[1,10,12,14,16,18,19,21,23],r=[2,6],i=[1,3],n=[1,5],a=[1,6],s=[1,7],l=[1,5,10,12,14,16,18,19,21,23,34,35,36],u=[1,25],h=[1,26],d=[1,28],f=[1,29],p=[1,30],m=[1,31],g=[1,32],y=[1,33],v=[1,34],x=[1,35],b=[1,36],T=[1,37],w=[1,43],C=[1,42],k=[1,47],E=[1,50],A=[1,10,12,14,16,18,19,21,23,34,35,36],N=[1,10,12,14,16,18,19,21,23,24,26,27,28,34,35,36],P=[1,10,12,14,16,18,19,21,23,24,26,27,28,34,35,36,41,42,43,44,45,46,47,48,49,50],I=[1,64],D={trace:o(function(){},"trace"),yy:{},symbols_:{error:2,start:3,eol:4,XYCHART:5,chartConfig:6,document:7,CHART_ORIENTATION:8,statement:9,title:10,text:11,X_AXIS:12,parseXAxis:13,Y_AXIS:14,parseYAxis:15,LINE:16,plotData:17,BAR:18,acc_title:19,acc_title_value:20,acc_descr:21,acc_descr_value:22,acc_descr_multiline_value:23,SQUARE_BRACES_START:24,commaSeparatedNumbers:25,SQUARE_BRACES_END:26,NUMBER_WITH_DECIMAL:27,COMMA:28,xAxisData:29,bandData:30,ARROW_DELIMITER:31,commaSeparatedTexts:32,yAxisData:33,NEWLINE:34,SEMI:35,EOF:36,alphaNum:37,STR:38,MD_STR:39,alphaNumToken:40,AMP:41,NUM:42,ALPHA:43,PLUS:44,EQUALS:45,MULT:46,DOT:47,BRKT:48,MINUS:49,UNDERSCORE:50,$accept:0,$end:1},terminals_:{2:"error",5:"XYCHART",8:"CHART_ORIENTATION",10:"title",12:"X_AXIS",14:"Y_AXIS",16:"LINE",18:"BAR",19:"acc_title",20:"acc_title_value",21:"acc_descr",22:"acc_descr_value",23:"acc_descr_multiline_value",24:"SQUARE_BRACES_START",26:"SQUARE_BRACES_END",27:"NUMBER_WITH_DECIMAL",28:"COMMA",31:"ARROW_DELIMITER",34:"NEWLINE",35:"SEMI",36:"EOF",38:"STR",39:"MD_STR",41:"AMP",42:"NUM",43:"ALPHA",44:"PLUS",45:"EQUALS",46:"MULT",47:"DOT",48:"BRKT",49:"MINUS",50:"UNDERSCORE"},productions_:[0,[3,2],[3,3],[3,2],[3,1],[6,1],[7,0],[7,2],[9,2],[9,2],[9,2],[9,2],[9,2],[9,3],[9,2],[9,3],[9,2],[9,2],[9,1],[17,3],[25,3],[25,1],[13,1],[13,2],[13,1],[29,1],[29,3],[30,3],[32,3],[32,1],[15,1],[15,2],[15,1],[33,3],[4,1],[4,1],[4,1],[11,1],[11,1],[11,1],[37,1],[37,2],[40,1],[40,1],[40,1],[40,1],[40,1],[40,1],[40,1],[40,1],[40,1],[40,1]],performAction:o(function(L,B,O,$,G,F,V){var H=F.length-1;switch(G){case 5:$.setOrientation(F[H]);break;case 9:$.setDiagramTitle(F[H].text.trim());break;case 12:$.setLineData({text:"",type:"text"},F[H]);break;case 13:$.setLineData(F[H-1],F[H]);break;case 14:$.setBarData({text:"",type:"text"},F[H]);break;case 15:$.setBarData(F[H-1],F[H]);break;case 16:this.$=F[H].trim(),$.setAccTitle(this.$);break;case 17:case 18:this.$=F[H].trim(),$.setAccDescription(this.$);break;case 19:this.$=F[H-1];break;case 20:this.$=[Number(F[H-2]),...F[H]];break;case 21:this.$=[Number(F[H])];break;case 22:$.setXAxisTitle(F[H]);break;case 23:$.setXAxisTitle(F[H-1]);break;case 24:$.setXAxisTitle({type:"text",text:""});break;case 25:$.setXAxisBand(F[H]);break;case 26:$.setXAxisRangeData(Number(F[H-2]),Number(F[H]));break;case 27:this.$=F[H-1];break;case 28:this.$=[F[H-2],...F[H]];break;case 29:this.$=[F[H]];break;case 30:$.setYAxisTitle(F[H]);break;case 31:$.setYAxisTitle(F[H-1]);break;case 32:$.setYAxisTitle({type:"text",text:""});break;case 33:$.setYAxisRangeData(Number(F[H-2]),Number(F[H]));break;case 37:this.$={text:F[H],type:"text"};break;case 38:this.$={text:F[H],type:"text"};break;case 39:this.$={text:F[H],type:"markdown"};break;case 40:this.$=F[H];break;case 41:this.$=F[H-1]+""+F[H];break}},"anonymous"),table:[e(t,r,{3:1,4:2,7:4,5:i,34:n,35:a,36:s}),{1:[3]},e(t,r,{4:2,7:4,3:8,5:i,34:n,35:a,36:s}),e(t,r,{4:2,7:4,6:9,3:10,5:i,8:[1,11],34:n,35:a,36:s}),{1:[2,4],9:12,10:[1,13],12:[1,14],14:[1,15],16:[1,16],18:[1,17],19:[1,18],21:[1,19],23:[1,20]},e(l,[2,34]),e(l,[2,35]),e(l,[2,36]),{1:[2,1]},e(t,r,{4:2,7:4,3:21,5:i,34:n,35:a,36:s}),{1:[2,3]},e(l,[2,5]),e(t,[2,7],{4:22,34:n,35:a,36:s}),{11:23,37:24,38:u,39:h,40:27,41:d,42:f,43:p,44:m,45:g,46:y,47:v,48:x,49:b,50:T},{11:39,13:38,24:w,27:C,29:40,30:41,37:24,38:u,39:h,40:27,41:d,42:f,43:p,44:m,45:g,46:y,47:v,48:x,49:b,50:T},{11:45,15:44,27:k,33:46,37:24,38:u,39:h,40:27,41:d,42:f,43:p,44:m,45:g,46:y,47:v,48:x,49:b,50:T},{11:49,17:48,24:E,37:24,38:u,39:h,40:27,41:d,42:f,43:p,44:m,45:g,46:y,47:v,48:x,49:b,50:T},{11:52,17:51,24:E,37:24,38:u,39:h,40:27,41:d,42:f,43:p,44:m,45:g,46:y,47:v,48:x,49:b,50:T},{20:[1,53]},{22:[1,54]},e(A,[2,18]),{1:[2,2]},e(A,[2,8]),e(A,[2,9]),e(N,[2,37],{40:55,41:d,42:f,43:p,44:m,45:g,46:y,47:v,48:x,49:b,50:T}),e(N,[2,38]),e(N,[2,39]),e(P,[2,40]),e(P,[2,42]),e(P,[2,43]),e(P,[2,44]),e(P,[2,45]),e(P,[2,46]),e(P,[2,47]),e(P,[2,48]),e(P,[2,49]),e(P,[2,50]),e(P,[2,51]),e(A,[2,10]),e(A,[2,22],{30:41,29:56,24:w,27:C}),e(A,[2,24]),e(A,[2,25]),{31:[1,57]},{11:59,32:58,37:24,38:u,39:h,40:27,41:d,42:f,43:p,44:m,45:g,46:y,47:v,48:x,49:b,50:T},e(A,[2,11]),e(A,[2,30],{33:60,27:k}),e(A,[2,32]),{31:[1,61]},e(A,[2,12]),{17:62,24:E},{25:63,27:I},e(A,[2,14]),{17:65,24:E},e(A,[2,16]),e(A,[2,17]),e(P,[2,41]),e(A,[2,23]),{27:[1,66]},{26:[1,67]},{26:[2,29],28:[1,68]},e(A,[2,31]),{27:[1,69]},e(A,[2,13]),{26:[1,70]},{26:[2,21],28:[1,71]},e(A,[2,15]),e(A,[2,26]),e(A,[2,27]),{11:59,32:72,37:24,38:u,39:h,40:27,41:d,42:f,43:p,44:m,45:g,46:y,47:v,48:x,49:b,50:T},e(A,[2,33]),e(A,[2,19]),{25:73,27:I},{26:[2,28]},{26:[2,20]}],defaultActions:{8:[2,1],10:[2,3],21:[2,2],72:[2,28],73:[2,20]},parseError:o(function(L,B){if(B.recoverable)this.trace(L);else{var O=new Error(L);throw O.hash=B,O}},"parseError"),parse:o(function(L){var B=this,O=[0],$=[],G=[null],F=[],V=this.table,H="",j=0,U=0,Q=0,Y=2,ae=1,J=F.slice.call(arguments,1),te=Object.create(this.lexer),re={yy:{}};for(var ee in this.yy)Object.prototype.hasOwnProperty.call(this.yy,ee)&&(re.yy[ee]=this.yy[ee]);te.setInput(L,re.yy),re.yy.lexer=te,re.yy.parser=this,typeof te.yylloc>"u"&&(te.yylloc={});var Te=te.yylloc;F.push(Te);var ue=te.options&&te.options.ranges;typeof re.yy.parseError=="function"?this.parseError=re.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function De(ye){O.length=O.length-2*ye,G.length=G.length-ye,F.length=F.length-ye}o(De,"popStack");function Ie(){var ye;return ye=$.pop()||te.lex()||ae,typeof ye!="number"&&(ye instanceof Array&&($=ye,ye=$.pop()),ye=B.symbols_[ye]||ye),ye}o(Ie,"lex");for(var Ee,we,Me,$e,de,rt,ke={},Fe,He,at,qe;;){if(Me=O[O.length-1],this.defaultActions[Me]?$e=this.defaultActions[Me]:((Ee===null||typeof Ee>"u")&&(Ee=Ie()),$e=V[Me]&&V[Me][Ee]),typeof $e>"u"||!$e.length||!$e[0]){var Ue="";qe=[];for(Fe in V[Me])this.terminals_[Fe]&&Fe>Y&&qe.push("'"+this.terminals_[Fe]+"'");te.showPosition?Ue="Parse error on line "+(j+1)+`:
-`+te.showPosition()+`
-Expecting `+qe.join(", ")+", got '"+(this.terminals_[Ee]||Ee)+"'":Ue="Parse error on line "+(j+1)+": Unexpected "+(Ee==ae?"end of input":"'"+(this.terminals_[Ee]||Ee)+"'"),this.parseError(Ue,{text:te.match,token:this.terminals_[Ee]||Ee,line:te.yylineno,loc:Te,expected:qe})}if($e[0]instanceof Array&&$e.length>1)throw new Error("Parse Error: multiple actions possible at state: "+Me+", token: "+Ee);switch($e[0]){case 1:O.push(Ee),G.push(te.yytext),F.push(te.yylloc),O.push($e[1]),Ee=null,we?(Ee=we,we=null):(U=te.yyleng,H=te.yytext,j=te.yylineno,Te=te.yylloc,Q>0&&Q--);break;case 2:if(He=this.productions_[$e[1]][1],ke.$=G[G.length-He],ke._$={first_line:F[F.length-(He||1)].first_line,last_line:F[F.length-1].last_line,first_column:F[F.length-(He||1)].first_column,last_column:F[F.length-1].last_column},ue&&(ke._$.range=[F[F.length-(He||1)].range[0],F[F.length-1].range[1]]),rt=this.performAction.apply(ke,[H,U,j,re.yy,$e[1],G,F].concat(J)),typeof rt<"u")return rt;He&&(O=O.slice(0,-1*He*2),G=G.slice(0,-1*He),F=F.slice(0,-1*He)),O.push(this.productions_[$e[1]][0]),G.push(ke.$),F.push(ke._$),at=V[O[O.length-2]][O[O.length-1]],O.push(at);break;case 3:return!0}}return!0},"parse")},_=(function(){var M={EOF:1,parseError:o(function(B,O){if(this.yy.parser)this.yy.parser.parseError(B,O);else throw new Error(B)},"parseError"),setInput:o(function(L,B){return this.yy=B||this.yy||{},this._input=L,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},"setInput"),input:o(function(){var L=this._input[0];this.yytext+=L,this.yyleng++,this.offset++,this.match+=L,this.matched+=L;var B=L.match(/(?:\r\n?|\n).*/g);return B?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),L},"input"),unput:o(function(L){var B=L.length,O=L.split(/(?:\r\n?|\n)/g);this._input=L+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-B),this.offset-=B;var $=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),O.length-1&&(this.yylineno-=O.length-1);var G=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:O?(O.length===$.length?this.yylloc.first_column:0)+$[$.length-O.length].length-O[0].length:this.yylloc.first_column-B},this.options.ranges&&(this.yylloc.range=[G[0],G[0]+this.yyleng-B]),this.yyleng=this.yytext.length,this},"unput"),more:o(function(){return this._more=!0,this},"more"),reject:o(function(){if(this.options.backtrack_lexer)this._backtrack=!0;else return this.parseError("Lexical error on line "+(this.yylineno+1)+`. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).
-`+this.showPosition(),{text:"",token:null,line:this.yylineno});return this},"reject"),less:o(function(L){this.unput(this.match.slice(L))},"less"),pastInput:o(function(){var L=this.matched.substr(0,this.matched.length-this.match.length);return(L.length>20?"...":"")+L.substr(-20).replace(/\n/g,"")},"pastInput"),upcomingInput:o(function(){var L=this.match;return L.length<20&&(L+=this._input.substr(0,20-L.length)),(L.substr(0,20)+(L.length>20?"...":"")).replace(/\n/g,"")},"upcomingInput"),showPosition:o(function(){var L=this.pastInput(),B=new Array(L.length+1).join("-");return L+this.upcomingInput()+`
-`+B+"^"},"showPosition"),test_match:o(function(L,B){var O,$,G;if(this.options.backtrack_lexer&&(G={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(G.yylloc.range=this.yylloc.range.slice(0))),$=L[0].match(/(?:\r\n?|\n).*/g),$&&(this.yylineno+=$.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:$?$[$.length-1].length-$[$.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+L[0].length},this.yytext+=L[0],this.match+=L[0],this.matches=L,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(L[0].length),this.matched+=L[0],O=this.performAction.call(this,this.yy,this,B,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),O)return O;if(this._backtrack){for(var F in G)this[F]=G[F];return!1}return!1},"test_match"),next:o(function(){if(this.done)return this.EOF;this._input||(this.done=!0);var L,B,O,$;this._more||(this.yytext="",this.match="");for(var G=this._currentRules(),F=0;F<G.length;F++)if(O=this._input.match(this.rules[G[F]]),O&&(!B||O[0].length>B[0].length)){if(B=O,$=F,this.options.backtrack_lexer){if(L=this.test_match(O,G[F]),L!==!1)return L;if(this._backtrack){B=!1;continue}else return!1}else if(!this.options.flex)break}return B?(L=this.test_match(B,G[$]),L!==!1?L:!1):this._input===""?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+`. Unrecognized text.
-`+this.showPosition(),{text:"",token:null,line:this.yylineno})},"next"),lex:o(function(){var B=this.next();return B||this.lex()},"lex"),begin:o(function(B){this.conditionStack.push(B)},"begin"),popState:o(function(){var B=this.conditionStack.length-1;return B>0?this.conditionStack.pop():this.conditionStack[0]},"popState"),_currentRules:o(function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},"_currentRules"),topState:o(function(B){return B=this.conditionStack.length-1-Math.abs(B||0),B>=0?this.conditionStack[B]:"INITIAL"},"topState"),pushState:o(function(B){this.begin(B)},"pushState"),stateStackSize:o(function(){return this.conditionStack.length},"stateStackSize"),options:{"case-insensitive":!0},performAction:o(function(B,O,$,G){var F=G;switch($){case 0:break;case 1:break;case 2:return this.popState(),34;break;case 3:return this.popState(),34;break;case 4:return 34;case 5:break;case 6:return 10;case 7:return this.pushState("acc_title"),19;break;case 8:return this.popState(),"acc_title_value";break;case 9:return this.pushState("acc_descr"),21;break;case 10:return this.popState(),"acc_descr_value";break;case 11:this.pushState("acc_descr_multiline");break;case 12:this.popState();break;case 13:return"acc_descr_multiline_value";case 14:return 5;case 15:return 5;case 16:return 8;case 17:return this.pushState("axis_data"),"X_AXIS";break;case 18:return this.pushState("axis_data"),"Y_AXIS";break;case 19:return this.pushState("axis_band_data"),24;break;case 20:return 31;case 21:return this.pushState("data"),16;break;case 22:return this.pushState("data"),18;break;case 23:return this.pushState("data_inner"),24;break;case 24:return 27;case 25:return this.popState(),26;break;case 26:this.popState();break;case 27:this.pushState("string");break;case 28:this.popState();break;case 29:return"STR";case 30:return 24;case 31:return 26;case 32:return 43;case 33:return"COLON";case 34:return 44;case 35:return 28;case 36:return 45;case 37:return 46;case 38:return 48;case 39:return 50;case 40:return 47;case 41:return 41;case 42:return 49;case 43:return 42;case 44:break;case 45:return 35;case 46:return 36}},"anonymous"),rules:[/^(?:%%(?!\{)[^\n]*)/i,/^(?:[^\}]%%[^\n]*)/i,/^(?:(\r?\n))/i,/^(?:(\r?\n))/i,/^(?:[\n\r]+)/i,/^(?:%%[^\n]*)/i,/^(?:title\b)/i,/^(?:accTitle\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*\{\s*)/i,/^(?:\})/i,/^(?:[^\}]*)/i,/^(?:xychart-beta\b)/i,/^(?:xychart\b)/i,/^(?:(?:vertical|horizontal))/i,/^(?:x-axis\b)/i,/^(?:y-axis\b)/i,/^(?:\[)/i,/^(?:-->)/i,/^(?:line\b)/i,/^(?:bar\b)/i,/^(?:\[)/i,/^(?:[+-]?(?:\d+(?:\.\d+)?|\.\d+))/i,/^(?:\])/i,/^(?:(?:`\)                                    \{ this\.pushState\(md_string\); \}\n<md_string>\(\?:\(\?!`"\)\.\)\+                  \{ return MD_STR; \}\n<md_string>\(\?:`))/i,/^(?:["])/i,/^(?:["])/i,/^(?:[^"]*)/i,/^(?:\[)/i,/^(?:\])/i,/^(?:[A-Za-z]+)/i,/^(?::)/i,/^(?:\+)/i,/^(?:,)/i,/^(?:=)/i,/^(?:\*)/i,/^(?:#)/i,/^(?:[\_])/i,/^(?:\.)/i,/^(?:&)/i,/^(?:-)/i,/^(?:[0-9]+)/i,/^(?:\s+)/i,/^(?:;)/i,/^(?:$)/i],conditions:{data_inner:{rules:[0,1,4,5,6,7,9,11,14,15,16,17,18,21,22,24,25,26,27,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46],inclusive:!0},data:{rules:[0,1,3,4,5,6,7,9,11,14,15,16,17,18,21,22,23,26,27,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46],inclusive:!0},axis_band_data:{rules:[0,1,4,5,6,7,9,11,14,15,16,17,18,21,22,25,26,27,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46],inclusive:!0},axis_data:{rules:[0,1,2,4,5,6,7,9,11,14,15,16,17,18,19,20,21,22,24,26,27,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46],inclusive:!0},acc_descr_multiline:{rules:[12,13],inclusive:!1},acc_descr:{rules:[10],inclusive:!1},acc_title:{rules:[8],inclusive:!1},title:{rules:[],inclusive:!1},md_string:{rules:[],inclusive:!1},string:{rules:[28,29],inclusive:!1},INITIAL:{rules:[0,1,4,5,6,7,9,11,14,15,16,17,18,21,22,26,27,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46],inclusive:!0}}};return M})();D.lexer=_;function R(){this.yy={}}return o(R,"Parser"),R.prototype=D,D.Parser=R,new R})();HV.parser=HV;TAe=HV});function YV(e){return e.type==="bar"}function N6(e){return e.type==="band"}function vy(e){return e.type==="linear"}var I6=z(()=>{"use strict";o(YV,"isBarPlot");o(N6,"isBandAxisData");o(vy,"isLinearAxisData")});var xy,jV=z(()=>{"use strict";_s();xy=class{constructor(t){this.parentGroup=t}static{o(this,"TextDimensionCalculatorWithFont")}getMaxDimension(t,r){if(!this.parentGroup)return{width:t.reduce((a,s)=>Math.max(s.length,a),0)*r,height:r};let i={width:0,height:0},n=this.parentGroup.append("g").attr("visibility","hidden").attr("font-size",r);for(let a of t){let s=Are(n,1,a),l=s?s.width:a.length*r,u=s?s.height:r;i.width=Math.max(i.width,l),i.height=Math.max(i.height,u)}return n.remove(),i}}});var by,XV=z(()=>{"use strict";by=class{constructor(t,r,i,n){this.axisConfig=t;this.title=r;this.textDimensionCalculator=i;this.axisThemeConfig=n;this.boundingRect={x:0,y:0,width:0,height:0};this.axisPosition="left";this.showTitle=!1;this.showLabel=!1;this.showTick=!1;this.showAxisLine=!1;this.outerPadding=0;this.titleTextHeight=0;this.labelTextHeight=0;this.range=[0,10],this.boundingRect={x:0,y:0,width:0,height:0},this.axisPosition="left"}static{o(this,"BaseAxis")}setRange(t){this.range=t,this.axisPosition==="left"||this.axisPosition==="right"?this.boundingRect.height=t[1]-t[0]:this.boundingRect.width=t[1]-t[0],this.recalculateScale()}getRange(){return[this.range[0]+this.outerPadding,this.range[1]-this.outerPadding]}setAxisPosition(t){this.axisPosition=t,this.setRange(this.range)}getTickDistance(){let t=this.getRange();return Math.abs(t[0]-t[1])/this.getTickValues().length}getAxisOuterPadding(){return this.outerPadding}getLabelDimension(){return this.textDimensionCalculator.getMaxDimension(this.getTickValues().map(t=>t.toString()),this.axisConfig.labelFontSize)}recalculateOuterPaddingToDrawBar(){.7*this.getTickDistance()>this.outerPadding*2&&(this.outerPadding=Math.floor(.7*this.getTickDistance()/2)),this.recalculateScale()}calculateSpaceIfDrawnHorizontally(t){let r=t.height;if(this.axisConfig.showAxisLine&&r>this.axisConfig.axisLineWidth&&(r-=this.axisConfig.axisLineWidth,this.showAxisLine=!0),this.axisConfig.showLabel){let i=this.getLabelDimension(),n=.2*t.width;this.outerPadding=Math.min(i.width/2,n);let a=i.height+this.axisConfig.labelPadding*2;this.labelTextHeight=i.height,a<=r&&(r-=a,this.showLabel=!0)}if(this.axisConfig.showTick&&r>=this.axisConfig.tickLength&&(this.showTick=!0,r-=this.axisConfig.tickLength),this.axisConfig.showTitle&&this.title){let i=this.textDimensionCalculator.getMaxDimension([this.title],this.axisConfig.titleFontSize),n=i.height+this.axisConfig.titlePadding*2;this.titleTextHeight=i.height,n<=r&&(r-=n,this.showTitle=!0)}this.boundingRect.width=t.width,this.boundingRect.height=t.height-r}calculateSpaceIfDrawnVertical(t){let r=t.width;if(this.axisConfig.showAxisLine&&r>this.axisConfig.axisLineWidth&&(r-=this.axisConfig.axisLineWidth,this.showAxisLine=!0),this.axisConfig.showLabel){let i=this.getLabelDimension(),n=.2*t.height;this.outerPadding=Math.min(i.height/2,n);let a=i.width+this.axisConfig.labelPadding*2;a<=r&&(r-=a,this.showLabel=!0)}if(this.axisConfig.showTick&&r>=this.axisConfig.tickLength&&(this.showTick=!0,r-=this.axisConfig.tickLength),this.axisConfig.showTitle&&this.title){let i=this.textDimensionCalculator.getMaxDimension([this.title],this.axisConfig.titleFontSize),n=i.height+this.axisConfig.titlePadding*2;this.titleTextHeight=i.height,n<=r&&(r-=n,this.showTitle=!0)}this.boundingRect.width=t.width-r,this.boundingRect.height=t.height}calculateSpace(t){return this.axisPosition==="left"||this.axisPosition==="right"?this.calculateSpaceIfDrawnVertical(t):this.calculateSpaceIfDrawnHorizontally(t),this.recalculateScale(),{width:this.boundingRect.width,height:this.boundingRect.height}}setBoundingBoxXY(t){this.boundingRect.x=t.x,this.boundingRect.y=t.y}getDrawableElementsForLeftAxis(){let t=[];if(this.showAxisLine){let r=this.boundingRect.x+this.boundingRect.width-this.axisConfig.axisLineWidth/2;t.push({type:"path",groupTexts:["left-axis","axisl-line"],data:[{path:`M ${r},${this.boundingRect.y} L ${r},${this.boundingRect.y+this.boundingRect.height} `,strokeFill:this.axisThemeConfig.axisLineColor,strokeWidth:this.axisConfig.axisLineWidth}]})}if(this.showLabel&&t.push({type:"text",groupTexts:["left-axis","label"],data:this.getTickValues().map(r=>({text:r.toString(),x:this.boundingRect.x+this.boundingRect.width-(this.showLabel?this.axisConfig.labelPadding:0)-(this.showTick?this.axisConfig.tickLength:0)-(this.showAxisLine?this.axisConfig.axisLineWidth:0),y:this.getScaleValue(r),fill:this.axisThemeConfig.labelColor,fontSize:this.axisConfig.labelFontSize,rotation:0,verticalPos:"middle",horizontalPos:"right"}))}),this.showTick){let r=this.boundingRect.x+this.boundingRect.width-(this.showAxisLine?this.axisConfig.axisLineWidth:0);t.push({type:"path",groupTexts:["left-axis","ticks"],data:this.getTickValues().map(i=>({path:`M ${r},${this.getScaleValue(i)} L ${r-this.axisConfig.tickLength},${this.getScaleValue(i)}`,strokeFill:this.axisThemeConfig.tickColor,strokeWidth:this.axisConfig.tickWidth}))})}return this.showTitle&&t.push({type:"text",groupTexts:["left-axis","title"],data:[{text:this.title,x:this.boundingRect.x+this.axisConfig.titlePadding,y:this.boundingRect.y+this.boundingRect.height/2,fill:this.axisThemeConfig.titleColor,fontSize:this.axisConfig.titleFontSize,rotation:270,verticalPos:"top",horizontalPos:"center"}]}),t}getDrawableElementsForBottomAxis(){let t=[];if(this.showAxisLine){let r=this.boundingRect.y+this.axisConfig.axisLineWidth/2;t.push({type:"path",groupTexts:["bottom-axis","axis-line"],data:[{path:`M ${this.boundingRect.x},${r} L ${this.boundingRect.x+this.boundingRect.width},${r}`,strokeFill:this.axisThemeConfig.axisLineColor,strokeWidth:this.axisConfig.axisLineWidth}]})}if(this.showLabel&&t.push({type:"text",groupTexts:["bottom-axis","label"],data:this.getTickValues().map(r=>({text:r.toString(),x:this.getScaleValue(r),y:this.boundingRect.y+this.axisConfig.labelPadding+(this.showTick?this.axisConfig.tickLength:0)+(this.showAxisLine?this.axisConfig.axisLineWidth:0),fill:this.axisThemeConfig.labelColor,fontSize:this.axisConfig.labelFontSize,rotation:0,verticalPos:"top",horizontalPos:"center"}))}),this.showTick){let r=this.boundingRect.y+(this.showAxisLine?this.axisConfig.axisLineWidth:0);t.push({type:"path",groupTexts:["bottom-axis","ticks"],data:this.getTickValues().map(i=>({path:`M ${this.getScaleValue(i)},${r} L ${this.getScaleValue(i)},${r+this.axisConfig.tickLength}`,strokeFill:this.axisThemeConfig.tickColor,strokeWidth:this.axisConfig.tickWidth}))})}return this.showTitle&&t.push({type:"text",groupTexts:["bottom-axis","title"],data:[{text:this.title,x:this.range[0]+(this.range[1]-this.range[0])/2,y:this.boundingRect.y+this.boundingRect.height-this.axisConfig.titlePadding-this.titleTextHeight,fill:this.axisThemeConfig.titleColor,fontSize:this.axisConfig.titleFontSize,rotation:0,verticalPos:"top",horizontalPos:"center"}]}),t}getDrawableElementsForTopAxis(){let t=[];if(this.showAxisLine){let r=this.boundingRect.y+this.boundingRect.height-this.axisConfig.axisLineWidth/2;t.push({type:"path",groupTexts:["top-axis","axis-line"],data:[{path:`M ${this.boundingRect.x},${r} L ${this.boundingRect.x+this.boundingRect.width},${r}`,strokeFill:this.axisThemeConfig.axisLineColor,strokeWidth:this.axisConfig.axisLineWidth}]})}if(this.showLabel&&t.push({type:"text",groupTexts:["top-axis","label"],data:this.getTickValues().map(r=>({text:r.toString(),x:this.getScaleValue(r),y:this.boundingRect.y+(this.showTitle?this.titleTextHeight+this.axisConfig.titlePadding*2:0)+this.axisConfig.labelPadding,fill:this.axisThemeConfig.labelColor,fontSize:this.axisConfig.labelFontSize,rotation:0,verticalPos:"top",horizontalPos:"center"}))}),this.showTick){let r=this.boundingRect.y;t.push({type:"path",groupTexts:["top-axis","ticks"],data:this.getTickValues().map(i=>({path:`M ${this.getScaleValue(i)},${r+this.boundingRect.height-(this.showAxisLine?this.axisConfig.axisLineWidth:0)} L ${this.getScaleValue(i)},${r+this.boundingRect.height-this.axisConfig.tickLength-(this.showAxisLine?this.axisConfig.axisLineWidth:0)}`,strokeFill:this.axisThemeConfig.tickColor,strokeWidth:this.axisConfig.tickWidth}))})}return this.showTitle&&t.push({type:"text",groupTexts:["top-axis","title"],data:[{text:this.title,x:this.boundingRect.x+this.boundingRect.width/2,y:this.boundingRect.y+this.axisConfig.titlePadding,fill:this.axisThemeConfig.titleColor,fontSize:this.axisConfig.titleFontSize,rotation:0,verticalPos:"top",horizontalPos:"center"}]}),t}getDrawableElements(){if(this.axisPosition==="left")return this.getDrawableElementsForLeftAxis();if(this.axisPosition==="right")throw Error("Drawing of right axis is not implemented");return this.axisPosition==="bottom"?this.getDrawableElementsForBottomAxis():this.axisPosition==="top"?this.getDrawableElementsForTopAxis():[]}}});var O6,kAe=z(()=>{"use strict";Rr();St();XV();O6=class extends by{static{o(this,"BandAxis")}constructor(t,r,i,n,a){super(t,n,a,r),this.categories=i,this.scale=ig().domain(this.categories).range(this.getRange())}setRange(t){super.setRange(t)}recalculateScale(){this.scale=ig().domain(this.categories).range(this.getRange()).paddingInner(1).paddingOuter(0).align(.5),Z.trace("BandAxis axis final categories, range: ",this.categories,this.getRange())}getTickValues(){return this.categories}getScaleValue(t){return this.scale(t)??this.getRange()[0]}}});var P6,wAe=z(()=>{"use strict";Rr();XV();P6=class extends by{static{o(this,"LinearAxis")}constructor(t,r,i,n,a){super(t,n,a,r),this.domain=i,this.scale=kl().domain(this.domain).range(this.getRange())}getTickValues(){return this.scale.ticks()}recalculateScale(){let t=[...this.domain];this.axisPosition==="left"&&t.reverse(),this.scale=kl().domain(t).range(this.getRange())}getScaleValue(t){return this.scale(t)}}});function KV(e,t,r,i){let n=new xy(i);return N6(e)?new O6(t,r,e.categories,e.title,n):new P6(t,r,[e.min,e.max],e.title,n)}var SAe=z(()=>{"use strict";I6();jV();kAe();wAe();o(KV,"getAxis")});function EAe(e,t,r,i){let n=new xy(i);return new ZV(n,e,t,r)}var ZV,AAe=z(()=>{"use strict";jV();ZV=class{constructor(t,r,i,n){this.textDimensionCalculator=t;this.chartConfig=r;this.chartData=i;this.chartThemeConfig=n;this.boundingRect={x:0,y:0,width:0,height:0},this.showChartTitle=!1}static{o(this,"ChartTitle")}setBoundingBoxXY(t){this.boundingRect.x=t.x,this.boundingRect.y=t.y}calculateSpace(t){let r=this.textDimensionCalculator.getMaxDimension([this.chartData.title],this.chartConfig.titleFontSize),i=Math.max(r.width,t.width),n=r.height+2*this.chartConfig.titlePadding;return r.width<=i&&r.height<=n&&this.chartConfig.showTitle&&this.chartData.title&&(this.boundingRect.width=i,this.boundingRect.height=n,this.showChartTitle=!0),{width:this.boundingRect.width,height:this.boundingRect.height}}getDrawableElements(){let t=[];return this.showChartTitle&&t.push({groupTexts:["chart-title"],type:"text",data:[{fontSize:this.chartConfig.titleFontSize,text:this.chartData.title,verticalPos:"middle",horizontalPos:"center",x:this.boundingRect.x+this.boundingRect.width/2,y:this.boundingRect.y+this.boundingRect.height/2,fill:this.chartThemeConfig.titleColor,rotation:0}]}),t}};o(EAe,"getChartTitleComponent")});var B6,_Ae=z(()=>{"use strict";Rr();B6=class{constructor(t,r,i,n,a){this.plotData=t;this.xAxis=r;this.yAxis=i;this.orientation=n;this.plotIndex=a}static{o(this,"LinePlot")}getDrawableElement(){let t=this.plotData.data.map(i=>[this.xAxis.getScaleValue(i[0]),this.yAxis.getScaleValue(i[1])]),r;return this.orientation==="horizontal"?r=_l().y(i=>i[0]).x(i=>i[1])(t):r=_l().x(i=>i[0]).y(i=>i[1])(t),r?[{groupTexts:["plot",`line-plot-${this.plotIndex}`],type:"path",data:[{path:r,strokeFill:this.plotData.strokeFill,strokeWidth:this.plotData.strokeWidth}]}]:[]}}});var F6,DAe=z(()=>{"use strict";F6=class{constructor(t,r,i,n,a,s){this.barData=t;this.boundingRect=r;this.xAxis=i;this.yAxis=n;this.orientation=a;this.plotIndex=s}static{o(this,"BarPlot")}getDrawableElement(){let t=this.barData.data.map(a=>[this.xAxis.getScaleValue(a[0]),this.yAxis.getScaleValue(a[1])]),i=Math.min(this.xAxis.getAxisOuterPadding()*2,this.xAxis.getTickDistance())*(1-.05),n=i/2;return this.orientation==="horizontal"?[{groupTexts:["plot",`bar-plot-${this.plotIndex}`],type:"rect",data:t.map(a=>({x:this.boundingRect.x,y:a[0]-n,height:i,width:a[1]-this.boundingRect.x,fill:this.barData.fill,strokeWidth:0,strokeFill:this.barData.fill}))}]:[{groupTexts:["plot",`bar-plot-${this.plotIndex}`],type:"rect",data:t.map(a=>({x:a[0]-n,y:a[1],width:i,height:this.boundingRect.y+this.boundingRect.height-a[1],fill:this.barData.fill,strokeWidth:0,strokeFill:this.barData.fill}))}]}}});function RAe(e,t,r){return new QV(e,t,r)}var QV,LAe=z(()=>{"use strict";_Ae();DAe();QV=class{constructor(t,r,i){this.chartConfig=t;this.chartData=r;this.chartThemeConfig=i;this.boundingRect={x:0,y:0,width:0,height:0}}static{o(this,"BasePlot")}setAxes(t,r){this.xAxis=t,this.yAxis=r}setBoundingBoxXY(t){this.boundingRect.x=t.x,this.boundingRect.y=t.y}calculateSpace(t){return this.boundingRect.width=t.width,this.boundingRect.height=t.height,{width:this.boundingRect.width,height:this.boundingRect.height}}getDrawableElements(){if(!(this.xAxis&&this.yAxis))throw Error("Axes must be passed to render Plots");let t=[];for(let[r,i]of this.chartData.plots.entries())switch(i.type){case"line":{let n=new B6(i,this.xAxis,this.yAxis,this.chartConfig.chartOrientation,r);t.push(...n.getDrawableElement())}break;case"bar":{let n=new F6(i,this.boundingRect,this.xAxis,this.yAxis,this.chartConfig.chartOrientation,r);t.push(...n.getDrawableElement())}break}return t}};o(RAe,"getPlotComponent")});var $6,MAe=z(()=>{"use strict";SAe();AAe();LAe();I6();$6=class{constructor(t,r,i,n){this.chartConfig=t;this.chartData=r;this.componentStore={title:EAe(t,r,i,n),plot:RAe(t,r,i),xAxis:KV(r.xAxis,t.xAxis,{titleColor:i.xAxisTitleColor,labelColor:i.xAxisLabelColor,tickColor:i.xAxisTickColor,axisLineColor:i.xAxisLineColor},n),yAxis:KV(r.yAxis,t.yAxis,{titleColor:i.yAxisTitleColor,labelColor:i.yAxisLabelColor,tickColor:i.yAxisTickColor,axisLineColor:i.yAxisLineColor},n)}}static{o(this,"Orchestrator")}calculateVerticalSpace(){let t=this.chartConfig.width,r=this.chartConfig.height,i=0,n=0,a=Math.floor(t*this.chartConfig.plotReservedSpacePercent/100),s=Math.floor(r*this.chartConfig.plotReservedSpacePercent/100),l=this.componentStore.plot.calculateSpace({width:a,height:s});t-=l.width,r-=l.height,l=this.componentStore.title.calculateSpace({width:this.chartConfig.width,height:r}),n=l.height,r-=l.height,this.componentStore.xAxis.setAxisPosition("bottom"),l=this.componentStore.xAxis.calculateSpace({width:t,height:r}),r-=l.height,this.componentStore.yAxis.setAxisPosition("left"),l=this.componentStore.yAxis.calculateSpace({width:t,height:r}),i=l.width,t-=l.width,t>0&&(a+=t,t=0),r>0&&(s+=r,r=0),this.componentStore.plot.calculateSpace({width:a,height:s}),this.componentStore.plot.setBoundingBoxXY({x:i,y:n}),this.componentStore.xAxis.setRange([i,i+a]),this.componentStore.xAxis.setBoundingBoxXY({x:i,y:n+s}),this.componentStore.yAxis.setRange([n,n+s]),this.componentStore.yAxis.setBoundingBoxXY({x:0,y:n}),this.chartData.plots.some(u=>YV(u))&&this.componentStore.xAxis.recalculateOuterPaddingToDrawBar()}calculateHorizontalSpace(){let t=this.chartConfig.width,r=this.chartConfig.height,i=0,n=0,a=0,s=Math.floor(t*this.chartConfig.plotReservedSpacePercent/100),l=Math.floor(r*this.chartConfig.plotReservedSpacePercent/100),u=this.componentStore.plot.calculateSpace({width:s,height:l});t-=u.width,r-=u.height,u=this.componentStore.title.calculateSpace({width:this.chartConfig.width,height:r}),i=u.height,r-=u.height,this.componentStore.xAxis.setAxisPosition("left"),u=this.componentStore.xAxis.calculateSpace({width:t,height:r}),t-=u.width,n=u.width,this.componentStore.yAxis.setAxisPosition("top"),u=this.componentStore.yAxis.calculateSpace({width:t,height:r}),r-=u.height,a=i+u.height,t>0&&(s+=t,t=0),r>0&&(l+=r,r=0),this.componentStore.plot.calculateSpace({width:s,height:l}),this.componentStore.plot.setBoundingBoxXY({x:n,y:a}),this.componentStore.yAxis.setRange([n,n+s]),this.componentStore.yAxis.setBoundingBoxXY({x:n,y:i}),this.componentStore.xAxis.setRange([a,a+l]),this.componentStore.xAxis.setBoundingBoxXY({x:0,y:a}),this.chartData.plots.some(h=>YV(h))&&this.componentStore.xAxis.recalculateOuterPaddingToDrawBar()}calculateSpace(){this.chartConfig.chartOrientation==="horizontal"?this.calculateHorizontalSpace():this.calculateVerticalSpace()}getDrawableElement(){this.calculateSpace();let t=[];this.componentStore.plot.setAxes(this.componentStore.xAxis,this.componentStore.yAxis);for(let r of Object.values(this.componentStore))t.push(...r.getDrawableElements());return t}}});var z6,NAe=z(()=>{"use strict";MAe();z6=class{static{o(this,"XYChartBuilder")}static build(t,r,i,n){return new $6(t,r,i,n).getDrawableElement()}}});function OAe(){let e=Ao(),t=Nt();return Gr(e.xyChart,t.themeVariables.xyChart)}function PAe(){let e=Nt();return Gr(or.xyChart,e.xyChart)}function BAe(){return{yAxis:{type:"linear",title:"",min:1/0,max:-1/0},xAxis:{type:"band",title:"",categories:[]},title:"",plots:[]}}function tW(e){let t=Nt();return fr(e.trim(),t)}function Z2t(e){IAe=e}function Q2t(e){e==="horizontal"?HT.chartOrientation="horizontal":HT.chartOrientation="vertical"}function J2t(e){fi.xAxis.title=tW(e.text)}function FAe(e,t){fi.xAxis={type:"linear",title:fi.xAxis.title,min:e,max:t},G6=!0}function eTt(e){fi.xAxis={type:"band",title:fi.xAxis.title,categories:e.map(t=>tW(t.text))},G6=!0}function tTt(e){fi.yAxis.title=tW(e.text)}function rTt(e,t){fi.yAxis={type:"linear",title:fi.yAxis.title,min:e,max:t},eW=!0}function iTt(e){let t=Math.min(...e),r=Math.max(...e),i=vy(fi.yAxis)?fi.yAxis.min:1/0,n=vy(fi.yAxis)?fi.yAxis.max:-1/0;fi.yAxis={type:"linear",title:fi.yAxis.title,min:Math.min(i,t),max:Math.max(n,r)}}function $Ae(e){let t=[];if(e.length===0)return t;if(!G6){let r=vy(fi.xAxis)?fi.xAxis.min:1/0,i=vy(fi.xAxis)?fi.xAxis.max:-1/0;FAe(Math.min(r,1),Math.max(i,e.length))}if(eW||iTt(e),N6(fi.xAxis)&&(t=fi.xAxis.categories.map((r,i)=>[r,e[i]])),vy(fi.xAxis)){let r=fi.xAxis.min,i=fi.xAxis.max,n=(i-r)/(e.length-1),a=[];for(let s=r;s<=i;s+=n)a.push(`${s}`);t=a.map((s,l)=>[s,e[l]])}return t}function zAe(e){return JV[e===0?0:e%JV.length]}function nTt(e,t){let r=$Ae(t);fi.plots.push({type:"line",strokeFill:zAe(UT),strokeWidth:2,data:r}),UT++}function aTt(e,t){let r=$Ae(t);fi.plots.push({type:"bar",fill:zAe(UT),data:r}),UT++}function sTt(){if(fi.plots.length===0)throw Error("No Plot to render, please provide a plot with some data");return fi.title=Er(),z6.build(HT,fi,YT,IAe)}function oTt(){return YT}function lTt(){return HT}function cTt(){return fi}var UT,IAe,HT,YT,fi,JV,G6,eW,uTt,GAe,VAe=z(()=>{"use strict";br();Bn();$f();Xt();Ir();Ci();NAe();I6();UT=0,HT=PAe(),YT=OAe(),fi=BAe(),JV=YT.plotColorPalette.split(",").map(e=>e.trim()),G6=!1,eW=!1;o(OAe,"getChartDefaultThemeConfig");o(PAe,"getChartDefaultConfig");o(BAe,"getChartDefaultData");o(tW,"textSanitizer");o(Z2t,"setTmpSVGG");o(Q2t,"setOrientation");o(J2t,"setXAxisTitle");o(FAe,"setXAxisRangeData");o(eTt,"setXAxisBand");o(tTt,"setYAxisTitle");o(rTt,"setYAxisRangeData");o(iTt,"setYAxisRangeFromPlotData");o($Ae,"transformDataWithoutCategory");o(zAe,"getPlotColorFromPalette");o(nTt,"setLineData");o(aTt,"setBarData");o(sTt,"getDrawableElem");o(oTt,"getChartThemeConfig");o(lTt,"getChartConfig");o(cTt,"getXYChartData");uTt=o(function(){gr(),UT=0,HT=PAe(),fi=BAe(),YT=OAe(),JV=YT.plotColorPalette.split(",").map(e=>e.trim()),G6=!1,eW=!1},"clear"),GAe={getDrawableElem:sTt,clear:uTt,setAccTitle:Cr,getAccTitle:kr,setDiagramTitle:Ar,getDiagramTitle:Er,getAccDescription:Sr,setAccDescription:wr,setOrientation:Q2t,setXAxisTitle:J2t,setXAxisRangeData:FAe,setXAxisBand:eTt,setYAxisTitle:tTt,setYAxisRangeData:rTt,setLineData:nTt,setBarData:aTt,setTmpSVGG:Z2t,getChartThemeConfig:oTt,getChartConfig:lTt,getXYChartData:cTt}});var hTt,WAe,qAe=z(()=>{"use strict";St();ps();Di();hTt=o((e,t,r,i)=>{let n=i.db,a=n.getChartThemeConfig(),s=n.getChartConfig(),l=n.getXYChartData().plots[0].data.map(T=>T[1]);function u(T){return T==="top"?"text-before-edge":"middle"}o(u,"getDominantBaseLine");function h(T){return T==="left"?"start":T==="right"?"end":"middle"}o(h,"getTextAnchor");function d(T){return`translate(${T.x}, ${T.y}) rotate(${T.rotation||0})`}o(d,"getTextTransformation"),Z.debug(`Rendering xychart chart
-`+e);let f=bi(t),p=f.append("g").attr("class","main"),m=p.append("rect").attr("width",s.width).attr("height",s.height).attr("class","background");Br(f,s.height,s.width,!0),f.attr("viewBox",`0 0 ${s.width} ${s.height}`),m.attr("fill",a.backgroundColor),n.setTmpSVGG(f.append("g").attr("class","mermaid-tmp-group"));let g=n.getDrawableElem(),y={};function v(T){let w=p,C="";for(let[k]of T.entries()){let E=p;k>0&&y[C]&&(E=y[C]),C+=T[k],w=y[C],w||(w=y[C]=E.append("g").attr("class",T[k]))}return w}o(v,"getGroup");for(let T of g){if(T.data.length===0)continue;let w=v(T.groupTexts);switch(T.type){case"rect":if(w.selectAll("rect").data(T.data).enter().append("rect").attr("x",C=>C.x).attr("y",C=>C.y).attr("width",C=>C.width).attr("height",C=>C.height).attr("fill",C=>C.fill).attr("stroke",C=>C.strokeFill).attr("stroke-width",C=>C.strokeWidth),s.showDataLabel){let C=s.showDataLabelOutsideBar;if(s.chartOrientation==="horizontal"){let N=function(_,R){let{data:M,label:L}=_;return R*L.length*.7<=M.width-10};var x=N;o(N,"fitsHorizontally");let k=.7,E=10,A=T.data.map((_,R)=>({data:_,label:l[R].toString()})).filter(_=>_.data.width>0&&_.data.height>0),P=A.map(_=>{let{data:R}=_,M=R.height*.7;for(;!N(_,M)&&M>0;)M-=1;return M}),I=Math.floor(Math.min(...P)),D=o(_=>C?_.data.x+_.data.width+10:_.data.x+_.data.width-10,"determineLabelXPosition");w.selectAll("text").data(A).enter().append("text").attr("x",D).attr("y",_=>_.data.y+_.data.height/2).attr("text-anchor",C?"start":"end").attr("dominant-baseline","middle").attr("fill",a.dataLabelColor).attr("font-size",`${I}px`).text(_=>_.label)}else{let A=function(D,_,R){let{data:M,label:L}=D,O=_*L.length*.7,$=M.x+M.width/2,G=$-O/2,F=$+O/2,V=G>=M.x&&F<=M.x+M.width,H=M.y+R+_<=M.y+M.height;return V&&H};var b=A;o(A,"fitsInBar");let k=10,E=T.data.map((D,_)=>({data:D,label:l[_].toString()})).filter(D=>D.data.width>0&&D.data.height>0),N=E.map(D=>{let{data:_,label:R}=D,M=_.width/(R.length*.7);for(;!A(D,M,10)&&M>0;)M-=1;return M}),P=Math.floor(Math.min(...N)),I=o(D=>C?D.data.y-10:D.data.y+10,"determineLabelYPosition");w.selectAll("text").data(E).enter().append("text").attr("x",D=>D.data.x+D.data.width/2).attr("y",I).attr("text-anchor","middle").attr("dominant-baseline",C?"auto":"hanging").attr("fill",a.dataLabelColor).attr("font-size",`${P}px`).text(D=>D.label)}}break;case"text":w.selectAll("text").data(T.data).enter().append("text").attr("x",0).attr("y",0).attr("fill",C=>C.fill).attr("font-size",C=>C.fontSize).attr("dominant-baseline",C=>u(C.verticalPos)).attr("text-anchor",C=>h(C.horizontalPos)).attr("transform",C=>d(C)).text(C=>C.text);break;case"path":w.selectAll("path").data(T.data).enter().append("path").attr("d",C=>C.path).attr("fill",C=>C.fill?C.fill:"none").attr("stroke",C=>C.strokeFill).attr("stroke-width",C=>C.strokeWidth);break}}},"draw"),WAe={draw:hTt}});var UAe={};xr(UAe,{diagram:()=>dTt});var dTt,HAe=z(()=>{"use strict";CAe();VAe();qAe();dTt={parser:TAe,db:GAe,renderer:WAe}});var rW,XAe,KAe=z(()=>{"use strict";rW=(function(){var e=o(function(ye,ve,ie,fe){for(ie=ie||{},fe=ye.length;fe--;ie[ye[fe]]=ve);return ie},"o"),t=[1,3],r=[1,4],i=[1,5],n=[1,6],a=[5,6,8,9,11,13,21,22,23,24,41,42,43,44,45,46,54,72,74,77,89,90],s=[1,22],l=[2,7],u=[1,26],h=[1,27],d=[1,28],f=[1,29],p=[1,33],m=[1,34],g=[1,35],y=[1,36],v=[1,37],x=[1,38],b=[1,24],T=[1,31],w=[1,32],C=[1,30],k=[1,39],E=[1,40],A=[5,8,9,11,13,21,22,23,24,41,42,43,44,45,46,54,72,74,77,89,90],N=[1,61],P=[89,90],I=[5,8,9,11,13,21,22,23,24,27,29,41,42,43,44,45,46,54,61,63,72,74,75,76,77,80,81,82,83,84,85,86,87,88,89,90],D=[27,29],_=[1,70],R=[1,71],M=[1,72],L=[1,73],B=[1,74],O=[1,75],$=[1,76],G=[1,83],F=[1,80],V=[1,84],H=[1,85],j=[1,86],U=[1,87],Q=[1,88],Y=[1,89],ae=[1,90],J=[1,91],te=[1,92],re=[5,8,9,11,13,21,22,23,24,27,41,42,43,44,45,46,54,72,74,75,76,77,80,81,82,83,84,85,86,87,88,89,90],ee=[63,64],Te=[1,101],ue=[5,8,9,11,13,21,22,23,24,41,42,43,44,45,46,54,72,74,76,77,89,90],De=[5,8,9,11,13,21,22,23,24,41,42,43,44,45,46,54,72,74,75,76,77,80,81,82,83,84,85,86,87,88,89,90],Ie=[1,110],Ee=[1,106],we=[1,107],Me=[1,108],$e=[1,109],de=[1,111],rt=[1,116],ke=[1,117],Fe=[1,114],He=[1,115],at={trace:o(function(){},"trace"),yy:{},symbols_:{error:2,start:3,directive:4,NEWLINE:5,RD:6,diagram:7,EOF:8,acc_title:9,acc_title_value:10,acc_descr:11,acc_descr_value:12,acc_descr_multiline_value:13,requirementDef:14,elementDef:15,relationshipDef:16,direction:17,styleStatement:18,classDefStatement:19,classStatement:20,direction_tb:21,direction_bt:22,direction_rl:23,direction_lr:24,requirementType:25,requirementName:26,STRUCT_START:27,requirementBody:28,STYLE_SEPARATOR:29,idList:30,ID:31,COLONSEP:32,id:33,TEXT:34,text:35,RISK:36,riskLevel:37,VERIFYMTHD:38,verifyType:39,STRUCT_STOP:40,REQUIREMENT:41,FUNCTIONAL_REQUIREMENT:42,INTERFACE_REQUIREMENT:43,PERFORMANCE_REQUIREMENT:44,PHYSICAL_REQUIREMENT:45,DESIGN_CONSTRAINT:46,LOW_RISK:47,MED_RISK:48,HIGH_RISK:49,VERIFY_ANALYSIS:50,VERIFY_DEMONSTRATION:51,VERIFY_INSPECTION:52,VERIFY_TEST:53,ELEMENT:54,elementName:55,elementBody:56,TYPE:57,type:58,DOCREF:59,ref:60,END_ARROW_L:61,relationship:62,LINE:63,END_ARROW_R:64,CONTAINS:65,COPIES:66,DERIVES:67,SATISFIES:68,VERIFIES:69,REFINES:70,TRACES:71,CLASSDEF:72,stylesOpt:73,CLASS:74,ALPHA:75,COMMA:76,STYLE:77,style:78,styleComponent:79,NUM:80,COLON:81,UNIT:82,SPACE:83,BRKT:84,PCT:85,MINUS:86,LABEL:87,SEMICOLON:88,unqString:89,qString:90,$accept:0,$end:1},terminals_:{2:"error",5:"NEWLINE",6:"RD",8:"EOF",9:"acc_title",10:"acc_title_value",11:"acc_descr",12:"acc_descr_value",13:"acc_descr_multiline_value",21:"direction_tb",22:"direction_bt",23:"direction_rl",24:"direction_lr",27:"STRUCT_START",29:"STYLE_SEPARATOR",31:"ID",32:"COLONSEP",34:"TEXT",36:"RISK",38:"VERIFYMTHD",40:"STRUCT_STOP",41:"REQUIREMENT",42:"FUNCTIONAL_REQUIREMENT",43:"INTERFACE_REQUIREMENT",44:"PERFORMANCE_REQUIREMENT",45:"PHYSICAL_REQUIREMENT",46:"DESIGN_CONSTRAINT",47:"LOW_RISK",48:"MED_RISK",49:"HIGH_RISK",50:"VERIFY_ANALYSIS",51:"VERIFY_DEMONSTRATION",52:"VERIFY_INSPECTION",53:"VERIFY_TEST",54:"ELEMENT",57:"TYPE",59:"DOCREF",61:"END_ARROW_L",63:"LINE",64:"END_ARROW_R",65:"CONTAINS",66:"COPIES",67:"DERIVES",68:"SATISFIES",69:"VERIFIES",70:"REFINES",71:"TRACES",72:"CLASSDEF",74:"CLASS",75:"ALPHA",76:"COMMA",77:"STYLE",80:"NUM",81:"COLON",82:"UNIT",83:"SPACE",84:"BRKT",85:"PCT",86:"MINUS",87:"LABEL",88:"SEMICOLON",89:"unqString",90:"qString"},productions_:[0,[3,3],[3,2],[3,4],[4,2],[4,2],[4,1],[7,0],[7,2],[7,2],[7,2],[7,2],[7,2],[7,2],[7,2],[7,2],[7,2],[17,1],[17,1],[17,1],[17,1],[14,5],[14,7],[28,5],[28,5],[28,5],[28,5],[28,2],[28,1],[25,1],[25,1],[25,1],[25,1],[25,1],[25,1],[37,1],[37,1],[37,1],[39,1],[39,1],[39,1],[39,1],[15,5],[15,7],[56,5],[56,5],[56,2],[56,1],[16,5],[16,5],[62,1],[62,1],[62,1],[62,1],[62,1],[62,1],[62,1],[19,3],[20,3],[20,3],[30,1],[30,3],[30,1],[30,3],[18,3],[73,1],[73,3],[78,1],[78,2],[79,1],[79,1],[79,1],[79,1],[79,1],[79,1],[79,1],[79,1],[79,1],[79,1],[26,1],[26,1],[33,1],[33,1],[35,1],[35,1],[55,1],[55,1],[58,1],[58,1],[60,1],[60,1]],performAction:o(function(ve,ie,fe,W,ce,K,Re){var xe=K.length-1;switch(ce){case 4:this.$=K[xe].trim(),W.setAccTitle(this.$);break;case 5:case 6:this.$=K[xe].trim(),W.setAccDescription(this.$);break;case 7:this.$=[];break;case 17:W.setDirection("TB");break;case 18:W.setDirection("BT");break;case 19:W.setDirection("RL");break;case 20:W.setDirection("LR");break;case 21:W.addRequirement(K[xe-3],K[xe-4]);break;case 22:W.addRequirement(K[xe-5],K[xe-6]),W.setClass([K[xe-5]],K[xe-3]);break;case 23:W.setNewReqId(K[xe-2]);break;case 24:W.setNewReqText(K[xe-2]);break;case 25:W.setNewReqRisk(K[xe-2]);break;case 26:W.setNewReqVerifyMethod(K[xe-2]);break;case 29:this.$=W.RequirementType.REQUIREMENT;break;case 30:this.$=W.RequirementType.FUNCTIONAL_REQUIREMENT;break;case 31:this.$=W.RequirementType.INTERFACE_REQUIREMENT;break;case 32:this.$=W.RequirementType.PERFORMANCE_REQUIREMENT;break;case 33:this.$=W.RequirementType.PHYSICAL_REQUIREMENT;break;case 34:this.$=W.RequirementType.DESIGN_CONSTRAINT;break;case 35:this.$=W.RiskLevel.LOW_RISK;break;case 36:this.$=W.RiskLevel.MED_RISK;break;case 37:this.$=W.RiskLevel.HIGH_RISK;break;case 38:this.$=W.VerifyType.VERIFY_ANALYSIS;break;case 39:this.$=W.VerifyType.VERIFY_DEMONSTRATION;break;case 40:this.$=W.VerifyType.VERIFY_INSPECTION;break;case 41:this.$=W.VerifyType.VERIFY_TEST;break;case 42:W.addElement(K[xe-3]);break;case 43:W.addElement(K[xe-5]),W.setClass([K[xe-5]],K[xe-3]);break;case 44:W.setNewElementType(K[xe-2]);break;case 45:W.setNewElementDocRef(K[xe-2]);break;case 48:W.addRelationship(K[xe-2],K[xe],K[xe-4]);break;case 49:W.addRelationship(K[xe-2],K[xe-4],K[xe]);break;case 50:this.$=W.Relationships.CONTAINS;break;case 51:this.$=W.Relationships.COPIES;break;case 52:this.$=W.Relationships.DERIVES;break;case 53:this.$=W.Relationships.SATISFIES;break;case 54:this.$=W.Relationships.VERIFIES;break;case 55:this.$=W.Relationships.REFINES;break;case 56:this.$=W.Relationships.TRACES;break;case 57:this.$=K[xe-2],W.defineClass(K[xe-1],K[xe]);break;case 58:W.setClass(K[xe-1],K[xe]);break;case 59:W.setClass([K[xe-2]],K[xe]);break;case 60:case 62:this.$=[K[xe]];break;case 61:case 63:this.$=K[xe-2].concat([K[xe]]);break;case 64:this.$=K[xe-2],W.setCssStyle(K[xe-1],K[xe]);break;case 65:this.$=[K[xe]];break;case 66:K[xe-2].push(K[xe]),this.$=K[xe-2];break;case 68:this.$=K[xe-1]+K[xe];break}},"anonymous"),table:[{3:1,4:2,6:t,9:r,11:i,13:n},{1:[3]},{3:8,4:2,5:[1,7],6:t,9:r,11:i,13:n},{5:[1,9]},{10:[1,10]},{12:[1,11]},e(a,[2,6]),{3:12,4:2,6:t,9:r,11:i,13:n},{1:[2,2]},{4:17,5:s,7:13,8:l,9:r,11:i,13:n,14:14,15:15,16:16,17:18,18:19,19:20,20:21,21:u,22:h,23:d,24:f,25:23,33:25,41:p,42:m,43:g,44:y,45:v,46:x,54:b,72:T,74:w,77:C,89:k,90:E},e(a,[2,4]),e(a,[2,5]),{1:[2,1]},{8:[1,41]},{4:17,5:s,7:42,8:l,9:r,11:i,13:n,14:14,15:15,16:16,17:18,18:19,19:20,20:21,21:u,22:h,23:d,24:f,25:23,33:25,41:p,42:m,43:g,44:y,45:v,46:x,54:b,72:T,74:w,77:C,89:k,90:E},{4:17,5:s,7:43,8:l,9:r,11:i,13:n,14:14,15:15,16:16,17:18,18:19,19:20,20:21,21:u,22:h,23:d,24:f,25:23,33:25,41:p,42:m,43:g,44:y,45:v,46:x,54:b,72:T,74:w,77:C,89:k,90:E},{4:17,5:s,7:44,8:l,9:r,11:i,13:n,14:14,15:15,16:16,17:18,18:19,19:20,20:21,21:u,22:h,23:d,24:f,25:23,33:25,41:p,42:m,43:g,44:y,45:v,46:x,54:b,72:T,74:w,77:C,89:k,90:E},{4:17,5:s,7:45,8:l,9:r,11:i,13:n,14:14,15:15,16:16,17:18,18:19,19:20,20:21,21:u,22:h,23:d,24:f,25:23,33:25,41:p,42:m,43:g,44:y,45:v,46:x,54:b,72:T,74:w,77:C,89:k,90:E},{4:17,5:s,7:46,8:l,9:r,11:i,13:n,14:14,15:15,16:16,17:18,18:19,19:20,20:21,21:u,22:h,23:d,24:f,25:23,33:25,41:p,42:m,43:g,44:y,45:v,46:x,54:b,72:T,74:w,77:C,89:k,90:E},{4:17,5:s,7:47,8:l,9:r,11:i,13:n,14:14,15:15,16:16,17:18,18:19,19:20,20:21,21:u,22:h,23:d,24:f,25:23,33:25,41:p,42:m,43:g,44:y,45:v,46:x,54:b,72:T,74:w,77:C,89:k,90:E},{4:17,5:s,7:48,8:l,9:r,11:i,13:n,14:14,15:15,16:16,17:18,18:19,19:20,20:21,21:u,22:h,23:d,24:f,25:23,33:25,41:p,42:m,43:g,44:y,45:v,46:x,54:b,72:T,74:w,77:C,89:k,90:E},{4:17,5:s,7:49,8:l,9:r,11:i,13:n,14:14,15:15,16:16,17:18,18:19,19:20,20:21,21:u,22:h,23:d,24:f,25:23,33:25,41:p,42:m,43:g,44:y,45:v,46:x,54:b,72:T,74:w,77:C,89:k,90:E},{4:17,5:s,7:50,8:l,9:r,11:i,13:n,14:14,15:15,16:16,17:18,18:19,19:20,20:21,21:u,22:h,23:d,24:f,25:23,33:25,41:p,42:m,43:g,44:y,45:v,46:x,54:b,72:T,74:w,77:C,89:k,90:E},{26:51,89:[1,52],90:[1,53]},{55:54,89:[1,55],90:[1,56]},{29:[1,59],61:[1,57],63:[1,58]},e(A,[2,17]),e(A,[2,18]),e(A,[2,19]),e(A,[2,20]),{30:60,33:62,75:N,89:k,90:E},{30:63,33:62,75:N,89:k,90:E},{30:64,33:62,75:N,89:k,90:E},e(P,[2,29]),e(P,[2,30]),e(P,[2,31]),e(P,[2,32]),e(P,[2,33]),e(P,[2,34]),e(I,[2,81]),e(I,[2,82]),{1:[2,3]},{8:[2,8]},{8:[2,9]},{8:[2,10]},{8:[2,11]},{8:[2,12]},{8:[2,13]},{8:[2,14]},{8:[2,15]},{8:[2,16]},{27:[1,65],29:[1,66]},e(D,[2,79]),e(D,[2,80]),{27:[1,67],29:[1,68]},e(D,[2,85]),e(D,[2,86]),{62:69,65:_,66:R,67:M,68:L,69:B,70:O,71:$},{62:77,65:_,66:R,67:M,68:L,69:B,70:O,71:$},{30:78,33:62,75:N,89:k,90:E},{73:79,75:G,76:F,78:81,79:82,80:V,81:H,82:j,83:U,84:Q,85:Y,86:ae,87:J,88:te},e(re,[2,60]),e(re,[2,62]),{73:93,75:G,76:F,78:81,79:82,80:V,81:H,82:j,83:U,84:Q,85:Y,86:ae,87:J,88:te},{30:94,33:62,75:N,76:F,89:k,90:E},{5:[1,95]},{30:96,33:62,75:N,89:k,90:E},{5:[1,97]},{30:98,33:62,75:N,89:k,90:E},{63:[1,99]},e(ee,[2,50]),e(ee,[2,51]),e(ee,[2,52]),e(ee,[2,53]),e(ee,[2,54]),e(ee,[2,55]),e(ee,[2,56]),{64:[1,100]},e(A,[2,59],{76:F}),e(A,[2,64],{76:Te}),{33:103,75:[1,102],89:k,90:E},e(ue,[2,65],{79:104,75:G,80:V,81:H,82:j,83:U,84:Q,85:Y,86:ae,87:J,88:te}),e(De,[2,67]),e(De,[2,69]),e(De,[2,70]),e(De,[2,71]),e(De,[2,72]),e(De,[2,73]),e(De,[2,74]),e(De,[2,75]),e(De,[2,76]),e(De,[2,77]),e(De,[2,78]),e(A,[2,57],{76:Te}),e(A,[2,58],{76:F}),{5:Ie,28:105,31:Ee,34:we,36:Me,38:$e,40:de},{27:[1,112],76:F},{5:rt,40:ke,56:113,57:Fe,59:He},{27:[1,118],76:F},{33:119,89:k,90:E},{33:120,89:k,90:E},{75:G,78:121,79:82,80:V,81:H,82:j,83:U,84:Q,85:Y,86:ae,87:J,88:te},e(re,[2,61]),e(re,[2,63]),e(De,[2,68]),e(A,[2,21]),{32:[1,122]},{32:[1,123]},{32:[1,124]},{32:[1,125]},{5:Ie,28:126,31:Ee,34:we,36:Me,38:$e,40:de},e(A,[2,28]),{5:[1,127]},e(A,[2,42]),{32:[1,128]},{32:[1,129]},{5:rt,40:ke,56:130,57:Fe,59:He},e(A,[2,47]),{5:[1,131]},e(A,[2,48]),e(A,[2,49]),e(ue,[2,66],{79:104,75:G,80:V,81:H,82:j,83:U,84:Q,85:Y,86:ae,87:J,88:te}),{33:132,89:k,90:E},{35:133,89:[1,134],90:[1,135]},{37:136,47:[1,137],48:[1,138],49:[1,139]},{39:140,50:[1,141],51:[1,142],52:[1,143],53:[1,144]},e(A,[2,27]),{5:Ie,28:145,31:Ee,34:we,36:Me,38:$e,40:de},{58:146,89:[1,147],90:[1,148]},{60:149,89:[1,150],90:[1,151]},e(A,[2,46]),{5:rt,40:ke,56:152,57:Fe,59:He},{5:[1,153]},{5:[1,154]},{5:[2,83]},{5:[2,84]},{5:[1,155]},{5:[2,35]},{5:[2,36]},{5:[2,37]},{5:[1,156]},{5:[2,38]},{5:[2,39]},{5:[2,40]},{5:[2,41]},e(A,[2,22]),{5:[1,157]},{5:[2,87]},{5:[2,88]},{5:[1,158]},{5:[2,89]},{5:[2,90]},e(A,[2,43]),{5:Ie,28:159,31:Ee,34:we,36:Me,38:$e,40:de},{5:Ie,28:160,31:Ee,34:we,36:Me,38:$e,40:de},{5:Ie,28:161,31:Ee,34:we,36:Me,38:$e,40:de},{5:Ie,28:162,31:Ee,34:we,36:Me,38:$e,40:de},{5:rt,40:ke,56:163,57:Fe,59:He},{5:rt,40:ke,56:164,57:Fe,59:He},e(A,[2,23]),e(A,[2,24]),e(A,[2,25]),e(A,[2,26]),e(A,[2,44]),e(A,[2,45])],defaultActions:{8:[2,2],12:[2,1],41:[2,3],42:[2,8],43:[2,9],44:[2,10],45:[2,11],46:[2,12],47:[2,13],48:[2,14],49:[2,15],50:[2,16],134:[2,83],135:[2,84],137:[2,35],138:[2,36],139:[2,37],141:[2,38],142:[2,39],143:[2,40],144:[2,41],147:[2,87],148:[2,88],150:[2,89],151:[2,90]},parseError:o(function(ve,ie){if(ie.recoverable)this.trace(ve);else{var fe=new Error(ve);throw fe.hash=ie,fe}},"parseError"),parse:o(function(ve){var ie=this,fe=[0],W=[],ce=[null],K=[],Re=this.table,xe="",Oe=0,be=0,Be=0,Ae=2,Ve=1,Pe=K.slice.call(arguments,1),Ye=Object.create(this.lexer),le={yy:{}};for(var st in this.yy)Object.prototype.hasOwnProperty.call(this.yy,st)&&(le.yy[st]=this.yy[st]);Ye.setInput(ve,le.yy),le.yy.lexer=Ye,le.yy.parser=this,typeof Ye.yylloc>"u"&&(Ye.yylloc={});var me=Ye.yylloc;K.push(me);var ot=Ye.options&&Ye.options.ranges;typeof le.yy.parseError=="function"?this.parseError=le.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function kt(Rt){fe.length=fe.length-2*Rt,ce.length=ce.length-Rt,K.length=K.length-Rt}o(kt,"popStack");function Gt(){var Rt;return Rt=W.pop()||Ye.lex()||Ve,typeof Rt!="number"&&(Rt instanceof Array&&(W=Rt,Rt=W.pop()),Rt=ie.symbols_[Rt]||Rt),Rt}o(Gt,"lex");for(var Tt,Et,yt,oe,ht,gt,et={},pe,Qe,nt,dt;;){if(yt=fe[fe.length-1],this.defaultActions[yt]?oe=this.defaultActions[yt]:((Tt===null||typeof Tt>"u")&&(Tt=Gt()),oe=Re[yt]&&Re[yt][Tt]),typeof oe>"u"||!oe.length||!oe[0]){var Ft="";dt=[];for(pe in Re[yt])this.terminals_[pe]&&pe>Ae&&dt.push("'"+this.terminals_[pe]+"'");Ye.showPosition?Ft="Parse error on line "+(Oe+1)+`:
-`+Ye.showPosition()+`
-Expecting `+dt.join(", ")+", got '"+(this.terminals_[Tt]||Tt)+"'":Ft="Parse error on line "+(Oe+1)+": Unexpected "+(Tt==Ve?"end of input":"'"+(this.terminals_[Tt]||Tt)+"'"),this.parseError(Ft,{text:Ye.match,token:this.terminals_[Tt]||Tt,line:Ye.yylineno,loc:me,expected:dt})}if(oe[0]instanceof Array&&oe.length>1)throw new Error("Parse Error: multiple actions possible at state: "+yt+", token: "+Tt);switch(oe[0]){case 1:fe.push(Tt),ce.push(Ye.yytext),K.push(Ye.yylloc),fe.push(oe[1]),Tt=null,Et?(Tt=Et,Et=null):(be=Ye.yyleng,xe=Ye.yytext,Oe=Ye.yylineno,me=Ye.yylloc,Be>0&&Be--);break;case 2:if(Qe=this.productions_[oe[1]][1],et.$=ce[ce.length-Qe],et._$={first_line:K[K.length-(Qe||1)].first_line,last_line:K[K.length-1].last_line,first_column:K[K.length-(Qe||1)].first_column,last_column:K[K.length-1].last_column},ot&&(et._$.range=[K[K.length-(Qe||1)].range[0],K[K.length-1].range[1]]),gt=this.performAction.apply(et,[xe,be,Oe,le.yy,oe[1],ce,K].concat(Pe)),typeof gt<"u")return gt;Qe&&(fe=fe.slice(0,-1*Qe*2),ce=ce.slice(0,-1*Qe),K=K.slice(0,-1*Qe)),fe.push(this.productions_[oe[1]][0]),ce.push(et.$),K.push(et._$),nt=Re[fe[fe.length-2]][fe[fe.length-1]],fe.push(nt);break;case 3:return!0}}return!0},"parse")},qe=(function(){var ye={EOF:1,parseError:o(function(ie,fe){if(this.yy.parser)this.yy.parser.parseError(ie,fe);else throw new Error(ie)},"parseError"),setInput:o(function(ve,ie){return this.yy=ie||this.yy||{},this._input=ve,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},"setInput"),input:o(function(){var ve=this._input[0];this.yytext+=ve,this.yyleng++,this.offset++,this.match+=ve,this.matched+=ve;var ie=ve.match(/(?:\r\n?|\n).*/g);return ie?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),ve},"input"),unput:o(function(ve){var ie=ve.length,fe=ve.split(/(?:\r\n?|\n)/g);this._input=ve+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-ie),this.offset-=ie;var W=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),fe.length-1&&(this.yylineno-=fe.length-1);var ce=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:fe?(fe.length===W.length?this.yylloc.first_column:0)+W[W.length-fe.length].length-fe[0].length:this.yylloc.first_column-ie},this.options.ranges&&(this.yylloc.range=[ce[0],ce[0]+this.yyleng-ie]),this.yyleng=this.yytext.length,this},"unput"),more:o(function(){return this._more=!0,this},"more"),reject:o(function(){if(this.options.backtrack_lexer)this._backtrack=!0;else return this.parseError("Lexical error on line "+(this.yylineno+1)+`. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).
-`+this.showPosition(),{text:"",token:null,line:this.yylineno});return this},"reject"),less:o(function(ve){this.unput(this.match.slice(ve))},"less"),pastInput:o(function(){var ve=this.matched.substr(0,this.matched.length-this.match.length);return(ve.length>20?"...":"")+ve.substr(-20).replace(/\n/g,"")},"pastInput"),upcomingInput:o(function(){var ve=this.match;return ve.length<20&&(ve+=this._input.substr(0,20-ve.length)),(ve.substr(0,20)+(ve.length>20?"...":"")).replace(/\n/g,"")},"upcomingInput"),showPosition:o(function(){var ve=this.pastInput(),ie=new Array(ve.length+1).join("-");return ve+this.upcomingInput()+`
-`+ie+"^"},"showPosition"),test_match:o(function(ve,ie){var fe,W,ce;if(this.options.backtrack_lexer&&(ce={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(ce.yylloc.range=this.yylloc.range.slice(0))),W=ve[0].match(/(?:\r\n?|\n).*/g),W&&(this.yylineno+=W.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:W?W[W.length-1].length-W[W.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+ve[0].length},this.yytext+=ve[0],this.match+=ve[0],this.matches=ve,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(ve[0].length),this.matched+=ve[0],fe=this.performAction.call(this,this.yy,this,ie,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),fe)return fe;if(this._backtrack){for(var K in ce)this[K]=ce[K];return!1}return!1},"test_match"),next:o(function(){if(this.done)return this.EOF;this._input||(this.done=!0);var ve,ie,fe,W;this._more||(this.yytext="",this.match="");for(var ce=this._currentRules(),K=0;K<ce.length;K++)if(fe=this._input.match(this.rules[ce[K]]),fe&&(!ie||fe[0].length>ie[0].length)){if(ie=fe,W=K,this.options.backtrack_lexer){if(ve=this.test_match(fe,ce[K]),ve!==!1)return ve;if(this._backtrack){ie=!1;continue}else return!1}else if(!this.options.flex)break}return ie?(ve=this.test_match(ie,ce[W]),ve!==!1?ve:!1):this._input===""?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+`. Unrecognized text.
-`+this.showPosition(),{text:"",token:null,line:this.yylineno})},"next"),lex:o(function(){var ie=this.next();return ie||this.lex()},"lex"),begin:o(function(ie){this.conditionStack.push(ie)},"begin"),popState:o(function(){var ie=this.conditionStack.length-1;return ie>0?this.conditionStack.pop():this.conditionStack[0]},"popState"),_currentRules:o(function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},"_currentRules"),topState:o(function(ie){return ie=this.conditionStack.length-1-Math.abs(ie||0),ie>=0?this.conditionStack[ie]:"INITIAL"},"topState"),pushState:o(function(ie){this.begin(ie)},"pushState"),stateStackSize:o(function(){return this.conditionStack.length},"stateStackSize"),options:{"case-insensitive":!0},performAction:o(function(ie,fe,W,ce){var K=ce;switch(W){case 0:return"title";case 1:return this.begin("acc_title"),9;break;case 2:return this.popState(),"acc_title_value";break;case 3:return this.begin("acc_descr"),11;break;case 4:return this.popState(),"acc_descr_value";break;case 5:this.begin("acc_descr_multiline");break;case 6:this.popState();break;case 7:return"acc_descr_multiline_value";case 8:return 21;case 9:return 22;case 10:return 23;case 11:return 24;case 12:return 5;case 13:break;case 14:break;case 15:break;case 16:return 8;case 17:return 6;case 18:return 27;case 19:return 40;case 20:return 29;case 21:return 32;case 22:return 31;case 23:return 34;case 24:return 36;case 25:return 38;case 26:return 41;case 27:return 42;case 28:return 43;case 29:return 44;case 30:return 45;case 31:return 46;case 32:return 47;case 33:return 48;case 34:return 49;case 35:return 50;case 36:return 51;case 37:return 52;case 38:return 53;case 39:return 54;case 40:return 65;case 41:return 66;case 42:return 67;case 43:return 68;case 44:return 69;case 45:return 70;case 46:return 71;case 47:return 57;case 48:return 59;case 49:return this.begin("style"),77;break;case 50:return 75;case 51:return 81;case 52:return 88;case 53:return"PERCENT";case 54:return 86;case 55:return 84;case 56:break;case 57:this.begin("string");break;case 58:this.popState();break;case 59:return this.begin("style"),72;break;case 60:return this.begin("style"),74;break;case 61:return 61;case 62:return 64;case 63:return 63;case 64:this.begin("string");break;case 65:this.popState();break;case 66:return"qString";case 67:return fe.yytext=fe.yytext.trim(),89;break;case 68:return 75;case 69:return 80;case 70:return 76}},"anonymous"),rules:[/^(?:title\s[^#\n;]+)/i,/^(?:accTitle\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*\{\s*)/i,/^(?:[\}])/i,/^(?:[^\}]*)/i,/^(?:.*direction\s+TB[^\n]*)/i,/^(?:.*direction\s+BT[^\n]*)/i,/^(?:.*direction\s+RL[^\n]*)/i,/^(?:.*direction\s+LR[^\n]*)/i,/^(?:(\r?\n)+)/i,/^(?:\s+)/i,/^(?:#[^\n]*)/i,/^(?:%[^\n]*)/i,/^(?:$)/i,/^(?:requirementDiagram\b)/i,/^(?:\{)/i,/^(?:\})/i,/^(?::{3})/i,/^(?::)/i,/^(?:id\b)/i,/^(?:text\b)/i,/^(?:risk\b)/i,/^(?:verifyMethod\b)/i,/^(?:requirement\b)/i,/^(?:functionalRequirement\b)/i,/^(?:interfaceRequirement\b)/i,/^(?:performanceRequirement\b)/i,/^(?:physicalRequirement\b)/i,/^(?:designConstraint\b)/i,/^(?:low\b)/i,/^(?:medium\b)/i,/^(?:high\b)/i,/^(?:analysis\b)/i,/^(?:demonstration\b)/i,/^(?:inspection\b)/i,/^(?:test\b)/i,/^(?:element\b)/i,/^(?:contains\b)/i,/^(?:copies\b)/i,/^(?:derives\b)/i,/^(?:satisfies\b)/i,/^(?:verifies\b)/i,/^(?:refines\b)/i,/^(?:traces\b)/i,/^(?:type\b)/i,/^(?:docref\b)/i,/^(?:style\b)/i,/^(?:\w+)/i,/^(?::)/i,/^(?:;)/i,/^(?:%)/i,/^(?:-)/i,/^(?:#)/i,/^(?: )/i,/^(?:["])/i,/^(?:\n)/i,/^(?:classDef\b)/i,/^(?:class\b)/i,/^(?:<-)/i,/^(?:->)/i,/^(?:-)/i,/^(?:["])/i,/^(?:["])/i,/^(?:[^"]*)/i,/^(?:[\w][^:,\r\n\{\<\>\-\=]*)/i,/^(?:\w+)/i,/^(?:[0-9]+)/i,/^(?:,)/i],conditions:{acc_descr_multiline:{rules:[6,7,68,69,70],inclusive:!1},acc_descr:{rules:[4,68,69,70],inclusive:!1},acc_title:{rules:[2,68,69,70],inclusive:!1},style:{rules:[50,51,52,53,54,55,56,57,58,68,69,70],inclusive:!1},unqString:{rules:[68,69,70],inclusive:!1},token:{rules:[68,69,70],inclusive:!1},string:{rules:[65,66,68,69,70],inclusive:!1},INITIAL:{rules:[0,1,3,5,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,59,60,61,62,63,64,67,68,69,70],inclusive:!0}}};return ye})();at.lexer=qe;function Ue(){this.yy={}}return o(Ue,"Parser"),Ue.prototype=at,at.Parser=Ue,new Ue})();rW.parser=rW;XAe=rW});var V6,ZAe=z(()=>{"use strict";Ut();St();Ci();V6=class{constructor(){this.relations=[];this.latestRequirement=this.getInitialRequirement();this.requirements=new Map;this.latestElement=this.getInitialElement();this.elements=new Map;this.classes=new Map;this.direction="TB";this.RequirementType={REQUIREMENT:"Requirement",FUNCTIONAL_REQUIREMENT:"Functional Requirement",INTERFACE_REQUIREMENT:"Interface Requirement",PERFORMANCE_REQUIREMENT:"Performance Requirement",PHYSICAL_REQUIREMENT:"Physical Requirement",DESIGN_CONSTRAINT:"Design Constraint"};this.RiskLevel={LOW_RISK:"Low",MED_RISK:"Medium",HIGH_RISK:"High"};this.VerifyType={VERIFY_ANALYSIS:"Analysis",VERIFY_DEMONSTRATION:"Demonstration",VERIFY_INSPECTION:"Inspection",VERIFY_TEST:"Test"};this.Relationships={CONTAINS:"contains",COPIES:"copies",DERIVES:"derives",SATISFIES:"satisfies",VERIFIES:"verifies",REFINES:"refines",TRACES:"traces"};this.setAccTitle=Cr;this.getAccTitle=kr;this.setAccDescription=wr;this.getAccDescription=Sr;this.setDiagramTitle=Ar;this.getDiagramTitle=Er;this.getConfig=o(()=>ge().requirement,"getConfig");this.clear(),this.setDirection=this.setDirection.bind(this),this.addRequirement=this.addRequirement.bind(this),this.setNewReqId=this.setNewReqId.bind(this),this.setNewReqRisk=this.setNewReqRisk.bind(this),this.setNewReqText=this.setNewReqText.bind(this),this.setNewReqVerifyMethod=this.setNewReqVerifyMethod.bind(this),this.addElement=this.addElement.bind(this),this.setNewElementType=this.setNewElementType.bind(this),this.setNewElementDocRef=this.setNewElementDocRef.bind(this),this.addRelationship=this.addRelationship.bind(this),this.setCssStyle=this.setCssStyle.bind(this),this.setClass=this.setClass.bind(this),this.defineClass=this.defineClass.bind(this),this.setAccTitle=this.setAccTitle.bind(this),this.setAccDescription=this.setAccDescription.bind(this)}static{o(this,"RequirementDB")}getDirection(){return this.direction}setDirection(t){this.direction=t}resetLatestRequirement(){this.latestRequirement=this.getInitialRequirement()}resetLatestElement(){this.latestElement=this.getInitialElement()}getInitialRequirement(){return{requirementId:"",text:"",risk:"",verifyMethod:"",name:"",type:"",cssStyles:[],classes:["default"]}}getInitialElement(){return{name:"",type:"",docRef:"",cssStyles:[],classes:["default"]}}addRequirement(t,r){return this.requirements.has(t)||this.requirements.set(t,{name:t,type:r,requirementId:this.latestRequirement.requirementId,text:this.latestRequirement.text,risk:this.latestRequirement.risk,verifyMethod:this.latestRequirement.verifyMethod,cssStyles:[],classes:["default"]}),this.resetLatestRequirement(),this.requirements.get(t)}getRequirements(){return this.requirements}setNewReqId(t){this.latestRequirement!==void 0&&(this.latestRequirement.requirementId=t)}setNewReqText(t){this.latestRequirement!==void 0&&(this.latestRequirement.text=t)}setNewReqRisk(t){this.latestRequirement!==void 0&&(this.latestRequirement.risk=t)}setNewReqVerifyMethod(t){this.latestRequirement!==void 0&&(this.latestRequirement.verifyMethod=t)}addElement(t){return this.elements.has(t)||(this.elements.set(t,{name:t,type:this.latestElement.type,docRef:this.latestElement.docRef,cssStyles:[],classes:["default"]}),Z.info("Added new element: ",t)),this.resetLatestElement(),this.elements.get(t)}getElements(){return this.elements}setNewElementType(t){this.latestElement!==void 0&&(this.latestElement.type=t)}setNewElementDocRef(t){this.latestElement!==void 0&&(this.latestElement.docRef=t)}addRelationship(t,r,i){this.relations.push({type:t,src:r,dst:i})}getRelationships(){return this.relations}clear(){this.relations=[],this.resetLatestRequirement(),this.requirements=new Map,this.resetLatestElement(),this.elements=new Map,this.classes=new Map,gr()}setCssStyle(t,r){for(let i of t){let n=this.requirements.get(i)??this.elements.get(i);if(!r||!n)return;for(let a of r)a.includes(",")?n.cssStyles.push(...a.split(",")):n.cssStyles.push(a)}}setClass(t,r){for(let i of t){let n=this.requirements.get(i)??this.elements.get(i);if(n)for(let a of r){n.classes.push(a);let s=this.classes.get(a)?.styles;s&&n.cssStyles.push(...s)}}}defineClass(t,r){for(let i of t){let n=this.classes.get(i);n===void 0&&(n={id:i,styles:[],textStyles:[]},this.classes.set(i,n)),r&&r.forEach(function(a){if(/color/.exec(a)){let s=a.replace("fill","bgFill");n.textStyles.push(s)}n.styles.push(a)}),this.requirements.forEach(a=>{a.classes.includes(i)&&a.cssStyles.push(...r.flatMap(s=>s.split(",")))}),this.elements.forEach(a=>{a.classes.includes(i)&&a.cssStyles.push(...r.flatMap(s=>s.split(",")))})}}getClasses(){return this.classes}getData(){let t=ge(),r=[],i=[];for(let n of this.requirements.values()){let a=n;a.id=n.name,a.cssStyles=n.cssStyles,a.cssClasses=n.classes.join(" "),a.shape="requirementBox",a.look=t.look,a.colorIndex=r.length,r.push(a)}for(let n of this.elements.values()){let a=n;a.shape="requirementBox",a.look=t.look,a.id=n.name,a.cssStyles=n.cssStyles,a.cssClasses=n.classes.join(" "),a.colorIndex=r.length,r.push(a)}for(let n of this.relations){let a=0,s=n.type===this.Relationships.CONTAINS,l={id:`${n.src}-${n.dst}-${a}`,start:this.requirements.get(n.src)?.name??this.elements.get(n.src)?.name,end:this.requirements.get(n.dst)?.name??this.elements.get(n.dst)?.name,label:`&lt;&lt;${n.type}&gt;&gt;`,classes:"relationshipLine",style:["fill:none",s?"":"stroke-dasharray: 10,7"],labelpos:"c",thickness:"normal",type:"normal",pattern:s?"normal":"dashed",arrowTypeStart:s?"requirement_contains":"",arrowTypeEnd:s?"":"requirement_arrow",look:t.look,labelType:"markdown"};i.push(l),a++}return{nodes:r,edges:i,other:{},config:t,direction:this.getDirection()}}}});var gTt,yTt,QAe,JAe=z(()=>{"use strict";br();gTt=o(e=>{let t=Nt(),{themeVariables:r,look:i}=t,{bkgColorArray:n,borderColorArray:a}=r;if(!a?.length)return"";let s="";for(let l=0;l<e.THEME_COLOR_LIMIT;l++)s+=`
+`,"getStyles"),U7e=Q5t});var J5t,eAt,j7e,X7e=F(()=>{"use strict";$r();Xt();vt();Ka();$n();Qt();J5t=o(e=>{let t=[...e.values()].reduce((i,a)=>i+a,0),r=[...e.entries()].map(([i,a])=>({label:i,value:a})).filter(i=>i.value/t*100>=1);return AE().value(i=>i.value).sort(null)(r)},"createPieArcs"),eAt=o((e,t,r,n)=>{Z.debug(`rendering pie chart
+`+e);let i=n.db,a=Ae(),s=qr(i.getConfig(),a.pie),l=40,u=18,h=4,d=450,f=d,p=xn(t),m=p.append("g");m.attr("transform","translate("+f/2+","+d/2+")");let{themeVariables:g}=a,[y]=As(g.pieOuterStrokeWidth);y??=2;let v=s.legendPosition,x=s.textPosition,b=s.donutHole>0&&s.donutHole<=.9?s.donutHole:0,T=Math.min(f,d)/2-l,k=ec().innerRadius(b*T).outerRadius(T),C=ec().innerRadius(T*x).outerRadius(T*x),w=m.append("g");w.append("circle").attr("cx",0).attr("cy",0).attr("r",T+y/2).attr("class","pieOuterCircle");let S=i.getSections(),R=J5t(S),L=[g.pie1,g.pie2,g.pie3,g.pie4,g.pie5,g.pie6,g.pie7,g.pie8,g.pie9,g.pie10,g.pie11,g.pie12],N=0;S.forEach(U=>{N+=U});let I=R.filter(U=>(U.data.value/N*100).toFixed(0)!=="0"),_=Oo(L).domain([...S.keys()]);w.selectAll("mySlices").data(I).enter().append("path").attr("d",k).attr("fill",U=>_(U.data.label)).attr("class",U=>{let oe="pieCircle";return s.highlightSlice==="hover"?oe+=" highlightedOnHover":s.highlightSlice===U.data.label&&(oe+=" highlighted"),oe}),w.selectAll("mySlices").data(I).enter().append("text").text(U=>(U.data.value/N*100).toFixed(0)+"%").attr("transform",U=>"translate("+C.centroid(U)+")").style("text-anchor","middle").attr("class","slice");let A=m.append("text").text(i.getDiagramTitle()).attr("x",0).attr("y",-(d-50)/2).attr("class","pieTitleText"),M=[...S.entries()].map(([U,oe])=>({label:U,value:oe})),D=m.selectAll(".legend").data(M).enter().append("g").attr("class","legend");D.append("rect").attr("width",u).attr("height",u).style("fill",U=>_(U.label)).style("stroke",U=>_(U.label)),D.append("text").attr("x",u+h).attr("y",u-h).text(U=>i.getShowData()?`${U.label} [${U.value}]`:U.label);let P=Math.max(...D.selectAll("text").nodes().map(U=>U?.getBoundingClientRect().width??0)),B=d,O=f+l,$=u+h,V=M.length*$;switch(v){case"center":D.attr("transform",(U,oe)=>{let te=$*M.length/2,le=-P/2-(u+h),ie=oe*$-te;return"translate("+le+","+ie+")"});break;case"top":B+=V,D.attr("transform",(U,oe)=>{let te=T,le=-P/2-(u+h),ie=oe*$-te;return`translate(${le}, ${ie})`}),w.attr("transform",()=>`translate(0, ${V+$})`);break;case"bottom":B+=V,D.attr("transform",(U,oe)=>{let te=-T-$,le=-P/2-(u+h),ie=oe*$-te;return"translate("+le+","+ie+")"});break;case"left":O+=u+h+P,D.attr("transform",(U,oe)=>{let te=$*M.length/2,le=-T-(u+h),ie=oe*$-te;return"translate("+le+","+ie+")"}),w.attr("transform",()=>`translate(${P+u+h}, 0)`);break;case"right":default:O+=u+h+P,D.attr("transform",(U,oe)=>{let te=$*M.length/2,le=12*u,ie=oe*$-te;return"translate("+le+","+ie+")"});break}let G=A.node()?.getBoundingClientRect().width??0,z=f/2-G/2,W=f/2+G/2,H=Math.min(0,z),Q=Math.max(O,W)-H;p.attr("viewBox",`${H} 0 ${Q} ${B}`),Wr(p,B,Q,s.useMaxWidth)},"draw"),j7e={draw:eAt}});var K7e={};ir(K7e,{diagram:()=>tAt});var tAt,Z7e=F(()=>{"use strict";H7e();WU();Y7e();X7e();tAt={parser:q7e,db:cL,renderer:j7e,styles:U7e}});var qU,J7e,e8e=F(()=>{"use strict";qU=(function(){var e=o(function(X,fe,K,qe){for(K=K||{},qe=X.length;qe--;K[X[qe]]=fe);return K},"o"),t=[1,3],r=[1,4],n=[1,5],i=[1,6],a=[1,7],s=[1,4,5,10,12,13,14,15,18,25,35,37,39,41,42,48,50,51,52,53,54,55,56,57,60,61,63,64,65,66,67],l=[1,4,5,10,12,13,14,15,18,25,28,35,37,39,41,42,48,50,51,52,53,54,55,56,57,60,61,63,64,65,66,67],u=[55,56,57],h=[2,36],d=[1,37],f=[1,36],p=[1,38],m=[1,35],g=[1,43],y=[1,41],v=[1,45],x=[1,14],b=[1,23],T=[1,18],k=[1,19],C=[1,20],w=[1,21],S=[1,22],R=[1,24],L=[1,25],N=[1,26],I=[1,27],_=[1,28],A=[1,29],M=[1,32],D=[1,33],P=[1,34],B=[1,39],O=[1,40],$=[1,42],V=[1,44],G=[1,63],z=[1,62],W=[4,5,8,10,12,13,14,15,18,44,47,49,55,56,57,63,64,65,66,67],H=[1,66],j=[1,67],Q=[1,68],U=[1,69],oe=[1,70],te=[1,71],le=[1,72],ie=[1,73],ae=[1,74],Re=[1,75],be=[1,76],Pe=[1,77],Ge=[4,5,6,7,8,9,10,11,12,13,14,15,18],Oe=[1,91],ue=[1,92],ye=[1,93],ke=[1,100],ce=[1,94],re=[1,97],J=[1,95],se=[1,96],ge=[1,98],Te=[1,99],we=[1,103],Me=[10,55,56,57],ve=[4,5,6,8,10,11,13,17,18,19,20,55,56,57],ne={trace:o(function(){},"trace"),yy:{},symbols_:{error:2,idStringToken:3,ALPHA:4,NUM:5,NODE_STRING:6,DOWN:7,MINUS:8,DEFAULT:9,COMMA:10,COLON:11,AMP:12,BRKT:13,MULT:14,UNICODE_TEXT:15,styleComponent:16,UNIT:17,SPACE:18,STYLE:19,PCT:20,idString:21,style:22,stylesOpt:23,classDefStatement:24,CLASSDEF:25,start:26,eol:27,QUADRANT:28,document:29,line:30,statement:31,axisDetails:32,quadrantDetails:33,points:34,title:35,title_value:36,acc_title:37,acc_title_value:38,acc_descr:39,acc_descr_value:40,acc_descr_multiline_value:41,section:42,text:43,point_start:44,point_x:45,point_y:46,class_name:47,"X-AXIS":48,"AXIS-TEXT-DELIMITER":49,"Y-AXIS":50,QUADRANT_1:51,QUADRANT_2:52,QUADRANT_3:53,QUADRANT_4:54,NEWLINE:55,SEMI:56,EOF:57,alphaNumToken:58,textNoTagsToken:59,STR:60,MD_STR:61,alphaNum:62,PUNCTUATION:63,PLUS:64,EQUALS:65,DOT:66,UNDERSCORE:67,$accept:0,$end:1},terminals_:{2:"error",4:"ALPHA",5:"NUM",6:"NODE_STRING",7:"DOWN",8:"MINUS",9:"DEFAULT",10:"COMMA",11:"COLON",12:"AMP",13:"BRKT",14:"MULT",15:"UNICODE_TEXT",17:"UNIT",18:"SPACE",19:"STYLE",20:"PCT",25:"CLASSDEF",28:"QUADRANT",35:"title",36:"title_value",37:"acc_title",38:"acc_title_value",39:"acc_descr",40:"acc_descr_value",41:"acc_descr_multiline_value",42:"section",44:"point_start",45:"point_x",46:"point_y",47:"class_name",48:"X-AXIS",49:"AXIS-TEXT-DELIMITER",50:"Y-AXIS",51:"QUADRANT_1",52:"QUADRANT_2",53:"QUADRANT_3",54:"QUADRANT_4",55:"NEWLINE",56:"SEMI",57:"EOF",60:"STR",61:"MD_STR",63:"PUNCTUATION",64:"PLUS",65:"EQUALS",66:"DOT",67:"UNDERSCORE"},productions_:[0,[3,1],[3,1],[3,1],[3,1],[3,1],[3,1],[3,1],[3,1],[3,1],[3,1],[3,1],[3,1],[16,1],[16,1],[16,1],[16,1],[16,1],[16,1],[16,1],[16,1],[16,1],[16,1],[21,1],[21,2],[22,1],[22,2],[23,1],[23,3],[24,5],[26,2],[26,2],[26,2],[29,0],[29,2],[30,2],[31,0],[31,1],[31,2],[31,1],[31,1],[31,1],[31,2],[31,2],[31,2],[31,1],[31,1],[34,4],[34,5],[34,5],[34,6],[32,4],[32,3],[32,2],[32,4],[32,3],[32,2],[33,2],[33,2],[33,2],[33,2],[27,1],[27,1],[27,1],[43,1],[43,2],[43,1],[43,1],[62,1],[62,2],[58,1],[58,1],[58,1],[58,1],[58,1],[58,1],[58,1],[58,1],[58,1],[58,1],[58,1],[58,1],[59,1],[59,1],[59,1]],performAction:o(function(fe,K,qe,_e,Be,Ne,He){var $e=Ne.length-1;switch(Be){case 23:this.$=Ne[$e];break;case 24:this.$=Ne[$e-1]+""+Ne[$e];break;case 26:this.$=Ne[$e-1]+Ne[$e];break;case 27:this.$=[Ne[$e].trim()];break;case 28:Ne[$e-2].push(Ne[$e].trim()),this.$=Ne[$e-2];break;case 29:this.$=Ne[$e-4],_e.addClass(Ne[$e-2],Ne[$e]);break;case 37:this.$=[];break;case 42:this.$=Ne[$e].trim(),_e.setDiagramTitle(this.$);break;case 43:this.$=Ne[$e].trim(),_e.setAccTitle(this.$);break;case 44:case 45:this.$=Ne[$e].trim(),_e.setAccDescription(this.$);break;case 46:_e.addSection(Ne[$e].substr(8)),this.$=Ne[$e].substr(8);break;case 47:_e.addPoint(Ne[$e-3],"",Ne[$e-1],Ne[$e],[]);break;case 48:_e.addPoint(Ne[$e-4],Ne[$e-3],Ne[$e-1],Ne[$e],[]);break;case 49:_e.addPoint(Ne[$e-4],"",Ne[$e-2],Ne[$e-1],Ne[$e]);break;case 50:_e.addPoint(Ne[$e-5],Ne[$e-4],Ne[$e-2],Ne[$e-1],Ne[$e]);break;case 51:_e.setXAxisLeftText(Ne[$e-2]),_e.setXAxisRightText(Ne[$e]);break;case 52:Ne[$e-1].text+=" \u27F6 ",_e.setXAxisLeftText(Ne[$e-1]);break;case 53:_e.setXAxisLeftText(Ne[$e]);break;case 54:_e.setYAxisBottomText(Ne[$e-2]),_e.setYAxisTopText(Ne[$e]);break;case 55:Ne[$e-1].text+=" \u27F6 ",_e.setYAxisBottomText(Ne[$e-1]);break;case 56:_e.setYAxisBottomText(Ne[$e]);break;case 57:_e.setQuadrant1Text(Ne[$e]);break;case 58:_e.setQuadrant2Text(Ne[$e]);break;case 59:_e.setQuadrant3Text(Ne[$e]);break;case 60:_e.setQuadrant4Text(Ne[$e]);break;case 64:this.$={text:Ne[$e],type:"text"};break;case 65:this.$={text:Ne[$e-1].text+""+Ne[$e],type:Ne[$e-1].type};break;case 66:this.$={text:Ne[$e],type:"text"};break;case 67:this.$={text:Ne[$e],type:"markdown"};break;case 68:this.$=Ne[$e];break;case 69:this.$=Ne[$e-1]+""+Ne[$e];break}},"anonymous"),table:[{18:t,26:1,27:2,28:r,55:n,56:i,57:a},{1:[3]},{18:t,26:8,27:2,28:r,55:n,56:i,57:a},{18:t,26:9,27:2,28:r,55:n,56:i,57:a},e(s,[2,33],{29:10}),e(l,[2,61]),e(l,[2,62]),e(l,[2,63]),{1:[2,30]},{1:[2,31]},e(u,h,{30:11,31:12,24:13,32:15,33:16,34:17,43:30,58:31,1:[2,32],4:d,5:f,10:p,12:m,13:g,14:y,15:v,18:x,25:b,35:T,37:k,39:C,41:w,42:S,48:R,50:L,51:N,52:I,53:_,54:A,60:M,61:D,63:P,64:B,65:O,66:$,67:V}),e(s,[2,34]),{27:46,55:n,56:i,57:a},e(u,[2,37]),e(u,h,{24:13,32:15,33:16,34:17,43:30,58:31,31:47,4:d,5:f,10:p,12:m,13:g,14:y,15:v,18:x,25:b,35:T,37:k,39:C,41:w,42:S,48:R,50:L,51:N,52:I,53:_,54:A,60:M,61:D,63:P,64:B,65:O,66:$,67:V}),e(u,[2,39]),e(u,[2,40]),e(u,[2,41]),{36:[1,48]},{38:[1,49]},{40:[1,50]},e(u,[2,45]),e(u,[2,46]),{18:[1,51]},{4:d,5:f,10:p,12:m,13:g,14:y,15:v,43:52,58:31,60:M,61:D,63:P,64:B,65:O,66:$,67:V},{4:d,5:f,10:p,12:m,13:g,14:y,15:v,43:53,58:31,60:M,61:D,63:P,64:B,65:O,66:$,67:V},{4:d,5:f,10:p,12:m,13:g,14:y,15:v,43:54,58:31,60:M,61:D,63:P,64:B,65:O,66:$,67:V},{4:d,5:f,10:p,12:m,13:g,14:y,15:v,43:55,58:31,60:M,61:D,63:P,64:B,65:O,66:$,67:V},{4:d,5:f,10:p,12:m,13:g,14:y,15:v,43:56,58:31,60:M,61:D,63:P,64:B,65:O,66:$,67:V},{4:d,5:f,10:p,12:m,13:g,14:y,15:v,43:57,58:31,60:M,61:D,63:P,64:B,65:O,66:$,67:V},{4:d,5:f,8:G,10:p,12:m,13:g,14:y,15:v,18:z,44:[1,58],47:[1,59],58:61,59:60,63:P,64:B,65:O,66:$,67:V},e(W,[2,64]),e(W,[2,66]),e(W,[2,67]),e(W,[2,70]),e(W,[2,71]),e(W,[2,72]),e(W,[2,73]),e(W,[2,74]),e(W,[2,75]),e(W,[2,76]),e(W,[2,77]),e(W,[2,78]),e(W,[2,79]),e(W,[2,80]),e(W,[2,81]),e(s,[2,35]),e(u,[2,38]),e(u,[2,42]),e(u,[2,43]),e(u,[2,44]),{3:65,4:H,5:j,6:Q,7:U,8:oe,9:te,10:le,11:ie,12:ae,13:Re,14:be,15:Pe,21:64},e(u,[2,53],{59:60,58:61,4:d,5:f,8:G,10:p,12:m,13:g,14:y,15:v,18:z,49:[1,78],63:P,64:B,65:O,66:$,67:V}),e(u,[2,56],{59:60,58:61,4:d,5:f,8:G,10:p,12:m,13:g,14:y,15:v,18:z,49:[1,79],63:P,64:B,65:O,66:$,67:V}),e(u,[2,57],{59:60,58:61,4:d,5:f,8:G,10:p,12:m,13:g,14:y,15:v,18:z,63:P,64:B,65:O,66:$,67:V}),e(u,[2,58],{59:60,58:61,4:d,5:f,8:G,10:p,12:m,13:g,14:y,15:v,18:z,63:P,64:B,65:O,66:$,67:V}),e(u,[2,59],{59:60,58:61,4:d,5:f,8:G,10:p,12:m,13:g,14:y,15:v,18:z,63:P,64:B,65:O,66:$,67:V}),e(u,[2,60],{59:60,58:61,4:d,5:f,8:G,10:p,12:m,13:g,14:y,15:v,18:z,63:P,64:B,65:O,66:$,67:V}),{45:[1,80]},{44:[1,81]},e(W,[2,65]),e(W,[2,82]),e(W,[2,83]),e(W,[2,84]),{3:83,4:H,5:j,6:Q,7:U,8:oe,9:te,10:le,11:ie,12:ae,13:Re,14:be,15:Pe,18:[1,82]},e(Ge,[2,23]),e(Ge,[2,1]),e(Ge,[2,2]),e(Ge,[2,3]),e(Ge,[2,4]),e(Ge,[2,5]),e(Ge,[2,6]),e(Ge,[2,7]),e(Ge,[2,8]),e(Ge,[2,9]),e(Ge,[2,10]),e(Ge,[2,11]),e(Ge,[2,12]),e(u,[2,52],{58:31,43:84,4:d,5:f,10:p,12:m,13:g,14:y,15:v,60:M,61:D,63:P,64:B,65:O,66:$,67:V}),e(u,[2,55],{58:31,43:85,4:d,5:f,10:p,12:m,13:g,14:y,15:v,60:M,61:D,63:P,64:B,65:O,66:$,67:V}),{46:[1,86]},{45:[1,87]},{4:Oe,5:ue,6:ye,8:ke,11:ce,13:re,16:90,17:J,18:se,19:ge,20:Te,22:89,23:88},e(Ge,[2,24]),e(u,[2,51],{59:60,58:61,4:d,5:f,8:G,10:p,12:m,13:g,14:y,15:v,18:z,63:P,64:B,65:O,66:$,67:V}),e(u,[2,54],{59:60,58:61,4:d,5:f,8:G,10:p,12:m,13:g,14:y,15:v,18:z,63:P,64:B,65:O,66:$,67:V}),e(u,[2,47],{22:89,16:90,23:101,4:Oe,5:ue,6:ye,8:ke,11:ce,13:re,17:J,18:se,19:ge,20:Te}),{46:[1,102]},e(u,[2,29],{10:we}),e(Me,[2,27],{16:104,4:Oe,5:ue,6:ye,8:ke,11:ce,13:re,17:J,18:se,19:ge,20:Te}),e(ve,[2,25]),e(ve,[2,13]),e(ve,[2,14]),e(ve,[2,15]),e(ve,[2,16]),e(ve,[2,17]),e(ve,[2,18]),e(ve,[2,19]),e(ve,[2,20]),e(ve,[2,21]),e(ve,[2,22]),e(u,[2,49],{10:we}),e(u,[2,48],{22:89,16:90,23:105,4:Oe,5:ue,6:ye,8:ke,11:ce,13:re,17:J,18:se,19:ge,20:Te}),{4:Oe,5:ue,6:ye,8:ke,11:ce,13:re,16:90,17:J,18:se,19:ge,20:Te,22:106},e(ve,[2,26]),e(u,[2,50],{10:we}),e(Me,[2,28],{16:104,4:Oe,5:ue,6:ye,8:ke,11:ce,13:re,17:J,18:se,19:ge,20:Te})],defaultActions:{8:[2,30],9:[2,31]},parseError:o(function(fe,K){if(K.recoverable)this.trace(fe);else{var qe=new Error(fe);throw qe.hash=K,qe}},"parseError"),parse:o(function(fe){var K=this,qe=[0],_e=[],Be=[null],Ne=[],He=this.table,$e="",Xe=0,Fe=0,Ke=0,xe=2,mt=1,Le=Ne.slice.call(arguments,1),ft=Object.create(this.lexer),wt={yy:{}};for(var zt in this.yy)Object.prototype.hasOwnProperty.call(this.yy,zt)&&(wt.yy[zt]=this.yy[zt]);ft.setInput(fe,wt.yy),wt.yy.lexer=ft,wt.yy.parser=this,typeof ft.yylloc>"u"&&(ft.yylloc={});var St=ft.yylloc;Ne.push(St);var At=ft.options&&ft.options.ranges;typeof wt.yy.parseError=="function"?this.parseError=wt.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function bt(De){qe.length=qe.length-2*De,Be.length=Be.length-De,Ne.length=Ne.length-De}o(bt,"popStack");function me(){var De;return De=_e.pop()||ft.lex()||mt,typeof De!="number"&&(De instanceof Array&&(_e=De,De=_e.pop()),De=K.symbols_[De]||De),De}o(me,"lex");for(var lt,gt,Ze,Ee,tt,at,ot={},Wt,Bt,qt,vr;;){if(Ze=qe[qe.length-1],this.defaultActions[Ze]?Ee=this.defaultActions[Ze]:((lt===null||typeof lt>"u")&&(lt=me()),Ee=He[Ze]&&He[Ze][lt]),typeof Ee>"u"||!Ee.length||!Ee[0]){var Tt="";vr=[];for(Wt in He[Ze])this.terminals_[Wt]&&Wt>xe&&vr.push("'"+this.terminals_[Wt]+"'");ft.showPosition?Tt="Parse error on line "+(Xe+1)+`:
+`+ft.showPosition()+`
+Expecting `+vr.join(", ")+", got '"+(this.terminals_[lt]||lt)+"'":Tt="Parse error on line "+(Xe+1)+": Unexpected "+(lt==mt?"end of input":"'"+(this.terminals_[lt]||lt)+"'"),this.parseError(Tt,{text:ft.match,token:this.terminals_[lt]||lt,line:ft.yylineno,loc:St,expected:vr})}if(Ee[0]instanceof Array&&Ee.length>1)throw new Error("Parse Error: multiple actions possible at state: "+Ze+", token: "+lt);switch(Ee[0]){case 1:qe.push(lt),Be.push(ft.yytext),Ne.push(ft.yylloc),qe.push(Ee[1]),lt=null,gt?(lt=gt,gt=null):(Fe=ft.yyleng,$e=ft.yytext,Xe=ft.yylineno,St=ft.yylloc,Ke>0&&Ke--);break;case 2:if(Bt=this.productions_[Ee[1]][1],ot.$=Be[Be.length-Bt],ot._$={first_line:Ne[Ne.length-(Bt||1)].first_line,last_line:Ne[Ne.length-1].last_line,first_column:Ne[Ne.length-(Bt||1)].first_column,last_column:Ne[Ne.length-1].last_column},At&&(ot._$.range=[Ne[Ne.length-(Bt||1)].range[0],Ne[Ne.length-1].range[1]]),at=this.performAction.apply(ot,[$e,Fe,Xe,wt.yy,Ee[1],Be,Ne].concat(Le)),typeof at<"u")return at;Bt&&(qe=qe.slice(0,-1*Bt*2),Be=Be.slice(0,-1*Bt),Ne=Ne.slice(0,-1*Bt)),qe.push(this.productions_[Ee[1]][0]),Be.push(ot.$),Ne.push(ot._$),qt=He[qe[qe.length-2]][qe[qe.length-1]],qe.push(qt);break;case 3:return!0}}return!0},"parse")},q=(function(){var X={EOF:1,parseError:o(function(K,qe){if(this.yy.parser)this.yy.parser.parseError(K,qe);else throw new Error(K)},"parseError"),setInput:o(function(fe,K){return this.yy=K||this.yy||{},this._input=fe,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},"setInput"),input:o(function(){var fe=this._input[0];this.yytext+=fe,this.yyleng++,this.offset++,this.match+=fe,this.matched+=fe;var K=fe.match(/(?:\r\n?|\n).*/g);return K?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),fe},"input"),unput:o(function(fe){var K=fe.length,qe=fe.split(/(?:\r\n?|\n)/g);this._input=fe+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-K),this.offset-=K;var _e=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),qe.length-1&&(this.yylineno-=qe.length-1);var Be=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:qe?(qe.length===_e.length?this.yylloc.first_column:0)+_e[_e.length-qe.length].length-qe[0].length:this.yylloc.first_column-K},this.options.ranges&&(this.yylloc.range=[Be[0],Be[0]+this.yyleng-K]),this.yyleng=this.yytext.length,this},"unput"),more:o(function(){return this._more=!0,this},"more"),reject:o(function(){if(this.options.backtrack_lexer)this._backtrack=!0;else return this.parseError("Lexical error on line "+(this.yylineno+1)+`. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).
+`+this.showPosition(),{text:"",token:null,line:this.yylineno});return this},"reject"),less:o(function(fe){this.unput(this.match.slice(fe))},"less"),pastInput:o(function(){var fe=this.matched.substr(0,this.matched.length-this.match.length);return(fe.length>20?"...":"")+fe.substr(-20).replace(/\n/g,"")},"pastInput"),upcomingInput:o(function(){var fe=this.match;return fe.length<20&&(fe+=this._input.substr(0,20-fe.length)),(fe.substr(0,20)+(fe.length>20?"...":"")).replace(/\n/g,"")},"upcomingInput"),showPosition:o(function(){var fe=this.pastInput(),K=new Array(fe.length+1).join("-");return fe+this.upcomingInput()+`
+`+K+"^"},"showPosition"),test_match:o(function(fe,K){var qe,_e,Be;if(this.options.backtrack_lexer&&(Be={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(Be.yylloc.range=this.yylloc.range.slice(0))),_e=fe[0].match(/(?:\r\n?|\n).*/g),_e&&(this.yylineno+=_e.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:_e?_e[_e.length-1].length-_e[_e.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+fe[0].length},this.yytext+=fe[0],this.match+=fe[0],this.matches=fe,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(fe[0].length),this.matched+=fe[0],qe=this.performAction.call(this,this.yy,this,K,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),qe)return qe;if(this._backtrack){for(var Ne in Be)this[Ne]=Be[Ne];return!1}return!1},"test_match"),next:o(function(){if(this.done)return this.EOF;this._input||(this.done=!0);var fe,K,qe,_e;this._more||(this.yytext="",this.match="");for(var Be=this._currentRules(),Ne=0;Ne<Be.length;Ne++)if(qe=this._input.match(this.rules[Be[Ne]]),qe&&(!K||qe[0].length>K[0].length)){if(K=qe,_e=Ne,this.options.backtrack_lexer){if(fe=this.test_match(qe,Be[Ne]),fe!==!1)return fe;if(this._backtrack){K=!1;continue}else return!1}else if(!this.options.flex)break}return K?(fe=this.test_match(K,Be[_e]),fe!==!1?fe:!1):this._input===""?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+`. Unrecognized text.
+`+this.showPosition(),{text:"",token:null,line:this.yylineno})},"next"),lex:o(function(){var K=this.next();return K||this.lex()},"lex"),begin:o(function(K){this.conditionStack.push(K)},"begin"),popState:o(function(){var K=this.conditionStack.length-1;return K>0?this.conditionStack.pop():this.conditionStack[0]},"popState"),_currentRules:o(function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},"_currentRules"),topState:o(function(K){return K=this.conditionStack.length-1-Math.abs(K||0),K>=0?this.conditionStack[K]:"INITIAL"},"topState"),pushState:o(function(K){this.begin(K)},"pushState"),stateStackSize:o(function(){return this.conditionStack.length},"stateStackSize"),options:{"case-insensitive":!0},performAction:o(function(K,qe,_e,Be){var Ne=Be;switch(_e){case 0:break;case 1:break;case 2:return 55;case 3:break;case 4:return this.begin("title"),35;break;case 5:return this.popState(),"title_value";break;case 6:return this.begin("acc_title"),37;break;case 7:return this.popState(),"acc_title_value";break;case 8:return this.begin("acc_descr"),39;break;case 9:return this.popState(),"acc_descr_value";break;case 10:this.begin("acc_descr_multiline");break;case 11:this.popState();break;case 12:return"acc_descr_multiline_value";case 13:return 48;case 14:return 50;case 15:return 49;case 16:return 51;case 17:return 52;case 18:return 53;case 19:return 54;case 20:return 25;case 21:this.begin("md_string");break;case 22:return"MD_STR";case 23:this.popState();break;case 24:this.begin("string");break;case 25:this.popState();break;case 26:return"STR";case 27:this.begin("class_name");break;case 28:return this.popState(),47;break;case 29:return this.begin("point_start"),44;break;case 30:return this.begin("point_x"),45;break;case 31:this.popState();break;case 32:this.popState(),this.begin("point_y");break;case 33:return this.popState(),46;break;case 34:return 28;case 35:return 4;case 36:return 15;case 37:return 11;case 38:return 64;case 39:return 10;case 40:return 65;case 41:return 65;case 42:return 14;case 43:return 13;case 44:return 67;case 45:return 66;case 46:return 12;case 47:return 8;case 48:return 5;case 49:return 18;case 50:return 56;case 51:return 63;case 52:return 57}},"anonymous"),rules:[/^(?:%%(?!\{)[^\n]*)/i,/^(?:[^\}]%%[^\n]*)/i,/^(?:[\n\r]+)/i,/^(?:%%[^\n]*)/i,/^(?:title\b)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accTitle\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*\{\s*)/i,/^(?:[\}])/i,/^(?:[^\}]*)/i,/^(?: *x-axis *)/i,/^(?: *y-axis *)/i,/^(?: *--+> *)/i,/^(?: *quadrant-1 *)/i,/^(?: *quadrant-2 *)/i,/^(?: *quadrant-3 *)/i,/^(?: *quadrant-4 *)/i,/^(?:classDef\b)/i,/^(?:["][`])/i,/^(?:[^`"]+)/i,/^(?:[`]["])/i,/^(?:["])/i,/^(?:["])/i,/^(?:[^"]*)/i,/^(?::::)/i,/^(?:^\w+)/i,/^(?:\s*:\s*\[\s*)/i,/^(?:(1)|(0(.\d+)?))/i,/^(?:\s*\] *)/i,/^(?:\s*,\s*)/i,/^(?:(1)|(0(.\d+)?))/i,/^(?: *quadrantChart *)/i,/^(?:[A-Za-z]+)/i,/^(?:[^\x00-\x7F]+)/i,/^(?::)/i,/^(?:\+)/i,/^(?:,)/i,/^(?:=)/i,/^(?:=)/i,/^(?:\*)/i,/^(?:#)/i,/^(?:[\_])/i,/^(?:\.)/i,/^(?:&)/i,/^(?:-)/i,/^(?:[0-9]+)/i,/^(?:\s)/i,/^(?:;)/i,/^(?:[!"#$%&'*+,-.`?\\_/])/i,/^(?:$)/i],conditions:{class_name:{rules:[28],inclusive:!1},point_y:{rules:[33],inclusive:!1},point_x:{rules:[32],inclusive:!1},point_start:{rules:[30,31],inclusive:!1},acc_descr_multiline:{rules:[11,12],inclusive:!1},acc_descr:{rules:[9],inclusive:!1},acc_title:{rules:[7],inclusive:!1},title:{rules:[5],inclusive:!1},md_string:{rules:[22,23],inclusive:!1},string:{rules:[25,26],inclusive:!1},INITIAL:{rules:[0,1,2,3,4,6,8,10,13,14,15,16,17,18,19,20,21,24,27,29,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52],inclusive:!0}}};return X})();ne.lexer=q;function he(){this.yy={}}return o(he,"Parser"),he.prototype=ne,ne.Parser=he,new he})();qU.parser=qU;J7e=qU});var Us,uL,t8e=F(()=>{"use strict";$r();Wi();vt();Pc();Us=ma(),uL=class{constructor(){this.classes=new Map;this.config=this.getDefaultConfig(),this.themeConfig=this.getDefaultThemeConfig(),this.data=this.getDefaultData()}static{o(this,"QuadrantBuilder")}getDefaultData(){return{titleText:"",quadrant1Text:"",quadrant2Text:"",quadrant3Text:"",quadrant4Text:"",xAxisLeftText:"",xAxisRightText:"",yAxisBottomText:"",yAxisTopText:"",points:[]}}getDefaultConfig(){return{showXAxis:!0,showYAxis:!0,showTitle:!0,chartHeight:cr.quadrantChart?.chartWidth||500,chartWidth:cr.quadrantChart?.chartHeight||500,titlePadding:cr.quadrantChart?.titlePadding||10,titleFontSize:cr.quadrantChart?.titleFontSize||20,quadrantPadding:cr.quadrantChart?.quadrantPadding||5,xAxisLabelPadding:cr.quadrantChart?.xAxisLabelPadding||5,yAxisLabelPadding:cr.quadrantChart?.yAxisLabelPadding||5,xAxisLabelFontSize:cr.quadrantChart?.xAxisLabelFontSize||16,yAxisLabelFontSize:cr.quadrantChart?.yAxisLabelFontSize||16,quadrantLabelFontSize:cr.quadrantChart?.quadrantLabelFontSize||16,quadrantTextTopPadding:cr.quadrantChart?.quadrantTextTopPadding||5,pointTextPadding:cr.quadrantChart?.pointTextPadding||5,pointLabelFontSize:cr.quadrantChart?.pointLabelFontSize||12,pointRadius:cr.quadrantChart?.pointRadius||5,xAxisPosition:cr.quadrantChart?.xAxisPosition||"top",yAxisPosition:cr.quadrantChart?.yAxisPosition||"left",quadrantInternalBorderStrokeWidth:cr.quadrantChart?.quadrantInternalBorderStrokeWidth||1,quadrantExternalBorderStrokeWidth:cr.quadrantChart?.quadrantExternalBorderStrokeWidth||2}}getDefaultThemeConfig(){return{quadrant1Fill:Us.quadrant1Fill,quadrant2Fill:Us.quadrant2Fill,quadrant3Fill:Us.quadrant3Fill,quadrant4Fill:Us.quadrant4Fill,quadrant1TextFill:Us.quadrant1TextFill,quadrant2TextFill:Us.quadrant2TextFill,quadrant3TextFill:Us.quadrant3TextFill,quadrant4TextFill:Us.quadrant4TextFill,quadrantPointFill:Us.quadrantPointFill,quadrantPointTextFill:Us.quadrantPointTextFill,quadrantXAxisTextFill:Us.quadrantXAxisTextFill,quadrantYAxisTextFill:Us.quadrantYAxisTextFill,quadrantTitleFill:Us.quadrantTitleFill,quadrantInternalBorderStrokeFill:Us.quadrantInternalBorderStrokeFill,quadrantExternalBorderStrokeFill:Us.quadrantExternalBorderStrokeFill}}clear(){this.config=this.getDefaultConfig(),this.themeConfig=this.getDefaultThemeConfig(),this.data=this.getDefaultData(),this.classes=new Map,Z.info("clear called")}setData(t){this.data={...this.data,...t}}addPoints(t){this.data.points=[...t,...this.data.points]}addClass(t,r){this.classes.set(t,r)}setConfig(t){Z.trace("setConfig called with: ",t),this.config={...this.config,...t}}setThemeConfig(t){Z.trace("setThemeConfig called with: ",t),this.themeConfig={...this.themeConfig,...t}}calculateSpace(t,r,n,i){let a=this.config.xAxisLabelPadding*2+this.config.xAxisLabelFontSize,s={top:t==="top"&&r?a:0,bottom:t==="bottom"&&r?a:0},l=this.config.yAxisLabelPadding*2+this.config.yAxisLabelFontSize,u={left:this.config.yAxisPosition==="left"&&n?l:0,right:this.config.yAxisPosition==="right"&&n?l:0},h=this.config.titleFontSize+this.config.titlePadding*2,d={top:i?h:0},f=this.config.quadrantPadding+u.left,p=this.config.quadrantPadding+s.top+d.top,m=this.config.chartWidth-this.config.quadrantPadding*2-u.left-u.right,g=this.config.chartHeight-this.config.quadrantPadding*2-s.top-s.bottom-d.top,y=m/2,v=g/2;return{xAxisSpace:s,yAxisSpace:u,titleSpace:d,quadrantSpace:{quadrantLeft:f,quadrantTop:p,quadrantWidth:m,quadrantHalfWidth:y,quadrantHeight:g,quadrantHalfHeight:v}}}getAxisLabels(t,r,n,i){let{quadrantSpace:a,titleSpace:s}=i,{quadrantHalfHeight:l,quadrantHeight:u,quadrantLeft:h,quadrantHalfWidth:d,quadrantTop:f,quadrantWidth:p}=a,m=!!this.data.xAxisRightText,g=!!this.data.yAxisTopText,y=[];return this.data.xAxisLeftText&&r&&y.push({text:this.data.xAxisLeftText,fill:this.themeConfig.quadrantXAxisTextFill,x:h+(m?d/2:0),y:t==="top"?this.config.xAxisLabelPadding+s.top:this.config.xAxisLabelPadding+f+u+this.config.quadrantPadding,fontSize:this.config.xAxisLabelFontSize,verticalPos:m?"center":"left",horizontalPos:"top",rotation:0}),this.data.xAxisRightText&&r&&y.push({text:this.data.xAxisRightText,fill:this.themeConfig.quadrantXAxisTextFill,x:h+d+(m?d/2:0),y:t==="top"?this.config.xAxisLabelPadding+s.top:this.config.xAxisLabelPadding+f+u+this.config.quadrantPadding,fontSize:this.config.xAxisLabelFontSize,verticalPos:m?"center":"left",horizontalPos:"top",rotation:0}),this.data.yAxisBottomText&&n&&y.push({text:this.data.yAxisBottomText,fill:this.themeConfig.quadrantYAxisTextFill,x:this.config.yAxisPosition==="left"?this.config.yAxisLabelPadding:this.config.yAxisLabelPadding+h+p+this.config.quadrantPadding,y:f+u-(g?l/2:0),fontSize:this.config.yAxisLabelFontSize,verticalPos:g?"center":"left",horizontalPos:"top",rotation:-90}),this.data.yAxisTopText&&n&&y.push({text:this.data.yAxisTopText,fill:this.themeConfig.quadrantYAxisTextFill,x:this.config.yAxisPosition==="left"?this.config.yAxisLabelPadding:this.config.yAxisLabelPadding+h+p+this.config.quadrantPadding,y:f+l-(g?l/2:0),fontSize:this.config.yAxisLabelFontSize,verticalPos:g?"center":"left",horizontalPos:"top",rotation:-90}),y}getQuadrants(t){let{quadrantSpace:r}=t,{quadrantHalfHeight:n,quadrantLeft:i,quadrantHalfWidth:a,quadrantTop:s}=r,l=[{text:{text:this.data.quadrant1Text,fill:this.themeConfig.quadrant1TextFill,x:0,y:0,fontSize:this.config.quadrantLabelFontSize,verticalPos:"center",horizontalPos:"middle",rotation:0},x:i+a,y:s,width:a,height:n,fill:this.themeConfig.quadrant1Fill},{text:{text:this.data.quadrant2Text,fill:this.themeConfig.quadrant2TextFill,x:0,y:0,fontSize:this.config.quadrantLabelFontSize,verticalPos:"center",horizontalPos:"middle",rotation:0},x:i,y:s,width:a,height:n,fill:this.themeConfig.quadrant2Fill},{text:{text:this.data.quadrant3Text,fill:this.themeConfig.quadrant3TextFill,x:0,y:0,fontSize:this.config.quadrantLabelFontSize,verticalPos:"center",horizontalPos:"middle",rotation:0},x:i,y:s+n,width:a,height:n,fill:this.themeConfig.quadrant3Fill},{text:{text:this.data.quadrant4Text,fill:this.themeConfig.quadrant4TextFill,x:0,y:0,fontSize:this.config.quadrantLabelFontSize,verticalPos:"center",horizontalPos:"middle",rotation:0},x:i+a,y:s+n,width:a,height:n,fill:this.themeConfig.quadrant4Fill}];for(let u of l)u.text.x=u.x+u.width/2,this.data.points.length===0?(u.text.y=u.y+u.height/2,u.text.horizontalPos="middle"):(u.text.y=u.y+this.config.quadrantTextTopPadding,u.text.horizontalPos="top");return l}getQuadrantPoints(t){let{quadrantSpace:r}=t,{quadrantHeight:n,quadrantLeft:i,quadrantTop:a,quadrantWidth:s}=r,l=Kl().domain([0,1]).range([i,s+i]),u=Kl().domain([0,1]).range([n+a,a]);return this.data.points.map(d=>{let f=this.classes.get(d.className);return f&&(d={...f,...d}),{x:l(d.x),y:u(d.y),fill:d.color??this.themeConfig.quadrantPointFill,radius:d.radius??this.config.pointRadius,text:{text:d.text,fill:this.themeConfig.quadrantPointTextFill,x:l(d.x),y:u(d.y)+this.config.pointTextPadding,verticalPos:"center",horizontalPos:"top",fontSize:this.config.pointLabelFontSize,rotation:0},strokeColor:d.strokeColor??this.themeConfig.quadrantPointFill,strokeWidth:d.strokeWidth??"0px"}})}getBorders(t){let r=this.config.quadrantExternalBorderStrokeWidth/2,{quadrantSpace:n}=t,{quadrantHalfHeight:i,quadrantHeight:a,quadrantLeft:s,quadrantHalfWidth:l,quadrantTop:u,quadrantWidth:h}=n;return[{strokeFill:this.themeConfig.quadrantExternalBorderStrokeFill,strokeWidth:this.config.quadrantExternalBorderStrokeWidth,x1:s-r,y1:u,x2:s+h+r,y2:u},{strokeFill:this.themeConfig.quadrantExternalBorderStrokeFill,strokeWidth:this.config.quadrantExternalBorderStrokeWidth,x1:s+h,y1:u+r,x2:s+h,y2:u+a-r},{strokeFill:this.themeConfig.quadrantExternalBorderStrokeFill,strokeWidth:this.config.quadrantExternalBorderStrokeWidth,x1:s-r,y1:u+a,x2:s+h+r,y2:u+a},{strokeFill:this.themeConfig.quadrantExternalBorderStrokeFill,strokeWidth:this.config.quadrantExternalBorderStrokeWidth,x1:s,y1:u+r,x2:s,y2:u+a-r},{strokeFill:this.themeConfig.quadrantInternalBorderStrokeFill,strokeWidth:this.config.quadrantInternalBorderStrokeWidth,x1:s+l,y1:u+r,x2:s+l,y2:u+a-r},{strokeFill:this.themeConfig.quadrantInternalBorderStrokeFill,strokeWidth:this.config.quadrantInternalBorderStrokeWidth,x1:s+r,y1:u+i,x2:s+h-r,y2:u+i}]}getTitle(t){if(t)return{text:this.data.titleText,fill:this.themeConfig.quadrantTitleFill,fontSize:this.config.titleFontSize,horizontalPos:"top",verticalPos:"center",rotation:0,y:this.config.titlePadding,x:this.config.chartWidth/2}}build(){let t=this.config.showXAxis&&!!(this.data.xAxisLeftText||this.data.xAxisRightText),r=this.config.showYAxis&&!!(this.data.yAxisTopText||this.data.yAxisBottomText),n=this.config.showTitle&&!!this.data.titleText,i=this.data.points.length>0?"bottom":this.config.xAxisPosition,a=this.calculateSpace(i,t,r,n);return{points:this.getQuadrantPoints(a),quadrants:this.getQuadrants(a),axisLabels:this.getAxisLabels(i,t,r,a),borderLines:this.getBorders(a),title:this.getTitle(n)}}}});function HU(e){return!/^#?([\dA-Fa-f]{6}|[\dA-Fa-f]{3})$/.test(e)}function r8e(e){return!/^\d+$/.test(e)}function n8e(e){return!/^\d+px$/.test(e)}var w0,i8e=F(()=>{"use strict";w0=class extends Error{static{o(this,"InvalidStyleError")}constructor(t,r,n){super(`value for ${t} ${r} is invalid, please use a valid ${n}`),this.name="InvalidStyleError"}};o(HU,"validateHexCode");o(r8e,"validateNumber");o(n8e,"validateSizeInPixels")});function cd(e){return mr(e.trim(),Ae())}function iAt(e){Za.setData({quadrant1Text:cd(e.text)})}function aAt(e){Za.setData({quadrant2Text:cd(e.text)})}function sAt(e){Za.setData({quadrant3Text:cd(e.text)})}function oAt(e){Za.setData({quadrant4Text:cd(e.text)})}function lAt(e){Za.setData({xAxisLeftText:cd(e.text)})}function cAt(e){Za.setData({xAxisRightText:cd(e.text)})}function uAt(e){Za.setData({yAxisTopText:cd(e.text)})}function hAt(e){Za.setData({yAxisBottomText:cd(e.text)})}function UU(e){let t={};for(let r of e){let[n,i]=r.trim().split(/\s*:\s*/);if(n==="radius"){if(r8e(i))throw new w0(n,i,"number");t.radius=parseInt(i)}else if(n==="color"){if(HU(i))throw new w0(n,i,"hex code");t.color=i}else if(n==="stroke-color"){if(HU(i))throw new w0(n,i,"hex code");t.strokeColor=i}else if(n==="stroke-width"){if(n8e(i))throw new w0(n,i,"number of pixels (eg. 10px)");t.strokeWidth=i}else throw new Error(`style named ${n} is not supported.`)}return t}function dAt(e,t,r,n,i){let a=UU(i);Za.addPoints([{x:r,y:n,text:cd(e.text),className:t,...a}])}function fAt(e,t){Za.addClass(e,UU(t))}function pAt(e){Za.setConfig({chartWidth:e})}function mAt(e){Za.setConfig({chartHeight:e})}function gAt(){let e=Ae(),{themeVariables:t,quadrantChart:r}=e;return r&&Za.setConfig(r),Za.setThemeConfig({quadrant1Fill:t.quadrant1Fill,quadrant2Fill:t.quadrant2Fill,quadrant3Fill:t.quadrant3Fill,quadrant4Fill:t.quadrant4Fill,quadrant1TextFill:t.quadrant1TextFill,quadrant2TextFill:t.quadrant2TextFill,quadrant3TextFill:t.quadrant3TextFill,quadrant4TextFill:t.quadrant4TextFill,quadrantPointFill:t.quadrantPointFill,quadrantPointTextFill:t.quadrantPointTextFill,quadrantXAxisTextFill:t.quadrantXAxisTextFill,quadrantYAxisTextFill:t.quadrantYAxisTextFill,quadrantExternalBorderStrokeFill:t.quadrantExternalBorderStrokeFill,quadrantInternalBorderStrokeFill:t.quadrantInternalBorderStrokeFill,quadrantTitleFill:t.quadrantTitleFill}),Za.setData({titleText:Lr()}),Za.build()}var Za,yAt,a8e,s8e=F(()=>{"use strict";Xt();Vr();Nn();t8e();i8e();o(cd,"textSanitizer");Za=new uL;o(iAt,"setQuadrant1Text");o(aAt,"setQuadrant2Text");o(sAt,"setQuadrant3Text");o(oAt,"setQuadrant4Text");o(lAt,"setXAxisLeftText");o(cAt,"setXAxisRightText");o(uAt,"setYAxisTopText");o(hAt,"setYAxisBottomText");o(UU,"parseStyles");o(dAt,"addPoint");o(fAt,"addClass");o(pAt,"setWidth");o(mAt,"setHeight");o(gAt,"getQuadrantData");yAt=o(function(){Za.clear(),yr()},"clear"),a8e={setWidth:pAt,setHeight:mAt,setQuadrant1Text:iAt,setQuadrant2Text:aAt,setQuadrant3Text:sAt,setQuadrant4Text:oAt,setXAxisLeftText:lAt,setXAxisRightText:cAt,setYAxisTopText:uAt,setYAxisBottomText:hAt,parseStyles:UU,addPoint:dAt,addClass:fAt,getQuadrantData:gAt,clear:yAt,setAccTitle:kr,getAccTitle:Ar,setDiagramTitle:Or,getDiagramTitle:Lr,getAccDescription:_r,setAccDescription:Rr}});var vAt,o8e,l8e=F(()=>{"use strict";$r();Xt();vt();$n();vAt=o((e,t,r,n)=>{function i(R){return R==="top"?"hanging":"middle"}o(i,"getDominantBaseLine");function a(R){return R==="left"?"start":"middle"}o(a,"getTextAnchor");function s(R){return`translate(${R.x}, ${R.y}) rotate(${R.rotation||0})`}o(s,"getTransformation");let l=Ae();Z.debug(`Rendering quadrant chart
+`+e);let u=l.securityLevel,h;u==="sandbox"&&(h=et("#i"+t));let f=(u==="sandbox"?et(h.nodes()[0].contentDocument.body):et("body")).select(`[id="${t}"]`),p=f.append("g").attr("class","main"),m=l.quadrantChart?.chartWidth??500,g=l.quadrantChart?.chartHeight??500;Wr(f,g,m,l.quadrantChart?.useMaxWidth??!0),f.attr("viewBox","0 0 "+m+" "+g),n.db.setHeight(g),n.db.setWidth(m);let y=n.db.getQuadrantData(),v=p.append("g").attr("class","quadrants"),x=p.append("g").attr("class","border"),b=p.append("g").attr("class","data-points"),T=p.append("g").attr("class","labels"),k=p.append("g").attr("class","title");y.title&&k.append("text").attr("x",0).attr("y",0).attr("fill",y.title.fill).attr("font-size",y.title.fontSize).attr("dominant-baseline",i(y.title.horizontalPos)).attr("text-anchor",a(y.title.verticalPos)).attr("transform",s(y.title)).text(y.title.text),y.borderLines&&x.selectAll("line").data(y.borderLines).enter().append("line").attr("x1",R=>R.x1).attr("y1",R=>R.y1).attr("x2",R=>R.x2).attr("y2",R=>R.y2).style("stroke",R=>R.strokeFill).style("stroke-width",R=>R.strokeWidth);let C=v.selectAll("g.quadrant").data(y.quadrants).enter().append("g").attr("class","quadrant");C.append("rect").attr("x",R=>R.x).attr("y",R=>R.y).attr("width",R=>R.width).attr("height",R=>R.height).attr("fill",R=>R.fill),C.append("text").attr("x",0).attr("y",0).attr("fill",R=>R.text.fill).attr("font-size",R=>R.text.fontSize).attr("dominant-baseline",R=>i(R.text.horizontalPos)).attr("text-anchor",R=>a(R.text.verticalPos)).attr("transform",R=>s(R.text)).text(R=>R.text.text),T.selectAll("g.label").data(y.axisLabels).enter().append("g").attr("class","label").append("text").attr("x",0).attr("y",0).text(R=>R.text).attr("fill",R=>R.fill).attr("font-size",R=>R.fontSize).attr("dominant-baseline",R=>i(R.horizontalPos)).attr("text-anchor",R=>a(R.verticalPos)).attr("transform",R=>s(R));let S=b.selectAll("g.data-point").data(y.points).enter().append("g").attr("class","data-point");S.append("circle").attr("cx",R=>R.x).attr("cy",R=>R.y).attr("r",R=>R.radius).attr("fill",R=>R.fill).attr("stroke",R=>R.strokeColor).attr("stroke-width",R=>R.strokeWidth),S.append("text").attr("x",0).attr("y",0).text(R=>R.text.text).attr("fill",R=>R.text.fill).attr("font-size",R=>R.text.fontSize).attr("dominant-baseline",R=>i(R.text.horizontalPos)).attr("text-anchor",R=>a(R.text.verticalPos)).attr("transform",R=>s(R.text))},"draw"),o8e={draw:vAt}});var c8e={};ir(c8e,{diagram:()=>xAt});var xAt,u8e=F(()=>{"use strict";e8e();s8e();l8e();xAt={parser:J7e,db:a8e,renderer:o8e,styles:o(()=>"","styles")}});var YU,f8e,p8e=F(()=>{"use strict";YU=(function(){var e=o(function(P,B,O,$){for(O=O||{},$=P.length;$--;O[P[$]]=B);return O},"o"),t=[1,10,12,14,16,18,19,21,23],r=[2,6],n=[1,3],i=[1,5],a=[1,6],s=[1,7],l=[1,5,10,12,14,16,18,19,21,23,36,37,38],u=[1,25],h=[1,26],d=[1,28],f=[1,29],p=[1,30],m=[1,31],g=[1,32],y=[1,33],v=[1,34],x=[1,35],b=[1,36],T=[1,37],k=[1,43],C=[1,42],w=[1,47],S=[1,50],R=[1,10,12,14,16,18,19,21,23,36,37,38],L=[1,10,12,14,16,18,19,21,23,24,26,28,29,36,37,38],N=[1,10,12,14,16,18,19,21,23,24,26,28,29,36,37,38,42,43,44,45,46,47,48,49,50,51],I=[1,65],_=[26,28],A={trace:o(function(){},"trace"),yy:{},symbols_:{error:2,start:3,eol:4,XYCHART:5,chartConfig:6,document:7,CHART_ORIENTATION:8,statement:9,title:10,text:11,X_AXIS:12,parseXAxis:13,Y_AXIS:14,parseYAxis:15,LINE:16,plotData:17,BAR:18,acc_title:19,acc_title_value:20,acc_descr:21,acc_descr_value:22,acc_descr_multiline_value:23,SQUARE_BRACES_START:24,dataPoints:25,SQUARE_BRACES_END:26,dataPoint:27,COMMA:28,NUMBER_WITH_DECIMAL:29,STR:30,xAxisData:31,bandData:32,ARROW_DELIMITER:33,commaSeparatedTexts:34,yAxisData:35,NEWLINE:36,SEMI:37,EOF:38,alphaNum:39,MD_STR:40,alphaNumToken:41,AMP:42,NUM:43,ALPHA:44,PLUS:45,EQUALS:46,MULT:47,DOT:48,BRKT:49,MINUS:50,UNDERSCORE:51,$accept:0,$end:1},terminals_:{2:"error",5:"XYCHART",8:"CHART_ORIENTATION",10:"title",12:"X_AXIS",14:"Y_AXIS",16:"LINE",18:"BAR",19:"acc_title",20:"acc_title_value",21:"acc_descr",22:"acc_descr_value",23:"acc_descr_multiline_value",24:"SQUARE_BRACES_START",26:"SQUARE_BRACES_END",28:"COMMA",29:"NUMBER_WITH_DECIMAL",30:"STR",33:"ARROW_DELIMITER",36:"NEWLINE",37:"SEMI",38:"EOF",40:"MD_STR",42:"AMP",43:"NUM",44:"ALPHA",45:"PLUS",46:"EQUALS",47:"MULT",48:"DOT",49:"BRKT",50:"MINUS",51:"UNDERSCORE"},productions_:[0,[3,2],[3,3],[3,2],[3,1],[6,1],[7,0],[7,2],[9,2],[9,2],[9,2],[9,2],[9,2],[9,3],[9,2],[9,3],[9,2],[9,2],[9,1],[17,3],[25,3],[25,1],[27,2],[27,1],[13,1],[13,2],[13,1],[31,1],[31,3],[32,3],[34,3],[34,1],[15,1],[15,2],[15,1],[35,3],[4,1],[4,1],[4,1],[11,1],[11,1],[11,1],[39,1],[39,2],[41,1],[41,1],[41,1],[41,1],[41,1],[41,1],[41,1],[41,1],[41,1],[41,1]],performAction:o(function(B,O,$,V,G,z,W){var H=z.length-1;switch(G){case 5:V.setOrientation(z[H]);break;case 9:V.setDiagramTitle(z[H].text.trim());break;case 12:V.setLineData({text:"",type:"text"},z[H]);break;case 13:V.setLineData(z[H-1],z[H]);break;case 14:V.setBarData({text:"",type:"text"},z[H]);break;case 15:V.setBarData(z[H-1],z[H]);break;case 16:this.$=z[H].trim(),V.setAccTitle(this.$);break;case 17:case 18:this.$=z[H].trim(),V.setAccDescription(this.$);break;case 19:this.$=z[H-1];break;case 20:case 30:this.$=[z[H-2],...z[H]];break;case 21:case 31:this.$=[z[H]];break;case 22:this.$={value:Number(z[H-1]),label:z[H]};break;case 23:this.$={value:Number(z[H]),label:""};break;case 24:V.setXAxisTitle(z[H]);break;case 25:V.setXAxisTitle(z[H-1]);break;case 26:V.setXAxisTitle({type:"text",text:""});break;case 27:V.setXAxisBand(z[H]);break;case 28:V.setXAxisRangeData(Number(z[H-2]),Number(z[H]));break;case 29:this.$=z[H-1];break;case 32:V.setYAxisTitle(z[H]);break;case 33:V.setYAxisTitle(z[H-1]);break;case 34:V.setYAxisTitle({type:"text",text:""});break;case 35:V.setYAxisRangeData(Number(z[H-2]),Number(z[H]));break;case 39:this.$={text:z[H],type:"text"};break;case 40:this.$={text:z[H],type:"text"};break;case 41:this.$={text:z[H],type:"markdown"};break;case 42:this.$=z[H];break;case 43:this.$=z[H-1]+""+z[H];break}},"anonymous"),table:[e(t,r,{3:1,4:2,7:4,5:n,36:i,37:a,38:s}),{1:[3]},e(t,r,{4:2,7:4,3:8,5:n,36:i,37:a,38:s}),e(t,r,{4:2,7:4,6:9,3:10,5:n,8:[1,11],36:i,37:a,38:s}),{1:[2,4],9:12,10:[1,13],12:[1,14],14:[1,15],16:[1,16],18:[1,17],19:[1,18],21:[1,19],23:[1,20]},e(l,[2,36]),e(l,[2,37]),e(l,[2,38]),{1:[2,1]},e(t,r,{4:2,7:4,3:21,5:n,36:i,37:a,38:s}),{1:[2,3]},e(l,[2,5]),e(t,[2,7],{4:22,36:i,37:a,38:s}),{11:23,30:u,39:24,40:h,41:27,42:d,43:f,44:p,45:m,46:g,47:y,48:v,49:x,50:b,51:T},{11:39,13:38,24:k,29:C,30:u,31:40,32:41,39:24,40:h,41:27,42:d,43:f,44:p,45:m,46:g,47:y,48:v,49:x,50:b,51:T},{11:45,15:44,29:w,30:u,35:46,39:24,40:h,41:27,42:d,43:f,44:p,45:m,46:g,47:y,48:v,49:x,50:b,51:T},{11:49,17:48,24:S,30:u,39:24,40:h,41:27,42:d,43:f,44:p,45:m,46:g,47:y,48:v,49:x,50:b,51:T},{11:52,17:51,24:S,30:u,39:24,40:h,41:27,42:d,43:f,44:p,45:m,46:g,47:y,48:v,49:x,50:b,51:T},{20:[1,53]},{22:[1,54]},e(R,[2,18]),{1:[2,2]},e(R,[2,8]),e(R,[2,9]),e(L,[2,39],{41:55,42:d,43:f,44:p,45:m,46:g,47:y,48:v,49:x,50:b,51:T}),e(L,[2,40]),e(L,[2,41]),e(N,[2,42]),e(N,[2,44]),e(N,[2,45]),e(N,[2,46]),e(N,[2,47]),e(N,[2,48]),e(N,[2,49]),e(N,[2,50]),e(N,[2,51]),e(N,[2,52]),e(N,[2,53]),e(R,[2,10]),e(R,[2,24],{32:41,31:56,24:k,29:C}),e(R,[2,26]),e(R,[2,27]),{33:[1,57]},{11:59,30:u,34:58,39:24,40:h,41:27,42:d,43:f,44:p,45:m,46:g,47:y,48:v,49:x,50:b,51:T},e(R,[2,11]),e(R,[2,32],{35:60,29:w}),e(R,[2,34]),{33:[1,61]},e(R,[2,12]),{17:62,24:S},{25:63,27:64,29:I},e(R,[2,14]),{17:66,24:S},e(R,[2,16]),e(R,[2,17]),e(N,[2,43]),e(R,[2,25]),{29:[1,67]},{26:[1,68]},{26:[2,31],28:[1,69]},e(R,[2,33]),{29:[1,70]},e(R,[2,13]),{26:[1,71]},{26:[2,21],28:[1,72]},e(_,[2,23],{30:[1,73]}),e(R,[2,15]),e(R,[2,28]),e(R,[2,29]),{11:59,30:u,34:74,39:24,40:h,41:27,42:d,43:f,44:p,45:m,46:g,47:y,48:v,49:x,50:b,51:T},e(R,[2,35]),e(R,[2,19]),{25:75,27:64,29:I},e(_,[2,22]),{26:[2,30]},{26:[2,20]}],defaultActions:{8:[2,1],10:[2,3],21:[2,2],74:[2,30],75:[2,20]},parseError:o(function(B,O){if(O.recoverable)this.trace(B);else{var $=new Error(B);throw $.hash=O,$}},"parseError"),parse:o(function(B){var O=this,$=[0],V=[],G=[null],z=[],W=this.table,H="",j=0,Q=0,U=0,oe=2,te=1,le=z.slice.call(arguments,1),ie=Object.create(this.lexer),ae={yy:{}};for(var Re in this.yy)Object.prototype.hasOwnProperty.call(this.yy,Re)&&(ae.yy[Re]=this.yy[Re]);ie.setInput(B,ae.yy),ae.yy.lexer=ie,ae.yy.parser=this,typeof ie.yylloc>"u"&&(ie.yylloc={});var be=ie.yylloc;z.push(be);var Pe=ie.options&&ie.options.ranges;typeof ae.yy.parseError=="function"?this.parseError=ae.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function Ge(ne){$.length=$.length-2*ne,G.length=G.length-ne,z.length=z.length-ne}o(Ge,"popStack");function Oe(){var ne;return ne=V.pop()||ie.lex()||te,typeof ne!="number"&&(ne instanceof Array&&(V=ne,ne=V.pop()),ne=O.symbols_[ne]||ne),ne}o(Oe,"lex");for(var ue,ye,ke,ce,re,J,se={},ge,Te,we,Me;;){if(ke=$[$.length-1],this.defaultActions[ke]?ce=this.defaultActions[ke]:((ue===null||typeof ue>"u")&&(ue=Oe()),ce=W[ke]&&W[ke][ue]),typeof ce>"u"||!ce.length||!ce[0]){var ve="";Me=[];for(ge in W[ke])this.terminals_[ge]&&ge>oe&&Me.push("'"+this.terminals_[ge]+"'");ie.showPosition?ve="Parse error on line "+(j+1)+`:
+`+ie.showPosition()+`
+Expecting `+Me.join(", ")+", got '"+(this.terminals_[ue]||ue)+"'":ve="Parse error on line "+(j+1)+": Unexpected "+(ue==te?"end of input":"'"+(this.terminals_[ue]||ue)+"'"),this.parseError(ve,{text:ie.match,token:this.terminals_[ue]||ue,line:ie.yylineno,loc:be,expected:Me})}if(ce[0]instanceof Array&&ce.length>1)throw new Error("Parse Error: multiple actions possible at state: "+ke+", token: "+ue);switch(ce[0]){case 1:$.push(ue),G.push(ie.yytext),z.push(ie.yylloc),$.push(ce[1]),ue=null,ye?(ue=ye,ye=null):(Q=ie.yyleng,H=ie.yytext,j=ie.yylineno,be=ie.yylloc,U>0&&U--);break;case 2:if(Te=this.productions_[ce[1]][1],se.$=G[G.length-Te],se._$={first_line:z[z.length-(Te||1)].first_line,last_line:z[z.length-1].last_line,first_column:z[z.length-(Te||1)].first_column,last_column:z[z.length-1].last_column},Pe&&(se._$.range=[z[z.length-(Te||1)].range[0],z[z.length-1].range[1]]),J=this.performAction.apply(se,[H,Q,j,ae.yy,ce[1],G,z].concat(le)),typeof J<"u")return J;Te&&($=$.slice(0,-1*Te*2),G=G.slice(0,-1*Te),z=z.slice(0,-1*Te)),$.push(this.productions_[ce[1]][0]),G.push(se.$),z.push(se._$),we=W[$[$.length-2]][$[$.length-1]],$.push(we);break;case 3:return!0}}return!0},"parse")},M=(function(){var P={EOF:1,parseError:o(function(O,$){if(this.yy.parser)this.yy.parser.parseError(O,$);else throw new Error(O)},"parseError"),setInput:o(function(B,O){return this.yy=O||this.yy||{},this._input=B,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},"setInput"),input:o(function(){var B=this._input[0];this.yytext+=B,this.yyleng++,this.offset++,this.match+=B,this.matched+=B;var O=B.match(/(?:\r\n?|\n).*/g);return O?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),B},"input"),unput:o(function(B){var O=B.length,$=B.split(/(?:\r\n?|\n)/g);this._input=B+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-O),this.offset-=O;var V=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),$.length-1&&(this.yylineno-=$.length-1);var G=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:$?($.length===V.length?this.yylloc.first_column:0)+V[V.length-$.length].length-$[0].length:this.yylloc.first_column-O},this.options.ranges&&(this.yylloc.range=[G[0],G[0]+this.yyleng-O]),this.yyleng=this.yytext.length,this},"unput"),more:o(function(){return this._more=!0,this},"more"),reject:o(function(){if(this.options.backtrack_lexer)this._backtrack=!0;else return this.parseError("Lexical error on line "+(this.yylineno+1)+`. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).
+`+this.showPosition(),{text:"",token:null,line:this.yylineno});return this},"reject"),less:o(function(B){this.unput(this.match.slice(B))},"less"),pastInput:o(function(){var B=this.matched.substr(0,this.matched.length-this.match.length);return(B.length>20?"...":"")+B.substr(-20).replace(/\n/g,"")},"pastInput"),upcomingInput:o(function(){var B=this.match;return B.length<20&&(B+=this._input.substr(0,20-B.length)),(B.substr(0,20)+(B.length>20?"...":"")).replace(/\n/g,"")},"upcomingInput"),showPosition:o(function(){var B=this.pastInput(),O=new Array(B.length+1).join("-");return B+this.upcomingInput()+`
+`+O+"^"},"showPosition"),test_match:o(function(B,O){var $,V,G;if(this.options.backtrack_lexer&&(G={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(G.yylloc.range=this.yylloc.range.slice(0))),V=B[0].match(/(?:\r\n?|\n).*/g),V&&(this.yylineno+=V.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:V?V[V.length-1].length-V[V.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+B[0].length},this.yytext+=B[0],this.match+=B[0],this.matches=B,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(B[0].length),this.matched+=B[0],$=this.performAction.call(this,this.yy,this,O,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),$)return $;if(this._backtrack){for(var z in G)this[z]=G[z];return!1}return!1},"test_match"),next:o(function(){if(this.done)return this.EOF;this._input||(this.done=!0);var B,O,$,V;this._more||(this.yytext="",this.match="");for(var G=this._currentRules(),z=0;z<G.length;z++)if($=this._input.match(this.rules[G[z]]),$&&(!O||$[0].length>O[0].length)){if(O=$,V=z,this.options.backtrack_lexer){if(B=this.test_match($,G[z]),B!==!1)return B;if(this._backtrack){O=!1;continue}else return!1}else if(!this.options.flex)break}return O?(B=this.test_match(O,G[V]),B!==!1?B:!1):this._input===""?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+`. Unrecognized text.
+`+this.showPosition(),{text:"",token:null,line:this.yylineno})},"next"),lex:o(function(){var O=this.next();return O||this.lex()},"lex"),begin:o(function(O){this.conditionStack.push(O)},"begin"),popState:o(function(){var O=this.conditionStack.length-1;return O>0?this.conditionStack.pop():this.conditionStack[0]},"popState"),_currentRules:o(function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},"_currentRules"),topState:o(function(O){return O=this.conditionStack.length-1-Math.abs(O||0),O>=0?this.conditionStack[O]:"INITIAL"},"topState"),pushState:o(function(O){this.begin(O)},"pushState"),stateStackSize:o(function(){return this.conditionStack.length},"stateStackSize"),options:{"case-insensitive":!0},performAction:o(function(O,$,V,G){var z=G;switch(V){case 0:break;case 1:break;case 2:return this.popState(),36;break;case 3:return this.popState(),36;break;case 4:return 36;case 5:break;case 6:return 10;case 7:return this.pushState("acc_title"),19;break;case 8:return this.popState(),"acc_title_value";break;case 9:return this.pushState("acc_descr"),21;break;case 10:return this.popState(),"acc_descr_value";break;case 11:this.pushState("acc_descr_multiline");break;case 12:this.popState();break;case 13:return"acc_descr_multiline_value";case 14:return 5;case 15:return 5;case 16:return 8;case 17:return this.pushState("axis_data"),"X_AXIS";break;case 18:return this.pushState("axis_data"),"Y_AXIS";break;case 19:return this.pushState("axis_band_data"),24;break;case 20:return 33;case 21:return this.pushState("data"),16;break;case 22:return this.pushState("data"),18;break;case 23:return this.pushState("data_inner"),24;break;case 24:return 29;case 25:return this.popState(),26;break;case 26:this.popState();break;case 27:this.pushState("string");break;case 28:this.popState();break;case 29:return"STR";case 30:return 24;case 31:return 26;case 32:return 44;case 33:return"COLON";case 34:return 45;case 35:return 28;case 36:return 46;case 37:return 47;case 38:return 49;case 39:return 51;case 40:return 48;case 41:return 42;case 42:return 50;case 43:return 43;case 44:break;case 45:return 37;case 46:return 38}},"anonymous"),rules:[/^(?:%%(?!\{)[^\n]*)/i,/^(?:[^\}]%%[^\n]*)/i,/^(?:(\r?\n))/i,/^(?:(\r?\n))/i,/^(?:[\n\r]+)/i,/^(?:%%[^\n]*)/i,/^(?:title\b)/i,/^(?:accTitle\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*\{\s*)/i,/^(?:\})/i,/^(?:[^\}]*)/i,/^(?:xychart-beta\b)/i,/^(?:xychart\b)/i,/^(?:(?:vertical|horizontal))/i,/^(?:x-axis\b)/i,/^(?:y-axis\b)/i,/^(?:\[)/i,/^(?:-->)/i,/^(?:line\b)/i,/^(?:bar\b)/i,/^(?:\[)/i,/^(?:[+-]?(?:\d+(?:\.\d+)?|\.\d+))/i,/^(?:\])/i,/^(?:(?:`\)                                    \{ this\.pushState\(md_string\); \}\n<md_string>\(\?:\(\?!`"\)\.\)\+                  \{ return MD_STR; \}\n<md_string>\(\?:`))/i,/^(?:["])/i,/^(?:["])/i,/^(?:[^"]*)/i,/^(?:\[)/i,/^(?:\])/i,/^(?:[A-Za-z]+)/i,/^(?::)/i,/^(?:\+)/i,/^(?:,)/i,/^(?:=)/i,/^(?:\*)/i,/^(?:#)/i,/^(?:[\_])/i,/^(?:\.)/i,/^(?:&)/i,/^(?:-)/i,/^(?:[0-9]+)/i,/^(?:\s+)/i,/^(?:;)/i,/^(?:$)/i],conditions:{data_inner:{rules:[0,1,4,5,6,7,9,11,14,15,16,17,18,21,22,24,25,26,27,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46],inclusive:!0},data:{rules:[0,1,3,4,5,6,7,9,11,14,15,16,17,18,21,22,23,26,27,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46],inclusive:!0},axis_band_data:{rules:[0,1,4,5,6,7,9,11,14,15,16,17,18,21,22,25,26,27,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46],inclusive:!0},axis_data:{rules:[0,1,2,4,5,6,7,9,11,14,15,16,17,18,19,20,21,22,24,26,27,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46],inclusive:!0},acc_descr_multiline:{rules:[12,13],inclusive:!1},acc_descr:{rules:[10],inclusive:!1},acc_title:{rules:[8],inclusive:!1},title:{rules:[],inclusive:!1},md_string:{rules:[],inclusive:!1},string:{rules:[28,29],inclusive:!1},INITIAL:{rules:[0,1,4,5,6,7,9,11,14,15,16,17,18,21,22,26,27,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46],inclusive:!0}}};return P})();A.lexer=M;function D(){this.yy={}}return o(D,"Parser"),D.prototype=A,A.Parser=D,new D})();YU.parser=YU;f8e=YU});function jU(e){return e.type==="bar"}function Pw(e){return e.type==="band"}function Qv(e){return e.type==="linear"}var hL=F(()=>{"use strict";o(jU,"isBarPlot");o(Pw,"isBandAxisData");o(Qv,"isLinearAxisData")});var Jv,XU=F(()=>{"use strict";Ls();Jv=class{constructor(t){this.parentGroup=t}static{o(this,"TextDimensionCalculatorWithFont")}getMaxDimension(t,r){if(!this.parentGroup)return{width:t.reduce((a,s)=>Math.max(s.length,a),0)*r,height:r};let n={width:0,height:0},i=this.parentGroup.append("g").attr("visibility","hidden").attr("font-size",r);for(let a of t){let s=Nse(i,1,a),l=s?s.width:a.length*r,u=s?s.height:r;n.width=Math.max(n.width,l),n.height=Math.max(n.height,u)}return i.remove(),n}}});var ex,KU=F(()=>{"use strict";ex=class{constructor(t,r,n,i){this.axisConfig=t;this.title=r;this.textDimensionCalculator=n;this.axisThemeConfig=i;this.boundingRect={x:0,y:0,width:0,height:0};this.axisPosition="left";this.showTitle=!1;this.showLabel=!1;this.showTick=!1;this.showAxisLine=!1;this.outerPadding=0;this.titleTextHeight=0;this.labelTextHeight=0;this.normalizedLabelRotationInRad=0;this.range=[0,10],this.boundingRect={x:0,y:0,width:0,height:0},this.axisPosition="left",this.normalizedLabelRotationInRad=this.axisConfig.labelRotation>=-90&&this.axisConfig.labelRotation<=90?this.axisConfig.labelRotation*Math.PI/180:0}static{o(this,"BaseAxis")}setRange(t){this.range=t,this.axisPosition==="left"||this.axisPosition==="right"?this.boundingRect.height=t[1]-t[0]:this.boundingRect.width=t[1]-t[0],this.recalculateScale()}getRange(){return[this.range[0]+this.outerPadding,this.range[1]-this.outerPadding]}setAxisPosition(t){this.axisPosition=t,this.setRange(this.range)}getTickDistance(){let t=this.getRange();return Math.abs(t[0]-t[1])/this.getTickValues().length}getAxisOuterPadding(){return this.outerPadding}getLabelDimension(){return this.textDimensionCalculator.getMaxDimension(this.getTickValues().map(t=>t.toString()),this.axisConfig.labelFontSize)}recalculateOuterPaddingToDrawBar(){.7*this.getTickDistance()>this.outerPadding*2&&(this.outerPadding=Math.floor(.7*this.getTickDistance()/2)),this.recalculateScale()}calculateSpaceIfDrawnHorizontally(t){let r=t.height;if(this.axisConfig.showAxisLine&&r>this.axisConfig.axisLineWidth&&(r-=this.axisConfig.axisLineWidth,this.showAxisLine=!0),this.axisConfig.showLabel){let n=this.getLabelDimension(),i=.2*t.width;this.outerPadding=Math.min(n.width/2,i);let a=n.height;this.axisPosition==="bottom"&&this.normalizedLabelRotationInRad!==0&&(a=Math.max(a,Math.abs(Math.sin(this.normalizedLabelRotationInRad)*n.width)+Math.abs(Math.cos(this.normalizedLabelRotationInRad)*n.height))),a+=this.axisConfig.labelPadding*2,this.labelTextHeight=n.height,a<=r&&(r-=a,this.showLabel=!0)}if(this.axisConfig.showTick&&r>=this.axisConfig.tickLength&&(this.showTick=!0,r-=this.axisConfig.tickLength),this.axisConfig.showTitle&&this.title){let n=this.textDimensionCalculator.getMaxDimension([this.title],this.axisConfig.titleFontSize),i=n.height+this.axisConfig.titlePadding*2;this.titleTextHeight=n.height,i<=r&&(r-=i,this.showTitle=!0)}this.boundingRect.width=t.width,this.boundingRect.height=t.height-r}calculateSpaceIfDrawnVertical(t){let r=t.width;if(this.axisConfig.showAxisLine&&r>this.axisConfig.axisLineWidth&&(r-=this.axisConfig.axisLineWidth,this.showAxisLine=!0),this.axisConfig.showLabel){let n=this.getLabelDimension(),i=.2*t.height;this.outerPadding=Math.min(n.height/2,i);let a=n.width+this.axisConfig.labelPadding*2;a<=r&&(r-=a,this.showLabel=!0)}if(this.axisConfig.showTick&&r>=this.axisConfig.tickLength&&(this.showTick=!0,r-=this.axisConfig.tickLength),this.axisConfig.showTitle&&this.title){let n=this.textDimensionCalculator.getMaxDimension([this.title],this.axisConfig.titleFontSize),i=n.height+this.axisConfig.titlePadding*2;this.titleTextHeight=n.height,i<=r&&(r-=i,this.showTitle=!0)}this.boundingRect.width=t.width-r,this.boundingRect.height=t.height}calculateSpace(t){return this.axisPosition==="left"||this.axisPosition==="right"?this.calculateSpaceIfDrawnVertical(t):this.calculateSpaceIfDrawnHorizontally(t),this.recalculateScale(),{width:this.boundingRect.width,height:this.boundingRect.height}}setBoundingBoxXY(t){this.boundingRect.x=t.x,this.boundingRect.y=t.y}calculateOffsetByRotation(t){let r=this.normalizedLabelRotationInRad;return r===0?0:Math.sin(r)*this.getLabelDimension()[t]/2}getDrawableElementsForLeftAxis(){let t=[];if(this.showAxisLine){let r=this.boundingRect.x+this.boundingRect.width-this.axisConfig.axisLineWidth/2;t.push({type:"path",groupTexts:["left-axis","axisl-line"],data:[{path:`M ${r},${this.boundingRect.y} L ${r},${this.boundingRect.y+this.boundingRect.height} `,strokeFill:this.axisThemeConfig.axisLineColor,strokeWidth:this.axisConfig.axisLineWidth}]})}if(this.showLabel&&t.push({type:"text",groupTexts:["left-axis","label"],data:this.getTickValues().map(r=>({text:r.toString(),x:this.boundingRect.x+this.boundingRect.width-(this.showLabel?this.axisConfig.labelPadding:0)-(this.showTick?this.axisConfig.tickLength:0)-(this.showAxisLine?this.axisConfig.axisLineWidth:0),y:this.getScaleValue(r),fill:this.axisThemeConfig.labelColor,fontSize:this.axisConfig.labelFontSize,rotation:0,verticalPos:"middle",horizontalPos:"right"}))}),this.showTick){let r=this.boundingRect.x+this.boundingRect.width-(this.showAxisLine?this.axisConfig.axisLineWidth:0);t.push({type:"path",groupTexts:["left-axis","ticks"],data:this.getTickValues().map(n=>({path:`M ${r},${this.getScaleValue(n)} L ${r-this.axisConfig.tickLength},${this.getScaleValue(n)}`,strokeFill:this.axisThemeConfig.tickColor,strokeWidth:this.axisConfig.tickWidth}))})}return this.showTitle&&t.push({type:"text",groupTexts:["left-axis","title"],data:[{text:this.title,x:this.boundingRect.x+this.axisConfig.titlePadding,y:this.boundingRect.y+this.boundingRect.height/2,fill:this.axisThemeConfig.titleColor,fontSize:this.axisConfig.titleFontSize,rotation:270,verticalPos:"top",horizontalPos:"center"}]}),t}getDrawableElementsForBottomAxis(){let t=[];if(this.showAxisLine){let r=this.boundingRect.y+this.axisConfig.axisLineWidth/2;t.push({type:"path",groupTexts:["bottom-axis","axis-line"],data:[{path:`M ${this.boundingRect.x},${r} L ${this.boundingRect.x+this.boundingRect.width},${r}`,strokeFill:this.axisThemeConfig.axisLineColor,strokeWidth:this.axisConfig.axisLineWidth}]})}if(this.showLabel&&t.push({type:"text",groupTexts:["bottom-axis","label"],data:this.getTickValues().map(r=>({text:r.toString(),x:this.getScaleValue(r)+this.calculateOffsetByRotation("height"),y:this.boundingRect.y+this.axisConfig.labelPadding+(this.showTick?this.axisConfig.tickLength:0)+(this.showAxisLine?this.axisConfig.axisLineWidth:0)+Math.abs(this.calculateOffsetByRotation("width")),fill:this.axisThemeConfig.labelColor,fontSize:this.axisConfig.labelFontSize,rotation:this.normalizedLabelRotationInRad*180/Math.PI,verticalPos:"top",horizontalPos:"center"}))}),this.showTick){let r=this.boundingRect.y+(this.showAxisLine?this.axisConfig.axisLineWidth:0);t.push({type:"path",groupTexts:["bottom-axis","ticks"],data:this.getTickValues().map(n=>({path:`M ${this.getScaleValue(n)},${r} L ${this.getScaleValue(n)},${r+this.axisConfig.tickLength}`,strokeFill:this.axisThemeConfig.tickColor,strokeWidth:this.axisConfig.tickWidth}))})}return this.showTitle&&t.push({type:"text",groupTexts:["bottom-axis","title"],data:[{text:this.title,x:this.range[0]+(this.range[1]-this.range[0])/2,y:this.boundingRect.y+this.boundingRect.height-this.axisConfig.titlePadding-this.titleTextHeight,fill:this.axisThemeConfig.titleColor,fontSize:this.axisConfig.titleFontSize,rotation:0,verticalPos:"top",horizontalPos:"center"}]}),t}getDrawableElementsForTopAxis(){let t=[];if(this.showAxisLine){let r=this.boundingRect.y+this.boundingRect.height-this.axisConfig.axisLineWidth/2;t.push({type:"path",groupTexts:["top-axis","axis-line"],data:[{path:`M ${this.boundingRect.x},${r} L ${this.boundingRect.x+this.boundingRect.width},${r}`,strokeFill:this.axisThemeConfig.axisLineColor,strokeWidth:this.axisConfig.axisLineWidth}]})}if(this.showLabel&&t.push({type:"text",groupTexts:["top-axis","label"],data:this.getTickValues().map(r=>({text:r.toString(),x:this.getScaleValue(r),y:this.boundingRect.y+(this.showTitle?this.titleTextHeight+this.axisConfig.titlePadding*2:0)+this.axisConfig.labelPadding,fill:this.axisThemeConfig.labelColor,fontSize:this.axisConfig.labelFontSize,rotation:0,verticalPos:"top",horizontalPos:"center"}))}),this.showTick){let r=this.boundingRect.y;t.push({type:"path",groupTexts:["top-axis","ticks"],data:this.getTickValues().map(n=>({path:`M ${this.getScaleValue(n)},${r+this.boundingRect.height-(this.showAxisLine?this.axisConfig.axisLineWidth:0)} L ${this.getScaleValue(n)},${r+this.boundingRect.height-this.axisConfig.tickLength-(this.showAxisLine?this.axisConfig.axisLineWidth:0)}`,strokeFill:this.axisThemeConfig.tickColor,strokeWidth:this.axisConfig.tickWidth}))})}return this.showTitle&&t.push({type:"text",groupTexts:["top-axis","title"],data:[{text:this.title,x:this.boundingRect.x+this.boundingRect.width/2,y:this.boundingRect.y+this.axisConfig.titlePadding,fill:this.axisThemeConfig.titleColor,fontSize:this.axisConfig.titleFontSize,rotation:0,verticalPos:"top",horizontalPos:"center"}]}),t}getDrawableElements(){if(this.axisPosition==="left")return this.getDrawableElementsForLeftAxis();if(this.axisPosition==="right")throw Error("Drawing of right axis is not implemented");return this.axisPosition==="bottom"?this.getDrawableElementsForBottomAxis():this.axisPosition==="top"?this.getDrawableElementsForTopAxis():[]}}});var dL,m8e=F(()=>{"use strict";$r();vt();KU();dL=class extends ex{static{o(this,"BandAxis")}constructor(t,r,n,i,a){super(t,i,a,r),this.categories=n,this.scale=by().domain(this.categories).range(this.getRange())}setRange(t){super.setRange(t)}recalculateScale(){this.scale=by().domain(this.categories).range(this.getRange()).paddingInner(1).paddingOuter(0).align(.5),Z.trace("BandAxis axis final categories, range: ",this.categories,this.getRange())}getTickValues(){return this.categories}getScaleValue(t){return this.scale(t)??this.getRange()[0]}}});var fL,g8e=F(()=>{"use strict";$r();KU();fL=class extends ex{static{o(this,"LinearAxis")}constructor(t,r,n,i,a){super(t,i,a,r),this.domain=n,this.scale=Kl().domain(this.domain).range(this.getRange())}getTickValues(){return this.scale.ticks()}recalculateScale(){let t=[...this.domain];this.axisPosition==="left"&&t.reverse(),this.scale=Kl().domain(t).range(this.getRange())}getScaleValue(t){return this.scale(t)}}});function ZU(e,t,r,n){let i=new Jv(n);return Pw(e)?new dL(t,r,e.categories,e.title,i):new fL(t,r,[e.min,e.max],e.title,i)}var y8e=F(()=>{"use strict";hL();XU();m8e();g8e();o(ZU,"getAxis")});function v8e(e,t,r,n){let i=new Jv(n);return new QU(i,e,t,r)}var QU,x8e=F(()=>{"use strict";XU();QU=class{constructor(t,r,n,i){this.textDimensionCalculator=t;this.chartConfig=r;this.chartData=n;this.chartThemeConfig=i;this.boundingRect={x:0,y:0,width:0,height:0},this.showChartTitle=!1}static{o(this,"ChartTitle")}setBoundingBoxXY(t){this.boundingRect.x=t.x,this.boundingRect.y=t.y}calculateSpace(t){let r=this.textDimensionCalculator.getMaxDimension([this.chartData.title],this.chartConfig.titleFontSize),n=Math.max(r.width,t.width),i=r.height+2*this.chartConfig.titlePadding;return r.width<=n&&r.height<=i&&this.chartConfig.showTitle&&this.chartData.title&&(this.boundingRect.width=n,this.boundingRect.height=i,this.showChartTitle=!0),{width:this.boundingRect.width,height:this.boundingRect.height}}getDrawableElements(){let t=[];return this.showChartTitle&&t.push({groupTexts:["chart-title"],type:"text",data:[{fontSize:this.chartConfig.titleFontSize,text:this.chartData.title,verticalPos:"middle",horizontalPos:"center",x:this.boundingRect.x+this.boundingRect.width/2,y:this.boundingRect.y+this.boundingRect.height/2,fill:this.chartThemeConfig.titleColor,rotation:0}]}),t}};o(v8e,"getChartTitleComponent")});var pL,b8e=F(()=>{"use strict";$r();pL=class{constructor(t,r,n,i,a){this.plotData=t;this.xAxis=r;this.yAxis=n;this.orientation=i;this.plotIndex=a}static{o(this,"LinePlot")}getDrawableElement(){let t=this.plotData.data.map(i=>[this.xAxis.getScaleValue(i[0]),this.yAxis.getScaleValue(i[1])]),r;if(this.orientation==="horizontal"?r=tc().y(i=>i[0]).x(i=>i[1])(t):r=tc().x(i=>i[0]).y(i=>i[1])(t),!r)return[];let n=[{groupTexts:["plot",`line-plot-${this.plotIndex}`],type:"path",data:[{path:r,strokeFill:this.plotData.strokeFill,strokeWidth:this.plotData.strokeWidth}]}];if(this.plotData.pointLabels&&this.plotData.pointLabels.length>0){let s=[];for(let[l,[u,h]]of t.entries()){let d=this.plotData.pointLabels[l];d&&(this.orientation==="horizontal"?s.push({x:h+10,y:u,text:d,fill:this.plotData.strokeFill,verticalPos:"middle",horizontalPos:"left",fontSize:12,rotation:0}):s.push({x:u,y:h-10,text:d,fill:this.plotData.strokeFill,verticalPos:"middle",horizontalPos:"center",fontSize:12,rotation:0}))}s.length>0&&n.push({groupTexts:["plot",`line-plot-${this.plotIndex}`,"labels"],type:"text",data:s})}return n}}});var mL,T8e=F(()=>{"use strict";mL=class{constructor(t,r,n,i,a,s){this.barData=t;this.boundingRect=r;this.xAxis=n;this.yAxis=i;this.orientation=a;this.plotIndex=s}static{o(this,"BarPlot")}getDrawableElement(){let t=this.barData.data.map(a=>[this.xAxis.getScaleValue(a[0]),this.yAxis.getScaleValue(a[1])]),n=Math.min(this.xAxis.getAxisOuterPadding()*2,this.xAxis.getTickDistance())*(1-.05),i=n/2;return this.orientation==="horizontal"?[{groupTexts:["plot",`bar-plot-${this.plotIndex}`],type:"rect",data:t.map(a=>({x:this.boundingRect.x,y:a[0]-i,height:n,width:a[1]-this.boundingRect.x,fill:this.barData.fill,strokeWidth:0,strokeFill:this.barData.fill}))}]:[{groupTexts:["plot",`bar-plot-${this.plotIndex}`],type:"rect",data:t.map(a=>({x:a[0]-i,y:a[1],width:n,height:this.boundingRect.y+this.boundingRect.height-a[1],fill:this.barData.fill,strokeWidth:0,strokeFill:this.barData.fill}))}]}}});function C8e(e,t,r){return new JU(e,t,r)}var JU,w8e=F(()=>{"use strict";b8e();T8e();JU=class{constructor(t,r,n){this.chartConfig=t;this.chartData=r;this.chartThemeConfig=n;this.boundingRect={x:0,y:0,width:0,height:0}}static{o(this,"BasePlot")}setAxes(t,r){this.xAxis=t,this.yAxis=r}setBoundingBoxXY(t){this.boundingRect.x=t.x,this.boundingRect.y=t.y}calculateSpace(t){return this.boundingRect.width=t.width,this.boundingRect.height=t.height,{width:this.boundingRect.width,height:this.boundingRect.height}}getDrawableElements(){if(!(this.xAxis&&this.yAxis))throw Error("Axes must be passed to render Plots");let t=[];for(let[r,n]of this.chartData.plots.entries())switch(n.type){case"line":{let i=new pL(n,this.xAxis,this.yAxis,this.chartConfig.chartOrientation,r);t.push(...i.getDrawableElement())}break;case"bar":{let i=new mL(n,this.boundingRect,this.xAxis,this.yAxis,this.chartConfig.chartOrientation,r);t.push(...i.getDrawableElement())}break}return t}};o(C8e,"getPlotComponent")});var gL,k8e=F(()=>{"use strict";y8e();x8e();w8e();hL();gL=class{constructor(t,r,n,i){this.chartConfig=t;this.chartData=r;this.componentStore={title:v8e(t,r,n,i),plot:C8e(t,r,n),xAxis:ZU(r.xAxis,t.xAxis,{titleColor:n.xAxisTitleColor,labelColor:n.xAxisLabelColor,tickColor:n.xAxisTickColor,axisLineColor:n.xAxisLineColor},i),yAxis:ZU(r.yAxis,t.yAxis,{titleColor:n.yAxisTitleColor,labelColor:n.yAxisLabelColor,tickColor:n.yAxisTickColor,axisLineColor:n.yAxisLineColor},i)}}static{o(this,"Orchestrator")}calculateVerticalSpace(){let t=this.chartConfig.width,r=this.chartConfig.height,n=0,i=0,a=Math.floor(t*this.chartConfig.plotReservedSpacePercent/100),s=Math.floor(r*this.chartConfig.plotReservedSpacePercent/100),l=this.componentStore.plot.calculateSpace({width:a,height:s});t-=l.width,r-=l.height,l=this.componentStore.title.calculateSpace({width:this.chartConfig.width,height:r}),i=l.height,r-=l.height,this.componentStore.xAxis.setAxisPosition("bottom"),l=this.componentStore.xAxis.calculateSpace({width:t,height:r}),r-=l.height,this.componentStore.yAxis.setAxisPosition("left"),l=this.componentStore.yAxis.calculateSpace({width:t,height:r}),n=l.width,t-=l.width,t>0&&(a+=t,t=0),r>0&&(s+=r,r=0),this.componentStore.plot.calculateSpace({width:a,height:s}),this.componentStore.plot.setBoundingBoxXY({x:n,y:i}),this.componentStore.xAxis.setRange([n,n+a]),this.componentStore.xAxis.setBoundingBoxXY({x:n,y:i+s}),this.componentStore.yAxis.setRange([i,i+s]),this.componentStore.yAxis.setBoundingBoxXY({x:0,y:i}),this.chartData.plots.some(u=>jU(u))&&this.componentStore.xAxis.recalculateOuterPaddingToDrawBar()}calculateHorizontalSpace(){let t=this.chartConfig.width,r=this.chartConfig.height,n=0,i=0,a=0,s=Math.floor(t*this.chartConfig.plotReservedSpacePercent/100),l=Math.floor(r*this.chartConfig.plotReservedSpacePercent/100),u=this.componentStore.plot.calculateSpace({width:s,height:l});t-=u.width,r-=u.height,u=this.componentStore.title.calculateSpace({width:this.chartConfig.width,height:r}),n=u.height,r-=u.height,this.componentStore.xAxis.setAxisPosition("left"),u=this.componentStore.xAxis.calculateSpace({width:t,height:r}),t-=u.width,i=u.width,this.componentStore.yAxis.setAxisPosition("top"),u=this.componentStore.yAxis.calculateSpace({width:t,height:r}),r-=u.height,a=n+u.height,t>0&&(s+=t,t=0),r>0&&(l+=r,r=0),this.componentStore.plot.calculateSpace({width:s,height:l}),this.componentStore.plot.setBoundingBoxXY({x:i,y:a}),this.componentStore.yAxis.setRange([i,i+s]),this.componentStore.yAxis.setBoundingBoxXY({x:i,y:n}),this.componentStore.xAxis.setRange([a,a+l]),this.componentStore.xAxis.setBoundingBoxXY({x:0,y:a}),this.chartData.plots.some(h=>jU(h))&&this.componentStore.xAxis.recalculateOuterPaddingToDrawBar()}calculateSpace(){this.chartConfig.chartOrientation==="horizontal"?this.calculateHorizontalSpace():this.calculateVerticalSpace()}getDrawableElement(){this.calculateSpace();let t=[];this.componentStore.plot.setAxes(this.componentStore.xAxis,this.componentStore.yAxis);for(let r of Object.values(this.componentStore))t.push(...r.getDrawableElements());return t}}});var yL,S8e=F(()=>{"use strict";k8e();yL=class{static{o(this,"XYChartBuilder")}static build(t,r,n,i){return new gL(t,r,n,i).getDrawableElement()}}});function A8e(){let e=ma(),t=_t();return qr(e.xyChart,t.themeVariables.xyChart)}function R8e(){let e=_t();return qr(cr.xyChart,e.xyChart)}function _8e(){return{yAxis:{type:"linear",title:"",min:1/0,max:-1/0},xAxis:{type:"band",title:"",categories:[]},title:"",plots:[]}}function xL(e){let t=_t();return mr(e.trim(),t)}function wAt(e){E8e=e}function kAt(e){e==="horizontal"?Bw.chartOrientation="horizontal":Bw.chartOrientation="vertical"}function SAt(e){fn.xAxis.title=xL(e.text)}function L8e(e,t){fn.xAxis={type:"linear",title:fn.xAxis.title,min:e,max:t},vL=!0}function EAt(e){fn.xAxis={type:"band",title:fn.xAxis.title,categories:e.map(t=>xL(t.text))},vL=!0}function AAt(e){fn.yAxis.title=xL(e.text)}function RAt(e,t){fn.yAxis={type:"linear",title:fn.yAxis.title,min:e,max:t},tY=!0}function _At(e){let t=Math.min(...e),r=Math.max(...e),n=Qv(fn.yAxis)?fn.yAxis.min:1/0,i=Qv(fn.yAxis)?fn.yAxis.max:-1/0;fn.yAxis={type:"linear",title:fn.yAxis.title,min:Math.min(n,t),max:Math.max(i,r)}}function D8e(e){let t=[];if(e.length===0)return t;if(!vL){let r=Qv(fn.xAxis)?fn.xAxis.min:1/0,n=Qv(fn.xAxis)?fn.xAxis.max:-1/0;L8e(Math.min(r,1),Math.max(n,e.length))}if(Pw(fn.xAxis)&&e.length>fn.xAxis.categories.length&&(e=e.slice(0,fn.xAxis.categories.length)),tY||_At(e),Pw(fn.xAxis)&&(t=fn.xAxis.categories.map((r,n)=>[r,e[n]])),Qv(fn.xAxis)){let r=fn.xAxis.min,n=fn.xAxis.max,i=(n-r)/(e.length-1),a=[];for(let s=r;s<=n;s+=i)a.push(`${s}`);t=a.map((s,l)=>[s,e[l]])}return t}function I8e(e){return eY[e===0?0:e%eY.length]}function LAt(e,t){let r=t.map(s=>s.value),n=t.map(s=>s.label?xL(s.label):""),i=D8e(r),a=n.some(s=>s!=="");fn.plots.push({type:"line",strokeFill:I8e(Ow),strokeWidth:2,data:i,...a?{pointLabels:n}:{}}),Ow++}function DAt(e,t){let r=t.map(i=>i.value),n=D8e(r);fn.plots.push({type:"bar",fill:I8e(Ow),data:n}),Ow++}function IAt(){if(fn.plots.length===0)throw Error("No Plot to render, please provide a plot with some data");return fn.title=Lr(),yL.build(Bw,fn,$w,E8e)}function MAt(){return $w}function NAt(){return Bw}function PAt(){return fn}var Ow,E8e,Bw,$w,fn,eY,vL,tY,OAt,M8e,N8e=F(()=>{"use strict";ur();Wi();Pc();Qt();Vr();Nn();S8e();hL();Ow=0,Bw=R8e(),$w=A8e(),fn=_8e(),eY=$w.plotColorPalette.split(",").map(e=>e.trim()),vL=!1,tY=!1;o(A8e,"getChartDefaultThemeConfig");o(R8e,"getChartDefaultConfig");o(_8e,"getChartDefaultData");o(xL,"textSanitizer");o(wAt,"setTmpSVGG");o(kAt,"setOrientation");o(SAt,"setXAxisTitle");o(L8e,"setXAxisRangeData");o(EAt,"setXAxisBand");o(AAt,"setYAxisTitle");o(RAt,"setYAxisRangeData");o(_At,"setYAxisRangeFromPlotData");o(D8e,"transformDataWithoutCategory");o(I8e,"getPlotColorFromPalette");o(LAt,"setLineData");o(DAt,"setBarData");o(IAt,"getDrawableElem");o(MAt,"getChartThemeConfig");o(NAt,"getChartConfig");o(PAt,"getXYChartData");OAt=o(function(){yr(),Ow=0,Bw=R8e(),fn=_8e(),$w=A8e(),eY=$w.plotColorPalette.split(",").map(e=>e.trim()),vL=!1,tY=!1},"clear"),M8e={getDrawableElem:IAt,clear:OAt,setAccTitle:kr,getAccTitle:Ar,setDiagramTitle:Or,getDiagramTitle:Lr,getAccDescription:_r,setAccDescription:Rr,setOrientation:kAt,setXAxisTitle:SAt,setXAxisRangeData:L8e,setXAxisBand:EAt,setYAxisTitle:AAt,setYAxisRangeData:RAt,setLineData:LAt,setBarData:DAt,setTmpSVGG:wAt,getChartThemeConfig:MAt,getChartConfig:NAt,getXYChartData:PAt}});var BAt,P8e,O8e=F(()=>{"use strict";vt();Ka();$n();BAt=o((e,t,r,n)=>{let i=n.db,a=i.getChartThemeConfig(),s=i.getChartConfig(),l=i.getXYChartData().plots[0].data.map(T=>T[1]);function u(T){return T==="top"?"text-before-edge":"middle"}o(u,"getDominantBaseLine");function h(T){return T==="left"?"start":T==="right"?"end":"middle"}o(h,"getTextAnchor");function d(T){return`translate(${T.x}, ${T.y}) rotate(${T.rotation||0})`}o(d,"getTextTransformation"),Z.debug(`Rendering xychart chart
+`+e);let f=xn(t),p=f.append("g").attr("class","main"),m=p.append("rect").attr("width",s.width).attr("height",s.height).attr("class","background");Wr(f,s.height,s.width,!0),f.attr("viewBox",`0 0 ${s.width} ${s.height}`),m.attr("fill",a.backgroundColor),i.setTmpSVGG(f.append("g").attr("class","mermaid-tmp-group"));let g=i.getDrawableElem(),y={};function v(T){let k=p,C="";for(let[w]of T.entries()){let S=p;w>0&&y[C]&&(S=y[C]),C+=T[w],k=y[C],k||(k=y[C]=S.append("g").attr("class",T[w]))}return k}o(v,"getGroup");for(let T of g){if(T.data.length===0)continue;let k=v(T.groupTexts);switch(T.type){case"rect":if(k.selectAll("rect").data(T.data).enter().append("rect").attr("x",C=>C.x).attr("y",C=>C.y).attr("width",C=>C.width).attr("height",C=>C.height).attr("fill",C=>C.fill).attr("stroke",C=>C.strokeFill).attr("stroke-width",C=>C.strokeWidth),s.showDataLabel){let C=s.showDataLabelOutsideBar;if(s.chartOrientation==="horizontal"){let L=function(A,M){let{data:D,label:P}=A;return M*P.length*.7<=D.width-10};var x=L;o(L,"fitsHorizontally");let w=.7,S=10,R=T.data.map((A,M)=>({data:A,label:l[M].toString()})).filter(A=>A.data.width>0&&A.data.height>0),N=R.map(A=>{let{data:M}=A,D=M.height*.7;for(;!L(A,D)&&D>0;)D-=1;return D}),I=Math.floor(Math.min(...N)),_=o(A=>C?A.data.x+A.data.width+10:A.data.x+A.data.width-10,"determineLabelXPosition");k.selectAll("text").data(R).enter().append("text").attr("x",_).attr("y",A=>A.data.y+A.data.height/2).attr("text-anchor",C?"start":"end").attr("dominant-baseline","middle").attr("fill",a.dataLabelColor).attr("font-size",`${I}px`).text(A=>A.label)}else{let R=function(_,A,M){let{data:D,label:P}=_,O=A*P.length*.7,$=D.x+D.width/2,V=$-O/2,G=$+O/2,z=V>=D.x&&G<=D.x+D.width,W=D.y+M+A<=D.y+D.height;return z&&W};var b=R;o(R,"fitsInBar");let w=10,S=T.data.map((_,A)=>({data:_,label:l[A].toString()})).filter(_=>_.data.width>0&&_.data.height>0),L=S.map(_=>{let{data:A,label:M}=_,D=A.width/(M.length*.7);for(;!R(_,D,10)&&D>0;)D-=1;return D}),N=Math.floor(Math.min(...L)),I=o(_=>C?_.data.y-10:_.data.y+10,"determineLabelYPosition");k.selectAll("text").data(S).enter().append("text").attr("x",_=>_.data.x+_.data.width/2).attr("y",I).attr("text-anchor","middle").attr("dominant-baseline",C?"auto":"hanging").attr("fill",a.dataLabelColor).attr("font-size",`${N}px`).text(_=>_.label)}}break;case"text":k.selectAll("text").data(T.data).enter().append("text").attr("x",0).attr("y",0).attr("fill",C=>C.fill).attr("font-size",C=>C.fontSize).attr("dominant-baseline",C=>u(C.verticalPos)).attr("text-anchor",C=>h(C.horizontalPos)).attr("transform",C=>d(C)).text(C=>C.text);break;case"path":k.selectAll("path").data(T.data).enter().append("path").attr("d",C=>C.path).attr("fill",C=>C.fill?C.fill:"none").attr("stroke",C=>C.strokeFill).attr("stroke-width",C=>C.strokeWidth);break}}},"draw"),P8e={draw:BAt}});var B8e={};ir(B8e,{diagram:()=>$At});var $At,$8e=F(()=>{"use strict";p8e();N8e();O8e();$At={parser:f8e,db:M8e,renderer:P8e}});var rY,G8e,V8e=F(()=>{"use strict";rY=(function(){var e=o(function(ve,ne,q,he){for(q=q||{},he=ve.length;he--;q[ve[he]]=ne);return q},"o"),t=[1,3],r=[1,4],n=[1,5],i=[1,6],a=[5,6,8,9,11,13,21,22,23,24,41,42,43,44,45,46,54,72,74,77,89,90],s=[1,22],l=[2,7],u=[1,26],h=[1,27],d=[1,28],f=[1,29],p=[1,33],m=[1,34],g=[1,35],y=[1,36],v=[1,37],x=[1,38],b=[1,24],T=[1,31],k=[1,32],C=[1,30],w=[1,39],S=[1,40],R=[5,8,9,11,13,21,22,23,24,41,42,43,44,45,46,54,72,74,77,89,90],L=[1,61],N=[89,90],I=[5,8,9,11,13,21,22,23,24,27,29,41,42,43,44,45,46,54,61,63,72,74,75,76,77,80,81,82,83,84,85,86,87,88,89,90],_=[27,29],A=[1,70],M=[1,71],D=[1,72],P=[1,73],B=[1,74],O=[1,75],$=[1,76],V=[1,83],G=[1,80],z=[1,84],W=[1,85],H=[1,86],j=[1,87],Q=[1,88],U=[1,89],oe=[1,90],te=[1,91],le=[1,92],ie=[5,8,9,11,13,21,22,23,24,27,41,42,43,44,45,46,54,72,74,75,76,77,80,81,82,83,84,85,86,87,88,89,90],ae=[63,64],Re=[1,101],be=[5,8,9,11,13,21,22,23,24,41,42,43,44,45,46,54,72,74,76,77,89,90],Pe=[5,8,9,11,13,21,22,23,24,41,42,43,44,45,46,54,72,74,75,76,77,80,81,82,83,84,85,86,87,88,89,90],Ge=[1,110],Oe=[1,106],ue=[1,107],ye=[1,108],ke=[1,109],ce=[1,111],re=[1,116],J=[1,117],se=[1,114],ge=[1,115],Te={trace:o(function(){},"trace"),yy:{},symbols_:{error:2,start:3,directive:4,NEWLINE:5,RD:6,diagram:7,EOF:8,acc_title:9,acc_title_value:10,acc_descr:11,acc_descr_value:12,acc_descr_multiline_value:13,requirementDef:14,elementDef:15,relationshipDef:16,direction:17,styleStatement:18,classDefStatement:19,classStatement:20,direction_tb:21,direction_bt:22,direction_rl:23,direction_lr:24,requirementType:25,requirementName:26,STRUCT_START:27,requirementBody:28,STYLE_SEPARATOR:29,idList:30,ID:31,COLONSEP:32,id:33,TEXT:34,text:35,RISK:36,riskLevel:37,VERIFYMTHD:38,verifyType:39,STRUCT_STOP:40,REQUIREMENT:41,FUNCTIONAL_REQUIREMENT:42,INTERFACE_REQUIREMENT:43,PERFORMANCE_REQUIREMENT:44,PHYSICAL_REQUIREMENT:45,DESIGN_CONSTRAINT:46,LOW_RISK:47,MED_RISK:48,HIGH_RISK:49,VERIFY_ANALYSIS:50,VERIFY_DEMONSTRATION:51,VERIFY_INSPECTION:52,VERIFY_TEST:53,ELEMENT:54,elementName:55,elementBody:56,TYPE:57,type:58,DOCREF:59,ref:60,END_ARROW_L:61,relationship:62,LINE:63,END_ARROW_R:64,CONTAINS:65,COPIES:66,DERIVES:67,SATISFIES:68,VERIFIES:69,REFINES:70,TRACES:71,CLASSDEF:72,stylesOpt:73,CLASS:74,ALPHA:75,COMMA:76,STYLE:77,style:78,styleComponent:79,NUM:80,COLON:81,UNIT:82,SPACE:83,BRKT:84,PCT:85,MINUS:86,LABEL:87,SEMICOLON:88,unqString:89,qString:90,$accept:0,$end:1},terminals_:{2:"error",5:"NEWLINE",6:"RD",8:"EOF",9:"acc_title",10:"acc_title_value",11:"acc_descr",12:"acc_descr_value",13:"acc_descr_multiline_value",21:"direction_tb",22:"direction_bt",23:"direction_rl",24:"direction_lr",27:"STRUCT_START",29:"STYLE_SEPARATOR",31:"ID",32:"COLONSEP",34:"TEXT",36:"RISK",38:"VERIFYMTHD",40:"STRUCT_STOP",41:"REQUIREMENT",42:"FUNCTIONAL_REQUIREMENT",43:"INTERFACE_REQUIREMENT",44:"PERFORMANCE_REQUIREMENT",45:"PHYSICAL_REQUIREMENT",46:"DESIGN_CONSTRAINT",47:"LOW_RISK",48:"MED_RISK",49:"HIGH_RISK",50:"VERIFY_ANALYSIS",51:"VERIFY_DEMONSTRATION",52:"VERIFY_INSPECTION",53:"VERIFY_TEST",54:"ELEMENT",57:"TYPE",59:"DOCREF",61:"END_ARROW_L",63:"LINE",64:"END_ARROW_R",65:"CONTAINS",66:"COPIES",67:"DERIVES",68:"SATISFIES",69:"VERIFIES",70:"REFINES",71:"TRACES",72:"CLASSDEF",74:"CLASS",75:"ALPHA",76:"COMMA",77:"STYLE",80:"NUM",81:"COLON",82:"UNIT",83:"SPACE",84:"BRKT",85:"PCT",86:"MINUS",87:"LABEL",88:"SEMICOLON",89:"unqString",90:"qString"},productions_:[0,[3,3],[3,2],[3,4],[4,2],[4,2],[4,1],[7,0],[7,2],[7,2],[7,2],[7,2],[7,2],[7,2],[7,2],[7,2],[7,2],[17,1],[17,1],[17,1],[17,1],[14,5],[14,7],[28,5],[28,5],[28,5],[28,5],[28,2],[28,1],[25,1],[25,1],[25,1],[25,1],[25,1],[25,1],[37,1],[37,1],[37,1],[39,1],[39,1],[39,1],[39,1],[15,5],[15,7],[56,5],[56,5],[56,2],[56,1],[16,5],[16,5],[62,1],[62,1],[62,1],[62,1],[62,1],[62,1],[62,1],[19,3],[20,3],[20,3],[30,1],[30,3],[30,1],[30,3],[18,3],[73,1],[73,3],[78,1],[78,2],[79,1],[79,1],[79,1],[79,1],[79,1],[79,1],[79,1],[79,1],[79,1],[79,1],[26,1],[26,1],[33,1],[33,1],[35,1],[35,1],[55,1],[55,1],[58,1],[58,1],[60,1],[60,1]],performAction:o(function(ne,q,he,X,fe,K,qe){var _e=K.length-1;switch(fe){case 4:this.$=K[_e].trim(),X.setAccTitle(this.$);break;case 5:case 6:this.$=K[_e].trim(),X.setAccDescription(this.$);break;case 7:this.$=[];break;case 17:X.setDirection("TB");break;case 18:X.setDirection("BT");break;case 19:X.setDirection("RL");break;case 20:X.setDirection("LR");break;case 21:X.addRequirement(K[_e-3],K[_e-4]);break;case 22:X.addRequirement(K[_e-5],K[_e-6]),X.setClass([K[_e-5]],K[_e-3]);break;case 23:X.setNewReqId(K[_e-2]);break;case 24:X.setNewReqText(K[_e-2]);break;case 25:X.setNewReqRisk(K[_e-2]);break;case 26:X.setNewReqVerifyMethod(K[_e-2]);break;case 29:this.$=X.RequirementType.REQUIREMENT;break;case 30:this.$=X.RequirementType.FUNCTIONAL_REQUIREMENT;break;case 31:this.$=X.RequirementType.INTERFACE_REQUIREMENT;break;case 32:this.$=X.RequirementType.PERFORMANCE_REQUIREMENT;break;case 33:this.$=X.RequirementType.PHYSICAL_REQUIREMENT;break;case 34:this.$=X.RequirementType.DESIGN_CONSTRAINT;break;case 35:this.$=X.RiskLevel.LOW_RISK;break;case 36:this.$=X.RiskLevel.MED_RISK;break;case 37:this.$=X.RiskLevel.HIGH_RISK;break;case 38:this.$=X.VerifyType.VERIFY_ANALYSIS;break;case 39:this.$=X.VerifyType.VERIFY_DEMONSTRATION;break;case 40:this.$=X.VerifyType.VERIFY_INSPECTION;break;case 41:this.$=X.VerifyType.VERIFY_TEST;break;case 42:X.addElement(K[_e-3]);break;case 43:X.addElement(K[_e-5]),X.setClass([K[_e-5]],K[_e-3]);break;case 44:X.setNewElementType(K[_e-2]);break;case 45:X.setNewElementDocRef(K[_e-2]);break;case 48:X.addRelationship(K[_e-2],K[_e],K[_e-4]);break;case 49:X.addRelationship(K[_e-2],K[_e-4],K[_e]);break;case 50:this.$=X.Relationships.CONTAINS;break;case 51:this.$=X.Relationships.COPIES;break;case 52:this.$=X.Relationships.DERIVES;break;case 53:this.$=X.Relationships.SATISFIES;break;case 54:this.$=X.Relationships.VERIFIES;break;case 55:this.$=X.Relationships.REFINES;break;case 56:this.$=X.Relationships.TRACES;break;case 57:this.$=K[_e-2],X.defineClass(K[_e-1],K[_e]);break;case 58:X.setClass(K[_e-1],K[_e]);break;case 59:X.setClass([K[_e-2]],K[_e]);break;case 60:case 62:this.$=[K[_e]];break;case 61:case 63:this.$=K[_e-2].concat([K[_e]]);break;case 64:this.$=K[_e-2],X.setCssStyle(K[_e-1],K[_e]);break;case 65:this.$=[K[_e]];break;case 66:K[_e-2].push(K[_e]),this.$=K[_e-2];break;case 68:this.$=K[_e-1]+K[_e];break}},"anonymous"),table:[{3:1,4:2,6:t,9:r,11:n,13:i},{1:[3]},{3:8,4:2,5:[1,7],6:t,9:r,11:n,13:i},{5:[1,9]},{10:[1,10]},{12:[1,11]},e(a,[2,6]),{3:12,4:2,6:t,9:r,11:n,13:i},{1:[2,2]},{4:17,5:s,7:13,8:l,9:r,11:n,13:i,14:14,15:15,16:16,17:18,18:19,19:20,20:21,21:u,22:h,23:d,24:f,25:23,33:25,41:p,42:m,43:g,44:y,45:v,46:x,54:b,72:T,74:k,77:C,89:w,90:S},e(a,[2,4]),e(a,[2,5]),{1:[2,1]},{8:[1,41]},{4:17,5:s,7:42,8:l,9:r,11:n,13:i,14:14,15:15,16:16,17:18,18:19,19:20,20:21,21:u,22:h,23:d,24:f,25:23,33:25,41:p,42:m,43:g,44:y,45:v,46:x,54:b,72:T,74:k,77:C,89:w,90:S},{4:17,5:s,7:43,8:l,9:r,11:n,13:i,14:14,15:15,16:16,17:18,18:19,19:20,20:21,21:u,22:h,23:d,24:f,25:23,33:25,41:p,42:m,43:g,44:y,45:v,46:x,54:b,72:T,74:k,77:C,89:w,90:S},{4:17,5:s,7:44,8:l,9:r,11:n,13:i,14:14,15:15,16:16,17:18,18:19,19:20,20:21,21:u,22:h,23:d,24:f,25:23,33:25,41:p,42:m,43:g,44:y,45:v,46:x,54:b,72:T,74:k,77:C,89:w,90:S},{4:17,5:s,7:45,8:l,9:r,11:n,13:i,14:14,15:15,16:16,17:18,18:19,19:20,20:21,21:u,22:h,23:d,24:f,25:23,33:25,41:p,42:m,43:g,44:y,45:v,46:x,54:b,72:T,74:k,77:C,89:w,90:S},{4:17,5:s,7:46,8:l,9:r,11:n,13:i,14:14,15:15,16:16,17:18,18:19,19:20,20:21,21:u,22:h,23:d,24:f,25:23,33:25,41:p,42:m,43:g,44:y,45:v,46:x,54:b,72:T,74:k,77:C,89:w,90:S},{4:17,5:s,7:47,8:l,9:r,11:n,13:i,14:14,15:15,16:16,17:18,18:19,19:20,20:21,21:u,22:h,23:d,24:f,25:23,33:25,41:p,42:m,43:g,44:y,45:v,46:x,54:b,72:T,74:k,77:C,89:w,90:S},{4:17,5:s,7:48,8:l,9:r,11:n,13:i,14:14,15:15,16:16,17:18,18:19,19:20,20:21,21:u,22:h,23:d,24:f,25:23,33:25,41:p,42:m,43:g,44:y,45:v,46:x,54:b,72:T,74:k,77:C,89:w,90:S},{4:17,5:s,7:49,8:l,9:r,11:n,13:i,14:14,15:15,16:16,17:18,18:19,19:20,20:21,21:u,22:h,23:d,24:f,25:23,33:25,41:p,42:m,43:g,44:y,45:v,46:x,54:b,72:T,74:k,77:C,89:w,90:S},{4:17,5:s,7:50,8:l,9:r,11:n,13:i,14:14,15:15,16:16,17:18,18:19,19:20,20:21,21:u,22:h,23:d,24:f,25:23,33:25,41:p,42:m,43:g,44:y,45:v,46:x,54:b,72:T,74:k,77:C,89:w,90:S},{26:51,89:[1,52],90:[1,53]},{55:54,89:[1,55],90:[1,56]},{29:[1,59],61:[1,57],63:[1,58]},e(R,[2,17]),e(R,[2,18]),e(R,[2,19]),e(R,[2,20]),{30:60,33:62,75:L,89:w,90:S},{30:63,33:62,75:L,89:w,90:S},{30:64,33:62,75:L,89:w,90:S},e(N,[2,29]),e(N,[2,30]),e(N,[2,31]),e(N,[2,32]),e(N,[2,33]),e(N,[2,34]),e(I,[2,81]),e(I,[2,82]),{1:[2,3]},{8:[2,8]},{8:[2,9]},{8:[2,10]},{8:[2,11]},{8:[2,12]},{8:[2,13]},{8:[2,14]},{8:[2,15]},{8:[2,16]},{27:[1,65],29:[1,66]},e(_,[2,79]),e(_,[2,80]),{27:[1,67],29:[1,68]},e(_,[2,85]),e(_,[2,86]),{62:69,65:A,66:M,67:D,68:P,69:B,70:O,71:$},{62:77,65:A,66:M,67:D,68:P,69:B,70:O,71:$},{30:78,33:62,75:L,89:w,90:S},{73:79,75:V,76:G,78:81,79:82,80:z,81:W,82:H,83:j,84:Q,85:U,86:oe,87:te,88:le},e(ie,[2,60]),e(ie,[2,62]),{73:93,75:V,76:G,78:81,79:82,80:z,81:W,82:H,83:j,84:Q,85:U,86:oe,87:te,88:le},{30:94,33:62,75:L,76:G,89:w,90:S},{5:[1,95]},{30:96,33:62,75:L,89:w,90:S},{5:[1,97]},{30:98,33:62,75:L,89:w,90:S},{63:[1,99]},e(ae,[2,50]),e(ae,[2,51]),e(ae,[2,52]),e(ae,[2,53]),e(ae,[2,54]),e(ae,[2,55]),e(ae,[2,56]),{64:[1,100]},e(R,[2,59],{76:G}),e(R,[2,64],{76:Re}),{33:103,75:[1,102],89:w,90:S},e(be,[2,65],{79:104,75:V,80:z,81:W,82:H,83:j,84:Q,85:U,86:oe,87:te,88:le}),e(Pe,[2,67]),e(Pe,[2,69]),e(Pe,[2,70]),e(Pe,[2,71]),e(Pe,[2,72]),e(Pe,[2,73]),e(Pe,[2,74]),e(Pe,[2,75]),e(Pe,[2,76]),e(Pe,[2,77]),e(Pe,[2,78]),e(R,[2,57],{76:Re}),e(R,[2,58],{76:G}),{5:Ge,28:105,31:Oe,34:ue,36:ye,38:ke,40:ce},{27:[1,112],76:G},{5:re,40:J,56:113,57:se,59:ge},{27:[1,118],76:G},{33:119,89:w,90:S},{33:120,89:w,90:S},{75:V,78:121,79:82,80:z,81:W,82:H,83:j,84:Q,85:U,86:oe,87:te,88:le},e(ie,[2,61]),e(ie,[2,63]),e(Pe,[2,68]),e(R,[2,21]),{32:[1,122]},{32:[1,123]},{32:[1,124]},{32:[1,125]},{5:Ge,28:126,31:Oe,34:ue,36:ye,38:ke,40:ce},e(R,[2,28]),{5:[1,127]},e(R,[2,42]),{32:[1,128]},{32:[1,129]},{5:re,40:J,56:130,57:se,59:ge},e(R,[2,47]),{5:[1,131]},e(R,[2,48]),e(R,[2,49]),e(be,[2,66],{79:104,75:V,80:z,81:W,82:H,83:j,84:Q,85:U,86:oe,87:te,88:le}),{33:132,89:w,90:S},{35:133,89:[1,134],90:[1,135]},{37:136,47:[1,137],48:[1,138],49:[1,139]},{39:140,50:[1,141],51:[1,142],52:[1,143],53:[1,144]},e(R,[2,27]),{5:Ge,28:145,31:Oe,34:ue,36:ye,38:ke,40:ce},{58:146,89:[1,147],90:[1,148]},{60:149,89:[1,150],90:[1,151]},e(R,[2,46]),{5:re,40:J,56:152,57:se,59:ge},{5:[1,153]},{5:[1,154]},{5:[2,83]},{5:[2,84]},{5:[1,155]},{5:[2,35]},{5:[2,36]},{5:[2,37]},{5:[1,156]},{5:[2,38]},{5:[2,39]},{5:[2,40]},{5:[2,41]},e(R,[2,22]),{5:[1,157]},{5:[2,87]},{5:[2,88]},{5:[1,158]},{5:[2,89]},{5:[2,90]},e(R,[2,43]),{5:Ge,28:159,31:Oe,34:ue,36:ye,38:ke,40:ce},{5:Ge,28:160,31:Oe,34:ue,36:ye,38:ke,40:ce},{5:Ge,28:161,31:Oe,34:ue,36:ye,38:ke,40:ce},{5:Ge,28:162,31:Oe,34:ue,36:ye,38:ke,40:ce},{5:re,40:J,56:163,57:se,59:ge},{5:re,40:J,56:164,57:se,59:ge},e(R,[2,23]),e(R,[2,24]),e(R,[2,25]),e(R,[2,26]),e(R,[2,44]),e(R,[2,45])],defaultActions:{8:[2,2],12:[2,1],41:[2,3],42:[2,8],43:[2,9],44:[2,10],45:[2,11],46:[2,12],47:[2,13],48:[2,14],49:[2,15],50:[2,16],134:[2,83],135:[2,84],137:[2,35],138:[2,36],139:[2,37],141:[2,38],142:[2,39],143:[2,40],144:[2,41],147:[2,87],148:[2,88],150:[2,89],151:[2,90]},parseError:o(function(ne,q){if(q.recoverable)this.trace(ne);else{var he=new Error(ne);throw he.hash=q,he}},"parseError"),parse:o(function(ne){var q=this,he=[0],X=[],fe=[null],K=[],qe=this.table,_e="",Be=0,Ne=0,He=0,$e=2,Xe=1,Fe=K.slice.call(arguments,1),Ke=Object.create(this.lexer),xe={yy:{}};for(var mt in this.yy)Object.prototype.hasOwnProperty.call(this.yy,mt)&&(xe.yy[mt]=this.yy[mt]);Ke.setInput(ne,xe.yy),xe.yy.lexer=Ke,xe.yy.parser=this,typeof Ke.yylloc>"u"&&(Ke.yylloc={});var Le=Ke.yylloc;K.push(Le);var ft=Ke.options&&Ke.options.ranges;typeof xe.yy.parseError=="function"?this.parseError=xe.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function wt(Bt){he.length=he.length-2*Bt,fe.length=fe.length-Bt,K.length=K.length-Bt}o(wt,"popStack");function zt(){var Bt;return Bt=X.pop()||Ke.lex()||Xe,typeof Bt!="number"&&(Bt instanceof Array&&(X=Bt,Bt=X.pop()),Bt=q.symbols_[Bt]||Bt),Bt}o(zt,"lex");for(var St,At,bt,me,lt,gt,Ze={},Ee,tt,at,ot;;){if(bt=he[he.length-1],this.defaultActions[bt]?me=this.defaultActions[bt]:((St===null||typeof St>"u")&&(St=zt()),me=qe[bt]&&qe[bt][St]),typeof me>"u"||!me.length||!me[0]){var Wt="";ot=[];for(Ee in qe[bt])this.terminals_[Ee]&&Ee>$e&&ot.push("'"+this.terminals_[Ee]+"'");Ke.showPosition?Wt="Parse error on line "+(Be+1)+`:
+`+Ke.showPosition()+`
+Expecting `+ot.join(", ")+", got '"+(this.terminals_[St]||St)+"'":Wt="Parse error on line "+(Be+1)+": Unexpected "+(St==Xe?"end of input":"'"+(this.terminals_[St]||St)+"'"),this.parseError(Wt,{text:Ke.match,token:this.terminals_[St]||St,line:Ke.yylineno,loc:Le,expected:ot})}if(me[0]instanceof Array&&me.length>1)throw new Error("Parse Error: multiple actions possible at state: "+bt+", token: "+St);switch(me[0]){case 1:he.push(St),fe.push(Ke.yytext),K.push(Ke.yylloc),he.push(me[1]),St=null,At?(St=At,At=null):(Ne=Ke.yyleng,_e=Ke.yytext,Be=Ke.yylineno,Le=Ke.yylloc,He>0&&He--);break;case 2:if(tt=this.productions_[me[1]][1],Ze.$=fe[fe.length-tt],Ze._$={first_line:K[K.length-(tt||1)].first_line,last_line:K[K.length-1].last_line,first_column:K[K.length-(tt||1)].first_column,last_column:K[K.length-1].last_column},ft&&(Ze._$.range=[K[K.length-(tt||1)].range[0],K[K.length-1].range[1]]),gt=this.performAction.apply(Ze,[_e,Ne,Be,xe.yy,me[1],fe,K].concat(Fe)),typeof gt<"u")return gt;tt&&(he=he.slice(0,-1*tt*2),fe=fe.slice(0,-1*tt),K=K.slice(0,-1*tt)),he.push(this.productions_[me[1]][0]),fe.push(Ze.$),K.push(Ze._$),at=qe[he[he.length-2]][he[he.length-1]],he.push(at);break;case 3:return!0}}return!0},"parse")},we=(function(){var ve={EOF:1,parseError:o(function(q,he){if(this.yy.parser)this.yy.parser.parseError(q,he);else throw new Error(q)},"parseError"),setInput:o(function(ne,q){return this.yy=q||this.yy||{},this._input=ne,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},"setInput"),input:o(function(){var ne=this._input[0];this.yytext+=ne,this.yyleng++,this.offset++,this.match+=ne,this.matched+=ne;var q=ne.match(/(?:\r\n?|\n).*/g);return q?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),ne},"input"),unput:o(function(ne){var q=ne.length,he=ne.split(/(?:\r\n?|\n)/g);this._input=ne+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-q),this.offset-=q;var X=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),he.length-1&&(this.yylineno-=he.length-1);var fe=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:he?(he.length===X.length?this.yylloc.first_column:0)+X[X.length-he.length].length-he[0].length:this.yylloc.first_column-q},this.options.ranges&&(this.yylloc.range=[fe[0],fe[0]+this.yyleng-q]),this.yyleng=this.yytext.length,this},"unput"),more:o(function(){return this._more=!0,this},"more"),reject:o(function(){if(this.options.backtrack_lexer)this._backtrack=!0;else return this.parseError("Lexical error on line "+(this.yylineno+1)+`. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).
+`+this.showPosition(),{text:"",token:null,line:this.yylineno});return this},"reject"),less:o(function(ne){this.unput(this.match.slice(ne))},"less"),pastInput:o(function(){var ne=this.matched.substr(0,this.matched.length-this.match.length);return(ne.length>20?"...":"")+ne.substr(-20).replace(/\n/g,"")},"pastInput"),upcomingInput:o(function(){var ne=this.match;return ne.length<20&&(ne+=this._input.substr(0,20-ne.length)),(ne.substr(0,20)+(ne.length>20?"...":"")).replace(/\n/g,"")},"upcomingInput"),showPosition:o(function(){var ne=this.pastInput(),q=new Array(ne.length+1).join("-");return ne+this.upcomingInput()+`
+`+q+"^"},"showPosition"),test_match:o(function(ne,q){var he,X,fe;if(this.options.backtrack_lexer&&(fe={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(fe.yylloc.range=this.yylloc.range.slice(0))),X=ne[0].match(/(?:\r\n?|\n).*/g),X&&(this.yylineno+=X.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:X?X[X.length-1].length-X[X.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+ne[0].length},this.yytext+=ne[0],this.match+=ne[0],this.matches=ne,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(ne[0].length),this.matched+=ne[0],he=this.performAction.call(this,this.yy,this,q,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),he)return he;if(this._backtrack){for(var K in fe)this[K]=fe[K];return!1}return!1},"test_match"),next:o(function(){if(this.done)return this.EOF;this._input||(this.done=!0);var ne,q,he,X;this._more||(this.yytext="",this.match="");for(var fe=this._currentRules(),K=0;K<fe.length;K++)if(he=this._input.match(this.rules[fe[K]]),he&&(!q||he[0].length>q[0].length)){if(q=he,X=K,this.options.backtrack_lexer){if(ne=this.test_match(he,fe[K]),ne!==!1)return ne;if(this._backtrack){q=!1;continue}else return!1}else if(!this.options.flex)break}return q?(ne=this.test_match(q,fe[X]),ne!==!1?ne:!1):this._input===""?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+`. Unrecognized text.
+`+this.showPosition(),{text:"",token:null,line:this.yylineno})},"next"),lex:o(function(){var q=this.next();return q||this.lex()},"lex"),begin:o(function(q){this.conditionStack.push(q)},"begin"),popState:o(function(){var q=this.conditionStack.length-1;return q>0?this.conditionStack.pop():this.conditionStack[0]},"popState"),_currentRules:o(function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},"_currentRules"),topState:o(function(q){return q=this.conditionStack.length-1-Math.abs(q||0),q>=0?this.conditionStack[q]:"INITIAL"},"topState"),pushState:o(function(q){this.begin(q)},"pushState"),stateStackSize:o(function(){return this.conditionStack.length},"stateStackSize"),options:{"case-insensitive":!0},performAction:o(function(q,he,X,fe){var K=fe;switch(X){case 0:return"title";case 1:return this.begin("acc_title"),9;break;case 2:return this.popState(),"acc_title_value";break;case 3:return this.begin("acc_descr"),11;break;case 4:return this.popState(),"acc_descr_value";break;case 5:this.begin("acc_descr_multiline");break;case 6:this.popState();break;case 7:return"acc_descr_multiline_value";case 8:return 21;case 9:return 22;case 10:return 23;case 11:return 24;case 12:return 5;case 13:break;case 14:break;case 15:break;case 16:return 8;case 17:return 6;case 18:return 27;case 19:return 40;case 20:return 29;case 21:return 32;case 22:return 31;case 23:return 34;case 24:return 36;case 25:return 38;case 26:return 41;case 27:return 42;case 28:return 43;case 29:return 44;case 30:return 45;case 31:return 46;case 32:return 47;case 33:return 48;case 34:return 49;case 35:return 50;case 36:return 51;case 37:return 52;case 38:return 53;case 39:return 54;case 40:return 65;case 41:return 66;case 42:return 67;case 43:return 68;case 44:return 69;case 45:return 70;case 46:return 71;case 47:return 57;case 48:return 59;case 49:return this.begin("style"),77;break;case 50:return 75;case 51:return 81;case 52:return 88;case 53:return"PERCENT";case 54:return 86;case 55:return 84;case 56:break;case 57:this.begin("string");break;case 58:this.popState();break;case 59:return this.begin("style"),72;break;case 60:return this.begin("style"),74;break;case 61:return 61;case 62:return 64;case 63:return 63;case 64:this.begin("string");break;case 65:this.popState();break;case 66:return"qString";case 67:return he.yytext=he.yytext.trim(),89;break;case 68:return 75;case 69:return 80;case 70:return 76}},"anonymous"),rules:[/^(?:title\s[^#\n;]+)/i,/^(?:accTitle\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*\{\s*)/i,/^(?:[\}])/i,/^(?:[^\}]*)/i,/^(?:.*direction\s+TB[^\n]*)/i,/^(?:.*direction\s+BT[^\n]*)/i,/^(?:.*direction\s+RL[^\n]*)/i,/^(?:.*direction\s+LR[^\n]*)/i,/^(?:(\r?\n)+)/i,/^(?:\s+)/i,/^(?:#[^\n]*)/i,/^(?:%[^\n]*)/i,/^(?:$)/i,/^(?:requirementDiagram\b)/i,/^(?:\{)/i,/^(?:\})/i,/^(?::{3})/i,/^(?::)/i,/^(?:id\b)/i,/^(?:text\b)/i,/^(?:risk\b)/i,/^(?:verifyMethod\b)/i,/^(?:requirement\b)/i,/^(?:functionalRequirement\b)/i,/^(?:interfaceRequirement\b)/i,/^(?:performanceRequirement\b)/i,/^(?:physicalRequirement\b)/i,/^(?:designConstraint\b)/i,/^(?:low\b)/i,/^(?:medium\b)/i,/^(?:high\b)/i,/^(?:analysis\b)/i,/^(?:demonstration\b)/i,/^(?:inspection\b)/i,/^(?:test\b)/i,/^(?:element\b)/i,/^(?:contains\b)/i,/^(?:copies\b)/i,/^(?:derives\b)/i,/^(?:satisfies\b)/i,/^(?:verifies\b)/i,/^(?:refines\b)/i,/^(?:traces\b)/i,/^(?:type\b)/i,/^(?:docref\b)/i,/^(?:style\b)/i,/^(?:\w+)/i,/^(?::)/i,/^(?:;)/i,/^(?:%)/i,/^(?:-)/i,/^(?:#)/i,/^(?: )/i,/^(?:["])/i,/^(?:\n)/i,/^(?:classDef\b)/i,/^(?:class\b)/i,/^(?:<-)/i,/^(?:->)/i,/^(?:-)/i,/^(?:["])/i,/^(?:["])/i,/^(?:[^"]*)/i,/^(?:[\w][^:,\r\n\{\<\>\-\=]*)/i,/^(?:\w+)/i,/^(?:[0-9]+)/i,/^(?:,)/i],conditions:{acc_descr_multiline:{rules:[6,7,68,69,70],inclusive:!1},acc_descr:{rules:[4,68,69,70],inclusive:!1},acc_title:{rules:[2,68,69,70],inclusive:!1},style:{rules:[50,51,52,53,54,55,56,57,58,68,69,70],inclusive:!1},unqString:{rules:[68,69,70],inclusive:!1},token:{rules:[68,69,70],inclusive:!1},string:{rules:[65,66,68,69,70],inclusive:!1},INITIAL:{rules:[0,1,3,5,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,59,60,61,62,63,64,67,68,69,70],inclusive:!0}}};return ve})();Te.lexer=we;function Me(){this.yy={}}return o(Me,"Parser"),Me.prototype=Te,Te.Parser=Me,new Me})();rY.parser=rY;G8e=rY});var bL,W8e=F(()=>{"use strict";Xt();vt();Nn();bL=class{constructor(){this.relations=[];this.latestRequirement=this.getInitialRequirement();this.requirements=new Map;this.latestElement=this.getInitialElement();this.elements=new Map;this.classes=new Map;this.direction="TB";this.RequirementType={REQUIREMENT:"Requirement",FUNCTIONAL_REQUIREMENT:"Functional Requirement",INTERFACE_REQUIREMENT:"Interface Requirement",PERFORMANCE_REQUIREMENT:"Performance Requirement",PHYSICAL_REQUIREMENT:"Physical Requirement",DESIGN_CONSTRAINT:"Design Constraint"};this.RiskLevel={LOW_RISK:"Low",MED_RISK:"Medium",HIGH_RISK:"High"};this.VerifyType={VERIFY_ANALYSIS:"Analysis",VERIFY_DEMONSTRATION:"Demonstration",VERIFY_INSPECTION:"Inspection",VERIFY_TEST:"Test"};this.Relationships={CONTAINS:"contains",COPIES:"copies",DERIVES:"derives",SATISFIES:"satisfies",VERIFIES:"verifies",REFINES:"refines",TRACES:"traces"};this.setAccTitle=kr;this.getAccTitle=Ar;this.setAccDescription=Rr;this.getAccDescription=_r;this.setDiagramTitle=Or;this.getDiagramTitle=Lr;this.getConfig=o(()=>Ae().requirement,"getConfig");this.clear(),this.setDirection=this.setDirection.bind(this),this.addRequirement=this.addRequirement.bind(this),this.setNewReqId=this.setNewReqId.bind(this),this.setNewReqRisk=this.setNewReqRisk.bind(this),this.setNewReqText=this.setNewReqText.bind(this),this.setNewReqVerifyMethod=this.setNewReqVerifyMethod.bind(this),this.addElement=this.addElement.bind(this),this.setNewElementType=this.setNewElementType.bind(this),this.setNewElementDocRef=this.setNewElementDocRef.bind(this),this.addRelationship=this.addRelationship.bind(this),this.setCssStyle=this.setCssStyle.bind(this),this.setClass=this.setClass.bind(this),this.defineClass=this.defineClass.bind(this),this.setAccTitle=this.setAccTitle.bind(this),this.setAccDescription=this.setAccDescription.bind(this)}static{o(this,"RequirementDB")}getDirection(){return this.direction}setDirection(t){this.direction=t}resetLatestRequirement(){this.latestRequirement=this.getInitialRequirement()}resetLatestElement(){this.latestElement=this.getInitialElement()}getInitialRequirement(){return{requirementId:"",text:"",risk:"",verifyMethod:"",name:"",type:"",cssStyles:[],classes:["default"]}}getInitialElement(){return{name:"",type:"",docRef:"",cssStyles:[],classes:["default"]}}addRequirement(t,r){return this.requirements.has(t)||this.requirements.set(t,{name:t,type:r,requirementId:this.latestRequirement.requirementId,text:this.latestRequirement.text,risk:this.latestRequirement.risk,verifyMethod:this.latestRequirement.verifyMethod,cssStyles:[],classes:["default"]}),this.resetLatestRequirement(),this.requirements.get(t)}getRequirements(){return this.requirements}setNewReqId(t){this.latestRequirement!==void 0&&(this.latestRequirement.requirementId=t)}setNewReqText(t){this.latestRequirement!==void 0&&(this.latestRequirement.text=t)}setNewReqRisk(t){this.latestRequirement!==void 0&&(this.latestRequirement.risk=t)}setNewReqVerifyMethod(t){this.latestRequirement!==void 0&&(this.latestRequirement.verifyMethod=t)}addElement(t){return this.elements.has(t)||(this.elements.set(t,{name:t,type:this.latestElement.type,docRef:this.latestElement.docRef,cssStyles:[],classes:["default"]}),Z.info("Added new element: ",t)),this.resetLatestElement(),this.elements.get(t)}getElements(){return this.elements}setNewElementType(t){this.latestElement!==void 0&&(this.latestElement.type=t)}setNewElementDocRef(t){this.latestElement!==void 0&&(this.latestElement.docRef=t)}addRelationship(t,r,n){this.relations.push({type:t,src:r,dst:n})}getRelationships(){return this.relations}clear(){this.relations=[],this.resetLatestRequirement(),this.requirements=new Map,this.resetLatestElement(),this.elements=new Map,this.classes=new Map,yr()}setCssStyle(t,r){for(let n of t){let i=this.requirements.get(n)??this.elements.get(n);if(!r||!i)return;for(let a of r)a.includes(",")?i.cssStyles.push(...a.split(",")):i.cssStyles.push(a)}}setClass(t,r){for(let n of t){let i=this.requirements.get(n)??this.elements.get(n);if(i)for(let a of r){i.classes.push(a);let s=this.classes.get(a)?.styles;s&&i.cssStyles.push(...s)}}}defineClass(t,r){for(let n of t){let i=this.classes.get(n);i===void 0&&(i={id:n,styles:[],textStyles:[]},this.classes.set(n,i)),r&&r.forEach(function(a){if(/color/.exec(a)){let s=a.replace("fill","bgFill");i.textStyles.push(s)}i.styles.push(a)}),this.requirements.forEach(a=>{a.classes.includes(n)&&a.cssStyles.push(...r.flatMap(s=>s.split(",")))}),this.elements.forEach(a=>{a.classes.includes(n)&&a.cssStyles.push(...r.flatMap(s=>s.split(",")))})}}getClasses(){return this.classes}getData(){let t=Ae(),r=[],n=[];for(let i of this.requirements.values()){let a=i;a.id=i.name,a.cssStyles=i.cssStyles,a.cssClasses=i.classes.join(" "),a.shape="requirementBox",a.look=t.look,a.colorIndex=r.length,r.push(a)}for(let i of this.elements.values()){let a=i;a.shape="requirementBox",a.look=t.look,a.id=i.name,a.cssStyles=i.cssStyles,a.cssClasses=i.classes.join(" "),a.colorIndex=r.length,r.push(a)}for(let i of this.relations){let a=0,s=i.type===this.Relationships.CONTAINS,l={id:`${i.src}-${i.dst}-${a}`,start:this.requirements.get(i.src)?.name??this.elements.get(i.src)?.name,end:this.requirements.get(i.dst)?.name??this.elements.get(i.dst)?.name,label:`&lt;&lt;${i.type}&gt;&gt;`,classes:"relationshipLine",style:["fill:none",s?"":"stroke-dasharray: 10,7"],labelpos:"c",thickness:"normal",type:"normal",pattern:s?"normal":"dashed",arrowTypeStart:s?"requirement_contains":"",arrowTypeEnd:s?"":"requirement_arrow",look:t.look,labelType:"markdown"};n.push(l),a++}return{nodes:r,edges:n,other:{},config:t,direction:this.getDirection()}}}});var VAt,WAt,q8e,H8e=F(()=>{"use strict";ur();VAt=o(e=>{let t=_t(),{themeVariables:r,look:n}=t,{bkgColorArray:i,borderColorArray:a}=r;if(!a?.length)return"";let s="";for(let l=0;l<e.THEME_COLOR_LIMIT;l++)s+=`
 
-    [data-look="${i}"][data-color-id="color-${l}"].node path {
+    [data-look="${n}"][data-color-id="color-${l}"].node path {
     stroke: ${a[l]};
-    fill: ${n?.length?n[l]:""};
+    fill: ${i?.length?i[l]:""};
     }
 
-    [data-look="${i}"][data-color-id="color-${l}"].node  rect {
+    [data-look="${n}"][data-color-id="color-${l}"].node  rect {
     stroke: ${a[l]};
-    fill: ${n?.length?n[l]:""};
+    fill: ${i?.length?i[l]:""};
      }
-    `;return s},"genColor"),yTt=o(e=>{let t=Nt(),{look:r,themeVariables:i}=t,{requirementEdgeLabelBackground:n}=i;return`
-  ${gTt(e)}
+    `;return s},"genColor"),WAt=o(e=>{let t=_t(),{look:r,themeVariables:n}=t,{requirementEdgeLabelBackground:i}=n;return`
+  ${VAt(e)}
   marker {
     fill: ${e.relationColor};
     stroke: ${e.relationColor};
@@ -1820,19 +1834,19 @@
     color: ${e.nodeTextColor||e.textColor};
   }
   .labelBkg {
-    background-color: ${n??e.edgeLabelBackground};
+    background-color: ${i??e.edgeLabelBackground};
   }
 
-`},"getStyles"),QAe=yTt});var iW={};xr(iW,{draw:()=>vTt});var vTt,e6e=z(()=>{"use strict";Ut();St();Lp();tf();rf();Xt();vTt=o(async function(e,t,r,i){Z.info("REF0:"),Z.info("Drawing requirement diagram (unified)",t);let{securityLevel:n,state:a,layout:s,look:l}=ge(),u=i.db.getData(),h=Fo(t,n);u.type=i.type,u.layoutAlgorithm=Gc(s),u.nodeSpacing=a?.nodeSpacing??50,u.rankSpacing=a?.rankSpacing??50,u.markers=l==="neo"?["requirement_contains_neo","requirement_arrow_neo"]:["requirement_contains","requirement_arrow"],u.diagramId=t,await Zo(u,h);let d=8;Zt.insertTitle(h,"requirementDiagramTitleText",a?.titleTopMargin??25,i.db.getDiagramTitle()),$s(h,d,"requirementDiagram",a?.useMaxWidth??!0)},"draw")});var t6e={};xr(t6e,{diagram:()=>xTt});var xTt,r6e=z(()=>{"use strict";KAe();ZAe();JAe();e6e();xTt={parser:XAe,get db(){return new V6},renderer:iW,styles:QAe}});var nW,a6e,s6e=z(()=>{"use strict";nW=(function(){var e=o(function(be,Be,Ae,Ve){for(Ae=Ae||{},Ve=be.length;Ve--;Ae[be[Ve]]=Be);return Ae},"o"),t=[1,2],r=[1,3],i=[1,4],n=[2,4],a=[1,9],s=[1,11],l=[1,12],u=[1,14],h=[1,15],d=[1,17],f=[1,18],p=[1,19],m=[1,25],g=[1,26],y=[1,27],v=[1,28],x=[1,29],b=[1,30],T=[1,31],w=[1,32],C=[1,33],k=[1,34],E=[1,35],A=[1,36],N=[1,37],P=[1,38],I=[1,39],D=[1,40],_=[1,42],R=[1,43],M=[1,44],L=[1,45],B=[1,46],O=[1,47],$=[1,4,5,10,14,15,17,19,22,24,30,31,32,34,36,37,38,39,40,42,44,45,47,48,49,50,51,53,54,56,61,62,63,64,73],G=[1,74],F=[1,80],V=[1,81],H=[1,82],j=[1,83],U=[1,84],Q=[1,85],Y=[1,86],ae=[1,87],J=[1,88],te=[1,89],re=[1,90],ee=[1,91],Te=[1,92],ue=[1,93],De=[1,94],Ie=[1,95],Ee=[1,96],we=[1,97],Me=[1,98],$e=[1,99],de=[1,100],rt=[1,101],ke=[1,102],Fe=[1,103],He=[1,104],at=[1,105],qe=[2,78],Ue=[4,5,17,51,53,54],ye=[4,5,10,14,15,17,19,22,24,30,31,32,34,36,37,38,39,40,42,44,45,47,51,53,54,56,61,62,63,64,73],ve=[4,5,10,14,15,17,19,22,24,30,31,32,34,36,37,38,39,40,42,44,45,47,50,51,53,54,56,61,62,63,64,73],ie=[4,5,10,14,15,17,19,22,24,30,31,32,34,36,37,38,39,40,42,44,45,47,49,51,53,54,56,61,62,63,64,73],fe=[4,5,10,14,15,17,19,22,24,30,31,32,34,36,37,38,39,40,42,44,45,47,48,51,53,54,56,61,62,63,64,73],W=[5,52],ce=[70,71,72,73],K=[1,151],Re={trace:o(function(){},"trace"),yy:{},symbols_:{error:2,start:3,SPACE:4,NEWLINE:5,SD:6,document:7,line:8,statement:9,INVALID:10,box_section:11,box_line:12,participant_statement:13,create:14,box:15,restOfLine:16,end:17,signal:18,autonumber:19,NUM:20,off:21,activate:22,actor:23,deactivate:24,note_statement:25,links_statement:26,link_statement:27,properties_statement:28,details_statement:29,title:30,legacy_title:31,acc_title:32,acc_title_value:33,acc_descr:34,acc_descr_value:35,acc_descr_multiline_value:36,loop:37,rect:38,opt:39,alt:40,else_sections:41,par:42,par_sections:43,par_over:44,critical:45,option_sections:46,break:47,option:48,and:49,else:50,participant:51,AS:52,participant_actor:53,destroy:54,actor_with_config:55,note:56,placement:57,text2:58,over:59,actor_pair:60,links:61,link:62,properties:63,details:64,spaceList:65,",":66,left_of:67,right_of:68,signaltype:69,"+":70,"-":71,"()":72,ACTOR:73,config_object:74,CONFIG_START:75,CONFIG_CONTENT:76,CONFIG_END:77,SOLID_OPEN_ARROW:78,DOTTED_OPEN_ARROW:79,SOLID_ARROW:80,SOLID_ARROW_TOP:81,SOLID_ARROW_BOTTOM:82,STICK_ARROW_TOP:83,STICK_ARROW_BOTTOM:84,SOLID_ARROW_TOP_DOTTED:85,SOLID_ARROW_BOTTOM_DOTTED:86,STICK_ARROW_TOP_DOTTED:87,STICK_ARROW_BOTTOM_DOTTED:88,SOLID_ARROW_TOP_REVERSE:89,SOLID_ARROW_BOTTOM_REVERSE:90,STICK_ARROW_TOP_REVERSE:91,STICK_ARROW_BOTTOM_REVERSE:92,SOLID_ARROW_TOP_REVERSE_DOTTED:93,SOLID_ARROW_BOTTOM_REVERSE_DOTTED:94,STICK_ARROW_TOP_REVERSE_DOTTED:95,STICK_ARROW_BOTTOM_REVERSE_DOTTED:96,BIDIRECTIONAL_SOLID_ARROW:97,DOTTED_ARROW:98,BIDIRECTIONAL_DOTTED_ARROW:99,SOLID_CROSS:100,DOTTED_CROSS:101,SOLID_POINT:102,DOTTED_POINT:103,TXT:104,$accept:0,$end:1},terminals_:{2:"error",4:"SPACE",5:"NEWLINE",6:"SD",10:"INVALID",14:"create",15:"box",16:"restOfLine",17:"end",19:"autonumber",20:"NUM",21:"off",22:"activate",24:"deactivate",30:"title",31:"legacy_title",32:"acc_title",33:"acc_title_value",34:"acc_descr",35:"acc_descr_value",36:"acc_descr_multiline_value",37:"loop",38:"rect",39:"opt",40:"alt",42:"par",44:"par_over",45:"critical",47:"break",48:"option",49:"and",50:"else",51:"participant",52:"AS",53:"participant_actor",54:"destroy",56:"note",59:"over",61:"links",62:"link",63:"properties",64:"details",66:",",67:"left_of",68:"right_of",70:"+",71:"-",72:"()",73:"ACTOR",75:"CONFIG_START",76:"CONFIG_CONTENT",77:"CONFIG_END",78:"SOLID_OPEN_ARROW",79:"DOTTED_OPEN_ARROW",80:"SOLID_ARROW",81:"SOLID_ARROW_TOP",82:"SOLID_ARROW_BOTTOM",83:"STICK_ARROW_TOP",84:"STICK_ARROW_BOTTOM",85:"SOLID_ARROW_TOP_DOTTED",86:"SOLID_ARROW_BOTTOM_DOTTED",87:"STICK_ARROW_TOP_DOTTED",88:"STICK_ARROW_BOTTOM_DOTTED",89:"SOLID_ARROW_TOP_REVERSE",90:"SOLID_ARROW_BOTTOM_REVERSE",91:"STICK_ARROW_TOP_REVERSE",92:"STICK_ARROW_BOTTOM_REVERSE",93:"SOLID_ARROW_TOP_REVERSE_DOTTED",94:"SOLID_ARROW_BOTTOM_REVERSE_DOTTED",95:"STICK_ARROW_TOP_REVERSE_DOTTED",96:"STICK_ARROW_BOTTOM_REVERSE_DOTTED",97:"BIDIRECTIONAL_SOLID_ARROW",98:"DOTTED_ARROW",99:"BIDIRECTIONAL_DOTTED_ARROW",100:"SOLID_CROSS",101:"DOTTED_CROSS",102:"SOLID_POINT",103:"DOTTED_POINT",104:"TXT"},productions_:[0,[3,2],[3,2],[3,2],[7,0],[7,2],[8,2],[8,1],[8,1],[8,1],[11,0],[11,2],[12,2],[12,1],[12,1],[9,1],[9,2],[9,4],[9,2],[9,4],[9,3],[9,3],[9,2],[9,3],[9,3],[9,2],[9,2],[9,2],[9,2],[9,2],[9,1],[9,1],[9,2],[9,2],[9,1],[9,4],[9,4],[9,4],[9,4],[9,4],[9,4],[9,4],[9,4],[46,1],[46,4],[43,1],[43,4],[41,1],[41,4],[13,5],[13,3],[13,5],[13,3],[13,3],[13,5],[13,3],[13,5],[13,3],[25,4],[25,4],[26,3],[27,3],[28,3],[29,3],[65,2],[65,1],[60,3],[60,1],[57,1],[57,1],[18,5],[18,5],[18,5],[18,5],[18,6],[18,4],[55,2],[74,3],[23,1],[69,1],[69,1],[69,1],[69,1],[69,1],[69,1],[69,1],[69,1],[69,1],[69,1],[69,1],[69,1],[69,1],[69,1],[69,1],[69,1],[69,1],[69,1],[69,1],[69,1],[69,1],[69,1],[69,1],[69,1],[69,1],[69,1],[58,1]],performAction:o(function(Be,Ae,Ve,Pe,Ye,le,st){var me=le.length-1;switch(Ye){case 3:return Pe.apply(le[me]),le[me];break;case 4:case 10:this.$=[];break;case 5:case 11:le[me-1].push(le[me]),this.$=le[me-1];break;case 6:case 7:case 12:case 13:this.$=le[me];break;case 8:case 9:case 14:this.$=[];break;case 16:le[me].type="createParticipant",this.$=le[me];break;case 17:le[me-1].unshift({type:"boxStart",boxData:Pe.parseBoxData(le[me-2])}),le[me-1].push({type:"boxEnd",boxText:le[me-2]}),this.$=le[me-1];break;case 19:this.$={type:"sequenceIndex",sequenceIndex:Number(le[me-2]),sequenceIndexStep:Number(le[me-1]),sequenceVisible:!0,signalType:Pe.LINETYPE.AUTONUMBER};break;case 20:this.$={type:"sequenceIndex",sequenceIndex:Number(le[me-1]),sequenceIndexStep:1,sequenceVisible:!0,signalType:Pe.LINETYPE.AUTONUMBER};break;case 21:this.$={type:"sequenceIndex",sequenceVisible:!1,signalType:Pe.LINETYPE.AUTONUMBER};break;case 22:this.$={type:"sequenceIndex",sequenceVisible:!0,signalType:Pe.LINETYPE.AUTONUMBER};break;case 23:this.$={type:"activeStart",signalType:Pe.LINETYPE.ACTIVE_START,actor:le[me-1].actor};break;case 24:this.$={type:"activeEnd",signalType:Pe.LINETYPE.ACTIVE_END,actor:le[me-1].actor};break;case 30:Pe.setDiagramTitle(le[me].substring(6)),this.$=le[me].substring(6);break;case 31:Pe.setDiagramTitle(le[me].substring(7)),this.$=le[me].substring(7);break;case 32:this.$=le[me].trim(),Pe.setAccTitle(this.$);break;case 33:case 34:this.$=le[me].trim(),Pe.setAccDescription(this.$);break;case 35:le[me-1].unshift({type:"loopStart",loopText:Pe.parseMessage(le[me-2]),signalType:Pe.LINETYPE.LOOP_START}),le[me-1].push({type:"loopEnd",loopText:le[me-2],signalType:Pe.LINETYPE.LOOP_END}),this.$=le[me-1];break;case 36:le[me-1].unshift({type:"rectStart",color:Pe.parseMessage(le[me-2]),signalType:Pe.LINETYPE.RECT_START}),le[me-1].push({type:"rectEnd",color:Pe.parseMessage(le[me-2]),signalType:Pe.LINETYPE.RECT_END}),this.$=le[me-1];break;case 37:le[me-1].unshift({type:"optStart",optText:Pe.parseMessage(le[me-2]),signalType:Pe.LINETYPE.OPT_START}),le[me-1].push({type:"optEnd",optText:Pe.parseMessage(le[me-2]),signalType:Pe.LINETYPE.OPT_END}),this.$=le[me-1];break;case 38:le[me-1].unshift({type:"altStart",altText:Pe.parseMessage(le[me-2]),signalType:Pe.LINETYPE.ALT_START}),le[me-1].push({type:"altEnd",signalType:Pe.LINETYPE.ALT_END}),this.$=le[me-1];break;case 39:le[me-1].unshift({type:"parStart",parText:Pe.parseMessage(le[me-2]),signalType:Pe.LINETYPE.PAR_START}),le[me-1].push({type:"parEnd",signalType:Pe.LINETYPE.PAR_END}),this.$=le[me-1];break;case 40:le[me-1].unshift({type:"parStart",parText:Pe.parseMessage(le[me-2]),signalType:Pe.LINETYPE.PAR_OVER_START}),le[me-1].push({type:"parEnd",signalType:Pe.LINETYPE.PAR_END}),this.$=le[me-1];break;case 41:le[me-1].unshift({type:"criticalStart",criticalText:Pe.parseMessage(le[me-2]),signalType:Pe.LINETYPE.CRITICAL_START}),le[me-1].push({type:"criticalEnd",signalType:Pe.LINETYPE.CRITICAL_END}),this.$=le[me-1];break;case 42:le[me-1].unshift({type:"breakStart",breakText:Pe.parseMessage(le[me-2]),signalType:Pe.LINETYPE.BREAK_START}),le[me-1].push({type:"breakEnd",optText:Pe.parseMessage(le[me-2]),signalType:Pe.LINETYPE.BREAK_END}),this.$=le[me-1];break;case 44:this.$=le[me-3].concat([{type:"option",optionText:Pe.parseMessage(le[me-1]),signalType:Pe.LINETYPE.CRITICAL_OPTION},le[me]]);break;case 46:this.$=le[me-3].concat([{type:"and",parText:Pe.parseMessage(le[me-1]),signalType:Pe.LINETYPE.PAR_AND},le[me]]);break;case 48:this.$=le[me-3].concat([{type:"else",altText:Pe.parseMessage(le[me-1]),signalType:Pe.LINETYPE.ALT_ELSE},le[me]]);break;case 49:le[me-3].draw="participant",le[me-3].type="addParticipant",le[me-3].description=Pe.parseMessage(le[me-1]),this.$=le[me-3];break;case 50:le[me-1].draw="participant",le[me-1].type="addParticipant",this.$=le[me-1];break;case 51:le[me-3].draw="actor",le[me-3].type="addParticipant",le[me-3].description=Pe.parseMessage(le[me-1]),this.$=le[me-3];break;case 52:case 57:le[me-1].draw="actor",le[me-1].type="addParticipant",this.$=le[me-1];break;case 53:le[me-1].type="destroyParticipant",this.$=le[me-1];break;case 54:le[me-3].draw="participant",le[me-3].type="addParticipant",le[me-3].description=Pe.parseMessage(le[me-1]),this.$=le[me-3];break;case 55:le[me-1].draw="participant",le[me-1].type="addParticipant",this.$=le[me-1];break;case 56:le[me-3].draw="actor",le[me-3].type="addParticipant",le[me-3].description=Pe.parseMessage(le[me-1]),this.$=le[me-3];break;case 58:this.$=[le[me-1],{type:"addNote",placement:le[me-2],actor:le[me-1].actor,text:le[me]}];break;case 59:le[me-2]=[].concat(le[me-1],le[me-1]).slice(0,2),le[me-2][0]=le[me-2][0].actor,le[me-2][1]=le[me-2][1].actor,this.$=[le[me-1],{type:"addNote",placement:Pe.PLACEMENT.OVER,actor:le[me-2].slice(0,2),text:le[me]}];break;case 60:this.$=[le[me-1],{type:"addLinks",actor:le[me-1].actor,text:le[me]}];break;case 61:this.$=[le[me-1],{type:"addALink",actor:le[me-1].actor,text:le[me]}];break;case 62:this.$=[le[me-1],{type:"addProperties",actor:le[me-1].actor,text:le[me]}];break;case 63:this.$=[le[me-1],{type:"addDetails",actor:le[me-1].actor,text:le[me]}];break;case 66:this.$=[le[me-2],le[me]];break;case 67:this.$=le[me];break;case 68:this.$=Pe.PLACEMENT.LEFTOF;break;case 69:this.$=Pe.PLACEMENT.RIGHTOF;break;case 70:this.$=[le[me-4],le[me-1],{type:"addMessage",from:le[me-4].actor,to:le[me-1].actor,signalType:le[me-3],msg:le[me],activate:!0},{type:"activeStart",signalType:Pe.LINETYPE.ACTIVE_START,actor:le[me-1].actor}];break;case 71:this.$=[le[me-4],le[me-1],{type:"addMessage",from:le[me-4].actor,to:le[me-1].actor,signalType:le[me-3],msg:le[me]},{type:"activeEnd",signalType:Pe.LINETYPE.ACTIVE_END,actor:le[me-4].actor}];break;case 72:this.$=[le[me-4],le[me-1],{type:"addMessage",from:le[me-4].actor,to:le[me-1].actor,signalType:le[me-3],msg:le[me],activate:!0,centralConnection:Pe.LINETYPE.CENTRAL_CONNECTION},{type:"centralConnection",signalType:Pe.LINETYPE.CENTRAL_CONNECTION,actor:le[me-1].actor}];break;case 73:this.$=[le[me-4],le[me-1],{type:"addMessage",from:le[me-4].actor,to:le[me-1].actor,signalType:le[me-2],msg:le[me],activate:!1,centralConnection:Pe.LINETYPE.CENTRAL_CONNECTION_REVERSE},{type:"centralConnectionReverse",signalType:Pe.LINETYPE.CENTRAL_CONNECTION_REVERSE,actor:le[me-4].actor}];break;case 74:this.$=[le[me-5],le[me-1],{type:"addMessage",from:le[me-5].actor,to:le[me-1].actor,signalType:le[me-3],msg:le[me],activate:!0,centralConnection:Pe.LINETYPE.CENTRAL_CONNECTION_DUAL},{type:"centralConnection",signalType:Pe.LINETYPE.CENTRAL_CONNECTION,actor:le[me-1].actor},{type:"centralConnectionReverse",signalType:Pe.LINETYPE.CENTRAL_CONNECTION_REVERSE,actor:le[me-5].actor}];break;case 75:this.$=[le[me-3],le[me-1],{type:"addMessage",from:le[me-3].actor,to:le[me-1].actor,signalType:le[me-2],msg:le[me]}];break;case 76:this.$={type:"addParticipant",actor:le[me-1],config:le[me]};break;case 77:this.$=le[me-1].trim();break;case 78:this.$={type:"addParticipant",actor:le[me]};break;case 79:this.$=Pe.LINETYPE.SOLID_OPEN;break;case 80:this.$=Pe.LINETYPE.DOTTED_OPEN;break;case 81:this.$=Pe.LINETYPE.SOLID;break;case 82:this.$=Pe.LINETYPE.SOLID_TOP;break;case 83:this.$=Pe.LINETYPE.SOLID_BOTTOM;break;case 84:this.$=Pe.LINETYPE.STICK_TOP;break;case 85:this.$=Pe.LINETYPE.STICK_BOTTOM;break;case 86:this.$=Pe.LINETYPE.SOLID_TOP_DOTTED;break;case 87:this.$=Pe.LINETYPE.SOLID_BOTTOM_DOTTED;break;case 88:this.$=Pe.LINETYPE.STICK_TOP_DOTTED;break;case 89:this.$=Pe.LINETYPE.STICK_BOTTOM_DOTTED;break;case 90:this.$=Pe.LINETYPE.SOLID_ARROW_TOP_REVERSE;break;case 91:this.$=Pe.LINETYPE.SOLID_ARROW_BOTTOM_REVERSE;break;case 92:this.$=Pe.LINETYPE.STICK_ARROW_TOP_REVERSE;break;case 93:this.$=Pe.LINETYPE.STICK_ARROW_BOTTOM_REVERSE;break;case 94:this.$=Pe.LINETYPE.SOLID_ARROW_TOP_REVERSE_DOTTED;break;case 95:this.$=Pe.LINETYPE.SOLID_ARROW_BOTTOM_REVERSE_DOTTED;break;case 96:this.$=Pe.LINETYPE.STICK_ARROW_TOP_REVERSE_DOTTED;break;case 97:this.$=Pe.LINETYPE.STICK_ARROW_BOTTOM_REVERSE_DOTTED;break;case 98:this.$=Pe.LINETYPE.BIDIRECTIONAL_SOLID;break;case 99:this.$=Pe.LINETYPE.DOTTED;break;case 100:this.$=Pe.LINETYPE.BIDIRECTIONAL_DOTTED;break;case 101:this.$=Pe.LINETYPE.SOLID_CROSS;break;case 102:this.$=Pe.LINETYPE.DOTTED_CROSS;break;case 103:this.$=Pe.LINETYPE.SOLID_POINT;break;case 104:this.$=Pe.LINETYPE.DOTTED_POINT;break;case 105:this.$=Pe.parseMessage(le[me].trim().substring(1));break}},"anonymous"),table:[{3:1,4:t,5:r,6:i},{1:[3]},{3:5,4:t,5:r,6:i},{3:6,4:t,5:r,6:i},e([1,4,5,10,14,15,19,22,24,30,31,32,34,36,37,38,39,40,42,44,45,47,51,53,54,56,61,62,63,64,73],n,{7:7}),{1:[2,1]},{1:[2,2]},{1:[2,3],4:a,5:s,8:8,9:10,10:l,13:13,14:u,15:h,18:16,19:d,22:f,23:41,24:p,25:20,26:21,27:22,28:23,29:24,30:m,31:g,32:y,34:v,36:x,37:b,38:T,39:w,40:C,42:k,44:E,45:A,47:N,51:P,53:I,54:D,56:_,61:R,62:M,63:L,64:B,73:O},e($,[2,5]),{9:48,13:13,14:u,15:h,18:16,19:d,22:f,23:41,24:p,25:20,26:21,27:22,28:23,29:24,30:m,31:g,32:y,34:v,36:x,37:b,38:T,39:w,40:C,42:k,44:E,45:A,47:N,51:P,53:I,54:D,56:_,61:R,62:M,63:L,64:B,73:O},e($,[2,7]),e($,[2,8]),e($,[2,9]),e($,[2,15]),{13:49,51:P,53:I,54:D},{16:[1,50]},{5:[1,51]},{5:[1,54],20:[1,52],21:[1,53]},{23:55,73:O},{23:56,73:O},{5:[1,57]},{5:[1,58]},{5:[1,59]},{5:[1,60]},{5:[1,61]},e($,[2,30]),e($,[2,31]),{33:[1,62]},{35:[1,63]},e($,[2,34]),{16:[1,64]},{16:[1,65]},{16:[1,66]},{16:[1,67]},{16:[1,68]},{16:[1,69]},{16:[1,70]},{16:[1,71]},{23:72,55:73,73:G},{23:75,55:76,73:G},{23:77,73:O},{69:78,72:[1,79],78:F,79:V,80:H,81:j,82:U,83:Q,84:Y,85:ae,86:J,87:te,88:re,89:ee,90:Te,91:ue,92:De,93:Ie,94:Ee,95:we,96:Me,97:$e,98:de,99:rt,100:ke,101:Fe,102:He,103:at},{57:106,59:[1,107],67:[1,108],68:[1,109]},{23:110,73:O},{23:111,73:O},{23:112,73:O},{23:113,73:O},e([5,66,72,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104],qe),e($,[2,6]),e($,[2,16]),e(Ue,[2,10],{11:114}),e($,[2,18]),{5:[1,116],20:[1,115]},{5:[1,117]},e($,[2,22]),{5:[1,118]},{5:[1,119]},e($,[2,25]),e($,[2,26]),e($,[2,27]),e($,[2,28]),e($,[2,29]),e($,[2,32]),e($,[2,33]),e(ye,n,{7:120}),e(ye,n,{7:121}),e(ye,n,{7:122}),e(ve,n,{41:123,7:124}),e(ie,n,{43:125,7:126}),e(ie,n,{7:126,43:127}),e(fe,n,{46:128,7:129}),e(ye,n,{7:130}),{5:[1,132],52:[1,131]},{5:[1,134],52:[1,133]},e(W,qe,{74:135,75:[1,136]}),{5:[1,138],52:[1,137]},{5:[1,140],52:[1,139]},{5:[1,141]},{23:145,70:[1,142],71:[1,143],72:[1,144],73:O},{69:146,78:F,79:V,80:H,81:j,82:U,83:Q,84:Y,85:ae,86:J,87:te,88:re,89:ee,90:Te,91:ue,92:De,93:Ie,94:Ee,95:we,96:Me,97:$e,98:de,99:rt,100:ke,101:Fe,102:He,103:at},e(ce,[2,79]),e(ce,[2,80]),e(ce,[2,81]),e(ce,[2,82]),e(ce,[2,83]),e(ce,[2,84]),e(ce,[2,85]),e(ce,[2,86]),e(ce,[2,87]),e(ce,[2,88]),e(ce,[2,89]),e(ce,[2,90]),e(ce,[2,91]),e(ce,[2,92]),e(ce,[2,93]),e(ce,[2,94]),e(ce,[2,95]),e(ce,[2,96]),e(ce,[2,97]),e(ce,[2,98]),e(ce,[2,99]),e(ce,[2,100]),e(ce,[2,101]),e(ce,[2,102]),e(ce,[2,103]),e(ce,[2,104]),{23:147,73:O},{23:149,60:148,73:O},{73:[2,68]},{73:[2,69]},{58:150,104:K},{58:152,104:K},{58:153,104:K},{58:154,104:K},{4:[1,157],5:[1,159],12:156,13:158,17:[1,155],51:P,53:I,54:D},{5:[1,160]},e($,[2,20]),e($,[2,21]),e($,[2,23]),e($,[2,24]),{4:a,5:s,8:8,9:10,10:l,13:13,14:u,15:h,17:[1,161],18:16,19:d,22:f,23:41,24:p,25:20,26:21,27:22,28:23,29:24,30:m,31:g,32:y,34:v,36:x,37:b,38:T,39:w,40:C,42:k,44:E,45:A,47:N,51:P,53:I,54:D,56:_,61:R,62:M,63:L,64:B,73:O},{4:a,5:s,8:8,9:10,10:l,13:13,14:u,15:h,17:[1,162],18:16,19:d,22:f,23:41,24:p,25:20,26:21,27:22,28:23,29:24,30:m,31:g,32:y,34:v,36:x,37:b,38:T,39:w,40:C,42:k,44:E,45:A,47:N,51:P,53:I,54:D,56:_,61:R,62:M,63:L,64:B,73:O},{4:a,5:s,8:8,9:10,10:l,13:13,14:u,15:h,17:[1,163],18:16,19:d,22:f,23:41,24:p,25:20,26:21,27:22,28:23,29:24,30:m,31:g,32:y,34:v,36:x,37:b,38:T,39:w,40:C,42:k,44:E,45:A,47:N,51:P,53:I,54:D,56:_,61:R,62:M,63:L,64:B,73:O},{17:[1,164]},{4:a,5:s,8:8,9:10,10:l,13:13,14:u,15:h,17:[2,47],18:16,19:d,22:f,23:41,24:p,25:20,26:21,27:22,28:23,29:24,30:m,31:g,32:y,34:v,36:x,37:b,38:T,39:w,40:C,42:k,44:E,45:A,47:N,50:[1,165],51:P,53:I,54:D,56:_,61:R,62:M,63:L,64:B,73:O},{17:[1,166]},{4:a,5:s,8:8,9:10,10:l,13:13,14:u,15:h,17:[2,45],18:16,19:d,22:f,23:41,24:p,25:20,26:21,27:22,28:23,29:24,30:m,31:g,32:y,34:v,36:x,37:b,38:T,39:w,40:C,42:k,44:E,45:A,47:N,49:[1,167],51:P,53:I,54:D,56:_,61:R,62:M,63:L,64:B,73:O},{17:[1,168]},{17:[1,169]},{4:a,5:s,8:8,9:10,10:l,13:13,14:u,15:h,17:[2,43],18:16,19:d,22:f,23:41,24:p,25:20,26:21,27:22,28:23,29:24,30:m,31:g,32:y,34:v,36:x,37:b,38:T,39:w,40:C,42:k,44:E,45:A,47:N,48:[1,170],51:P,53:I,54:D,56:_,61:R,62:M,63:L,64:B,73:O},{4:a,5:s,8:8,9:10,10:l,13:13,14:u,15:h,17:[1,171],18:16,19:d,22:f,23:41,24:p,25:20,26:21,27:22,28:23,29:24,30:m,31:g,32:y,34:v,36:x,37:b,38:T,39:w,40:C,42:k,44:E,45:A,47:N,51:P,53:I,54:D,56:_,61:R,62:M,63:L,64:B,73:O},{16:[1,172]},e($,[2,50]),{16:[1,173]},e($,[2,55]),e(W,[2,76]),{76:[1,174]},{16:[1,175]},e($,[2,52]),{16:[1,176]},e($,[2,57]),e($,[2,53]),{23:177,73:O},{23:178,73:O},{23:179,73:O},{58:180,104:K},{23:181,72:[1,182],73:O},{58:183,104:K},{58:184,104:K},{66:[1,185],104:[2,67]},{5:[2,60]},{5:[2,105]},{5:[2,61]},{5:[2,62]},{5:[2,63]},e($,[2,17]),e(Ue,[2,11]),{13:186,51:P,53:I,54:D},e(Ue,[2,13]),e(Ue,[2,14]),e($,[2,19]),e($,[2,35]),e($,[2,36]),e($,[2,37]),e($,[2,38]),{16:[1,187]},e($,[2,39]),{16:[1,188]},e($,[2,40]),e($,[2,41]),{16:[1,189]},e($,[2,42]),{5:[1,190]},{5:[1,191]},{77:[1,192]},{5:[1,193]},{5:[1,194]},{58:195,104:K},{58:196,104:K},{58:197,104:K},{5:[2,75]},{58:198,104:K},{23:199,73:O},{5:[2,58]},{5:[2,59]},{23:200,73:O},e(Ue,[2,12]),e(ve,n,{7:124,41:201}),e(ie,n,{7:126,43:202}),e(fe,n,{7:129,46:203}),e($,[2,49]),e($,[2,54]),e(W,[2,77]),e($,[2,51]),e($,[2,56]),{5:[2,70]},{5:[2,71]},{5:[2,72]},{5:[2,73]},{58:204,104:K},{104:[2,66]},{17:[2,48]},{17:[2,46]},{17:[2,44]},{5:[2,74]}],defaultActions:{5:[2,1],6:[2,2],108:[2,68],109:[2,69],150:[2,60],151:[2,105],152:[2,61],153:[2,62],154:[2,63],180:[2,75],183:[2,58],184:[2,59],195:[2,70],196:[2,71],197:[2,72],198:[2,73],200:[2,66],201:[2,48],202:[2,46],203:[2,44],204:[2,74]},parseError:o(function(Be,Ae){if(Ae.recoverable)this.trace(Be);else{var Ve=new Error(Be);throw Ve.hash=Ae,Ve}},"parseError"),parse:o(function(Be){var Ae=this,Ve=[0],Pe=[],Ye=[null],le=[],st=this.table,me="",ot=0,kt=0,Gt=0,Tt=2,Et=1,yt=le.slice.call(arguments,1),oe=Object.create(this.lexer),ht={yy:{}};for(var gt in this.yy)Object.prototype.hasOwnProperty.call(this.yy,gt)&&(ht.yy[gt]=this.yy[gt]);oe.setInput(Be,ht.yy),ht.yy.lexer=oe,ht.yy.parser=this,typeof oe.yylloc>"u"&&(oe.yylloc={});var et=oe.yylloc;le.push(et);var pe=oe.options&&oe.options.ranges;typeof ht.yy.parseError=="function"?this.parseError=ht.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function Qe(Dr){Ve.length=Ve.length-2*Dr,Ye.length=Ye.length-Dr,le.length=le.length-Dr}o(Qe,"popStack");function nt(){var Dr;return Dr=Pe.pop()||oe.lex()||Et,typeof Dr!="number"&&(Dr instanceof Array&&(Pe=Dr,Dr=Pe.pop()),Dr=Ae.symbols_[Dr]||Dr),Dr}o(nt,"lex");for(var dt,Ft,Rt,$t,lr,pt,Se={},it,xt,rr,_r;;){if(Rt=Ve[Ve.length-1],this.defaultActions[Rt]?$t=this.defaultActions[Rt]:((dt===null||typeof dt>"u")&&(dt=nt()),$t=st[Rt]&&st[Rt][dt]),typeof $t>"u"||!$t.length||!$t[0]){var Ur="";_r=[];for(it in st[Rt])this.terminals_[it]&&it>Tt&&_r.push("'"+this.terminals_[it]+"'");oe.showPosition?Ur="Parse error on line "+(ot+1)+`:
-`+oe.showPosition()+`
-Expecting `+_r.join(", ")+", got '"+(this.terminals_[dt]||dt)+"'":Ur="Parse error on line "+(ot+1)+": Unexpected "+(dt==Et?"end of input":"'"+(this.terminals_[dt]||dt)+"'"),this.parseError(Ur,{text:oe.match,token:this.terminals_[dt]||dt,line:oe.yylineno,loc:et,expected:_r})}if($t[0]instanceof Array&&$t.length>1)throw new Error("Parse Error: multiple actions possible at state: "+Rt+", token: "+dt);switch($t[0]){case 1:Ve.push(dt),Ye.push(oe.yytext),le.push(oe.yylloc),Ve.push($t[1]),dt=null,Ft?(dt=Ft,Ft=null):(kt=oe.yyleng,me=oe.yytext,ot=oe.yylineno,et=oe.yylloc,Gt>0&&Gt--);break;case 2:if(xt=this.productions_[$t[1]][1],Se.$=Ye[Ye.length-xt],Se._$={first_line:le[le.length-(xt||1)].first_line,last_line:le[le.length-1].last_line,first_column:le[le.length-(xt||1)].first_column,last_column:le[le.length-1].last_column},pe&&(Se._$.range=[le[le.length-(xt||1)].range[0],le[le.length-1].range[1]]),pt=this.performAction.apply(Se,[me,kt,ot,ht.yy,$t[1],Ye,le].concat(yt)),typeof pt<"u")return pt;xt&&(Ve=Ve.slice(0,-1*xt*2),Ye=Ye.slice(0,-1*xt),le=le.slice(0,-1*xt)),Ve.push(this.productions_[$t[1]][0]),Ye.push(Se.$),le.push(Se._$),rr=st[Ve[Ve.length-2]][Ve[Ve.length-1]],Ve.push(rr);break;case 3:return!0}}return!0},"parse")},xe=(function(){var be={EOF:1,parseError:o(function(Ae,Ve){if(this.yy.parser)this.yy.parser.parseError(Ae,Ve);else throw new Error(Ae)},"parseError"),setInput:o(function(Be,Ae){return this.yy=Ae||this.yy||{},this._input=Be,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},"setInput"),input:o(function(){var Be=this._input[0];this.yytext+=Be,this.yyleng++,this.offset++,this.match+=Be,this.matched+=Be;var Ae=Be.match(/(?:\r\n?|\n).*/g);return Ae?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),Be},"input"),unput:o(function(Be){var Ae=Be.length,Ve=Be.split(/(?:\r\n?|\n)/g);this._input=Be+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-Ae),this.offset-=Ae;var Pe=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),Ve.length-1&&(this.yylineno-=Ve.length-1);var Ye=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:Ve?(Ve.length===Pe.length?this.yylloc.first_column:0)+Pe[Pe.length-Ve.length].length-Ve[0].length:this.yylloc.first_column-Ae},this.options.ranges&&(this.yylloc.range=[Ye[0],Ye[0]+this.yyleng-Ae]),this.yyleng=this.yytext.length,this},"unput"),more:o(function(){return this._more=!0,this},"more"),reject:o(function(){if(this.options.backtrack_lexer)this._backtrack=!0;else return this.parseError("Lexical error on line "+(this.yylineno+1)+`. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).
-`+this.showPosition(),{text:"",token:null,line:this.yylineno});return this},"reject"),less:o(function(Be){this.unput(this.match.slice(Be))},"less"),pastInput:o(function(){var Be=this.matched.substr(0,this.matched.length-this.match.length);return(Be.length>20?"...":"")+Be.substr(-20).replace(/\n/g,"")},"pastInput"),upcomingInput:o(function(){var Be=this.match;return Be.length<20&&(Be+=this._input.substr(0,20-Be.length)),(Be.substr(0,20)+(Be.length>20?"...":"")).replace(/\n/g,"")},"upcomingInput"),showPosition:o(function(){var Be=this.pastInput(),Ae=new Array(Be.length+1).join("-");return Be+this.upcomingInput()+`
-`+Ae+"^"},"showPosition"),test_match:o(function(Be,Ae){var Ve,Pe,Ye;if(this.options.backtrack_lexer&&(Ye={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(Ye.yylloc.range=this.yylloc.range.slice(0))),Pe=Be[0].match(/(?:\r\n?|\n).*/g),Pe&&(this.yylineno+=Pe.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:Pe?Pe[Pe.length-1].length-Pe[Pe.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+Be[0].length},this.yytext+=Be[0],this.match+=Be[0],this.matches=Be,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(Be[0].length),this.matched+=Be[0],Ve=this.performAction.call(this,this.yy,this,Ae,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),Ve)return Ve;if(this._backtrack){for(var le in Ye)this[le]=Ye[le];return!1}return!1},"test_match"),next:o(function(){if(this.done)return this.EOF;this._input||(this.done=!0);var Be,Ae,Ve,Pe;this._more||(this.yytext="",this.match="");for(var Ye=this._currentRules(),le=0;le<Ye.length;le++)if(Ve=this._input.match(this.rules[Ye[le]]),Ve&&(!Ae||Ve[0].length>Ae[0].length)){if(Ae=Ve,Pe=le,this.options.backtrack_lexer){if(Be=this.test_match(Ve,Ye[le]),Be!==!1)return Be;if(this._backtrack){Ae=!1;continue}else return!1}else if(!this.options.flex)break}return Ae?(Be=this.test_match(Ae,Ye[Pe]),Be!==!1?Be:!1):this._input===""?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+`. Unrecognized text.
-`+this.showPosition(),{text:"",token:null,line:this.yylineno})},"next"),lex:o(function(){var Ae=this.next();return Ae||this.lex()},"lex"),begin:o(function(Ae){this.conditionStack.push(Ae)},"begin"),popState:o(function(){var Ae=this.conditionStack.length-1;return Ae>0?this.conditionStack.pop():this.conditionStack[0]},"popState"),_currentRules:o(function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},"_currentRules"),topState:o(function(Ae){return Ae=this.conditionStack.length-1-Math.abs(Ae||0),Ae>=0?this.conditionStack[Ae]:"INITIAL"},"topState"),pushState:o(function(Ae){this.begin(Ae)},"pushState"),stateStackSize:o(function(){return this.conditionStack.length},"stateStackSize"),options:{"case-insensitive":!0},performAction:o(function(Ae,Ve,Pe,Ye){var le=Ye;switch(Pe){case 0:return 5;case 1:break;case 2:break;case 3:break;case 4:break;case 5:break;case 6:return 20;case 7:return this.begin("CONFIG"),75;break;case 8:return 76;case 9:return this.popState(),this.begin("ALIAS"),77;break;case 10:return this.popState(),this.popState(),77;break;case 11:return Ve.yytext=Ve.yytext.trim(),73;break;case 12:return Ve.yytext=Ve.yytext.trim(),this.begin("ALIAS"),73;break;case 13:return Ve.yytext=Ve.yytext.trim(),this.popState(),73;break;case 14:return this.popState(),10;break;case 15:return Ve.yytext=Ve.yytext.trim(),this.popState(),10;break;case 16:return this.begin("LINE"),15;break;case 17:return this.begin("ID"),51;break;case 18:return this.begin("ID"),53;break;case 19:return 14;case 20:return this.begin("ID"),54;break;case 21:return this.popState(),this.popState(),this.begin("LINE"),52;break;case 22:return this.popState(),this.popState(),5;break;case 23:return this.begin("LINE"),37;break;case 24:return this.begin("LINE"),38;break;case 25:return this.begin("LINE"),39;break;case 26:return this.begin("LINE"),40;break;case 27:return this.begin("LINE"),50;break;case 28:return this.begin("LINE"),42;break;case 29:return this.begin("LINE"),44;break;case 30:return this.begin("LINE"),49;break;case 31:return this.begin("LINE"),45;break;case 32:return this.begin("LINE"),48;break;case 33:return this.begin("LINE"),47;break;case 34:return this.popState(),16;break;case 35:return 17;case 36:return 67;case 37:return 68;case 38:return 61;case 39:return 62;case 40:return 63;case 41:return 64;case 42:return 59;case 43:return 56;case 44:return this.begin("ID"),22;break;case 45:return this.begin("ID"),24;break;case 46:return 30;case 47:return 31;case 48:return this.begin("acc_title"),32;break;case 49:return this.popState(),"acc_title_value";break;case 50:return this.begin("acc_descr"),34;break;case 51:return this.popState(),"acc_descr_value";break;case 52:this.begin("acc_descr_multiline");break;case 53:this.popState();break;case 54:return"acc_descr_multiline_value";case 55:return 6;case 56:return 19;case 57:return 21;case 58:return 66;case 59:return 5;case 60:return Ve.yytext=Ve.yytext.trim(),73;break;case 61:return 80;case 62:return 97;case 63:return 98;case 64:return 99;case 65:return 78;case 66:return 79;case 67:return 100;case 68:return 101;case 69:return 102;case 70:return 103;case 71:return 85;case 72:return 86;case 73:return 87;case 74:return 88;case 75:return 93;case 76:return 94;case 77:return 95;case 78:return 96;case 79:return 81;case 80:return 82;case 81:return 83;case 82:return 84;case 83:return 89;case 84:return 90;case 85:return 91;case 86:return 92;case 87:return 104;case 88:return 104;case 89:return 70;case 90:return 71;case 91:return 72;case 92:return 5;case 93:return 10}},"anonymous"),rules:[/^(?:[\n]+)/i,/^(?:\s+)/i,/^(?:((?!\n)\s)+)/i,/^(?:#[^\n]*)/i,/^(?:%(?!\{)[^\n]*)/i,/^(?:[^\}]%%[^\n]*)/i,/^(?:([0-9]+(\.[0-9]{1,2})?|\.[0-9]{1,2})(?=[ \n]+))/i,/^(?:@\{)/i,/^(?:[^\}]+)/i,/^(?:\}(?=\s+as\s))/i,/^(?:\})/i,/^(?:[^\<->\->:\n,;@\s]+(?=@\{))/i,/^(?:[^<>:\n,;@\s]+(?=\s+as\s))/i,/^(?:[^<>:\n,;@]+(?=\s*[\n;#]|$))/i,/^(?:[^<>:\n,;@]*<[^\n]*)/i,/^(?:[^\n]+)/i,/^(?:box\b)/i,/^(?:participant\b)/i,/^(?:actor\b)/i,/^(?:create\b)/i,/^(?:destroy\b)/i,/^(?:as\b)/i,/^(?:(?:))/i,/^(?:loop\b)/i,/^(?:rect\b)/i,/^(?:opt\b)/i,/^(?:alt\b)/i,/^(?:else\b)/i,/^(?:par\b)/i,/^(?:par_over\b)/i,/^(?:and\b)/i,/^(?:critical\b)/i,/^(?:option\b)/i,/^(?:break\b)/i,/^(?:(?:[:]?(?:no)?wrap)?[^#\n;]*)/i,/^(?:end\b)/i,/^(?:left of\b)/i,/^(?:right of\b)/i,/^(?:links\b)/i,/^(?:link\b)/i,/^(?:properties\b)/i,/^(?:details\b)/i,/^(?:over\b)/i,/^(?:note\b)/i,/^(?:activate\b)/i,/^(?:deactivate\b)/i,/^(?:title\s[^#\n;]+)/i,/^(?:title:\s[^#\n;]+)/i,/^(?:accTitle\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*\{\s*)/i,/^(?:[\}])/i,/^(?:[^\}]*)/i,/^(?:sequenceDiagram\b)/i,/^(?:autonumber\b)/i,/^(?:off\b)/i,/^(?:,)/i,/^(?:;)/i,/^(?:[^\/\\\+\()\+<\->\->:\n,;]+((?!(-x|--x|-\)|--\)|-\|\\|-\\|-\/|-\/\/|-\|\/|\/\|-|\\\|-|\/\/-|\\\\-|\/\|-|--\|\\|--|\(\)))[\-]*[^\+<\->\->:\n,;]+)*)/i,/^(?:->>)/i,/^(?:<<->>)/i,/^(?:-->>)/i,/^(?:<<-->>)/i,/^(?:->)/i,/^(?:-->)/i,/^(?:-[x])/i,/^(?:--[x])/i,/^(?:-[\)])/i,/^(?:--[\)])/i,/^(?:--\|\\)/i,/^(?:--\|\/)/i,/^(?:--\\\\)/i,/^(?:--\/\/)/i,/^(?:\/\|--)/i,/^(?:\\\|--)/i,/^(?:\/\/--)/i,/^(?:\\\\--)/i,/^(?:-\|\\)/i,/^(?:-\|\/)/i,/^(?:-\\\\)/i,/^(?:-\/\/)/i,/^(?:\/\|-)/i,/^(?:\\\|-)/i,/^(?:\/\/-)/i,/^(?:\\\\-)/i,/^(?::(?:(?:no)?wrap)?[^#\n;]*)/i,/^(?::)/i,/^(?:\+)/i,/^(?:-)/i,/^(?:\(\))/i,/^(?:$)/i,/^(?:.)/i],conditions:{acc_descr_multiline:{rules:[53,54],inclusive:!1},acc_descr:{rules:[51],inclusive:!1},acc_title:{rules:[49],inclusive:!1},ID:{rules:[2,3,7,11,12,13,14,15],inclusive:!1},ALIAS:{rules:[2,3,21,22],inclusive:!1},LINE:{rules:[2,3,34],inclusive:!1},CONFIG:{rules:[8,9,10],inclusive:!1},CONFIG_DATA:{rules:[],inclusive:!1},INITIAL:{rules:[0,1,3,4,5,6,16,17,18,19,20,23,24,25,26,27,28,29,30,31,32,33,35,36,37,38,39,40,41,42,43,44,45,46,47,48,50,52,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93],inclusive:!0}}};return be})();Re.lexer=xe;function Oe(){this.yy={}}return o(Oe,"Parser"),Oe.prototype=Re,Re.Parser=Oe,new Oe})();nW.parser=nW;a6e=nW});var kTt,wTt,STt,jT,W6,aW=z(()=>{"use strict";Ut();Wx();St();T6();Ir();Ci();kTt={SOLID:0,DOTTED:1,NOTE:2,SOLID_CROSS:3,DOTTED_CROSS:4,SOLID_OPEN:5,DOTTED_OPEN:6,LOOP_START:10,LOOP_END:11,ALT_START:12,ALT_ELSE:13,ALT_END:14,OPT_START:15,OPT_END:16,ACTIVE_START:17,ACTIVE_END:18,PAR_START:19,PAR_AND:20,PAR_END:21,RECT_START:22,RECT_END:23,SOLID_POINT:24,DOTTED_POINT:25,AUTONUMBER:26,CRITICAL_START:27,CRITICAL_OPTION:28,CRITICAL_END:29,BREAK_START:30,BREAK_END:31,PAR_OVER_START:32,BIDIRECTIONAL_SOLID:33,BIDIRECTIONAL_DOTTED:34,SOLID_TOP:41,SOLID_BOTTOM:42,STICK_TOP:43,STICK_BOTTOM:44,SOLID_ARROW_TOP_REVERSE:45,SOLID_ARROW_BOTTOM_REVERSE:46,STICK_ARROW_TOP_REVERSE:47,STICK_ARROW_BOTTOM_REVERSE:48,SOLID_TOP_DOTTED:51,SOLID_BOTTOM_DOTTED:52,STICK_TOP_DOTTED:53,STICK_BOTTOM_DOTTED:54,SOLID_ARROW_TOP_REVERSE_DOTTED:55,SOLID_ARROW_BOTTOM_REVERSE_DOTTED:56,STICK_ARROW_TOP_REVERSE_DOTTED:57,STICK_ARROW_BOTTOM_REVERSE_DOTTED:58,CENTRAL_CONNECTION:59,CENTRAL_CONNECTION_REVERSE:60,CENTRAL_CONNECTION_DUAL:61},wTt={FILLED:0,OPEN:1},STt={LEFTOF:0,RIGHTOF:1,OVER:2},jT={ACTOR:"actor",BOUNDARY:"boundary",COLLECTIONS:"collections",CONTROL:"control",DATABASE:"database",ENTITY:"entity",PARTICIPANT:"participant",QUEUE:"queue"},W6=class{constructor(){this.state=new wf(()=>({prevActor:void 0,actors:new Map,createdActors:new Map,destroyedActors:new Map,boxes:[],messages:[],notes:[],sequenceNumbersEnabled:!1,wrapEnabled:void 0,currentBox:void 0,lastCreated:void 0,lastDestroyed:void 0}));this.setAccTitle=Cr;this.setAccDescription=wr;this.setDiagramTitle=Ar;this.getAccTitle=kr;this.getAccDescription=Sr;this.getDiagramTitle=Er;this.apply=this.apply.bind(this),this.parseBoxData=this.parseBoxData.bind(this),this.parseMessage=this.parseMessage.bind(this),this.clear(),this.setWrap(ge().wrap),this.LINETYPE=kTt,this.ARROWTYPE=wTt,this.PLACEMENT=STt}static{o(this,"SequenceDB")}addBox(t){this.state.records.boxes.push({name:t.text,wrap:t.wrap??this.autoWrap(),fill:t.color,actorKeys:[]}),this.state.records.currentBox=this.state.records.boxes.slice(-1)[0]}addActor(t,r,i,n,a){let s=this.state.records.currentBox,l;if(a!==void 0){let h;a.includes(`
+`},"getStyles"),q8e=WAt});var nY={};ir(nY,{draw:()=>qAt});var qAt,U8e=F(()=>{"use strict";Xt();vt();Am();Qf();Jf();Qt();qAt=o(async function(e,t,r,n){Z.info("REF0:"),Z.info("Drawing requirement diagram (unified)",t);let{securityLevel:i,state:a,layout:s,look:l}=Ae(),u=n.db.getData(),h=pl(t,i);u.type=n.type,u.layoutAlgorithm=Su(s),u.nodeSpacing=a?.nodeSpacing??50,u.rankSpacing=a?.rankSpacing??50,u.markers=l==="neo"?["requirement_contains_neo","requirement_arrow_neo"]:["requirement_contains","requirement_arrow"],u.diagramId=t,await Al(u,h);let d=8;Zt.insertTitle(h,"requirementDiagramTitleText",a?.titleTopMargin??25,n.db.getDiagramTitle()),vo(h,d,"requirementDiagram",a?.useMaxWidth??!0)},"draw")});var Y8e={};ir(Y8e,{diagram:()=>HAt});var HAt,j8e=F(()=>{"use strict";V8e();W8e();H8e();U8e();HAt={parser:G8e,get db(){return new bL},renderer:nY,styles:q8e}});var iY,Z8e,Q8e=F(()=>{"use strict";iY=(function(){var e=o(function(Ne,He,$e,Xe){for($e=$e||{},Xe=Ne.length;Xe--;$e[Ne[Xe]]=He);return $e},"o"),t=[1,2],r=[1,3],n=[1,4],i=[2,4],a=[1,9],s=[1,11],l=[1,12],u=[1,14],h=[1,15],d=[1,17],f=[1,18],p=[1,19],m=[1,25],g=[1,26],y=[1,27],v=[1,28],x=[1,29],b=[1,30],T=[1,31],k=[1,32],C=[1,33],w=[1,34],S=[1,35],R=[1,36],L=[1,37],N=[1,38],I=[1,39],_=[1,40],A=[1,42],M=[1,43],D=[1,44],P=[1,45],B=[1,46],O=[1,47],$=[1,4,5,10,14,15,17,19,22,24,30,31,32,34,36,37,38,39,40,42,44,45,47,48,49,50,51,53,54,56,61,62,63,64,73],V=[1,74],G=[1,80],z=[1,81],W=[1,82],H=[1,83],j=[1,84],Q=[1,85],U=[1,86],oe=[1,87],te=[1,88],le=[1,89],ie=[1,90],ae=[1,91],Re=[1,92],be=[1,93],Pe=[1,94],Ge=[1,95],Oe=[1,96],ue=[1,97],ye=[1,98],ke=[1,99],ce=[1,100],re=[1,101],J=[1,102],se=[1,103],ge=[1,104],Te=[1,105],we=[2,78],Me=[4,5,17,51,53,54],ve=[4,5,10,14,15,17,19,22,24,30,31,32,34,36,37,38,39,40,42,44,45,47,51,53,54,56,61,62,63,64,73],ne=[4,5,10,14,15,17,19,22,24,30,31,32,34,36,37,38,39,40,42,44,45,47,50,51,53,54,56,61,62,63,64,73],q=[4,5,10,14,15,17,19,22,24,30,31,32,34,36,37,38,39,40,42,44,45,47,49,51,53,54,56,61,62,63,64,73],he=[4,5,10,14,15,17,19,22,24,30,31,32,34,36,37,38,39,40,42,44,45,47,48,51,53,54,56,61,62,63,64,73],X=[5,52],fe=[70,71,72,73],K=[1,151],qe={trace:o(function(){},"trace"),yy:{},symbols_:{error:2,start:3,SPACE:4,NEWLINE:5,SD:6,document:7,line:8,statement:9,INVALID:10,box_section:11,box_line:12,participant_statement:13,create:14,box:15,restOfLine:16,end:17,signal:18,autonumber:19,NUM:20,off:21,activate:22,actor:23,deactivate:24,note_statement:25,links_statement:26,link_statement:27,properties_statement:28,details_statement:29,title:30,legacy_title:31,acc_title:32,acc_title_value:33,acc_descr:34,acc_descr_value:35,acc_descr_multiline_value:36,loop:37,rect:38,opt:39,alt:40,else_sections:41,par:42,par_sections:43,par_over:44,critical:45,option_sections:46,break:47,option:48,and:49,else:50,participant:51,AS:52,participant_actor:53,destroy:54,actor_with_config:55,note:56,placement:57,text2:58,over:59,actor_pair:60,links:61,link:62,properties:63,details:64,spaceList:65,",":66,left_of:67,right_of:68,signaltype:69,"+":70,"-":71,"()":72,ACTOR:73,config_object:74,CONFIG_START:75,CONFIG_CONTENT:76,CONFIG_END:77,SOLID_OPEN_ARROW:78,DOTTED_OPEN_ARROW:79,SOLID_ARROW:80,SOLID_ARROW_TOP:81,SOLID_ARROW_BOTTOM:82,STICK_ARROW_TOP:83,STICK_ARROW_BOTTOM:84,SOLID_ARROW_TOP_DOTTED:85,SOLID_ARROW_BOTTOM_DOTTED:86,STICK_ARROW_TOP_DOTTED:87,STICK_ARROW_BOTTOM_DOTTED:88,SOLID_ARROW_TOP_REVERSE:89,SOLID_ARROW_BOTTOM_REVERSE:90,STICK_ARROW_TOP_REVERSE:91,STICK_ARROW_BOTTOM_REVERSE:92,SOLID_ARROW_TOP_REVERSE_DOTTED:93,SOLID_ARROW_BOTTOM_REVERSE_DOTTED:94,STICK_ARROW_TOP_REVERSE_DOTTED:95,STICK_ARROW_BOTTOM_REVERSE_DOTTED:96,BIDIRECTIONAL_SOLID_ARROW:97,DOTTED_ARROW:98,BIDIRECTIONAL_DOTTED_ARROW:99,SOLID_CROSS:100,DOTTED_CROSS:101,SOLID_POINT:102,DOTTED_POINT:103,TXT:104,$accept:0,$end:1},terminals_:{2:"error",4:"SPACE",5:"NEWLINE",6:"SD",10:"INVALID",14:"create",15:"box",16:"restOfLine",17:"end",19:"autonumber",20:"NUM",21:"off",22:"activate",24:"deactivate",30:"title",31:"legacy_title",32:"acc_title",33:"acc_title_value",34:"acc_descr",35:"acc_descr_value",36:"acc_descr_multiline_value",37:"loop",38:"rect",39:"opt",40:"alt",42:"par",44:"par_over",45:"critical",47:"break",48:"option",49:"and",50:"else",51:"participant",52:"AS",53:"participant_actor",54:"destroy",56:"note",59:"over",61:"links",62:"link",63:"properties",64:"details",66:",",67:"left_of",68:"right_of",70:"+",71:"-",72:"()",73:"ACTOR",75:"CONFIG_START",76:"CONFIG_CONTENT",77:"CONFIG_END",78:"SOLID_OPEN_ARROW",79:"DOTTED_OPEN_ARROW",80:"SOLID_ARROW",81:"SOLID_ARROW_TOP",82:"SOLID_ARROW_BOTTOM",83:"STICK_ARROW_TOP",84:"STICK_ARROW_BOTTOM",85:"SOLID_ARROW_TOP_DOTTED",86:"SOLID_ARROW_BOTTOM_DOTTED",87:"STICK_ARROW_TOP_DOTTED",88:"STICK_ARROW_BOTTOM_DOTTED",89:"SOLID_ARROW_TOP_REVERSE",90:"SOLID_ARROW_BOTTOM_REVERSE",91:"STICK_ARROW_TOP_REVERSE",92:"STICK_ARROW_BOTTOM_REVERSE",93:"SOLID_ARROW_TOP_REVERSE_DOTTED",94:"SOLID_ARROW_BOTTOM_REVERSE_DOTTED",95:"STICK_ARROW_TOP_REVERSE_DOTTED",96:"STICK_ARROW_BOTTOM_REVERSE_DOTTED",97:"BIDIRECTIONAL_SOLID_ARROW",98:"DOTTED_ARROW",99:"BIDIRECTIONAL_DOTTED_ARROW",100:"SOLID_CROSS",101:"DOTTED_CROSS",102:"SOLID_POINT",103:"DOTTED_POINT",104:"TXT"},productions_:[0,[3,2],[3,2],[3,2],[7,0],[7,2],[8,2],[8,1],[8,1],[8,1],[11,0],[11,2],[12,2],[12,1],[12,1],[9,1],[9,2],[9,4],[9,2],[9,4],[9,3],[9,3],[9,2],[9,3],[9,3],[9,2],[9,2],[9,2],[9,2],[9,2],[9,1],[9,1],[9,2],[9,2],[9,1],[9,4],[9,4],[9,4],[9,4],[9,4],[9,4],[9,4],[9,4],[46,1],[46,4],[43,1],[43,4],[41,1],[41,4],[13,5],[13,3],[13,5],[13,3],[13,3],[13,5],[13,3],[13,5],[13,3],[25,4],[25,4],[26,3],[27,3],[28,3],[29,3],[65,2],[65,1],[60,3],[60,1],[57,1],[57,1],[18,5],[18,5],[18,5],[18,5],[18,6],[18,4],[55,2],[74,3],[23,1],[69,1],[69,1],[69,1],[69,1],[69,1],[69,1],[69,1],[69,1],[69,1],[69,1],[69,1],[69,1],[69,1],[69,1],[69,1],[69,1],[69,1],[69,1],[69,1],[69,1],[69,1],[69,1],[69,1],[69,1],[69,1],[69,1],[58,1]],performAction:o(function(He,$e,Xe,Fe,Ke,xe,mt){var Le=xe.length-1;switch(Ke){case 3:return Fe.apply(xe[Le]),xe[Le];break;case 4:case 10:this.$=[];break;case 5:case 11:xe[Le-1].push(xe[Le]),this.$=xe[Le-1];break;case 6:case 7:case 12:case 13:this.$=xe[Le];break;case 8:case 9:case 14:this.$=[];break;case 16:xe[Le].type="createParticipant",this.$=xe[Le];break;case 17:xe[Le-1].unshift({type:"boxStart",boxData:Fe.parseBoxData(xe[Le-2])}),xe[Le-1].push({type:"boxEnd",boxText:xe[Le-2]}),this.$=xe[Le-1];break;case 19:this.$={type:"sequenceIndex",sequenceIndex:Number(xe[Le-2]),sequenceIndexStep:Number(xe[Le-1]),sequenceVisible:!0,signalType:Fe.LINETYPE.AUTONUMBER};break;case 20:this.$={type:"sequenceIndex",sequenceIndex:Number(xe[Le-1]),sequenceIndexStep:1,sequenceVisible:!0,signalType:Fe.LINETYPE.AUTONUMBER};break;case 21:this.$={type:"sequenceIndex",sequenceVisible:!1,signalType:Fe.LINETYPE.AUTONUMBER};break;case 22:this.$={type:"sequenceIndex",sequenceVisible:!0,signalType:Fe.LINETYPE.AUTONUMBER};break;case 23:this.$={type:"activeStart",signalType:Fe.LINETYPE.ACTIVE_START,actor:xe[Le-1].actor};break;case 24:this.$={type:"activeEnd",signalType:Fe.LINETYPE.ACTIVE_END,actor:xe[Le-1].actor};break;case 30:Fe.setDiagramTitle(xe[Le].substring(6)),this.$=xe[Le].substring(6);break;case 31:Fe.setDiagramTitle(xe[Le].substring(7)),this.$=xe[Le].substring(7);break;case 32:this.$=xe[Le].trim(),Fe.setAccTitle(this.$);break;case 33:case 34:this.$=xe[Le].trim(),Fe.setAccDescription(this.$);break;case 35:xe[Le-1].unshift({type:"loopStart",loopText:Fe.parseMessage(xe[Le-2]),signalType:Fe.LINETYPE.LOOP_START}),xe[Le-1].push({type:"loopEnd",loopText:xe[Le-2],signalType:Fe.LINETYPE.LOOP_END}),this.$=xe[Le-1];break;case 36:xe[Le-1].unshift({type:"rectStart",color:Fe.parseMessage(xe[Le-2]),signalType:Fe.LINETYPE.RECT_START}),xe[Le-1].push({type:"rectEnd",color:Fe.parseMessage(xe[Le-2]),signalType:Fe.LINETYPE.RECT_END}),this.$=xe[Le-1];break;case 37:xe[Le-1].unshift({type:"optStart",optText:Fe.parseMessage(xe[Le-2]),signalType:Fe.LINETYPE.OPT_START}),xe[Le-1].push({type:"optEnd",optText:Fe.parseMessage(xe[Le-2]),signalType:Fe.LINETYPE.OPT_END}),this.$=xe[Le-1];break;case 38:xe[Le-1].unshift({type:"altStart",altText:Fe.parseMessage(xe[Le-2]),signalType:Fe.LINETYPE.ALT_START}),xe[Le-1].push({type:"altEnd",signalType:Fe.LINETYPE.ALT_END}),this.$=xe[Le-1];break;case 39:xe[Le-1].unshift({type:"parStart",parText:Fe.parseMessage(xe[Le-2]),signalType:Fe.LINETYPE.PAR_START}),xe[Le-1].push({type:"parEnd",signalType:Fe.LINETYPE.PAR_END}),this.$=xe[Le-1];break;case 40:xe[Le-1].unshift({type:"parStart",parText:Fe.parseMessage(xe[Le-2]),signalType:Fe.LINETYPE.PAR_OVER_START}),xe[Le-1].push({type:"parEnd",signalType:Fe.LINETYPE.PAR_END}),this.$=xe[Le-1];break;case 41:xe[Le-1].unshift({type:"criticalStart",criticalText:Fe.parseMessage(xe[Le-2]),signalType:Fe.LINETYPE.CRITICAL_START}),xe[Le-1].push({type:"criticalEnd",signalType:Fe.LINETYPE.CRITICAL_END}),this.$=xe[Le-1];break;case 42:xe[Le-1].unshift({type:"breakStart",breakText:Fe.parseMessage(xe[Le-2]),signalType:Fe.LINETYPE.BREAK_START}),xe[Le-1].push({type:"breakEnd",optText:Fe.parseMessage(xe[Le-2]),signalType:Fe.LINETYPE.BREAK_END}),this.$=xe[Le-1];break;case 44:this.$=xe[Le-3].concat([{type:"option",optionText:Fe.parseMessage(xe[Le-1]),signalType:Fe.LINETYPE.CRITICAL_OPTION},xe[Le]]);break;case 46:this.$=xe[Le-3].concat([{type:"and",parText:Fe.parseMessage(xe[Le-1]),signalType:Fe.LINETYPE.PAR_AND},xe[Le]]);break;case 48:this.$=xe[Le-3].concat([{type:"else",altText:Fe.parseMessage(xe[Le-1]),signalType:Fe.LINETYPE.ALT_ELSE},xe[Le]]);break;case 49:xe[Le-3].draw="participant",xe[Le-3].type="addParticipant",xe[Le-3].description=Fe.parseMessage(xe[Le-1]),this.$=xe[Le-3];break;case 50:xe[Le-1].draw="participant",xe[Le-1].type="addParticipant",this.$=xe[Le-1];break;case 51:xe[Le-3].draw="actor",xe[Le-3].type="addParticipant",xe[Le-3].description=Fe.parseMessage(xe[Le-1]),this.$=xe[Le-3];break;case 52:case 57:xe[Le-1].draw="actor",xe[Le-1].type="addParticipant",this.$=xe[Le-1];break;case 53:xe[Le-1].type="destroyParticipant",this.$=xe[Le-1];break;case 54:xe[Le-3].draw="participant",xe[Le-3].type="addParticipant",xe[Le-3].description=Fe.parseMessage(xe[Le-1]),this.$=xe[Le-3];break;case 55:xe[Le-1].draw="participant",xe[Le-1].type="addParticipant",this.$=xe[Le-1];break;case 56:xe[Le-3].draw="actor",xe[Le-3].type="addParticipant",xe[Le-3].description=Fe.parseMessage(xe[Le-1]),this.$=xe[Le-3];break;case 58:this.$=[xe[Le-1],{type:"addNote",placement:xe[Le-2],actor:xe[Le-1].actor,text:xe[Le]}];break;case 59:xe[Le-2]=[].concat(xe[Le-1],xe[Le-1]).slice(0,2),xe[Le-2][0]=xe[Le-2][0].actor,xe[Le-2][1]=xe[Le-2][1].actor,this.$=[xe[Le-1],{type:"addNote",placement:Fe.PLACEMENT.OVER,actor:xe[Le-2].slice(0,2),text:xe[Le]}];break;case 60:this.$=[xe[Le-1],{type:"addLinks",actor:xe[Le-1].actor,text:xe[Le]}];break;case 61:this.$=[xe[Le-1],{type:"addALink",actor:xe[Le-1].actor,text:xe[Le]}];break;case 62:this.$=[xe[Le-1],{type:"addProperties",actor:xe[Le-1].actor,text:xe[Le]}];break;case 63:this.$=[xe[Le-1],{type:"addDetails",actor:xe[Le-1].actor,text:xe[Le]}];break;case 66:this.$=[xe[Le-2],xe[Le]];break;case 67:this.$=xe[Le];break;case 68:this.$=Fe.PLACEMENT.LEFTOF;break;case 69:this.$=Fe.PLACEMENT.RIGHTOF;break;case 70:this.$=[xe[Le-4],xe[Le-1],{type:"addMessage",from:xe[Le-4].actor,to:xe[Le-1].actor,signalType:xe[Le-3],msg:xe[Le],activate:!0},{type:"activeStart",signalType:Fe.LINETYPE.ACTIVE_START,actor:xe[Le-1].actor}];break;case 71:this.$=[xe[Le-4],xe[Le-1],{type:"addMessage",from:xe[Le-4].actor,to:xe[Le-1].actor,signalType:xe[Le-3],msg:xe[Le]},{type:"activeEnd",signalType:Fe.LINETYPE.ACTIVE_END,actor:xe[Le-4].actor}];break;case 72:this.$=[xe[Le-4],xe[Le-1],{type:"addMessage",from:xe[Le-4].actor,to:xe[Le-1].actor,signalType:xe[Le-3],msg:xe[Le],activate:!0,centralConnection:Fe.LINETYPE.CENTRAL_CONNECTION},{type:"centralConnection",signalType:Fe.LINETYPE.CENTRAL_CONNECTION,actor:xe[Le-1].actor}];break;case 73:this.$=[xe[Le-4],xe[Le-1],{type:"addMessage",from:xe[Le-4].actor,to:xe[Le-1].actor,signalType:xe[Le-2],msg:xe[Le],activate:!1,centralConnection:Fe.LINETYPE.CENTRAL_CONNECTION_REVERSE},{type:"centralConnectionReverse",signalType:Fe.LINETYPE.CENTRAL_CONNECTION_REVERSE,actor:xe[Le-4].actor}];break;case 74:this.$=[xe[Le-5],xe[Le-1],{type:"addMessage",from:xe[Le-5].actor,to:xe[Le-1].actor,signalType:xe[Le-3],msg:xe[Le],activate:!0,centralConnection:Fe.LINETYPE.CENTRAL_CONNECTION_DUAL},{type:"centralConnection",signalType:Fe.LINETYPE.CENTRAL_CONNECTION,actor:xe[Le-1].actor},{type:"centralConnectionReverse",signalType:Fe.LINETYPE.CENTRAL_CONNECTION_REVERSE,actor:xe[Le-5].actor}];break;case 75:this.$=[xe[Le-3],xe[Le-1],{type:"addMessage",from:xe[Le-3].actor,to:xe[Le-1].actor,signalType:xe[Le-2],msg:xe[Le]}];break;case 76:this.$={type:"addParticipant",actor:xe[Le-1],config:xe[Le]};break;case 77:this.$=xe[Le-1].trim();break;case 78:this.$={type:"addParticipant",actor:xe[Le]};break;case 79:this.$=Fe.LINETYPE.SOLID_OPEN;break;case 80:this.$=Fe.LINETYPE.DOTTED_OPEN;break;case 81:this.$=Fe.LINETYPE.SOLID;break;case 82:this.$=Fe.LINETYPE.SOLID_TOP;break;case 83:this.$=Fe.LINETYPE.SOLID_BOTTOM;break;case 84:this.$=Fe.LINETYPE.STICK_TOP;break;case 85:this.$=Fe.LINETYPE.STICK_BOTTOM;break;case 86:this.$=Fe.LINETYPE.SOLID_TOP_DOTTED;break;case 87:this.$=Fe.LINETYPE.SOLID_BOTTOM_DOTTED;break;case 88:this.$=Fe.LINETYPE.STICK_TOP_DOTTED;break;case 89:this.$=Fe.LINETYPE.STICK_BOTTOM_DOTTED;break;case 90:this.$=Fe.LINETYPE.SOLID_ARROW_TOP_REVERSE;break;case 91:this.$=Fe.LINETYPE.SOLID_ARROW_BOTTOM_REVERSE;break;case 92:this.$=Fe.LINETYPE.STICK_ARROW_TOP_REVERSE;break;case 93:this.$=Fe.LINETYPE.STICK_ARROW_BOTTOM_REVERSE;break;case 94:this.$=Fe.LINETYPE.SOLID_ARROW_TOP_REVERSE_DOTTED;break;case 95:this.$=Fe.LINETYPE.SOLID_ARROW_BOTTOM_REVERSE_DOTTED;break;case 96:this.$=Fe.LINETYPE.STICK_ARROW_TOP_REVERSE_DOTTED;break;case 97:this.$=Fe.LINETYPE.STICK_ARROW_BOTTOM_REVERSE_DOTTED;break;case 98:this.$=Fe.LINETYPE.BIDIRECTIONAL_SOLID;break;case 99:this.$=Fe.LINETYPE.DOTTED;break;case 100:this.$=Fe.LINETYPE.BIDIRECTIONAL_DOTTED;break;case 101:this.$=Fe.LINETYPE.SOLID_CROSS;break;case 102:this.$=Fe.LINETYPE.DOTTED_CROSS;break;case 103:this.$=Fe.LINETYPE.SOLID_POINT;break;case 104:this.$=Fe.LINETYPE.DOTTED_POINT;break;case 105:this.$=Fe.parseMessage(xe[Le].trim().substring(1));break}},"anonymous"),table:[{3:1,4:t,5:r,6:n},{1:[3]},{3:5,4:t,5:r,6:n},{3:6,4:t,5:r,6:n},e([1,4,5,10,14,15,19,22,24,30,31,32,34,36,37,38,39,40,42,44,45,47,51,53,54,56,61,62,63,64,73],i,{7:7}),{1:[2,1]},{1:[2,2]},{1:[2,3],4:a,5:s,8:8,9:10,10:l,13:13,14:u,15:h,18:16,19:d,22:f,23:41,24:p,25:20,26:21,27:22,28:23,29:24,30:m,31:g,32:y,34:v,36:x,37:b,38:T,39:k,40:C,42:w,44:S,45:R,47:L,51:N,53:I,54:_,56:A,61:M,62:D,63:P,64:B,73:O},e($,[2,5]),{9:48,13:13,14:u,15:h,18:16,19:d,22:f,23:41,24:p,25:20,26:21,27:22,28:23,29:24,30:m,31:g,32:y,34:v,36:x,37:b,38:T,39:k,40:C,42:w,44:S,45:R,47:L,51:N,53:I,54:_,56:A,61:M,62:D,63:P,64:B,73:O},e($,[2,7]),e($,[2,8]),e($,[2,9]),e($,[2,15]),{13:49,51:N,53:I,54:_},{16:[1,50]},{5:[1,51]},{5:[1,54],20:[1,52],21:[1,53]},{23:55,73:O},{23:56,73:O},{5:[1,57]},{5:[1,58]},{5:[1,59]},{5:[1,60]},{5:[1,61]},e($,[2,30]),e($,[2,31]),{33:[1,62]},{35:[1,63]},e($,[2,34]),{16:[1,64]},{16:[1,65]},{16:[1,66]},{16:[1,67]},{16:[1,68]},{16:[1,69]},{16:[1,70]},{16:[1,71]},{23:72,55:73,73:V},{23:75,55:76,73:V},{23:77,73:O},{69:78,72:[1,79],78:G,79:z,80:W,81:H,82:j,83:Q,84:U,85:oe,86:te,87:le,88:ie,89:ae,90:Re,91:be,92:Pe,93:Ge,94:Oe,95:ue,96:ye,97:ke,98:ce,99:re,100:J,101:se,102:ge,103:Te},{57:106,59:[1,107],67:[1,108],68:[1,109]},{23:110,73:O},{23:111,73:O},{23:112,73:O},{23:113,73:O},e([5,66,72,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104],we),e($,[2,6]),e($,[2,16]),e(Me,[2,10],{11:114}),e($,[2,18]),{5:[1,116],20:[1,115]},{5:[1,117]},e($,[2,22]),{5:[1,118]},{5:[1,119]},e($,[2,25]),e($,[2,26]),e($,[2,27]),e($,[2,28]),e($,[2,29]),e($,[2,32]),e($,[2,33]),e(ve,i,{7:120}),e(ve,i,{7:121}),e(ve,i,{7:122}),e(ne,i,{41:123,7:124}),e(q,i,{43:125,7:126}),e(q,i,{7:126,43:127}),e(he,i,{46:128,7:129}),e(ve,i,{7:130}),{5:[1,132],52:[1,131]},{5:[1,134],52:[1,133]},e(X,we,{74:135,75:[1,136]}),{5:[1,138],52:[1,137]},{5:[1,140],52:[1,139]},{5:[1,141]},{23:145,70:[1,142],71:[1,143],72:[1,144],73:O},{69:146,78:G,79:z,80:W,81:H,82:j,83:Q,84:U,85:oe,86:te,87:le,88:ie,89:ae,90:Re,91:be,92:Pe,93:Ge,94:Oe,95:ue,96:ye,97:ke,98:ce,99:re,100:J,101:se,102:ge,103:Te},e(fe,[2,79]),e(fe,[2,80]),e(fe,[2,81]),e(fe,[2,82]),e(fe,[2,83]),e(fe,[2,84]),e(fe,[2,85]),e(fe,[2,86]),e(fe,[2,87]),e(fe,[2,88]),e(fe,[2,89]),e(fe,[2,90]),e(fe,[2,91]),e(fe,[2,92]),e(fe,[2,93]),e(fe,[2,94]),e(fe,[2,95]),e(fe,[2,96]),e(fe,[2,97]),e(fe,[2,98]),e(fe,[2,99]),e(fe,[2,100]),e(fe,[2,101]),e(fe,[2,102]),e(fe,[2,103]),e(fe,[2,104]),{23:147,73:O},{23:149,60:148,73:O},{73:[2,68]},{73:[2,69]},{58:150,104:K},{58:152,104:K},{58:153,104:K},{58:154,104:K},{4:[1,157],5:[1,159],12:156,13:158,17:[1,155],51:N,53:I,54:_},{5:[1,160]},e($,[2,20]),e($,[2,21]),e($,[2,23]),e($,[2,24]),{4:a,5:s,8:8,9:10,10:l,13:13,14:u,15:h,17:[1,161],18:16,19:d,22:f,23:41,24:p,25:20,26:21,27:22,28:23,29:24,30:m,31:g,32:y,34:v,36:x,37:b,38:T,39:k,40:C,42:w,44:S,45:R,47:L,51:N,53:I,54:_,56:A,61:M,62:D,63:P,64:B,73:O},{4:a,5:s,8:8,9:10,10:l,13:13,14:u,15:h,17:[1,162],18:16,19:d,22:f,23:41,24:p,25:20,26:21,27:22,28:23,29:24,30:m,31:g,32:y,34:v,36:x,37:b,38:T,39:k,40:C,42:w,44:S,45:R,47:L,51:N,53:I,54:_,56:A,61:M,62:D,63:P,64:B,73:O},{4:a,5:s,8:8,9:10,10:l,13:13,14:u,15:h,17:[1,163],18:16,19:d,22:f,23:41,24:p,25:20,26:21,27:22,28:23,29:24,30:m,31:g,32:y,34:v,36:x,37:b,38:T,39:k,40:C,42:w,44:S,45:R,47:L,51:N,53:I,54:_,56:A,61:M,62:D,63:P,64:B,73:O},{17:[1,164]},{4:a,5:s,8:8,9:10,10:l,13:13,14:u,15:h,17:[2,47],18:16,19:d,22:f,23:41,24:p,25:20,26:21,27:22,28:23,29:24,30:m,31:g,32:y,34:v,36:x,37:b,38:T,39:k,40:C,42:w,44:S,45:R,47:L,50:[1,165],51:N,53:I,54:_,56:A,61:M,62:D,63:P,64:B,73:O},{17:[1,166]},{4:a,5:s,8:8,9:10,10:l,13:13,14:u,15:h,17:[2,45],18:16,19:d,22:f,23:41,24:p,25:20,26:21,27:22,28:23,29:24,30:m,31:g,32:y,34:v,36:x,37:b,38:T,39:k,40:C,42:w,44:S,45:R,47:L,49:[1,167],51:N,53:I,54:_,56:A,61:M,62:D,63:P,64:B,73:O},{17:[1,168]},{17:[1,169]},{4:a,5:s,8:8,9:10,10:l,13:13,14:u,15:h,17:[2,43],18:16,19:d,22:f,23:41,24:p,25:20,26:21,27:22,28:23,29:24,30:m,31:g,32:y,34:v,36:x,37:b,38:T,39:k,40:C,42:w,44:S,45:R,47:L,48:[1,170],51:N,53:I,54:_,56:A,61:M,62:D,63:P,64:B,73:O},{4:a,5:s,8:8,9:10,10:l,13:13,14:u,15:h,17:[1,171],18:16,19:d,22:f,23:41,24:p,25:20,26:21,27:22,28:23,29:24,30:m,31:g,32:y,34:v,36:x,37:b,38:T,39:k,40:C,42:w,44:S,45:R,47:L,51:N,53:I,54:_,56:A,61:M,62:D,63:P,64:B,73:O},{16:[1,172]},e($,[2,50]),{16:[1,173]},e($,[2,55]),e(X,[2,76]),{76:[1,174]},{16:[1,175]},e($,[2,52]),{16:[1,176]},e($,[2,57]),e($,[2,53]),{23:177,73:O},{23:178,73:O},{23:179,73:O},{58:180,104:K},{23:181,72:[1,182],73:O},{58:183,104:K},{58:184,104:K},{66:[1,185],104:[2,67]},{5:[2,60]},{5:[2,105]},{5:[2,61]},{5:[2,62]},{5:[2,63]},e($,[2,17]),e(Me,[2,11]),{13:186,51:N,53:I,54:_},e(Me,[2,13]),e(Me,[2,14]),e($,[2,19]),e($,[2,35]),e($,[2,36]),e($,[2,37]),e($,[2,38]),{16:[1,187]},e($,[2,39]),{16:[1,188]},e($,[2,40]),e($,[2,41]),{16:[1,189]},e($,[2,42]),{5:[1,190]},{5:[1,191]},{77:[1,192]},{5:[1,193]},{5:[1,194]},{58:195,104:K},{58:196,104:K},{58:197,104:K},{5:[2,75]},{58:198,104:K},{23:199,73:O},{5:[2,58]},{5:[2,59]},{23:200,73:O},e(Me,[2,12]),e(ne,i,{7:124,41:201}),e(q,i,{7:126,43:202}),e(he,i,{7:129,46:203}),e($,[2,49]),e($,[2,54]),e(X,[2,77]),e($,[2,51]),e($,[2,56]),{5:[2,70]},{5:[2,71]},{5:[2,72]},{5:[2,73]},{58:204,104:K},{104:[2,66]},{17:[2,48]},{17:[2,46]},{17:[2,44]},{5:[2,74]}],defaultActions:{5:[2,1],6:[2,2],108:[2,68],109:[2,69],150:[2,60],151:[2,105],152:[2,61],153:[2,62],154:[2,63],180:[2,75],183:[2,58],184:[2,59],195:[2,70],196:[2,71],197:[2,72],198:[2,73],200:[2,66],201:[2,48],202:[2,46],203:[2,44],204:[2,74]},parseError:o(function(He,$e){if($e.recoverable)this.trace(He);else{var Xe=new Error(He);throw Xe.hash=$e,Xe}},"parseError"),parse:o(function(He){var $e=this,Xe=[0],Fe=[],Ke=[null],xe=[],mt=this.table,Le="",ft=0,wt=0,zt=0,St=2,At=1,bt=xe.slice.call(arguments,1),me=Object.create(this.lexer),lt={yy:{}};for(var gt in this.yy)Object.prototype.hasOwnProperty.call(this.yy,gt)&&(lt.yy[gt]=this.yy[gt]);me.setInput(He,lt.yy),lt.yy.lexer=me,lt.yy.parser=this,typeof me.yylloc>"u"&&(me.yylloc={});var Ze=me.yylloc;xe.push(Ze);var Ee=me.options&&me.options.ranges;typeof lt.yy.parseError=="function"?this.parseError=lt.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function tt(Ht){Xe.length=Xe.length-2*Ht,Ke.length=Ke.length-Ht,xe.length=xe.length-Ht}o(tt,"popStack");function at(){var Ht;return Ht=Fe.pop()||me.lex()||At,typeof Ht!="number"&&(Ht instanceof Array&&(Fe=Ht,Ht=Fe.pop()),Ht=$e.symbols_[Ht]||Ht),Ht}o(at,"lex");for(var ot,Wt,Bt,qt,vr,Tt,De={},it,We,rt,yt;;){if(Bt=Xe[Xe.length-1],this.defaultActions[Bt]?qt=this.defaultActions[Bt]:((ot===null||typeof ot>"u")&&(ot=at()),qt=mt[Bt]&&mt[Bt][ot]),typeof qt>"u"||!qt.length||!qt[0]){var Yt="";yt=[];for(it in mt[Bt])this.terminals_[it]&&it>St&&yt.push("'"+this.terminals_[it]+"'");me.showPosition?Yt="Parse error on line "+(ft+1)+`:
+`+me.showPosition()+`
+Expecting `+yt.join(", ")+", got '"+(this.terminals_[ot]||ot)+"'":Yt="Parse error on line "+(ft+1)+": Unexpected "+(ot==At?"end of input":"'"+(this.terminals_[ot]||ot)+"'"),this.parseError(Yt,{text:me.match,token:this.terminals_[ot]||ot,line:me.yylineno,loc:Ze,expected:yt})}if(qt[0]instanceof Array&&qt.length>1)throw new Error("Parse Error: multiple actions possible at state: "+Bt+", token: "+ot);switch(qt[0]){case 1:Xe.push(ot),Ke.push(me.yytext),xe.push(me.yylloc),Xe.push(qt[1]),ot=null,Wt?(ot=Wt,Wt=null):(wt=me.yyleng,Le=me.yytext,ft=me.yylineno,Ze=me.yylloc,zt>0&&zt--);break;case 2:if(We=this.productions_[qt[1]][1],De.$=Ke[Ke.length-We],De._$={first_line:xe[xe.length-(We||1)].first_line,last_line:xe[xe.length-1].last_line,first_column:xe[xe.length-(We||1)].first_column,last_column:xe[xe.length-1].last_column},Ee&&(De._$.range=[xe[xe.length-(We||1)].range[0],xe[xe.length-1].range[1]]),Tt=this.performAction.apply(De,[Le,wt,ft,lt.yy,qt[1],Ke,xe].concat(bt)),typeof Tt<"u")return Tt;We&&(Xe=Xe.slice(0,-1*We*2),Ke=Ke.slice(0,-1*We),xe=xe.slice(0,-1*We)),Xe.push(this.productions_[qt[1]][0]),Ke.push(De.$),xe.push(De._$),rt=mt[Xe[Xe.length-2]][Xe[Xe.length-1]],Xe.push(rt);break;case 3:return!0}}return!0},"parse")},_e=(function(){var Ne={EOF:1,parseError:o(function($e,Xe){if(this.yy.parser)this.yy.parser.parseError($e,Xe);else throw new Error($e)},"parseError"),setInput:o(function(He,$e){return this.yy=$e||this.yy||{},this._input=He,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},"setInput"),input:o(function(){var He=this._input[0];this.yytext+=He,this.yyleng++,this.offset++,this.match+=He,this.matched+=He;var $e=He.match(/(?:\r\n?|\n).*/g);return $e?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),He},"input"),unput:o(function(He){var $e=He.length,Xe=He.split(/(?:\r\n?|\n)/g);this._input=He+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-$e),this.offset-=$e;var Fe=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),Xe.length-1&&(this.yylineno-=Xe.length-1);var Ke=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:Xe?(Xe.length===Fe.length?this.yylloc.first_column:0)+Fe[Fe.length-Xe.length].length-Xe[0].length:this.yylloc.first_column-$e},this.options.ranges&&(this.yylloc.range=[Ke[0],Ke[0]+this.yyleng-$e]),this.yyleng=this.yytext.length,this},"unput"),more:o(function(){return this._more=!0,this},"more"),reject:o(function(){if(this.options.backtrack_lexer)this._backtrack=!0;else return this.parseError("Lexical error on line "+(this.yylineno+1)+`. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).
+`+this.showPosition(),{text:"",token:null,line:this.yylineno});return this},"reject"),less:o(function(He){this.unput(this.match.slice(He))},"less"),pastInput:o(function(){var He=this.matched.substr(0,this.matched.length-this.match.length);return(He.length>20?"...":"")+He.substr(-20).replace(/\n/g,"")},"pastInput"),upcomingInput:o(function(){var He=this.match;return He.length<20&&(He+=this._input.substr(0,20-He.length)),(He.substr(0,20)+(He.length>20?"...":"")).replace(/\n/g,"")},"upcomingInput"),showPosition:o(function(){var He=this.pastInput(),$e=new Array(He.length+1).join("-");return He+this.upcomingInput()+`
+`+$e+"^"},"showPosition"),test_match:o(function(He,$e){var Xe,Fe,Ke;if(this.options.backtrack_lexer&&(Ke={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(Ke.yylloc.range=this.yylloc.range.slice(0))),Fe=He[0].match(/(?:\r\n?|\n).*/g),Fe&&(this.yylineno+=Fe.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:Fe?Fe[Fe.length-1].length-Fe[Fe.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+He[0].length},this.yytext+=He[0],this.match+=He[0],this.matches=He,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(He[0].length),this.matched+=He[0],Xe=this.performAction.call(this,this.yy,this,$e,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),Xe)return Xe;if(this._backtrack){for(var xe in Ke)this[xe]=Ke[xe];return!1}return!1},"test_match"),next:o(function(){if(this.done)return this.EOF;this._input||(this.done=!0);var He,$e,Xe,Fe;this._more||(this.yytext="",this.match="");for(var Ke=this._currentRules(),xe=0;xe<Ke.length;xe++)if(Xe=this._input.match(this.rules[Ke[xe]]),Xe&&(!$e||Xe[0].length>$e[0].length)){if($e=Xe,Fe=xe,this.options.backtrack_lexer){if(He=this.test_match(Xe,Ke[xe]),He!==!1)return He;if(this._backtrack){$e=!1;continue}else return!1}else if(!this.options.flex)break}return $e?(He=this.test_match($e,Ke[Fe]),He!==!1?He:!1):this._input===""?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+`. Unrecognized text.
+`+this.showPosition(),{text:"",token:null,line:this.yylineno})},"next"),lex:o(function(){var $e=this.next();return $e||this.lex()},"lex"),begin:o(function($e){this.conditionStack.push($e)},"begin"),popState:o(function(){var $e=this.conditionStack.length-1;return $e>0?this.conditionStack.pop():this.conditionStack[0]},"popState"),_currentRules:o(function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},"_currentRules"),topState:o(function($e){return $e=this.conditionStack.length-1-Math.abs($e||0),$e>=0?this.conditionStack[$e]:"INITIAL"},"topState"),pushState:o(function($e){this.begin($e)},"pushState"),stateStackSize:o(function(){return this.conditionStack.length},"stateStackSize"),options:{"case-insensitive":!0},performAction:o(function($e,Xe,Fe,Ke){var xe=Ke;switch(Fe){case 0:return 5;case 1:break;case 2:break;case 3:break;case 4:break;case 5:break;case 6:return 20;case 7:return this.begin("CONFIG"),75;break;case 8:return 76;case 9:return this.popState(),this.begin("ALIAS"),77;break;case 10:return this.popState(),this.popState(),77;break;case 11:return Xe.yytext=Xe.yytext.trim(),73;break;case 12:return Xe.yytext=Xe.yytext.trim(),this.begin("ALIAS"),73;break;case 13:return Xe.yytext=Xe.yytext.trim(),this.popState(),73;break;case 14:return this.popState(),10;break;case 15:return Xe.yytext=Xe.yytext.trim(),this.popState(),10;break;case 16:return this.begin("LINE"),15;break;case 17:return this.begin("ID"),51;break;case 18:return this.begin("ID"),53;break;case 19:return 14;case 20:return this.begin("ID"),54;break;case 21:return this.popState(),this.popState(),this.begin("LINE"),52;break;case 22:return this.popState(),this.popState(),5;break;case 23:return this.begin("LINE"),37;break;case 24:return this.begin("LINE"),38;break;case 25:return this.begin("LINE"),39;break;case 26:return this.begin("LINE"),40;break;case 27:return this.begin("LINE"),50;break;case 28:return this.begin("LINE"),42;break;case 29:return this.begin("LINE"),44;break;case 30:return this.begin("LINE"),49;break;case 31:return this.begin("LINE"),45;break;case 32:return this.begin("LINE"),48;break;case 33:return this.begin("LINE"),47;break;case 34:return this.popState(),16;break;case 35:return 17;case 36:return 67;case 37:return 68;case 38:return 61;case 39:return 62;case 40:return 63;case 41:return 64;case 42:return 59;case 43:return 56;case 44:return this.begin("ID"),22;break;case 45:return this.begin("ID"),24;break;case 46:return 30;case 47:return 31;case 48:return this.begin("acc_title"),32;break;case 49:return this.popState(),"acc_title_value";break;case 50:return this.begin("acc_descr"),34;break;case 51:return this.popState(),"acc_descr_value";break;case 52:this.begin("acc_descr_multiline");break;case 53:this.popState();break;case 54:return"acc_descr_multiline_value";case 55:return 6;case 56:return 19;case 57:return 21;case 58:return 66;case 59:return 5;case 60:return Xe.yytext=Xe.yytext.trim(),73;break;case 61:return 80;case 62:return 97;case 63:return 98;case 64:return 99;case 65:return 78;case 66:return 79;case 67:return 100;case 68:return 101;case 69:return 102;case 70:return 103;case 71:return 85;case 72:return 86;case 73:return 87;case 74:return 88;case 75:return 93;case 76:return 94;case 77:return 95;case 78:return 96;case 79:return 81;case 80:return 82;case 81:return 83;case 82:return 84;case 83:return 89;case 84:return 90;case 85:return 91;case 86:return 92;case 87:return 104;case 88:return 104;case 89:return 70;case 90:return 71;case 91:return 72;case 92:return 5;case 93:return 10}},"anonymous"),rules:[/^(?:[\n]+)/i,/^(?:\s+)/i,/^(?:((?!\n)\s)+)/i,/^(?:#[^\n]*)/i,/^(?:%(?!\{)[^\n]*)/i,/^(?:[^\}]%%[^\n]*)/i,/^(?:([0-9]+(\.[0-9]{1,2})?|\.[0-9]{1,2})(?=[ \n]+))/i,/^(?:@\{)/i,/^(?:[^\}]+)/i,/^(?:\}(?=\s+as\s))/i,/^(?:\})/i,/^(?:[^\<->\->:\n,;@\s]+(?=@\{))/i,/^(?:[^<>:\n,;@\s]+(?=\s+as\s))/i,/^(?:[^<>:\n,;@]+(?=\s*[\n;#]|$))/i,/^(?:[^<>:\n,;@]*<[^\n]*)/i,/^(?:[^\n]+)/i,/^(?:box\b)/i,/^(?:participant\b)/i,/^(?:actor\b)/i,/^(?:create\b)/i,/^(?:destroy\b)/i,/^(?:as\b)/i,/^(?:(?:))/i,/^(?:loop\b)/i,/^(?:rect\b)/i,/^(?:opt\b)/i,/^(?:alt\b)/i,/^(?:else\b)/i,/^(?:par\b)/i,/^(?:par_over\b)/i,/^(?:and\b)/i,/^(?:critical\b)/i,/^(?:option\b)/i,/^(?:break\b)/i,/^(?:(?:[:]?(?:no)?wrap)?[^#\n;]*)/i,/^(?:end\b)/i,/^(?:left of\b)/i,/^(?:right of\b)/i,/^(?:links\b)/i,/^(?:link\b)/i,/^(?:properties\b)/i,/^(?:details\b)/i,/^(?:over\b)/i,/^(?:note\b)/i,/^(?:activate\b)/i,/^(?:deactivate\b)/i,/^(?:title\s[^#\n;]+)/i,/^(?:title:\s[^#\n;]+)/i,/^(?:accTitle\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*\{\s*)/i,/^(?:[\}])/i,/^(?:[^\}]*)/i,/^(?:sequenceDiagram\b)/i,/^(?:autonumber\b)/i,/^(?:off\b)/i,/^(?:,)/i,/^(?:;)/i,/^(?:[^\/\\\+\()\+<\->\->:\n,;]+((?!(-x|--x|-\)|--\)|-\|\\|-\\|-\/|-\/\/|-\|\/|\/\|-|\\\|-|\/\/-|\\\\-|\/\|-|--\|\\|--|\(\)))[\-]*[^\+<\->\->:\n,;]+)*)/i,/^(?:->>)/i,/^(?:<<->>)/i,/^(?:-->>)/i,/^(?:<<-->>)/i,/^(?:->)/i,/^(?:-->)/i,/^(?:-[x])/i,/^(?:--[x])/i,/^(?:-[\)])/i,/^(?:--[\)])/i,/^(?:--\|\\)/i,/^(?:--\|\/)/i,/^(?:--\\\\)/i,/^(?:--\/\/)/i,/^(?:\/\|--)/i,/^(?:\\\|--)/i,/^(?:\/\/--)/i,/^(?:\\\\--)/i,/^(?:-\|\\)/i,/^(?:-\|\/)/i,/^(?:-\\\\)/i,/^(?:-\/\/)/i,/^(?:\/\|-)/i,/^(?:\\\|-)/i,/^(?:\/\/-)/i,/^(?:\\\\-)/i,/^(?::(?:(?:no)?wrap)?[^#\n;]*)/i,/^(?::)/i,/^(?:\+)/i,/^(?:-)/i,/^(?:\(\))/i,/^(?:$)/i,/^(?:.)/i],conditions:{acc_descr_multiline:{rules:[53,54],inclusive:!1},acc_descr:{rules:[51],inclusive:!1},acc_title:{rules:[49],inclusive:!1},ID:{rules:[2,3,7,11,12,13,14,15],inclusive:!1},ALIAS:{rules:[2,3,21,22],inclusive:!1},LINE:{rules:[2,3,34],inclusive:!1},CONFIG:{rules:[8,9,10],inclusive:!1},CONFIG_DATA:{rules:[],inclusive:!1},INITIAL:{rules:[0,1,3,4,5,6,16,17,18,19,20,23,24,25,26,27,28,29,30,31,32,33,35,36,37,38,39,40,41,42,43,44,45,46,47,48,50,52,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93],inclusive:!0}}};return Ne})();qe.lexer=_e;function Be(){this.yy={}}return o(Be,"Parser"),Be.prototype=qe,qe.Parser=Be,new Be})();iY.parser=iY;Z8e=iY});var XAt,KAt,ZAt,Fw,TL,aY=F(()=>{"use strict";Xt();A2();vt();J_();Vr();Nn();XAt={SOLID:0,DOTTED:1,NOTE:2,SOLID_CROSS:3,DOTTED_CROSS:4,SOLID_OPEN:5,DOTTED_OPEN:6,LOOP_START:10,LOOP_END:11,ALT_START:12,ALT_ELSE:13,ALT_END:14,OPT_START:15,OPT_END:16,ACTIVE_START:17,ACTIVE_END:18,PAR_START:19,PAR_AND:20,PAR_END:21,RECT_START:22,RECT_END:23,SOLID_POINT:24,DOTTED_POINT:25,AUTONUMBER:26,CRITICAL_START:27,CRITICAL_OPTION:28,CRITICAL_END:29,BREAK_START:30,BREAK_END:31,PAR_OVER_START:32,BIDIRECTIONAL_SOLID:33,BIDIRECTIONAL_DOTTED:34,SOLID_TOP:41,SOLID_BOTTOM:42,STICK_TOP:43,STICK_BOTTOM:44,SOLID_ARROW_TOP_REVERSE:45,SOLID_ARROW_BOTTOM_REVERSE:46,STICK_ARROW_TOP_REVERSE:47,STICK_ARROW_BOTTOM_REVERSE:48,SOLID_TOP_DOTTED:51,SOLID_BOTTOM_DOTTED:52,STICK_TOP_DOTTED:53,STICK_BOTTOM_DOTTED:54,SOLID_ARROW_TOP_REVERSE_DOTTED:55,SOLID_ARROW_BOTTOM_REVERSE_DOTTED:56,STICK_ARROW_TOP_REVERSE_DOTTED:57,STICK_ARROW_BOTTOM_REVERSE_DOTTED:58,CENTRAL_CONNECTION:59,CENTRAL_CONNECTION_REVERSE:60,CENTRAL_CONNECTION_DUAL:61},KAt={FILLED:0,OPEN:1},ZAt={LEFTOF:0,RIGHTOF:1,OVER:2},Fw={ACTOR:"actor",BOUNDARY:"boundary",COLLECTIONS:"collections",CONTROL:"control",DATABASE:"database",ENTITY:"entity",PARTICIPANT:"participant",QUEUE:"queue"},TL=class{constructor(){this.state=new Cp(()=>({prevActor:void 0,actors:new Map,createdActors:new Map,destroyedActors:new Map,boxes:[],messages:[],notes:[],sequenceNumbersEnabled:!1,wrapEnabled:void 0,currentBox:void 0,lastCreated:void 0,lastDestroyed:void 0}));this.setAccTitle=kr;this.setAccDescription=Rr;this.setDiagramTitle=Or;this.getAccTitle=Ar;this.getAccDescription=_r;this.getDiagramTitle=Lr;this.apply=this.apply.bind(this),this.parseBoxData=this.parseBoxData.bind(this),this.parseMessage=this.parseMessage.bind(this),this.clear(),this.setWrap(Ae().wrap),this.LINETYPE=XAt,this.ARROWTYPE=KAt,this.PLACEMENT=ZAt}static{o(this,"SequenceDB")}addBox(t){this.state.records.boxes.push({name:t.text,wrap:t.wrap??this.autoWrap(),fill:t.color,actorKeys:[]}),this.state.records.currentBox=this.state.records.boxes.slice(-1)[0]}addActor(t,r,n,i,a){let s=this.state.records.currentBox,l;if(a!==void 0){let h;a.includes(`
 `)?h=a+`
 `:h=`{
 `+a+`
-}`,l=ld(h,{schema:od})}n=l?.type??n,l?.alias&&(!i||i.text===r)&&(i={text:l.alias,wrap:i?.wrap,type:n});let u=this.state.records.actors.get(t);if(u){if(this.state.records.currentBox&&u.box&&this.state.records.currentBox!==u.box)throw new Error(`A same participant should only be defined in one Box: ${u.name} can't be in '${u.box.name}' and in '${this.state.records.currentBox.name}' at the same time.`);if(s=u.box?u.box:this.state.records.currentBox,u.box=s,u&&r===u.name&&i==null)return}if(i?.text==null&&(i={text:r,type:n}),(n==null||i.text==null)&&(i={text:r,type:n}),this.state.records.actors.set(t,{box:s,name:r,description:i.text,wrap:i.wrap??this.autoWrap(),prevActor:this.state.records.prevActor,links:{},properties:{},actorCnt:null,rectData:null,type:n??"participant"}),this.state.records.prevActor){let h=this.state.records.actors.get(this.state.records.prevActor);h&&(h.nextActor=t)}this.state.records.currentBox&&this.state.records.currentBox.actorKeys.push(t),this.state.records.prevActor=t}activationCount(t){let r,i=0;if(!t)return 0;for(r=0;r<this.state.records.messages.length;r++)this.state.records.messages[r].type===this.LINETYPE.ACTIVE_START&&this.state.records.messages[r].from===t&&i++,this.state.records.messages[r].type===this.LINETYPE.ACTIVE_END&&this.state.records.messages[r].from===t&&i--;return i}addMessage(t,r,i,n){this.state.records.messages.push({id:this.state.records.messages.length.toString(),from:t,to:r,message:i.text,wrap:i.wrap??this.autoWrap(),answer:n})}addSignal(t,r,i,n,a=!1,s){if(n===this.LINETYPE.ACTIVE_END&&this.activationCount(t??"")<1){let u=new Error("Trying to inactivate an inactive participant ("+t+")");throw u.hash={text:"->>-",token:"->>-",line:"1",loc:{first_line:1,last_line:1,first_column:1,last_column:1},expected:["'ACTIVE_PARTICIPANT'"]},u}return this.state.records.messages.push({id:this.state.records.messages.length.toString(),from:t,to:r,message:i?.text??"",wrap:i?.wrap??this.autoWrap(),type:n,activate:a,centralConnection:s??0}),!0}hasAtLeastOneBox(){return this.state.records.boxes.length>0}hasAtLeastOneBoxWithTitle(){return this.state.records.boxes.some(t=>t.name)}getMessages(){return this.state.records.messages}getBoxes(){return this.state.records.boxes}getActors(){return this.state.records.actors}getCreatedActors(){return this.state.records.createdActors}getDestroyedActors(){return this.state.records.destroyedActors}getActor(t){return this.state.records.actors.get(t)}getActorKeys(){return[...this.state.records.actors.keys()]}enableSequenceNumbers(){this.state.records.sequenceNumbersEnabled=!0}disableSequenceNumbers(){this.state.records.sequenceNumbersEnabled=!1}showSequenceNumbers(){return this.state.records.sequenceNumbersEnabled}setWrap(t){this.state.records.wrapEnabled=t}extractWrap(t){if(t===void 0)return{};t=t.trim();let r=/^:?wrap:/.exec(t)!==null?!0:/^:?nowrap:/.exec(t)!==null?!1:void 0;return{cleanedText:(r===void 0?t:t.replace(/^:?(?:no)?wrap:/,"")).trim(),wrap:r}}autoWrap(){return this.state.records.wrapEnabled!==void 0?this.state.records.wrapEnabled:ge().sequence?.wrap??!1}clear(){this.state.reset(),gr()}parseMessage(t){let r=t.trim(),{wrap:i,cleanedText:n}=this.extractWrap(r),a={text:n,wrap:i};return Z.debug(`parseMessage: ${JSON.stringify(a)}`),a}parseBoxData(t){let r=/^((?:rgba?|hsla?)\s*\(.*\)|\w*)(.*)$/.exec(t),i=r?.[1]?r[1].trim():"transparent",n=r?.[2]?r[2].trim():void 0;if(window?.CSS)window.CSS.supports("color",i)||(i="transparent",n=t.trim());else{let l=new Option().style;l.color=i,l.color!==i&&(i="transparent",n=t.trim())}let{wrap:a,cleanedText:s}=this.extractWrap(n);return{text:s?fr(s,ge()):void 0,color:i,wrap:a}}addNote(t,r,i){let n={actor:t,placement:r,message:i.text,wrap:i.wrap??this.autoWrap()},a=[].concat(t,t);this.state.records.notes.push(n),this.state.records.messages.push({id:this.state.records.messages.length.toString(),from:a[0],to:a[1],message:i.text,wrap:i.wrap??this.autoWrap(),type:this.LINETYPE.NOTE,placement:r})}addLinks(t,r){let i=this.getActor(t);try{let n=fr(r.text,ge());n=n.replace(/&equals;/g,"="),n=n.replace(/&amp;/g,"&");let a=JSON.parse(n);this.insertLinks(i,a)}catch(n){Z.error("error while parsing actor link text",n)}}addALink(t,r){let i=this.getActor(t);try{let n={},a=fr(r.text,ge()),s=a.indexOf("@");a=a.replace(/&equals;/g,"="),a=a.replace(/&amp;/g,"&");let l=a.slice(0,s-1).trim(),u=a.slice(s+1).trim();n[l]=u,this.insertLinks(i,n)}catch(n){Z.error("error while parsing actor link text",n)}}insertLinks(t,r){if(t.links==null)t.links=r;else for(let i in r)t.links[i]=r[i]}addProperties(t,r){let i=this.getActor(t);try{let n=fr(r.text,ge()),a=JSON.parse(n);this.insertProperties(i,a)}catch(n){Z.error("error while parsing actor properties text",n)}}insertProperties(t,r){if(t.properties==null)t.properties=r;else for(let i in r)t.properties[i]=r[i]}boxEnd(){this.state.records.currentBox=void 0}addDetails(t,r){let i=this.getActor(t),n=document.getElementById(r.text);try{let a=n.innerHTML,s=JSON.parse(a);s.properties&&this.insertProperties(i,s.properties),s.links&&this.insertLinks(i,s.links)}catch(a){Z.error("error while parsing actor details text",a)}}getActorProperty(t,r){if(t?.properties!==void 0)return t.properties[r]}apply(t){if(Array.isArray(t))t.forEach(r=>{this.apply(r)});else switch(t.type){case"sequenceIndex":this.state.records.messages.push({id:this.state.records.messages.length.toString(),from:void 0,to:void 0,message:{start:t.sequenceIndex,step:t.sequenceIndexStep,visible:t.sequenceVisible},wrap:!1,type:t.signalType});break;case"addParticipant":this.addActor(t.actor,t.actor,t.description,t.draw,t.config);break;case"createParticipant":if(this.state.records.actors.has(t.actor))throw new Error("It is not possible to have actors with the same id, even if one is destroyed before the next is created. Use 'AS' aliases to simulate the behavior");this.state.records.lastCreated=t.actor,this.addActor(t.actor,t.actor,t.description,t.draw,t.config),this.state.records.createdActors.set(t.actor,this.state.records.messages.length);break;case"destroyParticipant":this.state.records.lastDestroyed=t.actor,this.state.records.destroyedActors.set(t.actor,this.state.records.messages.length);break;case"activeStart":this.addSignal(t.actor,void 0,void 0,t.signalType);break;case"centralConnection":this.addSignal(t.actor,void 0,void 0,t.signalType);break;case"centralConnectionReverse":this.addSignal(t.actor,void 0,void 0,t.signalType);break;case"activeEnd":this.addSignal(t.actor,void 0,void 0,t.signalType);break;case"addNote":this.addNote(t.actor,t.placement,t.text);break;case"addLinks":this.addLinks(t.actor,t.text);break;case"addALink":this.addALink(t.actor,t.text);break;case"addProperties":this.addProperties(t.actor,t.text);break;case"addDetails":this.addDetails(t.actor,t.text);break;case"addMessage":if(this.state.records.lastCreated){if(t.to!==this.state.records.lastCreated)throw new Error("The created participant "+this.state.records.lastCreated.name+" does not have an associated creating message after its declaration. Please check the sequence diagram.");this.state.records.lastCreated=void 0}else if(this.state.records.lastDestroyed){if(t.to!==this.state.records.lastDestroyed&&t.from!==this.state.records.lastDestroyed)throw new Error("The destroyed participant "+this.state.records.lastDestroyed.name+" does not have an associated destroying message after its declaration. Please check the sequence diagram.");this.state.records.lastDestroyed=void 0}this.addSignal(t.from,t.to,t.msg,t.signalType,t.activate,t.centralConnection);break;case"boxStart":this.addBox(t.boxData);break;case"boxEnd":this.boxEnd();break;case"loopStart":this.addSignal(void 0,void 0,t.loopText,t.signalType);break;case"loopEnd":this.addSignal(void 0,void 0,void 0,t.signalType);break;case"rectStart":this.addSignal(void 0,void 0,t.color,t.signalType);break;case"rectEnd":this.addSignal(void 0,void 0,void 0,t.signalType);break;case"optStart":this.addSignal(void 0,void 0,t.optText,t.signalType);break;case"optEnd":this.addSignal(void 0,void 0,void 0,t.signalType);break;case"altStart":this.addSignal(void 0,void 0,t.altText,t.signalType);break;case"else":this.addSignal(void 0,void 0,t.altText,t.signalType);break;case"altEnd":this.addSignal(void 0,void 0,void 0,t.signalType);break;case"setAccTitle":Cr(t.text);break;case"parStart":this.addSignal(void 0,void 0,t.parText,t.signalType);break;case"and":this.addSignal(void 0,void 0,t.parText,t.signalType);break;case"parEnd":this.addSignal(void 0,void 0,void 0,t.signalType);break;case"criticalStart":this.addSignal(void 0,void 0,t.criticalText,t.signalType);break;case"option":this.addSignal(void 0,void 0,t.optionText,t.signalType);break;case"criticalEnd":this.addSignal(void 0,void 0,void 0,t.signalType);break;case"breakStart":this.addSignal(void 0,void 0,t.breakText,t.signalType);break;case"breakEnd":this.addSignal(void 0,void 0,void 0,t.signalType);break}}getConfig(){return ge().sequence}}});var ETt,o6e,l6e=z(()=>{"use strict";Ut();ETt=o(e=>{let t=e.dropShadow??"none",{look:r}=ge();return`.actor {
+}`,l=Qd(h,{schema:Zd})}i=l?.type??i,l?.alias&&(!n||n.text===r)&&(n={text:l.alias,wrap:n?.wrap,type:i});let u=this.state.records.actors.get(t);if(u){if(this.state.records.currentBox&&u.box&&this.state.records.currentBox!==u.box)throw new Error(`A same participant should only be defined in one Box: ${u.name} can't be in '${u.box.name}' and in '${this.state.records.currentBox.name}' at the same time.`);if(s=u.box?u.box:this.state.records.currentBox,u.box=s,u&&r===u.name&&n==null)return}if(n?.text==null&&(n={text:r,type:i}),(i==null||n.text==null)&&(n={text:r,type:i}),this.state.records.actors.set(t,{box:s,name:r,description:n.text,wrap:n.wrap??this.autoWrap(),prevActor:this.state.records.prevActor,links:{},properties:{},actorCnt:null,rectData:null,type:i??"participant"}),this.state.records.prevActor){let h=this.state.records.actors.get(this.state.records.prevActor);h&&(h.nextActor=t)}this.state.records.currentBox&&this.state.records.currentBox.actorKeys.push(t),this.state.records.prevActor=t}activationCount(t){let r,n=0;if(!t)return 0;for(r=0;r<this.state.records.messages.length;r++)this.state.records.messages[r].type===this.LINETYPE.ACTIVE_START&&this.state.records.messages[r].from===t&&n++,this.state.records.messages[r].type===this.LINETYPE.ACTIVE_END&&this.state.records.messages[r].from===t&&n--;return n}addMessage(t,r,n,i){this.state.records.messages.push({id:this.state.records.messages.length.toString(),from:t,to:r,message:n.text,wrap:n.wrap??this.autoWrap(),answer:i})}addSignal(t,r,n,i,a=!1,s){if(i===this.LINETYPE.ACTIVE_END&&this.activationCount(t??"")<1){let u=new Error("Trying to inactivate an inactive participant ("+t+")");throw u.hash={text:"->>-",token:"->>-",line:"1",loc:{first_line:1,last_line:1,first_column:1,last_column:1},expected:["'ACTIVE_PARTICIPANT'"]},u}return this.state.records.messages.push({id:this.state.records.messages.length.toString(),from:t,to:r,message:n?.text??"",wrap:n?.wrap??this.autoWrap(),type:i,activate:a,centralConnection:s??0}),!0}hasAtLeastOneBox(){return this.state.records.boxes.length>0}hasAtLeastOneBoxWithTitle(){return this.state.records.boxes.some(t=>t.name)}getMessages(){return this.state.records.messages}getBoxes(){return this.state.records.boxes}getActors(){return this.state.records.actors}getCreatedActors(){return this.state.records.createdActors}getDestroyedActors(){return this.state.records.destroyedActors}getActor(t){return this.state.records.actors.get(t)}getActorKeys(){return[...this.state.records.actors.keys()]}enableSequenceNumbers(){this.state.records.sequenceNumbersEnabled=!0}disableSequenceNumbers(){this.state.records.sequenceNumbersEnabled=!1}showSequenceNumbers(){return this.state.records.sequenceNumbersEnabled}setWrap(t){this.state.records.wrapEnabled=t}extractWrap(t){if(t===void 0)return{};t=t.trim();let r=/^:?wrap:/.exec(t)!==null?!0:/^:?nowrap:/.exec(t)!==null?!1:void 0;return{cleanedText:(r===void 0?t:t.replace(/^:?(?:no)?wrap:/,"")).trim(),wrap:r}}autoWrap(){return this.state.records.wrapEnabled!==void 0?this.state.records.wrapEnabled:Ae().sequence?.wrap??!1}clear(){this.state.reset(),yr()}parseMessage(t){let r=t.trim(),{wrap:n,cleanedText:i}=this.extractWrap(r),a={text:i,wrap:n};return Z.debug(`parseMessage: ${JSON.stringify(a)}`),a}parseBoxData(t){let r=/^((?:rgba?|hsla?)\s*\(.*\)|\w*)(.*)$/.exec(t),n=r?.[1]?r[1].trim():"transparent",i=r?.[2]?r[2].trim():void 0;if(window?.CSS)window.CSS.supports("color",n)||(n="transparent",i=t.trim());else{let l=new Option().style;l.color=n,l.color!==n&&(n="transparent",i=t.trim())}let{wrap:a,cleanedText:s}=this.extractWrap(i);return{text:s?mr(s,Ae()):void 0,color:n,wrap:a}}addNote(t,r,n){let i={actor:t,placement:r,message:n.text,wrap:n.wrap??this.autoWrap()},a=[].concat(t,t);this.state.records.notes.push(i),this.state.records.messages.push({id:this.state.records.messages.length.toString(),from:a[0],to:a[1],message:n.text,wrap:n.wrap??this.autoWrap(),type:this.LINETYPE.NOTE,placement:r})}addLinks(t,r){let n=this.getActor(t);try{let i=mr(r.text,Ae());i=i.replace(/&equals;/g,"="),i=i.replace(/&amp;/g,"&");let a=JSON.parse(i);this.insertLinks(n,a)}catch(i){Z.error("error while parsing actor link text",i)}}addALink(t,r){let n=this.getActor(t);try{let i={},a=mr(r.text,Ae()),s=a.indexOf("@");a=a.replace(/&equals;/g,"="),a=a.replace(/&amp;/g,"&");let l=a.slice(0,s-1).trim(),u=a.slice(s+1).trim();i[l]=u,this.insertLinks(n,i)}catch(i){Z.error("error while parsing actor link text",i)}}insertLinks(t,r){if(t.links==null)t.links=r;else for(let n in r)t.links[n]=r[n]}addProperties(t,r){let n=this.getActor(t);try{let i=mr(r.text,Ae()),a=JSON.parse(i);this.insertProperties(n,a)}catch(i){Z.error("error while parsing actor properties text",i)}}insertProperties(t,r){if(t.properties==null)t.properties=r;else for(let n in r)t.properties[n]=r[n]}boxEnd(){this.state.records.currentBox=void 0}addDetails(t,r){let n=this.getActor(t),i=document.getElementById(r.text);try{let a=i.innerHTML,s=JSON.parse(a);s.properties&&this.insertProperties(n,s.properties),s.links&&this.insertLinks(n,s.links)}catch(a){Z.error("error while parsing actor details text",a)}}getActorProperty(t,r){if(t?.properties!==void 0)return t.properties[r]}apply(t){if(Array.isArray(t))t.forEach(r=>{this.apply(r)});else switch(t.type){case"sequenceIndex":this.state.records.messages.push({id:this.state.records.messages.length.toString(),from:void 0,to:void 0,message:{start:t.sequenceIndex,step:t.sequenceIndexStep,visible:t.sequenceVisible},wrap:!1,type:t.signalType});break;case"addParticipant":this.addActor(t.actor,t.actor,t.description,t.draw,t.config);break;case"createParticipant":if(this.state.records.actors.has(t.actor))throw new Error("It is not possible to have actors with the same id, even if one is destroyed before the next is created. Use 'AS' aliases to simulate the behavior");this.state.records.lastCreated=t.actor,this.addActor(t.actor,t.actor,t.description,t.draw,t.config),this.state.records.createdActors.set(t.actor,this.state.records.messages.length);break;case"destroyParticipant":this.state.records.lastDestroyed=t.actor,this.state.records.destroyedActors.set(t.actor,this.state.records.messages.length);break;case"activeStart":this.addSignal(t.actor,void 0,void 0,t.signalType);break;case"centralConnection":this.addSignal(t.actor,void 0,void 0,t.signalType);break;case"centralConnectionReverse":this.addSignal(t.actor,void 0,void 0,t.signalType);break;case"activeEnd":this.addSignal(t.actor,void 0,void 0,t.signalType);break;case"addNote":this.addNote(t.actor,t.placement,t.text);break;case"addLinks":this.addLinks(t.actor,t.text);break;case"addALink":this.addALink(t.actor,t.text);break;case"addProperties":this.addProperties(t.actor,t.text);break;case"addDetails":this.addDetails(t.actor,t.text);break;case"addMessage":if(this.state.records.lastCreated){if(t.to!==this.state.records.lastCreated)throw new Error("The created participant "+this.state.records.lastCreated.name+" does not have an associated creating message after its declaration. Please check the sequence diagram.");this.state.records.lastCreated=void 0}else if(this.state.records.lastDestroyed){if(t.to!==this.state.records.lastDestroyed&&t.from!==this.state.records.lastDestroyed)throw new Error("The destroyed participant "+this.state.records.lastDestroyed.name+" does not have an associated destroying message after its declaration. Please check the sequence diagram.");this.state.records.lastDestroyed=void 0}this.addSignal(t.from,t.to,t.msg,t.signalType,t.activate,t.centralConnection);break;case"boxStart":this.addBox(t.boxData);break;case"boxEnd":this.boxEnd();break;case"loopStart":this.addSignal(void 0,void 0,t.loopText,t.signalType);break;case"loopEnd":this.addSignal(void 0,void 0,void 0,t.signalType);break;case"rectStart":this.addSignal(void 0,void 0,t.color,t.signalType);break;case"rectEnd":this.addSignal(void 0,void 0,void 0,t.signalType);break;case"optStart":this.addSignal(void 0,void 0,t.optText,t.signalType);break;case"optEnd":this.addSignal(void 0,void 0,void 0,t.signalType);break;case"altStart":this.addSignal(void 0,void 0,t.altText,t.signalType);break;case"else":this.addSignal(void 0,void 0,t.altText,t.signalType);break;case"altEnd":this.addSignal(void 0,void 0,void 0,t.signalType);break;case"setAccTitle":kr(t.text);break;case"parStart":this.addSignal(void 0,void 0,t.parText,t.signalType);break;case"and":this.addSignal(void 0,void 0,t.parText,t.signalType);break;case"parEnd":this.addSignal(void 0,void 0,void 0,t.signalType);break;case"criticalStart":this.addSignal(void 0,void 0,t.criticalText,t.signalType);break;case"option":this.addSignal(void 0,void 0,t.optionText,t.signalType);break;case"criticalEnd":this.addSignal(void 0,void 0,void 0,t.signalType);break;case"breakStart":this.addSignal(void 0,void 0,t.breakText,t.signalType);break;case"breakEnd":this.addSignal(void 0,void 0,void 0,t.signalType);break}}getConfig(){return Ae().sequence}}});var QAt,J8e,eIe=F(()=>{"use strict";Xt();QAt=o(e=>{let t=e.dropShadow??"none",{look:r}=Ae();return`.actor {
     stroke: ${e.actorBorder};
     fill: ${e.actorBkg};
     stroke-width: ${e.strokeWidth??1};
@@ -1971,25 +1985,25 @@
     filter: ${t};
     stroke: ${e.nodeBorder};
   }
-`},"getStyles"),o6e=ETt});var sW,Af,_f,Df,q6,mm,Sh,XT,ATt,U6,KT,gm,c6e,Wr,oW,_Tt,DTt,RTt,LTt,MTt,NTt,ITt,OTt,PTt,BTt,FTt,$Tt,zTt,u6e,GTt,VTt,WTt,qTt,UTt,HTt,YTt,jTt,h6e,XTt,Eh,KTt,ZTt,QTt,JTt,eCt,Ei,d6e=z(()=>{"use strict";sW=ys(fg(),1);br();Xt();Ir();gp();Af=36,_f="actor-top",Df="actor-bottom",q6="actor-box",mm="actor-man",Sh=new Set(["redux-color","redux-dark-color"]),XT=o(function(e,t){let r=mp(e,t);return Nt().look==="neo"&&r.attr("data-look","neo"),r},"drawRect"),ATt=o(function(e,t,r,i,n){if(t.links===void 0||t.links===null||Object.keys(t.links).length===0)return{height:0,width:0};let a=t.links,s=t.actorCnt,l=t.rectData;var u="none";n&&(u="block !important");let h=e.append("g");h.attr("id","actor"+s+"_popup"),h.attr("class","actorPopupMenu"),h.attr("display",u);var d="";l.class!==void 0&&(d=" "+l.class);let f=l.width>r?l.width:r,p=h.append("rect");if(p.attr("class","actorPopupMenuPanel"+d),p.attr("x",l.x),p.attr("y",l.height),p.attr("fill",l.fill),p.attr("stroke",l.stroke),p.attr("width",f),p.attr("height",l.height),p.attr("rx",l.rx),p.attr("ry",l.ry),a!=null){var m=20;for(let v in a){var g=h.append("a"),y=(0,sW.sanitizeUrl)(a[v]);g.attr("xlink:href",y),g.attr("target","_blank"),KTt(i)(v,g,l.x+10,l.height+m,f,20,{class:"actor"},i),m+=30}}return p.attr("height",m),{height:l.height+m,width:f}},"drawPopup"),U6=o(function(e){return"var pu = document.getElementById('"+e+"'); if (pu != null) { pu.style.display = pu.style.display == 'block' ? 'none' : 'block'; }"},"popupMenuToggle"),KT=o(async function(e,t,r=null){let i=e.append("foreignObject"),n=await Fm(t.text,Nt()),s=i.append("xhtml:div").attr("style","width: fit-content;").attr("xmlns","http://www.w3.org/1999/xhtml").html(n).node().getBoundingClientRect();if(i.attr("height",Math.round(s.height)).attr("width",Math.round(s.width)),t.class==="noteText"){let l=e.node().firstChild;l.setAttribute("height",s.height+2*t.textMargin);let u=l.getBBox();i.attr("x",Math.round(u.x+u.width/2-s.width/2)).attr("y",Math.round(u.y+u.height/2-s.height/2))}else if(r){let{startx:l,stopx:u,starty:h}=r;if(l>u){let d=l;l=u,u=d}i.attr("x",Math.round(l+Math.abs(l-u)/2-s.width/2)),t.class==="loopText"?i.attr("y",Math.round(h)):i.attr("y",Math.round(h-s.height))}return[i]},"drawKatex"),gm=o(function(e,t){let r=0,i=0,n=t.text.split(vt.lineBreakRegex),[a,s]=Za(t.fontSize),l=[],u=0,h=o(()=>t.y,"yfunc");if(t.valign!==void 0&&t.textMargin!==void 0&&t.textMargin>0)switch(t.valign){case"top":case"start":h=o(()=>Math.round(t.y+t.textMargin),"yfunc");break;case"middle":case"center":h=o(()=>Math.round(t.y+(r+i+t.textMargin)/2),"yfunc");break;case"bottom":case"end":h=o(()=>Math.round(t.y+(r+i+2*t.textMargin)-t.textMargin),"yfunc");break}if(t.anchor!==void 0&&t.textMargin!==void 0&&t.width!==void 0)switch(t.anchor){case"left":case"start":t.x=Math.round(t.x+t.textMargin),t.anchor="start",t.dominantBaseline="middle",t.alignmentBaseline="middle";break;case"middle":case"center":t.x=Math.round(t.x+t.width/2),t.anchor="middle",t.dominantBaseline="middle",t.alignmentBaseline="middle";break;case"right":case"end":t.x=Math.round(t.x+t.width-t.textMargin),t.anchor="end",t.dominantBaseline="middle",t.alignmentBaseline="middle";break}for(let[d,f]of n.entries()){t.textMargin!==void 0&&t.textMargin===0&&a!==void 0&&(u=d*a);let p=e.append("text");p.attr("x",t.x),p.attr("y",h()),t.anchor!==void 0&&p.attr("text-anchor",t.anchor).attr("dominant-baseline",t.dominantBaseline).attr("alignment-baseline",t.alignmentBaseline),t.fontFamily!==void 0&&p.style("font-family",t.fontFamily),s!==void 0&&p.style("font-size",s),t.fontWeight!==void 0&&p.style("font-weight",t.fontWeight),t.fill!==void 0&&p.attr("fill",t.fill),t.class!==void 0&&p.attr("class",t.class),t.dy!==void 0?p.attr("dy",t.dy):u!==0&&p.attr("dy",u);let m=f||SM;if(t.tspan){let g=p.append("tspan");g.attr("x",t.x),t.fill!==void 0&&g.attr("fill",t.fill),g.text(m)}else p.text(m);t.valign!==void 0&&t.textMargin!==void 0&&t.textMargin>0&&(i+=(p._groups||p)[0][0].getBBox().height,r=i),l.push(p)}return l},"drawText"),c6e=o(function(e,t){function r(n,a,s,l,u){return n+","+a+" "+(n+s)+","+a+" "+(n+s)+","+(a+l-u)+" "+(n+s-u*1.2)+","+(a+l)+" "+n+","+(a+l)}o(r,"genPoints");let i=e.append("polygon");return i.attr("points",r(t.x,t.y,t.width,t.height,7)),i.attr("class","labelBox"),t.y=t.y+t.height/2,gm(e,t),i},"drawLabel"),Wr=-1,oW=o((e,t,r,i)=>{e.select&&r.forEach(n=>{let a=t.get(n),s=e.select("#actor"+a.actorCnt);!i.mirrorActors&&a.stopy?s.attr("y2",a.stopy+a.height/2):i.mirrorActors&&s.attr("y2",a.stopy)})},"fixLifeLineHeights"),_Tt=o(function(e,t,r,i,n){let a=i?t.stopy:t.starty,s=t.x+t.width/2,l=a+t.height,{look:u,theme:h,themeVariables:d}=r,{bkgColorArray:f,borderColorArray:p}=d,m=e.append("g").lower();var g=m;i||(Wr++,Object.keys(t.links||{}).length&&!r.forceMenus&&g.attr("onclick",U6(`actor${Wr}_popup`)).attr("cursor","pointer"),g.append("line").attr("id","actor"+Wr).attr("x1",s).attr("y1",l).attr("x2",s).attr("y2",2e3).attr("class","actor-line 200").attr("stroke-width","0.5px").attr("stroke","#999").attr("name",t.name).attr("data-et","life-line").attr("data-id",t.name),g=m.append("g"),t.actorCnt=Wr,t.links!=null&&g.attr("id","root-"+Wr),u==="neo"&&g.attr("data-look","neo"));let y=fa();var v="actor";t.properties?.class?v=t.properties.class:y.fill="#eaeaea",i?v+=` ${Df}`:v+=` ${_f}`,y.x=t.x,y.y=a,y.width=t.width,y.height=t.height,y.class=v,y.rx=3,y.ry=3,y.name=t.name,u==="neo"&&(y.rx=6,y.ry=6);let x=XT(g,y),b=n.get(t.name)??0;if(Sh.has(h)&&(x.style("stroke",p[b%p.length]),x.style("fill",f[b%p.length])),u==="neo"&&x.attr("filter","url(#drop-shadow)"),t.rectData=y,t.properties?.icon){let w=t.properties.icon.trim();w.charAt(0)==="@"?$w(g,y.x+y.width-20,y.y+10,w.substr(1)):Fw(g,y.x+y.width-20,y.y+10,w)}i||(g.attr("data-et","participant"),g.attr("data-type","participant"),g.attr("data-id",t.name)),Eh(r,Bi(t.description))(t.description,g,y.x,y.y,y.width,y.height,{class:`actor ${q6}`},r);let T=t.height;if(x.node){let w=x.node().getBBox();t.height=w.height,T=w.height}return T},"drawActorTypeParticipant"),DTt=o(function(e,t,r,i,n){let a=i?t.stopy:t.starty,s=t.x+t.width/2,l=a+t.height,{look:u,theme:h,themeVariables:d}=r,{bkgColorArray:f,borderColorArray:p}=d,m=e.append("g").lower();var g=m;i||(Wr++,Object.keys(t.links||{}).length&&!r.forceMenus&&g.attr("onclick",U6(`actor${Wr}_popup`)).attr("cursor","pointer"),g.append("line").attr("id","actor"+Wr).attr("x1",s).attr("y1",l).attr("x2",s).attr("y2",2e3).attr("class","actor-line 200").attr("stroke-width","0.5px").attr("stroke","#999").attr("name",t.name).attr("data-et","life-line").attr("data-id",t.name),g=m.append("g"),t.actorCnt=Wr,t.links!=null&&g.attr("id","root-"+Wr),u==="neo"&&g.attr("data-look","neo"));let y=fa();var v="actor";t.properties?.class?v=t.properties.class:y.fill="#eaeaea",i?v+=` ${Df}`:v+=` ${_f}`,y.x=t.x,y.y=a,y.width=t.width,y.height=t.height,y.class=v,y.name=t.name;let x=6,b={...y,x:y.x+-x,y:y.y+ +x,class:"actor"},T=XT(g,y),w=XT(g,b);t.rectData=y,u==="neo"&&g.attr("filter","url(#drop-shadow)");let C=n.get(t.name)??0;if(Sh.has(h)&&(T.style("stroke",p[C%p.length]),T.style("fill",f[C%p.length]),w.style("stroke",p[C%p.length]),w.style("fill",f[C%p.length])),t.properties?.icon){let E=t.properties.icon.trim();E.charAt(0)==="@"?$w(g,y.x+y.width-20,y.y+10,E.substr(1)):Fw(g,y.x+y.width-20,y.y+10,E)}Eh(r,Bi(t.description))(t.description,g,y.x-x,y.y+x,y.width,y.height,{class:`actor ${q6}`},r);let k=t.height;if(T.node){let E=T.node().getBBox();t.height=E.height,k=E.height}return i||(g.attr("data-et","participant"),g.attr("data-type","collections"),g.attr("data-id",t.name)),k},"drawActorTypeCollections"),RTt=o(function(e,t,r,i,n){let a=i?t.stopy:t.starty,s=t.x+t.width/2,l=a+t.height,{look:u,theme:h,themeVariables:d}=r,{bkgColorArray:f,borderColorArray:p}=d,m=e.append("g").lower(),g=m;i||(Wr++,Object.keys(t.links||{}).length&&!r.forceMenus&&g.attr("onclick",U6(`actor${Wr}_popup`)).attr("cursor","pointer"),g.append("line").attr("id","actor"+Wr).attr("x1",s).attr("y1",l).attr("x2",s).attr("y2",2e3).attr("class","actor-line 200").attr("stroke-width","0.5px").attr("stroke","#999").attr("name",t.name).attr("data-et","life-line").attr("data-id",t.name),g=m.append("g"),t.actorCnt=Wr,t.links!=null&&g.attr("id","root-"+Wr),u==="neo"&&g.attr("data-look","neo"));let y=fa(),v="actor";t.properties?.class?v=t.properties.class:y.fill="#eaeaea",i?v+=` ${Df}`:v+=` ${_f}`,g.attr("class",v),y.x=t.x,y.y=a,y.width=t.width,y.height=t.height,y.name=t.name;let x=y.height/2,b=x/(2.5+y.height/50),T=g.append("g"),w=g.append("g"),C=`M ${y.x},${y.y+x}
+`},"getStyles"),J8e=QAt});var sY,Sp,Ep,Ap,CL,k0,ud,zw,JAt,wL,Gw,S0,tIe,nn,oY,e6t,t6t,r6t,n6t,i6t,a6t,s6t,o6t,l6t,c6t,u6t,h6t,d6t,rIe,f6t,p6t,m6t,g6t,y6t,v6t,x6t,b6t,nIe,T6t,hd,C6t,w6t,k6t,S6t,E6t,Un,iIe=F(()=>{"use strict";sY=Xs(Ly(),1);ur();Qt();Vr();Hd();Sp=36,Ep="actor-top",Ap="actor-bottom",CL="actor-box",k0="actor-man",ud=new Set(["redux-color","redux-dark-color"]),zw=o(function(e,t){let r=dm(e,t);return _t().look==="neo"&&r.attr("data-look","neo"),r},"drawRect"),JAt=o(function(e,t,r,n,i){if(t.links===void 0||t.links===null||Object.keys(t.links).length===0)return{height:0,width:0};let a=t.links,s=t.actorCnt,l=t.rectData;var u="none";i&&(u="block !important");let h=e.append("g");h.attr("id","actor"+s+"_popup"),h.attr("class","actorPopupMenu"),h.attr("display",u);var d="";l.class!==void 0&&(d=" "+l.class);let f=l.width>r?l.width:r,p=h.append("rect");if(p.attr("class","actorPopupMenuPanel"+d),p.attr("x",l.x),p.attr("y",l.height),p.attr("fill",l.fill),p.attr("stroke",l.stroke),p.attr("width",f),p.attr("height",l.height),p.attr("rx",l.rx),p.attr("ry",l.ry),a!=null){var m=20;for(let v in a){var g=h.append("a"),y=(0,sY.sanitizeUrl)(a[v]);g.attr("xlink:href",y),g.attr("target","_blank"),C6t(n)(v,g,l.x+10,l.height+m,f,20,{class:"actor"},n),m+=30}}return p.attr("height",m),{height:l.height+m,width:f}},"drawPopup"),wL=o(function(e){return"var pu = document.getElementById('"+e+"'); if (pu != null) { pu.style.display = pu.style.display == 'block' ? 'none' : 'block'; }"},"popupMenuToggle"),Gw=o(async function(e,t,r=null){let n=e.append("foreignObject"),i=await ey(t.text,_t()),s=n.append("xhtml:div").attr("style","width: fit-content;").attr("xmlns","http://www.w3.org/1999/xhtml").html(i).node().getBoundingClientRect();if(n.attr("height",Math.round(s.height)).attr("width",Math.round(s.width)),t.class==="noteText"){let l=e.node().firstChild;l.setAttribute("height",s.height+2*t.textMargin);let u=l.getBBox();n.attr("x",Math.round(u.x+u.width/2-s.width/2)).attr("y",Math.round(u.y+u.height/2-s.height/2))}else if(r){let{startx:l,stopx:u,starty:h}=r;if(l>u){let d=l;l=u,u=d}n.attr("x",Math.round(l+Math.abs(l-u)/2-s.width/2)),t.class==="loopText"?n.attr("y",Math.round(h)):n.attr("y",Math.round(h-s.height))}return[n]},"drawKatex"),S0=o(function(e,t){let r=0,n=0,i=t.text.split(xt.lineBreakRegex),[a,s]=As(t.fontSize),l=[],u=0,h=o(()=>t.y,"yfunc");if(t.valign!==void 0&&t.textMargin!==void 0&&t.textMargin>0)switch(t.valign){case"top":case"start":h=o(()=>Math.round(t.y+t.textMargin),"yfunc");break;case"middle":case"center":h=o(()=>Math.round(t.y+(r+n+t.textMargin)/2),"yfunc");break;case"bottom":case"end":h=o(()=>Math.round(t.y+(r+n+2*t.textMargin)-t.textMargin),"yfunc");break}if(t.anchor!==void 0&&t.textMargin!==void 0&&t.width!==void 0)switch(t.anchor){case"left":case"start":t.x=Math.round(t.x+t.textMargin),t.anchor="start",t.dominantBaseline="middle",t.alignmentBaseline="middle";break;case"middle":case"center":t.x=Math.round(t.x+t.width/2),t.anchor="middle",t.dominantBaseline="middle",t.alignmentBaseline="middle";break;case"right":case"end":t.x=Math.round(t.x+t.width-t.textMargin),t.anchor="end",t.dominantBaseline="middle",t.alignmentBaseline="middle";break}for(let[d,f]of i.entries()){t.textMargin!==void 0&&t.textMargin===0&&a!==void 0&&(u=d*a);let p=e.append("text");p.attr("x",t.x),p.attr("y",h()),t.anchor!==void 0&&p.attr("text-anchor",t.anchor).attr("dominant-baseline",t.dominantBaseline).attr("alignment-baseline",t.alignmentBaseline),t.fontFamily!==void 0&&p.style("font-family",t.fontFamily),s!==void 0&&p.style("font-size",s),t.fontWeight!==void 0&&p.style("font-weight",t.fontWeight),t.fill!==void 0&&p.attr("fill",t.fill),t.class!==void 0&&p.attr("class",t.class),t.dy!==void 0?p.attr("dy",t.dy):u!==0&&p.attr("dy",u);let m=f||oP;if(t.tspan){let g=p.append("tspan");g.attr("x",t.x),t.fill!==void 0&&g.attr("fill",t.fill),g.text(m)}else p.text(m);t.valign!==void 0&&t.textMargin!==void 0&&t.textMargin>0&&(n+=(p._groups||p)[0][0].getBBox().height,r=n),l.push(p)}return l},"drawText"),tIe=o(function(e,t){function r(i,a,s,l,u){return i+","+a+" "+(i+s)+","+a+" "+(i+s)+","+(a+l-u)+" "+(i+s-u*1.2)+","+(a+l)+" "+i+","+(a+l)}o(r,"genPoints");let n=e.append("polygon");return n.attr("points",r(t.x,t.y,t.width,t.height,7)),n.attr("class","labelBox"),t.y=t.y+t.height/2,S0(e,t),n},"drawLabel"),nn=-1,oY=o((e,t,r,n)=>{e.select&&r.forEach(i=>{let a=t.get(i),s=e.select("#actor"+a.actorCnt);!n.mirrorActors&&a.stopy?s.attr("y2",a.stopy+a.height/2):n.mirrorActors&&s.attr("y2",a.stopy)})},"fixLifeLineHeights"),e6t=o(function(e,t,r,n,i){let a=n?t.stopy:t.starty,s=t.x+t.width/2,l=a+t.height,{look:u,theme:h,themeVariables:d}=r,{bkgColorArray:f,borderColorArray:p}=d,m=e.append("g").lower();var g=m;n||(nn++,Object.keys(t.links||{}).length&&!r.forceMenus&&g.attr("onclick",wL(`actor${nn}_popup`)).attr("cursor","pointer"),g.append("line").attr("id","actor"+nn).attr("x1",s).attr("y1",l).attr("x2",s).attr("y2",2e3).attr("class","actor-line 200").attr("stroke-width","0.5px").attr("stroke","#999").attr("name",t.name).attr("data-et","life-line").attr("data-id",t.name),g=m.append("g"),t.actorCnt=nn,t.links!=null&&g.attr("id","root-"+nn),u==="neo"&&g.attr("data-look","neo"));let y=Fa();var v="actor";t.properties?.class?v=t.properties.class:y.fill="#eaeaea",n?v+=` ${Ap}`:v+=` ${Ep}`,y.x=t.x,y.y=a,y.width=t.width,y.height=t.height,y.class=v,y.rx=3,y.ry=3,y.name=t.name,u==="neo"&&(y.rx=6,y.ry=6);let x=zw(g,y),b=i.get(t.name)??0;if(ud.has(h)&&(x.style("stroke",p[b%p.length]),x.style("fill",f[b%p.length])),u==="neo"&&x.attr("filter","url(#drop-shadow)"),t.rectData=y,t.properties?.icon){let k=t.properties.icon.trim();k.charAt(0)==="@"?zE(g,y.x+y.width-20,y.y+10,k.substr(1)):FE(g,y.x+y.width-20,y.y+10,k)}n||(g.attr("data-et","participant"),g.attr("data-type","participant"),g.attr("data-id",t.name)),hd(r,ni(t.description))(t.description,g,y.x,y.y,y.width,y.height,{class:`actor ${CL}`},r);let T=t.height;if(x.node){let k=x.node().getBBox();t.height=k.height,T=k.height}return T},"drawActorTypeParticipant"),t6t=o(function(e,t,r,n,i){let a=n?t.stopy:t.starty,s=t.x+t.width/2,l=a+t.height,{look:u,theme:h,themeVariables:d}=r,{bkgColorArray:f,borderColorArray:p}=d,m=e.append("g").lower();var g=m;n||(nn++,Object.keys(t.links||{}).length&&!r.forceMenus&&g.attr("onclick",wL(`actor${nn}_popup`)).attr("cursor","pointer"),g.append("line").attr("id","actor"+nn).attr("x1",s).attr("y1",l).attr("x2",s).attr("y2",2e3).attr("class","actor-line 200").attr("stroke-width","0.5px").attr("stroke","#999").attr("name",t.name).attr("data-et","life-line").attr("data-id",t.name),g=m.append("g"),t.actorCnt=nn,t.links!=null&&g.attr("id","root-"+nn),u==="neo"&&g.attr("data-look","neo"));let y=Fa();var v="actor";t.properties?.class?v=t.properties.class:y.fill="#eaeaea",n?v+=` ${Ap}`:v+=` ${Ep}`,y.x=t.x,y.y=a,y.width=t.width,y.height=t.height,y.class=v,y.name=t.name;let x=6,b={...y,x:y.x+-x,y:y.y+ +x,class:"actor"},T=zw(g,y),k=zw(g,b);t.rectData=y,u==="neo"&&g.attr("filter","url(#drop-shadow)");let C=i.get(t.name)??0;if(ud.has(h)&&(T.style("stroke",p[C%p.length]),T.style("fill",f[C%p.length]),k.style("stroke",p[C%p.length]),k.style("fill",f[C%p.length])),t.properties?.icon){let S=t.properties.icon.trim();S.charAt(0)==="@"?zE(g,y.x+y.width-20,y.y+10,S.substr(1)):FE(g,y.x+y.width-20,y.y+10,S)}hd(r,ni(t.description))(t.description,g,y.x-x,y.y+x,y.width,y.height,{class:`actor ${CL}`},r);let w=t.height;if(T.node){let S=T.node().getBBox();t.height=S.height,w=S.height}return n||(g.attr("data-et","participant"),g.attr("data-type","collections"),g.attr("data-id",t.name)),w},"drawActorTypeCollections"),r6t=o(function(e,t,r,n,i){let a=n?t.stopy:t.starty,s=t.x+t.width/2,l=a+t.height,{look:u,theme:h,themeVariables:d}=r,{bkgColorArray:f,borderColorArray:p}=d,m=e.append("g").lower(),g=m;n||(nn++,Object.keys(t.links||{}).length&&!r.forceMenus&&g.attr("onclick",wL(`actor${nn}_popup`)).attr("cursor","pointer"),g.append("line").attr("id","actor"+nn).attr("x1",s).attr("y1",l).attr("x2",s).attr("y2",2e3).attr("class","actor-line 200").attr("stroke-width","0.5px").attr("stroke","#999").attr("name",t.name).attr("data-et","life-line").attr("data-id",t.name),g=m.append("g"),t.actorCnt=nn,t.links!=null&&g.attr("id","root-"+nn),u==="neo"&&g.attr("data-look","neo"));let y=Fa(),v="actor";t.properties?.class?v=t.properties.class:y.fill="#eaeaea",n?v+=` ${Ap}`:v+=` ${Ep}`,g.attr("class",v),y.x=t.x,y.y=a,y.width=t.width,y.height=t.height,y.name=t.name;let x=y.height/2,b=x/(2.5+y.height/50),T=g.append("g"),k=g.append("g"),C=`M ${y.x},${y.y+x}
     a ${b},${x} 0 0 0 0,${y.height}
     h ${y.width-2*b}
     a ${b},${x} 0 0 0 0,-${y.height}
     Z
-  `;T.append("path").attr("d",C),w.append("path").attr("d",`M ${y.x},${y.y+x}
-      a ${b},${x} 0 0 0 0,${y.height}`),T.attr("transform",`translate(${b}, ${-(y.height/2)})`),w.attr("transform",`translate(${y.width-b}, ${-y.height/2})`),t.rectData=y,u==="neo"&&T.attr("filter","url(#drop-shadow)");let k=n.get(t.name)??0;if(Sh.has(h)&&(T.style("stroke",p[k%p.length]),T.style("fill",f[k%p.length]),w.style("stroke",p[k%p.length]),w.style("fill",f[k%p.length])),t.properties?.icon){let N=t.properties.icon.trim(),P=y.x+y.width-20,I=y.y+10;N.charAt(0)==="@"?$w(g,P,I,N.substr(1)):Fw(g,P,I,N)}Eh(r,Bi(t.description))(t.description,g,y.x,y.y,y.width,y.height,{class:`actor ${q6}`},r);let E=t.height,A=T.select("path:last-child");if(A.node()){let N=A.node().getBBox();t.height=N.height,E=N.height}return i||(g.attr("data-et","participant"),g.attr("data-type","queue"),g.attr("data-id",t.name)),E},"drawActorTypeQueue"),LTt=o(function(e,t,r,i,n,a){let s=i?t.stopy:t.starty,l=t.x+t.width/2,u=s+75,{look:h,theme:d,themeVariables:f}=r,{bkgColorArray:p,borderColorArray:m,actorBorder:g,actorBkg:y}=f,v=e.append("g").lower();i||(Wr++,v.append("line").attr("id","actor"+Wr).attr("x1",l).attr("y1",u).attr("x2",l).attr("y2",2e3).attr("class","actor-line 200").attr("stroke-width","0.5px").attr("stroke","#999").attr("name",t.name).attr("data-et","life-line").attr("data-id",t.name),t.actorCnt=Wr);let x=e.append("g"),b=mm;i?b+=` ${Df}`:b+=` ${_f}`,x.attr("class",b),x.attr("name",t.name);let T=fa();T.x=t.x,T.y=s,T.fill="#eaeaea",T.width=t.width,T.height=t.height,T.class="actor";let w=t.x+t.width/2,C=s+32,k=22;x.append("defs").append("marker").attr("id",n+"-filled-head-control").attr("refX",11).attr("refY",5.8).attr("markerWidth",20).attr("markerHeight",28).attr("orient","172.5").attr("stroke-width",1.2).append("path").attr("d","M 14.4 5.6 L 7.2 10.4 L 8.8 5.6 L 7.2 0.8 Z"),x.append("circle").attr("cx",w).attr("cy",C).attr("r",k).attr("filter",`${h==="neo"?"url(#drop-shadow)":""}`),x.append("line").attr("marker-end","url(#"+n+"-filled-head-control)").attr("transform",`translate(${w}, ${C-k})`);let E=a.get(t.name)??0;Sh.has(d)?(x.style("stroke",m[E%m.length]),x.style("fill",p[E%m.length])):(x.style("stroke",g),x.style("fill",y));let A=x.node().getBBox();return t.height=A.height+2*(r?.sequence?.labelBoxHeight??0),Eh(r,Bi(t.description))(t.description,x,T.x,T.y+k+(i?5:12),T.width,T.height,{class:`actor ${mm}`},r),i||(x.attr("data-et","participant"),x.attr("data-type","control"),x.attr("data-id",t.name)),t.height},"drawActorTypeControl"),MTt=o(function(e,t,r,i,n){let a=i?t.stopy:t.starty,s=t.x+t.width/2,l=a+75,{look:u,theme:h,themeVariables:d}=r,{bkgColorArray:f,borderColorArray:p}=d,m=e.append("g").lower(),g=e.append("g"),y="actor";i?y+=` ${Df}`:y+=` ${_f}`,g.attr("class",y),g.attr("name",t.name);let v=fa();v.x=t.x,v.y=a,v.fill="#eaeaea",v.width=t.width,v.height=t.height,v.class="actor";let x=t.x+t.width/2,b=a+(i?10:25),T=22;g.append("circle").attr("cx",x).attr("cy",b).attr("r",T).attr("width",t.width).attr("height",t.height),g.append("line").attr("x1",x-T).attr("x2",x+T).attr("y1",b+T).attr("y2",b+T).attr("stroke-width",2),u==="neo"&&g.attr("filter","url(#drop-shadow)");let w=n.get(t.name)??0;Sh.has(h)&&(g.style("stroke",p[w%p.length]),g.style("fill",f[w%p.length]));let C=g.node().getBBox();return t.height=C.height+(r?.sequence?.labelBoxHeight??0),i||(Wr++,m.append("line").attr("id","actor"+Wr).attr("x1",s).attr("y1",l).attr("x2",s).attr("y2",2e3).attr("class","actor-line 200").attr("stroke-width","0.5px").attr("stroke","#999").attr("name",t.name).attr("data-et","life-line").attr("data-id",t.name),t.actorCnt=Wr),Eh(r,Bi(t.description))(t.description,g,v.x,v.y+(i?15:30),v.width,v.height,{class:`actor ${mm}`},r),i?g.attr("transform",`translate(0, ${T})`):(g.attr("transform",`translate(0, ${T/2-5})`),g.attr("data-et","participant"),g.attr("data-type","entity"),g.attr("data-id",t.name)),t.height},"drawActorTypeEntity"),NTt=o(function(e,t,r,i,n){let a=i?t.stopy:t.starty,s=t.x+t.width/2,l=a+t.height+2*r.boxTextMargin,{theme:u,themeVariables:h,look:d}=r,{bkgColorArray:f,borderColorArray:p,actorBorder:m}=h,g=e.append("g").lower(),y=g;i||(Wr++,Object.keys(t.links||{}).length&&!r.forceMenus&&y.attr("onclick",U6(`actor${Wr}_popup`)).attr("cursor","pointer"),y.append("line").attr("id","actor"+Wr).attr("x1",s).attr("y1",l).attr("x2",s).attr("y2",2e3).attr("class","actor-line 200").attr("stroke-width","0.5px").attr("stroke","#999").attr("name",t.name).attr("data-et","life-line").attr("data-id",t.name),y=g.append("g"),t.actorCnt=Wr,t.links!=null&&y.attr("id","root-"+Wr),d==="neo"&&y.attr("data-look","neo"));let v=fa(),x="actor";t.properties?.class?x=t.properties.class:v.fill="#eaeaea",i?x+=` ${Df}`:x+=` ${_f}`,v.x=t.x,v.y=a,v.width=t.width,v.height=t.height,v.class=x,v.name=t.name,v.x=t.x,v.y=a;let b=v.width/3,T=v.width/3,w=b/2,C=w/(2.5+b/50),k=y.append("g");k.attr("class",x);let E=`
+  `;T.append("path").attr("d",C),k.append("path").attr("d",`M ${y.x},${y.y+x}
+      a ${b},${x} 0 0 0 0,${y.height}`),T.attr("transform",`translate(${b}, ${-(y.height/2)})`),k.attr("transform",`translate(${y.width-b}, ${-y.height/2})`),t.rectData=y,u==="neo"&&T.attr("filter","url(#drop-shadow)");let w=i.get(t.name)??0;if(ud.has(h)&&(T.style("stroke",p[w%p.length]),T.style("fill",f[w%p.length]),k.style("stroke",p[w%p.length]),k.style("fill",f[w%p.length])),t.properties?.icon){let L=t.properties.icon.trim(),N=y.x+y.width-20,I=y.y+10;L.charAt(0)==="@"?zE(g,N,I,L.substr(1)):FE(g,N,I,L)}hd(r,ni(t.description))(t.description,g,y.x,y.y,y.width,y.height,{class:`actor ${CL}`},r);let S=t.height,R=T.select("path:last-child");if(R.node()){let L=R.node().getBBox();t.height=L.height,S=L.height}return n||(g.attr("data-et","participant"),g.attr("data-type","queue"),g.attr("data-id",t.name)),S},"drawActorTypeQueue"),n6t=o(function(e,t,r,n,i,a){let s=n?t.stopy:t.starty,l=t.x+t.width/2,u=s+75,{look:h,theme:d,themeVariables:f}=r,{bkgColorArray:p,borderColorArray:m,actorBorder:g,actorBkg:y}=f,v=e.append("g").lower();n||(nn++,v.append("line").attr("id","actor"+nn).attr("x1",l).attr("y1",u).attr("x2",l).attr("y2",2e3).attr("class","actor-line 200").attr("stroke-width","0.5px").attr("stroke","#999").attr("name",t.name).attr("data-et","life-line").attr("data-id",t.name),t.actorCnt=nn);let x=e.append("g"),b=k0;n?b+=` ${Ap}`:b+=` ${Ep}`,x.attr("class",b),x.attr("name",t.name);let T=Fa();T.x=t.x,T.y=s,T.fill="#eaeaea",T.width=t.width,T.height=t.height,T.class="actor";let k=t.x+t.width/2,C=s+32,w=22;x.append("defs").append("marker").attr("id",i+"-filled-head-control").attr("refX",11).attr("refY",5.8).attr("markerWidth",20).attr("markerHeight",28).attr("orient","172.5").attr("stroke-width",1.2).append("path").attr("d","M 14.4 5.6 L 7.2 10.4 L 8.8 5.6 L 7.2 0.8 Z"),x.append("circle").attr("cx",k).attr("cy",C).attr("r",w).attr("filter",`${h==="neo"?"url(#drop-shadow)":""}`),x.append("line").attr("marker-end","url(#"+i+"-filled-head-control)").attr("transform",`translate(${k}, ${C-w})`);let S=a.get(t.name)??0;ud.has(d)?(x.style("stroke",m[S%m.length]),x.style("fill",p[S%m.length])):(x.style("stroke",g),x.style("fill",y));let R=x.node().getBBox();return t.height=R.height+2*(r?.sequence?.labelBoxHeight??0),hd(r,ni(t.description))(t.description,x,T.x,T.y+w+(n?5:12),T.width,T.height,{class:`actor ${k0}`},r),n||(x.attr("data-et","participant"),x.attr("data-type","control"),x.attr("data-id",t.name)),t.height},"drawActorTypeControl"),i6t=o(function(e,t,r,n,i){let a=n?t.stopy:t.starty,s=t.x+t.width/2,l=a+75,{look:u,theme:h,themeVariables:d}=r,{bkgColorArray:f,borderColorArray:p}=d,m=e.append("g").lower(),g=e.append("g"),y="actor";n?y+=` ${Ap}`:y+=` ${Ep}`,g.attr("class",y),g.attr("name",t.name);let v=Fa();v.x=t.x,v.y=a,v.fill="#eaeaea",v.width=t.width,v.height=t.height,v.class="actor";let x=t.x+t.width/2,b=a+(n?10:25),T=22;g.append("circle").attr("cx",x).attr("cy",b).attr("r",T).attr("width",t.width).attr("height",t.height),g.append("line").attr("x1",x-T).attr("x2",x+T).attr("y1",b+T).attr("y2",b+T).attr("stroke-width",2),u==="neo"&&g.attr("filter","url(#drop-shadow)");let k=i.get(t.name)??0;ud.has(h)&&(g.style("stroke",p[k%p.length]),g.style("fill",f[k%p.length]));let C=g.node().getBBox();return t.height=C.height+(r?.sequence?.labelBoxHeight??0),n||(nn++,m.append("line").attr("id","actor"+nn).attr("x1",s).attr("y1",l).attr("x2",s).attr("y2",2e3).attr("class","actor-line 200").attr("stroke-width","0.5px").attr("stroke","#999").attr("name",t.name).attr("data-et","life-line").attr("data-id",t.name),t.actorCnt=nn),hd(r,ni(t.description))(t.description,g,v.x,v.y+(n?15:30),v.width,v.height,{class:`actor ${k0}`},r),n?g.attr("transform",`translate(0, ${T})`):(g.attr("transform",`translate(0, ${T/2-5})`),g.attr("data-et","participant"),g.attr("data-type","entity"),g.attr("data-id",t.name)),t.height},"drawActorTypeEntity"),a6t=o(function(e,t,r,n,i){let a=n?t.stopy:t.starty,s=t.x+t.width/2,l=a+t.height+2*r.boxTextMargin,{theme:u,themeVariables:h,look:d}=r,{bkgColorArray:f,borderColorArray:p,actorBorder:m}=h,g=e.append("g").lower(),y=g;n||(nn++,Object.keys(t.links||{}).length&&!r.forceMenus&&y.attr("onclick",wL(`actor${nn}_popup`)).attr("cursor","pointer"),y.append("line").attr("id","actor"+nn).attr("x1",s).attr("y1",l).attr("x2",s).attr("y2",2e3).attr("class","actor-line 200").attr("stroke-width","0.5px").attr("stroke","#999").attr("name",t.name).attr("data-et","life-line").attr("data-id",t.name),y=g.append("g"),t.actorCnt=nn,t.links!=null&&y.attr("id","root-"+nn),d==="neo"&&y.attr("data-look","neo"));let v=Fa(),x="actor";t.properties?.class?x=t.properties.class:v.fill="#eaeaea",n?x+=` ${Ap}`:x+=` ${Ep}`,v.x=t.x,v.y=a,v.width=t.width,v.height=t.height,v.class=x,v.name=t.name,v.x=t.x,v.y=a;let b=v.width/3,T=v.width/3,k=b/2,C=k/(2.5+b/50),w=y.append("g");w.attr("class",x);let S=`
   M ${v.x},${v.y+C}
-  a ${w},${C} 0 0 0 ${b},0
-  a ${w},${C} 0 0 0 -${b},0
+  a ${k},${C} 0 0 0 ${b},0
+  a ${k},${C} 0 0 0 -${b},0
   l 0,${T-2*C}
-  a ${w},${C} 0 0 0 ${b},0
+  a ${k},${C} 0 0 0 ${b},0
   l 0,-${T-2*C}
-`;k.append("path").attr("d",E),d==="neo"&&k.attr("filter","url(#drop-shadow)");let A=n.get(t.name)??0;Sh.has(u)?(k.style("stroke",p[A%p.length]),k.style("fill",f[A%p.length])):k.style("stroke",m),k.attr("transform",`translate(${b}, ${C})`),t.rectData=v,Eh(r,Bi(t.description))(t.description,y,v.x,v.y+35,v.width,v.height,{class:`actor ${q6}`},r);let N=k.select("path:last-child");if(N.node()){let P=N.node().getBBox();t.height=P.height+(r.sequence.labelBoxHeight??0)}return i||(y.attr("data-et","participant"),y.attr("data-type","database"),y.attr("data-id",t.name)),t.height},"drawActorTypeDatabase"),ITt=o(function(e,t,r,i,n){let a=i?t.stopy:t.starty,s=t.x+t.width/2,l=a+80,u=22,h=e.append("g").lower(),{look:d,theme:f,themeVariables:p}=r,{bkgColorArray:m,borderColorArray:g,actorBorder:y}=p;i||(Wr++,h.append("line").attr("id","actor"+Wr).attr("x1",s).attr("y1",l).attr("x2",s).attr("y2",2e3).attr("class","actor-line 200").attr("stroke-width","0.5px").attr("stroke","#999").attr("name",t.name).attr("data-et","life-line").attr("data-id",t.name),t.actorCnt=Wr);let v=e.append("g"),x=mm;i?x+=` ${Df}`:x+=` ${_f}`,v.attr("class",x),v.attr("name",t.name);let b=fa();b.x=t.x,b.y=a,b.fill="#eaeaea",b.width=t.width,b.height=t.height,b.class="actor",v.append("line").attr("id","actor-man-torso"+Wr).attr("x1",t.x+t.width/2-u*2.5).attr("y1",a+12).attr("x2",t.x+t.width/2-15).attr("y2",a+12),v.append("line").attr("id","actor-man-arms"+Wr).attr("x1",t.x+t.width/2-u*2.5).attr("y1",a+2).attr("x2",t.x+t.width/2-u*2.5).attr("y2",a+22),v.append("circle").attr("cx",t.x+t.width/2).attr("cy",a+12).attr("r",u),d==="neo"&&v.attr("filter","url(#drop-shadow)");let T=n.get(t.name)??0;Sh.has(f)?(v.style("stroke",g[T%g.length]),v.style("fill",m[T%g.length])):v.style("stroke",y);let w=v.node().getBBox();return t.height=w.height+(r.sequence.labelBoxHeight??0),Eh(r,Bi(t.description))(t.description,v,b.x,b.y+15,b.width,b.height,{class:`actor ${mm}`},r),v.attr("transform",`translate(0,${u/2+10})`),i||(v.attr("data-et","participant"),v.attr("data-type","boundary"),v.attr("data-id",t.name)),t.height},"drawActorTypeBoundary"),OTt=o(function(e,t,r,i,n){let a=i?t.stopy:t.starty,s=t.x+t.width/2,l=a+80,{look:u,theme:h,themeVariables:d}=r,{bkgColorArray:f,borderColorArray:p,actorBorder:m}=d,g=e.append("g").lower();i||(Wr++,g.append("line").attr("id","actor"+Wr).attr("x1",s).attr("y1",l).attr("x2",s).attr("y2",2e3).attr("class","actor-line 200").attr("stroke-width","0.5px").attr("stroke","#999").attr("name",t.name).attr("data-et","life-line").attr("data-id",t.name),t.actorCnt=Wr);let y=e.append("g"),v=mm;i?v+=` ${Df}`:v+=` ${_f}`,y.attr("class",v),y.attr("name",t.name),i||y.attr("data-et","participant").attr("data-type","actor").attr("data-id",t.name);let x=u==="neo"?.5:1,b=u==="neo"?a+(1-x)*30:a;y.append("line").attr("id","actor-man-torso"+Wr).attr("x1",s).attr("y1",b+25*x).attr("x2",s).attr("y2",b+45*x),y.append("line").attr("id","actor-man-arms"+Wr).attr("x1",s-Af/2*x).attr("y1",b+33*x).attr("x2",s+Af/2*x).attr("y2",b+33*x),y.append("line").attr("x1",s-Af/2*x).attr("y1",b+60*x).attr("x2",s).attr("y2",b+45*x),y.append("line").attr("x1",s).attr("y1",b+45*x).attr("x2",s+(Af/2-2)*x).attr("y2",b+60*x);let T=y.append("circle");T.attr("cx",t.x+t.width/2),T.attr("cy",b+10*x),T.attr("r",15*x),T.attr("width",t.width*x),T.attr("height",t.height*x);let w=y.node().getBBox();t.height=w.height;let C=fa();C.x=t.x,C.y=b,C.fill="#eaeaea",C.width=t.width,C.height=t.height/x,C.class="actor",C.rx=3,C.ry=3;let k=n.get(t.name)??0;return Sh.has(h)?(y.style("stroke",p[k%p.length]),y.style("fill",f[k%p.length])):y.style("stroke",m),Eh(r,Bi(t.description))(t.description,y,C.x,b+35*x-(u==="neo"?10:0),C.width,C.height,{class:`actor ${mm}`},r),t.height},"drawActorTypeActor"),PTt=o(async function(e,t,r,i,n,a,s){let l=s??new Map([...a.db.getActors().values()].map((u,h)=>[u.name,h]));switch(t.type){case"actor":return await OTt(e,t,r,i,l);case"participant":return await _Tt(e,t,r,i,l);case"boundary":return await ITt(e,t,r,i,l);case"control":return await LTt(e,t,r,i,n,l);case"entity":return await MTt(e,t,r,i,l);case"database":return await NTt(e,t,r,i,l);case"collections":return await DTt(e,t,r,i,l);case"queue":return await RTt(e,t,r,i,l)}},"drawActor"),BTt=o(function(e,t,r){let n=e.append("g");u6e(n,t),t.name&&Eh(r)(t.name,n,t.x,t.y+r.boxTextMargin+(t.textMaxHeight||0)/2,t.width,0,{class:"text"},r),n.lower()},"drawBox"),FTt=o(function(e){return e.append("g")},"anchorElement"),$Tt=o(function(e,t,r,i,n,a,s){let{theme:l,themeVariables:u}=i,{bkgColorArray:h,borderColorArray:d,mainBkg:f}=u,p=fa(),m=t.anchored,g=t.actor;p.x=t.startx,p.y=t.starty,p.class="activation"+n%3,p.width=t.stopx-t.startx,p.height=r-t.starty;let y=XT(m,p),x=(s??new Map([...a.db.getActors().values()].map((b,T)=>[b.name,T]))).get(g)??0;Sh.has(l)&&(y.style("stroke",d[x%d.length]),y.style("fill",h[x%d.length]??f))},"drawActivation"),zTt=o(async function(e,t,r,i,n){let{boxMargin:a,boxTextMargin:s,labelBoxHeight:l,labelBoxWidth:u,messageFontFamily:h,messageFontSize:d,messageFontWeight:f}=i,p=e.append("g").attr("data-et","control-structure").attr("data-id","i"+n.id),m=o(function(v,x,b,T){return p.append("line").attr("x1",v).attr("y1",x).attr("x2",b).attr("y2",T).attr("class","loopLine")},"drawLoopLine");m(t.startx,t.starty,t.stopx,t.starty),m(t.stopx,t.starty,t.stopx,t.stopy),m(t.startx,t.stopy,t.stopx,t.stopy),m(t.startx,t.starty,t.startx,t.stopy),t.sections!==void 0&&t.sections.forEach(function(v){m(t.startx,v.y,t.stopx,v.y).style("stroke-dasharray","3, 3")});let g=wx();g.text=r,g.x=t.startx,g.y=t.starty,g.fontFamily=h,g.fontSize=d,g.fontWeight=f,g.anchor="middle",g.valign="middle",g.tspan=!1,g.width=Math.max(u??0,50),g.height=l+(i.look==="neo"?15:0)||20,g.textMargin=s,g.class="labelText",c6e(p,g),g=h6e(),g.text=t.title,g.x=t.startx+u/2+(t.stopx-t.startx)/2,g.y=t.starty+a+s,g.anchor="middle",g.valign="middle",g.textMargin=s,g.class="loopText",g.fontFamily=h,g.fontSize=d,g.fontWeight=f,g.wrap=!0;let y=Bi(g.text)?await KT(p,g,t):gm(p,g);if(t.sectionTitles!==void 0){for(let[v,x]of Object.entries(t.sectionTitles))if(x.message){g.text=x.message,g.x=t.startx+(t.stopx-t.startx)/2,g.y=t.sections[v].y+a+s,g.class="sectionTitle",g.anchor="middle",g.valign="middle",g.tspan=!1,g.fontFamily=h,g.fontSize=d,g.fontWeight=f,g.wrap=t.wrap,Bi(g.text)?(t.starty=t.sections[v].y,await KT(p,g,t)):gm(p,g);let b=Math.round(y.map(T=>(T._groups||T)[0][0].getBBox().height).reduce((T,w)=>T+w));t.sections[v].height+=b-(a+s)}}return t.height=Math.round(t.stopy-t.starty),p},"drawLoop"),u6e=o(function(e,t){Bw(e,t)},"drawBackgroundRect"),GTt=o(function(e,t){e.append("defs").append("symbol").attr("id",t+"-database").attr("fill-rule","evenodd").attr("clip-rule","evenodd").append("path").attr("transform","scale(.5)").attr("d","M12.258.001l.256.004.255.005.253.008.251.01.249.012.247.015.246.016.242.019.241.02.239.023.236.024.233.027.231.028.229.031.225.032.223.034.22.036.217.038.214.04.211.041.208.043.205.045.201.046.198.048.194.05.191.051.187.053.183.054.18.056.175.057.172.059.168.06.163.061.16.063.155.064.15.066.074.033.073.033.071.034.07.034.069.035.068.035.067.035.066.035.064.036.064.036.062.036.06.036.06.037.058.037.058.037.055.038.055.038.053.038.052.038.051.039.05.039.048.039.047.039.045.04.044.04.043.04.041.04.04.041.039.041.037.041.036.041.034.041.033.042.032.042.03.042.029.042.027.042.026.043.024.043.023.043.021.043.02.043.018.044.017.043.015.044.013.044.012.044.011.045.009.044.007.045.006.045.004.045.002.045.001.045v17l-.001.045-.002.045-.004.045-.006.045-.007.045-.009.044-.011.045-.012.044-.013.044-.015.044-.017.043-.018.044-.02.043-.021.043-.023.043-.024.043-.026.043-.027.042-.029.042-.03.042-.032.042-.033.042-.034.041-.036.041-.037.041-.039.041-.04.041-.041.04-.043.04-.044.04-.045.04-.047.039-.048.039-.05.039-.051.039-.052.038-.053.038-.055.038-.055.038-.058.037-.058.037-.06.037-.06.036-.062.036-.064.036-.064.036-.066.035-.067.035-.068.035-.069.035-.07.034-.071.034-.073.033-.074.033-.15.066-.155.064-.16.063-.163.061-.168.06-.172.059-.175.057-.18.056-.183.054-.187.053-.191.051-.194.05-.198.048-.201.046-.205.045-.208.043-.211.041-.214.04-.217.038-.22.036-.223.034-.225.032-.229.031-.231.028-.233.027-.236.024-.239.023-.241.02-.242.019-.246.016-.247.015-.249.012-.251.01-.253.008-.255.005-.256.004-.258.001-.258-.001-.256-.004-.255-.005-.253-.008-.251-.01-.249-.012-.247-.015-.245-.016-.243-.019-.241-.02-.238-.023-.236-.024-.234-.027-.231-.028-.228-.031-.226-.032-.223-.034-.22-.036-.217-.038-.214-.04-.211-.041-.208-.043-.204-.045-.201-.046-.198-.048-.195-.05-.19-.051-.187-.053-.184-.054-.179-.056-.176-.057-.172-.059-.167-.06-.164-.061-.159-.063-.155-.064-.151-.066-.074-.033-.072-.033-.072-.034-.07-.034-.069-.035-.068-.035-.067-.035-.066-.035-.064-.036-.063-.036-.062-.036-.061-.036-.06-.037-.058-.037-.057-.037-.056-.038-.055-.038-.053-.038-.052-.038-.051-.039-.049-.039-.049-.039-.046-.039-.046-.04-.044-.04-.043-.04-.041-.04-.04-.041-.039-.041-.037-.041-.036-.041-.034-.041-.033-.042-.032-.042-.03-.042-.029-.042-.027-.042-.026-.043-.024-.043-.023-.043-.021-.043-.02-.043-.018-.044-.017-.043-.015-.044-.013-.044-.012-.044-.011-.045-.009-.044-.007-.045-.006-.045-.004-.045-.002-.045-.001-.045v-17l.001-.045.002-.045.004-.045.006-.045.007-.045.009-.044.011-.045.012-.044.013-.044.015-.044.017-.043.018-.044.02-.043.021-.043.023-.043.024-.043.026-.043.027-.042.029-.042.03-.042.032-.042.033-.042.034-.041.036-.041.037-.041.039-.041.04-.041.041-.04.043-.04.044-.04.046-.04.046-.039.049-.039.049-.039.051-.039.052-.038.053-.038.055-.038.056-.038.057-.037.058-.037.06-.037.061-.036.062-.036.063-.036.064-.036.066-.035.067-.035.068-.035.069-.035.07-.034.072-.034.072-.033.074-.033.151-.066.155-.064.159-.063.164-.061.167-.06.172-.059.176-.057.179-.056.184-.054.187-.053.19-.051.195-.05.198-.048.201-.046.204-.045.208-.043.211-.041.214-.04.217-.038.22-.036.223-.034.226-.032.228-.031.231-.028.234-.027.236-.024.238-.023.241-.02.243-.019.245-.016.247-.015.249-.012.251-.01.253-.008.255-.005.256-.004.258-.001.258.001zm-9.258 20.499v.01l.001.021.003.021.004.022.005.021.006.022.007.022.009.023.01.022.011.023.012.023.013.023.015.023.016.024.017.023.018.024.019.024.021.024.022.025.023.024.024.025.052.049.056.05.061.051.066.051.07.051.075.051.079.052.084.052.088.052.092.052.097.052.102.051.105.052.11.052.114.051.119.051.123.051.127.05.131.05.135.05.139.048.144.049.147.047.152.047.155.047.16.045.163.045.167.043.171.043.176.041.178.041.183.039.187.039.19.037.194.035.197.035.202.033.204.031.209.03.212.029.216.027.219.025.222.024.226.021.23.02.233.018.236.016.24.015.243.012.246.01.249.008.253.005.256.004.259.001.26-.001.257-.004.254-.005.25-.008.247-.011.244-.012.241-.014.237-.016.233-.018.231-.021.226-.021.224-.024.22-.026.216-.027.212-.028.21-.031.205-.031.202-.034.198-.034.194-.036.191-.037.187-.039.183-.04.179-.04.175-.042.172-.043.168-.044.163-.045.16-.046.155-.046.152-.047.148-.048.143-.049.139-.049.136-.05.131-.05.126-.05.123-.051.118-.052.114-.051.11-.052.106-.052.101-.052.096-.052.092-.052.088-.053.083-.051.079-.052.074-.052.07-.051.065-.051.06-.051.056-.05.051-.05.023-.024.023-.025.021-.024.02-.024.019-.024.018-.024.017-.024.015-.023.014-.024.013-.023.012-.023.01-.023.01-.022.008-.022.006-.022.006-.022.004-.022.004-.021.001-.021.001-.021v-4.127l-.077.055-.08.053-.083.054-.085.053-.087.052-.09.052-.093.051-.095.05-.097.05-.1.049-.102.049-.105.048-.106.047-.109.047-.111.046-.114.045-.115.045-.118.044-.12.043-.122.042-.124.042-.126.041-.128.04-.13.04-.132.038-.134.038-.135.037-.138.037-.139.035-.142.035-.143.034-.144.033-.147.032-.148.031-.15.03-.151.03-.153.029-.154.027-.156.027-.158.026-.159.025-.161.024-.162.023-.163.022-.165.021-.166.02-.167.019-.169.018-.169.017-.171.016-.173.015-.173.014-.175.013-.175.012-.177.011-.178.01-.179.008-.179.008-.181.006-.182.005-.182.004-.184.003-.184.002h-.37l-.184-.002-.184-.003-.182-.004-.182-.005-.181-.006-.179-.008-.179-.008-.178-.01-.176-.011-.176-.012-.175-.013-.173-.014-.172-.015-.171-.016-.17-.017-.169-.018-.167-.019-.166-.02-.165-.021-.163-.022-.162-.023-.161-.024-.159-.025-.157-.026-.156-.027-.155-.027-.153-.029-.151-.03-.15-.03-.148-.031-.146-.032-.145-.033-.143-.034-.141-.035-.14-.035-.137-.037-.136-.037-.134-.038-.132-.038-.13-.04-.128-.04-.126-.041-.124-.042-.122-.042-.12-.044-.117-.043-.116-.045-.113-.045-.112-.046-.109-.047-.106-.047-.105-.048-.102-.049-.1-.049-.097-.05-.095-.05-.093-.052-.09-.051-.087-.052-.085-.053-.083-.054-.08-.054-.077-.054v4.127zm0-5.654v.011l.001.021.003.021.004.021.005.022.006.022.007.022.009.022.01.022.011.023.012.023.013.023.015.024.016.023.017.024.018.024.019.024.021.024.022.024.023.025.024.024.052.05.056.05.061.05.066.051.07.051.075.052.079.051.084.052.088.052.092.052.097.052.102.052.105.052.11.051.114.051.119.052.123.05.127.051.131.05.135.049.139.049.144.048.147.048.152.047.155.046.16.045.163.045.167.044.171.042.176.042.178.04.183.04.187.038.19.037.194.036.197.034.202.033.204.032.209.03.212.028.216.027.219.025.222.024.226.022.23.02.233.018.236.016.24.014.243.012.246.01.249.008.253.006.256.003.259.001.26-.001.257-.003.254-.006.25-.008.247-.01.244-.012.241-.015.237-.016.233-.018.231-.02.226-.022.224-.024.22-.025.216-.027.212-.029.21-.03.205-.032.202-.033.198-.035.194-.036.191-.037.187-.039.183-.039.179-.041.175-.042.172-.043.168-.044.163-.045.16-.045.155-.047.152-.047.148-.048.143-.048.139-.05.136-.049.131-.05.126-.051.123-.051.118-.051.114-.052.11-.052.106-.052.101-.052.096-.052.092-.052.088-.052.083-.052.079-.052.074-.051.07-.052.065-.051.06-.05.056-.051.051-.049.023-.025.023-.024.021-.025.02-.024.019-.024.018-.024.017-.024.015-.023.014-.023.013-.024.012-.022.01-.023.01-.023.008-.022.006-.022.006-.022.004-.021.004-.022.001-.021.001-.021v-4.139l-.077.054-.08.054-.083.054-.085.052-.087.053-.09.051-.093.051-.095.051-.097.05-.1.049-.102.049-.105.048-.106.047-.109.047-.111.046-.114.045-.115.044-.118.044-.12.044-.122.042-.124.042-.126.041-.128.04-.13.039-.132.039-.134.038-.135.037-.138.036-.139.036-.142.035-.143.033-.144.033-.147.033-.148.031-.15.03-.151.03-.153.028-.154.028-.156.027-.158.026-.159.025-.161.024-.162.023-.163.022-.165.021-.166.02-.167.019-.169.018-.169.017-.171.016-.173.015-.173.014-.175.013-.175.012-.177.011-.178.009-.179.009-.179.007-.181.007-.182.005-.182.004-.184.003-.184.002h-.37l-.184-.002-.184-.003-.182-.004-.182-.005-.181-.007-.179-.007-.179-.009-.178-.009-.176-.011-.176-.012-.175-.013-.173-.014-.172-.015-.171-.016-.17-.017-.169-.018-.167-.019-.166-.02-.165-.021-.163-.022-.162-.023-.161-.024-.159-.025-.157-.026-.156-.027-.155-.028-.153-.028-.151-.03-.15-.03-.148-.031-.146-.033-.145-.033-.143-.033-.141-.035-.14-.036-.137-.036-.136-.037-.134-.038-.132-.039-.13-.039-.128-.04-.126-.041-.124-.042-.122-.043-.12-.043-.117-.044-.116-.044-.113-.046-.112-.046-.109-.046-.106-.047-.105-.048-.102-.049-.1-.049-.097-.05-.095-.051-.093-.051-.09-.051-.087-.053-.085-.052-.083-.054-.08-.054-.077-.054v4.139zm0-5.666v.011l.001.02.003.022.004.021.005.022.006.021.007.022.009.023.01.022.011.023.012.023.013.023.015.023.016.024.017.024.018.023.019.024.021.025.022.024.023.024.024.025.052.05.056.05.061.05.066.051.07.051.075.052.079.051.084.052.088.052.092.052.097.052.102.052.105.051.11.052.114.051.119.051.123.051.127.05.131.05.135.05.139.049.144.048.147.048.152.047.155.046.16.045.163.045.167.043.171.043.176.042.178.04.183.04.187.038.19.037.194.036.197.034.202.033.204.032.209.03.212.028.216.027.219.025.222.024.226.021.23.02.233.018.236.017.24.014.243.012.246.01.249.008.253.006.256.003.259.001.26-.001.257-.003.254-.006.25-.008.247-.01.244-.013.241-.014.237-.016.233-.018.231-.02.226-.022.224-.024.22-.025.216-.027.212-.029.21-.03.205-.032.202-.033.198-.035.194-.036.191-.037.187-.039.183-.039.179-.041.175-.042.172-.043.168-.044.163-.045.16-.045.155-.047.152-.047.148-.048.143-.049.139-.049.136-.049.131-.051.126-.05.123-.051.118-.052.114-.051.11-.052.106-.052.101-.052.096-.052.092-.052.088-.052.083-.052.079-.052.074-.052.07-.051.065-.051.06-.051.056-.05.051-.049.023-.025.023-.025.021-.024.02-.024.019-.024.018-.024.017-.024.015-.023.014-.024.013-.023.012-.023.01-.022.01-.023.008-.022.006-.022.006-.022.004-.022.004-.021.001-.021.001-.021v-4.153l-.077.054-.08.054-.083.053-.085.053-.087.053-.09.051-.093.051-.095.051-.097.05-.1.049-.102.048-.105.048-.106.048-.109.046-.111.046-.114.046-.115.044-.118.044-.12.043-.122.043-.124.042-.126.041-.128.04-.13.039-.132.039-.134.038-.135.037-.138.036-.139.036-.142.034-.143.034-.144.033-.147.032-.148.032-.15.03-.151.03-.153.028-.154.028-.156.027-.158.026-.159.024-.161.024-.162.023-.163.023-.165.021-.166.02-.167.019-.169.018-.169.017-.171.016-.173.015-.173.014-.175.013-.175.012-.177.01-.178.01-.179.009-.179.007-.181.006-.182.006-.182.004-.184.003-.184.001-.185.001-.185-.001-.184-.001-.184-.003-.182-.004-.182-.006-.181-.006-.179-.007-.179-.009-.178-.01-.176-.01-.176-.012-.175-.013-.173-.014-.172-.015-.171-.016-.17-.017-.169-.018-.167-.019-.166-.02-.165-.021-.163-.023-.162-.023-.161-.024-.159-.024-.157-.026-.156-.027-.155-.028-.153-.028-.151-.03-.15-.03-.148-.032-.146-.032-.145-.033-.143-.034-.141-.034-.14-.036-.137-.036-.136-.037-.134-.038-.132-.039-.13-.039-.128-.041-.126-.041-.124-.041-.122-.043-.12-.043-.117-.044-.116-.044-.113-.046-.112-.046-.109-.046-.106-.048-.105-.048-.102-.048-.1-.05-.097-.049-.095-.051-.093-.051-.09-.052-.087-.052-.085-.053-.083-.053-.08-.054-.077-.054v4.153zm8.74-8.179l-.257.004-.254.005-.25.008-.247.011-.244.012-.241.014-.237.016-.233.018-.231.021-.226.022-.224.023-.22.026-.216.027-.212.028-.21.031-.205.032-.202.033-.198.034-.194.036-.191.038-.187.038-.183.04-.179.041-.175.042-.172.043-.168.043-.163.045-.16.046-.155.046-.152.048-.148.048-.143.048-.139.049-.136.05-.131.05-.126.051-.123.051-.118.051-.114.052-.11.052-.106.052-.101.052-.096.052-.092.052-.088.052-.083.052-.079.052-.074.051-.07.052-.065.051-.06.05-.056.05-.051.05-.023.025-.023.024-.021.024-.02.025-.019.024-.018.024-.017.023-.015.024-.014.023-.013.023-.012.023-.01.023-.01.022-.008.022-.006.023-.006.021-.004.022-.004.021-.001.021-.001.021.001.021.001.021.004.021.004.022.006.021.006.023.008.022.01.022.01.023.012.023.013.023.014.023.015.024.017.023.018.024.019.024.02.025.021.024.023.024.023.025.051.05.056.05.06.05.065.051.07.052.074.051.079.052.083.052.088.052.092.052.096.052.101.052.106.052.11.052.114.052.118.051.123.051.126.051.131.05.136.05.139.049.143.048.148.048.152.048.155.046.16.046.163.045.168.043.172.043.175.042.179.041.183.04.187.038.191.038.194.036.198.034.202.033.205.032.21.031.212.028.216.027.22.026.224.023.226.022.231.021.233.018.237.016.241.014.244.012.247.011.25.008.254.005.257.004.26.001.26-.001.257-.004.254-.005.25-.008.247-.011.244-.012.241-.014.237-.016.233-.018.231-.021.226-.022.224-.023.22-.026.216-.027.212-.028.21-.031.205-.032.202-.033.198-.034.194-.036.191-.038.187-.038.183-.04.179-.041.175-.042.172-.043.168-.043.163-.045.16-.046.155-.046.152-.048.148-.048.143-.048.139-.049.136-.05.131-.05.126-.051.123-.051.118-.051.114-.052.11-.052.106-.052.101-.052.096-.052.092-.052.088-.052.083-.052.079-.052.074-.051.07-.052.065-.051.06-.05.056-.05.051-.05.023-.025.023-.024.021-.024.02-.025.019-.024.018-.024.017-.023.015-.024.014-.023.013-.023.012-.023.01-.023.01-.022.008-.022.006-.023.006-.021.004-.022.004-.021.001-.021.001-.021-.001-.021-.001-.021-.004-.021-.004-.022-.006-.021-.006-.023-.008-.022-.01-.022-.01-.023-.012-.023-.013-.023-.014-.023-.015-.024-.017-.023-.018-.024-.019-.024-.02-.025-.021-.024-.023-.024-.023-.025-.051-.05-.056-.05-.06-.05-.065-.051-.07-.052-.074-.051-.079-.052-.083-.052-.088-.052-.092-.052-.096-.052-.101-.052-.106-.052-.11-.052-.114-.052-.118-.051-.123-.051-.126-.051-.131-.05-.136-.05-.139-.049-.143-.048-.148-.048-.152-.048-.155-.046-.16-.046-.163-.045-.168-.043-.172-.043-.175-.042-.179-.041-.183-.04-.187-.038-.191-.038-.194-.036-.198-.034-.202-.033-.205-.032-.21-.031-.212-.028-.216-.027-.22-.026-.224-.023-.226-.022-.231-.021-.233-.018-.237-.016-.241-.014-.244-.012-.247-.011-.25-.008-.254-.005-.257-.004-.26-.001-.26.001z")},"insertDatabaseIcon"),VTt=o(function(e,t){e.append("defs").append("symbol").attr("id",t+"-computer").attr("width","24").attr("height","24").append("path").attr("transform","scale(.5)").attr("d","M2 2v13h20v-13h-20zm18 11h-16v-9h16v9zm-10.228 6l.466-1h3.524l.467 1h-4.457zm14.228 3h-24l2-6h2.104l-1.33 4h18.45l-1.297-4h2.073l2 6zm-5-10h-14v-7h14v7z")},"insertComputerIcon"),WTt=o(function(e,t){e.append("defs").append("symbol").attr("id",t+"-clock").attr("width","24").attr("height","24").append("path").attr("transform","scale(.5)").attr("d","M12 2c5.514 0 10 4.486 10 10s-4.486 10-10 10-10-4.486-10-10 4.486-10 10-10zm0-2c-6.627 0-12 5.373-12 12s5.373 12 12 12 12-5.373 12-12-5.373-12-12-12zm5.848 12.459c.202.038.202.333.001.372-1.907.361-6.045 1.111-6.547 1.111-.719 0-1.301-.582-1.301-1.301 0-.512.77-5.447 1.125-7.445.034-.192.312-.181.343.014l.985 6.238 5.394 1.011z")},"insertClockIcon"),qTt=o(function(e,t){e.append("defs").append("marker").attr("id",t+"-arrowhead").attr("refX",7.9).attr("refY",5).attr("markerUnits","userSpaceOnUse").attr("markerWidth",12).attr("markerHeight",12).attr("orient","auto-start-reverse").append("path").attr("d","M -1 0 L 10 5 L 0 10 z")},"insertArrowHead"),UTt=o(function(e,t){e.append("defs").append("marker").attr("id",t+"-filled-head").attr("refX",15.5).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L14,7 L9,1 Z")},"insertArrowFilledHead"),HTt=o(function(e,t){e.append("defs").append("marker").attr("id",t+"-sequencenumber").attr("refX",15).attr("refY",15).attr("markerWidth",60).attr("markerHeight",40).attr("orient","auto").append("circle").attr("cx",15).attr("cy",15).attr("r",6)},"insertSequenceNumber"),YTt=o(function(e,t){e.append("defs").append("marker").attr("id",t+"-crosshead").attr("markerWidth",15).attr("markerHeight",8).attr("orient","auto").attr("refX",4).attr("refY",4.5).append("path").attr("fill","none").attr("stroke","#000000").style("stroke-dasharray","0, 0").attr("stroke-width","1pt").attr("d","M 1,2 L 6,7 M 6,2 L 1,7")},"insertArrowCrossHead"),jTt=o(function(e,t){let{theme:r}=t;e.append("defs").append("filter").attr("id","drop-shadow").attr("height","130%").attr("width","130%").append("feDropShadow").attr("dx","4").attr("dy","4").attr("stdDeviation",0).attr("flood-opacity","0.06").attr("flood-color",`${r==="redux"||r==="redux-color"?"#000000":"#FFFFFF"}`)},"insertDropShadow"),h6e=o(function(){return{x:0,y:0,fill:void 0,anchor:void 0,style:"#666",width:void 0,height:void 0,textMargin:0,rx:0,ry:0,tspan:!0,valign:void 0}},"getTextObj"),XTt=o(function(){return{x:0,y:0,fill:"#EDF2AE",stroke:"#666",width:100,anchor:"start",height:100,rx:0,ry:0}},"getNoteRect"),Eh=(function(){function e(a,s,l,u,h,d,f){let p=s.append("text").attr("x",l+h/2).attr("y",u+d/2+5).style("text-anchor","middle").text(a);n(p,f)}o(e,"byText");function t(a,s,l,u,h,d,f,p){let{actorFontSize:m,actorFontFamily:g,actorFontWeight:y}=p,[v,x]=Za(m),b=a.split(vt.lineBreakRegex);for(let T=0;T<b.length;T++){let w=T*v-v*(b.length-1)/2,C=s.append("text").attr("x",l+h/2).attr("y",u).style("text-anchor","middle").style("font-size",x).style("font-weight",y).style("font-family",g);C.append("tspan").attr("x",l+h/2).attr("dy",w).text(b[T]),C.attr("y",u+d/2).attr("dominant-baseline","central").attr("alignment-baseline","central"),n(C,f)}}o(t,"byTspan");function r(a,s,l,u,h,d,f,p){let m=s.append("switch"),y=m.append("foreignObject").attr("x",l).attr("y",u).attr("width",h).attr("height",d).append("xhtml:div").style("display","table").style("height","100%").style("width","100%");y.append("div").style("display","table-cell").style("text-align","center").style("vertical-align","middle").text(a),t(a,m,l,u,h,d,f,p),n(y,f)}o(r,"byFo");async function i(a,s,l,u,h,d,f,p){let m=await Yf(a,Nt()),g=s.append("switch"),v=g.append("foreignObject").attr("x",l+h/2-m.width/2).attr("y",u+d/2-m.height/2).attr("width",m.width).attr("height",m.height).append("xhtml:div").style("height","100%").style("width","100%");v.append("div").style("text-align","center").style("vertical-align","middle").html(await Fm(a,Nt())),t(a,g,l,u,h,d,f,p),n(v,f)}o(i,"byKatex");function n(a,s){for(let l in s)s.hasOwnProperty(l)&&a.attr(l,s[l])}return o(n,"_setTextAttrs"),function(a,s=!1){return s?i:a.textPlacement==="fo"?r:a.textPlacement==="old"?e:t}})(),KTt=(function(){function e(n,a,s,l,u,h,d){let f=a.append("text").attr("x",s).attr("y",l).style("text-anchor","start").text(n);i(f,d)}o(e,"byText");function t(n,a,s,l,u,h,d,f){let{actorFontSize:p,actorFontFamily:m,actorFontWeight:g}=f,y=n.split(vt.lineBreakRegex);for(let v=0;v<y.length;v++){let x=v*p-p*(y.length-1)/2,b=a.append("text").attr("x",s).attr("y",l).style("text-anchor","start").style("font-size",p).style("font-weight",g).style("font-family",m);b.append("tspan").attr("x",s).attr("dy",x).text(y[v]),b.attr("y",l+h/2).attr("dominant-baseline","central").attr("alignment-baseline","central"),i(b,d)}}o(t,"byTspan");function r(n,a,s,l,u,h,d,f){let p=a.append("switch"),g=p.append("foreignObject").attr("x",s).attr("y",l).attr("width",u).attr("height",h).append("xhtml:div").style("display","table").style("height","100%").style("width","100%");g.append("div").style("display","table-cell").style("text-align","center").style("vertical-align","middle").text(n),t(n,p,s,l,u,h,d,f),i(g,d)}o(r,"byFo");function i(n,a){for(let s in a)a.hasOwnProperty(s)&&n.attr(s,a[s])}return o(i,"_setTextAttrs"),function(n){return n.textPlacement==="fo"?r:n.textPlacement==="old"?e:t}})(),ZTt=o(function(e,t){e.append("defs").append("marker").attr("id",t+"-solidTopArrowHead").attr("refX",7.9).attr("refY",7.25).attr("markerUnits","userSpaceOnUse").attr("markerWidth",12).attr("markerHeight",12).attr("orient","auto-start-reverse").append("path").attr("d","M 0 0 L 10 8 L 0 8 z")},"insertSolidTopArrowHead"),QTt=o(function(e,t){e.append("defs").append("marker").attr("id",t+"-solidBottomArrowHead").attr("refX",7.9).attr("refY",.75).attr("markerUnits","userSpaceOnUse").attr("markerWidth",12).attr("markerHeight",12).attr("orient","auto-start-reverse").append("path").attr("d","M 0 0 L 10 0 L 0 8 z")},"insertSolidBottomArrowHead"),JTt=o(function(e,t){e.append("defs").append("marker").attr("id",t+"-stickTopArrowHead").attr("refX",7.5).attr("refY",7).attr("markerUnits","userSpaceOnUse").attr("markerWidth",12).attr("markerHeight",12).attr("orient","auto-start-reverse").append("path").attr("d","M 0 0 L 7 7").attr("stroke","black").attr("stroke-width",1.5).attr("fill","none")},"insertStickTopArrowHead"),eCt=o(function(e,t){e.append("defs").append("marker").attr("id",t+"-stickBottomArrowHead").attr("refX",7.5).attr("refY",0).attr("markerUnits","userSpaceOnUse").attr("markerWidth",12).attr("markerHeight",12).attr("orient","auto-start-reverse").append("path").attr("d","M 0 7 L 7 0").attr("stroke","black").attr("stroke-width",1.5).attr("fill","none")},"insertStickBottomArrowHead"),Ei={drawRect:XT,drawText:gm,drawLabel:c6e,drawActor:PTt,drawBox:BTt,drawPopup:ATt,anchorElement:FTt,drawActivation:$Tt,drawLoop:zTt,drawBackgroundRect:u6e,insertArrowHead:qTt,insertArrowFilledHead:UTt,insertSequenceNumber:HTt,insertArrowCrossHead:YTt,insertDatabaseIcon:GTt,insertComputerIcon:VTt,insertClockIcon:WTt,getTextObj:h6e,getNoteRect:XTt,fixLifeLineHeights:oW,sanitizeUrl:sW.sanitizeUrl,insertDropShadow:jTt,insertSolidTopArrowHead:ZTt,insertSolidBottomArrowHead:QTt,insertStickTopArrowHead:JTt,insertStickBottomArrowHead:eCt}});async function rCt(e,t){bt.bumpVerticalPos(10);let{startx:r,stopx:i,message:n}=t,a=vt.splitBreaks(n).length,s=Bi(n),l=s?await Yf(n,ge()):Zt.calculateTextDimensions(n,ym(We));if(!s){let f=l.height/a;t.height+=f,bt.bumpVerticalPos(f)}let u,h=l.height-10,d=l.width;if(r===i){u=bt.getVerticalPos()+h,We.rightAngles||(h+=We.boxMargin,u=bt.getVerticalPos()+h),h+=30;let f=vt.getMax(d/2,We.width/2);bt.insert(r-f,bt.getVerticalPos()-10+h,i+f,bt.getVerticalPos()+30+h)}else h+=We.boxMargin,u=bt.getVerticalPos()+h,bt.insert(r,u-10,i,u);return bt.bumpVerticalPos(h),t.height+=h,t.stopy=t.starty+t.height,bt.insert(t.fromBounds,t.starty,t.toBounds,t.stopy),u}function lu(e,t,r,i,n){bt.bumpVerticalPos(r);let a=i;if(t.id&&t.message&&e[t.id]){let s=e[t.id].width,l=ym(We);t.message=Zt.wrapLabel(`[${t.message}]`,s-2*We.wrapPadding,l),t.width=s,t.wrap=!0;let u=Zt.calculateTextDimensions(t.message,l),h=vt.getMax(u.height,We.labelBoxHeight);a=i+h,Z.debug(`${h} - ${t.message}`)}n(t),bt.bumpVerticalPos(a)}function aCt(e,t,r,i,n,a,s){function l(d,f){d.x<n.get(e.from).x?(bt.insert(t.stopx-f,t.starty,t.startx,t.stopy+d.height/2+We.noteMargin),t.stopx=t.stopx+f):(bt.insert(t.startx,t.starty,t.stopx+f,t.stopy+d.height/2+We.noteMargin),t.stopx=t.stopx-f)}o(l,"receiverAdjustment");function u(d,f){d.x<n.get(e.to).x?(bt.insert(t.startx-f,t.starty,t.stopx,t.stopy+d.height/2+We.noteMargin),t.startx=t.startx+f):(bt.insert(t.stopx,t.starty,t.startx+f,t.stopy+d.height/2+We.noteMargin),t.startx=t.startx-f)}o(u,"senderAdjustment");let h=[jT.ACTOR,jT.CONTROL,jT.ENTITY,jT.DATABASE];if(a.get(e.to)==i){let d=n.get(e.to),f=h.includes(d.type)?Af/2+3:d.width/2+3;l(d,f),d.starty=r-d.height/2,bt.bumpVerticalPos(d.height/2)}else if(s.get(e.from)==i){let d=n.get(e.from);if(We.mirrorActors){let f=h.includes(d.type)?Af/2:d.width/2;u(d,f)}d.stopy=r-d.height/2,bt.bumpVerticalPos(d.height/2)}else if(s.get(e.to)==i){let d=n.get(e.to);if(We.mirrorActors){let f=h.includes(d.type)?Af/2+3:d.width/2+3;l(d,f)}d.stopy=r-d.height/2,bt.bumpVerticalPos(d.height/2)}}async function oCt(e,t,r){let i={};for(let n of t)if(e.get(n.to)&&e.get(n.from)){let a=e.get(n.to);if(n.placement===r.db.PLACEMENT.LEFTOF&&!a.prevActor||n.placement===r.db.PLACEMENT.RIGHTOF&&!a.nextActor)continue;let s=n.placement!==void 0,l=!s,u=s?Ty(We):ym(We),h=n.wrap?Zt.wrapLabel(n.message,We.width-2*We.wrapPadding,u):n.message,f=(Bi(h)?await Yf(n.message,ge()):Zt.calculateTextDimensions(h,u)).width+2*We.wrapPadding;l&&n.from===a.nextActor?i[n.to]=vt.getMax(i[n.to]||0,f):l&&n.from===a.prevActor?i[n.from]=vt.getMax(i[n.from]||0,f):l&&n.from===n.to?(i[n.from]=vt.getMax(i[n.from]||0,f/2),i[n.to]=vt.getMax(i[n.to]||0,f/2)):n.placement===r.db.PLACEMENT.RIGHTOF?i[n.from]=vt.getMax(i[n.from]||0,f):n.placement===r.db.PLACEMENT.LEFTOF?i[a.prevActor]=vt.getMax(i[a.prevActor]||0,f):n.placement===r.db.PLACEMENT.OVER&&(a.prevActor&&(i[a.prevActor]=vt.getMax(i[a.prevActor]||0,f/2)),a.nextActor&&(i[n.from]=vt.getMax(i[n.from]||0,f/2)))}return Z.debug("maxMessageWidthPerActor:",i),i}async function cCt(e,t,r){let i=0;for(let a of e.keys()){let s=e.get(a);s.wrap&&(s.description=Zt.wrapLabel(s.description,We.width-2*We.wrapPadding,cW(We)));let l=Bi(s.description)?await Yf(s.description,ge()):Zt.calculateTextDimensions(s.description,cW(We));s.width=s.wrap?We.width:vt.getMax(We.width,l.width+2*We.wrapPadding),s.height=s.wrap?vt.getMax(l.height,We.height):We.height,i=vt.getMax(i,s.height)}for(let a in t){let s=e.get(a);if(!s)continue;let l=e.get(s.nextActor);if(!l){let f=t[a]+We.actorMargin-s.width/2;s.margin=vt.getMax(f,We.actorMargin);continue}let h=t[a]+We.actorMargin-s.width/2-l.width/2;s.margin=vt.getMax(h,We.actorMargin)}let n=0;return r.forEach(a=>{let s=ym(We),l=a.actorKeys.reduce((f,p)=>f+=e.get(p).width+(e.get(p).margin||0),0),u=We.boxMargin*8;l+=u,l-=2*We.boxTextMargin,a.wrap&&(a.name=Zt.wrapLabel(a.name,l-2*We.wrapPadding,s));let h=Zt.calculateTextDimensions(a.name,s);n=vt.getMax(h.height,n);let d=vt.getMax(l,h.width+2*We.wrapPadding);if(a.margin=We.boxTextMargin,l<d){let f=(d-l)/2;a.margin+=f}}),r.forEach(a=>a.textMaxHeight=n),vt.getMax(i,We.height)}var We,bt,tCt,f6e,ym,Ty,cW,iCt,nCt,uW,m6e,g6e,H6,p6e,sCt,lCt,uCt,hCt,dCt,lW,fCt,y6e,pCt,mCt,gCt,v6e,x6e=z(()=>{"use strict";Rr();d6e();St();Ir();Ir();gp();Ut();Dm();Xt();Di();aW();We={},bt={data:{startx:void 0,stopx:void 0,starty:void 0,stopy:void 0},verticalPos:0,sequenceItems:[],activations:[],models:{getHeight:o(function(){return Math.max.apply(null,this.actors.length===0?[0]:this.actors.map(e=>e.height||0))+(this.loops.length===0?0:this.loops.map(e=>e.height||0).reduce((e,t)=>e+t))+(this.messages.length===0?0:this.messages.map(e=>e.height||0).reduce((e,t)=>e+t))+(this.notes.length===0?0:this.notes.map(e=>e.height||0).reduce((e,t)=>e+t))},"getHeight"),clear:o(function(){this.actors=[],this.boxes=[],this.loops=[],this.messages=[],this.notes=[]},"clear"),addBox:o(function(e){this.boxes.push(e)},"addBox"),addActor:o(function(e){this.actors.push(e)},"addActor"),addLoop:o(function(e){this.loops.push(e)},"addLoop"),addMessage:o(function(e){this.messages.push(e)},"addMessage"),addNote:o(function(e){this.notes.push(e)},"addNote"),lastActor:o(function(){return this.actors[this.actors.length-1]},"lastActor"),lastLoop:o(function(){return this.loops[this.loops.length-1]},"lastLoop"),lastMessage:o(function(){return this.messages[this.messages.length-1]},"lastMessage"),lastNote:o(function(){return this.notes[this.notes.length-1]},"lastNote"),actors:[],boxes:[],loops:[],messages:[],notes:[]},init:o(function(){this.sequenceItems=[],this.activations=[],this.models.clear(),this.data={startx:void 0,stopx:void 0,starty:void 0,stopy:void 0},this.verticalPos=0,g6e(ge())},"init"),updateVal:o(function(e,t,r,i){e[t]===void 0?e[t]=r:e[t]=i(r,e[t])},"updateVal"),updateBounds:o(function(e,t,r,i){let n=this,a=0;function s(l){return o(function(h){a++;let d=n.sequenceItems.length-a+1;n.updateVal(h,"starty",t-d*We.boxMargin,Math.min),n.updateVal(h,"stopy",i+d*We.boxMargin,Math.max),n.updateVal(bt.data,"startx",e-d*We.boxMargin,Math.min),n.updateVal(bt.data,"stopx",r+d*We.boxMargin,Math.max),l!=="activation"&&(n.updateVal(h,"startx",e-d*We.boxMargin,Math.min),n.updateVal(h,"stopx",r+d*We.boxMargin,Math.max),n.updateVal(bt.data,"starty",t-d*We.boxMargin,Math.min),n.updateVal(bt.data,"stopy",i+d*We.boxMargin,Math.max))},"updateItemBounds")}o(s,"updateFn"),this.sequenceItems.forEach(s()),this.activations.forEach(s("activation"))},"updateBounds"),insert:o(function(e,t,r,i){let n=vt.getMin(e,r),a=vt.getMax(e,r),s=vt.getMin(t,i),l=vt.getMax(t,i);this.updateVal(bt.data,"startx",n,Math.min),this.updateVal(bt.data,"starty",s,Math.min),this.updateVal(bt.data,"stopx",a,Math.max),this.updateVal(bt.data,"stopy",l,Math.max),this.updateBounds(n,s,a,l)},"insert"),newActivation:o(function(e,t,r){let i=r.get(e.from),n=H6(e.from).length||0,a=i.x+i.width/2+(n-1)*We.activationWidth/2;this.activations.push({startx:a,starty:this.verticalPos+2,stopx:a+We.activationWidth,stopy:void 0,actor:e.from,anchored:Ei.anchorElement(t)})},"newActivation"),endActivation:o(function(e){let t=this.activations.map(function(r){return r.actor}).lastIndexOf(e.from);return this.activations.splice(t,1)[0]},"endActivation"),createLoop:o(function(e={message:void 0,wrap:!1,width:void 0},t){return{startx:void 0,starty:this.verticalPos,stopx:void 0,stopy:void 0,title:e.message,wrap:e.wrap,width:e.width,height:0,fill:t}},"createLoop"),newLoop:o(function(e={message:void 0,wrap:!1,width:void 0},t){this.sequenceItems.push(this.createLoop(e,t))},"newLoop"),endLoop:o(function(){return this.sequenceItems.pop()},"endLoop"),isLoopOverlap:o(function(){return this.sequenceItems.length?this.sequenceItems[this.sequenceItems.length-1].overlap:!1},"isLoopOverlap"),addSectionToLoop:o(function(e){let t=this.sequenceItems.pop();t.sections=t.sections||[],t.sectionTitles=t.sectionTitles||[],t.sections.push({y:bt.getVerticalPos(),height:0}),t.sectionTitles.push(e),this.sequenceItems.push(t)},"addSectionToLoop"),saveVerticalPos:o(function(){this.isLoopOverlap()&&(this.savedVerticalPos=this.verticalPos)},"saveVerticalPos"),resetVerticalPos:o(function(){this.isLoopOverlap()&&(this.verticalPos=this.savedVerticalPos)},"resetVerticalPos"),bumpVerticalPos:o(function(e){this.verticalPos=this.verticalPos+e,this.data.stopy=vt.getMax(this.data.stopy,this.verticalPos)},"bumpVerticalPos"),getVerticalPos:o(function(){return this.verticalPos},"getVerticalPos"),getBounds:o(function(){return{bounds:this.data,models:this.models}},"getBounds")},tCt=o(async function(e,t,r){bt.bumpVerticalPos(We.boxMargin),t.height=We.boxMargin,t.starty=bt.getVerticalPos();let i=fa();i.x=t.startx,i.y=t.starty,i.width=t.width||We.width,i.class="note";let n=e.append("g");n.attr("data-et","note"),n.attr("data-id","i"+r);let a=Ei.drawRect(n,i),s=wx();s.x=t.startx,s.y=t.starty,s.width=i.width,s.dy="1em",s.text=t.message,s.class="noteText",s.fontFamily=We.noteFontFamily,s.fontSize=We.noteFontSize,s.fontWeight=We.noteFontWeight,s.anchor=We.noteAlign,s.textMargin=We.noteMargin,s.valign="center";let l=Bi(s.text)?await KT(n,s):gm(n,s),u=Math.round(l.map(h=>(h._groups||h)[0][0].getBBox().height).reduce((h,d)=>h+d));a.attr("height",u+2*We.noteMargin),t.height+=u+2*We.noteMargin,bt.bumpVerticalPos(u+2*We.noteMargin),t.stopy=t.starty+u+2*We.noteMargin,t.stopx=t.startx+i.width,bt.insert(t.startx,t.starty,t.stopx,t.stopy),bt.models.addNote(t)},"drawNote"),f6e=o(function(e,t,r,i,n,a,s){let l=i.db.getActors(),u=l.get(t.from),h=l.get(t.to),d=r.sequenceVisible,f=u.x+u.width/2,p=h.x+h.width/2,m=f<=p,g=y6e(t,i),y=e.append("g"),v=16.5,x=o((k,E)=>{let A=k?v:-v;return E?-A:A},"getCircleOffset"),b=o(k=>{y.append("circle").attr("cx",k).attr("cy",s).attr("r",5).attr("width",10).attr("height",10)},"drawCircle"),{CENTRAL_CONNECTION:T,CENTRAL_CONNECTION_REVERSE:w,CENTRAL_CONNECTION_DUAL:C}=i.db.LINETYPE;if(d)switch(t.centralConnection){case T:g&&(p+=x(m,!0));break;case w:g||(f+=x(m,!1));break;case C:g?p+=x(m,!0):f+=x(m,!1);break}switch(t.centralConnection){case T:b(p);break;case w:b(f);break;case C:b(f),b(p);break}},"drawCentralConnection"),ym=o(e=>({fontFamily:e.messageFontFamily,fontSize:e.messageFontSize,fontWeight:e.messageFontWeight}),"messageFont"),Ty=o(e=>({fontFamily:e.noteFontFamily,fontSize:e.noteFontSize,fontWeight:e.noteFontWeight}),"noteFont"),cW=o(e=>({fontFamily:e.actorFontFamily,fontSize:e.actorFontSize,fontWeight:e.actorFontWeight}),"actorFont");o(rCt,"boundMessage");iCt=o(async function(e,t,r,i,n,a){let{startx:s,stopx:l,starty:u,message:h,type:d,sequenceIndex:f,sequenceVisible:p}=t,m=Zt.calculateTextDimensions(h,ym(We)),g=wx();g.x=Math.min(s,l),g.y=u+10,g.width=Math.abs(l-s),g.class="messageText",g.dy="1em",g.text=h,g.fontFamily=We.messageFontFamily,g.fontSize=We.messageFontSize,g.fontWeight=We.messageFontWeight,g.anchor=We.messageAlign,g.valign="center",g.textMargin=We.wrapPadding,g.tspan=!1,Bi(g.text)?await KT(e,g,{startx:s,stopx:l,starty:r}):gm(e,g);let y=m.width,v;if(s===l){let b=p||We.showSequenceNumbers,T=y6e(n,i),w=pCt(n,i),C=s+(b&&(T||w)?10:0);We.rightAngles?v=e.append("path").attr("d",`M  ${C},${r} H ${s+vt.getMax(We.width/2,y/2)} V ${r+25} H ${s}`):v=e.append("path").attr("d","M "+C+","+r+" C "+(C+60)+","+(r-10)+" "+(s+60)+","+(r+30)+" "+s+","+(r+20)),lW(n,i)&&f6e(e,n,t,i,s,l,r)}else v=e.append("line"),v.attr("x1",s),v.attr("y1",r),v.attr("x2",l),v.attr("y2",r),lW(n,i)&&f6e(e,n,t,i,s,l,r);d===i.db.LINETYPE.DOTTED||d===i.db.LINETYPE.DOTTED_CROSS||d===i.db.LINETYPE.DOTTED_POINT||d===i.db.LINETYPE.DOTTED_OPEN||d===i.db.LINETYPE.BIDIRECTIONAL_DOTTED||d===i.db.LINETYPE.SOLID_TOP_DOTTED||d===i.db.LINETYPE.SOLID_BOTTOM_DOTTED||d===i.db.LINETYPE.STICK_TOP_DOTTED||d===i.db.LINETYPE.STICK_BOTTOM_DOTTED||d===i.db.LINETYPE.SOLID_ARROW_TOP_REVERSE_DOTTED||d===i.db.LINETYPE.SOLID_ARROW_BOTTOM_REVERSE_DOTTED||d===i.db.LINETYPE.STICK_ARROW_TOP_REVERSE_DOTTED||d===i.db.LINETYPE.STICK_ARROW_BOTTOM_REVERSE_DOTTED?(v.style("stroke-dasharray","3, 3"),v.attr("class","messageLine1")):v.attr("class","messageLine0"),v.attr("data-et","message"),v.attr("data-id","i"+t.id),v.attr("data-from",t.from),v.attr("data-to",t.to);let x="";if(We.arrowMarkerAbsolute&&(x=Hf(!0)),v.attr("stroke-width",2),v.attr("stroke","none"),v.style("fill","none"),(d===i.db.LINETYPE.SOLID_TOP||d===i.db.LINETYPE.SOLID_TOP_DOTTED)&&v.attr("marker-end","url("+x+"#"+a+"-solidTopArrowHead)"),(d===i.db.LINETYPE.SOLID_BOTTOM||d===i.db.LINETYPE.SOLID_BOTTOM_DOTTED)&&v.attr("marker-end","url("+x+"#"+a+"-solidBottomArrowHead)"),(d===i.db.LINETYPE.STICK_TOP||d===i.db.LINETYPE.STICK_TOP_DOTTED)&&v.attr("marker-end","url("+x+"#"+a+"-stickTopArrowHead)"),(d===i.db.LINETYPE.STICK_BOTTOM||d===i.db.LINETYPE.STICK_BOTTOM_DOTTED)&&v.attr("marker-end","url("+x+"#"+a+"-stickBottomArrowHead)"),(d===i.db.LINETYPE.SOLID_ARROW_TOP_REVERSE||d===i.db.LINETYPE.SOLID_ARROW_TOP_REVERSE_DOTTED)&&v.attr("marker-start","url("+x+"#"+a+"-solidBottomArrowHead)"),(d===i.db.LINETYPE.SOLID_ARROW_BOTTOM_REVERSE||d===i.db.LINETYPE.SOLID_ARROW_BOTTOM_REVERSE_DOTTED)&&v.attr("marker-start","url("+x+"#"+a+"-solidTopArrowHead)"),(d===i.db.LINETYPE.STICK_ARROW_TOP_REVERSE||d===i.db.LINETYPE.STICK_ARROW_TOP_REVERSE_DOTTED)&&v.attr("marker-start","url("+x+"#"+a+"-stickBottomArrowHead)"),(d===i.db.LINETYPE.STICK_ARROW_BOTTOM_REVERSE||d===i.db.LINETYPE.STICK_ARROW_BOTTOM_REVERSE_DOTTED)&&v.attr("marker-start","url("+x+"#"+a+"-stickTopArrowHead)"),(d===i.db.LINETYPE.SOLID||d===i.db.LINETYPE.DOTTED)&&v.attr("marker-end","url("+x+"#"+a+"-arrowhead)"),(d===i.db.LINETYPE.BIDIRECTIONAL_SOLID||d===i.db.LINETYPE.BIDIRECTIONAL_DOTTED)&&(v.attr("marker-start","url("+x+"#"+a+"-arrowhead)"),v.attr("marker-end","url("+x+"#"+a+"-arrowhead)")),(d===i.db.LINETYPE.SOLID_POINT||d===i.db.LINETYPE.DOTTED_POINT)&&v.attr("marker-end","url("+x+"#"+a+"-filled-head)"),(d===i.db.LINETYPE.SOLID_CROSS||d===i.db.LINETYPE.DOTTED_CROSS)&&v.attr("marker-end","url("+x+"#"+a+"-crosshead)"),p||We.showSequenceNumbers){let b=d===i.db.LINETYPE.BIDIRECTIONAL_SOLID||d===i.db.LINETYPE.BIDIRECTIONAL_DOTTED,T=d===i.db.LINETYPE.SOLID_ARROW_TOP_REVERSE||d===i.db.LINETYPE.SOLID_ARROW_TOP_REVERSE_DOTTED||d===i.db.LINETYPE.SOLID_ARROW_BOTTOM_REVERSE||d===i.db.LINETYPE.SOLID_ARROW_BOTTOM_REVERSE_DOTTED||d===i.db.LINETYPE.STICK_ARROW_TOP_REVERSE||d===i.db.LINETYPE.STICK_ARROW_TOP_REVERSE_DOTTED||d===i.db.LINETYPE.STICK_ARROW_BOTTOM_REVERSE||d===i.db.LINETYPE.STICK_ARROW_BOTTOM_REVERSE_DOTTED,w=6,C=lW(n,i),k=s,E=l;b?(s<l?k=s+w*2:(k=s-w+(C?-5:0),k+=n?.centralConnection===i.db.LINETYPE.CENTRAL_CONNECTION_DUAL||n?.centralConnection===i.db.LINETYPE.CENTRAL_CONNECTION_REVERSE?-7.5:0),v.attr("x1",k)):T?(l>s?E=l-2*w:(E=l-w,k+=n?.centralConnection===i.db.LINETYPE.CENTRAL_CONNECTION_DUAL||n?.centralConnection===i.db.LINETYPE.CENTRAL_CONNECTION_REVERSE?-7.5:0),E+=C?15:0,v.attr("x2",E),v.attr("x1",k)):v.attr("x1",s+w);let A=0,N=s===l,P=s<=l;N?A=t.fromBounds+1:T?A=P?t.toBounds-1:t.fromBounds+1:A=P?t.fromBounds+1:t.toBounds-1;let I="12px",D=f.toString().length;D>5?I="7px":D>3&&(I="9px"),e.append("line").attr("x1",A).attr("y1",r).attr("x2",A).attr("y2",r).attr("stroke-width",0).attr("marker-start","url("+x+"#"+a+"-sequencenumber)"),e.append("text").attr("x",A).attr("y",r+4).attr("font-family","sans-serif").attr("font-size",I).attr("text-anchor","middle").attr("class","sequenceNumber").text(f)}},"drawMessage"),nCt=o(function(e,t,r,i,n,a,s){let l=0,u=0,h,d=0;for(let f of i){let p=t.get(f),m=p.box;h&&h!=m&&(s||bt.models.addBox(h),u+=We.boxMargin+h.margin),m&&m!=h&&(s||(m.x=l+u,m.y=n),u+=m.margin),p.width=vt.getMax(p.width||We.width,We.width),p.height=vt.getMax(p.height||We.height,We.height),p.margin=p.margin||We.actorMargin,d=vt.getMax(d,p.height),r.get(p.name)&&(u+=p.width/2),p.x=l+u,p.starty=bt.getVerticalPos(),bt.insert(p.x,n,p.x+p.width,p.height),l+=p.width+u,p.box&&(p.box.width=l+m.margin-p.box.x),u=p.margin,h=p.box,bt.models.addActor(p)}h&&!s&&bt.models.addBox(h),bt.bumpVerticalPos(d)},"addActorRenderingData"),uW=o(async function(e,t,r,i,n,a,s){if(i){let l=0;bt.bumpVerticalPos(We.boxMargin*2);for(let u of r){let h=t.get(u);h.stopy||(h.stopy=bt.getVerticalPos());let d=await Ei.drawActor(e,h,We,!0,n,a,s);l=vt.getMax(l,d)}bt.bumpVerticalPos(l+We.boxMargin)}else for(let l of r){let u=t.get(l);await Ei.drawActor(e,u,We,!1,n,a,s)}},"drawActors"),m6e=o(function(e,t,r,i){let n=0,a=0;for(let s of r){let l=t.get(s),u=lCt(l),h=Ei.drawPopup(e,l,u,We,We.forceMenus,i);h.height>n&&(n=h.height),h.width+l.x>a&&(a=h.width+l.x)}return{maxHeight:n,maxWidth:a}},"drawActorsPopup"),g6e=o(function(e){Ai(We,e),e.fontFamily&&(We.actorFontFamily=We.noteFontFamily=We.messageFontFamily=e.fontFamily),e.fontSize&&(We.actorFontSize=We.noteFontSize=We.messageFontSize=e.fontSize),e.fontWeight&&(We.actorFontWeight=We.noteFontWeight=We.messageFontWeight=e.fontWeight)},"setConf"),H6=o(function(e){return bt.activations.filter(function(t){return t.actor===e})},"actorActivations"),p6e=o(function(e,t){let r=t.get(e),i=H6(e),n=i.reduce(function(s,l){return vt.getMin(s,l.startx)},r.x+r.width/2-1),a=i.reduce(function(s,l){return vt.getMax(s,l.stopx)},r.x+r.width/2+1);return[n,a]},"activationBounds");o(lu,"adjustLoopHeightForWrap");o(aCt,"adjustCreatedDestroyedData");sCt=o(async function(e,t,r,i){let{securityLevel:n,sequence:a,look:s}=ge();We=a;let l;n==="sandbox"&&(l=Je("#i"+t));let u=n==="sandbox"?Je(l.nodes()[0].contentDocument.body):Je("body"),h=n==="sandbox"?l.nodes()[0].contentDocument:document;bt.init(),Z.debug(i.db);let d=n==="sandbox"?u.select(`[id="${t}"]`):Je(`[id="${t}"]`),f=i.db.getActors(),p=i.db.getCreatedActors(),m=i.db.getDestroyedActors(),g=i.db.getBoxes(),y=i.db.getActorKeys(),v=i.db.getMessages(),x=i.db.getDiagramTitle(),b=i.db.hasAtLeastOneBox(),T=i.db.hasAtLeastOneBoxWithTitle(),w=await oCt(f,v,i);if(We.height=await cCt(f,w,g),Ei.insertComputerIcon(d,t),Ei.insertDatabaseIcon(d,t),Ei.insertClockIcon(d,t),b&&(bt.bumpVerticalPos(We.boxMargin),T&&bt.bumpVerticalPos(g[0].textMaxHeight)),We.hideUnusedParticipants===!0){let F=new Set;v.forEach(V=>{F.add(V.from),F.add(V.to)}),y=y.filter(V=>F.has(V))}let C=new Map(y.map((F,V)=>[f.get(F)?.name??F,V]));nCt(d,f,p,y,0,v,!1);let k=await gCt(v,f,w,i);Ei.insertArrowHead(d,t),Ei.insertArrowCrossHead(d,t),Ei.insertArrowFilledHead(d,t),Ei.insertSequenceNumber(d,t),Ei.insertSolidTopArrowHead(d,t),Ei.insertSolidBottomArrowHead(d,t),Ei.insertStickTopArrowHead(d,t),Ei.insertStickBottomArrowHead(d,t),s==="neo"&&Ei.insertDropShadow(d,We);function E(F,V){let H=bt.endActivation(F);H.starty+18>V&&(H.starty=V-6,V+=12),Ei.drawActivation(d,H,V,We,H6(F.from).length,i,C),bt.insert(H.startx,V-10,H.stopx,V)}o(E,"activeEnd");let A=1,N=1,P=[],I=[],D=0;for(let F of v){let V,H,j;switch(F.type){case i.db.LINETYPE.NOTE:bt.resetVerticalPos(),H=F.noteModel,await tCt(d,H,F.id);break;case i.db.LINETYPE.ACTIVE_START:bt.newActivation(F,d,f);break;case i.db.LINETYPE.CENTRAL_CONNECTION:bt.newActivation(F,d,f);break;case i.db.LINETYPE.CENTRAL_CONNECTION_REVERSE:bt.newActivation(F,d,f);break;case i.db.LINETYPE.ACTIVE_END:E(F,bt.getVerticalPos());break;case i.db.LINETYPE.LOOP_START:lu(k,F,We.boxMargin,We.boxMargin+We.boxTextMargin,U=>bt.newLoop(U));break;case i.db.LINETYPE.LOOP_END:V=bt.endLoop(),await Ei.drawLoop(d,V,"loop",We,F),bt.bumpVerticalPos(V.stopy-bt.getVerticalPos()),bt.models.addLoop(V);break;case i.db.LINETYPE.RECT_START:lu(k,F,We.boxMargin,We.boxMargin,U=>bt.newLoop(void 0,U.message));break;case i.db.LINETYPE.RECT_END:V=bt.endLoop(),I.push(V),bt.models.addLoop(V),bt.bumpVerticalPos(V.stopy-bt.getVerticalPos());break;case i.db.LINETYPE.OPT_START:lu(k,F,We.boxMargin,We.boxMargin+We.boxTextMargin,U=>bt.newLoop(U));break;case i.db.LINETYPE.OPT_END:V=bt.endLoop(),await Ei.drawLoop(d,V,"opt",We,F),bt.bumpVerticalPos(V.stopy-bt.getVerticalPos()),bt.models.addLoop(V);break;case i.db.LINETYPE.ALT_START:lu(k,F,We.boxMargin,We.boxMargin+We.boxTextMargin,U=>bt.newLoop(U));break;case i.db.LINETYPE.ALT_ELSE:lu(k,F,We.boxMargin+We.boxTextMargin,We.boxMargin,U=>bt.addSectionToLoop(U));break;case i.db.LINETYPE.ALT_END:V=bt.endLoop(),await Ei.drawLoop(d,V,"alt",We,F),bt.bumpVerticalPos(V.stopy-bt.getVerticalPos()),bt.models.addLoop(V);break;case i.db.LINETYPE.PAR_START:case i.db.LINETYPE.PAR_OVER_START:lu(k,F,We.boxMargin,We.boxMargin+We.boxTextMargin,U=>bt.newLoop(U)),bt.saveVerticalPos();break;case i.db.LINETYPE.PAR_AND:lu(k,F,We.boxMargin+We.boxTextMargin,We.boxMargin,U=>bt.addSectionToLoop(U));break;case i.db.LINETYPE.PAR_END:V=bt.endLoop(),await Ei.drawLoop(d,V,"par",We,F),bt.bumpVerticalPos(V.stopy-bt.getVerticalPos()),bt.models.addLoop(V);break;case i.db.LINETYPE.AUTONUMBER:A=F.message.start||A,N=F.message.step||N,F.message.visible?i.db.enableSequenceNumbers():i.db.disableSequenceNumbers();break;case i.db.LINETYPE.CRITICAL_START:lu(k,F,We.boxMargin,We.boxMargin+We.boxTextMargin,U=>bt.newLoop(U));break;case i.db.LINETYPE.CRITICAL_OPTION:lu(k,F,We.boxMargin+We.boxTextMargin,We.boxMargin,U=>bt.addSectionToLoop(U));break;case i.db.LINETYPE.CRITICAL_END:V=bt.endLoop(),await Ei.drawLoop(d,V,"critical",We,F),bt.bumpVerticalPos(V.stopy-bt.getVerticalPos()),bt.models.addLoop(V);break;case i.db.LINETYPE.BREAK_START:lu(k,F,We.boxMargin,We.boxMargin+We.boxTextMargin,U=>bt.newLoop(U));break;case i.db.LINETYPE.BREAK_END:V=bt.endLoop(),await Ei.drawLoop(d,V,"break",We,F),bt.bumpVerticalPos(V.stopy-bt.getVerticalPos()),bt.models.addLoop(V);break;default:try{j=F.msgModel,j.starty=bt.getVerticalPos(),j.sequenceIndex=A,j.sequenceVisible=i.db.showSequenceNumbers(),j.id=F.id,j.from=F.from,j.to=F.to;let U=await rCt(d,j);aCt(F,j,U,D,f,p,m),P.push({messageModel:j,lineStartY:U,msg:F}),bt.models.addMessage(j)}catch(U){Z.error("error while drawing message",U)}}[i.db.LINETYPE.SOLID_OPEN,i.db.LINETYPE.DOTTED_OPEN,i.db.LINETYPE.SOLID,i.db.LINETYPE.SOLID_TOP,i.db.LINETYPE.SOLID_BOTTOM,i.db.LINETYPE.STICK_TOP,i.db.LINETYPE.STICK_BOTTOM,i.db.LINETYPE.SOLID_TOP_DOTTED,i.db.LINETYPE.SOLID_BOTTOM_DOTTED,i.db.LINETYPE.STICK_TOP_DOTTED,i.db.LINETYPE.STICK_BOTTOM_DOTTED,i.db.LINETYPE.SOLID_ARROW_TOP_REVERSE,i.db.LINETYPE.SOLID_ARROW_BOTTOM_REVERSE,i.db.LINETYPE.STICK_ARROW_TOP_REVERSE,i.db.LINETYPE.STICK_ARROW_BOTTOM_REVERSE,i.db.LINETYPE.SOLID_ARROW_TOP_REVERSE_DOTTED,i.db.LINETYPE.SOLID_ARROW_BOTTOM_REVERSE_DOTTED,i.db.LINETYPE.STICK_ARROW_TOP_REVERSE_DOTTED,i.db.LINETYPE.STICK_ARROW_BOTTOM_REVERSE_DOTTED,i.db.LINETYPE.DOTTED,i.db.LINETYPE.SOLID_CROSS,i.db.LINETYPE.DOTTED_CROSS,i.db.LINETYPE.SOLID_POINT,i.db.LINETYPE.DOTTED_POINT,i.db.LINETYPE.BIDIRECTIONAL_SOLID,i.db.LINETYPE.BIDIRECTIONAL_DOTTED].includes(F.type)&&(A=Math.round((A+N)*100)/100),D++}Z.debug("createdActors",p),Z.debug("destroyedActors",m),await uW(d,f,y,!1,t,i,C);for(let F of P)await iCt(d,F.messageModel,F.lineStartY,i,F.msg,t);We.mirrorActors&&await uW(d,f,y,!0,t,i,C),I.forEach(F=>Ei.drawBackgroundRect(d,F)),oW(d,f,y,We);for(let F of bt.models.boxes){F.height=bt.getVerticalPos()-F.y,bt.insert(F.x,F.y,F.x+F.width,F.height);let V=We.boxMargin*2;F.startx=F.x-V,F.starty=F.y-V*.25,F.stopx=F.startx+F.width+2*V,F.stopy=F.starty+F.height+V*.75,F.stroke="rgb(0,0,0, 0.5)",Ei.drawBox(d,F,We)}b&&bt.bumpVerticalPos(We.boxMargin);let _=m6e(d,f,y,h),{bounds:R}=bt.getBounds();R.startx===void 0&&(R.startx=0),R.starty===void 0&&(R.starty=0),R.stopx===void 0&&(R.stopx=0),R.stopy===void 0&&(R.stopy=0);let M=R.stopy-R.starty;M<_.maxHeight&&(M=_.maxHeight);let L=M+2*We.diagramMarginY;We.mirrorActors&&(L=L-We.boxMargin+We.bottomMarginAdj);let B=R.stopx-R.startx;B<_.maxWidth&&(B=_.maxWidth);let O=B+2*We.diagramMarginX;x&&d.append("text").text(x).attr("x",(R.stopx-R.startx)/2-2*We.diagramMarginX).attr("y",-25),Br(d,L,O,We.useMaxWidth);let $=x?40:0,G=f.size&&s==="neo"?30:0;d.attr("viewBox",R.startx-We.diagramMarginX+" -"+(We.diagramMarginY+$)+" "+O+" "+(L+$+G)),Z.debug("models:",bt.models)},"draw");o(oCt,"getMaxMessageWidthPerActor");lCt=o(function(e){let t=0,r=cW(We);for(let i in e.links){let a=Zt.calculateTextDimensions(i,r).width+2*We.wrapPadding+2*We.boxMargin;t<a&&(t=a)}return t},"getRequiredPopupWidth");o(cCt,"calculateActorMargins");uCt=o(async function(e,t,r){let i=t.get(e.from),n=t.get(e.to),a=i.x,s=n.x,l=e.wrap&&e.message,u=Bi(e.message)?await Yf(e.message,ge()):Zt.calculateTextDimensions(l?Zt.wrapLabel(e.message,We.width,Ty(We)):e.message,Ty(We)),h={width:l?We.width:vt.getMax(We.width,u.width+2*We.noteMargin),height:0,startx:i.x,stopx:0,starty:0,stopy:0,message:e.message};return e.placement===r.db.PLACEMENT.RIGHTOF?(h.width=l?vt.getMax(We.width,u.width):vt.getMax(i.width/2+n.width/2,u.width+2*We.noteMargin),h.startx=a+(i.width+We.actorMargin)/2):e.placement===r.db.PLACEMENT.LEFTOF?(h.width=l?vt.getMax(We.width,u.width+2*We.noteMargin):vt.getMax(i.width/2+n.width/2,u.width+2*We.noteMargin),h.startx=a-h.width+(i.width-We.actorMargin)/2):e.to===e.from?(u=Zt.calculateTextDimensions(l?Zt.wrapLabel(e.message,vt.getMax(We.width,i.width),Ty(We)):e.message,Ty(We)),h.width=l?vt.getMax(We.width,i.width):vt.getMax(i.width,We.width,u.width+2*We.noteMargin),h.startx=a+(i.width-h.width)/2):(h.width=Math.abs(a+i.width/2-(s+n.width/2))+We.actorMargin,h.startx=a<s?a+i.width/2-We.actorMargin/2:s+n.width/2-We.actorMargin/2),l&&(h.message=Zt.wrapLabel(e.message,h.width-2*We.wrapPadding,Ty(We))),Z.debug(`NM:[${h.startx},${h.stopx},${h.starty},${h.stopy}:${h.width},${h.height}=${e.message}]`),h},"buildNoteModel"),hCt=4,dCt=6,lW=o(function(e,t){let{CENTRAL_CONNECTION:r,CENTRAL_CONNECTION_REVERSE:i,CENTRAL_CONNECTION_DUAL:n}=t.db.LINETYPE;return[r,i,n].includes(e.centralConnection)},"hasCentralConnection"),fCt=o(function(e,t,r){let{CENTRAL_CONNECTION_REVERSE:i,CENTRAL_CONNECTION_DUAL:n,BIDIRECTIONAL_SOLID:a,BIDIRECTIONAL_DOTTED:s}=t.db.LINETYPE,l=0;return(e.centralConnection===i||e.centralConnection===n)&&(l+=hCt),(e.centralConnection===i||e.centralConnection===n)&&(e.type===a||e.type===s)&&(l+=r?0:-dCt),l},"calculateCentralConnectionOffset"),y6e=o(function(e,t){let{SOLID_ARROW_TOP_REVERSE:r,SOLID_ARROW_TOP_REVERSE_DOTTED:i,SOLID_ARROW_BOTTOM_REVERSE:n,SOLID_ARROW_BOTTOM_REVERSE_DOTTED:a,STICK_ARROW_TOP_REVERSE:s,STICK_ARROW_TOP_REVERSE_DOTTED:l,STICK_ARROW_BOTTOM_REVERSE:u,STICK_ARROW_BOTTOM_REVERSE_DOTTED:h}=t.db.LINETYPE;return[r,i,n,a,s,l,u,h].includes(e.type)},"isReverseArrowType"),pCt=o(function(e,t){let{BIDIRECTIONAL_SOLID:r,BIDIRECTIONAL_DOTTED:i}=t.db.LINETYPE;return[r,i].includes(e.type)},"isBidirectionalArrowType"),mCt=o(function(e,t,r){let{look:i}=ge();if(![r.db.LINETYPE.SOLID_OPEN,r.db.LINETYPE.DOTTED_OPEN,r.db.LINETYPE.SOLID,r.db.LINETYPE.SOLID_TOP,r.db.LINETYPE.SOLID_BOTTOM,r.db.LINETYPE.STICK_TOP,r.db.LINETYPE.STICK_BOTTOM,r.db.LINETYPE.SOLID_TOP_DOTTED,r.db.LINETYPE.SOLID_BOTTOM_DOTTED,r.db.LINETYPE.STICK_TOP_DOTTED,r.db.LINETYPE.STICK_BOTTOM_DOTTED,r.db.LINETYPE.SOLID_ARROW_TOP_REVERSE,r.db.LINETYPE.SOLID_ARROW_BOTTOM_REVERSE,r.db.LINETYPE.STICK_ARROW_TOP_REVERSE,r.db.LINETYPE.STICK_ARROW_BOTTOM_REVERSE,r.db.LINETYPE.SOLID_ARROW_TOP_REVERSE_DOTTED,r.db.LINETYPE.SOLID_ARROW_BOTTOM_REVERSE_DOTTED,r.db.LINETYPE.STICK_ARROW_TOP_REVERSE_DOTTED,r.db.LINETYPE.STICK_ARROW_BOTTOM_REVERSE_DOTTED,r.db.LINETYPE.DOTTED,r.db.LINETYPE.SOLID_CROSS,r.db.LINETYPE.DOTTED_CROSS,r.db.LINETYPE.SOLID_POINT,r.db.LINETYPE.DOTTED_POINT,r.db.LINETYPE.BIDIRECTIONAL_SOLID,r.db.LINETYPE.BIDIRECTIONAL_DOTTED].includes(e.type))return{};let[n,a]=p6e(e.from,t),[s,l]=p6e(e.to,t),u=n<=s,h=u?a:n,d=u?s:l;i==="neo"&&(e.type!==r.db.LINETYPE.SOLID_OPEN&&(d+=u?-3:3),(e.type===r.db.LINETYPE.BIDIRECTIONAL_SOLID||e.type===r.db.LINETYPE.BIDIRECTIONAL_DOTTED)&&(h+=u?3:-3)),h+=fCt(e,r,u);let f=Math.abs(s-l)>2,p=o(v=>u?-v:v,"adjustValue");e.from===e.to?d=h:(e.activate&&!f&&(d+=p(We.activationWidth/2-1)),[r.db.LINETYPE.SOLID_OPEN,r.db.LINETYPE.DOTTED_OPEN,r.db.LINETYPE.STICK_TOP,r.db.LINETYPE.STICK_BOTTOM,r.db.LINETYPE.STICK_TOP_DOTTED,r.db.LINETYPE.STICK_BOTTOM_DOTTED,r.db.LINETYPE.SOLID_ARROW_TOP_REVERSE_DOTTED,r.db.LINETYPE.SOLID_ARROW_BOTTOM_REVERSE_DOTTED,r.db.LINETYPE.STICK_ARROW_TOP_REVERSE,r.db.LINETYPE.STICK_ARROW_BOTTOM_REVERSE,r.db.LINETYPE.STICK_ARROW_TOP_REVERSE_DOTTED,r.db.LINETYPE.STICK_ARROW_BOTTOM_REVERSE_DOTTED,r.db.LINETYPE.SOLID_ARROW_TOP_REVERSE,r.db.LINETYPE.SOLID_ARROW_BOTTOM_REVERSE].includes(e.type)||(d+=p(3)),[r.db.LINETYPE.BIDIRECTIONAL_SOLID,r.db.LINETYPE.BIDIRECTIONAL_DOTTED,r.db.LINETYPE.SOLID_ARROW_TOP_REVERSE_DOTTED,r.db.LINETYPE.SOLID_ARROW_BOTTOM_REVERSE_DOTTED,r.db.LINETYPE.SOLID_ARROW_TOP_REVERSE,r.db.LINETYPE.SOLID_ARROW_BOTTOM_REVERSE].includes(e.type)&&(h-=p(3)));let m=[n,a,s,l],g=Math.abs(h-d);e.wrap&&e.message&&(e.message=Zt.wrapLabel(e.message,vt.getMax(g+2*We.wrapPadding,We.width),ym(We)));let y=Zt.calculateTextDimensions(e.message,ym(We));return{width:vt.getMax(e.wrap?0:y.width+2*We.wrapPadding,g+2*We.wrapPadding,We.width),height:0,startx:h,stopx:d,starty:0,stopy:0,message:e.message,type:e.type,wrap:e.wrap,fromBounds:Math.min.apply(null,m),toBounds:Math.max.apply(null,m)}},"buildMessageModel"),gCt=o(async function(e,t,r,i){let n={},a=[],s,l,u;for(let h of e){switch(h.type){case i.db.LINETYPE.LOOP_START:case i.db.LINETYPE.ALT_START:case i.db.LINETYPE.OPT_START:case i.db.LINETYPE.PAR_START:case i.db.LINETYPE.PAR_OVER_START:case i.db.LINETYPE.CRITICAL_START:case i.db.LINETYPE.BREAK_START:a.push({id:h.id,msg:h.message,from:Number.MAX_SAFE_INTEGER,to:Number.MIN_SAFE_INTEGER,width:0});break;case i.db.LINETYPE.ALT_ELSE:case i.db.LINETYPE.PAR_AND:case i.db.LINETYPE.CRITICAL_OPTION:h.message&&(s=a.pop(),n[s.id]=s,n[h.id]=s,a.push(s));break;case i.db.LINETYPE.LOOP_END:case i.db.LINETYPE.ALT_END:case i.db.LINETYPE.OPT_END:case i.db.LINETYPE.PAR_END:case i.db.LINETYPE.CRITICAL_END:case i.db.LINETYPE.BREAK_END:s=a.pop(),n[s.id]=s;break;case i.db.LINETYPE.ACTIVE_START:{let f=t.get(h.from?h.from:h.to.actor),p=H6(h.from?h.from:h.to.actor).length,m=f.x+f.width/2+(p-1)*We.activationWidth/2,g={startx:m,stopx:m+We.activationWidth,actor:h.from,enabled:!0};bt.activations.push(g)}break;case i.db.LINETYPE.ACTIVE_END:{let f=bt.activations.map(p=>p.actor).lastIndexOf(h.from);bt.activations.splice(f,1).splice(0,1)}break}h.placement!==void 0?(l=await uCt(h,t,i),h.noteModel=l,a.forEach(f=>{s=f,s.from=vt.getMin(s.from,l.startx),s.to=vt.getMax(s.to,l.startx+l.width),s.width=vt.getMax(s.width,Math.abs(s.from-s.to))-We.labelBoxWidth})):(u=mCt(h,t,i),h.msgModel=u,u.startx&&u.stopx&&a.length>0&&a.forEach(f=>{if(s=f,u.startx===u.stopx){let p=t.get(h.from),m=t.get(h.to);s.from=vt.getMin(p.x-u.width/2,p.x-p.width/2,s.from),s.to=vt.getMax(m.x+u.width/2,m.x+p.width/2,s.to),s.width=vt.getMax(s.width,Math.abs(s.to-s.from))-We.labelBoxWidth}else s.from=vt.getMin(u.startx,s.from),s.to=vt.getMax(u.stopx,s.to),s.width=vt.getMax(s.width,u.width)-We.labelBoxWidth}))}return bt.activations=[],Z.debug("Loop type widths:",n),n},"calculateLoopBounds"),v6e={bounds:bt,drawActors:uW,drawActorsPopup:m6e,setConf:g6e,draw:sCt}});var b6e={};xr(b6e,{diagram:()=>yCt});var yCt,T6e=z(()=>{"use strict";s6e();aW();l6e();Ut();x6e();yCt={parser:a6e,get db(){return new W6},renderer:v6e,styles:o6e,init:o(e=>{e.sequence||(e.sequence={}),e.wrap&&(e.sequence.wrap=e.wrap,Sv({sequence:{wrap:e.wrap}}))},"init")}});var hW,Y6,dW=z(()=>{"use strict";hW=(function(){var e=o(function(qe,Ue,ye,ve){for(ye=ye||{},ve=qe.length;ve--;ye[qe[ve]]=Ue);return ye},"o"),t=[1,18],r=[1,19],i=[1,20],n=[1,41],a=[1,26],s=[1,42],l=[1,24],u=[1,25],h=[1,32],d=[1,33],f=[1,34],p=[1,45],m=[1,35],g=[1,36],y=[1,37],v=[1,38],x=[1,27],b=[1,28],T=[1,29],w=[1,30],C=[1,31],k=[1,44],E=[1,46],A=[1,43],N=[1,47],P=[1,9],I=[1,8,9],D=[1,58],_=[1,59],R=[1,60],M=[1,61],L=[1,62],B=[1,63],O=[1,64],$=[1,8,9,41],G=[1,77],F=[1,8,9,12,13,22,39,41,44,46,68,69,70,71,72,73,74,79,81],V=[1,8,9,12,13,18,20,22,39,41,44,46,47,60,68,69,70,71,72,73,74,79,81,86,100,102,103],H=[13,60,86,100,102,103],j=[13,60,73,74,86,100,102,103],U=[13,60,68,69,70,71,72,86,100,102,103],Q=[1,103],Y=[1,121],ae=[1,117],J=[1,113],te=[1,119],re=[1,114],ee=[1,115],Te=[1,116],ue=[1,118],De=[1,120],Ie=[22,50,60,61,82,86,87,88,89,90],Ee=[1,128],we=[12,39],Me=[1,8,9,39,41,44,46],$e=[1,8,9,22],de=[1,153],rt=[1,8,9,61],ke=[1,8,9,22,50,60,61,82,86,87,88,89,90],Fe={trace:o(function(){},"trace"),yy:{},symbols_:{error:2,start:3,mermaidDoc:4,statements:5,graphConfig:6,CLASS_DIAGRAM:7,NEWLINE:8,EOF:9,statement:10,classLabel:11,SQS:12,STR:13,SQE:14,namespaceName:15,alphaNumToken:16,classLiteralName:17,DOT:18,className:19,GENERICTYPE:20,relationStatement:21,LABEL:22,namespaceStatement:23,classStatement:24,memberStatement:25,annotationStatement:26,clickStatement:27,styleStatement:28,cssClassStatement:29,noteStatement:30,classDefStatement:31,direction:32,acc_title:33,acc_title_value:34,acc_descr:35,acc_descr_value:36,acc_descr_multiline_value:37,namespaceIdentifier:38,STRUCT_START:39,classStatements:40,STRUCT_STOP:41,NAMESPACE:42,classIdentifier:43,STYLE_SEPARATOR:44,members:45,ANNOTATION_START:46,ANNOTATION_END:47,CLASS:48,emptyBody:49,SPACE:50,MEMBER:51,SEPARATOR:52,relation:53,NOTE_FOR:54,noteText:55,NOTE:56,CLASSDEF:57,classList:58,stylesOpt:59,ALPHA:60,COMMA:61,direction_tb:62,direction_bt:63,direction_rl:64,direction_lr:65,relationType:66,lineType:67,AGGREGATION:68,EXTENSION:69,COMPOSITION:70,DEPENDENCY:71,LOLLIPOP:72,LINE:73,DOTTED_LINE:74,CALLBACK:75,LINK:76,LINK_TARGET:77,CLICK:78,CALLBACK_NAME:79,CALLBACK_ARGS:80,HREF:81,STYLE:82,CSSCLASS:83,style:84,styleComponent:85,NUM:86,COLON:87,UNIT:88,BRKT:89,PCT:90,commentToken:91,textToken:92,graphCodeTokens:93,textNoTagsToken:94,TAGSTART:95,TAGEND:96,"==":97,"--":98,DEFAULT:99,MINUS:100,keywords:101,UNICODE_TEXT:102,BQUOTE_STR:103,$accept:0,$end:1},terminals_:{2:"error",7:"CLASS_DIAGRAM",8:"NEWLINE",9:"EOF",12:"SQS",13:"STR",14:"SQE",18:"DOT",20:"GENERICTYPE",22:"LABEL",33:"acc_title",34:"acc_title_value",35:"acc_descr",36:"acc_descr_value",37:"acc_descr_multiline_value",39:"STRUCT_START",41:"STRUCT_STOP",42:"NAMESPACE",44:"STYLE_SEPARATOR",46:"ANNOTATION_START",47:"ANNOTATION_END",48:"CLASS",50:"SPACE",51:"MEMBER",52:"SEPARATOR",54:"NOTE_FOR",56:"NOTE",57:"CLASSDEF",60:"ALPHA",61:"COMMA",62:"direction_tb",63:"direction_bt",64:"direction_rl",65:"direction_lr",68:"AGGREGATION",69:"EXTENSION",70:"COMPOSITION",71:"DEPENDENCY",72:"LOLLIPOP",73:"LINE",74:"DOTTED_LINE",75:"CALLBACK",76:"LINK",77:"LINK_TARGET",78:"CLICK",79:"CALLBACK_NAME",80:"CALLBACK_ARGS",81:"HREF",82:"STYLE",83:"CSSCLASS",86:"NUM",87:"COLON",88:"UNIT",89:"BRKT",90:"PCT",93:"graphCodeTokens",95:"TAGSTART",96:"TAGEND",97:"==",98:"--",99:"DEFAULT",100:"MINUS",101:"keywords",102:"UNICODE_TEXT",103:"BQUOTE_STR"},productions_:[0,[3,1],[3,1],[4,1],[6,4],[5,1],[5,2],[5,3],[11,3],[15,1],[15,1],[15,3],[15,2],[19,1],[19,3],[19,1],[19,2],[19,2],[19,2],[10,1],[10,2],[10,1],[10,1],[10,1],[10,1],[10,1],[10,1],[10,1],[10,1],[10,1],[10,1],[10,2],[10,2],[10,1],[23,4],[23,5],[38,2],[38,3],[40,1],[40,2],[40,3],[40,1],[40,2],[40,3],[40,1],[40,2],[40,3],[24,1],[24,3],[24,4],[24,3],[24,6],[24,4],[24,7],[24,6],[43,2],[43,3],[49,0],[49,2],[49,2],[26,4],[45,1],[45,2],[25,1],[25,2],[25,1],[25,1],[21,3],[21,4],[21,4],[21,5],[30,3],[30,2],[31,3],[58,1],[58,3],[32,1],[32,1],[32,1],[32,1],[53,3],[53,2],[53,2],[53,1],[66,1],[66,1],[66,1],[66,1],[66,1],[67,1],[67,1],[27,3],[27,4],[27,3],[27,4],[27,4],[27,5],[27,3],[27,4],[27,4],[27,5],[27,4],[27,5],[27,5],[27,6],[28,3],[29,3],[59,1],[59,3],[84,1],[84,2],[85,1],[85,1],[85,1],[85,1],[85,1],[85,1],[85,1],[85,1],[85,1],[91,1],[91,1],[92,1],[92,1],[92,1],[92,1],[92,1],[92,1],[92,1],[94,1],[94,1],[94,1],[94,1],[16,1],[16,1],[16,1],[16,1],[17,1],[55,1]],performAction:o(function(Ue,ye,ve,ie,fe,W,ce){var K=W.length-1;switch(fe){case 8:this.$=W[K-1];break;case 9:case 10:case 13:case 15:this.$=W[K];break;case 11:case 14:this.$=W[K-2]+"."+W[K];break;case 12:case 16:this.$=W[K-1]+W[K];break;case 17:case 18:this.$=W[K-1]+"~"+W[K]+"~";break;case 19:ie.addRelation(W[K]);break;case 20:W[K-1].title=ie.cleanupLabel(W[K]),ie.addRelation(W[K-1]);break;case 31:this.$=W[K].trim(),ie.setAccTitle(this.$);break;case 32:case 33:this.$=W[K].trim(),ie.setAccDescription(this.$);break;case 34:ie.addClassesToNamespace(W[K-3],W[K-1][0],W[K-1][1]),ie.popNamespace();break;case 35:ie.addClassesToNamespace(W[K-4],W[K-1][0],W[K-1][1]),ie.popNamespace();break;case 36:this.$=ie.addNamespace(W[K]);break;case 37:this.$=ie.addNamespace(W[K-1],W[K]);break;case 38:this.$=[[W[K]],[]];break;case 39:this.$=[[W[K-1]],[]];break;case 40:W[K][0].unshift(W[K-2]),this.$=W[K];break;case 41:this.$=[[],[W[K]]];break;case 42:this.$=[[],[W[K-1]]];break;case 43:W[K][1].unshift(W[K-2]),this.$=W[K];break;case 44:case 45:this.$=[[],[]];break;case 46:this.$=W[K];break;case 48:ie.setCssClass(W[K-2],W[K]);break;case 49:ie.addMembers(W[K-3],W[K-1]);break;case 51:ie.setCssClass(W[K-5],W[K-3]),ie.addMembers(W[K-5],W[K-1]);break;case 52:ie.addAnnotation(W[K-3],W[K-1]);break;case 53:ie.addAnnotation(W[K-6],W[K-4]),ie.addMembers(W[K-6],W[K-1]);break;case 54:ie.addAnnotation(W[K-5],W[K-3]);break;case 55:this.$=W[K],ie.addClass(W[K]);break;case 56:this.$=W[K-1],ie.addClass(W[K-1]),ie.setClassLabel(W[K-1],W[K]);break;case 60:ie.addAnnotation(W[K],W[K-2]);break;case 61:case 74:this.$=[W[K]];break;case 62:W[K].push(W[K-1]),this.$=W[K];break;case 63:break;case 64:ie.addMember(W[K-1],ie.cleanupLabel(W[K]));break;case 65:break;case 66:break;case 67:this.$={id1:W[K-2],id2:W[K],relation:W[K-1],relationTitle1:"none",relationTitle2:"none"};break;case 68:this.$={id1:W[K-3],id2:W[K],relation:W[K-1],relationTitle1:W[K-2],relationTitle2:"none"};break;case 69:this.$={id1:W[K-3],id2:W[K],relation:W[K-2],relationTitle1:"none",relationTitle2:W[K-1]};break;case 70:this.$={id1:W[K-4],id2:W[K],relation:W[K-2],relationTitle1:W[K-3],relationTitle2:W[K-1]};break;case 71:this.$=ie.addNote(W[K],W[K-1]);break;case 72:this.$=ie.addNote(W[K]);break;case 73:this.$=W[K-2],ie.defineClass(W[K-1],W[K]);break;case 75:this.$=W[K-2].concat([W[K]]);break;case 76:ie.setDirection("TB");break;case 77:ie.setDirection("BT");break;case 78:ie.setDirection("RL");break;case 79:ie.setDirection("LR");break;case 80:this.$={type1:W[K-2],type2:W[K],lineType:W[K-1]};break;case 81:this.$={type1:"none",type2:W[K],lineType:W[K-1]};break;case 82:this.$={type1:W[K-1],type2:"none",lineType:W[K]};break;case 83:this.$={type1:"none",type2:"none",lineType:W[K]};break;case 84:this.$=ie.relationType.AGGREGATION;break;case 85:this.$=ie.relationType.EXTENSION;break;case 86:this.$=ie.relationType.COMPOSITION;break;case 87:this.$=ie.relationType.DEPENDENCY;break;case 88:this.$=ie.relationType.LOLLIPOP;break;case 89:this.$=ie.lineType.LINE;break;case 90:this.$=ie.lineType.DOTTED_LINE;break;case 91:case 97:this.$=W[K-2],ie.setClickEvent(W[K-1],W[K]);break;case 92:case 98:this.$=W[K-3],ie.setClickEvent(W[K-2],W[K-1]),ie.setTooltip(W[K-2],W[K]);break;case 93:this.$=W[K-2],ie.setLink(W[K-1],W[K]);break;case 94:this.$=W[K-3],ie.setLink(W[K-2],W[K-1],W[K]);break;case 95:this.$=W[K-3],ie.setLink(W[K-2],W[K-1]),ie.setTooltip(W[K-2],W[K]);break;case 96:this.$=W[K-4],ie.setLink(W[K-3],W[K-2],W[K]),ie.setTooltip(W[K-3],W[K-1]);break;case 99:this.$=W[K-3],ie.setClickEvent(W[K-2],W[K-1],W[K]);break;case 100:this.$=W[K-4],ie.setClickEvent(W[K-3],W[K-2],W[K-1]),ie.setTooltip(W[K-3],W[K]);break;case 101:this.$=W[K-3],ie.setLink(W[K-2],W[K]);break;case 102:this.$=W[K-4],ie.setLink(W[K-3],W[K-1],W[K]);break;case 103:this.$=W[K-4],ie.setLink(W[K-3],W[K-1]),ie.setTooltip(W[K-3],W[K]);break;case 104:this.$=W[K-5],ie.setLink(W[K-4],W[K-2],W[K]),ie.setTooltip(W[K-4],W[K-1]);break;case 105:this.$=W[K-2],ie.setCssStyle(W[K-1],W[K]);break;case 106:ie.setCssClass(W[K-1],W[K]);break;case 107:this.$=[W[K]];break;case 108:W[K-2].push(W[K]),this.$=W[K-2];break;case 110:this.$=W[K-1]+W[K];break}},"anonymous"),table:[{3:1,4:2,5:3,6:4,7:[1,6],10:5,16:39,17:40,19:21,21:7,23:8,24:9,25:10,26:11,27:12,28:13,29:14,30:15,31:16,32:17,33:t,35:r,37:i,38:22,42:n,43:23,46:a,48:s,51:l,52:u,54:h,56:d,57:f,60:p,62:m,63:g,64:y,65:v,75:x,76:b,78:T,82:w,83:C,86:k,100:E,102:A,103:N},{1:[3]},{1:[2,1]},{1:[2,2]},{1:[2,3]},e(P,[2,5],{8:[1,48]}),{8:[1,49]},e(I,[2,19],{22:[1,50]}),e(I,[2,21]),e(I,[2,22]),e(I,[2,23]),e(I,[2,24]),e(I,[2,25]),e(I,[2,26]),e(I,[2,27]),e(I,[2,28]),e(I,[2,29]),e(I,[2,30]),{34:[1,51]},{36:[1,52]},e(I,[2,33]),e(I,[2,63],{53:53,66:56,67:57,13:[1,54],22:[1,55],68:D,69:_,70:R,71:M,72:L,73:B,74:O}),{39:[1,65]},e($,[2,47],{39:[1,67],44:[1,66],46:[1,68]}),e(I,[2,65]),e(I,[2,66]),{16:69,60:p,86:k,100:E,102:A},{16:39,17:40,19:70,60:p,86:k,100:E,102:A,103:N},{16:39,17:40,19:71,60:p,86:k,100:E,102:A,103:N},{16:39,17:40,19:72,60:p,86:k,100:E,102:A,103:N},{60:[1,73]},{13:[1,74]},{16:39,17:40,19:75,60:p,86:k,100:E,102:A,103:N},{13:G,55:76},{58:78,60:[1,79]},e(I,[2,76]),e(I,[2,77]),e(I,[2,78]),e(I,[2,79]),e(F,[2,13],{16:39,17:40,19:81,18:[1,80],20:[1,82],60:p,86:k,100:E,102:A,103:N}),e(F,[2,15],{20:[1,83]}),{15:84,16:85,17:86,60:p,86:k,100:E,102:A,103:N},{16:39,17:40,19:87,60:p,86:k,100:E,102:A,103:N},e(V,[2,133]),e(V,[2,134]),e(V,[2,135]),e(V,[2,136]),e([1,8,9,12,13,20,22,39,41,44,46,68,69,70,71,72,73,74,79,81],[2,137]),e(P,[2,6],{10:5,21:7,23:8,24:9,25:10,26:11,27:12,28:13,29:14,30:15,31:16,32:17,19:21,38:22,43:23,16:39,17:40,5:88,33:t,35:r,37:i,42:n,46:a,48:s,51:l,52:u,54:h,56:d,57:f,60:p,62:m,63:g,64:y,65:v,75:x,76:b,78:T,82:w,83:C,86:k,100:E,102:A,103:N}),{5:89,10:5,16:39,17:40,19:21,21:7,23:8,24:9,25:10,26:11,27:12,28:13,29:14,30:15,31:16,32:17,33:t,35:r,37:i,38:22,42:n,43:23,46:a,48:s,51:l,52:u,54:h,56:d,57:f,60:p,62:m,63:g,64:y,65:v,75:x,76:b,78:T,82:w,83:C,86:k,100:E,102:A,103:N},e(I,[2,20]),e(I,[2,31]),e(I,[2,32]),{13:[1,91],16:39,17:40,19:90,60:p,86:k,100:E,102:A,103:N},{53:92,66:56,67:57,68:D,69:_,70:R,71:M,72:L,73:B,74:O},e(I,[2,64]),{67:93,73:B,74:O},e(H,[2,83],{66:94,68:D,69:_,70:R,71:M,72:L}),e(j,[2,84]),e(j,[2,85]),e(j,[2,86]),e(j,[2,87]),e(j,[2,88]),e(U,[2,89]),e(U,[2,90]),{8:[1,96],23:99,24:97,30:98,38:22,40:95,42:n,43:23,48:s,54:h,56:d},{16:100,60:p,86:k,100:E,102:A},{41:[1,102],45:101,51:Q},{16:104,60:p,86:k,100:E,102:A},{47:[1,105]},{13:[1,106]},{13:[1,107]},{79:[1,108],81:[1,109]},{22:Y,50:ae,59:110,60:J,82:te,84:111,85:112,86:re,87:ee,88:Te,89:ue,90:De},{60:[1,122]},{13:G,55:123},e($,[2,72]),e($,[2,138]),{22:Y,50:ae,59:124,60:J,61:[1,125],82:te,84:111,85:112,86:re,87:ee,88:Te,89:ue,90:De},e(Ie,[2,74]),{16:39,17:40,19:126,60:p,86:k,100:E,102:A,103:N},e(F,[2,16]),e(F,[2,17]),e(F,[2,18]),{11:127,12:Ee,39:[2,36]},e(we,[2,9],{16:85,17:86,15:130,18:[1,129],60:p,86:k,100:E,102:A,103:N}),e(we,[2,10]),e(Me,[2,55],{11:131,12:Ee}),e(P,[2,7]),{9:[1,132]},e($e,[2,67]),{16:39,17:40,19:133,60:p,86:k,100:E,102:A,103:N},{13:[1,135],16:39,17:40,19:134,60:p,86:k,100:E,102:A,103:N},e(H,[2,82],{66:136,68:D,69:_,70:R,71:M,72:L}),e(H,[2,81]),{41:[1,137]},{23:99,24:97,30:98,38:22,40:138,42:n,43:23,48:s,54:h,56:d},{8:[1,139],41:[2,38]},{8:[1,140],41:[2,41]},{8:[1,141],41:[2,44]},e($,[2,48],{39:[1,142]}),{41:[1,143]},e($,[2,50]),{41:[2,61],45:144,51:Q},{47:[1,145]},{16:39,17:40,19:146,60:p,86:k,100:E,102:A,103:N},e(I,[2,91],{13:[1,147]}),e(I,[2,93],{13:[1,149],77:[1,148]}),e(I,[2,97],{13:[1,150],80:[1,151]}),{13:[1,152]},e(I,[2,105],{61:de}),e(rt,[2,107],{85:154,22:Y,50:ae,60:J,82:te,86:re,87:ee,88:Te,89:ue,90:De}),e(ke,[2,109]),e(ke,[2,111]),e(ke,[2,112]),e(ke,[2,113]),e(ke,[2,114]),e(ke,[2,115]),e(ke,[2,116]),e(ke,[2,117]),e(ke,[2,118]),e(ke,[2,119]),e(I,[2,106]),e($,[2,71]),e(I,[2,73],{61:de}),{60:[1,155]},e(F,[2,14]),{39:[2,37]},{13:[1,156]},{15:157,16:85,17:86,60:p,86:k,100:E,102:A,103:N},e(we,[2,12]),e(Me,[2,56]),{1:[2,4]},e($e,[2,69]),e($e,[2,68]),{16:39,17:40,19:158,60:p,86:k,100:E,102:A,103:N},e(H,[2,80]),e($,[2,34]),{41:[1,159]},{23:99,24:97,30:98,38:22,40:160,41:[2,39],42:n,43:23,48:s,54:h,56:d},{23:99,24:97,30:98,38:22,40:161,41:[2,42],42:n,43:23,48:s,54:h,56:d},{23:99,24:97,30:98,38:22,40:162,41:[2,45],42:n,43:23,48:s,54:h,56:d},{45:163,51:Q},e($,[2,49]),{41:[2,62]},e($,[2,52],{39:[1,164]}),e(I,[2,60]),e(I,[2,92]),e(I,[2,94]),e(I,[2,95],{77:[1,165]}),e(I,[2,98]),e(I,[2,99],{13:[1,166]}),e(I,[2,101],{13:[1,168],77:[1,167]}),{22:Y,50:ae,60:J,82:te,84:169,85:112,86:re,87:ee,88:Te,89:ue,90:De},e(ke,[2,110]),e(Ie,[2,75]),{14:[1,170]},e(we,[2,11]),e($e,[2,70]),e($,[2,35]),{41:[2,40]},{41:[2,43]},{41:[2,46]},{41:[1,171]},{41:[1,173],45:172,51:Q},e(I,[2,96]),e(I,[2,100]),e(I,[2,102]),e(I,[2,103],{77:[1,174]}),e(rt,[2,108],{85:154,22:Y,50:ae,60:J,82:te,86:re,87:ee,88:Te,89:ue,90:De}),e(Me,[2,8]),e($,[2,51]),{41:[1,175]},e($,[2,54]),e(I,[2,104]),e($,[2,53])],defaultActions:{2:[2,1],3:[2,2],4:[2,3],127:[2,37],132:[2,4],144:[2,62],160:[2,40],161:[2,43],162:[2,46]},parseError:o(function(Ue,ye){if(ye.recoverable)this.trace(Ue);else{var ve=new Error(Ue);throw ve.hash=ye,ve}},"parseError"),parse:o(function(Ue){var ye=this,ve=[0],ie=[],fe=[null],W=[],ce=this.table,K="",Re=0,xe=0,Oe=0,be=2,Be=1,Ae=W.slice.call(arguments,1),Ve=Object.create(this.lexer),Pe={yy:{}};for(var Ye in this.yy)Object.prototype.hasOwnProperty.call(this.yy,Ye)&&(Pe.yy[Ye]=this.yy[Ye]);Ve.setInput(Ue,Pe.yy),Pe.yy.lexer=Ve,Pe.yy.parser=this,typeof Ve.yylloc>"u"&&(Ve.yylloc={});var le=Ve.yylloc;W.push(le);var st=Ve.options&&Ve.options.ranges;typeof Pe.yy.parseError=="function"?this.parseError=Pe.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function me(dt){ve.length=ve.length-2*dt,fe.length=fe.length-dt,W.length=W.length-dt}o(me,"popStack");function ot(){var dt;return dt=ie.pop()||Ve.lex()||Be,typeof dt!="number"&&(dt instanceof Array&&(ie=dt,dt=ie.pop()),dt=ye.symbols_[dt]||dt),dt}o(ot,"lex");for(var kt,Gt,Tt,Et,yt,oe,ht={},gt,et,pe,Qe;;){if(Tt=ve[ve.length-1],this.defaultActions[Tt]?Et=this.defaultActions[Tt]:((kt===null||typeof kt>"u")&&(kt=ot()),Et=ce[Tt]&&ce[Tt][kt]),typeof Et>"u"||!Et.length||!Et[0]){var nt="";Qe=[];for(gt in ce[Tt])this.terminals_[gt]&&gt>be&&Qe.push("'"+this.terminals_[gt]+"'");Ve.showPosition?nt="Parse error on line "+(Re+1)+`:
-`+Ve.showPosition()+`
-Expecting `+Qe.join(", ")+", got '"+(this.terminals_[kt]||kt)+"'":nt="Parse error on line "+(Re+1)+": Unexpected "+(kt==Be?"end of input":"'"+(this.terminals_[kt]||kt)+"'"),this.parseError(nt,{text:Ve.match,token:this.terminals_[kt]||kt,line:Ve.yylineno,loc:le,expected:Qe})}if(Et[0]instanceof Array&&Et.length>1)throw new Error("Parse Error: multiple actions possible at state: "+Tt+", token: "+kt);switch(Et[0]){case 1:ve.push(kt),fe.push(Ve.yytext),W.push(Ve.yylloc),ve.push(Et[1]),kt=null,Gt?(kt=Gt,Gt=null):(xe=Ve.yyleng,K=Ve.yytext,Re=Ve.yylineno,le=Ve.yylloc,Oe>0&&Oe--);break;case 2:if(et=this.productions_[Et[1]][1],ht.$=fe[fe.length-et],ht._$={first_line:W[W.length-(et||1)].first_line,last_line:W[W.length-1].last_line,first_column:W[W.length-(et||1)].first_column,last_column:W[W.length-1].last_column},st&&(ht._$.range=[W[W.length-(et||1)].range[0],W[W.length-1].range[1]]),oe=this.performAction.apply(ht,[K,xe,Re,Pe.yy,Et[1],fe,W].concat(Ae)),typeof oe<"u")return oe;et&&(ve=ve.slice(0,-1*et*2),fe=fe.slice(0,-1*et),W=W.slice(0,-1*et)),ve.push(this.productions_[Et[1]][0]),fe.push(ht.$),W.push(ht._$),pe=ce[ve[ve.length-2]][ve[ve.length-1]],ve.push(pe);break;case 3:return!0}}return!0},"parse")},He=(function(){var qe={EOF:1,parseError:o(function(ye,ve){if(this.yy.parser)this.yy.parser.parseError(ye,ve);else throw new Error(ye)},"parseError"),setInput:o(function(Ue,ye){return this.yy=ye||this.yy||{},this._input=Ue,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},"setInput"),input:o(function(){var Ue=this._input[0];this.yytext+=Ue,this.yyleng++,this.offset++,this.match+=Ue,this.matched+=Ue;var ye=Ue.match(/(?:\r\n?|\n).*/g);return ye?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),Ue},"input"),unput:o(function(Ue){var ye=Ue.length,ve=Ue.split(/(?:\r\n?|\n)/g);this._input=Ue+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-ye),this.offset-=ye;var ie=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),ve.length-1&&(this.yylineno-=ve.length-1);var fe=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:ve?(ve.length===ie.length?this.yylloc.first_column:0)+ie[ie.length-ve.length].length-ve[0].length:this.yylloc.first_column-ye},this.options.ranges&&(this.yylloc.range=[fe[0],fe[0]+this.yyleng-ye]),this.yyleng=this.yytext.length,this},"unput"),more:o(function(){return this._more=!0,this},"more"),reject:o(function(){if(this.options.backtrack_lexer)this._backtrack=!0;else return this.parseError("Lexical error on line "+(this.yylineno+1)+`. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).
-`+this.showPosition(),{text:"",token:null,line:this.yylineno});return this},"reject"),less:o(function(Ue){this.unput(this.match.slice(Ue))},"less"),pastInput:o(function(){var Ue=this.matched.substr(0,this.matched.length-this.match.length);return(Ue.length>20?"...":"")+Ue.substr(-20).replace(/\n/g,"")},"pastInput"),upcomingInput:o(function(){var Ue=this.match;return Ue.length<20&&(Ue+=this._input.substr(0,20-Ue.length)),(Ue.substr(0,20)+(Ue.length>20?"...":"")).replace(/\n/g,"")},"upcomingInput"),showPosition:o(function(){var Ue=this.pastInput(),ye=new Array(Ue.length+1).join("-");return Ue+this.upcomingInput()+`
-`+ye+"^"},"showPosition"),test_match:o(function(Ue,ye){var ve,ie,fe;if(this.options.backtrack_lexer&&(fe={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(fe.yylloc.range=this.yylloc.range.slice(0))),ie=Ue[0].match(/(?:\r\n?|\n).*/g),ie&&(this.yylineno+=ie.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:ie?ie[ie.length-1].length-ie[ie.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+Ue[0].length},this.yytext+=Ue[0],this.match+=Ue[0],this.matches=Ue,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(Ue[0].length),this.matched+=Ue[0],ve=this.performAction.call(this,this.yy,this,ye,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),ve)return ve;if(this._backtrack){for(var W in fe)this[W]=fe[W];return!1}return!1},"test_match"),next:o(function(){if(this.done)return this.EOF;this._input||(this.done=!0);var Ue,ye,ve,ie;this._more||(this.yytext="",this.match="");for(var fe=this._currentRules(),W=0;W<fe.length;W++)if(ve=this._input.match(this.rules[fe[W]]),ve&&(!ye||ve[0].length>ye[0].length)){if(ye=ve,ie=W,this.options.backtrack_lexer){if(Ue=this.test_match(ve,fe[W]),Ue!==!1)return Ue;if(this._backtrack){ye=!1;continue}else return!1}else if(!this.options.flex)break}return ye?(Ue=this.test_match(ye,fe[ie]),Ue!==!1?Ue:!1):this._input===""?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+`. Unrecognized text.
-`+this.showPosition(),{text:"",token:null,line:this.yylineno})},"next"),lex:o(function(){var ye=this.next();return ye||this.lex()},"lex"),begin:o(function(ye){this.conditionStack.push(ye)},"begin"),popState:o(function(){var ye=this.conditionStack.length-1;return ye>0?this.conditionStack.pop():this.conditionStack[0]},"popState"),_currentRules:o(function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},"_currentRules"),topState:o(function(ye){return ye=this.conditionStack.length-1-Math.abs(ye||0),ye>=0?this.conditionStack[ye]:"INITIAL"},"topState"),pushState:o(function(ye){this.begin(ye)},"pushState"),stateStackSize:o(function(){return this.conditionStack.length},"stateStackSize"),options:{},performAction:o(function(ye,ve,ie,fe){var W=fe;switch(ie){case 0:return 62;case 1:return 63;case 2:return 64;case 3:return 65;case 4:break;case 5:break;case 6:return this.begin("acc_title"),33;break;case 7:return this.popState(),"acc_title_value";break;case 8:return this.begin("acc_descr"),35;break;case 9:return this.popState(),"acc_descr_value";break;case 10:this.begin("acc_descr_multiline");break;case 11:this.popState();break;case 12:return"acc_descr_multiline_value";case 13:return 8;case 14:break;case 15:return 7;case 16:return 7;case 17:return"EDGE_STATE";case 18:this.begin("callback_name");break;case 19:this.popState();break;case 20:this.popState(),this.begin("callback_args");break;case 21:return 79;case 22:this.popState();break;case 23:return 80;case 24:this.popState();break;case 25:return"STR";case 26:this.begin("string");break;case 27:return 82;case 28:return 57;case 29:return this.begin("namespace"),42;break;case 30:return this.popState(),8;break;case 31:break;case 32:return this.begin("namespace-body"),39;break;case 33:this.popState(),this.less(0);break;case 34:return this.popState(),41;break;case 35:return"EOF_IN_STRUCT";case 36:return 8;case 37:break;case 38:return"EDGE_STATE";case 39:return this.begin("class"),48;break;case 40:return this.popState(),8;break;case 41:break;case 42:return this.popState(),this.popState(),41;break;case 43:return this.begin("class-body"),39;break;case 44:return this.popState(),41;break;case 45:return"EOF_IN_STRUCT";case 46:return"EDGE_STATE";case 47:return"OPEN_IN_STRUCT";case 48:break;case 49:return"MEMBER";case 50:return 83;case 51:return 75;case 52:return 76;case 53:return 78;case 54:return 54;case 55:return 56;case 56:return 46;case 57:return 47;case 58:return 81;case 59:this.popState();break;case 60:return"GENERICTYPE";case 61:this.begin("generic");break;case 62:this.popState();break;case 63:return"BQUOTE_STR";case 64:this.begin("bqstring");break;case 65:return 77;case 66:return 77;case 67:return 77;case 68:return 77;case 69:return 69;case 70:return 69;case 71:return 71;case 72:return 71;case 73:return 70;case 74:return 68;case 75:return 72;case 76:return 73;case 77:return 74;case 78:return 22;case 79:return 44;case 80:return 100;case 81:return 18;case 82:return"PLUS";case 83:return 87;case 84:return 61;case 85:return 89;case 86:return 89;case 87:return 90;case 88:return"EQUALS";case 89:return"EQUALS";case 90:return 60;case 91:return 12;case 92:return 14;case 93:return"PUNCTUATION";case 94:return 86;case 95:return 102;case 96:return 50;case 97:return 50;case 98:return 9}},"anonymous"),rules:[/^(?:.*direction\s+TB[^\n]*)/,/^(?:.*direction\s+BT[^\n]*)/,/^(?:.*direction\s+RL[^\n]*)/,/^(?:.*direction\s+LR[^\n]*)/,/^(?:%%(?!\{)*[^\n]*(\r?\n?)+)/,/^(?:%%[^\n]*(\r?\n)*)/,/^(?:accTitle\s*:\s*)/,/^(?:(?!\n||)*[^\n]*)/,/^(?:accDescr\s*:\s*)/,/^(?:(?!\n||)*[^\n]*)/,/^(?:accDescr\s*\{\s*)/,/^(?:[\}])/,/^(?:[^\}]*)/,/^(?:\s*(\r?\n)+)/,/^(?:\s+)/,/^(?:classDiagram-v2\b)/,/^(?:classDiagram\b)/,/^(?:\[\*\])/,/^(?:call[\s]+)/,/^(?:\([\s]*\))/,/^(?:\()/,/^(?:[^(]*)/,/^(?:\))/,/^(?:[^)]*)/,/^(?:["])/,/^(?:[^"]*)/,/^(?:["])/,/^(?:style\b)/,/^(?:classDef\b)/,/^(?:namespace\b)/,/^(?:\s*(\r?\n)+)/,/^(?:\s+)/,/^(?:[{])/,/^(?:[}])/,/^(?:[}])/,/^(?:$)/,/^(?:\s*(\r?\n)+)/,/^(?:\s+)/,/^(?:\[\*\])/,/^(?:class\b)/,/^(?:\s*(\r?\n)+)/,/^(?:\s+)/,/^(?:[}])/,/^(?:[{])/,/^(?:[}])/,/^(?:$)/,/^(?:\[\*\])/,/^(?:[{])/,/^(?:[\n])/,/^(?:[^{}\n]*)/,/^(?:cssClass\b)/,/^(?:callback\b)/,/^(?:link\b)/,/^(?:click\b)/,/^(?:note for\b)/,/^(?:note\b)/,/^(?:<<)/,/^(?:>>)/,/^(?:href\b)/,/^(?:[~])/,/^(?:[^~]*)/,/^(?:~)/,/^(?:[`])/,/^(?:[^`]+)/,/^(?:[`])/,/^(?:_self\b)/,/^(?:_blank\b)/,/^(?:_parent\b)/,/^(?:_top\b)/,/^(?:\s*<\|)/,/^(?:\s*\|>)/,/^(?:\s*>)/,/^(?:\s*<)/,/^(?:\s*\*)/,/^(?:\s*o\b)/,/^(?:\s*\(\))/,/^(?:--)/,/^(?:\.\.)/,/^(?::{1}[^:\n;]+)/,/^(?::{3})/,/^(?:-)/,/^(?:\.)/,/^(?:\+)/,/^(?::)/,/^(?:,)/,/^(?:#)/,/^(?:#)/,/^(?:%)/,/^(?:=)/,/^(?:=)/,/^(?:\w+)/,/^(?:\[)/,/^(?:\])/,/^(?:[!"#$%&'*+,-.`?\\/])/,/^(?:[0-9]+)/,/^(?:[\u00AA\u00B5\u00BA\u00C0-\u00D6\u00D8-\u00F6]|[\u00F8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377]|[\u037A-\u037D\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5]|[\u03F7-\u0481\u048A-\u0527\u0531-\u0556\u0559\u0561-\u0587\u05D0-\u05EA]|[\u05F0-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE]|[\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA]|[\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u08A0]|[\u08A2-\u08AC\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0977]|[\u0979-\u097F\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2]|[\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u0A05-\u0A0A]|[\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39]|[\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8]|[\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0B05-\u0B0C]|[\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C]|[\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99]|[\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0]|[\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C33\u0C35-\u0C39\u0C3D]|[\u0C58\u0C59\u0C60\u0C61\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3]|[\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D05-\u0D0C\u0D0E-\u0D10]|[\u0D12-\u0D3A\u0D3D\u0D4E\u0D60\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1]|[\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81]|[\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3]|[\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6]|[\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A]|[\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081]|[\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D]|[\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0]|[\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310]|[\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F4\u1401-\u166C]|[\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u1700-\u170C\u170E-\u1711]|[\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7]|[\u17DC\u1820-\u1877\u1880-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191C]|[\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19C1-\u19C7\u1A00-\u1A16]|[\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4B\u1B83-\u1BA0\u1BAE\u1BAF]|[\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1CE9-\u1CEC]|[\u1CEE-\u1CF1\u1CF5\u1CF6\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D]|[\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D]|[\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3]|[\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F]|[\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128]|[\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2183\u2184]|[\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3]|[\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6]|[\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE]|[\u2DD0-\u2DD6\u2DD8-\u2DDE\u2E2F\u3005\u3006\u3031-\u3035\u303B\u303C]|[\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312D]|[\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FCC]|[\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B]|[\uA640-\uA66E\uA67F-\uA697\uA6A0-\uA6E5\uA717-\uA71F\uA722-\uA788]|[\uA78B-\uA78E\uA790-\uA793\uA7A0-\uA7AA\uA7F8-\uA801\uA803-\uA805]|[\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB]|[\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uAA00-\uAA28]|[\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA80-\uAAAF\uAAB1\uAAB5]|[\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4]|[\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E]|[\uABC0-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D]|[\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36]|[\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D]|[\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC]|[\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF]|[\uFFD2-\uFFD7\uFFDA-\uFFDC])/,/^(?:\s)/,/^(?:\s)/,/^(?:$)/],conditions:{"namespace-body":{rules:[26,29,34,35,36,37,38,39,50,51,52,53,54,55,56,57,58,61,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,87,88,89,90,91,92,93,94,95,96,98],inclusive:!1},namespace:{rules:[26,29,30,31,32,33,50,51,52,53,54,55,56,57,58,61,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,87,88,89,90,91,92,93,94,95,96,98],inclusive:!1},"class-body":{rules:[26,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,61,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,87,88,89,90,91,92,93,94,95,96,98],inclusive:!1},class:{rules:[26,40,41,42,43,50,51,52,53,54,55,56,57,58,61,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,87,88,89,90,91,92,93,94,95,96,98],inclusive:!1},acc_descr_multiline:{rules:[11,12,26,50,51,52,53,54,55,56,57,58,61,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,87,88,89,90,91,92,93,94,95,96,98],inclusive:!1},acc_descr:{rules:[9,26,50,51,52,53,54,55,56,57,58,61,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,87,88,89,90,91,92,93,94,95,96,98],inclusive:!1},acc_title:{rules:[7,26,50,51,52,53,54,55,56,57,58,61,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,87,88,89,90,91,92,93,94,95,96,98],inclusive:!1},callback_args:{rules:[22,23,26,50,51,52,53,54,55,56,57,58,61,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,87,88,89,90,91,92,93,94,95,96,98],inclusive:!1},callback_name:{rules:[19,20,21,26,50,51,52,53,54,55,56,57,58,61,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,87,88,89,90,91,92,93,94,95,96,98],inclusive:!1},href:{rules:[26,50,51,52,53,54,55,56,57,58,61,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,87,88,89,90,91,92,93,94,95,96,98],inclusive:!1},struct:{rules:[26,50,51,52,53,54,55,56,57,58,61,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,87,88,89,90,91,92,93,94,95,96,98],inclusive:!1},generic:{rules:[26,50,51,52,53,54,55,56,57,58,59,60,61,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,87,88,89,90,91,92,93,94,95,96,98],inclusive:!1},bqstring:{rules:[26,50,51,52,53,54,55,56,57,58,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,87,88,89,90,91,92,93,94,95,96,98],inclusive:!1},string:{rules:[24,25,26,50,51,52,53,54,55,56,57,58,61,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,87,88,89,90,91,92,93,94,95,96,98],inclusive:!1},INITIAL:{rules:[0,1,2,3,4,5,6,8,10,13,14,15,16,17,18,26,27,28,29,39,50,51,52,53,54,55,56,57,58,61,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98],inclusive:!0}}};return qe})();Fe.lexer=He;function at(){this.yy={}}return o(at,"Parser"),at.prototype=Fe,Fe.Parser=at,new at})();hW.parser=hW;Y6=hW});var w6e,ZT,S6e=z(()=>{"use strict";Ut();Ir();w6e=["#","+","~","-",""],ZT=class{static{o(this,"ClassMember")}constructor(t,r){this.memberType=r,this.visibility="",this.classifier="",this.text="";let i=fr(t,ge());this.parseMember(i)}getDisplayDetails(){let t=this.visibility+cc(this.id);this.memberType==="method"&&(t+=`(${cc(this.parameters.trim())})`,this.returnType&&(t+=" : "+cc(this.returnType))),t=t.trim();let r=this.parseClassifier();return{displayText:t,cssStyle:r}}parseMember(t){let r="";if(this.memberType==="method"){let a=/([#+~-])?(.+)\((.*)\)([\s$*])?(.*)([$*])?/.exec(t);if(a){let s=a[1]?a[1].trim():"";if(w6e.includes(s)&&(this.visibility=s),this.id=a[2],this.parameters=a[3]?a[3].trim():"",r=a[4]?a[4].trim():"",this.returnType=a[5]?a[5].trim():"",r===""){let l=this.returnType.substring(this.returnType.length-1);/[$*]/.exec(l)&&(r=l,this.returnType=this.returnType.substring(0,this.returnType.length-1))}}}else{let n=t.length,a=t.substring(0,1),s=t.substring(n-1);w6e.includes(a)&&(this.visibility=a),/[$*]/.exec(s)&&(r=s),this.id=t.substring(this.visibility===""?0:1,r===""?n:n-1)}this.classifier=r,this.id=this.id.startsWith(" ")?" "+this.id.trim():this.id.trim();let i=`${this.visibility?"\\"+this.visibility:""}${cc(this.id)}${this.memberType==="method"?`(${cc(this.parameters)})${this.returnType?" : "+cc(this.returnType):""}`:""}`;this.text=i.replaceAll("<","&lt;").replaceAll(">","&gt;"),this.text.startsWith("\\&lt;")&&(this.text=this.text.replace("\\&lt;","~"))}parseClassifier(){switch(this.classifier){case"*":return"font-style:italic;";case"$":return"text-decoration:underline;";default:return""}}}});var j6,E6e,vm,Cy,fW=z(()=>{"use strict";Rr();St();Ut();Ir();Xt();Ci();gp();S6e();uv();j6="classId-",E6e=0,vm=o(e=>vt.sanitizeText(e,ge()),"sanitizeText"),Cy=class e{constructor(){this.relations=[];this.classes=new Map;this.styleClasses=new Map;this.notes=new Map;this.interfaces=[];this.namespaces=new Map;this.namespaceCounter=0;this.namespaceStack=[];this.diagramId="";this.functions=[];this.lineType={LINE:0,DOTTED_LINE:1};this.relationType={AGGREGATION:0,EXTENSION:1,COMPOSITION:2,DEPENDENCY:3,LOLLIPOP:4};this.setupToolTips=o(t=>{let r=zw();Je(t).select("svg").selectAll("g").filter(function(){return Je(this).attr("title")!==null}).on("mouseover",a=>{let s=Je(a.currentTarget),l=s.attr("title");if(!l)return;let u=a.currentTarget.getBoundingClientRect();r.transition().duration(200).style("opacity",".9"),r.html(Ro.sanitize(l)).style("left",`${window.scrollX+u.left+u.width/2}px`).style("top",`${window.scrollY+u.bottom+4}px`),s.classed("hover",!0)}).on("mouseout",a=>{r.transition().duration(500).style("opacity",0),Je(a.currentTarget).classed("hover",!1)})},"setupToolTips");this.direction="TB";this.setAccTitle=Cr;this.getAccTitle=kr;this.setAccDescription=wr;this.getAccDescription=Sr;this.setDiagramTitle=Ar;this.getDiagramTitle=Er;this.getConfig=o(()=>ge().class,"getConfig");this.functions.push(this.setupToolTips.bind(this)),this.clear(),this.addRelation=this.addRelation.bind(this),this.addClassesToNamespace=this.addClassesToNamespace.bind(this),this.addNamespace=this.addNamespace.bind(this),this.popNamespace=this.popNamespace.bind(this),this.setCssClass=this.setCssClass.bind(this),this.addMembers=this.addMembers.bind(this),this.addClass=this.addClass.bind(this),this.setClassLabel=this.setClassLabel.bind(this),this.addAnnotation=this.addAnnotation.bind(this),this.addMember=this.addMember.bind(this),this.cleanupLabel=this.cleanupLabel.bind(this),this.addNote=this.addNote.bind(this),this.defineClass=this.defineClass.bind(this),this.setDirection=this.setDirection.bind(this),this.setLink=this.setLink.bind(this),this.bindFunctions=this.bindFunctions.bind(this),this.clear=this.clear.bind(this),this.setTooltip=this.setTooltip.bind(this),this.setClickEvent=this.setClickEvent.bind(this),this.setCssStyle=this.setCssStyle.bind(this)}static{o(this,"ClassDB")}splitClassNameAndType(t){let r=vt.sanitizeText(t,ge()),i="",n=r;if(r.indexOf("~")>0){let a=r.split("~");n=vm(a[0]),i=vm(a[1])}return{className:n,type:i}}setClassLabel(t,r){let i=vt.sanitizeText(t,ge());r&&(r=vm(r));let{className:n}=this.splitClassNameAndType(i);this.classes.get(n).label=r,this.classes.get(n).text=`${r}${this.classes.get(n).type?`<${this.classes.get(n).type}>`:""}`}addClass(t){let r=vt.sanitizeText(t,ge()),{className:i,type:n}=this.splitClassNameAndType(r);if(this.classes.has(i))return;let a=vt.sanitizeText(i,ge());this.classes.set(a,{id:a,type:n,label:a,text:`${a}${n?`&lt;${n}&gt;`:""}`,shape:"classBox",cssClasses:"default",methods:[],members:[],annotations:[],styles:[],domId:j6+a+"-"+E6e}),E6e++}addInterface(t,r){let i={id:`interface${this.interfaces.length}`,label:t,classId:r};this.interfaces.push(i)}setDiagramId(t){this.diagramId=t}lookUpDomId(t){let r=vt.sanitizeText(t,ge());if(this.classes.has(r)){let i=this.classes.get(r).domId;return this.diagramId?`${this.diagramId}-${i}`:i}throw new Error("Class not found: "+r)}clear(){this.relations=[],this.classes=new Map,this.notes=new Map,this.interfaces=[],this.functions=[],this.functions.push(this.setupToolTips.bind(this)),this.namespaces=new Map,this.namespaceCounter=0,this.namespaceStack=[],this.diagramId="",this.direction="TB",gr()}getClass(t){return this.classes.get(t)}getClasses(){return this.classes}getRelations(){return this.relations}getNote(t){let r=typeof t=="number"?`note${t}`:t;return this.notes.get(r)}getNotes(){return this.notes}addRelation(t){Z.debug("Adding relation: "+JSON.stringify(t));let r=[this.relationType.LOLLIPOP,this.relationType.AGGREGATION,this.relationType.COMPOSITION,this.relationType.DEPENDENCY,this.relationType.EXTENSION];t.relation.type1===this.relationType.LOLLIPOP&&!r.includes(t.relation.type2)?(this.addClass(t.id2),this.addInterface(t.id1,t.id2),t.id1=`interface${this.interfaces.length-1}`):t.relation.type2===this.relationType.LOLLIPOP&&!r.includes(t.relation.type1)?(this.addClass(t.id1),this.addInterface(t.id2,t.id1),t.id2=`interface${this.interfaces.length-1}`):(this.addClass(t.id1),this.addClass(t.id2)),t.id1=this.splitClassNameAndType(t.id1).className,t.id2=this.splitClassNameAndType(t.id2).className,t.relationTitle1=vt.sanitizeText(t.relationTitle1.trim(),ge()),t.relationTitle2=vt.sanitizeText(t.relationTitle2.trim(),ge()),this.relations.push(t)}addAnnotation(t,r){let i=this.splitClassNameAndType(t).className;this.classes.get(i).annotations.push(r)}addMember(t,r){this.addClass(t);let i=this.splitClassNameAndType(t).className,n=this.classes.get(i);if(typeof r=="string"){let a=r.trim();a.startsWith("<<")&&a.endsWith(">>")?n.annotations.push(vm(a.substring(2,a.length-2))):a.indexOf(")")>0?n.methods.push(new ZT(a,"method")):a&&n.members.push(new ZT(a,"attribute"))}}addMembers(t,r){Array.isArray(r)&&(r.reverse(),r.forEach(i=>this.addMember(t,i)))}addNote(t,r){let i=this.notes.size,n={id:`note${i}`,class:r,text:t,index:i};return this.notes.set(n.id,n),n.id}cleanupLabel(t){return t.startsWith(":")&&(t=t.substring(1)),vm(t.trim())}setCssClass(t,r){t.split(",").forEach(i=>{let n=i;/\d/.exec(i[0])&&(n=j6+n);let a=this.classes.get(n);a&&(a.cssClasses+=" "+r)})}defineClass(t,r){for(let i of t){let n=this.styleClasses.get(i);n===void 0&&(n={id:i,styles:[],textStyles:[]},this.styleClasses.set(i,n)),r&&r.forEach(a=>{if(/color/.exec(a)){let s=a.replace("fill","bgFill");n.textStyles.push(s)}n.styles.push(a)}),this.classes.forEach(a=>{a.cssClasses.includes(i)&&a.styles.push(...r.flatMap(s=>s.split(",")))})}}setTooltip(t,r){t.split(",").forEach(i=>{r!==void 0&&(this.classes.get(i).tooltip=vm(r))})}getTooltip(t,r){return r&&this.namespaces.has(r)?this.namespaces.get(r).classes.get(t).tooltip:this.classes.get(t).tooltip}setLink(t,r,i){let n=ge();t.split(",").forEach(a=>{let s=a;/\d/.exec(a[0])&&(s=j6+s);let l=this.classes.get(s);l&&(l.link=Zt.formatUrl(r,n),n.securityLevel==="sandbox"?l.linkTarget="_top":typeof i=="string"?l.linkTarget=vm(i):l.linkTarget="_blank")}),this.setCssClass(t,"clickable")}setClickEvent(t,r,i){t.split(",").forEach(n=>{this.setClickFunc(n,r,i),this.classes.get(n).haveCallback=!0}),this.setCssClass(t,"clickable")}setClickFunc(t,r,i){let n=vt.sanitizeText(t,ge());if(ge().securityLevel!=="loose"||r===void 0)return;let s=n;if(this.classes.has(s)){let l=[];if(typeof i=="string"){l=i.split(/,(?=(?:(?:[^"]*"){2})*[^"]*$)/);for(let u=0;u<l.length;u++){let h=l[u].trim();h.startsWith('"')&&h.endsWith('"')&&(h=h.substr(1,h.length-2)),l[u]=h}}l.length===0&&l.push(s),this.functions.push(()=>{let u=this.lookUpDomId(s),h=document.querySelector(`[id="${u}"]`);h!==null&&h.addEventListener("click",()=>{Zt.runFunc(r,...l)},!1)})}}bindFunctions(t){this.functions.forEach(r=>{r(t)})}escapeHtml(t){return t.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;").replace(/'/g,"&#39;")}getDirection(){return this.direction}setDirection(t){this.direction=t}static resolveQualifiedId(t,r){let i=r.at(-1);return i?`${i}.${t}`:t}static getAncestorIds(t){let r=t.split("."),i=new Array(r.length);i[0]=r[0];for(let n=1;n<r.length;n++)i[n]=`${i[n-1]}.${r[n]}`;return i}createNamespaceNode(t,r,i,n=!1){return{id:t,label:r,classes:new Map,notes:new Map,children:new Map,domId:j6+t+"-"+this.namespaceCounter++,parent:i,explicit:n}}linkParentChild(t,r){let i=this.namespaces.get(t),n=this.namespaces.get(r);!i||!n||(i.children.has(r)||i.children.set(r,n),n.parent??=t)}addNamespace(t,r){let i=e.resolveQualifiedId(t,this.namespaceStack);if(this.namespaceStack.push(i),this.namespaces.has(i)){let s=this.namespaces.get(i);return s.explicit=!0,r&&(s.label=r),i}let n=i.split("."),a=e.getAncestorIds(i);for(let s=0;s<a.length;s++){let l=a[s],u=s>0?a[s-1]:void 0,h=s===a.length-1,d=h&&r?r:n[s];this.namespaces.has(l)?h&&(this.namespaces.get(l).explicit=!0):this.namespaces.set(l,this.createNamespaceNode(l,d,u,h)),u&&this.linkParentChild(u,l)}return i}popNamespace(){this.namespaceStack.pop()}getNamespace(t){return this.namespaces.get(t)}getNamespaces(){return this.namespaces}addClassesToNamespace(t,r,i){if(this.namespaces.has(t)){for(let n of r){let{className:a}=this.splitClassNameAndType(n),s=this.getClass(a);s.parent=t,this.namespaces.get(t).classes.set(a,s)}for(let n of i){let a=this.getNote(n);a.parent=t,this.namespaces.get(t).notes.set(n,a)}}}setCssStyle(t,r){let i=this.classes.get(t);if(!(!r||!i))for(let n of r)n.includes(",")?i.styles.push(...n.split(",")):i.styles.push(n)}getArrowMarker(t){let r;switch(t){case 0:r="aggregation";break;case 1:r="extension";break;case 2:r="composition";break;case 3:r="dependency";break;case 4:r="lollipop";break;default:r="none"}return r}resolveExplicitAncestor(t){let r=t;for(;r;){let i=this.namespaces.get(r);if(!i)return;if(i.explicit)return r;r=i.parent}}getData(){let t=[],r=[],i=ge(),n=i.class?.hierarchicalNamespaces??!0;for(let s of this.namespaces.values()){if(!n&&!s.explicit)continue;let l={id:s.id,label:n?s.label:s.id,isGroup:!0,padding:i.class.padding??16,shape:"rect",cssStyles:[],look:i.look,parentId:n?s.parent:void 0};t.push(l)}for(let s of this.classes.values()){let l=n?s.parent:this.resolveExplicitAncestor(s.parent),u={...s,type:void 0,isGroup:!1,parentId:l,look:i.look};t.push(u)}for(let s of this.notes.values()){let l=n?s.parent:this.resolveExplicitAncestor(s.parent),u={id:s.id,label:s.text,isGroup:!1,shape:"note",padding:i.class.padding??6,cssStyles:["text-align: left","white-space: nowrap",`fill: ${i.themeVariables.noteBkgColor}`,`stroke: ${i.themeVariables.noteBorderColor}`],look:i.look,parentId:l,labelType:"markdown"};t.push(u);let h=this.classes.get(s.class)?.id;if(h){let d={id:`edgeNote${s.index}`,start:s.id,end:h,type:"normal",thickness:"normal",classes:"relation",arrowTypeStart:"none",arrowTypeEnd:"none",arrowheadStyle:"",labelStyle:[""],style:["fill: none"],pattern:"dotted",look:i.look};r.push(d)}}for(let s of this.interfaces){let l={id:s.id,label:s.label,isGroup:!1,shape:"rect",cssStyles:["opacity: 0;"],look:i.look};t.push(l)}let a=0;for(let s of this.relations){a++;let l={id:bc(s.id1,s.id2,{prefix:"id",counter:a}),start:s.id1,end:s.id2,type:"normal",label:s.title,labelpos:"c",thickness:"normal",classes:"relation",arrowTypeStart:this.getArrowMarker(s.relation.type1),arrowTypeEnd:this.getArrowMarker(s.relation.type2),startLabelRight:s.relationTitle1==="none"?"":s.relationTitle1,endLabelLeft:s.relationTitle2==="none"?"":s.relationTitle2,arrowheadStyle:"",labelStyle:["display: inline-block"],style:s.style||"",pattern:s.relation.lineType==1?"dashed":"solid",look:i.look,labelType:"markdown"};r.push(l)}return{nodes:t,edges:r,other:{},config:i,direction:this.getDirection()}}}});var TCt,X6,pW=z(()=>{"use strict";k1();TCt=o(e=>`g.classGroup text {
+`;w.append("path").attr("d",S),d==="neo"&&w.attr("filter","url(#drop-shadow)");let R=i.get(t.name)??0;ud.has(u)?(w.style("stroke",p[R%p.length]),w.style("fill",f[R%p.length])):w.style("stroke",m),w.attr("transform",`translate(${b}, ${C})`),t.rectData=v,hd(r,ni(t.description))(t.description,y,v.x,v.y+35,v.width,v.height,{class:`actor ${CL}`},r);let L=w.select("path:last-child");if(L.node()){let N=L.node().getBBox();t.height=N.height+(r.sequence.labelBoxHeight??0)}return n||(y.attr("data-et","participant"),y.attr("data-type","database"),y.attr("data-id",t.name)),t.height},"drawActorTypeDatabase"),s6t=o(function(e,t,r,n,i){let a=n?t.stopy:t.starty,s=t.x+t.width/2,l=a+80,u=22,h=e.append("g").lower(),{look:d,theme:f,themeVariables:p}=r,{bkgColorArray:m,borderColorArray:g,actorBorder:y}=p;n||(nn++,h.append("line").attr("id","actor"+nn).attr("x1",s).attr("y1",l).attr("x2",s).attr("y2",2e3).attr("class","actor-line 200").attr("stroke-width","0.5px").attr("stroke","#999").attr("name",t.name).attr("data-et","life-line").attr("data-id",t.name),t.actorCnt=nn);let v=e.append("g"),x=k0;n?x+=` ${Ap}`:x+=` ${Ep}`,v.attr("class",x),v.attr("name",t.name);let b=Fa();b.x=t.x,b.y=a,b.fill="#eaeaea",b.width=t.width,b.height=t.height,b.class="actor",v.append("line").attr("id","actor-man-torso"+nn).attr("x1",t.x+t.width/2-u*2.5).attr("y1",a+12).attr("x2",t.x+t.width/2-15).attr("y2",a+12),v.append("line").attr("id","actor-man-arms"+nn).attr("x1",t.x+t.width/2-u*2.5).attr("y1",a+2).attr("x2",t.x+t.width/2-u*2.5).attr("y2",a+22),v.append("circle").attr("cx",t.x+t.width/2).attr("cy",a+12).attr("r",u),d==="neo"&&v.attr("filter","url(#drop-shadow)");let T=i.get(t.name)??0;ud.has(f)?(v.style("stroke",g[T%g.length]),v.style("fill",m[T%g.length])):v.style("stroke",y);let k=v.node().getBBox();return t.height=k.height+(r.sequence.labelBoxHeight??0),hd(r,ni(t.description))(t.description,v,b.x,b.y+15,b.width,b.height,{class:`actor ${k0}`},r),v.attr("transform",`translate(0,${u/2+10})`),n||(v.attr("data-et","participant"),v.attr("data-type","boundary"),v.attr("data-id",t.name)),t.height},"drawActorTypeBoundary"),o6t=o(function(e,t,r,n,i){let a=n?t.stopy:t.starty,s=t.x+t.width/2,l=a+80,{look:u,theme:h,themeVariables:d}=r,{bkgColorArray:f,borderColorArray:p,actorBorder:m}=d,g=e.append("g").lower();n||(nn++,g.append("line").attr("id","actor"+nn).attr("x1",s).attr("y1",l).attr("x2",s).attr("y2",2e3).attr("class","actor-line 200").attr("stroke-width","0.5px").attr("stroke","#999").attr("name",t.name).attr("data-et","life-line").attr("data-id",t.name),t.actorCnt=nn);let y=e.append("g"),v=k0;n?v+=` ${Ap}`:v+=` ${Ep}`,y.attr("class",v),y.attr("name",t.name),n||y.attr("data-et","participant").attr("data-type","actor").attr("data-id",t.name);let x=u==="neo"?.5:1,b=u==="neo"?a+(1-x)*30:a;y.append("line").attr("id","actor-man-torso"+nn).attr("x1",s).attr("y1",b+25*x).attr("x2",s).attr("y2",b+45*x),y.append("line").attr("id","actor-man-arms"+nn).attr("x1",s-Sp/2*x).attr("y1",b+33*x).attr("x2",s+Sp/2*x).attr("y2",b+33*x),y.append("line").attr("x1",s-Sp/2*x).attr("y1",b+60*x).attr("x2",s).attr("y2",b+45*x),y.append("line").attr("x1",s).attr("y1",b+45*x).attr("x2",s+(Sp/2-2)*x).attr("y2",b+60*x);let T=y.append("circle");T.attr("cx",t.x+t.width/2),T.attr("cy",b+10*x),T.attr("r",15*x),T.attr("width",t.width*x),T.attr("height",t.height*x);let k=y.node().getBBox();t.height=k.height;let C=Fa();C.x=t.x,C.y=b,C.fill="#eaeaea",C.width=t.width,C.height=t.height/x,C.class="actor",C.rx=3,C.ry=3;let w=i.get(t.name)??0;return ud.has(h)?(y.style("stroke",p[w%p.length]),y.style("fill",f[w%p.length])):y.style("stroke",m),hd(r,ni(t.description))(t.description,y,C.x,b+35*x-(u==="neo"?10:0),C.width,C.height,{class:`actor ${k0}`},r),t.height},"drawActorTypeActor"),l6t=o(async function(e,t,r,n,i,a,s){let l=s??new Map([...a.db.getActors().values()].map((u,h)=>[u.name,h]));switch(t.type){case"actor":return await o6t(e,t,r,n,l);case"participant":return await e6t(e,t,r,n,l);case"boundary":return await s6t(e,t,r,n,l);case"control":return await n6t(e,t,r,n,i,l);case"entity":return await i6t(e,t,r,n,l);case"database":return await a6t(e,t,r,n,l);case"collections":return await t6t(e,t,r,n,l);case"queue":return await r6t(e,t,r,n,l)}},"drawActor"),c6t=o(function(e,t,r){let i=e.append("g");rIe(i,t),t.name&&hd(r)(t.name,i,t.x,t.y+r.boxTextMargin+(t.textMaxHeight||0)/2,t.width,0,{class:"text"},r),i.lower()},"drawBox"),u6t=o(function(e){return e.append("g")},"anchorElement"),h6t=o(function(e,t,r,n,i,a,s){let{theme:l,themeVariables:u}=n,{bkgColorArray:h,borderColorArray:d,mainBkg:f}=u,p=Fa(),m=t.anchored,g=t.actor;p.x=t.startx,p.y=t.starty,p.class="activation"+i%3,p.width=t.stopx-t.startx,p.height=r-t.starty;let y=zw(m,p),x=(s??new Map([...a.db.getActors().values()].map((b,T)=>[b.name,T]))).get(g)??0;ud.has(l)&&(y.style("stroke",d[x%d.length]),y.style("fill",h[x%d.length]??f))},"drawActivation"),d6t=o(async function(e,t,r,n,i){let{boxMargin:a,boxTextMargin:s,labelBoxHeight:l,labelBoxWidth:u,messageFontFamily:h,messageFontSize:d,messageFontWeight:f}=n,p=e.append("g").attr("data-et","control-structure").attr("data-id","i"+i.id),m=o(function(v,x,b,T){return p.append("line").attr("x1",v).attr("y1",x).attr("x2",b).attr("y2",T).attr("class","loopLine")},"drawLoopLine");m(t.startx,t.starty,t.stopx,t.starty),m(t.stopx,t.starty,t.stopx,t.stopy),m(t.startx,t.stopy,t.stopx,t.stopy),m(t.startx,t.starty,t.startx,t.stopy),t.sections!==void 0&&t.sections.forEach(function(v){m(t.startx,v.y,t.stopx,v.y).style("stroke-dasharray","3, 3")});let g=l2();g.text=r,g.x=t.startx,g.y=t.starty,g.fontFamily=h,g.fontSize=d,g.fontWeight=f,g.anchor="middle",g.valign="middle",g.tspan=!1,g.width=Math.max(u??0,50),g.height=l+(n.look==="neo"?15:0)||20,g.textMargin=s,g.class="labelText",tIe(p,g),g=nIe(),g.text=t.title,g.x=t.startx+u/2+(t.stopx-t.startx)/2,g.y=t.starty+a+s,g.anchor="middle",g.valign="middle",g.textMargin=s,g.class="loopText",g.fontFamily=h,g.fontSize=d,g.fontWeight=f,g.wrap=!0;let y=ni(g.text)?await Gw(p,g,t):S0(p,g);if(t.sectionTitles!==void 0){for(let[v,x]of Object.entries(t.sectionTitles))if(x.message){g.text=x.message,g.x=t.startx+(t.stopx-t.startx)/2,g.y=t.sections[v].y+a+s,g.class="sectionTitle",g.anchor="middle",g.valign="middle",g.tspan=!1,g.fontFamily=h,g.fontSize=d,g.fontWeight=f,g.wrap=t.wrap,ni(g.text)?(t.starty=t.sections[v].y,await Gw(p,g,t)):S0(p,g);let b=Math.round(y.map(T=>(T._groups||T)[0][0].getBBox().height).reduce((T,k)=>T+k));t.sections[v].height+=b-(a+s)}}return t.height=Math.round(t.stopy-t.starty),p},"drawLoop"),rIe=o(function(e,t){$E(e,t)},"drawBackgroundRect"),f6t=o(function(e,t){e.append("defs").append("symbol").attr("id",t+"-database").attr("fill-rule","evenodd").attr("clip-rule","evenodd").append("path").attr("transform","scale(.5)").attr("d","M12.258.001l.256.004.255.005.253.008.251.01.249.012.247.015.246.016.242.019.241.02.239.023.236.024.233.027.231.028.229.031.225.032.223.034.22.036.217.038.214.04.211.041.208.043.205.045.201.046.198.048.194.05.191.051.187.053.183.054.18.056.175.057.172.059.168.06.163.061.16.063.155.064.15.066.074.033.073.033.071.034.07.034.069.035.068.035.067.035.066.035.064.036.064.036.062.036.06.036.06.037.058.037.058.037.055.038.055.038.053.038.052.038.051.039.05.039.048.039.047.039.045.04.044.04.043.04.041.04.04.041.039.041.037.041.036.041.034.041.033.042.032.042.03.042.029.042.027.042.026.043.024.043.023.043.021.043.02.043.018.044.017.043.015.044.013.044.012.044.011.045.009.044.007.045.006.045.004.045.002.045.001.045v17l-.001.045-.002.045-.004.045-.006.045-.007.045-.009.044-.011.045-.012.044-.013.044-.015.044-.017.043-.018.044-.02.043-.021.043-.023.043-.024.043-.026.043-.027.042-.029.042-.03.042-.032.042-.033.042-.034.041-.036.041-.037.041-.039.041-.04.041-.041.04-.043.04-.044.04-.045.04-.047.039-.048.039-.05.039-.051.039-.052.038-.053.038-.055.038-.055.038-.058.037-.058.037-.06.037-.06.036-.062.036-.064.036-.064.036-.066.035-.067.035-.068.035-.069.035-.07.034-.071.034-.073.033-.074.033-.15.066-.155.064-.16.063-.163.061-.168.06-.172.059-.175.057-.18.056-.183.054-.187.053-.191.051-.194.05-.198.048-.201.046-.205.045-.208.043-.211.041-.214.04-.217.038-.22.036-.223.034-.225.032-.229.031-.231.028-.233.027-.236.024-.239.023-.241.02-.242.019-.246.016-.247.015-.249.012-.251.01-.253.008-.255.005-.256.004-.258.001-.258-.001-.256-.004-.255-.005-.253-.008-.251-.01-.249-.012-.247-.015-.245-.016-.243-.019-.241-.02-.238-.023-.236-.024-.234-.027-.231-.028-.228-.031-.226-.032-.223-.034-.22-.036-.217-.038-.214-.04-.211-.041-.208-.043-.204-.045-.201-.046-.198-.048-.195-.05-.19-.051-.187-.053-.184-.054-.179-.056-.176-.057-.172-.059-.167-.06-.164-.061-.159-.063-.155-.064-.151-.066-.074-.033-.072-.033-.072-.034-.07-.034-.069-.035-.068-.035-.067-.035-.066-.035-.064-.036-.063-.036-.062-.036-.061-.036-.06-.037-.058-.037-.057-.037-.056-.038-.055-.038-.053-.038-.052-.038-.051-.039-.049-.039-.049-.039-.046-.039-.046-.04-.044-.04-.043-.04-.041-.04-.04-.041-.039-.041-.037-.041-.036-.041-.034-.041-.033-.042-.032-.042-.03-.042-.029-.042-.027-.042-.026-.043-.024-.043-.023-.043-.021-.043-.02-.043-.018-.044-.017-.043-.015-.044-.013-.044-.012-.044-.011-.045-.009-.044-.007-.045-.006-.045-.004-.045-.002-.045-.001-.045v-17l.001-.045.002-.045.004-.045.006-.045.007-.045.009-.044.011-.045.012-.044.013-.044.015-.044.017-.043.018-.044.02-.043.021-.043.023-.043.024-.043.026-.043.027-.042.029-.042.03-.042.032-.042.033-.042.034-.041.036-.041.037-.041.039-.041.04-.041.041-.04.043-.04.044-.04.046-.04.046-.039.049-.039.049-.039.051-.039.052-.038.053-.038.055-.038.056-.038.057-.037.058-.037.06-.037.061-.036.062-.036.063-.036.064-.036.066-.035.067-.035.068-.035.069-.035.07-.034.072-.034.072-.033.074-.033.151-.066.155-.064.159-.063.164-.061.167-.06.172-.059.176-.057.179-.056.184-.054.187-.053.19-.051.195-.05.198-.048.201-.046.204-.045.208-.043.211-.041.214-.04.217-.038.22-.036.223-.034.226-.032.228-.031.231-.028.234-.027.236-.024.238-.023.241-.02.243-.019.245-.016.247-.015.249-.012.251-.01.253-.008.255-.005.256-.004.258-.001.258.001zm-9.258 20.499v.01l.001.021.003.021.004.022.005.021.006.022.007.022.009.023.01.022.011.023.012.023.013.023.015.023.016.024.017.023.018.024.019.024.021.024.022.025.023.024.024.025.052.049.056.05.061.051.066.051.07.051.075.051.079.052.084.052.088.052.092.052.097.052.102.051.105.052.11.052.114.051.119.051.123.051.127.05.131.05.135.05.139.048.144.049.147.047.152.047.155.047.16.045.163.045.167.043.171.043.176.041.178.041.183.039.187.039.19.037.194.035.197.035.202.033.204.031.209.03.212.029.216.027.219.025.222.024.226.021.23.02.233.018.236.016.24.015.243.012.246.01.249.008.253.005.256.004.259.001.26-.001.257-.004.254-.005.25-.008.247-.011.244-.012.241-.014.237-.016.233-.018.231-.021.226-.021.224-.024.22-.026.216-.027.212-.028.21-.031.205-.031.202-.034.198-.034.194-.036.191-.037.187-.039.183-.04.179-.04.175-.042.172-.043.168-.044.163-.045.16-.046.155-.046.152-.047.148-.048.143-.049.139-.049.136-.05.131-.05.126-.05.123-.051.118-.052.114-.051.11-.052.106-.052.101-.052.096-.052.092-.052.088-.053.083-.051.079-.052.074-.052.07-.051.065-.051.06-.051.056-.05.051-.05.023-.024.023-.025.021-.024.02-.024.019-.024.018-.024.017-.024.015-.023.014-.024.013-.023.012-.023.01-.023.01-.022.008-.022.006-.022.006-.022.004-.022.004-.021.001-.021.001-.021v-4.127l-.077.055-.08.053-.083.054-.085.053-.087.052-.09.052-.093.051-.095.05-.097.05-.1.049-.102.049-.105.048-.106.047-.109.047-.111.046-.114.045-.115.045-.118.044-.12.043-.122.042-.124.042-.126.041-.128.04-.13.04-.132.038-.134.038-.135.037-.138.037-.139.035-.142.035-.143.034-.144.033-.147.032-.148.031-.15.03-.151.03-.153.029-.154.027-.156.027-.158.026-.159.025-.161.024-.162.023-.163.022-.165.021-.166.02-.167.019-.169.018-.169.017-.171.016-.173.015-.173.014-.175.013-.175.012-.177.011-.178.01-.179.008-.179.008-.181.006-.182.005-.182.004-.184.003-.184.002h-.37l-.184-.002-.184-.003-.182-.004-.182-.005-.181-.006-.179-.008-.179-.008-.178-.01-.176-.011-.176-.012-.175-.013-.173-.014-.172-.015-.171-.016-.17-.017-.169-.018-.167-.019-.166-.02-.165-.021-.163-.022-.162-.023-.161-.024-.159-.025-.157-.026-.156-.027-.155-.027-.153-.029-.151-.03-.15-.03-.148-.031-.146-.032-.145-.033-.143-.034-.141-.035-.14-.035-.137-.037-.136-.037-.134-.038-.132-.038-.13-.04-.128-.04-.126-.041-.124-.042-.122-.042-.12-.044-.117-.043-.116-.045-.113-.045-.112-.046-.109-.047-.106-.047-.105-.048-.102-.049-.1-.049-.097-.05-.095-.05-.093-.052-.09-.051-.087-.052-.085-.053-.083-.054-.08-.054-.077-.054v4.127zm0-5.654v.011l.001.021.003.021.004.021.005.022.006.022.007.022.009.022.01.022.011.023.012.023.013.023.015.024.016.023.017.024.018.024.019.024.021.024.022.024.023.025.024.024.052.05.056.05.061.05.066.051.07.051.075.052.079.051.084.052.088.052.092.052.097.052.102.052.105.052.11.051.114.051.119.052.123.05.127.051.131.05.135.049.139.049.144.048.147.048.152.047.155.046.16.045.163.045.167.044.171.042.176.042.178.04.183.04.187.038.19.037.194.036.197.034.202.033.204.032.209.03.212.028.216.027.219.025.222.024.226.022.23.02.233.018.236.016.24.014.243.012.246.01.249.008.253.006.256.003.259.001.26-.001.257-.003.254-.006.25-.008.247-.01.244-.012.241-.015.237-.016.233-.018.231-.02.226-.022.224-.024.22-.025.216-.027.212-.029.21-.03.205-.032.202-.033.198-.035.194-.036.191-.037.187-.039.183-.039.179-.041.175-.042.172-.043.168-.044.163-.045.16-.045.155-.047.152-.047.148-.048.143-.048.139-.05.136-.049.131-.05.126-.051.123-.051.118-.051.114-.052.11-.052.106-.052.101-.052.096-.052.092-.052.088-.052.083-.052.079-.052.074-.051.07-.052.065-.051.06-.05.056-.051.051-.049.023-.025.023-.024.021-.025.02-.024.019-.024.018-.024.017-.024.015-.023.014-.023.013-.024.012-.022.01-.023.01-.023.008-.022.006-.022.006-.022.004-.021.004-.022.001-.021.001-.021v-4.139l-.077.054-.08.054-.083.054-.085.052-.087.053-.09.051-.093.051-.095.051-.097.05-.1.049-.102.049-.105.048-.106.047-.109.047-.111.046-.114.045-.115.044-.118.044-.12.044-.122.042-.124.042-.126.041-.128.04-.13.039-.132.039-.134.038-.135.037-.138.036-.139.036-.142.035-.143.033-.144.033-.147.033-.148.031-.15.03-.151.03-.153.028-.154.028-.156.027-.158.026-.159.025-.161.024-.162.023-.163.022-.165.021-.166.02-.167.019-.169.018-.169.017-.171.016-.173.015-.173.014-.175.013-.175.012-.177.011-.178.009-.179.009-.179.007-.181.007-.182.005-.182.004-.184.003-.184.002h-.37l-.184-.002-.184-.003-.182-.004-.182-.005-.181-.007-.179-.007-.179-.009-.178-.009-.176-.011-.176-.012-.175-.013-.173-.014-.172-.015-.171-.016-.17-.017-.169-.018-.167-.019-.166-.02-.165-.021-.163-.022-.162-.023-.161-.024-.159-.025-.157-.026-.156-.027-.155-.028-.153-.028-.151-.03-.15-.03-.148-.031-.146-.033-.145-.033-.143-.033-.141-.035-.14-.036-.137-.036-.136-.037-.134-.038-.132-.039-.13-.039-.128-.04-.126-.041-.124-.042-.122-.043-.12-.043-.117-.044-.116-.044-.113-.046-.112-.046-.109-.046-.106-.047-.105-.048-.102-.049-.1-.049-.097-.05-.095-.051-.093-.051-.09-.051-.087-.053-.085-.052-.083-.054-.08-.054-.077-.054v4.139zm0-5.666v.011l.001.02.003.022.004.021.005.022.006.021.007.022.009.023.01.022.011.023.012.023.013.023.015.023.016.024.017.024.018.023.019.024.021.025.022.024.023.024.024.025.052.05.056.05.061.05.066.051.07.051.075.052.079.051.084.052.088.052.092.052.097.052.102.052.105.051.11.052.114.051.119.051.123.051.127.05.131.05.135.05.139.049.144.048.147.048.152.047.155.046.16.045.163.045.167.043.171.043.176.042.178.04.183.04.187.038.19.037.194.036.197.034.202.033.204.032.209.03.212.028.216.027.219.025.222.024.226.021.23.02.233.018.236.017.24.014.243.012.246.01.249.008.253.006.256.003.259.001.26-.001.257-.003.254-.006.25-.008.247-.01.244-.013.241-.014.237-.016.233-.018.231-.02.226-.022.224-.024.22-.025.216-.027.212-.029.21-.03.205-.032.202-.033.198-.035.194-.036.191-.037.187-.039.183-.039.179-.041.175-.042.172-.043.168-.044.163-.045.16-.045.155-.047.152-.047.148-.048.143-.049.139-.049.136-.049.131-.051.126-.05.123-.051.118-.052.114-.051.11-.052.106-.052.101-.052.096-.052.092-.052.088-.052.083-.052.079-.052.074-.052.07-.051.065-.051.06-.051.056-.05.051-.049.023-.025.023-.025.021-.024.02-.024.019-.024.018-.024.017-.024.015-.023.014-.024.013-.023.012-.023.01-.022.01-.023.008-.022.006-.022.006-.022.004-.022.004-.021.001-.021.001-.021v-4.153l-.077.054-.08.054-.083.053-.085.053-.087.053-.09.051-.093.051-.095.051-.097.05-.1.049-.102.048-.105.048-.106.048-.109.046-.111.046-.114.046-.115.044-.118.044-.12.043-.122.043-.124.042-.126.041-.128.04-.13.039-.132.039-.134.038-.135.037-.138.036-.139.036-.142.034-.143.034-.144.033-.147.032-.148.032-.15.03-.151.03-.153.028-.154.028-.156.027-.158.026-.159.024-.161.024-.162.023-.163.023-.165.021-.166.02-.167.019-.169.018-.169.017-.171.016-.173.015-.173.014-.175.013-.175.012-.177.01-.178.01-.179.009-.179.007-.181.006-.182.006-.182.004-.184.003-.184.001-.185.001-.185-.001-.184-.001-.184-.003-.182-.004-.182-.006-.181-.006-.179-.007-.179-.009-.178-.01-.176-.01-.176-.012-.175-.013-.173-.014-.172-.015-.171-.016-.17-.017-.169-.018-.167-.019-.166-.02-.165-.021-.163-.023-.162-.023-.161-.024-.159-.024-.157-.026-.156-.027-.155-.028-.153-.028-.151-.03-.15-.03-.148-.032-.146-.032-.145-.033-.143-.034-.141-.034-.14-.036-.137-.036-.136-.037-.134-.038-.132-.039-.13-.039-.128-.041-.126-.041-.124-.041-.122-.043-.12-.043-.117-.044-.116-.044-.113-.046-.112-.046-.109-.046-.106-.048-.105-.048-.102-.048-.1-.05-.097-.049-.095-.051-.093-.051-.09-.052-.087-.052-.085-.053-.083-.053-.08-.054-.077-.054v4.153zm8.74-8.179l-.257.004-.254.005-.25.008-.247.011-.244.012-.241.014-.237.016-.233.018-.231.021-.226.022-.224.023-.22.026-.216.027-.212.028-.21.031-.205.032-.202.033-.198.034-.194.036-.191.038-.187.038-.183.04-.179.041-.175.042-.172.043-.168.043-.163.045-.16.046-.155.046-.152.048-.148.048-.143.048-.139.049-.136.05-.131.05-.126.051-.123.051-.118.051-.114.052-.11.052-.106.052-.101.052-.096.052-.092.052-.088.052-.083.052-.079.052-.074.051-.07.052-.065.051-.06.05-.056.05-.051.05-.023.025-.023.024-.021.024-.02.025-.019.024-.018.024-.017.023-.015.024-.014.023-.013.023-.012.023-.01.023-.01.022-.008.022-.006.023-.006.021-.004.022-.004.021-.001.021-.001.021.001.021.001.021.004.021.004.022.006.021.006.023.008.022.01.022.01.023.012.023.013.023.014.023.015.024.017.023.018.024.019.024.02.025.021.024.023.024.023.025.051.05.056.05.06.05.065.051.07.052.074.051.079.052.083.052.088.052.092.052.096.052.101.052.106.052.11.052.114.052.118.051.123.051.126.051.131.05.136.05.139.049.143.048.148.048.152.048.155.046.16.046.163.045.168.043.172.043.175.042.179.041.183.04.187.038.191.038.194.036.198.034.202.033.205.032.21.031.212.028.216.027.22.026.224.023.226.022.231.021.233.018.237.016.241.014.244.012.247.011.25.008.254.005.257.004.26.001.26-.001.257-.004.254-.005.25-.008.247-.011.244-.012.241-.014.237-.016.233-.018.231-.021.226-.022.224-.023.22-.026.216-.027.212-.028.21-.031.205-.032.202-.033.198-.034.194-.036.191-.038.187-.038.183-.04.179-.041.175-.042.172-.043.168-.043.163-.045.16-.046.155-.046.152-.048.148-.048.143-.048.139-.049.136-.05.131-.05.126-.051.123-.051.118-.051.114-.052.11-.052.106-.052.101-.052.096-.052.092-.052.088-.052.083-.052.079-.052.074-.051.07-.052.065-.051.06-.05.056-.05.051-.05.023-.025.023-.024.021-.024.02-.025.019-.024.018-.024.017-.023.015-.024.014-.023.013-.023.012-.023.01-.023.01-.022.008-.022.006-.023.006-.021.004-.022.004-.021.001-.021.001-.021-.001-.021-.001-.021-.004-.021-.004-.022-.006-.021-.006-.023-.008-.022-.01-.022-.01-.023-.012-.023-.013-.023-.014-.023-.015-.024-.017-.023-.018-.024-.019-.024-.02-.025-.021-.024-.023-.024-.023-.025-.051-.05-.056-.05-.06-.05-.065-.051-.07-.052-.074-.051-.079-.052-.083-.052-.088-.052-.092-.052-.096-.052-.101-.052-.106-.052-.11-.052-.114-.052-.118-.051-.123-.051-.126-.051-.131-.05-.136-.05-.139-.049-.143-.048-.148-.048-.152-.048-.155-.046-.16-.046-.163-.045-.168-.043-.172-.043-.175-.042-.179-.041-.183-.04-.187-.038-.191-.038-.194-.036-.198-.034-.202-.033-.205-.032-.21-.031-.212-.028-.216-.027-.22-.026-.224-.023-.226-.022-.231-.021-.233-.018-.237-.016-.241-.014-.244-.012-.247-.011-.25-.008-.254-.005-.257-.004-.26-.001-.26.001z")},"insertDatabaseIcon"),p6t=o(function(e,t){e.append("defs").append("symbol").attr("id",t+"-computer").attr("width","24").attr("height","24").append("path").attr("transform","scale(.5)").attr("d","M2 2v13h20v-13h-20zm18 11h-16v-9h16v9zm-10.228 6l.466-1h3.524l.467 1h-4.457zm14.228 3h-24l2-6h2.104l-1.33 4h18.45l-1.297-4h2.073l2 6zm-5-10h-14v-7h14v7z")},"insertComputerIcon"),m6t=o(function(e,t){e.append("defs").append("symbol").attr("id",t+"-clock").attr("width","24").attr("height","24").append("path").attr("transform","scale(.5)").attr("d","M12 2c5.514 0 10 4.486 10 10s-4.486 10-10 10-10-4.486-10-10 4.486-10 10-10zm0-2c-6.627 0-12 5.373-12 12s5.373 12 12 12 12-5.373 12-12-5.373-12-12-12zm5.848 12.459c.202.038.202.333.001.372-1.907.361-6.045 1.111-6.547 1.111-.719 0-1.301-.582-1.301-1.301 0-.512.77-5.447 1.125-7.445.034-.192.312-.181.343.014l.985 6.238 5.394 1.011z")},"insertClockIcon"),g6t=o(function(e,t){e.append("defs").append("marker").attr("id",t+"-arrowhead").attr("refX",7.9).attr("refY",5).attr("markerUnits","userSpaceOnUse").attr("markerWidth",12).attr("markerHeight",12).attr("orient","auto-start-reverse").append("path").attr("d","M -1 0 L 10 5 L 0 10 z")},"insertArrowHead"),y6t=o(function(e,t){e.append("defs").append("marker").attr("id",t+"-filled-head").attr("refX",15.5).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L14,7 L9,1 Z")},"insertArrowFilledHead"),v6t=o(function(e,t){e.append("defs").append("marker").attr("id",t+"-sequencenumber").attr("refX",15).attr("refY",15).attr("markerWidth",60).attr("markerHeight",40).attr("orient","auto").append("circle").attr("cx",15).attr("cy",15).attr("r",6)},"insertSequenceNumber"),x6t=o(function(e,t){e.append("defs").append("marker").attr("id",t+"-crosshead").attr("markerWidth",15).attr("markerHeight",8).attr("orient","auto").attr("refX",4).attr("refY",4.5).append("path").attr("fill","none").attr("stroke","#000000").style("stroke-dasharray","0, 0").attr("stroke-width","1pt").attr("d","M 1,2 L 6,7 M 6,2 L 1,7")},"insertArrowCrossHead"),b6t=o(function(e,t){let{theme:r}=t;e.append("defs").append("filter").attr("id","drop-shadow").attr("height","130%").attr("width","130%").append("feDropShadow").attr("dx","4").attr("dy","4").attr("stdDeviation",0).attr("flood-opacity","0.06").attr("flood-color",`${r==="redux"||r==="redux-color"?"#000000":"#FFFFFF"}`)},"insertDropShadow"),nIe=o(function(){return{x:0,y:0,fill:void 0,anchor:void 0,style:"#666",width:void 0,height:void 0,textMargin:0,rx:0,ry:0,tspan:!0,valign:void 0}},"getTextObj"),T6t=o(function(){return{x:0,y:0,fill:"#EDF2AE",stroke:"#666",width:100,anchor:"start",height:100,rx:0,ry:0}},"getNoteRect"),hd=(function(){function e(a,s,l,u,h,d,f){let p=s.append("text").attr("x",l+h/2).attr("y",u+d/2+5).style("text-anchor","middle").text(a);i(p,f)}o(e,"byText");function t(a,s,l,u,h,d,f,p){let{actorFontSize:m,actorFontFamily:g,actorFontWeight:y}=p,[v,x]=As(m),b=a.split(xt.lineBreakRegex);for(let T=0;T<b.length;T++){let k=T*v-v*(b.length-1)/2,C=s.append("text").attr("x",l+h/2).attr("y",u).style("text-anchor","middle").style("font-size",x).style("font-weight",y).style("font-family",g);C.append("tspan").attr("x",l+h/2).attr("dy",k).text(b[T]),C.attr("y",u+d/2).attr("dominant-baseline","central").attr("alignment-baseline","central"),i(C,f)}}o(t,"byTspan");function r(a,s,l,u,h,d,f,p){let m=s.append("switch"),y=m.append("foreignObject").attr("x",l).attr("y",u).attr("width",h).attr("height",d).append("xhtml:div").style("display","table").style("height","100%").style("width","100%");y.append("div").style("display","table-cell").style("text-align","center").style("vertical-align","middle").text(a),t(a,m,l,u,h,d,f,p),i(y,f)}o(r,"byFo");async function n(a,s,l,u,h,d,f,p){let m=await qp(a,_t()),g=s.append("switch"),v=g.append("foreignObject").attr("x",l+h/2-m.width/2).attr("y",u+d/2-m.height/2).attr("width",m.width).attr("height",m.height).append("xhtml:div").style("height","100%").style("width","100%");v.append("div").style("text-align","center").style("vertical-align","middle").html(await ey(a,_t())),t(a,g,l,u,h,d,f,p),i(v,f)}o(n,"byKatex");function i(a,s){for(let l in s)s.hasOwnProperty(l)&&a.attr(l,s[l])}return o(i,"_setTextAttrs"),function(a,s=!1){return s?n:a.textPlacement==="fo"?r:a.textPlacement==="old"?e:t}})(),C6t=(function(){function e(i,a,s,l,u,h,d){let f=a.append("text").attr("x",s).attr("y",l).style("text-anchor","start").text(i);n(f,d)}o(e,"byText");function t(i,a,s,l,u,h,d,f){let{actorFontSize:p,actorFontFamily:m,actorFontWeight:g}=f,y=i.split(xt.lineBreakRegex);for(let v=0;v<y.length;v++){let x=v*p-p*(y.length-1)/2,b=a.append("text").attr("x",s).attr("y",l).style("text-anchor","start").style("font-size",p).style("font-weight",g).style("font-family",m);b.append("tspan").attr("x",s).attr("dy",x).text(y[v]),b.attr("y",l+h/2).attr("dominant-baseline","central").attr("alignment-baseline","central"),n(b,d)}}o(t,"byTspan");function r(i,a,s,l,u,h,d,f){let p=a.append("switch"),g=p.append("foreignObject").attr("x",s).attr("y",l).attr("width",u).attr("height",h).append("xhtml:div").style("display","table").style("height","100%").style("width","100%");g.append("div").style("display","table-cell").style("text-align","center").style("vertical-align","middle").text(i),t(i,p,s,l,u,h,d,f),n(g,d)}o(r,"byFo");function n(i,a){for(let s in a)a.hasOwnProperty(s)&&i.attr(s,a[s])}return o(n,"_setTextAttrs"),function(i){return i.textPlacement==="fo"?r:i.textPlacement==="old"?e:t}})(),w6t=o(function(e,t){e.append("defs").append("marker").attr("id",t+"-solidTopArrowHead").attr("refX",7.9).attr("refY",7.25).attr("markerUnits","userSpaceOnUse").attr("markerWidth",12).attr("markerHeight",12).attr("orient","auto-start-reverse").append("path").attr("d","M 0 0 L 10 8 L 0 8 z")},"insertSolidTopArrowHead"),k6t=o(function(e,t){e.append("defs").append("marker").attr("id",t+"-solidBottomArrowHead").attr("refX",7.9).attr("refY",.75).attr("markerUnits","userSpaceOnUse").attr("markerWidth",12).attr("markerHeight",12).attr("orient","auto-start-reverse").append("path").attr("d","M 0 0 L 10 0 L 0 8 z")},"insertSolidBottomArrowHead"),S6t=o(function(e,t){e.append("defs").append("marker").attr("id",t+"-stickTopArrowHead").attr("refX",7.5).attr("refY",7).attr("markerUnits","userSpaceOnUse").attr("markerWidth",12).attr("markerHeight",12).attr("orient","auto-start-reverse").append("path").attr("d","M 0 0 L 7 7").attr("stroke","black").attr("stroke-width",1.5).attr("fill","none")},"insertStickTopArrowHead"),E6t=o(function(e,t){e.append("defs").append("marker").attr("id",t+"-stickBottomArrowHead").attr("refX",7.5).attr("refY",0).attr("markerUnits","userSpaceOnUse").attr("markerWidth",12).attr("markerHeight",12).attr("orient","auto-start-reverse").append("path").attr("d","M 0 7 L 7 0").attr("stroke","black").attr("stroke-width",1.5).attr("fill","none")},"insertStickBottomArrowHead"),Un={drawRect:zw,drawText:S0,drawLabel:tIe,drawActor:l6t,drawBox:c6t,drawPopup:JAt,anchorElement:u6t,drawActivation:h6t,drawLoop:d6t,drawBackgroundRect:rIe,insertArrowHead:g6t,insertArrowFilledHead:y6t,insertSequenceNumber:v6t,insertArrowCrossHead:x6t,insertDatabaseIcon:f6t,insertComputerIcon:p6t,insertClockIcon:m6t,getTextObj:nIe,getNoteRect:T6t,fixLifeLineHeights:oY,sanitizeUrl:sY.sanitizeUrl,insertDropShadow:b6t,insertSolidTopArrowHead:w6t,insertSolidBottomArrowHead:k6t,insertStickTopArrowHead:S6t,insertStickBottomArrowHead:E6t}});async function R6t(e,t){Et.bumpVerticalPos(10);let{startx:r,stopx:n,message:i}=t,a=xt.splitBreaks(i).length,s=ni(i),l=s?await qp(i,Ae()):Zt.calculateTextDimensions(i,E0(je));if(!s){let f=l.height/a;t.height+=f,Et.bumpVerticalPos(f)}let u,h=l.height-10,d=l.width;if(r===n){u=Et.getVerticalPos()+h,je.rightAngles||(h+=je.boxMargin,u=Et.getVerticalPos()+h),h+=30;let f=xt.getMax(d/2,je.width/2);Et.insert(r-f,Et.getVerticalPos()-10+h,n+f,Et.getVerticalPos()+30+h)}else h+=je.boxMargin,u=Et.getVerticalPos()+h,Et.insert(r,u-10,n,u);return Et.bumpVerticalPos(h),t.height+=h,t.stopy=t.starty+t.height,Et.insert(t.fromBounds,t.starty,t.toBounds,t.stopy),u}function Hu(e,t,r,n,i){Et.bumpVerticalPos(r);let a=n;if(t.id&&t.message&&e[t.id]){let s=e[t.id].width,l=E0(je);t.message=Zt.wrapLabel(`[${t.message}]`,s-2*je.wrapPadding,l),t.width=s,t.wrap=!0;let u=Zt.calculateTextDimensions(t.message,l),h=xt.getMax(u.height,je.labelBoxHeight);a=n+h,Z.debug(`${h} - ${t.message}`)}i(t),Et.bumpVerticalPos(a)}function D6t(e,t,r,n,i,a,s){function l(d,f){d.x<i.get(e.from).x?(Et.insert(t.stopx-f,t.starty,t.startx,t.stopy+d.height/2+je.noteMargin),t.stopx=t.stopx+f):(Et.insert(t.startx,t.starty,t.stopx+f,t.stopy+d.height/2+je.noteMargin),t.stopx=t.stopx-f)}o(l,"receiverAdjustment");function u(d,f){d.x<i.get(e.to).x?(Et.insert(t.startx-f,t.starty,t.stopx,t.stopy+d.height/2+je.noteMargin),t.startx=t.startx+f):(Et.insert(t.stopx,t.starty,t.startx+f,t.stopy+d.height/2+je.noteMargin),t.startx=t.startx-f)}o(u,"senderAdjustment");let h=[Fw.ACTOR,Fw.CONTROL,Fw.ENTITY,Fw.DATABASE];if(a.get(e.to)==n){let d=i.get(e.to),f=h.includes(d.type)?Sp/2+3:d.width/2+3;l(d,f),d.starty=r-d.height/2,Et.bumpVerticalPos(d.height/2)}else if(s.get(e.from)==n){let d=i.get(e.from);if(je.mirrorActors){let f=h.includes(d.type)?Sp/2:d.width/2;u(d,f)}d.stopy=r-d.height/2,Et.bumpVerticalPos(d.height/2)}else if(s.get(e.to)==n){let d=i.get(e.to);if(je.mirrorActors){let f=h.includes(d.type)?Sp/2+3:d.width/2+3;l(d,f)}d.stopy=r-d.height/2,Et.bumpVerticalPos(d.height/2)}}async function M6t(e,t,r){let n={};for(let i of t)if(e.get(i.to)&&e.get(i.from)){let a=e.get(i.to);if(i.placement===r.db.PLACEMENT.LEFTOF&&!a.prevActor||i.placement===r.db.PLACEMENT.RIGHTOF&&!a.nextActor)continue;let s=i.placement!==void 0,l=!s,u=s?tx(je):E0(je),h=i.wrap?Zt.wrapLabel(i.message,je.width-2*je.wrapPadding,u):i.message,f=(ni(h)?await qp(i.message,Ae()):Zt.calculateTextDimensions(h,u)).width+2*je.wrapPadding;l&&i.from===a.nextActor?n[i.to]=xt.getMax(n[i.to]||0,f):l&&i.from===a.prevActor?n[i.from]=xt.getMax(n[i.from]||0,f):l&&i.from===i.to?(n[i.from]=xt.getMax(n[i.from]||0,f/2),n[i.to]=xt.getMax(n[i.to]||0,f/2)):i.placement===r.db.PLACEMENT.RIGHTOF?n[i.from]=xt.getMax(n[i.from]||0,f):i.placement===r.db.PLACEMENT.LEFTOF?n[a.prevActor]=xt.getMax(n[a.prevActor]||0,f):i.placement===r.db.PLACEMENT.OVER&&(a.prevActor&&(n[a.prevActor]=xt.getMax(n[a.prevActor]||0,f/2)),a.nextActor&&(n[i.from]=xt.getMax(n[i.from]||0,f/2)))}return Z.debug("maxMessageWidthPerActor:",n),n}async function P6t(e,t,r){let n=0;for(let a of e.keys()){let s=e.get(a);s.wrap&&(s.description=Zt.wrapLabel(s.description,je.width-2*je.wrapPadding,cY(je)));let l=ni(s.description)?await qp(s.description,Ae()):Zt.calculateTextDimensions(s.description,cY(je));s.width=s.wrap?je.width:xt.getMax(je.width,l.width+2*je.wrapPadding),s.height=s.wrap?xt.getMax(l.height,je.height):je.height,n=xt.getMax(n,s.height)}for(let a in t){let s=e.get(a);if(!s)continue;let l=e.get(s.nextActor);if(!l){let f=t[a]+je.actorMargin-s.width/2;s.margin=xt.getMax(f,je.actorMargin);continue}let h=t[a]+je.actorMargin-s.width/2-l.width/2;s.margin=xt.getMax(h,je.actorMargin)}let i=0;return r.forEach(a=>{let s=E0(je),l=a.actorKeys.reduce((f,p)=>f+=e.get(p).width+(e.get(p).margin||0),0),u=je.boxMargin*8;l+=u,l-=2*je.boxTextMargin,a.wrap&&(a.name=Zt.wrapLabel(a.name,l-2*je.wrapPadding,s));let h=Zt.calculateTextDimensions(a.name,s);i=xt.getMax(h.height,i);let d=xt.getMax(l,h.width+2*je.wrapPadding);if(a.margin=je.boxTextMargin,l<d){let f=(d-l)/2;a.margin+=f}}),r.forEach(a=>a.textMaxHeight=i),xt.getMax(n,je.height)}var je,Et,A6t,aIe,E0,tx,cY,_6t,L6t,uY,oIe,lIe,kL,sIe,I6t,N6t,O6t,B6t,$6t,lY,F6t,cIe,z6t,G6t,V6t,uIe,hIe=F(()=>{"use strict";$r();iIe();vt();Vr();Vr();Hd();Xt();G0();Qt();$n();aY();je={},Et={data:{startx:void 0,stopx:void 0,starty:void 0,stopy:void 0},verticalPos:0,sequenceItems:[],activations:[],models:{getHeight:o(function(){return Math.max.apply(null,this.actors.length===0?[0]:this.actors.map(e=>e.height||0))+(this.loops.length===0?0:this.loops.map(e=>e.height||0).reduce((e,t)=>e+t))+(this.messages.length===0?0:this.messages.map(e=>e.height||0).reduce((e,t)=>e+t))+(this.notes.length===0?0:this.notes.map(e=>e.height||0).reduce((e,t)=>e+t))},"getHeight"),clear:o(function(){this.actors=[],this.boxes=[],this.loops=[],this.messages=[],this.notes=[]},"clear"),addBox:o(function(e){this.boxes.push(e)},"addBox"),addActor:o(function(e){this.actors.push(e)},"addActor"),addLoop:o(function(e){this.loops.push(e)},"addLoop"),addMessage:o(function(e){this.messages.push(e)},"addMessage"),addNote:o(function(e){this.notes.push(e)},"addNote"),lastActor:o(function(){return this.actors[this.actors.length-1]},"lastActor"),lastLoop:o(function(){return this.loops[this.loops.length-1]},"lastLoop"),lastMessage:o(function(){return this.messages[this.messages.length-1]},"lastMessage"),lastNote:o(function(){return this.notes[this.notes.length-1]},"lastNote"),actors:[],boxes:[],loops:[],messages:[],notes:[]},init:o(function(){this.sequenceItems=[],this.activations=[],this.models.clear(),this.data={startx:void 0,stopx:void 0,starty:void 0,stopy:void 0},this.verticalPos=0,lIe(Ae())},"init"),updateVal:o(function(e,t,r,n){e[t]===void 0?e[t]=r:e[t]=n(r,e[t])},"updateVal"),updateBounds:o(function(e,t,r,n){let i=this,a=0;function s(l){return o(function(h){a++;let d=i.sequenceItems.length-a+1;i.updateVal(h,"starty",t-d*je.boxMargin,Math.min),i.updateVal(h,"stopy",n+d*je.boxMargin,Math.max),i.updateVal(Et.data,"startx",e-d*je.boxMargin,Math.min),i.updateVal(Et.data,"stopx",r+d*je.boxMargin,Math.max),l!=="activation"&&(i.updateVal(h,"startx",e-d*je.boxMargin,Math.min),i.updateVal(h,"stopx",r+d*je.boxMargin,Math.max),i.updateVal(Et.data,"starty",t-d*je.boxMargin,Math.min),i.updateVal(Et.data,"stopy",n+d*je.boxMargin,Math.max))},"updateItemBounds")}o(s,"updateFn"),this.sequenceItems.forEach(s()),this.activations.forEach(s("activation"))},"updateBounds"),insert:o(function(e,t,r,n){let i=xt.getMin(e,r),a=xt.getMax(e,r),s=xt.getMin(t,n),l=xt.getMax(t,n);this.updateVal(Et.data,"startx",i,Math.min),this.updateVal(Et.data,"starty",s,Math.min),this.updateVal(Et.data,"stopx",a,Math.max),this.updateVal(Et.data,"stopy",l,Math.max),this.updateBounds(i,s,a,l)},"insert"),newActivation:o(function(e,t,r){let n=r.get(e.from),i=kL(e.from).length||0,a=n.x+n.width/2+(i-1)*je.activationWidth/2;this.activations.push({startx:a,starty:this.verticalPos+2,stopx:a+je.activationWidth,stopy:void 0,actor:e.from,anchored:Un.anchorElement(t)})},"newActivation"),endActivation:o(function(e){let t=this.activations.map(function(r){return r.actor}).lastIndexOf(e.from);return this.activations.splice(t,1)[0]},"endActivation"),createLoop:o(function(e={message:void 0,wrap:!1,width:void 0},t){return{startx:void 0,starty:this.verticalPos,stopx:void 0,stopy:void 0,title:e.message,wrap:e.wrap,width:e.width,height:0,fill:t}},"createLoop"),newLoop:o(function(e={message:void 0,wrap:!1,width:void 0},t){this.sequenceItems.push(this.createLoop(e,t))},"newLoop"),endLoop:o(function(){return this.sequenceItems.pop()},"endLoop"),isLoopOverlap:o(function(){return this.sequenceItems.length?this.sequenceItems[this.sequenceItems.length-1].overlap:!1},"isLoopOverlap"),addSectionToLoop:o(function(e){let t=this.sequenceItems.pop();t.sections=t.sections||[],t.sectionTitles=t.sectionTitles||[],t.sections.push({y:Et.getVerticalPos(),height:0}),t.sectionTitles.push(e),this.sequenceItems.push(t)},"addSectionToLoop"),saveVerticalPos:o(function(){this.isLoopOverlap()&&(this.savedVerticalPos=this.verticalPos)},"saveVerticalPos"),resetVerticalPos:o(function(){this.isLoopOverlap()&&(this.verticalPos=this.savedVerticalPos)},"resetVerticalPos"),bumpVerticalPos:o(function(e){this.verticalPos=this.verticalPos+e,this.data.stopy=xt.getMax(this.data.stopy,this.verticalPos)},"bumpVerticalPos"),getVerticalPos:o(function(){return this.verticalPos},"getVerticalPos"),getBounds:o(function(){return{bounds:this.data,models:this.models}},"getBounds")},A6t=o(async function(e,t,r){Et.bumpVerticalPos(je.boxMargin),t.height=je.boxMargin,t.starty=Et.getVerticalPos();let n=Fa();n.x=t.startx,n.y=t.starty,n.width=t.width||je.width,n.class="note";let i=e.append("g");i.attr("data-et","note"),i.attr("data-id","i"+r);let a=Un.drawRect(i,n),s=l2();s.x=t.startx,s.y=t.starty,s.width=n.width,s.dy="1em",s.text=t.message,s.class="noteText",s.fontFamily=je.noteFontFamily,s.fontSize=je.noteFontSize,s.fontWeight=je.noteFontWeight,s.anchor=je.noteAlign,s.textMargin=je.noteMargin,s.valign="center";let l=ni(s.text)?await Gw(i,s):S0(i,s),u=Math.round(l.map(h=>(h._groups||h)[0][0].getBBox().height).reduce((h,d)=>h+d));a.attr("height",u+2*je.noteMargin),t.height+=u+2*je.noteMargin,Et.bumpVerticalPos(u+2*je.noteMargin),t.stopy=t.starty+u+2*je.noteMargin,t.stopx=t.startx+n.width,Et.insert(t.startx,t.starty,t.stopx,t.stopy),Et.models.addNote(t)},"drawNote"),aIe=o(function(e,t,r,n,i,a,s){let l=n.db.getActors(),u=l.get(t.from),h=l.get(t.to),d=r.sequenceVisible,f=u.x+u.width/2,p=h.x+h.width/2,m=f<=p,g=cIe(t,n),y=e.append("g"),v=16.5,x=o((w,S)=>{let R=w?v:-v;return S?-R:R},"getCircleOffset"),b=o(w=>{y.append("circle").attr("cx",w).attr("cy",s).attr("r",5).attr("width",10).attr("height",10)},"drawCircle"),{CENTRAL_CONNECTION:T,CENTRAL_CONNECTION_REVERSE:k,CENTRAL_CONNECTION_DUAL:C}=n.db.LINETYPE;if(d)switch(t.centralConnection){case T:g&&(p+=x(m,!0));break;case k:g||(f+=x(m,!1));break;case C:g?p+=x(m,!0):f+=x(m,!1);break}switch(t.centralConnection){case T:b(p);break;case k:b(f);break;case C:b(f),b(p);break}},"drawCentralConnection"),E0=o(e=>({fontFamily:e.messageFontFamily,fontSize:e.messageFontSize,fontWeight:e.messageFontWeight}),"messageFont"),tx=o(e=>({fontFamily:e.noteFontFamily,fontSize:e.noteFontSize,fontWeight:e.noteFontWeight}),"noteFont"),cY=o(e=>({fontFamily:e.actorFontFamily,fontSize:e.actorFontSize,fontWeight:e.actorFontWeight}),"actorFont");o(R6t,"boundMessage");_6t=o(async function(e,t,r,n,i,a){let{startx:s,stopx:l,starty:u,message:h,type:d,sequenceIndex:f,sequenceVisible:p}=t,m=Zt.calculateTextDimensions(h,E0(je)),g=l2();g.x=Math.min(s,l),g.y=u+10,g.width=Math.abs(l-s),g.class="messageText",g.dy="1em",g.text=h,g.fontFamily=je.messageFontFamily,g.fontSize=je.messageFontSize,g.fontWeight=je.messageFontWeight,g.anchor=je.messageAlign,g.valign="center",g.textMargin=je.wrapPadding,g.tspan=!1,ni(g.text)?await Gw(e,g,{startx:s,stopx:l,starty:r}):S0(e,g);let y=m.width,v;if(s===l){let b=p||je.showSequenceNumbers,T=cIe(i,n),k=z6t(i,n),C=s+(b&&(T||k)?10:0);je.rightAngles?v=e.append("path").attr("d",`M  ${C},${r} H ${s+xt.getMax(je.width/2,y/2)} V ${r+25} H ${s}`):v=e.append("path").attr("d","M "+C+","+r+" C "+(C+60)+","+(r-10)+" "+(s+60)+","+(r+30)+" "+s+","+(r+20)),lY(i,n)&&aIe(e,i,t,n,s,l,r)}else v=e.append("line"),v.attr("x1",s),v.attr("y1",r),v.attr("x2",l),v.attr("y2",r),lY(i,n)&&aIe(e,i,t,n,s,l,r);d===n.db.LINETYPE.DOTTED||d===n.db.LINETYPE.DOTTED_CROSS||d===n.db.LINETYPE.DOTTED_POINT||d===n.db.LINETYPE.DOTTED_OPEN||d===n.db.LINETYPE.BIDIRECTIONAL_DOTTED||d===n.db.LINETYPE.SOLID_TOP_DOTTED||d===n.db.LINETYPE.SOLID_BOTTOM_DOTTED||d===n.db.LINETYPE.STICK_TOP_DOTTED||d===n.db.LINETYPE.STICK_BOTTOM_DOTTED||d===n.db.LINETYPE.SOLID_ARROW_TOP_REVERSE_DOTTED||d===n.db.LINETYPE.SOLID_ARROW_BOTTOM_REVERSE_DOTTED||d===n.db.LINETYPE.STICK_ARROW_TOP_REVERSE_DOTTED||d===n.db.LINETYPE.STICK_ARROW_BOTTOM_REVERSE_DOTTED?(v.style("stroke-dasharray","3, 3"),v.attr("class","messageLine1")):v.attr("class","messageLine0"),v.attr("data-et","message"),v.attr("data-id","i"+t.id),v.attr("data-from",t.from),v.attr("data-to",t.to);let x="";if(je.arrowMarkerAbsolute&&(x=Wp(!0)),v.attr("stroke-width",2),v.attr("stroke","none"),v.style("fill","none"),(d===n.db.LINETYPE.SOLID_TOP||d===n.db.LINETYPE.SOLID_TOP_DOTTED)&&v.attr("marker-end","url("+x+"#"+a+"-solidTopArrowHead)"),(d===n.db.LINETYPE.SOLID_BOTTOM||d===n.db.LINETYPE.SOLID_BOTTOM_DOTTED)&&v.attr("marker-end","url("+x+"#"+a+"-solidBottomArrowHead)"),(d===n.db.LINETYPE.STICK_TOP||d===n.db.LINETYPE.STICK_TOP_DOTTED)&&v.attr("marker-end","url("+x+"#"+a+"-stickTopArrowHead)"),(d===n.db.LINETYPE.STICK_BOTTOM||d===n.db.LINETYPE.STICK_BOTTOM_DOTTED)&&v.attr("marker-end","url("+x+"#"+a+"-stickBottomArrowHead)"),(d===n.db.LINETYPE.SOLID_ARROW_TOP_REVERSE||d===n.db.LINETYPE.SOLID_ARROW_TOP_REVERSE_DOTTED)&&v.attr("marker-start","url("+x+"#"+a+"-solidBottomArrowHead)"),(d===n.db.LINETYPE.SOLID_ARROW_BOTTOM_REVERSE||d===n.db.LINETYPE.SOLID_ARROW_BOTTOM_REVERSE_DOTTED)&&v.attr("marker-start","url("+x+"#"+a+"-solidTopArrowHead)"),(d===n.db.LINETYPE.STICK_ARROW_TOP_REVERSE||d===n.db.LINETYPE.STICK_ARROW_TOP_REVERSE_DOTTED)&&v.attr("marker-start","url("+x+"#"+a+"-stickBottomArrowHead)"),(d===n.db.LINETYPE.STICK_ARROW_BOTTOM_REVERSE||d===n.db.LINETYPE.STICK_ARROW_BOTTOM_REVERSE_DOTTED)&&v.attr("marker-start","url("+x+"#"+a+"-stickTopArrowHead)"),(d===n.db.LINETYPE.SOLID||d===n.db.LINETYPE.DOTTED)&&v.attr("marker-end","url("+x+"#"+a+"-arrowhead)"),(d===n.db.LINETYPE.BIDIRECTIONAL_SOLID||d===n.db.LINETYPE.BIDIRECTIONAL_DOTTED)&&(v.attr("marker-start","url("+x+"#"+a+"-arrowhead)"),v.attr("marker-end","url("+x+"#"+a+"-arrowhead)")),(d===n.db.LINETYPE.SOLID_POINT||d===n.db.LINETYPE.DOTTED_POINT)&&v.attr("marker-end","url("+x+"#"+a+"-filled-head)"),(d===n.db.LINETYPE.SOLID_CROSS||d===n.db.LINETYPE.DOTTED_CROSS)&&v.attr("marker-end","url("+x+"#"+a+"-crosshead)"),p||je.showSequenceNumbers){let b=d===n.db.LINETYPE.BIDIRECTIONAL_SOLID||d===n.db.LINETYPE.BIDIRECTIONAL_DOTTED,T=d===n.db.LINETYPE.SOLID_ARROW_TOP_REVERSE||d===n.db.LINETYPE.SOLID_ARROW_TOP_REVERSE_DOTTED||d===n.db.LINETYPE.SOLID_ARROW_BOTTOM_REVERSE||d===n.db.LINETYPE.SOLID_ARROW_BOTTOM_REVERSE_DOTTED||d===n.db.LINETYPE.STICK_ARROW_TOP_REVERSE||d===n.db.LINETYPE.STICK_ARROW_TOP_REVERSE_DOTTED||d===n.db.LINETYPE.STICK_ARROW_BOTTOM_REVERSE||d===n.db.LINETYPE.STICK_ARROW_BOTTOM_REVERSE_DOTTED,k=6,C=lY(i,n),w=s,S=l;b?(s<l?w=s+k*2:(w=s-k+(C?-5:0),w+=i?.centralConnection===n.db.LINETYPE.CENTRAL_CONNECTION_DUAL||i?.centralConnection===n.db.LINETYPE.CENTRAL_CONNECTION_REVERSE?-7.5:0),v.attr("x1",w)):T?(l>s?S=l-2*k:(S=l-k,w+=i?.centralConnection===n.db.LINETYPE.CENTRAL_CONNECTION_DUAL||i?.centralConnection===n.db.LINETYPE.CENTRAL_CONNECTION_REVERSE?-7.5:0),S+=C?15:0,v.attr("x2",S),v.attr("x1",w)):v.attr("x1",s+k);let R=0,L=s===l,N=s<=l;L?R=t.fromBounds+1:T?R=N?t.toBounds-1:t.fromBounds+1:R=N?t.fromBounds+1:t.toBounds-1;let I="12px",_=f.toString().length;_>5?I="7px":_>3&&(I="9px"),e.append("line").attr("x1",R).attr("y1",r).attr("x2",R).attr("y2",r).attr("stroke-width",0).attr("marker-start","url("+x+"#"+a+"-sequencenumber)"),e.append("text").attr("x",R).attr("y",r+4).attr("font-family","sans-serif").attr("font-size",I).attr("text-anchor","middle").attr("class","sequenceNumber").text(f)}},"drawMessage"),L6t=o(function(e,t,r,n,i,a,s){let l=0,u=0,h,d=0;for(let f of n){let p=t.get(f),m=p.box;h&&h!=m&&(s||Et.models.addBox(h),u+=je.boxMargin+h.margin),m&&m!=h&&(s||(m.x=l+u,m.y=i),u+=m.margin),p.width=xt.getMax(p.width||je.width,je.width),p.height=xt.getMax(p.height||je.height,je.height),p.margin=p.margin||je.actorMargin,d=xt.getMax(d,p.height),r.get(p.name)&&(u+=p.width/2),p.x=l+u,p.starty=Et.getVerticalPos(),Et.insert(p.x,i,p.x+p.width,p.height),l+=p.width+u,p.box&&(p.box.width=l+m.margin-p.box.x),u=p.margin,h=p.box,Et.models.addActor(p)}h&&!s&&Et.models.addBox(h),Et.bumpVerticalPos(d)},"addActorRenderingData"),uY=o(async function(e,t,r,n,i,a,s){if(n){let l=0;Et.bumpVerticalPos(je.boxMargin*2);for(let u of r){let h=t.get(u);h.stopy||(h.stopy=Et.getVerticalPos());let d=await Un.drawActor(e,h,je,!0,i,a,s);l=xt.getMax(l,d)}Et.bumpVerticalPos(l+je.boxMargin)}else for(let l of r){let u=t.get(l);await Un.drawActor(e,u,je,!1,i,a,s)}},"drawActors"),oIe=o(function(e,t,r,n){let i=0,a=0;for(let s of r){let l=t.get(s),u=N6t(l),h=Un.drawPopup(e,l,u,je,je.forceMenus,n);h.height>i&&(i=h.height),h.width+l.x>a&&(a=h.width+l.x)}return{maxHeight:i,maxWidth:a}},"drawActorsPopup"),lIe=o(function(e){Yn(je,e),e.fontFamily&&(je.actorFontFamily=je.noteFontFamily=je.messageFontFamily=e.fontFamily),e.fontSize&&(je.actorFontSize=je.noteFontSize=je.messageFontSize=e.fontSize),e.fontWeight&&(je.actorFontWeight=je.noteFontWeight=je.messageFontWeight=e.fontWeight)},"setConf"),kL=o(function(e){return Et.activations.filter(function(t){return t.actor===e})},"actorActivations"),sIe=o(function(e,t){let r=t.get(e),n=kL(e),i=n.reduce(function(s,l){return xt.getMin(s,l.startx)},r.x+r.width/2-1),a=n.reduce(function(s,l){return xt.getMax(s,l.stopx)},r.x+r.width/2+1);return[i,a]},"activationBounds");o(Hu,"adjustLoopHeightForWrap");o(D6t,"adjustCreatedDestroyedData");I6t=o(async function(e,t,r,n){let{securityLevel:i,sequence:a,look:s,themeVariables:l}=Ae();je=a;let u;i==="sandbox"&&(u=et("#i"+t));let h=i==="sandbox"?et(u.nodes()[0].contentDocument.body):et("body"),d=i==="sandbox"?u.nodes()[0].contentDocument:document;Et.init(),Z.debug(n.db);let f=i==="sandbox"?h.select(`[id="${t}"]`):et(`[id="${t}"]`),p=n.db.getActors(),m=n.db.getCreatedActors(),g=n.db.getDestroyedActors(),y=n.db.getBoxes(),v=n.db.getActorKeys(),x=n.db.getMessages(),b=n.db.getDiagramTitle(),T=n.db.hasAtLeastOneBox(),k=n.db.hasAtLeastOneBoxWithTitle(),C=await M6t(p,x,n);if(je.height=await P6t(p,C,y),Un.insertComputerIcon(f,t),Un.insertDatabaseIcon(f,t),Un.insertClockIcon(f,t),T&&(Et.bumpVerticalPos(je.boxMargin),k&&Et.bumpVerticalPos(y[0].textMaxHeight)),je.hideUnusedParticipants===!0){let z=new Set;x.forEach(W=>{z.add(W.from),z.add(W.to)}),v=v.filter(W=>z.has(W))}let w=new Map(v.map((z,W)=>[p.get(z)?.name??z,W]));L6t(f,p,m,v,0,x,!1);let S=await V6t(x,p,C,n);Un.insertArrowHead(f,t),Un.insertArrowCrossHead(f,t),Un.insertArrowFilledHead(f,t),Un.insertSequenceNumber(f,t),Un.insertSolidTopArrowHead(f,t),Un.insertSolidBottomArrowHead(f,t),Un.insertStickTopArrowHead(f,t),Un.insertStickBottomArrowHead(f,t),s==="neo"&&Un.insertDropShadow(f,je);function R(z,W){let H=Et.endActivation(z);H.starty+18>W&&(H.starty=W-6,W+=12),Un.drawActivation(f,H,W,je,kL(z.from).length,n,w),Et.insert(H.startx,W-10,H.stopx,W)}o(R,"activeEnd");let L=1,N=1,I=[],_=[],A=0;for(let z of x){let W,H,j;switch(z.type){case n.db.LINETYPE.NOTE:Et.resetVerticalPos(),H=z.noteModel,await A6t(f,H,z.id);break;case n.db.LINETYPE.ACTIVE_START:Et.newActivation(z,f,p);break;case n.db.LINETYPE.CENTRAL_CONNECTION:Et.newActivation(z,f,p);break;case n.db.LINETYPE.CENTRAL_CONNECTION_REVERSE:Et.newActivation(z,f,p);break;case n.db.LINETYPE.ACTIVE_END:R(z,Et.getVerticalPos());break;case n.db.LINETYPE.LOOP_START:Hu(S,z,je.boxMargin,je.boxMargin+je.boxTextMargin,Q=>Et.newLoop(Q));break;case n.db.LINETYPE.LOOP_END:W=Et.endLoop(),await Un.drawLoop(f,W,"loop",je,z),Et.bumpVerticalPos(W.stopy-Et.getVerticalPos()),Et.models.addLoop(W);break;case n.db.LINETYPE.RECT_START:Hu(S,z,je.boxMargin,je.boxMargin,Q=>{let U=Q.message;U||(U=l?.rectBkgColor||l?.actorBkg||"rgba(128, 128, 128, 0.5)"),Et.newLoop(void 0,U)});break;case n.db.LINETYPE.RECT_END:W=Et.endLoop(),_.push(W),Et.models.addLoop(W),Et.bumpVerticalPos(W.stopy-Et.getVerticalPos());break;case n.db.LINETYPE.OPT_START:Hu(S,z,je.boxMargin,je.boxMargin+je.boxTextMargin,Q=>Et.newLoop(Q));break;case n.db.LINETYPE.OPT_END:W=Et.endLoop(),await Un.drawLoop(f,W,"opt",je,z),Et.bumpVerticalPos(W.stopy-Et.getVerticalPos()),Et.models.addLoop(W);break;case n.db.LINETYPE.ALT_START:Hu(S,z,je.boxMargin,je.boxMargin+je.boxTextMargin,Q=>Et.newLoop(Q));break;case n.db.LINETYPE.ALT_ELSE:Hu(S,z,je.boxMargin+je.boxTextMargin,je.boxMargin,Q=>Et.addSectionToLoop(Q));break;case n.db.LINETYPE.ALT_END:W=Et.endLoop(),await Un.drawLoop(f,W,"alt",je,z),Et.bumpVerticalPos(W.stopy-Et.getVerticalPos()),Et.models.addLoop(W);break;case n.db.LINETYPE.PAR_START:case n.db.LINETYPE.PAR_OVER_START:Hu(S,z,je.boxMargin,je.boxMargin+je.boxTextMargin,Q=>Et.newLoop(Q)),Et.saveVerticalPos();break;case n.db.LINETYPE.PAR_AND:Hu(S,z,je.boxMargin+je.boxTextMargin,je.boxMargin,Q=>Et.addSectionToLoop(Q));break;case n.db.LINETYPE.PAR_END:W=Et.endLoop(),await Un.drawLoop(f,W,"par",je,z),Et.bumpVerticalPos(W.stopy-Et.getVerticalPos()),Et.models.addLoop(W);break;case n.db.LINETYPE.AUTONUMBER:L=z.message.start||L,N=z.message.step||N,z.message.visible?n.db.enableSequenceNumbers():n.db.disableSequenceNumbers();break;case n.db.LINETYPE.CRITICAL_START:Hu(S,z,je.boxMargin,je.boxMargin+je.boxTextMargin,Q=>Et.newLoop(Q));break;case n.db.LINETYPE.CRITICAL_OPTION:Hu(S,z,je.boxMargin+je.boxTextMargin,je.boxMargin,Q=>Et.addSectionToLoop(Q));break;case n.db.LINETYPE.CRITICAL_END:W=Et.endLoop(),await Un.drawLoop(f,W,"critical",je,z),Et.bumpVerticalPos(W.stopy-Et.getVerticalPos()),Et.models.addLoop(W);break;case n.db.LINETYPE.BREAK_START:Hu(S,z,je.boxMargin,je.boxMargin+je.boxTextMargin,Q=>Et.newLoop(Q));break;case n.db.LINETYPE.BREAK_END:W=Et.endLoop(),await Un.drawLoop(f,W,"break",je,z),Et.bumpVerticalPos(W.stopy-Et.getVerticalPos()),Et.models.addLoop(W);break;default:try{j=z.msgModel,j.starty=Et.getVerticalPos(),j.sequenceIndex=L,j.sequenceVisible=n.db.showSequenceNumbers(),j.id=z.id,j.from=z.from,j.to=z.to;let Q=await R6t(f,j);D6t(z,j,Q,A,p,m,g),I.push({messageModel:j,lineStartY:Q,msg:z}),Et.models.addMessage(j)}catch(Q){Z.error("error while drawing message",Q)}}[n.db.LINETYPE.SOLID_OPEN,n.db.LINETYPE.DOTTED_OPEN,n.db.LINETYPE.SOLID,n.db.LINETYPE.SOLID_TOP,n.db.LINETYPE.SOLID_BOTTOM,n.db.LINETYPE.STICK_TOP,n.db.LINETYPE.STICK_BOTTOM,n.db.LINETYPE.SOLID_TOP_DOTTED,n.db.LINETYPE.SOLID_BOTTOM_DOTTED,n.db.LINETYPE.STICK_TOP_DOTTED,n.db.LINETYPE.STICK_BOTTOM_DOTTED,n.db.LINETYPE.SOLID_ARROW_TOP_REVERSE,n.db.LINETYPE.SOLID_ARROW_BOTTOM_REVERSE,n.db.LINETYPE.STICK_ARROW_TOP_REVERSE,n.db.LINETYPE.STICK_ARROW_BOTTOM_REVERSE,n.db.LINETYPE.SOLID_ARROW_TOP_REVERSE_DOTTED,n.db.LINETYPE.SOLID_ARROW_BOTTOM_REVERSE_DOTTED,n.db.LINETYPE.STICK_ARROW_TOP_REVERSE_DOTTED,n.db.LINETYPE.STICK_ARROW_BOTTOM_REVERSE_DOTTED,n.db.LINETYPE.DOTTED,n.db.LINETYPE.SOLID_CROSS,n.db.LINETYPE.DOTTED_CROSS,n.db.LINETYPE.SOLID_POINT,n.db.LINETYPE.DOTTED_POINT,n.db.LINETYPE.BIDIRECTIONAL_SOLID,n.db.LINETYPE.BIDIRECTIONAL_DOTTED].includes(z.type)&&(L=Math.round((L+N)*100)/100),A++}Z.debug("createdActors",m),Z.debug("destroyedActors",g),await uY(f,p,v,!1,t,n,w);for(let z of I)await _6t(f,z.messageModel,z.lineStartY,n,z.msg,t);je.mirrorActors&&await uY(f,p,v,!0,t,n,w),_.forEach(z=>Un.drawBackgroundRect(f,z)),oY(f,p,v,je);for(let z of Et.models.boxes){z.height=Et.getVerticalPos()-z.y,Et.insert(z.x,z.y,z.x+z.width,z.height);let W=je.boxMargin*2;z.startx=z.x-W,z.starty=z.y-W*.25,z.stopx=z.startx+z.width+2*W,z.stopy=z.starty+z.height+W*.75,z.stroke="rgb(0,0,0, 0.5)",Un.drawBox(f,z,je)}T&&Et.bumpVerticalPos(je.boxMargin);let M=oIe(f,p,v,d),{bounds:D}=Et.getBounds();D.startx===void 0&&(D.startx=0),D.starty===void 0&&(D.starty=0),D.stopx===void 0&&(D.stopx=0),D.stopy===void 0&&(D.stopy=0);let P=D.stopy-D.starty;P<M.maxHeight&&(P=M.maxHeight);let B=P+2*je.diagramMarginY;je.mirrorActors&&(B=B-je.boxMargin+je.bottomMarginAdj);let O=D.stopx-D.startx;O<M.maxWidth&&(O=M.maxWidth);let $=O+2*je.diagramMarginX;b&&f.append("text").text(b).attr("x",(D.stopx-D.startx)/2-2*je.diagramMarginX).attr("y",-25),Wr(f,B,$,je.useMaxWidth);let V=b?40:0,G=p.size&&s==="neo"?30:0;f.attr("viewBox",D.startx-je.diagramMarginX+" -"+(je.diagramMarginY+V)+" "+$+" "+(B+V+G)),Z.debug("models:",Et.models)},"draw");o(M6t,"getMaxMessageWidthPerActor");N6t=o(function(e){let t=0,r=cY(je);for(let n in e.links){let a=Zt.calculateTextDimensions(n,r).width+2*je.wrapPadding+2*je.boxMargin;t<a&&(t=a)}return t},"getRequiredPopupWidth");o(P6t,"calculateActorMargins");O6t=o(async function(e,t,r){let n=t.get(e.from),i=t.get(e.to),a=n.x,s=i.x,l=e.wrap&&e.message,u=ni(e.message)?await qp(e.message,Ae()):Zt.calculateTextDimensions(l?Zt.wrapLabel(e.message,je.width,tx(je)):e.message,tx(je)),h={width:l?je.width:xt.getMax(je.width,u.width+2*je.noteMargin),height:0,startx:n.x,stopx:0,starty:0,stopy:0,message:e.message};return e.placement===r.db.PLACEMENT.RIGHTOF?(h.width=l?xt.getMax(je.width,u.width):xt.getMax(n.width/2+i.width/2,u.width+2*je.noteMargin),h.startx=a+(n.width+je.actorMargin)/2):e.placement===r.db.PLACEMENT.LEFTOF?(h.width=l?xt.getMax(je.width,u.width+2*je.noteMargin):xt.getMax(n.width/2+i.width/2,u.width+2*je.noteMargin),h.startx=a-h.width+(n.width-je.actorMargin)/2):e.to===e.from?(u=Zt.calculateTextDimensions(l?Zt.wrapLabel(e.message,xt.getMax(je.width,n.width),tx(je)):e.message,tx(je)),h.width=l?xt.getMax(je.width,n.width):xt.getMax(n.width,je.width,u.width+2*je.noteMargin),h.startx=a+(n.width-h.width)/2):(h.width=Math.abs(a+n.width/2-(s+i.width/2))+je.actorMargin,h.startx=a<s?a+n.width/2-je.actorMargin/2:s+i.width/2-je.actorMargin/2),l&&(h.message=Zt.wrapLabel(e.message,h.width-2*je.wrapPadding,tx(je))),Z.debug(`NM:[${h.startx},${h.stopx},${h.starty},${h.stopy}:${h.width},${h.height}=${e.message}]`),h},"buildNoteModel"),B6t=4,$6t=6,lY=o(function(e,t){let{CENTRAL_CONNECTION:r,CENTRAL_CONNECTION_REVERSE:n,CENTRAL_CONNECTION_DUAL:i}=t.db.LINETYPE;return[r,n,i].includes(e.centralConnection)},"hasCentralConnection"),F6t=o(function(e,t,r){let{CENTRAL_CONNECTION_REVERSE:n,CENTRAL_CONNECTION_DUAL:i,BIDIRECTIONAL_SOLID:a,BIDIRECTIONAL_DOTTED:s}=t.db.LINETYPE,l=0;return(e.centralConnection===n||e.centralConnection===i)&&(l+=B6t),(e.centralConnection===n||e.centralConnection===i)&&(e.type===a||e.type===s)&&(l+=r?0:-$6t),l},"calculateCentralConnectionOffset"),cIe=o(function(e,t){let{SOLID_ARROW_TOP_REVERSE:r,SOLID_ARROW_TOP_REVERSE_DOTTED:n,SOLID_ARROW_BOTTOM_REVERSE:i,SOLID_ARROW_BOTTOM_REVERSE_DOTTED:a,STICK_ARROW_TOP_REVERSE:s,STICK_ARROW_TOP_REVERSE_DOTTED:l,STICK_ARROW_BOTTOM_REVERSE:u,STICK_ARROW_BOTTOM_REVERSE_DOTTED:h}=t.db.LINETYPE;return[r,n,i,a,s,l,u,h].includes(e.type)},"isReverseArrowType"),z6t=o(function(e,t){let{BIDIRECTIONAL_SOLID:r,BIDIRECTIONAL_DOTTED:n}=t.db.LINETYPE;return[r,n].includes(e.type)},"isBidirectionalArrowType"),G6t=o(function(e,t,r){let{look:n}=Ae();if(![r.db.LINETYPE.SOLID_OPEN,r.db.LINETYPE.DOTTED_OPEN,r.db.LINETYPE.SOLID,r.db.LINETYPE.SOLID_TOP,r.db.LINETYPE.SOLID_BOTTOM,r.db.LINETYPE.STICK_TOP,r.db.LINETYPE.STICK_BOTTOM,r.db.LINETYPE.SOLID_TOP_DOTTED,r.db.LINETYPE.SOLID_BOTTOM_DOTTED,r.db.LINETYPE.STICK_TOP_DOTTED,r.db.LINETYPE.STICK_BOTTOM_DOTTED,r.db.LINETYPE.SOLID_ARROW_TOP_REVERSE,r.db.LINETYPE.SOLID_ARROW_BOTTOM_REVERSE,r.db.LINETYPE.STICK_ARROW_TOP_REVERSE,r.db.LINETYPE.STICK_ARROW_BOTTOM_REVERSE,r.db.LINETYPE.SOLID_ARROW_TOP_REVERSE_DOTTED,r.db.LINETYPE.SOLID_ARROW_BOTTOM_REVERSE_DOTTED,r.db.LINETYPE.STICK_ARROW_TOP_REVERSE_DOTTED,r.db.LINETYPE.STICK_ARROW_BOTTOM_REVERSE_DOTTED,r.db.LINETYPE.DOTTED,r.db.LINETYPE.SOLID_CROSS,r.db.LINETYPE.DOTTED_CROSS,r.db.LINETYPE.SOLID_POINT,r.db.LINETYPE.DOTTED_POINT,r.db.LINETYPE.BIDIRECTIONAL_SOLID,r.db.LINETYPE.BIDIRECTIONAL_DOTTED].includes(e.type))return{};let[i,a]=sIe(e.from,t),[s,l]=sIe(e.to,t),u=i<=s,h=u?a:i,d=u?s:l;n==="neo"&&(e.type!==r.db.LINETYPE.SOLID_OPEN&&(d+=u?-3:3),(e.type===r.db.LINETYPE.BIDIRECTIONAL_SOLID||e.type===r.db.LINETYPE.BIDIRECTIONAL_DOTTED)&&(h+=u?3:-3)),h+=F6t(e,r,u);let f=Math.abs(s-l)>2,p=o(v=>u?-v:v,"adjustValue");e.from===e.to?d=h:(e.activate&&!f&&(d+=p(je.activationWidth/2-1)),[r.db.LINETYPE.SOLID_OPEN,r.db.LINETYPE.DOTTED_OPEN,r.db.LINETYPE.STICK_TOP,r.db.LINETYPE.STICK_BOTTOM,r.db.LINETYPE.STICK_TOP_DOTTED,r.db.LINETYPE.STICK_BOTTOM_DOTTED,r.db.LINETYPE.SOLID_ARROW_TOP_REVERSE_DOTTED,r.db.LINETYPE.SOLID_ARROW_BOTTOM_REVERSE_DOTTED,r.db.LINETYPE.STICK_ARROW_TOP_REVERSE,r.db.LINETYPE.STICK_ARROW_BOTTOM_REVERSE,r.db.LINETYPE.STICK_ARROW_TOP_REVERSE_DOTTED,r.db.LINETYPE.STICK_ARROW_BOTTOM_REVERSE_DOTTED,r.db.LINETYPE.SOLID_ARROW_TOP_REVERSE,r.db.LINETYPE.SOLID_ARROW_BOTTOM_REVERSE].includes(e.type)||(d+=p(3)),[r.db.LINETYPE.BIDIRECTIONAL_SOLID,r.db.LINETYPE.BIDIRECTIONAL_DOTTED,r.db.LINETYPE.SOLID_ARROW_TOP_REVERSE_DOTTED,r.db.LINETYPE.SOLID_ARROW_BOTTOM_REVERSE_DOTTED,r.db.LINETYPE.SOLID_ARROW_TOP_REVERSE,r.db.LINETYPE.SOLID_ARROW_BOTTOM_REVERSE].includes(e.type)&&(h-=p(3)));let m=[i,a,s,l],g=Math.abs(h-d);e.wrap&&e.message&&(e.message=Zt.wrapLabel(e.message,xt.getMax(g+2*je.wrapPadding,je.width),E0(je)));let y=Zt.calculateTextDimensions(e.message,E0(je));return{width:xt.getMax(e.wrap?0:y.width+2*je.wrapPadding,g+2*je.wrapPadding,je.width),height:0,startx:h,stopx:d,starty:0,stopy:0,message:e.message,type:e.type,wrap:e.wrap,fromBounds:Math.min.apply(null,m),toBounds:Math.max.apply(null,m)}},"buildMessageModel"),V6t=o(async function(e,t,r,n){let i={},a=[],s,l,u;for(let h of e){switch(h.type){case n.db.LINETYPE.LOOP_START:case n.db.LINETYPE.ALT_START:case n.db.LINETYPE.OPT_START:case n.db.LINETYPE.PAR_START:case n.db.LINETYPE.PAR_OVER_START:case n.db.LINETYPE.CRITICAL_START:case n.db.LINETYPE.BREAK_START:a.push({id:h.id,msg:h.message,from:Number.MAX_SAFE_INTEGER,to:Number.MIN_SAFE_INTEGER,width:0});break;case n.db.LINETYPE.ALT_ELSE:case n.db.LINETYPE.PAR_AND:case n.db.LINETYPE.CRITICAL_OPTION:h.message&&(s=a.pop(),i[s.id]=s,i[h.id]=s,a.push(s));break;case n.db.LINETYPE.LOOP_END:case n.db.LINETYPE.ALT_END:case n.db.LINETYPE.OPT_END:case n.db.LINETYPE.PAR_END:case n.db.LINETYPE.CRITICAL_END:case n.db.LINETYPE.BREAK_END:s=a.pop(),i[s.id]=s;break;case n.db.LINETYPE.ACTIVE_START:{let f=t.get(h.from?h.from:h.to.actor),p=kL(h.from?h.from:h.to.actor).length,m=f.x+f.width/2+(p-1)*je.activationWidth/2,g={startx:m,stopx:m+je.activationWidth,actor:h.from,enabled:!0};Et.activations.push(g)}break;case n.db.LINETYPE.ACTIVE_END:{let f=Et.activations.map(p=>p.actor).lastIndexOf(h.from);Et.activations.splice(f,1).splice(0,1)}break}h.placement!==void 0?(l=await O6t(h,t,n),h.noteModel=l,a.forEach(f=>{s=f,s.from=xt.getMin(s.from,l.startx),s.to=xt.getMax(s.to,l.startx+l.width),s.width=xt.getMax(s.width,Math.abs(s.from-s.to))-je.labelBoxWidth})):(u=G6t(h,t,n),h.msgModel=u,u.startx&&u.stopx&&a.length>0&&a.forEach(f=>{if(s=f,u.startx===u.stopx){let p=t.get(h.from),m=t.get(h.to);s.from=xt.getMin(p.x-u.width/2,p.x-p.width/2,s.from),s.to=xt.getMax(m.x+u.width/2,m.x+p.width/2,s.to),s.width=xt.getMax(s.width,Math.abs(s.to-s.from))-je.labelBoxWidth}else s.from=xt.getMin(u.startx,s.from),s.to=xt.getMax(u.stopx,s.to),s.width=xt.getMax(s.width,u.width)-je.labelBoxWidth}))}return Et.activations=[],Z.debug("Loop type widths:",i),i},"calculateLoopBounds"),uIe={bounds:Et,drawActors:uY,drawActorsPopup:oIe,setConf:lIe,draw:I6t}});var dIe={};ir(dIe,{diagram:()=>W6t});var W6t,fIe=F(()=>{"use strict";Q8e();aY();eIe();Xt();hIe();W6t={parser:Z8e,get db(){return new TL},renderer:uIe,styles:J8e,init:o(e=>{e.sequence||(e.sequence={}),e.wrap&&(e.sequence.wrap=e.wrap,cb({sequence:{wrap:e.wrap}}))},"init")}});var hY,SL,dY=F(()=>{"use strict";hY=(function(){var e=o(function(we,Me,ve,ne){for(ve=ve||{},ne=we.length;ne--;ve[we[ne]]=Me);return ve},"o"),t=[1,18],r=[1,19],n=[1,20],i=[1,41],a=[1,26],s=[1,42],l=[1,24],u=[1,25],h=[1,32],d=[1,33],f=[1,34],p=[1,45],m=[1,35],g=[1,36],y=[1,37],v=[1,38],x=[1,27],b=[1,28],T=[1,29],k=[1,30],C=[1,31],w=[1,44],S=[1,46],R=[1,43],L=[1,47],N=[1,9],I=[1,8,9],_=[1,58],A=[1,59],M=[1,60],D=[1,61],P=[1,62],B=[1,63],O=[1,64],$=[1,8,9,41],V=[1,77],G=[1,8,9,12,13,22,39,41,44,46,68,69,70,71,72,73,74,79,81],z=[1,8,9,12,13,18,20,22,39,41,44,46,47,60,68,69,70,71,72,73,74,79,81,86,100,102,103],W=[13,60,86,100,102,103],H=[13,60,73,74,86,100,102,103],j=[13,60,68,69,70,71,72,86,100,102,103],Q=[1,103],U=[1,121],oe=[1,117],te=[1,113],le=[1,119],ie=[1,114],ae=[1,115],Re=[1,116],be=[1,118],Pe=[1,120],Ge=[22,50,60,61,82,86,87,88,89,90],Oe=[1,128],ue=[12,39],ye=[1,8,9,39,41,44,46],ke=[1,8,9,22],ce=[1,153],re=[1,8,9,61],J=[1,8,9,22,50,60,61,82,86,87,88,89,90],se={trace:o(function(){},"trace"),yy:{},symbols_:{error:2,start:3,mermaidDoc:4,statements:5,graphConfig:6,CLASS_DIAGRAM:7,NEWLINE:8,EOF:9,statement:10,classLabel:11,SQS:12,STR:13,SQE:14,namespaceName:15,alphaNumToken:16,classLiteralName:17,DOT:18,className:19,GENERICTYPE:20,relationStatement:21,LABEL:22,namespaceStatement:23,classStatement:24,memberStatement:25,annotationStatement:26,clickStatement:27,styleStatement:28,cssClassStatement:29,noteStatement:30,classDefStatement:31,direction:32,acc_title:33,acc_title_value:34,acc_descr:35,acc_descr_value:36,acc_descr_multiline_value:37,namespaceIdentifier:38,STRUCT_START:39,classStatements:40,STRUCT_STOP:41,NAMESPACE:42,classIdentifier:43,STYLE_SEPARATOR:44,members:45,ANNOTATION_START:46,ANNOTATION_END:47,CLASS:48,emptyBody:49,SPACE:50,MEMBER:51,SEPARATOR:52,relation:53,NOTE_FOR:54,noteText:55,NOTE:56,CLASSDEF:57,classList:58,stylesOpt:59,ALPHA:60,COMMA:61,direction_tb:62,direction_bt:63,direction_rl:64,direction_lr:65,relationType:66,lineType:67,AGGREGATION:68,EXTENSION:69,COMPOSITION:70,DEPENDENCY:71,LOLLIPOP:72,LINE:73,DOTTED_LINE:74,CALLBACK:75,LINK:76,LINK_TARGET:77,CLICK:78,CALLBACK_NAME:79,CALLBACK_ARGS:80,HREF:81,STYLE:82,CSSCLASS:83,style:84,styleComponent:85,NUM:86,COLON:87,UNIT:88,BRKT:89,PCT:90,commentToken:91,textToken:92,graphCodeTokens:93,textNoTagsToken:94,TAGSTART:95,TAGEND:96,"==":97,"--":98,DEFAULT:99,MINUS:100,keywords:101,UNICODE_TEXT:102,BQUOTE_STR:103,$accept:0,$end:1},terminals_:{2:"error",7:"CLASS_DIAGRAM",8:"NEWLINE",9:"EOF",12:"SQS",13:"STR",14:"SQE",18:"DOT",20:"GENERICTYPE",22:"LABEL",33:"acc_title",34:"acc_title_value",35:"acc_descr",36:"acc_descr_value",37:"acc_descr_multiline_value",39:"STRUCT_START",41:"STRUCT_STOP",42:"NAMESPACE",44:"STYLE_SEPARATOR",46:"ANNOTATION_START",47:"ANNOTATION_END",48:"CLASS",50:"SPACE",51:"MEMBER",52:"SEPARATOR",54:"NOTE_FOR",56:"NOTE",57:"CLASSDEF",60:"ALPHA",61:"COMMA",62:"direction_tb",63:"direction_bt",64:"direction_rl",65:"direction_lr",68:"AGGREGATION",69:"EXTENSION",70:"COMPOSITION",71:"DEPENDENCY",72:"LOLLIPOP",73:"LINE",74:"DOTTED_LINE",75:"CALLBACK",76:"LINK",77:"LINK_TARGET",78:"CLICK",79:"CALLBACK_NAME",80:"CALLBACK_ARGS",81:"HREF",82:"STYLE",83:"CSSCLASS",86:"NUM",87:"COLON",88:"UNIT",89:"BRKT",90:"PCT",93:"graphCodeTokens",95:"TAGSTART",96:"TAGEND",97:"==",98:"--",99:"DEFAULT",100:"MINUS",101:"keywords",102:"UNICODE_TEXT",103:"BQUOTE_STR"},productions_:[0,[3,1],[3,1],[4,1],[6,4],[5,1],[5,2],[5,3],[11,3],[15,1],[15,1],[15,3],[15,2],[19,1],[19,3],[19,1],[19,2],[19,2],[19,2],[10,1],[10,2],[10,1],[10,1],[10,1],[10,1],[10,1],[10,1],[10,1],[10,1],[10,1],[10,1],[10,2],[10,2],[10,1],[23,4],[23,5],[38,2],[38,3],[40,1],[40,2],[40,3],[40,1],[40,2],[40,3],[40,1],[40,2],[40,3],[24,1],[24,3],[24,4],[24,3],[24,6],[24,4],[24,7],[24,6],[43,2],[43,3],[49,0],[49,2],[49,2],[26,4],[45,1],[45,2],[25,1],[25,2],[25,1],[25,1],[21,3],[21,4],[21,4],[21,5],[30,3],[30,2],[31,3],[58,1],[58,3],[32,1],[32,1],[32,1],[32,1],[53,3],[53,2],[53,2],[53,1],[66,1],[66,1],[66,1],[66,1],[66,1],[67,1],[67,1],[27,3],[27,4],[27,3],[27,4],[27,4],[27,5],[27,3],[27,4],[27,4],[27,5],[27,4],[27,5],[27,5],[27,6],[28,3],[29,3],[59,1],[59,3],[84,1],[84,2],[85,1],[85,1],[85,1],[85,1],[85,1],[85,1],[85,1],[85,1],[85,1],[91,1],[91,1],[92,1],[92,1],[92,1],[92,1],[92,1],[92,1],[92,1],[94,1],[94,1],[94,1],[94,1],[16,1],[16,1],[16,1],[16,1],[17,1],[55,1]],performAction:o(function(Me,ve,ne,q,he,X,fe){var K=X.length-1;switch(he){case 8:this.$=X[K-1];break;case 9:case 10:case 13:case 15:this.$=X[K];break;case 11:case 14:this.$=X[K-2]+"."+X[K];break;case 12:case 16:this.$=X[K-1]+X[K];break;case 17:case 18:this.$=X[K-1]+"~"+X[K]+"~";break;case 19:q.addRelation(X[K]);break;case 20:X[K-1].title=q.cleanupLabel(X[K]),q.addRelation(X[K-1]);break;case 31:this.$=X[K].trim(),q.setAccTitle(this.$);break;case 32:case 33:this.$=X[K].trim(),q.setAccDescription(this.$);break;case 34:q.addClassesToNamespace(X[K-3],X[K-1][0],X[K-1][1]),q.popNamespace();break;case 35:q.addClassesToNamespace(X[K-4],X[K-1][0],X[K-1][1]),q.popNamespace();break;case 36:this.$=q.addNamespace(X[K]);break;case 37:this.$=q.addNamespace(X[K-1],X[K]);break;case 38:this.$=[[X[K]],[]];break;case 39:this.$=[[X[K-1]],[]];break;case 40:X[K][0].unshift(X[K-2]),this.$=X[K];break;case 41:this.$=[[],[X[K]]];break;case 42:this.$=[[],[X[K-1]]];break;case 43:X[K][1].unshift(X[K-2]),this.$=X[K];break;case 44:case 45:this.$=[[],[]];break;case 46:this.$=X[K];break;case 48:q.setCssClass(X[K-2],X[K]);break;case 49:q.addMembers(X[K-3],X[K-1]);break;case 51:q.setCssClass(X[K-5],X[K-3]),q.addMembers(X[K-5],X[K-1]);break;case 52:q.addAnnotation(X[K-3],X[K-1]);break;case 53:q.addAnnotation(X[K-6],X[K-4]),q.addMembers(X[K-6],X[K-1]);break;case 54:q.addAnnotation(X[K-5],X[K-3]);break;case 55:this.$=X[K],q.addClass(X[K]);break;case 56:this.$=X[K-1],q.addClass(X[K-1]),q.setClassLabel(X[K-1],X[K]);break;case 60:q.addAnnotation(X[K],X[K-2]);break;case 61:case 74:this.$=[X[K]];break;case 62:X[K].push(X[K-1]),this.$=X[K];break;case 63:break;case 64:q.addMember(X[K-1],q.cleanupLabel(X[K]));break;case 65:break;case 66:break;case 67:this.$={id1:X[K-2],id2:X[K],relation:X[K-1],relationTitle1:"none",relationTitle2:"none"};break;case 68:this.$={id1:X[K-3],id2:X[K],relation:X[K-1],relationTitle1:X[K-2],relationTitle2:"none"};break;case 69:this.$={id1:X[K-3],id2:X[K],relation:X[K-2],relationTitle1:"none",relationTitle2:X[K-1]};break;case 70:this.$={id1:X[K-4],id2:X[K],relation:X[K-2],relationTitle1:X[K-3],relationTitle2:X[K-1]};break;case 71:this.$=q.addNote(X[K],X[K-1]);break;case 72:this.$=q.addNote(X[K]);break;case 73:this.$=X[K-2],q.defineClass(X[K-1],X[K]);break;case 75:this.$=X[K-2].concat([X[K]]);break;case 76:q.setDirection("TB");break;case 77:q.setDirection("BT");break;case 78:q.setDirection("RL");break;case 79:q.setDirection("LR");break;case 80:this.$={type1:X[K-2],type2:X[K],lineType:X[K-1]};break;case 81:this.$={type1:"none",type2:X[K],lineType:X[K-1]};break;case 82:this.$={type1:X[K-1],type2:"none",lineType:X[K]};break;case 83:this.$={type1:"none",type2:"none",lineType:X[K]};break;case 84:this.$=q.relationType.AGGREGATION;break;case 85:this.$=q.relationType.EXTENSION;break;case 86:this.$=q.relationType.COMPOSITION;break;case 87:this.$=q.relationType.DEPENDENCY;break;case 88:this.$=q.relationType.LOLLIPOP;break;case 89:this.$=q.lineType.LINE;break;case 90:this.$=q.lineType.DOTTED_LINE;break;case 91:case 97:this.$=X[K-2],q.setClickEvent(X[K-1],X[K]);break;case 92:case 98:this.$=X[K-3],q.setClickEvent(X[K-2],X[K-1]),q.setTooltip(X[K-2],X[K]);break;case 93:this.$=X[K-2],q.setLink(X[K-1],X[K]);break;case 94:this.$=X[K-3],q.setLink(X[K-2],X[K-1],X[K]);break;case 95:this.$=X[K-3],q.setLink(X[K-2],X[K-1]),q.setTooltip(X[K-2],X[K]);break;case 96:this.$=X[K-4],q.setLink(X[K-3],X[K-2],X[K]),q.setTooltip(X[K-3],X[K-1]);break;case 99:this.$=X[K-3],q.setClickEvent(X[K-2],X[K-1],X[K]);break;case 100:this.$=X[K-4],q.setClickEvent(X[K-3],X[K-2],X[K-1]),q.setTooltip(X[K-3],X[K]);break;case 101:this.$=X[K-3],q.setLink(X[K-2],X[K]);break;case 102:this.$=X[K-4],q.setLink(X[K-3],X[K-1],X[K]);break;case 103:this.$=X[K-4],q.setLink(X[K-3],X[K-1]),q.setTooltip(X[K-3],X[K]);break;case 104:this.$=X[K-5],q.setLink(X[K-4],X[K-2],X[K]),q.setTooltip(X[K-4],X[K-1]);break;case 105:this.$=X[K-2],q.setCssStyle(X[K-1],X[K]);break;case 106:q.setCssClass(X[K-1],X[K]);break;case 107:this.$=[X[K]];break;case 108:X[K-2].push(X[K]),this.$=X[K-2];break;case 110:this.$=X[K-1]+X[K];break}},"anonymous"),table:[{3:1,4:2,5:3,6:4,7:[1,6],10:5,16:39,17:40,19:21,21:7,23:8,24:9,25:10,26:11,27:12,28:13,29:14,30:15,31:16,32:17,33:t,35:r,37:n,38:22,42:i,43:23,46:a,48:s,51:l,52:u,54:h,56:d,57:f,60:p,62:m,63:g,64:y,65:v,75:x,76:b,78:T,82:k,83:C,86:w,100:S,102:R,103:L},{1:[3]},{1:[2,1]},{1:[2,2]},{1:[2,3]},e(N,[2,5],{8:[1,48]}),{8:[1,49]},e(I,[2,19],{22:[1,50]}),e(I,[2,21]),e(I,[2,22]),e(I,[2,23]),e(I,[2,24]),e(I,[2,25]),e(I,[2,26]),e(I,[2,27]),e(I,[2,28]),e(I,[2,29]),e(I,[2,30]),{34:[1,51]},{36:[1,52]},e(I,[2,33]),e(I,[2,63],{53:53,66:56,67:57,13:[1,54],22:[1,55],68:_,69:A,70:M,71:D,72:P,73:B,74:O}),{39:[1,65]},e($,[2,47],{39:[1,67],44:[1,66],46:[1,68]}),e(I,[2,65]),e(I,[2,66]),{16:69,60:p,86:w,100:S,102:R},{16:39,17:40,19:70,60:p,86:w,100:S,102:R,103:L},{16:39,17:40,19:71,60:p,86:w,100:S,102:R,103:L},{16:39,17:40,19:72,60:p,86:w,100:S,102:R,103:L},{60:[1,73]},{13:[1,74]},{16:39,17:40,19:75,60:p,86:w,100:S,102:R,103:L},{13:V,55:76},{58:78,60:[1,79]},e(I,[2,76]),e(I,[2,77]),e(I,[2,78]),e(I,[2,79]),e(G,[2,13],{16:39,17:40,19:81,18:[1,80],20:[1,82],60:p,86:w,100:S,102:R,103:L}),e(G,[2,15],{20:[1,83]}),{15:84,16:85,17:86,60:p,86:w,100:S,102:R,103:L},{16:39,17:40,19:87,60:p,86:w,100:S,102:R,103:L},e(z,[2,133]),e(z,[2,134]),e(z,[2,135]),e(z,[2,136]),e([1,8,9,12,13,20,22,39,41,44,46,68,69,70,71,72,73,74,79,81],[2,137]),e(N,[2,6],{10:5,21:7,23:8,24:9,25:10,26:11,27:12,28:13,29:14,30:15,31:16,32:17,19:21,38:22,43:23,16:39,17:40,5:88,33:t,35:r,37:n,42:i,46:a,48:s,51:l,52:u,54:h,56:d,57:f,60:p,62:m,63:g,64:y,65:v,75:x,76:b,78:T,82:k,83:C,86:w,100:S,102:R,103:L}),{5:89,10:5,16:39,17:40,19:21,21:7,23:8,24:9,25:10,26:11,27:12,28:13,29:14,30:15,31:16,32:17,33:t,35:r,37:n,38:22,42:i,43:23,46:a,48:s,51:l,52:u,54:h,56:d,57:f,60:p,62:m,63:g,64:y,65:v,75:x,76:b,78:T,82:k,83:C,86:w,100:S,102:R,103:L},e(I,[2,20]),e(I,[2,31]),e(I,[2,32]),{13:[1,91],16:39,17:40,19:90,60:p,86:w,100:S,102:R,103:L},{53:92,66:56,67:57,68:_,69:A,70:M,71:D,72:P,73:B,74:O},e(I,[2,64]),{67:93,73:B,74:O},e(W,[2,83],{66:94,68:_,69:A,70:M,71:D,72:P}),e(H,[2,84]),e(H,[2,85]),e(H,[2,86]),e(H,[2,87]),e(H,[2,88]),e(j,[2,89]),e(j,[2,90]),{8:[1,96],23:99,24:97,30:98,38:22,40:95,42:i,43:23,48:s,54:h,56:d},{16:100,60:p,86:w,100:S,102:R},{41:[1,102],45:101,51:Q},{16:104,60:p,86:w,100:S,102:R},{47:[1,105]},{13:[1,106]},{13:[1,107]},{79:[1,108],81:[1,109]},{22:U,50:oe,59:110,60:te,82:le,84:111,85:112,86:ie,87:ae,88:Re,89:be,90:Pe},{60:[1,122]},{13:V,55:123},e($,[2,72]),e($,[2,138]),{22:U,50:oe,59:124,60:te,61:[1,125],82:le,84:111,85:112,86:ie,87:ae,88:Re,89:be,90:Pe},e(Ge,[2,74]),{16:39,17:40,19:126,60:p,86:w,100:S,102:R,103:L},e(G,[2,16]),e(G,[2,17]),e(G,[2,18]),{11:127,12:Oe,39:[2,36]},e(ue,[2,9],{16:85,17:86,15:130,18:[1,129],60:p,86:w,100:S,102:R,103:L}),e(ue,[2,10]),e(ye,[2,55],{11:131,12:Oe}),e(N,[2,7]),{9:[1,132]},e(ke,[2,67]),{16:39,17:40,19:133,60:p,86:w,100:S,102:R,103:L},{13:[1,135],16:39,17:40,19:134,60:p,86:w,100:S,102:R,103:L},e(W,[2,82],{66:136,68:_,69:A,70:M,71:D,72:P}),e(W,[2,81]),{41:[1,137]},{23:99,24:97,30:98,38:22,40:138,42:i,43:23,48:s,54:h,56:d},{8:[1,139],41:[2,38]},{8:[1,140],41:[2,41]},{8:[1,141],41:[2,44]},e($,[2,48],{39:[1,142]}),{41:[1,143]},e($,[2,50]),{41:[2,61],45:144,51:Q},{47:[1,145]},{16:39,17:40,19:146,60:p,86:w,100:S,102:R,103:L},e(I,[2,91],{13:[1,147]}),e(I,[2,93],{13:[1,149],77:[1,148]}),e(I,[2,97],{13:[1,150],80:[1,151]}),{13:[1,152]},e(I,[2,105],{61:ce}),e(re,[2,107],{85:154,22:U,50:oe,60:te,82:le,86:ie,87:ae,88:Re,89:be,90:Pe}),e(J,[2,109]),e(J,[2,111]),e(J,[2,112]),e(J,[2,113]),e(J,[2,114]),e(J,[2,115]),e(J,[2,116]),e(J,[2,117]),e(J,[2,118]),e(J,[2,119]),e(I,[2,106]),e($,[2,71]),e(I,[2,73],{61:ce}),{60:[1,155]},e(G,[2,14]),{39:[2,37]},{13:[1,156]},{15:157,16:85,17:86,60:p,86:w,100:S,102:R,103:L},e(ue,[2,12]),e(ye,[2,56]),{1:[2,4]},e(ke,[2,69]),e(ke,[2,68]),{16:39,17:40,19:158,60:p,86:w,100:S,102:R,103:L},e(W,[2,80]),e($,[2,34]),{41:[1,159]},{23:99,24:97,30:98,38:22,40:160,41:[2,39],42:i,43:23,48:s,54:h,56:d},{23:99,24:97,30:98,38:22,40:161,41:[2,42],42:i,43:23,48:s,54:h,56:d},{23:99,24:97,30:98,38:22,40:162,41:[2,45],42:i,43:23,48:s,54:h,56:d},{45:163,51:Q},e($,[2,49]),{41:[2,62]},e($,[2,52],{39:[1,164]}),e(I,[2,60]),e(I,[2,92]),e(I,[2,94]),e(I,[2,95],{77:[1,165]}),e(I,[2,98]),e(I,[2,99],{13:[1,166]}),e(I,[2,101],{13:[1,168],77:[1,167]}),{22:U,50:oe,60:te,82:le,84:169,85:112,86:ie,87:ae,88:Re,89:be,90:Pe},e(J,[2,110]),e(Ge,[2,75]),{14:[1,170]},e(ue,[2,11]),e(ke,[2,70]),e($,[2,35]),{41:[2,40]},{41:[2,43]},{41:[2,46]},{41:[1,171]},{41:[1,173],45:172,51:Q},e(I,[2,96]),e(I,[2,100]),e(I,[2,102]),e(I,[2,103],{77:[1,174]}),e(re,[2,108],{85:154,22:U,50:oe,60:te,82:le,86:ie,87:ae,88:Re,89:be,90:Pe}),e(ye,[2,8]),e($,[2,51]),{41:[1,175]},e($,[2,54]),e(I,[2,104]),e($,[2,53])],defaultActions:{2:[2,1],3:[2,2],4:[2,3],127:[2,37],132:[2,4],144:[2,62],160:[2,40],161:[2,43],162:[2,46]},parseError:o(function(Me,ve){if(ve.recoverable)this.trace(Me);else{var ne=new Error(Me);throw ne.hash=ve,ne}},"parseError"),parse:o(function(Me){var ve=this,ne=[0],q=[],he=[null],X=[],fe=this.table,K="",qe=0,_e=0,Be=0,Ne=2,He=1,$e=X.slice.call(arguments,1),Xe=Object.create(this.lexer),Fe={yy:{}};for(var Ke in this.yy)Object.prototype.hasOwnProperty.call(this.yy,Ke)&&(Fe.yy[Ke]=this.yy[Ke]);Xe.setInput(Me,Fe.yy),Fe.yy.lexer=Xe,Fe.yy.parser=this,typeof Xe.yylloc>"u"&&(Xe.yylloc={});var xe=Xe.yylloc;X.push(xe);var mt=Xe.options&&Xe.options.ranges;typeof Fe.yy.parseError=="function"?this.parseError=Fe.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function Le(ot){ne.length=ne.length-2*ot,he.length=he.length-ot,X.length=X.length-ot}o(Le,"popStack");function ft(){var ot;return ot=q.pop()||Xe.lex()||He,typeof ot!="number"&&(ot instanceof Array&&(q=ot,ot=q.pop()),ot=ve.symbols_[ot]||ot),ot}o(ft,"lex");for(var wt,zt,St,At,bt,me,lt={},gt,Ze,Ee,tt;;){if(St=ne[ne.length-1],this.defaultActions[St]?At=this.defaultActions[St]:((wt===null||typeof wt>"u")&&(wt=ft()),At=fe[St]&&fe[St][wt]),typeof At>"u"||!At.length||!At[0]){var at="";tt=[];for(gt in fe[St])this.terminals_[gt]&&gt>Ne&&tt.push("'"+this.terminals_[gt]+"'");Xe.showPosition?at="Parse error on line "+(qe+1)+`:
+`+Xe.showPosition()+`
+Expecting `+tt.join(", ")+", got '"+(this.terminals_[wt]||wt)+"'":at="Parse error on line "+(qe+1)+": Unexpected "+(wt==He?"end of input":"'"+(this.terminals_[wt]||wt)+"'"),this.parseError(at,{text:Xe.match,token:this.terminals_[wt]||wt,line:Xe.yylineno,loc:xe,expected:tt})}if(At[0]instanceof Array&&At.length>1)throw new Error("Parse Error: multiple actions possible at state: "+St+", token: "+wt);switch(At[0]){case 1:ne.push(wt),he.push(Xe.yytext),X.push(Xe.yylloc),ne.push(At[1]),wt=null,zt?(wt=zt,zt=null):(_e=Xe.yyleng,K=Xe.yytext,qe=Xe.yylineno,xe=Xe.yylloc,Be>0&&Be--);break;case 2:if(Ze=this.productions_[At[1]][1],lt.$=he[he.length-Ze],lt._$={first_line:X[X.length-(Ze||1)].first_line,last_line:X[X.length-1].last_line,first_column:X[X.length-(Ze||1)].first_column,last_column:X[X.length-1].last_column},mt&&(lt._$.range=[X[X.length-(Ze||1)].range[0],X[X.length-1].range[1]]),me=this.performAction.apply(lt,[K,_e,qe,Fe.yy,At[1],he,X].concat($e)),typeof me<"u")return me;Ze&&(ne=ne.slice(0,-1*Ze*2),he=he.slice(0,-1*Ze),X=X.slice(0,-1*Ze)),ne.push(this.productions_[At[1]][0]),he.push(lt.$),X.push(lt._$),Ee=fe[ne[ne.length-2]][ne[ne.length-1]],ne.push(Ee);break;case 3:return!0}}return!0},"parse")},ge=(function(){var we={EOF:1,parseError:o(function(ve,ne){if(this.yy.parser)this.yy.parser.parseError(ve,ne);else throw new Error(ve)},"parseError"),setInput:o(function(Me,ve){return this.yy=ve||this.yy||{},this._input=Me,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},"setInput"),input:o(function(){var Me=this._input[0];this.yytext+=Me,this.yyleng++,this.offset++,this.match+=Me,this.matched+=Me;var ve=Me.match(/(?:\r\n?|\n).*/g);return ve?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),Me},"input"),unput:o(function(Me){var ve=Me.length,ne=Me.split(/(?:\r\n?|\n)/g);this._input=Me+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-ve),this.offset-=ve;var q=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),ne.length-1&&(this.yylineno-=ne.length-1);var he=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:ne?(ne.length===q.length?this.yylloc.first_column:0)+q[q.length-ne.length].length-ne[0].length:this.yylloc.first_column-ve},this.options.ranges&&(this.yylloc.range=[he[0],he[0]+this.yyleng-ve]),this.yyleng=this.yytext.length,this},"unput"),more:o(function(){return this._more=!0,this},"more"),reject:o(function(){if(this.options.backtrack_lexer)this._backtrack=!0;else return this.parseError("Lexical error on line "+(this.yylineno+1)+`. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).
+`+this.showPosition(),{text:"",token:null,line:this.yylineno});return this},"reject"),less:o(function(Me){this.unput(this.match.slice(Me))},"less"),pastInput:o(function(){var Me=this.matched.substr(0,this.matched.length-this.match.length);return(Me.length>20?"...":"")+Me.substr(-20).replace(/\n/g,"")},"pastInput"),upcomingInput:o(function(){var Me=this.match;return Me.length<20&&(Me+=this._input.substr(0,20-Me.length)),(Me.substr(0,20)+(Me.length>20?"...":"")).replace(/\n/g,"")},"upcomingInput"),showPosition:o(function(){var Me=this.pastInput(),ve=new Array(Me.length+1).join("-");return Me+this.upcomingInput()+`
+`+ve+"^"},"showPosition"),test_match:o(function(Me,ve){var ne,q,he;if(this.options.backtrack_lexer&&(he={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(he.yylloc.range=this.yylloc.range.slice(0))),q=Me[0].match(/(?:\r\n?|\n).*/g),q&&(this.yylineno+=q.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:q?q[q.length-1].length-q[q.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+Me[0].length},this.yytext+=Me[0],this.match+=Me[0],this.matches=Me,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(Me[0].length),this.matched+=Me[0],ne=this.performAction.call(this,this.yy,this,ve,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),ne)return ne;if(this._backtrack){for(var X in he)this[X]=he[X];return!1}return!1},"test_match"),next:o(function(){if(this.done)return this.EOF;this._input||(this.done=!0);var Me,ve,ne,q;this._more||(this.yytext="",this.match="");for(var he=this._currentRules(),X=0;X<he.length;X++)if(ne=this._input.match(this.rules[he[X]]),ne&&(!ve||ne[0].length>ve[0].length)){if(ve=ne,q=X,this.options.backtrack_lexer){if(Me=this.test_match(ne,he[X]),Me!==!1)return Me;if(this._backtrack){ve=!1;continue}else return!1}else if(!this.options.flex)break}return ve?(Me=this.test_match(ve,he[q]),Me!==!1?Me:!1):this._input===""?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+`. Unrecognized text.
+`+this.showPosition(),{text:"",token:null,line:this.yylineno})},"next"),lex:o(function(){var ve=this.next();return ve||this.lex()},"lex"),begin:o(function(ve){this.conditionStack.push(ve)},"begin"),popState:o(function(){var ve=this.conditionStack.length-1;return ve>0?this.conditionStack.pop():this.conditionStack[0]},"popState"),_currentRules:o(function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},"_currentRules"),topState:o(function(ve){return ve=this.conditionStack.length-1-Math.abs(ve||0),ve>=0?this.conditionStack[ve]:"INITIAL"},"topState"),pushState:o(function(ve){this.begin(ve)},"pushState"),stateStackSize:o(function(){return this.conditionStack.length},"stateStackSize"),options:{},performAction:o(function(ve,ne,q,he){var X=he;switch(q){case 0:return 62;case 1:return 63;case 2:return 64;case 3:return 65;case 4:break;case 5:break;case 6:return this.begin("acc_title"),33;break;case 7:return this.popState(),"acc_title_value";break;case 8:return this.begin("acc_descr"),35;break;case 9:return this.popState(),"acc_descr_value";break;case 10:this.begin("acc_descr_multiline");break;case 11:this.popState();break;case 12:return"acc_descr_multiline_value";case 13:return 8;case 14:break;case 15:return 7;case 16:return 7;case 17:return"EDGE_STATE";case 18:this.begin("callback_name");break;case 19:this.popState();break;case 20:this.popState(),this.begin("callback_args");break;case 21:return 79;case 22:this.popState();break;case 23:return 80;case 24:this.popState();break;case 25:return"STR";case 26:this.begin("string");break;case 27:return 82;case 28:return 57;case 29:return this.begin("namespace"),42;break;case 30:return this.popState(),8;break;case 31:break;case 32:return this.begin("namespace-body"),39;break;case 33:this.popState(),this.less(0);break;case 34:return this.popState(),41;break;case 35:return"EOF_IN_STRUCT";case 36:return 8;case 37:break;case 38:return"EDGE_STATE";case 39:return this.begin("class"),48;break;case 40:return this.popState(),8;break;case 41:break;case 42:return this.popState(),this.popState(),41;break;case 43:return this.begin("class-body"),39;break;case 44:return this.popState(),41;break;case 45:return"EOF_IN_STRUCT";case 46:return"EDGE_STATE";case 47:return"OPEN_IN_STRUCT";case 48:break;case 49:return"MEMBER";case 50:return 83;case 51:return 75;case 52:return 76;case 53:return 78;case 54:return 54;case 55:return 56;case 56:return 46;case 57:return 47;case 58:return 81;case 59:this.popState();break;case 60:return"GENERICTYPE";case 61:this.begin("generic");break;case 62:this.popState();break;case 63:return"BQUOTE_STR";case 64:this.begin("bqstring");break;case 65:return 77;case 66:return 77;case 67:return 77;case 68:return 77;case 69:return 69;case 70:return 69;case 71:return 71;case 72:return 71;case 73:return 70;case 74:return 68;case 75:return 72;case 76:return 73;case 77:return 74;case 78:return 22;case 79:return 44;case 80:return 100;case 81:return 18;case 82:return"PLUS";case 83:return 87;case 84:return 61;case 85:return 89;case 86:return 89;case 87:return 90;case 88:return"EQUALS";case 89:return"EQUALS";case 90:return 60;case 91:return 12;case 92:return 14;case 93:return"PUNCTUATION";case 94:return 86;case 95:return 102;case 96:return 50;case 97:return 50;case 98:return 9}},"anonymous"),rules:[/^(?:.*direction\s+TB[^\n]*)/,/^(?:.*direction\s+BT[^\n]*)/,/^(?:.*direction\s+RL[^\n]*)/,/^(?:.*direction\s+LR[^\n]*)/,/^(?:%%(?!\{)*[^\n]*(\r?\n?)+)/,/^(?:%%[^\n]*(\r?\n)*)/,/^(?:accTitle\s*:\s*)/,/^(?:(?!\n||)*[^\n]*)/,/^(?:accDescr\s*:\s*)/,/^(?:(?!\n||)*[^\n]*)/,/^(?:accDescr\s*\{\s*)/,/^(?:[\}])/,/^(?:[^\}]*)/,/^(?:\s*(\r?\n)+)/,/^(?:\s+)/,/^(?:classDiagram-v2\b)/,/^(?:classDiagram\b)/,/^(?:\[\*\])/,/^(?:call[\s]+)/,/^(?:\([\s]*\))/,/^(?:\()/,/^(?:[^(]*)/,/^(?:\))/,/^(?:[^)]*)/,/^(?:["])/,/^(?:[^"]*)/,/^(?:["])/,/^(?:style\b)/,/^(?:classDef\b)/,/^(?:namespace\b)/,/^(?:\s*(\r?\n)+)/,/^(?:\s+)/,/^(?:[{])/,/^(?:[}])/,/^(?:[}])/,/^(?:$)/,/^(?:\s*(\r?\n)+)/,/^(?:\s+)/,/^(?:\[\*\])/,/^(?:class\b)/,/^(?:\s*(\r?\n)+)/,/^(?:\s+)/,/^(?:[}])/,/^(?:[{])/,/^(?:[}])/,/^(?:$)/,/^(?:\[\*\])/,/^(?:[{])/,/^(?:[\n])/,/^(?:[^{}\n]*)/,/^(?:cssClass\b)/,/^(?:callback\b)/,/^(?:link\b)/,/^(?:click\b)/,/^(?:note for\b)/,/^(?:note\b)/,/^(?:<<)/,/^(?:>>)/,/^(?:href\b)/,/^(?:[~])/,/^(?:[^~]*)/,/^(?:~)/,/^(?:[`])/,/^(?:[^`]+)/,/^(?:[`])/,/^(?:_self\b)/,/^(?:_blank\b)/,/^(?:_parent\b)/,/^(?:_top\b)/,/^(?:\s*<\|)/,/^(?:\s*\|>)/,/^(?:\s*>)/,/^(?:\s*<)/,/^(?:\s*\*)/,/^(?:\s*o\b)/,/^(?:\s*\(\))/,/^(?:--)/,/^(?:\.\.)/,/^(?::{1}[^:\n;]+)/,/^(?::{3})/,/^(?:-)/,/^(?:\.)/,/^(?:\+)/,/^(?::)/,/^(?:,)/,/^(?:#)/,/^(?:#)/,/^(?:%)/,/^(?:=)/,/^(?:=)/,/^(?:\w+)/,/^(?:\[)/,/^(?:\])/,/^(?:[!"#$%&'*+,-.`?\\/])/,/^(?:[0-9]+)/,/^(?:[\u00AA\u00B5\u00BA\u00C0-\u00D6\u00D8-\u00F6]|[\u00F8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377]|[\u037A-\u037D\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5]|[\u03F7-\u0481\u048A-\u0527\u0531-\u0556\u0559\u0561-\u0587\u05D0-\u05EA]|[\u05F0-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE]|[\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA]|[\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u08A0]|[\u08A2-\u08AC\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0977]|[\u0979-\u097F\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2]|[\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u0A05-\u0A0A]|[\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39]|[\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8]|[\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0B05-\u0B0C]|[\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C]|[\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99]|[\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0]|[\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C33\u0C35-\u0C39\u0C3D]|[\u0C58\u0C59\u0C60\u0C61\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3]|[\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D05-\u0D0C\u0D0E-\u0D10]|[\u0D12-\u0D3A\u0D3D\u0D4E\u0D60\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1]|[\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81]|[\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3]|[\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6]|[\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A]|[\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081]|[\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D]|[\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0]|[\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310]|[\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F4\u1401-\u166C]|[\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u1700-\u170C\u170E-\u1711]|[\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7]|[\u17DC\u1820-\u1877\u1880-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191C]|[\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19C1-\u19C7\u1A00-\u1A16]|[\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4B\u1B83-\u1BA0\u1BAE\u1BAF]|[\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1CE9-\u1CEC]|[\u1CEE-\u1CF1\u1CF5\u1CF6\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D]|[\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D]|[\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3]|[\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F]|[\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128]|[\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2183\u2184]|[\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3]|[\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6]|[\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE]|[\u2DD0-\u2DD6\u2DD8-\u2DDE\u2E2F\u3005\u3006\u3031-\u3035\u303B\u303C]|[\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312D]|[\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FCC]|[\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B]|[\uA640-\uA66E\uA67F-\uA697\uA6A0-\uA6E5\uA717-\uA71F\uA722-\uA788]|[\uA78B-\uA78E\uA790-\uA793\uA7A0-\uA7AA\uA7F8-\uA801\uA803-\uA805]|[\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB]|[\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uAA00-\uAA28]|[\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA80-\uAAAF\uAAB1\uAAB5]|[\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4]|[\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E]|[\uABC0-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D]|[\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36]|[\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D]|[\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC]|[\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF]|[\uFFD2-\uFFD7\uFFDA-\uFFDC])/,/^(?:\s)/,/^(?:\s)/,/^(?:$)/],conditions:{"namespace-body":{rules:[26,29,34,35,36,37,38,39,50,51,52,53,54,55,56,57,58,61,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,87,88,89,90,91,92,93,94,95,96,98],inclusive:!1},namespace:{rules:[26,29,30,31,32,33,50,51,52,53,54,55,56,57,58,61,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,87,88,89,90,91,92,93,94,95,96,98],inclusive:!1},"class-body":{rules:[26,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,61,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,87,88,89,90,91,92,93,94,95,96,98],inclusive:!1},class:{rules:[26,40,41,42,43,50,51,52,53,54,55,56,57,58,61,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,87,88,89,90,91,92,93,94,95,96,98],inclusive:!1},acc_descr_multiline:{rules:[11,12,26,50,51,52,53,54,55,56,57,58,61,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,87,88,89,90,91,92,93,94,95,96,98],inclusive:!1},acc_descr:{rules:[9,26,50,51,52,53,54,55,56,57,58,61,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,87,88,89,90,91,92,93,94,95,96,98],inclusive:!1},acc_title:{rules:[7,26,50,51,52,53,54,55,56,57,58,61,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,87,88,89,90,91,92,93,94,95,96,98],inclusive:!1},callback_args:{rules:[22,23,26,50,51,52,53,54,55,56,57,58,61,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,87,88,89,90,91,92,93,94,95,96,98],inclusive:!1},callback_name:{rules:[19,20,21,26,50,51,52,53,54,55,56,57,58,61,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,87,88,89,90,91,92,93,94,95,96,98],inclusive:!1},href:{rules:[26,50,51,52,53,54,55,56,57,58,61,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,87,88,89,90,91,92,93,94,95,96,98],inclusive:!1},struct:{rules:[26,50,51,52,53,54,55,56,57,58,61,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,87,88,89,90,91,92,93,94,95,96,98],inclusive:!1},generic:{rules:[26,50,51,52,53,54,55,56,57,58,59,60,61,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,87,88,89,90,91,92,93,94,95,96,98],inclusive:!1},bqstring:{rules:[26,50,51,52,53,54,55,56,57,58,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,87,88,89,90,91,92,93,94,95,96,98],inclusive:!1},string:{rules:[24,25,26,50,51,52,53,54,55,56,57,58,61,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,87,88,89,90,91,92,93,94,95,96,98],inclusive:!1},INITIAL:{rules:[0,1,2,3,4,5,6,8,10,13,14,15,16,17,18,26,27,28,29,39,50,51,52,53,54,55,56,57,58,61,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98],inclusive:!0}}};return we})();se.lexer=ge;function Te(){this.yy={}}return o(Te,"Parser"),Te.prototype=se,se.Parser=Te,new Te})();hY.parser=hY;SL=hY});var gIe,Vw,yIe=F(()=>{"use strict";Xt();Vr();gIe=["#","+","~","-",""],Vw=class{static{o(this,"ClassMember")}constructor(t,r){this.memberType=r,this.visibility="",this.classifier="",this.text="";let n=mr(t,Ae());this.parseMember(n)}getDisplayDetails(){let t=this.visibility+qc(this.id);this.memberType==="method"&&(t+=`(${qc(this.parameters.trim())})`,this.returnType&&(t+=" : "+qc(this.returnType))),t=t.trim();let r=this.parseClassifier();return{displayText:t,cssStyle:r}}parseMember(t){let r="";if(this.memberType==="method"){let a=/([#+~-])?(.+)\((.*)\)([\s$*])?(.*)([$*])?/.exec(t);if(a){let s=a[1]?a[1].trim():"";if(gIe.includes(s)&&(this.visibility=s),this.id=a[2],this.parameters=a[3]?a[3].trim():"",r=a[4]?a[4].trim():"",this.returnType=a[5]?a[5].trim():"",r===""){let l=this.returnType.substring(this.returnType.length-1);/[$*]/.exec(l)&&(r=l,this.returnType=this.returnType.substring(0,this.returnType.length-1))}}}else{let i=t.length,a=t.substring(0,1),s=t.substring(i-1);gIe.includes(a)&&(this.visibility=a),/[$*]/.exec(s)&&(r=s),this.id=t.substring(this.visibility===""?0:1,r===""?i:i-1)}this.classifier=r,this.id=this.id.startsWith(" ")?" "+this.id.trim():this.id.trim();let n=`${this.visibility?"\\"+this.visibility:""}${qc(this.id)}${this.memberType==="method"?`(${qc(this.parameters)})${this.returnType?" : "+qc(this.returnType):""}`:""}`;this.text=n.replaceAll("<","&lt;").replaceAll(">","&gt;"),this.text.startsWith("\\&lt;")&&(this.text=this.text.replace("\\&lt;","~"))}parseClassifier(){switch(this.classifier){case"*":return"font-style:italic;";case"$":return"text-decoration:underline;";default:return""}}}});var EL,vIe,A0,rx,fY=F(()=>{"use strict";$r();vt();Xt();Vr();Qt();Nn();Hd();yIe();H0();EL="classId-",vIe=0,A0=o(e=>xt.sanitizeText(e,Ae()),"sanitizeText"),rx=class e{constructor(){this.relations=[];this.classes=new Map;this.styleClasses=new Map;this.notes=new Map;this.interfaces=[];this.namespaces=new Map;this.namespaceCounter=0;this.namespaceStack=[];this.diagramId="";this.functions=[];this.lineType={LINE:0,DOTTED_LINE:1};this.relationType={AGGREGATION:0,EXTENSION:1,COMPOSITION:2,DEPENDENCY:3,LOLLIPOP:4};this.setupToolTips=o(t=>{let r=Dy();et(t).select("svg").selectAll("g").filter(function(){return et(this).attr("title")!==null}).on("mouseover",a=>{let s=et(a.currentTarget),l=s.attr("title");if(!l)return;let u=a.currentTarget.getBoundingClientRect();r.transition().duration(200).style("opacity",".9"),r.html(Zs.sanitize(l)).style("left",`${window.scrollX+u.left+u.width/2}px`).style("top",`${window.scrollY+u.bottom+4}px`),s.classed("hover",!0)}).on("mouseout",a=>{r.transition().duration(500).style("opacity",0),et(a.currentTarget).classed("hover",!1)})},"setupToolTips");this.direction="TB";this.setAccTitle=kr;this.getAccTitle=Ar;this.setAccDescription=Rr;this.getAccDescription=_r;this.setDiagramTitle=Or;this.getDiagramTitle=Lr;this.getConfig=o(()=>Ae().class,"getConfig");this.functions.push(this.setupToolTips.bind(this)),this.clear(),this.addRelation=this.addRelation.bind(this),this.addClassesToNamespace=this.addClassesToNamespace.bind(this),this.addNamespace=this.addNamespace.bind(this),this.popNamespace=this.popNamespace.bind(this),this.setCssClass=this.setCssClass.bind(this),this.addMembers=this.addMembers.bind(this),this.addClass=this.addClass.bind(this),this.setClassLabel=this.setClassLabel.bind(this),this.addAnnotation=this.addAnnotation.bind(this),this.addMember=this.addMember.bind(this),this.cleanupLabel=this.cleanupLabel.bind(this),this.addNote=this.addNote.bind(this),this.defineClass=this.defineClass.bind(this),this.setDirection=this.setDirection.bind(this),this.setLink=this.setLink.bind(this),this.bindFunctions=this.bindFunctions.bind(this),this.clear=this.clear.bind(this),this.setTooltip=this.setTooltip.bind(this),this.setClickEvent=this.setClickEvent.bind(this),this.setCssStyle=this.setCssStyle.bind(this)}static{o(this,"ClassDB")}splitClassNameAndType(t){let r=xt.sanitizeText(t,Ae()),n="",i=r;if(r.indexOf("~")>0){let a=r.split("~");i=A0(a[0]),n=A0(a[1])}return{className:i,type:n}}setClassLabel(t,r){let n=xt.sanitizeText(t,Ae());r&&(r=A0(r));let{className:i}=this.splitClassNameAndType(n);this.classes.get(i).label=r,this.classes.get(i).text=`${r}${this.classes.get(i).type?`<${this.classes.get(i).type}>`:""}`}addClass(t){let r=xt.sanitizeText(t,Ae()),{className:n,type:i}=this.splitClassNameAndType(r);if(this.classes.has(n))return;let a=xt.sanitizeText(n,Ae());this.classes.set(a,{id:a,type:i,label:a,text:`${a}${i?`&lt;${i}&gt;`:""}`,shape:"classBox",cssClasses:"default",methods:[],members:[],annotations:[],styles:[],domId:EL+a+"-"+vIe}),vIe++}addInterface(t,r){let n={id:`interface${this.interfaces.length}`,label:t,classId:r};this.interfaces.push(n)}setDiagramId(t){this.diagramId=t}lookUpDomId(t){let r=xt.sanitizeText(t,Ae());if(this.classes.has(r)){let n=this.classes.get(r).domId;return this.diagramId?`${this.diagramId}-${n}`:n}throw new Error("Class not found: "+r)}clear(){this.relations=[],this.classes=new Map,this.notes=new Map,this.interfaces=[],this.functions=[],this.functions.push(this.setupToolTips.bind(this)),this.namespaces=new Map,this.namespaceCounter=0,this.namespaceStack=[],this.diagramId="",this.direction="TB",yr()}getClass(t){return this.classes.get(t)}getClasses(){return this.classes}getRelations(){return this.relations}getNote(t){let r=typeof t=="number"?`note${t}`:t;return this.notes.get(r)}getNotes(){return this.notes}addRelation(t){Z.debug("Adding relation: "+JSON.stringify(t));let r=[this.relationType.LOLLIPOP,this.relationType.AGGREGATION,this.relationType.COMPOSITION,this.relationType.DEPENDENCY,this.relationType.EXTENSION];t.relation.type1===this.relationType.LOLLIPOP&&!r.includes(t.relation.type2)?(this.addClass(t.id2),this.addInterface(t.id1,t.id2),t.id1=`interface${this.interfaces.length-1}`):t.relation.type2===this.relationType.LOLLIPOP&&!r.includes(t.relation.type1)?(this.addClass(t.id1),this.addInterface(t.id2,t.id1),t.id2=`interface${this.interfaces.length-1}`):(this.addClass(t.id1),this.addClass(t.id2)),t.id1=this.splitClassNameAndType(t.id1).className,t.id2=this.splitClassNameAndType(t.id2).className,t.relationTitle1=xt.sanitizeText(t.relationTitle1.trim(),Ae()),t.relationTitle2=xt.sanitizeText(t.relationTitle2.trim(),Ae()),this.relations.push(t)}addAnnotation(t,r){let n=this.splitClassNameAndType(t).className;this.classes.get(n).annotations.push(r)}addMember(t,r){this.addClass(t);let n=this.splitClassNameAndType(t).className,i=this.classes.get(n);if(typeof r=="string"){let a=r.trim();a.startsWith("<<")&&a.endsWith(">>")?i.annotations.push(A0(a.substring(2,a.length-2))):a.indexOf(")")>0?i.methods.push(new Vw(a,"method")):a&&i.members.push(new Vw(a,"attribute"))}}addMembers(t,r){Array.isArray(r)&&(r.reverse(),r.forEach(n=>this.addMember(t,n)))}addNote(t,r){let n=this.notes.size,i={id:`note${n}`,class:r,text:t,index:n};return this.notes.set(i.id,i),i.id}cleanupLabel(t){return t.startsWith(":")&&(t=t.substring(1)),A0(t.trim())}setCssClass(t,r){t.split(",").forEach(n=>{let i=n;/\d/.exec(n[0])&&(i=EL+i),i=this.splitClassNameAndType(i).className;let a=this.classes.get(i);a&&(a.cssClasses+=" "+r)})}defineClass(t,r){for(let n of t){let i=this.styleClasses.get(n);i===void 0&&(i={id:n,styles:[],textStyles:[]},this.styleClasses.set(n,i)),r&&r.forEach(a=>{if(/color/.exec(a)){let s=a.replace("fill","bgFill");i.textStyles.push(s)}i.styles.push(a)}),this.classes.forEach(a=>{a.cssClasses.includes(n)&&a.styles.push(...r.flatMap(s=>s.split(",")))})}}setTooltip(t,r){t.split(",").forEach(n=>{if(r!==void 0){let i=this.splitClassNameAndType(n).className,a=this.classes.get(i);a&&(a.tooltip=A0(r))}})}getTooltip(t,r){return r&&this.namespaces.has(r)?this.namespaces.get(r).classes.get(t).tooltip:this.classes.get(t).tooltip}setLink(t,r,n){let i=Ae();t.split(",").forEach(a=>{let s=a;/\d/.exec(a[0])&&(s=EL+s),s=this.splitClassNameAndType(s).className;let l=this.classes.get(s);l&&(l.link=Zt.formatUrl(r,i),i.securityLevel==="sandbox"?l.linkTarget="_top":typeof n=="string"?l.linkTarget=A0(n):l.linkTarget="_blank")}),this.setCssClass(t,"clickable")}setClickEvent(t,r,n){t.split(",").forEach(i=>{this.setClickFunc(i,r,n);let a=this.splitClassNameAndType(i).className,s=this.classes.get(a);s&&(s.haveCallback=!0)}),this.setCssClass(t,"clickable")}setClickFunc(t,r,n){let i=xt.sanitizeText(t,Ae());if(Ae().securityLevel!=="loose"||r===void 0)return;let s=this.splitClassNameAndType(i).className;if(this.classes.has(s)){let l=[];if(typeof n=="string"){l=n.split(/,(?=(?:(?:[^"]*"){2})*[^"]*$)/);for(let u=0;u<l.length;u++){let h=l[u].trim();h.startsWith('"')&&h.endsWith('"')&&(h=h.substr(1,h.length-2)),l[u]=h}}l.length===0&&l.push(s),this.functions.push(()=>{let u=this.lookUpDomId(s),h=document.querySelector(`[id="${u}"]`);h!==null&&h.addEventListener("click",()=>{Zt.runFunc(r,...l)},!1)})}}bindFunctions(t){this.functions.forEach(r=>{r(t)})}escapeHtml(t){return t.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;").replace(/'/g,"&#39;")}getDirection(){return this.direction}setDirection(t){this.direction=t}static resolveQualifiedId(t,r){let n=r.at(-1);return n?`${n}.${t}`:t}static getAncestorIds(t){let r=t.split("."),n=new Array(r.length);n[0]=r[0];for(let i=1;i<r.length;i++)n[i]=`${n[i-1]}.${r[i]}`;return n}createNamespaceNode(t,r,n,i=!1){return{id:t,label:r,classes:new Map,notes:new Map,children:new Map,domId:EL+t+"-"+this.namespaceCounter++,parent:n,explicit:i}}linkParentChild(t,r){let n=this.namespaces.get(t),i=this.namespaces.get(r);!n||!i||(n.children.has(r)||n.children.set(r,i),i.parent??=t)}addNamespace(t,r){let n=e.resolveQualifiedId(t,this.namespaceStack);if(this.namespaceStack.push(n),this.namespaces.has(n)){let s=this.namespaces.get(n);return s.explicit=!0,r&&(s.label=r),n}let i=n.split("."),a=e.getAncestorIds(n);for(let s=0;s<a.length;s++){let l=a[s],u=s>0?a[s-1]:void 0,h=s===a.length-1,d=h&&r?r:i[s];this.namespaces.has(l)?h&&(this.namespaces.get(l).explicit=!0):this.namespaces.set(l,this.createNamespaceNode(l,d,u,h)),u&&this.linkParentChild(u,l)}return n}popNamespace(){this.namespaceStack.pop()}getNamespace(t){return this.namespaces.get(t)}getNamespaces(){return this.namespaces}addClassesToNamespace(t,r,n){if(this.namespaces.has(t)){for(let i of r){let{className:a}=this.splitClassNameAndType(i),s=this.getClass(a);s.parent=t,this.namespaces.get(t).classes.set(a,s)}for(let i of n){let a=this.getNote(i);a.parent=t,this.namespaces.get(t).notes.set(i,a)}}}setCssStyle(t,r){let n=this.classes.get(t);if(!(!r||!n))for(let i of r)i.includes(",")?n.styles.push(...i.split(",")):n.styles.push(i)}getArrowMarker(t){let r;switch(t){case 0:r="aggregation";break;case 1:r="extension";break;case 2:r="composition";break;case 3:r="dependency";break;case 4:r="lollipop";break;default:r="none"}return r}resolveExplicitAncestor(t){let r=t;for(;r;){let n=this.namespaces.get(r);if(!n)return;if(n.explicit)return r;r=n.parent}}getData(){let t=[],r=[],n=Ae(),i=n.class?.hierarchicalNamespaces??!0;for(let s of this.namespaces.values()){if(!i&&!s.explicit)continue;let l={id:s.id,label:i?s.label:s.id,isGroup:!0,padding:n.class.padding??16,shape:"rect",cssStyles:[],look:n.look,parentId:i?s.parent:void 0};t.push(l)}for(let s of this.classes.values()){let l=i?s.parent:this.resolveExplicitAncestor(s.parent),u={...s,type:void 0,isGroup:!1,parentId:l,look:n.look};t.push(u)}for(let s of this.notes.values()){let l=i?s.parent:this.resolveExplicitAncestor(s.parent),u={id:s.id,label:s.text,isGroup:!1,shape:"note",padding:n.class.padding??6,cssStyles:["text-align: left","white-space: nowrap",`fill: ${n.themeVariables.noteBkgColor}`,`stroke: ${n.themeVariables.noteBorderColor}`],look:n.look,parentId:l,labelType:"markdown"};t.push(u);let h=this.classes.get(s.class)?.id;if(h){let d={id:`edgeNote${s.index}`,start:s.id,end:h,type:"normal",thickness:"normal",classes:"relation",arrowTypeStart:"none",arrowTypeEnd:"none",arrowheadStyle:"",labelStyle:[""],style:["fill: none"],pattern:"dotted",look:n.look};r.push(d)}}for(let s of this.interfaces){let l={id:s.id,label:s.label,isGroup:!1,shape:"rect",cssStyles:["opacity: 0;"],look:n.look};t.push(l)}let a=0;for(let s of this.relations){a++;let l={id:eu(s.id1,s.id2,{prefix:"id",counter:a}),start:s.id1,end:s.id2,type:"normal",label:s.title,labelpos:"c",thickness:"normal",classes:"relation",arrowTypeStart:this.getArrowMarker(s.relation.type1),arrowTypeEnd:this.getArrowMarker(s.relation.type2),startLabelRight:s.relationTitle1==="none"?"":s.relationTitle1,endLabelLeft:s.relationTitle2==="none"?"":s.relationTitle2,arrowheadStyle:"",labelStyle:["display: inline-block"],style:s.style||"",pattern:s.relation.lineType==1?"dashed":"solid",look:n.look,labelType:"markdown"};r.push(l)}return{nodes:t,edges:r,other:{},config:n,direction:this.getDirection()}}}});var Y6t,AL,pY=F(()=>{"use strict";X1();Y6t=o(e=>`g.classGroup text {
   fill: ${e.nodeBorder||e.classText};
   stroke: none;
   font-family: ${e.fontFamily};
@@ -2188,13 +2202,13 @@
   }
   text-align: center;
 }
-  ${Vc()}
-`,"getStyles"),X6=TCt});var CCt,kCt,wCt,K6,mW=z(()=>{"use strict";Ut();St();Lp();tf();rf();Xt();CCt=o((e,t="TB")=>{if(!e.doc)return t;let r=t;for(let i of e.doc)i.stmt==="dir"&&(r=i.value);return r},"getDir"),kCt=o(function(e,t){return t.db.getClasses()},"getClasses"),wCt=o(async function(e,t,r,i){Z.info("REF0:"),Z.info("Drawing class diagram (v3)",t);let{securityLevel:n,state:a,layout:s}=ge();i.db.setDiagramId(t);let l=i.db.getData(),u=Fo(t,n);l.type=i.type,l.layoutAlgorithm=Gc(s),l.nodeSpacing=a?.nodeSpacing||50,l.rankSpacing=a?.rankSpacing||50,l.markers=["aggregation","extension","composition","dependency","lollipop"],l.diagramId=t,await Zo(l,u);let h=8;Zt.insertTitle(u,"classDiagramTitleText",a?.titleTopMargin??25,i.db.getDiagramTitle()),$s(u,h,"classDiagram",a?.useMaxWidth??!0)},"draw"),K6={getClasses:kCt,draw:wCt,getDir:CCt}});var A6e={};xr(A6e,{diagram:()=>SCt});var SCt,_6e=z(()=>{"use strict";dW();fW();pW();mW();SCt={parser:Y6,get db(){return new Cy},renderer:K6,styles:X6,init:o(e=>{e.class||(e.class={}),e.class.arrowMarkerAbsolute=e.arrowMarkerAbsolute},"init")}});var L6e={};xr(L6e,{diagram:()=>DCt});var DCt,M6e=z(()=>{"use strict";dW();fW();pW();mW();DCt={parser:Y6,get db(){return new Cy},renderer:K6,styles:X6,init:o(e=>{e.class||(e.class={}),e.class.arrowMarkerAbsolute=e.arrowMarkerAbsolute},"init")}});var gW,Z6,yW=z(()=>{"use strict";gW=(function(){var e=o(function($,G,F,V){for(F=F||{},V=$.length;V--;F[$[V]]=G);return F},"o"),t=[1,2],r=[1,3],i=[1,4],n=[2,4],a=[1,9],s=[1,11],l=[1,16],u=[1,17],h=[1,18],d=[1,19],f=[1,33],p=[1,20],m=[1,21],g=[1,22],y=[1,23],v=[1,24],x=[1,26],b=[1,27],T=[1,28],w=[1,29],C=[1,30],k=[1,31],E=[1,32],A=[1,35],N=[1,36],P=[1,37],I=[1,38],D=[1,34],_=[1,4,5,16,17,19,21,22,24,25,26,27,28,29,33,35,37,38,41,45,48,51,52,53,54,57],R=[1,4,5,14,15,16,17,19,21,22,24,25,26,27,28,29,33,35,37,38,39,40,41,45,48,51,52,53,54,57],M=[4,5,16,17,19,21,22,24,25,26,27,28,29,33,35,37,38,41,45,48,51,52,53,54,57],L={trace:o(function(){},"trace"),yy:{},symbols_:{error:2,start:3,SPACE:4,NL:5,SD:6,document:7,line:8,statement:9,classDefStatement:10,styleStatement:11,cssClassStatement:12,idStatement:13,DESCR:14,"-->":15,HIDE_EMPTY:16,scale:17,WIDTH:18,COMPOSIT_STATE:19,STRUCT_START:20,STRUCT_STOP:21,STATE_DESCR:22,AS:23,ID:24,FORK:25,JOIN:26,CHOICE:27,CONCURRENT:28,note:29,notePosition:30,NOTE_TEXT:31,direction:32,acc_title:33,acc_title_value:34,acc_descr:35,acc_descr_value:36,acc_descr_multiline_value:37,CLICK:38,STRING:39,HREF:40,classDef:41,CLASSDEF_ID:42,CLASSDEF_STYLEOPTS:43,DEFAULT:44,style:45,STYLE_IDS:46,STYLEDEF_STYLEOPTS:47,class:48,CLASSENTITY_IDS:49,STYLECLASS:50,direction_tb:51,direction_bt:52,direction_rl:53,direction_lr:54,eol:55,";":56,EDGE_STATE:57,STYLE_SEPARATOR:58,left_of:59,right_of:60,$accept:0,$end:1},terminals_:{2:"error",4:"SPACE",5:"NL",6:"SD",14:"DESCR",15:"-->",16:"HIDE_EMPTY",17:"scale",18:"WIDTH",19:"COMPOSIT_STATE",20:"STRUCT_START",21:"STRUCT_STOP",22:"STATE_DESCR",23:"AS",24:"ID",25:"FORK",26:"JOIN",27:"CHOICE",28:"CONCURRENT",29:"note",31:"NOTE_TEXT",33:"acc_title",34:"acc_title_value",35:"acc_descr",36:"acc_descr_value",37:"acc_descr_multiline_value",38:"CLICK",39:"STRING",40:"HREF",41:"classDef",42:"CLASSDEF_ID",43:"CLASSDEF_STYLEOPTS",44:"DEFAULT",45:"style",46:"STYLE_IDS",47:"STYLEDEF_STYLEOPTS",48:"class",49:"CLASSENTITY_IDS",50:"STYLECLASS",51:"direction_tb",52:"direction_bt",53:"direction_rl",54:"direction_lr",56:";",57:"EDGE_STATE",58:"STYLE_SEPARATOR",59:"left_of",60:"right_of"},productions_:[0,[3,2],[3,2],[3,2],[7,0],[7,2],[8,2],[8,1],[8,1],[9,1],[9,1],[9,1],[9,1],[9,2],[9,3],[9,4],[9,1],[9,2],[9,1],[9,4],[9,3],[9,6],[9,1],[9,1],[9,1],[9,1],[9,4],[9,4],[9,1],[9,2],[9,2],[9,1],[9,5],[9,5],[10,3],[10,3],[11,3],[12,3],[32,1],[32,1],[32,1],[32,1],[55,1],[55,1],[13,1],[13,1],[13,3],[13,3],[30,1],[30,1]],performAction:o(function(G,F,V,H,j,U,Q){var Y=U.length-1;switch(j){case 3:return H.setRootDoc(U[Y]),U[Y];break;case 4:this.$=[];break;case 5:U[Y]!="nl"&&(U[Y-1].push(U[Y]),this.$=U[Y-1]);break;case 6:case 7:this.$=U[Y];break;case 8:this.$="nl";break;case 12:this.$=U[Y];break;case 13:let re=U[Y-1];re.description=H.trimColon(U[Y]),this.$=re;break;case 14:this.$={stmt:"relation",state1:U[Y-2],state2:U[Y]};break;case 15:let ee=H.trimColon(U[Y]);this.$={stmt:"relation",state1:U[Y-3],state2:U[Y-1],description:ee};break;case 19:this.$={stmt:"state",id:U[Y-3],type:"default",description:"",doc:U[Y-1]};break;case 20:var ae=U[Y],J=U[Y-2].trim();if(U[Y].match(":")){var te=U[Y].split(":");ae=te[0],J=[J,te[1]]}this.$={stmt:"state",id:ae,type:"default",description:J};break;case 21:this.$={stmt:"state",id:U[Y-3],type:"default",description:U[Y-5],doc:U[Y-1]};break;case 22:this.$={stmt:"state",id:U[Y],type:"fork"};break;case 23:this.$={stmt:"state",id:U[Y],type:"join"};break;case 24:this.$={stmt:"state",id:U[Y],type:"choice"};break;case 25:this.$={stmt:"state",id:H.getDividerId(),type:"divider"};break;case 26:this.$={stmt:"state",id:U[Y-1].trim(),note:{position:U[Y-2].trim(),text:U[Y].trim()}};break;case 29:this.$=U[Y].trim(),H.setAccTitle(this.$);break;case 30:case 31:this.$=U[Y].trim(),H.setAccDescription(this.$);break;case 32:this.$={stmt:"click",id:U[Y-3],url:U[Y-2],tooltip:U[Y-1]};break;case 33:this.$={stmt:"click",id:U[Y-3],url:U[Y-1],tooltip:""};break;case 34:case 35:this.$={stmt:"classDef",id:U[Y-1].trim(),classes:U[Y].trim()};break;case 36:this.$={stmt:"style",id:U[Y-1].trim(),styleClass:U[Y].trim()};break;case 37:this.$={stmt:"applyClass",id:U[Y-1].trim(),styleClass:U[Y].trim()};break;case 38:H.setDirection("TB"),this.$={stmt:"dir",value:"TB"};break;case 39:H.setDirection("BT"),this.$={stmt:"dir",value:"BT"};break;case 40:H.setDirection("RL"),this.$={stmt:"dir",value:"RL"};break;case 41:H.setDirection("LR"),this.$={stmt:"dir",value:"LR"};break;case 44:case 45:this.$={stmt:"state",id:U[Y].trim(),type:"default",description:""};break;case 46:this.$={stmt:"state",id:U[Y-2].trim(),classes:[U[Y].trim()],type:"default",description:""};break;case 47:this.$={stmt:"state",id:U[Y-2].trim(),classes:[U[Y].trim()],type:"default",description:""};break}},"anonymous"),table:[{3:1,4:t,5:r,6:i},{1:[3]},{3:5,4:t,5:r,6:i},{3:6,4:t,5:r,6:i},e([1,4,5,16,17,19,22,24,25,26,27,28,29,33,35,37,38,41,45,48,51,52,53,54,57],n,{7:7}),{1:[2,1]},{1:[2,2]},{1:[2,3],4:a,5:s,8:8,9:10,10:12,11:13,12:14,13:15,16:l,17:u,19:h,22:d,24:f,25:p,26:m,27:g,28:y,29:v,32:25,33:x,35:b,37:T,38:w,41:C,45:k,48:E,51:A,52:N,53:P,54:I,57:D},e(_,[2,5]),{9:39,10:12,11:13,12:14,13:15,16:l,17:u,19:h,22:d,24:f,25:p,26:m,27:g,28:y,29:v,32:25,33:x,35:b,37:T,38:w,41:C,45:k,48:E,51:A,52:N,53:P,54:I,57:D},e(_,[2,7]),e(_,[2,8]),e(_,[2,9]),e(_,[2,10]),e(_,[2,11]),e(_,[2,12],{14:[1,40],15:[1,41]}),e(_,[2,16]),{18:[1,42]},e(_,[2,18],{20:[1,43]}),{23:[1,44]},e(_,[2,22]),e(_,[2,23]),e(_,[2,24]),e(_,[2,25]),{30:45,31:[1,46],59:[1,47],60:[1,48]},e(_,[2,28]),{34:[1,49]},{36:[1,50]},e(_,[2,31]),{13:51,24:f,57:D},{42:[1,52],44:[1,53]},{46:[1,54]},{49:[1,55]},e(R,[2,44],{58:[1,56]}),e(R,[2,45],{58:[1,57]}),e(_,[2,38]),e(_,[2,39]),e(_,[2,40]),e(_,[2,41]),e(_,[2,6]),e(_,[2,13]),{13:58,24:f,57:D},e(_,[2,17]),e(M,n,{7:59}),{24:[1,60]},{24:[1,61]},{23:[1,62]},{24:[2,48]},{24:[2,49]},e(_,[2,29]),e(_,[2,30]),{39:[1,63],40:[1,64]},{43:[1,65]},{43:[1,66]},{47:[1,67]},{50:[1,68]},{24:[1,69]},{24:[1,70]},e(_,[2,14],{14:[1,71]}),{4:a,5:s,8:8,9:10,10:12,11:13,12:14,13:15,16:l,17:u,19:h,21:[1,72],22:d,24:f,25:p,26:m,27:g,28:y,29:v,32:25,33:x,35:b,37:T,38:w,41:C,45:k,48:E,51:A,52:N,53:P,54:I,57:D},e(_,[2,20],{20:[1,73]}),{31:[1,74]},{24:[1,75]},{39:[1,76]},{39:[1,77]},e(_,[2,34]),e(_,[2,35]),e(_,[2,36]),e(_,[2,37]),e(R,[2,46]),e(R,[2,47]),e(_,[2,15]),e(_,[2,19]),e(M,n,{7:78}),e(_,[2,26]),e(_,[2,27]),{5:[1,79]},{5:[1,80]},{4:a,5:s,8:8,9:10,10:12,11:13,12:14,13:15,16:l,17:u,19:h,21:[1,81],22:d,24:f,25:p,26:m,27:g,28:y,29:v,32:25,33:x,35:b,37:T,38:w,41:C,45:k,48:E,51:A,52:N,53:P,54:I,57:D},e(_,[2,32]),e(_,[2,33]),e(_,[2,21])],defaultActions:{5:[2,1],6:[2,2],47:[2,48],48:[2,49]},parseError:o(function(G,F){if(F.recoverable)this.trace(G);else{var V=new Error(G);throw V.hash=F,V}},"parseError"),parse:o(function(G){var F=this,V=[0],H=[],j=[null],U=[],Q=this.table,Y="",ae=0,J=0,te=0,re=2,ee=1,Te=U.slice.call(arguments,1),ue=Object.create(this.lexer),De={yy:{}};for(var Ie in this.yy)Object.prototype.hasOwnProperty.call(this.yy,Ie)&&(De.yy[Ie]=this.yy[Ie]);ue.setInput(G,De.yy),De.yy.lexer=ue,De.yy.parser=this,typeof ue.yylloc>"u"&&(ue.yylloc={});var Ee=ue.yylloc;U.push(Ee);var we=ue.options&&ue.options.ranges;typeof De.yy.parseError=="function"?this.parseError=De.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function Me(W){V.length=V.length-2*W,j.length=j.length-W,U.length=U.length-W}o(Me,"popStack");function $e(){var W;return W=H.pop()||ue.lex()||ee,typeof W!="number"&&(W instanceof Array&&(H=W,W=H.pop()),W=F.symbols_[W]||W),W}o($e,"lex");for(var de,rt,ke,Fe,He,at,qe={},Ue,ye,ve,ie;;){if(ke=V[V.length-1],this.defaultActions[ke]?Fe=this.defaultActions[ke]:((de===null||typeof de>"u")&&(de=$e()),Fe=Q[ke]&&Q[ke][de]),typeof Fe>"u"||!Fe.length||!Fe[0]){var fe="";ie=[];for(Ue in Q[ke])this.terminals_[Ue]&&Ue>re&&ie.push("'"+this.terminals_[Ue]+"'");ue.showPosition?fe="Parse error on line "+(ae+1)+`:
-`+ue.showPosition()+`
-Expecting `+ie.join(", ")+", got '"+(this.terminals_[de]||de)+"'":fe="Parse error on line "+(ae+1)+": Unexpected "+(de==ee?"end of input":"'"+(this.terminals_[de]||de)+"'"),this.parseError(fe,{text:ue.match,token:this.terminals_[de]||de,line:ue.yylineno,loc:Ee,expected:ie})}if(Fe[0]instanceof Array&&Fe.length>1)throw new Error("Parse Error: multiple actions possible at state: "+ke+", token: "+de);switch(Fe[0]){case 1:V.push(de),j.push(ue.yytext),U.push(ue.yylloc),V.push(Fe[1]),de=null,rt?(de=rt,rt=null):(J=ue.yyleng,Y=ue.yytext,ae=ue.yylineno,Ee=ue.yylloc,te>0&&te--);break;case 2:if(ye=this.productions_[Fe[1]][1],qe.$=j[j.length-ye],qe._$={first_line:U[U.length-(ye||1)].first_line,last_line:U[U.length-1].last_line,first_column:U[U.length-(ye||1)].first_column,last_column:U[U.length-1].last_column},we&&(qe._$.range=[U[U.length-(ye||1)].range[0],U[U.length-1].range[1]]),at=this.performAction.apply(qe,[Y,J,ae,De.yy,Fe[1],j,U].concat(Te)),typeof at<"u")return at;ye&&(V=V.slice(0,-1*ye*2),j=j.slice(0,-1*ye),U=U.slice(0,-1*ye)),V.push(this.productions_[Fe[1]][0]),j.push(qe.$),U.push(qe._$),ve=Q[V[V.length-2]][V[V.length-1]],V.push(ve);break;case 3:return!0}}return!0},"parse")},B=(function(){var $={EOF:1,parseError:o(function(F,V){if(this.yy.parser)this.yy.parser.parseError(F,V);else throw new Error(F)},"parseError"),setInput:o(function(G,F){return this.yy=F||this.yy||{},this._input=G,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},"setInput"),input:o(function(){var G=this._input[0];this.yytext+=G,this.yyleng++,this.offset++,this.match+=G,this.matched+=G;var F=G.match(/(?:\r\n?|\n).*/g);return F?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),G},"input"),unput:o(function(G){var F=G.length,V=G.split(/(?:\r\n?|\n)/g);this._input=G+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-F),this.offset-=F;var H=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),V.length-1&&(this.yylineno-=V.length-1);var j=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:V?(V.length===H.length?this.yylloc.first_column:0)+H[H.length-V.length].length-V[0].length:this.yylloc.first_column-F},this.options.ranges&&(this.yylloc.range=[j[0],j[0]+this.yyleng-F]),this.yyleng=this.yytext.length,this},"unput"),more:o(function(){return this._more=!0,this},"more"),reject:o(function(){if(this.options.backtrack_lexer)this._backtrack=!0;else return this.parseError("Lexical error on line "+(this.yylineno+1)+`. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).
-`+this.showPosition(),{text:"",token:null,line:this.yylineno});return this},"reject"),less:o(function(G){this.unput(this.match.slice(G))},"less"),pastInput:o(function(){var G=this.matched.substr(0,this.matched.length-this.match.length);return(G.length>20?"...":"")+G.substr(-20).replace(/\n/g,"")},"pastInput"),upcomingInput:o(function(){var G=this.match;return G.length<20&&(G+=this._input.substr(0,20-G.length)),(G.substr(0,20)+(G.length>20?"...":"")).replace(/\n/g,"")},"upcomingInput"),showPosition:o(function(){var G=this.pastInput(),F=new Array(G.length+1).join("-");return G+this.upcomingInput()+`
-`+F+"^"},"showPosition"),test_match:o(function(G,F){var V,H,j;if(this.options.backtrack_lexer&&(j={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(j.yylloc.range=this.yylloc.range.slice(0))),H=G[0].match(/(?:\r\n?|\n).*/g),H&&(this.yylineno+=H.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:H?H[H.length-1].length-H[H.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+G[0].length},this.yytext+=G[0],this.match+=G[0],this.matches=G,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(G[0].length),this.matched+=G[0],V=this.performAction.call(this,this.yy,this,F,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),V)return V;if(this._backtrack){for(var U in j)this[U]=j[U];return!1}return!1},"test_match"),next:o(function(){if(this.done)return this.EOF;this._input||(this.done=!0);var G,F,V,H;this._more||(this.yytext="",this.match="");for(var j=this._currentRules(),U=0;U<j.length;U++)if(V=this._input.match(this.rules[j[U]]),V&&(!F||V[0].length>F[0].length)){if(F=V,H=U,this.options.backtrack_lexer){if(G=this.test_match(V,j[U]),G!==!1)return G;if(this._backtrack){F=!1;continue}else return!1}else if(!this.options.flex)break}return F?(G=this.test_match(F,j[H]),G!==!1?G:!1):this._input===""?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+`. Unrecognized text.
-`+this.showPosition(),{text:"",token:null,line:this.yylineno})},"next"),lex:o(function(){var F=this.next();return F||this.lex()},"lex"),begin:o(function(F){this.conditionStack.push(F)},"begin"),popState:o(function(){var F=this.conditionStack.length-1;return F>0?this.conditionStack.pop():this.conditionStack[0]},"popState"),_currentRules:o(function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},"_currentRules"),topState:o(function(F){return F=this.conditionStack.length-1-Math.abs(F||0),F>=0?this.conditionStack[F]:"INITIAL"},"topState"),pushState:o(function(F){this.begin(F)},"pushState"),stateStackSize:o(function(){return this.conditionStack.length},"stateStackSize"),options:{"case-insensitive":!0},performAction:o(function(F,V,H,j){function U(){let Y=V.yytext.indexOf("%%");if(Y===0)return!1;if(Y>0){let ae=V.yytext.slice(0,Y),J=V.yytext.slice(Y);J&&F.lexer.unput(J),V.yytext=ae}return!0}o(U,"processId");var Q=j;switch(H){case 0:return 38;case 1:return 40;case 2:return 39;case 3:return 44;case 4:return 51;case 5:return 52;case 6:return 53;case 7:return 54;case 8:return 5;case 9:break;case 10:break;case 11:break;case 12:break;case 13:return this.pushState("SCALE"),17;break;case 14:return 18;case 15:this.popState();break;case 16:return this.begin("acc_title"),33;break;case 17:return this.popState(),"acc_title_value";break;case 18:return this.begin("acc_descr"),35;break;case 19:return this.popState(),"acc_descr_value";break;case 20:this.begin("acc_descr_multiline");break;case 21:this.popState();break;case 22:return"acc_descr_multiline_value";case 23:return this.pushState("CLASSDEF"),41;break;case 24:return this.popState(),this.pushState("CLASSDEFID"),"DEFAULT_CLASSDEF_ID";break;case 25:return this.popState(),this.pushState("CLASSDEFID"),42;break;case 26:return this.popState(),43;break;case 27:return this.pushState("CLASS"),48;break;case 28:return this.popState(),this.pushState("CLASS_STYLE"),49;break;case 29:return this.popState(),50;break;case 30:return this.pushState("STYLE"),45;break;case 31:return this.popState(),this.pushState("STYLEDEF_STYLES"),46;break;case 32:return this.popState(),47;break;case 33:return this.pushState("SCALE"),17;break;case 34:return 18;case 35:this.popState();break;case 36:this.pushState("STATE");break;case 37:return this.popState(),V.yytext=V.yytext.slice(0,-8).trim(),25;break;case 38:return this.popState(),V.yytext=V.yytext.slice(0,-8).trim(),26;break;case 39:return this.popState(),V.yytext=V.yytext.slice(0,-10).trim(),27;break;case 40:return this.popState(),V.yytext=V.yytext.slice(0,-8).trim(),25;break;case 41:return this.popState(),V.yytext=V.yytext.slice(0,-8).trim(),26;break;case 42:return this.popState(),V.yytext=V.yytext.slice(0,-10).trim(),27;break;case 43:return 51;case 44:return 52;case 45:return 53;case 46:return 54;case 47:this.pushState("STATE_STRING");break;case 48:return this.pushState("STATE_ID"),"AS";break;case 49:if(!U())return;return this.popState(),"ID";break;case 50:this.popState();break;case 51:return"STATE_DESCR";case 52:return 19;case 53:this.popState();break;case 54:return this.popState(),this.pushState("struct"),20;break;case 55:return this.popState(),21;break;case 56:break;case 57:return this.begin("NOTE"),29;break;case 58:return this.popState(),this.pushState("NOTE_ID"),59;break;case 59:return this.popState(),this.pushState("NOTE_ID"),60;break;case 60:this.popState(),this.pushState("FLOATING_NOTE");break;case 61:return this.popState(),this.pushState("FLOATING_NOTE_ID"),"AS";break;case 62:break;case 63:return"NOTE_TEXT";case 64:if(!U())return;return this.popState(),"ID";break;case 65:if(!U())return;return this.popState(),this.pushState("NOTE_TEXT"),24;break;case 66:return this.popState(),V.yytext=V.yytext.substr(2).trim(),31;break;case 67:return this.popState(),V.yytext=V.yytext.slice(0,-8).trim(),31;break;case 68:return 6;case 69:return 6;case 70:return 16;case 71:return 57;case 72:return U()?24:void 0;case 73:return V.yytext=V.yytext.trim(),14;break;case 74:return 15;case 75:return 28;case 76:return 58;case 77:return 5;case 78:return"INVALID"}},"anonymous"),rules:[/^(?:click\b)/i,/^(?:href\b)/i,/^(?:"[^"]*")/i,/^(?:default\b)/i,/^(?:.*direction\s+TB[^\n]*)/i,/^(?:.*direction\s+BT[^\n]*)/i,/^(?:.*direction\s+RL[^\n]*)/i,/^(?:.*direction\s+LR[^\n]*)/i,/^(?:[\n]+)/i,/^(?:[\s]+)/i,/^(?:((?!\n)\s)+)/i,/^(?:#[^\n]*)/i,/^(?:%%(?!\{)[^\n]*)/i,/^(?:scale\s+)/i,/^(?:\d+)/i,/^(?:\s+width\b)/i,/^(?:accTitle\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*\{\s*)/i,/^(?:[\}])/i,/^(?:[^\}]*)/i,/^(?:classDef\s+)/i,/^(?:DEFAULT\s+)/i,/^(?:\w+\s+)/i,/^(?:[^\n]*)/i,/^(?:class\s+)/i,/^(?:(\w+)+((,\s*\w+)*))/i,/^(?:[^\n]*)/i,/^(?:style\s+)/i,/^(?:[\w,]+\s+)/i,/^(?:[^\n]*)/i,/^(?:scale\s+)/i,/^(?:\d+)/i,/^(?:\s+width\b)/i,/^(?:state\s+)/i,/^(?:.*<<fork>>)/i,/^(?:.*<<join>>)/i,/^(?:.*<<choice>>)/i,/^(?:.*\[\[fork\]\])/i,/^(?:.*\[\[join\]\])/i,/^(?:.*\[\[choice\]\])/i,/^(?:.*direction\s+TB[^\n]*)/i,/^(?:.*direction\s+BT[^\n]*)/i,/^(?:.*direction\s+RL[^\n]*)/i,/^(?:.*direction\s+LR[^\n]*)/i,/^(?:["])/i,/^(?:\s*as\s+)/i,/^(?:[^\n\{]*)/i,/^(?:["])/i,/^(?:[^"]*)/i,/^(?:[^\n\s\{]+)/i,/^(?:\n)/i,/^(?:\{)/i,/^(?:\})/i,/^(?:[\n])/i,/^(?:note\s+)/i,/^(?:left of\b)/i,/^(?:right of\b)/i,/^(?:")/i,/^(?:\s*as\s*)/i,/^(?:["])/i,/^(?:[^"]*)/i,/^(?:[^\n]*)/i,/^(?:\s*[^:\n\s\-]+)/i,/^(?:\s*:[^:\n;]+)/i,/^(?:[\s\S]*?\n\s*end note\b)/i,/^(?:stateDiagram\s+)/i,/^(?:stateDiagram-v2\s+)/i,/^(?:hide empty description\b)/i,/^(?:\[\*\])/i,/^(?:[^:\n\s\-\{]+)/i,/^(?:\s*:(?:[^:\n;]|:[^:\n;])+)/i,/^(?:-->)/i,/^(?:--)/i,/^(?::::)/i,/^(?:$)/i,/^(?:.)/i],conditions:{LINE:{rules:[10,11,12],inclusive:!1},struct:{rules:[10,11,12,23,27,30,36,43,44,45,46,55,56,57,71,72,73,74,75,76],inclusive:!1},FLOATING_NOTE_ID:{rules:[64],inclusive:!1},FLOATING_NOTE:{rules:[61,62,63],inclusive:!1},NOTE_TEXT:{rules:[66,67],inclusive:!1},NOTE_ID:{rules:[65],inclusive:!1},NOTE:{rules:[58,59,60],inclusive:!1},STYLEDEF_STYLEOPTS:{rules:[],inclusive:!1},STYLEDEF_STYLES:{rules:[32],inclusive:!1},STYLE_IDS:{rules:[],inclusive:!1},STYLE:{rules:[31],inclusive:!1},CLASS_STYLE:{rules:[29],inclusive:!1},CLASS:{rules:[28],inclusive:!1},CLASSDEFID:{rules:[26],inclusive:!1},CLASSDEF:{rules:[24,25],inclusive:!1},acc_descr_multiline:{rules:[21,22],inclusive:!1},acc_descr:{rules:[19],inclusive:!1},acc_title:{rules:[17],inclusive:!1},SCALE:{rules:[14,15,34,35],inclusive:!1},ALIAS:{rules:[],inclusive:!1},STATE_ID:{rules:[49],inclusive:!1},STATE_STRING:{rules:[50,51],inclusive:!1},FORK_STATE:{rules:[],inclusive:!1},STATE:{rules:[10,11,12,37,38,39,40,41,42,47,48,52,53,54],inclusive:!1},ID:{rules:[10,11,12],inclusive:!1},INITIAL:{rules:[0,1,2,3,4,5,6,7,8,9,11,12,13,16,18,20,23,27,30,33,36,54,57,68,69,70,71,72,73,74,76,77,78],inclusive:!0}}};return $})();L.lexer=B;function O(){this.yy={}}return o(O,"Parser"),O.prototype=L,L.Parser=O,new O})();gW.parser=gW;Z6=gW});var Rf,xm,QT,O6e,P6e,B6e,bm,Q6,vW,xW,bW,TW,J6,e_,F6e,$6e,CW,kW,z6e,G6e,ky,NCt,V6e,wW,ICt,OCt,W6e,q6e,PCt,U6e,BCt,H6e,SW,EW,Y6e,t_,j6e,AW,r_=z(()=>{"use strict";Rf="state",xm="root",QT="relation",O6e="classDef",P6e="style",B6e="applyClass",bm="default",Q6="divider",vW="fill:none",xW="fill: #333",bW="markdown",TW="normal",J6="rect",e_="rectWithTitle",F6e="stateStart",$6e="stateEnd",CW="divider",kW="roundedWithTitle",z6e="note",G6e="noteGroup",ky="statediagram",NCt="state",V6e=`${ky}-${NCt}`,wW="transition",ICt="note",OCt="note-edge",W6e=`${wW} ${OCt}`,q6e=`${ky}-${ICt}`,PCt="cluster",U6e=`${ky}-${PCt}`,BCt="cluster-alt",H6e=`${ky}-${BCt}`,SW="parent",EW="note",Y6e="state",t_="----",j6e=`${t_}${EW}`,AW=`${t_}${SW}`});function _W(e="",t=0,r="",i=t_){let n=r!==null&&r.length>0?`${i}${r}`:"";return`${Y6e}-${e}${n}-${t}`}function i_(e,t,r){if(!t.id||t.id==="</join></fork>"||t.id==="</choice>")return;t.cssClasses&&(Array.isArray(t.cssCompiledStyles)||(t.cssCompiledStyles=[]),t.cssClasses.split(" ").forEach(n=>{let a=r.get(n);a&&(t.cssCompiledStyles=[...t.cssCompiledStyles??[],...a.styles])}));let i=e.find(n=>n.id===t.id);i?Object.assign(i,t):e.push(t)}function $Ct(e){return e?.classes?.join(" ")??""}function zCt(e){return e?.styles??[]}var n_,Lf,FCt,X6e,wy,Z6e,Q6e=z(()=>{"use strict";Ut();St();Ir();r_();n_=new Map,Lf=0;o(_W,"stateDomId");FCt=o((e,t,r,i,n,a,s,l)=>{Z.trace("items",t),t.forEach(u=>{switch(u.stmt){case Rf:wy(e,u,r,i,n,a,s,l);break;case bm:wy(e,u,r,i,n,a,s,l);break;case QT:{wy(e,u.state1,r,i,n,a,s,l),wy(e,u.state2,r,i,n,a,s,l);let h=s==="neo",d={id:"edge"+Lf,start:u.state1.id,end:u.state2.id,arrowhead:"normal",arrowTypeEnd:h?"arrow_barb_neo":"arrow_barb",style:vW,labelStyle:"",label:vt.sanitizeText(u.description??"",ge()),arrowheadStyle:xW,labelpos:"c",labelType:bW,thickness:TW,classes:wW,look:s};n.push(d),Lf++}break}})},"setupDoc"),X6e=o((e,t="TB")=>{let r=t;if(e.doc)for(let i of e.doc)i.stmt==="dir"&&(r=i.value);return r},"getDir");o(i_,"insertOrUpdateNode");o($Ct,"getClassesFromDbInfo");o(zCt,"getStylesFromDbInfo");wy=o((e,t,r,i,n,a,s,l)=>{let u=t.id,h=r.get(u),d=$Ct(h),f=zCt(h),p=ge();if(Z.info("dataFetcher parsedItem",t,h,f),u!=="root"){let m=J6;t.start===!0?m=F6e:t.start===!1&&(m=$6e),t.type!==bm&&(m=t.type),n_.get(u)||n_.set(u,{id:u,shape:m,description:vt.sanitizeText(u,p),cssClasses:`${d} ${V6e}`,cssStyles:f});let g=n_.get(u);t.description&&(Array.isArray(g.description)?(g.shape=e_,g.description.push(t.description)):g.description?.length&&g.description.length>0?(g.shape=e_,g.description===u?g.description=[t.description]:g.description=[g.description,t.description]):(g.shape=J6,g.description=t.description),g.description=vt.sanitizeTextOrArray(g.description,p)),g.description?.length===1&&g.shape===e_&&(g.type==="group"?g.shape=kW:g.shape=J6),!g.type&&t.doc&&(Z.info("Setting cluster for XCX",u,X6e(t)),g.type="group",g.isGroup=!0,g.dir=X6e(t),g.shape=t.type===Q6?CW:kW,g.cssClasses=`${g.cssClasses} ${U6e} ${a?H6e:""}`);let y={labelStyle:"",shape:g.shape,label:g.description,cssClasses:g.cssClasses,cssCompiledStyles:[],cssStyles:g.cssStyles,id:u,dir:g.dir,domId:_W(u,Lf),type:g.type,isGroup:g.type==="group",padding:8,rx:10,ry:10,look:s,labelType:"markdown"};if(y.shape===CW&&(y.label=""),e&&e.id!=="root"&&(Z.trace("Setting node ",u," to be child of its parent ",e.id),y.parentId=e.id),y.centerLabel=!0,t.note){let v={labelStyle:"",shape:z6e,label:t.note.text,labelType:"markdown",cssClasses:q6e,cssStyles:[],cssCompiledStyles:[],id:u+j6e+"-"+Lf,domId:_W(u,Lf,EW),type:g.type,isGroup:g.type==="group",padding:p.flowchart?.padding,look:s,position:t.note.position},x=u+AW,b={labelStyle:"",shape:G6e,label:t.note.text,cssClasses:g.cssClasses,cssStyles:[],id:u+AW,domId:_W(u,Lf,SW),type:"group",isGroup:!0,padding:16,look:s,position:t.note.position};Lf++,b.id=x,v.parentId=x,i_(i,b,l),i_(i,v,l),i_(i,y,l);let T=u,w=v.id;t.note.position==="left of"&&(T=v.id,w=u),n.push({id:T+"-"+w,start:T,end:w,arrowhead:"none",arrowTypeEnd:"",style:vW,labelStyle:"",classes:W6e,arrowheadStyle:xW,labelpos:"c",labelType:bW,thickness:TW,look:s})}else i_(i,y,l)}t.doc&&(Z.trace("Adding nodes children "),FCt(t,t.doc,r,i,n,!a,s,l))},"dataFetcher"),Z6e=o(()=>{n_.clear(),Lf=0},"reset")});var RW,GCt,VCt,J6e,LW=z(()=>{"use strict";Ut();St();Lp();tf();rf();Xt();r_();RW=o((e,t="TB")=>{if(!e.doc)return t;let r=t;for(let i of e.doc)i.stmt==="dir"&&(r=i.value);return r},"getDir"),GCt=o(function(e,t){return t.db.getClasses()},"getClasses"),VCt=o(async function(e,t,r,i){Z.info("REF0:"),Z.info("Drawing state diagram (v2)",t);let{securityLevel:n,state:a,layout:s}=ge();i.db.extract(i.db.getRootDocV2());let l=i.db.getData(),u=Fo(t,n);l.type=i.type,l.layoutAlgorithm=s,l.nodeSpacing=a?.nodeSpacing||50,l.rankSpacing=a?.rankSpacing||50,ge().look==="neo"?l.markers=["barbNeo"]:l.markers=["barb"],l.diagramId=t,await Zo(l,u);let d=8;try{(typeof i.db.getLinks=="function"?i.db.getLinks():new Map).forEach((p,m)=>{let g=typeof m=="string"?m:typeof m?.id=="string"?m.id:"";if(!g){Z.warn("\u26A0\uFE0F Invalid or missing stateId from key:",JSON.stringify(m));return}let y=u.node()?.querySelectorAll("g"),v;if(y?.forEach(w=>{w.textContent?.trim()===g&&(v=w)}),!v){Z.warn("\u26A0\uFE0F Could not find node matching text:",g);return}let x=v.parentNode;if(!x){Z.warn("\u26A0\uFE0F Node has no parent, cannot wrap:",g);return}let b=document.createElementNS("http://www.w3.org/2000/svg","a"),T=p.url.replace(/^"+|"+$/g,"");if(b.setAttributeNS("http://www.w3.org/1999/xlink","xlink:href",T),b.setAttribute("target","_blank"),p.tooltip){let w=p.tooltip.replace(/^"+|"+$/g,"");b.setAttribute("title",w)}x.replaceChild(b,v),b.appendChild(v),Z.info("\u{1F517} Wrapped node in <a> tag for:",g,p.url)})}catch(f){Z.error("\u274C Error injecting clickable links:",f)}Zt.insertTitle(u,"statediagramTitleText",a?.titleTopMargin??25,i.db.getDiagramTitle()),$s(u,d,ky,a?.useMaxWidth??!0)},"draw"),J6e={getClasses:GCt,draw:VCt,getDir:RW}});var gs,t_e,r_e,a_,ol,s_=z(()=>{"use strict";Ut();St();Xt();Ir();Ci();Q6e();LW();r_();gs={START_NODE:"[*]",START_TYPE:"start",END_NODE:"[*]",END_TYPE:"end",COLOR_KEYWORD:"color",FILL_KEYWORD:"fill",BG_FILL:"bgFill",STYLECLASS_SEP:","},t_e=o(()=>new Map,"newClassesList"),r_e=o(()=>({relations:[],states:new Map,documents:{}}),"newDoc"),a_=o(e=>JSON.parse(JSON.stringify(e)),"clone"),ol=class{constructor(t){this.version=t;this.nodes=[];this.edges=[];this.rootDoc=[];this.classes=t_e();this.documents={root:r_e()};this.currentDocument=this.documents.root;this.startEndCount=0;this.dividerCnt=0;this.links=new Map;this.getAccTitle=kr;this.setAccTitle=Cr;this.getAccDescription=Sr;this.setAccDescription=wr;this.setDiagramTitle=Ar;this.getDiagramTitle=Er;this.clear(),this.setRootDoc=this.setRootDoc.bind(this),this.getDividerId=this.getDividerId.bind(this),this.setDirection=this.setDirection.bind(this),this.trimColon=this.trimColon.bind(this)}static{o(this,"StateDB")}static{this.relationType={AGGREGATION:0,EXTENSION:1,COMPOSITION:2,DEPENDENCY:3}}extract(t){this.clear(!0);for(let n of Array.isArray(t)?t:t.doc)switch(n.stmt){case Rf:this.addState(n.id.trim(),n.type,n.doc,n.description,n.note);break;case QT:this.addRelation(n.state1,n.state2,n.description);break;case O6e:this.addStyleClass(n.id.trim(),n.classes);break;case P6e:this.handleStyleDef(n);break;case B6e:this.setCssClass(n.id.trim(),n.styleClass);break;case"click":this.addLink(n.id,n.url,n.tooltip);break}let r=this.getStates(),i=ge();Z6e(),wy(void 0,this.getRootDocV2(),r,this.nodes,this.edges,!0,i.look,this.classes);for(let n of this.nodes)if(Array.isArray(n.label)){if(n.description=n.label.slice(1),n.isGroup&&n.description.length>0)throw new Error(`Group nodes can only have label. Remove the additional description for node [${n.id}]`);n.label=n.label[0]}}handleStyleDef(t){let r=t.id.trim().split(","),i=t.styleClass.split(",");for(let n of r){let a=this.getState(n);if(!a){let s=n.trim();this.addState(s),a=this.getState(s)}a&&(a.styles=i.map(s=>s.replace(/;/g,"")?.trim()))}}setRootDoc(t){Z.info("Setting root doc",t),this.rootDoc=t,this.version===1?this.extract(t):this.extract(this.getRootDocV2())}docTranslator(t,r,i){if(r.stmt===QT){this.docTranslator(t,r.state1,!0),this.docTranslator(t,r.state2,!1);return}if(r.stmt===Rf&&(r.id===gs.START_NODE?(r.id=t.id+(i?"_start":"_end"),r.start=i):r.id=r.id.trim()),r.stmt!==xm&&r.stmt!==Rf||!r.doc)return;let n=[],a=[];for(let s of r.doc)if(s.type===Q6){let l=a_(s);l.doc=a_(a),n.push(l),a=[]}else a.push(s);if(n.length>0&&a.length>0){let s={stmt:Rf,id:DM(),type:"divider",doc:a_(a)};n.push(a_(s)),r.doc=n}r.doc.forEach(s=>this.docTranslator(r,s,!0))}getRootDocV2(){return this.docTranslator({id:xm,stmt:xm},{id:xm,stmt:xm,doc:this.rootDoc},!0),{id:xm,doc:this.rootDoc}}addState(t,r=bm,i=void 0,n=void 0,a=void 0,s=void 0,l=void 0,u=void 0){let h=t?.trim();if(!this.currentDocument.states.has(h))Z.info("Adding state ",h,n),this.currentDocument.states.set(h,{stmt:Rf,id:h,descriptions:[],type:r,doc:i,note:a,classes:[],styles:[],textStyles:[]});else{let d=this.currentDocument.states.get(h);if(!d)throw new Error(`State not found: ${h}`);d.doc||(d.doc=i),d.type||(d.type=r)}if(n&&(Z.info("Setting state description",h,n),(Array.isArray(n)?n:[n]).forEach(f=>this.addDescription(h,f.trim()))),a){let d=this.currentDocument.states.get(h);if(!d)throw new Error(`State not found: ${h}`);d.note=a,d.note.text=vt.sanitizeText(d.note.text,ge())}s&&(Z.info("Setting state classes",h,s),(Array.isArray(s)?s:[s]).forEach(f=>this.setCssClass(h,f.trim()))),l&&(Z.info("Setting state styles",h,l),(Array.isArray(l)?l:[l]).forEach(f=>this.setStyle(h,f.trim()))),u&&(Z.info("Setting state styles",h,l),(Array.isArray(u)?u:[u]).forEach(f=>this.setTextStyle(h,f.trim())))}clear(t){this.nodes=[],this.edges=[],this.documents={root:r_e()},this.currentDocument=this.documents.root,this.startEndCount=0,this.classes=t_e(),t||(this.links=new Map,gr())}getState(t){return this.currentDocument.states.get(t)}getStates(){return this.currentDocument.states}logDocuments(){Z.info("Documents = ",this.documents)}getRelations(){return this.currentDocument.relations}addLink(t,r,i){this.links.set(t,{url:r,tooltip:i}),Z.warn("Adding link",t,r,i)}getLinks(){return this.links}startIdIfNeeded(t=""){return t===gs.START_NODE?(this.startEndCount++,`${gs.START_TYPE}${this.startEndCount}`):t}startTypeIfNeeded(t="",r=bm){return t===gs.START_NODE?gs.START_TYPE:r}endIdIfNeeded(t=""){return t===gs.END_NODE?(this.startEndCount++,`${gs.END_TYPE}${this.startEndCount}`):t}endTypeIfNeeded(t="",r=bm){return t===gs.END_NODE?gs.END_TYPE:r}addRelationObjs(t,r,i=""){let n=this.startIdIfNeeded(t.id.trim()),a=this.startTypeIfNeeded(t.id.trim(),t.type),s=this.startIdIfNeeded(r.id.trim()),l=this.startTypeIfNeeded(r.id.trim(),r.type);this.addState(n,a,t.doc,t.description,t.note,t.classes,t.styles,t.textStyles),this.addState(s,l,r.doc,r.description,r.note,r.classes,r.styles,r.textStyles),this.currentDocument.relations.push({id1:n,id2:s,relationTitle:vt.sanitizeText(i,ge())})}addRelation(t,r,i){if(typeof t=="object"&&typeof r=="object")this.addRelationObjs(t,r,i);else if(typeof t=="string"&&typeof r=="string"){let n=this.startIdIfNeeded(t.trim()),a=this.startTypeIfNeeded(t),s=this.endIdIfNeeded(r.trim()),l=this.endTypeIfNeeded(r);this.addState(n,a),this.addState(s,l),this.currentDocument.relations.push({id1:n,id2:s,relationTitle:i?vt.sanitizeText(i,ge()):void 0})}}addDescription(t,r){let i=this.currentDocument.states.get(t),n=r.startsWith(":")?r.replace(":","").trim():r;i?.descriptions?.push(vt.sanitizeText(n,ge()))}cleanupLabel(t){return t.startsWith(":")?t.slice(2).trim():t.trim()}getDividerId(){return this.dividerCnt++,`divider-id-${this.dividerCnt}`}addStyleClass(t,r=""){this.classes.has(t)||this.classes.set(t,{id:t,styles:[],textStyles:[]});let i=this.classes.get(t);r&&i&&r.split(gs.STYLECLASS_SEP).forEach(n=>{let a=n.replace(/([^;]*);/,"$1").trim();if(RegExp(gs.COLOR_KEYWORD).exec(n)){let l=a.replace(gs.FILL_KEYWORD,gs.BG_FILL).replace(gs.COLOR_KEYWORD,gs.FILL_KEYWORD);i.textStyles.push(l)}i.styles.push(a)})}getClasses(){return this.classes}setCssClass(t,r){t.split(",").forEach(i=>{let n=this.getState(i);if(!n){let a=i.trim();this.addState(a),n=this.getState(a)}n?.classes?.push(r)})}setStyle(t,r){this.getState(t)?.styles?.push(r)}setTextStyle(t,r){this.getState(t)?.textStyles?.push(r)}getDirectionStatement(){return this.rootDoc.find(t=>t.stmt==="dir")}getDirection(){return this.getDirectionStatement()?.value??"TB"}setDirection(t){let r=this.getDirectionStatement();r?r.value=t:this.rootDoc.unshift({stmt:"dir",value:t})}trimColon(t){return t.startsWith(":")?t.slice(1).trim():t.trim()}getData(){let t=ge();return{nodes:this.nodes,edges:this.edges,other:{},config:t,direction:RW(this.getRootDocV2())}}getConfig(){return ge().state}}});var qCt,o_,MW=z(()=>{"use strict";qCt=o(e=>`
+  ${Eu()}
+`,"getStyles"),AL=Y6t});var j6t,X6t,K6t,RL,mY=F(()=>{"use strict";Xt();vt();Am();Qf();Jf();Qt();j6t=o((e,t="TB")=>{if(!e.doc)return t;let r=t;for(let n of e.doc)n.stmt==="dir"&&(r=n.value);return r},"getDir"),X6t=o(function(e,t){return t.db.getClasses()},"getClasses"),K6t=o(async function(e,t,r,n){Z.info("REF0:"),Z.info("Drawing class diagram (v3)",t);let{securityLevel:i,state:a,layout:s}=Ae();n.db.setDiagramId(t);let l=n.db.getData(),u=pl(t,i);l.type=n.type,l.layoutAlgorithm=Su(s),l.nodeSpacing=a?.nodeSpacing||50,l.rankSpacing=a?.rankSpacing||50,l.markers=["aggregation","extension","composition","dependency","lollipop"],l.diagramId=t,await Al(l,u);let h=8;Zt.insertTitle(u,"classDiagramTitleText",a?.titleTopMargin??25,n.db.getDiagramTitle()),vo(u,h,"classDiagram",a?.useMaxWidth??!0)},"draw"),RL={getClasses:X6t,draw:K6t,getDir:j6t}});var xIe={};ir(xIe,{diagram:()=>Z6t});var Z6t,bIe=F(()=>{"use strict";dY();fY();pY();mY();Z6t={parser:SL,get db(){return new rx},renderer:RL,styles:AL,init:o(e=>{e.class||(e.class={}),e.class.arrowMarkerAbsolute=e.arrowMarkerAbsolute},"init")}});var wIe={};ir(wIe,{diagram:()=>tRt});var tRt,kIe=F(()=>{"use strict";dY();fY();pY();mY();tRt={parser:SL,get db(){return new rx},renderer:RL,styles:AL,init:o(e=>{e.class||(e.class={}),e.class.arrowMarkerAbsolute=e.arrowMarkerAbsolute},"init")}});var gY,_L,yY=F(()=>{"use strict";gY=(function(){var e=o(function($,V,G,z){for(G=G||{},z=$.length;z--;G[$[z]]=V);return G},"o"),t=[1,2],r=[1,3],n=[1,4],i=[2,4],a=[1,9],s=[1,11],l=[1,16],u=[1,17],h=[1,18],d=[1,19],f=[1,33],p=[1,20],m=[1,21],g=[1,22],y=[1,23],v=[1,24],x=[1,26],b=[1,27],T=[1,28],k=[1,29],C=[1,30],w=[1,31],S=[1,32],R=[1,35],L=[1,36],N=[1,37],I=[1,38],_=[1,34],A=[1,4,5,16,17,19,21,22,24,25,26,27,28,29,33,35,37,38,41,45,48,51,52,53,54,57],M=[1,4,5,14,15,16,17,19,21,22,24,25,26,27,28,29,33,35,37,38,39,40,41,45,48,51,52,53,54,57],D=[4,5,16,17,19,21,22,24,25,26,27,28,29,33,35,37,38,41,45,48,51,52,53,54,57],P={trace:o(function(){},"trace"),yy:{},symbols_:{error:2,start:3,SPACE:4,NL:5,SD:6,document:7,line:8,statement:9,classDefStatement:10,styleStatement:11,cssClassStatement:12,idStatement:13,DESCR:14,"-->":15,HIDE_EMPTY:16,scale:17,WIDTH:18,COMPOSIT_STATE:19,STRUCT_START:20,STRUCT_STOP:21,STATE_DESCR:22,AS:23,ID:24,FORK:25,JOIN:26,CHOICE:27,CONCURRENT:28,note:29,notePosition:30,NOTE_TEXT:31,direction:32,acc_title:33,acc_title_value:34,acc_descr:35,acc_descr_value:36,acc_descr_multiline_value:37,CLICK:38,STRING:39,HREF:40,classDef:41,CLASSDEF_ID:42,CLASSDEF_STYLEOPTS:43,DEFAULT:44,style:45,STYLE_IDS:46,STYLEDEF_STYLEOPTS:47,class:48,CLASSENTITY_IDS:49,STYLECLASS:50,direction_tb:51,direction_bt:52,direction_rl:53,direction_lr:54,eol:55,";":56,EDGE_STATE:57,STYLE_SEPARATOR:58,left_of:59,right_of:60,$accept:0,$end:1},terminals_:{2:"error",4:"SPACE",5:"NL",6:"SD",14:"DESCR",15:"-->",16:"HIDE_EMPTY",17:"scale",18:"WIDTH",19:"COMPOSIT_STATE",20:"STRUCT_START",21:"STRUCT_STOP",22:"STATE_DESCR",23:"AS",24:"ID",25:"FORK",26:"JOIN",27:"CHOICE",28:"CONCURRENT",29:"note",31:"NOTE_TEXT",33:"acc_title",34:"acc_title_value",35:"acc_descr",36:"acc_descr_value",37:"acc_descr_multiline_value",38:"CLICK",39:"STRING",40:"HREF",41:"classDef",42:"CLASSDEF_ID",43:"CLASSDEF_STYLEOPTS",44:"DEFAULT",45:"style",46:"STYLE_IDS",47:"STYLEDEF_STYLEOPTS",48:"class",49:"CLASSENTITY_IDS",50:"STYLECLASS",51:"direction_tb",52:"direction_bt",53:"direction_rl",54:"direction_lr",56:";",57:"EDGE_STATE",58:"STYLE_SEPARATOR",59:"left_of",60:"right_of"},productions_:[0,[3,2],[3,2],[3,2],[7,0],[7,2],[8,2],[8,1],[8,1],[9,1],[9,1],[9,1],[9,1],[9,2],[9,3],[9,4],[9,1],[9,2],[9,1],[9,4],[9,3],[9,6],[9,1],[9,1],[9,1],[9,1],[9,4],[9,4],[9,1],[9,2],[9,2],[9,1],[9,5],[9,5],[10,3],[10,3],[11,3],[12,3],[32,1],[32,1],[32,1],[32,1],[55,1],[55,1],[13,1],[13,1],[13,3],[13,3],[30,1],[30,1]],performAction:o(function(V,G,z,W,H,j,Q){var U=j.length-1;switch(H){case 3:return W.setRootDoc(j[U]),j[U];break;case 4:this.$=[];break;case 5:j[U]!="nl"&&(j[U-1].push(j[U]),this.$=j[U-1]);break;case 6:case 7:this.$=j[U];break;case 8:this.$="nl";break;case 12:this.$=j[U];break;case 13:let ie=j[U-1];ie.description=W.trimColon(j[U]),this.$=ie;break;case 14:this.$={stmt:"relation",state1:j[U-2],state2:j[U]};break;case 15:let ae=W.trimColon(j[U]);this.$={stmt:"relation",state1:j[U-3],state2:j[U-1],description:ae};break;case 19:this.$={stmt:"state",id:j[U-3],type:"default",description:"",doc:j[U-1]};break;case 20:var oe=j[U],te=j[U-2].trim();if(j[U].match(":")){var le=j[U].split(":");oe=le[0],te=[te,le[1]]}this.$={stmt:"state",id:oe,type:"default",description:te};break;case 21:this.$={stmt:"state",id:j[U-3],type:"default",description:j[U-5],doc:j[U-1]};break;case 22:this.$={stmt:"state",id:j[U],type:"fork"};break;case 23:this.$={stmt:"state",id:j[U],type:"join"};break;case 24:this.$={stmt:"state",id:j[U],type:"choice"};break;case 25:this.$={stmt:"state",id:W.getDividerId(),type:"divider"};break;case 26:this.$={stmt:"state",id:j[U-1].trim(),note:{position:j[U-2].trim(),text:j[U].trim()}};break;case 29:this.$=j[U].trim(),W.setAccTitle(this.$);break;case 30:case 31:this.$=j[U].trim(),W.setAccDescription(this.$);break;case 32:this.$={stmt:"click",id:j[U-3],url:j[U-2],tooltip:j[U-1]};break;case 33:this.$={stmt:"click",id:j[U-3],url:j[U-1],tooltip:""};break;case 34:case 35:this.$={stmt:"classDef",id:j[U-1].trim(),classes:j[U].trim()};break;case 36:this.$={stmt:"style",id:j[U-1].trim(),styleClass:j[U].trim()};break;case 37:this.$={stmt:"applyClass",id:j[U-1].trim(),styleClass:j[U].trim()};break;case 38:W.setDirection("TB"),this.$={stmt:"dir",value:"TB"};break;case 39:W.setDirection("BT"),this.$={stmt:"dir",value:"BT"};break;case 40:W.setDirection("RL"),this.$={stmt:"dir",value:"RL"};break;case 41:W.setDirection("LR"),this.$={stmt:"dir",value:"LR"};break;case 44:case 45:this.$={stmt:"state",id:j[U].trim(),type:"default",description:""};break;case 46:this.$={stmt:"state",id:j[U-2].trim(),classes:[j[U].trim()],type:"default",description:""};break;case 47:this.$={stmt:"state",id:j[U-2].trim(),classes:[j[U].trim()],type:"default",description:""};break}},"anonymous"),table:[{3:1,4:t,5:r,6:n},{1:[3]},{3:5,4:t,5:r,6:n},{3:6,4:t,5:r,6:n},e([1,4,5,16,17,19,22,24,25,26,27,28,29,33,35,37,38,41,45,48,51,52,53,54,57],i,{7:7}),{1:[2,1]},{1:[2,2]},{1:[2,3],4:a,5:s,8:8,9:10,10:12,11:13,12:14,13:15,16:l,17:u,19:h,22:d,24:f,25:p,26:m,27:g,28:y,29:v,32:25,33:x,35:b,37:T,38:k,41:C,45:w,48:S,51:R,52:L,53:N,54:I,57:_},e(A,[2,5]),{9:39,10:12,11:13,12:14,13:15,16:l,17:u,19:h,22:d,24:f,25:p,26:m,27:g,28:y,29:v,32:25,33:x,35:b,37:T,38:k,41:C,45:w,48:S,51:R,52:L,53:N,54:I,57:_},e(A,[2,7]),e(A,[2,8]),e(A,[2,9]),e(A,[2,10]),e(A,[2,11]),e(A,[2,12],{14:[1,40],15:[1,41]}),e(A,[2,16]),{18:[1,42]},e(A,[2,18],{20:[1,43]}),{23:[1,44]},e(A,[2,22]),e(A,[2,23]),e(A,[2,24]),e(A,[2,25]),{30:45,31:[1,46],59:[1,47],60:[1,48]},e(A,[2,28]),{34:[1,49]},{36:[1,50]},e(A,[2,31]),{13:51,24:f,57:_},{42:[1,52],44:[1,53]},{46:[1,54]},{49:[1,55]},e(M,[2,44],{58:[1,56]}),e(M,[2,45],{58:[1,57]}),e(A,[2,38]),e(A,[2,39]),e(A,[2,40]),e(A,[2,41]),e(A,[2,6]),e(A,[2,13]),{13:58,24:f,57:_},e(A,[2,17]),e(D,i,{7:59}),{24:[1,60]},{24:[1,61]},{23:[1,62]},{24:[2,48]},{24:[2,49]},e(A,[2,29]),e(A,[2,30]),{39:[1,63],40:[1,64]},{43:[1,65]},{43:[1,66]},{47:[1,67]},{50:[1,68]},{24:[1,69]},{24:[1,70]},e(A,[2,14],{14:[1,71]}),{4:a,5:s,8:8,9:10,10:12,11:13,12:14,13:15,16:l,17:u,19:h,21:[1,72],22:d,24:f,25:p,26:m,27:g,28:y,29:v,32:25,33:x,35:b,37:T,38:k,41:C,45:w,48:S,51:R,52:L,53:N,54:I,57:_},e(A,[2,20],{20:[1,73]}),{31:[1,74]},{24:[1,75]},{39:[1,76]},{39:[1,77]},e(A,[2,34]),e(A,[2,35]),e(A,[2,36]),e(A,[2,37]),e(M,[2,46]),e(M,[2,47]),e(A,[2,15]),e(A,[2,19]),e(D,i,{7:78}),e(A,[2,26]),e(A,[2,27]),{5:[1,79]},{5:[1,80]},{4:a,5:s,8:8,9:10,10:12,11:13,12:14,13:15,16:l,17:u,19:h,21:[1,81],22:d,24:f,25:p,26:m,27:g,28:y,29:v,32:25,33:x,35:b,37:T,38:k,41:C,45:w,48:S,51:R,52:L,53:N,54:I,57:_},e(A,[2,32]),e(A,[2,33]),e(A,[2,21])],defaultActions:{5:[2,1],6:[2,2],47:[2,48],48:[2,49]},parseError:o(function(V,G){if(G.recoverable)this.trace(V);else{var z=new Error(V);throw z.hash=G,z}},"parseError"),parse:o(function(V){var G=this,z=[0],W=[],H=[null],j=[],Q=this.table,U="",oe=0,te=0,le=0,ie=2,ae=1,Re=j.slice.call(arguments,1),be=Object.create(this.lexer),Pe={yy:{}};for(var Ge in this.yy)Object.prototype.hasOwnProperty.call(this.yy,Ge)&&(Pe.yy[Ge]=this.yy[Ge]);be.setInput(V,Pe.yy),Pe.yy.lexer=be,Pe.yy.parser=this,typeof be.yylloc>"u"&&(be.yylloc={});var Oe=be.yylloc;j.push(Oe);var ue=be.options&&be.options.ranges;typeof Pe.yy.parseError=="function"?this.parseError=Pe.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function ye(X){z.length=z.length-2*X,H.length=H.length-X,j.length=j.length-X}o(ye,"popStack");function ke(){var X;return X=W.pop()||be.lex()||ae,typeof X!="number"&&(X instanceof Array&&(W=X,X=W.pop()),X=G.symbols_[X]||X),X}o(ke,"lex");for(var ce,re,J,se,ge,Te,we={},Me,ve,ne,q;;){if(J=z[z.length-1],this.defaultActions[J]?se=this.defaultActions[J]:((ce===null||typeof ce>"u")&&(ce=ke()),se=Q[J]&&Q[J][ce]),typeof se>"u"||!se.length||!se[0]){var he="";q=[];for(Me in Q[J])this.terminals_[Me]&&Me>ie&&q.push("'"+this.terminals_[Me]+"'");be.showPosition?he="Parse error on line "+(oe+1)+`:
+`+be.showPosition()+`
+Expecting `+q.join(", ")+", got '"+(this.terminals_[ce]||ce)+"'":he="Parse error on line "+(oe+1)+": Unexpected "+(ce==ae?"end of input":"'"+(this.terminals_[ce]||ce)+"'"),this.parseError(he,{text:be.match,token:this.terminals_[ce]||ce,line:be.yylineno,loc:Oe,expected:q})}if(se[0]instanceof Array&&se.length>1)throw new Error("Parse Error: multiple actions possible at state: "+J+", token: "+ce);switch(se[0]){case 1:z.push(ce),H.push(be.yytext),j.push(be.yylloc),z.push(se[1]),ce=null,re?(ce=re,re=null):(te=be.yyleng,U=be.yytext,oe=be.yylineno,Oe=be.yylloc,le>0&&le--);break;case 2:if(ve=this.productions_[se[1]][1],we.$=H[H.length-ve],we._$={first_line:j[j.length-(ve||1)].first_line,last_line:j[j.length-1].last_line,first_column:j[j.length-(ve||1)].first_column,last_column:j[j.length-1].last_column},ue&&(we._$.range=[j[j.length-(ve||1)].range[0],j[j.length-1].range[1]]),Te=this.performAction.apply(we,[U,te,oe,Pe.yy,se[1],H,j].concat(Re)),typeof Te<"u")return Te;ve&&(z=z.slice(0,-1*ve*2),H=H.slice(0,-1*ve),j=j.slice(0,-1*ve)),z.push(this.productions_[se[1]][0]),H.push(we.$),j.push(we._$),ne=Q[z[z.length-2]][z[z.length-1]],z.push(ne);break;case 3:return!0}}return!0},"parse")},B=(function(){var $={EOF:1,parseError:o(function(G,z){if(this.yy.parser)this.yy.parser.parseError(G,z);else throw new Error(G)},"parseError"),setInput:o(function(V,G){return this.yy=G||this.yy||{},this._input=V,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},"setInput"),input:o(function(){var V=this._input[0];this.yytext+=V,this.yyleng++,this.offset++,this.match+=V,this.matched+=V;var G=V.match(/(?:\r\n?|\n).*/g);return G?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),V},"input"),unput:o(function(V){var G=V.length,z=V.split(/(?:\r\n?|\n)/g);this._input=V+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-G),this.offset-=G;var W=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),z.length-1&&(this.yylineno-=z.length-1);var H=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:z?(z.length===W.length?this.yylloc.first_column:0)+W[W.length-z.length].length-z[0].length:this.yylloc.first_column-G},this.options.ranges&&(this.yylloc.range=[H[0],H[0]+this.yyleng-G]),this.yyleng=this.yytext.length,this},"unput"),more:o(function(){return this._more=!0,this},"more"),reject:o(function(){if(this.options.backtrack_lexer)this._backtrack=!0;else return this.parseError("Lexical error on line "+(this.yylineno+1)+`. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).
+`+this.showPosition(),{text:"",token:null,line:this.yylineno});return this},"reject"),less:o(function(V){this.unput(this.match.slice(V))},"less"),pastInput:o(function(){var V=this.matched.substr(0,this.matched.length-this.match.length);return(V.length>20?"...":"")+V.substr(-20).replace(/\n/g,"")},"pastInput"),upcomingInput:o(function(){var V=this.match;return V.length<20&&(V+=this._input.substr(0,20-V.length)),(V.substr(0,20)+(V.length>20?"...":"")).replace(/\n/g,"")},"upcomingInput"),showPosition:o(function(){var V=this.pastInput(),G=new Array(V.length+1).join("-");return V+this.upcomingInput()+`
+`+G+"^"},"showPosition"),test_match:o(function(V,G){var z,W,H;if(this.options.backtrack_lexer&&(H={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(H.yylloc.range=this.yylloc.range.slice(0))),W=V[0].match(/(?:\r\n?|\n).*/g),W&&(this.yylineno+=W.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:W?W[W.length-1].length-W[W.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+V[0].length},this.yytext+=V[0],this.match+=V[0],this.matches=V,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(V[0].length),this.matched+=V[0],z=this.performAction.call(this,this.yy,this,G,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),z)return z;if(this._backtrack){for(var j in H)this[j]=H[j];return!1}return!1},"test_match"),next:o(function(){if(this.done)return this.EOF;this._input||(this.done=!0);var V,G,z,W;this._more||(this.yytext="",this.match="");for(var H=this._currentRules(),j=0;j<H.length;j++)if(z=this._input.match(this.rules[H[j]]),z&&(!G||z[0].length>G[0].length)){if(G=z,W=j,this.options.backtrack_lexer){if(V=this.test_match(z,H[j]),V!==!1)return V;if(this._backtrack){G=!1;continue}else return!1}else if(!this.options.flex)break}return G?(V=this.test_match(G,H[W]),V!==!1?V:!1):this._input===""?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+`. Unrecognized text.
+`+this.showPosition(),{text:"",token:null,line:this.yylineno})},"next"),lex:o(function(){var G=this.next();return G||this.lex()},"lex"),begin:o(function(G){this.conditionStack.push(G)},"begin"),popState:o(function(){var G=this.conditionStack.length-1;return G>0?this.conditionStack.pop():this.conditionStack[0]},"popState"),_currentRules:o(function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},"_currentRules"),topState:o(function(G){return G=this.conditionStack.length-1-Math.abs(G||0),G>=0?this.conditionStack[G]:"INITIAL"},"topState"),pushState:o(function(G){this.begin(G)},"pushState"),stateStackSize:o(function(){return this.conditionStack.length},"stateStackSize"),options:{"case-insensitive":!0},performAction:o(function(G,z,W,H){function j(){let U=z.yytext.indexOf("%%");if(U===0)return!1;if(U>0){let oe=z.yytext.slice(0,U),te=z.yytext.slice(U);te&&G.lexer.unput(te),z.yytext=oe}return!0}o(j,"processId");var Q=H;switch(W){case 0:return 38;case 1:return 40;case 2:return 39;case 3:return 44;case 4:return 51;case 5:return 52;case 6:return 53;case 7:return 54;case 8:return 5;case 9:break;case 10:break;case 11:break;case 12:break;case 13:return this.pushState("SCALE"),17;break;case 14:return 18;case 15:this.popState();break;case 16:return this.begin("acc_title"),33;break;case 17:return this.popState(),"acc_title_value";break;case 18:return this.begin("acc_descr"),35;break;case 19:return this.popState(),"acc_descr_value";break;case 20:this.begin("acc_descr_multiline");break;case 21:this.popState();break;case 22:return"acc_descr_multiline_value";case 23:return this.pushState("CLASSDEF"),41;break;case 24:return this.popState(),this.pushState("CLASSDEFID"),"DEFAULT_CLASSDEF_ID";break;case 25:return this.popState(),this.pushState("CLASSDEFID"),42;break;case 26:return this.popState(),43;break;case 27:return this.pushState("CLASS"),48;break;case 28:return this.popState(),this.pushState("CLASS_STYLE"),49;break;case 29:return this.popState(),50;break;case 30:return this.pushState("STYLE"),45;break;case 31:return this.popState(),this.pushState("STYLEDEF_STYLES"),46;break;case 32:return this.popState(),47;break;case 33:return this.pushState("SCALE"),17;break;case 34:return 18;case 35:this.popState();break;case 36:this.pushState("STATE");break;case 37:return this.popState(),z.yytext=z.yytext.slice(0,-8).trim(),25;break;case 38:return this.popState(),z.yytext=z.yytext.slice(0,-8).trim(),26;break;case 39:return this.popState(),z.yytext=z.yytext.slice(0,-10).trim(),27;break;case 40:return this.popState(),z.yytext=z.yytext.slice(0,-8).trim(),25;break;case 41:return this.popState(),z.yytext=z.yytext.slice(0,-8).trim(),26;break;case 42:return this.popState(),z.yytext=z.yytext.slice(0,-10).trim(),27;break;case 43:return 51;case 44:return 52;case 45:return 53;case 46:return 54;case 47:this.pushState("STATE_STRING");break;case 48:return this.pushState("STATE_ID"),"AS";break;case 49:if(!j())return;return this.popState(),"ID";break;case 50:this.popState();break;case 51:return"STATE_DESCR";case 52:throw new Error('Error: State name must be a single word. Found: "'+z.yytext.trim()+'"');case 53:return 19;case 54:this.popState();break;case 55:return this.popState(),this.pushState("struct"),20;break;case 56:return this.popState(),21;break;case 57:break;case 58:return this.begin("NOTE"),29;break;case 59:return this.popState(),this.pushState("NOTE_ID"),59;break;case 60:return this.popState(),this.pushState("NOTE_ID"),60;break;case 61:this.popState(),this.pushState("FLOATING_NOTE");break;case 62:return this.popState(),this.pushState("FLOATING_NOTE_ID"),"AS";break;case 63:break;case 64:return"NOTE_TEXT";case 65:if(!j())return;return this.popState(),"ID";break;case 66:if(!j())return;return this.popState(),this.pushState("NOTE_TEXT"),24;break;case 67:return this.popState(),z.yytext=z.yytext.substr(2).trim(),31;break;case 68:return this.popState(),z.yytext=z.yytext.slice(0,-8).trim(),31;break;case 69:return 6;case 70:return 6;case 71:return 16;case 72:return 57;case 73:return j()?24:void 0;case 74:return z.yytext=z.yytext.trim(),14;break;case 75:return 15;case 76:return 28;case 77:return 58;case 78:return 5;case 79:return"INVALID"}},"anonymous"),rules:[/^(?:click\b)/i,/^(?:href\b)/i,/^(?:"[^"]*")/i,/^(?:default\b)/i,/^(?:.*direction\s+TB[^\n]*)/i,/^(?:.*direction\s+BT[^\n]*)/i,/^(?:.*direction\s+RL[^\n]*)/i,/^(?:.*direction\s+LR[^\n]*)/i,/^(?:[\n]+)/i,/^(?:[\s]+)/i,/^(?:((?!\n)\s)+)/i,/^(?:#[^\n]*)/i,/^(?:%%(?!\{)[^\n]*)/i,/^(?:scale\s+)/i,/^(?:\d+)/i,/^(?:\s+width\b)/i,/^(?:accTitle\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*\{\s*)/i,/^(?:[\}])/i,/^(?:[^\}]*)/i,/^(?:classDef\s+)/i,/^(?:DEFAULT\s+)/i,/^(?:\w+\s+)/i,/^(?:[^\n]*)/i,/^(?:class\s+)/i,/^(?:(\w+)+((,\s*\w+)*))/i,/^(?:[^\n]*)/i,/^(?:style\s+)/i,/^(?:[\w,]+\s+)/i,/^(?:[^\n]*)/i,/^(?:scale\s+)/i,/^(?:\d+)/i,/^(?:\s+width\b)/i,/^(?:state\s+)/i,/^(?:.*<<fork>>)/i,/^(?:.*<<join>>)/i,/^(?:.*<<choice>>)/i,/^(?:.*\[\[fork\]\])/i,/^(?:.*\[\[join\]\])/i,/^(?:.*\[\[choice\]\])/i,/^(?:.*direction\s+TB[^\n]*)/i,/^(?:.*direction\s+BT[^\n]*)/i,/^(?:.*direction\s+RL[^\n]*)/i,/^(?:.*direction\s+LR[^\n]*)/i,/^(?:["])/i,/^(?:\s*as\s+)/i,/^(?:[^\n\{]*)/i,/^(?:["])/i,/^(?:[^"]*)/i,/^(?:\w+\s+\w+.*?\{)/i,/^(?:[^\n\s\{]+)/i,/^(?:\n)/i,/^(?:\{)/i,/^(?:\})/i,/^(?:[\n])/i,/^(?:note\s+)/i,/^(?:left of\b)/i,/^(?:right of\b)/i,/^(?:")/i,/^(?:\s*as\s*)/i,/^(?:["])/i,/^(?:[^"]*)/i,/^(?:[^\n]*)/i,/^(?:\s*[^:\n\s\-]+)/i,/^(?:\s*:[^:\n;]+)/i,/^(?:[\s\S]*?\n\s*end note\b)/i,/^(?:stateDiagram\s+)/i,/^(?:stateDiagram-v2\s+)/i,/^(?:hide empty description\b)/i,/^(?:\[\*\])/i,/^(?:[^:\n\s\-\{]+)/i,/^(?:\s*:(?:[^:\n;]|:[^:\n;])+)/i,/^(?:-->)/i,/^(?:--)/i,/^(?::::)/i,/^(?:$)/i,/^(?:.)/i],conditions:{LINE:{rules:[10,11,12],inclusive:!1},struct:{rules:[10,11,12,23,27,30,36,43,44,45,46,56,57,58,72,73,74,75,76,77],inclusive:!1},FLOATING_NOTE_ID:{rules:[65],inclusive:!1},FLOATING_NOTE:{rules:[62,63,64],inclusive:!1},NOTE_TEXT:{rules:[67,68],inclusive:!1},NOTE_ID:{rules:[66],inclusive:!1},NOTE:{rules:[59,60,61],inclusive:!1},STYLEDEF_STYLEOPTS:{rules:[],inclusive:!1},STYLEDEF_STYLES:{rules:[32],inclusive:!1},STYLE_IDS:{rules:[],inclusive:!1},STYLE:{rules:[31],inclusive:!1},CLASS_STYLE:{rules:[29],inclusive:!1},CLASS:{rules:[28],inclusive:!1},CLASSDEFID:{rules:[26],inclusive:!1},CLASSDEF:{rules:[24,25],inclusive:!1},acc_descr_multiline:{rules:[21,22],inclusive:!1},acc_descr:{rules:[19],inclusive:!1},acc_title:{rules:[17],inclusive:!1},SCALE:{rules:[14,15,34,35],inclusive:!1},ALIAS:{rules:[],inclusive:!1},STATE_ID:{rules:[49],inclusive:!1},STATE_STRING:{rules:[50,51],inclusive:!1},FORK_STATE:{rules:[],inclusive:!1},STATE:{rules:[10,11,12,37,38,39,40,41,42,47,48,52,53,54,55],inclusive:!1},ID:{rules:[10,11,12],inclusive:!1},INITIAL:{rules:[0,1,2,3,4,5,6,7,8,9,11,12,13,16,18,20,23,27,30,33,36,55,58,69,70,71,72,73,74,75,77,78,79],inclusive:!0}}};return $})();P.lexer=B;function O(){this.yy={}}return o(O,"Parser"),O.prototype=P,P.Parser=O,new O})();gY.parser=gY;_L=gY});var Rp,R0,Ww,AIe,RIe,_Ie,_0,LL,vY,xY,bY,TY,DL,IL,LIe,DIe,CY,wY,IIe,MIe,nx,aRt,NIe,kY,sRt,oRt,PIe,OIe,lRt,BIe,cRt,$Ie,SY,EY,FIe,ML,zIe,AY,NL=F(()=>{"use strict";Rp="state",R0="root",Ww="relation",AIe="classDef",RIe="style",_Ie="applyClass",_0="default",LL="divider",vY="fill:none",xY="fill: #333",bY="markdown",TY="normal",DL="rect",IL="rectWithTitle",LIe="stateStart",DIe="stateEnd",CY="divider",wY="roundedWithTitle",IIe="note",MIe="noteGroup",nx="statediagram",aRt="state",NIe=`${nx}-${aRt}`,kY="transition",sRt="note",oRt="note-edge",PIe=`${kY} ${oRt}`,OIe=`${nx}-${sRt}`,lRt="cluster",BIe=`${nx}-${lRt}`,cRt="cluster-alt",$Ie=`${nx}-${cRt}`,SY="parent",EY="note",FIe="state",ML="----",zIe=`${ML}${EY}`,AY=`${ML}${SY}`});function RY(e="",t=0,r="",n=ML){let i=r!==null&&r.length>0?`${n}${r}`:"";return`${FIe}-${e}${i}-${t}`}function PL(e,t,r){if(!t.id||t.id==="</join></fork>"||t.id==="</choice>")return;t.cssClasses&&(Array.isArray(t.cssCompiledStyles)||(t.cssCompiledStyles=[]),t.cssClasses.split(" ").forEach(i=>{let a=r.get(i);a&&(t.cssCompiledStyles=[...t.cssCompiledStyles??[],...a.styles])}));let n=e.find(i=>i.id===t.id);n?Object.assign(n,t):e.push(t)}function hRt(e){return e?.classes?.join(" ")??""}function dRt(e){return e?.styles??[]}var OL,_p,uRt,GIe,ix,WIe,qIe=F(()=>{"use strict";Xt();vt();Vr();NL();OL=new Map,_p=0;o(RY,"stateDomId");uRt=o((e,t,r,n,i,a,s,l)=>{Z.trace("items",t),t.forEach(u=>{switch(u.stmt){case Rp:ix(e,u,r,n,i,a,s,l);break;case _0:ix(e,u,r,n,i,a,s,l);break;case Ww:{ix(e,u.state1,r,n,i,a,s,l),ix(e,u.state2,r,n,i,a,s,l);let h=s==="neo",d={id:"edge"+_p,start:u.state1.id,end:u.state2.id,arrowhead:"normal",arrowTypeEnd:h?"arrow_barb_neo":"arrow_barb",style:vY,labelStyle:"",label:xt.sanitizeText(u.description??"",Ae()),arrowheadStyle:xY,labelpos:"c",labelType:bY,thickness:TY,classes:kY,look:s};i.push(d),_p++}break}})},"setupDoc"),GIe=o((e,t="TB")=>{let r=t;if(e.doc)for(let n of e.doc)n.stmt==="dir"&&(r=n.value);return r},"getDir");o(PL,"insertOrUpdateNode");o(hRt,"getClassesFromDbInfo");o(dRt,"getStylesFromDbInfo");ix=o((e,t,r,n,i,a,s,l)=>{let u=t.id,h=r.get(u),d=hRt(h),f=dRt(h),p=Ae();if(Z.info("dataFetcher parsedItem",t,h,f),u!=="root"){let m=DL;t.start===!0?m=LIe:t.start===!1&&(m=DIe),t.type!==_0&&(m=t.type),OL.get(u)||OL.set(u,{id:u,shape:m,description:xt.sanitizeText(u,p),cssClasses:`${d} ${NIe}`,cssStyles:f});let g=OL.get(u);t.description&&(Array.isArray(g.description)?(g.shape=IL,g.description.push(t.description)):g.description?.length&&g.description.length>0?(g.shape=IL,g.description===u?g.description=[t.description]:g.description=[g.description,t.description]):(g.shape=DL,g.description=t.description),g.description=xt.sanitizeTextOrArray(g.description,p)),g.description?.length===1&&g.shape===IL&&(g.type==="group"?g.shape=wY:g.shape=DL),!g.type&&t.doc&&(Z.info("Setting cluster for XCX",u,GIe(t)),g.type="group",g.isGroup=!0,g.dir=GIe(t),g.explicitDir=t.doc.some(v=>v.stmt==="dir"),g.shape=t.type===LL?CY:wY,g.cssClasses=`${g.cssClasses} ${BIe} ${a?$Ie:""}`);let y={labelStyle:"",shape:g.shape,label:g.description,cssClasses:g.cssClasses,cssCompiledStyles:[],cssStyles:g.cssStyles,id:u,dir:g.dir,domId:RY(u,_p),type:g.type,isGroup:g.type==="group",padding:8,rx:10,ry:10,look:s,labelType:"markdown"};if(y.shape===CY&&(y.label=""),e&&e.id!=="root"&&(Z.trace("Setting node ",u," to be child of its parent ",e.id),y.parentId=e.id),y.centerLabel=!0,t.note){let v={labelStyle:"",shape:IIe,label:t.note.text,labelType:"markdown",cssClasses:OIe,cssStyles:[],cssCompiledStyles:[],id:u+zIe+"-"+_p,domId:RY(u,_p,EY),type:g.type,isGroup:g.type==="group",padding:p.flowchart?.padding,look:s,position:t.note.position},x=u+AY,b={labelStyle:"",shape:MIe,label:t.note.text,cssClasses:g.cssClasses,cssStyles:[],id:u+AY,domId:RY(u,_p,SY),type:"group",isGroup:!0,padding:16,look:s,position:t.note.position};_p++,b.id=x,v.parentId=x,PL(n,b,l),PL(n,v,l),PL(n,y,l);let T=u,k=v.id;t.note.position==="left of"&&(T=v.id,k=u),i.push({id:T+"-"+k,start:T,end:k,arrowhead:"none",arrowTypeEnd:"",style:vY,labelStyle:"",classes:PIe,arrowheadStyle:xY,labelpos:"c",labelType:bY,thickness:TY,look:s})}else PL(n,y,l)}t.doc&&(Z.trace("Adding nodes children "),uRt(t,t.doc,r,n,i,!a,s,l))},"dataFetcher"),WIe=o(()=>{OL.clear(),_p=0},"reset")});var LY,fRt,pRt,HIe,DY=F(()=>{"use strict";Xt();vt();Am();Qf();Jf();Qt();NL();LY=o((e,t="TB")=>{if(!e.doc)return t;let r=t;for(let n of e.doc)n.stmt==="dir"&&(r=n.value);return r},"getDir"),fRt=o(function(e,t){return t.db.getClasses()},"getClasses"),pRt=o(async function(e,t,r,n){Z.info("REF0:"),Z.info("Drawing state diagram (v2)",t);let{securityLevel:i,state:a,layout:s}=Ae();n.db.extract(n.db.getRootDocV2());let l=n.db.getData(),u=pl(t,i);l.type=n.type,l.layoutAlgorithm=s,l.nodeSpacing=a?.nodeSpacing||50,l.rankSpacing=a?.rankSpacing||50,Ae().look==="neo"?l.markers=["barbNeo"]:l.markers=["barb"],l.diagramId=t,await Al(l,u);let d=8;try{(typeof n.db.getLinks=="function"?n.db.getLinks():new Map).forEach((p,m)=>{let g=typeof m=="string"?m:typeof m?.id=="string"?m.id:"",y=l.nodes.find(C=>C.id===g);if(!g){Z.warn("\u26A0\uFE0F Invalid or missing stateId from key:",JSON.stringify(m));return}let v=u.node()?.querySelectorAll("g.node, g.rough-node"),x;if(v?.forEach(C=>{let w=C.textContent?.trim();(C.id===y?.domId||w===g)&&(x=C)}),!x){Z.warn("\u26A0\uFE0F Could not find node matching text:",g);return}let b=x.parentNode;if(!b){Z.warn("\u26A0\uFE0F Node has no parent, cannot wrap:",g);return}let T=document.createElementNS("http://www.w3.org/2000/svg","a"),k=p.url.replace(/^"+|"+$/g,"");if(T.setAttributeNS("http://www.w3.org/1999/xlink","xlink:href",k),T.setAttribute("target","_blank"),p.tooltip){let C=p.tooltip.replace(/^"+|"+$/g,"");T.setAttribute("title",C),x.setAttribute("title",C)}b.replaceChild(T,x),T.appendChild(x),Z.info("\u{1F517} Wrapped node in <a> tag for:",g,p.url)})}catch(f){Z.error("\u274C Error injecting clickable links:",f)}Zt.insertTitle(u,"statediagramTitleText",a?.titleTopMargin??25,n.db.getDiagramTitle()),vo(u,d,nx,a?.useMaxWidth??!0)},"draw"),HIe={getClasses:fRt,draw:pRt,getDir:LY}});var Ys,YIe,jIe,BL,Nl,$L=F(()=>{"use strict";$r();H0();Xt();vt();Qt();Vr();Nn();Hd();qIe();DY();NL();Ys={START_NODE:"[*]",START_TYPE:"start",END_NODE:"[*]",END_TYPE:"end",COLOR_KEYWORD:"color",FILL_KEYWORD:"fill",BG_FILL:"bgFill",STYLECLASS_SEP:","},YIe=o(()=>new Map,"newClassesList"),jIe=o(()=>({relations:[],states:new Map,documents:{}}),"newDoc"),BL=o(e=>JSON.parse(JSON.stringify(e)),"clone"),Nl=class{constructor(t){this.version=t;this.nodes=[];this.edges=[];this.rootDoc=[];this.classes=YIe();this.documents={root:jIe()};this.currentDocument=this.documents.root;this.startEndCount=0;this.dividerCnt=0;this.links=new Map;this.funs=[];this.getAccTitle=Ar;this.setAccTitle=kr;this.getAccDescription=_r;this.setAccDescription=Rr;this.setDiagramTitle=Or;this.getDiagramTitle=Lr;this.clear(),this.setRootDoc=this.setRootDoc.bind(this),this.getDividerId=this.getDividerId.bind(this),this.setDirection=this.setDirection.bind(this),this.trimColon=this.trimColon.bind(this),this.bindFunctions=this.bindFunctions.bind(this)}static{o(this,"StateDB")}static{this.relationType={AGGREGATION:0,EXTENSION:1,COMPOSITION:2,DEPENDENCY:3}}extract(t){this.clear(!0);for(let i of Array.isArray(t)?t:t.doc)switch(i.stmt){case Rp:this.addState(i.id.trim(),i.type,i.doc,i.description,i.note);break;case Ww:this.addRelation(i.state1,i.state2,i.description);break;case AIe:this.addStyleClass(i.id.trim(),i.classes);break;case RIe:this.handleStyleDef(i);break;case _Ie:this.setCssClass(i.id.trim(),i.styleClass);break;case"click":this.addLink(i.id,i.url,i.tooltip);break}let r=this.getStates(),n=Ae();WIe(),ix(void 0,this.getRootDocV2(),r,this.nodes,this.edges,!0,n.look,this.classes);for(let i of this.nodes)if(Array.isArray(i.label)){if(i.description=i.label.slice(1),i.isGroup&&i.description.length>0)throw new Error(`Group nodes can only have label. Remove the additional description for node [${i.id}]`);i.label=i.label[0]}}handleStyleDef(t){let r=t.id.trim().split(","),n=t.styleClass.split(",");for(let i of r){let a=this.getState(i);if(!a){let s=i.trim();this.addState(s),a=this.getState(s)}a&&(a.styles=n.map(s=>s.replace(/;/g,"")?.trim()))}}setRootDoc(t){Z.info("Setting root doc",t),this.rootDoc=t,this.version===1?this.extract(t):this.extract(this.getRootDocV2())}docTranslator(t,r,n){if(r.stmt===Ww){this.docTranslator(t,r.state1,!0),this.docTranslator(t,r.state2,!1);return}if(r.stmt===Rp&&(r.id===Ys.START_NODE?(r.id=t.id+(n?"_start":"_end"),r.start=n):r.id=r.id.trim()),r.stmt!==R0&&r.stmt!==Rp||!r.doc)return;let i=[],a=[];for(let s of r.doc)if(s.type===LL){let l=BL(s);l.doc=BL(a),i.push(l),a=[]}else a.push(s);if(i.length>0&&a.length>0){let s={stmt:Rp,id:hP(),type:"divider",doc:BL(a)};i.push(BL(s)),r.doc=i}r.doc.forEach(s=>this.docTranslator(r,s,!0))}getRootDocV2(){return this.docTranslator({id:R0,stmt:R0},{id:R0,stmt:R0,doc:this.rootDoc},!0),{id:R0,doc:this.rootDoc}}addState(t,r=_0,n=void 0,i=void 0,a=void 0,s=void 0,l=void 0,u=void 0){let h=t?.trim();if(!this.currentDocument.states.has(h))Z.info("Adding state ",h,i),this.currentDocument.states.set(h,{stmt:Rp,id:h,descriptions:[],type:r,doc:n,note:a,classes:[],styles:[],textStyles:[]});else{let d=this.currentDocument.states.get(h);if(!d)throw new Error(`State not found: ${h}`);d.doc||(d.doc=n),d.type||(d.type=r)}if(i&&(Z.info("Setting state description",h,i),(Array.isArray(i)?i:[i]).forEach(f=>this.addDescription(h,f.trim()))),a){let d=this.currentDocument.states.get(h);if(!d)throw new Error(`State not found: ${h}`);d.note=a,d.note.text=xt.sanitizeText(d.note.text,Ae())}s&&(Z.info("Setting state classes",h,s),(Array.isArray(s)?s:[s]).forEach(f=>this.setCssClass(h,f.trim()))),l&&(Z.info("Setting state styles",h,l),(Array.isArray(l)?l:[l]).forEach(f=>this.setStyle(h,f.trim()))),u&&(Z.info("Setting state styles",h,l),(Array.isArray(u)?u:[u]).forEach(f=>this.setTextStyle(h,f.trim())))}clear(t){this.nodes=[],this.edges=[],this.funs=[this.setupToolTips.bind(this)],this.documents={root:jIe()},this.currentDocument=this.documents.root,this.startEndCount=0,this.classes=YIe(),t||(this.links=new Map,yr())}getState(t){return this.currentDocument.states.get(t)}getStates(){return this.currentDocument.states}logDocuments(){Z.info("Documents = ",this.documents)}getRelations(){return this.currentDocument.relations}addLink(t,r,n){this.links.set(t,{url:r,tooltip:n}),Z.warn("Adding link",t,r,n)}getLinks(){return this.links}startIdIfNeeded(t=""){return t===Ys.START_NODE?(this.startEndCount++,`${Ys.START_TYPE}${this.startEndCount}`):t}startTypeIfNeeded(t="",r=_0){return t===Ys.START_NODE?Ys.START_TYPE:r}endIdIfNeeded(t=""){return t===Ys.END_NODE?(this.startEndCount++,`${Ys.END_TYPE}${this.startEndCount}`):t}endTypeIfNeeded(t="",r=_0){return t===Ys.END_NODE?Ys.END_TYPE:r}addRelationObjs(t,r,n=""){let i=this.startIdIfNeeded(t.id.trim()),a=this.startTypeIfNeeded(t.id.trim(),t.type),s=this.startIdIfNeeded(r.id.trim()),l=this.startTypeIfNeeded(r.id.trim(),r.type);this.addState(i,a,t.doc,t.description,t.note,t.classes,t.styles,t.textStyles),this.addState(s,l,r.doc,r.description,r.note,r.classes,r.styles,r.textStyles),this.currentDocument.relations.push({id1:i,id2:s,relationTitle:xt.sanitizeText(n,Ae())})}addRelation(t,r,n){if(typeof t=="object"&&typeof r=="object")this.addRelationObjs(t,r,n);else if(typeof t=="string"&&typeof r=="string"){let i=this.startIdIfNeeded(t.trim()),a=this.startTypeIfNeeded(t),s=this.endIdIfNeeded(r.trim()),l=this.endTypeIfNeeded(r);this.addState(i,a),this.addState(s,l),this.currentDocument.relations.push({id1:i,id2:s,relationTitle:n?xt.sanitizeText(n,Ae()):void 0})}}addDescription(t,r){let n=this.currentDocument.states.get(t),i=r.startsWith(":")?r.replace(":","").trim():r;n?.descriptions?.push(xt.sanitizeText(i,Ae()))}cleanupLabel(t){return t.startsWith(":")?t.slice(2).trim():t.trim()}getDividerId(){return this.dividerCnt++,`divider-id-${this.dividerCnt}`}addStyleClass(t,r=""){this.classes.has(t)||this.classes.set(t,{id:t,styles:[],textStyles:[]});let n=this.classes.get(t);r&&n&&r.split(Ys.STYLECLASS_SEP).forEach(i=>{let a=i.replace(/([^;]*);/,"$1").trim();if(RegExp(Ys.COLOR_KEYWORD).exec(i)){let l=a.replace(Ys.FILL_KEYWORD,Ys.BG_FILL).replace(Ys.COLOR_KEYWORD,Ys.FILL_KEYWORD);n.textStyles.push(l)}n.styles.push(a)})}getClasses(){return this.classes}setupToolTips(t){let r=Dy();et(t).select("svg").selectAll("g.node, g.rough-node").on("mouseover",a=>{let s=et(a.currentTarget),l=s.attr("title");if(l===null)return;let u=a.currentTarget?.getBoundingClientRect();r.transition().duration(200).style("opacity",".9"),r.style("left",window.scrollX+u.left+(u.right-u.left)/2+"px").style("top",window.scrollY+u.bottom+"px"),r.html(Zs.sanitize(l)),s.classed("hover",!0)}).on("mouseout",a=>{r.transition().duration(500).style("opacity",0),et(a.currentTarget).classed("hover",!1)})}setCssClass(t,r){t.split(",").forEach(n=>{let i=this.getState(n);if(!i){let a=n.trim();this.addState(a),i=this.getState(a)}i?.classes?.push(r)})}setStyle(t,r){this.getState(t)?.styles?.push(r)}setTextStyle(t,r){this.getState(t)?.textStyles?.push(r)}bindFunctions(t){this.funs.forEach(r=>{r(t)})}getDirectionStatement(){return this.rootDoc.find(t=>t.stmt==="dir")}getDirection(){return this.getDirectionStatement()?.value??"TB"}setDirection(t){let r=this.getDirectionStatement();r?r.value=t:this.rootDoc.unshift({stmt:"dir",value:t})}trimColon(t){return t.startsWith(":")?t.slice(1).trim():t.trim()}getData(){let t=Ae();return{nodes:this.nodes,edges:this.edges,other:{},config:t,direction:LY(this.getRootDocV2())}}getConfig(){return Ae().state}}});var gRt,FL,IY=F(()=>{"use strict";gRt=o(e=>`
 defs [id$="-barbEnd"] {
     fill: ${e.transitionColor};
     stroke: ${e.transitionColor};
@@ -2419,12 +2433,12 @@
   ry: ${e.radius}px;
   filter: ${e.dropShadow?e.dropShadow.replace("url(#drop-shadow)",`url(${e.svgId}-drop-shadow)`):"none"}
 }
-`,"getStyles"),o_=qCt});var UCt,HCt,YCt,jCt,n_e,XCt,KCt,ZCt,QCt,NW,i_e,a_e,s_e=z(()=>{"use strict";Rr();s_();Xt();Ir();Ut();St();UCt=o(e=>e.append("circle").attr("class","start-state").attr("r",ge().state.sizeUnit).attr("cx",ge().state.padding+ge().state.sizeUnit).attr("cy",ge().state.padding+ge().state.sizeUnit),"drawStartState"),HCt=o(e=>e.append("line").style("stroke","grey").style("stroke-dasharray","3").attr("x1",ge().state.textHeight).attr("class","divider").attr("x2",ge().state.textHeight*2).attr("y1",0).attr("y2",0),"drawDivider"),YCt=o((e,t)=>{let r=e.append("text").attr("x",2*ge().state.padding).attr("y",ge().state.textHeight+2*ge().state.padding).attr("font-size",ge().state.fontSize).attr("class","state-title").text(t.id),i=r.node().getBBox();return e.insert("rect",":first-child").attr("x",ge().state.padding).attr("y",ge().state.padding).attr("width",i.width+2*ge().state.padding).attr("height",i.height+2*ge().state.padding).attr("rx",ge().state.radius),r},"drawSimpleState"),jCt=o((e,t)=>{let r=o(function(p,m,g){let y=p.append("tspan").attr("x",2*ge().state.padding).text(m);g||y.attr("dy",ge().state.textHeight)},"addTspan"),n=e.append("text").attr("x",2*ge().state.padding).attr("y",ge().state.textHeight+1.3*ge().state.padding).attr("font-size",ge().state.fontSize).attr("class","state-title").text(t.descriptions[0]).node().getBBox(),a=n.height,s=e.append("text").attr("x",ge().state.padding).attr("y",a+ge().state.padding*.4+ge().state.dividerMargin+ge().state.textHeight).attr("class","state-description"),l=!0,u=!0;t.descriptions.forEach(function(p){l||(r(s,p,u),u=!1),l=!1});let h=e.append("line").attr("x1",ge().state.padding).attr("y1",ge().state.padding+a+ge().state.dividerMargin/2).attr("y2",ge().state.padding+a+ge().state.dividerMargin/2).attr("class","descr-divider"),d=s.node().getBBox(),f=Math.max(d.width,n.width);return h.attr("x2",f+3*ge().state.padding),e.insert("rect",":first-child").attr("x",ge().state.padding).attr("y",ge().state.padding).attr("width",f+2*ge().state.padding).attr("height",d.height+a+2*ge().state.padding).attr("rx",ge().state.radius),e},"drawDescrState"),n_e=o((e,t,r)=>{let i=ge().state.padding,n=2*ge().state.padding,a=e.node().getBBox(),s=a.width,l=a.x,u=e.append("text").attr("x",0).attr("y",ge().state.titleShift).attr("font-size",ge().state.fontSize).attr("class","state-title").text(t.id),d=u.node().getBBox().width+n,f=Math.max(d,s);f===s&&(f=f+n);let p,m=e.node().getBBox();t.doc,p=l-i,d>s&&(p=(s-f)/2+i),Math.abs(l-m.x)<i&&d>s&&(p=l-(d-s)/2);let g=1-ge().state.textHeight;return e.insert("rect",":first-child").attr("x",p).attr("y",g).attr("class",r?"alt-composit":"composit").attr("width",f).attr("height",m.height+ge().state.textHeight+ge().state.titleShift+1).attr("rx","0"),u.attr("x",p+i),d<=s&&u.attr("x",l+(f-n)/2-d/2+i),e.insert("rect",":first-child").attr("x",p).attr("y",ge().state.titleShift-ge().state.textHeight-ge().state.padding).attr("width",f).attr("height",ge().state.textHeight*3).attr("rx",ge().state.radius),e.insert("rect",":first-child").attr("x",p).attr("y",ge().state.titleShift-ge().state.textHeight-ge().state.padding).attr("width",f).attr("height",m.height+3+2*ge().state.textHeight).attr("rx",ge().state.radius),e},"addTitleAndBox"),XCt=o(e=>(e.append("circle").attr("class","end-state-outer").attr("r",ge().state.sizeUnit+ge().state.miniPadding).attr("cx",ge().state.padding+ge().state.sizeUnit+ge().state.miniPadding).attr("cy",ge().state.padding+ge().state.sizeUnit+ge().state.miniPadding),e.append("circle").attr("class","end-state-inner").attr("r",ge().state.sizeUnit).attr("cx",ge().state.padding+ge().state.sizeUnit+2).attr("cy",ge().state.padding+ge().state.sizeUnit+2)),"drawEndState"),KCt=o((e,t)=>{let r=ge().state.forkWidth,i=ge().state.forkHeight;if(t.parentId){let n=r;r=i,i=n}return e.append("rect").style("stroke","black").style("fill","black").attr("width",r).attr("height",i).attr("x",ge().state.padding).attr("y",ge().state.padding)},"drawForkJoinState"),ZCt=o((e,t,r,i)=>{let n=0,a=i.append("text");a.style("text-anchor","start"),a.attr("class","noteText");let s=e.replace(/\r\n/g,"<br/>");s=s.replace(/\n/g,"<br/>");let l=s.split(vt.lineBreakRegex),u=1.25*ge().state.noteMargin;for(let h of l){let d=h.trim();if(d.length>0){let f=a.append("tspan");if(f.text(d),u===0){let p=f.node().getBBox();u+=p.height}n+=u,f.attr("x",t+ge().state.noteMargin),f.attr("y",r+n+1.25*ge().state.noteMargin)}}return{textWidth:a.node().getBBox().width,textHeight:n}},"_drawLongText"),QCt=o((e,t)=>{t.attr("class","state-note");let r=t.append("rect").attr("x",0).attr("y",ge().state.padding),i=t.append("g"),{textWidth:n,textHeight:a}=ZCt(e,0,0,i);return r.attr("height",a+2*ge().state.noteMargin),r.attr("width",n+ge().state.noteMargin*2),r},"drawNote"),NW=o(function(e,t){let r=t.id,i={id:r,label:t.id,width:0,height:0},n=e.append("g").attr("id",r).attr("class","stateGroup");t.type==="start"&&UCt(n),t.type==="end"&&XCt(n),(t.type==="fork"||t.type==="join")&&KCt(n,t),t.type==="note"&&QCt(t.note.text,n),t.type==="divider"&&HCt(n),t.type==="default"&&t.descriptions.length===0&&YCt(n,t),t.type==="default"&&t.descriptions.length>0&&jCt(n,t);let a=n.node().getBBox();return i.width=a.width+2*ge().state.padding,i.height=a.height+2*ge().state.padding,i},"drawState"),i_e=0,a_e=o(function(e,t,r){let i=o(function(u){switch(u){case ol.relationType.AGGREGATION:return"aggregation";case ol.relationType.EXTENSION:return"extension";case ol.relationType.COMPOSITION:return"composition";case ol.relationType.DEPENDENCY:return"dependency"}},"getRelationType");t.points=t.points.filter(u=>!Number.isNaN(u.y));let n=t.points,a=_l().x(function(u){return u.x}).y(function(u){return u.y}).curve(Dl),s=e.append("path").attr("d",a(n)).attr("id","edge"+i_e).attr("class","transition"),l="";if(ge().state.arrowMarkerAbsolute&&(l=Hf(!0)),s.attr("marker-end","url("+l+"#"+i(ol.relationType.DEPENDENCY)+"End)"),r.title!==void 0){let u=e.append("g").attr("class","stateLabel"),{x:h,y:d}=Zt.calcLabelPosition(t.points),f=vt.getRows(r.title),p=0,m=[],g=0,y=0;for(let b=0;b<=f.length;b++){let T=u.append("text").attr("text-anchor","middle").text(f[b]).attr("x",h).attr("y",d+p),w=T.node().getBBox();g=Math.max(g,w.width),y=Math.min(y,w.x),Z.info(w.x,h,d+p),p===0&&(p=T.node().getBBox().height,Z.info("Title height",p,d)),m.push(T)}let v=p*f.length;if(f.length>1){let b=(f.length-1)*p*.5;m.forEach((T,w)=>T.attr("y",d+w*p-b)),v=p*f.length}let x=u.node().getBBox();u.insert("rect",":first-child").attr("class","box").attr("x",h-g/2-ge().state.padding/2).attr("y",d-v/2-ge().state.padding/2-3.5).attr("width",g+ge().state.padding).attr("height",v+ge().state.padding),Z.info(x)}i_e++},"drawEdge")});var Co,IW,JCt,ekt,tkt,rkt,o_e,l_e,c_e=z(()=>{"use strict";Rr();d9();Uo();St();Ir();s_e();Ut();Di();IW={},JCt=o(function(){},"setConf"),ekt=o(function(e){e.append("defs").append("marker").attr("id","dependencyEnd").attr("refX",19).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 19,7 L9,13 L14,7 L9,1 Z")},"insertMarkers"),tkt=o(function(e,t,r,i){Co=ge().state;let n=ge().securityLevel,a;n==="sandbox"&&(a=Je("#i"+t));let s=n==="sandbox"?Je(a.nodes()[0].contentDocument.body):Je("body"),l=n==="sandbox"?a.nodes()[0].contentDocument:document;Z.debug("Rendering diagram "+e);let u=s.select(`[id='${t}']`);ekt(u);let h=i.db.getRootDoc(),d=u.append("g").attr("id",t+"-root");o_e(h,d,void 0,!1,s,l,i);let f=Co.padding,p=u.node().getBBox(),m=p.width+f*2,g=p.height+f*2,y=m*1.75;Br(u,g,y,Co.useMaxWidth),u.attr("viewBox",`${p.x-Co.padding}  ${p.y-Co.padding} `+m+" "+g)},"draw"),rkt=o(e=>e?e.length*Co.fontSizeFactor:1,"getLabelWidth"),o_e=o((e,t,r,i,n,a,s)=>{let l=new ui({compound:!0,multigraph:!0}),u,h=!0;for(u=0;u<e.length;u++)if(e[u].stmt==="relation"){h=!1;break}r?l.setGraph({rankdir:"LR",multigraph:!0,compound:!0,ranker:"tight-tree",ranksep:h?1:Co.edgeLengthFactor,nodeSep:h?1:50,isMultiGraph:!0}):l.setGraph({rankdir:"TB",multigraph:!0,compound:!0,ranksep:h?1:Co.edgeLengthFactor,nodeSep:h?1:50,ranker:"tight-tree",isMultiGraph:!0}),l.setDefaultEdgeLabel(function(){return{}});let d=s.db.getStates(),f=s.db.getRelations(),p=Object.keys(d),m=!0;for(let b of p){let T=d[b];r&&(T.parentId=r);let w;if(T.doc){let C=t.append("g").attr("id",T.id).attr("class","stateGroup");if(w=o_e(T.doc,C,T.id,!i,n,a,s),m){C=n_e(C,T,i);let k=C.node().getBBox();w.width=k.width,w.height=k.height+Co.padding/2,IW[T.id]={y:Co.compositTitleSize}}else{let k=C.node().getBBox();w.width=k.width,w.height=k.height}}else w=NW(t,T,l);if(T.note){let C={descriptions:[],id:T.id+"-note",note:T.note,type:"note"},k=NW(t,C,l);T.note.position==="left of"?(l.setNode(w.id+"-note",k),l.setNode(w.id,w)):(l.setNode(w.id,w),l.setNode(w.id+"-note",k)),l.setParent(w.id,w.id+"-group"),l.setParent(w.id+"-note",w.id+"-group")}else l.setNode(w.id,w)}Z.debug("Count=",l.nodeCount(),l);let g=0;f.forEach(function(b){g++,Z.debug("Setting edge",b),l.setEdge(b.id1,b.id2,{relation:b,width:rkt(b.title),height:Co.labelHeight*vt.getRows(b.title).length,labelpos:"c"},"id"+g)}),Mb(l),Z.debug("Graph after layout",l.nodes());let y=t.node();l.nodes().forEach(function(b){b!==void 0&&l.node(b)!==void 0?(Z.warn("Node "+b+": "+JSON.stringify(l.node(b))),n.select("#"+y.id+" #"+b).attr("transform","translate("+(l.node(b).x-l.node(b).width/2)+","+(l.node(b).y+(IW[b]?IW[b].y:0)-l.node(b).height/2)+" )"),n.select("#"+y.id+" #"+b).attr("data-x-shift",l.node(b).x-l.node(b).width/2),a.querySelectorAll("#"+y.id+" #"+b+" .divider").forEach(w=>{let C=w.parentElement,k=0,E=0;C&&(C.parentElement&&(k=C.parentElement.getBBox().width),E=parseInt(C.getAttribute("data-x-shift"),10),Number.isNaN(E)&&(E=0)),w.setAttribute("x1",0-E+8),w.setAttribute("x2",k-E-8)})):Z.debug("No Node "+b+": "+JSON.stringify(l.node(b)))});let v=y.getBBox();l.edges().forEach(function(b){b!==void 0&&l.edge(b)!==void 0&&(Z.debug("Edge "+b.v+" -> "+b.w+": "+JSON.stringify(l.edge(b))),a_e(t,l.edge(b),l.edge(b).relation))}),v=y.getBBox();let x={id:r||"root",label:r||"root",width:0,height:0};return x.width=v.width+2*Co.padding,x.height=v.height+2*Co.padding,Z.debug("Doc rendered",x,l),x},"renderDoc"),l_e={setConf:JCt,draw:tkt}});var u_e={};xr(u_e,{diagram:()=>ikt});var ikt,h_e=z(()=>{"use strict";yW();s_();MW();c_e();ikt={parser:Z6,get db(){return new ol(1)},renderer:l_e,styles:o_,init:o(e=>{e.state||(e.state={}),e.state.arrowMarkerAbsolute=e.arrowMarkerAbsolute},"init")}});var p_e={};xr(p_e,{diagram:()=>okt});var okt,m_e=z(()=>{"use strict";yW();s_();MW();LW();okt={parser:Z6,get db(){return new ol(2)},renderer:J6e,styles:o_,init:o(e=>{e.state||(e.state={}),e.state.arrowMarkerAbsolute=e.arrowMarkerAbsolute},"init")}});var OW,v_e,x_e=z(()=>{"use strict";OW=(function(){var e=o(function(f,p,m,g){for(m=m||{},g=f.length;g--;m[f[g]]=p);return m},"o"),t=[6,8,10,11,12,14,16,17,18],r=[1,9],i=[1,10],n=[1,11],a=[1,12],s=[1,13],l=[1,14],u={trace:o(function(){},"trace"),yy:{},symbols_:{error:2,start:3,journey:4,document:5,EOF:6,line:7,SPACE:8,statement:9,NEWLINE:10,title:11,acc_title:12,acc_title_value:13,acc_descr:14,acc_descr_value:15,acc_descr_multiline_value:16,section:17,taskName:18,taskData:19,$accept:0,$end:1},terminals_:{2:"error",4:"journey",6:"EOF",8:"SPACE",10:"NEWLINE",11:"title",12:"acc_title",13:"acc_title_value",14:"acc_descr",15:"acc_descr_value",16:"acc_descr_multiline_value",17:"section",18:"taskName",19:"taskData"},productions_:[0,[3,3],[5,0],[5,2],[7,2],[7,1],[7,1],[7,1],[9,1],[9,2],[9,2],[9,1],[9,1],[9,2]],performAction:o(function(p,m,g,y,v,x,b){var T=x.length-1;switch(v){case 1:return x[T-1];case 2:this.$=[];break;case 3:x[T-1].push(x[T]),this.$=x[T-1];break;case 4:case 5:this.$=x[T];break;case 6:case 7:this.$=[];break;case 8:y.setDiagramTitle(x[T].substr(6)),this.$=x[T].substr(6);break;case 9:this.$=x[T].trim(),y.setAccTitle(this.$);break;case 10:case 11:this.$=x[T].trim(),y.setAccDescription(this.$);break;case 12:y.addSection(x[T].substr(8)),this.$=x[T].substr(8);break;case 13:y.addTask(x[T-1],x[T]),this.$="task";break}},"anonymous"),table:[{3:1,4:[1,2]},{1:[3]},e(t,[2,2],{5:3}),{6:[1,4],7:5,8:[1,6],9:7,10:[1,8],11:r,12:i,14:n,16:a,17:s,18:l},e(t,[2,7],{1:[2,1]}),e(t,[2,3]),{9:15,11:r,12:i,14:n,16:a,17:s,18:l},e(t,[2,5]),e(t,[2,6]),e(t,[2,8]),{13:[1,16]},{15:[1,17]},e(t,[2,11]),e(t,[2,12]),{19:[1,18]},e(t,[2,4]),e(t,[2,9]),e(t,[2,10]),e(t,[2,13])],defaultActions:{},parseError:o(function(p,m){if(m.recoverable)this.trace(p);else{var g=new Error(p);throw g.hash=m,g}},"parseError"),parse:o(function(p){var m=this,g=[0],y=[],v=[null],x=[],b=this.table,T="",w=0,C=0,k=0,E=2,A=1,N=x.slice.call(arguments,1),P=Object.create(this.lexer),I={yy:{}};for(var D in this.yy)Object.prototype.hasOwnProperty.call(this.yy,D)&&(I.yy[D]=this.yy[D]);P.setInput(p,I.yy),I.yy.lexer=P,I.yy.parser=this,typeof P.yylloc>"u"&&(P.yylloc={});var _=P.yylloc;x.push(_);var R=P.options&&P.options.ranges;typeof I.yy.parseError=="function"?this.parseError=I.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function M(J){g.length=g.length-2*J,v.length=v.length-J,x.length=x.length-J}o(M,"popStack");function L(){var J;return J=y.pop()||P.lex()||A,typeof J!="number"&&(J instanceof Array&&(y=J,J=y.pop()),J=m.symbols_[J]||J),J}o(L,"lex");for(var B,O,$,G,F,V,H={},j,U,Q,Y;;){if($=g[g.length-1],this.defaultActions[$]?G=this.defaultActions[$]:((B===null||typeof B>"u")&&(B=L()),G=b[$]&&b[$][B]),typeof G>"u"||!G.length||!G[0]){var ae="";Y=[];for(j in b[$])this.terminals_[j]&&j>E&&Y.push("'"+this.terminals_[j]+"'");P.showPosition?ae="Parse error on line "+(w+1)+`:
-`+P.showPosition()+`
-Expecting `+Y.join(", ")+", got '"+(this.terminals_[B]||B)+"'":ae="Parse error on line "+(w+1)+": Unexpected "+(B==A?"end of input":"'"+(this.terminals_[B]||B)+"'"),this.parseError(ae,{text:P.match,token:this.terminals_[B]||B,line:P.yylineno,loc:_,expected:Y})}if(G[0]instanceof Array&&G.length>1)throw new Error("Parse Error: multiple actions possible at state: "+$+", token: "+B);switch(G[0]){case 1:g.push(B),v.push(P.yytext),x.push(P.yylloc),g.push(G[1]),B=null,O?(B=O,O=null):(C=P.yyleng,T=P.yytext,w=P.yylineno,_=P.yylloc,k>0&&k--);break;case 2:if(U=this.productions_[G[1]][1],H.$=v[v.length-U],H._$={first_line:x[x.length-(U||1)].first_line,last_line:x[x.length-1].last_line,first_column:x[x.length-(U||1)].first_column,last_column:x[x.length-1].last_column},R&&(H._$.range=[x[x.length-(U||1)].range[0],x[x.length-1].range[1]]),V=this.performAction.apply(H,[T,C,w,I.yy,G[1],v,x].concat(N)),typeof V<"u")return V;U&&(g=g.slice(0,-1*U*2),v=v.slice(0,-1*U),x=x.slice(0,-1*U)),g.push(this.productions_[G[1]][0]),v.push(H.$),x.push(H._$),Q=b[g[g.length-2]][g[g.length-1]],g.push(Q);break;case 3:return!0}}return!0},"parse")},h=(function(){var f={EOF:1,parseError:o(function(m,g){if(this.yy.parser)this.yy.parser.parseError(m,g);else throw new Error(m)},"parseError"),setInput:o(function(p,m){return this.yy=m||this.yy||{},this._input=p,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},"setInput"),input:o(function(){var p=this._input[0];this.yytext+=p,this.yyleng++,this.offset++,this.match+=p,this.matched+=p;var m=p.match(/(?:\r\n?|\n).*/g);return m?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),p},"input"),unput:o(function(p){var m=p.length,g=p.split(/(?:\r\n?|\n)/g);this._input=p+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-m),this.offset-=m;var y=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),g.length-1&&(this.yylineno-=g.length-1);var v=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:g?(g.length===y.length?this.yylloc.first_column:0)+y[y.length-g.length].length-g[0].length:this.yylloc.first_column-m},this.options.ranges&&(this.yylloc.range=[v[0],v[0]+this.yyleng-m]),this.yyleng=this.yytext.length,this},"unput"),more:o(function(){return this._more=!0,this},"more"),reject:o(function(){if(this.options.backtrack_lexer)this._backtrack=!0;else return this.parseError("Lexical error on line "+(this.yylineno+1)+`. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).
+`,"getStyles"),FL=gRt});var yRt,vRt,xRt,bRt,KIe,TRt,CRt,wRt,kRt,MY,XIe,ZIe,QIe=F(()=>{"use strict";$r();$L();Qt();Vr();Xt();vt();yRt=o(e=>e.append("circle").attr("class","start-state").attr("r",Ae().state.sizeUnit).attr("cx",Ae().state.padding+Ae().state.sizeUnit).attr("cy",Ae().state.padding+Ae().state.sizeUnit),"drawStartState"),vRt=o(e=>e.append("line").style("stroke","grey").style("stroke-dasharray","3").attr("x1",Ae().state.textHeight).attr("class","divider").attr("x2",Ae().state.textHeight*2).attr("y1",0).attr("y2",0),"drawDivider"),xRt=o((e,t)=>{let r=e.append("text").attr("x",2*Ae().state.padding).attr("y",Ae().state.textHeight+2*Ae().state.padding).attr("font-size",Ae().state.fontSize).attr("class","state-title").text(t.id),n=r.node().getBBox();return e.insert("rect",":first-child").attr("x",Ae().state.padding).attr("y",Ae().state.padding).attr("width",n.width+2*Ae().state.padding).attr("height",n.height+2*Ae().state.padding).attr("rx",Ae().state.radius),r},"drawSimpleState"),bRt=o((e,t)=>{let r=o(function(p,m,g){let y=p.append("tspan").attr("x",2*Ae().state.padding).text(m);g||y.attr("dy",Ae().state.textHeight)},"addTspan"),i=e.append("text").attr("x",2*Ae().state.padding).attr("y",Ae().state.textHeight+1.3*Ae().state.padding).attr("font-size",Ae().state.fontSize).attr("class","state-title").text(t.descriptions[0]).node().getBBox(),a=i.height,s=e.append("text").attr("x",Ae().state.padding).attr("y",a+Ae().state.padding*.4+Ae().state.dividerMargin+Ae().state.textHeight).attr("class","state-description"),l=!0,u=!0;t.descriptions.forEach(function(p){l||(r(s,p,u),u=!1),l=!1});let h=e.append("line").attr("x1",Ae().state.padding).attr("y1",Ae().state.padding+a+Ae().state.dividerMargin/2).attr("y2",Ae().state.padding+a+Ae().state.dividerMargin/2).attr("class","descr-divider"),d=s.node().getBBox(),f=Math.max(d.width,i.width);return h.attr("x2",f+3*Ae().state.padding),e.insert("rect",":first-child").attr("x",Ae().state.padding).attr("y",Ae().state.padding).attr("width",f+2*Ae().state.padding).attr("height",d.height+a+2*Ae().state.padding).attr("rx",Ae().state.radius),e},"drawDescrState"),KIe=o((e,t,r)=>{let n=Ae().state.padding,i=2*Ae().state.padding,a=e.node().getBBox(),s=a.width,l=a.x,u=e.append("text").attr("x",0).attr("y",Ae().state.titleShift).attr("font-size",Ae().state.fontSize).attr("class","state-title").text(t.id),d=u.node().getBBox().width+i,f=Math.max(d,s);f===s&&(f=f+i);let p,m=e.node().getBBox();t.doc,p=l-n,d>s&&(p=(s-f)/2+n),Math.abs(l-m.x)<n&&d>s&&(p=l-(d-s)/2);let g=1-Ae().state.textHeight;return e.insert("rect",":first-child").attr("x",p).attr("y",g).attr("class",r?"alt-composit":"composit").attr("width",f).attr("height",m.height+Ae().state.textHeight+Ae().state.titleShift+1).attr("rx","0"),u.attr("x",p+n),d<=s&&u.attr("x",l+(f-i)/2-d/2+n),e.insert("rect",":first-child").attr("x",p).attr("y",Ae().state.titleShift-Ae().state.textHeight-Ae().state.padding).attr("width",f).attr("height",Ae().state.textHeight*3).attr("rx",Ae().state.radius),e.insert("rect",":first-child").attr("x",p).attr("y",Ae().state.titleShift-Ae().state.textHeight-Ae().state.padding).attr("width",f).attr("height",m.height+3+2*Ae().state.textHeight).attr("rx",Ae().state.radius),e},"addTitleAndBox"),TRt=o(e=>(e.append("circle").attr("class","end-state-outer").attr("r",Ae().state.sizeUnit+Ae().state.miniPadding).attr("cx",Ae().state.padding+Ae().state.sizeUnit+Ae().state.miniPadding).attr("cy",Ae().state.padding+Ae().state.sizeUnit+Ae().state.miniPadding),e.append("circle").attr("class","end-state-inner").attr("r",Ae().state.sizeUnit).attr("cx",Ae().state.padding+Ae().state.sizeUnit+2).attr("cy",Ae().state.padding+Ae().state.sizeUnit+2)),"drawEndState"),CRt=o((e,t)=>{let r=Ae().state.forkWidth,n=Ae().state.forkHeight;if(t.parentId){let i=r;r=n,n=i}return e.append("rect").style("stroke","black").style("fill","black").attr("width",r).attr("height",n).attr("x",Ae().state.padding).attr("y",Ae().state.padding)},"drawForkJoinState"),wRt=o((e,t,r,n)=>{let i=0,a=n.append("text");a.style("text-anchor","start"),a.attr("class","noteText");let s=e.replace(/\r\n/g,"<br/>");s=s.replace(/\n/g,"<br/>");let l=s.split(xt.lineBreakRegex),u=1.25*Ae().state.noteMargin;for(let h of l){let d=h.trim();if(d.length>0){let f=a.append("tspan");if(f.text(d),u===0){let p=f.node().getBBox();u+=p.height}i+=u,f.attr("x",t+Ae().state.noteMargin),f.attr("y",r+i+1.25*Ae().state.noteMargin)}}return{textWidth:a.node().getBBox().width,textHeight:i}},"_drawLongText"),kRt=o((e,t)=>{t.attr("class","state-note");let r=t.append("rect").attr("x",0).attr("y",Ae().state.padding),n=t.append("g"),{textWidth:i,textHeight:a}=wRt(e,0,0,n);return r.attr("height",a+2*Ae().state.noteMargin),r.attr("width",i+Ae().state.noteMargin*2),r},"drawNote"),MY=o(function(e,t){let r=t.id,n={id:r,label:t.id,width:0,height:0},i=e.append("g").attr("id",r).attr("class","stateGroup");t.type==="start"&&yRt(i),t.type==="end"&&TRt(i),(t.type==="fork"||t.type==="join")&&CRt(i,t),t.type==="note"&&kRt(t.note.text,i),t.type==="divider"&&vRt(i),t.type==="default"&&t.descriptions.length===0&&xRt(i,t),t.type==="default"&&t.descriptions.length>0&&bRt(i,t);let a=i.node().getBBox();return n.width=a.width+2*Ae().state.padding,n.height=a.height+2*Ae().state.padding,n},"drawState"),XIe=0,ZIe=o(function(e,t,r){let n=o(function(u){switch(u){case Nl.relationType.AGGREGATION:return"aggregation";case Nl.relationType.EXTENSION:return"extension";case Nl.relationType.COMPOSITION:return"composition";case Nl.relationType.DEPENDENCY:return"dependency"}},"getRelationType");t.points=t.points.filter(u=>!Number.isNaN(u.y));let i=t.points,a=tc().x(function(u){return u.x}).y(function(u){return u.y}).curve(rc),s=e.append("path").attr("d",a(i)).attr("id","edge"+XIe).attr("class","transition"),l="";if(Ae().state.arrowMarkerAbsolute&&(l=Wp(!0)),s.attr("marker-end","url("+l+"#"+n(Nl.relationType.DEPENDENCY)+"End)"),r.title!==void 0){let u=e.append("g").attr("class","stateLabel"),{x:h,y:d}=Zt.calcLabelPosition(t.points),f=xt.getRows(r.title),p=0,m=[],g=0,y=0;for(let b=0;b<=f.length;b++){let T=u.append("text").attr("text-anchor","middle").text(f[b]).attr("x",h).attr("y",d+p),k=T.node().getBBox();g=Math.max(g,k.width),y=Math.min(y,k.x),Z.info(k.x,h,d+p),p===0&&(p=T.node().getBBox().height,Z.info("Title height",p,d)),m.push(T)}let v=p*f.length;if(f.length>1){let b=(f.length-1)*p*.5;m.forEach((T,k)=>T.attr("y",d+k*p-b)),v=p*f.length}let x=u.node().getBBox();u.insert("rect",":first-child").attr("class","box").attr("x",h-g/2-Ae().state.padding/2).attr("y",d-v/2-Ae().state.padding/2-3.5).attr("width",g+Ae().state.padding).attr("height",v+Ae().state.padding),Z.info(x)}XIe++},"drawEdge")});var tl,NY,SRt,ERt,ARt,RRt,JIe,eMe,tMe=F(()=>{"use strict";$r();q9();qo();vt();Vr();QIe();Xt();$n();NY={},SRt=o(function(){},"setConf"),ERt=o(function(e){e.append("defs").append("marker").attr("id","dependencyEnd").attr("refX",19).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 19,7 L9,13 L14,7 L9,1 Z")},"insertMarkers"),ARt=o(function(e,t,r,n){tl=Ae().state;let i=Ae().securityLevel,a;i==="sandbox"&&(a=et("#i"+t));let s=i==="sandbox"?et(a.nodes()[0].contentDocument.body):et("body"),l=i==="sandbox"?a.nodes()[0].contentDocument:document;Z.debug("Rendering diagram "+e);let u=s.select(`[id='${t}']`);ERt(u);let h=n.db.getRootDoc(),d=u.append("g").attr("id",t+"-root");JIe(h,d,void 0,!1,s,l,n);let f=tl.padding,p=u.node().getBBox(),m=p.width+f*2,g=p.height+f*2,y=m*1.75;Wr(u,g,y,tl.useMaxWidth),u.attr("viewBox",`${p.x-tl.padding}  ${p.y-tl.padding} `+m+" "+g)},"draw"),RRt=o(e=>e?e.length*tl.fontSizeFactor:1,"getLabelWidth"),JIe=o((e,t,r,n,i,a,s)=>{let l=new on({compound:!0,multigraph:!0}),u,h=!0;for(u=0;u<e.length;u++)if(e[u].stmt==="relation"){h=!1;break}r?l.setGraph({rankdir:"LR",multigraph:!0,compound:!0,ranker:"tight-tree",ranksep:h?1:tl.edgeLengthFactor,nodeSep:h?1:50,isMultiGraph:!0}):l.setGraph({rankdir:"TB",multigraph:!0,compound:!0,ranksep:h?1:tl.edgeLengthFactor,nodeSep:h?1:50,ranker:"tight-tree",isMultiGraph:!0}),l.setDefaultEdgeLabel(function(){return{}});let d=s.db.getStates(),f=s.db.getRelations(),p=Object.keys(d),m=!0;for(let b of p){let T=d[b];r&&(T.parentId=r);let k;if(T.doc){let C=t.append("g").attr("id",T.id).attr("class","stateGroup");if(k=JIe(T.doc,C,T.id,!n,i,a,s),m){C=KIe(C,T,n);let w=C.node().getBBox();k.width=w.width,k.height=w.height+tl.padding/2,NY[T.id]={y:tl.compositTitleSize}}else{let w=C.node().getBBox();k.width=w.width,k.height=w.height}}else k=MY(t,T,l);if(T.note){let C={descriptions:[],id:T.id+"-note",note:T.note,type:"note"},w=MY(t,C,l);T.note.position==="left of"?(l.setNode(k.id+"-note",w),l.setNode(k.id,k)):(l.setNode(k.id,k),l.setNode(k.id+"-note",w)),l.setParent(k.id,k.id+"-group"),l.setParent(k.id+"-note",k.id+"-group")}else l.setNode(k.id,k)}Z.debug("Count=",l.nodeCount(),l);let g=0;f.forEach(function(b){g++,Z.debug("Setting edge",b),l.setEdge(b.id1,b.id2,{relation:b,width:RRt(b.title),height:tl.labelHeight*xt.getRows(b.title).length,labelpos:"c"},"id"+g)}),gT(l),Z.debug("Graph after layout",l.nodes());let y=t.node();l.nodes().forEach(function(b){b!==void 0&&l.node(b)!==void 0?(Z.warn("Node "+b+": "+JSON.stringify(l.node(b))),i.select("#"+y.id+" #"+b).attr("transform","translate("+(l.node(b).x-l.node(b).width/2)+","+(l.node(b).y+(NY[b]?NY[b].y:0)-l.node(b).height/2)+" )"),i.select("#"+y.id+" #"+b).attr("data-x-shift",l.node(b).x-l.node(b).width/2),a.querySelectorAll("#"+y.id+" #"+b+" .divider").forEach(k=>{let C=k.parentElement,w=0,S=0;C&&(C.parentElement&&(w=C.parentElement.getBBox().width),S=parseInt(C.getAttribute("data-x-shift"),10),Number.isNaN(S)&&(S=0)),k.setAttribute("x1",0-S+8),k.setAttribute("x2",w-S-8)})):Z.debug("No Node "+b+": "+JSON.stringify(l.node(b)))});let v=y.getBBox();l.edges().forEach(function(b){b!==void 0&&l.edge(b)!==void 0&&(Z.debug("Edge "+b.v+" -> "+b.w+": "+JSON.stringify(l.edge(b))),ZIe(t,l.edge(b),l.edge(b).relation))}),v=y.getBBox();let x={id:r||"root",label:r||"root",width:0,height:0};return x.width=v.width+2*tl.padding,x.height=v.height+2*tl.padding,Z.debug("Doc rendered",x,l),x},"renderDoc"),eMe={setConf:SRt,draw:ARt}});var rMe={};ir(rMe,{diagram:()=>_Rt});var _Rt,nMe=F(()=>{"use strict";yY();$L();IY();tMe();_Rt={parser:_L,get db(){return new Nl(1)},renderer:eMe,styles:FL,init:o(e=>{e.state||(e.state={}),e.state.arrowMarkerAbsolute=e.arrowMarkerAbsolute},"init")}});var sMe={};ir(sMe,{diagram:()=>MRt});var MRt,oMe=F(()=>{"use strict";yY();$L();IY();DY();MRt={parser:_L,get db(){return new Nl(2)},renderer:HIe,styles:FL,init:o(e=>{e.state||(e.state={}),e.state.arrowMarkerAbsolute=e.arrowMarkerAbsolute},"init")}});var PY,uMe,hMe=F(()=>{"use strict";PY=(function(){var e=o(function(f,p,m,g){for(m=m||{},g=f.length;g--;m[f[g]]=p);return m},"o"),t=[6,8,10,11,12,14,16,17,18],r=[1,9],n=[1,10],i=[1,11],a=[1,12],s=[1,13],l=[1,14],u={trace:o(function(){},"trace"),yy:{},symbols_:{error:2,start:3,journey:4,document:5,EOF:6,line:7,SPACE:8,statement:9,NEWLINE:10,title:11,acc_title:12,acc_title_value:13,acc_descr:14,acc_descr_value:15,acc_descr_multiline_value:16,section:17,taskName:18,taskData:19,$accept:0,$end:1},terminals_:{2:"error",4:"journey",6:"EOF",8:"SPACE",10:"NEWLINE",11:"title",12:"acc_title",13:"acc_title_value",14:"acc_descr",15:"acc_descr_value",16:"acc_descr_multiline_value",17:"section",18:"taskName",19:"taskData"},productions_:[0,[3,3],[5,0],[5,2],[7,2],[7,1],[7,1],[7,1],[9,1],[9,2],[9,2],[9,1],[9,1],[9,2]],performAction:o(function(p,m,g,y,v,x,b){var T=x.length-1;switch(v){case 1:return x[T-1];case 2:this.$=[];break;case 3:x[T-1].push(x[T]),this.$=x[T-1];break;case 4:case 5:this.$=x[T];break;case 6:case 7:this.$=[];break;case 8:y.setDiagramTitle(x[T].substr(6)),this.$=x[T].substr(6);break;case 9:this.$=x[T].trim(),y.setAccTitle(this.$);break;case 10:case 11:this.$=x[T].trim(),y.setAccDescription(this.$);break;case 12:y.addSection(x[T].substr(8)),this.$=x[T].substr(8);break;case 13:y.addTask(x[T-1],x[T]),this.$="task";break}},"anonymous"),table:[{3:1,4:[1,2]},{1:[3]},e(t,[2,2],{5:3}),{6:[1,4],7:5,8:[1,6],9:7,10:[1,8],11:r,12:n,14:i,16:a,17:s,18:l},e(t,[2,7],{1:[2,1]}),e(t,[2,3]),{9:15,11:r,12:n,14:i,16:a,17:s,18:l},e(t,[2,5]),e(t,[2,6]),e(t,[2,8]),{13:[1,16]},{15:[1,17]},e(t,[2,11]),e(t,[2,12]),{19:[1,18]},e(t,[2,4]),e(t,[2,9]),e(t,[2,10]),e(t,[2,13])],defaultActions:{},parseError:o(function(p,m){if(m.recoverable)this.trace(p);else{var g=new Error(p);throw g.hash=m,g}},"parseError"),parse:o(function(p){var m=this,g=[0],y=[],v=[null],x=[],b=this.table,T="",k=0,C=0,w=0,S=2,R=1,L=x.slice.call(arguments,1),N=Object.create(this.lexer),I={yy:{}};for(var _ in this.yy)Object.prototype.hasOwnProperty.call(this.yy,_)&&(I.yy[_]=this.yy[_]);N.setInput(p,I.yy),I.yy.lexer=N,I.yy.parser=this,typeof N.yylloc>"u"&&(N.yylloc={});var A=N.yylloc;x.push(A);var M=N.options&&N.options.ranges;typeof I.yy.parseError=="function"?this.parseError=I.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function D(te){g.length=g.length-2*te,v.length=v.length-te,x.length=x.length-te}o(D,"popStack");function P(){var te;return te=y.pop()||N.lex()||R,typeof te!="number"&&(te instanceof Array&&(y=te,te=y.pop()),te=m.symbols_[te]||te),te}o(P,"lex");for(var B,O,$,V,G,z,W={},H,j,Q,U;;){if($=g[g.length-1],this.defaultActions[$]?V=this.defaultActions[$]:((B===null||typeof B>"u")&&(B=P()),V=b[$]&&b[$][B]),typeof V>"u"||!V.length||!V[0]){var oe="";U=[];for(H in b[$])this.terminals_[H]&&H>S&&U.push("'"+this.terminals_[H]+"'");N.showPosition?oe="Parse error on line "+(k+1)+`:
+`+N.showPosition()+`
+Expecting `+U.join(", ")+", got '"+(this.terminals_[B]||B)+"'":oe="Parse error on line "+(k+1)+": Unexpected "+(B==R?"end of input":"'"+(this.terminals_[B]||B)+"'"),this.parseError(oe,{text:N.match,token:this.terminals_[B]||B,line:N.yylineno,loc:A,expected:U})}if(V[0]instanceof Array&&V.length>1)throw new Error("Parse Error: multiple actions possible at state: "+$+", token: "+B);switch(V[0]){case 1:g.push(B),v.push(N.yytext),x.push(N.yylloc),g.push(V[1]),B=null,O?(B=O,O=null):(C=N.yyleng,T=N.yytext,k=N.yylineno,A=N.yylloc,w>0&&w--);break;case 2:if(j=this.productions_[V[1]][1],W.$=v[v.length-j],W._$={first_line:x[x.length-(j||1)].first_line,last_line:x[x.length-1].last_line,first_column:x[x.length-(j||1)].first_column,last_column:x[x.length-1].last_column},M&&(W._$.range=[x[x.length-(j||1)].range[0],x[x.length-1].range[1]]),z=this.performAction.apply(W,[T,C,k,I.yy,V[1],v,x].concat(L)),typeof z<"u")return z;j&&(g=g.slice(0,-1*j*2),v=v.slice(0,-1*j),x=x.slice(0,-1*j)),g.push(this.productions_[V[1]][0]),v.push(W.$),x.push(W._$),Q=b[g[g.length-2]][g[g.length-1]],g.push(Q);break;case 3:return!0}}return!0},"parse")},h=(function(){var f={EOF:1,parseError:o(function(m,g){if(this.yy.parser)this.yy.parser.parseError(m,g);else throw new Error(m)},"parseError"),setInput:o(function(p,m){return this.yy=m||this.yy||{},this._input=p,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},"setInput"),input:o(function(){var p=this._input[0];this.yytext+=p,this.yyleng++,this.offset++,this.match+=p,this.matched+=p;var m=p.match(/(?:\r\n?|\n).*/g);return m?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),p},"input"),unput:o(function(p){var m=p.length,g=p.split(/(?:\r\n?|\n)/g);this._input=p+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-m),this.offset-=m;var y=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),g.length-1&&(this.yylineno-=g.length-1);var v=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:g?(g.length===y.length?this.yylloc.first_column:0)+y[y.length-g.length].length-g[0].length:this.yylloc.first_column-m},this.options.ranges&&(this.yylloc.range=[v[0],v[0]+this.yyleng-m]),this.yyleng=this.yytext.length,this},"unput"),more:o(function(){return this._more=!0,this},"more"),reject:o(function(){if(this.options.backtrack_lexer)this._backtrack=!0;else return this.parseError("Lexical error on line "+(this.yylineno+1)+`. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).
 `+this.showPosition(),{text:"",token:null,line:this.yylineno});return this},"reject"),less:o(function(p){this.unput(this.match.slice(p))},"less"),pastInput:o(function(){var p=this.matched.substr(0,this.matched.length-this.match.length);return(p.length>20?"...":"")+p.substr(-20).replace(/\n/g,"")},"pastInput"),upcomingInput:o(function(){var p=this.match;return p.length<20&&(p+=this._input.substr(0,20-p.length)),(p.substr(0,20)+(p.length>20?"...":"")).replace(/\n/g,"")},"upcomingInput"),showPosition:o(function(){var p=this.pastInput(),m=new Array(p.length+1).join("-");return p+this.upcomingInput()+`
 `+m+"^"},"showPosition"),test_match:o(function(p,m){var g,y,v;if(this.options.backtrack_lexer&&(v={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(v.yylloc.range=this.yylloc.range.slice(0))),y=p[0].match(/(?:\r\n?|\n).*/g),y&&(this.yylineno+=y.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:y?y[y.length-1].length-y[y.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+p[0].length},this.yytext+=p[0],this.match+=p[0],this.matches=p,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(p[0].length),this.matched+=p[0],g=this.performAction.call(this,this.yy,this,m,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),g)return g;if(this._backtrack){for(var x in v)this[x]=v[x];return!1}return!1},"test_match"),next:o(function(){if(this.done)return this.EOF;this._input||(this.done=!0);var p,m,g,y;this._more||(this.yytext="",this.match="");for(var v=this._currentRules(),x=0;x<v.length;x++)if(g=this._input.match(this.rules[v[x]]),g&&(!m||g[0].length>m[0].length)){if(m=g,y=x,this.options.backtrack_lexer){if(p=this.test_match(g,v[x]),p!==!1)return p;if(this._backtrack){m=!1;continue}else return!1}else if(!this.options.flex)break}return m?(p=this.test_match(m,v[y]),p!==!1?p:!1):this._input===""?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+`. Unrecognized text.
-`+this.showPosition(),{text:"",token:null,line:this.yylineno})},"next"),lex:o(function(){var m=this.next();return m||this.lex()},"lex"),begin:o(function(m){this.conditionStack.push(m)},"begin"),popState:o(function(){var m=this.conditionStack.length-1;return m>0?this.conditionStack.pop():this.conditionStack[0]},"popState"),_currentRules:o(function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},"_currentRules"),topState:o(function(m){return m=this.conditionStack.length-1-Math.abs(m||0),m>=0?this.conditionStack[m]:"INITIAL"},"topState"),pushState:o(function(m){this.begin(m)},"pushState"),stateStackSize:o(function(){return this.conditionStack.length},"stateStackSize"),options:{"case-insensitive":!0},performAction:o(function(m,g,y,v){var x=v;switch(y){case 0:break;case 1:break;case 2:return 10;case 3:break;case 4:break;case 5:return 4;case 6:return 11;case 7:return this.begin("acc_title"),12;break;case 8:return this.popState(),"acc_title_value";break;case 9:return this.begin("acc_descr"),14;break;case 10:return this.popState(),"acc_descr_value";break;case 11:this.begin("acc_descr_multiline");break;case 12:this.popState();break;case 13:return"acc_descr_multiline_value";case 14:return 17;case 15:return 18;case 16:return 19;case 17:return":";case 18:return 6;case 19:return"INVALID"}},"anonymous"),rules:[/^(?:%(?!\{)[^\n]*)/i,/^(?:[^\}]%%[^\n]*)/i,/^(?:[\n]+)/i,/^(?:\s+)/i,/^(?:#[^\n]*)/i,/^(?:journey\b)/i,/^(?:title\s[^#\n;]+)/i,/^(?:accTitle\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*\{\s*)/i,/^(?:[\}])/i,/^(?:[^\}]*)/i,/^(?:section\s[^#:\n;]+)/i,/^(?:[^#:\n;]+)/i,/^(?::[^#\n;]+)/i,/^(?::)/i,/^(?:$)/i,/^(?:.)/i],conditions:{acc_descr_multiline:{rules:[12,13],inclusive:!1},acc_descr:{rules:[10],inclusive:!1},acc_title:{rules:[8],inclusive:!1},INITIAL:{rules:[0,1,2,3,4,5,6,7,9,11,14,15,16,17,18,19],inclusive:!0}}};return f})();u.lexer=h;function d(){this.yy={}}return o(d,"Parser"),d.prototype=u,u.Parser=d,new d})();OW.parser=OW;v_e=OW});var Sy,PW,JT,eC,hkt,dkt,fkt,pkt,mkt,gkt,ykt,b_e,vkt,BW,T_e=z(()=>{"use strict";Ut();Ci();Sy="",PW=[],JT=[],eC=[],hkt=o(function(){PW.length=0,JT.length=0,Sy="",eC.length=0,gr()},"clear"),dkt=o(function(e){Sy=e,PW.push(e)},"addSection"),fkt=o(function(){return PW},"getSections"),pkt=o(function(){let e=b_e(),t=100,r=0;for(;!e&&r<t;)e=b_e(),r++;return JT.push(...eC),JT},"getTasks"),mkt=o(function(){let e=[];return JT.forEach(r=>{r.people&&e.push(...r.people)}),[...new Set(e)].sort()},"updateActors"),gkt=o(function(e,t){let r=t.substr(1).split(":"),i=0,n=[];r.length===1?(i=Number(r[0]),n=[]):(i=Number(r[0]),n=r[1].split(","));let a=n.map(l=>l.trim()),s={section:Sy,type:Sy,people:a,task:e,score:i};eC.push(s)},"addTask"),ykt=o(function(e){let t={section:Sy,type:Sy,description:e,task:e,classes:[]};JT.push(t)},"addTaskOrg"),b_e=o(function(){let e=o(function(r){return eC[r].processed},"compileTask"),t=!0;for(let[r,i]of eC.entries())e(r),t=t&&i.processed;return t},"compileTasks"),vkt=o(function(){return mkt()},"getActors"),BW={getConfig:o(()=>ge().journey,"getConfig"),clear:hkt,setDiagramTitle:Ar,getDiagramTitle:Er,setAccTitle:Cr,getAccTitle:kr,setAccDescription:wr,getAccDescription:Sr,addSection:dkt,getSections:fkt,getTasks:pkt,addTask:gkt,addTaskOrg:ykt,getActors:vkt}});var xkt,C_e,k_e=z(()=>{"use strict";k1();xkt=o(e=>`.label {
+`+this.showPosition(),{text:"",token:null,line:this.yylineno})},"next"),lex:o(function(){var m=this.next();return m||this.lex()},"lex"),begin:o(function(m){this.conditionStack.push(m)},"begin"),popState:o(function(){var m=this.conditionStack.length-1;return m>0?this.conditionStack.pop():this.conditionStack[0]},"popState"),_currentRules:o(function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},"_currentRules"),topState:o(function(m){return m=this.conditionStack.length-1-Math.abs(m||0),m>=0?this.conditionStack[m]:"INITIAL"},"topState"),pushState:o(function(m){this.begin(m)},"pushState"),stateStackSize:o(function(){return this.conditionStack.length},"stateStackSize"),options:{"case-insensitive":!0},performAction:o(function(m,g,y,v){var x=v;switch(y){case 0:break;case 1:break;case 2:return 10;case 3:break;case 4:break;case 5:return 4;case 6:return 11;case 7:return this.begin("acc_title"),12;break;case 8:return this.popState(),"acc_title_value";break;case 9:return this.begin("acc_descr"),14;break;case 10:return this.popState(),"acc_descr_value";break;case 11:this.begin("acc_descr_multiline");break;case 12:this.popState();break;case 13:return"acc_descr_multiline_value";case 14:return 17;case 15:return 18;case 16:return 19;case 17:return":";case 18:return 6;case 19:return"INVALID"}},"anonymous"),rules:[/^(?:%(?!\{)[^\n]*)/i,/^(?:[^\}]%%[^\n]*)/i,/^(?:[\n]+)/i,/^(?:\s+)/i,/^(?:#[^\n]*)/i,/^(?:journey\b)/i,/^(?:title\s[^#\n;]+)/i,/^(?:accTitle\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*\{\s*)/i,/^(?:[\}])/i,/^(?:[^\}]*)/i,/^(?:section\s[^#:\n;]+)/i,/^(?:[^#:\n;]+)/i,/^(?::[^#\n;]+)/i,/^(?::)/i,/^(?:$)/i,/^(?:.)/i],conditions:{acc_descr_multiline:{rules:[12,13],inclusive:!1},acc_descr:{rules:[10],inclusive:!1},acc_title:{rules:[8],inclusive:!1},INITIAL:{rules:[0,1,2,3,4,5,6,7,9,11,14,15,16,17,18,19],inclusive:!0}}};return f})();u.lexer=h;function d(){this.yy={}}return o(d,"Parser"),d.prototype=u,u.Parser=d,new d})();PY.parser=PY;uMe=PY});var ax,OY,qw,Hw,BRt,$Rt,FRt,zRt,GRt,VRt,WRt,dMe,qRt,BY,fMe=F(()=>{"use strict";Xt();Nn();ax="",OY=[],qw=[],Hw=[],BRt=o(function(){OY.length=0,qw.length=0,ax="",Hw.length=0,yr()},"clear"),$Rt=o(function(e){ax=e,OY.push(e)},"addSection"),FRt=o(function(){return OY},"getSections"),zRt=o(function(){let e=dMe(),t=100,r=0;for(;!e&&r<t;)e=dMe(),r++;return qw.push(...Hw),qw},"getTasks"),GRt=o(function(){let e=[];return qw.forEach(r=>{r.people&&e.push(...r.people)}),[...new Set(e)].sort()},"updateActors"),VRt=o(function(e,t){let r=t.substr(1).split(":"),n=0,i=[];r.length===1?(n=Number(r[0]),i=[]):(n=Number(r[0]),i=r[1].split(","));let a=i.map(l=>l.trim()),s={section:ax,type:ax,people:a,task:e,score:n};Hw.push(s)},"addTask"),WRt=o(function(e){let t={section:ax,type:ax,description:e,task:e,classes:[]};qw.push(t)},"addTaskOrg"),dMe=o(function(){let e=o(function(r){return Hw[r].processed},"compileTask"),t=!0;for(let[r,n]of Hw.entries())e(r),t=t&&n.processed;return t},"compileTasks"),qRt=o(function(){return GRt()},"getActors"),BY={getConfig:o(()=>Ae().journey,"getConfig"),clear:BRt,setDiagramTitle:Or,getDiagramTitle:Lr,setAccTitle:kr,getAccTitle:Ar,setAccDescription:Rr,getAccDescription:_r,addSection:$Rt,getSections:FRt,getTasks:zRt,addTask:VRt,addTaskOrg:WRt,getActors:qRt}});var HRt,pMe,mMe=F(()=>{"use strict";X1();HRt=o(e=>`.label {
     font-family: ${e.fontFamily};
     color: ${e.textColor};
   }
@@ -2556,17 +2570,17 @@
   .actor-5 {
     ${e.actor5?`fill: ${e.actor5}`:""};
   }
-  ${Vc()}
-`,"getStyles"),C_e=xkt});var $W,bkt,w_e,S_e,Tkt,Ckt,FW,kkt,wkt,E_e,Skt,Ey,A_e=z(()=>{"use strict";Rr();gp();$W=o(function(e,t){return mp(e,t)},"drawRect"),bkt=o(function(e,t){let i=e.append("circle").attr("cx",t.cx).attr("cy",t.cy).attr("class","face").attr("r",15).attr("stroke-width",2).attr("overflow","visible"),n=e.append("g");n.append("circle").attr("cx",t.cx-15/3).attr("cy",t.cy-15/3).attr("r",1.5).attr("stroke-width",2).attr("fill","#666").attr("stroke","#666"),n.append("circle").attr("cx",t.cx+15/3).attr("cy",t.cy-15/3).attr("r",1.5).attr("stroke-width",2).attr("fill","#666").attr("stroke","#666");function a(u){let h=Al().startAngle(Math.PI/2).endAngle(3*(Math.PI/2)).innerRadius(7.5).outerRadius(6.8181818181818175);u.append("path").attr("class","mouth").attr("d",h).attr("transform","translate("+t.cx+","+(t.cy+2)+")")}o(a,"smile");function s(u){let h=Al().startAngle(3*Math.PI/2).endAngle(5*(Math.PI/2)).innerRadius(7.5).outerRadius(6.8181818181818175);u.append("path").attr("class","mouth").attr("d",h).attr("transform","translate("+t.cx+","+(t.cy+7)+")")}o(s,"sad");function l(u){u.append("line").attr("class","mouth").attr("stroke",2).attr("x1",t.cx-5).attr("y1",t.cy+7).attr("x2",t.cx+5).attr("y2",t.cy+7).attr("class","mouth").attr("stroke-width","1px").attr("stroke","#666")}return o(l,"ambivalent"),t.score>3?a(n):t.score<3?s(n):l(n),i},"drawFace"),w_e=o(function(e,t){let r=e.append("circle");return r.attr("cx",t.cx),r.attr("cy",t.cy),r.attr("class","actor-"+t.pos),r.attr("fill",t.fill),r.attr("stroke",t.stroke),r.attr("r",t.r),r.class!==void 0&&r.attr("class",r.class),t.title!==void 0&&r.append("title").text(t.title),r},"drawCircle"),S_e=o(function(e,t){return yee(e,t)},"drawText"),Tkt=o(function(e,t){function r(n,a,s,l,u){return n+","+a+" "+(n+s)+","+a+" "+(n+s)+","+(a+l-u)+" "+(n+s-u*1.2)+","+(a+l)+" "+n+","+(a+l)}o(r,"genPoints");let i=e.append("polygon");i.attr("points",r(t.x,t.y,50,20,7)),i.attr("class","labelBox"),t.y=t.y+t.labelMargin,t.x=t.x+.5*t.labelMargin,S_e(e,t)},"drawLabel"),Ckt=o(function(e,t,r){let i=e.append("g"),n=fa();n.x=t.x,n.y=t.y,n.fill=t.fill,n.width=r.width*t.taskCount+r.diagramMarginX*(t.taskCount-1),n.height=r.height,n.class="journey-section section-type-"+t.num,n.rx=3,n.ry=3,$W(i,n),E_e(r)(t.text,i,n.x,n.y,n.width,n.height,{class:"journey-section section-type-"+t.num},r,t.colour)},"drawSection"),FW=-1,kkt=o(function(e,t,r,i){let n=t.x+r.width/2,a=e.append("g");FW++,a.append("line").attr("id",i+"-task"+FW).attr("x1",n).attr("y1",t.y).attr("x2",n).attr("y2",450).attr("class","task-line").attr("stroke-width","1px").attr("stroke-dasharray","4 2").attr("stroke","#666"),bkt(a,{cx:n,cy:300+(5-t.score)*30,score:t.score});let l=fa();l.x=t.x,l.y=t.y,l.fill=t.fill,l.width=r.width,l.height=r.height,l.class="task task-type-"+t.num,l.rx=3,l.ry=3,$W(a,l);let u=t.x+14;t.people.forEach(h=>{let d=t.actors[h].color,f={cx:u,cy:t.y,r:7,fill:d,stroke:"#000",title:h,pos:t.actors[h].position};w_e(a,f),u+=10}),E_e(r)(t.task,a,l.x,l.y,l.width,l.height,{class:"task"},r,t.colour)},"drawTask"),wkt=o(function(e,t){Bw(e,t)},"drawBackgroundRect"),E_e=(function(){function e(n,a,s,l,u,h,d,f){let p=a.append("text").attr("x",s+u/2).attr("y",l+h/2+5).style("font-color",f).style("text-anchor","middle").text(n);i(p,d)}o(e,"byText");function t(n,a,s,l,u,h,d,f,p){let{taskFontSize:m,taskFontFamily:g}=f,y=n.split(/<br\s*\/?>/gi);for(let v=0;v<y.length;v++){let x=v*m-m*(y.length-1)/2,b=a.append("text").attr("x",s+u/2).attr("y",l).attr("fill",p).style("text-anchor","middle").style("font-size",m).style("font-family",g);b.append("tspan").attr("x",s+u/2).attr("dy",x).text(y[v]),b.attr("y",l+h/2).attr("dominant-baseline","central").attr("alignment-baseline","central"),i(b,d)}}o(t,"byTspan");function r(n,a,s,l,u,h,d,f){let p=a.append("switch"),g=p.append("foreignObject").attr("x",s).attr("y",l).attr("width",u).attr("height",h).attr("position","fixed").append("xhtml:div").style("display","table").style("height","100%").style("width","100%");g.append("div").attr("class","label").style("display","table-cell").style("text-align","center").style("vertical-align","middle").text(n),t(n,p,s,l,u,h,d,f),i(g,d)}o(r,"byFo");function i(n,a){for(let s in a)s in a&&n.attr(s,a[s])}return o(i,"_setTextAttrs"),function(n){return n.textPlacement==="fo"?r:n.textPlacement==="old"?e:t}})(),Skt=o(function(e,t){FW=-1,e.append("defs").append("marker").attr("id",t+"-arrowhead").attr("refX",5).attr("refY",2).attr("markerWidth",6).attr("markerHeight",4).attr("orient","auto").append("path").attr("d","M 0,0 V 4 L6,2 Z")},"initGraphics"),Ey={drawRect:$W,drawCircle:w_e,drawSection:Ckt,drawText:S_e,drawLabel:Tkt,drawTask:kkt,drawBackgroundRect:wkt,initGraphics:Skt}});function Akt(e){let t=ge().journey,r=t.maxLabelWidth;l_=0;let i=60;Object.keys(Ah).forEach(n=>{let a=Ah[n].color,s={cx:20,cy:i,r:7,fill:a,stroke:"#000",pos:Ah[n].position};Ey.drawCircle(e,s);let l=e.append("text").attr("visibility","hidden").text(n),u=l.node().getBoundingClientRect().width;l.remove();let h=[];if(u<=r)h=[n];else{let d=n.split(" "),f="";l=e.append("text").attr("visibility","hidden"),d.forEach(p=>{let m=f?`${f} ${p}`:p;if(l.text(m),l.node().getBoundingClientRect().width>r){if(f&&h.push(f),f=p,l.text(p),l.node().getBoundingClientRect().width>r){let y="";for(let v of p)y+=v,l.text(y+"-"),l.node().getBoundingClientRect().width>r&&(h.push(y.slice(0,-1)+"-"),y=v);f=y}}else f=m}),f&&h.push(f),l.remove()}h.forEach((d,f)=>{let p={x:40,y:i+7+f*20,fill:"#666",text:d,textMargin:t.boxTextMargin??5},g=Ey.drawText(e,p).node().getBoundingClientRect().width;g>l_&&g>t.leftMargin-g&&(l_=g)}),i+=Math.max(20,h.length*20)})}var Ekt,Ah,l_,Zl,Mf,_kt,ll,zW,__e,Dkt,GW,D_e=z(()=>{"use strict";Rr();A_e();Ut();Di();Ekt=o(function(e){Object.keys(e).forEach(function(r){Zl[r]=e[r]})},"setConf"),Ah={},l_=0;o(Akt,"drawActorLegend");Zl=ge().journey,Mf=0,_kt=o(function(e,t,r,i){let n=ge(),a=n.journey.titleColor,s=n.journey.titleFontSize,l=n.journey.titleFontFamily,u=n.securityLevel,h;u==="sandbox"&&(h=Je("#i"+t));let d=u==="sandbox"?Je(h.nodes()[0].contentDocument.body):Je("body");ll.init();let f=d.select("#"+t);Ey.initGraphics(f,t);let p=i.db.getTasks(),m=i.db.getDiagramTitle(),g=i.db.getActors();for(let w in Ah)delete Ah[w];let y=0;g.forEach(w=>{Ah[w]={color:Zl.actorColours[y%Zl.actorColours.length],position:y},y++}),Akt(f),Mf=Zl.leftMargin+l_,ll.insert(0,0,Mf,Object.keys(Ah).length*50),Dkt(f,p,0,t);let v=ll.getBounds();m&&f.append("text").text(m).attr("x",Mf).attr("font-size",s).attr("font-weight","bold").attr("y",25).attr("fill",a).attr("font-family",l);let x=v.stopy-v.starty+2*Zl.diagramMarginY,b=Mf+v.stopx+2*Zl.diagramMarginX;Br(f,x,b,Zl.useMaxWidth),f.append("line").attr("x1",Mf).attr("y1",Zl.height*4).attr("x2",b-Mf-4).attr("y2",Zl.height*4).attr("stroke-width",4).attr("stroke","black").attr("marker-end","url(#"+t+"-arrowhead)");let T=m?70:0;f.attr("viewBox",`${v.startx} -25 ${b} ${x+T}`),f.attr("preserveAspectRatio","xMinYMin meet"),f.attr("height",x+T+25)},"draw"),ll={data:{startx:void 0,stopx:void 0,starty:void 0,stopy:void 0},verticalPos:0,sequenceItems:[],init:o(function(){this.sequenceItems=[],this.data={startx:void 0,stopx:void 0,starty:void 0,stopy:void 0},this.verticalPos=0},"init"),updateVal:o(function(e,t,r,i){e[t]===void 0?e[t]=r:e[t]=i(r,e[t])},"updateVal"),updateBounds:o(function(e,t,r,i){let n=ge().journey,a=this,s=0;function l(u){return o(function(d){s++;let f=a.sequenceItems.length-s+1;a.updateVal(d,"starty",t-f*n.boxMargin,Math.min),a.updateVal(d,"stopy",i+f*n.boxMargin,Math.max),a.updateVal(ll.data,"startx",e-f*n.boxMargin,Math.min),a.updateVal(ll.data,"stopx",r+f*n.boxMargin,Math.max),u!=="activation"&&(a.updateVal(d,"startx",e-f*n.boxMargin,Math.min),a.updateVal(d,"stopx",r+f*n.boxMargin,Math.max),a.updateVal(ll.data,"starty",t-f*n.boxMargin,Math.min),a.updateVal(ll.data,"stopy",i+f*n.boxMargin,Math.max))},"updateItemBounds")}o(l,"updateFn"),this.sequenceItems.forEach(l())},"updateBounds"),insert:o(function(e,t,r,i){let n=Math.min(e,r),a=Math.max(e,r),s=Math.min(t,i),l=Math.max(t,i);this.updateVal(ll.data,"startx",n,Math.min),this.updateVal(ll.data,"starty",s,Math.min),this.updateVal(ll.data,"stopx",a,Math.max),this.updateVal(ll.data,"stopy",l,Math.max),this.updateBounds(n,s,a,l)},"insert"),bumpVerticalPos:o(function(e){this.verticalPos=this.verticalPos+e,this.data.stopy=this.verticalPos},"bumpVerticalPos"),getVerticalPos:o(function(){return this.verticalPos},"getVerticalPos"),getBounds:o(function(){return this.data},"getBounds")},zW=Zl.sectionFills,__e=Zl.sectionColours,Dkt=o(function(e,t,r,i){let n=ge().journey,a="",s=n.height*2+n.diagramMarginY,l=r+s,u=0,h="#CCC",d="black",f=0;for(let[p,m]of t.entries()){if(a!==m.section){h=zW[u%zW.length],f=u%zW.length,d=__e[u%__e.length];let y=0,v=m.section;for(let b=p;b<t.length&&t[b].section==v;b++)y=y+1;let x={x:p*n.taskMargin+p*n.width+Mf,y:50,text:m.section,fill:h,num:f,colour:d,taskCount:y};Ey.drawSection(e,x,n),a=m.section,u++}let g=m.people.reduce((y,v)=>(Ah[v]&&(y[v]=Ah[v]),y),{});m.x=p*n.taskMargin+p*n.width+Mf,m.y=l,m.width=n.diagramMarginX,m.height=n.diagramMarginY,m.colour=d,m.fill=h,m.num=f,m.actors=g,Ey.drawTask(e,m,n,i),ll.insert(m.x,m.y,m.x+m.width+n.taskMargin,450)}},"drawTasks"),GW={setConf:Ekt,draw:_kt}});var R_e={};xr(R_e,{diagram:()=>Rkt});var Rkt,L_e=z(()=>{"use strict";x_e();T_e();k_e();D_e();Rkt={parser:v_e,db:BW,renderer:GW,styles:C_e,init:o(e=>{GW.setConf(e.journey),BW.clear()},"init")}});var WW,F_e,$_e=z(()=>{"use strict";WW=(function(){var e=o(function(p,m,g,y){for(g=g||{},y=p.length;y--;g[p[y]]=m);return g},"o"),t=[6,11,13,14,15,17,19,20,23,24],r=[1,12],i=[1,13],n=[1,14],a=[1,15],s=[1,16],l=[1,19],u=[1,20],h={trace:o(function(){},"trace"),yy:{},symbols_:{error:2,start:3,timeline_header:4,document:5,EOF:6,timeline:7,timeline_lr:8,timeline_td:9,line:10,SPACE:11,statement:12,NEWLINE:13,title:14,acc_title:15,acc_title_value:16,acc_descr:17,acc_descr_value:18,acc_descr_multiline_value:19,section:20,period_statement:21,event_statement:22,period:23,event:24,$accept:0,$end:1},terminals_:{2:"error",6:"EOF",7:"timeline",8:"timeline_lr",9:"timeline_td",11:"SPACE",13:"NEWLINE",14:"title",15:"acc_title",16:"acc_title_value",17:"acc_descr",18:"acc_descr_value",19:"acc_descr_multiline_value",20:"section",23:"period",24:"event"},productions_:[0,[3,3],[4,1],[4,1],[4,1],[5,0],[5,2],[10,2],[10,1],[10,1],[10,1],[12,1],[12,2],[12,2],[12,1],[12,1],[12,1],[12,1],[21,1],[22,1]],performAction:o(function(m,g,y,v,x,b,T){var w=b.length-1;switch(x){case 1:return b[w-1];case 3:v.setDirection("LR");break;case 4:v.setDirection("TD");break;case 5:this.$=[];break;case 6:b[w-1].push(b[w]),this.$=b[w-1];break;case 7:case 8:this.$=b[w];break;case 9:case 10:this.$=[];break;case 11:v.getCommonDb().setDiagramTitle(b[w].substr(6)),this.$=b[w].substr(6);break;case 12:this.$=b[w].trim(),v.getCommonDb().setAccTitle(this.$);break;case 13:case 14:this.$=b[w].trim(),v.getCommonDb().setAccDescription(this.$);break;case 15:v.addSection(b[w].substr(8)),this.$=b[w].substr(8);break;case 18:v.addTask(b[w],0,""),this.$=b[w];break;case 19:v.addEvent(b[w].substr(2)),this.$=b[w];break}},"anonymous"),table:[{3:1,4:2,7:[1,3],8:[1,4],9:[1,5]},{1:[3]},e(t,[2,5],{5:6}),e(t,[2,2]),e(t,[2,3]),e(t,[2,4]),{6:[1,7],10:8,11:[1,9],12:10,13:[1,11],14:r,15:i,17:n,19:a,20:s,21:17,22:18,23:l,24:u},e(t,[2,10],{1:[2,1]}),e(t,[2,6]),{12:21,14:r,15:i,17:n,19:a,20:s,21:17,22:18,23:l,24:u},e(t,[2,8]),e(t,[2,9]),e(t,[2,11]),{16:[1,22]},{18:[1,23]},e(t,[2,14]),e(t,[2,15]),e(t,[2,16]),e(t,[2,17]),e(t,[2,18]),e(t,[2,19]),e(t,[2,7]),e(t,[2,12]),e(t,[2,13])],defaultActions:{},parseError:o(function(m,g){if(g.recoverable)this.trace(m);else{var y=new Error(m);throw y.hash=g,y}},"parseError"),parse:o(function(m){var g=this,y=[0],v=[],x=[null],b=[],T=this.table,w="",C=0,k=0,E=0,A=2,N=1,P=b.slice.call(arguments,1),I=Object.create(this.lexer),D={yy:{}};for(var _ in this.yy)Object.prototype.hasOwnProperty.call(this.yy,_)&&(D.yy[_]=this.yy[_]);I.setInput(m,D.yy),D.yy.lexer=I,D.yy.parser=this,typeof I.yylloc>"u"&&(I.yylloc={});var R=I.yylloc;b.push(R);var M=I.options&&I.options.ranges;typeof D.yy.parseError=="function"?this.parseError=D.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function L(te){y.length=y.length-2*te,x.length=x.length-te,b.length=b.length-te}o(L,"popStack");function B(){var te;return te=v.pop()||I.lex()||N,typeof te!="number"&&(te instanceof Array&&(v=te,te=v.pop()),te=g.symbols_[te]||te),te}o(B,"lex");for(var O,$,G,F,V,H,j={},U,Q,Y,ae;;){if(G=y[y.length-1],this.defaultActions[G]?F=this.defaultActions[G]:((O===null||typeof O>"u")&&(O=B()),F=T[G]&&T[G][O]),typeof F>"u"||!F.length||!F[0]){var J="";ae=[];for(U in T[G])this.terminals_[U]&&U>A&&ae.push("'"+this.terminals_[U]+"'");I.showPosition?J="Parse error on line "+(C+1)+`:
+  ${Eu()}
+`,"getStyles"),pMe=HRt});var FY,URt,gMe,yMe,YRt,jRt,$Y,XRt,KRt,vMe,ZRt,sx,xMe=F(()=>{"use strict";$r();Hd();FY=o(function(e,t){return dm(e,t)},"drawRect"),URt=o(function(e,t){let n=e.append("circle").attr("cx",t.cx).attr("cy",t.cy).attr("class","face").attr("r",15).attr("stroke-width",2).attr("overflow","visible"),i=e.append("g");i.append("circle").attr("cx",t.cx-15/3).attr("cy",t.cy-15/3).attr("r",1.5).attr("stroke-width",2).attr("fill","#666").attr("stroke","#666"),i.append("circle").attr("cx",t.cx+15/3).attr("cy",t.cy-15/3).attr("r",1.5).attr("stroke-width",2).attr("fill","#666").attr("stroke","#666");function a(u){let h=ec().startAngle(Math.PI/2).endAngle(3*(Math.PI/2)).innerRadius(7.5).outerRadius(6.8181818181818175);u.append("path").attr("class","mouth").attr("d",h).attr("transform","translate("+t.cx+","+(t.cy+2)+")")}o(a,"smile");function s(u){let h=ec().startAngle(3*Math.PI/2).endAngle(5*(Math.PI/2)).innerRadius(7.5).outerRadius(6.8181818181818175);u.append("path").attr("class","mouth").attr("d",h).attr("transform","translate("+t.cx+","+(t.cy+7)+")")}o(s,"sad");function l(u){u.append("line").attr("class","mouth").attr("stroke",2).attr("x1",t.cx-5).attr("y1",t.cy+7).attr("x2",t.cx+5).attr("y2",t.cy+7).attr("class","mouth").attr("stroke-width","1px").attr("stroke","#666")}return o(l,"ambivalent"),t.score>3?a(i):t.score<3?s(i):l(i),n},"drawFace"),gMe=o(function(e,t){let r=e.append("circle");return r.attr("cx",t.cx),r.attr("cy",t.cy),r.attr("class","actor-"+t.pos),r.attr("fill",t.fill),r.attr("stroke",t.stroke),r.attr("r",t.r),r.class!==void 0&&r.attr("class",r.class),t.title!==void 0&&r.append("title").text(t.title),r},"drawCircle"),yMe=o(function(e,t){return kie(e,t)},"drawText"),YRt=o(function(e,t){function r(i,a,s,l,u){return i+","+a+" "+(i+s)+","+a+" "+(i+s)+","+(a+l-u)+" "+(i+s-u*1.2)+","+(a+l)+" "+i+","+(a+l)}o(r,"genPoints");let n=e.append("polygon");n.attr("points",r(t.x,t.y,50,20,7)),n.attr("class","labelBox"),t.y=t.y+t.labelMargin,t.x=t.x+.5*t.labelMargin,yMe(e,t)},"drawLabel"),jRt=o(function(e,t,r){let n=e.append("g"),i=Fa();i.x=t.x,i.y=t.y,i.fill=t.fill,i.width=r.width*t.taskCount+r.diagramMarginX*(t.taskCount-1),i.height=r.height,i.class="journey-section section-type-"+t.num,i.rx=3,i.ry=3,FY(n,i),vMe(r)(t.text,n,i.x,i.y,i.width,i.height,{class:"journey-section section-type-"+t.num},r,t.colour)},"drawSection"),$Y=-1,XRt=o(function(e,t,r,n){let i=t.x+r.width/2,a=e.append("g");$Y++,a.append("line").attr("id",n+"-task"+$Y).attr("x1",i).attr("y1",t.y).attr("x2",i).attr("y2",450).attr("class","task-line").attr("stroke-width","1px").attr("stroke-dasharray","4 2").attr("stroke","#666"),URt(a,{cx:i,cy:300+(5-t.score)*30,score:t.score});let l=Fa();l.x=t.x,l.y=t.y,l.fill=t.fill,l.width=r.width,l.height=r.height,l.class="task task-type-"+t.num,l.rx=3,l.ry=3,FY(a,l);let u=t.x+14;t.people.forEach(h=>{let d=t.actors[h].color,f={cx:u,cy:t.y,r:7,fill:d,stroke:"#000",title:h,pos:t.actors[h].position};gMe(a,f),u+=10}),vMe(r)(t.task,a,l.x,l.y,l.width,l.height,{class:"task"},r,t.colour)},"drawTask"),KRt=o(function(e,t){$E(e,t)},"drawBackgroundRect"),vMe=(function(){function e(i,a,s,l,u,h,d,f){let p=a.append("text").attr("x",s+u/2).attr("y",l+h/2+5).style("font-color",f).style("text-anchor","middle").text(i);n(p,d)}o(e,"byText");function t(i,a,s,l,u,h,d,f,p){let{taskFontSize:m,taskFontFamily:g}=f,y=i.split(/<br\s*\/?>/gi);for(let v=0;v<y.length;v++){let x=v*m-m*(y.length-1)/2,b=a.append("text").attr("x",s+u/2).attr("y",l).attr("fill",p).style("text-anchor","middle").style("font-size",m).style("font-family",g);b.append("tspan").attr("x",s+u/2).attr("dy",x).text(y[v]),b.attr("y",l+h/2).attr("dominant-baseline","central").attr("alignment-baseline","central"),n(b,d)}}o(t,"byTspan");function r(i,a,s,l,u,h,d,f){let p=a.append("switch"),g=p.append("foreignObject").attr("x",s).attr("y",l).attr("width",u).attr("height",h).attr("position","fixed").append("xhtml:div").style("display","table").style("height","100%").style("width","100%");g.append("div").attr("class","label").style("display","table-cell").style("text-align","center").style("vertical-align","middle").text(i),t(i,p,s,l,u,h,d,f),n(g,d)}o(r,"byFo");function n(i,a){for(let s in a)s in a&&i.attr(s,a[s])}return o(n,"_setTextAttrs"),function(i){return i.textPlacement==="fo"?r:i.textPlacement==="old"?e:t}})(),ZRt=o(function(e,t){$Y=-1,e.append("defs").append("marker").attr("id",t+"-arrowhead").attr("refX",5).attr("refY",2).attr("markerWidth",6).attr("markerHeight",4).attr("orient","auto").append("path").attr("d","M 0,0 V 4 L6,2 Z")},"initGraphics"),sx={drawRect:FY,drawCircle:gMe,drawSection:jRt,drawText:yMe,drawLabel:YRt,drawTask:XRt,drawBackgroundRect:KRt,initGraphics:ZRt}});function JRt(e){let t=Ae().journey,r=t.maxLabelWidth;zL=0;let n=60;Object.keys(dd).forEach(i=>{let a=dd[i].color,s={cx:20,cy:n,r:7,fill:a,stroke:"#000",pos:dd[i].position};sx.drawCircle(e,s);let l=e.append("text").attr("visibility","hidden").text(i),u=l.node().getBoundingClientRect().width;l.remove();let h=[];if(u<=r)h=[i];else{let d=i.split(" "),f="";l=e.append("text").attr("visibility","hidden"),d.forEach(p=>{let m=f?`${f} ${p}`:p;if(l.text(m),l.node().getBoundingClientRect().width>r){if(f&&h.push(f),f=p,l.text(p),l.node().getBoundingClientRect().width>r){let y="";for(let v of p)y+=v,l.text(y+"-"),l.node().getBoundingClientRect().width>r&&(h.push(y.slice(0,-1)+"-"),y=v);f=y}}else f=m}),f&&h.push(f),l.remove()}h.forEach((d,f)=>{let p={x:40,y:n+7+f*20,fill:"#666",text:d,textMargin:t.boxTextMargin??5},g=sx.drawText(e,p).node().getBoundingClientRect().width;g>zL&&g>t.leftMargin-g&&(zL=g)}),n+=Math.max(20,h.length*20)})}var QRt,dd,zL,Lc,Lp,e_t,Pl,zY,bMe,t_t,GY,TMe=F(()=>{"use strict";$r();xMe();Xt();$n();QRt=o(function(e){Object.keys(e).forEach(function(r){Lc[r]=e[r]})},"setConf"),dd={},zL=0;o(JRt,"drawActorLegend");Lc=Ae().journey,Lp=0,e_t=o(function(e,t,r,n){let i=Ae(),a=i.journey.titleColor,s=i.journey.titleFontSize,l=i.journey.titleFontFamily,u=i.securityLevel,h;u==="sandbox"&&(h=et("#i"+t));let d=u==="sandbox"?et(h.nodes()[0].contentDocument.body):et("body");Pl.init();let f=d.select("#"+t);sx.initGraphics(f,t);let p=n.db.getTasks(),m=n.db.getDiagramTitle(),g=n.db.getActors();for(let k in dd)delete dd[k];let y=0;g.forEach(k=>{dd[k]={color:Lc.actorColours[y%Lc.actorColours.length],position:y},y++}),JRt(f),Lp=Lc.leftMargin+zL,Pl.insert(0,0,Lp,Object.keys(dd).length*50),t_t(f,p,0,t);let v=Pl.getBounds();m&&f.append("text").text(m).attr("x",Lp).attr("font-size",s).attr("font-weight","bold").attr("y",25).attr("fill",a).attr("font-family",l);let x=v.stopy-v.starty+2*Lc.diagramMarginY,b=Lp+v.stopx+2*Lc.diagramMarginX;Wr(f,x,b,Lc.useMaxWidth),f.append("line").attr("x1",Lp).attr("y1",Lc.height*4).attr("x2",b-Lp-4).attr("y2",Lc.height*4).attr("stroke-width",4).attr("stroke","black").attr("marker-end","url(#"+t+"-arrowhead)");let T=m?70:0;f.attr("viewBox",`${v.startx} -25 ${b} ${x+T}`),f.attr("preserveAspectRatio","xMinYMin meet"),f.attr("height",x+T+25)},"draw"),Pl={data:{startx:void 0,stopx:void 0,starty:void 0,stopy:void 0},verticalPos:0,sequenceItems:[],init:o(function(){this.sequenceItems=[],this.data={startx:void 0,stopx:void 0,starty:void 0,stopy:void 0},this.verticalPos=0},"init"),updateVal:o(function(e,t,r,n){e[t]===void 0?e[t]=r:e[t]=n(r,e[t])},"updateVal"),updateBounds:o(function(e,t,r,n){let i=Ae().journey,a=this,s=0;function l(u){return o(function(d){s++;let f=a.sequenceItems.length-s+1;a.updateVal(d,"starty",t-f*i.boxMargin,Math.min),a.updateVal(d,"stopy",n+f*i.boxMargin,Math.max),a.updateVal(Pl.data,"startx",e-f*i.boxMargin,Math.min),a.updateVal(Pl.data,"stopx",r+f*i.boxMargin,Math.max),u!=="activation"&&(a.updateVal(d,"startx",e-f*i.boxMargin,Math.min),a.updateVal(d,"stopx",r+f*i.boxMargin,Math.max),a.updateVal(Pl.data,"starty",t-f*i.boxMargin,Math.min),a.updateVal(Pl.data,"stopy",n+f*i.boxMargin,Math.max))},"updateItemBounds")}o(l,"updateFn"),this.sequenceItems.forEach(l())},"updateBounds"),insert:o(function(e,t,r,n){let i=Math.min(e,r),a=Math.max(e,r),s=Math.min(t,n),l=Math.max(t,n);this.updateVal(Pl.data,"startx",i,Math.min),this.updateVal(Pl.data,"starty",s,Math.min),this.updateVal(Pl.data,"stopx",a,Math.max),this.updateVal(Pl.data,"stopy",l,Math.max),this.updateBounds(i,s,a,l)},"insert"),bumpVerticalPos:o(function(e){this.verticalPos=this.verticalPos+e,this.data.stopy=this.verticalPos},"bumpVerticalPos"),getVerticalPos:o(function(){return this.verticalPos},"getVerticalPos"),getBounds:o(function(){return this.data},"getBounds")},zY=Lc.sectionFills,bMe=Lc.sectionColours,t_t=o(function(e,t,r,n){let i=Ae().journey,a="",s=i.height*2+i.diagramMarginY,l=r+s,u=0,h="#CCC",d="black",f=0;for(let[p,m]of t.entries()){if(a!==m.section){h=zY[u%zY.length],f=u%zY.length,d=bMe[u%bMe.length];let y=0,v=m.section;for(let b=p;b<t.length&&t[b].section==v;b++)y=y+1;let x={x:p*i.taskMargin+p*i.width+Lp,y:50,text:m.section,fill:h,num:f,colour:d,taskCount:y};sx.drawSection(e,x,i),a=m.section,u++}let g=m.people.reduce((y,v)=>(dd[v]&&(y[v]=dd[v]),y),{});m.x=p*i.taskMargin+p*i.width+Lp,m.y=l,m.width=i.diagramMarginX,m.height=i.diagramMarginY,m.colour=d,m.fill=h,m.num=f,m.actors=g,sx.drawTask(e,m,i,n),Pl.insert(m.x,m.y,m.x+m.width+i.taskMargin,450)}},"drawTasks"),GY={setConf:QRt,draw:e_t}});var CMe={};ir(CMe,{diagram:()=>r_t});var r_t,wMe=F(()=>{"use strict";hMe();fMe();mMe();TMe();r_t={parser:uMe,db:BY,renderer:GY,styles:pMe,init:o(e=>{GY.setConf(e.journey),BY.clear()},"init")}});var WY,LMe,DMe=F(()=>{"use strict";WY=(function(){var e=o(function(p,m,g,y){for(g=g||{},y=p.length;y--;g[p[y]]=m);return g},"o"),t=[6,11,13,14,15,17,19,20,23,24],r=[1,12],n=[1,13],i=[1,14],a=[1,15],s=[1,16],l=[1,19],u=[1,20],h={trace:o(function(){},"trace"),yy:{},symbols_:{error:2,start:3,timeline_header:4,document:5,EOF:6,timeline:7,timeline_lr:8,timeline_td:9,line:10,SPACE:11,statement:12,NEWLINE:13,title:14,acc_title:15,acc_title_value:16,acc_descr:17,acc_descr_value:18,acc_descr_multiline_value:19,section:20,period_statement:21,event_statement:22,period:23,event:24,$accept:0,$end:1},terminals_:{2:"error",6:"EOF",7:"timeline",8:"timeline_lr",9:"timeline_td",11:"SPACE",13:"NEWLINE",14:"title",15:"acc_title",16:"acc_title_value",17:"acc_descr",18:"acc_descr_value",19:"acc_descr_multiline_value",20:"section",23:"period",24:"event"},productions_:[0,[3,3],[4,1],[4,1],[4,1],[5,0],[5,2],[10,2],[10,1],[10,1],[10,1],[12,1],[12,2],[12,2],[12,1],[12,1],[12,1],[12,1],[21,1],[22,1]],performAction:o(function(m,g,y,v,x,b,T){var k=b.length-1;switch(x){case 1:return b[k-1];case 3:v.setDirection("LR");break;case 4:v.setDirection("TD");break;case 5:this.$=[];break;case 6:b[k-1].push(b[k]),this.$=b[k-1];break;case 7:case 8:this.$=b[k];break;case 9:case 10:this.$=[];break;case 11:v.getCommonDb().setDiagramTitle(b[k].substr(6)),this.$=b[k].substr(6);break;case 12:this.$=b[k].trim(),v.getCommonDb().setAccTitle(this.$);break;case 13:case 14:this.$=b[k].trim(),v.getCommonDb().setAccDescription(this.$);break;case 15:v.addSection(b[k].substr(8)),this.$=b[k].substr(8);break;case 18:v.addTask(b[k],0,""),this.$=b[k];break;case 19:v.addEvent(b[k].substr(2)),this.$=b[k];break}},"anonymous"),table:[{3:1,4:2,7:[1,3],8:[1,4],9:[1,5]},{1:[3]},e(t,[2,5],{5:6}),e(t,[2,2]),e(t,[2,3]),e(t,[2,4]),{6:[1,7],10:8,11:[1,9],12:10,13:[1,11],14:r,15:n,17:i,19:a,20:s,21:17,22:18,23:l,24:u},e(t,[2,10],{1:[2,1]}),e(t,[2,6]),{12:21,14:r,15:n,17:i,19:a,20:s,21:17,22:18,23:l,24:u},e(t,[2,8]),e(t,[2,9]),e(t,[2,11]),{16:[1,22]},{18:[1,23]},e(t,[2,14]),e(t,[2,15]),e(t,[2,16]),e(t,[2,17]),e(t,[2,18]),e(t,[2,19]),e(t,[2,7]),e(t,[2,12]),e(t,[2,13])],defaultActions:{},parseError:o(function(m,g){if(g.recoverable)this.trace(m);else{var y=new Error(m);throw y.hash=g,y}},"parseError"),parse:o(function(m){var g=this,y=[0],v=[],x=[null],b=[],T=this.table,k="",C=0,w=0,S=0,R=2,L=1,N=b.slice.call(arguments,1),I=Object.create(this.lexer),_={yy:{}};for(var A in this.yy)Object.prototype.hasOwnProperty.call(this.yy,A)&&(_.yy[A]=this.yy[A]);I.setInput(m,_.yy),_.yy.lexer=I,_.yy.parser=this,typeof I.yylloc>"u"&&(I.yylloc={});var M=I.yylloc;b.push(M);var D=I.options&&I.options.ranges;typeof _.yy.parseError=="function"?this.parseError=_.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function P(le){y.length=y.length-2*le,x.length=x.length-le,b.length=b.length-le}o(P,"popStack");function B(){var le;return le=v.pop()||I.lex()||L,typeof le!="number"&&(le instanceof Array&&(v=le,le=v.pop()),le=g.symbols_[le]||le),le}o(B,"lex");for(var O,$,V,G,z,W,H={},j,Q,U,oe;;){if(V=y[y.length-1],this.defaultActions[V]?G=this.defaultActions[V]:((O===null||typeof O>"u")&&(O=B()),G=T[V]&&T[V][O]),typeof G>"u"||!G.length||!G[0]){var te="";oe=[];for(j in T[V])this.terminals_[j]&&j>R&&oe.push("'"+this.terminals_[j]+"'");I.showPosition?te="Parse error on line "+(C+1)+`:
 `+I.showPosition()+`
-Expecting `+ae.join(", ")+", got '"+(this.terminals_[O]||O)+"'":J="Parse error on line "+(C+1)+": Unexpected "+(O==N?"end of input":"'"+(this.terminals_[O]||O)+"'"),this.parseError(J,{text:I.match,token:this.terminals_[O]||O,line:I.yylineno,loc:R,expected:ae})}if(F[0]instanceof Array&&F.length>1)throw new Error("Parse Error: multiple actions possible at state: "+G+", token: "+O);switch(F[0]){case 1:y.push(O),x.push(I.yytext),b.push(I.yylloc),y.push(F[1]),O=null,$?(O=$,$=null):(k=I.yyleng,w=I.yytext,C=I.yylineno,R=I.yylloc,E>0&&E--);break;case 2:if(Q=this.productions_[F[1]][1],j.$=x[x.length-Q],j._$={first_line:b[b.length-(Q||1)].first_line,last_line:b[b.length-1].last_line,first_column:b[b.length-(Q||1)].first_column,last_column:b[b.length-1].last_column},M&&(j._$.range=[b[b.length-(Q||1)].range[0],b[b.length-1].range[1]]),H=this.performAction.apply(j,[w,k,C,D.yy,F[1],x,b].concat(P)),typeof H<"u")return H;Q&&(y=y.slice(0,-1*Q*2),x=x.slice(0,-1*Q),b=b.slice(0,-1*Q)),y.push(this.productions_[F[1]][0]),x.push(j.$),b.push(j._$),Y=T[y[y.length-2]][y[y.length-1]],y.push(Y);break;case 3:return!0}}return!0},"parse")},d=(function(){var p={EOF:1,parseError:o(function(g,y){if(this.yy.parser)this.yy.parser.parseError(g,y);else throw new Error(g)},"parseError"),setInput:o(function(m,g){return this.yy=g||this.yy||{},this._input=m,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},"setInput"),input:o(function(){var m=this._input[0];this.yytext+=m,this.yyleng++,this.offset++,this.match+=m,this.matched+=m;var g=m.match(/(?:\r\n?|\n).*/g);return g?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),m},"input"),unput:o(function(m){var g=m.length,y=m.split(/(?:\r\n?|\n)/g);this._input=m+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-g),this.offset-=g;var v=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),y.length-1&&(this.yylineno-=y.length-1);var x=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:y?(y.length===v.length?this.yylloc.first_column:0)+v[v.length-y.length].length-y[0].length:this.yylloc.first_column-g},this.options.ranges&&(this.yylloc.range=[x[0],x[0]+this.yyleng-g]),this.yyleng=this.yytext.length,this},"unput"),more:o(function(){return this._more=!0,this},"more"),reject:o(function(){if(this.options.backtrack_lexer)this._backtrack=!0;else return this.parseError("Lexical error on line "+(this.yylineno+1)+`. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).
+Expecting `+oe.join(", ")+", got '"+(this.terminals_[O]||O)+"'":te="Parse error on line "+(C+1)+": Unexpected "+(O==L?"end of input":"'"+(this.terminals_[O]||O)+"'"),this.parseError(te,{text:I.match,token:this.terminals_[O]||O,line:I.yylineno,loc:M,expected:oe})}if(G[0]instanceof Array&&G.length>1)throw new Error("Parse Error: multiple actions possible at state: "+V+", token: "+O);switch(G[0]){case 1:y.push(O),x.push(I.yytext),b.push(I.yylloc),y.push(G[1]),O=null,$?(O=$,$=null):(w=I.yyleng,k=I.yytext,C=I.yylineno,M=I.yylloc,S>0&&S--);break;case 2:if(Q=this.productions_[G[1]][1],H.$=x[x.length-Q],H._$={first_line:b[b.length-(Q||1)].first_line,last_line:b[b.length-1].last_line,first_column:b[b.length-(Q||1)].first_column,last_column:b[b.length-1].last_column},D&&(H._$.range=[b[b.length-(Q||1)].range[0],b[b.length-1].range[1]]),W=this.performAction.apply(H,[k,w,C,_.yy,G[1],x,b].concat(N)),typeof W<"u")return W;Q&&(y=y.slice(0,-1*Q*2),x=x.slice(0,-1*Q),b=b.slice(0,-1*Q)),y.push(this.productions_[G[1]][0]),x.push(H.$),b.push(H._$),U=T[y[y.length-2]][y[y.length-1]],y.push(U);break;case 3:return!0}}return!0},"parse")},d=(function(){var p={EOF:1,parseError:o(function(g,y){if(this.yy.parser)this.yy.parser.parseError(g,y);else throw new Error(g)},"parseError"),setInput:o(function(m,g){return this.yy=g||this.yy||{},this._input=m,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},"setInput"),input:o(function(){var m=this._input[0];this.yytext+=m,this.yyleng++,this.offset++,this.match+=m,this.matched+=m;var g=m.match(/(?:\r\n?|\n).*/g);return g?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),m},"input"),unput:o(function(m){var g=m.length,y=m.split(/(?:\r\n?|\n)/g);this._input=m+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-g),this.offset-=g;var v=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),y.length-1&&(this.yylineno-=y.length-1);var x=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:y?(y.length===v.length?this.yylloc.first_column:0)+v[v.length-y.length].length-y[0].length:this.yylloc.first_column-g},this.options.ranges&&(this.yylloc.range=[x[0],x[0]+this.yyleng-g]),this.yyleng=this.yytext.length,this},"unput"),more:o(function(){return this._more=!0,this},"more"),reject:o(function(){if(this.options.backtrack_lexer)this._backtrack=!0;else return this.parseError("Lexical error on line "+(this.yylineno+1)+`. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).
 `+this.showPosition(),{text:"",token:null,line:this.yylineno});return this},"reject"),less:o(function(m){this.unput(this.match.slice(m))},"less"),pastInput:o(function(){var m=this.matched.substr(0,this.matched.length-this.match.length);return(m.length>20?"...":"")+m.substr(-20).replace(/\n/g,"")},"pastInput"),upcomingInput:o(function(){var m=this.match;return m.length<20&&(m+=this._input.substr(0,20-m.length)),(m.substr(0,20)+(m.length>20?"...":"")).replace(/\n/g,"")},"upcomingInput"),showPosition:o(function(){var m=this.pastInput(),g=new Array(m.length+1).join("-");return m+this.upcomingInput()+`
 `+g+"^"},"showPosition"),test_match:o(function(m,g){var y,v,x;if(this.options.backtrack_lexer&&(x={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(x.yylloc.range=this.yylloc.range.slice(0))),v=m[0].match(/(?:\r\n?|\n).*/g),v&&(this.yylineno+=v.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:v?v[v.length-1].length-v[v.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+m[0].length},this.yytext+=m[0],this.match+=m[0],this.matches=m,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(m[0].length),this.matched+=m[0],y=this.performAction.call(this,this.yy,this,g,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),y)return y;if(this._backtrack){for(var b in x)this[b]=x[b];return!1}return!1},"test_match"),next:o(function(){if(this.done)return this.EOF;this._input||(this.done=!0);var m,g,y,v;this._more||(this.yytext="",this.match="");for(var x=this._currentRules(),b=0;b<x.length;b++)if(y=this._input.match(this.rules[x[b]]),y&&(!g||y[0].length>g[0].length)){if(g=y,v=b,this.options.backtrack_lexer){if(m=this.test_match(y,x[b]),m!==!1)return m;if(this._backtrack){g=!1;continue}else return!1}else if(!this.options.flex)break}return g?(m=this.test_match(g,x[v]),m!==!1?m:!1):this._input===""?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+`. Unrecognized text.
-`+this.showPosition(),{text:"",token:null,line:this.yylineno})},"next"),lex:o(function(){var g=this.next();return g||this.lex()},"lex"),begin:o(function(g){this.conditionStack.push(g)},"begin"),popState:o(function(){var g=this.conditionStack.length-1;return g>0?this.conditionStack.pop():this.conditionStack[0]},"popState"),_currentRules:o(function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},"_currentRules"),topState:o(function(g){return g=this.conditionStack.length-1-Math.abs(g||0),g>=0?this.conditionStack[g]:"INITIAL"},"topState"),pushState:o(function(g){this.begin(g)},"pushState"),stateStackSize:o(function(){return this.conditionStack.length},"stateStackSize"),options:{"case-insensitive":!0},performAction:o(function(g,y,v,x){var b=x;switch(v){case 0:break;case 1:break;case 2:return 13;case 3:break;case 4:break;case 5:return 8;case 6:return 9;case 7:return 7;case 8:return 14;case 9:return this.begin("acc_title"),15;break;case 10:return this.popState(),"acc_title_value";break;case 11:return this.begin("acc_descr"),17;break;case 12:return this.popState(),"acc_descr_value";break;case 13:this.begin("acc_descr_multiline");break;case 14:this.popState();break;case 15:return"acc_descr_multiline_value";case 16:return 20;case 17:return 24;case 18:return 23;case 19:return 6;case 20:return"INVALID"}},"anonymous"),rules:[/^(?:%(?!\{)[^\n]*)/i,/^(?:[^\}]%%[^\n]*)/i,/^(?:[\n]+)/i,/^(?:\s+)/i,/^(?:#[^\n]*)/i,/^(?:timeline[ \t]+LR\b)/i,/^(?:timeline[ \t]+TD\b)/i,/^(?:timeline\b)/i,/^(?:title\s[^\n]+)/i,/^(?:accTitle\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*\{\s*)/i,/^(?:[\}])/i,/^(?:[^\}]*)/i,/^(?:section\s[^:\n]+)/i,/^(?::\s(?:[^:\n]|:(?!\s))+)/i,/^(?:[^#:\n]+)/i,/^(?:$)/i,/^(?:.)/i],conditions:{acc_descr_multiline:{rules:[14,15],inclusive:!1},acc_descr:{rules:[12],inclusive:!1},acc_title:{rules:[10],inclusive:!1},INITIAL:{rules:[0,1,2,3,4,5,6,7,8,9,11,13,16,17,18,19,20],inclusive:!0}}};return p})();h.lexer=d;function f(){this.yy={}}return o(f,"Parser"),f.prototype=h,h.Parser=f,new f})();WW.parser=WW;F_e=WW});var HW={};xr(HW,{addEvent:()=>K_e,addSection:()=>H_e,addTask:()=>X_e,addTaskOrg:()=>Z_e,clear:()=>W_e,default:()=>$kt,getCommonDb:()=>V_e,getDirection:()=>U_e,getSections:()=>Y_e,getTasks:()=>j_e,setDirection:()=>q_e});var Ay,G_e,qW,UW,c_,_y,V_e,W_e,q_e,U_e,H_e,Y_e,j_e,X_e,K_e,Z_e,z_e,$kt,Q_e=z(()=>{"use strict";Ci();Ay="",G_e=0,qW="LR",UW=[],c_=[],_y=[],V_e=o(()=>wv,"getCommonDb"),W_e=o(function(){UW.length=0,c_.length=0,Ay="",_y.length=0,qW="LR",gr()},"clear"),q_e=o(function(e){qW=e},"setDirection"),U_e=o(function(){return qW},"getDirection"),H_e=o(function(e){Ay=e,UW.push(e)},"addSection"),Y_e=o(function(){return UW},"getSections"),j_e=o(function(){let e=z_e(),t=100,r=0;for(;!e&&r<t;)e=z_e(),r++;return c_.push(..._y),c_},"getTasks"),X_e=o(function(e,t,r){let i={id:G_e++,section:Ay,type:Ay,task:e,score:t||0,events:r?[r]:[]};_y.push(i)},"addTask"),K_e=o(function(e){_y.find(r=>r.id===G_e-1).events.push(e)},"addEvent"),Z_e=o(function(e){let t={section:Ay,type:Ay,description:e,task:e,classes:[]};c_.push(t)},"addTaskOrg"),z_e=o(function(){let e=o(function(r){return _y[r].processed},"compileTask"),t=!0;for(let[r,i]of _y.entries())e(r),t=t&&i.processed;return t},"compileTasks"),$kt={clear:W_e,getCommonDb:V_e,getDirection:U_e,setDirection:q_e,addSection:H_e,getSections:Y_e,getTasks:j_e,addTask:X_e,addTaskOrg:Z_e,addEvent:K_e}});function r7e(e,t){e.each(function(){var r=Je(this),i=r.text().split(/(\s+|<br>)/).reverse(),n,a=[],s=1.1,l=r.attr("y"),u=parseFloat(r.attr("dy")),h=r.text(null).append("tspan").attr("x",0).attr("y",l).attr("dy",u+"em");for(let d=0;d<i.length;d++)n=i[i.length-1-d],a.push(n),h.text(a.join(" ").trim()),(h.node().getComputedTextLength()>t||n==="<br>")&&(a.pop(),h.text(a.join(" ").trim()),n==="<br>"?a=[""]:a=[n],h=r.append("tspan").attr("x",0).attr("y",l).attr("dy",s+"em").text(n))})}var J_e,u_,zkt,Gkt,e7e,Vkt,Wkt,YW,qkt,Ukt,Hkt,jW,t7e,Ykt,jkt,Xkt,Kkt,Fa,XW=z(()=>{"use strict";Rr();J_e=0,u_=o(function(e,t){let r=e.append("rect");return r.attr("x",t.x),r.attr("y",t.y),r.attr("fill",t.fill),r.attr("stroke",t.stroke),r.attr("width",t.width),r.attr("height",t.height),r.attr("rx",t.rx),r.attr("ry",t.ry),t.class!==void 0&&r.attr("class",t.class),r},"drawRect"),zkt=o(function(e,t){let i=e.append("circle").attr("cx",t.cx).attr("cy",t.cy).attr("class","face").attr("r",15).attr("stroke-width",2).attr("overflow","visible"),n=e.append("g");n.append("circle").attr("cx",t.cx-15/3).attr("cy",t.cy-15/3).attr("r",1.5).attr("stroke-width",2).attr("fill","#666").attr("stroke","#666"),n.append("circle").attr("cx",t.cx+15/3).attr("cy",t.cy-15/3).attr("r",1.5).attr("stroke-width",2).attr("fill","#666").attr("stroke","#666");function a(u){let h=Al().startAngle(Math.PI/2).endAngle(3*(Math.PI/2)).innerRadius(7.5).outerRadius(6.8181818181818175);u.append("path").attr("class","mouth").attr("d",h).attr("transform","translate("+t.cx+","+(t.cy+2)+")")}o(a,"smile");function s(u){let h=Al().startAngle(3*Math.PI/2).endAngle(5*(Math.PI/2)).innerRadius(7.5).outerRadius(6.8181818181818175);u.append("path").attr("class","mouth").attr("d",h).attr("transform","translate("+t.cx+","+(t.cy+7)+")")}o(s,"sad");function l(u){u.append("line").attr("class","mouth").attr("stroke",2).attr("x1",t.cx-5).attr("y1",t.cy+7).attr("x2",t.cx+5).attr("y2",t.cy+7).attr("class","mouth").attr("stroke-width","1px").attr("stroke","#666")}return o(l,"ambivalent"),t.score>3?a(n):t.score<3?s(n):l(n),i},"drawFace"),Gkt=o(function(e,t){let r=e.append("circle");return r.attr("cx",t.cx),r.attr("cy",t.cy),r.attr("class","actor-"+t.pos),r.attr("fill",t.fill),r.attr("stroke",t.stroke),r.attr("r",t.r),r.class!==void 0&&r.attr("class",r.class),t.title!==void 0&&r.append("title").text(t.title),r},"drawCircle"),e7e=o(function(e,t){let r=t.text.replace(/<br\s*\/?>/gi," "),i=e.append("text");i.attr("x",t.x),i.attr("y",t.y),i.attr("class","legend"),i.style("text-anchor",t.anchor),t.class!==void 0&&i.attr("class",t.class);let n=i.append("tspan");return n.attr("x",t.x+t.textMargin*2),n.text(r),i},"drawText"),Vkt=o(function(e,t){function r(n,a,s,l,u){return n+","+a+" "+(n+s)+","+a+" "+(n+s)+","+(a+l-u)+" "+(n+s-u*1.2)+","+(a+l)+" "+n+","+(a+l)}o(r,"genPoints");let i=e.append("polygon");i.attr("points",r(t.x,t.y,50,20,7)),i.attr("class","labelBox"),t.y=t.y+t.labelMargin,t.x=t.x+.5*t.labelMargin,e7e(e,t)},"drawLabel"),Wkt=o(function(e,t,r){let i=e.append("g"),n=jW();n.x=t.x,n.y=t.y,n.fill=t.fill,n.width=r.width,n.height=r.height,n.class="journey-section section-type-"+t.num,n.rx=3,n.ry=3,u_(i,n),t7e(r)(t.text,i,n.x,n.y,n.width,n.height,{class:"journey-section section-type-"+t.num},r,t.colour)},"drawSection"),YW=-1,qkt=o(function(e,t,r,i){let n=t.x+r.width/2,a=e.append("g");YW++,a.append("line").attr("id",i+"-task"+YW).attr("x1",n).attr("y1",t.y).attr("x2",n).attr("y2",450).attr("class","task-line").attr("stroke-width","1px").attr("stroke-dasharray","4 2").attr("stroke","#666"),zkt(a,{cx:n,cy:300+(5-t.score)*30,score:t.score});let l=jW();l.x=t.x,l.y=t.y,l.fill=t.fill,l.width=r.width,l.height=r.height,l.class="task task-type-"+t.num,l.rx=3,l.ry=3,u_(a,l),t7e(r)(t.task,a,l.x,l.y,l.width,l.height,{class:"task"},r,t.colour)},"drawTask"),Ukt=o(function(e,t){u_(e,{x:t.startx,y:t.starty,width:t.stopx-t.startx,height:t.stopy-t.starty,fill:t.fill,class:"rect"}).lower()},"drawBackgroundRect"),Hkt=o(function(){return{x:0,y:0,fill:void 0,"text-anchor":"start",width:100,height:100,textMargin:0,rx:0,ry:0}},"getTextObj"),jW=o(function(){return{x:0,y:0,width:100,anchor:"start",height:100,rx:0,ry:0}},"getNoteRect"),t7e=(function(){function e(n,a,s,l,u,h,d,f){let p=a.append("text").attr("x",s+u/2).attr("y",l+h/2+5).style("font-color",f).style("text-anchor","middle").text(n);i(p,d)}o(e,"byText");function t(n,a,s,l,u,h,d,f,p){let{taskFontSize:m,taskFontFamily:g}=f,y=n.split(/<br\s*\/?>/gi);for(let v=0;v<y.length;v++){let x=v*m-m*(y.length-1)/2,b=a.append("text").attr("x",s+u/2).attr("y",l).attr("fill",p).style("text-anchor","middle").style("font-size",m).style("font-family",g);b.append("tspan").attr("x",s+u/2).attr("dy",x).text(y[v]),b.attr("y",l+h/2).attr("dominant-baseline","central").attr("alignment-baseline","central"),i(b,d)}}o(t,"byTspan");function r(n,a,s,l,u,h,d,f){let p=a.append("switch"),g=p.append("foreignObject").attr("x",s).attr("y",l).attr("width",u).attr("height",h).attr("position","fixed").append("xhtml:div").style("display","table").style("height","100%").style("width","100%");g.append("div").attr("class","label").style("display","table-cell").style("text-align","center").style("vertical-align","middle").text(n),t(n,p,s,l,u,h,d,f),i(g,d)}o(r,"byFo");function i(n,a){for(let s in a)s in a&&n.attr(s,a[s])}return o(i,"_setTextAttrs"),function(n){return n.textPlacement==="fo"?r:n.textPlacement==="old"?e:t}})(),Ykt=o(function(e,t){J_e=0,YW=-1,e.append("defs").append("marker").attr("id",t+"-arrowhead").attr("refX",5).attr("refY",2).attr("markerWidth",6).attr("markerHeight",4).attr("orient","auto").append("path").attr("d","M 0,0 V 4 L6,2 Z")},"initGraphics");o(r7e,"wrap");jkt=o(function(e,t,r,i,n,a=!1){let{theme:s,look:l}=i,u=s?.includes("redux"),h=i?.themeVariables?.THEME_COLOR_LIMIT??12,d=r%h-1,f=e.append("g");t.section=d,f.attr("class",(t.class?t.class+" ":"")+"timeline-node "+("section-"+d));let p=f.append("g"),m=f.append("g"),y=m.append("text").text(t.descr).attr("dy","1em").attr("alignment-baseline","middle").attr("dominant-baseline","middle").attr("text-anchor","middle").call(r7e,t.width).node().getBBox(),v=i.fontSize?.replace?i.fontSize.replace("px",""):i.fontSize;if(t.height=y.height+v*1.1*.5+t.padding,t.height=Math.max(t.height,t.maxHeight),t.width=t.width+2*t.padding,m.attr("transform","translate("+t.width/2+", "+t.padding/2+")"),u&&m.attr("transform",`translate(${t.width/2}, ${a?t.padding/2+3:t.padding})`),Kkt(p,t,d,n,i),l==="neo"&&(f.attr("data-look","neo"),u)){let x=s.includes("dark"),b=e.node()?.ownerSVGElement??e.node(),T=Je(b),w=T.attr("id")??"",C=w?`${w}-drop-shadow`:"drop-shadow";if(T.select(`#${C}`).empty()){let k=T.select("defs");(k.empty()?T.append("defs"):k).append("filter").attr("id",C).attr("height","130%").attr("width","130%").append("feDropShadow").attr("dx","4").attr("dy","4").attr("stdDeviation",0).attr("flood-opacity",x?"0.2":"0.06").attr("flood-color",x?"#FFFFFF":"#000000")}}return t},"drawNode"),Xkt=o(function(e,t,r){let i=e.append("g"),a=i.append("text").text(t.descr).attr("dy","1em").attr("alignment-baseline","middle").attr("dominant-baseline","middle").attr("text-anchor","middle").call(r7e,t.width).node().getBBox(),s=r.fontSize?.replace?r.fontSize.replace("px",""):r.fontSize;return i.remove(),a.height+s*1.1*.5+t.padding},"getVirtualNodeHeight"),Kkt=o(function(e,t,r,i,n){let{theme:a}=n,s=a?.includes("redux")?0:5,l=5,u=s>0?`M0 ${t.height-l} v${-t.height+2*l} q0,-${s},${s},-${s} h${t.width-2*l} q${s},0,${s},${s} v${t.height-l} H0 Z`:`M0 ${t.height-l} v${-(t.height-l)} h${t.width} v${t.height} H0 Z`;e.append("path").attr("id",i+"-node-"+J_e++).attr("class","node-bkg node-"+t.type).attr("d",u),a?.includes("redux")||e.append("line").attr("class","node-line-"+r).attr("x1",0).attr("y1",t.height).attr("x2",t.width).attr("y2",t.height)},"defaultBkg"),Fa={drawRect:u_,drawCircle:Gkt,drawSection:Wkt,drawText:e7e,drawLabel:Vkt,drawTask:qkt,drawBackgroundRect:Ukt,getTextObj:Hkt,getNoteRect:jW,initGraphics:Ykt,drawNode:jkt,getVirtualNodeHeight:Xkt}});var Zkt,i7e,Qkt,n7e,a7e=z(()=>{"use strict";Rr();XW();St();Ut();Di();Zkt=o(function(e,t,r,i){let n=ge(),{look:a,theme:s,themeVariables:l}=n,{useGradient:u,gradientStart:h,gradientStop:d}=l,f=n.timeline?.leftMargin??50;Z.debug("timeline",i.db);let p=n.securityLevel,m;p==="sandbox"&&(m=Je("#i"+t));let y=(p==="sandbox"?Je(m.nodes()[0].contentDocument.body):Je("body")).select("#"+t);y.append("g");let v=i.db.getTasks(),x=i.db.getCommonDb().getDiagramTitle();Z.debug("task",v),Fa.initGraphics(y,t);let b=i.db.getSections();Z.debug("sections",b);let T=0,w=0,C=0,k=0,E=50+f,A=50;k=50;let N=0,P=!0;b.forEach(function(M){let L={number:N,descr:M,section:N,width:150,padding:20,maxHeight:T},B=Fa.getVirtualNodeHeight(y,L,n);Z.debug("sectionHeight before draw",B),T=Math.max(T,B+20)});let I=0,D=0;Z.debug("tasks.length",v.length);for(let[M,L]of v.entries()){let B={number:M,descr:L,section:L.section,width:150,padding:20,maxHeight:w},O=Fa.getVirtualNodeHeight(y,B,n);Z.debug("taskHeight before draw",O),w=Math.max(w,O+20),I=Math.max(I,L.events.length);let $=0;for(let G of L.events){let F={descr:G,section:L.section,number:L.section,width:150,padding:20,maxHeight:50};$+=Fa.getVirtualNodeHeight(y,F,n)}L.events.length>0&&($+=(L.events.length-1)*10),D=Math.max(D,$)}Z.debug("maxSectionHeight before draw",T),Z.debug("maxTaskHeight before draw",w),b&&b.length>0?b.forEach(M=>{let L=v.filter(G=>G.section===M),B={number:N,descr:M,section:N,width:200*Math.max(L.length,1)-50,padding:20,maxHeight:T};Z.debug("sectionNode",B);let O=y.append("g"),$=Fa.drawNode(O,B,N,n,t);Z.debug("sectionNode output",$),O.attr("transform",`translate(${E}, ${k})`),A+=T+50,L.length>0&&i7e(y,L,N,E,A,w,n,I,D,T,!1,t),E+=200*Math.max(L.length,1),A=k,N++}):(P=!1,i7e(y,v,N,E,A,w,n,I,D,T,!0,t));let _=y.node().getBBox();if(Z.debug("bounds",_),x&&y.append("text").text(x).attr("x",a==="neo"?_.x*2+f:_.width/2-f).attr("font-size","4ex").attr("font-weight","bold").attr("y",20),C=P?T+w+150:w+100,y.append("g").attr("class","lineWrapper").append("line").attr("x1",f).attr("y1",C).attr("x2",_.width+3*f).attr("y2",C).attr("stroke-width",4).attr("stroke","black").attr("marker-end",`url(#${t}-arrowhead)`),a==="neo"&&u&&s!=="neutral"){let M=y.select("defs"),B=(M.empty()?y.append("defs"):M).append("linearGradient").attr("id",y.attr("id")+"-gradient").attr("gradientUnits","objectBoundingBox").attr("x1","0%").attr("y1","0%").attr("x2","100%").attr("y2","0%");B.append("stop").attr("offset","0%").attr("stop-color",h).attr("stop-opacity",1),B.append("stop").attr("offset","100%").attr("stop-color",d).attr("stop-opacity",1)}Io(void 0,y,n.timeline?.padding??50,n.timeline?.useMaxWidth??!1)},"draw"),i7e=o(function(e,t,r,i,n,a,s,l,u,h,d,f){for(let p of t){let m={descr:p.task,section:r,number:r,width:150,padding:20,maxHeight:a};Z.debug("taskNode",m);let g=e.append("g").attr("class","taskWrapper"),v=Fa.drawNode(g,m,r,s,f).height;if(Z.debug("taskHeight after draw",v),g.attr("transform",`translate(${i}, ${n})`),a=Math.max(a,v),p.events){let x=e.append("g").attr("class","lineWrapper"),b=a;n+=100,b=b+Qkt(e,p.events,r,i,n,s,f),n-=100,x.append("line").attr("x1",i+190/2).attr("y1",n+a).attr("x2",i+190/2).attr("y2",n+a+100+u+100).attr("stroke-width",2).attr("stroke","black").attr("marker-end",`url(#${f}-arrowhead)`).attr("stroke-dasharray","5,5")}i=i+200,d&&!s.timeline?.disableMulticolor&&r++}n=n-10},"drawTasks"),Qkt=o(function(e,t,r,i,n,a,s){let l=0,u=n;n=n+100;for(let h of t){let d={descr:h,section:r,number:r,width:150,padding:20,maxHeight:50};Z.debug("eventNode",d);let f=e.append("g").attr("class","eventWrapper"),m=Fa.drawNode(f,d,r,a,s,!0).height;l=l+m,f.attr("transform",`translate(${i}, ${n})`),n=n+10+m}return n=u,l},"drawEvents"),n7e={setConf:o(()=>{},"setConf"),draw:Zkt}});var h_,_h,Jkt,KW,ewt,c7e,twt,s7e,u7e,o7e,h7e,rwt,l7e,iwt,d7e,f7e=z(()=>{"use strict";XW();St();Ut();Di();ps();Xt();h_=200,_h=5,Jkt=h_+_h*2,KW=h_+100,ewt=KW+_h*2,c7e=10,twt=0,s7e=20,u7e=20,o7e=30,h7e=50,rwt=o(function(e,t,r,i){let n=ge(),a=n.timeline?.leftMargin??50;Z.debug("timeline",i.db);let s=bi(t);s.append("g");let l=i.db.getTasks(),u=i.db.getCommonDb().getDiagramTitle();Z.debug("task",l),Fa.initGraphics(s);let h=i.db.getSections();Z.debug("sections",h);let d=0,f=0,p=50+a,m=50,g=m,y=p,v=Jkt+u7e,x=ewt+h7e,b=y+v,T=0,w=h&&h.length>0,C=w?b:p+v,k=Math.max(50,v+x-_h*2);h.forEach(function(M){let L={number:T,descr:M,section:T,width:k,padding:_h,maxHeight:d},B=Fa.getVirtualNodeHeight(s,L,n);Z.debug("sectionHeight before draw",B),d=Math.max(d,B)});let E=0;Z.debug("tasks.length",l.length);for(let[M,L]of l.entries()){let B={number:M,descr:L,section:L.section,width:h_,padding:_h,maxHeight:f},O=Fa.getVirtualNodeHeight(s,B,n);Z.debug("taskHeight before draw",O),f=Math.max(f,O);let $=0;for(let G of L.events){let F={descr:G,section:L.section,number:L.section,width:KW,padding:_h,maxHeight:50};$+=Fa.getVirtualNodeHeight(s,F,n)}L.events.length>0&&($+=(L.events.length-1)*c7e),E=Math.max(E,$)+twt}Z.debug("maxSectionHeight before draw",d),Z.debug("maxTaskHeight before draw",f);let N=Math.max(f,E)+o7e;w?h.forEach(M=>{let L=l.filter(j=>j.section===M),B={number:T,descr:M,section:T,width:k,padding:_h,maxHeight:d};Z.debug("sectionNode",B);let O=s.append("g"),$=Fa.drawNode(O,B,T,n);Z.debug("sectionNode output",$);let G=C-v;O.attr("transform",`translate(${G}, ${m})`);let F=m+$.height+s7e;L.length>0&&l7e(s,L,T,C,F,f,n,N,!1);let V=L.length,H=$.height+s7e+N*Math.max(V,1)-(V>0?o7e*2:0);m+=H,T++}):l7e(s,l,T,C,m,f,n,N,!0);let P=s.node()?.getBBox();if(!P)throw new Error("bbox not found");if(Z.debug("bounds",P),u){if(s.append("text").text(u).attr("x",P.width/2-a).attr("font-size","4ex").attr("font-weight","bold").attr("y",20),P=s.node()?.getBBox(),!P)throw new Error("bbox not found");Z.debug("bounds after title",P)}let[I]=Za(n.fontSize),D=(I??16)*2,_=(I??16)*.5+20,R=s.append("g").attr("class","lineWrapper");R.append("line").attr("x1",C).attr("y1",g-D).attr("x2",C).attr("y2",P.y+P.height+_).attr("stroke-width",4).attr("stroke","black").attr("marker-end","url(#arrowhead)"),R.lower(),Io(void 0,s,n.timeline?.padding??50,n.timeline?.useMaxWidth??!1)},"draw"),l7e=o(function(e,t,r,i,n,a,s,l,u){for(let h of t){let d={descr:h.task,section:r,number:r,width:h_,padding:_h,maxHeight:a};Z.debug("taskNode",d);let f=e.append("g").attr("class","taskWrapper"),p=Fa.drawNode(f,d,r,s),m=p.height;Z.debug("taskHeight after draw",m);let g=i-u7e-p.width;if(f.attr("transform",`translate(${g}, ${n})`),a=Math.max(a,m),h.events&&h.events.length>0){let y=n,v=i+h7e;iwt(e,h.events,r,i,v,y,s)}n=n+l,u&&!s.timeline?.disableMulticolor&&r++}},"drawTasks"),iwt=o(function(e,t,r,i,n,a,s){let l=a;for(let u of t){let h={descr:u,section:r,number:r,width:KW,padding:_h,maxHeight:0};Z.debug("eventNode",h);let d=e.append("g").attr("class","eventWrapper"),p=Fa.drawNode(d,h,r,s).height;d.attr("transform",`translate(${n}, ${l})`);let m=e.append("g").attr("class","lineWrapper"),g=l+p/2;m.append("line").attr("x1",i).attr("y1",g).attr("x2",n).attr("y2",g).attr("stroke-width",2).attr("stroke","black").attr("marker-end","url(#arrowhead)").attr("stroke-dasharray","5,5"),l=l+p+c7e}return l-a},"drawEvents"),d7e={setConf:o(()=>{},"setConf"),draw:rwt}});var nwt,awt,swt,p7e,m7e=z(()=>{"use strict";Cn();br();nwt=o(e=>{let{theme:t}=Nt(),r=t?.includes("dark"),i=t?.includes("color"),n=e.svgId?.replace(/^#/,"")??"",a=n?`url(#${n}-drop-shadow)`:e.dropShadow??"none",s="";for(let l=0;l<e.THEME_COLOR_LIMIT;l++){let u=`${17-3*l}`,h=i?e.borderColorArray[l]:e.mainBkg,d=i?e.borderColorArray[l]:e.nodeBorder;s+=`
+`+this.showPosition(),{text:"",token:null,line:this.yylineno})},"next"),lex:o(function(){var g=this.next();return g||this.lex()},"lex"),begin:o(function(g){this.conditionStack.push(g)},"begin"),popState:o(function(){var g=this.conditionStack.length-1;return g>0?this.conditionStack.pop():this.conditionStack[0]},"popState"),_currentRules:o(function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},"_currentRules"),topState:o(function(g){return g=this.conditionStack.length-1-Math.abs(g||0),g>=0?this.conditionStack[g]:"INITIAL"},"topState"),pushState:o(function(g){this.begin(g)},"pushState"),stateStackSize:o(function(){return this.conditionStack.length},"stateStackSize"),options:{"case-insensitive":!0},performAction:o(function(g,y,v,x){var b=x;switch(v){case 0:break;case 1:break;case 2:return 13;case 3:break;case 4:break;case 5:return 8;case 6:return 9;case 7:return 7;case 8:return 14;case 9:return this.begin("acc_title"),15;break;case 10:return this.popState(),"acc_title_value";break;case 11:return this.begin("acc_descr"),17;break;case 12:return this.popState(),"acc_descr_value";break;case 13:this.begin("acc_descr_multiline");break;case 14:this.popState();break;case 15:return"acc_descr_multiline_value";case 16:return 20;case 17:return 24;case 18:return 23;case 19:return 6;case 20:return"INVALID"}},"anonymous"),rules:[/^(?:%(?!\{)[^\n]*)/i,/^(?:[^\}]%%[^\n]*)/i,/^(?:[\n]+)/i,/^(?:\s+)/i,/^(?:#[^\n]*)/i,/^(?:timeline[ \t]+LR\b)/i,/^(?:timeline[ \t]+TD\b)/i,/^(?:timeline\b)/i,/^(?:title\s[^\n]+)/i,/^(?:accTitle\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*\{\s*)/i,/^(?:[\}])/i,/^(?:[^\}]*)/i,/^(?:section\s[^:\n]+)/i,/^(?::\s(?:[^:\n]|:(?!\s))+)/i,/^(?:[^#:\n]+)/i,/^(?:$)/i,/^(?:.)/i],conditions:{acc_descr_multiline:{rules:[14,15],inclusive:!1},acc_descr:{rules:[12],inclusive:!1},acc_title:{rules:[10],inclusive:!1},INITIAL:{rules:[0,1,2,3,4,5,6,7,8,9,11,13,16,17,18,19,20],inclusive:!0}}};return p})();h.lexer=d;function f(){this.yy={}}return o(f,"Parser"),f.prototype=h,h.Parser=f,new f})();WY.parser=WY;LMe=WY});var UY={};ir(UY,{addEvent:()=>VMe,addSection:()=>$Me,addTask:()=>GMe,addTaskOrg:()=>WMe,clear:()=>PMe,default:()=>h_t,getCommonDb:()=>NMe,getDirection:()=>BMe,getSections:()=>FMe,getTasks:()=>zMe,setDirection:()=>OMe});var ox,MMe,qY,HY,GL,lx,NMe,PMe,OMe,BMe,$Me,FMe,zMe,GMe,VMe,WMe,IMe,h_t,qMe=F(()=>{"use strict";Nn();ox="",MMe=0,qY="LR",HY=[],GL=[],lx=[],NMe=o(()=>lb,"getCommonDb"),PMe=o(function(){HY.length=0,GL.length=0,ox="",lx.length=0,qY="LR",yr()},"clear"),OMe=o(function(e){qY=e},"setDirection"),BMe=o(function(){return qY},"getDirection"),$Me=o(function(e){ox=e,HY.push(e)},"addSection"),FMe=o(function(){return HY},"getSections"),zMe=o(function(){let e=IMe(),t=100,r=0;for(;!e&&r<t;)e=IMe(),r++;return GL.push(...lx),GL},"getTasks"),GMe=o(function(e,t,r){let n={id:MMe++,section:ox,type:ox,task:e,score:t||0,events:r?[r]:[]};lx.push(n)},"addTask"),VMe=o(function(e){lx.find(r=>r.id===MMe-1).events.push(e)},"addEvent"),WMe=o(function(e){let t={section:ox,type:ox,description:e,task:e,classes:[]};GL.push(t)},"addTaskOrg"),IMe=o(function(){let e=o(function(r){return lx[r].processed},"compileTask"),t=!0;for(let[r,n]of lx.entries())e(r),t=t&&n.processed;return t},"compileTasks"),h_t={clear:PMe,getCommonDb:NMe,getDirection:BMe,setDirection:OMe,addSection:$Me,getSections:FMe,getTasks:zMe,addTask:GMe,addTaskOrg:WMe,addEvent:VMe}});function jMe(e,t){e.each(function(){var r=et(this),n=r.text().split(/(\s+|<br>)/).reverse(),i,a=[],s=1.1,l=r.attr("y"),u=parseFloat(r.attr("dy")),h=r.text(null).append("tspan").attr("x",0).attr("y",l).attr("dy",u+"em");for(let d=0;d<n.length;d++)i=n[n.length-1-d],a.push(i),h.text(a.join(" ").trim()),(h.node().getComputedTextLength()>t||i==="<br>")&&(a.pop(),h.text(a.join(" ").trim()),i==="<br>"?a=[""]:a=[i],h=r.append("tspan").attr("x",0).attr("y",l).attr("dy",s+"em").text(i))})}var HMe,VL,d_t,f_t,UMe,p_t,m_t,YY,g_t,y_t,v_t,jY,YMe,x_t,b_t,T_t,C_t,fs,XY=F(()=>{"use strict";$r();HMe=0,VL=o(function(e,t){let r=e.append("rect");return r.attr("x",t.x),r.attr("y",t.y),r.attr("fill",t.fill),r.attr("stroke",t.stroke),r.attr("width",t.width),r.attr("height",t.height),r.attr("rx",t.rx),r.attr("ry",t.ry),t.class!==void 0&&r.attr("class",t.class),r},"drawRect"),d_t=o(function(e,t){let n=e.append("circle").attr("cx",t.cx).attr("cy",t.cy).attr("class","face").attr("r",15).attr("stroke-width",2).attr("overflow","visible"),i=e.append("g");i.append("circle").attr("cx",t.cx-15/3).attr("cy",t.cy-15/3).attr("r",1.5).attr("stroke-width",2).attr("fill","#666").attr("stroke","#666"),i.append("circle").attr("cx",t.cx+15/3).attr("cy",t.cy-15/3).attr("r",1.5).attr("stroke-width",2).attr("fill","#666").attr("stroke","#666");function a(u){let h=ec().startAngle(Math.PI/2).endAngle(3*(Math.PI/2)).innerRadius(7.5).outerRadius(6.8181818181818175);u.append("path").attr("class","mouth").attr("d",h).attr("transform","translate("+t.cx+","+(t.cy+2)+")")}o(a,"smile");function s(u){let h=ec().startAngle(3*Math.PI/2).endAngle(5*(Math.PI/2)).innerRadius(7.5).outerRadius(6.8181818181818175);u.append("path").attr("class","mouth").attr("d",h).attr("transform","translate("+t.cx+","+(t.cy+7)+")")}o(s,"sad");function l(u){u.append("line").attr("class","mouth").attr("stroke",2).attr("x1",t.cx-5).attr("y1",t.cy+7).attr("x2",t.cx+5).attr("y2",t.cy+7).attr("class","mouth").attr("stroke-width","1px").attr("stroke","#666")}return o(l,"ambivalent"),t.score>3?a(i):t.score<3?s(i):l(i),n},"drawFace"),f_t=o(function(e,t){let r=e.append("circle");return r.attr("cx",t.cx),r.attr("cy",t.cy),r.attr("class","actor-"+t.pos),r.attr("fill",t.fill),r.attr("stroke",t.stroke),r.attr("r",t.r),r.class!==void 0&&r.attr("class",r.class),t.title!==void 0&&r.append("title").text(t.title),r},"drawCircle"),UMe=o(function(e,t){let r=t.text.replace(/<br\s*\/?>/gi," "),n=e.append("text");n.attr("x",t.x),n.attr("y",t.y),n.attr("class","legend"),n.style("text-anchor",t.anchor),t.class!==void 0&&n.attr("class",t.class);let i=n.append("tspan");return i.attr("x",t.x+t.textMargin*2),i.text(r),n},"drawText"),p_t=o(function(e,t){function r(i,a,s,l,u){return i+","+a+" "+(i+s)+","+a+" "+(i+s)+","+(a+l-u)+" "+(i+s-u*1.2)+","+(a+l)+" "+i+","+(a+l)}o(r,"genPoints");let n=e.append("polygon");n.attr("points",r(t.x,t.y,50,20,7)),n.attr("class","labelBox"),t.y=t.y+t.labelMargin,t.x=t.x+.5*t.labelMargin,UMe(e,t)},"drawLabel"),m_t=o(function(e,t,r){let n=e.append("g"),i=jY();i.x=t.x,i.y=t.y,i.fill=t.fill,i.width=r.width,i.height=r.height,i.class="journey-section section-type-"+t.num,i.rx=3,i.ry=3,VL(n,i),YMe(r)(t.text,n,i.x,i.y,i.width,i.height,{class:"journey-section section-type-"+t.num},r,t.colour)},"drawSection"),YY=-1,g_t=o(function(e,t,r,n){let i=t.x+r.width/2,a=e.append("g");YY++,a.append("line").attr("id",n+"-task"+YY).attr("x1",i).attr("y1",t.y).attr("x2",i).attr("y2",450).attr("class","task-line").attr("stroke-width","1px").attr("stroke-dasharray","4 2").attr("stroke","#666"),d_t(a,{cx:i,cy:300+(5-t.score)*30,score:t.score});let l=jY();l.x=t.x,l.y=t.y,l.fill=t.fill,l.width=r.width,l.height=r.height,l.class="task task-type-"+t.num,l.rx=3,l.ry=3,VL(a,l),YMe(r)(t.task,a,l.x,l.y,l.width,l.height,{class:"task"},r,t.colour)},"drawTask"),y_t=o(function(e,t){VL(e,{x:t.startx,y:t.starty,width:t.stopx-t.startx,height:t.stopy-t.starty,fill:t.fill,class:"rect"}).lower()},"drawBackgroundRect"),v_t=o(function(){return{x:0,y:0,fill:void 0,"text-anchor":"start",width:100,height:100,textMargin:0,rx:0,ry:0}},"getTextObj"),jY=o(function(){return{x:0,y:0,width:100,anchor:"start",height:100,rx:0,ry:0}},"getNoteRect"),YMe=(function(){function e(i,a,s,l,u,h,d,f){let p=a.append("text").attr("x",s+u/2).attr("y",l+h/2+5).style("font-color",f).style("text-anchor","middle").text(i);n(p,d)}o(e,"byText");function t(i,a,s,l,u,h,d,f,p){let{taskFontSize:m,taskFontFamily:g}=f,y=i.split(/<br\s*\/?>/gi);for(let v=0;v<y.length;v++){let x=v*m-m*(y.length-1)/2,b=a.append("text").attr("x",s+u/2).attr("y",l).attr("fill",p).style("text-anchor","middle").style("font-size",m).style("font-family",g);b.append("tspan").attr("x",s+u/2).attr("dy",x).text(y[v]),b.attr("y",l+h/2).attr("dominant-baseline","central").attr("alignment-baseline","central"),n(b,d)}}o(t,"byTspan");function r(i,a,s,l,u,h,d,f){let p=a.append("switch"),g=p.append("foreignObject").attr("x",s).attr("y",l).attr("width",u).attr("height",h).attr("position","fixed").append("xhtml:div").style("display","table").style("height","100%").style("width","100%");g.append("div").attr("class","label").style("display","table-cell").style("text-align","center").style("vertical-align","middle").text(i),t(i,p,s,l,u,h,d,f),n(g,d)}o(r,"byFo");function n(i,a){for(let s in a)s in a&&i.attr(s,a[s])}return o(n,"_setTextAttrs"),function(i){return i.textPlacement==="fo"?r:i.textPlacement==="old"?e:t}})(),x_t=o(function(e,t){HMe=0,YY=-1,e.append("defs").append("marker").attr("id",t+"-arrowhead").attr("refX",5).attr("refY",2).attr("markerWidth",6).attr("markerHeight",4).attr("orient","auto").append("path").attr("d","M 0,0 V 4 L6,2 Z")},"initGraphics");o(jMe,"wrap");b_t=o(function(e,t,r,n,i,a=!1){let{theme:s,look:l}=n,u=s?.includes("redux"),h=n?.themeVariables?.THEME_COLOR_LIMIT??12,d=r%h-1,f=e.append("g");t.section=d,f.attr("class",(t.class?t.class+" ":"")+"timeline-node "+("section-"+d));let p=f.append("g"),m=f.append("g"),y=m.append("text").text(t.descr).attr("dy","1em").attr("alignment-baseline","middle").attr("dominant-baseline","middle").attr("text-anchor","middle").call(jMe,t.width).node().getBBox(),v=n.fontSize?.replace?n.fontSize.replace("px",""):n.fontSize;if(t.height=y.height+v*1.1*.5+t.padding,t.height=Math.max(t.height,t.maxHeight),t.width=t.width+2*t.padding,m.attr("transform","translate("+t.width/2+", "+t.padding/2+")"),u&&m.attr("transform",`translate(${t.width/2}, ${a?t.padding/2+3:t.padding})`),C_t(p,t,d,i,n),l==="neo"&&(f.attr("data-look","neo"),u)){let x=s.includes("dark"),b=e.node()?.ownerSVGElement??e.node(),T=et(b),k=T.attr("id")??"",C=k?`${k}-drop-shadow`:"drop-shadow";if(T.select(`#${C}`).empty()){let w=T.select("defs");(w.empty()?T.append("defs"):w).append("filter").attr("id",C).attr("height","130%").attr("width","130%").append("feDropShadow").attr("dx","4").attr("dy","4").attr("stdDeviation",0).attr("flood-opacity",x?"0.2":"0.06").attr("flood-color",x?"#FFFFFF":"#000000")}}return t},"drawNode"),T_t=o(function(e,t,r){let n=e.append("g"),a=n.append("text").text(t.descr).attr("dy","1em").attr("alignment-baseline","middle").attr("dominant-baseline","middle").attr("text-anchor","middle").call(jMe,t.width).node().getBBox(),s=r.fontSize?.replace?r.fontSize.replace("px",""):r.fontSize;return n.remove(),a.height+s*1.1*.5+t.padding},"getVirtualNodeHeight"),C_t=o(function(e,t,r,n,i){let{theme:a}=i,s=a?.includes("redux")?0:5,l=5,u=s>0?`M0 ${t.height-l} v${-t.height+2*l} q0,-${s},${s},-${s} h${t.width-2*l} q${s},0,${s},${s} v${t.height-l} H0 Z`:`M0 ${t.height-l} v${-(t.height-l)} h${t.width} v${t.height} H0 Z`;e.append("path").attr("id",n+"-node-"+HMe++).attr("class","node-bkg node-"+t.type).attr("d",u),a?.includes("redux")||e.append("line").attr("class","node-line-"+r).attr("x1",0).attr("y1",t.height).attr("x2",t.width).attr("y2",t.height)},"defaultBkg"),fs={drawRect:VL,drawCircle:f_t,drawSection:m_t,drawText:UMe,drawLabel:p_t,drawTask:g_t,drawBackgroundRect:y_t,getTextObj:v_t,getNoteRect:jY,initGraphics:x_t,drawNode:b_t,getVirtualNodeHeight:T_t}});var w_t,XMe,k_t,KMe,ZMe=F(()=>{"use strict";$r();XY();vt();Xt();$n();w_t=o(function(e,t,r,n){let i=Ae(),{look:a,theme:s,themeVariables:l}=i,{useGradient:u,gradientStart:h,gradientStop:d}=l,f=i.timeline?.leftMargin??50;Z.debug("timeline",n.db);let p=i.securityLevel,m;p==="sandbox"&&(m=et("#i"+t));let y=(p==="sandbox"?et(m.nodes()[0].contentDocument.body):et("body")).select("#"+t);y.append("g");let v=n.db.getTasks(),x=n.db.getCommonDb().getDiagramTitle();Z.debug("task",v),fs.initGraphics(y,t);let b=n.db.getSections();Z.debug("sections",b);let T=0,k=0,C=0,w=0,S=50+f,R=50;w=50;let L=0,N=!0;b.forEach(function(D){let P={number:L,descr:D,section:L,width:150,padding:20,maxHeight:T},B=fs.getVirtualNodeHeight(y,P,i);Z.debug("sectionHeight before draw",B),T=Math.max(T,B+20)});let I=0,_=0;Z.debug("tasks.length",v.length);for(let[D,P]of v.entries()){let B={number:D,descr:P,section:P.section,width:150,padding:20,maxHeight:k},O=fs.getVirtualNodeHeight(y,B,i);Z.debug("taskHeight before draw",O),k=Math.max(k,O+20),I=Math.max(I,P.events.length);let $=0;for(let V of P.events){let G={descr:V,section:P.section,number:P.section,width:150,padding:20,maxHeight:50};$+=fs.getVirtualNodeHeight(y,G,i)}P.events.length>0&&($+=(P.events.length-1)*10),_=Math.max(_,$)}Z.debug("maxSectionHeight before draw",T),Z.debug("maxTaskHeight before draw",k),b&&b.length>0?b.forEach(D=>{let P=v.filter(V=>V.section===D),B={number:L,descr:D,section:L,width:200*Math.max(P.length,1)-50,padding:20,maxHeight:T};Z.debug("sectionNode",B);let O=y.append("g"),$=fs.drawNode(O,B,L,i,t);Z.debug("sectionNode output",$),O.attr("transform",`translate(${S}, ${w})`),R+=T+50,P.length>0&&XMe(y,P,L,S,R,k,i,I,_,T,!1,t),S+=200*Math.max(P.length,1),R=w,L++}):(N=!1,XMe(y,v,L,S,R,k,i,I,_,T,!0,t));let A=y.node().getBBox();if(Z.debug("bounds",A),x&&y.append("text").text(x).attr("x",a==="neo"?A.x*2+f:A.width/2-f).attr("font-size","4ex").attr("font-weight","bold").attr("y",20),C=N?T+k+150:k+100,y.append("g").attr("class","lineWrapper").append("line").attr("x1",f).attr("y1",C).attr("x2",A.width+3*f).attr("y2",C).attr("stroke-width",4).attr("stroke","black").attr("marker-end",`url(#${t}-arrowhead)`),a==="neo"&&u&&s!=="neutral"){let D=y.select("defs"),B=(D.empty()?y.append("defs"):D).append("linearGradient").attr("id",y.attr("id")+"-gradient").attr("gradientUnits","objectBoundingBox").attr("x1","0%").attr("y1","0%").attr("x2","100%").attr("y2","0%");B.append("stop").attr("offset","0%").attr("stop-color",h).attr("stop-opacity",1),B.append("stop").attr("offset","100%").attr("stop-color",d).attr("stop-opacity",1)}ul(void 0,y,i.timeline?.padding??50,i.timeline?.useMaxWidth??!1)},"draw"),XMe=o(function(e,t,r,n,i,a,s,l,u,h,d,f){for(let p of t){let m={descr:p.task,section:r,number:r,width:150,padding:20,maxHeight:a};Z.debug("taskNode",m);let g=e.append("g").attr("class","taskWrapper"),v=fs.drawNode(g,m,r,s,f).height;if(Z.debug("taskHeight after draw",v),g.attr("transform",`translate(${n}, ${i})`),a=Math.max(a,v),p.events){let x=e.append("g").attr("class","lineWrapper"),b=a;i+=100,b=b+k_t(e,p.events,r,n,i,s,f),i-=100,x.append("line").attr("x1",n+190/2).attr("y1",i+a).attr("x2",n+190/2).attr("y2",i+a+100+u+100).attr("stroke-width",2).attr("stroke","black").attr("marker-end",`url(#${f}-arrowhead)`).attr("stroke-dasharray","5,5")}n=n+200,d&&!s.timeline?.disableMulticolor&&r++}i=i-10},"drawTasks"),k_t=o(function(e,t,r,n,i,a,s){let l=0,u=i;i=i+100;for(let h of t){let d={descr:h,section:r,number:r,width:150,padding:20,maxHeight:50};Z.debug("eventNode",d);let f=e.append("g").attr("class","eventWrapper"),m=fs.drawNode(f,d,r,a,s,!0).height;l=l+m,f.attr("transform",`translate(${n}, ${i})`),i=i+10+m}return i=u,l},"drawEvents"),KMe={setConf:o(()=>{},"setConf"),draw:w_t}});var WL,fd,S_t,KY,E_t,tNe,A_t,QMe,rNe,JMe,nNe,R_t,eNe,__t,iNe,aNe=F(()=>{"use strict";XY();vt();Xt();$n();Ka();Qt();WL=200,fd=5,S_t=WL+fd*2,KY=WL+100,E_t=KY+fd*2,tNe=10,A_t=0,QMe=20,rNe=20,JMe=30,nNe=50,R_t=o(function(e,t,r,n){let i=Ae(),a=i.timeline?.leftMargin??50;Z.debug("timeline",n.db);let s=xn(t);s.append("g");let l=n.db.getTasks(),u=n.db.getCommonDb().getDiagramTitle();Z.debug("task",l),fs.initGraphics(s);let h=n.db.getSections();Z.debug("sections",h);let d=0,f=0,p=50+a,m=50,g=m,y=p,v=S_t+rNe,x=E_t+nNe,b=y+v,T=0,k=h&&h.length>0,C=k?b:p+v,w=Math.max(50,v+x-fd*2);h.forEach(function(D){let P={number:T,descr:D,section:T,width:w,padding:fd,maxHeight:d},B=fs.getVirtualNodeHeight(s,P,i);Z.debug("sectionHeight before draw",B),d=Math.max(d,B)});let S=0;Z.debug("tasks.length",l.length);for(let[D,P]of l.entries()){let B={number:D,descr:P,section:P.section,width:WL,padding:fd,maxHeight:f},O=fs.getVirtualNodeHeight(s,B,i);Z.debug("taskHeight before draw",O),f=Math.max(f,O);let $=0;for(let V of P.events){let G={descr:V,section:P.section,number:P.section,width:KY,padding:fd,maxHeight:50};$+=fs.getVirtualNodeHeight(s,G,i)}P.events.length>0&&($+=(P.events.length-1)*tNe),S=Math.max(S,$)+A_t}Z.debug("maxSectionHeight before draw",d),Z.debug("maxTaskHeight before draw",f);let L=Math.max(f,S)+JMe;k?h.forEach(D=>{let P=l.filter(H=>H.section===D),B={number:T,descr:D,section:T,width:w,padding:fd,maxHeight:d};Z.debug("sectionNode",B);let O=s.append("g"),$=fs.drawNode(O,B,T,i);Z.debug("sectionNode output",$);let V=C-v;O.attr("transform",`translate(${V}, ${m})`);let G=m+$.height+QMe;P.length>0&&eNe(s,P,T,C,G,f,i,L,!1);let z=P.length,W=$.height+QMe+L*Math.max(z,1)-(z>0?JMe*2:0);m+=W,T++}):eNe(s,l,T,C,m,f,i,L,!0);let N=s.node()?.getBBox();if(!N)throw new Error("bbox not found");if(Z.debug("bounds",N),u){if(s.append("text").text(u).attr("x",N.width/2-a).attr("font-size","4ex").attr("font-weight","bold").attr("y",20),N=s.node()?.getBBox(),!N)throw new Error("bbox not found");Z.debug("bounds after title",N)}let[I]=As(i.fontSize),_=(I??16)*2,A=(I??16)*.5+20,M=s.append("g").attr("class","lineWrapper");M.append("line").attr("x1",C).attr("y1",g-_).attr("x2",C).attr("y2",N.y+N.height+A).attr("stroke-width",4).attr("stroke","black").attr("marker-end","url(#arrowhead)"),M.lower(),ul(void 0,s,i.timeline?.padding??50,i.timeline?.useMaxWidth??!1)},"draw"),eNe=o(function(e,t,r,n,i,a,s,l,u){for(let h of t){let d={descr:h.task,section:r,number:r,width:WL,padding:fd,maxHeight:a};Z.debug("taskNode",d);let f=e.append("g").attr("class","taskWrapper"),p=fs.drawNode(f,d,r,s),m=p.height;Z.debug("taskHeight after draw",m);let g=n-rNe-p.width;if(f.attr("transform",`translate(${g}, ${i})`),a=Math.max(a,m),h.events&&h.events.length>0){let y=i,v=n+nNe;__t(e,h.events,r,n,v,y,s)}i=i+l,u&&!s.timeline?.disableMulticolor&&r++}},"drawTasks"),__t=o(function(e,t,r,n,i,a,s){let l=a;for(let u of t){let h={descr:u,section:r,number:r,width:KY,padding:fd,maxHeight:0};Z.debug("eventNode",h);let d=e.append("g").attr("class","eventWrapper"),p=fs.drawNode(d,h,r,s).height;d.attr("transform",`translate(${i}, ${l})`);let m=e.append("g").attr("class","lineWrapper"),g=l+p/2;m.append("line").attr("x1",n).attr("y1",g).attr("x2",i).attr("y2",g).attr("stroke-width",2).attr("stroke","black").attr("marker-end","url(#arrowhead)").attr("stroke-dasharray","5,5"),l=l+p+tNe}return l-a},"drawEvents"),iNe={setConf:o(()=>{},"setConf"),draw:R_t}});var L_t,D_t,I_t,sNe,oNe=F(()=>{"use strict";zi();ur();L_t=o(e=>{let{theme:t}=_t(),r=t?.includes("dark"),n=t?.includes("color"),i=e.svgId?.replace(/^#/,"")??"",a=i?`url(#${i}-drop-shadow)`:e.dropShadow??"none",s="";for(let l=0;l<e.THEME_COLOR_LIMIT;l++){let u=`${17-3*l}`,h=n?e.borderColorArray[l]:e.mainBkg,d=n?e.borderColorArray[l]:e.nodeBorder;s+=`
     .section-${l-1} rect,
     .section-${l-1} path,
     .section-${l-1} circle {
-      fill: ${r&&i?e.mainBkg:h};
+      fill: ${r&&n?e.mainBkg:h};
       stroke: ${d};
       stroke-width: ${e.strokeWidth};
       filter: ${a};
@@ -2609,7 +2623,7 @@
     .disabled text {
       fill: ${e.clusterBorder??"#efefef"};
     }
-    `}return s},"genReduxSections"),awt=o(e=>{let t="";for(let r=0;r<e.THEME_COLOR_LIMIT;r++)e["lineColor"+r]=e["lineColor"+r]||e["cScaleInv"+r],ri(e["lineColor"+r])?e["lineColor"+r]=je(e["lineColor"+r],20):e["lineColor"+r]=Xe(e["lineColor"+r],20);for(let r=0;r<e.THEME_COLOR_LIMIT;r++){let i=""+(17-3*r);t+=`
+    `}return s},"genReduxSections"),D_t=o(e=>{let t="";for(let r=0;r<e.THEME_COLOR_LIMIT;r++)e["lineColor"+r]=e["lineColor"+r]||e["cScaleInv"+r],Tn(e["lineColor"+r])?e["lineColor"+r]=Qe(e["lineColor"+r],20):e["lineColor"+r]=Je(e["lineColor"+r],20);for(let r=0;r<e.THEME_COLOR_LIMIT;r++){let n=""+(17-3*r);t+=`
     .section-${r-1} rect, .section-${r-1} path, .section-${r-1} circle, .section-${r-1} path  {
       fill: ${e["cScale"+r]};
     }
@@ -2624,7 +2638,7 @@
       stroke: ${e["cScale"+r]};
     }
     .edge-depth-${r-1}{
-      stroke-width: ${i};
+      stroke-width: ${n};
     }
     .section-${r-1} line {
       stroke: ${e["cScaleInv"+r]} ;
@@ -2641,22 +2655,22 @@
     .disabled text {
       fill: ${e.clusterBorder??"#efefef"};
     }
-    `}return t},"genSections"),swt=o(e=>{let{theme:t}=Nt(),r=t?.includes("redux"),i=t==="neutral",n=e.svgId?.replace(/^#/,"")??"",a="";if(e.useGradient&&n&&e.THEME_COLOR_LIMIT&&!i)for(let s=0;s<e.THEME_COLOR_LIMIT;s++)a+=`
+    `}return t},"genSections"),I_t=o(e=>{let{theme:t}=_t(),r=t?.includes("redux"),n=t==="neutral",i=e.svgId?.replace(/^#/,"")??"",a="";if(e.useGradient&&i&&e.THEME_COLOR_LIMIT&&!n)for(let s=0;s<e.THEME_COLOR_LIMIT;s++)a+=`
       .section-${s-1}[data-look="neo"] rect,
       .section-${s-1}[data-look="neo"] path,
       .section-${s-1}[data-look="neo"] circle {
         fill: ${e.mainBkg};
-        stroke: url(#${n}-gradient);
+        stroke: url(#${i}-gradient);
         stroke-width: 2;
       }
       .section-${s-1}[data-look="neo"] line {
-        stroke: url(#${n}-gradient);
+        stroke: url(#${i}-gradient);
         stroke-width: 2;
       }`;return`
   .edge {
     stroke-width: 3;
   }
-  ${r?nwt(e):awt(e)}
+  ${r?L_t(e):D_t(e)}
   ${a}
   .section-root rect, .section-root path, .section-root circle  {
     fill: ${e.git0};
@@ -2676,34 +2690,34 @@
   .eventWrapper  {
    filter: brightness(120%);
   }
-`},"getStyles"),p7e=swt});var g7e={};xr(g7e,{diagram:()=>lwt});var owt,lwt,y7e=z(()=>{"use strict";$_e();Q_e();a7e();f7e();m7e();owt={setConf:o(()=>{},"setConf"),draw:o((e,t,r,i)=>(i?.db?.getDirection?.()??"LR")==="TD"?d7e.draw(e,t,r,i):n7e.draw(e,t,r,i),"draw")},lwt={db:HW,renderer:owt,parser:F_e,styles:p7e}});var ZW,b7e,T7e=z(()=>{"use strict";ZW=(function(){var e=o(function(w,C,k,E){for(k=k||{},E=w.length;E--;k[w[E]]=C);return k},"o"),t=[1,4],r=[1,13],i=[1,12],n=[1,15],a=[1,16],s=[1,20],l=[1,19],u=[6,7,8],h=[1,26],d=[1,24],f=[1,25],p=[6,7,11],m=[1,6,13,15,16,19,22],g=[1,33],y=[1,34],v=[1,6,7,11,13,15,16,19,22],x={trace:o(function(){},"trace"),yy:{},symbols_:{error:2,start:3,mindMap:4,spaceLines:5,SPACELINE:6,NL:7,MINDMAP:8,document:9,stop:10,EOF:11,statement:12,SPACELIST:13,node:14,ICON:15,CLASS:16,nodeWithId:17,nodeWithoutId:18,NODE_DSTART:19,NODE_DESCR:20,NODE_DEND:21,NODE_ID:22,$accept:0,$end:1},terminals_:{2:"error",6:"SPACELINE",7:"NL",8:"MINDMAP",11:"EOF",13:"SPACELIST",15:"ICON",16:"CLASS",19:"NODE_DSTART",20:"NODE_DESCR",21:"NODE_DEND",22:"NODE_ID"},productions_:[0,[3,1],[3,2],[5,1],[5,2],[5,2],[4,2],[4,3],[10,1],[10,1],[10,1],[10,2],[10,2],[9,3],[9,2],[12,2],[12,2],[12,2],[12,1],[12,1],[12,1],[12,1],[12,1],[14,1],[14,1],[18,3],[17,1],[17,4]],performAction:o(function(C,k,E,A,N,P,I){var D=P.length-1;switch(N){case 6:case 7:return A;case 8:A.getLogger().trace("Stop NL ");break;case 9:A.getLogger().trace("Stop EOF ");break;case 11:A.getLogger().trace("Stop NL2 ");break;case 12:A.getLogger().trace("Stop EOF2 ");break;case 15:A.getLogger().info("Node: ",P[D].id),A.addNode(P[D-1].length,P[D].id,P[D].descr,P[D].type);break;case 16:A.getLogger().trace("Icon: ",P[D]),A.decorateNode({icon:P[D]});break;case 17:case 21:A.decorateNode({class:P[D]});break;case 18:A.getLogger().trace("SPACELIST");break;case 19:A.getLogger().trace("Node: ",P[D].id),A.addNode(0,P[D].id,P[D].descr,P[D].type);break;case 20:A.decorateNode({icon:P[D]});break;case 25:A.getLogger().trace("node found ..",P[D-2]),this.$={id:P[D-1],descr:P[D-1],type:A.getType(P[D-2],P[D])};break;case 26:this.$={id:P[D],descr:P[D],type:A.nodeType.DEFAULT};break;case 27:A.getLogger().trace("node found ..",P[D-3]),this.$={id:P[D-3],descr:P[D-1],type:A.getType(P[D-2],P[D])};break}},"anonymous"),table:[{3:1,4:2,5:3,6:[1,5],8:t},{1:[3]},{1:[2,1]},{4:6,6:[1,7],7:[1,8],8:t},{6:r,7:[1,10],9:9,12:11,13:i,14:14,15:n,16:a,17:17,18:18,19:s,22:l},e(u,[2,3]),{1:[2,2]},e(u,[2,4]),e(u,[2,5]),{1:[2,6],6:r,12:21,13:i,14:14,15:n,16:a,17:17,18:18,19:s,22:l},{6:r,9:22,12:11,13:i,14:14,15:n,16:a,17:17,18:18,19:s,22:l},{6:h,7:d,10:23,11:f},e(p,[2,22],{17:17,18:18,14:27,15:[1,28],16:[1,29],19:s,22:l}),e(p,[2,18]),e(p,[2,19]),e(p,[2,20]),e(p,[2,21]),e(p,[2,23]),e(p,[2,24]),e(p,[2,26],{19:[1,30]}),{20:[1,31]},{6:h,7:d,10:32,11:f},{1:[2,7],6:r,12:21,13:i,14:14,15:n,16:a,17:17,18:18,19:s,22:l},e(m,[2,14],{7:g,11:y}),e(v,[2,8]),e(v,[2,9]),e(v,[2,10]),e(p,[2,15]),e(p,[2,16]),e(p,[2,17]),{20:[1,35]},{21:[1,36]},e(m,[2,13],{7:g,11:y}),e(v,[2,11]),e(v,[2,12]),{21:[1,37]},e(p,[2,25]),e(p,[2,27])],defaultActions:{2:[2,1],6:[2,2]},parseError:o(function(C,k){if(k.recoverable)this.trace(C);else{var E=new Error(C);throw E.hash=k,E}},"parseError"),parse:o(function(C){var k=this,E=[0],A=[],N=[null],P=[],I=this.table,D="",_=0,R=0,M=0,L=2,B=1,O=P.slice.call(arguments,1),$=Object.create(this.lexer),G={yy:{}};for(var F in this.yy)Object.prototype.hasOwnProperty.call(this.yy,F)&&(G.yy[F]=this.yy[F]);$.setInput(C,G.yy),G.yy.lexer=$,G.yy.parser=this,typeof $.yylloc>"u"&&($.yylloc={});var V=$.yylloc;P.push(V);var H=$.options&&$.options.ranges;typeof G.yy.parseError=="function"?this.parseError=G.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function j(we){E.length=E.length-2*we,N.length=N.length-we,P.length=P.length-we}o(j,"popStack");function U(){var we;return we=A.pop()||$.lex()||B,typeof we!="number"&&(we instanceof Array&&(A=we,we=A.pop()),we=k.symbols_[we]||we),we}o(U,"lex");for(var Q,Y,ae,J,te,re,ee={},Te,ue,De,Ie;;){if(ae=E[E.length-1],this.defaultActions[ae]?J=this.defaultActions[ae]:((Q===null||typeof Q>"u")&&(Q=U()),J=I[ae]&&I[ae][Q]),typeof J>"u"||!J.length||!J[0]){var Ee="";Ie=[];for(Te in I[ae])this.terminals_[Te]&&Te>L&&Ie.push("'"+this.terminals_[Te]+"'");$.showPosition?Ee="Parse error on line "+(_+1)+`:
+`},"getStyles"),sNe=I_t});var lNe={};ir(lNe,{diagram:()=>N_t});var M_t,N_t,cNe=F(()=>{"use strict";DMe();qMe();ZMe();aNe();oNe();M_t={setConf:o(()=>{},"setConf"),draw:o((e,t,r,n)=>(n?.db?.getDirection?.()??"LR")==="TD"?iNe.draw(e,t,r,n):KMe.draw(e,t,r,n),"draw")},N_t={db:UY,renderer:M_t,parser:LMe,styles:sNe}});var ZY,dNe,fNe=F(()=>{"use strict";ZY=(function(){var e=o(function(k,C,w,S){for(w=w||{},S=k.length;S--;w[k[S]]=C);return w},"o"),t=[1,4],r=[1,13],n=[1,12],i=[1,15],a=[1,16],s=[1,20],l=[1,19],u=[6,7,8],h=[1,26],d=[1,24],f=[1,25],p=[6,7,11],m=[1,6,13,15,16,19,22],g=[1,33],y=[1,34],v=[1,6,7,11,13,15,16,19,22],x={trace:o(function(){},"trace"),yy:{},symbols_:{error:2,start:3,mindMap:4,spaceLines:5,SPACELINE:6,NL:7,MINDMAP:8,document:9,stop:10,EOF:11,statement:12,SPACELIST:13,node:14,ICON:15,CLASS:16,nodeWithId:17,nodeWithoutId:18,NODE_DSTART:19,NODE_DESCR:20,NODE_DEND:21,NODE_ID:22,$accept:0,$end:1},terminals_:{2:"error",6:"SPACELINE",7:"NL",8:"MINDMAP",11:"EOF",13:"SPACELIST",15:"ICON",16:"CLASS",19:"NODE_DSTART",20:"NODE_DESCR",21:"NODE_DEND",22:"NODE_ID"},productions_:[0,[3,1],[3,2],[5,1],[5,2],[5,2],[4,2],[4,3],[10,1],[10,1],[10,1],[10,2],[10,2],[9,3],[9,2],[12,2],[12,2],[12,2],[12,1],[12,1],[12,1],[12,1],[12,1],[14,1],[14,1],[18,3],[17,1],[17,4]],performAction:o(function(C,w,S,R,L,N,I){var _=N.length-1;switch(L){case 6:case 7:return R;case 8:R.getLogger().trace("Stop NL ");break;case 9:R.getLogger().trace("Stop EOF ");break;case 11:R.getLogger().trace("Stop NL2 ");break;case 12:R.getLogger().trace("Stop EOF2 ");break;case 15:R.getLogger().info("Node: ",N[_].id),R.addNode(N[_-1].length,N[_].id,N[_].descr,N[_].type);break;case 16:R.getLogger().trace("Icon: ",N[_]),R.decorateNode({icon:N[_]});break;case 17:case 21:R.decorateNode({class:N[_]});break;case 18:R.getLogger().trace("SPACELIST");break;case 19:R.getLogger().trace("Node: ",N[_].id),R.addNode(0,N[_].id,N[_].descr,N[_].type);break;case 20:R.decorateNode({icon:N[_]});break;case 25:R.getLogger().trace("node found ..",N[_-2]),this.$={id:N[_-1],descr:N[_-1],type:R.getType(N[_-2],N[_])};break;case 26:this.$={id:N[_],descr:N[_],type:R.nodeType.DEFAULT};break;case 27:R.getLogger().trace("node found ..",N[_-3]),this.$={id:N[_-3],descr:N[_-1],type:R.getType(N[_-2],N[_])};break}},"anonymous"),table:[{3:1,4:2,5:3,6:[1,5],8:t},{1:[3]},{1:[2,1]},{4:6,6:[1,7],7:[1,8],8:t},{6:r,7:[1,10],9:9,12:11,13:n,14:14,15:i,16:a,17:17,18:18,19:s,22:l},e(u,[2,3]),{1:[2,2]},e(u,[2,4]),e(u,[2,5]),{1:[2,6],6:r,12:21,13:n,14:14,15:i,16:a,17:17,18:18,19:s,22:l},{6:r,9:22,12:11,13:n,14:14,15:i,16:a,17:17,18:18,19:s,22:l},{6:h,7:d,10:23,11:f},e(p,[2,22],{17:17,18:18,14:27,15:[1,28],16:[1,29],19:s,22:l}),e(p,[2,18]),e(p,[2,19]),e(p,[2,20]),e(p,[2,21]),e(p,[2,23]),e(p,[2,24]),e(p,[2,26],{19:[1,30]}),{20:[1,31]},{6:h,7:d,10:32,11:f},{1:[2,7],6:r,12:21,13:n,14:14,15:i,16:a,17:17,18:18,19:s,22:l},e(m,[2,14],{7:g,11:y}),e(v,[2,8]),e(v,[2,9]),e(v,[2,10]),e(p,[2,15]),e(p,[2,16]),e(p,[2,17]),{20:[1,35]},{21:[1,36]},e(m,[2,13],{7:g,11:y}),e(v,[2,11]),e(v,[2,12]),{21:[1,37]},e(p,[2,25]),e(p,[2,27])],defaultActions:{2:[2,1],6:[2,2]},parseError:o(function(C,w){if(w.recoverable)this.trace(C);else{var S=new Error(C);throw S.hash=w,S}},"parseError"),parse:o(function(C){var w=this,S=[0],R=[],L=[null],N=[],I=this.table,_="",A=0,M=0,D=0,P=2,B=1,O=N.slice.call(arguments,1),$=Object.create(this.lexer),V={yy:{}};for(var G in this.yy)Object.prototype.hasOwnProperty.call(this.yy,G)&&(V.yy[G]=this.yy[G]);$.setInput(C,V.yy),V.yy.lexer=$,V.yy.parser=this,typeof $.yylloc>"u"&&($.yylloc={});var z=$.yylloc;N.push(z);var W=$.options&&$.options.ranges;typeof V.yy.parseError=="function"?this.parseError=V.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function H(ue){S.length=S.length-2*ue,L.length=L.length-ue,N.length=N.length-ue}o(H,"popStack");function j(){var ue;return ue=R.pop()||$.lex()||B,typeof ue!="number"&&(ue instanceof Array&&(R=ue,ue=R.pop()),ue=w.symbols_[ue]||ue),ue}o(j,"lex");for(var Q,U,oe,te,le,ie,ae={},Re,be,Pe,Ge;;){if(oe=S[S.length-1],this.defaultActions[oe]?te=this.defaultActions[oe]:((Q===null||typeof Q>"u")&&(Q=j()),te=I[oe]&&I[oe][Q]),typeof te>"u"||!te.length||!te[0]){var Oe="";Ge=[];for(Re in I[oe])this.terminals_[Re]&&Re>P&&Ge.push("'"+this.terminals_[Re]+"'");$.showPosition?Oe="Parse error on line "+(A+1)+`:
 `+$.showPosition()+`
-Expecting `+Ie.join(", ")+", got '"+(this.terminals_[Q]||Q)+"'":Ee="Parse error on line "+(_+1)+": Unexpected "+(Q==B?"end of input":"'"+(this.terminals_[Q]||Q)+"'"),this.parseError(Ee,{text:$.match,token:this.terminals_[Q]||Q,line:$.yylineno,loc:V,expected:Ie})}if(J[0]instanceof Array&&J.length>1)throw new Error("Parse Error: multiple actions possible at state: "+ae+", token: "+Q);switch(J[0]){case 1:E.push(Q),N.push($.yytext),P.push($.yylloc),E.push(J[1]),Q=null,Y?(Q=Y,Y=null):(R=$.yyleng,D=$.yytext,_=$.yylineno,V=$.yylloc,M>0&&M--);break;case 2:if(ue=this.productions_[J[1]][1],ee.$=N[N.length-ue],ee._$={first_line:P[P.length-(ue||1)].first_line,last_line:P[P.length-1].last_line,first_column:P[P.length-(ue||1)].first_column,last_column:P[P.length-1].last_column},H&&(ee._$.range=[P[P.length-(ue||1)].range[0],P[P.length-1].range[1]]),re=this.performAction.apply(ee,[D,R,_,G.yy,J[1],N,P].concat(O)),typeof re<"u")return re;ue&&(E=E.slice(0,-1*ue*2),N=N.slice(0,-1*ue),P=P.slice(0,-1*ue)),E.push(this.productions_[J[1]][0]),N.push(ee.$),P.push(ee._$),De=I[E[E.length-2]][E[E.length-1]],E.push(De);break;case 3:return!0}}return!0},"parse")},b=(function(){var w={EOF:1,parseError:o(function(k,E){if(this.yy.parser)this.yy.parser.parseError(k,E);else throw new Error(k)},"parseError"),setInput:o(function(C,k){return this.yy=k||this.yy||{},this._input=C,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},"setInput"),input:o(function(){var C=this._input[0];this.yytext+=C,this.yyleng++,this.offset++,this.match+=C,this.matched+=C;var k=C.match(/(?:\r\n?|\n).*/g);return k?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),C},"input"),unput:o(function(C){var k=C.length,E=C.split(/(?:\r\n?|\n)/g);this._input=C+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-k),this.offset-=k;var A=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),E.length-1&&(this.yylineno-=E.length-1);var N=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:E?(E.length===A.length?this.yylloc.first_column:0)+A[A.length-E.length].length-E[0].length:this.yylloc.first_column-k},this.options.ranges&&(this.yylloc.range=[N[0],N[0]+this.yyleng-k]),this.yyleng=this.yytext.length,this},"unput"),more:o(function(){return this._more=!0,this},"more"),reject:o(function(){if(this.options.backtrack_lexer)this._backtrack=!0;else return this.parseError("Lexical error on line "+(this.yylineno+1)+`. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).
-`+this.showPosition(),{text:"",token:null,line:this.yylineno});return this},"reject"),less:o(function(C){this.unput(this.match.slice(C))},"less"),pastInput:o(function(){var C=this.matched.substr(0,this.matched.length-this.match.length);return(C.length>20?"...":"")+C.substr(-20).replace(/\n/g,"")},"pastInput"),upcomingInput:o(function(){var C=this.match;return C.length<20&&(C+=this._input.substr(0,20-C.length)),(C.substr(0,20)+(C.length>20?"...":"")).replace(/\n/g,"")},"upcomingInput"),showPosition:o(function(){var C=this.pastInput(),k=new Array(C.length+1).join("-");return C+this.upcomingInput()+`
-`+k+"^"},"showPosition"),test_match:o(function(C,k){var E,A,N;if(this.options.backtrack_lexer&&(N={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(N.yylloc.range=this.yylloc.range.slice(0))),A=C[0].match(/(?:\r\n?|\n).*/g),A&&(this.yylineno+=A.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:A?A[A.length-1].length-A[A.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+C[0].length},this.yytext+=C[0],this.match+=C[0],this.matches=C,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(C[0].length),this.matched+=C[0],E=this.performAction.call(this,this.yy,this,k,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),E)return E;if(this._backtrack){for(var P in N)this[P]=N[P];return!1}return!1},"test_match"),next:o(function(){if(this.done)return this.EOF;this._input||(this.done=!0);var C,k,E,A;this._more||(this.yytext="",this.match="");for(var N=this._currentRules(),P=0;P<N.length;P++)if(E=this._input.match(this.rules[N[P]]),E&&(!k||E[0].length>k[0].length)){if(k=E,A=P,this.options.backtrack_lexer){if(C=this.test_match(E,N[P]),C!==!1)return C;if(this._backtrack){k=!1;continue}else return!1}else if(!this.options.flex)break}return k?(C=this.test_match(k,N[A]),C!==!1?C:!1):this._input===""?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+`. Unrecognized text.
-`+this.showPosition(),{text:"",token:null,line:this.yylineno})},"next"),lex:o(function(){var k=this.next();return k||this.lex()},"lex"),begin:o(function(k){this.conditionStack.push(k)},"begin"),popState:o(function(){var k=this.conditionStack.length-1;return k>0?this.conditionStack.pop():this.conditionStack[0]},"popState"),_currentRules:o(function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},"_currentRules"),topState:o(function(k){return k=this.conditionStack.length-1-Math.abs(k||0),k>=0?this.conditionStack[k]:"INITIAL"},"topState"),pushState:o(function(k){this.begin(k)},"pushState"),stateStackSize:o(function(){return this.conditionStack.length},"stateStackSize"),options:{"case-insensitive":!0},performAction:o(function(k,E,A,N){var P=N;switch(A){case 0:return k.getLogger().trace("Found comment",E.yytext),6;break;case 1:return 8;case 2:this.begin("CLASS");break;case 3:return this.popState(),16;break;case 4:this.popState();break;case 5:k.getLogger().trace("Begin icon"),this.begin("ICON");break;case 6:return k.getLogger().trace("SPACELINE"),6;break;case 7:return 7;case 8:return 15;case 9:k.getLogger().trace("end icon"),this.popState();break;case 10:return k.getLogger().trace("Exploding node"),this.begin("NODE"),19;break;case 11:return k.getLogger().trace("Cloud"),this.begin("NODE"),19;break;case 12:return k.getLogger().trace("Explosion Bang"),this.begin("NODE"),19;break;case 13:return k.getLogger().trace("Cloud Bang"),this.begin("NODE"),19;break;case 14:return this.begin("NODE"),19;break;case 15:return this.begin("NODE"),19;break;case 16:return this.begin("NODE"),19;break;case 17:return this.begin("NODE"),19;break;case 18:return 13;case 19:return 22;case 20:return 11;case 21:this.begin("NSTR2");break;case 22:return"NODE_DESCR";case 23:this.popState();break;case 24:k.getLogger().trace("Starting NSTR"),this.begin("NSTR");break;case 25:return k.getLogger().trace("description:",E.yytext),"NODE_DESCR";break;case 26:this.popState();break;case 27:return this.popState(),k.getLogger().trace("node end ))"),"NODE_DEND";break;case 28:return this.popState(),k.getLogger().trace("node end )"),"NODE_DEND";break;case 29:return this.popState(),k.getLogger().trace("node end ...",E.yytext),"NODE_DEND";break;case 30:return this.popState(),k.getLogger().trace("node end (("),"NODE_DEND";break;case 31:return this.popState(),k.getLogger().trace("node end (-"),"NODE_DEND";break;case 32:return this.popState(),k.getLogger().trace("node end (-"),"NODE_DEND";break;case 33:return this.popState(),k.getLogger().trace("node end (("),"NODE_DEND";break;case 34:return this.popState(),k.getLogger().trace("node end (("),"NODE_DEND";break;case 35:return k.getLogger().trace("Long description:",E.yytext),20;break;case 36:return k.getLogger().trace("Long description:",E.yytext),20;break}},"anonymous"),rules:[/^(?:\s*%%.*)/i,/^(?:mindmap\b)/i,/^(?::::)/i,/^(?:.+)/i,/^(?:\n)/i,/^(?:::icon\()/i,/^(?:[\s]+[\n])/i,/^(?:[\n]+)/i,/^(?:[^\)]+)/i,/^(?:\))/i,/^(?:-\))/i,/^(?:\(-)/i,/^(?:\)\))/i,/^(?:\))/i,/^(?:\(\()/i,/^(?:\{\{)/i,/^(?:\()/i,/^(?:\[)/i,/^(?:[\s]+)/i,/^(?:[^\(\[\n\)\{\}]+)/i,/^(?:$)/i,/^(?:["][`])/i,/^(?:[^`"]+)/i,/^(?:[`]["])/i,/^(?:["])/i,/^(?:[^"]+)/i,/^(?:["])/i,/^(?:[\)]\))/i,/^(?:[\)])/i,/^(?:[\]])/i,/^(?:\}\})/i,/^(?:\(-)/i,/^(?:-\))/i,/^(?:\(\()/i,/^(?:\()/i,/^(?:[^\)\]\(\}]+)/i,/^(?:.+(?!\(\())/i],conditions:{CLASS:{rules:[3,4],inclusive:!1},ICON:{rules:[8,9],inclusive:!1},NSTR2:{rules:[22,23],inclusive:!1},NSTR:{rules:[25,26],inclusive:!1},NODE:{rules:[21,24,27,28,29,30,31,32,33,34,35,36],inclusive:!1},INITIAL:{rules:[0,1,2,5,6,7,10,11,12,13,14,15,16,17,18,19,20],inclusive:!0}}};return w})();x.lexer=b;function T(){this.yy={}}return o(T,"Parser"),T.prototype=x,x.Parser=T,new T})();ZW.parser=ZW;b7e=ZW});function C7e(e,t=0){return(Sa[e[t+0]]+Sa[e[t+1]]+Sa[e[t+2]]+Sa[e[t+3]]+"-"+Sa[e[t+4]]+Sa[e[t+5]]+"-"+Sa[e[t+6]]+Sa[e[t+7]]+"-"+Sa[e[t+8]]+Sa[e[t+9]]+"-"+Sa[e[t+10]]+Sa[e[t+11]]+Sa[e[t+12]]+Sa[e[t+13]]+Sa[e[t+14]]+Sa[e[t+15]]).toLowerCase()}var Sa,k7e=z(()=>{"use strict";Sa=[];for(let e=0;e<256;++e)Sa.push((e+256).toString(16).slice(1));o(C7e,"unsafeStringify")});function QW(){return crypto.getRandomValues(dwt)}var dwt,w7e=z(()=>{"use strict";dwt=new Uint8Array(16);o(QW,"rng")});function fwt(e,t,r){return!t&&!e&&crypto.randomUUID?crypto.randomUUID():pwt(e,t,r)}function pwt(e,t,r){e=e||{};let i=e.random??e.rng?.()??QW();if(i.length<16)throw new Error("Random bytes length must be >= 16");if(i[6]=i[6]&15|64,i[8]=i[8]&63|128,t){if(r=r||0,r<0||r+16>t.length)throw new RangeError(`UUID byte range ${r}:${r+15} is out of buffer bounds`);for(let n=0;n<16;++n)t[r+n]=i[n];return t}return C7e(i)}var JW,S7e=z(()=>{"use strict";w7e();k7e();o(fwt,"v4");o(pwt,"_v4");JW=fwt});var E7e=z(()=>{"use strict";S7e()});var A7e,_7e=z(()=>{"use strict";_s();Xt();A7e=12});var Dh,d_,D7e=z(()=>{"use strict";Ut();E7e();Ir();St();Bn();br();_7e();Dh={DEFAULT:0,NO_BORDER:0,ROUNDED_RECT:1,RECT:2,CIRCLE:3,CLOUD:4,BANG:5,HEXAGON:6},d_=class{constructor(){this.nodes=[];this.count=0;this.elements={};this.getLogger=this.getLogger.bind(this),this.nodeType=Dh,this.clear(),this.getType=this.getType.bind(this),this.getElementById=this.getElementById.bind(this),this.getParent=this.getParent.bind(this),this.getMindmap=this.getMindmap.bind(this),this.addNode=this.addNode.bind(this),this.decorateNode=this.decorateNode.bind(this)}static{o(this,"MindmapDB")}clear(){this.nodes=[],this.count=0,this.elements={},this.baseLevel=void 0}getParent(t){for(let r=this.nodes.length-1;r>=0;r--)if(this.nodes[r].level<t)return this.nodes[r];return null}getMindmap(){return this.nodes.length>0?this.nodes[0]:null}addNode(t,r,i,n){Z.info("addNode",t,r,i,n);let a=!1;this.nodes.length===0?(this.baseLevel=t,t=0,a=!0):this.baseLevel!==void 0&&(t=t-this.baseLevel,a=!1);let s=ge(),l=s.mindmap?.padding??or.mindmap.padding;switch(n){case this.nodeType.ROUNDED_RECT:case this.nodeType.RECT:case this.nodeType.HEXAGON:l*=2;break}let u={id:this.count++,nodeId:fr(r,s),level:t,descr:fr(i,s),type:n,children:[],width:s.mindmap?.maxNodeWidth??or.mindmap.maxNodeWidth,padding:l,isRoot:a},h=this.getParent(t);if(h)h.children.push(u),this.nodes.push(u);else if(a)this.nodes.push(u);else throw new Error(`There can be only one root. No parent could be found for ("${u.descr}")`)}getType(t,r){switch(Z.debug("In get type",t,r),t){case"[":return this.nodeType.RECT;case"(":return r===")"?this.nodeType.ROUNDED_RECT:this.nodeType.CLOUD;case"((":return this.nodeType.CIRCLE;case")":return this.nodeType.CLOUD;case"))":return this.nodeType.BANG;case"{{":return this.nodeType.HEXAGON;default:return this.nodeType.DEFAULT}}setElementForId(t,r){this.elements[t]=r}getElementById(t){return this.elements[t]}decorateNode(t){if(!t)return;let r=ge(),i=this.nodes[this.nodes.length-1];t.icon&&(i.icon=fr(t.icon,r)),t.class&&(i.class=fr(t.class,r))}type2Str(t){switch(t){case this.nodeType.DEFAULT:return"no-border";case this.nodeType.RECT:return"rect";case this.nodeType.ROUNDED_RECT:return"rounded-rect";case this.nodeType.CIRCLE:return"circle";case this.nodeType.CLOUD:return"cloud";case this.nodeType.BANG:return"bang";case this.nodeType.HEXAGON:return"hexgon";default:return"no-border"}}assignSections(t,r){if(t.level===0?t.section=void 0:t.section=r,t.children)for(let[i,n]of t.children.entries()){let a=t.level===0?i%(A7e-1):r;this.assignSections(n,a)}}flattenNodes(t,r){let i=ge(),n=["mindmap-node"];t.isRoot===!0?n.push("section-root","section--1"):t.section!==void 0&&n.push(`section-${t.section}`),t.class&&n.push(t.class);let a=n.join(" "),s=o(u=>{let d=(i.theme?.toLowerCase()??"").includes("redux");switch(u){case Dh.CIRCLE:return"mindmapCircle";case Dh.RECT:return"rect";case Dh.ROUNDED_RECT:return"rounded";case Dh.CLOUD:return"cloud";case Dh.BANG:return"bang";case Dh.HEXAGON:return"hexagon";case Dh.DEFAULT:return d?"rounded":"defaultMindmapNode";case Dh.NO_BORDER:default:return"rect"}},"getShapeFromType"),l={id:t.id.toString(),domId:"node_"+t.id.toString(),label:t.descr,labelType:"markdown",isGroup:!1,shape:s(t.type),width:t.width,height:t.height??0,padding:t.padding,cssClasses:a,cssStyles:[],look:i.look,icon:t.icon,x:t.x,y:t.y,level:t.level,nodeId:t.nodeId,type:t.type,section:t.section};if(r.push(l),t.children)for(let u of t.children)this.flattenNodes(u,r)}generateEdges(t,r){if(!t.children)return;let i=ge();for(let n of t.children){let a="edge";n.section!==void 0&&(a+=` section-edge-${n.section}`);let s=t.level+1;a+=` edge-depth-${s}`;let l={id:`edge_${t.id}_${n.id}`,start:t.id.toString(),end:n.id.toString(),type:"normal",curve:"basis",thickness:"normal",look:i.look,classes:a,depth:t.level,section:n.section};r.push(l),this.generateEdges(n,r)}}getData(){let t=this.getMindmap(),r=ge(),n=JH().layout!==void 0,a=r;if(n||(a.layout="cose-bilkent"),!t)return{nodes:[],edges:[],config:a};Z.debug("getData: mindmapRoot",t,r),this.assignSections(t);let s=[],l=[];this.flattenNodes(t,s),this.generateEdges(t,l),Z.debug(`getData: processed ${s.length} nodes and ${l.length} edges`);let u=new Map;for(let h of s)u.set(h.id,{shape:h.shape,width:h.width,height:h.height,padding:h.padding});return{nodes:s,edges:l,config:a,rootNode:t,markers:["point"],direction:"TB",nodeSpacing:50,rankSpacing:50,shapes:Object.fromEntries(u),type:"mindmap",diagramId:"mindmap-"+JW()}}getLogger(){return Z}}});var mwt,R7e,L7e=z(()=>{"use strict";St();Lp();tf();rf();Bn();br();mwt=o(async(e,t,r,i)=>{Z.debug(`Rendering mindmap diagram
-`+e);let n=i.db,a=n.getData(),s=Fo(t,a.config.securityLevel);if(a.type=i.type,a.layoutAlgorithm=Gc(a.config.layout,{fallback:"cose-bilkent"}),a.diagramId=t,!n.getMindmap())return;a.nodes.forEach(p=>{p.shape==="rounded"?(p.radius=15,p.taper=15,p.stroke="none",p.width=0,p.padding=15):p.shape==="circle"?p.padding=10:p.shape==="rect"?(p.width=0,p.padding=10):p.shape==="hexagon"&&(p.width=0,p.height=0)}),await Zo(a,s);let{themeVariables:u}=Nt(),{useGradient:h,gradientStart:d,gradientStop:f}=u;if(h&&d&&f){let p=s.attr("id"),m=s.append("defs").append("linearGradient").attr("id",`${p}-gradient`).attr("gradientUnits","objectBoundingBox").attr("x1","0%").attr("y1","0%").attr("x2","100%").attr("y2","0%");m.append("stop").attr("offset","0%").attr("stop-color",d).attr("stop-opacity",1),m.append("stop").attr("offset","100%").attr("stop-color",f).attr("stop-opacity",1)}$s(s,a.config.mindmap?.padding??or.mindmap.padding,"mindmapDiagram",a.config.mindmap?.useMaxWidth??or.mindmap.useMaxWidth)},"draw"),R7e={draw:mwt}});var gwt,ywt,vwt,M7e,N7e=z(()=>{"use strict";Cn();gwt=o(e=>{let{theme:t,look:r}=e,i="";for(let n=0;n<e.THEME_COLOR_LIMIT;n++)e["lineColor"+n]=e["lineColor"+n]||e["cScaleInv"+n],ri(e["lineColor"+n])?e["lineColor"+n]=je(e["lineColor"+n],20):e["lineColor"+n]=Xe(e["lineColor"+n],20);for(let n=0;n<e.THEME_COLOR_LIMIT;n++){let a=""+(r==="neo"?Math.max(10-(n-1)*2,2):17-3*n);i+=`
-    .section-${n-1} rect, .section-${n-1} path, .section-${n-1} circle, .section-${n-1} polygon, .section-${n-1} path  {
-      fill: ${e["cScale"+n]};
+Expecting `+Ge.join(", ")+", got '"+(this.terminals_[Q]||Q)+"'":Oe="Parse error on line "+(A+1)+": Unexpected "+(Q==B?"end of input":"'"+(this.terminals_[Q]||Q)+"'"),this.parseError(Oe,{text:$.match,token:this.terminals_[Q]||Q,line:$.yylineno,loc:z,expected:Ge})}if(te[0]instanceof Array&&te.length>1)throw new Error("Parse Error: multiple actions possible at state: "+oe+", token: "+Q);switch(te[0]){case 1:S.push(Q),L.push($.yytext),N.push($.yylloc),S.push(te[1]),Q=null,U?(Q=U,U=null):(M=$.yyleng,_=$.yytext,A=$.yylineno,z=$.yylloc,D>0&&D--);break;case 2:if(be=this.productions_[te[1]][1],ae.$=L[L.length-be],ae._$={first_line:N[N.length-(be||1)].first_line,last_line:N[N.length-1].last_line,first_column:N[N.length-(be||1)].first_column,last_column:N[N.length-1].last_column},W&&(ae._$.range=[N[N.length-(be||1)].range[0],N[N.length-1].range[1]]),ie=this.performAction.apply(ae,[_,M,A,V.yy,te[1],L,N].concat(O)),typeof ie<"u")return ie;be&&(S=S.slice(0,-1*be*2),L=L.slice(0,-1*be),N=N.slice(0,-1*be)),S.push(this.productions_[te[1]][0]),L.push(ae.$),N.push(ae._$),Pe=I[S[S.length-2]][S[S.length-1]],S.push(Pe);break;case 3:return!0}}return!0},"parse")},b=(function(){var k={EOF:1,parseError:o(function(w,S){if(this.yy.parser)this.yy.parser.parseError(w,S);else throw new Error(w)},"parseError"),setInput:o(function(C,w){return this.yy=w||this.yy||{},this._input=C,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},"setInput"),input:o(function(){var C=this._input[0];this.yytext+=C,this.yyleng++,this.offset++,this.match+=C,this.matched+=C;var w=C.match(/(?:\r\n?|\n).*/g);return w?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),C},"input"),unput:o(function(C){var w=C.length,S=C.split(/(?:\r\n?|\n)/g);this._input=C+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-w),this.offset-=w;var R=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),S.length-1&&(this.yylineno-=S.length-1);var L=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:S?(S.length===R.length?this.yylloc.first_column:0)+R[R.length-S.length].length-S[0].length:this.yylloc.first_column-w},this.options.ranges&&(this.yylloc.range=[L[0],L[0]+this.yyleng-w]),this.yyleng=this.yytext.length,this},"unput"),more:o(function(){return this._more=!0,this},"more"),reject:o(function(){if(this.options.backtrack_lexer)this._backtrack=!0;else return this.parseError("Lexical error on line "+(this.yylineno+1)+`. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).
+`+this.showPosition(),{text:"",token:null,line:this.yylineno});return this},"reject"),less:o(function(C){this.unput(this.match.slice(C))},"less"),pastInput:o(function(){var C=this.matched.substr(0,this.matched.length-this.match.length);return(C.length>20?"...":"")+C.substr(-20).replace(/\n/g,"")},"pastInput"),upcomingInput:o(function(){var C=this.match;return C.length<20&&(C+=this._input.substr(0,20-C.length)),(C.substr(0,20)+(C.length>20?"...":"")).replace(/\n/g,"")},"upcomingInput"),showPosition:o(function(){var C=this.pastInput(),w=new Array(C.length+1).join("-");return C+this.upcomingInput()+`
+`+w+"^"},"showPosition"),test_match:o(function(C,w){var S,R,L;if(this.options.backtrack_lexer&&(L={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(L.yylloc.range=this.yylloc.range.slice(0))),R=C[0].match(/(?:\r\n?|\n).*/g),R&&(this.yylineno+=R.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:R?R[R.length-1].length-R[R.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+C[0].length},this.yytext+=C[0],this.match+=C[0],this.matches=C,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(C[0].length),this.matched+=C[0],S=this.performAction.call(this,this.yy,this,w,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),S)return S;if(this._backtrack){for(var N in L)this[N]=L[N];return!1}return!1},"test_match"),next:o(function(){if(this.done)return this.EOF;this._input||(this.done=!0);var C,w,S,R;this._more||(this.yytext="",this.match="");for(var L=this._currentRules(),N=0;N<L.length;N++)if(S=this._input.match(this.rules[L[N]]),S&&(!w||S[0].length>w[0].length)){if(w=S,R=N,this.options.backtrack_lexer){if(C=this.test_match(S,L[N]),C!==!1)return C;if(this._backtrack){w=!1;continue}else return!1}else if(!this.options.flex)break}return w?(C=this.test_match(w,L[R]),C!==!1?C:!1):this._input===""?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+`. Unrecognized text.
+`+this.showPosition(),{text:"",token:null,line:this.yylineno})},"next"),lex:o(function(){var w=this.next();return w||this.lex()},"lex"),begin:o(function(w){this.conditionStack.push(w)},"begin"),popState:o(function(){var w=this.conditionStack.length-1;return w>0?this.conditionStack.pop():this.conditionStack[0]},"popState"),_currentRules:o(function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},"_currentRules"),topState:o(function(w){return w=this.conditionStack.length-1-Math.abs(w||0),w>=0?this.conditionStack[w]:"INITIAL"},"topState"),pushState:o(function(w){this.begin(w)},"pushState"),stateStackSize:o(function(){return this.conditionStack.length},"stateStackSize"),options:{"case-insensitive":!0},performAction:o(function(w,S,R,L){var N=L;switch(R){case 0:return w.getLogger().trace("Found comment",S.yytext),6;break;case 1:return 8;case 2:this.begin("CLASS");break;case 3:return this.popState(),16;break;case 4:this.popState();break;case 5:w.getLogger().trace("Begin icon"),this.begin("ICON");break;case 6:return w.getLogger().trace("SPACELINE"),6;break;case 7:return 7;case 8:return 15;case 9:w.getLogger().trace("end icon"),this.popState();break;case 10:return w.getLogger().trace("Exploding node"),this.begin("NODE"),19;break;case 11:return w.getLogger().trace("Cloud"),this.begin("NODE"),19;break;case 12:return w.getLogger().trace("Explosion Bang"),this.begin("NODE"),19;break;case 13:return w.getLogger().trace("Cloud Bang"),this.begin("NODE"),19;break;case 14:return this.begin("NODE"),19;break;case 15:return this.begin("NODE"),19;break;case 16:return this.begin("NODE"),19;break;case 17:return this.begin("NODE"),19;break;case 18:return 13;case 19:return 22;case 20:return 11;case 21:this.begin("NSTR2");break;case 22:return"NODE_DESCR";case 23:this.popState();break;case 24:w.getLogger().trace("Starting NSTR"),this.begin("NSTR");break;case 25:return w.getLogger().trace("description:",S.yytext),"NODE_DESCR";break;case 26:this.popState();break;case 27:return this.popState(),w.getLogger().trace("node end ))"),"NODE_DEND";break;case 28:return this.popState(),w.getLogger().trace("node end )"),"NODE_DEND";break;case 29:return this.popState(),w.getLogger().trace("node end ...",S.yytext),"NODE_DEND";break;case 30:return this.popState(),w.getLogger().trace("node end (("),"NODE_DEND";break;case 31:return this.popState(),w.getLogger().trace("node end (-"),"NODE_DEND";break;case 32:return this.popState(),w.getLogger().trace("node end (-"),"NODE_DEND";break;case 33:return this.popState(),w.getLogger().trace("node end (("),"NODE_DEND";break;case 34:return this.popState(),w.getLogger().trace("node end (("),"NODE_DEND";break;case 35:return w.getLogger().trace("Long description:",S.yytext),20;break;case 36:return w.getLogger().trace("Long description:",S.yytext),20;break}},"anonymous"),rules:[/^(?:\s*%%.*)/i,/^(?:mindmap\b)/i,/^(?::::)/i,/^(?:.+)/i,/^(?:\n)/i,/^(?:::icon\()/i,/^(?:[\s]+[\n])/i,/^(?:[\n]+)/i,/^(?:[^\)]+)/i,/^(?:\))/i,/^(?:-\))/i,/^(?:\(-)/i,/^(?:\)\))/i,/^(?:\))/i,/^(?:\(\()/i,/^(?:\{\{)/i,/^(?:\()/i,/^(?:\[)/i,/^(?:[\s]+)/i,/^(?:[^\(\[\n\)\{\}]+)/i,/^(?:$)/i,/^(?:["][`])/i,/^(?:[^`"]+)/i,/^(?:[`]["])/i,/^(?:["])/i,/^(?:[^"]+)/i,/^(?:["])/i,/^(?:[\)]\))/i,/^(?:[\)])/i,/^(?:[\]])/i,/^(?:\}\})/i,/^(?:\(-)/i,/^(?:-\))/i,/^(?:\(\()/i,/^(?:\()/i,/^(?:[^\)\]\(\}]+)/i,/^(?:.+(?!\(\())/i],conditions:{CLASS:{rules:[3,4],inclusive:!1},ICON:{rules:[8,9],inclusive:!1},NSTR2:{rules:[22,23],inclusive:!1},NSTR:{rules:[25,26],inclusive:!1},NODE:{rules:[21,24,27,28,29,30,31,32,33,34,35,36],inclusive:!1},INITIAL:{rules:[0,1,2,5,6,7,10,11,12,13,14,15,16,17,18,19,20],inclusive:!0}}};return k})();x.lexer=b;function T(){this.yy={}}return o(T,"Parser"),T.prototype=x,x.Parser=T,new T})();ZY.parser=ZY;dNe=ZY});function pNe(e,t=0){return(Qa[e[t+0]]+Qa[e[t+1]]+Qa[e[t+2]]+Qa[e[t+3]]+"-"+Qa[e[t+4]]+Qa[e[t+5]]+"-"+Qa[e[t+6]]+Qa[e[t+7]]+"-"+Qa[e[t+8]]+Qa[e[t+9]]+"-"+Qa[e[t+10]]+Qa[e[t+11]]+Qa[e[t+12]]+Qa[e[t+13]]+Qa[e[t+14]]+Qa[e[t+15]]).toLowerCase()}var Qa,mNe=F(()=>{"use strict";Qa=[];for(let e=0;e<256;++e)Qa.push((e+256).toString(16).slice(1));o(pNe,"unsafeStringify")});function QY(){return crypto.getRandomValues($_t)}var $_t,gNe=F(()=>{"use strict";$_t=new Uint8Array(16);o(QY,"rng")});function F_t(e,t,r){return!t&&!e&&crypto.randomUUID?crypto.randomUUID():z_t(e,t,r)}function z_t(e,t,r){e=e||{};let n=e.random??e.rng?.()??QY();if(n.length<16)throw new Error("Random bytes length must be >= 16");if(n[6]=n[6]&15|64,n[8]=n[8]&63|128,t){if(r=r||0,r<0||r+16>t.length)throw new RangeError(`UUID byte range ${r}:${r+15} is out of buffer bounds`);for(let i=0;i<16;++i)t[r+i]=n[i];return t}return pNe(n)}var JY,yNe=F(()=>{"use strict";gNe();mNe();o(F_t,"v4");o(z_t,"_v4");JY=F_t});var vNe=F(()=>{"use strict";yNe()});var xNe,bNe=F(()=>{"use strict";Ls();Qt();xNe=12});var pd,qL,TNe=F(()=>{"use strict";Xt();vNe();Vr();vt();Wi();ur();bNe();pd={DEFAULT:0,NO_BORDER:0,ROUNDED_RECT:1,RECT:2,CIRCLE:3,CLOUD:4,BANG:5,HEXAGON:6},qL=class{constructor(){this.nodes=[];this.count=0;this.elements={};this.getLogger=this.getLogger.bind(this),this.nodeType=pd,this.clear(),this.getType=this.getType.bind(this),this.getElementById=this.getElementById.bind(this),this.getParent=this.getParent.bind(this),this.getMindmap=this.getMindmap.bind(this),this.addNode=this.addNode.bind(this),this.decorateNode=this.decorateNode.bind(this)}static{o(this,"MindmapDB")}clear(){this.nodes=[],this.count=0,this.elements={},this.baseLevel=void 0}getParent(t){for(let r=this.nodes.length-1;r>=0;r--)if(this.nodes[r].level<t)return this.nodes[r];return null}getMindmap(){return this.nodes.length>0?this.nodes[0]:null}addNode(t,r,n,i){Z.info("addNode",t,r,n,i);let a=!1;this.nodes.length===0?(this.baseLevel=t,t=0,a=!0):this.baseLevel!==void 0&&(t=t-this.baseLevel,a=!1);let s=Ae(),l=s.mindmap?.padding??cr.mindmap.padding;switch(i){case this.nodeType.ROUNDED_RECT:case this.nodeType.RECT:case this.nodeType.HEXAGON:l*=2;break}let u={id:this.count++,nodeId:mr(r,s),level:t,descr:mr(n,s),type:i,children:[],width:s.mindmap?.maxNodeWidth??cr.mindmap.maxNodeWidth,padding:l,isRoot:a},h=this.getParent(t);if(h)h.children.push(u),this.nodes.push(u);else if(a)this.nodes.push(u);else throw new Error(`There can be only one root. No parent could be found for ("${u.descr}")`)}getType(t,r){switch(Z.debug("In get type",t,r),t){case"[":return this.nodeType.RECT;case"(":return r===")"?this.nodeType.ROUNDED_RECT:this.nodeType.CLOUD;case"((":return this.nodeType.CIRCLE;case")":return this.nodeType.CLOUD;case"))":return this.nodeType.BANG;case"{{":return this.nodeType.HEXAGON;default:return this.nodeType.DEFAULT}}setElementForId(t,r){this.elements[t]=r}getElementById(t){return this.elements[t]}decorateNode(t){if(!t)return;let r=Ae(),n=this.nodes[this.nodes.length-1];t.icon&&(n.icon=mr(t.icon,r)),t.class&&(n.class=mr(t.class,r))}type2Str(t){switch(t){case this.nodeType.DEFAULT:return"no-border";case this.nodeType.RECT:return"rect";case this.nodeType.ROUNDED_RECT:return"rounded-rect";case this.nodeType.CIRCLE:return"circle";case this.nodeType.CLOUD:return"cloud";case this.nodeType.BANG:return"bang";case this.nodeType.HEXAGON:return"hexgon";default:return"no-border"}}assignSections(t,r){if(t.level===0?t.section=void 0:t.section=r,t.children)for(let[n,i]of t.children.entries()){let a=t.level===0?n%(xNe-1):r;this.assignSections(i,a)}}flattenNodes(t,r){let n=Ae(),i=["mindmap-node"];t.isRoot===!0?i.push("section-root","section--1"):t.section!==void 0&&i.push(`section-${t.section}`),t.class&&i.push(t.class);let a=i.join(" "),s=o(u=>{let d=(n.theme?.toLowerCase()??"").includes("redux");switch(u){case pd.CIRCLE:return"mindmapCircle";case pd.RECT:return"rect";case pd.ROUNDED_RECT:return"rounded";case pd.CLOUD:return"cloud";case pd.BANG:return"bang";case pd.HEXAGON:return"hexagon";case pd.DEFAULT:return d?"rounded":"defaultMindmapNode";case pd.NO_BORDER:default:return"rect"}},"getShapeFromType"),l={id:t.id.toString(),domId:"node_"+t.id.toString(),label:t.descr,labelType:"markdown",isGroup:!1,shape:s(t.type),width:t.width,height:t.height??0,padding:t.padding,cssClasses:a,cssStyles:[],look:n.look,icon:t.icon,x:t.x,y:t.y,level:t.level,nodeId:t.nodeId,type:t.type,section:t.section};if(r.push(l),t.children)for(let u of t.children)this.flattenNodes(u,r)}generateEdges(t,r){if(!t.children)return;let n=Ae();for(let i of t.children){let a="edge";i.section!==void 0&&(a+=` section-edge-${i.section}`);let s=t.level+1;a+=` edge-depth-${s}`;let l={id:`edge_${t.id}_${i.id}`,start:t.id.toString(),end:i.id.toString(),type:"normal",curve:"basis",thickness:"normal",look:n.look,classes:a,depth:t.level,section:i.section};r.push(l),this.generateEdges(i,r)}}getData(){let t=this.getMindmap(),r=Ae(),i=Lk().layout!==void 0,a=r;if(i||(a.layout="cose-bilkent"),!t)return{nodes:[],edges:[],config:a};Z.debug("getData: mindmapRoot",t,r),this.assignSections(t);let s=[],l=[];this.flattenNodes(t,s),this.generateEdges(t,l),Z.debug(`getData: processed ${s.length} nodes and ${l.length} edges`);let u=new Map;for(let h of s)u.set(h.id,{shape:h.shape,width:h.width,height:h.height,padding:h.padding});return{nodes:s,edges:l,config:a,rootNode:t,markers:["point"],direction:"TB",nodeSpacing:50,rankSpacing:50,shapes:Object.fromEntries(u),type:"mindmap",diagramId:"mindmap-"+JY()}}getLogger(){return Z}}});var G_t,CNe,wNe=F(()=>{"use strict";vt();Am();Qf();Jf();Wi();ur();G_t=o(async(e,t,r,n)=>{Z.debug(`Rendering mindmap diagram
+`+e);let i=n.db,a=i.getData(),s=pl(t,a.config.securityLevel);if(a.type=n.type,a.layoutAlgorithm=Su(a.config.layout,{fallback:"cose-bilkent"}),a.diagramId=t,!i.getMindmap())return;a.nodes.forEach(p=>{p.shape==="rounded"?(p.radius=15,p.taper=15,p.stroke="none",p.width=0,p.padding=15):p.shape==="circle"?p.padding=10:p.shape==="rect"?(p.width=0,p.padding=10):p.shape==="hexagon"&&(p.width=0,p.height=0)}),await Al(a,s);let{themeVariables:u}=_t(),{useGradient:h,gradientStart:d,gradientStop:f}=u;if(h&&d&&f){let p=s.attr("id"),m=s.append("defs").append("linearGradient").attr("id",`${p}-gradient`).attr("gradientUnits","objectBoundingBox").attr("x1","0%").attr("y1","0%").attr("x2","100%").attr("y2","0%");m.append("stop").attr("offset","0%").attr("stop-color",d).attr("stop-opacity",1),m.append("stop").attr("offset","100%").attr("stop-color",f).attr("stop-opacity",1)}vo(s,a.config.mindmap?.padding??cr.mindmap.padding,"mindmapDiagram",a.config.mindmap?.useMaxWidth??cr.mindmap.useMaxWidth)},"draw"),CNe={draw:G_t}});var V_t,W_t,q_t,kNe,SNe=F(()=>{"use strict";zi();V_t=o(e=>{let{theme:t,look:r}=e,n="";for(let i=0;i<e.THEME_COLOR_LIMIT;i++)e["lineColor"+i]=e["lineColor"+i]||e["cScaleInv"+i],Tn(e["lineColor"+i])?e["lineColor"+i]=Qe(e["lineColor"+i],20):e["lineColor"+i]=Je(e["lineColor"+i],20);for(let i=0;i<e.THEME_COLOR_LIMIT;i++){let a=""+(r==="neo"?Math.max(10-(i-1)*2,2):17-3*i);n+=`
+    .section-${i-1} rect, .section-${i-1} path, .section-${i-1} circle, .section-${i-1} polygon, .section-${i-1} path  {
+      fill: ${e["cScale"+i]};
     }
-    .section-${n-1} text {
-     fill: ${e["cScaleLabel"+n]};
+    .section-${i-1} text {
+     fill: ${e["cScaleLabel"+i]};
     }
-     .section-${n-1} span {
-     color: ${e["cScaleLabel"+n]};
+     .section-${i-1} span {
+     color: ${e["cScaleLabel"+i]};
     }
-    .node-icon-${n-1} {
+    .node-icon-${i-1} {
       font-size: 40px;
-      color: ${e["cScaleLabel"+n]};
+      color: ${e["cScaleLabel"+i]};
     }
-    .section-edge-${n-1}{
-      stroke: ${e["cScale"+n]};
+    .section-edge-${i-1}{
+      stroke: ${e["cScale"+i]};
     }
-    .edge-depth-${n-1}{
+    .edge-depth-${i-1}{
       stroke-width: ${a};
     }
-    .section-${n-1} line {
-      stroke: ${e["cScaleInv"+n]} ;
+    .section-${i-1} line {
+      stroke: ${e["cScaleInv"+i]} ;
       stroke-width: 3;
     }
 
@@ -2713,29 +2727,29 @@
     .disabled text {
       fill: #efefef;
     }
-    [data-look="neo"].mindmap-node.section-${n-1} rect, [data-look="neo"].mindmap-node.section-${n-1} path, [data-look="neo"].mindmap-node.section-${n-1} circle, [data-look="neo"].mindmap-node.section-${n-1} polygon {
-      fill: ${t==="redux"||t==="redux-dark"||t==="neutral"?e.mainBkg:e["cScale"+n]};
-      stroke: ${t==="redux"||t==="redux-dark"?e.nodeBorder:e["cScale"+n]};
+    [data-look="neo"].mindmap-node.section-${i-1} rect, [data-look="neo"].mindmap-node.section-${i-1} path, [data-look="neo"].mindmap-node.section-${i-1} circle, [data-look="neo"].mindmap-node.section-${i-1} polygon {
+      fill: ${t==="redux"||t==="redux-dark"||t==="neutral"?e.mainBkg:e["cScale"+i]};
+      stroke: ${t==="redux"||t==="redux-dark"?e.nodeBorder:e["cScale"+i]};
       stroke-width: ${e.strokeWidth??2}px;
     }
-    [data-look="neo"].section-edge-${n-1}{
-      stroke: ${t?.includes("redux")||t==="neo-dark"?e.nodeBorder:e["cScale"+n]};
+    [data-look="neo"].section-edge-${i-1}{
+      stroke: ${t?.includes("redux")||t==="neo-dark"?e.nodeBorder:e["cScale"+i]};
     }
-    [data-look="neo"].mindmap-node.section-${n-1} text {
-     fill: ${t==="redux"||t==="redux-dark"?e.nodeBorder:e["cScaleLabel"+(t==="neutral"?1:n)]};
+    [data-look="neo"].mindmap-node.section-${i-1} text {
+     fill: ${t==="redux"||t==="redux-dark"?e.nodeBorder:e["cScaleLabel"+(t==="neutral"?1:i)]};
     }
-    `}return i},"genSections"),ywt=o((e,t,r)=>{let i="";for(let n=0;n<e;n++)i+=`
-    [data-look="neo"].mindmap-node.section-${n-1} rect, [data-look="neo"].mindmap-node.section-${n-1} path, [data-look="neo"].mindmap-node.section-${n-1} circle, [data-look="neo"].mindmap-node.section-${n-1} polygon {
+    `}return n},"genSections"),W_t=o((e,t,r)=>{let n="";for(let i=0;i<e;i++)n+=`
+    [data-look="neo"].mindmap-node.section-${i-1} rect, [data-look="neo"].mindmap-node.section-${i-1} path, [data-look="neo"].mindmap-node.section-${i-1} circle, [data-look="neo"].mindmap-node.section-${i-1} polygon {
       stroke: url(${t}-gradient);
       fill: ${r};
     }
-    .section-${n-1} line {
+    .section-${i-1} line {
       stroke-width: 0;
-    }`;return i},"genGradient"),vwt=o(e=>{let{theme:t}=e,r=e.svgId,i=e.dropShadow?e.dropShadow.replace("url(#drop-shadow)",`url(${r}-drop-shadow)`):"none";return`
+    }`;return n},"genGradient"),q_t=o(e=>{let{theme:t}=e,r=e.svgId,n=e.dropShadow?e.dropShadow.replace("url(#drop-shadow)",`url(${r}-drop-shadow)`):"none";return`
   .edge {
     stroke-width: 3;
   }
-  ${gwt(e)}
+  ${V_t(e)}
   .section-root rect, .section-root path, .section-root circle, .section-root polygon  {
     fill: ${e.git0};
   }
@@ -2762,7 +2776,7 @@
     text-align: center;
   }
   [data-look="neo"].mindmap-node  {
-    filter: ${i};
+    filter: ${n};
   }
   [data-look="neo"].mindmap-node.section-root rect, [data-look="neo"].mindmap-node.section-root path, [data-look="neo"].mindmap-node.section-root circle, [data-look="neo"].mindmap-node.section-root polygon  {
     fill: ${t?.includes("redux")?e.mainBkg:e.git0};
@@ -2770,38 +2784,38 @@
   [data-look="neo"].mindmap-node.section-root .text-inner-tspan {
     fill:  ${t?.includes("redux")?e.nodeBorder:e["cScaleLabel"+(t==="neutral"?1:0)]};
   }
-  ${e.useGradient&&r&&e.mainBkg?ywt(e.THEME_COLOR_LIMIT,r,e.mainBkg):""}
-`},"getStyles"),M7e=vwt});var I7e={};xr(I7e,{diagram:()=>xwt});var xwt,O7e=z(()=>{"use strict";T7e();D7e();L7e();N7e();xwt={get db(){return new d_},renderer:R7e,parser:b7e,styles:M7e}});var eq,F7e,$7e=z(()=>{"use strict";eq=(function(){var e=o(function(E,A,N,P){for(N=N||{},P=E.length;P--;N[E[P]]=A);return N},"o"),t=[1,4],r=[1,13],i=[1,12],n=[1,15],a=[1,16],s=[1,20],l=[1,19],u=[6,7,8],h=[1,26],d=[1,24],f=[1,25],p=[6,7,11],m=[1,31],g=[6,7,11,24],y=[1,6,13,16,17,20,23],v=[1,35],x=[1,36],b=[1,6,7,11,13,16,17,20,23],T=[1,38],w={trace:o(function(){},"trace"),yy:{},symbols_:{error:2,start:3,mindMap:4,spaceLines:5,SPACELINE:6,NL:7,KANBAN:8,document:9,stop:10,EOF:11,statement:12,SPACELIST:13,node:14,shapeData:15,ICON:16,CLASS:17,nodeWithId:18,nodeWithoutId:19,NODE_DSTART:20,NODE_DESCR:21,NODE_DEND:22,NODE_ID:23,SHAPE_DATA:24,$accept:0,$end:1},terminals_:{2:"error",6:"SPACELINE",7:"NL",8:"KANBAN",11:"EOF",13:"SPACELIST",16:"ICON",17:"CLASS",20:"NODE_DSTART",21:"NODE_DESCR",22:"NODE_DEND",23:"NODE_ID",24:"SHAPE_DATA"},productions_:[0,[3,1],[3,2],[5,1],[5,2],[5,2],[4,2],[4,3],[10,1],[10,1],[10,1],[10,2],[10,2],[9,3],[9,2],[12,3],[12,2],[12,2],[12,2],[12,1],[12,2],[12,1],[12,1],[12,1],[12,1],[14,1],[14,1],[19,3],[18,1],[18,4],[15,2],[15,1]],performAction:o(function(A,N,P,I,D,_,R){var M=_.length-1;switch(D){case 6:case 7:return I;case 8:I.getLogger().trace("Stop NL ");break;case 9:I.getLogger().trace("Stop EOF ");break;case 11:I.getLogger().trace("Stop NL2 ");break;case 12:I.getLogger().trace("Stop EOF2 ");break;case 15:I.getLogger().info("Node: ",_[M-1].id),I.addNode(_[M-2].length,_[M-1].id,_[M-1].descr,_[M-1].type,_[M]);break;case 16:I.getLogger().info("Node: ",_[M].id),I.addNode(_[M-1].length,_[M].id,_[M].descr,_[M].type);break;case 17:I.getLogger().trace("Icon: ",_[M]),I.decorateNode({icon:_[M]});break;case 18:case 23:I.decorateNode({class:_[M]});break;case 19:I.getLogger().trace("SPACELIST");break;case 20:I.getLogger().trace("Node: ",_[M-1].id),I.addNode(0,_[M-1].id,_[M-1].descr,_[M-1].type,_[M]);break;case 21:I.getLogger().trace("Node: ",_[M].id),I.addNode(0,_[M].id,_[M].descr,_[M].type);break;case 22:I.decorateNode({icon:_[M]});break;case 27:I.getLogger().trace("node found ..",_[M-2]),this.$={id:_[M-1],descr:_[M-1],type:I.getType(_[M-2],_[M])};break;case 28:this.$={id:_[M],descr:_[M],type:0};break;case 29:I.getLogger().trace("node found ..",_[M-3]),this.$={id:_[M-3],descr:_[M-1],type:I.getType(_[M-2],_[M])};break;case 30:this.$=_[M-1]+_[M];break;case 31:this.$=_[M];break}},"anonymous"),table:[{3:1,4:2,5:3,6:[1,5],8:t},{1:[3]},{1:[2,1]},{4:6,6:[1,7],7:[1,8],8:t},{6:r,7:[1,10],9:9,12:11,13:i,14:14,16:n,17:a,18:17,19:18,20:s,23:l},e(u,[2,3]),{1:[2,2]},e(u,[2,4]),e(u,[2,5]),{1:[2,6],6:r,12:21,13:i,14:14,16:n,17:a,18:17,19:18,20:s,23:l},{6:r,9:22,12:11,13:i,14:14,16:n,17:a,18:17,19:18,20:s,23:l},{6:h,7:d,10:23,11:f},e(p,[2,24],{18:17,19:18,14:27,16:[1,28],17:[1,29],20:s,23:l}),e(p,[2,19]),e(p,[2,21],{15:30,24:m}),e(p,[2,22]),e(p,[2,23]),e(g,[2,25]),e(g,[2,26]),e(g,[2,28],{20:[1,32]}),{21:[1,33]},{6:h,7:d,10:34,11:f},{1:[2,7],6:r,12:21,13:i,14:14,16:n,17:a,18:17,19:18,20:s,23:l},e(y,[2,14],{7:v,11:x}),e(b,[2,8]),e(b,[2,9]),e(b,[2,10]),e(p,[2,16],{15:37,24:m}),e(p,[2,17]),e(p,[2,18]),e(p,[2,20],{24:T}),e(g,[2,31]),{21:[1,39]},{22:[1,40]},e(y,[2,13],{7:v,11:x}),e(b,[2,11]),e(b,[2,12]),e(p,[2,15],{24:T}),e(g,[2,30]),{22:[1,41]},e(g,[2,27]),e(g,[2,29])],defaultActions:{2:[2,1],6:[2,2]},parseError:o(function(A,N){if(N.recoverable)this.trace(A);else{var P=new Error(A);throw P.hash=N,P}},"parseError"),parse:o(function(A){var N=this,P=[0],I=[],D=[null],_=[],R=this.table,M="",L=0,B=0,O=0,$=2,G=1,F=_.slice.call(arguments,1),V=Object.create(this.lexer),H={yy:{}};for(var j in this.yy)Object.prototype.hasOwnProperty.call(this.yy,j)&&(H.yy[j]=this.yy[j]);V.setInput(A,H.yy),H.yy.lexer=V,H.yy.parser=this,typeof V.yylloc>"u"&&(V.yylloc={});var U=V.yylloc;_.push(U);var Q=V.options&&V.options.ranges;typeof H.yy.parseError=="function"?this.parseError=H.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function Y(de){P.length=P.length-2*de,D.length=D.length-de,_.length=_.length-de}o(Y,"popStack");function ae(){var de;return de=I.pop()||V.lex()||G,typeof de!="number"&&(de instanceof Array&&(I=de,de=I.pop()),de=N.symbols_[de]||de),de}o(ae,"lex");for(var J,te,re,ee,Te,ue,De={},Ie,Ee,we,Me;;){if(re=P[P.length-1],this.defaultActions[re]?ee=this.defaultActions[re]:((J===null||typeof J>"u")&&(J=ae()),ee=R[re]&&R[re][J]),typeof ee>"u"||!ee.length||!ee[0]){var $e="";Me=[];for(Ie in R[re])this.terminals_[Ie]&&Ie>$&&Me.push("'"+this.terminals_[Ie]+"'");V.showPosition?$e="Parse error on line "+(L+1)+`:
-`+V.showPosition()+`
-Expecting `+Me.join(", ")+", got '"+(this.terminals_[J]||J)+"'":$e="Parse error on line "+(L+1)+": Unexpected "+(J==G?"end of input":"'"+(this.terminals_[J]||J)+"'"),this.parseError($e,{text:V.match,token:this.terminals_[J]||J,line:V.yylineno,loc:U,expected:Me})}if(ee[0]instanceof Array&&ee.length>1)throw new Error("Parse Error: multiple actions possible at state: "+re+", token: "+J);switch(ee[0]){case 1:P.push(J),D.push(V.yytext),_.push(V.yylloc),P.push(ee[1]),J=null,te?(J=te,te=null):(B=V.yyleng,M=V.yytext,L=V.yylineno,U=V.yylloc,O>0&&O--);break;case 2:if(Ee=this.productions_[ee[1]][1],De.$=D[D.length-Ee],De._$={first_line:_[_.length-(Ee||1)].first_line,last_line:_[_.length-1].last_line,first_column:_[_.length-(Ee||1)].first_column,last_column:_[_.length-1].last_column},Q&&(De._$.range=[_[_.length-(Ee||1)].range[0],_[_.length-1].range[1]]),ue=this.performAction.apply(De,[M,B,L,H.yy,ee[1],D,_].concat(F)),typeof ue<"u")return ue;Ee&&(P=P.slice(0,-1*Ee*2),D=D.slice(0,-1*Ee),_=_.slice(0,-1*Ee)),P.push(this.productions_[ee[1]][0]),D.push(De.$),_.push(De._$),we=R[P[P.length-2]][P[P.length-1]],P.push(we);break;case 3:return!0}}return!0},"parse")},C=(function(){var E={EOF:1,parseError:o(function(N,P){if(this.yy.parser)this.yy.parser.parseError(N,P);else throw new Error(N)},"parseError"),setInput:o(function(A,N){return this.yy=N||this.yy||{},this._input=A,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},"setInput"),input:o(function(){var A=this._input[0];this.yytext+=A,this.yyleng++,this.offset++,this.match+=A,this.matched+=A;var N=A.match(/(?:\r\n?|\n).*/g);return N?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),A},"input"),unput:o(function(A){var N=A.length,P=A.split(/(?:\r\n?|\n)/g);this._input=A+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-N),this.offset-=N;var I=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),P.length-1&&(this.yylineno-=P.length-1);var D=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:P?(P.length===I.length?this.yylloc.first_column:0)+I[I.length-P.length].length-P[0].length:this.yylloc.first_column-N},this.options.ranges&&(this.yylloc.range=[D[0],D[0]+this.yyleng-N]),this.yyleng=this.yytext.length,this},"unput"),more:o(function(){return this._more=!0,this},"more"),reject:o(function(){if(this.options.backtrack_lexer)this._backtrack=!0;else return this.parseError("Lexical error on line "+(this.yylineno+1)+`. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).
-`+this.showPosition(),{text:"",token:null,line:this.yylineno});return this},"reject"),less:o(function(A){this.unput(this.match.slice(A))},"less"),pastInput:o(function(){var A=this.matched.substr(0,this.matched.length-this.match.length);return(A.length>20?"...":"")+A.substr(-20).replace(/\n/g,"")},"pastInput"),upcomingInput:o(function(){var A=this.match;return A.length<20&&(A+=this._input.substr(0,20-A.length)),(A.substr(0,20)+(A.length>20?"...":"")).replace(/\n/g,"")},"upcomingInput"),showPosition:o(function(){var A=this.pastInput(),N=new Array(A.length+1).join("-");return A+this.upcomingInput()+`
-`+N+"^"},"showPosition"),test_match:o(function(A,N){var P,I,D;if(this.options.backtrack_lexer&&(D={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(D.yylloc.range=this.yylloc.range.slice(0))),I=A[0].match(/(?:\r\n?|\n).*/g),I&&(this.yylineno+=I.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:I?I[I.length-1].length-I[I.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+A[0].length},this.yytext+=A[0],this.match+=A[0],this.matches=A,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(A[0].length),this.matched+=A[0],P=this.performAction.call(this,this.yy,this,N,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),P)return P;if(this._backtrack){for(var _ in D)this[_]=D[_];return!1}return!1},"test_match"),next:o(function(){if(this.done)return this.EOF;this._input||(this.done=!0);var A,N,P,I;this._more||(this.yytext="",this.match="");for(var D=this._currentRules(),_=0;_<D.length;_++)if(P=this._input.match(this.rules[D[_]]),P&&(!N||P[0].length>N[0].length)){if(N=P,I=_,this.options.backtrack_lexer){if(A=this.test_match(P,D[_]),A!==!1)return A;if(this._backtrack){N=!1;continue}else return!1}else if(!this.options.flex)break}return N?(A=this.test_match(N,D[I]),A!==!1?A:!1):this._input===""?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+`. Unrecognized text.
-`+this.showPosition(),{text:"",token:null,line:this.yylineno})},"next"),lex:o(function(){var N=this.next();return N||this.lex()},"lex"),begin:o(function(N){this.conditionStack.push(N)},"begin"),popState:o(function(){var N=this.conditionStack.length-1;return N>0?this.conditionStack.pop():this.conditionStack[0]},"popState"),_currentRules:o(function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},"_currentRules"),topState:o(function(N){return N=this.conditionStack.length-1-Math.abs(N||0),N>=0?this.conditionStack[N]:"INITIAL"},"topState"),pushState:o(function(N){this.begin(N)},"pushState"),stateStackSize:o(function(){return this.conditionStack.length},"stateStackSize"),options:{"case-insensitive":!0},performAction:o(function(N,P,I,D){var _=D;switch(I){case 0:return this.pushState("shapeData"),P.yytext="",24;break;case 1:return this.pushState("shapeDataStr"),24;break;case 2:return this.popState(),24;break;case 3:let R=/\n\s*/g;return P.yytext=P.yytext.replace(R,"<br/>"),24;break;case 4:return 24;case 5:this.popState();break;case 6:return N.getLogger().trace("Found comment",P.yytext),6;break;case 7:return 8;case 8:this.begin("CLASS");break;case 9:return this.popState(),17;break;case 10:this.popState();break;case 11:N.getLogger().trace("Begin icon"),this.begin("ICON");break;case 12:return N.getLogger().trace("SPACELINE"),6;break;case 13:return 7;case 14:return 16;case 15:N.getLogger().trace("end icon"),this.popState();break;case 16:return N.getLogger().trace("Exploding node"),this.begin("NODE"),20;break;case 17:return N.getLogger().trace("Cloud"),this.begin("NODE"),20;break;case 18:return N.getLogger().trace("Explosion Bang"),this.begin("NODE"),20;break;case 19:return N.getLogger().trace("Cloud Bang"),this.begin("NODE"),20;break;case 20:return this.begin("NODE"),20;break;case 21:return this.begin("NODE"),20;break;case 22:return this.begin("NODE"),20;break;case 23:return this.begin("NODE"),20;break;case 24:return 13;case 25:return 23;case 26:return 11;case 27:this.begin("NSTR2");break;case 28:return"NODE_DESCR";case 29:this.popState();break;case 30:N.getLogger().trace("Starting NSTR"),this.begin("NSTR");break;case 31:return N.getLogger().trace("description:",P.yytext),"NODE_DESCR";break;case 32:this.popState();break;case 33:return this.popState(),N.getLogger().trace("node end ))"),"NODE_DEND";break;case 34:return this.popState(),N.getLogger().trace("node end )"),"NODE_DEND";break;case 35:return this.popState(),N.getLogger().trace("node end ...",P.yytext),"NODE_DEND";break;case 36:return this.popState(),N.getLogger().trace("node end (("),"NODE_DEND";break;case 37:return this.popState(),N.getLogger().trace("node end (-"),"NODE_DEND";break;case 38:return this.popState(),N.getLogger().trace("node end (-"),"NODE_DEND";break;case 39:return this.popState(),N.getLogger().trace("node end (("),"NODE_DEND";break;case 40:return this.popState(),N.getLogger().trace("node end (("),"NODE_DEND";break;case 41:return N.getLogger().trace("Long description:",P.yytext),21;break;case 42:return N.getLogger().trace("Long description:",P.yytext),21;break}},"anonymous"),rules:[/^(?:@\{)/i,/^(?:["])/i,/^(?:["])/i,/^(?:[^\"]+)/i,/^(?:[^}^"]+)/i,/^(?:\})/i,/^(?:\s*%%.*)/i,/^(?:kanban\b)/i,/^(?::::)/i,/^(?:.+)/i,/^(?:\n)/i,/^(?:::icon\()/i,/^(?:[\s]+[\n])/i,/^(?:[\n]+)/i,/^(?:[^\)]+)/i,/^(?:\))/i,/^(?:-\))/i,/^(?:\(-)/i,/^(?:\)\))/i,/^(?:\))/i,/^(?:\(\()/i,/^(?:\{\{)/i,/^(?:\()/i,/^(?:\[)/i,/^(?:[\s]+)/i,/^(?:[^\(\[\n\)\{\}@]+)/i,/^(?:$)/i,/^(?:["][`])/i,/^(?:[^`"]+)/i,/^(?:[`]["])/i,/^(?:["])/i,/^(?:[^"]+)/i,/^(?:["])/i,/^(?:[\)]\))/i,/^(?:[\)])/i,/^(?:[\]])/i,/^(?:\}\})/i,/^(?:\(-)/i,/^(?:-\))/i,/^(?:\(\()/i,/^(?:\()/i,/^(?:[^\)\]\(\}]+)/i,/^(?:.+(?!\(\())/i],conditions:{shapeDataEndBracket:{rules:[],inclusive:!1},shapeDataStr:{rules:[2,3],inclusive:!1},shapeData:{rules:[1,4,5],inclusive:!1},CLASS:{rules:[9,10],inclusive:!1},ICON:{rules:[14,15],inclusive:!1},NSTR2:{rules:[28,29],inclusive:!1},NSTR:{rules:[31,32],inclusive:!1},NODE:{rules:[27,30,33,34,35,36,37,38,39,40,41,42],inclusive:!1},INITIAL:{rules:[0,6,7,8,11,12,13,16,17,18,19,20,21,22,23,24,25,26],inclusive:!0}}};return E})();w.lexer=C;function k(){this.yy={}}return o(k,"Parser"),k.prototype=w,w.Parser=k,new k})();eq.parser=eq;F7e=eq});var cl,rq,tq,iq,kwt,wwt,z7e,Swt,Ewt,Xn,Awt,_wt,Dwt,Rwt,Lwt,Mwt,Nwt,G7e,V7e=z(()=>{"use strict";Ut();Ir();St();Bn();Wx();cl=[],rq=[],tq=0,iq={},kwt=o(()=>{cl=[],rq=[],tq=0,iq={}},"clear"),wwt=o(e=>{if(cl.length===0)return null;let t=cl[0].level,r=null;for(let i=cl.length-1;i>=0;i--)if(cl[i].level===t&&!r&&(r=cl[i]),cl[i].level<t)throw new Error('Items without section detected, found section ("'+cl[i].label+'")');return e===r?.level?null:r},"getSection"),z7e=o(function(){return rq},"getSections"),Swt=o(function(){let e=[],t=[],r=z7e(),i=ge();for(let n of r){let a={id:n.id,label:fr(n.label??"",i),labelType:"markdown",isGroup:!0,ticket:n.ticket,shape:"kanbanSection",level:n.level,look:i.look};t.push(a);let s=cl.filter(l=>l.parentId===n.id);for(let l of s){let u={id:l.id,parentId:n.id,label:fr(l.label??"",i),labelType:"markdown",isGroup:!1,ticket:l?.ticket,priority:l?.priority,assigned:l?.assigned,icon:l?.icon,shape:"kanbanItem",level:l.level,rx:5,ry:5,cssStyles:["text-align: left"]};t.push(u)}}return{nodes:t,edges:e,other:{},config:ge()}},"getData"),Ewt=o((e,t,r,i,n)=>{let a=ge(),s=a.mindmap?.padding??or.mindmap.padding;switch(i){case Xn.ROUNDED_RECT:case Xn.RECT:case Xn.HEXAGON:s*=2}let l={id:fr(t,a)||"kbn"+tq++,level:e,label:fr(r,a),width:a.mindmap?.maxNodeWidth??or.mindmap.maxNodeWidth,padding:s,isGroup:!1};if(n!==void 0){let h;n.includes(`
-`)?h=n+`
+  ${e.useGradient&&r&&e.mainBkg?W_t(e.THEME_COLOR_LIMIT,r,e.mainBkg):""}
+`},"getStyles"),kNe=q_t});var ENe={};ir(ENe,{diagram:()=>H_t});var H_t,ANe=F(()=>{"use strict";fNe();TNe();wNe();SNe();H_t={get db(){return new qL},renderer:CNe,parser:dNe,styles:kNe}});var ej,LNe,DNe=F(()=>{"use strict";ej=(function(){var e=o(function(S,R,L,N){for(L=L||{},N=S.length;N--;L[S[N]]=R);return L},"o"),t=[1,4],r=[1,13],n=[1,12],i=[1,15],a=[1,16],s=[1,20],l=[1,19],u=[6,7,8],h=[1,26],d=[1,24],f=[1,25],p=[6,7,11],m=[1,31],g=[6,7,11,24],y=[1,6,13,16,17,20,23],v=[1,35],x=[1,36],b=[1,6,7,11,13,16,17,20,23],T=[1,38],k={trace:o(function(){},"trace"),yy:{},symbols_:{error:2,start:3,mindMap:4,spaceLines:5,SPACELINE:6,NL:7,KANBAN:8,document:9,stop:10,EOF:11,statement:12,SPACELIST:13,node:14,shapeData:15,ICON:16,CLASS:17,nodeWithId:18,nodeWithoutId:19,NODE_DSTART:20,NODE_DESCR:21,NODE_DEND:22,NODE_ID:23,SHAPE_DATA:24,$accept:0,$end:1},terminals_:{2:"error",6:"SPACELINE",7:"NL",8:"KANBAN",11:"EOF",13:"SPACELIST",16:"ICON",17:"CLASS",20:"NODE_DSTART",21:"NODE_DESCR",22:"NODE_DEND",23:"NODE_ID",24:"SHAPE_DATA"},productions_:[0,[3,1],[3,2],[5,1],[5,2],[5,2],[4,2],[4,3],[10,1],[10,1],[10,1],[10,2],[10,2],[9,3],[9,2],[12,3],[12,2],[12,2],[12,2],[12,1],[12,2],[12,1],[12,1],[12,1],[12,1],[14,1],[14,1],[19,3],[18,1],[18,4],[15,2],[15,1]],performAction:o(function(R,L,N,I,_,A,M){var D=A.length-1;switch(_){case 6:case 7:return I;case 8:I.getLogger().trace("Stop NL ");break;case 9:I.getLogger().trace("Stop EOF ");break;case 11:I.getLogger().trace("Stop NL2 ");break;case 12:I.getLogger().trace("Stop EOF2 ");break;case 15:I.getLogger().info("Node: ",A[D-1].id),I.addNode(A[D-2].length,A[D-1].id,A[D-1].descr,A[D-1].type,A[D]);break;case 16:I.getLogger().info("Node: ",A[D].id),I.addNode(A[D-1].length,A[D].id,A[D].descr,A[D].type);break;case 17:I.getLogger().trace("Icon: ",A[D]),I.decorateNode({icon:A[D]});break;case 18:case 23:I.decorateNode({class:A[D]});break;case 19:I.getLogger().trace("SPACELIST");break;case 20:I.getLogger().trace("Node: ",A[D-1].id),I.addNode(0,A[D-1].id,A[D-1].descr,A[D-1].type,A[D]);break;case 21:I.getLogger().trace("Node: ",A[D].id),I.addNode(0,A[D].id,A[D].descr,A[D].type);break;case 22:I.decorateNode({icon:A[D]});break;case 27:I.getLogger().trace("node found ..",A[D-2]),this.$={id:A[D-1],descr:A[D-1],type:I.getType(A[D-2],A[D])};break;case 28:this.$={id:A[D],descr:A[D],type:0};break;case 29:I.getLogger().trace("node found ..",A[D-3]),this.$={id:A[D-3],descr:A[D-1],type:I.getType(A[D-2],A[D])};break;case 30:this.$=A[D-1]+A[D];break;case 31:this.$=A[D];break}},"anonymous"),table:[{3:1,4:2,5:3,6:[1,5],8:t},{1:[3]},{1:[2,1]},{4:6,6:[1,7],7:[1,8],8:t},{6:r,7:[1,10],9:9,12:11,13:n,14:14,16:i,17:a,18:17,19:18,20:s,23:l},e(u,[2,3]),{1:[2,2]},e(u,[2,4]),e(u,[2,5]),{1:[2,6],6:r,12:21,13:n,14:14,16:i,17:a,18:17,19:18,20:s,23:l},{6:r,9:22,12:11,13:n,14:14,16:i,17:a,18:17,19:18,20:s,23:l},{6:h,7:d,10:23,11:f},e(p,[2,24],{18:17,19:18,14:27,16:[1,28],17:[1,29],20:s,23:l}),e(p,[2,19]),e(p,[2,21],{15:30,24:m}),e(p,[2,22]),e(p,[2,23]),e(g,[2,25]),e(g,[2,26]),e(g,[2,28],{20:[1,32]}),{21:[1,33]},{6:h,7:d,10:34,11:f},{1:[2,7],6:r,12:21,13:n,14:14,16:i,17:a,18:17,19:18,20:s,23:l},e(y,[2,14],{7:v,11:x}),e(b,[2,8]),e(b,[2,9]),e(b,[2,10]),e(p,[2,16],{15:37,24:m}),e(p,[2,17]),e(p,[2,18]),e(p,[2,20],{24:T}),e(g,[2,31]),{21:[1,39]},{22:[1,40]},e(y,[2,13],{7:v,11:x}),e(b,[2,11]),e(b,[2,12]),e(p,[2,15],{24:T}),e(g,[2,30]),{22:[1,41]},e(g,[2,27]),e(g,[2,29])],defaultActions:{2:[2,1],6:[2,2]},parseError:o(function(R,L){if(L.recoverable)this.trace(R);else{var N=new Error(R);throw N.hash=L,N}},"parseError"),parse:o(function(R){var L=this,N=[0],I=[],_=[null],A=[],M=this.table,D="",P=0,B=0,O=0,$=2,V=1,G=A.slice.call(arguments,1),z=Object.create(this.lexer),W={yy:{}};for(var H in this.yy)Object.prototype.hasOwnProperty.call(this.yy,H)&&(W.yy[H]=this.yy[H]);z.setInput(R,W.yy),W.yy.lexer=z,W.yy.parser=this,typeof z.yylloc>"u"&&(z.yylloc={});var j=z.yylloc;A.push(j);var Q=z.options&&z.options.ranges;typeof W.yy.parseError=="function"?this.parseError=W.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function U(ce){N.length=N.length-2*ce,_.length=_.length-ce,A.length=A.length-ce}o(U,"popStack");function oe(){var ce;return ce=I.pop()||z.lex()||V,typeof ce!="number"&&(ce instanceof Array&&(I=ce,ce=I.pop()),ce=L.symbols_[ce]||ce),ce}o(oe,"lex");for(var te,le,ie,ae,Re,be,Pe={},Ge,Oe,ue,ye;;){if(ie=N[N.length-1],this.defaultActions[ie]?ae=this.defaultActions[ie]:((te===null||typeof te>"u")&&(te=oe()),ae=M[ie]&&M[ie][te]),typeof ae>"u"||!ae.length||!ae[0]){var ke="";ye=[];for(Ge in M[ie])this.terminals_[Ge]&&Ge>$&&ye.push("'"+this.terminals_[Ge]+"'");z.showPosition?ke="Parse error on line "+(P+1)+`:
+`+z.showPosition()+`
+Expecting `+ye.join(", ")+", got '"+(this.terminals_[te]||te)+"'":ke="Parse error on line "+(P+1)+": Unexpected "+(te==V?"end of input":"'"+(this.terminals_[te]||te)+"'"),this.parseError(ke,{text:z.match,token:this.terminals_[te]||te,line:z.yylineno,loc:j,expected:ye})}if(ae[0]instanceof Array&&ae.length>1)throw new Error("Parse Error: multiple actions possible at state: "+ie+", token: "+te);switch(ae[0]){case 1:N.push(te),_.push(z.yytext),A.push(z.yylloc),N.push(ae[1]),te=null,le?(te=le,le=null):(B=z.yyleng,D=z.yytext,P=z.yylineno,j=z.yylloc,O>0&&O--);break;case 2:if(Oe=this.productions_[ae[1]][1],Pe.$=_[_.length-Oe],Pe._$={first_line:A[A.length-(Oe||1)].first_line,last_line:A[A.length-1].last_line,first_column:A[A.length-(Oe||1)].first_column,last_column:A[A.length-1].last_column},Q&&(Pe._$.range=[A[A.length-(Oe||1)].range[0],A[A.length-1].range[1]]),be=this.performAction.apply(Pe,[D,B,P,W.yy,ae[1],_,A].concat(G)),typeof be<"u")return be;Oe&&(N=N.slice(0,-1*Oe*2),_=_.slice(0,-1*Oe),A=A.slice(0,-1*Oe)),N.push(this.productions_[ae[1]][0]),_.push(Pe.$),A.push(Pe._$),ue=M[N[N.length-2]][N[N.length-1]],N.push(ue);break;case 3:return!0}}return!0},"parse")},C=(function(){var S={EOF:1,parseError:o(function(L,N){if(this.yy.parser)this.yy.parser.parseError(L,N);else throw new Error(L)},"parseError"),setInput:o(function(R,L){return this.yy=L||this.yy||{},this._input=R,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},"setInput"),input:o(function(){var R=this._input[0];this.yytext+=R,this.yyleng++,this.offset++,this.match+=R,this.matched+=R;var L=R.match(/(?:\r\n?|\n).*/g);return L?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),R},"input"),unput:o(function(R){var L=R.length,N=R.split(/(?:\r\n?|\n)/g);this._input=R+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-L),this.offset-=L;var I=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),N.length-1&&(this.yylineno-=N.length-1);var _=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:N?(N.length===I.length?this.yylloc.first_column:0)+I[I.length-N.length].length-N[0].length:this.yylloc.first_column-L},this.options.ranges&&(this.yylloc.range=[_[0],_[0]+this.yyleng-L]),this.yyleng=this.yytext.length,this},"unput"),more:o(function(){return this._more=!0,this},"more"),reject:o(function(){if(this.options.backtrack_lexer)this._backtrack=!0;else return this.parseError("Lexical error on line "+(this.yylineno+1)+`. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).
+`+this.showPosition(),{text:"",token:null,line:this.yylineno});return this},"reject"),less:o(function(R){this.unput(this.match.slice(R))},"less"),pastInput:o(function(){var R=this.matched.substr(0,this.matched.length-this.match.length);return(R.length>20?"...":"")+R.substr(-20).replace(/\n/g,"")},"pastInput"),upcomingInput:o(function(){var R=this.match;return R.length<20&&(R+=this._input.substr(0,20-R.length)),(R.substr(0,20)+(R.length>20?"...":"")).replace(/\n/g,"")},"upcomingInput"),showPosition:o(function(){var R=this.pastInput(),L=new Array(R.length+1).join("-");return R+this.upcomingInput()+`
+`+L+"^"},"showPosition"),test_match:o(function(R,L){var N,I,_;if(this.options.backtrack_lexer&&(_={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(_.yylloc.range=this.yylloc.range.slice(0))),I=R[0].match(/(?:\r\n?|\n).*/g),I&&(this.yylineno+=I.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:I?I[I.length-1].length-I[I.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+R[0].length},this.yytext+=R[0],this.match+=R[0],this.matches=R,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(R[0].length),this.matched+=R[0],N=this.performAction.call(this,this.yy,this,L,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),N)return N;if(this._backtrack){for(var A in _)this[A]=_[A];return!1}return!1},"test_match"),next:o(function(){if(this.done)return this.EOF;this._input||(this.done=!0);var R,L,N,I;this._more||(this.yytext="",this.match="");for(var _=this._currentRules(),A=0;A<_.length;A++)if(N=this._input.match(this.rules[_[A]]),N&&(!L||N[0].length>L[0].length)){if(L=N,I=A,this.options.backtrack_lexer){if(R=this.test_match(N,_[A]),R!==!1)return R;if(this._backtrack){L=!1;continue}else return!1}else if(!this.options.flex)break}return L?(R=this.test_match(L,_[I]),R!==!1?R:!1):this._input===""?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+`. Unrecognized text.
+`+this.showPosition(),{text:"",token:null,line:this.yylineno})},"next"),lex:o(function(){var L=this.next();return L||this.lex()},"lex"),begin:o(function(L){this.conditionStack.push(L)},"begin"),popState:o(function(){var L=this.conditionStack.length-1;return L>0?this.conditionStack.pop():this.conditionStack[0]},"popState"),_currentRules:o(function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},"_currentRules"),topState:o(function(L){return L=this.conditionStack.length-1-Math.abs(L||0),L>=0?this.conditionStack[L]:"INITIAL"},"topState"),pushState:o(function(L){this.begin(L)},"pushState"),stateStackSize:o(function(){return this.conditionStack.length},"stateStackSize"),options:{"case-insensitive":!0},performAction:o(function(L,N,I,_){var A=_;switch(I){case 0:return this.pushState("shapeData"),N.yytext="",24;break;case 1:return this.pushState("shapeDataStr"),24;break;case 2:return this.popState(),24;break;case 3:let M=/\n\s*/g;return N.yytext=N.yytext.replace(M,"<br/>"),24;break;case 4:return 24;case 5:this.popState();break;case 6:return L.getLogger().trace("Found comment",N.yytext),6;break;case 7:return 8;case 8:this.begin("CLASS");break;case 9:return this.popState(),17;break;case 10:this.popState();break;case 11:L.getLogger().trace("Begin icon"),this.begin("ICON");break;case 12:return L.getLogger().trace("SPACELINE"),6;break;case 13:return 7;case 14:return 16;case 15:L.getLogger().trace("end icon"),this.popState();break;case 16:return L.getLogger().trace("Exploding node"),this.begin("NODE"),20;break;case 17:return L.getLogger().trace("Cloud"),this.begin("NODE"),20;break;case 18:return L.getLogger().trace("Explosion Bang"),this.begin("NODE"),20;break;case 19:return L.getLogger().trace("Cloud Bang"),this.begin("NODE"),20;break;case 20:return this.begin("NODE"),20;break;case 21:return this.begin("NODE"),20;break;case 22:return this.begin("NODE"),20;break;case 23:return this.begin("NODE"),20;break;case 24:return 13;case 25:return 23;case 26:return 11;case 27:this.begin("NSTR2");break;case 28:return"NODE_DESCR";case 29:this.popState();break;case 30:L.getLogger().trace("Starting NSTR"),this.begin("NSTR");break;case 31:return L.getLogger().trace("description:",N.yytext),"NODE_DESCR";break;case 32:this.popState();break;case 33:return this.popState(),L.getLogger().trace("node end ))"),"NODE_DEND";break;case 34:return this.popState(),L.getLogger().trace("node end )"),"NODE_DEND";break;case 35:return this.popState(),L.getLogger().trace("node end ...",N.yytext),"NODE_DEND";break;case 36:return this.popState(),L.getLogger().trace("node end (("),"NODE_DEND";break;case 37:return this.popState(),L.getLogger().trace("node end (-"),"NODE_DEND";break;case 38:return this.popState(),L.getLogger().trace("node end (-"),"NODE_DEND";break;case 39:return this.popState(),L.getLogger().trace("node end (("),"NODE_DEND";break;case 40:return this.popState(),L.getLogger().trace("node end (("),"NODE_DEND";break;case 41:return L.getLogger().trace("Long description:",N.yytext),21;break;case 42:return L.getLogger().trace("Long description:",N.yytext),21;break}},"anonymous"),rules:[/^(?:@\{)/i,/^(?:["])/i,/^(?:["])/i,/^(?:[^\"]+)/i,/^(?:[^}^"]+)/i,/^(?:\})/i,/^(?:\s*%%.*)/i,/^(?:kanban\b)/i,/^(?::::)/i,/^(?:.+)/i,/^(?:\n)/i,/^(?:::icon\()/i,/^(?:[\s]+[\n])/i,/^(?:[\n]+)/i,/^(?:[^\)]+)/i,/^(?:\))/i,/^(?:-\))/i,/^(?:\(-)/i,/^(?:\)\))/i,/^(?:\))/i,/^(?:\(\()/i,/^(?:\{\{)/i,/^(?:\()/i,/^(?:\[)/i,/^(?:[\s]+)/i,/^(?:[^\(\[\n\)\{\}@]+)/i,/^(?:$)/i,/^(?:["][`])/i,/^(?:[^`"]+)/i,/^(?:[`]["])/i,/^(?:["])/i,/^(?:[^"]+)/i,/^(?:["])/i,/^(?:[\)]\))/i,/^(?:[\)])/i,/^(?:[\]])/i,/^(?:\}\})/i,/^(?:\(-)/i,/^(?:-\))/i,/^(?:\(\()/i,/^(?:\()/i,/^(?:[^\)\]\(\}]+)/i,/^(?:.+(?!\(\())/i],conditions:{shapeDataEndBracket:{rules:[],inclusive:!1},shapeDataStr:{rules:[2,3],inclusive:!1},shapeData:{rules:[1,4,5],inclusive:!1},CLASS:{rules:[9,10],inclusive:!1},ICON:{rules:[14,15],inclusive:!1},NSTR2:{rules:[28,29],inclusive:!1},NSTR:{rules:[31,32],inclusive:!1},NODE:{rules:[27,30,33,34,35,36,37,38,39,40,41,42],inclusive:!1},INITIAL:{rules:[0,6,7,8,11,12,13,16,17,18,19,20,21,22,23,24,25,26],inclusive:!0}}};return S})();k.lexer=C;function w(){this.yy={}}return o(w,"Parser"),w.prototype=k,k.Parser=w,new w})();ej.parser=ej;LNe=ej});var Ol,rj,tj,nj,X_t,K_t,INe,Z_t,Q_t,pa,J_t,eLt,tLt,rLt,nLt,iLt,aLt,MNe,NNe=F(()=>{"use strict";Xt();Vr();vt();Wi();A2();Ol=[],rj=[],tj=0,nj={},X_t=o(()=>{Ol=[],rj=[],tj=0,nj={}},"clear"),K_t=o(e=>{if(Ol.length===0)return null;let t=Ol[0].level,r=null;for(let n=Ol.length-1;n>=0;n--)if(Ol[n].level===t&&!r&&(r=Ol[n]),Ol[n].level<t)throw new Error('Items without section detected, found section ("'+Ol[n].label+'")');return e===r?.level?null:r},"getSection"),INe=o(function(){return rj},"getSections"),Z_t=o(function(){let e=[],t=[],r=INe(),n=Ae();for(let i of r){let a={id:i.id,label:mr(i.label??"",n),labelType:"markdown",isGroup:!0,ticket:i.ticket,shape:"kanbanSection",level:i.level,look:n.look};t.push(a);let s=Ol.filter(l=>l.parentId===i.id);for(let l of s){let u={id:l.id,parentId:i.id,label:mr(l.label??"",n),labelType:"markdown",isGroup:!1,ticket:l?.ticket,priority:l?.priority,assigned:l?.assigned,icon:l?.icon,shape:"kanbanItem",level:l.level,rx:5,ry:5,cssStyles:["text-align: left"]};t.push(u)}}return{nodes:t,edges:e,other:{},config:Ae()}},"getData"),Q_t=o((e,t,r,n,i)=>{let a=Ae(),s=a.mindmap?.padding??cr.mindmap.padding;switch(n){case pa.ROUNDED_RECT:case pa.RECT:case pa.HEXAGON:s*=2}let l={id:mr(t,a)||"kbn"+tj++,level:e,label:mr(r,a),width:a.mindmap?.maxNodeWidth??cr.mindmap.maxNodeWidth,padding:s,isGroup:!1};if(i!==void 0){let h;i.includes(`
+`)?h=i+`
 `:h=`{
-`+n+`
-}`;let d=ld(h,{schema:od});if(d.shape&&(d.shape!==d.shape.toLowerCase()||d.shape.includes("_")))throw new Error(`No such shape: ${d.shape}. Shape names should be lowercase.`);d?.shape&&d.shape==="kanbanItem"&&(l.shape=d?.shape),d?.label&&(l.label=d?.label),d?.icon&&(l.icon=d?.icon.toString()),d?.assigned&&(l.assigned=d?.assigned.toString()),d?.ticket&&(l.ticket=d?.ticket.toString()),d?.priority&&(l.priority=d?.priority)}let u=wwt(e);u?l.parentId=u.id||"kbn"+tq++:rq.push(l),cl.push(l)},"addNode"),Xn={DEFAULT:0,NO_BORDER:0,ROUNDED_RECT:1,RECT:2,CIRCLE:3,CLOUD:4,BANG:5,HEXAGON:6},Awt=o((e,t)=>{switch(Z.debug("In get type",e,t),e){case"[":return Xn.RECT;case"(":return t===")"?Xn.ROUNDED_RECT:Xn.CLOUD;case"((":return Xn.CIRCLE;case")":return Xn.CLOUD;case"))":return Xn.BANG;case"{{":return Xn.HEXAGON;default:return Xn.DEFAULT}},"getType"),_wt=o((e,t)=>{iq[e]=t},"setElementForId"),Dwt=o(e=>{if(!e)return;let t=ge(),r=cl[cl.length-1];e.icon&&(r.icon=fr(e.icon,t)),e.class&&(r.cssClasses=fr(e.class,t))},"decorateNode"),Rwt=o(e=>{switch(e){case Xn.DEFAULT:return"no-border";case Xn.RECT:return"rect";case Xn.ROUNDED_RECT:return"rounded-rect";case Xn.CIRCLE:return"circle";case Xn.CLOUD:return"cloud";case Xn.BANG:return"bang";case Xn.HEXAGON:return"hexgon";default:return"no-border"}},"type2Str"),Lwt=o(()=>Z,"getLogger"),Mwt=o(e=>iq[e],"getElementById"),Nwt={clear:kwt,addNode:Ewt,getSections:z7e,getData:Swt,nodeType:Xn,getType:Awt,setElementForId:_wt,decorateNode:Dwt,type2Str:Rwt,getLogger:Lwt,getElementById:Mwt},G7e=Nwt});var Iwt,W7e,q7e=z(()=>{"use strict";Ut();St();ps();Di();Bn();W4();J4();Iwt=o(async(e,t,r,i)=>{Z.debug(`Rendering kanban diagram
-`+e);let a=i.db.getData(),s=ge();s.htmlLabels=!1;let l=bi(t);for(let v of a.nodes)v.domId=`${t}-${v.id}`;let u=l.append("g");u.attr("class","sections");let h=l.append("g");h.attr("class","items");let d=a.nodes.filter(v=>v.isGroup),f=0,p=10,m=[],g=25;for(let v of d){let x=s?.kanban?.sectionWidth||200;f=f+1,v.x=x*f+(f-1)*p/2,v.width=x,v.y=0,v.height=x*3,v.rx=5,v.ry=5,v.cssClasses=v.cssClasses+" section-"+f;let b=await wg(u,v);g=Math.max(g,b?.labelBBox?.height),m.push(b)}let y=0;for(let v of d){let x=m[y];y=y+1;let b=s?.kanban?.sectionWidth||200,T=-b*3/2+g,w=T,C=a.nodes.filter(A=>A.parentId===v.id);for(let A of C){if(A.isGroup)throw new Error("Groups within groups are not allowed in Kanban diagrams");A.x=v.x,A.width=b-1.5*p;let P=(await Sg(h,A,{config:s})).node().getBBox();A.y=w+P.height/2,await nb(A),w=A.y+P.height/2+p/2}let k=x.cluster.select("rect"),E=Math.max(w-T+3*p,50)+(g-25);k.attr("height",E)}Io(void 0,l,s.mindmap?.padding??or.kanban.padding,s.mindmap?.useMaxWidth??or.kanban.useMaxWidth)},"draw"),W7e={draw:Iwt}});var Owt,Pwt,U7e,H7e=z(()=>{"use strict";Cn();k1();Owt=o(e=>{let t="";for(let i=0;i<e.THEME_COLOR_LIMIT;i++)e["lineColor"+i]=e["lineColor"+i]||e["cScaleInv"+i],ri(e["lineColor"+i])?e["lineColor"+i]=je(e["lineColor"+i],20):e["lineColor"+i]=Xe(e["lineColor"+i],20);let r=o((i,n)=>e.darkMode?Xe(i,n):je(i,n),"adjuster");for(let i=0;i<e.THEME_COLOR_LIMIT;i++){let n=""+(17-3*i);t+=`
-    .section-${i-1} rect, .section-${i-1} path, .section-${i-1} circle, .section-${i-1} polygon, .section-${i-1} path  {
-      fill: ${r(e["cScale"+i],10)};
-      stroke: ${r(e["cScale"+i],10)};
+`+i+`
+}`;let d=Qd(h,{schema:Zd});if(d.shape&&(d.shape!==d.shape.toLowerCase()||d.shape.includes("_")))throw new Error(`No such shape: ${d.shape}. Shape names should be lowercase.`);d?.shape&&d.shape==="kanbanItem"&&(l.shape=d?.shape),d?.label&&(l.label=d?.label),d?.icon&&(l.icon=d?.icon.toString()),d?.assigned&&(l.assigned=d?.assigned.toString()),d?.ticket&&(l.ticket=d?.ticket.toString()),d?.priority&&(l.priority=d?.priority)}let u=K_t(e);u?l.parentId=u.id||"kbn"+tj++:rj.push(l),Ol.push(l)},"addNode"),pa={DEFAULT:0,NO_BORDER:0,ROUNDED_RECT:1,RECT:2,CIRCLE:3,CLOUD:4,BANG:5,HEXAGON:6},J_t=o((e,t)=>{switch(Z.debug("In get type",e,t),e){case"[":return pa.RECT;case"(":return t===")"?pa.ROUNDED_RECT:pa.CLOUD;case"((":return pa.CIRCLE;case")":return pa.CLOUD;case"))":return pa.BANG;case"{{":return pa.HEXAGON;default:return pa.DEFAULT}},"getType"),eLt=o((e,t)=>{nj[e]=t},"setElementForId"),tLt=o(e=>{if(!e)return;let t=Ae(),r=Ol[Ol.length-1];e.icon&&(r.icon=mr(e.icon,t)),e.class&&(r.cssClasses=mr(e.class,t))},"decorateNode"),rLt=o(e=>{switch(e){case pa.DEFAULT:return"no-border";case pa.RECT:return"rect";case pa.ROUNDED_RECT:return"rounded-rect";case pa.CIRCLE:return"circle";case pa.CLOUD:return"cloud";case pa.BANG:return"bang";case pa.HEXAGON:return"hexgon";default:return"no-border"}},"type2Str"),nLt=o(()=>Z,"getLogger"),iLt=o(e=>nj[e],"getElementById"),aLt={clear:X_t,addNode:Q_t,getSections:INe,getData:Z_t,nodeType:pa,getType:J_t,setElementForId:eLt,decorateNode:tLt,type2Str:rLt,getLogger:nLt,getElementById:iLt},MNe=aLt});var sLt,PNe,ONe=F(()=>{"use strict";Xt();vt();Ka();$n();Wi();Wy();Lm();sLt=o(async(e,t,r,n)=>{Z.debug(`Rendering kanban diagram
+`+e);let a=n.db.getData(),s=Ae();s.htmlLabels=!1;let l=xn(t);for(let v of a.nodes)v.domId=`${t}-${v.id}`;let u=l.append("g");u.attr("class","sections");let h=l.append("g");h.attr("class","items");let d=a.nodes.filter(v=>v.isGroup),f=0,p=10,m=[],g=25;for(let v of d){let x=s?.kanban?.sectionWidth||200;f=f+1,v.x=x*f+(f-1)*p/2,v.width=x,v.y=0,v.height=x*3,v.rx=5,v.ry=5,v.cssClasses=v.cssClasses+" section-"+f;let b=await rf(u,v);g=Math.max(g,b?.labelBBox?.height),m.push(b)}let y=0;for(let v of d){let x=m[y];y=y+1;let b=s?.kanban?.sectionWidth||200,T=-b*3/2+g,k=T,C=a.nodes.filter(R=>R.parentId===v.id);for(let R of C){if(R.isGroup)throw new Error("Groups within groups are not allowed in Kanban diagrams");R.x=v.x,R.width=b-1.5*p;let N=(await nf(h,R,{config:s})).node().getBBox();R.y=k+N.height/2,await _m(R),k=R.y+N.height/2+p/2}let w=x.cluster.select("rect"),S=Math.max(k-T+3*p,50)+(g-25);w.attr("height",S)}ul(void 0,l,s.mindmap?.padding??cr.kanban.padding,s.mindmap?.useMaxWidth??cr.kanban.useMaxWidth)},"draw"),PNe={draw:sLt}});var oLt,lLt,BNe,$Ne=F(()=>{"use strict";zi();X1();oLt=o(e=>{let t="";for(let n=0;n<e.THEME_COLOR_LIMIT;n++)e["lineColor"+n]=e["lineColor"+n]||e["cScaleInv"+n],Tn(e["lineColor"+n])?e["lineColor"+n]=Qe(e["lineColor"+n],20):e["lineColor"+n]=Je(e["lineColor"+n],20);let r=o((n,i)=>e.darkMode?Je(n,i):Qe(n,i),"adjuster");for(let n=0;n<e.THEME_COLOR_LIMIT;n++){let i=""+(17-3*n);t+=`
+    .section-${n-1} rect, .section-${n-1} path, .section-${n-1} circle, .section-${n-1} polygon, .section-${n-1} path  {
+      fill: ${r(e["cScale"+n],10)};
+      stroke: ${r(e["cScale"+n],10)};
 
     }
-    .section-${i-1} text {
-     fill: ${e["cScaleLabel"+i]};
+    .section-${n-1} text {
+     fill: ${e["cScaleLabel"+n]};
     }
-    .node-icon-${i-1} {
+    .node-icon-${n-1} {
       font-size: 40px;
-      color: ${e["cScaleLabel"+i]};
+      color: ${e["cScaleLabel"+n]};
     }
-    .section-edge-${i-1}{
-      stroke: ${e["cScale"+i]};
+    .section-edge-${n-1}{
+      stroke: ${e["cScale"+n]};
     }
-    .edge-depth-${i-1}{
-      stroke-width: ${n};
+    .edge-depth-${n-1}{
+      stroke-width: ${i};
     }
-    .section-${i-1} line {
-      stroke: ${e["cScaleInv"+i]} ;
+    .section-${n-1} line {
+      stroke: ${e["cScaleInv"+n]} ;
       stroke-width: 3;
     }
 
@@ -2827,11 +2841,11 @@
     stroke: ${e.nodeBorder};
     text-decoration: underline;
   }
-    `}return t},"genSections"),Pwt=o(e=>`
+    `}return t},"genSections"),lLt=o(e=>`
   .edge {
     stroke-width: 3;
   }
-  ${Owt(e)}
+  ${oLt(e)}
   .section-root rect, .section-root path, .section-root circle, .section-root polygon  {
     fill: ${e.git0};
   }
@@ -2858,15 +2872,15 @@
     dominant-baseline: middle;
     text-align: center;
   }
-    ${Vc()}
-`,"getStyles"),U7e=Pwt});var Y7e={};xr(Y7e,{diagram:()=>Bwt});var Bwt,j7e=z(()=>{"use strict";$7e();V7e();q7e();H7e();Bwt={db:G7e,renderer:W7e,parser:F7e,styles:U7e}});var nq,tC,Z7e=z(()=>{"use strict";nq=(function(){var e=o(function(l,u,h,d){for(h=h||{},d=l.length;d--;h[l[d]]=u);return h},"o"),t=[1,9],r=[1,10],i=[1,5,10,12],n={trace:o(function(){},"trace"),yy:{},symbols_:{error:2,start:3,SANKEY:4,NEWLINE:5,csv:6,opt_eof:7,record:8,csv_tail:9,EOF:10,"field[source]":11,COMMA:12,"field[target]":13,"field[value]":14,field:15,escaped:16,non_escaped:17,DQUOTE:18,ESCAPED_TEXT:19,NON_ESCAPED_TEXT:20,$accept:0,$end:1},terminals_:{2:"error",4:"SANKEY",5:"NEWLINE",10:"EOF",11:"field[source]",12:"COMMA",13:"field[target]",14:"field[value]",18:"DQUOTE",19:"ESCAPED_TEXT",20:"NON_ESCAPED_TEXT"},productions_:[0,[3,4],[6,2],[9,2],[9,0],[7,1],[7,0],[8,5],[15,1],[15,1],[16,3],[17,1]],performAction:o(function(u,h,d,f,p,m,g){var y=m.length-1;switch(p){case 7:let v=f.findOrCreateNode(m[y-4].trim().replaceAll('""','"')),x=f.findOrCreateNode(m[y-2].trim().replaceAll('""','"')),b=parseFloat(m[y].trim());f.addLink(v,x,b);break;case 8:case 9:case 11:this.$=m[y];break;case 10:this.$=m[y-1];break}},"anonymous"),table:[{3:1,4:[1,2]},{1:[3]},{5:[1,3]},{6:4,8:5,15:6,16:7,17:8,18:t,20:r},{1:[2,6],7:11,10:[1,12]},e(r,[2,4],{9:13,5:[1,14]}),{12:[1,15]},e(i,[2,8]),e(i,[2,9]),{19:[1,16]},e(i,[2,11]),{1:[2,1]},{1:[2,5]},e(r,[2,2]),{6:17,8:5,15:6,16:7,17:8,18:t,20:r},{15:18,16:7,17:8,18:t,20:r},{18:[1,19]},e(r,[2,3]),{12:[1,20]},e(i,[2,10]),{15:21,16:7,17:8,18:t,20:r},e([1,5,10],[2,7])],defaultActions:{11:[2,1],12:[2,5]},parseError:o(function(u,h){if(h.recoverable)this.trace(u);else{var d=new Error(u);throw d.hash=h,d}},"parseError"),parse:o(function(u){var h=this,d=[0],f=[],p=[null],m=[],g=this.table,y="",v=0,x=0,b=0,T=2,w=1,C=m.slice.call(arguments,1),k=Object.create(this.lexer),E={yy:{}};for(var A in this.yy)Object.prototype.hasOwnProperty.call(this.yy,A)&&(E.yy[A]=this.yy[A]);k.setInput(u,E.yy),E.yy.lexer=k,E.yy.parser=this,typeof k.yylloc>"u"&&(k.yylloc={});var N=k.yylloc;m.push(N);var P=k.options&&k.options.ranges;typeof E.yy.parseError=="function"?this.parseError=E.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function I(U){d.length=d.length-2*U,p.length=p.length-U,m.length=m.length-U}o(I,"popStack");function D(){var U;return U=f.pop()||k.lex()||w,typeof U!="number"&&(U instanceof Array&&(f=U,U=f.pop()),U=h.symbols_[U]||U),U}o(D,"lex");for(var _,R,M,L,B,O,$={},G,F,V,H;;){if(M=d[d.length-1],this.defaultActions[M]?L=this.defaultActions[M]:((_===null||typeof _>"u")&&(_=D()),L=g[M]&&g[M][_]),typeof L>"u"||!L.length||!L[0]){var j="";H=[];for(G in g[M])this.terminals_[G]&&G>T&&H.push("'"+this.terminals_[G]+"'");k.showPosition?j="Parse error on line "+(v+1)+`:
-`+k.showPosition()+`
-Expecting `+H.join(", ")+", got '"+(this.terminals_[_]||_)+"'":j="Parse error on line "+(v+1)+": Unexpected "+(_==w?"end of input":"'"+(this.terminals_[_]||_)+"'"),this.parseError(j,{text:k.match,token:this.terminals_[_]||_,line:k.yylineno,loc:N,expected:H})}if(L[0]instanceof Array&&L.length>1)throw new Error("Parse Error: multiple actions possible at state: "+M+", token: "+_);switch(L[0]){case 1:d.push(_),p.push(k.yytext),m.push(k.yylloc),d.push(L[1]),_=null,R?(_=R,R=null):(x=k.yyleng,y=k.yytext,v=k.yylineno,N=k.yylloc,b>0&&b--);break;case 2:if(F=this.productions_[L[1]][1],$.$=p[p.length-F],$._$={first_line:m[m.length-(F||1)].first_line,last_line:m[m.length-1].last_line,first_column:m[m.length-(F||1)].first_column,last_column:m[m.length-1].last_column},P&&($._$.range=[m[m.length-(F||1)].range[0],m[m.length-1].range[1]]),O=this.performAction.apply($,[y,x,v,E.yy,L[1],p,m].concat(C)),typeof O<"u")return O;F&&(d=d.slice(0,-1*F*2),p=p.slice(0,-1*F),m=m.slice(0,-1*F)),d.push(this.productions_[L[1]][0]),p.push($.$),m.push($._$),V=g[d[d.length-2]][d[d.length-1]],d.push(V);break;case 3:return!0}}return!0},"parse")},a=(function(){var l={EOF:1,parseError:o(function(h,d){if(this.yy.parser)this.yy.parser.parseError(h,d);else throw new Error(h)},"parseError"),setInput:o(function(u,h){return this.yy=h||this.yy||{},this._input=u,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},"setInput"),input:o(function(){var u=this._input[0];this.yytext+=u,this.yyleng++,this.offset++,this.match+=u,this.matched+=u;var h=u.match(/(?:\r\n?|\n).*/g);return h?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),u},"input"),unput:o(function(u){var h=u.length,d=u.split(/(?:\r\n?|\n)/g);this._input=u+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-h),this.offset-=h;var f=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),d.length-1&&(this.yylineno-=d.length-1);var p=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:d?(d.length===f.length?this.yylloc.first_column:0)+f[f.length-d.length].length-d[0].length:this.yylloc.first_column-h},this.options.ranges&&(this.yylloc.range=[p[0],p[0]+this.yyleng-h]),this.yyleng=this.yytext.length,this},"unput"),more:o(function(){return this._more=!0,this},"more"),reject:o(function(){if(this.options.backtrack_lexer)this._backtrack=!0;else return this.parseError("Lexical error on line "+(this.yylineno+1)+`. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).
+    ${Eu()}
+`,"getStyles"),BNe=lLt});var FNe={};ir(FNe,{diagram:()=>cLt});var cLt,zNe=F(()=>{"use strict";DNe();NNe();ONe();$Ne();cLt={db:MNe,renderer:PNe,parser:LNe,styles:BNe}});var ij,Uw,WNe=F(()=>{"use strict";ij=(function(){var e=o(function(l,u,h,d){for(h=h||{},d=l.length;d--;h[l[d]]=u);return h},"o"),t=[1,9],r=[1,10],n=[1,5,10,12],i={trace:o(function(){},"trace"),yy:{},symbols_:{error:2,start:3,SANKEY:4,NEWLINE:5,csv:6,opt_eof:7,record:8,csv_tail:9,EOF:10,"field[source]":11,COMMA:12,"field[target]":13,"field[value]":14,field:15,escaped:16,non_escaped:17,DQUOTE:18,ESCAPED_TEXT:19,NON_ESCAPED_TEXT:20,$accept:0,$end:1},terminals_:{2:"error",4:"SANKEY",5:"NEWLINE",10:"EOF",11:"field[source]",12:"COMMA",13:"field[target]",14:"field[value]",18:"DQUOTE",19:"ESCAPED_TEXT",20:"NON_ESCAPED_TEXT"},productions_:[0,[3,4],[6,2],[9,2],[9,0],[7,1],[7,0],[8,5],[15,1],[15,1],[16,3],[17,1]],performAction:o(function(u,h,d,f,p,m,g){var y=m.length-1;switch(p){case 7:let v=f.findOrCreateNode(m[y-4].trim().replaceAll('""','"')),x=f.findOrCreateNode(m[y-2].trim().replaceAll('""','"')),b=parseFloat(m[y].trim());f.addLink(v,x,b);break;case 8:case 9:case 11:this.$=m[y];break;case 10:this.$=m[y-1];break}},"anonymous"),table:[{3:1,4:[1,2]},{1:[3]},{5:[1,3]},{6:4,8:5,15:6,16:7,17:8,18:t,20:r},{1:[2,6],7:11,10:[1,12]},e(r,[2,4],{9:13,5:[1,14]}),{12:[1,15]},e(n,[2,8]),e(n,[2,9]),{19:[1,16]},e(n,[2,11]),{1:[2,1]},{1:[2,5]},e(r,[2,2]),{6:17,8:5,15:6,16:7,17:8,18:t,20:r},{15:18,16:7,17:8,18:t,20:r},{18:[1,19]},e(r,[2,3]),{12:[1,20]},e(n,[2,10]),{15:21,16:7,17:8,18:t,20:r},e([1,5,10],[2,7])],defaultActions:{11:[2,1],12:[2,5]},parseError:o(function(u,h){if(h.recoverable)this.trace(u);else{var d=new Error(u);throw d.hash=h,d}},"parseError"),parse:o(function(u){var h=this,d=[0],f=[],p=[null],m=[],g=this.table,y="",v=0,x=0,b=0,T=2,k=1,C=m.slice.call(arguments,1),w=Object.create(this.lexer),S={yy:{}};for(var R in this.yy)Object.prototype.hasOwnProperty.call(this.yy,R)&&(S.yy[R]=this.yy[R]);w.setInput(u,S.yy),S.yy.lexer=w,S.yy.parser=this,typeof w.yylloc>"u"&&(w.yylloc={});var L=w.yylloc;m.push(L);var N=w.options&&w.options.ranges;typeof S.yy.parseError=="function"?this.parseError=S.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function I(j){d.length=d.length-2*j,p.length=p.length-j,m.length=m.length-j}o(I,"popStack");function _(){var j;return j=f.pop()||w.lex()||k,typeof j!="number"&&(j instanceof Array&&(f=j,j=f.pop()),j=h.symbols_[j]||j),j}o(_,"lex");for(var A,M,D,P,B,O,$={},V,G,z,W;;){if(D=d[d.length-1],this.defaultActions[D]?P=this.defaultActions[D]:((A===null||typeof A>"u")&&(A=_()),P=g[D]&&g[D][A]),typeof P>"u"||!P.length||!P[0]){var H="";W=[];for(V in g[D])this.terminals_[V]&&V>T&&W.push("'"+this.terminals_[V]+"'");w.showPosition?H="Parse error on line "+(v+1)+`:
+`+w.showPosition()+`
+Expecting `+W.join(", ")+", got '"+(this.terminals_[A]||A)+"'":H="Parse error on line "+(v+1)+": Unexpected "+(A==k?"end of input":"'"+(this.terminals_[A]||A)+"'"),this.parseError(H,{text:w.match,token:this.terminals_[A]||A,line:w.yylineno,loc:L,expected:W})}if(P[0]instanceof Array&&P.length>1)throw new Error("Parse Error: multiple actions possible at state: "+D+", token: "+A);switch(P[0]){case 1:d.push(A),p.push(w.yytext),m.push(w.yylloc),d.push(P[1]),A=null,M?(A=M,M=null):(x=w.yyleng,y=w.yytext,v=w.yylineno,L=w.yylloc,b>0&&b--);break;case 2:if(G=this.productions_[P[1]][1],$.$=p[p.length-G],$._$={first_line:m[m.length-(G||1)].first_line,last_line:m[m.length-1].last_line,first_column:m[m.length-(G||1)].first_column,last_column:m[m.length-1].last_column},N&&($._$.range=[m[m.length-(G||1)].range[0],m[m.length-1].range[1]]),O=this.performAction.apply($,[y,x,v,S.yy,P[1],p,m].concat(C)),typeof O<"u")return O;G&&(d=d.slice(0,-1*G*2),p=p.slice(0,-1*G),m=m.slice(0,-1*G)),d.push(this.productions_[P[1]][0]),p.push($.$),m.push($._$),z=g[d[d.length-2]][d[d.length-1]],d.push(z);break;case 3:return!0}}return!0},"parse")},a=(function(){var l={EOF:1,parseError:o(function(h,d){if(this.yy.parser)this.yy.parser.parseError(h,d);else throw new Error(h)},"parseError"),setInput:o(function(u,h){return this.yy=h||this.yy||{},this._input=u,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},"setInput"),input:o(function(){var u=this._input[0];this.yytext+=u,this.yyleng++,this.offset++,this.match+=u,this.matched+=u;var h=u.match(/(?:\r\n?|\n).*/g);return h?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),u},"input"),unput:o(function(u){var h=u.length,d=u.split(/(?:\r\n?|\n)/g);this._input=u+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-h),this.offset-=h;var f=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),d.length-1&&(this.yylineno-=d.length-1);var p=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:d?(d.length===f.length?this.yylloc.first_column:0)+f[f.length-d.length].length-d[0].length:this.yylloc.first_column-h},this.options.ranges&&(this.yylloc.range=[p[0],p[0]+this.yyleng-h]),this.yyleng=this.yytext.length,this},"unput"),more:o(function(){return this._more=!0,this},"more"),reject:o(function(){if(this.options.backtrack_lexer)this._backtrack=!0;else return this.parseError("Lexical error on line "+(this.yylineno+1)+`. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).
 `+this.showPosition(),{text:"",token:null,line:this.yylineno});return this},"reject"),less:o(function(u){this.unput(this.match.slice(u))},"less"),pastInput:o(function(){var u=this.matched.substr(0,this.matched.length-this.match.length);return(u.length>20?"...":"")+u.substr(-20).replace(/\n/g,"")},"pastInput"),upcomingInput:o(function(){var u=this.match;return u.length<20&&(u+=this._input.substr(0,20-u.length)),(u.substr(0,20)+(u.length>20?"...":"")).replace(/\n/g,"")},"upcomingInput"),showPosition:o(function(){var u=this.pastInput(),h=new Array(u.length+1).join("-");return u+this.upcomingInput()+`
 `+h+"^"},"showPosition"),test_match:o(function(u,h){var d,f,p;if(this.options.backtrack_lexer&&(p={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(p.yylloc.range=this.yylloc.range.slice(0))),f=u[0].match(/(?:\r\n?|\n).*/g),f&&(this.yylineno+=f.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:f?f[f.length-1].length-f[f.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+u[0].length},this.yytext+=u[0],this.match+=u[0],this.matches=u,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(u[0].length),this.matched+=u[0],d=this.performAction.call(this,this.yy,this,h,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),d)return d;if(this._backtrack){for(var m in p)this[m]=p[m];return!1}return!1},"test_match"),next:o(function(){if(this.done)return this.EOF;this._input||(this.done=!0);var u,h,d,f;this._more||(this.yytext="",this.match="");for(var p=this._currentRules(),m=0;m<p.length;m++)if(d=this._input.match(this.rules[p[m]]),d&&(!h||d[0].length>h[0].length)){if(h=d,f=m,this.options.backtrack_lexer){if(u=this.test_match(d,p[m]),u!==!1)return u;if(this._backtrack){h=!1;continue}else return!1}else if(!this.options.flex)break}return h?(u=this.test_match(h,p[f]),u!==!1?u:!1):this._input===""?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+`. Unrecognized text.
-`+this.showPosition(),{text:"",token:null,line:this.yylineno})},"next"),lex:o(function(){var h=this.next();return h||this.lex()},"lex"),begin:o(function(h){this.conditionStack.push(h)},"begin"),popState:o(function(){var h=this.conditionStack.length-1;return h>0?this.conditionStack.pop():this.conditionStack[0]},"popState"),_currentRules:o(function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},"_currentRules"),topState:o(function(h){return h=this.conditionStack.length-1-Math.abs(h||0),h>=0?this.conditionStack[h]:"INITIAL"},"topState"),pushState:o(function(h){this.begin(h)},"pushState"),stateStackSize:o(function(){return this.conditionStack.length},"stateStackSize"),options:{"case-insensitive":!0},performAction:o(function(h,d,f,p){var m=p;switch(f){case 0:return this.pushState("csv"),4;break;case 1:return this.pushState("csv"),4;break;case 2:return 10;case 3:return 5;case 4:return 12;case 5:return this.pushState("escaped_text"),18;break;case 6:return 20;case 7:return this.popState("escaped_text"),18;break;case 8:return 19}},"anonymous"),rules:[/^(?:sankey-beta\b)/i,/^(?:sankey\b)/i,/^(?:$)/i,/^(?:((\u000D\u000A)|(\u000A)))/i,/^(?:(\u002C))/i,/^(?:(\u0022))/i,/^(?:([\u0020-\u0021\u0023-\u002B\u002D-\u007E])*)/i,/^(?:(\u0022)(?!(\u0022)))/i,/^(?:(([\u0020-\u0021\u0023-\u002B\u002D-\u007E])|(\u002C)|(\u000D)|(\u000A)|(\u0022)(\u0022))*)/i],conditions:{csv:{rules:[2,3,4,5,6,7,8],inclusive:!1},escaped_text:{rules:[7,8],inclusive:!1},INITIAL:{rules:[0,1,2,3,4,5,6,7,8],inclusive:!0}}};return l})();n.lexer=a;function s(){this.yy={}}return o(s,"Parser"),s.prototype=n,n.Parser=s,new s})();nq.parser=nq;tC=nq});var p_,m_,f_,Gwt,aq,Vwt,sq,Wwt,qwt,Uwt,Hwt,Q7e,J7e=z(()=>{"use strict";Ut();Ir();Ci();p_=[],m_=[],f_=new Map,Gwt=o(()=>{p_=[],m_=[],f_=new Map,gr()},"clear"),aq=class{constructor(t,r,i=0){this.source=t;this.target=r;this.value=i}static{o(this,"SankeyLink")}},Vwt=o((e,t,r)=>{p_.push(new aq(e,t,r))},"addLink"),sq=class{constructor(t){this.ID=t}static{o(this,"SankeyNode")}},Wwt=o(e=>{e=vt.sanitizeText(e,ge());let t=f_.get(e);return t===void 0&&(t=new sq(e),f_.set(e,t),m_.push(t)),t},"findOrCreateNode"),qwt=o(()=>m_,"getNodes"),Uwt=o(()=>p_,"getLinks"),Hwt=o(()=>({nodes:m_.map(e=>({id:e.ID})),links:p_.map(e=>({source:e.source.ID,target:e.target.ID,value:e.value}))}),"getGraph"),Q7e={nodesMap:f_,getConfig:o(()=>ge().sankey,"getConfig"),getNodes:qwt,getLinks:Uwt,getGraph:Hwt,addLink:Vwt,findOrCreateNode:Wwt,getAccTitle:kr,setAccTitle:Cr,getAccDescription:Sr,setAccDescription:wr,getDiagramTitle:Er,setDiagramTitle:Ar,clear:Gwt}});function rC(e,t){let r;if(t===void 0)for(let i of e)i!=null&&(r<i||r===void 0&&i>=i)&&(r=i);else{let i=-1;for(let n of e)(n=t(n,++i,e))!=null&&(r<n||r===void 0&&n>=n)&&(r=n)}return r}var eDe=z(()=>{"use strict";o(rC,"max")});function Dy(e,t){let r;if(t===void 0)for(let i of e)i!=null&&(r>i||r===void 0&&i>=i)&&(r=i);else{let i=-1;for(let n of e)(n=t(n,++i,e))!=null&&(r>n||r===void 0&&n>=n)&&(r=n)}return r}var tDe=z(()=>{"use strict";o(Dy,"min")});function Ry(e,t){let r=0;if(t===void 0)for(let i of e)(i=+i)&&(r+=i);else{let i=-1;for(let n of e)(n=+t(n,++i,e))&&(r+=n)}return r}var rDe=z(()=>{"use strict";o(Ry,"sum")});var oq=z(()=>{"use strict";eDe();tDe();rDe()});function Ywt(e){return e.target.depth}function lq(e){return e.depth}function cq(e,t){return t-1-e.height}function iC(e,t){return e.sourceLinks.length?e.depth:t-1}function uq(e){return e.targetLinks.length?e.depth:e.sourceLinks.length?Dy(e.sourceLinks,Ywt)-1:0}var hq=z(()=>{"use strict";oq();o(Ywt,"targetDepth");o(lq,"left");o(cq,"right");o(iC,"justify");o(uq,"center")});function Ly(e){return function(){return e}}var iDe=z(()=>{"use strict";o(Ly,"constant")});function nDe(e,t){return g_(e.source,t.source)||e.index-t.index}function aDe(e,t){return g_(e.target,t.target)||e.index-t.index}function g_(e,t){return e.y0-t.y0}function dq(e){return e.value}function jwt(e){return e.index}function Xwt(e){return e.nodes}function Kwt(e){return e.links}function sDe(e,t){let r=e.get(t);if(!r)throw new Error("missing: "+t);return r}function oDe({nodes:e}){for(let t of e){let r=t.y0,i=r;for(let n of t.sourceLinks)n.y0=r+n.width/2,r+=n.width;for(let n of t.targetLinks)n.y1=i+n.width/2,i+=n.width}}function y_(){let e=0,t=0,r=1,i=1,n=24,a=8,s,l=jwt,u=iC,h,d,f=Xwt,p=Kwt,m=6;function g(){let M={nodes:f.apply(null,arguments),links:p.apply(null,arguments)};return y(M),v(M),x(M),b(M),C(M),oDe(M),M}o(g,"sankey"),g.update=function(M){return oDe(M),M},g.nodeId=function(M){return arguments.length?(l=typeof M=="function"?M:Ly(M),g):l},g.nodeAlign=function(M){return arguments.length?(u=typeof M=="function"?M:Ly(M),g):u},g.nodeSort=function(M){return arguments.length?(h=M,g):h},g.nodeWidth=function(M){return arguments.length?(n=+M,g):n},g.nodePadding=function(M){return arguments.length?(a=s=+M,g):a},g.nodes=function(M){return arguments.length?(f=typeof M=="function"?M:Ly(M),g):f},g.links=function(M){return arguments.length?(p=typeof M=="function"?M:Ly(M),g):p},g.linkSort=function(M){return arguments.length?(d=M,g):d},g.size=function(M){return arguments.length?(e=t=0,r=+M[0],i=+M[1],g):[r-e,i-t]},g.extent=function(M){return arguments.length?(e=+M[0][0],r=+M[1][0],t=+M[0][1],i=+M[1][1],g):[[e,t],[r,i]]},g.iterations=function(M){return arguments.length?(m=+M,g):m};function y({nodes:M,links:L}){for(let[O,$]of M.entries())$.index=O,$.sourceLinks=[],$.targetLinks=[];let B=new Map(M.map((O,$)=>[l(O,$,M),O]));for(let[O,$]of L.entries()){$.index=O;let{source:G,target:F}=$;typeof G!="object"&&(G=$.source=sDe(B,G)),typeof F!="object"&&(F=$.target=sDe(B,F)),G.sourceLinks.push($),F.targetLinks.push($)}if(d!=null)for(let{sourceLinks:O,targetLinks:$}of M)O.sort(d),$.sort(d)}o(y,"computeNodeLinks");function v({nodes:M}){for(let L of M)L.value=L.fixedValue===void 0?Math.max(Ry(L.sourceLinks,dq),Ry(L.targetLinks,dq)):L.fixedValue}o(v,"computeNodeValues");function x({nodes:M}){let L=M.length,B=new Set(M),O=new Set,$=0;for(;B.size;){for(let G of B){G.depth=$;for(let{target:F}of G.sourceLinks)O.add(F)}if(++$>L)throw new Error("circular link");B=O,O=new Set}}o(x,"computeNodeDepths");function b({nodes:M}){let L=M.length,B=new Set(M),O=new Set,$=0;for(;B.size;){for(let G of B){G.height=$;for(let{source:F}of G.targetLinks)O.add(F)}if(++$>L)throw new Error("circular link");B=O,O=new Set}}o(b,"computeNodeHeights");function T({nodes:M}){let L=rC(M,$=>$.depth)+1,B=(r-e-n)/(L-1),O=new Array(L);for(let $ of M){let G=Math.max(0,Math.min(L-1,Math.floor(u.call(null,$,L))));$.layer=G,$.x0=e+G*B,$.x1=$.x0+n,O[G]?O[G].push($):O[G]=[$]}if(h)for(let $ of O)$.sort(h);return O}o(T,"computeNodeLayers");function w(M){let L=Dy(M,B=>(i-t-(B.length-1)*s)/Ry(B,dq));for(let B of M){let O=t;for(let $ of B){$.y0=O,$.y1=O+$.value*L,O=$.y1+s;for(let G of $.sourceLinks)G.width=G.value*L}O=(i-O+s)/(B.length+1);for(let $=0;$<B.length;++$){let G=B[$];G.y0+=O*($+1),G.y1+=O*($+1)}D(B)}}o(w,"initializeNodeBreadths");function C(M){let L=T(M);s=Math.min(a,(i-t)/(rC(L,B=>B.length)-1)),w(L);for(let B=0;B<m;++B){let O=Math.pow(.99,B),$=Math.max(1-O,(B+1)/m);E(L,O,$),k(L,O,$)}}o(C,"computeNodeBreadths");function k(M,L,B){for(let O=1,$=M.length;O<$;++O){let G=M[O];for(let F of G){let V=0,H=0;for(let{source:U,value:Q}of F.targetLinks){let Y=Q*(F.layer-U.layer);V+=_(U,F)*Y,H+=Y}if(!(H>0))continue;let j=(V/H-F.y0)*L;F.y0+=j,F.y1+=j,I(F)}h===void 0&&G.sort(g_),A(G,B)}}o(k,"relaxLeftToRight");function E(M,L,B){for(let O=M.length,$=O-2;$>=0;--$){let G=M[$];for(let F of G){let V=0,H=0;for(let{target:U,value:Q}of F.sourceLinks){let Y=Q*(U.layer-F.layer);V+=R(F,U)*Y,H+=Y}if(!(H>0))continue;let j=(V/H-F.y0)*L;F.y0+=j,F.y1+=j,I(F)}h===void 0&&G.sort(g_),A(G,B)}}o(E,"relaxRightToLeft");function A(M,L){let B=M.length>>1,O=M[B];P(M,O.y0-s,B-1,L),N(M,O.y1+s,B+1,L),P(M,i,M.length-1,L),N(M,t,0,L)}o(A,"resolveCollisions");function N(M,L,B,O){for(;B<M.length;++B){let $=M[B],G=(L-$.y0)*O;G>1e-6&&($.y0+=G,$.y1+=G),L=$.y1+s}}o(N,"resolveCollisionsTopToBottom");function P(M,L,B,O){for(;B>=0;--B){let $=M[B],G=($.y1-L)*O;G>1e-6&&($.y0-=G,$.y1-=G),L=$.y0-s}}o(P,"resolveCollisionsBottomToTop");function I({sourceLinks:M,targetLinks:L}){if(d===void 0){for(let{source:{sourceLinks:B}}of L)B.sort(aDe);for(let{target:{targetLinks:B}}of M)B.sort(nDe)}}o(I,"reorderNodeLinks");function D(M){if(d===void 0)for(let{sourceLinks:L,targetLinks:B}of M)L.sort(aDe),B.sort(nDe)}o(D,"reorderLinks");function _(M,L){let B=M.y0-(M.sourceLinks.length-1)*s/2;for(let{target:O,width:$}of M.sourceLinks){if(O===L)break;B+=$+s}for(let{source:O,width:$}of L.targetLinks){if(O===M)break;B-=$}return B}o(_,"targetTop");function R(M,L){let B=L.y0-(L.targetLinks.length-1)*s/2;for(let{source:O,width:$}of L.targetLinks){if(O===M)break;B+=$+s}for(let{target:O,width:$}of M.sourceLinks){if(O===L)break;B-=$}return B}return o(R,"sourceTop"),g}var lDe=z(()=>{"use strict";oq();hq();iDe();o(nDe,"ascendingSourceBreadth");o(aDe,"ascendingTargetBreadth");o(g_,"ascendingBreadth");o(dq,"value");o(jwt,"defaultId");o(Xwt,"defaultNodes");o(Kwt,"defaultLinks");o(sDe,"find");o(oDe,"computeLinkBreadths");o(y_,"Sankey")});function mq(){this._x0=this._y0=this._x1=this._y1=null,this._=""}function cDe(){return new mq}var fq,pq,Tm,Zwt,gq,uDe=z(()=>{"use strict";fq=Math.PI,pq=2*fq,Tm=1e-6,Zwt=pq-Tm;o(mq,"Path");o(cDe,"path");mq.prototype=cDe.prototype={constructor:mq,moveTo:o(function(e,t){this._+="M"+(this._x0=this._x1=+e)+","+(this._y0=this._y1=+t)},"moveTo"),closePath:o(function(){this._x1!==null&&(this._x1=this._x0,this._y1=this._y0,this._+="Z")},"closePath"),lineTo:o(function(e,t){this._+="L"+(this._x1=+e)+","+(this._y1=+t)},"lineTo"),quadraticCurveTo:o(function(e,t,r,i){this._+="Q"+ +e+","+ +t+","+(this._x1=+r)+","+(this._y1=+i)},"quadraticCurveTo"),bezierCurveTo:o(function(e,t,r,i,n,a){this._+="C"+ +e+","+ +t+","+ +r+","+ +i+","+(this._x1=+n)+","+(this._y1=+a)},"bezierCurveTo"),arcTo:o(function(e,t,r,i,n){e=+e,t=+t,r=+r,i=+i,n=+n;var a=this._x1,s=this._y1,l=r-e,u=i-t,h=a-e,d=s-t,f=h*h+d*d;if(n<0)throw new Error("negative radius: "+n);if(this._x1===null)this._+="M"+(this._x1=e)+","+(this._y1=t);else if(f>Tm)if(!(Math.abs(d*l-u*h)>Tm)||!n)this._+="L"+(this._x1=e)+","+(this._y1=t);else{var p=r-a,m=i-s,g=l*l+u*u,y=p*p+m*m,v=Math.sqrt(g),x=Math.sqrt(f),b=n*Math.tan((fq-Math.acos((g+f-y)/(2*v*x)))/2),T=b/x,w=b/v;Math.abs(T-1)>Tm&&(this._+="L"+(e+T*h)+","+(t+T*d)),this._+="A"+n+","+n+",0,0,"+ +(d*p>h*m)+","+(this._x1=e+w*l)+","+(this._y1=t+w*u)}},"arcTo"),arc:o(function(e,t,r,i,n,a){e=+e,t=+t,r=+r,a=!!a;var s=r*Math.cos(i),l=r*Math.sin(i),u=e+s,h=t+l,d=1^a,f=a?i-n:n-i;if(r<0)throw new Error("negative radius: "+r);this._x1===null?this._+="M"+u+","+h:(Math.abs(this._x1-u)>Tm||Math.abs(this._y1-h)>Tm)&&(this._+="L"+u+","+h),r&&(f<0&&(f=f%pq+pq),f>Zwt?this._+="A"+r+","+r+",0,1,"+d+","+(e-s)+","+(t-l)+"A"+r+","+r+",0,1,"+d+","+(this._x1=u)+","+(this._y1=h):f>Tm&&(this._+="A"+r+","+r+",0,"+ +(f>=fq)+","+d+","+(this._x1=e+r*Math.cos(n))+","+(this._y1=t+r*Math.sin(n))))},"arc"),rect:o(function(e,t,r,i){this._+="M"+(this._x0=this._x1=+e)+","+(this._y0=this._y1=+t)+"h"+ +r+"v"+ +i+"h"+-r+"Z"},"rect"),toString:o(function(){return this._},"toString")};gq=cDe});var hDe=z(()=>{"use strict";uDe()});function v_(e){return o(function(){return e},"constant")}var dDe=z(()=>{"use strict";o(v_,"default")});function fDe(e){return e[0]}function pDe(e){return e[1]}var mDe=z(()=>{"use strict";o(fDe,"x");o(pDe,"y")});var gDe,yDe=z(()=>{"use strict";gDe=Array.prototype.slice});function Qwt(e){return e.source}function Jwt(e){return e.target}function e4t(e){var t=Qwt,r=Jwt,i=fDe,n=pDe,a=null;function s(){var l,u=gDe.call(arguments),h=t.apply(this,u),d=r.apply(this,u);if(a||(a=l=gq()),e(a,+i.apply(this,(u[0]=h,u)),+n.apply(this,u),+i.apply(this,(u[0]=d,u)),+n.apply(this,u)),l)return a=null,l+""||null}return o(s,"link"),s.source=function(l){return arguments.length?(t=l,s):t},s.target=function(l){return arguments.length?(r=l,s):r},s.x=function(l){return arguments.length?(i=typeof l=="function"?l:v_(+l),s):i},s.y=function(l){return arguments.length?(n=typeof l=="function"?l:v_(+l),s):n},s.context=function(l){return arguments.length?(a=l??null,s):a},s}function t4t(e,t,r,i,n){e.moveTo(t,r),e.bezierCurveTo(t=(t+i)/2,r,t,n,i,n)}function yq(){return e4t(t4t)}var vDe=z(()=>{"use strict";hDe();yDe();dDe();mDe();o(Qwt,"linkSource");o(Jwt,"linkTarget");o(e4t,"link");o(t4t,"curveHorizontal");o(yq,"linkHorizontal")});var xDe=z(()=>{"use strict";vDe()});function r4t(e){return[e.source.x1,e.y0]}function i4t(e){return[e.target.x0,e.y1]}function x_(){return yq().source(r4t).target(i4t)}var bDe=z(()=>{"use strict";xDe();o(r4t,"horizontalSource");o(i4t,"horizontalTarget");o(x_,"default")});var TDe=z(()=>{"use strict";lDe();hq();bDe()});var nC,CDe=z(()=>{"use strict";nC=class e{static{o(this,"Uid")}static{this.count=0}static next(t){return new e(t+ ++e.count)}constructor(t){this.id=t,this.href=`#${t}`}toString(){return"url("+this.href+")"}}});var n4t,a4t,s4t,kDe,wDe=z(()=>{"use strict";Ut();Rr();TDe();Di();CDe();n4t={left:lq,right:cq,center:uq,justify:iC},a4t=o(e=>{let t=0,r=0;for(let i of e){let n=i.value??0;n>t&&(t=n,r=i.layer??0)}return r},"findCentralNodeLayer"),s4t=o(function(e,t,r,i){let{securityLevel:n,sankey:a}=ge(),s=vk.sankey,l;n==="sandbox"&&(l=Je("#i"+t));let u=n==="sandbox"?Je(l.nodes()[0].contentDocument.body):Je("body"),h=n==="sandbox"?u.select(`[id="${t}"]`):Je(`[id="${t}"]`),d=a?.width??s.width,f=a?.height??s.width,p=a?.useMaxWidth??s.useMaxWidth,m=a?.nodeAlignment??s.nodeAlignment,g=a?.prefix??s.prefix,y=a?.suffix??s.suffix,v=a?.showValues??s.showValues,x=a?.nodeWidth??s.nodeWidth??10,b=a?.nodePadding??s.nodePadding??12,T=a?.labelStyle??s.labelStyle??"legacy",w=a?.nodeColors??{},C=i.db.getGraph(),k=n4t[m];y_().nodeId(O=>O.id).nodeWidth(x).nodePadding(b+(v?15:0)).nodeAlign(k).extent([[0,0],[d,f]])(C);let A=a4t(C.nodes),N=ro(XL),P=o(O=>w[O]??N(O),"getNodeColor");h.append("g").attr("class","nodes").selectAll(".node").data(C.nodes).join("g").attr("class","node").attr("id",O=>(O.uid=nC.next("node-")).id).attr("transform",function(O){return"translate("+O.x0+","+O.y0+")"}).attr("x",O=>O.x0).attr("y",O=>O.y0).append("rect").attr("height",O=>O.y1-O.y0).attr("width",O=>O.x1-O.x0).attr("fill",O=>P(O.id));let I=o(({id:O,value:$})=>v?`${O}
-${g}${Math.round($*100)/100}${y}`:O,"getText"),D=o(O=>T==="outlined"?(O.layer??0)<A?{x:O.x0-6,anchor:"end"}:{x:O.x1+6,anchor:"start"}:O.x0<d/2?{x:O.x1+6,anchor:"start"}:{x:O.x0-6,anchor:"end"},"getLabelPosition"),_=h.append("g").attr("class","node-labels").attr("font-size",14),R=o(O=>_.selectAll(O?`.${O}`:"text").data(C.nodes).join("text").attr("class",O??null).attr("x",$=>D($).x).attr("y",$=>($.y1+$.y0)/2).attr("dy",`${v?"0":"0.35"}em`).attr("text-anchor",$=>D($).anchor).text(I),"appendLabel");T==="outlined"?(R("sankey-label-bg"),R("sankey-label-fg")):R();let M=h.append("g").attr("class","links").attr("fill","none").attr("stroke-opacity",.5).selectAll(".link").data(C.links).join("g").attr("class","link").style("mix-blend-mode","multiply"),L=a?.linkColor??"gradient";if(L==="gradient"){let O=M.append("linearGradient").attr("id",$=>($.uid=nC.next("linearGradient-")).id).attr("gradientUnits","userSpaceOnUse").attr("x1",$=>$.source.x1).attr("x2",$=>$.target.x0);O.append("stop").attr("offset","0%").attr("stop-color",$=>P($.source.id)),O.append("stop").attr("offset","100%").attr("stop-color",$=>P($.target.id))}let B;switch(L){case"gradient":B=o(O=>O.uid,"coloring");break;case"source":B=o(O=>P(O.source.id),"coloring");break;case"target":B=o(O=>P(O.target.id),"coloring");break;default:B=L}M.append("path").attr("d",x_()).attr("stroke",B).attr("stroke-width",O=>Math.max(1,O.width)),Io(void 0,h,0,p)},"draw"),kDe={draw:s4t}});var SDe,EDe=z(()=>{"use strict";SDe=o(e=>e.replaceAll(/^[^\S\n\r]+|[^\S\n\r]+$/g,"").replaceAll(/([\n\r])+/g,`
-`).trim(),"prepareTextForParsing")});var o4t,ADe,_De=z(()=>{"use strict";o4t=o(e=>`.label {
+`+this.showPosition(),{text:"",token:null,line:this.yylineno})},"next"),lex:o(function(){var h=this.next();return h||this.lex()},"lex"),begin:o(function(h){this.conditionStack.push(h)},"begin"),popState:o(function(){var h=this.conditionStack.length-1;return h>0?this.conditionStack.pop():this.conditionStack[0]},"popState"),_currentRules:o(function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},"_currentRules"),topState:o(function(h){return h=this.conditionStack.length-1-Math.abs(h||0),h>=0?this.conditionStack[h]:"INITIAL"},"topState"),pushState:o(function(h){this.begin(h)},"pushState"),stateStackSize:o(function(){return this.conditionStack.length},"stateStackSize"),options:{"case-insensitive":!0},performAction:o(function(h,d,f,p){var m=p;switch(f){case 0:return this.pushState("csv"),4;break;case 1:return this.pushState("csv"),4;break;case 2:return 10;case 3:return 5;case 4:return 12;case 5:return this.pushState("escaped_text"),18;break;case 6:return 20;case 7:return this.popState("escaped_text"),18;break;case 8:return 19}},"anonymous"),rules:[/^(?:sankey-beta\b)/i,/^(?:sankey\b)/i,/^(?:$)/i,/^(?:((\u000D\u000A)|(\u000A)))/i,/^(?:(\u002C))/i,/^(?:(\u0022))/i,/^(?:([\u0020-\u0021\u0023-\u002B\u002D-\u007E])*)/i,/^(?:(\u0022)(?!(\u0022)))/i,/^(?:(([\u0020-\u0021\u0023-\u002B\u002D-\u007E])|(\u002C)|(\u000D)|(\u000A)|(\u0022)(\u0022))*)/i],conditions:{csv:{rules:[2,3,4,5,6,7,8],inclusive:!1},escaped_text:{rules:[7,8],inclusive:!1},INITIAL:{rules:[0,1,2,3,4,5,6,7,8],inclusive:!0}}};return l})();i.lexer=a;function s(){this.yy={}}return o(s,"Parser"),s.prototype=i,i.Parser=s,new s})();ij.parser=ij;Uw=ij});var UL,YL,HL,fLt,aj,pLt,sj,mLt,gLt,yLt,vLt,qNe,HNe=F(()=>{"use strict";Xt();Vr();Nn();UL=[],YL=[],HL=new Map,fLt=o(()=>{UL=[],YL=[],HL=new Map,yr()},"clear"),aj=class{constructor(t,r,n=0){this.source=t;this.target=r;this.value=n}static{o(this,"SankeyLink")}},pLt=o((e,t,r)=>{UL.push(new aj(e,t,r))},"addLink"),sj=class{constructor(t){this.ID=t}static{o(this,"SankeyNode")}},mLt=o(e=>{e=xt.sanitizeText(e,Ae());let t=HL.get(e);return t===void 0&&(t=new sj(e),HL.set(e,t),YL.push(t)),t},"findOrCreateNode"),gLt=o(()=>YL,"getNodes"),yLt=o(()=>UL,"getLinks"),vLt=o(()=>({nodes:YL.map(e=>({id:e.ID})),links:UL.map(e=>({source:e.source.ID,target:e.target.ID,value:e.value}))}),"getGraph"),qNe={nodesMap:HL,getConfig:o(()=>Ae().sankey,"getConfig"),getNodes:gLt,getLinks:yLt,getGraph:vLt,addLink:pLt,findOrCreateNode:mLt,getAccTitle:Ar,setAccTitle:kr,getAccDescription:_r,setAccDescription:Rr,getDiagramTitle:Lr,setDiagramTitle:Or,clear:fLt}});function Yw(e,t){let r;if(t===void 0)for(let n of e)n!=null&&(r<n||r===void 0&&n>=n)&&(r=n);else{let n=-1;for(let i of e)(i=t(i,++n,e))!=null&&(r<i||r===void 0&&i>=i)&&(r=i)}return r}var UNe=F(()=>{"use strict";o(Yw,"max")});function cx(e,t){let r;if(t===void 0)for(let n of e)n!=null&&(r>n||r===void 0&&n>=n)&&(r=n);else{let n=-1;for(let i of e)(i=t(i,++n,e))!=null&&(r>i||r===void 0&&i>=i)&&(r=i)}return r}var YNe=F(()=>{"use strict";o(cx,"min")});function ux(e,t){let r=0;if(t===void 0)for(let n of e)(n=+n)&&(r+=n);else{let n=-1;for(let i of e)(i=+t(i,++n,e))&&(r+=i)}return r}var jNe=F(()=>{"use strict";o(ux,"sum")});var oj=F(()=>{"use strict";UNe();YNe();jNe()});function xLt(e){return e.target.depth}function lj(e){return e.depth}function cj(e,t){return t-1-e.height}function jw(e,t){return e.sourceLinks.length?e.depth:t-1}function uj(e){return e.targetLinks.length?e.depth:e.sourceLinks.length?cx(e.sourceLinks,xLt)-1:0}var hj=F(()=>{"use strict";oj();o(xLt,"targetDepth");o(lj,"left");o(cj,"right");o(jw,"justify");o(uj,"center")});function hx(e){return function(){return e}}var XNe=F(()=>{"use strict";o(hx,"constant")});function KNe(e,t){return jL(e.source,t.source)||e.index-t.index}function ZNe(e,t){return jL(e.target,t.target)||e.index-t.index}function jL(e,t){return e.y0-t.y0}function dj(e){return e.value}function bLt(e){return e.index}function TLt(e){return e.nodes}function CLt(e){return e.links}function QNe(e,t){let r=e.get(t);if(!r)throw new Error("missing: "+t);return r}function JNe({nodes:e}){for(let t of e){let r=t.y0,n=r;for(let i of t.sourceLinks)i.y0=r+i.width/2,r+=i.width;for(let i of t.targetLinks)i.y1=n+i.width/2,n+=i.width}}function XL(){let e=0,t=0,r=1,n=1,i=24,a=8,s,l=bLt,u=jw,h,d,f=TLt,p=CLt,m=6;function g(){let D={nodes:f.apply(null,arguments),links:p.apply(null,arguments)};return y(D),v(D),x(D),b(D),C(D),JNe(D),D}o(g,"sankey"),g.update=function(D){return JNe(D),D},g.nodeId=function(D){return arguments.length?(l=typeof D=="function"?D:hx(D),g):l},g.nodeAlign=function(D){return arguments.length?(u=typeof D=="function"?D:hx(D),g):u},g.nodeSort=function(D){return arguments.length?(h=D,g):h},g.nodeWidth=function(D){return arguments.length?(i=+D,g):i},g.nodePadding=function(D){return arguments.length?(a=s=+D,g):a},g.nodes=function(D){return arguments.length?(f=typeof D=="function"?D:hx(D),g):f},g.links=function(D){return arguments.length?(p=typeof D=="function"?D:hx(D),g):p},g.linkSort=function(D){return arguments.length?(d=D,g):d},g.size=function(D){return arguments.length?(e=t=0,r=+D[0],n=+D[1],g):[r-e,n-t]},g.extent=function(D){return arguments.length?(e=+D[0][0],r=+D[1][0],t=+D[0][1],n=+D[1][1],g):[[e,t],[r,n]]},g.iterations=function(D){return arguments.length?(m=+D,g):m};function y({nodes:D,links:P}){for(let[O,$]of D.entries())$.index=O,$.sourceLinks=[],$.targetLinks=[];let B=new Map(D.map((O,$)=>[l(O,$,D),O]));for(let[O,$]of P.entries()){$.index=O;let{source:V,target:G}=$;typeof V!="object"&&(V=$.source=QNe(B,V)),typeof G!="object"&&(G=$.target=QNe(B,G)),V.sourceLinks.push($),G.targetLinks.push($)}if(d!=null)for(let{sourceLinks:O,targetLinks:$}of D)O.sort(d),$.sort(d)}o(y,"computeNodeLinks");function v({nodes:D}){for(let P of D)P.value=P.fixedValue===void 0?Math.max(ux(P.sourceLinks,dj),ux(P.targetLinks,dj)):P.fixedValue}o(v,"computeNodeValues");function x({nodes:D}){let P=D.length,B=new Set(D),O=new Set,$=0;for(;B.size;){for(let V of B){V.depth=$;for(let{target:G}of V.sourceLinks)O.add(G)}if(++$>P)throw new Error("circular link");B=O,O=new Set}}o(x,"computeNodeDepths");function b({nodes:D}){let P=D.length,B=new Set(D),O=new Set,$=0;for(;B.size;){for(let V of B){V.height=$;for(let{source:G}of V.targetLinks)O.add(G)}if(++$>P)throw new Error("circular link");B=O,O=new Set}}o(b,"computeNodeHeights");function T({nodes:D}){let P=Yw(D,$=>$.depth)+1,B=(r-e-i)/(P-1),O=new Array(P);for(let $ of D){let V=Math.max(0,Math.min(P-1,Math.floor(u.call(null,$,P))));$.layer=V,$.x0=e+V*B,$.x1=$.x0+i,O[V]?O[V].push($):O[V]=[$]}if(h)for(let $ of O)$.sort(h);return O}o(T,"computeNodeLayers");function k(D){let P=cx(D,B=>(n-t-(B.length-1)*s)/ux(B,dj));for(let B of D){let O=t;for(let $ of B){$.y0=O,$.y1=O+$.value*P,O=$.y1+s;for(let V of $.sourceLinks)V.width=V.value*P}O=(n-O+s)/(B.length+1);for(let $=0;$<B.length;++$){let V=B[$];V.y0+=O*($+1),V.y1+=O*($+1)}_(B)}}o(k,"initializeNodeBreadths");function C(D){let P=T(D);s=Math.min(a,(n-t)/(Yw(P,B=>B.length)-1)),k(P);for(let B=0;B<m;++B){let O=Math.pow(.99,B),$=Math.max(1-O,(B+1)/m);S(P,O,$),w(P,O,$)}}o(C,"computeNodeBreadths");function w(D,P,B){for(let O=1,$=D.length;O<$;++O){let V=D[O];for(let G of V){let z=0,W=0;for(let{source:j,value:Q}of G.targetLinks){let U=Q*(G.layer-j.layer);z+=A(j,G)*U,W+=U}if(!(W>0))continue;let H=(z/W-G.y0)*P;G.y0+=H,G.y1+=H,I(G)}h===void 0&&V.sort(jL),R(V,B)}}o(w,"relaxLeftToRight");function S(D,P,B){for(let O=D.length,$=O-2;$>=0;--$){let V=D[$];for(let G of V){let z=0,W=0;for(let{target:j,value:Q}of G.sourceLinks){let U=Q*(j.layer-G.layer);z+=M(G,j)*U,W+=U}if(!(W>0))continue;let H=(z/W-G.y0)*P;G.y0+=H,G.y1+=H,I(G)}h===void 0&&V.sort(jL),R(V,B)}}o(S,"relaxRightToLeft");function R(D,P){let B=D.length>>1,O=D[B];N(D,O.y0-s,B-1,P),L(D,O.y1+s,B+1,P),N(D,n,D.length-1,P),L(D,t,0,P)}o(R,"resolveCollisions");function L(D,P,B,O){for(;B<D.length;++B){let $=D[B],V=(P-$.y0)*O;V>1e-6&&($.y0+=V,$.y1+=V),P=$.y1+s}}o(L,"resolveCollisionsTopToBottom");function N(D,P,B,O){for(;B>=0;--B){let $=D[B],V=($.y1-P)*O;V>1e-6&&($.y0-=V,$.y1-=V),P=$.y0-s}}o(N,"resolveCollisionsBottomToTop");function I({sourceLinks:D,targetLinks:P}){if(d===void 0){for(let{source:{sourceLinks:B}}of P)B.sort(ZNe);for(let{target:{targetLinks:B}}of D)B.sort(KNe)}}o(I,"reorderNodeLinks");function _(D){if(d===void 0)for(let{sourceLinks:P,targetLinks:B}of D)P.sort(ZNe),B.sort(KNe)}o(_,"reorderLinks");function A(D,P){let B=D.y0-(D.sourceLinks.length-1)*s/2;for(let{target:O,width:$}of D.sourceLinks){if(O===P)break;B+=$+s}for(let{source:O,width:$}of P.targetLinks){if(O===D)break;B-=$}return B}o(A,"targetTop");function M(D,P){let B=P.y0-(P.targetLinks.length-1)*s/2;for(let{source:O,width:$}of P.targetLinks){if(O===D)break;B+=$+s}for(let{target:O,width:$}of D.sourceLinks){if(O===P)break;B-=$}return B}return o(M,"sourceTop"),g}var ePe=F(()=>{"use strict";oj();hj();XNe();o(KNe,"ascendingSourceBreadth");o(ZNe,"ascendingTargetBreadth");o(jL,"ascendingBreadth");o(dj,"value");o(bLt,"defaultId");o(TLt,"defaultNodes");o(CLt,"defaultLinks");o(QNe,"find");o(JNe,"computeLinkBreadths");o(XL,"Sankey")});function mj(){this._x0=this._y0=this._x1=this._y1=null,this._=""}function tPe(){return new mj}var fj,pj,L0,wLt,gj,rPe=F(()=>{"use strict";fj=Math.PI,pj=2*fj,L0=1e-6,wLt=pj-L0;o(mj,"Path");o(tPe,"path");mj.prototype=tPe.prototype={constructor:mj,moveTo:o(function(e,t){this._+="M"+(this._x0=this._x1=+e)+","+(this._y0=this._y1=+t)},"moveTo"),closePath:o(function(){this._x1!==null&&(this._x1=this._x0,this._y1=this._y0,this._+="Z")},"closePath"),lineTo:o(function(e,t){this._+="L"+(this._x1=+e)+","+(this._y1=+t)},"lineTo"),quadraticCurveTo:o(function(e,t,r,n){this._+="Q"+ +e+","+ +t+","+(this._x1=+r)+","+(this._y1=+n)},"quadraticCurveTo"),bezierCurveTo:o(function(e,t,r,n,i,a){this._+="C"+ +e+","+ +t+","+ +r+","+ +n+","+(this._x1=+i)+","+(this._y1=+a)},"bezierCurveTo"),arcTo:o(function(e,t,r,n,i){e=+e,t=+t,r=+r,n=+n,i=+i;var a=this._x1,s=this._y1,l=r-e,u=n-t,h=a-e,d=s-t,f=h*h+d*d;if(i<0)throw new Error("negative radius: "+i);if(this._x1===null)this._+="M"+(this._x1=e)+","+(this._y1=t);else if(f>L0)if(!(Math.abs(d*l-u*h)>L0)||!i)this._+="L"+(this._x1=e)+","+(this._y1=t);else{var p=r-a,m=n-s,g=l*l+u*u,y=p*p+m*m,v=Math.sqrt(g),x=Math.sqrt(f),b=i*Math.tan((fj-Math.acos((g+f-y)/(2*v*x)))/2),T=b/x,k=b/v;Math.abs(T-1)>L0&&(this._+="L"+(e+T*h)+","+(t+T*d)),this._+="A"+i+","+i+",0,0,"+ +(d*p>h*m)+","+(this._x1=e+k*l)+","+(this._y1=t+k*u)}},"arcTo"),arc:o(function(e,t,r,n,i,a){e=+e,t=+t,r=+r,a=!!a;var s=r*Math.cos(n),l=r*Math.sin(n),u=e+s,h=t+l,d=1^a,f=a?n-i:i-n;if(r<0)throw new Error("negative radius: "+r);this._x1===null?this._+="M"+u+","+h:(Math.abs(this._x1-u)>L0||Math.abs(this._y1-h)>L0)&&(this._+="L"+u+","+h),r&&(f<0&&(f=f%pj+pj),f>wLt?this._+="A"+r+","+r+",0,1,"+d+","+(e-s)+","+(t-l)+"A"+r+","+r+",0,1,"+d+","+(this._x1=u)+","+(this._y1=h):f>L0&&(this._+="A"+r+","+r+",0,"+ +(f>=fj)+","+d+","+(this._x1=e+r*Math.cos(i))+","+(this._y1=t+r*Math.sin(i))))},"arc"),rect:o(function(e,t,r,n){this._+="M"+(this._x0=this._x1=+e)+","+(this._y0=this._y1=+t)+"h"+ +r+"v"+ +n+"h"+-r+"Z"},"rect"),toString:o(function(){return this._},"toString")};gj=tPe});var nPe=F(()=>{"use strict";rPe()});function KL(e){return o(function(){return e},"constant")}var iPe=F(()=>{"use strict";o(KL,"default")});function aPe(e){return e[0]}function sPe(e){return e[1]}var oPe=F(()=>{"use strict";o(aPe,"x");o(sPe,"y")});var lPe,cPe=F(()=>{"use strict";lPe=Array.prototype.slice});function kLt(e){return e.source}function SLt(e){return e.target}function ELt(e){var t=kLt,r=SLt,n=aPe,i=sPe,a=null;function s(){var l,u=lPe.call(arguments),h=t.apply(this,u),d=r.apply(this,u);if(a||(a=l=gj()),e(a,+n.apply(this,(u[0]=h,u)),+i.apply(this,u),+n.apply(this,(u[0]=d,u)),+i.apply(this,u)),l)return a=null,l+""||null}return o(s,"link"),s.source=function(l){return arguments.length?(t=l,s):t},s.target=function(l){return arguments.length?(r=l,s):r},s.x=function(l){return arguments.length?(n=typeof l=="function"?l:KL(+l),s):n},s.y=function(l){return arguments.length?(i=typeof l=="function"?l:KL(+l),s):i},s.context=function(l){return arguments.length?(a=l??null,s):a},s}function ALt(e,t,r,n,i){e.moveTo(t,r),e.bezierCurveTo(t=(t+n)/2,r,t,i,n,i)}function yj(){return ELt(ALt)}var uPe=F(()=>{"use strict";nPe();cPe();iPe();oPe();o(kLt,"linkSource");o(SLt,"linkTarget");o(ELt,"link");o(ALt,"curveHorizontal");o(yj,"linkHorizontal")});var hPe=F(()=>{"use strict";uPe()});function RLt(e){return[e.source.x1,e.y0]}function _Lt(e){return[e.target.x0,e.y1]}function ZL(){return yj().source(RLt).target(_Lt)}var dPe=F(()=>{"use strict";hPe();o(RLt,"horizontalSource");o(_Lt,"horizontalTarget");o(ZL,"default")});var fPe=F(()=>{"use strict";ePe();hj();dPe()});var Xw,pPe=F(()=>{"use strict";Xw=class e{static{o(this,"Uid")}static{this.count=0}static next(t){return new e(t+ ++e.count)}constructor(t){this.id=t,this.href=`#${t}`}toString(){return"url("+this.href+")"}}});var LLt,DLt,ILt,mPe,gPe=F(()=>{"use strict";Xt();$r();fPe();$n();pPe();LLt={left:lj,right:cj,center:uj,justify:jw},DLt=o(e=>{let t=0,r=0;for(let n of e){let i=n.value??0;i>t&&(t=i,r=n.layer??0)}return r},"findCentralNodeLayer"),ILt=o(function(e,t,r,n){let{securityLevel:i,sankey:a}=Ae(),s=bS.sankey,l;i==="sandbox"&&(l=et("#i"+t));let u=i==="sandbox"?et(l.nodes()[0].contentDocument.body):et("body"),h=i==="sandbox"?u.select(`[id="${t}"]`):et(`[id="${t}"]`),d=a?.width??s.width,f=a?.height??s.width,p=a?.useMaxWidth??s.useMaxWidth,m=a?.nodeAlignment??s.nodeAlignment,g=a?.prefix??s.prefix,y=a?.suffix??s.suffix,v=a?.showValues??s.showValues,x=a?.nodeWidth??s.nodeWidth??10,b=a?.nodePadding??s.nodePadding??12,T=a?.labelStyle??s.labelStyle??"legacy",k=a?.nodeColors??{},C=n.db.getGraph(),w=LLt[m];XL().nodeId(O=>O.id).nodeWidth(x).nodePadding(b+(v?15:0)).nodeAlign(w).extent([[0,0],[d,f]])(C);let R=DLt(C.nodes),L=Oo(LN),N=o(O=>k[O]??L(O),"getNodeColor");h.append("g").attr("class","nodes").selectAll(".node").data(C.nodes).join("g").attr("class","node").attr("id",O=>(O.uid=Xw.next("node-")).id).attr("transform",function(O){return"translate("+O.x0+","+O.y0+")"}).attr("x",O=>O.x0).attr("y",O=>O.y0).append("rect").attr("height",O=>O.y1-O.y0).attr("width",O=>O.x1-O.x0).attr("fill",O=>N(O.id));let I=o(({id:O,value:$})=>v?`${O}
+${g}${Math.round($*100)/100}${y}`:O,"getText"),_=o(O=>T==="outlined"?(O.layer??0)<R?{x:O.x0-6,anchor:"end"}:{x:O.x1+6,anchor:"start"}:O.x0<d/2?{x:O.x1+6,anchor:"start"}:{x:O.x0-6,anchor:"end"},"getLabelPosition"),A=h.append("g").attr("class","node-labels").attr("font-size",14),M=o(O=>A.selectAll(O?`.${O}`:"text").data(C.nodes).join("text").attr("class",O??null).attr("x",$=>_($).x).attr("y",$=>($.y1+$.y0)/2).attr("dy",`${v?"0":"0.35"}em`).attr("text-anchor",$=>_($).anchor).text(I),"appendLabel");T==="outlined"?(M("sankey-label-bg"),M("sankey-label-fg")):M();let D=h.append("g").attr("class","links").attr("fill","none").attr("stroke-opacity",.5).selectAll(".link").data(C.links).join("g").attr("class","link").style("mix-blend-mode","multiply"),P=a?.linkColor??"gradient";if(P==="gradient"){let O=D.append("linearGradient").attr("id",$=>($.uid=Xw.next("linearGradient-")).id).attr("gradientUnits","userSpaceOnUse").attr("x1",$=>$.source.x1).attr("x2",$=>$.target.x0);O.append("stop").attr("offset","0%").attr("stop-color",$=>N($.source.id)),O.append("stop").attr("offset","100%").attr("stop-color",$=>N($.target.id))}let B;switch(P){case"gradient":B=o(O=>O.uid,"coloring");break;case"source":B=o(O=>N(O.source.id),"coloring");break;case"target":B=o(O=>N(O.target.id),"coloring");break;default:B=P}D.append("path").attr("d",ZL()).attr("stroke",B).attr("stroke-width",O=>Math.max(1,O.width)),ul(void 0,h,0,p)},"draw"),mPe={draw:ILt}});var yPe,vPe=F(()=>{"use strict";yPe=o(e=>e.replaceAll(/^[^\S\n\r]+|[^\S\n\r]+$/g,"").replaceAll(/([\n\r])+/g,`
+`).trim(),"prepareTextForParsing")});var MLt,xPe,bPe=F(()=>{"use strict";MLt=o(e=>`.label {
     font-family: ${e.fontFamily};
   }
 
@@ -2898,7 +2912,7 @@
     stroke-opacity: 0.5;
     mix-blend-mode: multiply;
   }
-`,"getStyles"),ADe=o4t});var DDe={};xr(DDe,{diagram:()=>c4t});var l4t,c4t,RDe=z(()=>{"use strict";Z7e();J7e();wDe();EDe();_De();l4t=tC.parse.bind(tC);tC.parse=e=>l4t(SDe(e));c4t={styles:ADe,parser:tC,db:Q7e,renderer:kDe}});var f4t,My,vq=z(()=>{"use strict";br();Bn();Xt();Ci();f4t=or.packet,My=class{constructor(){this.packet=[];this.setAccTitle=Cr;this.getAccTitle=kr;this.setDiagramTitle=Ar;this.getDiagramTitle=Er;this.getAccDescription=Sr;this.setAccDescription=wr}static{o(this,"PacketDB")}getConfig(){let t=Gr({...f4t,...Nt().packet});return t.showBits&&(t.paddingY+=10),t}getPacket(){return this.packet}pushWord(t){t.length>0&&this.packet.push(t)}clear(){gr(),this.packet=[]}}});var p4t,m4t,g4t,xq,NDe=z(()=>{"use strict";sl();St();au();vq();p4t=1e4,m4t=o((e,t)=>{ca(e,t);let r=-1,i=[],n=1,{bitsPerRow:a}=t.getConfig();for(let{start:s,end:l,bits:u,label:h}of e.blocks){if(s!==void 0&&l!==void 0&&l<s)throw new Error(`Packet block ${s} - ${l} is invalid. End must be greater than start.`);if(s??=r+1,s!==r+1)throw new Error(`Packet block ${s} - ${l??s} is not contiguous. It should start from ${r+1}.`);if(u===0)throw new Error(`Packet block ${s} is invalid. Cannot have a zero bit field.`);for(l??=s+(u??1)-1,u??=l-s+1,r=l,Z.debug(`Packet block ${s} - ${r} with label ${h}`);i.length<=a+1&&t.getPacket().length<p4t;){let[d,f]=g4t({start:s,end:l,bits:u,label:h},n,a);if(i.push(d),d.end+1===n*a&&(t.pushWord(i),i=[],n++),!f)break;({start:s,end:l,bits:u,label:h}=f)}}t.pushWord(i)},"populate"),g4t=o((e,t,r)=>{if(e.start===void 0)throw new Error("start should have been set during first phase");if(e.end===void 0)throw new Error("end should have been set during first phase");if(e.start>e.end)throw new Error(`Block start ${e.start} is greater than block end ${e.end}.`);if(e.end+1<=t*r)return[e,void 0];let i=t*r-1,n=t*r;return[{start:e.start,end:i,label:e.label,bits:i-e.start},{start:n,end:e.end,label:e.label,bits:e.end-n}]},"getNextFittingBlock"),xq={parser:{yy:void 0},parse:o(async e=>{let t=await bn("packet",e),r=xq.parser?.yy;if(!(r instanceof My))throw new Error("parser.parser?.yy was not a PacketDB. This is due to a bug within Mermaid, please report this issue at https://github.com/mermaid-js/mermaid/issues.");Z.debug(t),m4t(t,r)},"parse")}});var y4t,v4t,IDe,ODe=z(()=>{"use strict";ps();Di();y4t=o((e,t,r,i)=>{let n=i.db,a=n.getConfig(),{rowHeight:s,paddingY:l,bitWidth:u,bitsPerRow:h}=a,d=n.getPacket(),f=n.getDiagramTitle(),p=s+l,m=p*(d.length+1)-(f?0:s),g=u*h+2,y=bi(t);y.attr("viewBox",`0 0 ${g} ${m}`),Br(y,m,g,a.useMaxWidth);for(let[v,x]of d.entries())v4t(y,x,v,a);y.append("text").text(f).attr("x",g/2).attr("y",m-p/2).attr("dominant-baseline","middle").attr("text-anchor","middle").attr("class","packetTitle")},"draw"),v4t=o((e,t,r,{rowHeight:i,paddingX:n,paddingY:a,bitWidth:s,bitsPerRow:l,showBits:u})=>{let h=e.append("g"),d=r*(i+a)+a;for(let f of t){let p=f.start%l*s+1,m=(f.end-f.start+1)*s-n;if(h.append("rect").attr("x",p).attr("y",d).attr("width",m).attr("height",i).attr("class","packetBlock"),h.append("text").attr("x",p+m/2).attr("y",d+i/2).attr("class","packetLabel").attr("dominant-baseline","middle").attr("text-anchor","middle").text(f.label),!u)continue;let g=f.end===f.start,y=d-2;h.append("text").attr("x",p+(g?m/2:0)).attr("y",y).attr("class","packetByte start").attr("dominant-baseline","auto").attr("text-anchor",g?"middle":"start").text(f.start),g||h.append("text").attr("x",p+m).attr("y",y).attr("class","packetByte end").attr("dominant-baseline","auto").attr("text-anchor","end").text(f.end)}},"drawWord"),IDe={draw:y4t}});var x4t,PDe,BDe=z(()=>{"use strict";Xt();x4t={byteFontSize:"10px",startByteColor:"black",endByteColor:"black",labelColor:"black",labelFontSize:"12px",titleColor:"black",titleFontSize:"14px",blockStrokeColor:"black",blockStrokeWidth:"1",blockFillColor:"#efefef"},PDe=o(({packet:e}={})=>{let t=Gr(x4t,e);return`
+`,"getStyles"),xPe=MLt});var TPe={};ir(TPe,{diagram:()=>PLt});var NLt,PLt,CPe=F(()=>{"use strict";WNe();HNe();gPe();vPe();bPe();NLt=Uw.parse.bind(Uw);Uw.parse=e=>NLt(yPe(e));PLt={styles:xPe,parser:Uw,db:qNe,renderer:mPe}});var FLt,dx,vj=F(()=>{"use strict";ur();Wi();Qt();Nn();FLt=cr.packet,dx=class{constructor(){this.packet=[];this.setAccTitle=kr;this.getAccTitle=Ar;this.setDiagramTitle=Or;this.getDiagramTitle=Lr;this.getAccDescription=_r;this.setAccDescription=Rr}static{o(this,"PacketDB")}getConfig(){let t=qr({...FLt,..._t().packet});return t.showBits&&(t.paddingY+=10),t}getPacket(){return this.packet}pushWord(t){t.length>0&&this.packet.push(t)}clear(){yr(),this.packet=[]}}});var zLt,GLt,VLt,xj,SPe=F(()=>{"use strict";Xa();vt();Hs();vj();zLt=1e4,GLt=o((e,t)=>{Gn(e,t);let r=-1,n=[],i=1,{bitsPerRow:a}=t.getConfig();for(let{start:s,end:l,bits:u,label:h}of e.blocks){if(s!==void 0&&l!==void 0&&l<s)throw new Error(`Packet block ${s} - ${l} is invalid. End must be greater than start.`);if(s??=r+1,s!==r+1)throw new Error(`Packet block ${s} - ${l??s} is not contiguous. It should start from ${r+1}.`);if(u===0)throw new Error(`Packet block ${s} is invalid. Cannot have a zero bit field.`);for(l??=s+(u??1)-1,u??=l-s+1,r=l,Z.debug(`Packet block ${s} - ${r} with label ${h}`);n.length<=a+1&&t.getPacket().length<zLt;){let[d,f]=VLt({start:s,end:l,bits:u,label:h},i,a);if(n.push(d),d.end+1===i*a&&(t.pushWord(n),n=[],i++),!f)break;({start:s,end:l,bits:u,label:h}=f)}}t.pushWord(n)},"populate"),VLt=o((e,t,r)=>{if(e.start===void 0)throw new Error("start should have been set during first phase");if(e.end===void 0)throw new Error("end should have been set during first phase");if(e.start>e.end)throw new Error(`Block start ${e.start} is greater than block end ${e.end}.`);if(e.end+1<=t*r)return[e,void 0];let n=t*r-1,i=t*r;return[{start:e.start,end:n,label:e.label,bits:n-e.start},{start:i,end:e.end,label:e.label,bits:e.end-i}]},"getNextFittingBlock"),xj={parser:{yy:void 0},parse:o(async e=>{let t=await Si("packet",e),r=xj.parser?.yy;if(!(r instanceof dx))throw new Error("parser.parser?.yy was not a PacketDB. This is due to a bug within Mermaid, please report this issue at https://github.com/mermaid-js/mermaid/issues.");Z.debug(t),GLt(t,r)},"parse")}});var WLt,qLt,EPe,APe=F(()=>{"use strict";Ka();$n();WLt=o((e,t,r,n)=>{let i=n.db,a=i.getConfig(),{rowHeight:s,paddingY:l,bitWidth:u,bitsPerRow:h}=a,d=i.getPacket(),f=i.getDiagramTitle(),p=s+l,m=p*(d.length+1)-(f?0:s),g=u*h+2,y=xn(t);y.attr("viewBox",`0 0 ${g} ${m}`),Wr(y,m,g,a.useMaxWidth);for(let[v,x]of d.entries())qLt(y,x,v,a);y.append("text").text(f).attr("x",g/2).attr("y",m-p/2).attr("dominant-baseline","middle").attr("text-anchor","middle").attr("class","packetTitle")},"draw"),qLt=o((e,t,r,{rowHeight:n,paddingX:i,paddingY:a,bitWidth:s,bitsPerRow:l,showBits:u})=>{let h=e.append("g"),d=r*(n+a)+a;for(let f of t){let p=f.start%l*s+1,m=(f.end-f.start+1)*s-i;if(h.append("rect").attr("x",p).attr("y",d).attr("width",m).attr("height",n).attr("class","packetBlock"),h.append("text").attr("x",p+m/2).attr("y",d+n/2).attr("class","packetLabel").attr("dominant-baseline","middle").attr("text-anchor","middle").text(f.label),!u)continue;let g=f.end===f.start,y=d-2;h.append("text").attr("x",p+(g?m/2:0)).attr("y",y).attr("class","packetByte start").attr("dominant-baseline","auto").attr("text-anchor",g?"middle":"start").text(f.start),g||h.append("text").attr("x",p+m).attr("y",y).attr("class","packetByte end").attr("dominant-baseline","auto").attr("text-anchor","end").text(f.end)}},"drawWord"),EPe={draw:WLt}});var HLt,RPe,_Pe=F(()=>{"use strict";Qt();HLt={byteFontSize:"10px",startByteColor:"black",endByteColor:"black",labelColor:"black",labelFontSize:"12px",titleColor:"black",titleFontSize:"14px",blockStrokeColor:"black",blockStrokeWidth:"1",blockFillColor:"#efefef"},RPe=o(({packet:e}={})=>{let t=qr(HLt,e);return`
 	.packetByte {
 		font-size: ${t.byteFontSize};
 	}
@@ -2921,20 +2935,20 @@
 		stroke-width: ${t.blockStrokeWidth};
 		fill: ${t.blockFillColor};
 	}
-	`},"styles")});var FDe={};xr(FDe,{diagram:()=>b4t});var b4t,$De=z(()=>{"use strict";vq();NDe();ODe();BDe();b4t={parser:xq,get db(){return new My},renderer:IDe,styles:PDe}});var Ny,VDe,Cm,k4t,w4t,WDe,S4t,E4t,A4t,_4t,D4t,R4t,L4t,km,bq=z(()=>{"use strict";br();Bn();Xt();Ci();Ny={showLegend:!0,ticks:5,max:null,min:0,graticule:"circle"},VDe={axes:[],curves:[],options:Ny},Cm=structuredClone(VDe),k4t=or.radar,w4t=o(()=>Gr({...k4t,...Nt().radar}),"getConfig"),WDe=o(()=>Cm.axes,"getAxes"),S4t=o(()=>Cm.curves,"getCurves"),E4t=o(()=>Cm.options,"getOptions"),A4t=o(e=>{Cm.axes=e.map(t=>({name:t.name,label:t.label??t.name}))},"setAxes"),_4t=o(e=>{Cm.curves=e.map(t=>({name:t.name,label:t.label??t.name,entries:D4t(t.entries)}))},"setCurves"),D4t=o(e=>{if(e[0].axis==null)return e.map(r=>r.value);let t=WDe();if(t.length===0)throw new Error("Axes must be populated before curves for reference entries");return t.map(r=>{let i=e.find(n=>n.axis?.$refText===r.name);if(i===void 0)throw new Error("Missing entry for axis "+r.label);return i.value})},"computeCurveEntries"),R4t=o(e=>{let t=e.reduce((r,i)=>(r[i.name]=i,r),{});Cm.options={showLegend:t.showLegend?.value??Ny.showLegend,ticks:t.ticks?.value??Ny.ticks,max:t.max?.value??Ny.max,min:t.min?.value??Ny.min,graticule:t.graticule?.value??Ny.graticule}},"setOptions"),L4t=o(()=>{gr(),Cm=structuredClone(VDe)},"clear"),km={getAxes:WDe,getCurves:S4t,getOptions:E4t,setAxes:A4t,setCurves:_4t,setOptions:R4t,getConfig:w4t,clear:L4t,setAccTitle:Cr,getAccTitle:kr,setDiagramTitle:Ar,getDiagramTitle:Er,getAccDescription:Sr,setAccDescription:wr}});var M4t,qDe,UDe=z(()=>{"use strict";sl();St();au();bq();M4t=o(e=>{ca(e,km);let{axes:t,curves:r,options:i}=e;km.setAxes(t),km.setCurves(r),km.setOptions(i)},"populate"),qDe={parse:o(async e=>{let t=await bn("radar",e);Z.debug(t),M4t(t)},"parse")}});function B4t(e,t,r,i,n,a,s){let l=t.length,u=Math.min(s.width,s.height)/2;r.forEach((h,d)=>{if(h.entries.length!==l)return;let f=h.entries.map((p,m)=>{let g=2*Math.PI*m/l-Math.PI/2,y=F4t(p,i,n,u),v=y*Math.cos(g),x=y*Math.sin(g);return{x:v,y:x}});a==="circle"?e.append("path").attr("d",$4t(f,s.curveTension)).attr("class",`radarCurve-${d}`):a==="polygon"&&e.append("polygon").attr("points",f.map(p=>`${p.x},${p.y}`).join(" ")).attr("class",`radarCurve-${d}`)})}function F4t(e,t,r,i){let n=Math.min(Math.max(e,t),r);return i*(n-t)/(r-t)}function $4t(e,t){let r=e.length,i=`M${e[0].x},${e[0].y}`;for(let n=0;n<r;n++){let a=e[(n-1+r)%r],s=e[n],l=e[(n+1)%r],u=e[(n+2)%r],h={x:s.x+(l.x-a.x)*t,y:s.y+(l.y-a.y)*t},d={x:l.x-(u.x-s.x)*t,y:l.y-(u.y-s.y)*t};i+=` C${h.x},${h.y} ${d.x},${d.y} ${l.x},${l.y}`}return`${i} Z`}function z4t(e,t,r,i){if(!r)return;let n=(i.width/2+i.marginRight)*3/4,a=-(i.height/2+i.marginTop)*3/4,s=20;t.forEach((l,u)=>{let h=e.append("g").attr("transform",`translate(${n}, ${a+u*s})`);h.append("rect").attr("width",12).attr("height",12).attr("class",`radarLegendBox-${u}`),h.append("text").attr("x",16).attr("y",0).attr("class","radarLegendText").text(l.label)})}var N4t,I4t,O4t,P4t,HDe,YDe=z(()=>{"use strict";ps();Di();N4t=o((e,t,r,i)=>{let n=i.db,a=n.getAxes(),s=n.getCurves(),l=n.getOptions(),u=n.getConfig(),h=n.getDiagramTitle(),d=bi(t),f=I4t(d,u),p=l.max??Math.max(...s.map(y=>Math.max(...y.entries))),m=l.min,g=Math.min(u.width,u.height)/2;O4t(f,a,g,l.ticks,l.graticule),P4t(f,a,g,u),B4t(f,a,s,m,p,l.graticule,u),z4t(f,s,l.showLegend,u),f.append("text").attr("class","radarTitle").text(h).attr("x",0).attr("y",-u.height/2-u.marginTop)},"draw"),I4t=o((e,t)=>{let r=t.width+t.marginLeft+t.marginRight,i=t.height+t.marginTop+t.marginBottom,n={x:t.marginLeft+t.width/2,y:t.marginTop+t.height/2};return Br(e,i,r,t.useMaxWidth??!0),e.attr("viewBox",`0 0 ${r} ${i}`),e.append("g").attr("transform",`translate(${n.x}, ${n.y})`)},"drawFrame"),O4t=o((e,t,r,i,n)=>{if(n==="circle")for(let a=0;a<i;a++){let s=r*(a+1)/i;e.append("circle").attr("r",s).attr("class","radarGraticule")}else if(n==="polygon"){let a=t.length;for(let s=0;s<i;s++){let l=r*(s+1)/i,u=t.map((h,d)=>{let f=2*d*Math.PI/a-Math.PI/2,p=l*Math.cos(f),m=l*Math.sin(f);return`${p},${m}`}).join(" ");e.append("polygon").attr("points",u).attr("class","radarGraticule")}}},"drawGraticule"),P4t=o((e,t,r,i)=>{let n=t.length;for(let a=0;a<n;a++){let s=t[a].label,l=2*a*Math.PI/n-Math.PI/2;e.append("line").attr("x1",0).attr("y1",0).attr("x2",r*i.axisScaleFactor*Math.cos(l)).attr("y2",r*i.axisScaleFactor*Math.sin(l)).attr("class","radarAxisLine"),e.append("text").text(s).attr("x",r*i.axisLabelFactor*Math.cos(l)).attr("y",r*i.axisLabelFactor*Math.sin(l)).attr("class","radarAxisLabel")}},"drawAxes");o(B4t,"drawCurves");o(F4t,"relativeRadius");o($4t,"closedRoundCurve");o(z4t,"drawLegend");HDe={draw:N4t}});var G4t,V4t,jDe,XDe=z(()=>{"use strict";Xt();$f();br();G4t=o((e,t)=>{let r="";for(let i=0;i<e.THEME_COLOR_LIMIT;i++){let n=e[`cScale${i}`];r+=`
-		.radarCurve-${i} {
-			color: ${n};
-			fill: ${n};
+	`},"styles")});var LPe={};ir(LPe,{diagram:()=>ULt});var ULt,DPe=F(()=>{"use strict";vj();SPe();APe();_Pe();ULt={parser:xj,get db(){return new dx},renderer:EPe,styles:RPe}});var fx,NPe,D0,XLt,KLt,PPe,ZLt,QLt,JLt,eDt,tDt,rDt,nDt,I0,bj=F(()=>{"use strict";ur();Wi();Qt();Nn();fx={showLegend:!0,ticks:5,max:null,min:0,graticule:"circle"},NPe={axes:[],curves:[],options:fx},D0=structuredClone(NPe),XLt=cr.radar,KLt=o(()=>qr({...XLt,..._t().radar}),"getConfig"),PPe=o(()=>D0.axes,"getAxes"),ZLt=o(()=>D0.curves,"getCurves"),QLt=o(()=>D0.options,"getOptions"),JLt=o(e=>{D0.axes=e.map(t=>({name:t.name,label:t.label??t.name}))},"setAxes"),eDt=o(e=>{D0.curves=e.map(t=>({name:t.name,label:t.label??t.name,entries:tDt(t.entries)}))},"setCurves"),tDt=o(e=>{if(e[0].axis==null)return e.map(r=>r.value);let t=PPe();if(t.length===0)throw new Error("Axes must be populated before curves for reference entries");return t.map(r=>{let n=e.find(i=>i.axis?.$refText===r.name);if(n===void 0)throw new Error("Missing entry for axis "+r.label);return n.value})},"computeCurveEntries"),rDt=o(e=>{let t=e.reduce((r,n)=>(r[n.name]=n,r),{});D0.options={showLegend:t.showLegend?.value??fx.showLegend,ticks:t.ticks?.value??fx.ticks,max:t.max?.value??fx.max,min:t.min?.value??fx.min,graticule:t.graticule?.value??fx.graticule}},"setOptions"),nDt=o(()=>{yr(),D0=structuredClone(NPe)},"clear"),I0={getAxes:PPe,getCurves:ZLt,getOptions:QLt,setAxes:JLt,setCurves:eDt,setOptions:rDt,getConfig:KLt,clear:nDt,setAccTitle:kr,getAccTitle:Ar,setDiagramTitle:Or,getDiagramTitle:Lr,getAccDescription:_r,setAccDescription:Rr}});var iDt,OPe,BPe=F(()=>{"use strict";Xa();vt();Hs();bj();iDt=o(e=>{Gn(e,I0);let{axes:t,curves:r,options:n}=e;I0.setAxes(t),I0.setCurves(r),I0.setOptions(n)},"populate"),OPe={parse:o(async e=>{let t=await Si("radar",e);Z.debug(t),iDt(t)},"parse")}});function cDt(e,t,r,n,i,a,s){let l=t.length,u=Math.min(s.width,s.height)/2;r.forEach((h,d)=>{if(h.entries.length!==l)return;let f=h.entries.map((p,m)=>{let g=2*Math.PI*m/l-Math.PI/2,y=uDt(p,n,i,u),v=y*Math.cos(g),x=y*Math.sin(g);return{x:v,y:x}});a==="circle"?e.append("path").attr("d",hDt(f,s.curveTension)).attr("class",`radarCurve-${d}`):a==="polygon"&&e.append("polygon").attr("points",f.map(p=>`${p.x},${p.y}`).join(" ")).attr("class",`radarCurve-${d}`)})}function uDt(e,t,r,n){let i=Math.min(Math.max(e,t),r);return n*(i-t)/(r-t)}function hDt(e,t){let r=e.length,n=`M${e[0].x},${e[0].y}`;for(let i=0;i<r;i++){let a=e[(i-1+r)%r],s=e[i],l=e[(i+1)%r],u=e[(i+2)%r],h={x:s.x+(l.x-a.x)*t,y:s.y+(l.y-a.y)*t},d={x:l.x-(u.x-s.x)*t,y:l.y-(u.y-s.y)*t};n+=` C${h.x},${h.y} ${d.x},${d.y} ${l.x},${l.y}`}return`${n} Z`}function dDt(e,t,r,n){if(!r)return;let i=(n.width/2+n.marginRight)*3/4,a=-(n.height/2+n.marginTop)*3/4,s=20;t.forEach((l,u)=>{let h=e.append("g").attr("transform",`translate(${i}, ${a+u*s})`);h.append("rect").attr("width",12).attr("height",12).attr("class",`radarLegendBox-${u}`),h.append("text").attr("x",16).attr("y",0).attr("class","radarLegendText").text(l.label)})}var aDt,sDt,oDt,lDt,$Pe,FPe=F(()=>{"use strict";Ka();$n();aDt=o((e,t,r,n)=>{let i=n.db,a=i.getAxes(),s=i.getCurves(),l=i.getOptions(),u=i.getConfig(),h=i.getDiagramTitle(),d=xn(t),f=sDt(d,u),p=l.max??Math.max(...s.map(y=>Math.max(...y.entries))),m=l.min,g=Math.min(u.width,u.height)/2;oDt(f,a,g,l.ticks,l.graticule),lDt(f,a,g,u),cDt(f,a,s,m,p,l.graticule,u),dDt(f,s,l.showLegend,u),f.append("text").attr("class","radarTitle").text(h).attr("x",0).attr("y",-u.height/2-u.marginTop)},"draw"),sDt=o((e,t)=>{let r=t.width+t.marginLeft+t.marginRight,n=t.height+t.marginTop+t.marginBottom,i={x:t.marginLeft+t.width/2,y:t.marginTop+t.height/2};return Wr(e,n,r,t.useMaxWidth??!0),e.attr("viewBox",`0 0 ${r} ${n}`).attr("overflow","visible"),e.append("g").attr("transform",`translate(${i.x}, ${i.y})`)},"drawFrame"),oDt=o((e,t,r,n,i)=>{if(i==="circle")for(let a=0;a<n;a++){let s=r*(a+1)/n;e.append("circle").attr("r",s).attr("class","radarGraticule")}else if(i==="polygon"){let a=t.length;for(let s=0;s<n;s++){let l=r*(s+1)/n,u=t.map((h,d)=>{let f=2*d*Math.PI/a-Math.PI/2,p=l*Math.cos(f),m=l*Math.sin(f);return`${p},${m}`}).join(" ");e.append("polygon").attr("points",u).attr("class","radarGraticule")}}},"drawGraticule"),lDt=o((e,t,r,n)=>{let i=t.length;for(let a=0;a<i;a++){let s=t[a].label,l=2*a*Math.PI/i-Math.PI/2,u=Math.cos(l),h=Math.sin(l);e.append("line").attr("x1",0).attr("y1",0).attr("x2",r*n.axisScaleFactor*u).attr("y2",r*n.axisScaleFactor*h).attr("class","radarAxisLine");let d=u>.01?"start":u<-.01?"end":"middle",f=h>.01?"hanging":h<-.01?"auto":"central",p=4;e.append("text").text(s).attr("x",r*n.axisLabelFactor*u+p*u).attr("y",r*n.axisLabelFactor*h+p*h).attr("text-anchor",d).attr("dominant-baseline",f).attr("class","radarAxisLabel")}},"drawAxes");o(cDt,"drawCurves");o(uDt,"relativeRadius");o(hDt,"closedRoundCurve");o(dDt,"drawLegend");$Pe={draw:aDt}});var fDt,pDt,zPe,GPe=F(()=>{"use strict";Qt();Pc();ur();fDt=o((e,t)=>{let r="";for(let n=0;n<e.THEME_COLOR_LIMIT;n++){let i=e[`cScale${n}`];r+=`
+		.radarCurve-${n} {
+			color: ${i};
+			fill: ${i};
 			fill-opacity: ${t.curveOpacity};
-			stroke: ${n};
+			stroke: ${i};
 			stroke-width: ${t.curveStrokeWidth};
 		}
-		.radarLegendBox-${i} {
-			fill: ${n};
+		.radarLegendBox-${n} {
+			fill: ${i};
 			fill-opacity: ${t.curveOpacity};
-			stroke: ${n};
+			stroke: ${i};
 		}
-		`}return r},"genIndexStyles"),V4t=o(e=>{let t=Ao(),r=Nt(),i=Gr(t,r.themeVariables),n=Gr(i.radar,e);return{themeVariables:i,radarOptions:n}},"buildRadarStyleOptions"),jDe=o(({radar:e}={})=>{let{themeVariables:t,radarOptions:r}=V4t(e);return`
+		`}return r},"genIndexStyles"),pDt=o(e=>{let t=ma(),r=_t(),n=qr(t,r.themeVariables),i=qr(n.radar,e);return{themeVariables:n,radarOptions:i}},"buildRadarStyleOptions"),zPe=o(({radar:e}={})=>{let{themeVariables:t,radarOptions:r}=pDt(e);return`
 	.radarTitle {
 		font-size: ${t.fontSize};
 		color: ${t.titleColor};
@@ -2946,8 +2960,6 @@
 		stroke-width: ${r.axisStrokeWidth};
 	}
 	.radarAxisLabel {
-		dominant-baseline: middle;
-		text-anchor: middle;
 		font-size: ${r.axisLabelFontSize}px;
 		color: ${r.axisColor};
 	}
@@ -2962,13 +2974,13 @@
 		font-size: ${r.legendFontSize}px;
 		dominant-baseline: hanging;
 	}
-	${G4t(t,r)}
-	`},"styles")});var KDe={};xr(KDe,{diagram:()=>W4t});var W4t,ZDe=z(()=>{"use strict";bq();UDe();YDe();XDe();W4t={parser:qDe,db:km,renderer:HDe,styles:jDe}});var Tq,e8e,t8e=z(()=>{"use strict";Tq=(function(){var e=o(function(T,w,C,k){for(C=C||{},k=T.length;k--;C[T[k]]=w);return C},"o"),t=[1,15],r=[1,7],i=[1,13],n=[1,14],a=[1,19],s=[1,16],l=[1,17],u=[1,18],h=[8,30],d=[8,10,21,28,29,30,31,39,43,46],f=[1,23],p=[1,24],m=[8,10,15,16,21,28,29,30,31,39,43,46],g=[8,10,15,16,21,27,28,29,30,31,39,43,46],y=[1,49],v={trace:o(function(){},"trace"),yy:{},symbols_:{error:2,spaceLines:3,SPACELINE:4,NL:5,separator:6,SPACE:7,EOF:8,start:9,BLOCK_DIAGRAM_KEY:10,document:11,stop:12,statement:13,link:14,LINK:15,START_LINK:16,LINK_LABEL:17,STR:18,nodeStatement:19,columnsStatement:20,SPACE_BLOCK:21,blockStatement:22,classDefStatement:23,cssClassStatement:24,styleStatement:25,node:26,SIZE:27,COLUMNS:28,"id-block":29,end:30,NODE_ID:31,nodeShapeNLabel:32,dirList:33,DIR:34,NODE_DSTART:35,NODE_DEND:36,BLOCK_ARROW_START:37,BLOCK_ARROW_END:38,classDef:39,CLASSDEF_ID:40,CLASSDEF_STYLEOPTS:41,DEFAULT:42,class:43,CLASSENTITY_IDS:44,STYLECLASS:45,style:46,STYLE_ENTITY_IDS:47,STYLE_DEFINITION_DATA:48,$accept:0,$end:1},terminals_:{2:"error",4:"SPACELINE",5:"NL",7:"SPACE",8:"EOF",10:"BLOCK_DIAGRAM_KEY",15:"LINK",16:"START_LINK",17:"LINK_LABEL",18:"STR",21:"SPACE_BLOCK",27:"SIZE",28:"COLUMNS",29:"id-block",30:"end",31:"NODE_ID",34:"DIR",35:"NODE_DSTART",36:"NODE_DEND",37:"BLOCK_ARROW_START",38:"BLOCK_ARROW_END",39:"classDef",40:"CLASSDEF_ID",41:"CLASSDEF_STYLEOPTS",42:"DEFAULT",43:"class",44:"CLASSENTITY_IDS",45:"STYLECLASS",46:"style",47:"STYLE_ENTITY_IDS",48:"STYLE_DEFINITION_DATA"},productions_:[0,[3,1],[3,2],[3,2],[6,1],[6,1],[6,1],[9,3],[12,1],[12,1],[12,2],[12,2],[11,1],[11,2],[14,1],[14,4],[13,1],[13,1],[13,1],[13,1],[13,1],[13,1],[13,1],[19,3],[19,2],[19,1],[20,1],[22,4],[22,3],[26,1],[26,2],[33,1],[33,2],[32,3],[32,4],[23,3],[23,3],[24,3],[25,3]],performAction:o(function(w,C,k,E,A,N,P){var I=N.length-1;switch(A){case 4:E.getLogger().debug("Rule: separator (NL) ");break;case 5:E.getLogger().debug("Rule: separator (Space) ");break;case 6:E.getLogger().debug("Rule: separator (EOF) ");break;case 7:E.getLogger().debug("Rule: hierarchy: ",N[I-1]),E.setHierarchy(N[I-1]);break;case 8:E.getLogger().debug("Stop NL ");break;case 9:E.getLogger().debug("Stop EOF ");break;case 10:E.getLogger().debug("Stop NL2 ");break;case 11:E.getLogger().debug("Stop EOF2 ");break;case 12:E.getLogger().debug("Rule: statement: ",N[I]),typeof N[I].length=="number"?this.$=N[I]:this.$=[N[I]];break;case 13:E.getLogger().debug("Rule: statement #2: ",N[I-1]),this.$=[N[I-1]].concat(N[I]);break;case 14:E.getLogger().debug("Rule: link: ",N[I],w),this.$={edgeTypeStr:N[I],label:""};break;case 15:E.getLogger().debug("Rule: LABEL link: ",N[I-3],N[I-1],N[I]),this.$={edgeTypeStr:N[I],label:N[I-1]};break;case 18:let D=parseInt(N[I]),_=E.generateId();this.$={id:_,type:"space",label:"",width:D,children:[]};break;case 23:E.getLogger().debug("Rule: (nodeStatement link node) ",N[I-2],N[I-1],N[I]," typestr: ",N[I-1].edgeTypeStr);let R=E.edgeStrToEdgeData(N[I-1].edgeTypeStr),M=E.edgeStrToEdgeStartData(N[I-1].edgeTypeStr),L=E.edgeStrToThickness(N[I-1].edgeTypeStr),B=E.edgeStrToPattern(N[I-1].edgeTypeStr);this.$=[{id:N[I-2].id,label:N[I-2].label,type:N[I-2].type,directions:N[I-2].directions},{id:N[I-2].id+"-"+N[I].id,start:N[I-2].id,end:N[I].id,label:N[I-1].label,type:"edge",thickness:L,pattern:B,directions:N[I].directions,arrowTypeEnd:R,arrowTypeStart:M},{id:N[I].id,label:N[I].label,type:E.typeStr2Type(N[I].typeStr),directions:N[I].directions}];break;case 24:E.getLogger().debug("Rule: nodeStatement (abc88 node size) ",N[I-1],N[I]),this.$={id:N[I-1].id,label:N[I-1].label,type:E.typeStr2Type(N[I-1].typeStr),directions:N[I-1].directions,widthInColumns:parseInt(N[I],10)};break;case 25:E.getLogger().debug("Rule: nodeStatement (node) ",N[I]),this.$={id:N[I].id,label:N[I].label,type:E.typeStr2Type(N[I].typeStr),directions:N[I].directions,widthInColumns:1};break;case 26:E.getLogger().debug("APA123",this?this:"na"),E.getLogger().debug("COLUMNS: ",N[I]),this.$={type:"column-setting",columns:N[I]==="auto"?-1:parseInt(N[I])};break;case 27:E.getLogger().debug("Rule: id-block statement : ",N[I-2],N[I-1]);let O=E.generateId();this.$={...N[I-2],type:"composite",children:N[I-1]};break;case 28:E.getLogger().debug("Rule: blockStatement : ",N[I-2],N[I-1],N[I]);let $=E.generateId();this.$={id:$,type:"composite",label:"",children:N[I-1]};break;case 29:E.getLogger().debug("Rule: node (NODE_ID separator): ",N[I]),this.$={id:N[I]};break;case 30:E.getLogger().debug("Rule: node (NODE_ID nodeShapeNLabel separator): ",N[I-1],N[I]),this.$={id:N[I-1],label:N[I].label,typeStr:N[I].typeStr,directions:N[I].directions};break;case 31:E.getLogger().debug("Rule: dirList: ",N[I]),this.$=[N[I]];break;case 32:E.getLogger().debug("Rule: dirList: ",N[I-1],N[I]),this.$=[N[I-1]].concat(N[I]);break;case 33:E.getLogger().debug("Rule: nodeShapeNLabel: ",N[I-2],N[I-1],N[I]),this.$={typeStr:N[I-2]+N[I],label:N[I-1]};break;case 34:E.getLogger().debug("Rule: BLOCK_ARROW nodeShapeNLabel: ",N[I-3],N[I-2]," #3:",N[I-1],N[I]),this.$={typeStr:N[I-3]+N[I],label:N[I-2],directions:N[I-1]};break;case 35:case 36:this.$={type:"classDef",id:N[I-1].trim(),css:N[I].trim()};break;case 37:this.$={type:"applyClass",id:N[I-1].trim(),styleClass:N[I].trim()};break;case 38:this.$={type:"applyStyles",id:N[I-1].trim(),stylesStr:N[I].trim()};break}},"anonymous"),table:[{9:1,10:[1,2]},{1:[3]},{10:t,11:3,13:4,19:5,20:6,21:r,22:8,23:9,24:10,25:11,26:12,28:i,29:n,31:a,39:s,43:l,46:u},{8:[1,20]},e(h,[2,12],{13:4,19:5,20:6,22:8,23:9,24:10,25:11,26:12,11:21,10:t,21:r,28:i,29:n,31:a,39:s,43:l,46:u}),e(d,[2,16],{14:22,15:f,16:p}),e(d,[2,17]),e(d,[2,18]),e(d,[2,19]),e(d,[2,20]),e(d,[2,21]),e(d,[2,22]),e(m,[2,25],{27:[1,25]}),e(d,[2,26]),{19:26,26:12,31:a},{10:t,11:27,13:4,19:5,20:6,21:r,22:8,23:9,24:10,25:11,26:12,28:i,29:n,31:a,39:s,43:l,46:u},{40:[1,28],42:[1,29]},{44:[1,30]},{47:[1,31]},e(g,[2,29],{32:32,35:[1,33],37:[1,34]}),{1:[2,7]},e(h,[2,13]),{26:35,31:a},{31:[2,14]},{17:[1,36]},e(m,[2,24]),{10:t,11:37,13:4,14:22,15:f,16:p,19:5,20:6,21:r,22:8,23:9,24:10,25:11,26:12,28:i,29:n,31:a,39:s,43:l,46:u},{30:[1,38]},{41:[1,39]},{41:[1,40]},{45:[1,41]},{48:[1,42]},e(g,[2,30]),{18:[1,43]},{18:[1,44]},e(m,[2,23]),{18:[1,45]},{30:[1,46]},e(d,[2,28]),e(d,[2,35]),e(d,[2,36]),e(d,[2,37]),e(d,[2,38]),{36:[1,47]},{33:48,34:y},{15:[1,50]},e(d,[2,27]),e(g,[2,33]),{38:[1,51]},{33:52,34:y,38:[2,31]},{31:[2,15]},e(g,[2,34]),{38:[2,32]}],defaultActions:{20:[2,7],23:[2,14],50:[2,15],52:[2,32]},parseError:o(function(w,C){if(C.recoverable)this.trace(w);else{var k=new Error(w);throw k.hash=C,k}},"parseError"),parse:o(function(w){var C=this,k=[0],E=[],A=[null],N=[],P=this.table,I="",D=0,_=0,R=0,M=2,L=1,B=N.slice.call(arguments,1),O=Object.create(this.lexer),$={yy:{}};for(var G in this.yy)Object.prototype.hasOwnProperty.call(this.yy,G)&&($.yy[G]=this.yy[G]);O.setInput(w,$.yy),$.yy.lexer=O,$.yy.parser=this,typeof O.yylloc>"u"&&(O.yylloc={});var F=O.yylloc;N.push(F);var V=O.options&&O.options.ranges;typeof $.yy.parseError=="function"?this.parseError=$.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function H(Ee){k.length=k.length-2*Ee,A.length=A.length-Ee,N.length=N.length-Ee}o(H,"popStack");function j(){var Ee;return Ee=E.pop()||O.lex()||L,typeof Ee!="number"&&(Ee instanceof Array&&(E=Ee,Ee=E.pop()),Ee=C.symbols_[Ee]||Ee),Ee}o(j,"lex");for(var U,Q,Y,ae,J,te,re={},ee,Te,ue,De;;){if(Y=k[k.length-1],this.defaultActions[Y]?ae=this.defaultActions[Y]:((U===null||typeof U>"u")&&(U=j()),ae=P[Y]&&P[Y][U]),typeof ae>"u"||!ae.length||!ae[0]){var Ie="";De=[];for(ee in P[Y])this.terminals_[ee]&&ee>M&&De.push("'"+this.terminals_[ee]+"'");O.showPosition?Ie="Parse error on line "+(D+1)+`:
+	${fDt(t,r)}
+	`},"styles")});var VPe={};ir(VPe,{diagram:()=>mDt});var mDt,WPe=F(()=>{"use strict";bj();BPe();FPe();GPe();mDt={parser:OPe,db:I0,renderer:$Pe,styles:zPe}});var Tj,UPe,YPe=F(()=>{"use strict";Tj=(function(){var e=o(function(T,k,C,w){for(C=C||{},w=T.length;w--;C[T[w]]=k);return C},"o"),t=[1,15],r=[1,7],n=[1,13],i=[1,14],a=[1,19],s=[1,16],l=[1,17],u=[1,18],h=[8,30],d=[8,10,21,28,29,30,31,39,43,46],f=[1,23],p=[1,24],m=[8,10,15,16,21,28,29,30,31,39,43,46],g=[8,10,15,16,21,27,28,29,30,31,39,43,46],y=[1,49],v={trace:o(function(){},"trace"),yy:{},symbols_:{error:2,spaceLines:3,SPACELINE:4,NL:5,separator:6,SPACE:7,EOF:8,start:9,BLOCK_DIAGRAM_KEY:10,document:11,stop:12,statement:13,link:14,LINK:15,START_LINK:16,LINK_LABEL:17,STR:18,nodeStatement:19,columnsStatement:20,SPACE_BLOCK:21,blockStatement:22,classDefStatement:23,cssClassStatement:24,styleStatement:25,node:26,SIZE:27,COLUMNS:28,"id-block":29,end:30,NODE_ID:31,nodeShapeNLabel:32,dirList:33,DIR:34,NODE_DSTART:35,NODE_DEND:36,BLOCK_ARROW_START:37,BLOCK_ARROW_END:38,classDef:39,CLASSDEF_ID:40,CLASSDEF_STYLEOPTS:41,DEFAULT:42,class:43,CLASSENTITY_IDS:44,STYLECLASS:45,style:46,STYLE_ENTITY_IDS:47,STYLE_DEFINITION_DATA:48,$accept:0,$end:1},terminals_:{2:"error",4:"SPACELINE",5:"NL",7:"SPACE",8:"EOF",10:"BLOCK_DIAGRAM_KEY",15:"LINK",16:"START_LINK",17:"LINK_LABEL",18:"STR",21:"SPACE_BLOCK",27:"SIZE",28:"COLUMNS",29:"id-block",30:"end",31:"NODE_ID",34:"DIR",35:"NODE_DSTART",36:"NODE_DEND",37:"BLOCK_ARROW_START",38:"BLOCK_ARROW_END",39:"classDef",40:"CLASSDEF_ID",41:"CLASSDEF_STYLEOPTS",42:"DEFAULT",43:"class",44:"CLASSENTITY_IDS",45:"STYLECLASS",46:"style",47:"STYLE_ENTITY_IDS",48:"STYLE_DEFINITION_DATA"},productions_:[0,[3,1],[3,2],[3,2],[6,1],[6,1],[6,1],[9,3],[12,1],[12,1],[12,2],[12,2],[11,1],[11,2],[14,1],[14,4],[13,1],[13,1],[13,1],[13,1],[13,1],[13,1],[13,1],[19,3],[19,2],[19,1],[20,1],[22,4],[22,3],[26,1],[26,2],[33,1],[33,2],[32,3],[32,4],[23,3],[23,3],[24,3],[25,3]],performAction:o(function(k,C,w,S,R,L,N){var I=L.length-1;switch(R){case 4:S.getLogger().debug("Rule: separator (NL) ");break;case 5:S.getLogger().debug("Rule: separator (Space) ");break;case 6:S.getLogger().debug("Rule: separator (EOF) ");break;case 7:S.getLogger().debug("Rule: hierarchy: ",L[I-1]),S.setHierarchy(L[I-1]);break;case 8:S.getLogger().debug("Stop NL ");break;case 9:S.getLogger().debug("Stop EOF ");break;case 10:S.getLogger().debug("Stop NL2 ");break;case 11:S.getLogger().debug("Stop EOF2 ");break;case 12:S.getLogger().debug("Rule: statement: ",L[I]),typeof L[I].length=="number"?this.$=L[I]:this.$=[L[I]];break;case 13:S.getLogger().debug("Rule: statement #2: ",L[I-1]),this.$=[L[I-1]].concat(L[I]);break;case 14:S.getLogger().debug("Rule: link: ",L[I],k),this.$={edgeTypeStr:L[I],label:""};break;case 15:S.getLogger().debug("Rule: LABEL link: ",L[I-3],L[I-1],L[I]),this.$={edgeTypeStr:L[I],label:L[I-1]};break;case 18:let _=parseInt(L[I]),A=S.generateId();this.$={id:A,type:"space",label:"",width:_,children:[]};break;case 23:S.getLogger().debug("Rule: (nodeStatement link node) ",L[I-2],L[I-1],L[I]," typestr: ",L[I-1].edgeTypeStr);let M=S.edgeStrToEdgeData(L[I-1].edgeTypeStr),D=S.edgeStrToEdgeStartData(L[I-1].edgeTypeStr),P=S.edgeStrToThickness(L[I-1].edgeTypeStr),B=S.edgeStrToPattern(L[I-1].edgeTypeStr);this.$=[{id:L[I-2].id,label:L[I-2].label,type:L[I-2].type,directions:L[I-2].directions},{id:L[I-2].id+"-"+L[I].id,start:L[I-2].id,end:L[I].id,label:L[I-1].label,type:"edge",thickness:P,pattern:B,directions:L[I].directions,arrowTypeEnd:M,arrowTypeStart:D},{id:L[I].id,label:L[I].label,type:S.typeStr2Type(L[I].typeStr),directions:L[I].directions}];break;case 24:S.getLogger().debug("Rule: nodeStatement (abc88 node size) ",L[I-1],L[I]),this.$={id:L[I-1].id,label:L[I-1].label,type:S.typeStr2Type(L[I-1].typeStr),directions:L[I-1].directions,widthInColumns:parseInt(L[I],10)};break;case 25:S.getLogger().debug("Rule: nodeStatement (node) ",L[I]),this.$={id:L[I].id,label:L[I].label,type:S.typeStr2Type(L[I].typeStr),directions:L[I].directions,widthInColumns:1};break;case 26:S.getLogger().debug("APA123",this?this:"na"),S.getLogger().debug("COLUMNS: ",L[I]),this.$={type:"column-setting",columns:L[I]==="auto"?-1:parseInt(L[I])};break;case 27:S.getLogger().debug("Rule: id-block statement : ",L[I-2],L[I-1]);let O=S.generateId();this.$={...L[I-2],type:"composite",children:L[I-1]};break;case 28:S.getLogger().debug("Rule: blockStatement : ",L[I-2],L[I-1],L[I]);let $=S.generateId();this.$={id:$,type:"composite",label:"",children:L[I-1]};break;case 29:S.getLogger().debug("Rule: node (NODE_ID separator): ",L[I]),this.$={id:L[I]};break;case 30:S.getLogger().debug("Rule: node (NODE_ID nodeShapeNLabel separator): ",L[I-1],L[I]),this.$={id:L[I-1],label:L[I].label,typeStr:L[I].typeStr,directions:L[I].directions};break;case 31:S.getLogger().debug("Rule: dirList: ",L[I]),this.$=[L[I]];break;case 32:S.getLogger().debug("Rule: dirList: ",L[I-1],L[I]),this.$=[L[I-1]].concat(L[I]);break;case 33:S.getLogger().debug("Rule: nodeShapeNLabel: ",L[I-2],L[I-1],L[I]),this.$={typeStr:L[I-2]+L[I],label:L[I-1]};break;case 34:S.getLogger().debug("Rule: BLOCK_ARROW nodeShapeNLabel: ",L[I-3],L[I-2]," #3:",L[I-1],L[I]),this.$={typeStr:L[I-3]+L[I],label:L[I-2],directions:L[I-1]};break;case 35:case 36:this.$={type:"classDef",id:L[I-1].trim(),css:L[I].trim()};break;case 37:this.$={type:"applyClass",id:L[I-1].trim(),styleClass:L[I].trim()};break;case 38:this.$={type:"applyStyles",id:L[I-1].trim(),stylesStr:L[I].trim()};break}},"anonymous"),table:[{9:1,10:[1,2]},{1:[3]},{10:t,11:3,13:4,19:5,20:6,21:r,22:8,23:9,24:10,25:11,26:12,28:n,29:i,31:a,39:s,43:l,46:u},{8:[1,20]},e(h,[2,12],{13:4,19:5,20:6,22:8,23:9,24:10,25:11,26:12,11:21,10:t,21:r,28:n,29:i,31:a,39:s,43:l,46:u}),e(d,[2,16],{14:22,15:f,16:p}),e(d,[2,17]),e(d,[2,18]),e(d,[2,19]),e(d,[2,20]),e(d,[2,21]),e(d,[2,22]),e(m,[2,25],{27:[1,25]}),e(d,[2,26]),{19:26,26:12,31:a},{10:t,11:27,13:4,19:5,20:6,21:r,22:8,23:9,24:10,25:11,26:12,28:n,29:i,31:a,39:s,43:l,46:u},{40:[1,28],42:[1,29]},{44:[1,30]},{47:[1,31]},e(g,[2,29],{32:32,35:[1,33],37:[1,34]}),{1:[2,7]},e(h,[2,13]),{26:35,31:a},{31:[2,14]},{17:[1,36]},e(m,[2,24]),{10:t,11:37,13:4,14:22,15:f,16:p,19:5,20:6,21:r,22:8,23:9,24:10,25:11,26:12,28:n,29:i,31:a,39:s,43:l,46:u},{30:[1,38]},{41:[1,39]},{41:[1,40]},{45:[1,41]},{48:[1,42]},e(g,[2,30]),{18:[1,43]},{18:[1,44]},e(m,[2,23]),{18:[1,45]},{30:[1,46]},e(d,[2,28]),e(d,[2,35]),e(d,[2,36]),e(d,[2,37]),e(d,[2,38]),{36:[1,47]},{33:48,34:y},{15:[1,50]},e(d,[2,27]),e(g,[2,33]),{38:[1,51]},{33:52,34:y,38:[2,31]},{31:[2,15]},e(g,[2,34]),{38:[2,32]}],defaultActions:{20:[2,7],23:[2,14],50:[2,15],52:[2,32]},parseError:o(function(k,C){if(C.recoverable)this.trace(k);else{var w=new Error(k);throw w.hash=C,w}},"parseError"),parse:o(function(k){var C=this,w=[0],S=[],R=[null],L=[],N=this.table,I="",_=0,A=0,M=0,D=2,P=1,B=L.slice.call(arguments,1),O=Object.create(this.lexer),$={yy:{}};for(var V in this.yy)Object.prototype.hasOwnProperty.call(this.yy,V)&&($.yy[V]=this.yy[V]);O.setInput(k,$.yy),$.yy.lexer=O,$.yy.parser=this,typeof O.yylloc>"u"&&(O.yylloc={});var G=O.yylloc;L.push(G);var z=O.options&&O.options.ranges;typeof $.yy.parseError=="function"?this.parseError=$.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function W(Oe){w.length=w.length-2*Oe,R.length=R.length-Oe,L.length=L.length-Oe}o(W,"popStack");function H(){var Oe;return Oe=S.pop()||O.lex()||P,typeof Oe!="number"&&(Oe instanceof Array&&(S=Oe,Oe=S.pop()),Oe=C.symbols_[Oe]||Oe),Oe}o(H,"lex");for(var j,Q,U,oe,te,le,ie={},ae,Re,be,Pe;;){if(U=w[w.length-1],this.defaultActions[U]?oe=this.defaultActions[U]:((j===null||typeof j>"u")&&(j=H()),oe=N[U]&&N[U][j]),typeof oe>"u"||!oe.length||!oe[0]){var Ge="";Pe=[];for(ae in N[U])this.terminals_[ae]&&ae>D&&Pe.push("'"+this.terminals_[ae]+"'");O.showPosition?Ge="Parse error on line "+(_+1)+`:
 `+O.showPosition()+`
-Expecting `+De.join(", ")+", got '"+(this.terminals_[U]||U)+"'":Ie="Parse error on line "+(D+1)+": Unexpected "+(U==L?"end of input":"'"+(this.terminals_[U]||U)+"'"),this.parseError(Ie,{text:O.match,token:this.terminals_[U]||U,line:O.yylineno,loc:F,expected:De})}if(ae[0]instanceof Array&&ae.length>1)throw new Error("Parse Error: multiple actions possible at state: "+Y+", token: "+U);switch(ae[0]){case 1:k.push(U),A.push(O.yytext),N.push(O.yylloc),k.push(ae[1]),U=null,Q?(U=Q,Q=null):(_=O.yyleng,I=O.yytext,D=O.yylineno,F=O.yylloc,R>0&&R--);break;case 2:if(Te=this.productions_[ae[1]][1],re.$=A[A.length-Te],re._$={first_line:N[N.length-(Te||1)].first_line,last_line:N[N.length-1].last_line,first_column:N[N.length-(Te||1)].first_column,last_column:N[N.length-1].last_column},V&&(re._$.range=[N[N.length-(Te||1)].range[0],N[N.length-1].range[1]]),te=this.performAction.apply(re,[I,_,D,$.yy,ae[1],A,N].concat(B)),typeof te<"u")return te;Te&&(k=k.slice(0,-1*Te*2),A=A.slice(0,-1*Te),N=N.slice(0,-1*Te)),k.push(this.productions_[ae[1]][0]),A.push(re.$),N.push(re._$),ue=P[k[k.length-2]][k[k.length-1]],k.push(ue);break;case 3:return!0}}return!0},"parse")},x=(function(){var T={EOF:1,parseError:o(function(C,k){if(this.yy.parser)this.yy.parser.parseError(C,k);else throw new Error(C)},"parseError"),setInput:o(function(w,C){return this.yy=C||this.yy||{},this._input=w,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},"setInput"),input:o(function(){var w=this._input[0];this.yytext+=w,this.yyleng++,this.offset++,this.match+=w,this.matched+=w;var C=w.match(/(?:\r\n?|\n).*/g);return C?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),w},"input"),unput:o(function(w){var C=w.length,k=w.split(/(?:\r\n?|\n)/g);this._input=w+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-C),this.offset-=C;var E=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),k.length-1&&(this.yylineno-=k.length-1);var A=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:k?(k.length===E.length?this.yylloc.first_column:0)+E[E.length-k.length].length-k[0].length:this.yylloc.first_column-C},this.options.ranges&&(this.yylloc.range=[A[0],A[0]+this.yyleng-C]),this.yyleng=this.yytext.length,this},"unput"),more:o(function(){return this._more=!0,this},"more"),reject:o(function(){if(this.options.backtrack_lexer)this._backtrack=!0;else return this.parseError("Lexical error on line "+(this.yylineno+1)+`. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).
-`+this.showPosition(),{text:"",token:null,line:this.yylineno});return this},"reject"),less:o(function(w){this.unput(this.match.slice(w))},"less"),pastInput:o(function(){var w=this.matched.substr(0,this.matched.length-this.match.length);return(w.length>20?"...":"")+w.substr(-20).replace(/\n/g,"")},"pastInput"),upcomingInput:o(function(){var w=this.match;return w.length<20&&(w+=this._input.substr(0,20-w.length)),(w.substr(0,20)+(w.length>20?"...":"")).replace(/\n/g,"")},"upcomingInput"),showPosition:o(function(){var w=this.pastInput(),C=new Array(w.length+1).join("-");return w+this.upcomingInput()+`
-`+C+"^"},"showPosition"),test_match:o(function(w,C){var k,E,A;if(this.options.backtrack_lexer&&(A={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(A.yylloc.range=this.yylloc.range.slice(0))),E=w[0].match(/(?:\r\n?|\n).*/g),E&&(this.yylineno+=E.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:E?E[E.length-1].length-E[E.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+w[0].length},this.yytext+=w[0],this.match+=w[0],this.matches=w,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(w[0].length),this.matched+=w[0],k=this.performAction.call(this,this.yy,this,C,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),k)return k;if(this._backtrack){for(var N in A)this[N]=A[N];return!1}return!1},"test_match"),next:o(function(){if(this.done)return this.EOF;this._input||(this.done=!0);var w,C,k,E;this._more||(this.yytext="",this.match="");for(var A=this._currentRules(),N=0;N<A.length;N++)if(k=this._input.match(this.rules[A[N]]),k&&(!C||k[0].length>C[0].length)){if(C=k,E=N,this.options.backtrack_lexer){if(w=this.test_match(k,A[N]),w!==!1)return w;if(this._backtrack){C=!1;continue}else return!1}else if(!this.options.flex)break}return C?(w=this.test_match(C,A[E]),w!==!1?w:!1):this._input===""?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+`. Unrecognized text.
-`+this.showPosition(),{text:"",token:null,line:this.yylineno})},"next"),lex:o(function(){var C=this.next();return C||this.lex()},"lex"),begin:o(function(C){this.conditionStack.push(C)},"begin"),popState:o(function(){var C=this.conditionStack.length-1;return C>0?this.conditionStack.pop():this.conditionStack[0]},"popState"),_currentRules:o(function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},"_currentRules"),topState:o(function(C){return C=this.conditionStack.length-1-Math.abs(C||0),C>=0?this.conditionStack[C]:"INITIAL"},"topState"),pushState:o(function(C){this.begin(C)},"pushState"),stateStackSize:o(function(){return this.conditionStack.length},"stateStackSize"),options:{},performAction:o(function(C,k,E,A){var N=A;switch(E){case 0:return C.getLogger().debug("Found block-beta"),10;break;case 1:return C.getLogger().debug("Found id-block"),29;break;case 2:return C.getLogger().debug("Found block"),10;break;case 3:C.getLogger().debug(".",k.yytext);break;case 4:C.getLogger().debug("_",k.yytext);break;case 5:return 5;case 6:return k.yytext=-1,28;break;case 7:return k.yytext=k.yytext.replace(/columns\s+/,""),C.getLogger().debug("COLUMNS (LEX)",k.yytext),28;break;case 8:this.pushState("md_string");break;case 9:return"MD_STR";case 10:this.popState();break;case 11:this.pushState("string");break;case 12:C.getLogger().debug("LEX: POPPING STR:",k.yytext),this.popState();break;case 13:return C.getLogger().debug("LEX: STR end:",k.yytext),"STR";break;case 14:return k.yytext=k.yytext.replace(/space\:/,""),C.getLogger().debug("SPACE NUM (LEX)",k.yytext),21;break;case 15:return k.yytext="1",C.getLogger().debug("COLUMNS (LEX)",k.yytext),21;break;case 16:return 42;case 17:return"LINKSTYLE";case 18:return"INTERPOLATE";case 19:return this.pushState("CLASSDEF"),39;break;case 20:return this.popState(),this.pushState("CLASSDEFID"),"DEFAULT_CLASSDEF_ID";break;case 21:return this.popState(),this.pushState("CLASSDEFID"),40;break;case 22:return this.popState(),41;break;case 23:return this.pushState("CLASS"),43;break;case 24:return this.popState(),this.pushState("CLASS_STYLE"),44;break;case 25:return this.popState(),45;break;case 26:return this.pushState("STYLE_STMNT"),46;break;case 27:return this.popState(),this.pushState("STYLE_DEFINITION"),47;break;case 28:return this.popState(),48;break;case 29:return this.pushState("acc_title"),"acc_title";break;case 30:return this.popState(),"acc_title_value";break;case 31:return this.pushState("acc_descr"),"acc_descr";break;case 32:return this.popState(),"acc_descr_value";break;case 33:this.pushState("acc_descr_multiline");break;case 34:this.popState();break;case 35:return"acc_descr_multiline_value";case 36:return 30;case 37:return this.popState(),C.getLogger().debug("Lex: (("),"NODE_DEND";break;case 38:return this.popState(),C.getLogger().debug("Lex: (("),"NODE_DEND";break;case 39:return this.popState(),C.getLogger().debug("Lex: ))"),"NODE_DEND";break;case 40:return this.popState(),C.getLogger().debug("Lex: (("),"NODE_DEND";break;case 41:return this.popState(),C.getLogger().debug("Lex: (("),"NODE_DEND";break;case 42:return this.popState(),C.getLogger().debug("Lex: (-"),"NODE_DEND";break;case 43:return this.popState(),C.getLogger().debug("Lex: -)"),"NODE_DEND";break;case 44:return this.popState(),C.getLogger().debug("Lex: (("),"NODE_DEND";break;case 45:return this.popState(),C.getLogger().debug("Lex: ]]"),"NODE_DEND";break;case 46:return this.popState(),C.getLogger().debug("Lex: ("),"NODE_DEND";break;case 47:return this.popState(),C.getLogger().debug("Lex: ])"),"NODE_DEND";break;case 48:return this.popState(),C.getLogger().debug("Lex: /]"),"NODE_DEND";break;case 49:return this.popState(),C.getLogger().debug("Lex: /]"),"NODE_DEND";break;case 50:return this.popState(),C.getLogger().debug("Lex: )]"),"NODE_DEND";break;case 51:return this.popState(),C.getLogger().debug("Lex: )"),"NODE_DEND";break;case 52:return this.popState(),C.getLogger().debug("Lex: ]>"),"NODE_DEND";break;case 53:return this.popState(),C.getLogger().debug("Lex: ]"),"NODE_DEND";break;case 54:return C.getLogger().debug("Lexa: -)"),this.pushState("NODE"),35;break;case 55:return C.getLogger().debug("Lexa: (-"),this.pushState("NODE"),35;break;case 56:return C.getLogger().debug("Lexa: ))"),this.pushState("NODE"),35;break;case 57:return C.getLogger().debug("Lexa: )"),this.pushState("NODE"),35;break;case 58:return C.getLogger().debug("Lex: ((("),this.pushState("NODE"),35;break;case 59:return C.getLogger().debug("Lexa: )"),this.pushState("NODE"),35;break;case 60:return C.getLogger().debug("Lexa: )"),this.pushState("NODE"),35;break;case 61:return C.getLogger().debug("Lexa: )"),this.pushState("NODE"),35;break;case 62:return C.getLogger().debug("Lexc: >"),this.pushState("NODE"),35;break;case 63:return C.getLogger().debug("Lexa: (["),this.pushState("NODE"),35;break;case 64:return C.getLogger().debug("Lexa: )"),this.pushState("NODE"),35;break;case 65:return this.pushState("NODE"),35;break;case 66:return this.pushState("NODE"),35;break;case 67:return this.pushState("NODE"),35;break;case 68:return this.pushState("NODE"),35;break;case 69:return this.pushState("NODE"),35;break;case 70:return this.pushState("NODE"),35;break;case 71:return this.pushState("NODE"),35;break;case 72:return C.getLogger().debug("Lexa: ["),this.pushState("NODE"),35;break;case 73:return this.pushState("BLOCK_ARROW"),C.getLogger().debug("LEX ARR START"),37;break;case 74:return C.getLogger().debug("Lex: NODE_ID",k.yytext),31;break;case 75:return C.getLogger().debug("Lex: EOF",k.yytext),8;break;case 76:this.pushState("md_string");break;case 77:this.pushState("md_string");break;case 78:return"NODE_DESCR";case 79:this.popState();break;case 80:C.getLogger().debug("Lex: Starting string"),this.pushState("string");break;case 81:C.getLogger().debug("LEX ARR: Starting string"),this.pushState("string");break;case 82:return C.getLogger().debug("LEX: NODE_DESCR:",k.yytext),"NODE_DESCR";break;case 83:C.getLogger().debug("LEX POPPING"),this.popState();break;case 84:C.getLogger().debug("Lex: =>BAE"),this.pushState("ARROW_DIR");break;case 85:return k.yytext=k.yytext.replace(/^,\s*/,""),C.getLogger().debug("Lex (right): dir:",k.yytext),"DIR";break;case 86:return k.yytext=k.yytext.replace(/^,\s*/,""),C.getLogger().debug("Lex (left):",k.yytext),"DIR";break;case 87:return k.yytext=k.yytext.replace(/^,\s*/,""),C.getLogger().debug("Lex (x):",k.yytext),"DIR";break;case 88:return k.yytext=k.yytext.replace(/^,\s*/,""),C.getLogger().debug("Lex (y):",k.yytext),"DIR";break;case 89:return k.yytext=k.yytext.replace(/^,\s*/,""),C.getLogger().debug("Lex (up):",k.yytext),"DIR";break;case 90:return k.yytext=k.yytext.replace(/^,\s*/,""),C.getLogger().debug("Lex (down):",k.yytext),"DIR";break;case 91:return k.yytext="]>",C.getLogger().debug("Lex (ARROW_DIR end):",k.yytext),this.popState(),this.popState(),"BLOCK_ARROW_END";break;case 92:return C.getLogger().debug("Lex: LINK","#"+k.yytext+"#"),15;break;case 93:return C.getLogger().debug("Lex: LINK",k.yytext),15;break;case 94:return C.getLogger().debug("Lex: LINK",k.yytext),15;break;case 95:return C.getLogger().debug("Lex: LINK",k.yytext),15;break;case 96:return C.getLogger().debug("Lex: START_LINK",k.yytext),this.pushState("LLABEL"),16;break;case 97:return C.getLogger().debug("Lex: START_LINK",k.yytext),this.pushState("LLABEL"),16;break;case 98:return C.getLogger().debug("Lex: START_LINK",k.yytext),this.pushState("LLABEL"),16;break;case 99:this.pushState("md_string");break;case 100:return C.getLogger().debug("Lex: Starting string"),this.pushState("string"),"LINK_LABEL";break;case 101:return this.popState(),C.getLogger().debug("Lex: LINK","#"+k.yytext+"#"),15;break;case 102:return this.popState(),C.getLogger().debug("Lex: LINK",k.yytext),15;break;case 103:return this.popState(),C.getLogger().debug("Lex: LINK",k.yytext),15;break;case 104:return C.getLogger().debug("Lex: COLON",k.yytext),k.yytext=k.yytext.slice(1),27;break}},"anonymous"),rules:[/^(?:block-beta\b)/,/^(?:block:)/,/^(?:block\b)/,/^(?:[\s]+)/,/^(?:[\n]+)/,/^(?:((\u000D\u000A)|(\u000A)))/,/^(?:columns\s+auto\b)/,/^(?:columns\s+[\d]+)/,/^(?:["][`])/,/^(?:[^`"]+)/,/^(?:[`]["])/,/^(?:["])/,/^(?:["])/,/^(?:[^"]*)/,/^(?:space[:]\d+)/,/^(?:space\b)/,/^(?:default\b)/,/^(?:linkStyle\b)/,/^(?:interpolate\b)/,/^(?:classDef\s+)/,/^(?:DEFAULT\s+)/,/^(?:\w+\s+)/,/^(?:[^\n]*)/,/^(?:class\s+)/,/^(?:(\w+)+((,\s*\w+)*))/,/^(?:[^\n]*)/,/^(?:style\s+)/,/^(?:(\w+)+((,\s*\w+)*))/,/^(?:[^\n]*)/,/^(?:accTitle\s*:\s*)/,/^(?:(?!\n||)*[^\n]*)/,/^(?:accDescr\s*:\s*)/,/^(?:(?!\n||)*[^\n]*)/,/^(?:accDescr\s*\{\s*)/,/^(?:[\}])/,/^(?:[^\}]*)/,/^(?:end\b\s*)/,/^(?:\(\(\()/,/^(?:\)\)\))/,/^(?:[\)]\))/,/^(?:\}\})/,/^(?:\})/,/^(?:\(-)/,/^(?:-\))/,/^(?:\(\()/,/^(?:\]\])/,/^(?:\()/,/^(?:\]\))/,/^(?:\\\])/,/^(?:\/\])/,/^(?:\)\])/,/^(?:[\)])/,/^(?:\]>)/,/^(?:[\]])/,/^(?:-\))/,/^(?:\(-)/,/^(?:\)\))/,/^(?:\))/,/^(?:\(\(\()/,/^(?:\(\()/,/^(?:\{\{)/,/^(?:\{)/,/^(?:>)/,/^(?:\(\[)/,/^(?:\()/,/^(?:\[\[)/,/^(?:\[\|)/,/^(?:\[\()/,/^(?:\)\)\))/,/^(?:\[\\)/,/^(?:\[\/)/,/^(?:\[\\)/,/^(?:\[)/,/^(?:<\[)/,/^(?:[^\(\[\n\-\)\{\}\s\<\>:=]+)/,/^(?:$)/,/^(?:["][`])/,/^(?:["][`])/,/^(?:[^`"]+)/,/^(?:[`]["])/,/^(?:["])/,/^(?:["])/,/^(?:[^"]+)/,/^(?:["])/,/^(?:\]>\s*\()/,/^(?:,?\s*right\s*)/,/^(?:,?\s*left\s*)/,/^(?:,?\s*x\s*)/,/^(?:,?\s*y\s*)/,/^(?:,?\s*up\s*)/,/^(?:,?\s*down\s*)/,/^(?:\)\s*)/,/^(?:\s*[xo<]?--+[-xo>]\s*)/,/^(?:\s*[xo<]?==+[=xo>]\s*)/,/^(?:\s*[xo<]?-?\.+-[xo>]?\s*)/,/^(?:\s*~~[\~]+\s*)/,/^(?:\s*[xo<]?--\s*)/,/^(?:\s*[xo<]?==\s*)/,/^(?:\s*[xo<]?-\.\s*)/,/^(?:["][`])/,/^(?:["])/,/^(?:\s*[xo<]?--+[-xo>]\s*)/,/^(?:\s*[xo<]?==+[=xo>]\s*)/,/^(?:\s*[xo<]?-?\.+-[xo>]?\s*)/,/^(?::\d+)/],conditions:{STYLE_DEFINITION:{rules:[28],inclusive:!1},STYLE_STMNT:{rules:[27],inclusive:!1},CLASSDEFID:{rules:[22],inclusive:!1},CLASSDEF:{rules:[20,21],inclusive:!1},CLASS_STYLE:{rules:[25],inclusive:!1},CLASS:{rules:[24],inclusive:!1},LLABEL:{rules:[99,100,101,102,103],inclusive:!1},ARROW_DIR:{rules:[85,86,87,88,89,90,91],inclusive:!1},BLOCK_ARROW:{rules:[76,81,84],inclusive:!1},NODE:{rules:[37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,77,80],inclusive:!1},md_string:{rules:[9,10,78,79],inclusive:!1},space:{rules:[],inclusive:!1},string:{rules:[12,13,82,83],inclusive:!1},acc_descr_multiline:{rules:[34,35],inclusive:!1},acc_descr:{rules:[32],inclusive:!1},acc_title:{rules:[30],inclusive:!1},INITIAL:{rules:[0,1,2,3,4,5,6,7,8,11,14,15,16,17,18,19,23,26,29,31,33,36,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,92,93,94,95,96,97,98,104],inclusive:!0}}};return T})();v.lexer=x;function b(){this.yy={}}return o(b,"Parser"),b.prototype=v,v.Parser=b,new b})();Tq.parser=Tq;e8e=Tq});function J4t(e){switch(Z.debug("typeStr2Type",e),e){case"[]":return"square";case"()":return Z.debug("we have a round"),"round";case"(())":return"circle";case">]":return"rect_left_inv_arrow";case"{}":return"diamond";case"{{}}":return"hexagon";case"([])":return"stadium";case"[[]]":return"subroutine";case"[()]":return"cylinder";case"((()))":return"doublecircle";case"[//]":return"lean_right";case"[\\\\]":return"lean_left";case"[/\\]":return"trapezoid";case"[\\/]":return"inv_trapezoid";case"<[]>":return"block_arrow";default:return"na"}}function eSt(e){switch(Z.debug("typeStr2Type",e),e){case"==":return"thick";default:return"normal"}}function tSt(e){switch(e.trim().slice(-1)){case"x":return"arrow_cross";case"o":return"arrow_circle";case">":return"arrow_point";default:return""}}function rSt(e){switch(e.trim().charAt(0)){case"x":return"arrow_cross";case"o":return"arrow_circle";case"<":return"arrow_point";default:return"arrow_open"}}function iSt(e){return e.includes("==")?"thick":"normal"}function nSt(e){return e.includes(".-")?"dotted":"solid"}var Ql,kq,Cq,r8e,i8e,H4t,a8e,Y4t,b_,wq,j4t,X4t,K4t,Z4t,s8e,Sq,aC,Q4t,n8e,aSt,sSt,oSt,lSt,cSt,uSt,hSt,dSt,fSt,pSt,mSt,gSt,ySt,o8e,l8e=z(()=>{"use strict";s4();br();Ut();St();Ir();Ci();Ql=new Map,kq=[],Cq=new Map,r8e="color",i8e="fill",H4t="bgFill",a8e=",",Y4t=ge(),b_=new Map,wq="",j4t=o(e=>vt.sanitizeText(e,Y4t),"sanitizeText"),X4t=o(function(e,t=""){let r=b_.get(e);r||(r={id:e,styles:[],textStyles:[]},b_.set(e,r)),t?.split(a8e).forEach(i=>{let n=i.replace(/([^;]*);/,"$1").trim();if(RegExp(r8e).exec(i)){let s=n.replace(i8e,H4t).replace(r8e,i8e);r.textStyles.push(s)}r.styles.push(n)})},"addStyleClass"),K4t=o(function(e,t=""){let r=Ql.get(e);t!=null&&(r.styles=t.split(a8e))},"addStyle2Node"),Z4t=o(function(e,t){e.split(",").forEach(function(r){let i=Ql.get(r);if(i===void 0){let n=r.trim();i={id:n,type:"na",children:[]},Ql.set(n,i)}i.classes||(i.classes=[]),i.classes.push(t)})},"setCssClass"),s8e=o((e,t)=>{let r=e.flat(),i=[],a=r.find(s=>s?.type==="column-setting")?.columns??-1;for(let s of r){if(typeof a=="number"&&a>0&&s.type!=="column-setting"&&typeof s.widthInColumns=="number"&&s.widthInColumns>a&&Z.warn(`Block ${s.id} width ${s.widthInColumns} exceeds configured column width ${a}`),s.label&&(s.label=j4t(s.label)),s.type==="classDef"){X4t(s.id,s.css);continue}if(s.type==="applyClass"){Z4t(s.id,s?.styleClass??"");continue}if(s.type==="applyStyles"){s?.stylesStr&&K4t(s.id,s?.stylesStr);continue}if(s.type==="column-setting")t.columns=s.columns??-1;else if(s.type==="edge"){let l=(Cq.get(s.id)??0)+1;Cq.set(s.id,l),s.id=l+"-"+s.id,kq.push(s)}else{s.label||(s.type==="composite"?s.label="":s.label=s.id);let l=Ql.get(s.id);if(l===void 0?Ql.set(s.id,s):(s.type!=="na"&&(l.type=s.type),s.label!==s.id&&(l.label=s.label)),s.children&&s8e(s.children,s),s.type==="space"){let u=s.width??1;for(let h=0;h<u;h++){let d=CM(s);d.id=d.id+"-"+h,Ql.set(d.id,d),i.push(d)}}else l===void 0&&i.push(s)}}t.children=i},"populateBlockDatabase"),Sq=[],aC={id:"root",type:"composite",children:[],columns:-1},Q4t=o(()=>{Z.debug("Clear called"),gr(),aC={id:"root",type:"composite",children:[],columns:-1},Ql=new Map([["root",aC]]),Sq=[],b_=new Map,kq=[],Cq=new Map,wq=""},"clear");o(J4t,"typeStr2Type");o(eSt,"edgeTypeStr2Type");o(tSt,"edgeStrToEdgeData");o(rSt,"edgeStrToEdgeStartData");o(iSt,"edgeStrToThickness");o(nSt,"edgeStrToPattern");n8e=0,aSt=o(()=>(n8e++,"id-"+Math.random().toString(36).substr(2,12)+"-"+n8e),"generateId"),sSt=o(e=>{aC.children=e,s8e(e,aC),Sq=aC.children},"setHierarchy"),oSt=o(e=>{let t=Ql.get(e);return t?t.columns?t.columns:t.children?t.children.length:-1:-1},"getColumns"),lSt=o(()=>[...Ql.values()],"getBlocksFlat"),cSt=o(()=>Sq||[],"getBlocks"),uSt=o(()=>kq,"getEdges"),hSt=o(e=>Ql.get(e),"getBlock"),dSt=o(e=>{Ql.set(e.id,e)},"setBlock"),fSt=o(e=>{wq=e},"setDiagramId"),pSt=o(()=>wq,"getDiagramId"),mSt=o(()=>Z,"getLogger"),gSt=o(function(){return b_},"getClasses"),ySt={getConfig:o(()=>Nt().block,"getConfig"),typeStr2Type:J4t,edgeTypeStr2Type:eSt,edgeStrToEdgeData:tSt,edgeStrToEdgeStartData:rSt,edgeStrToThickness:iSt,edgeStrToPattern:nSt,getLogger:mSt,getBlocksFlat:lSt,getBlocks:cSt,getEdges:uSt,setHierarchy:sSt,getBlock:hSt,setBlock:dSt,getColumns:oSt,getClasses:gSt,clear:Q4t,generateId:aSt,setDiagramId:fSt,getDiagramId:pSt},o8e=ySt});var Eq,vSt,c8e,u8e=z(()=>{"use strict";Cn();k1();Eq=o((e,t)=>{let r=Ff,i=r(e,"r"),n=r(e,"g"),a=r(e,"b");return mn(i,n,a,t)},"fade"),vSt=o(e=>`.label {
+Expecting `+Pe.join(", ")+", got '"+(this.terminals_[j]||j)+"'":Ge="Parse error on line "+(_+1)+": Unexpected "+(j==P?"end of input":"'"+(this.terminals_[j]||j)+"'"),this.parseError(Ge,{text:O.match,token:this.terminals_[j]||j,line:O.yylineno,loc:G,expected:Pe})}if(oe[0]instanceof Array&&oe.length>1)throw new Error("Parse Error: multiple actions possible at state: "+U+", token: "+j);switch(oe[0]){case 1:w.push(j),R.push(O.yytext),L.push(O.yylloc),w.push(oe[1]),j=null,Q?(j=Q,Q=null):(A=O.yyleng,I=O.yytext,_=O.yylineno,G=O.yylloc,M>0&&M--);break;case 2:if(Re=this.productions_[oe[1]][1],ie.$=R[R.length-Re],ie._$={first_line:L[L.length-(Re||1)].first_line,last_line:L[L.length-1].last_line,first_column:L[L.length-(Re||1)].first_column,last_column:L[L.length-1].last_column},z&&(ie._$.range=[L[L.length-(Re||1)].range[0],L[L.length-1].range[1]]),le=this.performAction.apply(ie,[I,A,_,$.yy,oe[1],R,L].concat(B)),typeof le<"u")return le;Re&&(w=w.slice(0,-1*Re*2),R=R.slice(0,-1*Re),L=L.slice(0,-1*Re)),w.push(this.productions_[oe[1]][0]),R.push(ie.$),L.push(ie._$),be=N[w[w.length-2]][w[w.length-1]],w.push(be);break;case 3:return!0}}return!0},"parse")},x=(function(){var T={EOF:1,parseError:o(function(C,w){if(this.yy.parser)this.yy.parser.parseError(C,w);else throw new Error(C)},"parseError"),setInput:o(function(k,C){return this.yy=C||this.yy||{},this._input=k,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},"setInput"),input:o(function(){var k=this._input[0];this.yytext+=k,this.yyleng++,this.offset++,this.match+=k,this.matched+=k;var C=k.match(/(?:\r\n?|\n).*/g);return C?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),k},"input"),unput:o(function(k){var C=k.length,w=k.split(/(?:\r\n?|\n)/g);this._input=k+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-C),this.offset-=C;var S=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),w.length-1&&(this.yylineno-=w.length-1);var R=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:w?(w.length===S.length?this.yylloc.first_column:0)+S[S.length-w.length].length-w[0].length:this.yylloc.first_column-C},this.options.ranges&&(this.yylloc.range=[R[0],R[0]+this.yyleng-C]),this.yyleng=this.yytext.length,this},"unput"),more:o(function(){return this._more=!0,this},"more"),reject:o(function(){if(this.options.backtrack_lexer)this._backtrack=!0;else return this.parseError("Lexical error on line "+(this.yylineno+1)+`. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).
+`+this.showPosition(),{text:"",token:null,line:this.yylineno});return this},"reject"),less:o(function(k){this.unput(this.match.slice(k))},"less"),pastInput:o(function(){var k=this.matched.substr(0,this.matched.length-this.match.length);return(k.length>20?"...":"")+k.substr(-20).replace(/\n/g,"")},"pastInput"),upcomingInput:o(function(){var k=this.match;return k.length<20&&(k+=this._input.substr(0,20-k.length)),(k.substr(0,20)+(k.length>20?"...":"")).replace(/\n/g,"")},"upcomingInput"),showPosition:o(function(){var k=this.pastInput(),C=new Array(k.length+1).join("-");return k+this.upcomingInput()+`
+`+C+"^"},"showPosition"),test_match:o(function(k,C){var w,S,R;if(this.options.backtrack_lexer&&(R={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(R.yylloc.range=this.yylloc.range.slice(0))),S=k[0].match(/(?:\r\n?|\n).*/g),S&&(this.yylineno+=S.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:S?S[S.length-1].length-S[S.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+k[0].length},this.yytext+=k[0],this.match+=k[0],this.matches=k,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(k[0].length),this.matched+=k[0],w=this.performAction.call(this,this.yy,this,C,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),w)return w;if(this._backtrack){for(var L in R)this[L]=R[L];return!1}return!1},"test_match"),next:o(function(){if(this.done)return this.EOF;this._input||(this.done=!0);var k,C,w,S;this._more||(this.yytext="",this.match="");for(var R=this._currentRules(),L=0;L<R.length;L++)if(w=this._input.match(this.rules[R[L]]),w&&(!C||w[0].length>C[0].length)){if(C=w,S=L,this.options.backtrack_lexer){if(k=this.test_match(w,R[L]),k!==!1)return k;if(this._backtrack){C=!1;continue}else return!1}else if(!this.options.flex)break}return C?(k=this.test_match(C,R[S]),k!==!1?k:!1):this._input===""?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+`. Unrecognized text.
+`+this.showPosition(),{text:"",token:null,line:this.yylineno})},"next"),lex:o(function(){var C=this.next();return C||this.lex()},"lex"),begin:o(function(C){this.conditionStack.push(C)},"begin"),popState:o(function(){var C=this.conditionStack.length-1;return C>0?this.conditionStack.pop():this.conditionStack[0]},"popState"),_currentRules:o(function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},"_currentRules"),topState:o(function(C){return C=this.conditionStack.length-1-Math.abs(C||0),C>=0?this.conditionStack[C]:"INITIAL"},"topState"),pushState:o(function(C){this.begin(C)},"pushState"),stateStackSize:o(function(){return this.conditionStack.length},"stateStackSize"),options:{},performAction:o(function(C,w,S,R){var L=R;switch(S){case 0:return C.getLogger().debug("Found block-beta"),10;break;case 1:return C.getLogger().debug("Found id-block"),29;break;case 2:return C.getLogger().debug("Found block"),10;break;case 3:C.getLogger().debug(".",w.yytext);break;case 4:C.getLogger().debug("_",w.yytext);break;case 5:return 5;case 6:return w.yytext=-1,28;break;case 7:return w.yytext=w.yytext.replace(/columns\s+/,""),C.getLogger().debug("COLUMNS (LEX)",w.yytext),28;break;case 8:this.pushState("md_string");break;case 9:return"MD_STR";case 10:this.popState();break;case 11:this.pushState("string");break;case 12:C.getLogger().debug("LEX: POPPING STR:",w.yytext),this.popState();break;case 13:return C.getLogger().debug("LEX: STR end:",w.yytext),"STR";break;case 14:return w.yytext=w.yytext.replace(/space\:/,""),C.getLogger().debug("SPACE NUM (LEX)",w.yytext),21;break;case 15:return w.yytext="1",C.getLogger().debug("COLUMNS (LEX)",w.yytext),21;break;case 16:return 42;case 17:return"LINKSTYLE";case 18:return"INTERPOLATE";case 19:return this.pushState("CLASSDEF"),39;break;case 20:return this.popState(),this.pushState("CLASSDEFID"),"DEFAULT_CLASSDEF_ID";break;case 21:return this.popState(),this.pushState("CLASSDEFID"),40;break;case 22:return this.popState(),41;break;case 23:return this.pushState("CLASS"),43;break;case 24:return this.popState(),this.pushState("CLASS_STYLE"),44;break;case 25:return this.popState(),45;break;case 26:return this.pushState("STYLE_STMNT"),46;break;case 27:return this.popState(),this.pushState("STYLE_DEFINITION"),47;break;case 28:return this.popState(),48;break;case 29:return this.pushState("acc_title"),"acc_title";break;case 30:return this.popState(),"acc_title_value";break;case 31:return this.pushState("acc_descr"),"acc_descr";break;case 32:return this.popState(),"acc_descr_value";break;case 33:this.pushState("acc_descr_multiline");break;case 34:this.popState();break;case 35:return"acc_descr_multiline_value";case 36:return 30;case 37:return this.popState(),C.getLogger().debug("Lex: (("),"NODE_DEND";break;case 38:return this.popState(),C.getLogger().debug("Lex: (("),"NODE_DEND";break;case 39:return this.popState(),C.getLogger().debug("Lex: ))"),"NODE_DEND";break;case 40:return this.popState(),C.getLogger().debug("Lex: (("),"NODE_DEND";break;case 41:return this.popState(),C.getLogger().debug("Lex: (("),"NODE_DEND";break;case 42:return this.popState(),C.getLogger().debug("Lex: (-"),"NODE_DEND";break;case 43:return this.popState(),C.getLogger().debug("Lex: -)"),"NODE_DEND";break;case 44:return this.popState(),C.getLogger().debug("Lex: (("),"NODE_DEND";break;case 45:return this.popState(),C.getLogger().debug("Lex: ]]"),"NODE_DEND";break;case 46:return this.popState(),C.getLogger().debug("Lex: ("),"NODE_DEND";break;case 47:return this.popState(),C.getLogger().debug("Lex: ])"),"NODE_DEND";break;case 48:return this.popState(),C.getLogger().debug("Lex: /]"),"NODE_DEND";break;case 49:return this.popState(),C.getLogger().debug("Lex: /]"),"NODE_DEND";break;case 50:return this.popState(),C.getLogger().debug("Lex: )]"),"NODE_DEND";break;case 51:return this.popState(),C.getLogger().debug("Lex: )"),"NODE_DEND";break;case 52:return this.popState(),C.getLogger().debug("Lex: ]>"),"NODE_DEND";break;case 53:return this.popState(),C.getLogger().debug("Lex: ]"),"NODE_DEND";break;case 54:return C.getLogger().debug("Lexa: -)"),this.pushState("NODE"),35;break;case 55:return C.getLogger().debug("Lexa: (-"),this.pushState("NODE"),35;break;case 56:return C.getLogger().debug("Lexa: ))"),this.pushState("NODE"),35;break;case 57:return C.getLogger().debug("Lexa: )"),this.pushState("NODE"),35;break;case 58:return C.getLogger().debug("Lex: ((("),this.pushState("NODE"),35;break;case 59:return C.getLogger().debug("Lexa: )"),this.pushState("NODE"),35;break;case 60:return C.getLogger().debug("Lexa: )"),this.pushState("NODE"),35;break;case 61:return C.getLogger().debug("Lexa: )"),this.pushState("NODE"),35;break;case 62:return C.getLogger().debug("Lexc: >"),this.pushState("NODE"),35;break;case 63:return C.getLogger().debug("Lexa: (["),this.pushState("NODE"),35;break;case 64:return C.getLogger().debug("Lexa: )"),this.pushState("NODE"),35;break;case 65:return this.pushState("NODE"),35;break;case 66:return this.pushState("NODE"),35;break;case 67:return this.pushState("NODE"),35;break;case 68:return this.pushState("NODE"),35;break;case 69:return this.pushState("NODE"),35;break;case 70:return this.pushState("NODE"),35;break;case 71:return this.pushState("NODE"),35;break;case 72:return C.getLogger().debug("Lexa: ["),this.pushState("NODE"),35;break;case 73:return this.pushState("BLOCK_ARROW"),C.getLogger().debug("LEX ARR START"),37;break;case 74:return C.getLogger().debug("Lex: NODE_ID",w.yytext),31;break;case 75:return C.getLogger().debug("Lex: EOF",w.yytext),8;break;case 76:this.pushState("md_string");break;case 77:this.pushState("md_string");break;case 78:return"NODE_DESCR";case 79:this.popState();break;case 80:C.getLogger().debug("Lex: Starting string"),this.pushState("string");break;case 81:C.getLogger().debug("LEX ARR: Starting string"),this.pushState("string");break;case 82:return C.getLogger().debug("LEX: NODE_DESCR:",w.yytext),"NODE_DESCR";break;case 83:C.getLogger().debug("LEX POPPING"),this.popState();break;case 84:C.getLogger().debug("Lex: =>BAE"),this.pushState("ARROW_DIR");break;case 85:return w.yytext=w.yytext.replace(/^,\s*/,""),C.getLogger().debug("Lex (right): dir:",w.yytext),"DIR";break;case 86:return w.yytext=w.yytext.replace(/^,\s*/,""),C.getLogger().debug("Lex (left):",w.yytext),"DIR";break;case 87:return w.yytext=w.yytext.replace(/^,\s*/,""),C.getLogger().debug("Lex (x):",w.yytext),"DIR";break;case 88:return w.yytext=w.yytext.replace(/^,\s*/,""),C.getLogger().debug("Lex (y):",w.yytext),"DIR";break;case 89:return w.yytext=w.yytext.replace(/^,\s*/,""),C.getLogger().debug("Lex (up):",w.yytext),"DIR";break;case 90:return w.yytext=w.yytext.replace(/^,\s*/,""),C.getLogger().debug("Lex (down):",w.yytext),"DIR";break;case 91:return w.yytext="]>",C.getLogger().debug("Lex (ARROW_DIR end):",w.yytext),this.popState(),this.popState(),"BLOCK_ARROW_END";break;case 92:return C.getLogger().debug("Lex: LINK","#"+w.yytext+"#"),15;break;case 93:return C.getLogger().debug("Lex: LINK",w.yytext),15;break;case 94:return C.getLogger().debug("Lex: LINK",w.yytext),15;break;case 95:return C.getLogger().debug("Lex: LINK",w.yytext),15;break;case 96:return C.getLogger().debug("Lex: START_LINK",w.yytext),this.pushState("LLABEL"),16;break;case 97:return C.getLogger().debug("Lex: START_LINK",w.yytext),this.pushState("LLABEL"),16;break;case 98:return C.getLogger().debug("Lex: START_LINK",w.yytext),this.pushState("LLABEL"),16;break;case 99:this.pushState("md_string");break;case 100:return C.getLogger().debug("Lex: Starting string"),this.pushState("string"),"LINK_LABEL";break;case 101:return this.popState(),C.getLogger().debug("Lex: LINK","#"+w.yytext+"#"),15;break;case 102:return this.popState(),C.getLogger().debug("Lex: LINK",w.yytext),15;break;case 103:return this.popState(),C.getLogger().debug("Lex: LINK",w.yytext),15;break;case 104:return C.getLogger().debug("Lex: COLON",w.yytext),w.yytext=w.yytext.slice(1),27;break}},"anonymous"),rules:[/^(?:block-beta\b)/,/^(?:block:)/,/^(?:block\b)/,/^(?:[\s]+)/,/^(?:[\n]+)/,/^(?:((\u000D\u000A)|(\u000A)))/,/^(?:columns\s+auto\b)/,/^(?:columns\s+[\d]+)/,/^(?:["][`])/,/^(?:[^`"]+)/,/^(?:[`]["])/,/^(?:["])/,/^(?:["])/,/^(?:[^"]*)/,/^(?:space[:]\d+)/,/^(?:space\b)/,/^(?:default\b)/,/^(?:linkStyle\b)/,/^(?:interpolate\b)/,/^(?:classDef\s+)/,/^(?:DEFAULT\s+)/,/^(?:\w+\s+)/,/^(?:[^\n]*)/,/^(?:class\s+)/,/^(?:(\w+)+((,\s*\w+)*))/,/^(?:[^\n]*)/,/^(?:style\s+)/,/^(?:(\w+)+((,\s*\w+)*))/,/^(?:[^\n]*)/,/^(?:accTitle\s*:\s*)/,/^(?:(?!\n||)*[^\n]*)/,/^(?:accDescr\s*:\s*)/,/^(?:(?!\n||)*[^\n]*)/,/^(?:accDescr\s*\{\s*)/,/^(?:[\}])/,/^(?:[^\}]*)/,/^(?:end\b\s*)/,/^(?:\(\(\()/,/^(?:\)\)\))/,/^(?:[\)]\))/,/^(?:\}\})/,/^(?:\})/,/^(?:\(-)/,/^(?:-\))/,/^(?:\(\()/,/^(?:\]\])/,/^(?:\()/,/^(?:\]\))/,/^(?:\\\])/,/^(?:\/\])/,/^(?:\)\])/,/^(?:[\)])/,/^(?:\]>)/,/^(?:[\]])/,/^(?:-\))/,/^(?:\(-)/,/^(?:\)\))/,/^(?:\))/,/^(?:\(\(\()/,/^(?:\(\()/,/^(?:\{\{)/,/^(?:\{)/,/^(?:>)/,/^(?:\(\[)/,/^(?:\()/,/^(?:\[\[)/,/^(?:\[\|)/,/^(?:\[\()/,/^(?:\)\)\))/,/^(?:\[\\)/,/^(?:\[\/)/,/^(?:\[\\)/,/^(?:\[)/,/^(?:<\[)/,/^(?:[^\(\[\n\-\)\{\}\s\<\>:=]+)/,/^(?:$)/,/^(?:["][`])/,/^(?:["][`])/,/^(?:[^`"]+)/,/^(?:[`]["])/,/^(?:["])/,/^(?:["])/,/^(?:[^"]+)/,/^(?:["])/,/^(?:\]>\s*\()/,/^(?:,?\s*right\s*)/,/^(?:,?\s*left\s*)/,/^(?:,?\s*x\s*)/,/^(?:,?\s*y\s*)/,/^(?:,?\s*up\s*)/,/^(?:,?\s*down\s*)/,/^(?:\)\s*)/,/^(?:\s*[xo<]?--+[-xo>]\s*)/,/^(?:\s*[xo<]?==+[=xo>]\s*)/,/^(?:\s*[xo<]?-?\.+-[xo>]?\s*)/,/^(?:\s*~~[\~]+\s*)/,/^(?:\s*[xo<]?--\s*)/,/^(?:\s*[xo<]?==\s*)/,/^(?:\s*[xo<]?-\.\s*)/,/^(?:["][`])/,/^(?:["])/,/^(?:\s*[xo<]?--+[-xo>]\s*)/,/^(?:\s*[xo<]?==+[=xo>]\s*)/,/^(?:\s*[xo<]?-?\.+-[xo>]?\s*)/,/^(?::\d+)/],conditions:{STYLE_DEFINITION:{rules:[28],inclusive:!1},STYLE_STMNT:{rules:[27],inclusive:!1},CLASSDEFID:{rules:[22],inclusive:!1},CLASSDEF:{rules:[20,21],inclusive:!1},CLASS_STYLE:{rules:[25],inclusive:!1},CLASS:{rules:[24],inclusive:!1},LLABEL:{rules:[99,100,101,102,103],inclusive:!1},ARROW_DIR:{rules:[85,86,87,88,89,90,91],inclusive:!1},BLOCK_ARROW:{rules:[76,81,84],inclusive:!1},NODE:{rules:[37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,77,80],inclusive:!1},md_string:{rules:[9,10,78,79],inclusive:!1},space:{rules:[],inclusive:!1},string:{rules:[12,13,82,83],inclusive:!1},acc_descr_multiline:{rules:[34,35],inclusive:!1},acc_descr:{rules:[32],inclusive:!1},acc_title:{rules:[30],inclusive:!1},INITIAL:{rules:[0,1,2,3,4,5,6,7,8,11,14,15,16,17,18,19,23,26,29,31,33,36,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,92,93,94,95,96,97,98,104],inclusive:!0}}};return T})();v.lexer=x;function b(){this.yy={}}return o(b,"Parser"),b.prototype=v,v.Parser=b,new b})();Tj.parser=Tj;UPe=Tj});function kDt(e){switch(Z.debug("typeStr2Type",e),e){case"[]":return"square";case"()":return Z.debug("we have a round"),"round";case"(())":return"circle";case">]":return"rect_left_inv_arrow";case"{}":return"diamond";case"{{}}":return"hexagon";case"([])":return"stadium";case"[[]]":return"subroutine";case"[()]":return"cylinder";case"((()))":return"doublecircle";case"[//]":return"lean_right";case"[\\\\]":return"lean_left";case"[/\\]":return"trapezoid";case"[\\/]":return"inv_trapezoid";case"<[]>":return"block_arrow";default:return"na"}}function SDt(e){switch(Z.debug("typeStr2Type",e),e){case"==":return"thick";default:return"normal"}}function EDt(e){switch(e.trim().slice(-1)){case"x":return"arrow_cross";case"o":return"arrow_circle";case">":return"arrow_point";default:return""}}function ADt(e){switch(e.trim().charAt(0)){case"x":return"arrow_cross";case"o":return"arrow_circle";case"<":return"arrow_point";default:return"arrow_open"}}function RDt(e){return e.includes("==")?"thick":"normal"}function _Dt(e){return e.includes(".-")?"dotted":"solid"}var Dc,wj,Cj,jPe,XPe,vDt,ZPe,QL,kj,xDt,bDt,TDt,CDt,QPe,Sj,Kw,wDt,KPe,LDt,DDt,IDt,MDt,NDt,PDt,ODt,BDt,$Dt,FDt,zDt,GDt,VDt,JPe,eOe=F(()=>{"use strict";s4();ur();Xt();vt();Vr();Nn();Dc=new Map,wj=[],Cj=new Map,jPe="color",XPe="fill",vDt="bgFill",ZPe=",",QL=new Map,kj="",xDt=o(e=>xt.sanitizeText(e,Ae()),"sanitizeText"),bDt=o(function(e,t=""){let r=QL.get(e);r||(r={id:e,styles:[],textStyles:[]},QL.set(e,r)),t?.split(ZPe).forEach(n=>{let i=n.replace(/([^;]*);/,"$1").trim();if(RegExp(jPe).exec(n)){let s=i.replace(XPe,vDt).replace(jPe,XPe);r.textStyles.push(s)}r.styles.push(i)})},"addStyleClass"),TDt=o(function(e,t=""){let r=Dc.get(e);t!=null&&(r.styles=t.split(ZPe))},"addStyle2Node"),CDt=o(function(e,t){e.split(",").forEach(function(r){let n=Dc.get(r);if(n===void 0){let i=r.trim();n={id:i,type:"na",children:[]},Dc.set(i,n)}n.classes||(n.classes=[]),n.classes.push(t)})},"setCssClass"),QPe=o((e,t)=>{let r=e.flat(),n=[],a=r.find(s=>s?.type==="column-setting")?.columns??-1;for(let s of r){if(typeof a=="number"&&a>0&&s.type!=="column-setting"&&typeof s.widthInColumns=="number"&&s.widthInColumns>a&&Z.warn(`Block ${s.id} width ${s.widthInColumns} exceeds configured column width ${a}`),s.label&&(s.label=xDt(s.label)),s.type==="classDef"){bDt(s.id,s.css);continue}if(s.type==="applyClass"){CDt(s.id,s?.styleClass??"");continue}if(s.type==="applyStyles"){s?.stylesStr&&TDt(s.id,s?.stylesStr);continue}if(s.type==="column-setting")t.columns=s.columns??-1;else if(s.type==="edge"){let l=(Cj.get(s.id)??0)+1;Cj.set(s.id,l),s.id=l+"-"+s.id,wj.push(s)}else{s.label||(s.type==="composite"?s.label="":s.label=s.id);let l=Dc.get(s.id);if(l===void 0?Dc.set(s.id,s):(s.type!=="na"&&(l.type=s.type),s.label!==s.id&&(l.label=s.label)),s.children&&QPe(s.children,s),s.type==="space"){let u=s.width??1;for(let h=0;h<u;h++){let d=iP(s);d.id=d.id+"-"+h,Dc.set(d.id,d),n.push(d)}}else l===void 0&&n.push(s)}}t.children=n},"populateBlockDatabase"),Sj=[],Kw={id:"root",type:"composite",children:[],columns:-1},wDt=o(()=>{Z.debug("Clear called"),yr(),Kw={id:"root",type:"composite",children:[],columns:-1},Dc=new Map([["root",Kw]]),Sj=[],QL=new Map,wj=[],Cj=new Map,kj=""},"clear");o(kDt,"typeStr2Type");o(SDt,"edgeTypeStr2Type");o(EDt,"edgeStrToEdgeData");o(ADt,"edgeStrToEdgeStartData");o(RDt,"edgeStrToThickness");o(_Dt,"edgeStrToPattern");KPe=0,LDt=o(()=>(KPe++,"id-"+Math.random().toString(36).substr(2,12)+"-"+KPe),"generateId"),DDt=o(e=>{Kw.children=e,QPe(e,Kw),Sj=Kw.children},"setHierarchy"),IDt=o(e=>{let t=Dc.get(e);return t?t.columns?t.columns:t.children?t.children.length:-1:-1},"getColumns"),MDt=o(()=>[...Dc.values()],"getBlocksFlat"),NDt=o(()=>Sj||[],"getBlocks"),PDt=o(()=>wj,"getEdges"),ODt=o(e=>Dc.get(e),"getBlock"),BDt=o(e=>{Dc.set(e.id,e)},"setBlock"),$Dt=o(e=>{kj=e},"setDiagramId"),FDt=o(()=>kj,"getDiagramId"),zDt=o(()=>Z,"getLogger"),GDt=o(function(){return QL},"getClasses"),VDt={getConfig:o(()=>_t().block,"getConfig"),typeStr2Type:kDt,edgeTypeStr2Type:SDt,edgeStrToEdgeData:EDt,edgeStrToEdgeStartData:ADt,edgeStrToThickness:RDt,edgeStrToPattern:_Dt,getLogger:zDt,getBlocksFlat:MDt,getBlocks:NDt,getEdges:PDt,setHierarchy:DDt,getBlock:ODt,setBlock:BDt,getColumns:IDt,getClasses:GDt,clear:wDt,generateId:LDt,setDiagramId:$Dt,getDiagramId:FDt},JPe=VDt});var Ej,WDt,tOe,rOe=F(()=>{"use strict";zi();X1();Ej=o((e,t)=>{let r=$p,n=r(e,"r"),i=r(e,"g"),a=r(e,"b");return Oi(n,i,a,t)},"fade"),WDt=o(e=>`.label {
     font-family: ${e.fontFamily};
     color: ${e.nodeTextColor||e.textColor};
   }
@@ -3053,9 +3065,9 @@
   }
 
   .node .cluster {
-    // fill: ${Eq(e.mainBkg,.5)};
-    fill: ${Eq(e.clusterBkg,.5)};
-    stroke: ${Eq(e.clusterBorder,.2)};
+    // fill: ${Ej(e.mainBkg,.5)};
+    fill: ${Ej(e.clusterBkg,.5)};
+    stroke: ${Ej(e.clusterBorder,.2)};
     box-shadow: rgba(50, 50, 93, 0.25) 0px 13px 27px -5px, rgba(0, 0, 0, 0.3) 0px 8px 16px -8px;
     stroke-width: 1px;
   }
@@ -3090,20 +3102,40 @@
     font-size: 18px;
     fill: ${e.textColor};
   }
-  ${Vc()}
-`,"getStyles"),c8e=vSt});var xSt,bSt,TSt,CSt,kSt,wSt,SSt,ESt,ASt,_St,DSt,h8e,d8e=z(()=>{"use strict";St();xSt=o((e,t,r,i)=>{t.forEach(n=>{DSt[n](e,r,i)})},"insertMarkers"),bSt=o((e,t,r)=>{Z.trace("Making markers for ",r),e.append("defs").append("marker").attr("id",r+"_"+t+"-extensionStart").attr("class","marker extension "+t).attr("refX",18).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("path").attr("d","M 1,7 L18,13 V 1 Z"),e.append("defs").append("marker").attr("id",r+"_"+t+"-extensionEnd").attr("class","marker extension "+t).attr("refX",1).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 1,1 V 13 L18,7 Z")},"extension"),TSt=o((e,t,r)=>{e.append("defs").append("marker").attr("id",r+"_"+t+"-compositionStart").attr("class","marker composition "+t).attr("refX",18).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L1,7 L9,1 Z"),e.append("defs").append("marker").attr("id",r+"_"+t+"-compositionEnd").attr("class","marker composition "+t).attr("refX",1).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L1,7 L9,1 Z")},"composition"),CSt=o((e,t,r)=>{e.append("defs").append("marker").attr("id",r+"_"+t+"-aggregationStart").attr("class","marker aggregation "+t).attr("refX",18).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L1,7 L9,1 Z"),e.append("defs").append("marker").attr("id",r+"_"+t+"-aggregationEnd").attr("class","marker aggregation "+t).attr("refX",1).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L1,7 L9,1 Z")},"aggregation"),kSt=o((e,t,r)=>{e.append("defs").append("marker").attr("id",r+"_"+t+"-dependencyStart").attr("class","marker dependency "+t).attr("refX",6).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("path").attr("d","M 5,7 L9,13 L1,7 L9,1 Z"),e.append("defs").append("marker").attr("id",r+"_"+t+"-dependencyEnd").attr("class","marker dependency "+t).attr("refX",13).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L14,7 L9,1 Z")},"dependency"),wSt=o((e,t,r)=>{e.append("defs").append("marker").attr("id",r+"_"+t+"-lollipopStart").attr("class","marker lollipop "+t).attr("refX",13).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("circle").attr("stroke","black").attr("fill","transparent").attr("cx",7).attr("cy",7).attr("r",6),e.append("defs").append("marker").attr("id",r+"_"+t+"-lollipopEnd").attr("class","marker lollipop "+t).attr("refX",1).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("circle").attr("stroke","black").attr("fill","transparent").attr("cx",7).attr("cy",7).attr("r",6)},"lollipop"),SSt=o((e,t,r)=>{e.append("marker").attr("id",r+"_"+t+"-pointEnd").attr("class","marker "+t).attr("viewBox","0 0 10 10").attr("refX",6).attr("refY",5).attr("markerUnits","userSpaceOnUse").attr("markerWidth",12).attr("markerHeight",12).attr("orient","auto").append("path").attr("d","M 0 0 L 10 5 L 0 10 z").attr("class","arrowMarkerPath").style("stroke-width",1).style("stroke-dasharray","1,0"),e.append("marker").attr("id",r+"_"+t+"-pointStart").attr("class","marker "+t).attr("viewBox","0 0 10 10").attr("refX",4.5).attr("refY",5).attr("markerUnits","userSpaceOnUse").attr("markerWidth",12).attr("markerHeight",12).attr("orient","auto").append("path").attr("d","M 0 5 L 10 10 L 10 0 z").attr("class","arrowMarkerPath").style("stroke-width",1).style("stroke-dasharray","1,0")},"point"),ESt=o((e,t,r)=>{e.append("marker").attr("id",r+"_"+t+"-circleEnd").attr("class","marker "+t).attr("viewBox","0 0 10 10").attr("refX",11).attr("refY",5).attr("markerUnits","userSpaceOnUse").attr("markerWidth",11).attr("markerHeight",11).attr("orient","auto").append("circle").attr("cx","5").attr("cy","5").attr("r","5").attr("class","arrowMarkerPath").style("stroke-width",1).style("stroke-dasharray","1,0"),e.append("marker").attr("id",r+"_"+t+"-circleStart").attr("class","marker "+t).attr("viewBox","0 0 10 10").attr("refX",-1).attr("refY",5).attr("markerUnits","userSpaceOnUse").attr("markerWidth",11).attr("markerHeight",11).attr("orient","auto").append("circle").attr("cx","5").attr("cy","5").attr("r","5").attr("class","arrowMarkerPath").style("stroke-width",1).style("stroke-dasharray","1,0")},"circle"),ASt=o((e,t,r)=>{e.append("marker").attr("id",r+"_"+t+"-crossEnd").attr("class","marker cross "+t).attr("viewBox","0 0 11 11").attr("refX",12).attr("refY",5.2).attr("markerUnits","userSpaceOnUse").attr("markerWidth",11).attr("markerHeight",11).attr("orient","auto").append("path").attr("d","M 1,1 l 9,9 M 10,1 l -9,9").attr("class","arrowMarkerPath").style("stroke-width",2).style("stroke-dasharray","1,0"),e.append("marker").attr("id",r+"_"+t+"-crossStart").attr("class","marker cross "+t).attr("viewBox","0 0 11 11").attr("refX",-1).attr("refY",5.2).attr("markerUnits","userSpaceOnUse").attr("markerWidth",11).attr("markerHeight",11).attr("orient","auto").append("path").attr("d","M 1,1 l 9,9 M 10,1 l -9,9").attr("class","arrowMarkerPath").style("stroke-width",2).style("stroke-dasharray","1,0")},"cross"),_St=o((e,t,r)=>{e.append("defs").append("marker").attr("id",r+"_"+t+"-barbEnd").attr("refX",19).attr("refY",7).attr("markerWidth",20).attr("markerHeight",14).attr("markerUnits","strokeWidth").attr("orient","auto").append("path").attr("d","M 19,7 L9,13 L14,7 L9,1 Z")},"barb"),DSt={extension:bSt,composition:TSt,aggregation:CSt,dependency:kSt,lollipop:wSt,point:SSt,circle:ESt,cross:ASt,barb:_St},h8e=xSt});function f8e(e,t){if(e===0||!Number.isInteger(e))throw new Error("Columns must be an integer !== 0.");if(t<0||!Number.isInteger(t))throw new Error("Position must be a non-negative integer."+t);if(e<0)return{px:t,py:0};if(e===1)return{px:0,py:t};let r=t%e,i=Math.floor(t/e);return{px:r,py:i}}function Aq(e,t,r=0,i=0){Z.debug("setBlockSizes abc95 (start)",e.id,e?.size?.x,"block width =",e?.size,"siblingWidth",r),e?.size?.width||(e.size={width:r,height:i,x:0,y:0});let n=0,a=0;if(e.children?.length>0){for(let m of e.children)Aq(m,t);let s=RSt(e);n=s.width,a=s.height,Z.debug("setBlockSizes abc95 maxWidth of",e.id,":s children is ",n,a);for(let m of e.children)m.size&&(Z.debug(`abc95 Setting size of children of ${e.id} id=${m.id} ${n} ${a} ${JSON.stringify(m.size)}`),m.size.width=n*(m.widthInColumns??1)+Tn*((m.widthInColumns??1)-1),m.size.height=a,m.size.x=0,m.size.y=0,Z.debug(`abc95 updating size of ${e.id} children child:${m.id} maxWidth:${n} maxHeight:${a}`));for(let m of e.children)Aq(m,t,n,a);let l=e.columns??-1,u=0;for(let m of e.children)u+=m.widthInColumns??1;let h=e.children.length;l>0&&l<u&&(h=l);let d=Math.ceil(u/h),f=h*(n+Tn)+Tn,p=d*(a+Tn)+Tn;if(f<r){Z.debug(`Detected to small sibling: abc95 ${e.id} siblingWidth ${r} siblingHeight ${i} width ${f}`),f=r,p=i;let m=(r-h*Tn-Tn)/h,g=(i-d*Tn-Tn)/d;Z.debug("Size indata abc88",e.id,"childWidth",m,"maxWidth",n),Z.debug("Size indata abc88",e.id,"childHeight",g,"maxHeight",a),Z.debug("Size indata abc88 xSize",h,"padding",Tn);for(let y of e.children)y.size&&(y.size.width=m,y.size.height=g,y.size.x=0,y.size.y=0)}if(Z.debug(`abc95 (finale calc) ${e.id} xSize ${h} ySize ${d} columns ${l}${e.children.length} width=${Math.max(f,e.size?.width||0)}`),f<(e?.size?.width||0)){f=e?.size?.width||0;let m=l>0?Math.min(e.children.length,l):e.children.length;if(m>0){let g=(f-m*Tn-Tn)/m;Z.debug("abc95 (growing to fit) width",e.id,f,e.size?.width,g);for(let y of e.children)y.size&&(y.size.width=g)}}e.size={width:f,height:p,x:0,y:0}}Z.debug("setBlockSizes abc94 (done)",e.id,e?.size?.x,e?.size?.width,e?.size?.y,e?.size?.height)}function p8e(e,t){Z.debug(`abc85 layout blocks (=>layoutBlocks) ${e.id} x: ${e?.size?.x} y: ${e?.size?.y} width: ${e?.size?.width}`);let r=e.columns??-1;if(Z.debug("layoutBlocks columns abc95",e.id,"=>",r,e),e.children&&e.children.length>0){let i=e?.children[0]?.size?.width??0,n=e.children.length*i+(e.children.length-1)*Tn;Z.debug("widthOfChildren 88",n,"posX");let a=new Map;{let d=0;for(let f of e.children){if(!f.size)continue;let{py:p}=f8e(r,d),m=a.get(p)??0;f.size.height>m&&a.set(p,f.size.height);let g=f?.widthInColumns??1;r>0&&(g=Math.min(g,r-d%r)),d+=g}}let s=new Map;{let d=0,f=[...a.keys()].sort((p,m)=>p-m);for(let p of f)s.set(p,d),d+=(a.get(p)??0)+Tn}let l=0;Z.debug("abc91 block?.size?.x",e.id,e?.size?.x);let u=e?.size?.x?e?.size?.x+(-e?.size?.width/2||0):-Tn,h=0;for(let d of e.children){let f=e;if(!d.size)continue;let{width:p,height:m}=d.size,{px:g,py:y}=f8e(r,l);if(y!=h&&(h=y,u=e?.size?.x?e?.size?.x+(-e?.size?.width/2||0):-Tn,Z.debug("New row in layout for block",e.id," and child ",d.id,h)),Z.debug(`abc89 layout blocks (child) id: ${d.id} Pos: ${l} (px, py) ${g},${y} (${f?.size?.x},${f?.size?.y}) parent: ${f.id} width: ${p}${Tn}`),f.size){let x=p/2;d.size.x=u+Tn+x,Z.debug(`abc91 layout blocks (calc) px, pyid:${d.id} startingPos=X${u} new startingPosX${d.size.x} ${x} padding=${Tn} width=${p} halfWidth=${x} => x:${d.size.x} y:${d.size.y} ${d.widthInColumns} (width * (child?.w || 1)) / 2 ${p*(d?.widthInColumns??1)/2}`),u=d.size.x+x;let b=s.get(y)??0,T=a.get(y)??m;d.size.y=f.size.y-f.size.height/2+b+T/2+Tn,Z.debug(`abc88 layout blocks (calc) px, pyid:${d.id}startingPosX${u}${Tn}${x}=>x:${d.size.x}y:${d.size.y}${d.widthInColumns}(width * (child?.w || 1)) / 2${p*(d?.widthInColumns??1)/2}`)}d.children&&p8e(d,t);let v=d?.widthInColumns??1;r>0&&(v=Math.min(v,r-l%r)),l+=v,Z.debug("abc88 columnsPos",d,l)}}Z.debug(`layout blocks (<==layoutBlocks) ${e.id} x: ${e?.size?.x} y: ${e?.size?.y} width: ${e?.size?.width}`)}function m8e(e,{minX:t,minY:r,maxX:i,maxY:n}={minX:0,minY:0,maxX:0,maxY:0}){if(e.size&&e.id!=="root"){let{x:a,y:s,width:l,height:u}=e.size;a-l/2<t&&(t=a-l/2),s-u/2<r&&(r=s-u/2),a+l/2>i&&(i=a+l/2),s+u/2>n&&(n=s+u/2)}if(e.children)for(let a of e.children)({minX:t,minY:r,maxX:i,maxY:n}=m8e(a,{minX:t,minY:r,maxX:i,maxY:n}));return{minX:t,minY:r,maxX:i,maxY:n}}function g8e(e){let t=e.getBlock("root");if(!t)return;Aq(t,e,0,0),p8e(t,e),Z.debug("getBlocks",JSON.stringify(t,null,2));let{minX:r,minY:i,maxX:n,maxY:a}=m8e(t),s=a-i,l=n-r;return{x:r,y:i,width:l,height:s}}var Tn,RSt,y8e=z(()=>{"use strict";St();Ut();Tn=ge()?.block?.padding??8;o(f8e,"calculateBlockPosition");RSt=o(e=>{let t=0,r=0;for(let i of e.children){let{width:n,height:a,x:s,y:l}=i.size??{width:0,height:0,x:0,y:0};if(Z.debug("getMaxChildSize abc95 child:",i.id,"width:",n,"height:",a,"x:",s,"y:",l,i.type),i.type==="space")continue;let u=n/(i.widthInColumns??1);u>t&&(t=u),a>r&&(r=a)}return{width:t,height:r}},"getMaxChildSize");o(Aq,"setBlockSizes");o(p8e,"layoutBlocks");o(m8e,"findBounds");o(g8e,"layout")});var LSt,js,T_=z(()=>{"use strict";br();Ut();_s();LSt=o(async(e,t,r,i=!1,n=!1)=>{let a=t||"";typeof a=="object"&&(a=a[0]);let s=ge(),l=Mr(s);return await wi(e,a,{style:r,isTitle:i,useHtmlLabels:l,markdown:!1,isNode:n,width:Number.POSITIVE_INFINITY},s)},"createLabel"),js=LSt});var x8e,MSt,v8e,b8e=z(()=>{"use strict";St();x8e=o((e,t,r,i,n)=>{t.arrowTypeStart&&v8e(e,"start",t.arrowTypeStart,r,i,n),t.arrowTypeEnd&&v8e(e,"end",t.arrowTypeEnd,r,i,n)},"addEdgeMarkers"),MSt={arrow_cross:"cross",arrow_point:"point",arrow_barb:"barb",arrow_circle:"circle",aggregation:"aggregation",extension:"extension",composition:"composition",dependency:"dependency",lollipop:"lollipop"},v8e=o((e,t,r,i,n,a)=>{let s=MSt[r];if(!s){Z.warn(`Unknown arrow type: ${r}`);return}let l=t==="start"?"Start":"End";e.attr(`marker-${t}`,`url(${i}#${n}_${a}-${s}${l})`)},"addEdgeMarker")});function C_(e,t){Mr(ge())&&e&&(e.style.width=t.length*9+"px",e.style.height="12px")}var _q,$a,C8e,k8e,NSt,ISt,T8e,w8e,S8e=z(()=>{"use strict";St();T_();_s();ON();Rr();Ut();br();Xt();Ir();BN();rb();b8e();_q={},$a={},C8e=o(async(e,t)=>{let r=ge(),i=Mr(r),n=e.insert("g").attr("class","edgeLabel"),a=n.insert("g").attr("class","label"),s=t.labelType==="markdown",l=await wi(e,t.label,{style:t.labelStyle,useHtmlLabels:i,addSvgBackground:s,isNode:!1,markdown:s,width:s?void 0:Number.POSITIVE_INFINITY},r);a.node().appendChild(l);let u=l.getBBox(),h=u;if(i){let f=l.children[0],p=Je(l);u=f.getBoundingClientRect(),h=u,p.attr("width",u.width),p.attr("height",u.height)}else{let f=Je(l).select("text").node();f&&typeof f.getBBox=="function"&&(h=f.getBBox())}a.attr("transform",$o(h,i)),_q[t.id]=n,t.width=u.width,t.height=u.height;let d;if(t.startLabelLeft){let f=e.insert("g").attr("class","edgeTerminals"),p=f.insert("g").attr("class","inner"),m=await js(p,t.startLabelLeft,t.labelStyle);d=m;let g=m.getBBox();if(i){let y=m.children[0],v=Je(m);g=y.getBoundingClientRect(),v.attr("width",g.width),v.attr("height",g.height)}p.attr("transform",$o(g,i)),$a[t.id]||($a[t.id]={}),$a[t.id].startLeft=f,C_(d,t.startLabelLeft)}if(t.startLabelRight){let f=e.insert("g").attr("class","edgeTerminals"),p=f.insert("g").attr("class","inner"),m=await js(p,t.startLabelRight,t.labelStyle);d=m;let g=m.getBBox();if(i){let y=m.children[0],v=Je(m);g=y.getBoundingClientRect(),v.attr("width",g.width),v.attr("height",g.height)}p.attr("transform",$o(g,i)),$a[t.id]||($a[t.id]={}),$a[t.id].startRight=f,C_(d,t.startLabelRight)}if(t.endLabelLeft){let f=e.insert("g").attr("class","edgeTerminals"),p=f.insert("g").attr("class","inner"),m=await js(f,t.endLabelLeft,t.labelStyle);d=m;let g=m.getBBox();if(i){let y=m.children[0],v=Je(m);g=y.getBoundingClientRect(),v.attr("width",g.width),v.attr("height",g.height)}p.attr("transform",$o(g,i)),$a[t.id]||($a[t.id]={}),$a[t.id].endLeft=f,C_(d,t.endLabelLeft)}if(t.endLabelRight){let f=e.insert("g").attr("class","edgeTerminals"),p=f.insert("g").attr("class","inner"),m=await js(f,t.endLabelRight,t.labelStyle);d=m;let g=m.getBBox();if(i){let y=m.children[0],v=Je(m);g=y.getBoundingClientRect(),v.attr("width",g.width),v.attr("height",g.height)}p.attr("transform",$o(g,i)),$a[t.id]||($a[t.id]={}),$a[t.id].endRight=f,C_(d,t.endLabelRight)}return l},"insertEdgeLabel");o(C_,"setTerminalWidth");k8e=o((e,t)=>{Z.debug("Moving label abc88 ",e.id,e.label,_q[e.id],t);let r=t.updatedPath?t.updatedPath:t.originalPath,i=ge(),{subGraphTitleTotalMargin:n}=zu(i);if(e.label){let a=_q[e.id],s=e.x,l=e.y;if(r){let u=Zt.calcLabelPosition(r);Z.debug("Moving label "+e.label+" from (",s,",",l,") to (",u.x,",",u.y,") abc88"),t.updatedPath&&(s=u.x,l=u.y)}a.attr("transform",`translate(${s}, ${l+n/2})`)}if(e.startLabelLeft){let a=$a[e.id].startLeft,s=e.x,l=e.y;if(r){let u=Zt.calcTerminalLabelPosition(e.arrowTypeStart?10:0,"start_left",r);s=u.x,l=u.y}a.attr("transform",`translate(${s}, ${l})`)}if(e.startLabelRight){let a=$a[e.id].startRight,s=e.x,l=e.y;if(r){let u=Zt.calcTerminalLabelPosition(e.arrowTypeStart?10:0,"start_right",r);s=u.x,l=u.y}a.attr("transform",`translate(${s}, ${l})`)}if(e.endLabelLeft){let a=$a[e.id].endLeft,s=e.x,l=e.y;if(r){let u=Zt.calcTerminalLabelPosition(e.arrowTypeEnd?10:0,"end_left",r);s=u.x,l=u.y}a.attr("transform",`translate(${s}, ${l})`)}if(e.endLabelRight){let a=$a[e.id].endRight,s=e.x,l=e.y;if(r){let u=Zt.calcTerminalLabelPosition(e.arrowTypeEnd?10:0,"end_right",r);s=u.x,l=u.y}a.attr("transform",`translate(${s}, ${l})`)}},"positionEdgeLabel"),NSt=o((e,t)=>{let r=e.x,i=e.y,n=Math.abs(t.x-r),a=Math.abs(t.y-i),s=e.width/2,l=e.height/2;return n>=s||a>=l},"outsideNode"),ISt=o((e,t,r)=>{Z.debug(`intersection calc abc89:
+  ${Eu()}
+`,"getStyles"),tOe=WDt});var qDt,HDt,UDt,YDt,jDt,XDt,KDt,ZDt,QDt,JDt,e7t,nOe,iOe=F(()=>{"use strict";vt();qDt=o((e,t,r,n)=>{t.forEach(i=>{e7t[i](e,r,n)})},"insertMarkers"),HDt=o((e,t,r)=>{Z.trace("Making markers for ",r),e.append("defs").append("marker").attr("id",r+"_"+t+"-extensionStart").attr("class","marker extension "+t).attr("refX",18).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("path").attr("d","M 1,7 L18,13 V 1 Z"),e.append("defs").append("marker").attr("id",r+"_"+t+"-extensionEnd").attr("class","marker extension "+t).attr("refX",1).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 1,1 V 13 L18,7 Z")},"extension"),UDt=o((e,t,r)=>{e.append("defs").append("marker").attr("id",r+"_"+t+"-compositionStart").attr("class","marker composition "+t).attr("refX",18).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L1,7 L9,1 Z"),e.append("defs").append("marker").attr("id",r+"_"+t+"-compositionEnd").attr("class","marker composition "+t).attr("refX",1).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L1,7 L9,1 Z")},"composition"),YDt=o((e,t,r)=>{e.append("defs").append("marker").attr("id",r+"_"+t+"-aggregationStart").attr("class","marker aggregation "+t).attr("refX",18).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L1,7 L9,1 Z"),e.append("defs").append("marker").attr("id",r+"_"+t+"-aggregationEnd").attr("class","marker aggregation "+t).attr("refX",1).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L1,7 L9,1 Z")},"aggregation"),jDt=o((e,t,r)=>{e.append("defs").append("marker").attr("id",r+"_"+t+"-dependencyStart").attr("class","marker dependency "+t).attr("refX",6).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("path").attr("d","M 5,7 L9,13 L1,7 L9,1 Z"),e.append("defs").append("marker").attr("id",r+"_"+t+"-dependencyEnd").attr("class","marker dependency "+t).attr("refX",13).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L14,7 L9,1 Z")},"dependency"),XDt=o((e,t,r)=>{e.append("defs").append("marker").attr("id",r+"_"+t+"-lollipopStart").attr("class","marker lollipop "+t).attr("refX",13).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("circle").attr("stroke","black").attr("fill","transparent").attr("cx",7).attr("cy",7).attr("r",6),e.append("defs").append("marker").attr("id",r+"_"+t+"-lollipopEnd").attr("class","marker lollipop "+t).attr("refX",1).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("circle").attr("stroke","black").attr("fill","transparent").attr("cx",7).attr("cy",7).attr("r",6)},"lollipop"),KDt=o((e,t,r)=>{e.append("marker").attr("id",r+"_"+t+"-pointEnd").attr("class","marker "+t).attr("viewBox","0 0 10 10").attr("refX",6).attr("refY",5).attr("markerUnits","userSpaceOnUse").attr("markerWidth",12).attr("markerHeight",12).attr("orient","auto").append("path").attr("d","M 0 0 L 10 5 L 0 10 z").attr("class","arrowMarkerPath").style("stroke-width",1).style("stroke-dasharray","1,0"),e.append("marker").attr("id",r+"_"+t+"-pointStart").attr("class","marker "+t).attr("viewBox","0 0 10 10").attr("refX",4.5).attr("refY",5).attr("markerUnits","userSpaceOnUse").attr("markerWidth",12).attr("markerHeight",12).attr("orient","auto").append("path").attr("d","M 0 5 L 10 10 L 10 0 z").attr("class","arrowMarkerPath").style("stroke-width",1).style("stroke-dasharray","1,0")},"point"),ZDt=o((e,t,r)=>{e.append("marker").attr("id",r+"_"+t+"-circleEnd").attr("class","marker "+t).attr("viewBox","0 0 10 10").attr("refX",11).attr("refY",5).attr("markerUnits","userSpaceOnUse").attr("markerWidth",11).attr("markerHeight",11).attr("orient","auto").append("circle").attr("cx","5").attr("cy","5").attr("r","5").attr("class","arrowMarkerPath").style("stroke-width",1).style("stroke-dasharray","1,0"),e.append("marker").attr("id",r+"_"+t+"-circleStart").attr("class","marker "+t).attr("viewBox","0 0 10 10").attr("refX",-1).attr("refY",5).attr("markerUnits","userSpaceOnUse").attr("markerWidth",11).attr("markerHeight",11).attr("orient","auto").append("circle").attr("cx","5").attr("cy","5").attr("r","5").attr("class","arrowMarkerPath").style("stroke-width",1).style("stroke-dasharray","1,0")},"circle"),QDt=o((e,t,r)=>{e.append("marker").attr("id",r+"_"+t+"-crossEnd").attr("class","marker cross "+t).attr("viewBox","0 0 11 11").attr("refX",12).attr("refY",5.2).attr("markerUnits","userSpaceOnUse").attr("markerWidth",11).attr("markerHeight",11).attr("orient","auto").append("path").attr("d","M 1,1 l 9,9 M 10,1 l -9,9").attr("class","arrowMarkerPath").style("stroke-width",2).style("stroke-dasharray","1,0"),e.append("marker").attr("id",r+"_"+t+"-crossStart").attr("class","marker cross "+t).attr("viewBox","0 0 11 11").attr("refX",-1).attr("refY",5.2).attr("markerUnits","userSpaceOnUse").attr("markerWidth",11).attr("markerHeight",11).attr("orient","auto").append("path").attr("d","M 1,1 l 9,9 M 10,1 l -9,9").attr("class","arrowMarkerPath").style("stroke-width",2).style("stroke-dasharray","1,0")},"cross"),JDt=o((e,t,r)=>{e.append("defs").append("marker").attr("id",r+"_"+t+"-barbEnd").attr("refX",19).attr("refY",7).attr("markerWidth",20).attr("markerHeight",14).attr("markerUnits","strokeWidth").attr("orient","auto").append("path").attr("d","M 19,7 L9,13 L14,7 L9,1 Z")},"barb"),e7t={extension:HDt,composition:UDt,aggregation:YDt,dependency:jDt,lollipop:XDt,point:KDt,circle:ZDt,cross:QDt,barb:JDt},nOe=qDt});function aOe(e,t){if(e===0||!Number.isInteger(e))throw new Error("Columns must be an integer !== 0.");if(t<0||!Number.isInteger(t))throw new Error("Position must be a non-negative integer."+t);if(e<0)return{px:t,py:0};if(e===1)return{px:0,py:t};let r=t%e,n=Math.floor(t/e);return{px:r,py:n}}function Aj(e,t,r=0,n=0,i=8){Z.debug("setBlockSizes abc95 (start)",e.id,e?.size?.x,"block width =",e?.size,"siblingWidth",r),e?.size?.width||(e.size={width:r,height:n,x:0,y:0});let a=0,s=0;if(e.children?.length>0){for(let g of e.children)Aj(g,t,0,0,i);let l=t7t(e);a=l.width,s=l.height,Z.debug("setBlockSizes abc95 maxWidth of",e.id,":s children is ",a,s);for(let g of e.children)g.size&&(Z.debug(`abc95 Setting size of children of ${e.id} id=${g.id} ${a} ${s} ${JSON.stringify(g.size)}`),g.size.width=a*(g.widthInColumns??1)+i*((g.widthInColumns??1)-1),g.size.height=s,g.size.x=0,g.size.y=0,Z.debug(`abc95 updating size of ${e.id} children child:${g.id} maxWidth:${a} maxHeight:${s}`));for(let g of e.children)Aj(g,t,a,s,i);let u=e.columns??-1,h=0;for(let g of e.children)h+=g.widthInColumns??1;let d=e.children.length;u>0&&u<h&&(d=u);let f=Math.ceil(h/d),p=d*(a+i)+i,m=f*(s+i)+i;if(p<r){Z.debug(`Detected to small sibling: abc95 ${e.id} siblingWidth ${r} siblingHeight ${n} width ${p}`),p=r,m=n;let g=(r-d*i-i)/d,y=(n-f*i-i)/f;Z.debug("Size indata abc88",e.id,"childWidth",g,"maxWidth",a),Z.debug("Size indata abc88",e.id,"childHeight",y,"maxHeight",s),Z.debug("Size indata abc88 xSize",d,"padding",i);for(let v of e.children)v.size&&(v.size.width=g,v.size.height=y,v.size.x=0,v.size.y=0)}if(Z.debug(`abc95 (finale calc) ${e.id} xSize ${d} ySize ${f} columns ${u}${e.children.length} width=${Math.max(p,e.size?.width||0)}`),p<(e?.size?.width||0)){p=e?.size?.width||0;let g=u>0?Math.min(e.children.length,u):e.children.length;if(g>0){let y=(p-g*i-i)/g;Z.debug("abc95 (growing to fit) width",e.id,p,e.size?.width,y);for(let v of e.children)v.size&&(v.size.width=y)}}e.size={width:p,height:m,x:0,y:0}}Z.debug("setBlockSizes abc94 (done)",e.id,e?.size?.x,e?.size?.width,e?.size?.y,e?.size?.height)}function sOe(e,t,r=8){Z.debug(`abc85 layout blocks (=>layoutBlocks) ${e.id} x: ${e?.size?.x} y: ${e?.size?.y} width: ${e?.size?.width}`);let n=e.columns??-1;if(Z.debug("layoutBlocks columns abc95",e.id,"=>",n,e),e.children&&e.children.length>0){let i=e?.children[0]?.size?.width??0,a=e.children.length*i+(e.children.length-1)*r;Z.debug("widthOfChildren 88",a,"posX");let s=new Map;{let f=0;for(let p of e.children){if(!p.size)continue;let{py:m}=aOe(n,f),g=s.get(m)??0;p.size.height>g&&s.set(m,p.size.height);let y=p?.widthInColumns??1;n>0&&(y=Math.min(y,n-f%n)),f+=y}}let l=new Map;{let f=0,p=[...s.keys()].sort((m,g)=>m-g);for(let m of p)l.set(m,f),f+=(s.get(m)??0)+r}let u=0;Z.debug("abc91 block?.size?.x",e.id,e?.size?.x);let h=e?.size?.x?e?.size?.x+(-e?.size?.width/2||0):-r,d=0;for(let f of e.children){let p=e;if(!f.size)continue;let{width:m,height:g}=f.size,{px:y,py:v}=aOe(n,u);if(v!=d&&(d=v,h=e?.size?.x?e?.size?.x+(-e?.size?.width/2||0):-r,Z.debug("New row in layout for block",e.id," and child ",f.id,d)),Z.debug(`abc89 layout blocks (child) id: ${f.id} Pos: ${u} (px, py) ${y},${v} (${p?.size?.x},${p?.size?.y}) parent: ${p.id} width: ${m}${r}`),p.size){let b=m/2;f.size.x=h+r+b,Z.debug(`abc91 layout blocks (calc) px, pyid:${f.id} startingPos=X${h} new startingPosX${f.size.x} ${b} padding=${r} width=${m} halfWidth=${b} => x:${f.size.x} y:${f.size.y} ${f.widthInColumns} (width * (child?.w || 1)) / 2 ${m*(f?.widthInColumns??1)/2}`),h=f.size.x+b;let T=l.get(v)??0,k=s.get(v)??g;f.size.y=p.size.y-p.size.height/2+T+k/2+r,Z.debug(`abc88 layout blocks (calc) px, pyid:${f.id}startingPosX${h}${r}${b}=>x:${f.size.x}y:${f.size.y}${f.widthInColumns}(width * (child?.w || 1)) / 2${m*(f?.widthInColumns??1)/2}`)}f.children&&sOe(f,t,r);let x=f?.widthInColumns??1;n>0&&(x=Math.min(x,n-u%n)),u+=x,Z.debug("abc88 columnsPos",f,u)}}Z.debug(`layout blocks (<==layoutBlocks) ${e.id} x: ${e?.size?.x} y: ${e?.size?.y} width: ${e?.size?.width}`)}function oOe(e,{minX:t,minY:r,maxX:n,maxY:i}={minX:0,minY:0,maxX:0,maxY:0}){if(e.size&&e.id!=="root"){let{x:a,y:s,width:l,height:u}=e.size;a-l/2<t&&(t=a-l/2),s-u/2<r&&(r=s-u/2),a+l/2>n&&(n=a+l/2),s+u/2>i&&(i=s+u/2)}if(e.children)for(let a of e.children)({minX:t,minY:r,maxX:n,maxY:i}=oOe(a,{minX:t,minY:r,maxX:n,maxY:i}));return{minX:t,minY:r,maxX:n,maxY:i}}function lOe(e){let t=e.getBlock("root");if(!t)return;let r=Ae()?.block?.padding??8;Aj(t,e,0,0,r),sOe(t,e,r),Z.debug("getBlocks",JSON.stringify(t,null,2));let{minX:n,minY:i,maxX:a,maxY:s}=oOe(t),l=s-i,u=a-n;return{x:n,y:i,width:u,height:l}}var t7t,cOe=F(()=>{"use strict";vt();Xt();o(aOe,"calculateBlockPosition");t7t=o(e=>{let t=0,r=0;for(let n of e.children){let{width:i,height:a,x:s,y:l}=n.size??{width:0,height:0,x:0,y:0};if(Z.debug("getMaxChildSize abc95 child:",n.id,"width:",i,"height:",a,"x:",s,"y:",l,n.type),n.type==="space")continue;let u=i/(n.widthInColumns??1);u>t&&(t=u),a>r&&(r=a)}return{width:t,height:r}},"getMaxChildSize");o(Aj,"setBlockSizes");o(sOe,"layoutBlocks");o(oOe,"findBounds");o(lOe,"layout")});var r7t,Ao,JL=F(()=>{"use strict";ur();Xt();Ls();r7t=o(async(e,t,r,n=!1,i=!1)=>{let a=t||"";typeof a=="object"&&(a=a[0]);let s=Ae(),l=Gr(s);return await Pn(e,a,{style:r,isTitle:n,useHtmlLabels:l,markdown:!1,isNode:i,width:Number.POSITIVE_INFINITY},s)},"createLabel"),Ao=r7t});var hOe,n7t,uOe,dOe=F(()=>{"use strict";vt();hOe=o((e,t,r,n,i)=>{t.arrowTypeStart&&uOe(e,"start",t.arrowTypeStart,r,n,i),t.arrowTypeEnd&&uOe(e,"end",t.arrowTypeEnd,r,n,i)},"addEdgeMarkers"),n7t={arrow_cross:"cross",arrow_point:"point",arrow_barb:"barb",arrow_circle:"circle",aggregation:"aggregation",extension:"extension",composition:"composition",dependency:"dependency",lollipop:"lollipop"},uOe=o((e,t,r,n,i,a)=>{let s=n7t[r];if(!s){Z.warn(`Unknown arrow type: ${r}`);return}let l=t==="start"?"Start":"End";e.attr(`marker-${t}`,`url(${n}#${i}_${a}-${s}${l})`)},"addEdgeMarker")});function eD(e,t){Gr(Ae())&&e&&(e.style.width=t.length*9+"px",e.style.height="12px")}var Rj,ps,pOe,mOe,i7t,a7t,fOe,gOe,yOe=F(()=>{"use strict";vt();JL();Ls();gO();$r();Xt();ur();Qt();Vr();Y4();Vy();dOe();Rj={},ps={},pOe=o(async(e,t)=>{let r=Ae(),n=Gr(r),i=e.insert("g").attr("class","edgeLabel"),a=i.insert("g").attr("class","label"),s=t.labelType==="markdown",l=await Pn(e,t.label,{style:t.labelStyle,useHtmlLabels:n,addSvgBackground:s,isNode:!1,markdown:s,width:s?void 0:Number.POSITIVE_INFINITY},r);a.node().appendChild(l);let u=l.getBBox(),h=u;if(n){let f=l.children[0],p=et(l);u=f.getBoundingClientRect(),h=u,p.attr("width",u.width),p.attr("height",u.height)}else{let f=et(l).select("text").node();f&&typeof f.getBBox=="function"&&(h=f.getBBox())}a.attr("transform",ml(h,n)),Rj[t.id]=i,t.width=u.width,t.height=u.height;let d;if(t.startLabelLeft){let f=e.insert("g").attr("class","edgeTerminals"),p=f.insert("g").attr("class","inner"),m=await Ao(p,t.startLabelLeft,t.labelStyle);d=m;let g=m.getBBox();if(n){let y=m.children[0],v=et(m);g=y.getBoundingClientRect(),v.attr("width",g.width),v.attr("height",g.height)}p.attr("transform",ml(g,n)),ps[t.id]||(ps[t.id]={}),ps[t.id].startLeft=f,eD(d,t.startLabelLeft)}if(t.startLabelRight){let f=e.insert("g").attr("class","edgeTerminals"),p=f.insert("g").attr("class","inner"),m=await Ao(p,t.startLabelRight,t.labelStyle);d=m;let g=m.getBBox();if(n){let y=m.children[0],v=et(m);g=y.getBoundingClientRect(),v.attr("width",g.width),v.attr("height",g.height)}p.attr("transform",ml(g,n)),ps[t.id]||(ps[t.id]={}),ps[t.id].startRight=f,eD(d,t.startLabelRight)}if(t.endLabelLeft){let f=e.insert("g").attr("class","edgeTerminals"),p=f.insert("g").attr("class","inner"),m=await Ao(f,t.endLabelLeft,t.labelStyle);d=m;let g=m.getBBox();if(n){let y=m.children[0],v=et(m);g=y.getBoundingClientRect(),v.attr("width",g.width),v.attr("height",g.height)}p.attr("transform",ml(g,n)),ps[t.id]||(ps[t.id]={}),ps[t.id].endLeft=f,eD(d,t.endLabelLeft)}if(t.endLabelRight){let f=e.insert("g").attr("class","edgeTerminals"),p=f.insert("g").attr("class","inner"),m=await Ao(f,t.endLabelRight,t.labelStyle);d=m;let g=m.getBBox();if(n){let y=m.children[0],v=et(m);g=y.getBoundingClientRect(),v.attr("width",g.width),v.attr("height",g.height)}p.attr("transform",ml(g,n)),ps[t.id]||(ps[t.id]={}),ps[t.id].endRight=f,eD(d,t.endLabelRight)}return l},"insertEdgeLabel");o(eD,"setTerminalWidth");mOe=o((e,t)=>{Z.debug("Moving label abc88 ",e.id,e.label,Rj[e.id],t);let r=t.updatedPath?t.updatedPath:t.originalPath,n=Ae(),{subGraphTitleTotalMargin:i}=oc(n);if(e.label){let a=Rj[e.id],s=e.x,l=e.y;if(r){let u=Zt.calcLabelPosition(r);Z.debug("Moving label "+e.label+" from (",s,",",l,") to (",u.x,",",u.y,") abc88"),t.updatedPath&&(s=u.x,l=u.y)}a.attr("transform",`translate(${s}, ${l+i/2})`)}if(e.startLabelLeft){let a=ps[e.id].startLeft,s=e.x,l=e.y;if(r){let u=Zt.calcTerminalLabelPosition(e.arrowTypeStart?10:0,"start_left",r);s=u.x,l=u.y}a.attr("transform",`translate(${s}, ${l})`)}if(e.startLabelRight){let a=ps[e.id].startRight,s=e.x,l=e.y;if(r){let u=Zt.calcTerminalLabelPosition(e.arrowTypeStart?10:0,"start_right",r);s=u.x,l=u.y}a.attr("transform",`translate(${s}, ${l})`)}if(e.endLabelLeft){let a=ps[e.id].endLeft,s=e.x,l=e.y;if(r){let u=Zt.calcTerminalLabelPosition(e.arrowTypeEnd?10:0,"end_left",r);s=u.x,l=u.y}a.attr("transform",`translate(${s}, ${l})`)}if(e.endLabelRight){let a=ps[e.id].endRight,s=e.x,l=e.y;if(r){let u=Zt.calcTerminalLabelPosition(e.arrowTypeEnd?10:0,"end_right",r);s=u.x,l=u.y}a.attr("transform",`translate(${s}, ${l})`)}},"positionEdgeLabel"),i7t=o((e,t)=>{let r=e.x,n=e.y,i=Math.abs(t.x-r),a=Math.abs(t.y-n),s=e.width/2,l=e.height/2;return i>=s||a>=l},"outsideNode"),a7t=o((e,t,r)=>{Z.debug(`intersection calc abc89:
   outsidePoint: ${JSON.stringify(t)}
   insidePoint : ${JSON.stringify(r)}
-  node        : x:${e.x} y:${e.y} w:${e.width} h:${e.height}`);let i=e.x,n=e.y,a=Math.abs(i-r.x),s=e.width/2,l=r.x<t.x?s-a:s+a,u=e.height/2,h=Math.abs(t.y-r.y),d=Math.abs(t.x-r.x);if(Math.abs(n-t.y)*s>Math.abs(i-t.x)*u){let f=r.y<t.y?t.y-u-n:n-u-t.y;l=d*f/h;let p={x:r.x<t.x?r.x+l:r.x-d+l,y:r.y<t.y?r.y+h-f:r.y-h+f};return l===0&&(p.x=t.x,p.y=t.y),d===0&&(p.x=t.x),h===0&&(p.y=t.y),Z.debug(`abc89 topp/bott calc, Q ${h}, q ${f}, R ${d}, r ${l}`,p),p}else{r.x<t.x?l=t.x-s-i:l=i-s-t.x;let f=h*l/d,p=r.x<t.x?r.x+d-l:r.x-d+l,m=r.y<t.y?r.y+f:r.y-f;return Z.debug(`sides calc abc89, Q ${h}, q ${f}, R ${d}, r ${l}`,{_x:p,_y:m}),l===0&&(p=t.x,m=t.y),d===0&&(p=t.x),h===0&&(m=t.y),{x:p,y:m}}},"intersection"),T8e=o((e,t)=>{Z.debug("abc88 cutPathAtIntersect",e,t);let r=[],i=e[0],n=!1;return e.forEach(a=>{if(!NSt(t,a)&&!n){let s=ISt(t,i,a),l=!1;r.forEach(u=>{l=l||u.x===s.x&&u.y===s.y}),r.some(u=>u.x===s.x&&u.y===s.y)||r.push(s),n=!0}else i=a,n||r.push(a)}),r},"cutPathAtIntersect"),w8e=o(function(e,t,r,i,n,a,s){let l=r.points;Z.debug("abc88 InsertEdge: edge=",r,"e=",t);let u=!1,h=a.node(t.v);var d=a.node(t.w);d?.intersect&&h?.intersect&&(l=l.slice(1,r.points.length-1),l.unshift(h.intersect(l[0])),l.push(d.intersect(l[l.length-1]))),r.toCluster&&(Z.debug("to cluster abc88",i[r.toCluster]),l=T8e(r.points,i[r.toCluster].node),u=!0),r.fromCluster&&(Z.debug("from cluster abc88",i[r.fromCluster]),l=T8e(l.reverse(),i[r.fromCluster].node).reverse(),u=!0);let f=l.filter(w=>!Number.isNaN(w.y)),p=Dl;r.curve&&(n==="graph"||n==="flowchart")&&(p=r.curve);let{x:m,y:g}=U4(r),y=_l().x(m).y(g).curve(p),v;switch(r.thickness){case"normal":v="edge-thickness-normal";break;case"thick":v="edge-thickness-thick";break;case"invisible":v="edge-thickness-thick";break;default:v=""}switch(r.pattern){case"solid":v+=" edge-pattern-solid";break;case"dotted":v+=" edge-pattern-dotted";break;case"dashed":v+=" edge-pattern-dashed";break}let x=e.append("path").attr("d",y(f)).attr("id",r.id).attr("class"," "+v+(r.classes?" "+r.classes:"")).attr("style",r.style),b="";(ge().flowchart.arrowMarkerAbsolute||ge().state.arrowMarkerAbsolute)&&(b=Hf(!0)),x8e(x,r,b,s,n);let T={};return u&&(T.updatedPath=l),T.originalPath=r.points,T},"insertEdge")});var OSt,E8e,A8e=z(()=>{"use strict";OSt=o(e=>{let t=new Set;for(let r of e)switch(r){case"x":t.add("right"),t.add("left");break;case"y":t.add("up"),t.add("down");break;default:t.add(r);break}return t},"expandAndDeduplicateDirections"),E8e=o((e,t,r,i)=>{let n=OSt(e),a=2,s=t.height+2*r.padding,l=s/a,u=i??t.width+2*l+r.padding,h=r.padding/2;return n.has("right")&&n.has("left")&&n.has("up")&&n.has("down")?[{x:0,y:0},{x:l,y:0},{x:u/2,y:2*h},{x:u-l,y:0},{x:u,y:0},{x:u,y:-s/3},{x:u+2*h,y:-s/2},{x:u,y:-2*s/3},{x:u,y:-s},{x:u-l,y:-s},{x:u/2,y:-s-2*h},{x:l,y:-s},{x:0,y:-s},{x:0,y:-2*s/3},{x:-2*h,y:-s/2},{x:0,y:-s/3}]:n.has("right")&&n.has("left")&&n.has("up")?[{x:l,y:0},{x:u-l,y:0},{x:u,y:-s/2},{x:u-l,y:-s},{x:l,y:-s},{x:0,y:-s/2}]:n.has("right")&&n.has("left")&&n.has("down")?[{x:0,y:0},{x:l,y:-s},{x:u-l,y:-s},{x:u,y:0}]:n.has("right")&&n.has("up")&&n.has("down")?[{x:0,y:0},{x:u,y:-l},{x:u,y:-s+l},{x:0,y:-s}]:n.has("left")&&n.has("up")&&n.has("down")?[{x:u,y:0},{x:0,y:-l},{x:0,y:-s+l},{x:u,y:-s}]:n.has("right")&&n.has("left")?[{x:l,y:0},{x:l,y:-h},{x:u-l,y:-h},{x:u-l,y:0},{x:u,y:-s/2},{x:u-l,y:-s},{x:u-l,y:-s+h},{x:l,y:-s+h},{x:l,y:-s},{x:0,y:-s/2}]:n.has("up")&&n.has("down")?[{x:u/2,y:0},{x:0,y:-h},{x:l,y:-h},{x:l,y:-s+h},{x:0,y:-s+h},{x:u/2,y:-s},{x:u,y:-s+h},{x:u-l,y:-s+h},{x:u-l,y:-h},{x:u,y:-h}]:n.has("right")&&n.has("up")?[{x:0,y:0},{x:u,y:-l},{x:0,y:-s}]:n.has("right")&&n.has("down")?[{x:0,y:0},{x:u,y:0},{x:0,y:-s}]:n.has("left")&&n.has("up")?[{x:u,y:0},{x:0,y:-l},{x:u,y:-s}]:n.has("left")&&n.has("down")?[{x:u,y:0},{x:0,y:0},{x:u,y:-s}]:n.has("right")?[{x:l,y:-h},{x:l,y:-h},{x:u-l,y:-h},{x:u-l,y:0},{x:u,y:-s/2},{x:u-l,y:-s},{x:u-l,y:-s+h},{x:l,y:-s+h},{x:l,y:-s+h}]:n.has("left")?[{x:l,y:0},{x:l,y:-h},{x:u-l,y:-h},{x:u-l,y:-s+h},{x:l,y:-s+h},{x:l,y:-s},{x:0,y:-s/2}]:n.has("up")?[{x:l,y:-h},{x:l,y:-s+h},{x:0,y:-s+h},{x:u/2,y:-s},{x:u,y:-s+h},{x:u-l,y:-s+h},{x:u-l,y:-h}]:n.has("down")?[{x:u/2,y:0},{x:0,y:-h},{x:l,y:-h},{x:l,y:-s+h},{x:u-l,y:-s+h},{x:u-l,y:-h},{x:u,y:-h}]:[{x:0,y:0}]},"getArrowPoints")});function PSt(e,t){return e.intersect(t)}var _8e,D8e=z(()=>{"use strict";o(PSt,"intersectNode");_8e=PSt});function BSt(e,t,r,i){var n=e.x,a=e.y,s=n-i.x,l=a-i.y,u=Math.sqrt(t*t*l*l+r*r*s*s),h=Math.abs(t*r*s/u);i.x<n&&(h=-h);var d=Math.abs(t*r*l/u);return i.y<a&&(d=-d),{x:n+h,y:a+d}}var k_,Dq=z(()=>{"use strict";o(BSt,"intersectEllipse");k_=BSt});function FSt(e,t,r){return k_(e,t,t,r)}var R8e,L8e=z(()=>{"use strict";Dq();o(FSt,"intersectCircle");R8e=FSt});function $St(e,t,r,i){var n,a,s,l,u,h,d,f,p,m,g,y,v,x,b;if(n=t.y-e.y,s=e.x-t.x,u=t.x*e.y-e.x*t.y,p=n*r.x+s*r.y+u,m=n*i.x+s*i.y+u,!(p!==0&&m!==0&&M8e(p,m))&&(a=i.y-r.y,l=r.x-i.x,h=i.x*r.y-r.x*i.y,d=a*e.x+l*e.y+h,f=a*t.x+l*t.y+h,!(d!==0&&f!==0&&M8e(d,f))&&(g=n*l-a*s,g!==0)))return y=Math.abs(g/2),v=s*h-l*u,x=v<0?(v-y)/g:(v+y)/g,v=a*u-n*h,b=v<0?(v-y)/g:(v+y)/g,{x,y:b}}function M8e(e,t){return e*t>0}var N8e,I8e=z(()=>{"use strict";o($St,"intersectLine");o(M8e,"sameSign");N8e=$St});function zSt(e,t,r){var i=e.x,n=e.y,a=[],s=Number.POSITIVE_INFINITY,l=Number.POSITIVE_INFINITY;typeof t.forEach=="function"?t.forEach(function(g){s=Math.min(s,g.x),l=Math.min(l,g.y)}):(s=Math.min(s,t.x),l=Math.min(l,t.y));for(var u=i-e.width/2-s,h=n-e.height/2-l,d=0;d<t.length;d++){var f=t[d],p=t[d<t.length-1?d+1:0],m=N8e(e,r,{x:u+f.x,y:h+f.y},{x:u+p.x,y:h+p.y});m&&a.push(m)}return a.length?(a.length>1&&a.sort(function(g,y){var v=g.x-r.x,x=g.y-r.y,b=Math.sqrt(v*v+x*x),T=y.x-r.x,w=y.y-r.y,C=Math.sqrt(T*T+w*w);return b<C?-1:b===C?0:1}),a[0]):e}var O8e,P8e=z(()=>{"use strict";I8e();O8e=zSt;o(zSt,"intersectPolygon")});var GSt,B8e,F8e=z(()=>{"use strict";GSt=o((e,t)=>{var r=e.x,i=e.y,n=t.x-r,a=t.y-i,s=e.width/2,l=e.height/2,u,h;return Math.abs(a)*s>Math.abs(n)*l?(a<0&&(l=-l),u=a===0?0:l*n/a,h=l):(n<0&&(s=-s),u=s,h=n===0?0:s*a/n),{x:r+u,y:i+h}},"intersectRect"),B8e=GSt});var Pi,Rq=z(()=>{"use strict";D8e();L8e();Dq();P8e();F8e();Pi={node:_8e,circle:R8e,ellipse:k_,polygon:O8e,rect:B8e}});function Jl(e,t,r,i){return e.insert("polygon",":first-child").attr("points",i.map(function(n){return n.x+","+n.y}).join(" ")).attr("class","label-container").attr("transform","translate("+-t/2+","+r/2+")")}var Mn,ji,Lq=z(()=>{"use strict";T_();_s();Ut();br();Rr();Ir();Xt();cN();Mn=o(async(e,t,r,i)=>{let n=ge(),a,s=t.useHtmlLabels||Mr(n);r?a=r:a="node default";let l=e.insert("g").attr("class",a).attr("id",t.domId||t.id),u=l.insert("g").attr("class","label").attr("style",t.labelStyle),h;t.labelText===void 0?h="":h=typeof t.labelText=="string"?t.labelText:t.labelText[0];let d;t.labelType==="markdown"?d=wi(u,fr(Qa(h),n),{useHtmlLabels:s,width:t.width||n.flowchart.wrappingWidth,classes:"markdown-node-label"},n):d=await js(u,fr(Qa(h),n),t.labelStyle,!1,i);let f=d.getBBox(),p=t.padding/2;if(Mr(n)){let m=d.children[0],g=Je(d);await E4(m,h),f=m.getBoundingClientRect(),g.attr("width",f.width),g.attr("height",f.height)}return s?u.attr("transform","translate("+-f.width/2+", "+-f.height/2+")"):u.attr("transform","translate(0, "+-f.height/2+")"),t.centerLabel&&u.attr("transform","translate("+-f.width/2+", "+-f.height/2+")"),u.insert("rect",":first-child"),{shapeSvg:l,bbox:f,halfPadding:p,label:u}},"labelHelper"),ji=o((e,t)=>{let r=t.node().getBBox();e.width=r.width,e.height=r.height},"updateNodeBounds");o(Jl,"insertPolygonShape")});var VSt,$8e,z8e=z(()=>{"use strict";Lq();St();Ut();br();Rq();VSt=o(async(e,t)=>{t.useHtmlLabels||Mr(ge())||(t.centerLabel=!0);let{shapeSvg:i,bbox:n,halfPadding:a}=await Mn(e,t,"node "+t.classes,!0);Z.info("Classes = ",t.classes);let s=i.insert("rect",":first-child");return s.attr("rx",t.rx).attr("ry",t.ry).attr("x",-n.width/2-a).attr("y",-n.height/2-a).attr("width",n.width+t.padding).attr("height",n.height+t.padding),ji(t,s),t.intersect=function(l){return Pi.rect(t,l)},i},"note"),$8e=VSt});function Mq(e,t,r,i){let n=[],a=o(l=>{n.push(l,0)},"addBorder"),s=o(l=>{n.push(0,l)},"skipBorder");t.includes("t")?(Z.debug("add top border"),a(r)):s(r),t.includes("r")?(Z.debug("add right border"),a(i)):s(i),t.includes("b")?(Z.debug("add bottom border"),a(r)):s(r),t.includes("l")?(Z.debug("add left border"),a(i)):s(i),e.attr("stroke-dasharray",n.join(" "))}var G8e,ko,V8e,WSt,qSt,USt,HSt,YSt,jSt,XSt,KSt,ZSt,QSt,JSt,e3t,t3t,r3t,i3t,n3t,a3t,s3t,o3t,W8e,l3t,c3t,q8e,w_,Nq,U8e,H8e=z(()=>{"use strict";Rr();Ut();br();St();A8e();T_();Rq();z8e();Lq();G8e=o(e=>e?" "+e:"","formatClass"),ko=o((e,t)=>`${t||"node default"}${G8e(e.classes)} ${G8e(e.class)}`,"getClassesFromNode"),V8e=o(async(e,t)=>{let{shapeSvg:r,bbox:i}=await Mn(e,t,ko(t,void 0),!0),n=i.width+t.padding,a=i.height+t.padding,s=n+a,l=[{x:s/2,y:0},{x:s,y:-s/2},{x:s/2,y:-s},{x:0,y:-s/2}];Z.info("Question main (Circle)");let u=Jl(r,s,s,l);return u.attr("style",t.style),ji(t,u),t.intersect=function(h){return Z.warn("Intersect called"),Pi.polygon(t,l,h)},r},"question"),WSt=o((e,t)=>{let r=e.insert("g").attr("class","node default").attr("id",t.domId||t.id),i=28,n=[{x:0,y:i/2},{x:i/2,y:0},{x:0,y:-i/2},{x:-i/2,y:0}];return r.insert("polygon",":first-child").attr("points",n.map(function(s){return s.x+","+s.y}).join(" ")).attr("class","state-start").attr("r",7).attr("width",28).attr("height",28),t.width=28,t.height=28,t.intersect=function(s){return Pi.circle(t,14,s)},r},"choice"),qSt=o(async(e,t)=>{let{shapeSvg:r,bbox:i}=await Mn(e,t,ko(t,void 0),!0),n=4,a=t.positioned?t.height:i.height+t.padding,s=a/n,l=t.positioned?t.width:i.width+2*s+t.padding,u=[{x:s,y:0},{x:l-s,y:0},{x:l,y:-a/2},{x:l-s,y:-a},{x:s,y:-a},{x:0,y:-a/2}],h=Jl(r,l,a,u);return h.attr("style",t.style),ji(t,h),t.intersect=function(d){return Pi.polygon(t,u,d)},r},"hexagon"),USt=o(async(e,t)=>{let{shapeSvg:r,bbox:i}=await Mn(e,t,void 0,!0),n=2,a=i.height+2*t.padding,s=a/n,l=i.width+2*s+t.padding,h=t.positioned&&(t.widthInColumns??1)>1&&t.width>l?t.width:l,d=E8e(t.directions,i,t,h),f=Jl(r,h,a,d);return f.attr("style",t.style),ji(t,f),t.intersect=function(p){return Pi.polygon(t,d,p)},r},"block_arrow"),HSt=o(async(e,t)=>{let{shapeSvg:r,bbox:i}=await Mn(e,t,ko(t,void 0),!0),n=i.width+t.padding,a=i.height+t.padding,s=[{x:-a/2,y:0},{x:n,y:0},{x:n,y:-a},{x:-a/2,y:-a},{x:0,y:-a/2}];return Jl(r,n,a,s).attr("style",t.style),t.width=n+a,t.height=a,t.intersect=function(u){return Pi.polygon(t,s,u)},r},"rect_left_inv_arrow"),YSt=o(async(e,t)=>{let{shapeSvg:r,bbox:i}=await Mn(e,t,ko(t),!0),n=i.width+t.padding,a=i.height+t.padding,s=[{x:-2*a/6,y:0},{x:n-a/6,y:0},{x:n+2*a/6,y:-a},{x:a/6,y:-a}],l=Jl(r,n,a,s);return l.attr("style",t.style),ji(t,l),t.intersect=function(u){return Pi.polygon(t,s,u)},r},"lean_right"),jSt=o(async(e,t)=>{let{shapeSvg:r,bbox:i}=await Mn(e,t,ko(t,void 0),!0),n=i.width+t.padding,a=i.height+t.padding,s=[{x:2*a/6,y:0},{x:n+a/6,y:0},{x:n-2*a/6,y:-a},{x:-a/6,y:-a}],l=Jl(r,n,a,s);return l.attr("style",t.style),ji(t,l),t.intersect=function(u){return Pi.polygon(t,s,u)},r},"lean_left"),XSt=o(async(e,t)=>{let{shapeSvg:r,bbox:i}=await Mn(e,t,ko(t,void 0),!0),n=i.width+t.padding,a=i.height+t.padding,s=[{x:-2*a/6,y:0},{x:n+2*a/6,y:0},{x:n-a/6,y:-a},{x:a/6,y:-a}],l=Jl(r,n,a,s);return l.attr("style",t.style),ji(t,l),t.intersect=function(u){return Pi.polygon(t,s,u)},r},"trapezoid"),KSt=o(async(e,t)=>{let{shapeSvg:r,bbox:i}=await Mn(e,t,ko(t,void 0),!0),n=i.width+t.padding,a=i.height+t.padding,s=[{x:a/6,y:0},{x:n-a/6,y:0},{x:n+2*a/6,y:-a},{x:-2*a/6,y:-a}],l=Jl(r,n,a,s);return l.attr("style",t.style),ji(t,l),t.intersect=function(u){return Pi.polygon(t,s,u)},r},"inv_trapezoid"),ZSt=o(async(e,t)=>{let{shapeSvg:r,bbox:i}=await Mn(e,t,ko(t,void 0),!0),n=i.width+t.padding,a=i.height+t.padding,s=[{x:0,y:0},{x:n+a/2,y:0},{x:n,y:-a/2},{x:n+a/2,y:-a},{x:0,y:-a}],l=Jl(r,n,a,s);return l.attr("style",t.style),ji(t,l),t.intersect=function(u){return Pi.polygon(t,s,u)},r},"rect_right_inv_arrow"),QSt=o(async(e,t)=>{let{shapeSvg:r,bbox:i}=await Mn(e,t,ko(t,void 0),!0),n=i.width+t.padding,a=n/2,s=a/(2.5+n/50),l=i.height+s+t.padding,u="M 0,"+s+" a "+a+","+s+" 0,0,0 "+n+" 0 a "+a+","+s+" 0,0,0 "+-n+" 0 l 0,"+l+" a "+a+","+s+" 0,0,0 "+n+" 0 l 0,"+-l,h=r.attr("label-offset-y",s).insert("path",":first-child").attr("style",t.style).attr("d",u).attr("transform","translate("+-n/2+","+-(l/2+s)+")");return ji(t,h),t.intersect=function(d){let f=Pi.rect(t,d),p=f.x-t.x;if(a!=0&&(Math.abs(p)<t.width/2||Math.abs(p)==t.width/2&&Math.abs(f.y-t.y)>t.height/2-s)){let m=s*s*(1-p*p/(a*a));m!=0&&(m=Math.sqrt(m)),m=s-m,d.y-t.y>0&&(m=-m),f.y+=m}return f},r},"cylinder"),JSt=o(async(e,t)=>{let{shapeSvg:r,bbox:i,halfPadding:n}=await Mn(e,t,"node "+t.classes+" "+t.class,!0),a=r.insert("rect",":first-child"),s=t.positioned?t.width:i.width+t.padding,l=t.positioned?t.height:i.height+t.padding,u=t.positioned?-s/2:-i.width/2-n,h=t.positioned?-l/2:-i.height/2-n;if(a.attr("class","basic label-container").attr("style",t.style).attr("rx",t.rx).attr("ry",t.ry).attr("x",u).attr("y",h).attr("width",s).attr("height",l),t.props){let d=new Set(Object.keys(t.props));t.props.borders&&(Mq(a,t.props.borders,s,l),d.delete("borders")),d.forEach(f=>{Z.warn(`Unknown node property ${f}`)})}return ji(t,a),t.intersect=function(d){return Pi.rect(t,d)},r},"rect"),e3t=o(async(e,t)=>{let{shapeSvg:r,bbox:i,halfPadding:n}=await Mn(e,t,"node "+t.classes,!0),a=r.insert("rect",":first-child"),s=t.positioned?t.width:i.width+t.padding,l=t.positioned?t.height:i.height+t.padding,u=t.positioned?-s/2:-i.width/2-n,h=t.positioned?-l/2:-i.height/2-n;if(a.attr("class","basic cluster composite label-container").attr("style",t.style).attr("rx",t.rx).attr("ry",t.ry).attr("x",u).attr("y",h).attr("width",s).attr("height",l),t.props){let d=new Set(Object.keys(t.props));t.props.borders&&(Mq(a,t.props.borders,s,l),d.delete("borders")),d.forEach(f=>{Z.warn(`Unknown node property ${f}`)})}return ji(t,a),t.intersect=function(d){return Pi.rect(t,d)},r},"composite"),t3t=o(async(e,t)=>{let{shapeSvg:r}=await Mn(e,t,"label",!0);Z.trace("Classes = ",t.class);let i=r.insert("rect",":first-child"),n=0,a=0;if(i.attr("width",n).attr("height",a),r.attr("class","label edgeLabel"),t.props){let s=new Set(Object.keys(t.props));t.props.borders&&(Mq(i,t.props.borders,n,a),s.delete("borders")),s.forEach(l=>{Z.warn(`Unknown node property ${l}`)})}return ji(t,i),t.intersect=function(s){return Pi.rect(t,s)},r},"labelRect");o(Mq,"applyNodePropertyBorders");r3t=o(async(e,t)=>{let r;t.classes?r="node "+t.classes:r="node default";let i=e.insert("g").attr("class",r).attr("id",t.domId||t.id),n=i.insert("rect",":first-child"),a=i.insert("line"),s=i.insert("g").attr("class","label"),l=t.labelText.flat?t.labelText.flat():t.labelText,u="";typeof l=="object"?u=l[0]:u=l,Z.info("Label text abc79",u,l,typeof l=="object");let h=await js(s,u,t.labelStyle,!0,!0),d={width:0,height:0};if(Mr(ge())){let y=h.children[0],v=Je(h);d=y.getBoundingClientRect(),v.attr("width",d.width),v.attr("height",d.height)}Z.info("Text 2",l);let f=l.slice(1,l.length),p=h.getBBox(),m=await js(s,f.join?f.join("<br/>"):f,t.labelStyle,!0,!0);if(Mr(ge())){let y=m.children[0],v=Je(m);d=y.getBoundingClientRect(),v.attr("width",d.width),v.attr("height",d.height)}let g=t.padding/2;return Je(m).attr("transform","translate( "+(d.width>p.width?0:(p.width-d.width)/2)+", "+(p.height+g+5)+")"),Je(h).attr("transform","translate( "+(d.width<p.width?0:-(p.width-d.width)/2)+", 0)"),d=s.node().getBBox(),s.attr("transform","translate("+-d.width/2+", "+(-d.height/2-g+3)+")"),n.attr("class","outer title-state").attr("x",-d.width/2-g).attr("y",-d.height/2-g).attr("width",d.width+t.padding).attr("height",d.height+t.padding),a.attr("class","divider").attr("x1",-d.width/2-g).attr("x2",d.width/2+g).attr("y1",-d.height/2-g+p.height+g).attr("y2",-d.height/2-g+p.height+g),ji(t,n),t.intersect=function(y){return Pi.rect(t,y)},i},"rectWithTitle"),i3t=o(async(e,t)=>{let{shapeSvg:r,bbox:i}=await Mn(e,t,ko(t,void 0),!0),n=i.height+t.padding,a=i.width+n/4+t.padding,s=r.insert("rect",":first-child").attr("style",t.style).attr("rx",n/2).attr("ry",n/2).attr("x",-a/2).attr("y",-n/2).attr("width",a).attr("height",n);return ji(t,s),t.intersect=function(l){return Pi.rect(t,l)},r},"stadium"),n3t=o(async(e,t)=>{let{shapeSvg:r,bbox:i,halfPadding:n}=await Mn(e,t,ko(t,void 0),!0),a=r.insert("circle",":first-child");return a.attr("style",t.style).attr("rx",t.rx).attr("ry",t.ry).attr("r",i.width/2+n).attr("width",i.width+t.padding).attr("height",i.height+t.padding),Z.info("Circle main"),ji(t,a),t.intersect=function(s){return Z.info("Circle intersect",t,i.width/2+n,s),Pi.circle(t,i.width/2+n,s)},r},"circle"),a3t=o(async(e,t)=>{let{shapeSvg:r,bbox:i,halfPadding:n}=await Mn(e,t,ko(t,void 0),!0),a=5,s=r.insert("g",":first-child"),l=s.insert("circle"),u=s.insert("circle");return s.attr("class",t.class),l.attr("style",t.style).attr("rx",t.rx).attr("ry",t.ry).attr("r",i.width/2+n+a).attr("width",i.width+t.padding+a*2).attr("height",i.height+t.padding+a*2),u.attr("style",t.style).attr("rx",t.rx).attr("ry",t.ry).attr("r",i.width/2+n).attr("width",i.width+t.padding).attr("height",i.height+t.padding),Z.info("DoubleCircle main"),ji(t,l),t.intersect=function(h){return Z.info("DoubleCircle intersect",t,i.width/2+n+a,h),Pi.circle(t,i.width/2+n+a,h)},r},"doublecircle"),s3t=o(async(e,t)=>{let{shapeSvg:r,bbox:i}=await Mn(e,t,ko(t,void 0),!0),n=i.width+t.padding,a=i.height+t.padding,s=[{x:0,y:0},{x:n,y:0},{x:n,y:-a},{x:0,y:-a},{x:0,y:0},{x:-8,y:0},{x:n+8,y:0},{x:n+8,y:-a},{x:-8,y:-a},{x:-8,y:0}],l=Jl(r,n,a,s);return l.attr("style",t.style),ji(t,l),t.intersect=function(u){return Pi.polygon(t,s,u)},r},"subroutine"),o3t=o((e,t)=>{let r=e.insert("g").attr("class","node default").attr("id",t.domId||t.id),i=r.insert("circle",":first-child");return i.attr("class","state-start").attr("r",7).attr("width",14).attr("height",14),ji(t,i),t.intersect=function(n){return Pi.circle(t,7,n)},r},"start"),W8e=o((e,t,r)=>{let i=e.insert("g").attr("class","node default").attr("id",t.domId||t.id),n=70,a=10;r==="LR"&&(n=10,a=70);let s=i.append("rect").attr("x",-1*n/2).attr("y",-1*a/2).attr("width",n).attr("height",a).attr("class","fork-join");return ji(t,s),t.height=t.height+t.padding/2,t.width=t.width+t.padding/2,t.intersect=function(l){return Pi.rect(t,l)},i},"forkJoin"),l3t=o((e,t)=>{let r=e.insert("g").attr("class","node default").attr("id",t.domId||t.id),i=r.insert("circle",":first-child"),n=r.insert("circle",":first-child");return n.attr("class","state-start").attr("r",7).attr("width",14).attr("height",14),i.attr("class","state-end").attr("r",5).attr("width",10).attr("height",10),ji(t,n),t.intersect=function(a){return Pi.circle(t,7,a)},r},"end"),c3t=o(async(e,t)=>{let r=t.padding/2,i=4,n=8,a;t.classes?a="node "+t.classes:a="node default";let s=e.insert("g").attr("class",a).attr("id",t.domId||t.id),l=s.insert("rect",":first-child"),u=s.insert("line"),h=s.insert("line"),d=0,f=i,p=s.insert("g").attr("class","label"),m=0,g=t.classData.annotations?.[0],y=t.classData.annotations[0]?"\xAB"+t.classData.annotations[0]+"\xBB":"",v=await js(p,y,t.labelStyle,!0,!0),x=v.getBBox();if(Mr(ge())){let A=v.children[0],N=Je(v);x=A.getBoundingClientRect(),N.attr("width",x.width),N.attr("height",x.height)}t.classData.annotations[0]&&(f+=x.height+i,d+=x.width);let b=t.classData.label;t.classData.type!==void 0&&t.classData.type!==""&&(Mr(ge())?b+="&lt;"+t.classData.type+"&gt;":b+="<"+t.classData.type+">");let T=await js(p,b,t.labelStyle,!0,!0);Je(T).attr("class","classTitle");let w=T.getBBox();if(Mr(ge())){let A=T.children[0],N=Je(T);w=A.getBoundingClientRect(),N.attr("width",w.width),N.attr("height",w.height)}f+=w.height+i,w.width>d&&(d=w.width);let C=[];t.classData.members.forEach(async A=>{let N=A.getDisplayDetails(),P=N.displayText;Mr(ge())&&(P=P.replace(/</g,"&lt;").replace(/>/g,"&gt;"));let I=await js(p,P,N.cssStyle?N.cssStyle:t.labelStyle,!0,!0),D=I.getBBox();if(Mr(ge())){let _=I.children[0],R=Je(I);D=_.getBoundingClientRect(),R.attr("width",D.width),R.attr("height",D.height)}D.width>d&&(d=D.width),f+=D.height+i,C.push(I)}),f+=n;let k=[];if(t.classData.methods.forEach(async A=>{let N=A.getDisplayDetails(),P=N.displayText;Mr(ge())&&(P=P.replace(/</g,"&lt;").replace(/>/g,"&gt;"));let I=await js(p,P,N.cssStyle?N.cssStyle:t.labelStyle,!0,!0),D=I.getBBox();if(Mr(ge())){let _=I.children[0],R=Je(I);D=_.getBoundingClientRect(),R.attr("width",D.width),R.attr("height",D.height)}D.width>d&&(d=D.width),f+=D.height+i,k.push(I)}),f+=n,g){let A=(d-x.width)/2;Je(v).attr("transform","translate( "+(-1*d/2+A)+", "+-1*f/2+")"),m=x.height+i}let E=(d-w.width)/2;return Je(T).attr("transform","translate( "+(-1*d/2+E)+", "+(-1*f/2+m)+")"),m+=w.height+i,u.attr("class","divider").attr("x1",-d/2-r).attr("x2",d/2+r).attr("y1",-f/2-r+n+m).attr("y2",-f/2-r+n+m),m+=n,C.forEach(A=>{Je(A).attr("transform","translate( "+-d/2+", "+(-1*f/2+m+n/2)+")");let N=A?.getBBox();m+=(N?.height??0)+i}),m+=n,h.attr("class","divider").attr("x1",-d/2-r).attr("x2",d/2+r).attr("y1",-f/2-r+n+m).attr("y2",-f/2-r+n+m),m+=n,k.forEach(A=>{Je(A).attr("transform","translate( "+-d/2+", "+(-1*f/2+m)+")");let N=A?.getBBox();m+=(N?.height??0)+i}),l.attr("style",t.style).attr("class","outer title-state").attr("x",-d/2-r).attr("y",-(f/2)-r).attr("width",d+t.padding).attr("height",f+t.padding),ji(t,l),t.intersect=function(A){return Pi.rect(t,A)},s},"class_box"),q8e={rhombus:V8e,composite:e3t,question:V8e,rect:JSt,labelRect:t3t,rectWithTitle:r3t,choice:WSt,circle:n3t,doublecircle:a3t,stadium:i3t,hexagon:qSt,block_arrow:USt,rect_left_inv_arrow:HSt,lean_right:YSt,lean_left:jSt,trapezoid:XSt,inv_trapezoid:KSt,rect_right_inv_arrow:ZSt,cylinder:QSt,start:o3t,end:l3t,note:$8e,subroutine:s3t,fork:W8e,join:W8e,class_box:c3t},w_={},Nq=o(async(e,t,r)=>{let i,n;if(t.link){let a;ge().securityLevel==="sandbox"?a="_top":t.linkTarget&&(a=t.linkTarget||"_blank"),i=e.insert("svg:a").attr("xlink:href",t.link).attr("target",a),n=await q8e[t.shape](i,t,r)}else n=await q8e[t.shape](e,t,r),i=n;return t.tooltip&&n.attr("title",t.tooltip),t.class&&n.attr("class","node default "+t.class),w_[t.id]=i,t.haveCallback&&w_[t.id].attr("class",w_[t.id].attr("class")+" clickable"),i},"insertNode"),U8e=o(e=>{let t=w_[e.id];Z.trace("Transforming node",e.diff,e,"translate("+(e.x-e.width/2-5)+", "+e.width/2+")");let r=8,i=e.diff||0;return e.clusterNode?t.attr("transform","translate("+(e.x+i-e.width/2)+", "+(e.y-e.height/2-r)+")"):t.attr("transform","translate("+e.x+", "+e.y+")"),i},"positionNode")});function Y8e(e,t,r=!1){let i=e,n="default";(i?.classes?.length||0)>0&&(n=(i?.classes??[]).join(" ")),n=n+" flowchart-label";let a=0,s="",l;switch(i.type){case"round":a=5,s="rect";break;case"composite":a=0,s="composite",l=0;break;case"square":s="rect";break;case"diamond":s="question";break;case"hexagon":s="hexagon";break;case"block_arrow":s="block_arrow";break;case"odd":s="rect_left_inv_arrow";break;case"lean_right":s="lean_right";break;case"lean_left":s="lean_left";break;case"trapezoid":s="trapezoid";break;case"inv_trapezoid":s="inv_trapezoid";break;case"rect_left_inv_arrow":s="rect_left_inv_arrow";break;case"circle":s="circle";break;case"ellipse":s="ellipse";break;case"stadium":s="stadium";break;case"subroutine":s="subroutine";break;case"cylinder":s="cylinder";break;case"group":s="rect";break;case"doublecircle":s="doublecircle";break;default:s="rect"}let u=_M(i?.styles??[]),h=i.label,d=i.size??{width:0,height:0,x:0,y:0},f=t.getDiagramId();return{labelStyle:u.labelStyle,shape:s,labelText:h,rx:a,ry:a,class:n,style:u.style,id:i.id,domId:f?`${f}-${i.id}`:i.id,directions:i.directions,width:d.width,height:d.height,x:d.x,y:d.y,positioned:r,intersect:void 0,type:i.type,padding:l??Nt()?.block?.padding??0,widthInColumns:i.widthInColumns??1}}async function u3t(e,t,r){let i=Y8e(t,r,!1);if(i.type==="group")return;let n=Nt(),a=await Nq(e,i,{config:n}),s=a.node().getBBox(),l=r.getBlock(i.id);l.size={width:s.width,height:s.height,x:0,y:0,node:a},r.setBlock(l),a.remove()}async function h3t(e,t,r){let i=Y8e(t,r,!0);if(r.getBlock(i.id).type!=="space"){let a=Nt();await Nq(e,i,{config:a}),t.intersect=i?.intersect,U8e(i)}}async function Iq(e,t,r,i){for(let n of t)await i(e,n,r),n.children&&await Iq(e,n.children,r,i)}async function j8e(e,t,r){await Iq(e,t,r,u3t)}async function X8e(e,t,r){await Iq(e,t,r,h3t)}async function K8e(e,t,r,i,n){let a=new ui({multigraph:!0,compound:!0});a.setGraph({rankdir:"TB",nodesep:10,ranksep:10,marginx:8,marginy:8});for(let s of r)s.size&&a.setNode(s.id,{width:s.size.width,height:s.size.height,intersect:s.intersect});for(let s of t)if(s.start&&s.end){let l=i.getBlock(s.start),u=i.getBlock(s.end);if(l?.size&&u?.size){let h=l.size,d=u.size,f=[{x:h.x,y:h.y},{x:h.x+(d.x-h.x)/2,y:h.y+(d.y-h.y)/2},{x:d.x,y:d.y}],p=n?`${n}-${s.id}`:s.id,m=s.thickness==="thick"?"edge-thickness-thick":"edge-thickness-normal",g=s.pattern==="dotted"?"edge-pattern-dotted":"edge-pattern-solid",y=`${m} ${g} flowchart-link LS-a1 LE-b1`;w8e(e,{v:s.start,w:s.end,name:p},{...s,id:p,arrowTypeEnd:s.arrowTypeEnd,arrowTypeStart:s.arrowTypeStart,points:f,classes:y},void 0,"block",a,n),s.label&&(await C8e(e,{...s,label:s.label,labelStyle:"stroke: #333; stroke-width: 1.5px;fill:none;",arrowTypeEnd:s.arrowTypeEnd,arrowTypeStart:s.arrowTypeStart,points:f,classes:y}),k8e({...s,x:f[1].x,y:f[1].y},{originalPath:f}))}}}var Z8e=z(()=>{"use strict";Uo();br();S8e();H8e();Xt();o(Y8e,"getNodeFromBlock");o(u3t,"calculateBlockSize");o(h3t,"insertBlockPositioned");o(Iq,"performOperations");o(j8e,"calculateBlockSizes");o(X8e,"insertBlocks");o(K8e,"insertEdges")});var d3t,f3t,Q8e,J8e=z(()=>{"use strict";Rr();br();d8e();St();Di();y8e();Z8e();d3t=o(function(e,t){return t.db.getClasses()},"getClasses"),f3t=o(async function(e,t,r,i){let{securityLevel:n,block:a}=Nt(),s=i.db;s.setDiagramId(t);let l;n==="sandbox"&&(l=Je("#i"+t));let u=n==="sandbox"?Je(l.nodes()[0].contentDocument.body):Je("body"),h=n==="sandbox"?u.select(`[id="${t}"]`):Je(`[id="${t}"]`);h8e(h,["point","circle","cross"],i.type,t);let f=s.getBlocks(),p=s.getBlocksFlat(),m=s.getEdges(),g=h.insert("g").attr("class","block");await j8e(g,f,s);let y=g8e(s);if(await X8e(g,f,s),await K8e(g,m,p,s,t),y){let v=y,x=Math.max(1,Math.round(.125*(v.width/v.height))),b=v.height+x+10,T=v.width+10,{useMaxWidth:w}=a;Br(h,b,T,!!w),Z.debug("Here Bounds",y,v),h.attr("viewBox",`${v.x-5} ${v.y-5} ${v.width+10} ${v.height+10}`)}},"draw"),Q8e={draw:f3t,getClasses:d3t}});var eRe={};xr(eRe,{diagram:()=>p3t});var p3t,tRe=z(()=>{"use strict";t8e();l8e();u8e();J8e();p3t={parser:e8e,db:o8e,renderer:Q8e,styles:c8e}});var cu,v3t,x3t,b3t,T3t,C3t,k3t,w3t,sC,Oq=z(()=>{"use strict";br();Bn();Ci();Xt();T6();cu=new wf(()=>({cnt:1,stack:[{id:0,level:-1,name:"/",children:[]}]})),v3t=o(()=>{cu.reset(),gr()},"clear"),x3t=o(()=>cu.records.stack[0],"getRoot"),b3t=o(()=>cu.records.cnt,"getCount"),T3t=or.treeView,C3t=o(()=>Gr(T3t,Nt().treeView),"getConfig"),k3t=o((e,t)=>{for(;e<=cu.records.stack[cu.records.stack.length-1].level;)cu.records.stack.pop();let r={id:cu.records.cnt++,level:e,name:t,children:[]};cu.records.stack[cu.records.stack.length-1].children.push(r),cu.records.stack.push(r)},"addNode"),w3t={clear:v3t,addNode:k3t,getRoot:x3t,getCount:b3t,getConfig:C3t,getAccTitle:kr,getAccDescription:Sr,getDiagramTitle:Er,setAccDescription:wr,setAccTitle:Cr,setDiagramTitle:Ar},sC=w3t});var S3t,nRe,aRe=z(()=>{"use strict";St();au();Oq();sl();S3t=o(e=>{ca(e,sC),e.nodes.map(t=>sC.addNode(t.indent?parseInt(t.indent):0,t.name))},"populate"),nRe={parse:o(async e=>{let t=await bn("treeView",e);Z.debug(t),S3t(t)},"parse")}});var E3t,sRe,A3t,_3t,D3t,oRe,lRe=z(()=>{"use strict";St();ps();Di();E3t=o((e,t,r,i,n)=>{let a=i.append("text").text(r.name).attr("dominant-baseline","middle").attr("class","treeView-node-label"),{height:s,width:l}=a.node().getBBox(),u=s+n.paddingY*2,h=l+n.paddingX*2;a.attr("x",e+n.paddingX),a.attr("y",t+u/2),r.BBox={x:e,y:t,width:h,height:u}},"positionLabel"),sRe=o((e,t,r,i,n,a)=>e.append("line").attr("x1",t).attr("y1",r).attr("x2",i).attr("y2",n).attr("stroke-width",a).attr("class","treeView-node-line"),"positionLine"),A3t=o((e,t,r)=>{let i=0,n=0,a=o((l,u,h,d)=>{let f=d*(h.rowIndent+h.paddingX);E3t(f,i,u,l,h);let{height:p,width:m}=u.BBox;sRe(l,f-h.rowIndent,i+p/2,f,i+p/2,h.lineThickness),n=Math.max(n,f+m),i+=p},"drawNode"),s=o((l,u=0)=>{a(e,l,r,u),l.children.forEach(p=>{s(p,u+1)});let{x:h,y:d,height:f}=l.BBox;if(l.children.length){let{y:p,height:m}=l.children[l.children.length-1].BBox;sRe(e,h+r.paddingX,d+f,h+r.paddingX,p+m/2+r.lineThickness/2,r.lineThickness)}},"processNode");return s(t),{totalHeight:i,totalWidth:n}},"drawTree"),_3t=o((e,t,r,i)=>{Z.debug(`Rendering treeView diagram
-`+e);let n=i.db,a=n.getRoot(),s=n.getConfig(),l=bi(t),u=l.append("g");u.attr("class","tree-view");let{totalHeight:h,totalWidth:d}=A3t(u,a,s);l.attr("viewBox",`-${s.lineThickness/2} 0 ${d} ${h}`),Br(l,h,d,s.useMaxWidth)},"draw"),D3t={draw:_3t},oRe=D3t});var R3t,L3t,cRe,uRe=z(()=>{"use strict";Xt();R3t={labelFontSize:"16px",labelColor:"black",lineColor:"black"},L3t=o(({treeView:e})=>{let{labelFontSize:t,labelColor:r,lineColor:i}=Gr(R3t,e);return`
+  node        : x:${e.x} y:${e.y} w:${e.width} h:${e.height}`);let n=e.x,i=e.y,a=Math.abs(n-r.x),s=e.width/2,l=r.x<t.x?s-a:s+a,u=e.height/2,h=Math.abs(t.y-r.y),d=Math.abs(t.x-r.x);if(Math.abs(i-t.y)*s>Math.abs(n-t.x)*u){let f=r.y<t.y?t.y-u-i:i-u-t.y;l=d*f/h;let p={x:r.x<t.x?r.x+l:r.x-d+l,y:r.y<t.y?r.y+h-f:r.y-h+f};return l===0&&(p.x=t.x,p.y=t.y),d===0&&(p.x=t.x),h===0&&(p.y=t.y),Z.debug(`abc89 topp/bott calc, Q ${h}, q ${f}, R ${d}, r ${l}`,p),p}else{r.x<t.x?l=t.x-s-n:l=n-s-t.x;let f=h*l/d,p=r.x<t.x?r.x+d-l:r.x-d+l,m=r.y<t.y?r.y+f:r.y-f;return Z.debug(`sides calc abc89, Q ${h}, q ${f}, R ${d}, r ${l}`,{_x:p,_y:m}),l===0&&(p=t.x,m=t.y),d===0&&(p=t.x),h===0&&(m=t.y),{x:p,y:m}}},"intersection"),fOe=o((e,t)=>{Z.debug("abc88 cutPathAtIntersect",e,t);let r=[],n=e[0],i=!1;return e.forEach(a=>{if(!i7t(t,a)&&!i){let s=a7t(t,n,a),l=!1;r.forEach(u=>{l=l||u.x===s.x&&u.y===s.y}),r.some(u=>u.x===s.x&&u.y===s.y)||r.push(s),i=!0}else n=a,i||r.push(a)}),r},"cutPathAtIntersect"),gOe=o(function(e,t,r,n,i,a,s){let l=r.points;Z.debug("abc88 InsertEdge: edge=",r,"e=",t);let u=!1,h=a.node(t.v);var d=a.node(t.w);d?.intersect&&h?.intersect&&(l=l.slice(1,r.points.length-1),l.unshift(h.intersect(l[0])),l.push(d.intersect(l[l.length-1]))),r.toCluster&&(Z.debug("to cluster abc88",n[r.toCluster]),l=fOe(r.points,n[r.toCluster].node),u=!0),r.fromCluster&&(Z.debug("from cluster abc88",n[r.fromCluster]),l=fOe(l.reverse(),n[r.fromCluster].node).reverse(),u=!0);let f=l.filter(k=>!Number.isNaN(k.y)),p=rc;r.curve&&(i==="graph"||i==="flowchart")&&(p=r.curve);let{x:m,y:g}=U4(r),y=tc().x(m).y(g).curve(p),v;switch(r.thickness){case"normal":v="edge-thickness-normal";break;case"thick":v="edge-thickness-thick";break;case"invisible":v="edge-thickness-thick";break;default:v=""}switch(r.pattern){case"solid":v+=" edge-pattern-solid";break;case"dotted":v+=" edge-pattern-dotted";break;case"dashed":v+=" edge-pattern-dashed";break}let x=e.append("path").attr("d",y(f)).attr("id",r.id).attr("class"," "+v+(r.classes?" "+r.classes:"")).attr("style",r.style),b="";(Ae().flowchart.arrowMarkerAbsolute||Ae().state.arrowMarkerAbsolute)&&(b=Wp(!0)),hOe(x,r,b,s,i);let T={};return u&&(T.updatedPath=l),T.originalPath=r.points,T},"insertEdge")});var s7t,vOe,xOe=F(()=>{"use strict";s7t=o(e=>{let t=new Set;for(let r of e)switch(r){case"x":t.add("right"),t.add("left");break;case"y":t.add("up"),t.add("down");break;default:t.add(r);break}return t},"expandAndDeduplicateDirections"),vOe=o((e,t,r,n)=>{let i=s7t(e),a=2,s=t.height+2*r.padding,l=s/a,u=n??t.width+2*l+r.padding,h=r.padding/2;return i.has("right")&&i.has("left")&&i.has("up")&&i.has("down")?[{x:0,y:0},{x:l,y:0},{x:u/2,y:2*h},{x:u-l,y:0},{x:u,y:0},{x:u,y:-s/3},{x:u+2*h,y:-s/2},{x:u,y:-2*s/3},{x:u,y:-s},{x:u-l,y:-s},{x:u/2,y:-s-2*h},{x:l,y:-s},{x:0,y:-s},{x:0,y:-2*s/3},{x:-2*h,y:-s/2},{x:0,y:-s/3}]:i.has("right")&&i.has("left")&&i.has("up")?[{x:l,y:0},{x:u-l,y:0},{x:u,y:-s/2},{x:u-l,y:-s},{x:l,y:-s},{x:0,y:-s/2}]:i.has("right")&&i.has("left")&&i.has("down")?[{x:0,y:0},{x:l,y:-s},{x:u-l,y:-s},{x:u,y:0}]:i.has("right")&&i.has("up")&&i.has("down")?[{x:0,y:0},{x:u,y:-l},{x:u,y:-s+l},{x:0,y:-s}]:i.has("left")&&i.has("up")&&i.has("down")?[{x:u,y:0},{x:0,y:-l},{x:0,y:-s+l},{x:u,y:-s}]:i.has("right")&&i.has("left")?[{x:l,y:0},{x:l,y:-h},{x:u-l,y:-h},{x:u-l,y:0},{x:u,y:-s/2},{x:u-l,y:-s},{x:u-l,y:-s+h},{x:l,y:-s+h},{x:l,y:-s},{x:0,y:-s/2}]:i.has("up")&&i.has("down")?[{x:u/2,y:0},{x:0,y:-h},{x:l,y:-h},{x:l,y:-s+h},{x:0,y:-s+h},{x:u/2,y:-s},{x:u,y:-s+h},{x:u-l,y:-s+h},{x:u-l,y:-h},{x:u,y:-h}]:i.has("right")&&i.has("up")?[{x:0,y:0},{x:u,y:-l},{x:0,y:-s}]:i.has("right")&&i.has("down")?[{x:0,y:0},{x:u,y:0},{x:0,y:-s}]:i.has("left")&&i.has("up")?[{x:u,y:0},{x:0,y:-l},{x:u,y:-s}]:i.has("left")&&i.has("down")?[{x:u,y:0},{x:0,y:0},{x:u,y:-s}]:i.has("right")?[{x:l,y:-h},{x:l,y:-h},{x:u-l,y:-h},{x:u-l,y:0},{x:u,y:-s/2},{x:u-l,y:-s},{x:u-l,y:-s+h},{x:l,y:-s+h},{x:l,y:-s+h}]:i.has("left")?[{x:l,y:0},{x:l,y:-h},{x:u-l,y:-h},{x:u-l,y:-s+h},{x:l,y:-s+h},{x:l,y:-s},{x:0,y:-s/2}]:i.has("up")?[{x:l,y:-h},{x:l,y:-s+h},{x:0,y:-s+h},{x:u/2,y:-s},{x:u,y:-s+h},{x:u-l,y:-s+h},{x:u-l,y:-h}]:i.has("down")?[{x:u/2,y:0},{x:0,y:-h},{x:l,y:-h},{x:l,y:-s+h},{x:u-l,y:-s+h},{x:u-l,y:-h},{x:u,y:-h}]:[{x:0,y:0}]},"getArrowPoints")});function o7t(e,t){return e.intersect(t)}var bOe,TOe=F(()=>{"use strict";o(o7t,"intersectNode");bOe=o7t});function l7t(e,t,r,n){var i=e.x,a=e.y,s=i-n.x,l=a-n.y,u=Math.sqrt(t*t*l*l+r*r*s*s),h=Math.abs(t*r*s/u);n.x<i&&(h=-h);var d=Math.abs(t*r*l/u);return n.y<a&&(d=-d),{x:i+h,y:a+d}}var tD,_j=F(()=>{"use strict";o(l7t,"intersectEllipse");tD=l7t});function c7t(e,t,r){return tD(e,t,t,r)}var COe,wOe=F(()=>{"use strict";_j();o(c7t,"intersectCircle");COe=c7t});function u7t(e,t,r,n){var i,a,s,l,u,h,d,f,p,m,g,y,v,x,b;if(i=t.y-e.y,s=e.x-t.x,u=t.x*e.y-e.x*t.y,p=i*r.x+s*r.y+u,m=i*n.x+s*n.y+u,!(p!==0&&m!==0&&kOe(p,m))&&(a=n.y-r.y,l=r.x-n.x,h=n.x*r.y-r.x*n.y,d=a*e.x+l*e.y+h,f=a*t.x+l*t.y+h,!(d!==0&&f!==0&&kOe(d,f))&&(g=i*l-a*s,g!==0)))return y=Math.abs(g/2),v=s*h-l*u,x=v<0?(v-y)/g:(v+y)/g,v=a*u-i*h,b=v<0?(v-y)/g:(v+y)/g,{x,y:b}}function kOe(e,t){return e*t>0}var SOe,EOe=F(()=>{"use strict";o(u7t,"intersectLine");o(kOe,"sameSign");SOe=u7t});function h7t(e,t,r){var n=e.x,i=e.y,a=[],s=Number.POSITIVE_INFINITY,l=Number.POSITIVE_INFINITY;typeof t.forEach=="function"?t.forEach(function(g){s=Math.min(s,g.x),l=Math.min(l,g.y)}):(s=Math.min(s,t.x),l=Math.min(l,t.y));for(var u=n-e.width/2-s,h=i-e.height/2-l,d=0;d<t.length;d++){var f=t[d],p=t[d<t.length-1?d+1:0],m=SOe(e,r,{x:u+f.x,y:h+f.y},{x:u+p.x,y:h+p.y});m&&a.push(m)}return a.length?(a.length>1&&a.sort(function(g,y){var v=g.x-r.x,x=g.y-r.y,b=Math.sqrt(v*v+x*x),T=y.x-r.x,k=y.y-r.y,C=Math.sqrt(T*T+k*k);return b<C?-1:b===C?0:1}),a[0]):e}var AOe,ROe=F(()=>{"use strict";EOe();AOe=h7t;o(h7t,"intersectPolygon")});var d7t,_Oe,LOe=F(()=>{"use strict";d7t=o((e,t)=>{var r=e.x,n=e.y,i=t.x-r,a=t.y-n,s=e.width/2,l=e.height/2,u,h;return Math.abs(a)*s>Math.abs(i)*l?(a<0&&(l=-l),u=a===0?0:l*i/a,h=l):(i<0&&(s=-s),u=s,h=i===0?0:s*a/i),{x:r+u,y:n+h}},"intersectRect"),_Oe=d7t});var ti,Lj=F(()=>{"use strict";TOe();wOe();_j();ROe();LOe();ti={node:bOe,circle:COe,ellipse:tD,polygon:AOe,rect:_Oe}});function Ic(e,t,r,n){return e.insert("polygon",":first-child").attr("points",n.map(function(i){return i.x+","+i.y}).join(" ")).attr("class","label-container").attr("transform","translate("+-t/2+","+r/2+")")}var Ji,mi,Dj=F(()=>{"use strict";JL();Ls();Xt();ur();$r();Vr();Qt();HP();Ji=o(async(e,t,r,n)=>{let i=Ae(),a,s=t.useHtmlLabels||Gr(i);r?a=r:a="node default";let l=e.insert("g").attr("class",a).attr("id",t.domId||t.id),u=l.insert("g").attr("class","label").attr("style",t.labelStyle),h;t.labelText===void 0?h="":h=typeof t.labelText=="string"?t.labelText:t.labelText[0];let d;t.labelType==="markdown"?d=Pn(u,mr(Rs(h),i),{useHtmlLabels:s,width:t.width||i.flowchart.wrappingWidth,classes:"markdown-node-label"},i):d=await Ao(u,mr(Rs(h),i),t.labelStyle,!1,n);let f=d.getBBox(),p=t.padding/2;if(Gr(i)){let m=d.children[0],g=et(d);await E4(m,h),f=m.getBoundingClientRect(),g.attr("width",f.width),g.attr("height",f.height)}return s?u.attr("transform","translate("+-f.width/2+", "+-f.height/2+")"):u.attr("transform","translate(0, "+-f.height/2+")"),t.centerLabel&&u.attr("transform","translate("+-f.width/2+", "+-f.height/2+")"),u.insert("rect",":first-child"),{shapeSvg:l,bbox:f,halfPadding:p,label:u}},"labelHelper"),mi=o((e,t)=>{let r=t.node().getBBox();e.width=r.width,e.height=r.height},"updateNodeBounds");o(Ic,"insertPolygonShape")});var f7t,DOe,IOe=F(()=>{"use strict";Dj();vt();Xt();ur();Lj();f7t=o(async(e,t)=>{t.useHtmlLabels||Gr(Ae())||(t.centerLabel=!0);let{shapeSvg:n,bbox:i,halfPadding:a}=await Ji(e,t,"node "+t.classes,!0);Z.info("Classes = ",t.classes);let s=n.insert("rect",":first-child");return s.attr("rx",t.rx).attr("ry",t.ry).attr("x",-i.width/2-a).attr("y",-i.height/2-a).attr("width",i.width+t.padding).attr("height",i.height+t.padding),mi(t,s),t.intersect=function(l){return ti.rect(t,l)},n},"note"),DOe=f7t});function Ij(e,t,r,n){let i=[],a=o(l=>{i.push(l,0)},"addBorder"),s=o(l=>{i.push(0,l)},"skipBorder");t.includes("t")?(Z.debug("add top border"),a(r)):s(r),t.includes("r")?(Z.debug("add right border"),a(n)):s(n),t.includes("b")?(Z.debug("add bottom border"),a(r)):s(r),t.includes("l")?(Z.debug("add left border"),a(n)):s(n),e.attr("stroke-dasharray",i.join(" "))}var MOe,rl,NOe,p7t,m7t,g7t,y7t,v7t,x7t,b7t,T7t,C7t,w7t,k7t,S7t,E7t,A7t,R7t,_7t,L7t,D7t,I7t,POe,M7t,N7t,OOe,rD,Mj,BOe,$Oe=F(()=>{"use strict";$r();Xt();ur();vt();xOe();JL();Lj();IOe();Dj();MOe=o(e=>e?" "+e:"","formatClass"),rl=o((e,t)=>`${t||"node default"}${MOe(e.classes)} ${MOe(e.class)}`,"getClassesFromNode"),NOe=o(async(e,t)=>{let{shapeSvg:r,bbox:n}=await Ji(e,t,rl(t,void 0),!0),i=n.width+t.padding,a=n.height+t.padding,s=i+a,l=[{x:s/2,y:0},{x:s,y:-s/2},{x:s/2,y:-s},{x:0,y:-s/2}];Z.info("Question main (Circle)");let u=Ic(r,s,s,l);return u.attr("style",t.style),mi(t,u),t.intersect=function(h){return Z.warn("Intersect called"),ti.polygon(t,l,h)},r},"question"),p7t=o((e,t)=>{let r=e.insert("g").attr("class","node default").attr("id",t.domId||t.id),n=28,i=[{x:0,y:n/2},{x:n/2,y:0},{x:0,y:-n/2},{x:-n/2,y:0}];return r.insert("polygon",":first-child").attr("points",i.map(function(s){return s.x+","+s.y}).join(" ")).attr("class","state-start").attr("r",7).attr("width",28).attr("height",28),t.width=28,t.height=28,t.intersect=function(s){return ti.circle(t,14,s)},r},"choice"),m7t=o(async(e,t)=>{let{shapeSvg:r,bbox:n}=await Ji(e,t,rl(t,void 0),!0),i=4,a=t.positioned?t.height:n.height+t.padding,s=a/i,l=t.positioned?t.width:n.width+2*s+t.padding,u=[{x:s,y:0},{x:l-s,y:0},{x:l,y:-a/2},{x:l-s,y:-a},{x:s,y:-a},{x:0,y:-a/2}],h=Ic(r,l,a,u);return h.attr("style",t.style),mi(t,h),t.intersect=function(d){return ti.polygon(t,u,d)},r},"hexagon"),g7t=o(async(e,t)=>{let{shapeSvg:r,bbox:n}=await Ji(e,t,void 0,!0),i=2,a=n.height+2*t.padding,s=a/i,l=n.width+2*s+t.padding,h=t.positioned&&(t.widthInColumns??1)>1&&t.width>l?t.width:l,d=vOe(t.directions,n,t,h),f=Ic(r,h,a,d);return f.attr("style",t.style),mi(t,f),t.intersect=function(p){return ti.polygon(t,d,p)},r},"block_arrow"),y7t=o(async(e,t)=>{let{shapeSvg:r,bbox:n}=await Ji(e,t,rl(t,void 0),!0),i=n.width+t.padding,a=n.height+t.padding,s=[{x:-a/2,y:0},{x:i,y:0},{x:i,y:-a},{x:-a/2,y:-a},{x:0,y:-a/2}];return Ic(r,i,a,s).attr("style",t.style),t.width=i+a,t.height=a,t.intersect=function(u){return ti.polygon(t,s,u)},r},"rect_left_inv_arrow"),v7t=o(async(e,t)=>{let{shapeSvg:r,bbox:n}=await Ji(e,t,rl(t),!0),i=n.width+t.padding,a=n.height+t.padding,s=[{x:-2*a/6,y:0},{x:i-a/6,y:0},{x:i+2*a/6,y:-a},{x:a/6,y:-a}],l=Ic(r,i,a,s);return l.attr("style",t.style),mi(t,l),t.intersect=function(u){return ti.polygon(t,s,u)},r},"lean_right"),x7t=o(async(e,t)=>{let{shapeSvg:r,bbox:n}=await Ji(e,t,rl(t,void 0),!0),i=n.width+t.padding,a=n.height+t.padding,s=[{x:2*a/6,y:0},{x:i+a/6,y:0},{x:i-2*a/6,y:-a},{x:-a/6,y:-a}],l=Ic(r,i,a,s);return l.attr("style",t.style),mi(t,l),t.intersect=function(u){return ti.polygon(t,s,u)},r},"lean_left"),b7t=o(async(e,t)=>{let{shapeSvg:r,bbox:n}=await Ji(e,t,rl(t,void 0),!0),i=n.width+t.padding,a=n.height+t.padding,s=[{x:-2*a/6,y:0},{x:i+2*a/6,y:0},{x:i-a/6,y:-a},{x:a/6,y:-a}],l=Ic(r,i,a,s);return l.attr("style",t.style),mi(t,l),t.intersect=function(u){return ti.polygon(t,s,u)},r},"trapezoid"),T7t=o(async(e,t)=>{let{shapeSvg:r,bbox:n}=await Ji(e,t,rl(t,void 0),!0),i=n.width+t.padding,a=n.height+t.padding,s=[{x:a/6,y:0},{x:i-a/6,y:0},{x:i+2*a/6,y:-a},{x:-2*a/6,y:-a}],l=Ic(r,i,a,s);return l.attr("style",t.style),mi(t,l),t.intersect=function(u){return ti.polygon(t,s,u)},r},"inv_trapezoid"),C7t=o(async(e,t)=>{let{shapeSvg:r,bbox:n}=await Ji(e,t,rl(t,void 0),!0),i=n.width+t.padding,a=n.height+t.padding,s=[{x:0,y:0},{x:i+a/2,y:0},{x:i,y:-a/2},{x:i+a/2,y:-a},{x:0,y:-a}],l=Ic(r,i,a,s);return l.attr("style",t.style),mi(t,l),t.intersect=function(u){return ti.polygon(t,s,u)},r},"rect_right_inv_arrow"),w7t=o(async(e,t)=>{let{shapeSvg:r,bbox:n}=await Ji(e,t,rl(t,void 0),!0),i=n.width+t.padding,a=i/2,s=a/(2.5+i/50),l=n.height+s+t.padding,u="M 0,"+s+" a "+a+","+s+" 0,0,0 "+i+" 0 a "+a+","+s+" 0,0,0 "+-i+" 0 l 0,"+l+" a "+a+","+s+" 0,0,0 "+i+" 0 l 0,"+-l,h=r.attr("label-offset-y",s).insert("path",":first-child").attr("style",t.style).attr("d",u).attr("transform","translate("+-i/2+","+-(l/2+s)+")");return mi(t,h),t.intersect=function(d){let f=ti.rect(t,d),p=f.x-t.x;if(a!=0&&(Math.abs(p)<t.width/2||Math.abs(p)==t.width/2&&Math.abs(f.y-t.y)>t.height/2-s)){let m=s*s*(1-p*p/(a*a));m!=0&&(m=Math.sqrt(m)),m=s-m,d.y-t.y>0&&(m=-m),f.y+=m}return f},r},"cylinder"),k7t=o(async(e,t)=>{let{shapeSvg:r,bbox:n,halfPadding:i}=await Ji(e,t,"node "+t.classes+" "+t.class,!0),a=r.insert("rect",":first-child"),s=t.positioned?t.width:n.width+t.padding,l=t.positioned?t.height:n.height+t.padding,u=t.positioned?-s/2:-n.width/2-i,h=t.positioned?-l/2:-n.height/2-i;if(a.attr("class","basic label-container").attr("style",t.style).attr("rx",t.rx).attr("ry",t.ry).attr("x",u).attr("y",h).attr("width",s).attr("height",l),t.props){let d=new Set(Object.keys(t.props));t.props.borders&&(Ij(a,t.props.borders,s,l),d.delete("borders")),d.forEach(f=>{Z.warn(`Unknown node property ${f}`)})}return mi(t,a),t.intersect=function(d){return ti.rect(t,d)},r},"rect"),S7t=o(async(e,t)=>{let{shapeSvg:r,bbox:n,halfPadding:i}=await Ji(e,t,"node "+t.classes,!0),a=r.insert("rect",":first-child"),s=t.positioned?t.width:n.width+t.padding,l=t.positioned?t.height:n.height+t.padding,u=t.positioned?-s/2:-n.width/2-i,h=t.positioned?-l/2:-n.height/2-i;if(a.attr("class","basic cluster composite label-container").attr("style",t.style).attr("rx",t.rx).attr("ry",t.ry).attr("x",u).attr("y",h).attr("width",s).attr("height",l),t.props){let d=new Set(Object.keys(t.props));t.props.borders&&(Ij(a,t.props.borders,s,l),d.delete("borders")),d.forEach(f=>{Z.warn(`Unknown node property ${f}`)})}return mi(t,a),t.intersect=function(d){return ti.rect(t,d)},r},"composite"),E7t=o(async(e,t)=>{let{shapeSvg:r}=await Ji(e,t,"label",!0);Z.trace("Classes = ",t.class);let n=r.insert("rect",":first-child"),i=0,a=0;if(n.attr("width",i).attr("height",a),r.attr("class","label edgeLabel"),t.props){let s=new Set(Object.keys(t.props));t.props.borders&&(Ij(n,t.props.borders,i,a),s.delete("borders")),s.forEach(l=>{Z.warn(`Unknown node property ${l}`)})}return mi(t,n),t.intersect=function(s){return ti.rect(t,s)},r},"labelRect");o(Ij,"applyNodePropertyBorders");A7t=o(async(e,t)=>{let r;t.classes?r="node "+t.classes:r="node default";let n=e.insert("g").attr("class",r).attr("id",t.domId||t.id),i=n.insert("rect",":first-child"),a=n.insert("line"),s=n.insert("g").attr("class","label"),l=t.labelText.flat?t.labelText.flat():t.labelText,u="";typeof l=="object"?u=l[0]:u=l,Z.info("Label text abc79",u,l,typeof l=="object");let h=await Ao(s,u,t.labelStyle,!0,!0),d={width:0,height:0};if(Gr(Ae())){let y=h.children[0],v=et(h);d=y.getBoundingClientRect(),v.attr("width",d.width),v.attr("height",d.height)}Z.info("Text 2",l);let f=l.slice(1,l.length),p=h.getBBox(),m=await Ao(s,f.join?f.join("<br/>"):f,t.labelStyle,!0,!0);if(Gr(Ae())){let y=m.children[0],v=et(m);d=y.getBoundingClientRect(),v.attr("width",d.width),v.attr("height",d.height)}let g=t.padding/2;return et(m).attr("transform","translate( "+(d.width>p.width?0:(p.width-d.width)/2)+", "+(p.height+g+5)+")"),et(h).attr("transform","translate( "+(d.width<p.width?0:-(p.width-d.width)/2)+", 0)"),d=s.node().getBBox(),s.attr("transform","translate("+-d.width/2+", "+(-d.height/2-g+3)+")"),i.attr("class","outer title-state").attr("x",-d.width/2-g).attr("y",-d.height/2-g).attr("width",d.width+t.padding).attr("height",d.height+t.padding),a.attr("class","divider").attr("x1",-d.width/2-g).attr("x2",d.width/2+g).attr("y1",-d.height/2-g+p.height+g).attr("y2",-d.height/2-g+p.height+g),mi(t,i),t.intersect=function(y){return ti.rect(t,y)},n},"rectWithTitle"),R7t=o(async(e,t)=>{let{shapeSvg:r,bbox:n}=await Ji(e,t,rl(t,void 0),!0),i=n.height+t.padding,a=n.width+i/4+t.padding,s=r.insert("rect",":first-child").attr("style",t.style).attr("rx",i/2).attr("ry",i/2).attr("x",-a/2).attr("y",-i/2).attr("width",a).attr("height",i);return mi(t,s),t.intersect=function(l){return ti.rect(t,l)},r},"stadium"),_7t=o(async(e,t)=>{let{shapeSvg:r,bbox:n,halfPadding:i}=await Ji(e,t,rl(t,void 0),!0),a=r.insert("circle",":first-child");return a.attr("style",t.style).attr("rx",t.rx).attr("ry",t.ry).attr("r",n.width/2+i).attr("width",n.width+t.padding).attr("height",n.height+t.padding),Z.info("Circle main"),mi(t,a),t.intersect=function(s){return Z.info("Circle intersect",t,n.width/2+i,s),ti.circle(t,n.width/2+i,s)},r},"circle"),L7t=o(async(e,t)=>{let{shapeSvg:r,bbox:n,halfPadding:i}=await Ji(e,t,rl(t,void 0),!0),a=5,s=r.insert("g",":first-child"),l=s.insert("circle"),u=s.insert("circle");return s.attr("class",t.class),l.attr("style",t.style).attr("rx",t.rx).attr("ry",t.ry).attr("r",n.width/2+i+a).attr("width",n.width+t.padding+a*2).attr("height",n.height+t.padding+a*2),u.attr("style",t.style).attr("rx",t.rx).attr("ry",t.ry).attr("r",n.width/2+i).attr("width",n.width+t.padding).attr("height",n.height+t.padding),Z.info("DoubleCircle main"),mi(t,l),t.intersect=function(h){return Z.info("DoubleCircle intersect",t,n.width/2+i+a,h),ti.circle(t,n.width/2+i+a,h)},r},"doublecircle"),D7t=o(async(e,t)=>{let{shapeSvg:r,bbox:n}=await Ji(e,t,rl(t,void 0),!0),i=n.width+t.padding,a=n.height+t.padding,s=[{x:0,y:0},{x:i,y:0},{x:i,y:-a},{x:0,y:-a},{x:0,y:0},{x:-8,y:0},{x:i+8,y:0},{x:i+8,y:-a},{x:-8,y:-a},{x:-8,y:0}],l=Ic(r,i,a,s);return l.attr("style",t.style),mi(t,l),t.intersect=function(u){return ti.polygon(t,s,u)},r},"subroutine"),I7t=o((e,t)=>{let r=e.insert("g").attr("class","node default").attr("id",t.domId||t.id),n=r.insert("circle",":first-child");return n.attr("class","state-start").attr("r",7).attr("width",14).attr("height",14),mi(t,n),t.intersect=function(i){return ti.circle(t,7,i)},r},"start"),POe=o((e,t,r)=>{let n=e.insert("g").attr("class","node default").attr("id",t.domId||t.id),i=70,a=10;r==="LR"&&(i=10,a=70);let s=n.append("rect").attr("x",-1*i/2).attr("y",-1*a/2).attr("width",i).attr("height",a).attr("class","fork-join");return mi(t,s),t.height=t.height+t.padding/2,t.width=t.width+t.padding/2,t.intersect=function(l){return ti.rect(t,l)},n},"forkJoin"),M7t=o((e,t)=>{let r=e.insert("g").attr("class","node default").attr("id",t.domId||t.id),n=r.insert("circle",":first-child"),i=r.insert("circle",":first-child");return i.attr("class","state-start").attr("r",7).attr("width",14).attr("height",14),n.attr("class","state-end").attr("r",5).attr("width",10).attr("height",10),mi(t,i),t.intersect=function(a){return ti.circle(t,7,a)},r},"end"),N7t=o(async(e,t)=>{let r=t.padding/2,n=4,i=8,a;t.classes?a="node "+t.classes:a="node default";let s=e.insert("g").attr("class",a).attr("id",t.domId||t.id),l=s.insert("rect",":first-child"),u=s.insert("line"),h=s.insert("line"),d=0,f=n,p=s.insert("g").attr("class","label"),m=0,g=t.classData.annotations?.[0],y=t.classData.annotations[0]?"\xAB"+t.classData.annotations[0]+"\xBB":"",v=await Ao(p,y,t.labelStyle,!0,!0),x=v.getBBox();if(Gr(Ae())){let R=v.children[0],L=et(v);x=R.getBoundingClientRect(),L.attr("width",x.width),L.attr("height",x.height)}t.classData.annotations[0]&&(f+=x.height+n,d+=x.width);let b=t.classData.label;t.classData.type!==void 0&&t.classData.type!==""&&(Gr(Ae())?b+="&lt;"+t.classData.type+"&gt;":b+="<"+t.classData.type+">");let T=await Ao(p,b,t.labelStyle,!0,!0);et(T).attr("class","classTitle");let k=T.getBBox();if(Gr(Ae())){let R=T.children[0],L=et(T);k=R.getBoundingClientRect(),L.attr("width",k.width),L.attr("height",k.height)}f+=k.height+n,k.width>d&&(d=k.width);let C=[];t.classData.members.forEach(async R=>{let L=R.getDisplayDetails(),N=L.displayText;Gr(Ae())&&(N=N.replace(/</g,"&lt;").replace(/>/g,"&gt;"));let I=await Ao(p,N,L.cssStyle?L.cssStyle:t.labelStyle,!0,!0),_=I.getBBox();if(Gr(Ae())){let A=I.children[0],M=et(I);_=A.getBoundingClientRect(),M.attr("width",_.width),M.attr("height",_.height)}_.width>d&&(d=_.width),f+=_.height+n,C.push(I)}),f+=i;let w=[];if(t.classData.methods.forEach(async R=>{let L=R.getDisplayDetails(),N=L.displayText;Gr(Ae())&&(N=N.replace(/</g,"&lt;").replace(/>/g,"&gt;"));let I=await Ao(p,N,L.cssStyle?L.cssStyle:t.labelStyle,!0,!0),_=I.getBBox();if(Gr(Ae())){let A=I.children[0],M=et(I);_=A.getBoundingClientRect(),M.attr("width",_.width),M.attr("height",_.height)}_.width>d&&(d=_.width),f+=_.height+n,w.push(I)}),f+=i,g){let R=(d-x.width)/2;et(v).attr("transform","translate( "+(-1*d/2+R)+", "+-1*f/2+")"),m=x.height+n}let S=(d-k.width)/2;return et(T).attr("transform","translate( "+(-1*d/2+S)+", "+(-1*f/2+m)+")"),m+=k.height+n,u.attr("class","divider").attr("x1",-d/2-r).attr("x2",d/2+r).attr("y1",-f/2-r+i+m).attr("y2",-f/2-r+i+m),m+=i,C.forEach(R=>{et(R).attr("transform","translate( "+-d/2+", "+(-1*f/2+m+i/2)+")");let L=R?.getBBox();m+=(L?.height??0)+n}),m+=i,h.attr("class","divider").attr("x1",-d/2-r).attr("x2",d/2+r).attr("y1",-f/2-r+i+m).attr("y2",-f/2-r+i+m),m+=i,w.forEach(R=>{et(R).attr("transform","translate( "+-d/2+", "+(-1*f/2+m)+")");let L=R?.getBBox();m+=(L?.height??0)+n}),l.attr("style",t.style).attr("class","outer title-state").attr("x",-d/2-r).attr("y",-(f/2)-r).attr("width",d+t.padding).attr("height",f+t.padding),mi(t,l),t.intersect=function(R){return ti.rect(t,R)},s},"class_box"),OOe={rhombus:NOe,composite:S7t,question:NOe,rect:k7t,labelRect:E7t,rectWithTitle:A7t,choice:p7t,circle:_7t,doublecircle:L7t,stadium:R7t,hexagon:m7t,block_arrow:g7t,rect_left_inv_arrow:y7t,lean_right:v7t,lean_left:x7t,trapezoid:b7t,inv_trapezoid:T7t,rect_right_inv_arrow:C7t,cylinder:w7t,start:I7t,end:M7t,note:DOe,subroutine:D7t,fork:POe,join:POe,class_box:N7t},rD={},Mj=o(async(e,t,r)=>{let n,i;if(t.link){let a;Ae().securityLevel==="sandbox"?a="_top":t.linkTarget&&(a=t.linkTarget||"_blank"),n=e.insert("svg:a").attr("xlink:href",t.link).attr("target",a),i=await OOe[t.shape](n,t,r)}else i=await OOe[t.shape](e,t,r),n=i;return t.tooltip&&i.attr("title",t.tooltip),t.class&&i.attr("class","node default "+t.class),rD[t.id]=n,t.haveCallback&&rD[t.id].attr("class",rD[t.id].attr("class")+" clickable"),n},"insertNode"),BOe=o(e=>{let t=rD[e.id];Z.trace("Transforming node",e.diff,e,"translate("+(e.x-e.width/2-5)+", "+e.width/2+")");let r=8,n=e.diff||0;return e.clusterNode?t.attr("transform","translate("+(e.x+n-e.width/2)+", "+(e.y-e.height/2-r)+")"):t.attr("transform","translate("+e.x+", "+e.y+")"),n},"positionNode")});function FOe(e,t,r=!1){let n=e,i="default";(n?.classes?.length||0)>0&&(i=(n?.classes??[]).join(" ")),i=i+" flowchart-label";let a=0,s="",l;switch(n.type){case"round":a=5,s="rect";break;case"composite":a=0,s="composite",l=0;break;case"square":s="rect";break;case"diamond":s="question";break;case"hexagon":s="hexagon";break;case"block_arrow":s="block_arrow";break;case"odd":s="rect_left_inv_arrow";break;case"lean_right":s="lean_right";break;case"lean_left":s="lean_left";break;case"trapezoid":s="trapezoid";break;case"inv_trapezoid":s="inv_trapezoid";break;case"rect_left_inv_arrow":s="rect_left_inv_arrow";break;case"circle":s="circle";break;case"ellipse":s="ellipse";break;case"stadium":s="stadium";break;case"subroutine":s="subroutine";break;case"cylinder":s="cylinder";break;case"group":s="rect";break;case"doublecircle":s="doublecircle";break;default:s="rect"}let u=uP(n?.styles??[]),h=n.label,d=n.size??{width:0,height:0,x:0,y:0},f=t.getDiagramId();return{labelStyle:u.labelStyle,shape:s,labelText:h,rx:a,ry:a,class:i,style:u.style,id:n.id,domId:f?`${f}-${n.id}`:n.id,directions:n.directions,width:d.width,height:d.height,x:d.x,y:d.y,positioned:r,intersect:void 0,type:n.type,padding:l??_t()?.block?.padding??0,widthInColumns:n.widthInColumns??1}}async function P7t(e,t,r){let n=FOe(t,r,!1);if(n.type==="group")return;let i=_t(),a=await Mj(e,n,{config:i}),s=a.node().getBBox(),l=r.getBlock(n.id);l.size={width:s.width,height:s.height,x:0,y:0,node:a},r.setBlock(l),a.remove()}async function O7t(e,t,r){let n=FOe(t,r,!0);if(r.getBlock(n.id).type!=="space"){let a=_t();await Mj(e,n,{config:a}),t.intersect=n?.intersect,BOe(n)}}async function Nj(e,t,r,n){for(let i of t)await n(e,i,r),i.children&&await Nj(e,i.children,r,n)}async function zOe(e,t,r){await Nj(e,t,r,P7t)}async function GOe(e,t,r){await Nj(e,t,r,O7t)}async function VOe(e,t,r,n,i){let a=new on({multigraph:!0,compound:!0});a.setGraph({rankdir:"TB",nodesep:10,ranksep:10,marginx:8,marginy:8});for(let s of r)s.size&&a.setNode(s.id,{width:s.size.width,height:s.size.height,intersect:s.intersect});for(let s of t)if(s.start&&s.end){let l=n.getBlock(s.start),u=n.getBlock(s.end);if(l?.size&&u?.size){let h=l.size,d=u.size,f=[{x:h.x,y:h.y},{x:h.x+(d.x-h.x)/2,y:h.y+(d.y-h.y)/2},{x:d.x,y:d.y}],p=i?`${i}-${s.id}`:s.id,m=s.thickness==="thick"?"edge-thickness-thick":"edge-thickness-normal",g=s.pattern==="dotted"?"edge-pattern-dotted":"edge-pattern-solid",y=`${m} ${g} flowchart-link LS-a1 LE-b1`;gOe(e,{v:s.start,w:s.end,name:p},{...s,id:p,arrowTypeEnd:s.arrowTypeEnd,arrowTypeStart:s.arrowTypeStart,points:f,classes:y},void 0,"block",a,i),s.label&&(await pOe(e,{...s,label:s.label,labelStyle:"stroke: #333; stroke-width: 1.5px;fill:none;",arrowTypeEnd:s.arrowTypeEnd,arrowTypeStart:s.arrowTypeStart,points:f,classes:y}),mOe({...s,x:f[1].x,y:f[1].y},{originalPath:f}))}}}var WOe=F(()=>{"use strict";qo();ur();yOe();$Oe();Qt();o(FOe,"getNodeFromBlock");o(P7t,"calculateBlockSize");o(O7t,"insertBlockPositioned");o(Nj,"performOperations");o(zOe,"calculateBlockSizes");o(GOe,"insertBlocks");o(VOe,"insertEdges")});var B7t,$7t,qOe,HOe=F(()=>{"use strict";$r();ur();iOe();vt();$n();cOe();WOe();B7t=o(function(e,t){return t.db.getClasses()},"getClasses"),$7t=o(async function(e,t,r,n){let{securityLevel:i,block:a}=_t(),s=n.db;s.setDiagramId(t);let l;i==="sandbox"&&(l=et("#i"+t));let u=i==="sandbox"?et(l.nodes()[0].contentDocument.body):et("body"),h=i==="sandbox"?u.select(`[id="${t}"]`):et(`[id="${t}"]`);nOe(h,["point","circle","cross"],n.type,t);let f=s.getBlocks(),p=s.getBlocksFlat(),m=s.getEdges(),g=h.insert("g").attr("class","block");await zOe(g,f,s);let y=lOe(s);if(await GOe(g,f,s),await VOe(g,m,p,s,t),y){let v=y,x=Math.max(1,Math.round(.125*(v.width/v.height))),b=v.height+x+10,T=v.width+10,{useMaxWidth:k}=a;Wr(h,b,T,!!k),Z.debug("Here Bounds",y,v),h.attr("viewBox",`${v.x-5} ${v.y-5} ${v.width+10} ${v.height+10}`)}},"draw"),qOe={draw:$7t,getClasses:B7t}});var UOe={};ir(UOe,{diagram:()=>F7t});var F7t,YOe=F(()=>{"use strict";YPe();eOe();rOe();HOe();F7t={parser:UPe,db:JPe,renderer:qOe,styles:tOe}});function H7t(e){return e.some(t=>JOe.test(t))}function U7t(e){for(let t of e){let r=e9e.exec(t);if(r?.index&&r.index>0)return r.index}return 4}function t9e(e,t){return e.replace(/\bline\s+(\d+)\b/gi,(r,n)=>{let i=parseInt(n,10),a=t.get(i);return a?`line ${a}`:r})}function r9e(e){let t=e.split(`
+`),r=new Map,n=-1;for(let[u,h]of t.entries())if(h.trim()==="treeView-beta"){n=u;break}if(n===-1)return{text:e,lineMap:r};let i=[];for(let u=n+1;u<t.length;u++){let h=t[u];h.trim()===""||QOe.test(h)||ZOe.test(h)||KOe.test(h)||i.push(h.replace(/\t/g,"    "))}if(!H7t(i))return{text:e,lineMap:r};let a=U7t(i),s=[],l=0;for(let u=0;u<=n;u++)s.push(t[u]),l++,r.set(l,u+1);for(let u=n+1;u<t.length;u++){let h=t[u],d=h.trim(),f=u+1;if(d===""){s.push(h),l++,r.set(l,f);continue}if(QOe.test(h)){s.push(h),l++,r.set(l,f);continue}if(ZOe.test(h)){s.push(h),l++,r.set(l,f);continue}if(KOe.test(h))continue;let p=h.replace(/\t/g,"    "),m=e9e.exec(p);if(m?.index!==void 0){let g=m.index,y=Math.round(g/a)+1,v=g+1;for(;v<p.length&&W7t.test(p[v]);)v++;for(;v<p.length&&p[v]===" ";)v++;let x=p.slice(v).trimEnd();if(!x)throw new Error(`Line ${f}: Empty node \u2014 expected a filename or directory name after the box-drawing prefix`);let b=q7t.repeat(y);s.push(b+x),l++,r.set(l,f)}else{if(/^[\s─━│┃└┗├┣]+$/.test(p))continue;if(JOe.test(p))s.push(h),l++,r.set(l,f);else{if(/^\s+/.test(p))throw new Error(`Line ${f}: Unexpected indentation without box-drawing characters. In box-drawing format, use \u251C\u2500\u2500 or \u2514\u2500\u2500 prefixes for indented nodes.`);s.push(h),l++,r.set(l,f)}}}return{text:s.join(`
+`),lineMap:r}}var JOe,e9e,W7t,KOe,ZOe,QOe,q7t,n9e=F(()=>{"use strict";JOe=/[─━│┃└┗├┣]/,e9e=/[└┗├┣]/,W7t=/[─━]/,KOe=/^[\s│┃]+$/,ZOe=/^\s*(title[\t ]|accTitle[\t ]*:|accDescr[\t ]*[:{])/,QOe=/^\s*%%/,q7t="    ";o(H7t,"isBoxDrawingFormat");o(U7t,"inferSegmentWidth");o(t9e,"remapErrorLines");o(r9e,"preprocessBoxDrawing")});var Uu,Y7t,j7t,X7t,K7t,Z7t,Q7t,J7t,Zw,Pj=F(()=>{"use strict";ur();Wi();Qt();J_();Nn();Uu=new Cp(()=>({cnt:1,stack:[{id:0,level:-1,name:"/",nodeType:"directory",children:[]}]})),Y7t=o(()=>{Uu.reset(),yr()},"clear"),j7t=o(()=>Uu.records.stack[0],"getRoot"),X7t=o(()=>Uu.records.cnt,"getCount"),K7t=cr.treeView,Z7t=o(()=>qr(K7t,_t().treeView),"getConfig"),Q7t=o((e,t,r,n,i,a)=>{for(;e<=Uu.records.stack[Uu.records.stack.length-1].level;)Uu.records.stack.pop();let s={id:Uu.records.cnt++,level:e,name:t,nodeType:r,icon:i,cssClass:n,description:a,children:[]};Uu.records.stack[Uu.records.stack.length-1].children.push(s),Uu.records.stack.push(s)},"addNode"),J7t={clear:Y7t,addNode:Q7t,getRoot:j7t,getCount:X7t,getConfig:Z7t,getAccTitle:Ar,getAccDescription:_r,getDiagramTitle:Lr,setAccDescription:Rr,setAccTitle:kr,setDiagramTitle:Or},Zw=J7t});var e8t,i9e,a9e=F(()=>{"use strict";Xa();ur();vt();Vr();Hs();n9e();Pj();e8t=o(e=>{Gn(e,Zw);for(let t of e.nodes){let r=typeof t.indent=="number"?t.indent:0,n=t.name,i=n.endsWith("/");i&&(n=n.slice(0,-1));let a=i?"directory":"file",s=t.classAnnotation||void 0,l=t.iconAnnotation,u=l!==void 0?l||"none":void 0,h=t.descAnnotation||void 0,d=h?mr(h,_t()):void 0;Zw.addNode(r,n,a,s,u,d)}},"populate"),i9e={parse:o(async e=>{let{text:t,lineMap:r}=r9e(e);try{let n=await Si("treeView",t);Z.debug(n),e8t(n)}catch(n){throw r.size>0&&n instanceof Error&&(n.message=t9e(n.message,r)),n}},"parse")}});function t8t(e,t){let r=t?.filenameIcons?.[e];if(r)return r;let n=e.lastIndexOf(".");if(n>0){let i=e.substring(n).toLowerCase(),a=t?.extensionIcons;return a?.[i]??a?.[i.slice(1)]}}function s9e(e,t){return e.includes(":")?e:e in px.icons||!t?`${px.prefix}:${e}`:`${t}:${e}`}function Oj(e,t){if(e.icon!=="none"){if(e.icon)return s9e(e.icon,t.defaultIconPack);if(t.showIcons){if(e.nodeType==="file"){let r=t8t(e.name,t);if(r==="none")return;if(r)return s9e(r,t.defaultIconPack)}return`${px.prefix}:${e.nodeType==="directory"?"folder":"file"}`}}}var px,o9e=F(()=>{"use strict";px={prefix:"mermaid-treeview",height:24,width:24,icons:{folder:{body:'<path fill="currentColor" d="M10.59 4.59A2 2 0 0 0 9.17 4H4a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2h-7.17z"/>'},file:{body:'<path fill="currentColor" fill-rule="evenodd" d="M6 2a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8.83a2 2 0 0 0-.59-1.42l-4.82-4.82A2 2 0 0 0 13.17 2H6Zm7.5 1.9l4.6 4.6h-3.6a1 1 0 0 1-1-1V3.9Z" clip-rule="evenodd"/>'}}};o(t8t,"detectIcon");o(s9e,"qualifyIcon");o(Oj,"getNodeIcon")});var Bj,r8t,n8t,c9e,i8t,a8t,l9e,s8t,o8t,l8t,u9e,h9e=F(()=>{"use strict";vt();Vl();Ka();$n();o9e();ty([{name:px.prefix,icons:px}]);Bj=14,r8t=4,n8t=16,c9e=o((e,t)=>`tv-icon-${e}-${t.replace(/[^\w-]/g,"-")}`,"iconSymbolId"),i8t=o(async(e,t,r,n)=>{let i=new Set,a=o(u=>{let h=Oj(u,r);h&&i.add(h),u.children.forEach(a)},"collect");if(a(t),i.size===0)return;let s=await Promise.all([...i].map(async u=>({icon:u,svg:await ts(u,{height:Bj,width:Bj})}))),l=e.append("defs");for(let{icon:u,svg:h}of s)l.append("g").attr("id",c9e(n,u)).html(h)},"injectIconDefs"),a8t=o((e,t,r,n,i,a)=>{let s=n.append("g"),l="treeView-node-label";r.nodeType==="directory"&&(l+=" treeView-node-dir"),r.cssClass&&(l+=` ${r.cssClass}`);let u=Bj+r8t,h=Oj(r,i),d=h!==void 0;h&&s.append("use").attr("xlink:href",`#${c9e(a,h)}`).attr("x",e+i.paddingX).attr("y",t+i.paddingY).attr("class","treeView-node-icon");let f=s.append("text").text(r.name).attr("dominant-baseline","middle").attr("class",l),{height:p,width:m}=f.node().getBBox(),g=p+i.paddingY*2,y=e+i.paddingX+(d?u:0);f.attr("x",y),f.attr("y",t+g/2);let v=y+m,x=m+i.paddingX*2+(d?u:0);return r.BBox={x:e,y:t,width:x,height:g},r.cssClass?.split(/\s+/).includes("highlight")&&s.insert("rect",":first-child").attr("x",e).attr("y",t+1).attr("width",0).attr("height",g-2).attr("rx",3).attr("class","treeView-highlight-bg"),{node:r,nodeGroup:s,labelRightEdge:v,centerY:t+g/2}},"positionLabel"),l9e=o((e,t,r,n,i,a)=>e.append("line").attr("x1",t).attr("y1",r).attr("x2",n).attr("y2",i).attr("stroke-width",a).attr("class","treeView-node-line"),"positionLine"),s8t=o((e,t,r,n)=>{let i=0,a=0,s=[],l=o((d,f,p,m)=>{let g=m*(p.rowIndent+p.paddingX),y=a8t(g,i,f,d,p,n);s.push(y);let{height:v,width:x}=f.BBox;l9e(d,g-p.rowIndent,i+v/2,g,i+v/2,p.lineThickness),a=Math.max(a,g+x),i+=v},"drawNode"),u=o((d,f=0)=>{l(e,d,r,f),d.children.forEach(y=>{u(y,f+1)});let{x:p,y:m,height:g}=d.BBox;if(d.children.length){let{y,height:v}=d.children[d.children.length-1].BBox;l9e(e,p+r.paddingX,m+g,p+r.paddingX,y+v/2+r.lineThickness/2,r.lineThickness)}},"processNode");u(t);let h=s.filter(d=>d.node.description);if(h.length>0){let f=Math.max(...s.map(p=>p.labelRightEdge))+n8t;for(let p of h){let g=p.nodeGroup.append("text").text(p.node.description).attr("dominant-baseline","middle").attr("class","treeView-node-description").attr("x",f).attr("y",p.centerY).node().getBBox();a=Math.max(a,f+g.width+r.paddingX)}}for(let d of s)if(d.node.cssClass?.split(/\s+/).includes("highlight")){let f=d.nodeGroup.select(".treeView-highlight-bg");if(!f.empty()){let p=a-d.node.BBox.x+8;f.attr("width",p),a=Math.max(a,d.node.BBox.x+p+2)}}return{totalHeight:i,totalWidth:a}},"drawTree"),o8t=o(async(e,t,r,n)=>{Z.debug(`Rendering treeView diagram
+`+e);let i=n.db,a=i.getRoot(),s=i.getConfig(),l=xn(t);await i8t(l,a,s,t);let u=l.append("g");u.attr("class","tree-view");let{totalHeight:h,totalWidth:d}=s8t(u,a,s,t);l.attr("viewBox",`-${s.lineThickness/2} 0 ${d} ${h}`),Wr(l,h,d,s.useMaxWidth)},"draw"),l8t={draw:o8t},u9e=l8t});var c8t,u8t,d9e,f9e=F(()=>{"use strict";Qt();c8t={labelFontSize:"16px",labelColor:"black",lineColor:"black",iconColor:"#546e7a",descriptionColor:"#6a9955",highlightBg:"rgba(255, 193, 7, 0.15)",highlightStroke:"#ffc107"},u8t=o(({treeView:e})=>{let{labelFontSize:t,labelColor:r,lineColor:n,iconColor:i,descriptionColor:a,highlightBg:s,highlightStroke:l}=qr(c8t,e);return`
     .treeView-node-label {
         font-size: ${t};
         fill: ${r};
+        white-space: pre;
+    }
+    .treeView-node-dir {
+        font-weight: bold;
     }
     .treeView-node-line {
-        stroke: ${i};
+        stroke: ${n};
     }
-    `},"styles"),cRe=L3t});var hRe={};xr(hRe,{diagram:()=>M3t});var M3t,dRe=z(()=>{"use strict";aRe();Oq();lRe();uRe();M3t={db:sC,renderer:oRe,parser:nRe,styles:cRe}});var Pq,Bq,oC,mRe,Fq,za,uu,lC,gRe,P3t,cC,yRe,vRe,xRe,bRe,TRe,S_,Nf,E_=z(()=>{"use strict";Pq={L:"left",R:"right",T:"top",B:"bottom"},Bq={L:o(e=>`${e},${e/2} 0,${e} 0,0`,"L"),R:o(e=>`0,${e/2} ${e},0 ${e},${e}`,"R"),T:o(e=>`0,0 ${e},0 ${e/2},${e}`,"T"),B:o(e=>`${e/2},0 ${e},${e} 0,${e}`,"B")},oC={L:o((e,t)=>e-t+2,"L"),R:o((e,t)=>e-2,"R"),T:o((e,t)=>e-t+2,"T"),B:o((e,t)=>e-2,"B")},mRe=o(function(e){return za(e)?e==="L"?"R":"L":e==="T"?"B":"T"},"getOppositeArchitectureDirection"),Fq=o(function(e){let t=e;return t==="L"||t==="R"||t==="T"||t==="B"},"isArchitectureDirection"),za=o(function(e){let t=e;return t==="L"||t==="R"},"isArchitectureDirectionX"),uu=o(function(e){let t=e;return t==="T"||t==="B"},"isArchitectureDirectionY"),lC=o(function(e,t){let r=za(e)&&uu(t),i=uu(e)&&za(t);return r||i},"isArchitectureDirectionXY"),gRe=o(function(e){let t=e[0],r=e[1],i=za(t)&&uu(r),n=uu(t)&&za(r);return i||n},"isArchitecturePairXY"),P3t=o(function(e){return e!=="LL"&&e!=="RR"&&e!=="TT"&&e!=="BB"},"isValidArchitectureDirectionPair"),cC=o(function(e,t){let r=`${e}${t}`;return P3t(r)?r:void 0},"getArchitectureDirectionPair"),yRe=o(function([e,t],r){let i=r[0],n=r[1];return za(i)?uu(n)?[e+(i==="L"?-1:1),t+(n==="T"?1:-1)]:[e+(i==="L"?-1:1),t]:za(n)?[e+(n==="L"?1:-1),t+(i==="T"?1:-1)]:[e,t+(i==="T"?1:-1)]},"shiftPositionByArchitectureDirectionPair"),vRe=o(function(e){return e==="LT"||e==="TL"?[1,1]:e==="BL"||e==="LB"?[1,-1]:e==="BR"||e==="RB"?[-1,-1]:[-1,1]},"getArchitectureDirectionXYFactors"),xRe=o(function(e,t){return lC(e,t)?"bend":za(e)?"horizontal":"vertical"},"getArchitectureDirectionAlignment"),bRe=o(function(e){return e.type==="service"},"isArchitectureService"),TRe=o(function(e){return e.type==="junction"},"isArchitectureJunction"),S_=o(e=>e.data(),"edgeData"),Nf=o(e=>e.data(),"nodeData")});var B3t,Iy,$q=z(()=>{"use strict";br();Bn();Xt();Ci();E_();B3t=or.architecture,Iy=class{constructor(){this.nodes={};this.groups={};this.edges=[];this.registeredIds={};this.elements={};this.diagramId="";this.setAccTitle=Cr;this.getAccTitle=kr;this.setDiagramTitle=Ar;this.getDiagramTitle=Er;this.getAccDescription=Sr;this.setAccDescription=wr;this.clear()}static{o(this,"ArchitectureDB")}setDiagramId(t){this.diagramId=t}getDiagramId(){return this.diagramId}clear(){this.nodes={},this.groups={},this.edges=[],this.registeredIds={},this.dataStructures=void 0,this.elements={},this.diagramId="",gr()}addService({id:t,icon:r,in:i,title:n,iconText:a}){if(this.registeredIds[t]!==void 0)throw new Error(`The service id [${t}] is already in use by another ${this.registeredIds[t]}`);if(i!==void 0){if(t===i)throw new Error(`The service [${t}] cannot be placed within itself`);if(this.registeredIds[i]===void 0)throw new Error(`The service [${t}]'s parent does not exist. Please make sure the parent is created before this service`);if(this.registeredIds[i]==="node")throw new Error(`The service [${t}]'s parent is not a group`)}this.registeredIds[t]="node",this.nodes[t]={id:t,type:"service",icon:r,iconText:a,title:n,edges:[],in:i}}getServices(){return Object.values(this.nodes).filter(bRe)}addJunction({id:t,in:r}){if(this.registeredIds[t]!==void 0)throw new Error(`The junction id [${t}] is already in use by another ${this.registeredIds[t]}`);if(r!==void 0){if(t===r)throw new Error(`The junction [${t}] cannot be placed within itself`);if(this.registeredIds[r]===void 0)throw new Error(`The junction [${t}]'s parent does not exist. Please make sure the parent is created before this junction`);if(this.registeredIds[r]==="node")throw new Error(`The junction [${t}]'s parent is not a group`)}this.registeredIds[t]="node",this.nodes[t]={id:t,type:"junction",edges:[],in:r}}getJunctions(){return Object.values(this.nodes).filter(TRe)}getNodes(){return Object.values(this.nodes)}getNode(t){return this.nodes[t]??null}addGroup({id:t,icon:r,in:i,title:n}){if(this.registeredIds?.[t]!==void 0)throw new Error(`The group id [${t}] is already in use by another ${this.registeredIds[t]}`);if(i!==void 0){if(t===i)throw new Error(`The group [${t}] cannot be placed within itself`);if(this.registeredIds?.[i]===void 0)throw new Error(`The group [${t}]'s parent does not exist. Please make sure the parent is created before this group`);if(this.registeredIds?.[i]==="node")throw new Error(`The group [${t}]'s parent is not a group`)}this.registeredIds[t]="group",this.groups[t]={id:t,icon:r,title:n,in:i}}getGroups(){return Object.values(this.groups)}addEdge({lhsId:t,rhsId:r,lhsDir:i,rhsDir:n,lhsInto:a,rhsInto:s,lhsGroup:l,rhsGroup:u,title:h}){if(!Fq(i))throw new Error(`Invalid direction given for left hand side of edge ${t}--${r}. Expected (L,R,T,B) got ${String(i)}`);if(!Fq(n))throw new Error(`Invalid direction given for right hand side of edge ${t}--${r}. Expected (L,R,T,B) got ${String(n)}`);if(this.nodes[t]===void 0&&this.groups[t]===void 0)throw new Error(`The left-hand id [${t}] does not yet exist. Please create the service/group before declaring an edge to it.`);if(this.nodes[r]===void 0&&this.groups[r]===void 0)throw new Error(`The right-hand id [${r}] does not yet exist. Please create the service/group before declaring an edge to it.`);let d=this.nodes[t].in,f=this.nodes[r].in;if(l&&d&&f&&d==f)throw new Error(`The left-hand id [${t}] is modified to traverse the group boundary, but the edge does not pass through two groups.`);if(u&&d&&f&&d==f)throw new Error(`The right-hand id [${r}] is modified to traverse the group boundary, but the edge does not pass through two groups.`);let p={lhsId:t,lhsDir:i,lhsInto:a,lhsGroup:l,rhsId:r,rhsDir:n,rhsInto:s,rhsGroup:u,title:h};this.edges.push(p),this.nodes[t]&&this.nodes[r]&&(this.nodes[t].edges.push(this.edges[this.edges.length-1]),this.nodes[r].edges.push(this.edges[this.edges.length-1]))}getEdges(){return this.edges}getDataStructures(){if(this.dataStructures===void 0){let t={},r=Object.entries(this.nodes).reduce((u,[h,d])=>(u[h]=d.edges.reduce((f,p)=>{let m=this.getNode(p.lhsId)?.in,g=this.getNode(p.rhsId)?.in;if(m&&g&&m!==g){let y=xRe(p.lhsDir,p.rhsDir);y!=="bend"&&(t[m]??={},t[m][g]=y,t[g]??={},t[g][m]=y)}if(p.lhsId===h){let y=cC(p.lhsDir,p.rhsDir);y&&(f[y]=p.rhsId)}else{let y=cC(p.rhsDir,p.lhsDir);y&&(f[y]=p.lhsId)}return f},{}),u),{}),i=Object.keys(r)[0],n={[i]:1},a=Object.keys(r).reduce((u,h)=>h===i?u:{...u,[h]:1},{}),s=o(u=>{let h={[u]:[0,0]},d=[u];for(;d.length>0;){let f=d.shift();if(f){n[f]=1,delete a[f];let p=r[f],[m,g]=h[f];Object.entries(p).forEach(([y,v])=>{n[v]||(h[v]=yRe([m,g],y),d.push(v))})}}return h},"BFS"),l=[s(i)];for(;Object.keys(a).length>0;)l.push(s(Object.keys(a)[0]));this.dataStructures={adjList:r,spatialMaps:l,groupAlignments:t}}return this.dataStructures}setElementForId(t,r){this.elements[t]=r}getElementById(t){return this.elements[t]}getConfig(){return Gr({...B3t,...Nt().architecture})}getConfigField(t){return this.getConfig()[t]}}});var F3t,zq,CRe=z(()=>{"use strict";sl();St();au();$q();F3t=o((e,t)=>{ca(e,t),e.groups.map(r=>t.addGroup(r)),e.services.map(r=>t.addService({...r,type:"service"})),e.junctions.map(r=>t.addJunction({...r,type:"junction"})),e.edges.map(r=>t.addEdge(r))},"populateDb"),zq={parser:{yy:void 0},parse:o(async e=>{let t=await bn("architecture",e);Z.debug(t);let r=zq.parser?.yy;if(!(r instanceof Iy))throw new Error("parser.parser?.yy was not a ArchitectureDB. This is due to a bug within Mermaid, please report this issue at https://github.com/mermaid-js/mermaid/issues.");F3t(t,r)},"parse")}});var $3t,kRe,wRe=z(()=>{"use strict";$3t=o(e=>`
+    .treeView-node-icon {
+        color: ${i};
+    }
+    .treeView-node-description {
+        font-size: ${t};
+        fill: ${a};
+        font-style: italic;
+        white-space: pre;
+    }
+    .treeView-highlight-bg {
+        fill: ${s};
+        stroke: ${l};
+        stroke-width: 1;
+    }
+    `},"styles"),d9e=u8t});var p9e={};ir(p9e,{diagram:()=>h8t});var h8t,m9e=F(()=>{"use strict";a9e();Pj();h9e();f9e();h8t={db:Zw,renderer:u9e,parser:i9e,styles:d9e}});var $j,Fj,Qw,v9e,zj,ms,Yu,Jw,x9e,m8t,ek,b9e,T9e,C9e,w9e,k9e,nD,Dp,iD=F(()=>{"use strict";$j={L:"left",R:"right",T:"top",B:"bottom"},Fj={L:o(e=>`${e},${e/2} 0,${e} 0,0`,"L"),R:o(e=>`0,${e/2} ${e},0 ${e},${e}`,"R"),T:o(e=>`0,0 ${e},0 ${e/2},${e}`,"T"),B:o(e=>`${e/2},0 ${e},${e} 0,${e}`,"B")},Qw={L:o((e,t)=>e-t+2,"L"),R:o((e,t)=>e-2,"R"),T:o((e,t)=>e-t+2,"T"),B:o((e,t)=>e-2,"B")},v9e=o(function(e){return ms(e)?e==="L"?"R":"L":e==="T"?"B":"T"},"getOppositeArchitectureDirection"),zj=o(function(e){let t=e;return t==="L"||t==="R"||t==="T"||t==="B"},"isArchitectureDirection"),ms=o(function(e){let t=e;return t==="L"||t==="R"},"isArchitectureDirectionX"),Yu=o(function(e){let t=e;return t==="T"||t==="B"},"isArchitectureDirectionY"),Jw=o(function(e,t){let r=ms(e)&&Yu(t),n=Yu(e)&&ms(t);return r||n},"isArchitectureDirectionXY"),x9e=o(function(e){let t=e[0],r=e[1],n=ms(t)&&Yu(r),i=Yu(t)&&ms(r);return n||i},"isArchitecturePairXY"),m8t=o(function(e){return e!=="LL"&&e!=="RR"&&e!=="TT"&&e!=="BB"},"isValidArchitectureDirectionPair"),ek=o(function(e,t){let r=`${e}${t}`;return m8t(r)?r:void 0},"getArchitectureDirectionPair"),b9e=o(function([e,t],r){let n=r[0],i=r[1];return ms(n)?Yu(i)?[e+(n==="L"?-1:1),t+(i==="T"?1:-1)]:[e+(n==="L"?-1:1),t]:ms(i)?[e+(i==="L"?1:-1),t+(n==="T"?1:-1)]:[e,t+(n==="T"?1:-1)]},"shiftPositionByArchitectureDirectionPair"),T9e=o(function(e){return e==="LT"||e==="TL"?[1,1]:e==="BL"||e==="LB"?[1,-1]:e==="BR"||e==="RB"?[-1,-1]:[-1,1]},"getArchitectureDirectionXYFactors"),C9e=o(function(e,t){return Jw(e,t)?"bend":ms(e)?"horizontal":"vertical"},"getArchitectureDirectionAlignment"),w9e=o(function(e){return e.type==="service"},"isArchitectureService"),k9e=o(function(e){return e.type==="junction"},"isArchitectureJunction"),nD=o(e=>e.data(),"edgeData"),Dp=o(e=>e.data(),"nodeData")});var g8t,mx,Gj=F(()=>{"use strict";ur();Wi();Qt();Nn();iD();g8t=cr.architecture,mx=class{constructor(){this.nodes={};this.groups={};this.edges=[];this.layoutHints=[];this.registeredIds={};this.elements={};this.diagramId="";this.setAccTitle=kr;this.getAccTitle=Ar;this.setDiagramTitle=Or;this.getDiagramTitle=Lr;this.getAccDescription=_r;this.setAccDescription=Rr;this.clear()}static{o(this,"ArchitectureDB")}setDiagramId(t){this.diagramId=t}getDiagramId(){return this.diagramId}clear(){this.nodes={},this.groups={},this.edges=[],this.layoutHints=[],this.registeredIds={},this.dataStructures=void 0,this.elements={},this.diagramId="",yr()}addService({id:t,icon:r,in:n,title:i,iconText:a}){if(this.registeredIds[t]!==void 0)throw new Error(`The service id [${t}] is already in use by another ${this.registeredIds[t]}`);if(n!==void 0){if(t===n)throw new Error(`The service [${t}] cannot be placed within itself`);if(this.registeredIds[n]===void 0)throw new Error(`The service [${t}]'s parent does not exist. Please make sure the parent is created before this service`);if(this.registeredIds[n]==="node")throw new Error(`The service [${t}]'s parent is not a group`)}this.registeredIds[t]="node",this.nodes[t]={id:t,type:"service",icon:r,iconText:a,title:i,edges:[],in:n}}getServices(){return Object.values(this.nodes).filter(w9e)}addJunction({id:t,in:r}){if(this.registeredIds[t]!==void 0)throw new Error(`The junction id [${t}] is already in use by another ${this.registeredIds[t]}`);if(r!==void 0){if(t===r)throw new Error(`The junction [${t}] cannot be placed within itself`);if(this.registeredIds[r]===void 0)throw new Error(`The junction [${t}]'s parent does not exist. Please make sure the parent is created before this junction`);if(this.registeredIds[r]==="node")throw new Error(`The junction [${t}]'s parent is not a group`)}this.registeredIds[t]="node",this.nodes[t]={id:t,type:"junction",edges:[],in:r}}getJunctions(){return Object.values(this.nodes).filter(k9e)}getNodes(){return Object.values(this.nodes)}getNode(t){return this.nodes[t]??null}addGroup({id:t,icon:r,in:n,title:i}){if(this.registeredIds?.[t]!==void 0)throw new Error(`The group id [${t}] is already in use by another ${this.registeredIds[t]}`);if(n!==void 0){if(t===n)throw new Error(`The group [${t}] cannot be placed within itself`);if(this.registeredIds?.[n]===void 0)throw new Error(`The group [${t}]'s parent does not exist. Please make sure the parent is created before this group`);if(this.registeredIds?.[n]==="node")throw new Error(`The group [${t}]'s parent is not a group`)}this.registeredIds[t]="group",this.groups[t]={id:t,icon:r,title:i,in:n}}getGroups(){return Object.values(this.groups)}addEdge({lhsId:t,rhsId:r,lhsDir:n,rhsDir:i,lhsInto:a,rhsInto:s,lhsGroup:l,rhsGroup:u,title:h}){if(!zj(n))throw new Error(`Invalid direction given for left hand side of edge ${t}--${r}. Expected (L,R,T,B) got ${String(n)}`);if(!zj(i))throw new Error(`Invalid direction given for right hand side of edge ${t}--${r}. Expected (L,R,T,B) got ${String(i)}`);if(this.nodes[t]===void 0&&this.groups[t]===void 0)throw new Error(`The left-hand id [${t}] does not yet exist. Please create the service/group before declaring an edge to it.`);if(this.nodes[r]===void 0&&this.groups[r]===void 0)throw new Error(`The right-hand id [${r}] does not yet exist. Please create the service/group before declaring an edge to it.`);let d=this.nodes[t].in,f=this.nodes[r].in;if(l&&d&&f&&d==f)throw new Error(`The left-hand id [${t}] is modified to traverse the group boundary, but the edge does not pass through two groups.`);if(u&&d&&f&&d==f)throw new Error(`The right-hand id [${r}] is modified to traverse the group boundary, but the edge does not pass through two groups.`);let p={lhsId:t,lhsDir:n,lhsInto:a,lhsGroup:l,rhsId:r,rhsDir:i,rhsInto:s,rhsGroup:u,title:h};this.edges.push(p),this.nodes[t]&&this.nodes[r]&&(this.nodes[t].edges.push(this.edges[this.edges.length-1]),this.nodes[r].edges.push(this.edges[this.edges.length-1]))}getEdges(){return this.edges}addLayoutHint(t){if(t.members.length<2)throw new Error(`An align directive requires at least two members; got ${t.members.length}`);let r=new Set;t.members.forEach(n=>{if(this.registeredIds[n]!=="node")throw new Error(`align ${t.direction} references [${n}], which is not a service or junction`);if(r.has(n))throw new Error(`align ${t.direction} lists [${n}] more than once`);r.add(n)}),this.layoutHints.push(t)}getLayoutHints(){return this.layoutHints}getDataStructures(){if(this.dataStructures===void 0){let t={},r=Object.entries(this.nodes).reduce((u,[h,d])=>(u[h]=d.edges.reduce((f,p)=>{let m=this.getNode(p.lhsId)?.in,g=this.getNode(p.rhsId)?.in;if(m&&g&&m!==g){let y=C9e(p.lhsDir,p.rhsDir);y!=="bend"&&(t[m]??={},t[m][g]=y,t[g]??={},t[g][m]=y)}if(p.lhsId===h){let y=ek(p.lhsDir,p.rhsDir);y&&(f[y]=p.rhsId)}else{let y=ek(p.rhsDir,p.lhsDir);y&&(f[y]=p.lhsId)}return f},{}),u),{}),n=Object.keys(r)[0],i={[n]:1},a=Object.keys(r).reduce((u,h)=>h===n?u:{...u,[h]:1},{}),s=o(u=>{let h={[u]:[0,0]},d=[u];for(;d.length>0;){let f=d.shift();if(f){i[f]=1,delete a[f];let p=r[f],[m,g]=h[f];Object.entries(p).forEach(([y,v])=>{i[v]||(h[v]=b9e([m,g],y),d.push(v))})}}return h},"BFS"),l=[s(n)];for(;Object.keys(a).length>0;)l.push(s(Object.keys(a)[0]));this.dataStructures={adjList:r,spatialMaps:l,groupAlignments:t}}return this.dataStructures}setElementForId(t,r){this.elements[t]=r}getElementById(t){return this.elements[t]}getConfig(){return qr({...g8t,..._t().architecture})}getConfigField(t){return this.getConfig()[t]}}});var y8t,Vj,S9e=F(()=>{"use strict";Xa();vt();Hs();Gj();y8t=o((e,t)=>{Gn(e,t),e.groups.map(r=>t.addGroup(r)),e.services.map(r=>t.addService({...r,type:"service"})),e.junctions.map(r=>t.addJunction({...r,type:"junction"})),e.edges.map(r=>t.addEdge(r)),e.alignments?.map(r=>t.addLayoutHint({direction:r.direction,members:[...r.members]}))},"populateDb"),Vj={parser:{yy:void 0},parse:o(async e=>{let t=await Si("architecture",e);Z.debug(t);let r=Vj.parser?.yy;if(!(r instanceof mx))throw new Error("parser.parser?.yy was not a ArchitectureDB. This is due to a bug within Mermaid, please report this issue at https://github.com/mermaid-js/mermaid/issues.");y8t(t,r)},"parse")}});var v8t,E9e,A9e=F(()=>{"use strict";v8t=o(e=>`
   .edge {
     stroke-width: ${e.archEdgeWidth};
     stroke: ${e.archEdgeColor};
@@ -3134,19 +3166,19 @@
     display: -webkit-box;
     -webkit-box-orient: vertical;
   }
-`,"getStyles"),kRe=$3t});var Vq=Js((uC,Gq)=>{"use strict";o((function(t,r){typeof uC=="object"&&typeof Gq=="object"?Gq.exports=r():typeof define=="function"&&define.amd?define([],r):typeof uC=="object"?uC.layoutBase=r():t.layoutBase=r()}),"webpackUniversalModuleDefinition")(uC,function(){return(function(e){var t={};function r(i){if(t[i])return t[i].exports;var n=t[i]={i,l:!1,exports:{}};return e[i].call(n.exports,n,n.exports,r),n.l=!0,n.exports}return o(r,"__webpack_require__"),r.m=e,r.c=t,r.i=function(i){return i},r.d=function(i,n,a){r.o(i,n)||Object.defineProperty(i,n,{configurable:!1,enumerable:!0,get:a})},r.n=function(i){var n=i&&i.__esModule?o(function(){return i.default},"getDefault"):o(function(){return i},"getModuleExports");return r.d(n,"a",n),n},r.o=function(i,n){return Object.prototype.hasOwnProperty.call(i,n)},r.p="",r(r.s=28)})([(function(e,t,r){"use strict";function i(){}o(i,"LayoutConstants"),i.QUALITY=1,i.DEFAULT_CREATE_BENDS_AS_NEEDED=!1,i.DEFAULT_INCREMENTAL=!1,i.DEFAULT_ANIMATION_ON_LAYOUT=!0,i.DEFAULT_ANIMATION_DURING_LAYOUT=!1,i.DEFAULT_ANIMATION_PERIOD=50,i.DEFAULT_UNIFORM_LEAF_NODE_SIZES=!1,i.DEFAULT_GRAPH_MARGIN=15,i.NODE_DIMENSIONS_INCLUDE_LABELS=!1,i.SIMPLE_NODE_SIZE=40,i.SIMPLE_NODE_HALF_SIZE=i.SIMPLE_NODE_SIZE/2,i.EMPTY_COMPOUND_NODE_SIZE=40,i.MIN_EDGE_LENGTH=1,i.WORLD_BOUNDARY=1e6,i.INITIAL_WORLD_BOUNDARY=i.WORLD_BOUNDARY/1e3,i.WORLD_CENTER_X=1200,i.WORLD_CENTER_Y=900,e.exports=i}),(function(e,t,r){"use strict";var i=r(2),n=r(8),a=r(9);function s(u,h,d){i.call(this,d),this.isOverlapingSourceAndTarget=!1,this.vGraphObject=d,this.bendpoints=[],this.source=u,this.target=h}o(s,"LEdge"),s.prototype=Object.create(i.prototype);for(var l in i)s[l]=i[l];s.prototype.getSource=function(){return this.source},s.prototype.getTarget=function(){return this.target},s.prototype.isInterGraph=function(){return this.isInterGraph},s.prototype.getLength=function(){return this.length},s.prototype.isOverlapingSourceAndTarget=function(){return this.isOverlapingSourceAndTarget},s.prototype.getBendpoints=function(){return this.bendpoints},s.prototype.getLca=function(){return this.lca},s.prototype.getSourceInLca=function(){return this.sourceInLca},s.prototype.getTargetInLca=function(){return this.targetInLca},s.prototype.getOtherEnd=function(u){if(this.source===u)return this.target;if(this.target===u)return this.source;throw"Node is not incident with this edge"},s.prototype.getOtherEndInGraph=function(u,h){for(var d=this.getOtherEnd(u),f=h.getGraphManager().getRoot();;){if(d.getOwner()==h)return d;if(d.getOwner()==f)break;d=d.getOwner().getParent()}return null},s.prototype.updateLength=function(){var u=new Array(4);this.isOverlapingSourceAndTarget=n.getIntersection(this.target.getRect(),this.source.getRect(),u),this.isOverlapingSourceAndTarget||(this.lengthX=u[0]-u[2],this.lengthY=u[1]-u[3],Math.abs(this.lengthX)<1&&(this.lengthX=a.sign(this.lengthX)),Math.abs(this.lengthY)<1&&(this.lengthY=a.sign(this.lengthY)),this.length=Math.sqrt(this.lengthX*this.lengthX+this.lengthY*this.lengthY))},s.prototype.updateLengthSimple=function(){this.lengthX=this.target.getCenterX()-this.source.getCenterX(),this.lengthY=this.target.getCenterY()-this.source.getCenterY(),Math.abs(this.lengthX)<1&&(this.lengthX=a.sign(this.lengthX)),Math.abs(this.lengthY)<1&&(this.lengthY=a.sign(this.lengthY)),this.length=Math.sqrt(this.lengthX*this.lengthX+this.lengthY*this.lengthY)},e.exports=s}),(function(e,t,r){"use strict";function i(n){this.vGraphObject=n}o(i,"LGraphObject"),e.exports=i}),(function(e,t,r){"use strict";var i=r(2),n=r(10),a=r(13),s=r(0),l=r(16),u=r(5);function h(f,p,m,g){m==null&&g==null&&(g=p),i.call(this,g),f.graphManager!=null&&(f=f.graphManager),this.estimatedSize=n.MIN_VALUE,this.inclusionTreeDepth=n.MAX_VALUE,this.vGraphObject=g,this.edges=[],this.graphManager=f,m!=null&&p!=null?this.rect=new a(p.x,p.y,m.width,m.height):this.rect=new a}o(h,"LNode"),h.prototype=Object.create(i.prototype);for(var d in i)h[d]=i[d];h.prototype.getEdges=function(){return this.edges},h.prototype.getChild=function(){return this.child},h.prototype.getOwner=function(){return this.owner},h.prototype.getWidth=function(){return this.rect.width},h.prototype.setWidth=function(f){this.rect.width=f},h.prototype.getHeight=function(){return this.rect.height},h.prototype.setHeight=function(f){this.rect.height=f},h.prototype.getCenterX=function(){return this.rect.x+this.rect.width/2},h.prototype.getCenterY=function(){return this.rect.y+this.rect.height/2},h.prototype.getCenter=function(){return new u(this.rect.x+this.rect.width/2,this.rect.y+this.rect.height/2)},h.prototype.getLocation=function(){return new u(this.rect.x,this.rect.y)},h.prototype.getRect=function(){return this.rect},h.prototype.getDiagonal=function(){return Math.sqrt(this.rect.width*this.rect.width+this.rect.height*this.rect.height)},h.prototype.getHalfTheDiagonal=function(){return Math.sqrt(this.rect.height*this.rect.height+this.rect.width*this.rect.width)/2},h.prototype.setRect=function(f,p){this.rect.x=f.x,this.rect.y=f.y,this.rect.width=p.width,this.rect.height=p.height},h.prototype.setCenter=function(f,p){this.rect.x=f-this.rect.width/2,this.rect.y=p-this.rect.height/2},h.prototype.setLocation=function(f,p){this.rect.x=f,this.rect.y=p},h.prototype.moveBy=function(f,p){this.rect.x+=f,this.rect.y+=p},h.prototype.getEdgeListToNode=function(f){var p=[],m,g=this;return g.edges.forEach(function(y){if(y.target==f){if(y.source!=g)throw"Incorrect edge source!";p.push(y)}}),p},h.prototype.getEdgesBetween=function(f){var p=[],m,g=this;return g.edges.forEach(function(y){if(!(y.source==g||y.target==g))throw"Incorrect edge source and/or target";(y.target==f||y.source==f)&&p.push(y)}),p},h.prototype.getNeighborsList=function(){var f=new Set,p=this;return p.edges.forEach(function(m){if(m.source==p)f.add(m.target);else{if(m.target!=p)throw"Incorrect incidency!";f.add(m.source)}}),f},h.prototype.withChildren=function(){var f=new Set,p,m;if(f.add(this),this.child!=null)for(var g=this.child.getNodes(),y=0;y<g.length;y++)p=g[y],m=p.withChildren(),m.forEach(function(v){f.add(v)});return f},h.prototype.getNoOfChildren=function(){var f=0,p;if(this.child==null)f=1;else for(var m=this.child.getNodes(),g=0;g<m.length;g++)p=m[g],f+=p.getNoOfChildren();return f==0&&(f=1),f},h.prototype.getEstimatedSize=function(){if(this.estimatedSize==n.MIN_VALUE)throw"assert failed";return this.estimatedSize},h.prototype.calcEstimatedSize=function(){return this.child==null?this.estimatedSize=(this.rect.width+this.rect.height)/2:(this.estimatedSize=this.child.calcEstimatedSize(),this.rect.width=this.estimatedSize,this.rect.height=this.estimatedSize,this.estimatedSize)},h.prototype.scatter=function(){var f,p,m=-s.INITIAL_WORLD_BOUNDARY,g=s.INITIAL_WORLD_BOUNDARY;f=s.WORLD_CENTER_X+l.nextDouble()*(g-m)+m;var y=-s.INITIAL_WORLD_BOUNDARY,v=s.INITIAL_WORLD_BOUNDARY;p=s.WORLD_CENTER_Y+l.nextDouble()*(v-y)+y,this.rect.x=f,this.rect.y=p},h.prototype.updateBounds=function(){if(this.getChild()==null)throw"assert failed";if(this.getChild().getNodes().length!=0){var f=this.getChild();if(f.updateBounds(!0),this.rect.x=f.getLeft(),this.rect.y=f.getTop(),this.setWidth(f.getRight()-f.getLeft()),this.setHeight(f.getBottom()-f.getTop()),s.NODE_DIMENSIONS_INCLUDE_LABELS){var p=f.getRight()-f.getLeft(),m=f.getBottom()-f.getTop();this.labelWidth&&(this.labelPosHorizontal=="left"?(this.rect.x-=this.labelWidth,this.setWidth(p+this.labelWidth)):this.labelPosHorizontal=="center"&&this.labelWidth>p?(this.rect.x-=(this.labelWidth-p)/2,this.setWidth(this.labelWidth)):this.labelPosHorizontal=="right"&&this.setWidth(p+this.labelWidth)),this.labelHeight&&(this.labelPosVertical=="top"?(this.rect.y-=this.labelHeight,this.setHeight(m+this.labelHeight)):this.labelPosVertical=="center"&&this.labelHeight>m?(this.rect.y-=(this.labelHeight-m)/2,this.setHeight(this.labelHeight)):this.labelPosVertical=="bottom"&&this.setHeight(m+this.labelHeight))}}},h.prototype.getInclusionTreeDepth=function(){if(this.inclusionTreeDepth==n.MAX_VALUE)throw"assert failed";return this.inclusionTreeDepth},h.prototype.transform=function(f){var p=this.rect.x;p>s.WORLD_BOUNDARY?p=s.WORLD_BOUNDARY:p<-s.WORLD_BOUNDARY&&(p=-s.WORLD_BOUNDARY);var m=this.rect.y;m>s.WORLD_BOUNDARY?m=s.WORLD_BOUNDARY:m<-s.WORLD_BOUNDARY&&(m=-s.WORLD_BOUNDARY);var g=new u(p,m),y=f.inverseTransformPoint(g);this.setLocation(y.x,y.y)},h.prototype.getLeft=function(){return this.rect.x},h.prototype.getRight=function(){return this.rect.x+this.rect.width},h.prototype.getTop=function(){return this.rect.y},h.prototype.getBottom=function(){return this.rect.y+this.rect.height},h.prototype.getParent=function(){return this.owner==null?null:this.owner.getParent()},e.exports=h}),(function(e,t,r){"use strict";var i=r(0);function n(){}o(n,"FDLayoutConstants");for(var a in i)n[a]=i[a];n.MAX_ITERATIONS=2500,n.DEFAULT_EDGE_LENGTH=50,n.DEFAULT_SPRING_STRENGTH=.45,n.DEFAULT_REPULSION_STRENGTH=4500,n.DEFAULT_GRAVITY_STRENGTH=.4,n.DEFAULT_COMPOUND_GRAVITY_STRENGTH=1,n.DEFAULT_GRAVITY_RANGE_FACTOR=3.8,n.DEFAULT_COMPOUND_GRAVITY_RANGE_FACTOR=1.5,n.DEFAULT_USE_SMART_IDEAL_EDGE_LENGTH_CALCULATION=!0,n.DEFAULT_USE_SMART_REPULSION_RANGE_CALCULATION=!0,n.DEFAULT_COOLING_FACTOR_INCREMENTAL=.3,n.COOLING_ADAPTATION_FACTOR=.33,n.ADAPTATION_LOWER_NODE_LIMIT=1e3,n.ADAPTATION_UPPER_NODE_LIMIT=5e3,n.MAX_NODE_DISPLACEMENT_INCREMENTAL=100,n.MAX_NODE_DISPLACEMENT=n.MAX_NODE_DISPLACEMENT_INCREMENTAL*3,n.MIN_REPULSION_DIST=n.DEFAULT_EDGE_LENGTH/10,n.CONVERGENCE_CHECK_PERIOD=100,n.PER_LEVEL_IDEAL_EDGE_LENGTH_FACTOR=.1,n.MIN_EDGE_LENGTH=1,n.GRID_CALCULATION_CHECK_PERIOD=10,e.exports=n}),(function(e,t,r){"use strict";function i(n,a){n==null&&a==null?(this.x=0,this.y=0):(this.x=n,this.y=a)}o(i,"PointD"),i.prototype.getX=function(){return this.x},i.prototype.getY=function(){return this.y},i.prototype.setX=function(n){this.x=n},i.prototype.setY=function(n){this.y=n},i.prototype.getDifference=function(n){return new DimensionD(this.x-n.x,this.y-n.y)},i.prototype.getCopy=function(){return new i(this.x,this.y)},i.prototype.translate=function(n){return this.x+=n.width,this.y+=n.height,this},e.exports=i}),(function(e,t,r){"use strict";var i=r(2),n=r(10),a=r(0),s=r(7),l=r(3),u=r(1),h=r(13),d=r(12),f=r(11);function p(g,y,v){i.call(this,v),this.estimatedSize=n.MIN_VALUE,this.margin=a.DEFAULT_GRAPH_MARGIN,this.edges=[],this.nodes=[],this.isConnected=!1,this.parent=g,y!=null&&y instanceof s?this.graphManager=y:y!=null&&y instanceof Layout&&(this.graphManager=y.graphManager)}o(p,"LGraph"),p.prototype=Object.create(i.prototype);for(var m in i)p[m]=i[m];p.prototype.getNodes=function(){return this.nodes},p.prototype.getEdges=function(){return this.edges},p.prototype.getGraphManager=function(){return this.graphManager},p.prototype.getParent=function(){return this.parent},p.prototype.getLeft=function(){return this.left},p.prototype.getRight=function(){return this.right},p.prototype.getTop=function(){return this.top},p.prototype.getBottom=function(){return this.bottom},p.prototype.isConnected=function(){return this.isConnected},p.prototype.add=function(g,y,v){if(y==null&&v==null){var x=g;if(this.graphManager==null)throw"Graph has no graph mgr!";if(this.getNodes().indexOf(x)>-1)throw"Node already in graph!";return x.owner=this,this.getNodes().push(x),x}else{var b=g;if(!(this.getNodes().indexOf(y)>-1&&this.getNodes().indexOf(v)>-1))throw"Source or target not in graph!";if(!(y.owner==v.owner&&y.owner==this))throw"Both owners must be this graph!";return y.owner!=v.owner?null:(b.source=y,b.target=v,b.isInterGraph=!1,this.getEdges().push(b),y.edges.push(b),v!=y&&v.edges.push(b),b)}},p.prototype.remove=function(g){var y=g;if(g instanceof l){if(y==null)throw"Node is null!";if(!(y.owner!=null&&y.owner==this))throw"Owner graph is invalid!";if(this.graphManager==null)throw"Owner graph manager is invalid!";for(var v=y.edges.slice(),x,b=v.length,T=0;T<b;T++)x=v[T],x.isInterGraph?this.graphManager.remove(x):x.source.owner.remove(x);var w=this.nodes.indexOf(y);if(w==-1)throw"Node not in owner node list!";this.nodes.splice(w,1)}else if(g instanceof u){var x=g;if(x==null)throw"Edge is null!";if(!(x.source!=null&&x.target!=null))throw"Source and/or target is null!";if(!(x.source.owner!=null&&x.target.owner!=null&&x.source.owner==this&&x.target.owner==this))throw"Source and/or target owner is invalid!";var C=x.source.edges.indexOf(x),k=x.target.edges.indexOf(x);if(!(C>-1&&k>-1))throw"Source and/or target doesn't know this edge!";x.source.edges.splice(C,1),x.target!=x.source&&x.target.edges.splice(k,1);var w=x.source.owner.getEdges().indexOf(x);if(w==-1)throw"Not in owner's edge list!";x.source.owner.getEdges().splice(w,1)}},p.prototype.updateLeftTop=function(){for(var g=n.MAX_VALUE,y=n.MAX_VALUE,v,x,b,T=this.getNodes(),w=T.length,C=0;C<w;C++){var k=T[C];v=k.getTop(),x=k.getLeft(),g>v&&(g=v),y>x&&(y=x)}return g==n.MAX_VALUE?null:(T[0].getParent().paddingLeft!=null?b=T[0].getParent().paddingLeft:b=this.margin,this.left=y-b,this.top=g-b,new d(this.left,this.top))},p.prototype.updateBounds=function(g){for(var y=n.MAX_VALUE,v=-n.MAX_VALUE,x=n.MAX_VALUE,b=-n.MAX_VALUE,T,w,C,k,E,A=this.nodes,N=A.length,P=0;P<N;P++){var I=A[P];g&&I.child!=null&&I.updateBounds(),T=I.getLeft(),w=I.getRight(),C=I.getTop(),k=I.getBottom(),y>T&&(y=T),v<w&&(v=w),x>C&&(x=C),b<k&&(b=k)}var D=new h(y,x,v-y,b-x);y==n.MAX_VALUE&&(this.left=this.parent.getLeft(),this.right=this.parent.getRight(),this.top=this.parent.getTop(),this.bottom=this.parent.getBottom()),A[0].getParent().paddingLeft!=null?E=A[0].getParent().paddingLeft:E=this.margin,this.left=D.x-E,this.right=D.x+D.width+E,this.top=D.y-E,this.bottom=D.y+D.height+E},p.calculateBounds=function(g){for(var y=n.MAX_VALUE,v=-n.MAX_VALUE,x=n.MAX_VALUE,b=-n.MAX_VALUE,T,w,C,k,E=g.length,A=0;A<E;A++){var N=g[A];T=N.getLeft(),w=N.getRight(),C=N.getTop(),k=N.getBottom(),y>T&&(y=T),v<w&&(v=w),x>C&&(x=C),b<k&&(b=k)}var P=new h(y,x,v-y,b-x);return P},p.prototype.getInclusionTreeDepth=function(){return this==this.graphManager.getRoot()?1:this.parent.getInclusionTreeDepth()},p.prototype.getEstimatedSize=function(){if(this.estimatedSize==n.MIN_VALUE)throw"assert failed";return this.estimatedSize},p.prototype.calcEstimatedSize=function(){for(var g=0,y=this.nodes,v=y.length,x=0;x<v;x++){var b=y[x];g+=b.calcEstimatedSize()}return g==0?this.estimatedSize=a.EMPTY_COMPOUND_NODE_SIZE:this.estimatedSize=g/Math.sqrt(this.nodes.length),this.estimatedSize},p.prototype.updateConnected=function(){var g=this;if(this.nodes.length==0){this.isConnected=!0;return}var y=new f,v=new Set,x=this.nodes[0],b,T,w=x.withChildren();for(w.forEach(function(P){y.push(P),v.add(P)});y.length!==0;){x=y.shift(),b=x.getEdges();for(var C=b.length,k=0;k<C;k++){var E=b[k];if(T=E.getOtherEndInGraph(x,this),T!=null&&!v.has(T)){var A=T.withChildren();A.forEach(function(P){y.push(P),v.add(P)})}}}if(this.isConnected=!1,v.size>=this.nodes.length){var N=0;v.forEach(function(P){P.owner==g&&N++}),N==this.nodes.length&&(this.isConnected=!0)}},e.exports=p}),(function(e,t,r){"use strict";var i,n=r(1);function a(s){i=r(6),this.layout=s,this.graphs=[],this.edges=[]}o(a,"LGraphManager"),a.prototype.addRoot=function(){var s=this.layout.newGraph(),l=this.layout.newNode(null),u=this.add(s,l);return this.setRootGraph(u),this.rootGraph},a.prototype.add=function(s,l,u,h,d){if(u==null&&h==null&&d==null){if(s==null)throw"Graph is null!";if(l==null)throw"Parent node is null!";if(this.graphs.indexOf(s)>-1)throw"Graph already in this graph mgr!";if(this.graphs.push(s),s.parent!=null)throw"Already has a parent!";if(l.child!=null)throw"Already has a child!";return s.parent=l,l.child=s,s}else{d=u,h=l,u=s;var f=h.getOwner(),p=d.getOwner();if(!(f!=null&&f.getGraphManager()==this))throw"Source not in this graph mgr!";if(!(p!=null&&p.getGraphManager()==this))throw"Target not in this graph mgr!";if(f==p)return u.isInterGraph=!1,f.add(u,h,d);if(u.isInterGraph=!0,u.source=h,u.target=d,this.edges.indexOf(u)>-1)throw"Edge already in inter-graph edge list!";if(this.edges.push(u),!(u.source!=null&&u.target!=null))throw"Edge source and/or target is null!";if(!(u.source.edges.indexOf(u)==-1&&u.target.edges.indexOf(u)==-1))throw"Edge already in source and/or target incidency list!";return u.source.edges.push(u),u.target.edges.push(u),u}},a.prototype.remove=function(s){if(s instanceof i){var l=s;if(l.getGraphManager()!=this)throw"Graph not in this graph mgr";if(!(l==this.rootGraph||l.parent!=null&&l.parent.graphManager==this))throw"Invalid parent node!";var u=[];u=u.concat(l.getEdges());for(var h,d=u.length,f=0;f<d;f++)h=u[f],l.remove(h);var p=[];p=p.concat(l.getNodes());var m;d=p.length;for(var f=0;f<d;f++)m=p[f],l.remove(m);l==this.rootGraph&&this.setRootGraph(null);var g=this.graphs.indexOf(l);this.graphs.splice(g,1),l.parent=null}else if(s instanceof n){if(h=s,h==null)throw"Edge is null!";if(!h.isInterGraph)throw"Not an inter-graph edge!";if(!(h.source!=null&&h.target!=null))throw"Source and/or target is null!";if(!(h.source.edges.indexOf(h)!=-1&&h.target.edges.indexOf(h)!=-1))throw"Source and/or target doesn't know this edge!";var g=h.source.edges.indexOf(h);if(h.source.edges.splice(g,1),g=h.target.edges.indexOf(h),h.target.edges.splice(g,1),!(h.source.owner!=null&&h.source.owner.getGraphManager()!=null))throw"Edge owner graph or owner graph manager is null!";if(h.source.owner.getGraphManager().edges.indexOf(h)==-1)throw"Not in owner graph manager's edge list!";var g=h.source.owner.getGraphManager().edges.indexOf(h);h.source.owner.getGraphManager().edges.splice(g,1)}},a.prototype.updateBounds=function(){this.rootGraph.updateBounds(!0)},a.prototype.getGraphs=function(){return this.graphs},a.prototype.getAllNodes=function(){if(this.allNodes==null){for(var s=[],l=this.getGraphs(),u=l.length,h=0;h<u;h++)s=s.concat(l[h].getNodes());this.allNodes=s}return this.allNodes},a.prototype.resetAllNodes=function(){this.allNodes=null},a.prototype.resetAllEdges=function(){this.allEdges=null},a.prototype.resetAllNodesToApplyGravitation=function(){this.allNodesToApplyGravitation=null},a.prototype.getAllEdges=function(){if(this.allEdges==null){for(var s=[],l=this.getGraphs(),u=l.length,h=0;h<l.length;h++)s=s.concat(l[h].getEdges());s=s.concat(this.edges),this.allEdges=s}return this.allEdges},a.prototype.getAllNodesToApplyGravitation=function(){return this.allNodesToApplyGravitation},a.prototype.setAllNodesToApplyGravitation=function(s){if(this.allNodesToApplyGravitation!=null)throw"assert failed";this.allNodesToApplyGravitation=s},a.prototype.getRoot=function(){return this.rootGraph},a.prototype.setRootGraph=function(s){if(s.getGraphManager()!=this)throw"Root not in this graph mgr!";this.rootGraph=s,s.parent==null&&(s.parent=this.layout.newNode("Root node"))},a.prototype.getLayout=function(){return this.layout},a.prototype.isOneAncestorOfOther=function(s,l){if(!(s!=null&&l!=null))throw"assert failed";if(s==l)return!0;var u=s.getOwner(),h;do{if(h=u.getParent(),h==null)break;if(h==l)return!0;if(u=h.getOwner(),u==null)break}while(!0);u=l.getOwner();do{if(h=u.getParent(),h==null)break;if(h==s)return!0;if(u=h.getOwner(),u==null)break}while(!0);return!1},a.prototype.calcLowestCommonAncestors=function(){for(var s,l,u,h,d,f=this.getAllEdges(),p=f.length,m=0;m<p;m++){if(s=f[m],l=s.source,u=s.target,s.lca=null,s.sourceInLca=l,s.targetInLca=u,l==u){s.lca=l.getOwner();continue}for(h=l.getOwner();s.lca==null;){for(s.targetInLca=u,d=u.getOwner();s.lca==null;){if(d==h){s.lca=d;break}if(d==this.rootGraph)break;if(s.lca!=null)throw"assert failed";s.targetInLca=d.getParent(),d=s.targetInLca.getOwner()}if(h==this.rootGraph)break;s.lca==null&&(s.sourceInLca=h.getParent(),h=s.sourceInLca.getOwner())}if(s.lca==null)throw"assert failed"}},a.prototype.calcLowestCommonAncestor=function(s,l){if(s==l)return s.getOwner();var u=s.getOwner();do{if(u==null)break;var h=l.getOwner();do{if(h==null)break;if(h==u)return h;h=h.getParent().getOwner()}while(!0);u=u.getParent().getOwner()}while(!0);return u},a.prototype.calcInclusionTreeDepths=function(s,l){s==null&&l==null&&(s=this.rootGraph,l=1);for(var u,h=s.getNodes(),d=h.length,f=0;f<d;f++)u=h[f],u.inclusionTreeDepth=l,u.child!=null&&this.calcInclusionTreeDepths(u.child,l+1)},a.prototype.includesInvalidEdge=function(){for(var s,l=[],u=this.edges.length,h=0;h<u;h++)s=this.edges[h],this.isOneAncestorOfOther(s.source,s.target)&&l.push(s);for(var h=0;h<l.length;h++)this.remove(l[h]);return!1},e.exports=a}),(function(e,t,r){"use strict";var i=r(12);function n(){}o(n,"IGeometry"),n.calcSeparationAmount=function(a,s,l,u){if(!a.intersects(s))throw"assert failed";var h=new Array(2);this.decideDirectionsForOverlappingNodes(a,s,h),l[0]=Math.min(a.getRight(),s.getRight())-Math.max(a.x,s.x),l[1]=Math.min(a.getBottom(),s.getBottom())-Math.max(a.y,s.y),a.getX()<=s.getX()&&a.getRight()>=s.getRight()?l[0]+=Math.min(s.getX()-a.getX(),a.getRight()-s.getRight()):s.getX()<=a.getX()&&s.getRight()>=a.getRight()&&(l[0]+=Math.min(a.getX()-s.getX(),s.getRight()-a.getRight())),a.getY()<=s.getY()&&a.getBottom()>=s.getBottom()?l[1]+=Math.min(s.getY()-a.getY(),a.getBottom()-s.getBottom()):s.getY()<=a.getY()&&s.getBottom()>=a.getBottom()&&(l[1]+=Math.min(a.getY()-s.getY(),s.getBottom()-a.getBottom()));var d=Math.abs((s.getCenterY()-a.getCenterY())/(s.getCenterX()-a.getCenterX()));s.getCenterY()===a.getCenterY()&&s.getCenterX()===a.getCenterX()&&(d=1);var f=d*l[0],p=l[1]/d;l[0]<p?p=l[0]:f=l[1],l[0]=-1*h[0]*(p/2+u),l[1]=-1*h[1]*(f/2+u)},n.decideDirectionsForOverlappingNodes=function(a,s,l){a.getCenterX()<s.getCenterX()?l[0]=-1:l[0]=1,a.getCenterY()<s.getCenterY()?l[1]=-1:l[1]=1},n.getIntersection2=function(a,s,l){var u=a.getCenterX(),h=a.getCenterY(),d=s.getCenterX(),f=s.getCenterY();if(a.intersects(s))return l[0]=u,l[1]=h,l[2]=d,l[3]=f,!0;var p=a.getX(),m=a.getY(),g=a.getRight(),y=a.getX(),v=a.getBottom(),x=a.getRight(),b=a.getWidthHalf(),T=a.getHeightHalf(),w=s.getX(),C=s.getY(),k=s.getRight(),E=s.getX(),A=s.getBottom(),N=s.getRight(),P=s.getWidthHalf(),I=s.getHeightHalf(),D=!1,_=!1;if(u===d){if(h>f)return l[0]=u,l[1]=m,l[2]=d,l[3]=A,!1;if(h<f)return l[0]=u,l[1]=v,l[2]=d,l[3]=C,!1}else if(h===f){if(u>d)return l[0]=p,l[1]=h,l[2]=k,l[3]=f,!1;if(u<d)return l[0]=g,l[1]=h,l[2]=w,l[3]=f,!1}else{var R=a.height/a.width,M=s.height/s.width,L=(f-h)/(d-u),B=void 0,O=void 0,$=void 0,G=void 0,F=void 0,V=void 0;if(-R===L?u>d?(l[0]=y,l[1]=v,D=!0):(l[0]=g,l[1]=m,D=!0):R===L&&(u>d?(l[0]=p,l[1]=m,D=!0):(l[0]=x,l[1]=v,D=!0)),-M===L?d>u?(l[2]=E,l[3]=A,_=!0):(l[2]=k,l[3]=C,_=!0):M===L&&(d>u?(l[2]=w,l[3]=C,_=!0):(l[2]=N,l[3]=A,_=!0)),D&&_)return!1;if(u>d?h>f?(B=this.getCardinalDirection(R,L,4),O=this.getCardinalDirection(M,L,2)):(B=this.getCardinalDirection(-R,L,3),O=this.getCardinalDirection(-M,L,1)):h>f?(B=this.getCardinalDirection(-R,L,1),O=this.getCardinalDirection(-M,L,3)):(B=this.getCardinalDirection(R,L,2),O=this.getCardinalDirection(M,L,4)),!D)switch(B){case 1:G=m,$=u+-T/L,l[0]=$,l[1]=G;break;case 2:$=x,G=h+b*L,l[0]=$,l[1]=G;break;case 3:G=v,$=u+T/L,l[0]=$,l[1]=G;break;case 4:$=y,G=h+-b*L,l[0]=$,l[1]=G;break}if(!_)switch(O){case 1:V=C,F=d+-I/L,l[2]=F,l[3]=V;break;case 2:F=N,V=f+P*L,l[2]=F,l[3]=V;break;case 3:V=A,F=d+I/L,l[2]=F,l[3]=V;break;case 4:F=E,V=f+-P*L,l[2]=F,l[3]=V;break}}return!1},n.getCardinalDirection=function(a,s,l){return a>s?l:1+l%4},n.getIntersection=function(a,s,l,u){if(u==null)return this.getIntersection2(a,s,l);var h=a.x,d=a.y,f=s.x,p=s.y,m=l.x,g=l.y,y=u.x,v=u.y,x=void 0,b=void 0,T=void 0,w=void 0,C=void 0,k=void 0,E=void 0,A=void 0,N=void 0;return T=p-d,C=h-f,E=f*d-h*p,w=v-g,k=m-y,A=y*g-m*v,N=T*k-w*C,N===0?null:(x=(C*A-k*E)/N,b=(w*E-T*A)/N,new i(x,b))},n.angleOfVector=function(a,s,l,u){var h=void 0;return a!==l?(h=Math.atan((u-s)/(l-a)),l<a?h+=Math.PI:u<s&&(h+=this.TWO_PI)):u<s?h=this.ONE_AND_HALF_PI:h=this.HALF_PI,h},n.doIntersect=function(a,s,l,u){var h=a.x,d=a.y,f=s.x,p=s.y,m=l.x,g=l.y,y=u.x,v=u.y,x=(f-h)*(v-g)-(y-m)*(p-d);if(x===0)return!1;var b=((v-g)*(y-h)+(m-y)*(v-d))/x,T=((d-p)*(y-h)+(f-h)*(v-d))/x;return 0<b&&b<1&&0<T&&T<1},n.findCircleLineIntersections=function(a,s,l,u,h,d,f){var p=(l-a)*(l-a)+(u-s)*(u-s),m=2*((a-h)*(l-a)+(s-d)*(u-s)),g=(a-h)*(a-h)+(s-d)*(s-d)-f*f,y=m*m-4*p*g;if(y>=0){var v=(-m+Math.sqrt(m*m-4*p*g))/(2*p),x=(-m-Math.sqrt(m*m-4*p*g))/(2*p),b=null;return v>=0&&v<=1?[v]:x>=0&&x<=1?[x]:b}else return null},n.HALF_PI=.5*Math.PI,n.ONE_AND_HALF_PI=1.5*Math.PI,n.TWO_PI=2*Math.PI,n.THREE_PI=3*Math.PI,e.exports=n}),(function(e,t,r){"use strict";function i(){}o(i,"IMath"),i.sign=function(n){return n>0?1:n<0?-1:0},i.floor=function(n){return n<0?Math.ceil(n):Math.floor(n)},i.ceil=function(n){return n<0?Math.floor(n):Math.ceil(n)},e.exports=i}),(function(e,t,r){"use strict";function i(){}o(i,"Integer"),i.MAX_VALUE=2147483647,i.MIN_VALUE=-2147483648,e.exports=i}),(function(e,t,r){"use strict";var i=(function(){function h(d,f){for(var p=0;p<f.length;p++){var m=f[p];m.enumerable=m.enumerable||!1,m.configurable=!0,"value"in m&&(m.writable=!0),Object.defineProperty(d,m.key,m)}}return o(h,"defineProperties"),function(d,f,p){return f&&h(d.prototype,f),p&&h(d,p),d}})();function n(h,d){if(!(h instanceof d))throw new TypeError("Cannot call a class as a function")}o(n,"_classCallCheck");var a=o(function(d){return{value:d,next:null,prev:null}},"nodeFrom"),s=o(function(d,f,p,m){return d!==null?d.next=f:m.head=f,p!==null?p.prev=f:m.tail=f,f.prev=d,f.next=p,m.length++,f},"add"),l=o(function(d,f){var p=d.prev,m=d.next;return p!==null?p.next=m:f.head=m,m!==null?m.prev=p:f.tail=p,d.prev=d.next=null,f.length--,d},"_remove"),u=(function(){function h(d){var f=this;n(this,h),this.length=0,this.head=null,this.tail=null,d?.forEach(function(p){return f.push(p)})}return o(h,"LinkedList"),i(h,[{key:"size",value:o(function(){return this.length},"size")},{key:"insertBefore",value:o(function(f,p){return s(p.prev,a(f),p,this)},"insertBefore")},{key:"insertAfter",value:o(function(f,p){return s(p,a(f),p.next,this)},"insertAfter")},{key:"insertNodeBefore",value:o(function(f,p){return s(p.prev,f,p,this)},"insertNodeBefore")},{key:"insertNodeAfter",value:o(function(f,p){return s(p,f,p.next,this)},"insertNodeAfter")},{key:"push",value:o(function(f){return s(this.tail,a(f),null,this)},"push")},{key:"unshift",value:o(function(f){return s(null,a(f),this.head,this)},"unshift")},{key:"remove",value:o(function(f){return l(f,this)},"remove")},{key:"pop",value:o(function(){return l(this.tail,this).value},"pop")},{key:"popNode",value:o(function(){return l(this.tail,this)},"popNode")},{key:"shift",value:o(function(){return l(this.head,this).value},"shift")},{key:"shiftNode",value:o(function(){return l(this.head,this)},"shiftNode")},{key:"get_object_at",value:o(function(f){if(f<=this.length()){for(var p=1,m=this.head;p<f;)m=m.next,p++;return m.value}},"get_object_at")},{key:"set_object_at",value:o(function(f,p){if(f<=this.length()){for(var m=1,g=this.head;m<f;)g=g.next,m++;g.value=p}},"set_object_at")}]),h})();e.exports=u}),(function(e,t,r){"use strict";function i(n,a,s){this.x=null,this.y=null,n==null&&a==null&&s==null?(this.x=0,this.y=0):typeof n=="number"&&typeof a=="number"&&s==null?(this.x=n,this.y=a):n.constructor.name=="Point"&&a==null&&s==null&&(s=n,this.x=s.x,this.y=s.y)}o(i,"Point"),i.prototype.getX=function(){return this.x},i.prototype.getY=function(){return this.y},i.prototype.getLocation=function(){return new i(this.x,this.y)},i.prototype.setLocation=function(n,a,s){n.constructor.name=="Point"&&a==null&&s==null?(s=n,this.setLocation(s.x,s.y)):typeof n=="number"&&typeof a=="number"&&s==null&&(parseInt(n)==n&&parseInt(a)==a?this.move(n,a):(this.x=Math.floor(n+.5),this.y=Math.floor(a+.5)))},i.prototype.move=function(n,a){this.x=n,this.y=a},i.prototype.translate=function(n,a){this.x+=n,this.y+=a},i.prototype.equals=function(n){if(n.constructor.name=="Point"){var a=n;return this.x==a.x&&this.y==a.y}return this==n},i.prototype.toString=function(){return new i().constructor.name+"[x="+this.x+",y="+this.y+"]"},e.exports=i}),(function(e,t,r){"use strict";function i(n,a,s,l){this.x=0,this.y=0,this.width=0,this.height=0,n!=null&&a!=null&&s!=null&&l!=null&&(this.x=n,this.y=a,this.width=s,this.height=l)}o(i,"RectangleD"),i.prototype.getX=function(){return this.x},i.prototype.setX=function(n){this.x=n},i.prototype.getY=function(){return this.y},i.prototype.setY=function(n){this.y=n},i.prototype.getWidth=function(){return this.width},i.prototype.setWidth=function(n){this.width=n},i.prototype.getHeight=function(){return this.height},i.prototype.setHeight=function(n){this.height=n},i.prototype.getRight=function(){return this.x+this.width},i.prototype.getBottom=function(){return this.y+this.height},i.prototype.intersects=function(n){return!(this.getRight()<n.x||this.getBottom()<n.y||n.getRight()<this.x||n.getBottom()<this.y)},i.prototype.getCenterX=function(){return this.x+this.width/2},i.prototype.getMinX=function(){return this.getX()},i.prototype.getMaxX=function(){return this.getX()+this.width},i.prototype.getCenterY=function(){return this.y+this.height/2},i.prototype.getMinY=function(){return this.getY()},i.prototype.getMaxY=function(){return this.getY()+this.height},i.prototype.getWidthHalf=function(){return this.width/2},i.prototype.getHeightHalf=function(){return this.height/2},e.exports=i}),(function(e,t,r){"use strict";var i=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(a){return typeof a}:function(a){return a&&typeof Symbol=="function"&&a.constructor===Symbol&&a!==Symbol.prototype?"symbol":typeof a};function n(){}o(n,"UniqueIDGeneretor"),n.lastID=0,n.createID=function(a){return n.isPrimitive(a)?a:(a.uniqueID!=null||(a.uniqueID=n.getString(),n.lastID++),a.uniqueID)},n.getString=function(a){return a==null&&(a=n.lastID),"Object#"+a},n.isPrimitive=function(a){var s=typeof a>"u"?"undefined":i(a);return a==null||s!="object"&&s!="function"},e.exports=n}),(function(e,t,r){"use strict";function i(m){if(Array.isArray(m)){for(var g=0,y=Array(m.length);g<m.length;g++)y[g]=m[g];return y}else return Array.from(m)}o(i,"_toConsumableArray");var n=r(0),a=r(7),s=r(3),l=r(1),u=r(6),h=r(5),d=r(17),f=r(29);function p(m){f.call(this),this.layoutQuality=n.QUALITY,this.createBendsAsNeeded=n.DEFAULT_CREATE_BENDS_AS_NEEDED,this.incremental=n.DEFAULT_INCREMENTAL,this.animationOnLayout=n.DEFAULT_ANIMATION_ON_LAYOUT,this.animationDuringLayout=n.DEFAULT_ANIMATION_DURING_LAYOUT,this.animationPeriod=n.DEFAULT_ANIMATION_PERIOD,this.uniformLeafNodeSizes=n.DEFAULT_UNIFORM_LEAF_NODE_SIZES,this.edgeToDummyNodes=new Map,this.graphManager=new a(this),this.isLayoutFinished=!1,this.isSubLayout=!1,this.isRemoteUse=!1,m!=null&&(this.isRemoteUse=m)}o(p,"Layout"),p.RANDOM_SEED=1,p.prototype=Object.create(f.prototype),p.prototype.getGraphManager=function(){return this.graphManager},p.prototype.getAllNodes=function(){return this.graphManager.getAllNodes()},p.prototype.getAllEdges=function(){return this.graphManager.getAllEdges()},p.prototype.getAllNodesToApplyGravitation=function(){return this.graphManager.getAllNodesToApplyGravitation()},p.prototype.newGraphManager=function(){var m=new a(this);return this.graphManager=m,m},p.prototype.newGraph=function(m){return new u(null,this.graphManager,m)},p.prototype.newNode=function(m){return new s(this.graphManager,m)},p.prototype.newEdge=function(m){return new l(null,null,m)},p.prototype.checkLayoutSuccess=function(){return this.graphManager.getRoot()==null||this.graphManager.getRoot().getNodes().length==0||this.graphManager.includesInvalidEdge()},p.prototype.runLayout=function(){this.isLayoutFinished=!1,this.tilingPreLayout&&this.tilingPreLayout(),this.initParameters();var m;return this.checkLayoutSuccess()?m=!1:m=this.layout(),n.ANIMATE==="during"?!1:(m&&(this.isSubLayout||this.doPostLayout()),this.tilingPostLayout&&this.tilingPostLayout(),this.isLayoutFinished=!0,m)},p.prototype.doPostLayout=function(){this.incremental||this.transform(),this.update()},p.prototype.update2=function(){if(this.createBendsAsNeeded&&(this.createBendpointsFromDummyNodes(),this.graphManager.resetAllEdges()),!this.isRemoteUse){for(var m,g=this.graphManager.getAllEdges(),y=0;y<g.length;y++)m=g[y];for(var v,x=this.graphManager.getRoot().getNodes(),y=0;y<x.length;y++)v=x[y];this.update(this.graphManager.getRoot())}},p.prototype.update=function(m){if(m==null)this.update2();else if(m instanceof s){var g=m;if(g.getChild()!=null)for(var y=g.getChild().getNodes(),v=0;v<y.length;v++)update(y[v]);if(g.vGraphObject!=null){var x=g.vGraphObject;x.update(g)}}else if(m instanceof l){var b=m;if(b.vGraphObject!=null){var T=b.vGraphObject;T.update(b)}}else if(m instanceof u){var w=m;if(w.vGraphObject!=null){var C=w.vGraphObject;C.update(w)}}},p.prototype.initParameters=function(){this.isSubLayout||(this.layoutQuality=n.QUALITY,this.animationDuringLayout=n.DEFAULT_ANIMATION_DURING_LAYOUT,this.animationPeriod=n.DEFAULT_ANIMATION_PERIOD,this.animationOnLayout=n.DEFAULT_ANIMATION_ON_LAYOUT,this.incremental=n.DEFAULT_INCREMENTAL,this.createBendsAsNeeded=n.DEFAULT_CREATE_BENDS_AS_NEEDED,this.uniformLeafNodeSizes=n.DEFAULT_UNIFORM_LEAF_NODE_SIZES),this.animationDuringLayout&&(this.animationOnLayout=!1)},p.prototype.transform=function(m){if(m==null)this.transform(new h(0,0));else{var g=new d,y=this.graphManager.getRoot().updateLeftTop();if(y!=null){g.setWorldOrgX(m.x),g.setWorldOrgY(m.y),g.setDeviceOrgX(y.x),g.setDeviceOrgY(y.y);for(var v=this.getAllNodes(),x,b=0;b<v.length;b++)x=v[b],x.transform(g)}}},p.prototype.positionNodesRandomly=function(m){if(m==null)this.positionNodesRandomly(this.getGraphManager().getRoot()),this.getGraphManager().getRoot().updateBounds(!0);else for(var g,y,v=m.getNodes(),x=0;x<v.length;x++)g=v[x],y=g.getChild(),y==null||y.getNodes().length==0?g.scatter():(this.positionNodesRandomly(y),g.updateBounds())},p.prototype.getFlatForest=function(){for(var m=[],g=!0,y=this.graphManager.getRoot().getNodes(),v=!0,x=0;x<y.length;x++)y[x].getChild()!=null&&(v=!1);if(!v)return m;var b=new Set,T=[],w=new Map,C=[];for(C=C.concat(y);C.length>0&&g;){for(T.push(C[0]);T.length>0&&g;){var k=T[0];T.splice(0,1),b.add(k);for(var E=k.getEdges(),x=0;x<E.length;x++){var A=E[x].getOtherEnd(k);if(w.get(k)!=A)if(!b.has(A))T.push(A),w.set(A,k);else{g=!1;break}}}if(!g)m=[];else{var N=[].concat(i(b));m.push(N);for(var x=0;x<N.length;x++){var P=N[x],I=C.indexOf(P);I>-1&&C.splice(I,1)}b=new Set,w=new Map}}return m},p.prototype.createDummyNodesForBendpoints=function(m){for(var g=[],y=m.source,v=this.graphManager.calcLowestCommonAncestor(m.source,m.target),x=0;x<m.bendpoints.length;x++){var b=this.newNode(null);b.setRect(new Point(0,0),new Dimension(1,1)),v.add(b);var T=this.newEdge(null);this.graphManager.add(T,y,b),g.add(b),y=b}var T=this.newEdge(null);return this.graphManager.add(T,y,m.target),this.edgeToDummyNodes.set(m,g),m.isInterGraph()?this.graphManager.remove(m):v.remove(m),g},p.prototype.createBendpointsFromDummyNodes=function(){var m=[];m=m.concat(this.graphManager.getAllEdges()),m=[].concat(i(this.edgeToDummyNodes.keys())).concat(m);for(var g=0;g<m.length;g++){var y=m[g];if(y.bendpoints.length>0){for(var v=this.edgeToDummyNodes.get(y),x=0;x<v.length;x++){var b=v[x],T=new h(b.getCenterX(),b.getCenterY()),w=y.bendpoints.get(x);w.x=T.x,w.y=T.y,b.getOwner().remove(b)}this.graphManager.add(y,y.source,y.target)}}},p.transform=function(m,g,y,v){if(y!=null&&v!=null){var x=g;if(m<=50){var b=g/y;x-=(g-b)/50*(50-m)}else{var T=g*v;x+=(T-g)/50*(m-50)}return x}else{var w,C;return m<=50?(w=9*g/500,C=g/10):(w=9*g/50,C=-8*g),w*m+C}},p.findCenterOfTree=function(m){var g=[];g=g.concat(m);var y=[],v=new Map,x=!1,b=null;(g.length==1||g.length==2)&&(x=!0,b=g[0]);for(var T=0;T<g.length;T++){var w=g[T],C=w.getNeighborsList().size;v.set(w,w.getNeighborsList().size),C==1&&y.push(w)}var k=[];for(k=k.concat(y);!x;){var E=[];E=E.concat(k),k=[];for(var T=0;T<g.length;T++){var w=g[T],A=g.indexOf(w);A>=0&&g.splice(A,1);var N=w.getNeighborsList();N.forEach(function(D){if(y.indexOf(D)<0){var _=v.get(D),R=_-1;R==1&&k.push(D),v.set(D,R)}})}y=y.concat(k),(g.length==1||g.length==2)&&(x=!0,b=g[0])}return b},p.prototype.setGraphManager=function(m){this.graphManager=m},e.exports=p}),(function(e,t,r){"use strict";function i(){}o(i,"RandomSeed"),i.seed=1,i.x=0,i.nextDouble=function(){return i.x=Math.sin(i.seed++)*1e4,i.x-Math.floor(i.x)},e.exports=i}),(function(e,t,r){"use strict";var i=r(5);function n(a,s){this.lworldOrgX=0,this.lworldOrgY=0,this.ldeviceOrgX=0,this.ldeviceOrgY=0,this.lworldExtX=1,this.lworldExtY=1,this.ldeviceExtX=1,this.ldeviceExtY=1}o(n,"Transform"),n.prototype.getWorldOrgX=function(){return this.lworldOrgX},n.prototype.setWorldOrgX=function(a){this.lworldOrgX=a},n.prototype.getWorldOrgY=function(){return this.lworldOrgY},n.prototype.setWorldOrgY=function(a){this.lworldOrgY=a},n.prototype.getWorldExtX=function(){return this.lworldExtX},n.prototype.setWorldExtX=function(a){this.lworldExtX=a},n.prototype.getWorldExtY=function(){return this.lworldExtY},n.prototype.setWorldExtY=function(a){this.lworldExtY=a},n.prototype.getDeviceOrgX=function(){return this.ldeviceOrgX},n.prototype.setDeviceOrgX=function(a){this.ldeviceOrgX=a},n.prototype.getDeviceOrgY=function(){return this.ldeviceOrgY},n.prototype.setDeviceOrgY=function(a){this.ldeviceOrgY=a},n.prototype.getDeviceExtX=function(){return this.ldeviceExtX},n.prototype.setDeviceExtX=function(a){this.ldeviceExtX=a},n.prototype.getDeviceExtY=function(){return this.ldeviceExtY},n.prototype.setDeviceExtY=function(a){this.ldeviceExtY=a},n.prototype.transformX=function(a){var s=0,l=this.lworldExtX;return l!=0&&(s=this.ldeviceOrgX+(a-this.lworldOrgX)*this.ldeviceExtX/l),s},n.prototype.transformY=function(a){var s=0,l=this.lworldExtY;return l!=0&&(s=this.ldeviceOrgY+(a-this.lworldOrgY)*this.ldeviceExtY/l),s},n.prototype.inverseTransformX=function(a){var s=0,l=this.ldeviceExtX;return l!=0&&(s=this.lworldOrgX+(a-this.ldeviceOrgX)*this.lworldExtX/l),s},n.prototype.inverseTransformY=function(a){var s=0,l=this.ldeviceExtY;return l!=0&&(s=this.lworldOrgY+(a-this.ldeviceOrgY)*this.lworldExtY/l),s},n.prototype.inverseTransformPoint=function(a){var s=new i(this.inverseTransformX(a.x),this.inverseTransformY(a.y));return s},e.exports=n}),(function(e,t,r){"use strict";function i(f){if(Array.isArray(f)){for(var p=0,m=Array(f.length);p<f.length;p++)m[p]=f[p];return m}else return Array.from(f)}o(i,"_toConsumableArray");var n=r(15),a=r(4),s=r(0),l=r(8),u=r(9);function h(){n.call(this),this.useSmartIdealEdgeLengthCalculation=a.DEFAULT_USE_SMART_IDEAL_EDGE_LENGTH_CALCULATION,this.gravityConstant=a.DEFAULT_GRAVITY_STRENGTH,this.compoundGravityConstant=a.DEFAULT_COMPOUND_GRAVITY_STRENGTH,this.gravityRangeFactor=a.DEFAULT_GRAVITY_RANGE_FACTOR,this.compoundGravityRangeFactor=a.DEFAULT_COMPOUND_GRAVITY_RANGE_FACTOR,this.displacementThresholdPerNode=3*a.DEFAULT_EDGE_LENGTH/100,this.coolingFactor=a.DEFAULT_COOLING_FACTOR_INCREMENTAL,this.initialCoolingFactor=a.DEFAULT_COOLING_FACTOR_INCREMENTAL,this.totalDisplacement=0,this.oldTotalDisplacement=0,this.maxIterations=a.MAX_ITERATIONS}o(h,"FDLayout"),h.prototype=Object.create(n.prototype);for(var d in n)h[d]=n[d];h.prototype.initParameters=function(){n.prototype.initParameters.call(this,arguments),this.totalIterations=0,this.notAnimatedIterations=0,this.useFRGridVariant=a.DEFAULT_USE_SMART_REPULSION_RANGE_CALCULATION,this.grid=[]},h.prototype.calcIdealEdgeLengths=function(){for(var f,p,m,g,y,v,x,b=this.getGraphManager().getAllEdges(),T=0;T<b.length;T++)f=b[T],p=f.idealLength,f.isInterGraph&&(g=f.getSource(),y=f.getTarget(),v=f.getSourceInLca().getEstimatedSize(),x=f.getTargetInLca().getEstimatedSize(),this.useSmartIdealEdgeLengthCalculation&&(f.idealLength+=v+x-2*s.SIMPLE_NODE_SIZE),m=f.getLca().getInclusionTreeDepth(),f.idealLength+=p*a.PER_LEVEL_IDEAL_EDGE_LENGTH_FACTOR*(g.getInclusionTreeDepth()+y.getInclusionTreeDepth()-2*m))},h.prototype.initSpringEmbedder=function(){var f=this.getAllNodes().length;this.incremental?(f>a.ADAPTATION_LOWER_NODE_LIMIT&&(this.coolingFactor=Math.max(this.coolingFactor*a.COOLING_ADAPTATION_FACTOR,this.coolingFactor-(f-a.ADAPTATION_LOWER_NODE_LIMIT)/(a.ADAPTATION_UPPER_NODE_LIMIT-a.ADAPTATION_LOWER_NODE_LIMIT)*this.coolingFactor*(1-a.COOLING_ADAPTATION_FACTOR))),this.maxNodeDisplacement=a.MAX_NODE_DISPLACEMENT_INCREMENTAL):(f>a.ADAPTATION_LOWER_NODE_LIMIT?this.coolingFactor=Math.max(a.COOLING_ADAPTATION_FACTOR,1-(f-a.ADAPTATION_LOWER_NODE_LIMIT)/(a.ADAPTATION_UPPER_NODE_LIMIT-a.ADAPTATION_LOWER_NODE_LIMIT)*(1-a.COOLING_ADAPTATION_FACTOR)):this.coolingFactor=1,this.initialCoolingFactor=this.coolingFactor,this.maxNodeDisplacement=a.MAX_NODE_DISPLACEMENT),this.maxIterations=Math.max(this.getAllNodes().length*5,this.maxIterations),this.displacementThresholdPerNode=3*a.DEFAULT_EDGE_LENGTH/100,this.totalDisplacementThreshold=this.displacementThresholdPerNode*this.getAllNodes().length,this.repulsionRange=this.calcRepulsionRange()},h.prototype.calcSpringForces=function(){for(var f=this.getAllEdges(),p,m=0;m<f.length;m++)p=f[m],this.calcSpringForce(p,p.idealLength)},h.prototype.calcRepulsionForces=function(){var f=arguments.length>0&&arguments[0]!==void 0?arguments[0]:!0,p=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1,m,g,y,v,x=this.getAllNodes(),b;if(this.useFRGridVariant)for(this.totalIterations%a.GRID_CALCULATION_CHECK_PERIOD==1&&f&&this.updateGrid(),b=new Set,m=0;m<x.length;m++)y=x[m],this.calculateRepulsionForceOfANode(y,b,f,p),b.add(y);else for(m=0;m<x.length;m++)for(y=x[m],g=m+1;g<x.length;g++)v=x[g],y.getOwner()==v.getOwner()&&this.calcRepulsionForce(y,v)},h.prototype.calcGravitationalForces=function(){for(var f,p=this.getAllNodesToApplyGravitation(),m=0;m<p.length;m++)f=p[m],this.calcGravitationalForce(f)},h.prototype.moveNodes=function(){for(var f=this.getAllNodes(),p,m=0;m<f.length;m++)p=f[m],p.move()},h.prototype.calcSpringForce=function(f,p){var m=f.getSource(),g=f.getTarget(),y,v,x,b;if(this.uniformLeafNodeSizes&&m.getChild()==null&&g.getChild()==null)f.updateLengthSimple();else if(f.updateLength(),f.isOverlapingSourceAndTarget)return;y=f.getLength(),y!=0&&(v=f.edgeElasticity*(y-p),x=v*(f.lengthX/y),b=v*(f.lengthY/y),m.springForceX+=x,m.springForceY+=b,g.springForceX-=x,g.springForceY-=b)},h.prototype.calcRepulsionForce=function(f,p){var m=f.getRect(),g=p.getRect(),y=new Array(2),v=new Array(4),x,b,T,w,C,k,E;if(m.intersects(g)){l.calcSeparationAmount(m,g,y,a.DEFAULT_EDGE_LENGTH/2),k=2*y[0],E=2*y[1];var A=f.noOfChildren*p.noOfChildren/(f.noOfChildren+p.noOfChildren);f.repulsionForceX-=A*k,f.repulsionForceY-=A*E,p.repulsionForceX+=A*k,p.repulsionForceY+=A*E}else this.uniformLeafNodeSizes&&f.getChild()==null&&p.getChild()==null?(x=g.getCenterX()-m.getCenterX(),b=g.getCenterY()-m.getCenterY()):(l.getIntersection(m,g,v),x=v[2]-v[0],b=v[3]-v[1]),Math.abs(x)<a.MIN_REPULSION_DIST&&(x=u.sign(x)*a.MIN_REPULSION_DIST),Math.abs(b)<a.MIN_REPULSION_DIST&&(b=u.sign(b)*a.MIN_REPULSION_DIST),T=x*x+b*b,w=Math.sqrt(T),C=(f.nodeRepulsion/2+p.nodeRepulsion/2)*f.noOfChildren*p.noOfChildren/T,k=C*x/w,E=C*b/w,f.repulsionForceX-=k,f.repulsionForceY-=E,p.repulsionForceX+=k,p.repulsionForceY+=E},h.prototype.calcGravitationalForce=function(f){var p,m,g,y,v,x,b,T;p=f.getOwner(),m=(p.getRight()+p.getLeft())/2,g=(p.getTop()+p.getBottom())/2,y=f.getCenterX()-m,v=f.getCenterY()-g,x=Math.abs(y)+f.getWidth()/2,b=Math.abs(v)+f.getHeight()/2,f.getOwner()==this.graphManager.getRoot()?(T=p.getEstimatedSize()*this.gravityRangeFactor,(x>T||b>T)&&(f.gravitationForceX=-this.gravityConstant*y,f.gravitationForceY=-this.gravityConstant*v)):(T=p.getEstimatedSize()*this.compoundGravityRangeFactor,(x>T||b>T)&&(f.gravitationForceX=-this.gravityConstant*y*this.compoundGravityConstant,f.gravitationForceY=-this.gravityConstant*v*this.compoundGravityConstant))},h.prototype.isConverged=function(){var f,p=!1;return this.totalIterations>this.maxIterations/3&&(p=Math.abs(this.totalDisplacement-this.oldTotalDisplacement)<2),f=this.totalDisplacement<this.totalDisplacementThreshold,this.oldTotalDisplacement=this.totalDisplacement,f||p},h.prototype.animate=function(){this.animationDuringLayout&&!this.isSubLayout&&(this.notAnimatedIterations==this.animationPeriod?(this.update(),this.notAnimatedIterations=0):this.notAnimatedIterations++)},h.prototype.calcNoOfChildrenForAllNodes=function(){for(var f,p=this.graphManager.getAllNodes(),m=0;m<p.length;m++)f=p[m],f.noOfChildren=f.getNoOfChildren()},h.prototype.calcGrid=function(f){var p=0,m=0;p=parseInt(Math.ceil((f.getRight()-f.getLeft())/this.repulsionRange)),m=parseInt(Math.ceil((f.getBottom()-f.getTop())/this.repulsionRange));for(var g=new Array(p),y=0;y<p;y++)g[y]=new Array(m);for(var y=0;y<p;y++)for(var v=0;v<m;v++)g[y][v]=new Array;return g},h.prototype.addNodeToGrid=function(f,p,m){var g=0,y=0,v=0,x=0;g=parseInt(Math.floor((f.getRect().x-p)/this.repulsionRange)),y=parseInt(Math.floor((f.getRect().width+f.getRect().x-p)/this.repulsionRange)),v=parseInt(Math.floor((f.getRect().y-m)/this.repulsionRange)),x=parseInt(Math.floor((f.getRect().height+f.getRect().y-m)/this.repulsionRange));for(var b=g;b<=y;b++)for(var T=v;T<=x;T++)this.grid[b][T].push(f),f.setGridCoordinates(g,y,v,x)},h.prototype.updateGrid=function(){var f,p,m=this.getAllNodes();for(this.grid=this.calcGrid(this.graphManager.getRoot()),f=0;f<m.length;f++)p=m[f],this.addNodeToGrid(p,this.graphManager.getRoot().getLeft(),this.graphManager.getRoot().getTop())},h.prototype.calculateRepulsionForceOfANode=function(f,p,m,g){if(this.totalIterations%a.GRID_CALCULATION_CHECK_PERIOD==1&&m||g){var y=new Set;f.surrounding=new Array;for(var v,x=this.grid,b=f.startX-1;b<f.finishX+2;b++)for(var T=f.startY-1;T<f.finishY+2;T++)if(!(b<0||T<0||b>=x.length||T>=x[0].length)){for(var w=0;w<x[b][T].length;w++)if(v=x[b][T][w],!(f.getOwner()!=v.getOwner()||f==v)&&!p.has(v)&&!y.has(v)){var C=Math.abs(f.getCenterX()-v.getCenterX())-(f.getWidth()/2+v.getWidth()/2),k=Math.abs(f.getCenterY()-v.getCenterY())-(f.getHeight()/2+v.getHeight()/2);C<=this.repulsionRange&&k<=this.repulsionRange&&y.add(v)}}f.surrounding=[].concat(i(y))}for(b=0;b<f.surrounding.length;b++)this.calcRepulsionForce(f,f.surrounding[b])},h.prototype.calcRepulsionRange=function(){return 0},e.exports=h}),(function(e,t,r){"use strict";var i=r(1),n=r(4);function a(l,u,h){i.call(this,l,u,h),this.idealLength=n.DEFAULT_EDGE_LENGTH,this.edgeElasticity=n.DEFAULT_SPRING_STRENGTH}o(a,"FDLayoutEdge"),a.prototype=Object.create(i.prototype);for(var s in i)a[s]=i[s];e.exports=a}),(function(e,t,r){"use strict";var i=r(3),n=r(4);function a(l,u,h,d){i.call(this,l,u,h,d),this.nodeRepulsion=n.DEFAULT_REPULSION_STRENGTH,this.springForceX=0,this.springForceY=0,this.repulsionForceX=0,this.repulsionForceY=0,this.gravitationForceX=0,this.gravitationForceY=0,this.displacementX=0,this.displacementY=0,this.startX=0,this.finishX=0,this.startY=0,this.finishY=0,this.surrounding=[]}o(a,"FDLayoutNode"),a.prototype=Object.create(i.prototype);for(var s in i)a[s]=i[s];a.prototype.setGridCoordinates=function(l,u,h,d){this.startX=l,this.finishX=u,this.startY=h,this.finishY=d},e.exports=a}),(function(e,t,r){"use strict";function i(n,a){this.width=0,this.height=0,n!==null&&a!==null&&(this.height=a,this.width=n)}o(i,"DimensionD"),i.prototype.getWidth=function(){return this.width},i.prototype.setWidth=function(n){this.width=n},i.prototype.getHeight=function(){return this.height},i.prototype.setHeight=function(n){this.height=n},e.exports=i}),(function(e,t,r){"use strict";var i=r(14);function n(){this.map={},this.keys=[]}o(n,"HashMap"),n.prototype.put=function(a,s){var l=i.createID(a);this.contains(l)||(this.map[l]=s,this.keys.push(a))},n.prototype.contains=function(a){var s=i.createID(a);return this.map[a]!=null},n.prototype.get=function(a){var s=i.createID(a);return this.map[s]},n.prototype.keySet=function(){return this.keys},e.exports=n}),(function(e,t,r){"use strict";var i=r(14);function n(){this.set={}}o(n,"HashSet"),n.prototype.add=function(a){var s=i.createID(a);this.contains(s)||(this.set[s]=a)},n.prototype.remove=function(a){delete this.set[i.createID(a)]},n.prototype.clear=function(){this.set={}},n.prototype.contains=function(a){return this.set[i.createID(a)]==a},n.prototype.isEmpty=function(){return this.size()===0},n.prototype.size=function(){return Object.keys(this.set).length},n.prototype.addAllTo=function(a){for(var s=Object.keys(this.set),l=s.length,u=0;u<l;u++)a.push(this.set[s[u]])},n.prototype.size=function(){return Object.keys(this.set).length},n.prototype.addAll=function(a){for(var s=a.length,l=0;l<s;l++){var u=a[l];this.add(u)}},e.exports=n}),(function(e,t,r){"use strict";function i(){}o(i,"Matrix"),i.multMat=function(n,a){for(var s=[],l=0;l<n.length;l++){s[l]=[];for(var u=0;u<a[0].length;u++){s[l][u]=0;for(var h=0;h<n[0].length;h++)s[l][u]+=n[l][h]*a[h][u]}}return s},i.transpose=function(n){for(var a=[],s=0;s<n[0].length;s++){a[s]=[];for(var l=0;l<n.length;l++)a[s][l]=n[l][s]}return a},i.multCons=function(n,a){for(var s=[],l=0;l<n.length;l++)s[l]=n[l]*a;return s},i.minusOp=function(n,a){for(var s=[],l=0;l<n.length;l++)s[l]=n[l]-a[l];return s},i.dotProduct=function(n,a){for(var s=0,l=0;l<n.length;l++)s+=n[l]*a[l];return s},i.mag=function(n){return Math.sqrt(this.dotProduct(n,n))},i.normalize=function(n){for(var a=[],s=this.mag(n),l=0;l<n.length;l++)a[l]=n[l]/s;return a},i.multGamma=function(n){for(var a=[],s=0,l=0;l<n.length;l++)s+=n[l];s*=-1/n.length;for(var u=0;u<n.length;u++)a[u]=s+n[u];return a},i.multL=function(n,a,s){for(var l=[],u=[],h=[],d=0;d<a[0].length;d++){for(var f=0,p=0;p<a.length;p++)f+=-.5*a[p][d]*n[p];u[d]=f}for(var m=0;m<s.length;m++){for(var g=0,y=0;y<s.length;y++)g+=s[m][y]*u[y];h[m]=g}for(var v=0;v<a.length;v++){for(var x=0,b=0;b<a[0].length;b++)x+=a[v][b]*h[b];l[v]=x}return l},e.exports=i}),(function(e,t,r){"use strict";var i=(function(){function l(u,h){for(var d=0;d<h.length;d++){var f=h[d];f.enumerable=f.enumerable||!1,f.configurable=!0,"value"in f&&(f.writable=!0),Object.defineProperty(u,f.key,f)}}return o(l,"defineProperties"),function(u,h,d){return h&&l(u.prototype,h),d&&l(u,d),u}})();function n(l,u){if(!(l instanceof u))throw new TypeError("Cannot call a class as a function")}o(n,"_classCallCheck");var a=r(11),s=(function(){function l(u,h){n(this,l),(h!==null||h!==void 0)&&(this.compareFunction=this._defaultCompareFunction);var d=void 0;u instanceof a?d=u.size():d=u.length,this._quicksort(u,0,d-1)}return o(l,"Quicksort"),i(l,[{key:"_quicksort",value:o(function(h,d,f){if(d<f){var p=this._partition(h,d,f);this._quicksort(h,d,p),this._quicksort(h,p+1,f)}},"_quicksort")},{key:"_partition",value:o(function(h,d,f){for(var p=this._get(h,d),m=d,g=f;;){for(;this.compareFunction(p,this._get(h,g));)g--;for(;this.compareFunction(this._get(h,m),p);)m++;if(m<g)this._swap(h,m,g),m++,g--;else return g}},"_partition")},{key:"_get",value:o(function(h,d){return h instanceof a?h.get_object_at(d):h[d]},"_get")},{key:"_set",value:o(function(h,d,f){h instanceof a?h.set_object_at(d,f):h[d]=f},"_set")},{key:"_swap",value:o(function(h,d,f){var p=this._get(h,d);this._set(h,d,this._get(h,f)),this._set(h,f,p)},"_swap")},{key:"_defaultCompareFunction",value:o(function(h,d){return d>h},"_defaultCompareFunction")}]),l})();e.exports=s}),(function(e,t,r){"use strict";function i(){}o(i,"SVD"),i.svd=function(n){this.U=null,this.V=null,this.s=null,this.m=0,this.n=0,this.m=n.length,this.n=n[0].length;var a=Math.min(this.m,this.n);this.s=(function(Et){for(var yt=[];Et-- >0;)yt.push(0);return yt})(Math.min(this.m+1,this.n)),this.U=(function(Et){var yt=o(function oe(ht){if(ht.length==0)return 0;for(var gt=[],et=0;et<ht[0];et++)gt.push(oe(ht.slice(1)));return gt},"allocate");return yt(Et)})([this.m,a]),this.V=(function(Et){var yt=o(function oe(ht){if(ht.length==0)return 0;for(var gt=[],et=0;et<ht[0];et++)gt.push(oe(ht.slice(1)));return gt},"allocate");return yt(Et)})([this.n,this.n]);for(var s=(function(Et){for(var yt=[];Et-- >0;)yt.push(0);return yt})(this.n),l=(function(Et){for(var yt=[];Et-- >0;)yt.push(0);return yt})(this.m),u=!0,h=!0,d=Math.min(this.m-1,this.n),f=Math.max(0,Math.min(this.n-2,this.m)),p=0;p<Math.max(d,f);p++){if(p<d){this.s[p]=0;for(var m=p;m<this.m;m++)this.s[p]=i.hypot(this.s[p],n[m][p]);if(this.s[p]!==0){n[p][p]<0&&(this.s[p]=-this.s[p]);for(var g=p;g<this.m;g++)n[g][p]/=this.s[p];n[p][p]+=1}this.s[p]=-this.s[p]}for(var y=p+1;y<this.n;y++){if((function(Et,yt){return Et&&yt})(p<d,this.s[p]!==0)){for(var v=0,x=p;x<this.m;x++)v+=n[x][p]*n[x][y];v=-v/n[p][p];for(var b=p;b<this.m;b++)n[b][y]+=v*n[b][p]}s[y]=n[p][y]}if((function(Et,yt){return Et&&yt})(u,p<d))for(var T=p;T<this.m;T++)this.U[T][p]=n[T][p];if(p<f){s[p]=0;for(var w=p+1;w<this.n;w++)s[p]=i.hypot(s[p],s[w]);if(s[p]!==0){s[p+1]<0&&(s[p]=-s[p]);for(var C=p+1;C<this.n;C++)s[C]/=s[p];s[p+1]+=1}if(s[p]=-s[p],(function(Et,yt){return Et&&yt})(p+1<this.m,s[p]!==0)){for(var k=p+1;k<this.m;k++)l[k]=0;for(var E=p+1;E<this.n;E++)for(var A=p+1;A<this.m;A++)l[A]+=s[E]*n[A][E];for(var N=p+1;N<this.n;N++)for(var P=-s[N]/s[p+1],I=p+1;I<this.m;I++)n[I][N]+=P*l[I]}if(h)for(var D=p+1;D<this.n;D++)this.V[D][p]=s[D]}}var _=Math.min(this.n,this.m+1);if(d<this.n&&(this.s[d]=n[d][d]),this.m<_&&(this.s[_-1]=0),f+1<_&&(s[f]=n[f][_-1]),s[_-1]=0,u){for(var R=d;R<a;R++){for(var M=0;M<this.m;M++)this.U[M][R]=0;this.U[R][R]=1}for(var L=d-1;L>=0;L--)if(this.s[L]!==0){for(var B=L+1;B<a;B++){for(var O=0,$=L;$<this.m;$++)O+=this.U[$][L]*this.U[$][B];O=-O/this.U[L][L];for(var G=L;G<this.m;G++)this.U[G][B]+=O*this.U[G][L]}for(var F=L;F<this.m;F++)this.U[F][L]=-this.U[F][L];this.U[L][L]=1+this.U[L][L];for(var V=0;V<L-1;V++)this.U[V][L]=0}else{for(var H=0;H<this.m;H++)this.U[H][L]=0;this.U[L][L]=1}}if(h)for(var j=this.n-1;j>=0;j--){if((function(Et,yt){return Et&&yt})(j<f,s[j]!==0))for(var U=j+1;U<a;U++){for(var Q=0,Y=j+1;Y<this.n;Y++)Q+=this.V[Y][j]*this.V[Y][U];Q=-Q/this.V[j+1][j];for(var ae=j+1;ae<this.n;ae++)this.V[ae][U]+=Q*this.V[ae][j]}for(var J=0;J<this.n;J++)this.V[J][j]=0;this.V[j][j]=1}for(var te=_-1,re=0,ee=Math.pow(2,-52),Te=Math.pow(2,-966);_>0;){var ue=void 0,De=void 0;for(ue=_-2;ue>=-1&&ue!==-1;ue--)if(Math.abs(s[ue])<=Te+ee*(Math.abs(this.s[ue])+Math.abs(this.s[ue+1]))){s[ue]=0;break}if(ue===_-2)De=4;else{var Ie=void 0;for(Ie=_-1;Ie>=ue&&Ie!==ue;Ie--){var Ee=(Ie!==_?Math.abs(s[Ie]):0)+(Ie!==ue+1?Math.abs(s[Ie-1]):0);if(Math.abs(this.s[Ie])<=Te+ee*Ee){this.s[Ie]=0;break}}Ie===ue?De=3:Ie===_-1?De=1:(De=2,ue=Ie)}switch(ue++,De){case 1:{var we=s[_-2];s[_-2]=0;for(var Me=_-2;Me>=ue;Me--){var $e=i.hypot(this.s[Me],we),de=this.s[Me]/$e,rt=we/$e;if(this.s[Me]=$e,Me!==ue&&(we=-rt*s[Me-1],s[Me-1]=de*s[Me-1]),h)for(var ke=0;ke<this.n;ke++)$e=de*this.V[ke][Me]+rt*this.V[ke][_-1],this.V[ke][_-1]=-rt*this.V[ke][Me]+de*this.V[ke][_-1],this.V[ke][Me]=$e}}break;case 2:{var Fe=s[ue-1];s[ue-1]=0;for(var He=ue;He<_;He++){var at=i.hypot(this.s[He],Fe),qe=this.s[He]/at,Ue=Fe/at;if(this.s[He]=at,Fe=-Ue*s[He],s[He]=qe*s[He],u)for(var ye=0;ye<this.m;ye++)at=qe*this.U[ye][He]+Ue*this.U[ye][ue-1],this.U[ye][ue-1]=-Ue*this.U[ye][He]+qe*this.U[ye][ue-1],this.U[ye][He]=at}}break;case 3:{var ve=Math.max(Math.max(Math.max(Math.max(Math.abs(this.s[_-1]),Math.abs(this.s[_-2])),Math.abs(s[_-2])),Math.abs(this.s[ue])),Math.abs(s[ue])),ie=this.s[_-1]/ve,fe=this.s[_-2]/ve,W=s[_-2]/ve,ce=this.s[ue]/ve,K=s[ue]/ve,Re=((fe+ie)*(fe-ie)+W*W)/2,xe=ie*W*(ie*W),Oe=0;(function(Et,yt){return Et||yt})(Re!==0,xe!==0)&&(Oe=Math.sqrt(Re*Re+xe),Re<0&&(Oe=-Oe),Oe=xe/(Re+Oe));for(var be=(ce+ie)*(ce-ie)+Oe,Be=ce*K,Ae=ue;Ae<_-1;Ae++){var Ve=i.hypot(be,Be),Pe=be/Ve,Ye=Be/Ve;if(Ae!==ue&&(s[Ae-1]=Ve),be=Pe*this.s[Ae]+Ye*s[Ae],s[Ae]=Pe*s[Ae]-Ye*this.s[Ae],Be=Ye*this.s[Ae+1],this.s[Ae+1]=Pe*this.s[Ae+1],h)for(var le=0;le<this.n;le++)Ve=Pe*this.V[le][Ae]+Ye*this.V[le][Ae+1],this.V[le][Ae+1]=-Ye*this.V[le][Ae]+Pe*this.V[le][Ae+1],this.V[le][Ae]=Ve;if(Ve=i.hypot(be,Be),Pe=be/Ve,Ye=Be/Ve,this.s[Ae]=Ve,be=Pe*s[Ae]+Ye*this.s[Ae+1],this.s[Ae+1]=-Ye*s[Ae]+Pe*this.s[Ae+1],Be=Ye*s[Ae+1],s[Ae+1]=Pe*s[Ae+1],u&&Ae<this.m-1)for(var st=0;st<this.m;st++)Ve=Pe*this.U[st][Ae]+Ye*this.U[st][Ae+1],this.U[st][Ae+1]=-Ye*this.U[st][Ae]+Pe*this.U[st][Ae+1],this.U[st][Ae]=Ve}s[_-2]=be,re=re+1}break;case 4:{if(this.s[ue]<=0&&(this.s[ue]=this.s[ue]<0?-this.s[ue]:0,h))for(var me=0;me<=te;me++)this.V[me][ue]=-this.V[me][ue];for(;ue<te&&!(this.s[ue]>=this.s[ue+1]);){var ot=this.s[ue];if(this.s[ue]=this.s[ue+1],this.s[ue+1]=ot,h&&ue<this.n-1)for(var kt=0;kt<this.n;kt++)ot=this.V[kt][ue+1],this.V[kt][ue+1]=this.V[kt][ue],this.V[kt][ue]=ot;if(u&&ue<this.m-1)for(var Gt=0;Gt<this.m;Gt++)ot=this.U[Gt][ue+1],this.U[Gt][ue+1]=this.U[Gt][ue],this.U[Gt][ue]=ot;ue++}re=0,_--}break}}var Tt={U:this.U,V:this.V,S:this.s};return Tt},i.hypot=function(n,a){var s=void 0;return Math.abs(n)>Math.abs(a)?(s=a/n,s=Math.abs(n)*Math.sqrt(1+s*s)):a!=0?(s=n/a,s=Math.abs(a)*Math.sqrt(1+s*s)):s=0,s},e.exports=i}),(function(e,t,r){"use strict";var i=(function(){function s(l,u){for(var h=0;h<u.length;h++){var d=u[h];d.enumerable=d.enumerable||!1,d.configurable=!0,"value"in d&&(d.writable=!0),Object.defineProperty(l,d.key,d)}}return o(s,"defineProperties"),function(l,u,h){return u&&s(l.prototype,u),h&&s(l,h),l}})();function n(s,l){if(!(s instanceof l))throw new TypeError("Cannot call a class as a function")}o(n,"_classCallCheck");var a=(function(){function s(l,u){var h=arguments.length>2&&arguments[2]!==void 0?arguments[2]:1,d=arguments.length>3&&arguments[3]!==void 0?arguments[3]:-1,f=arguments.length>4&&arguments[4]!==void 0?arguments[4]:-1;n(this,s),this.sequence1=l,this.sequence2=u,this.match_score=h,this.mismatch_penalty=d,this.gap_penalty=f,this.iMax=l.length+1,this.jMax=u.length+1,this.grid=new Array(this.iMax);for(var p=0;p<this.iMax;p++){this.grid[p]=new Array(this.jMax);for(var m=0;m<this.jMax;m++)this.grid[p][m]=0}this.tracebackGrid=new Array(this.iMax);for(var g=0;g<this.iMax;g++){this.tracebackGrid[g]=new Array(this.jMax);for(var y=0;y<this.jMax;y++)this.tracebackGrid[g][y]=[null,null,null]}this.alignments=[],this.score=-1,this.computeGrids()}return o(s,"NeedlemanWunsch"),i(s,[{key:"getScore",value:o(function(){return this.score},"getScore")},{key:"getAlignments",value:o(function(){return this.alignments},"getAlignments")},{key:"computeGrids",value:o(function(){for(var u=1;u<this.jMax;u++)this.grid[0][u]=this.grid[0][u-1]+this.gap_penalty,this.tracebackGrid[0][u]=[!1,!1,!0];for(var h=1;h<this.iMax;h++)this.grid[h][0]=this.grid[h-1][0]+this.gap_penalty,this.tracebackGrid[h][0]=[!1,!0,!1];for(var d=1;d<this.iMax;d++)for(var f=1;f<this.jMax;f++){var p=void 0;this.sequence1[d-1]===this.sequence2[f-1]?p=this.grid[d-1][f-1]+this.match_score:p=this.grid[d-1][f-1]+this.mismatch_penalty;var m=this.grid[d-1][f]+this.gap_penalty,g=this.grid[d][f-1]+this.gap_penalty,y=[p,m,g],v=this.arrayAllMaxIndexes(y);this.grid[d][f]=y[v[0]],this.tracebackGrid[d][f]=[v.includes(0),v.includes(1),v.includes(2)]}this.score=this.grid[this.iMax-1][this.jMax-1]},"computeGrids")},{key:"alignmentTraceback",value:o(function(){var u=[];for(u.push({pos:[this.sequence1.length,this.sequence2.length],seq1:"",seq2:""});u[0];){var h=u[0],d=this.tracebackGrid[h.pos[0]][h.pos[1]];d[0]&&u.push({pos:[h.pos[0]-1,h.pos[1]-1],seq1:this.sequence1[h.pos[0]-1]+h.seq1,seq2:this.sequence2[h.pos[1]-1]+h.seq2}),d[1]&&u.push({pos:[h.pos[0]-1,h.pos[1]],seq1:this.sequence1[h.pos[0]-1]+h.seq1,seq2:"-"+h.seq2}),d[2]&&u.push({pos:[h.pos[0],h.pos[1]-1],seq1:"-"+h.seq1,seq2:this.sequence2[h.pos[1]-1]+h.seq2}),h.pos[0]===0&&h.pos[1]===0&&this.alignments.push({sequence1:h.seq1,sequence2:h.seq2}),u.shift()}return this.alignments},"alignmentTraceback")},{key:"getAllIndexes",value:o(function(u,h){for(var d=[],f=-1;(f=u.indexOf(h,f+1))!==-1;)d.push(f);return d},"getAllIndexes")},{key:"arrayAllMaxIndexes",value:o(function(u){return this.getAllIndexes(u,Math.max.apply(null,u))},"arrayAllMaxIndexes")}]),s})();e.exports=a}),(function(e,t,r){"use strict";var i=o(function(){},"layoutBase");i.FDLayout=r(18),i.FDLayoutConstants=r(4),i.FDLayoutEdge=r(19),i.FDLayoutNode=r(20),i.DimensionD=r(21),i.HashMap=r(22),i.HashSet=r(23),i.IGeometry=r(8),i.IMath=r(9),i.Integer=r(10),i.Point=r(12),i.PointD=r(5),i.RandomSeed=r(16),i.RectangleD=r(13),i.Transform=r(17),i.UniqueIDGeneretor=r(14),i.Quicksort=r(25),i.LinkedList=r(11),i.LGraphObject=r(2),i.LGraph=r(6),i.LEdge=r(1),i.LGraphManager=r(7),i.LNode=r(3),i.Layout=r(15),i.LayoutConstants=r(0),i.NeedlemanWunsch=r(27),i.Matrix=r(24),i.SVD=r(26),e.exports=i}),(function(e,t,r){"use strict";function i(){this.listeners=[]}o(i,"Emitter");var n=i.prototype;n.addListener=function(a,s){this.listeners.push({event:a,callback:s})},n.removeListener=function(a,s){for(var l=this.listeners.length;l>=0;l--){var u=this.listeners[l];u.event===a&&u.callback===s&&this.listeners.splice(l,1)}},n.emit=function(a,s){for(var l=0;l<this.listeners.length;l++){var u=this.listeners[l];a===u.event&&u.callback(s)}},e.exports=i})])})});var qq=Js((hC,Wq)=>{"use strict";o((function(t,r){typeof hC=="object"&&typeof Wq=="object"?Wq.exports=r(Vq()):typeof define=="function"&&define.amd?define(["layout-base"],r):typeof hC=="object"?hC.coseBase=r(Vq()):t.coseBase=r(t.layoutBase)}),"webpackUniversalModuleDefinition")(hC,function(e){return(()=>{"use strict";var t={45:((a,s,l)=>{var u={};u.layoutBase=l(551),u.CoSEConstants=l(806),u.CoSEEdge=l(767),u.CoSEGraph=l(880),u.CoSEGraphManager=l(578),u.CoSELayout=l(765),u.CoSENode=l(991),u.ConstraintHandler=l(902),a.exports=u}),806:((a,s,l)=>{var u=l(551).FDLayoutConstants;function h(){}o(h,"CoSEConstants");for(var d in u)h[d]=u[d];h.DEFAULT_USE_MULTI_LEVEL_SCALING=!1,h.DEFAULT_RADIAL_SEPARATION=u.DEFAULT_EDGE_LENGTH,h.DEFAULT_COMPONENT_SEPERATION=60,h.TILE=!0,h.TILING_PADDING_VERTICAL=10,h.TILING_PADDING_HORIZONTAL=10,h.TRANSFORM_ON_CONSTRAINT_HANDLING=!0,h.ENFORCE_CONSTRAINTS=!0,h.APPLY_LAYOUT=!0,h.RELAX_MOVEMENT_ON_CONSTRAINTS=!0,h.TREE_REDUCTION_ON_INCREMENTAL=!0,h.PURE_INCREMENTAL=h.DEFAULT_INCREMENTAL,a.exports=h}),767:((a,s,l)=>{var u=l(551).FDLayoutEdge;function h(f,p,m){u.call(this,f,p,m)}o(h,"CoSEEdge"),h.prototype=Object.create(u.prototype);for(var d in u)h[d]=u[d];a.exports=h}),880:((a,s,l)=>{var u=l(551).LGraph;function h(f,p,m){u.call(this,f,p,m)}o(h,"CoSEGraph"),h.prototype=Object.create(u.prototype);for(var d in u)h[d]=u[d];a.exports=h}),578:((a,s,l)=>{var u=l(551).LGraphManager;function h(f){u.call(this,f)}o(h,"CoSEGraphManager"),h.prototype=Object.create(u.prototype);for(var d in u)h[d]=u[d];a.exports=h}),765:((a,s,l)=>{var u=l(551).FDLayout,h=l(578),d=l(880),f=l(991),p=l(767),m=l(806),g=l(902),y=l(551).FDLayoutConstants,v=l(551).LayoutConstants,x=l(551).Point,b=l(551).PointD,T=l(551).DimensionD,w=l(551).Layout,C=l(551).Integer,k=l(551).IGeometry,E=l(551).LGraph,A=l(551).Transform,N=l(551).LinkedList;function P(){u.call(this),this.toBeTiled={},this.constraints={}}o(P,"CoSELayout"),P.prototype=Object.create(u.prototype);for(var I in u)P[I]=u[I];P.prototype.newGraphManager=function(){var D=new h(this);return this.graphManager=D,D},P.prototype.newGraph=function(D){return new d(null,this.graphManager,D)},P.prototype.newNode=function(D){return new f(this.graphManager,D)},P.prototype.newEdge=function(D){return new p(null,null,D)},P.prototype.initParameters=function(){u.prototype.initParameters.call(this,arguments),this.isSubLayout||(m.DEFAULT_EDGE_LENGTH<10?this.idealEdgeLength=10:this.idealEdgeLength=m.DEFAULT_EDGE_LENGTH,this.useSmartIdealEdgeLengthCalculation=m.DEFAULT_USE_SMART_IDEAL_EDGE_LENGTH_CALCULATION,this.gravityConstant=y.DEFAULT_GRAVITY_STRENGTH,this.compoundGravityConstant=y.DEFAULT_COMPOUND_GRAVITY_STRENGTH,this.gravityRangeFactor=y.DEFAULT_GRAVITY_RANGE_FACTOR,this.compoundGravityRangeFactor=y.DEFAULT_COMPOUND_GRAVITY_RANGE_FACTOR,this.prunedNodesAll=[],this.growTreeIterations=0,this.afterGrowthIterations=0,this.isTreeGrowing=!1,this.isGrowthFinished=!1)},P.prototype.initSpringEmbedder=function(){u.prototype.initSpringEmbedder.call(this),this.coolingCycle=0,this.maxCoolingCycle=this.maxIterations/y.CONVERGENCE_CHECK_PERIOD,this.finalTemperature=.04,this.coolingAdjuster=1},P.prototype.layout=function(){var D=v.DEFAULT_CREATE_BENDS_AS_NEEDED;return D&&(this.createBendpoints(),this.graphManager.resetAllEdges()),this.level=0,this.classicLayout()},P.prototype.classicLayout=function(){if(this.nodesWithGravity=this.calculateNodesToApplyGravitationTo(),this.graphManager.setAllNodesToApplyGravitation(this.nodesWithGravity),this.calcNoOfChildrenForAllNodes(),this.graphManager.calcLowestCommonAncestors(),this.graphManager.calcInclusionTreeDepths(),this.graphManager.getRoot().calcEstimatedSize(),this.calcIdealEdgeLengths(),this.incremental){if(m.TREE_REDUCTION_ON_INCREMENTAL){this.reduceTrees(),this.graphManager.resetAllNodesToApplyGravitation();var _=new Set(this.getAllNodes()),R=this.nodesWithGravity.filter(function(B){return _.has(B)});this.graphManager.setAllNodesToApplyGravitation(R)}}else{var D=this.getFlatForest();if(D.length>0)this.positionNodesRadially(D);else{this.reduceTrees(),this.graphManager.resetAllNodesToApplyGravitation();var _=new Set(this.getAllNodes()),R=this.nodesWithGravity.filter(function(M){return _.has(M)});this.graphManager.setAllNodesToApplyGravitation(R),this.positionNodesRandomly()}}return Object.keys(this.constraints).length>0&&(g.handleConstraints(this),this.initConstraintVariables()),this.initSpringEmbedder(),m.APPLY_LAYOUT&&this.runSpringEmbedder(),!0},P.prototype.tick=function(){if(this.totalIterations++,this.totalIterations===this.maxIterations&&!this.isTreeGrowing&&!this.isGrowthFinished)if(this.prunedNodesAll.length>0)this.isTreeGrowing=!0;else return!0;if(this.totalIterations%y.CONVERGENCE_CHECK_PERIOD==0&&!this.isTreeGrowing&&!this.isGrowthFinished){if(this.isConverged())if(this.prunedNodesAll.length>0)this.isTreeGrowing=!0;else return!0;this.coolingCycle++,this.layoutQuality==0?this.coolingAdjuster=this.coolingCycle:this.layoutQuality==1&&(this.coolingAdjuster=this.coolingCycle/3),this.coolingFactor=Math.max(this.initialCoolingFactor-Math.pow(this.coolingCycle,Math.log(100*(this.initialCoolingFactor-this.finalTemperature))/Math.log(this.maxCoolingCycle))/100*this.coolingAdjuster,this.finalTemperature),this.animationPeriod=Math.ceil(this.initialAnimationPeriod*Math.sqrt(this.coolingFactor))}if(this.isTreeGrowing){if(this.growTreeIterations%10==0)if(this.prunedNodesAll.length>0){this.graphManager.updateBounds(),this.updateGrid(),this.growTree(this.prunedNodesAll),this.graphManager.resetAllNodesToApplyGravitation();var D=new Set(this.getAllNodes()),_=this.nodesWithGravity.filter(function(L){return D.has(L)});this.graphManager.setAllNodesToApplyGravitation(_),this.graphManager.updateBounds(),this.updateGrid(),m.PURE_INCREMENTAL?this.coolingFactor=y.DEFAULT_COOLING_FACTOR_INCREMENTAL/2:this.coolingFactor=y.DEFAULT_COOLING_FACTOR_INCREMENTAL}else this.isTreeGrowing=!1,this.isGrowthFinished=!0;this.growTreeIterations++}if(this.isGrowthFinished){if(this.isConverged())return!0;this.afterGrowthIterations%10==0&&(this.graphManager.updateBounds(),this.updateGrid()),m.PURE_INCREMENTAL?this.coolingFactor=y.DEFAULT_COOLING_FACTOR_INCREMENTAL/2*((100-this.afterGrowthIterations)/100):this.coolingFactor=y.DEFAULT_COOLING_FACTOR_INCREMENTAL*((100-this.afterGrowthIterations)/100),this.afterGrowthIterations++}var R=!this.isTreeGrowing&&!this.isGrowthFinished,M=this.growTreeIterations%10==1&&this.isTreeGrowing||this.afterGrowthIterations%10==1&&this.isGrowthFinished;return this.totalDisplacement=0,this.graphManager.updateBounds(),this.calcSpringForces(),this.calcRepulsionForces(R,M),this.calcGravitationalForces(),this.moveNodes(),this.animate(),!1},P.prototype.getPositionsData=function(){for(var D=this.graphManager.getAllNodes(),_={},R=0;R<D.length;R++){var M=D[R].rect,L=D[R].id;_[L]={id:L,x:M.getCenterX(),y:M.getCenterY(),w:M.width,h:M.height}}return _},P.prototype.runSpringEmbedder=function(){this.initialAnimationPeriod=25,this.animationPeriod=this.initialAnimationPeriod;var D=!1;if(y.ANIMATE==="during")this.emit("layoutstarted");else{for(;!D;)D=this.tick();this.graphManager.updateBounds()}},P.prototype.moveNodes=function(){for(var D=this.getAllNodes(),_,R=0;R<D.length;R++)_=D[R],_.calculateDisplacement();Object.keys(this.constraints).length>0&&this.updateDisplacements();for(var R=0;R<D.length;R++)_=D[R],_.move()},P.prototype.initConstraintVariables=function(){var D=this;this.idToNodeMap=new Map,this.fixedNodeSet=new Set;for(var _=this.graphManager.getAllNodes(),R=0;R<_.length;R++){var M=_[R];this.idToNodeMap.set(M.id,M)}var L=o(function Y(ae){for(var J=ae.getChild().getNodes(),te,re=0,ee=0;ee<J.length;ee++)te=J[ee],te.getChild()==null?D.fixedNodeSet.has(te.id)&&(re+=100):re+=Y(te);return re},"calculateCompoundWeight");if(this.constraints.fixedNodeConstraint){this.constraints.fixedNodeConstraint.forEach(function(J){D.fixedNodeSet.add(J.nodeId)});for(var _=this.graphManager.getAllNodes(),M,R=0;R<_.length;R++)if(M=_[R],M.getChild()!=null){var B=L(M);B>0&&(M.fixedNodeWeight=B)}}if(this.constraints.relativePlacementConstraint){var O=new Map,$=new Map;if(this.dummyToNodeForVerticalAlignment=new Map,this.dummyToNodeForHorizontalAlignment=new Map,this.fixedNodesOnHorizontal=new Set,this.fixedNodesOnVertical=new Set,this.fixedNodeSet.forEach(function(Y){D.fixedNodesOnHorizontal.add(Y),D.fixedNodesOnVertical.add(Y)}),this.constraints.alignmentConstraint){if(this.constraints.alignmentConstraint.vertical)for(var G=this.constraints.alignmentConstraint.vertical,R=0;R<G.length;R++)this.dummyToNodeForVerticalAlignment.set("dummy"+R,[]),G[R].forEach(function(ae){O.set(ae,"dummy"+R),D.dummyToNodeForVerticalAlignment.get("dummy"+R).push(ae),D.fixedNodeSet.has(ae)&&D.fixedNodesOnHorizontal.add("dummy"+R)});if(this.constraints.alignmentConstraint.horizontal)for(var F=this.constraints.alignmentConstraint.horizontal,R=0;R<F.length;R++)this.dummyToNodeForHorizontalAlignment.set("dummy"+R,[]),F[R].forEach(function(ae){$.set(ae,"dummy"+R),D.dummyToNodeForHorizontalAlignment.get("dummy"+R).push(ae),D.fixedNodeSet.has(ae)&&D.fixedNodesOnVertical.add("dummy"+R)})}if(m.RELAX_MOVEMENT_ON_CONSTRAINTS)this.shuffle=function(Y){var ae,J,te;for(te=Y.length-1;te>=2*Y.length/3;te--)ae=Math.floor(Math.random()*(te+1)),J=Y[te],Y[te]=Y[ae],Y[ae]=J;return Y},this.nodesInRelativeHorizontal=[],this.nodesInRelativeVertical=[],this.nodeToRelativeConstraintMapHorizontal=new Map,this.nodeToRelativeConstraintMapVertical=new Map,this.nodeToTempPositionMapHorizontal=new Map,this.nodeToTempPositionMapVertical=new Map,this.constraints.relativePlacementConstraint.forEach(function(Y){if(Y.left){var ae=O.has(Y.left)?O.get(Y.left):Y.left,J=O.has(Y.right)?O.get(Y.right):Y.right;D.nodesInRelativeHorizontal.includes(ae)||(D.nodesInRelativeHorizontal.push(ae),D.nodeToRelativeConstraintMapHorizontal.set(ae,[]),D.dummyToNodeForVerticalAlignment.has(ae)?D.nodeToTempPositionMapHorizontal.set(ae,D.idToNodeMap.get(D.dummyToNodeForVerticalAlignment.get(ae)[0]).getCenterX()):D.nodeToTempPositionMapHorizontal.set(ae,D.idToNodeMap.get(ae).getCenterX())),D.nodesInRelativeHorizontal.includes(J)||(D.nodesInRelativeHorizontal.push(J),D.nodeToRelativeConstraintMapHorizontal.set(J,[]),D.dummyToNodeForVerticalAlignment.has(J)?D.nodeToTempPositionMapHorizontal.set(J,D.idToNodeMap.get(D.dummyToNodeForVerticalAlignment.get(J)[0]).getCenterX()):D.nodeToTempPositionMapHorizontal.set(J,D.idToNodeMap.get(J).getCenterX())),D.nodeToRelativeConstraintMapHorizontal.get(ae).push({right:J,gap:Y.gap}),D.nodeToRelativeConstraintMapHorizontal.get(J).push({left:ae,gap:Y.gap})}else{var te=$.has(Y.top)?$.get(Y.top):Y.top,re=$.has(Y.bottom)?$.get(Y.bottom):Y.bottom;D.nodesInRelativeVertical.includes(te)||(D.nodesInRelativeVertical.push(te),D.nodeToRelativeConstraintMapVertical.set(te,[]),D.dummyToNodeForHorizontalAlignment.has(te)?D.nodeToTempPositionMapVertical.set(te,D.idToNodeMap.get(D.dummyToNodeForHorizontalAlignment.get(te)[0]).getCenterY()):D.nodeToTempPositionMapVertical.set(te,D.idToNodeMap.get(te).getCenterY())),D.nodesInRelativeVertical.includes(re)||(D.nodesInRelativeVertical.push(re),D.nodeToRelativeConstraintMapVertical.set(re,[]),D.dummyToNodeForHorizontalAlignment.has(re)?D.nodeToTempPositionMapVertical.set(re,D.idToNodeMap.get(D.dummyToNodeForHorizontalAlignment.get(re)[0]).getCenterY()):D.nodeToTempPositionMapVertical.set(re,D.idToNodeMap.get(re).getCenterY())),D.nodeToRelativeConstraintMapVertical.get(te).push({bottom:re,gap:Y.gap}),D.nodeToRelativeConstraintMapVertical.get(re).push({top:te,gap:Y.gap})}});else{var V=new Map,H=new Map;this.constraints.relativePlacementConstraint.forEach(function(Y){if(Y.left){var ae=O.has(Y.left)?O.get(Y.left):Y.left,J=O.has(Y.right)?O.get(Y.right):Y.right;V.has(ae)?V.get(ae).push(J):V.set(ae,[J]),V.has(J)?V.get(J).push(ae):V.set(J,[ae])}else{var te=$.has(Y.top)?$.get(Y.top):Y.top,re=$.has(Y.bottom)?$.get(Y.bottom):Y.bottom;H.has(te)?H.get(te).push(re):H.set(te,[re]),H.has(re)?H.get(re).push(te):H.set(re,[te])}});var j=o(function(ae,J){var te=[],re=[],ee=new N,Te=new Set,ue=0;return ae.forEach(function(De,Ie){if(!Te.has(Ie)){te[ue]=[],re[ue]=!1;var Ee=Ie;for(ee.push(Ee),Te.add(Ee),te[ue].push(Ee);ee.length!=0;){Ee=ee.shift(),J.has(Ee)&&(re[ue]=!0);var we=ae.get(Ee);we.forEach(function(Me){Te.has(Me)||(ee.push(Me),Te.add(Me),te[ue].push(Me))})}ue++}}),{components:te,isFixed:re}},"constructComponents"),U=j(V,D.fixedNodesOnHorizontal);this.componentsOnHorizontal=U.components,this.fixedComponentsOnHorizontal=U.isFixed;var Q=j(H,D.fixedNodesOnVertical);this.componentsOnVertical=Q.components,this.fixedComponentsOnVertical=Q.isFixed}}},P.prototype.updateDisplacements=function(){var D=this;if(this.constraints.fixedNodeConstraint&&this.constraints.fixedNodeConstraint.forEach(function(Q){var Y=D.idToNodeMap.get(Q.nodeId);Y.displacementX=0,Y.displacementY=0}),this.constraints.alignmentConstraint){if(this.constraints.alignmentConstraint.vertical)for(var _=this.constraints.alignmentConstraint.vertical,R=0;R<_.length;R++){for(var M=0,L=0;L<_[R].length;L++){if(this.fixedNodeSet.has(_[R][L])){M=0;break}M+=this.idToNodeMap.get(_[R][L]).displacementX}for(var B=M/_[R].length,L=0;L<_[R].length;L++)this.idToNodeMap.get(_[R][L]).displacementX=B}if(this.constraints.alignmentConstraint.horizontal)for(var O=this.constraints.alignmentConstraint.horizontal,R=0;R<O.length;R++){for(var $=0,L=0;L<O[R].length;L++){if(this.fixedNodeSet.has(O[R][L])){$=0;break}$+=this.idToNodeMap.get(O[R][L]).displacementY}for(var G=$/O[R].length,L=0;L<O[R].length;L++)this.idToNodeMap.get(O[R][L]).displacementY=G}}if(this.constraints.relativePlacementConstraint)if(m.RELAX_MOVEMENT_ON_CONSTRAINTS)this.totalIterations%10==0&&(this.shuffle(this.nodesInRelativeHorizontal),this.shuffle(this.nodesInRelativeVertical)),this.nodesInRelativeHorizontal.forEach(function(Q){if(!D.fixedNodesOnHorizontal.has(Q)){var Y=0;D.dummyToNodeForVerticalAlignment.has(Q)?Y=D.idToNodeMap.get(D.dummyToNodeForVerticalAlignment.get(Q)[0]).displacementX:Y=D.idToNodeMap.get(Q).displacementX,D.nodeToRelativeConstraintMapHorizontal.get(Q).forEach(function(ae){if(ae.right){var J=D.nodeToTempPositionMapHorizontal.get(ae.right)-D.nodeToTempPositionMapHorizontal.get(Q)-Y;J<ae.gap&&(Y-=ae.gap-J)}else{var J=D.nodeToTempPositionMapHorizontal.get(Q)-D.nodeToTempPositionMapHorizontal.get(ae.left)+Y;J<ae.gap&&(Y+=ae.gap-J)}}),D.nodeToTempPositionMapHorizontal.set(Q,D.nodeToTempPositionMapHorizontal.get(Q)+Y),D.dummyToNodeForVerticalAlignment.has(Q)?D.dummyToNodeForVerticalAlignment.get(Q).forEach(function(ae){D.idToNodeMap.get(ae).displacementX=Y}):D.idToNodeMap.get(Q).displacementX=Y}}),this.nodesInRelativeVertical.forEach(function(Q){if(!D.fixedNodesOnHorizontal.has(Q)){var Y=0;D.dummyToNodeForHorizontalAlignment.has(Q)?Y=D.idToNodeMap.get(D.dummyToNodeForHorizontalAlignment.get(Q)[0]).displacementY:Y=D.idToNodeMap.get(Q).displacementY,D.nodeToRelativeConstraintMapVertical.get(Q).forEach(function(ae){if(ae.bottom){var J=D.nodeToTempPositionMapVertical.get(ae.bottom)-D.nodeToTempPositionMapVertical.get(Q)-Y;J<ae.gap&&(Y-=ae.gap-J)}else{var J=D.nodeToTempPositionMapVertical.get(Q)-D.nodeToTempPositionMapVertical.get(ae.top)+Y;J<ae.gap&&(Y+=ae.gap-J)}}),D.nodeToTempPositionMapVertical.set(Q,D.nodeToTempPositionMapVertical.get(Q)+Y),D.dummyToNodeForHorizontalAlignment.has(Q)?D.dummyToNodeForHorizontalAlignment.get(Q).forEach(function(ae){D.idToNodeMap.get(ae).displacementY=Y}):D.idToNodeMap.get(Q).displacementY=Y}});else{for(var R=0;R<this.componentsOnHorizontal.length;R++){var F=this.componentsOnHorizontal[R];if(this.fixedComponentsOnHorizontal[R])for(var L=0;L<F.length;L++)this.dummyToNodeForVerticalAlignment.has(F[L])?this.dummyToNodeForVerticalAlignment.get(F[L]).forEach(function(ae){D.idToNodeMap.get(ae).displacementX=0}):this.idToNodeMap.get(F[L]).displacementX=0;else{for(var V=0,H=0,L=0;L<F.length;L++)if(this.dummyToNodeForVerticalAlignment.has(F[L])){var j=this.dummyToNodeForVerticalAlignment.get(F[L]);V+=j.length*this.idToNodeMap.get(j[0]).displacementX,H+=j.length}else V+=this.idToNodeMap.get(F[L]).displacementX,H++;for(var U=V/H,L=0;L<F.length;L++)this.dummyToNodeForVerticalAlignment.has(F[L])?this.dummyToNodeForVerticalAlignment.get(F[L]).forEach(function(ae){D.idToNodeMap.get(ae).displacementX=U}):this.idToNodeMap.get(F[L]).displacementX=U}}for(var R=0;R<this.componentsOnVertical.length;R++){var F=this.componentsOnVertical[R];if(this.fixedComponentsOnVertical[R])for(var L=0;L<F.length;L++)this.dummyToNodeForHorizontalAlignment.has(F[L])?this.dummyToNodeForHorizontalAlignment.get(F[L]).forEach(function(J){D.idToNodeMap.get(J).displacementY=0}):this.idToNodeMap.get(F[L]).displacementY=0;else{for(var V=0,H=0,L=0;L<F.length;L++)if(this.dummyToNodeForHorizontalAlignment.has(F[L])){var j=this.dummyToNodeForHorizontalAlignment.get(F[L]);V+=j.length*this.idToNodeMap.get(j[0]).displacementY,H+=j.length}else V+=this.idToNodeMap.get(F[L]).displacementY,H++;for(var U=V/H,L=0;L<F.length;L++)this.dummyToNodeForHorizontalAlignment.has(F[L])?this.dummyToNodeForHorizontalAlignment.get(F[L]).forEach(function(ee){D.idToNodeMap.get(ee).displacementY=U}):this.idToNodeMap.get(F[L]).displacementY=U}}}},P.prototype.calculateNodesToApplyGravitationTo=function(){var D=[],_,R=this.graphManager.getGraphs(),M=R.length,L;for(L=0;L<M;L++)_=R[L],_.updateConnected(),_.isConnected||(D=D.concat(_.getNodes()));return D},P.prototype.createBendpoints=function(){var D=[];D=D.concat(this.graphManager.getAllEdges());var _=new Set,R;for(R=0;R<D.length;R++){var M=D[R];if(!_.has(M)){var L=M.getSource(),B=M.getTarget();if(L==B)M.getBendpoints().push(new b),M.getBendpoints().push(new b),this.createDummyNodesForBendpoints(M),_.add(M);else{var O=[];if(O=O.concat(L.getEdgeListToNode(B)),O=O.concat(B.getEdgeListToNode(L)),!_.has(O[0])){if(O.length>1){var $;for($=0;$<O.length;$++){var G=O[$];G.getBendpoints().push(new b),this.createDummyNodesForBendpoints(G)}}O.forEach(function(F){_.add(F)})}}}if(_.size==D.length)break}},P.prototype.positionNodesRadially=function(D){for(var _=new x(0,0),R=Math.ceil(Math.sqrt(D.length)),M=0,L=0,B=0,O=new b(0,0),$=0;$<D.length;$++){$%R==0&&(B=0,L=M,$!=0&&(L+=m.DEFAULT_COMPONENT_SEPERATION),M=0);var G=D[$],F=w.findCenterOfTree(G);_.x=B,_.y=L,O=P.radialLayout(G,F,_),O.y>M&&(M=Math.floor(O.y)),B=Math.floor(O.x+m.DEFAULT_COMPONENT_SEPERATION)}this.transform(new b(v.WORLD_CENTER_X-O.x/2,v.WORLD_CENTER_Y-O.y/2))},P.radialLayout=function(D,_,R){var M=Math.max(this.maxDiagonalInTree(D),m.DEFAULT_RADIAL_SEPARATION);P.branchRadialLayout(_,null,0,359,0,M);var L=E.calculateBounds(D),B=new A;B.setDeviceOrgX(L.getMinX()),B.setDeviceOrgY(L.getMinY()),B.setWorldOrgX(R.x),B.setWorldOrgY(R.y);for(var O=0;O<D.length;O++){var $=D[O];$.transform(B)}var G=new b(L.getMaxX(),L.getMaxY());return B.inverseTransformPoint(G)},P.branchRadialLayout=function(D,_,R,M,L,B){var O=(M-R+1)/2;O<0&&(O+=180);var $=(O+R)%360,G=$*k.TWO_PI/360,F=Math.cos(G),V=L*Math.cos(G),H=L*Math.sin(G);D.setCenter(V,H);var j=[];j=j.concat(D.getEdges());var U=j.length;_!=null&&U--;for(var Q=0,Y=j.length,ae,J=D.getEdgesBetween(_);J.length>1;){var te=J[0];J.splice(0,1);var re=j.indexOf(te);re>=0&&j.splice(re,1),Y--,U--}_!=null?ae=(j.indexOf(J[0])+1)%Y:ae=0;for(var ee=Math.abs(M-R)/U,Te=ae;Q!=U;Te=++Te%Y){var ue=j[Te].getOtherEnd(D);if(ue!=_){var De=(R+Q*ee)%360,Ie=(De+ee)%360;P.branchRadialLayout(ue,D,De,Ie,L+B,B),Q++}}},P.maxDiagonalInTree=function(D){for(var _=C.MIN_VALUE,R=0;R<D.length;R++){var M=D[R],L=M.getDiagonal();L>_&&(_=L)}return _},P.prototype.calcRepulsionRange=function(){return 2*(this.level+1)*this.idealEdgeLength},P.prototype.groupZeroDegreeMembers=function(){var D=this,_={};this.memberGroups={},this.idToDummyNode={};for(var R=[],M=this.graphManager.getAllNodes(),L=0;L<M.length;L++){var B=M[L],O=B.getParent();this.getNodeDegreeWithChildren(B)===0&&(O.id==null||!this.getToBeTiled(O))&&R.push(B)}for(var L=0;L<R.length;L++){var B=R[L],$=B.getParent().id;typeof _[$]>"u"&&(_[$]=[]),_[$]=_[$].concat(B)}Object.keys(_).forEach(function(G){if(_[G].length>1){var F="DummyCompound_"+G;D.memberGroups[F]=_[G];var V=_[G][0].getParent(),H=new f(D.graphManager);H.id=F,H.paddingLeft=V.paddingLeft||0,H.paddingRight=V.paddingRight||0,H.paddingBottom=V.paddingBottom||0,H.paddingTop=V.paddingTop||0,D.idToDummyNode[F]=H;var j=D.getGraphManager().add(D.newGraph(),H),U=V.getChild();U.add(H);for(var Q=0;Q<_[G].length;Q++){var Y=_[G][Q];U.remove(Y),j.add(Y)}}})},P.prototype.clearCompounds=function(){var D={},_={};this.performDFSOnCompounds();for(var R=0;R<this.compoundOrder.length;R++)_[this.compoundOrder[R].id]=this.compoundOrder[R],D[this.compoundOrder[R].id]=[].concat(this.compoundOrder[R].getChild().getNodes()),this.graphManager.remove(this.compoundOrder[R].getChild()),this.compoundOrder[R].child=null;this.graphManager.resetAllNodes(),this.tileCompoundMembers(D,_)},P.prototype.clearZeroDegreeMembers=function(){var D=this,_=this.tiledZeroDegreePack=[];Object.keys(this.memberGroups).forEach(function(R){var M=D.idToDummyNode[R];if(_[R]=D.tileNodes(D.memberGroups[R],M.paddingLeft+M.paddingRight),M.rect.width=_[R].width,M.rect.height=_[R].height,M.setCenter(_[R].centerX,_[R].centerY),M.labelMarginLeft=0,M.labelMarginTop=0,m.NODE_DIMENSIONS_INCLUDE_LABELS){var L=M.rect.width,B=M.rect.height;M.labelWidth&&(M.labelPosHorizontal=="left"?(M.rect.x-=M.labelWidth,M.setWidth(L+M.labelWidth),M.labelMarginLeft=M.labelWidth):M.labelPosHorizontal=="center"&&M.labelWidth>L?(M.rect.x-=(M.labelWidth-L)/2,M.setWidth(M.labelWidth),M.labelMarginLeft=(M.labelWidth-L)/2):M.labelPosHorizontal=="right"&&M.setWidth(L+M.labelWidth)),M.labelHeight&&(M.labelPosVertical=="top"?(M.rect.y-=M.labelHeight,M.setHeight(B+M.labelHeight),M.labelMarginTop=M.labelHeight):M.labelPosVertical=="center"&&M.labelHeight>B?(M.rect.y-=(M.labelHeight-B)/2,M.setHeight(M.labelHeight),M.labelMarginTop=(M.labelHeight-B)/2):M.labelPosVertical=="bottom"&&M.setHeight(B+M.labelHeight))}})},P.prototype.repopulateCompounds=function(){for(var D=this.compoundOrder.length-1;D>=0;D--){var _=this.compoundOrder[D],R=_.id,M=_.paddingLeft,L=_.paddingTop,B=_.labelMarginLeft,O=_.labelMarginTop;this.adjustLocations(this.tiledMemberPack[R],_.rect.x,_.rect.y,M,L,B,O)}},P.prototype.repopulateZeroDegreeMembers=function(){var D=this,_=this.tiledZeroDegreePack;Object.keys(_).forEach(function(R){var M=D.idToDummyNode[R],L=M.paddingLeft,B=M.paddingTop,O=M.labelMarginLeft,$=M.labelMarginTop;D.adjustLocations(_[R],M.rect.x,M.rect.y,L,B,O,$)})},P.prototype.getToBeTiled=function(D){var _=D.id;if(this.toBeTiled[_]!=null)return this.toBeTiled[_];var R=D.getChild();if(R==null)return this.toBeTiled[_]=!1,!1;for(var M=R.getNodes(),L=0;L<M.length;L++){var B=M[L];if(this.getNodeDegree(B)>0)return this.toBeTiled[_]=!1,!1;if(B.getChild()==null){this.toBeTiled[B.id]=!1;continue}if(!this.getToBeTiled(B))return this.toBeTiled[_]=!1,!1}return this.toBeTiled[_]=!0,!0},P.prototype.getNodeDegree=function(D){for(var _=D.id,R=D.getEdges(),M=0,L=0;L<R.length;L++){var B=R[L];B.getSource().id!==B.getTarget().id&&(M=M+1)}return M},P.prototype.getNodeDegreeWithChildren=function(D){var _=this.getNodeDegree(D);if(D.getChild()==null)return _;for(var R=D.getChild().getNodes(),M=0;M<R.length;M++){var L=R[M];_+=this.getNodeDegreeWithChildren(L)}return _},P.prototype.performDFSOnCompounds=function(){this.compoundOrder=[],this.fillCompexOrderByDFS(this.graphManager.getRoot().getNodes())},P.prototype.fillCompexOrderByDFS=function(D){for(var _=0;_<D.length;_++){var R=D[_];R.getChild()!=null&&this.fillCompexOrderByDFS(R.getChild().getNodes()),this.getToBeTiled(R)&&this.compoundOrder.push(R)}},P.prototype.adjustLocations=function(D,_,R,M,L,B,O){_+=M+B,R+=L+O;for(var $=_,G=0;G<D.rows.length;G++){var F=D.rows[G];_=$;for(var V=0,H=0;H<F.length;H++){var j=F[H];j.rect.x=_,j.rect.y=R,_+=j.rect.width+D.horizontalPadding,j.rect.height>V&&(V=j.rect.height)}R+=V+D.verticalPadding}},P.prototype.tileCompoundMembers=function(D,_){var R=this;this.tiledMemberPack=[],Object.keys(D).forEach(function(M){var L=_[M];if(R.tiledMemberPack[M]=R.tileNodes(D[M],L.paddingLeft+L.paddingRight),L.rect.width=R.tiledMemberPack[M].width,L.rect.height=R.tiledMemberPack[M].height,L.setCenter(R.tiledMemberPack[M].centerX,R.tiledMemberPack[M].centerY),L.labelMarginLeft=0,L.labelMarginTop=0,m.NODE_DIMENSIONS_INCLUDE_LABELS){var B=L.rect.width,O=L.rect.height;L.labelWidth&&(L.labelPosHorizontal=="left"?(L.rect.x-=L.labelWidth,L.setWidth(B+L.labelWidth),L.labelMarginLeft=L.labelWidth):L.labelPosHorizontal=="center"&&L.labelWidth>B?(L.rect.x-=(L.labelWidth-B)/2,L.setWidth(L.labelWidth),L.labelMarginLeft=(L.labelWidth-B)/2):L.labelPosHorizontal=="right"&&L.setWidth(B+L.labelWidth)),L.labelHeight&&(L.labelPosVertical=="top"?(L.rect.y-=L.labelHeight,L.setHeight(O+L.labelHeight),L.labelMarginTop=L.labelHeight):L.labelPosVertical=="center"&&L.labelHeight>O?(L.rect.y-=(L.labelHeight-O)/2,L.setHeight(L.labelHeight),L.labelMarginTop=(L.labelHeight-O)/2):L.labelPosVertical=="bottom"&&L.setHeight(O+L.labelHeight))}})},P.prototype.tileNodes=function(D,_){var R=this.tileNodesByFavoringDim(D,_,!0),M=this.tileNodesByFavoringDim(D,_,!1),L=this.getOrgRatio(R),B=this.getOrgRatio(M),O;return B<L?O=M:O=R,O},P.prototype.getOrgRatio=function(D){var _=D.width,R=D.height,M=_/R;return M<1&&(M=1/M),M},P.prototype.calcIdealRowWidth=function(D,_){var R=m.TILING_PADDING_VERTICAL,M=m.TILING_PADDING_HORIZONTAL,L=D.length,B=0,O=0,$=0;D.forEach(function(Q){B+=Q.getWidth(),O+=Q.getHeight(),Q.getWidth()>$&&($=Q.getWidth())});var G=B/L,F=O/L,V=Math.pow(R-M,2)+4*(G+M)*(F+R)*L,H=(M-R+Math.sqrt(V))/(2*(G+M)),j;_?(j=Math.ceil(H),j==H&&j++):j=Math.floor(H);var U=j*(G+M)-M;return $>U&&(U=$),U+=M*2,U},P.prototype.tileNodesByFavoringDim=function(D,_,R){var M=m.TILING_PADDING_VERTICAL,L=m.TILING_PADDING_HORIZONTAL,B=m.TILING_COMPARE_BY,O={rows:[],rowWidth:[],rowHeight:[],width:0,height:_,verticalPadding:M,horizontalPadding:L,centerX:0,centerY:0};B&&(O.idealRowWidth=this.calcIdealRowWidth(D,R));var $=o(function(Y){return Y.rect.width*Y.rect.height},"getNodeArea"),G=o(function(Y,ae){return $(ae)-$(Y)},"areaCompareFcn");D.sort(function(Q,Y){var ae=G;return O.idealRowWidth?(ae=B,ae(Q.id,Y.id)):ae(Q,Y)});for(var F=0,V=0,H=0;H<D.length;H++){var j=D[H];F+=j.getCenterX(),V+=j.getCenterY()}O.centerX=F/D.length,O.centerY=V/D.length;for(var H=0;H<D.length;H++){var j=D[H];if(O.rows.length==0)this.insertNodeToRow(O,j,0,_);else if(this.canAddHorizontal(O,j.rect.width,j.rect.height)){var U=O.rows.length-1;O.idealRowWidth||(U=this.getShortestRowIndex(O)),this.insertNodeToRow(O,j,U,_)}else this.insertNodeToRow(O,j,O.rows.length,_);this.shiftToLastRow(O)}return O},P.prototype.insertNodeToRow=function(D,_,R,M){var L=M;if(R==D.rows.length){var B=[];D.rows.push(B),D.rowWidth.push(L),D.rowHeight.push(0)}var O=D.rowWidth[R]+_.rect.width;D.rows[R].length>0&&(O+=D.horizontalPadding),D.rowWidth[R]=O,D.width<O&&(D.width=O);var $=_.rect.height;R>0&&($+=D.verticalPadding);var G=0;$>D.rowHeight[R]&&(G=D.rowHeight[R],D.rowHeight[R]=$,G=D.rowHeight[R]-G),D.height+=G,D.rows[R].push(_)},P.prototype.getShortestRowIndex=function(D){for(var _=-1,R=Number.MAX_VALUE,M=0;M<D.rows.length;M++)D.rowWidth[M]<R&&(_=M,R=D.rowWidth[M]);return _},P.prototype.getLongestRowIndex=function(D){for(var _=-1,R=Number.MIN_VALUE,M=0;M<D.rows.length;M++)D.rowWidth[M]>R&&(_=M,R=D.rowWidth[M]);return _},P.prototype.canAddHorizontal=function(D,_,R){if(D.idealRowWidth){var M=D.rows.length-1,L=D.rowWidth[M];return L+_+D.horizontalPadding<=D.idealRowWidth}var B=this.getShortestRowIndex(D);if(B<0)return!0;var O=D.rowWidth[B];if(O+D.horizontalPadding+_<=D.width)return!0;var $=0;D.rowHeight[B]<R&&B>0&&($=R+D.verticalPadding-D.rowHeight[B]);var G;D.width-O>=_+D.horizontalPadding?G=(D.height+$)/(O+_+D.horizontalPadding):G=(D.height+$)/D.width,$=R+D.verticalPadding;var F;return D.width<_?F=(D.height+$)/_:F=(D.height+$)/D.width,F<1&&(F=1/F),G<1&&(G=1/G),G<F},P.prototype.shiftToLastRow=function(D){var _=this.getLongestRowIndex(D),R=D.rowWidth.length-1,M=D.rows[_],L=M[M.length-1],B=L.width+D.horizontalPadding;if(D.width-D.rowWidth[R]>B&&_!=R){M.splice(-1,1),D.rows[R].push(L),D.rowWidth[_]=D.rowWidth[_]-B,D.rowWidth[R]=D.rowWidth[R]+B,D.width=D.rowWidth[instance.getLongestRowIndex(D)];for(var O=Number.MIN_VALUE,$=0;$<M.length;$++)M[$].height>O&&(O=M[$].height);_>0&&(O+=D.verticalPadding);var G=D.rowHeight[_]+D.rowHeight[R];D.rowHeight[_]=O,D.rowHeight[R]<L.height+D.verticalPadding&&(D.rowHeight[R]=L.height+D.verticalPadding);var F=D.rowHeight[_]+D.rowHeight[R];D.height+=F-G,this.shiftToLastRow(D)}},P.prototype.tilingPreLayout=function(){m.TILE&&(this.groupZeroDegreeMembers(),this.clearCompounds(),this.clearZeroDegreeMembers())},P.prototype.tilingPostLayout=function(){m.TILE&&(this.repopulateZeroDegreeMembers(),this.repopulateCompounds())},P.prototype.reduceTrees=function(){for(var D=[],_=!0,R;_;){var M=this.graphManager.getAllNodes(),L=[];_=!1;for(var B=0;B<M.length;B++)if(R=M[B],R.getEdges().length==1&&!R.getEdges()[0].isInterGraph&&R.getChild()==null){if(m.PURE_INCREMENTAL){var O=R.getEdges()[0].getOtherEnd(R),$=new T(R.getCenterX()-O.getCenterX(),R.getCenterY()-O.getCenterY());L.push([R,R.getEdges()[0],R.getOwner(),$])}else L.push([R,R.getEdges()[0],R.getOwner()]);_=!0}if(_==!0){for(var G=[],F=0;F<L.length;F++)L[F][0].getEdges().length==1&&(G.push(L[F]),L[F][0].getOwner().remove(L[F][0]));D.push(G),this.graphManager.resetAllNodes(),this.graphManager.resetAllEdges()}}this.prunedNodesAll=D},P.prototype.growTree=function(D){for(var _=D.length,R=D[_-1],M,L=0;L<R.length;L++)M=R[L],this.findPlaceforPrunedNode(M),M[2].add(M[0]),M[2].add(M[1],M[1].source,M[1].target);D.splice(D.length-1,1),this.graphManager.resetAllNodes(),this.graphManager.resetAllEdges()},P.prototype.findPlaceforPrunedNode=function(D){var _,R,M=D[0];if(M==D[1].source?R=D[1].target:R=D[1].source,m.PURE_INCREMENTAL)M.setCenter(R.getCenterX()+D[3].getWidth(),R.getCenterY()+D[3].getHeight());else{var L=R.startX,B=R.finishX,O=R.startY,$=R.finishY,G=0,F=0,V=0,H=0,j=[G,V,F,H];if(O>0)for(var U=L;U<=B;U++)j[0]+=this.grid[U][O-1].length+this.grid[U][O].length-1;if(B<this.grid.length-1)for(var U=O;U<=$;U++)j[1]+=this.grid[B+1][U].length+this.grid[B][U].length-1;if($<this.grid[0].length-1)for(var U=L;U<=B;U++)j[2]+=this.grid[U][$+1].length+this.grid[U][$].length-1;if(L>0)for(var U=O;U<=$;U++)j[3]+=this.grid[L-1][U].length+this.grid[L][U].length-1;for(var Q=C.MAX_VALUE,Y,ae,J=0;J<j.length;J++)j[J]<Q?(Q=j[J],Y=1,ae=J):j[J]==Q&&Y++;if(Y==3&&Q==0)j[0]==0&&j[1]==0&&j[2]==0?_=1:j[0]==0&&j[1]==0&&j[3]==0?_=0:j[0]==0&&j[2]==0&&j[3]==0?_=3:j[1]==0&&j[2]==0&&j[3]==0&&(_=2);else if(Y==2&&Q==0){var te=Math.floor(Math.random()*2);j[0]==0&&j[1]==0?te==0?_=0:_=1:j[0]==0&&j[2]==0?te==0?_=0:_=2:j[0]==0&&j[3]==0?te==0?_=0:_=3:j[1]==0&&j[2]==0?te==0?_=1:_=2:j[1]==0&&j[3]==0?te==0?_=1:_=3:te==0?_=2:_=3}else if(Y==4&&Q==0){var te=Math.floor(Math.random()*4);_=te}else _=ae;_==0?M.setCenter(R.getCenterX(),R.getCenterY()-R.getHeight()/2-y.DEFAULT_EDGE_LENGTH-M.getHeight()/2):_==1?M.setCenter(R.getCenterX()+R.getWidth()/2+y.DEFAULT_EDGE_LENGTH+M.getWidth()/2,R.getCenterY()):_==2?M.setCenter(R.getCenterX(),R.getCenterY()+R.getHeight()/2+y.DEFAULT_EDGE_LENGTH+M.getHeight()/2):M.setCenter(R.getCenterX()-R.getWidth()/2-y.DEFAULT_EDGE_LENGTH-M.getWidth()/2,R.getCenterY())}},a.exports=P}),991:((a,s,l)=>{var u=l(551).FDLayoutNode,h=l(551).IMath;function d(p,m,g,y){u.call(this,p,m,g,y)}o(d,"CoSENode"),d.prototype=Object.create(u.prototype);for(var f in u)d[f]=u[f];d.prototype.calculateDisplacement=function(){var p=this.graphManager.getLayout();this.getChild()!=null&&this.fixedNodeWeight?(this.displacementX+=p.coolingFactor*(this.springForceX+this.repulsionForceX+this.gravitationForceX)/this.fixedNodeWeight,this.displacementY+=p.coolingFactor*(this.springForceY+this.repulsionForceY+this.gravitationForceY)/this.fixedNodeWeight):(this.displacementX+=p.coolingFactor*(this.springForceX+this.repulsionForceX+this.gravitationForceX)/this.noOfChildren,this.displacementY+=p.coolingFactor*(this.springForceY+this.repulsionForceY+this.gravitationForceY)/this.noOfChildren),Math.abs(this.displacementX)>p.coolingFactor*p.maxNodeDisplacement&&(this.displacementX=p.coolingFactor*p.maxNodeDisplacement*h.sign(this.displacementX)),Math.abs(this.displacementY)>p.coolingFactor*p.maxNodeDisplacement&&(this.displacementY=p.coolingFactor*p.maxNodeDisplacement*h.sign(this.displacementY)),this.child&&this.child.getNodes().length>0&&this.propogateDisplacementToChildren(this.displacementX,this.displacementY)},d.prototype.propogateDisplacementToChildren=function(p,m){for(var g=this.getChild().getNodes(),y,v=0;v<g.length;v++)y=g[v],y.getChild()==null?(y.displacementX+=p,y.displacementY+=m):y.propogateDisplacementToChildren(p,m)},d.prototype.move=function(){var p=this.graphManager.getLayout();(this.child==null||this.child.getNodes().length==0)&&(this.moveBy(this.displacementX,this.displacementY),p.totalDisplacement+=Math.abs(this.displacementX)+Math.abs(this.displacementY)),this.springForceX=0,this.springForceY=0,this.repulsionForceX=0,this.repulsionForceY=0,this.gravitationForceX=0,this.gravitationForceY=0,this.displacementX=0,this.displacementY=0},d.prototype.setPred1=function(p){this.pred1=p},d.prototype.getPred1=function(){return pred1},d.prototype.getPred2=function(){return pred2},d.prototype.setNext=function(p){this.next=p},d.prototype.getNext=function(){return next},d.prototype.setProcessed=function(p){this.processed=p},d.prototype.isProcessed=function(){return processed},a.exports=d}),902:((a,s,l)=>{function u(g){if(Array.isArray(g)){for(var y=0,v=Array(g.length);y<g.length;y++)v[y]=g[y];return v}else return Array.from(g)}o(u,"_toConsumableArray");var h=l(806),d=l(551).LinkedList,f=l(551).Matrix,p=l(551).SVD;function m(){}o(m,"ConstraintHandler"),m.handleConstraints=function(g){var y={};y.fixedNodeConstraint=g.constraints.fixedNodeConstraint,y.alignmentConstraint=g.constraints.alignmentConstraint,y.relativePlacementConstraint=g.constraints.relativePlacementConstraint;for(var v=new Map,x=new Map,b=[],T=[],w=g.getAllNodes(),C=0,k=0;k<w.length;k++){var E=w[k];E.getChild()==null&&(x.set(E.id,C++),b.push(E.getCenterX()),T.push(E.getCenterY()),v.set(E.id,E))}y.relativePlacementConstraint&&y.relativePlacementConstraint.forEach(function(ve){!ve.gap&&ve.gap!=0&&(ve.left?ve.gap=h.DEFAULT_EDGE_LENGTH+v.get(ve.left).getWidth()/2+v.get(ve.right).getWidth()/2:ve.gap=h.DEFAULT_EDGE_LENGTH+v.get(ve.top).getHeight()/2+v.get(ve.bottom).getHeight()/2)});var A=o(function(ie,fe){return{x:ie.x-fe.x,y:ie.y-fe.y}},"calculatePositionDiff"),N=o(function(ie){var fe=0,W=0;return ie.forEach(function(ce){fe+=b[x.get(ce)],W+=T[x.get(ce)]}),{x:fe/ie.size,y:W/ie.size}},"calculateAvgPosition"),P=o(function(ie,fe,W,ce,K){function Re(Ye,le){var st=new Set(Ye),me=!0,ot=!1,kt=void 0;try{for(var Gt=le[Symbol.iterator](),Tt;!(me=(Tt=Gt.next()).done);me=!0){var Et=Tt.value;st.add(Et)}}catch(yt){ot=!0,kt=yt}finally{try{!me&&Gt.return&&Gt.return()}finally{if(ot)throw kt}}return st}o(Re,"setUnion");var xe=new Map;ie.forEach(function(Ye,le){xe.set(le,0)}),ie.forEach(function(Ye,le){Ye.forEach(function(st){xe.set(st.id,xe.get(st.id)+1)})});var Oe=new Map,be=new Map,Be=new d;xe.forEach(function(Ye,le){Ye==0?(Be.push(le),W||(fe=="horizontal"?Oe.set(le,x.has(le)?b[x.get(le)]:ce.get(le)):Oe.set(le,x.has(le)?T[x.get(le)]:ce.get(le)))):Oe.set(le,Number.NEGATIVE_INFINITY),W&&be.set(le,new Set([le]))}),W&&K.forEach(function(Ye){var le=[];if(Ye.forEach(function(ot){W.has(ot)&&le.push(ot)}),le.length>0){var st=0;le.forEach(function(ot){fe=="horizontal"?(Oe.set(ot,x.has(ot)?b[x.get(ot)]:ce.get(ot)),st+=Oe.get(ot)):(Oe.set(ot,x.has(ot)?T[x.get(ot)]:ce.get(ot)),st+=Oe.get(ot))}),st=st/le.length,Ye.forEach(function(ot){W.has(ot)||Oe.set(ot,st)})}else{var me=0;Ye.forEach(function(ot){fe=="horizontal"?me+=x.has(ot)?b[x.get(ot)]:ce.get(ot):me+=x.has(ot)?T[x.get(ot)]:ce.get(ot)}),me=me/Ye.length,Ye.forEach(function(ot){Oe.set(ot,me)})}});for(var Ae=o(function(){var le=Be.shift(),st=ie.get(le);st.forEach(function(me){if(Oe.get(me.id)<Oe.get(le)+me.gap)if(W&&W.has(me.id)){var ot=void 0;if(fe=="horizontal"?ot=x.has(me.id)?b[x.get(me.id)]:ce.get(me.id):ot=x.has(me.id)?T[x.get(me.id)]:ce.get(me.id),Oe.set(me.id,ot),ot<Oe.get(le)+me.gap){var kt=Oe.get(le)+me.gap-ot;be.get(le).forEach(function(Gt){Oe.set(Gt,Oe.get(Gt)-kt)})}}else Oe.set(me.id,Oe.get(le)+me.gap);xe.set(me.id,xe.get(me.id)-1),xe.get(me.id)==0&&Be.push(me.id),W&&be.set(me.id,Re(be.get(le),be.get(me.id)))})},"_loop");Be.length!=0;)Ae();if(W){var Ve=new Set;ie.forEach(function(Ye,le){Ye.length==0&&Ve.add(le)});var Pe=[];be.forEach(function(Ye,le){if(Ve.has(le)){var st=!1,me=!0,ot=!1,kt=void 0;try{for(var Gt=Ye[Symbol.iterator](),Tt;!(me=(Tt=Gt.next()).done);me=!0){var Et=Tt.value;W.has(Et)&&(st=!0)}}catch(ht){ot=!0,kt=ht}finally{try{!me&&Gt.return&&Gt.return()}finally{if(ot)throw kt}}if(!st){var yt=!1,oe=void 0;Pe.forEach(function(ht,gt){ht.has([].concat(u(Ye))[0])&&(yt=!0,oe=gt)}),yt?Ye.forEach(function(ht){Pe[oe].add(ht)}):Pe.push(new Set(Ye))}}}),Pe.forEach(function(Ye,le){var st=Number.POSITIVE_INFINITY,me=Number.POSITIVE_INFINITY,ot=Number.NEGATIVE_INFINITY,kt=Number.NEGATIVE_INFINITY,Gt=!0,Tt=!1,Et=void 0;try{for(var yt=Ye[Symbol.iterator](),oe;!(Gt=(oe=yt.next()).done);Gt=!0){var ht=oe.value,gt=void 0;fe=="horizontal"?gt=x.has(ht)?b[x.get(ht)]:ce.get(ht):gt=x.has(ht)?T[x.get(ht)]:ce.get(ht);var et=Oe.get(ht);gt<st&&(st=gt),gt>ot&&(ot=gt),et<me&&(me=et),et>kt&&(kt=et)}}catch(lr){Tt=!0,Et=lr}finally{try{!Gt&&yt.return&&yt.return()}finally{if(Tt)throw Et}}var pe=(st+ot)/2-(me+kt)/2,Qe=!0,nt=!1,dt=void 0;try{for(var Ft=Ye[Symbol.iterator](),Rt;!(Qe=(Rt=Ft.next()).done);Qe=!0){var $t=Rt.value;Oe.set($t,Oe.get($t)+pe)}}catch(lr){nt=!0,dt=lr}finally{try{!Qe&&Ft.return&&Ft.return()}finally{if(nt)throw dt}}})}return Oe},"findAppropriatePositionForRelativePlacement"),I=o(function(ie){var fe=0,W=0,ce=0,K=0;if(ie.forEach(function(be){be.left?b[x.get(be.left)]-b[x.get(be.right)]>=0?fe++:W++:T[x.get(be.top)]-T[x.get(be.bottom)]>=0?ce++:K++}),fe>W&&ce>K)for(var Re=0;Re<x.size;Re++)b[Re]=-1*b[Re],T[Re]=-1*T[Re];else if(fe>W)for(var xe=0;xe<x.size;xe++)b[xe]=-1*b[xe];else if(ce>K)for(var Oe=0;Oe<x.size;Oe++)T[Oe]=-1*T[Oe]},"applyReflectionForRelativePlacement"),D=o(function(ie){var fe=[],W=new d,ce=new Set,K=0;return ie.forEach(function(Re,xe){if(!ce.has(xe)){fe[K]=[];var Oe=xe;for(W.push(Oe),ce.add(Oe),fe[K].push(Oe);W.length!=0;){Oe=W.shift();var be=ie.get(Oe);be.forEach(function(Be){ce.has(Be.id)||(W.push(Be.id),ce.add(Be.id),fe[K].push(Be.id))})}K++}}),fe},"findComponents"),_=o(function(ie){var fe=new Map;return ie.forEach(function(W,ce){fe.set(ce,[])}),ie.forEach(function(W,ce){W.forEach(function(K){fe.get(ce).push(K),fe.get(K.id).push({id:ce,gap:K.gap,direction:K.direction})})}),fe},"dagToUndirected"),R=o(function(ie){var fe=new Map;return ie.forEach(function(W,ce){fe.set(ce,[])}),ie.forEach(function(W,ce){W.forEach(function(K){fe.get(K.id).push({id:ce,gap:K.gap,direction:K.direction})})}),fe},"dagToReversed"),M=[],L=[],B=!1,O=!1,$=new Set,G=new Map,F=new Map,V=[];if(y.fixedNodeConstraint&&y.fixedNodeConstraint.forEach(function(ve){$.add(ve.nodeId)}),y.relativePlacementConstraint&&(y.relativePlacementConstraint.forEach(function(ve){ve.left?(G.has(ve.left)?G.get(ve.left).push({id:ve.right,gap:ve.gap,direction:"horizontal"}):G.set(ve.left,[{id:ve.right,gap:ve.gap,direction:"horizontal"}]),G.has(ve.right)||G.set(ve.right,[])):(G.has(ve.top)?G.get(ve.top).push({id:ve.bottom,gap:ve.gap,direction:"vertical"}):G.set(ve.top,[{id:ve.bottom,gap:ve.gap,direction:"vertical"}]),G.has(ve.bottom)||G.set(ve.bottom,[]))}),F=_(G),V=D(F)),h.TRANSFORM_ON_CONSTRAINT_HANDLING){if(y.fixedNodeConstraint&&y.fixedNodeConstraint.length>1)y.fixedNodeConstraint.forEach(function(ve,ie){M[ie]=[ve.position.x,ve.position.y],L[ie]=[b[x.get(ve.nodeId)],T[x.get(ve.nodeId)]]}),B=!0;else if(y.alignmentConstraint)(function(){var ve=0;if(y.alignmentConstraint.vertical){for(var ie=y.alignmentConstraint.vertical,fe=o(function(Oe){var be=new Set;ie[Oe].forEach(function(Ve){be.add(Ve)});var Be=new Set([].concat(u(be)).filter(function(Ve){return $.has(Ve)})),Ae=void 0;Be.size>0?Ae=b[x.get(Be.values().next().value)]:Ae=N(be).x,ie[Oe].forEach(function(Ve){M[ve]=[Ae,T[x.get(Ve)]],L[ve]=[b[x.get(Ve)],T[x.get(Ve)]],ve++})},"_loop2"),W=0;W<ie.length;W++)fe(W);B=!0}if(y.alignmentConstraint.horizontal){for(var ce=y.alignmentConstraint.horizontal,K=o(function(Oe){var be=new Set;ce[Oe].forEach(function(Ve){be.add(Ve)});var Be=new Set([].concat(u(be)).filter(function(Ve){return $.has(Ve)})),Ae=void 0;Be.size>0?Ae=b[x.get(Be.values().next().value)]:Ae=N(be).y,ce[Oe].forEach(function(Ve){M[ve]=[b[x.get(Ve)],Ae],L[ve]=[b[x.get(Ve)],T[x.get(Ve)]],ve++})},"_loop3"),Re=0;Re<ce.length;Re++)K(Re);B=!0}y.relativePlacementConstraint&&(O=!0)})();else if(y.relativePlacementConstraint){for(var H=0,j=0,U=0;U<V.length;U++)V[U].length>H&&(H=V[U].length,j=U);if(H<F.size/2)I(y.relativePlacementConstraint),B=!1,O=!1;else{var Q=new Map,Y=new Map,ae=[];V[j].forEach(function(ve){G.get(ve).forEach(function(ie){ie.direction=="horizontal"?(Q.has(ve)?Q.get(ve).push(ie):Q.set(ve,[ie]),Q.has(ie.id)||Q.set(ie.id,[]),ae.push({left:ve,right:ie.id})):(Y.has(ve)?Y.get(ve).push(ie):Y.set(ve,[ie]),Y.has(ie.id)||Y.set(ie.id,[]),ae.push({top:ve,bottom:ie.id}))})}),I(ae),O=!1;var J=P(Q,"horizontal"),te=P(Y,"vertical");V[j].forEach(function(ve,ie){L[ie]=[b[x.get(ve)],T[x.get(ve)]],M[ie]=[],J.has(ve)?M[ie][0]=J.get(ve):M[ie][0]=b[x.get(ve)],te.has(ve)?M[ie][1]=te.get(ve):M[ie][1]=T[x.get(ve)]}),B=!0}}if(B){for(var re=void 0,ee=f.transpose(M),Te=f.transpose(L),ue=0;ue<ee.length;ue++)ee[ue]=f.multGamma(ee[ue]),Te[ue]=f.multGamma(Te[ue]);var De=f.multMat(ee,f.transpose(Te)),Ie=p.svd(De);re=f.multMat(Ie.V,f.transpose(Ie.U));for(var Ee=0;Ee<x.size;Ee++){var we=[b[Ee],T[Ee]],Me=[re[0][0],re[1][0]],$e=[re[0][1],re[1][1]];b[Ee]=f.dotProduct(we,Me),T[Ee]=f.dotProduct(we,$e)}O&&I(y.relativePlacementConstraint)}}if(h.ENFORCE_CONSTRAINTS){if(y.fixedNodeConstraint&&y.fixedNodeConstraint.length>0){var de={x:0,y:0};y.fixedNodeConstraint.forEach(function(ve,ie){var fe={x:b[x.get(ve.nodeId)],y:T[x.get(ve.nodeId)]},W=ve.position,ce=A(W,fe);de.x+=ce.x,de.y+=ce.y}),de.x/=y.fixedNodeConstraint.length,de.y/=y.fixedNodeConstraint.length,b.forEach(function(ve,ie){b[ie]+=de.x}),T.forEach(function(ve,ie){T[ie]+=de.y}),y.fixedNodeConstraint.forEach(function(ve){b[x.get(ve.nodeId)]=ve.position.x,T[x.get(ve.nodeId)]=ve.position.y})}if(y.alignmentConstraint){if(y.alignmentConstraint.vertical)for(var rt=y.alignmentConstraint.vertical,ke=o(function(ie){var fe=new Set;rt[ie].forEach(function(K){fe.add(K)});var W=new Set([].concat(u(fe)).filter(function(K){return $.has(K)})),ce=void 0;W.size>0?ce=b[x.get(W.values().next().value)]:ce=N(fe).x,fe.forEach(function(K){$.has(K)||(b[x.get(K)]=ce)})},"_loop4"),Fe=0;Fe<rt.length;Fe++)ke(Fe);if(y.alignmentConstraint.horizontal)for(var He=y.alignmentConstraint.horizontal,at=o(function(ie){var fe=new Set;He[ie].forEach(function(K){fe.add(K)});var W=new Set([].concat(u(fe)).filter(function(K){return $.has(K)})),ce=void 0;W.size>0?ce=T[x.get(W.values().next().value)]:ce=N(fe).y,fe.forEach(function(K){$.has(K)||(T[x.get(K)]=ce)})},"_loop5"),qe=0;qe<He.length;qe++)at(qe)}y.relativePlacementConstraint&&(function(){var ve=new Map,ie=new Map,fe=new Map,W=new Map,ce=new Map,K=new Map,Re=new Set,xe=new Set;if($.forEach(function(pi){Re.add(pi),xe.add(pi)}),y.alignmentConstraint){if(y.alignmentConstraint.vertical)for(var Oe=y.alignmentConstraint.vertical,be=o(function(zt){fe.set("dummy"+zt,[]),Oe[zt].forEach(function(Mt){ve.set(Mt,"dummy"+zt),fe.get("dummy"+zt).push(Mt),$.has(Mt)&&Re.add("dummy"+zt)}),ce.set("dummy"+zt,b[x.get(Oe[zt][0])])},"_loop6"),Be=0;Be<Oe.length;Be++)be(Be);if(y.alignmentConstraint.horizontal)for(var Ae=y.alignmentConstraint.horizontal,Ve=o(function(zt){W.set("dummy"+zt,[]),Ae[zt].forEach(function(Mt){ie.set(Mt,"dummy"+zt),W.get("dummy"+zt).push(Mt),$.has(Mt)&&xe.add("dummy"+zt)}),K.set("dummy"+zt,T[x.get(Ae[zt][0])])},"_loop7"),Pe=0;Pe<Ae.length;Pe++)Ve(Pe)}var Ye=new Map,le=new Map,st=o(function(zt){G.get(zt).forEach(function(Mt){var qt=void 0,Qt=void 0;Mt.direction=="horizontal"?(qt=ve.get(zt)?ve.get(zt):zt,ve.get(Mt.id)?Qt={id:ve.get(Mt.id),gap:Mt.gap,direction:Mt.direction}:Qt=Mt,Ye.has(qt)?Ye.get(qt).push(Qt):Ye.set(qt,[Qt]),Ye.has(Qt.id)||Ye.set(Qt.id,[])):(qt=ie.get(zt)?ie.get(zt):zt,ie.get(Mt.id)?Qt={id:ie.get(Mt.id),gap:Mt.gap,direction:Mt.direction}:Qt=Mt,le.has(qt)?le.get(qt).push(Qt):le.set(qt,[Qt]),le.has(Qt.id)||le.set(Qt.id,[]))})},"_loop8"),me=!0,ot=!1,kt=void 0;try{for(var Gt=G.keys()[Symbol.iterator](),Tt;!(me=(Tt=Gt.next()).done);me=!0){var Et=Tt.value;st(Et)}}catch(pi){ot=!0,kt=pi}finally{try{!me&&Gt.return&&Gt.return()}finally{if(ot)throw kt}}var yt=_(Ye),oe=_(le),ht=D(yt),gt=D(oe),et=R(Ye),pe=R(le),Qe=[],nt=[];ht.forEach(function(pi,zt){Qe[zt]=[],pi.forEach(function(Mt){et.get(Mt).length==0&&Qe[zt].push(Mt)})}),gt.forEach(function(pi,zt){nt[zt]=[],pi.forEach(function(Mt){pe.get(Mt).length==0&&nt[zt].push(Mt)})});var dt=P(Ye,"horizontal",Re,ce,Qe),Ft=P(le,"vertical",xe,K,nt),Rt=o(function(zt){fe.get(zt)?fe.get(zt).forEach(function(Mt){b[x.get(Mt)]=dt.get(zt)}):b[x.get(zt)]=dt.get(zt)},"_loop9"),$t=!0,lr=!1,pt=void 0;try{for(var Se=dt.keys()[Symbol.iterator](),it;!($t=(it=Se.next()).done);$t=!0){var xt=it.value;Rt(xt)}}catch(pi){lr=!0,pt=pi}finally{try{!$t&&Se.return&&Se.return()}finally{if(lr)throw pt}}var rr=o(function(zt){W.get(zt)?W.get(zt).forEach(function(Mt){T[x.get(Mt)]=Ft.get(zt)}):T[x.get(zt)]=Ft.get(zt)},"_loop10"),_r=!0,Ur=!1,Dr=void 0;try{for(var Xi=Ft.keys()[Symbol.iterator](),In;!(_r=(In=Xi.next()).done);_r=!0){var xt=In.value;rr(xt)}}catch(pi){Ur=!0,Dr=pi}finally{try{!_r&&Xi.return&&Xi.return()}finally{if(Ur)throw Dr}}})()}for(var Ue=0;Ue<w.length;Ue++){var ye=w[Ue];ye.getChild()==null&&ye.setCenter(b[x.get(ye.id)],T[x.get(ye.id)])}},a.exports=m}),551:(a=>{a.exports=e})},r={};function i(a){var s=r[a];if(s!==void 0)return s.exports;var l=r[a]={exports:{}};return t[a](l,l.exports,i),l.exports}o(i,"__webpack_require__");var n=i(45);return n})()})});var SRe=Js((dC,Uq)=>{"use strict";o((function(t,r){typeof dC=="object"&&typeof Uq=="object"?Uq.exports=r(qq()):typeof define=="function"&&define.amd?define(["cose-base"],r):typeof dC=="object"?dC.cytoscapeFcose=r(qq()):t.cytoscapeFcose=r(t.coseBase)}),"webpackUniversalModuleDefinition")(dC,function(e){return(()=>{"use strict";var t={658:(a=>{a.exports=Object.assign!=null?Object.assign.bind(Object):function(s){for(var l=arguments.length,u=Array(l>1?l-1:0),h=1;h<l;h++)u[h-1]=arguments[h];return u.forEach(function(d){Object.keys(d).forEach(function(f){return s[f]=d[f]})}),s}}),548:((a,s,l)=>{var u=(function(){function f(p,m){var g=[],y=!0,v=!1,x=void 0;try{for(var b=p[Symbol.iterator](),T;!(y=(T=b.next()).done)&&(g.push(T.value),!(m&&g.length===m));y=!0);}catch(w){v=!0,x=w}finally{try{!y&&b.return&&b.return()}finally{if(v)throw x}}return g}return o(f,"sliceIterator"),function(p,m){if(Array.isArray(p))return p;if(Symbol.iterator in Object(p))return f(p,m);throw new TypeError("Invalid attempt to destructure non-iterable instance")}})(),h=l(140).layoutBase.LinkedList,d={};d.getTopMostNodes=function(f){for(var p={},m=0;m<f.length;m++)p[f[m].id()]=!0;var g=f.filter(function(y,v){typeof y=="number"&&(y=v);for(var x=y.parent()[0];x!=null;){if(p[x.id()])return!1;x=x.parent()[0]}return!0});return g},d.connectComponents=function(f,p,m,g){var y=new h,v=new Set,x=[],b=void 0,T=void 0,w=void 0,C=!1,k=1,E=[],A=[],N=o(function(){var I=f.collection();A.push(I);var D=m[0],_=f.collection();_.merge(D).merge(D.descendants().intersection(p)),x.push(D),_.forEach(function(L){y.push(L),v.add(L),I.merge(L)});for(var R=o(function(){D=y.shift();var B=f.collection();D.neighborhood().nodes().forEach(function(F){p.intersection(D.edgesWith(F)).length>0&&B.merge(F)});for(var O=0;O<B.length;O++){var $=B[O];if(b=m.intersection($.union($.ancestors())),b!=null&&!v.has(b[0])){var G=b.union(b.descendants());G.forEach(function(F){y.push(F),v.add(F),I.merge(F),m.has(F)&&x.push(F)})}}},"_loop2");y.length!=0;)R();if(I.forEach(function(L){p.intersection(L.connectedEdges()).forEach(function(B){I.has(B.source())&&I.has(B.target())&&I.merge(B)})}),x.length==m.length&&(C=!0),!C||C&&k>1){T=x[0],w=T.connectedEdges().length,x.forEach(function(L){L.connectedEdges().length<w&&(w=L.connectedEdges().length,T=L)}),E.push(T.id());var M=f.collection();M.merge(x[0]),x.forEach(function(L){M.merge(L)}),x=[],m=m.difference(M),k++}},"_loop");do N();while(!C);return g&&E.length>0&&g.set("dummy"+(g.size+1),E),A},d.relocateComponent=function(f,p,m){if(!m.fixedNodeConstraint){var g=Number.POSITIVE_INFINITY,y=Number.NEGATIVE_INFINITY,v=Number.POSITIVE_INFINITY,x=Number.NEGATIVE_INFINITY;if(m.quality=="draft"){var b=!0,T=!1,w=void 0;try{for(var C=p.nodeIndexes[Symbol.iterator](),k;!(b=(k=C.next()).done);b=!0){var E=k.value,A=u(E,2),N=A[0],P=A[1],I=m.cy.getElementById(N);if(I){var D=I.boundingBox(),_=p.xCoords[P]-D.w/2,R=p.xCoords[P]+D.w/2,M=p.yCoords[P]-D.h/2,L=p.yCoords[P]+D.h/2;_<g&&(g=_),R>y&&(y=R),M<v&&(v=M),L>x&&(x=L)}}}catch(F){T=!0,w=F}finally{try{!b&&C.return&&C.return()}finally{if(T)throw w}}var B=f.x-(y+g)/2,O=f.y-(x+v)/2;p.xCoords=p.xCoords.map(function(F){return F+B}),p.yCoords=p.yCoords.map(function(F){return F+O})}else{Object.keys(p).forEach(function(F){var V=p[F],H=V.getRect().x,j=V.getRect().x+V.getRect().width,U=V.getRect().y,Q=V.getRect().y+V.getRect().height;H<g&&(g=H),j>y&&(y=j),U<v&&(v=U),Q>x&&(x=Q)});var $=f.x-(y+g)/2,G=f.y-(x+v)/2;Object.keys(p).forEach(function(F){var V=p[F];V.setCenter(V.getCenterX()+$,V.getCenterY()+G)})}}},d.calcBoundingBox=function(f,p,m,g){for(var y=Number.MAX_SAFE_INTEGER,v=Number.MIN_SAFE_INTEGER,x=Number.MAX_SAFE_INTEGER,b=Number.MIN_SAFE_INTEGER,T=void 0,w=void 0,C=void 0,k=void 0,E=f.descendants().not(":parent"),A=E.length,N=0;N<A;N++){var P=E[N];T=p[g.get(P.id())]-P.width()/2,w=p[g.get(P.id())]+P.width()/2,C=m[g.get(P.id())]-P.height()/2,k=m[g.get(P.id())]+P.height()/2,y>T&&(y=T),v<w&&(v=w),x>C&&(x=C),b<k&&(b=k)}var I={};return I.topLeftX=y,I.topLeftY=x,I.width=v-y,I.height=b-x,I},d.calcParentsWithoutChildren=function(f,p){var m=f.collection();return p.nodes(":parent").forEach(function(g){var y=!1;g.children().forEach(function(v){v.css("display")!="none"&&(y=!0)}),y||m.merge(g)}),m},a.exports=d}),816:((a,s,l)=>{var u=l(548),h=l(140).CoSELayout,d=l(140).CoSENode,f=l(140).layoutBase.PointD,p=l(140).layoutBase.DimensionD,m=l(140).layoutBase.LayoutConstants,g=l(140).layoutBase.FDLayoutConstants,y=l(140).CoSEConstants,v=o(function(b,T){var w=b.cy,C=b.eles,k=C.nodes(),E=C.edges(),A=void 0,N=void 0,P=void 0,I={};b.randomize&&(A=T.nodeIndexes,N=T.xCoords,P=T.yCoords);var D=o(function(F){return typeof F=="function"},"isFn"),_=o(function(F,V){return D(F)?F(V):F},"optFn"),R=u.calcParentsWithoutChildren(w,C),M=o(function G(F,V,H,j){for(var U=V.length,Q=0;Q<U;Q++){var Y=V[Q],ae=null;Y.intersection(R).length==0&&(ae=Y.children());var J=void 0,te=Y.layoutDimensions({nodeDimensionsIncludeLabels:j.nodeDimensionsIncludeLabels});if(Y.outerWidth()!=null&&Y.outerHeight()!=null)if(j.randomize)if(!Y.isParent())J=F.add(new d(H.graphManager,new f(N[A.get(Y.id())]-te.w/2,P[A.get(Y.id())]-te.h/2),new p(parseFloat(te.w),parseFloat(te.h))));else{var re=u.calcBoundingBox(Y,N,P,A);Y.intersection(R).length==0?J=F.add(new d(H.graphManager,new f(re.topLeftX,re.topLeftY),new p(re.width,re.height))):J=F.add(new d(H.graphManager,new f(re.topLeftX,re.topLeftY),new p(parseFloat(te.w),parseFloat(te.h))))}else J=F.add(new d(H.graphManager,new f(Y.position("x")-te.w/2,Y.position("y")-te.h/2),new p(parseFloat(te.w),parseFloat(te.h))));else J=F.add(new d(this.graphManager));if(J.id=Y.data("id"),J.nodeRepulsion=_(j.nodeRepulsion,Y),J.paddingLeft=parseInt(Y.css("padding")),J.paddingTop=parseInt(Y.css("padding")),J.paddingRight=parseInt(Y.css("padding")),J.paddingBottom=parseInt(Y.css("padding")),j.nodeDimensionsIncludeLabels&&(J.labelWidth=Y.boundingBox({includeLabels:!0,includeNodes:!1,includeOverlays:!1}).w,J.labelHeight=Y.boundingBox({includeLabels:!0,includeNodes:!1,includeOverlays:!1}).h,J.labelPosVertical=Y.css("text-valign"),J.labelPosHorizontal=Y.css("text-halign")),I[Y.data("id")]=J,isNaN(J.rect.x)&&(J.rect.x=0),isNaN(J.rect.y)&&(J.rect.y=0),ae!=null&&ae.length>0){var ee=void 0;ee=H.getGraphManager().add(H.newGraph(),J),G(ee,ae,H,j)}}},"processChildrenList"),L=o(function(F,V,H){for(var j=0,U=0,Q=0;Q<H.length;Q++){var Y=H[Q],ae=I[Y.data("source")],J=I[Y.data("target")];if(ae&&J&&ae!==J&&ae.getEdgesBetween(J).length==0){var te=V.add(F.newEdge(),ae,J);te.id=Y.id(),te.idealLength=_(b.idealEdgeLength,Y),te.edgeElasticity=_(b.edgeElasticity,Y),j+=te.idealLength,U++}}b.idealEdgeLength!=null&&(U>0?y.DEFAULT_EDGE_LENGTH=g.DEFAULT_EDGE_LENGTH=j/U:D(b.idealEdgeLength)?y.DEFAULT_EDGE_LENGTH=g.DEFAULT_EDGE_LENGTH=50:y.DEFAULT_EDGE_LENGTH=g.DEFAULT_EDGE_LENGTH=b.idealEdgeLength,y.MIN_REPULSION_DIST=g.MIN_REPULSION_DIST=g.DEFAULT_EDGE_LENGTH/10,y.DEFAULT_RADIAL_SEPARATION=g.DEFAULT_EDGE_LENGTH)},"processEdges"),B=o(function(F,V){V.fixedNodeConstraint&&(F.constraints.fixedNodeConstraint=V.fixedNodeConstraint),V.alignmentConstraint&&(F.constraints.alignmentConstraint=V.alignmentConstraint),V.relativePlacementConstraint&&(F.constraints.relativePlacementConstraint=V.relativePlacementConstraint)},"processConstraints");b.nestingFactor!=null&&(y.PER_LEVEL_IDEAL_EDGE_LENGTH_FACTOR=g.PER_LEVEL_IDEAL_EDGE_LENGTH_FACTOR=b.nestingFactor),b.gravity!=null&&(y.DEFAULT_GRAVITY_STRENGTH=g.DEFAULT_GRAVITY_STRENGTH=b.gravity),b.numIter!=null&&(y.MAX_ITERATIONS=g.MAX_ITERATIONS=b.numIter),b.gravityRange!=null&&(y.DEFAULT_GRAVITY_RANGE_FACTOR=g.DEFAULT_GRAVITY_RANGE_FACTOR=b.gravityRange),b.gravityCompound!=null&&(y.DEFAULT_COMPOUND_GRAVITY_STRENGTH=g.DEFAULT_COMPOUND_GRAVITY_STRENGTH=b.gravityCompound),b.gravityRangeCompound!=null&&(y.DEFAULT_COMPOUND_GRAVITY_RANGE_FACTOR=g.DEFAULT_COMPOUND_GRAVITY_RANGE_FACTOR=b.gravityRangeCompound),b.initialEnergyOnIncremental!=null&&(y.DEFAULT_COOLING_FACTOR_INCREMENTAL=g.DEFAULT_COOLING_FACTOR_INCREMENTAL=b.initialEnergyOnIncremental),b.tilingCompareBy!=null&&(y.TILING_COMPARE_BY=b.tilingCompareBy),b.quality=="proof"?m.QUALITY=2:m.QUALITY=0,y.NODE_DIMENSIONS_INCLUDE_LABELS=g.NODE_DIMENSIONS_INCLUDE_LABELS=m.NODE_DIMENSIONS_INCLUDE_LABELS=b.nodeDimensionsIncludeLabels,y.DEFAULT_INCREMENTAL=g.DEFAULT_INCREMENTAL=m.DEFAULT_INCREMENTAL=!b.randomize,y.ANIMATE=g.ANIMATE=m.ANIMATE=b.animate,y.TILE=b.tile,y.TILING_PADDING_VERTICAL=typeof b.tilingPaddingVertical=="function"?b.tilingPaddingVertical.call():b.tilingPaddingVertical,y.TILING_PADDING_HORIZONTAL=typeof b.tilingPaddingHorizontal=="function"?b.tilingPaddingHorizontal.call():b.tilingPaddingHorizontal,y.DEFAULT_INCREMENTAL=g.DEFAULT_INCREMENTAL=m.DEFAULT_INCREMENTAL=!0,y.PURE_INCREMENTAL=!b.randomize,m.DEFAULT_UNIFORM_LEAF_NODE_SIZES=b.uniformNodeDimensions,b.step=="transformed"&&(y.TRANSFORM_ON_CONSTRAINT_HANDLING=!0,y.ENFORCE_CONSTRAINTS=!1,y.APPLY_LAYOUT=!1),b.step=="enforced"&&(y.TRANSFORM_ON_CONSTRAINT_HANDLING=!1,y.ENFORCE_CONSTRAINTS=!0,y.APPLY_LAYOUT=!1),b.step=="cose"&&(y.TRANSFORM_ON_CONSTRAINT_HANDLING=!1,y.ENFORCE_CONSTRAINTS=!1,y.APPLY_LAYOUT=!0),b.step=="all"&&(b.randomize?y.TRANSFORM_ON_CONSTRAINT_HANDLING=!0:y.TRANSFORM_ON_CONSTRAINT_HANDLING=!1,y.ENFORCE_CONSTRAINTS=!0,y.APPLY_LAYOUT=!0),b.fixedNodeConstraint||b.alignmentConstraint||b.relativePlacementConstraint?y.TREE_REDUCTION_ON_INCREMENTAL=!1:y.TREE_REDUCTION_ON_INCREMENTAL=!0;var O=new h,$=O.newGraphManager();return M($.addRoot(),u.getTopMostNodes(k),O,b),L(O,$,E),B(O,b),O.runLayout(),I},"coseLayout");a.exports={coseLayout:v}}),212:((a,s,l)=>{var u=(function(){function b(T,w){for(var C=0;C<w.length;C++){var k=w[C];k.enumerable=k.enumerable||!1,k.configurable=!0,"value"in k&&(k.writable=!0),Object.defineProperty(T,k.key,k)}}return o(b,"defineProperties"),function(T,w,C){return w&&b(T.prototype,w),C&&b(T,C),T}})();function h(b,T){if(!(b instanceof T))throw new TypeError("Cannot call a class as a function")}o(h,"_classCallCheck");var d=l(658),f=l(548),p=l(657),m=p.spectralLayout,g=l(816),y=g.coseLayout,v=Object.freeze({quality:"default",randomize:!0,animate:!0,animationDuration:1e3,animationEasing:void 0,fit:!0,padding:30,nodeDimensionsIncludeLabels:!1,uniformNodeDimensions:!1,packComponents:!0,step:"all",samplingType:!0,sampleSize:25,nodeSeparation:75,piTol:1e-7,nodeRepulsion:o(function(T){return 4500},"nodeRepulsion"),idealEdgeLength:o(function(T){return 50},"idealEdgeLength"),edgeElasticity:o(function(T){return .45},"edgeElasticity"),nestingFactor:.1,gravity:.25,numIter:2500,tile:!0,tilingCompareBy:void 0,tilingPaddingVertical:10,tilingPaddingHorizontal:10,gravityRangeCompound:1.5,gravityCompound:1,gravityRange:3.8,initialEnergyOnIncremental:.3,fixedNodeConstraint:void 0,alignmentConstraint:void 0,relativePlacementConstraint:void 0,ready:o(function(){},"ready"),stop:o(function(){},"stop")}),x=(function(){function b(T){h(this,b),this.options=d({},v,T)}return o(b,"Layout"),u(b,[{key:"run",value:o(function(){var w=this,C=this.options,k=C.cy,E=C.eles,A=[],N=void 0,P=void 0,I=[],D=void 0,_=[];C.fixedNodeConstraint&&(!Array.isArray(C.fixedNodeConstraint)||C.fixedNodeConstraint.length==0)&&(C.fixedNodeConstraint=void 0),C.alignmentConstraint&&(C.alignmentConstraint.vertical&&(!Array.isArray(C.alignmentConstraint.vertical)||C.alignmentConstraint.vertical.length==0)&&(C.alignmentConstraint.vertical=void 0),C.alignmentConstraint.horizontal&&(!Array.isArray(C.alignmentConstraint.horizontal)||C.alignmentConstraint.horizontal.length==0)&&(C.alignmentConstraint.horizontal=void 0)),C.relativePlacementConstraint&&(!Array.isArray(C.relativePlacementConstraint)||C.relativePlacementConstraint.length==0)&&(C.relativePlacementConstraint=void 0);var R=C.fixedNodeConstraint||C.alignmentConstraint||C.relativePlacementConstraint;R&&(C.tile=!1,C.packComponents=!1);var M=void 0,L=!1;if(k.layoutUtilities&&C.packComponents&&(M=k.layoutUtilities("get"),M||(M=k.layoutUtilities()),L=!0),E.nodes().length>0)if(L){var $=f.getTopMostNodes(C.eles.nodes());if(D=f.connectComponents(k,C.eles,$),D.forEach(function(Ee){var we=Ee.boundingBox();_.push({x:we.x1+we.w/2,y:we.y1+we.h/2})}),C.randomize&&D.forEach(function(Ee){C.eles=Ee,A.push(m(C))}),C.quality=="default"||C.quality=="proof"){var G=k.collection();if(C.tile){var F=new Map,V=[],H=[],j=0,U={nodeIndexes:F,xCoords:V,yCoords:H},Q=[];if(D.forEach(function(Ee,we){Ee.edges().length==0&&(Ee.nodes().forEach(function(Me,$e){G.merge(Ee.nodes()[$e]),Me.isParent()||(U.nodeIndexes.set(Ee.nodes()[$e].id(),j++),U.xCoords.push(Ee.nodes()[0].position().x),U.yCoords.push(Ee.nodes()[0].position().y))}),Q.push(we))}),G.length>1){var Y=G.boundingBox();_.push({x:Y.x1+Y.w/2,y:Y.y1+Y.h/2}),D.push(G),A.push(U);for(var ae=Q.length-1;ae>=0;ae--)D.splice(Q[ae],1),A.splice(Q[ae],1),_.splice(Q[ae],1)}}D.forEach(function(Ee,we){C.eles=Ee,I.push(y(C,A[we])),f.relocateComponent(_[we],I[we],C)})}else D.forEach(function(Ee,we){f.relocateComponent(_[we],A[we],C)});var J=new Set;if(D.length>1){var te=[],re=E.filter(function(Ee){return Ee.css("display")=="none"});D.forEach(function(Ee,we){var Me=void 0;if(C.quality=="draft"&&(Me=A[we].nodeIndexes),Ee.nodes().not(re).length>0){var $e={};$e.edges=[],$e.nodes=[];var de=void 0;Ee.nodes().not(re).forEach(function(rt){if(C.quality=="draft")if(!rt.isParent())de=Me.get(rt.id()),$e.nodes.push({x:A[we].xCoords[de]-rt.boundingbox().w/2,y:A[we].yCoords[de]-rt.boundingbox().h/2,width:rt.boundingbox().w,height:rt.boundingbox().h});else{var ke=f.calcBoundingBox(rt,A[we].xCoords,A[we].yCoords,Me);$e.nodes.push({x:ke.topLeftX,y:ke.topLeftY,width:ke.width,height:ke.height})}else I[we][rt.id()]&&$e.nodes.push({x:I[we][rt.id()].getLeft(),y:I[we][rt.id()].getTop(),width:I[we][rt.id()].getWidth(),height:I[we][rt.id()].getHeight()})}),Ee.edges().forEach(function(rt){var ke=rt.source(),Fe=rt.target();if(ke.css("display")!="none"&&Fe.css("display")!="none")if(C.quality=="draft"){var He=Me.get(ke.id()),at=Me.get(Fe.id()),qe=[],Ue=[];if(ke.isParent()){var ye=f.calcBoundingBox(ke,A[we].xCoords,A[we].yCoords,Me);qe.push(ye.topLeftX+ye.width/2),qe.push(ye.topLeftY+ye.height/2)}else qe.push(A[we].xCoords[He]),qe.push(A[we].yCoords[He]);if(Fe.isParent()){var ve=f.calcBoundingBox(Fe,A[we].xCoords,A[we].yCoords,Me);Ue.push(ve.topLeftX+ve.width/2),Ue.push(ve.topLeftY+ve.height/2)}else Ue.push(A[we].xCoords[at]),Ue.push(A[we].yCoords[at]);$e.edges.push({startX:qe[0],startY:qe[1],endX:Ue[0],endY:Ue[1]})}else I[we][ke.id()]&&I[we][Fe.id()]&&$e.edges.push({startX:I[we][ke.id()].getCenterX(),startY:I[we][ke.id()].getCenterY(),endX:I[we][Fe.id()].getCenterX(),endY:I[we][Fe.id()].getCenterY()})}),$e.nodes.length>0&&(te.push($e),J.add(we))}});var ee=M.packComponents(te,C.randomize).shifts;if(C.quality=="draft")A.forEach(function(Ee,we){var Me=Ee.xCoords.map(function(de){return de+ee[we].dx}),$e=Ee.yCoords.map(function(de){return de+ee[we].dy});Ee.xCoords=Me,Ee.yCoords=$e});else{var Te=0;J.forEach(function(Ee){Object.keys(I[Ee]).forEach(function(we){var Me=I[Ee][we];Me.setCenter(Me.getCenterX()+ee[Te].dx,Me.getCenterY()+ee[Te].dy)}),Te++})}}}else{var B=C.eles.boundingBox();if(_.push({x:B.x1+B.w/2,y:B.y1+B.h/2}),C.randomize){var O=m(C);A.push(O)}C.quality=="default"||C.quality=="proof"?(I.push(y(C,A[0])),f.relocateComponent(_[0],I[0],C)):f.relocateComponent(_[0],A[0],C)}var ue=o(function(we,Me){if(C.quality=="default"||C.quality=="proof"){typeof we=="number"&&(we=Me);var $e=void 0,de=void 0,rt=we.data("id");return I.forEach(function(Fe){rt in Fe&&($e={x:Fe[rt].getRect().getCenterX(),y:Fe[rt].getRect().getCenterY()},de=Fe[rt])}),C.nodeDimensionsIncludeLabels&&(de.labelWidth&&(de.labelPosHorizontal=="left"?$e.x+=de.labelWidth/2:de.labelPosHorizontal=="right"&&($e.x-=de.labelWidth/2)),de.labelHeight&&(de.labelPosVertical=="top"?$e.y+=de.labelHeight/2:de.labelPosVertical=="bottom"&&($e.y-=de.labelHeight/2))),$e==null&&($e={x:we.position("x"),y:we.position("y")}),{x:$e.x,y:$e.y}}else{var ke=void 0;return A.forEach(function(Fe){var He=Fe.nodeIndexes.get(we.id());He!=null&&(ke={x:Fe.xCoords[He],y:Fe.yCoords[He]})}),ke==null&&(ke={x:we.position("x"),y:we.position("y")}),{x:ke.x,y:ke.y}}},"getPositions");if(C.quality=="default"||C.quality=="proof"||C.randomize){var De=f.calcParentsWithoutChildren(k,E),Ie=E.filter(function(Ee){return Ee.css("display")=="none"});C.eles=E.not(Ie),E.nodes().not(":parent").not(Ie).layoutPositions(w,C,ue),De.length>0&&De.forEach(function(Ee){Ee.position(ue(Ee))})}else console.log("If randomize option is set to false, then quality option must be 'default' or 'proof'.")},"run")}]),b})();a.exports=x}),657:((a,s,l)=>{var u=l(548),h=l(140).layoutBase.Matrix,d=l(140).layoutBase.SVD,f=o(function(m){var g=m.cy,y=m.eles,v=y.nodes(),x=y.nodes(":parent"),b=new Map,T=new Map,w=new Map,C=[],k=[],E=[],A=[],N=[],P=[],I=[],D=[],_=void 0,R=void 0,M=1e8,L=1e-9,B=m.piTol,O=m.samplingType,$=m.nodeSeparation,G=void 0,F=o(function(){for(var fe=0,W=0,ce=!1;W<G;){fe=Math.floor(Math.random()*R),ce=!1;for(var K=0;K<W;K++)if(A[K]==fe){ce=!0;break}if(!ce)A[W]=fe,W++;else continue}},"randomSampleCR"),V=o(function(fe,W,ce){for(var K=[],Re=0,xe=0,Oe=0,be=void 0,Be=[],Ae=0,Ve=1,Pe=0;Pe<R;Pe++)Be[Pe]=M;for(K[xe]=fe,Be[fe]=0;xe>=Re;){Oe=K[Re++];for(var Ye=C[Oe],le=0;le<Ye.length;le++)be=T.get(Ye[le]),Be[be]==M&&(Be[be]=Be[Oe]+1,K[++xe]=be);P[Oe][W]=Be[Oe]*$}if(ce){for(var st=0;st<R;st++)P[st][W]<N[st]&&(N[st]=P[st][W]);for(var me=0;me<R;me++)N[me]>Ae&&(Ae=N[me],Ve=me)}return Ve},"BFS"),H=o(function(fe){var W=void 0;if(fe){W=Math.floor(Math.random()*R),_=W;for(var K=0;K<R;K++)N[K]=M;for(var Re=0;Re<G;Re++)A[Re]=W,W=V(W,Re,fe)}else{F();for(var ce=0;ce<G;ce++)V(A[ce],ce,fe,!1)}for(var xe=0;xe<R;xe++)for(var Oe=0;Oe<G;Oe++)P[xe][Oe]*=P[xe][Oe];for(var be=0;be<G;be++)I[be]=[];for(var Be=0;Be<G;Be++)for(var Ae=0;Ae<G;Ae++)I[Be][Ae]=P[A[Ae]][Be]},"allBFS"),j=o(function(){for(var fe=d.svd(I),W=fe.S,ce=fe.U,K=fe.V,Re=W[0]*W[0]*W[0],xe=[],Oe=0;Oe<G;Oe++){xe[Oe]=[];for(var be=0;be<G;be++)xe[Oe][be]=0,Oe==be&&(xe[Oe][be]=W[Oe]/(W[Oe]*W[Oe]+Re/(W[Oe]*W[Oe])))}D=h.multMat(h.multMat(K,xe),h.transpose(ce))},"sample"),U=o(function(){for(var fe=void 0,W=void 0,ce=[],K=[],Re=[],xe=[],Oe=0;Oe<R;Oe++)ce[Oe]=Math.random(),K[Oe]=Math.random();ce=h.normalize(ce),K=h.normalize(K);for(var be=0,Be=L,Ae=L,Ve=void 0;;){be++;for(var Pe=0;Pe<R;Pe++)Re[Pe]=ce[Pe];if(ce=h.multGamma(h.multL(h.multGamma(Re),P,D)),fe=h.dotProduct(Re,ce),ce=h.normalize(ce),Be=h.dotProduct(Re,ce),Ve=Math.abs(Be/Ae),Ve<=1+B&&Ve>=1)break;Ae=Be}for(var Ye=0;Ye<R;Ye++)Re[Ye]=ce[Ye];for(be=0,Ae=L;;){be++;for(var le=0;le<R;le++)xe[le]=K[le];if(xe=h.minusOp(xe,h.multCons(Re,h.dotProduct(Re,xe))),K=h.multGamma(h.multL(h.multGamma(xe),P,D)),W=h.dotProduct(xe,K),K=h.normalize(K),Be=h.dotProduct(xe,K),Ve=Math.abs(Be/Ae),Ve<=1+B&&Ve>=1)break;Ae=Be}for(var st=0;st<R;st++)xe[st]=K[st];k=h.multCons(Re,Math.sqrt(Math.abs(fe))),E=h.multCons(xe,Math.sqrt(Math.abs(W)))},"powerIteration");u.connectComponents(g,y,u.getTopMostNodes(v),b),x.forEach(function(ie){u.connectComponents(g,y,u.getTopMostNodes(ie.descendants().intersection(y)),b)});for(var Q=0,Y=0;Y<v.length;Y++)v[Y].isParent()||T.set(v[Y].id(),Q++);var ae=!0,J=!1,te=void 0;try{for(var re=b.keys()[Symbol.iterator](),ee;!(ae=(ee=re.next()).done);ae=!0){var Te=ee.value;T.set(Te,Q++)}}catch(ie){J=!0,te=ie}finally{try{!ae&&re.return&&re.return()}finally{if(J)throw te}}for(var ue=0;ue<T.size;ue++)C[ue]=[];x.forEach(function(ie){for(var fe=ie.children().intersection(y);fe.nodes(":childless").length==0;)fe=fe.nodes()[0].children().intersection(y);var W=0,ce=fe.nodes(":childless")[0].connectedEdges().length;fe.nodes(":childless").forEach(function(K,Re){K.connectedEdges().length<ce&&(ce=K.connectedEdges().length,W=Re)}),w.set(ie.id(),fe.nodes(":childless")[W].id())}),v.forEach(function(ie){var fe=void 0;ie.isParent()?fe=T.get(w.get(ie.id())):fe=T.get(ie.id()),ie.neighborhood().nodes().forEach(function(W){y.intersection(ie.edgesWith(W)).length>0&&(W.isParent()?C[fe].push(w.get(W.id())):C[fe].push(W.id()))})});var De=o(function(fe){var W=T.get(fe),ce=void 0;b.get(fe).forEach(function(K){g.getElementById(K).isParent()?ce=w.get(K):ce=K,C[W].push(ce),C[T.get(ce)].push(fe)})},"_loop"),Ie=!0,Ee=!1,we=void 0;try{for(var Me=b.keys()[Symbol.iterator](),$e;!(Ie=($e=Me.next()).done);Ie=!0){var de=$e.value;De(de)}}catch(ie){Ee=!0,we=ie}finally{try{!Ie&&Me.return&&Me.return()}finally{if(Ee)throw we}}R=T.size;var rt=void 0;if(R>2){G=R<m.sampleSize?R:m.sampleSize;for(var ke=0;ke<R;ke++)P[ke]=[];for(var Fe=0;Fe<G;Fe++)D[Fe]=[];return m.quality=="draft"||m.step=="all"?(H(O),j(),U(),rt={nodeIndexes:T,xCoords:k,yCoords:E}):(T.forEach(function(ie,fe){k.push(g.getElementById(fe).position("x")),E.push(g.getElementById(fe).position("y"))}),rt={nodeIndexes:T,xCoords:k,yCoords:E}),rt}else{var He=T.keys(),at=g.getElementById(He.next().value),qe=at.position(),Ue=at.outerWidth();if(k.push(qe.x),E.push(qe.y),R==2){var ye=g.getElementById(He.next().value),ve=ye.outerWidth();k.push(qe.x+Ue/2+ve/2+m.idealEdgeLength),E.push(qe.y)}return rt={nodeIndexes:T,xCoords:k,yCoords:E},rt}},"spectralLayout");a.exports={spectralLayout:f}}),579:((a,s,l)=>{var u=l(212),h=o(function(f){f&&f("layout","fcose",u)},"register");typeof cytoscape<"u"&&h(cytoscape),a.exports=h}),140:(a=>{a.exports=e})},r={};function i(a){var s=r[a];if(s!==void 0)return s.exports;var l=r[a]={exports:{}};return t[a](l,l.exports,i),l.exports}o(i,"__webpack_require__");var n=i(579);return n})()})});var Oy,wm,Hq=z(()=>{"use strict";uc();Oy=o(e=>`<g><rect width="80" height="80" style="fill: #087ebf; stroke-width: 0px;"/>${e}</g>`,"wrapIcon"),wm={prefix:"mermaid-architecture",height:80,width:80,icons:{database:{body:Oy('<path id="b" data-name="4" d="m20,57.86c0,3.94,8.95,7.14,20,7.14s20-3.2,20-7.14" style="fill: none; stroke: #fff; stroke-miterlimit: 10; stroke-width: 2px;"/><path id="c" data-name="3" d="m20,45.95c0,3.94,8.95,7.14,20,7.14s20-3.2,20-7.14" style="fill: none; stroke: #fff; stroke-miterlimit: 10; stroke-width: 2px;"/><path id="d" data-name="2" d="m20,34.05c0,3.94,8.95,7.14,20,7.14s20-3.2,20-7.14" style="fill: none; stroke: #fff; stroke-miterlimit: 10; stroke-width: 2px;"/><ellipse id="e" data-name="1" cx="40" cy="22.14" rx="20" ry="7.14" style="fill: none; stroke: #fff; stroke-miterlimit: 10; stroke-width: 2px;"/><line x1="20" y1="57.86" x2="20" y2="22.14" style="fill: none; stroke: #fff; stroke-miterlimit: 10; stroke-width: 2px;"/><line x1="60" y1="57.86" x2="60" y2="22.14" style="fill: none; stroke: #fff; stroke-miterlimit: 10; stroke-width: 2px;"/>')},server:{body:Oy('<rect x="17.5" y="17.5" width="45" height="45" rx="2" ry="2" style="fill: none; stroke: #fff; stroke-miterlimit: 10; stroke-width: 2px;"/><line x1="17.5" y1="32.5" x2="62.5" y2="32.5" style="fill: none; stroke: #fff; stroke-miterlimit: 10; stroke-width: 2px;"/><line x1="17.5" y1="47.5" x2="62.5" y2="47.5" style="fill: none; stroke: #fff; stroke-miterlimit: 10; stroke-width: 2px;"/><g><path d="m56.25,25c0,.27-.45.5-1,.5h-10.5c-.55,0-1-.23-1-.5s.45-.5,1-.5h10.5c.55,0,1,.23,1,.5Z" style="fill: #fff; stroke-width: 0px;"/><path d="m56.25,25c0,.27-.45.5-1,.5h-10.5c-.55,0-1-.23-1-.5s.45-.5,1-.5h10.5c.55,0,1,.23,1,.5Z" style="fill: none; stroke: #fff; stroke-miterlimit: 10;"/></g><g><path d="m56.25,40c0,.27-.45.5-1,.5h-10.5c-.55,0-1-.23-1-.5s.45-.5,1-.5h10.5c.55,0,1,.23,1,.5Z" style="fill: #fff; stroke-width: 0px;"/><path d="m56.25,40c0,.27-.45.5-1,.5h-10.5c-.55,0-1-.23-1-.5s.45-.5,1-.5h10.5c.55,0,1,.23,1,.5Z" style="fill: none; stroke: #fff; stroke-miterlimit: 10;"/></g><g><path d="m56.25,55c0,.27-.45.5-1,.5h-10.5c-.55,0-1-.23-1-.5s.45-.5,1-.5h10.5c.55,0,1,.23,1,.5Z" style="fill: #fff; stroke-width: 0px;"/><path d="m56.25,55c0,.27-.45.5-1,.5h-10.5c-.55,0-1-.23-1-.5s.45-.5,1-.5h10.5c.55,0,1,.23,1,.5Z" style="fill: none; stroke: #fff; stroke-miterlimit: 10;"/></g><g><circle cx="32.5" cy="25" r=".75" style="fill: #fff; stroke: #fff; stroke-miterlimit: 10;"/><circle cx="27.5" cy="25" r=".75" style="fill: #fff; stroke: #fff; stroke-miterlimit: 10;"/><circle cx="22.5" cy="25" r=".75" style="fill: #fff; stroke: #fff; stroke-miterlimit: 10;"/></g><g><circle cx="32.5" cy="40" r=".75" style="fill: #fff; stroke: #fff; stroke-miterlimit: 10;"/><circle cx="27.5" cy="40" r=".75" style="fill: #fff; stroke: #fff; stroke-miterlimit: 10;"/><circle cx="22.5" cy="40" r=".75" style="fill: #fff; stroke: #fff; stroke-miterlimit: 10;"/></g><g><circle cx="32.5" cy="55" r=".75" style="fill: #fff; stroke: #fff; stroke-miterlimit: 10;"/><circle cx="27.5" cy="55" r=".75" style="fill: #fff; stroke: #fff; stroke-miterlimit: 10;"/><circle cx="22.5" cy="55" r=".75" style="fill: #fff; stroke: #fff; stroke-miterlimit: 10;"/></g>')},disk:{body:Oy('<rect x="20" y="15" width="40" height="50" rx="1" ry="1" style="fill: none; stroke: #fff; stroke-miterlimit: 10; stroke-width: 2px;"/><ellipse cx="24" cy="19.17" rx=".8" ry=".83" style="fill: none; stroke: #fff; stroke-miterlimit: 10; stroke-width: 2px;"/><ellipse cx="56" cy="19.17" rx=".8" ry=".83" style="fill: none; stroke: #fff; stroke-miterlimit: 10; stroke-width: 2px;"/><ellipse cx="24" cy="60.83" rx=".8" ry=".83" style="fill: none; stroke: #fff; stroke-miterlimit: 10; stroke-width: 2px;"/><ellipse cx="56" cy="60.83" rx=".8" ry=".83" style="fill: none; stroke: #fff; stroke-miterlimit: 10; stroke-width: 2px;"/><ellipse cx="40" cy="33.75" rx="14" ry="14.58" style="fill: none; stroke: #fff; stroke-miterlimit: 10; stroke-width: 2px;"/><ellipse cx="40" cy="33.75" rx="4" ry="4.17" style="fill: #fff; stroke: #fff; stroke-miterlimit: 10; stroke-width: 2px;"/><path d="m37.51,42.52l-4.83,13.22c-.26.71-1.1,1.02-1.76.64l-4.18-2.42c-.66-.38-.81-1.26-.33-1.84l9.01-10.8c.88-1.05,2.56-.08,2.09,1.2Z" style="fill: #fff; stroke-width: 0px;"/>')},internet:{body:Oy('<circle cx="40" cy="40" r="22.5" style="fill: none; stroke: #fff; stroke-miterlimit: 10; stroke-width: 2px;"/><line x1="40" y1="17.5" x2="40" y2="62.5" style="fill: none; stroke: #fff; stroke-miterlimit: 10; stroke-width: 2px;"/><line x1="17.5" y1="40" x2="62.5" y2="40" style="fill: none; stroke: #fff; stroke-miterlimit: 10; stroke-width: 2px;"/><path d="m39.99,17.51c-15.28,11.1-15.28,33.88,0,44.98" style="fill: none; stroke: #fff; stroke-miterlimit: 10; stroke-width: 2px;"/><path d="m40.01,17.51c15.28,11.1,15.28,33.88,0,44.98" style="fill: none; stroke: #fff; stroke-miterlimit: 10; stroke-width: 2px;"/><line x1="19.75" y1="30.1" x2="60.25" y2="30.1" style="fill: none; stroke: #fff; stroke-miterlimit: 10; stroke-width: 2px;"/><line x1="19.75" y1="49.9" x2="60.25" y2="49.9" style="fill: none; stroke: #fff; stroke-miterlimit: 10; stroke-width: 2px;"/>')},cloud:{body:Oy('<path d="m65,47.5c0,2.76-2.24,5-5,5H20c-2.76,0-5-2.24-5-5,0-1.87,1.03-3.51,2.56-4.36-.04-.21-.06-.42-.06-.64,0-2.6,2.48-4.74,5.65-4.97,1.65-4.51,6.34-7.76,11.85-7.76.86,0,1.69.08,2.5.23,2.09-1.57,4.69-2.5,7.5-2.5,6.1,0,11.19,4.38,12.28,10.17,2.14.56,3.72,2.51,3.72,4.83,0,.03,0,.07-.01.1,2.29.46,4.01,2.48,4.01,4.9Z" style="fill: none; stroke: #fff; stroke-miterlimit: 10; stroke-width: 2px;"/>')},unknown:DD,blank:{body:Oy("")}}}});var ERe,ARe,_Re,DRe,RRe=z(()=>{"use strict";Ut();_s();uc();Ir();Hq();E_();Xt();ERe=o(async function(e,t,r,i){let n=r.getConfigField("padding"),a=r.getConfigField("iconSize"),s=a/2,l=a/6,u=l/2;await Promise.all(t.edges().map(async h=>{let{source:d,sourceDir:f,sourceArrow:p,sourceGroup:m,target:g,targetDir:y,targetArrow:v,targetGroup:x,label:b}=S_(h),{x:T,y:w}=h[0].sourceEndpoint(),{x:C,y:k}=h[0].midpoint(),{x:E,y:A}=h[0].targetEndpoint(),N=n+4;if(m&&(za(f)?T+=f==="L"?-N:N:w+=f==="T"?-N:N+18),x&&(za(y)?E+=y==="L"?-N:N:A+=y==="T"?-N:N+18),!m&&r.getNode(d)?.type==="junction"&&(za(f)?T+=f==="L"?s:-s:w+=f==="T"?s:-s),!x&&r.getNode(g)?.type==="junction"&&(za(y)?E+=y==="L"?s:-s:A+=y==="T"?s:-s),h[0]._private.rscratch){let P=e.insert("g");if(P.insert("path").attr("d",`M ${T},${w} L ${C},${k} L${E},${A} `).attr("class","edge").attr("id",`${i}-${bc(d,g,{prefix:"L"})}`),p){let I=za(f)?oC[f](T,l):T-u,D=uu(f)?oC[f](w,l):w-u;P.insert("polygon").attr("points",Bq[f](l)).attr("transform",`translate(${I},${D})`).attr("class","arrow")}if(v){let I=za(y)?oC[y](E,l):E-u,D=uu(y)?oC[y](A,l):A-u;P.insert("polygon").attr("points",Bq[y](l)).attr("transform",`translate(${I},${D})`).attr("class","arrow")}if(b){let I=lC(f,y)?"XY":za(f)?"X":"Y",D=0;I==="X"?D=Math.abs(T-E):I==="Y"?D=Math.abs(w-A)/1.5:D=Math.abs(T-E)/2;let _=P.append("g");if(await wi(_,b,{useHtmlLabels:!1,width:D,classes:"architecture-service-label"},ge()),_.attr("dy","1em").attr("alignment-baseline","middle").attr("dominant-baseline","middle").attr("text-anchor","middle"),I==="X")_.attr("transform","translate("+C+", "+k+")");else if(I==="Y")_.attr("transform","translate("+C+", "+k+") rotate(-90)");else if(I==="XY"){let R=cC(f,y);if(R&&gRe(R)){let M=_.node().getBoundingClientRect(),[L,B]=vRe(R);_.attr("dominant-baseline","auto").attr("transform",`rotate(${-1*L*B*45})`);let O=_.node().getBoundingClientRect();_.attr("transform",`
-                translate(${C}, ${k-M.height/2})
-                translate(${L*O.width/2}, ${B*O.height/2})
-                rotate(${-1*L*B*45}, 0, ${M.height/2})
-              `)}}}}}))},"drawEdges"),ARe=o(async function(e,t,r,i){let a=r.getConfigField("padding")*.75,s=r.getConfigField("fontSize"),u=r.getConfigField("iconSize")/2;await Promise.all(t.nodes().map(async h=>{let d=Nf(h);if(d.type==="group"){let{h:f,w:p,x1:m,y1:g}=h.boundingBox(),y=e.append("rect");y.attr("id",`${i}-group-${d.id}`).attr("x",m+u).attr("y",g+u).attr("width",p).attr("height",f).attr("class","node-bkg");let v=e.append("g"),x=m,b=g;if(d.icon){let T=v.append("g");T.html(`<g>${await ks(d.icon,{height:a,width:a,fallbackPrefix:wm.prefix})}</g>`),T.attr("transform","translate("+(x+u+1)+", "+(b+u+1)+")"),x+=a,b+=s/2-1-2}if(d.label){let T=v.append("g");await wi(T,d.label,{useHtmlLabels:!1,width:p,classes:"architecture-service-label"},ge()),T.attr("dy","1em").attr("alignment-baseline","middle").attr("dominant-baseline","start").attr("text-anchor","start"),T.attr("transform","translate("+(x+u+4)+", "+(b+u+2)+")")}r.setElementForId(d.id,y)}}))},"drawGroups"),_Re=o(async function(e,t,r,i){let n=ge();for(let a of r){let s=t.append("g"),l=e.getConfigField("iconSize");if(a.title){let f=s.append("g");await wi(f,a.title,{useHtmlLabels:!1,width:l*1.5,classes:"architecture-service-label"},n),f.attr("dy","1em").attr("alignment-baseline","middle").attr("dominant-baseline","middle").attr("text-anchor","middle"),f.attr("transform","translate("+l/2+", "+l+")")}let u=s.append("g");if(a.icon)u.html(`<g>${await ks(a.icon,{height:l,width:l,fallbackPrefix:wm.prefix})}</g>`);else if(a.iconText){u.html(`<g>${await ks("blank",{height:l,width:l,fallbackPrefix:wm.prefix})}</g>`);let m=u.append("g").append("foreignObject").attr("width",l).attr("height",l).append("div").attr("class","node-icon-text").attr("style",`height: ${l}px;`).append("div").html(fr(a.iconText,n)),g=parseInt(window.getComputedStyle(m.node(),null).getPropertyValue("font-size").replace(/\D/g,""))??16;m.attr("style",`-webkit-line-clamp: ${Math.floor((l-2)/g)};`)}else u.append("path").attr("class","node-bkg").attr("id",`${i}-node-${a.id}`).attr("d",`M0,${l} V5 Q0,0 5,0 H${l-5} Q${l},0 ${l},5 V${l} Z`);s.attr("id",`${i}-service-${a.id}`).attr("class","architecture-service");let{width:h,height:d}=s.node().getBBox();a.width=h,a.height=d,e.setElementForId(a.id,s)}return 0},"drawServices"),DRe=o(function(e,t,r,i){r.forEach(n=>{let a=t.append("g"),s=e.getConfigField("iconSize");a.append("g").append("rect").attr("id",`${i}-node-${n.id}`).attr("fill-opacity","0").attr("width",s).attr("height",s),a.attr("class","architecture-junction");let{width:u,height:h}=a._groups[0][0].getBBox();a.width=u,a.height=h,e.setElementForId(n.id,a)})},"drawJunctions")});function z3t(e,t,r){e.forEach(i=>{t.add({group:"nodes",data:{type:"service",id:i.id,icon:i.icon,label:i.title,parent:i.in,width:r.getConfigField("iconSize"),height:r.getConfigField("iconSize")},classes:"node-service"})})}function G3t(e,t,r){e.forEach(i=>{t.add({group:"nodes",data:{type:"junction",id:i.id,parent:i.in,width:r.getConfigField("iconSize"),height:r.getConfigField("iconSize")},classes:"node-junction"})})}function V3t(e,t){t.nodes().map(r=>{let i=Nf(r);if(i.type==="group")return;i.x=r.position().x,i.y=r.position().y,e.getElementById(i.id).attr("transform","translate("+(i.x||0)+","+(i.y||0)+")")})}function W3t(e,t){e.forEach(r=>{t.add({group:"nodes",data:{type:"group",id:r.id,icon:r.icon,label:r.title,parent:r.in},classes:"node-group"})})}function q3t(e,t){e.forEach(r=>{let{lhsId:i,rhsId:n,lhsInto:a,lhsGroup:s,rhsInto:l,lhsDir:u,rhsDir:h,rhsGroup:d,title:f}=r,p=lC(r.lhsDir,r.rhsDir)?"segments":"straight",m={id:`${i}-${n}`,label:f,source:i,sourceDir:u,sourceArrow:a,sourceGroup:s,sourceEndpoint:u==="L"?"0 50%":u==="R"?"100% 50%":u==="T"?"50% 0":"50% 100%",target:n,targetDir:h,targetArrow:l,targetGroup:d,targetEndpoint:h==="L"?"0 50%":h==="R"?"100% 50%":h==="T"?"50% 0":"50% 100%"};t.add({group:"edges",data:m,classes:p})})}function U3t(e,t,r){let i=o((l,u)=>Object.entries(l).reduce((h,[d,f])=>{let p=0,m=Object.entries(f);if(m.length===1)return h[d]=m[0][1],h;for(let g=0;g<m.length-1;g++)for(let y=g+1;y<m.length;y++){let[v,x]=m[g],[b,T]=m[y];if(r[v]?.[b]===u)h[d]??=[],h[d]=[...h[d],...x,...T];else if(v==="default"||b==="default")h[d]??=[],h[d]=[...h[d],...x,...T];else{let C=`${d}-${p++}`;h[C]=x;let k=`${d}-${p++}`;h[k]=T}}return h},{}),"flattenAlignments"),n=t.map(l=>{let u={},h={};return Object.entries(l).forEach(([d,[f,p]])=>{let m=e.getNode(d)?.in??"default";u[p]??={},u[p][m]??=[],u[p][m].push(d),h[f]??={},h[f][m]??=[],h[f][m].push(d)}),{horiz:Object.values(i(u,"horizontal")).filter(d=>d.length>1),vert:Object.values(i(h,"vertical")).filter(d=>d.length>1)}}),[a,s]=n.reduce(([l,u],{horiz:h,vert:d})=>[[...l,...h],[...u,...d]],[[],[]]);return{horizontal:a,vertical:s}}function H3t(e,t){let r=[],i=o(a=>`${a[0]},${a[1]}`,"posToStr"),n=o(a=>a.split(",").map(s=>parseInt(s)),"strToPos");return e.forEach(a=>{let s=Object.fromEntries(Object.entries(a).map(([d,f])=>[i(f),d])),l=[i([0,0])],u={},h={L:[-1,0],R:[1,0],T:[0,1],B:[0,-1]};for(;l.length>0;){let d=l.shift();if(d){u[d]=1;let f=s[d];if(f){let p=n(d);Object.entries(h).forEach(([m,g])=>{let y=i([p[0]+g[0],p[1]+g[1]]),v=s[y];v&&!u[y]&&(l.push(y),r.push({[Pq[m]]:v,[Pq[mRe(m)]]:f,gap:1.5*t.getConfigField("iconSize")}))})}}}}),r}function Y3t(e,t,r,i,n,{spatialMaps:a,groupAlignments:s}){return new Promise(l=>{let u=Je("body").append("div").attr("id","cy").attr("style","display:none"),h=Ko({container:document.getElementById("cy"),style:[{selector:"edge",style:{"curve-style":"straight","source-endpoint":"data(sourceEndpoint)","target-endpoint":"data(targetEndpoint)"}},{selector:"edge[label]",style:{label:"data(label)"}},{selector:"edge.segments",style:{"curve-style":"segments","segment-weights":"0","segment-distances":[.5],"edge-distances":"endpoints","source-endpoint":"data(sourceEndpoint)","target-endpoint":"data(targetEndpoint)"}},{selector:"node",style:{"compound-sizing-wrt-labels":"include"}},{selector:"node[label]",style:{"text-valign":"bottom","text-halign":"center","font-size":`${n.getConfigField("fontSize")}px`}},{selector:".node-service",style:{label:"data(label)",width:"data(width)",height:"data(height)"}},{selector:".node-junction",style:{width:"data(width)",height:"data(height)"}},{selector:".node-group",style:{padding:`${n.getConfigField("padding")}px`}}],layout:{name:"grid",boundingBox:{x1:0,x2:100,y1:0,y2:100}}});u.remove(),W3t(r,h),z3t(e,h,n),G3t(t,h,n),q3t(i,h);let d=U3t(n,a,s),f=H3t(a,n),p=n.getConfigField("iconSize"),m=n.getConfigField("idealEdgeLengthMultiplier")*p,g=.5*p,y=n.getConfigField("edgeElasticity"),v=h.layout({name:"fcose",quality:"proof",randomize:n.getConfigField("randomize"),nodeSeparation:n.getConfigField("nodeSeparation"),numIter:n.getConfigField("numIter"),styleEnabled:!1,animate:!1,nodeDimensionsIncludeLabels:!1,idealEdgeLength(x){let[b,T]=x.connectedNodes(),{parent:w}=Nf(b),{parent:C}=Nf(T);return w===C?m:g},edgeElasticity(x){let[b,T]=x.connectedNodes(),{parent:w}=Nf(b),{parent:C}=Nf(T);return w===C?y:.001},alignmentConstraint:d,relativePlacementConstraint:f});v.one("layoutstop",()=>{function x(b,T,w,C){let k,E,{x:A,y:N}=b,{x:P,y:I}=T;E=(C-N+(A-w)*(N-I)/(A-P))/Math.sqrt(1+Math.pow((N-I)/(A-P),2)),k=Math.sqrt(Math.pow(C-N,2)+Math.pow(w-A,2)-Math.pow(E,2));let D=Math.sqrt(Math.pow(P-A,2)+Math.pow(I-N,2));k=k/D;let _=(P-A)*(C-N)-(I-N)*(w-A);switch(!0){case _>=0:_=1;break;case _<0:_=-1;break}let R=(P-A)*(w-A)+(I-N)*(C-N);switch(!0){case R>=0:R=1;break;case R<0:R=-1;break}return E=Math.abs(E)*_,k=k*R,{distances:E,weights:k}}o(x,"getSegmentWeights"),h.startBatch();for(let b of Object.values(h.edges()))if(b.data?.()){let{x:T,y:w}=b.source().position(),{x:C,y:k}=b.target().position();if(T!==C&&w!==k){let E=b.sourceEndpoint(),A=b.targetEndpoint(),{sourceDir:N}=S_(b),[P,I]=uu(N)?[E.x,A.y]:[A.x,E.y],{weights:D,distances:_}=x(E,A,P,I);b.style("segment-distances",_),b.style("segment-weights",D)}}h.endBatch(),v.run()}),v.run(),h.ready(x=>{Z.info("Ready",x),l(h)})})}var LRe,j3t,MRe,NRe=z(()=>{"use strict";OP();LRe=ys(SRe(),1);Rr();St();uc();ps();Di();Hq();E_();RRe();dk([{name:wm.prefix,icons:wm}]);Ko.use(LRe.default);o(z3t,"addServices");o(G3t,"addJunctions");o(V3t,"positionNodes");o(W3t,"addGroups");o(q3t,"addEdges");o(U3t,"getAlignments");o(H3t,"getRelativeConstraints");o(Y3t,"layoutArchitecture");j3t=o(async(e,t,r,i)=>{let n=i.db;n.setDiagramId(t);let a=n.getServices(),s=n.getJunctions(),l=n.getGroups(),u=n.getEdges(),h=n.getDataStructures(),d=bi(t),f=d.append("g");f.attr("class","architecture-edges");let p=d.append("g");p.attr("class","architecture-services");let m=d.append("g");m.attr("class","architecture-groups"),await _Re(n,p,a,t),DRe(n,p,s,t);let g=await Y3t(a,s,l,u,n,h);await ERe(f,g,n,t),await ARe(m,g,n,t),V3t(n,g),Io(void 0,d,n.getConfigField("padding"),n.getConfigField("useMaxWidth"))},"draw"),MRe={draw:j3t}});var IRe={};xr(IRe,{diagram:()=>X3t});var X3t,ORe=z(()=>{"use strict";CRe();$q();wRe();NRe();X3t={parser:zq,get db(){return new Iy},renderer:MRe,styles:kRe}});var Yq,jq,A_,Xq,FRe=z(()=>{"use strict";Yq="position frame",jq="frame positioned",A_="position relation",Xq="relation positioned"});function rEt(){Qq={}}function aEt(){let e=oEt,{ast:t}=Qq,r=zRe();if(!t)throw new Error("No data for EventModel");return t.frames.forEach((i,n)=>{let a=fEt(i,t.dataEntities,r);e=Zq(e,{$kind:Yq,index:n,frame:i,textProps:a});let s;xEt(i)?(Z.debug("source frame",i.sourceFrames),s=t.frames.filter(l=>i.sourceFrames.some(u=>u.$refText===l.name)),s.forEach(l=>{e=Zq(e,{$kind:A_,index:n,frame:i,sourceFrame:l})})):e=Zq(e,{$kind:A_,index:n,frame:i})}),e={...e,sortedSwimlanesArray:GRe(e.swimlanes)},e}function sEt(e){Qq.ast=e}function zRe(){return ti}function lEt(e){let t=e.split(".");if(t.length===2)return t[0]}function cEt(e){let t=e.split(".");return t.length===2?t[1]:e}function uEt(e,t){if(!(!t||t.length===0))return Object.values(e).find(r=>r.namespace===t)}function Kq(e,t,r){return Math.max(t,...Object.keys(e).filter(i=>{let n=Number.parseInt(i);return n>t&&n<r}).map(i=>Number.parseInt(i)))+1}function hEt(e,t){let r=lEt(e.entityIdentifier),i=uEt(t,r);switch(e.modelEntityType){case"ui":case"pcr":case"processor":return i?{index:i.index,label:i.namespace||ti.labelUiAutomation}:r?{index:Kq(t,0,100),label:ti.labelUiAutomationPrefix+r}:{index:0,label:ti.labelUiAutomation};case"rmo":case"readmodel":case"cmd":case"command":return i?{index:i.index,label:i.namespace||ti.labelCommandReadModel}:r?{index:Kq(t,100,200),label:ti.labelCommandReadModelPrefix+r}:{index:100,label:ti.labelCommandReadModel};case"evt":case"event":default:return i?{index:i.index,label:i.namespace||ti.labelEvents}:r?{index:Kq(t,200,300),label:ti.labelEventsPrefix+r}:{index:200,label:ti.labelEvents}}}function dEt(e){let{themeVariables:t}=Nt();switch(e.modelEntityType){case"ui":return{fill:t.emUiFill??"white",stroke:t.emUiStroke??"#dbdada"};case"pcr":case"processor":return{fill:t.emProcessorFill??"#edb3f6",stroke:t.emProcessorStroke??"#b88cbf"};case"rmo":case"readmodel":return{fill:t.emReadModelFill??"#d3f1a2",stroke:t.emReadModelStroke??"#a3b732"};case"cmd":case"command":return{fill:t.emCommandFill??"#bcd6fe",stroke:t.emCommandStroke??"#679ac3"};case"evt":case"event":return{fill:t.emEventFill??"#ffb778",stroke:t.emEventStroke??"#c19a0f"};default:return{fill:"red",stroke:"black"}}}function fEt(e,t,r){let i=Nt(),n=fr(cEt(e.entityIdentifier)??"",i),a,s={fontSize:16,fontWeight:700,fontFamily:'"trebuchet ms", verdana, arial, sans-serif',joinWith:"<br/>"},u=`<b>${Tp(n,r.textMaxWidth,s)}</b>`;if(e.dataInlineValue&&(a=e.dataInlineValue,a=a.substring(a.indexOf("{")+1),a=a.substring(0,a.lastIndexOf("}")-1),a=fr(a,i),a=Tp(a,r.textMaxWidth,s),a=a.replaceAll(" ","&nbsp;")),e.dataReference){let g=t.find(y=>y.name===e.dataReference?.$refText);g&&(a=g.dataBlockValue,a=a.substring(a.indexOf(`{
-`)+2),a=a.substring(0,a.lastIndexOf("}")-1),a=fr(a,i),a=Tp(a,r.textMaxWidth,s),a=a.replaceAll(" ","&nbsp;"),a+="<br/>")}let h=a!==void 0;h&&(u+=`<br/><br/><code style="text-align: left; display: block;max-width:${r.textMaxWidth}px">${a}</code>`);let d={fontSize:s.fontSize,fontWeight:s.fontWeight,fontFamily:s.fontFamily},f=Px(u,d),p=h?f.width/3:f.width,m={content:u,width:p,height:f.height};return Z.debug(`[${e.name}] ${e.entityIdentifier} text`,m),m}function pEt(e,t){let r=t,i=dEt(r.frame),n={width:r.textProps.width+2*ti.boxTextPadding,height:r.textProps.height+2*ti.boxTextPadding};return[{$kind:jq,frame:r.frame,index:r.index,visual:i,dimension:n,textProps:r.textProps}]}function mEt(e,t,r){return t===void 0?ti.contentStartX:t.index===e.index&&e.r?e.r+ti.boxPadding:r===void 0?ti.contentStartX:r.r-ti.boxOverlap+ti.boxPadding}function gEt(e,t){let r=[...e.map(i=>i.r),t];return Math.max(...r)}function GRe(e){return Object.values(e).sort((t,r)=>t.index-r.index)}function yEt(e,t){let r=t,i=hEt(r.frame,e.swimlanes),n;i.index in e.swimlanes?n=e.swimlanes[i.index]:n={index:i.index,label:i.label,r:0,y:i.index*ti.swimlaneMinHeight+ti.swimlaneGap,height:ti.swimlaneMinHeight,maxHeight:ti.swimlaneMinHeight};let a=e.boxes.length>0?e.boxes[e.boxes.length-1]:void 0,s=e.previousSwimlaneNumber!==void 0?e.swimlanes[e.previousSwimlaneNumber]:void 0,l={width:Math.max(ti.boxMinWidth,Math.min(ti.boxMaxWidth,r.dimension.width))+2*ti.boxPadding,height:Math.max(ti.boxMinHeight,Math.min(ti.boxMaxHeight,r.dimension.height))+2*ti.boxPadding},u=mEt(n,s,a),h=u+l.width+ti.boxPadding,d=gEt(Object.values(e.swimlanes),h);n.r=u+l.width,n.maxHeight=Math.max(n.maxHeight,l.height),n.height=Math.max(ti.swimlaneMinHeight,n.maxHeight)+2*ti.swimlanePadding;let f={x:u,y:ti.swimlanePadding+n.y,r:h,dimension:l,leftSibling:!1,swimlane:n,visual:r.visual,text:r.textProps.content,frame:r.frame,index:r.index},p={...e,boxes:[...e.boxes,f],swimlanes:{...e.swimlanes,[`${n.index}`]:n},previousSwimlaneNumber:i.index,previousFrame:r.frame,maxR:d},m=GRe(p.swimlanes);m.length>0&&(m[0].y=0);for(let g=1;g<m.length;g++){let y=m[g],v=m[g-1];y.y=v.y+v.height+ti.swimlaneGap}return p}function vEt(e,t){return e===0&&t.sourceFrames.length===0}function xEt(e){return e.sourceFrames!==void 0&&e.sourceFrames!==null&&e.sourceFrames.length>0}function $Re(e,t){if(t!=null)return e.find(r=>r.frame.name===t.name)}function bEt(e,t,r){if(!(r<0))for(let i=r;i>=0;i--){let n=e[i];if(n.swimlane.index!==t)return n}}function TEt(e,t){let r=t;if(JA(r.frame)||vEt(r.index,r.frame))return[];let i=$Re(e.boxes,r.frame);if(i===void 0)throw new Error(`Target box not found for frame ${r.frame.name}`);let n;return r.sourceFrame?n=$Re(e.boxes,r.sourceFrame):n=bEt(e.boxes,i.swimlane.index,r.index-1),n===void 0?[]:[{$kind:Xq,frame:r.frame,index:r.index,sourceBox:n,targetBox:i}]}function CEt(e,t){let r=t,i={visual:{fill:"none",stroke:"#000"},source:{x:r.sourceBox.x,y:r.sourceBox.y},target:{x:r.targetBox.x,y:r.targetBox.y},sourceBox:r.sourceBox,targetBox:r.targetBox};return{...e,relations:[...e.relations,i]}}function SEt(e,t){let r=kEt[t.$kind];if(r==null)return[];let i=r(e,t);return Z.debug("decided events",i),i}function EEt(e,t){let r=t.reduce((i,n)=>{let a=wEt[n.$kind];return a==null?i:a(i,n)},e);return Z.debug("evolve events",{state:e,newState:r,events:t}),r}function Zq(e,t){let r=SEt(e,t);return EEt(e,r)}var J3t,eEt,tEt,iEt,nEt,Qq,ti,oEt,kEt,wEt,fC,Jq=z(()=>{"use strict";St();Xt();Xt();br();Ci();Ir();Bn();sl();FRe();J3t=o(function(e){Z.debug("options str",e)},"setOptions"),eEt=o(function(){return{}},"getOptions"),tEt=o(function(){rEt(),gr()},"clear");o(rEt,"reset");iEt=or.eventmodeling,nEt=o(()=>Gr({...iEt,...Nt().eventmodeling}),"getConfig"),Qq={};o(aEt,"getState");o(sEt,"setAst");ti={swimlaneMinHeight:70,swimlanePadding:15,swimlaneGap:10,boxPadding:10,boxOverlap:90,boxDefaultY:0,boxMinWidth:80,boxMaxWidth:450,boxMinHeight:80,boxMaxHeight:750,contentStartX:250,textMaxWidth:430,boxTextFontWeight:"bold",boxTextPadding:10,swimlaneTextFontWeight:"bold",labelUiAutomation:"UI/Automation",labelUiAutomationPrefix:"UI/A: ",labelCommandReadModel:"Command/Read Model",labelCommandReadModelPrefix:"C/RM: ",labelEvents:"Events",labelEventsPrefix:"Stream: "};o(zRe,"getDiagramProps");oEt={boxes:[],swimlanes:{},relations:[],maxR:0,sortedSwimlanesArray:[]};o(lEt,"extractNamespace");o(cEt,"extractName");o(uEt,"findSwimlaneByNamespace");o(Kq,"findNextAvailableIndex");o(hEt,"calculateSwimlaneProps");o(dEt,"calculateEntityVisualProps");o(fEt,"calculateTextProps");o(pEt,"decidePositionFrame");o(mEt,"calculateX");o(gEt,"calculateMaxRight");o(GRe,"sortedSwimlanesArray");o(yEt,"evolveFramePositioned");o(vEt,"isFirstFrame");o(xEt,"hasSourceFrame");o($Re,"findBoxByFrame");o(bEt,"findBoxByLineIndex");o(TEt,"decidePositionRelation");o(CEt,"evolveRelationPositioned");kEt={[Yq]:pEt,[A_]:TEt},wEt={[jq]:yEt,[Xq]:CEt};o(SEt,"decide");o(EEt,"evolve");o(Zq,"dispatch");fC={getConfig:nEt,setOptions:J3t,getOptions:eEt,clear:tEt,setAccTitle:Cr,getAccTitle:kr,getAccDescription:Sr,setAccDescription:wr,setDiagramTitle:Ar,getDiagramTitle:Er,setAst:sEt,getDiagramProps:zRe,getState:aEt}});var VRe,WRe=z(()=>{"use strict";sl();St();au();Jq();VRe={parse:o(async e=>{let t=await bn("eventmodeling",e);Z.debug(t),fC.setAst(t),ca(t,fC)},"parse")}});function DEt(e,t){return r=>{let i=r.swimlane.y+t.swimlanePadding,n=e.append("g").attr("class","em-box");n.append("rect").attr("x",r.x).attr("y",i).attr("rx","3").attr("width",r.dimension.width).attr("height",r.dimension.height).attr("stroke",r.visual.stroke).attr("fill",r.visual.fill),n.append("foreignObject").attr("x",r.x+t.boxPadding).attr("y",i+10).attr("width",r.dimension.width-2*t.boxPadding).attr("height",r.dimension.height-2*t.boxPadding).append("xhtml:div").style("display","table").style("height","100%").style("width","100%").append("span").style("display","table-cell").style("text-align","center").style("vertical-align","middle").html(r.text)}}function REt(e,t){return e>t}function LEt(e,t,r,i){return n=>{let a=n.sourceBox.swimlane.y+t.swimlanePadding,s=n.targetBox.swimlane.y+t.swimlanePadding,l=REt(a,s),u=n.sourceBox.x+n.sourceBox.dimension.width*2/3,h=n.targetBox.x+n.targetBox.dimension.width/3,d,f;Z.debug(`rendering relation up=${l} for `,{sourceBox:n.sourceBox,targetBox:n.targetBox}),l?(d=a,f=s+n.targetBox.dimension.height):(d=a+n.sourceBox.dimension.height,f=s);let p=i.emRelationStroke??n.visual.stroke;e.append("path").attr("class","em-relation").attr("fill",n.visual.fill).attr("stroke",p).attr("stroke-width","1").attr("marker-end",`url(#${r})`).attr("d",`M${u} ${d} L${h} ${f}`)}}function MEt(e,t,r,i){return n=>{let a=e.append("g").attr("class","em-swimlane"),s=i.emSwimlaneBackgroundOdd??"rgb(250,250,250)",l=i.emSwimlaneBackgroundStroke??"rgb(240,240,240)";a.append("rect").attr("x",0).attr("y",n.y).attr("rx","3").attr("width",t+r.swimlanePadding).attr("height",n.height).attr("fill",s).attr("stroke",l),a.append("text").attr("font-weight",r.swimlaneTextFontWeight).attr("x",30).attr("y",n.y+30).text(n.label)}}var AEt,_Et,NEt,qRe,URe=z(()=>{"use strict";Rr();Ut();St();AEt=ge(),_Et=AEt?.eventmodeling;o(DEt,"renderD3Box");o(REt,"dirUpwards");o(LEt,"renderD3Relation");o(MEt,"renderD3Swimlane");NEt=o(function(e,t,r,i){if(Z.debug("in eventmodeling renderer",e+`
-`,"id:",t,r),!_Et)throw new Error("EventModeling config not found");let n=i.db,{themeVariables:a,eventmodeling:s}=ge(),l=Je(`[id="${t}"]`),u=n.getDiagramProps(),h=n.getState(),d=`em-arrowhead-${t}`,f=a.emArrowhead??"#000000";h.sortedSwimlanesArray.forEach(MEt(l,h.maxR,u,a)),h.boxes.forEach(DEt(l,u)),h.relations.forEach(LEt(l,u,d,a)),l.append("defs").append("marker").attr("id",d).attr("markerWidth","10").attr("markerHeight","7").attr("refX","10").attr("refY","3.5").attr("orient","auto").append("polygon").attr("points","0 0, 10 3.5, 0 7").attr("fill",f),Av(void 0,l,s?.padding??30,s?.useMaxWidth)},"draw"),qRe={draw:NEt}});var IEt,HRe,YRe=z(()=>{"use strict";IEt=o(e=>"","getStyles"),HRe=IEt});var jRe={};xr(jRe,{diagram:()=>OEt});var OEt,XRe=z(()=>{"use strict";WRe();Jq();URe();YRe();OEt={parser:VRe,db:fC,renderer:qRe,styles:HRe}});var eU,QRe,JRe=z(()=>{"use strict";eU=(function(){var e=o(function(x,b,T,w){for(T=T||{},w=x.length;w--;T[x[w]]=b);return T},"o"),t=[1,4],r=[1,14],i=[1,12],n=[1,13],a=[6,7,8],s=[1,20],l=[1,18],u=[1,19],h=[6,7,11],d=[1,6,13,14],f=[1,23],p=[1,24],m=[1,6,7,11,13,14],g={trace:o(function(){},"trace"),yy:{},symbols_:{error:2,start:3,ishikawa:4,spaceLines:5,SPACELINE:6,NL:7,ISHIKAWA:8,document:9,stop:10,EOF:11,statement:12,SPACELIST:13,TEXT:14,$accept:0,$end:1},terminals_:{2:"error",6:"SPACELINE",7:"NL",8:"ISHIKAWA",11:"EOF",13:"SPACELIST",14:"TEXT"},productions_:[0,[3,1],[3,2],[5,1],[5,2],[5,2],[4,2],[4,3],[10,1],[10,1],[10,1],[10,2],[10,2],[9,3],[9,2],[12,2],[12,1],[12,1],[12,1]],performAction:o(function(b,T,w,C,k,E,A){var N=E.length-1;switch(k){case 6:case 7:return C;case 15:C.addNode(E[N-1].length,E[N].trim());break;case 16:C.addNode(0,E[N].trim());break}},"anonymous"),table:[{3:1,4:2,5:3,6:[1,5],8:t},{1:[3]},{1:[2,1]},{4:6,6:[1,7],7:[1,8],8:t},{6:r,7:[1,10],9:9,12:11,13:i,14:n},e(a,[2,3]),{1:[2,2]},e(a,[2,4]),e(a,[2,5]),{1:[2,6],6:r,12:15,13:i,14:n},{6:r,9:16,12:11,13:i,14:n},{6:s,7:l,10:17,11:u},e(h,[2,18],{14:[1,21]}),e(h,[2,16]),e(h,[2,17]),{6:s,7:l,10:22,11:u},{1:[2,7],6:r,12:15,13:i,14:n},e(d,[2,14],{7:f,11:p}),e(m,[2,8]),e(m,[2,9]),e(m,[2,10]),e(h,[2,15]),e(d,[2,13],{7:f,11:p}),e(m,[2,11]),e(m,[2,12])],defaultActions:{2:[2,1],6:[2,2]},parseError:o(function(b,T){if(T.recoverable)this.trace(b);else{var w=new Error(b);throw w.hash=T,w}},"parseError"),parse:o(function(b){var T=this,w=[0],C=[],k=[null],E=[],A=this.table,N="",P=0,I=0,D=0,_=2,R=1,M=E.slice.call(arguments,1),L=Object.create(this.lexer),B={yy:{}};for(var O in this.yy)Object.prototype.hasOwnProperty.call(this.yy,O)&&(B.yy[O]=this.yy[O]);L.setInput(b,B.yy),B.yy.lexer=L,B.yy.parser=this,typeof L.yylloc>"u"&&(L.yylloc={});var $=L.yylloc;E.push($);var G=L.options&&L.options.ranges;typeof B.yy.parseError=="function"?this.parseError=B.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function F(De){w.length=w.length-2*De,k.length=k.length-De,E.length=E.length-De}o(F,"popStack");function V(){var De;return De=C.pop()||L.lex()||R,typeof De!="number"&&(De instanceof Array&&(C=De,De=C.pop()),De=T.symbols_[De]||De),De}o(V,"lex");for(var H,j,U,Q,Y,ae,J={},te,re,ee,Te;;){if(U=w[w.length-1],this.defaultActions[U]?Q=this.defaultActions[U]:((H===null||typeof H>"u")&&(H=V()),Q=A[U]&&A[U][H]),typeof Q>"u"||!Q.length||!Q[0]){var ue="";Te=[];for(te in A[U])this.terminals_[te]&&te>_&&Te.push("'"+this.terminals_[te]+"'");L.showPosition?ue="Parse error on line "+(P+1)+`:
-`+L.showPosition()+`
-Expecting `+Te.join(", ")+", got '"+(this.terminals_[H]||H)+"'":ue="Parse error on line "+(P+1)+": Unexpected "+(H==R?"end of input":"'"+(this.terminals_[H]||H)+"'"),this.parseError(ue,{text:L.match,token:this.terminals_[H]||H,line:L.yylineno,loc:$,expected:Te})}if(Q[0]instanceof Array&&Q.length>1)throw new Error("Parse Error: multiple actions possible at state: "+U+", token: "+H);switch(Q[0]){case 1:w.push(H),k.push(L.yytext),E.push(L.yylloc),w.push(Q[1]),H=null,j?(H=j,j=null):(I=L.yyleng,N=L.yytext,P=L.yylineno,$=L.yylloc,D>0&&D--);break;case 2:if(re=this.productions_[Q[1]][1],J.$=k[k.length-re],J._$={first_line:E[E.length-(re||1)].first_line,last_line:E[E.length-1].last_line,first_column:E[E.length-(re||1)].first_column,last_column:E[E.length-1].last_column},G&&(J._$.range=[E[E.length-(re||1)].range[0],E[E.length-1].range[1]]),ae=this.performAction.apply(J,[N,I,P,B.yy,Q[1],k,E].concat(M)),typeof ae<"u")return ae;re&&(w=w.slice(0,-1*re*2),k=k.slice(0,-1*re),E=E.slice(0,-1*re)),w.push(this.productions_[Q[1]][0]),k.push(J.$),E.push(J._$),ee=A[w[w.length-2]][w[w.length-1]],w.push(ee);break;case 3:return!0}}return!0},"parse")},y=(function(){var x={EOF:1,parseError:o(function(T,w){if(this.yy.parser)this.yy.parser.parseError(T,w);else throw new Error(T)},"parseError"),setInput:o(function(b,T){return this.yy=T||this.yy||{},this._input=b,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},"setInput"),input:o(function(){var b=this._input[0];this.yytext+=b,this.yyleng++,this.offset++,this.match+=b,this.matched+=b;var T=b.match(/(?:\r\n?|\n).*/g);return T?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),b},"input"),unput:o(function(b){var T=b.length,w=b.split(/(?:\r\n?|\n)/g);this._input=b+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-T),this.offset-=T;var C=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),w.length-1&&(this.yylineno-=w.length-1);var k=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:w?(w.length===C.length?this.yylloc.first_column:0)+C[C.length-w.length].length-w[0].length:this.yylloc.first_column-T},this.options.ranges&&(this.yylloc.range=[k[0],k[0]+this.yyleng-T]),this.yyleng=this.yytext.length,this},"unput"),more:o(function(){return this._more=!0,this},"more"),reject:o(function(){if(this.options.backtrack_lexer)this._backtrack=!0;else return this.parseError("Lexical error on line "+(this.yylineno+1)+`. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).
+`,"getStyles"),E9e=v8t});var qj=Io((tk,Wj)=>{"use strict";o((function(t,r){typeof tk=="object"&&typeof Wj=="object"?Wj.exports=r():typeof define=="function"&&define.amd?define([],r):typeof tk=="object"?tk.layoutBase=r():t.layoutBase=r()}),"webpackUniversalModuleDefinition")(tk,function(){return(function(e){var t={};function r(n){if(t[n])return t[n].exports;var i=t[n]={i:n,l:!1,exports:{}};return e[n].call(i.exports,i,i.exports,r),i.l=!0,i.exports}return o(r,"__webpack_require__"),r.m=e,r.c=t,r.i=function(n){return n},r.d=function(n,i,a){r.o(n,i)||Object.defineProperty(n,i,{configurable:!1,enumerable:!0,get:a})},r.n=function(n){var i=n&&n.__esModule?o(function(){return n.default},"getDefault"):o(function(){return n},"getModuleExports");return r.d(i,"a",i),i},r.o=function(n,i){return Object.prototype.hasOwnProperty.call(n,i)},r.p="",r(r.s=28)})([(function(e,t,r){"use strict";function n(){}o(n,"LayoutConstants"),n.QUALITY=1,n.DEFAULT_CREATE_BENDS_AS_NEEDED=!1,n.DEFAULT_INCREMENTAL=!1,n.DEFAULT_ANIMATION_ON_LAYOUT=!0,n.DEFAULT_ANIMATION_DURING_LAYOUT=!1,n.DEFAULT_ANIMATION_PERIOD=50,n.DEFAULT_UNIFORM_LEAF_NODE_SIZES=!1,n.DEFAULT_GRAPH_MARGIN=15,n.NODE_DIMENSIONS_INCLUDE_LABELS=!1,n.SIMPLE_NODE_SIZE=40,n.SIMPLE_NODE_HALF_SIZE=n.SIMPLE_NODE_SIZE/2,n.EMPTY_COMPOUND_NODE_SIZE=40,n.MIN_EDGE_LENGTH=1,n.WORLD_BOUNDARY=1e6,n.INITIAL_WORLD_BOUNDARY=n.WORLD_BOUNDARY/1e3,n.WORLD_CENTER_X=1200,n.WORLD_CENTER_Y=900,e.exports=n}),(function(e,t,r){"use strict";var n=r(2),i=r(8),a=r(9);function s(u,h,d){n.call(this,d),this.isOverlapingSourceAndTarget=!1,this.vGraphObject=d,this.bendpoints=[],this.source=u,this.target=h}o(s,"LEdge"),s.prototype=Object.create(n.prototype);for(var l in n)s[l]=n[l];s.prototype.getSource=function(){return this.source},s.prototype.getTarget=function(){return this.target},s.prototype.isInterGraph=function(){return this.isInterGraph},s.prototype.getLength=function(){return this.length},s.prototype.isOverlapingSourceAndTarget=function(){return this.isOverlapingSourceAndTarget},s.prototype.getBendpoints=function(){return this.bendpoints},s.prototype.getLca=function(){return this.lca},s.prototype.getSourceInLca=function(){return this.sourceInLca},s.prototype.getTargetInLca=function(){return this.targetInLca},s.prototype.getOtherEnd=function(u){if(this.source===u)return this.target;if(this.target===u)return this.source;throw"Node is not incident with this edge"},s.prototype.getOtherEndInGraph=function(u,h){for(var d=this.getOtherEnd(u),f=h.getGraphManager().getRoot();;){if(d.getOwner()==h)return d;if(d.getOwner()==f)break;d=d.getOwner().getParent()}return null},s.prototype.updateLength=function(){var u=new Array(4);this.isOverlapingSourceAndTarget=i.getIntersection(this.target.getRect(),this.source.getRect(),u),this.isOverlapingSourceAndTarget||(this.lengthX=u[0]-u[2],this.lengthY=u[1]-u[3],Math.abs(this.lengthX)<1&&(this.lengthX=a.sign(this.lengthX)),Math.abs(this.lengthY)<1&&(this.lengthY=a.sign(this.lengthY)),this.length=Math.sqrt(this.lengthX*this.lengthX+this.lengthY*this.lengthY))},s.prototype.updateLengthSimple=function(){this.lengthX=this.target.getCenterX()-this.source.getCenterX(),this.lengthY=this.target.getCenterY()-this.source.getCenterY(),Math.abs(this.lengthX)<1&&(this.lengthX=a.sign(this.lengthX)),Math.abs(this.lengthY)<1&&(this.lengthY=a.sign(this.lengthY)),this.length=Math.sqrt(this.lengthX*this.lengthX+this.lengthY*this.lengthY)},e.exports=s}),(function(e,t,r){"use strict";function n(i){this.vGraphObject=i}o(n,"LGraphObject"),e.exports=n}),(function(e,t,r){"use strict";var n=r(2),i=r(10),a=r(13),s=r(0),l=r(16),u=r(5);function h(f,p,m,g){m==null&&g==null&&(g=p),n.call(this,g),f.graphManager!=null&&(f=f.graphManager),this.estimatedSize=i.MIN_VALUE,this.inclusionTreeDepth=i.MAX_VALUE,this.vGraphObject=g,this.edges=[],this.graphManager=f,m!=null&&p!=null?this.rect=new a(p.x,p.y,m.width,m.height):this.rect=new a}o(h,"LNode"),h.prototype=Object.create(n.prototype);for(var d in n)h[d]=n[d];h.prototype.getEdges=function(){return this.edges},h.prototype.getChild=function(){return this.child},h.prototype.getOwner=function(){return this.owner},h.prototype.getWidth=function(){return this.rect.width},h.prototype.setWidth=function(f){this.rect.width=f},h.prototype.getHeight=function(){return this.rect.height},h.prototype.setHeight=function(f){this.rect.height=f},h.prototype.getCenterX=function(){return this.rect.x+this.rect.width/2},h.prototype.getCenterY=function(){return this.rect.y+this.rect.height/2},h.prototype.getCenter=function(){return new u(this.rect.x+this.rect.width/2,this.rect.y+this.rect.height/2)},h.prototype.getLocation=function(){return new u(this.rect.x,this.rect.y)},h.prototype.getRect=function(){return this.rect},h.prototype.getDiagonal=function(){return Math.sqrt(this.rect.width*this.rect.width+this.rect.height*this.rect.height)},h.prototype.getHalfTheDiagonal=function(){return Math.sqrt(this.rect.height*this.rect.height+this.rect.width*this.rect.width)/2},h.prototype.setRect=function(f,p){this.rect.x=f.x,this.rect.y=f.y,this.rect.width=p.width,this.rect.height=p.height},h.prototype.setCenter=function(f,p){this.rect.x=f-this.rect.width/2,this.rect.y=p-this.rect.height/2},h.prototype.setLocation=function(f,p){this.rect.x=f,this.rect.y=p},h.prototype.moveBy=function(f,p){this.rect.x+=f,this.rect.y+=p},h.prototype.getEdgeListToNode=function(f){var p=[],m,g=this;return g.edges.forEach(function(y){if(y.target==f){if(y.source!=g)throw"Incorrect edge source!";p.push(y)}}),p},h.prototype.getEdgesBetween=function(f){var p=[],m,g=this;return g.edges.forEach(function(y){if(!(y.source==g||y.target==g))throw"Incorrect edge source and/or target";(y.target==f||y.source==f)&&p.push(y)}),p},h.prototype.getNeighborsList=function(){var f=new Set,p=this;return p.edges.forEach(function(m){if(m.source==p)f.add(m.target);else{if(m.target!=p)throw"Incorrect incidency!";f.add(m.source)}}),f},h.prototype.withChildren=function(){var f=new Set,p,m;if(f.add(this),this.child!=null)for(var g=this.child.getNodes(),y=0;y<g.length;y++)p=g[y],m=p.withChildren(),m.forEach(function(v){f.add(v)});return f},h.prototype.getNoOfChildren=function(){var f=0,p;if(this.child==null)f=1;else for(var m=this.child.getNodes(),g=0;g<m.length;g++)p=m[g],f+=p.getNoOfChildren();return f==0&&(f=1),f},h.prototype.getEstimatedSize=function(){if(this.estimatedSize==i.MIN_VALUE)throw"assert failed";return this.estimatedSize},h.prototype.calcEstimatedSize=function(){return this.child==null?this.estimatedSize=(this.rect.width+this.rect.height)/2:(this.estimatedSize=this.child.calcEstimatedSize(),this.rect.width=this.estimatedSize,this.rect.height=this.estimatedSize,this.estimatedSize)},h.prototype.scatter=function(){var f,p,m=-s.INITIAL_WORLD_BOUNDARY,g=s.INITIAL_WORLD_BOUNDARY;f=s.WORLD_CENTER_X+l.nextDouble()*(g-m)+m;var y=-s.INITIAL_WORLD_BOUNDARY,v=s.INITIAL_WORLD_BOUNDARY;p=s.WORLD_CENTER_Y+l.nextDouble()*(v-y)+y,this.rect.x=f,this.rect.y=p},h.prototype.updateBounds=function(){if(this.getChild()==null)throw"assert failed";if(this.getChild().getNodes().length!=0){var f=this.getChild();if(f.updateBounds(!0),this.rect.x=f.getLeft(),this.rect.y=f.getTop(),this.setWidth(f.getRight()-f.getLeft()),this.setHeight(f.getBottom()-f.getTop()),s.NODE_DIMENSIONS_INCLUDE_LABELS){var p=f.getRight()-f.getLeft(),m=f.getBottom()-f.getTop();this.labelWidth&&(this.labelPosHorizontal=="left"?(this.rect.x-=this.labelWidth,this.setWidth(p+this.labelWidth)):this.labelPosHorizontal=="center"&&this.labelWidth>p?(this.rect.x-=(this.labelWidth-p)/2,this.setWidth(this.labelWidth)):this.labelPosHorizontal=="right"&&this.setWidth(p+this.labelWidth)),this.labelHeight&&(this.labelPosVertical=="top"?(this.rect.y-=this.labelHeight,this.setHeight(m+this.labelHeight)):this.labelPosVertical=="center"&&this.labelHeight>m?(this.rect.y-=(this.labelHeight-m)/2,this.setHeight(this.labelHeight)):this.labelPosVertical=="bottom"&&this.setHeight(m+this.labelHeight))}}},h.prototype.getInclusionTreeDepth=function(){if(this.inclusionTreeDepth==i.MAX_VALUE)throw"assert failed";return this.inclusionTreeDepth},h.prototype.transform=function(f){var p=this.rect.x;p>s.WORLD_BOUNDARY?p=s.WORLD_BOUNDARY:p<-s.WORLD_BOUNDARY&&(p=-s.WORLD_BOUNDARY);var m=this.rect.y;m>s.WORLD_BOUNDARY?m=s.WORLD_BOUNDARY:m<-s.WORLD_BOUNDARY&&(m=-s.WORLD_BOUNDARY);var g=new u(p,m),y=f.inverseTransformPoint(g);this.setLocation(y.x,y.y)},h.prototype.getLeft=function(){return this.rect.x},h.prototype.getRight=function(){return this.rect.x+this.rect.width},h.prototype.getTop=function(){return this.rect.y},h.prototype.getBottom=function(){return this.rect.y+this.rect.height},h.prototype.getParent=function(){return this.owner==null?null:this.owner.getParent()},e.exports=h}),(function(e,t,r){"use strict";var n=r(0);function i(){}o(i,"FDLayoutConstants");for(var a in n)i[a]=n[a];i.MAX_ITERATIONS=2500,i.DEFAULT_EDGE_LENGTH=50,i.DEFAULT_SPRING_STRENGTH=.45,i.DEFAULT_REPULSION_STRENGTH=4500,i.DEFAULT_GRAVITY_STRENGTH=.4,i.DEFAULT_COMPOUND_GRAVITY_STRENGTH=1,i.DEFAULT_GRAVITY_RANGE_FACTOR=3.8,i.DEFAULT_COMPOUND_GRAVITY_RANGE_FACTOR=1.5,i.DEFAULT_USE_SMART_IDEAL_EDGE_LENGTH_CALCULATION=!0,i.DEFAULT_USE_SMART_REPULSION_RANGE_CALCULATION=!0,i.DEFAULT_COOLING_FACTOR_INCREMENTAL=.3,i.COOLING_ADAPTATION_FACTOR=.33,i.ADAPTATION_LOWER_NODE_LIMIT=1e3,i.ADAPTATION_UPPER_NODE_LIMIT=5e3,i.MAX_NODE_DISPLACEMENT_INCREMENTAL=100,i.MAX_NODE_DISPLACEMENT=i.MAX_NODE_DISPLACEMENT_INCREMENTAL*3,i.MIN_REPULSION_DIST=i.DEFAULT_EDGE_LENGTH/10,i.CONVERGENCE_CHECK_PERIOD=100,i.PER_LEVEL_IDEAL_EDGE_LENGTH_FACTOR=.1,i.MIN_EDGE_LENGTH=1,i.GRID_CALCULATION_CHECK_PERIOD=10,e.exports=i}),(function(e,t,r){"use strict";function n(i,a){i==null&&a==null?(this.x=0,this.y=0):(this.x=i,this.y=a)}o(n,"PointD"),n.prototype.getX=function(){return this.x},n.prototype.getY=function(){return this.y},n.prototype.setX=function(i){this.x=i},n.prototype.setY=function(i){this.y=i},n.prototype.getDifference=function(i){return new DimensionD(this.x-i.x,this.y-i.y)},n.prototype.getCopy=function(){return new n(this.x,this.y)},n.prototype.translate=function(i){return this.x+=i.width,this.y+=i.height,this},e.exports=n}),(function(e,t,r){"use strict";var n=r(2),i=r(10),a=r(0),s=r(7),l=r(3),u=r(1),h=r(13),d=r(12),f=r(11);function p(g,y,v){n.call(this,v),this.estimatedSize=i.MIN_VALUE,this.margin=a.DEFAULT_GRAPH_MARGIN,this.edges=[],this.nodes=[],this.isConnected=!1,this.parent=g,y!=null&&y instanceof s?this.graphManager=y:y!=null&&y instanceof Layout&&(this.graphManager=y.graphManager)}o(p,"LGraph"),p.prototype=Object.create(n.prototype);for(var m in n)p[m]=n[m];p.prototype.getNodes=function(){return this.nodes},p.prototype.getEdges=function(){return this.edges},p.prototype.getGraphManager=function(){return this.graphManager},p.prototype.getParent=function(){return this.parent},p.prototype.getLeft=function(){return this.left},p.prototype.getRight=function(){return this.right},p.prototype.getTop=function(){return this.top},p.prototype.getBottom=function(){return this.bottom},p.prototype.isConnected=function(){return this.isConnected},p.prototype.add=function(g,y,v){if(y==null&&v==null){var x=g;if(this.graphManager==null)throw"Graph has no graph mgr!";if(this.getNodes().indexOf(x)>-1)throw"Node already in graph!";return x.owner=this,this.getNodes().push(x),x}else{var b=g;if(!(this.getNodes().indexOf(y)>-1&&this.getNodes().indexOf(v)>-1))throw"Source or target not in graph!";if(!(y.owner==v.owner&&y.owner==this))throw"Both owners must be this graph!";return y.owner!=v.owner?null:(b.source=y,b.target=v,b.isInterGraph=!1,this.getEdges().push(b),y.edges.push(b),v!=y&&v.edges.push(b),b)}},p.prototype.remove=function(g){var y=g;if(g instanceof l){if(y==null)throw"Node is null!";if(!(y.owner!=null&&y.owner==this))throw"Owner graph is invalid!";if(this.graphManager==null)throw"Owner graph manager is invalid!";for(var v=y.edges.slice(),x,b=v.length,T=0;T<b;T++)x=v[T],x.isInterGraph?this.graphManager.remove(x):x.source.owner.remove(x);var k=this.nodes.indexOf(y);if(k==-1)throw"Node not in owner node list!";this.nodes.splice(k,1)}else if(g instanceof u){var x=g;if(x==null)throw"Edge is null!";if(!(x.source!=null&&x.target!=null))throw"Source and/or target is null!";if(!(x.source.owner!=null&&x.target.owner!=null&&x.source.owner==this&&x.target.owner==this))throw"Source and/or target owner is invalid!";var C=x.source.edges.indexOf(x),w=x.target.edges.indexOf(x);if(!(C>-1&&w>-1))throw"Source and/or target doesn't know this edge!";x.source.edges.splice(C,1),x.target!=x.source&&x.target.edges.splice(w,1);var k=x.source.owner.getEdges().indexOf(x);if(k==-1)throw"Not in owner's edge list!";x.source.owner.getEdges().splice(k,1)}},p.prototype.updateLeftTop=function(){for(var g=i.MAX_VALUE,y=i.MAX_VALUE,v,x,b,T=this.getNodes(),k=T.length,C=0;C<k;C++){var w=T[C];v=w.getTop(),x=w.getLeft(),g>v&&(g=v),y>x&&(y=x)}return g==i.MAX_VALUE?null:(T[0].getParent().paddingLeft!=null?b=T[0].getParent().paddingLeft:b=this.margin,this.left=y-b,this.top=g-b,new d(this.left,this.top))},p.prototype.updateBounds=function(g){for(var y=i.MAX_VALUE,v=-i.MAX_VALUE,x=i.MAX_VALUE,b=-i.MAX_VALUE,T,k,C,w,S,R=this.nodes,L=R.length,N=0;N<L;N++){var I=R[N];g&&I.child!=null&&I.updateBounds(),T=I.getLeft(),k=I.getRight(),C=I.getTop(),w=I.getBottom(),y>T&&(y=T),v<k&&(v=k),x>C&&(x=C),b<w&&(b=w)}var _=new h(y,x,v-y,b-x);y==i.MAX_VALUE&&(this.left=this.parent.getLeft(),this.right=this.parent.getRight(),this.top=this.parent.getTop(),this.bottom=this.parent.getBottom()),R[0].getParent().paddingLeft!=null?S=R[0].getParent().paddingLeft:S=this.margin,this.left=_.x-S,this.right=_.x+_.width+S,this.top=_.y-S,this.bottom=_.y+_.height+S},p.calculateBounds=function(g){for(var y=i.MAX_VALUE,v=-i.MAX_VALUE,x=i.MAX_VALUE,b=-i.MAX_VALUE,T,k,C,w,S=g.length,R=0;R<S;R++){var L=g[R];T=L.getLeft(),k=L.getRight(),C=L.getTop(),w=L.getBottom(),y>T&&(y=T),v<k&&(v=k),x>C&&(x=C),b<w&&(b=w)}var N=new h(y,x,v-y,b-x);return N},p.prototype.getInclusionTreeDepth=function(){return this==this.graphManager.getRoot()?1:this.parent.getInclusionTreeDepth()},p.prototype.getEstimatedSize=function(){if(this.estimatedSize==i.MIN_VALUE)throw"assert failed";return this.estimatedSize},p.prototype.calcEstimatedSize=function(){for(var g=0,y=this.nodes,v=y.length,x=0;x<v;x++){var b=y[x];g+=b.calcEstimatedSize()}return g==0?this.estimatedSize=a.EMPTY_COMPOUND_NODE_SIZE:this.estimatedSize=g/Math.sqrt(this.nodes.length),this.estimatedSize},p.prototype.updateConnected=function(){var g=this;if(this.nodes.length==0){this.isConnected=!0;return}var y=new f,v=new Set,x=this.nodes[0],b,T,k=x.withChildren();for(k.forEach(function(N){y.push(N),v.add(N)});y.length!==0;){x=y.shift(),b=x.getEdges();for(var C=b.length,w=0;w<C;w++){var S=b[w];if(T=S.getOtherEndInGraph(x,this),T!=null&&!v.has(T)){var R=T.withChildren();R.forEach(function(N){y.push(N),v.add(N)})}}}if(this.isConnected=!1,v.size>=this.nodes.length){var L=0;v.forEach(function(N){N.owner==g&&L++}),L==this.nodes.length&&(this.isConnected=!0)}},e.exports=p}),(function(e,t,r){"use strict";var n,i=r(1);function a(s){n=r(6),this.layout=s,this.graphs=[],this.edges=[]}o(a,"LGraphManager"),a.prototype.addRoot=function(){var s=this.layout.newGraph(),l=this.layout.newNode(null),u=this.add(s,l);return this.setRootGraph(u),this.rootGraph},a.prototype.add=function(s,l,u,h,d){if(u==null&&h==null&&d==null){if(s==null)throw"Graph is null!";if(l==null)throw"Parent node is null!";if(this.graphs.indexOf(s)>-1)throw"Graph already in this graph mgr!";if(this.graphs.push(s),s.parent!=null)throw"Already has a parent!";if(l.child!=null)throw"Already has a child!";return s.parent=l,l.child=s,s}else{d=u,h=l,u=s;var f=h.getOwner(),p=d.getOwner();if(!(f!=null&&f.getGraphManager()==this))throw"Source not in this graph mgr!";if(!(p!=null&&p.getGraphManager()==this))throw"Target not in this graph mgr!";if(f==p)return u.isInterGraph=!1,f.add(u,h,d);if(u.isInterGraph=!0,u.source=h,u.target=d,this.edges.indexOf(u)>-1)throw"Edge already in inter-graph edge list!";if(this.edges.push(u),!(u.source!=null&&u.target!=null))throw"Edge source and/or target is null!";if(!(u.source.edges.indexOf(u)==-1&&u.target.edges.indexOf(u)==-1))throw"Edge already in source and/or target incidency list!";return u.source.edges.push(u),u.target.edges.push(u),u}},a.prototype.remove=function(s){if(s instanceof n){var l=s;if(l.getGraphManager()!=this)throw"Graph not in this graph mgr";if(!(l==this.rootGraph||l.parent!=null&&l.parent.graphManager==this))throw"Invalid parent node!";var u=[];u=u.concat(l.getEdges());for(var h,d=u.length,f=0;f<d;f++)h=u[f],l.remove(h);var p=[];p=p.concat(l.getNodes());var m;d=p.length;for(var f=0;f<d;f++)m=p[f],l.remove(m);l==this.rootGraph&&this.setRootGraph(null);var g=this.graphs.indexOf(l);this.graphs.splice(g,1),l.parent=null}else if(s instanceof i){if(h=s,h==null)throw"Edge is null!";if(!h.isInterGraph)throw"Not an inter-graph edge!";if(!(h.source!=null&&h.target!=null))throw"Source and/or target is null!";if(!(h.source.edges.indexOf(h)!=-1&&h.target.edges.indexOf(h)!=-1))throw"Source and/or target doesn't know this edge!";var g=h.source.edges.indexOf(h);if(h.source.edges.splice(g,1),g=h.target.edges.indexOf(h),h.target.edges.splice(g,1),!(h.source.owner!=null&&h.source.owner.getGraphManager()!=null))throw"Edge owner graph or owner graph manager is null!";if(h.source.owner.getGraphManager().edges.indexOf(h)==-1)throw"Not in owner graph manager's edge list!";var g=h.source.owner.getGraphManager().edges.indexOf(h);h.source.owner.getGraphManager().edges.splice(g,1)}},a.prototype.updateBounds=function(){this.rootGraph.updateBounds(!0)},a.prototype.getGraphs=function(){return this.graphs},a.prototype.getAllNodes=function(){if(this.allNodes==null){for(var s=[],l=this.getGraphs(),u=l.length,h=0;h<u;h++)s=s.concat(l[h].getNodes());this.allNodes=s}return this.allNodes},a.prototype.resetAllNodes=function(){this.allNodes=null},a.prototype.resetAllEdges=function(){this.allEdges=null},a.prototype.resetAllNodesToApplyGravitation=function(){this.allNodesToApplyGravitation=null},a.prototype.getAllEdges=function(){if(this.allEdges==null){for(var s=[],l=this.getGraphs(),u=l.length,h=0;h<l.length;h++)s=s.concat(l[h].getEdges());s=s.concat(this.edges),this.allEdges=s}return this.allEdges},a.prototype.getAllNodesToApplyGravitation=function(){return this.allNodesToApplyGravitation},a.prototype.setAllNodesToApplyGravitation=function(s){if(this.allNodesToApplyGravitation!=null)throw"assert failed";this.allNodesToApplyGravitation=s},a.prototype.getRoot=function(){return this.rootGraph},a.prototype.setRootGraph=function(s){if(s.getGraphManager()!=this)throw"Root not in this graph mgr!";this.rootGraph=s,s.parent==null&&(s.parent=this.layout.newNode("Root node"))},a.prototype.getLayout=function(){return this.layout},a.prototype.isOneAncestorOfOther=function(s,l){if(!(s!=null&&l!=null))throw"assert failed";if(s==l)return!0;var u=s.getOwner(),h;do{if(h=u.getParent(),h==null)break;if(h==l)return!0;if(u=h.getOwner(),u==null)break}while(!0);u=l.getOwner();do{if(h=u.getParent(),h==null)break;if(h==s)return!0;if(u=h.getOwner(),u==null)break}while(!0);return!1},a.prototype.calcLowestCommonAncestors=function(){for(var s,l,u,h,d,f=this.getAllEdges(),p=f.length,m=0;m<p;m++){if(s=f[m],l=s.source,u=s.target,s.lca=null,s.sourceInLca=l,s.targetInLca=u,l==u){s.lca=l.getOwner();continue}for(h=l.getOwner();s.lca==null;){for(s.targetInLca=u,d=u.getOwner();s.lca==null;){if(d==h){s.lca=d;break}if(d==this.rootGraph)break;if(s.lca!=null)throw"assert failed";s.targetInLca=d.getParent(),d=s.targetInLca.getOwner()}if(h==this.rootGraph)break;s.lca==null&&(s.sourceInLca=h.getParent(),h=s.sourceInLca.getOwner())}if(s.lca==null)throw"assert failed"}},a.prototype.calcLowestCommonAncestor=function(s,l){if(s==l)return s.getOwner();var u=s.getOwner();do{if(u==null)break;var h=l.getOwner();do{if(h==null)break;if(h==u)return h;h=h.getParent().getOwner()}while(!0);u=u.getParent().getOwner()}while(!0);return u},a.prototype.calcInclusionTreeDepths=function(s,l){s==null&&l==null&&(s=this.rootGraph,l=1);for(var u,h=s.getNodes(),d=h.length,f=0;f<d;f++)u=h[f],u.inclusionTreeDepth=l,u.child!=null&&this.calcInclusionTreeDepths(u.child,l+1)},a.prototype.includesInvalidEdge=function(){for(var s,l=[],u=this.edges.length,h=0;h<u;h++)s=this.edges[h],this.isOneAncestorOfOther(s.source,s.target)&&l.push(s);for(var h=0;h<l.length;h++)this.remove(l[h]);return!1},e.exports=a}),(function(e,t,r){"use strict";var n=r(12);function i(){}o(i,"IGeometry"),i.calcSeparationAmount=function(a,s,l,u){if(!a.intersects(s))throw"assert failed";var h=new Array(2);this.decideDirectionsForOverlappingNodes(a,s,h),l[0]=Math.min(a.getRight(),s.getRight())-Math.max(a.x,s.x),l[1]=Math.min(a.getBottom(),s.getBottom())-Math.max(a.y,s.y),a.getX()<=s.getX()&&a.getRight()>=s.getRight()?l[0]+=Math.min(s.getX()-a.getX(),a.getRight()-s.getRight()):s.getX()<=a.getX()&&s.getRight()>=a.getRight()&&(l[0]+=Math.min(a.getX()-s.getX(),s.getRight()-a.getRight())),a.getY()<=s.getY()&&a.getBottom()>=s.getBottom()?l[1]+=Math.min(s.getY()-a.getY(),a.getBottom()-s.getBottom()):s.getY()<=a.getY()&&s.getBottom()>=a.getBottom()&&(l[1]+=Math.min(a.getY()-s.getY(),s.getBottom()-a.getBottom()));var d=Math.abs((s.getCenterY()-a.getCenterY())/(s.getCenterX()-a.getCenterX()));s.getCenterY()===a.getCenterY()&&s.getCenterX()===a.getCenterX()&&(d=1);var f=d*l[0],p=l[1]/d;l[0]<p?p=l[0]:f=l[1],l[0]=-1*h[0]*(p/2+u),l[1]=-1*h[1]*(f/2+u)},i.decideDirectionsForOverlappingNodes=function(a,s,l){a.getCenterX()<s.getCenterX()?l[0]=-1:l[0]=1,a.getCenterY()<s.getCenterY()?l[1]=-1:l[1]=1},i.getIntersection2=function(a,s,l){var u=a.getCenterX(),h=a.getCenterY(),d=s.getCenterX(),f=s.getCenterY();if(a.intersects(s))return l[0]=u,l[1]=h,l[2]=d,l[3]=f,!0;var p=a.getX(),m=a.getY(),g=a.getRight(),y=a.getX(),v=a.getBottom(),x=a.getRight(),b=a.getWidthHalf(),T=a.getHeightHalf(),k=s.getX(),C=s.getY(),w=s.getRight(),S=s.getX(),R=s.getBottom(),L=s.getRight(),N=s.getWidthHalf(),I=s.getHeightHalf(),_=!1,A=!1;if(u===d){if(h>f)return l[0]=u,l[1]=m,l[2]=d,l[3]=R,!1;if(h<f)return l[0]=u,l[1]=v,l[2]=d,l[3]=C,!1}else if(h===f){if(u>d)return l[0]=p,l[1]=h,l[2]=w,l[3]=f,!1;if(u<d)return l[0]=g,l[1]=h,l[2]=k,l[3]=f,!1}else{var M=a.height/a.width,D=s.height/s.width,P=(f-h)/(d-u),B=void 0,O=void 0,$=void 0,V=void 0,G=void 0,z=void 0;if(-M===P?u>d?(l[0]=y,l[1]=v,_=!0):(l[0]=g,l[1]=m,_=!0):M===P&&(u>d?(l[0]=p,l[1]=m,_=!0):(l[0]=x,l[1]=v,_=!0)),-D===P?d>u?(l[2]=S,l[3]=R,A=!0):(l[2]=w,l[3]=C,A=!0):D===P&&(d>u?(l[2]=k,l[3]=C,A=!0):(l[2]=L,l[3]=R,A=!0)),_&&A)return!1;if(u>d?h>f?(B=this.getCardinalDirection(M,P,4),O=this.getCardinalDirection(D,P,2)):(B=this.getCardinalDirection(-M,P,3),O=this.getCardinalDirection(-D,P,1)):h>f?(B=this.getCardinalDirection(-M,P,1),O=this.getCardinalDirection(-D,P,3)):(B=this.getCardinalDirection(M,P,2),O=this.getCardinalDirection(D,P,4)),!_)switch(B){case 1:V=m,$=u+-T/P,l[0]=$,l[1]=V;break;case 2:$=x,V=h+b*P,l[0]=$,l[1]=V;break;case 3:V=v,$=u+T/P,l[0]=$,l[1]=V;break;case 4:$=y,V=h+-b*P,l[0]=$,l[1]=V;break}if(!A)switch(O){case 1:z=C,G=d+-I/P,l[2]=G,l[3]=z;break;case 2:G=L,z=f+N*P,l[2]=G,l[3]=z;break;case 3:z=R,G=d+I/P,l[2]=G,l[3]=z;break;case 4:G=S,z=f+-N*P,l[2]=G,l[3]=z;break}}return!1},i.getCardinalDirection=function(a,s,l){return a>s?l:1+l%4},i.getIntersection=function(a,s,l,u){if(u==null)return this.getIntersection2(a,s,l);var h=a.x,d=a.y,f=s.x,p=s.y,m=l.x,g=l.y,y=u.x,v=u.y,x=void 0,b=void 0,T=void 0,k=void 0,C=void 0,w=void 0,S=void 0,R=void 0,L=void 0;return T=p-d,C=h-f,S=f*d-h*p,k=v-g,w=m-y,R=y*g-m*v,L=T*w-k*C,L===0?null:(x=(C*R-w*S)/L,b=(k*S-T*R)/L,new n(x,b))},i.angleOfVector=function(a,s,l,u){var h=void 0;return a!==l?(h=Math.atan((u-s)/(l-a)),l<a?h+=Math.PI:u<s&&(h+=this.TWO_PI)):u<s?h=this.ONE_AND_HALF_PI:h=this.HALF_PI,h},i.doIntersect=function(a,s,l,u){var h=a.x,d=a.y,f=s.x,p=s.y,m=l.x,g=l.y,y=u.x,v=u.y,x=(f-h)*(v-g)-(y-m)*(p-d);if(x===0)return!1;var b=((v-g)*(y-h)+(m-y)*(v-d))/x,T=((d-p)*(y-h)+(f-h)*(v-d))/x;return 0<b&&b<1&&0<T&&T<1},i.findCircleLineIntersections=function(a,s,l,u,h,d,f){var p=(l-a)*(l-a)+(u-s)*(u-s),m=2*((a-h)*(l-a)+(s-d)*(u-s)),g=(a-h)*(a-h)+(s-d)*(s-d)-f*f,y=m*m-4*p*g;if(y>=0){var v=(-m+Math.sqrt(m*m-4*p*g))/(2*p),x=(-m-Math.sqrt(m*m-4*p*g))/(2*p),b=null;return v>=0&&v<=1?[v]:x>=0&&x<=1?[x]:b}else return null},i.HALF_PI=.5*Math.PI,i.ONE_AND_HALF_PI=1.5*Math.PI,i.TWO_PI=2*Math.PI,i.THREE_PI=3*Math.PI,e.exports=i}),(function(e,t,r){"use strict";function n(){}o(n,"IMath"),n.sign=function(i){return i>0?1:i<0?-1:0},n.floor=function(i){return i<0?Math.ceil(i):Math.floor(i)},n.ceil=function(i){return i<0?Math.floor(i):Math.ceil(i)},e.exports=n}),(function(e,t,r){"use strict";function n(){}o(n,"Integer"),n.MAX_VALUE=2147483647,n.MIN_VALUE=-2147483648,e.exports=n}),(function(e,t,r){"use strict";var n=(function(){function h(d,f){for(var p=0;p<f.length;p++){var m=f[p];m.enumerable=m.enumerable||!1,m.configurable=!0,"value"in m&&(m.writable=!0),Object.defineProperty(d,m.key,m)}}return o(h,"defineProperties"),function(d,f,p){return f&&h(d.prototype,f),p&&h(d,p),d}})();function i(h,d){if(!(h instanceof d))throw new TypeError("Cannot call a class as a function")}o(i,"_classCallCheck");var a=o(function(d){return{value:d,next:null,prev:null}},"nodeFrom"),s=o(function(d,f,p,m){return d!==null?d.next=f:m.head=f,p!==null?p.prev=f:m.tail=f,f.prev=d,f.next=p,m.length++,f},"add"),l=o(function(d,f){var p=d.prev,m=d.next;return p!==null?p.next=m:f.head=m,m!==null?m.prev=p:f.tail=p,d.prev=d.next=null,f.length--,d},"_remove"),u=(function(){function h(d){var f=this;i(this,h),this.length=0,this.head=null,this.tail=null,d?.forEach(function(p){return f.push(p)})}return o(h,"LinkedList"),n(h,[{key:"size",value:o(function(){return this.length},"size")},{key:"insertBefore",value:o(function(f,p){return s(p.prev,a(f),p,this)},"insertBefore")},{key:"insertAfter",value:o(function(f,p){return s(p,a(f),p.next,this)},"insertAfter")},{key:"insertNodeBefore",value:o(function(f,p){return s(p.prev,f,p,this)},"insertNodeBefore")},{key:"insertNodeAfter",value:o(function(f,p){return s(p,f,p.next,this)},"insertNodeAfter")},{key:"push",value:o(function(f){return s(this.tail,a(f),null,this)},"push")},{key:"unshift",value:o(function(f){return s(null,a(f),this.head,this)},"unshift")},{key:"remove",value:o(function(f){return l(f,this)},"remove")},{key:"pop",value:o(function(){return l(this.tail,this).value},"pop")},{key:"popNode",value:o(function(){return l(this.tail,this)},"popNode")},{key:"shift",value:o(function(){return l(this.head,this).value},"shift")},{key:"shiftNode",value:o(function(){return l(this.head,this)},"shiftNode")},{key:"get_object_at",value:o(function(f){if(f<=this.length()){for(var p=1,m=this.head;p<f;)m=m.next,p++;return m.value}},"get_object_at")},{key:"set_object_at",value:o(function(f,p){if(f<=this.length()){for(var m=1,g=this.head;m<f;)g=g.next,m++;g.value=p}},"set_object_at")}]),h})();e.exports=u}),(function(e,t,r){"use strict";function n(i,a,s){this.x=null,this.y=null,i==null&&a==null&&s==null?(this.x=0,this.y=0):typeof i=="number"&&typeof a=="number"&&s==null?(this.x=i,this.y=a):i.constructor.name=="Point"&&a==null&&s==null&&(s=i,this.x=s.x,this.y=s.y)}o(n,"Point"),n.prototype.getX=function(){return this.x},n.prototype.getY=function(){return this.y},n.prototype.getLocation=function(){return new n(this.x,this.y)},n.prototype.setLocation=function(i,a,s){i.constructor.name=="Point"&&a==null&&s==null?(s=i,this.setLocation(s.x,s.y)):typeof i=="number"&&typeof a=="number"&&s==null&&(parseInt(i)==i&&parseInt(a)==a?this.move(i,a):(this.x=Math.floor(i+.5),this.y=Math.floor(a+.5)))},n.prototype.move=function(i,a){this.x=i,this.y=a},n.prototype.translate=function(i,a){this.x+=i,this.y+=a},n.prototype.equals=function(i){if(i.constructor.name=="Point"){var a=i;return this.x==a.x&&this.y==a.y}return this==i},n.prototype.toString=function(){return new n().constructor.name+"[x="+this.x+",y="+this.y+"]"},e.exports=n}),(function(e,t,r){"use strict";function n(i,a,s,l){this.x=0,this.y=0,this.width=0,this.height=0,i!=null&&a!=null&&s!=null&&l!=null&&(this.x=i,this.y=a,this.width=s,this.height=l)}o(n,"RectangleD"),n.prototype.getX=function(){return this.x},n.prototype.setX=function(i){this.x=i},n.prototype.getY=function(){return this.y},n.prototype.setY=function(i){this.y=i},n.prototype.getWidth=function(){return this.width},n.prototype.setWidth=function(i){this.width=i},n.prototype.getHeight=function(){return this.height},n.prototype.setHeight=function(i){this.height=i},n.prototype.getRight=function(){return this.x+this.width},n.prototype.getBottom=function(){return this.y+this.height},n.prototype.intersects=function(i){return!(this.getRight()<i.x||this.getBottom()<i.y||i.getRight()<this.x||i.getBottom()<this.y)},n.prototype.getCenterX=function(){return this.x+this.width/2},n.prototype.getMinX=function(){return this.getX()},n.prototype.getMaxX=function(){return this.getX()+this.width},n.prototype.getCenterY=function(){return this.y+this.height/2},n.prototype.getMinY=function(){return this.getY()},n.prototype.getMaxY=function(){return this.getY()+this.height},n.prototype.getWidthHalf=function(){return this.width/2},n.prototype.getHeightHalf=function(){return this.height/2},e.exports=n}),(function(e,t,r){"use strict";var n=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(a){return typeof a}:function(a){return a&&typeof Symbol=="function"&&a.constructor===Symbol&&a!==Symbol.prototype?"symbol":typeof a};function i(){}o(i,"UniqueIDGeneretor"),i.lastID=0,i.createID=function(a){return i.isPrimitive(a)?a:(a.uniqueID!=null||(a.uniqueID=i.getString(),i.lastID++),a.uniqueID)},i.getString=function(a){return a==null&&(a=i.lastID),"Object#"+a},i.isPrimitive=function(a){var s=typeof a>"u"?"undefined":n(a);return a==null||s!="object"&&s!="function"},e.exports=i}),(function(e,t,r){"use strict";function n(m){if(Array.isArray(m)){for(var g=0,y=Array(m.length);g<m.length;g++)y[g]=m[g];return y}else return Array.from(m)}o(n,"_toConsumableArray");var i=r(0),a=r(7),s=r(3),l=r(1),u=r(6),h=r(5),d=r(17),f=r(29);function p(m){f.call(this),this.layoutQuality=i.QUALITY,this.createBendsAsNeeded=i.DEFAULT_CREATE_BENDS_AS_NEEDED,this.incremental=i.DEFAULT_INCREMENTAL,this.animationOnLayout=i.DEFAULT_ANIMATION_ON_LAYOUT,this.animationDuringLayout=i.DEFAULT_ANIMATION_DURING_LAYOUT,this.animationPeriod=i.DEFAULT_ANIMATION_PERIOD,this.uniformLeafNodeSizes=i.DEFAULT_UNIFORM_LEAF_NODE_SIZES,this.edgeToDummyNodes=new Map,this.graphManager=new a(this),this.isLayoutFinished=!1,this.isSubLayout=!1,this.isRemoteUse=!1,m!=null&&(this.isRemoteUse=m)}o(p,"Layout"),p.RANDOM_SEED=1,p.prototype=Object.create(f.prototype),p.prototype.getGraphManager=function(){return this.graphManager},p.prototype.getAllNodes=function(){return this.graphManager.getAllNodes()},p.prototype.getAllEdges=function(){return this.graphManager.getAllEdges()},p.prototype.getAllNodesToApplyGravitation=function(){return this.graphManager.getAllNodesToApplyGravitation()},p.prototype.newGraphManager=function(){var m=new a(this);return this.graphManager=m,m},p.prototype.newGraph=function(m){return new u(null,this.graphManager,m)},p.prototype.newNode=function(m){return new s(this.graphManager,m)},p.prototype.newEdge=function(m){return new l(null,null,m)},p.prototype.checkLayoutSuccess=function(){return this.graphManager.getRoot()==null||this.graphManager.getRoot().getNodes().length==0||this.graphManager.includesInvalidEdge()},p.prototype.runLayout=function(){this.isLayoutFinished=!1,this.tilingPreLayout&&this.tilingPreLayout(),this.initParameters();var m;return this.checkLayoutSuccess()?m=!1:m=this.layout(),i.ANIMATE==="during"?!1:(m&&(this.isSubLayout||this.doPostLayout()),this.tilingPostLayout&&this.tilingPostLayout(),this.isLayoutFinished=!0,m)},p.prototype.doPostLayout=function(){this.incremental||this.transform(),this.update()},p.prototype.update2=function(){if(this.createBendsAsNeeded&&(this.createBendpointsFromDummyNodes(),this.graphManager.resetAllEdges()),!this.isRemoteUse){for(var m,g=this.graphManager.getAllEdges(),y=0;y<g.length;y++)m=g[y];for(var v,x=this.graphManager.getRoot().getNodes(),y=0;y<x.length;y++)v=x[y];this.update(this.graphManager.getRoot())}},p.prototype.update=function(m){if(m==null)this.update2();else if(m instanceof s){var g=m;if(g.getChild()!=null)for(var y=g.getChild().getNodes(),v=0;v<y.length;v++)update(y[v]);if(g.vGraphObject!=null){var x=g.vGraphObject;x.update(g)}}else if(m instanceof l){var b=m;if(b.vGraphObject!=null){var T=b.vGraphObject;T.update(b)}}else if(m instanceof u){var k=m;if(k.vGraphObject!=null){var C=k.vGraphObject;C.update(k)}}},p.prototype.initParameters=function(){this.isSubLayout||(this.layoutQuality=i.QUALITY,this.animationDuringLayout=i.DEFAULT_ANIMATION_DURING_LAYOUT,this.animationPeriod=i.DEFAULT_ANIMATION_PERIOD,this.animationOnLayout=i.DEFAULT_ANIMATION_ON_LAYOUT,this.incremental=i.DEFAULT_INCREMENTAL,this.createBendsAsNeeded=i.DEFAULT_CREATE_BENDS_AS_NEEDED,this.uniformLeafNodeSizes=i.DEFAULT_UNIFORM_LEAF_NODE_SIZES),this.animationDuringLayout&&(this.animationOnLayout=!1)},p.prototype.transform=function(m){if(m==null)this.transform(new h(0,0));else{var g=new d,y=this.graphManager.getRoot().updateLeftTop();if(y!=null){g.setWorldOrgX(m.x),g.setWorldOrgY(m.y),g.setDeviceOrgX(y.x),g.setDeviceOrgY(y.y);for(var v=this.getAllNodes(),x,b=0;b<v.length;b++)x=v[b],x.transform(g)}}},p.prototype.positionNodesRandomly=function(m){if(m==null)this.positionNodesRandomly(this.getGraphManager().getRoot()),this.getGraphManager().getRoot().updateBounds(!0);else for(var g,y,v=m.getNodes(),x=0;x<v.length;x++)g=v[x],y=g.getChild(),y==null||y.getNodes().length==0?g.scatter():(this.positionNodesRandomly(y),g.updateBounds())},p.prototype.getFlatForest=function(){for(var m=[],g=!0,y=this.graphManager.getRoot().getNodes(),v=!0,x=0;x<y.length;x++)y[x].getChild()!=null&&(v=!1);if(!v)return m;var b=new Set,T=[],k=new Map,C=[];for(C=C.concat(y);C.length>0&&g;){for(T.push(C[0]);T.length>0&&g;){var w=T[0];T.splice(0,1),b.add(w);for(var S=w.getEdges(),x=0;x<S.length;x++){var R=S[x].getOtherEnd(w);if(k.get(w)!=R)if(!b.has(R))T.push(R),k.set(R,w);else{g=!1;break}}}if(!g)m=[];else{var L=[].concat(n(b));m.push(L);for(var x=0;x<L.length;x++){var N=L[x],I=C.indexOf(N);I>-1&&C.splice(I,1)}b=new Set,k=new Map}}return m},p.prototype.createDummyNodesForBendpoints=function(m){for(var g=[],y=m.source,v=this.graphManager.calcLowestCommonAncestor(m.source,m.target),x=0;x<m.bendpoints.length;x++){var b=this.newNode(null);b.setRect(new Point(0,0),new Dimension(1,1)),v.add(b);var T=this.newEdge(null);this.graphManager.add(T,y,b),g.add(b),y=b}var T=this.newEdge(null);return this.graphManager.add(T,y,m.target),this.edgeToDummyNodes.set(m,g),m.isInterGraph()?this.graphManager.remove(m):v.remove(m),g},p.prototype.createBendpointsFromDummyNodes=function(){var m=[];m=m.concat(this.graphManager.getAllEdges()),m=[].concat(n(this.edgeToDummyNodes.keys())).concat(m);for(var g=0;g<m.length;g++){var y=m[g];if(y.bendpoints.length>0){for(var v=this.edgeToDummyNodes.get(y),x=0;x<v.length;x++){var b=v[x],T=new h(b.getCenterX(),b.getCenterY()),k=y.bendpoints.get(x);k.x=T.x,k.y=T.y,b.getOwner().remove(b)}this.graphManager.add(y,y.source,y.target)}}},p.transform=function(m,g,y,v){if(y!=null&&v!=null){var x=g;if(m<=50){var b=g/y;x-=(g-b)/50*(50-m)}else{var T=g*v;x+=(T-g)/50*(m-50)}return x}else{var k,C;return m<=50?(k=9*g/500,C=g/10):(k=9*g/50,C=-8*g),k*m+C}},p.findCenterOfTree=function(m){var g=[];g=g.concat(m);var y=[],v=new Map,x=!1,b=null;(g.length==1||g.length==2)&&(x=!0,b=g[0]);for(var T=0;T<g.length;T++){var k=g[T],C=k.getNeighborsList().size;v.set(k,k.getNeighborsList().size),C==1&&y.push(k)}var w=[];for(w=w.concat(y);!x;){var S=[];S=S.concat(w),w=[];for(var T=0;T<g.length;T++){var k=g[T],R=g.indexOf(k);R>=0&&g.splice(R,1);var L=k.getNeighborsList();L.forEach(function(_){if(y.indexOf(_)<0){var A=v.get(_),M=A-1;M==1&&w.push(_),v.set(_,M)}})}y=y.concat(w),(g.length==1||g.length==2)&&(x=!0,b=g[0])}return b},p.prototype.setGraphManager=function(m){this.graphManager=m},e.exports=p}),(function(e,t,r){"use strict";function n(){}o(n,"RandomSeed"),n.seed=1,n.x=0,n.nextDouble=function(){return n.x=Math.sin(n.seed++)*1e4,n.x-Math.floor(n.x)},e.exports=n}),(function(e,t,r){"use strict";var n=r(5);function i(a,s){this.lworldOrgX=0,this.lworldOrgY=0,this.ldeviceOrgX=0,this.ldeviceOrgY=0,this.lworldExtX=1,this.lworldExtY=1,this.ldeviceExtX=1,this.ldeviceExtY=1}o(i,"Transform"),i.prototype.getWorldOrgX=function(){return this.lworldOrgX},i.prototype.setWorldOrgX=function(a){this.lworldOrgX=a},i.prototype.getWorldOrgY=function(){return this.lworldOrgY},i.prototype.setWorldOrgY=function(a){this.lworldOrgY=a},i.prototype.getWorldExtX=function(){return this.lworldExtX},i.prototype.setWorldExtX=function(a){this.lworldExtX=a},i.prototype.getWorldExtY=function(){return this.lworldExtY},i.prototype.setWorldExtY=function(a){this.lworldExtY=a},i.prototype.getDeviceOrgX=function(){return this.ldeviceOrgX},i.prototype.setDeviceOrgX=function(a){this.ldeviceOrgX=a},i.prototype.getDeviceOrgY=function(){return this.ldeviceOrgY},i.prototype.setDeviceOrgY=function(a){this.ldeviceOrgY=a},i.prototype.getDeviceExtX=function(){return this.ldeviceExtX},i.prototype.setDeviceExtX=function(a){this.ldeviceExtX=a},i.prototype.getDeviceExtY=function(){return this.ldeviceExtY},i.prototype.setDeviceExtY=function(a){this.ldeviceExtY=a},i.prototype.transformX=function(a){var s=0,l=this.lworldExtX;return l!=0&&(s=this.ldeviceOrgX+(a-this.lworldOrgX)*this.ldeviceExtX/l),s},i.prototype.transformY=function(a){var s=0,l=this.lworldExtY;return l!=0&&(s=this.ldeviceOrgY+(a-this.lworldOrgY)*this.ldeviceExtY/l),s},i.prototype.inverseTransformX=function(a){var s=0,l=this.ldeviceExtX;return l!=0&&(s=this.lworldOrgX+(a-this.ldeviceOrgX)*this.lworldExtX/l),s},i.prototype.inverseTransformY=function(a){var s=0,l=this.ldeviceExtY;return l!=0&&(s=this.lworldOrgY+(a-this.ldeviceOrgY)*this.lworldExtY/l),s},i.prototype.inverseTransformPoint=function(a){var s=new n(this.inverseTransformX(a.x),this.inverseTransformY(a.y));return s},e.exports=i}),(function(e,t,r){"use strict";function n(f){if(Array.isArray(f)){for(var p=0,m=Array(f.length);p<f.length;p++)m[p]=f[p];return m}else return Array.from(f)}o(n,"_toConsumableArray");var i=r(15),a=r(4),s=r(0),l=r(8),u=r(9);function h(){i.call(this),this.useSmartIdealEdgeLengthCalculation=a.DEFAULT_USE_SMART_IDEAL_EDGE_LENGTH_CALCULATION,this.gravityConstant=a.DEFAULT_GRAVITY_STRENGTH,this.compoundGravityConstant=a.DEFAULT_COMPOUND_GRAVITY_STRENGTH,this.gravityRangeFactor=a.DEFAULT_GRAVITY_RANGE_FACTOR,this.compoundGravityRangeFactor=a.DEFAULT_COMPOUND_GRAVITY_RANGE_FACTOR,this.displacementThresholdPerNode=3*a.DEFAULT_EDGE_LENGTH/100,this.coolingFactor=a.DEFAULT_COOLING_FACTOR_INCREMENTAL,this.initialCoolingFactor=a.DEFAULT_COOLING_FACTOR_INCREMENTAL,this.totalDisplacement=0,this.oldTotalDisplacement=0,this.maxIterations=a.MAX_ITERATIONS}o(h,"FDLayout"),h.prototype=Object.create(i.prototype);for(var d in i)h[d]=i[d];h.prototype.initParameters=function(){i.prototype.initParameters.call(this,arguments),this.totalIterations=0,this.notAnimatedIterations=0,this.useFRGridVariant=a.DEFAULT_USE_SMART_REPULSION_RANGE_CALCULATION,this.grid=[]},h.prototype.calcIdealEdgeLengths=function(){for(var f,p,m,g,y,v,x,b=this.getGraphManager().getAllEdges(),T=0;T<b.length;T++)f=b[T],p=f.idealLength,f.isInterGraph&&(g=f.getSource(),y=f.getTarget(),v=f.getSourceInLca().getEstimatedSize(),x=f.getTargetInLca().getEstimatedSize(),this.useSmartIdealEdgeLengthCalculation&&(f.idealLength+=v+x-2*s.SIMPLE_NODE_SIZE),m=f.getLca().getInclusionTreeDepth(),f.idealLength+=p*a.PER_LEVEL_IDEAL_EDGE_LENGTH_FACTOR*(g.getInclusionTreeDepth()+y.getInclusionTreeDepth()-2*m))},h.prototype.initSpringEmbedder=function(){var f=this.getAllNodes().length;this.incremental?(f>a.ADAPTATION_LOWER_NODE_LIMIT&&(this.coolingFactor=Math.max(this.coolingFactor*a.COOLING_ADAPTATION_FACTOR,this.coolingFactor-(f-a.ADAPTATION_LOWER_NODE_LIMIT)/(a.ADAPTATION_UPPER_NODE_LIMIT-a.ADAPTATION_LOWER_NODE_LIMIT)*this.coolingFactor*(1-a.COOLING_ADAPTATION_FACTOR))),this.maxNodeDisplacement=a.MAX_NODE_DISPLACEMENT_INCREMENTAL):(f>a.ADAPTATION_LOWER_NODE_LIMIT?this.coolingFactor=Math.max(a.COOLING_ADAPTATION_FACTOR,1-(f-a.ADAPTATION_LOWER_NODE_LIMIT)/(a.ADAPTATION_UPPER_NODE_LIMIT-a.ADAPTATION_LOWER_NODE_LIMIT)*(1-a.COOLING_ADAPTATION_FACTOR)):this.coolingFactor=1,this.initialCoolingFactor=this.coolingFactor,this.maxNodeDisplacement=a.MAX_NODE_DISPLACEMENT),this.maxIterations=Math.max(this.getAllNodes().length*5,this.maxIterations),this.displacementThresholdPerNode=3*a.DEFAULT_EDGE_LENGTH/100,this.totalDisplacementThreshold=this.displacementThresholdPerNode*this.getAllNodes().length,this.repulsionRange=this.calcRepulsionRange()},h.prototype.calcSpringForces=function(){for(var f=this.getAllEdges(),p,m=0;m<f.length;m++)p=f[m],this.calcSpringForce(p,p.idealLength)},h.prototype.calcRepulsionForces=function(){var f=arguments.length>0&&arguments[0]!==void 0?arguments[0]:!0,p=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1,m,g,y,v,x=this.getAllNodes(),b;if(this.useFRGridVariant)for(this.totalIterations%a.GRID_CALCULATION_CHECK_PERIOD==1&&f&&this.updateGrid(),b=new Set,m=0;m<x.length;m++)y=x[m],this.calculateRepulsionForceOfANode(y,b,f,p),b.add(y);else for(m=0;m<x.length;m++)for(y=x[m],g=m+1;g<x.length;g++)v=x[g],y.getOwner()==v.getOwner()&&this.calcRepulsionForce(y,v)},h.prototype.calcGravitationalForces=function(){for(var f,p=this.getAllNodesToApplyGravitation(),m=0;m<p.length;m++)f=p[m],this.calcGravitationalForce(f)},h.prototype.moveNodes=function(){for(var f=this.getAllNodes(),p,m=0;m<f.length;m++)p=f[m],p.move()},h.prototype.calcSpringForce=function(f,p){var m=f.getSource(),g=f.getTarget(),y,v,x,b;if(this.uniformLeafNodeSizes&&m.getChild()==null&&g.getChild()==null)f.updateLengthSimple();else if(f.updateLength(),f.isOverlapingSourceAndTarget)return;y=f.getLength(),y!=0&&(v=f.edgeElasticity*(y-p),x=v*(f.lengthX/y),b=v*(f.lengthY/y),m.springForceX+=x,m.springForceY+=b,g.springForceX-=x,g.springForceY-=b)},h.prototype.calcRepulsionForce=function(f,p){var m=f.getRect(),g=p.getRect(),y=new Array(2),v=new Array(4),x,b,T,k,C,w,S;if(m.intersects(g)){l.calcSeparationAmount(m,g,y,a.DEFAULT_EDGE_LENGTH/2),w=2*y[0],S=2*y[1];var R=f.noOfChildren*p.noOfChildren/(f.noOfChildren+p.noOfChildren);f.repulsionForceX-=R*w,f.repulsionForceY-=R*S,p.repulsionForceX+=R*w,p.repulsionForceY+=R*S}else this.uniformLeafNodeSizes&&f.getChild()==null&&p.getChild()==null?(x=g.getCenterX()-m.getCenterX(),b=g.getCenterY()-m.getCenterY()):(l.getIntersection(m,g,v),x=v[2]-v[0],b=v[3]-v[1]),Math.abs(x)<a.MIN_REPULSION_DIST&&(x=u.sign(x)*a.MIN_REPULSION_DIST),Math.abs(b)<a.MIN_REPULSION_DIST&&(b=u.sign(b)*a.MIN_REPULSION_DIST),T=x*x+b*b,k=Math.sqrt(T),C=(f.nodeRepulsion/2+p.nodeRepulsion/2)*f.noOfChildren*p.noOfChildren/T,w=C*x/k,S=C*b/k,f.repulsionForceX-=w,f.repulsionForceY-=S,p.repulsionForceX+=w,p.repulsionForceY+=S},h.prototype.calcGravitationalForce=function(f){var p,m,g,y,v,x,b,T;p=f.getOwner(),m=(p.getRight()+p.getLeft())/2,g=(p.getTop()+p.getBottom())/2,y=f.getCenterX()-m,v=f.getCenterY()-g,x=Math.abs(y)+f.getWidth()/2,b=Math.abs(v)+f.getHeight()/2,f.getOwner()==this.graphManager.getRoot()?(T=p.getEstimatedSize()*this.gravityRangeFactor,(x>T||b>T)&&(f.gravitationForceX=-this.gravityConstant*y,f.gravitationForceY=-this.gravityConstant*v)):(T=p.getEstimatedSize()*this.compoundGravityRangeFactor,(x>T||b>T)&&(f.gravitationForceX=-this.gravityConstant*y*this.compoundGravityConstant,f.gravitationForceY=-this.gravityConstant*v*this.compoundGravityConstant))},h.prototype.isConverged=function(){var f,p=!1;return this.totalIterations>this.maxIterations/3&&(p=Math.abs(this.totalDisplacement-this.oldTotalDisplacement)<2),f=this.totalDisplacement<this.totalDisplacementThreshold,this.oldTotalDisplacement=this.totalDisplacement,f||p},h.prototype.animate=function(){this.animationDuringLayout&&!this.isSubLayout&&(this.notAnimatedIterations==this.animationPeriod?(this.update(),this.notAnimatedIterations=0):this.notAnimatedIterations++)},h.prototype.calcNoOfChildrenForAllNodes=function(){for(var f,p=this.graphManager.getAllNodes(),m=0;m<p.length;m++)f=p[m],f.noOfChildren=f.getNoOfChildren()},h.prototype.calcGrid=function(f){var p=0,m=0;p=parseInt(Math.ceil((f.getRight()-f.getLeft())/this.repulsionRange)),m=parseInt(Math.ceil((f.getBottom()-f.getTop())/this.repulsionRange));for(var g=new Array(p),y=0;y<p;y++)g[y]=new Array(m);for(var y=0;y<p;y++)for(var v=0;v<m;v++)g[y][v]=new Array;return g},h.prototype.addNodeToGrid=function(f,p,m){var g=0,y=0,v=0,x=0;g=parseInt(Math.floor((f.getRect().x-p)/this.repulsionRange)),y=parseInt(Math.floor((f.getRect().width+f.getRect().x-p)/this.repulsionRange)),v=parseInt(Math.floor((f.getRect().y-m)/this.repulsionRange)),x=parseInt(Math.floor((f.getRect().height+f.getRect().y-m)/this.repulsionRange));for(var b=g;b<=y;b++)for(var T=v;T<=x;T++)this.grid[b][T].push(f),f.setGridCoordinates(g,y,v,x)},h.prototype.updateGrid=function(){var f,p,m=this.getAllNodes();for(this.grid=this.calcGrid(this.graphManager.getRoot()),f=0;f<m.length;f++)p=m[f],this.addNodeToGrid(p,this.graphManager.getRoot().getLeft(),this.graphManager.getRoot().getTop())},h.prototype.calculateRepulsionForceOfANode=function(f,p,m,g){if(this.totalIterations%a.GRID_CALCULATION_CHECK_PERIOD==1&&m||g){var y=new Set;f.surrounding=new Array;for(var v,x=this.grid,b=f.startX-1;b<f.finishX+2;b++)for(var T=f.startY-1;T<f.finishY+2;T++)if(!(b<0||T<0||b>=x.length||T>=x[0].length)){for(var k=0;k<x[b][T].length;k++)if(v=x[b][T][k],!(f.getOwner()!=v.getOwner()||f==v)&&!p.has(v)&&!y.has(v)){var C=Math.abs(f.getCenterX()-v.getCenterX())-(f.getWidth()/2+v.getWidth()/2),w=Math.abs(f.getCenterY()-v.getCenterY())-(f.getHeight()/2+v.getHeight()/2);C<=this.repulsionRange&&w<=this.repulsionRange&&y.add(v)}}f.surrounding=[].concat(n(y))}for(b=0;b<f.surrounding.length;b++)this.calcRepulsionForce(f,f.surrounding[b])},h.prototype.calcRepulsionRange=function(){return 0},e.exports=h}),(function(e,t,r){"use strict";var n=r(1),i=r(4);function a(l,u,h){n.call(this,l,u,h),this.idealLength=i.DEFAULT_EDGE_LENGTH,this.edgeElasticity=i.DEFAULT_SPRING_STRENGTH}o(a,"FDLayoutEdge"),a.prototype=Object.create(n.prototype);for(var s in n)a[s]=n[s];e.exports=a}),(function(e,t,r){"use strict";var n=r(3),i=r(4);function a(l,u,h,d){n.call(this,l,u,h,d),this.nodeRepulsion=i.DEFAULT_REPULSION_STRENGTH,this.springForceX=0,this.springForceY=0,this.repulsionForceX=0,this.repulsionForceY=0,this.gravitationForceX=0,this.gravitationForceY=0,this.displacementX=0,this.displacementY=0,this.startX=0,this.finishX=0,this.startY=0,this.finishY=0,this.surrounding=[]}o(a,"FDLayoutNode"),a.prototype=Object.create(n.prototype);for(var s in n)a[s]=n[s];a.prototype.setGridCoordinates=function(l,u,h,d){this.startX=l,this.finishX=u,this.startY=h,this.finishY=d},e.exports=a}),(function(e,t,r){"use strict";function n(i,a){this.width=0,this.height=0,i!==null&&a!==null&&(this.height=a,this.width=i)}o(n,"DimensionD"),n.prototype.getWidth=function(){return this.width},n.prototype.setWidth=function(i){this.width=i},n.prototype.getHeight=function(){return this.height},n.prototype.setHeight=function(i){this.height=i},e.exports=n}),(function(e,t,r){"use strict";var n=r(14);function i(){this.map={},this.keys=[]}o(i,"HashMap"),i.prototype.put=function(a,s){var l=n.createID(a);this.contains(l)||(this.map[l]=s,this.keys.push(a))},i.prototype.contains=function(a){var s=n.createID(a);return this.map[a]!=null},i.prototype.get=function(a){var s=n.createID(a);return this.map[s]},i.prototype.keySet=function(){return this.keys},e.exports=i}),(function(e,t,r){"use strict";var n=r(14);function i(){this.set={}}o(i,"HashSet"),i.prototype.add=function(a){var s=n.createID(a);this.contains(s)||(this.set[s]=a)},i.prototype.remove=function(a){delete this.set[n.createID(a)]},i.prototype.clear=function(){this.set={}},i.prototype.contains=function(a){return this.set[n.createID(a)]==a},i.prototype.isEmpty=function(){return this.size()===0},i.prototype.size=function(){return Object.keys(this.set).length},i.prototype.addAllTo=function(a){for(var s=Object.keys(this.set),l=s.length,u=0;u<l;u++)a.push(this.set[s[u]])},i.prototype.size=function(){return Object.keys(this.set).length},i.prototype.addAll=function(a){for(var s=a.length,l=0;l<s;l++){var u=a[l];this.add(u)}},e.exports=i}),(function(e,t,r){"use strict";function n(){}o(n,"Matrix"),n.multMat=function(i,a){for(var s=[],l=0;l<i.length;l++){s[l]=[];for(var u=0;u<a[0].length;u++){s[l][u]=0;for(var h=0;h<i[0].length;h++)s[l][u]+=i[l][h]*a[h][u]}}return s},n.transpose=function(i){for(var a=[],s=0;s<i[0].length;s++){a[s]=[];for(var l=0;l<i.length;l++)a[s][l]=i[l][s]}return a},n.multCons=function(i,a){for(var s=[],l=0;l<i.length;l++)s[l]=i[l]*a;return s},n.minusOp=function(i,a){for(var s=[],l=0;l<i.length;l++)s[l]=i[l]-a[l];return s},n.dotProduct=function(i,a){for(var s=0,l=0;l<i.length;l++)s+=i[l]*a[l];return s},n.mag=function(i){return Math.sqrt(this.dotProduct(i,i))},n.normalize=function(i){for(var a=[],s=this.mag(i),l=0;l<i.length;l++)a[l]=i[l]/s;return a},n.multGamma=function(i){for(var a=[],s=0,l=0;l<i.length;l++)s+=i[l];s*=-1/i.length;for(var u=0;u<i.length;u++)a[u]=s+i[u];return a},n.multL=function(i,a,s){for(var l=[],u=[],h=[],d=0;d<a[0].length;d++){for(var f=0,p=0;p<a.length;p++)f+=-.5*a[p][d]*i[p];u[d]=f}for(var m=0;m<s.length;m++){for(var g=0,y=0;y<s.length;y++)g+=s[m][y]*u[y];h[m]=g}for(var v=0;v<a.length;v++){for(var x=0,b=0;b<a[0].length;b++)x+=a[v][b]*h[b];l[v]=x}return l},e.exports=n}),(function(e,t,r){"use strict";var n=(function(){function l(u,h){for(var d=0;d<h.length;d++){var f=h[d];f.enumerable=f.enumerable||!1,f.configurable=!0,"value"in f&&(f.writable=!0),Object.defineProperty(u,f.key,f)}}return o(l,"defineProperties"),function(u,h,d){return h&&l(u.prototype,h),d&&l(u,d),u}})();function i(l,u){if(!(l instanceof u))throw new TypeError("Cannot call a class as a function")}o(i,"_classCallCheck");var a=r(11),s=(function(){function l(u,h){i(this,l),(h!==null||h!==void 0)&&(this.compareFunction=this._defaultCompareFunction);var d=void 0;u instanceof a?d=u.size():d=u.length,this._quicksort(u,0,d-1)}return o(l,"Quicksort"),n(l,[{key:"_quicksort",value:o(function(h,d,f){if(d<f){var p=this._partition(h,d,f);this._quicksort(h,d,p),this._quicksort(h,p+1,f)}},"_quicksort")},{key:"_partition",value:o(function(h,d,f){for(var p=this._get(h,d),m=d,g=f;;){for(;this.compareFunction(p,this._get(h,g));)g--;for(;this.compareFunction(this._get(h,m),p);)m++;if(m<g)this._swap(h,m,g),m++,g--;else return g}},"_partition")},{key:"_get",value:o(function(h,d){return h instanceof a?h.get_object_at(d):h[d]},"_get")},{key:"_set",value:o(function(h,d,f){h instanceof a?h.set_object_at(d,f):h[d]=f},"_set")},{key:"_swap",value:o(function(h,d,f){var p=this._get(h,d);this._set(h,d,this._get(h,f)),this._set(h,f,p)},"_swap")},{key:"_defaultCompareFunction",value:o(function(h,d){return d>h},"_defaultCompareFunction")}]),l})();e.exports=s}),(function(e,t,r){"use strict";function n(){}o(n,"SVD"),n.svd=function(i){this.U=null,this.V=null,this.s=null,this.m=0,this.n=0,this.m=i.length,this.n=i[0].length;var a=Math.min(this.m,this.n);this.s=(function(At){for(var bt=[];At-- >0;)bt.push(0);return bt})(Math.min(this.m+1,this.n)),this.U=(function(At){var bt=o(function me(lt){if(lt.length==0)return 0;for(var gt=[],Ze=0;Ze<lt[0];Ze++)gt.push(me(lt.slice(1)));return gt},"allocate");return bt(At)})([this.m,a]),this.V=(function(At){var bt=o(function me(lt){if(lt.length==0)return 0;for(var gt=[],Ze=0;Ze<lt[0];Ze++)gt.push(me(lt.slice(1)));return gt},"allocate");return bt(At)})([this.n,this.n]);for(var s=(function(At){for(var bt=[];At-- >0;)bt.push(0);return bt})(this.n),l=(function(At){for(var bt=[];At-- >0;)bt.push(0);return bt})(this.m),u=!0,h=!0,d=Math.min(this.m-1,this.n),f=Math.max(0,Math.min(this.n-2,this.m)),p=0;p<Math.max(d,f);p++){if(p<d){this.s[p]=0;for(var m=p;m<this.m;m++)this.s[p]=n.hypot(this.s[p],i[m][p]);if(this.s[p]!==0){i[p][p]<0&&(this.s[p]=-this.s[p]);for(var g=p;g<this.m;g++)i[g][p]/=this.s[p];i[p][p]+=1}this.s[p]=-this.s[p]}for(var y=p+1;y<this.n;y++){if((function(At,bt){return At&&bt})(p<d,this.s[p]!==0)){for(var v=0,x=p;x<this.m;x++)v+=i[x][p]*i[x][y];v=-v/i[p][p];for(var b=p;b<this.m;b++)i[b][y]+=v*i[b][p]}s[y]=i[p][y]}if((function(At,bt){return At&&bt})(u,p<d))for(var T=p;T<this.m;T++)this.U[T][p]=i[T][p];if(p<f){s[p]=0;for(var k=p+1;k<this.n;k++)s[p]=n.hypot(s[p],s[k]);if(s[p]!==0){s[p+1]<0&&(s[p]=-s[p]);for(var C=p+1;C<this.n;C++)s[C]/=s[p];s[p+1]+=1}if(s[p]=-s[p],(function(At,bt){return At&&bt})(p+1<this.m,s[p]!==0)){for(var w=p+1;w<this.m;w++)l[w]=0;for(var S=p+1;S<this.n;S++)for(var R=p+1;R<this.m;R++)l[R]+=s[S]*i[R][S];for(var L=p+1;L<this.n;L++)for(var N=-s[L]/s[p+1],I=p+1;I<this.m;I++)i[I][L]+=N*l[I]}if(h)for(var _=p+1;_<this.n;_++)this.V[_][p]=s[_]}}var A=Math.min(this.n,this.m+1);if(d<this.n&&(this.s[d]=i[d][d]),this.m<A&&(this.s[A-1]=0),f+1<A&&(s[f]=i[f][A-1]),s[A-1]=0,u){for(var M=d;M<a;M++){for(var D=0;D<this.m;D++)this.U[D][M]=0;this.U[M][M]=1}for(var P=d-1;P>=0;P--)if(this.s[P]!==0){for(var B=P+1;B<a;B++){for(var O=0,$=P;$<this.m;$++)O+=this.U[$][P]*this.U[$][B];O=-O/this.U[P][P];for(var V=P;V<this.m;V++)this.U[V][B]+=O*this.U[V][P]}for(var G=P;G<this.m;G++)this.U[G][P]=-this.U[G][P];this.U[P][P]=1+this.U[P][P];for(var z=0;z<P-1;z++)this.U[z][P]=0}else{for(var W=0;W<this.m;W++)this.U[W][P]=0;this.U[P][P]=1}}if(h)for(var H=this.n-1;H>=0;H--){if((function(At,bt){return At&&bt})(H<f,s[H]!==0))for(var j=H+1;j<a;j++){for(var Q=0,U=H+1;U<this.n;U++)Q+=this.V[U][H]*this.V[U][j];Q=-Q/this.V[H+1][H];for(var oe=H+1;oe<this.n;oe++)this.V[oe][j]+=Q*this.V[oe][H]}for(var te=0;te<this.n;te++)this.V[te][H]=0;this.V[H][H]=1}for(var le=A-1,ie=0,ae=Math.pow(2,-52),Re=Math.pow(2,-966);A>0;){var be=void 0,Pe=void 0;for(be=A-2;be>=-1&&be!==-1;be--)if(Math.abs(s[be])<=Re+ae*(Math.abs(this.s[be])+Math.abs(this.s[be+1]))){s[be]=0;break}if(be===A-2)Pe=4;else{var Ge=void 0;for(Ge=A-1;Ge>=be&&Ge!==be;Ge--){var Oe=(Ge!==A?Math.abs(s[Ge]):0)+(Ge!==be+1?Math.abs(s[Ge-1]):0);if(Math.abs(this.s[Ge])<=Re+ae*Oe){this.s[Ge]=0;break}}Ge===be?Pe=3:Ge===A-1?Pe=1:(Pe=2,be=Ge)}switch(be++,Pe){case 1:{var ue=s[A-2];s[A-2]=0;for(var ye=A-2;ye>=be;ye--){var ke=n.hypot(this.s[ye],ue),ce=this.s[ye]/ke,re=ue/ke;if(this.s[ye]=ke,ye!==be&&(ue=-re*s[ye-1],s[ye-1]=ce*s[ye-1]),h)for(var J=0;J<this.n;J++)ke=ce*this.V[J][ye]+re*this.V[J][A-1],this.V[J][A-1]=-re*this.V[J][ye]+ce*this.V[J][A-1],this.V[J][ye]=ke}}break;case 2:{var se=s[be-1];s[be-1]=0;for(var ge=be;ge<A;ge++){var Te=n.hypot(this.s[ge],se),we=this.s[ge]/Te,Me=se/Te;if(this.s[ge]=Te,se=-Me*s[ge],s[ge]=we*s[ge],u)for(var ve=0;ve<this.m;ve++)Te=we*this.U[ve][ge]+Me*this.U[ve][be-1],this.U[ve][be-1]=-Me*this.U[ve][ge]+we*this.U[ve][be-1],this.U[ve][ge]=Te}}break;case 3:{var ne=Math.max(Math.max(Math.max(Math.max(Math.abs(this.s[A-1]),Math.abs(this.s[A-2])),Math.abs(s[A-2])),Math.abs(this.s[be])),Math.abs(s[be])),q=this.s[A-1]/ne,he=this.s[A-2]/ne,X=s[A-2]/ne,fe=this.s[be]/ne,K=s[be]/ne,qe=((he+q)*(he-q)+X*X)/2,_e=q*X*(q*X),Be=0;(function(At,bt){return At||bt})(qe!==0,_e!==0)&&(Be=Math.sqrt(qe*qe+_e),qe<0&&(Be=-Be),Be=_e/(qe+Be));for(var Ne=(fe+q)*(fe-q)+Be,He=fe*K,$e=be;$e<A-1;$e++){var Xe=n.hypot(Ne,He),Fe=Ne/Xe,Ke=He/Xe;if($e!==be&&(s[$e-1]=Xe),Ne=Fe*this.s[$e]+Ke*s[$e],s[$e]=Fe*s[$e]-Ke*this.s[$e],He=Ke*this.s[$e+1],this.s[$e+1]=Fe*this.s[$e+1],h)for(var xe=0;xe<this.n;xe++)Xe=Fe*this.V[xe][$e]+Ke*this.V[xe][$e+1],this.V[xe][$e+1]=-Ke*this.V[xe][$e]+Fe*this.V[xe][$e+1],this.V[xe][$e]=Xe;if(Xe=n.hypot(Ne,He),Fe=Ne/Xe,Ke=He/Xe,this.s[$e]=Xe,Ne=Fe*s[$e]+Ke*this.s[$e+1],this.s[$e+1]=-Ke*s[$e]+Fe*this.s[$e+1],He=Ke*s[$e+1],s[$e+1]=Fe*s[$e+1],u&&$e<this.m-1)for(var mt=0;mt<this.m;mt++)Xe=Fe*this.U[mt][$e]+Ke*this.U[mt][$e+1],this.U[mt][$e+1]=-Ke*this.U[mt][$e]+Fe*this.U[mt][$e+1],this.U[mt][$e]=Xe}s[A-2]=Ne,ie=ie+1}break;case 4:{if(this.s[be]<=0&&(this.s[be]=this.s[be]<0?-this.s[be]:0,h))for(var Le=0;Le<=le;Le++)this.V[Le][be]=-this.V[Le][be];for(;be<le&&!(this.s[be]>=this.s[be+1]);){var ft=this.s[be];if(this.s[be]=this.s[be+1],this.s[be+1]=ft,h&&be<this.n-1)for(var wt=0;wt<this.n;wt++)ft=this.V[wt][be+1],this.V[wt][be+1]=this.V[wt][be],this.V[wt][be]=ft;if(u&&be<this.m-1)for(var zt=0;zt<this.m;zt++)ft=this.U[zt][be+1],this.U[zt][be+1]=this.U[zt][be],this.U[zt][be]=ft;be++}ie=0,A--}break}}var St={U:this.U,V:this.V,S:this.s};return St},n.hypot=function(i,a){var s=void 0;return Math.abs(i)>Math.abs(a)?(s=a/i,s=Math.abs(i)*Math.sqrt(1+s*s)):a!=0?(s=i/a,s=Math.abs(a)*Math.sqrt(1+s*s)):s=0,s},e.exports=n}),(function(e,t,r){"use strict";var n=(function(){function s(l,u){for(var h=0;h<u.length;h++){var d=u[h];d.enumerable=d.enumerable||!1,d.configurable=!0,"value"in d&&(d.writable=!0),Object.defineProperty(l,d.key,d)}}return o(s,"defineProperties"),function(l,u,h){return u&&s(l.prototype,u),h&&s(l,h),l}})();function i(s,l){if(!(s instanceof l))throw new TypeError("Cannot call a class as a function")}o(i,"_classCallCheck");var a=(function(){function s(l,u){var h=arguments.length>2&&arguments[2]!==void 0?arguments[2]:1,d=arguments.length>3&&arguments[3]!==void 0?arguments[3]:-1,f=arguments.length>4&&arguments[4]!==void 0?arguments[4]:-1;i(this,s),this.sequence1=l,this.sequence2=u,this.match_score=h,this.mismatch_penalty=d,this.gap_penalty=f,this.iMax=l.length+1,this.jMax=u.length+1,this.grid=new Array(this.iMax);for(var p=0;p<this.iMax;p++){this.grid[p]=new Array(this.jMax);for(var m=0;m<this.jMax;m++)this.grid[p][m]=0}this.tracebackGrid=new Array(this.iMax);for(var g=0;g<this.iMax;g++){this.tracebackGrid[g]=new Array(this.jMax);for(var y=0;y<this.jMax;y++)this.tracebackGrid[g][y]=[null,null,null]}this.alignments=[],this.score=-1,this.computeGrids()}return o(s,"NeedlemanWunsch"),n(s,[{key:"getScore",value:o(function(){return this.score},"getScore")},{key:"getAlignments",value:o(function(){return this.alignments},"getAlignments")},{key:"computeGrids",value:o(function(){for(var u=1;u<this.jMax;u++)this.grid[0][u]=this.grid[0][u-1]+this.gap_penalty,this.tracebackGrid[0][u]=[!1,!1,!0];for(var h=1;h<this.iMax;h++)this.grid[h][0]=this.grid[h-1][0]+this.gap_penalty,this.tracebackGrid[h][0]=[!1,!0,!1];for(var d=1;d<this.iMax;d++)for(var f=1;f<this.jMax;f++){var p=void 0;this.sequence1[d-1]===this.sequence2[f-1]?p=this.grid[d-1][f-1]+this.match_score:p=this.grid[d-1][f-1]+this.mismatch_penalty;var m=this.grid[d-1][f]+this.gap_penalty,g=this.grid[d][f-1]+this.gap_penalty,y=[p,m,g],v=this.arrayAllMaxIndexes(y);this.grid[d][f]=y[v[0]],this.tracebackGrid[d][f]=[v.includes(0),v.includes(1),v.includes(2)]}this.score=this.grid[this.iMax-1][this.jMax-1]},"computeGrids")},{key:"alignmentTraceback",value:o(function(){var u=[];for(u.push({pos:[this.sequence1.length,this.sequence2.length],seq1:"",seq2:""});u[0];){var h=u[0],d=this.tracebackGrid[h.pos[0]][h.pos[1]];d[0]&&u.push({pos:[h.pos[0]-1,h.pos[1]-1],seq1:this.sequence1[h.pos[0]-1]+h.seq1,seq2:this.sequence2[h.pos[1]-1]+h.seq2}),d[1]&&u.push({pos:[h.pos[0]-1,h.pos[1]],seq1:this.sequence1[h.pos[0]-1]+h.seq1,seq2:"-"+h.seq2}),d[2]&&u.push({pos:[h.pos[0],h.pos[1]-1],seq1:"-"+h.seq1,seq2:this.sequence2[h.pos[1]-1]+h.seq2}),h.pos[0]===0&&h.pos[1]===0&&this.alignments.push({sequence1:h.seq1,sequence2:h.seq2}),u.shift()}return this.alignments},"alignmentTraceback")},{key:"getAllIndexes",value:o(function(u,h){for(var d=[],f=-1;(f=u.indexOf(h,f+1))!==-1;)d.push(f);return d},"getAllIndexes")},{key:"arrayAllMaxIndexes",value:o(function(u){return this.getAllIndexes(u,Math.max.apply(null,u))},"arrayAllMaxIndexes")}]),s})();e.exports=a}),(function(e,t,r){"use strict";var n=o(function(){},"layoutBase");n.FDLayout=r(18),n.FDLayoutConstants=r(4),n.FDLayoutEdge=r(19),n.FDLayoutNode=r(20),n.DimensionD=r(21),n.HashMap=r(22),n.HashSet=r(23),n.IGeometry=r(8),n.IMath=r(9),n.Integer=r(10),n.Point=r(12),n.PointD=r(5),n.RandomSeed=r(16),n.RectangleD=r(13),n.Transform=r(17),n.UniqueIDGeneretor=r(14),n.Quicksort=r(25),n.LinkedList=r(11),n.LGraphObject=r(2),n.LGraph=r(6),n.LEdge=r(1),n.LGraphManager=r(7),n.LNode=r(3),n.Layout=r(15),n.LayoutConstants=r(0),n.NeedlemanWunsch=r(27),n.Matrix=r(24),n.SVD=r(26),e.exports=n}),(function(e,t,r){"use strict";function n(){this.listeners=[]}o(n,"Emitter");var i=n.prototype;i.addListener=function(a,s){this.listeners.push({event:a,callback:s})},i.removeListener=function(a,s){for(var l=this.listeners.length;l>=0;l--){var u=this.listeners[l];u.event===a&&u.callback===s&&this.listeners.splice(l,1)}},i.emit=function(a,s){for(var l=0;l<this.listeners.length;l++){var u=this.listeners[l];a===u.event&&u.callback(s)}},e.exports=n})])})});var Uj=Io((rk,Hj)=>{"use strict";o((function(t,r){typeof rk=="object"&&typeof Hj=="object"?Hj.exports=r(qj()):typeof define=="function"&&define.amd?define(["layout-base"],r):typeof rk=="object"?rk.coseBase=r(qj()):t.coseBase=r(t.layoutBase)}),"webpackUniversalModuleDefinition")(rk,function(e){return(()=>{"use strict";var t={45:((a,s,l)=>{var u={};u.layoutBase=l(551),u.CoSEConstants=l(806),u.CoSEEdge=l(767),u.CoSEGraph=l(880),u.CoSEGraphManager=l(578),u.CoSELayout=l(765),u.CoSENode=l(991),u.ConstraintHandler=l(902),a.exports=u}),806:((a,s,l)=>{var u=l(551).FDLayoutConstants;function h(){}o(h,"CoSEConstants");for(var d in u)h[d]=u[d];h.DEFAULT_USE_MULTI_LEVEL_SCALING=!1,h.DEFAULT_RADIAL_SEPARATION=u.DEFAULT_EDGE_LENGTH,h.DEFAULT_COMPONENT_SEPERATION=60,h.TILE=!0,h.TILING_PADDING_VERTICAL=10,h.TILING_PADDING_HORIZONTAL=10,h.TRANSFORM_ON_CONSTRAINT_HANDLING=!0,h.ENFORCE_CONSTRAINTS=!0,h.APPLY_LAYOUT=!0,h.RELAX_MOVEMENT_ON_CONSTRAINTS=!0,h.TREE_REDUCTION_ON_INCREMENTAL=!0,h.PURE_INCREMENTAL=h.DEFAULT_INCREMENTAL,a.exports=h}),767:((a,s,l)=>{var u=l(551).FDLayoutEdge;function h(f,p,m){u.call(this,f,p,m)}o(h,"CoSEEdge"),h.prototype=Object.create(u.prototype);for(var d in u)h[d]=u[d];a.exports=h}),880:((a,s,l)=>{var u=l(551).LGraph;function h(f,p,m){u.call(this,f,p,m)}o(h,"CoSEGraph"),h.prototype=Object.create(u.prototype);for(var d in u)h[d]=u[d];a.exports=h}),578:((a,s,l)=>{var u=l(551).LGraphManager;function h(f){u.call(this,f)}o(h,"CoSEGraphManager"),h.prototype=Object.create(u.prototype);for(var d in u)h[d]=u[d];a.exports=h}),765:((a,s,l)=>{var u=l(551).FDLayout,h=l(578),d=l(880),f=l(991),p=l(767),m=l(806),g=l(902),y=l(551).FDLayoutConstants,v=l(551).LayoutConstants,x=l(551).Point,b=l(551).PointD,T=l(551).DimensionD,k=l(551).Layout,C=l(551).Integer,w=l(551).IGeometry,S=l(551).LGraph,R=l(551).Transform,L=l(551).LinkedList;function N(){u.call(this),this.toBeTiled={},this.constraints={}}o(N,"CoSELayout"),N.prototype=Object.create(u.prototype);for(var I in u)N[I]=u[I];N.prototype.newGraphManager=function(){var _=new h(this);return this.graphManager=_,_},N.prototype.newGraph=function(_){return new d(null,this.graphManager,_)},N.prototype.newNode=function(_){return new f(this.graphManager,_)},N.prototype.newEdge=function(_){return new p(null,null,_)},N.prototype.initParameters=function(){u.prototype.initParameters.call(this,arguments),this.isSubLayout||(m.DEFAULT_EDGE_LENGTH<10?this.idealEdgeLength=10:this.idealEdgeLength=m.DEFAULT_EDGE_LENGTH,this.useSmartIdealEdgeLengthCalculation=m.DEFAULT_USE_SMART_IDEAL_EDGE_LENGTH_CALCULATION,this.gravityConstant=y.DEFAULT_GRAVITY_STRENGTH,this.compoundGravityConstant=y.DEFAULT_COMPOUND_GRAVITY_STRENGTH,this.gravityRangeFactor=y.DEFAULT_GRAVITY_RANGE_FACTOR,this.compoundGravityRangeFactor=y.DEFAULT_COMPOUND_GRAVITY_RANGE_FACTOR,this.prunedNodesAll=[],this.growTreeIterations=0,this.afterGrowthIterations=0,this.isTreeGrowing=!1,this.isGrowthFinished=!1)},N.prototype.initSpringEmbedder=function(){u.prototype.initSpringEmbedder.call(this),this.coolingCycle=0,this.maxCoolingCycle=this.maxIterations/y.CONVERGENCE_CHECK_PERIOD,this.finalTemperature=.04,this.coolingAdjuster=1},N.prototype.layout=function(){var _=v.DEFAULT_CREATE_BENDS_AS_NEEDED;return _&&(this.createBendpoints(),this.graphManager.resetAllEdges()),this.level=0,this.classicLayout()},N.prototype.classicLayout=function(){if(this.nodesWithGravity=this.calculateNodesToApplyGravitationTo(),this.graphManager.setAllNodesToApplyGravitation(this.nodesWithGravity),this.calcNoOfChildrenForAllNodes(),this.graphManager.calcLowestCommonAncestors(),this.graphManager.calcInclusionTreeDepths(),this.graphManager.getRoot().calcEstimatedSize(),this.calcIdealEdgeLengths(),this.incremental){if(m.TREE_REDUCTION_ON_INCREMENTAL){this.reduceTrees(),this.graphManager.resetAllNodesToApplyGravitation();var A=new Set(this.getAllNodes()),M=this.nodesWithGravity.filter(function(B){return A.has(B)});this.graphManager.setAllNodesToApplyGravitation(M)}}else{var _=this.getFlatForest();if(_.length>0)this.positionNodesRadially(_);else{this.reduceTrees(),this.graphManager.resetAllNodesToApplyGravitation();var A=new Set(this.getAllNodes()),M=this.nodesWithGravity.filter(function(D){return A.has(D)});this.graphManager.setAllNodesToApplyGravitation(M),this.positionNodesRandomly()}}return Object.keys(this.constraints).length>0&&(g.handleConstraints(this),this.initConstraintVariables()),this.initSpringEmbedder(),m.APPLY_LAYOUT&&this.runSpringEmbedder(),!0},N.prototype.tick=function(){if(this.totalIterations++,this.totalIterations===this.maxIterations&&!this.isTreeGrowing&&!this.isGrowthFinished)if(this.prunedNodesAll.length>0)this.isTreeGrowing=!0;else return!0;if(this.totalIterations%y.CONVERGENCE_CHECK_PERIOD==0&&!this.isTreeGrowing&&!this.isGrowthFinished){if(this.isConverged())if(this.prunedNodesAll.length>0)this.isTreeGrowing=!0;else return!0;this.coolingCycle++,this.layoutQuality==0?this.coolingAdjuster=this.coolingCycle:this.layoutQuality==1&&(this.coolingAdjuster=this.coolingCycle/3),this.coolingFactor=Math.max(this.initialCoolingFactor-Math.pow(this.coolingCycle,Math.log(100*(this.initialCoolingFactor-this.finalTemperature))/Math.log(this.maxCoolingCycle))/100*this.coolingAdjuster,this.finalTemperature),this.animationPeriod=Math.ceil(this.initialAnimationPeriod*Math.sqrt(this.coolingFactor))}if(this.isTreeGrowing){if(this.growTreeIterations%10==0)if(this.prunedNodesAll.length>0){this.graphManager.updateBounds(),this.updateGrid(),this.growTree(this.prunedNodesAll),this.graphManager.resetAllNodesToApplyGravitation();var _=new Set(this.getAllNodes()),A=this.nodesWithGravity.filter(function(P){return _.has(P)});this.graphManager.setAllNodesToApplyGravitation(A),this.graphManager.updateBounds(),this.updateGrid(),m.PURE_INCREMENTAL?this.coolingFactor=y.DEFAULT_COOLING_FACTOR_INCREMENTAL/2:this.coolingFactor=y.DEFAULT_COOLING_FACTOR_INCREMENTAL}else this.isTreeGrowing=!1,this.isGrowthFinished=!0;this.growTreeIterations++}if(this.isGrowthFinished){if(this.isConverged())return!0;this.afterGrowthIterations%10==0&&(this.graphManager.updateBounds(),this.updateGrid()),m.PURE_INCREMENTAL?this.coolingFactor=y.DEFAULT_COOLING_FACTOR_INCREMENTAL/2*((100-this.afterGrowthIterations)/100):this.coolingFactor=y.DEFAULT_COOLING_FACTOR_INCREMENTAL*((100-this.afterGrowthIterations)/100),this.afterGrowthIterations++}var M=!this.isTreeGrowing&&!this.isGrowthFinished,D=this.growTreeIterations%10==1&&this.isTreeGrowing||this.afterGrowthIterations%10==1&&this.isGrowthFinished;return this.totalDisplacement=0,this.graphManager.updateBounds(),this.calcSpringForces(),this.calcRepulsionForces(M,D),this.calcGravitationalForces(),this.moveNodes(),this.animate(),!1},N.prototype.getPositionsData=function(){for(var _=this.graphManager.getAllNodes(),A={},M=0;M<_.length;M++){var D=_[M].rect,P=_[M].id;A[P]={id:P,x:D.getCenterX(),y:D.getCenterY(),w:D.width,h:D.height}}return A},N.prototype.runSpringEmbedder=function(){this.initialAnimationPeriod=25,this.animationPeriod=this.initialAnimationPeriod;var _=!1;if(y.ANIMATE==="during")this.emit("layoutstarted");else{for(;!_;)_=this.tick();this.graphManager.updateBounds()}},N.prototype.moveNodes=function(){for(var _=this.getAllNodes(),A,M=0;M<_.length;M++)A=_[M],A.calculateDisplacement();Object.keys(this.constraints).length>0&&this.updateDisplacements();for(var M=0;M<_.length;M++)A=_[M],A.move()},N.prototype.initConstraintVariables=function(){var _=this;this.idToNodeMap=new Map,this.fixedNodeSet=new Set;for(var A=this.graphManager.getAllNodes(),M=0;M<A.length;M++){var D=A[M];this.idToNodeMap.set(D.id,D)}var P=o(function U(oe){for(var te=oe.getChild().getNodes(),le,ie=0,ae=0;ae<te.length;ae++)le=te[ae],le.getChild()==null?_.fixedNodeSet.has(le.id)&&(ie+=100):ie+=U(le);return ie},"calculateCompoundWeight");if(this.constraints.fixedNodeConstraint){this.constraints.fixedNodeConstraint.forEach(function(te){_.fixedNodeSet.add(te.nodeId)});for(var A=this.graphManager.getAllNodes(),D,M=0;M<A.length;M++)if(D=A[M],D.getChild()!=null){var B=P(D);B>0&&(D.fixedNodeWeight=B)}}if(this.constraints.relativePlacementConstraint){var O=new Map,$=new Map;if(this.dummyToNodeForVerticalAlignment=new Map,this.dummyToNodeForHorizontalAlignment=new Map,this.fixedNodesOnHorizontal=new Set,this.fixedNodesOnVertical=new Set,this.fixedNodeSet.forEach(function(U){_.fixedNodesOnHorizontal.add(U),_.fixedNodesOnVertical.add(U)}),this.constraints.alignmentConstraint){if(this.constraints.alignmentConstraint.vertical)for(var V=this.constraints.alignmentConstraint.vertical,M=0;M<V.length;M++)this.dummyToNodeForVerticalAlignment.set("dummy"+M,[]),V[M].forEach(function(oe){O.set(oe,"dummy"+M),_.dummyToNodeForVerticalAlignment.get("dummy"+M).push(oe),_.fixedNodeSet.has(oe)&&_.fixedNodesOnHorizontal.add("dummy"+M)});if(this.constraints.alignmentConstraint.horizontal)for(var G=this.constraints.alignmentConstraint.horizontal,M=0;M<G.length;M++)this.dummyToNodeForHorizontalAlignment.set("dummy"+M,[]),G[M].forEach(function(oe){$.set(oe,"dummy"+M),_.dummyToNodeForHorizontalAlignment.get("dummy"+M).push(oe),_.fixedNodeSet.has(oe)&&_.fixedNodesOnVertical.add("dummy"+M)})}if(m.RELAX_MOVEMENT_ON_CONSTRAINTS)this.shuffle=function(U){var oe,te,le;for(le=U.length-1;le>=2*U.length/3;le--)oe=Math.floor(Math.random()*(le+1)),te=U[le],U[le]=U[oe],U[oe]=te;return U},this.nodesInRelativeHorizontal=[],this.nodesInRelativeVertical=[],this.nodeToRelativeConstraintMapHorizontal=new Map,this.nodeToRelativeConstraintMapVertical=new Map,this.nodeToTempPositionMapHorizontal=new Map,this.nodeToTempPositionMapVertical=new Map,this.constraints.relativePlacementConstraint.forEach(function(U){if(U.left){var oe=O.has(U.left)?O.get(U.left):U.left,te=O.has(U.right)?O.get(U.right):U.right;_.nodesInRelativeHorizontal.includes(oe)||(_.nodesInRelativeHorizontal.push(oe),_.nodeToRelativeConstraintMapHorizontal.set(oe,[]),_.dummyToNodeForVerticalAlignment.has(oe)?_.nodeToTempPositionMapHorizontal.set(oe,_.idToNodeMap.get(_.dummyToNodeForVerticalAlignment.get(oe)[0]).getCenterX()):_.nodeToTempPositionMapHorizontal.set(oe,_.idToNodeMap.get(oe).getCenterX())),_.nodesInRelativeHorizontal.includes(te)||(_.nodesInRelativeHorizontal.push(te),_.nodeToRelativeConstraintMapHorizontal.set(te,[]),_.dummyToNodeForVerticalAlignment.has(te)?_.nodeToTempPositionMapHorizontal.set(te,_.idToNodeMap.get(_.dummyToNodeForVerticalAlignment.get(te)[0]).getCenterX()):_.nodeToTempPositionMapHorizontal.set(te,_.idToNodeMap.get(te).getCenterX())),_.nodeToRelativeConstraintMapHorizontal.get(oe).push({right:te,gap:U.gap}),_.nodeToRelativeConstraintMapHorizontal.get(te).push({left:oe,gap:U.gap})}else{var le=$.has(U.top)?$.get(U.top):U.top,ie=$.has(U.bottom)?$.get(U.bottom):U.bottom;_.nodesInRelativeVertical.includes(le)||(_.nodesInRelativeVertical.push(le),_.nodeToRelativeConstraintMapVertical.set(le,[]),_.dummyToNodeForHorizontalAlignment.has(le)?_.nodeToTempPositionMapVertical.set(le,_.idToNodeMap.get(_.dummyToNodeForHorizontalAlignment.get(le)[0]).getCenterY()):_.nodeToTempPositionMapVertical.set(le,_.idToNodeMap.get(le).getCenterY())),_.nodesInRelativeVertical.includes(ie)||(_.nodesInRelativeVertical.push(ie),_.nodeToRelativeConstraintMapVertical.set(ie,[]),_.dummyToNodeForHorizontalAlignment.has(ie)?_.nodeToTempPositionMapVertical.set(ie,_.idToNodeMap.get(_.dummyToNodeForHorizontalAlignment.get(ie)[0]).getCenterY()):_.nodeToTempPositionMapVertical.set(ie,_.idToNodeMap.get(ie).getCenterY())),_.nodeToRelativeConstraintMapVertical.get(le).push({bottom:ie,gap:U.gap}),_.nodeToRelativeConstraintMapVertical.get(ie).push({top:le,gap:U.gap})}});else{var z=new Map,W=new Map;this.constraints.relativePlacementConstraint.forEach(function(U){if(U.left){var oe=O.has(U.left)?O.get(U.left):U.left,te=O.has(U.right)?O.get(U.right):U.right;z.has(oe)?z.get(oe).push(te):z.set(oe,[te]),z.has(te)?z.get(te).push(oe):z.set(te,[oe])}else{var le=$.has(U.top)?$.get(U.top):U.top,ie=$.has(U.bottom)?$.get(U.bottom):U.bottom;W.has(le)?W.get(le).push(ie):W.set(le,[ie]),W.has(ie)?W.get(ie).push(le):W.set(ie,[le])}});var H=o(function(oe,te){var le=[],ie=[],ae=new L,Re=new Set,be=0;return oe.forEach(function(Pe,Ge){if(!Re.has(Ge)){le[be]=[],ie[be]=!1;var Oe=Ge;for(ae.push(Oe),Re.add(Oe),le[be].push(Oe);ae.length!=0;){Oe=ae.shift(),te.has(Oe)&&(ie[be]=!0);var ue=oe.get(Oe);ue.forEach(function(ye){Re.has(ye)||(ae.push(ye),Re.add(ye),le[be].push(ye))})}be++}}),{components:le,isFixed:ie}},"constructComponents"),j=H(z,_.fixedNodesOnHorizontal);this.componentsOnHorizontal=j.components,this.fixedComponentsOnHorizontal=j.isFixed;var Q=H(W,_.fixedNodesOnVertical);this.componentsOnVertical=Q.components,this.fixedComponentsOnVertical=Q.isFixed}}},N.prototype.updateDisplacements=function(){var _=this;if(this.constraints.fixedNodeConstraint&&this.constraints.fixedNodeConstraint.forEach(function(Q){var U=_.idToNodeMap.get(Q.nodeId);U.displacementX=0,U.displacementY=0}),this.constraints.alignmentConstraint){if(this.constraints.alignmentConstraint.vertical)for(var A=this.constraints.alignmentConstraint.vertical,M=0;M<A.length;M++){for(var D=0,P=0;P<A[M].length;P++){if(this.fixedNodeSet.has(A[M][P])){D=0;break}D+=this.idToNodeMap.get(A[M][P]).displacementX}for(var B=D/A[M].length,P=0;P<A[M].length;P++)this.idToNodeMap.get(A[M][P]).displacementX=B}if(this.constraints.alignmentConstraint.horizontal)for(var O=this.constraints.alignmentConstraint.horizontal,M=0;M<O.length;M++){for(var $=0,P=0;P<O[M].length;P++){if(this.fixedNodeSet.has(O[M][P])){$=0;break}$+=this.idToNodeMap.get(O[M][P]).displacementY}for(var V=$/O[M].length,P=0;P<O[M].length;P++)this.idToNodeMap.get(O[M][P]).displacementY=V}}if(this.constraints.relativePlacementConstraint)if(m.RELAX_MOVEMENT_ON_CONSTRAINTS)this.totalIterations%10==0&&(this.shuffle(this.nodesInRelativeHorizontal),this.shuffle(this.nodesInRelativeVertical)),this.nodesInRelativeHorizontal.forEach(function(Q){if(!_.fixedNodesOnHorizontal.has(Q)){var U=0;_.dummyToNodeForVerticalAlignment.has(Q)?U=_.idToNodeMap.get(_.dummyToNodeForVerticalAlignment.get(Q)[0]).displacementX:U=_.idToNodeMap.get(Q).displacementX,_.nodeToRelativeConstraintMapHorizontal.get(Q).forEach(function(oe){if(oe.right){var te=_.nodeToTempPositionMapHorizontal.get(oe.right)-_.nodeToTempPositionMapHorizontal.get(Q)-U;te<oe.gap&&(U-=oe.gap-te)}else{var te=_.nodeToTempPositionMapHorizontal.get(Q)-_.nodeToTempPositionMapHorizontal.get(oe.left)+U;te<oe.gap&&(U+=oe.gap-te)}}),_.nodeToTempPositionMapHorizontal.set(Q,_.nodeToTempPositionMapHorizontal.get(Q)+U),_.dummyToNodeForVerticalAlignment.has(Q)?_.dummyToNodeForVerticalAlignment.get(Q).forEach(function(oe){_.idToNodeMap.get(oe).displacementX=U}):_.idToNodeMap.get(Q).displacementX=U}}),this.nodesInRelativeVertical.forEach(function(Q){if(!_.fixedNodesOnHorizontal.has(Q)){var U=0;_.dummyToNodeForHorizontalAlignment.has(Q)?U=_.idToNodeMap.get(_.dummyToNodeForHorizontalAlignment.get(Q)[0]).displacementY:U=_.idToNodeMap.get(Q).displacementY,_.nodeToRelativeConstraintMapVertical.get(Q).forEach(function(oe){if(oe.bottom){var te=_.nodeToTempPositionMapVertical.get(oe.bottom)-_.nodeToTempPositionMapVertical.get(Q)-U;te<oe.gap&&(U-=oe.gap-te)}else{var te=_.nodeToTempPositionMapVertical.get(Q)-_.nodeToTempPositionMapVertical.get(oe.top)+U;te<oe.gap&&(U+=oe.gap-te)}}),_.nodeToTempPositionMapVertical.set(Q,_.nodeToTempPositionMapVertical.get(Q)+U),_.dummyToNodeForHorizontalAlignment.has(Q)?_.dummyToNodeForHorizontalAlignment.get(Q).forEach(function(oe){_.idToNodeMap.get(oe).displacementY=U}):_.idToNodeMap.get(Q).displacementY=U}});else{for(var M=0;M<this.componentsOnHorizontal.length;M++){var G=this.componentsOnHorizontal[M];if(this.fixedComponentsOnHorizontal[M])for(var P=0;P<G.length;P++)this.dummyToNodeForVerticalAlignment.has(G[P])?this.dummyToNodeForVerticalAlignment.get(G[P]).forEach(function(oe){_.idToNodeMap.get(oe).displacementX=0}):this.idToNodeMap.get(G[P]).displacementX=0;else{for(var z=0,W=0,P=0;P<G.length;P++)if(this.dummyToNodeForVerticalAlignment.has(G[P])){var H=this.dummyToNodeForVerticalAlignment.get(G[P]);z+=H.length*this.idToNodeMap.get(H[0]).displacementX,W+=H.length}else z+=this.idToNodeMap.get(G[P]).displacementX,W++;for(var j=z/W,P=0;P<G.length;P++)this.dummyToNodeForVerticalAlignment.has(G[P])?this.dummyToNodeForVerticalAlignment.get(G[P]).forEach(function(oe){_.idToNodeMap.get(oe).displacementX=j}):this.idToNodeMap.get(G[P]).displacementX=j}}for(var M=0;M<this.componentsOnVertical.length;M++){var G=this.componentsOnVertical[M];if(this.fixedComponentsOnVertical[M])for(var P=0;P<G.length;P++)this.dummyToNodeForHorizontalAlignment.has(G[P])?this.dummyToNodeForHorizontalAlignment.get(G[P]).forEach(function(te){_.idToNodeMap.get(te).displacementY=0}):this.idToNodeMap.get(G[P]).displacementY=0;else{for(var z=0,W=0,P=0;P<G.length;P++)if(this.dummyToNodeForHorizontalAlignment.has(G[P])){var H=this.dummyToNodeForHorizontalAlignment.get(G[P]);z+=H.length*this.idToNodeMap.get(H[0]).displacementY,W+=H.length}else z+=this.idToNodeMap.get(G[P]).displacementY,W++;for(var j=z/W,P=0;P<G.length;P++)this.dummyToNodeForHorizontalAlignment.has(G[P])?this.dummyToNodeForHorizontalAlignment.get(G[P]).forEach(function(ae){_.idToNodeMap.get(ae).displacementY=j}):this.idToNodeMap.get(G[P]).displacementY=j}}}},N.prototype.calculateNodesToApplyGravitationTo=function(){var _=[],A,M=this.graphManager.getGraphs(),D=M.length,P;for(P=0;P<D;P++)A=M[P],A.updateConnected(),A.isConnected||(_=_.concat(A.getNodes()));return _},N.prototype.createBendpoints=function(){var _=[];_=_.concat(this.graphManager.getAllEdges());var A=new Set,M;for(M=0;M<_.length;M++){var D=_[M];if(!A.has(D)){var P=D.getSource(),B=D.getTarget();if(P==B)D.getBendpoints().push(new b),D.getBendpoints().push(new b),this.createDummyNodesForBendpoints(D),A.add(D);else{var O=[];if(O=O.concat(P.getEdgeListToNode(B)),O=O.concat(B.getEdgeListToNode(P)),!A.has(O[0])){if(O.length>1){var $;for($=0;$<O.length;$++){var V=O[$];V.getBendpoints().push(new b),this.createDummyNodesForBendpoints(V)}}O.forEach(function(G){A.add(G)})}}}if(A.size==_.length)break}},N.prototype.positionNodesRadially=function(_){for(var A=new x(0,0),M=Math.ceil(Math.sqrt(_.length)),D=0,P=0,B=0,O=new b(0,0),$=0;$<_.length;$++){$%M==0&&(B=0,P=D,$!=0&&(P+=m.DEFAULT_COMPONENT_SEPERATION),D=0);var V=_[$],G=k.findCenterOfTree(V);A.x=B,A.y=P,O=N.radialLayout(V,G,A),O.y>D&&(D=Math.floor(O.y)),B=Math.floor(O.x+m.DEFAULT_COMPONENT_SEPERATION)}this.transform(new b(v.WORLD_CENTER_X-O.x/2,v.WORLD_CENTER_Y-O.y/2))},N.radialLayout=function(_,A,M){var D=Math.max(this.maxDiagonalInTree(_),m.DEFAULT_RADIAL_SEPARATION);N.branchRadialLayout(A,null,0,359,0,D);var P=S.calculateBounds(_),B=new R;B.setDeviceOrgX(P.getMinX()),B.setDeviceOrgY(P.getMinY()),B.setWorldOrgX(M.x),B.setWorldOrgY(M.y);for(var O=0;O<_.length;O++){var $=_[O];$.transform(B)}var V=new b(P.getMaxX(),P.getMaxY());return B.inverseTransformPoint(V)},N.branchRadialLayout=function(_,A,M,D,P,B){var O=(D-M+1)/2;O<0&&(O+=180);var $=(O+M)%360,V=$*w.TWO_PI/360,G=Math.cos(V),z=P*Math.cos(V),W=P*Math.sin(V);_.setCenter(z,W);var H=[];H=H.concat(_.getEdges());var j=H.length;A!=null&&j--;for(var Q=0,U=H.length,oe,te=_.getEdgesBetween(A);te.length>1;){var le=te[0];te.splice(0,1);var ie=H.indexOf(le);ie>=0&&H.splice(ie,1),U--,j--}A!=null?oe=(H.indexOf(te[0])+1)%U:oe=0;for(var ae=Math.abs(D-M)/j,Re=oe;Q!=j;Re=++Re%U){var be=H[Re].getOtherEnd(_);if(be!=A){var Pe=(M+Q*ae)%360,Ge=(Pe+ae)%360;N.branchRadialLayout(be,_,Pe,Ge,P+B,B),Q++}}},N.maxDiagonalInTree=function(_){for(var A=C.MIN_VALUE,M=0;M<_.length;M++){var D=_[M],P=D.getDiagonal();P>A&&(A=P)}return A},N.prototype.calcRepulsionRange=function(){return 2*(this.level+1)*this.idealEdgeLength},N.prototype.groupZeroDegreeMembers=function(){var _=this,A={};this.memberGroups={},this.idToDummyNode={};for(var M=[],D=this.graphManager.getAllNodes(),P=0;P<D.length;P++){var B=D[P],O=B.getParent();this.getNodeDegreeWithChildren(B)===0&&(O.id==null||!this.getToBeTiled(O))&&M.push(B)}for(var P=0;P<M.length;P++){var B=M[P],$=B.getParent().id;typeof A[$]>"u"&&(A[$]=[]),A[$]=A[$].concat(B)}Object.keys(A).forEach(function(V){if(A[V].length>1){var G="DummyCompound_"+V;_.memberGroups[G]=A[V];var z=A[V][0].getParent(),W=new f(_.graphManager);W.id=G,W.paddingLeft=z.paddingLeft||0,W.paddingRight=z.paddingRight||0,W.paddingBottom=z.paddingBottom||0,W.paddingTop=z.paddingTop||0,_.idToDummyNode[G]=W;var H=_.getGraphManager().add(_.newGraph(),W),j=z.getChild();j.add(W);for(var Q=0;Q<A[V].length;Q++){var U=A[V][Q];j.remove(U),H.add(U)}}})},N.prototype.clearCompounds=function(){var _={},A={};this.performDFSOnCompounds();for(var M=0;M<this.compoundOrder.length;M++)A[this.compoundOrder[M].id]=this.compoundOrder[M],_[this.compoundOrder[M].id]=[].concat(this.compoundOrder[M].getChild().getNodes()),this.graphManager.remove(this.compoundOrder[M].getChild()),this.compoundOrder[M].child=null;this.graphManager.resetAllNodes(),this.tileCompoundMembers(_,A)},N.prototype.clearZeroDegreeMembers=function(){var _=this,A=this.tiledZeroDegreePack=[];Object.keys(this.memberGroups).forEach(function(M){var D=_.idToDummyNode[M];if(A[M]=_.tileNodes(_.memberGroups[M],D.paddingLeft+D.paddingRight),D.rect.width=A[M].width,D.rect.height=A[M].height,D.setCenter(A[M].centerX,A[M].centerY),D.labelMarginLeft=0,D.labelMarginTop=0,m.NODE_DIMENSIONS_INCLUDE_LABELS){var P=D.rect.width,B=D.rect.height;D.labelWidth&&(D.labelPosHorizontal=="left"?(D.rect.x-=D.labelWidth,D.setWidth(P+D.labelWidth),D.labelMarginLeft=D.labelWidth):D.labelPosHorizontal=="center"&&D.labelWidth>P?(D.rect.x-=(D.labelWidth-P)/2,D.setWidth(D.labelWidth),D.labelMarginLeft=(D.labelWidth-P)/2):D.labelPosHorizontal=="right"&&D.setWidth(P+D.labelWidth)),D.labelHeight&&(D.labelPosVertical=="top"?(D.rect.y-=D.labelHeight,D.setHeight(B+D.labelHeight),D.labelMarginTop=D.labelHeight):D.labelPosVertical=="center"&&D.labelHeight>B?(D.rect.y-=(D.labelHeight-B)/2,D.setHeight(D.labelHeight),D.labelMarginTop=(D.labelHeight-B)/2):D.labelPosVertical=="bottom"&&D.setHeight(B+D.labelHeight))}})},N.prototype.repopulateCompounds=function(){for(var _=this.compoundOrder.length-1;_>=0;_--){var A=this.compoundOrder[_],M=A.id,D=A.paddingLeft,P=A.paddingTop,B=A.labelMarginLeft,O=A.labelMarginTop;this.adjustLocations(this.tiledMemberPack[M],A.rect.x,A.rect.y,D,P,B,O)}},N.prototype.repopulateZeroDegreeMembers=function(){var _=this,A=this.tiledZeroDegreePack;Object.keys(A).forEach(function(M){var D=_.idToDummyNode[M],P=D.paddingLeft,B=D.paddingTop,O=D.labelMarginLeft,$=D.labelMarginTop;_.adjustLocations(A[M],D.rect.x,D.rect.y,P,B,O,$)})},N.prototype.getToBeTiled=function(_){var A=_.id;if(this.toBeTiled[A]!=null)return this.toBeTiled[A];var M=_.getChild();if(M==null)return this.toBeTiled[A]=!1,!1;for(var D=M.getNodes(),P=0;P<D.length;P++){var B=D[P];if(this.getNodeDegree(B)>0)return this.toBeTiled[A]=!1,!1;if(B.getChild()==null){this.toBeTiled[B.id]=!1;continue}if(!this.getToBeTiled(B))return this.toBeTiled[A]=!1,!1}return this.toBeTiled[A]=!0,!0},N.prototype.getNodeDegree=function(_){for(var A=_.id,M=_.getEdges(),D=0,P=0;P<M.length;P++){var B=M[P];B.getSource().id!==B.getTarget().id&&(D=D+1)}return D},N.prototype.getNodeDegreeWithChildren=function(_){var A=this.getNodeDegree(_);if(_.getChild()==null)return A;for(var M=_.getChild().getNodes(),D=0;D<M.length;D++){var P=M[D];A+=this.getNodeDegreeWithChildren(P)}return A},N.prototype.performDFSOnCompounds=function(){this.compoundOrder=[],this.fillCompexOrderByDFS(this.graphManager.getRoot().getNodes())},N.prototype.fillCompexOrderByDFS=function(_){for(var A=0;A<_.length;A++){var M=_[A];M.getChild()!=null&&this.fillCompexOrderByDFS(M.getChild().getNodes()),this.getToBeTiled(M)&&this.compoundOrder.push(M)}},N.prototype.adjustLocations=function(_,A,M,D,P,B,O){A+=D+B,M+=P+O;for(var $=A,V=0;V<_.rows.length;V++){var G=_.rows[V];A=$;for(var z=0,W=0;W<G.length;W++){var H=G[W];H.rect.x=A,H.rect.y=M,A+=H.rect.width+_.horizontalPadding,H.rect.height>z&&(z=H.rect.height)}M+=z+_.verticalPadding}},N.prototype.tileCompoundMembers=function(_,A){var M=this;this.tiledMemberPack=[],Object.keys(_).forEach(function(D){var P=A[D];if(M.tiledMemberPack[D]=M.tileNodes(_[D],P.paddingLeft+P.paddingRight),P.rect.width=M.tiledMemberPack[D].width,P.rect.height=M.tiledMemberPack[D].height,P.setCenter(M.tiledMemberPack[D].centerX,M.tiledMemberPack[D].centerY),P.labelMarginLeft=0,P.labelMarginTop=0,m.NODE_DIMENSIONS_INCLUDE_LABELS){var B=P.rect.width,O=P.rect.height;P.labelWidth&&(P.labelPosHorizontal=="left"?(P.rect.x-=P.labelWidth,P.setWidth(B+P.labelWidth),P.labelMarginLeft=P.labelWidth):P.labelPosHorizontal=="center"&&P.labelWidth>B?(P.rect.x-=(P.labelWidth-B)/2,P.setWidth(P.labelWidth),P.labelMarginLeft=(P.labelWidth-B)/2):P.labelPosHorizontal=="right"&&P.setWidth(B+P.labelWidth)),P.labelHeight&&(P.labelPosVertical=="top"?(P.rect.y-=P.labelHeight,P.setHeight(O+P.labelHeight),P.labelMarginTop=P.labelHeight):P.labelPosVertical=="center"&&P.labelHeight>O?(P.rect.y-=(P.labelHeight-O)/2,P.setHeight(P.labelHeight),P.labelMarginTop=(P.labelHeight-O)/2):P.labelPosVertical=="bottom"&&P.setHeight(O+P.labelHeight))}})},N.prototype.tileNodes=function(_,A){var M=this.tileNodesByFavoringDim(_,A,!0),D=this.tileNodesByFavoringDim(_,A,!1),P=this.getOrgRatio(M),B=this.getOrgRatio(D),O;return B<P?O=D:O=M,O},N.prototype.getOrgRatio=function(_){var A=_.width,M=_.height,D=A/M;return D<1&&(D=1/D),D},N.prototype.calcIdealRowWidth=function(_,A){var M=m.TILING_PADDING_VERTICAL,D=m.TILING_PADDING_HORIZONTAL,P=_.length,B=0,O=0,$=0;_.forEach(function(Q){B+=Q.getWidth(),O+=Q.getHeight(),Q.getWidth()>$&&($=Q.getWidth())});var V=B/P,G=O/P,z=Math.pow(M-D,2)+4*(V+D)*(G+M)*P,W=(D-M+Math.sqrt(z))/(2*(V+D)),H;A?(H=Math.ceil(W),H==W&&H++):H=Math.floor(W);var j=H*(V+D)-D;return $>j&&(j=$),j+=D*2,j},N.prototype.tileNodesByFavoringDim=function(_,A,M){var D=m.TILING_PADDING_VERTICAL,P=m.TILING_PADDING_HORIZONTAL,B=m.TILING_COMPARE_BY,O={rows:[],rowWidth:[],rowHeight:[],width:0,height:A,verticalPadding:D,horizontalPadding:P,centerX:0,centerY:0};B&&(O.idealRowWidth=this.calcIdealRowWidth(_,M));var $=o(function(U){return U.rect.width*U.rect.height},"getNodeArea"),V=o(function(U,oe){return $(oe)-$(U)},"areaCompareFcn");_.sort(function(Q,U){var oe=V;return O.idealRowWidth?(oe=B,oe(Q.id,U.id)):oe(Q,U)});for(var G=0,z=0,W=0;W<_.length;W++){var H=_[W];G+=H.getCenterX(),z+=H.getCenterY()}O.centerX=G/_.length,O.centerY=z/_.length;for(var W=0;W<_.length;W++){var H=_[W];if(O.rows.length==0)this.insertNodeToRow(O,H,0,A);else if(this.canAddHorizontal(O,H.rect.width,H.rect.height)){var j=O.rows.length-1;O.idealRowWidth||(j=this.getShortestRowIndex(O)),this.insertNodeToRow(O,H,j,A)}else this.insertNodeToRow(O,H,O.rows.length,A);this.shiftToLastRow(O)}return O},N.prototype.insertNodeToRow=function(_,A,M,D){var P=D;if(M==_.rows.length){var B=[];_.rows.push(B),_.rowWidth.push(P),_.rowHeight.push(0)}var O=_.rowWidth[M]+A.rect.width;_.rows[M].length>0&&(O+=_.horizontalPadding),_.rowWidth[M]=O,_.width<O&&(_.width=O);var $=A.rect.height;M>0&&($+=_.verticalPadding);var V=0;$>_.rowHeight[M]&&(V=_.rowHeight[M],_.rowHeight[M]=$,V=_.rowHeight[M]-V),_.height+=V,_.rows[M].push(A)},N.prototype.getShortestRowIndex=function(_){for(var A=-1,M=Number.MAX_VALUE,D=0;D<_.rows.length;D++)_.rowWidth[D]<M&&(A=D,M=_.rowWidth[D]);return A},N.prototype.getLongestRowIndex=function(_){for(var A=-1,M=Number.MIN_VALUE,D=0;D<_.rows.length;D++)_.rowWidth[D]>M&&(A=D,M=_.rowWidth[D]);return A},N.prototype.canAddHorizontal=function(_,A,M){if(_.idealRowWidth){var D=_.rows.length-1,P=_.rowWidth[D];return P+A+_.horizontalPadding<=_.idealRowWidth}var B=this.getShortestRowIndex(_);if(B<0)return!0;var O=_.rowWidth[B];if(O+_.horizontalPadding+A<=_.width)return!0;var $=0;_.rowHeight[B]<M&&B>0&&($=M+_.verticalPadding-_.rowHeight[B]);var V;_.width-O>=A+_.horizontalPadding?V=(_.height+$)/(O+A+_.horizontalPadding):V=(_.height+$)/_.width,$=M+_.verticalPadding;var G;return _.width<A?G=(_.height+$)/A:G=(_.height+$)/_.width,G<1&&(G=1/G),V<1&&(V=1/V),V<G},N.prototype.shiftToLastRow=function(_){var A=this.getLongestRowIndex(_),M=_.rowWidth.length-1,D=_.rows[A],P=D[D.length-1],B=P.width+_.horizontalPadding;if(_.width-_.rowWidth[M]>B&&A!=M){D.splice(-1,1),_.rows[M].push(P),_.rowWidth[A]=_.rowWidth[A]-B,_.rowWidth[M]=_.rowWidth[M]+B,_.width=_.rowWidth[instance.getLongestRowIndex(_)];for(var O=Number.MIN_VALUE,$=0;$<D.length;$++)D[$].height>O&&(O=D[$].height);A>0&&(O+=_.verticalPadding);var V=_.rowHeight[A]+_.rowHeight[M];_.rowHeight[A]=O,_.rowHeight[M]<P.height+_.verticalPadding&&(_.rowHeight[M]=P.height+_.verticalPadding);var G=_.rowHeight[A]+_.rowHeight[M];_.height+=G-V,this.shiftToLastRow(_)}},N.prototype.tilingPreLayout=function(){m.TILE&&(this.groupZeroDegreeMembers(),this.clearCompounds(),this.clearZeroDegreeMembers())},N.prototype.tilingPostLayout=function(){m.TILE&&(this.repopulateZeroDegreeMembers(),this.repopulateCompounds())},N.prototype.reduceTrees=function(){for(var _=[],A=!0,M;A;){var D=this.graphManager.getAllNodes(),P=[];A=!1;for(var B=0;B<D.length;B++)if(M=D[B],M.getEdges().length==1&&!M.getEdges()[0].isInterGraph&&M.getChild()==null){if(m.PURE_INCREMENTAL){var O=M.getEdges()[0].getOtherEnd(M),$=new T(M.getCenterX()-O.getCenterX(),M.getCenterY()-O.getCenterY());P.push([M,M.getEdges()[0],M.getOwner(),$])}else P.push([M,M.getEdges()[0],M.getOwner()]);A=!0}if(A==!0){for(var V=[],G=0;G<P.length;G++)P[G][0].getEdges().length==1&&(V.push(P[G]),P[G][0].getOwner().remove(P[G][0]));_.push(V),this.graphManager.resetAllNodes(),this.graphManager.resetAllEdges()}}this.prunedNodesAll=_},N.prototype.growTree=function(_){for(var A=_.length,M=_[A-1],D,P=0;P<M.length;P++)D=M[P],this.findPlaceforPrunedNode(D),D[2].add(D[0]),D[2].add(D[1],D[1].source,D[1].target);_.splice(_.length-1,1),this.graphManager.resetAllNodes(),this.graphManager.resetAllEdges()},N.prototype.findPlaceforPrunedNode=function(_){var A,M,D=_[0];if(D==_[1].source?M=_[1].target:M=_[1].source,m.PURE_INCREMENTAL)D.setCenter(M.getCenterX()+_[3].getWidth(),M.getCenterY()+_[3].getHeight());else{var P=M.startX,B=M.finishX,O=M.startY,$=M.finishY,V=0,G=0,z=0,W=0,H=[V,z,G,W];if(O>0)for(var j=P;j<=B;j++)H[0]+=this.grid[j][O-1].length+this.grid[j][O].length-1;if(B<this.grid.length-1)for(var j=O;j<=$;j++)H[1]+=this.grid[B+1][j].length+this.grid[B][j].length-1;if($<this.grid[0].length-1)for(var j=P;j<=B;j++)H[2]+=this.grid[j][$+1].length+this.grid[j][$].length-1;if(P>0)for(var j=O;j<=$;j++)H[3]+=this.grid[P-1][j].length+this.grid[P][j].length-1;for(var Q=C.MAX_VALUE,U,oe,te=0;te<H.length;te++)H[te]<Q?(Q=H[te],U=1,oe=te):H[te]==Q&&U++;if(U==3&&Q==0)H[0]==0&&H[1]==0&&H[2]==0?A=1:H[0]==0&&H[1]==0&&H[3]==0?A=0:H[0]==0&&H[2]==0&&H[3]==0?A=3:H[1]==0&&H[2]==0&&H[3]==0&&(A=2);else if(U==2&&Q==0){var le=Math.floor(Math.random()*2);H[0]==0&&H[1]==0?le==0?A=0:A=1:H[0]==0&&H[2]==0?le==0?A=0:A=2:H[0]==0&&H[3]==0?le==0?A=0:A=3:H[1]==0&&H[2]==0?le==0?A=1:A=2:H[1]==0&&H[3]==0?le==0?A=1:A=3:le==0?A=2:A=3}else if(U==4&&Q==0){var le=Math.floor(Math.random()*4);A=le}else A=oe;A==0?D.setCenter(M.getCenterX(),M.getCenterY()-M.getHeight()/2-y.DEFAULT_EDGE_LENGTH-D.getHeight()/2):A==1?D.setCenter(M.getCenterX()+M.getWidth()/2+y.DEFAULT_EDGE_LENGTH+D.getWidth()/2,M.getCenterY()):A==2?D.setCenter(M.getCenterX(),M.getCenterY()+M.getHeight()/2+y.DEFAULT_EDGE_LENGTH+D.getHeight()/2):D.setCenter(M.getCenterX()-M.getWidth()/2-y.DEFAULT_EDGE_LENGTH-D.getWidth()/2,M.getCenterY())}},a.exports=N}),991:((a,s,l)=>{var u=l(551).FDLayoutNode,h=l(551).IMath;function d(p,m,g,y){u.call(this,p,m,g,y)}o(d,"CoSENode"),d.prototype=Object.create(u.prototype);for(var f in u)d[f]=u[f];d.prototype.calculateDisplacement=function(){var p=this.graphManager.getLayout();this.getChild()!=null&&this.fixedNodeWeight?(this.displacementX+=p.coolingFactor*(this.springForceX+this.repulsionForceX+this.gravitationForceX)/this.fixedNodeWeight,this.displacementY+=p.coolingFactor*(this.springForceY+this.repulsionForceY+this.gravitationForceY)/this.fixedNodeWeight):(this.displacementX+=p.coolingFactor*(this.springForceX+this.repulsionForceX+this.gravitationForceX)/this.noOfChildren,this.displacementY+=p.coolingFactor*(this.springForceY+this.repulsionForceY+this.gravitationForceY)/this.noOfChildren),Math.abs(this.displacementX)>p.coolingFactor*p.maxNodeDisplacement&&(this.displacementX=p.coolingFactor*p.maxNodeDisplacement*h.sign(this.displacementX)),Math.abs(this.displacementY)>p.coolingFactor*p.maxNodeDisplacement&&(this.displacementY=p.coolingFactor*p.maxNodeDisplacement*h.sign(this.displacementY)),this.child&&this.child.getNodes().length>0&&this.propogateDisplacementToChildren(this.displacementX,this.displacementY)},d.prototype.propogateDisplacementToChildren=function(p,m){for(var g=this.getChild().getNodes(),y,v=0;v<g.length;v++)y=g[v],y.getChild()==null?(y.displacementX+=p,y.displacementY+=m):y.propogateDisplacementToChildren(p,m)},d.prototype.move=function(){var p=this.graphManager.getLayout();(this.child==null||this.child.getNodes().length==0)&&(this.moveBy(this.displacementX,this.displacementY),p.totalDisplacement+=Math.abs(this.displacementX)+Math.abs(this.displacementY)),this.springForceX=0,this.springForceY=0,this.repulsionForceX=0,this.repulsionForceY=0,this.gravitationForceX=0,this.gravitationForceY=0,this.displacementX=0,this.displacementY=0},d.prototype.setPred1=function(p){this.pred1=p},d.prototype.getPred1=function(){return pred1},d.prototype.getPred2=function(){return pred2},d.prototype.setNext=function(p){this.next=p},d.prototype.getNext=function(){return next},d.prototype.setProcessed=function(p){this.processed=p},d.prototype.isProcessed=function(){return processed},a.exports=d}),902:((a,s,l)=>{function u(g){if(Array.isArray(g)){for(var y=0,v=Array(g.length);y<g.length;y++)v[y]=g[y];return v}else return Array.from(g)}o(u,"_toConsumableArray");var h=l(806),d=l(551).LinkedList,f=l(551).Matrix,p=l(551).SVD;function m(){}o(m,"ConstraintHandler"),m.handleConstraints=function(g){var y={};y.fixedNodeConstraint=g.constraints.fixedNodeConstraint,y.alignmentConstraint=g.constraints.alignmentConstraint,y.relativePlacementConstraint=g.constraints.relativePlacementConstraint;for(var v=new Map,x=new Map,b=[],T=[],k=g.getAllNodes(),C=0,w=0;w<k.length;w++){var S=k[w];S.getChild()==null&&(x.set(S.id,C++),b.push(S.getCenterX()),T.push(S.getCenterY()),v.set(S.id,S))}y.relativePlacementConstraint&&y.relativePlacementConstraint.forEach(function(ne){!ne.gap&&ne.gap!=0&&(ne.left?ne.gap=h.DEFAULT_EDGE_LENGTH+v.get(ne.left).getWidth()/2+v.get(ne.right).getWidth()/2:ne.gap=h.DEFAULT_EDGE_LENGTH+v.get(ne.top).getHeight()/2+v.get(ne.bottom).getHeight()/2)});var R=o(function(q,he){return{x:q.x-he.x,y:q.y-he.y}},"calculatePositionDiff"),L=o(function(q){var he=0,X=0;return q.forEach(function(fe){he+=b[x.get(fe)],X+=T[x.get(fe)]}),{x:he/q.size,y:X/q.size}},"calculateAvgPosition"),N=o(function(q,he,X,fe,K){function qe(Ke,xe){var mt=new Set(Ke),Le=!0,ft=!1,wt=void 0;try{for(var zt=xe[Symbol.iterator](),St;!(Le=(St=zt.next()).done);Le=!0){var At=St.value;mt.add(At)}}catch(bt){ft=!0,wt=bt}finally{try{!Le&&zt.return&&zt.return()}finally{if(ft)throw wt}}return mt}o(qe,"setUnion");var _e=new Map;q.forEach(function(Ke,xe){_e.set(xe,0)}),q.forEach(function(Ke,xe){Ke.forEach(function(mt){_e.set(mt.id,_e.get(mt.id)+1)})});var Be=new Map,Ne=new Map,He=new d;_e.forEach(function(Ke,xe){Ke==0?(He.push(xe),X||(he=="horizontal"?Be.set(xe,x.has(xe)?b[x.get(xe)]:fe.get(xe)):Be.set(xe,x.has(xe)?T[x.get(xe)]:fe.get(xe)))):Be.set(xe,Number.NEGATIVE_INFINITY),X&&Ne.set(xe,new Set([xe]))}),X&&K.forEach(function(Ke){var xe=[];if(Ke.forEach(function(ft){X.has(ft)&&xe.push(ft)}),xe.length>0){var mt=0;xe.forEach(function(ft){he=="horizontal"?(Be.set(ft,x.has(ft)?b[x.get(ft)]:fe.get(ft)),mt+=Be.get(ft)):(Be.set(ft,x.has(ft)?T[x.get(ft)]:fe.get(ft)),mt+=Be.get(ft))}),mt=mt/xe.length,Ke.forEach(function(ft){X.has(ft)||Be.set(ft,mt)})}else{var Le=0;Ke.forEach(function(ft){he=="horizontal"?Le+=x.has(ft)?b[x.get(ft)]:fe.get(ft):Le+=x.has(ft)?T[x.get(ft)]:fe.get(ft)}),Le=Le/Ke.length,Ke.forEach(function(ft){Be.set(ft,Le)})}});for(var $e=o(function(){var xe=He.shift(),mt=q.get(xe);mt.forEach(function(Le){if(Be.get(Le.id)<Be.get(xe)+Le.gap)if(X&&X.has(Le.id)){var ft=void 0;if(he=="horizontal"?ft=x.has(Le.id)?b[x.get(Le.id)]:fe.get(Le.id):ft=x.has(Le.id)?T[x.get(Le.id)]:fe.get(Le.id),Be.set(Le.id,ft),ft<Be.get(xe)+Le.gap){var wt=Be.get(xe)+Le.gap-ft;Ne.get(xe).forEach(function(zt){Be.set(zt,Be.get(zt)-wt)})}}else Be.set(Le.id,Be.get(xe)+Le.gap);_e.set(Le.id,_e.get(Le.id)-1),_e.get(Le.id)==0&&He.push(Le.id),X&&Ne.set(Le.id,qe(Ne.get(xe),Ne.get(Le.id)))})},"_loop");He.length!=0;)$e();if(X){var Xe=new Set;q.forEach(function(Ke,xe){Ke.length==0&&Xe.add(xe)});var Fe=[];Ne.forEach(function(Ke,xe){if(Xe.has(xe)){var mt=!1,Le=!0,ft=!1,wt=void 0;try{for(var zt=Ke[Symbol.iterator](),St;!(Le=(St=zt.next()).done);Le=!0){var At=St.value;X.has(At)&&(mt=!0)}}catch(lt){ft=!0,wt=lt}finally{try{!Le&&zt.return&&zt.return()}finally{if(ft)throw wt}}if(!mt){var bt=!1,me=void 0;Fe.forEach(function(lt,gt){lt.has([].concat(u(Ke))[0])&&(bt=!0,me=gt)}),bt?Ke.forEach(function(lt){Fe[me].add(lt)}):Fe.push(new Set(Ke))}}}),Fe.forEach(function(Ke,xe){var mt=Number.POSITIVE_INFINITY,Le=Number.POSITIVE_INFINITY,ft=Number.NEGATIVE_INFINITY,wt=Number.NEGATIVE_INFINITY,zt=!0,St=!1,At=void 0;try{for(var bt=Ke[Symbol.iterator](),me;!(zt=(me=bt.next()).done);zt=!0){var lt=me.value,gt=void 0;he=="horizontal"?gt=x.has(lt)?b[x.get(lt)]:fe.get(lt):gt=x.has(lt)?T[x.get(lt)]:fe.get(lt);var Ze=Be.get(lt);gt<mt&&(mt=gt),gt>ft&&(ft=gt),Ze<Le&&(Le=Ze),Ze>wt&&(wt=Ze)}}catch(vr){St=!0,At=vr}finally{try{!zt&&bt.return&&bt.return()}finally{if(St)throw At}}var Ee=(mt+ft)/2-(Le+wt)/2,tt=!0,at=!1,ot=void 0;try{for(var Wt=Ke[Symbol.iterator](),Bt;!(tt=(Bt=Wt.next()).done);tt=!0){var qt=Bt.value;Be.set(qt,Be.get(qt)+Ee)}}catch(vr){at=!0,ot=vr}finally{try{!tt&&Wt.return&&Wt.return()}finally{if(at)throw ot}}})}return Be},"findAppropriatePositionForRelativePlacement"),I=o(function(q){var he=0,X=0,fe=0,K=0;if(q.forEach(function(Ne){Ne.left?b[x.get(Ne.left)]-b[x.get(Ne.right)]>=0?he++:X++:T[x.get(Ne.top)]-T[x.get(Ne.bottom)]>=0?fe++:K++}),he>X&&fe>K)for(var qe=0;qe<x.size;qe++)b[qe]=-1*b[qe],T[qe]=-1*T[qe];else if(he>X)for(var _e=0;_e<x.size;_e++)b[_e]=-1*b[_e];else if(fe>K)for(var Be=0;Be<x.size;Be++)T[Be]=-1*T[Be]},"applyReflectionForRelativePlacement"),_=o(function(q){var he=[],X=new d,fe=new Set,K=0;return q.forEach(function(qe,_e){if(!fe.has(_e)){he[K]=[];var Be=_e;for(X.push(Be),fe.add(Be),he[K].push(Be);X.length!=0;){Be=X.shift();var Ne=q.get(Be);Ne.forEach(function(He){fe.has(He.id)||(X.push(He.id),fe.add(He.id),he[K].push(He.id))})}K++}}),he},"findComponents"),A=o(function(q){var he=new Map;return q.forEach(function(X,fe){he.set(fe,[])}),q.forEach(function(X,fe){X.forEach(function(K){he.get(fe).push(K),he.get(K.id).push({id:fe,gap:K.gap,direction:K.direction})})}),he},"dagToUndirected"),M=o(function(q){var he=new Map;return q.forEach(function(X,fe){he.set(fe,[])}),q.forEach(function(X,fe){X.forEach(function(K){he.get(K.id).push({id:fe,gap:K.gap,direction:K.direction})})}),he},"dagToReversed"),D=[],P=[],B=!1,O=!1,$=new Set,V=new Map,G=new Map,z=[];if(y.fixedNodeConstraint&&y.fixedNodeConstraint.forEach(function(ne){$.add(ne.nodeId)}),y.relativePlacementConstraint&&(y.relativePlacementConstraint.forEach(function(ne){ne.left?(V.has(ne.left)?V.get(ne.left).push({id:ne.right,gap:ne.gap,direction:"horizontal"}):V.set(ne.left,[{id:ne.right,gap:ne.gap,direction:"horizontal"}]),V.has(ne.right)||V.set(ne.right,[])):(V.has(ne.top)?V.get(ne.top).push({id:ne.bottom,gap:ne.gap,direction:"vertical"}):V.set(ne.top,[{id:ne.bottom,gap:ne.gap,direction:"vertical"}]),V.has(ne.bottom)||V.set(ne.bottom,[]))}),G=A(V),z=_(G)),h.TRANSFORM_ON_CONSTRAINT_HANDLING){if(y.fixedNodeConstraint&&y.fixedNodeConstraint.length>1)y.fixedNodeConstraint.forEach(function(ne,q){D[q]=[ne.position.x,ne.position.y],P[q]=[b[x.get(ne.nodeId)],T[x.get(ne.nodeId)]]}),B=!0;else if(y.alignmentConstraint)(function(){var ne=0;if(y.alignmentConstraint.vertical){for(var q=y.alignmentConstraint.vertical,he=o(function(Be){var Ne=new Set;q[Be].forEach(function(Xe){Ne.add(Xe)});var He=new Set([].concat(u(Ne)).filter(function(Xe){return $.has(Xe)})),$e=void 0;He.size>0?$e=b[x.get(He.values().next().value)]:$e=L(Ne).x,q[Be].forEach(function(Xe){D[ne]=[$e,T[x.get(Xe)]],P[ne]=[b[x.get(Xe)],T[x.get(Xe)]],ne++})},"_loop2"),X=0;X<q.length;X++)he(X);B=!0}if(y.alignmentConstraint.horizontal){for(var fe=y.alignmentConstraint.horizontal,K=o(function(Be){var Ne=new Set;fe[Be].forEach(function(Xe){Ne.add(Xe)});var He=new Set([].concat(u(Ne)).filter(function(Xe){return $.has(Xe)})),$e=void 0;He.size>0?$e=b[x.get(He.values().next().value)]:$e=L(Ne).y,fe[Be].forEach(function(Xe){D[ne]=[b[x.get(Xe)],$e],P[ne]=[b[x.get(Xe)],T[x.get(Xe)]],ne++})},"_loop3"),qe=0;qe<fe.length;qe++)K(qe);B=!0}y.relativePlacementConstraint&&(O=!0)})();else if(y.relativePlacementConstraint){for(var W=0,H=0,j=0;j<z.length;j++)z[j].length>W&&(W=z[j].length,H=j);if(W<G.size/2)I(y.relativePlacementConstraint),B=!1,O=!1;else{var Q=new Map,U=new Map,oe=[];z[H].forEach(function(ne){V.get(ne).forEach(function(q){q.direction=="horizontal"?(Q.has(ne)?Q.get(ne).push(q):Q.set(ne,[q]),Q.has(q.id)||Q.set(q.id,[]),oe.push({left:ne,right:q.id})):(U.has(ne)?U.get(ne).push(q):U.set(ne,[q]),U.has(q.id)||U.set(q.id,[]),oe.push({top:ne,bottom:q.id}))})}),I(oe),O=!1;var te=N(Q,"horizontal"),le=N(U,"vertical");z[H].forEach(function(ne,q){P[q]=[b[x.get(ne)],T[x.get(ne)]],D[q]=[],te.has(ne)?D[q][0]=te.get(ne):D[q][0]=b[x.get(ne)],le.has(ne)?D[q][1]=le.get(ne):D[q][1]=T[x.get(ne)]}),B=!0}}if(B){for(var ie=void 0,ae=f.transpose(D),Re=f.transpose(P),be=0;be<ae.length;be++)ae[be]=f.multGamma(ae[be]),Re[be]=f.multGamma(Re[be]);var Pe=f.multMat(ae,f.transpose(Re)),Ge=p.svd(Pe);ie=f.multMat(Ge.V,f.transpose(Ge.U));for(var Oe=0;Oe<x.size;Oe++){var ue=[b[Oe],T[Oe]],ye=[ie[0][0],ie[1][0]],ke=[ie[0][1],ie[1][1]];b[Oe]=f.dotProduct(ue,ye),T[Oe]=f.dotProduct(ue,ke)}O&&I(y.relativePlacementConstraint)}}if(h.ENFORCE_CONSTRAINTS){if(y.fixedNodeConstraint&&y.fixedNodeConstraint.length>0){var ce={x:0,y:0};y.fixedNodeConstraint.forEach(function(ne,q){var he={x:b[x.get(ne.nodeId)],y:T[x.get(ne.nodeId)]},X=ne.position,fe=R(X,he);ce.x+=fe.x,ce.y+=fe.y}),ce.x/=y.fixedNodeConstraint.length,ce.y/=y.fixedNodeConstraint.length,b.forEach(function(ne,q){b[q]+=ce.x}),T.forEach(function(ne,q){T[q]+=ce.y}),y.fixedNodeConstraint.forEach(function(ne){b[x.get(ne.nodeId)]=ne.position.x,T[x.get(ne.nodeId)]=ne.position.y})}if(y.alignmentConstraint){if(y.alignmentConstraint.vertical)for(var re=y.alignmentConstraint.vertical,J=o(function(q){var he=new Set;re[q].forEach(function(K){he.add(K)});var X=new Set([].concat(u(he)).filter(function(K){return $.has(K)})),fe=void 0;X.size>0?fe=b[x.get(X.values().next().value)]:fe=L(he).x,he.forEach(function(K){$.has(K)||(b[x.get(K)]=fe)})},"_loop4"),se=0;se<re.length;se++)J(se);if(y.alignmentConstraint.horizontal)for(var ge=y.alignmentConstraint.horizontal,Te=o(function(q){var he=new Set;ge[q].forEach(function(K){he.add(K)});var X=new Set([].concat(u(he)).filter(function(K){return $.has(K)})),fe=void 0;X.size>0?fe=T[x.get(X.values().next().value)]:fe=L(he).y,he.forEach(function(K){$.has(K)||(T[x.get(K)]=fe)})},"_loop5"),we=0;we<ge.length;we++)Te(we)}y.relativePlacementConstraint&&(function(){var ne=new Map,q=new Map,he=new Map,X=new Map,fe=new Map,K=new Map,qe=new Set,_e=new Set;if($.forEach(function(Er){qe.add(Er),_e.add(Er)}),y.alignmentConstraint){if(y.alignmentConstraint.vertical)for(var Be=y.alignmentConstraint.vertical,Ne=o(function(kt){he.set("dummy"+kt,[]),Be[kt].forEach(function(Ct){ne.set(Ct,"dummy"+kt),he.get("dummy"+kt).push(Ct),$.has(Ct)&&qe.add("dummy"+kt)}),fe.set("dummy"+kt,b[x.get(Be[kt][0])])},"_loop6"),He=0;He<Be.length;He++)Ne(He);if(y.alignmentConstraint.horizontal)for(var $e=y.alignmentConstraint.horizontal,Xe=o(function(kt){X.set("dummy"+kt,[]),$e[kt].forEach(function(Ct){q.set(Ct,"dummy"+kt),X.get("dummy"+kt).push(Ct),$.has(Ct)&&_e.add("dummy"+kt)}),K.set("dummy"+kt,T[x.get($e[kt][0])])},"_loop7"),Fe=0;Fe<$e.length;Fe++)Xe(Fe)}var Ke=new Map,xe=new Map,mt=o(function(kt){V.get(kt).forEach(function(Ct){var Ot=void 0,Ft=void 0;Ct.direction=="horizontal"?(Ot=ne.get(kt)?ne.get(kt):kt,ne.get(Ct.id)?Ft={id:ne.get(Ct.id),gap:Ct.gap,direction:Ct.direction}:Ft=Ct,Ke.has(Ot)?Ke.get(Ot).push(Ft):Ke.set(Ot,[Ft]),Ke.has(Ft.id)||Ke.set(Ft.id,[])):(Ot=q.get(kt)?q.get(kt):kt,q.get(Ct.id)?Ft={id:q.get(Ct.id),gap:Ct.gap,direction:Ct.direction}:Ft=Ct,xe.has(Ot)?xe.get(Ot).push(Ft):xe.set(Ot,[Ft]),xe.has(Ft.id)||xe.set(Ft.id,[]))})},"_loop8"),Le=!0,ft=!1,wt=void 0;try{for(var zt=V.keys()[Symbol.iterator](),St;!(Le=(St=zt.next()).done);Le=!0){var At=St.value;mt(At)}}catch(Er){ft=!0,wt=Er}finally{try{!Le&&zt.return&&zt.return()}finally{if(ft)throw wt}}var bt=A(Ke),me=A(xe),lt=_(bt),gt=_(me),Ze=M(Ke),Ee=M(xe),tt=[],at=[];lt.forEach(function(Er,kt){tt[kt]=[],Er.forEach(function(Ct){Ze.get(Ct).length==0&&tt[kt].push(Ct)})}),gt.forEach(function(Er,kt){at[kt]=[],Er.forEach(function(Ct){Ee.get(Ct).length==0&&at[kt].push(Ct)})});var ot=N(Ke,"horizontal",qe,fe,tt),Wt=N(xe,"vertical",_e,K,at),Bt=o(function(kt){he.get(kt)?he.get(kt).forEach(function(Ct){b[x.get(Ct)]=ot.get(kt)}):b[x.get(kt)]=ot.get(kt)},"_loop9"),qt=!0,vr=!1,Tt=void 0;try{for(var De=ot.keys()[Symbol.iterator](),it;!(qt=(it=De.next()).done);qt=!0){var We=it.value;Bt(We)}}catch(Er){vr=!0,Tt=Er}finally{try{!qt&&De.return&&De.return()}finally{if(vr)throw Tt}}var rt=o(function(kt){X.get(kt)?X.get(kt).forEach(function(Ct){T[x.get(Ct)]=Wt.get(kt)}):T[x.get(kt)]=Wt.get(kt)},"_loop10"),yt=!0,Yt=!1,Ht=void 0;try{for(var pr=Wt.keys()[Symbol.iterator](),Hr;!(yt=(Hr=pr.next()).done);yt=!0){var We=Hr.value;rt(We)}}catch(Er){Yt=!0,Ht=Er}finally{try{!yt&&pr.return&&pr.return()}finally{if(Yt)throw Ht}}})()}for(var Me=0;Me<k.length;Me++){var ve=k[Me];ve.getChild()==null&&ve.setCenter(b[x.get(ve.id)],T[x.get(ve.id)])}},a.exports=m}),551:(a=>{a.exports=e})},r={};function n(a){var s=r[a];if(s!==void 0)return s.exports;var l=r[a]={exports:{}};return t[a](l,l.exports,n),l.exports}o(n,"__webpack_require__");var i=n(45);return i})()})});var R9e=Io((nk,Yj)=>{"use strict";o((function(t,r){typeof nk=="object"&&typeof Yj=="object"?Yj.exports=r(Uj()):typeof define=="function"&&define.amd?define(["cose-base"],r):typeof nk=="object"?nk.cytoscapeFcose=r(Uj()):t.cytoscapeFcose=r(t.coseBase)}),"webpackUniversalModuleDefinition")(nk,function(e){return(()=>{"use strict";var t={658:(a=>{a.exports=Object.assign!=null?Object.assign.bind(Object):function(s){for(var l=arguments.length,u=Array(l>1?l-1:0),h=1;h<l;h++)u[h-1]=arguments[h];return u.forEach(function(d){Object.keys(d).forEach(function(f){return s[f]=d[f]})}),s}}),548:((a,s,l)=>{var u=(function(){function f(p,m){var g=[],y=!0,v=!1,x=void 0;try{for(var b=p[Symbol.iterator](),T;!(y=(T=b.next()).done)&&(g.push(T.value),!(m&&g.length===m));y=!0);}catch(k){v=!0,x=k}finally{try{!y&&b.return&&b.return()}finally{if(v)throw x}}return g}return o(f,"sliceIterator"),function(p,m){if(Array.isArray(p))return p;if(Symbol.iterator in Object(p))return f(p,m);throw new TypeError("Invalid attempt to destructure non-iterable instance")}})(),h=l(140).layoutBase.LinkedList,d={};d.getTopMostNodes=function(f){for(var p={},m=0;m<f.length;m++)p[f[m].id()]=!0;var g=f.filter(function(y,v){typeof y=="number"&&(y=v);for(var x=y.parent()[0];x!=null;){if(p[x.id()])return!1;x=x.parent()[0]}return!0});return g},d.connectComponents=function(f,p,m,g){var y=new h,v=new Set,x=[],b=void 0,T=void 0,k=void 0,C=!1,w=1,S=[],R=[],L=o(function(){var I=f.collection();R.push(I);var _=m[0],A=f.collection();A.merge(_).merge(_.descendants().intersection(p)),x.push(_),A.forEach(function(P){y.push(P),v.add(P),I.merge(P)});for(var M=o(function(){_=y.shift();var B=f.collection();_.neighborhood().nodes().forEach(function(G){p.intersection(_.edgesWith(G)).length>0&&B.merge(G)});for(var O=0;O<B.length;O++){var $=B[O];if(b=m.intersection($.union($.ancestors())),b!=null&&!v.has(b[0])){var V=b.union(b.descendants());V.forEach(function(G){y.push(G),v.add(G),I.merge(G),m.has(G)&&x.push(G)})}}},"_loop2");y.length!=0;)M();if(I.forEach(function(P){p.intersection(P.connectedEdges()).forEach(function(B){I.has(B.source())&&I.has(B.target())&&I.merge(B)})}),x.length==m.length&&(C=!0),!C||C&&w>1){T=x[0],k=T.connectedEdges().length,x.forEach(function(P){P.connectedEdges().length<k&&(k=P.connectedEdges().length,T=P)}),S.push(T.id());var D=f.collection();D.merge(x[0]),x.forEach(function(P){D.merge(P)}),x=[],m=m.difference(D),w++}},"_loop");do L();while(!C);return g&&S.length>0&&g.set("dummy"+(g.size+1),S),R},d.relocateComponent=function(f,p,m){if(!m.fixedNodeConstraint){var g=Number.POSITIVE_INFINITY,y=Number.NEGATIVE_INFINITY,v=Number.POSITIVE_INFINITY,x=Number.NEGATIVE_INFINITY;if(m.quality=="draft"){var b=!0,T=!1,k=void 0;try{for(var C=p.nodeIndexes[Symbol.iterator](),w;!(b=(w=C.next()).done);b=!0){var S=w.value,R=u(S,2),L=R[0],N=R[1],I=m.cy.getElementById(L);if(I){var _=I.boundingBox(),A=p.xCoords[N]-_.w/2,M=p.xCoords[N]+_.w/2,D=p.yCoords[N]-_.h/2,P=p.yCoords[N]+_.h/2;A<g&&(g=A),M>y&&(y=M),D<v&&(v=D),P>x&&(x=P)}}}catch(G){T=!0,k=G}finally{try{!b&&C.return&&C.return()}finally{if(T)throw k}}var B=f.x-(y+g)/2,O=f.y-(x+v)/2;p.xCoords=p.xCoords.map(function(G){return G+B}),p.yCoords=p.yCoords.map(function(G){return G+O})}else{Object.keys(p).forEach(function(G){var z=p[G],W=z.getRect().x,H=z.getRect().x+z.getRect().width,j=z.getRect().y,Q=z.getRect().y+z.getRect().height;W<g&&(g=W),H>y&&(y=H),j<v&&(v=j),Q>x&&(x=Q)});var $=f.x-(y+g)/2,V=f.y-(x+v)/2;Object.keys(p).forEach(function(G){var z=p[G];z.setCenter(z.getCenterX()+$,z.getCenterY()+V)})}}},d.calcBoundingBox=function(f,p,m,g){for(var y=Number.MAX_SAFE_INTEGER,v=Number.MIN_SAFE_INTEGER,x=Number.MAX_SAFE_INTEGER,b=Number.MIN_SAFE_INTEGER,T=void 0,k=void 0,C=void 0,w=void 0,S=f.descendants().not(":parent"),R=S.length,L=0;L<R;L++){var N=S[L];T=p[g.get(N.id())]-N.width()/2,k=p[g.get(N.id())]+N.width()/2,C=m[g.get(N.id())]-N.height()/2,w=m[g.get(N.id())]+N.height()/2,y>T&&(y=T),v<k&&(v=k),x>C&&(x=C),b<w&&(b=w)}var I={};return I.topLeftX=y,I.topLeftY=x,I.width=v-y,I.height=b-x,I},d.calcParentsWithoutChildren=function(f,p){var m=f.collection();return p.nodes(":parent").forEach(function(g){var y=!1;g.children().forEach(function(v){v.css("display")!="none"&&(y=!0)}),y||m.merge(g)}),m},a.exports=d}),816:((a,s,l)=>{var u=l(548),h=l(140).CoSELayout,d=l(140).CoSENode,f=l(140).layoutBase.PointD,p=l(140).layoutBase.DimensionD,m=l(140).layoutBase.LayoutConstants,g=l(140).layoutBase.FDLayoutConstants,y=l(140).CoSEConstants,v=o(function(b,T){var k=b.cy,C=b.eles,w=C.nodes(),S=C.edges(),R=void 0,L=void 0,N=void 0,I={};b.randomize&&(R=T.nodeIndexes,L=T.xCoords,N=T.yCoords);var _=o(function(G){return typeof G=="function"},"isFn"),A=o(function(G,z){return _(G)?G(z):G},"optFn"),M=u.calcParentsWithoutChildren(k,C),D=o(function V(G,z,W,H){for(var j=z.length,Q=0;Q<j;Q++){var U=z[Q],oe=null;U.intersection(M).length==0&&(oe=U.children());var te=void 0,le=U.layoutDimensions({nodeDimensionsIncludeLabels:H.nodeDimensionsIncludeLabels});if(U.outerWidth()!=null&&U.outerHeight()!=null)if(H.randomize)if(!U.isParent())te=G.add(new d(W.graphManager,new f(L[R.get(U.id())]-le.w/2,N[R.get(U.id())]-le.h/2),new p(parseFloat(le.w),parseFloat(le.h))));else{var ie=u.calcBoundingBox(U,L,N,R);U.intersection(M).length==0?te=G.add(new d(W.graphManager,new f(ie.topLeftX,ie.topLeftY),new p(ie.width,ie.height))):te=G.add(new d(W.graphManager,new f(ie.topLeftX,ie.topLeftY),new p(parseFloat(le.w),parseFloat(le.h))))}else te=G.add(new d(W.graphManager,new f(U.position("x")-le.w/2,U.position("y")-le.h/2),new p(parseFloat(le.w),parseFloat(le.h))));else te=G.add(new d(this.graphManager));if(te.id=U.data("id"),te.nodeRepulsion=A(H.nodeRepulsion,U),te.paddingLeft=parseInt(U.css("padding")),te.paddingTop=parseInt(U.css("padding")),te.paddingRight=parseInt(U.css("padding")),te.paddingBottom=parseInt(U.css("padding")),H.nodeDimensionsIncludeLabels&&(te.labelWidth=U.boundingBox({includeLabels:!0,includeNodes:!1,includeOverlays:!1}).w,te.labelHeight=U.boundingBox({includeLabels:!0,includeNodes:!1,includeOverlays:!1}).h,te.labelPosVertical=U.css("text-valign"),te.labelPosHorizontal=U.css("text-halign")),I[U.data("id")]=te,isNaN(te.rect.x)&&(te.rect.x=0),isNaN(te.rect.y)&&(te.rect.y=0),oe!=null&&oe.length>0){var ae=void 0;ae=W.getGraphManager().add(W.newGraph(),te),V(ae,oe,W,H)}}},"processChildrenList"),P=o(function(G,z,W){for(var H=0,j=0,Q=0;Q<W.length;Q++){var U=W[Q],oe=I[U.data("source")],te=I[U.data("target")];if(oe&&te&&oe!==te&&oe.getEdgesBetween(te).length==0){var le=z.add(G.newEdge(),oe,te);le.id=U.id(),le.idealLength=A(b.idealEdgeLength,U),le.edgeElasticity=A(b.edgeElasticity,U),H+=le.idealLength,j++}}b.idealEdgeLength!=null&&(j>0?y.DEFAULT_EDGE_LENGTH=g.DEFAULT_EDGE_LENGTH=H/j:_(b.idealEdgeLength)?y.DEFAULT_EDGE_LENGTH=g.DEFAULT_EDGE_LENGTH=50:y.DEFAULT_EDGE_LENGTH=g.DEFAULT_EDGE_LENGTH=b.idealEdgeLength,y.MIN_REPULSION_DIST=g.MIN_REPULSION_DIST=g.DEFAULT_EDGE_LENGTH/10,y.DEFAULT_RADIAL_SEPARATION=g.DEFAULT_EDGE_LENGTH)},"processEdges"),B=o(function(G,z){z.fixedNodeConstraint&&(G.constraints.fixedNodeConstraint=z.fixedNodeConstraint),z.alignmentConstraint&&(G.constraints.alignmentConstraint=z.alignmentConstraint),z.relativePlacementConstraint&&(G.constraints.relativePlacementConstraint=z.relativePlacementConstraint)},"processConstraints");b.nestingFactor!=null&&(y.PER_LEVEL_IDEAL_EDGE_LENGTH_FACTOR=g.PER_LEVEL_IDEAL_EDGE_LENGTH_FACTOR=b.nestingFactor),b.gravity!=null&&(y.DEFAULT_GRAVITY_STRENGTH=g.DEFAULT_GRAVITY_STRENGTH=b.gravity),b.numIter!=null&&(y.MAX_ITERATIONS=g.MAX_ITERATIONS=b.numIter),b.gravityRange!=null&&(y.DEFAULT_GRAVITY_RANGE_FACTOR=g.DEFAULT_GRAVITY_RANGE_FACTOR=b.gravityRange),b.gravityCompound!=null&&(y.DEFAULT_COMPOUND_GRAVITY_STRENGTH=g.DEFAULT_COMPOUND_GRAVITY_STRENGTH=b.gravityCompound),b.gravityRangeCompound!=null&&(y.DEFAULT_COMPOUND_GRAVITY_RANGE_FACTOR=g.DEFAULT_COMPOUND_GRAVITY_RANGE_FACTOR=b.gravityRangeCompound),b.initialEnergyOnIncremental!=null&&(y.DEFAULT_COOLING_FACTOR_INCREMENTAL=g.DEFAULT_COOLING_FACTOR_INCREMENTAL=b.initialEnergyOnIncremental),b.tilingCompareBy!=null&&(y.TILING_COMPARE_BY=b.tilingCompareBy),b.quality=="proof"?m.QUALITY=2:m.QUALITY=0,y.NODE_DIMENSIONS_INCLUDE_LABELS=g.NODE_DIMENSIONS_INCLUDE_LABELS=m.NODE_DIMENSIONS_INCLUDE_LABELS=b.nodeDimensionsIncludeLabels,y.DEFAULT_INCREMENTAL=g.DEFAULT_INCREMENTAL=m.DEFAULT_INCREMENTAL=!b.randomize,y.ANIMATE=g.ANIMATE=m.ANIMATE=b.animate,y.TILE=b.tile,y.TILING_PADDING_VERTICAL=typeof b.tilingPaddingVertical=="function"?b.tilingPaddingVertical.call():b.tilingPaddingVertical,y.TILING_PADDING_HORIZONTAL=typeof b.tilingPaddingHorizontal=="function"?b.tilingPaddingHorizontal.call():b.tilingPaddingHorizontal,y.DEFAULT_INCREMENTAL=g.DEFAULT_INCREMENTAL=m.DEFAULT_INCREMENTAL=!0,y.PURE_INCREMENTAL=!b.randomize,m.DEFAULT_UNIFORM_LEAF_NODE_SIZES=b.uniformNodeDimensions,b.step=="transformed"&&(y.TRANSFORM_ON_CONSTRAINT_HANDLING=!0,y.ENFORCE_CONSTRAINTS=!1,y.APPLY_LAYOUT=!1),b.step=="enforced"&&(y.TRANSFORM_ON_CONSTRAINT_HANDLING=!1,y.ENFORCE_CONSTRAINTS=!0,y.APPLY_LAYOUT=!1),b.step=="cose"&&(y.TRANSFORM_ON_CONSTRAINT_HANDLING=!1,y.ENFORCE_CONSTRAINTS=!1,y.APPLY_LAYOUT=!0),b.step=="all"&&(b.randomize?y.TRANSFORM_ON_CONSTRAINT_HANDLING=!0:y.TRANSFORM_ON_CONSTRAINT_HANDLING=!1,y.ENFORCE_CONSTRAINTS=!0,y.APPLY_LAYOUT=!0),b.fixedNodeConstraint||b.alignmentConstraint||b.relativePlacementConstraint?y.TREE_REDUCTION_ON_INCREMENTAL=!1:y.TREE_REDUCTION_ON_INCREMENTAL=!0;var O=new h,$=O.newGraphManager();return D($.addRoot(),u.getTopMostNodes(w),O,b),P(O,$,S),B(O,b),O.runLayout(),I},"coseLayout");a.exports={coseLayout:v}}),212:((a,s,l)=>{var u=(function(){function b(T,k){for(var C=0;C<k.length;C++){var w=k[C];w.enumerable=w.enumerable||!1,w.configurable=!0,"value"in w&&(w.writable=!0),Object.defineProperty(T,w.key,w)}}return o(b,"defineProperties"),function(T,k,C){return k&&b(T.prototype,k),C&&b(T,C),T}})();function h(b,T){if(!(b instanceof T))throw new TypeError("Cannot call a class as a function")}o(h,"_classCallCheck");var d=l(658),f=l(548),p=l(657),m=p.spectralLayout,g=l(816),y=g.coseLayout,v=Object.freeze({quality:"default",randomize:!0,animate:!0,animationDuration:1e3,animationEasing:void 0,fit:!0,padding:30,nodeDimensionsIncludeLabels:!1,uniformNodeDimensions:!1,packComponents:!0,step:"all",samplingType:!0,sampleSize:25,nodeSeparation:75,piTol:1e-7,nodeRepulsion:o(function(T){return 4500},"nodeRepulsion"),idealEdgeLength:o(function(T){return 50},"idealEdgeLength"),edgeElasticity:o(function(T){return .45},"edgeElasticity"),nestingFactor:.1,gravity:.25,numIter:2500,tile:!0,tilingCompareBy:void 0,tilingPaddingVertical:10,tilingPaddingHorizontal:10,gravityRangeCompound:1.5,gravityCompound:1,gravityRange:3.8,initialEnergyOnIncremental:.3,fixedNodeConstraint:void 0,alignmentConstraint:void 0,relativePlacementConstraint:void 0,ready:o(function(){},"ready"),stop:o(function(){},"stop")}),x=(function(){function b(T){h(this,b),this.options=d({},v,T)}return o(b,"Layout"),u(b,[{key:"run",value:o(function(){var k=this,C=this.options,w=C.cy,S=C.eles,R=[],L=void 0,N=void 0,I=[],_=void 0,A=[];C.fixedNodeConstraint&&(!Array.isArray(C.fixedNodeConstraint)||C.fixedNodeConstraint.length==0)&&(C.fixedNodeConstraint=void 0),C.alignmentConstraint&&(C.alignmentConstraint.vertical&&(!Array.isArray(C.alignmentConstraint.vertical)||C.alignmentConstraint.vertical.length==0)&&(C.alignmentConstraint.vertical=void 0),C.alignmentConstraint.horizontal&&(!Array.isArray(C.alignmentConstraint.horizontal)||C.alignmentConstraint.horizontal.length==0)&&(C.alignmentConstraint.horizontal=void 0)),C.relativePlacementConstraint&&(!Array.isArray(C.relativePlacementConstraint)||C.relativePlacementConstraint.length==0)&&(C.relativePlacementConstraint=void 0);var M=C.fixedNodeConstraint||C.alignmentConstraint||C.relativePlacementConstraint;M&&(C.tile=!1,C.packComponents=!1);var D=void 0,P=!1;if(w.layoutUtilities&&C.packComponents&&(D=w.layoutUtilities("get"),D||(D=w.layoutUtilities()),P=!0),S.nodes().length>0)if(P){var $=f.getTopMostNodes(C.eles.nodes());if(_=f.connectComponents(w,C.eles,$),_.forEach(function(Oe){var ue=Oe.boundingBox();A.push({x:ue.x1+ue.w/2,y:ue.y1+ue.h/2})}),C.randomize&&_.forEach(function(Oe){C.eles=Oe,R.push(m(C))}),C.quality=="default"||C.quality=="proof"){var V=w.collection();if(C.tile){var G=new Map,z=[],W=[],H=0,j={nodeIndexes:G,xCoords:z,yCoords:W},Q=[];if(_.forEach(function(Oe,ue){Oe.edges().length==0&&(Oe.nodes().forEach(function(ye,ke){V.merge(Oe.nodes()[ke]),ye.isParent()||(j.nodeIndexes.set(Oe.nodes()[ke].id(),H++),j.xCoords.push(Oe.nodes()[0].position().x),j.yCoords.push(Oe.nodes()[0].position().y))}),Q.push(ue))}),V.length>1){var U=V.boundingBox();A.push({x:U.x1+U.w/2,y:U.y1+U.h/2}),_.push(V),R.push(j);for(var oe=Q.length-1;oe>=0;oe--)_.splice(Q[oe],1),R.splice(Q[oe],1),A.splice(Q[oe],1)}}_.forEach(function(Oe,ue){C.eles=Oe,I.push(y(C,R[ue])),f.relocateComponent(A[ue],I[ue],C)})}else _.forEach(function(Oe,ue){f.relocateComponent(A[ue],R[ue],C)});var te=new Set;if(_.length>1){var le=[],ie=S.filter(function(Oe){return Oe.css("display")=="none"});_.forEach(function(Oe,ue){var ye=void 0;if(C.quality=="draft"&&(ye=R[ue].nodeIndexes),Oe.nodes().not(ie).length>0){var ke={};ke.edges=[],ke.nodes=[];var ce=void 0;Oe.nodes().not(ie).forEach(function(re){if(C.quality=="draft")if(!re.isParent())ce=ye.get(re.id()),ke.nodes.push({x:R[ue].xCoords[ce]-re.boundingbox().w/2,y:R[ue].yCoords[ce]-re.boundingbox().h/2,width:re.boundingbox().w,height:re.boundingbox().h});else{var J=f.calcBoundingBox(re,R[ue].xCoords,R[ue].yCoords,ye);ke.nodes.push({x:J.topLeftX,y:J.topLeftY,width:J.width,height:J.height})}else I[ue][re.id()]&&ke.nodes.push({x:I[ue][re.id()].getLeft(),y:I[ue][re.id()].getTop(),width:I[ue][re.id()].getWidth(),height:I[ue][re.id()].getHeight()})}),Oe.edges().forEach(function(re){var J=re.source(),se=re.target();if(J.css("display")!="none"&&se.css("display")!="none")if(C.quality=="draft"){var ge=ye.get(J.id()),Te=ye.get(se.id()),we=[],Me=[];if(J.isParent()){var ve=f.calcBoundingBox(J,R[ue].xCoords,R[ue].yCoords,ye);we.push(ve.topLeftX+ve.width/2),we.push(ve.topLeftY+ve.height/2)}else we.push(R[ue].xCoords[ge]),we.push(R[ue].yCoords[ge]);if(se.isParent()){var ne=f.calcBoundingBox(se,R[ue].xCoords,R[ue].yCoords,ye);Me.push(ne.topLeftX+ne.width/2),Me.push(ne.topLeftY+ne.height/2)}else Me.push(R[ue].xCoords[Te]),Me.push(R[ue].yCoords[Te]);ke.edges.push({startX:we[0],startY:we[1],endX:Me[0],endY:Me[1]})}else I[ue][J.id()]&&I[ue][se.id()]&&ke.edges.push({startX:I[ue][J.id()].getCenterX(),startY:I[ue][J.id()].getCenterY(),endX:I[ue][se.id()].getCenterX(),endY:I[ue][se.id()].getCenterY()})}),ke.nodes.length>0&&(le.push(ke),te.add(ue))}});var ae=D.packComponents(le,C.randomize).shifts;if(C.quality=="draft")R.forEach(function(Oe,ue){var ye=Oe.xCoords.map(function(ce){return ce+ae[ue].dx}),ke=Oe.yCoords.map(function(ce){return ce+ae[ue].dy});Oe.xCoords=ye,Oe.yCoords=ke});else{var Re=0;te.forEach(function(Oe){Object.keys(I[Oe]).forEach(function(ue){var ye=I[Oe][ue];ye.setCenter(ye.getCenterX()+ae[Re].dx,ye.getCenterY()+ae[Re].dy)}),Re++})}}}else{var B=C.eles.boundingBox();if(A.push({x:B.x1+B.w/2,y:B.y1+B.h/2}),C.randomize){var O=m(C);R.push(O)}C.quality=="default"||C.quality=="proof"?(I.push(y(C,R[0])),f.relocateComponent(A[0],I[0],C)):f.relocateComponent(A[0],R[0],C)}var be=o(function(ue,ye){if(C.quality=="default"||C.quality=="proof"){typeof ue=="number"&&(ue=ye);var ke=void 0,ce=void 0,re=ue.data("id");return I.forEach(function(se){re in se&&(ke={x:se[re].getRect().getCenterX(),y:se[re].getRect().getCenterY()},ce=se[re])}),C.nodeDimensionsIncludeLabels&&(ce.labelWidth&&(ce.labelPosHorizontal=="left"?ke.x+=ce.labelWidth/2:ce.labelPosHorizontal=="right"&&(ke.x-=ce.labelWidth/2)),ce.labelHeight&&(ce.labelPosVertical=="top"?ke.y+=ce.labelHeight/2:ce.labelPosVertical=="bottom"&&(ke.y-=ce.labelHeight/2))),ke==null&&(ke={x:ue.position("x"),y:ue.position("y")}),{x:ke.x,y:ke.y}}else{var J=void 0;return R.forEach(function(se){var ge=se.nodeIndexes.get(ue.id());ge!=null&&(J={x:se.xCoords[ge],y:se.yCoords[ge]})}),J==null&&(J={x:ue.position("x"),y:ue.position("y")}),{x:J.x,y:J.y}}},"getPositions");if(C.quality=="default"||C.quality=="proof"||C.randomize){var Pe=f.calcParentsWithoutChildren(w,S),Ge=S.filter(function(Oe){return Oe.css("display")=="none"});C.eles=S.not(Ge),S.nodes().not(":parent").not(Ge).layoutPositions(k,C,be),Pe.length>0&&Pe.forEach(function(Oe){Oe.position(be(Oe))})}else console.log("If randomize option is set to false, then quality option must be 'default' or 'proof'.")},"run")}]),b})();a.exports=x}),657:((a,s,l)=>{var u=l(548),h=l(140).layoutBase.Matrix,d=l(140).layoutBase.SVD,f=o(function(m){var g=m.cy,y=m.eles,v=y.nodes(),x=y.nodes(":parent"),b=new Map,T=new Map,k=new Map,C=[],w=[],S=[],R=[],L=[],N=[],I=[],_=[],A=void 0,M=void 0,D=1e8,P=1e-9,B=m.piTol,O=m.samplingType,$=m.nodeSeparation,V=void 0,G=o(function(){for(var he=0,X=0,fe=!1;X<V;){he=Math.floor(Math.random()*M),fe=!1;for(var K=0;K<X;K++)if(R[K]==he){fe=!0;break}if(!fe)R[X]=he,X++;else continue}},"randomSampleCR"),z=o(function(he,X,fe){for(var K=[],qe=0,_e=0,Be=0,Ne=void 0,He=[],$e=0,Xe=1,Fe=0;Fe<M;Fe++)He[Fe]=D;for(K[_e]=he,He[he]=0;_e>=qe;){Be=K[qe++];for(var Ke=C[Be],xe=0;xe<Ke.length;xe++)Ne=T.get(Ke[xe]),He[Ne]==D&&(He[Ne]=He[Be]+1,K[++_e]=Ne);N[Be][X]=He[Be]*$}if(fe){for(var mt=0;mt<M;mt++)N[mt][X]<L[mt]&&(L[mt]=N[mt][X]);for(var Le=0;Le<M;Le++)L[Le]>$e&&($e=L[Le],Xe=Le)}return Xe},"BFS"),W=o(function(he){var X=void 0;if(he){X=Math.floor(Math.random()*M),A=X;for(var K=0;K<M;K++)L[K]=D;for(var qe=0;qe<V;qe++)R[qe]=X,X=z(X,qe,he)}else{G();for(var fe=0;fe<V;fe++)z(R[fe],fe,he,!1)}for(var _e=0;_e<M;_e++)for(var Be=0;Be<V;Be++)N[_e][Be]*=N[_e][Be];for(var Ne=0;Ne<V;Ne++)I[Ne]=[];for(var He=0;He<V;He++)for(var $e=0;$e<V;$e++)I[He][$e]=N[R[$e]][He]},"allBFS"),H=o(function(){for(var he=d.svd(I),X=he.S,fe=he.U,K=he.V,qe=X[0]*X[0]*X[0],_e=[],Be=0;Be<V;Be++){_e[Be]=[];for(var Ne=0;Ne<V;Ne++)_e[Be][Ne]=0,Be==Ne&&(_e[Be][Ne]=X[Be]/(X[Be]*X[Be]+qe/(X[Be]*X[Be])))}_=h.multMat(h.multMat(K,_e),h.transpose(fe))},"sample"),j=o(function(){for(var he=void 0,X=void 0,fe=[],K=[],qe=[],_e=[],Be=0;Be<M;Be++)fe[Be]=Math.random(),K[Be]=Math.random();fe=h.normalize(fe),K=h.normalize(K);for(var Ne=0,He=P,$e=P,Xe=void 0;;){Ne++;for(var Fe=0;Fe<M;Fe++)qe[Fe]=fe[Fe];if(fe=h.multGamma(h.multL(h.multGamma(qe),N,_)),he=h.dotProduct(qe,fe),fe=h.normalize(fe),He=h.dotProduct(qe,fe),Xe=Math.abs(He/$e),Xe<=1+B&&Xe>=1)break;$e=He}for(var Ke=0;Ke<M;Ke++)qe[Ke]=fe[Ke];for(Ne=0,$e=P;;){Ne++;for(var xe=0;xe<M;xe++)_e[xe]=K[xe];if(_e=h.minusOp(_e,h.multCons(qe,h.dotProduct(qe,_e))),K=h.multGamma(h.multL(h.multGamma(_e),N,_)),X=h.dotProduct(_e,K),K=h.normalize(K),He=h.dotProduct(_e,K),Xe=Math.abs(He/$e),Xe<=1+B&&Xe>=1)break;$e=He}for(var mt=0;mt<M;mt++)_e[mt]=K[mt];w=h.multCons(qe,Math.sqrt(Math.abs(he))),S=h.multCons(_e,Math.sqrt(Math.abs(X)))},"powerIteration");u.connectComponents(g,y,u.getTopMostNodes(v),b),x.forEach(function(q){u.connectComponents(g,y,u.getTopMostNodes(q.descendants().intersection(y)),b)});for(var Q=0,U=0;U<v.length;U++)v[U].isParent()||T.set(v[U].id(),Q++);var oe=!0,te=!1,le=void 0;try{for(var ie=b.keys()[Symbol.iterator](),ae;!(oe=(ae=ie.next()).done);oe=!0){var Re=ae.value;T.set(Re,Q++)}}catch(q){te=!0,le=q}finally{try{!oe&&ie.return&&ie.return()}finally{if(te)throw le}}for(var be=0;be<T.size;be++)C[be]=[];x.forEach(function(q){for(var he=q.children().intersection(y);he.nodes(":childless").length==0;)he=he.nodes()[0].children().intersection(y);var X=0,fe=he.nodes(":childless")[0].connectedEdges().length;he.nodes(":childless").forEach(function(K,qe){K.connectedEdges().length<fe&&(fe=K.connectedEdges().length,X=qe)}),k.set(q.id(),he.nodes(":childless")[X].id())}),v.forEach(function(q){var he=void 0;q.isParent()?he=T.get(k.get(q.id())):he=T.get(q.id()),q.neighborhood().nodes().forEach(function(X){y.intersection(q.edgesWith(X)).length>0&&(X.isParent()?C[he].push(k.get(X.id())):C[he].push(X.id()))})});var Pe=o(function(he){var X=T.get(he),fe=void 0;b.get(he).forEach(function(K){g.getElementById(K).isParent()?fe=k.get(K):fe=K,C[X].push(fe),C[T.get(fe)].push(he)})},"_loop"),Ge=!0,Oe=!1,ue=void 0;try{for(var ye=b.keys()[Symbol.iterator](),ke;!(Ge=(ke=ye.next()).done);Ge=!0){var ce=ke.value;Pe(ce)}}catch(q){Oe=!0,ue=q}finally{try{!Ge&&ye.return&&ye.return()}finally{if(Oe)throw ue}}M=T.size;var re=void 0;if(M>2){V=M<m.sampleSize?M:m.sampleSize;for(var J=0;J<M;J++)N[J]=[];for(var se=0;se<V;se++)_[se]=[];return m.quality=="draft"||m.step=="all"?(W(O),H(),j(),re={nodeIndexes:T,xCoords:w,yCoords:S}):(T.forEach(function(q,he){w.push(g.getElementById(he).position("x")),S.push(g.getElementById(he).position("y"))}),re={nodeIndexes:T,xCoords:w,yCoords:S}),re}else{var ge=T.keys(),Te=g.getElementById(ge.next().value),we=Te.position(),Me=Te.outerWidth();if(w.push(we.x),S.push(we.y),M==2){var ve=g.getElementById(ge.next().value),ne=ve.outerWidth();w.push(we.x+Me/2+ne/2+m.idealEdgeLength),S.push(we.y)}return re={nodeIndexes:T,xCoords:w,yCoords:S},re}},"spectralLayout");a.exports={spectralLayout:f}}),579:((a,s,l)=>{var u=l(212),h=o(function(f){f&&f("layout","fcose",u)},"register");typeof cytoscape<"u"&&h(cytoscape),a.exports=h}),140:(a=>{a.exports=e})},r={};function n(a){var s=r[a];if(s!==void 0)return s.exports;var l=r[a]={exports:{}};return t[a](l,l.exports,n),l.exports}o(n,"__webpack_require__");var i=n(579);return i})()})});function jj(e,t){if(e===0)return t();let r=Math.random,n=e>>>0;Math.random=function(){n=n+1831565813>>>0;let i=n;return i=Math.imul(i^i>>>15,i|1),i^=i+Math.imul(i^i>>>7,i|61),((i^i>>>14)>>>0)/4294967296};try{return t()}finally{Math.random=r}}var _9e=F(()=>{"use strict";o(jj,"withSeededRandom")});var gx,M0,Xj=F(()=>{"use strict";Vl();gx=o(e=>`<g><rect width="80" height="80" style="fill: #087ebf; stroke-width: 0px;"/>${e}</g>`,"wrapIcon"),M0={prefix:"mermaid-architecture",height:80,width:80,icons:{database:{body:gx('<path id="b" data-name="4" d="m20,57.86c0,3.94,8.95,7.14,20,7.14s20-3.2,20-7.14" style="fill: none; stroke: #fff; stroke-miterlimit: 10; stroke-width: 2px;"/><path id="c" data-name="3" d="m20,45.95c0,3.94,8.95,7.14,20,7.14s20-3.2,20-7.14" style="fill: none; stroke: #fff; stroke-miterlimit: 10; stroke-width: 2px;"/><path id="d" data-name="2" d="m20,34.05c0,3.94,8.95,7.14,20,7.14s20-3.2,20-7.14" style="fill: none; stroke: #fff; stroke-miterlimit: 10; stroke-width: 2px;"/><ellipse id="e" data-name="1" cx="40" cy="22.14" rx="20" ry="7.14" style="fill: none; stroke: #fff; stroke-miterlimit: 10; stroke-width: 2px;"/><line x1="20" y1="57.86" x2="20" y2="22.14" style="fill: none; stroke: #fff; stroke-miterlimit: 10; stroke-width: 2px;"/><line x1="60" y1="57.86" x2="60" y2="22.14" style="fill: none; stroke: #fff; stroke-miterlimit: 10; stroke-width: 2px;"/>')},server:{body:gx('<rect x="17.5" y="17.5" width="45" height="45" rx="2" ry="2" style="fill: none; stroke: #fff; stroke-miterlimit: 10; stroke-width: 2px;"/><line x1="17.5" y1="32.5" x2="62.5" y2="32.5" style="fill: none; stroke: #fff; stroke-miterlimit: 10; stroke-width: 2px;"/><line x1="17.5" y1="47.5" x2="62.5" y2="47.5" style="fill: none; stroke: #fff; stroke-miterlimit: 10; stroke-width: 2px;"/><g><path d="m56.25,25c0,.27-.45.5-1,.5h-10.5c-.55,0-1-.23-1-.5s.45-.5,1-.5h10.5c.55,0,1,.23,1,.5Z" style="fill: #fff; stroke-width: 0px;"/><path d="m56.25,25c0,.27-.45.5-1,.5h-10.5c-.55,0-1-.23-1-.5s.45-.5,1-.5h10.5c.55,0,1,.23,1,.5Z" style="fill: none; stroke: #fff; stroke-miterlimit: 10;"/></g><g><path d="m56.25,40c0,.27-.45.5-1,.5h-10.5c-.55,0-1-.23-1-.5s.45-.5,1-.5h10.5c.55,0,1,.23,1,.5Z" style="fill: #fff; stroke-width: 0px;"/><path d="m56.25,40c0,.27-.45.5-1,.5h-10.5c-.55,0-1-.23-1-.5s.45-.5,1-.5h10.5c.55,0,1,.23,1,.5Z" style="fill: none; stroke: #fff; stroke-miterlimit: 10;"/></g><g><path d="m56.25,55c0,.27-.45.5-1,.5h-10.5c-.55,0-1-.23-1-.5s.45-.5,1-.5h10.5c.55,0,1,.23,1,.5Z" style="fill: #fff; stroke-width: 0px;"/><path d="m56.25,55c0,.27-.45.5-1,.5h-10.5c-.55,0-1-.23-1-.5s.45-.5,1-.5h10.5c.55,0,1,.23,1,.5Z" style="fill: none; stroke: #fff; stroke-miterlimit: 10;"/></g><g><circle cx="32.5" cy="25" r=".75" style="fill: #fff; stroke: #fff; stroke-miterlimit: 10;"/><circle cx="27.5" cy="25" r=".75" style="fill: #fff; stroke: #fff; stroke-miterlimit: 10;"/><circle cx="22.5" cy="25" r=".75" style="fill: #fff; stroke: #fff; stroke-miterlimit: 10;"/></g><g><circle cx="32.5" cy="40" r=".75" style="fill: #fff; stroke: #fff; stroke-miterlimit: 10;"/><circle cx="27.5" cy="40" r=".75" style="fill: #fff; stroke: #fff; stroke-miterlimit: 10;"/><circle cx="22.5" cy="40" r=".75" style="fill: #fff; stroke: #fff; stroke-miterlimit: 10;"/></g><g><circle cx="32.5" cy="55" r=".75" style="fill: #fff; stroke: #fff; stroke-miterlimit: 10;"/><circle cx="27.5" cy="55" r=".75" style="fill: #fff; stroke: #fff; stroke-miterlimit: 10;"/><circle cx="22.5" cy="55" r=".75" style="fill: #fff; stroke: #fff; stroke-miterlimit: 10;"/></g>')},disk:{body:gx('<rect x="20" y="15" width="40" height="50" rx="1" ry="1" style="fill: none; stroke: #fff; stroke-miterlimit: 10; stroke-width: 2px;"/><ellipse cx="24" cy="19.17" rx=".8" ry=".83" style="fill: none; stroke: #fff; stroke-miterlimit: 10; stroke-width: 2px;"/><ellipse cx="56" cy="19.17" rx=".8" ry=".83" style="fill: none; stroke: #fff; stroke-miterlimit: 10; stroke-width: 2px;"/><ellipse cx="24" cy="60.83" rx=".8" ry=".83" style="fill: none; stroke: #fff; stroke-miterlimit: 10; stroke-width: 2px;"/><ellipse cx="56" cy="60.83" rx=".8" ry=".83" style="fill: none; stroke: #fff; stroke-miterlimit: 10; stroke-width: 2px;"/><ellipse cx="40" cy="33.75" rx="14" ry="14.58" style="fill: none; stroke: #fff; stroke-miterlimit: 10; stroke-width: 2px;"/><ellipse cx="40" cy="33.75" rx="4" ry="4.17" style="fill: #fff; stroke: #fff; stroke-miterlimit: 10; stroke-width: 2px;"/><path d="m37.51,42.52l-4.83,13.22c-.26.71-1.1,1.02-1.76.64l-4.18-2.42c-.66-.38-.81-1.26-.33-1.84l9.01-10.8c.88-1.05,2.56-.08,2.09,1.2Z" style="fill: #fff; stroke-width: 0px;"/>')},internet:{body:gx('<circle cx="40" cy="40" r="22.5" style="fill: none; stroke: #fff; stroke-miterlimit: 10; stroke-width: 2px;"/><line x1="40" y1="17.5" x2="40" y2="62.5" style="fill: none; stroke: #fff; stroke-miterlimit: 10; stroke-width: 2px;"/><line x1="17.5" y1="40" x2="62.5" y2="40" style="fill: none; stroke: #fff; stroke-miterlimit: 10; stroke-width: 2px;"/><path d="m39.99,17.51c-15.28,11.1-15.28,33.88,0,44.98" style="fill: none; stroke: #fff; stroke-miterlimit: 10; stroke-width: 2px;"/><path d="m40.01,17.51c15.28,11.1,15.28,33.88,0,44.98" style="fill: none; stroke: #fff; stroke-miterlimit: 10; stroke-width: 2px;"/><line x1="19.75" y1="30.1" x2="60.25" y2="30.1" style="fill: none; stroke: #fff; stroke-miterlimit: 10; stroke-width: 2px;"/><line x1="19.75" y1="49.9" x2="60.25" y2="49.9" style="fill: none; stroke: #fff; stroke-miterlimit: 10; stroke-width: 2px;"/>')},cloud:{body:gx('<path d="m65,47.5c0,2.76-2.24,5-5,5H20c-2.76,0-5-2.24-5-5,0-1.87,1.03-3.51,2.56-4.36-.04-.21-.06-.42-.06-.64,0-2.6,2.48-4.74,5.65-4.97,1.65-4.51,6.34-7.76,11.85-7.76.86,0,1.69.08,2.5.23,2.09-1.57,4.69-2.5,7.5-2.5,6.1,0,11.19,4.38,12.28,10.17,2.14.56,3.72,2.51,3.72,4.83,0,.03,0,.07-.01.1,2.29.46,4.01,2.48,4.01,4.9Z" style="fill: none; stroke: #fff; stroke-miterlimit: 10; stroke-width: 2px;"/>')},unknown:u8,blank:{body:gx("")}}}});var L9e,D9e,I9e,M9e,N9e=F(()=>{"use strict";Xt();Ls();Vl();Vr();Xj();iD();Qt();L9e=o(async function(e,t,r,n){let i=r.getConfigField("padding"),a=r.getConfigField("iconSize"),s=a/2,l=a/6,u=l/2;await Promise.all(t.edges().map(async h=>{let{source:d,sourceDir:f,sourceArrow:p,sourceGroup:m,target:g,targetDir:y,targetArrow:v,targetGroup:x,label:b}=nD(h),{x:T,y:k}=h[0].sourceEndpoint(),{x:C,y:w}=h[0].midpoint(),{x:S,y:R}=h[0].targetEndpoint(),L=i+4;if(m&&(ms(f)?T+=f==="L"?-L:L:k+=f==="T"?-L:L+18),x&&(ms(y)?S+=y==="L"?-L:L:R+=y==="T"?-L:L+18),!m&&r.getNode(d)?.type==="junction"&&(ms(f)?T+=f==="L"?s:-s:k+=f==="T"?s:-s),!x&&r.getNode(g)?.type==="junction"&&(ms(y)?S+=y==="L"?s:-s:R+=y==="T"?s:-s),h[0]._private.rscratch){let N=e.insert("g");if(N.insert("path").attr("d",`M ${T},${k} L ${C},${w} L${S},${R} `).attr("class","edge").attr("id",`${n}-${eu(d,g,{prefix:"L"})}`),p){let I=ms(f)?Qw[f](T,l):T-u,_=Yu(f)?Qw[f](k,l):k-u;N.insert("polygon").attr("points",Fj[f](l)).attr("transform",`translate(${I},${_})`).attr("class","arrow")}if(v){let I=ms(y)?Qw[y](S,l):S-u,_=Yu(y)?Qw[y](R,l):R-u;N.insert("polygon").attr("points",Fj[y](l)).attr("transform",`translate(${I},${_})`).attr("class","arrow")}if(b){let I=Jw(f,y)?"XY":ms(f)?"X":"Y",_=0;I==="X"?_=Math.abs(T-S):I==="Y"?_=Math.abs(k-R)/1.5:_=Math.abs(T-S)/2;let A=N.append("g");if(await Pn(A,b,{useHtmlLabels:!1,width:_,classes:"architecture-service-label"},Ae()),A.attr("dy","1em").attr("alignment-baseline","middle").attr("dominant-baseline","middle").attr("text-anchor","middle"),I==="X")A.attr("transform","translate("+C+", "+w+")");else if(I==="Y")A.attr("transform","translate("+C+", "+w+") rotate(-90)");else if(I==="XY"){let M=ek(f,y);if(M&&x9e(M)){let D=A.node().getBoundingClientRect(),[P,B]=T9e(M);A.attr("dominant-baseline","auto").attr("transform",`rotate(${-1*P*B*45})`);let O=A.node().getBoundingClientRect();A.attr("transform",`
+                translate(${C}, ${w-D.height/2})
+                translate(${P*O.width/2}, ${B*O.height/2})
+                rotate(${-1*P*B*45}, 0, ${D.height/2})
+              `)}}}}}))},"drawEdges"),D9e=o(async function(e,t,r,n){let a=r.getConfigField("padding")*.75,s=r.getConfigField("fontSize"),u=r.getConfigField("iconSize")/2;await Promise.all(t.nodes().map(async h=>{let d=Dp(h);if(d.type==="group"){let{h:f,w:p,x1:m,y1:g}=h.boundingBox(),y=e.append("rect");y.attr("id",`${n}-group-${d.id}`).attr("x",m+u).attr("y",g+u).attr("width",p).attr("height",f).attr("class","node-bkg");let v=e.append("g"),x=m,b=g;if(d.icon){let T=v.append("g");T.html(`<g>${await ts(d.icon,{height:a,width:a,fallbackPrefix:M0.prefix})}</g>`),T.attr("transform","translate("+(x+u+1)+", "+(b+u+1)+")"),x+=a,b+=s/2-1-2}if(d.label){let T=v.append("g");await Pn(T,d.label,{useHtmlLabels:!1,width:p,classes:"architecture-service-label"},Ae()),T.attr("dy","1em").attr("alignment-baseline","middle").attr("dominant-baseline","start").attr("text-anchor","start"),T.attr("transform","translate("+(x+u+4)+", "+(b+u+2)+")")}r.setElementForId(d.id,y)}}))},"drawGroups"),I9e=o(async function(e,t,r,n){let i=Ae();for(let a of r){let s=t.append("g"),l=e.getConfigField("iconSize");if(a.title){let f=s.append("g");await Pn(f,a.title,{useHtmlLabels:!1,width:l*1.5,classes:"architecture-service-label"},i),f.attr("dy","1em").attr("alignment-baseline","middle").attr("dominant-baseline","middle").attr("text-anchor","middle"),f.attr("transform","translate("+l/2+", "+l+")")}let u=s.append("g");if(a.icon)u.html(`<g>${await ts(a.icon,{height:l,width:l,fallbackPrefix:M0.prefix})}</g>`);else if(a.iconText){u.html(`<g>${await ts("blank",{height:l,width:l,fallbackPrefix:M0.prefix})}</g>`);let m=u.append("g").append("foreignObject").attr("width",l).attr("height",l).append("div").attr("class","node-icon-text").attr("style",`height: ${l}px;`).append("div").html(mr(a.iconText,i)),g=parseInt(window.getComputedStyle(m.node(),null).getPropertyValue("font-size").replace(/\D/g,""))??16;m.attr("style",`-webkit-line-clamp: ${Math.floor((l-2)/g)};`)}else u.append("path").attr("class","node-bkg").attr("id",`${n}-node-${a.id}`).attr("d",`M0,${l} V5 Q0,0 5,0 H${l-5} Q${l},0 ${l},5 V${l} Z`);s.attr("id",`${n}-service-${a.id}`).attr("class","architecture-service");let{width:h,height:d}=s.node().getBBox();a.width=h,a.height=d,e.setElementForId(a.id,s)}return 0},"drawServices"),M9e=o(function(e,t,r,n){r.forEach(i=>{let a=t.append("g"),s=e.getConfigField("iconSize");a.append("g").append("rect").attr("id",`${n}-node-${i.id}`).attr("fill-opacity","0").attr("width",s).attr("height",s),a.attr("class","architecture-junction");let{width:u,height:h}=a._groups[0][0].getBBox();a.width=u,a.height=h,e.setElementForId(i.id,a)})},"drawJunctions")});function x8t(e,t,r){e.forEach(n=>{t.add({group:"nodes",data:{type:"service",id:n.id,icon:n.icon,label:n.title,parent:n.in,width:r.getConfigField("iconSize"),height:r.getConfigField("iconSize")},classes:"node-service"})})}function b8t(e,t,r){e.forEach(n=>{t.add({group:"nodes",data:{type:"junction",id:n.id,parent:n.in,width:r.getConfigField("iconSize"),height:r.getConfigField("iconSize")},classes:"node-junction"})})}function T8t(e,t){t.nodes().map(r=>{let n=Dp(r);if(n.type==="group")return;n.x=r.position().x,n.y=r.position().y,e.getElementById(n.id).attr("transform","translate("+(n.x||0)+","+(n.y||0)+")")})}function C8t(e,t){e.forEach(r=>{t.add({group:"nodes",data:{type:"group",id:r.id,icon:r.icon,label:r.title,parent:r.in},classes:"node-group"})})}function w8t(e,t){e.forEach(r=>{let{lhsId:n,rhsId:i,lhsInto:a,lhsGroup:s,rhsInto:l,lhsDir:u,rhsDir:h,rhsGroup:d,title:f}=r,p=Jw(r.lhsDir,r.rhsDir)?"segments":"straight",m={id:`${n}-${i}`,label:f,source:n,sourceDir:u,sourceArrow:a,sourceGroup:s,sourceEndpoint:u==="L"?"0 50%":u==="R"?"100% 50%":u==="T"?"50% 0":"50% 100%",target:i,targetDir:h,targetArrow:l,targetGroup:d,targetEndpoint:h==="L"?"0 50%":h==="R"?"100% 50%":h==="T"?"50% 0":"50% 100%"};t.add({group:"edges",data:m,classes:p})})}function k8t(e,t,r,n=[]){let i=o((p,m)=>Object.entries(p).reduce((g,[y,v])=>{let x=0,b=Object.entries(v);if(b.length===1)return g[y]=b[0][1],g;for(let T=0;T<b.length-1;T++)for(let k=T+1;k<b.length;k++){let[C,w]=b[T],[S,R]=b[k];if(r[C]?.[S]===m)g[y]??=[],g[y]=[...g[y],...w,...R];else if(C==="default"||S==="default")g[y]??=[],g[y]=[...g[y],...w,...R];else{let N=`${y}-${x++}`;g[N]=w;let I=`${y}-${x++}`;g[I]=R}}return g},{}),"flattenAlignments"),a=t.map(p=>{let m={},g={};return Object.entries(p).forEach(([y,[v,x]])=>{let b=e.getNode(y)?.in??"default";m[x]??={},m[x][b]??=[],m[x][b].push(y),g[v]??={},g[v][b]??=[],g[v][b].push(y)}),{horiz:Object.values(i(m,"horizontal")).filter(y=>y.length>1),vert:Object.values(i(g,"vertical")).filter(y=>y.length>1)}}),[s,l]=a.reduce(([p,m],{horiz:g,vert:y})=>[[...p,...g],[...m,...y]],[[],[]]),u=new Set;n.forEach(p=>p.members.forEach(m=>u.add(m)));let h=o(p=>p.filter(m=>!m.some(g=>u.has(g))),"dropOverlapping"),d=h(s),f=h(l);return n.forEach(p=>{p.members.length<2||(p.direction==="row"?d.push([...p.members]):f.push([...p.members]))}),{horizontal:d,vertical:f}}function S8t(e,t,r=[]){let n=[],i=t.getConfigField("iconSize"),a=t.getConfigField("idealEdgeLengthMultiplier"),s=a*i,l=new Set;r.forEach(d=>{for(let f=0;f<d.members.length-1;f++){let p=d.members[f],m=d.members[f+1];l.add(`${p}|${m}`),l.add(`${m}|${p}`),d.direction==="row"?n.push({left:p,right:m,gap:s}):n.push({top:p,bottom:m,gap:s})}});let u=o(d=>`${d[0]},${d[1]}`,"posToStr"),h=o(d=>d.split(",").map(f=>parseInt(f)),"strToPos");return e.forEach(d=>{let f=Object.fromEntries(Object.entries(d).map(([y,v])=>[u(v),y])),p=[u([0,0])],m={},g={L:[-1,0],R:[1,0],T:[0,1],B:[0,-1]};for(;p.length>0;){let y=p.shift();if(y){m[y]=1;let v=f[y];if(v){let x=h(y);Object.entries(g).forEach(([b,T])=>{let k=u([x[0]+T[0],x[1]+T[1]]),C=f[k];if(C&&!m[k]){if(p.push(k),l.has(`${v}|${C}`))return;n.push({[$j[b]]:C,[$j[v9e(b)]]:v,gap:a*i})}})}}}}),n}function E8t(e,t,r,n,i,{spatialMaps:a,groupAlignments:s}){return new Promise(l=>{let u=et("body").append("div").attr("id","cy").attr("style","display:none"),h=El({container:document.getElementById("cy"),style:[{selector:"edge",style:{"curve-style":"straight","source-endpoint":"data(sourceEndpoint)","target-endpoint":"data(targetEndpoint)"}},{selector:"edge[label]",style:{label:"data(label)"}},{selector:"edge.segments",style:{"curve-style":"segments","segment-weights":"0","segment-distances":[.5],"edge-distances":"endpoints","source-endpoint":"data(sourceEndpoint)","target-endpoint":"data(targetEndpoint)"}},{selector:"node",style:{"compound-sizing-wrt-labels":"include"}},{selector:"node[label]",style:{"text-valign":"bottom","text-halign":"center","font-size":`${i.getConfigField("fontSize")}px`}},{selector:".node-service",style:{label:"data(label)",width:"data(width)",height:"data(height)"}},{selector:".node-junction",style:{width:"data(width)",height:"data(height)"}},{selector:".node-group",style:{padding:`${i.getConfigField("padding")}px`}}],layout:{name:"grid",boundingBox:{x1:0,x2:100,y1:0,y2:100}}});u.remove(),C8t(r,h),x8t(e,h,i),b8t(t,h,i),w8t(n,h);let d=i.getLayoutHints(),f=k8t(i,a,s,d),p=S8t(a,i,d),m=i.getConfigField("iconSize"),g=i.getConfigField("idealEdgeLengthMultiplier")*m,y=.5*m,v=i.getConfigField("edgeElasticity"),x=i.getConfigField("seed"),b=h.layout({name:"fcose",quality:"proof",randomize:i.getConfigField("randomize"),nodeSeparation:i.getConfigField("nodeSeparation"),numIter:i.getConfigField("numIter"),styleEnabled:!1,animate:!1,nodeDimensionsIncludeLabels:!1,idealEdgeLength(T){let[k,C]=T.connectedNodes(),{parent:w}=Dp(k),{parent:S}=Dp(C);return w===S?g:y},edgeElasticity(T){let[k,C]=T.connectedNodes(),{parent:w}=Dp(k),{parent:S}=Dp(C);return w===S?v:.001},alignmentConstraint:f,relativePlacementConstraint:p});b.one("layoutstop",()=>{function T(k,C,w,S){let R,L,{x:N,y:I}=k,{x:_,y:A}=C;L=(S-I+(N-w)*(I-A)/(N-_))/Math.sqrt(1+Math.pow((I-A)/(N-_),2)),R=Math.sqrt(Math.pow(S-I,2)+Math.pow(w-N,2)-Math.pow(L,2));let M=Math.sqrt(Math.pow(_-N,2)+Math.pow(A-I,2));R=R/M;let D=(_-N)*(S-I)-(A-I)*(w-N);switch(!0){case D>=0:D=1;break;case D<0:D=-1;break}let P=(_-N)*(w-N)+(A-I)*(S-I);switch(!0){case P>=0:P=1;break;case P<0:P=-1;break}return L=Math.abs(L)*D,R=R*P,{distances:L,weights:R}}o(T,"getSegmentWeights"),h.startBatch();for(let k of Object.values(h.edges()))if(k.data?.()){let{x:C,y:w}=k.source().position(),{x:S,y:R}=k.target().position();if(C!==S&&w!==R){let L=k.sourceEndpoint(),N=k.targetEndpoint(),{sourceDir:I}=nD(k),[_,A]=Yu(I)?[L.x,N.y]:[N.x,L.y],{weights:M,distances:D}=T(L,N,_,A);k.style("segment-distances",D),k.style("segment-weights",M)}}h.endBatch(),jj(x,()=>b.run())});try{jj(x,()=>b.run())}catch(T){throw T instanceof RangeError&&T.message.includes("Invalid array length")?new Error("Architecture layout failed: a declared `align row|column` directive likely contradicts the edge directions, or two declared alignments overlap on a shared node. Check that the order of members in each `align` chain is consistent with the edges between them, and that no node appears in two `align` directives along the same axis."):T}h.ready(T=>{Z.info("Ready",T),l(h)})})}var P9e,A8t,O9e,B9e=F(()=>{"use strict";GF();P9e=Xs(R9e(),1);_9e();$r();vt();Vl();Ka();$n();Xj();iD();N9e();ty([{name:M0.prefix,icons:M0}]);El.use(P9e.default);o(x8t,"addServices");o(b8t,"addJunctions");o(T8t,"positionNodes");o(C8t,"addGroups");o(w8t,"addEdges");o(k8t,"getAlignments");o(S8t,"getRelativeConstraints");o(E8t,"layoutArchitecture");A8t=o(async(e,t,r,n)=>{let i=n.db;i.setDiagramId(t);let a=i.getServices(),s=i.getJunctions(),l=i.getGroups(),u=i.getEdges(),h=i.getDataStructures(),d=xn(t),f=d.append("g");f.attr("class","architecture-edges");let p=d.append("g");p.attr("class","architecture-services");let m=d.append("g");m.attr("class","architecture-groups"),await I9e(i,p,a,t),M9e(i,p,s,t);let g=await E8t(a,s,l,u,i,h);await L9e(f,g,i,t),await D9e(m,g,i,t),T8t(i,g),ul(void 0,d,i.getConfigField("padding"),i.getConfigField("useMaxWidth"))},"draw"),O9e={draw:A8t}});var $9e={};ir($9e,{diagram:()=>R8t});var R8t,F9e=F(()=>{"use strict";S9e();Gj();A9e();B9e();R8t={parser:Vj,get db(){return new mx},renderer:O9e,styles:E9e}});var Kj,Zj,aD,Qj,V9e=F(()=>{"use strict";Kj="position frame",Zj="frame positioned",aD="position relation",Qj="relation positioned"});function P8t(){tX={}}function $8t(){let e=z8t,{ast:t}=tX,r=q9e();if(!t)throw new Error("No data for EventModel");return t.frames.forEach((n,i)=>{let a=U8t(n,t.dataEntities,r);e=eX(e,{$kind:Kj,index:i,frame:n,textProps:a});let s;Q8t(n)?(Z.debug("source frame",n.sourceFrames),s=t.frames.filter(l=>n.sourceFrames.some(u=>u.$refText===l.name)),s.forEach(l=>{e=eX(e,{$kind:aD,index:i,frame:n,sourceFrame:l})})):e=eX(e,{$kind:aD,index:i,frame:n})}),e={...e,sortedSwimlanesArray:H9e(e.swimlanes)},e}function F8t(e){tX.ast=e}function q9e(){return bn}function G8t(e){let t=e.split(".");if(t.length===2)return t[0]}function V8t(e){let t=e.split(".");return t.length===2?t[1]:e}function W8t(e,t){if(!(!t||t.length===0))return Object.values(e).find(r=>r.namespace===t)}function Jj(e,t,r){return Math.max(t,...Object.keys(e).filter(n=>{let i=Number.parseInt(n);return i>t&&i<r}).map(n=>Number.parseInt(n)))+1}function q8t(e,t){let r=G8t(e.entityIdentifier),n=W8t(t,r);switch(e.modelEntityType){case"ui":case"pcr":case"processor":return n?{index:n.index,label:n.namespace||bn.labelUiAutomation}:r?{index:Jj(t,0,100),label:bn.labelUiAutomationPrefix+r}:{index:0,label:bn.labelUiAutomation};case"rmo":case"readmodel":case"cmd":case"command":return n?{index:n.index,label:n.namespace||bn.labelCommandReadModel}:r?{index:Jj(t,100,200),label:bn.labelCommandReadModelPrefix+r}:{index:100,label:bn.labelCommandReadModel};case"evt":case"event":default:return n?{index:n.index,label:n.namespace||bn.labelEvents}:r?{index:Jj(t,200,300),label:bn.labelEventsPrefix+r}:{index:200,label:bn.labelEvents}}}function H8t(e){let{themeVariables:t}=_t();switch(e.modelEntityType){case"ui":return{fill:t.emUiFill??"white",stroke:t.emUiStroke??"#dbdada"};case"pcr":case"processor":return{fill:t.emProcessorFill??"#edb3f6",stroke:t.emProcessorStroke??"#b88cbf"};case"rmo":case"readmodel":return{fill:t.emReadModelFill??"#d3f1a2",stroke:t.emReadModelStroke??"#a3b732"};case"cmd":case"command":return{fill:t.emCommandFill??"#bcd6fe",stroke:t.emCommandStroke??"#679ac3"};case"evt":case"event":return{fill:t.emEventFill??"#ffb778",stroke:t.emEventStroke??"#c19a0f"};default:return{fill:"red",stroke:"black"}}}function U8t(e,t,r){let n=_t(),i=mr(V8t(e.entityIdentifier)??"",n),a,s={fontSize:16,fontWeight:700,fontFamily:'"trebuchet ms", verdana, arial, sans-serif',joinWith:"<br/>"},u=`<b>${ym(i,r.textMaxWidth,s)}</b>`;if(e.dataInlineValue&&(a=e.dataInlineValue,a=a.substring(a.indexOf("{")+1),a=a.substring(0,a.lastIndexOf("}")-1),a=mr(a,n),a=ym(a,r.textMaxWidth,s),a=a.replaceAll(" ","&nbsp;")),e.dataReference){let g=t.find(y=>y.name===e.dataReference?.$refText);g&&(a=g.dataBlockValue,a=a.substring(a.indexOf(`{
+`)+2),a=a.substring(0,a.lastIndexOf("}")-1),a=mr(a,n),a=ym(a,r.textMaxWidth,s),a=a.replaceAll(" ","&nbsp;"),a+="<br/>")}let h=a!==void 0;h&&(u+=`<br/><br/><code style="text-align: left; display: block;max-width:${r.textMaxWidth}px">${a}</code>`);let d={fontSize:s.fontSize,fontWeight:s.fontWeight,fontFamily:s.fontFamily},f=b2(u,d),p=h?f.width/3:f.width,m={content:u,width:p,height:f.height};return Z.debug(`[${e.name}] ${e.entityIdentifier} text`,m),m}function Y8t(e,t){let r=t,n=H8t(r.frame),i={width:r.textProps.width+2*bn.boxTextPadding,height:r.textProps.height+2*bn.boxTextPadding};return[{$kind:Zj,frame:r.frame,index:r.index,visual:n,dimension:i,textProps:r.textProps}]}function j8t(e,t,r){return t===void 0?bn.contentStartX:t.index===e.index&&e.r?e.r+bn.boxPadding:r===void 0?bn.contentStartX:r.r-bn.boxOverlap+bn.boxPadding}function X8t(e,t){let r=[...e.map(n=>n.r),t];return Math.max(...r)}function H9e(e){return Object.values(e).sort((t,r)=>t.index-r.index)}function K8t(e,t){let r=t,n=q8t(r.frame,e.swimlanes),i;n.index in e.swimlanes?i=e.swimlanes[n.index]:i={index:n.index,label:n.label,r:0,y:n.index*bn.swimlaneMinHeight+bn.swimlaneGap,height:bn.swimlaneMinHeight,maxHeight:bn.swimlaneMinHeight};let a=e.boxes.length>0?e.boxes[e.boxes.length-1]:void 0,s=e.previousSwimlaneNumber!==void 0?e.swimlanes[e.previousSwimlaneNumber]:void 0,l={width:Math.max(bn.boxMinWidth,Math.min(bn.boxMaxWidth,r.dimension.width))+2*bn.boxPadding,height:Math.max(bn.boxMinHeight,Math.min(bn.boxMaxHeight,r.dimension.height))+2*bn.boxPadding},u=j8t(i,s,a),h=u+l.width+bn.boxPadding,d=X8t(Object.values(e.swimlanes),h);i.r=u+l.width,i.maxHeight=Math.max(i.maxHeight,l.height),i.height=Math.max(bn.swimlaneMinHeight,i.maxHeight)+2*bn.swimlanePadding;let f={x:u,y:bn.swimlanePadding+i.y,r:h,dimension:l,leftSibling:!1,swimlane:i,visual:r.visual,text:r.textProps.content,frame:r.frame,index:r.index},p={...e,boxes:[...e.boxes,f],swimlanes:{...e.swimlanes,[`${i.index}`]:i},previousSwimlaneNumber:n.index,previousFrame:r.frame,maxR:d},m=H9e(p.swimlanes);m.length>0&&(m[0].y=0);for(let g=1;g<m.length;g++){let y=m[g],v=m[g-1];y.y=v.y+v.height+bn.swimlaneGap}return p}function Z8t(e,t){return e===0&&t.sourceFrames.length===0}function Q8t(e){return e.sourceFrames!==void 0&&e.sourceFrames!==null&&e.sourceFrames.length>0}function W9e(e,t){if(t!=null)return e.find(r=>r.frame.name===t.name)}function J8t(e,t,r){if(!(r<0))for(let n=r;n>=0;n--){let i=e[n];if(i.swimlane.index!==t)return i}}function eIt(e,t){let r=t;if(S_(r.frame)||Z8t(r.index,r.frame))return[];let n=W9e(e.boxes,r.frame);if(n===void 0)throw new Error(`Target box not found for frame ${r.frame.name}`);let i;return r.sourceFrame?i=W9e(e.boxes,r.sourceFrame):i=J8t(e.boxes,n.swimlane.index,r.index-1),i===void 0?[]:[{$kind:Qj,frame:r.frame,index:r.index,sourceBox:i,targetBox:n}]}function tIt(e,t){let r=t,n={visual:{fill:"none",stroke:"#000"},source:{x:r.sourceBox.x,y:r.sourceBox.y},target:{x:r.targetBox.x,y:r.targetBox.y},sourceBox:r.sourceBox,targetBox:r.targetBox};return{...e,relations:[...e.relations,n]}}function iIt(e,t){let r=rIt[t.$kind];if(r==null)return[];let n=r(e,t);return Z.debug("decided events",n),n}function aIt(e,t){let r=t.reduce((n,i)=>{let a=nIt[i.$kind];return a==null?n:a(n,i)},e);return Z.debug("evolve events",{state:e,newState:r,events:t}),r}function eX(e,t){let r=iIt(e,t);return aIt(e,r)}var I8t,M8t,N8t,O8t,B8t,tX,bn,z8t,rIt,nIt,ik,rX=F(()=>{"use strict";vt();Qt();Qt();ur();Nn();Vr();Wi();Xa();V9e();I8t=o(function(e){Z.debug("options str",e)},"setOptions"),M8t=o(function(){return{}},"getOptions"),N8t=o(function(){P8t(),yr()},"clear");o(P8t,"reset");O8t=cr.eventmodeling,B8t=o(()=>qr({...O8t,..._t().eventmodeling}),"getConfig"),tX={};o($8t,"getState");o(F8t,"setAst");bn={swimlaneMinHeight:70,swimlanePadding:15,swimlaneGap:10,boxPadding:10,boxOverlap:90,boxDefaultY:0,boxMinWidth:80,boxMaxWidth:450,boxMinHeight:80,boxMaxHeight:750,contentStartX:250,textMaxWidth:430,boxTextFontWeight:"bold",boxTextPadding:10,swimlaneTextFontWeight:"bold",labelUiAutomation:"UI/Automation",labelUiAutomationPrefix:"UI/A: ",labelCommandReadModel:"Command/Read Model",labelCommandReadModelPrefix:"C/RM: ",labelEvents:"Events",labelEventsPrefix:"Stream: "};o(q9e,"getDiagramProps");z8t={boxes:[],swimlanes:{},relations:[],maxR:0,sortedSwimlanesArray:[]};o(G8t,"extractNamespace");o(V8t,"extractName");o(W8t,"findSwimlaneByNamespace");o(Jj,"findNextAvailableIndex");o(q8t,"calculateSwimlaneProps");o(H8t,"calculateEntityVisualProps");o(U8t,"calculateTextProps");o(Y8t,"decidePositionFrame");o(j8t,"calculateX");o(X8t,"calculateMaxRight");o(H9e,"sortedSwimlanesArray");o(K8t,"evolveFramePositioned");o(Z8t,"isFirstFrame");o(Q8t,"hasSourceFrame");o(W9e,"findBoxByFrame");o(J8t,"findBoxByLineIndex");o(eIt,"decidePositionRelation");o(tIt,"evolveRelationPositioned");rIt={[Kj]:Y8t,[aD]:eIt},nIt={[Zj]:K8t,[Qj]:tIt};o(iIt,"decide");o(aIt,"evolve");o(eX,"dispatch");ik={getConfig:B8t,setOptions:I8t,getOptions:M8t,clear:N8t,setAccTitle:kr,getAccTitle:Ar,getAccDescription:_r,setAccDescription:Rr,setDiagramTitle:Or,getDiagramTitle:Lr,setAst:F8t,getDiagramProps:q9e,getState:$8t}});var U9e,Y9e=F(()=>{"use strict";Xa();vt();Hs();rX();U9e={parse:o(async e=>{let t=await Si("eventmodeling",e);Z.debug(t),ik.setAst(t),Gn(t,ik)},"parse")}});function lIt(e,t){return r=>{let n=r.swimlane.y+t.swimlanePadding,i=e.append("g").attr("class","em-box");i.append("rect").attr("x",r.x).attr("y",n).attr("rx","3").attr("width",r.dimension.width).attr("height",r.dimension.height).attr("stroke",r.visual.stroke).attr("fill",r.visual.fill),i.append("foreignObject").attr("x",r.x+t.boxPadding).attr("y",n+10).attr("width",r.dimension.width-2*t.boxPadding).attr("height",r.dimension.height-2*t.boxPadding).append("xhtml:div").style("display","table").style("height","100%").style("width","100%").append("span").style("display","table-cell").style("text-align","center").style("vertical-align","middle").html(r.text)}}function cIt(e,t){return e>t}function uIt(e,t,r,n){return i=>{let a=i.sourceBox.swimlane.y+t.swimlanePadding,s=i.targetBox.swimlane.y+t.swimlanePadding,l=cIt(a,s),u=i.sourceBox.x+i.sourceBox.dimension.width*2/3,h=i.targetBox.x+i.targetBox.dimension.width/3,d,f;Z.debug(`rendering relation up=${l} for `,{sourceBox:i.sourceBox,targetBox:i.targetBox}),l?(d=a,f=s+i.targetBox.dimension.height):(d=a+i.sourceBox.dimension.height,f=s);let p=n.emRelationStroke??i.visual.stroke;e.append("path").attr("class","em-relation").attr("fill",i.visual.fill).attr("stroke",p).attr("stroke-width","1").attr("marker-end",`url(#${r})`).attr("d",`M${u} ${d} L${h} ${f}`)}}function hIt(e,t,r,n){return i=>{let a=e.append("g").attr("class","em-swimlane"),s=n.emSwimlaneBackgroundOdd??"rgb(250,250,250)",l=n.emSwimlaneBackgroundStroke??"rgb(240,240,240)";a.append("rect").attr("x",0).attr("y",i.y).attr("rx","3").attr("width",t+r.swimlanePadding).attr("height",i.height).attr("fill",s).attr("stroke",l),a.append("text").attr("font-weight",r.swimlaneTextFontWeight).attr("x",30).attr("y",i.y+30).text(i.label)}}var sIt,oIt,dIt,j9e,X9e=F(()=>{"use strict";$r();Xt();vt();sIt=Ae(),oIt=sIt?.eventmodeling;o(lIt,"renderD3Box");o(cIt,"dirUpwards");o(uIt,"renderD3Relation");o(hIt,"renderD3Swimlane");dIt=o(function(e,t,r,n){if(Z.debug("in eventmodeling renderer",e+`
+`,"id:",t,r),!oIt)throw new Error("EventModeling config not found");let i=n.db,{themeVariables:a,eventmodeling:s}=Ae(),l=et(`[id="${t}"]`),u=i.getDiagramProps(),h=i.getState(),d=`em-arrowhead-${t}`,f=a.emArrowhead??"#000000";h.sortedSwimlanesArray.forEach(hIt(l,h.maxR,u,a)),h.boxes.forEach(lIt(l,u)),h.relations.forEach(uIt(l,u,d,a)),l.append("defs").append("marker").attr("id",d).attr("markerWidth","10").attr("markerHeight","7").attr("refX","10").attr("refY","3.5").attr("orient","auto").append("polygon").attr("points","0 0, 10 3.5, 0 7").attr("fill",f),hb(void 0,l,s?.padding??30,s?.useMaxWidth)},"draw"),j9e={draw:dIt}});var fIt,K9e,Z9e=F(()=>{"use strict";fIt=o(e=>"","getStyles"),K9e=fIt});var Q9e={};ir(Q9e,{diagram:()=>pIt});var pIt,J9e=F(()=>{"use strict";Y9e();rX();X9e();Z9e();pIt={parser:U9e,db:ik,renderer:j9e,styles:K9e}});var nX,rBe,nBe=F(()=>{"use strict";nX=(function(){var e=o(function(x,b,T,k){for(T=T||{},k=x.length;k--;T[x[k]]=b);return T},"o"),t=[1,4],r=[1,14],n=[1,12],i=[1,13],a=[6,7,8],s=[1,20],l=[1,18],u=[1,19],h=[6,7,11],d=[1,6,13,14],f=[1,23],p=[1,24],m=[1,6,7,11,13,14],g={trace:o(function(){},"trace"),yy:{},symbols_:{error:2,start:3,ishikawa:4,spaceLines:5,SPACELINE:6,NL:7,ISHIKAWA:8,document:9,stop:10,EOF:11,statement:12,SPACELIST:13,TEXT:14,$accept:0,$end:1},terminals_:{2:"error",6:"SPACELINE",7:"NL",8:"ISHIKAWA",11:"EOF",13:"SPACELIST",14:"TEXT"},productions_:[0,[3,1],[3,2],[5,1],[5,2],[5,2],[4,2],[4,3],[10,1],[10,1],[10,1],[10,2],[10,2],[9,3],[9,2],[12,2],[12,1],[12,1],[12,1]],performAction:o(function(b,T,k,C,w,S,R){var L=S.length-1;switch(w){case 6:case 7:return C;case 15:C.addNode(S[L-1].length,S[L].trim());break;case 16:C.addNode(0,S[L].trim());break}},"anonymous"),table:[{3:1,4:2,5:3,6:[1,5],8:t},{1:[3]},{1:[2,1]},{4:6,6:[1,7],7:[1,8],8:t},{6:r,7:[1,10],9:9,12:11,13:n,14:i},e(a,[2,3]),{1:[2,2]},e(a,[2,4]),e(a,[2,5]),{1:[2,6],6:r,12:15,13:n,14:i},{6:r,9:16,12:11,13:n,14:i},{6:s,7:l,10:17,11:u},e(h,[2,18],{14:[1,21]}),e(h,[2,16]),e(h,[2,17]),{6:s,7:l,10:22,11:u},{1:[2,7],6:r,12:15,13:n,14:i},e(d,[2,14],{7:f,11:p}),e(m,[2,8]),e(m,[2,9]),e(m,[2,10]),e(h,[2,15]),e(d,[2,13],{7:f,11:p}),e(m,[2,11]),e(m,[2,12])],defaultActions:{2:[2,1],6:[2,2]},parseError:o(function(b,T){if(T.recoverable)this.trace(b);else{var k=new Error(b);throw k.hash=T,k}},"parseError"),parse:o(function(b){var T=this,k=[0],C=[],w=[null],S=[],R=this.table,L="",N=0,I=0,_=0,A=2,M=1,D=S.slice.call(arguments,1),P=Object.create(this.lexer),B={yy:{}};for(var O in this.yy)Object.prototype.hasOwnProperty.call(this.yy,O)&&(B.yy[O]=this.yy[O]);P.setInput(b,B.yy),B.yy.lexer=P,B.yy.parser=this,typeof P.yylloc>"u"&&(P.yylloc={});var $=P.yylloc;S.push($);var V=P.options&&P.options.ranges;typeof B.yy.parseError=="function"?this.parseError=B.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function G(Pe){k.length=k.length-2*Pe,w.length=w.length-Pe,S.length=S.length-Pe}o(G,"popStack");function z(){var Pe;return Pe=C.pop()||P.lex()||M,typeof Pe!="number"&&(Pe instanceof Array&&(C=Pe,Pe=C.pop()),Pe=T.symbols_[Pe]||Pe),Pe}o(z,"lex");for(var W,H,j,Q,U,oe,te={},le,ie,ae,Re;;){if(j=k[k.length-1],this.defaultActions[j]?Q=this.defaultActions[j]:((W===null||typeof W>"u")&&(W=z()),Q=R[j]&&R[j][W]),typeof Q>"u"||!Q.length||!Q[0]){var be="";Re=[];for(le in R[j])this.terminals_[le]&&le>A&&Re.push("'"+this.terminals_[le]+"'");P.showPosition?be="Parse error on line "+(N+1)+`:
+`+P.showPosition()+`
+Expecting `+Re.join(", ")+", got '"+(this.terminals_[W]||W)+"'":be="Parse error on line "+(N+1)+": Unexpected "+(W==M?"end of input":"'"+(this.terminals_[W]||W)+"'"),this.parseError(be,{text:P.match,token:this.terminals_[W]||W,line:P.yylineno,loc:$,expected:Re})}if(Q[0]instanceof Array&&Q.length>1)throw new Error("Parse Error: multiple actions possible at state: "+j+", token: "+W);switch(Q[0]){case 1:k.push(W),w.push(P.yytext),S.push(P.yylloc),k.push(Q[1]),W=null,H?(W=H,H=null):(I=P.yyleng,L=P.yytext,N=P.yylineno,$=P.yylloc,_>0&&_--);break;case 2:if(ie=this.productions_[Q[1]][1],te.$=w[w.length-ie],te._$={first_line:S[S.length-(ie||1)].first_line,last_line:S[S.length-1].last_line,first_column:S[S.length-(ie||1)].first_column,last_column:S[S.length-1].last_column},V&&(te._$.range=[S[S.length-(ie||1)].range[0],S[S.length-1].range[1]]),oe=this.performAction.apply(te,[L,I,N,B.yy,Q[1],w,S].concat(D)),typeof oe<"u")return oe;ie&&(k=k.slice(0,-1*ie*2),w=w.slice(0,-1*ie),S=S.slice(0,-1*ie)),k.push(this.productions_[Q[1]][0]),w.push(te.$),S.push(te._$),ae=R[k[k.length-2]][k[k.length-1]],k.push(ae);break;case 3:return!0}}return!0},"parse")},y=(function(){var x={EOF:1,parseError:o(function(T,k){if(this.yy.parser)this.yy.parser.parseError(T,k);else throw new Error(T)},"parseError"),setInput:o(function(b,T){return this.yy=T||this.yy||{},this._input=b,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},"setInput"),input:o(function(){var b=this._input[0];this.yytext+=b,this.yyleng++,this.offset++,this.match+=b,this.matched+=b;var T=b.match(/(?:\r\n?|\n).*/g);return T?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),b},"input"),unput:o(function(b){var T=b.length,k=b.split(/(?:\r\n?|\n)/g);this._input=b+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-T),this.offset-=T;var C=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),k.length-1&&(this.yylineno-=k.length-1);var w=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:k?(k.length===C.length?this.yylloc.first_column:0)+C[C.length-k.length].length-k[0].length:this.yylloc.first_column-T},this.options.ranges&&(this.yylloc.range=[w[0],w[0]+this.yyleng-T]),this.yyleng=this.yytext.length,this},"unput"),more:o(function(){return this._more=!0,this},"more"),reject:o(function(){if(this.options.backtrack_lexer)this._backtrack=!0;else return this.parseError("Lexical error on line "+(this.yylineno+1)+`. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).
 `+this.showPosition(),{text:"",token:null,line:this.yylineno});return this},"reject"),less:o(function(b){this.unput(this.match.slice(b))},"less"),pastInput:o(function(){var b=this.matched.substr(0,this.matched.length-this.match.length);return(b.length>20?"...":"")+b.substr(-20).replace(/\n/g,"")},"pastInput"),upcomingInput:o(function(){var b=this.match;return b.length<20&&(b+=this._input.substr(0,20-b.length)),(b.substr(0,20)+(b.length>20?"...":"")).replace(/\n/g,"")},"upcomingInput"),showPosition:o(function(){var b=this.pastInput(),T=new Array(b.length+1).join("-");return b+this.upcomingInput()+`
-`+T+"^"},"showPosition"),test_match:o(function(b,T){var w,C,k;if(this.options.backtrack_lexer&&(k={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(k.yylloc.range=this.yylloc.range.slice(0))),C=b[0].match(/(?:\r\n?|\n).*/g),C&&(this.yylineno+=C.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:C?C[C.length-1].length-C[C.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+b[0].length},this.yytext+=b[0],this.match+=b[0],this.matches=b,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(b[0].length),this.matched+=b[0],w=this.performAction.call(this,this.yy,this,T,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),w)return w;if(this._backtrack){for(var E in k)this[E]=k[E];return!1}return!1},"test_match"),next:o(function(){if(this.done)return this.EOF;this._input||(this.done=!0);var b,T,w,C;this._more||(this.yytext="",this.match="");for(var k=this._currentRules(),E=0;E<k.length;E++)if(w=this._input.match(this.rules[k[E]]),w&&(!T||w[0].length>T[0].length)){if(T=w,C=E,this.options.backtrack_lexer){if(b=this.test_match(w,k[E]),b!==!1)return b;if(this._backtrack){T=!1;continue}else return!1}else if(!this.options.flex)break}return T?(b=this.test_match(T,k[C]),b!==!1?b:!1):this._input===""?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+`. Unrecognized text.
-`+this.showPosition(),{text:"",token:null,line:this.yylineno})},"next"),lex:o(function(){var T=this.next();return T||this.lex()},"lex"),begin:o(function(T){this.conditionStack.push(T)},"begin"),popState:o(function(){var T=this.conditionStack.length-1;return T>0?this.conditionStack.pop():this.conditionStack[0]},"popState"),_currentRules:o(function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},"_currentRules"),topState:o(function(T){return T=this.conditionStack.length-1-Math.abs(T||0),T>=0?this.conditionStack[T]:"INITIAL"},"topState"),pushState:o(function(T){this.begin(T)},"pushState"),stateStackSize:o(function(){return this.conditionStack.length},"stateStackSize"),options:{"case-insensitive":!0},performAction:o(function(T,w,C,k){var E=k;switch(C){case 0:return 6;case 1:return 8;case 2:return 8;case 3:return 6;case 4:return 7;case 5:return 13;case 6:return 14;case 7:return 11}},"anonymous"),rules:[/^(?:\s*%%.*)/i,/^(?:ishikawa-beta\b)/i,/^(?:ishikawa\b)/i,/^(?:[\s]+[\n])/i,/^(?:[\n]+)/i,/^(?:[\s]+)/i,/^(?:[^\n]+)/i,/^(?:$)/i],conditions:{INITIAL:{rules:[0,1,2,3,4,5,6,7],inclusive:!0}}};return x})();g.lexer=y;function v(){this.yy={}}return o(v,"Parser"),v.prototype=g,g.Parser=v,new v})();eU.parser=eU;QRe=eU});var __,eLe=z(()=>{"use strict";Ut();Ir();Ci();__=class{constructor(){this.stack=[];this.clear=this.clear.bind(this),this.addNode=this.addNode.bind(this),this.getRoot=this.getRoot.bind(this)}static{o(this,"IshikawaDB")}clear(){this.root=void 0,this.stack=[],this.baseLevel=void 0,gr()}getRoot(){return this.root}addNode(t,r){let i=vt.sanitizeText(r,ge());if(!this.root){this.root={text:i,children:[]},this.stack=[{level:0,node:this.root}],Ar(i);return}this.baseLevel??=t;let n=t-this.baseLevel+1;for(n<=0&&(n=1);this.stack.length>1&&this.stack[this.stack.length-1].level>=n;)this.stack.pop();let a=this.stack[this.stack.length-1].node,s={text:i,children:[]};a.children.push(s),this.stack.push({level:n,node:s})}getAccTitle(){return kr()}setAccTitle(t){Cr(t)}getAccDescription(){return Sr()}setAccDescription(t){wr(t)}getDiagramTitle(){return Er()}setDiagramTitle(t){Ar(t)}}});var $Et,Py,zEt,GEt,VEt,sLe,tLe,rLe,iLe,WEt,nLe,qEt,UEt,HEt,tU,YEt,jEt,oLe,D_,aLe,By,lLe,cLe=z(()=>{"use strict";Ut();ps();Di();Xt();jt();$Et=14,Py=250,zEt=30,GEt=60,VEt=5,sLe=82*Math.PI/180,tLe=Math.cos(sLe),rLe=Math.sin(sLe),iLe=o((e,t,r)=>{let i=e.node().getBBox(),n=i.width+t*2,a=i.height+t*2;Br(e,a,n,r),e.attr("viewBox",`${i.x-t} ${i.y-t} ${n} ${a}`)},"applyPaddedViewBox"),WEt=o((e,t,r,i)=>{let a=i.db.getRoot();if(!a)return;let s=ge(),{look:l,handDrawnSeed:u,themeVariables:h}=s,d=Za(s.fontSize)[0]??$Et,f=l==="handDrawn",p=a.children??[],m=s.ishikawa?.diagramPadding??20,g=s.ishikawa?.useMaxWidth??!1,y=bi(t),v=y.append("g").attr("class","ishikawa"),x=f?ut.svg(y.node()):void 0,b=x?{roughSvg:x,seed:u??0,lineColor:h?.lineColor??"#333",fillColor:h?.mainBkg??"#fff"}:void 0,T=`ishikawa-arrow-${t}`;f||v.append("defs").append("marker").attr("id",T).attr("viewBox","0 0 10 10").attr("refX",0).attr("refY",5).attr("markerWidth",6).attr("markerHeight",6).attr("orient","auto").append("path").attr("d","M 10 0 L 0 5 L 10 10 Z").attr("class","ishikawa-arrow");let w=0,C=Py,k=f?void 0:By(v,w,C,w,C,"ishikawa-spine");if(qEt(v,w,C,a.text,d,b),!p.length){f&&By(v,w,C,w,C,"ishikawa-spine",b),iLe(y,m,g);return}w-=20;let E=p.filter((L,B)=>B%2===0),A=p.filter((L,B)=>B%2===1),N=nLe(E),P=nLe(A),I=N.total+P.total,D=Py,_=Py;if(I>0){let L=Py*2,B=Py*.3;D=Math.max(B,L*(N.total/I)),_=Math.max(B,L*(P.total/I))}let R=d*2;D=Math.max(D,N.max*R),_=Math.max(_,P.max*R),C=Math.max(D,Py),k&&k.attr("y1",C).attr("y2",C),v.select(".ishikawa-head-group").attr("transform",`translate(0,${C})`);let M=Math.ceil(p.length/2);for(let L=0;L<M;L++){let B=v.append("g").attr("class","ishikawa-pair");for(let[O,$,G]of[[p[L*2],-1,D],[p[L*2+1],1,_]])O&&YEt(B,O,w,C,$,G,d,b);w=B.selectAll("text").nodes().reduce((O,$)=>Math.min(O,$.getBBox().x),1/0)}if(f)By(v,w,C,0,C,"ishikawa-spine",b);else{k.attr("x1",w);let L=`url(#${T})`;v.selectAll("line.ishikawa-branch, line.ishikawa-sub-branch").attr("marker-start",L)}iLe(y,m,g)},"draw"),nLe=o(e=>{let t=o(r=>r.children.reduce((i,n)=>i+1+t(n),0),"countDescendants");return e.reduce((r,i)=>{let n=t(i);return r.total+=n,r.max=Math.max(r.max,n),r},{total:0,max:0})},"sideStats"),qEt=o((e,t,r,i,n,a)=>{let s=Math.max(6,Math.floor(110/(n*.6))),l=e.append("g").attr("class","ishikawa-head-group").attr("transform",`translate(${t},${r})`),u=D_(l,oLe(i,s),0,0,"ishikawa-head-label","start",n),h=u.node().getBBox(),d=Math.max(60,h.width+6),f=Math.max(40,h.height*2+40),p=`M 0 ${-f/2} L 0 ${f/2} Q ${d*2.4} 0 0 ${-f/2} Z`;if(a){let m=a.roughSvg.path(p,{roughness:1.5,seed:a.seed,fill:a.fillColor,fillStyle:"hachure",fillWeight:2.5,hachureGap:5,stroke:a.lineColor,strokeWidth:2});l.insert(()=>m,":first-child").attr("class","ishikawa-head")}else l.insert("path",":first-child").attr("class","ishikawa-head").attr("d",p);u.attr("transform",`translate(${(d-h.width)/2-h.x+3},${-h.y-h.height/2})`)},"drawHead"),UEt=o((e,t)=>{let r=[],i=[],n=o((a,s,l)=>{let u=t===-1?[...a].reverse():a;for(let h of u){let d=r.length,f=h.children??[];r.push({depth:l,text:oLe(h.text,15),parentIndex:s,childCount:f.length}),l%2===0?(i.push(d),f.length&&n(f,d,l+1)):(f.length&&n(f,d,l+1),i.push(d))}},"walk");return n(e,-1,2),{entries:r,yOrder:i}},"flattenTree"),HEt=o((e,t,r,i,n,a,s)=>{let l=e.append("g").attr("class","ishikawa-label-group"),h=D_(l,t,r,i+11*n,"ishikawa-label cause","middle",a).node().getBBox();if(s){let d=s.roughSvg.rectangle(h.x-20,h.y-2,h.width+40,h.height+4,{roughness:1.5,seed:s.seed,fill:s.fillColor,fillStyle:"hachure",fillWeight:2.5,hachureGap:5,stroke:s.lineColor,strokeWidth:2});l.insert(()=>d,":first-child").attr("class","ishikawa-label-box")}else l.insert("rect",":first-child").attr("class","ishikawa-label-box").attr("x",h.x-20).attr("y",h.y-2).attr("width",h.width+40).attr("height",h.height+4)},"drawCauseLabel"),tU=o((e,t,r,i,n,a)=>{let s=Math.sqrt(i*i+n*n);if(s===0)return;let l=i/s,u=n/s,h=6,d=-u*h,f=l*h,p=t,m=r,g=`M ${p} ${m} L ${p-l*h*2+d} ${m-u*h*2+f} L ${p-l*h*2-d} ${m-u*h*2-f} Z`,y=a.roughSvg.path(g,{roughness:1,seed:a.seed,fill:a.lineColor,fillStyle:"solid",stroke:a.lineColor,strokeWidth:1});e.append(()=>y)},"drawArrowMarker"),YEt=o((e,t,r,i,n,a,s,l)=>{let u=t.children??[],h=a*(u.length?1:.2),d=-tLe*h,f=rLe*h*n,p=r+d,m=i+f;if(By(e,r,i,p,m,"ishikawa-branch",l),l&&tU(e,r,i,r-p,i-m,l),HEt(e,t.text,p,m,n,s,l),!u.length)return;let{entries:g,yOrder:y}=UEt(u,n),v=g.length,x=new Array(v);for(let[k,E]of y.entries())x[E]=i+f*((k+1)/(v+1));let b=new Map;b.set(-1,{x0:r,y0:i,x1:p,y1:m,childCount:u.length,childrenDrawn:0});let T=-tLe,w=rLe*n,C=n<0?"ishikawa-label up":"ishikawa-label down";for(let[k,E]of g.entries()){let A=x[k],N=b.get(E.parentIndex),P=e.append("g").attr("class","ishikawa-sub-group"),I=0,D=0,_=0;if(E.depth%2===0){let R=N.y1-N.y0;I=aLe(N.x0,N.x1,R?(A-N.y0)/R:.5),D=A,_=I-(E.childCount>0?GEt+E.childCount*VEt:zEt),By(P,I,A,_,A,"ishikawa-sub-branch",l),l&&tU(P,I,A,1,0,l),D_(P,E.text,_,A,"ishikawa-label align","end",s)}else{let R=N.childrenDrawn++;I=aLe(N.x0,N.x1,(N.childCount-R)/(N.childCount+1)),D=N.y0,_=I+T*((A-D)/w),By(P,I,D,_,A,"ishikawa-sub-branch",l),l&&tU(P,I,D,I-_,D-A,l),D_(P,E.text,_,A,C,"end",s)}E.childCount>0&&b.set(k,{x0:I,y0:D,x1:_,y1:A,childCount:E.childCount,childrenDrawn:0})}},"drawBranch"),jEt=o(e=>e.split(/<br\s*\/?>|\n/),"splitLines"),oLe=o((e,t)=>{if(e.length<=t)return e;let r=[];for(let i of e.split(/\s+/)){let n=r.length-1;n>=0&&r[n].length+1+i.length<=t?r[n]+=" "+i:r.push(i)}return r.join(`
-`)},"wrapText"),D_=o((e,t,r,i,n,a,s)=>{let l=jEt(t),u=s*1.05,h=e.append("text").attr("class",n).attr("text-anchor",a).attr("x",r).attr("y",i-(l.length-1)*u/2);for(let[d,f]of l.entries())h.append("tspan").attr("x",r).attr("dy",d===0?0:u).text(f);return h},"drawMultilineText"),aLe=o((e,t,r)=>e+(t-e)*r,"lerp"),By=o((e,t,r,i,n,a,s)=>{if(s){let l=s.roughSvg.line(t,r,i,n,{roughness:1.5,seed:s.seed,stroke:s.lineColor,strokeWidth:2});e.append(()=>l).attr("class",a);return}return e.append("line").attr("class",a).attr("x1",t).attr("y1",r).attr("x2",i).attr("y2",n)},"drawLine"),lLe={draw:WEt}});var XEt,uLe,hLe=z(()=>{"use strict";XEt=o(e=>`
+`+T+"^"},"showPosition"),test_match:o(function(b,T){var k,C,w;if(this.options.backtrack_lexer&&(w={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(w.yylloc.range=this.yylloc.range.slice(0))),C=b[0].match(/(?:\r\n?|\n).*/g),C&&(this.yylineno+=C.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:C?C[C.length-1].length-C[C.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+b[0].length},this.yytext+=b[0],this.match+=b[0],this.matches=b,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(b[0].length),this.matched+=b[0],k=this.performAction.call(this,this.yy,this,T,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),k)return k;if(this._backtrack){for(var S in w)this[S]=w[S];return!1}return!1},"test_match"),next:o(function(){if(this.done)return this.EOF;this._input||(this.done=!0);var b,T,k,C;this._more||(this.yytext="",this.match="");for(var w=this._currentRules(),S=0;S<w.length;S++)if(k=this._input.match(this.rules[w[S]]),k&&(!T||k[0].length>T[0].length)){if(T=k,C=S,this.options.backtrack_lexer){if(b=this.test_match(k,w[S]),b!==!1)return b;if(this._backtrack){T=!1;continue}else return!1}else if(!this.options.flex)break}return T?(b=this.test_match(T,w[C]),b!==!1?b:!1):this._input===""?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+`. Unrecognized text.
+`+this.showPosition(),{text:"",token:null,line:this.yylineno})},"next"),lex:o(function(){var T=this.next();return T||this.lex()},"lex"),begin:o(function(T){this.conditionStack.push(T)},"begin"),popState:o(function(){var T=this.conditionStack.length-1;return T>0?this.conditionStack.pop():this.conditionStack[0]},"popState"),_currentRules:o(function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},"_currentRules"),topState:o(function(T){return T=this.conditionStack.length-1-Math.abs(T||0),T>=0?this.conditionStack[T]:"INITIAL"},"topState"),pushState:o(function(T){this.begin(T)},"pushState"),stateStackSize:o(function(){return this.conditionStack.length},"stateStackSize"),options:{"case-insensitive":!0},performAction:o(function(T,k,C,w){var S=w;switch(C){case 0:return 6;case 1:return 8;case 2:return 8;case 3:return 6;case 4:return 7;case 5:return 13;case 6:return 14;case 7:return 11}},"anonymous"),rules:[/^(?:\s*%%.*)/i,/^(?:ishikawa-beta\b)/i,/^(?:ishikawa\b)/i,/^(?:[\s]+[\n])/i,/^(?:[\n]+)/i,/^(?:[\s]+)/i,/^(?:[^\n]+)/i,/^(?:$)/i],conditions:{INITIAL:{rules:[0,1,2,3,4,5,6,7],inclusive:!0}}};return x})();g.lexer=y;function v(){this.yy={}}return o(v,"Parser"),v.prototype=g,g.Parser=v,new v})();nX.parser=nX;rBe=nX});var sD,iBe=F(()=>{"use strict";Xt();Vr();Nn();sD=class{constructor(){this.stack=[];this.clear=this.clear.bind(this),this.addNode=this.addNode.bind(this),this.getRoot=this.getRoot.bind(this)}static{o(this,"IshikawaDB")}clear(){this.root=void 0,this.stack=[],this.baseLevel=void 0,yr()}getRoot(){return this.root}addNode(t,r){let n=xt.sanitizeText(r,Ae());if(!this.root){this.root={text:n,children:[]},this.stack=[{level:0,node:this.root}],Or(n);return}this.baseLevel??=t;let i=t-this.baseLevel+1;for(i<=0&&(i=1);this.stack.length>1&&this.stack[this.stack.length-1].level>=i;)this.stack.pop();let a=this.stack[this.stack.length-1].node,s={text:n,children:[]};a.children.push(s),this.stack.push({level:i,node:s})}getAccTitle(){return Ar()}setAccTitle(t){kr(t)}getAccDescription(){return _r()}setAccDescription(t){Rr(t)}getDiagramTitle(){return Lr()}setDiagramTitle(t){Or(t)}}});var vIt,yx,xIt,bIt,TIt,uBe,aBe,sBe,oBe,CIt,lBe,wIt,kIt,SIt,iX,EIt,AIt,hBe,oD,cBe,vx,dBe,fBe=F(()=>{"use strict";Xt();Ka();$n();Qt();tr();vIt=14,yx=250,xIt=30,bIt=60,TIt=5,uBe=82*Math.PI/180,aBe=Math.cos(uBe),sBe=Math.sin(uBe),oBe=o((e,t,r)=>{let n=e.node().getBBox(),i=n.width+t*2,a=n.height+t*2;Wr(e,a,i,r),e.attr("viewBox",`${n.x-t} ${n.y-t} ${i} ${a}`)},"applyPaddedViewBox"),CIt=o((e,t,r,n)=>{let a=n.db.getRoot();if(!a)return;let s=Ae(),{look:l,handDrawnSeed:u,themeVariables:h}=s,d=As(s.fontSize)[0]??vIt,f=l==="handDrawn",p=a.children??[],m=s.ishikawa?.diagramPadding??20,g=s.ishikawa?.useMaxWidth??!1,y=xn(t),v=y.append("g").attr("class","ishikawa"),x=f?ut.svg(y.node()):void 0,b=x?{roughSvg:x,seed:u??0,lineColor:h?.lineColor??"#333",fillColor:h?.mainBkg??"#fff"}:void 0,T=`ishikawa-arrow-${t}`;f||v.append("defs").append("marker").attr("id",T).attr("viewBox","0 0 10 10").attr("refX",0).attr("refY",5).attr("markerWidth",6).attr("markerHeight",6).attr("orient","auto").append("path").attr("d","M 10 0 L 0 5 L 10 10 Z").attr("class","ishikawa-arrow");let k=0,C=yx,w=f?void 0:vx(v,k,C,k,C,"ishikawa-spine");if(wIt(v,k,C,a.text,d,b),!p.length){f&&vx(v,k,C,k,C,"ishikawa-spine",b),oBe(y,m,g);return}k-=20;let S=p.filter((P,B)=>B%2===0),R=p.filter((P,B)=>B%2===1),L=lBe(S),N=lBe(R),I=L.total+N.total,_=yx,A=yx;if(I>0){let P=yx*2,B=yx*.3;_=Math.max(B,P*(L.total/I)),A=Math.max(B,P*(N.total/I))}let M=d*2;_=Math.max(_,L.max*M),A=Math.max(A,N.max*M),C=Math.max(_,yx),w&&w.attr("y1",C).attr("y2",C),v.select(".ishikawa-head-group").attr("transform",`translate(0,${C})`);let D=Math.ceil(p.length/2);for(let P=0;P<D;P++){let B=v.append("g").attr("class","ishikawa-pair");for(let[O,$,V]of[[p[P*2],-1,_],[p[P*2+1],1,A]])O&&EIt(B,O,k,C,$,V,d,b);k=B.selectAll("text").nodes().reduce((O,$)=>Math.min(O,$.getBBox().x),1/0)}if(f)vx(v,k,C,0,C,"ishikawa-spine",b);else{w.attr("x1",k);let P=`url(#${T})`;v.selectAll("line.ishikawa-branch, line.ishikawa-sub-branch").attr("marker-start",P)}oBe(y,m,g)},"draw"),lBe=o(e=>{let t=o(r=>r.children.reduce((n,i)=>n+1+t(i),0),"countDescendants");return e.reduce((r,n)=>{let i=t(n);return r.total+=i,r.max=Math.max(r.max,i),r},{total:0,max:0})},"sideStats"),wIt=o((e,t,r,n,i,a)=>{let s=Math.max(6,Math.floor(110/(i*.6))),l=e.append("g").attr("class","ishikawa-head-group").attr("transform",`translate(${t},${r})`),u=oD(l,hBe(n,s),0,0,"ishikawa-head-label","start",i),h=u.node().getBBox(),d=Math.max(60,h.width+6),f=Math.max(40,h.height*2+40),p=`M 0 ${-f/2} L 0 ${f/2} Q ${d*2.4} 0 0 ${-f/2} Z`;if(a){let m=a.roughSvg.path(p,{roughness:1.5,seed:a.seed,fill:a.fillColor,fillStyle:"hachure",fillWeight:2.5,hachureGap:5,stroke:a.lineColor,strokeWidth:2});l.insert(()=>m,":first-child").attr("class","ishikawa-head")}else l.insert("path",":first-child").attr("class","ishikawa-head").attr("d",p);u.attr("transform",`translate(${(d-h.width)/2-h.x+3},${-h.y-h.height/2})`)},"drawHead"),kIt=o((e,t)=>{let r=[],n=[],i=o((a,s,l)=>{let u=t===-1?[...a].reverse():a;for(let h of u){let d=r.length,f=h.children??[];r.push({depth:l,text:hBe(h.text,15),parentIndex:s,childCount:f.length}),l%2===0?(n.push(d),f.length&&i(f,d,l+1)):(f.length&&i(f,d,l+1),n.push(d))}},"walk");return i(e,-1,2),{entries:r,yOrder:n}},"flattenTree"),SIt=o((e,t,r,n,i,a,s)=>{let l=e.append("g").attr("class","ishikawa-label-group"),h=oD(l,t,r,n+11*i,"ishikawa-label cause","middle",a).node().getBBox();if(s){let d=s.roughSvg.rectangle(h.x-20,h.y-2,h.width+40,h.height+4,{roughness:1.5,seed:s.seed,fill:s.fillColor,fillStyle:"hachure",fillWeight:2.5,hachureGap:5,stroke:s.lineColor,strokeWidth:2});l.insert(()=>d,":first-child").attr("class","ishikawa-label-box")}else l.insert("rect",":first-child").attr("class","ishikawa-label-box").attr("x",h.x-20).attr("y",h.y-2).attr("width",h.width+40).attr("height",h.height+4)},"drawCauseLabel"),iX=o((e,t,r,n,i,a)=>{let s=Math.sqrt(n*n+i*i);if(s===0)return;let l=n/s,u=i/s,h=6,d=-u*h,f=l*h,p=t,m=r,g=`M ${p} ${m} L ${p-l*h*2+d} ${m-u*h*2+f} L ${p-l*h*2-d} ${m-u*h*2-f} Z`,y=a.roughSvg.path(g,{roughness:1,seed:a.seed,fill:a.lineColor,fillStyle:"solid",stroke:a.lineColor,strokeWidth:1});e.append(()=>y)},"drawArrowMarker"),EIt=o((e,t,r,n,i,a,s,l)=>{let u=t.children??[],h=a*(u.length?1:.2),d=-aBe*h,f=sBe*h*i,p=r+d,m=n+f;if(vx(e,r,n,p,m,"ishikawa-branch",l),l&&iX(e,r,n,r-p,n-m,l),SIt(e,t.text,p,m,i,s,l),!u.length)return;let{entries:g,yOrder:y}=kIt(u,i),v=g.length,x=new Array(v);for(let[w,S]of y.entries())x[S]=n+f*((w+1)/(v+1));let b=new Map;b.set(-1,{x0:r,y0:n,x1:p,y1:m,childCount:u.length,childrenDrawn:0});let T=-aBe,k=sBe*i,C=i<0?"ishikawa-label up":"ishikawa-label down";for(let[w,S]of g.entries()){let R=x[w],L=b.get(S.parentIndex),N=e.append("g").attr("class","ishikawa-sub-group"),I=0,_=0,A=0;if(S.depth%2===0){let M=L.y1-L.y0;I=cBe(L.x0,L.x1,M?(R-L.y0)/M:.5),_=R,A=I-(S.childCount>0?bIt+S.childCount*TIt:xIt),vx(N,I,R,A,R,"ishikawa-sub-branch",l),l&&iX(N,I,R,1,0,l),oD(N,S.text,A,R,"ishikawa-label align","end",s)}else{let M=L.childrenDrawn++;I=cBe(L.x0,L.x1,(L.childCount-M)/(L.childCount+1)),_=L.y0,A=I+T*((R-_)/k),vx(N,I,_,A,R,"ishikawa-sub-branch",l),l&&iX(N,I,_,I-A,_-R,l),oD(N,S.text,A,R,C,"end",s)}S.childCount>0&&b.set(w,{x0:I,y0:_,x1:A,y1:R,childCount:S.childCount,childrenDrawn:0})}},"drawBranch"),AIt=o(e=>e.split(/<br\s*\/?>|\n/),"splitLines"),hBe=o((e,t)=>{if(e.length<=t)return e;let r=[];for(let n of e.split(/\s+/)){let i=r.length-1;i>=0&&r[i].length+1+n.length<=t?r[i]+=" "+n:r.push(n)}return r.join(`
+`)},"wrapText"),oD=o((e,t,r,n,i,a,s)=>{let l=AIt(t),u=s*1.05,h=e.append("text").attr("class",i).attr("text-anchor",a).attr("x",r).attr("y",n-(l.length-1)*u/2);for(let[d,f]of l.entries())h.append("tspan").attr("x",r).attr("dy",d===0?0:u).text(f);return h},"drawMultilineText"),cBe=o((e,t,r)=>e+(t-e)*r,"lerp"),vx=o((e,t,r,n,i,a,s)=>{if(s){let l=s.roughSvg.line(t,r,n,i,{roughness:1.5,seed:s.seed,stroke:s.lineColor,strokeWidth:2});e.append(()=>l).attr("class",a);return}return e.append("line").attr("class",a).attr("x1",t).attr("y1",r).attr("x2",n).attr("y2",i)},"drawLine"),dBe={draw:CIt}});var RIt,pBe,mBe=F(()=>{"use strict";RIt=o(e=>`
 .ishikawa .ishikawa-spine,
 .ishikawa .ishikawa-branch,
 .ishikawa .ishikawa-sub-branch {
@@ -3209,12 +3241,12 @@
 .ishikawa .ishikawa-label.down {
   dominant-baseline: hanging;
 }
-`,"getStyles"),uLe=XEt});var dLe={};xr(dLe,{diagram:()=>KEt});var KEt,fLe=z(()=>{"use strict";JRe();eLe();cLe();hLe();KEt={parser:QRe,get db(){return new __},renderer:lLe,styles:uLe}});var rU,gLe,yLe=z(()=>{"use strict";rU=(function(){var e=o(function(b,T,w,C){for(w=w||{},C=b.length;C--;w[b[C]]=T);return w},"o"),t=[5,8],r=[7,8,11,12,17,19,22,24],i=[1,17],n=[1,18],a=[7,8,11,12,14,15,16,17,19,20,21,22,24,27],s=[1,31],l=[1,39],u=[7,8,11,12,17,19,22,24,27],h=[1,57],d=[1,56],f=[1,58],p=[1,59],m=[1,60],g=[7,8,11,12,16,17,19,20,22,24,27,31,32,33],y={trace:o(function(){},"trace"),yy:{},symbols_:{error:2,start:3,optNewlines:4,VENN:5,document:6,EOF:7,NEWLINE:8,line:9,statement:10,TITLE:11,SET:12,identifier:13,BRACKET_LABEL:14,COLON:15,NUMERIC:16,UNION:17,identifierList:18,TEXT:19,IDENTIFIER:20,STRING:21,INDENT_TEXT:22,indentedTextTail:23,STYLE:24,stylesOpt:25,styleField:26,COMMA:27,styleValue:28,valueTokens:29,valueToken:30,HEXCOLOR:31,RGBCOLOR:32,RGBACOLOR:33,$accept:0,$end:1},terminals_:{2:"error",5:"VENN",7:"EOF",8:"NEWLINE",11:"TITLE",12:"SET",14:"BRACKET_LABEL",15:"COLON",16:"NUMERIC",17:"UNION",19:"TEXT",20:"IDENTIFIER",21:"STRING",22:"INDENT_TEXT",24:"STYLE",27:"COMMA",31:"HEXCOLOR",32:"RGBCOLOR",33:"RGBACOLOR"},productions_:[0,[3,4],[4,0],[4,2],[6,0],[6,2],[9,1],[9,1],[10,1],[10,2],[10,3],[10,4],[10,5],[10,2],[10,3],[10,4],[10,5],[10,3],[10,3],[10,3],[10,4],[10,4],[10,2],[10,3],[23,1],[23,1],[23,1],[23,2],[23,2],[25,1],[25,3],[26,3],[28,1],[28,1],[29,1],[29,2],[30,1],[30,1],[30,1],[30,1],[30,1],[18,1],[18,3],[13,1],[13,1]],performAction:o(function(T,w,C,k,E,A,N){var P=A.length-1;switch(E){case 1:return A[P-1];case 2:case 3:case 4:this.$=[];break;case 5:A[P-1].push(A[P]),this.$=A[P-1];break;case 6:this.$=[];break;case 7:case 22:case 32:case 36:case 37:case 38:case 39:case 40:this.$=A[P];break;case 8:k.setDiagramTitle(A[P].substr(6)),this.$=A[P].substr(6);break;case 9:k.addSubsetData([A[P]],void 0,void 0),k.setIndentMode&&k.setIndentMode(!0);break;case 10:k.addSubsetData([A[P-1]],A[P],void 0),k.setIndentMode&&k.setIndentMode(!0);break;case 11:k.addSubsetData([A[P-2]],void 0,parseFloat(A[P])),k.setIndentMode&&k.setIndentMode(!0);break;case 12:k.addSubsetData([A[P-3]],A[P-2],parseFloat(A[P])),k.setIndentMode&&k.setIndentMode(!0);break;case 13:if(A[P].length<2)throw new Error("union requires multiple identifiers");k.validateUnionIdentifiers&&k.validateUnionIdentifiers(A[P]),k.addSubsetData(A[P],void 0,void 0),k.setIndentMode&&k.setIndentMode(!0);break;case 14:if(A[P-1].length<2)throw new Error("union requires multiple identifiers");k.validateUnionIdentifiers&&k.validateUnionIdentifiers(A[P-1]),k.addSubsetData(A[P-1],A[P],void 0),k.setIndentMode&&k.setIndentMode(!0);break;case 15:if(A[P-2].length<2)throw new Error("union requires multiple identifiers");k.validateUnionIdentifiers&&k.validateUnionIdentifiers(A[P-2]),k.addSubsetData(A[P-2],void 0,parseFloat(A[P])),k.setIndentMode&&k.setIndentMode(!0);break;case 16:if(A[P-3].length<2)throw new Error("union requires multiple identifiers");k.validateUnionIdentifiers&&k.validateUnionIdentifiers(A[P-3]),k.addSubsetData(A[P-3],A[P-2],parseFloat(A[P])),k.setIndentMode&&k.setIndentMode(!0);break;case 17:case 18:case 19:k.addTextData(A[P-1],A[P],void 0);break;case 20:case 21:k.addTextData(A[P-2],A[P-1],A[P]);break;case 23:k.addStyleData(A[P-1],A[P]);break;case 24:case 25:case 26:var I=k.getCurrentSets();if(!I)throw new Error("text requires set");k.addTextData(I,A[P],void 0);break;case 27:case 28:var I=k.getCurrentSets();if(!I)throw new Error("text requires set");k.addTextData(I,A[P-1],A[P]);break;case 29:case 41:this.$=[A[P]];break;case 30:case 42:this.$=[...A[P-2],A[P]];break;case 31:this.$=[A[P-2],A[P]];break;case 33:this.$=A[P].join(" ");break;case 34:this.$=[A[P]];break;case 35:A[P-1].push(A[P]),this.$=A[P-1];break;case 43:case 44:this.$=A[P];break}},"anonymous"),table:[e(t,[2,2],{3:1,4:2}),{1:[3]},{5:[1,3],8:[1,4]},e(r,[2,4],{6:5}),e(t,[2,3]),{7:[1,6],8:[1,8],9:7,10:9,11:[1,10],12:[1,11],17:[1,12],19:[1,13],22:[1,14],24:[1,15]},{1:[2,1]},e(r,[2,5]),e(r,[2,6]),e(r,[2,7]),e(r,[2,8]),{13:16,20:i,21:n},{13:20,18:19,20:i,21:n},{13:20,18:21,20:i,21:n},{16:[1,25],20:[1,23],21:[1,24],23:22},{13:20,18:26,20:i,21:n},e(r,[2,9],{14:[1,27],15:[1,28]}),e(a,[2,43]),e(a,[2,44]),e(r,[2,13],{14:[1,29],15:[1,30],27:s}),e(a,[2,41]),{16:[1,34],20:[1,32],21:[1,33],27:s},e(r,[2,22]),e(r,[2,24],{14:[1,35]}),e(r,[2,25],{14:[1,36]}),e(r,[2,26]),{20:l,25:37,26:38,27:s},e(r,[2,10],{15:[1,40]}),{16:[1,41]},e(r,[2,14],{15:[1,42]}),{16:[1,43]},{13:44,20:i,21:n},e(r,[2,17],{14:[1,45]}),e(r,[2,18],{14:[1,46]}),e(r,[2,19]),e(r,[2,27]),e(r,[2,28]),e(r,[2,23],{27:[1,47]}),e(u,[2,29]),{15:[1,48]},{16:[1,49]},e(r,[2,11]),{16:[1,50]},e(r,[2,15]),e(a,[2,42]),e(r,[2,20]),e(r,[2,21]),{20:l,26:51},{16:h,20:d,21:[1,53],28:52,29:54,30:55,31:f,32:p,33:m},e(r,[2,12]),e(r,[2,16]),e(u,[2,30]),e(u,[2,31]),e(u,[2,32]),e(u,[2,33],{30:61,16:h,20:d,31:f,32:p,33:m}),e(g,[2,34]),e(g,[2,36]),e(g,[2,37]),e(g,[2,38]),e(g,[2,39]),e(g,[2,40]),e(g,[2,35])],defaultActions:{6:[2,1]},parseError:o(function(T,w){if(w.recoverable)this.trace(T);else{var C=new Error(T);throw C.hash=w,C}},"parseError"),parse:o(function(T){var w=this,C=[0],k=[],E=[null],A=[],N=this.table,P="",I=0,D=0,_=0,R=2,M=1,L=A.slice.call(arguments,1),B=Object.create(this.lexer),O={yy:{}};for(var $ in this.yy)Object.prototype.hasOwnProperty.call(this.yy,$)&&(O.yy[$]=this.yy[$]);B.setInput(T,O.yy),O.yy.lexer=B,O.yy.parser=this,typeof B.yylloc>"u"&&(B.yylloc={});var G=B.yylloc;A.push(G);var F=B.options&&B.options.ranges;typeof O.yy.parseError=="function"?this.parseError=O.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function V(Ie){C.length=C.length-2*Ie,E.length=E.length-Ie,A.length=A.length-Ie}o(V,"popStack");function H(){var Ie;return Ie=k.pop()||B.lex()||M,typeof Ie!="number"&&(Ie instanceof Array&&(k=Ie,Ie=k.pop()),Ie=w.symbols_[Ie]||Ie),Ie}o(H,"lex");for(var j,U,Q,Y,ae,J,te={},re,ee,Te,ue;;){if(Q=C[C.length-1],this.defaultActions[Q]?Y=this.defaultActions[Q]:((j===null||typeof j>"u")&&(j=H()),Y=N[Q]&&N[Q][j]),typeof Y>"u"||!Y.length||!Y[0]){var De="";ue=[];for(re in N[Q])this.terminals_[re]&&re>R&&ue.push("'"+this.terminals_[re]+"'");B.showPosition?De="Parse error on line "+(I+1)+`:
+`,"getStyles"),pBe=RIt});var gBe={};ir(gBe,{diagram:()=>_It});var _It,yBe=F(()=>{"use strict";nBe();iBe();fBe();mBe();_It={parser:rBe,get db(){return new sD},renderer:dBe,styles:pBe}});var aX,bBe,TBe=F(()=>{"use strict";aX=(function(){var e=o(function(b,T,k,C){for(k=k||{},C=b.length;C--;k[b[C]]=T);return k},"o"),t=[5,8],r=[7,8,11,12,17,19,22,24],n=[1,17],i=[1,18],a=[7,8,11,12,14,15,16,17,19,20,21,22,24,27],s=[1,31],l=[1,39],u=[7,8,11,12,17,19,22,24,27],h=[1,57],d=[1,56],f=[1,58],p=[1,59],m=[1,60],g=[7,8,11,12,16,17,19,20,22,24,27,31,32,33],y={trace:o(function(){},"trace"),yy:{},symbols_:{error:2,start:3,optNewlines:4,VENN:5,document:6,EOF:7,NEWLINE:8,line:9,statement:10,TITLE:11,SET:12,identifier:13,BRACKET_LABEL:14,COLON:15,NUMERIC:16,UNION:17,identifierList:18,TEXT:19,IDENTIFIER:20,STRING:21,INDENT_TEXT:22,indentedTextTail:23,STYLE:24,stylesOpt:25,styleField:26,COMMA:27,styleValue:28,valueTokens:29,valueToken:30,HEXCOLOR:31,RGBCOLOR:32,RGBACOLOR:33,$accept:0,$end:1},terminals_:{2:"error",5:"VENN",7:"EOF",8:"NEWLINE",11:"TITLE",12:"SET",14:"BRACKET_LABEL",15:"COLON",16:"NUMERIC",17:"UNION",19:"TEXT",20:"IDENTIFIER",21:"STRING",22:"INDENT_TEXT",24:"STYLE",27:"COMMA",31:"HEXCOLOR",32:"RGBCOLOR",33:"RGBACOLOR"},productions_:[0,[3,4],[4,0],[4,2],[6,0],[6,2],[9,1],[9,1],[10,1],[10,2],[10,3],[10,4],[10,5],[10,2],[10,3],[10,4],[10,5],[10,3],[10,3],[10,3],[10,4],[10,4],[10,2],[10,3],[23,1],[23,1],[23,1],[23,2],[23,2],[25,1],[25,3],[26,3],[28,1],[28,1],[29,1],[29,2],[30,1],[30,1],[30,1],[30,1],[30,1],[18,1],[18,3],[13,1],[13,1]],performAction:o(function(T,k,C,w,S,R,L){var N=R.length-1;switch(S){case 1:return R[N-1];case 2:case 3:case 4:this.$=[];break;case 5:R[N-1].push(R[N]),this.$=R[N-1];break;case 6:this.$=[];break;case 7:case 22:case 32:case 36:case 37:case 38:case 39:case 40:this.$=R[N];break;case 8:w.setDiagramTitle(R[N].substr(6)),this.$=R[N].substr(6);break;case 9:w.addSubsetData([R[N]],void 0,void 0),w.setIndentMode&&w.setIndentMode(!0);break;case 10:w.addSubsetData([R[N-1]],R[N],void 0),w.setIndentMode&&w.setIndentMode(!0);break;case 11:w.addSubsetData([R[N-2]],void 0,parseFloat(R[N])),w.setIndentMode&&w.setIndentMode(!0);break;case 12:w.addSubsetData([R[N-3]],R[N-2],parseFloat(R[N])),w.setIndentMode&&w.setIndentMode(!0);break;case 13:if(R[N].length<2)throw new Error("union requires multiple identifiers");w.validateUnionIdentifiers&&w.validateUnionIdentifiers(R[N]),w.addSubsetData(R[N],void 0,void 0),w.setIndentMode&&w.setIndentMode(!0);break;case 14:if(R[N-1].length<2)throw new Error("union requires multiple identifiers");w.validateUnionIdentifiers&&w.validateUnionIdentifiers(R[N-1]),w.addSubsetData(R[N-1],R[N],void 0),w.setIndentMode&&w.setIndentMode(!0);break;case 15:if(R[N-2].length<2)throw new Error("union requires multiple identifiers");w.validateUnionIdentifiers&&w.validateUnionIdentifiers(R[N-2]),w.addSubsetData(R[N-2],void 0,parseFloat(R[N])),w.setIndentMode&&w.setIndentMode(!0);break;case 16:if(R[N-3].length<2)throw new Error("union requires multiple identifiers");w.validateUnionIdentifiers&&w.validateUnionIdentifiers(R[N-3]),w.addSubsetData(R[N-3],R[N-2],parseFloat(R[N])),w.setIndentMode&&w.setIndentMode(!0);break;case 17:case 18:case 19:w.addTextData(R[N-1],R[N],void 0);break;case 20:case 21:w.addTextData(R[N-2],R[N-1],R[N]);break;case 23:w.addStyleData(R[N-1],R[N]);break;case 24:case 25:case 26:var I=w.getCurrentSets();if(!I)throw new Error("text requires set");w.addTextData(I,R[N],void 0);break;case 27:case 28:var I=w.getCurrentSets();if(!I)throw new Error("text requires set");w.addTextData(I,R[N-1],R[N]);break;case 29:case 41:this.$=[R[N]];break;case 30:case 42:this.$=[...R[N-2],R[N]];break;case 31:this.$=[R[N-2],R[N]];break;case 33:this.$=R[N].join(" ");break;case 34:this.$=[R[N]];break;case 35:R[N-1].push(R[N]),this.$=R[N-1];break;case 43:case 44:this.$=R[N];break}},"anonymous"),table:[e(t,[2,2],{3:1,4:2}),{1:[3]},{5:[1,3],8:[1,4]},e(r,[2,4],{6:5}),e(t,[2,3]),{7:[1,6],8:[1,8],9:7,10:9,11:[1,10],12:[1,11],17:[1,12],19:[1,13],22:[1,14],24:[1,15]},{1:[2,1]},e(r,[2,5]),e(r,[2,6]),e(r,[2,7]),e(r,[2,8]),{13:16,20:n,21:i},{13:20,18:19,20:n,21:i},{13:20,18:21,20:n,21:i},{16:[1,25],20:[1,23],21:[1,24],23:22},{13:20,18:26,20:n,21:i},e(r,[2,9],{14:[1,27],15:[1,28]}),e(a,[2,43]),e(a,[2,44]),e(r,[2,13],{14:[1,29],15:[1,30],27:s}),e(a,[2,41]),{16:[1,34],20:[1,32],21:[1,33],27:s},e(r,[2,22]),e(r,[2,24],{14:[1,35]}),e(r,[2,25],{14:[1,36]}),e(r,[2,26]),{20:l,25:37,26:38,27:s},e(r,[2,10],{15:[1,40]}),{16:[1,41]},e(r,[2,14],{15:[1,42]}),{16:[1,43]},{13:44,20:n,21:i},e(r,[2,17],{14:[1,45]}),e(r,[2,18],{14:[1,46]}),e(r,[2,19]),e(r,[2,27]),e(r,[2,28]),e(r,[2,23],{27:[1,47]}),e(u,[2,29]),{15:[1,48]},{16:[1,49]},e(r,[2,11]),{16:[1,50]},e(r,[2,15]),e(a,[2,42]),e(r,[2,20]),e(r,[2,21]),{20:l,26:51},{16:h,20:d,21:[1,53],28:52,29:54,30:55,31:f,32:p,33:m},e(r,[2,12]),e(r,[2,16]),e(u,[2,30]),e(u,[2,31]),e(u,[2,32]),e(u,[2,33],{30:61,16:h,20:d,31:f,32:p,33:m}),e(g,[2,34]),e(g,[2,36]),e(g,[2,37]),e(g,[2,38]),e(g,[2,39]),e(g,[2,40]),e(g,[2,35])],defaultActions:{6:[2,1]},parseError:o(function(T,k){if(k.recoverable)this.trace(T);else{var C=new Error(T);throw C.hash=k,C}},"parseError"),parse:o(function(T){var k=this,C=[0],w=[],S=[null],R=[],L=this.table,N="",I=0,_=0,A=0,M=2,D=1,P=R.slice.call(arguments,1),B=Object.create(this.lexer),O={yy:{}};for(var $ in this.yy)Object.prototype.hasOwnProperty.call(this.yy,$)&&(O.yy[$]=this.yy[$]);B.setInput(T,O.yy),O.yy.lexer=B,O.yy.parser=this,typeof B.yylloc>"u"&&(B.yylloc={});var V=B.yylloc;R.push(V);var G=B.options&&B.options.ranges;typeof O.yy.parseError=="function"?this.parseError=O.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function z(Ge){C.length=C.length-2*Ge,S.length=S.length-Ge,R.length=R.length-Ge}o(z,"popStack");function W(){var Ge;return Ge=w.pop()||B.lex()||D,typeof Ge!="number"&&(Ge instanceof Array&&(w=Ge,Ge=w.pop()),Ge=k.symbols_[Ge]||Ge),Ge}o(W,"lex");for(var H,j,Q,U,oe,te,le={},ie,ae,Re,be;;){if(Q=C[C.length-1],this.defaultActions[Q]?U=this.defaultActions[Q]:((H===null||typeof H>"u")&&(H=W()),U=L[Q]&&L[Q][H]),typeof U>"u"||!U.length||!U[0]){var Pe="";be=[];for(ie in L[Q])this.terminals_[ie]&&ie>M&&be.push("'"+this.terminals_[ie]+"'");B.showPosition?Pe="Parse error on line "+(I+1)+`:
 `+B.showPosition()+`
-Expecting `+ue.join(", ")+", got '"+(this.terminals_[j]||j)+"'":De="Parse error on line "+(I+1)+": Unexpected "+(j==M?"end of input":"'"+(this.terminals_[j]||j)+"'"),this.parseError(De,{text:B.match,token:this.terminals_[j]||j,line:B.yylineno,loc:G,expected:ue})}if(Y[0]instanceof Array&&Y.length>1)throw new Error("Parse Error: multiple actions possible at state: "+Q+", token: "+j);switch(Y[0]){case 1:C.push(j),E.push(B.yytext),A.push(B.yylloc),C.push(Y[1]),j=null,U?(j=U,U=null):(D=B.yyleng,P=B.yytext,I=B.yylineno,G=B.yylloc,_>0&&_--);break;case 2:if(ee=this.productions_[Y[1]][1],te.$=E[E.length-ee],te._$={first_line:A[A.length-(ee||1)].first_line,last_line:A[A.length-1].last_line,first_column:A[A.length-(ee||1)].first_column,last_column:A[A.length-1].last_column},F&&(te._$.range=[A[A.length-(ee||1)].range[0],A[A.length-1].range[1]]),J=this.performAction.apply(te,[P,D,I,O.yy,Y[1],E,A].concat(L)),typeof J<"u")return J;ee&&(C=C.slice(0,-1*ee*2),E=E.slice(0,-1*ee),A=A.slice(0,-1*ee)),C.push(this.productions_[Y[1]][0]),E.push(te.$),A.push(te._$),Te=N[C[C.length-2]][C[C.length-1]],C.push(Te);break;case 3:return!0}}return!0},"parse")},v=(function(){var b={EOF:1,parseError:o(function(w,C){if(this.yy.parser)this.yy.parser.parseError(w,C);else throw new Error(w)},"parseError"),setInput:o(function(T,w){return this.yy=w||this.yy||{},this._input=T,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},"setInput"),input:o(function(){var T=this._input[0];this.yytext+=T,this.yyleng++,this.offset++,this.match+=T,this.matched+=T;var w=T.match(/(?:\r\n?|\n).*/g);return w?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),T},"input"),unput:o(function(T){var w=T.length,C=T.split(/(?:\r\n?|\n)/g);this._input=T+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-w),this.offset-=w;var k=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),C.length-1&&(this.yylineno-=C.length-1);var E=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:C?(C.length===k.length?this.yylloc.first_column:0)+k[k.length-C.length].length-C[0].length:this.yylloc.first_column-w},this.options.ranges&&(this.yylloc.range=[E[0],E[0]+this.yyleng-w]),this.yyleng=this.yytext.length,this},"unput"),more:o(function(){return this._more=!0,this},"more"),reject:o(function(){if(this.options.backtrack_lexer)this._backtrack=!0;else return this.parseError("Lexical error on line "+(this.yylineno+1)+`. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).
-`+this.showPosition(),{text:"",token:null,line:this.yylineno});return this},"reject"),less:o(function(T){this.unput(this.match.slice(T))},"less"),pastInput:o(function(){var T=this.matched.substr(0,this.matched.length-this.match.length);return(T.length>20?"...":"")+T.substr(-20).replace(/\n/g,"")},"pastInput"),upcomingInput:o(function(){var T=this.match;return T.length<20&&(T+=this._input.substr(0,20-T.length)),(T.substr(0,20)+(T.length>20?"...":"")).replace(/\n/g,"")},"upcomingInput"),showPosition:o(function(){var T=this.pastInput(),w=new Array(T.length+1).join("-");return T+this.upcomingInput()+`
-`+w+"^"},"showPosition"),test_match:o(function(T,w){var C,k,E;if(this.options.backtrack_lexer&&(E={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(E.yylloc.range=this.yylloc.range.slice(0))),k=T[0].match(/(?:\r\n?|\n).*/g),k&&(this.yylineno+=k.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:k?k[k.length-1].length-k[k.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+T[0].length},this.yytext+=T[0],this.match+=T[0],this.matches=T,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(T[0].length),this.matched+=T[0],C=this.performAction.call(this,this.yy,this,w,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),C)return C;if(this._backtrack){for(var A in E)this[A]=E[A];return!1}return!1},"test_match"),next:o(function(){if(this.done)return this.EOF;this._input||(this.done=!0);var T,w,C,k;this._more||(this.yytext="",this.match="");for(var E=this._currentRules(),A=0;A<E.length;A++)if(C=this._input.match(this.rules[E[A]]),C&&(!w||C[0].length>w[0].length)){if(w=C,k=A,this.options.backtrack_lexer){if(T=this.test_match(C,E[A]),T!==!1)return T;if(this._backtrack){w=!1;continue}else return!1}else if(!this.options.flex)break}return w?(T=this.test_match(w,E[k]),T!==!1?T:!1):this._input===""?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+`. Unrecognized text.
-`+this.showPosition(),{text:"",token:null,line:this.yylineno})},"next"),lex:o(function(){var w=this.next();return w||this.lex()},"lex"),begin:o(function(w){this.conditionStack.push(w)},"begin"),popState:o(function(){var w=this.conditionStack.length-1;return w>0?this.conditionStack.pop():this.conditionStack[0]},"popState"),_currentRules:o(function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},"_currentRules"),topState:o(function(w){return w=this.conditionStack.length-1-Math.abs(w||0),w>=0?this.conditionStack[w]:"INITIAL"},"topState"),pushState:o(function(w){this.begin(w)},"pushState"),stateStackSize:o(function(){return this.conditionStack.length},"stateStackSize"),options:{"case-insensitive":!0},performAction:o(function(w,C,k,E){var A=E;switch(k){case 0:break;case 1:break;case 2:break;case 3:if(w.getIndentMode&&w.getIndentMode())return w.consumeIndentText=!0,this.begin("INITIAL"),22;break;case 4:break;case 5:w.setIndentMode&&w.setIndentMode(!1),this.begin("INITIAL"),this.unput(C.yytext);break;case 6:return this.begin("bol"),8;break;case 7:break;case 8:break;case 9:return 7;case 10:return 11;case 11:return 5;case 12:return 12;case 13:return 17;case 14:if(w.consumeIndentText)w.consumeIndentText=!1;else return 19;break;case 15:return 24;case 16:return C.yytext=C.yytext.slice(2,-2),14;break;case 17:return C.yytext=C.yytext.slice(1,-1).trim(),14;break;case 18:return 16;case 19:return 31;case 20:return 33;case 21:return 32;case 22:return 20;case 23:return 21;case 24:return 27;case 25:return 15}},"anonymous"),rules:[/^(?:%%(?!\{)[^\n]*)/i,/^(?:[^\}]%%[^\n]*)/i,/^(?:[ \t]+(?=[\n\r]))/i,/^(?:[ \t]+(?=text\b))/i,/^(?:[ \t]+)/i,/^(?:[^ \t\n\r])/i,/^(?:[\n\r]+)/i,/^(?:%%[^\n]*)/i,/^(?:[ \t]+)/i,/^(?:$)/i,/^(?:title\s[^#\n;]+)/i,/^(?:venn-beta\b)/i,/^(?:set\b)/i,/^(?:union\b)/i,/^(?:text\b)/i,/^(?:style\b)/i,/^(?:\["[^\"]*"\])/i,/^(?:\[[^\]\"]+\])/i,/^(?:[+-]?(\d+(\.\d+)?|\.\d+))/i,/^(?:#[0-9a-fA-F]{3,8})/i,/^(?:rgba\(\s*[0-9.]+\s*[,]\s*[0-9.]+\s*[,]\s*[0-9.]+\s*[,]\s*[0-9.]+\s*\))/i,/^(?:rgb\(\s*[0-9.]+\s*[,]\s*[0-9.]+\s*[,]\s*[0-9.]+\s*\))/i,/^(?:[A-Za-z_][A-Za-z0-9\-_]*)/i,/^(?:"[^\"]*")/i,/^(?:,)/i,/^(?::)/i],conditions:{bol:{rules:[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25],inclusive:!0},INITIAL:{rules:[0,1,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25],inclusive:!0}}};return b})();y.lexer=v;function x(){this.yy={}}return o(x,"Parser"),x.prototype=y,y.Parser=x,new x})();rU.parser=rU;gLe=rU});function h5t(){return Gr(u5t,Nt().venn)}var iU,nU,aU,sU,oU,lU,JEt,e5t,pC,t5t,r5t,i5t,n5t,R_,a5t,s5t,o5t,l5t,c5t,u5t,d5t,vLe,xLe=z(()=>{"use strict";Xt();br();Ci();Bn();iU=[],nU=[],aU=[],sU=new Set,lU=!1,JEt=o((e,t,r)=>{let i=R_(e).sort(),n=r??10/Math.pow(e.length,2);oU=i,i.length===1&&sU.add(i[0]),iU.push({sets:i,size:n,label:t?pC(t):void 0})},"addSubsetData"),e5t=o(()=>iU,"getSubsetData"),pC=o(e=>{let t=e.trim();return t.length>=2&&t.startsWith('"')&&t.endsWith('"')?t.slice(1,-1):t},"normalizeText"),t5t=o(e=>e&&pC(e),"normalizeStyleValue"),r5t=o((e,t,r)=>{let i=pC(t);nU.push({sets:R_(e).sort(),id:i,label:r?pC(r):void 0})},"addTextData"),i5t=o((e,t)=>{let r=R_(e).sort(),i={};for(let[n,a]of t)i[n]=t5t(a)??a;aU.push({targets:r,styles:i})},"addStyleData"),n5t=o(()=>aU,"getStyleData"),R_=o(e=>e.map(t=>pC(t)),"normalizeIdentifierList"),a5t=o(e=>{let r=R_(e).filter(i=>!sU.has(i));if(r.length>0)throw new Error(`unknown set identifier: ${r.join(", ")}`)},"validateUnionIdentifiers"),s5t=o(()=>nU,"getTextData"),o5t=o(()=>oU,"getCurrentSets"),l5t=o(()=>lU,"getIndentMode"),c5t=o(e=>{lU=e},"setIndentMode"),u5t=or.venn;o(h5t,"getConfig");d5t=o(()=>{gr(),iU.length=0,nU.length=0,aU.length=0,sU.clear(),oU=void 0,lU=!1},"customClear"),vLe={getConfig:h5t,clear:d5t,setAccTitle:Cr,getAccTitle:kr,setDiagramTitle:Ar,getDiagramTitle:Er,getAccDescription:Sr,setAccDescription:wr,addSubsetData:JEt,getSubsetData:e5t,addTextData:r5t,addStyleData:i5t,validateUnionIdentifiers:a5t,getTextData:s5t,getStyleData:n5t,getCurrentSets:o5t,getIndentMode:l5t,setIndentMode:c5t}});var f5t,bLe,TLe=z(()=>{"use strict";f5t=o(e=>`
+Expecting `+be.join(", ")+", got '"+(this.terminals_[H]||H)+"'":Pe="Parse error on line "+(I+1)+": Unexpected "+(H==D?"end of input":"'"+(this.terminals_[H]||H)+"'"),this.parseError(Pe,{text:B.match,token:this.terminals_[H]||H,line:B.yylineno,loc:V,expected:be})}if(U[0]instanceof Array&&U.length>1)throw new Error("Parse Error: multiple actions possible at state: "+Q+", token: "+H);switch(U[0]){case 1:C.push(H),S.push(B.yytext),R.push(B.yylloc),C.push(U[1]),H=null,j?(H=j,j=null):(_=B.yyleng,N=B.yytext,I=B.yylineno,V=B.yylloc,A>0&&A--);break;case 2:if(ae=this.productions_[U[1]][1],le.$=S[S.length-ae],le._$={first_line:R[R.length-(ae||1)].first_line,last_line:R[R.length-1].last_line,first_column:R[R.length-(ae||1)].first_column,last_column:R[R.length-1].last_column},G&&(le._$.range=[R[R.length-(ae||1)].range[0],R[R.length-1].range[1]]),te=this.performAction.apply(le,[N,_,I,O.yy,U[1],S,R].concat(P)),typeof te<"u")return te;ae&&(C=C.slice(0,-1*ae*2),S=S.slice(0,-1*ae),R=R.slice(0,-1*ae)),C.push(this.productions_[U[1]][0]),S.push(le.$),R.push(le._$),Re=L[C[C.length-2]][C[C.length-1]],C.push(Re);break;case 3:return!0}}return!0},"parse")},v=(function(){var b={EOF:1,parseError:o(function(k,C){if(this.yy.parser)this.yy.parser.parseError(k,C);else throw new Error(k)},"parseError"),setInput:o(function(T,k){return this.yy=k||this.yy||{},this._input=T,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},"setInput"),input:o(function(){var T=this._input[0];this.yytext+=T,this.yyleng++,this.offset++,this.match+=T,this.matched+=T;var k=T.match(/(?:\r\n?|\n).*/g);return k?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),T},"input"),unput:o(function(T){var k=T.length,C=T.split(/(?:\r\n?|\n)/g);this._input=T+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-k),this.offset-=k;var w=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),C.length-1&&(this.yylineno-=C.length-1);var S=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:C?(C.length===w.length?this.yylloc.first_column:0)+w[w.length-C.length].length-C[0].length:this.yylloc.first_column-k},this.options.ranges&&(this.yylloc.range=[S[0],S[0]+this.yyleng-k]),this.yyleng=this.yytext.length,this},"unput"),more:o(function(){return this._more=!0,this},"more"),reject:o(function(){if(this.options.backtrack_lexer)this._backtrack=!0;else return this.parseError("Lexical error on line "+(this.yylineno+1)+`. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).
+`+this.showPosition(),{text:"",token:null,line:this.yylineno});return this},"reject"),less:o(function(T){this.unput(this.match.slice(T))},"less"),pastInput:o(function(){var T=this.matched.substr(0,this.matched.length-this.match.length);return(T.length>20?"...":"")+T.substr(-20).replace(/\n/g,"")},"pastInput"),upcomingInput:o(function(){var T=this.match;return T.length<20&&(T+=this._input.substr(0,20-T.length)),(T.substr(0,20)+(T.length>20?"...":"")).replace(/\n/g,"")},"upcomingInput"),showPosition:o(function(){var T=this.pastInput(),k=new Array(T.length+1).join("-");return T+this.upcomingInput()+`
+`+k+"^"},"showPosition"),test_match:o(function(T,k){var C,w,S;if(this.options.backtrack_lexer&&(S={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(S.yylloc.range=this.yylloc.range.slice(0))),w=T[0].match(/(?:\r\n?|\n).*/g),w&&(this.yylineno+=w.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:w?w[w.length-1].length-w[w.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+T[0].length},this.yytext+=T[0],this.match+=T[0],this.matches=T,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(T[0].length),this.matched+=T[0],C=this.performAction.call(this,this.yy,this,k,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),C)return C;if(this._backtrack){for(var R in S)this[R]=S[R];return!1}return!1},"test_match"),next:o(function(){if(this.done)return this.EOF;this._input||(this.done=!0);var T,k,C,w;this._more||(this.yytext="",this.match="");for(var S=this._currentRules(),R=0;R<S.length;R++)if(C=this._input.match(this.rules[S[R]]),C&&(!k||C[0].length>k[0].length)){if(k=C,w=R,this.options.backtrack_lexer){if(T=this.test_match(C,S[R]),T!==!1)return T;if(this._backtrack){k=!1;continue}else return!1}else if(!this.options.flex)break}return k?(T=this.test_match(k,S[w]),T!==!1?T:!1):this._input===""?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+`. Unrecognized text.
+`+this.showPosition(),{text:"",token:null,line:this.yylineno})},"next"),lex:o(function(){var k=this.next();return k||this.lex()},"lex"),begin:o(function(k){this.conditionStack.push(k)},"begin"),popState:o(function(){var k=this.conditionStack.length-1;return k>0?this.conditionStack.pop():this.conditionStack[0]},"popState"),_currentRules:o(function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},"_currentRules"),topState:o(function(k){return k=this.conditionStack.length-1-Math.abs(k||0),k>=0?this.conditionStack[k]:"INITIAL"},"topState"),pushState:o(function(k){this.begin(k)},"pushState"),stateStackSize:o(function(){return this.conditionStack.length},"stateStackSize"),options:{"case-insensitive":!0},performAction:o(function(k,C,w,S){var R=S;switch(w){case 0:break;case 1:break;case 2:break;case 3:if(k.getIndentMode&&k.getIndentMode())return k.consumeIndentText=!0,this.begin("INITIAL"),22;break;case 4:break;case 5:k.setIndentMode&&k.setIndentMode(!1),this.begin("INITIAL"),this.unput(C.yytext);break;case 6:return this.begin("bol"),8;break;case 7:break;case 8:break;case 9:return 7;case 10:return 11;case 11:return 5;case 12:return 12;case 13:return 17;case 14:if(k.consumeIndentText)k.consumeIndentText=!1;else return 19;break;case 15:return 24;case 16:return C.yytext=C.yytext.slice(2,-2),14;break;case 17:return C.yytext=C.yytext.slice(1,-1).trim(),14;break;case 18:return 16;case 19:return 31;case 20:return 33;case 21:return 32;case 22:return 20;case 23:return 21;case 24:return 27;case 25:return 15}},"anonymous"),rules:[/^(?:%%(?!\{)[^\n]*)/i,/^(?:[^\}]%%[^\n]*)/i,/^(?:[ \t]+(?=[\n\r]))/i,/^(?:[ \t]+(?=text\b))/i,/^(?:[ \t]+)/i,/^(?:[^ \t\n\r])/i,/^(?:[\n\r]+)/i,/^(?:%%[^\n]*)/i,/^(?:[ \t]+)/i,/^(?:$)/i,/^(?:title\s[^#\n;]+)/i,/^(?:venn-beta\b)/i,/^(?:set\b)/i,/^(?:union\b)/i,/^(?:text\b)/i,/^(?:style\b)/i,/^(?:\["[^\"]*"\])/i,/^(?:\[[^\]\"]+\])/i,/^(?:[+-]?(\d+(\.\d+)?|\.\d+))/i,/^(?:#[0-9a-fA-F]{3,8})/i,/^(?:rgba\(\s*[0-9.]+\s*[,]\s*[0-9.]+\s*[,]\s*[0-9.]+\s*[,]\s*[0-9.]+\s*\))/i,/^(?:rgb\(\s*[0-9.]+\s*[,]\s*[0-9.]+\s*[,]\s*[0-9.]+\s*\))/i,/^(?:[A-Za-z_][A-Za-z0-9\-_]*)/i,/^(?:"[^\"]*")/i,/^(?:,)/i,/^(?::)/i],conditions:{bol:{rules:[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25],inclusive:!0},INITIAL:{rules:[0,1,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25],inclusive:!0}}};return b})();y.lexer=v;function x(){this.yy={}}return o(x,"Parser"),x.prototype=y,y.Parser=x,new x})();aX.parser=aX;bBe=aX});function qIt(){return qr(WIt,_t().venn)}var sX,oX,lX,cX,uX,hX,IIt,MIt,ak,NIt,PIt,OIt,BIt,lD,$It,FIt,zIt,GIt,VIt,WIt,HIt,CBe,wBe=F(()=>{"use strict";Qt();ur();Nn();Wi();sX=[],oX=[],lX=[],cX=new Set,hX=!1,IIt=o((e,t,r)=>{let n=lD(e).sort(),i=r??10/Math.pow(e.length,2);uX=n,n.length===1&&cX.add(n[0]),sX.push({sets:n,size:i,label:t?ak(t):void 0})},"addSubsetData"),MIt=o(()=>sX,"getSubsetData"),ak=o(e=>{let t=e.trim();return t.length>=2&&t.startsWith('"')&&t.endsWith('"')?t.slice(1,-1):t},"normalizeText"),NIt=o(e=>e&&ak(e),"normalizeStyleValue"),PIt=o((e,t,r)=>{let n=ak(t);oX.push({sets:lD(e).sort(),id:n,label:r?ak(r):void 0})},"addTextData"),OIt=o((e,t)=>{let r=lD(e).sort(),n={};for(let[i,a]of t)n[i]=NIt(a)??a;lX.push({targets:r,styles:n})},"addStyleData"),BIt=o(()=>lX,"getStyleData"),lD=o(e=>e.map(t=>ak(t)),"normalizeIdentifierList"),$It=o(e=>{let r=lD(e).filter(n=>!cX.has(n));if(r.length>0)throw new Error(`unknown set identifier: ${r.join(", ")}`)},"validateUnionIdentifiers"),FIt=o(()=>oX,"getTextData"),zIt=o(()=>uX,"getCurrentSets"),GIt=o(()=>hX,"getIndentMode"),VIt=o(e=>{hX=e},"setIndentMode"),WIt=cr.venn;o(qIt,"getConfig");HIt=o(()=>{yr(),sX.length=0,oX.length=0,lX.length=0,cX.clear(),uX=void 0,hX=!1},"customClear"),CBe={getConfig:qIt,clear:HIt,setAccTitle:kr,getAccTitle:Ar,setDiagramTitle:Or,getDiagramTitle:Lr,getAccDescription:_r,setAccDescription:Rr,addSubsetData:IIt,getSubsetData:MIt,addTextData:PIt,addStyleData:OIt,validateUnionIdentifiers:$It,getTextData:FIt,getStyleData:BIt,getCurrentSets:zIt,getIndentMode:GIt,setIndentMode:VIt}});var UIt,kBe,SBe=F(()=>{"use strict";UIt=o(e=>`
   .venn-title {
     font-size: 32px;
     fill: ${e.vennTitleTextColor};
@@ -3236,120 +3268,270 @@
     font-family: ${e.fontFamily};
     color: ${e.vennSetTextColor};
   }
-`,"getStyles"),bLe=f5t});function L_(e,t){let r=m5t(e),i=r.filter(l=>p5t(l,e)),n=0,a=0,s=[];if(i.length>1){let l=SLe(i);for(let h=0;h<i.length;++h){let d=i[h];d.angle=Math.atan2(d.x-l.x,d.y-l.y)}i.sort((h,d)=>d.angle-h.angle);let u=i[i.length-1];for(let h=0;h<i.length;++h){let d=i[h];a+=(u.x+d.x)*(d.y-u.y);let f={x:(d.x+u.x)/2,y:(d.y+u.y)/2},p=null;for(let m=0;m<d.parentIndex.length;++m)if(u.parentIndex.includes(d.parentIndex[m])){let g=e[d.parentIndex[m]],y=Math.atan2(d.x-g.x,d.y-g.y),v=Math.atan2(u.x-g.x,u.y-g.y),x=v-y;x<0&&(x+=2*Math.PI);let b=v-x/2,T=Xs(f,{x:g.x+g.radius*Math.sin(b),y:g.y+g.radius*Math.cos(b)});T>g.radius*2&&(T=g.radius*2),(p==null||p.width>T)&&(p={circle:g,width:T,p1:d,p2:u,large:T>g.radius,sweep:!0})}p!=null&&(s.push(p),n+=hU(p.circle.radius,p.width),u=d)}}else{let l=e[0];for(let h=1;h<e.length;++h)e[h].radius<l.radius&&(l=e[h]);let u=!1;for(let h=0;h<e.length;++h)if(Xs(e[h],l)>Math.abs(l.radius-e[h].radius)){u=!0;break}u?n=a=0:(n=l.radius*l.radius*Math.PI,s.push({circle:l,p1:{x:l.x,y:l.y+l.radius},p2:{x:l.x-1e-10,y:l.y+l.radius},width:l.radius*2,large:!0,sweep:!0}))}return a/=2,t&&(t.area=n+a,t.arcArea=n,t.polygonArea=a,t.arcs=s,t.innerPoints=i,t.intersectionPoints=r),n+a}function p5t(e,t){return t.every(r=>Xs(e,r)<r.radius+1e-10)}function m5t(e){let t=[];for(let r=0;r<e.length;++r)for(let i=r+1;i<e.length;++i){let n=wLe(e[r],e[i]);for(let a of n)a.parentIndex=[r,i],t.push(a)}return t}function hU(e,t){return e*e*Math.acos(1-t/e)-(e-t)*Math.sqrt(t*(2*e-t))}function Xs(e,t){return Math.sqrt((e.x-t.x)*(e.x-t.x)+(e.y-t.y)*(e.y-t.y))}function yU(e,t,r){if(r>=e+t)return 0;if(r<=Math.abs(e-t))return Math.PI*Math.min(e,t)*Math.min(e,t);let i=e-(r*r-t*t+e*e)/(2*r),n=t-(r*r-e*e+t*t)/(2*r);return hU(e,i)+hU(t,n)}function wLe(e,t){let r=Xs(e,t),i=e.radius,n=t.radius;if(r>=i+n||r<=Math.abs(i-n))return[];let a=(i*i-n*n+r*r)/(2*r),s=Math.sqrt(i*i-a*a),l=e.x+a*(t.x-e.x)/r,u=e.y+a*(t.y-e.y)/r,h=-(t.y-e.y)*(s/r),d=-(t.x-e.x)*(s/r);return[{x:l+h,y:u-d},{x:l-h,y:u+d}]}function SLe(e){let t={x:0,y:0};for(let r of e)t.x+=r.x,t.y+=r.y;return t.x/=e.length,t.y/=e.length,t}function g5t(e,t,r,i){i=i||{};let n=i.maxIterations||100,a=i.tolerance||1e-10,s=e(t),l=e(r),u=r-t;if(s*l>0)throw"Initial bisect points must have opposite signs";if(s===0)return t;if(l===0)return r;for(let h=0;h<n;++h){u/=2;let d=t+u,f=e(d);if(f*s>=0&&(t=d),Math.abs(u)<a||f===0)return d}return t+u}function dU(e){let t=new Array(e);for(let r=0;r<e;++r)t[r]=0;return t}function CLe(e,t){return dU(e).map(()=>dU(t))}function Fy(e,t){let r=0;for(let i=0;i<e.length;++i)r+=e[i]*t[i];return r}function fU(e){return Math.sqrt(Fy(e,e))}function pU(e,t,r){for(let i=0;i<t.length;++i)e[i]=t[i]*r}function Rh(e,t,r,i,n){for(let a=0;a<e.length;++a)e[a]=t*r[a]+i*n[a]}function ELe(e,t,r){r=r||{};let i=r.maxIterations||t.length*200,n=r.nonZeroDelta||1.05,a=r.zeroDelta||.001,s=r.minErrorDelta||1e-6,l=r.minErrorDelta||1e-5,u=r.rho!==void 0?r.rho:1,h=r.chi!==void 0?r.chi:2,d=r.psi!==void 0?r.psi:-.5,f=r.sigma!==void 0?r.sigma:.5,p,m=t.length,g=new Array(m+1);g[0]=t,g[0].fx=e(t),g[0].id=0;for(let C=0;C<m;++C){let k=t.slice();k[C]=k[C]?k[C]*n:a,g[C+1]=k,g[C+1].fx=e(k),g[C+1].id=C+1}function y(C){for(let k=0;k<C.length;k++)g[m][k]=C[k];g[m].fx=C.fx}o(y,"updateSimplex");let v=o((C,k)=>C.fx-k.fx,"sortOrder"),x=t.slice(),b=t.slice(),T=t.slice(),w=t.slice();for(let C=0;C<i;++C){if(g.sort(v),r.history){let E=g.map(A=>{let N=A.slice();return N.fx=A.fx,N.id=A.id,N});E.sort((A,N)=>A.id-N.id),r.history.push({x:g[0].slice(),fx:g[0].fx,simplex:E})}p=0;for(let E=0;E<m;++E)p=Math.max(p,Math.abs(g[0][E]-g[1][E]));if(Math.abs(g[0].fx-g[m].fx)<s&&p<l)break;for(let E=0;E<m;++E){x[E]=0;for(let A=0;A<m;++A)x[E]+=g[A][E];x[E]/=m}let k=g[m];if(Rh(b,1+u,x,-u,k),b.fx=e(b),b.fx<g[0].fx)Rh(w,1+h,x,-h,k),w.fx=e(w),w.fx<b.fx?y(w):y(b);else if(b.fx>=g[m-1].fx){let E=!1;if(b.fx>k.fx?(Rh(T,1+d,x,-d,k),T.fx=e(T),T.fx<k.fx?y(T):E=!0):(Rh(T,1-d*u,x,d*u,k),T.fx=e(T),T.fx<b.fx?y(T):E=!0),E){if(f>=1)break;for(let A=1;A<g.length;++A)Rh(g[A],1-f,g[0],f,g[A]),g[A].fx=e(g[A])}}else y(b)}return g.sort(v),{fx:g[0].fx,x:g[0]}}function y5t(e,t,r,i,n,a,s){let l=r.fx,u=Fy(r.fxprime,t),h=l,d=l,f=u,p=0;n=n||1,a=a||1e-6,s=s||.1;function m(g,y,v){for(let x=0;x<16;++x)if(n=(g+y)/2,Rh(i.x,1,r.x,n,t),h=i.fx=e(i.x,i.fxprime),f=Fy(i.fxprime,t),h>l+a*n*u||h>=v)y=n;else{if(Math.abs(f)<=-s*u)return n;f*(y-g)>=0&&(y=g),g=n,v=h}return 0}o(m,"zoom");for(let g=0;g<10;++g){if(Rh(i.x,1,r.x,n,t),h=i.fx=e(i.x,i.fxprime),f=Fy(i.fxprime,t),h>l+a*n*u||g&&h>=d)return m(p,n,d);if(Math.abs(f)<=-s*u)return n;if(f>=0)return m(n,p,h);d=h,p=n,n*=2}return n}function v5t(e,t,r){let i={x:t.slice(),fx:0,fxprime:t.slice()},n={x:t.slice(),fx:0,fxprime:t.slice()},a=t.slice(),s,l,u=1,h;r=r||{},h=r.maxIterations||t.length*20,i.fx=e(i.x,i.fxprime),s=i.fxprime.slice(),pU(s,i.fxprime,-1);for(let d=0;d<h;++d){if(u=y5t(e,s,i,n,u),r.history&&r.history.push({x:i.x.slice(),fx:i.fx,fxprime:i.fxprime.slice(),alpha:u}),!u)pU(s,i.fxprime,-1);else{Rh(a,1,n.fxprime,-1,i.fxprime);let f=Fy(i.fxprime,i.fxprime),p=Math.max(0,Fy(a,n.fxprime)/f);Rh(s,p,s,-1,n.fxprime),l=i,i=n,n=l}if(fU(i.fxprime)<=1e-5)break}return r.history&&r.history.push({x:i.x.slice(),fx:i.fx,fxprime:i.fxprime.slice(),alpha:u}),i}function ALe(e,t={}){t.maxIterations=t.maxIterations||500;let r=t.initialLayout||C5t,i=t.lossFunction||$y,n=x5t(e,t),a=r(n,t),s=Object.keys(a),l=[];for(let d of s)l.push(a[d].x),l.push(a[d].y);let h=ELe(d=>{let f={};for(let p=0;p<s.length;++p){let m=s[p];f[m]={x:d[2*p],y:d[2*p+1],radius:a[m].radius}}return i(f,n)},l,t).x;for(let d=0;d<s.length;++d){let f=s[d];a[f].x=h[2*d],a[f].y=h[2*d+1]}return a}function mU(e,t,r){return Math.min(e,t)*Math.min(e,t)*Math.PI<=r+_Le?Math.abs(e-t):g5t(i=>yU(e,t,i)-r,0,e+t)}function x5t(e,t={}){let r=t.distinct,i=e.map(l=>Object.assign({},l));function n(l){return l.join(";")}if(o(n,"toKey"),r){let l=new Map;for(let u of i)for(let h=0;h<u.sets.length;h++){let d=String(u.sets[h]);l.set(d,u.size+(l.get(d)||0));for(let f=h+1;f<u.sets.length;f++){let p=String(u.sets[f]),m=`${d};${p}`,g=`${p};${d}`;l.set(m,u.size+(l.get(m)||0)),l.set(g,u.size+(l.get(g)||0))}}for(let u of i)u.sets.length<3&&(u.size=l.get(n(u.sets)))}let a=[],s=new Set;for(let l of i)if(l.sets.length===1)a.push(l.sets[0]);else if(l.sets.length===2){let u=l.sets[0],h=l.sets[1];s.add(n(l.sets)),s.add(n([h,u]))}a.sort((l,u)=>l===u?0:l<u?-1:1);for(let l=0;l<a.length;++l){let u=a[l];for(let h=l+1;h<a.length;++h){let d=a[h];s.has(n([u,d]))||i.push({sets:[u,d],size:0})}}return i}function b5t(e,t,r){let i=CLe(t.length,t.length),n=CLe(t.length,t.length);return e.filter(a=>a.sets.length===2).forEach(a=>{let s=r[a.sets[0]],l=r[a.sets[1]],u=Math.sqrt(t[s].size/Math.PI),h=Math.sqrt(t[l].size/Math.PI),d=mU(u,h,a.size);i[s][l]=i[l][s]=d;let f=0;a.size+1e-10>=Math.min(t[s].size,t[l].size)?f=1:a.size<=1e-10&&(f=-1),n[s][l]=n[l][s]=f}),{distances:i,constraints:n}}function T5t(e,t,r,i){for(let a=0;a<t.length;++a)t[a]=0;let n=0;for(let a=0;a<r.length;++a){let s=e[2*a],l=e[2*a+1];for(let u=a+1;u<r.length;++u){let h=e[2*u],d=e[2*u+1],f=r[a][u],p=i[a][u],m=(h-s)*(h-s)+(d-l)*(d-l),g=Math.sqrt(m),y=m-f*f;p>0&&g<=f||p<0&&g>=f||(n+=2*y*y,t[2*a]+=4*y*(s-h),t[2*a+1]+=4*y*(l-d),t[2*u]+=4*y*(h-s),t[2*u+1]+=4*y*(d-l))}}return n}function C5t(e,t={}){let r=w5t(e,t),i=t.lossFunction||$y;if(e.length>=8){let n=k5t(e,t),a=i(n,e),s=i(r,e);a+1e-8<s&&(r=n)}return r}function k5t(e,t={}){let r=t.restarts||10,i=[],n={};for(let p of e)p.sets.length===1&&(n[p.sets[0]]=i.length,i.push(p));let{distances:a,constraints:s}=b5t(e,i,n),l=fU(a.map(fU))/a.length;a=a.map(p=>p.map(m=>m/l));let u=o((p,m)=>T5t(p,m,a,s),"obj"),h=null;for(let p=0;p<r;++p){let m=dU(a.length*2).map(Math.random),g=v5t(u,m,t);(!h||g.fx<h.fx)&&(h=g)}let d=h.x,f={};for(let p=0;p<i.length;++p){let m=i[p];f[m.sets[0]]={x:d[2*p]*l,y:d[2*p+1]*l,radius:Math.sqrt(m.size/Math.PI)}}if(t.history)for(let p of t.history)pU(p.x,l);return f}function w5t(e,t){let r=t&&t.lossFunction?t.lossFunction:$y,i={},n={};for(let f of e)if(f.sets.length===1){let p=f.sets[0];i[p]={x:1e10,y:1e10,rowid:i.length,size:f.size,radius:Math.sqrt(f.size/Math.PI)},n[p]=[]}e=e.filter(f=>f.sets.length===2);for(let f of e){let p=f.weight!=null?f.weight:1,m=f.sets[0],g=f.sets[1];f.size+_Le>=Math.min(i[m].size,i[g].size)&&(p=0),n[m].push({set:g,size:f.size,weight:p}),n[g].push({set:m,size:f.size,weight:p})}let a=[];Object.keys(n).forEach(f=>{let p=0;for(let m=0;m<n[f].length;++m)p+=n[f][m].size*n[f][m].weight;a.push({set:f,size:p})});function s(f,p){return p.size-f.size}o(s,"sortOrder"),a.sort(s);let l={};function u(f){return f.set in l}o(u,"isPositioned");function h(f,p){i[p].x=f.x,i[p].y=f.y,l[p]=!0}o(h,"positionSet"),h({x:0,y:0},a[0].set);for(let f=1;f<a.length;++f){let p=a[f].set,m=n[p].filter(u),g=i[p];if(m.sort(s),m.length===0)throw"ERROR: missing pairwise overlap information";let y=[];for(var d=0;d<m.length;++d){let b=i[m[d].set],T=mU(g.radius,b.radius,m[d].size);y.push({x:b.x+T,y:b.y}),y.push({x:b.x-T,y:b.y}),y.push({y:b.y+T,x:b.x}),y.push({y:b.y-T,x:b.x});for(let w=d+1;w<m.length;++w){let C=i[m[w].set],k=mU(g.radius,C.radius,m[w].size),E=wLe({x:b.x,y:b.y,radius:T},{x:C.x,y:C.y,radius:k});y.push(...E)}}let v=1e50,x=y[0];for(let b of y){i[p].x=b.x,i[p].y=b.y;let T=r(i,e);T<v&&(v=T,x=b)}h(x,p)}return i}function $y(e,t){let r=0;for(let i of t){if(i.sets.length===1)continue;let n;if(i.sets.length===2){let s=e[i.sets[0]],l=e[i.sets[1]];n=yU(s.radius,l.radius,Xs(s,l))}else n=L_(i.sets.map(s=>e[s]));let a=i.weight!=null?i.weight:1;r+=a*(n-i.size)*(n-i.size)}return r}function DLe(e,t){let r=0;for(let i of t){if(i.sets.length===1)continue;let n;if(i.sets.length===2){let l=e[i.sets[0]],u=e[i.sets[1]];n=yU(l.radius,u.radius,Xs(l,u))}else n=L_(i.sets.map(l=>e[l]));let a=i.weight!=null?i.weight:1,s=Math.log((n+1)/(i.size+1));r+=a*s*s}return r}function S5t(e,t,r){if(r==null?e.sort((n,a)=>a.radius-n.radius):e.sort(r),e.length>0){let n=e[0].x,a=e[0].y;for(let s of e)s.x-=n,s.y-=a}if(e.length===2&&Xs(e[0],e[1])<Math.abs(e[1].radius-e[0].radius)&&(e[1].x=e[0].x+e[0].radius-e[1].radius-1e-10,e[1].y=e[0].y),e.length>1){let n=Math.atan2(e[1].x,e[1].y)-t,a=Math.cos(n),s=Math.sin(n);for(let l of e){let u=l.x,h=l.y;l.x=a*u-s*h,l.y=s*u+a*h}}if(e.length>2){let n=Math.atan2(e[2].x,e[2].y)-t;for(;n<0;)n+=2*Math.PI;for(;n>2*Math.PI;)n-=2*Math.PI;if(n>Math.PI){let a=e[1].y/(1e-10+e[1].x);for(let s of e){var i=(s.x+a*s.y)/(1+a*a);s.x=2*i-s.x,s.y=2*i*a-s.y}}}}function E5t(e){e.forEach(n=>{n.parent=n});function t(n){return n.parent!==n&&(n.parent=t(n.parent)),n.parent}o(t,"find");function r(n,a){let s=t(n),l=t(a);s.parent=l}o(r,"union");for(let n=0;n<e.length;++n)for(let a=n+1;a<e.length;++a){let s=e[n].radius+e[a].radius;Xs(e[n],e[a])+1e-10<s&&r(e[a],e[n])}let i=new Map;for(let n=0;n<e.length;++n){let a=t(e[n]).parent.setid;i.has(a)||i.set(a,[]),i.get(a).push(e[n])}return e.forEach(n=>{delete n.parent}),Array.from(i.values())}function gU(e){let t=o(r=>{let i=e.reduce((a,s)=>Math.max(a,s[r]+s.radius),Number.NEGATIVE_INFINITY),n=e.reduce((a,s)=>Math.min(a,s[r]-s.radius),Number.POSITIVE_INFINITY);return{max:i,min:n}},"minMax");return{xRange:t("x"),yRange:t("y")}}function RLe(e,t,r){t==null&&(t=Math.PI/2);let i=NLe(e).map(h=>Object.assign({},h)),n=E5t(i);for(let h of n){S5t(h,t,r);let d=gU(h);h.size=(d.xRange.max-d.xRange.min)*(d.yRange.max-d.yRange.min),h.bounds=d}n.sort((h,d)=>d.size-h.size),i=n[0];let a=i.bounds,s=(a.xRange.max-a.xRange.min)/50;function l(h,d,f){if(!h)return;let p=h.bounds,m,g;if(d)m=a.xRange.max-p.xRange.min+s;else{m=a.xRange.max-p.xRange.max;let y=(p.xRange.max-p.xRange.min)/2-(a.xRange.max-a.xRange.min)/2;y<0&&(m+=y)}if(f)g=a.yRange.max-p.yRange.min+s;else{g=a.yRange.max-p.yRange.max;let y=(p.yRange.max-p.yRange.min)/2-(a.yRange.max-a.yRange.min)/2;y<0&&(g+=y)}for(let y of h)y.x+=m,y.y+=g,i.push(y)}o(l,"addCluster");let u=1;for(;u<n.length;)l(n[u],!0,!1),l(n[u+1],!1,!0),l(n[u+2],!0,!0),u+=3,a=gU(i);return MLe(i)}function LLe(e,t,r,i,n){let a=NLe(e);t-=2*i,r-=2*i;let{xRange:s,yRange:l}=gU(a);if(s.max===s.min||l.max===l.min)return console.log("not scaling solution: zero size detected"),e;let u,h;if(n){let m=Math.sqrt(n/Math.PI)*2;u=t/m,h=r/m}else u=t/(s.max-s.min),h=r/(l.max-l.min);let d=Math.min(h,u),f=(t-(s.max-s.min)*d)/2,p=(r-(l.max-l.min)*d)/2;return MLe(a.map(m=>({radius:d*m.radius,x:i+f+(m.x-s.min)*d,y:i+p+(m.y-l.min)*d,setid:m.setid})))}function MLe(e){let t={};for(let r of e)t[r.setid]=r;return t}function NLe(e){return Object.keys(e).map(r=>Object.assign(e[r],{setid:r}))}function ILe(e={}){let t=!1,r=600,i=350,n=15,a=1e3,s=Math.PI/2,l=!0,u=null,h=!0,d=!0,f=null,p=null,m=!1,g=null,y=e&&e.symmetricalTextCentre?e.symmetricalTextCentre:!1,v={},x=e&&e.colourScheme?e.colourScheme:e&&e.colorScheme?e.colorScheme:["#1f77b4","#ff7f0e","#2ca02c","#d62728","#9467bd","#8c564b","#e377c2","#7f7f7f","#bcbd22","#17becf"],b=0,T=o(function(E){if(E in v)return v[E];var A=v[E]=x[b];return b+=1,b>=x.length&&(b=0),A},"colours"),w=ALe,C=$y;function k(E){let A=E.datum(),N=new Set;A.forEach(Y=>{Y.size==0&&Y.sets.length==1&&N.add(Y.sets[0])}),A=A.filter(Y=>!Y.sets.some(ae=>N.has(ae)));let P={},I={};if(A.length>0){let Y=w(A,{lossFunction:C,distinct:m});l&&(Y=RLe(Y,s,p)),P=LLe(Y,r,i,n,u),I=PLe(P,A,y)}let D={};A.forEach(Y=>{Y.label&&(D[Y.sets]=Y.label)});function _(Y){if(Y.sets in D)return D[Y.sets];if(Y.sets.length==1)return""+Y.sets[0]}o(_,"label"),E.selectAll("svg").data([P]).enter().append("svg");let R=E.select("svg");t?R.attr("viewBox",`0 0 ${r} ${i}`):R.attr("width",r).attr("height",i);let M={},L=!1;R.selectAll(".venn-area path").each(function(Y){let ae=this.getAttribute("d");Y.sets.length==1&&ae&&!m&&(L=!0,M[Y.sets[0]]=D5t(ae))});function B(Y){return ae=>{let J=Y.sets.map(te=>{let re=M[te],ee=P[te];return re||(re={x:r/2,y:i/2,radius:1}),ee||(ee={x:r/2,y:i/2,radius:1}),{x:re.x*(1-ae)+ee.x*ae,y:re.y*(1-ae)+ee.y*ae,radius:re.radius*(1-ae)+ee.radius*ae}});return kLe(J,g)}}o(B,"pathTween");let O=R.selectAll(".venn-area").data(A,Y=>Y.sets),$=O.enter().append("g").attr("class",Y=>`venn-area venn-${Y.sets.length==1?"circle":"intersection"}${Y.colour||Y.color?" venn-coloured":""}`).attr("data-venn-sets",Y=>Y.sets.join("_")),G=$.append("path"),F=$.append("text").attr("class","label").text(Y=>_(Y)).attr("text-anchor","middle").attr("dy",".35em").attr("x",r/2).attr("y",i/2);d&&(G.style("fill-opacity","0").filter(Y=>Y.sets.length==1).style("fill",Y=>Y.colour?Y.colour:Y.color?Y.color:T(Y.sets)).style("fill-opacity",".25"),F.style("fill",Y=>Y.colour||Y.color?"#FFF":e.textFill?e.textFill:Y.sets.length==1?T(Y.sets):"#444"));function V(Y){return typeof Y.transition=="function"?Y.transition("venn").duration(a):Y}o(V,"asTransition");let H=E;L&&typeof H.transition=="function"?(H=V(E),H.selectAll("path").attrTween("d",B)):H.selectAll("path").attr("d",Y=>kLe(Y.sets.map(ae=>P[ae])),g);let j=H.selectAll("text").filter(Y=>Y.sets in I).text(Y=>_(Y)).attr("x",Y=>Math.floor(I[Y.sets].x)).attr("y",Y=>Math.floor(I[Y.sets].y));h&&(L?"on"in j?j.on("end",cU(P,_)):j.each("end",cU(P,_)):j.each(cU(P,_)));let U=V(O.exit()).remove();typeof O.transition=="function"&&U.selectAll("path").attrTween("d",B);let Q=U.selectAll("text").attr("x",r/2).attr("y",i/2);return f!==null&&(F.style("font-size","0px"),j.style("font-size",f),Q.style("font-size","0px")),{circles:P,textCentres:I,nodes:O,enter:$,update:H,exit:U}}return o(k,"chart"),k.wrap=function(E){return arguments.length?(h=E,k):h},k.useViewBox=function(){return t=!0,k},k.width=function(E){return arguments.length?(r=E,k):r},k.height=function(E){return arguments.length?(i=E,k):i},k.padding=function(E){return arguments.length?(n=E,k):n},k.distinct=function(E){return arguments.length?(m=E,k):m},k.colours=function(E){return arguments.length?(T=E,k):T},k.colors=function(E){return arguments.length?(T=E,k):T},k.fontSize=function(E){return arguments.length?(f=E,k):f},k.round=function(E){return arguments.length?(g=E,k):g},k.duration=function(E){return arguments.length?(a=E,k):a},k.layoutFunction=function(E){return arguments.length?(w=E,k):w},k.normalize=function(E){return arguments.length?(l=E,k):l},k.scaleToFit=function(E){return arguments.length?(u=E,k):u},k.styled=function(E){return arguments.length?(d=E,k):d},k.orientation=function(E){return arguments.length?(s=E,k):s},k.orientationOrder=function(E){return arguments.length?(p=E,k):p},k.lossFunction=function(E){return arguments.length?(C=E==="default"?$y:E==="logRatio"?DLe:E,k):C},k}function cU(e,t){return function(r){let i=this,n=e[r.sets[0]].radius||50,a=t(r)||"",s=a.split(/\s+/).reverse(),u=(a.length+s.length)/3,h=s.pop(),d=[h],f=0,p=1.1;i.textContent=null;let m=[];function g(T){let w=i.ownerDocument.createElementNS(i.namespaceURI,"tspan");return w.textContent=T,m.push(w),i.append(w),w}o(g,"append");let y=g(h);for(;h=s.pop(),!!h;){d.push(h);let T=d.join(" ");y.textContent=T,T.length>u&&y.getComputedTextLength()>n&&(d.pop(),y.textContent=d.join(" "),d=[h],y=g(h),f++)}let v=.35-f*p/2,x=i.getAttribute("x"),b=i.getAttribute("y");m.forEach((T,w)=>{T.setAttribute("x",x),T.setAttribute("y",b),T.setAttribute("dy",`${v+w*p}em`)})}}function uU(e,t,r){let i=t[0].radius-Xs(t[0],e);for(let n=1;n<t.length;++n){let a=t[n].radius-Xs(t[n],e);a<=i&&(i=a)}for(let n=0;n<r.length;++n){let a=Xs(r[n],e)-r[n].radius;a<=i&&(i=a)}return i}function OLe(e,t,r){let i=[];for(let d of e)i.push({x:d.x,y:d.y}),i.push({x:d.x+d.radius/2,y:d.y}),i.push({x:d.x-d.radius/2,y:d.y}),i.push({x:d.x,y:d.y+d.radius/2}),i.push({x:d.x,y:d.y-d.radius/2});let n=i[0],a=uU(i[0],e,t);for(let d=1;d<i.length;++d){let f=uU(i[d],e,t);f>=a&&(n=i[d],a=f)}let s=ELe(d=>-1*uU({x:d[0],y:d[1]},e,t),[n.x,n.y],{maxIterations:500,minErrorDelta:1e-10}).x,l={x:r?0:s[0],y:s[1]},u=!0;for(let d of e)if(Xs(l,d)>d.radius){u=!1;break}for(let d of t)if(Xs(l,d)<d.radius){u=!1;break}if(u)return l;if(e.length==1)return{x:e[0].x,y:e[0].y};let h={};return L_(e,h),h.arcs.length===0?{x:0,y:-1e3,disjoint:!0}:h.arcs.length==1?{x:h.arcs[0].circle.x,y:h.arcs[0].circle.y}:t.length?OLe(e,[]):SLe(h.arcs.map(d=>d.p1))}function A5t(e){let t={},r=Object.keys(e);for(let i of r)t[i]=[];for(let i=0;i<r.length;i++){let n=r[i],a=e[n];for(let s=i+1;s<r.length;++s){let l=r[s],u=e[l],h=Xs(a,u);h+u.radius<=a.radius+1e-10?t[l].push(n):h+a.radius<=u.radius+1e-10&&t[n].push(l)}}return t}function PLe(e,t,r){let i={},n=A5t(e);for(let a=0;a<t.length;++a){let s=t[a].sets,l={},u={};for(let p=0;p<s.length;++p){l[s[p]]=!0;let m=n[s[p]];for(let g=0;g<m.length;++g)u[m[g]]=!0}let h=[],d=[];for(let p in e)p in l?h.push(e[p]):p in u||d.push(e[p]);let f=OLe(h,d,r);i[s]=f,f.disjoint&&t[a].size>0&&console.log("WARNING: area "+s+" not represented on screen")}return i}function _5t(e,t,r){let i=[];return i.push(`
-M`,e,t),i.push(`
-m`,-r,0),i.push(`
-a`,r,r,0,1,0,r*2,0),i.push(`
-a`,r,r,0,1,0,-r*2,0),i.join(" ")}function D5t(e){let t=e.split(" ");return{x:Number.parseFloat(t[1]),y:Number.parseFloat(t[2]),radius:-Number.parseFloat(t[4])}}function BLe(e){if(e.length===0)return[];let t={};return L_(e,t),t.arcs}function FLe(e,t){if(e.length===0)return"M 0 0";let r=Math.pow(10,t||0),i=t!=null?a=>Math.round(a*r)/r:a=>a;if(e.length==1){let a=e[0].circle;return _5t(i(a.x),i(a.y),i(a.radius))}let n=[`
-M`,i(e[0].p2.x),i(e[0].p2.y)];for(let a of e){let s=i(a.circle.radius);n.push(`
-A`,s,s,0,a.large?1:0,a.sweep?1:0,i(a.p1.x),i(a.p1.y))}return n.join(" ")}function kLe(e,t){return FLe(BLe(e),t)}function $Le(e,t={}){let{lossFunction:r,layoutFunction:i=ALe,normalize:n=!0,orientation:a=Math.PI/2,orientationOrder:s,width:l=600,height:u=350,padding:h=15,scaleToFit:d=!1,symmetricalTextCentre:f=!1,distinct:p,round:m=2}=t,g=i(e,{lossFunction:r==="default"||!r?$y:r==="logRatio"?DLe:r,distinct:p});n&&(g=RLe(g,a,s));let y=LLe(g,l,u,h,d),v=PLe(y,e,f),x=new Map(Object.keys(y).map(w=>[w,{set:w,x:y[w].x,y:y[w].y,radius:y[w].radius}])),b=e.map(w=>{let C=w.sets.map(A=>x.get(A)),k=BLe(C),E=FLe(k,m);return{circles:C,arcs:k,path:E,area:w,has:new Set(w.sets)}});function T(w){let C="";for(let k of b)k.has.size>w.length&&w.every(E=>k.has.has(E))&&(C+=" "+k.path);return C}return o(T,"genDistinctPath"),b.map(({circles:w,arcs:C,path:k,area:E})=>({data:E,text:v[E.sets],circles:w,arcs:C,path:k,distinctPath:k+T(E.sets)}))}var _Le,zLe=z(()=>{"use strict";o(L_,"intersectionArea");o(p5t,"containedInCircles");o(m5t,"getIntersectionPoints");o(hU,"circleArea");o(Xs,"distance");o(yU,"circleOverlap");o(wLe,"circleCircleIntersection");o(SLe,"getCenter");o(g5t,"bisect");o(dU,"zeros");o(CLe,"zerosM");o(Fy,"dot");o(fU,"norm2");o(pU,"scale");o(Rh,"weightedSum");o(ELe,"nelderMead");o(y5t,"wolfeLineSearch");o(v5t,"conjugateGradient");o(ALe,"venn");_Le=1e-10;o(mU,"distanceFromIntersectArea");o(x5t,"addMissingAreas");o(b5t,"getDistanceMatrices");o(T5t,"constrainedMDSGradient");o(C5t,"bestInitialLayout");o(k5t,"constrainedMDSLayout");o(w5t,"greedyLayout");o($y,"lossFunction");o(DLe,"logRatioLossFunction");o(S5t,"orientateCircles");o(E5t,"disjointCluster");o(gU,"getBoundingBox");o(RLe,"normalizeSolution");o(LLe,"scaleSolution");o(MLe,"toObjectNotation");o(NLe,"fromObjectNotation");o(ILe,"VennDiagram");o(cU,"wrapText");o(uU,"circleMargin");o(OLe,"computeTextCentre");o(A5t,"getOverlappingCircles");o(PLe,"computeTextCentres");o(_5t,"circlePath");o(D5t,"circleFromPath");o(BLe,"intersectionAreaArcs");o(FLe,"arcsToPath");o(kLe,"intersectionAreaPath");o($Le,"layout")});function L5t(e){let t=new Map;for(let r of e){let i=r.targets.join("|"),n=t.get(i);n?Object.assign(n,r.styles):t.set(i,{...r.styles})}return t}function Sm(e){return e.join("|")}function N5t(e,t,r,i,n,a){let s=e?.useDebugLayout??!1,u=r.select("svg").append("g").attr("class","venn-text-nodes"),h=new Map;for(let d of i){let f=Sm(d.sets),p=h.get(f);p?p.push(d):h.set(f,[d])}for(let[d,f]of h.entries()){let p=t.get(d);if(!p?.text)continue;let m=p.text.x,g=p.text.y,y=Math.min(...p.circles.map(R=>R.radius)),v=Math.min(...p.circles.map(R=>R.radius-Math.hypot(m-R.x,g-R.y))),x=Number.isFinite(v)?Math.max(0,v):0;x===0&&Number.isFinite(y)&&(x=y*.6);let b=u.append("g").attr("class","venn-text-area").attr("font-size",`${40*n}px`);s&&b.append("circle").attr("class","venn-text-debug-circle").attr("cx",m).attr("cy",g).attr("r",x).attr("fill","none").attr("stroke","purple").attr("stroke-width",1.5*n).attr("stroke-dasharray",`${6*n} ${4*n}`);let T=Math.max(80*n,x*2*.95),w=Math.max(60*n,x*2*.95),E=(p.data.label&&p.data.label.length>0?Math.min(32*n,x*.25):0)+(f.length<=2?30*n:0),A=m-T/2,N=g-w/2+E,P=Math.max(1,Math.ceil(Math.sqrt(f.length))),I=Math.max(1,Math.ceil(f.length/P)),D=T/P,_=w/I;for(let[R,M]of f.entries()){let L=R%P,B=Math.floor(R/P),O=A+D*(L+.5),$=N+_*(B+.5);s&&b.append("rect").attr("class","venn-text-debug-cell").attr("x",A+D*L).attr("y",N+_*B).attr("width",D).attr("height",_).attr("fill","none").attr("stroke","teal").attr("stroke-width",1*n).attr("stroke-dasharray",`${4*n} ${3*n}`);let G=D*.9,F=_*.9,V=b.append("foreignObject").attr("class","venn-text-node-fo").attr("width",G).attr("height",F).attr("x",O-G/2).attr("y",$-F/2).attr("overflow","visible"),H=a.get(M.id)?.color,j=V.append("xhtml:span").attr("class","venn-text-node").style("display","flex").style("width","100%").style("height","100%").style("white-space","normal").style("align-items","center").style("justify-content","center").style("text-align","center").style("overflow-wrap","normal").style("word-break","normal").text(M.label??M.id);H&&j.style("color",H)}}}var M5t,GLe,VLe=z(()=>{"use strict";Rr();Cn();br();ps();zLe();Di();jt();o(L5t,"buildStyleByKey");M5t=o((e,t,r,i)=>{let n=i.db,a=n.getConfig?.(),{themeVariables:s,look:l,handDrawnSeed:u}=Nt(),h=l==="handDrawn",d=[s.venn1,s.venn2,s.venn3,s.venn4,s.venn5,s.venn6,s.venn7,s.venn8].filter(Boolean),f=n.getDiagramTitle?.(),p=n.getSubsetData(),m=n.getTextData(),g=L5t(n.getStyleData()),y=a?.width??800,v=a?.height??450,b=y/1600,T=f?48*b:0,w=s.primaryTextColor??s.textColor,C=bi(t);C.attr("viewBox",`0 0 ${y} ${v}`),f&&C.append("text").text(f).attr("class","venn-title").attr("font-size",`${32*b}px`).attr("text-anchor","middle").attr("dominant-baseline","middle").attr("x","50%").attr("y",32*b).style("fill",s.vennTitleTextColor||s.titleColor);let k=Je(document.createElement("div")),E=ILe().width(y).height(v-T);k.datum(p).call(E);let A=h?ut.svg(k.select("svg").node()):void 0,N=$Le(p,{width:y,height:v-T,padding:a?.padding??15}),P=new Map;for(let R of N){let M=Sm([...R.data.sets].sort());P.set(M,R)}m.length>0&&N5t(a,P,k,m,b,g);let I=ri(s.background||"#f4f4f4");k.selectAll(".venn-circle").each(function(R,M){let L=Je(this),O=Sm([...R.sets].sort()),$=g.get(O),G=$?.fill||d[M%d.length]||s.primaryColor;L.classed(`venn-set-${M%8}`,!0);let F=$?.["fill-opacity"]??.1,V=$?.stroke||G,H=$?.["stroke-width"]||`${5*b}`;if(h&&A){let U=P.get(O);if(U&&U.circles.length>0){let Q=U.circles[0],Y=A.circle(Q.x,Q.y,Q.radius*2,{roughness:.7,seed:u,fill:RC(G,.7),fillStyle:"hachure",fillWeight:2,hachureGap:8,hachureAngle:-41+M*60,stroke:V,strokeWidth:parseFloat(String(H))});L.select("path").remove(),L.node()?.insertBefore(Y,L.select("text").node())}}else L.select("path").style("fill",G).style("fill-opacity",F).style("stroke",V).style("stroke-width",H).style("stroke-opacity",.95);let j=$?.color||(I?je(G,30):Xe(G,30));L.select("text").style("font-size",`${48*b}px`).style("fill",j)}),h&&A?k.selectAll(".venn-intersection").each(function(R){let M=Je(this),B=Sm([...R.sets].sort()),O=g.get(B),$=O?.fill;if($){let G=M.select("path"),F=G.attr("d");if(F){let V=A.path(F,{roughness:.7,seed:u,fill:RC($,.3),fillStyle:"cross-hatch",fillWeight:2,hachureGap:6,hachureAngle:60,stroke:"none"}),H=G.node();H?.parentNode?.insertBefore(V,H),G.remove()}}else M.select("path").style("fill-opacity",0);M.select("text").style("font-size",`${48*b}px`).style("fill",O?.color??s.vennSetTextColor??w)}):(k.selectAll(".venn-intersection text").style("font-size",`${48*b}px`).style("fill",R=>{let L=Sm([...R.sets].sort());return g.get(L)?.color??s.vennSetTextColor??w}),k.selectAll(".venn-intersection path").style("fill-opacity",R=>{let L=Sm([...R.sets].sort());return g.get(L)?.fill?1:0}).style("fill",R=>{let L=Sm([...R.sets].sort());return g.get(L)?.fill??"transparent"}));let D=C.append("g").attr("transform",`translate(0, ${T})`),_=k.select("svg").node();if(_&&"childNodes"in _)for(let R of[..._.childNodes])D.node()?.appendChild(R);Br(C,v,y,a?.useMaxWidth??!0)},"draw");o(Sm,"stableSetsKey");o(N5t,"renderTextNodes");GLe={draw:M5t}});var WLe={};xr(WLe,{diagram:()=>I5t});var I5t,qLe=z(()=>{"use strict";yLe();xLe();TLe();VLe();I5t={parser:gLe,db:vLe,renderer:GLe,styles:bLe}});var zy,vU=z(()=>{"use strict";Bn();br();Xt();Ht();Ci();zy=class{constructor(){this.nodes=[];this.levels=new Map;this.outerNodes=[];this.classes=new Map;this.setAccTitle=Cr;this.getAccTitle=kr;this.setDiagramTitle=Ar;this.getDiagramTitle=Er;this.getAccDescription=Sr;this.setAccDescription=wr}static{o(this,"TreeMapDB")}getNodes(){return this.nodes}getConfig(){let t=or,r=Nt();return Gr({...t.treemap,...r.treemap??{}})}addNode(t,r){this.nodes.push(t),this.levels.set(t,r),r===0&&(this.outerNodes.push(t),this.root??=t)}getRoot(){return{name:"",children:this.outerNodes}}addClass(t,r){let i=this.classes.get(t)??{id:t,styles:[],textStyles:[]},n=r.replace(/\\,/g,"\xA7\xA7\xA7").replace(/,/g,";").replace(/§§§/g,",").split(";");n&&n.forEach(a=>{Xx(a)&&(i?.textStyles?i.textStyles.push(a):i.textStyles=[a]),i?.styles?i.styles.push(a):i.styles=[a]}),this.classes.set(t,i)}getClasses(){return this.classes}getStylesForClass(t){return this.classes.get(t)?.styles??[]}clear(){gr(),this.nodes=[],this.levels=new Map,this.outerNodes=[],this.classes=new Map,this.root=void 0}}});function YLe(e){if(!e.length)return[];let t=[],r=[];return e.forEach(i=>{let n={name:i.name,children:i.type==="Leaf"?void 0:[]};for(n.classSelector=i?.classSelector,i?.cssCompiledStyles&&(n.cssCompiledStyles=i.cssCompiledStyles),i.type==="Leaf"&&i.value!==void 0&&(n.value=i.value);r.length>0&&r[r.length-1].level>=i.level;)r.pop();if(r.length===0)t.push(n);else{let a=r[r.length-1].node;a.children?a.children.push(n):a.children=[n]}i.type!=="Leaf"&&r.push({node:n,level:i.level})}),t}var jLe=z(()=>{"use strict";o(YLe,"buildHierarchy")});var F5t,$5t,xU,XLe=z(()=>{"use strict";sl();St();au();jLe();vU();F5t=o((e,t)=>{ca(e,t);let r=[];for(let a of e.TreemapRows??[])a.$type==="ClassDefStatement"&&t.addClass(a.className??"",a.styleText??"");for(let a of e.TreemapRows??[]){let s=a.item;if(!s)continue;let l=a.indent?parseInt(a.indent):0,u=$5t(s),h=s.classSelector?t.getStylesForClass(s.classSelector):[],d=h.length>0?h:void 0,f={level:l,name:u,type:s.$type,value:s.value,classSelector:s.classSelector,cssCompiledStyles:d};r.push(f)}let i=YLe(r),n=o((a,s)=>{for(let l of a)t.addNode(l,s),l.children&&l.children.length>0&&n(l.children,s+1)},"addNodesRecursively");n(i,0)},"populate"),$5t=o(e=>e.name?String(e.name):"","getItemName"),xU={parser:{yy:void 0},parse:o(async e=>{try{let r=await bn("treemap",e);Z.debug("Treemap AST:",r);let i=xU.parser?.yy;if(!(i instanceof zy))throw new Error("parser.parser?.yy was not a TreemapDB. This is due to a bug within Mermaid, please report this issue at https://github.com/mermaid-js/mermaid/issues.");F5t(r,i)}catch(t){throw Z.error("Error parsing treemap:",t),t}},"parse")}});var z5t,Gy,mC,G5t,V5t,KLe,ZLe=z(()=>{"use strict";ps();rf();Di();Rr();Ht();br();St();z5t=10,Gy=10,mC=25,G5t=o((e,t,r,i)=>{let n=i.db,a=n.getConfig(),s=a.padding??z5t,l=n.getDiagramTitle(),u=n.getRoot(),{themeVariables:h}=Nt();if(!u)return;let d=l?30:0,f=bi(t),p=a.nodeWidth?a.nodeWidth*Gy:960,m=a.nodeHeight?a.nodeHeight*Gy:500,g=p,y=m+d;f.attr("viewBox",`0 0 ${g} ${y}`),Br(f,y,g,a.useMaxWidth);let v;try{let R=a.valueFormat||",";if(R==="$0,0")v=o(M=>"$"+mc(",")(M),"valueFormat");else if(R.startsWith("$")&&R.includes(",")){let M=/\.\d+/.exec(R),L=M?M[0]:"";v=o(B=>"$"+mc(","+L)(B),"valueFormat")}else if(R.startsWith("$")){let M=R.substring(1);v=o(L=>"$"+mc(M||"")(L),"valueFormat")}else v=mc(R)}catch(R){Z.error("Error creating format function:",R),v=mc(",")}let x=ro().range(["transparent",h.cScale0,h.cScale1,h.cScale2,h.cScale3,h.cScale4,h.cScale5,h.cScale6,h.cScale7,h.cScale8,h.cScale9,h.cScale10,h.cScale11]),b=ro().range(["transparent",h.cScalePeer0,h.cScalePeer1,h.cScalePeer2,h.cScalePeer3,h.cScalePeer4,h.cScalePeer5,h.cScalePeer6,h.cScalePeer7,h.cScalePeer8,h.cScalePeer9,h.cScalePeer10,h.cScalePeer11]),T=ro().range([h.cScaleLabel0,h.cScaleLabel1,h.cScaleLabel2,h.cScaleLabel3,h.cScaleLabel4,h.cScaleLabel5,h.cScaleLabel6,h.cScaleLabel7,h.cScaleLabel8,h.cScaleLabel9,h.cScaleLabel10,h.cScaleLabel11]);l&&f.append("text").attr("x",g/2).attr("y",d/2).attr("class","treemapTitle").attr("text-anchor","middle").attr("dominant-baseline","middle").text(l);let w=f.append("g").attr("transform",`translate(0, ${d})`).attr("class","treemapContainer"),C=tg(u).sum(R=>R.value??0).sort((R,M)=>(M.value??0)-(R.value??0)),E=lw().size([p,m]).paddingTop(R=>R.children&&R.children.length>0?mC+Gy:0).paddingInner(s).paddingLeft(R=>R.children&&R.children.length>0?Gy:0).paddingRight(R=>R.children&&R.children.length>0?Gy:0).paddingBottom(R=>R.children&&R.children.length>0?Gy:0).round(!0)(C),A=E.descendants().filter(R=>R.children&&R.children.length>0),N=w.selectAll(".treemapSection").data(A).enter().append("g").attr("class","treemapSection").attr("transform",R=>`translate(${R.x0},${R.y0})`);N.append("rect").attr("width",R=>R.x1-R.x0).attr("height",mC).attr("class","treemapSectionHeader").attr("fill","none").attr("fill-opacity",.6).attr("stroke-width",.6).attr("style",R=>R.depth===0?"display: none;":""),N.append("clipPath").attr("id",(R,M)=>`clip-section-${t}-${M}`).append("rect").attr("width",R=>Math.max(0,R.x1-R.x0-12)).attr("height",mC),N.append("rect").attr("width",R=>R.x1-R.x0).attr("height",R=>R.y1-R.y0).attr("class",(R,M)=>`treemapSection section${M}`).attr("fill",R=>x(R.data.name)).attr("fill-opacity",.6).attr("stroke",R=>b(R.data.name)).attr("stroke-width",2).attr("stroke-opacity",.4).attr("style",R=>{if(R.depth===0)return"display: none;";let M=ct({cssCompiledStyles:R.data.cssCompiledStyles});return M.nodeStyles+";"+M.borderStyles.join(";")}),N.append("text").attr("class","treemapSectionLabel").attr("x",6).attr("y",mC/2).attr("dominant-baseline","middle").text(R=>R.depth===0?"":R.data.name).attr("font-weight","bold").attr("style",R=>{if(R.depth===0)return"display: none;";let M="dominant-baseline: middle; font-size: 12px; fill:"+T(R.data.name)+"; white-space: nowrap; overflow: hidden; text-overflow: ellipsis;",L=ct({cssCompiledStyles:R.data.cssCompiledStyles});return M+L.labelStyles.replace("color:","fill:")}).each(function(R){if(R.depth===0)return;let M=Je(this),L=R.data.name;M.text(L);let B=R.x1-R.x0,O=6,$;a.showValues!==!1&&R.value?$=B-10-30-10-O:$=B-O-6;let F=Math.max(15,$),V=M.node();if(V.getComputedTextLength()>F){let U=L;for(;U.length>0;){if(U=L.substring(0,U.length-1),U.length===0){M.text("..."),V.getComputedTextLength()>F&&M.text("");break}if(M.text(U+"..."),V.getComputedTextLength()<=F)break}}}),a.showValues!==!1&&N.append("text").attr("class","treemapSectionValue").attr("x",R=>R.x1-R.x0-10).attr("y",mC/2).attr("text-anchor","end").attr("dominant-baseline","middle").text(R=>R.value?v(R.value):"").attr("font-style","italic").attr("style",R=>{if(R.depth===0)return"display: none;";let M="text-anchor: end; dominant-baseline: middle; font-size: 10px; fill:"+T(R.data.name)+"; white-space: nowrap; overflow: hidden; text-overflow: ellipsis;",L=ct({cssCompiledStyles:R.data.cssCompiledStyles});return M+L.labelStyles.replace("color:","fill:")});let P=E.leaves(),I=w.selectAll(".treemapLeafGroup").data(P).enter().append("g").attr("class",(R,M)=>`treemapNode treemapLeafGroup leaf${M}${R.data.classSelector?` ${R.data.classSelector}`:""}x`).attr("transform",R=>`translate(${R.x0},${R.y0})`);I.append("rect").attr("width",R=>R.x1-R.x0).attr("height",R=>R.y1-R.y0).attr("class","treemapLeaf").attr("fill",R=>R.parent?x(R.parent.data.name):x(R.data.name)).attr("style",R=>ct({cssCompiledStyles:R.data.cssCompiledStyles}).nodeStyles).attr("fill-opacity",.3).attr("stroke",R=>R.parent?x(R.parent.data.name):x(R.data.name)).attr("stroke-width",3),I.append("clipPath").attr("id",(R,M)=>`clip-${t}-${M}`).append("rect").attr("width",R=>Math.max(0,R.x1-R.x0-4)).attr("height",R=>Math.max(0,R.y1-R.y0-4)),I.append("text").attr("class","treemapLabel").attr("x",R=>(R.x1-R.x0)/2).attr("y",R=>(R.y1-R.y0)/2).attr("style",R=>{let M="text-anchor: middle; dominant-baseline: middle; font-size: 38px;fill:"+T(R.data.name)+";",L=ct({cssCompiledStyles:R.data.cssCompiledStyles});return M+L.labelStyles.replace("color:","fill:")}).attr("clip-path",(R,M)=>`url(#clip-${t}-${M})`).text(R=>R.data.name).each(function(R){let M=Je(this),L=R.x1-R.x0,B=R.y1-R.y0,O=M.node(),$=4,G=L-2*$,F=B-2*$;if(G<10||F<10){M.style("display","none");return}let V=parseInt(M.style("font-size"),10),H=8,j=28,U=.6,Q=6,Y=2;for(;O.getComputedTextLength()>G&&V>H;)V--,M.style("font-size",`${V}px`);let ae=Math.max(Q,Math.min(j,Math.round(V*U))),J=V+Y+ae;for(;J>F&&V>H&&(V--,ae=Math.max(Q,Math.min(j,Math.round(V*U))),!(ae<Q&&V===H));)M.style("font-size",`${V}px`),J=V+Y+ae,ae<=Q&&J>F;M.style("font-size",`${V}px`),(O.getComputedTextLength()>G||V<H||F<V)&&M.style("display","none")}),a.showValues!==!1&&I.append("text").attr("class","treemapValue").attr("x",M=>(M.x1-M.x0)/2).attr("y",function(M){return(M.y1-M.y0)/2}).attr("style",M=>{let L="text-anchor: middle; dominant-baseline: hanging; font-size: 28px;fill:"+T(M.data.name)+";",B=ct({cssCompiledStyles:M.data.cssCompiledStyles});return L+B.labelStyles.replace("color:","fill:")}).attr("clip-path",(M,L)=>`url(#clip-${t}-${L})`).text(M=>M.value?v(M.value):"").each(function(M){let L=Je(this),B=this.parentNode;if(!B){L.style("display","none");return}let O=Je(B).select(".treemapLabel");if(O.empty()||O.style("display")==="none"){L.style("display","none");return}let $=parseFloat(O.style("font-size")),G=28,F=.6,V=6,H=2,j=Math.max(V,Math.min(G,Math.round($*F)));L.style("font-size",`${j}px`);let Q=(M.y1-M.y0)/2+$/2+H;L.attr("y",Q);let Y=M.x1-M.x0,te=M.y1-M.y0-4,re=Y-8;L.node().getComputedTextLength()>re||Q+j>te||j<V?L.style("display","none"):L.style("display",null)});let _=a.diagramPadding??8;$s(f,_,"flowchart",a?.useMaxWidth||!1)},"draw"),V5t=o(function(e,t){return t.db.getClasses()},"getClasses"),KLe={draw:G5t,getClasses:V5t}});var W5t,q5t,QLe,JLe=z(()=>{"use strict";Xt();$f();br();W5t={sectionStrokeColor:"black",sectionStrokeWidth:"1",sectionFillColor:"#efefef",leafStrokeColor:"black",leafStrokeWidth:"1",leafFillColor:"#efefef",labelFontSize:"12px",valueFontSize:"10px",titleFontSize:"14px"},q5t=o(({treemap:e}={})=>{let t=Ao(),r=Nt(),i=Gr(t,r.themeVariables),n=Gr(W5t,e),a=n.titleColor??i.titleColor,s=n.labelColor??i.textColor,l=n.valueColor??i.textColor;return`
+`,"getStyles"),kBe=UIt});function cD(e,t){let r=jIt(e),n=r.filter(l=>YIt(l,e)),i=0,a=0,s=[];if(n.length>1){let l=_Be(n);for(let h=0;h<n.length;++h){let d=n[h];d.angle=Math.atan2(d.x-l.x,d.y-l.y)}n.sort((h,d)=>d.angle-h.angle);let u=n[n.length-1];for(let h=0;h<n.length;++h){let d=n[h];a+=(u.x+d.x)*(d.y-u.y);let f={x:(d.x+u.x)/2,y:(d.y+u.y)/2},p=null;for(let m=0;m<d.parentIndex.length;++m)if(u.parentIndex.includes(d.parentIndex[m])){let g=e[d.parentIndex[m]],y=Math.atan2(d.x-g.x,d.y-g.y),v=Math.atan2(u.x-g.x,u.y-g.y),x=v-y;x<0&&(x+=2*Math.PI);let b=v-x/2,T=Ro(f,{x:g.x+g.radius*Math.sin(b),y:g.y+g.radius*Math.cos(b)});T>g.radius*2&&(T=g.radius*2),(p==null||p.width>T)&&(p={circle:g,width:T,p1:d,p2:u,large:T>g.radius,sweep:!0})}p!=null&&(s.push(p),i+=pX(p.circle.radius,p.width),u=d)}}else{let l=e[0];for(let h=1;h<e.length;++h)e[h].radius<l.radius&&(l=e[h]);let u=!1;for(let h=0;h<e.length;++h)if(Ro(e[h],l)>Math.abs(l.radius-e[h].radius)){u=!0;break}u?i=a=0:(i=l.radius*l.radius*Math.PI,s.push({circle:l,p1:{x:l.x,y:l.y+l.radius},p2:{x:l.x-1e-10,y:l.y+l.radius},width:l.radius*2,large:!0,sweep:!0}))}return a/=2,t&&(t.area=i+a,t.arcArea=i,t.polygonArea=a,t.arcs=s,t.innerPoints=n,t.intersectionPoints=r),i+a}function YIt(e,t){return t.every(r=>Ro(e,r)<r.radius+1e-10)}function jIt(e){let t=[];for(let r=0;r<e.length;++r)for(let n=r+1;n<e.length;++n){let i=RBe(e[r],e[n]);for(let a of i)a.parentIndex=[r,n],t.push(a)}return t}function pX(e,t){return e*e*Math.acos(1-t/e)-(e-t)*Math.sqrt(t*(2*e-t))}function Ro(e,t){return Math.sqrt((e.x-t.x)*(e.x-t.x)+(e.y-t.y)*(e.y-t.y))}function bX(e,t,r){if(r>=e+t)return 0;if(r<=Math.abs(e-t))return Math.PI*Math.min(e,t)*Math.min(e,t);let n=e-(r*r-t*t+e*e)/(2*r),i=t-(r*r-e*e+t*t)/(2*r);return pX(e,n)+pX(t,i)}function RBe(e,t){let r=Ro(e,t),n=e.radius,i=t.radius;if(r>=n+i||r<=Math.abs(n-i))return[];let a=(n*n-i*i+r*r)/(2*r),s=Math.sqrt(n*n-a*a),l=e.x+a*(t.x-e.x)/r,u=e.y+a*(t.y-e.y)/r,h=-(t.y-e.y)*(s/r),d=-(t.x-e.x)*(s/r);return[{x:l+h,y:u-d},{x:l-h,y:u+d}]}function _Be(e){let t={x:0,y:0};for(let r of e)t.x+=r.x,t.y+=r.y;return t.x/=e.length,t.y/=e.length,t}function XIt(e,t,r,n){n=n||{};let i=n.maxIterations||100,a=n.tolerance||1e-10,s=e(t),l=e(r),u=r-t;if(s*l>0)throw"Initial bisect points must have opposite signs";if(s===0)return t;if(l===0)return r;for(let h=0;h<i;++h){u/=2;let d=t+u,f=e(d);if(f*s>=0&&(t=d),Math.abs(u)<a||f===0)return d}return t+u}function mX(e){let t=new Array(e);for(let r=0;r<e;++r)t[r]=0;return t}function EBe(e,t){return mX(e).map(()=>mX(t))}function xx(e,t){let r=0;for(let n=0;n<e.length;++n)r+=e[n]*t[n];return r}function gX(e){return Math.sqrt(xx(e,e))}function yX(e,t,r){for(let n=0;n<t.length;++n)e[n]=t[n]*r}function md(e,t,r,n,i){for(let a=0;a<e.length;++a)e[a]=t*r[a]+n*i[a]}function LBe(e,t,r){r=r||{};let n=r.maxIterations||t.length*200,i=r.nonZeroDelta||1.05,a=r.zeroDelta||.001,s=r.minErrorDelta||1e-6,l=r.minErrorDelta||1e-5,u=r.rho!==void 0?r.rho:1,h=r.chi!==void 0?r.chi:2,d=r.psi!==void 0?r.psi:-.5,f=r.sigma!==void 0?r.sigma:.5,p,m=t.length,g=new Array(m+1);g[0]=t,g[0].fx=e(t),g[0].id=0;for(let C=0;C<m;++C){let w=t.slice();w[C]=w[C]?w[C]*i:a,g[C+1]=w,g[C+1].fx=e(w),g[C+1].id=C+1}function y(C){for(let w=0;w<C.length;w++)g[m][w]=C[w];g[m].fx=C.fx}o(y,"updateSimplex");let v=o((C,w)=>C.fx-w.fx,"sortOrder"),x=t.slice(),b=t.slice(),T=t.slice(),k=t.slice();for(let C=0;C<n;++C){if(g.sort(v),r.history){let S=g.map(R=>{let L=R.slice();return L.fx=R.fx,L.id=R.id,L});S.sort((R,L)=>R.id-L.id),r.history.push({x:g[0].slice(),fx:g[0].fx,simplex:S})}p=0;for(let S=0;S<m;++S)p=Math.max(p,Math.abs(g[0][S]-g[1][S]));if(Math.abs(g[0].fx-g[m].fx)<s&&p<l)break;for(let S=0;S<m;++S){x[S]=0;for(let R=0;R<m;++R)x[S]+=g[R][S];x[S]/=m}let w=g[m];if(md(b,1+u,x,-u,w),b.fx=e(b),b.fx<g[0].fx)md(k,1+h,x,-h,w),k.fx=e(k),k.fx<b.fx?y(k):y(b);else if(b.fx>=g[m-1].fx){let S=!1;if(b.fx>w.fx?(md(T,1+d,x,-d,w),T.fx=e(T),T.fx<w.fx?y(T):S=!0):(md(T,1-d*u,x,d*u,w),T.fx=e(T),T.fx<b.fx?y(T):S=!0),S){if(f>=1)break;for(let R=1;R<g.length;++R)md(g[R],1-f,g[0],f,g[R]),g[R].fx=e(g[R])}}else y(b)}return g.sort(v),{fx:g[0].fx,x:g[0]}}function KIt(e,t,r,n,i,a,s){let l=r.fx,u=xx(r.fxprime,t),h=l,d=l,f=u,p=0;i=i||1,a=a||1e-6,s=s||.1;function m(g,y,v){for(let x=0;x<16;++x)if(i=(g+y)/2,md(n.x,1,r.x,i,t),h=n.fx=e(n.x,n.fxprime),f=xx(n.fxprime,t),h>l+a*i*u||h>=v)y=i;else{if(Math.abs(f)<=-s*u)return i;f*(y-g)>=0&&(y=g),g=i,v=h}return 0}o(m,"zoom");for(let g=0;g<10;++g){if(md(n.x,1,r.x,i,t),h=n.fx=e(n.x,n.fxprime),f=xx(n.fxprime,t),h>l+a*i*u||g&&h>=d)return m(p,i,d);if(Math.abs(f)<=-s*u)return i;if(f>=0)return m(i,p,h);d=h,p=i,i*=2}return i}function ZIt(e,t,r){let n={x:t.slice(),fx:0,fxprime:t.slice()},i={x:t.slice(),fx:0,fxprime:t.slice()},a=t.slice(),s,l,u=1,h;r=r||{},h=r.maxIterations||t.length*20,n.fx=e(n.x,n.fxprime),s=n.fxprime.slice(),yX(s,n.fxprime,-1);for(let d=0;d<h;++d){if(u=KIt(e,s,n,i,u),r.history&&r.history.push({x:n.x.slice(),fx:n.fx,fxprime:n.fxprime.slice(),alpha:u}),!u)yX(s,n.fxprime,-1);else{md(a,1,i.fxprime,-1,n.fxprime);let f=xx(n.fxprime,n.fxprime),p=Math.max(0,xx(a,i.fxprime)/f);md(s,p,s,-1,i.fxprime),l=n,n=i,i=l}if(gX(n.fxprime)<=1e-5)break}return r.history&&r.history.push({x:n.x.slice(),fx:n.fx,fxprime:n.fxprime.slice(),alpha:u}),n}function DBe(e,t={}){t.maxIterations=t.maxIterations||500;let r=t.initialLayout||tMt,n=t.lossFunction||bx,i=QIt(e,t),a=r(i,t),s=Object.keys(a),l=[];for(let d of s)l.push(a[d].x),l.push(a[d].y);let h=LBe(d=>{let f={};for(let p=0;p<s.length;++p){let m=s[p];f[m]={x:d[2*p],y:d[2*p+1],radius:a[m].radius}}return n(f,i)},l,t).x;for(let d=0;d<s.length;++d){let f=s[d];a[f].x=h[2*d],a[f].y=h[2*d+1]}return a}function vX(e,t,r){return Math.min(e,t)*Math.min(e,t)*Math.PI<=r+IBe?Math.abs(e-t):XIt(n=>bX(e,t,n)-r,0,e+t)}function QIt(e,t={}){let r=t.distinct,n=e.map(l=>Object.assign({},l));function i(l){return l.join(";")}if(o(i,"toKey"),r){let l=new Map;for(let u of n)for(let h=0;h<u.sets.length;h++){let d=String(u.sets[h]);l.set(d,u.size+(l.get(d)||0));for(let f=h+1;f<u.sets.length;f++){let p=String(u.sets[f]),m=`${d};${p}`,g=`${p};${d}`;l.set(m,u.size+(l.get(m)||0)),l.set(g,u.size+(l.get(g)||0))}}for(let u of n)u.sets.length<3&&(u.size=l.get(i(u.sets)))}let a=[],s=new Set;for(let l of n)if(l.sets.length===1)a.push(l.sets[0]);else if(l.sets.length===2){let u=l.sets[0],h=l.sets[1];s.add(i(l.sets)),s.add(i([h,u]))}a.sort((l,u)=>l===u?0:l<u?-1:1);for(let l=0;l<a.length;++l){let u=a[l];for(let h=l+1;h<a.length;++h){let d=a[h];s.has(i([u,d]))||n.push({sets:[u,d],size:0})}}return n}function JIt(e,t,r){let n=EBe(t.length,t.length),i=EBe(t.length,t.length);return e.filter(a=>a.sets.length===2).forEach(a=>{let s=r[a.sets[0]],l=r[a.sets[1]],u=Math.sqrt(t[s].size/Math.PI),h=Math.sqrt(t[l].size/Math.PI),d=vX(u,h,a.size);n[s][l]=n[l][s]=d;let f=0;a.size+1e-10>=Math.min(t[s].size,t[l].size)?f=1:a.size<=1e-10&&(f=-1),i[s][l]=i[l][s]=f}),{distances:n,constraints:i}}function eMt(e,t,r,n){for(let a=0;a<t.length;++a)t[a]=0;let i=0;for(let a=0;a<r.length;++a){let s=e[2*a],l=e[2*a+1];for(let u=a+1;u<r.length;++u){let h=e[2*u],d=e[2*u+1],f=r[a][u],p=n[a][u],m=(h-s)*(h-s)+(d-l)*(d-l),g=Math.sqrt(m),y=m-f*f;p>0&&g<=f||p<0&&g>=f||(i+=2*y*y,t[2*a]+=4*y*(s-h),t[2*a+1]+=4*y*(l-d),t[2*u]+=4*y*(h-s),t[2*u+1]+=4*y*(d-l))}}return i}function tMt(e,t={}){let r=nMt(e,t),n=t.lossFunction||bx;if(e.length>=8){let i=rMt(e,t),a=n(i,e),s=n(r,e);a+1e-8<s&&(r=i)}return r}function rMt(e,t={}){let r=t.restarts||10,n=[],i={};for(let p of e)p.sets.length===1&&(i[p.sets[0]]=n.length,n.push(p));let{distances:a,constraints:s}=JIt(e,n,i),l=gX(a.map(gX))/a.length;a=a.map(p=>p.map(m=>m/l));let u=o((p,m)=>eMt(p,m,a,s),"obj"),h=null;for(let p=0;p<r;++p){let m=mX(a.length*2).map(Math.random),g=ZIt(u,m,t);(!h||g.fx<h.fx)&&(h=g)}let d=h.x,f={};for(let p=0;p<n.length;++p){let m=n[p];f[m.sets[0]]={x:d[2*p]*l,y:d[2*p+1]*l,radius:Math.sqrt(m.size/Math.PI)}}if(t.history)for(let p of t.history)yX(p.x,l);return f}function nMt(e,t){let r=t&&t.lossFunction?t.lossFunction:bx,n={},i={};for(let f of e)if(f.sets.length===1){let p=f.sets[0];n[p]={x:1e10,y:1e10,rowid:n.length,size:f.size,radius:Math.sqrt(f.size/Math.PI)},i[p]=[]}e=e.filter(f=>f.sets.length===2);for(let f of e){let p=f.weight!=null?f.weight:1,m=f.sets[0],g=f.sets[1];f.size+IBe>=Math.min(n[m].size,n[g].size)&&(p=0),i[m].push({set:g,size:f.size,weight:p}),i[g].push({set:m,size:f.size,weight:p})}let a=[];Object.keys(i).forEach(f=>{let p=0;for(let m=0;m<i[f].length;++m)p+=i[f][m].size*i[f][m].weight;a.push({set:f,size:p})});function s(f,p){return p.size-f.size}o(s,"sortOrder"),a.sort(s);let l={};function u(f){return f.set in l}o(u,"isPositioned");function h(f,p){n[p].x=f.x,n[p].y=f.y,l[p]=!0}o(h,"positionSet"),h({x:0,y:0},a[0].set);for(let f=1;f<a.length;++f){let p=a[f].set,m=i[p].filter(u),g=n[p];if(m.sort(s),m.length===0)throw"ERROR: missing pairwise overlap information";let y=[];for(var d=0;d<m.length;++d){let b=n[m[d].set],T=vX(g.radius,b.radius,m[d].size);y.push({x:b.x+T,y:b.y}),y.push({x:b.x-T,y:b.y}),y.push({y:b.y+T,x:b.x}),y.push({y:b.y-T,x:b.x});for(let k=d+1;k<m.length;++k){let C=n[m[k].set],w=vX(g.radius,C.radius,m[k].size),S=RBe({x:b.x,y:b.y,radius:T},{x:C.x,y:C.y,radius:w});y.push(...S)}}let v=1e50,x=y[0];for(let b of y){n[p].x=b.x,n[p].y=b.y;let T=r(n,e);T<v&&(v=T,x=b)}h(x,p)}return n}function bx(e,t){let r=0;for(let n of t){if(n.sets.length===1)continue;let i;if(n.sets.length===2){let s=e[n.sets[0]],l=e[n.sets[1]];i=bX(s.radius,l.radius,Ro(s,l))}else i=cD(n.sets.map(s=>e[s]));let a=n.weight!=null?n.weight:1;r+=a*(i-n.size)*(i-n.size)}return r}function MBe(e,t){let r=0;for(let n of t){if(n.sets.length===1)continue;let i;if(n.sets.length===2){let l=e[n.sets[0]],u=e[n.sets[1]];i=bX(l.radius,u.radius,Ro(l,u))}else i=cD(n.sets.map(l=>e[l]));let a=n.weight!=null?n.weight:1,s=Math.log((i+1)/(n.size+1));r+=a*s*s}return r}function iMt(e,t,r){if(r==null?e.sort((i,a)=>a.radius-i.radius):e.sort(r),e.length>0){let i=e[0].x,a=e[0].y;for(let s of e)s.x-=i,s.y-=a}if(e.length===2&&Ro(e[0],e[1])<Math.abs(e[1].radius-e[0].radius)&&(e[1].x=e[0].x+e[0].radius-e[1].radius-1e-10,e[1].y=e[0].y),e.length>1){let i=Math.atan2(e[1].x,e[1].y)-t,a=Math.cos(i),s=Math.sin(i);for(let l of e){let u=l.x,h=l.y;l.x=a*u-s*h,l.y=s*u+a*h}}if(e.length>2){let i=Math.atan2(e[2].x,e[2].y)-t;for(;i<0;)i+=2*Math.PI;for(;i>2*Math.PI;)i-=2*Math.PI;if(i>Math.PI){let a=e[1].y/(1e-10+e[1].x);for(let s of e){var n=(s.x+a*s.y)/(1+a*a);s.x=2*n-s.x,s.y=2*n*a-s.y}}}}function aMt(e){e.forEach(i=>{i.parent=i});function t(i){return i.parent!==i&&(i.parent=t(i.parent)),i.parent}o(t,"find");function r(i,a){let s=t(i),l=t(a);s.parent=l}o(r,"union");for(let i=0;i<e.length;++i)for(let a=i+1;a<e.length;++a){let s=e[i].radius+e[a].radius;Ro(e[i],e[a])+1e-10<s&&r(e[a],e[i])}let n=new Map;for(let i=0;i<e.length;++i){let a=t(e[i]).parent.setid;n.has(a)||n.set(a,[]),n.get(a).push(e[i])}return e.forEach(i=>{delete i.parent}),Array.from(n.values())}function xX(e){let t=o(r=>{let n=e.reduce((a,s)=>Math.max(a,s[r]+s.radius),Number.NEGATIVE_INFINITY),i=e.reduce((a,s)=>Math.min(a,s[r]-s.radius),Number.POSITIVE_INFINITY);return{max:n,min:i}},"minMax");return{xRange:t("x"),yRange:t("y")}}function NBe(e,t,r){t==null&&(t=Math.PI/2);let n=BBe(e).map(h=>Object.assign({},h)),i=aMt(n);for(let h of i){iMt(h,t,r);let d=xX(h);h.size=(d.xRange.max-d.xRange.min)*(d.yRange.max-d.yRange.min),h.bounds=d}i.sort((h,d)=>d.size-h.size),n=i[0];let a=n.bounds,s=(a.xRange.max-a.xRange.min)/50;function l(h,d,f){if(!h)return;let p=h.bounds,m,g;if(d)m=a.xRange.max-p.xRange.min+s;else{m=a.xRange.max-p.xRange.max;let y=(p.xRange.max-p.xRange.min)/2-(a.xRange.max-a.xRange.min)/2;y<0&&(m+=y)}if(f)g=a.yRange.max-p.yRange.min+s;else{g=a.yRange.max-p.yRange.max;let y=(p.yRange.max-p.yRange.min)/2-(a.yRange.max-a.yRange.min)/2;y<0&&(g+=y)}for(let y of h)y.x+=m,y.y+=g,n.push(y)}o(l,"addCluster");let u=1;for(;u<i.length;)l(i[u],!0,!1),l(i[u+1],!1,!0),l(i[u+2],!0,!0),u+=3,a=xX(n);return OBe(n)}function PBe(e,t,r,n,i){let a=BBe(e);t-=2*n,r-=2*n;let{xRange:s,yRange:l}=xX(a);if(s.max===s.min||l.max===l.min)return console.log("not scaling solution: zero size detected"),e;let u,h;if(i){let m=Math.sqrt(i/Math.PI)*2;u=t/m,h=r/m}else u=t/(s.max-s.min),h=r/(l.max-l.min);let d=Math.min(h,u),f=(t-(s.max-s.min)*d)/2,p=(r-(l.max-l.min)*d)/2;return OBe(a.map(m=>({radius:d*m.radius,x:n+f+(m.x-s.min)*d,y:n+p+(m.y-l.min)*d,setid:m.setid})))}function OBe(e){let t={};for(let r of e)t[r.setid]=r;return t}function BBe(e){return Object.keys(e).map(r=>Object.assign(e[r],{setid:r}))}function $Be(e={}){let t=!1,r=600,n=350,i=15,a=1e3,s=Math.PI/2,l=!0,u=null,h=!0,d=!0,f=null,p=null,m=!1,g=null,y=e&&e.symmetricalTextCentre?e.symmetricalTextCentre:!1,v={},x=e&&e.colourScheme?e.colourScheme:e&&e.colorScheme?e.colorScheme:["#1f77b4","#ff7f0e","#2ca02c","#d62728","#9467bd","#8c564b","#e377c2","#7f7f7f","#bcbd22","#17becf"],b=0,T=o(function(S){if(S in v)return v[S];var R=v[S]=x[b];return b+=1,b>=x.length&&(b=0),R},"colours"),k=DBe,C=bx;function w(S){let R=S.datum(),L=new Set;R.forEach(U=>{U.size==0&&U.sets.length==1&&L.add(U.sets[0])}),R=R.filter(U=>!U.sets.some(oe=>L.has(oe)));let N={},I={};if(R.length>0){let U=k(R,{lossFunction:C,distinct:m});l&&(U=NBe(U,s,p)),N=PBe(U,r,n,i,u),I=zBe(N,R,y)}let _={};R.forEach(U=>{U.label&&(_[U.sets]=U.label)});function A(U){if(U.sets in _)return _[U.sets];if(U.sets.length==1)return""+U.sets[0]}o(A,"label"),S.selectAll("svg").data([N]).enter().append("svg");let M=S.select("svg");t?M.attr("viewBox",`0 0 ${r} ${n}`):M.attr("width",r).attr("height",n);let D={},P=!1;M.selectAll(".venn-area path").each(function(U){let oe=this.getAttribute("d");U.sets.length==1&&oe&&!m&&(P=!0,D[U.sets[0]]=lMt(oe))});function B(U){return oe=>{let te=U.sets.map(le=>{let ie=D[le],ae=N[le];return ie||(ie={x:r/2,y:n/2,radius:1}),ae||(ae={x:r/2,y:n/2,radius:1}),{x:ie.x*(1-oe)+ae.x*oe,y:ie.y*(1-oe)+ae.y*oe,radius:ie.radius*(1-oe)+ae.radius*oe}});return ABe(te,g)}}o(B,"pathTween");let O=M.selectAll(".venn-area").data(R,U=>U.sets),$=O.enter().append("g").attr("class",U=>`venn-area venn-${U.sets.length==1?"circle":"intersection"}${U.colour||U.color?" venn-coloured":""}`).attr("data-venn-sets",U=>U.sets.join("_")),V=$.append("path"),G=$.append("text").attr("class","label").text(U=>A(U)).attr("text-anchor","middle").attr("dy",".35em").attr("x",r/2).attr("y",n/2);d&&(V.style("fill-opacity","0").filter(U=>U.sets.length==1).style("fill",U=>U.colour?U.colour:U.color?U.color:T(U.sets)).style("fill-opacity",".25"),G.style("fill",U=>U.colour||U.color?"#FFF":e.textFill?e.textFill:U.sets.length==1?T(U.sets):"#444"));function z(U){return typeof U.transition=="function"?U.transition("venn").duration(a):U}o(z,"asTransition");let W=S;P&&typeof W.transition=="function"?(W=z(S),W.selectAll("path").attrTween("d",B)):W.selectAll("path").attr("d",U=>ABe(U.sets.map(oe=>N[oe])),g);let H=W.selectAll("text").filter(U=>U.sets in I).text(U=>A(U)).attr("x",U=>Math.floor(I[U.sets].x)).attr("y",U=>Math.floor(I[U.sets].y));h&&(P?"on"in H?H.on("end",dX(N,A)):H.each("end",dX(N,A)):H.each(dX(N,A)));let j=z(O.exit()).remove();typeof O.transition=="function"&&j.selectAll("path").attrTween("d",B);let Q=j.selectAll("text").attr("x",r/2).attr("y",n/2);return f!==null&&(G.style("font-size","0px"),H.style("font-size",f),Q.style("font-size","0px")),{circles:N,textCentres:I,nodes:O,enter:$,update:W,exit:j}}return o(w,"chart"),w.wrap=function(S){return arguments.length?(h=S,w):h},w.useViewBox=function(){return t=!0,w},w.width=function(S){return arguments.length?(r=S,w):r},w.height=function(S){return arguments.length?(n=S,w):n},w.padding=function(S){return arguments.length?(i=S,w):i},w.distinct=function(S){return arguments.length?(m=S,w):m},w.colours=function(S){return arguments.length?(T=S,w):T},w.colors=function(S){return arguments.length?(T=S,w):T},w.fontSize=function(S){return arguments.length?(f=S,w):f},w.round=function(S){return arguments.length?(g=S,w):g},w.duration=function(S){return arguments.length?(a=S,w):a},w.layoutFunction=function(S){return arguments.length?(k=S,w):k},w.normalize=function(S){return arguments.length?(l=S,w):l},w.scaleToFit=function(S){return arguments.length?(u=S,w):u},w.styled=function(S){return arguments.length?(d=S,w):d},w.orientation=function(S){return arguments.length?(s=S,w):s},w.orientationOrder=function(S){return arguments.length?(p=S,w):p},w.lossFunction=function(S){return arguments.length?(C=S==="default"?bx:S==="logRatio"?MBe:S,w):C},w}function dX(e,t){return function(r){let n=this,i=e[r.sets[0]].radius||50,a=t(r)||"",s=a.split(/\s+/).reverse(),u=(a.length+s.length)/3,h=s.pop(),d=[h],f=0,p=1.1;n.textContent=null;let m=[];function g(T){let k=n.ownerDocument.createElementNS(n.namespaceURI,"tspan");return k.textContent=T,m.push(k),n.append(k),k}o(g,"append");let y=g(h);for(;h=s.pop(),!!h;){d.push(h);let T=d.join(" ");y.textContent=T,T.length>u&&y.getComputedTextLength()>i&&(d.pop(),y.textContent=d.join(" "),d=[h],y=g(h),f++)}let v=.35-f*p/2,x=n.getAttribute("x"),b=n.getAttribute("y");m.forEach((T,k)=>{T.setAttribute("x",x),T.setAttribute("y",b),T.setAttribute("dy",`${v+k*p}em`)})}}function fX(e,t,r){let n=t[0].radius-Ro(t[0],e);for(let i=1;i<t.length;++i){let a=t[i].radius-Ro(t[i],e);a<=n&&(n=a)}for(let i=0;i<r.length;++i){let a=Ro(r[i],e)-r[i].radius;a<=n&&(n=a)}return n}function FBe(e,t,r){let n=[];for(let d of e)n.push({x:d.x,y:d.y}),n.push({x:d.x+d.radius/2,y:d.y}),n.push({x:d.x-d.radius/2,y:d.y}),n.push({x:d.x,y:d.y+d.radius/2}),n.push({x:d.x,y:d.y-d.radius/2});let i=n[0],a=fX(n[0],e,t);for(let d=1;d<n.length;++d){let f=fX(n[d],e,t);f>=a&&(i=n[d],a=f)}let s=LBe(d=>-1*fX({x:d[0],y:d[1]},e,t),[i.x,i.y],{maxIterations:500,minErrorDelta:1e-10}).x,l={x:r?0:s[0],y:s[1]},u=!0;for(let d of e)if(Ro(l,d)>d.radius){u=!1;break}for(let d of t)if(Ro(l,d)<d.radius){u=!1;break}if(u)return l;if(e.length==1)return{x:e[0].x,y:e[0].y};let h={};return cD(e,h),h.arcs.length===0?{x:0,y:-1e3,disjoint:!0}:h.arcs.length==1?{x:h.arcs[0].circle.x,y:h.arcs[0].circle.y}:t.length?FBe(e,[]):_Be(h.arcs.map(d=>d.p1))}function sMt(e){let t={},r=Object.keys(e);for(let n of r)t[n]=[];for(let n=0;n<r.length;n++){let i=r[n],a=e[i];for(let s=n+1;s<r.length;++s){let l=r[s],u=e[l],h=Ro(a,u);h+u.radius<=a.radius+1e-10?t[l].push(i):h+a.radius<=u.radius+1e-10&&t[i].push(l)}}return t}function zBe(e,t,r){let n={},i=sMt(e);for(let a=0;a<t.length;++a){let s=t[a].sets,l={},u={};for(let p=0;p<s.length;++p){l[s[p]]=!0;let m=i[s[p]];for(let g=0;g<m.length;++g)u[m[g]]=!0}let h=[],d=[];for(let p in e)p in l?h.push(e[p]):p in u||d.push(e[p]);let f=FBe(h,d,r);n[s]=f,f.disjoint&&t[a].size>0&&console.log("WARNING: area "+s+" not represented on screen")}return n}function oMt(e,t,r){let n=[];return n.push(`
+M`,e,t),n.push(`
+m`,-r,0),n.push(`
+a`,r,r,0,1,0,r*2,0),n.push(`
+a`,r,r,0,1,0,-r*2,0),n.join(" ")}function lMt(e){let t=e.split(" ");return{x:Number.parseFloat(t[1]),y:Number.parseFloat(t[2]),radius:-Number.parseFloat(t[4])}}function GBe(e){if(e.length===0)return[];let t={};return cD(e,t),t.arcs}function VBe(e,t){if(e.length===0)return"M 0 0";let r=Math.pow(10,t||0),n=t!=null?a=>Math.round(a*r)/r:a=>a;if(e.length==1){let a=e[0].circle;return oMt(n(a.x),n(a.y),n(a.radius))}let i=[`
+M`,n(e[0].p2.x),n(e[0].p2.y)];for(let a of e){let s=n(a.circle.radius);i.push(`
+A`,s,s,0,a.large?1:0,a.sweep?1:0,n(a.p1.x),n(a.p1.y))}return i.join(" ")}function ABe(e,t){return VBe(GBe(e),t)}function WBe(e,t={}){let{lossFunction:r,layoutFunction:n=DBe,normalize:i=!0,orientation:a=Math.PI/2,orientationOrder:s,width:l=600,height:u=350,padding:h=15,scaleToFit:d=!1,symmetricalTextCentre:f=!1,distinct:p,round:m=2}=t,g=n(e,{lossFunction:r==="default"||!r?bx:r==="logRatio"?MBe:r,distinct:p});i&&(g=NBe(g,a,s));let y=PBe(g,l,u,h,d),v=zBe(y,e,f),x=new Map(Object.keys(y).map(k=>[k,{set:k,x:y[k].x,y:y[k].y,radius:y[k].radius}])),b=e.map(k=>{let C=k.sets.map(R=>x.get(R)),w=GBe(C),S=VBe(w,m);return{circles:C,arcs:w,path:S,area:k,has:new Set(k.sets)}});function T(k){let C="";for(let w of b)w.has.size>k.length&&k.every(S=>w.has.has(S))&&(C+=" "+w.path);return C}return o(T,"genDistinctPath"),b.map(({circles:k,arcs:C,path:w,area:S})=>({data:S,text:v[S.sets],circles:k,arcs:C,path:w,distinctPath:w+T(S.sets)}))}var IBe,qBe=F(()=>{"use strict";o(cD,"intersectionArea");o(YIt,"containedInCircles");o(jIt,"getIntersectionPoints");o(pX,"circleArea");o(Ro,"distance");o(bX,"circleOverlap");o(RBe,"circleCircleIntersection");o(_Be,"getCenter");o(XIt,"bisect");o(mX,"zeros");o(EBe,"zerosM");o(xx,"dot");o(gX,"norm2");o(yX,"scale");o(md,"weightedSum");o(LBe,"nelderMead");o(KIt,"wolfeLineSearch");o(ZIt,"conjugateGradient");o(DBe,"venn");IBe=1e-10;o(vX,"distanceFromIntersectArea");o(QIt,"addMissingAreas");o(JIt,"getDistanceMatrices");o(eMt,"constrainedMDSGradient");o(tMt,"bestInitialLayout");o(rMt,"constrainedMDSLayout");o(nMt,"greedyLayout");o(bx,"lossFunction");o(MBe,"logRatioLossFunction");o(iMt,"orientateCircles");o(aMt,"disjointCluster");o(xX,"getBoundingBox");o(NBe,"normalizeSolution");o(PBe,"scaleSolution");o(OBe,"toObjectNotation");o(BBe,"fromObjectNotation");o($Be,"VennDiagram");o(dX,"wrapText");o(fX,"circleMargin");o(FBe,"computeTextCentre");o(sMt,"getOverlappingCircles");o(zBe,"computeTextCentres");o(oMt,"circlePath");o(lMt,"circleFromPath");o(GBe,"intersectionAreaArcs");o(VBe,"arcsToPath");o(ABe,"intersectionAreaPath");o(WBe,"layout")});function uMt(e){let t=new Map;for(let r of e){let n=r.targets.join("|"),i=t.get(n);i?Object.assign(i,r.styles):t.set(n,{...r.styles})}return t}function N0(e){return e.join("|")}function dMt(e,t,r,n,i,a){let s=e?.useDebugLayout??!1,u=r.select("svg").append("g").attr("class","venn-text-nodes"),h=new Map;for(let d of n){let f=N0(d.sets),p=h.get(f);p?p.push(d):h.set(f,[d])}for(let[d,f]of h.entries()){let p=t.get(d);if(!p?.text)continue;let m=p.text.x,g=p.text.y,y=Math.min(...p.circles.map(M=>M.radius)),v=Math.min(...p.circles.map(M=>M.radius-Math.hypot(m-M.x,g-M.y))),x=Number.isFinite(v)?Math.max(0,v):0;x===0&&Number.isFinite(y)&&(x=y*.6);let b=u.append("g").attr("class","venn-text-area").attr("font-size",`${40*i}px`);s&&b.append("circle").attr("class","venn-text-debug-circle").attr("cx",m).attr("cy",g).attr("r",x).attr("fill","none").attr("stroke","purple").attr("stroke-width",1.5*i).attr("stroke-dasharray",`${6*i} ${4*i}`);let T=Math.max(80*i,x*2*.95),k=Math.max(60*i,x*2*.95),S=(p.data.label&&p.data.label.length>0?Math.min(32*i,x*.25):0)+(f.length<=2?30*i:0),R=m-T/2,L=g-k/2+S,N=Math.max(1,Math.ceil(Math.sqrt(f.length))),I=Math.max(1,Math.ceil(f.length/N)),_=T/N,A=k/I;for(let[M,D]of f.entries()){let P=M%N,B=Math.floor(M/N),O=R+_*(P+.5),$=L+A*(B+.5);s&&b.append("rect").attr("class","venn-text-debug-cell").attr("x",R+_*P).attr("y",L+A*B).attr("width",_).attr("height",A).attr("fill","none").attr("stroke","teal").attr("stroke-width",1*i).attr("stroke-dasharray",`${4*i} ${3*i}`);let V=_*.9,G=A*.9,z=b.append("foreignObject").attr("class","venn-text-node-fo").attr("width",V).attr("height",G).attr("x",O-V/2).attr("y",$-G/2).attr("overflow","visible"),W=a.get(D.id)?.color,H=z.append("xhtml:span").attr("class","venn-text-node").style("display","flex").style("width","100%").style("height","100%").style("white-space","normal").style("align-items","center").style("justify-content","center").style("text-align","center").style("overflow-wrap","normal").style("word-break","normal").text(D.label??D.id);W&&H.style("color",W)}}}function fMt(e){let t=new Set(e.map(i=>[...i.sets].sort().join("|"))),r=new Map(e.filter(i=>i.sets.length===1&&i.size!==void 0).map(i=>[i.sets[0],i.size])),n=[];for(let i of e){if(i.sets.length<3)continue;let a=[...i.sets].sort();for(let s=0;s<a.length-1;s++)for(let l=s+1;l<a.length;l++){let u=[a[s],a[l]],h=u.join("|");if(!t.has(h)){t.add(h);let d=r.get(u[0]),f=r.get(u[1]),p=d!==void 0&&f!==void 0?Math.min(d,f)/4:2.5;n.push({sets:u,size:p,label:""})}}}return n.length>0?[...e,...n]:e}var hMt,HBe,UBe=F(()=>{"use strict";$r();zi();ur();Ka();qBe();$n();tr();o(uMt,"buildStyleByKey");hMt=o((e,t,r,n)=>{let i=n.db,a=i.getConfig?.(),{themeVariables:s,look:l,handDrawnSeed:u}=_t(),h=l==="handDrawn",d=[s.venn1,s.venn2,s.venn3,s.venn4,s.venn5,s.venn6,s.venn7,s.venn8].filter(Boolean),f=i.getDiagramTitle?.(),p=i.getSubsetData(),m=i.getTextData(),g=uMt(i.getStyleData()),y=fMt(p),v=a?.width??800,x=a?.height??450,T=v/1600,k=f?48*T:0,C=s.primaryTextColor??s.textColor,w=xn(t);w.attr("viewBox",`0 0 ${v} ${x}`),f&&w.append("text").text(f).attr("class","venn-title").attr("font-size",`${32*T}px`).attr("text-anchor","middle").attr("dominant-baseline","middle").attr("x","50%").attr("y",32*T).style("fill",s.vennTitleTextColor||s.titleColor);let S=et(document.createElement("div")),R=$Be().width(v).height(x-k);S.datum(y).call(R);let L=h?ut.svg(S.select("svg").node()):void 0,N=WBe(y,{width:v,height:x-k,padding:a?.padding??15}),I=new Map;for(let D of N){let P=N0([...D.data.sets].sort());I.set(P,D)}m.length>0&&dMt(a,I,S,m,T,g);let _=Tn(s.background||"#f4f4f4");S.selectAll(".venn-circle").each(function(D,P){let B=et(this),$=N0([...D.sets].sort()),V=g.get($),G=V?.fill||d[P%d.length]||s.primaryColor;B.classed(`venn-set-${P%8}`,!0);let z=V?.["fill-opacity"]??.1,W=V?.stroke||G,H=V?.["stroke-width"]||`${5*T}`;if(h&&L){let Q=I.get($);if(Q&&Q.circles.length>0){let U=Q.circles[0],oe=L.circle(U.x,U.y,U.radius*2,{roughness:.7,seed:u,fill:kk(G,.7),fillStyle:"hachure",fillWeight:2,hachureGap:8,hachureAngle:-41+P*60,stroke:W,strokeWidth:parseFloat(String(H))});B.select("path").remove(),B.node()?.insertBefore(oe,B.select("text").node())}}else B.select("path").style("fill",G).style("fill-opacity",z).style("stroke",W).style("stroke-width",H).style("stroke-opacity",.95);let j=V?.color||(_?Qe(G,30):Je(G,30));B.select("text").style("font-size",`${48*T}px`).style("fill",j)}),h&&L?S.selectAll(".venn-intersection").each(function(D){let P=et(this),O=N0([...D.sets].sort()),$=g.get(O),V=$?.fill;if(V){let G=P.select("path"),z=G.attr("d");if(z){let W=L.path(z,{roughness:.7,seed:u,fill:kk(V,.3),fillStyle:"cross-hatch",fillWeight:2,hachureGap:6,hachureAngle:60,stroke:"none"}),H=G.node();H?.parentNode?.insertBefore(W,H),G.remove()}}else P.select("path").style("fill-opacity",0);P.select("text").style("font-size",`${48*T}px`).style("fill",$?.color??s.vennSetTextColor??C)}):(S.selectAll(".venn-intersection text").style("font-size",`${48*T}px`).style("fill",D=>{let B=N0([...D.sets].sort());return g.get(B)?.color??s.vennSetTextColor??C}),S.selectAll(".venn-intersection path").style("fill-opacity",D=>{let B=N0([...D.sets].sort());return g.get(B)?.fill?1:0}).style("fill",D=>{let B=N0([...D.sets].sort());return g.get(B)?.fill??"transparent"}));let A=w.append("g").attr("transform",`translate(0, ${k})`),M=S.select("svg").node();if(M&&"childNodes"in M)for(let D of[...M.childNodes])A.node()?.appendChild(D);Wr(w,x,v,a?.useMaxWidth??!0)},"draw");o(N0,"stableSetsKey");o(dMt,"renderTextNodes");o(fMt,"ensurePairwiseSubsets");HBe={draw:hMt}});var YBe={};ir(YBe,{diagram:()=>pMt});var pMt,jBe=F(()=>{"use strict";TBe();wBe();SBe();UBe();pMt={parser:bBe,db:CBe,renderer:HBe,styles:kBe}});var Tx,TX=F(()=>{"use strict";Wi();ur();Qt();Jt();Nn();Tx=class{constructor(){this.nodes=[];this.levels=new Map;this.outerNodes=[];this.classes=new Map;this.setAccTitle=kr;this.getAccTitle=Ar;this.setDiagramTitle=Or;this.getDiagramTitle=Lr;this.getAccDescription=_r;this.setAccDescription=Rr}static{o(this,"TreeMapDB")}getNodes(){return this.nodes}getConfig(){let t=cr,r=_t();return qr({...t.treemap,...r.treemap??{}})}addNode(t,r){this.nodes.push(t),this.levels.set(t,r),r===0&&(this.outerNodes.push(t),this.root??=t)}getRoot(){return{name:"",children:this.outerNodes}}addClass(t,r){let n=this.classes.get(t)??{id:t,styles:[],textStyles:[]},i=r.replace(/\\,/g,"\xA7\xA7\xA7").replace(/,/g,";").replace(/§§§/g,",").split(";");i&&i.forEach(a=>{M2(a)&&(n?.textStyles?n.textStyles.push(a):n.textStyles=[a]),n?.styles?n.styles.push(a):n.styles=[a]}),this.classes.set(t,n)}getClasses(){return this.classes}getStylesForClass(t){return this.classes.get(t)?.styles??[]}clear(){yr(),this.nodes=[],this.levels=new Map,this.outerNodes=[],this.classes=new Map,this.root=void 0}}});function ZBe(e){if(!e.length)return[];let t=[],r=[];return e.forEach(n=>{let i={name:n.name,children:n.type==="Leaf"?void 0:[]};for(i.classSelector=n?.classSelector,n?.cssCompiledStyles&&(i.cssCompiledStyles=n.cssCompiledStyles),n.type==="Leaf"&&n.value!==void 0&&(i.value=n.value);r.length>0&&r[r.length-1].level>=n.level;)r.pop();if(r.length===0)t.push(i);else{let a=r[r.length-1].node;a.children?a.children.push(i):a.children=[i]}n.type!=="Leaf"&&r.push({node:i,level:n.level})}),t}var QBe=F(()=>{"use strict";o(ZBe,"buildHierarchy")});var vMt,xMt,CX,JBe=F(()=>{"use strict";Xa();vt();Hs();QBe();TX();vMt=o((e,t)=>{Gn(e,t);let r=[];for(let a of e.TreemapRows??[])a.$type==="ClassDefStatement"&&t.addClass(a.className??"",a.styleText??"");for(let a of e.TreemapRows??[]){let s=a.item;if(!s)continue;let l=a.indent?parseInt(a.indent):0,u=xMt(s),h=s.classSelector?t.getStylesForClass(s.classSelector):[],d=h.length>0?h:void 0,f={level:l,name:u,type:s.$type,value:s.value,classSelector:s.classSelector,cssCompiledStyles:d};r.push(f)}let n=ZBe(r),i=o((a,s)=>{for(let l of a)t.addNode(l,s),l.children&&l.children.length>0&&i(l.children,s+1)},"addNodesRecursively");i(n,0)},"populate"),xMt=o(e=>e.name?String(e.name):"","getItemName"),CX={parser:{yy:void 0},parse:o(async e=>{try{let r=await Si("treemap",e);Z.debug("Treemap AST:",r);let n=CX.parser?.yy;if(!(n instanceof Tx))throw new Error("parser.parser?.yy was not a TreemapDB. This is due to a bug within Mermaid, please report this issue at https://github.com/mermaid-js/mermaid/issues.");vMt(r,n)}catch(t){throw Z.error("Error parsing treemap:",t),t}},"parse")}});var bMt,Cx,sk,TMt,CMt,e$e,t$e=F(()=>{"use strict";Ka();Jf();$n();$r();Jt();ur();vt();bMt=10,Cx=10,sk=25,TMt=o((e,t,r,n)=>{let i=n.db,a=i.getConfig(),s=a.padding??bMt,l=i.getDiagramTitle(),u=i.getRoot(),{themeVariables:h}=_t();if(!u)return;let d=l?30:0,f=xn(t),p=a.nodeWidth?a.nodeWidth*Cx:960,m=a.nodeHeight?a.nodeHeight*Cx:500,g=p,y=m+d;f.attr("viewBox",`0 0 ${g} ${y}`),Wr(f,y,g,a.useMaxWidth);let v;try{let z=a.valueFormat||",";if(z==="$0,0")v=o(W=>"$"+Xc(",")(W),"valueFormat");else if(z.startsWith("$")&&z.includes(",")){let W=/\.\d+/.exec(z),H=W?W[0]:"";v=o(j=>"$"+Xc(","+H)(j),"valueFormat")}else if(z.startsWith("$")){let W=z.substring(1);v=o(H=>"$"+Xc(W||"")(H),"valueFormat")}else v=Xc(z)}catch(z){Z.error("Error creating format function:",z),v=Xc(",")}let x=Oo().range(["transparent",h.cScale0,h.cScale1,h.cScale2,h.cScale3,h.cScale4,h.cScale5,h.cScale6,h.cScale7,h.cScale8,h.cScale9,h.cScale10,h.cScale11]),b=Oo().range(["transparent",h.cScalePeer0,h.cScalePeer1,h.cScalePeer2,h.cScalePeer3,h.cScalePeer4,h.cScalePeer5,h.cScalePeer6,h.cScalePeer7,h.cScalePeer8,h.cScalePeer9,h.cScalePeer10,h.cScalePeer11]),T=Oo().range([h.cScaleLabel0,h.cScaleLabel1,h.cScaleLabel2,h.cScaleLabel3,h.cScaleLabel4,h.cScaleLabel5,h.cScaleLabel6,h.cScaleLabel7,h.cScaleLabel8,h.cScaleLabel9,h.cScaleLabel10,h.cScaleLabel11]);l&&f.append("text").attr("x",g/2).attr("y",d/2).attr("class","treemapTitle").attr("text-anchor","middle").attr("dominant-baseline","middle").text(l);let k=f.append("g").attr("transform",`translate(0, ${d})`).attr("class","treemapContainer"),C=vy(u).sum(z=>z.value??0).sort((z,W)=>(W.value??0)-(z.value??0)),S=uE().size([p,m]).paddingTop(z=>z.children&&z.children.length>0?sk+Cx:0).paddingInner(s).paddingLeft(z=>z.children&&z.children.length>0?Cx:0).paddingRight(z=>z.children&&z.children.length>0?Cx:0).paddingBottom(z=>z.children&&z.children.length>0?Cx:0).round(!0)(C),R=S.descendants().filter(z=>z.children&&z.children.length>0),L=k.selectAll(".treemapSection").data(R).enter().append("g").attr("class","treemapSection").attr("transform",z=>`translate(${z.x0},${z.y0})`);L.append("rect").attr("width",z=>z.x1-z.x0).attr("height",sk).attr("class","treemapSectionHeader").attr("fill","none").attr("fill-opacity",.6).attr("stroke-width",.6).attr("style",z=>z.depth===0?"display: none;":""),L.append("clipPath").attr("id",(z,W)=>`clip-section-${t}-${W}`).append("rect").attr("width",z=>Math.max(0,z.x1-z.x0-12)).attr("height",sk),L.append("rect").attr("width",z=>z.x1-z.x0).attr("height",z=>z.y1-z.y0).attr("class",(z,W)=>`treemapSection section${W}`).attr("fill",z=>x(z.data.name)).attr("fill-opacity",.6).attr("stroke",z=>b(z.data.name)).attr("stroke-width",2).attr("stroke-opacity",.4).attr("style",z=>{if(z.depth===0)return"display: none;";let W=ct({cssCompiledStyles:z.data.cssCompiledStyles});return W.nodeStyles+";"+W.borderStyles.join(";")}),L.append("text").attr("class","treemapSectionLabel").attr("x",6).attr("y",sk/2).attr("dominant-baseline","middle").text(z=>z.depth===0?"":z.data.name).attr("font-weight","bold").attr("clip-path",(z,W)=>`url(#clip-section-${t}-${W})`).attr("style",z=>{if(z.depth===0)return"display: none;";let W="dominant-baseline: middle; font-size: 12px; fill:"+T(z.data.name)+"; white-space: nowrap; overflow: hidden; text-overflow: ellipsis;",H=ct({cssCompiledStyles:z.data.cssCompiledStyles});return W+H.labelStyles.replace("color:","fill:")}).each(function(z){if(z.depth===0)return;let W=et(this),H=z.data.name;W.text(H);let j=z.x1-z.x0,Q=6,U;a.showValues!==!1&&z.value?U=j-10-30-10-Q:U=j-Q-6;let te=Math.max(15,U),le=W.node();if(le.getComputedTextLength()>te){let Re=H;for(;Re.length>0;){if(Re=H.substring(0,Re.length-1),Re.length===0){W.text("..."),le.getComputedTextLength()>te&&W.text("");break}if(W.text(Re+"..."),le.getComputedTextLength()<=te)break}}}),a.showValues!==!1&&L.append("text").attr("class","treemapSectionValue").attr("x",z=>z.x1-z.x0-10).attr("y",sk/2).attr("text-anchor","end").attr("dominant-baseline","middle").text(z=>z.value?v(z.value):"").attr("font-style","italic").attr("style",z=>{if(z.depth===0)return"display: none;";let W="text-anchor: end; dominant-baseline: middle; font-size: 10px; fill:"+T(z.data.name)+"; white-space: nowrap; overflow: hidden; text-overflow: ellipsis;",H=ct({cssCompiledStyles:z.data.cssCompiledStyles});return W+H.labelStyles.replace("color:","fill:")});let N=S.leaves(),I=N.length>20,_=I?16:38,A=I?14:28,M=I?4:8,D=I?4:6,P=I?2:4,B=I?8:10,O=I?1:2,$=k.selectAll(".treemapLeafGroup").data(N).enter().append("g").attr("class",(z,W)=>`treemapNode treemapLeafGroup leaf${W}${z.data.classSelector?` ${z.data.classSelector}`:""}x`).attr("transform",z=>`translate(${z.x0},${z.y0})`);$.append("rect").attr("width",z=>z.x1-z.x0).attr("height",z=>z.y1-z.y0).attr("class","treemapLeaf").attr("fill",z=>z.parent?x(z.parent.data.name):x(z.data.name)).attr("style",z=>ct({cssCompiledStyles:z.data.cssCompiledStyles}).nodeStyles).attr("fill-opacity",.3).attr("stroke",z=>z.parent?x(z.parent.data.name):x(z.data.name)).attr("stroke-width",3),$.append("clipPath").attr("id",(z,W)=>`clip-${t}-${W}`).append("rect").attr("width",z=>Math.max(0,z.x1-z.x0-4)).attr("height",z=>Math.max(0,z.y1-z.y0-4)),$.append("text").attr("class","treemapLabel").attr("x",z=>(z.x1-z.x0)/2).attr("y",z=>(z.y1-z.y0)/2).attr("style",z=>{let W=`text-anchor: middle; dominant-baseline: middle; font-size: ${_}px;fill:`+T(z.data.name)+";",H=ct({cssCompiledStyles:z.data.cssCompiledStyles});return W+H.labelStyles.replace("color:","fill:")}).attr("clip-path",(z,W)=>`url(#clip-${t}-${W})`).text(z=>z.data.name).each(function(z){let W=et(this),H=z.x1-z.x0,j=z.y1-z.y0,Q=W.node(),U=H-2*P,oe=j-2*P;if(U<B||oe<B){W.style("display","none");return}let te=parseInt(W.style("font-size"),10),le=.6;for(;Q.getComputedTextLength()>U&&te>M;)te--,W.style("font-size",`${te}px`);let ie=Math.max(D,Math.min(A,Math.round(te*le))),ae=te+O+ie;for(;ae>oe&&te>M&&(te--,ie=Math.max(D,Math.min(A,Math.round(te*le))),!(ie<D&&te===M));)W.style("font-size",`${te}px`),ae=te+O+ie,ie<=D&&ae>oe;W.style("font-size",`${te}px`),I?(te<M||oe<M)&&W.style("display","none"):(Q.getComputedTextLength()>U||te<M||oe<te)&&W.style("display","none")}),a.showValues!==!1&&$.append("text").attr("class","treemapValue").attr("x",W=>(W.x1-W.x0)/2).attr("y",function(W){return(W.y1-W.y0)/2}).attr("style",W=>{let H=`text-anchor: middle; dominant-baseline: hanging; font-size: ${A}px;fill:`+T(W.data.name)+";",j=ct({cssCompiledStyles:W.data.cssCompiledStyles});return H+j.labelStyles.replace("color:","fill:")}).attr("clip-path",(W,H)=>`url(#clip-${t}-${H})`).text(W=>W.value?v(W.value):"").each(function(W){let H=et(this),j=this.parentNode;if(!j){H.style("display","none");return}let Q=et(j).select(".treemapLabel");if(Q.empty()||Q.style("display")==="none"){H.style("display","none");return}let U=parseFloat(Q.style("font-size")),te=Math.max(D,Math.min(A,Math.round(U*.6)));H.style("font-size",`${te}px`);let ie=(W.y1-W.y0)/2+U/2+O;H.attr("y",ie);let ae=W.x1-W.x0,Pe=W.y1-W.y0-4,Ge=ae-2*P;H.node().getComputedTextLength()>Ge||ie+te>Pe||te<D?H.style("display","none"):H.style("display",null)});let G=a.diagramPadding??8;vo(f,G,"flowchart",a?.useMaxWidth||!1)},"draw"),CMt=o(function(e,t){return t.db.getClasses()},"getClasses"),e$e={draw:TMt,getClasses:CMt}});var wMt,kMt,r$e,n$e=F(()=>{"use strict";Qt();Pc();ur();wMt={sectionStrokeColor:"black",sectionStrokeWidth:"1",sectionFillColor:"#efefef",leafStrokeColor:"black",leafStrokeWidth:"1",leafFillColor:"#efefef",labelFontSize:"12px",valueFontSize:"10px",titleFontSize:"14px"},kMt=o(({treemap:e}={})=>{let t=ma(),r=_t(),n=qr(t,r.themeVariables),i=qr(wMt,e),a=i.titleColor??n.titleColor,s=i.labelColor??n.textColor,l=i.valueColor??n.textColor;return`
   .treemapNode.section {
-    stroke: ${n.sectionStrokeColor};
-    stroke-width: ${n.sectionStrokeWidth};
-    fill: ${n.sectionFillColor};
+    stroke: ${i.sectionStrokeColor};
+    stroke-width: ${i.sectionStrokeWidth};
+    fill: ${i.sectionFillColor};
   }
   .treemapNode.leaf {
-    stroke: ${n.leafStrokeColor};
-    stroke-width: ${n.leafStrokeWidth};
-    fill: ${n.leafFillColor};
+    stroke: ${i.leafStrokeColor};
+    stroke-width: ${i.leafStrokeWidth};
+    fill: ${i.leafFillColor};
   }
   .treemapLabel {
     fill: ${s};
-    font-size: ${n.labelFontSize};
+    font-size: ${i.labelFontSize};
   }
   .treemapValue {
     fill: ${l};
-    font-size: ${n.valueFontSize};
+    font-size: ${i.valueFontSize};
   }
   .treemapTitle {
     fill: ${a};
-    font-size: ${n.titleFontSize};
+    font-size: ${i.titleFontSize};
   }
-  `},"getStyles"),QLe=q5t});var eMe={};xr(eMe,{diagram:()=>U5t});var U5t,tMe=z(()=>{"use strict";vU();XLe();ZLe();JLe();U5t={parser:xU,get db(){return new zy},renderer:KLe,styles:QLe}});var M_,Em,nMe,j5t,X5t,bU,aMe=z(()=>{"use strict";sl();St();au();M_=o((e,t)=>{let r=e<=1?e*100:e;if(r<0||r>100)throw new Error(`${t} must be between 0-1 (decimal) or 0-100 (percentage). Received: ${e}`);return r},"toPercent"),Em=o((e,t,r)=>({x:M_(t,`${r} evolution`),y:M_(e,`${r} visibility`)}),"toCoordinates"),nMe=o(e=>{if(e){if(e==="+<>")return"bidirectional";if(e==="+<")return"backward";if(e==="+>")return"forward"}},"getFlowFromPort"),j5t=o(e=>{if(!e?.startsWith("+"))return{};let r=/^\+'([^']*)'/.exec(e)?.[1];return e.includes("<>")?{flow:"bidirectional",label:r}:e.includes("<")?{flow:"backward",label:r}:e.includes(">")?{flow:"forward",label:r}:{label:r}},"extractFlowFromArrow"),X5t=o((e,t)=>{if(ca(e,t),e.size&&t.setSize(e.size.width,e.size.height),e.evolution){let r=e.evolution.stages.map(n=>n.secondName?`${n.name.trim()} / ${n.secondName.trim()}`:n.name.trim()),i=e.evolution.stages.filter(n=>n.boundary!==void 0).map(n=>n.boundary);t.updateAxes({stages:r,stageBoundaries:i})}if(e.anchors.forEach(r=>{let i=Em(r.visibility,r.evolution,`Anchor "${r.name}"`);t.addNode(r.name,r.name,i.x,i.y,"anchor")}),e.components.forEach(r=>{let i=Em(r.visibility,r.evolution,`Component "${r.name}"`),n=r.label?(r.label.negX?-1:1)*r.label.offsetX:void 0,a=r.label?(r.label.negY?-1:1)*r.label.offsetY:void 0,s=r.decorator?.strategy;t.addNode(r.name,r.name,i.x,i.y,"component",n,a,r.inertia,s)}),e.notes.forEach(r=>{let i=Em(r.visibility,r.evolution,`Note "${r.text}"`);t.addNote(r.text,i.x,i.y)}),e.pipelines.forEach(r=>{let i=t.getNode(r.parent);if(!i||typeof i.y!="number")throw new Error(`Pipeline "${r.parent}" must reference an existing component with coordinates.`);let n=i.y;t.startPipeline(r.parent),r.components.forEach(a=>{let s=`${r.parent}_${a.name}`,l=a.label?(a.label.negX?-1:1)*a.label.offsetX:void 0,u=a.label?(a.label.negY?-1:1)*a.label.offsetY:void 0,h=M_(a.evolution,`Pipeline component "${a.name}" evolution`);t.addNode(s,a.name,h,n,"pipeline-component",l,u),t.addPipelineComponent(r.parent,s)})}),e.links.forEach(r=>{let i=!!r.arrow&&(r.arrow.includes("-.->")||r.arrow.includes(".-.")),n=nMe(r.fromPort)??nMe(r.toPort),{flow:a,label:s}=j5t(r.arrow);!n&&a&&(n=a);let l=r.linkLabel,u=s??l;t.addLink(t.resolveNodeId(r.from),t.resolveNodeId(r.to),i,u,n)}),e.evolves.forEach(r=>{let i=t.getNode(r.component);if(i?.y!==void 0){let n=M_(r.target,`Evolve target for "${r.component}"`);t.addTrend(r.component,n,i.y)}}),e.annotations.length>0){let r=e.annotations[0],i=Em(r.x,r.y,"Annotations box");t.setAnnotationsBox(i.x,i.y)}e.annotation.forEach(r=>{let i=Em(r.x,r.y,`Annotation ${r.number}`);t.addAnnotation(r.number,[{x:i.x,y:i.y}],r.text)}),e.accelerators.forEach(r=>{let i=Em(r.x,r.y,`Accelerator "${r.name}"`);t.addAccelerator(r.name,i.x,i.y)}),e.deaccelerators.forEach(r=>{let i=Em(r.x,r.y,`Deaccelerator "${r.name}"`);t.addDeaccelerator(r.name,i.x,i.y)})},"populateDb"),bU={parser:{yy:void 0},parse:o(async e=>{let t=await bn("wardley",e);Z.debug(t);let r=bU.parser?.yy;if(!r||typeof r.addNode!="function")throw new Error("parser.parser?.yy was not a WardleyDB. This is due to a bug within Mermaid, please report this issue at https://github.com/mermaid-js/mermaid/issues.");X5t(t,r)},"parse")}});var N_,sMe=z(()=>{"use strict";N_=class{constructor(){this.nodes=new Map;this.links=[];this.trends=new Map;this.pipelines=new Map;this.annotations=[];this.notes=[];this.accelerators=[];this.deaccelerators=[];this.axes={}}static{o(this,"WardleyBuilder")}addNode(t){let r=this.nodes.get(t.id)??{id:t.id,label:t.label},i={...r,...t,className:t.className??r.className,labelOffsetX:t.labelOffsetX??r.labelOffsetX,labelOffsetY:t.labelOffsetY??r.labelOffsetY};this.nodes.set(t.id,i)}addLink(t){this.links.push(t)}addTrend(t){this.trends.set(t.nodeId,t)}startPipeline(t){this.pipelines.set(t,{nodeId:t,componentIds:[]});let r=this.nodes.get(t);r&&(r.isPipelineParent=!0)}addPipelineComponent(t,r){let i=this.pipelines.get(t);i&&i.componentIds.push(r);let n=this.nodes.get(r);n&&(n.inPipeline=!0)}addAnnotation(t){this.annotations.push(t)}addNote(t){this.notes.push(t)}addAccelerator(t){this.accelerators.push(t)}addDeaccelerator(t){this.deaccelerators.push(t)}setAnnotationsBox(t,r){this.annotationsBox={x:t,y:r}}setAxes(t){this.axes={...this.axes,...t}}setSize(t,r){this.size={width:t,height:r}}getNode(t){return this.nodes.get(t)}resolveNodeId(t){if(this.nodes.has(t))return t;for(let[r,i]of this.nodes)if(i.label===t)return r;return t}build(){let t=[];for(let r of this.nodes.values()){if(typeof r.x!="number"||typeof r.y!="number")throw new Error(`Node "${r.label}" is missing coordinates`);t.push(r)}return{nodes:t,links:[...this.links],trends:[...this.trends.values()],pipelines:[...this.pipelines.values()],annotations:[...this.annotations],notes:[...this.notes],accelerators:[...this.accelerators],deaccelerators:[...this.deaccelerators],annotationsBox:this.annotationsBox,axes:{...this.axes},size:this.size}}clear(){this.nodes.clear(),this.links=[],this.trends.clear(),this.pipelines.clear(),this.annotations=[],this.notes=[],this.accelerators=[],this.deaccelerators=[],this.annotationsBox=void 0,this.axes={},this.size=void 0}}});function K5t(){return ge()["wardley-beta"]}function Z5t(e,t,r,i,n,a,s,l,u){Ga.addNode({id:e,label:t,x:r,y:i,className:n,labelOffsetX:a,labelOffsetY:s,inertia:l,sourceStrategy:u})}function Q5t(e,t,r=!1,i,n){Ga.addLink({source:e,target:t,dashed:r,label:i,flow:n})}function J5t(e,t,r){Ga.addTrend({nodeId:e,targetX:t,targetY:r})}function eAt(e,t,r){Ga.addAnnotation({number:e,coordinates:t,text:r})}function tAt(e,t,r){Ga.addNote({text:e,x:t,y:r})}function rAt(e,t,r){Ga.addAccelerator({name:e,x:t,y:r})}function iAt(e,t,r){Ga.addDeaccelerator({name:e,x:t,y:r})}function nAt(e,t){Ga.setAnnotationsBox(e,t)}function aAt(e,t){Ga.setSize(e,t)}function sAt(e){Ga.startPipeline(e)}function oAt(e,t){Ga.addPipelineComponent(e,t)}function lAt(e){Ga.setAxes(e)}function cAt(e){return Ga.getNode(e)}function uAt(e){return Ga.resolveNodeId(e)}function hAt(){return Ga.build()}function dAt(){Ga.clear(),gr()}var Ga,oMe,lMe=z(()=>{"use strict";Ut();Ci();sMe();Ga=new N_;o(K5t,"getConfig");o(Z5t,"addNode");o(Q5t,"addLink");o(J5t,"addTrend");o(eAt,"addAnnotation");o(tAt,"addNote");o(rAt,"addAccelerator");o(iAt,"addDeaccelerator");o(nAt,"setAnnotationsBox");o(aAt,"setSize");o(sAt,"startPipeline");o(oAt,"addPipelineComponent");o(lAt,"updateAxes");o(cAt,"getNode");o(uAt,"resolveNodeId");o(hAt,"getWardleyData");o(dAt,"clear");oMe={getConfig:K5t,addNode:Z5t,addLink:Q5t,addTrend:J5t,addAnnotation:eAt,addNote:tAt,addAccelerator:rAt,addDeaccelerator:iAt,setAnnotationsBox:nAt,setSize:aAt,startPipeline:sAt,addPipelineComponent:oAt,updateAxes:lAt,getNode:cAt,resolveNodeId:uAt,getWardleyData:hAt,clear:dAt,setAccTitle:Cr,getAccTitle:kr,setDiagramTitle:Ar,getDiagramTitle:Er,getAccDescription:Sr,setAccDescription:wr}});var fAt,pAt,mAt,gAt,cMe,uMe=z(()=>{"use strict";Ut();St();ps();Di();fAt=["Genesis","Custom Built","Product","Commodity"],pAt=o(()=>{let{themeVariables:e}=ge();return{backgroundColor:e.wardley?.backgroundColor??e.background??"#fff",axisColor:e.wardley?.axisColor??"#000",axisTextColor:e.wardley?.axisTextColor??e.primaryTextColor??"#222",gridColor:e.wardley?.gridColor??"rgba(100, 100, 100, 0.2)",componentFill:e.wardley?.componentFill??"#fff",componentStroke:e.wardley?.componentStroke??"#000",componentLabelColor:e.wardley?.componentLabelColor??e.primaryTextColor??"#222",linkStroke:e.wardley?.linkStroke??"#000",evolutionStroke:e.wardley?.evolutionStroke??"#dc3545",annotationStroke:e.wardley?.annotationStroke??"#000",annotationTextColor:e.wardley?.annotationTextColor??e.primaryTextColor??"#222",annotationFill:e.wardley?.annotationFill??e.background??"#fff"}},"getTheme"),mAt=o(()=>{let e=ge()["wardley-beta"];return{width:e?.width??900,height:e?.height??600,padding:e?.padding??48,nodeRadius:e?.nodeRadius??6,nodeLabelOffset:e?.nodeLabelOffset??8,axisFontSize:e?.axisFontSize??12,labelFontSize:e?.labelFontSize??10,showGrid:e?.showGrid??!1,useMaxWidth:e?.useMaxWidth??!0}},"getConfigValues"),gAt=o((e,t,r,i)=>{Z.debug(`Rendering Wardley map
-`+e);let n=mAt(),a=pAt(),s=n.nodeRadius*1.6,l=i.db,u=l.getWardleyData(),h=l.getDiagramTitle(),d=u.size?.width??n.width,f=u.size?.height??n.height,p=bi(t);p.selectAll("*").remove(),Br(p,f,d,n.useMaxWidth),p.attr("viewBox",`0 0 ${d} ${f}`);let m=p.append("g").attr("class","wardley-map"),g=p.append("defs");g.append("marker").attr("id",`arrow-${t}`).attr("viewBox","0 0 10 10").attr("refX",9).attr("refY",5).attr("markerWidth",6).attr("markerHeight",6).attr("orient","auto-start-reverse").append("path").attr("d","M 0 0 L 10 5 L 0 10 z").attr("fill",a.evolutionStroke).attr("stroke","none"),g.append("marker").attr("id",`link-arrow-end-${t}`).attr("viewBox","0 0 10 10").attr("refX",9).attr("refY",5).attr("markerWidth",5).attr("markerHeight",5).attr("orient","auto").append("path").attr("d","M 0 0 L 10 5 L 0 10 z").attr("fill",a.linkStroke).attr("stroke","none"),g.append("marker").attr("id",`link-arrow-start-${t}`).attr("viewBox","0 0 10 10").attr("refX",1).attr("refY",5).attr("markerWidth",5).attr("markerHeight",5).attr("orient","auto").append("path").attr("d","M 10 0 L 0 5 L 10 10 z").attr("fill",a.linkStroke).attr("stroke","none"),m.append("rect").attr("class","wardley-background").attr("width",d).attr("height",f).attr("fill",a.backgroundColor);let y=d-n.padding*2,v=f-n.padding*2;h&&m.append("text").attr("class","wardley-title").attr("x",d/2).attr("y",n.padding/2).attr("fill",a.axisTextColor).attr("font-size",n.axisFontSize*1.05).attr("font-weight","bold").attr("text-anchor","middle").attr("dominant-baseline","middle").text(h);let x=o(O=>n.padding+O/100*y,"projectX"),b=o(O=>f-n.padding-O/100*v,"projectY"),T=m.append("g").attr("class","wardley-axes");T.append("line").attr("x1",n.padding).attr("x2",d-n.padding).attr("y1",f-n.padding).attr("y2",f-n.padding).attr("stroke",a.axisColor).attr("stroke-width",1),T.append("line").attr("x1",n.padding).attr("x2",n.padding).attr("y1",n.padding).attr("y2",f-n.padding).attr("stroke",a.axisColor).attr("stroke-width",1);let w=u.axes.xLabel??"Evolution",C=u.axes.yLabel??"Visibility";T.append("text").attr("class","wardley-axis-label wardley-axis-label-x").attr("x",n.padding+y/2).attr("y",f-n.padding/4).attr("fill",a.axisTextColor).attr("font-size",n.axisFontSize).attr("font-weight","bold").attr("text-anchor","middle").text(w),T.append("text").attr("class","wardley-axis-label wardley-axis-label-y").attr("x",n.padding/3).attr("y",n.padding+v/2).attr("fill",a.axisTextColor).attr("font-size",n.axisFontSize).attr("font-weight","bold").attr("text-anchor","middle").attr("transform",`rotate(-90 ${n.padding/3} ${n.padding+v/2})`).text(C);let k=u.axes.stages&&u.axes.stages.length>0?u.axes.stages:fAt;if(k.length>0){let O=m.append("g").attr("class","wardley-stages"),$=u.axes.stageBoundaries,G=[];if($&&$.length===k.length){let F=0;$.forEach(V=>{G.push({start:F,end:V}),F=V})}else{let F=1/k.length;k.forEach((V,H)=>{G.push({start:H*F,end:(H+1)*F})})}k.forEach((F,V)=>{let H=G[V],j=n.padding+H.start*y,U=n.padding+H.end*y,Q=(j+U)/2;V>0&&O.append("line").attr("x1",j).attr("x2",j).attr("y1",n.padding).attr("y2",f-n.padding).attr("stroke","#000").attr("stroke-width",1).attr("stroke-dasharray","5 5").attr("opacity",.8),O.append("text").attr("class","wardley-stage-label").attr("x",Q).attr("y",f-n.padding/1.5).attr("fill",a.axisTextColor).attr("font-size",n.axisFontSize-2).attr("text-anchor","middle").text(F)})}if(n.showGrid){let O=m.append("g").attr("class","wardley-grid");for(let $=1;$<4;$++){let G=$/4,F=n.padding+y*G;O.append("line").attr("x1",F).attr("x2",F).attr("y1",n.padding).attr("y2",f-n.padding).attr("stroke",a.gridColor).attr("stroke-dasharray","2 6"),O.append("line").attr("x1",n.padding).attr("x2",d-n.padding).attr("y1",f-n.padding-v*G).attr("y2",f-n.padding-v*G).attr("stroke",a.gridColor).attr("stroke-dasharray","2 6")}}let E=new Map;if(u.nodes.forEach(O=>{E.set(O.id,{x:x(O.x),y:b(O.y),node:O})}),u.pipelines.length>0){let O=m.append("g").attr("class","wardley-pipelines"),$=m.append("g").attr("class","wardley-pipeline-links");u.pipelines.forEach(G=>{if(G.componentIds.length===0)return;let F=G.componentIds.map(U=>({id:U,pos:E.get(U),node:u.nodes.find(Q=>Q.id===U)})).filter(U=>U.pos&&U.node).sort((U,Q)=>U.node.x-Q.node.x);for(let U=0;U<F.length-1;U++){let Q=F[U],Y=F[U+1];$.append("line").attr("class","wardley-pipeline-evolution-link").attr("x1",Q.pos.x).attr("y1",Q.pos.y).attr("x2",Y.pos.x).attr("y2",Y.pos.y).attr("stroke",a.linkStroke).attr("stroke-width",1).attr("stroke-dasharray","4 4")}let V=1/0,H=-1/0,j=0;if(G.componentIds.forEach(U=>{let Q=E.get(U);Q&&(V=Math.min(V,Q.x),H=Math.max(H,Q.x),j=Q.y)}),V!==1/0&&H!==-1/0){let Q=n.nodeRadius*4,Y=j-Q/2,ae=E.get(G.nodeId);if(ae){let J=(V+H)/2;ae.x=J,ae.y=Y-s/6}O.append("rect").attr("class","wardley-pipeline-box").attr("x",V-15).attr("y",Y).attr("width",H-V+30).attr("height",Q).attr("fill","none").attr("stroke",a.axisColor).attr("stroke-width",1.5).attr("rx",4).attr("ry",4)}})}let A=m.append("g").attr("class","wardley-links"),N=new Map;u.pipelines.forEach(O=>{N.set(O.nodeId,new Set(O.componentIds))});let P=u.links.filter(O=>!(!E.has(O.source)||!E.has(O.target)||N.get(O.target)?.has(O.source)));A.selectAll("line").data(P).enter().append("line").attr("class",O=>`wardley-link${O.dashed?" wardley-link--dashed":""}`).attr("x1",O=>{let $=E.get(O.source),G=E.get(O.target),V=u.nodes.find(Q=>Q.id===O.source).isPipelineParent?s/Math.sqrt(2):n.nodeRadius,H=G.x-$.x,j=G.y-$.y,U=Math.sqrt(H*H+j*j);return $.x+H/U*V}).attr("y1",O=>{let $=E.get(O.source),G=E.get(O.target),V=u.nodes.find(Q=>Q.id===O.source).isPipelineParent?s/Math.sqrt(2):n.nodeRadius,H=G.x-$.x,j=G.y-$.y,U=Math.sqrt(H*H+j*j);return $.y+j/U*V}).attr("x2",O=>{let $=E.get(O.source),G=E.get(O.target),V=u.nodes.find(Q=>Q.id===O.target).isPipelineParent?s/Math.sqrt(2):n.nodeRadius,H=$.x-G.x,j=$.y-G.y,U=Math.sqrt(H*H+j*j);return G.x+H/U*V}).attr("y2",O=>{let $=E.get(O.source),G=E.get(O.target),V=u.nodes.find(Q=>Q.id===O.target).isPipelineParent?s/Math.sqrt(2):n.nodeRadius,H=$.x-G.x,j=$.y-G.y,U=Math.sqrt(H*H+j*j);return G.y+j/U*V}).attr("stroke",a.linkStroke).attr("stroke-width",1).attr("stroke-dasharray",O=>O.dashed?"6 6":null).attr("marker-end",O=>O.flow==="forward"||O.flow==="bidirectional"?`url(#link-arrow-end-${t})`:null).attr("marker-start",O=>O.flow==="backward"||O.flow==="bidirectional"?`url(#link-arrow-start-${t})`:null),A.selectAll("text").data(P.filter(O=>O.label)).enter().append("text").attr("class","wardley-link-label").attr("x",O=>{let $=E.get(O.source),G=E.get(O.target),F=($.x+G.x)/2,V=G.y-$.y,H=G.x-$.x,j=Math.sqrt(H*H+V*V),U=8,Q=V/j;return F+Q*U}).attr("y",O=>{let $=E.get(O.source),G=E.get(O.target),F=($.y+G.y)/2,V=G.x-$.x,H=G.y-$.y,j=Math.sqrt(V*V+H*H),U=8,Q=-V/j;return F+Q*U}).attr("fill",a.axisTextColor).attr("font-size",n.labelFontSize).attr("text-anchor","middle").attr("dominant-baseline","middle").attr("transform",O=>{let $=E.get(O.source),G=E.get(O.target),F=($.x+G.x)/2,V=($.y+G.y)/2,H=G.x-$.x,j=G.y-$.y,U=Math.sqrt(H*H+j*j),Q=8,Y=j/U,ae=-H/U,J=F+Y*Q,te=V+ae*Q,re=Math.atan2(j,H)*180/Math.PI;return(re>90||re<-90)&&(re+=180),`rotate(${re} ${J} ${te})`}).text(O=>O.label);let I=m.append("g").attr("class","wardley-trends"),D=u.trends.map(O=>{let $=E.get(O.nodeId);if(!$)return null;let G=x(O.targetX),F=b(O.targetY),V=G-$.x,H=F-$.y,j=Math.sqrt(V*V+H*H),U=n.nodeRadius+2,Q=j>U?G-V/j*U:G,Y=j>U?F-H/j*U:F;return{origin:$,targetX:G,targetY:F,adjustedX2:Q,adjustedY2:Y}}).filter(O=>O!==null);I.selectAll("line").data(D).enter().append("line").attr("class","wardley-trend").attr("x1",O=>O.origin.x).attr("y1",O=>O.origin.y).attr("x2",O=>O.adjustedX2).attr("y2",O=>O.adjustedY2).attr("stroke",a.evolutionStroke).attr("stroke-width",1).attr("stroke-dasharray","4 4").attr("marker-end",`url(#arrow-${t})`);let R=m.append("g").attr("class","wardley-nodes").selectAll("g").data(u.nodes).enter().append("g").attr("class",O=>["wardley-node",O.className?`wardley-node--${O.className}`:""].filter(Boolean).join(" "));R.filter(O=>O.sourceStrategy==="outsource").append("circle").attr("class","wardley-outsource-overlay").attr("cx",O=>E.get(O.id).x).attr("cy",O=>E.get(O.id).y).attr("r",n.nodeRadius*2).attr("fill","#666").attr("stroke",a.componentStroke).attr("stroke-width",1),R.filter(O=>O.sourceStrategy==="buy").append("circle").attr("class","wardley-buy-overlay").attr("cx",O=>E.get(O.id).x).attr("cy",O=>E.get(O.id).y).attr("r",n.nodeRadius*2).attr("fill","#ccc").attr("stroke",a.componentStroke).attr("stroke-width",1),R.filter(O=>O.sourceStrategy==="build").append("circle").attr("class","wardley-build-overlay").attr("cx",O=>E.get(O.id).x).attr("cy",O=>E.get(O.id).y).attr("r",n.nodeRadius*2).attr("fill","#eee").attr("stroke","#000").attr("stroke-width",1);let M=R.filter(O=>O.sourceStrategy==="market");M.append("circle").attr("class","wardley-market-overlay").attr("cx",O=>E.get(O.id).x).attr("cy",O=>E.get(O.id).y).attr("r",n.nodeRadius*2).attr("fill","white").attr("stroke",a.componentStroke).attr("stroke-width",1),R.filter(O=>!O.isPipelineParent&&O.sourceStrategy!=="market"&&O.className!=="anchor").append("circle").attr("cx",O=>E.get(O.id).x).attr("cy",O=>E.get(O.id).y).attr("r",n.nodeRadius).attr("fill",a.componentFill).attr("stroke",a.componentStroke).attr("stroke-width",1);let L=n.nodeRadius*.7,B=n.nodeRadius*1.2;if(M.append("line").attr("class","wardley-market-line").attr("x1",O=>E.get(O.id).x).attr("y1",O=>E.get(O.id).y-B).attr("x2",O=>E.get(O.id).x-B*Math.cos(Math.PI/6)).attr("y2",O=>E.get(O.id).y+B*Math.sin(Math.PI/6)).attr("stroke",a.componentStroke).attr("stroke-width",1),M.append("line").attr("class","wardley-market-line").attr("x1",O=>E.get(O.id).x-B*Math.cos(Math.PI/6)).attr("y1",O=>E.get(O.id).y+B*Math.sin(Math.PI/6)).attr("x2",O=>E.get(O.id).x+B*Math.cos(Math.PI/6)).attr("y2",O=>E.get(O.id).y+B*Math.sin(Math.PI/6)).attr("stroke",a.componentStroke).attr("stroke-width",1),M.append("line").attr("class","wardley-market-line").attr("x1",O=>E.get(O.id).x+B*Math.cos(Math.PI/6)).attr("y1",O=>E.get(O.id).y+B*Math.sin(Math.PI/6)).attr("x2",O=>E.get(O.id).x).attr("y2",O=>E.get(O.id).y-B).attr("stroke",a.componentStroke).attr("stroke-width",1),M.append("circle").attr("class","wardley-market-dot").attr("cx",O=>E.get(O.id).x).attr("cy",O=>E.get(O.id).y-B).attr("r",L).attr("fill","white").attr("stroke",a.componentStroke).attr("stroke-width",2),M.append("circle").attr("class","wardley-market-dot").attr("cx",O=>E.get(O.id).x-B*Math.cos(Math.PI/6)).attr("cy",O=>E.get(O.id).y+B*Math.sin(Math.PI/6)).attr("r",L).attr("fill","white").attr("stroke",a.componentStroke).attr("stroke-width",2),M.append("circle").attr("class","wardley-market-dot").attr("cx",O=>E.get(O.id).x+B*Math.cos(Math.PI/6)).attr("cy",O=>E.get(O.id).y+B*Math.sin(Math.PI/6)).attr("r",L).attr("fill","white").attr("stroke",a.componentStroke).attr("stroke-width",2),R.filter(O=>O.isPipelineParent===!0).append("rect").attr("x",O=>E.get(O.id).x-s/2).attr("y",O=>E.get(O.id).y-s/2).attr("width",s).attr("height",s).attr("fill",a.componentFill).attr("stroke",a.componentStroke).attr("stroke-width",1),R.filter(O=>O.inertia===!0).append("line").attr("class","wardley-inertia").attr("x1",O=>{let $=E.get(O.id),G=O.isPipelineParent?s/2+15:n.nodeRadius+15;return O.sourceStrategy&&(G+=n.nodeRadius+10),$.x+G}).attr("y1",O=>{let $=E.get(O.id),G=O.isPipelineParent?s:n.nodeRadius*2;return $.y-G/2}).attr("x2",O=>{let $=E.get(O.id),G=O.isPipelineParent?s/2+15:n.nodeRadius+15;return O.sourceStrategy&&(G+=n.nodeRadius+10),$.x+G}).attr("y2",O=>{let $=E.get(O.id),G=O.isPipelineParent?s:n.nodeRadius*2;return $.y+G/2}).attr("stroke",a.componentStroke).attr("stroke-width",6),R.append("text").attr("x",O=>{let $=E.get(O.id);if(O.className==="anchor")return O.labelOffsetX!==void 0?$.x+O.labelOffsetX:$.x;let G=n.nodeLabelOffset;O.sourceStrategy&&O.labelOffsetX===void 0&&(G+=10);let F=O.labelOffsetX??G;return $.x+F}).attr("y",O=>{let $=E.get(O.id);if(O.className==="anchor")return O.labelOffsetY!==void 0?$.y+O.labelOffsetY:$.y-3;let G=-n.nodeLabelOffset;O.sourceStrategy&&O.labelOffsetY===void 0&&(G-=10);let F=O.labelOffsetY??G;return $.y+F}).attr("class","wardley-node-label").attr("fill",O=>O.className==="evolved"?a.evolutionStroke:O.className==="anchor"?"#000":a.componentLabelColor).attr("font-size",n.labelFontSize).attr("font-weight",O=>O.className==="anchor"?"bold":"normal").attr("text-anchor",O=>O.className==="anchor"?"middle":"start").attr("dominant-baseline",O=>O.className==="anchor"?"middle":"auto").text(O=>O.label),u.annotations.length>0){let O=m.append("g").attr("class","wardley-annotations");if(u.annotations.forEach($=>{let G=$.coordinates.map(F=>({x:x(F.x),y:b(F.y)}));if(G.length>1)for(let F=0;F<G.length-1;F++)O.append("line").attr("class","wardley-annotation-line").attr("x1",G[F].x).attr("y1",G[F].y).attr("x2",G[F+1].x).attr("y2",G[F+1].y).attr("stroke",a.axisColor).attr("stroke-width",1.5).attr("stroke-dasharray","4 4");G.forEach(F=>{let V=O.append("g").attr("class","wardley-annotation");V.append("circle").attr("cx",F.x).attr("cy",F.y).attr("r",10).attr("fill","white").attr("stroke",a.axisColor).attr("stroke-width",1.5),V.append("text").attr("x",F.x).attr("y",F.y).attr("text-anchor","middle").attr("dominant-baseline","central").attr("font-size",10).attr("fill",a.axisTextColor).attr("font-weight","bold").text($.number)})}),u.annotationsBox){let $=x(u.annotationsBox.x),G=b(u.annotationsBox.y),F=10,V=16,H=11,j=O.append("g").attr("class","wardley-annotations-box"),U=[...u.annotations].filter(Y=>Y.text).sort((Y,ae)=>Y.number-ae.number),Q=[];if(U.forEach((Y,ae)=>{let J=j.append("text").attr("x",$+F).attr("y",G+F+(ae+1)*V).attr("font-size",H).attr("fill",a.axisTextColor).attr("text-anchor","start").attr("dominant-baseline","middle").text(`${Y.number}. ${Y.text}`);Q.push(J)}),Q.length>0){let Y=0,ae=0;Q.forEach(De=>{let Ie=De.node(),Ee=Ie.getComputedTextLength();Y=Math.max(Y,Ee);let we=Ie.getBBox();ae=Math.max(ae,we.height)});let J=Y+F*2+105,te=U.length*V+F*2+ae/2,re=n.padding,ee=d-n.padding-J,Te=n.padding,ue=f-n.padding-te;$=Math.max(re,Math.min($,ee)),G=Math.max(Te,Math.min(G,ue)),Q.forEach((De,Ie)=>{De.attr("x",$+F).attr("y",G+F+(Ie+1)*V)}),j.insert("rect","text").attr("x",$).attr("y",G).attr("width",J).attr("height",te).attr("fill","white").attr("stroke",a.axisColor).attr("stroke-width",1.5).attr("rx",4).attr("ry",4)}}}if(u.notes.length>0){let O=m.append("g").attr("class","wardley-notes");u.notes.forEach($=>{let G=x($.x),F=b($.y);O.append("text").attr("x",G).attr("y",F).attr("text-anchor","start").attr("font-size",11).attr("fill",a.axisTextColor).attr("font-weight","bold").text($.text)})}if(u.accelerators.length>0){let O=m.append("g").attr("class","wardley-accelerators");u.accelerators.forEach($=>{let G=x($.x),F=b($.y),V=60,H=30,j=20,U=`
-        M ${G} ${F-H/2}
-        L ${G+V-j} ${F-H/2}
-        L ${G+V-j} ${F-H/2-8}
-        L ${G+V} ${F}
-        L ${G+V-j} ${F+H/2+8}
-        L ${G+V-j} ${F+H/2}
-        L ${G} ${F+H/2}
+  `},"getStyles"),r$e=kMt});var i$e={};ir(i$e,{diagram:()=>SMt});var SMt,a$e=F(()=>{"use strict";TX();JBe();t$e();n$e();SMt={parser:CX,get db(){return new Tx},renderer:e$e,styles:r$e}});var uD,P0,l$e,RMt,_Mt,wX,c$e=F(()=>{"use strict";Xa();vt();Hs();uD=o((e,t)=>{let r=e<=1?e*100:e;if(r<0||r>100)throw new Error(`${t} must be between 0-1 (decimal) or 0-100 (percentage). Received: ${e}`);return r},"toPercent"),P0=o((e,t,r)=>({x:uD(t,`${r} evolution`),y:uD(e,`${r} visibility`)}),"toCoordinates"),l$e=o(e=>{if(e){if(e==="+<>")return"bidirectional";if(e==="+<")return"backward";if(e==="+>")return"forward"}},"getFlowFromPort"),RMt=o(e=>{if(!e?.startsWith("+"))return{};let r=/^\+'([^']*)'/.exec(e)?.[1];return e.includes("<>")?{flow:"bidirectional",label:r}:e.includes("<")?{flow:"backward",label:r}:e.includes(">")?{flow:"forward",label:r}:{label:r}},"extractFlowFromArrow"),_Mt=o((e,t)=>{if(Gn(e,t),e.size&&t.setSize(e.size.width,e.size.height),e.evolution){let r=e.evolution.stages.map(i=>i.secondName?`${i.name.trim()} / ${i.secondName.trim()}`:i.name.trim()),n=e.evolution.stages.filter(i=>i.boundary!==void 0).map(i=>i.boundary);t.updateAxes({stages:r,stageBoundaries:n})}if(e.anchors.forEach(r=>{let n=P0(r.visibility,r.evolution,`Anchor "${r.name}"`);t.addNode(r.name,r.name,n.x,n.y,"anchor")}),e.components.forEach(r=>{let n=P0(r.visibility,r.evolution,`Component "${r.name}"`),i=r.label?(r.label.negX?-1:1)*r.label.offsetX:void 0,a=r.label?(r.label.negY?-1:1)*r.label.offsetY:void 0,s=r.decorator?.strategy;t.addNode(r.name,r.name,n.x,n.y,"component",i,a,r.inertia,s)}),e.notes.forEach(r=>{let n=P0(r.visibility,r.evolution,`Note "${r.text}"`);t.addNote(r.text,n.x,n.y)}),e.pipelines.forEach(r=>{let n=t.getNode(r.parent);if(!n||typeof n.y!="number")throw new Error(`Pipeline "${r.parent}" must reference an existing component with coordinates.`);let i=n.y;t.startPipeline(r.parent),r.components.forEach(a=>{let s=`${r.parent}_${a.name}`,l=a.label?(a.label.negX?-1:1)*a.label.offsetX:void 0,u=a.label?(a.label.negY?-1:1)*a.label.offsetY:void 0,h=uD(a.evolution,`Pipeline component "${a.name}" evolution`);t.addNode(s,a.name,h,i,"pipeline-component",l,u),t.addPipelineComponent(r.parent,s)})}),e.links.forEach(r=>{let n=!!r.arrow&&(r.arrow.includes("-.->")||r.arrow.includes(".-.")),i=l$e(r.fromPort)??l$e(r.toPort),{flow:a,label:s}=RMt(r.arrow);!i&&a&&(i=a);let l=r.linkLabel,u=s??l;t.addLink(t.resolveNodeId(r.from),t.resolveNodeId(r.to),n,u,i)}),e.evolves.forEach(r=>{let n=t.getNode(r.component);if(n?.y!==void 0){let i=uD(r.target,`Evolve target for "${r.component}"`);t.addTrend(r.component,i,n.y)}}),e.annotations.length>0){let r=e.annotations[0],n=P0(r.x,r.y,"Annotations box");t.setAnnotationsBox(n.x,n.y)}e.annotation.forEach(r=>{let n=P0(r.x,r.y,`Annotation ${r.number}`);t.addAnnotation(r.number,[{x:n.x,y:n.y}],r.text)}),e.accelerators.forEach(r=>{let n=P0(r.x,r.y,`Accelerator "${r.name}"`);t.addAccelerator(r.name,n.x,n.y)}),e.deaccelerators.forEach(r=>{let n=P0(r.x,r.y,`Deaccelerator "${r.name}"`);t.addDeaccelerator(r.name,n.x,n.y)})},"populateDb"),wX={parser:{yy:void 0},parse:o(async e=>{let t=await Si("wardley",e);Z.debug(t);let r=wX.parser?.yy;if(!r||typeof r.addNode!="function")throw new Error("parser.parser?.yy was not a WardleyDB. This is due to a bug within Mermaid, please report this issue at https://github.com/mermaid-js/mermaid/issues.");_Mt(t,r)},"parse")}});var hD,u$e=F(()=>{"use strict";hD=class{constructor(){this.nodes=new Map;this.links=[];this.trends=new Map;this.pipelines=new Map;this.annotations=[];this.notes=[];this.accelerators=[];this.deaccelerators=[];this.axes={}}static{o(this,"WardleyBuilder")}addNode(t){let r=this.nodes.get(t.id)??{id:t.id,label:t.label},n={...r,...t,className:t.className??r.className,labelOffsetX:t.labelOffsetX??r.labelOffsetX,labelOffsetY:t.labelOffsetY??r.labelOffsetY};this.nodes.set(t.id,n)}addLink(t){this.links.push(t)}addTrend(t){this.trends.set(t.nodeId,t)}startPipeline(t){this.pipelines.set(t,{nodeId:t,componentIds:[]});let r=this.nodes.get(t);r&&(r.isPipelineParent=!0)}addPipelineComponent(t,r){let n=this.pipelines.get(t);n&&n.componentIds.push(r);let i=this.nodes.get(r);i&&(i.inPipeline=!0)}addAnnotation(t){this.annotations.push(t)}addNote(t){this.notes.push(t)}addAccelerator(t){this.accelerators.push(t)}addDeaccelerator(t){this.deaccelerators.push(t)}setAnnotationsBox(t,r){this.annotationsBox={x:t,y:r}}setAxes(t){this.axes={...this.axes,...t}}setSize(t,r){this.size={width:t,height:r}}getNode(t){return this.nodes.get(t)}resolveNodeId(t){if(this.nodes.has(t))return t;for(let[r,n]of this.nodes)if(n.label===t)return r;return t}build(){let t=[];for(let r of this.nodes.values()){if(typeof r.x!="number"||typeof r.y!="number")throw new Error(`Node "${r.label}" is missing coordinates`);t.push(r)}return{nodes:t,links:[...this.links],trends:[...this.trends.values()],pipelines:[...this.pipelines.values()],annotations:[...this.annotations],notes:[...this.notes],accelerators:[...this.accelerators],deaccelerators:[...this.deaccelerators],annotationsBox:this.annotationsBox,axes:{...this.axes},size:this.size}}clear(){this.nodes.clear(),this.links=[],this.trends.clear(),this.pipelines.clear(),this.annotations=[],this.notes=[],this.accelerators=[],this.deaccelerators=[],this.annotationsBox=void 0,this.axes={},this.size=void 0}}});function LMt(){return Ae()["wardley-beta"]}function DMt(e,t,r,n,i,a,s,l,u){gs.addNode({id:e,label:t,x:r,y:n,className:i,labelOffsetX:a,labelOffsetY:s,inertia:l,sourceStrategy:u})}function IMt(e,t,r=!1,n,i){gs.addLink({source:e,target:t,dashed:r,label:n,flow:i})}function MMt(e,t,r){gs.addTrend({nodeId:e,targetX:t,targetY:r})}function NMt(e,t,r){gs.addAnnotation({number:e,coordinates:t,text:r})}function PMt(e,t,r){gs.addNote({text:e,x:t,y:r})}function OMt(e,t,r){gs.addAccelerator({name:e,x:t,y:r})}function BMt(e,t,r){gs.addDeaccelerator({name:e,x:t,y:r})}function $Mt(e,t){gs.setAnnotationsBox(e,t)}function FMt(e,t){gs.setSize(e,t)}function zMt(e){gs.startPipeline(e)}function GMt(e,t){gs.addPipelineComponent(e,t)}function VMt(e){gs.setAxes(e)}function WMt(e){return gs.getNode(e)}function qMt(e){return gs.resolveNodeId(e)}function HMt(){return gs.build()}function UMt(){gs.clear(),yr()}var gs,h$e,d$e=F(()=>{"use strict";Xt();Nn();u$e();gs=new hD;o(LMt,"getConfig");o(DMt,"addNode");o(IMt,"addLink");o(MMt,"addTrend");o(NMt,"addAnnotation");o(PMt,"addNote");o(OMt,"addAccelerator");o(BMt,"addDeaccelerator");o($Mt,"setAnnotationsBox");o(FMt,"setSize");o(zMt,"startPipeline");o(GMt,"addPipelineComponent");o(VMt,"updateAxes");o(WMt,"getNode");o(qMt,"resolveNodeId");o(HMt,"getWardleyData");o(UMt,"clear");h$e={getConfig:LMt,addNode:DMt,addLink:IMt,addTrend:MMt,addAnnotation:NMt,addNote:PMt,addAccelerator:OMt,addDeaccelerator:BMt,setAnnotationsBox:$Mt,setSize:FMt,startPipeline:zMt,addPipelineComponent:GMt,updateAxes:VMt,getNode:WMt,resolveNodeId:qMt,getWardleyData:HMt,clear:UMt,setAccTitle:kr,getAccTitle:Ar,setDiagramTitle:Or,getDiagramTitle:Lr,getAccDescription:_r,setAccDescription:Rr}});var YMt,jMt,XMt,KMt,f$e,p$e=F(()=>{"use strict";Xt();vt();Ka();$n();YMt=["Genesis","Custom Built","Product","Commodity"],jMt=o(()=>{let{themeVariables:e}=Ae();return{backgroundColor:e.wardley?.backgroundColor??e.background??"#fff",axisColor:e.wardley?.axisColor??"#000",axisTextColor:e.wardley?.axisTextColor??e.primaryTextColor??"#222",gridColor:e.wardley?.gridColor??"rgba(100, 100, 100, 0.2)",componentFill:e.wardley?.componentFill??"#fff",componentStroke:e.wardley?.componentStroke??"#000",componentLabelColor:e.wardley?.componentLabelColor??e.primaryTextColor??"#222",linkStroke:e.wardley?.linkStroke??"#000",evolutionStroke:e.wardley?.evolutionStroke??"#dc3545",annotationStroke:e.wardley?.annotationStroke??"#000",annotationTextColor:e.wardley?.annotationTextColor??e.primaryTextColor??"#222",annotationFill:e.wardley?.annotationFill??e.background??"#fff"}},"getTheme"),XMt=o(()=>{let e=Ae()["wardley-beta"];return{width:e?.width??900,height:e?.height??600,padding:e?.padding??48,nodeRadius:e?.nodeRadius??6,nodeLabelOffset:e?.nodeLabelOffset??8,axisFontSize:e?.axisFontSize??12,labelFontSize:e?.labelFontSize??10,showGrid:e?.showGrid??!1,useMaxWidth:e?.useMaxWidth??!0}},"getConfigValues"),KMt=o((e,t,r,n)=>{Z.debug(`Rendering Wardley map
+`+e);let i=XMt(),a=jMt(),s=i.nodeRadius*1.6,l=n.db,u=l.getWardleyData(),h=l.getDiagramTitle(),d=u.size?.width??i.width,f=u.size?.height??i.height,p=xn(t);p.selectAll("*").remove(),Wr(p,f,d,i.useMaxWidth),p.attr("viewBox",`0 0 ${d} ${f}`);let m=p.append("g").attr("class","wardley-map"),g=p.append("defs");g.append("marker").attr("id",`arrow-${t}`).attr("viewBox","0 0 10 10").attr("refX",9).attr("refY",5).attr("markerWidth",6).attr("markerHeight",6).attr("orient","auto-start-reverse").append("path").attr("d","M 0 0 L 10 5 L 0 10 z").attr("fill",a.evolutionStroke).attr("stroke","none"),g.append("marker").attr("id",`link-arrow-end-${t}`).attr("viewBox","0 0 10 10").attr("refX",9).attr("refY",5).attr("markerWidth",5).attr("markerHeight",5).attr("orient","auto").append("path").attr("d","M 0 0 L 10 5 L 0 10 z").attr("fill",a.linkStroke).attr("stroke","none"),g.append("marker").attr("id",`link-arrow-start-${t}`).attr("viewBox","0 0 10 10").attr("refX",1).attr("refY",5).attr("markerWidth",5).attr("markerHeight",5).attr("orient","auto").append("path").attr("d","M 10 0 L 0 5 L 10 10 z").attr("fill",a.linkStroke).attr("stroke","none"),m.append("rect").attr("class","wardley-background").attr("width",d).attr("height",f).attr("fill",a.backgroundColor);let y=d-i.padding*2,v=f-i.padding*2;h&&m.append("text").attr("class","wardley-title").attr("x",d/2).attr("y",i.padding/2).attr("fill",a.axisTextColor).attr("font-size",i.axisFontSize*1.05).attr("font-weight","bold").attr("text-anchor","middle").attr("dominant-baseline","middle").text(h);let x=o(O=>i.padding+O/100*y,"projectX"),b=o(O=>f-i.padding-O/100*v,"projectY"),T=m.append("g").attr("class","wardley-axes");T.append("line").attr("x1",i.padding).attr("x2",d-i.padding).attr("y1",f-i.padding).attr("y2",f-i.padding).attr("stroke",a.axisColor).attr("stroke-width",1),T.append("line").attr("x1",i.padding).attr("x2",i.padding).attr("y1",i.padding).attr("y2",f-i.padding).attr("stroke",a.axisColor).attr("stroke-width",1);let k=u.axes.xLabel??"Evolution",C=u.axes.yLabel??"Visibility";T.append("text").attr("class","wardley-axis-label wardley-axis-label-x").attr("x",i.padding+y/2).attr("y",f-i.padding/4).attr("fill",a.axisTextColor).attr("font-size",i.axisFontSize).attr("font-weight","bold").attr("text-anchor","middle").text(k),T.append("text").attr("class","wardley-axis-label wardley-axis-label-y").attr("x",i.padding/3).attr("y",i.padding+v/2).attr("fill",a.axisTextColor).attr("font-size",i.axisFontSize).attr("font-weight","bold").attr("text-anchor","middle").attr("transform",`rotate(-90 ${i.padding/3} ${i.padding+v/2})`).text(C);let w=u.axes.stages&&u.axes.stages.length>0?u.axes.stages:YMt;if(w.length>0){let O=m.append("g").attr("class","wardley-stages"),$=u.axes.stageBoundaries,V=[];if($&&$.length===w.length){let G=0;$.forEach(z=>{V.push({start:G,end:z}),G=z})}else{let G=1/w.length;w.forEach((z,W)=>{V.push({start:W*G,end:(W+1)*G})})}w.forEach((G,z)=>{let W=V[z],H=i.padding+W.start*y,j=i.padding+W.end*y,Q=(H+j)/2;z>0&&O.append("line").attr("x1",H).attr("x2",H).attr("y1",i.padding).attr("y2",f-i.padding).attr("stroke","#000").attr("stroke-width",1).attr("stroke-dasharray","5 5").attr("opacity",.8),O.append("text").attr("class","wardley-stage-label").attr("x",Q).attr("y",f-i.padding/1.5).attr("fill",a.axisTextColor).attr("font-size",i.axisFontSize-2).attr("text-anchor","middle").text(G)})}if(i.showGrid){let O=m.append("g").attr("class","wardley-grid");for(let $=1;$<4;$++){let V=$/4,G=i.padding+y*V;O.append("line").attr("x1",G).attr("x2",G).attr("y1",i.padding).attr("y2",f-i.padding).attr("stroke",a.gridColor).attr("stroke-dasharray","2 6"),O.append("line").attr("x1",i.padding).attr("x2",d-i.padding).attr("y1",f-i.padding-v*V).attr("y2",f-i.padding-v*V).attr("stroke",a.gridColor).attr("stroke-dasharray","2 6")}}let S=new Map;if(u.nodes.forEach(O=>{S.set(O.id,{x:x(O.x),y:b(O.y),node:O})}),u.pipelines.length>0){let O=m.append("g").attr("class","wardley-pipelines"),$=m.append("g").attr("class","wardley-pipeline-links");u.pipelines.forEach(V=>{if(V.componentIds.length===0)return;let G=V.componentIds.map(j=>({id:j,pos:S.get(j),node:u.nodes.find(Q=>Q.id===j)})).filter(j=>j.pos&&j.node).sort((j,Q)=>j.node.x-Q.node.x);for(let j=0;j<G.length-1;j++){let Q=G[j],U=G[j+1];$.append("line").attr("class","wardley-pipeline-evolution-link").attr("x1",Q.pos.x).attr("y1",Q.pos.y).attr("x2",U.pos.x).attr("y2",U.pos.y).attr("stroke",a.linkStroke).attr("stroke-width",1).attr("stroke-dasharray","4 4")}let z=1/0,W=-1/0,H=0;if(V.componentIds.forEach(j=>{let Q=S.get(j);Q&&(z=Math.min(z,Q.x),W=Math.max(W,Q.x),H=Q.y)}),z!==1/0&&W!==-1/0){let Q=i.nodeRadius*4,U=H-Q/2,oe=S.get(V.nodeId);if(oe){let te=(z+W)/2;oe.x=te,oe.y=U-s/6}O.append("rect").attr("class","wardley-pipeline-box").attr("x",z-15).attr("y",U).attr("width",W-z+30).attr("height",Q).attr("fill","none").attr("stroke",a.axisColor).attr("stroke-width",1.5).attr("rx",4).attr("ry",4)}})}let R=m.append("g").attr("class","wardley-links"),L=new Map;u.pipelines.forEach(O=>{L.set(O.nodeId,new Set(O.componentIds))});let N=u.links.filter(O=>!(!S.has(O.source)||!S.has(O.target)||L.get(O.target)?.has(O.source)));R.selectAll("line").data(N).enter().append("line").attr("class",O=>`wardley-link${O.dashed?" wardley-link--dashed":""}`).attr("x1",O=>{let $=S.get(O.source),V=S.get(O.target),z=u.nodes.find(Q=>Q.id===O.source).isPipelineParent?s/Math.sqrt(2):i.nodeRadius,W=V.x-$.x,H=V.y-$.y,j=Math.sqrt(W*W+H*H);return $.x+W/j*z}).attr("y1",O=>{let $=S.get(O.source),V=S.get(O.target),z=u.nodes.find(Q=>Q.id===O.source).isPipelineParent?s/Math.sqrt(2):i.nodeRadius,W=V.x-$.x,H=V.y-$.y,j=Math.sqrt(W*W+H*H);return $.y+H/j*z}).attr("x2",O=>{let $=S.get(O.source),V=S.get(O.target),z=u.nodes.find(Q=>Q.id===O.target).isPipelineParent?s/Math.sqrt(2):i.nodeRadius,W=$.x-V.x,H=$.y-V.y,j=Math.sqrt(W*W+H*H);return V.x+W/j*z}).attr("y2",O=>{let $=S.get(O.source),V=S.get(O.target),z=u.nodes.find(Q=>Q.id===O.target).isPipelineParent?s/Math.sqrt(2):i.nodeRadius,W=$.x-V.x,H=$.y-V.y,j=Math.sqrt(W*W+H*H);return V.y+H/j*z}).attr("stroke",a.linkStroke).attr("stroke-width",1).attr("stroke-dasharray",O=>O.dashed?"6 6":null).attr("marker-end",O=>O.flow==="forward"||O.flow==="bidirectional"?`url(#link-arrow-end-${t})`:null).attr("marker-start",O=>O.flow==="backward"||O.flow==="bidirectional"?`url(#link-arrow-start-${t})`:null),R.selectAll("text").data(N.filter(O=>O.label)).enter().append("text").attr("class","wardley-link-label").attr("x",O=>{let $=S.get(O.source),V=S.get(O.target),G=($.x+V.x)/2,z=V.y-$.y,W=V.x-$.x,H=Math.sqrt(W*W+z*z),j=8,Q=z/H;return G+Q*j}).attr("y",O=>{let $=S.get(O.source),V=S.get(O.target),G=($.y+V.y)/2,z=V.x-$.x,W=V.y-$.y,H=Math.sqrt(z*z+W*W),j=8,Q=-z/H;return G+Q*j}).attr("fill",a.axisTextColor).attr("font-size",i.labelFontSize).attr("text-anchor","middle").attr("dominant-baseline","middle").attr("transform",O=>{let $=S.get(O.source),V=S.get(O.target),G=($.x+V.x)/2,z=($.y+V.y)/2,W=V.x-$.x,H=V.y-$.y,j=Math.sqrt(W*W+H*H),Q=8,U=H/j,oe=-W/j,te=G+U*Q,le=z+oe*Q,ie=Math.atan2(H,W)*180/Math.PI;return(ie>90||ie<-90)&&(ie+=180),`rotate(${ie} ${te} ${le})`}).text(O=>O.label);let I=m.append("g").attr("class","wardley-trends"),_=u.trends.map(O=>{let $=S.get(O.nodeId);if(!$)return null;let V=x(O.targetX),G=b(O.targetY),z=V-$.x,W=G-$.y,H=Math.sqrt(z*z+W*W),j=i.nodeRadius+2,Q=H>j?V-z/H*j:V,U=H>j?G-W/H*j:G;return{origin:$,targetX:V,targetY:G,adjustedX2:Q,adjustedY2:U}}).filter(O=>O!==null);I.selectAll("line").data(_).enter().append("line").attr("class","wardley-trend").attr("x1",O=>O.origin.x).attr("y1",O=>O.origin.y).attr("x2",O=>O.adjustedX2).attr("y2",O=>O.adjustedY2).attr("stroke",a.evolutionStroke).attr("stroke-width",1).attr("stroke-dasharray","4 4").attr("marker-end",`url(#arrow-${t})`);let M=m.append("g").attr("class","wardley-nodes").selectAll("g").data(u.nodes).enter().append("g").attr("class",O=>["wardley-node",O.className?`wardley-node--${O.className}`:""].filter(Boolean).join(" "));M.filter(O=>O.sourceStrategy==="outsource").append("circle").attr("class","wardley-outsource-overlay").attr("cx",O=>S.get(O.id).x).attr("cy",O=>S.get(O.id).y).attr("r",i.nodeRadius*2).attr("fill","#666").attr("stroke",a.componentStroke).attr("stroke-width",1),M.filter(O=>O.sourceStrategy==="buy").append("circle").attr("class","wardley-buy-overlay").attr("cx",O=>S.get(O.id).x).attr("cy",O=>S.get(O.id).y).attr("r",i.nodeRadius*2).attr("fill","#ccc").attr("stroke",a.componentStroke).attr("stroke-width",1),M.filter(O=>O.sourceStrategy==="build").append("circle").attr("class","wardley-build-overlay").attr("cx",O=>S.get(O.id).x).attr("cy",O=>S.get(O.id).y).attr("r",i.nodeRadius*2).attr("fill","#eee").attr("stroke","#000").attr("stroke-width",1);let D=M.filter(O=>O.sourceStrategy==="market");D.append("circle").attr("class","wardley-market-overlay").attr("cx",O=>S.get(O.id).x).attr("cy",O=>S.get(O.id).y).attr("r",i.nodeRadius*2).attr("fill","white").attr("stroke",a.componentStroke).attr("stroke-width",1),M.filter(O=>!O.isPipelineParent&&O.sourceStrategy!=="market"&&O.className!=="anchor").append("circle").attr("cx",O=>S.get(O.id).x).attr("cy",O=>S.get(O.id).y).attr("r",i.nodeRadius).attr("fill",a.componentFill).attr("stroke",a.componentStroke).attr("stroke-width",1);let P=i.nodeRadius*.7,B=i.nodeRadius*1.2;if(D.append("line").attr("class","wardley-market-line").attr("x1",O=>S.get(O.id).x).attr("y1",O=>S.get(O.id).y-B).attr("x2",O=>S.get(O.id).x-B*Math.cos(Math.PI/6)).attr("y2",O=>S.get(O.id).y+B*Math.sin(Math.PI/6)).attr("stroke",a.componentStroke).attr("stroke-width",1),D.append("line").attr("class","wardley-market-line").attr("x1",O=>S.get(O.id).x-B*Math.cos(Math.PI/6)).attr("y1",O=>S.get(O.id).y+B*Math.sin(Math.PI/6)).attr("x2",O=>S.get(O.id).x+B*Math.cos(Math.PI/6)).attr("y2",O=>S.get(O.id).y+B*Math.sin(Math.PI/6)).attr("stroke",a.componentStroke).attr("stroke-width",1),D.append("line").attr("class","wardley-market-line").attr("x1",O=>S.get(O.id).x+B*Math.cos(Math.PI/6)).attr("y1",O=>S.get(O.id).y+B*Math.sin(Math.PI/6)).attr("x2",O=>S.get(O.id).x).attr("y2",O=>S.get(O.id).y-B).attr("stroke",a.componentStroke).attr("stroke-width",1),D.append("circle").attr("class","wardley-market-dot").attr("cx",O=>S.get(O.id).x).attr("cy",O=>S.get(O.id).y-B).attr("r",P).attr("fill","white").attr("stroke",a.componentStroke).attr("stroke-width",2),D.append("circle").attr("class","wardley-market-dot").attr("cx",O=>S.get(O.id).x-B*Math.cos(Math.PI/6)).attr("cy",O=>S.get(O.id).y+B*Math.sin(Math.PI/6)).attr("r",P).attr("fill","white").attr("stroke",a.componentStroke).attr("stroke-width",2),D.append("circle").attr("class","wardley-market-dot").attr("cx",O=>S.get(O.id).x+B*Math.cos(Math.PI/6)).attr("cy",O=>S.get(O.id).y+B*Math.sin(Math.PI/6)).attr("r",P).attr("fill","white").attr("stroke",a.componentStroke).attr("stroke-width",2),M.filter(O=>O.isPipelineParent===!0).append("rect").attr("x",O=>S.get(O.id).x-s/2).attr("y",O=>S.get(O.id).y-s/2).attr("width",s).attr("height",s).attr("fill",a.componentFill).attr("stroke",a.componentStroke).attr("stroke-width",1),M.filter(O=>O.inertia===!0).append("line").attr("class","wardley-inertia").attr("x1",O=>{let $=S.get(O.id),V=O.isPipelineParent?s/2+15:i.nodeRadius+15;return O.sourceStrategy&&(V+=i.nodeRadius+10),$.x+V}).attr("y1",O=>{let $=S.get(O.id),V=O.isPipelineParent?s:i.nodeRadius*2;return $.y-V/2}).attr("x2",O=>{let $=S.get(O.id),V=O.isPipelineParent?s/2+15:i.nodeRadius+15;return O.sourceStrategy&&(V+=i.nodeRadius+10),$.x+V}).attr("y2",O=>{let $=S.get(O.id),V=O.isPipelineParent?s:i.nodeRadius*2;return $.y+V/2}).attr("stroke",a.componentStroke).attr("stroke-width",6),M.append("text").attr("x",O=>{let $=S.get(O.id);if(O.className==="anchor")return O.labelOffsetX!==void 0?$.x+O.labelOffsetX:$.x;let V=i.nodeLabelOffset;O.sourceStrategy&&O.labelOffsetX===void 0&&(V+=10);let G=O.labelOffsetX??V;return $.x+G}).attr("y",O=>{let $=S.get(O.id);if(O.className==="anchor")return O.labelOffsetY!==void 0?$.y+O.labelOffsetY:$.y-3;let V=-i.nodeLabelOffset;O.sourceStrategy&&O.labelOffsetY===void 0&&(V-=10);let G=O.labelOffsetY??V;return $.y+G}).attr("class","wardley-node-label").attr("fill",O=>O.className==="evolved"?a.evolutionStroke:O.className==="anchor"?"#000":a.componentLabelColor).attr("font-size",i.labelFontSize).attr("font-weight",O=>O.className==="anchor"?"bold":"normal").attr("text-anchor",O=>O.className==="anchor"?"middle":"start").attr("dominant-baseline",O=>O.className==="anchor"?"middle":"auto").text(O=>O.label),u.annotations.length>0){let O=m.append("g").attr("class","wardley-annotations");if(u.annotations.forEach($=>{let V=$.coordinates.map(G=>({x:x(G.x),y:b(G.y)}));if(V.length>1)for(let G=0;G<V.length-1;G++)O.append("line").attr("class","wardley-annotation-line").attr("x1",V[G].x).attr("y1",V[G].y).attr("x2",V[G+1].x).attr("y2",V[G+1].y).attr("stroke",a.axisColor).attr("stroke-width",1.5).attr("stroke-dasharray","4 4");V.forEach(G=>{let z=O.append("g").attr("class","wardley-annotation");z.append("circle").attr("cx",G.x).attr("cy",G.y).attr("r",10).attr("fill","white").attr("stroke",a.axisColor).attr("stroke-width",1.5),z.append("text").attr("x",G.x).attr("y",G.y).attr("text-anchor","middle").attr("dominant-baseline","central").attr("font-size",10).attr("fill",a.axisTextColor).attr("font-weight","bold").text($.number)})}),u.annotationsBox){let $=x(u.annotationsBox.x),V=b(u.annotationsBox.y),G=10,z=16,W=11,H=O.append("g").attr("class","wardley-annotations-box"),j=[...u.annotations].filter(U=>U.text).sort((U,oe)=>U.number-oe.number),Q=[];if(j.forEach((U,oe)=>{let te=H.append("text").attr("x",$+G).attr("y",V+G+(oe+1)*z).attr("font-size",W).attr("fill",a.axisTextColor).attr("text-anchor","start").attr("dominant-baseline","middle").text(`${U.number}. ${U.text}`);Q.push(te)}),Q.length>0){let U=0,oe=0;Q.forEach(Pe=>{let Ge=Pe.node(),Oe=Ge.getComputedTextLength();U=Math.max(U,Oe);let ue=Ge.getBBox();oe=Math.max(oe,ue.height)});let te=U+G*2+105,le=j.length*z+G*2+oe/2,ie=i.padding,ae=d-i.padding-te,Re=i.padding,be=f-i.padding-le;$=Math.max(ie,Math.min($,ae)),V=Math.max(Re,Math.min(V,be)),Q.forEach((Pe,Ge)=>{Pe.attr("x",$+G).attr("y",V+G+(Ge+1)*z)}),H.insert("rect","text").attr("x",$).attr("y",V).attr("width",te).attr("height",le).attr("fill","white").attr("stroke",a.axisColor).attr("stroke-width",1.5).attr("rx",4).attr("ry",4)}}}if(u.notes.length>0){let O=m.append("g").attr("class","wardley-notes");u.notes.forEach($=>{let V=x($.x),G=b($.y);O.append("text").attr("x",V).attr("y",G).attr("text-anchor","start").attr("font-size",11).attr("fill",a.axisTextColor).attr("font-weight","bold").text($.text)})}if(u.accelerators.length>0){let O=m.append("g").attr("class","wardley-accelerators");u.accelerators.forEach($=>{let V=x($.x),G=b($.y),z=60,W=30,H=20,j=`
+        M ${V} ${G-W/2}
+        L ${V+z-H} ${G-W/2}
+        L ${V+z-H} ${G-W/2-8}
+        L ${V+z} ${G}
+        L ${V+z-H} ${G+W/2+8}
+        L ${V+z-H} ${G+W/2}
+        L ${V} ${G+W/2}
         Z
-      `;O.append("path").attr("d",U).attr("fill","white").attr("stroke",a.componentStroke).attr("stroke-width",1),O.append("text").attr("x",G+V/2).attr("y",F+H/2+15).attr("text-anchor","middle").attr("font-size",10).attr("fill",a.axisTextColor).attr("font-weight","bold").text($.name)})}if(u.deaccelerators.length>0){let O=m.append("g").attr("class","wardley-deaccelerators");u.deaccelerators.forEach($=>{let G=x($.x),F=b($.y),V=60,H=30,j=20,U=`
-        M ${G+V} ${F-H/2}
-        L ${G+j} ${F-H/2}
-        L ${G+j} ${F-H/2-8}
-        L ${G} ${F}
-        L ${G+j} ${F+H/2+8}
-        L ${G+j} ${F+H/2}
-        L ${G+V} ${F+H/2}
+      `;O.append("path").attr("d",j).attr("fill","white").attr("stroke",a.componentStroke).attr("stroke-width",1),O.append("text").attr("x",V+z/2).attr("y",G+W/2+15).attr("text-anchor","middle").attr("font-size",10).attr("fill",a.axisTextColor).attr("font-weight","bold").text($.name)})}if(u.deaccelerators.length>0){let O=m.append("g").attr("class","wardley-deaccelerators");u.deaccelerators.forEach($=>{let V=x($.x),G=b($.y),z=60,W=30,H=20,j=`
+        M ${V+z} ${G-W/2}
+        L ${V+H} ${G-W/2}
+        L ${V+H} ${G-W/2-8}
+        L ${V} ${G}
+        L ${V+H} ${G+W/2+8}
+        L ${V+H} ${G+W/2}
+        L ${V+z} ${G+W/2}
         Z
-      `;O.append("path").attr("d",U).attr("fill","white").attr("stroke",a.componentStroke).attr("stroke-width",1),O.append("text").attr("x",G+V/2).attr("y",F+H/2+15).attr("text-anchor","middle").attr("font-size",10).attr("fill",a.axisTextColor).attr("font-weight","bold").text($.name)})}},"draw"),cMe={draw:gAt}});var hMe,dMe=z(()=>{"use strict";Xt();$f();br();hMe=o(({wardley:e}={})=>{let t=Ao(),r=Nt(),i=Gr(t,r.themeVariables),n=Gr(i.wardley,e);return`
+      `;O.append("path").attr("d",j).attr("fill","white").attr("stroke",a.componentStroke).attr("stroke-width",1),O.append("text").attr("x",V+z/2).attr("y",G+W/2+15).attr("text-anchor","middle").attr("font-size",10).attr("fill",a.axisTextColor).attr("font-weight","bold").text($.name)})}},"draw"),f$e={draw:KMt}});var m$e,g$e=F(()=>{"use strict";Qt();Pc();ur();m$e=o(({wardley:e}={})=>{let t=ma(),r=_t(),n=qr(t,r.themeVariables),i=qr(n.wardley,e);return`
   .wardley-background {
-    fill: ${n.backgroundColor};
+    fill: ${i.backgroundColor};
   }
   .wardley-axes line, .wardley-axes path {
-    stroke: ${n.axisColor};
+    stroke: ${i.axisColor};
   }
   .wardley-axis-label {
-    fill: ${n.axisTextColor};
+    fill: ${i.axisTextColor};
   }
   .wardley-stage-label {
-    fill: ${n.axisTextColor};
+    fill: ${i.axisTextColor};
   }
   .wardley-grid line {
-    stroke: ${n.gridColor};
+    stroke: ${i.gridColor};
   }
   .wardley-node circle {
-    fill: ${n.componentFill};
-    stroke: ${n.componentStroke};
+    fill: ${i.componentFill};
+    stroke: ${i.componentStroke};
   }
   .wardley-node-label {
-    fill: ${n.componentLabelColor};
+    fill: ${i.componentLabelColor};
   }
   .wardley-link {
-    stroke: ${n.linkStroke};
+    stroke: ${i.linkStroke};
   }
   .wardley-link--dashed {
     stroke-dasharray: 4 4;
   }
   .wardley-link-label {
-    fill: ${n.axisTextColor};
+    fill: ${i.axisTextColor};
   }
   .wardley-trend line {
-    stroke: ${n.evolutionStroke};
+    stroke: ${i.evolutionStroke};
   }
   .wardley-annotation-line {
-    stroke: ${n.annotationStroke};
+    stroke: ${i.annotationStroke};
   }
   .wardley-annotation circle {
-    fill: ${n.annotationFill};
-    stroke: ${n.annotationStroke};
+    fill: ${i.annotationFill};
+    stroke: ${i.annotationStroke};
   }
   .wardley-annotation text {
-    fill: ${n.annotationTextColor};
+    fill: ${i.annotationTextColor};
   }
   .wardley-annotations-box rect {
-    fill: ${n.annotationFill};
-    stroke: ${n.annotationStroke};
+    fill: ${i.annotationFill};
+    stroke: ${i.annotationStroke};
   }
   .wardley-annotations-box text {
-    fill: ${n.annotationTextColor};
+    fill: ${i.annotationTextColor};
   }
   .wardley-pipeline-box {
-    stroke: ${n.componentStroke};
+    stroke: ${i.componentStroke};
   }
   .wardley-notes text {
-    fill: ${n.axisTextColor};
+    fill: ${i.axisTextColor};
   }
-  `},"styles")});var fMe={};xr(fMe,{diagram:()=>yAt});var yAt,pMe=z(()=>{"use strict";aMe();lMe();uMe();dMe();yAt={parser:bU,db:oMe,renderer:cMe,styles:hMe}});var s6t={};xr(s6t,{default:()=>a6t});uc();RD();Xf();var Yze=o(e=>/^\s*C4Context|C4Container|C4Component|C4Dynamic|C4Deployment/.test(e),"detector"),jze=o(async()=>{let{diagram:e}=await Promise.resolve().then(()=>(cte(),lte));return{id:"c4",diagram:e}},"loader"),Xze={id:"c4",detector:Yze,loader:jze},ute=Xze;var t1e="flowchart",Jot=o((e,t)=>t?.flowchart?.defaultRenderer==="dagre-wrapper"||t?.flowchart?.defaultRenderer==="elk"?!1:/^\s*graph/.test(e),"detector"),elt=o(async()=>{let{diagram:e}=await Promise.resolve().then(()=>(dE(),hE));return{id:t1e,diagram:e}},"loader"),tlt={id:t1e,detector:Jot,loader:elt},r1e=tlt;var i1e="flowchart-v2",rlt=o((e,t)=>t?.flowchart?.defaultRenderer==="dagre-d3"?!1:(t?.flowchart?.defaultRenderer==="elk"&&(t.layout="elk"),/^\s*graph/.test(e)&&t?.flowchart?.defaultRenderer==="dagre-wrapper"?!0:/^\s*flowchart/.test(e)),"detector"),ilt=o(async()=>{let{diagram:e}=await Promise.resolve().then(()=>(dE(),hE));return{id:i1e,diagram:e}},"loader"),nlt={id:i1e,detector:rlt,loader:ilt},n1e=nlt;var clt=o(e=>/^\s*erDiagram/.test(e),"detector"),ult=o(async()=>{let{diagram:e}=await Promise.resolve().then(()=>(f1e(),d1e));return{id:"er",diagram:e}},"loader"),hlt={id:"er",detector:clt,loader:ult},p1e=hlt;var s5e="gitGraph",vbt=o(e=>/^\s*gitGraph/.test(e),"detector"),xbt=o(async()=>{let{diagram:e}=await Promise.resolve().then(()=>(a5e(),n5e));return{id:s5e,diagram:e}},"loader"),bbt={id:s5e,detector:vbt,loader:xbt},o5e=bbt;var $5e="gantt",l2t=o(e=>/^\s*gantt/.test(e),"detector"),c2t=o(async()=>{let{diagram:e}=await Promise.resolve().then(()=>(F5e(),B5e));return{id:$5e,diagram:e}},"loader"),u2t={id:$5e,detector:l2t,loader:c2t},z5e=u2t;var X5e="info",m2t=o(e=>/^\s*info/.test(e),"detector"),g2t=o(async()=>{let{diagram:e}=await Promise.resolve().then(()=>(j5e(),Y5e));return{id:X5e,diagram:e}},"loader"),K5e={id:X5e,detector:m2t,loader:g2t};var D2t=o(e=>/^\s*pie/.test(e),"detector"),R2t=o(async()=>{let{diagram:e}=await Promise.resolve().then(()=>(aAe(),nAe));return{id:"pie",diagram:e}},"loader"),sAe={id:"pie",detector:D2t,loader:R2t};var xAe="quadrantChart",j2t=o(e=>/^\s*quadrantChart/.test(e),"detector"),X2t=o(async()=>{let{diagram:e}=await Promise.resolve().then(()=>(vAe(),yAe));return{id:xAe,diagram:e}},"loader"),K2t={id:xAe,detector:j2t,loader:X2t},bAe=K2t;var YAe="xychart",fTt=o(e=>/^\s*xychart(-beta)?/.test(e),"detector"),pTt=o(async()=>{let{diagram:e}=await Promise.resolve().then(()=>(HAe(),UAe));return{id:YAe,diagram:e}},"loader"),mTt={id:YAe,detector:fTt,loader:pTt},jAe=mTt;var i6e="requirement",bTt=o(e=>/^\s*requirement(Diagram)?/.test(e),"detector"),TTt=o(async()=>{let{diagram:e}=await Promise.resolve().then(()=>(r6e(),t6e));return{id:i6e,diagram:e}},"loader"),CTt={id:i6e,detector:bTt,loader:TTt},n6e=CTt;var C6e="sequence",vCt=o(e=>/^\s*sequenceDiagram/.test(e),"detector"),xCt=o(async()=>{let{diagram:e}=await Promise.resolve().then(()=>(T6e(),b6e));return{id:C6e,diagram:e}},"loader"),bCt={id:C6e,detector:vCt,loader:xCt},k6e=bCt;var D6e="class",ECt=o((e,t)=>t?.class?.defaultRenderer==="dagre-wrapper"?!1:/^\s*classDiagram/.test(e),"detector"),ACt=o(async()=>{let{diagram:e}=await Promise.resolve().then(()=>(_6e(),A6e));return{id:D6e,diagram:e}},"loader"),_Ct={id:D6e,detector:ECt,loader:ACt},R6e=_Ct;var N6e="classDiagram",RCt=o((e,t)=>/^\s*classDiagram/.test(e)&&t?.class?.defaultRenderer==="dagre-wrapper"?!0:/^\s*classDiagram-v2/.test(e),"detector"),LCt=o(async()=>{let{diagram:e}=await Promise.resolve().then(()=>(M6e(),L6e));return{id:N6e,diagram:e}},"loader"),MCt={id:N6e,detector:RCt,loader:LCt},I6e=MCt;var d_e="state",nkt=o((e,t)=>t?.state?.defaultRenderer==="dagre-wrapper"?!1:/^\s*stateDiagram/.test(e),"detector"),akt=o(async()=>{let{diagram:e}=await Promise.resolve().then(()=>(h_e(),u_e));return{id:d_e,diagram:e}},"loader"),skt={id:d_e,detector:nkt,loader:akt},f_e=skt;var g_e="stateDiagram",lkt=o((e,t)=>!!(/^\s*stateDiagram-v2/.test(e)||/^\s*stateDiagram/.test(e)&&t?.state?.defaultRenderer==="dagre-wrapper"),"detector"),ckt=o(async()=>{let{diagram:e}=await Promise.resolve().then(()=>(m_e(),p_e));return{id:g_e,diagram:e}},"loader"),ukt={id:g_e,detector:lkt,loader:ckt},y_e=ukt;var M_e="journey",Lkt=o(e=>/^\s*journey/.test(e),"detector"),Mkt=o(async()=>{let{diagram:e}=await Promise.resolve().then(()=>(L_e(),R_e));return{id:M_e,diagram:e}},"loader"),Nkt={id:M_e,detector:Lkt,loader:Mkt},N_e=Nkt;St();ps();Di();var Ikt=o((e,t,r)=>{Z.debug(`rendering svg for syntax error
-`);let i=bi(t),n=i.append("g");i.attr("viewBox","0 0 2412 512"),Br(i,100,512,!0),n.append("path").attr("class","error-icon").attr("d","m411.313,123.313c6.25-6.25 6.25-16.375 0-22.625s-16.375-6.25-22.625,0l-32,32-9.375,9.375-20.688-20.688c-12.484-12.5-32.766-12.5-45.25,0l-16,16c-1.261,1.261-2.304,2.648-3.31,4.051-21.739-8.561-45.324-13.426-70.065-13.426-105.867,0-192,86.133-192,192s86.133,192 192,192 192-86.133 192-192c0-24.741-4.864-48.327-13.426-70.065 1.402-1.007 2.79-2.049 4.051-3.31l16-16c12.5-12.492 12.5-32.758 0-45.25l-20.688-20.688 9.375-9.375 32.001-31.999zm-219.313,100.687c-52.938,0-96,43.063-96,96 0,8.836-7.164,16-16,16s-16-7.164-16-16c0-70.578 57.422-128 128-128 8.836,0 16,7.164 16,16s-7.164,16-16,16z"),n.append("path").attr("class","error-icon").attr("d","m459.02,148.98c-6.25-6.25-16.375-6.25-22.625,0s-6.25,16.375 0,22.625l16,16c3.125,3.125 7.219,4.688 11.313,4.688 4.094,0 8.188-1.563 11.313-4.688 6.25-6.25 6.25-16.375 0-22.625l-16.001-16z"),n.append("path").attr("class","error-icon").attr("d","m340.395,75.605c3.125,3.125 7.219,4.688 11.313,4.688 4.094,0 8.188-1.563 11.313-4.688 6.25-6.25 6.25-16.375 0-22.625l-16-16c-6.25-6.25-16.375-6.25-22.625,0s-6.25,16.375 0,22.625l15.999,16z"),n.append("path").attr("class","error-icon").attr("d","m400,64c8.844,0 16-7.164 16-16v-32c0-8.836-7.156-16-16-16-8.844,0-16,7.164-16,16v32c0,8.836 7.156,16 16,16z"),n.append("path").attr("class","error-icon").attr("d","m496,96.586h-32c-8.844,0-16,7.164-16,16 0,8.836 7.156,16 16,16h32c8.844,0 16-7.164 16-16 0-8.836-7.156-16-16-16z"),n.append("path").attr("class","error-icon").attr("d","m436.98,75.605c3.125,3.125 7.219,4.688 11.313,4.688 4.094,0 8.188-1.563 11.313-4.688l32-32c6.25-6.25 6.25-16.375 0-22.625s-16.375-6.25-22.625,0l-32,32c-6.251,6.25-6.251,16.375-0.001,22.625z"),n.append("text").attr("class","error-text").attr("x",1440).attr("y",250).attr("font-size","150px").style("text-anchor","middle").text("Syntax error in text"),n.append("text").attr("class","error-text").attr("x",1250).attr("y",400).attr("font-size","100px").style("text-anchor","middle").text(`mermaid version ${r}`)},"draw"),VW={draw:Ikt},I_e=VW;var Okt={db:{},renderer:VW,parser:{parse:o(()=>{},"parse")}},O_e=Okt;var P_e="flowchart-elk",Pkt=o((e,t={})=>/^\s*flowchart-elk/.test(e)||/^\s*(flowchart|graph)/.test(e)&&t?.flowchart?.defaultRenderer==="elk"?(t.layout="elk",!0):!1,"detector"),Bkt=o(async()=>{let{diagram:e}=await Promise.resolve().then(()=>(dE(),hE));return{id:P_e,diagram:e}},"loader"),Fkt={id:P_e,detector:Pkt,loader:Bkt},B_e=Fkt;var v7e="timeline",cwt=o(e=>/^\s*timeline/.test(e),"detector"),uwt=o(async()=>{let{diagram:e}=await Promise.resolve().then(()=>(y7e(),g7e));return{id:v7e,diagram:e}},"loader"),hwt={id:v7e,detector:cwt,loader:uwt},x7e=hwt;var P7e="mindmap",bwt=o(e=>/^\s*mindmap/.test(e),"detector"),Twt=o(async()=>{let{diagram:e}=await Promise.resolve().then(()=>(O7e(),I7e));return{id:P7e,diagram:e}},"loader"),Cwt={id:P7e,detector:bwt,loader:Twt},B7e=Cwt;var X7e="kanban",Fwt=o(e=>/^\s*kanban/.test(e),"detector"),$wt=o(async()=>{let{diagram:e}=await Promise.resolve().then(()=>(j7e(),Y7e));return{id:X7e,diagram:e}},"loader"),zwt={id:X7e,detector:Fwt,loader:$wt},K7e=zwt;var LDe="sankey",u4t=o(e=>/^\s*sankey(-beta)?/.test(e),"detector"),h4t=o(async()=>{let{diagram:e}=await Promise.resolve().then(()=>(RDe(),DDe));return{id:LDe,diagram:e}},"loader"),d4t={id:LDe,detector:u4t,loader:h4t},MDe=d4t;var zDe="packet",T4t=o(e=>/^\s*packet(-beta)?/.test(e),"detector"),C4t=o(async()=>{let{diagram:e}=await Promise.resolve().then(()=>($De(),FDe));return{id:zDe,diagram:e}},"loader"),GDe={id:zDe,detector:T4t,loader:C4t};var QDe="radar",q4t=o(e=>/^\s*radar-beta/.test(e),"detector"),U4t=o(async()=>{let{diagram:e}=await Promise.resolve().then(()=>(ZDe(),KDe));return{id:QDe,diagram:e}},"loader"),JDe={id:QDe,detector:q4t,loader:U4t};var rRe="block",m3t=o(e=>/^\s*block(-beta)?/.test(e),"detector"),g3t=o(async()=>{let{diagram:e}=await Promise.resolve().then(()=>(tRe(),eRe));return{id:rRe,diagram:e}},"loader"),y3t={id:rRe,detector:m3t,loader:g3t},iRe=y3t;var fRe="treeView",N3t=o(e=>/^\s*treeView-beta/.test(e),"detector"),I3t=o(async()=>{let{diagram:e}=await Promise.resolve().then(()=>(dRe(),hRe));return{id:fRe,diagram:e}},"loader"),O3t={id:fRe,detector:N3t,loader:I3t},pRe=O3t;var PRe="architecture",K3t=o(e=>/^\s*architecture/.test(e),"detector"),Z3t=o(async()=>{let{diagram:e}=await Promise.resolve().then(()=>(ORe(),IRe));return{id:PRe,diagram:e}},"loader"),Q3t={id:PRe,detector:K3t,loader:Z3t},BRe=Q3t;var KRe="eventmodeling",PEt=o(e=>/^\s*eventmodeling/.test(e),"detector"),BEt=o(async()=>{let{diagram:e}=await Promise.resolve().then(()=>(XRe(),jRe));return{id:KRe,diagram:e}},"loader"),FEt={id:KRe,detector:PEt,loader:BEt},ZRe=FEt;var pLe="ishikawa",ZEt=o(e=>/^\s*ishikawa(-beta)?\b/i.test(e),"detector"),QEt=o(async()=>{let{diagram:e}=await Promise.resolve().then(()=>(fLe(),dLe));return{id:pLe,diagram:e}},"loader"),mLe={id:pLe,detector:ZEt,loader:QEt};var ULe="venn",O5t=o(e=>/^\s*venn-beta/.test(e),"detector"),P5t=o(async()=>{let{diagram:e}=await Promise.resolve().then(()=>(qLe(),WLe));return{id:ULe,diagram:e}},"loader"),B5t={id:ULe,detector:O5t,loader:P5t},HLe=B5t;Xf();Ut();var rMe="treemap",H5t=o(e=>/^\s*treemap/.test(e),"detector"),Y5t=o(async()=>{let{diagram:e}=await Promise.resolve().then(()=>(tMe(),eMe));return{id:rMe,diagram:e}},"loader"),iMe={id:rMe,detector:H5t,loader:Y5t};var mMe="wardley-beta",vAt=o(e=>/^\s*wardley-beta/i.test(e),"detector"),xAt=o(async()=>{let{diagram:e}=await Promise.resolve().then(()=>(pMe(),fMe));return{id:mMe,diagram:e}},"loader"),bAt={id:mMe,detector:vAt,loader:xAt},gMe=bAt;var yMe=!1,Vy=o(()=>{yMe||(yMe=!0,Kf("error",O_e,e=>e.toLowerCase().trim()==="error"),Kf("---",{db:{clear:o(()=>{},"clear")},styles:{},renderer:{draw:o(()=>{},"draw")},parser:{parse:o(()=>{throw new Error("Diagrams beginning with --- are not valid. If you were trying to use a YAML front-matter, please ensure that you've correctly opened and closed the YAML front-matter with un-indented `---` blocks")},"parse")},init:o(()=>null,"init")},e=>e.toLowerCase().trimStart().startsWith("---")),Cv(B_e,B7e,BRe),Cv(ute,K7e,I6e,R6e,p1e,z5e,K5e,sAe,n6e,k6e,n1e,r1e,x7e,o5e,y_e,f_e,N_e,bAe,MDe,GDe,jAe,iRe,ZRe,pRe,JDe,mLe,iMe,HLe,gMe))},"addDiagrams");St();Xf();Ut();var vMe=o(async()=>{Z.debug("Loading registered diagrams");let t=(await Promise.allSettled(Object.entries(ku).map(async([r,{detector:i,loader:n}])=>{if(n)try{_v(r)}catch{try{let{diagram:a,id:s}=await n();Kf(s,a,i)}catch(a){throw Z.error(`Failed to load external diagram with key ${r}. Removing from detectors.`),delete ku[r],a}}}))).filter(r=>r.status==="rejected");if(t.length>0){Z.error(`Failed to load ${t.length} external diagrams`);for(let r of t)Z.error(r);throw new Error(`Failed to load ${t.length} external diagrams`)}},"loadRegisteredDiagrams");St();Rr();var Wy="comm",I_="rule",O_="decl";var xMe="@media",bMe="@import";var TMe="@supports";var CMe="@namespace",gC="@keyframes";var P_="@layer",kMe="@scope";var TU=Math.abs,yC=String.fromCharCode;function B_(e){return e.trim()}o(B_,"trim");function qy(e,t,r){return e.replace(t,r)}o(qy,"replace");function wMe(e,t,r){return e.indexOf(t,r)}o(wMe,"indexof");function Lh(e,t){return e.charCodeAt(t)|0}o(Lh,"charat");function Mh(e,t,r){return e.slice(t,r)}o(Mh,"substr");function Ks(e){return e.length}o(Ks,"strlen");function F_(e){return e.length}o(F_,"sizeof");function Uy(e,t){return t.push(e),e}o(Uy,"append");var $_=1,Hy=1,SMe=0,ul=0,Nn=0,jy="";function z_(e,t,r,i,n,a,s,l){return{value:e,root:t,parent:r,type:i,props:n,children:a,line:$_,column:Hy,length:s,return:"",siblings:l}}o(z_,"node");function EMe(){return Nn}o(EMe,"char");function AMe(){return Nn=ul>0?Lh(jy,--ul):0,Hy--,Nn===10&&(Hy=1,$_--),Nn}o(AMe,"prev");function hl(){return Nn=ul<SMe?Lh(jy,ul++):0,Hy++,Nn===10&&(Hy=1,$_++),Nn}o(hl,"next");function Nh(){return Lh(jy,ul)}o(Nh,"peek");function vC(){return ul}o(vC,"caret");function G_(e,t){return Mh(jy,e,t)}o(G_,"slice");function Yy(e){switch(e){case 0:case 9:case 10:case 13:case 32:return 5;case 33:case 43:case 44:case 47:case 62:case 64:case 126:case 59:case 123:case 125:return 4;case 58:return 3;case 34:case 39:case 40:case 91:return 2;case 41:case 93:return 1}return 0}o(Yy,"token");function _Me(e){return $_=Hy=1,SMe=Ks(jy=e),ul=0,[]}o(_Me,"alloc");function DMe(e){return jy="",e}o(DMe,"dealloc");function V_(e){return B_(G_(ul-1,CU(e===91?e+2:e===40?e+1:e)))}o(V_,"delimit");function RMe(e){for(;(Nn=Nh())&&Nn<33;)hl();return Yy(e)>2||Yy(Nn)>3?"":" "}o(RMe,"whitespace");function LMe(e,t){for(;--t&&hl()&&!(Nn<48||Nn>102||Nn>57&&Nn<65||Nn>70&&Nn<97););return G_(e,vC()+(t<6&&Nh()==32&&hl()==32))}o(LMe,"escaping");function CU(e){for(;hl();)switch(Nn){case e:return ul;case 34:case 39:e!==34&&e!==39&&CU(Nn);break;case 40:e===41&&CU(e);break;case 92:hl();break}return ul}o(CU,"delimiter");function MMe(e,t){for(;hl()&&e+Nn!==57;)if(e+Nn===84&&Nh()===47)break;return"/*"+G_(t,ul-1)+"*"+yC(e===47?e:hl())}o(MMe,"commenter");function NMe(e){for(;!Yy(Nh());)hl();return G_(e,ul)}o(NMe,"identifier");function PMe(e){return DMe(W_("",null,null,null,[""],e=_Me(e),0,[0],e))}o(PMe,"compile");function W_(e,t,r,i,n,a,s,l,u){for(var h=0,d=0,f=s,p=0,m=0,g=0,y=1,v=1,x=1,b=0,T="",w=n,C=a,k=i,E=T;v;)switch(g=b,b=hl()){case 40:if(g!=108&&Lh(E,f-1)==58){wMe(E+=qy(V_(b),"&","&\f"),"&\f",TU(h?l[h-1]:0))!=-1&&(x=-1);break}case 34:case 39:case 91:E+=V_(b);break;case 9:case 10:case 13:case 32:E+=RMe(g);break;case 92:E+=LMe(vC()-1,7);continue;case 47:switch(Nh()){case 42:case 47:Uy(CAt(MMe(hl(),vC()),t,r,u),u),(Yy(g||1)==5||Yy(Nh()||1)==5)&&Ks(E)&&Mh(E,-1,void 0)!==" "&&(E+=" ");break;default:E+="/"}break;case 123*y:l[h++]=Ks(E)*x;case 125*y:case 59:case 0:switch(b){case 0:case 125:v=0;case 59+d:x==-1&&(E=qy(E,/\f/g,"")),m>0&&(Ks(E)-f||y===0&&g===47)&&Uy(m>32?OMe(E+";",i,r,f-1,u):OMe(qy(E," ","")+";",i,r,f-2,u),u);break;case 59:E+=";";default:if(Uy(k=IMe(E,t,r,h,d,n,l,T,w=[],C=[],f,a),a),b===123)if(d===0)W_(E,t,k,k,w,a,f,l,C);else{switch(p){case 99:if(Lh(E,3)===110)break;case 108:if(Lh(E,2)===97)break;default:d=0;case 100:case 109:case 115:}d?W_(e,k,k,i&&Uy(IMe(e,k,k,0,0,n,l,T,n,w=[],f,C),C),n,C,f,l,i?w:C):W_(E,k,k,k,[""],C,0,l,C)}}h=d=m=0,y=x=1,T=E="",f=s;break;case 58:f=1+Ks(E),m=g;default:if(y<1){if(b==123)--y;else if(b==125&&y++==0&&AMe()==125)continue}switch(E+=yC(b),b*y){case 38:x=d>0?1:(E+="\f",-1);break;case 44:l[h++]=(Ks(E)-1)*x,x=1;break;case 64:Nh()===45&&(E+=V_(hl())),p=Nh(),d=f=Ks(T=E+=NMe(vC())),b++;break;case 45:g===45&&Ks(E)==2&&(y=0)}}return a}o(W_,"parse");function IMe(e,t,r,i,n,a,s,l,u,h,d,f){for(var p=n-1,m=n===0?a:[""],g=F_(m),y=0,v=0,x=0;y<i;++y)for(var b=0,T=Mh(e,p+1,p=TU(v=s[y])),w=e;b<g;++b)(w=B_(v>0?m[b]+" "+T:qy(T,/&\f/g,m[b])))&&(u[x++]=w);return z_(e,t,r,n===0?I_:l,u,h,d,f)}o(IMe,"ruleset");function CAt(e,t,r,i){return z_(e,t,r,Wy,yC(EMe()),Mh(e,2,-2),0,i)}o(CAt,"comment");function OMe(e,t,r,i,n){return z_(e,t,r,O_,Mh(e,0,i),Mh(e,i+1,-1),i,n)}o(OMe,"declaration");function q_(e,t){for(var r="",i=0;i<e.length;i++)r+=t(e[i],i,e,t)||"";return r}o(q_,"serialize");function BMe(e,t,r,i){switch(e.type){case P_:if(e.children.length)break;case bMe:case CMe:case O_:return e.return=e.return||e.value;case Wy:return"";case gC:return e.return=e.value+"{"+q_(e.children,i)+"}";case I_:if(!Ks(e.value=e.props.join(",")))return""}return Ks(r=q_(e.children,i))?e.return=e.value+"{"+r+"}":""}o(BMe,"stringify");function FMe(e){var t=F_(e);return function(r,i,n,a){for(var s="",l=0;l<t;l++)s+=e[l](r,i,n,a)||"";return s}}o(FMe,"middleware");uv();s4();var kAt="graphics-document document";function $Me(e,t){e.attr("role",kAt),t!==""&&e.attr("aria-roledescription",t)}o($Me,"setA11yDiagramInfo");function zMe(e,t,r,i){if(e.insert!==void 0){if(r){let n=`chart-desc-${i}`;e.attr("aria-describedby",n),e.insert("desc",":first-child").attr("id",n).text(r)}if(t){let n=`chart-title-${i}`;e.attr("aria-labelledby",n),e.insert("title",":first-child").attr("id",n).text(t)}}}o(zMe,"addSVGa11yTitleDescription");Dm();br();br();br();Ut();Xf();LD();Xt();var Xy=class e{constructor(t,r,i,n,a){this.type=t;this.text=r;this.db=i;this.parser=n;this.renderer=a}static{o(this,"Diagram")}static async fromText(t,r={}){let i=Nt(),n=zm(t,i);t=Jee(t)+`
-`;try{_v(n)}catch{let h=Jj(n);if(!h)throw new $m(`Diagram ${n} not found.`);let{id:d,diagram:f}=await h();Kf(d,f)}let{db:a,parser:s,renderer:l,init:u}=_v(n);return s.parser&&(s.parser.yy=a),a.clear?.(),u?.(i),r.title&&a.setDiagramTitle?.(r.title),await s.parse(t),new e(n,t,a,s,l)}async render(t,r){await this.renderer.draw(this.text,t,r,this)}getParser(){return this.parser}getType(){return this.type}};Ir();var GMe=[];var VMe=o(()=>{GMe.forEach(e=>{e()}),GMe=[]},"attachFunctions");St();var WMe=o(e=>e.replace(/^\s*%%(?!{)[^\n]+\n?/gm,"").trimStart(),"cleanupComments");mk();Wx();function qMe(e){let t=e.match(pk);if(!t)return{text:e,metadata:{}};let r=ld(t[1],{schema:od})??{};r=typeof r=="object"&&!Array.isArray(r)?r:{};let i={};return r.displayMode&&(i.displayMode=r.displayMode.toString()),r.title&&(i.title=r.title.toString()),r.config&&(i.config=r.config),{text:e.slice(t[0].length),metadata:i}}o(qMe,"extractFrontMatter");Xt();var wAt=o(e=>e.replace(/\r\n?/g,`
-`).replace(/<(\w+)([^>]*)>/g,(t,r,i)=>"<"+r+i.replace(/="([^"]*)"/g,"='$1'")+">"),"cleanupText"),SAt=o(e=>{let{text:t,metadata:r}=qMe(e),{displayMode:i,title:n,config:a={}}=r;return i&&(a.gantt||(a.gantt={}),a.gantt.displayMode=i),{title:n,config:a,text:t}},"processFrontmatter"),EAt=o(e=>{let t=Zt.detectInit(e)??{},r=Zt.detectDirective(e,"wrap");return Array.isArray(r)?t.wrap=r.some(({type:i})=>i==="wrap"):r?.type==="wrap"&&(t.wrap=!0),{text:Zee(e),directive:t}},"processDirectives");function kU(e){let t=wAt(e),r=SAt(t),i=EAt(r.text),n=Gr(r.config,i.directive);return e=WMe(i.text),{code:e,title:r.title,config:n}}o(kU,"preprocessDiagram");OD();LC();Xt();function UMe(e){let t=new TextEncoder().encode(e),r=Array.from(t,i=>String.fromCodePoint(i)).join("");return btoa(r)}o(UMe,"toBase64");MC();var AAt=5e4,_At="graph TB;a[Maximum text size in diagram exceeded];style a fill:#faa",DAt="sandbox",RAt="loose",LAt="http://www.w3.org/2000/svg",MAt="http://www.w3.org/1999/xlink",NAt="http://www.w3.org/1999/xhtml",IAt="100%",OAt="100%",PAt="border:0;margin:0;",BAt="margin:0",FAt="allow-top-navigation-by-user-activation allow-popups",$At='The "iframe" tag is not supported by your browser.',zAt=["foreignobject"],GAt=["dominant-baseline"];function XMe(e){let t=kU(e);return iv(),KH(t.config??{}),t}o(XMe,"processAndSetConfigs");async function VAt(e,t){Vy();try{let{code:r,config:i}=XMe(e);return{diagramType:(await KMe(r)).type,config:i}}catch(r){if(t?.suppressErrors)return!1;throw r}}o(VAt,"parse");var HMe=o((e,t,r=[])=>{let i=A7(`{ ${r.join(" !important; ")} !important; }`);return`.${e} ${t} ${i}`},"cssImportantStyles"),WAt=o((e,t=new Map)=>{let r=new CSSStyleSheet;if(e.fontFamily!==void 0&&r.insertRule(`:root { --mermaid-font-family: ${e.fontFamily}}`,r.cssRules.length),e.altFontFamily!==void 0&&r.insertRule(`:root { --mermaid-alt-font-family: ${e.altFontFamily}}`,r.cssRules.length),t instanceof Map){let l=Mr(e)?["> *","span"]:["rect","polygon","ellipse","circle","path"];t.forEach(u=>{a4(u.styles)||l.forEach(h=>{r.insertRule(HMe(u.id,h,u.styles),r.cssRules.length)}),a4(u.textStyles)||r.insertRule(HMe(u.id,"tspan",(u?.textStyles||[]).map(h=>h.replace("color","fill"))),r.cssRules.length)})}let i="";if(e.themeCSS!==void 0)if(typeof r.replaceSync=="function"){let n=new CSSStyleSheet;n.replaceSync(e.themeCSS),i=ID(n)+`
-`}else i+=`${e.themeCSS}
-`;return i+ID(r)},"createCssStyles"),qAt=o((e,t)=>q_(PMe(`${e}{${t}}`),FMe([o(function(i,n,a,s){if(i.type==="rule"&&Array.isArray(i.props)){if(i.parent&&i.parent.type===gC)return;i.props=i.props.map(l=>l.startsWith(e)?l:`${e} ${l}`)}else i.type.startsWith("@")&&([...[xMe,TMe,P_,kMe,"@container","@starting-style"],gC].includes(i.type)||(Z.warn(`Removing unsupported at-rule ${i.type} from CSS`),i.type=Wy))},"addNamespace"),BMe])),"compileCSS"),UAt=o((e,t,r,i)=>{let n=WAt(e,r),a=rX(t,n,{...e.themeVariables,theme:e.theme,look:e.look},i);return qAt(i,a)},"createUserStyles"),HAt=o((e="",t,r)=>{let i=e;return!r&&!t&&(i=i.replace(/marker-end="url\([\d+./:=?A-Za-z-]*?#/g,'marker-end="url(#')),i=Qa(i),i=i.replace(/<br>/g,"<br/>"),i},"cleanUpSvgCode"),YAt=o((e="",t)=>{let r=t?.viewBox?.baseVal?.height?t.viewBox.baseVal.height+"px":OAt,i=UMe(`<body style="${BAt}">${e}</body>`);return`<iframe style="width:${IAt};height:${r};${PAt}" src="data:text/html;charset=UTF-8;base64,${i}" sandbox="${FAt}">
-  ${$At}
-</iframe>`},"putIntoIFrame"),YMe=o((e,t,r,i,n)=>{let a=e.append("div");a.attr("id",r),i&&a.attr("style",i);let s=a.append("svg").attr("id",t).attr("width","100%").attr("xmlns",LAt);return n&&s.attr("xmlns:xlink",n),s.append("g"),e},"appendDivSvgG");function jMe(e,t){return e.append("iframe").attr("id",t).attr("style","width: 100%; height: 100%;").attr("sandbox","")}o(jMe,"sandboxedIframe");var jAt=o((e,t,r,i)=>{e.getElementById(t)?.remove(),e.getElementById(r)?.remove(),e.getElementById(i)?.remove()},"removeExistingElements"),XAt=o(async function(e,t,r){Vy();let i=XMe(t);t=i.code;let n=Nt();Z.debug(n),t.length>(n?.maxTextSize??AAt)&&(t=_At);let a=`#${e}`,s="i"+e,l="#"+s,u="d"+e,h="#"+u,d=o(()=>{let _=Je(p?l:h).node();_&&"remove"in _&&_.remove()},"removeTempElements"),f=Je(document.body),p=n.securityLevel===DAt,m=n.securityLevel===RAt,g=n.fontFamily;if(r!==void 0){if(r&&(r.innerHTML=""),p){let D=jMe(Je(r),s);f=Je(D.nodes()[0].contentDocument.body),f.node().style.margin="0"}else f=Je(r);YMe(f,e,u,`font-family: ${g}`,MAt)}else{if(jAt(document,e,u,s),p){let D=jMe(Je(document.body),s);f=Je(D.nodes()[0].contentDocument.body),f.node().style.margin="0"}else f=Je("body");YMe(f,e,u)}let y,v;try{y=await Xy.fromText(t,{title:i.title})}catch(D){if(n.suppressErrorRendering)throw d(),D;y=await Xy.fromText("error"),v=D}let x=f.select(h).node(),b=y.type,T=x.firstChild,w=T.firstChild,C=y.renderer.getClasses?.(t,y),k=UAt(n,b,C,a),E=document.createElement("style");E.innerHTML=k,T.insertBefore(E,w);try{await y.renderer.draw(t,e,"11.15.0",y)}catch(D){throw n.suppressErrorRendering?d():I_e.draw(t,e,"11.15.0"),D}let A=f.select(`${h} svg`),N=y.db.getAccTitle?.(),P=y.db.getAccDescription?.();ZAt(b,A,N,P),f.select(`[id="${e}"]`).selectAll("foreignobject > *").attr("xmlns",NAt);let I=f.select(h).node().innerHTML;if(Z.debug("config.arrowMarkerAbsolute",n.arrowMarkerAbsolute),I=HAt(I,p,Aa(n.arrowMarkerAbsolute)),p){let D=f.select(h+" svg").node();I=YAt(I,D)}else m||(I=Ro.sanitize(I,{ADD_TAGS:zAt,ADD_ATTR:GAt,HTML_INTEGRATION_POINTS:{foreignobject:!0}}));if(VMe(),v)throw v;return d(),{diagramType:b,svg:I,bindFunctions:y.db.bindFunctions}},"render");function KAt(e={}){let t=Ai({},e);t?.fontFamily&&!t.themeVariables?.fontFamily&&(t.themeVariables||(t.themeVariables={}),t.themeVariables.fontFamily=t.fontFamily),YH(t),t?.theme&&t.theme in _o?t.themeVariables=_o[t.theme].getThemeVariables(t.themeVariables):t&&(t.themeVariables=_o.default.getThemeVariables(t.themeVariables));let r=typeof t=="object"?_7(t):D7();Zy(r.logLevel),Vy()}o(KAt,"initialize");var KMe=o((e,t={})=>{let{code:r}=kU(e);return Xy.fromText(r,t)},"getDiagramFromText");function ZAt(e,t,r,i){$Me(t,e),zMe(t,r,i,t.attr("id"))}o(ZAt,"addA11yInfo");var If=Object.freeze({render:XAt,parse:VAt,getDiagramFromText:KMe,initialize:KAt,getConfig:Nt,setConfig:OC,getSiteConfig:D7,updateSiteConfig:jH,reset:o(()=>{iv()},"reset"),globalReset:o(()=>{iv(Ph)},"globalReset"),defaultConfig:Ph});Zy(Nt().logLevel);iv(Nt());tf();Xt();var QAt=o((e,t,r)=>{Z.warn(e),LM(e)?(r&&r(e.str,e.hash),t.push({...e,message:e.str,error:e})):(r&&r(e),e instanceof Error&&t.push({str:e.message,message:e.message,hash:e.name,error:e}))},"handleError"),ZMe=o(async function(e={querySelector:".mermaid"}){try{await JAt(e)}catch(t){if(LM(t)&&Z.error(t.str),Ih.parseError&&Ih.parseError(t),!e.suppressErrors)throw Z.error("Use the suppressErrors option to suppress these errors"),t}},"run"),JAt=o(async function({postRenderCallback:e,querySelector:t,nodes:r}={querySelector:".mermaid"}){let i=If.getConfig();Z.debug(`${e?"":"No "}Callback function found`);let n;if(r)n=r;else if(t)n=document.querySelectorAll(t);else throw new Error("Nodes and querySelector are both undefined");Z.debug(`Found ${n.length} diagrams`),i?.startOnLoad!==void 0&&(Z.debug("Start On Load: "+i?.startOnLoad),If.updateSiteConfig({startOnLoad:i?.startOnLoad}));let a=new Zt.InitIDGenerator(i.deterministicIds,i.deterministicIDSeed),s,l=[];for(let u of Array.from(n)){Z.info("Rendering diagram: "+u.id);if(u.getAttribute("data-processed"))continue;u.setAttribute("data-processed","true");let h=`mermaid-${a.next()}`;s=u.innerHTML,s=fk(Zt.entityDecode(s)).trim().replace(/<br\s*\/?>/gi,"<br/>");let d=Zt.detectInit(s);d&&Z.debug("Detected early reinit: ",d);try{let{svg:f,bindFunctions:p}=await tNe(h,s,u);u.innerHTML=f,e&&await e(h),p&&p(u)}catch(f){QAt(f,l,Ih.parseError)}}if(l.length>0)throw l[0]},"runThrowsErrors"),QMe=o(function(e){If.initialize(e)},"initialize"),e6t=o(async function(e,t,r){Z.warn("mermaid.init is deprecated. Please use run instead."),e&&QMe(e);let i={postRenderCallback:r,querySelector:".mermaid"};typeof t=="string"?i.querySelector=t:t&&(t instanceof HTMLElement?i.nodes=[t]:i.nodes=t),await ZMe(i)},"init"),t6t=o(async(e,{lazyLoad:t=!0}={})=>{Vy(),Cv(...e),t===!1&&await vMe()},"registerExternalDiagrams"),JMe=o(function(){if(Ih.startOnLoad){let{startOnLoad:e}=If.getConfig();e&&Ih.run().catch(t=>Z.error("Mermaid failed to initialize",t))}},"contentLoaded");if(typeof document<"u"){window.addEventListener("load",JMe,!1)}var r6t=o(function(e){Ih.parseError=e},"setParseErrorHandler"),U_=[],wU=!1,eNe=o(async()=>{if(!wU){for(wU=!0;U_.length>0;){let e=U_.shift();if(e)try{await e()}catch(t){Z.error("Error executing queue",t)}}wU=!1}},"executeQueue"),i6t=o(async(e,t)=>new Promise((r,i)=>{let n=o(()=>new Promise((a,s)=>{If.parse(e,t).then(l=>{a(l),r(l)},l=>{Z.error("Error parsing",l),Ih.parseError?.(l),s(l),i(l)})}),"performCall");U_.push(n),eNe().catch(i)}),"parse"),tNe=o((e,t,r)=>new Promise((i,n)=>{let a=o(()=>new Promise((s,l)=>{If.render(e,t,r).then(u=>{s(u),i(u)},u=>{Z.error("Error parsing",u),Ih.parseError?.(u),l(u),n(u)})}),"performCall");U_.push(a),eNe().catch(n)}),"render"),n6t=o(()=>Object.keys(ku).map(e=>({id:e})),"getRegisteredDiagramsMetadata"),Ih={startOnLoad:!0,mermaidAPI:If,parse:i6t,render:tNe,init:e6t,run:ZMe,registerExternalDiagrams:t6t,registerLayoutLoaders:GP,initialize:QMe,parseError:void 0,contentLoaded:JMe,setParseErrorHandler:r6t,detectType:zm,registerIconPacks:dk,getRegisteredDiagramsMetadata:n6t},a6t=Ih;return hNe(s6t);})();
+  `},"styles")});var y$e={};ir(y$e,{diagram:()=>ZMt});var ZMt,v$e=F(()=>{"use strict";c$e();d$e();p$e();g$e();ZMt={parser:wX,db:h$e,renderer:f$e,styles:m$e}});var T$e,ok,tNt,rNt,nNt,iNt,aNt,sNt,wx,kX=F(()=>{"use strict";ur();Wi();vt();Qt();Nn();T$e=o(()=>({domains:new Map,transitions:[]}),"createDefaultData"),ok=T$e(),tNt=o(()=>ok.domains,"getDomains"),rNt=o(()=>ok.transitions,"getTransitions"),nNt=o(e=>{if(e)for(let t of e){let r=t.domain,n=(t.items??[]).map(i=>({label:i.label}));ok.domains.set(r,{name:r,items:n})}},"setDomains"),iNt=o(e=>{e&&(ok.transitions=e.filter(t=>t.from===t.to?(Z.warn(`Cynefin: self-loop transition on domain "${t.from}" is not meaningful and will be skipped.`),!1):!0).map(t=>({from:t.from,to:t.to,label:t.label||void 0})))},"setTransitions"),aNt=o(()=>qr({...cr.cynefin,..._t().cynefin}),"getConfig"),sNt=o(()=>{yr(),ok=T$e()},"clear"),wx={getDomains:tNt,getTransitions:rNt,setDomains:nNt,setTransitions:iNt,getConfig:aNt,clear:sNt,setAccTitle:kr,getAccTitle:Ar,setDiagramTitle:Or,getDiagramTitle:Lr,getAccDescription:_r,setAccDescription:Rr}});var oNt,C$e,w$e=F(()=>{"use strict";Xa();vt();Hs();kX();oNt=o(e=>{Gn(e,wx),wx.setDomains(e.domains),wx.setTransitions(e.transitions)},"populate"),C$e={parse:o(async e=>{let t=await Si("cynefin",e);Z.debug(t),oNt(t)},"parse")}});function dD(e){let t=e+1831565813|0;return t=Math.imul(t^t>>>15,t|1),t^=t+Math.imul(t^t>>>7,t|61),((t^t>>>14)>>>0)/4294967296}function lNt(e){let t=0;for(let r=0;r<e.length;r++){let n=e.charCodeAt(r);t=(t<<5)-t+n,t|=0}return t}function k$e(e,t){return typeof e=="number"&&Number.isFinite(e)&&e!==0?e:lNt(t)}function S$e(e,t,r,n){let i=e/2,a=n??e*.015,s=7,l=t/s,u=[];for(let d=0;d<=s;d++){let f=dD(r+d*17)*a*2-a;u.push({x:i+f,y:d*l})}let h=`M${u[0].x},${u[0].y}`;for(let d=0;d<u.length-1;d++){let f=u[d],p=u[d+1],m=(f.y+p.y)/2,g=d%2===0?1:-1,y=a*1.5*g*dD(r+d*31+7),v=f.x+y,x=m,b=p.x-y;h+=` C${v},${x} ${b},${m} ${p.x},${p.y}`}return h}function E$e(e,t,r,n){let i=t/2,a=n??t*.015,s=7,l=e/s,u=[];for(let d=0;d<=s;d++){let f=dD(r+d*23)*a*2-a;u.push({x:d*l,y:i+f})}let h=`M${u[0].x},${u[0].y}`;for(let d=0;d<u.length-1;d++){let f=u[d],p=u[d+1],m=(f.x+p.x)/2,g=d%2===0?1:-1,y=a*1.5*g*dD(r+d*37+11),v=m,x=f.y+y,b=m,T=p.y-y;h+=` C${v},${x} ${b},${T} ${p.x},${p.y}`}return h}function A$e(e,t){let r=e/2,n=t*.5,i=t,a=e*.03;return[`M${r},${n}`,`C${r+a},${n+(i-n)*.2}`,`${r-a*1.5},${n+(i-n)*.55}`,`${r+a*.5},${n+(i-n)*.75}`,`C${r-a},${n+(i-n)*.85}`,`${r+a*.3},${n+(i-n)*.95}`,`${r},${i}`].join(" ")}function R$e(e,t,r,n){return[`M${e-r},${t}`,`A${r},${n} 0 1,1 ${e+r},${t}`,`A${r},${n} 0 1,1 ${e-r},${t}`,"Z"].join(" ")}var _$e=F(()=>{"use strict";o(dD,"seededRandom");o(lNt,"hashString");o(k$e,"resolveSeed");o(S$e,"generateFoldPath");o(E$e,"generateHorizontalBoundary");o(A$e,"generateCliffPath");o(R$e,"generateConfusionPath")});var L$e,cNt,uNt,SX,hNt,D$e,I$e=F(()=>{"use strict";Ka();$n();vt();ur();Pc();Qt();_$e();L$e={complex:{model:"Probe \u2192 Sense \u2192 Respond",practice:"Emergent Practices"},complicated:{model:"Sense \u2192 Analyse \u2192 Respond",practice:"Good Practices"},clear:{model:"Sense \u2192 Categorise \u2192 Respond",practice:"Best Practices"},chaotic:{model:"Act \u2192 Sense \u2192 Respond",practice:"Novel Practices"},confusion:{model:"",practice:"Disorder"}},cNt=o((e,t)=>{let r=e/2,n=t/2;return{complex:{cx:r/2,cy:n/2,x:0,y:0,w:r,h:n},complicated:{cx:r+r/2,cy:n/2,x:r,y:0,w:r,h:n},chaotic:{cx:r/2,cy:n+n/2,x:0,y:n,w:r,h:n},clear:{cx:r+r/2,cy:n+n/2,x:r,y:n,w:r,h:n},confusion:{cx:r,cy:n,x:r*.7,y:n*.7,w:r*.6,h:n*.6}}},"getDomainLayouts"),uNt=o(()=>{let e=ma(),t=_t();return qr(e,t.themeVariables).cynefin},"getCynefinDomainColors"),SX=3,hNt=o((e,t,r,n)=>{let i=n.db,a=i.getDomains(),s=i.getTransitions(),l=i.getDiagramTitle(),u=i.getAccTitle(),h=i.getAccDescription(),d=i.getConfig(),f=uNt();Z.debug("Rendering Cynefin diagram");let p=d.width,m=d.height,g=d.padding,y=d.showDomainDescriptions,v=d.boundaryAmplitude,x=p+g*2,b=m+g*2,T={complex:f.complexBg,complicated:f.complicatedBg,clear:f.clearBg,chaotic:f.chaoticBg,confusion:f.confusionBg},k=xn(t);Wr(k,b,x,d.useMaxWidth??!0),k.attr("viewBox",`0 0 ${x} ${b}`),u&&k.append("title").text(u),h&&k.append("desc").text(h);let C=k.append("g").attr("transform",`translate(${g}, ${g})`),w=cNt(p,m),S=k$e(d.seed,t),R=C.append("g").attr("class","cynefin-backgrounds"),L=["complex","complicated","chaotic","clear"];for(let O of L){let $=w[O];R.append("rect").attr("class","cynefinDomain").attr("x",$.x).attr("y",$.y).attr("width",$.w).attr("height",$.h).attr("fill",T[O]).attr("fill-opacity",.4).attr("stroke","none")}let N=C.append("g").attr("class","cynefin-boundaries");N.append("path").attr("class","cynefinBoundary").attr("d",S$e(p,m,S,v)).attr("fill","none"),N.append("path").attr("class","cynefinBoundary").attr("d",E$e(p,m,S+100,v)).attr("fill","none"),N.append("path").attr("class","cynefinCliff").attr("d",A$e(p,m)).attr("fill","none");let I=p*.15,_=m*.15;C.append("path").attr("class","cynefinConfusion").attr("d",R$e(p/2,m/2,I,_)).attr("fill",T.confusion).attr("fill-opacity",.5);let A=C.append("g").attr("class","cynefin-labels");for(let O of L){let $=w[O];A.append("text").attr("class","cynefinDomainLabel").attr("x",$.cx).attr("y",y?$.cy-30:$.cy).attr("text-anchor","middle").attr("dominant-baseline","middle").text(O.charAt(0).toUpperCase()+O.slice(1))}if(A.append("text").attr("class","cynefinDomainLabel").attr("x",p/2).attr("y",y?m/2-10:m/2).attr("text-anchor","middle").attr("dominant-baseline","middle").text("Confusion"),y){let O=C.append("g").attr("class","cynefin-subtitles");for(let $ of L){let V=w[$],G=L$e[$];O.append("text").attr("class","cynefinSubtitle").attr("x",V.cx).attr("y",V.cy-10).attr("text-anchor","middle").attr("dominant-baseline","middle").text(G.model),O.append("text").attr("class","cynefinSubtitle").attr("x",V.cx).attr("y",V.cy+5).attr("text-anchor","middle").attr("dominant-baseline","middle").text(G.practice)}O.append("text").attr("class","cynefinSubtitle").attr("x",p/2).attr("y",m/2+8).attr("text-anchor","middle").attr("dominant-baseline","middle").text(L$e.confusion.practice)}let M=C.append("g").attr("class","cynefin-items"),D=26,P=10,B=["complex","complicated","chaotic","clear","confusion"];for(let O of B){let $=a.get(O);if(!$||$.items.length===0)continue;let V=w[O],G=O==="confusion",z=$.items,W=0;G&&$.items.length>SX&&(W=$.items.length-SX,z=$.items.slice(0,SX));let H;if(G){let j=y?22:14;H=V.cy+j}else H=V.cy+(y?25:15);if([...z].forEach((j,Q)=>{let U=H+Q*(D+4),oe=M.append("g"),te=oe.append("text").attr("class","cynefinItemText").attr("x",0).attr("y",D/2).attr("text-anchor","middle").attr("dominant-baseline","central").text(j.label),le=j.label.length*7,ie=te.node();if(ie&&typeof ie.getBBox=="function"){let be=ie.getBBox();be.width>0&&(le=be.width)}let ae=le+P*2,Re=V.cx-ae/2;oe.attr("transform",`translate(${Re}, ${U})`),oe.insert("rect","text").attr("class","cynefinItem").attr("x",0).attr("y",0).attr("width",ae).attr("height",D).attr("rx",4).attr("ry",4).attr("fill",T[O]).attr("fill-opacity",.95),te.attr("x",ae/2).attr("y",D/2)}),W>0){let j=H+z.length*(D+4),Q=`+${W} more`,U=M.append("g"),oe=U.append("text").attr("class","cynefinItemText").attr("x",0).attr("y",D/2).attr("text-anchor","middle").attr("dominant-baseline","central").text(Q),te=Q.length*7,le=oe.node();if(le&&typeof le.getBBox=="function"){let Re=le.getBBox();Re.width>0&&(te=Re.width)}let ie=te+P*2,ae=V.cx-ie/2;U.attr("transform",`translate(${ae}, ${j})`),U.insert("rect","text").attr("class","cynefinItemOverflow").attr("x",0).attr("y",0).attr("width",ie).attr("height",D).attr("rx",4).attr("ry",4).attr("fill",T[O]).attr("fill-opacity",.6),oe.attr("x",ie/2).attr("y",D/2)}}if(s.length>0){let O=k.select("defs").empty()?k.append("defs"):k.select("defs"),$=`cynefin-arrow-${t}`;O.append("marker").attr("id",$).attr("viewBox","0 0 10 10").attr("refX",9).attr("refY",5).attr("markerWidth",6).attr("markerHeight",6).attr("orient","auto-start-reverse").append("path").attr("d","M 0 0 L 10 5 L 0 10 z").attr("class","cynefinArrowHead");let V=C.append("g").attr("class","cynefin-arrows");s.forEach(G=>{let z=w[G.from],W=w[G.to];if(!z||!W)return;if(G.from===G.to){Z.warn(`Cynefin renderer: skipping self-loop on domain "${G.from}"`);return}let H=z.cx,j=z.cy,Q=W.cx,U=W.cy,oe=(H+Q)/2,te=(j+U)/2,le=Q-H,ie=U-j,ae=Math.sqrt(le*le+ie*ie),Re=ae*.15,be=-ie/ae,Pe=le/ae,Ge=oe+be*Re,Oe=te+Pe*Re;V.append("path").attr("class","cynefinArrowLine").attr("d",`M${H},${j} Q${Ge},${Oe} ${Q},${U}`).attr("fill","none").attr("marker-end",`url(#${$})`),G.label&&V.append("text").attr("class","cynefinArrowLabel").attr("x",Ge).attr("y",Oe-6).attr("text-anchor","middle").attr("dominant-baseline","auto").text(G.label)})}l&&C.append("text").attr("class","cynefinTitle").attr("x",p/2).attr("y",-g/2).attr("text-anchor","middle").attr("dominant-baseline","middle").text(l)},"draw"),D$e={draw:hNt}});var dNt,fNt,M$e,N$e=F(()=>{"use strict";Qt();Pc();ur();dNt=o(()=>{let e=ma(),t=_t();return qr(e,t.themeVariables).cynefin},"getCynefinTheme"),fNt=o(()=>{let e=dNt();return`
+	.cynefinDomain {
+		stroke: none;
+	}
+	.cynefinDomainLabel {
+		font-size: ${e.domainFontSize}px;
+		font-weight: bold;
+		fill: ${e.labelColor};
+	}
+	.cynefinSubtitle {
+		font-size: ${e.itemFontSize-1}px;
+		fill: ${e.textColor};
+		font-style: italic;
+	}
+	.cynefinItem {
+		fill-opacity: 0.95;
+		stroke: ${e.boundaryColor};
+		stroke-width: 1;
+	}
+	.cynefinItemText {
+		font-size: ${e.itemFontSize}px;
+		fill: ${e.textColor};
+	}
+	.cynefinItemOverflow {
+		fill-opacity: 0.6;
+		stroke: ${e.boundaryColor};
+		stroke-width: 1;
+		stroke-dasharray: 3 2;
+	}
+	.cynefinBoundary {
+		stroke: ${e.boundaryColor};
+		stroke-width: ${e.boundaryWidth};
+		stroke-dasharray: 6 3;
+	}
+	.cynefinCliff {
+		stroke: ${e.cliffColor};
+		stroke-width: ${e.cliffWidth};
+	}
+	.cynefinConfusion {
+		stroke: ${e.boundaryColor};
+		stroke-width: 1.5;
+		stroke-dasharray: 4 2;
+	}
+	.cynefinArrowLine {
+		stroke: ${e.arrowColor};
+		stroke-width: ${e.arrowWidth};
+		fill: none;
+	}
+	.cynefinArrowHead {
+		fill: ${e.arrowColor};
+		stroke: none;
+	}
+	.cynefinArrowLabel {
+		font-size: ${e.itemFontSize-1}px;
+		fill: ${e.textColor};
+	}
+	.cynefinTitle {
+		font-size: ${e.domainFontSize+2}px;
+		font-weight: bold;
+		fill: ${e.labelColor};
+	}
+	`},"styles"),M$e=fNt});var P$e={};ir(P$e,{diagram:()=>pNt});var pNt,O$e=F(()=>{"use strict";w$e();kX();I$e();N$e();pNt={parser:C$e,db:wx,renderer:D$e,styles:M$e}});var EX,AX,RX,_X,fD,Ip,kx,yNt,F$e,z$e,vNt,xNt,bNt,TNt,CNt,wNt,kNt,SNt,ENt,sn,ju=F(()=>{"use strict";Xt();vt();Nn();Vr();EX="",AX="",RX="",_X=[],fD=new Map,Ip=o(e=>mr(e,Ae()),"sanitizeText"),kx=o(e=>{switch(e.type){case"terminal":return{...e,value:Ip(e.value)};case"nonterminal":return{...e,name:Ip(e.name)};case"sequence":return{...e,elements:e.elements.map(kx)};case"choice":return{...e,alternatives:e.alternatives.map(kx)};case"optional":return{...e,element:kx(e.element)};case"repetition":return{...e,element:kx(e.element),separator:e.separator?kx(e.separator):void 0};case"special":return{...e,text:Ip(e.text)}}},"sanitizeAstNode"),yNt=o(()=>{EX="",AX="",RX="",_X.length=0,fD.clear(),yr(),Z.debug("[Railroad] Database cleared")},"clear"),F$e=o(e=>{EX=Ip(e),Z.debug("[Railroad] Title set:",e)},"setTitle"),z$e=o(()=>EX,"getTitle"),vNt=o(e=>{let t={...e,name:Ip(e.name),definition:kx(e.definition),comment:e.comment?Ip(e.comment):void 0};Z.debug("[Railroad] Adding rule:",t.name),fD.has(t.name)&&Z.warn(`[Railroad] Rule '${t.name}' is already defined. Overwriting.`),_X.push(t),fD.set(t.name,t)},"addRule"),xNt=o(()=>_X,"getRules"),bNt=o(e=>fD.get(e),"getRule"),TNt=o(e=>{AX=Ip(e).replace(/^\s+/g,""),Z.debug("[Railroad] Accessibility title set:",e)},"setAccTitle"),CNt=o(()=>AX,"getAccTitle"),wNt=o(e=>{RX=Ip(e).replace(/\n\s+/g,`
+`),Z.debug("[Railroad] Accessibility description set:",e)},"setAccDescription"),kNt=o(()=>RX,"getAccDescription"),SNt=F$e,ENt=z$e,sn={clear:yNt,setTitle:F$e,getTitle:z$e,addRule:vNt,getRules:xNt,getRule:bNt,setAccTitle:TNt,getAccTitle:CNt,setAccDescription:wNt,getAccDescription:kNt,setDiagramTitle:SNt,getDiagramTitle:ENt}});var ANt,Sx,RNt,_Nt,G$e,V$e=F(()=>{"use strict";Xa();vt();Hs();ju();ANt=Vv().Railroad.parser.LangiumParser,Sx=o(e=>{switch(e.$type){case"RailroadTerminalExpr":return{type:"terminal",value:e.value};case"RailroadNonTerminalExpr":return{type:"nonterminal",name:e.name};case"RailroadSpecialExpr":return{type:"special",text:e.text};case"RailroadSequenceExpr":{let t=e.elements.map(Sx);return t.length===1?t[0]:{type:"sequence",elements:t}}case"RailroadChoiceExpr":{let t=e.alternatives.map(Sx);return t.length===1?t[0]:{type:"choice",alternatives:t}}case"RailroadOptionalExpr":return{type:"optional",element:Sx(e.element)};case"RailroadOneOrMoreExpr":return{type:"repetition",element:Sx(e.element),min:1,max:1/0};case"RailroadZeroOrMoreExpr":return{type:"repetition",element:Sx(e.element),min:0,max:1/0};default:throw new Error(`Unsupported railroad expression: ${e.$type}`)}},"transformExpression"),RNt=o(e=>({name:e.name,definition:Sx(e.definition)}),"transformRule"),_Nt=o(e=>{Gn(e,sn),e.title&&sn.setTitle(e.title),e.rules.map(t=>sn.addRule(RNt(t)))},"populateDb"),G$e={parse:o(e=>{sn.clear(),Z.debug("[Railroad Parser] Starting Langium parse");let t=ANt.parse(e);if(t.lexerErrors.length>0||t.parserErrors.length>0)throw new ad(t);let r=t.value;Z.debug("[Railroad Parser] Parsed rules:",r.rules.length),_Nt(r),Z.debug("[Railroad Parser] Parse complete")},"parse"),parser:{yy:sn}}});var Na,W$e=F(()=>{"use strict";Na={compactMode:!1,padding:10,verticalSeparation:8,horizontalSeparation:10,arcRadius:10,fontSize:14,fontFamily:"monospace",terminalFill:"#FFFFC0",terminalStroke:"#000000",terminalTextColor:"#000000",nonTerminalFill:"#FFFFFF",nonTerminalStroke:"#000000",nonTerminalTextColor:"#000000",lineColor:"#000000",strokeWidth:2,markerFill:"#000000",commentFill:"#E8E8E8",commentStroke:"#888888",commentTextColor:"#666666",specialFill:"#F0E0FF",specialStroke:"#8800CC",ruleNameColor:"#000066",showMarkers:!0,markerRadius:5}});var LNt,DNt,INt,q$e,MNt,NNt,Vn,H$e,O0,PNt,ONt,pD,Mp,Ex=F(()=>{"use strict";ur();Pc();W$e();LNt=/^#(?:[\da-f]{3,4}|[\da-f]{6}|[\da-f]{8})$|^(?:rgb|rgba|hsl|hsla|hwb|lab|lch|oklab|oklch)\([\d\s%+,./-]+\)$|^[a-z]+$/i,DNt=/^[\w "',.-]+$/,INt=new Set(["compactMode","padding","verticalSeparation","horizontalSeparation","arcRadius","fontSize","fontFamily","terminalFill","terminalStroke","terminalTextColor","nonTerminalFill","nonTerminalStroke","nonTerminalTextColor","lineColor","strokeWidth","markerFill","commentFill","commentStroke","commentTextColor","specialFill","specialStroke","ruleNameColor","showMarkers","markerRadius"]),q$e=o(e=>e?Object.keys(e).every(t=>t==="railroad"||INt.has(t)):!1,"isRailroadStyleOptions"),MNt=o(e=>e?"railroad"in e&&e.railroad?e.railroad:q$e(e)?e:{}:{},"extractRailroadOverrides"),NNt=o(e=>{if(!e||q$e(e))return{};let{railroad:t,svgId:r,theme:n,look:i,...a}=e;return a},"extractThemeOverrides"),Vn=o((e,t)=>{if(typeof e!="string")return t;let r=e.trim();return LNt.test(r)?r:t},"sanitizeColorValue"),H$e=o((e,t)=>{if(typeof e!="string")return t;let r=e.trim();return DNt.test(r)?r:t},"sanitizeFontFamilyValue"),O0=o((e,t)=>{let r=typeof e=="number"?e:typeof e=="string"?Number.parseFloat(e):Number.NaN;return Number.isFinite(r)&&r>=0?r:t},"sanitizeNumberValue"),PNt=o(e=>{let t=typeof e=="number"?e:typeof e=="string"?Number.parseFloat(e):Number.NaN;return Number.isFinite(t)&&t>0?t:void 0},"parseThemeFontSize"),ONt=o(e=>{let t=H$e(e.fontFamily,Na.fontFamily),r=PNt(e.fontSize)??Na.fontSize;return{...Na,fontFamily:t,fontSize:r,terminalFill:Vn(e.secondBkg??e.secondaryColor,Na.terminalFill),terminalStroke:Vn(e.secondaryBorderColor??e.lineColor,Na.terminalStroke),terminalTextColor:Vn(e.secondaryTextColor??e.textColor,Na.terminalTextColor),nonTerminalFill:Vn(e.mainBkg??e.background,Na.nonTerminalFill),nonTerminalStroke:Vn(e.primaryBorderColor??e.lineColor,Na.nonTerminalStroke),nonTerminalTextColor:Vn(e.primaryTextColor??e.textColor,Na.nonTerminalTextColor),lineColor:Vn(e.lineColor,Na.lineColor),markerFill:Vn(e.lineColor,Na.markerFill),commentFill:Vn(e.labelBackground??e.tertiaryColor,Na.commentFill),commentStroke:Vn(e.tertiaryBorderColor??e.lineColor,Na.commentStroke),commentTextColor:Vn(e.tertiaryTextColor??e.textColor,Na.commentTextColor),specialFill:Vn(e.tertiaryColor??e.secondaryColor,Na.specialFill),specialStroke:Vn(e.tertiaryBorderColor??e.secondaryBorderColor,Na.specialStroke),ruleNameColor:Vn(e.titleColor??e.textColor,Na.ruleNameColor)}},"buildThemeDefaults"),pD=o(e=>{let t=_t(),r={...ma(),...t.themeVariables??{},...NNt(e)},n=ONt(r),i={...t.railroad??{},...MNt(e)};return{compactMode:i.compactMode??n.compactMode,padding:O0(i.padding,n.padding),verticalSeparation:O0(i.verticalSeparation,n.verticalSeparation),horizontalSeparation:O0(i.horizontalSeparation,n.horizontalSeparation),arcRadius:O0(i.arcRadius,n.arcRadius),fontSize:O0(i.fontSize,n.fontSize),fontFamily:H$e(i.fontFamily,n.fontFamily),terminalFill:Vn(i.terminalFill,n.terminalFill),terminalStroke:Vn(i.terminalStroke,n.terminalStroke),terminalTextColor:Vn(i.terminalTextColor,n.terminalTextColor),nonTerminalFill:Vn(i.nonTerminalFill,n.nonTerminalFill),nonTerminalStroke:Vn(i.nonTerminalStroke,n.nonTerminalStroke),nonTerminalTextColor:Vn(i.nonTerminalTextColor,n.nonTerminalTextColor),lineColor:Vn(i.lineColor,n.lineColor),strokeWidth:O0(i.strokeWidth,n.strokeWidth),markerFill:Vn(i.markerFill,n.markerFill),commentFill:Vn(i.commentFill,n.commentFill),commentStroke:Vn(i.commentStroke,n.commentStroke),commentTextColor:Vn(i.commentTextColor,n.commentTextColor),specialFill:Vn(i.specialFill,n.specialFill),specialStroke:Vn(i.specialStroke,n.specialStroke),ruleNameColor:Vn(i.ruleNameColor,n.ruleNameColor),showMarkers:i.showMarkers??n.showMarkers,markerRadius:O0(i.markerRadius,n.markerRadius)}},"buildRailroadStyleOptions"),Mp=o(e=>{let{fontFamily:t,fontSize:r,terminalFill:n,terminalStroke:i,terminalTextColor:a,nonTerminalFill:s,nonTerminalStroke:l,nonTerminalTextColor:u,lineColor:h,strokeWidth:d,markerFill:f,commentFill:p,commentStroke:m,commentTextColor:g,specialFill:y,specialStroke:v,ruleNameColor:x}=pD(e);return`
+  .railroad-diagram {
+    font-family: ${t};
+    font-size: ${r}px;
+  }
+
+  .railroad-terminal rect {
+    fill: ${n};
+    stroke: ${i};
+    stroke-width: ${d}px;
+  }
+
+  .railroad-terminal text {
+    fill: ${a};
+    font-family: ${t};
+    font-size: ${r}px;
+    text-anchor: middle;
+    dominant-baseline: middle;
+  }
+
+  .railroad-nonterminal rect {
+    fill: ${s};
+    stroke: ${l};
+    stroke-width: ${d}px;
+  }
+
+  .railroad-nonterminal text {
+    fill: ${u};
+    font-family: ${t};
+    font-size: ${r}px;
+    text-anchor: middle;
+    dominant-baseline: middle;
+  }
+
+  .railroad-line {
+    stroke: ${h};
+    stroke-width: ${d}px;
+    fill: none;
+  }
+
+  .railroad-start circle,
+  .railroad-end circle {
+    fill: ${f};
+  }
+
+  .railroad-comment ellipse {
+    fill: ${p};
+    stroke: ${m};
+    stroke-width: ${d}px;
+  }
+
+  .railroad-comment text {
+    fill: ${g};
+    font-style: italic;
+    font-family: ${t};
+    font-size: ${r}px;
+    text-anchor: middle;
+    dominant-baseline: middle;
+  }
+
+  .railroad-special rect {
+    fill: ${y};
+    stroke: ${v};
+    stroke-width: ${d}px;
+    stroke-dasharray: 5,3;
+  }
+
+  .railroad-special text {
+    fill: ${u};
+    font-family: ${t};
+    font-size: ${r}px;
+    text-anchor: middle;
+    dominant-baseline: middle;
+  }
+
+  .railroad-rule-name {
+    font-weight: bold;
+    fill: ${x};
+    font-family: ${t};
+    font-size: ${r}px;
+  }
+
+  .railroad-group {
+    /* Grouping container, no specific styles */
+  }
+`},"getStyles")});var _o,LX,U$e,BNt,Np,lk=F(()=>{"use strict";vt();ur();Ka();$n();ju();Ex();_o=class{constructor(){this.d=""}static{o(this,"PathBuilder")}moveTo(t,r){return this.d+=`M ${t} ${r} `,this}lineTo(t,r){return this.d+=`L ${t} ${r} `,this}horizontalTo(t){return this.d+=`H ${t} `,this}verticalTo(t){return this.d+=`V ${t} `,this}arcTo(t,r,n,i,a,s,l){return this.d+=`A ${t} ${r} ${n} ${i?1:0} ${a?1:0} ${s} ${l} `,this}build(){return this.d.trim()}},LX=class{constructor(t,r=pD()){this.textCache=new Map;this.svg=t,this.config=r}static{o(this,"RailroadRenderer")}measureText(t){if(this.textCache.has(t))return this.textCache.get(t);let r=this.svg.append("text").attr("font-family",this.config.fontFamily).attr("font-size",this.config.fontSize).text(t),n=r.node().getBBox(),i={width:n.width,height:n.height};return r.remove(),this.textCache.set(t,i),i}renderTerminal(t,r){let n=this.measureText(r),i=n.width+this.config.padding*2,a=n.height+this.config.padding*2,s=t.append("g").attr("class","railroad-terminal");return s.append("rect").attr("x",0).attr("y",0).attr("width",i).attr("height",a).attr("rx",10).attr("ry",10),s.append("text").attr("x",i/2).attr("y",a/2).text(r),{element:s.node(),dimensions:{width:i,height:a,up:a/2,down:a/2}}}renderNonTerminal(t,r){let n=this.measureText(r),i=n.width+this.config.padding*2,a=n.height+this.config.padding*2,s=t.append("g").attr("class","railroad-nonterminal");return s.append("rect").attr("x",0).attr("y",0).attr("width",i).attr("height",a),s.append("text").attr("x",i/2).attr("y",a/2).text(r),{element:s.node(),dimensions:{width:i,height:a,up:a/2,down:a/2}}}renderSequence(t,r){let n=r.map(h=>this.renderExpression(t,h)),i=0,a=0,s=0;for(let h of n)i+=h.dimensions.width,a=Math.max(a,h.dimensions.up),s=Math.max(s,h.dimensions.down);i+=(n.length-1)*this.config.horizontalSeparation;let l=t.append("g").attr("class","railroad-sequence"),u=0;for(let h=0;h<n.length;h++){let d=n[h],f=a-d.dimensions.up;if(l.node().appendChild(d.element).setAttribute("transform",`translate(${u}, ${f})`),h<n.length-1){let m=u+d.dimensions.width,g=m+this.config.horizontalSeparation,y=a;l.append("path").attr("class","railroad-line").attr("d",new _o().moveTo(m,y).lineTo(g,y).build())}u+=d.dimensions.width+this.config.horizontalSeparation}return{element:l.node(),dimensions:{width:i,height:a+s,up:a,down:s}}}renderChoice(t,r){let n=r.map(p=>this.renderExpression(t,p)),i=0,a=0;for(let p of n)i=Math.max(i,p.dimensions.width),a+=p.dimensions.height;a+=(n.length-1)*this.config.verticalSeparation;let s=this.config.arcRadius,l=s*4,u=i+l,h=t.append("g").attr("class","railroad-choice"),d=0,f=a/2;for(let p of n){let m=d,g=m+p.dimensions.up,y=s*2+(i-p.dimensions.width)/2;h.node().appendChild(p.element).setAttribute("transform",`translate(${y}, ${m})`);let x=new _o,b=g>f;g===f?x.moveTo(0,f).lineTo(y,g):x.moveTo(0,f).arcTo(s,s,0,!1,b,s,f+(b?s:-s)).lineTo(s,g-(b?s:-s)).arcTo(s,s,0,!1,!b,s*2,g).lineTo(y,g),h.append("path").attr("class","railroad-line").attr("d",x.build());let T=new _o,k=y+p.dimensions.width,C=u-s*2;g===f?T.moveTo(k,g).lineTo(u,f):T.moveTo(k,g).lineTo(C,g).arcTo(s,s,0,!1,!b,u-s,g+(b?-s:s)).lineTo(u-s,f+(b?s:-s)).arcTo(s,s,0,!1,b,u,f),h.append("path").attr("class","railroad-line").attr("d",T.build()),d+=p.dimensions.height+this.config.verticalSeparation}return{element:h.node(),dimensions:{width:u,height:a,up:f,down:a-f}}}renderOptional(t,r){let n=this.renderExpression(t,r),i=this.config.arcRadius,a=i*2,s=n.dimensions.width+i*4,l=n.dimensions.height+a,u=t.append("g").attr("class","railroad-optional"),h=i*2,d=a;u.node().appendChild(n.element).setAttribute("transform",`translate(${h}, ${d})`);let p=d+n.dimensions.up,m=new _o().moveTo(0,p).lineTo(i*2,p);u.append("path").attr("class","railroad-line").attr("d",m.build());let g=new _o().moveTo(h+n.dimensions.width,p).lineTo(s,p);u.append("path").attr("class","railroad-line").attr("d",g.build());let y=new _o().moveTo(0,p).arcTo(i,i,0,!1,!1,i,p-i).lineTo(i,i).arcTo(i,i,0,!1,!0,i*2,0).lineTo(s-i*2,0).arcTo(i,i,0,!1,!0,s-i,i).lineTo(s-i,p-i).arcTo(i,i,0,!1,!1,s,p);return u.append("path").attr("class","railroad-line").attr("d",y.build()),{element:u.node(),dimensions:{width:s,height:l,up:p,down:l-p}}}renderRepetition(t,r,n){let i=this.renderExpression(t,r),a=this.config.arcRadius,s=a*2,l=i.dimensions.width+a*4,u=n===0,h=i.dimensions.height+s+(u?s:0),d=t.append("g").attr("class","railroad-repetition"),f=a*2,p=u?s:0;d.node().appendChild(i.element).setAttribute("transform",`translate(${f}, ${p})`);let g=p+i.dimensions.up;d.append("path").attr("class","railroad-line").attr("d",new _o().moveTo(0,g).lineTo(a*2,g).build()),d.append("path").attr("class","railroad-line").attr("d",new _o().moveTo(f+i.dimensions.width,g).lineTo(l,g).build());let y=p+i.dimensions.height+a,v=new _o().moveTo(f+i.dimensions.width,g).arcTo(a,a,0,!1,!0,f+i.dimensions.width+a,g+a).lineTo(f+i.dimensions.width+a,y).arcTo(a,a,0,!1,!0,f+i.dimensions.width,y+a).lineTo(a*2,y+a).arcTo(a,a,0,!1,!0,a,y).lineTo(a,g+a).arcTo(a,a,0,!1,!0,a*2,g);if(d.append("path").attr("class","railroad-line").attr("d",v.build()),u){let x=new _o().moveTo(0,g).arcTo(a,a,0,!1,!1,a,g-a).lineTo(a,a).arcTo(a,a,0,!1,!0,a*2,0).lineTo(l-a*2,0).arcTo(a,a,0,!1,!0,l-a,a).lineTo(l-a,g-a).arcTo(a,a,0,!1,!1,l,g);d.append("path").attr("class","railroad-line").attr("d",x.build())}return{element:d.node(),dimensions:{width:l,height:h,up:g,down:h-g}}}renderSpecial(t,r){let n=this.measureText("? "+r+" ?"),i=n.width+this.config.padding*2,a=n.height+this.config.padding*2,s=t.append("g").attr("class","railroad-special");return s.append("rect").attr("x",0).attr("y",0).attr("width",i).attr("height",a),s.append("text").attr("x",i/2).attr("y",a/2).text("? "+r+" ?"),{element:s.node(),dimensions:{width:i,height:a,up:a/2,down:a/2}}}renderExpression(t,r){switch(r.type){case"terminal":return this.renderTerminal(t,r.value);case"nonterminal":return this.renderNonTerminal(t,r.name);case"sequence":return this.renderSequence(t,r.elements);case"choice":return this.renderChoice(t,r.alternatives);case"optional":return this.renderOptional(t,r.element);case"repetition":return this.renderRepetition(t,r.element,r.min);case"special":return this.renderSpecial(t,r.text);default:throw new Error(`Unknown node type: ${r.type}`)}}renderRule(t,r){let n=this.svg.append("g").attr("class","railroad-rule").attr("transform",`translate(0, ${r})`),i=t.name+" =",a=this.measureText(i).width+20,s=a+20,l=n.append("g"),u=this.renderExpression(l,t.definition),h=Math.max(20,u.dimensions.up),d=h-u.dimensions.up;return l.attr("transform",`translate(${s}, ${d})`),n.append("g").attr("class","railroad-rule-name-group").append("text").attr("class","railroad-rule-name").attr("x",0).attr("y",h).text(i),n.append("g").attr("class","railroad-start").append("circle").attr("cx",a).attr("cy",h).attr("r",this.config.markerRadius),n.append("g").attr("class","railroad-end").append("circle").attr("cx",s+u.dimensions.width+10).attr("cy",h).attr("r",this.config.markerRadius),n.append("path").attr("class","railroad-line").attr("d",new _o().moveTo(a+this.config.markerRadius,h).lineTo(s,h).build()),n.append("path").attr("class","railroad-line").attr("d",new _o().moveTo(s+u.dimensions.width,h).lineTo(s+u.dimensions.width+10-this.config.markerRadius,h).build()),{height:Math.max(40,d+u.dimensions.height+this.config.padding*2),width:s+u.dimensions.width+10+this.config.markerRadius}}renderDiagram(t){let r=this.config.padding,n=0;for(let i of t){let a=this.renderRule(i,r);r+=a.height+this.config.verticalSeparation,n=Math.max(n,a.width)}return{width:n+this.config.padding*2,height:r+this.config.padding}}},U$e=o((e,t,r)=>{Wr(e,t.height,t.width,r),e.attr("viewBox",`0 0 ${t.width} ${t.height}`)},"configureRailroadSvgSize"),BNt=o((e,t,r)=>{Z.debug(`[Railroad] Rendering diagram
+`+e);try{let n=xn(t);n.attr("class","railroad-diagram");let a=_t().railroad?.useMaxWidth??!0,s=sn.getRules();if(Z.debug(`[Railroad] Rendering ${s.length} rules`),s.length===0){Z.warn("[Railroad] No rules to render"),U$e(n,{height:100,width:200},a);return}let u=new LX(n,pD()).renderDiagram(s);U$e(n,u,a),Z.debug("[Railroad] Render complete")}catch(n){throw Z.error("[Railroad] Render error:",n),n}},"draw"),Np={draw:BNt}});var j$e={};ir(j$e,{default:()=>$Nt,diagram:()=>Y$e});var Y$e,$Nt,X$e=F(()=>{"use strict";V$e();ju();lk();Ex();Y$e={parser:G$e,db:sn,renderer:Np,styles:Mp},$Nt=Y$e});var GNt,mD,VNt,Q$e,WNt,qNt,HNt,UNt,J$e,eFe=F(()=>{"use strict";Xa();vt();Hs();ju();GNt=Wv().RailroadEbnf.parser.LangiumParser,mD=o(e=>{let t=e.alternatives.map(VNt);return t.length===1?t[0]:{type:"choice",alternatives:t}},"transformChoice"),VNt=o(e=>{let t=e.elements.map(qNt);return t.length===1?t[0]:{type:"sequence",elements:t}},"transformSequence"),Q$e=o(e=>{switch(e.$type){case"EbnfTerminal":return{type:"terminal",value:e.value};case"EbnfNonTerminal":return{type:"nonterminal",name:e.name};case"EbnfSpecial":return{type:"special",text:e.text};case"EbnfGroup":return mD(e.element);case"EbnfOptional":return{type:"optional",element:mD(e.element)};case"EbnfRepetition":return{type:"repetition",element:mD(e.element),min:0,max:1/0};default:throw new Error(`Unsupported EBNF primary node: ${e.$type}`)}},"transformPrimary"),WNt=o((e,t)=>{switch(t.$type){case"EbnfOptionalPostfix":return{type:"optional",element:e};case"EbnfZeroOrMorePostfix":return{type:"repetition",element:e,min:0,max:1/0};case"EbnfOneOrMorePostfix":return{type:"repetition",element:e,min:1,max:1/0};case"EbnfExceptionPostfix":return{type:"sequence",elements:[e,{type:"terminal",value:"-"},Q$e(t.except)]};default:throw new Error(`Unsupported EBNF postfix node: ${t.$type}`)}},"transformPostfix"),qNt=o(e=>e.postfixes.reduce((t,r)=>WNt(t,r),Q$e(e.base)),"transformTerm"),HNt=o(e=>({name:e.name,definition:mD(e.definition)}),"transformRule"),UNt=o(e=>{Gn(e,sn),e.title&&sn.setTitle(e.title),e.rules.map(t=>sn.addRule(HNt(t)))},"populateDb"),J$e={parse:o(e=>{sn.clear(),Z.debug("[EBNF Parser] Starting Langium parse");let t=GNt.parse(e);if(t.lexerErrors.length>0||t.parserErrors.length>0)throw new ad(t);let r=t.value;Z.debug("[EBNF Parser] Parsed rules:",r.rules.length),UNt(r),Z.debug("[EBNF Parser] Parse complete")},"parse"),parser:{yy:sn}}});var tFe={};ir(tFe,{diagram:()=>YNt});var YNt,rFe=F(()=>{"use strict";eFe();ju();lk();Ex();YNt={parser:J$e,db:sn,renderer:Np,styles:Mp}});var KNt,DX,ZNt,QNt,JNt,ePt,tPt,rPt,aFe,sFe=F(()=>{"use strict";Xa();vt();Hs();ju();KNt=qv().RailroadAbnf.parser.LangiumParser,DX=o(e=>{let t=e.alternatives.map(ZNt);return t.length===1?t[0]:{type:"choice",alternatives:t}},"transformAlternation"),ZNt=o(e=>{let t=e.elements.map(JNt);return t.length===1?t[0]:{type:"sequence",elements:t}},"transformConcatenation"),QNt=o(e=>{if(e.includes("*")){let[r,n]=e.split("*"),i=r?parseInt(r,10):0,a=n?parseInt(n,10):1/0;return{min:i,max:a}}let t=parseInt(e,10);return{min:t,max:t}},"parseRepeat"),JNt=o(e=>{let t=ePt(e.primary);if(!e.repeat)return t;let{min:r,max:n}=QNt(e.repeat);return r===0&&n===1?{type:"optional",element:t}:{type:"repetition",element:t,min:r,max:n}},"transformElement"),ePt=o(e=>{switch(e.$type){case"AbnfStringLiteral":return{type:"terminal",value:e.value};case"AbnfNumVal":return{type:"terminal",value:e.value};case"AbnfRuleName":return{type:"nonterminal",name:e.name};case"AbnfGroup":return DX(e.element);case"AbnfOptionalGroup":return{type:"optional",element:DX(e.element)};default:throw new Error(`Unsupported ABNF primary node: ${e.$type}`)}},"transformPrimary"),tPt=o(e=>({name:e.name,definition:DX(e.definition)}),"transformRule"),rPt=o(e=>{Gn(e,sn),e.title&&sn.setTitle(e.title),e.rules.map(t=>sn.addRule(tPt(t)))},"populateDb"),aFe={parse:o(e=>{sn.clear(),Z.debug("[ABNF Parser] Starting Langium parse");let t=KNt.parse(e);if(t.lexerErrors.length>0||t.parserErrors.length>0)throw new ad(t);let r=t.value;Z.debug("[ABNF Parser] Parsed rules:",r.rules.length),rPt(r),Z.debug("[ABNF Parser] Parse complete")},"parse"),parser:{yy:sn}}});var oFe={};ir(oFe,{diagram:()=>nPt});var nPt,lFe=F(()=>{"use strict";sFe();ju();lk();Ex();nPt={parser:aFe,db:sn,renderer:Np,styles:Mp}});var sPt,dFe,oPt,lPt,hFe,cPt,uPt,hPt,dPt,fFe,pFe=F(()=>{"use strict";Xa();vt();Hs();ju();sPt=Hv().RailroadPeg.parser.LangiumParser,dFe=o(e=>{let t=e.alternatives.map(oPt);return t.length===1?t[0]:{type:"choice",alternatives:t}},"transformOrderedChoice"),oPt=o(e=>{let t=e.elements.map(lPt);return t.length===1?t[0]:{type:"sequence",elements:t}},"transformSequence"),lPt=o(e=>{let t=cPt(e.suffix);return e.operator?{type:"special",text:e.operator==="&"?`&${hFe(t)}`:`!${hFe(t)}`}:t},"transformPrefix"),hFe=o(e=>{switch(e.type){case"terminal":return`"${e.value}"`;case"nonterminal":return e.name;case"special":return e.text;default:return"(...)"}},"nodeToLabel"),cPt=o(e=>{let t=uPt(e.primary);if(!e.operator)return t;switch(e.operator){case"?":return{type:"optional",element:t};case"*":return{type:"repetition",element:t,min:0,max:1/0};case"+":return{type:"repetition",element:t,min:1,max:1/0};default:throw new Error(`Unsupported PEG suffix operator: ${e.operator}`)}},"transformSuffix"),uPt=o(e=>{switch(e.$type){case"PegLiteral":return{type:"terminal",value:e.value};case"PegIdentifier":return{type:"nonterminal",name:e.name};case"PegGroup":return dFe(e.element);case"PegAny":return{type:"special",text:e.dot};default:throw new Error(`Unsupported PEG primary node: ${e.$type}`)}},"transformPrimary"),hPt=o(e=>({name:e.name,definition:dFe(e.definition)}),"transformRule"),dPt=o(e=>{Gn(e,sn),e.title&&sn.setTitle(e.title),e.rules.map(t=>sn.addRule(hPt(t)))},"populateDb"),fFe={parse:o(e=>{sn.clear(),Z.debug("[PEG Parser] Starting Langium parse");let t=sPt.parse(e);if(t.lexerErrors.length>0||t.parserErrors.length>0)throw new ad(t);let r=t.value;Z.debug("[PEG Parser] Parsed rules:",r.rules.length),dPt(r),Z.debug("[PEG Parser] Parse complete")},"parse"),parser:{yy:sn}}});var mFe={};ir(mFe,{diagram:()=>fPt});var fPt,gFe=F(()=>{"use strict";pFe();ju();lk();Ex();fPt={parser:fFe,db:sn,renderer:Np,styles:Mp}});var tOt={};ir(tOt,{default:()=>eOt});Vl();h8();Up();var Bje=o(e=>/^\s*C4Context|C4Container|C4Component|C4Dynamic|C4Deployment/.test(e),"detector"),$je=o(async()=>{let{diagram:e}=await Promise.resolve().then(()=>(gae(),mae));return{id:"c4",diagram:e}},"loader"),Fje={id:"c4",detector:Bje,loader:$je},yae=Fje;var mTe="flowchart",n0t=o((e,t)=>t?.flowchart?.defaultRenderer==="dagre-wrapper"||t?.flowchart?.defaultRenderer==="elk"?!1:/^\s*graph/.test(e),"detector"),i0t=o(async()=>{let{diagram:e}=await Promise.resolve().then(()=>(oC(),LA));return{id:mTe,diagram:e}},"loader"),a0t={id:mTe,detector:n0t,loader:i0t},gTe=a0t;var yTe="flowchart-v2",s0t=o((e,t)=>t?.flowchart?.defaultRenderer==="dagre-d3"?!1:(t?.flowchart?.defaultRenderer==="elk"&&(t.layout="elk"),/^\s*graph/.test(e)&&t?.flowchart?.defaultRenderer==="dagre-wrapper"?!0:/^\s*flowchart/.test(e)),"detector"),o0t=o(async()=>{let{diagram:e}=await Promise.resolve().then(()=>(oC(),LA));return{id:yTe,diagram:e}},"loader"),l0t={id:yTe,detector:s0t,loader:o0t},vTe=l0t;var wTe="swimlane",h0t=o(e=>/^\s*swimlane-beta\b/.test(e),"detector"),d0t=o(async()=>{let{diagram:e}=await Promise.resolve().then(()=>(CTe(),TTe));return{id:wTe,diagram:e}},"loader"),f0t={id:wTe,detector:h0t,loader:d0t},kTe=f0t;var v0t=o(e=>/^\s*erDiagram/.test(e),"detector"),x0t=o(async()=>{let{diagram:e}=await Promise.resolve().then(()=>(MTe(),ITe));return{id:"er",diagram:e}},"loader"),b0t={id:"er",detector:v0t,loader:x0t},NTe=b0t;var ZDe="gitGraph",H3t=o(e=>/^\s*gitGraph/.test(e),"detector"),U3t=o(async()=>{let{diagram:e}=await Promise.resolve().then(()=>(KDe(),XDe));return{id:ZDe,diagram:e}},"loader"),Y3t={id:ZDe,detector:H3t,loader:U3t},QDe=Y3t;var D7e="gantt",P5t=o(e=>/^\s*gantt/.test(e),"detector"),O5t=o(async()=>{let{diagram:e}=await Promise.resolve().then(()=>(L7e(),_7e));return{id:D7e,diagram:e}},"loader"),B5t={id:D7e,detector:P5t,loader:O5t},I7e=B5t;var G7e="info",V5t=o(e=>/^\s*info/.test(e),"detector"),W5t=o(async()=>{let{diagram:e}=await Promise.resolve().then(()=>(z7e(),F7e));return{id:G7e,diagram:e}},"loader"),V7e={id:G7e,detector:V5t,loader:W5t};var rAt=o(e=>/^\s*pie/.test(e),"detector"),nAt=o(async()=>{let{diagram:e}=await Promise.resolve().then(()=>(Z7e(),K7e));return{id:"pie",diagram:e}},"loader"),Q7e={id:"pie",detector:rAt,loader:nAt};var h8e="quadrantChart",bAt=o(e=>/^\s*quadrantChart/.test(e),"detector"),TAt=o(async()=>{let{diagram:e}=await Promise.resolve().then(()=>(u8e(),c8e));return{id:h8e,diagram:e}},"loader"),CAt={id:h8e,detector:bAt,loader:TAt},d8e=CAt;var F8e="xychart",FAt=o(e=>/^\s*xychart(-beta)?/.test(e),"detector"),zAt=o(async()=>{let{diagram:e}=await Promise.resolve().then(()=>($8e(),B8e));return{id:F8e,diagram:e}},"loader"),GAt={id:F8e,detector:FAt,loader:zAt},z8e=GAt;var X8e="requirement",UAt=o(e=>/^\s*requirement(Diagram)?/.test(e),"detector"),YAt=o(async()=>{let{diagram:e}=await Promise.resolve().then(()=>(j8e(),Y8e));return{id:X8e,diagram:e}},"loader"),jAt={id:X8e,detector:UAt,loader:YAt},K8e=jAt;var pIe="sequence",q6t=o(e=>/^\s*sequenceDiagram/.test(e),"detector"),H6t=o(async()=>{let{diagram:e}=await Promise.resolve().then(()=>(fIe(),dIe));return{id:pIe,diagram:e}},"loader"),U6t={id:pIe,detector:q6t,loader:H6t},mIe=U6t;var TIe="class",Q6t=o((e,t)=>t?.class?.defaultRenderer==="dagre-wrapper"?!1:/^\s*classDiagram/.test(e),"detector"),J6t=o(async()=>{let{diagram:e}=await Promise.resolve().then(()=>(bIe(),xIe));return{id:TIe,diagram:e}},"loader"),eRt={id:TIe,detector:Q6t,loader:J6t},CIe=eRt;var SIe="classDiagram",rRt=o((e,t)=>/^\s*classDiagram/.test(e)&&t?.class?.defaultRenderer==="dagre-wrapper"?!0:/^\s*classDiagram-v2/.test(e),"detector"),nRt=o(async()=>{let{diagram:e}=await Promise.resolve().then(()=>(kIe(),wIe));return{id:SIe,diagram:e}},"loader"),iRt={id:SIe,detector:rRt,loader:nRt},EIe=iRt;var iMe="state",LRt=o((e,t)=>t?.state?.defaultRenderer==="dagre-wrapper"?!1:/^\s*stateDiagram/.test(e),"detector"),DRt=o(async()=>{let{diagram:e}=await Promise.resolve().then(()=>(nMe(),rMe));return{id:iMe,diagram:e}},"loader"),IRt={id:iMe,detector:LRt,loader:DRt},aMe=IRt;var lMe="stateDiagram",NRt=o((e,t)=>!!(/^\s*stateDiagram-v2/.test(e)||/^\s*stateDiagram/.test(e)&&t?.state?.defaultRenderer==="dagre-wrapper"),"detector"),PRt=o(async()=>{let{diagram:e}=await Promise.resolve().then(()=>(oMe(),sMe));return{id:lMe,diagram:e}},"loader"),ORt={id:lMe,detector:NRt,loader:PRt},cMe=ORt;var kMe="journey",n_t=o(e=>/^\s*journey/.test(e),"detector"),i_t=o(async()=>{let{diagram:e}=await Promise.resolve().then(()=>(wMe(),CMe));return{id:kMe,diagram:e}},"loader"),a_t={id:kMe,detector:n_t,loader:i_t},SMe=a_t;vt();Ka();$n();var s_t=o((e,t,r)=>{Z.debug(`rendering svg for syntax error
+`);let n=xn(t),i=n.append("g");n.attr("viewBox","0 0 2412 512"),Wr(n,100,512,!0),i.append("path").attr("class","error-icon").attr("d","m411.313,123.313c6.25-6.25 6.25-16.375 0-22.625s-16.375-6.25-22.625,0l-32,32-9.375,9.375-20.688-20.688c-12.484-12.5-32.766-12.5-45.25,0l-16,16c-1.261,1.261-2.304,2.648-3.31,4.051-21.739-8.561-45.324-13.426-70.065-13.426-105.867,0-192,86.133-192,192s86.133,192 192,192 192-86.133 192-192c0-24.741-4.864-48.327-13.426-70.065 1.402-1.007 2.79-2.049 4.051-3.31l16-16c12.5-12.492 12.5-32.758 0-45.25l-20.688-20.688 9.375-9.375 32.001-31.999zm-219.313,100.687c-52.938,0-96,43.063-96,96 0,8.836-7.164,16-16,16s-16-7.164-16-16c0-70.578 57.422-128 128-128 8.836,0 16,7.164 16,16s-7.164,16-16,16z"),i.append("path").attr("class","error-icon").attr("d","m459.02,148.98c-6.25-6.25-16.375-6.25-22.625,0s-6.25,16.375 0,22.625l16,16c3.125,3.125 7.219,4.688 11.313,4.688 4.094,0 8.188-1.563 11.313-4.688 6.25-6.25 6.25-16.375 0-22.625l-16.001-16z"),i.append("path").attr("class","error-icon").attr("d","m340.395,75.605c3.125,3.125 7.219,4.688 11.313,4.688 4.094,0 8.188-1.563 11.313-4.688 6.25-6.25 6.25-16.375 0-22.625l-16-16c-6.25-6.25-16.375-6.25-22.625,0s-6.25,16.375 0,22.625l15.999,16z"),i.append("path").attr("class","error-icon").attr("d","m400,64c8.844,0 16-7.164 16-16v-32c0-8.836-7.156-16-16-16-8.844,0-16,7.164-16,16v32c0,8.836 7.156,16 16,16z"),i.append("path").attr("class","error-icon").attr("d","m496,96.586h-32c-8.844,0-16,7.164-16,16 0,8.836 7.156,16 16,16h32c8.844,0 16-7.164 16-16 0-8.836-7.156-16-16-16z"),i.append("path").attr("class","error-icon").attr("d","m436.98,75.605c3.125,3.125 7.219,4.688 11.313,4.688 4.094,0 8.188-1.563 11.313-4.688l32-32c6.25-6.25 6.25-16.375 0-22.625s-16.375-6.25-22.625,0l-32,32c-6.251,6.25-6.251,16.375-0.001,22.625z"),i.append("text").attr("class","error-text").attr("x",1440).attr("y",250).attr("font-size","150px").style("text-anchor","middle").text("Syntax error in text"),i.append("text").attr("class","error-text").attr("x",1250).attr("y",400).attr("font-size","100px").style("text-anchor","middle").text(`mermaid version ${r}`)},"draw"),VY={draw:s_t},EMe=VY;var o_t={db:{},renderer:VY,parser:{parse:o(()=>{},"parse")}},AMe=o_t;var RMe="flowchart-elk",l_t=o((e,t={})=>/^\s*flowchart-elk/.test(e)||/^\s*(flowchart|graph)/.test(e)&&t?.flowchart?.defaultRenderer==="elk"?(t.layout="elk",!0):!1,"detector"),c_t=o(async()=>{let{diagram:e}=await Promise.resolve().then(()=>(oC(),LA));return{id:RMe,diagram:e}},"loader"),u_t={id:RMe,detector:l_t,loader:c_t},_Me=u_t;var uNe="timeline",P_t=o(e=>/^\s*timeline/.test(e),"detector"),O_t=o(async()=>{let{diagram:e}=await Promise.resolve().then(()=>(cNe(),lNe));return{id:uNe,diagram:e}},"loader"),B_t={id:uNe,detector:P_t,loader:O_t},hNe=B_t;var RNe="mindmap",U_t=o(e=>/^\s*mindmap/.test(e),"detector"),Y_t=o(async()=>{let{diagram:e}=await Promise.resolve().then(()=>(ANe(),ENe));return{id:RNe,diagram:e}},"loader"),j_t={id:RNe,detector:U_t,loader:Y_t},_Ne=j_t;var GNe="kanban",uLt=o(e=>/^\s*kanban/.test(e),"detector"),hLt=o(async()=>{let{diagram:e}=await Promise.resolve().then(()=>(zNe(),FNe));return{id:GNe,diagram:e}},"loader"),dLt={id:GNe,detector:uLt,loader:hLt},VNe=dLt;var wPe="sankey",OLt=o(e=>/^\s*sankey(-beta)?/.test(e),"detector"),BLt=o(async()=>{let{diagram:e}=await Promise.resolve().then(()=>(CPe(),TPe));return{id:wPe,diagram:e}},"loader"),$Lt={id:wPe,detector:OLt,loader:BLt},kPe=$Lt;var IPe="packet",YLt=o(e=>/^\s*packet(-beta)?/.test(e),"detector"),jLt=o(async()=>{let{diagram:e}=await Promise.resolve().then(()=>(DPe(),LPe));return{id:IPe,diagram:e}},"loader"),MPe={id:IPe,detector:YLt,loader:jLt};var qPe="radar",gDt=o(e=>/^\s*radar-beta/.test(e),"detector"),yDt=o(async()=>{let{diagram:e}=await Promise.resolve().then(()=>(WPe(),VPe));return{id:qPe,diagram:e}},"loader"),HPe={id:qPe,detector:gDt,loader:yDt};var jOe="block",z7t=o(e=>/^\s*block(-beta)?/.test(e),"detector"),G7t=o(async()=>{let{diagram:e}=await Promise.resolve().then(()=>(YOe(),UOe));return{id:jOe,diagram:e}},"loader"),V7t={id:jOe,detector:z7t,loader:G7t},XOe=V7t;var g9e="treeView",d8t=o(e=>/^\s*treeView-beta/.test(e),"detector"),f8t=o(async()=>{let{diagram:e}=await Promise.resolve().then(()=>(m9e(),p9e));return{id:g9e,diagram:e}},"loader"),p8t={id:g9e,detector:d8t,loader:f8t},y9e=p8t;var z9e="architecture",_8t=o(e=>/^\s*architecture/.test(e),"detector"),L8t=o(async()=>{let{diagram:e}=await Promise.resolve().then(()=>(F9e(),$9e));return{id:z9e,diagram:e}},"loader"),D8t={id:z9e,detector:_8t,loader:L8t},G9e=D8t;var eBe="eventmodeling",mIt=o(e=>/^\s*eventmodeling/.test(e),"detector"),gIt=o(async()=>{let{diagram:e}=await Promise.resolve().then(()=>(J9e(),Q9e));return{id:eBe,diagram:e}},"loader"),yIt={id:eBe,detector:mIt,loader:gIt},tBe=yIt;var vBe="ishikawa",LIt=o(e=>/^\s*ishikawa(-beta)?\b/i.test(e),"detector"),DIt=o(async()=>{let{diagram:e}=await Promise.resolve().then(()=>(yBe(),gBe));return{id:vBe,diagram:e}},"loader"),xBe={id:vBe,detector:LIt,loader:DIt};var XBe="venn",mMt=o(e=>/^\s*venn-beta/.test(e),"detector"),gMt=o(async()=>{let{diagram:e}=await Promise.resolve().then(()=>(jBe(),YBe));return{id:XBe,diagram:e}},"loader"),yMt={id:XBe,detector:mMt,loader:gMt},KBe=yMt;Up();Xt();var s$e="treemap",EMt=o(e=>/^\s*treemap/.test(e),"detector"),AMt=o(async()=>{let{diagram:e}=await Promise.resolve().then(()=>(a$e(),i$e));return{id:s$e,diagram:e}},"loader"),o$e={id:s$e,detector:EMt,loader:AMt};var x$e="wardley",QMt=o(e=>/^\s*wardley-beta/i.test(e),"detector"),JMt=o(async()=>{let{diagram:e}=await Promise.resolve().then(()=>(v$e(),y$e));return{id:x$e,diagram:e}},"loader"),eNt={id:x$e,detector:QMt,loader:JMt},b$e=eNt;var B$e="cynefin",mNt=o(e=>/^\s*cynefin-beta(?:[\s:]|$)/.test(e),"detector"),gNt=o(async()=>{let{diagram:e}=await Promise.resolve().then(()=>(O$e(),P$e));return{id:B$e,diagram:e}},"loader"),$$e={id:B$e,detector:mNt,loader:gNt};var K$e="railroad",FNt=o(e=>/^\s*railroad-beta/i.test(e),"detector"),zNt=o(async()=>{let{diagram:e}=await Promise.resolve().then(()=>(X$e(),j$e));return{id:K$e,diagram:e}},"loader"),Z$e={id:K$e,detector:FNt,loader:zNt};var nFe="railroadEbnf",jNt=o(e=>/^\s*railroad-ebnf-beta/i.test(e),"detector"),XNt=o(async()=>{let{diagram:e}=await Promise.resolve().then(()=>(rFe(),tFe));return{id:nFe,diagram:e}},"loader"),iFe={id:nFe,detector:jNt,loader:XNt};var cFe="railroadAbnf",iPt=o(e=>/^\s*railroad-abnf-beta/i.test(e),"detector"),aPt=o(async()=>{let{diagram:e}=await Promise.resolve().then(()=>(lFe(),oFe));return{id:cFe,diagram:e}},"loader"),uFe={id:cFe,detector:iPt,loader:aPt};var yFe="railroadPeg",pPt=o(e=>/^\s*railroad-peg-beta/i.test(e),"detector"),mPt=o(async()=>{let{diagram:e}=await Promise.resolve().then(()=>(gFe(),mFe));return{id:yFe,diagram:e}},"loader"),vFe={id:yFe,detector:pPt,loader:mPt};var xFe=!1,Ax=o(()=>{xFe||(xFe=!0,Yp("error",AMe,e=>e.toLowerCase().trim()==="error"),Yp("---",{db:{clear:o(()=>{},"clear")},styles:{},renderer:{draw:o(()=>{},"draw")},parser:{parse:o(()=>{throw new Error("Diagrams beginning with --- are not valid. If you were trying to use a YAML front-matter, please ensure that you've correctly opened and closed the YAML front-matter with un-indented `---` blocks")},"parse")},init:o(()=>null,"init")},e=>e.toLowerCase().trimStart().startsWith("---")),sb(_Me,_Ne,G9e),sb(yae,VNe,EIe,CIe,NTe,I7e,V7e,Q7e,K8e,mIe,kTe,vTe,gTe,hNe,QDe,cMe,aMe,SMe,d8e,kPe,MPe,z8e,XOe,tBe,y9e,HPe,xBe,o$e,Z$e,iFe,uFe,vFe,KBe,b$e,$$e))},"addDiagrams");vt();Up();Xt();var bFe=o(async()=>{Z.debug("Loading registered diagrams");let t=(await Promise.allSettled(Object.entries(oh).map(async([r,{detector:n,loader:i}])=>{if(i)try{db(r)}catch{try{let{diagram:a,id:s}=await i();Yp(s,a,n)}catch(a){throw Z.error(`Failed to load external diagram with key ${r}. Removing from detectors.`),delete oh[r],a}}}))).filter(r=>r.status==="rejected");if(t.length>0){Z.error(`Failed to load ${t.length} external diagrams`);for(let r of t)Z.error(r);throw new Error(`Failed to load ${t.length} external diagrams`)}},"loadRegisteredDiagrams");vt();$r();var Rx="comm",gD="rule",yD="decl";var TFe="@media",CFe="@import";var wFe="@supports";var kFe="@namespace",ck="@keyframes";var vD="@layer",SFe="@scope";var IX=Math.abs,uk=String.fromCharCode;function xD(e){return e.trim()}o(xD,"trim");function _x(e,t,r){return e.replace(t,r)}o(_x,"replace");function EFe(e,t,r){return e.indexOf(t,r)}o(EFe,"indexof");function gd(e,t){return e.charCodeAt(t)|0}o(gd,"charat");function yd(e,t,r){return e.slice(t,r)}o(yd,"substr");function Lo(e){return e.length}o(Lo,"strlen");function bD(e){return e.length}o(bD,"sizeof");function Lx(e,t){return t.push(e),e}o(Lx,"append");var TD=1,Dx=1,AFe=0,Bl=0,ea=0,Mx="";function CD(e,t,r,n,i,a,s,l){return{value:e,root:t,parent:r,type:n,props:i,children:a,line:TD,column:Dx,length:s,return:"",siblings:l}}o(CD,"node");function RFe(){return ea}o(RFe,"char");function _Fe(){return ea=Bl>0?gd(Mx,--Bl):0,Dx--,ea===10&&(Dx=1,TD--),ea}o(_Fe,"prev");function $l(){return ea=Bl<AFe?gd(Mx,Bl++):0,Dx++,ea===10&&(Dx=1,TD++),ea}o($l,"next");function vd(){return gd(Mx,Bl)}o(vd,"peek");function hk(){return Bl}o(hk,"caret");function wD(e,t){return yd(Mx,e,t)}o(wD,"slice");function Ix(e){switch(e){case 0:case 9:case 10:case 13:case 32:return 5;case 33:case 43:case 44:case 47:case 62:case 64:case 126:case 59:case 123:case 125:return 4;case 58:return 3;case 34:case 39:case 40:case 91:return 2;case 41:case 93:return 1}return 0}o(Ix,"token");function LFe(e){return TD=Dx=1,AFe=Lo(Mx=e),Bl=0,[]}o(LFe,"alloc");function DFe(e){return Mx="",e}o(DFe,"dealloc");function kD(e){return xD(wD(Bl-1,MX(e===91?e+2:e===40?e+1:e)))}o(kD,"delimit");function IFe(e){for(;(ea=vd())&&ea<33;)$l();return Ix(e)>2||Ix(ea)>3?"":" "}o(IFe,"whitespace");function MFe(e,t){for(;--t&&$l()&&!(ea<48||ea>102||ea>57&&ea<65||ea>70&&ea<97););return wD(e,hk()+(t<6&&vd()==32&&$l()==32))}o(MFe,"escaping");function MX(e){for(;$l();)switch(ea){case e:return Bl;case 34:case 39:e!==34&&e!==39&&MX(ea);break;case 40:e===41&&MX(e);break;case 92:$l();break}return Bl}o(MX,"delimiter");function NFe(e,t){for(;$l()&&e+ea!==57;)if(e+ea===84&&vd()===47)break;return"/*"+wD(t,Bl-1)+"*"+uk(e===47?e:$l())}o(NFe,"commenter");function PFe(e){for(;!Ix(vd());)$l();return wD(e,Bl)}o(PFe,"identifier");function $Fe(e){return DFe(SD("",null,null,null,[""],e=LFe(e),0,[0],e))}o($Fe,"compile");function SD(e,t,r,n,i,a,s,l,u){for(var h=0,d=0,f=s,p=0,m=0,g=0,y=1,v=1,x=1,b=0,T="",k=i,C=a,w=n,S=T;v;)switch(g=b,b=$l()){case 40:if(g!=108&&gd(S,f-1)==58){EFe(S+=_x(kD(b),"&","&\f"),"&\f",IX(h?l[h-1]:0))!=-1&&(x=-1);break}case 34:case 39:case 91:S+=kD(b);break;case 9:case 10:case 13:case 32:S+=IFe(g);break;case 92:S+=MFe(hk()-1,7);continue;case 47:switch(vd()){case 42:case 47:Lx(yPt(NFe($l(),hk()),t,r,u),u),(Ix(g||1)==5||Ix(vd()||1)==5)&&Lo(S)&&yd(S,-1,void 0)!==" "&&(S+=" ");break;default:S+="/"}break;case 123*y:l[h++]=Lo(S)*x;case 125*y:case 59:case 0:switch(b){case 0:case 125:v=0;case 59+d:x==-1&&(S=_x(S,/\f/g,"")),m>0&&(Lo(S)-f||y===0&&g===47)&&Lx(m>32?BFe(S+";",n,r,f-1,u):BFe(_x(S," ","")+";",n,r,f-2,u),u);break;case 59:S+=";";default:if(Lx(w=OFe(S,t,r,h,d,i,l,T,k=[],C=[],f,a),a),b===123)if(d===0)SD(S,t,w,w,k,a,f,l,C);else{switch(p){case 99:if(gd(S,3)===110)break;case 108:if(gd(S,2)===97)break;default:d=0;case 100:case 109:case 115:}d?SD(e,w,w,n&&Lx(OFe(e,w,w,0,0,i,l,T,i,k=[],f,C),C),i,C,f,l,n?k:C):SD(S,w,w,w,[""],C,0,l,C)}}h=d=m=0,y=x=1,T=S="",f=s;break;case 58:f=1+Lo(S),m=g;default:if(y<1){if(b==123)--y;else if(b==125&&y++==0&&_Fe()==125)continue}switch(S+=uk(b),b*y){case 38:x=d>0?1:(S+="\f",-1);break;case 44:l[h++]=(Lo(S)-1)*x,x=1;break;case 64:vd()===45&&(S+=kD($l())),p=vd(),d=f=Lo(T=S+=PFe(hk())),b++;break;case 45:g===45&&Lo(S)==2&&(y=0)}}return a}o(SD,"parse");function OFe(e,t,r,n,i,a,s,l,u,h,d,f){for(var p=i-1,m=i===0?a:[""],g=bD(m),y=0,v=0,x=0;y<n;++y)for(var b=0,T=yd(e,p+1,p=IX(v=s[y])),k=e;b<g;++b)(k=xD(v>0?m[b]+" "+T:_x(T,/&\f/g,m[b])))&&(u[x++]=k);return CD(e,t,r,i===0?gD:l,u,h,d,f)}o(OFe,"ruleset");function yPt(e,t,r,n){return CD(e,t,r,Rx,uk(RFe()),yd(e,2,-2),0,n)}o(yPt,"comment");function BFe(e,t,r,n,i){return CD(e,t,r,yD,yd(e,0,n),yd(e,n+1,-1),n,i)}o(BFe,"declaration");function ED(e,t){for(var r="",n=0;n<e.length;n++)r+=t(e[n],n,e,t)||"";return r}o(ED,"serialize");function FFe(e,t,r,n){switch(e.type){case vD:if(e.children.length)break;case CFe:case kFe:case yD:return e.return=e.return||e.value;case Rx:return"";case ck:return e.return=e.value+"{"+ED(e.children,n)+"}";case gD:if(!Lo(e.value=e.props.join(",")))return""}return Lo(r=ED(e.children,n))?e.return=e.value+"{"+r+"}":""}o(FFe,"stringify");function zFe(e){var t=bD(e);return function(r,n,i,a){for(var s="",l=0;l<t;l++)s+=e[l](r,n,i,a)||"";return s}}o(zFe,"middleware");H0();s4();var vPt="graphics-document document";function GFe(e,t){e.attr("role",vPt),t!==""&&e.attr("aria-roledescription",t)}o(GFe,"setA11yDiagramInfo");function VFe(e,t,r,n){if(e.insert!==void 0){if(r){let i=`chart-desc-${n}`;e.attr("aria-describedby",i),e.insert("desc",":first-child").attr("id",i).text(r)}if(t){let i=`chart-title-${n}`;e.attr("aria-labelledby",i),e.insert("title",":first-child").attr("id",i).text(t)}}}o(VFe,"addSVGa11yTitleDescription");G0();ur();ur();ur();Xt();Up();d8();Qt();var Nx=class e{constructor(t,r,n,i,a){this.type=t;this.text=r;this.db=n;this.parser=i;this.renderer=a}static{o(this,"Diagram")}static async fromText(t,r={}){let n=_t(),i=ny(t,n);t=sae(t)+`
+`;try{db(i)}catch{let h=sJ(i);if(!h)throw new ry(`Diagram ${i} not found.`);let{id:d,diagram:f}=await h();Yp(d,f)}let{db:a,parser:s,renderer:l,init:u}=db(i);return s.parser&&(s.parser.yy=a),a.clear?.(),u?.(n),r.title&&a.setDiagramTitle?.(r.title),await s.parse(t),new e(i,t,a,s,l)}async render(t,r){await this.renderer.draw(this.text,t,r,this)}getParser(){return this.parser}getType(){return this.type}};Vr();var WFe=[];var qFe=o(()=>{WFe.forEach(e=>{e()}),WFe=[]},"attachFunctions");vt();var HFe=o(e=>e.replace(/^\s*%%(?!{)[^\n]+\n?/gm,"").trimStart(),"cleanupComments");yS();A2();function UFe(e){let t=e.match(gS);if(!t)return{text:e,metadata:{}};let r=t[1],n=r?t[2].split(`
+`).map(s=>s.startsWith(r)?s.slice(r.length):s).join(`
+`):t[2],i=Qd(n,{schema:Zd})??{};i=typeof i=="object"&&!Array.isArray(i)?i:{};let a={};return i.displayMode&&(a.displayMode=i.displayMode.toString()),i.title&&(a.title=i.title.toString()),i.config&&(a.config=i.config),{text:e.slice(t[0].length),metadata:a}}o(UFe,"extractFrontMatter");Qt();var xPt=o(e=>e.replace(/\r\n?/g,`
+`).replace(/<(\w+)([^>]*)>/g,(t,r,n)=>"<"+r+n.replace(/="([^"]*)"/g,"='$1'")+">"),"cleanupText"),bPt=o(e=>{let{text:t,metadata:r}=UFe(e),{displayMode:n,title:i,config:a={}}=r;return n&&(a.gantt||(a.gantt={}),a.gantt.displayMode=n),{title:i,config:a,text:t}},"processFrontmatter"),TPt=o(e=>{let t=Zt.detectInit(e)??{},r=Zt.detectDirective(e,"wrap");return Array.isArray(r)?t.wrap=r.some(({type:n})=>n==="wrap"):r?.type==="wrap"&&(t.wrap=!0),{text:iae(e),directive:t}},"processDirectives");function NX(e){let t=xPt(e),r=bPt(t),n=TPt(r.text),i=qr(r.config,n.directive);return e=HFe(n.text),{code:e,title:r.title,config:i}}o(NX,"preprocessDiagram");g8();Sk();Qt();function YFe(e){let t=new TextEncoder().encode(e),r=Array.from(t,n=>String.fromCodePoint(n)).join("");return btoa(r)}o(YFe,"toBase64");Ek();var CPt=5e4,wPt="graph TB;a[Maximum text size in diagram exceeded];style a fill:#faa",kPt="sandbox",SPt="loose",EPt="http://www.w3.org/2000/svg",APt="http://www.w3.org/1999/xlink",RPt="http://www.w3.org/1999/xhtml",_Pt="100%",LPt="100%",DPt="border:0;margin:0;",IPt="margin:0",MPt="allow-top-navigation-by-user-activation allow-popups",NPt='The "iframe" tag is not supported by your browser.',PPt=["foreignobject"],OPt=["dominant-baseline"];function ZFe(e){let t=NX(e);return Wx(),sZ(t.config??{}),t}o(ZFe,"processAndSetConfigs");async function BPt(e,t){Ax();try{let{code:r,config:n}=ZFe(e);return{diagramType:(await QFe(r)).type,config:n}}catch(r){if(t?.suppressErrors)return!1;throw r}}o(BPt,"parse");var jFe=o((e,t,r=[])=>{let n=o7(`{ ${r.join(" !important; ")} !important; }`);return`.${e} ${t} ${n}`},"cssImportantStyles"),$Pt=o((e,t=new Map)=>{let r=new CSSStyleSheet;if(e.fontFamily!==void 0&&r.insertRule(`:root { --mermaid-font-family: ${e.fontFamily}}`,r.cssRules.length),e.altFontFamily!==void 0&&r.insertRule(`:root { --mermaid-alt-font-family: ${e.altFontFamily}}`,r.cssRules.length),t instanceof Map){let l=Gr(e)?["> *","span"]:["rect","polygon","ellipse","circle","path"];t.forEach(u=>{a4(u.styles)||l.forEach(h=>{r.insertRule(jFe(u.id,h,u.styles),r.cssRules.length)}),a4(u.textStyles)||r.insertRule(jFe(u.id,"tspan",(u?.textStyles||[]).map(h=>h.replace("color","fill"))),r.cssRules.length)})}let n="";if(e.themeCSS!==void 0)if(typeof r.replaceSync=="function"){let i=new CSSStyleSheet;i.replaceSync(e.themeCSS),n=m8(i)+`
+`}else n+=`${e.themeCSS}
+`;return n+m8(r)},"createCssStyles"),FPt=o((e,t)=>ED($Fe(`${e}{${t}}`),zFe([o(function(n,i,a,s){if(n.type==="rule"&&Array.isArray(n.props)){if(n.parent&&n.parent.type===ck)return;n.props=n.props.map(l=>l.startsWith(e)?l:`${e} ${l}`)}else n.type.startsWith("@")&&([...[TFe,wFe,vD,SFe,"@container","@starting-style"],ck].includes(n.type)||(Z.warn(`Removing unsupported at-rule ${n.type} from CSS`),n.type=Rx))},"addNamespace"),FFe])),"compileCSS"),zPt=o((e,t,r,n)=>{let i=$Pt(e,r),a=cJ(t,i,{...e.themeVariables,theme:e.theme,look:e.look},n);return FPt(n,a)},"createUserStyles"),GPt=o((e="",t,r)=>{let n=e;return!r&&!t&&(n=n.replace(/marker-end="url\([\d+./:=?A-Za-z-]*?#/g,'marker-end="url(#')),n=Rs(n),n=n.replace(/<br>/g,"<br/>"),n},"cleanUpSvgCode"),VPt=o((e="",t)=>{let r=t?.viewBox?.baseVal?.height?t.viewBox.baseVal.height+"px":LPt,n=YFe(`<body style="${IPt}">${e}</body>`);return`<iframe style="width:${_Pt};height:${r};${DPt}" src="data:text/html;charset=UTF-8;base64,${n}" sandbox="${MPt}">
+  ${NPt}
+</iframe>`},"putIntoIFrame"),XFe=o((e,t,r,n,i)=>{let a=e.append("div");a.attr("id",r),n&&a.attr("style",n);let s=a.append("svg").attr("id",t).attr("width","100%").attr("xmlns",EPt);return i&&s.attr("xmlns:xlink",i),s.append("g"),e},"appendDivSvgG");function KFe(e,t){return e.append("iframe").attr("id",t).attr("style","width: 100%; height: 100%;").attr("sandbox","")}o(KFe,"sandboxedIframe");var WPt=o((e,t,r,n)=>{e.getElementById(t)?.remove(),e.getElementById(r)?.remove(),e.getElementById(n)?.remove()},"removeExistingElements"),qPt=o(async function(e,t,r){Ax();let n=ZFe(t);t=n.code;let i=_t();Z.debug(i),t.length>(i?.maxTextSize??CPt)&&(t=wPt);let a=`#${e}`,s="i"+e,l="#"+s,u="d"+e,h="#"+u,d=o(()=>{let A=et(p?l:h).node();A&&"remove"in A&&A.remove()},"removeTempElements"),f=et(document.body),p=i.securityLevel===kPt,m=i.securityLevel===SPt,g=i.fontFamily;if(r!==void 0){if(r&&(r.innerHTML=""),p){let _=KFe(et(r),s);f=et(_.nodes()[0].contentDocument.body),f.node().style.margin="0"}else f=et(r);XFe(f,e,u,`font-family: ${g}`,APt)}else{if(WPt(document,e,u,s),p){let _=KFe(et(document.body),s);f=et(_.nodes()[0].contentDocument.body),f.node().style.margin="0"}else f=et("body");XFe(f,e,u)}let y,v;try{y=await Nx.fromText(t,{title:n.title})}catch(_){if(i.suppressErrorRendering)throw d(),_;y=await Nx.fromText("error"),v=_}let x=f.select(h).node(),b=y.type,T=x.firstChild,k=T.firstChild,C=y.renderer.getClasses?.(t,y),w=zPt(i,b,C,a),S=document.createElement("style");S.innerHTML=w,T.insertBefore(S,k);try{await y.renderer.draw(t,e,"11.16.0",y)}catch(_){throw i.suppressErrorRendering?d():EMe.draw(t,e,"11.16.0"),_}let R=f.select(`${h} svg`),L=y.db.getAccTitle?.(),N=y.db.getAccDescription?.();UPt(b,R,L,N),f.select(`[id="${e}"]`).selectAll("foreignobject > *").attr("xmlns",RPt);let I=f.select(h).node().innerHTML;if(Z.debug("config.arrowMarkerAbsolute",i.arrowMarkerAbsolute),I=GPt(I,p,ya(i.arrowMarkerAbsolute)),p){let _=f.select(h+" svg").node();I=VPt(I,_)}else m||(I=Zs.sanitize(I,{ADD_TAGS:PPt,ADD_ATTR:OPt,HTML_INTEGRATION_POINTS:{foreignobject:!0}}));if(qFe(),v)throw v;return d(),{diagramType:b,svg:I,bindFunctions:y.db.bindFunctions}},"render");function HPt(e={}){let t=Yn({},e);t?.fontFamily&&!t.themeVariables?.fontFamily&&(t.themeVariables||(t.themeVariables={}),t.themeVariables.fontFamily=t.fontFamily),nZ(t),t?.theme&&t.theme in sl?t.themeVariables=sl[t.theme].getThemeVariables(t.themeVariables):t&&(t.themeVariables=sl.default.getThemeVariables(t.themeVariables));let r=typeof t=="object"?l7(t):c7();Bx(r.logLevel),Ax()}o(HPt,"initialize");var QFe=o((e,t={})=>{let{code:r}=NX(e);return Nx.fromText(r,t)},"getDiagramFromText");function UPt(e,t,r,n){GFe(t,e),VFe(t,r,n,t.attr("id"))}o(UPt,"addA11yInfo");var Pp=Object.freeze({render:qPt,parse:BPt,getDiagramFromText:QFe,initialize:HPt,getConfig:_t,setConfig:_k,getSiteConfig:c7,updateSiteConfig:iZ,reset:o(()=>{Wx()},"reset"),globalReset:o(()=>{Wx(Cd)},"globalReset"),defaultConfig:Cd});Bx(_t().logLevel);Wx(_t());Qf();Qt();var YPt=o((e,t,r)=>{Z.warn(e),fP(e)?(r&&r(e.str,e.hash),t.push({...e,message:e.str,error:e})):(r&&r(e),e instanceof Error&&t.push({str:e.message,message:e.message,hash:e.name,error:e}))},"handleError"),JFe=o(async function(e={querySelector:".mermaid"}){try{await jPt(e)}catch(t){if(fP(t)&&Z.error(t.str),xd.parseError&&xd.parseError(t),!e.suppressErrors)throw Z.error("Use the suppressErrors option to suppress these errors"),t}},"run"),jPt=o(async function({postRenderCallback:e,querySelector:t,nodes:r}={querySelector:".mermaid"}){let n=Pp.getConfig();Z.debug(`${e?"":"No "}Callback function found`);let i;if(r)i=r;else if(t)i=document.querySelectorAll(t);else throw new Error("Nodes and querySelector are both undefined");Z.debug(`Found ${i.length} diagrams`),n?.startOnLoad!==void 0&&(Z.debug("Start On Load: "+n?.startOnLoad),Pp.updateSiteConfig({startOnLoad:n?.startOnLoad}));let a=new Zt.InitIDGenerator(n.deterministicIds,n.deterministicIDSeed),s,l=[];for(let u of Array.from(i)){Z.info("Rendering diagram: "+u.id);if(u.getAttribute("data-processed"))continue;u.setAttribute("data-processed","true");let h=`mermaid-${a.next()}`;s=u.innerHTML,s=mS(Zt.entityDecode(s)).trim().replace(/<br\s*\/?>/gi,"<br/>");let d=Zt.detectInit(s);d&&Z.debug("Detected early reinit: ",d);try{let{svg:f,bindFunctions:p}=await nze(h,s,u);u.innerHTML=f,e&&await e(h),p&&p(u)}catch(f){YPt(f,l,xd.parseError)}}if(l.length>0)throw l[0]},"runThrowsErrors"),eze=o(function(e){Pp.initialize(e)},"initialize"),XPt=o(async function(e,t,r){Z.warn("mermaid.init is deprecated. Please use run instead."),e&&eze(e);let n={postRenderCallback:r,querySelector:".mermaid"};typeof t=="string"?n.querySelector=t:t&&(t instanceof HTMLElement?n.nodes=[t]:n.nodes=t),await JFe(n)},"init"),KPt=o(async(e,{lazyLoad:t=!0}={})=>{Ax(),sb(...e),t===!1&&await bFe()},"registerExternalDiagrams"),tze=o(function(){if(xd.startOnLoad){let{startOnLoad:e}=Pp.getConfig();e&&xd.run().catch(t=>Z.error("Mermaid failed to initialize",t))}},"contentLoaded");if(typeof document<"u"){window.addEventListener("load",tze,!1)}var ZPt=o(function(e){xd.parseError=e},"setParseErrorHandler"),AD=[],PX=!1,rze=o(async()=>{if(!PX){for(PX=!0;AD.length>0;){let e=AD.shift();if(e)try{await e()}catch(t){Z.error("Error executing queue",t)}}PX=!1}},"executeQueue"),QPt=o(async(e,t)=>new Promise((r,n)=>{let i=o(()=>new Promise((a,s)=>{Pp.parse(e,t).then(l=>{a(l),r(l)},l=>{Z.error("Error parsing",l),xd.parseError?.(l),s(l),n(l)})}),"performCall");AD.push(i),rze().catch(n)}),"parse"),nze=o((e,t,r)=>new Promise((n,i)=>{let a=o(()=>new Promise((s,l)=>{Pp.render(e,t,r).then(u=>{s(u),n(u)},u=>{Z.error("Error parsing",u),xd.parseError?.(u),l(u),i(u)})}),"performCall");AD.push(a),rze().catch(i)}),"render"),JPt=o(()=>Object.keys(oh).map(e=>({id:e})),"getRegisteredDiagramsMetadata"),xd={startOnLoad:!0,mermaidAPI:Pp,parse:QPt,render:nze,init:XPt,run:JFe,registerExternalDiagrams:KPt,registerLayoutLoaders:YF,initialize:eze,parseError:void 0,contentLoaded:tze,setParseErrorHandler:ZPt,detectType:ny,registerIconPacks:ty,getRegisteredDiagramsMetadata:JPt},eOt=xd;return cze(tOt);})();
 /*! Bundled license information:
 
 lodash-es/lodash.js:
diff --git a/assets/external/user-images.githubusercontent.com/159488/34072418-8f5ba396-e287-11e7-9de7-8bc7482ac23c.png b/assets/external/user-images.githubusercontent.com/159488/34072418-8f5ba396-e287-11e7-9de7-8bc7482ac23c.png
deleted file mode 100644
index 5c8022f..0000000
--- a/assets/external/user-images.githubusercontent.com/159488/34072418-8f5ba396-e287-11e7-9de7-8bc7482ac23c.png
+++ /dev/null
Binary files differ
diff --git a/community/code_of_conduct/index.html b/community/code_of_conduct/index.html
index da3964a..a445655 100644
--- a/community/code_of_conduct/index.html
+++ b/community/code_of_conduct/index.html
@@ -1 +1 @@
-<!doctype html><html lang=en class=no-js> <head><meta charset=utf-8><meta name=viewport content="width=device-width,initial-scale=1"><meta name=author content="Niels Lohmann"><link href="https://json.nlohmann.me/community/code_of_conduct/" rel="canonical"><link href=../ rel=prev><link href=../contribution_guidelines/ rel=next><link rel=icon href=../../assets/images/favicon.png><meta name=generator content="mkdocs-1.6.1, mkdocs-material-9.7.6"><title>Code of Conduct - JSON for Modern C++</title><link rel=stylesheet href=../../assets/stylesheets/main.484c7ddc.min.css><link rel=stylesheet href=../../assets/stylesheets/palette.ab4e12ef.min.css><link rel="stylesheet" href="../../assets/external/fonts.googleapis.com/css.61a430c9.css"><style>:root{--md-text-font:"Roboto";--md-code-font:"JetBrains Mono"}</style><link rel=stylesheet href=../../css/custom.css><script>__md_scope=new URL("../..",location),__md_hash=e=>[...e].reduce(((e,_)=>(e<<5)-e+_.charCodeAt(0)),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script></head> <body dir=ltr data-md-color-scheme=default data-md-color-primary=indigo data-md-color-accent=indigo> <input class=md-toggle data-md-toggle=drawer type=checkbox id=__drawer autocomplete=off> <input class=md-toggle data-md-toggle=search type=checkbox id=__search autocomplete=off> <label class=md-overlay for=__drawer></label> <div data-md-component=skip> <a href=#contributor-covenant-code-of-conduct class=md-skip> Skip to content </a> </div> <div data-md-component=announce> </div> <header class=md-header data-md-component=header> <nav class="md-header__inner md-grid" aria-label=Header> <a href=../.. title="JSON for Modern C++" class="md-header__button md-logo" aria-label="JSON for Modern C++" data-md-component=logo> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54"/></svg> </a> <label class="md-header__button md-icon" for=__drawer> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M3 6h18v2H3zm0 5h18v2H3zm0 5h18v2H3z"/></svg> </label> <div class=md-header__title data-md-component=header-title> <div class=md-header__ellipsis> <div class=md-header__topic> <span class=md-ellipsis> JSON for Modern C++ </span> </div> <div class=md-header__topic data-md-component=header-topic> <span class=md-ellipsis> Code of Conduct </span> </div> </div> </div> <form class=md-header__option data-md-component=palette> <input class=md-option data-md-color-media="(prefers-color-scheme: light)" data-md-color-scheme=default data-md-color-primary=indigo data-md-color-accent=indigo aria-label="Switch to dark mode" type=radio name=__palette id=__palette_0> <label class="md-header__button md-icon" title="Switch to dark mode" for=__palette_1 hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a4 4 0 0 0-4 4 4 4 0 0 0 4 4 4 4 0 0 0 4-4 4 4 0 0 0-4-4m0 10a6 6 0 0 1-6-6 6 6 0 0 1 6-6 6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12z"/></svg> </label> <input class=md-option data-md-color-media="(prefers-color-scheme: dark)" data-md-color-scheme=slate data-md-color-primary=indigo data-md-color-accent=indigo aria-label="Switch to light mode" type=radio name=__palette id=__palette_1> <label class="md-header__button md-icon" title="Switch to light mode" for=__palette_0 hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 18c-.89 0-1.74-.2-2.5-.55C11.56 16.5 13 14.42 13 12s-1.44-4.5-3.5-5.45C10.26 6.2 11.11 6 12 6a6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12z"/></svg> </label> </form> <script>var palette=__md_get("__palette");if(palette&&palette.color){if("(prefers-color-scheme)"===palette.color.media){var media=matchMedia("(prefers-color-scheme: light)"),input=document.querySelector(media.matches?"[data-md-color-media='(prefers-color-scheme: light)']":"[data-md-color-media='(prefers-color-scheme: dark)']");palette.color.media=input.getAttribute("data-md-color-media"),palette.color.scheme=input.getAttribute("data-md-color-scheme"),palette.color.primary=input.getAttribute("data-md-color-primary"),palette.color.accent=input.getAttribute("data-md-color-accent")}for(var[key,value]of Object.entries(palette.color))document.body.setAttribute("data-md-color-"+key,value)}</script> <label class="md-header__button md-icon" for=__search> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg> </label> <div class=md-search data-md-component=search role=dialog> <label class=md-search__overlay for=__search></label> <div class=md-search__inner role=search> <form class=md-search__form name=search> <input type=text class=md-search__input name=query aria-label=Search placeholder=Search autocapitalize=off autocorrect=off autocomplete=off spellcheck=false data-md-component=search-query required> <label class="md-search__icon md-icon" for=__search> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11z"/></svg> </label> <nav class=md-search__options aria-label=Search> <button type=reset class="md-search__icon md-icon" title=Clear aria-label=Clear tabindex=-1> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z"/></svg> </button> </nav> </form> <div class=md-search__output> <div class=md-search__scrollwrap tabindex=0 data-md-scrollfix> <div class=md-search-result data-md-component=search-result> <div class=md-search-result__meta> Initializing search </div> <ol class=md-search-result__list role=presentation></ol> </div> </div> </div> </div> </div> <div class=md-header__source> <a href="https://github.com/nlohmann/json" title="Go to repository" class="md-source" data-md-component="source"> <div class="md-source__icon md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </div> <div class=md-source__repository> nlohmann/json </div> </a> </div> </nav> </header> <div class=md-container data-md-component=container> <nav class=md-tabs aria-label=Tabs data-md-component=tabs> <div class=md-grid> <ul class=md-tabs__list> <li class=md-tabs__item> <a href=../.. class=md-tabs__link> Home </a> </li> <li class=md-tabs__item> <a href=../../features/arbitrary_types/ class=md-tabs__link> Features </a> </li> <li class=md-tabs__item> <a href=../../integration/ class=md-tabs__link> Integration </a> </li> <li class=md-tabs__item> <a href=../../api/basic_json/ class=md-tabs__link> API Documentation </a> </li> <li class="md-tabs__item md-tabs__item--active"> <a href=../ class=md-tabs__link> Community </a> </li> </ul> </div> </nav> <main class=md-main data-md-component=main> <div class="md-main__inner md-grid"> <div class="md-sidebar md-sidebar--primary" data-md-component=sidebar data-md-type=navigation> <div class=md-sidebar__scrollwrap> <div class=md-sidebar__inner> <nav class="md-nav md-nav--primary md-nav--lifted" aria-label=Navigation data-md-level=0> <label class=md-nav__title for=__drawer> <a href=../.. title="JSON for Modern C++" class="md-nav__button md-logo" aria-label="JSON for Modern C++" data-md-component=logo> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54"/></svg> </a> JSON for Modern C++ </label> <div class=md-nav__source> <a href="https://github.com/nlohmann/json" title="Go to repository" class="md-source" data-md-component="source"> <div class="md-source__icon md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </div> <div class=md-source__repository> nlohmann/json </div> </a> </div> <ul class=md-nav__list data-md-scrollfix> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_1> <div class="md-nav__link md-nav__container"> <a href=../.. class="md-nav__link "> <span class=md-ellipsis> Home </span> </a> <label class="md-nav__link " for=__nav_1 id=__nav_1_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_1_label aria-expanded=false> <label class=md-nav__title for=__nav_1> <span class="md-nav__icon md-icon"></span> Home </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../home/license/ class=md-nav__link> <span class=md-ellipsis> License </span> </a> </li> <li class=md-nav__item> <a href=../../home/faq/ class=md-nav__link> <span class=md-ellipsis> FAQ </span> </a> </li> <li class=md-nav__item> <a href=../../home/exceptions/ class=md-nav__link> <span class=md-ellipsis> Exceptions </span> </a> </li> <li class=md-nav__item> <a href=../../home/releases/ class=md-nav__link> <span class=md-ellipsis> Releases </span> </a> </li> <li class=md-nav__item> <a href=../../home/design_goals/ class=md-nav__link> <span class=md-ellipsis> Design goals </span> </a> </li> <li class=md-nav__item> <a href=../../home/architecture/ class=md-nav__link> <span class=md-ellipsis> Architecture </span> </a> </li> <li class=md-nav__item> <a href=../../home/customers/ class=md-nav__link> <span class=md-ellipsis> Customers </span> </a> </li> <li class=md-nav__item> <a href=../../home/sponsors/ class=md-nav__link> <span class=md-ellipsis> Sponsors </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2> <label class=md-nav__link for=__nav_2 id=__nav_2_label tabindex=0> <span class=md-ellipsis> Features </span> <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_2_label aria-expanded=false> <label class=md-nav__title for=__nav_2> <span class="md-nav__icon md-icon"></span> Features </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../features/arbitrary_types/ class=md-nav__link> <span class=md-ellipsis> Arbitrary Type Conversions </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_2> <div class="md-nav__link md-nav__container"> <a href=../../features/binary_formats/ class="md-nav__link "> <span class=md-ellipsis> Binary Formats </span> </a> <label class="md-nav__link " for=__nav_2_2 id=__nav_2_2_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_2_label aria-expanded=false> <label class=md-nav__title for=__nav_2_2> <span class="md-nav__icon md-icon"></span> Binary Formats </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../features/binary_formats/bjdata/ class=md-nav__link> <span class=md-ellipsis> BJData </span> </a> </li> <li class=md-nav__item> <a href=../../features/binary_formats/bson/ class=md-nav__link> <span class=md-ellipsis> BSON </span> </a> </li> <li class=md-nav__item> <a href=../../features/binary_formats/cbor/ class=md-nav__link> <span class=md-ellipsis> CBOR </span> </a> </li> <li class=md-nav__item> <a href=../../features/binary_formats/messagepack/ class=md-nav__link> <span class=md-ellipsis> MessagePack </span> </a> </li> <li class=md-nav__item> <a href=../../features/binary_formats/ubjson/ class=md-nav__link> <span class=md-ellipsis> UBJSON </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../features/binary_values/ class=md-nav__link> <span class=md-ellipsis> Binary Values </span> </a> </li> <li class=md-nav__item> <a href=../../features/comments/ class=md-nav__link> <span class=md-ellipsis> Comments </span> </a> </li> <li class=md-nav__item> <a href=../../features/trailing_commas/ class=md-nav__link> <span class=md-ellipsis> Trailing Commas </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_6> <div class="md-nav__link md-nav__container"> <a href=../../features/element_access/ class="md-nav__link "> <span class=md-ellipsis> Element Access </span> </a> <label class="md-nav__link " for=__nav_2_6 id=__nav_2_6_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_6_label aria-expanded=false> <label class=md-nav__title for=__nav_2_6> <span class="md-nav__icon md-icon"></span> Element Access </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../features/element_access/unchecked_access/ class=md-nav__link> <span class=md-ellipsis> Unchecked access: operator[] </span> </a> </li> <li class=md-nav__item> <a href=../../features/element_access/checked_access/ class=md-nav__link> <span class=md-ellipsis> Checked access: at </span> </a> </li> <li class=md-nav__item> <a href=../../features/element_access/default_value/ class=md-nav__link> <span class=md-ellipsis> Access with default value: value </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../features/iterators/ class=md-nav__link> <span class=md-ellipsis> Iterators </span> </a> </li> <li class=md-nav__item> <a href=../../features/json_pointer/ class=md-nav__link> <span class=md-ellipsis> JSON Pointer </span> </a> </li> <li class=md-nav__item> <a href=../../features/json_patch/ class=md-nav__link> <span class=md-ellipsis> JSON Patch and Diff </span> </a> </li> <li class=md-nav__item> <a href=../../features/merge_patch/ class=md-nav__link> <span class=md-ellipsis> JSON Merge Patch </span> </a> </li> <li class=md-nav__item> <a href=../../features/modules/ class=md-nav__link> <span class=md-ellipsis> Modules </span> </a> </li> <li class=md-nav__item> <a href=../../features/namespace/ class=md-nav__link> <span class=md-ellipsis> nlohmann Namespace </span> </a> </li> <li class=md-nav__item> <a href=../../features/object_order/ class=md-nav__link> <span class=md-ellipsis> Object Order </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_14> <div class="md-nav__link md-nav__container"> <a href=../../features/parsing/ class="md-nav__link "> <span class=md-ellipsis> Parsing </span> </a> <label class="md-nav__link " for=__nav_2_14 id=__nav_2_14_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_14_label aria-expanded=false> <label class=md-nav__title for=__nav_2_14> <span class="md-nav__icon md-icon"></span> Parsing </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../features/parsing/json_lines/ class=md-nav__link> <span class=md-ellipsis> JSON Lines </span> </a> </li> <li class=md-nav__item> <a href=../../features/parsing/parse_exceptions/ class=md-nav__link> <span class=md-ellipsis> Parsing and Exceptions </span> </a> </li> <li class=md-nav__item> <a href=../../features/parsing/parser_callbacks/ class=md-nav__link> <span class=md-ellipsis> Parser Callbacks </span> </a> </li> <li class=md-nav__item> <a href=../../features/parsing/sax_interface/ class=md-nav__link> <span class=md-ellipsis> SAX Interface </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../features/assertions/ class=md-nav__link> <span class=md-ellipsis> Runtime Assertions </span> </a> </li> <li class=md-nav__item> <a href=../../features/enum_conversion/ class=md-nav__link> <span class=md-ellipsis> Specializing enum conversion </span> </a> </li> <li class=md-nav__item> <a href=../../features/macros/ class=md-nav__link> <span class=md-ellipsis> Supported Macros </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_18> <div class="md-nav__link md-nav__container"> <a href=../../features/types/ class="md-nav__link "> <span class=md-ellipsis> Types </span> </a> <label class="md-nav__link " for=__nav_2_18 id=__nav_2_18_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_18_label aria-expanded=false> <label class=md-nav__title for=__nav_2_18> <span class="md-nav__icon md-icon"></span> Types </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../features/types/number_handling/ class=md-nav__link> <span class=md-ellipsis> Number Handling </span> </a> </li> </ul> </nav> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_3> <div class="md-nav__link md-nav__container"> <a href=../../integration/ class="md-nav__link "> <span class=md-ellipsis> Integration </span> </a> <label class="md-nav__link " for=__nav_3 id=__nav_3_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_3_label aria-expanded=false> <label class=md-nav__title for=__nav_3> <span class="md-nav__icon md-icon"></span> Integration </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../integration/migration_guide/ class=md-nav__link> <span class=md-ellipsis> Migration Guide </span> </a> </li> <li class=md-nav__item> <a href=../../integration/cmake/ class=md-nav__link> <span class=md-ellipsis> CMake </span> </a> </li> <li class=md-nav__item> <a href=../../integration/package_managers/ class=md-nav__link> <span class=md-ellipsis> Package Managers </span> </a> </li> <li class=md-nav__item> <a href=../../integration/pkg-config/ class=md-nav__link> <span class=md-ellipsis> Pkg-config </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4> <label class=md-nav__link for=__nav_4 id=__nav_4_label tabindex=0> <span class=md-ellipsis> API Documentation </span> <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_4_label aria-expanded=false> <label class=md-nav__title for=__nav_4> <span class="md-nav__icon md-icon"></span> API Documentation </label> <ul class=md-nav__list data-md-scrollfix> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_1> <div class="md-nav__link md-nav__container"> <a href=../../api/basic_json/ class="md-nav__link "> <span class=md-ellipsis> basic_json </span> </a> <label class="md-nav__link " for=__nav_4_1 id=__nav_4_1_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_1_label aria-expanded=false> <label class=md-nav__title for=__nav_4_1> <span class="md-nav__icon md-icon"></span> basic_json </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../api/basic_json/basic_json/ class=md-nav__link> <span class=md-ellipsis> (Constructor) </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/~basic_json/ class=md-nav__link> <span class=md-ellipsis> (Destructor) </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/accept/ class=md-nav__link> <span class=md-ellipsis> accept </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/array/ class=md-nav__link> <span class=md-ellipsis> array </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/array_t/ class=md-nav__link> <span class=md-ellipsis> array_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/at/ class=md-nav__link> <span class=md-ellipsis> at </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/back/ class=md-nav__link> <span class=md-ellipsis> back </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/begin/ class=md-nav__link> <span class=md-ellipsis> begin </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/binary/ class=md-nav__link> <span class=md-ellipsis> binary </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/binary_t/ class=md-nav__link> <span class=md-ellipsis> binary_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/boolean_t/ class=md-nav__link> <span class=md-ellipsis> boolean_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/cbegin/ class=md-nav__link> <span class=md-ellipsis> cbegin </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/cbor_tag_handler_t/ class=md-nav__link> <span class=md-ellipsis> cbor_tag_handler_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/cend/ class=md-nav__link> <span class=md-ellipsis> cend </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/clear/ class=md-nav__link> <span class=md-ellipsis> clear </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/contains/ class=md-nav__link> <span class=md-ellipsis> contains </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/count/ class=md-nav__link> <span class=md-ellipsis> count </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/crbegin/ class=md-nav__link> <span class=md-ellipsis> crbegin </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/crend/ class=md-nav__link> <span class=md-ellipsis> crend </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/default_object_comparator_t/ class=md-nav__link> <span class=md-ellipsis> default_object_comparator_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/diff/ class=md-nav__link> <span class=md-ellipsis> diff </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/dump/ class=md-nav__link> <span class=md-ellipsis> dump </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/emplace/ class=md-nav__link> <span class=md-ellipsis> emplace </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/emplace_back/ class=md-nav__link> <span class=md-ellipsis> emplace_back </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/empty/ class=md-nav__link> <span class=md-ellipsis> empty </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/end/ class=md-nav__link> <span class=md-ellipsis> end </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/end_pos/ class=md-nav__link> <span class=md-ellipsis> end_pos </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/erase/ class=md-nav__link> <span class=md-ellipsis> erase </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/error_handler_t/ class=md-nav__link> <span class=md-ellipsis> error_handler_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/exception/ class=md-nav__link> <span class=md-ellipsis> exception </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/find/ class=md-nav__link> <span class=md-ellipsis> find </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/flatten/ class=md-nav__link> <span class=md-ellipsis> flatten </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/from_bjdata/ class=md-nav__link> <span class=md-ellipsis> from_bjdata </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/from_bson/ class=md-nav__link> <span class=md-ellipsis> from_bson </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/from_cbor/ class=md-nav__link> <span class=md-ellipsis> from_cbor </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/from_msgpack/ class=md-nav__link> <span class=md-ellipsis> from_msgpack </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/from_ubjson/ class=md-nav__link> <span class=md-ellipsis> from_ubjson </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/front/ class=md-nav__link> <span class=md-ellipsis> front </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/get/ class=md-nav__link> <span class=md-ellipsis> get </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/get_allocator/ class=md-nav__link> <span class=md-ellipsis> get_allocator </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/get_binary/ class=md-nav__link> <span class=md-ellipsis> get_binary </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/get_ptr/ class=md-nav__link> <span class=md-ellipsis> get_ptr </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/get_ref/ class=md-nav__link> <span class=md-ellipsis> get_ref </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/get_to/ class=md-nav__link> <span class=md-ellipsis> get_to </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/std_hash/ class=md-nav__link> <span class=md-ellipsis> std::hash&lt;basic_json&gt; </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/input_format_t/ class=md-nav__link> <span class=md-ellipsis> input_format_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/insert/ class=md-nav__link> <span class=md-ellipsis> insert </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/invalid_iterator/ class=md-nav__link> <span class=md-ellipsis> invalid_iterator </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_array/ class=md-nav__link> <span class=md-ellipsis> is_array </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_binary/ class=md-nav__link> <span class=md-ellipsis> is_binary </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_boolean/ class=md-nav__link> <span class=md-ellipsis> is_boolean </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_discarded/ class=md-nav__link> <span class=md-ellipsis> is_discarded </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_null/ class=md-nav__link> <span class=md-ellipsis> is_null </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_number/ class=md-nav__link> <span class=md-ellipsis> is_number </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_number_float/ class=md-nav__link> <span class=md-ellipsis> is_number_float </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_number_integer/ class=md-nav__link> <span class=md-ellipsis> is_number_integer </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_number_unsigned/ class=md-nav__link> <span class=md-ellipsis> is_number_unsigned </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_object/ class=md-nav__link> <span class=md-ellipsis> is_object </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_primitive/ class=md-nav__link> <span class=md-ellipsis> is_primitive </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_string/ class=md-nav__link> <span class=md-ellipsis> is_string </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_structured/ class=md-nav__link> <span class=md-ellipsis> is_structured </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/items/ class=md-nav__link> <span class=md-ellipsis> items </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/json_base_class_t/ class=md-nav__link> <span class=md-ellipsis> json_base_class_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/json_serializer/ class=md-nav__link> <span class=md-ellipsis> json_serializer </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/max_size/ class=md-nav__link> <span class=md-ellipsis> max_size </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/meta/ class=md-nav__link> <span class=md-ellipsis> meta </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/merge_patch/ class=md-nav__link> <span class=md-ellipsis> merge_patch </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/number_float_t/ class=md-nav__link> <span class=md-ellipsis> number_float_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/number_integer_t/ class=md-nav__link> <span class=md-ellipsis> number_integer_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/number_unsigned_t/ class=md-nav__link> <span class=md-ellipsis> number_unsigned_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/object/ class=md-nav__link> <span class=md-ellipsis> object </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/object_comparator_t/ class=md-nav__link> <span class=md-ellipsis> object_comparator_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/object_t/ class=md-nav__link> <span class=md-ellipsis> object_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/operator_ValueType/ class=md-nav__link> <span class=md-ellipsis> operator ValueType </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/operator_value_t/ class=md-nav__link> <span class=md-ellipsis> operator value_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/operator%5B%5D/ class=md-nav__link> <span class=md-ellipsis> operator[] </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/operator%3D/ class=md-nav__link> <span class=md-ellipsis> operator= </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/operator%2B%3D/ class=md-nav__link> <span class=md-ellipsis> operator+= </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/operator_eq/ class=md-nav__link> <span class=md-ellipsis> operator== </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/operator_ne/ class=md-nav__link> <span class=md-ellipsis> operator!= </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/operator_lt/ class=md-nav__link> <span class=md-ellipsis> operator< </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/operator_gt/ class=md-nav__link> <span class=md-ellipsis> operator> </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/operator_le/ class=md-nav__link> <span class=md-ellipsis> operator<= </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/operator_ge/ class=md-nav__link> <span class=md-ellipsis> operator>= </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/operator_spaceship/ class=md-nav__link> <span class=md-ellipsis> operator<=> </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/out_of_range/ class=md-nav__link> <span class=md-ellipsis> out_of_range </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/other_error/ class=md-nav__link> <span class=md-ellipsis> other_error </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/parse/ class=md-nav__link> <span class=md-ellipsis> parse </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/parse_error/ class=md-nav__link> <span class=md-ellipsis> parse_error </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/parse_event_t/ class=md-nav__link> <span class=md-ellipsis> parse_event_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/parser_callback_t/ class=md-nav__link> <span class=md-ellipsis> parser_callback_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/patch/ class=md-nav__link> <span class=md-ellipsis> patch </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/patch_inplace/ class=md-nav__link> <span class=md-ellipsis> patch_inplace </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/push_back/ class=md-nav__link> <span class=md-ellipsis> push_back </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/rbegin/ class=md-nav__link> <span class=md-ellipsis> rbegin </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/rend/ class=md-nav__link> <span class=md-ellipsis> rend </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/sax_parse/ class=md-nav__link> <span class=md-ellipsis> sax_parse </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/size/ class=md-nav__link> <span class=md-ellipsis> size </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/start_pos/ class=md-nav__link> <span class=md-ellipsis> start_pos </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/string_t/ class=md-nav__link> <span class=md-ellipsis> string_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/swap/ class=md-nav__link> <span class=md-ellipsis> swap </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/std_swap/ class=md-nav__link> <span class=md-ellipsis> std::swap&lt;basic_json&gt; </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/to_bjdata/ class=md-nav__link> <span class=md-ellipsis> to_bjdata </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/to_bson/ class=md-nav__link> <span class=md-ellipsis> to_bson </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/to_cbor/ class=md-nav__link> <span class=md-ellipsis> to_cbor </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/to_msgpack/ class=md-nav__link> <span class=md-ellipsis> to_msgpack </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/to_string/ class=md-nav__link> <span class=md-ellipsis> to_string </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/to_ubjson/ class=md-nav__link> <span class=md-ellipsis> to_ubjson </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/type/ class=md-nav__link> <span class=md-ellipsis> type </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/type_error/ class=md-nav__link> <span class=md-ellipsis> type_error </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/type_name/ class=md-nav__link> <span class=md-ellipsis> type_name </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/unflatten/ class=md-nav__link> <span class=md-ellipsis> unflatten </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/update/ class=md-nav__link> <span class=md-ellipsis> update </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/value/ class=md-nav__link> <span class=md-ellipsis> value </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/value_t/ class=md-nav__link> <span class=md-ellipsis> value_t </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_2> <div class="md-nav__link md-nav__container"> <a href=../../api/byte_container_with_subtype/ class="md-nav__link "> <span class=md-ellipsis> byte_container_with_subtype </span> </a> <label class="md-nav__link " for=__nav_4_2 id=__nav_4_2_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_2_label aria-expanded=false> <label class=md-nav__title for=__nav_4_2> <span class="md-nav__icon md-icon"></span> byte_container_with_subtype </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../api/byte_container_with_subtype/byte_container_with_subtype/ class=md-nav__link> <span class=md-ellipsis> (constructor) </span> </a> </li> <li class=md-nav__item> <a href=../../api/byte_container_with_subtype/clear_subtype/ class=md-nav__link> <span class=md-ellipsis> clear_subtype </span> </a> </li> <li class=md-nav__item> <a href=../../api/byte_container_with_subtype/has_subtype/ class=md-nav__link> <span class=md-ellipsis> has_subtype </span> </a> </li> <li class=md-nav__item> <a href=../../api/byte_container_with_subtype/set_subtype/ class=md-nav__link> <span class=md-ellipsis> set_subtype </span> </a> </li> <li class=md-nav__item> <a href=../../api/byte_container_with_subtype/subtype/ class=md-nav__link> <span class=md-ellipsis> subtype </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_3> <div class="md-nav__link md-nav__container"> <a href=../../api/adl_serializer/ class="md-nav__link "> <span class=md-ellipsis> adl_serializer </span> </a> <label class="md-nav__link " for=__nav_4_3 id=__nav_4_3_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_3_label aria-expanded=false> <label class=md-nav__title for=__nav_4_3> <span class="md-nav__icon md-icon"></span> adl_serializer </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../api/adl_serializer/from_json/ class=md-nav__link> <span class=md-ellipsis> from_json </span> </a> </li> <li class=md-nav__item> <a href=../../api/adl_serializer/to_json/ class=md-nav__link> <span class=md-ellipsis> to_json </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../api/json/ class=md-nav__link> <span class=md-ellipsis> json </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_5> <div class="md-nav__link md-nav__container"> <a href=../../api/json_pointer/ class="md-nav__link "> <span class=md-ellipsis> json_pointer </span> </a> <label class="md-nav__link " for=__nav_4_5 id=__nav_4_5_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_5_label aria-expanded=false> <label class=md-nav__title for=__nav_4_5> <span class="md-nav__icon md-icon"></span> json_pointer </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../api/json_pointer/json_pointer/ class=md-nav__link> <span class=md-ellipsis> (Constructor) </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/back/ class=md-nav__link> <span class=md-ellipsis> back </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/empty/ class=md-nav__link> <span class=md-ellipsis> empty </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/front/ class=md-nav__link> <span class=md-ellipsis> front </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/operator_string_t/ class=md-nav__link> <span class=md-ellipsis> operator string_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/operator_eq/ class=md-nav__link> <span class=md-ellipsis> operator== </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/operator_ne/ class=md-nav__link> <span class=md-ellipsis> operator!= </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/operator_slash/ class=md-nav__link> <span class=md-ellipsis> operator/ </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/operator_slasheq/ class=md-nav__link> <span class=md-ellipsis> operator/= </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/parent_pointer/ class=md-nav__link> <span class=md-ellipsis> parent_pointer </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/pop_back/ class=md-nav__link> <span class=md-ellipsis> pop_back </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/pop_front/ class=md-nav__link> <span class=md-ellipsis> pop_front </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/push_back/ class=md-nav__link> <span class=md-ellipsis> push_back </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/push_front/ class=md-nav__link> <span class=md-ellipsis> push_front </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/string_t/ class=md-nav__link> <span class=md-ellipsis> string_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/to_string/ class=md-nav__link> <span class=md-ellipsis> to_string </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_6> <div class="md-nav__link md-nav__container"> <a href=../../api/json_sax/ class="md-nav__link "> <span class=md-ellipsis> json_sax </span> </a> <label class="md-nav__link " for=__nav_4_6 id=__nav_4_6_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_6_label aria-expanded=false> <label class=md-nav__title for=__nav_4_6> <span class="md-nav__icon md-icon"></span> json_sax </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../api/json_sax/binary/ class=md-nav__link> <span class=md-ellipsis> binary </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_sax/boolean/ class=md-nav__link> <span class=md-ellipsis> boolean </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_sax/end_array/ class=md-nav__link> <span class=md-ellipsis> end_array </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_sax/end_object/ class=md-nav__link> <span class=md-ellipsis> end_object </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_sax/key/ class=md-nav__link> <span class=md-ellipsis> key </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_sax/null/ class=md-nav__link> <span class=md-ellipsis> null </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_sax/number_float/ class=md-nav__link> <span class=md-ellipsis> number_float </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_sax/number_integer/ class=md-nav__link> <span class=md-ellipsis> number_integer </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_sax/number_unsigned/ class=md-nav__link> <span class=md-ellipsis> number_unsigned </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_sax/parse_error/ class=md-nav__link> <span class=md-ellipsis> parse_error </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_sax/start_array/ class=md-nav__link> <span class=md-ellipsis> start_array </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_sax/start_object/ class=md-nav__link> <span class=md-ellipsis> start_object </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_sax/string/ class=md-nav__link> <span class=md-ellipsis> string </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../api/operator_ltlt/ class=md-nav__link> <span class=md-ellipsis> operator<<(basic_json), operator<<(json_pointer) </span> </a> </li> <li class=md-nav__item> <a href=../../api/operator_gtgt/ class=md-nav__link> <span class=md-ellipsis> operator>>(basic_json) </span> </a> </li> <li class=md-nav__item> <a href=../../api/operator_literal_json/ class=md-nav__link> <span class=md-ellipsis> operator""_json </span> </a> </li> <li class=md-nav__item> <a href=../../api/operator_literal_json_pointer/ class=md-nav__link> <span class=md-ellipsis> operator""_json_pointer </span> </a> </li> <li class=md-nav__item> <a href=../../api/ordered_json/ class=md-nav__link> <span class=md-ellipsis> ordered_json </span> </a> </li> <li class=md-nav__item> <a href=../../api/ordered_map/ class=md-nav__link> <span class=md-ellipsis> ordered_map </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_13> <div class="md-nav__link md-nav__container"> <a href=../../api/macros/ class="md-nav__link "> <span class=md-ellipsis> macros </span> </a> <label class="md-nav__link " for=__nav_4_13 id=__nav_4_13_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_13_label aria-expanded=false> <label class=md-nav__title for=__nav_4_13> <span class="md-nav__icon md-icon"></span> macros </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../api/macros/json_assert/ class=md-nav__link> <span class=md-ellipsis> JSON_ASSERT </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_brace_init_copy_semantics/ class=md-nav__link> <span class=md-ellipsis> JSON_BRACE_INIT_COPY_SEMANTICS </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_throw_user/ class=md-nav__link> <span class=md-ellipsis> JSON_CATCH_USER, JSON_THROW_USER, JSON_TRY_USER </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_diagnostics/ class=md-nav__link> <span class=md-ellipsis> JSON_DIAGNOSTICS </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_diagnostic_positions/ class=md-nav__link> <span class=md-ellipsis> JSON_DIAGNOSTIC_POSITIONS </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_disable_enum_serialization/ class=md-nav__link> <span class=md-ellipsis> JSON_DISABLE_ENUM_SERIALIZATION </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_has_cpp_11/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_CPP_11, JSON_HAS_CPP_14, JSON_HAS_CPP_17, JSON_HAS_CPP_20 </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_has_filesystem/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_EXPERIMENTAL_FILESYSTEM, JSON_HAS_FILESYSTEM </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_has_ranges/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_RANGES </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_has_static_rtti/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_STATIC_RTTI </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_has_three_way_comparison/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_THREE_WAY_COMPARISON </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_noexception/ class=md-nav__link> <span class=md-ellipsis> JSON_NOEXCEPTION </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_no_io/ class=md-nav__link> <span class=md-ellipsis> JSON_NO_IO </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_skip_library_version_check/ class=md-nav__link> <span class=md-ellipsis> JSON_SKIP_LIBRARY_VERSION_CHECK </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_skip_unsupported_compiler_check/ class=md-nav__link> <span class=md-ellipsis> JSON_SKIP_UNSUPPORTED_COMPILER_CHECK </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_use_global_udls/ class=md-nav__link> <span class=md-ellipsis> JSON_USE_GLOBAL_UDLS </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_use_implicit_conversions/ class=md-nav__link> <span class=md-ellipsis> JSON_USE_IMPLICIT_CONVERSIONS </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_use_legacy_discarded_value_comparison/ class=md-nav__link> <span class=md-ellipsis> JSON_USE_LEGACY_DISCARDED_VALUE_COMPARISON </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/nlohmann_define_derived_type/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_ONLY_SERIALIZE, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/nlohmann_define_type_intrusive/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_TYPE_INTRUSIVE, NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_TYPE_INTRUSIVE_ONLY_SERIALIZE </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/nlohmann_define_type_non_intrusive/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/nlohmann_define_type_with_names/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_TYPE_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/nlohmann_json_namespace/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_NAMESPACE </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/nlohmann_json_namespace_begin/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_NAMESPACE_BEGIN, NLOHMANN_JSON_NAMESPACE_END </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/nlohmann_json_namespace_no_version/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_NAMESPACE_NO_VERSION </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/nlohmann_json_serialize_enum/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_SERIALIZE_ENUM </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/nlohmann_json_serialize_enum_strict/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_SERIALIZE_ENUM_STRICT </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/nlohmann_json_version_major/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_VERSION_MAJOR, NLOHMANN_JSON_VERSION_MINOR, NLOHMANN_JSON_VERSION_PATCH </span> </a> </li> </ul> </nav> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--active md-nav__item--section md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_5 checked> <div class="md-nav__link md-nav__container"> <a href=../ class="md-nav__link "> <span class=md-ellipsis> Community </span> </a> <label class="md-nav__link " for=__nav_5 id=__nav_5_label tabindex> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_5_label aria-expanded=true> <label class=md-nav__title for=__nav_5> <span class="md-nav__icon md-icon"></span> Community </label> <ul class=md-nav__list data-md-scrollfix> <li class="md-nav__item md-nav__item--active"> <input class="md-nav__toggle md-toggle" type=checkbox id=__toc> <label class="md-nav__link md-nav__link--active" for=__toc> <span class=md-ellipsis> Code of Conduct </span> <span class="md-nav__icon md-icon"></span> </label> <a href=./ class="md-nav__link md-nav__link--active"> <span class=md-ellipsis> Code of Conduct </span> </a> <nav class="md-nav md-nav--secondary" aria-label="Table of contents"> <label class=md-nav__title for=__toc> <span class="md-nav__icon md-icon"></span> Table of contents </label> <ul class=md-nav__list data-md-component=toc data-md-scrollfix> <li class=md-nav__item> <a href=#our-pledge class=md-nav__link> <span class=md-ellipsis> Our Pledge </span> </a> </li> <li class=md-nav__item> <a href=#our-standards class=md-nav__link> <span class=md-ellipsis> Our Standards </span> </a> </li> <li class=md-nav__item> <a href=#enforcement-responsibilities class=md-nav__link> <span class=md-ellipsis> Enforcement Responsibilities </span> </a> </li> <li class=md-nav__item> <a href=#scope class=md-nav__link> <span class=md-ellipsis> Scope </span> </a> </li> <li class=md-nav__item> <a href=#enforcement class=md-nav__link> <span class=md-ellipsis> Enforcement </span> </a> </li> <li class=md-nav__item> <a href=#enforcement-guidelines class=md-nav__link> <span class=md-ellipsis> Enforcement Guidelines </span> </a> <nav class=md-nav aria-label="Enforcement Guidelines"> <ul class=md-nav__list> <li class=md-nav__item> <a href=#1-correction class=md-nav__link> <span class=md-ellipsis> 1. Correction </span> </a> </li> <li class=md-nav__item> <a href=#2-warning class=md-nav__link> <span class=md-ellipsis> 2. Warning </span> </a> </li> <li class=md-nav__item> <a href=#3-temporary-ban class=md-nav__link> <span class=md-ellipsis> 3. Temporary Ban </span> </a> </li> <li class=md-nav__item> <a href=#4-permanent-ban class=md-nav__link> <span class=md-ellipsis> 4. Permanent Ban </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=#attribution class=md-nav__link> <span class=md-ellipsis> Attribution </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../contribution_guidelines/ class=md-nav__link> <span class=md-ellipsis> Contribution Guidelines </span> </a> </li> <li class=md-nav__item> <a href=../quality_assurance/ class=md-nav__link> <span class=md-ellipsis> Quality assurance </span> </a> </li> <li class=md-nav__item> <a href=../governance/ class=md-nav__link> <span class=md-ellipsis> Governance </span> </a> </li> <li class=md-nav__item> <a href=../security_policy/ class=md-nav__link> <span class=md-ellipsis> Security Policy </span> </a> </li> </ul> </nav> </li> </ul> </nav> </div> </div> </div> <div class="md-sidebar md-sidebar--secondary" data-md-component=sidebar data-md-type=toc> <div class=md-sidebar__scrollwrap> <div class=md-sidebar__inner> <nav class="md-nav md-nav--secondary" aria-label="Table of contents"> <label class=md-nav__title for=__toc> <span class="md-nav__icon md-icon"></span> Table of contents </label> <ul class=md-nav__list data-md-component=toc data-md-scrollfix> <li class=md-nav__item> <a href=#our-pledge class=md-nav__link> <span class=md-ellipsis> Our Pledge </span> </a> </li> <li class=md-nav__item> <a href=#our-standards class=md-nav__link> <span class=md-ellipsis> Our Standards </span> </a> </li> <li class=md-nav__item> <a href=#enforcement-responsibilities class=md-nav__link> <span class=md-ellipsis> Enforcement Responsibilities </span> </a> </li> <li class=md-nav__item> <a href=#scope class=md-nav__link> <span class=md-ellipsis> Scope </span> </a> </li> <li class=md-nav__item> <a href=#enforcement class=md-nav__link> <span class=md-ellipsis> Enforcement </span> </a> </li> <li class=md-nav__item> <a href=#enforcement-guidelines class=md-nav__link> <span class=md-ellipsis> Enforcement Guidelines </span> </a> <nav class=md-nav aria-label="Enforcement Guidelines"> <ul class=md-nav__list> <li class=md-nav__item> <a href=#1-correction class=md-nav__link> <span class=md-ellipsis> 1. Correction </span> </a> </li> <li class=md-nav__item> <a href=#2-warning class=md-nav__link> <span class=md-ellipsis> 2. Warning </span> </a> </li> <li class=md-nav__item> <a href=#3-temporary-ban class=md-nav__link> <span class=md-ellipsis> 3. Temporary Ban </span> </a> </li> <li class=md-nav__item> <a href=#4-permanent-ban class=md-nav__link> <span class=md-ellipsis> 4. Permanent Ban </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=#attribution class=md-nav__link> <span class=md-ellipsis> Attribution </span> </a> </li> </ul> </nav> </div> </div> </div> <div class=md-content data-md-component=content> <article class="md-content__inner md-typeset"> <a href="https://github.com/nlohmann/json/edit/develop/docs/mkdocs/docs/community/code_of_conduct.md" title="Edit this page" class="md-content__button md-icon" rel="edit"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M10 20H6V4h7v5h5v3.1l2-2V8l-6-6H6c-1.1 0-2 .9-2 2v16c0 1.1.9 2 2 2h4zm10.2-7c.1 0 .3.1.4.2l1.3 1.3c.2.2.2.6 0 .8l-1 1-2.1-2.1 1-1c.1-.1.2-.2.4-.2m0 3.9L14.1 23H12v-2.1l6.1-6.1z"/></svg> </a> <a href="https://github.com/nlohmann/json/raw/develop/docs/mkdocs/docs/community/code_of_conduct.md" title="View source of this page" class="md-content__button md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M17 18c.56 0 1 .44 1 1s-.44 1-1 1-1-.44-1-1 .44-1 1-1m0-3c-2.73 0-5.06 1.66-6 4 .94 2.34 3.27 4 6 4s5.06-1.66 6-4c-.94-2.34-3.27-4-6-4m0 6.5a2.5 2.5 0 0 1-2.5-2.5 2.5 2.5 0 0 1 2.5-2.5 2.5 2.5 0 0 1 2.5 2.5 2.5 2.5 0 0 1-2.5 2.5M9.27 20H6V4h7v5h5v4.07c.7.08 1.36.25 2 .49V8l-6-6H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h4.5a8.2 8.2 0 0 1-1.23-2"/></svg> </a> <h1 id=contributor-covenant-code-of-conduct>Contributor Covenant Code of Conduct<a class=headerlink href=#contributor-covenant-code-of-conduct title="Permanent link">&para;</a></h1> <h2 id=our-pledge>Our Pledge<a class=headerlink href=#our-pledge title="Permanent link">&para;</a></h2> <p>We as members, contributors, and leaders pledge to make participation in our community a harassment-free experience for everyone, regardless of age, body size, visible or invisible disability, ethnicity, sex characteristics, gender identity and expression, level of experience, education, socio-economic status, nationality, personal appearance, race, caste, color, religion, or sexual identity and orientation.</p> <p>We pledge to act and interact in ways that contribute to an open, welcoming, diverse, inclusive, and healthy community.</p> <h2 id=our-standards>Our Standards<a class=headerlink href=#our-standards title="Permanent link">&para;</a></h2> <p>Examples of behavior that contributes to a positive environment for our community include:</p> <ul> <li>Demonstrating empathy and kindness toward other people</li> <li>Being respectful of differing opinions, viewpoints, and experiences</li> <li>Giving and gracefully accepting constructive feedback</li> <li>Accepting responsibility and apologizing to those affected by our mistakes, and learning from the experience</li> <li>Focusing on what is best not just for us as individuals, but for the overall community</li> </ul> <p>Examples of unacceptable behavior include:</p> <ul> <li>The use of sexualized language or imagery, and sexual attention or advances of any kind</li> <li>Trolling, insulting or derogatory comments, and personal or political attacks</li> <li>Public or private harassment</li> <li>Publishing others' private information, such as a physical or email address, without their explicit permission</li> <li>Other conduct which could reasonably be considered inappropriate in a professional setting</li> </ul> <h2 id=enforcement-responsibilities>Enforcement Responsibilities<a class=headerlink href=#enforcement-responsibilities title="Permanent link">&para;</a></h2> <p>Community leaders are responsible for clarifying and enforcing our standards of acceptable behavior and will take appropriate and fair corrective action in response to any behavior that they deem inappropriate, threatening, offensive, or harmful.</p> <p>Community leaders have the right and responsibility to remove, edit, or reject comments, commits, code, wiki edits, issues, and other contributions that are not aligned to this Code of Conduct, and will communicate reasons for moderation decisions when appropriate.</p> <h2 id=scope>Scope<a class=headerlink href=#scope title="Permanent link">&para;</a></h2> <p>This Code of Conduct applies within all community spaces, and also applies when an individual is officially representing the community in public spaces. Examples of representing our community include using an official email address, posting via an official social media account, or acting as an appointed representative at an online or offline event.</p> <h2 id=enforcement>Enforcement<a class=headerlink href=#enforcement title="Permanent link">&para;</a></h2> <p>Instances of abusive, harassing, or otherwise unacceptable behavior may be reported to the community leaders responsible for enforcement at <a href=mailto:mail@nlohmann.me>mail@nlohmann.me</a>. All complaints will be reviewed and investigated promptly and fairly.</p> <p>All community leaders are obligated to respect the privacy and security of the reporter of any incident.</p> <h2 id=enforcement-guidelines>Enforcement Guidelines<a class=headerlink href=#enforcement-guidelines title="Permanent link">&para;</a></h2> <p>Community leaders will follow these Community Impact Guidelines in determining the consequences for any action they deem in violation of this Code of Conduct:</p> <h3 id=1-correction>1. Correction<a class=headerlink href=#1-correction title="Permanent link">&para;</a></h3> <p><strong>Community Impact</strong>: Use of inappropriate language or other behavior deemed unprofessional or unwelcome in the community.</p> <p><strong>Consequence</strong>: A private, written warning from community leaders, providing clarity around the nature of the violation and an explanation of why the behavior was inappropriate. A public apology may be requested.</p> <h3 id=2-warning>2. Warning<a class=headerlink href=#2-warning title="Permanent link">&para;</a></h3> <p><strong>Community Impact</strong>: A violation through a single incident or series of actions.</p> <p><strong>Consequence</strong>: A warning with consequences for continued behavior. No interaction with the people involved, including unsolicited interaction with those enforcing the Code of Conduct, for a specified period of time. This includes avoiding interactions in community spaces as well as external channels like social media. Violating these terms may lead to a temporary or permanent ban.</p> <h3 id=3-temporary-ban>3. Temporary Ban<a class=headerlink href=#3-temporary-ban title="Permanent link">&para;</a></h3> <p><strong>Community Impact</strong>: A serious violation of community standards, including sustained inappropriate behavior.</p> <p><strong>Consequence</strong>: A temporary ban from any sort of interaction or public communication with the community for a specified period of time. No public or private interaction with the people involved, including unsolicited interaction with those enforcing the Code of Conduct, is allowed during this period. Violating these terms may lead to a permanent ban.</p> <h3 id=4-permanent-ban>4. Permanent Ban<a class=headerlink href=#4-permanent-ban title="Permanent link">&para;</a></h3> <p><strong>Community Impact</strong>: Demonstrating a pattern of violation of community standards, including sustained inappropriate behavior, harassment of an individual, or aggression toward or disparagement of classes of individuals.</p> <p><strong>Consequence</strong>: A permanent ban from any sort of public interaction within the community.</p> <h2 id=attribution>Attribution<a class=headerlink href=#attribution title="Permanent link">&para;</a></h2> <p>This Code of Conduct is adapted from the <a href="https://www.contributor-covenant.org">Contributor Covenant</a>, version 2.1, available at <a href="https://www.contributor-covenant.org/version/2/1/code_of_conduct.html">https://www.contributor-covenant.org/version/2/1/code_of_conduct.html</a>.</p> <p>Community Impact Guidelines were inspired by <a href="https://github.com/mozilla/diversity">Mozilla's code of conduct enforcement ladder</a>.</p> <p>For answers to common questions about this code of conduct, see the <abbr title="Frequently Asked Questions">FAQ</abbr> at <a href="https://www.contributor-covenant.org/faq">https://www.contributor-covenant.org/faq</a>. Translations are available at <a href="https://www.contributor-covenant.org/translations">https://www.contributor-covenant.org/translations</a>.</p> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 23, 2026 11:16:18 UTC">June 23, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
+<!doctype html><html lang=en class=no-js> <head><meta charset=utf-8><meta name=viewport content="width=device-width,initial-scale=1"><meta name=author content="Niels Lohmann"><link href="https://json.nlohmann.me/community/code_of_conduct/" rel="canonical"><link href=../ rel=prev><link href=../contribution_guidelines/ rel=next><link rel=icon href=../../assets/images/favicon.png><meta name=generator content="mkdocs-1.6.1, mkdocs-material-9.7.6"><title>Code of Conduct - JSON for Modern C++</title><link rel=stylesheet href=../../assets/stylesheets/main.484c7ddc.min.css><link rel=stylesheet href=../../assets/stylesheets/palette.ab4e12ef.min.css><link rel="stylesheet" href="../../assets/external/fonts.googleapis.com/css.61a430c9.css"><style>:root{--md-text-font:"Roboto";--md-code-font:"JetBrains Mono"}</style><link rel=stylesheet href=../../css/custom.css><script>__md_scope=new URL("../..",location),__md_hash=e=>[...e].reduce(((e,_)=>(e<<5)-e+_.charCodeAt(0)),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script></head> <body dir=ltr data-md-color-scheme=default data-md-color-primary=indigo data-md-color-accent=indigo> <input class=md-toggle data-md-toggle=drawer type=checkbox id=__drawer autocomplete=off> <input class=md-toggle data-md-toggle=search type=checkbox id=__search autocomplete=off> <label class=md-overlay for=__drawer></label> <div data-md-component=skip> <a href=#contributor-covenant-code-of-conduct class=md-skip> Skip to content </a> </div> <div data-md-component=announce> </div> <header class=md-header data-md-component=header> <nav class="md-header__inner md-grid" aria-label=Header> <a href=../.. title="JSON for Modern C++" class="md-header__button md-logo" aria-label="JSON for Modern C++" data-md-component=logo> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54"/></svg> </a> <label class="md-header__button md-icon" for=__drawer> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M3 6h18v2H3zm0 5h18v2H3zm0 5h18v2H3z"/></svg> </label> <div class=md-header__title data-md-component=header-title> <div class=md-header__ellipsis> <div class=md-header__topic> <span class=md-ellipsis> JSON for Modern C++ </span> </div> <div class=md-header__topic data-md-component=header-topic> <span class=md-ellipsis> Code of Conduct </span> </div> </div> </div> <form class=md-header__option data-md-component=palette> <input class=md-option data-md-color-media="(prefers-color-scheme: light)" data-md-color-scheme=default data-md-color-primary=indigo data-md-color-accent=indigo aria-label="Switch to dark mode" type=radio name=__palette id=__palette_0> <label class="md-header__button md-icon" title="Switch to dark mode" for=__palette_1 hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a4 4 0 0 0-4 4 4 4 0 0 0 4 4 4 4 0 0 0 4-4 4 4 0 0 0-4-4m0 10a6 6 0 0 1-6-6 6 6 0 0 1 6-6 6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12z"/></svg> </label> <input class=md-option data-md-color-media="(prefers-color-scheme: dark)" data-md-color-scheme=slate data-md-color-primary=indigo data-md-color-accent=indigo aria-label="Switch to light mode" type=radio name=__palette id=__palette_1> <label class="md-header__button md-icon" title="Switch to light mode" for=__palette_0 hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 18c-.89 0-1.74-.2-2.5-.55C11.56 16.5 13 14.42 13 12s-1.44-4.5-3.5-5.45C10.26 6.2 11.11 6 12 6a6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12z"/></svg> </label> </form> <script>var palette=__md_get("__palette");if(palette&&palette.color){if("(prefers-color-scheme)"===palette.color.media){var media=matchMedia("(prefers-color-scheme: light)"),input=document.querySelector(media.matches?"[data-md-color-media='(prefers-color-scheme: light)']":"[data-md-color-media='(prefers-color-scheme: dark)']");palette.color.media=input.getAttribute("data-md-color-media"),palette.color.scheme=input.getAttribute("data-md-color-scheme"),palette.color.primary=input.getAttribute("data-md-color-primary"),palette.color.accent=input.getAttribute("data-md-color-accent")}for(var[key,value]of Object.entries(palette.color))document.body.setAttribute("data-md-color-"+key,value)}</script> <label class="md-header__button md-icon" for=__search> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg> </label> <div class=md-search data-md-component=search role=dialog> <label class=md-search__overlay for=__search></label> <div class=md-search__inner role=search> <form class=md-search__form name=search> <input type=text class=md-search__input name=query aria-label=Search placeholder=Search autocapitalize=off autocorrect=off autocomplete=off spellcheck=false data-md-component=search-query required> <label class="md-search__icon md-icon" for=__search> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11z"/></svg> </label> <nav class=md-search__options aria-label=Search> <button type=reset class="md-search__icon md-icon" title=Clear aria-label=Clear tabindex=-1> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z"/></svg> </button> </nav> </form> <div class=md-search__output> <div class=md-search__scrollwrap tabindex=0 data-md-scrollfix> <div class=md-search-result data-md-component=search-result> <div class=md-search-result__meta> Initializing search </div> <ol class=md-search-result__list role=presentation></ol> </div> </div> </div> </div> </div> <div class=md-header__source> <a href="https://github.com/nlohmann/json" title="Go to repository" class="md-source" data-md-component="source"> <div class="md-source__icon md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </div> <div class=md-source__repository> nlohmann/json </div> </a> </div> </nav> </header> <div class=md-container data-md-component=container> <nav class=md-tabs aria-label=Tabs data-md-component=tabs> <div class=md-grid> <ul class=md-tabs__list> <li class=md-tabs__item> <a href=../.. class=md-tabs__link> Home </a> </li> <li class=md-tabs__item> <a href=../../features/arbitrary_types/ class=md-tabs__link> Features </a> </li> <li class=md-tabs__item> <a href=../../integration/ class=md-tabs__link> Integration </a> </li> <li class=md-tabs__item> <a href=../../api/basic_json/ class=md-tabs__link> API Documentation </a> </li> <li class="md-tabs__item md-tabs__item--active"> <a href=../ class=md-tabs__link> Community </a> </li> </ul> </div> </nav> <main class=md-main data-md-component=main> <div class="md-main__inner md-grid"> <div class="md-sidebar md-sidebar--primary" data-md-component=sidebar data-md-type=navigation> <div class=md-sidebar__scrollwrap> <div class=md-sidebar__inner> <nav class="md-nav md-nav--primary md-nav--lifted" aria-label=Navigation data-md-level=0> <label class=md-nav__title for=__drawer> <a href=../.. title="JSON for Modern C++" class="md-nav__button md-logo" aria-label="JSON for Modern C++" data-md-component=logo> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54"/></svg> </a> JSON for Modern C++ </label> <div class=md-nav__source> <a href="https://github.com/nlohmann/json" title="Go to repository" class="md-source" data-md-component="source"> <div class="md-source__icon md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </div> <div class=md-source__repository> nlohmann/json </div> </a> </div> <ul class=md-nav__list data-md-scrollfix> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_1> <div class="md-nav__link md-nav__container"> <a href=../.. class="md-nav__link "> <span class=md-ellipsis> Home </span> </a> <label class="md-nav__link " for=__nav_1 id=__nav_1_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_1_label aria-expanded=false> <label class=md-nav__title for=__nav_1> <span class="md-nav__icon md-icon"></span> Home </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../home/license/ class=md-nav__link> <span class=md-ellipsis> License </span> </a> </li> <li class=md-nav__item> <a href=../../home/faq/ class=md-nav__link> <span class=md-ellipsis> FAQ </span> </a> </li> <li class=md-nav__item> <a href=../../home/exceptions/ class=md-nav__link> <span class=md-ellipsis> Exceptions </span> </a> </li> <li class=md-nav__item> <a href=../../home/releases/ class=md-nav__link> <span class=md-ellipsis> Releases </span> </a> </li> <li class=md-nav__item> <a href=../../home/design_goals/ class=md-nav__link> <span class=md-ellipsis> Design goals </span> </a> </li> <li class=md-nav__item> <a href=../../home/architecture/ class=md-nav__link> <span class=md-ellipsis> Architecture </span> </a> </li> <li class=md-nav__item> <a href=../../home/customers/ class=md-nav__link> <span class=md-ellipsis> Customers </span> </a> </li> <li class=md-nav__item> <a href=../../home/sponsors/ class=md-nav__link> <span class=md-ellipsis> Sponsors </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2> <label class=md-nav__link for=__nav_2 id=__nav_2_label tabindex=0> <span class=md-ellipsis> Features </span> <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_2_label aria-expanded=false> <label class=md-nav__title for=__nav_2> <span class="md-nav__icon md-icon"></span> Features </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../features/arbitrary_types/ class=md-nav__link> <span class=md-ellipsis> Arbitrary Type Conversions </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_2> <div class="md-nav__link md-nav__container"> <a href=../../features/binary_formats/ class="md-nav__link "> <span class=md-ellipsis> Binary Formats </span> </a> <label class="md-nav__link " for=__nav_2_2 id=__nav_2_2_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_2_label aria-expanded=false> <label class=md-nav__title for=__nav_2_2> <span class="md-nav__icon md-icon"></span> Binary Formats </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../features/binary_formats/bjdata/ class=md-nav__link> <span class=md-ellipsis> BJData </span> </a> </li> <li class=md-nav__item> <a href=../../features/binary_formats/bson/ class=md-nav__link> <span class=md-ellipsis> BSON </span> </a> </li> <li class=md-nav__item> <a href=../../features/binary_formats/cbor/ class=md-nav__link> <span class=md-ellipsis> CBOR </span> </a> </li> <li class=md-nav__item> <a href=../../features/binary_formats/messagepack/ class=md-nav__link> <span class=md-ellipsis> MessagePack </span> </a> </li> <li class=md-nav__item> <a href=../../features/binary_formats/ubjson/ class=md-nav__link> <span class=md-ellipsis> UBJSON </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../features/binary_values/ class=md-nav__link> <span class=md-ellipsis> Binary Values </span> </a> </li> <li class=md-nav__item> <a href=../../features/comments/ class=md-nav__link> <span class=md-ellipsis> Comments </span> </a> </li> <li class=md-nav__item> <a href=../../features/trailing_commas/ class=md-nav__link> <span class=md-ellipsis> Trailing Commas </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_6> <div class="md-nav__link md-nav__container"> <a href=../../features/element_access/ class="md-nav__link "> <span class=md-ellipsis> Element Access </span> </a> <label class="md-nav__link " for=__nav_2_6 id=__nav_2_6_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_6_label aria-expanded=false> <label class=md-nav__title for=__nav_2_6> <span class="md-nav__icon md-icon"></span> Element Access </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../features/element_access/unchecked_access/ class=md-nav__link> <span class=md-ellipsis> Unchecked access: operator[] </span> </a> </li> <li class=md-nav__item> <a href=../../features/element_access/checked_access/ class=md-nav__link> <span class=md-ellipsis> Checked access: at </span> </a> </li> <li class=md-nav__item> <a href=../../features/element_access/default_value/ class=md-nav__link> <span class=md-ellipsis> Access with default value: value </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../features/iterators/ class=md-nav__link> <span class=md-ellipsis> Iterators </span> </a> </li> <li class=md-nav__item> <a href=../../features/json_pointer/ class=md-nav__link> <span class=md-ellipsis> JSON Pointer </span> </a> </li> <li class=md-nav__item> <a href=../../features/json_patch/ class=md-nav__link> <span class=md-ellipsis> JSON Patch and Diff </span> </a> </li> <li class=md-nav__item> <a href=../../features/merge_patch/ class=md-nav__link> <span class=md-ellipsis> JSON Merge Patch </span> </a> </li> <li class=md-nav__item> <a href=../../features/modules/ class=md-nav__link> <span class=md-ellipsis> Modules </span> </a> </li> <li class=md-nav__item> <a href=../../features/namespace/ class=md-nav__link> <span class=md-ellipsis> nlohmann Namespace </span> </a> </li> <li class=md-nav__item> <a href=../../features/object_order/ class=md-nav__link> <span class=md-ellipsis> Object Order </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_14> <div class="md-nav__link md-nav__container"> <a href=../../features/parsing/ class="md-nav__link "> <span class=md-ellipsis> Parsing </span> </a> <label class="md-nav__link " for=__nav_2_14 id=__nav_2_14_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_14_label aria-expanded=false> <label class=md-nav__title for=__nav_2_14> <span class="md-nav__icon md-icon"></span> Parsing </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../features/parsing/json_lines/ class=md-nav__link> <span class=md-ellipsis> JSON Lines </span> </a> </li> <li class=md-nav__item> <a href=../../features/parsing/parse_exceptions/ class=md-nav__link> <span class=md-ellipsis> Parsing and Exceptions </span> </a> </li> <li class=md-nav__item> <a href=../../features/parsing/parser_callbacks/ class=md-nav__link> <span class=md-ellipsis> Parser Callbacks </span> </a> </li> <li class=md-nav__item> <a href=../../features/parsing/sax_interface/ class=md-nav__link> <span class=md-ellipsis> SAX Interface </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../features/assertions/ class=md-nav__link> <span class=md-ellipsis> Runtime Assertions </span> </a> </li> <li class=md-nav__item> <a href=../../features/enum_conversion/ class=md-nav__link> <span class=md-ellipsis> Specializing enum conversion </span> </a> </li> <li class=md-nav__item> <a href=../../features/macros/ class=md-nav__link> <span class=md-ellipsis> Supported Macros </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_18> <div class="md-nav__link md-nav__container"> <a href=../../features/types/ class="md-nav__link "> <span class=md-ellipsis> Types </span> </a> <label class="md-nav__link " for=__nav_2_18 id=__nav_2_18_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_18_label aria-expanded=false> <label class=md-nav__title for=__nav_2_18> <span class="md-nav__icon md-icon"></span> Types </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../features/types/number_handling/ class=md-nav__link> <span class=md-ellipsis> Number Handling </span> </a> </li> </ul> </nav> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_3> <div class="md-nav__link md-nav__container"> <a href=../../integration/ class="md-nav__link "> <span class=md-ellipsis> Integration </span> </a> <label class="md-nav__link " for=__nav_3 id=__nav_3_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_3_label aria-expanded=false> <label class=md-nav__title for=__nav_3> <span class="md-nav__icon md-icon"></span> Integration </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../integration/migration_guide/ class=md-nav__link> <span class=md-ellipsis> Migration Guide </span> </a> </li> <li class=md-nav__item> <a href=../../integration/cmake/ class=md-nav__link> <span class=md-ellipsis> CMake </span> </a> </li> <li class=md-nav__item> <a href=../../integration/package_managers/ class=md-nav__link> <span class=md-ellipsis> Package Managers </span> </a> </li> <li class=md-nav__item> <a href=../../integration/pkg-config/ class=md-nav__link> <span class=md-ellipsis> Pkg-config </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4> <label class=md-nav__link for=__nav_4 id=__nav_4_label tabindex=0> <span class=md-ellipsis> API Documentation </span> <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_4_label aria-expanded=false> <label class=md-nav__title for=__nav_4> <span class="md-nav__icon md-icon"></span> API Documentation </label> <ul class=md-nav__list data-md-scrollfix> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_1> <div class="md-nav__link md-nav__container"> <a href=../../api/basic_json/ class="md-nav__link "> <span class=md-ellipsis> basic_json </span> </a> <label class="md-nav__link " for=__nav_4_1 id=__nav_4_1_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_1_label aria-expanded=false> <label class=md-nav__title for=__nav_4_1> <span class="md-nav__icon md-icon"></span> basic_json </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../api/basic_json/basic_json/ class=md-nav__link> <span class=md-ellipsis> (Constructor) </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/~basic_json/ class=md-nav__link> <span class=md-ellipsis> (Destructor) </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/accept/ class=md-nav__link> <span class=md-ellipsis> accept </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/array/ class=md-nav__link> <span class=md-ellipsis> array </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/array_t/ class=md-nav__link> <span class=md-ellipsis> array_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/at/ class=md-nav__link> <span class=md-ellipsis> at </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/back/ class=md-nav__link> <span class=md-ellipsis> back </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/begin/ class=md-nav__link> <span class=md-ellipsis> begin </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/binary/ class=md-nav__link> <span class=md-ellipsis> binary </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/binary_t/ class=md-nav__link> <span class=md-ellipsis> binary_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/boolean_t/ class=md-nav__link> <span class=md-ellipsis> boolean_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/cbegin/ class=md-nav__link> <span class=md-ellipsis> cbegin </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/cbor_tag_handler_t/ class=md-nav__link> <span class=md-ellipsis> cbor_tag_handler_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/cend/ class=md-nav__link> <span class=md-ellipsis> cend </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/clear/ class=md-nav__link> <span class=md-ellipsis> clear </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/contains/ class=md-nav__link> <span class=md-ellipsis> contains </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/count/ class=md-nav__link> <span class=md-ellipsis> count </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/crbegin/ class=md-nav__link> <span class=md-ellipsis> crbegin </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/crend/ class=md-nav__link> <span class=md-ellipsis> crend </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/default_object_comparator_t/ class=md-nav__link> <span class=md-ellipsis> default_object_comparator_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/diff/ class=md-nav__link> <span class=md-ellipsis> diff </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/dump/ class=md-nav__link> <span class=md-ellipsis> dump </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/emplace/ class=md-nav__link> <span class=md-ellipsis> emplace </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/emplace_back/ class=md-nav__link> <span class=md-ellipsis> emplace_back </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/empty/ class=md-nav__link> <span class=md-ellipsis> empty </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/end/ class=md-nav__link> <span class=md-ellipsis> end </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/end_pos/ class=md-nav__link> <span class=md-ellipsis> end_pos </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/erase/ class=md-nav__link> <span class=md-ellipsis> erase </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/error_handler_t/ class=md-nav__link> <span class=md-ellipsis> error_handler_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/exception/ class=md-nav__link> <span class=md-ellipsis> exception </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/find/ class=md-nav__link> <span class=md-ellipsis> find </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/flatten/ class=md-nav__link> <span class=md-ellipsis> flatten </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/from_bjdata/ class=md-nav__link> <span class=md-ellipsis> from_bjdata </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/from_bson/ class=md-nav__link> <span class=md-ellipsis> from_bson </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/from_cbor/ class=md-nav__link> <span class=md-ellipsis> from_cbor </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/from_msgpack/ class=md-nav__link> <span class=md-ellipsis> from_msgpack </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/from_ubjson/ class=md-nav__link> <span class=md-ellipsis> from_ubjson </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/front/ class=md-nav__link> <span class=md-ellipsis> front </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/get/ class=md-nav__link> <span class=md-ellipsis> get </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/get_allocator/ class=md-nav__link> <span class=md-ellipsis> get_allocator </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/get_binary/ class=md-nav__link> <span class=md-ellipsis> get_binary </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/get_ptr/ class=md-nav__link> <span class=md-ellipsis> get_ptr </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/get_ref/ class=md-nav__link> <span class=md-ellipsis> get_ref </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/get_to/ class=md-nav__link> <span class=md-ellipsis> get_to </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/std_hash/ class=md-nav__link> <span class=md-ellipsis> std::hash&lt;basic_json&gt; </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/input_format_t/ class=md-nav__link> <span class=md-ellipsis> input_format_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/insert/ class=md-nav__link> <span class=md-ellipsis> insert </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/invalid_iterator/ class=md-nav__link> <span class=md-ellipsis> invalid_iterator </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_array/ class=md-nav__link> <span class=md-ellipsis> is_array </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_binary/ class=md-nav__link> <span class=md-ellipsis> is_binary </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_boolean/ class=md-nav__link> <span class=md-ellipsis> is_boolean </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_discarded/ class=md-nav__link> <span class=md-ellipsis> is_discarded </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_null/ class=md-nav__link> <span class=md-ellipsis> is_null </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_number/ class=md-nav__link> <span class=md-ellipsis> is_number </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_number_float/ class=md-nav__link> <span class=md-ellipsis> is_number_float </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_number_integer/ class=md-nav__link> <span class=md-ellipsis> is_number_integer </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_number_unsigned/ class=md-nav__link> <span class=md-ellipsis> is_number_unsigned </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_object/ class=md-nav__link> <span class=md-ellipsis> is_object </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_primitive/ class=md-nav__link> <span class=md-ellipsis> is_primitive </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_string/ class=md-nav__link> <span class=md-ellipsis> is_string </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_structured/ class=md-nav__link> <span class=md-ellipsis> is_structured </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/items/ class=md-nav__link> <span class=md-ellipsis> items </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/json_base_class_t/ class=md-nav__link> <span class=md-ellipsis> json_base_class_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/json_serializer/ class=md-nav__link> <span class=md-ellipsis> json_serializer </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/max_size/ class=md-nav__link> <span class=md-ellipsis> max_size </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/meta/ class=md-nav__link> <span class=md-ellipsis> meta </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/merge_patch/ class=md-nav__link> <span class=md-ellipsis> merge_patch </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/number_float_t/ class=md-nav__link> <span class=md-ellipsis> number_float_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/number_integer_t/ class=md-nav__link> <span class=md-ellipsis> number_integer_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/number_unsigned_t/ class=md-nav__link> <span class=md-ellipsis> number_unsigned_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/object/ class=md-nav__link> <span class=md-ellipsis> object </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/object_comparator_t/ class=md-nav__link> <span class=md-ellipsis> object_comparator_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/object_t/ class=md-nav__link> <span class=md-ellipsis> object_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/operator_ValueType/ class=md-nav__link> <span class=md-ellipsis> operator ValueType </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/operator_value_t/ class=md-nav__link> <span class=md-ellipsis> operator value_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/operator%5B%5D/ class=md-nav__link> <span class=md-ellipsis> operator[] </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/operator%3D/ class=md-nav__link> <span class=md-ellipsis> operator= </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/operator%2B%3D/ class=md-nav__link> <span class=md-ellipsis> operator+= </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/operator_eq/ class=md-nav__link> <span class=md-ellipsis> operator== </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/operator_ne/ class=md-nav__link> <span class=md-ellipsis> operator!= </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/operator_lt/ class=md-nav__link> <span class=md-ellipsis> operator< </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/operator_gt/ class=md-nav__link> <span class=md-ellipsis> operator> </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/operator_le/ class=md-nav__link> <span class=md-ellipsis> operator<= </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/operator_ge/ class=md-nav__link> <span class=md-ellipsis> operator>= </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/operator_spaceship/ class=md-nav__link> <span class=md-ellipsis> operator<=> </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/out_of_range/ class=md-nav__link> <span class=md-ellipsis> out_of_range </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/other_error/ class=md-nav__link> <span class=md-ellipsis> other_error </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/parse/ class=md-nav__link> <span class=md-ellipsis> parse </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/parse_error/ class=md-nav__link> <span class=md-ellipsis> parse_error </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/parse_event_t/ class=md-nav__link> <span class=md-ellipsis> parse_event_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/parser_callback_t/ class=md-nav__link> <span class=md-ellipsis> parser_callback_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/patch/ class=md-nav__link> <span class=md-ellipsis> patch </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/patch_inplace/ class=md-nav__link> <span class=md-ellipsis> patch_inplace </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/push_back/ class=md-nav__link> <span class=md-ellipsis> push_back </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/rbegin/ class=md-nav__link> <span class=md-ellipsis> rbegin </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/rend/ class=md-nav__link> <span class=md-ellipsis> rend </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/sax_parse/ class=md-nav__link> <span class=md-ellipsis> sax_parse </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/size/ class=md-nav__link> <span class=md-ellipsis> size </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/start_pos/ class=md-nav__link> <span class=md-ellipsis> start_pos </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/string_t/ class=md-nav__link> <span class=md-ellipsis> string_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/swap/ class=md-nav__link> <span class=md-ellipsis> swap </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/std_swap/ class=md-nav__link> <span class=md-ellipsis> std::swap&lt;basic_json&gt; </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/to_bjdata/ class=md-nav__link> <span class=md-ellipsis> to_bjdata </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/to_bson/ class=md-nav__link> <span class=md-ellipsis> to_bson </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/to_cbor/ class=md-nav__link> <span class=md-ellipsis> to_cbor </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/to_msgpack/ class=md-nav__link> <span class=md-ellipsis> to_msgpack </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/to_string/ class=md-nav__link> <span class=md-ellipsis> to_string </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/to_ubjson/ class=md-nav__link> <span class=md-ellipsis> to_ubjson </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/type/ class=md-nav__link> <span class=md-ellipsis> type </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/type_error/ class=md-nav__link> <span class=md-ellipsis> type_error </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/type_name/ class=md-nav__link> <span class=md-ellipsis> type_name </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/unflatten/ class=md-nav__link> <span class=md-ellipsis> unflatten </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/update/ class=md-nav__link> <span class=md-ellipsis> update </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/value/ class=md-nav__link> <span class=md-ellipsis> value </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/value_t/ class=md-nav__link> <span class=md-ellipsis> value_t </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_2> <div class="md-nav__link md-nav__container"> <a href=../../api/byte_container_with_subtype/ class="md-nav__link "> <span class=md-ellipsis> byte_container_with_subtype </span> </a> <label class="md-nav__link " for=__nav_4_2 id=__nav_4_2_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_2_label aria-expanded=false> <label class=md-nav__title for=__nav_4_2> <span class="md-nav__icon md-icon"></span> byte_container_with_subtype </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../api/byte_container_with_subtype/byte_container_with_subtype/ class=md-nav__link> <span class=md-ellipsis> (constructor) </span> </a> </li> <li class=md-nav__item> <a href=../../api/byte_container_with_subtype/clear_subtype/ class=md-nav__link> <span class=md-ellipsis> clear_subtype </span> </a> </li> <li class=md-nav__item> <a href=../../api/byte_container_with_subtype/has_subtype/ class=md-nav__link> <span class=md-ellipsis> has_subtype </span> </a> </li> <li class=md-nav__item> <a href=../../api/byte_container_with_subtype/set_subtype/ class=md-nav__link> <span class=md-ellipsis> set_subtype </span> </a> </li> <li class=md-nav__item> <a href=../../api/byte_container_with_subtype/subtype/ class=md-nav__link> <span class=md-ellipsis> subtype </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_3> <div class="md-nav__link md-nav__container"> <a href=../../api/adl_serializer/ class="md-nav__link "> <span class=md-ellipsis> adl_serializer </span> </a> <label class="md-nav__link " for=__nav_4_3 id=__nav_4_3_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_3_label aria-expanded=false> <label class=md-nav__title for=__nav_4_3> <span class="md-nav__icon md-icon"></span> adl_serializer </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../api/adl_serializer/from_json/ class=md-nav__link> <span class=md-ellipsis> from_json </span> </a> </li> <li class=md-nav__item> <a href=../../api/adl_serializer/to_json/ class=md-nav__link> <span class=md-ellipsis> to_json </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../api/json/ class=md-nav__link> <span class=md-ellipsis> json </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_5> <div class="md-nav__link md-nav__container"> <a href=../../api/json_pointer/ class="md-nav__link "> <span class=md-ellipsis> json_pointer </span> </a> <label class="md-nav__link " for=__nav_4_5 id=__nav_4_5_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_5_label aria-expanded=false> <label class=md-nav__title for=__nav_4_5> <span class="md-nav__icon md-icon"></span> json_pointer </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../api/json_pointer/json_pointer/ class=md-nav__link> <span class=md-ellipsis> (Constructor) </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/back/ class=md-nav__link> <span class=md-ellipsis> back </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/empty/ class=md-nav__link> <span class=md-ellipsis> empty </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/front/ class=md-nav__link> <span class=md-ellipsis> front </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/operator_string_t/ class=md-nav__link> <span class=md-ellipsis> operator string_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/operator_eq/ class=md-nav__link> <span class=md-ellipsis> operator== </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/operator_ne/ class=md-nav__link> <span class=md-ellipsis> operator!= </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/operator_slash/ class=md-nav__link> <span class=md-ellipsis> operator/ </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/operator_slasheq/ class=md-nav__link> <span class=md-ellipsis> operator/= </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/parent_pointer/ class=md-nav__link> <span class=md-ellipsis> parent_pointer </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/pop_back/ class=md-nav__link> <span class=md-ellipsis> pop_back </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/pop_front/ class=md-nav__link> <span class=md-ellipsis> pop_front </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/push_back/ class=md-nav__link> <span class=md-ellipsis> push_back </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/push_front/ class=md-nav__link> <span class=md-ellipsis> push_front </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/string_t/ class=md-nav__link> <span class=md-ellipsis> string_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/to_string/ class=md-nav__link> <span class=md-ellipsis> to_string </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_6> <div class="md-nav__link md-nav__container"> <a href=../../api/json_sax/ class="md-nav__link "> <span class=md-ellipsis> json_sax </span> </a> <label class="md-nav__link " for=__nav_4_6 id=__nav_4_6_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_6_label aria-expanded=false> <label class=md-nav__title for=__nav_4_6> <span class="md-nav__icon md-icon"></span> json_sax </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../api/json_sax/binary/ class=md-nav__link> <span class=md-ellipsis> binary </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_sax/boolean/ class=md-nav__link> <span class=md-ellipsis> boolean </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_sax/end_array/ class=md-nav__link> <span class=md-ellipsis> end_array </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_sax/end_object/ class=md-nav__link> <span class=md-ellipsis> end_object </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_sax/key/ class=md-nav__link> <span class=md-ellipsis> key </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_sax/null/ class=md-nav__link> <span class=md-ellipsis> null </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_sax/number_float/ class=md-nav__link> <span class=md-ellipsis> number_float </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_sax/number_integer/ class=md-nav__link> <span class=md-ellipsis> number_integer </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_sax/number_unsigned/ class=md-nav__link> <span class=md-ellipsis> number_unsigned </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_sax/parse_error/ class=md-nav__link> <span class=md-ellipsis> parse_error </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_sax/start_array/ class=md-nav__link> <span class=md-ellipsis> start_array </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_sax/start_object/ class=md-nav__link> <span class=md-ellipsis> start_object </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_sax/string/ class=md-nav__link> <span class=md-ellipsis> string </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../api/operator_ltlt/ class=md-nav__link> <span class=md-ellipsis> operator<<(basic_json), operator<<(json_pointer) </span> </a> </li> <li class=md-nav__item> <a href=../../api/operator_gtgt/ class=md-nav__link> <span class=md-ellipsis> operator>>(basic_json) </span> </a> </li> <li class=md-nav__item> <a href=../../api/operator_literal_json/ class=md-nav__link> <span class=md-ellipsis> operator""_json </span> </a> </li> <li class=md-nav__item> <a href=../../api/operator_literal_json_pointer/ class=md-nav__link> <span class=md-ellipsis> operator""_json_pointer </span> </a> </li> <li class=md-nav__item> <a href=../../api/ordered_json/ class=md-nav__link> <span class=md-ellipsis> ordered_json </span> </a> </li> <li class=md-nav__item> <a href=../../api/ordered_map/ class=md-nav__link> <span class=md-ellipsis> ordered_map </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_13> <div class="md-nav__link md-nav__container"> <a href=../../api/macros/ class="md-nav__link "> <span class=md-ellipsis> macros </span> </a> <label class="md-nav__link " for=__nav_4_13 id=__nav_4_13_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_13_label aria-expanded=false> <label class=md-nav__title for=__nav_4_13> <span class="md-nav__icon md-icon"></span> macros </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../api/macros/json_assert/ class=md-nav__link> <span class=md-ellipsis> JSON_ASSERT </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_brace_init_copy_semantics/ class=md-nav__link> <span class=md-ellipsis> JSON_BRACE_INIT_COPY_SEMANTICS </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_throw_user/ class=md-nav__link> <span class=md-ellipsis> JSON_CATCH_USER, JSON_THROW_USER, JSON_TRY_USER </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_diagnostics/ class=md-nav__link> <span class=md-ellipsis> JSON_DIAGNOSTICS </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_diagnostic_positions/ class=md-nav__link> <span class=md-ellipsis> JSON_DIAGNOSTIC_POSITIONS </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_disable_enum_serialization/ class=md-nav__link> <span class=md-ellipsis> JSON_DISABLE_ENUM_SERIALIZATION </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_has_cpp_11/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_CPP_11, JSON_HAS_CPP_14, JSON_HAS_CPP_17, JSON_HAS_CPP_20 </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_has_filesystem/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_EXPERIMENTAL_FILESYSTEM, JSON_HAS_FILESYSTEM </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_has_ranges/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_RANGES </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_has_static_rtti/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_STATIC_RTTI </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_has_three_way_comparison/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_THREE_WAY_COMPARISON </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_noexception/ class=md-nav__link> <span class=md-ellipsis> JSON_NOEXCEPTION </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_no_io/ class=md-nav__link> <span class=md-ellipsis> JSON_NO_IO </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_skip_library_version_check/ class=md-nav__link> <span class=md-ellipsis> JSON_SKIP_LIBRARY_VERSION_CHECK </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_skip_unsupported_compiler_check/ class=md-nav__link> <span class=md-ellipsis> JSON_SKIP_UNSUPPORTED_COMPILER_CHECK </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_use_global_udls/ class=md-nav__link> <span class=md-ellipsis> JSON_USE_GLOBAL_UDLS </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_use_implicit_conversions/ class=md-nav__link> <span class=md-ellipsis> JSON_USE_IMPLICIT_CONVERSIONS </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_use_legacy_discarded_value_comparison/ class=md-nav__link> <span class=md-ellipsis> JSON_USE_LEGACY_DISCARDED_VALUE_COMPARISON </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/nlohmann_define_derived_type/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_ONLY_SERIALIZE, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/nlohmann_define_type_intrusive/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_TYPE_INTRUSIVE, NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_TYPE_INTRUSIVE_ONLY_SERIALIZE </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/nlohmann_define_type_non_intrusive/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/nlohmann_define_type_with_names/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_TYPE_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/nlohmann_json_namespace/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_NAMESPACE </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/nlohmann_json_namespace_begin/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_NAMESPACE_BEGIN, NLOHMANN_JSON_NAMESPACE_END </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/nlohmann_json_namespace_no_version/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_NAMESPACE_NO_VERSION </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/nlohmann_json_serialize_enum/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_SERIALIZE_ENUM </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/nlohmann_json_serialize_enum_strict/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_SERIALIZE_ENUM_STRICT </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/nlohmann_json_version_major/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_VERSION_MAJOR, NLOHMANN_JSON_VERSION_MINOR, NLOHMANN_JSON_VERSION_PATCH </span> </a> </li> </ul> </nav> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--active md-nav__item--section md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_5 checked> <div class="md-nav__link md-nav__container"> <a href=../ class="md-nav__link "> <span class=md-ellipsis> Community </span> </a> <label class="md-nav__link " for=__nav_5 id=__nav_5_label tabindex> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_5_label aria-expanded=true> <label class=md-nav__title for=__nav_5> <span class="md-nav__icon md-icon"></span> Community </label> <ul class=md-nav__list data-md-scrollfix> <li class="md-nav__item md-nav__item--active"> <input class="md-nav__toggle md-toggle" type=checkbox id=__toc> <label class="md-nav__link md-nav__link--active" for=__toc> <span class=md-ellipsis> Code of Conduct </span> <span class="md-nav__icon md-icon"></span> </label> <a href=./ class="md-nav__link md-nav__link--active"> <span class=md-ellipsis> Code of Conduct </span> </a> <nav class="md-nav md-nav--secondary" aria-label="Table of contents"> <label class=md-nav__title for=__toc> <span class="md-nav__icon md-icon"></span> Table of contents </label> <ul class=md-nav__list data-md-component=toc data-md-scrollfix> <li class=md-nav__item> <a href=#our-pledge class=md-nav__link> <span class=md-ellipsis> Our Pledge </span> </a> </li> <li class=md-nav__item> <a href=#our-standards class=md-nav__link> <span class=md-ellipsis> Our Standards </span> </a> </li> <li class=md-nav__item> <a href=#enforcement-responsibilities class=md-nav__link> <span class=md-ellipsis> Enforcement Responsibilities </span> </a> </li> <li class=md-nav__item> <a href=#scope class=md-nav__link> <span class=md-ellipsis> Scope </span> </a> </li> <li class=md-nav__item> <a href=#enforcement class=md-nav__link> <span class=md-ellipsis> Enforcement </span> </a> </li> <li class=md-nav__item> <a href=#enforcement-guidelines class=md-nav__link> <span class=md-ellipsis> Enforcement Guidelines </span> </a> <nav class=md-nav aria-label="Enforcement Guidelines"> <ul class=md-nav__list> <li class=md-nav__item> <a href=#1-correction class=md-nav__link> <span class=md-ellipsis> 1. Correction </span> </a> </li> <li class=md-nav__item> <a href=#2-warning class=md-nav__link> <span class=md-ellipsis> 2. Warning </span> </a> </li> <li class=md-nav__item> <a href=#3-temporary-ban class=md-nav__link> <span class=md-ellipsis> 3. Temporary Ban </span> </a> </li> <li class=md-nav__item> <a href=#4-permanent-ban class=md-nav__link> <span class=md-ellipsis> 4. Permanent Ban </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=#attribution class=md-nav__link> <span class=md-ellipsis> Attribution </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../contribution_guidelines/ class=md-nav__link> <span class=md-ellipsis> Contribution Guidelines </span> </a> </li> <li class=md-nav__item> <a href=../quality_assurance/ class=md-nav__link> <span class=md-ellipsis> Quality assurance </span> </a> </li> <li class=md-nav__item> <a href=../governance/ class=md-nav__link> <span class=md-ellipsis> Governance </span> </a> </li> <li class=md-nav__item> <a href=../security_policy/ class=md-nav__link> <span class=md-ellipsis> Security Policy </span> </a> </li> </ul> </nav> </li> </ul> </nav> </div> </div> </div> <div class="md-sidebar md-sidebar--secondary" data-md-component=sidebar data-md-type=toc> <div class=md-sidebar__scrollwrap> <div class=md-sidebar__inner> <nav class="md-nav md-nav--secondary" aria-label="Table of contents"> <label class=md-nav__title for=__toc> <span class="md-nav__icon md-icon"></span> Table of contents </label> <ul class=md-nav__list data-md-component=toc data-md-scrollfix> <li class=md-nav__item> <a href=#our-pledge class=md-nav__link> <span class=md-ellipsis> Our Pledge </span> </a> </li> <li class=md-nav__item> <a href=#our-standards class=md-nav__link> <span class=md-ellipsis> Our Standards </span> </a> </li> <li class=md-nav__item> <a href=#enforcement-responsibilities class=md-nav__link> <span class=md-ellipsis> Enforcement Responsibilities </span> </a> </li> <li class=md-nav__item> <a href=#scope class=md-nav__link> <span class=md-ellipsis> Scope </span> </a> </li> <li class=md-nav__item> <a href=#enforcement class=md-nav__link> <span class=md-ellipsis> Enforcement </span> </a> </li> <li class=md-nav__item> <a href=#enforcement-guidelines class=md-nav__link> <span class=md-ellipsis> Enforcement Guidelines </span> </a> <nav class=md-nav aria-label="Enforcement Guidelines"> <ul class=md-nav__list> <li class=md-nav__item> <a href=#1-correction class=md-nav__link> <span class=md-ellipsis> 1. Correction </span> </a> </li> <li class=md-nav__item> <a href=#2-warning class=md-nav__link> <span class=md-ellipsis> 2. Warning </span> </a> </li> <li class=md-nav__item> <a href=#3-temporary-ban class=md-nav__link> <span class=md-ellipsis> 3. Temporary Ban </span> </a> </li> <li class=md-nav__item> <a href=#4-permanent-ban class=md-nav__link> <span class=md-ellipsis> 4. Permanent Ban </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=#attribution class=md-nav__link> <span class=md-ellipsis> Attribution </span> </a> </li> </ul> </nav> </div> </div> </div> <div class=md-content data-md-component=content> <article class="md-content__inner md-typeset"> <a href="https://github.com/nlohmann/json/edit/develop/docs/mkdocs/docs/community/code_of_conduct.md" title="Edit this page" class="md-content__button md-icon" rel="edit"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M10 20H6V4h7v5h5v3.1l2-2V8l-6-6H6c-1.1 0-2 .9-2 2v16c0 1.1.9 2 2 2h4zm10.2-7c.1 0 .3.1.4.2l1.3 1.3c.2.2.2.6 0 .8l-1 1-2.1-2.1 1-1c.1-.1.2-.2.4-.2m0 3.9L14.1 23H12v-2.1l6.1-6.1z"/></svg> </a> <a href="https://github.com/nlohmann/json/raw/develop/docs/mkdocs/docs/community/code_of_conduct.md" title="View source of this page" class="md-content__button md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M17 18c.56 0 1 .44 1 1s-.44 1-1 1-1-.44-1-1 .44-1 1-1m0-3c-2.73 0-5.06 1.66-6 4 .94 2.34 3.27 4 6 4s5.06-1.66 6-4c-.94-2.34-3.27-4-6-4m0 6.5a2.5 2.5 0 0 1-2.5-2.5 2.5 2.5 0 0 1 2.5-2.5 2.5 2.5 0 0 1 2.5 2.5 2.5 2.5 0 0 1-2.5 2.5M9.27 20H6V4h7v5h5v4.07c.7.08 1.36.25 2 .49V8l-6-6H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h4.5a8.2 8.2 0 0 1-1.23-2"/></svg> </a> <h1 id=contributor-covenant-code-of-conduct>Contributor Covenant Code of Conduct<a class=headerlink href=#contributor-covenant-code-of-conduct title="Permanent link">&para;</a></h1> <h2 id=our-pledge>Our Pledge<a class=headerlink href=#our-pledge title="Permanent link">&para;</a></h2> <p>We as members, contributors, and leaders pledge to make participation in our community a harassment-free experience for everyone, regardless of age, body size, visible or invisible disability, ethnicity, sex characteristics, gender identity and expression, level of experience, education, socio-economic status, nationality, personal appearance, race, caste, color, religion, or sexual identity and orientation.</p> <p>We pledge to act and interact in ways that contribute to an open, welcoming, diverse, inclusive, and healthy community.</p> <h2 id=our-standards>Our Standards<a class=headerlink href=#our-standards title="Permanent link">&para;</a></h2> <p>Examples of behavior that contributes to a positive environment for our community include:</p> <ul> <li>Demonstrating empathy and kindness toward other people</li> <li>Being respectful of differing opinions, viewpoints, and experiences</li> <li>Giving and gracefully accepting constructive feedback</li> <li>Accepting responsibility and apologizing to those affected by our mistakes, and learning from the experience</li> <li>Focusing on what is best not just for us as individuals, but for the overall community</li> </ul> <p>Examples of unacceptable behavior include:</p> <ul> <li>The use of sexualized language or imagery, and sexual attention or advances of any kind</li> <li>Trolling, insulting or derogatory comments, and personal or political attacks</li> <li>Public or private harassment</li> <li>Publishing others' private information, such as a physical or email address, without their explicit permission</li> <li>Other conduct which could reasonably be considered inappropriate in a professional setting</li> </ul> <h2 id=enforcement-responsibilities>Enforcement Responsibilities<a class=headerlink href=#enforcement-responsibilities title="Permanent link">&para;</a></h2> <p>Community leaders are responsible for clarifying and enforcing our standards of acceptable behavior and will take appropriate and fair corrective action in response to any behavior that they deem inappropriate, threatening, offensive, or harmful.</p> <p>Community leaders have the right and responsibility to remove, edit, or reject comments, commits, code, wiki edits, issues, and other contributions that are not aligned to this Code of Conduct, and will communicate reasons for moderation decisions when appropriate.</p> <h2 id=scope>Scope<a class=headerlink href=#scope title="Permanent link">&para;</a></h2> <p>This Code of Conduct applies within all community spaces, and also applies when an individual is officially representing the community in public spaces. Examples of representing our community include using an official email address, posting via an official social media account, or acting as an appointed representative at an online or offline event.</p> <h2 id=enforcement>Enforcement<a class=headerlink href=#enforcement title="Permanent link">&para;</a></h2> <p>Instances of abusive, harassing, or otherwise unacceptable behavior may be reported to the community leaders responsible for enforcement at <a href=mailto:mail@nlohmann.me>mail@nlohmann.me</a>. All complaints will be reviewed and investigated promptly and fairly.</p> <p>All community leaders are obligated to respect the privacy and security of the reporter of any incident.</p> <h2 id=enforcement-guidelines>Enforcement Guidelines<a class=headerlink href=#enforcement-guidelines title="Permanent link">&para;</a></h2> <p>Community leaders will follow these Community Impact Guidelines in determining the consequences for any action they deem in violation of this Code of Conduct:</p> <h3 id=1-correction>1. Correction<a class=headerlink href=#1-correction title="Permanent link">&para;</a></h3> <p><strong>Community Impact</strong>: Use of inappropriate language or other behavior deemed unprofessional or unwelcome in the community.</p> <p><strong>Consequence</strong>: A private, written warning from community leaders, providing clarity around the nature of the violation and an explanation of why the behavior was inappropriate. A public apology may be requested.</p> <h3 id=2-warning>2. Warning<a class=headerlink href=#2-warning title="Permanent link">&para;</a></h3> <p><strong>Community Impact</strong>: A violation through a single incident or series of actions.</p> <p><strong>Consequence</strong>: A warning with consequences for continued behavior. No interaction with the people involved, including unsolicited interaction with those enforcing the Code of Conduct, for a specified period of time. This includes avoiding interactions in community spaces as well as external channels like social media. Violating these terms may lead to a temporary or permanent ban.</p> <h3 id=3-temporary-ban>3. Temporary Ban<a class=headerlink href=#3-temporary-ban title="Permanent link">&para;</a></h3> <p><strong>Community Impact</strong>: A serious violation of community standards, including sustained inappropriate behavior.</p> <p><strong>Consequence</strong>: A temporary ban from any sort of interaction or public communication with the community for a specified period of time. No public or private interaction with the people involved, including unsolicited interaction with those enforcing the Code of Conduct, is allowed during this period. Violating these terms may lead to a permanent ban.</p> <h3 id=4-permanent-ban>4. Permanent Ban<a class=headerlink href=#4-permanent-ban title="Permanent link">&para;</a></h3> <p><strong>Community Impact</strong>: Demonstrating a pattern of violation of community standards, including sustained inappropriate behavior, harassment of an individual, or aggression toward or disparagement of classes of individuals.</p> <p><strong>Consequence</strong>: A permanent ban from any sort of public interaction within the community.</p> <h2 id=attribution>Attribution<a class=headerlink href=#attribution title="Permanent link">&para;</a></h2> <p>This Code of Conduct is adapted from the <a href="https://www.contributor-covenant.org">Contributor Covenant</a>, version 2.1, available at <a href="https://www.contributor-covenant.org/version/2/1/code_of_conduct.html">https://www.contributor-covenant.org/version/2/1/code_of_conduct.html</a>.</p> <p>Community Impact Guidelines were inspired by <a href="https://github.com/mozilla/diversity">Mozilla's code of conduct enforcement ladder</a>.</p> <p>For answers to common questions about this code of conduct, see the <abbr title="Frequently Asked Questions">FAQ</abbr> at <a href="https://www.contributor-covenant.org/faq">https://www.contributor-covenant.org/faq</a>. Translations are available at <a href="https://www.contributor-covenant.org/translations">https://www.contributor-covenant.org/translations</a>.</p> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 29, 2026 20:15:18 UTC">June 29, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
diff --git a/community/contribution_guidelines/index.html b/community/contribution_guidelines/index.html
index bd291a6..38f85dd 100644
--- a/community/contribution_guidelines/index.html
+++ b/community/contribution_guidelines/index.html
@@ -5,4 +5,4 @@
 </code></pre></div> <h4 id=add-tests>Add tests<a class=headerlink href=#add-tests title="Permanent link">&para;</a></h4> <p>The tests are located in <a href="https://github.com/nlohmann/json/tree/develop/tests/src"><code>tests/src/unit-*.cpp</code></a> and contain <a href="https://github.com/doctest/doctest/blob/master/doc/markdown/assertions.md">doctest assertions</a> like <code>CHECK</code>. The tests are structured along the features of the library or the nature of the tests. Usually, it should be clear from the context which existing file needs to be extended, and only very few cases require creating new test files.</p> <p>When fixing a bug, edit <code>unit-regression2.cpp</code> and add a section referencing the fixed issue.</p> <h4 id=exceptions>Exceptions<a class=headerlink href=#exceptions title="Permanent link">&para;</a></h4> <p>When you test exceptions, please use <code>CHECK_THROWS_WITH_AS</code> which also takes the <code>what()</code> argument of the thrown exception into account.</p> <h4 id=coverage>Coverage<a class=headerlink href=#coverage title="Permanent link">&para;</a></h4> <p>If test coverage decreases, an automatic warning comment will be posted on the pull request. You can access a code coverage report as an artifact to the “Ubuntu” workflow.</p> <h3 id=update-the-documentation>Update the documentation<a class=headerlink href=#update-the-documentation title="Permanent link">&para;</a></h3> <p>The <a href="https://json.nlohmann.me">main documentation</a> of the library is generated from the files <a href="https://github.com/nlohmann/json/blob/develop/docs/mkdocs/docs"><code>docs/mkdocs/docs</code></a>. This folder contains dedicated pages for <a href="https://github.com/nlohmann/json/tree/develop/docs/mkdocs/docs/features">certain features</a>, a list of <a href="https://github.com/nlohmann/json/blob/develop/docs/mkdocs/docs/home/exceptions.md">all exceptions</a>, and <a href="https://github.com/nlohmann/json/tree/develop/docs/mkdocs/docs/api">extensive <abbr title="Application Programming Interfaces">API</abbr> documentation</a> with details on every public <abbr title="Application Programming Interfaces">API</abbr> function.</p> <p>Build the documentation locally using:</p> <div class=highlight><pre><span></span><code>make<span class=w> </span>install_venv<span class=w> </span>-C<span class=w> </span>docs/mkdocs
 make<span class=w> </span>serve<span class=w> </span>-C<span class=w> </span>docs/mkdocs
 </code></pre></div> <p>The documentation will then be available at <a href="http://127.0.0.1:8000/">http://127.0.0.1:8000/</a>. See the documentation of <a href="https://www.mkdocs.org">mkdocs</a> and <a href="https://squidfunk.github.io/mkdocs-material/">Material for MkDocs</a> for more information.</p> <h3 id=amalgamate-the-source-code>Amalgamate the source code<a class=headerlink href=#amalgamate-the-source-code title="Permanent link">&para;</a></h3> <p>The single-header files <a href="https://github.com/nlohmann/json/blob/develop/single_include/nlohmann/json.hpp"><code>single_include/nlohmann/json.hpp</code></a> and <a href="https://github.com/nlohmann/json/blob/develop/single_include/nlohmann/json_fwd.hpp"><code>single_include/nlohmann/json_fwd.hpp</code></a> are <strong>generated</strong> from the source files in the <a href="https://github.com/nlohmann/json/tree/develop/include/nlohmann"><code>include/nlohmann</code> directory</a>. <strong>Do not</strong> edit the files directly; instead, modify the include/nlohmann sources and regenerate the files by executing:</p> <div class=highlight><pre><span></span><code>make<span class=w> </span>amalgamate
-</code></pre></div> <p>Running <code>make amalgamate</code> will also apply automatic formatting to the source files using <a href="https://astyle.sourceforge.net/"><code>Artistic Style</code></a>. This formatting may modify your source files in-place. Be certain to review and commit any changes to avoid unintended formatting diffs in commits.</p> <h2 id=recommended-documentation>Recommended documentation<a class=headerlink href=#recommended-documentation title="Permanent link">&para;</a></h2> <ul> <li>The library’s <a href="https://github.com/nlohmann/json/blob/master/README.md">README file</a> is an excellent starting point to understand its functionality.</li> <li>The <a href="https://json.nlohmann.me">documentation page</a> is the reference documentation of the library.</li> <li><a href="https://datatracker.ietf.org/doc/html/rfc8259"><abbr title="Request for Comments">RFC</abbr> 8259</a> is the reference for the JavaScript Object Notation (<abbr title="JavaScript Object Notation">JSON</abbr>) Data Interchange Format.</li> </ul> <h2 id=please-dont>Please don't...<a class=headerlink href=#please-dont title="Permanent link">&para;</a></h2> <p>Certain contributions are not helpful.</p> <h3 id=break-the-public-api>Break the public <abbr title="Application Programming Interfaces">API</abbr><a class=headerlink href=#break-the-public-api title="Permanent link">&para;</a></h3> <p>We take pride in the library being used by <a href="https://json.nlohmann.me/home/customers/">numerous customers across various industries</a>. They all rely on the guarantees provided by <a href="https://semver.org">semantic versioning</a>. Please do not change the library such that the public <abbr title="Application Programming Interfaces">API</abbr> of the 3.x.y version is broken. This includes:</p> <ul> <li>Changing function signatures (altering parameter types, return types, number of parameters) or changing the const-ness of member functions.</li> <li>Removing functions.</li> <li>Renaming functions or classes.</li> <li>Changing exception handling.</li> <li>Changing exception ids.</li> <li>Changing access specifiers.</li> <li>Changing default arguments.</li> </ul> <p>Although these guidelines may seem restrictive, they are essential for maintaining the library’s utility.</p> <p>Breaking changes may be introduced when they are guarded with a feature macro such as <a href="https://json.nlohmann.me/api/macros/json_use_implicit_conversions/"><code>JSON_USE_IMPLICIT_CONVERSIONS</code></a> which allows selectively changing the behavior of the library. In next steps, the current behavior can then be deprecated. Using feature macros then allows users to test their code against the library in the next major release.</p> <h3 id=break-c11-language-conformance>Break C++11 language conformance<a class=headerlink href=#break-c11-language-conformance title="Permanent link">&para;</a></h3> <p>This library is designed to work with C++11 and later. This means that any <a href="https://github.com/nlohmann/json/blob/master/README.md#supported-compilers">supported C++11 compiler</a> should compile the library without problems. Some compilers like <abbr title="GNU Compiler Collection">GCC</abbr> 4.7 (and earlier), Clang 3.3 (and earlier), or Microsoft Visual Studio 13.0 and earlier are known not to work due to missing or incomplete C++11 support.</p> <p>Please do not add features that do not work with the mentioned supported compilers. Please guard features from C++14 and later against the respective <a href="https://json.nlohmann.me/api/macros/json_has_cpp_11/"><code>JSON_HAS_CPP_14</code></a> macros.</p> <h3 id=break-json-conformance>Break <abbr title="JavaScript Object Notation">JSON</abbr> conformance<a class=headerlink href=#break-json-conformance title="Permanent link">&para;</a></h3> <p>Please refrain from proposing changes that would <strong>break <a href="https://datatracker.ietf.org/doc/html/rfc8259"><abbr title="JavaScript Object Notation">JSON</abbr></a> conformance</strong>. If you propose a conformant extension of <abbr title="JavaScript Object Notation">JSON</abbr> to be supported by the library, please motivate this extension.</p> <h2 id=wanted>Wanted<a class=headerlink href=#wanted title="Permanent link">&para;</a></h2> <p>The following areas really need contribution and are always welcomed:</p> <ul> <li>Extending the <strong>continuous integration</strong> toward more exotic compilers such as Android <abbr title="Native Development Kit">NDK</abbr>, Intel's Compiler, or the bleeding-edge versions Clang.</li> <li>Improving the efficiency of the <strong><abbr title="JavaScript Object Notation">JSON</abbr> parser</strong>. The current parser is implemented as a naive recursive descent parser with hand-coded string handling. More sophisticated approaches like LALR parsers would be really appreciated. That said, parser generators like Bison or ANTLR do not play nice with single-header files -- I really would like to keep the parser inside the <code>json.hpp</code> header, and I am not aware of approaches similar to <a href="http://re2c.org"><code>re2c</code></a> for parsing.</li> <li>Extending and updating existing <strong>benchmarks</strong> to include (the most recent version of) this library. Though efficiency is not everything, speed and memory consumption are very important characteristics for C++ developers, so having proper comparisons would be interesting.</li> </ul> <p>We look forward to your contributions and collaboration to enhance the library!</p> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 23, 2026 11:16:18 UTC">June 23, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
+</code></pre></div> <p>Running <code>make amalgamate</code> will also apply automatic formatting to the source files using <a href="https://astyle.sourceforge.net/"><code>Artistic Style</code></a>. This formatting may modify your source files in-place. Be certain to review and commit any changes to avoid unintended formatting diffs in commits.</p> <h2 id=recommended-documentation>Recommended documentation<a class=headerlink href=#recommended-documentation title="Permanent link">&para;</a></h2> <ul> <li>The library’s <a href="https://github.com/nlohmann/json/blob/master/README.md">README file</a> is an excellent starting point to understand its functionality.</li> <li>The <a href="https://json.nlohmann.me">documentation page</a> is the reference documentation of the library.</li> <li><a href="https://datatracker.ietf.org/doc/html/rfc8259"><abbr title="Request for Comments">RFC</abbr> 8259</a> is the reference for the JavaScript Object Notation (<abbr title="JavaScript Object Notation">JSON</abbr>) Data Interchange Format.</li> </ul> <h2 id=please-dont>Please don't...<a class=headerlink href=#please-dont title="Permanent link">&para;</a></h2> <p>Certain contributions are not helpful.</p> <h3 id=break-the-public-api>Break the public <abbr title="Application Programming Interfaces">API</abbr><a class=headerlink href=#break-the-public-api title="Permanent link">&para;</a></h3> <p>We take pride in the library being used by <a href="https://json.nlohmann.me/home/customers/">numerous customers across various industries</a>. They all rely on the guarantees provided by <a href="https://semver.org">semantic versioning</a>. Please do not change the library such that the public <abbr title="Application Programming Interfaces">API</abbr> of the 3.x.y version is broken. This includes:</p> <ul> <li>Changing function signatures (altering parameter types, return types, number of parameters) or changing the const-ness of member functions.</li> <li>Removing functions.</li> <li>Renaming functions or classes.</li> <li>Changing exception handling.</li> <li>Changing exception ids.</li> <li>Changing access specifiers.</li> <li>Changing default arguments.</li> </ul> <p>Although these guidelines may seem restrictive, they are essential for maintaining the library’s utility.</p> <p>Breaking changes may be introduced when they are guarded with a feature macro such as <a href="https://json.nlohmann.me/api/macros/json_use_implicit_conversions/"><code>JSON_USE_IMPLICIT_CONVERSIONS</code></a> which allows selectively changing the behavior of the library. In next steps, the current behavior can then be deprecated. Using feature macros then allows users to test their code against the library in the next major release.</p> <h3 id=break-c11-language-conformance>Break C++11 language conformance<a class=headerlink href=#break-c11-language-conformance title="Permanent link">&para;</a></h3> <p>This library is designed to work with C++11 and later. This means that any <a href="https://github.com/nlohmann/json/blob/master/README.md#supported-compilers">supported C++11 compiler</a> should compile the library without problems. Some compilers like <abbr title="GNU Compiler Collection">GCC</abbr> 4.7 (and earlier), Clang 3.3 (and earlier), or Microsoft Visual Studio 13.0 and earlier are known not to work due to missing or incomplete C++11 support.</p> <p>Please do not add features that do not work with the mentioned supported compilers. Please guard features from C++14 and later against the respective <a href="https://json.nlohmann.me/api/macros/json_has_cpp_11/"><code>JSON_HAS_CPP_14</code></a> macros.</p> <h3 id=break-json-conformance>Break <abbr title="JavaScript Object Notation">JSON</abbr> conformance<a class=headerlink href=#break-json-conformance title="Permanent link">&para;</a></h3> <p>Please refrain from proposing changes that would <strong>break <a href="https://datatracker.ietf.org/doc/html/rfc8259"><abbr title="JavaScript Object Notation">JSON</abbr></a> conformance</strong>. If you propose a conformant extension of <abbr title="JavaScript Object Notation">JSON</abbr> to be supported by the library, please motivate this extension.</p> <h2 id=wanted>Wanted<a class=headerlink href=#wanted title="Permanent link">&para;</a></h2> <p>The following areas really need contribution and are always welcomed:</p> <ul> <li>Extending the <strong>continuous integration</strong> toward more exotic compilers such as Android <abbr title="Native Development Kit">NDK</abbr>, Intel's Compiler, or the bleeding-edge versions Clang.</li> <li>Improving the efficiency of the <strong><abbr title="JavaScript Object Notation">JSON</abbr> parser</strong>. The current parser is implemented as a naive recursive descent parser with hand-coded string handling. More sophisticated approaches like LALR parsers would be really appreciated. That said, parser generators like Bison or ANTLR do not play nice with single-header files -- I really would like to keep the parser inside the <code>json.hpp</code> header, and I am not aware of approaches similar to <a href="http://re2c.org"><code>re2c</code></a> for parsing.</li> <li>Extending and updating existing <strong>benchmarks</strong> to include (the most recent version of) this library. Though efficiency is not everything, speed and memory consumption are very important characteristics for C++ developers, so having proper comparisons would be interesting.</li> </ul> <p>We look forward to your contributions and collaboration to enhance the library!</p> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 29, 2026 20:15:18 UTC">June 29, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
diff --git a/community/governance/index.html b/community/governance/index.html
index ef3162a..15d7466 100644
--- a/community/governance/index.html
+++ b/community/governance/index.html
@@ -1 +1 @@
-<!doctype html><html lang=en class=no-js> <head><meta charset=utf-8><meta name=viewport content="width=device-width,initial-scale=1"><meta name=author content="Niels Lohmann"><link href="https://json.nlohmann.me/community/governance/" rel="canonical"><link href=../quality_assurance/ rel=prev><link href=../security_policy/ rel=next><link rel=icon href=../../assets/images/favicon.png><meta name=generator content="mkdocs-1.6.1, mkdocs-material-9.7.6"><title>Governance - JSON for Modern C++</title><link rel=stylesheet href=../../assets/stylesheets/main.484c7ddc.min.css><link rel=stylesheet href=../../assets/stylesheets/palette.ab4e12ef.min.css><link rel="stylesheet" href="../../assets/external/fonts.googleapis.com/css.61a430c9.css"><style>:root{--md-text-font:"Roboto";--md-code-font:"JetBrains Mono"}</style><link rel=stylesheet href=../../css/custom.css><script>__md_scope=new URL("../..",location),__md_hash=e=>[...e].reduce(((e,_)=>(e<<5)-e+_.charCodeAt(0)),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script></head> <body dir=ltr data-md-color-scheme=default data-md-color-primary=indigo data-md-color-accent=indigo> <input class=md-toggle data-md-toggle=drawer type=checkbox id=__drawer autocomplete=off> <input class=md-toggle data-md-toggle=search type=checkbox id=__search autocomplete=off> <label class=md-overlay for=__drawer></label> <div data-md-component=skip> <a href=#governance class=md-skip> Skip to content </a> </div> <div data-md-component=announce> </div> <header class=md-header data-md-component=header> <nav class="md-header__inner md-grid" aria-label=Header> <a href=../.. title="JSON for Modern C++" class="md-header__button md-logo" aria-label="JSON for Modern C++" data-md-component=logo> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54"/></svg> </a> <label class="md-header__button md-icon" for=__drawer> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M3 6h18v2H3zm0 5h18v2H3zm0 5h18v2H3z"/></svg> </label> <div class=md-header__title data-md-component=header-title> <div class=md-header__ellipsis> <div class=md-header__topic> <span class=md-ellipsis> JSON for Modern C++ </span> </div> <div class=md-header__topic data-md-component=header-topic> <span class=md-ellipsis> Governance </span> </div> </div> </div> <form class=md-header__option data-md-component=palette> <input class=md-option data-md-color-media="(prefers-color-scheme: light)" data-md-color-scheme=default data-md-color-primary=indigo data-md-color-accent=indigo aria-label="Switch to dark mode" type=radio name=__palette id=__palette_0> <label class="md-header__button md-icon" title="Switch to dark mode" for=__palette_1 hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a4 4 0 0 0-4 4 4 4 0 0 0 4 4 4 4 0 0 0 4-4 4 4 0 0 0-4-4m0 10a6 6 0 0 1-6-6 6 6 0 0 1 6-6 6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12z"/></svg> </label> <input class=md-option data-md-color-media="(prefers-color-scheme: dark)" data-md-color-scheme=slate data-md-color-primary=indigo data-md-color-accent=indigo aria-label="Switch to light mode" type=radio name=__palette id=__palette_1> <label class="md-header__button md-icon" title="Switch to light mode" for=__palette_0 hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 18c-.89 0-1.74-.2-2.5-.55C11.56 16.5 13 14.42 13 12s-1.44-4.5-3.5-5.45C10.26 6.2 11.11 6 12 6a6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12z"/></svg> </label> </form> <script>var palette=__md_get("__palette");if(palette&&palette.color){if("(prefers-color-scheme)"===palette.color.media){var media=matchMedia("(prefers-color-scheme: light)"),input=document.querySelector(media.matches?"[data-md-color-media='(prefers-color-scheme: light)']":"[data-md-color-media='(prefers-color-scheme: dark)']");palette.color.media=input.getAttribute("data-md-color-media"),palette.color.scheme=input.getAttribute("data-md-color-scheme"),palette.color.primary=input.getAttribute("data-md-color-primary"),palette.color.accent=input.getAttribute("data-md-color-accent")}for(var[key,value]of Object.entries(palette.color))document.body.setAttribute("data-md-color-"+key,value)}</script> <label class="md-header__button md-icon" for=__search> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg> </label> <div class=md-search data-md-component=search role=dialog> <label class=md-search__overlay for=__search></label> <div class=md-search__inner role=search> <form class=md-search__form name=search> <input type=text class=md-search__input name=query aria-label=Search placeholder=Search autocapitalize=off autocorrect=off autocomplete=off spellcheck=false data-md-component=search-query required> <label class="md-search__icon md-icon" for=__search> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11z"/></svg> </label> <nav class=md-search__options aria-label=Search> <button type=reset class="md-search__icon md-icon" title=Clear aria-label=Clear tabindex=-1> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z"/></svg> </button> </nav> </form> <div class=md-search__output> <div class=md-search__scrollwrap tabindex=0 data-md-scrollfix> <div class=md-search-result data-md-component=search-result> <div class=md-search-result__meta> Initializing search </div> <ol class=md-search-result__list role=presentation></ol> </div> </div> </div> </div> </div> <div class=md-header__source> <a href="https://github.com/nlohmann/json" title="Go to repository" class="md-source" data-md-component="source"> <div class="md-source__icon md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </div> <div class=md-source__repository> nlohmann/json </div> </a> </div> </nav> </header> <div class=md-container data-md-component=container> <nav class=md-tabs aria-label=Tabs data-md-component=tabs> <div class=md-grid> <ul class=md-tabs__list> <li class=md-tabs__item> <a href=../.. class=md-tabs__link> Home </a> </li> <li class=md-tabs__item> <a href=../../features/arbitrary_types/ class=md-tabs__link> Features </a> </li> <li class=md-tabs__item> <a href=../../integration/ class=md-tabs__link> Integration </a> </li> <li class=md-tabs__item> <a href=../../api/basic_json/ class=md-tabs__link> API Documentation </a> </li> <li class="md-tabs__item md-tabs__item--active"> <a href=../ class=md-tabs__link> Community </a> </li> </ul> </div> </nav> <main class=md-main data-md-component=main> <div class="md-main__inner md-grid"> <div class="md-sidebar md-sidebar--primary" data-md-component=sidebar data-md-type=navigation> <div class=md-sidebar__scrollwrap> <div class=md-sidebar__inner> <nav class="md-nav md-nav--primary md-nav--lifted" aria-label=Navigation data-md-level=0> <label class=md-nav__title for=__drawer> <a href=../.. title="JSON for Modern C++" class="md-nav__button md-logo" aria-label="JSON for Modern C++" data-md-component=logo> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54"/></svg> </a> JSON for Modern C++ </label> <div class=md-nav__source> <a href="https://github.com/nlohmann/json" title="Go to repository" class="md-source" data-md-component="source"> <div class="md-source__icon md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </div> <div class=md-source__repository> nlohmann/json </div> </a> </div> <ul class=md-nav__list data-md-scrollfix> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_1> <div class="md-nav__link md-nav__container"> <a href=../.. class="md-nav__link "> <span class=md-ellipsis> Home </span> </a> <label class="md-nav__link " for=__nav_1 id=__nav_1_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_1_label aria-expanded=false> <label class=md-nav__title for=__nav_1> <span class="md-nav__icon md-icon"></span> Home </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../home/license/ class=md-nav__link> <span class=md-ellipsis> License </span> </a> </li> <li class=md-nav__item> <a href=../../home/faq/ class=md-nav__link> <span class=md-ellipsis> FAQ </span> </a> </li> <li class=md-nav__item> <a href=../../home/exceptions/ class=md-nav__link> <span class=md-ellipsis> Exceptions </span> </a> </li> <li class=md-nav__item> <a href=../../home/releases/ class=md-nav__link> <span class=md-ellipsis> Releases </span> </a> </li> <li class=md-nav__item> <a href=../../home/design_goals/ class=md-nav__link> <span class=md-ellipsis> Design goals </span> </a> </li> <li class=md-nav__item> <a href=../../home/architecture/ class=md-nav__link> <span class=md-ellipsis> Architecture </span> </a> </li> <li class=md-nav__item> <a href=../../home/customers/ class=md-nav__link> <span class=md-ellipsis> Customers </span> </a> </li> <li class=md-nav__item> <a href=../../home/sponsors/ class=md-nav__link> <span class=md-ellipsis> Sponsors </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2> <label class=md-nav__link for=__nav_2 id=__nav_2_label tabindex=0> <span class=md-ellipsis> Features </span> <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_2_label aria-expanded=false> <label class=md-nav__title for=__nav_2> <span class="md-nav__icon md-icon"></span> Features </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../features/arbitrary_types/ class=md-nav__link> <span class=md-ellipsis> Arbitrary Type Conversions </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_2> <div class="md-nav__link md-nav__container"> <a href=../../features/binary_formats/ class="md-nav__link "> <span class=md-ellipsis> Binary Formats </span> </a> <label class="md-nav__link " for=__nav_2_2 id=__nav_2_2_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_2_label aria-expanded=false> <label class=md-nav__title for=__nav_2_2> <span class="md-nav__icon md-icon"></span> Binary Formats </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../features/binary_formats/bjdata/ class=md-nav__link> <span class=md-ellipsis> BJData </span> </a> </li> <li class=md-nav__item> <a href=../../features/binary_formats/bson/ class=md-nav__link> <span class=md-ellipsis> BSON </span> </a> </li> <li class=md-nav__item> <a href=../../features/binary_formats/cbor/ class=md-nav__link> <span class=md-ellipsis> CBOR </span> </a> </li> <li class=md-nav__item> <a href=../../features/binary_formats/messagepack/ class=md-nav__link> <span class=md-ellipsis> MessagePack </span> </a> </li> <li class=md-nav__item> <a href=../../features/binary_formats/ubjson/ class=md-nav__link> <span class=md-ellipsis> UBJSON </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../features/binary_values/ class=md-nav__link> <span class=md-ellipsis> Binary Values </span> </a> </li> <li class=md-nav__item> <a href=../../features/comments/ class=md-nav__link> <span class=md-ellipsis> Comments </span> </a> </li> <li class=md-nav__item> <a href=../../features/trailing_commas/ class=md-nav__link> <span class=md-ellipsis> Trailing Commas </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_6> <div class="md-nav__link md-nav__container"> <a href=../../features/element_access/ class="md-nav__link "> <span class=md-ellipsis> Element Access </span> </a> <label class="md-nav__link " for=__nav_2_6 id=__nav_2_6_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_6_label aria-expanded=false> <label class=md-nav__title for=__nav_2_6> <span class="md-nav__icon md-icon"></span> Element Access </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../features/element_access/unchecked_access/ class=md-nav__link> <span class=md-ellipsis> Unchecked access: operator[] </span> </a> </li> <li class=md-nav__item> <a href=../../features/element_access/checked_access/ class=md-nav__link> <span class=md-ellipsis> Checked access: at </span> </a> </li> <li class=md-nav__item> <a href=../../features/element_access/default_value/ class=md-nav__link> <span class=md-ellipsis> Access with default value: value </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../features/iterators/ class=md-nav__link> <span class=md-ellipsis> Iterators </span> </a> </li> <li class=md-nav__item> <a href=../../features/json_pointer/ class=md-nav__link> <span class=md-ellipsis> JSON Pointer </span> </a> </li> <li class=md-nav__item> <a href=../../features/json_patch/ class=md-nav__link> <span class=md-ellipsis> JSON Patch and Diff </span> </a> </li> <li class=md-nav__item> <a href=../../features/merge_patch/ class=md-nav__link> <span class=md-ellipsis> JSON Merge Patch </span> </a> </li> <li class=md-nav__item> <a href=../../features/modules/ class=md-nav__link> <span class=md-ellipsis> Modules </span> </a> </li> <li class=md-nav__item> <a href=../../features/namespace/ class=md-nav__link> <span class=md-ellipsis> nlohmann Namespace </span> </a> </li> <li class=md-nav__item> <a href=../../features/object_order/ class=md-nav__link> <span class=md-ellipsis> Object Order </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_14> <div class="md-nav__link md-nav__container"> <a href=../../features/parsing/ class="md-nav__link "> <span class=md-ellipsis> Parsing </span> </a> <label class="md-nav__link " for=__nav_2_14 id=__nav_2_14_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_14_label aria-expanded=false> <label class=md-nav__title for=__nav_2_14> <span class="md-nav__icon md-icon"></span> Parsing </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../features/parsing/json_lines/ class=md-nav__link> <span class=md-ellipsis> JSON Lines </span> </a> </li> <li class=md-nav__item> <a href=../../features/parsing/parse_exceptions/ class=md-nav__link> <span class=md-ellipsis> Parsing and Exceptions </span> </a> </li> <li class=md-nav__item> <a href=../../features/parsing/parser_callbacks/ class=md-nav__link> <span class=md-ellipsis> Parser Callbacks </span> </a> </li> <li class=md-nav__item> <a href=../../features/parsing/sax_interface/ class=md-nav__link> <span class=md-ellipsis> SAX Interface </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../features/assertions/ class=md-nav__link> <span class=md-ellipsis> Runtime Assertions </span> </a> </li> <li class=md-nav__item> <a href=../../features/enum_conversion/ class=md-nav__link> <span class=md-ellipsis> Specializing enum conversion </span> </a> </li> <li class=md-nav__item> <a href=../../features/macros/ class=md-nav__link> <span class=md-ellipsis> Supported Macros </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_18> <div class="md-nav__link md-nav__container"> <a href=../../features/types/ class="md-nav__link "> <span class=md-ellipsis> Types </span> </a> <label class="md-nav__link " for=__nav_2_18 id=__nav_2_18_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_18_label aria-expanded=false> <label class=md-nav__title for=__nav_2_18> <span class="md-nav__icon md-icon"></span> Types </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../features/types/number_handling/ class=md-nav__link> <span class=md-ellipsis> Number Handling </span> </a> </li> </ul> </nav> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_3> <div class="md-nav__link md-nav__container"> <a href=../../integration/ class="md-nav__link "> <span class=md-ellipsis> Integration </span> </a> <label class="md-nav__link " for=__nav_3 id=__nav_3_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_3_label aria-expanded=false> <label class=md-nav__title for=__nav_3> <span class="md-nav__icon md-icon"></span> Integration </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../integration/migration_guide/ class=md-nav__link> <span class=md-ellipsis> Migration Guide </span> </a> </li> <li class=md-nav__item> <a href=../../integration/cmake/ class=md-nav__link> <span class=md-ellipsis> CMake </span> </a> </li> <li class=md-nav__item> <a href=../../integration/package_managers/ class=md-nav__link> <span class=md-ellipsis> Package Managers </span> </a> </li> <li class=md-nav__item> <a href=../../integration/pkg-config/ class=md-nav__link> <span class=md-ellipsis> Pkg-config </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4> <label class=md-nav__link for=__nav_4 id=__nav_4_label tabindex=0> <span class=md-ellipsis> API Documentation </span> <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_4_label aria-expanded=false> <label class=md-nav__title for=__nav_4> <span class="md-nav__icon md-icon"></span> API Documentation </label> <ul class=md-nav__list data-md-scrollfix> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_1> <div class="md-nav__link md-nav__container"> <a href=../../api/basic_json/ class="md-nav__link "> <span class=md-ellipsis> basic_json </span> </a> <label class="md-nav__link " for=__nav_4_1 id=__nav_4_1_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_1_label aria-expanded=false> <label class=md-nav__title for=__nav_4_1> <span class="md-nav__icon md-icon"></span> basic_json </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../api/basic_json/basic_json/ class=md-nav__link> <span class=md-ellipsis> (Constructor) </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/~basic_json/ class=md-nav__link> <span class=md-ellipsis> (Destructor) </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/accept/ class=md-nav__link> <span class=md-ellipsis> accept </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/array/ class=md-nav__link> <span class=md-ellipsis> array </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/array_t/ class=md-nav__link> <span class=md-ellipsis> array_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/at/ class=md-nav__link> <span class=md-ellipsis> at </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/back/ class=md-nav__link> <span class=md-ellipsis> back </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/begin/ class=md-nav__link> <span class=md-ellipsis> begin </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/binary/ class=md-nav__link> <span class=md-ellipsis> binary </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/binary_t/ class=md-nav__link> <span class=md-ellipsis> binary_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/boolean_t/ class=md-nav__link> <span class=md-ellipsis> boolean_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/cbegin/ class=md-nav__link> <span class=md-ellipsis> cbegin </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/cbor_tag_handler_t/ class=md-nav__link> <span class=md-ellipsis> cbor_tag_handler_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/cend/ class=md-nav__link> <span class=md-ellipsis> cend </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/clear/ class=md-nav__link> <span class=md-ellipsis> clear </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/contains/ class=md-nav__link> <span class=md-ellipsis> contains </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/count/ class=md-nav__link> <span class=md-ellipsis> count </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/crbegin/ class=md-nav__link> <span class=md-ellipsis> crbegin </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/crend/ class=md-nav__link> <span class=md-ellipsis> crend </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/default_object_comparator_t/ class=md-nav__link> <span class=md-ellipsis> default_object_comparator_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/diff/ class=md-nav__link> <span class=md-ellipsis> diff </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/dump/ class=md-nav__link> <span class=md-ellipsis> dump </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/emplace/ class=md-nav__link> <span class=md-ellipsis> emplace </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/emplace_back/ class=md-nav__link> <span class=md-ellipsis> emplace_back </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/empty/ class=md-nav__link> <span class=md-ellipsis> empty </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/end/ class=md-nav__link> <span class=md-ellipsis> end </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/end_pos/ class=md-nav__link> <span class=md-ellipsis> end_pos </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/erase/ class=md-nav__link> <span class=md-ellipsis> erase </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/error_handler_t/ class=md-nav__link> <span class=md-ellipsis> error_handler_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/exception/ class=md-nav__link> <span class=md-ellipsis> exception </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/find/ class=md-nav__link> <span class=md-ellipsis> find </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/flatten/ class=md-nav__link> <span class=md-ellipsis> flatten </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/from_bjdata/ class=md-nav__link> <span class=md-ellipsis> from_bjdata </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/from_bson/ class=md-nav__link> <span class=md-ellipsis> from_bson </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/from_cbor/ class=md-nav__link> <span class=md-ellipsis> from_cbor </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/from_msgpack/ class=md-nav__link> <span class=md-ellipsis> from_msgpack </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/from_ubjson/ class=md-nav__link> <span class=md-ellipsis> from_ubjson </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/front/ class=md-nav__link> <span class=md-ellipsis> front </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/get/ class=md-nav__link> <span class=md-ellipsis> get </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/get_allocator/ class=md-nav__link> <span class=md-ellipsis> get_allocator </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/get_binary/ class=md-nav__link> <span class=md-ellipsis> get_binary </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/get_ptr/ class=md-nav__link> <span class=md-ellipsis> get_ptr </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/get_ref/ class=md-nav__link> <span class=md-ellipsis> get_ref </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/get_to/ class=md-nav__link> <span class=md-ellipsis> get_to </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/std_hash/ class=md-nav__link> <span class=md-ellipsis> std::hash&lt;basic_json&gt; </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/input_format_t/ class=md-nav__link> <span class=md-ellipsis> input_format_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/insert/ class=md-nav__link> <span class=md-ellipsis> insert </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/invalid_iterator/ class=md-nav__link> <span class=md-ellipsis> invalid_iterator </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_array/ class=md-nav__link> <span class=md-ellipsis> is_array </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_binary/ class=md-nav__link> <span class=md-ellipsis> is_binary </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_boolean/ class=md-nav__link> <span class=md-ellipsis> is_boolean </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_discarded/ class=md-nav__link> <span class=md-ellipsis> is_discarded </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_null/ class=md-nav__link> <span class=md-ellipsis> is_null </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_number/ class=md-nav__link> <span class=md-ellipsis> is_number </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_number_float/ class=md-nav__link> <span class=md-ellipsis> is_number_float </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_number_integer/ class=md-nav__link> <span class=md-ellipsis> is_number_integer </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_number_unsigned/ class=md-nav__link> <span class=md-ellipsis> is_number_unsigned </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_object/ class=md-nav__link> <span class=md-ellipsis> is_object </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_primitive/ class=md-nav__link> <span class=md-ellipsis> is_primitive </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_string/ class=md-nav__link> <span class=md-ellipsis> is_string </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_structured/ class=md-nav__link> <span class=md-ellipsis> is_structured </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/items/ class=md-nav__link> <span class=md-ellipsis> items </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/json_base_class_t/ class=md-nav__link> <span class=md-ellipsis> json_base_class_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/json_serializer/ class=md-nav__link> <span class=md-ellipsis> json_serializer </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/max_size/ class=md-nav__link> <span class=md-ellipsis> max_size </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/meta/ class=md-nav__link> <span class=md-ellipsis> meta </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/merge_patch/ class=md-nav__link> <span class=md-ellipsis> merge_patch </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/number_float_t/ class=md-nav__link> <span class=md-ellipsis> number_float_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/number_integer_t/ class=md-nav__link> <span class=md-ellipsis> number_integer_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/number_unsigned_t/ class=md-nav__link> <span class=md-ellipsis> number_unsigned_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/object/ class=md-nav__link> <span class=md-ellipsis> object </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/object_comparator_t/ class=md-nav__link> <span class=md-ellipsis> object_comparator_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/object_t/ class=md-nav__link> <span class=md-ellipsis> object_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/operator_ValueType/ class=md-nav__link> <span class=md-ellipsis> operator ValueType </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/operator_value_t/ class=md-nav__link> <span class=md-ellipsis> operator value_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/operator%5B%5D/ class=md-nav__link> <span class=md-ellipsis> operator[] </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/operator%3D/ class=md-nav__link> <span class=md-ellipsis> operator= </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/operator%2B%3D/ class=md-nav__link> <span class=md-ellipsis> operator+= </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/operator_eq/ class=md-nav__link> <span class=md-ellipsis> operator== </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/operator_ne/ class=md-nav__link> <span class=md-ellipsis> operator!= </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/operator_lt/ class=md-nav__link> <span class=md-ellipsis> operator< </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/operator_gt/ class=md-nav__link> <span class=md-ellipsis> operator> </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/operator_le/ class=md-nav__link> <span class=md-ellipsis> operator<= </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/operator_ge/ class=md-nav__link> <span class=md-ellipsis> operator>= </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/operator_spaceship/ class=md-nav__link> <span class=md-ellipsis> operator<=> </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/out_of_range/ class=md-nav__link> <span class=md-ellipsis> out_of_range </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/other_error/ class=md-nav__link> <span class=md-ellipsis> other_error </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/parse/ class=md-nav__link> <span class=md-ellipsis> parse </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/parse_error/ class=md-nav__link> <span class=md-ellipsis> parse_error </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/parse_event_t/ class=md-nav__link> <span class=md-ellipsis> parse_event_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/parser_callback_t/ class=md-nav__link> <span class=md-ellipsis> parser_callback_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/patch/ class=md-nav__link> <span class=md-ellipsis> patch </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/patch_inplace/ class=md-nav__link> <span class=md-ellipsis> patch_inplace </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/push_back/ class=md-nav__link> <span class=md-ellipsis> push_back </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/rbegin/ class=md-nav__link> <span class=md-ellipsis> rbegin </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/rend/ class=md-nav__link> <span class=md-ellipsis> rend </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/sax_parse/ class=md-nav__link> <span class=md-ellipsis> sax_parse </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/size/ class=md-nav__link> <span class=md-ellipsis> size </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/start_pos/ class=md-nav__link> <span class=md-ellipsis> start_pos </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/string_t/ class=md-nav__link> <span class=md-ellipsis> string_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/swap/ class=md-nav__link> <span class=md-ellipsis> swap </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/std_swap/ class=md-nav__link> <span class=md-ellipsis> std::swap&lt;basic_json&gt; </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/to_bjdata/ class=md-nav__link> <span class=md-ellipsis> to_bjdata </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/to_bson/ class=md-nav__link> <span class=md-ellipsis> to_bson </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/to_cbor/ class=md-nav__link> <span class=md-ellipsis> to_cbor </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/to_msgpack/ class=md-nav__link> <span class=md-ellipsis> to_msgpack </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/to_string/ class=md-nav__link> <span class=md-ellipsis> to_string </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/to_ubjson/ class=md-nav__link> <span class=md-ellipsis> to_ubjson </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/type/ class=md-nav__link> <span class=md-ellipsis> type </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/type_error/ class=md-nav__link> <span class=md-ellipsis> type_error </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/type_name/ class=md-nav__link> <span class=md-ellipsis> type_name </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/unflatten/ class=md-nav__link> <span class=md-ellipsis> unflatten </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/update/ class=md-nav__link> <span class=md-ellipsis> update </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/value/ class=md-nav__link> <span class=md-ellipsis> value </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/value_t/ class=md-nav__link> <span class=md-ellipsis> value_t </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_2> <div class="md-nav__link md-nav__container"> <a href=../../api/byte_container_with_subtype/ class="md-nav__link "> <span class=md-ellipsis> byte_container_with_subtype </span> </a> <label class="md-nav__link " for=__nav_4_2 id=__nav_4_2_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_2_label aria-expanded=false> <label class=md-nav__title for=__nav_4_2> <span class="md-nav__icon md-icon"></span> byte_container_with_subtype </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../api/byte_container_with_subtype/byte_container_with_subtype/ class=md-nav__link> <span class=md-ellipsis> (constructor) </span> </a> </li> <li class=md-nav__item> <a href=../../api/byte_container_with_subtype/clear_subtype/ class=md-nav__link> <span class=md-ellipsis> clear_subtype </span> </a> </li> <li class=md-nav__item> <a href=../../api/byte_container_with_subtype/has_subtype/ class=md-nav__link> <span class=md-ellipsis> has_subtype </span> </a> </li> <li class=md-nav__item> <a href=../../api/byte_container_with_subtype/set_subtype/ class=md-nav__link> <span class=md-ellipsis> set_subtype </span> </a> </li> <li class=md-nav__item> <a href=../../api/byte_container_with_subtype/subtype/ class=md-nav__link> <span class=md-ellipsis> subtype </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_3> <div class="md-nav__link md-nav__container"> <a href=../../api/adl_serializer/ class="md-nav__link "> <span class=md-ellipsis> adl_serializer </span> </a> <label class="md-nav__link " for=__nav_4_3 id=__nav_4_3_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_3_label aria-expanded=false> <label class=md-nav__title for=__nav_4_3> <span class="md-nav__icon md-icon"></span> adl_serializer </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../api/adl_serializer/from_json/ class=md-nav__link> <span class=md-ellipsis> from_json </span> </a> </li> <li class=md-nav__item> <a href=../../api/adl_serializer/to_json/ class=md-nav__link> <span class=md-ellipsis> to_json </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../api/json/ class=md-nav__link> <span class=md-ellipsis> json </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_5> <div class="md-nav__link md-nav__container"> <a href=../../api/json_pointer/ class="md-nav__link "> <span class=md-ellipsis> json_pointer </span> </a> <label class="md-nav__link " for=__nav_4_5 id=__nav_4_5_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_5_label aria-expanded=false> <label class=md-nav__title for=__nav_4_5> <span class="md-nav__icon md-icon"></span> json_pointer </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../api/json_pointer/json_pointer/ class=md-nav__link> <span class=md-ellipsis> (Constructor) </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/back/ class=md-nav__link> <span class=md-ellipsis> back </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/empty/ class=md-nav__link> <span class=md-ellipsis> empty </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/front/ class=md-nav__link> <span class=md-ellipsis> front </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/operator_string_t/ class=md-nav__link> <span class=md-ellipsis> operator string_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/operator_eq/ class=md-nav__link> <span class=md-ellipsis> operator== </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/operator_ne/ class=md-nav__link> <span class=md-ellipsis> operator!= </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/operator_slash/ class=md-nav__link> <span class=md-ellipsis> operator/ </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/operator_slasheq/ class=md-nav__link> <span class=md-ellipsis> operator/= </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/parent_pointer/ class=md-nav__link> <span class=md-ellipsis> parent_pointer </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/pop_back/ class=md-nav__link> <span class=md-ellipsis> pop_back </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/pop_front/ class=md-nav__link> <span class=md-ellipsis> pop_front </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/push_back/ class=md-nav__link> <span class=md-ellipsis> push_back </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/push_front/ class=md-nav__link> <span class=md-ellipsis> push_front </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/string_t/ class=md-nav__link> <span class=md-ellipsis> string_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/to_string/ class=md-nav__link> <span class=md-ellipsis> to_string </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_6> <div class="md-nav__link md-nav__container"> <a href=../../api/json_sax/ class="md-nav__link "> <span class=md-ellipsis> json_sax </span> </a> <label class="md-nav__link " for=__nav_4_6 id=__nav_4_6_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_6_label aria-expanded=false> <label class=md-nav__title for=__nav_4_6> <span class="md-nav__icon md-icon"></span> json_sax </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../api/json_sax/binary/ class=md-nav__link> <span class=md-ellipsis> binary </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_sax/boolean/ class=md-nav__link> <span class=md-ellipsis> boolean </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_sax/end_array/ class=md-nav__link> <span class=md-ellipsis> end_array </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_sax/end_object/ class=md-nav__link> <span class=md-ellipsis> end_object </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_sax/key/ class=md-nav__link> <span class=md-ellipsis> key </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_sax/null/ class=md-nav__link> <span class=md-ellipsis> null </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_sax/number_float/ class=md-nav__link> <span class=md-ellipsis> number_float </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_sax/number_integer/ class=md-nav__link> <span class=md-ellipsis> number_integer </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_sax/number_unsigned/ class=md-nav__link> <span class=md-ellipsis> number_unsigned </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_sax/parse_error/ class=md-nav__link> <span class=md-ellipsis> parse_error </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_sax/start_array/ class=md-nav__link> <span class=md-ellipsis> start_array </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_sax/start_object/ class=md-nav__link> <span class=md-ellipsis> start_object </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_sax/string/ class=md-nav__link> <span class=md-ellipsis> string </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../api/operator_ltlt/ class=md-nav__link> <span class=md-ellipsis> operator<<(basic_json), operator<<(json_pointer) </span> </a> </li> <li class=md-nav__item> <a href=../../api/operator_gtgt/ class=md-nav__link> <span class=md-ellipsis> operator>>(basic_json) </span> </a> </li> <li class=md-nav__item> <a href=../../api/operator_literal_json/ class=md-nav__link> <span class=md-ellipsis> operator""_json </span> </a> </li> <li class=md-nav__item> <a href=../../api/operator_literal_json_pointer/ class=md-nav__link> <span class=md-ellipsis> operator""_json_pointer </span> </a> </li> <li class=md-nav__item> <a href=../../api/ordered_json/ class=md-nav__link> <span class=md-ellipsis> ordered_json </span> </a> </li> <li class=md-nav__item> <a href=../../api/ordered_map/ class=md-nav__link> <span class=md-ellipsis> ordered_map </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_13> <div class="md-nav__link md-nav__container"> <a href=../../api/macros/ class="md-nav__link "> <span class=md-ellipsis> macros </span> </a> <label class="md-nav__link " for=__nav_4_13 id=__nav_4_13_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_13_label aria-expanded=false> <label class=md-nav__title for=__nav_4_13> <span class="md-nav__icon md-icon"></span> macros </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../api/macros/json_assert/ class=md-nav__link> <span class=md-ellipsis> JSON_ASSERT </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_brace_init_copy_semantics/ class=md-nav__link> <span class=md-ellipsis> JSON_BRACE_INIT_COPY_SEMANTICS </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_throw_user/ class=md-nav__link> <span class=md-ellipsis> JSON_CATCH_USER, JSON_THROW_USER, JSON_TRY_USER </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_diagnostics/ class=md-nav__link> <span class=md-ellipsis> JSON_DIAGNOSTICS </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_diagnostic_positions/ class=md-nav__link> <span class=md-ellipsis> JSON_DIAGNOSTIC_POSITIONS </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_disable_enum_serialization/ class=md-nav__link> <span class=md-ellipsis> JSON_DISABLE_ENUM_SERIALIZATION </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_has_cpp_11/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_CPP_11, JSON_HAS_CPP_14, JSON_HAS_CPP_17, JSON_HAS_CPP_20 </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_has_filesystem/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_EXPERIMENTAL_FILESYSTEM, JSON_HAS_FILESYSTEM </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_has_ranges/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_RANGES </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_has_static_rtti/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_STATIC_RTTI </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_has_three_way_comparison/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_THREE_WAY_COMPARISON </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_noexception/ class=md-nav__link> <span class=md-ellipsis> JSON_NOEXCEPTION </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_no_io/ class=md-nav__link> <span class=md-ellipsis> JSON_NO_IO </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_skip_library_version_check/ class=md-nav__link> <span class=md-ellipsis> JSON_SKIP_LIBRARY_VERSION_CHECK </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_skip_unsupported_compiler_check/ class=md-nav__link> <span class=md-ellipsis> JSON_SKIP_UNSUPPORTED_COMPILER_CHECK </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_use_global_udls/ class=md-nav__link> <span class=md-ellipsis> JSON_USE_GLOBAL_UDLS </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_use_implicit_conversions/ class=md-nav__link> <span class=md-ellipsis> JSON_USE_IMPLICIT_CONVERSIONS </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_use_legacy_discarded_value_comparison/ class=md-nav__link> <span class=md-ellipsis> JSON_USE_LEGACY_DISCARDED_VALUE_COMPARISON </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/nlohmann_define_derived_type/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_ONLY_SERIALIZE, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/nlohmann_define_type_intrusive/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_TYPE_INTRUSIVE, NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_TYPE_INTRUSIVE_ONLY_SERIALIZE </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/nlohmann_define_type_non_intrusive/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/nlohmann_define_type_with_names/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_TYPE_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/nlohmann_json_namespace/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_NAMESPACE </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/nlohmann_json_namespace_begin/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_NAMESPACE_BEGIN, NLOHMANN_JSON_NAMESPACE_END </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/nlohmann_json_namespace_no_version/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_NAMESPACE_NO_VERSION </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/nlohmann_json_serialize_enum/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_SERIALIZE_ENUM </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/nlohmann_json_serialize_enum_strict/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_SERIALIZE_ENUM_STRICT </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/nlohmann_json_version_major/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_VERSION_MAJOR, NLOHMANN_JSON_VERSION_MINOR, NLOHMANN_JSON_VERSION_PATCH </span> </a> </li> </ul> </nav> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--active md-nav__item--section md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_5 checked> <div class="md-nav__link md-nav__container"> <a href=../ class="md-nav__link "> <span class=md-ellipsis> Community </span> </a> <label class="md-nav__link " for=__nav_5 id=__nav_5_label tabindex> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_5_label aria-expanded=true> <label class=md-nav__title for=__nav_5> <span class="md-nav__icon md-icon"></span> Community </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../code_of_conduct/ class=md-nav__link> <span class=md-ellipsis> Code of Conduct </span> </a> </li> <li class=md-nav__item> <a href=../contribution_guidelines/ class=md-nav__link> <span class=md-ellipsis> Contribution Guidelines </span> </a> </li> <li class=md-nav__item> <a href=../quality_assurance/ class=md-nav__link> <span class=md-ellipsis> Quality assurance </span> </a> </li> <li class="md-nav__item md-nav__item--active"> <input class="md-nav__toggle md-toggle" type=checkbox id=__toc> <label class="md-nav__link md-nav__link--active" for=__toc> <span class=md-ellipsis> Governance </span> <span class="md-nav__icon md-icon"></span> </label> <a href=./ class="md-nav__link md-nav__link--active"> <span class=md-ellipsis> Governance </span> </a> <nav class="md-nav md-nav--secondary" aria-label="Table of contents"> <label class=md-nav__title for=__toc> <span class="md-nav__icon md-icon"></span> Table of contents </label> <ul class=md-nav__list data-md-component=toc data-md-scrollfix> <li class=md-nav__item> <a href=#overview class=md-nav__link> <span class=md-ellipsis> Overview </span> </a> </li> <li class=md-nav__item> <a href=#roles-and-responsibilities class=md-nav__link> <span class=md-ellipsis> Roles and responsibilities </span> </a> <nav class=md-nav aria-label="Roles and responsibilities"> <ul class=md-nav__list> <li class=md-nav__item> <a href=#benevolent-dictator-project-lead class=md-nav__link> <span class=md-ellipsis> Benevolent dictator (project lead) </span> </a> </li> <li class=md-nav__item> <a href=#committers class=md-nav__link> <span class=md-ellipsis> Committers </span> </a> </li> <li class=md-nav__item> <a href=#contributors class=md-nav__link> <span class=md-ellipsis> Contributors </span> </a> </li> <li class=md-nav__item> <a href=#users class=md-nav__link> <span class=md-ellipsis> Users </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=#support class=md-nav__link> <span class=md-ellipsis> Support </span> </a> </li> <li class=md-nav__item> <a href=#contribution-process class=md-nav__link> <span class=md-ellipsis> Contribution Process </span> </a> </li> <li class=md-nav__item> <a href=#decision-making-process class=md-nav__link> <span class=md-ellipsis> Decision-Making Process </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../security_policy/ class=md-nav__link> <span class=md-ellipsis> Security Policy </span> </a> </li> </ul> </nav> </li> </ul> </nav> </div> </div> </div> <div class="md-sidebar md-sidebar--secondary" data-md-component=sidebar data-md-type=toc> <div class=md-sidebar__scrollwrap> <div class=md-sidebar__inner> <nav class="md-nav md-nav--secondary" aria-label="Table of contents"> <label class=md-nav__title for=__toc> <span class="md-nav__icon md-icon"></span> Table of contents </label> <ul class=md-nav__list data-md-component=toc data-md-scrollfix> <li class=md-nav__item> <a href=#overview class=md-nav__link> <span class=md-ellipsis> Overview </span> </a> </li> <li class=md-nav__item> <a href=#roles-and-responsibilities class=md-nav__link> <span class=md-ellipsis> Roles and responsibilities </span> </a> <nav class=md-nav aria-label="Roles and responsibilities"> <ul class=md-nav__list> <li class=md-nav__item> <a href=#benevolent-dictator-project-lead class=md-nav__link> <span class=md-ellipsis> Benevolent dictator (project lead) </span> </a> </li> <li class=md-nav__item> <a href=#committers class=md-nav__link> <span class=md-ellipsis> Committers </span> </a> </li> <li class=md-nav__item> <a href=#contributors class=md-nav__link> <span class=md-ellipsis> Contributors </span> </a> </li> <li class=md-nav__item> <a href=#users class=md-nav__link> <span class=md-ellipsis> Users </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=#support class=md-nav__link> <span class=md-ellipsis> Support </span> </a> </li> <li class=md-nav__item> <a href=#contribution-process class=md-nav__link> <span class=md-ellipsis> Contribution Process </span> </a> </li> <li class=md-nav__item> <a href=#decision-making-process class=md-nav__link> <span class=md-ellipsis> Decision-Making Process </span> </a> </li> </ul> </nav> </div> </div> </div> <div class=md-content data-md-component=content> <article class="md-content__inner md-typeset"> <a href="https://github.com/nlohmann/json/edit/develop/docs/mkdocs/docs/community/governance.md" title="Edit this page" class="md-content__button md-icon" rel="edit"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M10 20H6V4h7v5h5v3.1l2-2V8l-6-6H6c-1.1 0-2 .9-2 2v16c0 1.1.9 2 2 2h4zm10.2-7c.1 0 .3.1.4.2l1.3 1.3c.2.2.2.6 0 .8l-1 1-2.1-2.1 1-1c.1-.1.2-.2.4-.2m0 3.9L14.1 23H12v-2.1l6.1-6.1z"/></svg> </a> <a href="https://github.com/nlohmann/json/raw/develop/docs/mkdocs/docs/community/governance.md" title="View source of this page" class="md-content__button md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M17 18c.56 0 1 .44 1 1s-.44 1-1 1-1-.44-1-1 .44-1 1-1m0-3c-2.73 0-5.06 1.66-6 4 .94 2.34 3.27 4 6 4s5.06-1.66 6-4c-.94-2.34-3.27-4-6-4m0 6.5a2.5 2.5 0 0 1-2.5-2.5 2.5 2.5 0 0 1 2.5-2.5 2.5 2.5 0 0 1 2.5 2.5 2.5 2.5 0 0 1-2.5 2.5M9.27 20H6V4h7v5h5v4.07c.7.08 1.36.25 2 .49V8l-6-6H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h4.5a8.2 8.2 0 0 1-1.23-2"/></svg> </a> <h1 id=governance>Governance<a class=headerlink href=#governance title="Permanent link">&para;</a></h1> <p>The governance model for the <abbr title="JavaScript Object Notation">JSON</abbr> for Modern C++ project is a <strong>Benevolent Dictator for Life (<abbr title="Benevolent Dictator for Life">BDFL</abbr>)</strong> structure. As the sole maintainer, <a href="https://github.com/nlohmann">Niels Lohmann</a> is responsible for all key aspects of the project. The project governance may evolve as the project grows, but any changes will be documented here and communicated to contributors.</p> <h2 id=overview>Overview<a class=headerlink href=#overview title="Permanent link">&para;</a></h2> <p>This project is led by a benevolent dictator, <a href="https://github.com/nlohmann">Niels Lohmann</a>, and managed by the community. That is, the community actively contributes to the day-to-day maintenance of the project, but the general strategic line is drawn by the benevolent dictator. In case of disagreement, they have the last word. It is the benevolent dictator’s job to resolve disputes within the community and to ensure that the project is able to progress in a coordinated way. In turn, it is the community’s job to guide the decisions of the benevolent dictator through active engagement and contribution.</p> <h2 id=roles-and-responsibilities>Roles and responsibilities<a class=headerlink href=#roles-and-responsibilities title="Permanent link">&para;</a></h2> <h3 id=benevolent-dictator-project-lead>Benevolent dictator (project lead)<a class=headerlink href=#benevolent-dictator-project-lead title="Permanent link">&para;</a></h3> <p>Typically, the benevolent dictator, or project lead, is self-appointed. However, because the community always has the ability to fork, this person is fully answerable to the community. The project lead’s role is a difficult one: they set the strategic objectives of the project and communicate these clearly to the community. They also have to understand the community as a whole and strive to satisfy as many conflicting needs as possible, while ensuring that the project survives in the long term.</p> <p>In many ways, the role of the benevolent dictator is less about dictatorship and more about diplomacy. The key is to ensure that, as the project expands, the right people are given influence over it and the community rallies behind the vision of the project lead. The lead’s job is then to ensure that the committers (see below) make the right decisions on behalf of the project. Generally speaking, as long as the committers are aligned with the project’s strategy, the project lead will allow them to proceed as they desire.</p> <h3 id=committers>Committers<a class=headerlink href=#committers title="Permanent link">&para;</a></h3> <p>Committers are contributors who have made several valuable contributions to the project and are now relied upon to both write code directly to the repository and screen the contributions of others. In many cases they are programmers but it is also possible that they contribute in a different role. Typically, a committer will focus on a specific aspect of the project, and will bring a level of expertise and understanding that earns them the respect of the community and the project lead. The role of committer is not an official one, it is simply a position that influential members of the community will find themselves in as the project lead looks to them for guidance and support.</p> <p>Committers have no authority over the overall direction of the project. However, they do have the ear of the project lead. It is a committer’s job to ensure that the lead is aware of the community’s needs and collective objectives, and to help develop or elicit appropriate contributions to the project. Often, committers are given informal control over their specific areas of responsibility, and are assigned rights to directly modify certain areas of the source code. That is, although committers do not have explicit decision-making authority, they will often find that their actions are synonymous with the decisions made by the lead.</p> <h3 id=contributors>Contributors<a class=headerlink href=#contributors title="Permanent link">&para;</a></h3> <p>Contributors are community members who either have no desire to become committers, or have not yet been given the opportunity by the benevolent dictator. They make valuable contributions, such as those outlined in the list below, but generally do not have the authority to make direct changes to the project code. Contributors engage with the project through communication tools, such as email lists, and via reports and patches attached to issues in the issue tracker, as detailed in our community tools document.</p> <p>Anyone can become a contributor. There is no expectation of commitment to the project, no specific skill requirements and no selection process. To become a contributor, a community member simply has to perform one or more actions that are beneficial to the project.</p> <p>Some contributors will already be engaging with the project as users, but will also find themselves doing one or more of the following:</p> <ul> <li>supporting new users (current users often provide the most effective new user support)</li> <li>reporting bugs</li> <li>identifying requirements</li> <li>supplying graphics and web design</li> <li>programming</li> <li>assisting with project infrastructure</li> <li>writing documentation</li> <li>fixing bugs</li> <li>adding features</li> </ul> <p>As contributors gain experience and familiarity with the project, they may find that the project lead starts relying on them more and more. When this begins to happen, they gradually adopt the role of committer, as described above.</p> <h3 id=users>Users<a class=headerlink href=#users title="Permanent link">&para;</a></h3> <p>Users are community members who have a need for the project. They are the most important members of the community: without them, the project would have no purpose. Anyone can be a user; there are no specific requirements.</p> <p>Users should be encouraged to participate in the life of the project and the community as much as possible. User contributions enable the project team to ensure that they are satisfying the needs of those users. Common user activities include (but are not limited to):</p> <ul> <li>evangelising about the project</li> <li>informing developers of project strengths and weaknesses from a new user’s perspective</li> <li>providing moral support (a ‘thank you’ goes a long way)</li> <li>providing financial support</li> </ul> <p>Users who continue to engage with the project and its community will often find themselves becoming more and more involved. Such users may then go on to become contributors, as described above.</p> <h2 id=support>Support<a class=headerlink href=#support title="Permanent link">&para;</a></h2> <p>All participants in the community are encouraged to provide support for new users within the project management infrastructure. This support is provided as a way of growing the community. Those seeking support should recognise that all support activity within the project is voluntary and is therefore provided as and when time allows. A user requiring guaranteed response times or results should therefore seek to purchase a support contract from a vendor. (Of course, that vendor should be an active member of the community.) However, for those willing to engage with the project on its own terms, and willing to help support other users, the community support channels are ideal.</p> <h2 id=contribution-process>Contribution Process<a class=headerlink href=#contribution-process title="Permanent link">&para;</a></h2> <p>Anyone can contribute to the project, regardless of their skills, as there are many ways to contribute. For instance, a contributor might be active on the project mailing list and issue tracker, or might supply patches. The various ways of contributing are described in more detail in our roles in open source document.</p> <p>The developer mailing list is the most appropriate place for a contributor to ask for help when making their first contribution.</p> <h2 id=decision-making-process>Decision-Making Process<a class=headerlink href=#decision-making-process title="Permanent link">&para;</a></h2> <p>The benevolent dictatorship model does not need a formal conflict resolution process, since the project lead’s word is final. If the community chooses to question the wisdom of the actions of a committer, the project lead can review their decisions by checking the email archives, and either uphold or reverse them.</p> <hr> <div class="admonition quote"> <p class=admonition-title>Source</p> <p>The text was taken from <a href="http://oss-watch.ac.uk/resources/benevolentdictatorgovernancemodel">http://oss-watch.ac.uk/resources/benevolentdictatorgovernancemodel</a>.</p> </div> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 23, 2026 11:16:18 UTC">June 23, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
+<!doctype html><html lang=en class=no-js> <head><meta charset=utf-8><meta name=viewport content="width=device-width,initial-scale=1"><meta name=author content="Niels Lohmann"><link href="https://json.nlohmann.me/community/governance/" rel="canonical"><link href=../quality_assurance/ rel=prev><link href=../security_policy/ rel=next><link rel=icon href=../../assets/images/favicon.png><meta name=generator content="mkdocs-1.6.1, mkdocs-material-9.7.6"><title>Governance - JSON for Modern C++</title><link rel=stylesheet href=../../assets/stylesheets/main.484c7ddc.min.css><link rel=stylesheet href=../../assets/stylesheets/palette.ab4e12ef.min.css><link rel="stylesheet" href="../../assets/external/fonts.googleapis.com/css.61a430c9.css"><style>:root{--md-text-font:"Roboto";--md-code-font:"JetBrains Mono"}</style><link rel=stylesheet href=../../css/custom.css><script>__md_scope=new URL("../..",location),__md_hash=e=>[...e].reduce(((e,_)=>(e<<5)-e+_.charCodeAt(0)),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script></head> <body dir=ltr data-md-color-scheme=default data-md-color-primary=indigo data-md-color-accent=indigo> <input class=md-toggle data-md-toggle=drawer type=checkbox id=__drawer autocomplete=off> <input class=md-toggle data-md-toggle=search type=checkbox id=__search autocomplete=off> <label class=md-overlay for=__drawer></label> <div data-md-component=skip> <a href=#governance class=md-skip> Skip to content </a> </div> <div data-md-component=announce> </div> <header class=md-header data-md-component=header> <nav class="md-header__inner md-grid" aria-label=Header> <a href=../.. title="JSON for Modern C++" class="md-header__button md-logo" aria-label="JSON for Modern C++" data-md-component=logo> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54"/></svg> </a> <label class="md-header__button md-icon" for=__drawer> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M3 6h18v2H3zm0 5h18v2H3zm0 5h18v2H3z"/></svg> </label> <div class=md-header__title data-md-component=header-title> <div class=md-header__ellipsis> <div class=md-header__topic> <span class=md-ellipsis> JSON for Modern C++ </span> </div> <div class=md-header__topic data-md-component=header-topic> <span class=md-ellipsis> Governance </span> </div> </div> </div> <form class=md-header__option data-md-component=palette> <input class=md-option data-md-color-media="(prefers-color-scheme: light)" data-md-color-scheme=default data-md-color-primary=indigo data-md-color-accent=indigo aria-label="Switch to dark mode" type=radio name=__palette id=__palette_0> <label class="md-header__button md-icon" title="Switch to dark mode" for=__palette_1 hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a4 4 0 0 0-4 4 4 4 0 0 0 4 4 4 4 0 0 0 4-4 4 4 0 0 0-4-4m0 10a6 6 0 0 1-6-6 6 6 0 0 1 6-6 6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12z"/></svg> </label> <input class=md-option data-md-color-media="(prefers-color-scheme: dark)" data-md-color-scheme=slate data-md-color-primary=indigo data-md-color-accent=indigo aria-label="Switch to light mode" type=radio name=__palette id=__palette_1> <label class="md-header__button md-icon" title="Switch to light mode" for=__palette_0 hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 18c-.89 0-1.74-.2-2.5-.55C11.56 16.5 13 14.42 13 12s-1.44-4.5-3.5-5.45C10.26 6.2 11.11 6 12 6a6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12z"/></svg> </label> </form> <script>var palette=__md_get("__palette");if(palette&&palette.color){if("(prefers-color-scheme)"===palette.color.media){var media=matchMedia("(prefers-color-scheme: light)"),input=document.querySelector(media.matches?"[data-md-color-media='(prefers-color-scheme: light)']":"[data-md-color-media='(prefers-color-scheme: dark)']");palette.color.media=input.getAttribute("data-md-color-media"),palette.color.scheme=input.getAttribute("data-md-color-scheme"),palette.color.primary=input.getAttribute("data-md-color-primary"),palette.color.accent=input.getAttribute("data-md-color-accent")}for(var[key,value]of Object.entries(palette.color))document.body.setAttribute("data-md-color-"+key,value)}</script> <label class="md-header__button md-icon" for=__search> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg> </label> <div class=md-search data-md-component=search role=dialog> <label class=md-search__overlay for=__search></label> <div class=md-search__inner role=search> <form class=md-search__form name=search> <input type=text class=md-search__input name=query aria-label=Search placeholder=Search autocapitalize=off autocorrect=off autocomplete=off spellcheck=false data-md-component=search-query required> <label class="md-search__icon md-icon" for=__search> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11z"/></svg> </label> <nav class=md-search__options aria-label=Search> <button type=reset class="md-search__icon md-icon" title=Clear aria-label=Clear tabindex=-1> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z"/></svg> </button> </nav> </form> <div class=md-search__output> <div class=md-search__scrollwrap tabindex=0 data-md-scrollfix> <div class=md-search-result data-md-component=search-result> <div class=md-search-result__meta> Initializing search </div> <ol class=md-search-result__list role=presentation></ol> </div> </div> </div> </div> </div> <div class=md-header__source> <a href="https://github.com/nlohmann/json" title="Go to repository" class="md-source" data-md-component="source"> <div class="md-source__icon md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </div> <div class=md-source__repository> nlohmann/json </div> </a> </div> </nav> </header> <div class=md-container data-md-component=container> <nav class=md-tabs aria-label=Tabs data-md-component=tabs> <div class=md-grid> <ul class=md-tabs__list> <li class=md-tabs__item> <a href=../.. class=md-tabs__link> Home </a> </li> <li class=md-tabs__item> <a href=../../features/arbitrary_types/ class=md-tabs__link> Features </a> </li> <li class=md-tabs__item> <a href=../../integration/ class=md-tabs__link> Integration </a> </li> <li class=md-tabs__item> <a href=../../api/basic_json/ class=md-tabs__link> API Documentation </a> </li> <li class="md-tabs__item md-tabs__item--active"> <a href=../ class=md-tabs__link> Community </a> </li> </ul> </div> </nav> <main class=md-main data-md-component=main> <div class="md-main__inner md-grid"> <div class="md-sidebar md-sidebar--primary" data-md-component=sidebar data-md-type=navigation> <div class=md-sidebar__scrollwrap> <div class=md-sidebar__inner> <nav class="md-nav md-nav--primary md-nav--lifted" aria-label=Navigation data-md-level=0> <label class=md-nav__title for=__drawer> <a href=../.. title="JSON for Modern C++" class="md-nav__button md-logo" aria-label="JSON for Modern C++" data-md-component=logo> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54"/></svg> </a> JSON for Modern C++ </label> <div class=md-nav__source> <a href="https://github.com/nlohmann/json" title="Go to repository" class="md-source" data-md-component="source"> <div class="md-source__icon md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </div> <div class=md-source__repository> nlohmann/json </div> </a> </div> <ul class=md-nav__list data-md-scrollfix> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_1> <div class="md-nav__link md-nav__container"> <a href=../.. class="md-nav__link "> <span class=md-ellipsis> Home </span> </a> <label class="md-nav__link " for=__nav_1 id=__nav_1_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_1_label aria-expanded=false> <label class=md-nav__title for=__nav_1> <span class="md-nav__icon md-icon"></span> Home </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../home/license/ class=md-nav__link> <span class=md-ellipsis> License </span> </a> </li> <li class=md-nav__item> <a href=../../home/faq/ class=md-nav__link> <span class=md-ellipsis> FAQ </span> </a> </li> <li class=md-nav__item> <a href=../../home/exceptions/ class=md-nav__link> <span class=md-ellipsis> Exceptions </span> </a> </li> <li class=md-nav__item> <a href=../../home/releases/ class=md-nav__link> <span class=md-ellipsis> Releases </span> </a> </li> <li class=md-nav__item> <a href=../../home/design_goals/ class=md-nav__link> <span class=md-ellipsis> Design goals </span> </a> </li> <li class=md-nav__item> <a href=../../home/architecture/ class=md-nav__link> <span class=md-ellipsis> Architecture </span> </a> </li> <li class=md-nav__item> <a href=../../home/customers/ class=md-nav__link> <span class=md-ellipsis> Customers </span> </a> </li> <li class=md-nav__item> <a href=../../home/sponsors/ class=md-nav__link> <span class=md-ellipsis> Sponsors </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2> <label class=md-nav__link for=__nav_2 id=__nav_2_label tabindex=0> <span class=md-ellipsis> Features </span> <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_2_label aria-expanded=false> <label class=md-nav__title for=__nav_2> <span class="md-nav__icon md-icon"></span> Features </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../features/arbitrary_types/ class=md-nav__link> <span class=md-ellipsis> Arbitrary Type Conversions </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_2> <div class="md-nav__link md-nav__container"> <a href=../../features/binary_formats/ class="md-nav__link "> <span class=md-ellipsis> Binary Formats </span> </a> <label class="md-nav__link " for=__nav_2_2 id=__nav_2_2_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_2_label aria-expanded=false> <label class=md-nav__title for=__nav_2_2> <span class="md-nav__icon md-icon"></span> Binary Formats </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../features/binary_formats/bjdata/ class=md-nav__link> <span class=md-ellipsis> BJData </span> </a> </li> <li class=md-nav__item> <a href=../../features/binary_formats/bson/ class=md-nav__link> <span class=md-ellipsis> BSON </span> </a> </li> <li class=md-nav__item> <a href=../../features/binary_formats/cbor/ class=md-nav__link> <span class=md-ellipsis> CBOR </span> </a> </li> <li class=md-nav__item> <a href=../../features/binary_formats/messagepack/ class=md-nav__link> <span class=md-ellipsis> MessagePack </span> </a> </li> <li class=md-nav__item> <a href=../../features/binary_formats/ubjson/ class=md-nav__link> <span class=md-ellipsis> UBJSON </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../features/binary_values/ class=md-nav__link> <span class=md-ellipsis> Binary Values </span> </a> </li> <li class=md-nav__item> <a href=../../features/comments/ class=md-nav__link> <span class=md-ellipsis> Comments </span> </a> </li> <li class=md-nav__item> <a href=../../features/trailing_commas/ class=md-nav__link> <span class=md-ellipsis> Trailing Commas </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_6> <div class="md-nav__link md-nav__container"> <a href=../../features/element_access/ class="md-nav__link "> <span class=md-ellipsis> Element Access </span> </a> <label class="md-nav__link " for=__nav_2_6 id=__nav_2_6_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_6_label aria-expanded=false> <label class=md-nav__title for=__nav_2_6> <span class="md-nav__icon md-icon"></span> Element Access </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../features/element_access/unchecked_access/ class=md-nav__link> <span class=md-ellipsis> Unchecked access: operator[] </span> </a> </li> <li class=md-nav__item> <a href=../../features/element_access/checked_access/ class=md-nav__link> <span class=md-ellipsis> Checked access: at </span> </a> </li> <li class=md-nav__item> <a href=../../features/element_access/default_value/ class=md-nav__link> <span class=md-ellipsis> Access with default value: value </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../features/iterators/ class=md-nav__link> <span class=md-ellipsis> Iterators </span> </a> </li> <li class=md-nav__item> <a href=../../features/json_pointer/ class=md-nav__link> <span class=md-ellipsis> JSON Pointer </span> </a> </li> <li class=md-nav__item> <a href=../../features/json_patch/ class=md-nav__link> <span class=md-ellipsis> JSON Patch and Diff </span> </a> </li> <li class=md-nav__item> <a href=../../features/merge_patch/ class=md-nav__link> <span class=md-ellipsis> JSON Merge Patch </span> </a> </li> <li class=md-nav__item> <a href=../../features/modules/ class=md-nav__link> <span class=md-ellipsis> Modules </span> </a> </li> <li class=md-nav__item> <a href=../../features/namespace/ class=md-nav__link> <span class=md-ellipsis> nlohmann Namespace </span> </a> </li> <li class=md-nav__item> <a href=../../features/object_order/ class=md-nav__link> <span class=md-ellipsis> Object Order </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_14> <div class="md-nav__link md-nav__container"> <a href=../../features/parsing/ class="md-nav__link "> <span class=md-ellipsis> Parsing </span> </a> <label class="md-nav__link " for=__nav_2_14 id=__nav_2_14_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_14_label aria-expanded=false> <label class=md-nav__title for=__nav_2_14> <span class="md-nav__icon md-icon"></span> Parsing </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../features/parsing/json_lines/ class=md-nav__link> <span class=md-ellipsis> JSON Lines </span> </a> </li> <li class=md-nav__item> <a href=../../features/parsing/parse_exceptions/ class=md-nav__link> <span class=md-ellipsis> Parsing and Exceptions </span> </a> </li> <li class=md-nav__item> <a href=../../features/parsing/parser_callbacks/ class=md-nav__link> <span class=md-ellipsis> Parser Callbacks </span> </a> </li> <li class=md-nav__item> <a href=../../features/parsing/sax_interface/ class=md-nav__link> <span class=md-ellipsis> SAX Interface </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../features/assertions/ class=md-nav__link> <span class=md-ellipsis> Runtime Assertions </span> </a> </li> <li class=md-nav__item> <a href=../../features/enum_conversion/ class=md-nav__link> <span class=md-ellipsis> Specializing enum conversion </span> </a> </li> <li class=md-nav__item> <a href=../../features/macros/ class=md-nav__link> <span class=md-ellipsis> Supported Macros </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_18> <div class="md-nav__link md-nav__container"> <a href=../../features/types/ class="md-nav__link "> <span class=md-ellipsis> Types </span> </a> <label class="md-nav__link " for=__nav_2_18 id=__nav_2_18_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_18_label aria-expanded=false> <label class=md-nav__title for=__nav_2_18> <span class="md-nav__icon md-icon"></span> Types </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../features/types/number_handling/ class=md-nav__link> <span class=md-ellipsis> Number Handling </span> </a> </li> </ul> </nav> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_3> <div class="md-nav__link md-nav__container"> <a href=../../integration/ class="md-nav__link "> <span class=md-ellipsis> Integration </span> </a> <label class="md-nav__link " for=__nav_3 id=__nav_3_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_3_label aria-expanded=false> <label class=md-nav__title for=__nav_3> <span class="md-nav__icon md-icon"></span> Integration </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../integration/migration_guide/ class=md-nav__link> <span class=md-ellipsis> Migration Guide </span> </a> </li> <li class=md-nav__item> <a href=../../integration/cmake/ class=md-nav__link> <span class=md-ellipsis> CMake </span> </a> </li> <li class=md-nav__item> <a href=../../integration/package_managers/ class=md-nav__link> <span class=md-ellipsis> Package Managers </span> </a> </li> <li class=md-nav__item> <a href=../../integration/pkg-config/ class=md-nav__link> <span class=md-ellipsis> Pkg-config </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4> <label class=md-nav__link for=__nav_4 id=__nav_4_label tabindex=0> <span class=md-ellipsis> API Documentation </span> <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_4_label aria-expanded=false> <label class=md-nav__title for=__nav_4> <span class="md-nav__icon md-icon"></span> API Documentation </label> <ul class=md-nav__list data-md-scrollfix> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_1> <div class="md-nav__link md-nav__container"> <a href=../../api/basic_json/ class="md-nav__link "> <span class=md-ellipsis> basic_json </span> </a> <label class="md-nav__link " for=__nav_4_1 id=__nav_4_1_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_1_label aria-expanded=false> <label class=md-nav__title for=__nav_4_1> <span class="md-nav__icon md-icon"></span> basic_json </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../api/basic_json/basic_json/ class=md-nav__link> <span class=md-ellipsis> (Constructor) </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/~basic_json/ class=md-nav__link> <span class=md-ellipsis> (Destructor) </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/accept/ class=md-nav__link> <span class=md-ellipsis> accept </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/array/ class=md-nav__link> <span class=md-ellipsis> array </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/array_t/ class=md-nav__link> <span class=md-ellipsis> array_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/at/ class=md-nav__link> <span class=md-ellipsis> at </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/back/ class=md-nav__link> <span class=md-ellipsis> back </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/begin/ class=md-nav__link> <span class=md-ellipsis> begin </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/binary/ class=md-nav__link> <span class=md-ellipsis> binary </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/binary_t/ class=md-nav__link> <span class=md-ellipsis> binary_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/boolean_t/ class=md-nav__link> <span class=md-ellipsis> boolean_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/cbegin/ class=md-nav__link> <span class=md-ellipsis> cbegin </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/cbor_tag_handler_t/ class=md-nav__link> <span class=md-ellipsis> cbor_tag_handler_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/cend/ class=md-nav__link> <span class=md-ellipsis> cend </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/clear/ class=md-nav__link> <span class=md-ellipsis> clear </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/contains/ class=md-nav__link> <span class=md-ellipsis> contains </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/count/ class=md-nav__link> <span class=md-ellipsis> count </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/crbegin/ class=md-nav__link> <span class=md-ellipsis> crbegin </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/crend/ class=md-nav__link> <span class=md-ellipsis> crend </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/default_object_comparator_t/ class=md-nav__link> <span class=md-ellipsis> default_object_comparator_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/diff/ class=md-nav__link> <span class=md-ellipsis> diff </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/dump/ class=md-nav__link> <span class=md-ellipsis> dump </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/emplace/ class=md-nav__link> <span class=md-ellipsis> emplace </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/emplace_back/ class=md-nav__link> <span class=md-ellipsis> emplace_back </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/empty/ class=md-nav__link> <span class=md-ellipsis> empty </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/end/ class=md-nav__link> <span class=md-ellipsis> end </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/end_pos/ class=md-nav__link> <span class=md-ellipsis> end_pos </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/erase/ class=md-nav__link> <span class=md-ellipsis> erase </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/error_handler_t/ class=md-nav__link> <span class=md-ellipsis> error_handler_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/exception/ class=md-nav__link> <span class=md-ellipsis> exception </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/find/ class=md-nav__link> <span class=md-ellipsis> find </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/flatten/ class=md-nav__link> <span class=md-ellipsis> flatten </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/from_bjdata/ class=md-nav__link> <span class=md-ellipsis> from_bjdata </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/from_bson/ class=md-nav__link> <span class=md-ellipsis> from_bson </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/from_cbor/ class=md-nav__link> <span class=md-ellipsis> from_cbor </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/from_msgpack/ class=md-nav__link> <span class=md-ellipsis> from_msgpack </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/from_ubjson/ class=md-nav__link> <span class=md-ellipsis> from_ubjson </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/front/ class=md-nav__link> <span class=md-ellipsis> front </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/get/ class=md-nav__link> <span class=md-ellipsis> get </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/get_allocator/ class=md-nav__link> <span class=md-ellipsis> get_allocator </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/get_binary/ class=md-nav__link> <span class=md-ellipsis> get_binary </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/get_ptr/ class=md-nav__link> <span class=md-ellipsis> get_ptr </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/get_ref/ class=md-nav__link> <span class=md-ellipsis> get_ref </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/get_to/ class=md-nav__link> <span class=md-ellipsis> get_to </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/std_hash/ class=md-nav__link> <span class=md-ellipsis> std::hash&lt;basic_json&gt; </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/input_format_t/ class=md-nav__link> <span class=md-ellipsis> input_format_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/insert/ class=md-nav__link> <span class=md-ellipsis> insert </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/invalid_iterator/ class=md-nav__link> <span class=md-ellipsis> invalid_iterator </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_array/ class=md-nav__link> <span class=md-ellipsis> is_array </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_binary/ class=md-nav__link> <span class=md-ellipsis> is_binary </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_boolean/ class=md-nav__link> <span class=md-ellipsis> is_boolean </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_discarded/ class=md-nav__link> <span class=md-ellipsis> is_discarded </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_null/ class=md-nav__link> <span class=md-ellipsis> is_null </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_number/ class=md-nav__link> <span class=md-ellipsis> is_number </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_number_float/ class=md-nav__link> <span class=md-ellipsis> is_number_float </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_number_integer/ class=md-nav__link> <span class=md-ellipsis> is_number_integer </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_number_unsigned/ class=md-nav__link> <span class=md-ellipsis> is_number_unsigned </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_object/ class=md-nav__link> <span class=md-ellipsis> is_object </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_primitive/ class=md-nav__link> <span class=md-ellipsis> is_primitive </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_string/ class=md-nav__link> <span class=md-ellipsis> is_string </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_structured/ class=md-nav__link> <span class=md-ellipsis> is_structured </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/items/ class=md-nav__link> <span class=md-ellipsis> items </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/json_base_class_t/ class=md-nav__link> <span class=md-ellipsis> json_base_class_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/json_serializer/ class=md-nav__link> <span class=md-ellipsis> json_serializer </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/max_size/ class=md-nav__link> <span class=md-ellipsis> max_size </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/meta/ class=md-nav__link> <span class=md-ellipsis> meta </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/merge_patch/ class=md-nav__link> <span class=md-ellipsis> merge_patch </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/number_float_t/ class=md-nav__link> <span class=md-ellipsis> number_float_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/number_integer_t/ class=md-nav__link> <span class=md-ellipsis> number_integer_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/number_unsigned_t/ class=md-nav__link> <span class=md-ellipsis> number_unsigned_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/object/ class=md-nav__link> <span class=md-ellipsis> object </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/object_comparator_t/ class=md-nav__link> <span class=md-ellipsis> object_comparator_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/object_t/ class=md-nav__link> <span class=md-ellipsis> object_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/operator_ValueType/ class=md-nav__link> <span class=md-ellipsis> operator ValueType </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/operator_value_t/ class=md-nav__link> <span class=md-ellipsis> operator value_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/operator%5B%5D/ class=md-nav__link> <span class=md-ellipsis> operator[] </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/operator%3D/ class=md-nav__link> <span class=md-ellipsis> operator= </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/operator%2B%3D/ class=md-nav__link> <span class=md-ellipsis> operator+= </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/operator_eq/ class=md-nav__link> <span class=md-ellipsis> operator== </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/operator_ne/ class=md-nav__link> <span class=md-ellipsis> operator!= </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/operator_lt/ class=md-nav__link> <span class=md-ellipsis> operator< </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/operator_gt/ class=md-nav__link> <span class=md-ellipsis> operator> </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/operator_le/ class=md-nav__link> <span class=md-ellipsis> operator<= </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/operator_ge/ class=md-nav__link> <span class=md-ellipsis> operator>= </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/operator_spaceship/ class=md-nav__link> <span class=md-ellipsis> operator<=> </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/out_of_range/ class=md-nav__link> <span class=md-ellipsis> out_of_range </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/other_error/ class=md-nav__link> <span class=md-ellipsis> other_error </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/parse/ class=md-nav__link> <span class=md-ellipsis> parse </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/parse_error/ class=md-nav__link> <span class=md-ellipsis> parse_error </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/parse_event_t/ class=md-nav__link> <span class=md-ellipsis> parse_event_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/parser_callback_t/ class=md-nav__link> <span class=md-ellipsis> parser_callback_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/patch/ class=md-nav__link> <span class=md-ellipsis> patch </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/patch_inplace/ class=md-nav__link> <span class=md-ellipsis> patch_inplace </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/push_back/ class=md-nav__link> <span class=md-ellipsis> push_back </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/rbegin/ class=md-nav__link> <span class=md-ellipsis> rbegin </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/rend/ class=md-nav__link> <span class=md-ellipsis> rend </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/sax_parse/ class=md-nav__link> <span class=md-ellipsis> sax_parse </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/size/ class=md-nav__link> <span class=md-ellipsis> size </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/start_pos/ class=md-nav__link> <span class=md-ellipsis> start_pos </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/string_t/ class=md-nav__link> <span class=md-ellipsis> string_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/swap/ class=md-nav__link> <span class=md-ellipsis> swap </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/std_swap/ class=md-nav__link> <span class=md-ellipsis> std::swap&lt;basic_json&gt; </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/to_bjdata/ class=md-nav__link> <span class=md-ellipsis> to_bjdata </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/to_bson/ class=md-nav__link> <span class=md-ellipsis> to_bson </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/to_cbor/ class=md-nav__link> <span class=md-ellipsis> to_cbor </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/to_msgpack/ class=md-nav__link> <span class=md-ellipsis> to_msgpack </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/to_string/ class=md-nav__link> <span class=md-ellipsis> to_string </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/to_ubjson/ class=md-nav__link> <span class=md-ellipsis> to_ubjson </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/type/ class=md-nav__link> <span class=md-ellipsis> type </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/type_error/ class=md-nav__link> <span class=md-ellipsis> type_error </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/type_name/ class=md-nav__link> <span class=md-ellipsis> type_name </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/unflatten/ class=md-nav__link> <span class=md-ellipsis> unflatten </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/update/ class=md-nav__link> <span class=md-ellipsis> update </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/value/ class=md-nav__link> <span class=md-ellipsis> value </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/value_t/ class=md-nav__link> <span class=md-ellipsis> value_t </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_2> <div class="md-nav__link md-nav__container"> <a href=../../api/byte_container_with_subtype/ class="md-nav__link "> <span class=md-ellipsis> byte_container_with_subtype </span> </a> <label class="md-nav__link " for=__nav_4_2 id=__nav_4_2_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_2_label aria-expanded=false> <label class=md-nav__title for=__nav_4_2> <span class="md-nav__icon md-icon"></span> byte_container_with_subtype </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../api/byte_container_with_subtype/byte_container_with_subtype/ class=md-nav__link> <span class=md-ellipsis> (constructor) </span> </a> </li> <li class=md-nav__item> <a href=../../api/byte_container_with_subtype/clear_subtype/ class=md-nav__link> <span class=md-ellipsis> clear_subtype </span> </a> </li> <li class=md-nav__item> <a href=../../api/byte_container_with_subtype/has_subtype/ class=md-nav__link> <span class=md-ellipsis> has_subtype </span> </a> </li> <li class=md-nav__item> <a href=../../api/byte_container_with_subtype/set_subtype/ class=md-nav__link> <span class=md-ellipsis> set_subtype </span> </a> </li> <li class=md-nav__item> <a href=../../api/byte_container_with_subtype/subtype/ class=md-nav__link> <span class=md-ellipsis> subtype </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_3> <div class="md-nav__link md-nav__container"> <a href=../../api/adl_serializer/ class="md-nav__link "> <span class=md-ellipsis> adl_serializer </span> </a> <label class="md-nav__link " for=__nav_4_3 id=__nav_4_3_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_3_label aria-expanded=false> <label class=md-nav__title for=__nav_4_3> <span class="md-nav__icon md-icon"></span> adl_serializer </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../api/adl_serializer/from_json/ class=md-nav__link> <span class=md-ellipsis> from_json </span> </a> </li> <li class=md-nav__item> <a href=../../api/adl_serializer/to_json/ class=md-nav__link> <span class=md-ellipsis> to_json </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../api/json/ class=md-nav__link> <span class=md-ellipsis> json </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_5> <div class="md-nav__link md-nav__container"> <a href=../../api/json_pointer/ class="md-nav__link "> <span class=md-ellipsis> json_pointer </span> </a> <label class="md-nav__link " for=__nav_4_5 id=__nav_4_5_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_5_label aria-expanded=false> <label class=md-nav__title for=__nav_4_5> <span class="md-nav__icon md-icon"></span> json_pointer </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../api/json_pointer/json_pointer/ class=md-nav__link> <span class=md-ellipsis> (Constructor) </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/back/ class=md-nav__link> <span class=md-ellipsis> back </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/empty/ class=md-nav__link> <span class=md-ellipsis> empty </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/front/ class=md-nav__link> <span class=md-ellipsis> front </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/operator_string_t/ class=md-nav__link> <span class=md-ellipsis> operator string_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/operator_eq/ class=md-nav__link> <span class=md-ellipsis> operator== </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/operator_ne/ class=md-nav__link> <span class=md-ellipsis> operator!= </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/operator_slash/ class=md-nav__link> <span class=md-ellipsis> operator/ </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/operator_slasheq/ class=md-nav__link> <span class=md-ellipsis> operator/= </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/parent_pointer/ class=md-nav__link> <span class=md-ellipsis> parent_pointer </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/pop_back/ class=md-nav__link> <span class=md-ellipsis> pop_back </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/pop_front/ class=md-nav__link> <span class=md-ellipsis> pop_front </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/push_back/ class=md-nav__link> <span class=md-ellipsis> push_back </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/push_front/ class=md-nav__link> <span class=md-ellipsis> push_front </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/string_t/ class=md-nav__link> <span class=md-ellipsis> string_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/to_string/ class=md-nav__link> <span class=md-ellipsis> to_string </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_6> <div class="md-nav__link md-nav__container"> <a href=../../api/json_sax/ class="md-nav__link "> <span class=md-ellipsis> json_sax </span> </a> <label class="md-nav__link " for=__nav_4_6 id=__nav_4_6_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_6_label aria-expanded=false> <label class=md-nav__title for=__nav_4_6> <span class="md-nav__icon md-icon"></span> json_sax </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../api/json_sax/binary/ class=md-nav__link> <span class=md-ellipsis> binary </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_sax/boolean/ class=md-nav__link> <span class=md-ellipsis> boolean </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_sax/end_array/ class=md-nav__link> <span class=md-ellipsis> end_array </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_sax/end_object/ class=md-nav__link> <span class=md-ellipsis> end_object </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_sax/key/ class=md-nav__link> <span class=md-ellipsis> key </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_sax/null/ class=md-nav__link> <span class=md-ellipsis> null </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_sax/number_float/ class=md-nav__link> <span class=md-ellipsis> number_float </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_sax/number_integer/ class=md-nav__link> <span class=md-ellipsis> number_integer </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_sax/number_unsigned/ class=md-nav__link> <span class=md-ellipsis> number_unsigned </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_sax/parse_error/ class=md-nav__link> <span class=md-ellipsis> parse_error </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_sax/start_array/ class=md-nav__link> <span class=md-ellipsis> start_array </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_sax/start_object/ class=md-nav__link> <span class=md-ellipsis> start_object </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_sax/string/ class=md-nav__link> <span class=md-ellipsis> string </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../api/operator_ltlt/ class=md-nav__link> <span class=md-ellipsis> operator<<(basic_json), operator<<(json_pointer) </span> </a> </li> <li class=md-nav__item> <a href=../../api/operator_gtgt/ class=md-nav__link> <span class=md-ellipsis> operator>>(basic_json) </span> </a> </li> <li class=md-nav__item> <a href=../../api/operator_literal_json/ class=md-nav__link> <span class=md-ellipsis> operator""_json </span> </a> </li> <li class=md-nav__item> <a href=../../api/operator_literal_json_pointer/ class=md-nav__link> <span class=md-ellipsis> operator""_json_pointer </span> </a> </li> <li class=md-nav__item> <a href=../../api/ordered_json/ class=md-nav__link> <span class=md-ellipsis> ordered_json </span> </a> </li> <li class=md-nav__item> <a href=../../api/ordered_map/ class=md-nav__link> <span class=md-ellipsis> ordered_map </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_13> <div class="md-nav__link md-nav__container"> <a href=../../api/macros/ class="md-nav__link "> <span class=md-ellipsis> macros </span> </a> <label class="md-nav__link " for=__nav_4_13 id=__nav_4_13_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_13_label aria-expanded=false> <label class=md-nav__title for=__nav_4_13> <span class="md-nav__icon md-icon"></span> macros </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../api/macros/json_assert/ class=md-nav__link> <span class=md-ellipsis> JSON_ASSERT </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_brace_init_copy_semantics/ class=md-nav__link> <span class=md-ellipsis> JSON_BRACE_INIT_COPY_SEMANTICS </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_throw_user/ class=md-nav__link> <span class=md-ellipsis> JSON_CATCH_USER, JSON_THROW_USER, JSON_TRY_USER </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_diagnostics/ class=md-nav__link> <span class=md-ellipsis> JSON_DIAGNOSTICS </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_diagnostic_positions/ class=md-nav__link> <span class=md-ellipsis> JSON_DIAGNOSTIC_POSITIONS </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_disable_enum_serialization/ class=md-nav__link> <span class=md-ellipsis> JSON_DISABLE_ENUM_SERIALIZATION </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_has_cpp_11/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_CPP_11, JSON_HAS_CPP_14, JSON_HAS_CPP_17, JSON_HAS_CPP_20 </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_has_filesystem/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_EXPERIMENTAL_FILESYSTEM, JSON_HAS_FILESYSTEM </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_has_ranges/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_RANGES </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_has_static_rtti/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_STATIC_RTTI </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_has_three_way_comparison/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_THREE_WAY_COMPARISON </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_noexception/ class=md-nav__link> <span class=md-ellipsis> JSON_NOEXCEPTION </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_no_io/ class=md-nav__link> <span class=md-ellipsis> JSON_NO_IO </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_skip_library_version_check/ class=md-nav__link> <span class=md-ellipsis> JSON_SKIP_LIBRARY_VERSION_CHECK </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_skip_unsupported_compiler_check/ class=md-nav__link> <span class=md-ellipsis> JSON_SKIP_UNSUPPORTED_COMPILER_CHECK </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_use_global_udls/ class=md-nav__link> <span class=md-ellipsis> JSON_USE_GLOBAL_UDLS </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_use_implicit_conversions/ class=md-nav__link> <span class=md-ellipsis> JSON_USE_IMPLICIT_CONVERSIONS </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_use_legacy_discarded_value_comparison/ class=md-nav__link> <span class=md-ellipsis> JSON_USE_LEGACY_DISCARDED_VALUE_COMPARISON </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/nlohmann_define_derived_type/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_ONLY_SERIALIZE, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/nlohmann_define_type_intrusive/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_TYPE_INTRUSIVE, NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_TYPE_INTRUSIVE_ONLY_SERIALIZE </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/nlohmann_define_type_non_intrusive/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/nlohmann_define_type_with_names/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_TYPE_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/nlohmann_json_namespace/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_NAMESPACE </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/nlohmann_json_namespace_begin/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_NAMESPACE_BEGIN, NLOHMANN_JSON_NAMESPACE_END </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/nlohmann_json_namespace_no_version/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_NAMESPACE_NO_VERSION </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/nlohmann_json_serialize_enum/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_SERIALIZE_ENUM </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/nlohmann_json_serialize_enum_strict/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_SERIALIZE_ENUM_STRICT </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/nlohmann_json_version_major/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_VERSION_MAJOR, NLOHMANN_JSON_VERSION_MINOR, NLOHMANN_JSON_VERSION_PATCH </span> </a> </li> </ul> </nav> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--active md-nav__item--section md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_5 checked> <div class="md-nav__link md-nav__container"> <a href=../ class="md-nav__link "> <span class=md-ellipsis> Community </span> </a> <label class="md-nav__link " for=__nav_5 id=__nav_5_label tabindex> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_5_label aria-expanded=true> <label class=md-nav__title for=__nav_5> <span class="md-nav__icon md-icon"></span> Community </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../code_of_conduct/ class=md-nav__link> <span class=md-ellipsis> Code of Conduct </span> </a> </li> <li class=md-nav__item> <a href=../contribution_guidelines/ class=md-nav__link> <span class=md-ellipsis> Contribution Guidelines </span> </a> </li> <li class=md-nav__item> <a href=../quality_assurance/ class=md-nav__link> <span class=md-ellipsis> Quality assurance </span> </a> </li> <li class="md-nav__item md-nav__item--active"> <input class="md-nav__toggle md-toggle" type=checkbox id=__toc> <label class="md-nav__link md-nav__link--active" for=__toc> <span class=md-ellipsis> Governance </span> <span class="md-nav__icon md-icon"></span> </label> <a href=./ class="md-nav__link md-nav__link--active"> <span class=md-ellipsis> Governance </span> </a> <nav class="md-nav md-nav--secondary" aria-label="Table of contents"> <label class=md-nav__title for=__toc> <span class="md-nav__icon md-icon"></span> Table of contents </label> <ul class=md-nav__list data-md-component=toc data-md-scrollfix> <li class=md-nav__item> <a href=#overview class=md-nav__link> <span class=md-ellipsis> Overview </span> </a> </li> <li class=md-nav__item> <a href=#roles-and-responsibilities class=md-nav__link> <span class=md-ellipsis> Roles and responsibilities </span> </a> <nav class=md-nav aria-label="Roles and responsibilities"> <ul class=md-nav__list> <li class=md-nav__item> <a href=#benevolent-dictator-project-lead class=md-nav__link> <span class=md-ellipsis> Benevolent dictator (project lead) </span> </a> </li> <li class=md-nav__item> <a href=#committers class=md-nav__link> <span class=md-ellipsis> Committers </span> </a> </li> <li class=md-nav__item> <a href=#contributors class=md-nav__link> <span class=md-ellipsis> Contributors </span> </a> </li> <li class=md-nav__item> <a href=#users class=md-nav__link> <span class=md-ellipsis> Users </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=#support class=md-nav__link> <span class=md-ellipsis> Support </span> </a> </li> <li class=md-nav__item> <a href=#contribution-process class=md-nav__link> <span class=md-ellipsis> Contribution Process </span> </a> </li> <li class=md-nav__item> <a href=#decision-making-process class=md-nav__link> <span class=md-ellipsis> Decision-Making Process </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../security_policy/ class=md-nav__link> <span class=md-ellipsis> Security Policy </span> </a> </li> </ul> </nav> </li> </ul> </nav> </div> </div> </div> <div class="md-sidebar md-sidebar--secondary" data-md-component=sidebar data-md-type=toc> <div class=md-sidebar__scrollwrap> <div class=md-sidebar__inner> <nav class="md-nav md-nav--secondary" aria-label="Table of contents"> <label class=md-nav__title for=__toc> <span class="md-nav__icon md-icon"></span> Table of contents </label> <ul class=md-nav__list data-md-component=toc data-md-scrollfix> <li class=md-nav__item> <a href=#overview class=md-nav__link> <span class=md-ellipsis> Overview </span> </a> </li> <li class=md-nav__item> <a href=#roles-and-responsibilities class=md-nav__link> <span class=md-ellipsis> Roles and responsibilities </span> </a> <nav class=md-nav aria-label="Roles and responsibilities"> <ul class=md-nav__list> <li class=md-nav__item> <a href=#benevolent-dictator-project-lead class=md-nav__link> <span class=md-ellipsis> Benevolent dictator (project lead) </span> </a> </li> <li class=md-nav__item> <a href=#committers class=md-nav__link> <span class=md-ellipsis> Committers </span> </a> </li> <li class=md-nav__item> <a href=#contributors class=md-nav__link> <span class=md-ellipsis> Contributors </span> </a> </li> <li class=md-nav__item> <a href=#users class=md-nav__link> <span class=md-ellipsis> Users </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=#support class=md-nav__link> <span class=md-ellipsis> Support </span> </a> </li> <li class=md-nav__item> <a href=#contribution-process class=md-nav__link> <span class=md-ellipsis> Contribution Process </span> </a> </li> <li class=md-nav__item> <a href=#decision-making-process class=md-nav__link> <span class=md-ellipsis> Decision-Making Process </span> </a> </li> </ul> </nav> </div> </div> </div> <div class=md-content data-md-component=content> <article class="md-content__inner md-typeset"> <a href="https://github.com/nlohmann/json/edit/develop/docs/mkdocs/docs/community/governance.md" title="Edit this page" class="md-content__button md-icon" rel="edit"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M10 20H6V4h7v5h5v3.1l2-2V8l-6-6H6c-1.1 0-2 .9-2 2v16c0 1.1.9 2 2 2h4zm10.2-7c.1 0 .3.1.4.2l1.3 1.3c.2.2.2.6 0 .8l-1 1-2.1-2.1 1-1c.1-.1.2-.2.4-.2m0 3.9L14.1 23H12v-2.1l6.1-6.1z"/></svg> </a> <a href="https://github.com/nlohmann/json/raw/develop/docs/mkdocs/docs/community/governance.md" title="View source of this page" class="md-content__button md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M17 18c.56 0 1 .44 1 1s-.44 1-1 1-1-.44-1-1 .44-1 1-1m0-3c-2.73 0-5.06 1.66-6 4 .94 2.34 3.27 4 6 4s5.06-1.66 6-4c-.94-2.34-3.27-4-6-4m0 6.5a2.5 2.5 0 0 1-2.5-2.5 2.5 2.5 0 0 1 2.5-2.5 2.5 2.5 0 0 1 2.5 2.5 2.5 2.5 0 0 1-2.5 2.5M9.27 20H6V4h7v5h5v4.07c.7.08 1.36.25 2 .49V8l-6-6H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h4.5a8.2 8.2 0 0 1-1.23-2"/></svg> </a> <h1 id=governance>Governance<a class=headerlink href=#governance title="Permanent link">&para;</a></h1> <p>The governance model for the <abbr title="JavaScript Object Notation">JSON</abbr> for Modern C++ project is a <strong>Benevolent Dictator for Life (<abbr title="Benevolent Dictator for Life">BDFL</abbr>)</strong> structure. As the sole maintainer, <a href="https://github.com/nlohmann">Niels Lohmann</a> is responsible for all key aspects of the project. The project governance may evolve as the project grows, but any changes will be documented here and communicated to contributors.</p> <h2 id=overview>Overview<a class=headerlink href=#overview title="Permanent link">&para;</a></h2> <p>This project is led by a benevolent dictator, <a href="https://github.com/nlohmann">Niels Lohmann</a>, and managed by the community. That is, the community actively contributes to the day-to-day maintenance of the project, but the general strategic line is drawn by the benevolent dictator. In case of disagreement, they have the last word. It is the benevolent dictator’s job to resolve disputes within the community and to ensure that the project is able to progress in a coordinated way. In turn, it is the community’s job to guide the decisions of the benevolent dictator through active engagement and contribution.</p> <h2 id=roles-and-responsibilities>Roles and responsibilities<a class=headerlink href=#roles-and-responsibilities title="Permanent link">&para;</a></h2> <h3 id=benevolent-dictator-project-lead>Benevolent dictator (project lead)<a class=headerlink href=#benevolent-dictator-project-lead title="Permanent link">&para;</a></h3> <p>Typically, the benevolent dictator, or project lead, is self-appointed. However, because the community always has the ability to fork, this person is fully answerable to the community. The project lead’s role is a difficult one: they set the strategic objectives of the project and communicate these clearly to the community. They also have to understand the community as a whole and strive to satisfy as many conflicting needs as possible, while ensuring that the project survives in the long term.</p> <p>In many ways, the role of the benevolent dictator is less about dictatorship and more about diplomacy. The key is to ensure that, as the project expands, the right people are given influence over it and the community rallies behind the vision of the project lead. The lead’s job is then to ensure that the committers (see below) make the right decisions on behalf of the project. Generally speaking, as long as the committers are aligned with the project’s strategy, the project lead will allow them to proceed as they desire.</p> <h3 id=committers>Committers<a class=headerlink href=#committers title="Permanent link">&para;</a></h3> <p>Committers are contributors who have made several valuable contributions to the project and are now relied upon to both write code directly to the repository and screen the contributions of others. In many cases they are programmers but it is also possible that they contribute in a different role. Typically, a committer will focus on a specific aspect of the project, and will bring a level of expertise and understanding that earns them the respect of the community and the project lead. The role of committer is not an official one, it is simply a position that influential members of the community will find themselves in as the project lead looks to them for guidance and support.</p> <p>Committers have no authority over the overall direction of the project. However, they do have the ear of the project lead. It is a committer’s job to ensure that the lead is aware of the community’s needs and collective objectives, and to help develop or elicit appropriate contributions to the project. Often, committers are given informal control over their specific areas of responsibility, and are assigned rights to directly modify certain areas of the source code. That is, although committers do not have explicit decision-making authority, they will often find that their actions are synonymous with the decisions made by the lead.</p> <h3 id=contributors>Contributors<a class=headerlink href=#contributors title="Permanent link">&para;</a></h3> <p>Contributors are community members who either have no desire to become committers, or have not yet been given the opportunity by the benevolent dictator. They make valuable contributions, such as those outlined in the list below, but generally do not have the authority to make direct changes to the project code. Contributors engage with the project through communication tools, such as email lists, and via reports and patches attached to issues in the issue tracker, as detailed in our community tools document.</p> <p>Anyone can become a contributor. There is no expectation of commitment to the project, no specific skill requirements and no selection process. To become a contributor, a community member simply has to perform one or more actions that are beneficial to the project.</p> <p>Some contributors will already be engaging with the project as users, but will also find themselves doing one or more of the following:</p> <ul> <li>supporting new users (current users often provide the most effective new user support)</li> <li>reporting bugs</li> <li>identifying requirements</li> <li>supplying graphics and web design</li> <li>programming</li> <li>assisting with project infrastructure</li> <li>writing documentation</li> <li>fixing bugs</li> <li>adding features</li> </ul> <p>As contributors gain experience and familiarity with the project, they may find that the project lead starts relying on them more and more. When this begins to happen, they gradually adopt the role of committer, as described above.</p> <h3 id=users>Users<a class=headerlink href=#users title="Permanent link">&para;</a></h3> <p>Users are community members who have a need for the project. They are the most important members of the community: without them, the project would have no purpose. Anyone can be a user; there are no specific requirements.</p> <p>Users should be encouraged to participate in the life of the project and the community as much as possible. User contributions enable the project team to ensure that they are satisfying the needs of those users. Common user activities include (but are not limited to):</p> <ul> <li>evangelising about the project</li> <li>informing developers of project strengths and weaknesses from a new user’s perspective</li> <li>providing moral support (a ‘thank you’ goes a long way)</li> <li>providing financial support</li> </ul> <p>Users who continue to engage with the project and its community will often find themselves becoming more and more involved. Such users may then go on to become contributors, as described above.</p> <h2 id=support>Support<a class=headerlink href=#support title="Permanent link">&para;</a></h2> <p>All participants in the community are encouraged to provide support for new users within the project management infrastructure. This support is provided as a way of growing the community. Those seeking support should recognise that all support activity within the project is voluntary and is therefore provided as and when time allows. A user requiring guaranteed response times or results should therefore seek to purchase a support contract from a vendor. (Of course, that vendor should be an active member of the community.) However, for those willing to engage with the project on its own terms, and willing to help support other users, the community support channels are ideal.</p> <h2 id=contribution-process>Contribution Process<a class=headerlink href=#contribution-process title="Permanent link">&para;</a></h2> <p>Anyone can contribute to the project, regardless of their skills, as there are many ways to contribute. For instance, a contributor might be active on the project mailing list and issue tracker, or might supply patches. The various ways of contributing are described in more detail in our roles in open source document.</p> <p>The developer mailing list is the most appropriate place for a contributor to ask for help when making their first contribution.</p> <h2 id=decision-making-process>Decision-Making Process<a class=headerlink href=#decision-making-process title="Permanent link">&para;</a></h2> <p>The benevolent dictatorship model does not need a formal conflict resolution process, since the project lead’s word is final. If the community chooses to question the wisdom of the actions of a committer, the project lead can review their decisions by checking the email archives, and either uphold or reverse them.</p> <hr> <div class="admonition quote"> <p class=admonition-title>Source</p> <p>The text was taken from <a href="http://oss-watch.ac.uk/resources/benevolentdictatorgovernancemodel">http://oss-watch.ac.uk/resources/benevolentdictatorgovernancemodel</a>.</p> </div> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 29, 2026 20:15:18 UTC">June 29, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
diff --git a/community/index.html b/community/index.html
index 14930d4..3c3d425 100644
--- a/community/index.html
+++ b/community/index.html
@@ -1 +1 @@
-<!doctype html><html lang=en class=no-js> <head><meta charset=utf-8><meta name=viewport content="width=device-width,initial-scale=1"><meta name=author content="Niels Lohmann"><link href="https://json.nlohmann.me/community/" rel="canonical"><link href=../api/macros/nlohmann_json_version_major/ rel=prev><link href=code_of_conduct/ rel=next><link rel=icon href=../assets/images/favicon.png><meta name=generator content="mkdocs-1.6.1, mkdocs-material-9.7.6"><title>Community - JSON for Modern C++</title><link rel=stylesheet href=../assets/stylesheets/main.484c7ddc.min.css><link rel=stylesheet href=../assets/stylesheets/palette.ab4e12ef.min.css><link rel="stylesheet" href="../assets/external/fonts.googleapis.com/css.61a430c9.css"><style>:root{--md-text-font:"Roboto";--md-code-font:"JetBrains Mono"}</style><link rel=stylesheet href=../css/custom.css><script>__md_scope=new URL("..",location),__md_hash=e=>[...e].reduce(((e,_)=>(e<<5)-e+_.charCodeAt(0)),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script></head> <body dir=ltr data-md-color-scheme=default data-md-color-primary=indigo data-md-color-accent=indigo> <input class=md-toggle data-md-toggle=drawer type=checkbox id=__drawer autocomplete=off> <input class=md-toggle data-md-toggle=search type=checkbox id=__search autocomplete=off> <label class=md-overlay for=__drawer></label> <div data-md-component=skip> <a href=#community class=md-skip> Skip to content </a> </div> <div data-md-component=announce> </div> <header class=md-header data-md-component=header> <nav class="md-header__inner md-grid" aria-label=Header> <a href=.. title="JSON for Modern C++" class="md-header__button md-logo" aria-label="JSON for Modern C++" data-md-component=logo> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54"/></svg> </a> <label class="md-header__button md-icon" for=__drawer> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M3 6h18v2H3zm0 5h18v2H3zm0 5h18v2H3z"/></svg> </label> <div class=md-header__title data-md-component=header-title> <div class=md-header__ellipsis> <div class=md-header__topic> <span class=md-ellipsis> JSON for Modern C++ </span> </div> <div class=md-header__topic data-md-component=header-topic> <span class=md-ellipsis> Community </span> </div> </div> </div> <form class=md-header__option data-md-component=palette> <input class=md-option data-md-color-media="(prefers-color-scheme: light)" data-md-color-scheme=default data-md-color-primary=indigo data-md-color-accent=indigo aria-label="Switch to dark mode" type=radio name=__palette id=__palette_0> <label class="md-header__button md-icon" title="Switch to dark mode" for=__palette_1 hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a4 4 0 0 0-4 4 4 4 0 0 0 4 4 4 4 0 0 0 4-4 4 4 0 0 0-4-4m0 10a6 6 0 0 1-6-6 6 6 0 0 1 6-6 6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12z"/></svg> </label> <input class=md-option data-md-color-media="(prefers-color-scheme: dark)" data-md-color-scheme=slate data-md-color-primary=indigo data-md-color-accent=indigo aria-label="Switch to light mode" type=radio name=__palette id=__palette_1> <label class="md-header__button md-icon" title="Switch to light mode" for=__palette_0 hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 18c-.89 0-1.74-.2-2.5-.55C11.56 16.5 13 14.42 13 12s-1.44-4.5-3.5-5.45C10.26 6.2 11.11 6 12 6a6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12z"/></svg> </label> </form> <script>var palette=__md_get("__palette");if(palette&&palette.color){if("(prefers-color-scheme)"===palette.color.media){var media=matchMedia("(prefers-color-scheme: light)"),input=document.querySelector(media.matches?"[data-md-color-media='(prefers-color-scheme: light)']":"[data-md-color-media='(prefers-color-scheme: dark)']");palette.color.media=input.getAttribute("data-md-color-media"),palette.color.scheme=input.getAttribute("data-md-color-scheme"),palette.color.primary=input.getAttribute("data-md-color-primary"),palette.color.accent=input.getAttribute("data-md-color-accent")}for(var[key,value]of Object.entries(palette.color))document.body.setAttribute("data-md-color-"+key,value)}</script> <label class="md-header__button md-icon" for=__search> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg> </label> <div class=md-search data-md-component=search role=dialog> <label class=md-search__overlay for=__search></label> <div class=md-search__inner role=search> <form class=md-search__form name=search> <input type=text class=md-search__input name=query aria-label=Search placeholder=Search autocapitalize=off autocorrect=off autocomplete=off spellcheck=false data-md-component=search-query required> <label class="md-search__icon md-icon" for=__search> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11z"/></svg> </label> <nav class=md-search__options aria-label=Search> <button type=reset class="md-search__icon md-icon" title=Clear aria-label=Clear tabindex=-1> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z"/></svg> </button> </nav> </form> <div class=md-search__output> <div class=md-search__scrollwrap tabindex=0 data-md-scrollfix> <div class=md-search-result data-md-component=search-result> <div class=md-search-result__meta> Initializing search </div> <ol class=md-search-result__list role=presentation></ol> </div> </div> </div> </div> </div> <div class=md-header__source> <a href="https://github.com/nlohmann/json" title="Go to repository" class="md-source" data-md-component="source"> <div class="md-source__icon md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </div> <div class=md-source__repository> nlohmann/json </div> </a> </div> </nav> </header> <div class=md-container data-md-component=container> <nav class=md-tabs aria-label=Tabs data-md-component=tabs> <div class=md-grid> <ul class=md-tabs__list> <li class=md-tabs__item> <a href=.. class=md-tabs__link> Home </a> </li> <li class=md-tabs__item> <a href=../features/arbitrary_types/ class=md-tabs__link> Features </a> </li> <li class=md-tabs__item> <a href=../integration/ class=md-tabs__link> Integration </a> </li> <li class=md-tabs__item> <a href=../api/basic_json/ class=md-tabs__link> API Documentation </a> </li> <li class="md-tabs__item md-tabs__item--active"> <a href=./ class=md-tabs__link> Community </a> </li> </ul> </div> </nav> <main class=md-main data-md-component=main> <div class="md-main__inner md-grid"> <div class="md-sidebar md-sidebar--primary" data-md-component=sidebar data-md-type=navigation> <div class=md-sidebar__scrollwrap> <div class=md-sidebar__inner> <nav class="md-nav md-nav--primary md-nav--lifted" aria-label=Navigation data-md-level=0> <label class=md-nav__title for=__drawer> <a href=.. title="JSON for Modern C++" class="md-nav__button md-logo" aria-label="JSON for Modern C++" data-md-component=logo> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54"/></svg> </a> JSON for Modern C++ </label> <div class=md-nav__source> <a href="https://github.com/nlohmann/json" title="Go to repository" class="md-source" data-md-component="source"> <div class="md-source__icon md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </div> <div class=md-source__repository> nlohmann/json </div> </a> </div> <ul class=md-nav__list data-md-scrollfix> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_1> <div class="md-nav__link md-nav__container"> <a href=.. class="md-nav__link "> <span class=md-ellipsis> Home </span> </a> <label class="md-nav__link " for=__nav_1 id=__nav_1_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_1_label aria-expanded=false> <label class=md-nav__title for=__nav_1> <span class="md-nav__icon md-icon"></span> Home </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../home/license/ class=md-nav__link> <span class=md-ellipsis> License </span> </a> </li> <li class=md-nav__item> <a href=../home/faq/ class=md-nav__link> <span class=md-ellipsis> FAQ </span> </a> </li> <li class=md-nav__item> <a href=../home/exceptions/ class=md-nav__link> <span class=md-ellipsis> Exceptions </span> </a> </li> <li class=md-nav__item> <a href=../home/releases/ class=md-nav__link> <span class=md-ellipsis> Releases </span> </a> </li> <li class=md-nav__item> <a href=../home/design_goals/ class=md-nav__link> <span class=md-ellipsis> Design goals </span> </a> </li> <li class=md-nav__item> <a href=../home/architecture/ class=md-nav__link> <span class=md-ellipsis> Architecture </span> </a> </li> <li class=md-nav__item> <a href=../home/customers/ class=md-nav__link> <span class=md-ellipsis> Customers </span> </a> </li> <li class=md-nav__item> <a href=../home/sponsors/ class=md-nav__link> <span class=md-ellipsis> Sponsors </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2> <label class=md-nav__link for=__nav_2 id=__nav_2_label tabindex=0> <span class=md-ellipsis> Features </span> <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_2_label aria-expanded=false> <label class=md-nav__title for=__nav_2> <span class="md-nav__icon md-icon"></span> Features </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../features/arbitrary_types/ class=md-nav__link> <span class=md-ellipsis> Arbitrary Type Conversions </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_2> <div class="md-nav__link md-nav__container"> <a href=../features/binary_formats/ class="md-nav__link "> <span class=md-ellipsis> Binary Formats </span> </a> <label class="md-nav__link " for=__nav_2_2 id=__nav_2_2_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_2_label aria-expanded=false> <label class=md-nav__title for=__nav_2_2> <span class="md-nav__icon md-icon"></span> Binary Formats </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../features/binary_formats/bjdata/ class=md-nav__link> <span class=md-ellipsis> BJData </span> </a> </li> <li class=md-nav__item> <a href=../features/binary_formats/bson/ class=md-nav__link> <span class=md-ellipsis> BSON </span> </a> </li> <li class=md-nav__item> <a href=../features/binary_formats/cbor/ class=md-nav__link> <span class=md-ellipsis> CBOR </span> </a> </li> <li class=md-nav__item> <a href=../features/binary_formats/messagepack/ class=md-nav__link> <span class=md-ellipsis> MessagePack </span> </a> </li> <li class=md-nav__item> <a href=../features/binary_formats/ubjson/ class=md-nav__link> <span class=md-ellipsis> UBJSON </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../features/binary_values/ class=md-nav__link> <span class=md-ellipsis> Binary Values </span> </a> </li> <li class=md-nav__item> <a href=../features/comments/ class=md-nav__link> <span class=md-ellipsis> Comments </span> </a> </li> <li class=md-nav__item> <a href=../features/trailing_commas/ class=md-nav__link> <span class=md-ellipsis> Trailing Commas </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_6> <div class="md-nav__link md-nav__container"> <a href=../features/element_access/ class="md-nav__link "> <span class=md-ellipsis> Element Access </span> </a> <label class="md-nav__link " for=__nav_2_6 id=__nav_2_6_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_6_label aria-expanded=false> <label class=md-nav__title for=__nav_2_6> <span class="md-nav__icon md-icon"></span> Element Access </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../features/element_access/unchecked_access/ class=md-nav__link> <span class=md-ellipsis> Unchecked access: operator[] </span> </a> </li> <li class=md-nav__item> <a href=../features/element_access/checked_access/ class=md-nav__link> <span class=md-ellipsis> Checked access: at </span> </a> </li> <li class=md-nav__item> <a href=../features/element_access/default_value/ class=md-nav__link> <span class=md-ellipsis> Access with default value: value </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../features/iterators/ class=md-nav__link> <span class=md-ellipsis> Iterators </span> </a> </li> <li class=md-nav__item> <a href=../features/json_pointer/ class=md-nav__link> <span class=md-ellipsis> JSON Pointer </span> </a> </li> <li class=md-nav__item> <a href=../features/json_patch/ class=md-nav__link> <span class=md-ellipsis> JSON Patch and Diff </span> </a> </li> <li class=md-nav__item> <a href=../features/merge_patch/ class=md-nav__link> <span class=md-ellipsis> JSON Merge Patch </span> </a> </li> <li class=md-nav__item> <a href=../features/modules/ class=md-nav__link> <span class=md-ellipsis> Modules </span> </a> </li> <li class=md-nav__item> <a href=../features/namespace/ class=md-nav__link> <span class=md-ellipsis> nlohmann Namespace </span> </a> </li> <li class=md-nav__item> <a href=../features/object_order/ class=md-nav__link> <span class=md-ellipsis> Object Order </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_14> <div class="md-nav__link md-nav__container"> <a href=../features/parsing/ class="md-nav__link "> <span class=md-ellipsis> Parsing </span> </a> <label class="md-nav__link " for=__nav_2_14 id=__nav_2_14_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_14_label aria-expanded=false> <label class=md-nav__title for=__nav_2_14> <span class="md-nav__icon md-icon"></span> Parsing </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../features/parsing/json_lines/ class=md-nav__link> <span class=md-ellipsis> JSON Lines </span> </a> </li> <li class=md-nav__item> <a href=../features/parsing/parse_exceptions/ class=md-nav__link> <span class=md-ellipsis> Parsing and Exceptions </span> </a> </li> <li class=md-nav__item> <a href=../features/parsing/parser_callbacks/ class=md-nav__link> <span class=md-ellipsis> Parser Callbacks </span> </a> </li> <li class=md-nav__item> <a href=../features/parsing/sax_interface/ class=md-nav__link> <span class=md-ellipsis> SAX Interface </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../features/assertions/ class=md-nav__link> <span class=md-ellipsis> Runtime Assertions </span> </a> </li> <li class=md-nav__item> <a href=../features/enum_conversion/ class=md-nav__link> <span class=md-ellipsis> Specializing enum conversion </span> </a> </li> <li class=md-nav__item> <a href=../features/macros/ class=md-nav__link> <span class=md-ellipsis> Supported Macros </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_18> <div class="md-nav__link md-nav__container"> <a href=../features/types/ class="md-nav__link "> <span class=md-ellipsis> Types </span> </a> <label class="md-nav__link " for=__nav_2_18 id=__nav_2_18_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_18_label aria-expanded=false> <label class=md-nav__title for=__nav_2_18> <span class="md-nav__icon md-icon"></span> Types </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../features/types/number_handling/ class=md-nav__link> <span class=md-ellipsis> Number Handling </span> </a> </li> </ul> </nav> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_3> <div class="md-nav__link md-nav__container"> <a href=../integration/ class="md-nav__link "> <span class=md-ellipsis> Integration </span> </a> <label class="md-nav__link " for=__nav_3 id=__nav_3_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_3_label aria-expanded=false> <label class=md-nav__title for=__nav_3> <span class="md-nav__icon md-icon"></span> Integration </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../integration/migration_guide/ class=md-nav__link> <span class=md-ellipsis> Migration Guide </span> </a> </li> <li class=md-nav__item> <a href=../integration/cmake/ class=md-nav__link> <span class=md-ellipsis> CMake </span> </a> </li> <li class=md-nav__item> <a href=../integration/package_managers/ class=md-nav__link> <span class=md-ellipsis> Package Managers </span> </a> </li> <li class=md-nav__item> <a href=../integration/pkg-config/ class=md-nav__link> <span class=md-ellipsis> Pkg-config </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4> <label class=md-nav__link for=__nav_4 id=__nav_4_label tabindex=0> <span class=md-ellipsis> API Documentation </span> <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_4_label aria-expanded=false> <label class=md-nav__title for=__nav_4> <span class="md-nav__icon md-icon"></span> API Documentation </label> <ul class=md-nav__list data-md-scrollfix> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_1> <div class="md-nav__link md-nav__container"> <a href=../api/basic_json/ class="md-nav__link "> <span class=md-ellipsis> basic_json </span> </a> <label class="md-nav__link " for=__nav_4_1 id=__nav_4_1_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_1_label aria-expanded=false> <label class=md-nav__title for=__nav_4_1> <span class="md-nav__icon md-icon"></span> basic_json </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../api/basic_json/basic_json/ class=md-nav__link> <span class=md-ellipsis> (Constructor) </span> </a> </li> <li class=md-nav__item> <a href=../api/basic_json/~basic_json/ class=md-nav__link> <span class=md-ellipsis> (Destructor) </span> </a> </li> <li class=md-nav__item> <a href=../api/basic_json/accept/ class=md-nav__link> <span class=md-ellipsis> accept </span> </a> </li> <li class=md-nav__item> <a href=../api/basic_json/array/ class=md-nav__link> <span class=md-ellipsis> array </span> </a> </li> <li class=md-nav__item> <a href=../api/basic_json/array_t/ class=md-nav__link> <span class=md-ellipsis> array_t </span> </a> </li> <li class=md-nav__item> <a href=../api/basic_json/at/ class=md-nav__link> <span class=md-ellipsis> at </span> </a> </li> <li class=md-nav__item> <a href=../api/basic_json/back/ class=md-nav__link> <span class=md-ellipsis> back </span> </a> </li> <li class=md-nav__item> <a href=../api/basic_json/begin/ class=md-nav__link> <span class=md-ellipsis> begin </span> </a> </li> <li class=md-nav__item> <a href=../api/basic_json/binary/ class=md-nav__link> <span class=md-ellipsis> binary </span> </a> </li> <li class=md-nav__item> <a href=../api/basic_json/binary_t/ class=md-nav__link> <span class=md-ellipsis> binary_t </span> </a> </li> <li class=md-nav__item> <a href=../api/basic_json/boolean_t/ class=md-nav__link> <span class=md-ellipsis> boolean_t </span> </a> </li> <li class=md-nav__item> <a href=../api/basic_json/cbegin/ class=md-nav__link> <span class=md-ellipsis> cbegin </span> </a> </li> <li class=md-nav__item> <a href=../api/basic_json/cbor_tag_handler_t/ class=md-nav__link> <span class=md-ellipsis> cbor_tag_handler_t </span> </a> </li> <li class=md-nav__item> <a href=../api/basic_json/cend/ class=md-nav__link> <span class=md-ellipsis> cend </span> </a> </li> <li class=md-nav__item> <a href=../api/basic_json/clear/ class=md-nav__link> <span class=md-ellipsis> clear </span> </a> </li> <li class=md-nav__item> <a href=../api/basic_json/contains/ class=md-nav__link> <span class=md-ellipsis> contains </span> </a> </li> <li class=md-nav__item> <a href=../api/basic_json/count/ class=md-nav__link> <span class=md-ellipsis> count </span> </a> </li> <li class=md-nav__item> <a href=../api/basic_json/crbegin/ class=md-nav__link> <span class=md-ellipsis> crbegin </span> </a> </li> <li class=md-nav__item> <a href=../api/basic_json/crend/ class=md-nav__link> <span class=md-ellipsis> crend </span> </a> </li> <li class=md-nav__item> <a href=../api/basic_json/default_object_comparator_t/ class=md-nav__link> <span class=md-ellipsis> default_object_comparator_t </span> </a> </li> <li class=md-nav__item> <a href=../api/basic_json/diff/ class=md-nav__link> <span class=md-ellipsis> diff </span> </a> </li> <li class=md-nav__item> <a href=../api/basic_json/dump/ class=md-nav__link> <span class=md-ellipsis> dump </span> </a> </li> <li class=md-nav__item> <a href=../api/basic_json/emplace/ class=md-nav__link> <span class=md-ellipsis> emplace </span> </a> </li> <li class=md-nav__item> <a href=../api/basic_json/emplace_back/ class=md-nav__link> <span class=md-ellipsis> emplace_back </span> </a> </li> <li class=md-nav__item> <a href=../api/basic_json/empty/ class=md-nav__link> <span class=md-ellipsis> empty </span> </a> </li> <li class=md-nav__item> <a href=../api/basic_json/end/ class=md-nav__link> <span class=md-ellipsis> end </span> </a> </li> <li class=md-nav__item> <a href=../api/basic_json/end_pos/ class=md-nav__link> <span class=md-ellipsis> end_pos </span> </a> </li> <li class=md-nav__item> <a href=../api/basic_json/erase/ class=md-nav__link> <span class=md-ellipsis> erase </span> </a> </li> <li class=md-nav__item> <a href=../api/basic_json/error_handler_t/ class=md-nav__link> <span class=md-ellipsis> error_handler_t </span> </a> </li> <li class=md-nav__item> <a href=../api/basic_json/exception/ class=md-nav__link> <span class=md-ellipsis> exception </span> </a> </li> <li class=md-nav__item> <a href=../api/basic_json/find/ class=md-nav__link> <span class=md-ellipsis> find </span> </a> </li> <li class=md-nav__item> <a href=../api/basic_json/flatten/ class=md-nav__link> <span class=md-ellipsis> flatten </span> </a> </li> <li class=md-nav__item> <a href=../api/basic_json/from_bjdata/ class=md-nav__link> <span class=md-ellipsis> from_bjdata </span> </a> </li> <li class=md-nav__item> <a href=../api/basic_json/from_bson/ class=md-nav__link> <span class=md-ellipsis> from_bson </span> </a> </li> <li class=md-nav__item> <a href=../api/basic_json/from_cbor/ class=md-nav__link> <span class=md-ellipsis> from_cbor </span> </a> </li> <li class=md-nav__item> <a href=../api/basic_json/from_msgpack/ class=md-nav__link> <span class=md-ellipsis> from_msgpack </span> </a> </li> <li class=md-nav__item> <a href=../api/basic_json/from_ubjson/ class=md-nav__link> <span class=md-ellipsis> from_ubjson </span> </a> </li> <li class=md-nav__item> <a href=../api/basic_json/front/ class=md-nav__link> <span class=md-ellipsis> front </span> </a> </li> <li class=md-nav__item> <a href=../api/basic_json/get/ class=md-nav__link> <span class=md-ellipsis> get </span> </a> </li> <li class=md-nav__item> <a href=../api/basic_json/get_allocator/ class=md-nav__link> <span class=md-ellipsis> get_allocator </span> </a> </li> <li class=md-nav__item> <a href=../api/basic_json/get_binary/ class=md-nav__link> <span class=md-ellipsis> get_binary </span> </a> </li> <li class=md-nav__item> <a href=../api/basic_json/get_ptr/ class=md-nav__link> <span class=md-ellipsis> get_ptr </span> </a> </li> <li class=md-nav__item> <a href=../api/basic_json/get_ref/ class=md-nav__link> <span class=md-ellipsis> get_ref </span> </a> </li> <li class=md-nav__item> <a href=../api/basic_json/get_to/ class=md-nav__link> <span class=md-ellipsis> get_to </span> </a> </li> <li class=md-nav__item> <a href=../api/basic_json/std_hash/ class=md-nav__link> <span class=md-ellipsis> std::hash&lt;basic_json&gt; </span> </a> </li> <li class=md-nav__item> <a href=../api/basic_json/input_format_t/ class=md-nav__link> <span class=md-ellipsis> input_format_t </span> </a> </li> <li class=md-nav__item> <a href=../api/basic_json/insert/ class=md-nav__link> <span class=md-ellipsis> insert </span> </a> </li> <li class=md-nav__item> <a href=../api/basic_json/invalid_iterator/ class=md-nav__link> <span class=md-ellipsis> invalid_iterator </span> </a> </li> <li class=md-nav__item> <a href=../api/basic_json/is_array/ class=md-nav__link> <span class=md-ellipsis> is_array </span> </a> </li> <li class=md-nav__item> <a href=../api/basic_json/is_binary/ class=md-nav__link> <span class=md-ellipsis> is_binary </span> </a> </li> <li class=md-nav__item> <a href=../api/basic_json/is_boolean/ class=md-nav__link> <span class=md-ellipsis> is_boolean </span> </a> </li> <li class=md-nav__item> <a href=../api/basic_json/is_discarded/ class=md-nav__link> <span class=md-ellipsis> is_discarded </span> </a> </li> <li class=md-nav__item> <a href=../api/basic_json/is_null/ class=md-nav__link> <span class=md-ellipsis> is_null </span> </a> </li> <li class=md-nav__item> <a href=../api/basic_json/is_number/ class=md-nav__link> <span class=md-ellipsis> is_number </span> </a> </li> <li class=md-nav__item> <a href=../api/basic_json/is_number_float/ class=md-nav__link> <span class=md-ellipsis> is_number_float </span> </a> </li> <li class=md-nav__item> <a href=../api/basic_json/is_number_integer/ class=md-nav__link> <span class=md-ellipsis> is_number_integer </span> </a> </li> <li class=md-nav__item> <a href=../api/basic_json/is_number_unsigned/ class=md-nav__link> <span class=md-ellipsis> is_number_unsigned </span> </a> </li> <li class=md-nav__item> <a href=../api/basic_json/is_object/ class=md-nav__link> <span class=md-ellipsis> is_object </span> </a> </li> <li class=md-nav__item> <a href=../api/basic_json/is_primitive/ class=md-nav__link> <span class=md-ellipsis> is_primitive </span> </a> </li> <li class=md-nav__item> <a href=../api/basic_json/is_string/ class=md-nav__link> <span class=md-ellipsis> is_string </span> </a> </li> <li class=md-nav__item> <a href=../api/basic_json/is_structured/ class=md-nav__link> <span class=md-ellipsis> is_structured </span> </a> </li> <li class=md-nav__item> <a href=../api/basic_json/items/ class=md-nav__link> <span class=md-ellipsis> items </span> </a> </li> <li class=md-nav__item> <a href=../api/basic_json/json_base_class_t/ class=md-nav__link> <span class=md-ellipsis> json_base_class_t </span> </a> </li> <li class=md-nav__item> <a href=../api/basic_json/json_serializer/ class=md-nav__link> <span class=md-ellipsis> json_serializer </span> </a> </li> <li class=md-nav__item> <a href=../api/basic_json/max_size/ class=md-nav__link> <span class=md-ellipsis> max_size </span> </a> </li> <li class=md-nav__item> <a href=../api/basic_json/meta/ class=md-nav__link> <span class=md-ellipsis> meta </span> </a> </li> <li class=md-nav__item> <a href=../api/basic_json/merge_patch/ class=md-nav__link> <span class=md-ellipsis> merge_patch </span> </a> </li> <li class=md-nav__item> <a href=../api/basic_json/number_float_t/ class=md-nav__link> <span class=md-ellipsis> number_float_t </span> </a> </li> <li class=md-nav__item> <a href=../api/basic_json/number_integer_t/ class=md-nav__link> <span class=md-ellipsis> number_integer_t </span> </a> </li> <li class=md-nav__item> <a href=../api/basic_json/number_unsigned_t/ class=md-nav__link> <span class=md-ellipsis> number_unsigned_t </span> </a> </li> <li class=md-nav__item> <a href=../api/basic_json/object/ class=md-nav__link> <span class=md-ellipsis> object </span> </a> </li> <li class=md-nav__item> <a href=../api/basic_json/object_comparator_t/ class=md-nav__link> <span class=md-ellipsis> object_comparator_t </span> </a> </li> <li class=md-nav__item> <a href=../api/basic_json/object_t/ class=md-nav__link> <span class=md-ellipsis> object_t </span> </a> </li> <li class=md-nav__item> <a href=../api/basic_json/operator_ValueType/ class=md-nav__link> <span class=md-ellipsis> operator ValueType </span> </a> </li> <li class=md-nav__item> <a href=../api/basic_json/operator_value_t/ class=md-nav__link> <span class=md-ellipsis> operator value_t </span> </a> </li> <li class=md-nav__item> <a href=../api/basic_json/operator%5B%5D/ class=md-nav__link> <span class=md-ellipsis> operator[] </span> </a> </li> <li class=md-nav__item> <a href=../api/basic_json/operator%3D/ class=md-nav__link> <span class=md-ellipsis> operator= </span> </a> </li> <li class=md-nav__item> <a href=../api/basic_json/operator%2B%3D/ class=md-nav__link> <span class=md-ellipsis> operator+= </span> </a> </li> <li class=md-nav__item> <a href=../api/basic_json/operator_eq/ class=md-nav__link> <span class=md-ellipsis> operator== </span> </a> </li> <li class=md-nav__item> <a href=../api/basic_json/operator_ne/ class=md-nav__link> <span class=md-ellipsis> operator!= </span> </a> </li> <li class=md-nav__item> <a href=../api/basic_json/operator_lt/ class=md-nav__link> <span class=md-ellipsis> operator< </span> </a> </li> <li class=md-nav__item> <a href=../api/basic_json/operator_gt/ class=md-nav__link> <span class=md-ellipsis> operator> </span> </a> </li> <li class=md-nav__item> <a href=../api/basic_json/operator_le/ class=md-nav__link> <span class=md-ellipsis> operator<= </span> </a> </li> <li class=md-nav__item> <a href=../api/basic_json/operator_ge/ class=md-nav__link> <span class=md-ellipsis> operator>= </span> </a> </li> <li class=md-nav__item> <a href=../api/basic_json/operator_spaceship/ class=md-nav__link> <span class=md-ellipsis> operator<=> </span> </a> </li> <li class=md-nav__item> <a href=../api/basic_json/out_of_range/ class=md-nav__link> <span class=md-ellipsis> out_of_range </span> </a> </li> <li class=md-nav__item> <a href=../api/basic_json/other_error/ class=md-nav__link> <span class=md-ellipsis> other_error </span> </a> </li> <li class=md-nav__item> <a href=../api/basic_json/parse/ class=md-nav__link> <span class=md-ellipsis> parse </span> </a> </li> <li class=md-nav__item> <a href=../api/basic_json/parse_error/ class=md-nav__link> <span class=md-ellipsis> parse_error </span> </a> </li> <li class=md-nav__item> <a href=../api/basic_json/parse_event_t/ class=md-nav__link> <span class=md-ellipsis> parse_event_t </span> </a> </li> <li class=md-nav__item> <a href=../api/basic_json/parser_callback_t/ class=md-nav__link> <span class=md-ellipsis> parser_callback_t </span> </a> </li> <li class=md-nav__item> <a href=../api/basic_json/patch/ class=md-nav__link> <span class=md-ellipsis> patch </span> </a> </li> <li class=md-nav__item> <a href=../api/basic_json/patch_inplace/ class=md-nav__link> <span class=md-ellipsis> patch_inplace </span> </a> </li> <li class=md-nav__item> <a href=../api/basic_json/push_back/ class=md-nav__link> <span class=md-ellipsis> push_back </span> </a> </li> <li class=md-nav__item> <a href=../api/basic_json/rbegin/ class=md-nav__link> <span class=md-ellipsis> rbegin </span> </a> </li> <li class=md-nav__item> <a href=../api/basic_json/rend/ class=md-nav__link> <span class=md-ellipsis> rend </span> </a> </li> <li class=md-nav__item> <a href=../api/basic_json/sax_parse/ class=md-nav__link> <span class=md-ellipsis> sax_parse </span> </a> </li> <li class=md-nav__item> <a href=../api/basic_json/size/ class=md-nav__link> <span class=md-ellipsis> size </span> </a> </li> <li class=md-nav__item> <a href=../api/basic_json/start_pos/ class=md-nav__link> <span class=md-ellipsis> start_pos </span> </a> </li> <li class=md-nav__item> <a href=../api/basic_json/string_t/ class=md-nav__link> <span class=md-ellipsis> string_t </span> </a> </li> <li class=md-nav__item> <a href=../api/basic_json/swap/ class=md-nav__link> <span class=md-ellipsis> swap </span> </a> </li> <li class=md-nav__item> <a href=../api/basic_json/std_swap/ class=md-nav__link> <span class=md-ellipsis> std::swap&lt;basic_json&gt; </span> </a> </li> <li class=md-nav__item> <a href=../api/basic_json/to_bjdata/ class=md-nav__link> <span class=md-ellipsis> to_bjdata </span> </a> </li> <li class=md-nav__item> <a href=../api/basic_json/to_bson/ class=md-nav__link> <span class=md-ellipsis> to_bson </span> </a> </li> <li class=md-nav__item> <a href=../api/basic_json/to_cbor/ class=md-nav__link> <span class=md-ellipsis> to_cbor </span> </a> </li> <li class=md-nav__item> <a href=../api/basic_json/to_msgpack/ class=md-nav__link> <span class=md-ellipsis> to_msgpack </span> </a> </li> <li class=md-nav__item> <a href=../api/basic_json/to_string/ class=md-nav__link> <span class=md-ellipsis> to_string </span> </a> </li> <li class=md-nav__item> <a href=../api/basic_json/to_ubjson/ class=md-nav__link> <span class=md-ellipsis> to_ubjson </span> </a> </li> <li class=md-nav__item> <a href=../api/basic_json/type/ class=md-nav__link> <span class=md-ellipsis> type </span> </a> </li> <li class=md-nav__item> <a href=../api/basic_json/type_error/ class=md-nav__link> <span class=md-ellipsis> type_error </span> </a> </li> <li class=md-nav__item> <a href=../api/basic_json/type_name/ class=md-nav__link> <span class=md-ellipsis> type_name </span> </a> </li> <li class=md-nav__item> <a href=../api/basic_json/unflatten/ class=md-nav__link> <span class=md-ellipsis> unflatten </span> </a> </li> <li class=md-nav__item> <a href=../api/basic_json/update/ class=md-nav__link> <span class=md-ellipsis> update </span> </a> </li> <li class=md-nav__item> <a href=../api/basic_json/value/ class=md-nav__link> <span class=md-ellipsis> value </span> </a> </li> <li class=md-nav__item> <a href=../api/basic_json/value_t/ class=md-nav__link> <span class=md-ellipsis> value_t </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_2> <div class="md-nav__link md-nav__container"> <a href=../api/byte_container_with_subtype/ class="md-nav__link "> <span class=md-ellipsis> byte_container_with_subtype </span> </a> <label class="md-nav__link " for=__nav_4_2 id=__nav_4_2_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_2_label aria-expanded=false> <label class=md-nav__title for=__nav_4_2> <span class="md-nav__icon md-icon"></span> byte_container_with_subtype </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../api/byte_container_with_subtype/byte_container_with_subtype/ class=md-nav__link> <span class=md-ellipsis> (constructor) </span> </a> </li> <li class=md-nav__item> <a href=../api/byte_container_with_subtype/clear_subtype/ class=md-nav__link> <span class=md-ellipsis> clear_subtype </span> </a> </li> <li class=md-nav__item> <a href=../api/byte_container_with_subtype/has_subtype/ class=md-nav__link> <span class=md-ellipsis> has_subtype </span> </a> </li> <li class=md-nav__item> <a href=../api/byte_container_with_subtype/set_subtype/ class=md-nav__link> <span class=md-ellipsis> set_subtype </span> </a> </li> <li class=md-nav__item> <a href=../api/byte_container_with_subtype/subtype/ class=md-nav__link> <span class=md-ellipsis> subtype </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_3> <div class="md-nav__link md-nav__container"> <a href=../api/adl_serializer/ class="md-nav__link "> <span class=md-ellipsis> adl_serializer </span> </a> <label class="md-nav__link " for=__nav_4_3 id=__nav_4_3_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_3_label aria-expanded=false> <label class=md-nav__title for=__nav_4_3> <span class="md-nav__icon md-icon"></span> adl_serializer </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../api/adl_serializer/from_json/ class=md-nav__link> <span class=md-ellipsis> from_json </span> </a> </li> <li class=md-nav__item> <a href=../api/adl_serializer/to_json/ class=md-nav__link> <span class=md-ellipsis> to_json </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../api/json/ class=md-nav__link> <span class=md-ellipsis> json </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_5> <div class="md-nav__link md-nav__container"> <a href=../api/json_pointer/ class="md-nav__link "> <span class=md-ellipsis> json_pointer </span> </a> <label class="md-nav__link " for=__nav_4_5 id=__nav_4_5_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_5_label aria-expanded=false> <label class=md-nav__title for=__nav_4_5> <span class="md-nav__icon md-icon"></span> json_pointer </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../api/json_pointer/json_pointer/ class=md-nav__link> <span class=md-ellipsis> (Constructor) </span> </a> </li> <li class=md-nav__item> <a href=../api/json_pointer/back/ class=md-nav__link> <span class=md-ellipsis> back </span> </a> </li> <li class=md-nav__item> <a href=../api/json_pointer/empty/ class=md-nav__link> <span class=md-ellipsis> empty </span> </a> </li> <li class=md-nav__item> <a href=../api/json_pointer/front/ class=md-nav__link> <span class=md-ellipsis> front </span> </a> </li> <li class=md-nav__item> <a href=../api/json_pointer/operator_string_t/ class=md-nav__link> <span class=md-ellipsis> operator string_t </span> </a> </li> <li class=md-nav__item> <a href=../api/json_pointer/operator_eq/ class=md-nav__link> <span class=md-ellipsis> operator== </span> </a> </li> <li class=md-nav__item> <a href=../api/json_pointer/operator_ne/ class=md-nav__link> <span class=md-ellipsis> operator!= </span> </a> </li> <li class=md-nav__item> <a href=../api/json_pointer/operator_slash/ class=md-nav__link> <span class=md-ellipsis> operator/ </span> </a> </li> <li class=md-nav__item> <a href=../api/json_pointer/operator_slasheq/ class=md-nav__link> <span class=md-ellipsis> operator/= </span> </a> </li> <li class=md-nav__item> <a href=../api/json_pointer/parent_pointer/ class=md-nav__link> <span class=md-ellipsis> parent_pointer </span> </a> </li> <li class=md-nav__item> <a href=../api/json_pointer/pop_back/ class=md-nav__link> <span class=md-ellipsis> pop_back </span> </a> </li> <li class=md-nav__item> <a href=../api/json_pointer/pop_front/ class=md-nav__link> <span class=md-ellipsis> pop_front </span> </a> </li> <li class=md-nav__item> <a href=../api/json_pointer/push_back/ class=md-nav__link> <span class=md-ellipsis> push_back </span> </a> </li> <li class=md-nav__item> <a href=../api/json_pointer/push_front/ class=md-nav__link> <span class=md-ellipsis> push_front </span> </a> </li> <li class=md-nav__item> <a href=../api/json_pointer/string_t/ class=md-nav__link> <span class=md-ellipsis> string_t </span> </a> </li> <li class=md-nav__item> <a href=../api/json_pointer/to_string/ class=md-nav__link> <span class=md-ellipsis> to_string </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_6> <div class="md-nav__link md-nav__container"> <a href=../api/json_sax/ class="md-nav__link "> <span class=md-ellipsis> json_sax </span> </a> <label class="md-nav__link " for=__nav_4_6 id=__nav_4_6_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_6_label aria-expanded=false> <label class=md-nav__title for=__nav_4_6> <span class="md-nav__icon md-icon"></span> json_sax </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../api/json_sax/binary/ class=md-nav__link> <span class=md-ellipsis> binary </span> </a> </li> <li class=md-nav__item> <a href=../api/json_sax/boolean/ class=md-nav__link> <span class=md-ellipsis> boolean </span> </a> </li> <li class=md-nav__item> <a href=../api/json_sax/end_array/ class=md-nav__link> <span class=md-ellipsis> end_array </span> </a> </li> <li class=md-nav__item> <a href=../api/json_sax/end_object/ class=md-nav__link> <span class=md-ellipsis> end_object </span> </a> </li> <li class=md-nav__item> <a href=../api/json_sax/key/ class=md-nav__link> <span class=md-ellipsis> key </span> </a> </li> <li class=md-nav__item> <a href=../api/json_sax/null/ class=md-nav__link> <span class=md-ellipsis> null </span> </a> </li> <li class=md-nav__item> <a href=../api/json_sax/number_float/ class=md-nav__link> <span class=md-ellipsis> number_float </span> </a> </li> <li class=md-nav__item> <a href=../api/json_sax/number_integer/ class=md-nav__link> <span class=md-ellipsis> number_integer </span> </a> </li> <li class=md-nav__item> <a href=../api/json_sax/number_unsigned/ class=md-nav__link> <span class=md-ellipsis> number_unsigned </span> </a> </li> <li class=md-nav__item> <a href=../api/json_sax/parse_error/ class=md-nav__link> <span class=md-ellipsis> parse_error </span> </a> </li> <li class=md-nav__item> <a href=../api/json_sax/start_array/ class=md-nav__link> <span class=md-ellipsis> start_array </span> </a> </li> <li class=md-nav__item> <a href=../api/json_sax/start_object/ class=md-nav__link> <span class=md-ellipsis> start_object </span> </a> </li> <li class=md-nav__item> <a href=../api/json_sax/string/ class=md-nav__link> <span class=md-ellipsis> string </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../api/operator_ltlt/ class=md-nav__link> <span class=md-ellipsis> operator<<(basic_json), operator<<(json_pointer) </span> </a> </li> <li class=md-nav__item> <a href=../api/operator_gtgt/ class=md-nav__link> <span class=md-ellipsis> operator>>(basic_json) </span> </a> </li> <li class=md-nav__item> <a href=../api/operator_literal_json/ class=md-nav__link> <span class=md-ellipsis> operator""_json </span> </a> </li> <li class=md-nav__item> <a href=../api/operator_literal_json_pointer/ class=md-nav__link> <span class=md-ellipsis> operator""_json_pointer </span> </a> </li> <li class=md-nav__item> <a href=../api/ordered_json/ class=md-nav__link> <span class=md-ellipsis> ordered_json </span> </a> </li> <li class=md-nav__item> <a href=../api/ordered_map/ class=md-nav__link> <span class=md-ellipsis> ordered_map </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_13> <div class="md-nav__link md-nav__container"> <a href=../api/macros/ class="md-nav__link "> <span class=md-ellipsis> macros </span> </a> <label class="md-nav__link " for=__nav_4_13 id=__nav_4_13_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_13_label aria-expanded=false> <label class=md-nav__title for=__nav_4_13> <span class="md-nav__icon md-icon"></span> macros </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../api/macros/json_assert/ class=md-nav__link> <span class=md-ellipsis> JSON_ASSERT </span> </a> </li> <li class=md-nav__item> <a href=../api/macros/json_brace_init_copy_semantics/ class=md-nav__link> <span class=md-ellipsis> JSON_BRACE_INIT_COPY_SEMANTICS </span> </a> </li> <li class=md-nav__item> <a href=../api/macros/json_throw_user/ class=md-nav__link> <span class=md-ellipsis> JSON_CATCH_USER, JSON_THROW_USER, JSON_TRY_USER </span> </a> </li> <li class=md-nav__item> <a href=../api/macros/json_diagnostics/ class=md-nav__link> <span class=md-ellipsis> JSON_DIAGNOSTICS </span> </a> </li> <li class=md-nav__item> <a href=../api/macros/json_diagnostic_positions/ class=md-nav__link> <span class=md-ellipsis> JSON_DIAGNOSTIC_POSITIONS </span> </a> </li> <li class=md-nav__item> <a href=../api/macros/json_disable_enum_serialization/ class=md-nav__link> <span class=md-ellipsis> JSON_DISABLE_ENUM_SERIALIZATION </span> </a> </li> <li class=md-nav__item> <a href=../api/macros/json_has_cpp_11/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_CPP_11, JSON_HAS_CPP_14, JSON_HAS_CPP_17, JSON_HAS_CPP_20 </span> </a> </li> <li class=md-nav__item> <a href=../api/macros/json_has_filesystem/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_EXPERIMENTAL_FILESYSTEM, JSON_HAS_FILESYSTEM </span> </a> </li> <li class=md-nav__item> <a href=../api/macros/json_has_ranges/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_RANGES </span> </a> </li> <li class=md-nav__item> <a href=../api/macros/json_has_static_rtti/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_STATIC_RTTI </span> </a> </li> <li class=md-nav__item> <a href=../api/macros/json_has_three_way_comparison/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_THREE_WAY_COMPARISON </span> </a> </li> <li class=md-nav__item> <a href=../api/macros/json_noexception/ class=md-nav__link> <span class=md-ellipsis> JSON_NOEXCEPTION </span> </a> </li> <li class=md-nav__item> <a href=../api/macros/json_no_io/ class=md-nav__link> <span class=md-ellipsis> JSON_NO_IO </span> </a> </li> <li class=md-nav__item> <a href=../api/macros/json_skip_library_version_check/ class=md-nav__link> <span class=md-ellipsis> JSON_SKIP_LIBRARY_VERSION_CHECK </span> </a> </li> <li class=md-nav__item> <a href=../api/macros/json_skip_unsupported_compiler_check/ class=md-nav__link> <span class=md-ellipsis> JSON_SKIP_UNSUPPORTED_COMPILER_CHECK </span> </a> </li> <li class=md-nav__item> <a href=../api/macros/json_use_global_udls/ class=md-nav__link> <span class=md-ellipsis> JSON_USE_GLOBAL_UDLS </span> </a> </li> <li class=md-nav__item> <a href=../api/macros/json_use_implicit_conversions/ class=md-nav__link> <span class=md-ellipsis> JSON_USE_IMPLICIT_CONVERSIONS </span> </a> </li> <li class=md-nav__item> <a href=../api/macros/json_use_legacy_discarded_value_comparison/ class=md-nav__link> <span class=md-ellipsis> JSON_USE_LEGACY_DISCARDED_VALUE_COMPARISON </span> </a> </li> <li class=md-nav__item> <a href=../api/macros/nlohmann_define_derived_type/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_ONLY_SERIALIZE, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE </span> </a> </li> <li class=md-nav__item> <a href=../api/macros/nlohmann_define_type_intrusive/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_TYPE_INTRUSIVE, NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_TYPE_INTRUSIVE_ONLY_SERIALIZE </span> </a> </li> <li class=md-nav__item> <a href=../api/macros/nlohmann_define_type_non_intrusive/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE </span> </a> </li> <li class=md-nav__item> <a href=../api/macros/nlohmann_define_type_with_names/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_TYPE_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES </span> </a> </li> <li class=md-nav__item> <a href=../api/macros/nlohmann_json_namespace/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_NAMESPACE </span> </a> </li> <li class=md-nav__item> <a href=../api/macros/nlohmann_json_namespace_begin/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_NAMESPACE_BEGIN, NLOHMANN_JSON_NAMESPACE_END </span> </a> </li> <li class=md-nav__item> <a href=../api/macros/nlohmann_json_namespace_no_version/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_NAMESPACE_NO_VERSION </span> </a> </li> <li class=md-nav__item> <a href=../api/macros/nlohmann_json_serialize_enum/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_SERIALIZE_ENUM </span> </a> </li> <li class=md-nav__item> <a href=../api/macros/nlohmann_json_serialize_enum_strict/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_SERIALIZE_ENUM_STRICT </span> </a> </li> <li class=md-nav__item> <a href=../api/macros/nlohmann_json_version_major/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_VERSION_MAJOR, NLOHMANN_JSON_VERSION_MINOR, NLOHMANN_JSON_VERSION_PATCH </span> </a> </li> </ul> </nav> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--active md-nav__item--section md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_5 checked> <div class="md-nav__link md-nav__container"> <a href=./ class="md-nav__link md-nav__link--active"> <span class=md-ellipsis> Community </span> </a> <label class="md-nav__link md-nav__link--active" for=__nav_5 id=__nav_5_label tabindex> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_5_label aria-expanded=true> <label class=md-nav__title for=__nav_5> <span class="md-nav__icon md-icon"></span> Community </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=code_of_conduct/ class=md-nav__link> <span class=md-ellipsis> Code of Conduct </span> </a> </li> <li class=md-nav__item> <a href=contribution_guidelines/ class=md-nav__link> <span class=md-ellipsis> Contribution Guidelines </span> </a> </li> <li class=md-nav__item> <a href=quality_assurance/ class=md-nav__link> <span class=md-ellipsis> Quality assurance </span> </a> </li> <li class=md-nav__item> <a href=governance/ class=md-nav__link> <span class=md-ellipsis> Governance </span> </a> </li> <li class=md-nav__item> <a href=security_policy/ class=md-nav__link> <span class=md-ellipsis> Security Policy </span> </a> </li> </ul> </nav> </li> </ul> </nav> </div> </div> </div> <div class="md-sidebar md-sidebar--secondary" data-md-component=sidebar data-md-type=toc> <div class=md-sidebar__scrollwrap> <div class=md-sidebar__inner> <nav class="md-nav md-nav--secondary" aria-label="Table of contents"> </nav> </div> </div> </div> <div class=md-content data-md-component=content> <article class="md-content__inner md-typeset"> <a href="https://github.com/nlohmann/json/edit/develop/docs/mkdocs/docs/community/index.md" title="Edit this page" class="md-content__button md-icon" rel="edit"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M10 20H6V4h7v5h5v3.1l2-2V8l-6-6H6c-1.1 0-2 .9-2 2v16c0 1.1.9 2 2 2h4zm10.2-7c.1 0 .3.1.4.2l1.3 1.3c.2.2.2.6 0 .8l-1 1-2.1-2.1 1-1c.1-.1.2-.2.4-.2m0 3.9L14.1 23H12v-2.1l6.1-6.1z"/></svg> </a> <a href="https://github.com/nlohmann/json/raw/develop/docs/mkdocs/docs/community/index.md" title="View source of this page" class="md-content__button md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M17 18c.56 0 1 .44 1 1s-.44 1-1 1-1-.44-1-1 .44-1 1-1m0-3c-2.73 0-5.06 1.66-6 4 .94 2.34 3.27 4 6 4s5.06-1.66 6-4c-.94-2.34-3.27-4-6-4m0 6.5a2.5 2.5 0 0 1-2.5-2.5 2.5 2.5 0 0 1 2.5-2.5 2.5 2.5 0 0 1 2.5 2.5 2.5 2.5 0 0 1-2.5 2.5M9.27 20H6V4h7v5h5v4.07c.7.08 1.36.25 2 .49V8l-6-6H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h4.5a8.2 8.2 0 0 1-1.23-2"/></svg> </a> <h1 id=community>Community<a class=headerlink href=#community title="Permanent link">&para;</a></h1> <ul> <li><a href=code_of_conduct/ >Code of Conduct</a> - the rules and norms of this project</li> <li><a href=contribution_guidelines/ >Contribution Guidelines</a> - guidelines how to contribute to this project</li> <li><a href=governance/ >Governance</a> - the governance model of this project</li> <li><a href=quality_assurance/ >Quality Assurance</a> - how the quality of this project is assured</li> <li><a href=security_policy/ >Security Policy</a> - the security policy of the project</li> </ul> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 23, 2026 11:16:18 UTC">June 23, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
+<!doctype html><html lang=en class=no-js> <head><meta charset=utf-8><meta name=viewport content="width=device-width,initial-scale=1"><meta name=author content="Niels Lohmann"><link href="https://json.nlohmann.me/community/" rel="canonical"><link href=../api/macros/nlohmann_json_version_major/ rel=prev><link href=code_of_conduct/ rel=next><link rel=icon href=../assets/images/favicon.png><meta name=generator content="mkdocs-1.6.1, mkdocs-material-9.7.6"><title>Community - JSON for Modern C++</title><link rel=stylesheet href=../assets/stylesheets/main.484c7ddc.min.css><link rel=stylesheet href=../assets/stylesheets/palette.ab4e12ef.min.css><link rel="stylesheet" href="../assets/external/fonts.googleapis.com/css.61a430c9.css"><style>:root{--md-text-font:"Roboto";--md-code-font:"JetBrains Mono"}</style><link rel=stylesheet href=../css/custom.css><script>__md_scope=new URL("..",location),__md_hash=e=>[...e].reduce(((e,_)=>(e<<5)-e+_.charCodeAt(0)),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script></head> <body dir=ltr data-md-color-scheme=default data-md-color-primary=indigo data-md-color-accent=indigo> <input class=md-toggle data-md-toggle=drawer type=checkbox id=__drawer autocomplete=off> <input class=md-toggle data-md-toggle=search type=checkbox id=__search autocomplete=off> <label class=md-overlay for=__drawer></label> <div data-md-component=skip> <a href=#community class=md-skip> Skip to content </a> </div> <div data-md-component=announce> </div> <header class=md-header data-md-component=header> <nav class="md-header__inner md-grid" aria-label=Header> <a href=.. title="JSON for Modern C++" class="md-header__button md-logo" aria-label="JSON for Modern C++" data-md-component=logo> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54"/></svg> </a> <label class="md-header__button md-icon" for=__drawer> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M3 6h18v2H3zm0 5h18v2H3zm0 5h18v2H3z"/></svg> </label> <div class=md-header__title data-md-component=header-title> <div class=md-header__ellipsis> <div class=md-header__topic> <span class=md-ellipsis> JSON for Modern C++ </span> </div> <div class=md-header__topic data-md-component=header-topic> <span class=md-ellipsis> Community </span> </div> </div> </div> <form class=md-header__option data-md-component=palette> <input class=md-option data-md-color-media="(prefers-color-scheme: light)" data-md-color-scheme=default data-md-color-primary=indigo data-md-color-accent=indigo aria-label="Switch to dark mode" type=radio name=__palette id=__palette_0> <label class="md-header__button md-icon" title="Switch to dark mode" for=__palette_1 hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a4 4 0 0 0-4 4 4 4 0 0 0 4 4 4 4 0 0 0 4-4 4 4 0 0 0-4-4m0 10a6 6 0 0 1-6-6 6 6 0 0 1 6-6 6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12z"/></svg> </label> <input class=md-option data-md-color-media="(prefers-color-scheme: dark)" data-md-color-scheme=slate data-md-color-primary=indigo data-md-color-accent=indigo aria-label="Switch to light mode" type=radio name=__palette id=__palette_1> <label class="md-header__button md-icon" title="Switch to light mode" for=__palette_0 hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 18c-.89 0-1.74-.2-2.5-.55C11.56 16.5 13 14.42 13 12s-1.44-4.5-3.5-5.45C10.26 6.2 11.11 6 12 6a6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12z"/></svg> </label> </form> <script>var palette=__md_get("__palette");if(palette&&palette.color){if("(prefers-color-scheme)"===palette.color.media){var media=matchMedia("(prefers-color-scheme: light)"),input=document.querySelector(media.matches?"[data-md-color-media='(prefers-color-scheme: light)']":"[data-md-color-media='(prefers-color-scheme: dark)']");palette.color.media=input.getAttribute("data-md-color-media"),palette.color.scheme=input.getAttribute("data-md-color-scheme"),palette.color.primary=input.getAttribute("data-md-color-primary"),palette.color.accent=input.getAttribute("data-md-color-accent")}for(var[key,value]of Object.entries(palette.color))document.body.setAttribute("data-md-color-"+key,value)}</script> <label class="md-header__button md-icon" for=__search> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg> </label> <div class=md-search data-md-component=search role=dialog> <label class=md-search__overlay for=__search></label> <div class=md-search__inner role=search> <form class=md-search__form name=search> <input type=text class=md-search__input name=query aria-label=Search placeholder=Search autocapitalize=off autocorrect=off autocomplete=off spellcheck=false data-md-component=search-query required> <label class="md-search__icon md-icon" for=__search> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11z"/></svg> </label> <nav class=md-search__options aria-label=Search> <button type=reset class="md-search__icon md-icon" title=Clear aria-label=Clear tabindex=-1> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z"/></svg> </button> </nav> </form> <div class=md-search__output> <div class=md-search__scrollwrap tabindex=0 data-md-scrollfix> <div class=md-search-result data-md-component=search-result> <div class=md-search-result__meta> Initializing search </div> <ol class=md-search-result__list role=presentation></ol> </div> </div> </div> </div> </div> <div class=md-header__source> <a href="https://github.com/nlohmann/json" title="Go to repository" class="md-source" data-md-component="source"> <div class="md-source__icon md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </div> <div class=md-source__repository> nlohmann/json </div> </a> </div> </nav> </header> <div class=md-container data-md-component=container> <nav class=md-tabs aria-label=Tabs data-md-component=tabs> <div class=md-grid> <ul class=md-tabs__list> <li class=md-tabs__item> <a href=.. class=md-tabs__link> Home </a> </li> <li class=md-tabs__item> <a href=../features/arbitrary_types/ class=md-tabs__link> Features </a> </li> <li class=md-tabs__item> <a href=../integration/ class=md-tabs__link> Integration </a> </li> <li class=md-tabs__item> <a href=../api/basic_json/ class=md-tabs__link> API Documentation </a> </li> <li class="md-tabs__item md-tabs__item--active"> <a href=./ class=md-tabs__link> Community </a> </li> </ul> </div> </nav> <main class=md-main data-md-component=main> <div class="md-main__inner md-grid"> <div class="md-sidebar md-sidebar--primary" data-md-component=sidebar data-md-type=navigation> <div class=md-sidebar__scrollwrap> <div class=md-sidebar__inner> <nav class="md-nav md-nav--primary md-nav--lifted" aria-label=Navigation data-md-level=0> <label class=md-nav__title for=__drawer> <a href=.. title="JSON for Modern C++" class="md-nav__button md-logo" aria-label="JSON for Modern C++" data-md-component=logo> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54"/></svg> </a> JSON for Modern C++ </label> <div class=md-nav__source> <a href="https://github.com/nlohmann/json" title="Go to repository" class="md-source" data-md-component="source"> <div class="md-source__icon md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </div> <div class=md-source__repository> nlohmann/json </div> </a> </div> <ul class=md-nav__list data-md-scrollfix> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_1> <div class="md-nav__link md-nav__container"> <a href=.. class="md-nav__link "> <span class=md-ellipsis> Home </span> </a> <label class="md-nav__link " for=__nav_1 id=__nav_1_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_1_label aria-expanded=false> <label class=md-nav__title for=__nav_1> <span class="md-nav__icon md-icon"></span> Home </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../home/license/ class=md-nav__link> <span class=md-ellipsis> License </span> </a> </li> <li class=md-nav__item> <a href=../home/faq/ class=md-nav__link> <span class=md-ellipsis> FAQ </span> </a> </li> <li class=md-nav__item> <a href=../home/exceptions/ class=md-nav__link> <span class=md-ellipsis> Exceptions </span> </a> </li> <li class=md-nav__item> <a href=../home/releases/ class=md-nav__link> <span class=md-ellipsis> Releases </span> </a> </li> <li class=md-nav__item> <a href=../home/design_goals/ class=md-nav__link> <span class=md-ellipsis> Design goals </span> </a> </li> <li class=md-nav__item> <a href=../home/architecture/ class=md-nav__link> <span class=md-ellipsis> Architecture </span> </a> </li> <li class=md-nav__item> <a href=../home/customers/ class=md-nav__link> <span class=md-ellipsis> Customers </span> </a> </li> <li class=md-nav__item> <a href=../home/sponsors/ class=md-nav__link> <span class=md-ellipsis> Sponsors </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2> <label class=md-nav__link for=__nav_2 id=__nav_2_label tabindex=0> <span class=md-ellipsis> Features </span> <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_2_label aria-expanded=false> <label class=md-nav__title for=__nav_2> <span class="md-nav__icon md-icon"></span> Features </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../features/arbitrary_types/ class=md-nav__link> <span class=md-ellipsis> Arbitrary Type Conversions </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_2> <div class="md-nav__link md-nav__container"> <a href=../features/binary_formats/ class="md-nav__link "> <span class=md-ellipsis> Binary Formats </span> </a> <label class="md-nav__link " for=__nav_2_2 id=__nav_2_2_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_2_label aria-expanded=false> <label class=md-nav__title for=__nav_2_2> <span class="md-nav__icon md-icon"></span> Binary Formats </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../features/binary_formats/bjdata/ class=md-nav__link> <span class=md-ellipsis> BJData </span> </a> </li> <li class=md-nav__item> <a href=../features/binary_formats/bson/ class=md-nav__link> <span class=md-ellipsis> BSON </span> </a> </li> <li class=md-nav__item> <a href=../features/binary_formats/cbor/ class=md-nav__link> <span class=md-ellipsis> CBOR </span> </a> </li> <li class=md-nav__item> <a href=../features/binary_formats/messagepack/ class=md-nav__link> <span class=md-ellipsis> MessagePack </span> </a> </li> <li class=md-nav__item> <a href=../features/binary_formats/ubjson/ class=md-nav__link> <span class=md-ellipsis> UBJSON </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../features/binary_values/ class=md-nav__link> <span class=md-ellipsis> Binary Values </span> </a> </li> <li class=md-nav__item> <a href=../features/comments/ class=md-nav__link> <span class=md-ellipsis> Comments </span> </a> </li> <li class=md-nav__item> <a href=../features/trailing_commas/ class=md-nav__link> <span class=md-ellipsis> Trailing Commas </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_6> <div class="md-nav__link md-nav__container"> <a href=../features/element_access/ class="md-nav__link "> <span class=md-ellipsis> Element Access </span> </a> <label class="md-nav__link " for=__nav_2_6 id=__nav_2_6_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_6_label aria-expanded=false> <label class=md-nav__title for=__nav_2_6> <span class="md-nav__icon md-icon"></span> Element Access </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../features/element_access/unchecked_access/ class=md-nav__link> <span class=md-ellipsis> Unchecked access: operator[] </span> </a> </li> <li class=md-nav__item> <a href=../features/element_access/checked_access/ class=md-nav__link> <span class=md-ellipsis> Checked access: at </span> </a> </li> <li class=md-nav__item> <a href=../features/element_access/default_value/ class=md-nav__link> <span class=md-ellipsis> Access with default value: value </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../features/iterators/ class=md-nav__link> <span class=md-ellipsis> Iterators </span> </a> </li> <li class=md-nav__item> <a href=../features/json_pointer/ class=md-nav__link> <span class=md-ellipsis> JSON Pointer </span> </a> </li> <li class=md-nav__item> <a href=../features/json_patch/ class=md-nav__link> <span class=md-ellipsis> JSON Patch and Diff </span> </a> </li> <li class=md-nav__item> <a href=../features/merge_patch/ class=md-nav__link> <span class=md-ellipsis> JSON Merge Patch </span> </a> </li> <li class=md-nav__item> <a href=../features/modules/ class=md-nav__link> <span class=md-ellipsis> Modules </span> </a> </li> <li class=md-nav__item> <a href=../features/namespace/ class=md-nav__link> <span class=md-ellipsis> nlohmann Namespace </span> </a> </li> <li class=md-nav__item> <a href=../features/object_order/ class=md-nav__link> <span class=md-ellipsis> Object Order </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_14> <div class="md-nav__link md-nav__container"> <a href=../features/parsing/ class="md-nav__link "> <span class=md-ellipsis> Parsing </span> </a> <label class="md-nav__link " for=__nav_2_14 id=__nav_2_14_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_14_label aria-expanded=false> <label class=md-nav__title for=__nav_2_14> <span class="md-nav__icon md-icon"></span> Parsing </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../features/parsing/json_lines/ class=md-nav__link> <span class=md-ellipsis> JSON Lines </span> </a> </li> <li class=md-nav__item> <a href=../features/parsing/parse_exceptions/ class=md-nav__link> <span class=md-ellipsis> Parsing and Exceptions </span> </a> </li> <li class=md-nav__item> <a href=../features/parsing/parser_callbacks/ class=md-nav__link> <span class=md-ellipsis> Parser Callbacks </span> </a> </li> <li class=md-nav__item> <a href=../features/parsing/sax_interface/ class=md-nav__link> <span class=md-ellipsis> SAX Interface </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../features/assertions/ class=md-nav__link> <span class=md-ellipsis> Runtime Assertions </span> </a> </li> <li class=md-nav__item> <a href=../features/enum_conversion/ class=md-nav__link> <span class=md-ellipsis> Specializing enum conversion </span> </a> </li> <li class=md-nav__item> <a href=../features/macros/ class=md-nav__link> <span class=md-ellipsis> Supported Macros </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_18> <div class="md-nav__link md-nav__container"> <a href=../features/types/ class="md-nav__link "> <span class=md-ellipsis> Types </span> </a> <label class="md-nav__link " for=__nav_2_18 id=__nav_2_18_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_18_label aria-expanded=false> <label class=md-nav__title for=__nav_2_18> <span class="md-nav__icon md-icon"></span> Types </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../features/types/number_handling/ class=md-nav__link> <span class=md-ellipsis> Number Handling </span> </a> </li> </ul> </nav> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_3> <div class="md-nav__link md-nav__container"> <a href=../integration/ class="md-nav__link "> <span class=md-ellipsis> Integration </span> </a> <label class="md-nav__link " for=__nav_3 id=__nav_3_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_3_label aria-expanded=false> <label class=md-nav__title for=__nav_3> <span class="md-nav__icon md-icon"></span> Integration </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../integration/migration_guide/ class=md-nav__link> <span class=md-ellipsis> Migration Guide </span> </a> </li> <li class=md-nav__item> <a href=../integration/cmake/ class=md-nav__link> <span class=md-ellipsis> CMake </span> </a> </li> <li class=md-nav__item> <a href=../integration/package_managers/ class=md-nav__link> <span class=md-ellipsis> Package Managers </span> </a> </li> <li class=md-nav__item> <a href=../integration/pkg-config/ class=md-nav__link> <span class=md-ellipsis> Pkg-config </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4> <label class=md-nav__link for=__nav_4 id=__nav_4_label tabindex=0> <span class=md-ellipsis> API Documentation </span> <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_4_label aria-expanded=false> <label class=md-nav__title for=__nav_4> <span class="md-nav__icon md-icon"></span> API Documentation </label> <ul class=md-nav__list data-md-scrollfix> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_1> <div class="md-nav__link md-nav__container"> <a href=../api/basic_json/ class="md-nav__link "> <span class=md-ellipsis> basic_json </span> </a> <label class="md-nav__link " for=__nav_4_1 id=__nav_4_1_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_1_label aria-expanded=false> <label class=md-nav__title for=__nav_4_1> <span class="md-nav__icon md-icon"></span> basic_json </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../api/basic_json/basic_json/ class=md-nav__link> <span class=md-ellipsis> (Constructor) </span> </a> </li> <li class=md-nav__item> <a href=../api/basic_json/~basic_json/ class=md-nav__link> <span class=md-ellipsis> (Destructor) </span> </a> </li> <li class=md-nav__item> <a href=../api/basic_json/accept/ class=md-nav__link> <span class=md-ellipsis> accept </span> </a> </li> <li class=md-nav__item> <a href=../api/basic_json/array/ class=md-nav__link> <span class=md-ellipsis> array </span> </a> </li> <li class=md-nav__item> <a href=../api/basic_json/array_t/ class=md-nav__link> <span class=md-ellipsis> array_t </span> </a> </li> <li class=md-nav__item> <a href=../api/basic_json/at/ class=md-nav__link> <span class=md-ellipsis> at </span> </a> </li> <li class=md-nav__item> <a href=../api/basic_json/back/ class=md-nav__link> <span class=md-ellipsis> back </span> </a> </li> <li class=md-nav__item> <a href=../api/basic_json/begin/ class=md-nav__link> <span class=md-ellipsis> begin </span> </a> </li> <li class=md-nav__item> <a href=../api/basic_json/binary/ class=md-nav__link> <span class=md-ellipsis> binary </span> </a> </li> <li class=md-nav__item> <a href=../api/basic_json/binary_t/ class=md-nav__link> <span class=md-ellipsis> binary_t </span> </a> </li> <li class=md-nav__item> <a href=../api/basic_json/boolean_t/ class=md-nav__link> <span class=md-ellipsis> boolean_t </span> </a> </li> <li class=md-nav__item> <a href=../api/basic_json/cbegin/ class=md-nav__link> <span class=md-ellipsis> cbegin </span> </a> </li> <li class=md-nav__item> <a href=../api/basic_json/cbor_tag_handler_t/ class=md-nav__link> <span class=md-ellipsis> cbor_tag_handler_t </span> </a> </li> <li class=md-nav__item> <a href=../api/basic_json/cend/ class=md-nav__link> <span class=md-ellipsis> cend </span> </a> </li> <li class=md-nav__item> <a href=../api/basic_json/clear/ class=md-nav__link> <span class=md-ellipsis> clear </span> </a> </li> <li class=md-nav__item> <a href=../api/basic_json/contains/ class=md-nav__link> <span class=md-ellipsis> contains </span> </a> </li> <li class=md-nav__item> <a href=../api/basic_json/count/ class=md-nav__link> <span class=md-ellipsis> count </span> </a> </li> <li class=md-nav__item> <a href=../api/basic_json/crbegin/ class=md-nav__link> <span class=md-ellipsis> crbegin </span> </a> </li> <li class=md-nav__item> <a href=../api/basic_json/crend/ class=md-nav__link> <span class=md-ellipsis> crend </span> </a> </li> <li class=md-nav__item> <a href=../api/basic_json/default_object_comparator_t/ class=md-nav__link> <span class=md-ellipsis> default_object_comparator_t </span> </a> </li> <li class=md-nav__item> <a href=../api/basic_json/diff/ class=md-nav__link> <span class=md-ellipsis> diff </span> </a> </li> <li class=md-nav__item> <a href=../api/basic_json/dump/ class=md-nav__link> <span class=md-ellipsis> dump </span> </a> </li> <li class=md-nav__item> <a href=../api/basic_json/emplace/ class=md-nav__link> <span class=md-ellipsis> emplace </span> </a> </li> <li class=md-nav__item> <a href=../api/basic_json/emplace_back/ class=md-nav__link> <span class=md-ellipsis> emplace_back </span> </a> </li> <li class=md-nav__item> <a href=../api/basic_json/empty/ class=md-nav__link> <span class=md-ellipsis> empty </span> </a> </li> <li class=md-nav__item> <a href=../api/basic_json/end/ class=md-nav__link> <span class=md-ellipsis> end </span> </a> </li> <li class=md-nav__item> <a href=../api/basic_json/end_pos/ class=md-nav__link> <span class=md-ellipsis> end_pos </span> </a> </li> <li class=md-nav__item> <a href=../api/basic_json/erase/ class=md-nav__link> <span class=md-ellipsis> erase </span> </a> </li> <li class=md-nav__item> <a href=../api/basic_json/error_handler_t/ class=md-nav__link> <span class=md-ellipsis> error_handler_t </span> </a> </li> <li class=md-nav__item> <a href=../api/basic_json/exception/ class=md-nav__link> <span class=md-ellipsis> exception </span> </a> </li> <li class=md-nav__item> <a href=../api/basic_json/find/ class=md-nav__link> <span class=md-ellipsis> find </span> </a> </li> <li class=md-nav__item> <a href=../api/basic_json/flatten/ class=md-nav__link> <span class=md-ellipsis> flatten </span> </a> </li> <li class=md-nav__item> <a href=../api/basic_json/from_bjdata/ class=md-nav__link> <span class=md-ellipsis> from_bjdata </span> </a> </li> <li class=md-nav__item> <a href=../api/basic_json/from_bson/ class=md-nav__link> <span class=md-ellipsis> from_bson </span> </a> </li> <li class=md-nav__item> <a href=../api/basic_json/from_cbor/ class=md-nav__link> <span class=md-ellipsis> from_cbor </span> </a> </li> <li class=md-nav__item> <a href=../api/basic_json/from_msgpack/ class=md-nav__link> <span class=md-ellipsis> from_msgpack </span> </a> </li> <li class=md-nav__item> <a href=../api/basic_json/from_ubjson/ class=md-nav__link> <span class=md-ellipsis> from_ubjson </span> </a> </li> <li class=md-nav__item> <a href=../api/basic_json/front/ class=md-nav__link> <span class=md-ellipsis> front </span> </a> </li> <li class=md-nav__item> <a href=../api/basic_json/get/ class=md-nav__link> <span class=md-ellipsis> get </span> </a> </li> <li class=md-nav__item> <a href=../api/basic_json/get_allocator/ class=md-nav__link> <span class=md-ellipsis> get_allocator </span> </a> </li> <li class=md-nav__item> <a href=../api/basic_json/get_binary/ class=md-nav__link> <span class=md-ellipsis> get_binary </span> </a> </li> <li class=md-nav__item> <a href=../api/basic_json/get_ptr/ class=md-nav__link> <span class=md-ellipsis> get_ptr </span> </a> </li> <li class=md-nav__item> <a href=../api/basic_json/get_ref/ class=md-nav__link> <span class=md-ellipsis> get_ref </span> </a> </li> <li class=md-nav__item> <a href=../api/basic_json/get_to/ class=md-nav__link> <span class=md-ellipsis> get_to </span> </a> </li> <li class=md-nav__item> <a href=../api/basic_json/std_hash/ class=md-nav__link> <span class=md-ellipsis> std::hash&lt;basic_json&gt; </span> </a> </li> <li class=md-nav__item> <a href=../api/basic_json/input_format_t/ class=md-nav__link> <span class=md-ellipsis> input_format_t </span> </a> </li> <li class=md-nav__item> <a href=../api/basic_json/insert/ class=md-nav__link> <span class=md-ellipsis> insert </span> </a> </li> <li class=md-nav__item> <a href=../api/basic_json/invalid_iterator/ class=md-nav__link> <span class=md-ellipsis> invalid_iterator </span> </a> </li> <li class=md-nav__item> <a href=../api/basic_json/is_array/ class=md-nav__link> <span class=md-ellipsis> is_array </span> </a> </li> <li class=md-nav__item> <a href=../api/basic_json/is_binary/ class=md-nav__link> <span class=md-ellipsis> is_binary </span> </a> </li> <li class=md-nav__item> <a href=../api/basic_json/is_boolean/ class=md-nav__link> <span class=md-ellipsis> is_boolean </span> </a> </li> <li class=md-nav__item> <a href=../api/basic_json/is_discarded/ class=md-nav__link> <span class=md-ellipsis> is_discarded </span> </a> </li> <li class=md-nav__item> <a href=../api/basic_json/is_null/ class=md-nav__link> <span class=md-ellipsis> is_null </span> </a> </li> <li class=md-nav__item> <a href=../api/basic_json/is_number/ class=md-nav__link> <span class=md-ellipsis> is_number </span> </a> </li> <li class=md-nav__item> <a href=../api/basic_json/is_number_float/ class=md-nav__link> <span class=md-ellipsis> is_number_float </span> </a> </li> <li class=md-nav__item> <a href=../api/basic_json/is_number_integer/ class=md-nav__link> <span class=md-ellipsis> is_number_integer </span> </a> </li> <li class=md-nav__item> <a href=../api/basic_json/is_number_unsigned/ class=md-nav__link> <span class=md-ellipsis> is_number_unsigned </span> </a> </li> <li class=md-nav__item> <a href=../api/basic_json/is_object/ class=md-nav__link> <span class=md-ellipsis> is_object </span> </a> </li> <li class=md-nav__item> <a href=../api/basic_json/is_primitive/ class=md-nav__link> <span class=md-ellipsis> is_primitive </span> </a> </li> <li class=md-nav__item> <a href=../api/basic_json/is_string/ class=md-nav__link> <span class=md-ellipsis> is_string </span> </a> </li> <li class=md-nav__item> <a href=../api/basic_json/is_structured/ class=md-nav__link> <span class=md-ellipsis> is_structured </span> </a> </li> <li class=md-nav__item> <a href=../api/basic_json/items/ class=md-nav__link> <span class=md-ellipsis> items </span> </a> </li> <li class=md-nav__item> <a href=../api/basic_json/json_base_class_t/ class=md-nav__link> <span class=md-ellipsis> json_base_class_t </span> </a> </li> <li class=md-nav__item> <a href=../api/basic_json/json_serializer/ class=md-nav__link> <span class=md-ellipsis> json_serializer </span> </a> </li> <li class=md-nav__item> <a href=../api/basic_json/max_size/ class=md-nav__link> <span class=md-ellipsis> max_size </span> </a> </li> <li class=md-nav__item> <a href=../api/basic_json/meta/ class=md-nav__link> <span class=md-ellipsis> meta </span> </a> </li> <li class=md-nav__item> <a href=../api/basic_json/merge_patch/ class=md-nav__link> <span class=md-ellipsis> merge_patch </span> </a> </li> <li class=md-nav__item> <a href=../api/basic_json/number_float_t/ class=md-nav__link> <span class=md-ellipsis> number_float_t </span> </a> </li> <li class=md-nav__item> <a href=../api/basic_json/number_integer_t/ class=md-nav__link> <span class=md-ellipsis> number_integer_t </span> </a> </li> <li class=md-nav__item> <a href=../api/basic_json/number_unsigned_t/ class=md-nav__link> <span class=md-ellipsis> number_unsigned_t </span> </a> </li> <li class=md-nav__item> <a href=../api/basic_json/object/ class=md-nav__link> <span class=md-ellipsis> object </span> </a> </li> <li class=md-nav__item> <a href=../api/basic_json/object_comparator_t/ class=md-nav__link> <span class=md-ellipsis> object_comparator_t </span> </a> </li> <li class=md-nav__item> <a href=../api/basic_json/object_t/ class=md-nav__link> <span class=md-ellipsis> object_t </span> </a> </li> <li class=md-nav__item> <a href=../api/basic_json/operator_ValueType/ class=md-nav__link> <span class=md-ellipsis> operator ValueType </span> </a> </li> <li class=md-nav__item> <a href=../api/basic_json/operator_value_t/ class=md-nav__link> <span class=md-ellipsis> operator value_t </span> </a> </li> <li class=md-nav__item> <a href=../api/basic_json/operator%5B%5D/ class=md-nav__link> <span class=md-ellipsis> operator[] </span> </a> </li> <li class=md-nav__item> <a href=../api/basic_json/operator%3D/ class=md-nav__link> <span class=md-ellipsis> operator= </span> </a> </li> <li class=md-nav__item> <a href=../api/basic_json/operator%2B%3D/ class=md-nav__link> <span class=md-ellipsis> operator+= </span> </a> </li> <li class=md-nav__item> <a href=../api/basic_json/operator_eq/ class=md-nav__link> <span class=md-ellipsis> operator== </span> </a> </li> <li class=md-nav__item> <a href=../api/basic_json/operator_ne/ class=md-nav__link> <span class=md-ellipsis> operator!= </span> </a> </li> <li class=md-nav__item> <a href=../api/basic_json/operator_lt/ class=md-nav__link> <span class=md-ellipsis> operator< </span> </a> </li> <li class=md-nav__item> <a href=../api/basic_json/operator_gt/ class=md-nav__link> <span class=md-ellipsis> operator> </span> </a> </li> <li class=md-nav__item> <a href=../api/basic_json/operator_le/ class=md-nav__link> <span class=md-ellipsis> operator<= </span> </a> </li> <li class=md-nav__item> <a href=../api/basic_json/operator_ge/ class=md-nav__link> <span class=md-ellipsis> operator>= </span> </a> </li> <li class=md-nav__item> <a href=../api/basic_json/operator_spaceship/ class=md-nav__link> <span class=md-ellipsis> operator<=> </span> </a> </li> <li class=md-nav__item> <a href=../api/basic_json/out_of_range/ class=md-nav__link> <span class=md-ellipsis> out_of_range </span> </a> </li> <li class=md-nav__item> <a href=../api/basic_json/other_error/ class=md-nav__link> <span class=md-ellipsis> other_error </span> </a> </li> <li class=md-nav__item> <a href=../api/basic_json/parse/ class=md-nav__link> <span class=md-ellipsis> parse </span> </a> </li> <li class=md-nav__item> <a href=../api/basic_json/parse_error/ class=md-nav__link> <span class=md-ellipsis> parse_error </span> </a> </li> <li class=md-nav__item> <a href=../api/basic_json/parse_event_t/ class=md-nav__link> <span class=md-ellipsis> parse_event_t </span> </a> </li> <li class=md-nav__item> <a href=../api/basic_json/parser_callback_t/ class=md-nav__link> <span class=md-ellipsis> parser_callback_t </span> </a> </li> <li class=md-nav__item> <a href=../api/basic_json/patch/ class=md-nav__link> <span class=md-ellipsis> patch </span> </a> </li> <li class=md-nav__item> <a href=../api/basic_json/patch_inplace/ class=md-nav__link> <span class=md-ellipsis> patch_inplace </span> </a> </li> <li class=md-nav__item> <a href=../api/basic_json/push_back/ class=md-nav__link> <span class=md-ellipsis> push_back </span> </a> </li> <li class=md-nav__item> <a href=../api/basic_json/rbegin/ class=md-nav__link> <span class=md-ellipsis> rbegin </span> </a> </li> <li class=md-nav__item> <a href=../api/basic_json/rend/ class=md-nav__link> <span class=md-ellipsis> rend </span> </a> </li> <li class=md-nav__item> <a href=../api/basic_json/sax_parse/ class=md-nav__link> <span class=md-ellipsis> sax_parse </span> </a> </li> <li class=md-nav__item> <a href=../api/basic_json/size/ class=md-nav__link> <span class=md-ellipsis> size </span> </a> </li> <li class=md-nav__item> <a href=../api/basic_json/start_pos/ class=md-nav__link> <span class=md-ellipsis> start_pos </span> </a> </li> <li class=md-nav__item> <a href=../api/basic_json/string_t/ class=md-nav__link> <span class=md-ellipsis> string_t </span> </a> </li> <li class=md-nav__item> <a href=../api/basic_json/swap/ class=md-nav__link> <span class=md-ellipsis> swap </span> </a> </li> <li class=md-nav__item> <a href=../api/basic_json/std_swap/ class=md-nav__link> <span class=md-ellipsis> std::swap&lt;basic_json&gt; </span> </a> </li> <li class=md-nav__item> <a href=../api/basic_json/to_bjdata/ class=md-nav__link> <span class=md-ellipsis> to_bjdata </span> </a> </li> <li class=md-nav__item> <a href=../api/basic_json/to_bson/ class=md-nav__link> <span class=md-ellipsis> to_bson </span> </a> </li> <li class=md-nav__item> <a href=../api/basic_json/to_cbor/ class=md-nav__link> <span class=md-ellipsis> to_cbor </span> </a> </li> <li class=md-nav__item> <a href=../api/basic_json/to_msgpack/ class=md-nav__link> <span class=md-ellipsis> to_msgpack </span> </a> </li> <li class=md-nav__item> <a href=../api/basic_json/to_string/ class=md-nav__link> <span class=md-ellipsis> to_string </span> </a> </li> <li class=md-nav__item> <a href=../api/basic_json/to_ubjson/ class=md-nav__link> <span class=md-ellipsis> to_ubjson </span> </a> </li> <li class=md-nav__item> <a href=../api/basic_json/type/ class=md-nav__link> <span class=md-ellipsis> type </span> </a> </li> <li class=md-nav__item> <a href=../api/basic_json/type_error/ class=md-nav__link> <span class=md-ellipsis> type_error </span> </a> </li> <li class=md-nav__item> <a href=../api/basic_json/type_name/ class=md-nav__link> <span class=md-ellipsis> type_name </span> </a> </li> <li class=md-nav__item> <a href=../api/basic_json/unflatten/ class=md-nav__link> <span class=md-ellipsis> unflatten </span> </a> </li> <li class=md-nav__item> <a href=../api/basic_json/update/ class=md-nav__link> <span class=md-ellipsis> update </span> </a> </li> <li class=md-nav__item> <a href=../api/basic_json/value/ class=md-nav__link> <span class=md-ellipsis> value </span> </a> </li> <li class=md-nav__item> <a href=../api/basic_json/value_t/ class=md-nav__link> <span class=md-ellipsis> value_t </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_2> <div class="md-nav__link md-nav__container"> <a href=../api/byte_container_with_subtype/ class="md-nav__link "> <span class=md-ellipsis> byte_container_with_subtype </span> </a> <label class="md-nav__link " for=__nav_4_2 id=__nav_4_2_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_2_label aria-expanded=false> <label class=md-nav__title for=__nav_4_2> <span class="md-nav__icon md-icon"></span> byte_container_with_subtype </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../api/byte_container_with_subtype/byte_container_with_subtype/ class=md-nav__link> <span class=md-ellipsis> (constructor) </span> </a> </li> <li class=md-nav__item> <a href=../api/byte_container_with_subtype/clear_subtype/ class=md-nav__link> <span class=md-ellipsis> clear_subtype </span> </a> </li> <li class=md-nav__item> <a href=../api/byte_container_with_subtype/has_subtype/ class=md-nav__link> <span class=md-ellipsis> has_subtype </span> </a> </li> <li class=md-nav__item> <a href=../api/byte_container_with_subtype/set_subtype/ class=md-nav__link> <span class=md-ellipsis> set_subtype </span> </a> </li> <li class=md-nav__item> <a href=../api/byte_container_with_subtype/subtype/ class=md-nav__link> <span class=md-ellipsis> subtype </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_3> <div class="md-nav__link md-nav__container"> <a href=../api/adl_serializer/ class="md-nav__link "> <span class=md-ellipsis> adl_serializer </span> </a> <label class="md-nav__link " for=__nav_4_3 id=__nav_4_3_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_3_label aria-expanded=false> <label class=md-nav__title for=__nav_4_3> <span class="md-nav__icon md-icon"></span> adl_serializer </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../api/adl_serializer/from_json/ class=md-nav__link> <span class=md-ellipsis> from_json </span> </a> </li> <li class=md-nav__item> <a href=../api/adl_serializer/to_json/ class=md-nav__link> <span class=md-ellipsis> to_json </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../api/json/ class=md-nav__link> <span class=md-ellipsis> json </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_5> <div class="md-nav__link md-nav__container"> <a href=../api/json_pointer/ class="md-nav__link "> <span class=md-ellipsis> json_pointer </span> </a> <label class="md-nav__link " for=__nav_4_5 id=__nav_4_5_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_5_label aria-expanded=false> <label class=md-nav__title for=__nav_4_5> <span class="md-nav__icon md-icon"></span> json_pointer </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../api/json_pointer/json_pointer/ class=md-nav__link> <span class=md-ellipsis> (Constructor) </span> </a> </li> <li class=md-nav__item> <a href=../api/json_pointer/back/ class=md-nav__link> <span class=md-ellipsis> back </span> </a> </li> <li class=md-nav__item> <a href=../api/json_pointer/empty/ class=md-nav__link> <span class=md-ellipsis> empty </span> </a> </li> <li class=md-nav__item> <a href=../api/json_pointer/front/ class=md-nav__link> <span class=md-ellipsis> front </span> </a> </li> <li class=md-nav__item> <a href=../api/json_pointer/operator_string_t/ class=md-nav__link> <span class=md-ellipsis> operator string_t </span> </a> </li> <li class=md-nav__item> <a href=../api/json_pointer/operator_eq/ class=md-nav__link> <span class=md-ellipsis> operator== </span> </a> </li> <li class=md-nav__item> <a href=../api/json_pointer/operator_ne/ class=md-nav__link> <span class=md-ellipsis> operator!= </span> </a> </li> <li class=md-nav__item> <a href=../api/json_pointer/operator_slash/ class=md-nav__link> <span class=md-ellipsis> operator/ </span> </a> </li> <li class=md-nav__item> <a href=../api/json_pointer/operator_slasheq/ class=md-nav__link> <span class=md-ellipsis> operator/= </span> </a> </li> <li class=md-nav__item> <a href=../api/json_pointer/parent_pointer/ class=md-nav__link> <span class=md-ellipsis> parent_pointer </span> </a> </li> <li class=md-nav__item> <a href=../api/json_pointer/pop_back/ class=md-nav__link> <span class=md-ellipsis> pop_back </span> </a> </li> <li class=md-nav__item> <a href=../api/json_pointer/pop_front/ class=md-nav__link> <span class=md-ellipsis> pop_front </span> </a> </li> <li class=md-nav__item> <a href=../api/json_pointer/push_back/ class=md-nav__link> <span class=md-ellipsis> push_back </span> </a> </li> <li class=md-nav__item> <a href=../api/json_pointer/push_front/ class=md-nav__link> <span class=md-ellipsis> push_front </span> </a> </li> <li class=md-nav__item> <a href=../api/json_pointer/string_t/ class=md-nav__link> <span class=md-ellipsis> string_t </span> </a> </li> <li class=md-nav__item> <a href=../api/json_pointer/to_string/ class=md-nav__link> <span class=md-ellipsis> to_string </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_6> <div class="md-nav__link md-nav__container"> <a href=../api/json_sax/ class="md-nav__link "> <span class=md-ellipsis> json_sax </span> </a> <label class="md-nav__link " for=__nav_4_6 id=__nav_4_6_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_6_label aria-expanded=false> <label class=md-nav__title for=__nav_4_6> <span class="md-nav__icon md-icon"></span> json_sax </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../api/json_sax/binary/ class=md-nav__link> <span class=md-ellipsis> binary </span> </a> </li> <li class=md-nav__item> <a href=../api/json_sax/boolean/ class=md-nav__link> <span class=md-ellipsis> boolean </span> </a> </li> <li class=md-nav__item> <a href=../api/json_sax/end_array/ class=md-nav__link> <span class=md-ellipsis> end_array </span> </a> </li> <li class=md-nav__item> <a href=../api/json_sax/end_object/ class=md-nav__link> <span class=md-ellipsis> end_object </span> </a> </li> <li class=md-nav__item> <a href=../api/json_sax/key/ class=md-nav__link> <span class=md-ellipsis> key </span> </a> </li> <li class=md-nav__item> <a href=../api/json_sax/null/ class=md-nav__link> <span class=md-ellipsis> null </span> </a> </li> <li class=md-nav__item> <a href=../api/json_sax/number_float/ class=md-nav__link> <span class=md-ellipsis> number_float </span> </a> </li> <li class=md-nav__item> <a href=../api/json_sax/number_integer/ class=md-nav__link> <span class=md-ellipsis> number_integer </span> </a> </li> <li class=md-nav__item> <a href=../api/json_sax/number_unsigned/ class=md-nav__link> <span class=md-ellipsis> number_unsigned </span> </a> </li> <li class=md-nav__item> <a href=../api/json_sax/parse_error/ class=md-nav__link> <span class=md-ellipsis> parse_error </span> </a> </li> <li class=md-nav__item> <a href=../api/json_sax/start_array/ class=md-nav__link> <span class=md-ellipsis> start_array </span> </a> </li> <li class=md-nav__item> <a href=../api/json_sax/start_object/ class=md-nav__link> <span class=md-ellipsis> start_object </span> </a> </li> <li class=md-nav__item> <a href=../api/json_sax/string/ class=md-nav__link> <span class=md-ellipsis> string </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../api/operator_ltlt/ class=md-nav__link> <span class=md-ellipsis> operator<<(basic_json), operator<<(json_pointer) </span> </a> </li> <li class=md-nav__item> <a href=../api/operator_gtgt/ class=md-nav__link> <span class=md-ellipsis> operator>>(basic_json) </span> </a> </li> <li class=md-nav__item> <a href=../api/operator_literal_json/ class=md-nav__link> <span class=md-ellipsis> operator""_json </span> </a> </li> <li class=md-nav__item> <a href=../api/operator_literal_json_pointer/ class=md-nav__link> <span class=md-ellipsis> operator""_json_pointer </span> </a> </li> <li class=md-nav__item> <a href=../api/ordered_json/ class=md-nav__link> <span class=md-ellipsis> ordered_json </span> </a> </li> <li class=md-nav__item> <a href=../api/ordered_map/ class=md-nav__link> <span class=md-ellipsis> ordered_map </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_13> <div class="md-nav__link md-nav__container"> <a href=../api/macros/ class="md-nav__link "> <span class=md-ellipsis> macros </span> </a> <label class="md-nav__link " for=__nav_4_13 id=__nav_4_13_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_13_label aria-expanded=false> <label class=md-nav__title for=__nav_4_13> <span class="md-nav__icon md-icon"></span> macros </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../api/macros/json_assert/ class=md-nav__link> <span class=md-ellipsis> JSON_ASSERT </span> </a> </li> <li class=md-nav__item> <a href=../api/macros/json_brace_init_copy_semantics/ class=md-nav__link> <span class=md-ellipsis> JSON_BRACE_INIT_COPY_SEMANTICS </span> </a> </li> <li class=md-nav__item> <a href=../api/macros/json_throw_user/ class=md-nav__link> <span class=md-ellipsis> JSON_CATCH_USER, JSON_THROW_USER, JSON_TRY_USER </span> </a> </li> <li class=md-nav__item> <a href=../api/macros/json_diagnostics/ class=md-nav__link> <span class=md-ellipsis> JSON_DIAGNOSTICS </span> </a> </li> <li class=md-nav__item> <a href=../api/macros/json_diagnostic_positions/ class=md-nav__link> <span class=md-ellipsis> JSON_DIAGNOSTIC_POSITIONS </span> </a> </li> <li class=md-nav__item> <a href=../api/macros/json_disable_enum_serialization/ class=md-nav__link> <span class=md-ellipsis> JSON_DISABLE_ENUM_SERIALIZATION </span> </a> </li> <li class=md-nav__item> <a href=../api/macros/json_has_cpp_11/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_CPP_11, JSON_HAS_CPP_14, JSON_HAS_CPP_17, JSON_HAS_CPP_20 </span> </a> </li> <li class=md-nav__item> <a href=../api/macros/json_has_filesystem/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_EXPERIMENTAL_FILESYSTEM, JSON_HAS_FILESYSTEM </span> </a> </li> <li class=md-nav__item> <a href=../api/macros/json_has_ranges/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_RANGES </span> </a> </li> <li class=md-nav__item> <a href=../api/macros/json_has_static_rtti/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_STATIC_RTTI </span> </a> </li> <li class=md-nav__item> <a href=../api/macros/json_has_three_way_comparison/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_THREE_WAY_COMPARISON </span> </a> </li> <li class=md-nav__item> <a href=../api/macros/json_noexception/ class=md-nav__link> <span class=md-ellipsis> JSON_NOEXCEPTION </span> </a> </li> <li class=md-nav__item> <a href=../api/macros/json_no_io/ class=md-nav__link> <span class=md-ellipsis> JSON_NO_IO </span> </a> </li> <li class=md-nav__item> <a href=../api/macros/json_skip_library_version_check/ class=md-nav__link> <span class=md-ellipsis> JSON_SKIP_LIBRARY_VERSION_CHECK </span> </a> </li> <li class=md-nav__item> <a href=../api/macros/json_skip_unsupported_compiler_check/ class=md-nav__link> <span class=md-ellipsis> JSON_SKIP_UNSUPPORTED_COMPILER_CHECK </span> </a> </li> <li class=md-nav__item> <a href=../api/macros/json_use_global_udls/ class=md-nav__link> <span class=md-ellipsis> JSON_USE_GLOBAL_UDLS </span> </a> </li> <li class=md-nav__item> <a href=../api/macros/json_use_implicit_conversions/ class=md-nav__link> <span class=md-ellipsis> JSON_USE_IMPLICIT_CONVERSIONS </span> </a> </li> <li class=md-nav__item> <a href=../api/macros/json_use_legacy_discarded_value_comparison/ class=md-nav__link> <span class=md-ellipsis> JSON_USE_LEGACY_DISCARDED_VALUE_COMPARISON </span> </a> </li> <li class=md-nav__item> <a href=../api/macros/nlohmann_define_derived_type/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_ONLY_SERIALIZE, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE </span> </a> </li> <li class=md-nav__item> <a href=../api/macros/nlohmann_define_type_intrusive/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_TYPE_INTRUSIVE, NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_TYPE_INTRUSIVE_ONLY_SERIALIZE </span> </a> </li> <li class=md-nav__item> <a href=../api/macros/nlohmann_define_type_non_intrusive/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE </span> </a> </li> <li class=md-nav__item> <a href=../api/macros/nlohmann_define_type_with_names/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_TYPE_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES </span> </a> </li> <li class=md-nav__item> <a href=../api/macros/nlohmann_json_namespace/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_NAMESPACE </span> </a> </li> <li class=md-nav__item> <a href=../api/macros/nlohmann_json_namespace_begin/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_NAMESPACE_BEGIN, NLOHMANN_JSON_NAMESPACE_END </span> </a> </li> <li class=md-nav__item> <a href=../api/macros/nlohmann_json_namespace_no_version/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_NAMESPACE_NO_VERSION </span> </a> </li> <li class=md-nav__item> <a href=../api/macros/nlohmann_json_serialize_enum/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_SERIALIZE_ENUM </span> </a> </li> <li class=md-nav__item> <a href=../api/macros/nlohmann_json_serialize_enum_strict/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_SERIALIZE_ENUM_STRICT </span> </a> </li> <li class=md-nav__item> <a href=../api/macros/nlohmann_json_version_major/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_VERSION_MAJOR, NLOHMANN_JSON_VERSION_MINOR, NLOHMANN_JSON_VERSION_PATCH </span> </a> </li> </ul> </nav> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--active md-nav__item--section md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_5 checked> <div class="md-nav__link md-nav__container"> <a href=./ class="md-nav__link md-nav__link--active"> <span class=md-ellipsis> Community </span> </a> <label class="md-nav__link md-nav__link--active" for=__nav_5 id=__nav_5_label tabindex> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_5_label aria-expanded=true> <label class=md-nav__title for=__nav_5> <span class="md-nav__icon md-icon"></span> Community </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=code_of_conduct/ class=md-nav__link> <span class=md-ellipsis> Code of Conduct </span> </a> </li> <li class=md-nav__item> <a href=contribution_guidelines/ class=md-nav__link> <span class=md-ellipsis> Contribution Guidelines </span> </a> </li> <li class=md-nav__item> <a href=quality_assurance/ class=md-nav__link> <span class=md-ellipsis> Quality assurance </span> </a> </li> <li class=md-nav__item> <a href=governance/ class=md-nav__link> <span class=md-ellipsis> Governance </span> </a> </li> <li class=md-nav__item> <a href=security_policy/ class=md-nav__link> <span class=md-ellipsis> Security Policy </span> </a> </li> </ul> </nav> </li> </ul> </nav> </div> </div> </div> <div class="md-sidebar md-sidebar--secondary" data-md-component=sidebar data-md-type=toc> <div class=md-sidebar__scrollwrap> <div class=md-sidebar__inner> <nav class="md-nav md-nav--secondary" aria-label="Table of contents"> </nav> </div> </div> </div> <div class=md-content data-md-component=content> <article class="md-content__inner md-typeset"> <a href="https://github.com/nlohmann/json/edit/develop/docs/mkdocs/docs/community/index.md" title="Edit this page" class="md-content__button md-icon" rel="edit"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M10 20H6V4h7v5h5v3.1l2-2V8l-6-6H6c-1.1 0-2 .9-2 2v16c0 1.1.9 2 2 2h4zm10.2-7c.1 0 .3.1.4.2l1.3 1.3c.2.2.2.6 0 .8l-1 1-2.1-2.1 1-1c.1-.1.2-.2.4-.2m0 3.9L14.1 23H12v-2.1l6.1-6.1z"/></svg> </a> <a href="https://github.com/nlohmann/json/raw/develop/docs/mkdocs/docs/community/index.md" title="View source of this page" class="md-content__button md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M17 18c.56 0 1 .44 1 1s-.44 1-1 1-1-.44-1-1 .44-1 1-1m0-3c-2.73 0-5.06 1.66-6 4 .94 2.34 3.27 4 6 4s5.06-1.66 6-4c-.94-2.34-3.27-4-6-4m0 6.5a2.5 2.5 0 0 1-2.5-2.5 2.5 2.5 0 0 1 2.5-2.5 2.5 2.5 0 0 1 2.5 2.5 2.5 2.5 0 0 1-2.5 2.5M9.27 20H6V4h7v5h5v4.07c.7.08 1.36.25 2 .49V8l-6-6H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h4.5a8.2 8.2 0 0 1-1.23-2"/></svg> </a> <h1 id=community>Community<a class=headerlink href=#community title="Permanent link">&para;</a></h1> <ul> <li><a href=code_of_conduct/ >Code of Conduct</a> - the rules and norms of this project</li> <li><a href=contribution_guidelines/ >Contribution Guidelines</a> - guidelines how to contribute to this project</li> <li><a href=governance/ >Governance</a> - the governance model of this project</li> <li><a href=quality_assurance/ >Quality Assurance</a> - how the quality of this project is assured</li> <li><a href=security_policy/ >Security Policy</a> - the security policy of the project</li> </ul> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 29, 2026 20:15:18 UTC">June 29, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
diff --git a/community/quality_assurance/index.html b/community/quality_assurance/index.html
index 32afd2a..0ac44ef 100644
--- a/community/quality_assurance/index.html
+++ b/community/quality_assurance/index.html
@@ -548,4 +548,4 @@
 
 <span class=c1># for the linux (LF) line end style</span>
 <span class=na>--lineend</span><span class=o>=</span><span class=s>linux</span>
-</code></pre></div> </details> </li> <li class=task-list-item> <p><label class=task-list-control><input type=checkbox disabled checked><span class=task-list-indicator></span></label> The code style is checked with <a href="https://github.com/cpplint/cpplint">cpplint</a> with 61 enabled rules.</p> </li> </ul> <h2 id=simple-integration>Simple integration<a class=headerlink href=#simple-integration title="Permanent link">&para;</a></h2> <div class="admonition success"> <p class=admonition-title>Requirement: Single header</p> <p>The library can be used by adding a single header to a C++ project.</p> </div> <ul class=task-list> <li class=task-list-item><label class=task-list-control><input type=checkbox disabled checked><span class=task-list-indicator></span></label> An amalgamation script is used to check if the source code is exposed as a self-contained single-header file.</li> <li class=task-list-item><label class=task-list-control><input type=checkbox disabled checked><span class=task-list-indicator></span></label> The test suite is checked against the amalgamated source file as well as the individual source file.</li> </ul> <div class="admonition success"> <p class=admonition-title>Requirement: CMake as primary development tool</p> <p>All library functions are exposed and usable by CMake.</p> </div> <ul class=task-list> <li class=task-list-item><label class=task-list-control><input type=checkbox disabled checked><span class=task-list-indicator></span></label> All library options are exposed as <a href="https://json.nlohmann.me/integration/cmake/">CMake options</a> and tested.</li> <li class=task-list-item><label class=task-list-control><input type=checkbox disabled checked><span class=task-list-indicator></span></label> The library is tested against relevant CMake versions:</li> <li>CMake 3.5 (the earliest supported)</li> <li>CMake 3.31.6 (the latest 3.x release)</li> <li>CMake 4.0.0 (a very recent release)</li> </ul> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 23, 2026 11:16:18 UTC">June 23, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
+</code></pre></div> </details> </li> <li class=task-list-item> <p><label class=task-list-control><input type=checkbox disabled checked><span class=task-list-indicator></span></label> The code style is checked with <a href="https://github.com/cpplint/cpplint">cpplint</a> with 61 enabled rules.</p> </li> </ul> <h2 id=simple-integration>Simple integration<a class=headerlink href=#simple-integration title="Permanent link">&para;</a></h2> <div class="admonition success"> <p class=admonition-title>Requirement: Single header</p> <p>The library can be used by adding a single header to a C++ project.</p> </div> <ul class=task-list> <li class=task-list-item><label class=task-list-control><input type=checkbox disabled checked><span class=task-list-indicator></span></label> An amalgamation script is used to check if the source code is exposed as a self-contained single-header file.</li> <li class=task-list-item><label class=task-list-control><input type=checkbox disabled checked><span class=task-list-indicator></span></label> The test suite is checked against the amalgamated source file as well as the individual source file.</li> </ul> <div class="admonition success"> <p class=admonition-title>Requirement: CMake as primary development tool</p> <p>All library functions are exposed and usable by CMake.</p> </div> <ul class=task-list> <li class=task-list-item><label class=task-list-control><input type=checkbox disabled checked><span class=task-list-indicator></span></label> All library options are exposed as <a href="https://json.nlohmann.me/integration/cmake/">CMake options</a> and tested.</li> <li class=task-list-item><label class=task-list-control><input type=checkbox disabled checked><span class=task-list-indicator></span></label> The library is tested against relevant CMake versions:</li> <li>CMake 3.5 (the earliest supported)</li> <li>CMake 3.31.6 (the latest 3.x release)</li> <li>CMake 4.0.0 (a very recent release)</li> </ul> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 29, 2026 20:15:18 UTC">June 29, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
diff --git a/community/security_policy/index.html b/community/security_policy/index.html
index c398d17..a5e094d 100644
--- a/community/security_policy/index.html
+++ b/community/security_policy/index.html
@@ -1 +1 @@
-<!doctype html><html lang=en class=no-js> <head><meta charset=utf-8><meta name=viewport content="width=device-width,initial-scale=1"><meta name=author content="Niels Lohmann"><link href="https://json.nlohmann.me/community/security_policy/" rel="canonical"><link href=../governance/ rel=prev><link rel=icon href=../../assets/images/favicon.png><meta name=generator content="mkdocs-1.6.1, mkdocs-material-9.7.6"><title>Security Policy - JSON for Modern C++</title><link rel=stylesheet href=../../assets/stylesheets/main.484c7ddc.min.css><link rel=stylesheet href=../../assets/stylesheets/palette.ab4e12ef.min.css><link rel="stylesheet" href="../../assets/external/fonts.googleapis.com/css.61a430c9.css"><style>:root{--md-text-font:"Roboto";--md-code-font:"JetBrains Mono"}</style><link rel=stylesheet href=../../css/custom.css><script>__md_scope=new URL("../..",location),__md_hash=e=>[...e].reduce(((e,_)=>(e<<5)-e+_.charCodeAt(0)),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script></head> <body dir=ltr data-md-color-scheme=default data-md-color-primary=indigo data-md-color-accent=indigo> <input class=md-toggle data-md-toggle=drawer type=checkbox id=__drawer autocomplete=off> <input class=md-toggle data-md-toggle=search type=checkbox id=__search autocomplete=off> <label class=md-overlay for=__drawer></label> <div data-md-component=skip> <a href=#security-policy class=md-skip> Skip to content </a> </div> <div data-md-component=announce> </div> <header class=md-header data-md-component=header> <nav class="md-header__inner md-grid" aria-label=Header> <a href=../.. title="JSON for Modern C++" class="md-header__button md-logo" aria-label="JSON for Modern C++" data-md-component=logo> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54"/></svg> </a> <label class="md-header__button md-icon" for=__drawer> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M3 6h18v2H3zm0 5h18v2H3zm0 5h18v2H3z"/></svg> </label> <div class=md-header__title data-md-component=header-title> <div class=md-header__ellipsis> <div class=md-header__topic> <span class=md-ellipsis> JSON for Modern C++ </span> </div> <div class=md-header__topic data-md-component=header-topic> <span class=md-ellipsis> Security Policy </span> </div> </div> </div> <form class=md-header__option data-md-component=palette> <input class=md-option data-md-color-media="(prefers-color-scheme: light)" data-md-color-scheme=default data-md-color-primary=indigo data-md-color-accent=indigo aria-label="Switch to dark mode" type=radio name=__palette id=__palette_0> <label class="md-header__button md-icon" title="Switch to dark mode" for=__palette_1 hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a4 4 0 0 0-4 4 4 4 0 0 0 4 4 4 4 0 0 0 4-4 4 4 0 0 0-4-4m0 10a6 6 0 0 1-6-6 6 6 0 0 1 6-6 6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12z"/></svg> </label> <input class=md-option data-md-color-media="(prefers-color-scheme: dark)" data-md-color-scheme=slate data-md-color-primary=indigo data-md-color-accent=indigo aria-label="Switch to light mode" type=radio name=__palette id=__palette_1> <label class="md-header__button md-icon" title="Switch to light mode" for=__palette_0 hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 18c-.89 0-1.74-.2-2.5-.55C11.56 16.5 13 14.42 13 12s-1.44-4.5-3.5-5.45C10.26 6.2 11.11 6 12 6a6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12z"/></svg> </label> </form> <script>var palette=__md_get("__palette");if(palette&&palette.color){if("(prefers-color-scheme)"===palette.color.media){var media=matchMedia("(prefers-color-scheme: light)"),input=document.querySelector(media.matches?"[data-md-color-media='(prefers-color-scheme: light)']":"[data-md-color-media='(prefers-color-scheme: dark)']");palette.color.media=input.getAttribute("data-md-color-media"),palette.color.scheme=input.getAttribute("data-md-color-scheme"),palette.color.primary=input.getAttribute("data-md-color-primary"),palette.color.accent=input.getAttribute("data-md-color-accent")}for(var[key,value]of Object.entries(palette.color))document.body.setAttribute("data-md-color-"+key,value)}</script> <label class="md-header__button md-icon" for=__search> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg> </label> <div class=md-search data-md-component=search role=dialog> <label class=md-search__overlay for=__search></label> <div class=md-search__inner role=search> <form class=md-search__form name=search> <input type=text class=md-search__input name=query aria-label=Search placeholder=Search autocapitalize=off autocorrect=off autocomplete=off spellcheck=false data-md-component=search-query required> <label class="md-search__icon md-icon" for=__search> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11z"/></svg> </label> <nav class=md-search__options aria-label=Search> <button type=reset class="md-search__icon md-icon" title=Clear aria-label=Clear tabindex=-1> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z"/></svg> </button> </nav> </form> <div class=md-search__output> <div class=md-search__scrollwrap tabindex=0 data-md-scrollfix> <div class=md-search-result data-md-component=search-result> <div class=md-search-result__meta> Initializing search </div> <ol class=md-search-result__list role=presentation></ol> </div> </div> </div> </div> </div> <div class=md-header__source> <a href="https://github.com/nlohmann/json" title="Go to repository" class="md-source" data-md-component="source"> <div class="md-source__icon md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </div> <div class=md-source__repository> nlohmann/json </div> </a> </div> </nav> </header> <div class=md-container data-md-component=container> <nav class=md-tabs aria-label=Tabs data-md-component=tabs> <div class=md-grid> <ul class=md-tabs__list> <li class=md-tabs__item> <a href=../.. class=md-tabs__link> Home </a> </li> <li class=md-tabs__item> <a href=../../features/arbitrary_types/ class=md-tabs__link> Features </a> </li> <li class=md-tabs__item> <a href=../../integration/ class=md-tabs__link> Integration </a> </li> <li class=md-tabs__item> <a href=../../api/basic_json/ class=md-tabs__link> API Documentation </a> </li> <li class="md-tabs__item md-tabs__item--active"> <a href=../ class=md-tabs__link> Community </a> </li> </ul> </div> </nav> <main class=md-main data-md-component=main> <div class="md-main__inner md-grid"> <div class="md-sidebar md-sidebar--primary" data-md-component=sidebar data-md-type=navigation> <div class=md-sidebar__scrollwrap> <div class=md-sidebar__inner> <nav class="md-nav md-nav--primary md-nav--lifted" aria-label=Navigation data-md-level=0> <label class=md-nav__title for=__drawer> <a href=../.. title="JSON for Modern C++" class="md-nav__button md-logo" aria-label="JSON for Modern C++" data-md-component=logo> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54"/></svg> </a> JSON for Modern C++ </label> <div class=md-nav__source> <a href="https://github.com/nlohmann/json" title="Go to repository" class="md-source" data-md-component="source"> <div class="md-source__icon md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </div> <div class=md-source__repository> nlohmann/json </div> </a> </div> <ul class=md-nav__list data-md-scrollfix> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_1> <div class="md-nav__link md-nav__container"> <a href=../.. class="md-nav__link "> <span class=md-ellipsis> Home </span> </a> <label class="md-nav__link " for=__nav_1 id=__nav_1_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_1_label aria-expanded=false> <label class=md-nav__title for=__nav_1> <span class="md-nav__icon md-icon"></span> Home </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../home/license/ class=md-nav__link> <span class=md-ellipsis> License </span> </a> </li> <li class=md-nav__item> <a href=../../home/faq/ class=md-nav__link> <span class=md-ellipsis> FAQ </span> </a> </li> <li class=md-nav__item> <a href=../../home/exceptions/ class=md-nav__link> <span class=md-ellipsis> Exceptions </span> </a> </li> <li class=md-nav__item> <a href=../../home/releases/ class=md-nav__link> <span class=md-ellipsis> Releases </span> </a> </li> <li class=md-nav__item> <a href=../../home/design_goals/ class=md-nav__link> <span class=md-ellipsis> Design goals </span> </a> </li> <li class=md-nav__item> <a href=../../home/architecture/ class=md-nav__link> <span class=md-ellipsis> Architecture </span> </a> </li> <li class=md-nav__item> <a href=../../home/customers/ class=md-nav__link> <span class=md-ellipsis> Customers </span> </a> </li> <li class=md-nav__item> <a href=../../home/sponsors/ class=md-nav__link> <span class=md-ellipsis> Sponsors </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2> <label class=md-nav__link for=__nav_2 id=__nav_2_label tabindex=0> <span class=md-ellipsis> Features </span> <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_2_label aria-expanded=false> <label class=md-nav__title for=__nav_2> <span class="md-nav__icon md-icon"></span> Features </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../features/arbitrary_types/ class=md-nav__link> <span class=md-ellipsis> Arbitrary Type Conversions </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_2> <div class="md-nav__link md-nav__container"> <a href=../../features/binary_formats/ class="md-nav__link "> <span class=md-ellipsis> Binary Formats </span> </a> <label class="md-nav__link " for=__nav_2_2 id=__nav_2_2_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_2_label aria-expanded=false> <label class=md-nav__title for=__nav_2_2> <span class="md-nav__icon md-icon"></span> Binary Formats </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../features/binary_formats/bjdata/ class=md-nav__link> <span class=md-ellipsis> BJData </span> </a> </li> <li class=md-nav__item> <a href=../../features/binary_formats/bson/ class=md-nav__link> <span class=md-ellipsis> BSON </span> </a> </li> <li class=md-nav__item> <a href=../../features/binary_formats/cbor/ class=md-nav__link> <span class=md-ellipsis> CBOR </span> </a> </li> <li class=md-nav__item> <a href=../../features/binary_formats/messagepack/ class=md-nav__link> <span class=md-ellipsis> MessagePack </span> </a> </li> <li class=md-nav__item> <a href=../../features/binary_formats/ubjson/ class=md-nav__link> <span class=md-ellipsis> UBJSON </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../features/binary_values/ class=md-nav__link> <span class=md-ellipsis> Binary Values </span> </a> </li> <li class=md-nav__item> <a href=../../features/comments/ class=md-nav__link> <span class=md-ellipsis> Comments </span> </a> </li> <li class=md-nav__item> <a href=../../features/trailing_commas/ class=md-nav__link> <span class=md-ellipsis> Trailing Commas </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_6> <div class="md-nav__link md-nav__container"> <a href=../../features/element_access/ class="md-nav__link "> <span class=md-ellipsis> Element Access </span> </a> <label class="md-nav__link " for=__nav_2_6 id=__nav_2_6_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_6_label aria-expanded=false> <label class=md-nav__title for=__nav_2_6> <span class="md-nav__icon md-icon"></span> Element Access </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../features/element_access/unchecked_access/ class=md-nav__link> <span class=md-ellipsis> Unchecked access: operator[] </span> </a> </li> <li class=md-nav__item> <a href=../../features/element_access/checked_access/ class=md-nav__link> <span class=md-ellipsis> Checked access: at </span> </a> </li> <li class=md-nav__item> <a href=../../features/element_access/default_value/ class=md-nav__link> <span class=md-ellipsis> Access with default value: value </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../features/iterators/ class=md-nav__link> <span class=md-ellipsis> Iterators </span> </a> </li> <li class=md-nav__item> <a href=../../features/json_pointer/ class=md-nav__link> <span class=md-ellipsis> JSON Pointer </span> </a> </li> <li class=md-nav__item> <a href=../../features/json_patch/ class=md-nav__link> <span class=md-ellipsis> JSON Patch and Diff </span> </a> </li> <li class=md-nav__item> <a href=../../features/merge_patch/ class=md-nav__link> <span class=md-ellipsis> JSON Merge Patch </span> </a> </li> <li class=md-nav__item> <a href=../../features/modules/ class=md-nav__link> <span class=md-ellipsis> Modules </span> </a> </li> <li class=md-nav__item> <a href=../../features/namespace/ class=md-nav__link> <span class=md-ellipsis> nlohmann Namespace </span> </a> </li> <li class=md-nav__item> <a href=../../features/object_order/ class=md-nav__link> <span class=md-ellipsis> Object Order </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_14> <div class="md-nav__link md-nav__container"> <a href=../../features/parsing/ class="md-nav__link "> <span class=md-ellipsis> Parsing </span> </a> <label class="md-nav__link " for=__nav_2_14 id=__nav_2_14_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_14_label aria-expanded=false> <label class=md-nav__title for=__nav_2_14> <span class="md-nav__icon md-icon"></span> Parsing </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../features/parsing/json_lines/ class=md-nav__link> <span class=md-ellipsis> JSON Lines </span> </a> </li> <li class=md-nav__item> <a href=../../features/parsing/parse_exceptions/ class=md-nav__link> <span class=md-ellipsis> Parsing and Exceptions </span> </a> </li> <li class=md-nav__item> <a href=../../features/parsing/parser_callbacks/ class=md-nav__link> <span class=md-ellipsis> Parser Callbacks </span> </a> </li> <li class=md-nav__item> <a href=../../features/parsing/sax_interface/ class=md-nav__link> <span class=md-ellipsis> SAX Interface </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../features/assertions/ class=md-nav__link> <span class=md-ellipsis> Runtime Assertions </span> </a> </li> <li class=md-nav__item> <a href=../../features/enum_conversion/ class=md-nav__link> <span class=md-ellipsis> Specializing enum conversion </span> </a> </li> <li class=md-nav__item> <a href=../../features/macros/ class=md-nav__link> <span class=md-ellipsis> Supported Macros </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_18> <div class="md-nav__link md-nav__container"> <a href=../../features/types/ class="md-nav__link "> <span class=md-ellipsis> Types </span> </a> <label class="md-nav__link " for=__nav_2_18 id=__nav_2_18_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_18_label aria-expanded=false> <label class=md-nav__title for=__nav_2_18> <span class="md-nav__icon md-icon"></span> Types </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../features/types/number_handling/ class=md-nav__link> <span class=md-ellipsis> Number Handling </span> </a> </li> </ul> </nav> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_3> <div class="md-nav__link md-nav__container"> <a href=../../integration/ class="md-nav__link "> <span class=md-ellipsis> Integration </span> </a> <label class="md-nav__link " for=__nav_3 id=__nav_3_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_3_label aria-expanded=false> <label class=md-nav__title for=__nav_3> <span class="md-nav__icon md-icon"></span> Integration </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../integration/migration_guide/ class=md-nav__link> <span class=md-ellipsis> Migration Guide </span> </a> </li> <li class=md-nav__item> <a href=../../integration/cmake/ class=md-nav__link> <span class=md-ellipsis> CMake </span> </a> </li> <li class=md-nav__item> <a href=../../integration/package_managers/ class=md-nav__link> <span class=md-ellipsis> Package Managers </span> </a> </li> <li class=md-nav__item> <a href=../../integration/pkg-config/ class=md-nav__link> <span class=md-ellipsis> Pkg-config </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4> <label class=md-nav__link for=__nav_4 id=__nav_4_label tabindex=0> <span class=md-ellipsis> API Documentation </span> <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_4_label aria-expanded=false> <label class=md-nav__title for=__nav_4> <span class="md-nav__icon md-icon"></span> API Documentation </label> <ul class=md-nav__list data-md-scrollfix> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_1> <div class="md-nav__link md-nav__container"> <a href=../../api/basic_json/ class="md-nav__link "> <span class=md-ellipsis> basic_json </span> </a> <label class="md-nav__link " for=__nav_4_1 id=__nav_4_1_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_1_label aria-expanded=false> <label class=md-nav__title for=__nav_4_1> <span class="md-nav__icon md-icon"></span> basic_json </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../api/basic_json/basic_json/ class=md-nav__link> <span class=md-ellipsis> (Constructor) </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/~basic_json/ class=md-nav__link> <span class=md-ellipsis> (Destructor) </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/accept/ class=md-nav__link> <span class=md-ellipsis> accept </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/array/ class=md-nav__link> <span class=md-ellipsis> array </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/array_t/ class=md-nav__link> <span class=md-ellipsis> array_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/at/ class=md-nav__link> <span class=md-ellipsis> at </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/back/ class=md-nav__link> <span class=md-ellipsis> back </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/begin/ class=md-nav__link> <span class=md-ellipsis> begin </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/binary/ class=md-nav__link> <span class=md-ellipsis> binary </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/binary_t/ class=md-nav__link> <span class=md-ellipsis> binary_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/boolean_t/ class=md-nav__link> <span class=md-ellipsis> boolean_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/cbegin/ class=md-nav__link> <span class=md-ellipsis> cbegin </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/cbor_tag_handler_t/ class=md-nav__link> <span class=md-ellipsis> cbor_tag_handler_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/cend/ class=md-nav__link> <span class=md-ellipsis> cend </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/clear/ class=md-nav__link> <span class=md-ellipsis> clear </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/contains/ class=md-nav__link> <span class=md-ellipsis> contains </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/count/ class=md-nav__link> <span class=md-ellipsis> count </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/crbegin/ class=md-nav__link> <span class=md-ellipsis> crbegin </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/crend/ class=md-nav__link> <span class=md-ellipsis> crend </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/default_object_comparator_t/ class=md-nav__link> <span class=md-ellipsis> default_object_comparator_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/diff/ class=md-nav__link> <span class=md-ellipsis> diff </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/dump/ class=md-nav__link> <span class=md-ellipsis> dump </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/emplace/ class=md-nav__link> <span class=md-ellipsis> emplace </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/emplace_back/ class=md-nav__link> <span class=md-ellipsis> emplace_back </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/empty/ class=md-nav__link> <span class=md-ellipsis> empty </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/end/ class=md-nav__link> <span class=md-ellipsis> end </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/end_pos/ class=md-nav__link> <span class=md-ellipsis> end_pos </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/erase/ class=md-nav__link> <span class=md-ellipsis> erase </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/error_handler_t/ class=md-nav__link> <span class=md-ellipsis> error_handler_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/exception/ class=md-nav__link> <span class=md-ellipsis> exception </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/find/ class=md-nav__link> <span class=md-ellipsis> find </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/flatten/ class=md-nav__link> <span class=md-ellipsis> flatten </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/from_bjdata/ class=md-nav__link> <span class=md-ellipsis> from_bjdata </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/from_bson/ class=md-nav__link> <span class=md-ellipsis> from_bson </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/from_cbor/ class=md-nav__link> <span class=md-ellipsis> from_cbor </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/from_msgpack/ class=md-nav__link> <span class=md-ellipsis> from_msgpack </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/from_ubjson/ class=md-nav__link> <span class=md-ellipsis> from_ubjson </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/front/ class=md-nav__link> <span class=md-ellipsis> front </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/get/ class=md-nav__link> <span class=md-ellipsis> get </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/get_allocator/ class=md-nav__link> <span class=md-ellipsis> get_allocator </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/get_binary/ class=md-nav__link> <span class=md-ellipsis> get_binary </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/get_ptr/ class=md-nav__link> <span class=md-ellipsis> get_ptr </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/get_ref/ class=md-nav__link> <span class=md-ellipsis> get_ref </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/get_to/ class=md-nav__link> <span class=md-ellipsis> get_to </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/std_hash/ class=md-nav__link> <span class=md-ellipsis> std::hash&lt;basic_json&gt; </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/input_format_t/ class=md-nav__link> <span class=md-ellipsis> input_format_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/insert/ class=md-nav__link> <span class=md-ellipsis> insert </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/invalid_iterator/ class=md-nav__link> <span class=md-ellipsis> invalid_iterator </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_array/ class=md-nav__link> <span class=md-ellipsis> is_array </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_binary/ class=md-nav__link> <span class=md-ellipsis> is_binary </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_boolean/ class=md-nav__link> <span class=md-ellipsis> is_boolean </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_discarded/ class=md-nav__link> <span class=md-ellipsis> is_discarded </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_null/ class=md-nav__link> <span class=md-ellipsis> is_null </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_number/ class=md-nav__link> <span class=md-ellipsis> is_number </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_number_float/ class=md-nav__link> <span class=md-ellipsis> is_number_float </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_number_integer/ class=md-nav__link> <span class=md-ellipsis> is_number_integer </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_number_unsigned/ class=md-nav__link> <span class=md-ellipsis> is_number_unsigned </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_object/ class=md-nav__link> <span class=md-ellipsis> is_object </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_primitive/ class=md-nav__link> <span class=md-ellipsis> is_primitive </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_string/ class=md-nav__link> <span class=md-ellipsis> is_string </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_structured/ class=md-nav__link> <span class=md-ellipsis> is_structured </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/items/ class=md-nav__link> <span class=md-ellipsis> items </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/json_base_class_t/ class=md-nav__link> <span class=md-ellipsis> json_base_class_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/json_serializer/ class=md-nav__link> <span class=md-ellipsis> json_serializer </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/max_size/ class=md-nav__link> <span class=md-ellipsis> max_size </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/meta/ class=md-nav__link> <span class=md-ellipsis> meta </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/merge_patch/ class=md-nav__link> <span class=md-ellipsis> merge_patch </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/number_float_t/ class=md-nav__link> <span class=md-ellipsis> number_float_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/number_integer_t/ class=md-nav__link> <span class=md-ellipsis> number_integer_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/number_unsigned_t/ class=md-nav__link> <span class=md-ellipsis> number_unsigned_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/object/ class=md-nav__link> <span class=md-ellipsis> object </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/object_comparator_t/ class=md-nav__link> <span class=md-ellipsis> object_comparator_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/object_t/ class=md-nav__link> <span class=md-ellipsis> object_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/operator_ValueType/ class=md-nav__link> <span class=md-ellipsis> operator ValueType </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/operator_value_t/ class=md-nav__link> <span class=md-ellipsis> operator value_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/operator%5B%5D/ class=md-nav__link> <span class=md-ellipsis> operator[] </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/operator%3D/ class=md-nav__link> <span class=md-ellipsis> operator= </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/operator%2B%3D/ class=md-nav__link> <span class=md-ellipsis> operator+= </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/operator_eq/ class=md-nav__link> <span class=md-ellipsis> operator== </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/operator_ne/ class=md-nav__link> <span class=md-ellipsis> operator!= </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/operator_lt/ class=md-nav__link> <span class=md-ellipsis> operator< </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/operator_gt/ class=md-nav__link> <span class=md-ellipsis> operator> </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/operator_le/ class=md-nav__link> <span class=md-ellipsis> operator<= </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/operator_ge/ class=md-nav__link> <span class=md-ellipsis> operator>= </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/operator_spaceship/ class=md-nav__link> <span class=md-ellipsis> operator<=> </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/out_of_range/ class=md-nav__link> <span class=md-ellipsis> out_of_range </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/other_error/ class=md-nav__link> <span class=md-ellipsis> other_error </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/parse/ class=md-nav__link> <span class=md-ellipsis> parse </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/parse_error/ class=md-nav__link> <span class=md-ellipsis> parse_error </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/parse_event_t/ class=md-nav__link> <span class=md-ellipsis> parse_event_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/parser_callback_t/ class=md-nav__link> <span class=md-ellipsis> parser_callback_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/patch/ class=md-nav__link> <span class=md-ellipsis> patch </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/patch_inplace/ class=md-nav__link> <span class=md-ellipsis> patch_inplace </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/push_back/ class=md-nav__link> <span class=md-ellipsis> push_back </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/rbegin/ class=md-nav__link> <span class=md-ellipsis> rbegin </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/rend/ class=md-nav__link> <span class=md-ellipsis> rend </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/sax_parse/ class=md-nav__link> <span class=md-ellipsis> sax_parse </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/size/ class=md-nav__link> <span class=md-ellipsis> size </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/start_pos/ class=md-nav__link> <span class=md-ellipsis> start_pos </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/string_t/ class=md-nav__link> <span class=md-ellipsis> string_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/swap/ class=md-nav__link> <span class=md-ellipsis> swap </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/std_swap/ class=md-nav__link> <span class=md-ellipsis> std::swap&lt;basic_json&gt; </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/to_bjdata/ class=md-nav__link> <span class=md-ellipsis> to_bjdata </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/to_bson/ class=md-nav__link> <span class=md-ellipsis> to_bson </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/to_cbor/ class=md-nav__link> <span class=md-ellipsis> to_cbor </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/to_msgpack/ class=md-nav__link> <span class=md-ellipsis> to_msgpack </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/to_string/ class=md-nav__link> <span class=md-ellipsis> to_string </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/to_ubjson/ class=md-nav__link> <span class=md-ellipsis> to_ubjson </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/type/ class=md-nav__link> <span class=md-ellipsis> type </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/type_error/ class=md-nav__link> <span class=md-ellipsis> type_error </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/type_name/ class=md-nav__link> <span class=md-ellipsis> type_name </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/unflatten/ class=md-nav__link> <span class=md-ellipsis> unflatten </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/update/ class=md-nav__link> <span class=md-ellipsis> update </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/value/ class=md-nav__link> <span class=md-ellipsis> value </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/value_t/ class=md-nav__link> <span class=md-ellipsis> value_t </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_2> <div class="md-nav__link md-nav__container"> <a href=../../api/byte_container_with_subtype/ class="md-nav__link "> <span class=md-ellipsis> byte_container_with_subtype </span> </a> <label class="md-nav__link " for=__nav_4_2 id=__nav_4_2_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_2_label aria-expanded=false> <label class=md-nav__title for=__nav_4_2> <span class="md-nav__icon md-icon"></span> byte_container_with_subtype </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../api/byte_container_with_subtype/byte_container_with_subtype/ class=md-nav__link> <span class=md-ellipsis> (constructor) </span> </a> </li> <li class=md-nav__item> <a href=../../api/byte_container_with_subtype/clear_subtype/ class=md-nav__link> <span class=md-ellipsis> clear_subtype </span> </a> </li> <li class=md-nav__item> <a href=../../api/byte_container_with_subtype/has_subtype/ class=md-nav__link> <span class=md-ellipsis> has_subtype </span> </a> </li> <li class=md-nav__item> <a href=../../api/byte_container_with_subtype/set_subtype/ class=md-nav__link> <span class=md-ellipsis> set_subtype </span> </a> </li> <li class=md-nav__item> <a href=../../api/byte_container_with_subtype/subtype/ class=md-nav__link> <span class=md-ellipsis> subtype </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_3> <div class="md-nav__link md-nav__container"> <a href=../../api/adl_serializer/ class="md-nav__link "> <span class=md-ellipsis> adl_serializer </span> </a> <label class="md-nav__link " for=__nav_4_3 id=__nav_4_3_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_3_label aria-expanded=false> <label class=md-nav__title for=__nav_4_3> <span class="md-nav__icon md-icon"></span> adl_serializer </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../api/adl_serializer/from_json/ class=md-nav__link> <span class=md-ellipsis> from_json </span> </a> </li> <li class=md-nav__item> <a href=../../api/adl_serializer/to_json/ class=md-nav__link> <span class=md-ellipsis> to_json </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../api/json/ class=md-nav__link> <span class=md-ellipsis> json </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_5> <div class="md-nav__link md-nav__container"> <a href=../../api/json_pointer/ class="md-nav__link "> <span class=md-ellipsis> json_pointer </span> </a> <label class="md-nav__link " for=__nav_4_5 id=__nav_4_5_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_5_label aria-expanded=false> <label class=md-nav__title for=__nav_4_5> <span class="md-nav__icon md-icon"></span> json_pointer </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../api/json_pointer/json_pointer/ class=md-nav__link> <span class=md-ellipsis> (Constructor) </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/back/ class=md-nav__link> <span class=md-ellipsis> back </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/empty/ class=md-nav__link> <span class=md-ellipsis> empty </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/front/ class=md-nav__link> <span class=md-ellipsis> front </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/operator_string_t/ class=md-nav__link> <span class=md-ellipsis> operator string_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/operator_eq/ class=md-nav__link> <span class=md-ellipsis> operator== </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/operator_ne/ class=md-nav__link> <span class=md-ellipsis> operator!= </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/operator_slash/ class=md-nav__link> <span class=md-ellipsis> operator/ </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/operator_slasheq/ class=md-nav__link> <span class=md-ellipsis> operator/= </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/parent_pointer/ class=md-nav__link> <span class=md-ellipsis> parent_pointer </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/pop_back/ class=md-nav__link> <span class=md-ellipsis> pop_back </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/pop_front/ class=md-nav__link> <span class=md-ellipsis> pop_front </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/push_back/ class=md-nav__link> <span class=md-ellipsis> push_back </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/push_front/ class=md-nav__link> <span class=md-ellipsis> push_front </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/string_t/ class=md-nav__link> <span class=md-ellipsis> string_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/to_string/ class=md-nav__link> <span class=md-ellipsis> to_string </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_6> <div class="md-nav__link md-nav__container"> <a href=../../api/json_sax/ class="md-nav__link "> <span class=md-ellipsis> json_sax </span> </a> <label class="md-nav__link " for=__nav_4_6 id=__nav_4_6_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_6_label aria-expanded=false> <label class=md-nav__title for=__nav_4_6> <span class="md-nav__icon md-icon"></span> json_sax </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../api/json_sax/binary/ class=md-nav__link> <span class=md-ellipsis> binary </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_sax/boolean/ class=md-nav__link> <span class=md-ellipsis> boolean </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_sax/end_array/ class=md-nav__link> <span class=md-ellipsis> end_array </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_sax/end_object/ class=md-nav__link> <span class=md-ellipsis> end_object </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_sax/key/ class=md-nav__link> <span class=md-ellipsis> key </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_sax/null/ class=md-nav__link> <span class=md-ellipsis> null </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_sax/number_float/ class=md-nav__link> <span class=md-ellipsis> number_float </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_sax/number_integer/ class=md-nav__link> <span class=md-ellipsis> number_integer </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_sax/number_unsigned/ class=md-nav__link> <span class=md-ellipsis> number_unsigned </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_sax/parse_error/ class=md-nav__link> <span class=md-ellipsis> parse_error </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_sax/start_array/ class=md-nav__link> <span class=md-ellipsis> start_array </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_sax/start_object/ class=md-nav__link> <span class=md-ellipsis> start_object </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_sax/string/ class=md-nav__link> <span class=md-ellipsis> string </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../api/operator_ltlt/ class=md-nav__link> <span class=md-ellipsis> operator<<(basic_json), operator<<(json_pointer) </span> </a> </li> <li class=md-nav__item> <a href=../../api/operator_gtgt/ class=md-nav__link> <span class=md-ellipsis> operator>>(basic_json) </span> </a> </li> <li class=md-nav__item> <a href=../../api/operator_literal_json/ class=md-nav__link> <span class=md-ellipsis> operator""_json </span> </a> </li> <li class=md-nav__item> <a href=../../api/operator_literal_json_pointer/ class=md-nav__link> <span class=md-ellipsis> operator""_json_pointer </span> </a> </li> <li class=md-nav__item> <a href=../../api/ordered_json/ class=md-nav__link> <span class=md-ellipsis> ordered_json </span> </a> </li> <li class=md-nav__item> <a href=../../api/ordered_map/ class=md-nav__link> <span class=md-ellipsis> ordered_map </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_13> <div class="md-nav__link md-nav__container"> <a href=../../api/macros/ class="md-nav__link "> <span class=md-ellipsis> macros </span> </a> <label class="md-nav__link " for=__nav_4_13 id=__nav_4_13_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_13_label aria-expanded=false> <label class=md-nav__title for=__nav_4_13> <span class="md-nav__icon md-icon"></span> macros </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../api/macros/json_assert/ class=md-nav__link> <span class=md-ellipsis> JSON_ASSERT </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_brace_init_copy_semantics/ class=md-nav__link> <span class=md-ellipsis> JSON_BRACE_INIT_COPY_SEMANTICS </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_throw_user/ class=md-nav__link> <span class=md-ellipsis> JSON_CATCH_USER, JSON_THROW_USER, JSON_TRY_USER </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_diagnostics/ class=md-nav__link> <span class=md-ellipsis> JSON_DIAGNOSTICS </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_diagnostic_positions/ class=md-nav__link> <span class=md-ellipsis> JSON_DIAGNOSTIC_POSITIONS </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_disable_enum_serialization/ class=md-nav__link> <span class=md-ellipsis> JSON_DISABLE_ENUM_SERIALIZATION </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_has_cpp_11/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_CPP_11, JSON_HAS_CPP_14, JSON_HAS_CPP_17, JSON_HAS_CPP_20 </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_has_filesystem/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_EXPERIMENTAL_FILESYSTEM, JSON_HAS_FILESYSTEM </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_has_ranges/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_RANGES </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_has_static_rtti/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_STATIC_RTTI </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_has_three_way_comparison/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_THREE_WAY_COMPARISON </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_noexception/ class=md-nav__link> <span class=md-ellipsis> JSON_NOEXCEPTION </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_no_io/ class=md-nav__link> <span class=md-ellipsis> JSON_NO_IO </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_skip_library_version_check/ class=md-nav__link> <span class=md-ellipsis> JSON_SKIP_LIBRARY_VERSION_CHECK </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_skip_unsupported_compiler_check/ class=md-nav__link> <span class=md-ellipsis> JSON_SKIP_UNSUPPORTED_COMPILER_CHECK </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_use_global_udls/ class=md-nav__link> <span class=md-ellipsis> JSON_USE_GLOBAL_UDLS </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_use_implicit_conversions/ class=md-nav__link> <span class=md-ellipsis> JSON_USE_IMPLICIT_CONVERSIONS </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_use_legacy_discarded_value_comparison/ class=md-nav__link> <span class=md-ellipsis> JSON_USE_LEGACY_DISCARDED_VALUE_COMPARISON </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/nlohmann_define_derived_type/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_ONLY_SERIALIZE, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/nlohmann_define_type_intrusive/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_TYPE_INTRUSIVE, NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_TYPE_INTRUSIVE_ONLY_SERIALIZE </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/nlohmann_define_type_non_intrusive/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/nlohmann_define_type_with_names/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_TYPE_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/nlohmann_json_namespace/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_NAMESPACE </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/nlohmann_json_namespace_begin/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_NAMESPACE_BEGIN, NLOHMANN_JSON_NAMESPACE_END </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/nlohmann_json_namespace_no_version/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_NAMESPACE_NO_VERSION </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/nlohmann_json_serialize_enum/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_SERIALIZE_ENUM </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/nlohmann_json_serialize_enum_strict/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_SERIALIZE_ENUM_STRICT </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/nlohmann_json_version_major/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_VERSION_MAJOR, NLOHMANN_JSON_VERSION_MINOR, NLOHMANN_JSON_VERSION_PATCH </span> </a> </li> </ul> </nav> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--active md-nav__item--section md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_5 checked> <div class="md-nav__link md-nav__container"> <a href=../ class="md-nav__link "> <span class=md-ellipsis> Community </span> </a> <label class="md-nav__link " for=__nav_5 id=__nav_5_label tabindex> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_5_label aria-expanded=true> <label class=md-nav__title for=__nav_5> <span class="md-nav__icon md-icon"></span> Community </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../code_of_conduct/ class=md-nav__link> <span class=md-ellipsis> Code of Conduct </span> </a> </li> <li class=md-nav__item> <a href=../contribution_guidelines/ class=md-nav__link> <span class=md-ellipsis> Contribution Guidelines </span> </a> </li> <li class=md-nav__item> <a href=../quality_assurance/ class=md-nav__link> <span class=md-ellipsis> Quality assurance </span> </a> </li> <li class=md-nav__item> <a href=../governance/ class=md-nav__link> <span class=md-ellipsis> Governance </span> </a> </li> <li class="md-nav__item md-nav__item--active"> <input class="md-nav__toggle md-toggle" type=checkbox id=__toc> <label class="md-nav__link md-nav__link--active" for=__toc> <span class=md-ellipsis> Security Policy </span> <span class="md-nav__icon md-icon"></span> </label> <a href=./ class="md-nav__link md-nav__link--active"> <span class=md-ellipsis> Security Policy </span> </a> <nav class="md-nav md-nav--secondary" aria-label="Table of contents"> <label class=md-nav__title for=__toc> <span class="md-nav__icon md-icon"></span> Table of contents </label> <ul class=md-nav__list data-md-component=toc data-md-scrollfix> <li class=md-nav__item> <a href=#reporting-a-vulnerability class=md-nav__link> <span class=md-ellipsis> Reporting a Vulnerability </span> </a> </li> <li class=md-nav__item> <a href=#additional-resources class=md-nav__link> <span class=md-ellipsis> Additional Resources </span> </a> </li> </ul> </nav> </li> </ul> </nav> </li> </ul> </nav> </div> </div> </div> <div class="md-sidebar md-sidebar--secondary" data-md-component=sidebar data-md-type=toc> <div class=md-sidebar__scrollwrap> <div class=md-sidebar__inner> <nav class="md-nav md-nav--secondary" aria-label="Table of contents"> <label class=md-nav__title for=__toc> <span class="md-nav__icon md-icon"></span> Table of contents </label> <ul class=md-nav__list data-md-component=toc data-md-scrollfix> <li class=md-nav__item> <a href=#reporting-a-vulnerability class=md-nav__link> <span class=md-ellipsis> Reporting a Vulnerability </span> </a> </li> <li class=md-nav__item> <a href=#additional-resources class=md-nav__link> <span class=md-ellipsis> Additional Resources </span> </a> </li> </ul> </nav> </div> </div> </div> <div class=md-content data-md-component=content> <article class="md-content__inner md-typeset"> <a href="https://github.com/nlohmann/json/edit/develop/docs/mkdocs/docs/community/security_policy.md" title="Edit this page" class="md-content__button md-icon" rel="edit"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M10 20H6V4h7v5h5v3.1l2-2V8l-6-6H6c-1.1 0-2 .9-2 2v16c0 1.1.9 2 2 2h4zm10.2-7c.1 0 .3.1.4.2l1.3 1.3c.2.2.2.6 0 .8l-1 1-2.1-2.1 1-1c.1-.1.2-.2.4-.2m0 3.9L14.1 23H12v-2.1l6.1-6.1z"/></svg> </a> <a href="https://github.com/nlohmann/json/raw/develop/docs/mkdocs/docs/community/security_policy.md" title="View source of this page" class="md-content__button md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M17 18c.56 0 1 .44 1 1s-.44 1-1 1-1-.44-1-1 .44-1 1-1m0-3c-2.73 0-5.06 1.66-6 4 .94 2.34 3.27 4 6 4s5.06-1.66 6-4c-.94-2.34-3.27-4-6-4m0 6.5a2.5 2.5 0 0 1-2.5-2.5 2.5 2.5 0 0 1 2.5-2.5 2.5 2.5 0 0 1 2.5 2.5 2.5 2.5 0 0 1-2.5 2.5M9.27 20H6V4h7v5h5v4.07c.7.08 1.36.25 2 .49V8l-6-6H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h4.5a8.2 8.2 0 0 1-1.23-2"/></svg> </a> <h1 id=security-policy>Security Policy<a class=headerlink href=#security-policy title="Permanent link">&para;</a></h1> <h2 id=reporting-a-vulnerability>Reporting a Vulnerability<a class=headerlink href=#reporting-a-vulnerability title="Permanent link">&para;</a></h2> <p>We value the security of our users and appreciate your efforts to responsibly disclose vulnerabilities. If you have identified a security vulnerability in this repository, please use the GitHub Security Advisory <a href="https://github.com/nlohmann/json/security/advisories/new">"Report a Vulnerability"</a> tab.</p> <p>Until it is published, this draft security advisory will only be visible to the maintainers of this project. Other users and teams may be added once the advisory is created.</p> <p>We will send a response indicating the next steps in handling your report. After the initial reply to your report, we will keep you informed of the progress towards a fix and full announcement and may ask for additional information or guidance.</p> <p>For vulnerabilities in third-party dependencies or modules, please report them directly to the respective maintainers.</p> <h2 id=additional-resources>Additional Resources<a class=headerlink href=#additional-resources title="Permanent link">&para;</a></h2> <ul> <li>Explore security-related topics and contribute to tools and projects through <a href="https://securitylab.github.com/">GitHub Security Lab</a>.</li> <li>Learn more about responsible disclosure and reporting vulnerabilities in GitHub at <a href="https://docs.github.com/en/code-security/repository-security-advisories/about-coordinated-disclosure-of-security-vulnerabilities">About coordinated disclosure of security vulnerabilities</a>.</li> </ul> <p>We sincerely thank you for contributing to the security and integrity of this project!</p> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 23, 2026 11:16:18 UTC">June 23, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
+<!doctype html><html lang=en class=no-js> <head><meta charset=utf-8><meta name=viewport content="width=device-width,initial-scale=1"><meta name=author content="Niels Lohmann"><link href="https://json.nlohmann.me/community/security_policy/" rel="canonical"><link href=../governance/ rel=prev><link rel=icon href=../../assets/images/favicon.png><meta name=generator content="mkdocs-1.6.1, mkdocs-material-9.7.6"><title>Security Policy - JSON for Modern C++</title><link rel=stylesheet href=../../assets/stylesheets/main.484c7ddc.min.css><link rel=stylesheet href=../../assets/stylesheets/palette.ab4e12ef.min.css><link rel="stylesheet" href="../../assets/external/fonts.googleapis.com/css.61a430c9.css"><style>:root{--md-text-font:"Roboto";--md-code-font:"JetBrains Mono"}</style><link rel=stylesheet href=../../css/custom.css><script>__md_scope=new URL("../..",location),__md_hash=e=>[...e].reduce(((e,_)=>(e<<5)-e+_.charCodeAt(0)),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script></head> <body dir=ltr data-md-color-scheme=default data-md-color-primary=indigo data-md-color-accent=indigo> <input class=md-toggle data-md-toggle=drawer type=checkbox id=__drawer autocomplete=off> <input class=md-toggle data-md-toggle=search type=checkbox id=__search autocomplete=off> <label class=md-overlay for=__drawer></label> <div data-md-component=skip> <a href=#security-policy class=md-skip> Skip to content </a> </div> <div data-md-component=announce> </div> <header class=md-header data-md-component=header> <nav class="md-header__inner md-grid" aria-label=Header> <a href=../.. title="JSON for Modern C++" class="md-header__button md-logo" aria-label="JSON for Modern C++" data-md-component=logo> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54"/></svg> </a> <label class="md-header__button md-icon" for=__drawer> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M3 6h18v2H3zm0 5h18v2H3zm0 5h18v2H3z"/></svg> </label> <div class=md-header__title data-md-component=header-title> <div class=md-header__ellipsis> <div class=md-header__topic> <span class=md-ellipsis> JSON for Modern C++ </span> </div> <div class=md-header__topic data-md-component=header-topic> <span class=md-ellipsis> Security Policy </span> </div> </div> </div> <form class=md-header__option data-md-component=palette> <input class=md-option data-md-color-media="(prefers-color-scheme: light)" data-md-color-scheme=default data-md-color-primary=indigo data-md-color-accent=indigo aria-label="Switch to dark mode" type=radio name=__palette id=__palette_0> <label class="md-header__button md-icon" title="Switch to dark mode" for=__palette_1 hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a4 4 0 0 0-4 4 4 4 0 0 0 4 4 4 4 0 0 0 4-4 4 4 0 0 0-4-4m0 10a6 6 0 0 1-6-6 6 6 0 0 1 6-6 6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12z"/></svg> </label> <input class=md-option data-md-color-media="(prefers-color-scheme: dark)" data-md-color-scheme=slate data-md-color-primary=indigo data-md-color-accent=indigo aria-label="Switch to light mode" type=radio name=__palette id=__palette_1> <label class="md-header__button md-icon" title="Switch to light mode" for=__palette_0 hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 18c-.89 0-1.74-.2-2.5-.55C11.56 16.5 13 14.42 13 12s-1.44-4.5-3.5-5.45C10.26 6.2 11.11 6 12 6a6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12z"/></svg> </label> </form> <script>var palette=__md_get("__palette");if(palette&&palette.color){if("(prefers-color-scheme)"===palette.color.media){var media=matchMedia("(prefers-color-scheme: light)"),input=document.querySelector(media.matches?"[data-md-color-media='(prefers-color-scheme: light)']":"[data-md-color-media='(prefers-color-scheme: dark)']");palette.color.media=input.getAttribute("data-md-color-media"),palette.color.scheme=input.getAttribute("data-md-color-scheme"),palette.color.primary=input.getAttribute("data-md-color-primary"),palette.color.accent=input.getAttribute("data-md-color-accent")}for(var[key,value]of Object.entries(palette.color))document.body.setAttribute("data-md-color-"+key,value)}</script> <label class="md-header__button md-icon" for=__search> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg> </label> <div class=md-search data-md-component=search role=dialog> <label class=md-search__overlay for=__search></label> <div class=md-search__inner role=search> <form class=md-search__form name=search> <input type=text class=md-search__input name=query aria-label=Search placeholder=Search autocapitalize=off autocorrect=off autocomplete=off spellcheck=false data-md-component=search-query required> <label class="md-search__icon md-icon" for=__search> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11z"/></svg> </label> <nav class=md-search__options aria-label=Search> <button type=reset class="md-search__icon md-icon" title=Clear aria-label=Clear tabindex=-1> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z"/></svg> </button> </nav> </form> <div class=md-search__output> <div class=md-search__scrollwrap tabindex=0 data-md-scrollfix> <div class=md-search-result data-md-component=search-result> <div class=md-search-result__meta> Initializing search </div> <ol class=md-search-result__list role=presentation></ol> </div> </div> </div> </div> </div> <div class=md-header__source> <a href="https://github.com/nlohmann/json" title="Go to repository" class="md-source" data-md-component="source"> <div class="md-source__icon md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </div> <div class=md-source__repository> nlohmann/json </div> </a> </div> </nav> </header> <div class=md-container data-md-component=container> <nav class=md-tabs aria-label=Tabs data-md-component=tabs> <div class=md-grid> <ul class=md-tabs__list> <li class=md-tabs__item> <a href=../.. class=md-tabs__link> Home </a> </li> <li class=md-tabs__item> <a href=../../features/arbitrary_types/ class=md-tabs__link> Features </a> </li> <li class=md-tabs__item> <a href=../../integration/ class=md-tabs__link> Integration </a> </li> <li class=md-tabs__item> <a href=../../api/basic_json/ class=md-tabs__link> API Documentation </a> </li> <li class="md-tabs__item md-tabs__item--active"> <a href=../ class=md-tabs__link> Community </a> </li> </ul> </div> </nav> <main class=md-main data-md-component=main> <div class="md-main__inner md-grid"> <div class="md-sidebar md-sidebar--primary" data-md-component=sidebar data-md-type=navigation> <div class=md-sidebar__scrollwrap> <div class=md-sidebar__inner> <nav class="md-nav md-nav--primary md-nav--lifted" aria-label=Navigation data-md-level=0> <label class=md-nav__title for=__drawer> <a href=../.. title="JSON for Modern C++" class="md-nav__button md-logo" aria-label="JSON for Modern C++" data-md-component=logo> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54"/></svg> </a> JSON for Modern C++ </label> <div class=md-nav__source> <a href="https://github.com/nlohmann/json" title="Go to repository" class="md-source" data-md-component="source"> <div class="md-source__icon md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </div> <div class=md-source__repository> nlohmann/json </div> </a> </div> <ul class=md-nav__list data-md-scrollfix> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_1> <div class="md-nav__link md-nav__container"> <a href=../.. class="md-nav__link "> <span class=md-ellipsis> Home </span> </a> <label class="md-nav__link " for=__nav_1 id=__nav_1_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_1_label aria-expanded=false> <label class=md-nav__title for=__nav_1> <span class="md-nav__icon md-icon"></span> Home </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../home/license/ class=md-nav__link> <span class=md-ellipsis> License </span> </a> </li> <li class=md-nav__item> <a href=../../home/faq/ class=md-nav__link> <span class=md-ellipsis> FAQ </span> </a> </li> <li class=md-nav__item> <a href=../../home/exceptions/ class=md-nav__link> <span class=md-ellipsis> Exceptions </span> </a> </li> <li class=md-nav__item> <a href=../../home/releases/ class=md-nav__link> <span class=md-ellipsis> Releases </span> </a> </li> <li class=md-nav__item> <a href=../../home/design_goals/ class=md-nav__link> <span class=md-ellipsis> Design goals </span> </a> </li> <li class=md-nav__item> <a href=../../home/architecture/ class=md-nav__link> <span class=md-ellipsis> Architecture </span> </a> </li> <li class=md-nav__item> <a href=../../home/customers/ class=md-nav__link> <span class=md-ellipsis> Customers </span> </a> </li> <li class=md-nav__item> <a href=../../home/sponsors/ class=md-nav__link> <span class=md-ellipsis> Sponsors </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2> <label class=md-nav__link for=__nav_2 id=__nav_2_label tabindex=0> <span class=md-ellipsis> Features </span> <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_2_label aria-expanded=false> <label class=md-nav__title for=__nav_2> <span class="md-nav__icon md-icon"></span> Features </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../features/arbitrary_types/ class=md-nav__link> <span class=md-ellipsis> Arbitrary Type Conversions </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_2> <div class="md-nav__link md-nav__container"> <a href=../../features/binary_formats/ class="md-nav__link "> <span class=md-ellipsis> Binary Formats </span> </a> <label class="md-nav__link " for=__nav_2_2 id=__nav_2_2_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_2_label aria-expanded=false> <label class=md-nav__title for=__nav_2_2> <span class="md-nav__icon md-icon"></span> Binary Formats </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../features/binary_formats/bjdata/ class=md-nav__link> <span class=md-ellipsis> BJData </span> </a> </li> <li class=md-nav__item> <a href=../../features/binary_formats/bson/ class=md-nav__link> <span class=md-ellipsis> BSON </span> </a> </li> <li class=md-nav__item> <a href=../../features/binary_formats/cbor/ class=md-nav__link> <span class=md-ellipsis> CBOR </span> </a> </li> <li class=md-nav__item> <a href=../../features/binary_formats/messagepack/ class=md-nav__link> <span class=md-ellipsis> MessagePack </span> </a> </li> <li class=md-nav__item> <a href=../../features/binary_formats/ubjson/ class=md-nav__link> <span class=md-ellipsis> UBJSON </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../features/binary_values/ class=md-nav__link> <span class=md-ellipsis> Binary Values </span> </a> </li> <li class=md-nav__item> <a href=../../features/comments/ class=md-nav__link> <span class=md-ellipsis> Comments </span> </a> </li> <li class=md-nav__item> <a href=../../features/trailing_commas/ class=md-nav__link> <span class=md-ellipsis> Trailing Commas </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_6> <div class="md-nav__link md-nav__container"> <a href=../../features/element_access/ class="md-nav__link "> <span class=md-ellipsis> Element Access </span> </a> <label class="md-nav__link " for=__nav_2_6 id=__nav_2_6_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_6_label aria-expanded=false> <label class=md-nav__title for=__nav_2_6> <span class="md-nav__icon md-icon"></span> Element Access </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../features/element_access/unchecked_access/ class=md-nav__link> <span class=md-ellipsis> Unchecked access: operator[] </span> </a> </li> <li class=md-nav__item> <a href=../../features/element_access/checked_access/ class=md-nav__link> <span class=md-ellipsis> Checked access: at </span> </a> </li> <li class=md-nav__item> <a href=../../features/element_access/default_value/ class=md-nav__link> <span class=md-ellipsis> Access with default value: value </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../features/iterators/ class=md-nav__link> <span class=md-ellipsis> Iterators </span> </a> </li> <li class=md-nav__item> <a href=../../features/json_pointer/ class=md-nav__link> <span class=md-ellipsis> JSON Pointer </span> </a> </li> <li class=md-nav__item> <a href=../../features/json_patch/ class=md-nav__link> <span class=md-ellipsis> JSON Patch and Diff </span> </a> </li> <li class=md-nav__item> <a href=../../features/merge_patch/ class=md-nav__link> <span class=md-ellipsis> JSON Merge Patch </span> </a> </li> <li class=md-nav__item> <a href=../../features/modules/ class=md-nav__link> <span class=md-ellipsis> Modules </span> </a> </li> <li class=md-nav__item> <a href=../../features/namespace/ class=md-nav__link> <span class=md-ellipsis> nlohmann Namespace </span> </a> </li> <li class=md-nav__item> <a href=../../features/object_order/ class=md-nav__link> <span class=md-ellipsis> Object Order </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_14> <div class="md-nav__link md-nav__container"> <a href=../../features/parsing/ class="md-nav__link "> <span class=md-ellipsis> Parsing </span> </a> <label class="md-nav__link " for=__nav_2_14 id=__nav_2_14_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_14_label aria-expanded=false> <label class=md-nav__title for=__nav_2_14> <span class="md-nav__icon md-icon"></span> Parsing </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../features/parsing/json_lines/ class=md-nav__link> <span class=md-ellipsis> JSON Lines </span> </a> </li> <li class=md-nav__item> <a href=../../features/parsing/parse_exceptions/ class=md-nav__link> <span class=md-ellipsis> Parsing and Exceptions </span> </a> </li> <li class=md-nav__item> <a href=../../features/parsing/parser_callbacks/ class=md-nav__link> <span class=md-ellipsis> Parser Callbacks </span> </a> </li> <li class=md-nav__item> <a href=../../features/parsing/sax_interface/ class=md-nav__link> <span class=md-ellipsis> SAX Interface </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../features/assertions/ class=md-nav__link> <span class=md-ellipsis> Runtime Assertions </span> </a> </li> <li class=md-nav__item> <a href=../../features/enum_conversion/ class=md-nav__link> <span class=md-ellipsis> Specializing enum conversion </span> </a> </li> <li class=md-nav__item> <a href=../../features/macros/ class=md-nav__link> <span class=md-ellipsis> Supported Macros </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_18> <div class="md-nav__link md-nav__container"> <a href=../../features/types/ class="md-nav__link "> <span class=md-ellipsis> Types </span> </a> <label class="md-nav__link " for=__nav_2_18 id=__nav_2_18_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_18_label aria-expanded=false> <label class=md-nav__title for=__nav_2_18> <span class="md-nav__icon md-icon"></span> Types </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../features/types/number_handling/ class=md-nav__link> <span class=md-ellipsis> Number Handling </span> </a> </li> </ul> </nav> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_3> <div class="md-nav__link md-nav__container"> <a href=../../integration/ class="md-nav__link "> <span class=md-ellipsis> Integration </span> </a> <label class="md-nav__link " for=__nav_3 id=__nav_3_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_3_label aria-expanded=false> <label class=md-nav__title for=__nav_3> <span class="md-nav__icon md-icon"></span> Integration </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../integration/migration_guide/ class=md-nav__link> <span class=md-ellipsis> Migration Guide </span> </a> </li> <li class=md-nav__item> <a href=../../integration/cmake/ class=md-nav__link> <span class=md-ellipsis> CMake </span> </a> </li> <li class=md-nav__item> <a href=../../integration/package_managers/ class=md-nav__link> <span class=md-ellipsis> Package Managers </span> </a> </li> <li class=md-nav__item> <a href=../../integration/pkg-config/ class=md-nav__link> <span class=md-ellipsis> Pkg-config </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4> <label class=md-nav__link for=__nav_4 id=__nav_4_label tabindex=0> <span class=md-ellipsis> API Documentation </span> <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_4_label aria-expanded=false> <label class=md-nav__title for=__nav_4> <span class="md-nav__icon md-icon"></span> API Documentation </label> <ul class=md-nav__list data-md-scrollfix> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_1> <div class="md-nav__link md-nav__container"> <a href=../../api/basic_json/ class="md-nav__link "> <span class=md-ellipsis> basic_json </span> </a> <label class="md-nav__link " for=__nav_4_1 id=__nav_4_1_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_1_label aria-expanded=false> <label class=md-nav__title for=__nav_4_1> <span class="md-nav__icon md-icon"></span> basic_json </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../api/basic_json/basic_json/ class=md-nav__link> <span class=md-ellipsis> (Constructor) </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/~basic_json/ class=md-nav__link> <span class=md-ellipsis> (Destructor) </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/accept/ class=md-nav__link> <span class=md-ellipsis> accept </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/array/ class=md-nav__link> <span class=md-ellipsis> array </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/array_t/ class=md-nav__link> <span class=md-ellipsis> array_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/at/ class=md-nav__link> <span class=md-ellipsis> at </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/back/ class=md-nav__link> <span class=md-ellipsis> back </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/begin/ class=md-nav__link> <span class=md-ellipsis> begin </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/binary/ class=md-nav__link> <span class=md-ellipsis> binary </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/binary_t/ class=md-nav__link> <span class=md-ellipsis> binary_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/boolean_t/ class=md-nav__link> <span class=md-ellipsis> boolean_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/cbegin/ class=md-nav__link> <span class=md-ellipsis> cbegin </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/cbor_tag_handler_t/ class=md-nav__link> <span class=md-ellipsis> cbor_tag_handler_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/cend/ class=md-nav__link> <span class=md-ellipsis> cend </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/clear/ class=md-nav__link> <span class=md-ellipsis> clear </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/contains/ class=md-nav__link> <span class=md-ellipsis> contains </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/count/ class=md-nav__link> <span class=md-ellipsis> count </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/crbegin/ class=md-nav__link> <span class=md-ellipsis> crbegin </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/crend/ class=md-nav__link> <span class=md-ellipsis> crend </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/default_object_comparator_t/ class=md-nav__link> <span class=md-ellipsis> default_object_comparator_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/diff/ class=md-nav__link> <span class=md-ellipsis> diff </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/dump/ class=md-nav__link> <span class=md-ellipsis> dump </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/emplace/ class=md-nav__link> <span class=md-ellipsis> emplace </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/emplace_back/ class=md-nav__link> <span class=md-ellipsis> emplace_back </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/empty/ class=md-nav__link> <span class=md-ellipsis> empty </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/end/ class=md-nav__link> <span class=md-ellipsis> end </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/end_pos/ class=md-nav__link> <span class=md-ellipsis> end_pos </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/erase/ class=md-nav__link> <span class=md-ellipsis> erase </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/error_handler_t/ class=md-nav__link> <span class=md-ellipsis> error_handler_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/exception/ class=md-nav__link> <span class=md-ellipsis> exception </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/find/ class=md-nav__link> <span class=md-ellipsis> find </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/flatten/ class=md-nav__link> <span class=md-ellipsis> flatten </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/from_bjdata/ class=md-nav__link> <span class=md-ellipsis> from_bjdata </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/from_bson/ class=md-nav__link> <span class=md-ellipsis> from_bson </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/from_cbor/ class=md-nav__link> <span class=md-ellipsis> from_cbor </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/from_msgpack/ class=md-nav__link> <span class=md-ellipsis> from_msgpack </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/from_ubjson/ class=md-nav__link> <span class=md-ellipsis> from_ubjson </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/front/ class=md-nav__link> <span class=md-ellipsis> front </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/get/ class=md-nav__link> <span class=md-ellipsis> get </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/get_allocator/ class=md-nav__link> <span class=md-ellipsis> get_allocator </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/get_binary/ class=md-nav__link> <span class=md-ellipsis> get_binary </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/get_ptr/ class=md-nav__link> <span class=md-ellipsis> get_ptr </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/get_ref/ class=md-nav__link> <span class=md-ellipsis> get_ref </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/get_to/ class=md-nav__link> <span class=md-ellipsis> get_to </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/std_hash/ class=md-nav__link> <span class=md-ellipsis> std::hash&lt;basic_json&gt; </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/input_format_t/ class=md-nav__link> <span class=md-ellipsis> input_format_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/insert/ class=md-nav__link> <span class=md-ellipsis> insert </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/invalid_iterator/ class=md-nav__link> <span class=md-ellipsis> invalid_iterator </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_array/ class=md-nav__link> <span class=md-ellipsis> is_array </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_binary/ class=md-nav__link> <span class=md-ellipsis> is_binary </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_boolean/ class=md-nav__link> <span class=md-ellipsis> is_boolean </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_discarded/ class=md-nav__link> <span class=md-ellipsis> is_discarded </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_null/ class=md-nav__link> <span class=md-ellipsis> is_null </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_number/ class=md-nav__link> <span class=md-ellipsis> is_number </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_number_float/ class=md-nav__link> <span class=md-ellipsis> is_number_float </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_number_integer/ class=md-nav__link> <span class=md-ellipsis> is_number_integer </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_number_unsigned/ class=md-nav__link> <span class=md-ellipsis> is_number_unsigned </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_object/ class=md-nav__link> <span class=md-ellipsis> is_object </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_primitive/ class=md-nav__link> <span class=md-ellipsis> is_primitive </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_string/ class=md-nav__link> <span class=md-ellipsis> is_string </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_structured/ class=md-nav__link> <span class=md-ellipsis> is_structured </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/items/ class=md-nav__link> <span class=md-ellipsis> items </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/json_base_class_t/ class=md-nav__link> <span class=md-ellipsis> json_base_class_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/json_serializer/ class=md-nav__link> <span class=md-ellipsis> json_serializer </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/max_size/ class=md-nav__link> <span class=md-ellipsis> max_size </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/meta/ class=md-nav__link> <span class=md-ellipsis> meta </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/merge_patch/ class=md-nav__link> <span class=md-ellipsis> merge_patch </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/number_float_t/ class=md-nav__link> <span class=md-ellipsis> number_float_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/number_integer_t/ class=md-nav__link> <span class=md-ellipsis> number_integer_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/number_unsigned_t/ class=md-nav__link> <span class=md-ellipsis> number_unsigned_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/object/ class=md-nav__link> <span class=md-ellipsis> object </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/object_comparator_t/ class=md-nav__link> <span class=md-ellipsis> object_comparator_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/object_t/ class=md-nav__link> <span class=md-ellipsis> object_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/operator_ValueType/ class=md-nav__link> <span class=md-ellipsis> operator ValueType </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/operator_value_t/ class=md-nav__link> <span class=md-ellipsis> operator value_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/operator%5B%5D/ class=md-nav__link> <span class=md-ellipsis> operator[] </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/operator%3D/ class=md-nav__link> <span class=md-ellipsis> operator= </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/operator%2B%3D/ class=md-nav__link> <span class=md-ellipsis> operator+= </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/operator_eq/ class=md-nav__link> <span class=md-ellipsis> operator== </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/operator_ne/ class=md-nav__link> <span class=md-ellipsis> operator!= </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/operator_lt/ class=md-nav__link> <span class=md-ellipsis> operator< </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/operator_gt/ class=md-nav__link> <span class=md-ellipsis> operator> </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/operator_le/ class=md-nav__link> <span class=md-ellipsis> operator<= </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/operator_ge/ class=md-nav__link> <span class=md-ellipsis> operator>= </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/operator_spaceship/ class=md-nav__link> <span class=md-ellipsis> operator<=> </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/out_of_range/ class=md-nav__link> <span class=md-ellipsis> out_of_range </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/other_error/ class=md-nav__link> <span class=md-ellipsis> other_error </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/parse/ class=md-nav__link> <span class=md-ellipsis> parse </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/parse_error/ class=md-nav__link> <span class=md-ellipsis> parse_error </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/parse_event_t/ class=md-nav__link> <span class=md-ellipsis> parse_event_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/parser_callback_t/ class=md-nav__link> <span class=md-ellipsis> parser_callback_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/patch/ class=md-nav__link> <span class=md-ellipsis> patch </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/patch_inplace/ class=md-nav__link> <span class=md-ellipsis> patch_inplace </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/push_back/ class=md-nav__link> <span class=md-ellipsis> push_back </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/rbegin/ class=md-nav__link> <span class=md-ellipsis> rbegin </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/rend/ class=md-nav__link> <span class=md-ellipsis> rend </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/sax_parse/ class=md-nav__link> <span class=md-ellipsis> sax_parse </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/size/ class=md-nav__link> <span class=md-ellipsis> size </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/start_pos/ class=md-nav__link> <span class=md-ellipsis> start_pos </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/string_t/ class=md-nav__link> <span class=md-ellipsis> string_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/swap/ class=md-nav__link> <span class=md-ellipsis> swap </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/std_swap/ class=md-nav__link> <span class=md-ellipsis> std::swap&lt;basic_json&gt; </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/to_bjdata/ class=md-nav__link> <span class=md-ellipsis> to_bjdata </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/to_bson/ class=md-nav__link> <span class=md-ellipsis> to_bson </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/to_cbor/ class=md-nav__link> <span class=md-ellipsis> to_cbor </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/to_msgpack/ class=md-nav__link> <span class=md-ellipsis> to_msgpack </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/to_string/ class=md-nav__link> <span class=md-ellipsis> to_string </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/to_ubjson/ class=md-nav__link> <span class=md-ellipsis> to_ubjson </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/type/ class=md-nav__link> <span class=md-ellipsis> type </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/type_error/ class=md-nav__link> <span class=md-ellipsis> type_error </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/type_name/ class=md-nav__link> <span class=md-ellipsis> type_name </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/unflatten/ class=md-nav__link> <span class=md-ellipsis> unflatten </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/update/ class=md-nav__link> <span class=md-ellipsis> update </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/value/ class=md-nav__link> <span class=md-ellipsis> value </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/value_t/ class=md-nav__link> <span class=md-ellipsis> value_t </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_2> <div class="md-nav__link md-nav__container"> <a href=../../api/byte_container_with_subtype/ class="md-nav__link "> <span class=md-ellipsis> byte_container_with_subtype </span> </a> <label class="md-nav__link " for=__nav_4_2 id=__nav_4_2_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_2_label aria-expanded=false> <label class=md-nav__title for=__nav_4_2> <span class="md-nav__icon md-icon"></span> byte_container_with_subtype </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../api/byte_container_with_subtype/byte_container_with_subtype/ class=md-nav__link> <span class=md-ellipsis> (constructor) </span> </a> </li> <li class=md-nav__item> <a href=../../api/byte_container_with_subtype/clear_subtype/ class=md-nav__link> <span class=md-ellipsis> clear_subtype </span> </a> </li> <li class=md-nav__item> <a href=../../api/byte_container_with_subtype/has_subtype/ class=md-nav__link> <span class=md-ellipsis> has_subtype </span> </a> </li> <li class=md-nav__item> <a href=../../api/byte_container_with_subtype/set_subtype/ class=md-nav__link> <span class=md-ellipsis> set_subtype </span> </a> </li> <li class=md-nav__item> <a href=../../api/byte_container_with_subtype/subtype/ class=md-nav__link> <span class=md-ellipsis> subtype </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_3> <div class="md-nav__link md-nav__container"> <a href=../../api/adl_serializer/ class="md-nav__link "> <span class=md-ellipsis> adl_serializer </span> </a> <label class="md-nav__link " for=__nav_4_3 id=__nav_4_3_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_3_label aria-expanded=false> <label class=md-nav__title for=__nav_4_3> <span class="md-nav__icon md-icon"></span> adl_serializer </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../api/adl_serializer/from_json/ class=md-nav__link> <span class=md-ellipsis> from_json </span> </a> </li> <li class=md-nav__item> <a href=../../api/adl_serializer/to_json/ class=md-nav__link> <span class=md-ellipsis> to_json </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../api/json/ class=md-nav__link> <span class=md-ellipsis> json </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_5> <div class="md-nav__link md-nav__container"> <a href=../../api/json_pointer/ class="md-nav__link "> <span class=md-ellipsis> json_pointer </span> </a> <label class="md-nav__link " for=__nav_4_5 id=__nav_4_5_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_5_label aria-expanded=false> <label class=md-nav__title for=__nav_4_5> <span class="md-nav__icon md-icon"></span> json_pointer </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../api/json_pointer/json_pointer/ class=md-nav__link> <span class=md-ellipsis> (Constructor) </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/back/ class=md-nav__link> <span class=md-ellipsis> back </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/empty/ class=md-nav__link> <span class=md-ellipsis> empty </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/front/ class=md-nav__link> <span class=md-ellipsis> front </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/operator_string_t/ class=md-nav__link> <span class=md-ellipsis> operator string_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/operator_eq/ class=md-nav__link> <span class=md-ellipsis> operator== </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/operator_ne/ class=md-nav__link> <span class=md-ellipsis> operator!= </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/operator_slash/ class=md-nav__link> <span class=md-ellipsis> operator/ </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/operator_slasheq/ class=md-nav__link> <span class=md-ellipsis> operator/= </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/parent_pointer/ class=md-nav__link> <span class=md-ellipsis> parent_pointer </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/pop_back/ class=md-nav__link> <span class=md-ellipsis> pop_back </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/pop_front/ class=md-nav__link> <span class=md-ellipsis> pop_front </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/push_back/ class=md-nav__link> <span class=md-ellipsis> push_back </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/push_front/ class=md-nav__link> <span class=md-ellipsis> push_front </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/string_t/ class=md-nav__link> <span class=md-ellipsis> string_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/to_string/ class=md-nav__link> <span class=md-ellipsis> to_string </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_6> <div class="md-nav__link md-nav__container"> <a href=../../api/json_sax/ class="md-nav__link "> <span class=md-ellipsis> json_sax </span> </a> <label class="md-nav__link " for=__nav_4_6 id=__nav_4_6_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_6_label aria-expanded=false> <label class=md-nav__title for=__nav_4_6> <span class="md-nav__icon md-icon"></span> json_sax </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../api/json_sax/binary/ class=md-nav__link> <span class=md-ellipsis> binary </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_sax/boolean/ class=md-nav__link> <span class=md-ellipsis> boolean </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_sax/end_array/ class=md-nav__link> <span class=md-ellipsis> end_array </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_sax/end_object/ class=md-nav__link> <span class=md-ellipsis> end_object </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_sax/key/ class=md-nav__link> <span class=md-ellipsis> key </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_sax/null/ class=md-nav__link> <span class=md-ellipsis> null </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_sax/number_float/ class=md-nav__link> <span class=md-ellipsis> number_float </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_sax/number_integer/ class=md-nav__link> <span class=md-ellipsis> number_integer </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_sax/number_unsigned/ class=md-nav__link> <span class=md-ellipsis> number_unsigned </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_sax/parse_error/ class=md-nav__link> <span class=md-ellipsis> parse_error </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_sax/start_array/ class=md-nav__link> <span class=md-ellipsis> start_array </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_sax/start_object/ class=md-nav__link> <span class=md-ellipsis> start_object </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_sax/string/ class=md-nav__link> <span class=md-ellipsis> string </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../api/operator_ltlt/ class=md-nav__link> <span class=md-ellipsis> operator<<(basic_json), operator<<(json_pointer) </span> </a> </li> <li class=md-nav__item> <a href=../../api/operator_gtgt/ class=md-nav__link> <span class=md-ellipsis> operator>>(basic_json) </span> </a> </li> <li class=md-nav__item> <a href=../../api/operator_literal_json/ class=md-nav__link> <span class=md-ellipsis> operator""_json </span> </a> </li> <li class=md-nav__item> <a href=../../api/operator_literal_json_pointer/ class=md-nav__link> <span class=md-ellipsis> operator""_json_pointer </span> </a> </li> <li class=md-nav__item> <a href=../../api/ordered_json/ class=md-nav__link> <span class=md-ellipsis> ordered_json </span> </a> </li> <li class=md-nav__item> <a href=../../api/ordered_map/ class=md-nav__link> <span class=md-ellipsis> ordered_map </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_13> <div class="md-nav__link md-nav__container"> <a href=../../api/macros/ class="md-nav__link "> <span class=md-ellipsis> macros </span> </a> <label class="md-nav__link " for=__nav_4_13 id=__nav_4_13_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_13_label aria-expanded=false> <label class=md-nav__title for=__nav_4_13> <span class="md-nav__icon md-icon"></span> macros </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../api/macros/json_assert/ class=md-nav__link> <span class=md-ellipsis> JSON_ASSERT </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_brace_init_copy_semantics/ class=md-nav__link> <span class=md-ellipsis> JSON_BRACE_INIT_COPY_SEMANTICS </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_throw_user/ class=md-nav__link> <span class=md-ellipsis> JSON_CATCH_USER, JSON_THROW_USER, JSON_TRY_USER </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_diagnostics/ class=md-nav__link> <span class=md-ellipsis> JSON_DIAGNOSTICS </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_diagnostic_positions/ class=md-nav__link> <span class=md-ellipsis> JSON_DIAGNOSTIC_POSITIONS </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_disable_enum_serialization/ class=md-nav__link> <span class=md-ellipsis> JSON_DISABLE_ENUM_SERIALIZATION </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_has_cpp_11/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_CPP_11, JSON_HAS_CPP_14, JSON_HAS_CPP_17, JSON_HAS_CPP_20 </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_has_filesystem/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_EXPERIMENTAL_FILESYSTEM, JSON_HAS_FILESYSTEM </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_has_ranges/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_RANGES </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_has_static_rtti/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_STATIC_RTTI </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_has_three_way_comparison/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_THREE_WAY_COMPARISON </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_noexception/ class=md-nav__link> <span class=md-ellipsis> JSON_NOEXCEPTION </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_no_io/ class=md-nav__link> <span class=md-ellipsis> JSON_NO_IO </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_skip_library_version_check/ class=md-nav__link> <span class=md-ellipsis> JSON_SKIP_LIBRARY_VERSION_CHECK </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_skip_unsupported_compiler_check/ class=md-nav__link> <span class=md-ellipsis> JSON_SKIP_UNSUPPORTED_COMPILER_CHECK </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_use_global_udls/ class=md-nav__link> <span class=md-ellipsis> JSON_USE_GLOBAL_UDLS </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_use_implicit_conversions/ class=md-nav__link> <span class=md-ellipsis> JSON_USE_IMPLICIT_CONVERSIONS </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_use_legacy_discarded_value_comparison/ class=md-nav__link> <span class=md-ellipsis> JSON_USE_LEGACY_DISCARDED_VALUE_COMPARISON </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/nlohmann_define_derived_type/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_ONLY_SERIALIZE, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/nlohmann_define_type_intrusive/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_TYPE_INTRUSIVE, NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_TYPE_INTRUSIVE_ONLY_SERIALIZE </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/nlohmann_define_type_non_intrusive/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/nlohmann_define_type_with_names/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_TYPE_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/nlohmann_json_namespace/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_NAMESPACE </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/nlohmann_json_namespace_begin/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_NAMESPACE_BEGIN, NLOHMANN_JSON_NAMESPACE_END </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/nlohmann_json_namespace_no_version/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_NAMESPACE_NO_VERSION </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/nlohmann_json_serialize_enum/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_SERIALIZE_ENUM </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/nlohmann_json_serialize_enum_strict/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_SERIALIZE_ENUM_STRICT </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/nlohmann_json_version_major/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_VERSION_MAJOR, NLOHMANN_JSON_VERSION_MINOR, NLOHMANN_JSON_VERSION_PATCH </span> </a> </li> </ul> </nav> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--active md-nav__item--section md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_5 checked> <div class="md-nav__link md-nav__container"> <a href=../ class="md-nav__link "> <span class=md-ellipsis> Community </span> </a> <label class="md-nav__link " for=__nav_5 id=__nav_5_label tabindex> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_5_label aria-expanded=true> <label class=md-nav__title for=__nav_5> <span class="md-nav__icon md-icon"></span> Community </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../code_of_conduct/ class=md-nav__link> <span class=md-ellipsis> Code of Conduct </span> </a> </li> <li class=md-nav__item> <a href=../contribution_guidelines/ class=md-nav__link> <span class=md-ellipsis> Contribution Guidelines </span> </a> </li> <li class=md-nav__item> <a href=../quality_assurance/ class=md-nav__link> <span class=md-ellipsis> Quality assurance </span> </a> </li> <li class=md-nav__item> <a href=../governance/ class=md-nav__link> <span class=md-ellipsis> Governance </span> </a> </li> <li class="md-nav__item md-nav__item--active"> <input class="md-nav__toggle md-toggle" type=checkbox id=__toc> <label class="md-nav__link md-nav__link--active" for=__toc> <span class=md-ellipsis> Security Policy </span> <span class="md-nav__icon md-icon"></span> </label> <a href=./ class="md-nav__link md-nav__link--active"> <span class=md-ellipsis> Security Policy </span> </a> <nav class="md-nav md-nav--secondary" aria-label="Table of contents"> <label class=md-nav__title for=__toc> <span class="md-nav__icon md-icon"></span> Table of contents </label> <ul class=md-nav__list data-md-component=toc data-md-scrollfix> <li class=md-nav__item> <a href=#reporting-a-vulnerability class=md-nav__link> <span class=md-ellipsis> Reporting a Vulnerability </span> </a> </li> <li class=md-nav__item> <a href=#additional-resources class=md-nav__link> <span class=md-ellipsis> Additional Resources </span> </a> </li> </ul> </nav> </li> </ul> </nav> </li> </ul> </nav> </div> </div> </div> <div class="md-sidebar md-sidebar--secondary" data-md-component=sidebar data-md-type=toc> <div class=md-sidebar__scrollwrap> <div class=md-sidebar__inner> <nav class="md-nav md-nav--secondary" aria-label="Table of contents"> <label class=md-nav__title for=__toc> <span class="md-nav__icon md-icon"></span> Table of contents </label> <ul class=md-nav__list data-md-component=toc data-md-scrollfix> <li class=md-nav__item> <a href=#reporting-a-vulnerability class=md-nav__link> <span class=md-ellipsis> Reporting a Vulnerability </span> </a> </li> <li class=md-nav__item> <a href=#additional-resources class=md-nav__link> <span class=md-ellipsis> Additional Resources </span> </a> </li> </ul> </nav> </div> </div> </div> <div class=md-content data-md-component=content> <article class="md-content__inner md-typeset"> <a href="https://github.com/nlohmann/json/edit/develop/docs/mkdocs/docs/community/security_policy.md" title="Edit this page" class="md-content__button md-icon" rel="edit"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M10 20H6V4h7v5h5v3.1l2-2V8l-6-6H6c-1.1 0-2 .9-2 2v16c0 1.1.9 2 2 2h4zm10.2-7c.1 0 .3.1.4.2l1.3 1.3c.2.2.2.6 0 .8l-1 1-2.1-2.1 1-1c.1-.1.2-.2.4-.2m0 3.9L14.1 23H12v-2.1l6.1-6.1z"/></svg> </a> <a href="https://github.com/nlohmann/json/raw/develop/docs/mkdocs/docs/community/security_policy.md" title="View source of this page" class="md-content__button md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M17 18c.56 0 1 .44 1 1s-.44 1-1 1-1-.44-1-1 .44-1 1-1m0-3c-2.73 0-5.06 1.66-6 4 .94 2.34 3.27 4 6 4s5.06-1.66 6-4c-.94-2.34-3.27-4-6-4m0 6.5a2.5 2.5 0 0 1-2.5-2.5 2.5 2.5 0 0 1 2.5-2.5 2.5 2.5 0 0 1 2.5 2.5 2.5 2.5 0 0 1-2.5 2.5M9.27 20H6V4h7v5h5v4.07c.7.08 1.36.25 2 .49V8l-6-6H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h4.5a8.2 8.2 0 0 1-1.23-2"/></svg> </a> <h1 id=security-policy>Security Policy<a class=headerlink href=#security-policy title="Permanent link">&para;</a></h1> <h2 id=reporting-a-vulnerability>Reporting a Vulnerability<a class=headerlink href=#reporting-a-vulnerability title="Permanent link">&para;</a></h2> <p>We value the security of our users and appreciate your efforts to responsibly disclose vulnerabilities. If you have identified a security vulnerability in this repository, please use the GitHub Security Advisory <a href="https://github.com/nlohmann/json/security/advisories/new">"Report a Vulnerability"</a> tab.</p> <p>Until it is published, this draft security advisory will only be visible to the maintainers of this project. Other users and teams may be added once the advisory is created.</p> <p>We will send a response indicating the next steps in handling your report. After the initial reply to your report, we will keep you informed of the progress towards a fix and full announcement and may ask for additional information or guidance.</p> <p>For vulnerabilities in third-party dependencies or modules, please report them directly to the respective maintainers.</p> <h2 id=additional-resources>Additional Resources<a class=headerlink href=#additional-resources title="Permanent link">&para;</a></h2> <ul> <li>Explore security-related topics and contribute to tools and projects through <a href="https://securitylab.github.com/">GitHub Security Lab</a>.</li> <li>Learn more about responsible disclosure and reporting vulnerabilities in GitHub at <a href="https://docs.github.com/en/code-security/repository-security-advisories/about-coordinated-disclosure-of-security-vulnerabilities">About coordinated disclosure of security vulnerabilities</a>.</li> </ul> <p>We sincerely thank you for contributing to the security and integrity of this project!</p> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 29, 2026 20:15:18 UTC">June 29, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
diff --git a/features/arbitrary_types/index.html b/features/arbitrary_types/index.html
index df553af..1cb253e 100644
--- a/features/arbitrary_types/index.html
+++ b/features/arbitrary_types/index.html
@@ -179,4 +179,4 @@
 <span class=w>      </span><span class=n>value</span><span class=w> </span><span class=o>=</span><span class=w> </span><span class=n>j</span><span class=p>.</span><span class=k>template</span><span class=w> </span><span class=n>get</span><span class=o>&lt;</span><span class=n>T</span><span class=o>&gt;</span><span class=p>();</span><span class=w> </span><span class=c1>// oops!</span>
 <span class=w>    </span><span class=p>}</span>
 <span class=p>};</span>
-</code></pre></div> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 23, 2026 11:16:18 UTC">June 23, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
+</code></pre></div> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 29, 2026 20:15:18 UTC">June 29, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
diff --git a/features/assertions/index.html b/features/assertions/index.html
index 53dfeca..273b791 100644
--- a/features/assertions/index.html
+++ b/features/assertions/index.html
@@ -43,4 +43,4 @@
 <span class=w>    </span><span class=p>}</span>
 <span class=p>}</span>
 </code></pre></div> <p>Output:</p> <div class=highlight><pre><span></span><code>[json.exception.parse_error.101] parse error: attempting to parse an empty input; check that your input string or stream contains the expected JSON
-</code></pre></div> </details> <h2 id=see-also>See also<a class=headerlink href=#see-also title="Permanent link">&para;</a></h2> <ul> <li><a href=../../api/macros/json_assert/ >JSON_ASSERT</a> - control behavior of runtime assertions</li> </ul> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 23, 2026 11:16:18 UTC">June 23, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
+</code></pre></div> </details> <h2 id=see-also>See also<a class=headerlink href=#see-also title="Permanent link">&para;</a></h2> <ul> <li><a href=../../api/macros/json_assert/ >JSON_ASSERT</a> - control behavior of runtime assertions</li> </ul> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 29, 2026 20:15:18 UTC">June 29, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
diff --git a/features/binary_formats/bjdata/index.html b/features/binary_formats/bjdata/index.html
index c1659ea..fc48cc3 100644
--- a/features/binary_formats/bjdata/index.html
+++ b/features/binary_formats/bjdata/index.html
@@ -95,4 +95,4 @@
 <span class=w>  </span><span class=nt>&quot;compact&quot;</span><span class=p>:</span><span class=w> </span><span class=kc>true</span><span class=p>,</span>
 <span class=w>  </span><span class=nt>&quot;schema&quot;</span><span class=p>:</span><span class=w> </span><span class=mi>0</span>
 <span class=p>}</span>
-</code></pre></div> </details> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 23, 2026 11:16:18 UTC">June 23, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
+</code></pre></div> </details> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 29, 2026 20:15:18 UTC">June 29, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
diff --git a/features/binary_formats/bson/index.html b/features/binary_formats/bson/index.html
index 2079154..81425cd 100644
--- a/features/binary_formats/bson/index.html
+++ b/features/binary_formats/bson/index.html
@@ -46,4 +46,4 @@
 <span class=w>  </span><span class=nt>&quot;compact&quot;</span><span class=p>:</span><span class=w> </span><span class=kc>true</span><span class=p>,</span>
 <span class=w>  </span><span class=nt>&quot;schema&quot;</span><span class=p>:</span><span class=w> </span><span class=mi>0</span>
 <span class=p>}</span>
-</code></pre></div> </details> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 23, 2026 11:16:18 UTC">June 23, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
+</code></pre></div> </details> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 29, 2026 20:15:18 UTC">June 29, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
diff --git a/features/binary_formats/cbor/index.html b/features/binary_formats/cbor/index.html
index a462aaa..1fb3f70 100644
--- a/features/binary_formats/cbor/index.html
+++ b/features/binary_formats/cbor/index.html
@@ -45,4 +45,4 @@
 <span class=w>  </span><span class=nt>&quot;compact&quot;</span><span class=p>:</span><span class=w> </span><span class=kc>true</span><span class=p>,</span>
 <span class=w>  </span><span class=nt>&quot;schema&quot;</span><span class=p>:</span><span class=w> </span><span class=mi>0</span>
 <span class=p>}</span>
-</code></pre></div> </details> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 23, 2026 11:16:18 UTC">June 23, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
+</code></pre></div> </details> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 29, 2026 20:15:18 UTC">June 29, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
diff --git a/features/binary_formats/index.html b/features/binary_formats/index.html
index 37ea7f0..ded9a95 100644
--- a/features/binary_formats/index.html
+++ b/features/binary_formats/index.html
@@ -1 +1 @@
-<!doctype html><html lang=en class=no-js> <head><meta charset=utf-8><meta name=viewport content="width=device-width,initial-scale=1"><meta name=author content="Niels Lohmann"><link href="https://json.nlohmann.me/features/binary_formats/" rel="canonical"><link href=../arbitrary_types/ rel=prev><link href=bjdata/ rel=next><link rel=icon href=../../assets/images/favicon.png><meta name=generator content="mkdocs-1.6.1, mkdocs-material-9.7.6"><title>Binary Formats - JSON for Modern C++</title><link rel=stylesheet href=../../assets/stylesheets/main.484c7ddc.min.css><link rel=stylesheet href=../../assets/stylesheets/palette.ab4e12ef.min.css><link rel="stylesheet" href="../../assets/external/fonts.googleapis.com/css.61a430c9.css"><style>:root{--md-text-font:"Roboto";--md-code-font:"JetBrains Mono"}</style><link rel=stylesheet href=../../css/custom.css><script>__md_scope=new URL("../..",location),__md_hash=e=>[...e].reduce(((e,_)=>(e<<5)-e+_.charCodeAt(0)),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script></head> <body dir=ltr data-md-color-scheme=default data-md-color-primary=indigo data-md-color-accent=indigo> <input class=md-toggle data-md-toggle=drawer type=checkbox id=__drawer autocomplete=off> <input class=md-toggle data-md-toggle=search type=checkbox id=__search autocomplete=off> <label class=md-overlay for=__drawer></label> <div data-md-component=skip> <a href=#binary-formats class=md-skip> Skip to content </a> </div> <div data-md-component=announce> </div> <header class=md-header data-md-component=header> <nav class="md-header__inner md-grid" aria-label=Header> <a href=../.. title="JSON for Modern C++" class="md-header__button md-logo" aria-label="JSON for Modern C++" data-md-component=logo> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54"/></svg> </a> <label class="md-header__button md-icon" for=__drawer> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M3 6h18v2H3zm0 5h18v2H3zm0 5h18v2H3z"/></svg> </label> <div class=md-header__title data-md-component=header-title> <div class=md-header__ellipsis> <div class=md-header__topic> <span class=md-ellipsis> JSON for Modern C++ </span> </div> <div class=md-header__topic data-md-component=header-topic> <span class=md-ellipsis> Binary Formats </span> </div> </div> </div> <form class=md-header__option data-md-component=palette> <input class=md-option data-md-color-media="(prefers-color-scheme: light)" data-md-color-scheme=default data-md-color-primary=indigo data-md-color-accent=indigo aria-label="Switch to dark mode" type=radio name=__palette id=__palette_0> <label class="md-header__button md-icon" title="Switch to dark mode" for=__palette_1 hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a4 4 0 0 0-4 4 4 4 0 0 0 4 4 4 4 0 0 0 4-4 4 4 0 0 0-4-4m0 10a6 6 0 0 1-6-6 6 6 0 0 1 6-6 6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12z"/></svg> </label> <input class=md-option data-md-color-media="(prefers-color-scheme: dark)" data-md-color-scheme=slate data-md-color-primary=indigo data-md-color-accent=indigo aria-label="Switch to light mode" type=radio name=__palette id=__palette_1> <label class="md-header__button md-icon" title="Switch to light mode" for=__palette_0 hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 18c-.89 0-1.74-.2-2.5-.55C11.56 16.5 13 14.42 13 12s-1.44-4.5-3.5-5.45C10.26 6.2 11.11 6 12 6a6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12z"/></svg> </label> </form> <script>var palette=__md_get("__palette");if(palette&&palette.color){if("(prefers-color-scheme)"===palette.color.media){var media=matchMedia("(prefers-color-scheme: light)"),input=document.querySelector(media.matches?"[data-md-color-media='(prefers-color-scheme: light)']":"[data-md-color-media='(prefers-color-scheme: dark)']");palette.color.media=input.getAttribute("data-md-color-media"),palette.color.scheme=input.getAttribute("data-md-color-scheme"),palette.color.primary=input.getAttribute("data-md-color-primary"),palette.color.accent=input.getAttribute("data-md-color-accent")}for(var[key,value]of Object.entries(palette.color))document.body.setAttribute("data-md-color-"+key,value)}</script> <label class="md-header__button md-icon" for=__search> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg> </label> <div class=md-search data-md-component=search role=dialog> <label class=md-search__overlay for=__search></label> <div class=md-search__inner role=search> <form class=md-search__form name=search> <input type=text class=md-search__input name=query aria-label=Search placeholder=Search autocapitalize=off autocorrect=off autocomplete=off spellcheck=false data-md-component=search-query required> <label class="md-search__icon md-icon" for=__search> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11z"/></svg> </label> <nav class=md-search__options aria-label=Search> <button type=reset class="md-search__icon md-icon" title=Clear aria-label=Clear tabindex=-1> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z"/></svg> </button> </nav> </form> <div class=md-search__output> <div class=md-search__scrollwrap tabindex=0 data-md-scrollfix> <div class=md-search-result data-md-component=search-result> <div class=md-search-result__meta> Initializing search </div> <ol class=md-search-result__list role=presentation></ol> </div> </div> </div> </div> </div> <div class=md-header__source> <a href="https://github.com/nlohmann/json" title="Go to repository" class="md-source" data-md-component="source"> <div class="md-source__icon md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </div> <div class=md-source__repository> nlohmann/json </div> </a> </div> </nav> </header> <div class=md-container data-md-component=container> <nav class=md-tabs aria-label=Tabs data-md-component=tabs> <div class=md-grid> <ul class=md-tabs__list> <li class=md-tabs__item> <a href=../.. class=md-tabs__link> Home </a> </li> <li class="md-tabs__item md-tabs__item--active"> <a href=../arbitrary_types/ class=md-tabs__link> Features </a> </li> <li class=md-tabs__item> <a href=../../integration/ class=md-tabs__link> Integration </a> </li> <li class=md-tabs__item> <a href=../../api/basic_json/ class=md-tabs__link> API Documentation </a> </li> <li class=md-tabs__item> <a href=../../community/ class=md-tabs__link> Community </a> </li> </ul> </div> </nav> <main class=md-main data-md-component=main> <div class="md-main__inner md-grid"> <div class="md-sidebar md-sidebar--primary" data-md-component=sidebar data-md-type=navigation> <div class=md-sidebar__scrollwrap> <div class=md-sidebar__inner> <nav class="md-nav md-nav--primary md-nav--lifted" aria-label=Navigation data-md-level=0> <label class=md-nav__title for=__drawer> <a href=../.. title="JSON for Modern C++" class="md-nav__button md-logo" aria-label="JSON for Modern C++" data-md-component=logo> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54"/></svg> </a> JSON for Modern C++ </label> <div class=md-nav__source> <a href="https://github.com/nlohmann/json" title="Go to repository" class="md-source" data-md-component="source"> <div class="md-source__icon md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </div> <div class=md-source__repository> nlohmann/json </div> </a> </div> <ul class=md-nav__list data-md-scrollfix> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_1> <div class="md-nav__link md-nav__container"> <a href=../.. class="md-nav__link "> <span class=md-ellipsis> Home </span> </a> <label class="md-nav__link " for=__nav_1 id=__nav_1_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_1_label aria-expanded=false> <label class=md-nav__title for=__nav_1> <span class="md-nav__icon md-icon"></span> Home </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../home/license/ class=md-nav__link> <span class=md-ellipsis> License </span> </a> </li> <li class=md-nav__item> <a href=../../home/faq/ class=md-nav__link> <span class=md-ellipsis> FAQ </span> </a> </li> <li class=md-nav__item> <a href=../../home/exceptions/ class=md-nav__link> <span class=md-ellipsis> Exceptions </span> </a> </li> <li class=md-nav__item> <a href=../../home/releases/ class=md-nav__link> <span class=md-ellipsis> Releases </span> </a> </li> <li class=md-nav__item> <a href=../../home/design_goals/ class=md-nav__link> <span class=md-ellipsis> Design goals </span> </a> </li> <li class=md-nav__item> <a href=../../home/architecture/ class=md-nav__link> <span class=md-ellipsis> Architecture </span> </a> </li> <li class=md-nav__item> <a href=../../home/customers/ class=md-nav__link> <span class=md-ellipsis> Customers </span> </a> </li> <li class=md-nav__item> <a href=../../home/sponsors/ class=md-nav__link> <span class=md-ellipsis> Sponsors </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--active md-nav__item--section md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2 checked> <label class=md-nav__link for=__nav_2 id=__nav_2_label tabindex> <span class=md-ellipsis> Features </span> <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_2_label aria-expanded=true> <label class=md-nav__title for=__nav_2> <span class="md-nav__icon md-icon"></span> Features </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../arbitrary_types/ class=md-nav__link> <span class=md-ellipsis> Arbitrary Type Conversions </span> </a> </li> <li class="md-nav__item md-nav__item--active md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_2 checked> <div class="md-nav__link md-nav__container"> <a href=./ class="md-nav__link md-nav__link--active"> <span class=md-ellipsis> Binary Formats </span> </a> <label class="md-nav__link md-nav__link--active" for=__nav_2_2 id=__nav_2_2_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_2_label aria-expanded=true> <label class=md-nav__title for=__nav_2_2> <span class="md-nav__icon md-icon"></span> Binary Formats </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=bjdata/ class=md-nav__link> <span class=md-ellipsis> BJData </span> </a> </li> <li class=md-nav__item> <a href=bson/ class=md-nav__link> <span class=md-ellipsis> BSON </span> </a> </li> <li class=md-nav__item> <a href=cbor/ class=md-nav__link> <span class=md-ellipsis> CBOR </span> </a> </li> <li class=md-nav__item> <a href=messagepack/ class=md-nav__link> <span class=md-ellipsis> MessagePack </span> </a> </li> <li class=md-nav__item> <a href=ubjson/ class=md-nav__link> <span class=md-ellipsis> UBJSON </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../binary_values/ class=md-nav__link> <span class=md-ellipsis> Binary Values </span> </a> </li> <li class=md-nav__item> <a href=../comments/ class=md-nav__link> <span class=md-ellipsis> Comments </span> </a> </li> <li class=md-nav__item> <a href=../trailing_commas/ class=md-nav__link> <span class=md-ellipsis> Trailing Commas </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_6> <div class="md-nav__link md-nav__container"> <a href=../element_access/ class="md-nav__link "> <span class=md-ellipsis> Element Access </span> </a> <label class="md-nav__link " for=__nav_2_6 id=__nav_2_6_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_6_label aria-expanded=false> <label class=md-nav__title for=__nav_2_6> <span class="md-nav__icon md-icon"></span> Element Access </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../element_access/unchecked_access/ class=md-nav__link> <span class=md-ellipsis> Unchecked access: operator[] </span> </a> </li> <li class=md-nav__item> <a href=../element_access/checked_access/ class=md-nav__link> <span class=md-ellipsis> Checked access: at </span> </a> </li> <li class=md-nav__item> <a href=../element_access/default_value/ class=md-nav__link> <span class=md-ellipsis> Access with default value: value </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../iterators/ class=md-nav__link> <span class=md-ellipsis> Iterators </span> </a> </li> <li class=md-nav__item> <a href=../json_pointer/ class=md-nav__link> <span class=md-ellipsis> JSON Pointer </span> </a> </li> <li class=md-nav__item> <a href=../json_patch/ class=md-nav__link> <span class=md-ellipsis> JSON Patch and Diff </span> </a> </li> <li class=md-nav__item> <a href=../merge_patch/ class=md-nav__link> <span class=md-ellipsis> JSON Merge Patch </span> </a> </li> <li class=md-nav__item> <a href=../modules/ class=md-nav__link> <span class=md-ellipsis> Modules </span> </a> </li> <li class=md-nav__item> <a href=../namespace/ class=md-nav__link> <span class=md-ellipsis> nlohmann Namespace </span> </a> </li> <li class=md-nav__item> <a href=../object_order/ class=md-nav__link> <span class=md-ellipsis> Object Order </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_14> <div class="md-nav__link md-nav__container"> <a href=../parsing/ class="md-nav__link "> <span class=md-ellipsis> Parsing </span> </a> <label class="md-nav__link " for=__nav_2_14 id=__nav_2_14_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_14_label aria-expanded=false> <label class=md-nav__title for=__nav_2_14> <span class="md-nav__icon md-icon"></span> Parsing </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../parsing/json_lines/ class=md-nav__link> <span class=md-ellipsis> JSON Lines </span> </a> </li> <li class=md-nav__item> <a href=../parsing/parse_exceptions/ class=md-nav__link> <span class=md-ellipsis> Parsing and Exceptions </span> </a> </li> <li class=md-nav__item> <a href=../parsing/parser_callbacks/ class=md-nav__link> <span class=md-ellipsis> Parser Callbacks </span> </a> </li> <li class=md-nav__item> <a href=../parsing/sax_interface/ class=md-nav__link> <span class=md-ellipsis> SAX Interface </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../assertions/ class=md-nav__link> <span class=md-ellipsis> Runtime Assertions </span> </a> </li> <li class=md-nav__item> <a href=../enum_conversion/ class=md-nav__link> <span class=md-ellipsis> Specializing enum conversion </span> </a> </li> <li class=md-nav__item> <a href=../macros/ class=md-nav__link> <span class=md-ellipsis> Supported Macros </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_18> <div class="md-nav__link md-nav__container"> <a href=../types/ class="md-nav__link "> <span class=md-ellipsis> Types </span> </a> <label class="md-nav__link " for=__nav_2_18 id=__nav_2_18_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_18_label aria-expanded=false> <label class=md-nav__title for=__nav_2_18> <span class="md-nav__icon md-icon"></span> Types </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../types/number_handling/ class=md-nav__link> <span class=md-ellipsis> Number Handling </span> </a> </li> </ul> </nav> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_3> <div class="md-nav__link md-nav__container"> <a href=../../integration/ class="md-nav__link "> <span class=md-ellipsis> Integration </span> </a> <label class="md-nav__link " for=__nav_3 id=__nav_3_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_3_label aria-expanded=false> <label class=md-nav__title for=__nav_3> <span class="md-nav__icon md-icon"></span> Integration </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../integration/migration_guide/ class=md-nav__link> <span class=md-ellipsis> Migration Guide </span> </a> </li> <li class=md-nav__item> <a href=../../integration/cmake/ class=md-nav__link> <span class=md-ellipsis> CMake </span> </a> </li> <li class=md-nav__item> <a href=../../integration/package_managers/ class=md-nav__link> <span class=md-ellipsis> Package Managers </span> </a> </li> <li class=md-nav__item> <a href=../../integration/pkg-config/ class=md-nav__link> <span class=md-ellipsis> Pkg-config </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4> <label class=md-nav__link for=__nav_4 id=__nav_4_label tabindex=0> <span class=md-ellipsis> API Documentation </span> <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_4_label aria-expanded=false> <label class=md-nav__title for=__nav_4> <span class="md-nav__icon md-icon"></span> API Documentation </label> <ul class=md-nav__list data-md-scrollfix> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_1> <div class="md-nav__link md-nav__container"> <a href=../../api/basic_json/ class="md-nav__link "> <span class=md-ellipsis> basic_json </span> </a> <label class="md-nav__link " for=__nav_4_1 id=__nav_4_1_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_1_label aria-expanded=false> <label class=md-nav__title for=__nav_4_1> <span class="md-nav__icon md-icon"></span> basic_json </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../api/basic_json/basic_json/ class=md-nav__link> <span class=md-ellipsis> (Constructor) </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/~basic_json/ class=md-nav__link> <span class=md-ellipsis> (Destructor) </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/accept/ class=md-nav__link> <span class=md-ellipsis> accept </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/array/ class=md-nav__link> <span class=md-ellipsis> array </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/array_t/ class=md-nav__link> <span class=md-ellipsis> array_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/at/ class=md-nav__link> <span class=md-ellipsis> at </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/back/ class=md-nav__link> <span class=md-ellipsis> back </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/begin/ class=md-nav__link> <span class=md-ellipsis> begin </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/binary/ class=md-nav__link> <span class=md-ellipsis> binary </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/binary_t/ class=md-nav__link> <span class=md-ellipsis> binary_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/boolean_t/ class=md-nav__link> <span class=md-ellipsis> boolean_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/cbegin/ class=md-nav__link> <span class=md-ellipsis> cbegin </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/cbor_tag_handler_t/ class=md-nav__link> <span class=md-ellipsis> cbor_tag_handler_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/cend/ class=md-nav__link> <span class=md-ellipsis> cend </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/clear/ class=md-nav__link> <span class=md-ellipsis> clear </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/contains/ class=md-nav__link> <span class=md-ellipsis> contains </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/count/ class=md-nav__link> <span class=md-ellipsis> count </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/crbegin/ class=md-nav__link> <span class=md-ellipsis> crbegin </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/crend/ class=md-nav__link> <span class=md-ellipsis> crend </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/default_object_comparator_t/ class=md-nav__link> <span class=md-ellipsis> default_object_comparator_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/diff/ class=md-nav__link> <span class=md-ellipsis> diff </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/dump/ class=md-nav__link> <span class=md-ellipsis> dump </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/emplace/ class=md-nav__link> <span class=md-ellipsis> emplace </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/emplace_back/ class=md-nav__link> <span class=md-ellipsis> emplace_back </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/empty/ class=md-nav__link> <span class=md-ellipsis> empty </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/end/ class=md-nav__link> <span class=md-ellipsis> end </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/end_pos/ class=md-nav__link> <span class=md-ellipsis> end_pos </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/erase/ class=md-nav__link> <span class=md-ellipsis> erase </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/error_handler_t/ class=md-nav__link> <span class=md-ellipsis> error_handler_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/exception/ class=md-nav__link> <span class=md-ellipsis> exception </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/find/ class=md-nav__link> <span class=md-ellipsis> find </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/flatten/ class=md-nav__link> <span class=md-ellipsis> flatten </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/from_bjdata/ class=md-nav__link> <span class=md-ellipsis> from_bjdata </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/from_bson/ class=md-nav__link> <span class=md-ellipsis> from_bson </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/from_cbor/ class=md-nav__link> <span class=md-ellipsis> from_cbor </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/from_msgpack/ class=md-nav__link> <span class=md-ellipsis> from_msgpack </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/from_ubjson/ class=md-nav__link> <span class=md-ellipsis> from_ubjson </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/front/ class=md-nav__link> <span class=md-ellipsis> front </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/get/ class=md-nav__link> <span class=md-ellipsis> get </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/get_allocator/ class=md-nav__link> <span class=md-ellipsis> get_allocator </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/get_binary/ class=md-nav__link> <span class=md-ellipsis> get_binary </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/get_ptr/ class=md-nav__link> <span class=md-ellipsis> get_ptr </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/get_ref/ class=md-nav__link> <span class=md-ellipsis> get_ref </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/get_to/ class=md-nav__link> <span class=md-ellipsis> get_to </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/std_hash/ class=md-nav__link> <span class=md-ellipsis> std::hash&lt;basic_json&gt; </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/input_format_t/ class=md-nav__link> <span class=md-ellipsis> input_format_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/insert/ class=md-nav__link> <span class=md-ellipsis> insert </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/invalid_iterator/ class=md-nav__link> <span class=md-ellipsis> invalid_iterator </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_array/ class=md-nav__link> <span class=md-ellipsis> is_array </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_binary/ class=md-nav__link> <span class=md-ellipsis> is_binary </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_boolean/ class=md-nav__link> <span class=md-ellipsis> is_boolean </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_discarded/ class=md-nav__link> <span class=md-ellipsis> is_discarded </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_null/ class=md-nav__link> <span class=md-ellipsis> is_null </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_number/ class=md-nav__link> <span class=md-ellipsis> is_number </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_number_float/ class=md-nav__link> <span class=md-ellipsis> is_number_float </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_number_integer/ class=md-nav__link> <span class=md-ellipsis> is_number_integer </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_number_unsigned/ class=md-nav__link> <span class=md-ellipsis> is_number_unsigned </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_object/ class=md-nav__link> <span class=md-ellipsis> is_object </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_primitive/ class=md-nav__link> <span class=md-ellipsis> is_primitive </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_string/ class=md-nav__link> <span class=md-ellipsis> is_string </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_structured/ class=md-nav__link> <span class=md-ellipsis> is_structured </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/items/ class=md-nav__link> <span class=md-ellipsis> items </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/json_base_class_t/ class=md-nav__link> <span class=md-ellipsis> json_base_class_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/json_serializer/ class=md-nav__link> <span class=md-ellipsis> json_serializer </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/max_size/ class=md-nav__link> <span class=md-ellipsis> max_size </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/meta/ class=md-nav__link> <span class=md-ellipsis> meta </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/merge_patch/ class=md-nav__link> <span class=md-ellipsis> merge_patch </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/number_float_t/ class=md-nav__link> <span class=md-ellipsis> number_float_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/number_integer_t/ class=md-nav__link> <span class=md-ellipsis> number_integer_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/number_unsigned_t/ class=md-nav__link> <span class=md-ellipsis> number_unsigned_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/object/ class=md-nav__link> <span class=md-ellipsis> object </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/object_comparator_t/ class=md-nav__link> <span class=md-ellipsis> object_comparator_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/object_t/ class=md-nav__link> <span class=md-ellipsis> object_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/operator_ValueType/ class=md-nav__link> <span class=md-ellipsis> operator ValueType </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/operator_value_t/ class=md-nav__link> <span class=md-ellipsis> operator value_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/operator%5B%5D/ class=md-nav__link> <span class=md-ellipsis> operator[] </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/operator%3D/ class=md-nav__link> <span class=md-ellipsis> operator= </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/operator%2B%3D/ class=md-nav__link> <span class=md-ellipsis> operator+= </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/operator_eq/ class=md-nav__link> <span class=md-ellipsis> operator== </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/operator_ne/ class=md-nav__link> <span class=md-ellipsis> operator!= </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/operator_lt/ class=md-nav__link> <span class=md-ellipsis> operator< </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/operator_gt/ class=md-nav__link> <span class=md-ellipsis> operator> </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/operator_le/ class=md-nav__link> <span class=md-ellipsis> operator<= </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/operator_ge/ class=md-nav__link> <span class=md-ellipsis> operator>= </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/operator_spaceship/ class=md-nav__link> <span class=md-ellipsis> operator<=> </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/out_of_range/ class=md-nav__link> <span class=md-ellipsis> out_of_range </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/other_error/ class=md-nav__link> <span class=md-ellipsis> other_error </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/parse/ class=md-nav__link> <span class=md-ellipsis> parse </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/parse_error/ class=md-nav__link> <span class=md-ellipsis> parse_error </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/parse_event_t/ class=md-nav__link> <span class=md-ellipsis> parse_event_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/parser_callback_t/ class=md-nav__link> <span class=md-ellipsis> parser_callback_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/patch/ class=md-nav__link> <span class=md-ellipsis> patch </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/patch_inplace/ class=md-nav__link> <span class=md-ellipsis> patch_inplace </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/push_back/ class=md-nav__link> <span class=md-ellipsis> push_back </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/rbegin/ class=md-nav__link> <span class=md-ellipsis> rbegin </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/rend/ class=md-nav__link> <span class=md-ellipsis> rend </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/sax_parse/ class=md-nav__link> <span class=md-ellipsis> sax_parse </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/size/ class=md-nav__link> <span class=md-ellipsis> size </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/start_pos/ class=md-nav__link> <span class=md-ellipsis> start_pos </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/string_t/ class=md-nav__link> <span class=md-ellipsis> string_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/swap/ class=md-nav__link> <span class=md-ellipsis> swap </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/std_swap/ class=md-nav__link> <span class=md-ellipsis> std::swap&lt;basic_json&gt; </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/to_bjdata/ class=md-nav__link> <span class=md-ellipsis> to_bjdata </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/to_bson/ class=md-nav__link> <span class=md-ellipsis> to_bson </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/to_cbor/ class=md-nav__link> <span class=md-ellipsis> to_cbor </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/to_msgpack/ class=md-nav__link> <span class=md-ellipsis> to_msgpack </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/to_string/ class=md-nav__link> <span class=md-ellipsis> to_string </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/to_ubjson/ class=md-nav__link> <span class=md-ellipsis> to_ubjson </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/type/ class=md-nav__link> <span class=md-ellipsis> type </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/type_error/ class=md-nav__link> <span class=md-ellipsis> type_error </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/type_name/ class=md-nav__link> <span class=md-ellipsis> type_name </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/unflatten/ class=md-nav__link> <span class=md-ellipsis> unflatten </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/update/ class=md-nav__link> <span class=md-ellipsis> update </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/value/ class=md-nav__link> <span class=md-ellipsis> value </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/value_t/ class=md-nav__link> <span class=md-ellipsis> value_t </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_2> <div class="md-nav__link md-nav__container"> <a href=../../api/byte_container_with_subtype/ class="md-nav__link "> <span class=md-ellipsis> byte_container_with_subtype </span> </a> <label class="md-nav__link " for=__nav_4_2 id=__nav_4_2_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_2_label aria-expanded=false> <label class=md-nav__title for=__nav_4_2> <span class="md-nav__icon md-icon"></span> byte_container_with_subtype </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../api/byte_container_with_subtype/byte_container_with_subtype/ class=md-nav__link> <span class=md-ellipsis> (constructor) </span> </a> </li> <li class=md-nav__item> <a href=../../api/byte_container_with_subtype/clear_subtype/ class=md-nav__link> <span class=md-ellipsis> clear_subtype </span> </a> </li> <li class=md-nav__item> <a href=../../api/byte_container_with_subtype/has_subtype/ class=md-nav__link> <span class=md-ellipsis> has_subtype </span> </a> </li> <li class=md-nav__item> <a href=../../api/byte_container_with_subtype/set_subtype/ class=md-nav__link> <span class=md-ellipsis> set_subtype </span> </a> </li> <li class=md-nav__item> <a href=../../api/byte_container_with_subtype/subtype/ class=md-nav__link> <span class=md-ellipsis> subtype </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_3> <div class="md-nav__link md-nav__container"> <a href=../../api/adl_serializer/ class="md-nav__link "> <span class=md-ellipsis> adl_serializer </span> </a> <label class="md-nav__link " for=__nav_4_3 id=__nav_4_3_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_3_label aria-expanded=false> <label class=md-nav__title for=__nav_4_3> <span class="md-nav__icon md-icon"></span> adl_serializer </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../api/adl_serializer/from_json/ class=md-nav__link> <span class=md-ellipsis> from_json </span> </a> </li> <li class=md-nav__item> <a href=../../api/adl_serializer/to_json/ class=md-nav__link> <span class=md-ellipsis> to_json </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../api/json/ class=md-nav__link> <span class=md-ellipsis> json </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_5> <div class="md-nav__link md-nav__container"> <a href=../../api/json_pointer/ class="md-nav__link "> <span class=md-ellipsis> json_pointer </span> </a> <label class="md-nav__link " for=__nav_4_5 id=__nav_4_5_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_5_label aria-expanded=false> <label class=md-nav__title for=__nav_4_5> <span class="md-nav__icon md-icon"></span> json_pointer </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../api/json_pointer/json_pointer/ class=md-nav__link> <span class=md-ellipsis> (Constructor) </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/back/ class=md-nav__link> <span class=md-ellipsis> back </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/empty/ class=md-nav__link> <span class=md-ellipsis> empty </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/front/ class=md-nav__link> <span class=md-ellipsis> front </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/operator_string_t/ class=md-nav__link> <span class=md-ellipsis> operator string_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/operator_eq/ class=md-nav__link> <span class=md-ellipsis> operator== </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/operator_ne/ class=md-nav__link> <span class=md-ellipsis> operator!= </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/operator_slash/ class=md-nav__link> <span class=md-ellipsis> operator/ </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/operator_slasheq/ class=md-nav__link> <span class=md-ellipsis> operator/= </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/parent_pointer/ class=md-nav__link> <span class=md-ellipsis> parent_pointer </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/pop_back/ class=md-nav__link> <span class=md-ellipsis> pop_back </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/pop_front/ class=md-nav__link> <span class=md-ellipsis> pop_front </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/push_back/ class=md-nav__link> <span class=md-ellipsis> push_back </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/push_front/ class=md-nav__link> <span class=md-ellipsis> push_front </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/string_t/ class=md-nav__link> <span class=md-ellipsis> string_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/to_string/ class=md-nav__link> <span class=md-ellipsis> to_string </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_6> <div class="md-nav__link md-nav__container"> <a href=../../api/json_sax/ class="md-nav__link "> <span class=md-ellipsis> json_sax </span> </a> <label class="md-nav__link " for=__nav_4_6 id=__nav_4_6_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_6_label aria-expanded=false> <label class=md-nav__title for=__nav_4_6> <span class="md-nav__icon md-icon"></span> json_sax </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../api/json_sax/binary/ class=md-nav__link> <span class=md-ellipsis> binary </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_sax/boolean/ class=md-nav__link> <span class=md-ellipsis> boolean </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_sax/end_array/ class=md-nav__link> <span class=md-ellipsis> end_array </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_sax/end_object/ class=md-nav__link> <span class=md-ellipsis> end_object </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_sax/key/ class=md-nav__link> <span class=md-ellipsis> key </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_sax/null/ class=md-nav__link> <span class=md-ellipsis> null </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_sax/number_float/ class=md-nav__link> <span class=md-ellipsis> number_float </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_sax/number_integer/ class=md-nav__link> <span class=md-ellipsis> number_integer </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_sax/number_unsigned/ class=md-nav__link> <span class=md-ellipsis> number_unsigned </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_sax/parse_error/ class=md-nav__link> <span class=md-ellipsis> parse_error </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_sax/start_array/ class=md-nav__link> <span class=md-ellipsis> start_array </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_sax/start_object/ class=md-nav__link> <span class=md-ellipsis> start_object </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_sax/string/ class=md-nav__link> <span class=md-ellipsis> string </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../api/operator_ltlt/ class=md-nav__link> <span class=md-ellipsis> operator<<(basic_json), operator<<(json_pointer) </span> </a> </li> <li class=md-nav__item> <a href=../../api/operator_gtgt/ class=md-nav__link> <span class=md-ellipsis> operator>>(basic_json) </span> </a> </li> <li class=md-nav__item> <a href=../../api/operator_literal_json/ class=md-nav__link> <span class=md-ellipsis> operator""_json </span> </a> </li> <li class=md-nav__item> <a href=../../api/operator_literal_json_pointer/ class=md-nav__link> <span class=md-ellipsis> operator""_json_pointer </span> </a> </li> <li class=md-nav__item> <a href=../../api/ordered_json/ class=md-nav__link> <span class=md-ellipsis> ordered_json </span> </a> </li> <li class=md-nav__item> <a href=../../api/ordered_map/ class=md-nav__link> <span class=md-ellipsis> ordered_map </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_13> <div class="md-nav__link md-nav__container"> <a href=../../api/macros/ class="md-nav__link "> <span class=md-ellipsis> macros </span> </a> <label class="md-nav__link " for=__nav_4_13 id=__nav_4_13_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_13_label aria-expanded=false> <label class=md-nav__title for=__nav_4_13> <span class="md-nav__icon md-icon"></span> macros </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../api/macros/json_assert/ class=md-nav__link> <span class=md-ellipsis> JSON_ASSERT </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_brace_init_copy_semantics/ class=md-nav__link> <span class=md-ellipsis> JSON_BRACE_INIT_COPY_SEMANTICS </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_throw_user/ class=md-nav__link> <span class=md-ellipsis> JSON_CATCH_USER, JSON_THROW_USER, JSON_TRY_USER </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_diagnostics/ class=md-nav__link> <span class=md-ellipsis> JSON_DIAGNOSTICS </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_diagnostic_positions/ class=md-nav__link> <span class=md-ellipsis> JSON_DIAGNOSTIC_POSITIONS </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_disable_enum_serialization/ class=md-nav__link> <span class=md-ellipsis> JSON_DISABLE_ENUM_SERIALIZATION </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_has_cpp_11/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_CPP_11, JSON_HAS_CPP_14, JSON_HAS_CPP_17, JSON_HAS_CPP_20 </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_has_filesystem/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_EXPERIMENTAL_FILESYSTEM, JSON_HAS_FILESYSTEM </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_has_ranges/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_RANGES </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_has_static_rtti/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_STATIC_RTTI </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_has_three_way_comparison/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_THREE_WAY_COMPARISON </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_noexception/ class=md-nav__link> <span class=md-ellipsis> JSON_NOEXCEPTION </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_no_io/ class=md-nav__link> <span class=md-ellipsis> JSON_NO_IO </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_skip_library_version_check/ class=md-nav__link> <span class=md-ellipsis> JSON_SKIP_LIBRARY_VERSION_CHECK </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_skip_unsupported_compiler_check/ class=md-nav__link> <span class=md-ellipsis> JSON_SKIP_UNSUPPORTED_COMPILER_CHECK </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_use_global_udls/ class=md-nav__link> <span class=md-ellipsis> JSON_USE_GLOBAL_UDLS </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_use_implicit_conversions/ class=md-nav__link> <span class=md-ellipsis> JSON_USE_IMPLICIT_CONVERSIONS </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_use_legacy_discarded_value_comparison/ class=md-nav__link> <span class=md-ellipsis> JSON_USE_LEGACY_DISCARDED_VALUE_COMPARISON </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/nlohmann_define_derived_type/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_ONLY_SERIALIZE, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/nlohmann_define_type_intrusive/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_TYPE_INTRUSIVE, NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_TYPE_INTRUSIVE_ONLY_SERIALIZE </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/nlohmann_define_type_non_intrusive/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/nlohmann_define_type_with_names/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_TYPE_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/nlohmann_json_namespace/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_NAMESPACE </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/nlohmann_json_namespace_begin/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_NAMESPACE_BEGIN, NLOHMANN_JSON_NAMESPACE_END </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/nlohmann_json_namespace_no_version/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_NAMESPACE_NO_VERSION </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/nlohmann_json_serialize_enum/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_SERIALIZE_ENUM </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/nlohmann_json_serialize_enum_strict/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_SERIALIZE_ENUM_STRICT </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/nlohmann_json_version_major/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_VERSION_MAJOR, NLOHMANN_JSON_VERSION_MINOR, NLOHMANN_JSON_VERSION_PATCH </span> </a> </li> </ul> </nav> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_5> <div class="md-nav__link md-nav__container"> <a href=../../community/ class="md-nav__link "> <span class=md-ellipsis> Community </span> </a> <label class="md-nav__link " for=__nav_5 id=__nav_5_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_5_label aria-expanded=false> <label class=md-nav__title for=__nav_5> <span class="md-nav__icon md-icon"></span> Community </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../community/code_of_conduct/ class=md-nav__link> <span class=md-ellipsis> Code of Conduct </span> </a> </li> <li class=md-nav__item> <a href=../../community/contribution_guidelines/ class=md-nav__link> <span class=md-ellipsis> Contribution Guidelines </span> </a> </li> <li class=md-nav__item> <a href=../../community/quality_assurance/ class=md-nav__link> <span class=md-ellipsis> Quality assurance </span> </a> </li> <li class=md-nav__item> <a href=../../community/governance/ class=md-nav__link> <span class=md-ellipsis> Governance </span> </a> </li> <li class=md-nav__item> <a href=../../community/security_policy/ class=md-nav__link> <span class=md-ellipsis> Security Policy </span> </a> </li> </ul> </nav> </li> </ul> </nav> </div> </div> </div> <div class="md-sidebar md-sidebar--secondary" data-md-component=sidebar data-md-type=toc> <div class=md-sidebar__scrollwrap> <div class=md-sidebar__inner> <nav class="md-nav md-nav--secondary" aria-label="Table of contents"> <label class=md-nav__title for=__toc> <span class="md-nav__icon md-icon"></span> Table of contents </label> <ul class=md-nav__list data-md-component=toc data-md-scrollfix> <li class=md-nav__item> <a href=#comparison class=md-nav__link> <span class=md-ellipsis> Comparison </span> </a> <nav class=md-nav aria-label=Comparison> <ul class=md-nav__list> <li class=md-nav__item> <a href=#completeness class=md-nav__link> <span class=md-ellipsis> Completeness </span> </a> </li> <li class=md-nav__item> <a href=#binary-values class=md-nav__link> <span class=md-ellipsis> Binary values </span> </a> </li> <li class=md-nav__item> <a href=#sizes class=md-nav__link> <span class=md-ellipsis> Sizes </span> </a> </li> </ul> </nav> </li> </ul> </nav> </div> </div> </div> <div class=md-content data-md-component=content> <article class="md-content__inner md-typeset"> <a href="https://github.com/nlohmann/json/edit/develop/docs/mkdocs/docs/features/binary_formats/index.md" title="Edit this page" class="md-content__button md-icon" rel="edit"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M10 20H6V4h7v5h5v3.1l2-2V8l-6-6H6c-1.1 0-2 .9-2 2v16c0 1.1.9 2 2 2h4zm10.2-7c.1 0 .3.1.4.2l1.3 1.3c.2.2.2.6 0 .8l-1 1-2.1-2.1 1-1c.1-.1.2-.2.4-.2m0 3.9L14.1 23H12v-2.1l6.1-6.1z"/></svg> </a> <a href="https://github.com/nlohmann/json/raw/develop/docs/mkdocs/docs/features/binary_formats/index.md" title="View source of this page" class="md-content__button md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M17 18c.56 0 1 .44 1 1s-.44 1-1 1-1-.44-1-1 .44-1 1-1m0-3c-2.73 0-5.06 1.66-6 4 .94 2.34 3.27 4 6 4s5.06-1.66 6-4c-.94-2.34-3.27-4-6-4m0 6.5a2.5 2.5 0 0 1-2.5-2.5 2.5 2.5 0 0 1 2.5-2.5 2.5 2.5 0 0 1 2.5 2.5 2.5 2.5 0 0 1-2.5 2.5M9.27 20H6V4h7v5h5v4.07c.7.08 1.36.25 2 .49V8l-6-6H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h4.5a8.2 8.2 0 0 1-1.23-2"/></svg> </a> <h1 id=binary-formats>Binary Formats<a class=headerlink href=#binary-formats title="Permanent link">&para;</a></h1> <p>Though <abbr title="JavaScript Object Notation">JSON</abbr> is a ubiquitous data format, it is not a very compact format suitable for data exchange, for instance, over a network. Hence, the library supports</p> <ul> <li><a href=bjdata/ ><abbr title="Binary JData">BJData</abbr></a> (Binary JData),</li> <li><a href=bson/ ><abbr title="Binary JSON">BSON</abbr></a> (Binary <abbr title="JavaScript Object Notation">JSON</abbr>),</li> <li><a href=cbor/ ><abbr title="Concise Binary Object Representation">CBOR</abbr></a> (Concise Binary Object Representation),</li> <li><a href=messagepack/ >MessagePack</a>, and</li> <li><a href=ubjson/ ><abbr title="Universal Binary JSON">UBJSON</abbr></a> (Universal Binary <abbr title="JavaScript Object Notation">JSON</abbr>)</li> </ul> <p>to efficiently encode <abbr title="JavaScript Object Notation">JSON</abbr> values to byte vectors and to decode such vectors.</p> <h2 id=comparison>Comparison<a class=headerlink href=#comparison title="Permanent link">&para;</a></h2> <h3 id=completeness>Completeness<a class=headerlink href=#completeness title="Permanent link">&para;</a></h3> <table> <thead> <tr> <th>Format</th> <th>Serialization</th> <th>Deserialization</th> </tr> </thead> <tbody> <tr> <td><abbr title="Binary JData">BJData</abbr></td> <td>complete</td> <td>complete</td> </tr> <tr> <td><abbr title="Binary JSON">BSON</abbr></td> <td>incomplete: top-level value must be an object</td> <td>incomplete, but all <abbr title="JavaScript Object Notation">JSON</abbr> types are supported</td> </tr> <tr> <td><abbr title="Concise Binary Object Representation">CBOR</abbr></td> <td>complete</td> <td>incomplete, but all <abbr title="JavaScript Object Notation">JSON</abbr> types are supported</td> </tr> <tr> <td>MessagePack</td> <td>complete</td> <td>complete</td> </tr> <tr> <td><abbr title="Universal Binary JSON">UBJSON</abbr></td> <td>complete</td> <td>complete</td> </tr> </tbody> </table> <h3 id=binary-values>Binary values<a class=headerlink href=#binary-values title="Permanent link">&para;</a></h3> <table> <thead> <tr> <th>Format</th> <th>Binary values</th> <th>Binary subtypes</th> </tr> </thead> <tbody> <tr> <td><abbr title="Binary JData">BJData</abbr></td> <td>not supported</td> <td>not supported</td> </tr> <tr> <td><abbr title="Binary JSON">BSON</abbr></td> <td>supported</td> <td>supported</td> </tr> <tr> <td><abbr title="Concise Binary Object Representation">CBOR</abbr></td> <td>supported</td> <td>supported</td> </tr> <tr> <td>MessagePack</td> <td>supported</td> <td>supported</td> </tr> <tr> <td><abbr title="Universal Binary JSON">UBJSON</abbr></td> <td>not supported</td> <td>not supported</td> </tr> </tbody> </table> <p>See <a href=../binary_values/ >binary values</a> for more information.</p> <h3 id=sizes>Sizes<a class=headerlink href=#sizes title="Permanent link">&para;</a></h3> <table> <thead> <tr> <th>Format</th> <th>canada.json</th> <th>twitter.json</th> <th>citm_catalog.json</th> <th>jeopardy.json</th> </tr> </thead> <tbody> <tr> <td><abbr title="Binary JData">BJData</abbr></td> <td>53.2 %</td> <td>91.1 %</td> <td>78.1 %</td> <td>96.6 %</td> </tr> <tr> <td><abbr title="Binary JData">BJData</abbr> (size)</td> <td>58.6 %</td> <td>92.1 %</td> <td>86.7 %</td> <td>97.4 %</td> </tr> <tr> <td><abbr title="Binary JData">BJData</abbr> (size+tyoe)</td> <td>58.6 %</td> <td>92.1 %</td> <td>86.5 %</td> <td>97.4 %</td> </tr> <tr> <td><abbr title="Binary JSON">BSON</abbr></td> <td>85.8 %</td> <td>95.2 %</td> <td>95.8 %</td> <td>106.7 %</td> </tr> <tr> <td><abbr title="Concise Binary Object Representation">CBOR</abbr></td> <td>50.5 %</td> <td>86.3 %</td> <td>68.4 %</td> <td>88.0 %</td> </tr> <tr> <td>MessagePack</td> <td>50.5 %</td> <td>86.0 %</td> <td>68.5 %</td> <td>87.9 %</td> </tr> <tr> <td><abbr title="Universal Binary JSON">UBJSON</abbr></td> <td>53.2 %</td> <td>91.3 %</td> <td>78.2 %</td> <td>96.6 %</td> </tr> <tr> <td><abbr title="Universal Binary JSON">UBJSON</abbr> (size)</td> <td>58.6 %</td> <td>92.3 %</td> <td>86.8 %</td> <td>97.4 %</td> </tr> <tr> <td><abbr title="Universal Binary JSON">UBJSON</abbr> (size+type)</td> <td>55.9 %</td> <td>92.3 %</td> <td>85.0 %</td> <td>95.0 %</td> </tr> </tbody> </table> <p>Sizes compared to minified <abbr title="JavaScript Object Notation">JSON</abbr> value.</p> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 23, 2026 11:16:18 UTC">June 23, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
+<!doctype html><html lang=en class=no-js> <head><meta charset=utf-8><meta name=viewport content="width=device-width,initial-scale=1"><meta name=author content="Niels Lohmann"><link href="https://json.nlohmann.me/features/binary_formats/" rel="canonical"><link href=../arbitrary_types/ rel=prev><link href=bjdata/ rel=next><link rel=icon href=../../assets/images/favicon.png><meta name=generator content="mkdocs-1.6.1, mkdocs-material-9.7.6"><title>Binary Formats - JSON for Modern C++</title><link rel=stylesheet href=../../assets/stylesheets/main.484c7ddc.min.css><link rel=stylesheet href=../../assets/stylesheets/palette.ab4e12ef.min.css><link rel="stylesheet" href="../../assets/external/fonts.googleapis.com/css.61a430c9.css"><style>:root{--md-text-font:"Roboto";--md-code-font:"JetBrains Mono"}</style><link rel=stylesheet href=../../css/custom.css><script>__md_scope=new URL("../..",location),__md_hash=e=>[...e].reduce(((e,_)=>(e<<5)-e+_.charCodeAt(0)),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script></head> <body dir=ltr data-md-color-scheme=default data-md-color-primary=indigo data-md-color-accent=indigo> <input class=md-toggle data-md-toggle=drawer type=checkbox id=__drawer autocomplete=off> <input class=md-toggle data-md-toggle=search type=checkbox id=__search autocomplete=off> <label class=md-overlay for=__drawer></label> <div data-md-component=skip> <a href=#binary-formats class=md-skip> Skip to content </a> </div> <div data-md-component=announce> </div> <header class=md-header data-md-component=header> <nav class="md-header__inner md-grid" aria-label=Header> <a href=../.. title="JSON for Modern C++" class="md-header__button md-logo" aria-label="JSON for Modern C++" data-md-component=logo> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54"/></svg> </a> <label class="md-header__button md-icon" for=__drawer> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M3 6h18v2H3zm0 5h18v2H3zm0 5h18v2H3z"/></svg> </label> <div class=md-header__title data-md-component=header-title> <div class=md-header__ellipsis> <div class=md-header__topic> <span class=md-ellipsis> JSON for Modern C++ </span> </div> <div class=md-header__topic data-md-component=header-topic> <span class=md-ellipsis> Binary Formats </span> </div> </div> </div> <form class=md-header__option data-md-component=palette> <input class=md-option data-md-color-media="(prefers-color-scheme: light)" data-md-color-scheme=default data-md-color-primary=indigo data-md-color-accent=indigo aria-label="Switch to dark mode" type=radio name=__palette id=__palette_0> <label class="md-header__button md-icon" title="Switch to dark mode" for=__palette_1 hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a4 4 0 0 0-4 4 4 4 0 0 0 4 4 4 4 0 0 0 4-4 4 4 0 0 0-4-4m0 10a6 6 0 0 1-6-6 6 6 0 0 1 6-6 6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12z"/></svg> </label> <input class=md-option data-md-color-media="(prefers-color-scheme: dark)" data-md-color-scheme=slate data-md-color-primary=indigo data-md-color-accent=indigo aria-label="Switch to light mode" type=radio name=__palette id=__palette_1> <label class="md-header__button md-icon" title="Switch to light mode" for=__palette_0 hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 18c-.89 0-1.74-.2-2.5-.55C11.56 16.5 13 14.42 13 12s-1.44-4.5-3.5-5.45C10.26 6.2 11.11 6 12 6a6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12z"/></svg> </label> </form> <script>var palette=__md_get("__palette");if(palette&&palette.color){if("(prefers-color-scheme)"===palette.color.media){var media=matchMedia("(prefers-color-scheme: light)"),input=document.querySelector(media.matches?"[data-md-color-media='(prefers-color-scheme: light)']":"[data-md-color-media='(prefers-color-scheme: dark)']");palette.color.media=input.getAttribute("data-md-color-media"),palette.color.scheme=input.getAttribute("data-md-color-scheme"),palette.color.primary=input.getAttribute("data-md-color-primary"),palette.color.accent=input.getAttribute("data-md-color-accent")}for(var[key,value]of Object.entries(palette.color))document.body.setAttribute("data-md-color-"+key,value)}</script> <label class="md-header__button md-icon" for=__search> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg> </label> <div class=md-search data-md-component=search role=dialog> <label class=md-search__overlay for=__search></label> <div class=md-search__inner role=search> <form class=md-search__form name=search> <input type=text class=md-search__input name=query aria-label=Search placeholder=Search autocapitalize=off autocorrect=off autocomplete=off spellcheck=false data-md-component=search-query required> <label class="md-search__icon md-icon" for=__search> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11z"/></svg> </label> <nav class=md-search__options aria-label=Search> <button type=reset class="md-search__icon md-icon" title=Clear aria-label=Clear tabindex=-1> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z"/></svg> </button> </nav> </form> <div class=md-search__output> <div class=md-search__scrollwrap tabindex=0 data-md-scrollfix> <div class=md-search-result data-md-component=search-result> <div class=md-search-result__meta> Initializing search </div> <ol class=md-search-result__list role=presentation></ol> </div> </div> </div> </div> </div> <div class=md-header__source> <a href="https://github.com/nlohmann/json" title="Go to repository" class="md-source" data-md-component="source"> <div class="md-source__icon md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </div> <div class=md-source__repository> nlohmann/json </div> </a> </div> </nav> </header> <div class=md-container data-md-component=container> <nav class=md-tabs aria-label=Tabs data-md-component=tabs> <div class=md-grid> <ul class=md-tabs__list> <li class=md-tabs__item> <a href=../.. class=md-tabs__link> Home </a> </li> <li class="md-tabs__item md-tabs__item--active"> <a href=../arbitrary_types/ class=md-tabs__link> Features </a> </li> <li class=md-tabs__item> <a href=../../integration/ class=md-tabs__link> Integration </a> </li> <li class=md-tabs__item> <a href=../../api/basic_json/ class=md-tabs__link> API Documentation </a> </li> <li class=md-tabs__item> <a href=../../community/ class=md-tabs__link> Community </a> </li> </ul> </div> </nav> <main class=md-main data-md-component=main> <div class="md-main__inner md-grid"> <div class="md-sidebar md-sidebar--primary" data-md-component=sidebar data-md-type=navigation> <div class=md-sidebar__scrollwrap> <div class=md-sidebar__inner> <nav class="md-nav md-nav--primary md-nav--lifted" aria-label=Navigation data-md-level=0> <label class=md-nav__title for=__drawer> <a href=../.. title="JSON for Modern C++" class="md-nav__button md-logo" aria-label="JSON for Modern C++" data-md-component=logo> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54"/></svg> </a> JSON for Modern C++ </label> <div class=md-nav__source> <a href="https://github.com/nlohmann/json" title="Go to repository" class="md-source" data-md-component="source"> <div class="md-source__icon md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </div> <div class=md-source__repository> nlohmann/json </div> </a> </div> <ul class=md-nav__list data-md-scrollfix> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_1> <div class="md-nav__link md-nav__container"> <a href=../.. class="md-nav__link "> <span class=md-ellipsis> Home </span> </a> <label class="md-nav__link " for=__nav_1 id=__nav_1_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_1_label aria-expanded=false> <label class=md-nav__title for=__nav_1> <span class="md-nav__icon md-icon"></span> Home </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../home/license/ class=md-nav__link> <span class=md-ellipsis> License </span> </a> </li> <li class=md-nav__item> <a href=../../home/faq/ class=md-nav__link> <span class=md-ellipsis> FAQ </span> </a> </li> <li class=md-nav__item> <a href=../../home/exceptions/ class=md-nav__link> <span class=md-ellipsis> Exceptions </span> </a> </li> <li class=md-nav__item> <a href=../../home/releases/ class=md-nav__link> <span class=md-ellipsis> Releases </span> </a> </li> <li class=md-nav__item> <a href=../../home/design_goals/ class=md-nav__link> <span class=md-ellipsis> Design goals </span> </a> </li> <li class=md-nav__item> <a href=../../home/architecture/ class=md-nav__link> <span class=md-ellipsis> Architecture </span> </a> </li> <li class=md-nav__item> <a href=../../home/customers/ class=md-nav__link> <span class=md-ellipsis> Customers </span> </a> </li> <li class=md-nav__item> <a href=../../home/sponsors/ class=md-nav__link> <span class=md-ellipsis> Sponsors </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--active md-nav__item--section md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2 checked> <label class=md-nav__link for=__nav_2 id=__nav_2_label tabindex> <span class=md-ellipsis> Features </span> <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_2_label aria-expanded=true> <label class=md-nav__title for=__nav_2> <span class="md-nav__icon md-icon"></span> Features </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../arbitrary_types/ class=md-nav__link> <span class=md-ellipsis> Arbitrary Type Conversions </span> </a> </li> <li class="md-nav__item md-nav__item--active md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_2 checked> <div class="md-nav__link md-nav__container"> <a href=./ class="md-nav__link md-nav__link--active"> <span class=md-ellipsis> Binary Formats </span> </a> <label class="md-nav__link md-nav__link--active" for=__nav_2_2 id=__nav_2_2_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_2_label aria-expanded=true> <label class=md-nav__title for=__nav_2_2> <span class="md-nav__icon md-icon"></span> Binary Formats </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=bjdata/ class=md-nav__link> <span class=md-ellipsis> BJData </span> </a> </li> <li class=md-nav__item> <a href=bson/ class=md-nav__link> <span class=md-ellipsis> BSON </span> </a> </li> <li class=md-nav__item> <a href=cbor/ class=md-nav__link> <span class=md-ellipsis> CBOR </span> </a> </li> <li class=md-nav__item> <a href=messagepack/ class=md-nav__link> <span class=md-ellipsis> MessagePack </span> </a> </li> <li class=md-nav__item> <a href=ubjson/ class=md-nav__link> <span class=md-ellipsis> UBJSON </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../binary_values/ class=md-nav__link> <span class=md-ellipsis> Binary Values </span> </a> </li> <li class=md-nav__item> <a href=../comments/ class=md-nav__link> <span class=md-ellipsis> Comments </span> </a> </li> <li class=md-nav__item> <a href=../trailing_commas/ class=md-nav__link> <span class=md-ellipsis> Trailing Commas </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_6> <div class="md-nav__link md-nav__container"> <a href=../element_access/ class="md-nav__link "> <span class=md-ellipsis> Element Access </span> </a> <label class="md-nav__link " for=__nav_2_6 id=__nav_2_6_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_6_label aria-expanded=false> <label class=md-nav__title for=__nav_2_6> <span class="md-nav__icon md-icon"></span> Element Access </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../element_access/unchecked_access/ class=md-nav__link> <span class=md-ellipsis> Unchecked access: operator[] </span> </a> </li> <li class=md-nav__item> <a href=../element_access/checked_access/ class=md-nav__link> <span class=md-ellipsis> Checked access: at </span> </a> </li> <li class=md-nav__item> <a href=../element_access/default_value/ class=md-nav__link> <span class=md-ellipsis> Access with default value: value </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../iterators/ class=md-nav__link> <span class=md-ellipsis> Iterators </span> </a> </li> <li class=md-nav__item> <a href=../json_pointer/ class=md-nav__link> <span class=md-ellipsis> JSON Pointer </span> </a> </li> <li class=md-nav__item> <a href=../json_patch/ class=md-nav__link> <span class=md-ellipsis> JSON Patch and Diff </span> </a> </li> <li class=md-nav__item> <a href=../merge_patch/ class=md-nav__link> <span class=md-ellipsis> JSON Merge Patch </span> </a> </li> <li class=md-nav__item> <a href=../modules/ class=md-nav__link> <span class=md-ellipsis> Modules </span> </a> </li> <li class=md-nav__item> <a href=../namespace/ class=md-nav__link> <span class=md-ellipsis> nlohmann Namespace </span> </a> </li> <li class=md-nav__item> <a href=../object_order/ class=md-nav__link> <span class=md-ellipsis> Object Order </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_14> <div class="md-nav__link md-nav__container"> <a href=../parsing/ class="md-nav__link "> <span class=md-ellipsis> Parsing </span> </a> <label class="md-nav__link " for=__nav_2_14 id=__nav_2_14_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_14_label aria-expanded=false> <label class=md-nav__title for=__nav_2_14> <span class="md-nav__icon md-icon"></span> Parsing </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../parsing/json_lines/ class=md-nav__link> <span class=md-ellipsis> JSON Lines </span> </a> </li> <li class=md-nav__item> <a href=../parsing/parse_exceptions/ class=md-nav__link> <span class=md-ellipsis> Parsing and Exceptions </span> </a> </li> <li class=md-nav__item> <a href=../parsing/parser_callbacks/ class=md-nav__link> <span class=md-ellipsis> Parser Callbacks </span> </a> </li> <li class=md-nav__item> <a href=../parsing/sax_interface/ class=md-nav__link> <span class=md-ellipsis> SAX Interface </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../assertions/ class=md-nav__link> <span class=md-ellipsis> Runtime Assertions </span> </a> </li> <li class=md-nav__item> <a href=../enum_conversion/ class=md-nav__link> <span class=md-ellipsis> Specializing enum conversion </span> </a> </li> <li class=md-nav__item> <a href=../macros/ class=md-nav__link> <span class=md-ellipsis> Supported Macros </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_18> <div class="md-nav__link md-nav__container"> <a href=../types/ class="md-nav__link "> <span class=md-ellipsis> Types </span> </a> <label class="md-nav__link " for=__nav_2_18 id=__nav_2_18_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_18_label aria-expanded=false> <label class=md-nav__title for=__nav_2_18> <span class="md-nav__icon md-icon"></span> Types </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../types/number_handling/ class=md-nav__link> <span class=md-ellipsis> Number Handling </span> </a> </li> </ul> </nav> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_3> <div class="md-nav__link md-nav__container"> <a href=../../integration/ class="md-nav__link "> <span class=md-ellipsis> Integration </span> </a> <label class="md-nav__link " for=__nav_3 id=__nav_3_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_3_label aria-expanded=false> <label class=md-nav__title for=__nav_3> <span class="md-nav__icon md-icon"></span> Integration </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../integration/migration_guide/ class=md-nav__link> <span class=md-ellipsis> Migration Guide </span> </a> </li> <li class=md-nav__item> <a href=../../integration/cmake/ class=md-nav__link> <span class=md-ellipsis> CMake </span> </a> </li> <li class=md-nav__item> <a href=../../integration/package_managers/ class=md-nav__link> <span class=md-ellipsis> Package Managers </span> </a> </li> <li class=md-nav__item> <a href=../../integration/pkg-config/ class=md-nav__link> <span class=md-ellipsis> Pkg-config </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4> <label class=md-nav__link for=__nav_4 id=__nav_4_label tabindex=0> <span class=md-ellipsis> API Documentation </span> <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_4_label aria-expanded=false> <label class=md-nav__title for=__nav_4> <span class="md-nav__icon md-icon"></span> API Documentation </label> <ul class=md-nav__list data-md-scrollfix> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_1> <div class="md-nav__link md-nav__container"> <a href=../../api/basic_json/ class="md-nav__link "> <span class=md-ellipsis> basic_json </span> </a> <label class="md-nav__link " for=__nav_4_1 id=__nav_4_1_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_1_label aria-expanded=false> <label class=md-nav__title for=__nav_4_1> <span class="md-nav__icon md-icon"></span> basic_json </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../api/basic_json/basic_json/ class=md-nav__link> <span class=md-ellipsis> (Constructor) </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/~basic_json/ class=md-nav__link> <span class=md-ellipsis> (Destructor) </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/accept/ class=md-nav__link> <span class=md-ellipsis> accept </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/array/ class=md-nav__link> <span class=md-ellipsis> array </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/array_t/ class=md-nav__link> <span class=md-ellipsis> array_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/at/ class=md-nav__link> <span class=md-ellipsis> at </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/back/ class=md-nav__link> <span class=md-ellipsis> back </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/begin/ class=md-nav__link> <span class=md-ellipsis> begin </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/binary/ class=md-nav__link> <span class=md-ellipsis> binary </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/binary_t/ class=md-nav__link> <span class=md-ellipsis> binary_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/boolean_t/ class=md-nav__link> <span class=md-ellipsis> boolean_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/cbegin/ class=md-nav__link> <span class=md-ellipsis> cbegin </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/cbor_tag_handler_t/ class=md-nav__link> <span class=md-ellipsis> cbor_tag_handler_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/cend/ class=md-nav__link> <span class=md-ellipsis> cend </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/clear/ class=md-nav__link> <span class=md-ellipsis> clear </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/contains/ class=md-nav__link> <span class=md-ellipsis> contains </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/count/ class=md-nav__link> <span class=md-ellipsis> count </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/crbegin/ class=md-nav__link> <span class=md-ellipsis> crbegin </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/crend/ class=md-nav__link> <span class=md-ellipsis> crend </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/default_object_comparator_t/ class=md-nav__link> <span class=md-ellipsis> default_object_comparator_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/diff/ class=md-nav__link> <span class=md-ellipsis> diff </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/dump/ class=md-nav__link> <span class=md-ellipsis> dump </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/emplace/ class=md-nav__link> <span class=md-ellipsis> emplace </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/emplace_back/ class=md-nav__link> <span class=md-ellipsis> emplace_back </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/empty/ class=md-nav__link> <span class=md-ellipsis> empty </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/end/ class=md-nav__link> <span class=md-ellipsis> end </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/end_pos/ class=md-nav__link> <span class=md-ellipsis> end_pos </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/erase/ class=md-nav__link> <span class=md-ellipsis> erase </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/error_handler_t/ class=md-nav__link> <span class=md-ellipsis> error_handler_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/exception/ class=md-nav__link> <span class=md-ellipsis> exception </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/find/ class=md-nav__link> <span class=md-ellipsis> find </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/flatten/ class=md-nav__link> <span class=md-ellipsis> flatten </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/from_bjdata/ class=md-nav__link> <span class=md-ellipsis> from_bjdata </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/from_bson/ class=md-nav__link> <span class=md-ellipsis> from_bson </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/from_cbor/ class=md-nav__link> <span class=md-ellipsis> from_cbor </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/from_msgpack/ class=md-nav__link> <span class=md-ellipsis> from_msgpack </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/from_ubjson/ class=md-nav__link> <span class=md-ellipsis> from_ubjson </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/front/ class=md-nav__link> <span class=md-ellipsis> front </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/get/ class=md-nav__link> <span class=md-ellipsis> get </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/get_allocator/ class=md-nav__link> <span class=md-ellipsis> get_allocator </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/get_binary/ class=md-nav__link> <span class=md-ellipsis> get_binary </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/get_ptr/ class=md-nav__link> <span class=md-ellipsis> get_ptr </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/get_ref/ class=md-nav__link> <span class=md-ellipsis> get_ref </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/get_to/ class=md-nav__link> <span class=md-ellipsis> get_to </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/std_hash/ class=md-nav__link> <span class=md-ellipsis> std::hash&lt;basic_json&gt; </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/input_format_t/ class=md-nav__link> <span class=md-ellipsis> input_format_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/insert/ class=md-nav__link> <span class=md-ellipsis> insert </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/invalid_iterator/ class=md-nav__link> <span class=md-ellipsis> invalid_iterator </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_array/ class=md-nav__link> <span class=md-ellipsis> is_array </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_binary/ class=md-nav__link> <span class=md-ellipsis> is_binary </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_boolean/ class=md-nav__link> <span class=md-ellipsis> is_boolean </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_discarded/ class=md-nav__link> <span class=md-ellipsis> is_discarded </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_null/ class=md-nav__link> <span class=md-ellipsis> is_null </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_number/ class=md-nav__link> <span class=md-ellipsis> is_number </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_number_float/ class=md-nav__link> <span class=md-ellipsis> is_number_float </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_number_integer/ class=md-nav__link> <span class=md-ellipsis> is_number_integer </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_number_unsigned/ class=md-nav__link> <span class=md-ellipsis> is_number_unsigned </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_object/ class=md-nav__link> <span class=md-ellipsis> is_object </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_primitive/ class=md-nav__link> <span class=md-ellipsis> is_primitive </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_string/ class=md-nav__link> <span class=md-ellipsis> is_string </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_structured/ class=md-nav__link> <span class=md-ellipsis> is_structured </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/items/ class=md-nav__link> <span class=md-ellipsis> items </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/json_base_class_t/ class=md-nav__link> <span class=md-ellipsis> json_base_class_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/json_serializer/ class=md-nav__link> <span class=md-ellipsis> json_serializer </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/max_size/ class=md-nav__link> <span class=md-ellipsis> max_size </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/meta/ class=md-nav__link> <span class=md-ellipsis> meta </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/merge_patch/ class=md-nav__link> <span class=md-ellipsis> merge_patch </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/number_float_t/ class=md-nav__link> <span class=md-ellipsis> number_float_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/number_integer_t/ class=md-nav__link> <span class=md-ellipsis> number_integer_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/number_unsigned_t/ class=md-nav__link> <span class=md-ellipsis> number_unsigned_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/object/ class=md-nav__link> <span class=md-ellipsis> object </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/object_comparator_t/ class=md-nav__link> <span class=md-ellipsis> object_comparator_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/object_t/ class=md-nav__link> <span class=md-ellipsis> object_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/operator_ValueType/ class=md-nav__link> <span class=md-ellipsis> operator ValueType </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/operator_value_t/ class=md-nav__link> <span class=md-ellipsis> operator value_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/operator%5B%5D/ class=md-nav__link> <span class=md-ellipsis> operator[] </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/operator%3D/ class=md-nav__link> <span class=md-ellipsis> operator= </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/operator%2B%3D/ class=md-nav__link> <span class=md-ellipsis> operator+= </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/operator_eq/ class=md-nav__link> <span class=md-ellipsis> operator== </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/operator_ne/ class=md-nav__link> <span class=md-ellipsis> operator!= </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/operator_lt/ class=md-nav__link> <span class=md-ellipsis> operator< </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/operator_gt/ class=md-nav__link> <span class=md-ellipsis> operator> </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/operator_le/ class=md-nav__link> <span class=md-ellipsis> operator<= </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/operator_ge/ class=md-nav__link> <span class=md-ellipsis> operator>= </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/operator_spaceship/ class=md-nav__link> <span class=md-ellipsis> operator<=> </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/out_of_range/ class=md-nav__link> <span class=md-ellipsis> out_of_range </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/other_error/ class=md-nav__link> <span class=md-ellipsis> other_error </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/parse/ class=md-nav__link> <span class=md-ellipsis> parse </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/parse_error/ class=md-nav__link> <span class=md-ellipsis> parse_error </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/parse_event_t/ class=md-nav__link> <span class=md-ellipsis> parse_event_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/parser_callback_t/ class=md-nav__link> <span class=md-ellipsis> parser_callback_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/patch/ class=md-nav__link> <span class=md-ellipsis> patch </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/patch_inplace/ class=md-nav__link> <span class=md-ellipsis> patch_inplace </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/push_back/ class=md-nav__link> <span class=md-ellipsis> push_back </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/rbegin/ class=md-nav__link> <span class=md-ellipsis> rbegin </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/rend/ class=md-nav__link> <span class=md-ellipsis> rend </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/sax_parse/ class=md-nav__link> <span class=md-ellipsis> sax_parse </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/size/ class=md-nav__link> <span class=md-ellipsis> size </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/start_pos/ class=md-nav__link> <span class=md-ellipsis> start_pos </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/string_t/ class=md-nav__link> <span class=md-ellipsis> string_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/swap/ class=md-nav__link> <span class=md-ellipsis> swap </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/std_swap/ class=md-nav__link> <span class=md-ellipsis> std::swap&lt;basic_json&gt; </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/to_bjdata/ class=md-nav__link> <span class=md-ellipsis> to_bjdata </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/to_bson/ class=md-nav__link> <span class=md-ellipsis> to_bson </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/to_cbor/ class=md-nav__link> <span class=md-ellipsis> to_cbor </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/to_msgpack/ class=md-nav__link> <span class=md-ellipsis> to_msgpack </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/to_string/ class=md-nav__link> <span class=md-ellipsis> to_string </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/to_ubjson/ class=md-nav__link> <span class=md-ellipsis> to_ubjson </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/type/ class=md-nav__link> <span class=md-ellipsis> type </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/type_error/ class=md-nav__link> <span class=md-ellipsis> type_error </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/type_name/ class=md-nav__link> <span class=md-ellipsis> type_name </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/unflatten/ class=md-nav__link> <span class=md-ellipsis> unflatten </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/update/ class=md-nav__link> <span class=md-ellipsis> update </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/value/ class=md-nav__link> <span class=md-ellipsis> value </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/value_t/ class=md-nav__link> <span class=md-ellipsis> value_t </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_2> <div class="md-nav__link md-nav__container"> <a href=../../api/byte_container_with_subtype/ class="md-nav__link "> <span class=md-ellipsis> byte_container_with_subtype </span> </a> <label class="md-nav__link " for=__nav_4_2 id=__nav_4_2_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_2_label aria-expanded=false> <label class=md-nav__title for=__nav_4_2> <span class="md-nav__icon md-icon"></span> byte_container_with_subtype </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../api/byte_container_with_subtype/byte_container_with_subtype/ class=md-nav__link> <span class=md-ellipsis> (constructor) </span> </a> </li> <li class=md-nav__item> <a href=../../api/byte_container_with_subtype/clear_subtype/ class=md-nav__link> <span class=md-ellipsis> clear_subtype </span> </a> </li> <li class=md-nav__item> <a href=../../api/byte_container_with_subtype/has_subtype/ class=md-nav__link> <span class=md-ellipsis> has_subtype </span> </a> </li> <li class=md-nav__item> <a href=../../api/byte_container_with_subtype/set_subtype/ class=md-nav__link> <span class=md-ellipsis> set_subtype </span> </a> </li> <li class=md-nav__item> <a href=../../api/byte_container_with_subtype/subtype/ class=md-nav__link> <span class=md-ellipsis> subtype </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_3> <div class="md-nav__link md-nav__container"> <a href=../../api/adl_serializer/ class="md-nav__link "> <span class=md-ellipsis> adl_serializer </span> </a> <label class="md-nav__link " for=__nav_4_3 id=__nav_4_3_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_3_label aria-expanded=false> <label class=md-nav__title for=__nav_4_3> <span class="md-nav__icon md-icon"></span> adl_serializer </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../api/adl_serializer/from_json/ class=md-nav__link> <span class=md-ellipsis> from_json </span> </a> </li> <li class=md-nav__item> <a href=../../api/adl_serializer/to_json/ class=md-nav__link> <span class=md-ellipsis> to_json </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../api/json/ class=md-nav__link> <span class=md-ellipsis> json </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_5> <div class="md-nav__link md-nav__container"> <a href=../../api/json_pointer/ class="md-nav__link "> <span class=md-ellipsis> json_pointer </span> </a> <label class="md-nav__link " for=__nav_4_5 id=__nav_4_5_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_5_label aria-expanded=false> <label class=md-nav__title for=__nav_4_5> <span class="md-nav__icon md-icon"></span> json_pointer </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../api/json_pointer/json_pointer/ class=md-nav__link> <span class=md-ellipsis> (Constructor) </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/back/ class=md-nav__link> <span class=md-ellipsis> back </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/empty/ class=md-nav__link> <span class=md-ellipsis> empty </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/front/ class=md-nav__link> <span class=md-ellipsis> front </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/operator_string_t/ class=md-nav__link> <span class=md-ellipsis> operator string_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/operator_eq/ class=md-nav__link> <span class=md-ellipsis> operator== </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/operator_ne/ class=md-nav__link> <span class=md-ellipsis> operator!= </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/operator_slash/ class=md-nav__link> <span class=md-ellipsis> operator/ </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/operator_slasheq/ class=md-nav__link> <span class=md-ellipsis> operator/= </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/parent_pointer/ class=md-nav__link> <span class=md-ellipsis> parent_pointer </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/pop_back/ class=md-nav__link> <span class=md-ellipsis> pop_back </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/pop_front/ class=md-nav__link> <span class=md-ellipsis> pop_front </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/push_back/ class=md-nav__link> <span class=md-ellipsis> push_back </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/push_front/ class=md-nav__link> <span class=md-ellipsis> push_front </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/string_t/ class=md-nav__link> <span class=md-ellipsis> string_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/to_string/ class=md-nav__link> <span class=md-ellipsis> to_string </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_6> <div class="md-nav__link md-nav__container"> <a href=../../api/json_sax/ class="md-nav__link "> <span class=md-ellipsis> json_sax </span> </a> <label class="md-nav__link " for=__nav_4_6 id=__nav_4_6_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_6_label aria-expanded=false> <label class=md-nav__title for=__nav_4_6> <span class="md-nav__icon md-icon"></span> json_sax </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../api/json_sax/binary/ class=md-nav__link> <span class=md-ellipsis> binary </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_sax/boolean/ class=md-nav__link> <span class=md-ellipsis> boolean </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_sax/end_array/ class=md-nav__link> <span class=md-ellipsis> end_array </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_sax/end_object/ class=md-nav__link> <span class=md-ellipsis> end_object </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_sax/key/ class=md-nav__link> <span class=md-ellipsis> key </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_sax/null/ class=md-nav__link> <span class=md-ellipsis> null </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_sax/number_float/ class=md-nav__link> <span class=md-ellipsis> number_float </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_sax/number_integer/ class=md-nav__link> <span class=md-ellipsis> number_integer </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_sax/number_unsigned/ class=md-nav__link> <span class=md-ellipsis> number_unsigned </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_sax/parse_error/ class=md-nav__link> <span class=md-ellipsis> parse_error </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_sax/start_array/ class=md-nav__link> <span class=md-ellipsis> start_array </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_sax/start_object/ class=md-nav__link> <span class=md-ellipsis> start_object </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_sax/string/ class=md-nav__link> <span class=md-ellipsis> string </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../api/operator_ltlt/ class=md-nav__link> <span class=md-ellipsis> operator<<(basic_json), operator<<(json_pointer) </span> </a> </li> <li class=md-nav__item> <a href=../../api/operator_gtgt/ class=md-nav__link> <span class=md-ellipsis> operator>>(basic_json) </span> </a> </li> <li class=md-nav__item> <a href=../../api/operator_literal_json/ class=md-nav__link> <span class=md-ellipsis> operator""_json </span> </a> </li> <li class=md-nav__item> <a href=../../api/operator_literal_json_pointer/ class=md-nav__link> <span class=md-ellipsis> operator""_json_pointer </span> </a> </li> <li class=md-nav__item> <a href=../../api/ordered_json/ class=md-nav__link> <span class=md-ellipsis> ordered_json </span> </a> </li> <li class=md-nav__item> <a href=../../api/ordered_map/ class=md-nav__link> <span class=md-ellipsis> ordered_map </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_13> <div class="md-nav__link md-nav__container"> <a href=../../api/macros/ class="md-nav__link "> <span class=md-ellipsis> macros </span> </a> <label class="md-nav__link " for=__nav_4_13 id=__nav_4_13_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_13_label aria-expanded=false> <label class=md-nav__title for=__nav_4_13> <span class="md-nav__icon md-icon"></span> macros </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../api/macros/json_assert/ class=md-nav__link> <span class=md-ellipsis> JSON_ASSERT </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_brace_init_copy_semantics/ class=md-nav__link> <span class=md-ellipsis> JSON_BRACE_INIT_COPY_SEMANTICS </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_throw_user/ class=md-nav__link> <span class=md-ellipsis> JSON_CATCH_USER, JSON_THROW_USER, JSON_TRY_USER </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_diagnostics/ class=md-nav__link> <span class=md-ellipsis> JSON_DIAGNOSTICS </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_diagnostic_positions/ class=md-nav__link> <span class=md-ellipsis> JSON_DIAGNOSTIC_POSITIONS </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_disable_enum_serialization/ class=md-nav__link> <span class=md-ellipsis> JSON_DISABLE_ENUM_SERIALIZATION </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_has_cpp_11/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_CPP_11, JSON_HAS_CPP_14, JSON_HAS_CPP_17, JSON_HAS_CPP_20 </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_has_filesystem/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_EXPERIMENTAL_FILESYSTEM, JSON_HAS_FILESYSTEM </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_has_ranges/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_RANGES </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_has_static_rtti/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_STATIC_RTTI </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_has_three_way_comparison/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_THREE_WAY_COMPARISON </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_noexception/ class=md-nav__link> <span class=md-ellipsis> JSON_NOEXCEPTION </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_no_io/ class=md-nav__link> <span class=md-ellipsis> JSON_NO_IO </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_skip_library_version_check/ class=md-nav__link> <span class=md-ellipsis> JSON_SKIP_LIBRARY_VERSION_CHECK </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_skip_unsupported_compiler_check/ class=md-nav__link> <span class=md-ellipsis> JSON_SKIP_UNSUPPORTED_COMPILER_CHECK </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_use_global_udls/ class=md-nav__link> <span class=md-ellipsis> JSON_USE_GLOBAL_UDLS </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_use_implicit_conversions/ class=md-nav__link> <span class=md-ellipsis> JSON_USE_IMPLICIT_CONVERSIONS </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_use_legacy_discarded_value_comparison/ class=md-nav__link> <span class=md-ellipsis> JSON_USE_LEGACY_DISCARDED_VALUE_COMPARISON </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/nlohmann_define_derived_type/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_ONLY_SERIALIZE, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/nlohmann_define_type_intrusive/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_TYPE_INTRUSIVE, NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_TYPE_INTRUSIVE_ONLY_SERIALIZE </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/nlohmann_define_type_non_intrusive/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/nlohmann_define_type_with_names/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_TYPE_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/nlohmann_json_namespace/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_NAMESPACE </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/nlohmann_json_namespace_begin/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_NAMESPACE_BEGIN, NLOHMANN_JSON_NAMESPACE_END </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/nlohmann_json_namespace_no_version/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_NAMESPACE_NO_VERSION </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/nlohmann_json_serialize_enum/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_SERIALIZE_ENUM </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/nlohmann_json_serialize_enum_strict/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_SERIALIZE_ENUM_STRICT </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/nlohmann_json_version_major/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_VERSION_MAJOR, NLOHMANN_JSON_VERSION_MINOR, NLOHMANN_JSON_VERSION_PATCH </span> </a> </li> </ul> </nav> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_5> <div class="md-nav__link md-nav__container"> <a href=../../community/ class="md-nav__link "> <span class=md-ellipsis> Community </span> </a> <label class="md-nav__link " for=__nav_5 id=__nav_5_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_5_label aria-expanded=false> <label class=md-nav__title for=__nav_5> <span class="md-nav__icon md-icon"></span> Community </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../community/code_of_conduct/ class=md-nav__link> <span class=md-ellipsis> Code of Conduct </span> </a> </li> <li class=md-nav__item> <a href=../../community/contribution_guidelines/ class=md-nav__link> <span class=md-ellipsis> Contribution Guidelines </span> </a> </li> <li class=md-nav__item> <a href=../../community/quality_assurance/ class=md-nav__link> <span class=md-ellipsis> Quality assurance </span> </a> </li> <li class=md-nav__item> <a href=../../community/governance/ class=md-nav__link> <span class=md-ellipsis> Governance </span> </a> </li> <li class=md-nav__item> <a href=../../community/security_policy/ class=md-nav__link> <span class=md-ellipsis> Security Policy </span> </a> </li> </ul> </nav> </li> </ul> </nav> </div> </div> </div> <div class="md-sidebar md-sidebar--secondary" data-md-component=sidebar data-md-type=toc> <div class=md-sidebar__scrollwrap> <div class=md-sidebar__inner> <nav class="md-nav md-nav--secondary" aria-label="Table of contents"> <label class=md-nav__title for=__toc> <span class="md-nav__icon md-icon"></span> Table of contents </label> <ul class=md-nav__list data-md-component=toc data-md-scrollfix> <li class=md-nav__item> <a href=#comparison class=md-nav__link> <span class=md-ellipsis> Comparison </span> </a> <nav class=md-nav aria-label=Comparison> <ul class=md-nav__list> <li class=md-nav__item> <a href=#completeness class=md-nav__link> <span class=md-ellipsis> Completeness </span> </a> </li> <li class=md-nav__item> <a href=#binary-values class=md-nav__link> <span class=md-ellipsis> Binary values </span> </a> </li> <li class=md-nav__item> <a href=#sizes class=md-nav__link> <span class=md-ellipsis> Sizes </span> </a> </li> </ul> </nav> </li> </ul> </nav> </div> </div> </div> <div class=md-content data-md-component=content> <article class="md-content__inner md-typeset"> <a href="https://github.com/nlohmann/json/edit/develop/docs/mkdocs/docs/features/binary_formats/index.md" title="Edit this page" class="md-content__button md-icon" rel="edit"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M10 20H6V4h7v5h5v3.1l2-2V8l-6-6H6c-1.1 0-2 .9-2 2v16c0 1.1.9 2 2 2h4zm10.2-7c.1 0 .3.1.4.2l1.3 1.3c.2.2.2.6 0 .8l-1 1-2.1-2.1 1-1c.1-.1.2-.2.4-.2m0 3.9L14.1 23H12v-2.1l6.1-6.1z"/></svg> </a> <a href="https://github.com/nlohmann/json/raw/develop/docs/mkdocs/docs/features/binary_formats/index.md" title="View source of this page" class="md-content__button md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M17 18c.56 0 1 .44 1 1s-.44 1-1 1-1-.44-1-1 .44-1 1-1m0-3c-2.73 0-5.06 1.66-6 4 .94 2.34 3.27 4 6 4s5.06-1.66 6-4c-.94-2.34-3.27-4-6-4m0 6.5a2.5 2.5 0 0 1-2.5-2.5 2.5 2.5 0 0 1 2.5-2.5 2.5 2.5 0 0 1 2.5 2.5 2.5 2.5 0 0 1-2.5 2.5M9.27 20H6V4h7v5h5v4.07c.7.08 1.36.25 2 .49V8l-6-6H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h4.5a8.2 8.2 0 0 1-1.23-2"/></svg> </a> <h1 id=binary-formats>Binary Formats<a class=headerlink href=#binary-formats title="Permanent link">&para;</a></h1> <p>Though <abbr title="JavaScript Object Notation">JSON</abbr> is a ubiquitous data format, it is not a very compact format suitable for data exchange, for instance, over a network. Hence, the library supports</p> <ul> <li><a href=bjdata/ ><abbr title="Binary JData">BJData</abbr></a> (Binary JData),</li> <li><a href=bson/ ><abbr title="Binary JSON">BSON</abbr></a> (Binary <abbr title="JavaScript Object Notation">JSON</abbr>),</li> <li><a href=cbor/ ><abbr title="Concise Binary Object Representation">CBOR</abbr></a> (Concise Binary Object Representation),</li> <li><a href=messagepack/ >MessagePack</a>, and</li> <li><a href=ubjson/ ><abbr title="Universal Binary JSON">UBJSON</abbr></a> (Universal Binary <abbr title="JavaScript Object Notation">JSON</abbr>)</li> </ul> <p>to efficiently encode <abbr title="JavaScript Object Notation">JSON</abbr> values to byte vectors and to decode such vectors.</p> <h2 id=comparison>Comparison<a class=headerlink href=#comparison title="Permanent link">&para;</a></h2> <h3 id=completeness>Completeness<a class=headerlink href=#completeness title="Permanent link">&para;</a></h3> <table> <thead> <tr> <th>Format</th> <th>Serialization</th> <th>Deserialization</th> </tr> </thead> <tbody> <tr> <td><abbr title="Binary JData">BJData</abbr></td> <td>complete</td> <td>complete</td> </tr> <tr> <td><abbr title="Binary JSON">BSON</abbr></td> <td>incomplete: top-level value must be an object</td> <td>incomplete, but all <abbr title="JavaScript Object Notation">JSON</abbr> types are supported</td> </tr> <tr> <td><abbr title="Concise Binary Object Representation">CBOR</abbr></td> <td>complete</td> <td>incomplete, but all <abbr title="JavaScript Object Notation">JSON</abbr> types are supported</td> </tr> <tr> <td>MessagePack</td> <td>complete</td> <td>complete</td> </tr> <tr> <td><abbr title="Universal Binary JSON">UBJSON</abbr></td> <td>complete</td> <td>complete</td> </tr> </tbody> </table> <h3 id=binary-values>Binary values<a class=headerlink href=#binary-values title="Permanent link">&para;</a></h3> <table> <thead> <tr> <th>Format</th> <th>Binary values</th> <th>Binary subtypes</th> </tr> </thead> <tbody> <tr> <td><abbr title="Binary JData">BJData</abbr></td> <td>not supported</td> <td>not supported</td> </tr> <tr> <td><abbr title="Binary JSON">BSON</abbr></td> <td>supported</td> <td>supported</td> </tr> <tr> <td><abbr title="Concise Binary Object Representation">CBOR</abbr></td> <td>supported</td> <td>supported</td> </tr> <tr> <td>MessagePack</td> <td>supported</td> <td>supported</td> </tr> <tr> <td><abbr title="Universal Binary JSON">UBJSON</abbr></td> <td>not supported</td> <td>not supported</td> </tr> </tbody> </table> <p>See <a href=../binary_values/ >binary values</a> for more information.</p> <h3 id=sizes>Sizes<a class=headerlink href=#sizes title="Permanent link">&para;</a></h3> <table> <thead> <tr> <th>Format</th> <th>canada.json</th> <th>twitter.json</th> <th>citm_catalog.json</th> <th>jeopardy.json</th> </tr> </thead> <tbody> <tr> <td><abbr title="Binary JData">BJData</abbr></td> <td>53.2 %</td> <td>91.1 %</td> <td>78.1 %</td> <td>96.6 %</td> </tr> <tr> <td><abbr title="Binary JData">BJData</abbr> (size)</td> <td>58.6 %</td> <td>92.1 %</td> <td>86.7 %</td> <td>97.4 %</td> </tr> <tr> <td><abbr title="Binary JData">BJData</abbr> (size+tyoe)</td> <td>58.6 %</td> <td>92.1 %</td> <td>86.5 %</td> <td>97.4 %</td> </tr> <tr> <td><abbr title="Binary JSON">BSON</abbr></td> <td>85.8 %</td> <td>95.2 %</td> <td>95.8 %</td> <td>106.7 %</td> </tr> <tr> <td><abbr title="Concise Binary Object Representation">CBOR</abbr></td> <td>50.5 %</td> <td>86.3 %</td> <td>68.4 %</td> <td>88.0 %</td> </tr> <tr> <td>MessagePack</td> <td>50.5 %</td> <td>86.0 %</td> <td>68.5 %</td> <td>87.9 %</td> </tr> <tr> <td><abbr title="Universal Binary JSON">UBJSON</abbr></td> <td>53.2 %</td> <td>91.3 %</td> <td>78.2 %</td> <td>96.6 %</td> </tr> <tr> <td><abbr title="Universal Binary JSON">UBJSON</abbr> (size)</td> <td>58.6 %</td> <td>92.3 %</td> <td>86.8 %</td> <td>97.4 %</td> </tr> <tr> <td><abbr title="Universal Binary JSON">UBJSON</abbr> (size+type)</td> <td>55.9 %</td> <td>92.3 %</td> <td>85.0 %</td> <td>95.0 %</td> </tr> </tbody> </table> <p>Sizes compared to minified <abbr title="JavaScript Object Notation">JSON</abbr> value.</p> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 29, 2026 20:15:18 UTC">June 29, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
diff --git a/features/binary_formats/messagepack/index.html b/features/binary_formats/messagepack/index.html
index 74d4d50..1696653 100644
--- a/features/binary_formats/messagepack/index.html
+++ b/features/binary_formats/messagepack/index.html
@@ -45,4 +45,4 @@
 <span class=w>  </span><span class=nt>&quot;compact&quot;</span><span class=p>:</span><span class=w> </span><span class=kc>true</span><span class=p>,</span>
 <span class=w>  </span><span class=nt>&quot;schema&quot;</span><span class=p>:</span><span class=w> </span><span class=mi>0</span>
 <span class=p>}</span>
-</code></pre></div> </details> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 23, 2026 11:16:18 UTC">June 23, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
+</code></pre></div> </details> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 29, 2026 20:15:18 UTC">June 29, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
diff --git a/features/binary_formats/ubjson/index.html b/features/binary_formats/ubjson/index.html
index e6e2b8a..bad2b84 100644
--- a/features/binary_formats/ubjson/index.html
+++ b/features/binary_formats/ubjson/index.html
@@ -90,4 +90,4 @@
 <span class=w>  </span><span class=nt>&quot;compact&quot;</span><span class=p>:</span><span class=w> </span><span class=kc>true</span><span class=p>,</span>
 <span class=w>  </span><span class=nt>&quot;schema&quot;</span><span class=p>:</span><span class=w> </span><span class=mi>0</span>
 <span class=p>}</span>
-</code></pre></div> </details> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 23, 2026 11:16:18 UTC">June 23, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
+</code></pre></div> </details> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 29, 2026 20:15:18 UTC">June 29, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
diff --git a/features/binary_values/index.html b/features/binary_values/index.html
index 3860538..a1f788c 100644
--- a/features/binary_values/index.html
+++ b/features/binary_values/index.html
@@ -154,4 +154,4 @@
 </code></pre></div> <p>Note that subtype (42) is <strong>not</strong> serialized and that <abbr title="Universal Binary JSON">UBJSON</abbr> has <strong>no binary type</strong>, and deserializing <code>v</code> would yield the following value:</p> <div class=highlight><pre><span></span><code><span class=p>{</span>
 <span class=w>  </span><span class=nt>&quot;binary&quot;</span><span class=p>:</span><span class=w> </span><span class=p>[</span><span class=mi>202</span><span class=p>,</span><span class=w> </span><span class=mi>254</span><span class=p>,</span><span class=w> </span><span class=mi>186</span><span class=p>,</span><span class=w> </span><span class=mi>190</span><span class=p>]</span>
 <span class=p>}</span>
-</code></pre></div> </details> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 23, 2026 11:16:18 UTC">June 23, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
+</code></pre></div> </details> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 29, 2026 20:15:18 UTC">June 29, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
diff --git a/features/comments/index.html b/features/comments/index.html
index e5bc15f..62e30ca 100644
--- a/features/comments/index.html
+++ b/features/comments/index.html
@@ -3,7 +3,7 @@
 <span class=w>    </span><span class=nt>&quot;planets&quot;</span><span class=p>:</span><span class=w> </span><span class=p>[</span><span class=s2>&quot;Mercury&quot;</span><span class=p>,</span><span class=w> </span><span class=s2>&quot;Venus&quot;</span><span class=p>,</span><span class=w> </span><span class=s2>&quot;Earth&quot;</span><span class=p>,</span><span class=w> </span><span class=s2>&quot;Mars&quot;</span><span class=p>,</span>
 <span class=w>                </span><span class=s2>&quot;Jupiter&quot;</span><span class=p>,</span><span class=w> </span><span class=s2>&quot;Uranus&quot;</span><span class=p>,</span><span class=w> </span><span class=s2>&quot;Neptune&quot;</span><span class=w> </span><span class=cm>/*, &quot;Pluto&quot; */</span><span class=p>]</span>
 <span class=p>}</span>
-</code></pre></div> <p>When calling <code>parse</code> without additional argument, a parse error exception is thrown. If <code>ignore_comments</code> is set to <code>true</code>, the comments are ignored during parsing:</p> <div class=highlight><pre><span></span><code><span class=cp>#include</span><span class=w> </span><span class=cpf>&lt;iostream&gt;</span>
+</code></pre></div> <p>When calling <code>parse</code> without additional argument, a parse error exception is thrown. If <code>ignore_comments</code> is set to <code class=highlight><span class=nb>true</span></code>, the comments are ignored during parsing:</p> <div class=highlight><pre><span></span><code><span class=cp>#include</span><span class=w> </span><span class=cpf>&lt;iostream&gt;</span>
 <span class=cp>#include</span><span class=w> </span><span class=cpf>&lt;nlohmann/json.hpp&gt;</span>
 
 <span class=k>using</span><span class=w> </span><span class=n>json</span><span class=w> </span><span class=o>=</span><span class=w> </span><span class=n>nlohmann</span><span class=o>::</span><span class=n>json</span><span class=p>;</span>
@@ -45,4 +45,4 @@
     &quot;Neptune&quot;
   ]
 }
-</code></pre></div> </div> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 23, 2026 11:16:18 UTC">June 23, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
+</code></pre></div> </div> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 29, 2026 20:15:18 UTC">June 29, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
diff --git a/features/element_access/checked_access/index.html b/features/element_access/checked_access/index.html
index 3ba80c3..7876432 100644
--- a/features/element_access/checked_access/index.html
+++ b/features/element_access/checked_access/index.html
@@ -12,4 +12,4 @@
 </code></pre></div> </details> <p>When accessing an invalid index (i.e., an index greater than or equal to the array size) or the passed object key is non-existing, an exception is thrown.</p> <details class=example> <summary>Accessing via invalid index or missing key</summary> <div class=highlight><pre><span></span><code><span class=n>j</span><span class=p>.</span><span class=n>at</span><span class=p>(</span><span class=s>&quot;hobbies&quot;</span><span class=p>).</span><span class=n>at</span><span class=p>(</span><span class=mi>3</span><span class=p>)</span><span class=w> </span><span class=o>=</span><span class=w> </span><span class=s>&quot;cooking&quot;</span><span class=p>;</span>
 </code></pre></div> <p>This code produces the following exception:</p> <div class=highlight><pre><span></span><code>[json.exception.out_of_range.401] array index 3 is out of range
 </code></pre></div> <p>When you <a href=../../../home/exceptions/#extended-diagnostic-messages>extended diagnostic messages</a> are enabled by defining <a href=../../../api/macros/json_diagnostics/ ><code>JSON_DIAGNOSTICS</code></a>, the exception further gives information where the key or index is missing or out of range.</p> <div class=highlight><pre><span></span><code>[json.exception.out_of_range.401] (/hobbies) array index 3 is out of range
-</code></pre></div> </details> <h2 id=notes>Notes<a class=headerlink href=#notes title="Permanent link">&para;</a></h2> <div class="admonition failure"> <p class=admonition-title>Exceptions</p> <ul> <li><a href=../../../api/basic_json/at/ ><code>at</code></a> can only be used with objects (with a string argument) or with arrays (with a numeric argument). For other types, a <a href=../../../home/exceptions/#jsonexceptiontype_error304><code>basic_json::type_error</code></a> is thrown.</li> <li><a href=../../../home/exceptions/#out-of-range><code>basic_json::out_of_range</code> exception</a> exceptions are thrown if the provided key is not found in an object or the provided index is invalid.</li> </ul> </div> <h2 id=summary>Summary<a class=headerlink href=#summary title="Permanent link">&para;</a></h2> <table> <thead> <tr> <th>scenario</th> <th>non-const value</th> <th>const value</th> </tr> </thead> <tbody> <tr> <td>access to existing object key</td> <td>reference to existing value is returned</td> <td>const reference to existing value is returned</td> </tr> <tr> <td>access to valid array index</td> <td>reference to existing value is returned</td> <td>const reference to existing value is returned</td> </tr> <tr> <td>access to non-existing object key</td> <td><code>basic_json::out_of_range</code> exception is thrown</td> <td><code>basic_json::out_of_range</code> exception is thrown</td> </tr> <tr> <td>access to invalid array index</td> <td><code>basic_json::out_of_range</code> exception is thrown</td> <td><code>basic_json::out_of_range</code> exception is thrown</td> </tr> </tbody> </table> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 23, 2026 11:16:18 UTC">June 23, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
+</code></pre></div> </details> <h2 id=notes>Notes<a class=headerlink href=#notes title="Permanent link">&para;</a></h2> <div class="admonition failure"> <p class=admonition-title>Exceptions</p> <ul> <li><a href=../../../api/basic_json/at/ ><code>at</code></a> can only be used with objects (with a string argument) or with arrays (with a numeric argument). For other types, a <a href=../../../home/exceptions/#jsonexceptiontype_error304><code>basic_json::type_error</code></a> is thrown.</li> <li><a href=../../../home/exceptions/#out-of-range><code>basic_json::out_of_range</code> exception</a> exceptions are thrown if the provided key is not found in an object or the provided index is invalid.</li> </ul> </div> <h2 id=summary>Summary<a class=headerlink href=#summary title="Permanent link">&para;</a></h2> <table> <thead> <tr> <th>scenario</th> <th>non-const value</th> <th>const value</th> </tr> </thead> <tbody> <tr> <td>access to existing object key</td> <td>reference to existing value is returned</td> <td>const reference to existing value is returned</td> </tr> <tr> <td>access to valid array index</td> <td>reference to existing value is returned</td> <td>const reference to existing value is returned</td> </tr> <tr> <td>access to non-existing object key</td> <td><code>basic_json::out_of_range</code> exception is thrown</td> <td><code>basic_json::out_of_range</code> exception is thrown</td> </tr> <tr> <td>access to invalid array index</td> <td><code>basic_json::out_of_range</code> exception is thrown</td> <td><code>basic_json::out_of_range</code> exception is thrown</td> </tr> </tbody> </table> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 29, 2026 20:15:18 UTC">June 29, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
diff --git a/features/element_access/default_value/index.html b/features/element_access/default_value/index.html
index 42da43e..38d901a 100644
--- a/features/element_access/default_value/index.html
+++ b/features/element_access/default_value/index.html
@@ -20,4 +20,4 @@
 <span class=err>de</span><span class=kc>fault</span><span class=w> </span><span class=err>value</span><span class=w> </span><span class=err>(i</span><span class=kc>nt</span><span class=err>)</span><span class=p>:</span><span class=w>       </span><span class=mi>-1</span>
 <span class=err>de</span><span class=kc>fault</span><span class=w> </span><span class=err>value</span><span class=w> </span><span class=err>(ui</span><span class=kc>nt</span><span class=mi>64</span><span class=err>_</span><span class=kc>t</span><span class=err>)</span><span class=p>:</span><span class=w>  </span><span class=mi>18446744073709551615</span>
 <span class=err>explici</span><span class=kc>t</span><span class=w> </span><span class=err>re</span><span class=kc>turn</span><span class=w> </span><span class=err>value</span><span class=w> </span><span class=kc>t</span><span class=err>ype</span><span class=p>:</span><span class=w> </span><span class=mi>18446744073709551615</span>
-</code></pre></div> </div> <h2 id=see-also>See also<a class=headerlink href=#see-also title="Permanent link">&para;</a></h2> <ul> <li><a href=../../../api/basic_json/value/ ><code>value</code></a> for access with default value</li> <li>documentation on <a href=../checked_access/ >checked access</a></li> </ul> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 23, 2026 11:16:18 UTC">June 23, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
+</code></pre></div> </div> <h2 id=see-also>See also<a class=headerlink href=#see-also title="Permanent link">&para;</a></h2> <ul> <li><a href=../../../api/basic_json/value/ ><code>value</code></a> for access with default value</li> <li>documentation on <a href=../checked_access/ >checked access</a></li> </ul> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 29, 2026 20:15:18 UTC">June 29, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
diff --git a/features/element_access/index.html b/features/element_access/index.html
index 341d4e6..dc1d529 100644
--- a/features/element_access/index.html
+++ b/features/element_access/index.html
@@ -1 +1 @@
-<!doctype html><html lang=en class=no-js> <head><meta charset=utf-8><meta name=viewport content="width=device-width,initial-scale=1"><meta name=author content="Niels Lohmann"><link href="https://json.nlohmann.me/features/element_access/" rel="canonical"><link href=../trailing_commas/ rel=prev><link href=unchecked_access/ rel=next><link rel=icon href=../../assets/images/favicon.png><meta name=generator content="mkdocs-1.6.1, mkdocs-material-9.7.6"><title>Element Access - JSON for Modern C++</title><link rel=stylesheet href=../../assets/stylesheets/main.484c7ddc.min.css><link rel=stylesheet href=../../assets/stylesheets/palette.ab4e12ef.min.css><link rel="stylesheet" href="../../assets/external/fonts.googleapis.com/css.61a430c9.css"><style>:root{--md-text-font:"Roboto";--md-code-font:"JetBrains Mono"}</style><link rel=stylesheet href=../../css/custom.css><script>__md_scope=new URL("../..",location),__md_hash=e=>[...e].reduce(((e,_)=>(e<<5)-e+_.charCodeAt(0)),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script></head> <body dir=ltr data-md-color-scheme=default data-md-color-primary=indigo data-md-color-accent=indigo> <input class=md-toggle data-md-toggle=drawer type=checkbox id=__drawer autocomplete=off> <input class=md-toggle data-md-toggle=search type=checkbox id=__search autocomplete=off> <label class=md-overlay for=__drawer></label> <div data-md-component=skip> <a href=#element-access class=md-skip> Skip to content </a> </div> <div data-md-component=announce> </div> <header class=md-header data-md-component=header> <nav class="md-header__inner md-grid" aria-label=Header> <a href=../.. title="JSON for Modern C++" class="md-header__button md-logo" aria-label="JSON for Modern C++" data-md-component=logo> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54"/></svg> </a> <label class="md-header__button md-icon" for=__drawer> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M3 6h18v2H3zm0 5h18v2H3zm0 5h18v2H3z"/></svg> </label> <div class=md-header__title data-md-component=header-title> <div class=md-header__ellipsis> <div class=md-header__topic> <span class=md-ellipsis> JSON for Modern C++ </span> </div> <div class=md-header__topic data-md-component=header-topic> <span class=md-ellipsis> Element Access </span> </div> </div> </div> <form class=md-header__option data-md-component=palette> <input class=md-option data-md-color-media="(prefers-color-scheme: light)" data-md-color-scheme=default data-md-color-primary=indigo data-md-color-accent=indigo aria-label="Switch to dark mode" type=radio name=__palette id=__palette_0> <label class="md-header__button md-icon" title="Switch to dark mode" for=__palette_1 hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a4 4 0 0 0-4 4 4 4 0 0 0 4 4 4 4 0 0 0 4-4 4 4 0 0 0-4-4m0 10a6 6 0 0 1-6-6 6 6 0 0 1 6-6 6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12z"/></svg> </label> <input class=md-option data-md-color-media="(prefers-color-scheme: dark)" data-md-color-scheme=slate data-md-color-primary=indigo data-md-color-accent=indigo aria-label="Switch to light mode" type=radio name=__palette id=__palette_1> <label class="md-header__button md-icon" title="Switch to light mode" for=__palette_0 hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 18c-.89 0-1.74-.2-2.5-.55C11.56 16.5 13 14.42 13 12s-1.44-4.5-3.5-5.45C10.26 6.2 11.11 6 12 6a6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12z"/></svg> </label> </form> <script>var palette=__md_get("__palette");if(palette&&palette.color){if("(prefers-color-scheme)"===palette.color.media){var media=matchMedia("(prefers-color-scheme: light)"),input=document.querySelector(media.matches?"[data-md-color-media='(prefers-color-scheme: light)']":"[data-md-color-media='(prefers-color-scheme: dark)']");palette.color.media=input.getAttribute("data-md-color-media"),palette.color.scheme=input.getAttribute("data-md-color-scheme"),palette.color.primary=input.getAttribute("data-md-color-primary"),palette.color.accent=input.getAttribute("data-md-color-accent")}for(var[key,value]of Object.entries(palette.color))document.body.setAttribute("data-md-color-"+key,value)}</script> <label class="md-header__button md-icon" for=__search> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg> </label> <div class=md-search data-md-component=search role=dialog> <label class=md-search__overlay for=__search></label> <div class=md-search__inner role=search> <form class=md-search__form name=search> <input type=text class=md-search__input name=query aria-label=Search placeholder=Search autocapitalize=off autocorrect=off autocomplete=off spellcheck=false data-md-component=search-query required> <label class="md-search__icon md-icon" for=__search> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11z"/></svg> </label> <nav class=md-search__options aria-label=Search> <button type=reset class="md-search__icon md-icon" title=Clear aria-label=Clear tabindex=-1> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z"/></svg> </button> </nav> </form> <div class=md-search__output> <div class=md-search__scrollwrap tabindex=0 data-md-scrollfix> <div class=md-search-result data-md-component=search-result> <div class=md-search-result__meta> Initializing search </div> <ol class=md-search-result__list role=presentation></ol> </div> </div> </div> </div> </div> <div class=md-header__source> <a href="https://github.com/nlohmann/json" title="Go to repository" class="md-source" data-md-component="source"> <div class="md-source__icon md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </div> <div class=md-source__repository> nlohmann/json </div> </a> </div> </nav> </header> <div class=md-container data-md-component=container> <nav class=md-tabs aria-label=Tabs data-md-component=tabs> <div class=md-grid> <ul class=md-tabs__list> <li class=md-tabs__item> <a href=../.. class=md-tabs__link> Home </a> </li> <li class="md-tabs__item md-tabs__item--active"> <a href=../arbitrary_types/ class=md-tabs__link> Features </a> </li> <li class=md-tabs__item> <a href=../../integration/ class=md-tabs__link> Integration </a> </li> <li class=md-tabs__item> <a href=../../api/basic_json/ class=md-tabs__link> API Documentation </a> </li> <li class=md-tabs__item> <a href=../../community/ class=md-tabs__link> Community </a> </li> </ul> </div> </nav> <main class=md-main data-md-component=main> <div class="md-main__inner md-grid"> <div class="md-sidebar md-sidebar--primary" data-md-component=sidebar data-md-type=navigation> <div class=md-sidebar__scrollwrap> <div class=md-sidebar__inner> <nav class="md-nav md-nav--primary md-nav--lifted" aria-label=Navigation data-md-level=0> <label class=md-nav__title for=__drawer> <a href=../.. title="JSON for Modern C++" class="md-nav__button md-logo" aria-label="JSON for Modern C++" data-md-component=logo> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54"/></svg> </a> JSON for Modern C++ </label> <div class=md-nav__source> <a href="https://github.com/nlohmann/json" title="Go to repository" class="md-source" data-md-component="source"> <div class="md-source__icon md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </div> <div class=md-source__repository> nlohmann/json </div> </a> </div> <ul class=md-nav__list data-md-scrollfix> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_1> <div class="md-nav__link md-nav__container"> <a href=../.. class="md-nav__link "> <span class=md-ellipsis> Home </span> </a> <label class="md-nav__link " for=__nav_1 id=__nav_1_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_1_label aria-expanded=false> <label class=md-nav__title for=__nav_1> <span class="md-nav__icon md-icon"></span> Home </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../home/license/ class=md-nav__link> <span class=md-ellipsis> License </span> </a> </li> <li class=md-nav__item> <a href=../../home/faq/ class=md-nav__link> <span class=md-ellipsis> FAQ </span> </a> </li> <li class=md-nav__item> <a href=../../home/exceptions/ class=md-nav__link> <span class=md-ellipsis> Exceptions </span> </a> </li> <li class=md-nav__item> <a href=../../home/releases/ class=md-nav__link> <span class=md-ellipsis> Releases </span> </a> </li> <li class=md-nav__item> <a href=../../home/design_goals/ class=md-nav__link> <span class=md-ellipsis> Design goals </span> </a> </li> <li class=md-nav__item> <a href=../../home/architecture/ class=md-nav__link> <span class=md-ellipsis> Architecture </span> </a> </li> <li class=md-nav__item> <a href=../../home/customers/ class=md-nav__link> <span class=md-ellipsis> Customers </span> </a> </li> <li class=md-nav__item> <a href=../../home/sponsors/ class=md-nav__link> <span class=md-ellipsis> Sponsors </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--active md-nav__item--section md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2 checked> <label class=md-nav__link for=__nav_2 id=__nav_2_label tabindex> <span class=md-ellipsis> Features </span> <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_2_label aria-expanded=true> <label class=md-nav__title for=__nav_2> <span class="md-nav__icon md-icon"></span> Features </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../arbitrary_types/ class=md-nav__link> <span class=md-ellipsis> Arbitrary Type Conversions </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_2> <div class="md-nav__link md-nav__container"> <a href=../binary_formats/ class="md-nav__link "> <span class=md-ellipsis> Binary Formats </span> </a> <label class="md-nav__link " for=__nav_2_2 id=__nav_2_2_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_2_label aria-expanded=false> <label class=md-nav__title for=__nav_2_2> <span class="md-nav__icon md-icon"></span> Binary Formats </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../binary_formats/bjdata/ class=md-nav__link> <span class=md-ellipsis> BJData </span> </a> </li> <li class=md-nav__item> <a href=../binary_formats/bson/ class=md-nav__link> <span class=md-ellipsis> BSON </span> </a> </li> <li class=md-nav__item> <a href=../binary_formats/cbor/ class=md-nav__link> <span class=md-ellipsis> CBOR </span> </a> </li> <li class=md-nav__item> <a href=../binary_formats/messagepack/ class=md-nav__link> <span class=md-ellipsis> MessagePack </span> </a> </li> <li class=md-nav__item> <a href=../binary_formats/ubjson/ class=md-nav__link> <span class=md-ellipsis> UBJSON </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../binary_values/ class=md-nav__link> <span class=md-ellipsis> Binary Values </span> </a> </li> <li class=md-nav__item> <a href=../comments/ class=md-nav__link> <span class=md-ellipsis> Comments </span> </a> </li> <li class=md-nav__item> <a href=../trailing_commas/ class=md-nav__link> <span class=md-ellipsis> Trailing Commas </span> </a> </li> <li class="md-nav__item md-nav__item--active md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_6 checked> <div class="md-nav__link md-nav__container"> <a href=./ class="md-nav__link md-nav__link--active"> <span class=md-ellipsis> Element Access </span> </a> <label class="md-nav__link md-nav__link--active" for=__nav_2_6 id=__nav_2_6_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_6_label aria-expanded=true> <label class=md-nav__title for=__nav_2_6> <span class="md-nav__icon md-icon"></span> Element Access </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=unchecked_access/ class=md-nav__link> <span class=md-ellipsis> Unchecked access: operator[] </span> </a> </li> <li class=md-nav__item> <a href=checked_access/ class=md-nav__link> <span class=md-ellipsis> Checked access: at </span> </a> </li> <li class=md-nav__item> <a href=default_value/ class=md-nav__link> <span class=md-ellipsis> Access with default value: value </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../iterators/ class=md-nav__link> <span class=md-ellipsis> Iterators </span> </a> </li> <li class=md-nav__item> <a href=../json_pointer/ class=md-nav__link> <span class=md-ellipsis> JSON Pointer </span> </a> </li> <li class=md-nav__item> <a href=../json_patch/ class=md-nav__link> <span class=md-ellipsis> JSON Patch and Diff </span> </a> </li> <li class=md-nav__item> <a href=../merge_patch/ class=md-nav__link> <span class=md-ellipsis> JSON Merge Patch </span> </a> </li> <li class=md-nav__item> <a href=../modules/ class=md-nav__link> <span class=md-ellipsis> Modules </span> </a> </li> <li class=md-nav__item> <a href=../namespace/ class=md-nav__link> <span class=md-ellipsis> nlohmann Namespace </span> </a> </li> <li class=md-nav__item> <a href=../object_order/ class=md-nav__link> <span class=md-ellipsis> Object Order </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_14> <div class="md-nav__link md-nav__container"> <a href=../parsing/ class="md-nav__link "> <span class=md-ellipsis> Parsing </span> </a> <label class="md-nav__link " for=__nav_2_14 id=__nav_2_14_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_14_label aria-expanded=false> <label class=md-nav__title for=__nav_2_14> <span class="md-nav__icon md-icon"></span> Parsing </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../parsing/json_lines/ class=md-nav__link> <span class=md-ellipsis> JSON Lines </span> </a> </li> <li class=md-nav__item> <a href=../parsing/parse_exceptions/ class=md-nav__link> <span class=md-ellipsis> Parsing and Exceptions </span> </a> </li> <li class=md-nav__item> <a href=../parsing/parser_callbacks/ class=md-nav__link> <span class=md-ellipsis> Parser Callbacks </span> </a> </li> <li class=md-nav__item> <a href=../parsing/sax_interface/ class=md-nav__link> <span class=md-ellipsis> SAX Interface </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../assertions/ class=md-nav__link> <span class=md-ellipsis> Runtime Assertions </span> </a> </li> <li class=md-nav__item> <a href=../enum_conversion/ class=md-nav__link> <span class=md-ellipsis> Specializing enum conversion </span> </a> </li> <li class=md-nav__item> <a href=../macros/ class=md-nav__link> <span class=md-ellipsis> Supported Macros </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_18> <div class="md-nav__link md-nav__container"> <a href=../types/ class="md-nav__link "> <span class=md-ellipsis> Types </span> </a> <label class="md-nav__link " for=__nav_2_18 id=__nav_2_18_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_18_label aria-expanded=false> <label class=md-nav__title for=__nav_2_18> <span class="md-nav__icon md-icon"></span> Types </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../types/number_handling/ class=md-nav__link> <span class=md-ellipsis> Number Handling </span> </a> </li> </ul> </nav> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_3> <div class="md-nav__link md-nav__container"> <a href=../../integration/ class="md-nav__link "> <span class=md-ellipsis> Integration </span> </a> <label class="md-nav__link " for=__nav_3 id=__nav_3_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_3_label aria-expanded=false> <label class=md-nav__title for=__nav_3> <span class="md-nav__icon md-icon"></span> Integration </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../integration/migration_guide/ class=md-nav__link> <span class=md-ellipsis> Migration Guide </span> </a> </li> <li class=md-nav__item> <a href=../../integration/cmake/ class=md-nav__link> <span class=md-ellipsis> CMake </span> </a> </li> <li class=md-nav__item> <a href=../../integration/package_managers/ class=md-nav__link> <span class=md-ellipsis> Package Managers </span> </a> </li> <li class=md-nav__item> <a href=../../integration/pkg-config/ class=md-nav__link> <span class=md-ellipsis> Pkg-config </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4> <label class=md-nav__link for=__nav_4 id=__nav_4_label tabindex=0> <span class=md-ellipsis> API Documentation </span> <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_4_label aria-expanded=false> <label class=md-nav__title for=__nav_4> <span class="md-nav__icon md-icon"></span> API Documentation </label> <ul class=md-nav__list data-md-scrollfix> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_1> <div class="md-nav__link md-nav__container"> <a href=../../api/basic_json/ class="md-nav__link "> <span class=md-ellipsis> basic_json </span> </a> <label class="md-nav__link " for=__nav_4_1 id=__nav_4_1_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_1_label aria-expanded=false> <label class=md-nav__title for=__nav_4_1> <span class="md-nav__icon md-icon"></span> basic_json </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../api/basic_json/basic_json/ class=md-nav__link> <span class=md-ellipsis> (Constructor) </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/~basic_json/ class=md-nav__link> <span class=md-ellipsis> (Destructor) </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/accept/ class=md-nav__link> <span class=md-ellipsis> accept </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/array/ class=md-nav__link> <span class=md-ellipsis> array </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/array_t/ class=md-nav__link> <span class=md-ellipsis> array_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/at/ class=md-nav__link> <span class=md-ellipsis> at </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/back/ class=md-nav__link> <span class=md-ellipsis> back </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/begin/ class=md-nav__link> <span class=md-ellipsis> begin </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/binary/ class=md-nav__link> <span class=md-ellipsis> binary </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/binary_t/ class=md-nav__link> <span class=md-ellipsis> binary_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/boolean_t/ class=md-nav__link> <span class=md-ellipsis> boolean_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/cbegin/ class=md-nav__link> <span class=md-ellipsis> cbegin </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/cbor_tag_handler_t/ class=md-nav__link> <span class=md-ellipsis> cbor_tag_handler_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/cend/ class=md-nav__link> <span class=md-ellipsis> cend </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/clear/ class=md-nav__link> <span class=md-ellipsis> clear </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/contains/ class=md-nav__link> <span class=md-ellipsis> contains </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/count/ class=md-nav__link> <span class=md-ellipsis> count </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/crbegin/ class=md-nav__link> <span class=md-ellipsis> crbegin </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/crend/ class=md-nav__link> <span class=md-ellipsis> crend </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/default_object_comparator_t/ class=md-nav__link> <span class=md-ellipsis> default_object_comparator_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/diff/ class=md-nav__link> <span class=md-ellipsis> diff </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/dump/ class=md-nav__link> <span class=md-ellipsis> dump </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/emplace/ class=md-nav__link> <span class=md-ellipsis> emplace </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/emplace_back/ class=md-nav__link> <span class=md-ellipsis> emplace_back </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/empty/ class=md-nav__link> <span class=md-ellipsis> empty </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/end/ class=md-nav__link> <span class=md-ellipsis> end </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/end_pos/ class=md-nav__link> <span class=md-ellipsis> end_pos </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/erase/ class=md-nav__link> <span class=md-ellipsis> erase </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/error_handler_t/ class=md-nav__link> <span class=md-ellipsis> error_handler_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/exception/ class=md-nav__link> <span class=md-ellipsis> exception </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/find/ class=md-nav__link> <span class=md-ellipsis> find </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/flatten/ class=md-nav__link> <span class=md-ellipsis> flatten </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/from_bjdata/ class=md-nav__link> <span class=md-ellipsis> from_bjdata </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/from_bson/ class=md-nav__link> <span class=md-ellipsis> from_bson </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/from_cbor/ class=md-nav__link> <span class=md-ellipsis> from_cbor </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/from_msgpack/ class=md-nav__link> <span class=md-ellipsis> from_msgpack </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/from_ubjson/ class=md-nav__link> <span class=md-ellipsis> from_ubjson </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/front/ class=md-nav__link> <span class=md-ellipsis> front </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/get/ class=md-nav__link> <span class=md-ellipsis> get </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/get_allocator/ class=md-nav__link> <span class=md-ellipsis> get_allocator </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/get_binary/ class=md-nav__link> <span class=md-ellipsis> get_binary </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/get_ptr/ class=md-nav__link> <span class=md-ellipsis> get_ptr </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/get_ref/ class=md-nav__link> <span class=md-ellipsis> get_ref </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/get_to/ class=md-nav__link> <span class=md-ellipsis> get_to </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/std_hash/ class=md-nav__link> <span class=md-ellipsis> std::hash&lt;basic_json&gt; </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/input_format_t/ class=md-nav__link> <span class=md-ellipsis> input_format_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/insert/ class=md-nav__link> <span class=md-ellipsis> insert </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/invalid_iterator/ class=md-nav__link> <span class=md-ellipsis> invalid_iterator </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_array/ class=md-nav__link> <span class=md-ellipsis> is_array </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_binary/ class=md-nav__link> <span class=md-ellipsis> is_binary </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_boolean/ class=md-nav__link> <span class=md-ellipsis> is_boolean </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_discarded/ class=md-nav__link> <span class=md-ellipsis> is_discarded </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_null/ class=md-nav__link> <span class=md-ellipsis> is_null </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_number/ class=md-nav__link> <span class=md-ellipsis> is_number </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_number_float/ class=md-nav__link> <span class=md-ellipsis> is_number_float </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_number_integer/ class=md-nav__link> <span class=md-ellipsis> is_number_integer </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_number_unsigned/ class=md-nav__link> <span class=md-ellipsis> is_number_unsigned </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_object/ class=md-nav__link> <span class=md-ellipsis> is_object </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_primitive/ class=md-nav__link> <span class=md-ellipsis> is_primitive </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_string/ class=md-nav__link> <span class=md-ellipsis> is_string </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_structured/ class=md-nav__link> <span class=md-ellipsis> is_structured </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/items/ class=md-nav__link> <span class=md-ellipsis> items </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/json_base_class_t/ class=md-nav__link> <span class=md-ellipsis> json_base_class_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/json_serializer/ class=md-nav__link> <span class=md-ellipsis> json_serializer </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/max_size/ class=md-nav__link> <span class=md-ellipsis> max_size </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/meta/ class=md-nav__link> <span class=md-ellipsis> meta </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/merge_patch/ class=md-nav__link> <span class=md-ellipsis> merge_patch </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/number_float_t/ class=md-nav__link> <span class=md-ellipsis> number_float_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/number_integer_t/ class=md-nav__link> <span class=md-ellipsis> number_integer_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/number_unsigned_t/ class=md-nav__link> <span class=md-ellipsis> number_unsigned_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/object/ class=md-nav__link> <span class=md-ellipsis> object </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/object_comparator_t/ class=md-nav__link> <span class=md-ellipsis> object_comparator_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/object_t/ class=md-nav__link> <span class=md-ellipsis> object_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/operator_ValueType/ class=md-nav__link> <span class=md-ellipsis> operator ValueType </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/operator_value_t/ class=md-nav__link> <span class=md-ellipsis> operator value_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/operator%5B%5D/ class=md-nav__link> <span class=md-ellipsis> operator[] </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/operator%3D/ class=md-nav__link> <span class=md-ellipsis> operator= </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/operator%2B%3D/ class=md-nav__link> <span class=md-ellipsis> operator+= </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/operator_eq/ class=md-nav__link> <span class=md-ellipsis> operator== </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/operator_ne/ class=md-nav__link> <span class=md-ellipsis> operator!= </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/operator_lt/ class=md-nav__link> <span class=md-ellipsis> operator< </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/operator_gt/ class=md-nav__link> <span class=md-ellipsis> operator> </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/operator_le/ class=md-nav__link> <span class=md-ellipsis> operator<= </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/operator_ge/ class=md-nav__link> <span class=md-ellipsis> operator>= </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/operator_spaceship/ class=md-nav__link> <span class=md-ellipsis> operator<=> </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/out_of_range/ class=md-nav__link> <span class=md-ellipsis> out_of_range </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/other_error/ class=md-nav__link> <span class=md-ellipsis> other_error </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/parse/ class=md-nav__link> <span class=md-ellipsis> parse </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/parse_error/ class=md-nav__link> <span class=md-ellipsis> parse_error </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/parse_event_t/ class=md-nav__link> <span class=md-ellipsis> parse_event_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/parser_callback_t/ class=md-nav__link> <span class=md-ellipsis> parser_callback_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/patch/ class=md-nav__link> <span class=md-ellipsis> patch </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/patch_inplace/ class=md-nav__link> <span class=md-ellipsis> patch_inplace </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/push_back/ class=md-nav__link> <span class=md-ellipsis> push_back </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/rbegin/ class=md-nav__link> <span class=md-ellipsis> rbegin </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/rend/ class=md-nav__link> <span class=md-ellipsis> rend </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/sax_parse/ class=md-nav__link> <span class=md-ellipsis> sax_parse </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/size/ class=md-nav__link> <span class=md-ellipsis> size </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/start_pos/ class=md-nav__link> <span class=md-ellipsis> start_pos </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/string_t/ class=md-nav__link> <span class=md-ellipsis> string_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/swap/ class=md-nav__link> <span class=md-ellipsis> swap </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/std_swap/ class=md-nav__link> <span class=md-ellipsis> std::swap&lt;basic_json&gt; </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/to_bjdata/ class=md-nav__link> <span class=md-ellipsis> to_bjdata </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/to_bson/ class=md-nav__link> <span class=md-ellipsis> to_bson </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/to_cbor/ class=md-nav__link> <span class=md-ellipsis> to_cbor </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/to_msgpack/ class=md-nav__link> <span class=md-ellipsis> to_msgpack </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/to_string/ class=md-nav__link> <span class=md-ellipsis> to_string </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/to_ubjson/ class=md-nav__link> <span class=md-ellipsis> to_ubjson </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/type/ class=md-nav__link> <span class=md-ellipsis> type </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/type_error/ class=md-nav__link> <span class=md-ellipsis> type_error </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/type_name/ class=md-nav__link> <span class=md-ellipsis> type_name </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/unflatten/ class=md-nav__link> <span class=md-ellipsis> unflatten </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/update/ class=md-nav__link> <span class=md-ellipsis> update </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/value/ class=md-nav__link> <span class=md-ellipsis> value </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/value_t/ class=md-nav__link> <span class=md-ellipsis> value_t </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_2> <div class="md-nav__link md-nav__container"> <a href=../../api/byte_container_with_subtype/ class="md-nav__link "> <span class=md-ellipsis> byte_container_with_subtype </span> </a> <label class="md-nav__link " for=__nav_4_2 id=__nav_4_2_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_2_label aria-expanded=false> <label class=md-nav__title for=__nav_4_2> <span class="md-nav__icon md-icon"></span> byte_container_with_subtype </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../api/byte_container_with_subtype/byte_container_with_subtype/ class=md-nav__link> <span class=md-ellipsis> (constructor) </span> </a> </li> <li class=md-nav__item> <a href=../../api/byte_container_with_subtype/clear_subtype/ class=md-nav__link> <span class=md-ellipsis> clear_subtype </span> </a> </li> <li class=md-nav__item> <a href=../../api/byte_container_with_subtype/has_subtype/ class=md-nav__link> <span class=md-ellipsis> has_subtype </span> </a> </li> <li class=md-nav__item> <a href=../../api/byte_container_with_subtype/set_subtype/ class=md-nav__link> <span class=md-ellipsis> set_subtype </span> </a> </li> <li class=md-nav__item> <a href=../../api/byte_container_with_subtype/subtype/ class=md-nav__link> <span class=md-ellipsis> subtype </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_3> <div class="md-nav__link md-nav__container"> <a href=../../api/adl_serializer/ class="md-nav__link "> <span class=md-ellipsis> adl_serializer </span> </a> <label class="md-nav__link " for=__nav_4_3 id=__nav_4_3_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_3_label aria-expanded=false> <label class=md-nav__title for=__nav_4_3> <span class="md-nav__icon md-icon"></span> adl_serializer </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../api/adl_serializer/from_json/ class=md-nav__link> <span class=md-ellipsis> from_json </span> </a> </li> <li class=md-nav__item> <a href=../../api/adl_serializer/to_json/ class=md-nav__link> <span class=md-ellipsis> to_json </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../api/json/ class=md-nav__link> <span class=md-ellipsis> json </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_5> <div class="md-nav__link md-nav__container"> <a href=../../api/json_pointer/ class="md-nav__link "> <span class=md-ellipsis> json_pointer </span> </a> <label class="md-nav__link " for=__nav_4_5 id=__nav_4_5_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_5_label aria-expanded=false> <label class=md-nav__title for=__nav_4_5> <span class="md-nav__icon md-icon"></span> json_pointer </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../api/json_pointer/json_pointer/ class=md-nav__link> <span class=md-ellipsis> (Constructor) </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/back/ class=md-nav__link> <span class=md-ellipsis> back </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/empty/ class=md-nav__link> <span class=md-ellipsis> empty </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/front/ class=md-nav__link> <span class=md-ellipsis> front </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/operator_string_t/ class=md-nav__link> <span class=md-ellipsis> operator string_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/operator_eq/ class=md-nav__link> <span class=md-ellipsis> operator== </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/operator_ne/ class=md-nav__link> <span class=md-ellipsis> operator!= </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/operator_slash/ class=md-nav__link> <span class=md-ellipsis> operator/ </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/operator_slasheq/ class=md-nav__link> <span class=md-ellipsis> operator/= </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/parent_pointer/ class=md-nav__link> <span class=md-ellipsis> parent_pointer </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/pop_back/ class=md-nav__link> <span class=md-ellipsis> pop_back </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/pop_front/ class=md-nav__link> <span class=md-ellipsis> pop_front </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/push_back/ class=md-nav__link> <span class=md-ellipsis> push_back </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/push_front/ class=md-nav__link> <span class=md-ellipsis> push_front </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/string_t/ class=md-nav__link> <span class=md-ellipsis> string_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/to_string/ class=md-nav__link> <span class=md-ellipsis> to_string </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_6> <div class="md-nav__link md-nav__container"> <a href=../../api/json_sax/ class="md-nav__link "> <span class=md-ellipsis> json_sax </span> </a> <label class="md-nav__link " for=__nav_4_6 id=__nav_4_6_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_6_label aria-expanded=false> <label class=md-nav__title for=__nav_4_6> <span class="md-nav__icon md-icon"></span> json_sax </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../api/json_sax/binary/ class=md-nav__link> <span class=md-ellipsis> binary </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_sax/boolean/ class=md-nav__link> <span class=md-ellipsis> boolean </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_sax/end_array/ class=md-nav__link> <span class=md-ellipsis> end_array </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_sax/end_object/ class=md-nav__link> <span class=md-ellipsis> end_object </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_sax/key/ class=md-nav__link> <span class=md-ellipsis> key </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_sax/null/ class=md-nav__link> <span class=md-ellipsis> null </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_sax/number_float/ class=md-nav__link> <span class=md-ellipsis> number_float </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_sax/number_integer/ class=md-nav__link> <span class=md-ellipsis> number_integer </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_sax/number_unsigned/ class=md-nav__link> <span class=md-ellipsis> number_unsigned </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_sax/parse_error/ class=md-nav__link> <span class=md-ellipsis> parse_error </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_sax/start_array/ class=md-nav__link> <span class=md-ellipsis> start_array </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_sax/start_object/ class=md-nav__link> <span class=md-ellipsis> start_object </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_sax/string/ class=md-nav__link> <span class=md-ellipsis> string </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../api/operator_ltlt/ class=md-nav__link> <span class=md-ellipsis> operator<<(basic_json), operator<<(json_pointer) </span> </a> </li> <li class=md-nav__item> <a href=../../api/operator_gtgt/ class=md-nav__link> <span class=md-ellipsis> operator>>(basic_json) </span> </a> </li> <li class=md-nav__item> <a href=../../api/operator_literal_json/ class=md-nav__link> <span class=md-ellipsis> operator""_json </span> </a> </li> <li class=md-nav__item> <a href=../../api/operator_literal_json_pointer/ class=md-nav__link> <span class=md-ellipsis> operator""_json_pointer </span> </a> </li> <li class=md-nav__item> <a href=../../api/ordered_json/ class=md-nav__link> <span class=md-ellipsis> ordered_json </span> </a> </li> <li class=md-nav__item> <a href=../../api/ordered_map/ class=md-nav__link> <span class=md-ellipsis> ordered_map </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_13> <div class="md-nav__link md-nav__container"> <a href=../../api/macros/ class="md-nav__link "> <span class=md-ellipsis> macros </span> </a> <label class="md-nav__link " for=__nav_4_13 id=__nav_4_13_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_13_label aria-expanded=false> <label class=md-nav__title for=__nav_4_13> <span class="md-nav__icon md-icon"></span> macros </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../api/macros/json_assert/ class=md-nav__link> <span class=md-ellipsis> JSON_ASSERT </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_brace_init_copy_semantics/ class=md-nav__link> <span class=md-ellipsis> JSON_BRACE_INIT_COPY_SEMANTICS </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_throw_user/ class=md-nav__link> <span class=md-ellipsis> JSON_CATCH_USER, JSON_THROW_USER, JSON_TRY_USER </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_diagnostics/ class=md-nav__link> <span class=md-ellipsis> JSON_DIAGNOSTICS </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_diagnostic_positions/ class=md-nav__link> <span class=md-ellipsis> JSON_DIAGNOSTIC_POSITIONS </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_disable_enum_serialization/ class=md-nav__link> <span class=md-ellipsis> JSON_DISABLE_ENUM_SERIALIZATION </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_has_cpp_11/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_CPP_11, JSON_HAS_CPP_14, JSON_HAS_CPP_17, JSON_HAS_CPP_20 </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_has_filesystem/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_EXPERIMENTAL_FILESYSTEM, JSON_HAS_FILESYSTEM </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_has_ranges/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_RANGES </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_has_static_rtti/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_STATIC_RTTI </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_has_three_way_comparison/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_THREE_WAY_COMPARISON </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_noexception/ class=md-nav__link> <span class=md-ellipsis> JSON_NOEXCEPTION </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_no_io/ class=md-nav__link> <span class=md-ellipsis> JSON_NO_IO </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_skip_library_version_check/ class=md-nav__link> <span class=md-ellipsis> JSON_SKIP_LIBRARY_VERSION_CHECK </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_skip_unsupported_compiler_check/ class=md-nav__link> <span class=md-ellipsis> JSON_SKIP_UNSUPPORTED_COMPILER_CHECK </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_use_global_udls/ class=md-nav__link> <span class=md-ellipsis> JSON_USE_GLOBAL_UDLS </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_use_implicit_conversions/ class=md-nav__link> <span class=md-ellipsis> JSON_USE_IMPLICIT_CONVERSIONS </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_use_legacy_discarded_value_comparison/ class=md-nav__link> <span class=md-ellipsis> JSON_USE_LEGACY_DISCARDED_VALUE_COMPARISON </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/nlohmann_define_derived_type/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_ONLY_SERIALIZE, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/nlohmann_define_type_intrusive/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_TYPE_INTRUSIVE, NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_TYPE_INTRUSIVE_ONLY_SERIALIZE </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/nlohmann_define_type_non_intrusive/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/nlohmann_define_type_with_names/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_TYPE_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/nlohmann_json_namespace/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_NAMESPACE </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/nlohmann_json_namespace_begin/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_NAMESPACE_BEGIN, NLOHMANN_JSON_NAMESPACE_END </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/nlohmann_json_namespace_no_version/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_NAMESPACE_NO_VERSION </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/nlohmann_json_serialize_enum/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_SERIALIZE_ENUM </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/nlohmann_json_serialize_enum_strict/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_SERIALIZE_ENUM_STRICT </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/nlohmann_json_version_major/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_VERSION_MAJOR, NLOHMANN_JSON_VERSION_MINOR, NLOHMANN_JSON_VERSION_PATCH </span> </a> </li> </ul> </nav> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_5> <div class="md-nav__link md-nav__container"> <a href=../../community/ class="md-nav__link "> <span class=md-ellipsis> Community </span> </a> <label class="md-nav__link " for=__nav_5 id=__nav_5_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_5_label aria-expanded=false> <label class=md-nav__title for=__nav_5> <span class="md-nav__icon md-icon"></span> Community </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../community/code_of_conduct/ class=md-nav__link> <span class=md-ellipsis> Code of Conduct </span> </a> </li> <li class=md-nav__item> <a href=../../community/contribution_guidelines/ class=md-nav__link> <span class=md-ellipsis> Contribution Guidelines </span> </a> </li> <li class=md-nav__item> <a href=../../community/quality_assurance/ class=md-nav__link> <span class=md-ellipsis> Quality assurance </span> </a> </li> <li class=md-nav__item> <a href=../../community/governance/ class=md-nav__link> <span class=md-ellipsis> Governance </span> </a> </li> <li class=md-nav__item> <a href=../../community/security_policy/ class=md-nav__link> <span class=md-ellipsis> Security Policy </span> </a> </li> </ul> </nav> </li> </ul> </nav> </div> </div> </div> <div class="md-sidebar md-sidebar--secondary" data-md-component=sidebar data-md-type=toc> <div class=md-sidebar__scrollwrap> <div class=md-sidebar__inner> <nav class="md-nav md-nav--secondary" aria-label="Table of contents"> </nav> </div> </div> </div> <div class=md-content data-md-component=content> <article class="md-content__inner md-typeset"> <a href="https://github.com/nlohmann/json/edit/develop/docs/mkdocs/docs/features/element_access/index.md" title="Edit this page" class="md-content__button md-icon" rel="edit"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M10 20H6V4h7v5h5v3.1l2-2V8l-6-6H6c-1.1 0-2 .9-2 2v16c0 1.1.9 2 2 2h4zm10.2-7c.1 0 .3.1.4.2l1.3 1.3c.2.2.2.6 0 .8l-1 1-2.1-2.1 1-1c.1-.1.2-.2.4-.2m0 3.9L14.1 23H12v-2.1l6.1-6.1z"/></svg> </a> <a href="https://github.com/nlohmann/json/raw/develop/docs/mkdocs/docs/features/element_access/index.md" title="View source of this page" class="md-content__button md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M17 18c.56 0 1 .44 1 1s-.44 1-1 1-1-.44-1-1 .44-1 1-1m0-3c-2.73 0-5.06 1.66-6 4 .94 2.34 3.27 4 6 4s5.06-1.66 6-4c-.94-2.34-3.27-4-6-4m0 6.5a2.5 2.5 0 0 1-2.5-2.5 2.5 2.5 0 0 1 2.5-2.5 2.5 2.5 0 0 1 2.5 2.5 2.5 2.5 0 0 1-2.5 2.5M9.27 20H6V4h7v5h5v4.07c.7.08 1.36.25 2 .49V8l-6-6H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h4.5a8.2 8.2 0 0 1-1.23-2"/></svg> </a> <h1 id=element-access>Element Access<a class=headerlink href=#element-access title="Permanent link">&para;</a></h1> <p>There are many ways elements in a <abbr title="JavaScript Object Notation">JSON</abbr> value can be accessed:</p> <ul> <li>unchecked access via <a href=unchecked_access/ ><code>operator[]</code></a></li> <li>checked access via <a href=checked_access/ ><code>at</code></a></li> <li>access with default value via <a href=default_value/ ><code>value</code></a></li> <li>iterators</li> <li><abbr title="JavaScript Object Notation">JSON</abbr> pointers</li> </ul> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 23, 2026 11:16:18 UTC">June 23, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
+<!doctype html><html lang=en class=no-js> <head><meta charset=utf-8><meta name=viewport content="width=device-width,initial-scale=1"><meta name=author content="Niels Lohmann"><link href="https://json.nlohmann.me/features/element_access/" rel="canonical"><link href=../trailing_commas/ rel=prev><link href=unchecked_access/ rel=next><link rel=icon href=../../assets/images/favicon.png><meta name=generator content="mkdocs-1.6.1, mkdocs-material-9.7.6"><title>Element Access - JSON for Modern C++</title><link rel=stylesheet href=../../assets/stylesheets/main.484c7ddc.min.css><link rel=stylesheet href=../../assets/stylesheets/palette.ab4e12ef.min.css><link rel="stylesheet" href="../../assets/external/fonts.googleapis.com/css.61a430c9.css"><style>:root{--md-text-font:"Roboto";--md-code-font:"JetBrains Mono"}</style><link rel=stylesheet href=../../css/custom.css><script>__md_scope=new URL("../..",location),__md_hash=e=>[...e].reduce(((e,_)=>(e<<5)-e+_.charCodeAt(0)),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script></head> <body dir=ltr data-md-color-scheme=default data-md-color-primary=indigo data-md-color-accent=indigo> <input class=md-toggle data-md-toggle=drawer type=checkbox id=__drawer autocomplete=off> <input class=md-toggle data-md-toggle=search type=checkbox id=__search autocomplete=off> <label class=md-overlay for=__drawer></label> <div data-md-component=skip> <a href=#element-access class=md-skip> Skip to content </a> </div> <div data-md-component=announce> </div> <header class=md-header data-md-component=header> <nav class="md-header__inner md-grid" aria-label=Header> <a href=../.. title="JSON for Modern C++" class="md-header__button md-logo" aria-label="JSON for Modern C++" data-md-component=logo> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54"/></svg> </a> <label class="md-header__button md-icon" for=__drawer> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M3 6h18v2H3zm0 5h18v2H3zm0 5h18v2H3z"/></svg> </label> <div class=md-header__title data-md-component=header-title> <div class=md-header__ellipsis> <div class=md-header__topic> <span class=md-ellipsis> JSON for Modern C++ </span> </div> <div class=md-header__topic data-md-component=header-topic> <span class=md-ellipsis> Element Access </span> </div> </div> </div> <form class=md-header__option data-md-component=palette> <input class=md-option data-md-color-media="(prefers-color-scheme: light)" data-md-color-scheme=default data-md-color-primary=indigo data-md-color-accent=indigo aria-label="Switch to dark mode" type=radio name=__palette id=__palette_0> <label class="md-header__button md-icon" title="Switch to dark mode" for=__palette_1 hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a4 4 0 0 0-4 4 4 4 0 0 0 4 4 4 4 0 0 0 4-4 4 4 0 0 0-4-4m0 10a6 6 0 0 1-6-6 6 6 0 0 1 6-6 6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12z"/></svg> </label> <input class=md-option data-md-color-media="(prefers-color-scheme: dark)" data-md-color-scheme=slate data-md-color-primary=indigo data-md-color-accent=indigo aria-label="Switch to light mode" type=radio name=__palette id=__palette_1> <label class="md-header__button md-icon" title="Switch to light mode" for=__palette_0 hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 18c-.89 0-1.74-.2-2.5-.55C11.56 16.5 13 14.42 13 12s-1.44-4.5-3.5-5.45C10.26 6.2 11.11 6 12 6a6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12z"/></svg> </label> </form> <script>var palette=__md_get("__palette");if(palette&&palette.color){if("(prefers-color-scheme)"===palette.color.media){var media=matchMedia("(prefers-color-scheme: light)"),input=document.querySelector(media.matches?"[data-md-color-media='(prefers-color-scheme: light)']":"[data-md-color-media='(prefers-color-scheme: dark)']");palette.color.media=input.getAttribute("data-md-color-media"),palette.color.scheme=input.getAttribute("data-md-color-scheme"),palette.color.primary=input.getAttribute("data-md-color-primary"),palette.color.accent=input.getAttribute("data-md-color-accent")}for(var[key,value]of Object.entries(palette.color))document.body.setAttribute("data-md-color-"+key,value)}</script> <label class="md-header__button md-icon" for=__search> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg> </label> <div class=md-search data-md-component=search role=dialog> <label class=md-search__overlay for=__search></label> <div class=md-search__inner role=search> <form class=md-search__form name=search> <input type=text class=md-search__input name=query aria-label=Search placeholder=Search autocapitalize=off autocorrect=off autocomplete=off spellcheck=false data-md-component=search-query required> <label class="md-search__icon md-icon" for=__search> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11z"/></svg> </label> <nav class=md-search__options aria-label=Search> <button type=reset class="md-search__icon md-icon" title=Clear aria-label=Clear tabindex=-1> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z"/></svg> </button> </nav> </form> <div class=md-search__output> <div class=md-search__scrollwrap tabindex=0 data-md-scrollfix> <div class=md-search-result data-md-component=search-result> <div class=md-search-result__meta> Initializing search </div> <ol class=md-search-result__list role=presentation></ol> </div> </div> </div> </div> </div> <div class=md-header__source> <a href="https://github.com/nlohmann/json" title="Go to repository" class="md-source" data-md-component="source"> <div class="md-source__icon md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </div> <div class=md-source__repository> nlohmann/json </div> </a> </div> </nav> </header> <div class=md-container data-md-component=container> <nav class=md-tabs aria-label=Tabs data-md-component=tabs> <div class=md-grid> <ul class=md-tabs__list> <li class=md-tabs__item> <a href=../.. class=md-tabs__link> Home </a> </li> <li class="md-tabs__item md-tabs__item--active"> <a href=../arbitrary_types/ class=md-tabs__link> Features </a> </li> <li class=md-tabs__item> <a href=../../integration/ class=md-tabs__link> Integration </a> </li> <li class=md-tabs__item> <a href=../../api/basic_json/ class=md-tabs__link> API Documentation </a> </li> <li class=md-tabs__item> <a href=../../community/ class=md-tabs__link> Community </a> </li> </ul> </div> </nav> <main class=md-main data-md-component=main> <div class="md-main__inner md-grid"> <div class="md-sidebar md-sidebar--primary" data-md-component=sidebar data-md-type=navigation> <div class=md-sidebar__scrollwrap> <div class=md-sidebar__inner> <nav class="md-nav md-nav--primary md-nav--lifted" aria-label=Navigation data-md-level=0> <label class=md-nav__title for=__drawer> <a href=../.. title="JSON for Modern C++" class="md-nav__button md-logo" aria-label="JSON for Modern C++" data-md-component=logo> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54"/></svg> </a> JSON for Modern C++ </label> <div class=md-nav__source> <a href="https://github.com/nlohmann/json" title="Go to repository" class="md-source" data-md-component="source"> <div class="md-source__icon md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </div> <div class=md-source__repository> nlohmann/json </div> </a> </div> <ul class=md-nav__list data-md-scrollfix> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_1> <div class="md-nav__link md-nav__container"> <a href=../.. class="md-nav__link "> <span class=md-ellipsis> Home </span> </a> <label class="md-nav__link " for=__nav_1 id=__nav_1_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_1_label aria-expanded=false> <label class=md-nav__title for=__nav_1> <span class="md-nav__icon md-icon"></span> Home </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../home/license/ class=md-nav__link> <span class=md-ellipsis> License </span> </a> </li> <li class=md-nav__item> <a href=../../home/faq/ class=md-nav__link> <span class=md-ellipsis> FAQ </span> </a> </li> <li class=md-nav__item> <a href=../../home/exceptions/ class=md-nav__link> <span class=md-ellipsis> Exceptions </span> </a> </li> <li class=md-nav__item> <a href=../../home/releases/ class=md-nav__link> <span class=md-ellipsis> Releases </span> </a> </li> <li class=md-nav__item> <a href=../../home/design_goals/ class=md-nav__link> <span class=md-ellipsis> Design goals </span> </a> </li> <li class=md-nav__item> <a href=../../home/architecture/ class=md-nav__link> <span class=md-ellipsis> Architecture </span> </a> </li> <li class=md-nav__item> <a href=../../home/customers/ class=md-nav__link> <span class=md-ellipsis> Customers </span> </a> </li> <li class=md-nav__item> <a href=../../home/sponsors/ class=md-nav__link> <span class=md-ellipsis> Sponsors </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--active md-nav__item--section md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2 checked> <label class=md-nav__link for=__nav_2 id=__nav_2_label tabindex> <span class=md-ellipsis> Features </span> <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_2_label aria-expanded=true> <label class=md-nav__title for=__nav_2> <span class="md-nav__icon md-icon"></span> Features </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../arbitrary_types/ class=md-nav__link> <span class=md-ellipsis> Arbitrary Type Conversions </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_2> <div class="md-nav__link md-nav__container"> <a href=../binary_formats/ class="md-nav__link "> <span class=md-ellipsis> Binary Formats </span> </a> <label class="md-nav__link " for=__nav_2_2 id=__nav_2_2_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_2_label aria-expanded=false> <label class=md-nav__title for=__nav_2_2> <span class="md-nav__icon md-icon"></span> Binary Formats </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../binary_formats/bjdata/ class=md-nav__link> <span class=md-ellipsis> BJData </span> </a> </li> <li class=md-nav__item> <a href=../binary_formats/bson/ class=md-nav__link> <span class=md-ellipsis> BSON </span> </a> </li> <li class=md-nav__item> <a href=../binary_formats/cbor/ class=md-nav__link> <span class=md-ellipsis> CBOR </span> </a> </li> <li class=md-nav__item> <a href=../binary_formats/messagepack/ class=md-nav__link> <span class=md-ellipsis> MessagePack </span> </a> </li> <li class=md-nav__item> <a href=../binary_formats/ubjson/ class=md-nav__link> <span class=md-ellipsis> UBJSON </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../binary_values/ class=md-nav__link> <span class=md-ellipsis> Binary Values </span> </a> </li> <li class=md-nav__item> <a href=../comments/ class=md-nav__link> <span class=md-ellipsis> Comments </span> </a> </li> <li class=md-nav__item> <a href=../trailing_commas/ class=md-nav__link> <span class=md-ellipsis> Trailing Commas </span> </a> </li> <li class="md-nav__item md-nav__item--active md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_6 checked> <div class="md-nav__link md-nav__container"> <a href=./ class="md-nav__link md-nav__link--active"> <span class=md-ellipsis> Element Access </span> </a> <label class="md-nav__link md-nav__link--active" for=__nav_2_6 id=__nav_2_6_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_6_label aria-expanded=true> <label class=md-nav__title for=__nav_2_6> <span class="md-nav__icon md-icon"></span> Element Access </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=unchecked_access/ class=md-nav__link> <span class=md-ellipsis> Unchecked access: operator[] </span> </a> </li> <li class=md-nav__item> <a href=checked_access/ class=md-nav__link> <span class=md-ellipsis> Checked access: at </span> </a> </li> <li class=md-nav__item> <a href=default_value/ class=md-nav__link> <span class=md-ellipsis> Access with default value: value </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../iterators/ class=md-nav__link> <span class=md-ellipsis> Iterators </span> </a> </li> <li class=md-nav__item> <a href=../json_pointer/ class=md-nav__link> <span class=md-ellipsis> JSON Pointer </span> </a> </li> <li class=md-nav__item> <a href=../json_patch/ class=md-nav__link> <span class=md-ellipsis> JSON Patch and Diff </span> </a> </li> <li class=md-nav__item> <a href=../merge_patch/ class=md-nav__link> <span class=md-ellipsis> JSON Merge Patch </span> </a> </li> <li class=md-nav__item> <a href=../modules/ class=md-nav__link> <span class=md-ellipsis> Modules </span> </a> </li> <li class=md-nav__item> <a href=../namespace/ class=md-nav__link> <span class=md-ellipsis> nlohmann Namespace </span> </a> </li> <li class=md-nav__item> <a href=../object_order/ class=md-nav__link> <span class=md-ellipsis> Object Order </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_14> <div class="md-nav__link md-nav__container"> <a href=../parsing/ class="md-nav__link "> <span class=md-ellipsis> Parsing </span> </a> <label class="md-nav__link " for=__nav_2_14 id=__nav_2_14_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_14_label aria-expanded=false> <label class=md-nav__title for=__nav_2_14> <span class="md-nav__icon md-icon"></span> Parsing </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../parsing/json_lines/ class=md-nav__link> <span class=md-ellipsis> JSON Lines </span> </a> </li> <li class=md-nav__item> <a href=../parsing/parse_exceptions/ class=md-nav__link> <span class=md-ellipsis> Parsing and Exceptions </span> </a> </li> <li class=md-nav__item> <a href=../parsing/parser_callbacks/ class=md-nav__link> <span class=md-ellipsis> Parser Callbacks </span> </a> </li> <li class=md-nav__item> <a href=../parsing/sax_interface/ class=md-nav__link> <span class=md-ellipsis> SAX Interface </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../assertions/ class=md-nav__link> <span class=md-ellipsis> Runtime Assertions </span> </a> </li> <li class=md-nav__item> <a href=../enum_conversion/ class=md-nav__link> <span class=md-ellipsis> Specializing enum conversion </span> </a> </li> <li class=md-nav__item> <a href=../macros/ class=md-nav__link> <span class=md-ellipsis> Supported Macros </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_18> <div class="md-nav__link md-nav__container"> <a href=../types/ class="md-nav__link "> <span class=md-ellipsis> Types </span> </a> <label class="md-nav__link " for=__nav_2_18 id=__nav_2_18_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_18_label aria-expanded=false> <label class=md-nav__title for=__nav_2_18> <span class="md-nav__icon md-icon"></span> Types </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../types/number_handling/ class=md-nav__link> <span class=md-ellipsis> Number Handling </span> </a> </li> </ul> </nav> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_3> <div class="md-nav__link md-nav__container"> <a href=../../integration/ class="md-nav__link "> <span class=md-ellipsis> Integration </span> </a> <label class="md-nav__link " for=__nav_3 id=__nav_3_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_3_label aria-expanded=false> <label class=md-nav__title for=__nav_3> <span class="md-nav__icon md-icon"></span> Integration </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../integration/migration_guide/ class=md-nav__link> <span class=md-ellipsis> Migration Guide </span> </a> </li> <li class=md-nav__item> <a href=../../integration/cmake/ class=md-nav__link> <span class=md-ellipsis> CMake </span> </a> </li> <li class=md-nav__item> <a href=../../integration/package_managers/ class=md-nav__link> <span class=md-ellipsis> Package Managers </span> </a> </li> <li class=md-nav__item> <a href=../../integration/pkg-config/ class=md-nav__link> <span class=md-ellipsis> Pkg-config </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4> <label class=md-nav__link for=__nav_4 id=__nav_4_label tabindex=0> <span class=md-ellipsis> API Documentation </span> <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_4_label aria-expanded=false> <label class=md-nav__title for=__nav_4> <span class="md-nav__icon md-icon"></span> API Documentation </label> <ul class=md-nav__list data-md-scrollfix> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_1> <div class="md-nav__link md-nav__container"> <a href=../../api/basic_json/ class="md-nav__link "> <span class=md-ellipsis> basic_json </span> </a> <label class="md-nav__link " for=__nav_4_1 id=__nav_4_1_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_1_label aria-expanded=false> <label class=md-nav__title for=__nav_4_1> <span class="md-nav__icon md-icon"></span> basic_json </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../api/basic_json/basic_json/ class=md-nav__link> <span class=md-ellipsis> (Constructor) </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/~basic_json/ class=md-nav__link> <span class=md-ellipsis> (Destructor) </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/accept/ class=md-nav__link> <span class=md-ellipsis> accept </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/array/ class=md-nav__link> <span class=md-ellipsis> array </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/array_t/ class=md-nav__link> <span class=md-ellipsis> array_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/at/ class=md-nav__link> <span class=md-ellipsis> at </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/back/ class=md-nav__link> <span class=md-ellipsis> back </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/begin/ class=md-nav__link> <span class=md-ellipsis> begin </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/binary/ class=md-nav__link> <span class=md-ellipsis> binary </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/binary_t/ class=md-nav__link> <span class=md-ellipsis> binary_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/boolean_t/ class=md-nav__link> <span class=md-ellipsis> boolean_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/cbegin/ class=md-nav__link> <span class=md-ellipsis> cbegin </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/cbor_tag_handler_t/ class=md-nav__link> <span class=md-ellipsis> cbor_tag_handler_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/cend/ class=md-nav__link> <span class=md-ellipsis> cend </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/clear/ class=md-nav__link> <span class=md-ellipsis> clear </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/contains/ class=md-nav__link> <span class=md-ellipsis> contains </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/count/ class=md-nav__link> <span class=md-ellipsis> count </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/crbegin/ class=md-nav__link> <span class=md-ellipsis> crbegin </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/crend/ class=md-nav__link> <span class=md-ellipsis> crend </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/default_object_comparator_t/ class=md-nav__link> <span class=md-ellipsis> default_object_comparator_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/diff/ class=md-nav__link> <span class=md-ellipsis> diff </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/dump/ class=md-nav__link> <span class=md-ellipsis> dump </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/emplace/ class=md-nav__link> <span class=md-ellipsis> emplace </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/emplace_back/ class=md-nav__link> <span class=md-ellipsis> emplace_back </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/empty/ class=md-nav__link> <span class=md-ellipsis> empty </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/end/ class=md-nav__link> <span class=md-ellipsis> end </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/end_pos/ class=md-nav__link> <span class=md-ellipsis> end_pos </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/erase/ class=md-nav__link> <span class=md-ellipsis> erase </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/error_handler_t/ class=md-nav__link> <span class=md-ellipsis> error_handler_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/exception/ class=md-nav__link> <span class=md-ellipsis> exception </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/find/ class=md-nav__link> <span class=md-ellipsis> find </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/flatten/ class=md-nav__link> <span class=md-ellipsis> flatten </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/from_bjdata/ class=md-nav__link> <span class=md-ellipsis> from_bjdata </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/from_bson/ class=md-nav__link> <span class=md-ellipsis> from_bson </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/from_cbor/ class=md-nav__link> <span class=md-ellipsis> from_cbor </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/from_msgpack/ class=md-nav__link> <span class=md-ellipsis> from_msgpack </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/from_ubjson/ class=md-nav__link> <span class=md-ellipsis> from_ubjson </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/front/ class=md-nav__link> <span class=md-ellipsis> front </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/get/ class=md-nav__link> <span class=md-ellipsis> get </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/get_allocator/ class=md-nav__link> <span class=md-ellipsis> get_allocator </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/get_binary/ class=md-nav__link> <span class=md-ellipsis> get_binary </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/get_ptr/ class=md-nav__link> <span class=md-ellipsis> get_ptr </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/get_ref/ class=md-nav__link> <span class=md-ellipsis> get_ref </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/get_to/ class=md-nav__link> <span class=md-ellipsis> get_to </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/std_hash/ class=md-nav__link> <span class=md-ellipsis> std::hash&lt;basic_json&gt; </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/input_format_t/ class=md-nav__link> <span class=md-ellipsis> input_format_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/insert/ class=md-nav__link> <span class=md-ellipsis> insert </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/invalid_iterator/ class=md-nav__link> <span class=md-ellipsis> invalid_iterator </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_array/ class=md-nav__link> <span class=md-ellipsis> is_array </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_binary/ class=md-nav__link> <span class=md-ellipsis> is_binary </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_boolean/ class=md-nav__link> <span class=md-ellipsis> is_boolean </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_discarded/ class=md-nav__link> <span class=md-ellipsis> is_discarded </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_null/ class=md-nav__link> <span class=md-ellipsis> is_null </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_number/ class=md-nav__link> <span class=md-ellipsis> is_number </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_number_float/ class=md-nav__link> <span class=md-ellipsis> is_number_float </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_number_integer/ class=md-nav__link> <span class=md-ellipsis> is_number_integer </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_number_unsigned/ class=md-nav__link> <span class=md-ellipsis> is_number_unsigned </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_object/ class=md-nav__link> <span class=md-ellipsis> is_object </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_primitive/ class=md-nav__link> <span class=md-ellipsis> is_primitive </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_string/ class=md-nav__link> <span class=md-ellipsis> is_string </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_structured/ class=md-nav__link> <span class=md-ellipsis> is_structured </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/items/ class=md-nav__link> <span class=md-ellipsis> items </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/json_base_class_t/ class=md-nav__link> <span class=md-ellipsis> json_base_class_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/json_serializer/ class=md-nav__link> <span class=md-ellipsis> json_serializer </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/max_size/ class=md-nav__link> <span class=md-ellipsis> max_size </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/meta/ class=md-nav__link> <span class=md-ellipsis> meta </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/merge_patch/ class=md-nav__link> <span class=md-ellipsis> merge_patch </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/number_float_t/ class=md-nav__link> <span class=md-ellipsis> number_float_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/number_integer_t/ class=md-nav__link> <span class=md-ellipsis> number_integer_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/number_unsigned_t/ class=md-nav__link> <span class=md-ellipsis> number_unsigned_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/object/ class=md-nav__link> <span class=md-ellipsis> object </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/object_comparator_t/ class=md-nav__link> <span class=md-ellipsis> object_comparator_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/object_t/ class=md-nav__link> <span class=md-ellipsis> object_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/operator_ValueType/ class=md-nav__link> <span class=md-ellipsis> operator ValueType </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/operator_value_t/ class=md-nav__link> <span class=md-ellipsis> operator value_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/operator%5B%5D/ class=md-nav__link> <span class=md-ellipsis> operator[] </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/operator%3D/ class=md-nav__link> <span class=md-ellipsis> operator= </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/operator%2B%3D/ class=md-nav__link> <span class=md-ellipsis> operator+= </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/operator_eq/ class=md-nav__link> <span class=md-ellipsis> operator== </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/operator_ne/ class=md-nav__link> <span class=md-ellipsis> operator!= </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/operator_lt/ class=md-nav__link> <span class=md-ellipsis> operator< </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/operator_gt/ class=md-nav__link> <span class=md-ellipsis> operator> </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/operator_le/ class=md-nav__link> <span class=md-ellipsis> operator<= </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/operator_ge/ class=md-nav__link> <span class=md-ellipsis> operator>= </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/operator_spaceship/ class=md-nav__link> <span class=md-ellipsis> operator<=> </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/out_of_range/ class=md-nav__link> <span class=md-ellipsis> out_of_range </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/other_error/ class=md-nav__link> <span class=md-ellipsis> other_error </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/parse/ class=md-nav__link> <span class=md-ellipsis> parse </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/parse_error/ class=md-nav__link> <span class=md-ellipsis> parse_error </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/parse_event_t/ class=md-nav__link> <span class=md-ellipsis> parse_event_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/parser_callback_t/ class=md-nav__link> <span class=md-ellipsis> parser_callback_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/patch/ class=md-nav__link> <span class=md-ellipsis> patch </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/patch_inplace/ class=md-nav__link> <span class=md-ellipsis> patch_inplace </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/push_back/ class=md-nav__link> <span class=md-ellipsis> push_back </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/rbegin/ class=md-nav__link> <span class=md-ellipsis> rbegin </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/rend/ class=md-nav__link> <span class=md-ellipsis> rend </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/sax_parse/ class=md-nav__link> <span class=md-ellipsis> sax_parse </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/size/ class=md-nav__link> <span class=md-ellipsis> size </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/start_pos/ class=md-nav__link> <span class=md-ellipsis> start_pos </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/string_t/ class=md-nav__link> <span class=md-ellipsis> string_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/swap/ class=md-nav__link> <span class=md-ellipsis> swap </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/std_swap/ class=md-nav__link> <span class=md-ellipsis> std::swap&lt;basic_json&gt; </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/to_bjdata/ class=md-nav__link> <span class=md-ellipsis> to_bjdata </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/to_bson/ class=md-nav__link> <span class=md-ellipsis> to_bson </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/to_cbor/ class=md-nav__link> <span class=md-ellipsis> to_cbor </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/to_msgpack/ class=md-nav__link> <span class=md-ellipsis> to_msgpack </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/to_string/ class=md-nav__link> <span class=md-ellipsis> to_string </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/to_ubjson/ class=md-nav__link> <span class=md-ellipsis> to_ubjson </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/type/ class=md-nav__link> <span class=md-ellipsis> type </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/type_error/ class=md-nav__link> <span class=md-ellipsis> type_error </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/type_name/ class=md-nav__link> <span class=md-ellipsis> type_name </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/unflatten/ class=md-nav__link> <span class=md-ellipsis> unflatten </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/update/ class=md-nav__link> <span class=md-ellipsis> update </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/value/ class=md-nav__link> <span class=md-ellipsis> value </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/value_t/ class=md-nav__link> <span class=md-ellipsis> value_t </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_2> <div class="md-nav__link md-nav__container"> <a href=../../api/byte_container_with_subtype/ class="md-nav__link "> <span class=md-ellipsis> byte_container_with_subtype </span> </a> <label class="md-nav__link " for=__nav_4_2 id=__nav_4_2_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_2_label aria-expanded=false> <label class=md-nav__title for=__nav_4_2> <span class="md-nav__icon md-icon"></span> byte_container_with_subtype </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../api/byte_container_with_subtype/byte_container_with_subtype/ class=md-nav__link> <span class=md-ellipsis> (constructor) </span> </a> </li> <li class=md-nav__item> <a href=../../api/byte_container_with_subtype/clear_subtype/ class=md-nav__link> <span class=md-ellipsis> clear_subtype </span> </a> </li> <li class=md-nav__item> <a href=../../api/byte_container_with_subtype/has_subtype/ class=md-nav__link> <span class=md-ellipsis> has_subtype </span> </a> </li> <li class=md-nav__item> <a href=../../api/byte_container_with_subtype/set_subtype/ class=md-nav__link> <span class=md-ellipsis> set_subtype </span> </a> </li> <li class=md-nav__item> <a href=../../api/byte_container_with_subtype/subtype/ class=md-nav__link> <span class=md-ellipsis> subtype </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_3> <div class="md-nav__link md-nav__container"> <a href=../../api/adl_serializer/ class="md-nav__link "> <span class=md-ellipsis> adl_serializer </span> </a> <label class="md-nav__link " for=__nav_4_3 id=__nav_4_3_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_3_label aria-expanded=false> <label class=md-nav__title for=__nav_4_3> <span class="md-nav__icon md-icon"></span> adl_serializer </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../api/adl_serializer/from_json/ class=md-nav__link> <span class=md-ellipsis> from_json </span> </a> </li> <li class=md-nav__item> <a href=../../api/adl_serializer/to_json/ class=md-nav__link> <span class=md-ellipsis> to_json </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../api/json/ class=md-nav__link> <span class=md-ellipsis> json </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_5> <div class="md-nav__link md-nav__container"> <a href=../../api/json_pointer/ class="md-nav__link "> <span class=md-ellipsis> json_pointer </span> </a> <label class="md-nav__link " for=__nav_4_5 id=__nav_4_5_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_5_label aria-expanded=false> <label class=md-nav__title for=__nav_4_5> <span class="md-nav__icon md-icon"></span> json_pointer </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../api/json_pointer/json_pointer/ class=md-nav__link> <span class=md-ellipsis> (Constructor) </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/back/ class=md-nav__link> <span class=md-ellipsis> back </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/empty/ class=md-nav__link> <span class=md-ellipsis> empty </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/front/ class=md-nav__link> <span class=md-ellipsis> front </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/operator_string_t/ class=md-nav__link> <span class=md-ellipsis> operator string_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/operator_eq/ class=md-nav__link> <span class=md-ellipsis> operator== </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/operator_ne/ class=md-nav__link> <span class=md-ellipsis> operator!= </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/operator_slash/ class=md-nav__link> <span class=md-ellipsis> operator/ </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/operator_slasheq/ class=md-nav__link> <span class=md-ellipsis> operator/= </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/parent_pointer/ class=md-nav__link> <span class=md-ellipsis> parent_pointer </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/pop_back/ class=md-nav__link> <span class=md-ellipsis> pop_back </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/pop_front/ class=md-nav__link> <span class=md-ellipsis> pop_front </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/push_back/ class=md-nav__link> <span class=md-ellipsis> push_back </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/push_front/ class=md-nav__link> <span class=md-ellipsis> push_front </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/string_t/ class=md-nav__link> <span class=md-ellipsis> string_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/to_string/ class=md-nav__link> <span class=md-ellipsis> to_string </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_6> <div class="md-nav__link md-nav__container"> <a href=../../api/json_sax/ class="md-nav__link "> <span class=md-ellipsis> json_sax </span> </a> <label class="md-nav__link " for=__nav_4_6 id=__nav_4_6_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_6_label aria-expanded=false> <label class=md-nav__title for=__nav_4_6> <span class="md-nav__icon md-icon"></span> json_sax </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../api/json_sax/binary/ class=md-nav__link> <span class=md-ellipsis> binary </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_sax/boolean/ class=md-nav__link> <span class=md-ellipsis> boolean </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_sax/end_array/ class=md-nav__link> <span class=md-ellipsis> end_array </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_sax/end_object/ class=md-nav__link> <span class=md-ellipsis> end_object </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_sax/key/ class=md-nav__link> <span class=md-ellipsis> key </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_sax/null/ class=md-nav__link> <span class=md-ellipsis> null </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_sax/number_float/ class=md-nav__link> <span class=md-ellipsis> number_float </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_sax/number_integer/ class=md-nav__link> <span class=md-ellipsis> number_integer </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_sax/number_unsigned/ class=md-nav__link> <span class=md-ellipsis> number_unsigned </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_sax/parse_error/ class=md-nav__link> <span class=md-ellipsis> parse_error </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_sax/start_array/ class=md-nav__link> <span class=md-ellipsis> start_array </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_sax/start_object/ class=md-nav__link> <span class=md-ellipsis> start_object </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_sax/string/ class=md-nav__link> <span class=md-ellipsis> string </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../api/operator_ltlt/ class=md-nav__link> <span class=md-ellipsis> operator<<(basic_json), operator<<(json_pointer) </span> </a> </li> <li class=md-nav__item> <a href=../../api/operator_gtgt/ class=md-nav__link> <span class=md-ellipsis> operator>>(basic_json) </span> </a> </li> <li class=md-nav__item> <a href=../../api/operator_literal_json/ class=md-nav__link> <span class=md-ellipsis> operator""_json </span> </a> </li> <li class=md-nav__item> <a href=../../api/operator_literal_json_pointer/ class=md-nav__link> <span class=md-ellipsis> operator""_json_pointer </span> </a> </li> <li class=md-nav__item> <a href=../../api/ordered_json/ class=md-nav__link> <span class=md-ellipsis> ordered_json </span> </a> </li> <li class=md-nav__item> <a href=../../api/ordered_map/ class=md-nav__link> <span class=md-ellipsis> ordered_map </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_13> <div class="md-nav__link md-nav__container"> <a href=../../api/macros/ class="md-nav__link "> <span class=md-ellipsis> macros </span> </a> <label class="md-nav__link " for=__nav_4_13 id=__nav_4_13_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_13_label aria-expanded=false> <label class=md-nav__title for=__nav_4_13> <span class="md-nav__icon md-icon"></span> macros </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../api/macros/json_assert/ class=md-nav__link> <span class=md-ellipsis> JSON_ASSERT </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_brace_init_copy_semantics/ class=md-nav__link> <span class=md-ellipsis> JSON_BRACE_INIT_COPY_SEMANTICS </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_throw_user/ class=md-nav__link> <span class=md-ellipsis> JSON_CATCH_USER, JSON_THROW_USER, JSON_TRY_USER </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_diagnostics/ class=md-nav__link> <span class=md-ellipsis> JSON_DIAGNOSTICS </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_diagnostic_positions/ class=md-nav__link> <span class=md-ellipsis> JSON_DIAGNOSTIC_POSITIONS </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_disable_enum_serialization/ class=md-nav__link> <span class=md-ellipsis> JSON_DISABLE_ENUM_SERIALIZATION </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_has_cpp_11/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_CPP_11, JSON_HAS_CPP_14, JSON_HAS_CPP_17, JSON_HAS_CPP_20 </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_has_filesystem/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_EXPERIMENTAL_FILESYSTEM, JSON_HAS_FILESYSTEM </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_has_ranges/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_RANGES </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_has_static_rtti/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_STATIC_RTTI </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_has_three_way_comparison/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_THREE_WAY_COMPARISON </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_noexception/ class=md-nav__link> <span class=md-ellipsis> JSON_NOEXCEPTION </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_no_io/ class=md-nav__link> <span class=md-ellipsis> JSON_NO_IO </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_skip_library_version_check/ class=md-nav__link> <span class=md-ellipsis> JSON_SKIP_LIBRARY_VERSION_CHECK </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_skip_unsupported_compiler_check/ class=md-nav__link> <span class=md-ellipsis> JSON_SKIP_UNSUPPORTED_COMPILER_CHECK </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_use_global_udls/ class=md-nav__link> <span class=md-ellipsis> JSON_USE_GLOBAL_UDLS </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_use_implicit_conversions/ class=md-nav__link> <span class=md-ellipsis> JSON_USE_IMPLICIT_CONVERSIONS </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_use_legacy_discarded_value_comparison/ class=md-nav__link> <span class=md-ellipsis> JSON_USE_LEGACY_DISCARDED_VALUE_COMPARISON </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/nlohmann_define_derived_type/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_ONLY_SERIALIZE, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/nlohmann_define_type_intrusive/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_TYPE_INTRUSIVE, NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_TYPE_INTRUSIVE_ONLY_SERIALIZE </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/nlohmann_define_type_non_intrusive/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/nlohmann_define_type_with_names/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_TYPE_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/nlohmann_json_namespace/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_NAMESPACE </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/nlohmann_json_namespace_begin/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_NAMESPACE_BEGIN, NLOHMANN_JSON_NAMESPACE_END </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/nlohmann_json_namespace_no_version/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_NAMESPACE_NO_VERSION </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/nlohmann_json_serialize_enum/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_SERIALIZE_ENUM </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/nlohmann_json_serialize_enum_strict/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_SERIALIZE_ENUM_STRICT </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/nlohmann_json_version_major/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_VERSION_MAJOR, NLOHMANN_JSON_VERSION_MINOR, NLOHMANN_JSON_VERSION_PATCH </span> </a> </li> </ul> </nav> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_5> <div class="md-nav__link md-nav__container"> <a href=../../community/ class="md-nav__link "> <span class=md-ellipsis> Community </span> </a> <label class="md-nav__link " for=__nav_5 id=__nav_5_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_5_label aria-expanded=false> <label class=md-nav__title for=__nav_5> <span class="md-nav__icon md-icon"></span> Community </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../community/code_of_conduct/ class=md-nav__link> <span class=md-ellipsis> Code of Conduct </span> </a> </li> <li class=md-nav__item> <a href=../../community/contribution_guidelines/ class=md-nav__link> <span class=md-ellipsis> Contribution Guidelines </span> </a> </li> <li class=md-nav__item> <a href=../../community/quality_assurance/ class=md-nav__link> <span class=md-ellipsis> Quality assurance </span> </a> </li> <li class=md-nav__item> <a href=../../community/governance/ class=md-nav__link> <span class=md-ellipsis> Governance </span> </a> </li> <li class=md-nav__item> <a href=../../community/security_policy/ class=md-nav__link> <span class=md-ellipsis> Security Policy </span> </a> </li> </ul> </nav> </li> </ul> </nav> </div> </div> </div> <div class="md-sidebar md-sidebar--secondary" data-md-component=sidebar data-md-type=toc> <div class=md-sidebar__scrollwrap> <div class=md-sidebar__inner> <nav class="md-nav md-nav--secondary" aria-label="Table of contents"> </nav> </div> </div> </div> <div class=md-content data-md-component=content> <article class="md-content__inner md-typeset"> <a href="https://github.com/nlohmann/json/edit/develop/docs/mkdocs/docs/features/element_access/index.md" title="Edit this page" class="md-content__button md-icon" rel="edit"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M10 20H6V4h7v5h5v3.1l2-2V8l-6-6H6c-1.1 0-2 .9-2 2v16c0 1.1.9 2 2 2h4zm10.2-7c.1 0 .3.1.4.2l1.3 1.3c.2.2.2.6 0 .8l-1 1-2.1-2.1 1-1c.1-.1.2-.2.4-.2m0 3.9L14.1 23H12v-2.1l6.1-6.1z"/></svg> </a> <a href="https://github.com/nlohmann/json/raw/develop/docs/mkdocs/docs/features/element_access/index.md" title="View source of this page" class="md-content__button md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M17 18c.56 0 1 .44 1 1s-.44 1-1 1-1-.44-1-1 .44-1 1-1m0-3c-2.73 0-5.06 1.66-6 4 .94 2.34 3.27 4 6 4s5.06-1.66 6-4c-.94-2.34-3.27-4-6-4m0 6.5a2.5 2.5 0 0 1-2.5-2.5 2.5 2.5 0 0 1 2.5-2.5 2.5 2.5 0 0 1 2.5 2.5 2.5 2.5 0 0 1-2.5 2.5M9.27 20H6V4h7v5h5v4.07c.7.08 1.36.25 2 .49V8l-6-6H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h4.5a8.2 8.2 0 0 1-1.23-2"/></svg> </a> <h1 id=element-access>Element Access<a class=headerlink href=#element-access title="Permanent link">&para;</a></h1> <p>There are many ways elements in a <abbr title="JavaScript Object Notation">JSON</abbr> value can be accessed:</p> <ul> <li>unchecked access via <a href=unchecked_access/ ><code>operator[]</code></a></li> <li>checked access via <a href=checked_access/ ><code>at</code></a></li> <li>access with default value via <a href=default_value/ ><code>value</code></a></li> <li>iterators</li> <li><abbr title="JavaScript Object Notation">JSON</abbr> pointers</li> </ul> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 29, 2026 20:15:18 UTC">June 29, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
diff --git a/features/element_access/unchecked_access/index.html b/features/element_access/unchecked_access/index.html
index df59ff8..16d46e0 100644
--- a/features/element_access/unchecked_access/index.html
+++ b/features/element_access/unchecked_access/index.html
@@ -19,4 +19,4 @@
 <span class=w>    </span><span class=nt>&quot;age&quot;</span><span class=p>:</span><span class=w> </span><span class=mi>42</span><span class=p>,</span>
 <span class=w>    </span><span class=nt>&quot;hobbies&quot;</span><span class=p>:</span><span class=w> </span><span class=p>[</span><span class=s2>&quot;running&quot;</span><span class=p>,</span><span class=w> </span><span class=s2>&quot;reading&quot;</span><span class=p>,</span><span class=w> </span><span class=kc>null</span><span class=p>,</span><span class=w> </span><span class=s2>&quot;cooking&quot;</span><span class=p>]</span>
 <span class=p>}</span>
-</code></pre></div> </details> <h2 id=notes>Notes<a class=headerlink href=#notes title="Permanent link">&para;</a></h2> <div class="admonition info"> <p class=admonition-title>Design rationale</p> <p>The library behaves differently to <code class=highlight><span class=n>std</span><span class=o>::</span><span class=n>vector</span></code> and <code class=highlight><span class=n>std</span><span class=o>::</span><span class=n>map</span></code>:</p> <ul> <li><code class=highlight><span class=n>std</span><span class=o>::</span><span class=n>vector</span><span class=o>::</span><span class=k>operator</span><span class=p>[]</span></code> never inserts a new element.</li> <li><code class=highlight><span class=n>std</span><span class=o>::</span><span class=n>map</span><span class=o>::</span><span class=k>operator</span><span class=p>[]</span></code> is not available for const values.</li> </ul> <p>The type <code class=highlight><span class=n>json</span></code> wraps all <abbr title="JavaScript Object Notation">JSON</abbr> value types. It would be impossible to remove <a href=../../../api/basic_json/operator%5B%5D/ ><code>operator[]</code></a> for const objects. At the same time, inserting elements for non-const objects is really convenient as it avoids awkward <code>insert</code> calls. To this end, we decided to have an inserting non-const behavior for both arrays and objects.</p> </div> <div class="admonition info"> <p class=admonition-title>Info</p> <p>The access is unchecked. In case the passed object key does not exist or the passed array index is invalid, no exception is thrown.</p> </div> <div class="admonition danger"> <p class=admonition-title>Danger</p> <ul> <li>It is <strong>undefined behavior</strong> to access a const object with a non-existing key.</li> <li>It is <strong>undefined behavior</strong> to access a const array with an invalid index.</li> <li>In debug mode, an <strong>assertion</strong> will fire in both cases. You can disable assertions by defining the preprocessor symbol <code class=highlight><span class=n>NDEBUG</span></code> or redefine the macro <a href=../../macros/#json_assertx><code>JSON_ASSERT(x)</code></a>. See the documentation on <a href=../../assertions/ >runtime assertions</a> for more information.</li> </ul> </div> <div class="admonition failure"> <p class=admonition-title>Exceptions</p> <p><code>operator[]</code> can only be used with objects (with a string argument) or with arrays (with a numeric argument). For other types, a <a href=../../../home/exceptions/#jsonexceptiontype_error305><code>basic_json::type_error</code></a> is thrown.</p> </div> <h2 id=summary>Summary<a class=headerlink href=#summary title="Permanent link">&para;</a></h2> <table> <thead> <tr> <th>scenario</th> <th>non-const value</th> <th>const value</th> </tr> </thead> <tbody> <tr> <td>access to existing object key</td> <td>reference to existing value is returned</td> <td>const reference to existing value is returned</td> </tr> <tr> <td>access to valid array index</td> <td>reference to existing value is returned</td> <td>const reference to existing value is returned</td> </tr> <tr> <td>access to non-existing object key</td> <td>reference to newly inserted <code class=highlight><span class=kc>null</span></code> value is returned</td> <td><strong>undefined behavior</strong>; <a href=../../assertions/ >runtime assertion</a> in debug mode</td> </tr> <tr> <td>access to invalid array index</td> <td>reference to newly inserted <code class=highlight><span class=kc>null</span></code> value is returned; any index between previous maximal index and passed index are filled with <code class=highlight><span class=kc>null</span></code></td> <td><strong>undefined behavior</strong>; <a href=../../assertions/ >runtime assertion</a> in debug mode</td> </tr> </tbody> </table> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 23, 2026 11:16:18 UTC">June 23, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
+</code></pre></div> </details> <h2 id=notes>Notes<a class=headerlink href=#notes title="Permanent link">&para;</a></h2> <div class="admonition info"> <p class=admonition-title>Design rationale</p> <p>The library behaves differently to <code class=highlight><span class=n>std</span><span class=o>::</span><span class=n>vector</span></code> and <code class=highlight><span class=n>std</span><span class=o>::</span><span class=n>map</span></code>:</p> <ul> <li><code class=highlight><span class=n>std</span><span class=o>::</span><span class=n>vector</span><span class=o>::</span><span class=k>operator</span><span class=p>[]</span></code> never inserts a new element.</li> <li><code class=highlight><span class=n>std</span><span class=o>::</span><span class=n>map</span><span class=o>::</span><span class=k>operator</span><span class=p>[]</span></code> is not available for const values.</li> </ul> <p>The type <code class=highlight><span class=n>json</span></code> wraps all <abbr title="JavaScript Object Notation">JSON</abbr> value types. It would be impossible to remove <a href=../../../api/basic_json/operator%5B%5D/ ><code>operator[]</code></a> for const objects. At the same time, inserting elements for non-const objects is really convenient as it avoids awkward <code>insert</code> calls. To this end, we decided to have an inserting non-const behavior for both arrays and objects.</p> </div> <div class="admonition info"> <p class=admonition-title>Info</p> <p>The access is unchecked. In case the passed object key does not exist or the passed array index is invalid, no exception is thrown.</p> </div> <div class="admonition danger"> <p class=admonition-title>Danger</p> <ul> <li>It is <strong>undefined behavior</strong> to access a const object with a non-existing key.</li> <li>It is <strong>undefined behavior</strong> to access a const array with an invalid index.</li> <li>In debug mode, an <strong>assertion</strong> will fire in both cases. You can disable assertions by defining the preprocessor symbol <code class=highlight><span class=n>NDEBUG</span></code> or redefine the macro <a href=../../macros/#json_assertx><code>JSON_ASSERT(x)</code></a>. See the documentation on <a href=../../assertions/ >runtime assertions</a> for more information.</li> </ul> </div> <div class="admonition failure"> <p class=admonition-title>Exceptions</p> <p><code>operator[]</code> can only be used with objects (with a string argument) or with arrays (with a numeric argument). For other types, a <a href=../../../home/exceptions/#jsonexceptiontype_error305><code>basic_json::type_error</code></a> is thrown.</p> </div> <h2 id=summary>Summary<a class=headerlink href=#summary title="Permanent link">&para;</a></h2> <table> <thead> <tr> <th>scenario</th> <th>non-const value</th> <th>const value</th> </tr> </thead> <tbody> <tr> <td>access to existing object key</td> <td>reference to existing value is returned</td> <td>const reference to existing value is returned</td> </tr> <tr> <td>access to valid array index</td> <td>reference to existing value is returned</td> <td>const reference to existing value is returned</td> </tr> <tr> <td>access to non-existing object key</td> <td>reference to newly inserted <code class=highlight><span class=kc>null</span></code> value is returned</td> <td><strong>undefined behavior</strong>; <a href=../../assertions/ >runtime assertion</a> in debug mode</td> </tr> <tr> <td>access to invalid array index</td> <td>reference to newly inserted <code class=highlight><span class=kc>null</span></code> value is returned; any index between previous maximal index and passed index are filled with <code class=highlight><span class=kc>null</span></code></td> <td><strong>undefined behavior</strong>; <a href=../../assertions/ >runtime assertion</a> in debug mode</td> </tr> </tbody> </table> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 29, 2026 20:15:18 UTC">June 29, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
diff --git a/features/enum_conversion/index.html b/features/enum_conversion/index.html
index 0b13c3b..84dccee 100644
--- a/features/enum_conversion/index.html
+++ b/features/enum_conversion/index.html
@@ -24,4 +24,4 @@
 <span class=c1>// undefined json value to enum (where the first map entry above is the default)</span>
 <span class=n>json</span><span class=w> </span><span class=n>jPi</span><span class=w> </span><span class=o>=</span><span class=w> </span><span class=mf>3.14</span><span class=p>;</span>
 <span class=n>assert</span><span class=p>(</span><span class=n>jPi</span><span class=p>.</span><span class=n>get</span><span class=o>&lt;</span><span class=n>TaskState</span><span class=o>&gt;</span><span class=p>()</span><span class=w> </span><span class=o>==</span><span class=w> </span><span class=n>TS_INVALID</span><span class=w> </span><span class=p>);</span>
-</code></pre></div> <h2 id=notes>Notes<a class=headerlink href=#notes title="Permanent link">&para;</a></h2> <p>Just as in <a href=../arbitrary_types/ >Arbitrary Type Conversions</a> above,</p> <ul> <li><a href=../../api/macros/nlohmann_json_serialize_enum/ ><code>NLOHMANN_JSON_SERIALIZE_ENUM()</code></a> MUST be declared in your enum type's namespace (which can be the global namespace), or the library will not be able to locate it, and it will default to integer serialization.</li> <li>It MUST be available (e.g., proper headers must be included) everywhere you use the conversions.</li> </ul> <p>Other Important points:</p> <ul> <li>When using <code>get&lt;ENUM_TYPE&gt;()</code>, undefined <abbr title="JavaScript Object Notation">JSON</abbr> values will default to the first pair specified in your map. Select this default pair carefully. If you desire an exception in this circumstance use <a href=../../api/macros/nlohmann_json_serialize_enum_strict/ ><code>NLOHMANN_JSON_SERIALIZE_ENUM_STRICT()</code></a> which behaves identically except for throwing an exception on unrecognized values.</li> <li>If an enum or <abbr title="JavaScript Object Notation">JSON</abbr> value is specified more than once in your map, the first matching occurrence from the top of the map will be returned when converting to or from <abbr title="JavaScript Object Notation">JSON</abbr>.</li> <li>To disable the default serialization of enumerators as integers and force a compiler error instead, see <a href=../../api/macros/json_disable_enum_serialization/ ><code>JSON_DISABLE_ENUM_SERIALIZATION</code></a>.</li> </ul> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 23, 2026 11:16:18 UTC">June 23, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
+</code></pre></div> <h2 id=notes>Notes<a class=headerlink href=#notes title="Permanent link">&para;</a></h2> <p>Just as in <a href=../arbitrary_types/ >Arbitrary Type Conversions</a> above,</p> <ul> <li><a href=../../api/macros/nlohmann_json_serialize_enum/ ><code>NLOHMANN_JSON_SERIALIZE_ENUM()</code></a> MUST be declared in your enum type's namespace (which can be the global namespace), or the library will not be able to locate it, and it will default to integer serialization.</li> <li>It MUST be available (e.g., proper headers must be included) everywhere you use the conversions.</li> </ul> <p>Other Important points:</p> <ul> <li>When using <code>get&lt;ENUM_TYPE&gt;()</code>, undefined <abbr title="JavaScript Object Notation">JSON</abbr> values will default to the first pair specified in your map. Select this default pair carefully. If you desire an exception in this circumstance use <a href=../../api/macros/nlohmann_json_serialize_enum_strict/ ><code>NLOHMANN_JSON_SERIALIZE_ENUM_STRICT()</code></a> which behaves identically except for throwing an exception on unrecognized values.</li> <li>If an enum or <abbr title="JavaScript Object Notation">JSON</abbr> value is specified more than once in your map, the first matching occurrence from the top of the map will be returned when converting to or from <abbr title="JavaScript Object Notation">JSON</abbr>.</li> <li>To disable the default serialization of enumerators as integers and force a compiler error instead, see <a href=../../api/macros/json_disable_enum_serialization/ ><code>JSON_DISABLE_ENUM_SERIALIZATION</code></a>.</li> </ul> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 29, 2026 20:15:18 UTC">June 29, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
diff --git a/features/iterators/index.html b/features/iterators/index.html
index 96d7d29..26c5ae2 100644
--- a/features/iterators/index.html
+++ b/features/iterators/index.html
@@ -53,4 +53,4 @@
 <span class=w>    </span><span class=n>std</span><span class=o>::</span><span class=n>cout</span><span class=w> </span><span class=o>&lt;&lt;</span><span class=w> </span><span class=o>*</span><span class=n>it</span><span class=w> </span><span class=o>&lt;&lt;</span><span class=w> </span><span class=n>std</span><span class=o>::</span><span class=n>endl</span><span class=p>;</span>
 <span class=p>}</span>
 </code></pre></div> <p>Output:</p> <div class=highlight><pre><span></span><code><span class=s2>&quot;Hello, world&quot;</span>
-</code></pre></div> </details> <h2 id=iterator-invalidation>Iterator invalidation<a class=headerlink href=#iterator-invalidation title="Permanent link">&para;</a></h2> <table> <thead> <tr> <th>Operations</th> <th>invalidated iterators</th> </tr> </thead> <tbody> <tr> <td><code>clear</code></td> <td>all</td> </tr> </tbody> </table> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 23, 2026 11:16:18 UTC">June 23, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
+</code></pre></div> </details> <h2 id=iterator-invalidation>Iterator invalidation<a class=headerlink href=#iterator-invalidation title="Permanent link">&para;</a></h2> <table> <thead> <tr> <th>Operations</th> <th>invalidated iterators</th> </tr> </thead> <tbody> <tr> <td><code>clear</code></td> <td>all</td> </tr> </tbody> </table> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 29, 2026 20:15:18 UTC">June 29, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
diff --git a/features/json_patch/index.html b/features/json_patch/index.html
index c8f2c06..129401e 100644
--- a/features/json_patch/index.html
+++ b/features/json_patch/index.html
@@ -105,4 +105,4 @@
 <span class=w>        </span><span class=s2>&quot;world&quot;</span>
 <span class=w>    </span><span class=p>]</span>
 <span class=p>}</span>
-</code></pre></div> </details> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 23, 2026 11:16:18 UTC">June 23, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
+</code></pre></div> </details> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 29, 2026 20:15:18 UTC">June 29, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
diff --git a/features/json_pointer/index.html b/features/json_pointer/index.html
index c35fc36..22b9b17 100644
--- a/features/json_pointer/index.html
+++ b/features/json_pointer/index.html
@@ -45,4 +45,4 @@
 <span class=w>  </span><span class=nt>&quot;/nested/three/1&quot;</span><span class=p>:</span><span class=w> </span><span class=kc>false</span>
 <span class=p>}</span>
 </code></pre></div> <p>The reverse function, <a href=../../api/basic_json/unflatten/ ><code>unflatten</code></a> recreates the original value.</p> <div class=highlight><pre><span></span><code><span class=k>auto</span><span class=w> </span><span class=n>j_original</span><span class=w> </span><span class=o>=</span><span class=w> </span><span class=n>j_flat</span><span class=p>.</span><span class=n>unflatten</span><span class=p>();</span>
-</code></pre></div> <h2 id=see-also>See also<a class=headerlink href=#see-also title="Permanent link">&para;</a></h2> <ul> <li>Class <a href=../../api/json_pointer/ ><code>json_pointer</code></a></li> <li>Function <a href=../../api/basic_json/flatten/ ><code>flatten</code></a></li> <li>Function <a href=../../api/basic_json/unflatten/ ><code>unflatten</code></a></li> <li><a href=../json_patch/ ><abbr title="JavaScript Object Notation">JSON</abbr> Patch</a></li> </ul> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 23, 2026 11:16:18 UTC">June 23, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
+</code></pre></div> <h2 id=see-also>See also<a class=headerlink href=#see-also title="Permanent link">&para;</a></h2> <ul> <li>Class <a href=../../api/json_pointer/ ><code>json_pointer</code></a></li> <li>Function <a href=../../api/basic_json/flatten/ ><code>flatten</code></a></li> <li>Function <a href=../../api/basic_json/unflatten/ ><code>unflatten</code></a></li> <li><a href=../json_patch/ ><abbr title="JavaScript Object Notation">JSON</abbr> Patch</a></li> </ul> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 29, 2026 20:15:18 UTC">June 29, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
diff --git a/features/macros/index.html b/features/macros/index.html
index 42c08b7..9f92a09 100644
--- a/features/macros/index.html
+++ b/features/macros/index.html
@@ -1 +1 @@
-<!doctype html><html lang=en class=no-js> <head><meta charset=utf-8><meta name=viewport content="width=device-width,initial-scale=1"><meta name=author content="Niels Lohmann"><link href="https://json.nlohmann.me/features/macros/" rel="canonical"><link href=../enum_conversion/ rel=prev><link href=../types/ rel=next><link rel=icon href=../../assets/images/favicon.png><meta name=generator content="mkdocs-1.6.1, mkdocs-material-9.7.6"><title>Supported Macros - JSON for Modern C++</title><link rel=stylesheet href=../../assets/stylesheets/main.484c7ddc.min.css><link rel=stylesheet href=../../assets/stylesheets/palette.ab4e12ef.min.css><link rel="stylesheet" href="../../assets/external/fonts.googleapis.com/css.61a430c9.css"><style>:root{--md-text-font:"Roboto";--md-code-font:"JetBrains Mono"}</style><link rel=stylesheet href=../../css/custom.css><script>__md_scope=new URL("../..",location),__md_hash=e=>[...e].reduce(((e,_)=>(e<<5)-e+_.charCodeAt(0)),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script></head> <body dir=ltr data-md-color-scheme=default data-md-color-primary=indigo data-md-color-accent=indigo> <input class=md-toggle data-md-toggle=drawer type=checkbox id=__drawer autocomplete=off> <input class=md-toggle data-md-toggle=search type=checkbox id=__search autocomplete=off> <label class=md-overlay for=__drawer></label> <div data-md-component=skip> <a href=#supported-macros class=md-skip> Skip to content </a> </div> <div data-md-component=announce> </div> <header class=md-header data-md-component=header> <nav class="md-header__inner md-grid" aria-label=Header> <a href=../.. title="JSON for Modern C++" class="md-header__button md-logo" aria-label="JSON for Modern C++" data-md-component=logo> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54"/></svg> </a> <label class="md-header__button md-icon" for=__drawer> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M3 6h18v2H3zm0 5h18v2H3zm0 5h18v2H3z"/></svg> </label> <div class=md-header__title data-md-component=header-title> <div class=md-header__ellipsis> <div class=md-header__topic> <span class=md-ellipsis> JSON for Modern C++ </span> </div> <div class=md-header__topic data-md-component=header-topic> <span class=md-ellipsis> Supported Macros </span> </div> </div> </div> <form class=md-header__option data-md-component=palette> <input class=md-option data-md-color-media="(prefers-color-scheme: light)" data-md-color-scheme=default data-md-color-primary=indigo data-md-color-accent=indigo aria-label="Switch to dark mode" type=radio name=__palette id=__palette_0> <label class="md-header__button md-icon" title="Switch to dark mode" for=__palette_1 hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a4 4 0 0 0-4 4 4 4 0 0 0 4 4 4 4 0 0 0 4-4 4 4 0 0 0-4-4m0 10a6 6 0 0 1-6-6 6 6 0 0 1 6-6 6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12z"/></svg> </label> <input class=md-option data-md-color-media="(prefers-color-scheme: dark)" data-md-color-scheme=slate data-md-color-primary=indigo data-md-color-accent=indigo aria-label="Switch to light mode" type=radio name=__palette id=__palette_1> <label class="md-header__button md-icon" title="Switch to light mode" for=__palette_0 hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 18c-.89 0-1.74-.2-2.5-.55C11.56 16.5 13 14.42 13 12s-1.44-4.5-3.5-5.45C10.26 6.2 11.11 6 12 6a6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12z"/></svg> </label> </form> <script>var palette=__md_get("__palette");if(palette&&palette.color){if("(prefers-color-scheme)"===palette.color.media){var media=matchMedia("(prefers-color-scheme: light)"),input=document.querySelector(media.matches?"[data-md-color-media='(prefers-color-scheme: light)']":"[data-md-color-media='(prefers-color-scheme: dark)']");palette.color.media=input.getAttribute("data-md-color-media"),palette.color.scheme=input.getAttribute("data-md-color-scheme"),palette.color.primary=input.getAttribute("data-md-color-primary"),palette.color.accent=input.getAttribute("data-md-color-accent")}for(var[key,value]of Object.entries(palette.color))document.body.setAttribute("data-md-color-"+key,value)}</script> <label class="md-header__button md-icon" for=__search> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg> </label> <div class=md-search data-md-component=search role=dialog> <label class=md-search__overlay for=__search></label> <div class=md-search__inner role=search> <form class=md-search__form name=search> <input type=text class=md-search__input name=query aria-label=Search placeholder=Search autocapitalize=off autocorrect=off autocomplete=off spellcheck=false data-md-component=search-query required> <label class="md-search__icon md-icon" for=__search> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11z"/></svg> </label> <nav class=md-search__options aria-label=Search> <button type=reset class="md-search__icon md-icon" title=Clear aria-label=Clear tabindex=-1> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z"/></svg> </button> </nav> </form> <div class=md-search__output> <div class=md-search__scrollwrap tabindex=0 data-md-scrollfix> <div class=md-search-result data-md-component=search-result> <div class=md-search-result__meta> Initializing search </div> <ol class=md-search-result__list role=presentation></ol> </div> </div> </div> </div> </div> <div class=md-header__source> <a href="https://github.com/nlohmann/json" title="Go to repository" class="md-source" data-md-component="source"> <div class="md-source__icon md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </div> <div class=md-source__repository> nlohmann/json </div> </a> </div> </nav> </header> <div class=md-container data-md-component=container> <nav class=md-tabs aria-label=Tabs data-md-component=tabs> <div class=md-grid> <ul class=md-tabs__list> <li class=md-tabs__item> <a href=../.. class=md-tabs__link> Home </a> </li> <li class="md-tabs__item md-tabs__item--active"> <a href=../arbitrary_types/ class=md-tabs__link> Features </a> </li> <li class=md-tabs__item> <a href=../../integration/ class=md-tabs__link> Integration </a> </li> <li class=md-tabs__item> <a href=../../api/basic_json/ class=md-tabs__link> API Documentation </a> </li> <li class=md-tabs__item> <a href=../../community/ class=md-tabs__link> Community </a> </li> </ul> </div> </nav> <main class=md-main data-md-component=main> <div class="md-main__inner md-grid"> <div class="md-sidebar md-sidebar--primary" data-md-component=sidebar data-md-type=navigation> <div class=md-sidebar__scrollwrap> <div class=md-sidebar__inner> <nav class="md-nav md-nav--primary md-nav--lifted" aria-label=Navigation data-md-level=0> <label class=md-nav__title for=__drawer> <a href=../.. title="JSON for Modern C++" class="md-nav__button md-logo" aria-label="JSON for Modern C++" data-md-component=logo> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54"/></svg> </a> JSON for Modern C++ </label> <div class=md-nav__source> <a href="https://github.com/nlohmann/json" title="Go to repository" class="md-source" data-md-component="source"> <div class="md-source__icon md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </div> <div class=md-source__repository> nlohmann/json </div> </a> </div> <ul class=md-nav__list data-md-scrollfix> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_1> <div class="md-nav__link md-nav__container"> <a href=../.. class="md-nav__link "> <span class=md-ellipsis> Home </span> </a> <label class="md-nav__link " for=__nav_1 id=__nav_1_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_1_label aria-expanded=false> <label class=md-nav__title for=__nav_1> <span class="md-nav__icon md-icon"></span> Home </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../home/license/ class=md-nav__link> <span class=md-ellipsis> License </span> </a> </li> <li class=md-nav__item> <a href=../../home/faq/ class=md-nav__link> <span class=md-ellipsis> FAQ </span> </a> </li> <li class=md-nav__item> <a href=../../home/exceptions/ class=md-nav__link> <span class=md-ellipsis> Exceptions </span> </a> </li> <li class=md-nav__item> <a href=../../home/releases/ class=md-nav__link> <span class=md-ellipsis> Releases </span> </a> </li> <li class=md-nav__item> <a href=../../home/design_goals/ class=md-nav__link> <span class=md-ellipsis> Design goals </span> </a> </li> <li class=md-nav__item> <a href=../../home/architecture/ class=md-nav__link> <span class=md-ellipsis> Architecture </span> </a> </li> <li class=md-nav__item> <a href=../../home/customers/ class=md-nav__link> <span class=md-ellipsis> Customers </span> </a> </li> <li class=md-nav__item> <a href=../../home/sponsors/ class=md-nav__link> <span class=md-ellipsis> Sponsors </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--active md-nav__item--section md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2 checked> <label class=md-nav__link for=__nav_2 id=__nav_2_label tabindex> <span class=md-ellipsis> Features </span> <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_2_label aria-expanded=true> <label class=md-nav__title for=__nav_2> <span class="md-nav__icon md-icon"></span> Features </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../arbitrary_types/ class=md-nav__link> <span class=md-ellipsis> Arbitrary Type Conversions </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_2> <div class="md-nav__link md-nav__container"> <a href=../binary_formats/ class="md-nav__link "> <span class=md-ellipsis> Binary Formats </span> </a> <label class="md-nav__link " for=__nav_2_2 id=__nav_2_2_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_2_label aria-expanded=false> <label class=md-nav__title for=__nav_2_2> <span class="md-nav__icon md-icon"></span> Binary Formats </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../binary_formats/bjdata/ class=md-nav__link> <span class=md-ellipsis> BJData </span> </a> </li> <li class=md-nav__item> <a href=../binary_formats/bson/ class=md-nav__link> <span class=md-ellipsis> BSON </span> </a> </li> <li class=md-nav__item> <a href=../binary_formats/cbor/ class=md-nav__link> <span class=md-ellipsis> CBOR </span> </a> </li> <li class=md-nav__item> <a href=../binary_formats/messagepack/ class=md-nav__link> <span class=md-ellipsis> MessagePack </span> </a> </li> <li class=md-nav__item> <a href=../binary_formats/ubjson/ class=md-nav__link> <span class=md-ellipsis> UBJSON </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../binary_values/ class=md-nav__link> <span class=md-ellipsis> Binary Values </span> </a> </li> <li class=md-nav__item> <a href=../comments/ class=md-nav__link> <span class=md-ellipsis> Comments </span> </a> </li> <li class=md-nav__item> <a href=../trailing_commas/ class=md-nav__link> <span class=md-ellipsis> Trailing Commas </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_6> <div class="md-nav__link md-nav__container"> <a href=../element_access/ class="md-nav__link "> <span class=md-ellipsis> Element Access </span> </a> <label class="md-nav__link " for=__nav_2_6 id=__nav_2_6_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_6_label aria-expanded=false> <label class=md-nav__title for=__nav_2_6> <span class="md-nav__icon md-icon"></span> Element Access </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../element_access/unchecked_access/ class=md-nav__link> <span class=md-ellipsis> Unchecked access: operator[] </span> </a> </li> <li class=md-nav__item> <a href=../element_access/checked_access/ class=md-nav__link> <span class=md-ellipsis> Checked access: at </span> </a> </li> <li class=md-nav__item> <a href=../element_access/default_value/ class=md-nav__link> <span class=md-ellipsis> Access with default value: value </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../iterators/ class=md-nav__link> <span class=md-ellipsis> Iterators </span> </a> </li> <li class=md-nav__item> <a href=../json_pointer/ class=md-nav__link> <span class=md-ellipsis> JSON Pointer </span> </a> </li> <li class=md-nav__item> <a href=../json_patch/ class=md-nav__link> <span class=md-ellipsis> JSON Patch and Diff </span> </a> </li> <li class=md-nav__item> <a href=../merge_patch/ class=md-nav__link> <span class=md-ellipsis> JSON Merge Patch </span> </a> </li> <li class=md-nav__item> <a href=../modules/ class=md-nav__link> <span class=md-ellipsis> Modules </span> </a> </li> <li class=md-nav__item> <a href=../namespace/ class=md-nav__link> <span class=md-ellipsis> nlohmann Namespace </span> </a> </li> <li class=md-nav__item> <a href=../object_order/ class=md-nav__link> <span class=md-ellipsis> Object Order </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_14> <div class="md-nav__link md-nav__container"> <a href=../parsing/ class="md-nav__link "> <span class=md-ellipsis> Parsing </span> </a> <label class="md-nav__link " for=__nav_2_14 id=__nav_2_14_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_14_label aria-expanded=false> <label class=md-nav__title for=__nav_2_14> <span class="md-nav__icon md-icon"></span> Parsing </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../parsing/json_lines/ class=md-nav__link> <span class=md-ellipsis> JSON Lines </span> </a> </li> <li class=md-nav__item> <a href=../parsing/parse_exceptions/ class=md-nav__link> <span class=md-ellipsis> Parsing and Exceptions </span> </a> </li> <li class=md-nav__item> <a href=../parsing/parser_callbacks/ class=md-nav__link> <span class=md-ellipsis> Parser Callbacks </span> </a> </li> <li class=md-nav__item> <a href=../parsing/sax_interface/ class=md-nav__link> <span class=md-ellipsis> SAX Interface </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../assertions/ class=md-nav__link> <span class=md-ellipsis> Runtime Assertions </span> </a> </li> <li class=md-nav__item> <a href=../enum_conversion/ class=md-nav__link> <span class=md-ellipsis> Specializing enum conversion </span> </a> </li> <li class="md-nav__item md-nav__item--active"> <input class="md-nav__toggle md-toggle" type=checkbox id=__toc> <label class="md-nav__link md-nav__link--active" for=__toc> <span class=md-ellipsis> Supported Macros </span> <span class="md-nav__icon md-icon"></span> </label> <a href=./ class="md-nav__link md-nav__link--active"> <span class=md-ellipsis> Supported Macros </span> </a> <nav class="md-nav md-nav--secondary" aria-label="Table of contents"> <label class=md-nav__title for=__toc> <span class="md-nav__icon md-icon"></span> Table of contents </label> <ul class=md-nav__list data-md-component=toc data-md-scrollfix> <li class=md-nav__item> <a href=#json_assertx class=md-nav__link> <span class=md-ellipsis> JSON_ASSERT(x) </span> </a> </li> <li class=md-nav__item> <a href=#json_catch_userexception class=md-nav__link> <span class=md-ellipsis> JSON_CATCH_USER(exception) </span> </a> </li> <li class=md-nav__item> <a href=#json_diagnostics class=md-nav__link> <span class=md-ellipsis> JSON_DIAGNOSTICS </span> </a> </li> <li class=md-nav__item> <a href=#json_diagnostic_positions class=md-nav__link> <span class=md-ellipsis> JSON_DIAGNOSTIC_POSITIONS </span> </a> </li> <li class=md-nav__item> <a href=#json_has_cpp_11-json_has_cpp_14-json_has_cpp_17-json_has_cpp_20 class=md-nav__link> <span class=md-ellipsis> JSON_HAS_CPP_11, JSON_HAS_CPP_14, JSON_HAS_CPP_17, JSON_HAS_CPP_20 </span> </a> </li> <li class=md-nav__item> <a href=#json_has_filesystem-json_has_experimental_filesystem class=md-nav__link> <span class=md-ellipsis> JSON_HAS_FILESYSTEM, JSON_HAS_EXPERIMENTAL_FILESYSTEM </span> </a> </li> <li class=md-nav__item> <a href=#json_noexception class=md-nav__link> <span class=md-ellipsis> JSON_NOEXCEPTION </span> </a> </li> <li class=md-nav__item> <a href=#json_disable_enum_serialization class=md-nav__link> <span class=md-ellipsis> JSON_DISABLE_ENUM_SERIALIZATION </span> </a> </li> <li class=md-nav__item> <a href=#json_no_io class=md-nav__link> <span class=md-ellipsis> JSON_NO_IO </span> </a> </li> <li class=md-nav__item> <a href=#json_skip_library_version_check class=md-nav__link> <span class=md-ellipsis> JSON_SKIP_LIBRARY_VERSION_CHECK </span> </a> </li> <li class=md-nav__item> <a href=#json_skip_unsupported_compiler_check class=md-nav__link> <span class=md-ellipsis> JSON_SKIP_UNSUPPORTED_COMPILER_CHECK </span> </a> </li> <li class=md-nav__item> <a href=#json_throw_userexception class=md-nav__link> <span class=md-ellipsis> JSON_THROW_USER(exception) </span> </a> </li> <li class=md-nav__item> <a href=#json_try_user class=md-nav__link> <span class=md-ellipsis> JSON_TRY_USER </span> </a> </li> <li class=md-nav__item> <a href=#json_use_implicit_conversions class=md-nav__link> <span class=md-ellipsis> JSON_USE_IMPLICIT_CONVERSIONS </span> </a> </li> <li class=md-nav__item> <a href=#nlohmann_define_type_-nlohmann_define_derived_type_ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_TYPE_*(...), NLOHMANN_DEFINE_DERIVED_TYPE_*(...) </span> </a> </li> <li class=md-nav__item> <a href=#nlohmann_json_serialize_enumtype class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_SERIALIZE_ENUM(type, ...) </span> </a> </li> <li class=md-nav__item> <a href=#nlohmann_json_version_major-nlohmann_json_version_minor-nlohmann_json_version_patch class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_VERSION_MAJOR, NLOHMANN_JSON_VERSION_MINOR, NLOHMANN_JSON_VERSION_PATCH </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_18> <div class="md-nav__link md-nav__container"> <a href=../types/ class="md-nav__link "> <span class=md-ellipsis> Types </span> </a> <label class="md-nav__link " for=__nav_2_18 id=__nav_2_18_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_18_label aria-expanded=false> <label class=md-nav__title for=__nav_2_18> <span class="md-nav__icon md-icon"></span> Types </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../types/number_handling/ class=md-nav__link> <span class=md-ellipsis> Number Handling </span> </a> </li> </ul> </nav> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_3> <div class="md-nav__link md-nav__container"> <a href=../../integration/ class="md-nav__link "> <span class=md-ellipsis> Integration </span> </a> <label class="md-nav__link " for=__nav_3 id=__nav_3_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_3_label aria-expanded=false> <label class=md-nav__title for=__nav_3> <span class="md-nav__icon md-icon"></span> Integration </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../integration/migration_guide/ class=md-nav__link> <span class=md-ellipsis> Migration Guide </span> </a> </li> <li class=md-nav__item> <a href=../../integration/cmake/ class=md-nav__link> <span class=md-ellipsis> CMake </span> </a> </li> <li class=md-nav__item> <a href=../../integration/package_managers/ class=md-nav__link> <span class=md-ellipsis> Package Managers </span> </a> </li> <li class=md-nav__item> <a href=../../integration/pkg-config/ class=md-nav__link> <span class=md-ellipsis> Pkg-config </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4> <label class=md-nav__link for=__nav_4 id=__nav_4_label tabindex=0> <span class=md-ellipsis> API Documentation </span> <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_4_label aria-expanded=false> <label class=md-nav__title for=__nav_4> <span class="md-nav__icon md-icon"></span> API Documentation </label> <ul class=md-nav__list data-md-scrollfix> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_1> <div class="md-nav__link md-nav__container"> <a href=../../api/basic_json/ class="md-nav__link "> <span class=md-ellipsis> basic_json </span> </a> <label class="md-nav__link " for=__nav_4_1 id=__nav_4_1_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_1_label aria-expanded=false> <label class=md-nav__title for=__nav_4_1> <span class="md-nav__icon md-icon"></span> basic_json </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../api/basic_json/basic_json/ class=md-nav__link> <span class=md-ellipsis> (Constructor) </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/~basic_json/ class=md-nav__link> <span class=md-ellipsis> (Destructor) </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/accept/ class=md-nav__link> <span class=md-ellipsis> accept </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/array/ class=md-nav__link> <span class=md-ellipsis> array </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/array_t/ class=md-nav__link> <span class=md-ellipsis> array_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/at/ class=md-nav__link> <span class=md-ellipsis> at </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/back/ class=md-nav__link> <span class=md-ellipsis> back </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/begin/ class=md-nav__link> <span class=md-ellipsis> begin </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/binary/ class=md-nav__link> <span class=md-ellipsis> binary </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/binary_t/ class=md-nav__link> <span class=md-ellipsis> binary_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/boolean_t/ class=md-nav__link> <span class=md-ellipsis> boolean_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/cbegin/ class=md-nav__link> <span class=md-ellipsis> cbegin </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/cbor_tag_handler_t/ class=md-nav__link> <span class=md-ellipsis> cbor_tag_handler_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/cend/ class=md-nav__link> <span class=md-ellipsis> cend </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/clear/ class=md-nav__link> <span class=md-ellipsis> clear </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/contains/ class=md-nav__link> <span class=md-ellipsis> contains </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/count/ class=md-nav__link> <span class=md-ellipsis> count </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/crbegin/ class=md-nav__link> <span class=md-ellipsis> crbegin </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/crend/ class=md-nav__link> <span class=md-ellipsis> crend </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/default_object_comparator_t/ class=md-nav__link> <span class=md-ellipsis> default_object_comparator_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/diff/ class=md-nav__link> <span class=md-ellipsis> diff </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/dump/ class=md-nav__link> <span class=md-ellipsis> dump </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/emplace/ class=md-nav__link> <span class=md-ellipsis> emplace </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/emplace_back/ class=md-nav__link> <span class=md-ellipsis> emplace_back </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/empty/ class=md-nav__link> <span class=md-ellipsis> empty </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/end/ class=md-nav__link> <span class=md-ellipsis> end </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/end_pos/ class=md-nav__link> <span class=md-ellipsis> end_pos </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/erase/ class=md-nav__link> <span class=md-ellipsis> erase </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/error_handler_t/ class=md-nav__link> <span class=md-ellipsis> error_handler_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/exception/ class=md-nav__link> <span class=md-ellipsis> exception </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/find/ class=md-nav__link> <span class=md-ellipsis> find </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/flatten/ class=md-nav__link> <span class=md-ellipsis> flatten </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/from_bjdata/ class=md-nav__link> <span class=md-ellipsis> from_bjdata </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/from_bson/ class=md-nav__link> <span class=md-ellipsis> from_bson </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/from_cbor/ class=md-nav__link> <span class=md-ellipsis> from_cbor </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/from_msgpack/ class=md-nav__link> <span class=md-ellipsis> from_msgpack </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/from_ubjson/ class=md-nav__link> <span class=md-ellipsis> from_ubjson </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/front/ class=md-nav__link> <span class=md-ellipsis> front </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/get/ class=md-nav__link> <span class=md-ellipsis> get </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/get_allocator/ class=md-nav__link> <span class=md-ellipsis> get_allocator </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/get_binary/ class=md-nav__link> <span class=md-ellipsis> get_binary </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/get_ptr/ class=md-nav__link> <span class=md-ellipsis> get_ptr </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/get_ref/ class=md-nav__link> <span class=md-ellipsis> get_ref </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/get_to/ class=md-nav__link> <span class=md-ellipsis> get_to </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/std_hash/ class=md-nav__link> <span class=md-ellipsis> std::hash&lt;basic_json&gt; </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/input_format_t/ class=md-nav__link> <span class=md-ellipsis> input_format_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/insert/ class=md-nav__link> <span class=md-ellipsis> insert </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/invalid_iterator/ class=md-nav__link> <span class=md-ellipsis> invalid_iterator </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_array/ class=md-nav__link> <span class=md-ellipsis> is_array </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_binary/ class=md-nav__link> <span class=md-ellipsis> is_binary </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_boolean/ class=md-nav__link> <span class=md-ellipsis> is_boolean </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_discarded/ class=md-nav__link> <span class=md-ellipsis> is_discarded </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_null/ class=md-nav__link> <span class=md-ellipsis> is_null </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_number/ class=md-nav__link> <span class=md-ellipsis> is_number </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_number_float/ class=md-nav__link> <span class=md-ellipsis> is_number_float </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_number_integer/ class=md-nav__link> <span class=md-ellipsis> is_number_integer </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_number_unsigned/ class=md-nav__link> <span class=md-ellipsis> is_number_unsigned </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_object/ class=md-nav__link> <span class=md-ellipsis> is_object </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_primitive/ class=md-nav__link> <span class=md-ellipsis> is_primitive </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_string/ class=md-nav__link> <span class=md-ellipsis> is_string </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_structured/ class=md-nav__link> <span class=md-ellipsis> is_structured </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/items/ class=md-nav__link> <span class=md-ellipsis> items </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/json_base_class_t/ class=md-nav__link> <span class=md-ellipsis> json_base_class_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/json_serializer/ class=md-nav__link> <span class=md-ellipsis> json_serializer </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/max_size/ class=md-nav__link> <span class=md-ellipsis> max_size </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/meta/ class=md-nav__link> <span class=md-ellipsis> meta </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/merge_patch/ class=md-nav__link> <span class=md-ellipsis> merge_patch </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/number_float_t/ class=md-nav__link> <span class=md-ellipsis> number_float_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/number_integer_t/ class=md-nav__link> <span class=md-ellipsis> number_integer_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/number_unsigned_t/ class=md-nav__link> <span class=md-ellipsis> number_unsigned_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/object/ class=md-nav__link> <span class=md-ellipsis> object </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/object_comparator_t/ class=md-nav__link> <span class=md-ellipsis> object_comparator_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/object_t/ class=md-nav__link> <span class=md-ellipsis> object_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/operator_ValueType/ class=md-nav__link> <span class=md-ellipsis> operator ValueType </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/operator_value_t/ class=md-nav__link> <span class=md-ellipsis> operator value_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/operator%5B%5D/ class=md-nav__link> <span class=md-ellipsis> operator[] </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/operator%3D/ class=md-nav__link> <span class=md-ellipsis> operator= </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/operator%2B%3D/ class=md-nav__link> <span class=md-ellipsis> operator+= </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/operator_eq/ class=md-nav__link> <span class=md-ellipsis> operator== </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/operator_ne/ class=md-nav__link> <span class=md-ellipsis> operator!= </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/operator_lt/ class=md-nav__link> <span class=md-ellipsis> operator< </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/operator_gt/ class=md-nav__link> <span class=md-ellipsis> operator> </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/operator_le/ class=md-nav__link> <span class=md-ellipsis> operator<= </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/operator_ge/ class=md-nav__link> <span class=md-ellipsis> operator>= </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/operator_spaceship/ class=md-nav__link> <span class=md-ellipsis> operator<=> </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/out_of_range/ class=md-nav__link> <span class=md-ellipsis> out_of_range </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/other_error/ class=md-nav__link> <span class=md-ellipsis> other_error </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/parse/ class=md-nav__link> <span class=md-ellipsis> parse </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/parse_error/ class=md-nav__link> <span class=md-ellipsis> parse_error </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/parse_event_t/ class=md-nav__link> <span class=md-ellipsis> parse_event_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/parser_callback_t/ class=md-nav__link> <span class=md-ellipsis> parser_callback_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/patch/ class=md-nav__link> <span class=md-ellipsis> patch </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/patch_inplace/ class=md-nav__link> <span class=md-ellipsis> patch_inplace </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/push_back/ class=md-nav__link> <span class=md-ellipsis> push_back </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/rbegin/ class=md-nav__link> <span class=md-ellipsis> rbegin </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/rend/ class=md-nav__link> <span class=md-ellipsis> rend </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/sax_parse/ class=md-nav__link> <span class=md-ellipsis> sax_parse </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/size/ class=md-nav__link> <span class=md-ellipsis> size </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/start_pos/ class=md-nav__link> <span class=md-ellipsis> start_pos </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/string_t/ class=md-nav__link> <span class=md-ellipsis> string_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/swap/ class=md-nav__link> <span class=md-ellipsis> swap </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/std_swap/ class=md-nav__link> <span class=md-ellipsis> std::swap&lt;basic_json&gt; </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/to_bjdata/ class=md-nav__link> <span class=md-ellipsis> to_bjdata </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/to_bson/ class=md-nav__link> <span class=md-ellipsis> to_bson </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/to_cbor/ class=md-nav__link> <span class=md-ellipsis> to_cbor </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/to_msgpack/ class=md-nav__link> <span class=md-ellipsis> to_msgpack </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/to_string/ class=md-nav__link> <span class=md-ellipsis> to_string </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/to_ubjson/ class=md-nav__link> <span class=md-ellipsis> to_ubjson </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/type/ class=md-nav__link> <span class=md-ellipsis> type </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/type_error/ class=md-nav__link> <span class=md-ellipsis> type_error </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/type_name/ class=md-nav__link> <span class=md-ellipsis> type_name </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/unflatten/ class=md-nav__link> <span class=md-ellipsis> unflatten </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/update/ class=md-nav__link> <span class=md-ellipsis> update </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/value/ class=md-nav__link> <span class=md-ellipsis> value </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/value_t/ class=md-nav__link> <span class=md-ellipsis> value_t </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_2> <div class="md-nav__link md-nav__container"> <a href=../../api/byte_container_with_subtype/ class="md-nav__link "> <span class=md-ellipsis> byte_container_with_subtype </span> </a> <label class="md-nav__link " for=__nav_4_2 id=__nav_4_2_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_2_label aria-expanded=false> <label class=md-nav__title for=__nav_4_2> <span class="md-nav__icon md-icon"></span> byte_container_with_subtype </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../api/byte_container_with_subtype/byte_container_with_subtype/ class=md-nav__link> <span class=md-ellipsis> (constructor) </span> </a> </li> <li class=md-nav__item> <a href=../../api/byte_container_with_subtype/clear_subtype/ class=md-nav__link> <span class=md-ellipsis> clear_subtype </span> </a> </li> <li class=md-nav__item> <a href=../../api/byte_container_with_subtype/has_subtype/ class=md-nav__link> <span class=md-ellipsis> has_subtype </span> </a> </li> <li class=md-nav__item> <a href=../../api/byte_container_with_subtype/set_subtype/ class=md-nav__link> <span class=md-ellipsis> set_subtype </span> </a> </li> <li class=md-nav__item> <a href=../../api/byte_container_with_subtype/subtype/ class=md-nav__link> <span class=md-ellipsis> subtype </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_3> <div class="md-nav__link md-nav__container"> <a href=../../api/adl_serializer/ class="md-nav__link "> <span class=md-ellipsis> adl_serializer </span> </a> <label class="md-nav__link " for=__nav_4_3 id=__nav_4_3_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_3_label aria-expanded=false> <label class=md-nav__title for=__nav_4_3> <span class="md-nav__icon md-icon"></span> adl_serializer </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../api/adl_serializer/from_json/ class=md-nav__link> <span class=md-ellipsis> from_json </span> </a> </li> <li class=md-nav__item> <a href=../../api/adl_serializer/to_json/ class=md-nav__link> <span class=md-ellipsis> to_json </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../api/json/ class=md-nav__link> <span class=md-ellipsis> json </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_5> <div class="md-nav__link md-nav__container"> <a href=../../api/json_pointer/ class="md-nav__link "> <span class=md-ellipsis> json_pointer </span> </a> <label class="md-nav__link " for=__nav_4_5 id=__nav_4_5_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_5_label aria-expanded=false> <label class=md-nav__title for=__nav_4_5> <span class="md-nav__icon md-icon"></span> json_pointer </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../api/json_pointer/json_pointer/ class=md-nav__link> <span class=md-ellipsis> (Constructor) </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/back/ class=md-nav__link> <span class=md-ellipsis> back </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/empty/ class=md-nav__link> <span class=md-ellipsis> empty </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/front/ class=md-nav__link> <span class=md-ellipsis> front </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/operator_string_t/ class=md-nav__link> <span class=md-ellipsis> operator string_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/operator_eq/ class=md-nav__link> <span class=md-ellipsis> operator== </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/operator_ne/ class=md-nav__link> <span class=md-ellipsis> operator!= </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/operator_slash/ class=md-nav__link> <span class=md-ellipsis> operator/ </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/operator_slasheq/ class=md-nav__link> <span class=md-ellipsis> operator/= </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/parent_pointer/ class=md-nav__link> <span class=md-ellipsis> parent_pointer </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/pop_back/ class=md-nav__link> <span class=md-ellipsis> pop_back </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/pop_front/ class=md-nav__link> <span class=md-ellipsis> pop_front </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/push_back/ class=md-nav__link> <span class=md-ellipsis> push_back </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/push_front/ class=md-nav__link> <span class=md-ellipsis> push_front </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/string_t/ class=md-nav__link> <span class=md-ellipsis> string_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/to_string/ class=md-nav__link> <span class=md-ellipsis> to_string </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_6> <div class="md-nav__link md-nav__container"> <a href=../../api/json_sax/ class="md-nav__link "> <span class=md-ellipsis> json_sax </span> </a> <label class="md-nav__link " for=__nav_4_6 id=__nav_4_6_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_6_label aria-expanded=false> <label class=md-nav__title for=__nav_4_6> <span class="md-nav__icon md-icon"></span> json_sax </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../api/json_sax/binary/ class=md-nav__link> <span class=md-ellipsis> binary </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_sax/boolean/ class=md-nav__link> <span class=md-ellipsis> boolean </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_sax/end_array/ class=md-nav__link> <span class=md-ellipsis> end_array </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_sax/end_object/ class=md-nav__link> <span class=md-ellipsis> end_object </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_sax/key/ class=md-nav__link> <span class=md-ellipsis> key </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_sax/null/ class=md-nav__link> <span class=md-ellipsis> null </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_sax/number_float/ class=md-nav__link> <span class=md-ellipsis> number_float </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_sax/number_integer/ class=md-nav__link> <span class=md-ellipsis> number_integer </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_sax/number_unsigned/ class=md-nav__link> <span class=md-ellipsis> number_unsigned </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_sax/parse_error/ class=md-nav__link> <span class=md-ellipsis> parse_error </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_sax/start_array/ class=md-nav__link> <span class=md-ellipsis> start_array </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_sax/start_object/ class=md-nav__link> <span class=md-ellipsis> start_object </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_sax/string/ class=md-nav__link> <span class=md-ellipsis> string </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../api/operator_ltlt/ class=md-nav__link> <span class=md-ellipsis> operator<<(basic_json), operator<<(json_pointer) </span> </a> </li> <li class=md-nav__item> <a href=../../api/operator_gtgt/ class=md-nav__link> <span class=md-ellipsis> operator>>(basic_json) </span> </a> </li> <li class=md-nav__item> <a href=../../api/operator_literal_json/ class=md-nav__link> <span class=md-ellipsis> operator""_json </span> </a> </li> <li class=md-nav__item> <a href=../../api/operator_literal_json_pointer/ class=md-nav__link> <span class=md-ellipsis> operator""_json_pointer </span> </a> </li> <li class=md-nav__item> <a href=../../api/ordered_json/ class=md-nav__link> <span class=md-ellipsis> ordered_json </span> </a> </li> <li class=md-nav__item> <a href=../../api/ordered_map/ class=md-nav__link> <span class=md-ellipsis> ordered_map </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_13> <div class="md-nav__link md-nav__container"> <a href=../../api/macros/ class="md-nav__link "> <span class=md-ellipsis> macros </span> </a> <label class="md-nav__link " for=__nav_4_13 id=__nav_4_13_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_13_label aria-expanded=false> <label class=md-nav__title for=__nav_4_13> <span class="md-nav__icon md-icon"></span> macros </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../api/macros/json_assert/ class=md-nav__link> <span class=md-ellipsis> JSON_ASSERT </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_brace_init_copy_semantics/ class=md-nav__link> <span class=md-ellipsis> JSON_BRACE_INIT_COPY_SEMANTICS </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_throw_user/ class=md-nav__link> <span class=md-ellipsis> JSON_CATCH_USER, JSON_THROW_USER, JSON_TRY_USER </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_diagnostics/ class=md-nav__link> <span class=md-ellipsis> JSON_DIAGNOSTICS </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_diagnostic_positions/ class=md-nav__link> <span class=md-ellipsis> JSON_DIAGNOSTIC_POSITIONS </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_disable_enum_serialization/ class=md-nav__link> <span class=md-ellipsis> JSON_DISABLE_ENUM_SERIALIZATION </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_has_cpp_11/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_CPP_11, JSON_HAS_CPP_14, JSON_HAS_CPP_17, JSON_HAS_CPP_20 </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_has_filesystem/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_EXPERIMENTAL_FILESYSTEM, JSON_HAS_FILESYSTEM </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_has_ranges/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_RANGES </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_has_static_rtti/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_STATIC_RTTI </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_has_three_way_comparison/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_THREE_WAY_COMPARISON </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_noexception/ class=md-nav__link> <span class=md-ellipsis> JSON_NOEXCEPTION </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_no_io/ class=md-nav__link> <span class=md-ellipsis> JSON_NO_IO </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_skip_library_version_check/ class=md-nav__link> <span class=md-ellipsis> JSON_SKIP_LIBRARY_VERSION_CHECK </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_skip_unsupported_compiler_check/ class=md-nav__link> <span class=md-ellipsis> JSON_SKIP_UNSUPPORTED_COMPILER_CHECK </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_use_global_udls/ class=md-nav__link> <span class=md-ellipsis> JSON_USE_GLOBAL_UDLS </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_use_implicit_conversions/ class=md-nav__link> <span class=md-ellipsis> JSON_USE_IMPLICIT_CONVERSIONS </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_use_legacy_discarded_value_comparison/ class=md-nav__link> <span class=md-ellipsis> JSON_USE_LEGACY_DISCARDED_VALUE_COMPARISON </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/nlohmann_define_derived_type/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_ONLY_SERIALIZE, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/nlohmann_define_type_intrusive/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_TYPE_INTRUSIVE, NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_TYPE_INTRUSIVE_ONLY_SERIALIZE </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/nlohmann_define_type_non_intrusive/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/nlohmann_define_type_with_names/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_TYPE_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/nlohmann_json_namespace/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_NAMESPACE </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/nlohmann_json_namespace_begin/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_NAMESPACE_BEGIN, NLOHMANN_JSON_NAMESPACE_END </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/nlohmann_json_namespace_no_version/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_NAMESPACE_NO_VERSION </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/nlohmann_json_serialize_enum/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_SERIALIZE_ENUM </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/nlohmann_json_serialize_enum_strict/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_SERIALIZE_ENUM_STRICT </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/nlohmann_json_version_major/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_VERSION_MAJOR, NLOHMANN_JSON_VERSION_MINOR, NLOHMANN_JSON_VERSION_PATCH </span> </a> </li> </ul> </nav> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_5> <div class="md-nav__link md-nav__container"> <a href=../../community/ class="md-nav__link "> <span class=md-ellipsis> Community </span> </a> <label class="md-nav__link " for=__nav_5 id=__nav_5_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_5_label aria-expanded=false> <label class=md-nav__title for=__nav_5> <span class="md-nav__icon md-icon"></span> Community </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../community/code_of_conduct/ class=md-nav__link> <span class=md-ellipsis> Code of Conduct </span> </a> </li> <li class=md-nav__item> <a href=../../community/contribution_guidelines/ class=md-nav__link> <span class=md-ellipsis> Contribution Guidelines </span> </a> </li> <li class=md-nav__item> <a href=../../community/quality_assurance/ class=md-nav__link> <span class=md-ellipsis> Quality assurance </span> </a> </li> <li class=md-nav__item> <a href=../../community/governance/ class=md-nav__link> <span class=md-ellipsis> Governance </span> </a> </li> <li class=md-nav__item> <a href=../../community/security_policy/ class=md-nav__link> <span class=md-ellipsis> Security Policy </span> </a> </li> </ul> </nav> </li> </ul> </nav> </div> </div> </div> <div class="md-sidebar md-sidebar--secondary" data-md-component=sidebar data-md-type=toc> <div class=md-sidebar__scrollwrap> <div class=md-sidebar__inner> <nav class="md-nav md-nav--secondary" aria-label="Table of contents"> <label class=md-nav__title for=__toc> <span class="md-nav__icon md-icon"></span> Table of contents </label> <ul class=md-nav__list data-md-component=toc data-md-scrollfix> <li class=md-nav__item> <a href=#json_assertx class=md-nav__link> <span class=md-ellipsis> JSON_ASSERT(x) </span> </a> </li> <li class=md-nav__item> <a href=#json_catch_userexception class=md-nav__link> <span class=md-ellipsis> JSON_CATCH_USER(exception) </span> </a> </li> <li class=md-nav__item> <a href=#json_diagnostics class=md-nav__link> <span class=md-ellipsis> JSON_DIAGNOSTICS </span> </a> </li> <li class=md-nav__item> <a href=#json_diagnostic_positions class=md-nav__link> <span class=md-ellipsis> JSON_DIAGNOSTIC_POSITIONS </span> </a> </li> <li class=md-nav__item> <a href=#json_has_cpp_11-json_has_cpp_14-json_has_cpp_17-json_has_cpp_20 class=md-nav__link> <span class=md-ellipsis> JSON_HAS_CPP_11, JSON_HAS_CPP_14, JSON_HAS_CPP_17, JSON_HAS_CPP_20 </span> </a> </li> <li class=md-nav__item> <a href=#json_has_filesystem-json_has_experimental_filesystem class=md-nav__link> <span class=md-ellipsis> JSON_HAS_FILESYSTEM, JSON_HAS_EXPERIMENTAL_FILESYSTEM </span> </a> </li> <li class=md-nav__item> <a href=#json_noexception class=md-nav__link> <span class=md-ellipsis> JSON_NOEXCEPTION </span> </a> </li> <li class=md-nav__item> <a href=#json_disable_enum_serialization class=md-nav__link> <span class=md-ellipsis> JSON_DISABLE_ENUM_SERIALIZATION </span> </a> </li> <li class=md-nav__item> <a href=#json_no_io class=md-nav__link> <span class=md-ellipsis> JSON_NO_IO </span> </a> </li> <li class=md-nav__item> <a href=#json_skip_library_version_check class=md-nav__link> <span class=md-ellipsis> JSON_SKIP_LIBRARY_VERSION_CHECK </span> </a> </li> <li class=md-nav__item> <a href=#json_skip_unsupported_compiler_check class=md-nav__link> <span class=md-ellipsis> JSON_SKIP_UNSUPPORTED_COMPILER_CHECK </span> </a> </li> <li class=md-nav__item> <a href=#json_throw_userexception class=md-nav__link> <span class=md-ellipsis> JSON_THROW_USER(exception) </span> </a> </li> <li class=md-nav__item> <a href=#json_try_user class=md-nav__link> <span class=md-ellipsis> JSON_TRY_USER </span> </a> </li> <li class=md-nav__item> <a href=#json_use_implicit_conversions class=md-nav__link> <span class=md-ellipsis> JSON_USE_IMPLICIT_CONVERSIONS </span> </a> </li> <li class=md-nav__item> <a href=#nlohmann_define_type_-nlohmann_define_derived_type_ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_TYPE_*(...), NLOHMANN_DEFINE_DERIVED_TYPE_*(...) </span> </a> </li> <li class=md-nav__item> <a href=#nlohmann_json_serialize_enumtype class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_SERIALIZE_ENUM(type, ...) </span> </a> </li> <li class=md-nav__item> <a href=#nlohmann_json_version_major-nlohmann_json_version_minor-nlohmann_json_version_patch class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_VERSION_MAJOR, NLOHMANN_JSON_VERSION_MINOR, NLOHMANN_JSON_VERSION_PATCH </span> </a> </li> </ul> </nav> </div> </div> </div> <div class=md-content data-md-component=content> <article class="md-content__inner md-typeset"> <a href="https://github.com/nlohmann/json/edit/develop/docs/mkdocs/docs/features/macros.md" title="Edit this page" class="md-content__button md-icon" rel="edit"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M10 20H6V4h7v5h5v3.1l2-2V8l-6-6H6c-1.1 0-2 .9-2 2v16c0 1.1.9 2 2 2h4zm10.2-7c.1 0 .3.1.4.2l1.3 1.3c.2.2.2.6 0 .8l-1 1-2.1-2.1 1-1c.1-.1.2-.2.4-.2m0 3.9L14.1 23H12v-2.1l6.1-6.1z"/></svg> </a> <a href="https://github.com/nlohmann/json/raw/develop/docs/mkdocs/docs/features/macros.md" title="View source of this page" class="md-content__button md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M17 18c.56 0 1 .44 1 1s-.44 1-1 1-1-.44-1-1 .44-1 1-1m0-3c-2.73 0-5.06 1.66-6 4 .94 2.34 3.27 4 6 4s5.06-1.66 6-4c-.94-2.34-3.27-4-6-4m0 6.5a2.5 2.5 0 0 1-2.5-2.5 2.5 2.5 0 0 1 2.5-2.5 2.5 2.5 0 0 1 2.5 2.5 2.5 2.5 0 0 1-2.5 2.5M9.27 20H6V4h7v5h5v4.07c.7.08 1.36.25 2 .49V8l-6-6H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h4.5a8.2 8.2 0 0 1-1.23-2"/></svg> </a> <h1 id=supported-macros>Supported Macros<a class=headerlink href=#supported-macros title="Permanent link">&para;</a></h1> <p>Some aspects of the library can be configured by defining preprocessor macros before including the <code>json.hpp</code> header. See also the <a href=../../api/macros/ ><abbr title="Application Programming Interfaces">API</abbr> documentation for macros</a> for examples and more information.</p> <h2 id=json_assertx><code>JSON_ASSERT(x)</code><a class=headerlink href=#json_assertx title="Permanent link">&para;</a></h2> <p>This macro controls which code is executed for <a href=../assertions/ >runtime assertions</a> of the library.</p> <p>See <a href=../../api/macros/json_assert/ >full documentation of <code>JSON_ASSERT(x)</code></a>.</p> <h2 id=json_catch_userexception><code>JSON_CATCH_USER(exception)</code><a class=headerlink href=#json_catch_userexception title="Permanent link">&para;</a></h2> <p>This macro overrides <a href="https://en.cppreference.com/w/cpp/language/try_catch"><code class=highlight><span class=k>catch</span></code></a> calls inside the library.</p> <p>See <a href=../../api/macros/json_throw_user/ >full documentation of <code>JSON_CATCH_USER(exception)</code></a>.</p> <h2 id=json_diagnostics><code>JSON_DIAGNOSTICS</code><a class=headerlink href=#json_diagnostics title="Permanent link">&para;</a></h2> <p>This macro enables extended diagnostics for exception messages. Possible values are <code>1</code> to enable or <code>0</code> to disable (default).</p> <p>When enabled, exception messages contain a <a href=../json_pointer/ ><abbr title="JavaScript Object Notation">JSON</abbr> Pointer</a> to the <abbr title="JavaScript Object Notation">JSON</abbr> value that triggered the exception, see <a href=../../home/exceptions/#extended-diagnostic-messages>Extended diagnostic messages</a> for an example. Note that enabling this macro increases the size of every <abbr title="JavaScript Object Notation">JSON</abbr> value by one pointer and adds some runtime overhead.</p> <p>The diagnostics messages can also be controlled with the CMake option <a href=../../integration/cmake/#json_diagnostics><code>JSON_Diagnostics</code></a> (<code>OFF</code> by default) which sets <code>JSON_DIAGNOSTICS</code> accordingly.</p> <p>See <a href=../../api/macros/json_diagnostics/ >full documentation of <code>JSON_DIAGNOSTICS</code></a>.</p> <h2 id=json_diagnostic_positions><code>JSON_DIAGNOSTIC_POSITIONS</code><a class=headerlink href=#json_diagnostic_positions title="Permanent link">&para;</a></h2> <p>When enabled, two new member functions <a href=../../api/basic_json/start_pos/ ><code>start_pos()</code></a> and <a href=../../api/basic_json/end_pos/ ><code>end_pos()</code></a> are added to <a href=../../api/basic_json/ ><code>basic_json</code></a> values. If the value was created by calling the<a href=../../api/basic_json/parse/ ><code>parse</code></a> function, then these functions allow querying the byte positions of the value in the input it was parsed from. The byte positions are also used in exceptions to help locate errors.</p> <p>The diagnostics positions can also be controlled with the CMake option <a href=../../integration/cmake/#json_diagnostic_positions><code>JSON_Diagnostic_Positions</code></a> (<code>OFF</code> by default) which sets <code>JSON_DIAGNOSTIC_POSITIONS</code> accordingly.</p> <p>See <a href=../../api/macros/json_diagnostic_positions/ >full documentation of <code>JSON_DIAGNOSTIC_POSITIONS</code></a></p> <h2 id=json_has_cpp_11-json_has_cpp_14-json_has_cpp_17-json_has_cpp_20><code>JSON_HAS_CPP_11</code>, <code>JSON_HAS_CPP_14</code>, <code>JSON_HAS_CPP_17</code>, <code>JSON_HAS_CPP_20</code><a class=headerlink href=#json_has_cpp_11-json_has_cpp_14-json_has_cpp_17-json_has_cpp_20 title="Permanent link">&para;</a></h2> <p>The library targets C++11, but also supports some features introduced in later C++ versions (e.g., <code>std::string_view</code> support for C++17). For these new features, the library implements some preprocessor checks to determine the C++ standard. By defining any of these symbols, the internal check is overridden and the provided C++ version is unconditionally assumed. This can be helpful for compilers that only implement parts of the standard and would be detected incorrectly.</p> <p>See <a href=../../api/macros/json_has_cpp_11/ >full documentation of <code>JSON_HAS_CPP_11</code>, <code>JSON_HAS_CPP_14</code>, <code>JSON_HAS_CPP_17</code>, and <code>JSON_HAS_CPP_20</code></a>.</p> <h2 id=json_has_filesystem-json_has_experimental_filesystem><code>JSON_HAS_FILESYSTEM</code>, <code>JSON_HAS_EXPERIMENTAL_FILESYSTEM</code><a class=headerlink href=#json_has_filesystem-json_has_experimental_filesystem title="Permanent link">&para;</a></h2> <p>When compiling with C++17, the library provides conversions from and to <code>std::filesystem::path</code>. As compiler support for filesystem is limited, the library tries to detect whether <code>&lt;filesystem&gt;</code>/<code>std::filesystem</code> (<code>JSON_HAS_FILESYSTEM</code>) or <code>&lt;experimental/filesystem&gt;</code>/<code>std::experimental::filesystem</code> (<code>JSON_HAS_EXPERIMENTAL_FILESYSTEM</code>) should be used. To override the built-in check, define <code>JSON_HAS_FILESYSTEM</code> or <code>JSON_HAS_EXPERIMENTAL_FILESYSTEM</code> to <code>1</code>.</p> <p>See <a href=../../api/macros/json_has_filesystem/ >full documentation of <code>JSON_HAS_FILESYSTEM</code> and <code>JSON_HAS_EXPERIMENTAL_FILESYSTEM</code></a>.</p> <h2 id=json_noexception><code>JSON_NOEXCEPTION</code><a class=headerlink href=#json_noexception title="Permanent link">&para;</a></h2> <p>Exceptions can be switched off by defining the symbol <code>JSON_NOEXCEPTION</code>.</p> <p>See <a href=../../api/macros/json_noexception/ >full documentation of <code>JSON_NOEXCEPTION</code></a>.</p> <h2 id=json_disable_enum_serialization><code>JSON_DISABLE_ENUM_SERIALIZATION</code><a class=headerlink href=#json_disable_enum_serialization title="Permanent link">&para;</a></h2> <p>When defined, default parse and serialize functions for enums are excluded and have to be provided by the user, for example, using <a href=../../api/macros/nlohmann_json_serialize_enum/ ><code>NLOHMANN_JSON_SERIALIZE_ENUM</code></a>.</p> <p>See <a href=../../api/macros/json_disable_enum_serialization/ >full documentation of <code>JSON_DISABLE_ENUM_SERIALIZATION</code></a>.</p> <h2 id=json_no_io><code>JSON_NO_IO</code><a class=headerlink href=#json_no_io title="Permanent link">&para;</a></h2> <p>When defined, headers <code>&lt;cstdio&gt;</code>, <code>&lt;ios&gt;</code>, <code>&lt;iosfwd&gt;</code>, <code>&lt;istream&gt;</code>, and <code>&lt;ostream&gt;</code> are not included and parse functions relying on these headers are excluded. This is relevant for environment where these I/O functions are disallowed for security reasons (e.g., Intel Software Guard Extensions (SGX)).</p> <p>See <a href=../../api/macros/json_no_io/ >full documentation of <code>JSON_NO_IO</code></a>.</p> <h2 id=json_skip_library_version_check><code>JSON_SKIP_LIBRARY_VERSION_CHECK</code><a class=headerlink href=#json_skip_library_version_check title="Permanent link">&para;</a></h2> <p>When defined, the library will not create a compiler warning when a different version of the library was already included.</p> <p>See <a href=../../api/macros/json_skip_library_version_check/ >full documentation of <code>JSON_SKIP_LIBRARY_VERSION_CHECK</code></a>.</p> <h2 id=json_skip_unsupported_compiler_check><code>JSON_SKIP_UNSUPPORTED_COMPILER_CHECK</code><a class=headerlink href=#json_skip_unsupported_compiler_check title="Permanent link">&para;</a></h2> <p>When defined, the library will not create a compile error when a known unsupported compiler is detected. This allows using the library with compilers that do not fully support C++11 and may only work if unsupported features are not used.</p> <p>See <a href=../../api/macros/json_skip_unsupported_compiler_check/ >full documentation of <code>JSON_SKIP_UNSUPPORTED_COMPILER_CHECK</code></a>.</p> <h2 id=json_throw_userexception><code>JSON_THROW_USER(exception)</code><a class=headerlink href=#json_throw_userexception title="Permanent link">&para;</a></h2> <p>This macro overrides <code class=highlight><span class=k>throw</span></code> calls inside the library. The argument is the exception to be thrown.</p> <p>See <a href=../../api/macros/json_throw_user/ >full documentation of <code>JSON_THROW_USER(exception)</code></a>.</p> <h2 id=json_try_user><code>JSON_TRY_USER</code><a class=headerlink href=#json_try_user title="Permanent link">&para;</a></h2> <p>This macro overrides <code class=highlight><span class=k>try</span></code> calls inside the library.</p> <p>See <a href=../../api/macros/json_throw_user/ >full documentation of <code>JSON_TRY_USER</code></a>.</p> <h2 id=json_use_implicit_conversions><code>JSON_USE_IMPLICIT_CONVERSIONS</code><a class=headerlink href=#json_use_implicit_conversions title="Permanent link">&para;</a></h2> <p>When defined to <code>0</code>, implicit conversions are switched off. By default, implicit conversions are switched on.</p> <p>See <a href=../../api/macros/json_use_implicit_conversions/ >full documentation of <code>JSON_USE_IMPLICIT_CONVERSIONS</code></a>.</p> <h2 id=nlohmann_define_type_-nlohmann_define_derived_type_><code>NLOHMANN_DEFINE_TYPE_*(...)</code>, <code>NLOHMANN_DEFINE_DERIVED_TYPE_*(...)</code><a class=headerlink href=#nlohmann_define_type_-nlohmann_define_derived_type_ title="Permanent link">&para;</a></h2> <p>The library defines 12 macros to simplify the serialization/deserialization of types. See the page on <a href=../arbitrary_types/#simplify-your-life-with-macros>arbitrary type conversion</a> for a detailed discussion.</p> <h2 id=nlohmann_json_serialize_enumtype><code>NLOHMANN_JSON_SERIALIZE_ENUM(type, ...)</code><a class=headerlink href=#nlohmann_json_serialize_enumtype title="Permanent link">&para;</a></h2> <p>This macro simplifies the serialization/deserialization of enum types. See <a href=../enum_conversion/ >Specializing enum conversion</a> for more information.</p> <p>See <a href=../../api/macros/nlohmann_json_serialize_enum/ >full documentation of <code>NLOHMANN_JSON_SERIALIZE_ENUM</code></a>.</p> <h2 id=nlohmann_json_version_major-nlohmann_json_version_minor-nlohmann_json_version_patch><code>NLOHMANN_JSON_VERSION_MAJOR</code>, <code>NLOHMANN_JSON_VERSION_MINOR</code>, <code>NLOHMANN_JSON_VERSION_PATCH</code><a class=headerlink href=#nlohmann_json_version_major-nlohmann_json_version_minor-nlohmann_json_version_patch title="Permanent link">&para;</a></h2> <p>These macros are defined by the library and contain the version numbers according to <a href="https://semver.org/spec/v2.0.0.html">Semantic Versioning 2.0.0</a>.</p> <p>See <a href=../../api/macros/nlohmann_json_version_major/ >full documentation of <code>NLOHMANN_JSON_VERSION_MAJOR</code>, <code>NLOHMANN_JSON_VERSION_MINOR</code>, and <code>NLOHMANN_JSON_VERSION_PATCH</code></a>.</p> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 23, 2026 11:16:18 UTC">June 23, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
+<!doctype html><html lang=en class=no-js> <head><meta charset=utf-8><meta name=viewport content="width=device-width,initial-scale=1"><meta name=author content="Niels Lohmann"><link href="https://json.nlohmann.me/features/macros/" rel="canonical"><link href=../enum_conversion/ rel=prev><link href=../types/ rel=next><link rel=icon href=../../assets/images/favicon.png><meta name=generator content="mkdocs-1.6.1, mkdocs-material-9.7.6"><title>Supported Macros - JSON for Modern C++</title><link rel=stylesheet href=../../assets/stylesheets/main.484c7ddc.min.css><link rel=stylesheet href=../../assets/stylesheets/palette.ab4e12ef.min.css><link rel="stylesheet" href="../../assets/external/fonts.googleapis.com/css.61a430c9.css"><style>:root{--md-text-font:"Roboto";--md-code-font:"JetBrains Mono"}</style><link rel=stylesheet href=../../css/custom.css><script>__md_scope=new URL("../..",location),__md_hash=e=>[...e].reduce(((e,_)=>(e<<5)-e+_.charCodeAt(0)),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script></head> <body dir=ltr data-md-color-scheme=default data-md-color-primary=indigo data-md-color-accent=indigo> <input class=md-toggle data-md-toggle=drawer type=checkbox id=__drawer autocomplete=off> <input class=md-toggle data-md-toggle=search type=checkbox id=__search autocomplete=off> <label class=md-overlay for=__drawer></label> <div data-md-component=skip> <a href=#supported-macros class=md-skip> Skip to content </a> </div> <div data-md-component=announce> </div> <header class=md-header data-md-component=header> <nav class="md-header__inner md-grid" aria-label=Header> <a href=../.. title="JSON for Modern C++" class="md-header__button md-logo" aria-label="JSON for Modern C++" data-md-component=logo> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54"/></svg> </a> <label class="md-header__button md-icon" for=__drawer> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M3 6h18v2H3zm0 5h18v2H3zm0 5h18v2H3z"/></svg> </label> <div class=md-header__title data-md-component=header-title> <div class=md-header__ellipsis> <div class=md-header__topic> <span class=md-ellipsis> JSON for Modern C++ </span> </div> <div class=md-header__topic data-md-component=header-topic> <span class=md-ellipsis> Supported Macros </span> </div> </div> </div> <form class=md-header__option data-md-component=palette> <input class=md-option data-md-color-media="(prefers-color-scheme: light)" data-md-color-scheme=default data-md-color-primary=indigo data-md-color-accent=indigo aria-label="Switch to dark mode" type=radio name=__palette id=__palette_0> <label class="md-header__button md-icon" title="Switch to dark mode" for=__palette_1 hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a4 4 0 0 0-4 4 4 4 0 0 0 4 4 4 4 0 0 0 4-4 4 4 0 0 0-4-4m0 10a6 6 0 0 1-6-6 6 6 0 0 1 6-6 6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12z"/></svg> </label> <input class=md-option data-md-color-media="(prefers-color-scheme: dark)" data-md-color-scheme=slate data-md-color-primary=indigo data-md-color-accent=indigo aria-label="Switch to light mode" type=radio name=__palette id=__palette_1> <label class="md-header__button md-icon" title="Switch to light mode" for=__palette_0 hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 18c-.89 0-1.74-.2-2.5-.55C11.56 16.5 13 14.42 13 12s-1.44-4.5-3.5-5.45C10.26 6.2 11.11 6 12 6a6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12z"/></svg> </label> </form> <script>var palette=__md_get("__palette");if(palette&&palette.color){if("(prefers-color-scheme)"===palette.color.media){var media=matchMedia("(prefers-color-scheme: light)"),input=document.querySelector(media.matches?"[data-md-color-media='(prefers-color-scheme: light)']":"[data-md-color-media='(prefers-color-scheme: dark)']");palette.color.media=input.getAttribute("data-md-color-media"),palette.color.scheme=input.getAttribute("data-md-color-scheme"),palette.color.primary=input.getAttribute("data-md-color-primary"),palette.color.accent=input.getAttribute("data-md-color-accent")}for(var[key,value]of Object.entries(palette.color))document.body.setAttribute("data-md-color-"+key,value)}</script> <label class="md-header__button md-icon" for=__search> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg> </label> <div class=md-search data-md-component=search role=dialog> <label class=md-search__overlay for=__search></label> <div class=md-search__inner role=search> <form class=md-search__form name=search> <input type=text class=md-search__input name=query aria-label=Search placeholder=Search autocapitalize=off autocorrect=off autocomplete=off spellcheck=false data-md-component=search-query required> <label class="md-search__icon md-icon" for=__search> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11z"/></svg> </label> <nav class=md-search__options aria-label=Search> <button type=reset class="md-search__icon md-icon" title=Clear aria-label=Clear tabindex=-1> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z"/></svg> </button> </nav> </form> <div class=md-search__output> <div class=md-search__scrollwrap tabindex=0 data-md-scrollfix> <div class=md-search-result data-md-component=search-result> <div class=md-search-result__meta> Initializing search </div> <ol class=md-search-result__list role=presentation></ol> </div> </div> </div> </div> </div> <div class=md-header__source> <a href="https://github.com/nlohmann/json" title="Go to repository" class="md-source" data-md-component="source"> <div class="md-source__icon md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </div> <div class=md-source__repository> nlohmann/json </div> </a> </div> </nav> </header> <div class=md-container data-md-component=container> <nav class=md-tabs aria-label=Tabs data-md-component=tabs> <div class=md-grid> <ul class=md-tabs__list> <li class=md-tabs__item> <a href=../.. class=md-tabs__link> Home </a> </li> <li class="md-tabs__item md-tabs__item--active"> <a href=../arbitrary_types/ class=md-tabs__link> Features </a> </li> <li class=md-tabs__item> <a href=../../integration/ class=md-tabs__link> Integration </a> </li> <li class=md-tabs__item> <a href=../../api/basic_json/ class=md-tabs__link> API Documentation </a> </li> <li class=md-tabs__item> <a href=../../community/ class=md-tabs__link> Community </a> </li> </ul> </div> </nav> <main class=md-main data-md-component=main> <div class="md-main__inner md-grid"> <div class="md-sidebar md-sidebar--primary" data-md-component=sidebar data-md-type=navigation> <div class=md-sidebar__scrollwrap> <div class=md-sidebar__inner> <nav class="md-nav md-nav--primary md-nav--lifted" aria-label=Navigation data-md-level=0> <label class=md-nav__title for=__drawer> <a href=../.. title="JSON for Modern C++" class="md-nav__button md-logo" aria-label="JSON for Modern C++" data-md-component=logo> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54"/></svg> </a> JSON for Modern C++ </label> <div class=md-nav__source> <a href="https://github.com/nlohmann/json" title="Go to repository" class="md-source" data-md-component="source"> <div class="md-source__icon md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </div> <div class=md-source__repository> nlohmann/json </div> </a> </div> <ul class=md-nav__list data-md-scrollfix> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_1> <div class="md-nav__link md-nav__container"> <a href=../.. class="md-nav__link "> <span class=md-ellipsis> Home </span> </a> <label class="md-nav__link " for=__nav_1 id=__nav_1_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_1_label aria-expanded=false> <label class=md-nav__title for=__nav_1> <span class="md-nav__icon md-icon"></span> Home </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../home/license/ class=md-nav__link> <span class=md-ellipsis> License </span> </a> </li> <li class=md-nav__item> <a href=../../home/faq/ class=md-nav__link> <span class=md-ellipsis> FAQ </span> </a> </li> <li class=md-nav__item> <a href=../../home/exceptions/ class=md-nav__link> <span class=md-ellipsis> Exceptions </span> </a> </li> <li class=md-nav__item> <a href=../../home/releases/ class=md-nav__link> <span class=md-ellipsis> Releases </span> </a> </li> <li class=md-nav__item> <a href=../../home/design_goals/ class=md-nav__link> <span class=md-ellipsis> Design goals </span> </a> </li> <li class=md-nav__item> <a href=../../home/architecture/ class=md-nav__link> <span class=md-ellipsis> Architecture </span> </a> </li> <li class=md-nav__item> <a href=../../home/customers/ class=md-nav__link> <span class=md-ellipsis> Customers </span> </a> </li> <li class=md-nav__item> <a href=../../home/sponsors/ class=md-nav__link> <span class=md-ellipsis> Sponsors </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--active md-nav__item--section md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2 checked> <label class=md-nav__link for=__nav_2 id=__nav_2_label tabindex> <span class=md-ellipsis> Features </span> <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_2_label aria-expanded=true> <label class=md-nav__title for=__nav_2> <span class="md-nav__icon md-icon"></span> Features </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../arbitrary_types/ class=md-nav__link> <span class=md-ellipsis> Arbitrary Type Conversions </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_2> <div class="md-nav__link md-nav__container"> <a href=../binary_formats/ class="md-nav__link "> <span class=md-ellipsis> Binary Formats </span> </a> <label class="md-nav__link " for=__nav_2_2 id=__nav_2_2_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_2_label aria-expanded=false> <label class=md-nav__title for=__nav_2_2> <span class="md-nav__icon md-icon"></span> Binary Formats </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../binary_formats/bjdata/ class=md-nav__link> <span class=md-ellipsis> BJData </span> </a> </li> <li class=md-nav__item> <a href=../binary_formats/bson/ class=md-nav__link> <span class=md-ellipsis> BSON </span> </a> </li> <li class=md-nav__item> <a href=../binary_formats/cbor/ class=md-nav__link> <span class=md-ellipsis> CBOR </span> </a> </li> <li class=md-nav__item> <a href=../binary_formats/messagepack/ class=md-nav__link> <span class=md-ellipsis> MessagePack </span> </a> </li> <li class=md-nav__item> <a href=../binary_formats/ubjson/ class=md-nav__link> <span class=md-ellipsis> UBJSON </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../binary_values/ class=md-nav__link> <span class=md-ellipsis> Binary Values </span> </a> </li> <li class=md-nav__item> <a href=../comments/ class=md-nav__link> <span class=md-ellipsis> Comments </span> </a> </li> <li class=md-nav__item> <a href=../trailing_commas/ class=md-nav__link> <span class=md-ellipsis> Trailing Commas </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_6> <div class="md-nav__link md-nav__container"> <a href=../element_access/ class="md-nav__link "> <span class=md-ellipsis> Element Access </span> </a> <label class="md-nav__link " for=__nav_2_6 id=__nav_2_6_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_6_label aria-expanded=false> <label class=md-nav__title for=__nav_2_6> <span class="md-nav__icon md-icon"></span> Element Access </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../element_access/unchecked_access/ class=md-nav__link> <span class=md-ellipsis> Unchecked access: operator[] </span> </a> </li> <li class=md-nav__item> <a href=../element_access/checked_access/ class=md-nav__link> <span class=md-ellipsis> Checked access: at </span> </a> </li> <li class=md-nav__item> <a href=../element_access/default_value/ class=md-nav__link> <span class=md-ellipsis> Access with default value: value </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../iterators/ class=md-nav__link> <span class=md-ellipsis> Iterators </span> </a> </li> <li class=md-nav__item> <a href=../json_pointer/ class=md-nav__link> <span class=md-ellipsis> JSON Pointer </span> </a> </li> <li class=md-nav__item> <a href=../json_patch/ class=md-nav__link> <span class=md-ellipsis> JSON Patch and Diff </span> </a> </li> <li class=md-nav__item> <a href=../merge_patch/ class=md-nav__link> <span class=md-ellipsis> JSON Merge Patch </span> </a> </li> <li class=md-nav__item> <a href=../modules/ class=md-nav__link> <span class=md-ellipsis> Modules </span> </a> </li> <li class=md-nav__item> <a href=../namespace/ class=md-nav__link> <span class=md-ellipsis> nlohmann Namespace </span> </a> </li> <li class=md-nav__item> <a href=../object_order/ class=md-nav__link> <span class=md-ellipsis> Object Order </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_14> <div class="md-nav__link md-nav__container"> <a href=../parsing/ class="md-nav__link "> <span class=md-ellipsis> Parsing </span> </a> <label class="md-nav__link " for=__nav_2_14 id=__nav_2_14_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_14_label aria-expanded=false> <label class=md-nav__title for=__nav_2_14> <span class="md-nav__icon md-icon"></span> Parsing </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../parsing/json_lines/ class=md-nav__link> <span class=md-ellipsis> JSON Lines </span> </a> </li> <li class=md-nav__item> <a href=../parsing/parse_exceptions/ class=md-nav__link> <span class=md-ellipsis> Parsing and Exceptions </span> </a> </li> <li class=md-nav__item> <a href=../parsing/parser_callbacks/ class=md-nav__link> <span class=md-ellipsis> Parser Callbacks </span> </a> </li> <li class=md-nav__item> <a href=../parsing/sax_interface/ class=md-nav__link> <span class=md-ellipsis> SAX Interface </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../assertions/ class=md-nav__link> <span class=md-ellipsis> Runtime Assertions </span> </a> </li> <li class=md-nav__item> <a href=../enum_conversion/ class=md-nav__link> <span class=md-ellipsis> Specializing enum conversion </span> </a> </li> <li class="md-nav__item md-nav__item--active"> <input class="md-nav__toggle md-toggle" type=checkbox id=__toc> <label class="md-nav__link md-nav__link--active" for=__toc> <span class=md-ellipsis> Supported Macros </span> <span class="md-nav__icon md-icon"></span> </label> <a href=./ class="md-nav__link md-nav__link--active"> <span class=md-ellipsis> Supported Macros </span> </a> <nav class="md-nav md-nav--secondary" aria-label="Table of contents"> <label class=md-nav__title for=__toc> <span class="md-nav__icon md-icon"></span> Table of contents </label> <ul class=md-nav__list data-md-component=toc data-md-scrollfix> <li class=md-nav__item> <a href=#json_assertx class=md-nav__link> <span class=md-ellipsis> JSON_ASSERT(x) </span> </a> </li> <li class=md-nav__item> <a href=#json_brace_init_copy_semantics class=md-nav__link> <span class=md-ellipsis> JSON_BRACE_INIT_COPY_SEMANTICS </span> </a> </li> <li class=md-nav__item> <a href=#json_catch_userexception class=md-nav__link> <span class=md-ellipsis> JSON_CATCH_USER(exception) </span> </a> </li> <li class=md-nav__item> <a href=#json_diagnostics class=md-nav__link> <span class=md-ellipsis> JSON_DIAGNOSTICS </span> </a> </li> <li class=md-nav__item> <a href=#json_diagnostic_positions class=md-nav__link> <span class=md-ellipsis> JSON_DIAGNOSTIC_POSITIONS </span> </a> </li> <li class=md-nav__item> <a href=#json_has_cpp_11-json_has_cpp_14-json_has_cpp_17-json_has_cpp_20-json_has_cpp_23-json_has_cpp_26 class=md-nav__link> <span class=md-ellipsis> JSON_HAS_CPP_11, JSON_HAS_CPP_14, JSON_HAS_CPP_17, JSON_HAS_CPP_20, JSON_HAS_CPP_23, JSON_HAS_CPP_26 </span> </a> </li> <li class=md-nav__item> <a href=#json_has_filesystem-json_has_experimental_filesystem class=md-nav__link> <span class=md-ellipsis> JSON_HAS_FILESYSTEM, JSON_HAS_EXPERIMENTAL_FILESYSTEM </span> </a> </li> <li class=md-nav__item> <a href=#json_noexception class=md-nav__link> <span class=md-ellipsis> JSON_NOEXCEPTION </span> </a> </li> <li class=md-nav__item> <a href=#json_disable_enum_serialization class=md-nav__link> <span class=md-ellipsis> JSON_DISABLE_ENUM_SERIALIZATION </span> </a> </li> <li class=md-nav__item> <a href=#json_no_io class=md-nav__link> <span class=md-ellipsis> JSON_NO_IO </span> </a> </li> <li class=md-nav__item> <a href=#json_skip_library_version_check class=md-nav__link> <span class=md-ellipsis> JSON_SKIP_LIBRARY_VERSION_CHECK </span> </a> </li> <li class=md-nav__item> <a href=#json_skip_unsupported_compiler_check class=md-nav__link> <span class=md-ellipsis> JSON_SKIP_UNSUPPORTED_COMPILER_CHECK </span> </a> </li> <li class=md-nav__item> <a href=#json_throw_userexception class=md-nav__link> <span class=md-ellipsis> JSON_THROW_USER(exception) </span> </a> </li> <li class=md-nav__item> <a href=#json_try_user class=md-nav__link> <span class=md-ellipsis> JSON_TRY_USER </span> </a> </li> <li class=md-nav__item> <a href=#json_use_implicit_conversions class=md-nav__link> <span class=md-ellipsis> JSON_USE_IMPLICIT_CONVERSIONS </span> </a> </li> <li class=md-nav__item> <a href=#json_use_global_udls class=md-nav__link> <span class=md-ellipsis> JSON_USE_GLOBAL_UDLS </span> </a> </li> <li class=md-nav__item> <a href=#json_use_legacy_discarded_value_comparison class=md-nav__link> <span class=md-ellipsis> JSON_USE_LEGACY_DISCARDED_VALUE_COMPARISON </span> </a> </li> <li class=md-nav__item> <a href=#nlohmann_define_type_-nlohmann_define_derived_type_ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_TYPE_*(...), NLOHMANN_DEFINE_DERIVED_TYPE_*(...) </span> </a> </li> <li class=md-nav__item> <a href=#nlohmann_json_namespace-nlohmann_json_namespace_begin-nlohmann_json_namespace_end-nlohmann_json_namespace_no_version class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_NAMESPACE, NLOHMANN_JSON_NAMESPACE_BEGIN, NLOHMANN_JSON_NAMESPACE_END, NLOHMANN_JSON_NAMESPACE_NO_VERSION </span> </a> </li> <li class=md-nav__item> <a href=#nlohmann_json_serialize_enumtype class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_SERIALIZE_ENUM(type, ...) </span> </a> </li> <li class=md-nav__item> <a href=#nlohmann_json_version_major-nlohmann_json_version_minor-nlohmann_json_version_patch class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_VERSION_MAJOR, NLOHMANN_JSON_VERSION_MINOR, NLOHMANN_JSON_VERSION_PATCH </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_18> <div class="md-nav__link md-nav__container"> <a href=../types/ class="md-nav__link "> <span class=md-ellipsis> Types </span> </a> <label class="md-nav__link " for=__nav_2_18 id=__nav_2_18_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_18_label aria-expanded=false> <label class=md-nav__title for=__nav_2_18> <span class="md-nav__icon md-icon"></span> Types </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../types/number_handling/ class=md-nav__link> <span class=md-ellipsis> Number Handling </span> </a> </li> </ul> </nav> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_3> <div class="md-nav__link md-nav__container"> <a href=../../integration/ class="md-nav__link "> <span class=md-ellipsis> Integration </span> </a> <label class="md-nav__link " for=__nav_3 id=__nav_3_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_3_label aria-expanded=false> <label class=md-nav__title for=__nav_3> <span class="md-nav__icon md-icon"></span> Integration </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../integration/migration_guide/ class=md-nav__link> <span class=md-ellipsis> Migration Guide </span> </a> </li> <li class=md-nav__item> <a href=../../integration/cmake/ class=md-nav__link> <span class=md-ellipsis> CMake </span> </a> </li> <li class=md-nav__item> <a href=../../integration/package_managers/ class=md-nav__link> <span class=md-ellipsis> Package Managers </span> </a> </li> <li class=md-nav__item> <a href=../../integration/pkg-config/ class=md-nav__link> <span class=md-ellipsis> Pkg-config </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4> <label class=md-nav__link for=__nav_4 id=__nav_4_label tabindex=0> <span class=md-ellipsis> API Documentation </span> <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_4_label aria-expanded=false> <label class=md-nav__title for=__nav_4> <span class="md-nav__icon md-icon"></span> API Documentation </label> <ul class=md-nav__list data-md-scrollfix> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_1> <div class="md-nav__link md-nav__container"> <a href=../../api/basic_json/ class="md-nav__link "> <span class=md-ellipsis> basic_json </span> </a> <label class="md-nav__link " for=__nav_4_1 id=__nav_4_1_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_1_label aria-expanded=false> <label class=md-nav__title for=__nav_4_1> <span class="md-nav__icon md-icon"></span> basic_json </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../api/basic_json/basic_json/ class=md-nav__link> <span class=md-ellipsis> (Constructor) </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/~basic_json/ class=md-nav__link> <span class=md-ellipsis> (Destructor) </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/accept/ class=md-nav__link> <span class=md-ellipsis> accept </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/array/ class=md-nav__link> <span class=md-ellipsis> array </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/array_t/ class=md-nav__link> <span class=md-ellipsis> array_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/at/ class=md-nav__link> <span class=md-ellipsis> at </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/back/ class=md-nav__link> <span class=md-ellipsis> back </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/begin/ class=md-nav__link> <span class=md-ellipsis> begin </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/binary/ class=md-nav__link> <span class=md-ellipsis> binary </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/binary_t/ class=md-nav__link> <span class=md-ellipsis> binary_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/boolean_t/ class=md-nav__link> <span class=md-ellipsis> boolean_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/cbegin/ class=md-nav__link> <span class=md-ellipsis> cbegin </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/cbor_tag_handler_t/ class=md-nav__link> <span class=md-ellipsis> cbor_tag_handler_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/cend/ class=md-nav__link> <span class=md-ellipsis> cend </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/clear/ class=md-nav__link> <span class=md-ellipsis> clear </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/contains/ class=md-nav__link> <span class=md-ellipsis> contains </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/count/ class=md-nav__link> <span class=md-ellipsis> count </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/crbegin/ class=md-nav__link> <span class=md-ellipsis> crbegin </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/crend/ class=md-nav__link> <span class=md-ellipsis> crend </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/default_object_comparator_t/ class=md-nav__link> <span class=md-ellipsis> default_object_comparator_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/diff/ class=md-nav__link> <span class=md-ellipsis> diff </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/dump/ class=md-nav__link> <span class=md-ellipsis> dump </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/emplace/ class=md-nav__link> <span class=md-ellipsis> emplace </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/emplace_back/ class=md-nav__link> <span class=md-ellipsis> emplace_back </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/empty/ class=md-nav__link> <span class=md-ellipsis> empty </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/end/ class=md-nav__link> <span class=md-ellipsis> end </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/end_pos/ class=md-nav__link> <span class=md-ellipsis> end_pos </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/erase/ class=md-nav__link> <span class=md-ellipsis> erase </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/error_handler_t/ class=md-nav__link> <span class=md-ellipsis> error_handler_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/exception/ class=md-nav__link> <span class=md-ellipsis> exception </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/find/ class=md-nav__link> <span class=md-ellipsis> find </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/flatten/ class=md-nav__link> <span class=md-ellipsis> flatten </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/from_bjdata/ class=md-nav__link> <span class=md-ellipsis> from_bjdata </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/from_bson/ class=md-nav__link> <span class=md-ellipsis> from_bson </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/from_cbor/ class=md-nav__link> <span class=md-ellipsis> from_cbor </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/from_msgpack/ class=md-nav__link> <span class=md-ellipsis> from_msgpack </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/from_ubjson/ class=md-nav__link> <span class=md-ellipsis> from_ubjson </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/front/ class=md-nav__link> <span class=md-ellipsis> front </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/get/ class=md-nav__link> <span class=md-ellipsis> get </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/get_allocator/ class=md-nav__link> <span class=md-ellipsis> get_allocator </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/get_binary/ class=md-nav__link> <span class=md-ellipsis> get_binary </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/get_ptr/ class=md-nav__link> <span class=md-ellipsis> get_ptr </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/get_ref/ class=md-nav__link> <span class=md-ellipsis> get_ref </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/get_to/ class=md-nav__link> <span class=md-ellipsis> get_to </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/std_hash/ class=md-nav__link> <span class=md-ellipsis> std::hash&lt;basic_json&gt; </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/input_format_t/ class=md-nav__link> <span class=md-ellipsis> input_format_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/insert/ class=md-nav__link> <span class=md-ellipsis> insert </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/invalid_iterator/ class=md-nav__link> <span class=md-ellipsis> invalid_iterator </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_array/ class=md-nav__link> <span class=md-ellipsis> is_array </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_binary/ class=md-nav__link> <span class=md-ellipsis> is_binary </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_boolean/ class=md-nav__link> <span class=md-ellipsis> is_boolean </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_discarded/ class=md-nav__link> <span class=md-ellipsis> is_discarded </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_null/ class=md-nav__link> <span class=md-ellipsis> is_null </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_number/ class=md-nav__link> <span class=md-ellipsis> is_number </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_number_float/ class=md-nav__link> <span class=md-ellipsis> is_number_float </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_number_integer/ class=md-nav__link> <span class=md-ellipsis> is_number_integer </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_number_unsigned/ class=md-nav__link> <span class=md-ellipsis> is_number_unsigned </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_object/ class=md-nav__link> <span class=md-ellipsis> is_object </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_primitive/ class=md-nav__link> <span class=md-ellipsis> is_primitive </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_string/ class=md-nav__link> <span class=md-ellipsis> is_string </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_structured/ class=md-nav__link> <span class=md-ellipsis> is_structured </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/items/ class=md-nav__link> <span class=md-ellipsis> items </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/json_base_class_t/ class=md-nav__link> <span class=md-ellipsis> json_base_class_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/json_serializer/ class=md-nav__link> <span class=md-ellipsis> json_serializer </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/max_size/ class=md-nav__link> <span class=md-ellipsis> max_size </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/meta/ class=md-nav__link> <span class=md-ellipsis> meta </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/merge_patch/ class=md-nav__link> <span class=md-ellipsis> merge_patch </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/number_float_t/ class=md-nav__link> <span class=md-ellipsis> number_float_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/number_integer_t/ class=md-nav__link> <span class=md-ellipsis> number_integer_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/number_unsigned_t/ class=md-nav__link> <span class=md-ellipsis> number_unsigned_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/object/ class=md-nav__link> <span class=md-ellipsis> object </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/object_comparator_t/ class=md-nav__link> <span class=md-ellipsis> object_comparator_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/object_t/ class=md-nav__link> <span class=md-ellipsis> object_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/operator_ValueType/ class=md-nav__link> <span class=md-ellipsis> operator ValueType </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/operator_value_t/ class=md-nav__link> <span class=md-ellipsis> operator value_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/operator%5B%5D/ class=md-nav__link> <span class=md-ellipsis> operator[] </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/operator%3D/ class=md-nav__link> <span class=md-ellipsis> operator= </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/operator%2B%3D/ class=md-nav__link> <span class=md-ellipsis> operator+= </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/operator_eq/ class=md-nav__link> <span class=md-ellipsis> operator== </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/operator_ne/ class=md-nav__link> <span class=md-ellipsis> operator!= </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/operator_lt/ class=md-nav__link> <span class=md-ellipsis> operator< </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/operator_gt/ class=md-nav__link> <span class=md-ellipsis> operator> </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/operator_le/ class=md-nav__link> <span class=md-ellipsis> operator<= </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/operator_ge/ class=md-nav__link> <span class=md-ellipsis> operator>= </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/operator_spaceship/ class=md-nav__link> <span class=md-ellipsis> operator<=> </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/out_of_range/ class=md-nav__link> <span class=md-ellipsis> out_of_range </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/other_error/ class=md-nav__link> <span class=md-ellipsis> other_error </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/parse/ class=md-nav__link> <span class=md-ellipsis> parse </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/parse_error/ class=md-nav__link> <span class=md-ellipsis> parse_error </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/parse_event_t/ class=md-nav__link> <span class=md-ellipsis> parse_event_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/parser_callback_t/ class=md-nav__link> <span class=md-ellipsis> parser_callback_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/patch/ class=md-nav__link> <span class=md-ellipsis> patch </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/patch_inplace/ class=md-nav__link> <span class=md-ellipsis> patch_inplace </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/push_back/ class=md-nav__link> <span class=md-ellipsis> push_back </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/rbegin/ class=md-nav__link> <span class=md-ellipsis> rbegin </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/rend/ class=md-nav__link> <span class=md-ellipsis> rend </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/sax_parse/ class=md-nav__link> <span class=md-ellipsis> sax_parse </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/size/ class=md-nav__link> <span class=md-ellipsis> size </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/start_pos/ class=md-nav__link> <span class=md-ellipsis> start_pos </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/string_t/ class=md-nav__link> <span class=md-ellipsis> string_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/swap/ class=md-nav__link> <span class=md-ellipsis> swap </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/std_swap/ class=md-nav__link> <span class=md-ellipsis> std::swap&lt;basic_json&gt; </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/to_bjdata/ class=md-nav__link> <span class=md-ellipsis> to_bjdata </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/to_bson/ class=md-nav__link> <span class=md-ellipsis> to_bson </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/to_cbor/ class=md-nav__link> <span class=md-ellipsis> to_cbor </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/to_msgpack/ class=md-nav__link> <span class=md-ellipsis> to_msgpack </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/to_string/ class=md-nav__link> <span class=md-ellipsis> to_string </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/to_ubjson/ class=md-nav__link> <span class=md-ellipsis> to_ubjson </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/type/ class=md-nav__link> <span class=md-ellipsis> type </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/type_error/ class=md-nav__link> <span class=md-ellipsis> type_error </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/type_name/ class=md-nav__link> <span class=md-ellipsis> type_name </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/unflatten/ class=md-nav__link> <span class=md-ellipsis> unflatten </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/update/ class=md-nav__link> <span class=md-ellipsis> update </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/value/ class=md-nav__link> <span class=md-ellipsis> value </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/value_t/ class=md-nav__link> <span class=md-ellipsis> value_t </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_2> <div class="md-nav__link md-nav__container"> <a href=../../api/byte_container_with_subtype/ class="md-nav__link "> <span class=md-ellipsis> byte_container_with_subtype </span> </a> <label class="md-nav__link " for=__nav_4_2 id=__nav_4_2_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_2_label aria-expanded=false> <label class=md-nav__title for=__nav_4_2> <span class="md-nav__icon md-icon"></span> byte_container_with_subtype </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../api/byte_container_with_subtype/byte_container_with_subtype/ class=md-nav__link> <span class=md-ellipsis> (constructor) </span> </a> </li> <li class=md-nav__item> <a href=../../api/byte_container_with_subtype/clear_subtype/ class=md-nav__link> <span class=md-ellipsis> clear_subtype </span> </a> </li> <li class=md-nav__item> <a href=../../api/byte_container_with_subtype/has_subtype/ class=md-nav__link> <span class=md-ellipsis> has_subtype </span> </a> </li> <li class=md-nav__item> <a href=../../api/byte_container_with_subtype/set_subtype/ class=md-nav__link> <span class=md-ellipsis> set_subtype </span> </a> </li> <li class=md-nav__item> <a href=../../api/byte_container_with_subtype/subtype/ class=md-nav__link> <span class=md-ellipsis> subtype </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_3> <div class="md-nav__link md-nav__container"> <a href=../../api/adl_serializer/ class="md-nav__link "> <span class=md-ellipsis> adl_serializer </span> </a> <label class="md-nav__link " for=__nav_4_3 id=__nav_4_3_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_3_label aria-expanded=false> <label class=md-nav__title for=__nav_4_3> <span class="md-nav__icon md-icon"></span> adl_serializer </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../api/adl_serializer/from_json/ class=md-nav__link> <span class=md-ellipsis> from_json </span> </a> </li> <li class=md-nav__item> <a href=../../api/adl_serializer/to_json/ class=md-nav__link> <span class=md-ellipsis> to_json </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../api/json/ class=md-nav__link> <span class=md-ellipsis> json </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_5> <div class="md-nav__link md-nav__container"> <a href=../../api/json_pointer/ class="md-nav__link "> <span class=md-ellipsis> json_pointer </span> </a> <label class="md-nav__link " for=__nav_4_5 id=__nav_4_5_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_5_label aria-expanded=false> <label class=md-nav__title for=__nav_4_5> <span class="md-nav__icon md-icon"></span> json_pointer </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../api/json_pointer/json_pointer/ class=md-nav__link> <span class=md-ellipsis> (Constructor) </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/back/ class=md-nav__link> <span class=md-ellipsis> back </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/empty/ class=md-nav__link> <span class=md-ellipsis> empty </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/front/ class=md-nav__link> <span class=md-ellipsis> front </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/operator_string_t/ class=md-nav__link> <span class=md-ellipsis> operator string_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/operator_eq/ class=md-nav__link> <span class=md-ellipsis> operator== </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/operator_ne/ class=md-nav__link> <span class=md-ellipsis> operator!= </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/operator_slash/ class=md-nav__link> <span class=md-ellipsis> operator/ </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/operator_slasheq/ class=md-nav__link> <span class=md-ellipsis> operator/= </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/parent_pointer/ class=md-nav__link> <span class=md-ellipsis> parent_pointer </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/pop_back/ class=md-nav__link> <span class=md-ellipsis> pop_back </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/pop_front/ class=md-nav__link> <span class=md-ellipsis> pop_front </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/push_back/ class=md-nav__link> <span class=md-ellipsis> push_back </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/push_front/ class=md-nav__link> <span class=md-ellipsis> push_front </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/string_t/ class=md-nav__link> <span class=md-ellipsis> string_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/to_string/ class=md-nav__link> <span class=md-ellipsis> to_string </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_6> <div class="md-nav__link md-nav__container"> <a href=../../api/json_sax/ class="md-nav__link "> <span class=md-ellipsis> json_sax </span> </a> <label class="md-nav__link " for=__nav_4_6 id=__nav_4_6_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_6_label aria-expanded=false> <label class=md-nav__title for=__nav_4_6> <span class="md-nav__icon md-icon"></span> json_sax </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../api/json_sax/binary/ class=md-nav__link> <span class=md-ellipsis> binary </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_sax/boolean/ class=md-nav__link> <span class=md-ellipsis> boolean </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_sax/end_array/ class=md-nav__link> <span class=md-ellipsis> end_array </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_sax/end_object/ class=md-nav__link> <span class=md-ellipsis> end_object </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_sax/key/ class=md-nav__link> <span class=md-ellipsis> key </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_sax/null/ class=md-nav__link> <span class=md-ellipsis> null </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_sax/number_float/ class=md-nav__link> <span class=md-ellipsis> number_float </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_sax/number_integer/ class=md-nav__link> <span class=md-ellipsis> number_integer </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_sax/number_unsigned/ class=md-nav__link> <span class=md-ellipsis> number_unsigned </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_sax/parse_error/ class=md-nav__link> <span class=md-ellipsis> parse_error </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_sax/start_array/ class=md-nav__link> <span class=md-ellipsis> start_array </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_sax/start_object/ class=md-nav__link> <span class=md-ellipsis> start_object </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_sax/string/ class=md-nav__link> <span class=md-ellipsis> string </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../api/operator_ltlt/ class=md-nav__link> <span class=md-ellipsis> operator<<(basic_json), operator<<(json_pointer) </span> </a> </li> <li class=md-nav__item> <a href=../../api/operator_gtgt/ class=md-nav__link> <span class=md-ellipsis> operator>>(basic_json) </span> </a> </li> <li class=md-nav__item> <a href=../../api/operator_literal_json/ class=md-nav__link> <span class=md-ellipsis> operator""_json </span> </a> </li> <li class=md-nav__item> <a href=../../api/operator_literal_json_pointer/ class=md-nav__link> <span class=md-ellipsis> operator""_json_pointer </span> </a> </li> <li class=md-nav__item> <a href=../../api/ordered_json/ class=md-nav__link> <span class=md-ellipsis> ordered_json </span> </a> </li> <li class=md-nav__item> <a href=../../api/ordered_map/ class=md-nav__link> <span class=md-ellipsis> ordered_map </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_13> <div class="md-nav__link md-nav__container"> <a href=../../api/macros/ class="md-nav__link "> <span class=md-ellipsis> macros </span> </a> <label class="md-nav__link " for=__nav_4_13 id=__nav_4_13_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_13_label aria-expanded=false> <label class=md-nav__title for=__nav_4_13> <span class="md-nav__icon md-icon"></span> macros </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../api/macros/json_assert/ class=md-nav__link> <span class=md-ellipsis> JSON_ASSERT </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_brace_init_copy_semantics/ class=md-nav__link> <span class=md-ellipsis> JSON_BRACE_INIT_COPY_SEMANTICS </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_throw_user/ class=md-nav__link> <span class=md-ellipsis> JSON_CATCH_USER, JSON_THROW_USER, JSON_TRY_USER </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_diagnostics/ class=md-nav__link> <span class=md-ellipsis> JSON_DIAGNOSTICS </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_diagnostic_positions/ class=md-nav__link> <span class=md-ellipsis> JSON_DIAGNOSTIC_POSITIONS </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_disable_enum_serialization/ class=md-nav__link> <span class=md-ellipsis> JSON_DISABLE_ENUM_SERIALIZATION </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_has_cpp_11/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_CPP_11, JSON_HAS_CPP_14, JSON_HAS_CPP_17, JSON_HAS_CPP_20 </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_has_filesystem/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_EXPERIMENTAL_FILESYSTEM, JSON_HAS_FILESYSTEM </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_has_ranges/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_RANGES </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_has_static_rtti/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_STATIC_RTTI </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_has_three_way_comparison/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_THREE_WAY_COMPARISON </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_noexception/ class=md-nav__link> <span class=md-ellipsis> JSON_NOEXCEPTION </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_no_io/ class=md-nav__link> <span class=md-ellipsis> JSON_NO_IO </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_skip_library_version_check/ class=md-nav__link> <span class=md-ellipsis> JSON_SKIP_LIBRARY_VERSION_CHECK </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_skip_unsupported_compiler_check/ class=md-nav__link> <span class=md-ellipsis> JSON_SKIP_UNSUPPORTED_COMPILER_CHECK </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_use_global_udls/ class=md-nav__link> <span class=md-ellipsis> JSON_USE_GLOBAL_UDLS </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_use_implicit_conversions/ class=md-nav__link> <span class=md-ellipsis> JSON_USE_IMPLICIT_CONVERSIONS </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_use_legacy_discarded_value_comparison/ class=md-nav__link> <span class=md-ellipsis> JSON_USE_LEGACY_DISCARDED_VALUE_COMPARISON </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/nlohmann_define_derived_type/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_ONLY_SERIALIZE, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/nlohmann_define_type_intrusive/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_TYPE_INTRUSIVE, NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_TYPE_INTRUSIVE_ONLY_SERIALIZE </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/nlohmann_define_type_non_intrusive/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/nlohmann_define_type_with_names/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_TYPE_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/nlohmann_json_namespace/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_NAMESPACE </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/nlohmann_json_namespace_begin/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_NAMESPACE_BEGIN, NLOHMANN_JSON_NAMESPACE_END </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/nlohmann_json_namespace_no_version/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_NAMESPACE_NO_VERSION </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/nlohmann_json_serialize_enum/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_SERIALIZE_ENUM </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/nlohmann_json_serialize_enum_strict/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_SERIALIZE_ENUM_STRICT </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/nlohmann_json_version_major/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_VERSION_MAJOR, NLOHMANN_JSON_VERSION_MINOR, NLOHMANN_JSON_VERSION_PATCH </span> </a> </li> </ul> </nav> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_5> <div class="md-nav__link md-nav__container"> <a href=../../community/ class="md-nav__link "> <span class=md-ellipsis> Community </span> </a> <label class="md-nav__link " for=__nav_5 id=__nav_5_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_5_label aria-expanded=false> <label class=md-nav__title for=__nav_5> <span class="md-nav__icon md-icon"></span> Community </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../community/code_of_conduct/ class=md-nav__link> <span class=md-ellipsis> Code of Conduct </span> </a> </li> <li class=md-nav__item> <a href=../../community/contribution_guidelines/ class=md-nav__link> <span class=md-ellipsis> Contribution Guidelines </span> </a> </li> <li class=md-nav__item> <a href=../../community/quality_assurance/ class=md-nav__link> <span class=md-ellipsis> Quality assurance </span> </a> </li> <li class=md-nav__item> <a href=../../community/governance/ class=md-nav__link> <span class=md-ellipsis> Governance </span> </a> </li> <li class=md-nav__item> <a href=../../community/security_policy/ class=md-nav__link> <span class=md-ellipsis> Security Policy </span> </a> </li> </ul> </nav> </li> </ul> </nav> </div> </div> </div> <div class="md-sidebar md-sidebar--secondary" data-md-component=sidebar data-md-type=toc> <div class=md-sidebar__scrollwrap> <div class=md-sidebar__inner> <nav class="md-nav md-nav--secondary" aria-label="Table of contents"> <label class=md-nav__title for=__toc> <span class="md-nav__icon md-icon"></span> Table of contents </label> <ul class=md-nav__list data-md-component=toc data-md-scrollfix> <li class=md-nav__item> <a href=#json_assertx class=md-nav__link> <span class=md-ellipsis> JSON_ASSERT(x) </span> </a> </li> <li class=md-nav__item> <a href=#json_brace_init_copy_semantics class=md-nav__link> <span class=md-ellipsis> JSON_BRACE_INIT_COPY_SEMANTICS </span> </a> </li> <li class=md-nav__item> <a href=#json_catch_userexception class=md-nav__link> <span class=md-ellipsis> JSON_CATCH_USER(exception) </span> </a> </li> <li class=md-nav__item> <a href=#json_diagnostics class=md-nav__link> <span class=md-ellipsis> JSON_DIAGNOSTICS </span> </a> </li> <li class=md-nav__item> <a href=#json_diagnostic_positions class=md-nav__link> <span class=md-ellipsis> JSON_DIAGNOSTIC_POSITIONS </span> </a> </li> <li class=md-nav__item> <a href=#json_has_cpp_11-json_has_cpp_14-json_has_cpp_17-json_has_cpp_20-json_has_cpp_23-json_has_cpp_26 class=md-nav__link> <span class=md-ellipsis> JSON_HAS_CPP_11, JSON_HAS_CPP_14, JSON_HAS_CPP_17, JSON_HAS_CPP_20, JSON_HAS_CPP_23, JSON_HAS_CPP_26 </span> </a> </li> <li class=md-nav__item> <a href=#json_has_filesystem-json_has_experimental_filesystem class=md-nav__link> <span class=md-ellipsis> JSON_HAS_FILESYSTEM, JSON_HAS_EXPERIMENTAL_FILESYSTEM </span> </a> </li> <li class=md-nav__item> <a href=#json_noexception class=md-nav__link> <span class=md-ellipsis> JSON_NOEXCEPTION </span> </a> </li> <li class=md-nav__item> <a href=#json_disable_enum_serialization class=md-nav__link> <span class=md-ellipsis> JSON_DISABLE_ENUM_SERIALIZATION </span> </a> </li> <li class=md-nav__item> <a href=#json_no_io class=md-nav__link> <span class=md-ellipsis> JSON_NO_IO </span> </a> </li> <li class=md-nav__item> <a href=#json_skip_library_version_check class=md-nav__link> <span class=md-ellipsis> JSON_SKIP_LIBRARY_VERSION_CHECK </span> </a> </li> <li class=md-nav__item> <a href=#json_skip_unsupported_compiler_check class=md-nav__link> <span class=md-ellipsis> JSON_SKIP_UNSUPPORTED_COMPILER_CHECK </span> </a> </li> <li class=md-nav__item> <a href=#json_throw_userexception class=md-nav__link> <span class=md-ellipsis> JSON_THROW_USER(exception) </span> </a> </li> <li class=md-nav__item> <a href=#json_try_user class=md-nav__link> <span class=md-ellipsis> JSON_TRY_USER </span> </a> </li> <li class=md-nav__item> <a href=#json_use_implicit_conversions class=md-nav__link> <span class=md-ellipsis> JSON_USE_IMPLICIT_CONVERSIONS </span> </a> </li> <li class=md-nav__item> <a href=#json_use_global_udls class=md-nav__link> <span class=md-ellipsis> JSON_USE_GLOBAL_UDLS </span> </a> </li> <li class=md-nav__item> <a href=#json_use_legacy_discarded_value_comparison class=md-nav__link> <span class=md-ellipsis> JSON_USE_LEGACY_DISCARDED_VALUE_COMPARISON </span> </a> </li> <li class=md-nav__item> <a href=#nlohmann_define_type_-nlohmann_define_derived_type_ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_TYPE_*(...), NLOHMANN_DEFINE_DERIVED_TYPE_*(...) </span> </a> </li> <li class=md-nav__item> <a href=#nlohmann_json_namespace-nlohmann_json_namespace_begin-nlohmann_json_namespace_end-nlohmann_json_namespace_no_version class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_NAMESPACE, NLOHMANN_JSON_NAMESPACE_BEGIN, NLOHMANN_JSON_NAMESPACE_END, NLOHMANN_JSON_NAMESPACE_NO_VERSION </span> </a> </li> <li class=md-nav__item> <a href=#nlohmann_json_serialize_enumtype class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_SERIALIZE_ENUM(type, ...) </span> </a> </li> <li class=md-nav__item> <a href=#nlohmann_json_version_major-nlohmann_json_version_minor-nlohmann_json_version_patch class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_VERSION_MAJOR, NLOHMANN_JSON_VERSION_MINOR, NLOHMANN_JSON_VERSION_PATCH </span> </a> </li> </ul> </nav> </div> </div> </div> <div class=md-content data-md-component=content> <article class="md-content__inner md-typeset"> <a href="https://github.com/nlohmann/json/edit/develop/docs/mkdocs/docs/features/macros.md" title="Edit this page" class="md-content__button md-icon" rel="edit"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M10 20H6V4h7v5h5v3.1l2-2V8l-6-6H6c-1.1 0-2 .9-2 2v16c0 1.1.9 2 2 2h4zm10.2-7c.1 0 .3.1.4.2l1.3 1.3c.2.2.2.6 0 .8l-1 1-2.1-2.1 1-1c.1-.1.2-.2.4-.2m0 3.9L14.1 23H12v-2.1l6.1-6.1z"/></svg> </a> <a href="https://github.com/nlohmann/json/raw/develop/docs/mkdocs/docs/features/macros.md" title="View source of this page" class="md-content__button md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M17 18c.56 0 1 .44 1 1s-.44 1-1 1-1-.44-1-1 .44-1 1-1m0-3c-2.73 0-5.06 1.66-6 4 .94 2.34 3.27 4 6 4s5.06-1.66 6-4c-.94-2.34-3.27-4-6-4m0 6.5a2.5 2.5 0 0 1-2.5-2.5 2.5 2.5 0 0 1 2.5-2.5 2.5 2.5 0 0 1 2.5 2.5 2.5 2.5 0 0 1-2.5 2.5M9.27 20H6V4h7v5h5v4.07c.7.08 1.36.25 2 .49V8l-6-6H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h4.5a8.2 8.2 0 0 1-1.23-2"/></svg> </a> <h1 id=supported-macros>Supported Macros<a class=headerlink href=#supported-macros title="Permanent link">&para;</a></h1> <p>Some aspects of the library can be configured by defining preprocessor macros before including the <code>json.hpp</code> header. See also the <a href=../../api/macros/ ><abbr title="Application Programming Interfaces">API</abbr> documentation for macros</a> for examples and more information.</p> <h2 id=json_assertx><code>JSON_ASSERT(x)</code><a class=headerlink href=#json_assertx title="Permanent link">&para;</a></h2> <p>This macro controls which code is executed for <a href=../assertions/ >runtime assertions</a> of the library.</p> <p>See <a href=../../api/macros/json_assert/ >full documentation of <code>JSON_ASSERT(x)</code></a>.</p> <h2 id=json_brace_init_copy_semantics><code>JSON_BRACE_INIT_COPY_SEMANTICS</code><a class=headerlink href=#json_brace_init_copy_semantics title="Permanent link">&para;</a></h2> <p>When defined to <code>1</code>, single-element brace initialization of a <code>basic_json</code> value (e.g., <code class=highlight><span class=n>json</span><span class=w> </span><span class=n>j</span><span class=p>{</span><span class=n>value</span><span class=p>};</span></code>) is treated as a copy/move of the element rather than wrapping it in a single-element array. The default value is <code>0</code>, which preserves the existing behavior.</p> <p>See <a href=../../api/macros/json_brace_init_copy_semantics/ >full documentation of <code>JSON_BRACE_INIT_COPY_SEMANTICS</code></a>.</p> <h2 id=json_catch_userexception><code>JSON_CATCH_USER(exception)</code><a class=headerlink href=#json_catch_userexception title="Permanent link">&para;</a></h2> <p>This macro overrides <a href="https://en.cppreference.com/w/cpp/language/try_catch"><code class=highlight><span class=k>catch</span></code></a> calls inside the library.</p> <p>See <a href=../../api/macros/json_throw_user/ >full documentation of <code>JSON_CATCH_USER(exception)</code></a>.</p> <h2 id=json_diagnostics><code>JSON_DIAGNOSTICS</code><a class=headerlink href=#json_diagnostics title="Permanent link">&para;</a></h2> <p>This macro enables extended diagnostics for exception messages. Possible values are <code>1</code> to enable or <code>0</code> to disable (default).</p> <p>When enabled, exception messages contain a <a href=../json_pointer/ ><abbr title="JavaScript Object Notation">JSON</abbr> Pointer</a> to the <abbr title="JavaScript Object Notation">JSON</abbr> value that triggered the exception, see <a href=../../home/exceptions/#extended-diagnostic-messages>Extended diagnostic messages</a> for an example. Note that enabling this macro increases the size of every <abbr title="JavaScript Object Notation">JSON</abbr> value by one pointer and adds some runtime overhead.</p> <p>The diagnostics messages can also be controlled with the CMake option <a href=../../integration/cmake/#json_diagnostics><code>JSON_Diagnostics</code></a> (<code>OFF</code> by default) which sets <code>JSON_DIAGNOSTICS</code> accordingly.</p> <p>See <a href=../../api/macros/json_diagnostics/ >full documentation of <code>JSON_DIAGNOSTICS</code></a>.</p> <h2 id=json_diagnostic_positions><code>JSON_DIAGNOSTIC_POSITIONS</code><a class=headerlink href=#json_diagnostic_positions title="Permanent link">&para;</a></h2> <p>When enabled, two new member functions <a href=../../api/basic_json/start_pos/ ><code>start_pos()</code></a> and <a href=../../api/basic_json/end_pos/ ><code>end_pos()</code></a> are added to <a href=../../api/basic_json/ ><code>basic_json</code></a> values. If the value was created by calling the<a href=../../api/basic_json/parse/ ><code>parse</code></a> function, then these functions allow querying the byte positions of the value in the input it was parsed from. The byte positions are also used in exceptions to help locate errors.</p> <p>The diagnostics positions can also be controlled with the CMake option <a href=../../integration/cmake/#json_diagnostic_positions><code>JSON_Diagnostic_Positions</code></a> (<code>OFF</code> by default) which sets <code>JSON_DIAGNOSTIC_POSITIONS</code> accordingly.</p> <p>See <a href=../../api/macros/json_diagnostic_positions/ >full documentation of <code>JSON_DIAGNOSTIC_POSITIONS</code></a></p> <h2 id=json_has_cpp_11-json_has_cpp_14-json_has_cpp_17-json_has_cpp_20-json_has_cpp_23-json_has_cpp_26><code>JSON_HAS_CPP_11</code>, <code>JSON_HAS_CPP_14</code>, <code>JSON_HAS_CPP_17</code>, <code>JSON_HAS_CPP_20</code>, <code>JSON_HAS_CPP_23</code>, <code>JSON_HAS_CPP_26</code><a class=headerlink href=#json_has_cpp_11-json_has_cpp_14-json_has_cpp_17-json_has_cpp_20-json_has_cpp_23-json_has_cpp_26 title="Permanent link">&para;</a></h2> <p>The library targets C++11, but also supports some features introduced in later C++ versions (e.g., <code>std::string_view</code> support for C++17). For these new features, the library implements some preprocessor checks to determine the C++ standard. By defining any of these symbols, the internal check is overridden and the provided C++ version is unconditionally assumed. This can be helpful for compilers that only implement parts of the standard and would be detected incorrectly.</p> <p>See <a href=../../api/macros/json_has_cpp_11/ >full documentation of <code>JSON_HAS_CPP_11</code>, <code>JSON_HAS_CPP_14</code>, <code>JSON_HAS_CPP_17</code>, <code>JSON_HAS_CPP_20</code>, <code>JSON_HAS_CPP_23</code>, and <code>JSON_HAS_CPP_26</code></a>.</p> <h2 id=json_has_filesystem-json_has_experimental_filesystem><code>JSON_HAS_FILESYSTEM</code>, <code>JSON_HAS_EXPERIMENTAL_FILESYSTEM</code><a class=headerlink href=#json_has_filesystem-json_has_experimental_filesystem title="Permanent link">&para;</a></h2> <p>When compiling with C++17, the library provides conversions from and to <code>std::filesystem::path</code>. As compiler support for filesystem is limited, the library tries to detect whether <code>&lt;filesystem&gt;</code>/<code>std::filesystem</code> (<code>JSON_HAS_FILESYSTEM</code>) or <code>&lt;experimental/filesystem&gt;</code>/<code>std::experimental::filesystem</code> (<code>JSON_HAS_EXPERIMENTAL_FILESYSTEM</code>) should be used. To override the built-in check, define <code>JSON_HAS_FILESYSTEM</code> or <code>JSON_HAS_EXPERIMENTAL_FILESYSTEM</code> to <code>1</code>.</p> <p>See <a href=../../api/macros/json_has_filesystem/ >full documentation of <code>JSON_HAS_FILESYSTEM</code> and <code>JSON_HAS_EXPERIMENTAL_FILESYSTEM</code></a>.</p> <h2 id=json_noexception><code>JSON_NOEXCEPTION</code><a class=headerlink href=#json_noexception title="Permanent link">&para;</a></h2> <p>Exceptions can be switched off by defining the symbol <code>JSON_NOEXCEPTION</code>.</p> <p>See <a href=../../api/macros/json_noexception/ >full documentation of <code>JSON_NOEXCEPTION</code></a>.</p> <h2 id=json_disable_enum_serialization><code>JSON_DISABLE_ENUM_SERIALIZATION</code><a class=headerlink href=#json_disable_enum_serialization title="Permanent link">&para;</a></h2> <p>When defined, default parse and serialize functions for enums are excluded and have to be provided by the user, for example, using <a href=../../api/macros/nlohmann_json_serialize_enum/ ><code>NLOHMANN_JSON_SERIALIZE_ENUM</code></a>.</p> <p>See <a href=../../api/macros/json_disable_enum_serialization/ >full documentation of <code>JSON_DISABLE_ENUM_SERIALIZATION</code></a>.</p> <h2 id=json_no_io><code>JSON_NO_IO</code><a class=headerlink href=#json_no_io title="Permanent link">&para;</a></h2> <p>When defined, headers <code>&lt;cstdio&gt;</code>, <code>&lt;ios&gt;</code>, <code>&lt;iosfwd&gt;</code>, <code>&lt;istream&gt;</code>, and <code>&lt;ostream&gt;</code> are not included and parse functions relying on these headers are excluded. This is relevant for environment where these I/O functions are disallowed for security reasons (e.g., Intel Software Guard Extensions (SGX)).</p> <p>See <a href=../../api/macros/json_no_io/ >full documentation of <code>JSON_NO_IO</code></a>.</p> <h2 id=json_skip_library_version_check><code>JSON_SKIP_LIBRARY_VERSION_CHECK</code><a class=headerlink href=#json_skip_library_version_check title="Permanent link">&para;</a></h2> <p>When defined, the library will not create a compiler warning when a different version of the library was already included.</p> <p>See <a href=../../api/macros/json_skip_library_version_check/ >full documentation of <code>JSON_SKIP_LIBRARY_VERSION_CHECK</code></a>.</p> <h2 id=json_skip_unsupported_compiler_check><code>JSON_SKIP_UNSUPPORTED_COMPILER_CHECK</code><a class=headerlink href=#json_skip_unsupported_compiler_check title="Permanent link">&para;</a></h2> <p>When defined, the library will not create a compile error when a known unsupported compiler is detected. This allows using the library with compilers that do not fully support C++11 and may only work if unsupported features are not used.</p> <p>See <a href=../../api/macros/json_skip_unsupported_compiler_check/ >full documentation of <code>JSON_SKIP_UNSUPPORTED_COMPILER_CHECK</code></a>.</p> <h2 id=json_throw_userexception><code>JSON_THROW_USER(exception)</code><a class=headerlink href=#json_throw_userexception title="Permanent link">&para;</a></h2> <p>This macro overrides <code class=highlight><span class=k>throw</span></code> calls inside the library. The argument is the exception to be thrown.</p> <p>See <a href=../../api/macros/json_throw_user/ >full documentation of <code>JSON_THROW_USER(exception)</code></a>.</p> <h2 id=json_try_user><code>JSON_TRY_USER</code><a class=headerlink href=#json_try_user title="Permanent link">&para;</a></h2> <p>This macro overrides <code class=highlight><span class=k>try</span></code> calls inside the library.</p> <p>See <a href=../../api/macros/json_throw_user/ >full documentation of <code>JSON_TRY_USER</code></a>.</p> <h2 id=json_use_implicit_conversions><code>JSON_USE_IMPLICIT_CONVERSIONS</code><a class=headerlink href=#json_use_implicit_conversions title="Permanent link">&para;</a></h2> <p>When defined to <code>0</code>, implicit conversions are switched off. By default, implicit conversions are switched on.</p> <p>See <a href=../../api/macros/json_use_implicit_conversions/ >full documentation of <code>JSON_USE_IMPLICIT_CONVERSIONS</code></a>.</p> <h2 id=json_use_global_udls><code>JSON_USE_GLOBAL_UDLS</code><a class=headerlink href=#json_use_global_udls title="Permanent link">&para;</a></h2> <p>When defined to <code>1</code> (default), the user-defined string literals <code>operator""_json</code> and <code>operator""_json_pointer</code> are placed into the global namespace instead of <code>nlohmann::literals::json_literals</code>.</p> <p>See <a href=../../api/macros/json_use_global_udls/ >full documentation of <code>JSON_USE_GLOBAL_UDLS</code></a>.</p> <h2 id=json_use_legacy_discarded_value_comparison><code>JSON_USE_LEGACY_DISCARDED_VALUE_COMPARISON</code><a class=headerlink href=#json_use_legacy_discarded_value_comparison title="Permanent link">&para;</a></h2> <p>When defined to <code>1</code>, the library restores the legacy behavior in which a discarded value compared equal to itself. This behavior is deprecated and switched off (<code>0</code>) by default.</p> <p>See <a href=../../api/macros/json_use_legacy_discarded_value_comparison/ >full documentation of <code>JSON_USE_LEGACY_DISCARDED_VALUE_COMPARISON</code></a>.</p> <h2 id=nlohmann_define_type_-nlohmann_define_derived_type_><code>NLOHMANN_DEFINE_TYPE_*(...)</code>, <code>NLOHMANN_DEFINE_DERIVED_TYPE_*(...)</code><a class=headerlink href=#nlohmann_define_type_-nlohmann_define_derived_type_ title="Permanent link">&para;</a></h2> <p>The library defines 12 macros to simplify the serialization/deserialization of types. See the page on <a href=../arbitrary_types/#simplify-your-life-with-macros>arbitrary type conversion</a> for a detailed discussion.</p> <h2 id=nlohmann_json_namespace-nlohmann_json_namespace_begin-nlohmann_json_namespace_end-nlohmann_json_namespace_no_version><code>NLOHMANN_JSON_NAMESPACE</code>, <code>NLOHMANN_JSON_NAMESPACE_BEGIN</code>, <code>NLOHMANN_JSON_NAMESPACE_END</code>, <code>NLOHMANN_JSON_NAMESPACE_NO_VERSION</code><a class=headerlink href=#nlohmann_json_namespace-nlohmann_json_namespace_begin-nlohmann_json_namespace_end-nlohmann_json_namespace_no_version title="Permanent link">&para;</a></h2> <p>These macros relate to the versioned, inline <code>nlohmann</code> namespace:</p> <ul> <li><code>NLOHMANN_JSON_NAMESPACE</code> evaluates to the full name of the <code>nlohmann</code> namespace (including the inline ABI namespace).</li> <li><code>NLOHMANN_JSON_NAMESPACE_BEGIN</code> / <code>NLOHMANN_JSON_NAMESPACE_END</code> open and close the namespace (for example, to add specializations).</li> <li><code>NLOHMANN_JSON_NAMESPACE_NO_VERSION</code>, when defined to <code>1</code>, omits the version component from the inline namespace.</li> </ul> <p>See the <a href=../namespace/ ><code>nlohmann</code> Namespace</a> page, and the full documentation of <a href=../../api/macros/nlohmann_json_namespace/ ><code>NLOHMANN_JSON_NAMESPACE</code></a>, <a href=../../api/macros/nlohmann_json_namespace_begin/ ><code>NLOHMANN_JSON_NAMESPACE_BEGIN</code> / <code>NLOHMANN_JSON_NAMESPACE_END</code></a>, and <a href=../../api/macros/nlohmann_json_namespace_no_version/ ><code>NLOHMANN_JSON_NAMESPACE_NO_VERSION</code></a>.</p> <h2 id=nlohmann_json_serialize_enumtype><code>NLOHMANN_JSON_SERIALIZE_ENUM(type, ...)</code><a class=headerlink href=#nlohmann_json_serialize_enumtype title="Permanent link">&para;</a></h2> <p>This macro simplifies the serialization/deserialization of enum types. See <a href=../enum_conversion/ >Specializing enum conversion</a> for more information.</p> <p>See <a href=../../api/macros/nlohmann_json_serialize_enum/ >full documentation of <code>NLOHMANN_JSON_SERIALIZE_ENUM</code></a>.</p> <p>A strict variant <a href=../../api/macros/nlohmann_json_serialize_enum_strict/ ><code>NLOHMANN_JSON_SERIALIZE_ENUM_STRICT</code></a> throws an exception on undefined input instead of falling back to the first mapping.</p> <h2 id=nlohmann_json_version_major-nlohmann_json_version_minor-nlohmann_json_version_patch><code>NLOHMANN_JSON_VERSION_MAJOR</code>, <code>NLOHMANN_JSON_VERSION_MINOR</code>, <code>NLOHMANN_JSON_VERSION_PATCH</code><a class=headerlink href=#nlohmann_json_version_major-nlohmann_json_version_minor-nlohmann_json_version_patch title="Permanent link">&para;</a></h2> <p>These macros are defined by the library and contain the version numbers according to <a href="https://semver.org/spec/v2.0.0.html">Semantic Versioning 2.0.0</a>.</p> <p>See <a href=../../api/macros/nlohmann_json_version_major/ >full documentation of <code>NLOHMANN_JSON_VERSION_MAJOR</code>, <code>NLOHMANN_JSON_VERSION_MINOR</code>, and <code>NLOHMANN_JSON_VERSION_PATCH</code></a>.</p> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 29, 2026 20:15:18 UTC">June 29, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
diff --git a/features/merge_patch/index.html b/features/merge_patch/index.html
index 2aeda3a..56a297f 100644
--- a/features/merge_patch/index.html
+++ b/features/merge_patch/index.html
@@ -50,4 +50,4 @@
 <span class=w>    </span><span class=p>],</span>
 <span class=w>    </span><span class=nt>&quot;title&quot;</span><span class=p>:</span><span class=w> </span><span class=s2>&quot;Hello!&quot;</span>
 <span class=p>}</span>
-</code></pre></div> </details> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 23, 2026 11:16:18 UTC">June 23, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
+</code></pre></div> </details> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 29, 2026 20:15:18 UTC">June 29, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
diff --git a/features/modules/index.html b/features/modules/index.html
index f5fcf74..82bcab9 100644
--- a/features/modules/index.html
+++ b/features/modules/index.html
@@ -7,4 +7,4 @@
 
 <span class=n>std</span><span class=o>::</span><span class=n>ifstream</span><span class=w> </span><span class=n>f</span><span class=p>(</span><span class=s>&quot;example.json&quot;</span><span class=p>);</span>
 <span class=n>json</span><span class=w> </span><span class=n>data</span><span class=w> </span><span class=o>=</span><span class=w> </span><span class=n>json</span><span class=o>::</span><span class=n>parse</span><span class=p>(</span><span class=n>f</span><span class=p>);</span>
-</code></pre></div></p> <h2 id=modules-do-not-export-macros>Modules do not export macros<a class=headerlink href=#modules-do-not-export-macros title="Permanent link">&para;</a></h2> <p>It should be noted that as modules do not export macros, the <code>nlohmann.json</code> module will not export any macros.</p> <h2 id=exported-symbols>Exported symbols<a class=headerlink href=#exported-symbols title="Permanent link">&para;</a></h2> <p>Only the following symbols are exported from <code>nlohmann.json</code>:</p> <ul> <li><code>nlohmann::adl_serializer</code></li> <li><code>nlohmann::basic_json</code></li> <li><code>nlohmann::json</code></li> <li><code>nlohmann::json_pointer</code></li> <li><code>nlohmann::ordered_json</code></li> <li><code>nlohmann::ordered_map</code></li> <li><code>nlohmann::to_string</code></li> <li><code>nlohmann::literals::json_literals::operator""_json</code></li> <li><code>nlohmann::literals::json_literals::operator""_json_pointer</code></li> </ul> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 23, 2026 11:16:18 UTC">June 23, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
+</code></pre></div></p> <h2 id=modules-do-not-export-macros>Modules do not export macros<a class=headerlink href=#modules-do-not-export-macros title="Permanent link">&para;</a></h2> <p>It should be noted that as modules do not export macros, the <code>nlohmann.json</code> module will not export any macros.</p> <h2 id=exported-symbols>Exported symbols<a class=headerlink href=#exported-symbols title="Permanent link">&para;</a></h2> <p>Only the following symbols are exported from <code>nlohmann.json</code>:</p> <ul> <li><code>nlohmann::adl_serializer</code></li> <li><code>nlohmann::basic_json</code></li> <li><code>nlohmann::json</code></li> <li><code>nlohmann::json_pointer</code></li> <li><code>nlohmann::ordered_json</code></li> <li><code>nlohmann::ordered_map</code></li> <li><code>nlohmann::to_string</code></li> <li><code>nlohmann::literals::json_literals::operator""_json</code></li> <li><code>nlohmann::literals::json_literals::operator""_json_pointer</code></li> </ul> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 29, 2026 20:15:18 UTC">June 29, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
diff --git a/features/namespace/index.html b/features/namespace/index.html
index fd33e8b..70361cc 100644
--- a/features/namespace/index.html
+++ b/features/namespace/index.html
@@ -9,4 +9,4 @@
     app --&gt; json_diag
     app --&gt; library</code></pre> <p>In releases prior to 3.11.0, mixing any version of the <abbr title="JavaScript Object Notation">JSON</abbr> library with different <code>JSON_DIAGNOSTICS</code> settings would result in a crashing application. If <code>some_library</code> never passes instances of <abbr title="JavaScript Object Notation">JSON</abbr> library types to the application, this scenario became safe in version 3.11.0 and above due to the inline namespace yielding distinct symbol names.</p> <h2 id=limitations>Limitations<a class=headerlink href=#limitations title="Permanent link">&para;</a></h2> <p>Neither the compiler nor the linker will issue as much as a warning when translation units – intended to be linked together and that include different versions and/or configurations of the <abbr title="JavaScript Object Notation">JSON</abbr> library – exchange and use library types.</p> <p>There is an exception when forward declarations are used (i.e., when including <code>json_fwd.hpp</code>) in which case the linker may complain about undefined references.</p> <h2 id=disabling-the-version-component>Disabling the version component<a class=headerlink href=#disabling-the-version-component title="Permanent link">&para;</a></h2> <p>Different versions are not necessarily ABI-incompatible, but the project does not actively track changes in the ABI and recommends that all parts of a codebase exchanging library types be built with the same version. Users can, <strong>at their own risk</strong>, disable the version component of the linline namespace, allowing different versions – but not configurations – to be used in cases where the linker would otherwise output undefined reference errors.</p> <p>To do so, define <a href=../../api/macros/nlohmann_json_namespace_no_version/ ><code>NLOHMANN_JSON_NAMESPACE_NO_VERSION</code></a> to <code>1</code>.</p> <p>This applies to version 3.11.2 and above only; versions 3.11.0 and 3.11.1 can apply the technique described in the next section to emulate the effect of the <code>NLOHMANN_JSON_NAMESPACE_NO_VERSION</code> macro.</p> <div class="admonition danger"> <p class=admonition-title>Use at your own risk</p> <p>Disabling the namespace version component and mixing ABI-incompatible versions will result in crashes or incorrect behavior. You have been warned!</p> </div> <h2 id=disabling-the-inline-namespace-completely>Disabling the inline namespace completely<a class=headerlink href=#disabling-the-inline-namespace-completely title="Permanent link">&para;</a></h2> <p>When interoperability with code using a pre-3.11.0 version of the library is required, users can, <strong>at their own risk</strong> restore the old namespace layout by redefining <a href=../../api/macros/nlohmann_json_namespace_begin/ ><code>NLOHMANN_JSON_NAMESPACE_BEGIN, NLOHMANN_JSON_NAMESPACE_END</code></a> as follows:</p> <div class=highlight><pre><span></span><code><span class=cp>#define NLOHMANN_JSON_NAMESPACE_BEGIN  namespace nlohmann {</span>
 <span class=cp>#define NLOHMANN_JSON_NAMESPACE_END    }</span>
-</code></pre></div> <div class="admonition danger"> <p class=admonition-title>Use at your own risk</p> <p>Overriding the namespace and mixing ABI-incompatible versions will result in crashes or incorrect behavior. You have been warned!</p> </div> <h2 id=version-history>Version history<a class=headerlink href=#version-history title="Permanent link">&para;</a></h2> <ul> <li>Introduced inline namespace (<code>json_v3_11_0[_abi-tag]*</code>) in version 3.11.0.</li> <li>Changed structure of inline namespace in version 3.11.2.</li> </ul> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 23, 2026 11:16:18 UTC">June 23, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
+</code></pre></div> <div class="admonition danger"> <p class=admonition-title>Use at your own risk</p> <p>Overriding the namespace and mixing ABI-incompatible versions will result in crashes or incorrect behavior. You have been warned!</p> </div> <h2 id=version-history>Version history<a class=headerlink href=#version-history title="Permanent link">&para;</a></h2> <ul> <li>Introduced inline namespace (<code>json_v3_11_0[_abi-tag]*</code>) in version 3.11.0.</li> <li>Changed structure of inline namespace in version 3.11.2.</li> </ul> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 29, 2026 20:15:18 UTC">June 29, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
diff --git a/features/object_order/index.html b/features/object_order/index.html
index 62803f3..402ff8d 100644
--- a/features/object_order/index.html
+++ b/features/object_order/index.html
@@ -1,5 +1,5 @@
 <!doctype html><html lang=en class=no-js> <head><meta charset=utf-8><meta name=viewport content="width=device-width,initial-scale=1"><meta name=author content="Niels Lohmann"><link href="https://json.nlohmann.me/features/object_order/" rel="canonical"><link href=../namespace/ rel=prev><link href=../parsing/ rel=next><link rel=icon href=../../assets/images/favicon.png><meta name=generator content="mkdocs-1.6.1, mkdocs-material-9.7.6"><title>Object Order - JSON for Modern C++</title><link rel=stylesheet href=../../assets/stylesheets/main.484c7ddc.min.css><link rel=stylesheet href=../../assets/stylesheets/palette.ab4e12ef.min.css><link rel="stylesheet" href="../../assets/external/fonts.googleapis.com/css.61a430c9.css"><style>:root{--md-text-font:"Roboto";--md-code-font:"JetBrains Mono"}</style><link rel=stylesheet href=../../css/custom.css><script>__md_scope=new URL("../..",location),__md_hash=e=>[...e].reduce(((e,_)=>(e<<5)-e+_.charCodeAt(0)),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script></head> <body dir=ltr data-md-color-scheme=default data-md-color-primary=indigo data-md-color-accent=indigo> <input class=md-toggle data-md-toggle=drawer type=checkbox id=__drawer autocomplete=off> <input class=md-toggle data-md-toggle=search type=checkbox id=__search autocomplete=off> <label class=md-overlay for=__drawer></label> <div data-md-component=skip> <a href=#object-order class=md-skip> Skip to content </a> </div> <div data-md-component=announce> </div> <header class=md-header data-md-component=header> <nav class="md-header__inner md-grid" aria-label=Header> <a href=../.. title="JSON for Modern C++" class="md-header__button md-logo" aria-label="JSON for Modern C++" data-md-component=logo> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54"/></svg> </a> <label class="md-header__button md-icon" for=__drawer> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M3 6h18v2H3zm0 5h18v2H3zm0 5h18v2H3z"/></svg> </label> <div class=md-header__title data-md-component=header-title> <div class=md-header__ellipsis> <div class=md-header__topic> <span class=md-ellipsis> JSON for Modern C++ </span> </div> <div class=md-header__topic data-md-component=header-topic> <span class=md-ellipsis> Object Order </span> </div> </div> </div> <form class=md-header__option data-md-component=palette> <input class=md-option data-md-color-media="(prefers-color-scheme: light)" data-md-color-scheme=default data-md-color-primary=indigo data-md-color-accent=indigo aria-label="Switch to dark mode" type=radio name=__palette id=__palette_0> <label class="md-header__button md-icon" title="Switch to dark mode" for=__palette_1 hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a4 4 0 0 0-4 4 4 4 0 0 0 4 4 4 4 0 0 0 4-4 4 4 0 0 0-4-4m0 10a6 6 0 0 1-6-6 6 6 0 0 1 6-6 6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12z"/></svg> </label> <input class=md-option data-md-color-media="(prefers-color-scheme: dark)" data-md-color-scheme=slate data-md-color-primary=indigo data-md-color-accent=indigo aria-label="Switch to light mode" type=radio name=__palette id=__palette_1> <label class="md-header__button md-icon" title="Switch to light mode" for=__palette_0 hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 18c-.89 0-1.74-.2-2.5-.55C11.56 16.5 13 14.42 13 12s-1.44-4.5-3.5-5.45C10.26 6.2 11.11 6 12 6a6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12z"/></svg> </label> </form> <script>var palette=__md_get("__palette");if(palette&&palette.color){if("(prefers-color-scheme)"===palette.color.media){var media=matchMedia("(prefers-color-scheme: light)"),input=document.querySelector(media.matches?"[data-md-color-media='(prefers-color-scheme: light)']":"[data-md-color-media='(prefers-color-scheme: dark)']");palette.color.media=input.getAttribute("data-md-color-media"),palette.color.scheme=input.getAttribute("data-md-color-scheme"),palette.color.primary=input.getAttribute("data-md-color-primary"),palette.color.accent=input.getAttribute("data-md-color-accent")}for(var[key,value]of Object.entries(palette.color))document.body.setAttribute("data-md-color-"+key,value)}</script> <label class="md-header__button md-icon" for=__search> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg> </label> <div class=md-search data-md-component=search role=dialog> <label class=md-search__overlay for=__search></label> <div class=md-search__inner role=search> <form class=md-search__form name=search> <input type=text class=md-search__input name=query aria-label=Search placeholder=Search autocapitalize=off autocorrect=off autocomplete=off spellcheck=false data-md-component=search-query required> <label class="md-search__icon md-icon" for=__search> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11z"/></svg> </label> <nav class=md-search__options aria-label=Search> <button type=reset class="md-search__icon md-icon" title=Clear aria-label=Clear tabindex=-1> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z"/></svg> </button> </nav> </form> <div class=md-search__output> <div class=md-search__scrollwrap tabindex=0 data-md-scrollfix> <div class=md-search-result data-md-component=search-result> <div class=md-search-result__meta> Initializing search </div> <ol class=md-search-result__list role=presentation></ol> </div> </div> </div> </div> </div> <div class=md-header__source> <a href="https://github.com/nlohmann/json" title="Go to repository" class="md-source" data-md-component="source"> <div class="md-source__icon md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </div> <div class=md-source__repository> nlohmann/json </div> </a> </div> </nav> </header> <div class=md-container data-md-component=container> <nav class=md-tabs aria-label=Tabs data-md-component=tabs> <div class=md-grid> <ul class=md-tabs__list> <li class=md-tabs__item> <a href=../.. class=md-tabs__link> Home </a> </li> <li class="md-tabs__item md-tabs__item--active"> <a href=../arbitrary_types/ class=md-tabs__link> Features </a> </li> <li class=md-tabs__item> <a href=../../integration/ class=md-tabs__link> Integration </a> </li> <li class=md-tabs__item> <a href=../../api/basic_json/ class=md-tabs__link> API Documentation </a> </li> <li class=md-tabs__item> <a href=../../community/ class=md-tabs__link> Community </a> </li> </ul> </div> </nav> <main class=md-main data-md-component=main> <div class="md-main__inner md-grid"> <div class="md-sidebar md-sidebar--primary" data-md-component=sidebar data-md-type=navigation> <div class=md-sidebar__scrollwrap> <div class=md-sidebar__inner> <nav class="md-nav md-nav--primary md-nav--lifted" aria-label=Navigation data-md-level=0> <label class=md-nav__title for=__drawer> <a href=../.. title="JSON for Modern C++" class="md-nav__button md-logo" aria-label="JSON for Modern C++" data-md-component=logo> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54"/></svg> </a> JSON for Modern C++ </label> <div class=md-nav__source> <a href="https://github.com/nlohmann/json" title="Go to repository" class="md-source" data-md-component="source"> <div class="md-source__icon md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </div> <div class=md-source__repository> nlohmann/json </div> </a> </div> <ul class=md-nav__list data-md-scrollfix> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_1> <div class="md-nav__link md-nav__container"> <a href=../.. class="md-nav__link "> <span class=md-ellipsis> Home </span> </a> <label class="md-nav__link " for=__nav_1 id=__nav_1_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_1_label aria-expanded=false> <label class=md-nav__title for=__nav_1> <span class="md-nav__icon md-icon"></span> Home </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../home/license/ class=md-nav__link> <span class=md-ellipsis> License </span> </a> </li> <li class=md-nav__item> <a href=../../home/faq/ class=md-nav__link> <span class=md-ellipsis> FAQ </span> </a> </li> <li class=md-nav__item> <a href=../../home/exceptions/ class=md-nav__link> <span class=md-ellipsis> Exceptions </span> </a> </li> <li class=md-nav__item> <a href=../../home/releases/ class=md-nav__link> <span class=md-ellipsis> Releases </span> </a> </li> <li class=md-nav__item> <a href=../../home/design_goals/ class=md-nav__link> <span class=md-ellipsis> Design goals </span> </a> </li> <li class=md-nav__item> <a href=../../home/architecture/ class=md-nav__link> <span class=md-ellipsis> Architecture </span> </a> </li> <li class=md-nav__item> <a href=../../home/customers/ class=md-nav__link> <span class=md-ellipsis> Customers </span> </a> </li> <li class=md-nav__item> <a href=../../home/sponsors/ class=md-nav__link> <span class=md-ellipsis> Sponsors </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--active md-nav__item--section md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2 checked> <label class=md-nav__link for=__nav_2 id=__nav_2_label tabindex> <span class=md-ellipsis> Features </span> <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_2_label aria-expanded=true> <label class=md-nav__title for=__nav_2> <span class="md-nav__icon md-icon"></span> Features </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../arbitrary_types/ class=md-nav__link> <span class=md-ellipsis> Arbitrary Type Conversions </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_2> <div class="md-nav__link md-nav__container"> <a href=../binary_formats/ class="md-nav__link "> <span class=md-ellipsis> Binary Formats </span> </a> <label class="md-nav__link " for=__nav_2_2 id=__nav_2_2_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_2_label aria-expanded=false> <label class=md-nav__title for=__nav_2_2> <span class="md-nav__icon md-icon"></span> Binary Formats </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../binary_formats/bjdata/ class=md-nav__link> <span class=md-ellipsis> BJData </span> </a> </li> <li class=md-nav__item> <a href=../binary_formats/bson/ class=md-nav__link> <span class=md-ellipsis> BSON </span> </a> </li> <li class=md-nav__item> <a href=../binary_formats/cbor/ class=md-nav__link> <span class=md-ellipsis> CBOR </span> </a> </li> <li class=md-nav__item> <a href=../binary_formats/messagepack/ class=md-nav__link> <span class=md-ellipsis> MessagePack </span> </a> </li> <li class=md-nav__item> <a href=../binary_formats/ubjson/ class=md-nav__link> <span class=md-ellipsis> UBJSON </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../binary_values/ class=md-nav__link> <span class=md-ellipsis> Binary Values </span> </a> </li> <li class=md-nav__item> <a href=../comments/ class=md-nav__link> <span class=md-ellipsis> Comments </span> </a> </li> <li class=md-nav__item> <a href=../trailing_commas/ class=md-nav__link> <span class=md-ellipsis> Trailing Commas </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_6> <div class="md-nav__link md-nav__container"> <a href=../element_access/ class="md-nav__link "> <span class=md-ellipsis> Element Access </span> </a> <label class="md-nav__link " for=__nav_2_6 id=__nav_2_6_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_6_label aria-expanded=false> <label class=md-nav__title for=__nav_2_6> <span class="md-nav__icon md-icon"></span> Element Access </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../element_access/unchecked_access/ class=md-nav__link> <span class=md-ellipsis> Unchecked access: operator[] </span> </a> </li> <li class=md-nav__item> <a href=../element_access/checked_access/ class=md-nav__link> <span class=md-ellipsis> Checked access: at </span> </a> </li> <li class=md-nav__item> <a href=../element_access/default_value/ class=md-nav__link> <span class=md-ellipsis> Access with default value: value </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../iterators/ class=md-nav__link> <span class=md-ellipsis> Iterators </span> </a> </li> <li class=md-nav__item> <a href=../json_pointer/ class=md-nav__link> <span class=md-ellipsis> JSON Pointer </span> </a> </li> <li class=md-nav__item> <a href=../json_patch/ class=md-nav__link> <span class=md-ellipsis> JSON Patch and Diff </span> </a> </li> <li class=md-nav__item> <a href=../merge_patch/ class=md-nav__link> <span class=md-ellipsis> JSON Merge Patch </span> </a> </li> <li class=md-nav__item> <a href=../modules/ class=md-nav__link> <span class=md-ellipsis> Modules </span> </a> </li> <li class=md-nav__item> <a href=../namespace/ class=md-nav__link> <span class=md-ellipsis> nlohmann Namespace </span> </a> </li> <li class="md-nav__item md-nav__item--active"> <input class="md-nav__toggle md-toggle" type=checkbox id=__toc> <label class="md-nav__link md-nav__link--active" for=__toc> <span class=md-ellipsis> Object Order </span> <span class="md-nav__icon md-icon"></span> </label> <a href=./ class="md-nav__link md-nav__link--active"> <span class=md-ellipsis> Object Order </span> </a> <nav class="md-nav md-nav--secondary" aria-label="Table of contents"> <label class=md-nav__title for=__toc> <span class="md-nav__icon md-icon"></span> Table of contents </label> <ul class=md-nav__list data-md-component=toc data-md-scrollfix> <li class=md-nav__item> <a href=#default-behavior-sort-keys class=md-nav__link> <span class=md-ellipsis> Default behavior: sort keys </span> </a> </li> <li class=md-nav__item> <a href=#alternative-behavior-preserve-insertion-order class=md-nav__link> <span class=md-ellipsis> Alternative behavior: preserve insertion order </span> </a> <nav class=md-nav aria-label="Alternative behavior: preserve insertion order"> <ul class=md-nav__list> <li class=md-nav__item> <a href=#notes-on-parsing class=md-nav__link> <span class=md-ellipsis> Notes on parsing </span> </a> </li> </ul> </nav> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_14> <div class="md-nav__link md-nav__container"> <a href=../parsing/ class="md-nav__link "> <span class=md-ellipsis> Parsing </span> </a> <label class="md-nav__link " for=__nav_2_14 id=__nav_2_14_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_14_label aria-expanded=false> <label class=md-nav__title for=__nav_2_14> <span class="md-nav__icon md-icon"></span> Parsing </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../parsing/json_lines/ class=md-nav__link> <span class=md-ellipsis> JSON Lines </span> </a> </li> <li class=md-nav__item> <a href=../parsing/parse_exceptions/ class=md-nav__link> <span class=md-ellipsis> Parsing and Exceptions </span> </a> </li> <li class=md-nav__item> <a href=../parsing/parser_callbacks/ class=md-nav__link> <span class=md-ellipsis> Parser Callbacks </span> </a> </li> <li class=md-nav__item> <a href=../parsing/sax_interface/ class=md-nav__link> <span class=md-ellipsis> SAX Interface </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../assertions/ class=md-nav__link> <span class=md-ellipsis> Runtime Assertions </span> </a> </li> <li class=md-nav__item> <a href=../enum_conversion/ class=md-nav__link> <span class=md-ellipsis> Specializing enum conversion </span> </a> </li> <li class=md-nav__item> <a href=../macros/ class=md-nav__link> <span class=md-ellipsis> Supported Macros </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_18> <div class="md-nav__link md-nav__container"> <a href=../types/ class="md-nav__link "> <span class=md-ellipsis> Types </span> </a> <label class="md-nav__link " for=__nav_2_18 id=__nav_2_18_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_18_label aria-expanded=false> <label class=md-nav__title for=__nav_2_18> <span class="md-nav__icon md-icon"></span> Types </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../types/number_handling/ class=md-nav__link> <span class=md-ellipsis> Number Handling </span> </a> </li> </ul> </nav> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_3> <div class="md-nav__link md-nav__container"> <a href=../../integration/ class="md-nav__link "> <span class=md-ellipsis> Integration </span> </a> <label class="md-nav__link " for=__nav_3 id=__nav_3_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_3_label aria-expanded=false> <label class=md-nav__title for=__nav_3> <span class="md-nav__icon md-icon"></span> Integration </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../integration/migration_guide/ class=md-nav__link> <span class=md-ellipsis> Migration Guide </span> </a> </li> <li class=md-nav__item> <a href=../../integration/cmake/ class=md-nav__link> <span class=md-ellipsis> CMake </span> </a> </li> <li class=md-nav__item> <a href=../../integration/package_managers/ class=md-nav__link> <span class=md-ellipsis> Package Managers </span> </a> </li> <li class=md-nav__item> <a href=../../integration/pkg-config/ class=md-nav__link> <span class=md-ellipsis> Pkg-config </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4> <label class=md-nav__link for=__nav_4 id=__nav_4_label tabindex=0> <span class=md-ellipsis> API Documentation </span> <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_4_label aria-expanded=false> <label class=md-nav__title for=__nav_4> <span class="md-nav__icon md-icon"></span> API Documentation </label> <ul class=md-nav__list data-md-scrollfix> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_1> <div class="md-nav__link md-nav__container"> <a href=../../api/basic_json/ class="md-nav__link "> <span class=md-ellipsis> basic_json </span> </a> <label class="md-nav__link " for=__nav_4_1 id=__nav_4_1_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_1_label aria-expanded=false> <label class=md-nav__title for=__nav_4_1> <span class="md-nav__icon md-icon"></span> basic_json </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../api/basic_json/basic_json/ class=md-nav__link> <span class=md-ellipsis> (Constructor) </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/~basic_json/ class=md-nav__link> <span class=md-ellipsis> (Destructor) </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/accept/ class=md-nav__link> <span class=md-ellipsis> accept </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/array/ class=md-nav__link> <span class=md-ellipsis> array </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/array_t/ class=md-nav__link> <span class=md-ellipsis> array_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/at/ class=md-nav__link> <span class=md-ellipsis> at </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/back/ class=md-nav__link> <span class=md-ellipsis> back </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/begin/ class=md-nav__link> <span class=md-ellipsis> begin </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/binary/ class=md-nav__link> <span class=md-ellipsis> binary </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/binary_t/ class=md-nav__link> <span class=md-ellipsis> binary_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/boolean_t/ class=md-nav__link> <span class=md-ellipsis> boolean_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/cbegin/ class=md-nav__link> <span class=md-ellipsis> cbegin </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/cbor_tag_handler_t/ class=md-nav__link> <span class=md-ellipsis> cbor_tag_handler_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/cend/ class=md-nav__link> <span class=md-ellipsis> cend </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/clear/ class=md-nav__link> <span class=md-ellipsis> clear </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/contains/ class=md-nav__link> <span class=md-ellipsis> contains </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/count/ class=md-nav__link> <span class=md-ellipsis> count </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/crbegin/ class=md-nav__link> <span class=md-ellipsis> crbegin </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/crend/ class=md-nav__link> <span class=md-ellipsis> crend </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/default_object_comparator_t/ class=md-nav__link> <span class=md-ellipsis> default_object_comparator_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/diff/ class=md-nav__link> <span class=md-ellipsis> diff </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/dump/ class=md-nav__link> <span class=md-ellipsis> dump </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/emplace/ class=md-nav__link> <span class=md-ellipsis> emplace </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/emplace_back/ class=md-nav__link> <span class=md-ellipsis> emplace_back </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/empty/ class=md-nav__link> <span class=md-ellipsis> empty </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/end/ class=md-nav__link> <span class=md-ellipsis> end </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/end_pos/ class=md-nav__link> <span class=md-ellipsis> end_pos </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/erase/ class=md-nav__link> <span class=md-ellipsis> erase </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/error_handler_t/ class=md-nav__link> <span class=md-ellipsis> error_handler_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/exception/ class=md-nav__link> <span class=md-ellipsis> exception </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/find/ class=md-nav__link> <span class=md-ellipsis> find </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/flatten/ class=md-nav__link> <span class=md-ellipsis> flatten </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/from_bjdata/ class=md-nav__link> <span class=md-ellipsis> from_bjdata </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/from_bson/ class=md-nav__link> <span class=md-ellipsis> from_bson </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/from_cbor/ class=md-nav__link> <span class=md-ellipsis> from_cbor </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/from_msgpack/ class=md-nav__link> <span class=md-ellipsis> from_msgpack </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/from_ubjson/ class=md-nav__link> <span class=md-ellipsis> from_ubjson </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/front/ class=md-nav__link> <span class=md-ellipsis> front </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/get/ class=md-nav__link> <span class=md-ellipsis> get </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/get_allocator/ class=md-nav__link> <span class=md-ellipsis> get_allocator </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/get_binary/ class=md-nav__link> <span class=md-ellipsis> get_binary </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/get_ptr/ class=md-nav__link> <span class=md-ellipsis> get_ptr </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/get_ref/ class=md-nav__link> <span class=md-ellipsis> get_ref </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/get_to/ class=md-nav__link> <span class=md-ellipsis> get_to </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/std_hash/ class=md-nav__link> <span class=md-ellipsis> std::hash&lt;basic_json&gt; </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/input_format_t/ class=md-nav__link> <span class=md-ellipsis> input_format_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/insert/ class=md-nav__link> <span class=md-ellipsis> insert </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/invalid_iterator/ class=md-nav__link> <span class=md-ellipsis> invalid_iterator </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_array/ class=md-nav__link> <span class=md-ellipsis> is_array </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_binary/ class=md-nav__link> <span class=md-ellipsis> is_binary </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_boolean/ class=md-nav__link> <span class=md-ellipsis> is_boolean </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_discarded/ class=md-nav__link> <span class=md-ellipsis> is_discarded </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_null/ class=md-nav__link> <span class=md-ellipsis> is_null </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_number/ class=md-nav__link> <span class=md-ellipsis> is_number </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_number_float/ class=md-nav__link> <span class=md-ellipsis> is_number_float </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_number_integer/ class=md-nav__link> <span class=md-ellipsis> is_number_integer </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_number_unsigned/ class=md-nav__link> <span class=md-ellipsis> is_number_unsigned </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_object/ class=md-nav__link> <span class=md-ellipsis> is_object </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_primitive/ class=md-nav__link> <span class=md-ellipsis> is_primitive </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_string/ class=md-nav__link> <span class=md-ellipsis> is_string </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_structured/ class=md-nav__link> <span class=md-ellipsis> is_structured </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/items/ class=md-nav__link> <span class=md-ellipsis> items </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/json_base_class_t/ class=md-nav__link> <span class=md-ellipsis> json_base_class_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/json_serializer/ class=md-nav__link> <span class=md-ellipsis> json_serializer </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/max_size/ class=md-nav__link> <span class=md-ellipsis> max_size </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/meta/ class=md-nav__link> <span class=md-ellipsis> meta </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/merge_patch/ class=md-nav__link> <span class=md-ellipsis> merge_patch </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/number_float_t/ class=md-nav__link> <span class=md-ellipsis> number_float_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/number_integer_t/ class=md-nav__link> <span class=md-ellipsis> number_integer_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/number_unsigned_t/ class=md-nav__link> <span class=md-ellipsis> number_unsigned_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/object/ class=md-nav__link> <span class=md-ellipsis> object </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/object_comparator_t/ class=md-nav__link> <span class=md-ellipsis> object_comparator_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/object_t/ class=md-nav__link> <span class=md-ellipsis> object_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/operator_ValueType/ class=md-nav__link> <span class=md-ellipsis> operator ValueType </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/operator_value_t/ class=md-nav__link> <span class=md-ellipsis> operator value_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/operator%5B%5D/ class=md-nav__link> <span class=md-ellipsis> operator[] </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/operator%3D/ class=md-nav__link> <span class=md-ellipsis> operator= </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/operator%2B%3D/ class=md-nav__link> <span class=md-ellipsis> operator+= </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/operator_eq/ class=md-nav__link> <span class=md-ellipsis> operator== </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/operator_ne/ class=md-nav__link> <span class=md-ellipsis> operator!= </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/operator_lt/ class=md-nav__link> <span class=md-ellipsis> operator< </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/operator_gt/ class=md-nav__link> <span class=md-ellipsis> operator> </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/operator_le/ class=md-nav__link> <span class=md-ellipsis> operator<= </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/operator_ge/ class=md-nav__link> <span class=md-ellipsis> operator>= </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/operator_spaceship/ class=md-nav__link> <span class=md-ellipsis> operator<=> </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/out_of_range/ class=md-nav__link> <span class=md-ellipsis> out_of_range </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/other_error/ class=md-nav__link> <span class=md-ellipsis> other_error </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/parse/ class=md-nav__link> <span class=md-ellipsis> parse </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/parse_error/ class=md-nav__link> <span class=md-ellipsis> parse_error </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/parse_event_t/ class=md-nav__link> <span class=md-ellipsis> parse_event_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/parser_callback_t/ class=md-nav__link> <span class=md-ellipsis> parser_callback_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/patch/ class=md-nav__link> <span class=md-ellipsis> patch </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/patch_inplace/ class=md-nav__link> <span class=md-ellipsis> patch_inplace </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/push_back/ class=md-nav__link> <span class=md-ellipsis> push_back </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/rbegin/ class=md-nav__link> <span class=md-ellipsis> rbegin </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/rend/ class=md-nav__link> <span class=md-ellipsis> rend </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/sax_parse/ class=md-nav__link> <span class=md-ellipsis> sax_parse </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/size/ class=md-nav__link> <span class=md-ellipsis> size </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/start_pos/ class=md-nav__link> <span class=md-ellipsis> start_pos </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/string_t/ class=md-nav__link> <span class=md-ellipsis> string_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/swap/ class=md-nav__link> <span class=md-ellipsis> swap </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/std_swap/ class=md-nav__link> <span class=md-ellipsis> std::swap&lt;basic_json&gt; </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/to_bjdata/ class=md-nav__link> <span class=md-ellipsis> to_bjdata </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/to_bson/ class=md-nav__link> <span class=md-ellipsis> to_bson </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/to_cbor/ class=md-nav__link> <span class=md-ellipsis> to_cbor </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/to_msgpack/ class=md-nav__link> <span class=md-ellipsis> to_msgpack </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/to_string/ class=md-nav__link> <span class=md-ellipsis> to_string </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/to_ubjson/ class=md-nav__link> <span class=md-ellipsis> to_ubjson </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/type/ class=md-nav__link> <span class=md-ellipsis> type </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/type_error/ class=md-nav__link> <span class=md-ellipsis> type_error </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/type_name/ class=md-nav__link> <span class=md-ellipsis> type_name </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/unflatten/ class=md-nav__link> <span class=md-ellipsis> unflatten </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/update/ class=md-nav__link> <span class=md-ellipsis> update </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/value/ class=md-nav__link> <span class=md-ellipsis> value </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/value_t/ class=md-nav__link> <span class=md-ellipsis> value_t </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_2> <div class="md-nav__link md-nav__container"> <a href=../../api/byte_container_with_subtype/ class="md-nav__link "> <span class=md-ellipsis> byte_container_with_subtype </span> </a> <label class="md-nav__link " for=__nav_4_2 id=__nav_4_2_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_2_label aria-expanded=false> <label class=md-nav__title for=__nav_4_2> <span class="md-nav__icon md-icon"></span> byte_container_with_subtype </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../api/byte_container_with_subtype/byte_container_with_subtype/ class=md-nav__link> <span class=md-ellipsis> (constructor) </span> </a> </li> <li class=md-nav__item> <a href=../../api/byte_container_with_subtype/clear_subtype/ class=md-nav__link> <span class=md-ellipsis> clear_subtype </span> </a> </li> <li class=md-nav__item> <a href=../../api/byte_container_with_subtype/has_subtype/ class=md-nav__link> <span class=md-ellipsis> has_subtype </span> </a> </li> <li class=md-nav__item> <a href=../../api/byte_container_with_subtype/set_subtype/ class=md-nav__link> <span class=md-ellipsis> set_subtype </span> </a> </li> <li class=md-nav__item> <a href=../../api/byte_container_with_subtype/subtype/ class=md-nav__link> <span class=md-ellipsis> subtype </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_3> <div class="md-nav__link md-nav__container"> <a href=../../api/adl_serializer/ class="md-nav__link "> <span class=md-ellipsis> adl_serializer </span> </a> <label class="md-nav__link " for=__nav_4_3 id=__nav_4_3_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_3_label aria-expanded=false> <label class=md-nav__title for=__nav_4_3> <span class="md-nav__icon md-icon"></span> adl_serializer </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../api/adl_serializer/from_json/ class=md-nav__link> <span class=md-ellipsis> from_json </span> </a> </li> <li class=md-nav__item> <a href=../../api/adl_serializer/to_json/ class=md-nav__link> <span class=md-ellipsis> to_json </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../api/json/ class=md-nav__link> <span class=md-ellipsis> json </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_5> <div class="md-nav__link md-nav__container"> <a href=../../api/json_pointer/ class="md-nav__link "> <span class=md-ellipsis> json_pointer </span> </a> <label class="md-nav__link " for=__nav_4_5 id=__nav_4_5_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_5_label aria-expanded=false> <label class=md-nav__title for=__nav_4_5> <span class="md-nav__icon md-icon"></span> json_pointer </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../api/json_pointer/json_pointer/ class=md-nav__link> <span class=md-ellipsis> (Constructor) </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/back/ class=md-nav__link> <span class=md-ellipsis> back </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/empty/ class=md-nav__link> <span class=md-ellipsis> empty </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/front/ class=md-nav__link> <span class=md-ellipsis> front </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/operator_string_t/ class=md-nav__link> <span class=md-ellipsis> operator string_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/operator_eq/ class=md-nav__link> <span class=md-ellipsis> operator== </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/operator_ne/ class=md-nav__link> <span class=md-ellipsis> operator!= </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/operator_slash/ class=md-nav__link> <span class=md-ellipsis> operator/ </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/operator_slasheq/ class=md-nav__link> <span class=md-ellipsis> operator/= </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/parent_pointer/ class=md-nav__link> <span class=md-ellipsis> parent_pointer </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/pop_back/ class=md-nav__link> <span class=md-ellipsis> pop_back </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/pop_front/ class=md-nav__link> <span class=md-ellipsis> pop_front </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/push_back/ class=md-nav__link> <span class=md-ellipsis> push_back </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/push_front/ class=md-nav__link> <span class=md-ellipsis> push_front </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/string_t/ class=md-nav__link> <span class=md-ellipsis> string_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/to_string/ class=md-nav__link> <span class=md-ellipsis> to_string </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_6> <div class="md-nav__link md-nav__container"> <a href=../../api/json_sax/ class="md-nav__link "> <span class=md-ellipsis> json_sax </span> </a> <label class="md-nav__link " for=__nav_4_6 id=__nav_4_6_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_6_label aria-expanded=false> <label class=md-nav__title for=__nav_4_6> <span class="md-nav__icon md-icon"></span> json_sax </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../api/json_sax/binary/ class=md-nav__link> <span class=md-ellipsis> binary </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_sax/boolean/ class=md-nav__link> <span class=md-ellipsis> boolean </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_sax/end_array/ class=md-nav__link> <span class=md-ellipsis> end_array </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_sax/end_object/ class=md-nav__link> <span class=md-ellipsis> end_object </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_sax/key/ class=md-nav__link> <span class=md-ellipsis> key </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_sax/null/ class=md-nav__link> <span class=md-ellipsis> null </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_sax/number_float/ class=md-nav__link> <span class=md-ellipsis> number_float </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_sax/number_integer/ class=md-nav__link> <span class=md-ellipsis> number_integer </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_sax/number_unsigned/ class=md-nav__link> <span class=md-ellipsis> number_unsigned </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_sax/parse_error/ class=md-nav__link> <span class=md-ellipsis> parse_error </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_sax/start_array/ class=md-nav__link> <span class=md-ellipsis> start_array </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_sax/start_object/ class=md-nav__link> <span class=md-ellipsis> start_object </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_sax/string/ class=md-nav__link> <span class=md-ellipsis> string </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../api/operator_ltlt/ class=md-nav__link> <span class=md-ellipsis> operator<<(basic_json), operator<<(json_pointer) </span> </a> </li> <li class=md-nav__item> <a href=../../api/operator_gtgt/ class=md-nav__link> <span class=md-ellipsis> operator>>(basic_json) </span> </a> </li> <li class=md-nav__item> <a href=../../api/operator_literal_json/ class=md-nav__link> <span class=md-ellipsis> operator""_json </span> </a> </li> <li class=md-nav__item> <a href=../../api/operator_literal_json_pointer/ class=md-nav__link> <span class=md-ellipsis> operator""_json_pointer </span> </a> </li> <li class=md-nav__item> <a href=../../api/ordered_json/ class=md-nav__link> <span class=md-ellipsis> ordered_json </span> </a> </li> <li class=md-nav__item> <a href=../../api/ordered_map/ class=md-nav__link> <span class=md-ellipsis> ordered_map </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_13> <div class="md-nav__link md-nav__container"> <a href=../../api/macros/ class="md-nav__link "> <span class=md-ellipsis> macros </span> </a> <label class="md-nav__link " for=__nav_4_13 id=__nav_4_13_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_13_label aria-expanded=false> <label class=md-nav__title for=__nav_4_13> <span class="md-nav__icon md-icon"></span> macros </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../api/macros/json_assert/ class=md-nav__link> <span class=md-ellipsis> JSON_ASSERT </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_brace_init_copy_semantics/ class=md-nav__link> <span class=md-ellipsis> JSON_BRACE_INIT_COPY_SEMANTICS </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_throw_user/ class=md-nav__link> <span class=md-ellipsis> JSON_CATCH_USER, JSON_THROW_USER, JSON_TRY_USER </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_diagnostics/ class=md-nav__link> <span class=md-ellipsis> JSON_DIAGNOSTICS </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_diagnostic_positions/ class=md-nav__link> <span class=md-ellipsis> JSON_DIAGNOSTIC_POSITIONS </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_disable_enum_serialization/ class=md-nav__link> <span class=md-ellipsis> JSON_DISABLE_ENUM_SERIALIZATION </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_has_cpp_11/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_CPP_11, JSON_HAS_CPP_14, JSON_HAS_CPP_17, JSON_HAS_CPP_20 </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_has_filesystem/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_EXPERIMENTAL_FILESYSTEM, JSON_HAS_FILESYSTEM </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_has_ranges/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_RANGES </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_has_static_rtti/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_STATIC_RTTI </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_has_three_way_comparison/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_THREE_WAY_COMPARISON </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_noexception/ class=md-nav__link> <span class=md-ellipsis> JSON_NOEXCEPTION </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_no_io/ class=md-nav__link> <span class=md-ellipsis> JSON_NO_IO </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_skip_library_version_check/ class=md-nav__link> <span class=md-ellipsis> JSON_SKIP_LIBRARY_VERSION_CHECK </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_skip_unsupported_compiler_check/ class=md-nav__link> <span class=md-ellipsis> JSON_SKIP_UNSUPPORTED_COMPILER_CHECK </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_use_global_udls/ class=md-nav__link> <span class=md-ellipsis> JSON_USE_GLOBAL_UDLS </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_use_implicit_conversions/ class=md-nav__link> <span class=md-ellipsis> JSON_USE_IMPLICIT_CONVERSIONS </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_use_legacy_discarded_value_comparison/ class=md-nav__link> <span class=md-ellipsis> JSON_USE_LEGACY_DISCARDED_VALUE_COMPARISON </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/nlohmann_define_derived_type/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_ONLY_SERIALIZE, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/nlohmann_define_type_intrusive/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_TYPE_INTRUSIVE, NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_TYPE_INTRUSIVE_ONLY_SERIALIZE </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/nlohmann_define_type_non_intrusive/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/nlohmann_define_type_with_names/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_TYPE_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/nlohmann_json_namespace/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_NAMESPACE </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/nlohmann_json_namespace_begin/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_NAMESPACE_BEGIN, NLOHMANN_JSON_NAMESPACE_END </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/nlohmann_json_namespace_no_version/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_NAMESPACE_NO_VERSION </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/nlohmann_json_serialize_enum/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_SERIALIZE_ENUM </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/nlohmann_json_serialize_enum_strict/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_SERIALIZE_ENUM_STRICT </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/nlohmann_json_version_major/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_VERSION_MAJOR, NLOHMANN_JSON_VERSION_MINOR, NLOHMANN_JSON_VERSION_PATCH </span> </a> </li> </ul> </nav> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_5> <div class="md-nav__link md-nav__container"> <a href=../../community/ class="md-nav__link "> <span class=md-ellipsis> Community </span> </a> <label class="md-nav__link " for=__nav_5 id=__nav_5_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_5_label aria-expanded=false> <label class=md-nav__title for=__nav_5> <span class="md-nav__icon md-icon"></span> Community </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../community/code_of_conduct/ class=md-nav__link> <span class=md-ellipsis> Code of Conduct </span> </a> </li> <li class=md-nav__item> <a href=../../community/contribution_guidelines/ class=md-nav__link> <span class=md-ellipsis> Contribution Guidelines </span> </a> </li> <li class=md-nav__item> <a href=../../community/quality_assurance/ class=md-nav__link> <span class=md-ellipsis> Quality assurance </span> </a> </li> <li class=md-nav__item> <a href=../../community/governance/ class=md-nav__link> <span class=md-ellipsis> Governance </span> </a> </li> <li class=md-nav__item> <a href=../../community/security_policy/ class=md-nav__link> <span class=md-ellipsis> Security Policy </span> </a> </li> </ul> </nav> </li> </ul> </nav> </div> </div> </div> <div class="md-sidebar md-sidebar--secondary" data-md-component=sidebar data-md-type=toc> <div class=md-sidebar__scrollwrap> <div class=md-sidebar__inner> <nav class="md-nav md-nav--secondary" aria-label="Table of contents"> <label class=md-nav__title for=__toc> <span class="md-nav__icon md-icon"></span> Table of contents </label> <ul class=md-nav__list data-md-component=toc data-md-scrollfix> <li class=md-nav__item> <a href=#default-behavior-sort-keys class=md-nav__link> <span class=md-ellipsis> Default behavior: sort keys </span> </a> </li> <li class=md-nav__item> <a href=#alternative-behavior-preserve-insertion-order class=md-nav__link> <span class=md-ellipsis> Alternative behavior: preserve insertion order </span> </a> <nav class=md-nav aria-label="Alternative behavior: preserve insertion order"> <ul class=md-nav__list> <li class=md-nav__item> <a href=#notes-on-parsing class=md-nav__link> <span class=md-ellipsis> Notes on parsing </span> </a> </li> </ul> </nav> </li> </ul> </nav> </div> </div> </div> <div class=md-content data-md-component=content> <article class="md-content__inner md-typeset"> <a href="https://github.com/nlohmann/json/edit/develop/docs/mkdocs/docs/features/object_order.md" title="Edit this page" class="md-content__button md-icon" rel="edit"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M10 20H6V4h7v5h5v3.1l2-2V8l-6-6H6c-1.1 0-2 .9-2 2v16c0 1.1.9 2 2 2h4zm10.2-7c.1 0 .3.1.4.2l1.3 1.3c.2.2.2.6 0 .8l-1 1-2.1-2.1 1-1c.1-.1.2-.2.4-.2m0 3.9L14.1 23H12v-2.1l6.1-6.1z"/></svg> </a> <a href="https://github.com/nlohmann/json/raw/develop/docs/mkdocs/docs/features/object_order.md" title="View source of this page" class="md-content__button md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M17 18c.56 0 1 .44 1 1s-.44 1-1 1-1-.44-1-1 .44-1 1-1m0-3c-2.73 0-5.06 1.66-6 4 .94 2.34 3.27 4 6 4s5.06-1.66 6-4c-.94-2.34-3.27-4-6-4m0 6.5a2.5 2.5 0 0 1-2.5-2.5 2.5 2.5 0 0 1 2.5-2.5 2.5 2.5 0 0 1 2.5 2.5 2.5 2.5 0 0 1-2.5 2.5M9.27 20H6V4h7v5h5v4.07c.7.08 1.36.25 2 .49V8l-6-6H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h4.5a8.2 8.2 0 0 1-1.23-2"/></svg> </a> <h1 id=object-order>Object Order<a class=headerlink href=#object-order title="Permanent link">&para;</a></h1> <p>The <a href="https://tools.ietf.org/html/rfc8259.html"><abbr title="JavaScript Object Notation">JSON</abbr> standard</a> defines objects as "an unordered collection of zero or more name/value pairs". As such, an implementation does not need to preserve any specific order of object keys.</p> <h2 id=default-behavior-sort-keys>Default behavior: sort keys<a class=headerlink href=#default-behavior-sort-keys title="Permanent link">&para;</a></h2> <p>The default type <code>nlohmann::json</code> uses a <code>std::map</code> to store <abbr title="JavaScript Object Notation">JSON</abbr> objects, and thus stores object keys <strong>sorted alphabetically</strong>.</p> <details class=example> <summary>Example</summary> <div class=highlight><pre><span></span><code><span class=cp>#include</span><span class=w> </span><span class=cpf>&lt;iostream&gt;</span>
-<span class=cp>#include</span><span class=w> </span><span class=cpf>&quot;json.hpp&quot;</span>
+<span class=cp>#include</span><span class=w> </span><span class=cpf>&lt;nlohmann/json.hpp&gt;</span>
 
 <span class=k>using</span><span class=w> </span><span class=n>json</span><span class=w> </span><span class=o>=</span><span class=w> </span><span class=n>nlohmann</span><span class=o>::</span><span class=n>json</span><span class=p>;</span>
 
@@ -57,4 +57,4 @@
 <span class=w>  </span><span class=nt>&quot;three&quot;</span><span class=p>:</span><span class=w> </span><span class=mi>3</span>
 <span class=w>  </span><span class=nt>&quot;two&quot;</span><span class=p>:</span><span class=w> </span><span class=mi>2</span><span class=p>,</span>
 <span class=p>}</span>
-</code></pre></div> </details> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 23, 2026 11:16:18 UTC">June 23, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
+</code></pre></div> </details> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 29, 2026 20:15:18 UTC">June 29, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
diff --git a/features/parsing/index.html b/features/parsing/index.html
index 525854c..ce77ca4 100644
--- a/features/parsing/index.html
+++ b/features/parsing/index.html
@@ -1 +1 @@
-<!doctype html><html lang=en class=no-js> <head><meta charset=utf-8><meta name=viewport content="width=device-width,initial-scale=1"><meta name=author content="Niels Lohmann"><link href="https://json.nlohmann.me/features/parsing/" rel="canonical"><link href=../object_order/ rel=prev><link href=json_lines/ rel=next><link rel=icon href=../../assets/images/favicon.png><meta name=generator content="mkdocs-1.6.1, mkdocs-material-9.7.6"><title>Parsing - JSON for Modern C++</title><link rel=stylesheet href=../../assets/stylesheets/main.484c7ddc.min.css><link rel=stylesheet href=../../assets/stylesheets/palette.ab4e12ef.min.css><link rel="stylesheet" href="../../assets/external/fonts.googleapis.com/css.61a430c9.css"><style>:root{--md-text-font:"Roboto";--md-code-font:"JetBrains Mono"}</style><link rel=stylesheet href=../../css/custom.css><script>__md_scope=new URL("../..",location),__md_hash=e=>[...e].reduce(((e,_)=>(e<<5)-e+_.charCodeAt(0)),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script></head> <body dir=ltr data-md-color-scheme=default data-md-color-primary=indigo data-md-color-accent=indigo> <input class=md-toggle data-md-toggle=drawer type=checkbox id=__drawer autocomplete=off> <input class=md-toggle data-md-toggle=search type=checkbox id=__search autocomplete=off> <label class=md-overlay for=__drawer></label> <div data-md-component=skip> <a href=#parsing class=md-skip> Skip to content </a> </div> <div data-md-component=announce> </div> <header class=md-header data-md-component=header> <nav class="md-header__inner md-grid" aria-label=Header> <a href=../.. title="JSON for Modern C++" class="md-header__button md-logo" aria-label="JSON for Modern C++" data-md-component=logo> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54"/></svg> </a> <label class="md-header__button md-icon" for=__drawer> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M3 6h18v2H3zm0 5h18v2H3zm0 5h18v2H3z"/></svg> </label> <div class=md-header__title data-md-component=header-title> <div class=md-header__ellipsis> <div class=md-header__topic> <span class=md-ellipsis> JSON for Modern C++ </span> </div> <div class=md-header__topic data-md-component=header-topic> <span class=md-ellipsis> Parsing </span> </div> </div> </div> <form class=md-header__option data-md-component=palette> <input class=md-option data-md-color-media="(prefers-color-scheme: light)" data-md-color-scheme=default data-md-color-primary=indigo data-md-color-accent=indigo aria-label="Switch to dark mode" type=radio name=__palette id=__palette_0> <label class="md-header__button md-icon" title="Switch to dark mode" for=__palette_1 hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a4 4 0 0 0-4 4 4 4 0 0 0 4 4 4 4 0 0 0 4-4 4 4 0 0 0-4-4m0 10a6 6 0 0 1-6-6 6 6 0 0 1 6-6 6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12z"/></svg> </label> <input class=md-option data-md-color-media="(prefers-color-scheme: dark)" data-md-color-scheme=slate data-md-color-primary=indigo data-md-color-accent=indigo aria-label="Switch to light mode" type=radio name=__palette id=__palette_1> <label class="md-header__button md-icon" title="Switch to light mode" for=__palette_0 hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 18c-.89 0-1.74-.2-2.5-.55C11.56 16.5 13 14.42 13 12s-1.44-4.5-3.5-5.45C10.26 6.2 11.11 6 12 6a6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12z"/></svg> </label> </form> <script>var palette=__md_get("__palette");if(palette&&palette.color){if("(prefers-color-scheme)"===palette.color.media){var media=matchMedia("(prefers-color-scheme: light)"),input=document.querySelector(media.matches?"[data-md-color-media='(prefers-color-scheme: light)']":"[data-md-color-media='(prefers-color-scheme: dark)']");palette.color.media=input.getAttribute("data-md-color-media"),palette.color.scheme=input.getAttribute("data-md-color-scheme"),palette.color.primary=input.getAttribute("data-md-color-primary"),palette.color.accent=input.getAttribute("data-md-color-accent")}for(var[key,value]of Object.entries(palette.color))document.body.setAttribute("data-md-color-"+key,value)}</script> <label class="md-header__button md-icon" for=__search> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg> </label> <div class=md-search data-md-component=search role=dialog> <label class=md-search__overlay for=__search></label> <div class=md-search__inner role=search> <form class=md-search__form name=search> <input type=text class=md-search__input name=query aria-label=Search placeholder=Search autocapitalize=off autocorrect=off autocomplete=off spellcheck=false data-md-component=search-query required> <label class="md-search__icon md-icon" for=__search> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11z"/></svg> </label> <nav class=md-search__options aria-label=Search> <button type=reset class="md-search__icon md-icon" title=Clear aria-label=Clear tabindex=-1> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z"/></svg> </button> </nav> </form> <div class=md-search__output> <div class=md-search__scrollwrap tabindex=0 data-md-scrollfix> <div class=md-search-result data-md-component=search-result> <div class=md-search-result__meta> Initializing search </div> <ol class=md-search-result__list role=presentation></ol> </div> </div> </div> </div> </div> <div class=md-header__source> <a href="https://github.com/nlohmann/json" title="Go to repository" class="md-source" data-md-component="source"> <div class="md-source__icon md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </div> <div class=md-source__repository> nlohmann/json </div> </a> </div> </nav> </header> <div class=md-container data-md-component=container> <nav class=md-tabs aria-label=Tabs data-md-component=tabs> <div class=md-grid> <ul class=md-tabs__list> <li class=md-tabs__item> <a href=../.. class=md-tabs__link> Home </a> </li> <li class="md-tabs__item md-tabs__item--active"> <a href=../arbitrary_types/ class=md-tabs__link> Features </a> </li> <li class=md-tabs__item> <a href=../../integration/ class=md-tabs__link> Integration </a> </li> <li class=md-tabs__item> <a href=../../api/basic_json/ class=md-tabs__link> API Documentation </a> </li> <li class=md-tabs__item> <a href=../../community/ class=md-tabs__link> Community </a> </li> </ul> </div> </nav> <main class=md-main data-md-component=main> <div class="md-main__inner md-grid"> <div class="md-sidebar md-sidebar--primary" data-md-component=sidebar data-md-type=navigation> <div class=md-sidebar__scrollwrap> <div class=md-sidebar__inner> <nav class="md-nav md-nav--primary md-nav--lifted" aria-label=Navigation data-md-level=0> <label class=md-nav__title for=__drawer> <a href=../.. title="JSON for Modern C++" class="md-nav__button md-logo" aria-label="JSON for Modern C++" data-md-component=logo> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54"/></svg> </a> JSON for Modern C++ </label> <div class=md-nav__source> <a href="https://github.com/nlohmann/json" title="Go to repository" class="md-source" data-md-component="source"> <div class="md-source__icon md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </div> <div class=md-source__repository> nlohmann/json </div> </a> </div> <ul class=md-nav__list data-md-scrollfix> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_1> <div class="md-nav__link md-nav__container"> <a href=../.. class="md-nav__link "> <span class=md-ellipsis> Home </span> </a> <label class="md-nav__link " for=__nav_1 id=__nav_1_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_1_label aria-expanded=false> <label class=md-nav__title for=__nav_1> <span class="md-nav__icon md-icon"></span> Home </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../home/license/ class=md-nav__link> <span class=md-ellipsis> License </span> </a> </li> <li class=md-nav__item> <a href=../../home/faq/ class=md-nav__link> <span class=md-ellipsis> FAQ </span> </a> </li> <li class=md-nav__item> <a href=../../home/exceptions/ class=md-nav__link> <span class=md-ellipsis> Exceptions </span> </a> </li> <li class=md-nav__item> <a href=../../home/releases/ class=md-nav__link> <span class=md-ellipsis> Releases </span> </a> </li> <li class=md-nav__item> <a href=../../home/design_goals/ class=md-nav__link> <span class=md-ellipsis> Design goals </span> </a> </li> <li class=md-nav__item> <a href=../../home/architecture/ class=md-nav__link> <span class=md-ellipsis> Architecture </span> </a> </li> <li class=md-nav__item> <a href=../../home/customers/ class=md-nav__link> <span class=md-ellipsis> Customers </span> </a> </li> <li class=md-nav__item> <a href=../../home/sponsors/ class=md-nav__link> <span class=md-ellipsis> Sponsors </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--active md-nav__item--section md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2 checked> <label class=md-nav__link for=__nav_2 id=__nav_2_label tabindex> <span class=md-ellipsis> Features </span> <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_2_label aria-expanded=true> <label class=md-nav__title for=__nav_2> <span class="md-nav__icon md-icon"></span> Features </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../arbitrary_types/ class=md-nav__link> <span class=md-ellipsis> Arbitrary Type Conversions </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_2> <div class="md-nav__link md-nav__container"> <a href=../binary_formats/ class="md-nav__link "> <span class=md-ellipsis> Binary Formats </span> </a> <label class="md-nav__link " for=__nav_2_2 id=__nav_2_2_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_2_label aria-expanded=false> <label class=md-nav__title for=__nav_2_2> <span class="md-nav__icon md-icon"></span> Binary Formats </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../binary_formats/bjdata/ class=md-nav__link> <span class=md-ellipsis> BJData </span> </a> </li> <li class=md-nav__item> <a href=../binary_formats/bson/ class=md-nav__link> <span class=md-ellipsis> BSON </span> </a> </li> <li class=md-nav__item> <a href=../binary_formats/cbor/ class=md-nav__link> <span class=md-ellipsis> CBOR </span> </a> </li> <li class=md-nav__item> <a href=../binary_formats/messagepack/ class=md-nav__link> <span class=md-ellipsis> MessagePack </span> </a> </li> <li class=md-nav__item> <a href=../binary_formats/ubjson/ class=md-nav__link> <span class=md-ellipsis> UBJSON </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../binary_values/ class=md-nav__link> <span class=md-ellipsis> Binary Values </span> </a> </li> <li class=md-nav__item> <a href=../comments/ class=md-nav__link> <span class=md-ellipsis> Comments </span> </a> </li> <li class=md-nav__item> <a href=../trailing_commas/ class=md-nav__link> <span class=md-ellipsis> Trailing Commas </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_6> <div class="md-nav__link md-nav__container"> <a href=../element_access/ class="md-nav__link "> <span class=md-ellipsis> Element Access </span> </a> <label class="md-nav__link " for=__nav_2_6 id=__nav_2_6_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_6_label aria-expanded=false> <label class=md-nav__title for=__nav_2_6> <span class="md-nav__icon md-icon"></span> Element Access </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../element_access/unchecked_access/ class=md-nav__link> <span class=md-ellipsis> Unchecked access: operator[] </span> </a> </li> <li class=md-nav__item> <a href=../element_access/checked_access/ class=md-nav__link> <span class=md-ellipsis> Checked access: at </span> </a> </li> <li class=md-nav__item> <a href=../element_access/default_value/ class=md-nav__link> <span class=md-ellipsis> Access with default value: value </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../iterators/ class=md-nav__link> <span class=md-ellipsis> Iterators </span> </a> </li> <li class=md-nav__item> <a href=../json_pointer/ class=md-nav__link> <span class=md-ellipsis> JSON Pointer </span> </a> </li> <li class=md-nav__item> <a href=../json_patch/ class=md-nav__link> <span class=md-ellipsis> JSON Patch and Diff </span> </a> </li> <li class=md-nav__item> <a href=../merge_patch/ class=md-nav__link> <span class=md-ellipsis> JSON Merge Patch </span> </a> </li> <li class=md-nav__item> <a href=../modules/ class=md-nav__link> <span class=md-ellipsis> Modules </span> </a> </li> <li class=md-nav__item> <a href=../namespace/ class=md-nav__link> <span class=md-ellipsis> nlohmann Namespace </span> </a> </li> <li class=md-nav__item> <a href=../object_order/ class=md-nav__link> <span class=md-ellipsis> Object Order </span> </a> </li> <li class="md-nav__item md-nav__item--active md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_14 checked> <div class="md-nav__link md-nav__container"> <a href=./ class="md-nav__link md-nav__link--active"> <span class=md-ellipsis> Parsing </span> </a> <label class="md-nav__link md-nav__link--active" for=__nav_2_14 id=__nav_2_14_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_14_label aria-expanded=true> <label class=md-nav__title for=__nav_2_14> <span class="md-nav__icon md-icon"></span> Parsing </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=json_lines/ class=md-nav__link> <span class=md-ellipsis> JSON Lines </span> </a> </li> <li class=md-nav__item> <a href=parse_exceptions/ class=md-nav__link> <span class=md-ellipsis> Parsing and Exceptions </span> </a> </li> <li class=md-nav__item> <a href=parser_callbacks/ class=md-nav__link> <span class=md-ellipsis> Parser Callbacks </span> </a> </li> <li class=md-nav__item> <a href=sax_interface/ class=md-nav__link> <span class=md-ellipsis> SAX Interface </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../assertions/ class=md-nav__link> <span class=md-ellipsis> Runtime Assertions </span> </a> </li> <li class=md-nav__item> <a href=../enum_conversion/ class=md-nav__link> <span class=md-ellipsis> Specializing enum conversion </span> </a> </li> <li class=md-nav__item> <a href=../macros/ class=md-nav__link> <span class=md-ellipsis> Supported Macros </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_18> <div class="md-nav__link md-nav__container"> <a href=../types/ class="md-nav__link "> <span class=md-ellipsis> Types </span> </a> <label class="md-nav__link " for=__nav_2_18 id=__nav_2_18_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_18_label aria-expanded=false> <label class=md-nav__title for=__nav_2_18> <span class="md-nav__icon md-icon"></span> Types </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../types/number_handling/ class=md-nav__link> <span class=md-ellipsis> Number Handling </span> </a> </li> </ul> </nav> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_3> <div class="md-nav__link md-nav__container"> <a href=../../integration/ class="md-nav__link "> <span class=md-ellipsis> Integration </span> </a> <label class="md-nav__link " for=__nav_3 id=__nav_3_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_3_label aria-expanded=false> <label class=md-nav__title for=__nav_3> <span class="md-nav__icon md-icon"></span> Integration </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../integration/migration_guide/ class=md-nav__link> <span class=md-ellipsis> Migration Guide </span> </a> </li> <li class=md-nav__item> <a href=../../integration/cmake/ class=md-nav__link> <span class=md-ellipsis> CMake </span> </a> </li> <li class=md-nav__item> <a href=../../integration/package_managers/ class=md-nav__link> <span class=md-ellipsis> Package Managers </span> </a> </li> <li class=md-nav__item> <a href=../../integration/pkg-config/ class=md-nav__link> <span class=md-ellipsis> Pkg-config </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4> <label class=md-nav__link for=__nav_4 id=__nav_4_label tabindex=0> <span class=md-ellipsis> API Documentation </span> <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_4_label aria-expanded=false> <label class=md-nav__title for=__nav_4> <span class="md-nav__icon md-icon"></span> API Documentation </label> <ul class=md-nav__list data-md-scrollfix> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_1> <div class="md-nav__link md-nav__container"> <a href=../../api/basic_json/ class="md-nav__link "> <span class=md-ellipsis> basic_json </span> </a> <label class="md-nav__link " for=__nav_4_1 id=__nav_4_1_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_1_label aria-expanded=false> <label class=md-nav__title for=__nav_4_1> <span class="md-nav__icon md-icon"></span> basic_json </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../api/basic_json/basic_json/ class=md-nav__link> <span class=md-ellipsis> (Constructor) </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/~basic_json/ class=md-nav__link> <span class=md-ellipsis> (Destructor) </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/accept/ class=md-nav__link> <span class=md-ellipsis> accept </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/array/ class=md-nav__link> <span class=md-ellipsis> array </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/array_t/ class=md-nav__link> <span class=md-ellipsis> array_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/at/ class=md-nav__link> <span class=md-ellipsis> at </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/back/ class=md-nav__link> <span class=md-ellipsis> back </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/begin/ class=md-nav__link> <span class=md-ellipsis> begin </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/binary/ class=md-nav__link> <span class=md-ellipsis> binary </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/binary_t/ class=md-nav__link> <span class=md-ellipsis> binary_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/boolean_t/ class=md-nav__link> <span class=md-ellipsis> boolean_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/cbegin/ class=md-nav__link> <span class=md-ellipsis> cbegin </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/cbor_tag_handler_t/ class=md-nav__link> <span class=md-ellipsis> cbor_tag_handler_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/cend/ class=md-nav__link> <span class=md-ellipsis> cend </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/clear/ class=md-nav__link> <span class=md-ellipsis> clear </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/contains/ class=md-nav__link> <span class=md-ellipsis> contains </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/count/ class=md-nav__link> <span class=md-ellipsis> count </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/crbegin/ class=md-nav__link> <span class=md-ellipsis> crbegin </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/crend/ class=md-nav__link> <span class=md-ellipsis> crend </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/default_object_comparator_t/ class=md-nav__link> <span class=md-ellipsis> default_object_comparator_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/diff/ class=md-nav__link> <span class=md-ellipsis> diff </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/dump/ class=md-nav__link> <span class=md-ellipsis> dump </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/emplace/ class=md-nav__link> <span class=md-ellipsis> emplace </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/emplace_back/ class=md-nav__link> <span class=md-ellipsis> emplace_back </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/empty/ class=md-nav__link> <span class=md-ellipsis> empty </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/end/ class=md-nav__link> <span class=md-ellipsis> end </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/end_pos/ class=md-nav__link> <span class=md-ellipsis> end_pos </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/erase/ class=md-nav__link> <span class=md-ellipsis> erase </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/error_handler_t/ class=md-nav__link> <span class=md-ellipsis> error_handler_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/exception/ class=md-nav__link> <span class=md-ellipsis> exception </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/find/ class=md-nav__link> <span class=md-ellipsis> find </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/flatten/ class=md-nav__link> <span class=md-ellipsis> flatten </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/from_bjdata/ class=md-nav__link> <span class=md-ellipsis> from_bjdata </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/from_bson/ class=md-nav__link> <span class=md-ellipsis> from_bson </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/from_cbor/ class=md-nav__link> <span class=md-ellipsis> from_cbor </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/from_msgpack/ class=md-nav__link> <span class=md-ellipsis> from_msgpack </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/from_ubjson/ class=md-nav__link> <span class=md-ellipsis> from_ubjson </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/front/ class=md-nav__link> <span class=md-ellipsis> front </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/get/ class=md-nav__link> <span class=md-ellipsis> get </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/get_allocator/ class=md-nav__link> <span class=md-ellipsis> get_allocator </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/get_binary/ class=md-nav__link> <span class=md-ellipsis> get_binary </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/get_ptr/ class=md-nav__link> <span class=md-ellipsis> get_ptr </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/get_ref/ class=md-nav__link> <span class=md-ellipsis> get_ref </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/get_to/ class=md-nav__link> <span class=md-ellipsis> get_to </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/std_hash/ class=md-nav__link> <span class=md-ellipsis> std::hash&lt;basic_json&gt; </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/input_format_t/ class=md-nav__link> <span class=md-ellipsis> input_format_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/insert/ class=md-nav__link> <span class=md-ellipsis> insert </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/invalid_iterator/ class=md-nav__link> <span class=md-ellipsis> invalid_iterator </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_array/ class=md-nav__link> <span class=md-ellipsis> is_array </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_binary/ class=md-nav__link> <span class=md-ellipsis> is_binary </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_boolean/ class=md-nav__link> <span class=md-ellipsis> is_boolean </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_discarded/ class=md-nav__link> <span class=md-ellipsis> is_discarded </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_null/ class=md-nav__link> <span class=md-ellipsis> is_null </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_number/ class=md-nav__link> <span class=md-ellipsis> is_number </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_number_float/ class=md-nav__link> <span class=md-ellipsis> is_number_float </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_number_integer/ class=md-nav__link> <span class=md-ellipsis> is_number_integer </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_number_unsigned/ class=md-nav__link> <span class=md-ellipsis> is_number_unsigned </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_object/ class=md-nav__link> <span class=md-ellipsis> is_object </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_primitive/ class=md-nav__link> <span class=md-ellipsis> is_primitive </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_string/ class=md-nav__link> <span class=md-ellipsis> is_string </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_structured/ class=md-nav__link> <span class=md-ellipsis> is_structured </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/items/ class=md-nav__link> <span class=md-ellipsis> items </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/json_base_class_t/ class=md-nav__link> <span class=md-ellipsis> json_base_class_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/json_serializer/ class=md-nav__link> <span class=md-ellipsis> json_serializer </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/max_size/ class=md-nav__link> <span class=md-ellipsis> max_size </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/meta/ class=md-nav__link> <span class=md-ellipsis> meta </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/merge_patch/ class=md-nav__link> <span class=md-ellipsis> merge_patch </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/number_float_t/ class=md-nav__link> <span class=md-ellipsis> number_float_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/number_integer_t/ class=md-nav__link> <span class=md-ellipsis> number_integer_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/number_unsigned_t/ class=md-nav__link> <span class=md-ellipsis> number_unsigned_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/object/ class=md-nav__link> <span class=md-ellipsis> object </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/object_comparator_t/ class=md-nav__link> <span class=md-ellipsis> object_comparator_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/object_t/ class=md-nav__link> <span class=md-ellipsis> object_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/operator_ValueType/ class=md-nav__link> <span class=md-ellipsis> operator ValueType </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/operator_value_t/ class=md-nav__link> <span class=md-ellipsis> operator value_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/operator%5B%5D/ class=md-nav__link> <span class=md-ellipsis> operator[] </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/operator%3D/ class=md-nav__link> <span class=md-ellipsis> operator= </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/operator%2B%3D/ class=md-nav__link> <span class=md-ellipsis> operator+= </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/operator_eq/ class=md-nav__link> <span class=md-ellipsis> operator== </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/operator_ne/ class=md-nav__link> <span class=md-ellipsis> operator!= </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/operator_lt/ class=md-nav__link> <span class=md-ellipsis> operator< </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/operator_gt/ class=md-nav__link> <span class=md-ellipsis> operator> </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/operator_le/ class=md-nav__link> <span class=md-ellipsis> operator<= </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/operator_ge/ class=md-nav__link> <span class=md-ellipsis> operator>= </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/operator_spaceship/ class=md-nav__link> <span class=md-ellipsis> operator<=> </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/out_of_range/ class=md-nav__link> <span class=md-ellipsis> out_of_range </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/other_error/ class=md-nav__link> <span class=md-ellipsis> other_error </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/parse/ class=md-nav__link> <span class=md-ellipsis> parse </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/parse_error/ class=md-nav__link> <span class=md-ellipsis> parse_error </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/parse_event_t/ class=md-nav__link> <span class=md-ellipsis> parse_event_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/parser_callback_t/ class=md-nav__link> <span class=md-ellipsis> parser_callback_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/patch/ class=md-nav__link> <span class=md-ellipsis> patch </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/patch_inplace/ class=md-nav__link> <span class=md-ellipsis> patch_inplace </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/push_back/ class=md-nav__link> <span class=md-ellipsis> push_back </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/rbegin/ class=md-nav__link> <span class=md-ellipsis> rbegin </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/rend/ class=md-nav__link> <span class=md-ellipsis> rend </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/sax_parse/ class=md-nav__link> <span class=md-ellipsis> sax_parse </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/size/ class=md-nav__link> <span class=md-ellipsis> size </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/start_pos/ class=md-nav__link> <span class=md-ellipsis> start_pos </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/string_t/ class=md-nav__link> <span class=md-ellipsis> string_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/swap/ class=md-nav__link> <span class=md-ellipsis> swap </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/std_swap/ class=md-nav__link> <span class=md-ellipsis> std::swap&lt;basic_json&gt; </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/to_bjdata/ class=md-nav__link> <span class=md-ellipsis> to_bjdata </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/to_bson/ class=md-nav__link> <span class=md-ellipsis> to_bson </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/to_cbor/ class=md-nav__link> <span class=md-ellipsis> to_cbor </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/to_msgpack/ class=md-nav__link> <span class=md-ellipsis> to_msgpack </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/to_string/ class=md-nav__link> <span class=md-ellipsis> to_string </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/to_ubjson/ class=md-nav__link> <span class=md-ellipsis> to_ubjson </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/type/ class=md-nav__link> <span class=md-ellipsis> type </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/type_error/ class=md-nav__link> <span class=md-ellipsis> type_error </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/type_name/ class=md-nav__link> <span class=md-ellipsis> type_name </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/unflatten/ class=md-nav__link> <span class=md-ellipsis> unflatten </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/update/ class=md-nav__link> <span class=md-ellipsis> update </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/value/ class=md-nav__link> <span class=md-ellipsis> value </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/value_t/ class=md-nav__link> <span class=md-ellipsis> value_t </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_2> <div class="md-nav__link md-nav__container"> <a href=../../api/byte_container_with_subtype/ class="md-nav__link "> <span class=md-ellipsis> byte_container_with_subtype </span> </a> <label class="md-nav__link " for=__nav_4_2 id=__nav_4_2_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_2_label aria-expanded=false> <label class=md-nav__title for=__nav_4_2> <span class="md-nav__icon md-icon"></span> byte_container_with_subtype </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../api/byte_container_with_subtype/byte_container_with_subtype/ class=md-nav__link> <span class=md-ellipsis> (constructor) </span> </a> </li> <li class=md-nav__item> <a href=../../api/byte_container_with_subtype/clear_subtype/ class=md-nav__link> <span class=md-ellipsis> clear_subtype </span> </a> </li> <li class=md-nav__item> <a href=../../api/byte_container_with_subtype/has_subtype/ class=md-nav__link> <span class=md-ellipsis> has_subtype </span> </a> </li> <li class=md-nav__item> <a href=../../api/byte_container_with_subtype/set_subtype/ class=md-nav__link> <span class=md-ellipsis> set_subtype </span> </a> </li> <li class=md-nav__item> <a href=../../api/byte_container_with_subtype/subtype/ class=md-nav__link> <span class=md-ellipsis> subtype </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_3> <div class="md-nav__link md-nav__container"> <a href=../../api/adl_serializer/ class="md-nav__link "> <span class=md-ellipsis> adl_serializer </span> </a> <label class="md-nav__link " for=__nav_4_3 id=__nav_4_3_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_3_label aria-expanded=false> <label class=md-nav__title for=__nav_4_3> <span class="md-nav__icon md-icon"></span> adl_serializer </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../api/adl_serializer/from_json/ class=md-nav__link> <span class=md-ellipsis> from_json </span> </a> </li> <li class=md-nav__item> <a href=../../api/adl_serializer/to_json/ class=md-nav__link> <span class=md-ellipsis> to_json </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../api/json/ class=md-nav__link> <span class=md-ellipsis> json </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_5> <div class="md-nav__link md-nav__container"> <a href=../../api/json_pointer/ class="md-nav__link "> <span class=md-ellipsis> json_pointer </span> </a> <label class="md-nav__link " for=__nav_4_5 id=__nav_4_5_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_5_label aria-expanded=false> <label class=md-nav__title for=__nav_4_5> <span class="md-nav__icon md-icon"></span> json_pointer </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../api/json_pointer/json_pointer/ class=md-nav__link> <span class=md-ellipsis> (Constructor) </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/back/ class=md-nav__link> <span class=md-ellipsis> back </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/empty/ class=md-nav__link> <span class=md-ellipsis> empty </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/front/ class=md-nav__link> <span class=md-ellipsis> front </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/operator_string_t/ class=md-nav__link> <span class=md-ellipsis> operator string_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/operator_eq/ class=md-nav__link> <span class=md-ellipsis> operator== </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/operator_ne/ class=md-nav__link> <span class=md-ellipsis> operator!= </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/operator_slash/ class=md-nav__link> <span class=md-ellipsis> operator/ </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/operator_slasheq/ class=md-nav__link> <span class=md-ellipsis> operator/= </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/parent_pointer/ class=md-nav__link> <span class=md-ellipsis> parent_pointer </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/pop_back/ class=md-nav__link> <span class=md-ellipsis> pop_back </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/pop_front/ class=md-nav__link> <span class=md-ellipsis> pop_front </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/push_back/ class=md-nav__link> <span class=md-ellipsis> push_back </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/push_front/ class=md-nav__link> <span class=md-ellipsis> push_front </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/string_t/ class=md-nav__link> <span class=md-ellipsis> string_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/to_string/ class=md-nav__link> <span class=md-ellipsis> to_string </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_6> <div class="md-nav__link md-nav__container"> <a href=../../api/json_sax/ class="md-nav__link "> <span class=md-ellipsis> json_sax </span> </a> <label class="md-nav__link " for=__nav_4_6 id=__nav_4_6_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_6_label aria-expanded=false> <label class=md-nav__title for=__nav_4_6> <span class="md-nav__icon md-icon"></span> json_sax </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../api/json_sax/binary/ class=md-nav__link> <span class=md-ellipsis> binary </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_sax/boolean/ class=md-nav__link> <span class=md-ellipsis> boolean </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_sax/end_array/ class=md-nav__link> <span class=md-ellipsis> end_array </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_sax/end_object/ class=md-nav__link> <span class=md-ellipsis> end_object </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_sax/key/ class=md-nav__link> <span class=md-ellipsis> key </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_sax/null/ class=md-nav__link> <span class=md-ellipsis> null </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_sax/number_float/ class=md-nav__link> <span class=md-ellipsis> number_float </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_sax/number_integer/ class=md-nav__link> <span class=md-ellipsis> number_integer </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_sax/number_unsigned/ class=md-nav__link> <span class=md-ellipsis> number_unsigned </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_sax/parse_error/ class=md-nav__link> <span class=md-ellipsis> parse_error </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_sax/start_array/ class=md-nav__link> <span class=md-ellipsis> start_array </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_sax/start_object/ class=md-nav__link> <span class=md-ellipsis> start_object </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_sax/string/ class=md-nav__link> <span class=md-ellipsis> string </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../api/operator_ltlt/ class=md-nav__link> <span class=md-ellipsis> operator<<(basic_json), operator<<(json_pointer) </span> </a> </li> <li class=md-nav__item> <a href=../../api/operator_gtgt/ class=md-nav__link> <span class=md-ellipsis> operator>>(basic_json) </span> </a> </li> <li class=md-nav__item> <a href=../../api/operator_literal_json/ class=md-nav__link> <span class=md-ellipsis> operator""_json </span> </a> </li> <li class=md-nav__item> <a href=../../api/operator_literal_json_pointer/ class=md-nav__link> <span class=md-ellipsis> operator""_json_pointer </span> </a> </li> <li class=md-nav__item> <a href=../../api/ordered_json/ class=md-nav__link> <span class=md-ellipsis> ordered_json </span> </a> </li> <li class=md-nav__item> <a href=../../api/ordered_map/ class=md-nav__link> <span class=md-ellipsis> ordered_map </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_13> <div class="md-nav__link md-nav__container"> <a href=../../api/macros/ class="md-nav__link "> <span class=md-ellipsis> macros </span> </a> <label class="md-nav__link " for=__nav_4_13 id=__nav_4_13_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_13_label aria-expanded=false> <label class=md-nav__title for=__nav_4_13> <span class="md-nav__icon md-icon"></span> macros </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../api/macros/json_assert/ class=md-nav__link> <span class=md-ellipsis> JSON_ASSERT </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_brace_init_copy_semantics/ class=md-nav__link> <span class=md-ellipsis> JSON_BRACE_INIT_COPY_SEMANTICS </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_throw_user/ class=md-nav__link> <span class=md-ellipsis> JSON_CATCH_USER, JSON_THROW_USER, JSON_TRY_USER </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_diagnostics/ class=md-nav__link> <span class=md-ellipsis> JSON_DIAGNOSTICS </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_diagnostic_positions/ class=md-nav__link> <span class=md-ellipsis> JSON_DIAGNOSTIC_POSITIONS </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_disable_enum_serialization/ class=md-nav__link> <span class=md-ellipsis> JSON_DISABLE_ENUM_SERIALIZATION </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_has_cpp_11/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_CPP_11, JSON_HAS_CPP_14, JSON_HAS_CPP_17, JSON_HAS_CPP_20 </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_has_filesystem/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_EXPERIMENTAL_FILESYSTEM, JSON_HAS_FILESYSTEM </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_has_ranges/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_RANGES </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_has_static_rtti/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_STATIC_RTTI </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_has_three_way_comparison/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_THREE_WAY_COMPARISON </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_noexception/ class=md-nav__link> <span class=md-ellipsis> JSON_NOEXCEPTION </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_no_io/ class=md-nav__link> <span class=md-ellipsis> JSON_NO_IO </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_skip_library_version_check/ class=md-nav__link> <span class=md-ellipsis> JSON_SKIP_LIBRARY_VERSION_CHECK </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_skip_unsupported_compiler_check/ class=md-nav__link> <span class=md-ellipsis> JSON_SKIP_UNSUPPORTED_COMPILER_CHECK </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_use_global_udls/ class=md-nav__link> <span class=md-ellipsis> JSON_USE_GLOBAL_UDLS </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_use_implicit_conversions/ class=md-nav__link> <span class=md-ellipsis> JSON_USE_IMPLICIT_CONVERSIONS </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_use_legacy_discarded_value_comparison/ class=md-nav__link> <span class=md-ellipsis> JSON_USE_LEGACY_DISCARDED_VALUE_COMPARISON </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/nlohmann_define_derived_type/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_ONLY_SERIALIZE, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/nlohmann_define_type_intrusive/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_TYPE_INTRUSIVE, NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_TYPE_INTRUSIVE_ONLY_SERIALIZE </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/nlohmann_define_type_non_intrusive/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/nlohmann_define_type_with_names/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_TYPE_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/nlohmann_json_namespace/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_NAMESPACE </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/nlohmann_json_namespace_begin/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_NAMESPACE_BEGIN, NLOHMANN_JSON_NAMESPACE_END </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/nlohmann_json_namespace_no_version/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_NAMESPACE_NO_VERSION </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/nlohmann_json_serialize_enum/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_SERIALIZE_ENUM </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/nlohmann_json_serialize_enum_strict/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_SERIALIZE_ENUM_STRICT </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/nlohmann_json_version_major/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_VERSION_MAJOR, NLOHMANN_JSON_VERSION_MINOR, NLOHMANN_JSON_VERSION_PATCH </span> </a> </li> </ul> </nav> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_5> <div class="md-nav__link md-nav__container"> <a href=../../community/ class="md-nav__link "> <span class=md-ellipsis> Community </span> </a> <label class="md-nav__link " for=__nav_5 id=__nav_5_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_5_label aria-expanded=false> <label class=md-nav__title for=__nav_5> <span class="md-nav__icon md-icon"></span> Community </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../community/code_of_conduct/ class=md-nav__link> <span class=md-ellipsis> Code of Conduct </span> </a> </li> <li class=md-nav__item> <a href=../../community/contribution_guidelines/ class=md-nav__link> <span class=md-ellipsis> Contribution Guidelines </span> </a> </li> <li class=md-nav__item> <a href=../../community/quality_assurance/ class=md-nav__link> <span class=md-ellipsis> Quality assurance </span> </a> </li> <li class=md-nav__item> <a href=../../community/governance/ class=md-nav__link> <span class=md-ellipsis> Governance </span> </a> </li> <li class=md-nav__item> <a href=../../community/security_policy/ class=md-nav__link> <span class=md-ellipsis> Security Policy </span> </a> </li> </ul> </nav> </li> </ul> </nav> </div> </div> </div> <div class="md-sidebar md-sidebar--secondary" data-md-component=sidebar data-md-type=toc> <div class=md-sidebar__scrollwrap> <div class=md-sidebar__inner> <nav class="md-nav md-nav--secondary" aria-label="Table of contents"> <label class=md-nav__title for=__toc> <span class="md-nav__icon md-icon"></span> Table of contents </label> <ul class=md-nav__list data-md-component=toc data-md-scrollfix> <li class=md-nav__item> <a href=#input class=md-nav__link> <span class=md-ellipsis> Input </span> </a> </li> <li class=md-nav__item> <a href=#sax-vs-dom-parsing class=md-nav__link> <span class=md-ellipsis> SAX vs. DOM parsing </span> </a> </li> <li class=md-nav__item> <a href=#exceptions class=md-nav__link> <span class=md-ellipsis> Exceptions </span> </a> </li> </ul> </nav> </div> </div> </div> <div class=md-content data-md-component=content> <article class="md-content__inner md-typeset"> <a href="https://github.com/nlohmann/json/edit/develop/docs/mkdocs/docs/features/parsing/index.md" title="Edit this page" class="md-content__button md-icon" rel="edit"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M10 20H6V4h7v5h5v3.1l2-2V8l-6-6H6c-1.1 0-2 .9-2 2v16c0 1.1.9 2 2 2h4zm10.2-7c.1 0 .3.1.4.2l1.3 1.3c.2.2.2.6 0 .8l-1 1-2.1-2.1 1-1c.1-.1.2-.2.4-.2m0 3.9L14.1 23H12v-2.1l6.1-6.1z"/></svg> </a> <a href="https://github.com/nlohmann/json/raw/develop/docs/mkdocs/docs/features/parsing/index.md" title="View source of this page" class="md-content__button md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M17 18c.56 0 1 .44 1 1s-.44 1-1 1-1-.44-1-1 .44-1 1-1m0-3c-2.73 0-5.06 1.66-6 4 .94 2.34 3.27 4 6 4s5.06-1.66 6-4c-.94-2.34-3.27-4-6-4m0 6.5a2.5 2.5 0 0 1-2.5-2.5 2.5 2.5 0 0 1 2.5-2.5 2.5 2.5 0 0 1 2.5 2.5 2.5 2.5 0 0 1-2.5 2.5M9.27 20H6V4h7v5h5v4.07c.7.08 1.36.25 2 .49V8l-6-6H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h4.5a8.2 8.2 0 0 1-1.23-2"/></svg> </a> <h1 id=parsing>Parsing<a class=headerlink href=#parsing title="Permanent link">&para;</a></h1> <div class="admonition note"> <p class=admonition-title>Note</p> <p>This page is under construction.</p> </div> <h2 id=input>Input<a class=headerlink href=#input title="Permanent link">&para;</a></h2> <h2 id=sax-vs-dom-parsing><abbr title="Simple API for XML">SAX</abbr> vs. <abbr title="Document Object Model">DOM</abbr> parsing<a class=headerlink href=#sax-vs-dom-parsing title="Permanent link">&para;</a></h2> <h2 id=exceptions>Exceptions<a class=headerlink href=#exceptions title="Permanent link">&para;</a></h2> <p>See <a href=parse_exceptions/ >parsing and exceptions</a>.</p> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 23, 2026 11:16:18 UTC">June 23, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
+<!doctype html><html lang=en class=no-js> <head><meta charset=utf-8><meta name=viewport content="width=device-width,initial-scale=1"><meta name=author content="Niels Lohmann"><link href="https://json.nlohmann.me/features/parsing/" rel="canonical"><link href=../object_order/ rel=prev><link href=json_lines/ rel=next><link rel=icon href=../../assets/images/favicon.png><meta name=generator content="mkdocs-1.6.1, mkdocs-material-9.7.6"><title>Parsing - JSON for Modern C++</title><link rel=stylesheet href=../../assets/stylesheets/main.484c7ddc.min.css><link rel=stylesheet href=../../assets/stylesheets/palette.ab4e12ef.min.css><link rel="stylesheet" href="../../assets/external/fonts.googleapis.com/css.61a430c9.css"><style>:root{--md-text-font:"Roboto";--md-code-font:"JetBrains Mono"}</style><link rel=stylesheet href=../../css/custom.css><script>__md_scope=new URL("../..",location),__md_hash=e=>[...e].reduce(((e,_)=>(e<<5)-e+_.charCodeAt(0)),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script></head> <body dir=ltr data-md-color-scheme=default data-md-color-primary=indigo data-md-color-accent=indigo> <input class=md-toggle data-md-toggle=drawer type=checkbox id=__drawer autocomplete=off> <input class=md-toggle data-md-toggle=search type=checkbox id=__search autocomplete=off> <label class=md-overlay for=__drawer></label> <div data-md-component=skip> <a href=#parsing class=md-skip> Skip to content </a> </div> <div data-md-component=announce> </div> <header class=md-header data-md-component=header> <nav class="md-header__inner md-grid" aria-label=Header> <a href=../.. title="JSON for Modern C++" class="md-header__button md-logo" aria-label="JSON for Modern C++" data-md-component=logo> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54"/></svg> </a> <label class="md-header__button md-icon" for=__drawer> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M3 6h18v2H3zm0 5h18v2H3zm0 5h18v2H3z"/></svg> </label> <div class=md-header__title data-md-component=header-title> <div class=md-header__ellipsis> <div class=md-header__topic> <span class=md-ellipsis> JSON for Modern C++ </span> </div> <div class=md-header__topic data-md-component=header-topic> <span class=md-ellipsis> Parsing </span> </div> </div> </div> <form class=md-header__option data-md-component=palette> <input class=md-option data-md-color-media="(prefers-color-scheme: light)" data-md-color-scheme=default data-md-color-primary=indigo data-md-color-accent=indigo aria-label="Switch to dark mode" type=radio name=__palette id=__palette_0> <label class="md-header__button md-icon" title="Switch to dark mode" for=__palette_1 hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a4 4 0 0 0-4 4 4 4 0 0 0 4 4 4 4 0 0 0 4-4 4 4 0 0 0-4-4m0 10a6 6 0 0 1-6-6 6 6 0 0 1 6-6 6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12z"/></svg> </label> <input class=md-option data-md-color-media="(prefers-color-scheme: dark)" data-md-color-scheme=slate data-md-color-primary=indigo data-md-color-accent=indigo aria-label="Switch to light mode" type=radio name=__palette id=__palette_1> <label class="md-header__button md-icon" title="Switch to light mode" for=__palette_0 hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 18c-.89 0-1.74-.2-2.5-.55C11.56 16.5 13 14.42 13 12s-1.44-4.5-3.5-5.45C10.26 6.2 11.11 6 12 6a6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12z"/></svg> </label> </form> <script>var palette=__md_get("__palette");if(palette&&palette.color){if("(prefers-color-scheme)"===palette.color.media){var media=matchMedia("(prefers-color-scheme: light)"),input=document.querySelector(media.matches?"[data-md-color-media='(prefers-color-scheme: light)']":"[data-md-color-media='(prefers-color-scheme: dark)']");palette.color.media=input.getAttribute("data-md-color-media"),palette.color.scheme=input.getAttribute("data-md-color-scheme"),palette.color.primary=input.getAttribute("data-md-color-primary"),palette.color.accent=input.getAttribute("data-md-color-accent")}for(var[key,value]of Object.entries(palette.color))document.body.setAttribute("data-md-color-"+key,value)}</script> <label class="md-header__button md-icon" for=__search> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg> </label> <div class=md-search data-md-component=search role=dialog> <label class=md-search__overlay for=__search></label> <div class=md-search__inner role=search> <form class=md-search__form name=search> <input type=text class=md-search__input name=query aria-label=Search placeholder=Search autocapitalize=off autocorrect=off autocomplete=off spellcheck=false data-md-component=search-query required> <label class="md-search__icon md-icon" for=__search> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11z"/></svg> </label> <nav class=md-search__options aria-label=Search> <button type=reset class="md-search__icon md-icon" title=Clear aria-label=Clear tabindex=-1> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z"/></svg> </button> </nav> </form> <div class=md-search__output> <div class=md-search__scrollwrap tabindex=0 data-md-scrollfix> <div class=md-search-result data-md-component=search-result> <div class=md-search-result__meta> Initializing search </div> <ol class=md-search-result__list role=presentation></ol> </div> </div> </div> </div> </div> <div class=md-header__source> <a href="https://github.com/nlohmann/json" title="Go to repository" class="md-source" data-md-component="source"> <div class="md-source__icon md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </div> <div class=md-source__repository> nlohmann/json </div> </a> </div> </nav> </header> <div class=md-container data-md-component=container> <nav class=md-tabs aria-label=Tabs data-md-component=tabs> <div class=md-grid> <ul class=md-tabs__list> <li class=md-tabs__item> <a href=../.. class=md-tabs__link> Home </a> </li> <li class="md-tabs__item md-tabs__item--active"> <a href=../arbitrary_types/ class=md-tabs__link> Features </a> </li> <li class=md-tabs__item> <a href=../../integration/ class=md-tabs__link> Integration </a> </li> <li class=md-tabs__item> <a href=../../api/basic_json/ class=md-tabs__link> API Documentation </a> </li> <li class=md-tabs__item> <a href=../../community/ class=md-tabs__link> Community </a> </li> </ul> </div> </nav> <main class=md-main data-md-component=main> <div class="md-main__inner md-grid"> <div class="md-sidebar md-sidebar--primary" data-md-component=sidebar data-md-type=navigation> <div class=md-sidebar__scrollwrap> <div class=md-sidebar__inner> <nav class="md-nav md-nav--primary md-nav--lifted" aria-label=Navigation data-md-level=0> <label class=md-nav__title for=__drawer> <a href=../.. title="JSON for Modern C++" class="md-nav__button md-logo" aria-label="JSON for Modern C++" data-md-component=logo> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54"/></svg> </a> JSON for Modern C++ </label> <div class=md-nav__source> <a href="https://github.com/nlohmann/json" title="Go to repository" class="md-source" data-md-component="source"> <div class="md-source__icon md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </div> <div class=md-source__repository> nlohmann/json </div> </a> </div> <ul class=md-nav__list data-md-scrollfix> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_1> <div class="md-nav__link md-nav__container"> <a href=../.. class="md-nav__link "> <span class=md-ellipsis> Home </span> </a> <label class="md-nav__link " for=__nav_1 id=__nav_1_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_1_label aria-expanded=false> <label class=md-nav__title for=__nav_1> <span class="md-nav__icon md-icon"></span> Home </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../home/license/ class=md-nav__link> <span class=md-ellipsis> License </span> </a> </li> <li class=md-nav__item> <a href=../../home/faq/ class=md-nav__link> <span class=md-ellipsis> FAQ </span> </a> </li> <li class=md-nav__item> <a href=../../home/exceptions/ class=md-nav__link> <span class=md-ellipsis> Exceptions </span> </a> </li> <li class=md-nav__item> <a href=../../home/releases/ class=md-nav__link> <span class=md-ellipsis> Releases </span> </a> </li> <li class=md-nav__item> <a href=../../home/design_goals/ class=md-nav__link> <span class=md-ellipsis> Design goals </span> </a> </li> <li class=md-nav__item> <a href=../../home/architecture/ class=md-nav__link> <span class=md-ellipsis> Architecture </span> </a> </li> <li class=md-nav__item> <a href=../../home/customers/ class=md-nav__link> <span class=md-ellipsis> Customers </span> </a> </li> <li class=md-nav__item> <a href=../../home/sponsors/ class=md-nav__link> <span class=md-ellipsis> Sponsors </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--active md-nav__item--section md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2 checked> <label class=md-nav__link for=__nav_2 id=__nav_2_label tabindex> <span class=md-ellipsis> Features </span> <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_2_label aria-expanded=true> <label class=md-nav__title for=__nav_2> <span class="md-nav__icon md-icon"></span> Features </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../arbitrary_types/ class=md-nav__link> <span class=md-ellipsis> Arbitrary Type Conversions </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_2> <div class="md-nav__link md-nav__container"> <a href=../binary_formats/ class="md-nav__link "> <span class=md-ellipsis> Binary Formats </span> </a> <label class="md-nav__link " for=__nav_2_2 id=__nav_2_2_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_2_label aria-expanded=false> <label class=md-nav__title for=__nav_2_2> <span class="md-nav__icon md-icon"></span> Binary Formats </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../binary_formats/bjdata/ class=md-nav__link> <span class=md-ellipsis> BJData </span> </a> </li> <li class=md-nav__item> <a href=../binary_formats/bson/ class=md-nav__link> <span class=md-ellipsis> BSON </span> </a> </li> <li class=md-nav__item> <a href=../binary_formats/cbor/ class=md-nav__link> <span class=md-ellipsis> CBOR </span> </a> </li> <li class=md-nav__item> <a href=../binary_formats/messagepack/ class=md-nav__link> <span class=md-ellipsis> MessagePack </span> </a> </li> <li class=md-nav__item> <a href=../binary_formats/ubjson/ class=md-nav__link> <span class=md-ellipsis> UBJSON </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../binary_values/ class=md-nav__link> <span class=md-ellipsis> Binary Values </span> </a> </li> <li class=md-nav__item> <a href=../comments/ class=md-nav__link> <span class=md-ellipsis> Comments </span> </a> </li> <li class=md-nav__item> <a href=../trailing_commas/ class=md-nav__link> <span class=md-ellipsis> Trailing Commas </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_6> <div class="md-nav__link md-nav__container"> <a href=../element_access/ class="md-nav__link "> <span class=md-ellipsis> Element Access </span> </a> <label class="md-nav__link " for=__nav_2_6 id=__nav_2_6_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_6_label aria-expanded=false> <label class=md-nav__title for=__nav_2_6> <span class="md-nav__icon md-icon"></span> Element Access </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../element_access/unchecked_access/ class=md-nav__link> <span class=md-ellipsis> Unchecked access: operator[] </span> </a> </li> <li class=md-nav__item> <a href=../element_access/checked_access/ class=md-nav__link> <span class=md-ellipsis> Checked access: at </span> </a> </li> <li class=md-nav__item> <a href=../element_access/default_value/ class=md-nav__link> <span class=md-ellipsis> Access with default value: value </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../iterators/ class=md-nav__link> <span class=md-ellipsis> Iterators </span> </a> </li> <li class=md-nav__item> <a href=../json_pointer/ class=md-nav__link> <span class=md-ellipsis> JSON Pointer </span> </a> </li> <li class=md-nav__item> <a href=../json_patch/ class=md-nav__link> <span class=md-ellipsis> JSON Patch and Diff </span> </a> </li> <li class=md-nav__item> <a href=../merge_patch/ class=md-nav__link> <span class=md-ellipsis> JSON Merge Patch </span> </a> </li> <li class=md-nav__item> <a href=../modules/ class=md-nav__link> <span class=md-ellipsis> Modules </span> </a> </li> <li class=md-nav__item> <a href=../namespace/ class=md-nav__link> <span class=md-ellipsis> nlohmann Namespace </span> </a> </li> <li class=md-nav__item> <a href=../object_order/ class=md-nav__link> <span class=md-ellipsis> Object Order </span> </a> </li> <li class="md-nav__item md-nav__item--active md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_14 checked> <div class="md-nav__link md-nav__container"> <a href=./ class="md-nav__link md-nav__link--active"> <span class=md-ellipsis> Parsing </span> </a> <label class="md-nav__link md-nav__link--active" for=__nav_2_14 id=__nav_2_14_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_14_label aria-expanded=true> <label class=md-nav__title for=__nav_2_14> <span class="md-nav__icon md-icon"></span> Parsing </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=json_lines/ class=md-nav__link> <span class=md-ellipsis> JSON Lines </span> </a> </li> <li class=md-nav__item> <a href=parse_exceptions/ class=md-nav__link> <span class=md-ellipsis> Parsing and Exceptions </span> </a> </li> <li class=md-nav__item> <a href=parser_callbacks/ class=md-nav__link> <span class=md-ellipsis> Parser Callbacks </span> </a> </li> <li class=md-nav__item> <a href=sax_interface/ class=md-nav__link> <span class=md-ellipsis> SAX Interface </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../assertions/ class=md-nav__link> <span class=md-ellipsis> Runtime Assertions </span> </a> </li> <li class=md-nav__item> <a href=../enum_conversion/ class=md-nav__link> <span class=md-ellipsis> Specializing enum conversion </span> </a> </li> <li class=md-nav__item> <a href=../macros/ class=md-nav__link> <span class=md-ellipsis> Supported Macros </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_18> <div class="md-nav__link md-nav__container"> <a href=../types/ class="md-nav__link "> <span class=md-ellipsis> Types </span> </a> <label class="md-nav__link " for=__nav_2_18 id=__nav_2_18_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_18_label aria-expanded=false> <label class=md-nav__title for=__nav_2_18> <span class="md-nav__icon md-icon"></span> Types </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../types/number_handling/ class=md-nav__link> <span class=md-ellipsis> Number Handling </span> </a> </li> </ul> </nav> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_3> <div class="md-nav__link md-nav__container"> <a href=../../integration/ class="md-nav__link "> <span class=md-ellipsis> Integration </span> </a> <label class="md-nav__link " for=__nav_3 id=__nav_3_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_3_label aria-expanded=false> <label class=md-nav__title for=__nav_3> <span class="md-nav__icon md-icon"></span> Integration </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../integration/migration_guide/ class=md-nav__link> <span class=md-ellipsis> Migration Guide </span> </a> </li> <li class=md-nav__item> <a href=../../integration/cmake/ class=md-nav__link> <span class=md-ellipsis> CMake </span> </a> </li> <li class=md-nav__item> <a href=../../integration/package_managers/ class=md-nav__link> <span class=md-ellipsis> Package Managers </span> </a> </li> <li class=md-nav__item> <a href=../../integration/pkg-config/ class=md-nav__link> <span class=md-ellipsis> Pkg-config </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4> <label class=md-nav__link for=__nav_4 id=__nav_4_label tabindex=0> <span class=md-ellipsis> API Documentation </span> <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_4_label aria-expanded=false> <label class=md-nav__title for=__nav_4> <span class="md-nav__icon md-icon"></span> API Documentation </label> <ul class=md-nav__list data-md-scrollfix> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_1> <div class="md-nav__link md-nav__container"> <a href=../../api/basic_json/ class="md-nav__link "> <span class=md-ellipsis> basic_json </span> </a> <label class="md-nav__link " for=__nav_4_1 id=__nav_4_1_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_1_label aria-expanded=false> <label class=md-nav__title for=__nav_4_1> <span class="md-nav__icon md-icon"></span> basic_json </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../api/basic_json/basic_json/ class=md-nav__link> <span class=md-ellipsis> (Constructor) </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/~basic_json/ class=md-nav__link> <span class=md-ellipsis> (Destructor) </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/accept/ class=md-nav__link> <span class=md-ellipsis> accept </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/array/ class=md-nav__link> <span class=md-ellipsis> array </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/array_t/ class=md-nav__link> <span class=md-ellipsis> array_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/at/ class=md-nav__link> <span class=md-ellipsis> at </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/back/ class=md-nav__link> <span class=md-ellipsis> back </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/begin/ class=md-nav__link> <span class=md-ellipsis> begin </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/binary/ class=md-nav__link> <span class=md-ellipsis> binary </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/binary_t/ class=md-nav__link> <span class=md-ellipsis> binary_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/boolean_t/ class=md-nav__link> <span class=md-ellipsis> boolean_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/cbegin/ class=md-nav__link> <span class=md-ellipsis> cbegin </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/cbor_tag_handler_t/ class=md-nav__link> <span class=md-ellipsis> cbor_tag_handler_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/cend/ class=md-nav__link> <span class=md-ellipsis> cend </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/clear/ class=md-nav__link> <span class=md-ellipsis> clear </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/contains/ class=md-nav__link> <span class=md-ellipsis> contains </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/count/ class=md-nav__link> <span class=md-ellipsis> count </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/crbegin/ class=md-nav__link> <span class=md-ellipsis> crbegin </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/crend/ class=md-nav__link> <span class=md-ellipsis> crend </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/default_object_comparator_t/ class=md-nav__link> <span class=md-ellipsis> default_object_comparator_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/diff/ class=md-nav__link> <span class=md-ellipsis> diff </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/dump/ class=md-nav__link> <span class=md-ellipsis> dump </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/emplace/ class=md-nav__link> <span class=md-ellipsis> emplace </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/emplace_back/ class=md-nav__link> <span class=md-ellipsis> emplace_back </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/empty/ class=md-nav__link> <span class=md-ellipsis> empty </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/end/ class=md-nav__link> <span class=md-ellipsis> end </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/end_pos/ class=md-nav__link> <span class=md-ellipsis> end_pos </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/erase/ class=md-nav__link> <span class=md-ellipsis> erase </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/error_handler_t/ class=md-nav__link> <span class=md-ellipsis> error_handler_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/exception/ class=md-nav__link> <span class=md-ellipsis> exception </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/find/ class=md-nav__link> <span class=md-ellipsis> find </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/flatten/ class=md-nav__link> <span class=md-ellipsis> flatten </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/from_bjdata/ class=md-nav__link> <span class=md-ellipsis> from_bjdata </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/from_bson/ class=md-nav__link> <span class=md-ellipsis> from_bson </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/from_cbor/ class=md-nav__link> <span class=md-ellipsis> from_cbor </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/from_msgpack/ class=md-nav__link> <span class=md-ellipsis> from_msgpack </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/from_ubjson/ class=md-nav__link> <span class=md-ellipsis> from_ubjson </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/front/ class=md-nav__link> <span class=md-ellipsis> front </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/get/ class=md-nav__link> <span class=md-ellipsis> get </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/get_allocator/ class=md-nav__link> <span class=md-ellipsis> get_allocator </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/get_binary/ class=md-nav__link> <span class=md-ellipsis> get_binary </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/get_ptr/ class=md-nav__link> <span class=md-ellipsis> get_ptr </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/get_ref/ class=md-nav__link> <span class=md-ellipsis> get_ref </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/get_to/ class=md-nav__link> <span class=md-ellipsis> get_to </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/std_hash/ class=md-nav__link> <span class=md-ellipsis> std::hash&lt;basic_json&gt; </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/input_format_t/ class=md-nav__link> <span class=md-ellipsis> input_format_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/insert/ class=md-nav__link> <span class=md-ellipsis> insert </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/invalid_iterator/ class=md-nav__link> <span class=md-ellipsis> invalid_iterator </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_array/ class=md-nav__link> <span class=md-ellipsis> is_array </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_binary/ class=md-nav__link> <span class=md-ellipsis> is_binary </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_boolean/ class=md-nav__link> <span class=md-ellipsis> is_boolean </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_discarded/ class=md-nav__link> <span class=md-ellipsis> is_discarded </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_null/ class=md-nav__link> <span class=md-ellipsis> is_null </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_number/ class=md-nav__link> <span class=md-ellipsis> is_number </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_number_float/ class=md-nav__link> <span class=md-ellipsis> is_number_float </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_number_integer/ class=md-nav__link> <span class=md-ellipsis> is_number_integer </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_number_unsigned/ class=md-nav__link> <span class=md-ellipsis> is_number_unsigned </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_object/ class=md-nav__link> <span class=md-ellipsis> is_object </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_primitive/ class=md-nav__link> <span class=md-ellipsis> is_primitive </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_string/ class=md-nav__link> <span class=md-ellipsis> is_string </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_structured/ class=md-nav__link> <span class=md-ellipsis> is_structured </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/items/ class=md-nav__link> <span class=md-ellipsis> items </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/json_base_class_t/ class=md-nav__link> <span class=md-ellipsis> json_base_class_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/json_serializer/ class=md-nav__link> <span class=md-ellipsis> json_serializer </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/max_size/ class=md-nav__link> <span class=md-ellipsis> max_size </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/meta/ class=md-nav__link> <span class=md-ellipsis> meta </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/merge_patch/ class=md-nav__link> <span class=md-ellipsis> merge_patch </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/number_float_t/ class=md-nav__link> <span class=md-ellipsis> number_float_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/number_integer_t/ class=md-nav__link> <span class=md-ellipsis> number_integer_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/number_unsigned_t/ class=md-nav__link> <span class=md-ellipsis> number_unsigned_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/object/ class=md-nav__link> <span class=md-ellipsis> object </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/object_comparator_t/ class=md-nav__link> <span class=md-ellipsis> object_comparator_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/object_t/ class=md-nav__link> <span class=md-ellipsis> object_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/operator_ValueType/ class=md-nav__link> <span class=md-ellipsis> operator ValueType </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/operator_value_t/ class=md-nav__link> <span class=md-ellipsis> operator value_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/operator%5B%5D/ class=md-nav__link> <span class=md-ellipsis> operator[] </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/operator%3D/ class=md-nav__link> <span class=md-ellipsis> operator= </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/operator%2B%3D/ class=md-nav__link> <span class=md-ellipsis> operator+= </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/operator_eq/ class=md-nav__link> <span class=md-ellipsis> operator== </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/operator_ne/ class=md-nav__link> <span class=md-ellipsis> operator!= </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/operator_lt/ class=md-nav__link> <span class=md-ellipsis> operator< </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/operator_gt/ class=md-nav__link> <span class=md-ellipsis> operator> </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/operator_le/ class=md-nav__link> <span class=md-ellipsis> operator<= </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/operator_ge/ class=md-nav__link> <span class=md-ellipsis> operator>= </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/operator_spaceship/ class=md-nav__link> <span class=md-ellipsis> operator<=> </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/out_of_range/ class=md-nav__link> <span class=md-ellipsis> out_of_range </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/other_error/ class=md-nav__link> <span class=md-ellipsis> other_error </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/parse/ class=md-nav__link> <span class=md-ellipsis> parse </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/parse_error/ class=md-nav__link> <span class=md-ellipsis> parse_error </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/parse_event_t/ class=md-nav__link> <span class=md-ellipsis> parse_event_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/parser_callback_t/ class=md-nav__link> <span class=md-ellipsis> parser_callback_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/patch/ class=md-nav__link> <span class=md-ellipsis> patch </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/patch_inplace/ class=md-nav__link> <span class=md-ellipsis> patch_inplace </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/push_back/ class=md-nav__link> <span class=md-ellipsis> push_back </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/rbegin/ class=md-nav__link> <span class=md-ellipsis> rbegin </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/rend/ class=md-nav__link> <span class=md-ellipsis> rend </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/sax_parse/ class=md-nav__link> <span class=md-ellipsis> sax_parse </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/size/ class=md-nav__link> <span class=md-ellipsis> size </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/start_pos/ class=md-nav__link> <span class=md-ellipsis> start_pos </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/string_t/ class=md-nav__link> <span class=md-ellipsis> string_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/swap/ class=md-nav__link> <span class=md-ellipsis> swap </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/std_swap/ class=md-nav__link> <span class=md-ellipsis> std::swap&lt;basic_json&gt; </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/to_bjdata/ class=md-nav__link> <span class=md-ellipsis> to_bjdata </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/to_bson/ class=md-nav__link> <span class=md-ellipsis> to_bson </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/to_cbor/ class=md-nav__link> <span class=md-ellipsis> to_cbor </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/to_msgpack/ class=md-nav__link> <span class=md-ellipsis> to_msgpack </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/to_string/ class=md-nav__link> <span class=md-ellipsis> to_string </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/to_ubjson/ class=md-nav__link> <span class=md-ellipsis> to_ubjson </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/type/ class=md-nav__link> <span class=md-ellipsis> type </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/type_error/ class=md-nav__link> <span class=md-ellipsis> type_error </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/type_name/ class=md-nav__link> <span class=md-ellipsis> type_name </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/unflatten/ class=md-nav__link> <span class=md-ellipsis> unflatten </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/update/ class=md-nav__link> <span class=md-ellipsis> update </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/value/ class=md-nav__link> <span class=md-ellipsis> value </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/value_t/ class=md-nav__link> <span class=md-ellipsis> value_t </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_2> <div class="md-nav__link md-nav__container"> <a href=../../api/byte_container_with_subtype/ class="md-nav__link "> <span class=md-ellipsis> byte_container_with_subtype </span> </a> <label class="md-nav__link " for=__nav_4_2 id=__nav_4_2_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_2_label aria-expanded=false> <label class=md-nav__title for=__nav_4_2> <span class="md-nav__icon md-icon"></span> byte_container_with_subtype </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../api/byte_container_with_subtype/byte_container_with_subtype/ class=md-nav__link> <span class=md-ellipsis> (constructor) </span> </a> </li> <li class=md-nav__item> <a href=../../api/byte_container_with_subtype/clear_subtype/ class=md-nav__link> <span class=md-ellipsis> clear_subtype </span> </a> </li> <li class=md-nav__item> <a href=../../api/byte_container_with_subtype/has_subtype/ class=md-nav__link> <span class=md-ellipsis> has_subtype </span> </a> </li> <li class=md-nav__item> <a href=../../api/byte_container_with_subtype/set_subtype/ class=md-nav__link> <span class=md-ellipsis> set_subtype </span> </a> </li> <li class=md-nav__item> <a href=../../api/byte_container_with_subtype/subtype/ class=md-nav__link> <span class=md-ellipsis> subtype </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_3> <div class="md-nav__link md-nav__container"> <a href=../../api/adl_serializer/ class="md-nav__link "> <span class=md-ellipsis> adl_serializer </span> </a> <label class="md-nav__link " for=__nav_4_3 id=__nav_4_3_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_3_label aria-expanded=false> <label class=md-nav__title for=__nav_4_3> <span class="md-nav__icon md-icon"></span> adl_serializer </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../api/adl_serializer/from_json/ class=md-nav__link> <span class=md-ellipsis> from_json </span> </a> </li> <li class=md-nav__item> <a href=../../api/adl_serializer/to_json/ class=md-nav__link> <span class=md-ellipsis> to_json </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../api/json/ class=md-nav__link> <span class=md-ellipsis> json </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_5> <div class="md-nav__link md-nav__container"> <a href=../../api/json_pointer/ class="md-nav__link "> <span class=md-ellipsis> json_pointer </span> </a> <label class="md-nav__link " for=__nav_4_5 id=__nav_4_5_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_5_label aria-expanded=false> <label class=md-nav__title for=__nav_4_5> <span class="md-nav__icon md-icon"></span> json_pointer </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../api/json_pointer/json_pointer/ class=md-nav__link> <span class=md-ellipsis> (Constructor) </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/back/ class=md-nav__link> <span class=md-ellipsis> back </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/empty/ class=md-nav__link> <span class=md-ellipsis> empty </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/front/ class=md-nav__link> <span class=md-ellipsis> front </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/operator_string_t/ class=md-nav__link> <span class=md-ellipsis> operator string_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/operator_eq/ class=md-nav__link> <span class=md-ellipsis> operator== </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/operator_ne/ class=md-nav__link> <span class=md-ellipsis> operator!= </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/operator_slash/ class=md-nav__link> <span class=md-ellipsis> operator/ </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/operator_slasheq/ class=md-nav__link> <span class=md-ellipsis> operator/= </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/parent_pointer/ class=md-nav__link> <span class=md-ellipsis> parent_pointer </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/pop_back/ class=md-nav__link> <span class=md-ellipsis> pop_back </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/pop_front/ class=md-nav__link> <span class=md-ellipsis> pop_front </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/push_back/ class=md-nav__link> <span class=md-ellipsis> push_back </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/push_front/ class=md-nav__link> <span class=md-ellipsis> push_front </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/string_t/ class=md-nav__link> <span class=md-ellipsis> string_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/to_string/ class=md-nav__link> <span class=md-ellipsis> to_string </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_6> <div class="md-nav__link md-nav__container"> <a href=../../api/json_sax/ class="md-nav__link "> <span class=md-ellipsis> json_sax </span> </a> <label class="md-nav__link " for=__nav_4_6 id=__nav_4_6_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_6_label aria-expanded=false> <label class=md-nav__title for=__nav_4_6> <span class="md-nav__icon md-icon"></span> json_sax </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../api/json_sax/binary/ class=md-nav__link> <span class=md-ellipsis> binary </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_sax/boolean/ class=md-nav__link> <span class=md-ellipsis> boolean </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_sax/end_array/ class=md-nav__link> <span class=md-ellipsis> end_array </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_sax/end_object/ class=md-nav__link> <span class=md-ellipsis> end_object </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_sax/key/ class=md-nav__link> <span class=md-ellipsis> key </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_sax/null/ class=md-nav__link> <span class=md-ellipsis> null </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_sax/number_float/ class=md-nav__link> <span class=md-ellipsis> number_float </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_sax/number_integer/ class=md-nav__link> <span class=md-ellipsis> number_integer </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_sax/number_unsigned/ class=md-nav__link> <span class=md-ellipsis> number_unsigned </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_sax/parse_error/ class=md-nav__link> <span class=md-ellipsis> parse_error </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_sax/start_array/ class=md-nav__link> <span class=md-ellipsis> start_array </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_sax/start_object/ class=md-nav__link> <span class=md-ellipsis> start_object </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_sax/string/ class=md-nav__link> <span class=md-ellipsis> string </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../api/operator_ltlt/ class=md-nav__link> <span class=md-ellipsis> operator<<(basic_json), operator<<(json_pointer) </span> </a> </li> <li class=md-nav__item> <a href=../../api/operator_gtgt/ class=md-nav__link> <span class=md-ellipsis> operator>>(basic_json) </span> </a> </li> <li class=md-nav__item> <a href=../../api/operator_literal_json/ class=md-nav__link> <span class=md-ellipsis> operator""_json </span> </a> </li> <li class=md-nav__item> <a href=../../api/operator_literal_json_pointer/ class=md-nav__link> <span class=md-ellipsis> operator""_json_pointer </span> </a> </li> <li class=md-nav__item> <a href=../../api/ordered_json/ class=md-nav__link> <span class=md-ellipsis> ordered_json </span> </a> </li> <li class=md-nav__item> <a href=../../api/ordered_map/ class=md-nav__link> <span class=md-ellipsis> ordered_map </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_13> <div class="md-nav__link md-nav__container"> <a href=../../api/macros/ class="md-nav__link "> <span class=md-ellipsis> macros </span> </a> <label class="md-nav__link " for=__nav_4_13 id=__nav_4_13_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_13_label aria-expanded=false> <label class=md-nav__title for=__nav_4_13> <span class="md-nav__icon md-icon"></span> macros </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../api/macros/json_assert/ class=md-nav__link> <span class=md-ellipsis> JSON_ASSERT </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_brace_init_copy_semantics/ class=md-nav__link> <span class=md-ellipsis> JSON_BRACE_INIT_COPY_SEMANTICS </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_throw_user/ class=md-nav__link> <span class=md-ellipsis> JSON_CATCH_USER, JSON_THROW_USER, JSON_TRY_USER </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_diagnostics/ class=md-nav__link> <span class=md-ellipsis> JSON_DIAGNOSTICS </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_diagnostic_positions/ class=md-nav__link> <span class=md-ellipsis> JSON_DIAGNOSTIC_POSITIONS </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_disable_enum_serialization/ class=md-nav__link> <span class=md-ellipsis> JSON_DISABLE_ENUM_SERIALIZATION </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_has_cpp_11/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_CPP_11, JSON_HAS_CPP_14, JSON_HAS_CPP_17, JSON_HAS_CPP_20 </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_has_filesystem/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_EXPERIMENTAL_FILESYSTEM, JSON_HAS_FILESYSTEM </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_has_ranges/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_RANGES </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_has_static_rtti/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_STATIC_RTTI </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_has_three_way_comparison/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_THREE_WAY_COMPARISON </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_noexception/ class=md-nav__link> <span class=md-ellipsis> JSON_NOEXCEPTION </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_no_io/ class=md-nav__link> <span class=md-ellipsis> JSON_NO_IO </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_skip_library_version_check/ class=md-nav__link> <span class=md-ellipsis> JSON_SKIP_LIBRARY_VERSION_CHECK </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_skip_unsupported_compiler_check/ class=md-nav__link> <span class=md-ellipsis> JSON_SKIP_UNSUPPORTED_COMPILER_CHECK </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_use_global_udls/ class=md-nav__link> <span class=md-ellipsis> JSON_USE_GLOBAL_UDLS </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_use_implicit_conversions/ class=md-nav__link> <span class=md-ellipsis> JSON_USE_IMPLICIT_CONVERSIONS </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_use_legacy_discarded_value_comparison/ class=md-nav__link> <span class=md-ellipsis> JSON_USE_LEGACY_DISCARDED_VALUE_COMPARISON </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/nlohmann_define_derived_type/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_ONLY_SERIALIZE, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/nlohmann_define_type_intrusive/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_TYPE_INTRUSIVE, NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_TYPE_INTRUSIVE_ONLY_SERIALIZE </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/nlohmann_define_type_non_intrusive/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/nlohmann_define_type_with_names/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_TYPE_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/nlohmann_json_namespace/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_NAMESPACE </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/nlohmann_json_namespace_begin/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_NAMESPACE_BEGIN, NLOHMANN_JSON_NAMESPACE_END </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/nlohmann_json_namespace_no_version/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_NAMESPACE_NO_VERSION </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/nlohmann_json_serialize_enum/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_SERIALIZE_ENUM </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/nlohmann_json_serialize_enum_strict/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_SERIALIZE_ENUM_STRICT </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/nlohmann_json_version_major/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_VERSION_MAJOR, NLOHMANN_JSON_VERSION_MINOR, NLOHMANN_JSON_VERSION_PATCH </span> </a> </li> </ul> </nav> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_5> <div class="md-nav__link md-nav__container"> <a href=../../community/ class="md-nav__link "> <span class=md-ellipsis> Community </span> </a> <label class="md-nav__link " for=__nav_5 id=__nav_5_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_5_label aria-expanded=false> <label class=md-nav__title for=__nav_5> <span class="md-nav__icon md-icon"></span> Community </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../community/code_of_conduct/ class=md-nav__link> <span class=md-ellipsis> Code of Conduct </span> </a> </li> <li class=md-nav__item> <a href=../../community/contribution_guidelines/ class=md-nav__link> <span class=md-ellipsis> Contribution Guidelines </span> </a> </li> <li class=md-nav__item> <a href=../../community/quality_assurance/ class=md-nav__link> <span class=md-ellipsis> Quality assurance </span> </a> </li> <li class=md-nav__item> <a href=../../community/governance/ class=md-nav__link> <span class=md-ellipsis> Governance </span> </a> </li> <li class=md-nav__item> <a href=../../community/security_policy/ class=md-nav__link> <span class=md-ellipsis> Security Policy </span> </a> </li> </ul> </nav> </li> </ul> </nav> </div> </div> </div> <div class="md-sidebar md-sidebar--secondary" data-md-component=sidebar data-md-type=toc> <div class=md-sidebar__scrollwrap> <div class=md-sidebar__inner> <nav class="md-nav md-nav--secondary" aria-label="Table of contents"> <label class=md-nav__title for=__toc> <span class="md-nav__icon md-icon"></span> Table of contents </label> <ul class=md-nav__list data-md-component=toc data-md-scrollfix> <li class=md-nav__item> <a href=#input class=md-nav__link> <span class=md-ellipsis> Input </span> </a> </li> <li class=md-nav__item> <a href=#sax-vs-dom-parsing class=md-nav__link> <span class=md-ellipsis> SAX vs. DOM parsing </span> </a> </li> <li class=md-nav__item> <a href=#exceptions class=md-nav__link> <span class=md-ellipsis> Exceptions </span> </a> </li> </ul> </nav> </div> </div> </div> <div class=md-content data-md-component=content> <article class="md-content__inner md-typeset"> <a href="https://github.com/nlohmann/json/edit/develop/docs/mkdocs/docs/features/parsing/index.md" title="Edit this page" class="md-content__button md-icon" rel="edit"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M10 20H6V4h7v5h5v3.1l2-2V8l-6-6H6c-1.1 0-2 .9-2 2v16c0 1.1.9 2 2 2h4zm10.2-7c.1 0 .3.1.4.2l1.3 1.3c.2.2.2.6 0 .8l-1 1-2.1-2.1 1-1c.1-.1.2-.2.4-.2m0 3.9L14.1 23H12v-2.1l6.1-6.1z"/></svg> </a> <a href="https://github.com/nlohmann/json/raw/develop/docs/mkdocs/docs/features/parsing/index.md" title="View source of this page" class="md-content__button md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M17 18c.56 0 1 .44 1 1s-.44 1-1 1-1-.44-1-1 .44-1 1-1m0-3c-2.73 0-5.06 1.66-6 4 .94 2.34 3.27 4 6 4s5.06-1.66 6-4c-.94-2.34-3.27-4-6-4m0 6.5a2.5 2.5 0 0 1-2.5-2.5 2.5 2.5 0 0 1 2.5-2.5 2.5 2.5 0 0 1 2.5 2.5 2.5 2.5 0 0 1-2.5 2.5M9.27 20H6V4h7v5h5v4.07c.7.08 1.36.25 2 .49V8l-6-6H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h4.5a8.2 8.2 0 0 1-1.23-2"/></svg> </a> <h1 id=parsing>Parsing<a class=headerlink href=#parsing title="Permanent link">&para;</a></h1> <div class="admonition note"> <p class=admonition-title>Note</p> <p>This page is under construction.</p> </div> <h2 id=input>Input<a class=headerlink href=#input title="Permanent link">&para;</a></h2> <h2 id=sax-vs-dom-parsing><abbr title="Simple API for XML">SAX</abbr> vs. <abbr title="Document Object Model">DOM</abbr> parsing<a class=headerlink href=#sax-vs-dom-parsing title="Permanent link">&para;</a></h2> <h2 id=exceptions>Exceptions<a class=headerlink href=#exceptions title="Permanent link">&para;</a></h2> <p>See <a href=parse_exceptions/ >parsing and exceptions</a>.</p> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 29, 2026 20:15:18 UTC">June 29, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
diff --git a/features/parsing/json_lines/index.html b/features/parsing/json_lines/index.html
index 98c2f40..75afca3 100644
--- a/features/parsing/json_lines/index.html
+++ b/features/parsing/json_lines/index.html
@@ -33,4 +33,4 @@
 <span class=p>{</span>
 <span class=w>    </span><span class=n>std</span><span class=o>::</span><span class=n>cout</span><span class=w> </span><span class=o>&lt;&lt;</span><span class=w> </span><span class=n>j</span><span class=w> </span><span class=o>&lt;&lt;</span><span class=w> </span><span class=n>std</span><span class=o>::</span><span class=n>endl</span><span class=p>;</span>
 <span class=p>}</span>
-</code></pre></div> <p>with a <abbr title="JavaScript Object Notation">JSON</abbr> Lines input does not work, because the parser will try to parse one value after the last one.</p> </div> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 23, 2026 11:16:18 UTC">June 23, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
+</code></pre></div> <p>with a <abbr title="JavaScript Object Notation">JSON</abbr> Lines input does not work, because the parser will try to parse one value after the last one.</p> </div> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 29, 2026 20:15:18 UTC">June 29, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
diff --git a/features/parsing/parse_exceptions/index.html b/features/parsing/parse_exceptions/index.html
index 2010547..48a253b 100644
--- a/features/parsing/parse_exceptions/index.html
+++ b/features/parsing/parse_exceptions/index.html
@@ -20,7 +20,7 @@
 <span class=w>                 </span><span class=k>const</span><span class=w> </span><span class=n>std</span><span class=o>::</span><span class=n>string</span><span class=o>&amp;</span><span class=w> </span><span class=n>last_token</span><span class=p>,</span>
 <span class=w>                 </span><span class=k>const</span><span class=w> </span><span class=n>json</span><span class=o>::</span><span class=n>exception</span><span class=o>&amp;</span><span class=w> </span><span class=n>ex</span><span class=p>);</span>
 </code></pre></div> <p>The return value indicates whether the parsing should continue, so the function should usually return <code class=highlight><span class=nb>false</span></code>.</p> <details class=example> <summary>Example</summary> <div class=highlight><pre><span></span><code><span class=cp>#include</span><span class=w> </span><span class=cpf>&lt;iostream&gt;</span>
-<span class=cp>#include</span><span class=w> </span><span class=cpf>&quot;json.hpp&quot;</span>
+<span class=cp>#include</span><span class=w> </span><span class=cpf>&lt;nlohmann/json.hpp&gt;</span>
 
 <span class=k>using</span><span class=w> </span><span class=n>json</span><span class=w> </span><span class=o>=</span><span class=w> </span><span class=n>nlohmann</span><span class=o>::</span><span class=n>json</span><span class=p>;</span>
 
@@ -63,4 +63,4 @@
 last read: &quot;3,]&quot;
 parsing unsuccessful!
 parsed value: [1,2,3]
-</code></pre></div> </details> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 23, 2026 11:16:18 UTC">June 23, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
+</code></pre></div> </details> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 29, 2026 20:15:18 UTC">June 29, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
diff --git a/features/parsing/parser_callbacks/index.html b/features/parsing/parser_callbacks/index.html
index 6c44e88..f40597e 100644
--- a/features/parsing/parser_callbacks/index.html
+++ b/features/parsing/parser_callbacks/index.html
@@ -90,4 +90,4 @@
 <span class=w>        </span><span class=nt>&quot;Width&quot;</span><span class=p>:</span><span class=w> </span><span class=mi>800</span>
 <span class=w>    </span><span class=p>}</span>
 <span class=p>}</span>
-</code></pre></div> </details> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 23, 2026 11:16:18 UTC">June 23, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
+</code></pre></div> </details> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 29, 2026 20:15:18 UTC">June 29, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
diff --git a/features/parsing/sax_interface/index.html b/features/parsing/sax_interface/index.html
index 6b91516..4a7cf79 100644
--- a/features/parsing/sax_interface/index.html
+++ b/features/parsing/sax_interface/index.html
@@ -49,4 +49,4 @@
 
 <span class=c1>// called when a parse error occurs; byte position, the last token, and an exception is passed</span>
 <span class=kt>bool</span><span class=w> </span><span class=nf>parse_error</span><span class=p>(</span><span class=n>std</span><span class=o>::</span><span class=kt>size_t</span><span class=w> </span><span class=n>position</span><span class=p>,</span><span class=w> </span><span class=k>const</span><span class=w> </span><span class=n>std</span><span class=o>::</span><span class=n>string</span><span class=o>&amp;</span><span class=w> </span><span class=n>last_token</span><span class=p>,</span><span class=w> </span><span class=k>const</span><span class=w> </span><span class=n>json</span><span class=o>::</span><span class=n>exception</span><span class=o>&amp;</span><span class=w> </span><span class=n>ex</span><span class=p>);</span>
-</code></pre></div> <p>The return value of each function determines whether parsing should proceed.</p> <p>To implement your own <abbr title="Simple API for XML">SAX</abbr> handler, proceed as follows:</p> <ol> <li>Implement the <abbr title="Simple API for XML">SAX</abbr> interface in a class. You can use class <code>nlohmann::json_sax&lt;json&gt;</code> as base class, but you can also use any class where the functions described above are implemented and public.</li> <li>Create an object of your <abbr title="Simple API for XML">SAX</abbr> interface class, e.g. <code>my_sax</code>.</li> <li>Call <code class=highlight><span class=kt>bool</span><span class=w> </span><span class=nf>json::sax_parse</span><span class=p>(</span><span class=n>input</span><span class=p>,</span><span class=w> </span><span class=o>&amp;</span><span class=n>my_sax</span><span class=p>);</span></code> where the first parameter can be any input like a string or an input stream and the second parameter is a pointer to your <abbr title="Simple API for XML">SAX</abbr> interface.</li> </ol> <p>Note the <code>sax_parse</code> function only returns a <code class=highlight><span class=kt>bool</span></code> indicating the result of the last executed <abbr title="Simple API for XML">SAX</abbr> event. It does not return <code>json</code> value - it is up to you to decide what to do with the <abbr title="Simple API for XML">SAX</abbr> events. Furthermore, no exceptions are thrown in case of a parse error - it is up to you what to do with the exception object passed to your <code>parse_error</code> implementation. Internally, the <abbr title="Simple API for XML">SAX</abbr> interface is used for the <abbr title="Document Object Model">DOM</abbr> parser (class <code>json_sax_dom_parser</code>) as well as the acceptor (<code>json_sax_acceptor</code>), see file <code>json_sax.hpp</code>.</p> <h2 id=see-also>See also<a class=headerlink href=#see-also title="Permanent link">&para;</a></h2> <ul> <li><a href=../../../api/json_sax/ >json_sax</a> - documentation of the <abbr title="Simple API for XML">SAX</abbr> interface</li> <li><a href=../../../api/basic_json/sax_parse/ >sax_parse</a> - <abbr title="Simple API for XML">SAX</abbr> parser</li> </ul> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 23, 2026 11:16:18 UTC">June 23, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
+</code></pre></div> <p>The return value of each function determines whether parsing should proceed.</p> <p>To implement your own <abbr title="Simple API for XML">SAX</abbr> handler, proceed as follows:</p> <ol> <li>Implement the <abbr title="Simple API for XML">SAX</abbr> interface in a class. You can use class <code>nlohmann::json_sax&lt;json&gt;</code> as base class, but you can also use any class where the functions described above are implemented and public.</li> <li>Create an object of your <abbr title="Simple API for XML">SAX</abbr> interface class, e.g. <code>my_sax</code>.</li> <li>Call <code class=highlight><span class=kt>bool</span><span class=w> </span><span class=nf>json::sax_parse</span><span class=p>(</span><span class=n>input</span><span class=p>,</span><span class=w> </span><span class=o>&amp;</span><span class=n>my_sax</span><span class=p>);</span></code> where the first parameter can be any input like a string or an input stream and the second parameter is a pointer to your <abbr title="Simple API for XML">SAX</abbr> interface.</li> </ol> <p>Note the <code>sax_parse</code> function only returns a <code class=highlight><span class=kt>bool</span></code> indicating the result of the last executed <abbr title="Simple API for XML">SAX</abbr> event. It does not return <code>json</code> value - it is up to you to decide what to do with the <abbr title="Simple API for XML">SAX</abbr> events. Furthermore, no exceptions are thrown in case of a parse error - it is up to you what to do with the exception object passed to your <code>parse_error</code> implementation. Internally, the <abbr title="Simple API for XML">SAX</abbr> interface is used for the <abbr title="Document Object Model">DOM</abbr> parser (class <code>json_sax_dom_parser</code>) as well as the acceptor (<code>json_sax_acceptor</code>), see file <code>json_sax.hpp</code>.</p> <h2 id=see-also>See also<a class=headerlink href=#see-also title="Permanent link">&para;</a></h2> <ul> <li><a href=../../../api/json_sax/ >json_sax</a> - documentation of the <abbr title="Simple API for XML">SAX</abbr> interface</li> <li><a href=../../../api/basic_json/sax_parse/ >sax_parse</a> - <abbr title="Simple API for XML">SAX</abbr> parser</li> </ul> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 29, 2026 20:15:18 UTC">June 29, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
diff --git a/features/trailing_commas/index.html b/features/trailing_commas/index.html
index 62b0824..7ce3f2f 100644
--- a/features/trailing_commas/index.html
+++ b/features/trailing_commas/index.html
@@ -9,7 +9,7 @@
 <span class=w>        </span><span class=s2>&quot;Neptune&quot;</span><span class=p>,</span>
 <span class=w>    </span><span class=p>]</span>
 <span class=p>}</span>
-</code></pre></div> <p>When calling <code>parse</code> without additional argument, a parse error exception is thrown. If <code>ignore_trailing_commas</code> is set to <code>true</code>, the trailing commas are ignored during parsing:</p> <div class=highlight><pre><span></span><code><span class=cp>#include</span><span class=w> </span><span class=cpf>&lt;iostream&gt;</span>
+</code></pre></div> <p>When calling <code>parse</code> without additional argument, a parse error exception is thrown. If <code>ignore_trailing_commas</code> is set to <code class=highlight><span class=nb>true</span></code>, the trailing commas are ignored during parsing:</p> <div class=highlight><pre><span></span><code><span class=cp>#include</span><span class=w> </span><span class=cpf>&lt;iostream&gt;</span>
 <span class=cp>#include</span><span class=w> </span><span class=cpf>&lt;nlohmann/json.hpp&gt;</span>
 
 <span class=k>using</span><span class=w> </span><span class=n>json</span><span class=w> </span><span class=o>=</span><span class=w> </span><span class=n>nlohmann</span><span class=o>::</span><span class=n>json</span><span class=p>;</span>
@@ -58,4 +58,4 @@
     &quot;Neptune&quot;
   ]
 }
-</code></pre></div> </div> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 23, 2026 11:16:18 UTC">June 23, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
+</code></pre></div> </div> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 29, 2026 20:15:18 UTC">June 29, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
diff --git a/features/types/index.html b/features/types/index.html
index 8403641..9177536 100644
--- a/features/types/index.html
+++ b/features/types/index.html
@@ -77,4 +77,4 @@
 <span class=w>  </span><span class=n>basic_json</span><span class=p>,</span><span class=w> </span><span class=c1>// value_type</span>
 <span class=w>  </span><span class=n>std</span><span class=o>::</span><span class=n>allocator</span><span class=o>&lt;</span><span class=n>basic_json</span><span class=o>&gt;</span><span class=w> </span><span class=c1>// allocator_type</span>
 <span class=o>&gt;</span>
-</code></pre></div> <h3 id=limits_1>Limits<a class=headerlink href=#limits_1 title="Permanent link">&para;</a></h3> <p><a href="https://tools.ietf.org/html/rfc8259"><abbr title="Request for Comments">RFC</abbr> 8259</a> specifies:</p> <blockquote> <p>An implementation may set limits on the maximum depth of nesting.</p> </blockquote> <p>In this class, the array's limit of nesting is not explicitly constrained. However, a maximum depth of nesting may be introduced by the compiler or runtime environment. A theoretical limit can be queried by calling the <code>max_size</code> function of a <abbr title="JavaScript Object Notation">JSON</abbr> array.</p> <h3 id=storage_2>Storage<a class=headerlink href=#storage_2 title="Permanent link">&para;</a></h3> <p>Arrays are stored as pointers in a <code>basic_json</code> type. That is, for any access to array values, a pointer of type <code>array_t*</code> must be dereferenced.</p> <h2 id=strings>Strings<a class=headerlink href=#strings title="Permanent link">&para;</a></h2> <p><a href="https://tools.ietf.org/html/rfc8259"><abbr title="Request for Comments">RFC</abbr> 8259</a> describes <abbr title="JavaScript Object Notation">JSON</abbr> strings as follows:</p> <blockquote> <p>A string is a sequence of zero or more Unicode characters.</p> </blockquote> <p>Unicode values are split by the <abbr title="JavaScript Object Notation">JSON</abbr> class into byte-sized characters during deserialization.</p> <h3 id=default-type_2>Default type<a class=headerlink href=#default-type_2 title="Permanent link">&para;</a></h3> <p>With the default values for <em>StringType</em> (<code>std::string</code>), the default value for <code>string_t</code> is <code class=highlight><span class=n>std</span><span class=o>::</span><span class=n>string</span></code>.</p> <h3 id=encoding>Encoding<a class=headerlink href=#encoding title="Permanent link">&para;</a></h3> <p>Strings are stored in <abbr title="Unicode Transformation Format">UTF</abbr>-8 encoding. Therefore, functions like <code>std::string::size()</code> or <code>std::string::length()</code> return the number of <strong>bytes</strong> in the string rather than the number of characters or glyphs.</p> <h3 id=string-comparison>String comparison<a class=headerlink href=#string-comparison title="Permanent link">&para;</a></h3> <p><a href="https://tools.ietf.org/html/rfc8259"><abbr title="Request for Comments">RFC</abbr> 8259</a> states:</p> <blockquote> <p>Software implementations are typically required to test names of object members for equality. Implementations that transform the textual representation into sequences of Unicode code units and then perform the comparison numerically, code unit by code unit are interoperable in the sense that implementations will agree in all cases on equality or inequality of two strings. For example, implementations that compare strings with escaped characters unconverted may incorrectly find that <code>"a\\b"</code> and <code>"a\u005Cb"</code> are not equal.</p> </blockquote> <p>This implementation is interoperable as it does compare strings code unit by code unit.</p> <h3 id=storage_3>Storage<a class=headerlink href=#storage_3 title="Permanent link">&para;</a></h3> <p>String values are stored as pointers in a <code>basic_json</code> type. That is, for any access to string values, a pointer of type <code>string_t*</code> must be dereferenced.</p> <h2 id=booleans>Booleans<a class=headerlink href=#booleans title="Permanent link">&para;</a></h2> <p><a href="https://tools.ietf.org/html/rfc8259"><abbr title="Request for Comments">RFC</abbr> 8259</a> implicitly describes a boolean as a type which differentiates the two literals <code>true</code> and <code>false</code>.</p> <h3 id=default-type_3>Default type<a class=headerlink href=#default-type_3 title="Permanent link">&para;</a></h3> <p>With the default values for <em>BooleanType</em> (<code class=highlight><span class=kt>bool</span></code>), the default value for <code>boolean_t</code> is <code class=highlight><span class=kt>bool</span></code>.</p> <h3 id=storage_4>Storage<a class=headerlink href=#storage_4 title="Permanent link">&para;</a></h3> <p>Boolean values are stored directly inside a <code>basic_json</code> type.</p> <h2 id=numbers>Numbers<a class=headerlink href=#numbers title="Permanent link">&para;</a></h2> <p>See the <a href=number_handling/ >number handling</a> article for a detailed discussion on how numbers are handled by this library.</p> <p><a href="https://tools.ietf.org/html/rfc8259"><abbr title="Request for Comments">RFC</abbr> 8259</a> describes numbers as follows:</p> <blockquote> <p>The representation of numbers is similar to that used in most programming languages. A number is represented in base 10 using decimal digits. It contains an integer component that may be prefixed with an optional minus sign, which may be followed by a fraction part and/or an exponent part. Leading zeros are not allowed. (...) Numeric values that cannot be represented in the grammar below (such as Infinity and <abbr title="Not a Number">NaN</abbr>) are not permitted.</p> </blockquote> <p>This description includes both integer and floating-point numbers. However, C++ allows more precise storage if it is known whether the number is a signed integer, an unsigned integer, or a floating-point number. Therefore, three different types, <code>number_integer_t</code>, <code>number_unsigned_t</code>, and <code>number_float_t</code> are used.</p> <h3 id=default-types>Default types<a class=headerlink href=#default-types title="Permanent link">&para;</a></h3> <p>With the default values for <em>NumberIntegerType</em> (<code>std::int64_t</code>), the default value for <code>number_integer_t</code> is <code>std::int64_t</code>. With the default values for <em>NumberUnsignedType</em> (<code>std::uint64_t</code>), the default value for <code>number_unsigned_t</code> is <code>std::uint64_t</code>. With the default values for <em>NumberFloatType</em> (<code class=highlight><span class=kt>double</span></code>), the default value for <code>number_float_t</code> is <code class=highlight><span class=kt>double</span></code>.</p> <h3 id=default-behavior>Default behavior<a class=headerlink href=#default-behavior title="Permanent link">&para;</a></h3> <ul> <li>The restrictions about leading zeros are not enforced in C++. Instead, leading zeros in integer literals lead to an interpretation as an octal number. Internally, the value will be stored as a decimal number. For instance, the C++ integer literal <code class=highlight><span class=mo>010</span></code> will be serialized to <code class=highlight><span class=mi>8</span></code>. During deserialization, leading zeros yield an error.</li> <li>Not-a-number (<abbr title="Not a Number">NaN</abbr>) values will be serialized to <code class=highlight><span class=kc>null</span></code>.</li> </ul> <h3 id=limits_2>Limits<a class=headerlink href=#limits_2 title="Permanent link">&para;</a></h3> <p><a href="https://tools.ietf.org/html/rfc8259"><abbr title="Request for Comments">RFC</abbr> 8259</a> specifies:</p> <blockquote> <p>An implementation may set limits on the range and precision of numbers.</p> </blockquote> <p>When the default type is used, the maximal integer number that can be stored is <code class=highlight><span class=mi>9223372036854775807</span></code> (<code>INT64_MAX</code>) and the minimal integer number that can be stored is <code class=highlight><span class=mi>-9223372036854775808</span></code> (<code>INT64_MIN</code>). Integer numbers that are out of range will yield over/underflow when used in a constructor. During deserialization, too large or small integer numbers will automatically be stored as <code>number_unsigned_t</code> or <code>number_float_t</code>.</p> <p>When the default type is used, the maximal unsigned integer number that can be stored is <code class=highlight><span class=mi>18446744073709551615</span></code> (<code>UINT64_MAX</code>) and the minimal integer number that can be stored is <code class=highlight><span class=mi>0</span></code>. Integer numbers that are out of range will yield over/underflow when used in a constructor. During deserialization, too large or small integer numbers will automatically be stored as <code>number_integer_t</code> or <code>number_float_t</code>.</p> <p><a href="https://tools.ietf.org/html/rfc8259"><abbr title="Request for Comments">RFC</abbr> 8259</a> further states:</p> <blockquote> <p>Note that when such software is used, numbers that are integers and are in the range <span class=arithmatex><span class=MathJax_Preview>[-2^{53}+1, 2^{53}-1]</span><script type=math/tex>[-2^{53}+1, 2^{53}-1]</script></span> are interoperable in the sense that implementations will agree exactly on their numeric values.</p> </blockquote> <p>As this range is a subrange of the exactly supported range [<code>INT64_MIN</code>, <code>INT64_MAX</code>], this class's integer type is interoperable.</p> <p><a href="https://tools.ietf.org/html/rfc8259"><abbr title="Request for Comments">RFC</abbr> 8259</a> states:</p> <blockquote> <p>This specification allows implementations to set limits on the range and precision of numbers accepted. Since software that implements <abbr title="Institute of Electrical and Electronics Engineers">IEEE</abbr> 754-2008 binary64 (double precision) numbers is generally available and widely used, good interoperability can be achieved by implementations that expect no more precision or range than these provide, in the sense that implementations will approximate <abbr title="JavaScript Object Notation">JSON</abbr> numbers within the expected precision.</p> </blockquote> <p>This implementation does exactly follow this approach, as it uses double precision floating-point numbers. Note values smaller than <code class=highlight><span class=mf>-1.79769313486232e+308</span></code> and values greater than <code class=highlight><span class=mf>1.79769313486232e+308</span></code> will be stored as <abbr title="Not a Number">NaN</abbr> internally and be serialized to <code class=highlight><span class=kc>null</span></code>.</p> <h3 id=storage_5>Storage<a class=headerlink href=#storage_5 title="Permanent link">&para;</a></h3> <p>Integer number values, unsigned integer number values, and floating-point number values are stored directly inside a <code>basic_json</code> type.</p> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 23, 2026 11:16:18 UTC">June 23, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
+</code></pre></div> <h3 id=limits_1>Limits<a class=headerlink href=#limits_1 title="Permanent link">&para;</a></h3> <p><a href="https://tools.ietf.org/html/rfc8259"><abbr title="Request for Comments">RFC</abbr> 8259</a> specifies:</p> <blockquote> <p>An implementation may set limits on the maximum depth of nesting.</p> </blockquote> <p>In this class, the array's limit of nesting is not explicitly constrained. However, a maximum depth of nesting may be introduced by the compiler or runtime environment. A theoretical limit can be queried by calling the <code>max_size</code> function of a <abbr title="JavaScript Object Notation">JSON</abbr> array.</p> <h3 id=storage_2>Storage<a class=headerlink href=#storage_2 title="Permanent link">&para;</a></h3> <p>Arrays are stored as pointers in a <code>basic_json</code> type. That is, for any access to array values, a pointer of type <code>array_t*</code> must be dereferenced.</p> <h2 id=strings>Strings<a class=headerlink href=#strings title="Permanent link">&para;</a></h2> <p><a href="https://tools.ietf.org/html/rfc8259"><abbr title="Request for Comments">RFC</abbr> 8259</a> describes <abbr title="JavaScript Object Notation">JSON</abbr> strings as follows:</p> <blockquote> <p>A string is a sequence of zero or more Unicode characters.</p> </blockquote> <p>Unicode values are split by the <abbr title="JavaScript Object Notation">JSON</abbr> class into byte-sized characters during deserialization.</p> <h3 id=default-type_2>Default type<a class=headerlink href=#default-type_2 title="Permanent link">&para;</a></h3> <p>With the default values for <em>StringType</em> (<code>std::string</code>), the default value for <code>string_t</code> is <code class=highlight><span class=n>std</span><span class=o>::</span><span class=n>string</span></code>.</p> <h3 id=encoding>Encoding<a class=headerlink href=#encoding title="Permanent link">&para;</a></h3> <p>Strings are stored in <abbr title="Unicode Transformation Format">UTF</abbr>-8 encoding. Therefore, functions like <code>std::string::size()</code> or <code>std::string::length()</code> return the number of <strong>bytes</strong> in the string rather than the number of characters or glyphs.</p> <h3 id=string-comparison>String comparison<a class=headerlink href=#string-comparison title="Permanent link">&para;</a></h3> <p><a href="https://tools.ietf.org/html/rfc8259"><abbr title="Request for Comments">RFC</abbr> 8259</a> states:</p> <blockquote> <p>Software implementations are typically required to test names of object members for equality. Implementations that transform the textual representation into sequences of Unicode code units and then perform the comparison numerically, code unit by code unit are interoperable in the sense that implementations will agree in all cases on equality or inequality of two strings. For example, implementations that compare strings with escaped characters unconverted may incorrectly find that <code>"a\\b"</code> and <code>"a\u005Cb"</code> are not equal.</p> </blockquote> <p>This implementation is interoperable as it does compare strings code unit by code unit.</p> <h3 id=storage_3>Storage<a class=headerlink href=#storage_3 title="Permanent link">&para;</a></h3> <p>String values are stored as pointers in a <code>basic_json</code> type. That is, for any access to string values, a pointer of type <code>string_t*</code> must be dereferenced.</p> <h2 id=booleans>Booleans<a class=headerlink href=#booleans title="Permanent link">&para;</a></h2> <p><a href="https://tools.ietf.org/html/rfc8259"><abbr title="Request for Comments">RFC</abbr> 8259</a> implicitly describes a boolean as a type which differentiates the two literals <code>true</code> and <code>false</code>.</p> <h3 id=default-type_3>Default type<a class=headerlink href=#default-type_3 title="Permanent link">&para;</a></h3> <p>With the default values for <em>BooleanType</em> (<code class=highlight><span class=kt>bool</span></code>), the default value for <code>boolean_t</code> is <code class=highlight><span class=kt>bool</span></code>.</p> <h3 id=storage_4>Storage<a class=headerlink href=#storage_4 title="Permanent link">&para;</a></h3> <p>Boolean values are stored directly inside a <code>basic_json</code> type.</p> <h2 id=numbers>Numbers<a class=headerlink href=#numbers title="Permanent link">&para;</a></h2> <p>See the <a href=number_handling/ >number handling</a> article for a detailed discussion on how numbers are handled by this library.</p> <p><a href="https://tools.ietf.org/html/rfc8259"><abbr title="Request for Comments">RFC</abbr> 8259</a> describes numbers as follows:</p> <blockquote> <p>The representation of numbers is similar to that used in most programming languages. A number is represented in base 10 using decimal digits. It contains an integer component that may be prefixed with an optional minus sign, which may be followed by a fraction part and/or an exponent part. Leading zeros are not allowed. (...) Numeric values that cannot be represented in the grammar below (such as Infinity and <abbr title="Not a Number">NaN</abbr>) are not permitted.</p> </blockquote> <p>This description includes both integer and floating-point numbers. However, C++ allows more precise storage if it is known whether the number is a signed integer, an unsigned integer, or a floating-point number. Therefore, three different types, <code>number_integer_t</code>, <code>number_unsigned_t</code>, and <code>number_float_t</code> are used.</p> <h3 id=default-types>Default types<a class=headerlink href=#default-types title="Permanent link">&para;</a></h3> <p>With the default values for <em>NumberIntegerType</em> (<code>std::int64_t</code>), the default value for <code>number_integer_t</code> is <code>std::int64_t</code>. With the default values for <em>NumberUnsignedType</em> (<code>std::uint64_t</code>), the default value for <code>number_unsigned_t</code> is <code>std::uint64_t</code>. With the default values for <em>NumberFloatType</em> (<code class=highlight><span class=kt>double</span></code>), the default value for <code>number_float_t</code> is <code class=highlight><span class=kt>double</span></code>.</p> <h3 id=default-behavior>Default behavior<a class=headerlink href=#default-behavior title="Permanent link">&para;</a></h3> <ul> <li>The restrictions about leading zeros are not enforced in C++. Instead, leading zeros in integer literals lead to an interpretation as an octal number. Internally, the value will be stored as a decimal number. For instance, the C++ integer literal <code class=highlight><span class=mo>010</span></code> will be serialized to <code class=highlight><span class=mi>8</span></code>. During deserialization, leading zeros yield an error.</li> <li>Not-a-number (<abbr title="Not a Number">NaN</abbr>) values will be serialized to <code class=highlight><span class=kc>null</span></code>.</li> </ul> <h3 id=limits_2>Limits<a class=headerlink href=#limits_2 title="Permanent link">&para;</a></h3> <p><a href="https://tools.ietf.org/html/rfc8259"><abbr title="Request for Comments">RFC</abbr> 8259</a> specifies:</p> <blockquote> <p>An implementation may set limits on the range and precision of numbers.</p> </blockquote> <p>When the default type is used, the maximal integer number that can be stored is <code class=highlight><span class=mi>9223372036854775807</span></code> (<code>INT64_MAX</code>) and the minimal integer number that can be stored is <code class=highlight><span class=mi>-9223372036854775808</span></code> (<code>INT64_MIN</code>). Integer numbers that are out of range will yield over/underflow when used in a constructor. During deserialization, too large or small integer numbers will automatically be stored as <code>number_unsigned_t</code> or <code>number_float_t</code>.</p> <p>When the default type is used, the maximal unsigned integer number that can be stored is <code class=highlight><span class=mi>18446744073709551615</span></code> (<code>UINT64_MAX</code>) and the minimal integer number that can be stored is <code class=highlight><span class=mi>0</span></code>. Integer numbers that are out of range will yield over/underflow when used in a constructor. During deserialization, too large or small integer numbers will automatically be stored as <code>number_integer_t</code> or <code>number_float_t</code>.</p> <p><a href="https://tools.ietf.org/html/rfc8259"><abbr title="Request for Comments">RFC</abbr> 8259</a> further states:</p> <blockquote> <p>Note that when such software is used, numbers that are integers and are in the range <span class=arithmatex><span class=MathJax_Preview>[-2^{53}+1, 2^{53}-1]</span><script type=math/tex>[-2^{53}+1, 2^{53}-1]</script></span> are interoperable in the sense that implementations will agree exactly on their numeric values.</p> </blockquote> <p>As this range is a subrange of the exactly supported range [<code>INT64_MIN</code>, <code>INT64_MAX</code>], this class's integer type is interoperable.</p> <p><a href="https://tools.ietf.org/html/rfc8259"><abbr title="Request for Comments">RFC</abbr> 8259</a> states:</p> <blockquote> <p>This specification allows implementations to set limits on the range and precision of numbers accepted. Since software that implements <abbr title="Institute of Electrical and Electronics Engineers">IEEE</abbr> 754-2008 binary64 (double precision) numbers is generally available and widely used, good interoperability can be achieved by implementations that expect no more precision or range than these provide, in the sense that implementations will approximate <abbr title="JavaScript Object Notation">JSON</abbr> numbers within the expected precision.</p> </blockquote> <p>This implementation does exactly follow this approach, as it uses double precision floating-point numbers. Note values smaller than <code class=highlight><span class=mf>-1.79769313486232e+308</span></code> and values greater than <code class=highlight><span class=mf>1.79769313486232e+308</span></code> will be stored as <abbr title="Not a Number">NaN</abbr> internally and be serialized to <code class=highlight><span class=kc>null</span></code>.</p> <h3 id=storage_5>Storage<a class=headerlink href=#storage_5 title="Permanent link">&para;</a></h3> <p>Integer number values, unsigned integer number values, and floating-point number values are stored directly inside a <code>basic_json</code> type.</p> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 29, 2026 20:15:18 UTC">June 29, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
diff --git a/features/types/number_handling/index.html b/features/types/number_handling/index.html
index 0f654b3..a211e10 100644
--- a/features/types/number_handling/index.html
+++ b/features/types/number_handling/index.html
@@ -54,4 +54,4 @@
 <span class=p>}</span>
 </code></pre></div> <p>Note this approach also has the advantage that it can react on non-numerical <abbr title="JavaScript Object Notation">JSON</abbr> value types such as strings.</p> <p>(Example taken from <a href="https://github.com/nlohmann/json/issues/777#issuecomment-459968458">#777</a>.)</p> </div> <h3 id=determine-number-types>Determine number types<a class=headerlink href=#determine-number-types title="Permanent link">&para;</a></h3> <p>As the example in <a href=#number-conversion>Number conversion</a> shows, there are different functions to determine the type of the stored number:</p> <ul> <li><a href=../../../api/basic_json/is_number/ ><code>is_number()</code></a> returns <code class=highlight><span class=nb>true</span></code> for any number type</li> <li><a href=../../../api/basic_json/is_number_integer/ ><code>is_number_integer()</code></a> returns <code class=highlight><span class=nb>true</span></code> for signed and unsigned integers</li> <li><a href=../../../api/basic_json/is_number_unsigned/ ><code>is_number_unsigned()</code></a> returns <code class=highlight><span class=nb>true</span></code> for unsigned integers only</li> <li><a href=../../../api/basic_json/is_number_float/ ><code>is_number_float()</code></a> returns <code class=highlight><span class=nb>true</span></code> for floating-point numbers</li> <li><a href=../../../api/basic_json/type_name/ ><code>type_name()</code></a> returns <code class=highlight><span class=s>&quot;number&quot;</span></code> for any number type</li> <li><a href=../../../api/basic_json/type/ ><code>type()</code></a> returns a different enumerator of <a href=../../../api/basic_json/value_t/ ><code>value_t</code></a> for all number types</li> </ul> <table> <thead> <tr> <th>function</th> <th>unsigned integer</th> <th>signed integer</th> <th>floating-point</th> <th>string</th> </tr> </thead> <tbody> <tr> <td><a href=../../../api/basic_json/is_number/ ><code>is_number()</code></a></td> <td><code class=highlight><span class=nb>true</span></code></td> <td><code class=highlight><span class=nb>true</span></code></td> <td><code class=highlight><span class=nb>true</span></code></td> <td><code class=highlight><span class=nb>false</span></code></td> </tr> <tr> <td><a href=../../../api/basic_json/is_number_integer/ ><code>is_number_integer()</code></a></td> <td><code class=highlight><span class=nb>true</span></code></td> <td><code class=highlight><span class=nb>true</span></code></td> <td><code class=highlight><span class=nb>false</span></code></td> <td><code class=highlight><span class=nb>false</span></code></td> </tr> <tr> <td><a href=../../../api/basic_json/is_number_unsigned/ ><code>is_number_unsigned()</code></a></td> <td><code class=highlight><span class=nb>true</span></code></td> <td><code class=highlight><span class=nb>false</span></code></td> <td><code class=highlight><span class=nb>false</span></code></td> <td><code class=highlight><span class=nb>false</span></code></td> </tr> <tr> <td><a href=../../../api/basic_json/is_number_float/ ><code>is_number_float()</code></a></td> <td><code class=highlight><span class=nb>false</span></code></td> <td><code class=highlight><span class=nb>false</span></code></td> <td><code class=highlight><span class=nb>true</span></code></td> <td><code class=highlight><span class=nb>false</span></code></td> </tr> <tr> <td><a href=../../../api/basic_json/type_name/ ><code>type_name()</code></a></td> <td><code class=highlight><span class=s>&quot;number&quot;</span></code></td> <td><code class=highlight><span class=s>&quot;number&quot;</span></code></td> <td><code class=highlight><span class=s>&quot;number&quot;</span></code></td> <td><code class=highlight><span class=s>&quot;string&quot;</span></code></td> </tr> <tr> <td><a href=../../../api/basic_json/type/ ><code>type()</code></a></td> <td><code>number_unsigned</code></td> <td><code>number_integer</code></td> <td><code>number_float</code></td> <td><code>string</code></td> </tr> </tbody> </table> <h3 id=template-number-types>Template number types<a class=headerlink href=#template-number-types title="Permanent link">&para;</a></h3> <p>The number types can be changed with template parameters.</p> <table> <thead> <tr> <th>position</th> <th>number type</th> <th>default type</th> <th>possible values</th> </tr> </thead> <tbody> <tr> <td>5</td> <td>signed integers</td> <td><code class=highlight><span class=n>std</span><span class=o>::</span><span class=kt>int64_t</span></code></td> <td><code class=highlight><span class=n>std</span><span class=o>::</span><span class=kt>int32_t</span></code>, <code class=highlight><span class=n>std</span><span class=o>::</span><span class=kt>int16_t</span></code>, etc.</td> </tr> <tr> <td>6</td> <td>unsigned integers</td> <td><code class=highlight><span class=n>std</span><span class=o>::</span><span class=kt>uint64_t</span></code></td> <td><code class=highlight><span class=n>std</span><span class=o>::</span><span class=kt>uint32_t</span></code>, <code class=highlight><span class=n>std</span><span class=o>::</span><span class=kt>uint16_t</span></code>, etc.</td> </tr> <tr> <td>7</td> <td>floating-point</td> <td><code class=highlight><span class=kt>double</span></code></td> <td><code class=highlight><span class=kt>float</span></code>, <code class=highlight><span class=kt>long</span><span class=w> </span><span class=kt>double</span></code></td> </tr> </tbody> </table> <div class="admonition info"> <p class=admonition-title>Constraints on number types</p> <ul> <li>The type for signed integers must be convertible from <code class=highlight><span class=kt>long</span><span class=w> </span><span class=kt>long</span></code>. The type for floating-point numbers is used in case of overflow.</li> <li>The type for unsigned integers must be convertible from <code class=highlight><span class=kt>unsigned</span><span class=w> </span><span class=kt>long</span><span class=w> </span><span class=kt>long</span></code>. The type for floating-point numbers is used in case of overflow.</li> <li>The types for signed and unsigned integers must be distinct, see <a href="https://github.com/nlohmann/json/issues/2573">#2573</a>.</li> <li>Only <code class=highlight><span class=kt>double</span></code>, <code class=highlight><span class=kt>float</span></code>, and <code class=highlight><span class=kt>long</span><span class=w> </span><span class=kt>double</span></code> are supported for floating-point numbers.</li> </ul> </div> <div class="admonition example"> <p class=admonition-title>Example</p> <p>A <code>basic_json</code> type that uses <code class=highlight><span class=kt>long</span><span class=w> </span><span class=kt>double</span></code> as floating-point type.</p> <div class=highlight><pre><span></span><code><span class=k>using</span><span class=w> </span><span class=n>json_ld</span><span class=w> </span><span class=o>=</span><span class=w> </span><span class=n>nlohmann</span><span class=o>::</span><span class=n>basic_json</span><span class=o>&lt;</span><span class=n>std</span><span class=o>::</span><span class=n>map</span><span class=p>,</span><span class=w> </span><span class=n>std</span><span class=o>::</span><span class=n>vector</span><span class=p>,</span><span class=w> </span><span class=n>std</span><span class=o>::</span><span class=n>string</span><span class=p>,</span><span class=w> </span><span class=kt>bool</span><span class=p>,</span>
 <span class=hll><span class=w>                                     </span><span class=n>std</span><span class=o>::</span><span class=kt>int64_t</span><span class=p>,</span><span class=w> </span><span class=n>std</span><span class=o>::</span><span class=kt>uint64_t</span><span class=p>,</span><span class=w> </span><span class=kt>long</span><span class=w> </span><span class=kt>double</span><span class=o>&gt;</span><span class=p>;</span>
-</span></code></pre></div> <p>Note values should then be parsed with <code>json_ld::parse</code> rather than <code>json::parse</code> as the latter would parse floating-point values to <code class=highlight><span class=kt>double</span></code> before then converting them to <code class=highlight><span class=kt>long</span><span class=w> </span><span class=kt>double</span></code>.</p> </div> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 23, 2026 11:16:18 UTC">June 23, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
+</span></code></pre></div> <p>Note values should then be parsed with <code>json_ld::parse</code> rather than <code>json::parse</code> as the latter would parse floating-point values to <code class=highlight><span class=kt>double</span></code> before then converting them to <code class=highlight><span class=kt>long</span><span class=w> </span><span class=kt>double</span></code>.</p> </div> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 29, 2026 20:15:18 UTC">June 29, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
diff --git a/home/architecture/index.html b/home/architecture/index.html
index 23d1468..80482c6 100644
--- a/home/architecture/index.html
+++ b/home/architecture/index.html
@@ -52,4 +52,4 @@
 
 <span class=k>template</span><span class=o>&lt;</span><span class=k>class</span><span class=w> </span><span class=nc>T</span><span class=o>&gt;</span>
 <span class=kt>void</span><span class=w> </span><span class=n>from_json</span><span class=p>(</span><span class=k>const</span><span class=w> </span><span class=n>basic_json</span><span class=o>&amp;</span><span class=w> </span><span class=n>j</span><span class=p>,</span><span class=w> </span><span class=n>T</span><span class=o>&amp;</span><span class=w> </span><span class=n>t</span><span class=p>);</span>
-</code></pre></div> <h2 id=additional-features>Additional features<a class=headerlink href=#additional-features title="Permanent link">&para;</a></h2> <ul> <li><abbr title="JavaScript Object Notation">JSON</abbr> Pointers</li> <li>Binary formats</li> <li>Custom base class</li> <li>Conversion macros</li> </ul> <h2 id=details-namespace>Details namespace<a class=headerlink href=#details-namespace title="Permanent link">&para;</a></h2> <ul> <li>C++ feature backports</li> </ul> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 23, 2026 11:16:18 UTC">June 23, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
+</code></pre></div> <h2 id=additional-features>Additional features<a class=headerlink href=#additional-features title="Permanent link">&para;</a></h2> <ul> <li><abbr title="JavaScript Object Notation">JSON</abbr> Pointers</li> <li>Binary formats</li> <li>Custom base class</li> <li>Conversion macros</li> </ul> <h2 id=details-namespace>Details namespace<a class=headerlink href=#details-namespace title="Permanent link">&para;</a></h2> <ul> <li>C++ feature backports</li> </ul> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 29, 2026 20:15:18 UTC">June 29, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
diff --git a/home/customers/index.html b/home/customers/index.html
index 8e7f2f0..7f5d065 100644
--- a/home/customers/index.html
+++ b/home/customers/index.html
@@ -1 +1 @@
-<!doctype html><html lang=en class=no-js> <head><meta charset=utf-8><meta name=viewport content="width=device-width,initial-scale=1"><meta name=author content="Niels Lohmann"><link href="https://json.nlohmann.me/home/customers/" rel="canonical"><link href=../architecture/ rel=prev><link href=../sponsors/ rel=next><link rel=icon href=../../assets/images/favicon.png><meta name=generator content="mkdocs-1.6.1, mkdocs-material-9.7.6"><title>Customers - JSON for Modern C++</title><link rel=stylesheet href=../../assets/stylesheets/main.484c7ddc.min.css><link rel=stylesheet href=../../assets/stylesheets/palette.ab4e12ef.min.css><link rel="stylesheet" href="../../assets/external/fonts.googleapis.com/css.61a430c9.css"><style>:root{--md-text-font:"Roboto";--md-code-font:"JetBrains Mono"}</style><link rel=stylesheet href=../../css/custom.css><script>__md_scope=new URL("../..",location),__md_hash=e=>[...e].reduce(((e,_)=>(e<<5)-e+_.charCodeAt(0)),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script></head> <body dir=ltr data-md-color-scheme=default data-md-color-primary=indigo data-md-color-accent=indigo> <input class=md-toggle data-md-toggle=drawer type=checkbox id=__drawer autocomplete=off> <input class=md-toggle data-md-toggle=search type=checkbox id=__search autocomplete=off> <label class=md-overlay for=__drawer></label> <div data-md-component=skip> <a href=#customers class=md-skip> Skip to content </a> </div> <div data-md-component=announce> </div> <header class=md-header data-md-component=header> <nav class="md-header__inner md-grid" aria-label=Header> <a href=../.. title="JSON for Modern C++" class="md-header__button md-logo" aria-label="JSON for Modern C++" data-md-component=logo> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54"/></svg> </a> <label class="md-header__button md-icon" for=__drawer> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M3 6h18v2H3zm0 5h18v2H3zm0 5h18v2H3z"/></svg> </label> <div class=md-header__title data-md-component=header-title> <div class=md-header__ellipsis> <div class=md-header__topic> <span class=md-ellipsis> JSON for Modern C++ </span> </div> <div class=md-header__topic data-md-component=header-topic> <span class=md-ellipsis> Customers </span> </div> </div> </div> <form class=md-header__option data-md-component=palette> <input class=md-option data-md-color-media="(prefers-color-scheme: light)" data-md-color-scheme=default data-md-color-primary=indigo data-md-color-accent=indigo aria-label="Switch to dark mode" type=radio name=__palette id=__palette_0> <label class="md-header__button md-icon" title="Switch to dark mode" for=__palette_1 hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a4 4 0 0 0-4 4 4 4 0 0 0 4 4 4 4 0 0 0 4-4 4 4 0 0 0-4-4m0 10a6 6 0 0 1-6-6 6 6 0 0 1 6-6 6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12z"/></svg> </label> <input class=md-option data-md-color-media="(prefers-color-scheme: dark)" data-md-color-scheme=slate data-md-color-primary=indigo data-md-color-accent=indigo aria-label="Switch to light mode" type=radio name=__palette id=__palette_1> <label class="md-header__button md-icon" title="Switch to light mode" for=__palette_0 hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 18c-.89 0-1.74-.2-2.5-.55C11.56 16.5 13 14.42 13 12s-1.44-4.5-3.5-5.45C10.26 6.2 11.11 6 12 6a6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12z"/></svg> </label> </form> <script>var palette=__md_get("__palette");if(palette&&palette.color){if("(prefers-color-scheme)"===palette.color.media){var media=matchMedia("(prefers-color-scheme: light)"),input=document.querySelector(media.matches?"[data-md-color-media='(prefers-color-scheme: light)']":"[data-md-color-media='(prefers-color-scheme: dark)']");palette.color.media=input.getAttribute("data-md-color-media"),palette.color.scheme=input.getAttribute("data-md-color-scheme"),palette.color.primary=input.getAttribute("data-md-color-primary"),palette.color.accent=input.getAttribute("data-md-color-accent")}for(var[key,value]of Object.entries(palette.color))document.body.setAttribute("data-md-color-"+key,value)}</script> <label class="md-header__button md-icon" for=__search> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg> </label> <div class=md-search data-md-component=search role=dialog> <label class=md-search__overlay for=__search></label> <div class=md-search__inner role=search> <form class=md-search__form name=search> <input type=text class=md-search__input name=query aria-label=Search placeholder=Search autocapitalize=off autocorrect=off autocomplete=off spellcheck=false data-md-component=search-query required> <label class="md-search__icon md-icon" for=__search> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11z"/></svg> </label> <nav class=md-search__options aria-label=Search> <button type=reset class="md-search__icon md-icon" title=Clear aria-label=Clear tabindex=-1> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z"/></svg> </button> </nav> </form> <div class=md-search__output> <div class=md-search__scrollwrap tabindex=0 data-md-scrollfix> <div class=md-search-result data-md-component=search-result> <div class=md-search-result__meta> Initializing search </div> <ol class=md-search-result__list role=presentation></ol> </div> </div> </div> </div> </div> <div class=md-header__source> <a href="https://github.com/nlohmann/json" title="Go to repository" class="md-source" data-md-component="source"> <div class="md-source__icon md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </div> <div class=md-source__repository> nlohmann/json </div> </a> </div> </nav> </header> <div class=md-container data-md-component=container> <nav class=md-tabs aria-label=Tabs data-md-component=tabs> <div class=md-grid> <ul class=md-tabs__list> <li class="md-tabs__item md-tabs__item--active"> <a href=../.. class=md-tabs__link> Home </a> </li> <li class=md-tabs__item> <a href=../../features/arbitrary_types/ class=md-tabs__link> Features </a> </li> <li class=md-tabs__item> <a href=../../integration/ class=md-tabs__link> Integration </a> </li> <li class=md-tabs__item> <a href=../../api/basic_json/ class=md-tabs__link> API Documentation </a> </li> <li class=md-tabs__item> <a href=../../community/ class=md-tabs__link> Community </a> </li> </ul> </div> </nav> <main class=md-main data-md-component=main> <div class="md-main__inner md-grid"> <div class="md-sidebar md-sidebar--primary" data-md-component=sidebar data-md-type=navigation> <div class=md-sidebar__scrollwrap> <div class=md-sidebar__inner> <nav class="md-nav md-nav--primary md-nav--lifted" aria-label=Navigation data-md-level=0> <label class=md-nav__title for=__drawer> <a href=../.. title="JSON for Modern C++" class="md-nav__button md-logo" aria-label="JSON for Modern C++" data-md-component=logo> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54"/></svg> </a> JSON for Modern C++ </label> <div class=md-nav__source> <a href="https://github.com/nlohmann/json" title="Go to repository" class="md-source" data-md-component="source"> <div class="md-source__icon md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </div> <div class=md-source__repository> nlohmann/json </div> </a> </div> <ul class=md-nav__list data-md-scrollfix> <li class="md-nav__item md-nav__item--active md-nav__item--section md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_1 checked> <div class="md-nav__link md-nav__container"> <a href=../.. class="md-nav__link "> <span class=md-ellipsis> Home </span> </a> <label class="md-nav__link " for=__nav_1 id=__nav_1_label tabindex> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_1_label aria-expanded=true> <label class=md-nav__title for=__nav_1> <span class="md-nav__icon md-icon"></span> Home </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../license/ class=md-nav__link> <span class=md-ellipsis> License </span> </a> </li> <li class=md-nav__item> <a href=../faq/ class=md-nav__link> <span class=md-ellipsis> FAQ </span> </a> </li> <li class=md-nav__item> <a href=../exceptions/ class=md-nav__link> <span class=md-ellipsis> Exceptions </span> </a> </li> <li class=md-nav__item> <a href=../releases/ class=md-nav__link> <span class=md-ellipsis> Releases </span> </a> </li> <li class=md-nav__item> <a href=../design_goals/ class=md-nav__link> <span class=md-ellipsis> Design goals </span> </a> </li> <li class=md-nav__item> <a href=../architecture/ class=md-nav__link> <span class=md-ellipsis> Architecture </span> </a> </li> <li class="md-nav__item md-nav__item--active"> <input class="md-nav__toggle md-toggle" type=checkbox id=__toc> <label class="md-nav__link md-nav__link--active" for=__toc> <span class=md-ellipsis> Customers </span> <span class="md-nav__icon md-icon"></span> </label> <a href=./ class="md-nav__link md-nav__link--active"> <span class=md-ellipsis> Customers </span> </a> <nav class="md-nav md-nav--secondary" aria-label="Table of contents"> <label class=md-nav__title for=__toc> <span class="md-nav__icon md-icon"></span> Table of contents </label> <ul class=md-nav__list data-md-component=toc data-md-scrollfix> <li class=md-nav__item> <a href=#space-exploration class=md-nav__link> <span class=md-ellipsis> Space Exploration </span> </a> </li> <li class=md-nav__item> <a href=#automotive class=md-nav__link> <span class=md-ellipsis> Automotive </span> </a> </li> <li class=md-nav__item> <a href=#gaming-and-entertainment class=md-nav__link> <span class=md-ellipsis> Gaming and Entertainment </span> </a> </li> <li class=md-nav__item> <a href=#consumer-electronics class=md-nav__link> <span class=md-ellipsis> Consumer Electronics </span> </a> </li> <li class=md-nav__item> <a href=#operating-systems class=md-nav__link> <span class=md-ellipsis> Operating Systems </span> </a> </li> <li class=md-nav__item> <a href=#development-tools-and-ides class=md-nav__link> <span class=md-ellipsis> Development Tools and IDEs </span> </a> </li> <li class=md-nav__item> <a href=#machine-learning-and-ai class=md-nav__link> <span class=md-ellipsis> Machine Learning and AI </span> </a> </li> <li class=md-nav__item> <a href=#scientific-research-and-analysis class=md-nav__link> <span class=md-ellipsis> Scientific Research and Analysis </span> </a> </li> <li class=md-nav__item> <a href=#business-and-productivity-software class=md-nav__link> <span class=md-ellipsis> Business and Productivity Software </span> </a> </li> <li class=md-nav__item> <a href=#databases-and-big-data class=md-nav__link> <span class=md-ellipsis> Databases and Big Data </span> </a> </li> <li class=md-nav__item> <a href=#simulation-and-modeling class=md-nav__link> <span class=md-ellipsis> Simulation and Modeling </span> </a> </li> <li class=md-nav__item> <a href=#enterprise-and-cloud-applications class=md-nav__link> <span class=md-ellipsis> Enterprise and Cloud Applications </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../sponsors/ class=md-nav__link> <span class=md-ellipsis> Sponsors </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2> <label class=md-nav__link for=__nav_2 id=__nav_2_label tabindex=0> <span class=md-ellipsis> Features </span> <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_2_label aria-expanded=false> <label class=md-nav__title for=__nav_2> <span class="md-nav__icon md-icon"></span> Features </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../features/arbitrary_types/ class=md-nav__link> <span class=md-ellipsis> Arbitrary Type Conversions </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_2> <div class="md-nav__link md-nav__container"> <a href=../../features/binary_formats/ class="md-nav__link "> <span class=md-ellipsis> Binary Formats </span> </a> <label class="md-nav__link " for=__nav_2_2 id=__nav_2_2_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_2_label aria-expanded=false> <label class=md-nav__title for=__nav_2_2> <span class="md-nav__icon md-icon"></span> Binary Formats </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../features/binary_formats/bjdata/ class=md-nav__link> <span class=md-ellipsis> BJData </span> </a> </li> <li class=md-nav__item> <a href=../../features/binary_formats/bson/ class=md-nav__link> <span class=md-ellipsis> BSON </span> </a> </li> <li class=md-nav__item> <a href=../../features/binary_formats/cbor/ class=md-nav__link> <span class=md-ellipsis> CBOR </span> </a> </li> <li class=md-nav__item> <a href=../../features/binary_formats/messagepack/ class=md-nav__link> <span class=md-ellipsis> MessagePack </span> </a> </li> <li class=md-nav__item> <a href=../../features/binary_formats/ubjson/ class=md-nav__link> <span class=md-ellipsis> UBJSON </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../features/binary_values/ class=md-nav__link> <span class=md-ellipsis> Binary Values </span> </a> </li> <li class=md-nav__item> <a href=../../features/comments/ class=md-nav__link> <span class=md-ellipsis> Comments </span> </a> </li> <li class=md-nav__item> <a href=../../features/trailing_commas/ class=md-nav__link> <span class=md-ellipsis> Trailing Commas </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_6> <div class="md-nav__link md-nav__container"> <a href=../../features/element_access/ class="md-nav__link "> <span class=md-ellipsis> Element Access </span> </a> <label class="md-nav__link " for=__nav_2_6 id=__nav_2_6_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_6_label aria-expanded=false> <label class=md-nav__title for=__nav_2_6> <span class="md-nav__icon md-icon"></span> Element Access </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../features/element_access/unchecked_access/ class=md-nav__link> <span class=md-ellipsis> Unchecked access: operator[] </span> </a> </li> <li class=md-nav__item> <a href=../../features/element_access/checked_access/ class=md-nav__link> <span class=md-ellipsis> Checked access: at </span> </a> </li> <li class=md-nav__item> <a href=../../features/element_access/default_value/ class=md-nav__link> <span class=md-ellipsis> Access with default value: value </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../features/iterators/ class=md-nav__link> <span class=md-ellipsis> Iterators </span> </a> </li> <li class=md-nav__item> <a href=../../features/json_pointer/ class=md-nav__link> <span class=md-ellipsis> JSON Pointer </span> </a> </li> <li class=md-nav__item> <a href=../../features/json_patch/ class=md-nav__link> <span class=md-ellipsis> JSON Patch and Diff </span> </a> </li> <li class=md-nav__item> <a href=../../features/merge_patch/ class=md-nav__link> <span class=md-ellipsis> JSON Merge Patch </span> </a> </li> <li class=md-nav__item> <a href=../../features/modules/ class=md-nav__link> <span class=md-ellipsis> Modules </span> </a> </li> <li class=md-nav__item> <a href=../../features/namespace/ class=md-nav__link> <span class=md-ellipsis> nlohmann Namespace </span> </a> </li> <li class=md-nav__item> <a href=../../features/object_order/ class=md-nav__link> <span class=md-ellipsis> Object Order </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_14> <div class="md-nav__link md-nav__container"> <a href=../../features/parsing/ class="md-nav__link "> <span class=md-ellipsis> Parsing </span> </a> <label class="md-nav__link " for=__nav_2_14 id=__nav_2_14_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_14_label aria-expanded=false> <label class=md-nav__title for=__nav_2_14> <span class="md-nav__icon md-icon"></span> Parsing </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../features/parsing/json_lines/ class=md-nav__link> <span class=md-ellipsis> JSON Lines </span> </a> </li> <li class=md-nav__item> <a href=../../features/parsing/parse_exceptions/ class=md-nav__link> <span class=md-ellipsis> Parsing and Exceptions </span> </a> </li> <li class=md-nav__item> <a href=../../features/parsing/parser_callbacks/ class=md-nav__link> <span class=md-ellipsis> Parser Callbacks </span> </a> </li> <li class=md-nav__item> <a href=../../features/parsing/sax_interface/ class=md-nav__link> <span class=md-ellipsis> SAX Interface </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../features/assertions/ class=md-nav__link> <span class=md-ellipsis> Runtime Assertions </span> </a> </li> <li class=md-nav__item> <a href=../../features/enum_conversion/ class=md-nav__link> <span class=md-ellipsis> Specializing enum conversion </span> </a> </li> <li class=md-nav__item> <a href=../../features/macros/ class=md-nav__link> <span class=md-ellipsis> Supported Macros </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_18> <div class="md-nav__link md-nav__container"> <a href=../../features/types/ class="md-nav__link "> <span class=md-ellipsis> Types </span> </a> <label class="md-nav__link " for=__nav_2_18 id=__nav_2_18_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_18_label aria-expanded=false> <label class=md-nav__title for=__nav_2_18> <span class="md-nav__icon md-icon"></span> Types </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../features/types/number_handling/ class=md-nav__link> <span class=md-ellipsis> Number Handling </span> </a> </li> </ul> </nav> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_3> <div class="md-nav__link md-nav__container"> <a href=../../integration/ class="md-nav__link "> <span class=md-ellipsis> Integration </span> </a> <label class="md-nav__link " for=__nav_3 id=__nav_3_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_3_label aria-expanded=false> <label class=md-nav__title for=__nav_3> <span class="md-nav__icon md-icon"></span> Integration </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../integration/migration_guide/ class=md-nav__link> <span class=md-ellipsis> Migration Guide </span> </a> </li> <li class=md-nav__item> <a href=../../integration/cmake/ class=md-nav__link> <span class=md-ellipsis> CMake </span> </a> </li> <li class=md-nav__item> <a href=../../integration/package_managers/ class=md-nav__link> <span class=md-ellipsis> Package Managers </span> </a> </li> <li class=md-nav__item> <a href=../../integration/pkg-config/ class=md-nav__link> <span class=md-ellipsis> Pkg-config </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4> <label class=md-nav__link for=__nav_4 id=__nav_4_label tabindex=0> <span class=md-ellipsis> API Documentation </span> <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_4_label aria-expanded=false> <label class=md-nav__title for=__nav_4> <span class="md-nav__icon md-icon"></span> API Documentation </label> <ul class=md-nav__list data-md-scrollfix> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_1> <div class="md-nav__link md-nav__container"> <a href=../../api/basic_json/ class="md-nav__link "> <span class=md-ellipsis> basic_json </span> </a> <label class="md-nav__link " for=__nav_4_1 id=__nav_4_1_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_1_label aria-expanded=false> <label class=md-nav__title for=__nav_4_1> <span class="md-nav__icon md-icon"></span> basic_json </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../api/basic_json/basic_json/ class=md-nav__link> <span class=md-ellipsis> (Constructor) </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/~basic_json/ class=md-nav__link> <span class=md-ellipsis> (Destructor) </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/accept/ class=md-nav__link> <span class=md-ellipsis> accept </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/array/ class=md-nav__link> <span class=md-ellipsis> array </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/array_t/ class=md-nav__link> <span class=md-ellipsis> array_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/at/ class=md-nav__link> <span class=md-ellipsis> at </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/back/ class=md-nav__link> <span class=md-ellipsis> back </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/begin/ class=md-nav__link> <span class=md-ellipsis> begin </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/binary/ class=md-nav__link> <span class=md-ellipsis> binary </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/binary_t/ class=md-nav__link> <span class=md-ellipsis> binary_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/boolean_t/ class=md-nav__link> <span class=md-ellipsis> boolean_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/cbegin/ class=md-nav__link> <span class=md-ellipsis> cbegin </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/cbor_tag_handler_t/ class=md-nav__link> <span class=md-ellipsis> cbor_tag_handler_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/cend/ class=md-nav__link> <span class=md-ellipsis> cend </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/clear/ class=md-nav__link> <span class=md-ellipsis> clear </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/contains/ class=md-nav__link> <span class=md-ellipsis> contains </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/count/ class=md-nav__link> <span class=md-ellipsis> count </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/crbegin/ class=md-nav__link> <span class=md-ellipsis> crbegin </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/crend/ class=md-nav__link> <span class=md-ellipsis> crend </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/default_object_comparator_t/ class=md-nav__link> <span class=md-ellipsis> default_object_comparator_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/diff/ class=md-nav__link> <span class=md-ellipsis> diff </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/dump/ class=md-nav__link> <span class=md-ellipsis> dump </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/emplace/ class=md-nav__link> <span class=md-ellipsis> emplace </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/emplace_back/ class=md-nav__link> <span class=md-ellipsis> emplace_back </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/empty/ class=md-nav__link> <span class=md-ellipsis> empty </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/end/ class=md-nav__link> <span class=md-ellipsis> end </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/end_pos/ class=md-nav__link> <span class=md-ellipsis> end_pos </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/erase/ class=md-nav__link> <span class=md-ellipsis> erase </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/error_handler_t/ class=md-nav__link> <span class=md-ellipsis> error_handler_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/exception/ class=md-nav__link> <span class=md-ellipsis> exception </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/find/ class=md-nav__link> <span class=md-ellipsis> find </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/flatten/ class=md-nav__link> <span class=md-ellipsis> flatten </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/from_bjdata/ class=md-nav__link> <span class=md-ellipsis> from_bjdata </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/from_bson/ class=md-nav__link> <span class=md-ellipsis> from_bson </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/from_cbor/ class=md-nav__link> <span class=md-ellipsis> from_cbor </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/from_msgpack/ class=md-nav__link> <span class=md-ellipsis> from_msgpack </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/from_ubjson/ class=md-nav__link> <span class=md-ellipsis> from_ubjson </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/front/ class=md-nav__link> <span class=md-ellipsis> front </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/get/ class=md-nav__link> <span class=md-ellipsis> get </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/get_allocator/ class=md-nav__link> <span class=md-ellipsis> get_allocator </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/get_binary/ class=md-nav__link> <span class=md-ellipsis> get_binary </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/get_ptr/ class=md-nav__link> <span class=md-ellipsis> get_ptr </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/get_ref/ class=md-nav__link> <span class=md-ellipsis> get_ref </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/get_to/ class=md-nav__link> <span class=md-ellipsis> get_to </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/std_hash/ class=md-nav__link> <span class=md-ellipsis> std::hash&lt;basic_json&gt; </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/input_format_t/ class=md-nav__link> <span class=md-ellipsis> input_format_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/insert/ class=md-nav__link> <span class=md-ellipsis> insert </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/invalid_iterator/ class=md-nav__link> <span class=md-ellipsis> invalid_iterator </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_array/ class=md-nav__link> <span class=md-ellipsis> is_array </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_binary/ class=md-nav__link> <span class=md-ellipsis> is_binary </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_boolean/ class=md-nav__link> <span class=md-ellipsis> is_boolean </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_discarded/ class=md-nav__link> <span class=md-ellipsis> is_discarded </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_null/ class=md-nav__link> <span class=md-ellipsis> is_null </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_number/ class=md-nav__link> <span class=md-ellipsis> is_number </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_number_float/ class=md-nav__link> <span class=md-ellipsis> is_number_float </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_number_integer/ class=md-nav__link> <span class=md-ellipsis> is_number_integer </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_number_unsigned/ class=md-nav__link> <span class=md-ellipsis> is_number_unsigned </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_object/ class=md-nav__link> <span class=md-ellipsis> is_object </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_primitive/ class=md-nav__link> <span class=md-ellipsis> is_primitive </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_string/ class=md-nav__link> <span class=md-ellipsis> is_string </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_structured/ class=md-nav__link> <span class=md-ellipsis> is_structured </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/items/ class=md-nav__link> <span class=md-ellipsis> items </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/json_base_class_t/ class=md-nav__link> <span class=md-ellipsis> json_base_class_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/json_serializer/ class=md-nav__link> <span class=md-ellipsis> json_serializer </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/max_size/ class=md-nav__link> <span class=md-ellipsis> max_size </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/meta/ class=md-nav__link> <span class=md-ellipsis> meta </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/merge_patch/ class=md-nav__link> <span class=md-ellipsis> merge_patch </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/number_float_t/ class=md-nav__link> <span class=md-ellipsis> number_float_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/number_integer_t/ class=md-nav__link> <span class=md-ellipsis> number_integer_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/number_unsigned_t/ class=md-nav__link> <span class=md-ellipsis> number_unsigned_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/object/ class=md-nav__link> <span class=md-ellipsis> object </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/object_comparator_t/ class=md-nav__link> <span class=md-ellipsis> object_comparator_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/object_t/ class=md-nav__link> <span class=md-ellipsis> object_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/operator_ValueType/ class=md-nav__link> <span class=md-ellipsis> operator ValueType </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/operator_value_t/ class=md-nav__link> <span class=md-ellipsis> operator value_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/operator%5B%5D/ class=md-nav__link> <span class=md-ellipsis> operator[] </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/operator%3D/ class=md-nav__link> <span class=md-ellipsis> operator= </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/operator%2B%3D/ class=md-nav__link> <span class=md-ellipsis> operator+= </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/operator_eq/ class=md-nav__link> <span class=md-ellipsis> operator== </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/operator_ne/ class=md-nav__link> <span class=md-ellipsis> operator!= </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/operator_lt/ class=md-nav__link> <span class=md-ellipsis> operator< </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/operator_gt/ class=md-nav__link> <span class=md-ellipsis> operator> </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/operator_le/ class=md-nav__link> <span class=md-ellipsis> operator<= </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/operator_ge/ class=md-nav__link> <span class=md-ellipsis> operator>= </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/operator_spaceship/ class=md-nav__link> <span class=md-ellipsis> operator<=> </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/out_of_range/ class=md-nav__link> <span class=md-ellipsis> out_of_range </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/other_error/ class=md-nav__link> <span class=md-ellipsis> other_error </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/parse/ class=md-nav__link> <span class=md-ellipsis> parse </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/parse_error/ class=md-nav__link> <span class=md-ellipsis> parse_error </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/parse_event_t/ class=md-nav__link> <span class=md-ellipsis> parse_event_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/parser_callback_t/ class=md-nav__link> <span class=md-ellipsis> parser_callback_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/patch/ class=md-nav__link> <span class=md-ellipsis> patch </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/patch_inplace/ class=md-nav__link> <span class=md-ellipsis> patch_inplace </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/push_back/ class=md-nav__link> <span class=md-ellipsis> push_back </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/rbegin/ class=md-nav__link> <span class=md-ellipsis> rbegin </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/rend/ class=md-nav__link> <span class=md-ellipsis> rend </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/sax_parse/ class=md-nav__link> <span class=md-ellipsis> sax_parse </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/size/ class=md-nav__link> <span class=md-ellipsis> size </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/start_pos/ class=md-nav__link> <span class=md-ellipsis> start_pos </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/string_t/ class=md-nav__link> <span class=md-ellipsis> string_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/swap/ class=md-nav__link> <span class=md-ellipsis> swap </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/std_swap/ class=md-nav__link> <span class=md-ellipsis> std::swap&lt;basic_json&gt; </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/to_bjdata/ class=md-nav__link> <span class=md-ellipsis> to_bjdata </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/to_bson/ class=md-nav__link> <span class=md-ellipsis> to_bson </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/to_cbor/ class=md-nav__link> <span class=md-ellipsis> to_cbor </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/to_msgpack/ class=md-nav__link> <span class=md-ellipsis> to_msgpack </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/to_string/ class=md-nav__link> <span class=md-ellipsis> to_string </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/to_ubjson/ class=md-nav__link> <span class=md-ellipsis> to_ubjson </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/type/ class=md-nav__link> <span class=md-ellipsis> type </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/type_error/ class=md-nav__link> <span class=md-ellipsis> type_error </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/type_name/ class=md-nav__link> <span class=md-ellipsis> type_name </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/unflatten/ class=md-nav__link> <span class=md-ellipsis> unflatten </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/update/ class=md-nav__link> <span class=md-ellipsis> update </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/value/ class=md-nav__link> <span class=md-ellipsis> value </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/value_t/ class=md-nav__link> <span class=md-ellipsis> value_t </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_2> <div class="md-nav__link md-nav__container"> <a href=../../api/byte_container_with_subtype/ class="md-nav__link "> <span class=md-ellipsis> byte_container_with_subtype </span> </a> <label class="md-nav__link " for=__nav_4_2 id=__nav_4_2_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_2_label aria-expanded=false> <label class=md-nav__title for=__nav_4_2> <span class="md-nav__icon md-icon"></span> byte_container_with_subtype </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../api/byte_container_with_subtype/byte_container_with_subtype/ class=md-nav__link> <span class=md-ellipsis> (constructor) </span> </a> </li> <li class=md-nav__item> <a href=../../api/byte_container_with_subtype/clear_subtype/ class=md-nav__link> <span class=md-ellipsis> clear_subtype </span> </a> </li> <li class=md-nav__item> <a href=../../api/byte_container_with_subtype/has_subtype/ class=md-nav__link> <span class=md-ellipsis> has_subtype </span> </a> </li> <li class=md-nav__item> <a href=../../api/byte_container_with_subtype/set_subtype/ class=md-nav__link> <span class=md-ellipsis> set_subtype </span> </a> </li> <li class=md-nav__item> <a href=../../api/byte_container_with_subtype/subtype/ class=md-nav__link> <span class=md-ellipsis> subtype </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_3> <div class="md-nav__link md-nav__container"> <a href=../../api/adl_serializer/ class="md-nav__link "> <span class=md-ellipsis> adl_serializer </span> </a> <label class="md-nav__link " for=__nav_4_3 id=__nav_4_3_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_3_label aria-expanded=false> <label class=md-nav__title for=__nav_4_3> <span class="md-nav__icon md-icon"></span> adl_serializer </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../api/adl_serializer/from_json/ class=md-nav__link> <span class=md-ellipsis> from_json </span> </a> </li> <li class=md-nav__item> <a href=../../api/adl_serializer/to_json/ class=md-nav__link> <span class=md-ellipsis> to_json </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../api/json/ class=md-nav__link> <span class=md-ellipsis> json </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_5> <div class="md-nav__link md-nav__container"> <a href=../../api/json_pointer/ class="md-nav__link "> <span class=md-ellipsis> json_pointer </span> </a> <label class="md-nav__link " for=__nav_4_5 id=__nav_4_5_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_5_label aria-expanded=false> <label class=md-nav__title for=__nav_4_5> <span class="md-nav__icon md-icon"></span> json_pointer </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../api/json_pointer/json_pointer/ class=md-nav__link> <span class=md-ellipsis> (Constructor) </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/back/ class=md-nav__link> <span class=md-ellipsis> back </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/empty/ class=md-nav__link> <span class=md-ellipsis> empty </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/front/ class=md-nav__link> <span class=md-ellipsis> front </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/operator_string_t/ class=md-nav__link> <span class=md-ellipsis> operator string_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/operator_eq/ class=md-nav__link> <span class=md-ellipsis> operator== </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/operator_ne/ class=md-nav__link> <span class=md-ellipsis> operator!= </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/operator_slash/ class=md-nav__link> <span class=md-ellipsis> operator/ </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/operator_slasheq/ class=md-nav__link> <span class=md-ellipsis> operator/= </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/parent_pointer/ class=md-nav__link> <span class=md-ellipsis> parent_pointer </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/pop_back/ class=md-nav__link> <span class=md-ellipsis> pop_back </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/pop_front/ class=md-nav__link> <span class=md-ellipsis> pop_front </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/push_back/ class=md-nav__link> <span class=md-ellipsis> push_back </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/push_front/ class=md-nav__link> <span class=md-ellipsis> push_front </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/string_t/ class=md-nav__link> <span class=md-ellipsis> string_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/to_string/ class=md-nav__link> <span class=md-ellipsis> to_string </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_6> <div class="md-nav__link md-nav__container"> <a href=../../api/json_sax/ class="md-nav__link "> <span class=md-ellipsis> json_sax </span> </a> <label class="md-nav__link " for=__nav_4_6 id=__nav_4_6_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_6_label aria-expanded=false> <label class=md-nav__title for=__nav_4_6> <span class="md-nav__icon md-icon"></span> json_sax </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../api/json_sax/binary/ class=md-nav__link> <span class=md-ellipsis> binary </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_sax/boolean/ class=md-nav__link> <span class=md-ellipsis> boolean </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_sax/end_array/ class=md-nav__link> <span class=md-ellipsis> end_array </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_sax/end_object/ class=md-nav__link> <span class=md-ellipsis> end_object </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_sax/key/ class=md-nav__link> <span class=md-ellipsis> key </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_sax/null/ class=md-nav__link> <span class=md-ellipsis> null </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_sax/number_float/ class=md-nav__link> <span class=md-ellipsis> number_float </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_sax/number_integer/ class=md-nav__link> <span class=md-ellipsis> number_integer </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_sax/number_unsigned/ class=md-nav__link> <span class=md-ellipsis> number_unsigned </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_sax/parse_error/ class=md-nav__link> <span class=md-ellipsis> parse_error </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_sax/start_array/ class=md-nav__link> <span class=md-ellipsis> start_array </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_sax/start_object/ class=md-nav__link> <span class=md-ellipsis> start_object </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_sax/string/ class=md-nav__link> <span class=md-ellipsis> string </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../api/operator_ltlt/ class=md-nav__link> <span class=md-ellipsis> operator<<(basic_json), operator<<(json_pointer) </span> </a> </li> <li class=md-nav__item> <a href=../../api/operator_gtgt/ class=md-nav__link> <span class=md-ellipsis> operator>>(basic_json) </span> </a> </li> <li class=md-nav__item> <a href=../../api/operator_literal_json/ class=md-nav__link> <span class=md-ellipsis> operator""_json </span> </a> </li> <li class=md-nav__item> <a href=../../api/operator_literal_json_pointer/ class=md-nav__link> <span class=md-ellipsis> operator""_json_pointer </span> </a> </li> <li class=md-nav__item> <a href=../../api/ordered_json/ class=md-nav__link> <span class=md-ellipsis> ordered_json </span> </a> </li> <li class=md-nav__item> <a href=../../api/ordered_map/ class=md-nav__link> <span class=md-ellipsis> ordered_map </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_13> <div class="md-nav__link md-nav__container"> <a href=../../api/macros/ class="md-nav__link "> <span class=md-ellipsis> macros </span> </a> <label class="md-nav__link " for=__nav_4_13 id=__nav_4_13_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_13_label aria-expanded=false> <label class=md-nav__title for=__nav_4_13> <span class="md-nav__icon md-icon"></span> macros </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../api/macros/json_assert/ class=md-nav__link> <span class=md-ellipsis> JSON_ASSERT </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_brace_init_copy_semantics/ class=md-nav__link> <span class=md-ellipsis> JSON_BRACE_INIT_COPY_SEMANTICS </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_throw_user/ class=md-nav__link> <span class=md-ellipsis> JSON_CATCH_USER, JSON_THROW_USER, JSON_TRY_USER </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_diagnostics/ class=md-nav__link> <span class=md-ellipsis> JSON_DIAGNOSTICS </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_diagnostic_positions/ class=md-nav__link> <span class=md-ellipsis> JSON_DIAGNOSTIC_POSITIONS </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_disable_enum_serialization/ class=md-nav__link> <span class=md-ellipsis> JSON_DISABLE_ENUM_SERIALIZATION </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_has_cpp_11/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_CPP_11, JSON_HAS_CPP_14, JSON_HAS_CPP_17, JSON_HAS_CPP_20 </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_has_filesystem/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_EXPERIMENTAL_FILESYSTEM, JSON_HAS_FILESYSTEM </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_has_ranges/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_RANGES </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_has_static_rtti/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_STATIC_RTTI </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_has_three_way_comparison/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_THREE_WAY_COMPARISON </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_noexception/ class=md-nav__link> <span class=md-ellipsis> JSON_NOEXCEPTION </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_no_io/ class=md-nav__link> <span class=md-ellipsis> JSON_NO_IO </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_skip_library_version_check/ class=md-nav__link> <span class=md-ellipsis> JSON_SKIP_LIBRARY_VERSION_CHECK </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_skip_unsupported_compiler_check/ class=md-nav__link> <span class=md-ellipsis> JSON_SKIP_UNSUPPORTED_COMPILER_CHECK </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_use_global_udls/ class=md-nav__link> <span class=md-ellipsis> JSON_USE_GLOBAL_UDLS </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_use_implicit_conversions/ class=md-nav__link> <span class=md-ellipsis> JSON_USE_IMPLICIT_CONVERSIONS </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_use_legacy_discarded_value_comparison/ class=md-nav__link> <span class=md-ellipsis> JSON_USE_LEGACY_DISCARDED_VALUE_COMPARISON </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/nlohmann_define_derived_type/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_ONLY_SERIALIZE, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/nlohmann_define_type_intrusive/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_TYPE_INTRUSIVE, NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_TYPE_INTRUSIVE_ONLY_SERIALIZE </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/nlohmann_define_type_non_intrusive/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/nlohmann_define_type_with_names/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_TYPE_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/nlohmann_json_namespace/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_NAMESPACE </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/nlohmann_json_namespace_begin/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_NAMESPACE_BEGIN, NLOHMANN_JSON_NAMESPACE_END </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/nlohmann_json_namespace_no_version/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_NAMESPACE_NO_VERSION </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/nlohmann_json_serialize_enum/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_SERIALIZE_ENUM </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/nlohmann_json_serialize_enum_strict/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_SERIALIZE_ENUM_STRICT </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/nlohmann_json_version_major/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_VERSION_MAJOR, NLOHMANN_JSON_VERSION_MINOR, NLOHMANN_JSON_VERSION_PATCH </span> </a> </li> </ul> </nav> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_5> <div class="md-nav__link md-nav__container"> <a href=../../community/ class="md-nav__link "> <span class=md-ellipsis> Community </span> </a> <label class="md-nav__link " for=__nav_5 id=__nav_5_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_5_label aria-expanded=false> <label class=md-nav__title for=__nav_5> <span class="md-nav__icon md-icon"></span> Community </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../community/code_of_conduct/ class=md-nav__link> <span class=md-ellipsis> Code of Conduct </span> </a> </li> <li class=md-nav__item> <a href=../../community/contribution_guidelines/ class=md-nav__link> <span class=md-ellipsis> Contribution Guidelines </span> </a> </li> <li class=md-nav__item> <a href=../../community/quality_assurance/ class=md-nav__link> <span class=md-ellipsis> Quality assurance </span> </a> </li> <li class=md-nav__item> <a href=../../community/governance/ class=md-nav__link> <span class=md-ellipsis> Governance </span> </a> </li> <li class=md-nav__item> <a href=../../community/security_policy/ class=md-nav__link> <span class=md-ellipsis> Security Policy </span> </a> </li> </ul> </nav> </li> </ul> </nav> </div> </div> </div> <div class="md-sidebar md-sidebar--secondary" data-md-component=sidebar data-md-type=toc> <div class=md-sidebar__scrollwrap> <div class=md-sidebar__inner> <nav class="md-nav md-nav--secondary" aria-label="Table of contents"> <label class=md-nav__title for=__toc> <span class="md-nav__icon md-icon"></span> Table of contents </label> <ul class=md-nav__list data-md-component=toc data-md-scrollfix> <li class=md-nav__item> <a href=#space-exploration class=md-nav__link> <span class=md-ellipsis> Space Exploration </span> </a> </li> <li class=md-nav__item> <a href=#automotive class=md-nav__link> <span class=md-ellipsis> Automotive </span> </a> </li> <li class=md-nav__item> <a href=#gaming-and-entertainment class=md-nav__link> <span class=md-ellipsis> Gaming and Entertainment </span> </a> </li> <li class=md-nav__item> <a href=#consumer-electronics class=md-nav__link> <span class=md-ellipsis> Consumer Electronics </span> </a> </li> <li class=md-nav__item> <a href=#operating-systems class=md-nav__link> <span class=md-ellipsis> Operating Systems </span> </a> </li> <li class=md-nav__item> <a href=#development-tools-and-ides class=md-nav__link> <span class=md-ellipsis> Development Tools and IDEs </span> </a> </li> <li class=md-nav__item> <a href=#machine-learning-and-ai class=md-nav__link> <span class=md-ellipsis> Machine Learning and AI </span> </a> </li> <li class=md-nav__item> <a href=#scientific-research-and-analysis class=md-nav__link> <span class=md-ellipsis> Scientific Research and Analysis </span> </a> </li> <li class=md-nav__item> <a href=#business-and-productivity-software class=md-nav__link> <span class=md-ellipsis> Business and Productivity Software </span> </a> </li> <li class=md-nav__item> <a href=#databases-and-big-data class=md-nav__link> <span class=md-ellipsis> Databases and Big Data </span> </a> </li> <li class=md-nav__item> <a href=#simulation-and-modeling class=md-nav__link> <span class=md-ellipsis> Simulation and Modeling </span> </a> </li> <li class=md-nav__item> <a href=#enterprise-and-cloud-applications class=md-nav__link> <span class=md-ellipsis> Enterprise and Cloud Applications </span> </a> </li> </ul> </nav> </div> </div> </div> <div class=md-content data-md-component=content> <article class="md-content__inner md-typeset"> <a href="https://github.com/nlohmann/json/edit/develop/docs/mkdocs/docs/home/customers.md" title="Edit this page" class="md-content__button md-icon" rel="edit"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M10 20H6V4h7v5h5v3.1l2-2V8l-6-6H6c-1.1 0-2 .9-2 2v16c0 1.1.9 2 2 2h4zm10.2-7c.1 0 .3.1.4.2l1.3 1.3c.2.2.2.6 0 .8l-1 1-2.1-2.1 1-1c.1-.1.2-.2.4-.2m0 3.9L14.1 23H12v-2.1l6.1-6.1z"/></svg> </a> <a href="https://github.com/nlohmann/json/raw/develop/docs/mkdocs/docs/home/customers.md" title="View source of this page" class="md-content__button md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M17 18c.56 0 1 .44 1 1s-.44 1-1 1-1-.44-1-1 .44-1 1-1m0-3c-2.73 0-5.06 1.66-6 4 .94 2.34 3.27 4 6 4s5.06-1.66 6-4c-.94-2.34-3.27-4-6-4m0 6.5a2.5 2.5 0 0 1-2.5-2.5 2.5 2.5 0 0 1 2.5-2.5 2.5 2.5 0 0 1 2.5 2.5 2.5 2.5 0 0 1-2.5 2.5M9.27 20H6V4h7v5h5v4.07c.7.08 1.36.25 2 .49V8l-6-6H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h4.5a8.2 8.2 0 0 1-1.23-2"/></svg> </a> <h1 id=customers>Customers<a class=headerlink href=#customers title="Permanent link">&para;</a></h1> <p>The library is used in multiple projects, applications, operating systems, etc. The list below is not exhaustive, but the result of an internet search. If you know further customers of the library, <a href=mailto:mail@nlohmann.me>please let me know</a>.</p> <p><a href=../../images/customers.png><img alt src=../../images/customers.png></a></p> <h2 id=space-exploration>Space Exploration<a class=headerlink href=#space-exploration title="Permanent link">&para;</a></h2> <ul> <li><a href="https://en.wikipedia.org/wiki/Peregrine_Mission_One"><strong>Peregrine Lunar Lander Flight 01</strong></a> - The library was used for payload management in the <strong>Peregrine Moon Lander</strong>, developed by <strong>Astrobotic Technology</strong> and launched as part of <abbr title="National Aeronautics and Space Administration">NASA</abbr>'s <strong>Commercial Lunar Payload Services (CLPS)</strong> program. After six days in orbit, the spacecraft was intentionally redirected into Earth's atmosphere, where it burned up over the Pacific Ocean on <strong>January 18, 2024</strong>.</li> </ul> <h2 id=automotive>Automotive<a class=headerlink href=#automotive title="Permanent link">&para;</a></h2> <ul> <li><a href="https://github.com/alexa/alexa-auto-sdk"><strong>Alexa Auto <abbr title="Software Development Kit">SDK</abbr></strong></a>, a software development kit enabling the integration of Alexa into automotive systems</li> <li><a href="https://github.com/ApolloAuto/apollo"><strong>Apollo</strong></a>, a framework for building autonomous driving systems</li> <li><a href="https://download.automotivelinux.org/AGL/release/jellyfish/latest/qemux86-64/deploy/licenses/nlohmann-json/"><strong>Automotive Grade Linux (AGL)</strong></a>, a collaborative open-source platform for automotive software development</li> <li><a href="http://webmanual.genesis.com/ccIC/AVNT/JW/KOR/English/reference010.html"><strong>Genesis Motor</strong> (infotainment)</a>, a luxury automotive brand</li> <li><a href="https://www.hyundai.com/wsvc/ww/download.file.do?id=/content/hyundai/ww/data/opensource/data/GN7-2022/licenseCode/info"><strong>Hyundai</strong> (infotainment)</a>, a global automotive brand</li> <li><a href="http://webmanual.kia.com/PREM_GEN6/AVNT/RJPE/KOR/Korean/reference010.html"><strong>Kia</strong> (infotainment)</a>, a global automotive brand</li> <li><a href="https://group.mercedes-benz.com/careers/about-us/mercedes-benz-operating-system/"><strong>Mercedes-Benz Operating System (MB.OS)</strong></a>, a core component of the vehicle software ecosystem from Mercedes-Benz</li> <li><a href="https://assets.ctfassets.net/2md5qhoeajym/3cwyo4eoufk4yingUwusFt/ded2c47da620fdfc99c88c7156d2c1d8/In-Vehicle_OSS_Attribution_2024__11-24_.pdf"><strong>Rivian</strong> (infotainment)</a>, an electric vehicle manufacturer</li> <li><a href="https://www.globalsuzuki.com/motorcycle/ipc/oss/oss_48KA_00.pdf"><strong>Suzuki</strong> (infotainment)</a>, a global automotive and motorcycle manufacturer</li> </ul> <h2 id=gaming-and-entertainment>Gaming and Entertainment<a class=headerlink href=#gaming-and-entertainment title="Permanent link">&para;</a></h2> <ul> <li><a href="https://www.mobygames.com/person/1195889/niels-lohmann/credits/"><strong>Assassin's Creed: Mirage</strong></a>, a stealth-action game set in the Middle East, focusing on the journey of a young assassin with classic parkour and stealth mechanics</li> <li><a href="https://www.mobygames.com/person/1195889/niels-lohmann/credits/"><strong>Chasm: The Rift</strong></a>, a first-person shooter blending horror and adventure, where players navigate dark realms and battle monsters</li> <li><a href="https://www.mobygames.com/person/1195889/niels-lohmann/credits/"><strong>College Football 25</strong></a>, a college football simulation game featuring gameplay that mimics real-life college teams and competitions</li> <li><a href="https://concepts.app/en/licenses"><strong>Concepts</strong></a>, a digital sketching app designed for creative professionals, offering flexible drawing tools for illustration, design, and brainstorming</li> <li><a href="https://www.depthkit.tv/third-party-licenses"><strong>Depthkit</strong></a>, a tool for creating and capturing volumetric video, enabling immersive 3D experiences and interactive content</li> <li><a href="https://img.ly/acknowledgements"><strong>IMG.LY</strong></a>, a platform offering creative tools and SDKs for integrating advanced image and video editing in applications</li> <li><a href="https://loot.readthedocs.io/_/downloads/en/0.13.0/pdf/"><strong>LOOT</strong></a>, a tool for optimizing the load order of game plugins, commonly used in The Elder Scrolls and Fallout series</li> <li><a href="https://www.mobygames.com/person/1195889/niels-lohmann/credits/"><strong>Madden NFL 25</strong></a>, a sports simulation game capturing the excitement of American football with realistic gameplay and team management features</li> <li><a href="https://marne.io/licenses"><strong>Marne</strong></a>, an unofficial private server platform for hosting custom Battlefield 1 game experiences</li> <li><a href="https://www.minecraft.net/zh-hant/attribution"><strong>Minecraft</strong></a>, a popular sandbox video game</li> <li><a href="https://www.mobygames.com/person/1195889/niels-lohmann/credits/"><strong>NHL 22</strong></a>, a hockey simulation game offering realistic gameplay, team management, and various modes to enhance the hockey experience</li> <li><a href="https://pixelpart.net/documentation/book/third-party.html"><strong>Pixelpart</strong></a>, a 2D animation and video compositing software that allows users to create animated graphics and visual effects with a focus on simplicity and ease of use</li> <li><a href="https://mysupport.razer.com/app/answers/detail/a_id/14146/~/open-source-software-for-razer-software"><strong>Razer Cortex</strong></a>, a gaming performance optimizer and system booster designed to enhance the gaming experience</li> <li><a href="https://www.mobygames.com/person/1195889/niels-lohmann/credits/"><strong>Red Dead Redemption II</strong></a>, an open-world action-adventure game following an outlaw's story in the late 1800s, emphasizing deep storytelling and immersive gameplay</li> <li><a href="https://www.snap.com/terms/license-android"><strong>Snapchat</strong></a>, a multimedia messaging and augmented reality app for communication and entertainment</li> <li><a href="https://www.square-enix-games.com/en_US/documents/tactics-ogre-reborn-pc-installer-software-and-associated-plug-ins-disclosure"><strong>Tactics Ogre: Reborn</strong></a>, a tactical role-playing game featuring strategic battles and deep storytelling elements</li> <li><a href="https://www.amazon.com/gp/help/customer/display.html?nodeId=T7fLNw5oAevCMtJFPj&amp;pop-up=1"><strong>Throne and Liberty</strong></a>, an MMORPG that offers an expansive fantasy world with dynamic gameplay and immersive storytelling</li> <li><a href="https://docs.unity3d.com/Packages/com.unity.services.vivox@15.1/license/Third%20Party%20Notices.html"><strong>Unity Vivox</strong></a>, a communication service that enables voice and text chat functionality in multiplayer games developed with Unity</li> <li><a href="https://www.mobygames.com/person/1195889/niels-lohmann/credits/"><strong>Zool: Redimensioned</strong></a>, a modern reimagining of the classic platformer featuring fast-paced gameplay and vibrant environments</li> <li><a href="https://immersitech.io/open-source-third-party-software/"><strong>immersivetech</strong></a>, a technology company focused on immersive experiences, providing tools and solutions for virtual and augmented reality applications</li> </ul> <h2 id=consumer-electronics>Consumer Electronics<a class=headerlink href=#consumer-electronics title="Permanent link">&para;</a></h2> <ul> <li><a href="https://www.audinate.com/legal/software-licensing/dante-av-h-open-source-licenses/"><strong>Audinate</strong></a>, a provider of networked audio solutions specializing in Dante technology, which facilitates high-quality digital audio transport over IP networks</li> <li><a href="https://carolburo.com/wp-content/uploads/2024/06/LiDE400_OnlineManual_Win_FR_V02.pdf"><strong>Canon CanoScan LIDE</strong></a>, a series of flatbed scanners offering high-resolution image scanning for home and office use</li> <li><a href="https://www.mediaexpert.pl/products/files/73/7338196/Instrukcja-obslugi-CANON-Pixma-TS7450i.pdf"><strong>Canon PIXMA Printers</strong></a>, a line of all-in-one inkjet printers known for high-quality printing and wireless connectivity</li> <li><a href="https://www.cisco.com/c/dam/en_us/about/doing_business/open_source/docs/CiscoWebexDeskCamera-23-1622100417.pdf"><strong>Cisco Webex Desk Camera</strong></a>, a video camera designed for professional-quality video conferencing and remote collaboration</li> <li><a href="http://2ak5ape.257.cz/"><strong>Philips Hue Personal Wireless Lighting</strong></a>, a smart lighting system for customizable and wireless home illumination</li> <li><a href="https://www.meta.com/de/en/legal/smart-glasses/third-party-notices-android/03/"><strong>Ray-Ban Meta Smart glasses</strong></a>, a pair of smart glasses designed for capturing photos and videos with integrated connectivity and social features</li> <li><a href="https://mysupport.razer.com/app/answers/detail/a_id/14146/~/open-source-software-for-razer-software"><strong>Razer Synapse</strong></a>, a unified configuration software enabling hardware customization for Razer devices</li> <li><a href="https://cache.industry.siemens.com/dl/files/790/109793790/att_1054961/v2/OSS_SINEMA-RC_86.pdf"><strong>Siemens SINEMA Remote Connect</strong></a>, a remote connectivity solution for monitoring and managing industrial networks and devices securely</li> <li><a href="https://doc.dl.playstation.net/doc/ps4-oss/index.html"><strong>Sony PlayStation 4</strong></a>, a gaming console developed by Sony that offers a wide range of games and multimedia entertainment features</li> <li><a href="https://helpguide.sony.net/rc/vwd/v1/zh-cn/print.pdf"><strong>Sony Virtual Webcam Driver for Remote Camera</strong></a>, a software driver that enables the use of Sony cameras as virtual webcams for video conferencing and streaming</li> </ul> <h2 id=operating-systems>Operating Systems<a class=headerlink href=#operating-systems title="Permanent link">&para;</a></h2> <ul> <li><a href="https://www.apple.com/macos"><strong>Apple iOS and macOS</strong></a>, a family of operating systems developed by Apple, including iOS for mobile devices and macOS for desktop computers</li> <li><a href="https://fuchsia.googlesource.com/third_party/json/"><strong>Google Fuchsia</strong></a>, an open-source operating system developed by Google, designed to be secure, updatable, and adaptable across various devices</li> <li><a href="https://github.com/SerenityOS/serenity"><strong>SerenityOS</strong></a>, an open-source operating system that aims to provide a simple and beautiful user experience with a focus on simplicity and elegance</li> <li><a href="http://ftp.emacinc.com/openembedded-sw/kirkstone-icop-5.15-kirkstone-6.0/archive-2024-10/pn8m-090t-ppc/licenses/nlohmann-json/"><strong>Yocto</strong></a>, a Linux-based build system for creating custom operating systems and software distributions, tailored for embedded devices and IoT applications</li> </ul> <h2 id=development-tools-and-ides>Development Tools and IDEs<a class=headerlink href=#development-tools-and-ides title="Permanent link">&para;</a></h2> <ul> <li><a href="https://www.accentize.com/products/SpectralBalanceManual.pdf"><strong>Accentize SpectralBalance</strong></a>, an adaptive speech analysis tool designed to enhance audio quality by optimizing frequency balance in recordings</li> <li><a href="https://documentation-service.arm.com/static/66558e9d876c8d213b7843e4"><strong>Arm Compiler for Linux</strong></a>, a software development toolchain for compiling and optimizing applications on Arm-based Linux systems</li> <li><a href="https://s3.amazonaws.com/BBSW-download/BBEdit_15.1.2_User_Manual.pdf"><strong>BBEdit</strong></a>, a professional text and code editor for macOS</li> <li><a href="https://coderpad.io"><strong>CoderPad</strong></a>, a collaborative coding platform that enables real-time code interviews and assessments for developers; the library is included in every CoderPad instance and can be accessed with a simple <code>#include "json.hpp"</code></li> <li><a href="https://godbolt.org"><strong>Compiler Explorer</strong></a>, a web-based tool that allows users to write, compile, and visualize the assembly output of code in various programming languages; the library is readily available and accessible with the directive <code>#include &lt;nlohmann/json.hpp&gt;</code>.</li> <li><a href="https://github.com/github/codeql"><strong>GitHub CodeQL</strong></a>, a code analysis tool used for identifying security vulnerabilities and bugs in software through semantic queries</li> <li><a href="https://docs.hex-rays.com/user-guide/user-interface/licenses"><strong>Hex-Rays</strong></a>, a reverse engineering toolset for analyzing and decompiling binaries, primarily used for security research and vulnerability analysis</li> <li><a href="https://github.com/WerWolv/ImHex"><strong>ImHex</strong></a>, a hex editor designed for reverse engineering, providing advanced features for data analysis and manipulation</li> <li><a href="https://intel.github.io/gpasdk-doc/src/licenses.html"><strong>Intel GPA Framework</strong></a>, a suite of cross-platform tools for capturing, analyzing, and optimizing graphics applications across different APIs</li> <li><a href="https://www.intopix.com/software-licensing"><strong>Intopix</strong></a>, a provider of advanced image processing and compression solutions used in software development and AV workflows</li> <li><a href="https://www.oracle.com/a/tech/docs/jdk8-lium.pdf"><strong>Java SE</strong></a>, the core Java platform that provides the libraries and runtime needed to build and run general-purpose Java applications</li> <li><a href="https://mkvtoolnix.download/doc/README.md"><strong>MKVToolNix</strong></a>, a set of tools for creating, editing, and inspecting MKV (Matroska) multimedia container files</li> <li><a href="https://github.com/facebook/yoga"><strong>Meta Yoga</strong></a>, a layout engine that facilitates flexible and efficient user interface design across multiple platforms</li> <li><a href="https://docs.nvidia.com/nsight-compute/2022.2/pdf/CopyrightAndLicenses.pdf"><strong>NVIDIA Nsight Compute</strong></a>, a performance analysis tool for CUDA applications that provides detailed insights into GPU performance metrics</li> <li><a href="https://github.com/notepad-plus-plus/notepad-plus-plus"><strong>Notepad++</strong></a>, a free source code editor that supports various programming languages</li> <li><a href="https://gitlab.com/CalcProgrammer1/OpenRGB"><strong>OpenRGB</strong></a>, an open source RGB lighting control that doesn't depend on manufacturer software</li> <li><a href="https://github.com/open-telemetry/opentelemetry-cpp"><strong>OpenTelemetry C++</strong></a>, a library for collecting and exporting observability data in C++, enabling developers to implement distributed tracing and metrics in their application</li> <li><a href="https://doc.qt.io/qtcreator/qtcreator-attribution-json-nlohmann.html"><strong>Qt Creator</strong></a>, an IDE for developing applications using the Qt application framework</li> <li><a href="https://docs.scanbot.io/barcode-scanner-sdk/web/third-party-libraries/"><strong>Scanbot <abbr title="Software Development Kit">SDK</abbr></strong></a>, a software development kit (<abbr title="Software Development Kit">SDK</abbr>) that provides tools for integrating advanced document scanning and barcode scanning capabilities into applications</li> </ul> <h2 id=machine-learning-and-ai>Machine Learning and AI<a class=headerlink href=#machine-learning-and-ai title="Permanent link">&para;</a></h2> <ul> <li><a href="https://github.com/apple/coremltools"><strong>Apple Core ML Tools</strong></a>, a set of tools for converting and configuring machine learning models for deployment in Apple's Core ML framework</li> <li><a href="https://www.avular.com/licenses/nlohmann-json-3.9.1.txt"><strong>Avular Mobile Robotics</strong></a>, a platform for developing and deploying mobile robotics solutions</li> <li><a href="https://github.com/google/gemma.cpp"><strong>Google gemma.cpp</strong></a>, a lightweight C++ inference engine designed for running AI models from the Gemma family</li> <li><a href="https://github.com/ggerganov/llama.cpp"><strong>llama.cpp</strong></a>, a C++ library designed for efficient inference of large language models (LLMs), enabling streamlined integration into applications</li> <li><a href="https://github.com/ml-explore/mlx"><strong>MLX</strong></a>, an array framework for machine learning on Apple Silicon</li> <li><a href="https://github.com/Mozilla-Ocho/llamafile"><strong>Mozilla llamafile</strong></a>, a tool designed for distributing and executing large language models (LLMs) efficiently using a single file format</li> <li><a href="https://docs.nvidia.com/ace/latest/index.html"><strong>NVIDIA ACE</strong></a>, a suite of real-time AI solutions designed for the development of interactive avatars and digital human applications, enabling scalable and sophisticated user interactions</li> <li><a href="https://support.peer.inc/hc/en-us/articles/17261335054235-Licenses"><strong>Peer</strong></a>, a platform offering personalized AI assistants for interactive learning and creative collaboration</li> <li><a href="https://github.com/leejet/stable-diffusion.cpp"><strong>stable-diffusion.cpp</strong></a>, a C++ implementation of the Stable Diffusion image generation model</li> <li><a href="https://tanvas.co/tanvastouch-sdk-third-party-acknowledgments"><strong>TanvasTouch</strong></a>, a software development kit (<abbr title="Software Development Kit">SDK</abbr>) that enables developers to create tactile experiences on touchscreens, allowing users to feel textures and physical sensations in a digital environment</li> <li><a href="https://github.com/tensorflow/tensorflow"><strong>TensorFlow</strong></a>, a machine learning framework that facilitates the development and training of models, supporting data serialization and efficient data exchange between components</li> </ul> <h2 id=scientific-research-and-analysis>Scientific Research and Analysis<a class=headerlink href=#scientific-research-and-analysis title="Permanent link">&para;</a></h2> <ul> <li><a href="https://www.black-sat.org/en/stable/installation/linux.html"><strong>BLACK</strong></a>, a bounded linear temporal logic (LTL) satisfiability checker</li> <li><a href="https://gitlab.cern.ch/atlas/athena/-/blob/main/Control/PerformanceMonitoring/PerfMonComps/src/PerfMonMTSvc.h"><strong>CERN Atlas Athena</strong></a>, a software framework used in the ATLAS experiment at the Large Hadron Collider (LHC) for performance monitoring</li> <li><a href="https://github.com/unicode-org/icu"><strong>ICU</strong></a>, the International Components for Unicode, a mature library for software globalization and multilingual support</li> <li><a href="https://github.com/Kitware/kamera"><strong>KAMERA</strong></a>, a platform for synchronized data collection and real-time deep learning to map marine species like polar bears and seals, aiding Arctic ecosystem research</li> <li><a href="https://gitlab.com/kicad/code/kicad/-/tree/master/thirdparty/nlohmann_json"><strong>KiCad</strong></a>, a free and open-source software suite for electronic design automation</li> <li><a href="https://www.maplesoft.com/support/help/Maple/view.aspx?path=copyright"><strong>Maple</strong></a>, a symbolic and numeric computing environment for advanced mathematical modeling and analysis</li> <li><a href="https://mevislabdownloads.mevis.de/docs/current/MeVis/ThirdParty/Documentation/Publish/ThirdPartyReference/index.html"><strong>MeVisLab</strong></a>, a software framework for medical image processing and visualization.</li> <li><a href="https://openpmd-api.readthedocs.io/en/0.8.0-alpha/backends/json.html"><strong>OpenPMD <abbr title="Application Programming Interfaces">API</abbr></strong></a>, a versatile programming interface for accessing and managing scientific data, designed to facilitate the efficient storage, retrieval, and sharing of simulation data across various applications and platforms</li> <li><a href="https://github.com/Kitware/ParaView"><strong>ParaView</strong></a>, an open-source tool for large-scale data visualization and analysis across various scientific domains</li> <li><a href="https://gitlab.b-data.ch/qgis/qgis/-/blob/backport-57658-to-release-3_34/external/nlohmann/json.hpp"><strong>QGIS</strong></a>, a free and open-source geographic information system (GIS) application that allows users to create, edit, visualize, and analyze geospatial data across a variety of formats</li> <li><a href="https://github.com/Kitware/VTK"><strong>VTK</strong></a>, a software library for 3D computer graphics, image processing, and visualization</li> <li><a href="https://github.com/Kitware/VolView"><strong>VolView</strong></a>, a lightweight application for interactive visualization and analysis of 3D medical imaging data.</li> </ul> <h2 id=business-and-productivity-software>Business and Productivity Software<a class=headerlink href=#business-and-productivity-software title="Permanent link">&para;</a></h2> <ul> <li><a href="https://www.esri.com/content/dam/esrisites/en-us/media/legal/open-source-acknowledgements/arcgis-pro-2-8-attribution-report.html"><strong>ArcGIS PRO</strong></a>, a desktop geographic information system (GIS) application developed by Esri for mapping and spatial analysis</li> <li><a href="https://damassets.autodesk.net/content/dam/autodesk/www/Company/legal-notices-trademarks/autodesk-desktop-platform-components/internal-autodesk-components-web-page-2023.pdf"><strong>Autodesk Desktop</strong></a>, a software platform developed by Autodesk for creating and managing desktop applications and services</li> <li><a href="https://www.checkpoint.com/about-us/copyright-and-trademarks/"><strong>Check Point</strong></a>, a cybersecurity company specializing in threat prevention and network security solutions, offering a range of products designed to protect enterprises from cyber threats and ensure data integrity</li> <li><a href="https://officecdnmac.microsoft.com/pr/legal/mac/OfficeforMacAttributions.html"><strong>Microsoft Office for Mac</strong></a>, a suite of productivity applications developed by Microsoft for macOS, including tools for word processing, spreadsheets, and presentations</li> <li><a href="https://www.microsoft.com/microsoft-teams/"><strong>Microsoft Teams</strong></a>, a team collaboration application offering workspace chat and video conferencing, file storage, and integration of proprietary and third-party applications and services</li> <li><a href="https://docs.nexthink.com/legal/services-terms/experience-open-source-software-licenses/infinity-2022.8-software-licenses"><strong>Nexthink Infinity</strong></a>, a digital employee experience management platform for monitoring and improving IT performance</li> <li><a href="https://docs.sophos.com/nsg/licenses/SophosConnect/SophosConnectAttribution.html"><strong>Sophos Connect Client</strong></a>, a secure VPN client from Sophos that allows remote users to connect to their corporate network, ensuring secure access to resources and data</li> <li><a href="https://stonebranchdocs.atlassian.net/wiki/spaces/UA77/pages/799545647/Licenses+for+Third-Party+Libraries"><strong>Stonebranch</strong></a>, a cloud-based cybersecurity solution that integrates backup, disaster recovery, and cybersecurity features to protect data and ensure business continuity for organizations</li> <li><a href="https://tablecruncher.com/"><strong>Tablecruncher</strong></a>, a data analysis tool that allows users to import, analyze, and visualize spreadsheet data, offering interactive features for better insights and decision-making</li> <li><a href="https://help.magicplan.app/acknowledgments"><strong>magicplan</strong></a>, a mobile application for creating floor plans and interior designs using augmented reality</li> </ul> <h2 id=databases-and-big-data>Databases and Big Data<a class=headerlink href=#databases-and-big-data title="Permanent link">&para;</a></h2> <ul> <li><a href="https://code.ornl.gov/ecpcitest/adios2/-/tree/pr4285_FFSUpstream/thirdparty/nlohmann_json?ref_type=heads"><strong>ADIOS2</strong></a>, a data management framework designed for high-performance input and output operations</li> <li><a href="https://docs.cribl.io/stream/third-party-current-list/"><strong>Cribl Stream</strong></a>, a real-time data processing platform that enables organizations to collect, route, and transform observability data, enhancing visibility and insights into their systems</li> <li><a href="https://github.com/sqlitebrowser/sqlitebrowser"><strong>DB Browser for SQLite</strong></a>, a visual open-source tool for creating, designing, and editing SQLite database files</li> <li><a href="https://docs.oracle.com/cd/E17952_01/connector-cpp-9.1-license-com-en/license-opentelemetry-cpp-com.html"><strong>MySQL Connector/C++</strong></a>, a C++ library for connecting and interacting with MySQL databases</li> <li><a href="https://downloads.mysql.com/docs/licenses/cluster-9.0-com-en.pdf"><strong>MySQL NDB Cluster</strong></a>, a distributed database system that provides high availability and scalability for MySQL databases</li> <li><a href="https://downloads.mysql.com/docs/licenses/mysql-shell-8.0-gpl-en.pdf"><strong>MySQL Shell</strong></a>, an advanced client and code editor for interacting with MySQL servers, supporting SQL, Python, and JavaScript</li> <li><a href="https://github.com/prestodb/presto"><strong>PrestoDB</strong></a>, a distributed SQL query engine designed for large-scale data analytics, originally developed by Facebook</li> <li><a href="https://root.cern/doc/v614/classnlohmann_1_1basic__json.html"><strong>ROOT Data Analysis Framework</strong></a>, an open-source data analysis framework widely used in high-energy physics and other fields for data processing and visualization</li> <li><a href="https://github.com/wiredtiger/wiredtiger"><strong>WiredTiger</strong></a>, a high-performance storage engine for databases, offering support for compression, concurrency, and checkpointing</li> </ul> <h2 id=simulation-and-modeling>Simulation and Modeling<a class=headerlink href=#simulation-and-modeling title="Permanent link">&para;</a></h2> <ul> <li><a href="https://www.datocms-assets.com/104353/1698904597-holosuite-third-party-software-credits-and-attributions-2.pdf"><strong>Arcturus HoloSuite</strong></a>, a software toolset for capturing, editing, and streaming volumetric video, featuring advanced compression technologies for high-quality 3D content creation</li> <li><a href="https://pure.tudelft.nl/ws/files/85338589/tgis.12673.pdf"><strong>azul</strong></a>, a fast and efficient 3D city model viewer designed for visualizing urban environments and spatial data</li> <li><a href="https://projects.blender.org/blender/blender/search?q=nlohmann"><strong>Blender</strong></a>, a free and open-source 3D creation suite for modeling, animation, rendering, and more</li> <li><a href="https://cpplot.readthedocs.io/en/latest/library_api/function_eigen_8h_1ac080eac0541014c5892a55e41bf785e6.html"><strong>cpplot</strong></a>, a library for creating interactive graphs and charts in C++, which can be viewed in web browsers</li> <li><a href="https://learn.foundry.com/nuke/content/misc/studio_third_party_libraries.html"><strong>Foundry Nuke</strong></a>, a powerful node-based digital compositing and visual effects application used in film and television post-production</li> <li><a href="https://www.gams.com/47/docs/THIRDPARTY.html"><strong>GAMS</strong></a>, a high-performance mathematical modeling system for optimization and decision support</li> <li><a href="https://github.com/Kitware/SMTK"><strong>Kitware SMTK</strong></a>, a software toolkit for managing simulation models and workflows in scientific and engineering applications</li> <li><a href="https://docs.mstarcfd.com/3_Licensing/thirdparty-licenses.html"><strong>M-Star</strong></a>, a computational fluid dynamics software for simulating and analyzing fluid flow</li> <li><a href="https://www.maplesoft.com/support/help/MapleSim/view.aspx?path=CADToolbox/copyright"><strong>MapleSim CAD Toolbox</strong></a>, a software extension for MapleSim that integrates CAD models, allowing users to import, manipulate, and analyze 3D CAD data within the MapleSim environment for enhanced modeling and simulation</li> <li><a href="https://docs.omniverse.nvidia.com/composer/latest/common/product-licenses/usd-explorer/usd-explorer-2023.2.0-licenses-manifest.html"><strong>NVIDIA Omniverse</strong></a>, a platform for 3D content creation and collaboration that enables real-time simulations and interactive experiences across various industries</li> <li><a href="https://rmanwiki-26.pixar.com/space/REN26/19662083/Legal+Notice"><strong>Pixar Renderman</strong></a>, a photorealistic 3D rendering software developed by Pixar, widely used in the film industry for creating high-quality visual effects and animations</li> <li><a href="http://docs.ros.org/en/noetic/api/behaviortree_cpp/html/json_8hpp_source.html"><strong>ROS - Robot Operating System</strong></a>, a set of software libraries and tools that assist in developing robot applications</li> <li><a href="https://www.ubs.com/"><strong>UBS</strong></a>, a multinational financial services and banking company</li> </ul> <h2 id=enterprise-and-cloud-applications>Enterprise and Cloud Applications<a class=headerlink href=#enterprise-and-cloud-applications title="Permanent link">&para;</a></h2> <ul> <li><a href="https://care.acronis.com/s/article/59533-Third-party-software-used-in-Acronis-Cyber-Protect-Cloud?language=en_US"><strong>Acronis Cyber Protect Cloud</strong></a>, an all-in-one data protection solution that combines backup, disaster recovery, and cybersecurity to safeguard business data from threats like ransomware</li> <li><a href="https://gitlab.tiger-computing.co.uk/packages/bareos/-/blob/tiger/bullseye/third-party/CLI11/examples/json.cpp"><strong>Baereos</strong></a>, a backup solution that provides data protection and recovery options for various environments, including physical and virtual systems</li> <li><a href="https://www.bitdefender.de/site/Main/view/home-scanner-open-source.html"><strong>Bitdefender Home Scanner</strong></a>, a tool from Bitdefender that scans devices for malware and security threats, providing a safeguard against potential online dangers</li> <li><a href="https://docs.citrix.com/en-us/provisioning/2203-ltsr/downloads/pvs-third-party-notices-2203.pdf"><strong>Citrix Provisioning</strong></a>, a solution that streamlines the delivery of virtual desktops and applications by allowing administrators to manage and provision resources efficiently across multiple environments</li> <li><a href="https://docs.citrix.com/en-us/citrix-virtual-apps-desktops/2305/downloads/third-party-notices-apps-and-desktops.pdf"><strong>Citrix Virtual Apps and Desktops</strong></a>, a solution from Citrix that delivers virtual apps and desktops</li> <li><a href="https://docs.cyberark.com/Downloads/Legal/Privileged%20Session%20Manager%20for%20SSH%20Third-Party%20Notices.pdf"><strong>Cyberarc</strong></a>, a security solution that specializes in privileged access management, enabling organizations to control and monitor access to critical systems and data, thereby enhancing overall cybersecurity posture</li> <li><a href="https://helpdesk.egnyte.com/hc/en-us/articles/360007071732-Third-Party-Software-Acknowledgements"><strong>Egnyte Desktop</strong></a>, a secure cloud storage solution designed for businesses, enabling file sharing, collaboration, and data management across teams while ensuring compliance and data protection</li> <li><a href="https://www.secunet.com/en/about-us/press/article/elstersecure-bietet-komfortablen-login-ohne-passwort-dank-secunet-protect4use"><strong>Elster</strong></a>, a digital platform developed by German tax authorities for secure and efficient electronic tax filing and management using secunet protect4use</li> <li><a href="https://github.com/ethereum/solidity"><strong>Ethereum Solidity</strong></a>, a high-level, object-oriented programming language designed for implementing smart contracts on the Ethereum platform</li> <li><a href="https://fossies.org/linux/icinga2/third-party/nlohmann_json/json.hpp"><strong>Inciga</strong></a>, a monitoring tool for IT infrastructure, designed to provide insights into system performance and availability through customizable dashboards and alerts</li> <li><a href="https://downloadmirror.intel.com/772507/THIRD-PARTY.txt"><strong>Intel Accelerator Management Daemon for VMware ESXi</strong></a>, a management tool designed for monitoring and controlling Intel hardware accelerators within VMware ESXi environments, optimizing performance and resource allocation</li> <li><a href="https://www.juniper.net/documentation/us/en/software/jims/jims-guide/jims-guide.pdf"><strong>Juniper Identity Management Service</strong></a></li> <li><a href="https://library.e.abb.com/public/2779c5f85f30484192eb3cb3f666a201/IP%20Gateway%20Open%20License%20Declaration_9AKK108467A4095_Rev_C.pdf"><strong>Microsoft Azure IoT <abbr title="Software Development Kit">SDK</abbr></strong></a>, a collection of tools and libraries to help developers connect, build, and deploy Internet of Things (IoT) solutions on the Azure cloud platform</li> <li><a href="https://github.com/microsoft/winget-cli"><strong>Microsoft WinGet</strong></a>, a command-line utility included in the Windows Package Manager</li> <li><a href="https://www.sisme.com/media/10994/manual_plexusav-p-avn-4-form8244-c.pdf"><strong>plexusAV</strong></a>, a high-performance AV-over-IP transceiver device capable of video encoding and decoding using the IPMX standard</li> <li><a href="https://docs-dev.pointr.tech/docs/8.x/Developer%20Portal/Open%20Source%20Licenses/"><strong>Pointr</strong></a>, a platform for indoor positioning and navigation solutions, offering tools and SDKs for developers to create location-based applications</li> <li><a href="https://www.secunet.com/en/about-us/press/article/elstersecure-bietet-komfortablen-login-ohne-passwort-dank-secunet-protect4use"><strong>secunet protect4use</strong></a>, a secure, passwordless multifactor authentication solution that transforms smartphones into digital keyrings, ensuring high security for online services and digital identities</li> <li><a href="https://www.foccusdigital.com/wp-content/uploads/2025/03/MRD-7000-Manual-8175V.pdf"><strong>Sencore MRD 7000</strong></a>, a professional multi-channel receiver and decoder supporting UHD and HD stream decoding</li> </ul> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 23, 2026 11:16:18 UTC">June 23, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
+<!doctype html><html lang=en class=no-js> <head><meta charset=utf-8><meta name=viewport content="width=device-width,initial-scale=1"><meta name=author content="Niels Lohmann"><link href="https://json.nlohmann.me/home/customers/" rel="canonical"><link href=../architecture/ rel=prev><link href=../sponsors/ rel=next><link rel=icon href=../../assets/images/favicon.png><meta name=generator content="mkdocs-1.6.1, mkdocs-material-9.7.6"><title>Customers - JSON for Modern C++</title><link rel=stylesheet href=../../assets/stylesheets/main.484c7ddc.min.css><link rel=stylesheet href=../../assets/stylesheets/palette.ab4e12ef.min.css><link rel="stylesheet" href="../../assets/external/fonts.googleapis.com/css.61a430c9.css"><style>:root{--md-text-font:"Roboto";--md-code-font:"JetBrains Mono"}</style><link rel=stylesheet href=../../css/custom.css><script>__md_scope=new URL("../..",location),__md_hash=e=>[...e].reduce(((e,_)=>(e<<5)-e+_.charCodeAt(0)),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script></head> <body dir=ltr data-md-color-scheme=default data-md-color-primary=indigo data-md-color-accent=indigo> <input class=md-toggle data-md-toggle=drawer type=checkbox id=__drawer autocomplete=off> <input class=md-toggle data-md-toggle=search type=checkbox id=__search autocomplete=off> <label class=md-overlay for=__drawer></label> <div data-md-component=skip> <a href=#customers class=md-skip> Skip to content </a> </div> <div data-md-component=announce> </div> <header class=md-header data-md-component=header> <nav class="md-header__inner md-grid" aria-label=Header> <a href=../.. title="JSON for Modern C++" class="md-header__button md-logo" aria-label="JSON for Modern C++" data-md-component=logo> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54"/></svg> </a> <label class="md-header__button md-icon" for=__drawer> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M3 6h18v2H3zm0 5h18v2H3zm0 5h18v2H3z"/></svg> </label> <div class=md-header__title data-md-component=header-title> <div class=md-header__ellipsis> <div class=md-header__topic> <span class=md-ellipsis> JSON for Modern C++ </span> </div> <div class=md-header__topic data-md-component=header-topic> <span class=md-ellipsis> Customers </span> </div> </div> </div> <form class=md-header__option data-md-component=palette> <input class=md-option data-md-color-media="(prefers-color-scheme: light)" data-md-color-scheme=default data-md-color-primary=indigo data-md-color-accent=indigo aria-label="Switch to dark mode" type=radio name=__palette id=__palette_0> <label class="md-header__button md-icon" title="Switch to dark mode" for=__palette_1 hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a4 4 0 0 0-4 4 4 4 0 0 0 4 4 4 4 0 0 0 4-4 4 4 0 0 0-4-4m0 10a6 6 0 0 1-6-6 6 6 0 0 1 6-6 6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12z"/></svg> </label> <input class=md-option data-md-color-media="(prefers-color-scheme: dark)" data-md-color-scheme=slate data-md-color-primary=indigo data-md-color-accent=indigo aria-label="Switch to light mode" type=radio name=__palette id=__palette_1> <label class="md-header__button md-icon" title="Switch to light mode" for=__palette_0 hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 18c-.89 0-1.74-.2-2.5-.55C11.56 16.5 13 14.42 13 12s-1.44-4.5-3.5-5.45C10.26 6.2 11.11 6 12 6a6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12z"/></svg> </label> </form> <script>var palette=__md_get("__palette");if(palette&&palette.color){if("(prefers-color-scheme)"===palette.color.media){var media=matchMedia("(prefers-color-scheme: light)"),input=document.querySelector(media.matches?"[data-md-color-media='(prefers-color-scheme: light)']":"[data-md-color-media='(prefers-color-scheme: dark)']");palette.color.media=input.getAttribute("data-md-color-media"),palette.color.scheme=input.getAttribute("data-md-color-scheme"),palette.color.primary=input.getAttribute("data-md-color-primary"),palette.color.accent=input.getAttribute("data-md-color-accent")}for(var[key,value]of Object.entries(palette.color))document.body.setAttribute("data-md-color-"+key,value)}</script> <label class="md-header__button md-icon" for=__search> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg> </label> <div class=md-search data-md-component=search role=dialog> <label class=md-search__overlay for=__search></label> <div class=md-search__inner role=search> <form class=md-search__form name=search> <input type=text class=md-search__input name=query aria-label=Search placeholder=Search autocapitalize=off autocorrect=off autocomplete=off spellcheck=false data-md-component=search-query required> <label class="md-search__icon md-icon" for=__search> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11z"/></svg> </label> <nav class=md-search__options aria-label=Search> <button type=reset class="md-search__icon md-icon" title=Clear aria-label=Clear tabindex=-1> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z"/></svg> </button> </nav> </form> <div class=md-search__output> <div class=md-search__scrollwrap tabindex=0 data-md-scrollfix> <div class=md-search-result data-md-component=search-result> <div class=md-search-result__meta> Initializing search </div> <ol class=md-search-result__list role=presentation></ol> </div> </div> </div> </div> </div> <div class=md-header__source> <a href="https://github.com/nlohmann/json" title="Go to repository" class="md-source" data-md-component="source"> <div class="md-source__icon md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </div> <div class=md-source__repository> nlohmann/json </div> </a> </div> </nav> </header> <div class=md-container data-md-component=container> <nav class=md-tabs aria-label=Tabs data-md-component=tabs> <div class=md-grid> <ul class=md-tabs__list> <li class="md-tabs__item md-tabs__item--active"> <a href=../.. class=md-tabs__link> Home </a> </li> <li class=md-tabs__item> <a href=../../features/arbitrary_types/ class=md-tabs__link> Features </a> </li> <li class=md-tabs__item> <a href=../../integration/ class=md-tabs__link> Integration </a> </li> <li class=md-tabs__item> <a href=../../api/basic_json/ class=md-tabs__link> API Documentation </a> </li> <li class=md-tabs__item> <a href=../../community/ class=md-tabs__link> Community </a> </li> </ul> </div> </nav> <main class=md-main data-md-component=main> <div class="md-main__inner md-grid"> <div class="md-sidebar md-sidebar--primary" data-md-component=sidebar data-md-type=navigation> <div class=md-sidebar__scrollwrap> <div class=md-sidebar__inner> <nav class="md-nav md-nav--primary md-nav--lifted" aria-label=Navigation data-md-level=0> <label class=md-nav__title for=__drawer> <a href=../.. title="JSON for Modern C++" class="md-nav__button md-logo" aria-label="JSON for Modern C++" data-md-component=logo> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54"/></svg> </a> JSON for Modern C++ </label> <div class=md-nav__source> <a href="https://github.com/nlohmann/json" title="Go to repository" class="md-source" data-md-component="source"> <div class="md-source__icon md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </div> <div class=md-source__repository> nlohmann/json </div> </a> </div> <ul class=md-nav__list data-md-scrollfix> <li class="md-nav__item md-nav__item--active md-nav__item--section md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_1 checked> <div class="md-nav__link md-nav__container"> <a href=../.. class="md-nav__link "> <span class=md-ellipsis> Home </span> </a> <label class="md-nav__link " for=__nav_1 id=__nav_1_label tabindex> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_1_label aria-expanded=true> <label class=md-nav__title for=__nav_1> <span class="md-nav__icon md-icon"></span> Home </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../license/ class=md-nav__link> <span class=md-ellipsis> License </span> </a> </li> <li class=md-nav__item> <a href=../faq/ class=md-nav__link> <span class=md-ellipsis> FAQ </span> </a> </li> <li class=md-nav__item> <a href=../exceptions/ class=md-nav__link> <span class=md-ellipsis> Exceptions </span> </a> </li> <li class=md-nav__item> <a href=../releases/ class=md-nav__link> <span class=md-ellipsis> Releases </span> </a> </li> <li class=md-nav__item> <a href=../design_goals/ class=md-nav__link> <span class=md-ellipsis> Design goals </span> </a> </li> <li class=md-nav__item> <a href=../architecture/ class=md-nav__link> <span class=md-ellipsis> Architecture </span> </a> </li> <li class="md-nav__item md-nav__item--active"> <input class="md-nav__toggle md-toggle" type=checkbox id=__toc> <label class="md-nav__link md-nav__link--active" for=__toc> <span class=md-ellipsis> Customers </span> <span class="md-nav__icon md-icon"></span> </label> <a href=./ class="md-nav__link md-nav__link--active"> <span class=md-ellipsis> Customers </span> </a> <nav class="md-nav md-nav--secondary" aria-label="Table of contents"> <label class=md-nav__title for=__toc> <span class="md-nav__icon md-icon"></span> Table of contents </label> <ul class=md-nav__list data-md-component=toc data-md-scrollfix> <li class=md-nav__item> <a href=#space-exploration class=md-nav__link> <span class=md-ellipsis> Space Exploration </span> </a> </li> <li class=md-nav__item> <a href=#automotive class=md-nav__link> <span class=md-ellipsis> Automotive </span> </a> </li> <li class=md-nav__item> <a href=#gaming-and-entertainment class=md-nav__link> <span class=md-ellipsis> Gaming and Entertainment </span> </a> </li> <li class=md-nav__item> <a href=#consumer-electronics class=md-nav__link> <span class=md-ellipsis> Consumer Electronics </span> </a> </li> <li class=md-nav__item> <a href=#operating-systems class=md-nav__link> <span class=md-ellipsis> Operating Systems </span> </a> </li> <li class=md-nav__item> <a href=#development-tools-and-ides class=md-nav__link> <span class=md-ellipsis> Development Tools and IDEs </span> </a> </li> <li class=md-nav__item> <a href=#machine-learning-and-ai class=md-nav__link> <span class=md-ellipsis> Machine Learning and AI </span> </a> </li> <li class=md-nav__item> <a href=#scientific-research-and-analysis class=md-nav__link> <span class=md-ellipsis> Scientific Research and Analysis </span> </a> </li> <li class=md-nav__item> <a href=#business-and-productivity-software class=md-nav__link> <span class=md-ellipsis> Business and Productivity Software </span> </a> </li> <li class=md-nav__item> <a href=#databases-and-big-data class=md-nav__link> <span class=md-ellipsis> Databases and Big Data </span> </a> </li> <li class=md-nav__item> <a href=#simulation-and-modeling class=md-nav__link> <span class=md-ellipsis> Simulation and Modeling </span> </a> </li> <li class=md-nav__item> <a href=#enterprise-and-cloud-applications class=md-nav__link> <span class=md-ellipsis> Enterprise and Cloud Applications </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../sponsors/ class=md-nav__link> <span class=md-ellipsis> Sponsors </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2> <label class=md-nav__link for=__nav_2 id=__nav_2_label tabindex=0> <span class=md-ellipsis> Features </span> <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_2_label aria-expanded=false> <label class=md-nav__title for=__nav_2> <span class="md-nav__icon md-icon"></span> Features </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../features/arbitrary_types/ class=md-nav__link> <span class=md-ellipsis> Arbitrary Type Conversions </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_2> <div class="md-nav__link md-nav__container"> <a href=../../features/binary_formats/ class="md-nav__link "> <span class=md-ellipsis> Binary Formats </span> </a> <label class="md-nav__link " for=__nav_2_2 id=__nav_2_2_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_2_label aria-expanded=false> <label class=md-nav__title for=__nav_2_2> <span class="md-nav__icon md-icon"></span> Binary Formats </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../features/binary_formats/bjdata/ class=md-nav__link> <span class=md-ellipsis> BJData </span> </a> </li> <li class=md-nav__item> <a href=../../features/binary_formats/bson/ class=md-nav__link> <span class=md-ellipsis> BSON </span> </a> </li> <li class=md-nav__item> <a href=../../features/binary_formats/cbor/ class=md-nav__link> <span class=md-ellipsis> CBOR </span> </a> </li> <li class=md-nav__item> <a href=../../features/binary_formats/messagepack/ class=md-nav__link> <span class=md-ellipsis> MessagePack </span> </a> </li> <li class=md-nav__item> <a href=../../features/binary_formats/ubjson/ class=md-nav__link> <span class=md-ellipsis> UBJSON </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../features/binary_values/ class=md-nav__link> <span class=md-ellipsis> Binary Values </span> </a> </li> <li class=md-nav__item> <a href=../../features/comments/ class=md-nav__link> <span class=md-ellipsis> Comments </span> </a> </li> <li class=md-nav__item> <a href=../../features/trailing_commas/ class=md-nav__link> <span class=md-ellipsis> Trailing Commas </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_6> <div class="md-nav__link md-nav__container"> <a href=../../features/element_access/ class="md-nav__link "> <span class=md-ellipsis> Element Access </span> </a> <label class="md-nav__link " for=__nav_2_6 id=__nav_2_6_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_6_label aria-expanded=false> <label class=md-nav__title for=__nav_2_6> <span class="md-nav__icon md-icon"></span> Element Access </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../features/element_access/unchecked_access/ class=md-nav__link> <span class=md-ellipsis> Unchecked access: operator[] </span> </a> </li> <li class=md-nav__item> <a href=../../features/element_access/checked_access/ class=md-nav__link> <span class=md-ellipsis> Checked access: at </span> </a> </li> <li class=md-nav__item> <a href=../../features/element_access/default_value/ class=md-nav__link> <span class=md-ellipsis> Access with default value: value </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../features/iterators/ class=md-nav__link> <span class=md-ellipsis> Iterators </span> </a> </li> <li class=md-nav__item> <a href=../../features/json_pointer/ class=md-nav__link> <span class=md-ellipsis> JSON Pointer </span> </a> </li> <li class=md-nav__item> <a href=../../features/json_patch/ class=md-nav__link> <span class=md-ellipsis> JSON Patch and Diff </span> </a> </li> <li class=md-nav__item> <a href=../../features/merge_patch/ class=md-nav__link> <span class=md-ellipsis> JSON Merge Patch </span> </a> </li> <li class=md-nav__item> <a href=../../features/modules/ class=md-nav__link> <span class=md-ellipsis> Modules </span> </a> </li> <li class=md-nav__item> <a href=../../features/namespace/ class=md-nav__link> <span class=md-ellipsis> nlohmann Namespace </span> </a> </li> <li class=md-nav__item> <a href=../../features/object_order/ class=md-nav__link> <span class=md-ellipsis> Object Order </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_14> <div class="md-nav__link md-nav__container"> <a href=../../features/parsing/ class="md-nav__link "> <span class=md-ellipsis> Parsing </span> </a> <label class="md-nav__link " for=__nav_2_14 id=__nav_2_14_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_14_label aria-expanded=false> <label class=md-nav__title for=__nav_2_14> <span class="md-nav__icon md-icon"></span> Parsing </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../features/parsing/json_lines/ class=md-nav__link> <span class=md-ellipsis> JSON Lines </span> </a> </li> <li class=md-nav__item> <a href=../../features/parsing/parse_exceptions/ class=md-nav__link> <span class=md-ellipsis> Parsing and Exceptions </span> </a> </li> <li class=md-nav__item> <a href=../../features/parsing/parser_callbacks/ class=md-nav__link> <span class=md-ellipsis> Parser Callbacks </span> </a> </li> <li class=md-nav__item> <a href=../../features/parsing/sax_interface/ class=md-nav__link> <span class=md-ellipsis> SAX Interface </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../features/assertions/ class=md-nav__link> <span class=md-ellipsis> Runtime Assertions </span> </a> </li> <li class=md-nav__item> <a href=../../features/enum_conversion/ class=md-nav__link> <span class=md-ellipsis> Specializing enum conversion </span> </a> </li> <li class=md-nav__item> <a href=../../features/macros/ class=md-nav__link> <span class=md-ellipsis> Supported Macros </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_18> <div class="md-nav__link md-nav__container"> <a href=../../features/types/ class="md-nav__link "> <span class=md-ellipsis> Types </span> </a> <label class="md-nav__link " for=__nav_2_18 id=__nav_2_18_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_18_label aria-expanded=false> <label class=md-nav__title for=__nav_2_18> <span class="md-nav__icon md-icon"></span> Types </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../features/types/number_handling/ class=md-nav__link> <span class=md-ellipsis> Number Handling </span> </a> </li> </ul> </nav> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_3> <div class="md-nav__link md-nav__container"> <a href=../../integration/ class="md-nav__link "> <span class=md-ellipsis> Integration </span> </a> <label class="md-nav__link " for=__nav_3 id=__nav_3_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_3_label aria-expanded=false> <label class=md-nav__title for=__nav_3> <span class="md-nav__icon md-icon"></span> Integration </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../integration/migration_guide/ class=md-nav__link> <span class=md-ellipsis> Migration Guide </span> </a> </li> <li class=md-nav__item> <a href=../../integration/cmake/ class=md-nav__link> <span class=md-ellipsis> CMake </span> </a> </li> <li class=md-nav__item> <a href=../../integration/package_managers/ class=md-nav__link> <span class=md-ellipsis> Package Managers </span> </a> </li> <li class=md-nav__item> <a href=../../integration/pkg-config/ class=md-nav__link> <span class=md-ellipsis> Pkg-config </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4> <label class=md-nav__link for=__nav_4 id=__nav_4_label tabindex=0> <span class=md-ellipsis> API Documentation </span> <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_4_label aria-expanded=false> <label class=md-nav__title for=__nav_4> <span class="md-nav__icon md-icon"></span> API Documentation </label> <ul class=md-nav__list data-md-scrollfix> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_1> <div class="md-nav__link md-nav__container"> <a href=../../api/basic_json/ class="md-nav__link "> <span class=md-ellipsis> basic_json </span> </a> <label class="md-nav__link " for=__nav_4_1 id=__nav_4_1_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_1_label aria-expanded=false> <label class=md-nav__title for=__nav_4_1> <span class="md-nav__icon md-icon"></span> basic_json </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../api/basic_json/basic_json/ class=md-nav__link> <span class=md-ellipsis> (Constructor) </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/~basic_json/ class=md-nav__link> <span class=md-ellipsis> (Destructor) </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/accept/ class=md-nav__link> <span class=md-ellipsis> accept </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/array/ class=md-nav__link> <span class=md-ellipsis> array </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/array_t/ class=md-nav__link> <span class=md-ellipsis> array_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/at/ class=md-nav__link> <span class=md-ellipsis> at </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/back/ class=md-nav__link> <span class=md-ellipsis> back </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/begin/ class=md-nav__link> <span class=md-ellipsis> begin </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/binary/ class=md-nav__link> <span class=md-ellipsis> binary </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/binary_t/ class=md-nav__link> <span class=md-ellipsis> binary_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/boolean_t/ class=md-nav__link> <span class=md-ellipsis> boolean_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/cbegin/ class=md-nav__link> <span class=md-ellipsis> cbegin </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/cbor_tag_handler_t/ class=md-nav__link> <span class=md-ellipsis> cbor_tag_handler_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/cend/ class=md-nav__link> <span class=md-ellipsis> cend </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/clear/ class=md-nav__link> <span class=md-ellipsis> clear </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/contains/ class=md-nav__link> <span class=md-ellipsis> contains </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/count/ class=md-nav__link> <span class=md-ellipsis> count </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/crbegin/ class=md-nav__link> <span class=md-ellipsis> crbegin </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/crend/ class=md-nav__link> <span class=md-ellipsis> crend </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/default_object_comparator_t/ class=md-nav__link> <span class=md-ellipsis> default_object_comparator_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/diff/ class=md-nav__link> <span class=md-ellipsis> diff </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/dump/ class=md-nav__link> <span class=md-ellipsis> dump </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/emplace/ class=md-nav__link> <span class=md-ellipsis> emplace </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/emplace_back/ class=md-nav__link> <span class=md-ellipsis> emplace_back </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/empty/ class=md-nav__link> <span class=md-ellipsis> empty </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/end/ class=md-nav__link> <span class=md-ellipsis> end </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/end_pos/ class=md-nav__link> <span class=md-ellipsis> end_pos </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/erase/ class=md-nav__link> <span class=md-ellipsis> erase </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/error_handler_t/ class=md-nav__link> <span class=md-ellipsis> error_handler_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/exception/ class=md-nav__link> <span class=md-ellipsis> exception </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/find/ class=md-nav__link> <span class=md-ellipsis> find </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/flatten/ class=md-nav__link> <span class=md-ellipsis> flatten </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/from_bjdata/ class=md-nav__link> <span class=md-ellipsis> from_bjdata </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/from_bson/ class=md-nav__link> <span class=md-ellipsis> from_bson </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/from_cbor/ class=md-nav__link> <span class=md-ellipsis> from_cbor </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/from_msgpack/ class=md-nav__link> <span class=md-ellipsis> from_msgpack </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/from_ubjson/ class=md-nav__link> <span class=md-ellipsis> from_ubjson </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/front/ class=md-nav__link> <span class=md-ellipsis> front </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/get/ class=md-nav__link> <span class=md-ellipsis> get </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/get_allocator/ class=md-nav__link> <span class=md-ellipsis> get_allocator </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/get_binary/ class=md-nav__link> <span class=md-ellipsis> get_binary </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/get_ptr/ class=md-nav__link> <span class=md-ellipsis> get_ptr </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/get_ref/ class=md-nav__link> <span class=md-ellipsis> get_ref </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/get_to/ class=md-nav__link> <span class=md-ellipsis> get_to </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/std_hash/ class=md-nav__link> <span class=md-ellipsis> std::hash&lt;basic_json&gt; </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/input_format_t/ class=md-nav__link> <span class=md-ellipsis> input_format_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/insert/ class=md-nav__link> <span class=md-ellipsis> insert </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/invalid_iterator/ class=md-nav__link> <span class=md-ellipsis> invalid_iterator </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_array/ class=md-nav__link> <span class=md-ellipsis> is_array </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_binary/ class=md-nav__link> <span class=md-ellipsis> is_binary </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_boolean/ class=md-nav__link> <span class=md-ellipsis> is_boolean </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_discarded/ class=md-nav__link> <span class=md-ellipsis> is_discarded </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_null/ class=md-nav__link> <span class=md-ellipsis> is_null </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_number/ class=md-nav__link> <span class=md-ellipsis> is_number </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_number_float/ class=md-nav__link> <span class=md-ellipsis> is_number_float </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_number_integer/ class=md-nav__link> <span class=md-ellipsis> is_number_integer </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_number_unsigned/ class=md-nav__link> <span class=md-ellipsis> is_number_unsigned </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_object/ class=md-nav__link> <span class=md-ellipsis> is_object </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_primitive/ class=md-nav__link> <span class=md-ellipsis> is_primitive </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_string/ class=md-nav__link> <span class=md-ellipsis> is_string </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_structured/ class=md-nav__link> <span class=md-ellipsis> is_structured </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/items/ class=md-nav__link> <span class=md-ellipsis> items </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/json_base_class_t/ class=md-nav__link> <span class=md-ellipsis> json_base_class_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/json_serializer/ class=md-nav__link> <span class=md-ellipsis> json_serializer </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/max_size/ class=md-nav__link> <span class=md-ellipsis> max_size </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/meta/ class=md-nav__link> <span class=md-ellipsis> meta </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/merge_patch/ class=md-nav__link> <span class=md-ellipsis> merge_patch </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/number_float_t/ class=md-nav__link> <span class=md-ellipsis> number_float_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/number_integer_t/ class=md-nav__link> <span class=md-ellipsis> number_integer_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/number_unsigned_t/ class=md-nav__link> <span class=md-ellipsis> number_unsigned_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/object/ class=md-nav__link> <span class=md-ellipsis> object </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/object_comparator_t/ class=md-nav__link> <span class=md-ellipsis> object_comparator_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/object_t/ class=md-nav__link> <span class=md-ellipsis> object_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/operator_ValueType/ class=md-nav__link> <span class=md-ellipsis> operator ValueType </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/operator_value_t/ class=md-nav__link> <span class=md-ellipsis> operator value_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/operator%5B%5D/ class=md-nav__link> <span class=md-ellipsis> operator[] </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/operator%3D/ class=md-nav__link> <span class=md-ellipsis> operator= </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/operator%2B%3D/ class=md-nav__link> <span class=md-ellipsis> operator+= </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/operator_eq/ class=md-nav__link> <span class=md-ellipsis> operator== </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/operator_ne/ class=md-nav__link> <span class=md-ellipsis> operator!= </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/operator_lt/ class=md-nav__link> <span class=md-ellipsis> operator< </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/operator_gt/ class=md-nav__link> <span class=md-ellipsis> operator> </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/operator_le/ class=md-nav__link> <span class=md-ellipsis> operator<= </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/operator_ge/ class=md-nav__link> <span class=md-ellipsis> operator>= </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/operator_spaceship/ class=md-nav__link> <span class=md-ellipsis> operator<=> </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/out_of_range/ class=md-nav__link> <span class=md-ellipsis> out_of_range </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/other_error/ class=md-nav__link> <span class=md-ellipsis> other_error </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/parse/ class=md-nav__link> <span class=md-ellipsis> parse </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/parse_error/ class=md-nav__link> <span class=md-ellipsis> parse_error </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/parse_event_t/ class=md-nav__link> <span class=md-ellipsis> parse_event_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/parser_callback_t/ class=md-nav__link> <span class=md-ellipsis> parser_callback_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/patch/ class=md-nav__link> <span class=md-ellipsis> patch </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/patch_inplace/ class=md-nav__link> <span class=md-ellipsis> patch_inplace </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/push_back/ class=md-nav__link> <span class=md-ellipsis> push_back </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/rbegin/ class=md-nav__link> <span class=md-ellipsis> rbegin </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/rend/ class=md-nav__link> <span class=md-ellipsis> rend </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/sax_parse/ class=md-nav__link> <span class=md-ellipsis> sax_parse </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/size/ class=md-nav__link> <span class=md-ellipsis> size </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/start_pos/ class=md-nav__link> <span class=md-ellipsis> start_pos </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/string_t/ class=md-nav__link> <span class=md-ellipsis> string_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/swap/ class=md-nav__link> <span class=md-ellipsis> swap </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/std_swap/ class=md-nav__link> <span class=md-ellipsis> std::swap&lt;basic_json&gt; </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/to_bjdata/ class=md-nav__link> <span class=md-ellipsis> to_bjdata </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/to_bson/ class=md-nav__link> <span class=md-ellipsis> to_bson </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/to_cbor/ class=md-nav__link> <span class=md-ellipsis> to_cbor </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/to_msgpack/ class=md-nav__link> <span class=md-ellipsis> to_msgpack </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/to_string/ class=md-nav__link> <span class=md-ellipsis> to_string </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/to_ubjson/ class=md-nav__link> <span class=md-ellipsis> to_ubjson </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/type/ class=md-nav__link> <span class=md-ellipsis> type </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/type_error/ class=md-nav__link> <span class=md-ellipsis> type_error </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/type_name/ class=md-nav__link> <span class=md-ellipsis> type_name </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/unflatten/ class=md-nav__link> <span class=md-ellipsis> unflatten </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/update/ class=md-nav__link> <span class=md-ellipsis> update </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/value/ class=md-nav__link> <span class=md-ellipsis> value </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/value_t/ class=md-nav__link> <span class=md-ellipsis> value_t </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_2> <div class="md-nav__link md-nav__container"> <a href=../../api/byte_container_with_subtype/ class="md-nav__link "> <span class=md-ellipsis> byte_container_with_subtype </span> </a> <label class="md-nav__link " for=__nav_4_2 id=__nav_4_2_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_2_label aria-expanded=false> <label class=md-nav__title for=__nav_4_2> <span class="md-nav__icon md-icon"></span> byte_container_with_subtype </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../api/byte_container_with_subtype/byte_container_with_subtype/ class=md-nav__link> <span class=md-ellipsis> (constructor) </span> </a> </li> <li class=md-nav__item> <a href=../../api/byte_container_with_subtype/clear_subtype/ class=md-nav__link> <span class=md-ellipsis> clear_subtype </span> </a> </li> <li class=md-nav__item> <a href=../../api/byte_container_with_subtype/has_subtype/ class=md-nav__link> <span class=md-ellipsis> has_subtype </span> </a> </li> <li class=md-nav__item> <a href=../../api/byte_container_with_subtype/set_subtype/ class=md-nav__link> <span class=md-ellipsis> set_subtype </span> </a> </li> <li class=md-nav__item> <a href=../../api/byte_container_with_subtype/subtype/ class=md-nav__link> <span class=md-ellipsis> subtype </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_3> <div class="md-nav__link md-nav__container"> <a href=../../api/adl_serializer/ class="md-nav__link "> <span class=md-ellipsis> adl_serializer </span> </a> <label class="md-nav__link " for=__nav_4_3 id=__nav_4_3_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_3_label aria-expanded=false> <label class=md-nav__title for=__nav_4_3> <span class="md-nav__icon md-icon"></span> adl_serializer </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../api/adl_serializer/from_json/ class=md-nav__link> <span class=md-ellipsis> from_json </span> </a> </li> <li class=md-nav__item> <a href=../../api/adl_serializer/to_json/ class=md-nav__link> <span class=md-ellipsis> to_json </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../api/json/ class=md-nav__link> <span class=md-ellipsis> json </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_5> <div class="md-nav__link md-nav__container"> <a href=../../api/json_pointer/ class="md-nav__link "> <span class=md-ellipsis> json_pointer </span> </a> <label class="md-nav__link " for=__nav_4_5 id=__nav_4_5_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_5_label aria-expanded=false> <label class=md-nav__title for=__nav_4_5> <span class="md-nav__icon md-icon"></span> json_pointer </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../api/json_pointer/json_pointer/ class=md-nav__link> <span class=md-ellipsis> (Constructor) </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/back/ class=md-nav__link> <span class=md-ellipsis> back </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/empty/ class=md-nav__link> <span class=md-ellipsis> empty </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/front/ class=md-nav__link> <span class=md-ellipsis> front </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/operator_string_t/ class=md-nav__link> <span class=md-ellipsis> operator string_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/operator_eq/ class=md-nav__link> <span class=md-ellipsis> operator== </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/operator_ne/ class=md-nav__link> <span class=md-ellipsis> operator!= </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/operator_slash/ class=md-nav__link> <span class=md-ellipsis> operator/ </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/operator_slasheq/ class=md-nav__link> <span class=md-ellipsis> operator/= </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/parent_pointer/ class=md-nav__link> <span class=md-ellipsis> parent_pointer </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/pop_back/ class=md-nav__link> <span class=md-ellipsis> pop_back </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/pop_front/ class=md-nav__link> <span class=md-ellipsis> pop_front </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/push_back/ class=md-nav__link> <span class=md-ellipsis> push_back </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/push_front/ class=md-nav__link> <span class=md-ellipsis> push_front </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/string_t/ class=md-nav__link> <span class=md-ellipsis> string_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/to_string/ class=md-nav__link> <span class=md-ellipsis> to_string </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_6> <div class="md-nav__link md-nav__container"> <a href=../../api/json_sax/ class="md-nav__link "> <span class=md-ellipsis> json_sax </span> </a> <label class="md-nav__link " for=__nav_4_6 id=__nav_4_6_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_6_label aria-expanded=false> <label class=md-nav__title for=__nav_4_6> <span class="md-nav__icon md-icon"></span> json_sax </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../api/json_sax/binary/ class=md-nav__link> <span class=md-ellipsis> binary </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_sax/boolean/ class=md-nav__link> <span class=md-ellipsis> boolean </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_sax/end_array/ class=md-nav__link> <span class=md-ellipsis> end_array </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_sax/end_object/ class=md-nav__link> <span class=md-ellipsis> end_object </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_sax/key/ class=md-nav__link> <span class=md-ellipsis> key </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_sax/null/ class=md-nav__link> <span class=md-ellipsis> null </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_sax/number_float/ class=md-nav__link> <span class=md-ellipsis> number_float </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_sax/number_integer/ class=md-nav__link> <span class=md-ellipsis> number_integer </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_sax/number_unsigned/ class=md-nav__link> <span class=md-ellipsis> number_unsigned </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_sax/parse_error/ class=md-nav__link> <span class=md-ellipsis> parse_error </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_sax/start_array/ class=md-nav__link> <span class=md-ellipsis> start_array </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_sax/start_object/ class=md-nav__link> <span class=md-ellipsis> start_object </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_sax/string/ class=md-nav__link> <span class=md-ellipsis> string </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../api/operator_ltlt/ class=md-nav__link> <span class=md-ellipsis> operator<<(basic_json), operator<<(json_pointer) </span> </a> </li> <li class=md-nav__item> <a href=../../api/operator_gtgt/ class=md-nav__link> <span class=md-ellipsis> operator>>(basic_json) </span> </a> </li> <li class=md-nav__item> <a href=../../api/operator_literal_json/ class=md-nav__link> <span class=md-ellipsis> operator""_json </span> </a> </li> <li class=md-nav__item> <a href=../../api/operator_literal_json_pointer/ class=md-nav__link> <span class=md-ellipsis> operator""_json_pointer </span> </a> </li> <li class=md-nav__item> <a href=../../api/ordered_json/ class=md-nav__link> <span class=md-ellipsis> ordered_json </span> </a> </li> <li class=md-nav__item> <a href=../../api/ordered_map/ class=md-nav__link> <span class=md-ellipsis> ordered_map </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_13> <div class="md-nav__link md-nav__container"> <a href=../../api/macros/ class="md-nav__link "> <span class=md-ellipsis> macros </span> </a> <label class="md-nav__link " for=__nav_4_13 id=__nav_4_13_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_13_label aria-expanded=false> <label class=md-nav__title for=__nav_4_13> <span class="md-nav__icon md-icon"></span> macros </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../api/macros/json_assert/ class=md-nav__link> <span class=md-ellipsis> JSON_ASSERT </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_brace_init_copy_semantics/ class=md-nav__link> <span class=md-ellipsis> JSON_BRACE_INIT_COPY_SEMANTICS </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_throw_user/ class=md-nav__link> <span class=md-ellipsis> JSON_CATCH_USER, JSON_THROW_USER, JSON_TRY_USER </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_diagnostics/ class=md-nav__link> <span class=md-ellipsis> JSON_DIAGNOSTICS </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_diagnostic_positions/ class=md-nav__link> <span class=md-ellipsis> JSON_DIAGNOSTIC_POSITIONS </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_disable_enum_serialization/ class=md-nav__link> <span class=md-ellipsis> JSON_DISABLE_ENUM_SERIALIZATION </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_has_cpp_11/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_CPP_11, JSON_HAS_CPP_14, JSON_HAS_CPP_17, JSON_HAS_CPP_20 </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_has_filesystem/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_EXPERIMENTAL_FILESYSTEM, JSON_HAS_FILESYSTEM </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_has_ranges/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_RANGES </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_has_static_rtti/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_STATIC_RTTI </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_has_three_way_comparison/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_THREE_WAY_COMPARISON </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_noexception/ class=md-nav__link> <span class=md-ellipsis> JSON_NOEXCEPTION </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_no_io/ class=md-nav__link> <span class=md-ellipsis> JSON_NO_IO </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_skip_library_version_check/ class=md-nav__link> <span class=md-ellipsis> JSON_SKIP_LIBRARY_VERSION_CHECK </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_skip_unsupported_compiler_check/ class=md-nav__link> <span class=md-ellipsis> JSON_SKIP_UNSUPPORTED_COMPILER_CHECK </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_use_global_udls/ class=md-nav__link> <span class=md-ellipsis> JSON_USE_GLOBAL_UDLS </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_use_implicit_conversions/ class=md-nav__link> <span class=md-ellipsis> JSON_USE_IMPLICIT_CONVERSIONS </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_use_legacy_discarded_value_comparison/ class=md-nav__link> <span class=md-ellipsis> JSON_USE_LEGACY_DISCARDED_VALUE_COMPARISON </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/nlohmann_define_derived_type/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_ONLY_SERIALIZE, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/nlohmann_define_type_intrusive/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_TYPE_INTRUSIVE, NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_TYPE_INTRUSIVE_ONLY_SERIALIZE </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/nlohmann_define_type_non_intrusive/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/nlohmann_define_type_with_names/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_TYPE_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/nlohmann_json_namespace/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_NAMESPACE </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/nlohmann_json_namespace_begin/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_NAMESPACE_BEGIN, NLOHMANN_JSON_NAMESPACE_END </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/nlohmann_json_namespace_no_version/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_NAMESPACE_NO_VERSION </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/nlohmann_json_serialize_enum/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_SERIALIZE_ENUM </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/nlohmann_json_serialize_enum_strict/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_SERIALIZE_ENUM_STRICT </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/nlohmann_json_version_major/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_VERSION_MAJOR, NLOHMANN_JSON_VERSION_MINOR, NLOHMANN_JSON_VERSION_PATCH </span> </a> </li> </ul> </nav> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_5> <div class="md-nav__link md-nav__container"> <a href=../../community/ class="md-nav__link "> <span class=md-ellipsis> Community </span> </a> <label class="md-nav__link " for=__nav_5 id=__nav_5_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_5_label aria-expanded=false> <label class=md-nav__title for=__nav_5> <span class="md-nav__icon md-icon"></span> Community </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../community/code_of_conduct/ class=md-nav__link> <span class=md-ellipsis> Code of Conduct </span> </a> </li> <li class=md-nav__item> <a href=../../community/contribution_guidelines/ class=md-nav__link> <span class=md-ellipsis> Contribution Guidelines </span> </a> </li> <li class=md-nav__item> <a href=../../community/quality_assurance/ class=md-nav__link> <span class=md-ellipsis> Quality assurance </span> </a> </li> <li class=md-nav__item> <a href=../../community/governance/ class=md-nav__link> <span class=md-ellipsis> Governance </span> </a> </li> <li class=md-nav__item> <a href=../../community/security_policy/ class=md-nav__link> <span class=md-ellipsis> Security Policy </span> </a> </li> </ul> </nav> </li> </ul> </nav> </div> </div> </div> <div class="md-sidebar md-sidebar--secondary" data-md-component=sidebar data-md-type=toc> <div class=md-sidebar__scrollwrap> <div class=md-sidebar__inner> <nav class="md-nav md-nav--secondary" aria-label="Table of contents"> <label class=md-nav__title for=__toc> <span class="md-nav__icon md-icon"></span> Table of contents </label> <ul class=md-nav__list data-md-component=toc data-md-scrollfix> <li class=md-nav__item> <a href=#space-exploration class=md-nav__link> <span class=md-ellipsis> Space Exploration </span> </a> </li> <li class=md-nav__item> <a href=#automotive class=md-nav__link> <span class=md-ellipsis> Automotive </span> </a> </li> <li class=md-nav__item> <a href=#gaming-and-entertainment class=md-nav__link> <span class=md-ellipsis> Gaming and Entertainment </span> </a> </li> <li class=md-nav__item> <a href=#consumer-electronics class=md-nav__link> <span class=md-ellipsis> Consumer Electronics </span> </a> </li> <li class=md-nav__item> <a href=#operating-systems class=md-nav__link> <span class=md-ellipsis> Operating Systems </span> </a> </li> <li class=md-nav__item> <a href=#development-tools-and-ides class=md-nav__link> <span class=md-ellipsis> Development Tools and IDEs </span> </a> </li> <li class=md-nav__item> <a href=#machine-learning-and-ai class=md-nav__link> <span class=md-ellipsis> Machine Learning and AI </span> </a> </li> <li class=md-nav__item> <a href=#scientific-research-and-analysis class=md-nav__link> <span class=md-ellipsis> Scientific Research and Analysis </span> </a> </li> <li class=md-nav__item> <a href=#business-and-productivity-software class=md-nav__link> <span class=md-ellipsis> Business and Productivity Software </span> </a> </li> <li class=md-nav__item> <a href=#databases-and-big-data class=md-nav__link> <span class=md-ellipsis> Databases and Big Data </span> </a> </li> <li class=md-nav__item> <a href=#simulation-and-modeling class=md-nav__link> <span class=md-ellipsis> Simulation and Modeling </span> </a> </li> <li class=md-nav__item> <a href=#enterprise-and-cloud-applications class=md-nav__link> <span class=md-ellipsis> Enterprise and Cloud Applications </span> </a> </li> </ul> </nav> </div> </div> </div> <div class=md-content data-md-component=content> <article class="md-content__inner md-typeset"> <a href="https://github.com/nlohmann/json/edit/develop/docs/mkdocs/docs/home/customers.md" title="Edit this page" class="md-content__button md-icon" rel="edit"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M10 20H6V4h7v5h5v3.1l2-2V8l-6-6H6c-1.1 0-2 .9-2 2v16c0 1.1.9 2 2 2h4zm10.2-7c.1 0 .3.1.4.2l1.3 1.3c.2.2.2.6 0 .8l-1 1-2.1-2.1 1-1c.1-.1.2-.2.4-.2m0 3.9L14.1 23H12v-2.1l6.1-6.1z"/></svg> </a> <a href="https://github.com/nlohmann/json/raw/develop/docs/mkdocs/docs/home/customers.md" title="View source of this page" class="md-content__button md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M17 18c.56 0 1 .44 1 1s-.44 1-1 1-1-.44-1-1 .44-1 1-1m0-3c-2.73 0-5.06 1.66-6 4 .94 2.34 3.27 4 6 4s5.06-1.66 6-4c-.94-2.34-3.27-4-6-4m0 6.5a2.5 2.5 0 0 1-2.5-2.5 2.5 2.5 0 0 1 2.5-2.5 2.5 2.5 0 0 1 2.5 2.5 2.5 2.5 0 0 1-2.5 2.5M9.27 20H6V4h7v5h5v4.07c.7.08 1.36.25 2 .49V8l-6-6H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h4.5a8.2 8.2 0 0 1-1.23-2"/></svg> </a> <h1 id=customers>Customers<a class=headerlink href=#customers title="Permanent link">&para;</a></h1> <p>The library is used in multiple projects, applications, operating systems, etc. The list below is not exhaustive, but the result of an internet search. If you know further customers of the library, <a href=mailto:mail@nlohmann.me>please let me know</a>.</p> <p><a href=../../images/customers.png><img alt src=../../images/customers.png></a></p> <h2 id=space-exploration>Space Exploration<a class=headerlink href=#space-exploration title="Permanent link">&para;</a></h2> <ul> <li><a href="https://en.wikipedia.org/wiki/Peregrine_Mission_One"><strong>Peregrine Lunar Lander Flight 01</strong></a> - The library was used for payload management in the <strong>Peregrine Moon Lander</strong>, developed by <strong>Astrobotic Technology</strong> and launched as part of <abbr title="National Aeronautics and Space Administration">NASA</abbr>'s <strong>Commercial Lunar Payload Services (CLPS)</strong> program. After six days in orbit, the spacecraft was intentionally redirected into Earth's atmosphere, where it burned up over the Pacific Ocean on <strong>January 18, 2024</strong>.</li> </ul> <h2 id=automotive>Automotive<a class=headerlink href=#automotive title="Permanent link">&para;</a></h2> <ul> <li><a href="https://github.com/alexa/alexa-auto-sdk"><strong>Alexa Auto <abbr title="Software Development Kit">SDK</abbr></strong></a>, a software development kit enabling the integration of Alexa into automotive systems</li> <li><a href="https://github.com/ApolloAuto/apollo"><strong>Apollo</strong></a>, a framework for building autonomous driving systems</li> <li><a href="https://download.automotivelinux.org/AGL/release/jellyfish/latest/qemux86-64/deploy/licenses/nlohmann-json/"><strong>Automotive Grade Linux (AGL)</strong></a>, a collaborative open-source platform for automotive software development</li> <li><a href="http://webmanual.genesis.com/ccIC/AVNT/JW/KOR/English/reference010.html"><strong>Genesis Motor</strong> (infotainment)</a>, a luxury automotive brand</li> <li><a href="https://www.hyundai.com/wsvc/ww/download.file.do?id=/content/hyundai/ww/data/opensource/data/GN7-2022/licenseCode/info"><strong>Hyundai</strong> (infotainment)</a>, a global automotive brand</li> <li><a href="http://webmanual.kia.com/PREM_GEN6/AVNT/RJPE/KOR/Korean/reference010.html"><strong>Kia</strong> (infotainment)</a>, a global automotive brand</li> <li><a href="https://group.mercedes-benz.com/careers/about-us/mercedes-benz-operating-system/"><strong>Mercedes-Benz Operating System (MB.OS)</strong></a>, a core component of the vehicle software ecosystem from Mercedes-Benz</li> <li><a href="https://assets.ctfassets.net/2md5qhoeajym/3cwyo4eoufk4yingUwusFt/ded2c47da620fdfc99c88c7156d2c1d8/In-Vehicle_OSS_Attribution_2024__11-24_.pdf"><strong>Rivian</strong> (infotainment)</a>, an electric vehicle manufacturer</li> <li><a href="https://www.globalsuzuki.com/motorcycle/ipc/oss/oss_48KA_00.pdf"><strong>Suzuki</strong> (infotainment)</a>, a global automotive and motorcycle manufacturer</li> </ul> <h2 id=gaming-and-entertainment>Gaming and Entertainment<a class=headerlink href=#gaming-and-entertainment title="Permanent link">&para;</a></h2> <ul> <li><a href="https://www.mobygames.com/person/1195889/niels-lohmann/credits/"><strong>Assassin's Creed: Mirage</strong></a>, a stealth-action game set in the Middle East, focusing on the journey of a young assassin with classic parkour and stealth mechanics</li> <li><a href="https://www.mobygames.com/person/1195889/niels-lohmann/credits/"><strong>Chasm: The Rift</strong></a>, a first-person shooter blending horror and adventure, where players navigate dark realms and battle monsters</li> <li><a href="https://www.mobygames.com/person/1195889/niels-lohmann/credits/"><strong>College Football 25</strong></a>, a college football simulation game featuring gameplay that mimics real-life college teams and competitions</li> <li><a href="https://concepts.app/en/licenses"><strong>Concepts</strong></a>, a digital sketching app designed for creative professionals, offering flexible drawing tools for illustration, design, and brainstorming</li> <li><a href="https://www.depthkit.tv/third-party-licenses"><strong>Depthkit</strong></a>, a tool for creating and capturing volumetric video, enabling immersive 3D experiences and interactive content</li> <li><a href="https://img.ly/acknowledgements"><strong>IMG.LY</strong></a>, a platform offering creative tools and SDKs for integrating advanced image and video editing in applications</li> <li><a href="https://loot.readthedocs.io/_/downloads/en/0.13.0/pdf/"><strong>LOOT</strong></a>, a tool for optimizing the load order of game plugins, commonly used in The Elder Scrolls and Fallout series</li> <li><a href="https://www.mobygames.com/person/1195889/niels-lohmann/credits/"><strong>Madden NFL 25</strong></a>, a sports simulation game capturing the excitement of American football with realistic gameplay and team management features</li> <li><a href="https://marne.io/licenses"><strong>Marne</strong></a>, an unofficial private server platform for hosting custom Battlefield 1 game experiences</li> <li><a href="https://www.minecraft.net/zh-hant/attribution"><strong>Minecraft</strong></a>, a popular sandbox video game</li> <li><a href="https://www.mobygames.com/person/1195889/niels-lohmann/credits/"><strong>NHL 22</strong></a>, a hockey simulation game offering realistic gameplay, team management, and various modes to enhance the hockey experience</li> <li><a href="https://pixelpart.net/documentation/book/third-party.html"><strong>Pixelpart</strong></a>, a 2D animation and video compositing software that allows users to create animated graphics and visual effects with a focus on simplicity and ease of use</li> <li><a href="https://mysupport.razer.com/app/answers/detail/a_id/14146/~/open-source-software-for-razer-software"><strong>Razer Cortex</strong></a>, a gaming performance optimizer and system booster designed to enhance the gaming experience</li> <li><a href="https://www.mobygames.com/person/1195889/niels-lohmann/credits/"><strong>Red Dead Redemption II</strong></a>, an open-world action-adventure game following an outlaw's story in the late 1800s, emphasizing deep storytelling and immersive gameplay</li> <li><a href="https://www.snap.com/terms/license-android"><strong>Snapchat</strong></a>, a multimedia messaging and augmented reality app for communication and entertainment</li> <li><a href="https://www.square-enix-games.com/en_US/documents/tactics-ogre-reborn-pc-installer-software-and-associated-plug-ins-disclosure"><strong>Tactics Ogre: Reborn</strong></a>, a tactical role-playing game featuring strategic battles and deep storytelling elements</li> <li><a href="https://www.amazon.com/gp/help/customer/display.html?nodeId=T7fLNw5oAevCMtJFPj&amp;pop-up=1"><strong>Throne and Liberty</strong></a>, an MMORPG that offers an expansive fantasy world with dynamic gameplay and immersive storytelling</li> <li><a href="https://docs.unity3d.com/Packages/com.unity.services.vivox@15.1/license/Third%20Party%20Notices.html"><strong>Unity Vivox</strong></a>, a communication service that enables voice and text chat functionality in multiplayer games developed with Unity</li> <li><a href="https://www.mobygames.com/person/1195889/niels-lohmann/credits/"><strong>Zool: Redimensioned</strong></a>, a modern reimagining of the classic platformer featuring fast-paced gameplay and vibrant environments</li> <li><a href="https://immersitech.io/open-source-third-party-software/"><strong>immersivetech</strong></a>, a technology company focused on immersive experiences, providing tools and solutions for virtual and augmented reality applications</li> </ul> <h2 id=consumer-electronics>Consumer Electronics<a class=headerlink href=#consumer-electronics title="Permanent link">&para;</a></h2> <ul> <li><a href="https://www.audinate.com/legal/software-licensing/dante-av-h-open-source-licenses/"><strong>Audinate</strong></a>, a provider of networked audio solutions specializing in Dante technology, which facilitates high-quality digital audio transport over IP networks</li> <li><a href="https://carolburo.com/wp-content/uploads/2024/06/LiDE400_OnlineManual_Win_FR_V02.pdf"><strong>Canon CanoScan LIDE</strong></a>, a series of flatbed scanners offering high-resolution image scanning for home and office use</li> <li><a href="https://www.mediaexpert.pl/products/files/73/7338196/Instrukcja-obslugi-CANON-Pixma-TS7450i.pdf"><strong>Canon PIXMA Printers</strong></a>, a line of all-in-one inkjet printers known for high-quality printing and wireless connectivity</li> <li><a href="https://www.cisco.com/c/dam/en_us/about/doing_business/open_source/docs/CiscoWebexDeskCamera-23-1622100417.pdf"><strong>Cisco Webex Desk Camera</strong></a>, a video camera designed for professional-quality video conferencing and remote collaboration</li> <li><a href="http://2ak5ape.257.cz/"><strong>Philips Hue Personal Wireless Lighting</strong></a>, a smart lighting system for customizable and wireless home illumination</li> <li><a href="https://www.meta.com/de/en/legal/smart-glasses/third-party-notices-android/03/"><strong>Ray-Ban Meta Smart glasses</strong></a>, a pair of smart glasses designed for capturing photos and videos with integrated connectivity and social features</li> <li><a href="https://mysupport.razer.com/app/answers/detail/a_id/14146/~/open-source-software-for-razer-software"><strong>Razer Synapse</strong></a>, a unified configuration software enabling hardware customization for Razer devices</li> <li><a href="https://cache.industry.siemens.com/dl/files/790/109793790/att_1054961/v2/OSS_SINEMA-RC_86.pdf"><strong>Siemens SINEMA Remote Connect</strong></a>, a remote connectivity solution for monitoring and managing industrial networks and devices securely</li> <li><a href="https://doc.dl.playstation.net/doc/ps4-oss/index.html"><strong>Sony PlayStation 4</strong></a>, a gaming console developed by Sony that offers a wide range of games and multimedia entertainment features</li> <li><a href="https://helpguide.sony.net/rc/vwd/v1/zh-cn/print.pdf"><strong>Sony Virtual Webcam Driver for Remote Camera</strong></a>, a software driver that enables the use of Sony cameras as virtual webcams for video conferencing and streaming</li> </ul> <h2 id=operating-systems>Operating Systems<a class=headerlink href=#operating-systems title="Permanent link">&para;</a></h2> <ul> <li><a href="https://www.apple.com/macos"><strong>Apple iOS and macOS</strong></a>, a family of operating systems developed by Apple, including iOS for mobile devices and macOS for desktop computers</li> <li><a href="https://fuchsia.googlesource.com/third_party/json/"><strong>Google Fuchsia</strong></a>, an open-source operating system developed by Google, designed to be secure, updatable, and adaptable across various devices</li> <li><a href="https://github.com/SerenityOS/serenity"><strong>SerenityOS</strong></a>, an open-source operating system that aims to provide a simple and beautiful user experience with a focus on simplicity and elegance</li> <li><a href="http://ftp.emacinc.com/openembedded-sw/kirkstone-icop-5.15-kirkstone-6.0/archive-2024-10/pn8m-090t-ppc/licenses/nlohmann-json/"><strong>Yocto</strong></a>, a Linux-based build system for creating custom operating systems and software distributions, tailored for embedded devices and IoT applications</li> </ul> <h2 id=development-tools-and-ides>Development Tools and IDEs<a class=headerlink href=#development-tools-and-ides title="Permanent link">&para;</a></h2> <ul> <li><a href="https://www.accentize.com/products/SpectralBalanceManual.pdf"><strong>Accentize SpectralBalance</strong></a>, an adaptive speech analysis tool designed to enhance audio quality by optimizing frequency balance in recordings</li> <li><a href="https://documentation-service.arm.com/static/66558e9d876c8d213b7843e4"><strong>Arm Compiler for Linux</strong></a>, a software development toolchain for compiling and optimizing applications on Arm-based Linux systems</li> <li><a href="https://s3.amazonaws.com/BBSW-download/BBEdit_15.1.2_User_Manual.pdf"><strong>BBEdit</strong></a>, a professional text and code editor for macOS</li> <li><a href="https://coderpad.io"><strong>CoderPad</strong></a>, a collaborative coding platform that enables real-time code interviews and assessments for developers; the library is included in every CoderPad instance and can be accessed with a simple <code>#include "json.hpp"</code></li> <li><a href="https://godbolt.org"><strong>Compiler Explorer</strong></a>, a web-based tool that allows users to write, compile, and visualize the assembly output of code in various programming languages; the library is readily available and accessible with the directive <code>#include &lt;nlohmann/json.hpp&gt;</code>.</li> <li><a href="https://github.com/github/codeql"><strong>GitHub CodeQL</strong></a>, a code analysis tool used for identifying security vulnerabilities and bugs in software through semantic queries</li> <li><a href="https://docs.hex-rays.com/user-guide/user-interface/licenses"><strong>Hex-Rays</strong></a>, a reverse engineering toolset for analyzing and decompiling binaries, primarily used for security research and vulnerability analysis</li> <li><a href="https://github.com/WerWolv/ImHex"><strong>ImHex</strong></a>, a hex editor designed for reverse engineering, providing advanced features for data analysis and manipulation</li> <li><a href="https://intel.github.io/gpasdk-doc/src/licenses.html"><strong>Intel GPA Framework</strong></a>, a suite of cross-platform tools for capturing, analyzing, and optimizing graphics applications across different APIs</li> <li><a href="https://www.intopix.com/software-licensing"><strong>Intopix</strong></a>, a provider of advanced image processing and compression solutions used in software development and AV workflows</li> <li><a href="https://www.oracle.com/a/tech/docs/jdk8-lium.pdf"><strong>Java SE</strong></a>, the core Java platform that provides the libraries and runtime needed to build and run general-purpose Java applications</li> <li><a href="https://mkvtoolnix.download/doc/README.md"><strong>MKVToolNix</strong></a>, a set of tools for creating, editing, and inspecting MKV (Matroska) multimedia container files</li> <li><a href="https://github.com/facebook/yoga"><strong>Meta Yoga</strong></a>, a layout engine that facilitates flexible and efficient user interface design across multiple platforms</li> <li><a href="https://docs.nvidia.com/nsight-compute/2022.2/pdf/CopyrightAndLicenses.pdf"><strong>NVIDIA Nsight Compute</strong></a>, a performance analysis tool for CUDA applications that provides detailed insights into GPU performance metrics</li> <li><a href="https://github.com/notepad-plus-plus/notepad-plus-plus"><strong>Notepad++</strong></a>, a free source code editor that supports various programming languages</li> <li><a href="https://gitlab.com/CalcProgrammer1/OpenRGB"><strong>OpenRGB</strong></a>, an open source RGB lighting control that doesn't depend on manufacturer software</li> <li><a href="https://github.com/open-telemetry/opentelemetry-cpp"><strong>OpenTelemetry C++</strong></a>, a library for collecting and exporting observability data in C++, enabling developers to implement distributed tracing and metrics in their application</li> <li><a href="https://doc.qt.io/qtcreator/qtcreator-attribution-json-nlohmann.html"><strong>Qt Creator</strong></a>, an IDE for developing applications using the Qt application framework</li> <li><a href="https://docs.scanbot.io/barcode-scanner-sdk/web/third-party-libraries/"><strong>Scanbot <abbr title="Software Development Kit">SDK</abbr></strong></a>, a software development kit (<abbr title="Software Development Kit">SDK</abbr>) that provides tools for integrating advanced document scanning and barcode scanning capabilities into applications</li> </ul> <h2 id=machine-learning-and-ai>Machine Learning and AI<a class=headerlink href=#machine-learning-and-ai title="Permanent link">&para;</a></h2> <ul> <li><a href="https://github.com/apple/coremltools"><strong>Apple Core ML Tools</strong></a>, a set of tools for converting and configuring machine learning models for deployment in Apple's Core ML framework</li> <li><a href="https://www.avular.com/licenses/nlohmann-json-3.9.1.txt"><strong>Avular Mobile Robotics</strong></a>, a platform for developing and deploying mobile robotics solutions</li> <li><a href="https://github.com/google/gemma.cpp"><strong>Google gemma.cpp</strong></a>, a lightweight C++ inference engine designed for running AI models from the Gemma family</li> <li><a href="https://github.com/ggerganov/llama.cpp"><strong>llama.cpp</strong></a>, a C++ library designed for efficient inference of large language models (LLMs), enabling streamlined integration into applications</li> <li><a href="https://github.com/ml-explore/mlx"><strong>MLX</strong></a>, an array framework for machine learning on Apple Silicon</li> <li><a href="https://github.com/Mozilla-Ocho/llamafile"><strong>Mozilla llamafile</strong></a>, a tool designed for distributing and executing large language models (LLMs) efficiently using a single file format</li> <li><a href="https://docs.nvidia.com/ace/latest/index.html"><strong>NVIDIA ACE</strong></a>, a suite of real-time AI solutions designed for the development of interactive avatars and digital human applications, enabling scalable and sophisticated user interactions</li> <li><a href="https://support.peer.inc/hc/en-us/articles/17261335054235-Licenses"><strong>Peer</strong></a>, a platform offering personalized AI assistants for interactive learning and creative collaboration</li> <li><a href="https://github.com/leejet/stable-diffusion.cpp"><strong>stable-diffusion.cpp</strong></a>, a C++ implementation of the Stable Diffusion image generation model</li> <li><a href="https://tanvas.co/tanvastouch-sdk-third-party-acknowledgments"><strong>TanvasTouch</strong></a>, a software development kit (<abbr title="Software Development Kit">SDK</abbr>) that enables developers to create tactile experiences on touchscreens, allowing users to feel textures and physical sensations in a digital environment</li> <li><a href="https://github.com/tensorflow/tensorflow"><strong>TensorFlow</strong></a>, a machine learning framework that facilitates the development and training of models, supporting data serialization and efficient data exchange between components</li> </ul> <h2 id=scientific-research-and-analysis>Scientific Research and Analysis<a class=headerlink href=#scientific-research-and-analysis title="Permanent link">&para;</a></h2> <ul> <li><a href="https://www.black-sat.org/en/stable/installation/linux.html"><strong>BLACK</strong></a>, a bounded linear temporal logic (LTL) satisfiability checker</li> <li><a href="https://gitlab.cern.ch/atlas/athena/-/blob/main/Control/PerformanceMonitoring/PerfMonComps/src/PerfMonMTSvc.h"><strong>CERN Atlas Athena</strong></a>, a software framework used in the ATLAS experiment at the Large Hadron Collider (LHC) for performance monitoring</li> <li><a href="https://github.com/unicode-org/icu"><strong>ICU</strong></a>, the International Components for Unicode, a mature library for software globalization and multilingual support</li> <li><a href="https://github.com/Kitware/kamera"><strong>KAMERA</strong></a>, a platform for synchronized data collection and real-time deep learning to map marine species like polar bears and seals, aiding Arctic ecosystem research</li> <li><a href="https://gitlab.com/kicad/code/kicad/-/tree/master/thirdparty/nlohmann_json"><strong>KiCad</strong></a>, a free and open-source software suite for electronic design automation</li> <li><a href="https://www.maplesoft.com/support/help/Maple/view.aspx?path=copyright"><strong>Maple</strong></a>, a symbolic and numeric computing environment for advanced mathematical modeling and analysis</li> <li><a href="https://mevislabdownloads.mevis.de/docs/current/MeVis/ThirdParty/Documentation/Publish/ThirdPartyReference/index.html"><strong>MeVisLab</strong></a>, a software framework for medical image processing and visualization.</li> <li><a href="https://openpmd-api.readthedocs.io/en/0.8.0-alpha/backends/json.html"><strong>OpenPMD <abbr title="Application Programming Interfaces">API</abbr></strong></a>, a versatile programming interface for accessing and managing scientific data, designed to facilitate the efficient storage, retrieval, and sharing of simulation data across various applications and platforms</li> <li><a href="https://github.com/Kitware/ParaView"><strong>ParaView</strong></a>, an open-source tool for large-scale data visualization and analysis across various scientific domains</li> <li><a href="https://gitlab.b-data.ch/qgis/qgis/-/blob/backport-57658-to-release-3_34/external/nlohmann/json.hpp"><strong>QGIS</strong></a>, a free and open-source geographic information system (GIS) application that allows users to create, edit, visualize, and analyze geospatial data across a variety of formats</li> <li><a href="https://github.com/Kitware/VTK"><strong>VTK</strong></a>, a software library for 3D computer graphics, image processing, and visualization</li> <li><a href="https://github.com/Kitware/VolView"><strong>VolView</strong></a>, a lightweight application for interactive visualization and analysis of 3D medical imaging data.</li> </ul> <h2 id=business-and-productivity-software>Business and Productivity Software<a class=headerlink href=#business-and-productivity-software title="Permanent link">&para;</a></h2> <ul> <li><a href="https://www.esri.com/content/dam/esrisites/en-us/media/legal/open-source-acknowledgements/arcgis-pro-2-8-attribution-report.html"><strong>ArcGIS PRO</strong></a>, a desktop geographic information system (GIS) application developed by Esri for mapping and spatial analysis</li> <li><a href="https://damassets.autodesk.net/content/dam/autodesk/www/Company/legal-notices-trademarks/autodesk-desktop-platform-components/internal-autodesk-components-web-page-2023.pdf"><strong>Autodesk Desktop</strong></a>, a software platform developed by Autodesk for creating and managing desktop applications and services</li> <li><a href="https://www.checkpoint.com/about-us/copyright-and-trademarks/"><strong>Check Point</strong></a>, a cybersecurity company specializing in threat prevention and network security solutions, offering a range of products designed to protect enterprises from cyber threats and ensure data integrity</li> <li><a href="https://officecdnmac.microsoft.com/pr/legal/mac/OfficeforMacAttributions.html"><strong>Microsoft Office for Mac</strong></a>, a suite of productivity applications developed by Microsoft for macOS, including tools for word processing, spreadsheets, and presentations</li> <li><a href="https://www.microsoft.com/microsoft-teams/"><strong>Microsoft Teams</strong></a>, a team collaboration application offering workspace chat and video conferencing, file storage, and integration of proprietary and third-party applications and services</li> <li><a href="https://docs.nexthink.com/legal/services-terms/experience-open-source-software-licenses/infinity-2022.8-software-licenses"><strong>Nexthink Infinity</strong></a>, a digital employee experience management platform for monitoring and improving IT performance</li> <li><a href="https://docs.sophos.com/nsg/licenses/SophosConnect/SophosConnectAttribution.html"><strong>Sophos Connect Client</strong></a>, a secure VPN client from Sophos that allows remote users to connect to their corporate network, ensuring secure access to resources and data</li> <li><a href="https://stonebranchdocs.atlassian.net/wiki/spaces/UA77/pages/799545647/Licenses+for+Third-Party+Libraries"><strong>Stonebranch</strong></a>, a cloud-based cybersecurity solution that integrates backup, disaster recovery, and cybersecurity features to protect data and ensure business continuity for organizations</li> <li><a href="https://tablecruncher.com/"><strong>Tablecruncher</strong></a>, a data analysis tool that allows users to import, analyze, and visualize spreadsheet data, offering interactive features for better insights and decision-making</li> <li><a href="https://help.magicplan.app/acknowledgments"><strong>magicplan</strong></a>, a mobile application for creating floor plans and interior designs using augmented reality</li> </ul> <h2 id=databases-and-big-data>Databases and Big Data<a class=headerlink href=#databases-and-big-data title="Permanent link">&para;</a></h2> <ul> <li><a href="https://code.ornl.gov/ecpcitest/adios2/-/tree/pr4285_FFSUpstream/thirdparty/nlohmann_json?ref_type=heads"><strong>ADIOS2</strong></a>, a data management framework designed for high-performance input and output operations</li> <li><a href="https://docs.cribl.io/stream/third-party-current-list/"><strong>Cribl Stream</strong></a>, a real-time data processing platform that enables organizations to collect, route, and transform observability data, enhancing visibility and insights into their systems</li> <li><a href="https://github.com/sqlitebrowser/sqlitebrowser"><strong>DB Browser for SQLite</strong></a>, a visual open-source tool for creating, designing, and editing SQLite database files</li> <li><a href="https://docs.oracle.com/cd/E17952_01/connector-cpp-9.1-license-com-en/license-opentelemetry-cpp-com.html"><strong>MySQL Connector/C++</strong></a>, a C++ library for connecting and interacting with MySQL databases</li> <li><a href="https://downloads.mysql.com/docs/licenses/cluster-9.0-com-en.pdf"><strong>MySQL NDB Cluster</strong></a>, a distributed database system that provides high availability and scalability for MySQL databases</li> <li><a href="https://downloads.mysql.com/docs/licenses/mysql-shell-8.0-gpl-en.pdf"><strong>MySQL Shell</strong></a>, an advanced client and code editor for interacting with MySQL servers, supporting SQL, Python, and JavaScript</li> <li><a href="https://github.com/prestodb/presto"><strong>PrestoDB</strong></a>, a distributed SQL query engine designed for large-scale data analytics, originally developed by Facebook</li> <li><a href="https://root.cern/doc/v614/classnlohmann_1_1basic__json.html"><strong>ROOT Data Analysis Framework</strong></a>, an open-source data analysis framework widely used in high-energy physics and other fields for data processing and visualization</li> <li><a href="https://github.com/wiredtiger/wiredtiger"><strong>WiredTiger</strong></a>, a high-performance storage engine for databases, offering support for compression, concurrency, and checkpointing</li> </ul> <h2 id=simulation-and-modeling>Simulation and Modeling<a class=headerlink href=#simulation-and-modeling title="Permanent link">&para;</a></h2> <ul> <li><a href="https://www.datocms-assets.com/104353/1698904597-holosuite-third-party-software-credits-and-attributions-2.pdf"><strong>Arcturus HoloSuite</strong></a>, a software toolset for capturing, editing, and streaming volumetric video, featuring advanced compression technologies for high-quality 3D content creation</li> <li><a href="https://pure.tudelft.nl/ws/files/85338589/tgis.12673.pdf"><strong>azul</strong></a>, a fast and efficient 3D city model viewer designed for visualizing urban environments and spatial data</li> <li><a href="https://projects.blender.org/blender/blender/search?q=nlohmann"><strong>Blender</strong></a>, a free and open-source 3D creation suite for modeling, animation, rendering, and more</li> <li><a href="https://cpplot.readthedocs.io/en/latest/library_api/function_eigen_8h_1ac080eac0541014c5892a55e41bf785e6.html"><strong>cpplot</strong></a>, a library for creating interactive graphs and charts in C++, which can be viewed in web browsers</li> <li><a href="https://learn.foundry.com/nuke/content/misc/studio_third_party_libraries.html"><strong>Foundry Nuke</strong></a>, a powerful node-based digital compositing and visual effects application used in film and television post-production</li> <li><a href="https://www.gams.com/47/docs/THIRDPARTY.html"><strong>GAMS</strong></a>, a high-performance mathematical modeling system for optimization and decision support</li> <li><a href="https://github.com/Kitware/SMTK"><strong>Kitware SMTK</strong></a>, a software toolkit for managing simulation models and workflows in scientific and engineering applications</li> <li><a href="https://docs.mstarcfd.com/3_Licensing/thirdparty-licenses.html"><strong>M-Star</strong></a>, a computational fluid dynamics software for simulating and analyzing fluid flow</li> <li><a href="https://www.maplesoft.com/support/help/MapleSim/view.aspx?path=CADToolbox/copyright"><strong>MapleSim CAD Toolbox</strong></a>, a software extension for MapleSim that integrates CAD models, allowing users to import, manipulate, and analyze 3D CAD data within the MapleSim environment for enhanced modeling and simulation</li> <li><a href="https://docs.omniverse.nvidia.com/composer/latest/common/product-licenses/usd-explorer/usd-explorer-2023.2.0-licenses-manifest.html"><strong>NVIDIA Omniverse</strong></a>, a platform for 3D content creation and collaboration that enables real-time simulations and interactive experiences across various industries</li> <li><a href="https://rmanwiki-26.pixar.com/space/REN26/19662083/Legal+Notice"><strong>Pixar Renderman</strong></a>, a photorealistic 3D rendering software developed by Pixar, widely used in the film industry for creating high-quality visual effects and animations</li> <li><a href="http://docs.ros.org/en/noetic/api/behaviortree_cpp/html/json_8hpp_source.html"><strong>ROS - Robot Operating System</strong></a>, a set of software libraries and tools that assist in developing robot applications</li> <li><a href="https://www.ubs.com/"><strong>UBS</strong></a>, a multinational financial services and banking company</li> </ul> <h2 id=enterprise-and-cloud-applications>Enterprise and Cloud Applications<a class=headerlink href=#enterprise-and-cloud-applications title="Permanent link">&para;</a></h2> <ul> <li><a href="https://care.acronis.com/s/article/59533-Third-party-software-used-in-Acronis-Cyber-Protect-Cloud?language=en_US"><strong>Acronis Cyber Protect Cloud</strong></a>, an all-in-one data protection solution that combines backup, disaster recovery, and cybersecurity to safeguard business data from threats like ransomware</li> <li><a href="https://gitlab.tiger-computing.co.uk/packages/bareos/-/blob/tiger/bullseye/third-party/CLI11/examples/json.cpp"><strong>Baereos</strong></a>, a backup solution that provides data protection and recovery options for various environments, including physical and virtual systems</li> <li><a href="https://www.bitdefender.de/site/Main/view/home-scanner-open-source.html"><strong>Bitdefender Home Scanner</strong></a>, a tool from Bitdefender that scans devices for malware and security threats, providing a safeguard against potential online dangers</li> <li><a href="https://docs.citrix.com/en-us/provisioning/2203-ltsr/downloads/pvs-third-party-notices-2203.pdf"><strong>Citrix Provisioning</strong></a>, a solution that streamlines the delivery of virtual desktops and applications by allowing administrators to manage and provision resources efficiently across multiple environments</li> <li><a href="https://docs.citrix.com/en-us/citrix-virtual-apps-desktops/2305/downloads/third-party-notices-apps-and-desktops.pdf"><strong>Citrix Virtual Apps and Desktops</strong></a>, a solution from Citrix that delivers virtual apps and desktops</li> <li><a href="https://docs.cyberark.com/Downloads/Legal/Privileged%20Session%20Manager%20for%20SSH%20Third-Party%20Notices.pdf"><strong>Cyberarc</strong></a>, a security solution that specializes in privileged access management, enabling organizations to control and monitor access to critical systems and data, thereby enhancing overall cybersecurity posture</li> <li><a href="https://helpdesk.egnyte.com/hc/en-us/articles/360007071732-Third-Party-Software-Acknowledgements"><strong>Egnyte Desktop</strong></a>, a secure cloud storage solution designed for businesses, enabling file sharing, collaboration, and data management across teams while ensuring compliance and data protection</li> <li><a href="https://www.secunet.com/en/about-us/press/article/elstersecure-bietet-komfortablen-login-ohne-passwort-dank-secunet-protect4use"><strong>Elster</strong></a>, a digital platform developed by German tax authorities for secure and efficient electronic tax filing and management using secunet protect4use</li> <li><a href="https://github.com/ethereum/solidity"><strong>Ethereum Solidity</strong></a>, a high-level, object-oriented programming language designed for implementing smart contracts on the Ethereum platform</li> <li><a href="https://fossies.org/linux/icinga2/third-party/nlohmann_json/json.hpp"><strong>Inciga</strong></a>, a monitoring tool for IT infrastructure, designed to provide insights into system performance and availability through customizable dashboards and alerts</li> <li><a href="https://downloadmirror.intel.com/772507/THIRD-PARTY.txt"><strong>Intel Accelerator Management Daemon for VMware ESXi</strong></a>, a management tool designed for monitoring and controlling Intel hardware accelerators within VMware ESXi environments, optimizing performance and resource allocation</li> <li><a href="https://www.juniper.net/documentation/us/en/software/jims/jims-guide/jims-guide.pdf"><strong>Juniper Identity Management Service</strong></a></li> <li><a href="https://library.e.abb.com/public/2779c5f85f30484192eb3cb3f666a201/IP%20Gateway%20Open%20License%20Declaration_9AKK108467A4095_Rev_C.pdf"><strong>Microsoft Azure IoT <abbr title="Software Development Kit">SDK</abbr></strong></a>, a collection of tools and libraries to help developers connect, build, and deploy Internet of Things (IoT) solutions on the Azure cloud platform</li> <li><a href="https://github.com/microsoft/winget-cli"><strong>Microsoft WinGet</strong></a>, a command-line utility included in the Windows Package Manager</li> <li><a href="https://www.sisme.com/media/10994/manual_plexusav-p-avn-4-form8244-c.pdf"><strong>plexusAV</strong></a>, a high-performance AV-over-IP transceiver device capable of video encoding and decoding using the IPMX standard</li> <li><a href="https://docs-dev.pointr.tech/docs/8.x/Developer%20Portal/Open%20Source%20Licenses/"><strong>Pointr</strong></a>, a platform for indoor positioning and navigation solutions, offering tools and SDKs for developers to create location-based applications</li> <li><a href="https://www.secunet.com/en/about-us/press/article/elstersecure-bietet-komfortablen-login-ohne-passwort-dank-secunet-protect4use"><strong>secunet protect4use</strong></a>, a secure, passwordless multifactor authentication solution that transforms smartphones into digital keyrings, ensuring high security for online services and digital identities</li> <li><a href="https://www.foccusdigital.com/wp-content/uploads/2025/03/MRD-7000-Manual-8175V.pdf"><strong>Sencore MRD 7000</strong></a>, a professional multi-channel receiver and decoder supporting UHD and HD stream decoding</li> </ul> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 29, 2026 20:15:18 UTC">June 29, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
diff --git a/home/design_goals/index.html b/home/design_goals/index.html
index 7cd8190..63553f2 100644
--- a/home/design_goals/index.html
+++ b/home/design_goals/index.html
@@ -1 +1 @@
-<!doctype html><html lang=en class=no-js> <head><meta charset=utf-8><meta name=viewport content="width=device-width,initial-scale=1"><meta name=author content="Niels Lohmann"><link href="https://json.nlohmann.me/home/design_goals/" rel="canonical"><link href=../releases/ rel=prev><link href=../architecture/ rel=next><link rel=icon href=../../assets/images/favicon.png><meta name=generator content="mkdocs-1.6.1, mkdocs-material-9.7.6"><title>Design goals - JSON for Modern C++</title><link rel=stylesheet href=../../assets/stylesheets/main.484c7ddc.min.css><link rel=stylesheet href=../../assets/stylesheets/palette.ab4e12ef.min.css><link rel="stylesheet" href="../../assets/external/fonts.googleapis.com/css.61a430c9.css"><style>:root{--md-text-font:"Roboto";--md-code-font:"JetBrains Mono"}</style><link rel=stylesheet href=../../css/custom.css><script>__md_scope=new URL("../..",location),__md_hash=e=>[...e].reduce(((e,_)=>(e<<5)-e+_.charCodeAt(0)),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script></head> <body dir=ltr data-md-color-scheme=default data-md-color-primary=indigo data-md-color-accent=indigo> <input class=md-toggle data-md-toggle=drawer type=checkbox id=__drawer autocomplete=off> <input class=md-toggle data-md-toggle=search type=checkbox id=__search autocomplete=off> <label class=md-overlay for=__drawer></label> <div data-md-component=skip> <a href=#design-goals class=md-skip> Skip to content </a> </div> <div data-md-component=announce> </div> <header class=md-header data-md-component=header> <nav class="md-header__inner md-grid" aria-label=Header> <a href=../.. title="JSON for Modern C++" class="md-header__button md-logo" aria-label="JSON for Modern C++" data-md-component=logo> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54"/></svg> </a> <label class="md-header__button md-icon" for=__drawer> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M3 6h18v2H3zm0 5h18v2H3zm0 5h18v2H3z"/></svg> </label> <div class=md-header__title data-md-component=header-title> <div class=md-header__ellipsis> <div class=md-header__topic> <span class=md-ellipsis> JSON for Modern C++ </span> </div> <div class=md-header__topic data-md-component=header-topic> <span class=md-ellipsis> Design goals </span> </div> </div> </div> <form class=md-header__option data-md-component=palette> <input class=md-option data-md-color-media="(prefers-color-scheme: light)" data-md-color-scheme=default data-md-color-primary=indigo data-md-color-accent=indigo aria-label="Switch to dark mode" type=radio name=__palette id=__palette_0> <label class="md-header__button md-icon" title="Switch to dark mode" for=__palette_1 hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a4 4 0 0 0-4 4 4 4 0 0 0 4 4 4 4 0 0 0 4-4 4 4 0 0 0-4-4m0 10a6 6 0 0 1-6-6 6 6 0 0 1 6-6 6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12z"/></svg> </label> <input class=md-option data-md-color-media="(prefers-color-scheme: dark)" data-md-color-scheme=slate data-md-color-primary=indigo data-md-color-accent=indigo aria-label="Switch to light mode" type=radio name=__palette id=__palette_1> <label class="md-header__button md-icon" title="Switch to light mode" for=__palette_0 hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 18c-.89 0-1.74-.2-2.5-.55C11.56 16.5 13 14.42 13 12s-1.44-4.5-3.5-5.45C10.26 6.2 11.11 6 12 6a6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12z"/></svg> </label> </form> <script>var palette=__md_get("__palette");if(palette&&palette.color){if("(prefers-color-scheme)"===palette.color.media){var media=matchMedia("(prefers-color-scheme: light)"),input=document.querySelector(media.matches?"[data-md-color-media='(prefers-color-scheme: light)']":"[data-md-color-media='(prefers-color-scheme: dark)']");palette.color.media=input.getAttribute("data-md-color-media"),palette.color.scheme=input.getAttribute("data-md-color-scheme"),palette.color.primary=input.getAttribute("data-md-color-primary"),palette.color.accent=input.getAttribute("data-md-color-accent")}for(var[key,value]of Object.entries(palette.color))document.body.setAttribute("data-md-color-"+key,value)}</script> <label class="md-header__button md-icon" for=__search> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg> </label> <div class=md-search data-md-component=search role=dialog> <label class=md-search__overlay for=__search></label> <div class=md-search__inner role=search> <form class=md-search__form name=search> <input type=text class=md-search__input name=query aria-label=Search placeholder=Search autocapitalize=off autocorrect=off autocomplete=off spellcheck=false data-md-component=search-query required> <label class="md-search__icon md-icon" for=__search> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11z"/></svg> </label> <nav class=md-search__options aria-label=Search> <button type=reset class="md-search__icon md-icon" title=Clear aria-label=Clear tabindex=-1> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z"/></svg> </button> </nav> </form> <div class=md-search__output> <div class=md-search__scrollwrap tabindex=0 data-md-scrollfix> <div class=md-search-result data-md-component=search-result> <div class=md-search-result__meta> Initializing search </div> <ol class=md-search-result__list role=presentation></ol> </div> </div> </div> </div> </div> <div class=md-header__source> <a href="https://github.com/nlohmann/json" title="Go to repository" class="md-source" data-md-component="source"> <div class="md-source__icon md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </div> <div class=md-source__repository> nlohmann/json </div> </a> </div> </nav> </header> <div class=md-container data-md-component=container> <nav class=md-tabs aria-label=Tabs data-md-component=tabs> <div class=md-grid> <ul class=md-tabs__list> <li class="md-tabs__item md-tabs__item--active"> <a href=../.. class=md-tabs__link> Home </a> </li> <li class=md-tabs__item> <a href=../../features/arbitrary_types/ class=md-tabs__link> Features </a> </li> <li class=md-tabs__item> <a href=../../integration/ class=md-tabs__link> Integration </a> </li> <li class=md-tabs__item> <a href=../../api/basic_json/ class=md-tabs__link> API Documentation </a> </li> <li class=md-tabs__item> <a href=../../community/ class=md-tabs__link> Community </a> </li> </ul> </div> </nav> <main class=md-main data-md-component=main> <div class="md-main__inner md-grid"> <div class="md-sidebar md-sidebar--primary" data-md-component=sidebar data-md-type=navigation> <div class=md-sidebar__scrollwrap> <div class=md-sidebar__inner> <nav class="md-nav md-nav--primary md-nav--lifted" aria-label=Navigation data-md-level=0> <label class=md-nav__title for=__drawer> <a href=../.. title="JSON for Modern C++" class="md-nav__button md-logo" aria-label="JSON for Modern C++" data-md-component=logo> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54"/></svg> </a> JSON for Modern C++ </label> <div class=md-nav__source> <a href="https://github.com/nlohmann/json" title="Go to repository" class="md-source" data-md-component="source"> <div class="md-source__icon md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </div> <div class=md-source__repository> nlohmann/json </div> </a> </div> <ul class=md-nav__list data-md-scrollfix> <li class="md-nav__item md-nav__item--active md-nav__item--section md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_1 checked> <div class="md-nav__link md-nav__container"> <a href=../.. class="md-nav__link "> <span class=md-ellipsis> Home </span> </a> <label class="md-nav__link " for=__nav_1 id=__nav_1_label tabindex> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_1_label aria-expanded=true> <label class=md-nav__title for=__nav_1> <span class="md-nav__icon md-icon"></span> Home </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../license/ class=md-nav__link> <span class=md-ellipsis> License </span> </a> </li> <li class=md-nav__item> <a href=../faq/ class=md-nav__link> <span class=md-ellipsis> FAQ </span> </a> </li> <li class=md-nav__item> <a href=../exceptions/ class=md-nav__link> <span class=md-ellipsis> Exceptions </span> </a> </li> <li class=md-nav__item> <a href=../releases/ class=md-nav__link> <span class=md-ellipsis> Releases </span> </a> </li> <li class="md-nav__item md-nav__item--active"> <input class="md-nav__toggle md-toggle" type=checkbox id=__toc> <a href=./ class="md-nav__link md-nav__link--active"> <span class=md-ellipsis> Design goals </span> </a> </li> <li class=md-nav__item> <a href=../architecture/ class=md-nav__link> <span class=md-ellipsis> Architecture </span> </a> </li> <li class=md-nav__item> <a href=../customers/ class=md-nav__link> <span class=md-ellipsis> Customers </span> </a> </li> <li class=md-nav__item> <a href=../sponsors/ class=md-nav__link> <span class=md-ellipsis> Sponsors </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2> <label class=md-nav__link for=__nav_2 id=__nav_2_label tabindex=0> <span class=md-ellipsis> Features </span> <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_2_label aria-expanded=false> <label class=md-nav__title for=__nav_2> <span class="md-nav__icon md-icon"></span> Features </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../features/arbitrary_types/ class=md-nav__link> <span class=md-ellipsis> Arbitrary Type Conversions </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_2> <div class="md-nav__link md-nav__container"> <a href=../../features/binary_formats/ class="md-nav__link "> <span class=md-ellipsis> Binary Formats </span> </a> <label class="md-nav__link " for=__nav_2_2 id=__nav_2_2_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_2_label aria-expanded=false> <label class=md-nav__title for=__nav_2_2> <span class="md-nav__icon md-icon"></span> Binary Formats </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../features/binary_formats/bjdata/ class=md-nav__link> <span class=md-ellipsis> BJData </span> </a> </li> <li class=md-nav__item> <a href=../../features/binary_formats/bson/ class=md-nav__link> <span class=md-ellipsis> BSON </span> </a> </li> <li class=md-nav__item> <a href=../../features/binary_formats/cbor/ class=md-nav__link> <span class=md-ellipsis> CBOR </span> </a> </li> <li class=md-nav__item> <a href=../../features/binary_formats/messagepack/ class=md-nav__link> <span class=md-ellipsis> MessagePack </span> </a> </li> <li class=md-nav__item> <a href=../../features/binary_formats/ubjson/ class=md-nav__link> <span class=md-ellipsis> UBJSON </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../features/binary_values/ class=md-nav__link> <span class=md-ellipsis> Binary Values </span> </a> </li> <li class=md-nav__item> <a href=../../features/comments/ class=md-nav__link> <span class=md-ellipsis> Comments </span> </a> </li> <li class=md-nav__item> <a href=../../features/trailing_commas/ class=md-nav__link> <span class=md-ellipsis> Trailing Commas </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_6> <div class="md-nav__link md-nav__container"> <a href=../../features/element_access/ class="md-nav__link "> <span class=md-ellipsis> Element Access </span> </a> <label class="md-nav__link " for=__nav_2_6 id=__nav_2_6_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_6_label aria-expanded=false> <label class=md-nav__title for=__nav_2_6> <span class="md-nav__icon md-icon"></span> Element Access </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../features/element_access/unchecked_access/ class=md-nav__link> <span class=md-ellipsis> Unchecked access: operator[] </span> </a> </li> <li class=md-nav__item> <a href=../../features/element_access/checked_access/ class=md-nav__link> <span class=md-ellipsis> Checked access: at </span> </a> </li> <li class=md-nav__item> <a href=../../features/element_access/default_value/ class=md-nav__link> <span class=md-ellipsis> Access with default value: value </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../features/iterators/ class=md-nav__link> <span class=md-ellipsis> Iterators </span> </a> </li> <li class=md-nav__item> <a href=../../features/json_pointer/ class=md-nav__link> <span class=md-ellipsis> JSON Pointer </span> </a> </li> <li class=md-nav__item> <a href=../../features/json_patch/ class=md-nav__link> <span class=md-ellipsis> JSON Patch and Diff </span> </a> </li> <li class=md-nav__item> <a href=../../features/merge_patch/ class=md-nav__link> <span class=md-ellipsis> JSON Merge Patch </span> </a> </li> <li class=md-nav__item> <a href=../../features/modules/ class=md-nav__link> <span class=md-ellipsis> Modules </span> </a> </li> <li class=md-nav__item> <a href=../../features/namespace/ class=md-nav__link> <span class=md-ellipsis> nlohmann Namespace </span> </a> </li> <li class=md-nav__item> <a href=../../features/object_order/ class=md-nav__link> <span class=md-ellipsis> Object Order </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_14> <div class="md-nav__link md-nav__container"> <a href=../../features/parsing/ class="md-nav__link "> <span class=md-ellipsis> Parsing </span> </a> <label class="md-nav__link " for=__nav_2_14 id=__nav_2_14_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_14_label aria-expanded=false> <label class=md-nav__title for=__nav_2_14> <span class="md-nav__icon md-icon"></span> Parsing </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../features/parsing/json_lines/ class=md-nav__link> <span class=md-ellipsis> JSON Lines </span> </a> </li> <li class=md-nav__item> <a href=../../features/parsing/parse_exceptions/ class=md-nav__link> <span class=md-ellipsis> Parsing and Exceptions </span> </a> </li> <li class=md-nav__item> <a href=../../features/parsing/parser_callbacks/ class=md-nav__link> <span class=md-ellipsis> Parser Callbacks </span> </a> </li> <li class=md-nav__item> <a href=../../features/parsing/sax_interface/ class=md-nav__link> <span class=md-ellipsis> SAX Interface </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../features/assertions/ class=md-nav__link> <span class=md-ellipsis> Runtime Assertions </span> </a> </li> <li class=md-nav__item> <a href=../../features/enum_conversion/ class=md-nav__link> <span class=md-ellipsis> Specializing enum conversion </span> </a> </li> <li class=md-nav__item> <a href=../../features/macros/ class=md-nav__link> <span class=md-ellipsis> Supported Macros </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_18> <div class="md-nav__link md-nav__container"> <a href=../../features/types/ class="md-nav__link "> <span class=md-ellipsis> Types </span> </a> <label class="md-nav__link " for=__nav_2_18 id=__nav_2_18_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_18_label aria-expanded=false> <label class=md-nav__title for=__nav_2_18> <span class="md-nav__icon md-icon"></span> Types </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../features/types/number_handling/ class=md-nav__link> <span class=md-ellipsis> Number Handling </span> </a> </li> </ul> </nav> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_3> <div class="md-nav__link md-nav__container"> <a href=../../integration/ class="md-nav__link "> <span class=md-ellipsis> Integration </span> </a> <label class="md-nav__link " for=__nav_3 id=__nav_3_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_3_label aria-expanded=false> <label class=md-nav__title for=__nav_3> <span class="md-nav__icon md-icon"></span> Integration </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../integration/migration_guide/ class=md-nav__link> <span class=md-ellipsis> Migration Guide </span> </a> </li> <li class=md-nav__item> <a href=../../integration/cmake/ class=md-nav__link> <span class=md-ellipsis> CMake </span> </a> </li> <li class=md-nav__item> <a href=../../integration/package_managers/ class=md-nav__link> <span class=md-ellipsis> Package Managers </span> </a> </li> <li class=md-nav__item> <a href=../../integration/pkg-config/ class=md-nav__link> <span class=md-ellipsis> Pkg-config </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4> <label class=md-nav__link for=__nav_4 id=__nav_4_label tabindex=0> <span class=md-ellipsis> API Documentation </span> <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_4_label aria-expanded=false> <label class=md-nav__title for=__nav_4> <span class="md-nav__icon md-icon"></span> API Documentation </label> <ul class=md-nav__list data-md-scrollfix> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_1> <div class="md-nav__link md-nav__container"> <a href=../../api/basic_json/ class="md-nav__link "> <span class=md-ellipsis> basic_json </span> </a> <label class="md-nav__link " for=__nav_4_1 id=__nav_4_1_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_1_label aria-expanded=false> <label class=md-nav__title for=__nav_4_1> <span class="md-nav__icon md-icon"></span> basic_json </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../api/basic_json/basic_json/ class=md-nav__link> <span class=md-ellipsis> (Constructor) </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/~basic_json/ class=md-nav__link> <span class=md-ellipsis> (Destructor) </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/accept/ class=md-nav__link> <span class=md-ellipsis> accept </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/array/ class=md-nav__link> <span class=md-ellipsis> array </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/array_t/ class=md-nav__link> <span class=md-ellipsis> array_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/at/ class=md-nav__link> <span class=md-ellipsis> at </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/back/ class=md-nav__link> <span class=md-ellipsis> back </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/begin/ class=md-nav__link> <span class=md-ellipsis> begin </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/binary/ class=md-nav__link> <span class=md-ellipsis> binary </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/binary_t/ class=md-nav__link> <span class=md-ellipsis> binary_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/boolean_t/ class=md-nav__link> <span class=md-ellipsis> boolean_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/cbegin/ class=md-nav__link> <span class=md-ellipsis> cbegin </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/cbor_tag_handler_t/ class=md-nav__link> <span class=md-ellipsis> cbor_tag_handler_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/cend/ class=md-nav__link> <span class=md-ellipsis> cend </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/clear/ class=md-nav__link> <span class=md-ellipsis> clear </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/contains/ class=md-nav__link> <span class=md-ellipsis> contains </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/count/ class=md-nav__link> <span class=md-ellipsis> count </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/crbegin/ class=md-nav__link> <span class=md-ellipsis> crbegin </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/crend/ class=md-nav__link> <span class=md-ellipsis> crend </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/default_object_comparator_t/ class=md-nav__link> <span class=md-ellipsis> default_object_comparator_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/diff/ class=md-nav__link> <span class=md-ellipsis> diff </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/dump/ class=md-nav__link> <span class=md-ellipsis> dump </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/emplace/ class=md-nav__link> <span class=md-ellipsis> emplace </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/emplace_back/ class=md-nav__link> <span class=md-ellipsis> emplace_back </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/empty/ class=md-nav__link> <span class=md-ellipsis> empty </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/end/ class=md-nav__link> <span class=md-ellipsis> end </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/end_pos/ class=md-nav__link> <span class=md-ellipsis> end_pos </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/erase/ class=md-nav__link> <span class=md-ellipsis> erase </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/error_handler_t/ class=md-nav__link> <span class=md-ellipsis> error_handler_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/exception/ class=md-nav__link> <span class=md-ellipsis> exception </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/find/ class=md-nav__link> <span class=md-ellipsis> find </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/flatten/ class=md-nav__link> <span class=md-ellipsis> flatten </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/from_bjdata/ class=md-nav__link> <span class=md-ellipsis> from_bjdata </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/from_bson/ class=md-nav__link> <span class=md-ellipsis> from_bson </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/from_cbor/ class=md-nav__link> <span class=md-ellipsis> from_cbor </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/from_msgpack/ class=md-nav__link> <span class=md-ellipsis> from_msgpack </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/from_ubjson/ class=md-nav__link> <span class=md-ellipsis> from_ubjson </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/front/ class=md-nav__link> <span class=md-ellipsis> front </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/get/ class=md-nav__link> <span class=md-ellipsis> get </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/get_allocator/ class=md-nav__link> <span class=md-ellipsis> get_allocator </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/get_binary/ class=md-nav__link> <span class=md-ellipsis> get_binary </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/get_ptr/ class=md-nav__link> <span class=md-ellipsis> get_ptr </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/get_ref/ class=md-nav__link> <span class=md-ellipsis> get_ref </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/get_to/ class=md-nav__link> <span class=md-ellipsis> get_to </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/std_hash/ class=md-nav__link> <span class=md-ellipsis> std::hash&lt;basic_json&gt; </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/input_format_t/ class=md-nav__link> <span class=md-ellipsis> input_format_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/insert/ class=md-nav__link> <span class=md-ellipsis> insert </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/invalid_iterator/ class=md-nav__link> <span class=md-ellipsis> invalid_iterator </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_array/ class=md-nav__link> <span class=md-ellipsis> is_array </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_binary/ class=md-nav__link> <span class=md-ellipsis> is_binary </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_boolean/ class=md-nav__link> <span class=md-ellipsis> is_boolean </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_discarded/ class=md-nav__link> <span class=md-ellipsis> is_discarded </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_null/ class=md-nav__link> <span class=md-ellipsis> is_null </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_number/ class=md-nav__link> <span class=md-ellipsis> is_number </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_number_float/ class=md-nav__link> <span class=md-ellipsis> is_number_float </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_number_integer/ class=md-nav__link> <span class=md-ellipsis> is_number_integer </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_number_unsigned/ class=md-nav__link> <span class=md-ellipsis> is_number_unsigned </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_object/ class=md-nav__link> <span class=md-ellipsis> is_object </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_primitive/ class=md-nav__link> <span class=md-ellipsis> is_primitive </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_string/ class=md-nav__link> <span class=md-ellipsis> is_string </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_structured/ class=md-nav__link> <span class=md-ellipsis> is_structured </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/items/ class=md-nav__link> <span class=md-ellipsis> items </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/json_base_class_t/ class=md-nav__link> <span class=md-ellipsis> json_base_class_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/json_serializer/ class=md-nav__link> <span class=md-ellipsis> json_serializer </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/max_size/ class=md-nav__link> <span class=md-ellipsis> max_size </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/meta/ class=md-nav__link> <span class=md-ellipsis> meta </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/merge_patch/ class=md-nav__link> <span class=md-ellipsis> merge_patch </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/number_float_t/ class=md-nav__link> <span class=md-ellipsis> number_float_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/number_integer_t/ class=md-nav__link> <span class=md-ellipsis> number_integer_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/number_unsigned_t/ class=md-nav__link> <span class=md-ellipsis> number_unsigned_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/object/ class=md-nav__link> <span class=md-ellipsis> object </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/object_comparator_t/ class=md-nav__link> <span class=md-ellipsis> object_comparator_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/object_t/ class=md-nav__link> <span class=md-ellipsis> object_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/operator_ValueType/ class=md-nav__link> <span class=md-ellipsis> operator ValueType </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/operator_value_t/ class=md-nav__link> <span class=md-ellipsis> operator value_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/operator%5B%5D/ class=md-nav__link> <span class=md-ellipsis> operator[] </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/operator%3D/ class=md-nav__link> <span class=md-ellipsis> operator= </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/operator%2B%3D/ class=md-nav__link> <span class=md-ellipsis> operator+= </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/operator_eq/ class=md-nav__link> <span class=md-ellipsis> operator== </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/operator_ne/ class=md-nav__link> <span class=md-ellipsis> operator!= </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/operator_lt/ class=md-nav__link> <span class=md-ellipsis> operator< </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/operator_gt/ class=md-nav__link> <span class=md-ellipsis> operator> </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/operator_le/ class=md-nav__link> <span class=md-ellipsis> operator<= </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/operator_ge/ class=md-nav__link> <span class=md-ellipsis> operator>= </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/operator_spaceship/ class=md-nav__link> <span class=md-ellipsis> operator<=> </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/out_of_range/ class=md-nav__link> <span class=md-ellipsis> out_of_range </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/other_error/ class=md-nav__link> <span class=md-ellipsis> other_error </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/parse/ class=md-nav__link> <span class=md-ellipsis> parse </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/parse_error/ class=md-nav__link> <span class=md-ellipsis> parse_error </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/parse_event_t/ class=md-nav__link> <span class=md-ellipsis> parse_event_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/parser_callback_t/ class=md-nav__link> <span class=md-ellipsis> parser_callback_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/patch/ class=md-nav__link> <span class=md-ellipsis> patch </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/patch_inplace/ class=md-nav__link> <span class=md-ellipsis> patch_inplace </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/push_back/ class=md-nav__link> <span class=md-ellipsis> push_back </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/rbegin/ class=md-nav__link> <span class=md-ellipsis> rbegin </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/rend/ class=md-nav__link> <span class=md-ellipsis> rend </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/sax_parse/ class=md-nav__link> <span class=md-ellipsis> sax_parse </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/size/ class=md-nav__link> <span class=md-ellipsis> size </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/start_pos/ class=md-nav__link> <span class=md-ellipsis> start_pos </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/string_t/ class=md-nav__link> <span class=md-ellipsis> string_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/swap/ class=md-nav__link> <span class=md-ellipsis> swap </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/std_swap/ class=md-nav__link> <span class=md-ellipsis> std::swap&lt;basic_json&gt; </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/to_bjdata/ class=md-nav__link> <span class=md-ellipsis> to_bjdata </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/to_bson/ class=md-nav__link> <span class=md-ellipsis> to_bson </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/to_cbor/ class=md-nav__link> <span class=md-ellipsis> to_cbor </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/to_msgpack/ class=md-nav__link> <span class=md-ellipsis> to_msgpack </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/to_string/ class=md-nav__link> <span class=md-ellipsis> to_string </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/to_ubjson/ class=md-nav__link> <span class=md-ellipsis> to_ubjson </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/type/ class=md-nav__link> <span class=md-ellipsis> type </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/type_error/ class=md-nav__link> <span class=md-ellipsis> type_error </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/type_name/ class=md-nav__link> <span class=md-ellipsis> type_name </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/unflatten/ class=md-nav__link> <span class=md-ellipsis> unflatten </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/update/ class=md-nav__link> <span class=md-ellipsis> update </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/value/ class=md-nav__link> <span class=md-ellipsis> value </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/value_t/ class=md-nav__link> <span class=md-ellipsis> value_t </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_2> <div class="md-nav__link md-nav__container"> <a href=../../api/byte_container_with_subtype/ class="md-nav__link "> <span class=md-ellipsis> byte_container_with_subtype </span> </a> <label class="md-nav__link " for=__nav_4_2 id=__nav_4_2_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_2_label aria-expanded=false> <label class=md-nav__title for=__nav_4_2> <span class="md-nav__icon md-icon"></span> byte_container_with_subtype </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../api/byte_container_with_subtype/byte_container_with_subtype/ class=md-nav__link> <span class=md-ellipsis> (constructor) </span> </a> </li> <li class=md-nav__item> <a href=../../api/byte_container_with_subtype/clear_subtype/ class=md-nav__link> <span class=md-ellipsis> clear_subtype </span> </a> </li> <li class=md-nav__item> <a href=../../api/byte_container_with_subtype/has_subtype/ class=md-nav__link> <span class=md-ellipsis> has_subtype </span> </a> </li> <li class=md-nav__item> <a href=../../api/byte_container_with_subtype/set_subtype/ class=md-nav__link> <span class=md-ellipsis> set_subtype </span> </a> </li> <li class=md-nav__item> <a href=../../api/byte_container_with_subtype/subtype/ class=md-nav__link> <span class=md-ellipsis> subtype </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_3> <div class="md-nav__link md-nav__container"> <a href=../../api/adl_serializer/ class="md-nav__link "> <span class=md-ellipsis> adl_serializer </span> </a> <label class="md-nav__link " for=__nav_4_3 id=__nav_4_3_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_3_label aria-expanded=false> <label class=md-nav__title for=__nav_4_3> <span class="md-nav__icon md-icon"></span> adl_serializer </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../api/adl_serializer/from_json/ class=md-nav__link> <span class=md-ellipsis> from_json </span> </a> </li> <li class=md-nav__item> <a href=../../api/adl_serializer/to_json/ class=md-nav__link> <span class=md-ellipsis> to_json </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../api/json/ class=md-nav__link> <span class=md-ellipsis> json </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_5> <div class="md-nav__link md-nav__container"> <a href=../../api/json_pointer/ class="md-nav__link "> <span class=md-ellipsis> json_pointer </span> </a> <label class="md-nav__link " for=__nav_4_5 id=__nav_4_5_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_5_label aria-expanded=false> <label class=md-nav__title for=__nav_4_5> <span class="md-nav__icon md-icon"></span> json_pointer </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../api/json_pointer/json_pointer/ class=md-nav__link> <span class=md-ellipsis> (Constructor) </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/back/ class=md-nav__link> <span class=md-ellipsis> back </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/empty/ class=md-nav__link> <span class=md-ellipsis> empty </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/front/ class=md-nav__link> <span class=md-ellipsis> front </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/operator_string_t/ class=md-nav__link> <span class=md-ellipsis> operator string_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/operator_eq/ class=md-nav__link> <span class=md-ellipsis> operator== </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/operator_ne/ class=md-nav__link> <span class=md-ellipsis> operator!= </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/operator_slash/ class=md-nav__link> <span class=md-ellipsis> operator/ </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/operator_slasheq/ class=md-nav__link> <span class=md-ellipsis> operator/= </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/parent_pointer/ class=md-nav__link> <span class=md-ellipsis> parent_pointer </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/pop_back/ class=md-nav__link> <span class=md-ellipsis> pop_back </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/pop_front/ class=md-nav__link> <span class=md-ellipsis> pop_front </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/push_back/ class=md-nav__link> <span class=md-ellipsis> push_back </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/push_front/ class=md-nav__link> <span class=md-ellipsis> push_front </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/string_t/ class=md-nav__link> <span class=md-ellipsis> string_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/to_string/ class=md-nav__link> <span class=md-ellipsis> to_string </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_6> <div class="md-nav__link md-nav__container"> <a href=../../api/json_sax/ class="md-nav__link "> <span class=md-ellipsis> json_sax </span> </a> <label class="md-nav__link " for=__nav_4_6 id=__nav_4_6_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_6_label aria-expanded=false> <label class=md-nav__title for=__nav_4_6> <span class="md-nav__icon md-icon"></span> json_sax </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../api/json_sax/binary/ class=md-nav__link> <span class=md-ellipsis> binary </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_sax/boolean/ class=md-nav__link> <span class=md-ellipsis> boolean </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_sax/end_array/ class=md-nav__link> <span class=md-ellipsis> end_array </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_sax/end_object/ class=md-nav__link> <span class=md-ellipsis> end_object </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_sax/key/ class=md-nav__link> <span class=md-ellipsis> key </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_sax/null/ class=md-nav__link> <span class=md-ellipsis> null </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_sax/number_float/ class=md-nav__link> <span class=md-ellipsis> number_float </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_sax/number_integer/ class=md-nav__link> <span class=md-ellipsis> number_integer </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_sax/number_unsigned/ class=md-nav__link> <span class=md-ellipsis> number_unsigned </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_sax/parse_error/ class=md-nav__link> <span class=md-ellipsis> parse_error </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_sax/start_array/ class=md-nav__link> <span class=md-ellipsis> start_array </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_sax/start_object/ class=md-nav__link> <span class=md-ellipsis> start_object </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_sax/string/ class=md-nav__link> <span class=md-ellipsis> string </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../api/operator_ltlt/ class=md-nav__link> <span class=md-ellipsis> operator<<(basic_json), operator<<(json_pointer) </span> </a> </li> <li class=md-nav__item> <a href=../../api/operator_gtgt/ class=md-nav__link> <span class=md-ellipsis> operator>>(basic_json) </span> </a> </li> <li class=md-nav__item> <a href=../../api/operator_literal_json/ class=md-nav__link> <span class=md-ellipsis> operator""_json </span> </a> </li> <li class=md-nav__item> <a href=../../api/operator_literal_json_pointer/ class=md-nav__link> <span class=md-ellipsis> operator""_json_pointer </span> </a> </li> <li class=md-nav__item> <a href=../../api/ordered_json/ class=md-nav__link> <span class=md-ellipsis> ordered_json </span> </a> </li> <li class=md-nav__item> <a href=../../api/ordered_map/ class=md-nav__link> <span class=md-ellipsis> ordered_map </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_13> <div class="md-nav__link md-nav__container"> <a href=../../api/macros/ class="md-nav__link "> <span class=md-ellipsis> macros </span> </a> <label class="md-nav__link " for=__nav_4_13 id=__nav_4_13_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_13_label aria-expanded=false> <label class=md-nav__title for=__nav_4_13> <span class="md-nav__icon md-icon"></span> macros </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../api/macros/json_assert/ class=md-nav__link> <span class=md-ellipsis> JSON_ASSERT </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_brace_init_copy_semantics/ class=md-nav__link> <span class=md-ellipsis> JSON_BRACE_INIT_COPY_SEMANTICS </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_throw_user/ class=md-nav__link> <span class=md-ellipsis> JSON_CATCH_USER, JSON_THROW_USER, JSON_TRY_USER </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_diagnostics/ class=md-nav__link> <span class=md-ellipsis> JSON_DIAGNOSTICS </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_diagnostic_positions/ class=md-nav__link> <span class=md-ellipsis> JSON_DIAGNOSTIC_POSITIONS </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_disable_enum_serialization/ class=md-nav__link> <span class=md-ellipsis> JSON_DISABLE_ENUM_SERIALIZATION </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_has_cpp_11/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_CPP_11, JSON_HAS_CPP_14, JSON_HAS_CPP_17, JSON_HAS_CPP_20 </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_has_filesystem/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_EXPERIMENTAL_FILESYSTEM, JSON_HAS_FILESYSTEM </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_has_ranges/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_RANGES </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_has_static_rtti/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_STATIC_RTTI </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_has_three_way_comparison/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_THREE_WAY_COMPARISON </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_noexception/ class=md-nav__link> <span class=md-ellipsis> JSON_NOEXCEPTION </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_no_io/ class=md-nav__link> <span class=md-ellipsis> JSON_NO_IO </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_skip_library_version_check/ class=md-nav__link> <span class=md-ellipsis> JSON_SKIP_LIBRARY_VERSION_CHECK </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_skip_unsupported_compiler_check/ class=md-nav__link> <span class=md-ellipsis> JSON_SKIP_UNSUPPORTED_COMPILER_CHECK </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_use_global_udls/ class=md-nav__link> <span class=md-ellipsis> JSON_USE_GLOBAL_UDLS </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_use_implicit_conversions/ class=md-nav__link> <span class=md-ellipsis> JSON_USE_IMPLICIT_CONVERSIONS </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_use_legacy_discarded_value_comparison/ class=md-nav__link> <span class=md-ellipsis> JSON_USE_LEGACY_DISCARDED_VALUE_COMPARISON </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/nlohmann_define_derived_type/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_ONLY_SERIALIZE, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/nlohmann_define_type_intrusive/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_TYPE_INTRUSIVE, NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_TYPE_INTRUSIVE_ONLY_SERIALIZE </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/nlohmann_define_type_non_intrusive/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/nlohmann_define_type_with_names/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_TYPE_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/nlohmann_json_namespace/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_NAMESPACE </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/nlohmann_json_namespace_begin/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_NAMESPACE_BEGIN, NLOHMANN_JSON_NAMESPACE_END </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/nlohmann_json_namespace_no_version/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_NAMESPACE_NO_VERSION </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/nlohmann_json_serialize_enum/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_SERIALIZE_ENUM </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/nlohmann_json_serialize_enum_strict/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_SERIALIZE_ENUM_STRICT </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/nlohmann_json_version_major/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_VERSION_MAJOR, NLOHMANN_JSON_VERSION_MINOR, NLOHMANN_JSON_VERSION_PATCH </span> </a> </li> </ul> </nav> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_5> <div class="md-nav__link md-nav__container"> <a href=../../community/ class="md-nav__link "> <span class=md-ellipsis> Community </span> </a> <label class="md-nav__link " for=__nav_5 id=__nav_5_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_5_label aria-expanded=false> <label class=md-nav__title for=__nav_5> <span class="md-nav__icon md-icon"></span> Community </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../community/code_of_conduct/ class=md-nav__link> <span class=md-ellipsis> Code of Conduct </span> </a> </li> <li class=md-nav__item> <a href=../../community/contribution_guidelines/ class=md-nav__link> <span class=md-ellipsis> Contribution Guidelines </span> </a> </li> <li class=md-nav__item> <a href=../../community/quality_assurance/ class=md-nav__link> <span class=md-ellipsis> Quality assurance </span> </a> </li> <li class=md-nav__item> <a href=../../community/governance/ class=md-nav__link> <span class=md-ellipsis> Governance </span> </a> </li> <li class=md-nav__item> <a href=../../community/security_policy/ class=md-nav__link> <span class=md-ellipsis> Security Policy </span> </a> </li> </ul> </nav> </li> </ul> </nav> </div> </div> </div> <div class="md-sidebar md-sidebar--secondary" data-md-component=sidebar data-md-type=toc> <div class=md-sidebar__scrollwrap> <div class=md-sidebar__inner> <nav class="md-nav md-nav--secondary" aria-label="Table of contents"> </nav> </div> </div> </div> <div class=md-content data-md-component=content> <article class="md-content__inner md-typeset"> <a href="https://github.com/nlohmann/json/edit/develop/docs/mkdocs/docs/home/design_goals.md" title="Edit this page" class="md-content__button md-icon" rel="edit"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M10 20H6V4h7v5h5v3.1l2-2V8l-6-6H6c-1.1 0-2 .9-2 2v16c0 1.1.9 2 2 2h4zm10.2-7c.1 0 .3.1.4.2l1.3 1.3c.2.2.2.6 0 .8l-1 1-2.1-2.1 1-1c.1-.1.2-.2.4-.2m0 3.9L14.1 23H12v-2.1l6.1-6.1z"/></svg> </a> <a href="https://github.com/nlohmann/json/raw/develop/docs/mkdocs/docs/home/design_goals.md" title="View source of this page" class="md-content__button md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M17 18c.56 0 1 .44 1 1s-.44 1-1 1-1-.44-1-1 .44-1 1-1m0-3c-2.73 0-5.06 1.66-6 4 .94 2.34 3.27 4 6 4s5.06-1.66 6-4c-.94-2.34-3.27-4-6-4m0 6.5a2.5 2.5 0 0 1-2.5-2.5 2.5 2.5 0 0 1 2.5-2.5 2.5 2.5 0 0 1 2.5 2.5 2.5 2.5 0 0 1-2.5 2.5M9.27 20H6V4h7v5h5v4.07c.7.08 1.36.25 2 .49V8l-6-6H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h4.5a8.2 8.2 0 0 1-1.23-2"/></svg> </a> <h1 id=design-goals>Design goals<a class=headerlink href=#design-goals title="Permanent link">&para;</a></h1> <p>There are myriads of <a href="https://json.org"><abbr title="JavaScript Object Notation">JSON</abbr></a> libraries out there, and each may even have its reason to exist. Our class had these design goals:</p> <ul> <li> <p><strong>Intuitive syntax</strong>. In languages such as Python, <abbr title="JavaScript Object Notation">JSON</abbr> feels like a first-class data type. We used all the operator magic of modern C++ to achieve the same feeling in your code.</p> </li> <li> <p><strong>Trivial integration</strong>. Our whole code consists of a single header file <a href="https://github.com/nlohmann/json/blob/develop/single_include/nlohmann/json.hpp"><code>json.hpp</code></a>. That's it. No library, no subproject, no dependencies, no complex build system. The class is written in vanilla C++11. All in all, everything should require no adjustment of your compiler flags or project settings.</p> </li> <li> <p><strong>Serious testing</strong>. Our class is heavily <a href="https://github.com/nlohmann/json/tree/develop/tests/src">unit-tested</a> and covers <a href="https://coveralls.io/r/nlohmann/json">100%</a> of the code, including all exceptional behavior. Furthermore, we checked with <a href="http://valgrind.org">Valgrind</a> and the <a href="https://clang.llvm.org/docs/index.html">Clang Sanitizers</a> that there are no memory leaks. <a href="https://github.com/google/oss-fuzz/tree/master/projects/json">Google OSS-Fuzz</a> additionally runs fuzz tests against all parsers 24/7, effectively executing billions of tests so far. To maintain high quality, the project is following the <a href="https://bestpractices.coreinfrastructure.org/projects/289">Core Infrastructure Initiative (CII) best practices</a>.</p> </li> </ul> <p>Other aspects were not so important to us:</p> <ul> <li> <p><strong>Memory efficiency</strong>. Each <abbr title="JavaScript Object Notation">JSON</abbr> object has an overhead of one pointer (the maximal size of a union) and one enumeration element (1 byte). The default generalization uses the following C++ data types: <code>std::string</code> for strings, <code>int64_t</code>, <code>uint64_t</code> or <code>double</code> for numbers, <code>std::map</code> for objects, <code>std::vector</code> for arrays, and <code>bool</code> for Booleans. However, you can template the generalized class <code>basic_json</code> to your needs.</p> </li> <li> <p><strong>Speed</strong>. There are certainly <a href="https://github.com/miloyip/nativejson-benchmark#parsing-time">faster <abbr title="JavaScript Object Notation">JSON</abbr> libraries</a> out there. However, if your goal is to speed up your development by adding <abbr title="JavaScript Object Notation">JSON</abbr> support with a single header, then this library is the way to go. If you know how to use a <code>std::vector</code> or <code>std::map</code>, you are already set.</p> </li> </ul> <p>See the <a href="https://github.com/nlohmann/json/blob/master/.github/CONTRIBUTING.md#please-dont">contribution guidelines</a> for more information.</p> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 23, 2026 11:16:18 UTC">June 23, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
+<!doctype html><html lang=en class=no-js> <head><meta charset=utf-8><meta name=viewport content="width=device-width,initial-scale=1"><meta name=author content="Niels Lohmann"><link href="https://json.nlohmann.me/home/design_goals/" rel="canonical"><link href=../releases/ rel=prev><link href=../architecture/ rel=next><link rel=icon href=../../assets/images/favicon.png><meta name=generator content="mkdocs-1.6.1, mkdocs-material-9.7.6"><title>Design goals - JSON for Modern C++</title><link rel=stylesheet href=../../assets/stylesheets/main.484c7ddc.min.css><link rel=stylesheet href=../../assets/stylesheets/palette.ab4e12ef.min.css><link rel="stylesheet" href="../../assets/external/fonts.googleapis.com/css.61a430c9.css"><style>:root{--md-text-font:"Roboto";--md-code-font:"JetBrains Mono"}</style><link rel=stylesheet href=../../css/custom.css><script>__md_scope=new URL("../..",location),__md_hash=e=>[...e].reduce(((e,_)=>(e<<5)-e+_.charCodeAt(0)),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script></head> <body dir=ltr data-md-color-scheme=default data-md-color-primary=indigo data-md-color-accent=indigo> <input class=md-toggle data-md-toggle=drawer type=checkbox id=__drawer autocomplete=off> <input class=md-toggle data-md-toggle=search type=checkbox id=__search autocomplete=off> <label class=md-overlay for=__drawer></label> <div data-md-component=skip> <a href=#design-goals class=md-skip> Skip to content </a> </div> <div data-md-component=announce> </div> <header class=md-header data-md-component=header> <nav class="md-header__inner md-grid" aria-label=Header> <a href=../.. title="JSON for Modern C++" class="md-header__button md-logo" aria-label="JSON for Modern C++" data-md-component=logo> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54"/></svg> </a> <label class="md-header__button md-icon" for=__drawer> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M3 6h18v2H3zm0 5h18v2H3zm0 5h18v2H3z"/></svg> </label> <div class=md-header__title data-md-component=header-title> <div class=md-header__ellipsis> <div class=md-header__topic> <span class=md-ellipsis> JSON for Modern C++ </span> </div> <div class=md-header__topic data-md-component=header-topic> <span class=md-ellipsis> Design goals </span> </div> </div> </div> <form class=md-header__option data-md-component=palette> <input class=md-option data-md-color-media="(prefers-color-scheme: light)" data-md-color-scheme=default data-md-color-primary=indigo data-md-color-accent=indigo aria-label="Switch to dark mode" type=radio name=__palette id=__palette_0> <label class="md-header__button md-icon" title="Switch to dark mode" for=__palette_1 hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a4 4 0 0 0-4 4 4 4 0 0 0 4 4 4 4 0 0 0 4-4 4 4 0 0 0-4-4m0 10a6 6 0 0 1-6-6 6 6 0 0 1 6-6 6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12z"/></svg> </label> <input class=md-option data-md-color-media="(prefers-color-scheme: dark)" data-md-color-scheme=slate data-md-color-primary=indigo data-md-color-accent=indigo aria-label="Switch to light mode" type=radio name=__palette id=__palette_1> <label class="md-header__button md-icon" title="Switch to light mode" for=__palette_0 hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 18c-.89 0-1.74-.2-2.5-.55C11.56 16.5 13 14.42 13 12s-1.44-4.5-3.5-5.45C10.26 6.2 11.11 6 12 6a6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12z"/></svg> </label> </form> <script>var palette=__md_get("__palette");if(palette&&palette.color){if("(prefers-color-scheme)"===palette.color.media){var media=matchMedia("(prefers-color-scheme: light)"),input=document.querySelector(media.matches?"[data-md-color-media='(prefers-color-scheme: light)']":"[data-md-color-media='(prefers-color-scheme: dark)']");palette.color.media=input.getAttribute("data-md-color-media"),palette.color.scheme=input.getAttribute("data-md-color-scheme"),palette.color.primary=input.getAttribute("data-md-color-primary"),palette.color.accent=input.getAttribute("data-md-color-accent")}for(var[key,value]of Object.entries(palette.color))document.body.setAttribute("data-md-color-"+key,value)}</script> <label class="md-header__button md-icon" for=__search> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg> </label> <div class=md-search data-md-component=search role=dialog> <label class=md-search__overlay for=__search></label> <div class=md-search__inner role=search> <form class=md-search__form name=search> <input type=text class=md-search__input name=query aria-label=Search placeholder=Search autocapitalize=off autocorrect=off autocomplete=off spellcheck=false data-md-component=search-query required> <label class="md-search__icon md-icon" for=__search> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11z"/></svg> </label> <nav class=md-search__options aria-label=Search> <button type=reset class="md-search__icon md-icon" title=Clear aria-label=Clear tabindex=-1> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z"/></svg> </button> </nav> </form> <div class=md-search__output> <div class=md-search__scrollwrap tabindex=0 data-md-scrollfix> <div class=md-search-result data-md-component=search-result> <div class=md-search-result__meta> Initializing search </div> <ol class=md-search-result__list role=presentation></ol> </div> </div> </div> </div> </div> <div class=md-header__source> <a href="https://github.com/nlohmann/json" title="Go to repository" class="md-source" data-md-component="source"> <div class="md-source__icon md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </div> <div class=md-source__repository> nlohmann/json </div> </a> </div> </nav> </header> <div class=md-container data-md-component=container> <nav class=md-tabs aria-label=Tabs data-md-component=tabs> <div class=md-grid> <ul class=md-tabs__list> <li class="md-tabs__item md-tabs__item--active"> <a href=../.. class=md-tabs__link> Home </a> </li> <li class=md-tabs__item> <a href=../../features/arbitrary_types/ class=md-tabs__link> Features </a> </li> <li class=md-tabs__item> <a href=../../integration/ class=md-tabs__link> Integration </a> </li> <li class=md-tabs__item> <a href=../../api/basic_json/ class=md-tabs__link> API Documentation </a> </li> <li class=md-tabs__item> <a href=../../community/ class=md-tabs__link> Community </a> </li> </ul> </div> </nav> <main class=md-main data-md-component=main> <div class="md-main__inner md-grid"> <div class="md-sidebar md-sidebar--primary" data-md-component=sidebar data-md-type=navigation> <div class=md-sidebar__scrollwrap> <div class=md-sidebar__inner> <nav class="md-nav md-nav--primary md-nav--lifted" aria-label=Navigation data-md-level=0> <label class=md-nav__title for=__drawer> <a href=../.. title="JSON for Modern C++" class="md-nav__button md-logo" aria-label="JSON for Modern C++" data-md-component=logo> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54"/></svg> </a> JSON for Modern C++ </label> <div class=md-nav__source> <a href="https://github.com/nlohmann/json" title="Go to repository" class="md-source" data-md-component="source"> <div class="md-source__icon md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </div> <div class=md-source__repository> nlohmann/json </div> </a> </div> <ul class=md-nav__list data-md-scrollfix> <li class="md-nav__item md-nav__item--active md-nav__item--section md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_1 checked> <div class="md-nav__link md-nav__container"> <a href=../.. class="md-nav__link "> <span class=md-ellipsis> Home </span> </a> <label class="md-nav__link " for=__nav_1 id=__nav_1_label tabindex> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_1_label aria-expanded=true> <label class=md-nav__title for=__nav_1> <span class="md-nav__icon md-icon"></span> Home </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../license/ class=md-nav__link> <span class=md-ellipsis> License </span> </a> </li> <li class=md-nav__item> <a href=../faq/ class=md-nav__link> <span class=md-ellipsis> FAQ </span> </a> </li> <li class=md-nav__item> <a href=../exceptions/ class=md-nav__link> <span class=md-ellipsis> Exceptions </span> </a> </li> <li class=md-nav__item> <a href=../releases/ class=md-nav__link> <span class=md-ellipsis> Releases </span> </a> </li> <li class="md-nav__item md-nav__item--active"> <input class="md-nav__toggle md-toggle" type=checkbox id=__toc> <a href=./ class="md-nav__link md-nav__link--active"> <span class=md-ellipsis> Design goals </span> </a> </li> <li class=md-nav__item> <a href=../architecture/ class=md-nav__link> <span class=md-ellipsis> Architecture </span> </a> </li> <li class=md-nav__item> <a href=../customers/ class=md-nav__link> <span class=md-ellipsis> Customers </span> </a> </li> <li class=md-nav__item> <a href=../sponsors/ class=md-nav__link> <span class=md-ellipsis> Sponsors </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2> <label class=md-nav__link for=__nav_2 id=__nav_2_label tabindex=0> <span class=md-ellipsis> Features </span> <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_2_label aria-expanded=false> <label class=md-nav__title for=__nav_2> <span class="md-nav__icon md-icon"></span> Features </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../features/arbitrary_types/ class=md-nav__link> <span class=md-ellipsis> Arbitrary Type Conversions </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_2> <div class="md-nav__link md-nav__container"> <a href=../../features/binary_formats/ class="md-nav__link "> <span class=md-ellipsis> Binary Formats </span> </a> <label class="md-nav__link " for=__nav_2_2 id=__nav_2_2_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_2_label aria-expanded=false> <label class=md-nav__title for=__nav_2_2> <span class="md-nav__icon md-icon"></span> Binary Formats </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../features/binary_formats/bjdata/ class=md-nav__link> <span class=md-ellipsis> BJData </span> </a> </li> <li class=md-nav__item> <a href=../../features/binary_formats/bson/ class=md-nav__link> <span class=md-ellipsis> BSON </span> </a> </li> <li class=md-nav__item> <a href=../../features/binary_formats/cbor/ class=md-nav__link> <span class=md-ellipsis> CBOR </span> </a> </li> <li class=md-nav__item> <a href=../../features/binary_formats/messagepack/ class=md-nav__link> <span class=md-ellipsis> MessagePack </span> </a> </li> <li class=md-nav__item> <a href=../../features/binary_formats/ubjson/ class=md-nav__link> <span class=md-ellipsis> UBJSON </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../features/binary_values/ class=md-nav__link> <span class=md-ellipsis> Binary Values </span> </a> </li> <li class=md-nav__item> <a href=../../features/comments/ class=md-nav__link> <span class=md-ellipsis> Comments </span> </a> </li> <li class=md-nav__item> <a href=../../features/trailing_commas/ class=md-nav__link> <span class=md-ellipsis> Trailing Commas </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_6> <div class="md-nav__link md-nav__container"> <a href=../../features/element_access/ class="md-nav__link "> <span class=md-ellipsis> Element Access </span> </a> <label class="md-nav__link " for=__nav_2_6 id=__nav_2_6_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_6_label aria-expanded=false> <label class=md-nav__title for=__nav_2_6> <span class="md-nav__icon md-icon"></span> Element Access </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../features/element_access/unchecked_access/ class=md-nav__link> <span class=md-ellipsis> Unchecked access: operator[] </span> </a> </li> <li class=md-nav__item> <a href=../../features/element_access/checked_access/ class=md-nav__link> <span class=md-ellipsis> Checked access: at </span> </a> </li> <li class=md-nav__item> <a href=../../features/element_access/default_value/ class=md-nav__link> <span class=md-ellipsis> Access with default value: value </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../features/iterators/ class=md-nav__link> <span class=md-ellipsis> Iterators </span> </a> </li> <li class=md-nav__item> <a href=../../features/json_pointer/ class=md-nav__link> <span class=md-ellipsis> JSON Pointer </span> </a> </li> <li class=md-nav__item> <a href=../../features/json_patch/ class=md-nav__link> <span class=md-ellipsis> JSON Patch and Diff </span> </a> </li> <li class=md-nav__item> <a href=../../features/merge_patch/ class=md-nav__link> <span class=md-ellipsis> JSON Merge Patch </span> </a> </li> <li class=md-nav__item> <a href=../../features/modules/ class=md-nav__link> <span class=md-ellipsis> Modules </span> </a> </li> <li class=md-nav__item> <a href=../../features/namespace/ class=md-nav__link> <span class=md-ellipsis> nlohmann Namespace </span> </a> </li> <li class=md-nav__item> <a href=../../features/object_order/ class=md-nav__link> <span class=md-ellipsis> Object Order </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_14> <div class="md-nav__link md-nav__container"> <a href=../../features/parsing/ class="md-nav__link "> <span class=md-ellipsis> Parsing </span> </a> <label class="md-nav__link " for=__nav_2_14 id=__nav_2_14_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_14_label aria-expanded=false> <label class=md-nav__title for=__nav_2_14> <span class="md-nav__icon md-icon"></span> Parsing </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../features/parsing/json_lines/ class=md-nav__link> <span class=md-ellipsis> JSON Lines </span> </a> </li> <li class=md-nav__item> <a href=../../features/parsing/parse_exceptions/ class=md-nav__link> <span class=md-ellipsis> Parsing and Exceptions </span> </a> </li> <li class=md-nav__item> <a href=../../features/parsing/parser_callbacks/ class=md-nav__link> <span class=md-ellipsis> Parser Callbacks </span> </a> </li> <li class=md-nav__item> <a href=../../features/parsing/sax_interface/ class=md-nav__link> <span class=md-ellipsis> SAX Interface </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../features/assertions/ class=md-nav__link> <span class=md-ellipsis> Runtime Assertions </span> </a> </li> <li class=md-nav__item> <a href=../../features/enum_conversion/ class=md-nav__link> <span class=md-ellipsis> Specializing enum conversion </span> </a> </li> <li class=md-nav__item> <a href=../../features/macros/ class=md-nav__link> <span class=md-ellipsis> Supported Macros </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_18> <div class="md-nav__link md-nav__container"> <a href=../../features/types/ class="md-nav__link "> <span class=md-ellipsis> Types </span> </a> <label class="md-nav__link " for=__nav_2_18 id=__nav_2_18_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_18_label aria-expanded=false> <label class=md-nav__title for=__nav_2_18> <span class="md-nav__icon md-icon"></span> Types </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../features/types/number_handling/ class=md-nav__link> <span class=md-ellipsis> Number Handling </span> </a> </li> </ul> </nav> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_3> <div class="md-nav__link md-nav__container"> <a href=../../integration/ class="md-nav__link "> <span class=md-ellipsis> Integration </span> </a> <label class="md-nav__link " for=__nav_3 id=__nav_3_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_3_label aria-expanded=false> <label class=md-nav__title for=__nav_3> <span class="md-nav__icon md-icon"></span> Integration </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../integration/migration_guide/ class=md-nav__link> <span class=md-ellipsis> Migration Guide </span> </a> </li> <li class=md-nav__item> <a href=../../integration/cmake/ class=md-nav__link> <span class=md-ellipsis> CMake </span> </a> </li> <li class=md-nav__item> <a href=../../integration/package_managers/ class=md-nav__link> <span class=md-ellipsis> Package Managers </span> </a> </li> <li class=md-nav__item> <a href=../../integration/pkg-config/ class=md-nav__link> <span class=md-ellipsis> Pkg-config </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4> <label class=md-nav__link for=__nav_4 id=__nav_4_label tabindex=0> <span class=md-ellipsis> API Documentation </span> <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_4_label aria-expanded=false> <label class=md-nav__title for=__nav_4> <span class="md-nav__icon md-icon"></span> API Documentation </label> <ul class=md-nav__list data-md-scrollfix> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_1> <div class="md-nav__link md-nav__container"> <a href=../../api/basic_json/ class="md-nav__link "> <span class=md-ellipsis> basic_json </span> </a> <label class="md-nav__link " for=__nav_4_1 id=__nav_4_1_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_1_label aria-expanded=false> <label class=md-nav__title for=__nav_4_1> <span class="md-nav__icon md-icon"></span> basic_json </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../api/basic_json/basic_json/ class=md-nav__link> <span class=md-ellipsis> (Constructor) </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/~basic_json/ class=md-nav__link> <span class=md-ellipsis> (Destructor) </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/accept/ class=md-nav__link> <span class=md-ellipsis> accept </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/array/ class=md-nav__link> <span class=md-ellipsis> array </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/array_t/ class=md-nav__link> <span class=md-ellipsis> array_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/at/ class=md-nav__link> <span class=md-ellipsis> at </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/back/ class=md-nav__link> <span class=md-ellipsis> back </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/begin/ class=md-nav__link> <span class=md-ellipsis> begin </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/binary/ class=md-nav__link> <span class=md-ellipsis> binary </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/binary_t/ class=md-nav__link> <span class=md-ellipsis> binary_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/boolean_t/ class=md-nav__link> <span class=md-ellipsis> boolean_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/cbegin/ class=md-nav__link> <span class=md-ellipsis> cbegin </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/cbor_tag_handler_t/ class=md-nav__link> <span class=md-ellipsis> cbor_tag_handler_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/cend/ class=md-nav__link> <span class=md-ellipsis> cend </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/clear/ class=md-nav__link> <span class=md-ellipsis> clear </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/contains/ class=md-nav__link> <span class=md-ellipsis> contains </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/count/ class=md-nav__link> <span class=md-ellipsis> count </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/crbegin/ class=md-nav__link> <span class=md-ellipsis> crbegin </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/crend/ class=md-nav__link> <span class=md-ellipsis> crend </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/default_object_comparator_t/ class=md-nav__link> <span class=md-ellipsis> default_object_comparator_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/diff/ class=md-nav__link> <span class=md-ellipsis> diff </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/dump/ class=md-nav__link> <span class=md-ellipsis> dump </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/emplace/ class=md-nav__link> <span class=md-ellipsis> emplace </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/emplace_back/ class=md-nav__link> <span class=md-ellipsis> emplace_back </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/empty/ class=md-nav__link> <span class=md-ellipsis> empty </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/end/ class=md-nav__link> <span class=md-ellipsis> end </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/end_pos/ class=md-nav__link> <span class=md-ellipsis> end_pos </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/erase/ class=md-nav__link> <span class=md-ellipsis> erase </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/error_handler_t/ class=md-nav__link> <span class=md-ellipsis> error_handler_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/exception/ class=md-nav__link> <span class=md-ellipsis> exception </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/find/ class=md-nav__link> <span class=md-ellipsis> find </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/flatten/ class=md-nav__link> <span class=md-ellipsis> flatten </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/from_bjdata/ class=md-nav__link> <span class=md-ellipsis> from_bjdata </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/from_bson/ class=md-nav__link> <span class=md-ellipsis> from_bson </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/from_cbor/ class=md-nav__link> <span class=md-ellipsis> from_cbor </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/from_msgpack/ class=md-nav__link> <span class=md-ellipsis> from_msgpack </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/from_ubjson/ class=md-nav__link> <span class=md-ellipsis> from_ubjson </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/front/ class=md-nav__link> <span class=md-ellipsis> front </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/get/ class=md-nav__link> <span class=md-ellipsis> get </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/get_allocator/ class=md-nav__link> <span class=md-ellipsis> get_allocator </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/get_binary/ class=md-nav__link> <span class=md-ellipsis> get_binary </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/get_ptr/ class=md-nav__link> <span class=md-ellipsis> get_ptr </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/get_ref/ class=md-nav__link> <span class=md-ellipsis> get_ref </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/get_to/ class=md-nav__link> <span class=md-ellipsis> get_to </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/std_hash/ class=md-nav__link> <span class=md-ellipsis> std::hash&lt;basic_json&gt; </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/input_format_t/ class=md-nav__link> <span class=md-ellipsis> input_format_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/insert/ class=md-nav__link> <span class=md-ellipsis> insert </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/invalid_iterator/ class=md-nav__link> <span class=md-ellipsis> invalid_iterator </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_array/ class=md-nav__link> <span class=md-ellipsis> is_array </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_binary/ class=md-nav__link> <span class=md-ellipsis> is_binary </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_boolean/ class=md-nav__link> <span class=md-ellipsis> is_boolean </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_discarded/ class=md-nav__link> <span class=md-ellipsis> is_discarded </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_null/ class=md-nav__link> <span class=md-ellipsis> is_null </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_number/ class=md-nav__link> <span class=md-ellipsis> is_number </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_number_float/ class=md-nav__link> <span class=md-ellipsis> is_number_float </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_number_integer/ class=md-nav__link> <span class=md-ellipsis> is_number_integer </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_number_unsigned/ class=md-nav__link> <span class=md-ellipsis> is_number_unsigned </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_object/ class=md-nav__link> <span class=md-ellipsis> is_object </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_primitive/ class=md-nav__link> <span class=md-ellipsis> is_primitive </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_string/ class=md-nav__link> <span class=md-ellipsis> is_string </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_structured/ class=md-nav__link> <span class=md-ellipsis> is_structured </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/items/ class=md-nav__link> <span class=md-ellipsis> items </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/json_base_class_t/ class=md-nav__link> <span class=md-ellipsis> json_base_class_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/json_serializer/ class=md-nav__link> <span class=md-ellipsis> json_serializer </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/max_size/ class=md-nav__link> <span class=md-ellipsis> max_size </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/meta/ class=md-nav__link> <span class=md-ellipsis> meta </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/merge_patch/ class=md-nav__link> <span class=md-ellipsis> merge_patch </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/number_float_t/ class=md-nav__link> <span class=md-ellipsis> number_float_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/number_integer_t/ class=md-nav__link> <span class=md-ellipsis> number_integer_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/number_unsigned_t/ class=md-nav__link> <span class=md-ellipsis> number_unsigned_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/object/ class=md-nav__link> <span class=md-ellipsis> object </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/object_comparator_t/ class=md-nav__link> <span class=md-ellipsis> object_comparator_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/object_t/ class=md-nav__link> <span class=md-ellipsis> object_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/operator_ValueType/ class=md-nav__link> <span class=md-ellipsis> operator ValueType </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/operator_value_t/ class=md-nav__link> <span class=md-ellipsis> operator value_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/operator%5B%5D/ class=md-nav__link> <span class=md-ellipsis> operator[] </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/operator%3D/ class=md-nav__link> <span class=md-ellipsis> operator= </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/operator%2B%3D/ class=md-nav__link> <span class=md-ellipsis> operator+= </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/operator_eq/ class=md-nav__link> <span class=md-ellipsis> operator== </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/operator_ne/ class=md-nav__link> <span class=md-ellipsis> operator!= </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/operator_lt/ class=md-nav__link> <span class=md-ellipsis> operator< </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/operator_gt/ class=md-nav__link> <span class=md-ellipsis> operator> </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/operator_le/ class=md-nav__link> <span class=md-ellipsis> operator<= </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/operator_ge/ class=md-nav__link> <span class=md-ellipsis> operator>= </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/operator_spaceship/ class=md-nav__link> <span class=md-ellipsis> operator<=> </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/out_of_range/ class=md-nav__link> <span class=md-ellipsis> out_of_range </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/other_error/ class=md-nav__link> <span class=md-ellipsis> other_error </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/parse/ class=md-nav__link> <span class=md-ellipsis> parse </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/parse_error/ class=md-nav__link> <span class=md-ellipsis> parse_error </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/parse_event_t/ class=md-nav__link> <span class=md-ellipsis> parse_event_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/parser_callback_t/ class=md-nav__link> <span class=md-ellipsis> parser_callback_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/patch/ class=md-nav__link> <span class=md-ellipsis> patch </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/patch_inplace/ class=md-nav__link> <span class=md-ellipsis> patch_inplace </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/push_back/ class=md-nav__link> <span class=md-ellipsis> push_back </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/rbegin/ class=md-nav__link> <span class=md-ellipsis> rbegin </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/rend/ class=md-nav__link> <span class=md-ellipsis> rend </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/sax_parse/ class=md-nav__link> <span class=md-ellipsis> sax_parse </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/size/ class=md-nav__link> <span class=md-ellipsis> size </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/start_pos/ class=md-nav__link> <span class=md-ellipsis> start_pos </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/string_t/ class=md-nav__link> <span class=md-ellipsis> string_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/swap/ class=md-nav__link> <span class=md-ellipsis> swap </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/std_swap/ class=md-nav__link> <span class=md-ellipsis> std::swap&lt;basic_json&gt; </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/to_bjdata/ class=md-nav__link> <span class=md-ellipsis> to_bjdata </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/to_bson/ class=md-nav__link> <span class=md-ellipsis> to_bson </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/to_cbor/ class=md-nav__link> <span class=md-ellipsis> to_cbor </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/to_msgpack/ class=md-nav__link> <span class=md-ellipsis> to_msgpack </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/to_string/ class=md-nav__link> <span class=md-ellipsis> to_string </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/to_ubjson/ class=md-nav__link> <span class=md-ellipsis> to_ubjson </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/type/ class=md-nav__link> <span class=md-ellipsis> type </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/type_error/ class=md-nav__link> <span class=md-ellipsis> type_error </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/type_name/ class=md-nav__link> <span class=md-ellipsis> type_name </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/unflatten/ class=md-nav__link> <span class=md-ellipsis> unflatten </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/update/ class=md-nav__link> <span class=md-ellipsis> update </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/value/ class=md-nav__link> <span class=md-ellipsis> value </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/value_t/ class=md-nav__link> <span class=md-ellipsis> value_t </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_2> <div class="md-nav__link md-nav__container"> <a href=../../api/byte_container_with_subtype/ class="md-nav__link "> <span class=md-ellipsis> byte_container_with_subtype </span> </a> <label class="md-nav__link " for=__nav_4_2 id=__nav_4_2_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_2_label aria-expanded=false> <label class=md-nav__title for=__nav_4_2> <span class="md-nav__icon md-icon"></span> byte_container_with_subtype </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../api/byte_container_with_subtype/byte_container_with_subtype/ class=md-nav__link> <span class=md-ellipsis> (constructor) </span> </a> </li> <li class=md-nav__item> <a href=../../api/byte_container_with_subtype/clear_subtype/ class=md-nav__link> <span class=md-ellipsis> clear_subtype </span> </a> </li> <li class=md-nav__item> <a href=../../api/byte_container_with_subtype/has_subtype/ class=md-nav__link> <span class=md-ellipsis> has_subtype </span> </a> </li> <li class=md-nav__item> <a href=../../api/byte_container_with_subtype/set_subtype/ class=md-nav__link> <span class=md-ellipsis> set_subtype </span> </a> </li> <li class=md-nav__item> <a href=../../api/byte_container_with_subtype/subtype/ class=md-nav__link> <span class=md-ellipsis> subtype </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_3> <div class="md-nav__link md-nav__container"> <a href=../../api/adl_serializer/ class="md-nav__link "> <span class=md-ellipsis> adl_serializer </span> </a> <label class="md-nav__link " for=__nav_4_3 id=__nav_4_3_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_3_label aria-expanded=false> <label class=md-nav__title for=__nav_4_3> <span class="md-nav__icon md-icon"></span> adl_serializer </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../api/adl_serializer/from_json/ class=md-nav__link> <span class=md-ellipsis> from_json </span> </a> </li> <li class=md-nav__item> <a href=../../api/adl_serializer/to_json/ class=md-nav__link> <span class=md-ellipsis> to_json </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../api/json/ class=md-nav__link> <span class=md-ellipsis> json </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_5> <div class="md-nav__link md-nav__container"> <a href=../../api/json_pointer/ class="md-nav__link "> <span class=md-ellipsis> json_pointer </span> </a> <label class="md-nav__link " for=__nav_4_5 id=__nav_4_5_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_5_label aria-expanded=false> <label class=md-nav__title for=__nav_4_5> <span class="md-nav__icon md-icon"></span> json_pointer </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../api/json_pointer/json_pointer/ class=md-nav__link> <span class=md-ellipsis> (Constructor) </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/back/ class=md-nav__link> <span class=md-ellipsis> back </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/empty/ class=md-nav__link> <span class=md-ellipsis> empty </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/front/ class=md-nav__link> <span class=md-ellipsis> front </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/operator_string_t/ class=md-nav__link> <span class=md-ellipsis> operator string_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/operator_eq/ class=md-nav__link> <span class=md-ellipsis> operator== </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/operator_ne/ class=md-nav__link> <span class=md-ellipsis> operator!= </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/operator_slash/ class=md-nav__link> <span class=md-ellipsis> operator/ </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/operator_slasheq/ class=md-nav__link> <span class=md-ellipsis> operator/= </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/parent_pointer/ class=md-nav__link> <span class=md-ellipsis> parent_pointer </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/pop_back/ class=md-nav__link> <span class=md-ellipsis> pop_back </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/pop_front/ class=md-nav__link> <span class=md-ellipsis> pop_front </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/push_back/ class=md-nav__link> <span class=md-ellipsis> push_back </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/push_front/ class=md-nav__link> <span class=md-ellipsis> push_front </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/string_t/ class=md-nav__link> <span class=md-ellipsis> string_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/to_string/ class=md-nav__link> <span class=md-ellipsis> to_string </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_6> <div class="md-nav__link md-nav__container"> <a href=../../api/json_sax/ class="md-nav__link "> <span class=md-ellipsis> json_sax </span> </a> <label class="md-nav__link " for=__nav_4_6 id=__nav_4_6_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_6_label aria-expanded=false> <label class=md-nav__title for=__nav_4_6> <span class="md-nav__icon md-icon"></span> json_sax </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../api/json_sax/binary/ class=md-nav__link> <span class=md-ellipsis> binary </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_sax/boolean/ class=md-nav__link> <span class=md-ellipsis> boolean </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_sax/end_array/ class=md-nav__link> <span class=md-ellipsis> end_array </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_sax/end_object/ class=md-nav__link> <span class=md-ellipsis> end_object </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_sax/key/ class=md-nav__link> <span class=md-ellipsis> key </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_sax/null/ class=md-nav__link> <span class=md-ellipsis> null </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_sax/number_float/ class=md-nav__link> <span class=md-ellipsis> number_float </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_sax/number_integer/ class=md-nav__link> <span class=md-ellipsis> number_integer </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_sax/number_unsigned/ class=md-nav__link> <span class=md-ellipsis> number_unsigned </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_sax/parse_error/ class=md-nav__link> <span class=md-ellipsis> parse_error </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_sax/start_array/ class=md-nav__link> <span class=md-ellipsis> start_array </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_sax/start_object/ class=md-nav__link> <span class=md-ellipsis> start_object </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_sax/string/ class=md-nav__link> <span class=md-ellipsis> string </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../api/operator_ltlt/ class=md-nav__link> <span class=md-ellipsis> operator<<(basic_json), operator<<(json_pointer) </span> </a> </li> <li class=md-nav__item> <a href=../../api/operator_gtgt/ class=md-nav__link> <span class=md-ellipsis> operator>>(basic_json) </span> </a> </li> <li class=md-nav__item> <a href=../../api/operator_literal_json/ class=md-nav__link> <span class=md-ellipsis> operator""_json </span> </a> </li> <li class=md-nav__item> <a href=../../api/operator_literal_json_pointer/ class=md-nav__link> <span class=md-ellipsis> operator""_json_pointer </span> </a> </li> <li class=md-nav__item> <a href=../../api/ordered_json/ class=md-nav__link> <span class=md-ellipsis> ordered_json </span> </a> </li> <li class=md-nav__item> <a href=../../api/ordered_map/ class=md-nav__link> <span class=md-ellipsis> ordered_map </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_13> <div class="md-nav__link md-nav__container"> <a href=../../api/macros/ class="md-nav__link "> <span class=md-ellipsis> macros </span> </a> <label class="md-nav__link " for=__nav_4_13 id=__nav_4_13_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_13_label aria-expanded=false> <label class=md-nav__title for=__nav_4_13> <span class="md-nav__icon md-icon"></span> macros </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../api/macros/json_assert/ class=md-nav__link> <span class=md-ellipsis> JSON_ASSERT </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_brace_init_copy_semantics/ class=md-nav__link> <span class=md-ellipsis> JSON_BRACE_INIT_COPY_SEMANTICS </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_throw_user/ class=md-nav__link> <span class=md-ellipsis> JSON_CATCH_USER, JSON_THROW_USER, JSON_TRY_USER </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_diagnostics/ class=md-nav__link> <span class=md-ellipsis> JSON_DIAGNOSTICS </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_diagnostic_positions/ class=md-nav__link> <span class=md-ellipsis> JSON_DIAGNOSTIC_POSITIONS </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_disable_enum_serialization/ class=md-nav__link> <span class=md-ellipsis> JSON_DISABLE_ENUM_SERIALIZATION </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_has_cpp_11/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_CPP_11, JSON_HAS_CPP_14, JSON_HAS_CPP_17, JSON_HAS_CPP_20 </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_has_filesystem/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_EXPERIMENTAL_FILESYSTEM, JSON_HAS_FILESYSTEM </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_has_ranges/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_RANGES </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_has_static_rtti/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_STATIC_RTTI </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_has_three_way_comparison/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_THREE_WAY_COMPARISON </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_noexception/ class=md-nav__link> <span class=md-ellipsis> JSON_NOEXCEPTION </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_no_io/ class=md-nav__link> <span class=md-ellipsis> JSON_NO_IO </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_skip_library_version_check/ class=md-nav__link> <span class=md-ellipsis> JSON_SKIP_LIBRARY_VERSION_CHECK </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_skip_unsupported_compiler_check/ class=md-nav__link> <span class=md-ellipsis> JSON_SKIP_UNSUPPORTED_COMPILER_CHECK </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_use_global_udls/ class=md-nav__link> <span class=md-ellipsis> JSON_USE_GLOBAL_UDLS </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_use_implicit_conversions/ class=md-nav__link> <span class=md-ellipsis> JSON_USE_IMPLICIT_CONVERSIONS </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_use_legacy_discarded_value_comparison/ class=md-nav__link> <span class=md-ellipsis> JSON_USE_LEGACY_DISCARDED_VALUE_COMPARISON </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/nlohmann_define_derived_type/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_ONLY_SERIALIZE, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/nlohmann_define_type_intrusive/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_TYPE_INTRUSIVE, NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_TYPE_INTRUSIVE_ONLY_SERIALIZE </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/nlohmann_define_type_non_intrusive/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/nlohmann_define_type_with_names/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_TYPE_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/nlohmann_json_namespace/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_NAMESPACE </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/nlohmann_json_namespace_begin/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_NAMESPACE_BEGIN, NLOHMANN_JSON_NAMESPACE_END </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/nlohmann_json_namespace_no_version/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_NAMESPACE_NO_VERSION </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/nlohmann_json_serialize_enum/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_SERIALIZE_ENUM </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/nlohmann_json_serialize_enum_strict/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_SERIALIZE_ENUM_STRICT </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/nlohmann_json_version_major/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_VERSION_MAJOR, NLOHMANN_JSON_VERSION_MINOR, NLOHMANN_JSON_VERSION_PATCH </span> </a> </li> </ul> </nav> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_5> <div class="md-nav__link md-nav__container"> <a href=../../community/ class="md-nav__link "> <span class=md-ellipsis> Community </span> </a> <label class="md-nav__link " for=__nav_5 id=__nav_5_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_5_label aria-expanded=false> <label class=md-nav__title for=__nav_5> <span class="md-nav__icon md-icon"></span> Community </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../community/code_of_conduct/ class=md-nav__link> <span class=md-ellipsis> Code of Conduct </span> </a> </li> <li class=md-nav__item> <a href=../../community/contribution_guidelines/ class=md-nav__link> <span class=md-ellipsis> Contribution Guidelines </span> </a> </li> <li class=md-nav__item> <a href=../../community/quality_assurance/ class=md-nav__link> <span class=md-ellipsis> Quality assurance </span> </a> </li> <li class=md-nav__item> <a href=../../community/governance/ class=md-nav__link> <span class=md-ellipsis> Governance </span> </a> </li> <li class=md-nav__item> <a href=../../community/security_policy/ class=md-nav__link> <span class=md-ellipsis> Security Policy </span> </a> </li> </ul> </nav> </li> </ul> </nav> </div> </div> </div> <div class="md-sidebar md-sidebar--secondary" data-md-component=sidebar data-md-type=toc> <div class=md-sidebar__scrollwrap> <div class=md-sidebar__inner> <nav class="md-nav md-nav--secondary" aria-label="Table of contents"> </nav> </div> </div> </div> <div class=md-content data-md-component=content> <article class="md-content__inner md-typeset"> <a href="https://github.com/nlohmann/json/edit/develop/docs/mkdocs/docs/home/design_goals.md" title="Edit this page" class="md-content__button md-icon" rel="edit"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M10 20H6V4h7v5h5v3.1l2-2V8l-6-6H6c-1.1 0-2 .9-2 2v16c0 1.1.9 2 2 2h4zm10.2-7c.1 0 .3.1.4.2l1.3 1.3c.2.2.2.6 0 .8l-1 1-2.1-2.1 1-1c.1-.1.2-.2.4-.2m0 3.9L14.1 23H12v-2.1l6.1-6.1z"/></svg> </a> <a href="https://github.com/nlohmann/json/raw/develop/docs/mkdocs/docs/home/design_goals.md" title="View source of this page" class="md-content__button md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M17 18c.56 0 1 .44 1 1s-.44 1-1 1-1-.44-1-1 .44-1 1-1m0-3c-2.73 0-5.06 1.66-6 4 .94 2.34 3.27 4 6 4s5.06-1.66 6-4c-.94-2.34-3.27-4-6-4m0 6.5a2.5 2.5 0 0 1-2.5-2.5 2.5 2.5 0 0 1 2.5-2.5 2.5 2.5 0 0 1 2.5 2.5 2.5 2.5 0 0 1-2.5 2.5M9.27 20H6V4h7v5h5v4.07c.7.08 1.36.25 2 .49V8l-6-6H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h4.5a8.2 8.2 0 0 1-1.23-2"/></svg> </a> <h1 id=design-goals>Design goals<a class=headerlink href=#design-goals title="Permanent link">&para;</a></h1> <p>There are myriads of <a href="https://json.org"><abbr title="JavaScript Object Notation">JSON</abbr></a> libraries out there, and each may even have its reason to exist. Our class had these design goals:</p> <ul> <li> <p><strong>Intuitive syntax</strong>. In languages such as Python, <abbr title="JavaScript Object Notation">JSON</abbr> feels like a first-class data type. We used all the operator magic of modern C++ to achieve the same feeling in your code.</p> </li> <li> <p><strong>Trivial integration</strong>. Our whole code consists of a single header file <a href="https://github.com/nlohmann/json/blob/develop/single_include/nlohmann/json.hpp"><code>json.hpp</code></a>. That's it. No library, no subproject, no dependencies, no complex build system. The class is written in vanilla C++11. All in all, everything should require no adjustment of your compiler flags or project settings.</p> </li> <li> <p><strong>Serious testing</strong>. Our class is heavily <a href="https://github.com/nlohmann/json/tree/develop/tests/src">unit-tested</a> and covers <a href="https://coveralls.io/r/nlohmann/json">100%</a> of the code, including all exceptional behavior. Furthermore, we checked with <a href="http://valgrind.org">Valgrind</a> and the <a href="https://clang.llvm.org/docs/index.html">Clang Sanitizers</a> that there are no memory leaks. <a href="https://github.com/google/oss-fuzz/tree/master/projects/json">Google OSS-Fuzz</a> additionally runs fuzz tests against all parsers 24/7, effectively executing billions of tests so far. To maintain high quality, the project is following the <a href="https://bestpractices.coreinfrastructure.org/projects/289">Core Infrastructure Initiative (CII) best practices</a>.</p> </li> </ul> <p>Other aspects were not so important to us:</p> <ul> <li> <p><strong>Memory efficiency</strong>. Each <abbr title="JavaScript Object Notation">JSON</abbr> object has an overhead of one pointer (the maximal size of a union) and one enumeration element (1 byte). The default generalization uses the following C++ data types: <code>std::string</code> for strings, <code>int64_t</code>, <code>uint64_t</code> or <code>double</code> for numbers, <code>std::map</code> for objects, <code>std::vector</code> for arrays, and <code>bool</code> for Booleans. However, you can template the generalized class <code>basic_json</code> to your needs.</p> </li> <li> <p><strong>Speed</strong>. There are certainly <a href="https://github.com/miloyip/nativejson-benchmark#parsing-time">faster <abbr title="JavaScript Object Notation">JSON</abbr> libraries</a> out there. However, if your goal is to speed up your development by adding <abbr title="JavaScript Object Notation">JSON</abbr> support with a single header, then this library is the way to go. If you know how to use a <code>std::vector</code> or <code>std::map</code>, you are already set.</p> </li> </ul> <p>See the <a href="https://github.com/nlohmann/json/blob/master/.github/CONTRIBUTING.md#please-dont">contribution guidelines</a> for more information.</p> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 29, 2026 20:15:18 UTC">June 29, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
diff --git a/home/exceptions/index.html b/home/exceptions/index.html
index 7544e2f..741ce1d 100644
--- a/home/exceptions/index.html
+++ b/home/exceptions/index.html
@@ -247,7 +247,8 @@
 </code></pre></div> </div> <h3 id=jsonexceptionout_of_range406>json.exception.out_of_range.406<a class=headerlink href=#jsonexceptionout_of_range406 title="Permanent link">&para;</a></h3> <p>A parsed number could not be stored as without changing it to <abbr title="Not a Number">NaN</abbr> or INF.</p> <div class="admonition failure"> <p class=admonition-title>Example message</p> <div class=highlight><pre><span></span><code>number overflow parsing &#39;10E1000&#39;
 </code></pre></div> </div> <h3 id=jsonexceptionout_of_range407>json.exception.out_of_range.407<a class=headerlink href=#jsonexceptionout_of_range407 title="Permanent link">&para;</a></h3> <p>This exception previously indicated that the <abbr title="Universal Binary JSON">UBJSON</abbr> and <abbr title="Binary JSON">BSON</abbr> binary formats did not support integer numbers greater than 9223372036854775807 due to limitations in the implemented mapping. However, these limitations have since been resolved, and this exception no longer occurs.</p> <div class="admonition success"> <p class=admonition-title>Exception cannot occur any more</p> <ul> <li>Since version 3.9.0, integer numbers beyond int64 are serialized as high-precision <abbr title="Universal Binary JSON">UBJSON</abbr> numbers.</li> <li>Since version 3.12.0, integer numbers beyond int64 are serialized as uint64 <abbr title="Binary JSON">BSON</abbr> numbers.</li> </ul> </div> <h3 id=jsonexceptionout_of_range408>json.exception.out_of_range.408<a class=headerlink href=#jsonexceptionout_of_range408 title="Permanent link">&para;</a></h3> <p>The size (following <code>#</code>) of an <abbr title="Universal Binary JSON">UBJSON</abbr> array or object exceeds the maximal capacity.</p> <div class="admonition failure"> <p class=admonition-title>Example message</p> <div class=highlight><pre><span></span><code>excessive array size: 8658170730974374167
 </code></pre></div> </div> <h3 id=jsonexceptionout_of_range409>json.exception.out_of_range.409<a class=headerlink href=#jsonexceptionout_of_range409 title="Permanent link">&para;</a></h3> <p>Key identifiers to be serialized to <abbr title="Binary JSON">BSON</abbr> cannot contain code point U+0000, since the key is stored as zero-terminated c-string.</p> <div class="admonition failure"> <p class=admonition-title>Example message</p> <div class=highlight><pre><span></span><code>BSON key cannot contain code point U+0000 (at byte 2)
-</code></pre></div> </div> <h3 id=jsonexceptionout_of_range410>json.exception.out_of_range.410<a class=headerlink href=#jsonexceptionout_of_range410 title="Permanent link">&para;</a></h3> <p>Undefined json fields cannot be used with <a href=../../api/macros/nlohmann_json_serialize_enum_strict/ ><code>NLOHMANN_JSON_SERIALIZE_ENUM_STRICT</code></a></p> <div class="admonition failure"> <p class=admonition-title>Example message</p> <div class=highlight><pre><span></span><code>enum value out of range
+</code></pre></div> </div> <h3 id=jsonexceptionout_of_range410>json.exception.out_of_range.410<a class=headerlink href=#jsonexceptionout_of_range410 title="Permanent link">&para;</a></h3> <p>This exception is thrown when an undefined value is used with <a href=../../api/macros/nlohmann_json_serialize_enum_strict/ ><code>NLOHMANN_JSON_SERIALIZE_ENUM_STRICT</code></a>, or when an array index in a <abbr title="JavaScript Object Notation">JSON</abbr> pointer exceeds the range of <code>size_type</code> (e.g., on 32-bit platforms).</p> <div class="admonition failure"> <p class=admonition-title>Example message</p> <div class=highlight><pre><span></span><code>enum value out of range
+array index 18446744073709551616 exceeds size_type
 </code></pre></div> </div> <h2 id=further-exceptions>Further exceptions<a class=headerlink href=#further-exceptions title="Permanent link">&para;</a></h2> <p>This exception is thrown in case of errors that cannot be classified with the other exception types.</p> <p>Exceptions have ids 5xx.</p> <details class=example> <summary>Example</summary> <p>The following code shows how an <code>other_error</code> exception can be caught.</p> <div class=highlight><pre><span></span><code><span class=cp>#include</span><span class=w> </span><span class=cpf>&lt;iostream&gt;</span>
 <span class=cp>#include</span><span class=w> </span><span class=cpf>&lt;nlohmann/json.hpp&gt;</span>
 
@@ -281,4 +282,4 @@
 </code></pre></div> <p>Output:</p> <div class=highlight><pre><span></span><code>message: [json.exception.other_error.501] unsuccessful: {&quot;op&quot;:&quot;test&quot;,&quot;path&quot;:&quot;/best_biscuit/name&quot;,&quot;value&quot;:&quot;Choco Leibniz&quot;}
 exception id: 501
 </code></pre></div> </details> <h3 id=jsonexceptionother_error501>json.exception.other_error.501<a class=headerlink href=#jsonexceptionother_error501 title="Permanent link">&para;</a></h3> <p>A <abbr title="JavaScript Object Notation">JSON</abbr> Patch operation 'test' failed. The unsuccessful operation is also printed.</p> <div class="admonition failure"> <p class=admonition-title>Example message</p> <p>Executing <code class=highlight><span class=p>{</span><span class=nt>&quot;op&quot;</span><span class=p>:</span><span class=s2>&quot;test&quot;</span><span class=p>,</span><span class=w> </span><span class=nt>&quot;path&quot;</span><span class=p>:</span><span class=s2>&quot;/baz&quot;</span><span class=p>,</span><span class=w> </span><span class=nt>&quot;value&quot;</span><span class=p>:</span><span class=s2>&quot;bar&quot;</span><span class=p>}</span></code> on <code class=highlight><span class=p>{</span><span class=nt>&quot;baz&quot;</span><span class=p>:</span><span class=w> </span><span class=s2>&quot;qux&quot;</span><span class=p>}</span></code>:</p> <div class=highlight><pre><span></span><code>[json.exception.other_error.501] unsuccessful: {&quot;op&quot;:&quot;test&quot;,&quot;path&quot;:&quot;/baz&quot;,&quot;value&quot;:&quot;bar&quot;}
-</code></pre></div> </div> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 23, 2026 11:16:18 UTC">June 23, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
+</code></pre></div> </div> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 29, 2026 20:15:18 UTC">June 29, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
diff --git a/home/faq/index.html b/home/faq/index.html
index acc4d6f..cf085b4 100644
--- a/home/faq/index.html
+++ b/home/faq/index.html
@@ -32,4 +32,4 @@
 </code></pre></div> </div> <h2 id=exceptions>Exceptions<a class=headerlink href=#exceptions title="Permanent link">&para;</a></h2> <h3 id=parsing-without-exceptions>Parsing without exceptions<a class=headerlink href=#parsing-without-exceptions title="Permanent link">&para;</a></h3> <div class="admonition question"> <p class=admonition-title>Question</p> <p>Is it possible to indicate a parse error without throwing an exception?</p> </div> <p>Yes, see <a href=../../features/parsing/parse_exceptions/ >Parsing and exceptions</a>.</p> <h3 id=key-name-in-exceptions>Key name in exceptions<a class=headerlink href=#key-name-in-exceptions title="Permanent link">&para;</a></h3> <div class="admonition question"> <p class=admonition-title>Question</p> <p>Can I get the key of the object item that caused an exception?</p> </div> <p>Yes, you can. Please define the symbol <a href=../../api/macros/json_diagnostics/ ><code>JSON_DIAGNOSTICS</code></a> to get <a href=../exceptions/#extended-diagnostic-messages>extended diagnostics messages</a>.</p> <h2 id=serialization-issues>Serialization issues<a class=headerlink href=#serialization-issues title="Permanent link">&para;</a></h2> <h3 id=number-precision>Number precision<a class=headerlink href=#number-precision title="Permanent link">&para;</a></h3> <div class="admonition question"> <p class=admonition-title>Question</p> <ul> <li>It seems that precision is lost when serializing a double.</li> <li>Can I change the precision for floating-point serialization?</li> </ul> </div> <p>The library uses <code>std::numeric_limits&lt;number_float_t&gt;::digits10</code> (15 for <abbr title="Institute of Electrical and Electronics Engineers">IEEE</abbr> <code>double</code>s) digits for serialization. This value is sufficient to guarantee roundtripping. If one uses more than this number of digits of precision, then string -&gt; value -&gt; string is not guaranteed to round-trip.</p> <div class="admonition quote"> <p class=admonition-title><a href="https://en.cppreference.com/w/cpp/types/numeric_limits/digits10">cppreference.com</a></p> <p>The value of <code>std::numeric_limits&lt;T&gt;::digits10</code> is the number of base-10 digits that can be represented by the type T without change, that is, any number with this many significant decimal digits can be converted to a value of type T and back to decimal form, without change due to rounding or overflow. </p> </div> <div class="admonition tip"> <p class=admonition-title>Tip</p> <p>The website <a href="https://float.exposed">https://float.exposed</a> gives a good insight into the internal storage of floating-point numbers.</p> </div> <p>See <a href=../../features/types/number_handling/#number-serialization>this section</a> on the library's number handling for more information.</p> <h2 id=compilation-issues>Compilation issues<a class=headerlink href=#compilation-issues title="Permanent link">&para;</a></h2> <h3 id=android-sdk>Android <abbr title="Software Development Kit">SDK</abbr><a class=headerlink href=#android-sdk title="Permanent link">&para;</a></h3> <div class="admonition question"> <p class=admonition-title>Question</p> <p>Why does the code not compile with Android <abbr title="Software Development Kit">SDK</abbr>?</p> </div> <p>Android defaults to using very old compilers and C++ libraries. To fix this, add the following to your <code>Application.mk</code>. This will switch to the LLVM C++ library, the Clang compiler, and enable C++11 and other features disabled by default.</p> <div class=highlight><pre><span></span><code><span class=na>APP_STL</span><span class=w> </span><span class=o>:</span><span class=s>= c++_shared</span>
 <span class=na>NDK_TOOLCHAIN_VERSION</span><span class=w> </span><span class=o>:</span><span class=s>= clang3.6</span>
 <span class=na>APP_CPPFLAGS +</span><span class=o>=</span><span class=w> </span><span class=s>-frtti -fexceptions</span>
-</code></pre></div> <p>The code compiles successfully with <a href="https://developer.android.com/ndk/index.html?hl=ml">Android <abbr title="Native Development Kit">NDK</abbr></a>, Revision 9 - 11 (and possibly later) and <a href="https://www.crystax.net/en/android/ndk">CrystaX's Android <abbr title="Native Development Kit">NDK</abbr></a> version 10.</p> <h3 id=missing-stl-function>Missing <abbr title="Standard Template Library">STL</abbr> function<a class=headerlink href=#missing-stl-function title="Permanent link">&para;</a></h3> <div class="admonition question"> <p class=admonition-title>Questions</p> <ul> <li>Why do I get a compilation error <code>'to_string' is not a member of 'std'</code> (or similarly, for <code>strtod</code> or <code>strtof</code>)?</li> <li>Why does the code not compile with MinGW or Android <abbr title="Software Development Kit">SDK</abbr>?</li> </ul> </div> <p>This is not an issue with the code, but rather with the compiler itself. On Android, see above to build with a newer environment. For MinGW, please refer to <a href="http://tehsausage.com/mingw-to-string">this site</a> and <a href="https://github.com/nlohmann/json/issues/136">this discussion</a> for information on how to fix this bug. For Android <abbr title="Native Development Kit">NDK</abbr> using <code>APP_STL := gnustl_static</code>, please refer to <a href="https://github.com/nlohmann/json/issues/219">this discussion</a>.</p> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 23, 2026 11:16:18 UTC">June 23, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
+</code></pre></div> <p>The code compiles successfully with <a href="https://developer.android.com/ndk/index.html?hl=ml">Android <abbr title="Native Development Kit">NDK</abbr></a>, Revision 9 - 11 (and possibly later) and <a href="https://www.crystax.net/en/android/ndk">CrystaX's Android <abbr title="Native Development Kit">NDK</abbr></a> version 10.</p> <h3 id=missing-stl-function>Missing <abbr title="Standard Template Library">STL</abbr> function<a class=headerlink href=#missing-stl-function title="Permanent link">&para;</a></h3> <div class="admonition question"> <p class=admonition-title>Questions</p> <ul> <li>Why do I get a compilation error <code>'to_string' is not a member of 'std'</code> (or similarly, for <code>strtod</code> or <code>strtof</code>)?</li> <li>Why does the code not compile with MinGW or Android <abbr title="Software Development Kit">SDK</abbr>?</li> </ul> </div> <p>This is not an issue with the code, but rather with the compiler itself. On Android, see above to build with a newer environment. For MinGW, please refer to <a href="http://tehsausage.com/mingw-to-string">this site</a> and <a href="https://github.com/nlohmann/json/issues/136">this discussion</a> for information on how to fix this bug. For Android <abbr title="Native Development Kit">NDK</abbr> using <code>APP_STL := gnustl_static</code>, please refer to <a href="https://github.com/nlohmann/json/issues/219">this discussion</a>.</p> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 29, 2026 20:15:18 UTC">June 29, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
diff --git a/home/license/index.html b/home/license/index.html
index b98f091..0cf71b1 100644
--- a/home/license/index.html
+++ b/home/license/index.html
@@ -1 +1 @@
-<!doctype html><html lang=en class=no-js> <head><meta charset=utf-8><meta name=viewport content="width=device-width,initial-scale=1"><meta name=author content="Niels Lohmann"><link href="https://json.nlohmann.me/home/license/" rel="canonical"><link rel=prev href=../..><link href=../faq/ rel=next><link rel=icon href=../../assets/images/favicon.png><meta name=generator content="mkdocs-1.6.1, mkdocs-material-9.7.6"><title>License - JSON for Modern C++</title><link rel=stylesheet href=../../assets/stylesheets/main.484c7ddc.min.css><link rel=stylesheet href=../../assets/stylesheets/palette.ab4e12ef.min.css><link rel="stylesheet" href="../../assets/external/fonts.googleapis.com/css.61a430c9.css"><style>:root{--md-text-font:"Roboto";--md-code-font:"JetBrains Mono"}</style><link rel=stylesheet href=../../css/custom.css><script>__md_scope=new URL("../..",location),__md_hash=e=>[...e].reduce(((e,_)=>(e<<5)-e+_.charCodeAt(0)),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script></head> <body dir=ltr data-md-color-scheme=default data-md-color-primary=indigo data-md-color-accent=indigo> <input class=md-toggle data-md-toggle=drawer type=checkbox id=__drawer autocomplete=off> <input class=md-toggle data-md-toggle=search type=checkbox id=__search autocomplete=off> <label class=md-overlay for=__drawer></label> <div data-md-component=skip> <a href=#license class=md-skip> Skip to content </a> </div> <div data-md-component=announce> </div> <header class=md-header data-md-component=header> <nav class="md-header__inner md-grid" aria-label=Header> <a href=../.. title="JSON for Modern C++" class="md-header__button md-logo" aria-label="JSON for Modern C++" data-md-component=logo> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54"/></svg> </a> <label class="md-header__button md-icon" for=__drawer> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M3 6h18v2H3zm0 5h18v2H3zm0 5h18v2H3z"/></svg> </label> <div class=md-header__title data-md-component=header-title> <div class=md-header__ellipsis> <div class=md-header__topic> <span class=md-ellipsis> JSON for Modern C++ </span> </div> <div class=md-header__topic data-md-component=header-topic> <span class=md-ellipsis> License </span> </div> </div> </div> <form class=md-header__option data-md-component=palette> <input class=md-option data-md-color-media="(prefers-color-scheme: light)" data-md-color-scheme=default data-md-color-primary=indigo data-md-color-accent=indigo aria-label="Switch to dark mode" type=radio name=__palette id=__palette_0> <label class="md-header__button md-icon" title="Switch to dark mode" for=__palette_1 hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a4 4 0 0 0-4 4 4 4 0 0 0 4 4 4 4 0 0 0 4-4 4 4 0 0 0-4-4m0 10a6 6 0 0 1-6-6 6 6 0 0 1 6-6 6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12z"/></svg> </label> <input class=md-option data-md-color-media="(prefers-color-scheme: dark)" data-md-color-scheme=slate data-md-color-primary=indigo data-md-color-accent=indigo aria-label="Switch to light mode" type=radio name=__palette id=__palette_1> <label class="md-header__button md-icon" title="Switch to light mode" for=__palette_0 hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 18c-.89 0-1.74-.2-2.5-.55C11.56 16.5 13 14.42 13 12s-1.44-4.5-3.5-5.45C10.26 6.2 11.11 6 12 6a6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12z"/></svg> </label> </form> <script>var palette=__md_get("__palette");if(palette&&palette.color){if("(prefers-color-scheme)"===palette.color.media){var media=matchMedia("(prefers-color-scheme: light)"),input=document.querySelector(media.matches?"[data-md-color-media='(prefers-color-scheme: light)']":"[data-md-color-media='(prefers-color-scheme: dark)']");palette.color.media=input.getAttribute("data-md-color-media"),palette.color.scheme=input.getAttribute("data-md-color-scheme"),palette.color.primary=input.getAttribute("data-md-color-primary"),palette.color.accent=input.getAttribute("data-md-color-accent")}for(var[key,value]of Object.entries(palette.color))document.body.setAttribute("data-md-color-"+key,value)}</script> <label class="md-header__button md-icon" for=__search> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg> </label> <div class=md-search data-md-component=search role=dialog> <label class=md-search__overlay for=__search></label> <div class=md-search__inner role=search> <form class=md-search__form name=search> <input type=text class=md-search__input name=query aria-label=Search placeholder=Search autocapitalize=off autocorrect=off autocomplete=off spellcheck=false data-md-component=search-query required> <label class="md-search__icon md-icon" for=__search> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11z"/></svg> </label> <nav class=md-search__options aria-label=Search> <button type=reset class="md-search__icon md-icon" title=Clear aria-label=Clear tabindex=-1> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z"/></svg> </button> </nav> </form> <div class=md-search__output> <div class=md-search__scrollwrap tabindex=0 data-md-scrollfix> <div class=md-search-result data-md-component=search-result> <div class=md-search-result__meta> Initializing search </div> <ol class=md-search-result__list role=presentation></ol> </div> </div> </div> </div> </div> <div class=md-header__source> <a href="https://github.com/nlohmann/json" title="Go to repository" class="md-source" data-md-component="source"> <div class="md-source__icon md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </div> <div class=md-source__repository> nlohmann/json </div> </a> </div> </nav> </header> <div class=md-container data-md-component=container> <nav class=md-tabs aria-label=Tabs data-md-component=tabs> <div class=md-grid> <ul class=md-tabs__list> <li class="md-tabs__item md-tabs__item--active"> <a href=../.. class=md-tabs__link> Home </a> </li> <li class=md-tabs__item> <a href=../../features/arbitrary_types/ class=md-tabs__link> Features </a> </li> <li class=md-tabs__item> <a href=../../integration/ class=md-tabs__link> Integration </a> </li> <li class=md-tabs__item> <a href=../../api/basic_json/ class=md-tabs__link> API Documentation </a> </li> <li class=md-tabs__item> <a href=../../community/ class=md-tabs__link> Community </a> </li> </ul> </div> </nav> <main class=md-main data-md-component=main> <div class="md-main__inner md-grid"> <div class="md-sidebar md-sidebar--primary" data-md-component=sidebar data-md-type=navigation> <div class=md-sidebar__scrollwrap> <div class=md-sidebar__inner> <nav class="md-nav md-nav--primary md-nav--lifted" aria-label=Navigation data-md-level=0> <label class=md-nav__title for=__drawer> <a href=../.. title="JSON for Modern C++" class="md-nav__button md-logo" aria-label="JSON for Modern C++" data-md-component=logo> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54"/></svg> </a> JSON for Modern C++ </label> <div class=md-nav__source> <a href="https://github.com/nlohmann/json" title="Go to repository" class="md-source" data-md-component="source"> <div class="md-source__icon md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </div> <div class=md-source__repository> nlohmann/json </div> </a> </div> <ul class=md-nav__list data-md-scrollfix> <li class="md-nav__item md-nav__item--active md-nav__item--section md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_1 checked> <div class="md-nav__link md-nav__container"> <a href=../.. class="md-nav__link "> <span class=md-ellipsis> Home </span> </a> <label class="md-nav__link " for=__nav_1 id=__nav_1_label tabindex> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_1_label aria-expanded=true> <label class=md-nav__title for=__nav_1> <span class="md-nav__icon md-icon"></span> Home </label> <ul class=md-nav__list data-md-scrollfix> <li class="md-nav__item md-nav__item--active"> <input class="md-nav__toggle md-toggle" type=checkbox id=__toc> <a href=./ class="md-nav__link md-nav__link--active"> <span class=md-ellipsis> License </span> </a> </li> <li class=md-nav__item> <a href=../faq/ class=md-nav__link> <span class=md-ellipsis> FAQ </span> </a> </li> <li class=md-nav__item> <a href=../exceptions/ class=md-nav__link> <span class=md-ellipsis> Exceptions </span> </a> </li> <li class=md-nav__item> <a href=../releases/ class=md-nav__link> <span class=md-ellipsis> Releases </span> </a> </li> <li class=md-nav__item> <a href=../design_goals/ class=md-nav__link> <span class=md-ellipsis> Design goals </span> </a> </li> <li class=md-nav__item> <a href=../architecture/ class=md-nav__link> <span class=md-ellipsis> Architecture </span> </a> </li> <li class=md-nav__item> <a href=../customers/ class=md-nav__link> <span class=md-ellipsis> Customers </span> </a> </li> <li class=md-nav__item> <a href=../sponsors/ class=md-nav__link> <span class=md-ellipsis> Sponsors </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2> <label class=md-nav__link for=__nav_2 id=__nav_2_label tabindex=0> <span class=md-ellipsis> Features </span> <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_2_label aria-expanded=false> <label class=md-nav__title for=__nav_2> <span class="md-nav__icon md-icon"></span> Features </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../features/arbitrary_types/ class=md-nav__link> <span class=md-ellipsis> Arbitrary Type Conversions </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_2> <div class="md-nav__link md-nav__container"> <a href=../../features/binary_formats/ class="md-nav__link "> <span class=md-ellipsis> Binary Formats </span> </a> <label class="md-nav__link " for=__nav_2_2 id=__nav_2_2_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_2_label aria-expanded=false> <label class=md-nav__title for=__nav_2_2> <span class="md-nav__icon md-icon"></span> Binary Formats </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../features/binary_formats/bjdata/ class=md-nav__link> <span class=md-ellipsis> BJData </span> </a> </li> <li class=md-nav__item> <a href=../../features/binary_formats/bson/ class=md-nav__link> <span class=md-ellipsis> BSON </span> </a> </li> <li class=md-nav__item> <a href=../../features/binary_formats/cbor/ class=md-nav__link> <span class=md-ellipsis> CBOR </span> </a> </li> <li class=md-nav__item> <a href=../../features/binary_formats/messagepack/ class=md-nav__link> <span class=md-ellipsis> MessagePack </span> </a> </li> <li class=md-nav__item> <a href=../../features/binary_formats/ubjson/ class=md-nav__link> <span class=md-ellipsis> UBJSON </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../features/binary_values/ class=md-nav__link> <span class=md-ellipsis> Binary Values </span> </a> </li> <li class=md-nav__item> <a href=../../features/comments/ class=md-nav__link> <span class=md-ellipsis> Comments </span> </a> </li> <li class=md-nav__item> <a href=../../features/trailing_commas/ class=md-nav__link> <span class=md-ellipsis> Trailing Commas </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_6> <div class="md-nav__link md-nav__container"> <a href=../../features/element_access/ class="md-nav__link "> <span class=md-ellipsis> Element Access </span> </a> <label class="md-nav__link " for=__nav_2_6 id=__nav_2_6_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_6_label aria-expanded=false> <label class=md-nav__title for=__nav_2_6> <span class="md-nav__icon md-icon"></span> Element Access </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../features/element_access/unchecked_access/ class=md-nav__link> <span class=md-ellipsis> Unchecked access: operator[] </span> </a> </li> <li class=md-nav__item> <a href=../../features/element_access/checked_access/ class=md-nav__link> <span class=md-ellipsis> Checked access: at </span> </a> </li> <li class=md-nav__item> <a href=../../features/element_access/default_value/ class=md-nav__link> <span class=md-ellipsis> Access with default value: value </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../features/iterators/ class=md-nav__link> <span class=md-ellipsis> Iterators </span> </a> </li> <li class=md-nav__item> <a href=../../features/json_pointer/ class=md-nav__link> <span class=md-ellipsis> JSON Pointer </span> </a> </li> <li class=md-nav__item> <a href=../../features/json_patch/ class=md-nav__link> <span class=md-ellipsis> JSON Patch and Diff </span> </a> </li> <li class=md-nav__item> <a href=../../features/merge_patch/ class=md-nav__link> <span class=md-ellipsis> JSON Merge Patch </span> </a> </li> <li class=md-nav__item> <a href=../../features/modules/ class=md-nav__link> <span class=md-ellipsis> Modules </span> </a> </li> <li class=md-nav__item> <a href=../../features/namespace/ class=md-nav__link> <span class=md-ellipsis> nlohmann Namespace </span> </a> </li> <li class=md-nav__item> <a href=../../features/object_order/ class=md-nav__link> <span class=md-ellipsis> Object Order </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_14> <div class="md-nav__link md-nav__container"> <a href=../../features/parsing/ class="md-nav__link "> <span class=md-ellipsis> Parsing </span> </a> <label class="md-nav__link " for=__nav_2_14 id=__nav_2_14_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_14_label aria-expanded=false> <label class=md-nav__title for=__nav_2_14> <span class="md-nav__icon md-icon"></span> Parsing </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../features/parsing/json_lines/ class=md-nav__link> <span class=md-ellipsis> JSON Lines </span> </a> </li> <li class=md-nav__item> <a href=../../features/parsing/parse_exceptions/ class=md-nav__link> <span class=md-ellipsis> Parsing and Exceptions </span> </a> </li> <li class=md-nav__item> <a href=../../features/parsing/parser_callbacks/ class=md-nav__link> <span class=md-ellipsis> Parser Callbacks </span> </a> </li> <li class=md-nav__item> <a href=../../features/parsing/sax_interface/ class=md-nav__link> <span class=md-ellipsis> SAX Interface </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../features/assertions/ class=md-nav__link> <span class=md-ellipsis> Runtime Assertions </span> </a> </li> <li class=md-nav__item> <a href=../../features/enum_conversion/ class=md-nav__link> <span class=md-ellipsis> Specializing enum conversion </span> </a> </li> <li class=md-nav__item> <a href=../../features/macros/ class=md-nav__link> <span class=md-ellipsis> Supported Macros </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_18> <div class="md-nav__link md-nav__container"> <a href=../../features/types/ class="md-nav__link "> <span class=md-ellipsis> Types </span> </a> <label class="md-nav__link " for=__nav_2_18 id=__nav_2_18_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_18_label aria-expanded=false> <label class=md-nav__title for=__nav_2_18> <span class="md-nav__icon md-icon"></span> Types </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../features/types/number_handling/ class=md-nav__link> <span class=md-ellipsis> Number Handling </span> </a> </li> </ul> </nav> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_3> <div class="md-nav__link md-nav__container"> <a href=../../integration/ class="md-nav__link "> <span class=md-ellipsis> Integration </span> </a> <label class="md-nav__link " for=__nav_3 id=__nav_3_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_3_label aria-expanded=false> <label class=md-nav__title for=__nav_3> <span class="md-nav__icon md-icon"></span> Integration </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../integration/migration_guide/ class=md-nav__link> <span class=md-ellipsis> Migration Guide </span> </a> </li> <li class=md-nav__item> <a href=../../integration/cmake/ class=md-nav__link> <span class=md-ellipsis> CMake </span> </a> </li> <li class=md-nav__item> <a href=../../integration/package_managers/ class=md-nav__link> <span class=md-ellipsis> Package Managers </span> </a> </li> <li class=md-nav__item> <a href=../../integration/pkg-config/ class=md-nav__link> <span class=md-ellipsis> Pkg-config </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4> <label class=md-nav__link for=__nav_4 id=__nav_4_label tabindex=0> <span class=md-ellipsis> API Documentation </span> <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_4_label aria-expanded=false> <label class=md-nav__title for=__nav_4> <span class="md-nav__icon md-icon"></span> API Documentation </label> <ul class=md-nav__list data-md-scrollfix> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_1> <div class="md-nav__link md-nav__container"> <a href=../../api/basic_json/ class="md-nav__link "> <span class=md-ellipsis> basic_json </span> </a> <label class="md-nav__link " for=__nav_4_1 id=__nav_4_1_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_1_label aria-expanded=false> <label class=md-nav__title for=__nav_4_1> <span class="md-nav__icon md-icon"></span> basic_json </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../api/basic_json/basic_json/ class=md-nav__link> <span class=md-ellipsis> (Constructor) </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/~basic_json/ class=md-nav__link> <span class=md-ellipsis> (Destructor) </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/accept/ class=md-nav__link> <span class=md-ellipsis> accept </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/array/ class=md-nav__link> <span class=md-ellipsis> array </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/array_t/ class=md-nav__link> <span class=md-ellipsis> array_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/at/ class=md-nav__link> <span class=md-ellipsis> at </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/back/ class=md-nav__link> <span class=md-ellipsis> back </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/begin/ class=md-nav__link> <span class=md-ellipsis> begin </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/binary/ class=md-nav__link> <span class=md-ellipsis> binary </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/binary_t/ class=md-nav__link> <span class=md-ellipsis> binary_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/boolean_t/ class=md-nav__link> <span class=md-ellipsis> boolean_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/cbegin/ class=md-nav__link> <span class=md-ellipsis> cbegin </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/cbor_tag_handler_t/ class=md-nav__link> <span class=md-ellipsis> cbor_tag_handler_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/cend/ class=md-nav__link> <span class=md-ellipsis> cend </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/clear/ class=md-nav__link> <span class=md-ellipsis> clear </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/contains/ class=md-nav__link> <span class=md-ellipsis> contains </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/count/ class=md-nav__link> <span class=md-ellipsis> count </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/crbegin/ class=md-nav__link> <span class=md-ellipsis> crbegin </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/crend/ class=md-nav__link> <span class=md-ellipsis> crend </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/default_object_comparator_t/ class=md-nav__link> <span class=md-ellipsis> default_object_comparator_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/diff/ class=md-nav__link> <span class=md-ellipsis> diff </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/dump/ class=md-nav__link> <span class=md-ellipsis> dump </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/emplace/ class=md-nav__link> <span class=md-ellipsis> emplace </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/emplace_back/ class=md-nav__link> <span class=md-ellipsis> emplace_back </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/empty/ class=md-nav__link> <span class=md-ellipsis> empty </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/end/ class=md-nav__link> <span class=md-ellipsis> end </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/end_pos/ class=md-nav__link> <span class=md-ellipsis> end_pos </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/erase/ class=md-nav__link> <span class=md-ellipsis> erase </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/error_handler_t/ class=md-nav__link> <span class=md-ellipsis> error_handler_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/exception/ class=md-nav__link> <span class=md-ellipsis> exception </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/find/ class=md-nav__link> <span class=md-ellipsis> find </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/flatten/ class=md-nav__link> <span class=md-ellipsis> flatten </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/from_bjdata/ class=md-nav__link> <span class=md-ellipsis> from_bjdata </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/from_bson/ class=md-nav__link> <span class=md-ellipsis> from_bson </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/from_cbor/ class=md-nav__link> <span class=md-ellipsis> from_cbor </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/from_msgpack/ class=md-nav__link> <span class=md-ellipsis> from_msgpack </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/from_ubjson/ class=md-nav__link> <span class=md-ellipsis> from_ubjson </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/front/ class=md-nav__link> <span class=md-ellipsis> front </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/get/ class=md-nav__link> <span class=md-ellipsis> get </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/get_allocator/ class=md-nav__link> <span class=md-ellipsis> get_allocator </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/get_binary/ class=md-nav__link> <span class=md-ellipsis> get_binary </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/get_ptr/ class=md-nav__link> <span class=md-ellipsis> get_ptr </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/get_ref/ class=md-nav__link> <span class=md-ellipsis> get_ref </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/get_to/ class=md-nav__link> <span class=md-ellipsis> get_to </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/std_hash/ class=md-nav__link> <span class=md-ellipsis> std::hash&lt;basic_json&gt; </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/input_format_t/ class=md-nav__link> <span class=md-ellipsis> input_format_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/insert/ class=md-nav__link> <span class=md-ellipsis> insert </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/invalid_iterator/ class=md-nav__link> <span class=md-ellipsis> invalid_iterator </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_array/ class=md-nav__link> <span class=md-ellipsis> is_array </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_binary/ class=md-nav__link> <span class=md-ellipsis> is_binary </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_boolean/ class=md-nav__link> <span class=md-ellipsis> is_boolean </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_discarded/ class=md-nav__link> <span class=md-ellipsis> is_discarded </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_null/ class=md-nav__link> <span class=md-ellipsis> is_null </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_number/ class=md-nav__link> <span class=md-ellipsis> is_number </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_number_float/ class=md-nav__link> <span class=md-ellipsis> is_number_float </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_number_integer/ class=md-nav__link> <span class=md-ellipsis> is_number_integer </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_number_unsigned/ class=md-nav__link> <span class=md-ellipsis> is_number_unsigned </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_object/ class=md-nav__link> <span class=md-ellipsis> is_object </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_primitive/ class=md-nav__link> <span class=md-ellipsis> is_primitive </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_string/ class=md-nav__link> <span class=md-ellipsis> is_string </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_structured/ class=md-nav__link> <span class=md-ellipsis> is_structured </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/items/ class=md-nav__link> <span class=md-ellipsis> items </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/json_base_class_t/ class=md-nav__link> <span class=md-ellipsis> json_base_class_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/json_serializer/ class=md-nav__link> <span class=md-ellipsis> json_serializer </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/max_size/ class=md-nav__link> <span class=md-ellipsis> max_size </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/meta/ class=md-nav__link> <span class=md-ellipsis> meta </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/merge_patch/ class=md-nav__link> <span class=md-ellipsis> merge_patch </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/number_float_t/ class=md-nav__link> <span class=md-ellipsis> number_float_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/number_integer_t/ class=md-nav__link> <span class=md-ellipsis> number_integer_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/number_unsigned_t/ class=md-nav__link> <span class=md-ellipsis> number_unsigned_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/object/ class=md-nav__link> <span class=md-ellipsis> object </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/object_comparator_t/ class=md-nav__link> <span class=md-ellipsis> object_comparator_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/object_t/ class=md-nav__link> <span class=md-ellipsis> object_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/operator_ValueType/ class=md-nav__link> <span class=md-ellipsis> operator ValueType </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/operator_value_t/ class=md-nav__link> <span class=md-ellipsis> operator value_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/operator%5B%5D/ class=md-nav__link> <span class=md-ellipsis> operator[] </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/operator%3D/ class=md-nav__link> <span class=md-ellipsis> operator= </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/operator%2B%3D/ class=md-nav__link> <span class=md-ellipsis> operator+= </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/operator_eq/ class=md-nav__link> <span class=md-ellipsis> operator== </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/operator_ne/ class=md-nav__link> <span class=md-ellipsis> operator!= </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/operator_lt/ class=md-nav__link> <span class=md-ellipsis> operator< </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/operator_gt/ class=md-nav__link> <span class=md-ellipsis> operator> </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/operator_le/ class=md-nav__link> <span class=md-ellipsis> operator<= </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/operator_ge/ class=md-nav__link> <span class=md-ellipsis> operator>= </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/operator_spaceship/ class=md-nav__link> <span class=md-ellipsis> operator<=> </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/out_of_range/ class=md-nav__link> <span class=md-ellipsis> out_of_range </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/other_error/ class=md-nav__link> <span class=md-ellipsis> other_error </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/parse/ class=md-nav__link> <span class=md-ellipsis> parse </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/parse_error/ class=md-nav__link> <span class=md-ellipsis> parse_error </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/parse_event_t/ class=md-nav__link> <span class=md-ellipsis> parse_event_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/parser_callback_t/ class=md-nav__link> <span class=md-ellipsis> parser_callback_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/patch/ class=md-nav__link> <span class=md-ellipsis> patch </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/patch_inplace/ class=md-nav__link> <span class=md-ellipsis> patch_inplace </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/push_back/ class=md-nav__link> <span class=md-ellipsis> push_back </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/rbegin/ class=md-nav__link> <span class=md-ellipsis> rbegin </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/rend/ class=md-nav__link> <span class=md-ellipsis> rend </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/sax_parse/ class=md-nav__link> <span class=md-ellipsis> sax_parse </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/size/ class=md-nav__link> <span class=md-ellipsis> size </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/start_pos/ class=md-nav__link> <span class=md-ellipsis> start_pos </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/string_t/ class=md-nav__link> <span class=md-ellipsis> string_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/swap/ class=md-nav__link> <span class=md-ellipsis> swap </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/std_swap/ class=md-nav__link> <span class=md-ellipsis> std::swap&lt;basic_json&gt; </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/to_bjdata/ class=md-nav__link> <span class=md-ellipsis> to_bjdata </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/to_bson/ class=md-nav__link> <span class=md-ellipsis> to_bson </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/to_cbor/ class=md-nav__link> <span class=md-ellipsis> to_cbor </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/to_msgpack/ class=md-nav__link> <span class=md-ellipsis> to_msgpack </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/to_string/ class=md-nav__link> <span class=md-ellipsis> to_string </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/to_ubjson/ class=md-nav__link> <span class=md-ellipsis> to_ubjson </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/type/ class=md-nav__link> <span class=md-ellipsis> type </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/type_error/ class=md-nav__link> <span class=md-ellipsis> type_error </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/type_name/ class=md-nav__link> <span class=md-ellipsis> type_name </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/unflatten/ class=md-nav__link> <span class=md-ellipsis> unflatten </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/update/ class=md-nav__link> <span class=md-ellipsis> update </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/value/ class=md-nav__link> <span class=md-ellipsis> value </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/value_t/ class=md-nav__link> <span class=md-ellipsis> value_t </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_2> <div class="md-nav__link md-nav__container"> <a href=../../api/byte_container_with_subtype/ class="md-nav__link "> <span class=md-ellipsis> byte_container_with_subtype </span> </a> <label class="md-nav__link " for=__nav_4_2 id=__nav_4_2_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_2_label aria-expanded=false> <label class=md-nav__title for=__nav_4_2> <span class="md-nav__icon md-icon"></span> byte_container_with_subtype </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../api/byte_container_with_subtype/byte_container_with_subtype/ class=md-nav__link> <span class=md-ellipsis> (constructor) </span> </a> </li> <li class=md-nav__item> <a href=../../api/byte_container_with_subtype/clear_subtype/ class=md-nav__link> <span class=md-ellipsis> clear_subtype </span> </a> </li> <li class=md-nav__item> <a href=../../api/byte_container_with_subtype/has_subtype/ class=md-nav__link> <span class=md-ellipsis> has_subtype </span> </a> </li> <li class=md-nav__item> <a href=../../api/byte_container_with_subtype/set_subtype/ class=md-nav__link> <span class=md-ellipsis> set_subtype </span> </a> </li> <li class=md-nav__item> <a href=../../api/byte_container_with_subtype/subtype/ class=md-nav__link> <span class=md-ellipsis> subtype </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_3> <div class="md-nav__link md-nav__container"> <a href=../../api/adl_serializer/ class="md-nav__link "> <span class=md-ellipsis> adl_serializer </span> </a> <label class="md-nav__link " for=__nav_4_3 id=__nav_4_3_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_3_label aria-expanded=false> <label class=md-nav__title for=__nav_4_3> <span class="md-nav__icon md-icon"></span> adl_serializer </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../api/adl_serializer/from_json/ class=md-nav__link> <span class=md-ellipsis> from_json </span> </a> </li> <li class=md-nav__item> <a href=../../api/adl_serializer/to_json/ class=md-nav__link> <span class=md-ellipsis> to_json </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../api/json/ class=md-nav__link> <span class=md-ellipsis> json </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_5> <div class="md-nav__link md-nav__container"> <a href=../../api/json_pointer/ class="md-nav__link "> <span class=md-ellipsis> json_pointer </span> </a> <label class="md-nav__link " for=__nav_4_5 id=__nav_4_5_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_5_label aria-expanded=false> <label class=md-nav__title for=__nav_4_5> <span class="md-nav__icon md-icon"></span> json_pointer </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../api/json_pointer/json_pointer/ class=md-nav__link> <span class=md-ellipsis> (Constructor) </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/back/ class=md-nav__link> <span class=md-ellipsis> back </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/empty/ class=md-nav__link> <span class=md-ellipsis> empty </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/front/ class=md-nav__link> <span class=md-ellipsis> front </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/operator_string_t/ class=md-nav__link> <span class=md-ellipsis> operator string_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/operator_eq/ class=md-nav__link> <span class=md-ellipsis> operator== </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/operator_ne/ class=md-nav__link> <span class=md-ellipsis> operator!= </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/operator_slash/ class=md-nav__link> <span class=md-ellipsis> operator/ </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/operator_slasheq/ class=md-nav__link> <span class=md-ellipsis> operator/= </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/parent_pointer/ class=md-nav__link> <span class=md-ellipsis> parent_pointer </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/pop_back/ class=md-nav__link> <span class=md-ellipsis> pop_back </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/pop_front/ class=md-nav__link> <span class=md-ellipsis> pop_front </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/push_back/ class=md-nav__link> <span class=md-ellipsis> push_back </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/push_front/ class=md-nav__link> <span class=md-ellipsis> push_front </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/string_t/ class=md-nav__link> <span class=md-ellipsis> string_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/to_string/ class=md-nav__link> <span class=md-ellipsis> to_string </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_6> <div class="md-nav__link md-nav__container"> <a href=../../api/json_sax/ class="md-nav__link "> <span class=md-ellipsis> json_sax </span> </a> <label class="md-nav__link " for=__nav_4_6 id=__nav_4_6_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_6_label aria-expanded=false> <label class=md-nav__title for=__nav_4_6> <span class="md-nav__icon md-icon"></span> json_sax </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../api/json_sax/binary/ class=md-nav__link> <span class=md-ellipsis> binary </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_sax/boolean/ class=md-nav__link> <span class=md-ellipsis> boolean </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_sax/end_array/ class=md-nav__link> <span class=md-ellipsis> end_array </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_sax/end_object/ class=md-nav__link> <span class=md-ellipsis> end_object </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_sax/key/ class=md-nav__link> <span class=md-ellipsis> key </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_sax/null/ class=md-nav__link> <span class=md-ellipsis> null </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_sax/number_float/ class=md-nav__link> <span class=md-ellipsis> number_float </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_sax/number_integer/ class=md-nav__link> <span class=md-ellipsis> number_integer </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_sax/number_unsigned/ class=md-nav__link> <span class=md-ellipsis> number_unsigned </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_sax/parse_error/ class=md-nav__link> <span class=md-ellipsis> parse_error </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_sax/start_array/ class=md-nav__link> <span class=md-ellipsis> start_array </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_sax/start_object/ class=md-nav__link> <span class=md-ellipsis> start_object </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_sax/string/ class=md-nav__link> <span class=md-ellipsis> string </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../api/operator_ltlt/ class=md-nav__link> <span class=md-ellipsis> operator<<(basic_json), operator<<(json_pointer) </span> </a> </li> <li class=md-nav__item> <a href=../../api/operator_gtgt/ class=md-nav__link> <span class=md-ellipsis> operator>>(basic_json) </span> </a> </li> <li class=md-nav__item> <a href=../../api/operator_literal_json/ class=md-nav__link> <span class=md-ellipsis> operator""_json </span> </a> </li> <li class=md-nav__item> <a href=../../api/operator_literal_json_pointer/ class=md-nav__link> <span class=md-ellipsis> operator""_json_pointer </span> </a> </li> <li class=md-nav__item> <a href=../../api/ordered_json/ class=md-nav__link> <span class=md-ellipsis> ordered_json </span> </a> </li> <li class=md-nav__item> <a href=../../api/ordered_map/ class=md-nav__link> <span class=md-ellipsis> ordered_map </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_13> <div class="md-nav__link md-nav__container"> <a href=../../api/macros/ class="md-nav__link "> <span class=md-ellipsis> macros </span> </a> <label class="md-nav__link " for=__nav_4_13 id=__nav_4_13_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_13_label aria-expanded=false> <label class=md-nav__title for=__nav_4_13> <span class="md-nav__icon md-icon"></span> macros </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../api/macros/json_assert/ class=md-nav__link> <span class=md-ellipsis> JSON_ASSERT </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_brace_init_copy_semantics/ class=md-nav__link> <span class=md-ellipsis> JSON_BRACE_INIT_COPY_SEMANTICS </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_throw_user/ class=md-nav__link> <span class=md-ellipsis> JSON_CATCH_USER, JSON_THROW_USER, JSON_TRY_USER </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_diagnostics/ class=md-nav__link> <span class=md-ellipsis> JSON_DIAGNOSTICS </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_diagnostic_positions/ class=md-nav__link> <span class=md-ellipsis> JSON_DIAGNOSTIC_POSITIONS </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_disable_enum_serialization/ class=md-nav__link> <span class=md-ellipsis> JSON_DISABLE_ENUM_SERIALIZATION </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_has_cpp_11/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_CPP_11, JSON_HAS_CPP_14, JSON_HAS_CPP_17, JSON_HAS_CPP_20 </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_has_filesystem/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_EXPERIMENTAL_FILESYSTEM, JSON_HAS_FILESYSTEM </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_has_ranges/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_RANGES </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_has_static_rtti/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_STATIC_RTTI </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_has_three_way_comparison/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_THREE_WAY_COMPARISON </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_noexception/ class=md-nav__link> <span class=md-ellipsis> JSON_NOEXCEPTION </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_no_io/ class=md-nav__link> <span class=md-ellipsis> JSON_NO_IO </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_skip_library_version_check/ class=md-nav__link> <span class=md-ellipsis> JSON_SKIP_LIBRARY_VERSION_CHECK </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_skip_unsupported_compiler_check/ class=md-nav__link> <span class=md-ellipsis> JSON_SKIP_UNSUPPORTED_COMPILER_CHECK </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_use_global_udls/ class=md-nav__link> <span class=md-ellipsis> JSON_USE_GLOBAL_UDLS </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_use_implicit_conversions/ class=md-nav__link> <span class=md-ellipsis> JSON_USE_IMPLICIT_CONVERSIONS </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_use_legacy_discarded_value_comparison/ class=md-nav__link> <span class=md-ellipsis> JSON_USE_LEGACY_DISCARDED_VALUE_COMPARISON </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/nlohmann_define_derived_type/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_ONLY_SERIALIZE, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/nlohmann_define_type_intrusive/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_TYPE_INTRUSIVE, NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_TYPE_INTRUSIVE_ONLY_SERIALIZE </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/nlohmann_define_type_non_intrusive/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/nlohmann_define_type_with_names/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_TYPE_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/nlohmann_json_namespace/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_NAMESPACE </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/nlohmann_json_namespace_begin/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_NAMESPACE_BEGIN, NLOHMANN_JSON_NAMESPACE_END </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/nlohmann_json_namespace_no_version/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_NAMESPACE_NO_VERSION </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/nlohmann_json_serialize_enum/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_SERIALIZE_ENUM </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/nlohmann_json_serialize_enum_strict/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_SERIALIZE_ENUM_STRICT </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/nlohmann_json_version_major/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_VERSION_MAJOR, NLOHMANN_JSON_VERSION_MINOR, NLOHMANN_JSON_VERSION_PATCH </span> </a> </li> </ul> </nav> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_5> <div class="md-nav__link md-nav__container"> <a href=../../community/ class="md-nav__link "> <span class=md-ellipsis> Community </span> </a> <label class="md-nav__link " for=__nav_5 id=__nav_5_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_5_label aria-expanded=false> <label class=md-nav__title for=__nav_5> <span class="md-nav__icon md-icon"></span> Community </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../community/code_of_conduct/ class=md-nav__link> <span class=md-ellipsis> Code of Conduct </span> </a> </li> <li class=md-nav__item> <a href=../../community/contribution_guidelines/ class=md-nav__link> <span class=md-ellipsis> Contribution Guidelines </span> </a> </li> <li class=md-nav__item> <a href=../../community/quality_assurance/ class=md-nav__link> <span class=md-ellipsis> Quality assurance </span> </a> </li> <li class=md-nav__item> <a href=../../community/governance/ class=md-nav__link> <span class=md-ellipsis> Governance </span> </a> </li> <li class=md-nav__item> <a href=../../community/security_policy/ class=md-nav__link> <span class=md-ellipsis> Security Policy </span> </a> </li> </ul> </nav> </li> </ul> </nav> </div> </div> </div> <div class="md-sidebar md-sidebar--secondary" data-md-component=sidebar data-md-type=toc> <div class=md-sidebar__scrollwrap> <div class=md-sidebar__inner> <nav class="md-nav md-nav--secondary" aria-label="Table of contents"> </nav> </div> </div> </div> <div class=md-content data-md-component=content> <article class="md-content__inner md-typeset"> <a href="https://github.com/nlohmann/json/edit/develop/docs/mkdocs/docs/home/license.md" title="Edit this page" class="md-content__button md-icon" rel="edit"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M10 20H6V4h7v5h5v3.1l2-2V8l-6-6H6c-1.1 0-2 .9-2 2v16c0 1.1.9 2 2 2h4zm10.2-7c.1 0 .3.1.4.2l1.3 1.3c.2.2.2.6 0 .8l-1 1-2.1-2.1 1-1c.1-.1.2-.2.4-.2m0 3.9L14.1 23H12v-2.1l6.1-6.1z"/></svg> </a> <a href="https://github.com/nlohmann/json/raw/develop/docs/mkdocs/docs/home/license.md" title="View source of this page" class="md-content__button md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M17 18c.56 0 1 .44 1 1s-.44 1-1 1-1-.44-1-1 .44-1 1-1m0-3c-2.73 0-5.06 1.66-6 4 .94 2.34 3.27 4 6 4s5.06-1.66 6-4c-.94-2.34-3.27-4-6-4m0 6.5a2.5 2.5 0 0 1-2.5-2.5 2.5 2.5 0 0 1 2.5-2.5 2.5 2.5 0 0 1 2.5 2.5 2.5 2.5 0 0 1-2.5 2.5M9.27 20H6V4h7v5h5v4.07c.7.08 1.36.25 2 .49V8l-6-6H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h4.5a8.2 8.2 0 0 1-1.23-2"/></svg> </a> <h1 id=license>License<a class=headerlink href=#license title="Permanent link">&para;</a></h1> <p><img align="right" src="../../assets/external/149753425.v2.pressablecdn.com/wp-content/uploads/2009/06/OSIApproved_100X125.png"></p> <p>The class is licensed under the <a href="https://opensource.org/licenses/MIT"><abbr title="Massachusetts Institute of Technology">MIT</abbr> License</a>:</p> <p>Copyright &copy; 2013-2026 <a href="https://nlohmann.me">Niels Lohmann</a></p> <p>Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the “Software”), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:</p> <p>The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.</p> <p>THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.</p> <hr> <p>The class contains the <abbr title="Unicode Transformation Format">UTF</abbr>-8 Decoder from Bjoern Hoehrmann which is licensed under the <a href="https://opensource.org/licenses/MIT"><abbr title="Massachusetts Institute of Technology">MIT</abbr> License</a> (see above). Copyright &copy; 2008-2009 <a href="http://bjoern.hoehrmann.de/">Björn Hoehrmann</a> <a href=mailto:bjoern@hoehrmann.de>&#98;&#106;&#111;&#101;&#114;&#110;&#64;&#104;&#111;&#101;&#104;&#114;&#109;&#97;&#110;&#110;&#46;&#100;&#101;</a></p> <p>The class contains a slightly modified version of the Grisu2 algorithm from Florian Loitsch which is licensed under the <a href="https://opensource.org/licenses/MIT"><abbr title="Massachusetts Institute of Technology">MIT</abbr> License</a> (see above). Copyright &copy; 2009 <a href="https://florian.loitsch.com/">Florian Loitsch</a></p> <p>The class contains a copy of <a href="https://nemequ.github.io/hedley/">Hedley</a> from Evan Nemerson which is licensed as <a href="https://creativecommons.org/publicdomain/zero/1.0/"><abbr title="Creative Commons Zero">CC0</abbr>-1.0</a>.</p> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 23, 2026 11:16:18 UTC">June 23, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
+<!doctype html><html lang=en class=no-js> <head><meta charset=utf-8><meta name=viewport content="width=device-width,initial-scale=1"><meta name=author content="Niels Lohmann"><link href="https://json.nlohmann.me/home/license/" rel="canonical"><link rel=prev href=../..><link href=../faq/ rel=next><link rel=icon href=../../assets/images/favicon.png><meta name=generator content="mkdocs-1.6.1, mkdocs-material-9.7.6"><title>License - JSON for Modern C++</title><link rel=stylesheet href=../../assets/stylesheets/main.484c7ddc.min.css><link rel=stylesheet href=../../assets/stylesheets/palette.ab4e12ef.min.css><link rel="stylesheet" href="../../assets/external/fonts.googleapis.com/css.61a430c9.css"><style>:root{--md-text-font:"Roboto";--md-code-font:"JetBrains Mono"}</style><link rel=stylesheet href=../../css/custom.css><script>__md_scope=new URL("../..",location),__md_hash=e=>[...e].reduce(((e,_)=>(e<<5)-e+_.charCodeAt(0)),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script></head> <body dir=ltr data-md-color-scheme=default data-md-color-primary=indigo data-md-color-accent=indigo> <input class=md-toggle data-md-toggle=drawer type=checkbox id=__drawer autocomplete=off> <input class=md-toggle data-md-toggle=search type=checkbox id=__search autocomplete=off> <label class=md-overlay for=__drawer></label> <div data-md-component=skip> <a href=#license class=md-skip> Skip to content </a> </div> <div data-md-component=announce> </div> <header class=md-header data-md-component=header> <nav class="md-header__inner md-grid" aria-label=Header> <a href=../.. title="JSON for Modern C++" class="md-header__button md-logo" aria-label="JSON for Modern C++" data-md-component=logo> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54"/></svg> </a> <label class="md-header__button md-icon" for=__drawer> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M3 6h18v2H3zm0 5h18v2H3zm0 5h18v2H3z"/></svg> </label> <div class=md-header__title data-md-component=header-title> <div class=md-header__ellipsis> <div class=md-header__topic> <span class=md-ellipsis> JSON for Modern C++ </span> </div> <div class=md-header__topic data-md-component=header-topic> <span class=md-ellipsis> License </span> </div> </div> </div> <form class=md-header__option data-md-component=palette> <input class=md-option data-md-color-media="(prefers-color-scheme: light)" data-md-color-scheme=default data-md-color-primary=indigo data-md-color-accent=indigo aria-label="Switch to dark mode" type=radio name=__palette id=__palette_0> <label class="md-header__button md-icon" title="Switch to dark mode" for=__palette_1 hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a4 4 0 0 0-4 4 4 4 0 0 0 4 4 4 4 0 0 0 4-4 4 4 0 0 0-4-4m0 10a6 6 0 0 1-6-6 6 6 0 0 1 6-6 6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12z"/></svg> </label> <input class=md-option data-md-color-media="(prefers-color-scheme: dark)" data-md-color-scheme=slate data-md-color-primary=indigo data-md-color-accent=indigo aria-label="Switch to light mode" type=radio name=__palette id=__palette_1> <label class="md-header__button md-icon" title="Switch to light mode" for=__palette_0 hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 18c-.89 0-1.74-.2-2.5-.55C11.56 16.5 13 14.42 13 12s-1.44-4.5-3.5-5.45C10.26 6.2 11.11 6 12 6a6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12z"/></svg> </label> </form> <script>var palette=__md_get("__palette");if(palette&&palette.color){if("(prefers-color-scheme)"===palette.color.media){var media=matchMedia("(prefers-color-scheme: light)"),input=document.querySelector(media.matches?"[data-md-color-media='(prefers-color-scheme: light)']":"[data-md-color-media='(prefers-color-scheme: dark)']");palette.color.media=input.getAttribute("data-md-color-media"),palette.color.scheme=input.getAttribute("data-md-color-scheme"),palette.color.primary=input.getAttribute("data-md-color-primary"),palette.color.accent=input.getAttribute("data-md-color-accent")}for(var[key,value]of Object.entries(palette.color))document.body.setAttribute("data-md-color-"+key,value)}</script> <label class="md-header__button md-icon" for=__search> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg> </label> <div class=md-search data-md-component=search role=dialog> <label class=md-search__overlay for=__search></label> <div class=md-search__inner role=search> <form class=md-search__form name=search> <input type=text class=md-search__input name=query aria-label=Search placeholder=Search autocapitalize=off autocorrect=off autocomplete=off spellcheck=false data-md-component=search-query required> <label class="md-search__icon md-icon" for=__search> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11z"/></svg> </label> <nav class=md-search__options aria-label=Search> <button type=reset class="md-search__icon md-icon" title=Clear aria-label=Clear tabindex=-1> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z"/></svg> </button> </nav> </form> <div class=md-search__output> <div class=md-search__scrollwrap tabindex=0 data-md-scrollfix> <div class=md-search-result data-md-component=search-result> <div class=md-search-result__meta> Initializing search </div> <ol class=md-search-result__list role=presentation></ol> </div> </div> </div> </div> </div> <div class=md-header__source> <a href="https://github.com/nlohmann/json" title="Go to repository" class="md-source" data-md-component="source"> <div class="md-source__icon md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </div> <div class=md-source__repository> nlohmann/json </div> </a> </div> </nav> </header> <div class=md-container data-md-component=container> <nav class=md-tabs aria-label=Tabs data-md-component=tabs> <div class=md-grid> <ul class=md-tabs__list> <li class="md-tabs__item md-tabs__item--active"> <a href=../.. class=md-tabs__link> Home </a> </li> <li class=md-tabs__item> <a href=../../features/arbitrary_types/ class=md-tabs__link> Features </a> </li> <li class=md-tabs__item> <a href=../../integration/ class=md-tabs__link> Integration </a> </li> <li class=md-tabs__item> <a href=../../api/basic_json/ class=md-tabs__link> API Documentation </a> </li> <li class=md-tabs__item> <a href=../../community/ class=md-tabs__link> Community </a> </li> </ul> </div> </nav> <main class=md-main data-md-component=main> <div class="md-main__inner md-grid"> <div class="md-sidebar md-sidebar--primary" data-md-component=sidebar data-md-type=navigation> <div class=md-sidebar__scrollwrap> <div class=md-sidebar__inner> <nav class="md-nav md-nav--primary md-nav--lifted" aria-label=Navigation data-md-level=0> <label class=md-nav__title for=__drawer> <a href=../.. title="JSON for Modern C++" class="md-nav__button md-logo" aria-label="JSON for Modern C++" data-md-component=logo> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54"/></svg> </a> JSON for Modern C++ </label> <div class=md-nav__source> <a href="https://github.com/nlohmann/json" title="Go to repository" class="md-source" data-md-component="source"> <div class="md-source__icon md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </div> <div class=md-source__repository> nlohmann/json </div> </a> </div> <ul class=md-nav__list data-md-scrollfix> <li class="md-nav__item md-nav__item--active md-nav__item--section md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_1 checked> <div class="md-nav__link md-nav__container"> <a href=../.. class="md-nav__link "> <span class=md-ellipsis> Home </span> </a> <label class="md-nav__link " for=__nav_1 id=__nav_1_label tabindex> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_1_label aria-expanded=true> <label class=md-nav__title for=__nav_1> <span class="md-nav__icon md-icon"></span> Home </label> <ul class=md-nav__list data-md-scrollfix> <li class="md-nav__item md-nav__item--active"> <input class="md-nav__toggle md-toggle" type=checkbox id=__toc> <a href=./ class="md-nav__link md-nav__link--active"> <span class=md-ellipsis> License </span> </a> </li> <li class=md-nav__item> <a href=../faq/ class=md-nav__link> <span class=md-ellipsis> FAQ </span> </a> </li> <li class=md-nav__item> <a href=../exceptions/ class=md-nav__link> <span class=md-ellipsis> Exceptions </span> </a> </li> <li class=md-nav__item> <a href=../releases/ class=md-nav__link> <span class=md-ellipsis> Releases </span> </a> </li> <li class=md-nav__item> <a href=../design_goals/ class=md-nav__link> <span class=md-ellipsis> Design goals </span> </a> </li> <li class=md-nav__item> <a href=../architecture/ class=md-nav__link> <span class=md-ellipsis> Architecture </span> </a> </li> <li class=md-nav__item> <a href=../customers/ class=md-nav__link> <span class=md-ellipsis> Customers </span> </a> </li> <li class=md-nav__item> <a href=../sponsors/ class=md-nav__link> <span class=md-ellipsis> Sponsors </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2> <label class=md-nav__link for=__nav_2 id=__nav_2_label tabindex=0> <span class=md-ellipsis> Features </span> <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_2_label aria-expanded=false> <label class=md-nav__title for=__nav_2> <span class="md-nav__icon md-icon"></span> Features </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../features/arbitrary_types/ class=md-nav__link> <span class=md-ellipsis> Arbitrary Type Conversions </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_2> <div class="md-nav__link md-nav__container"> <a href=../../features/binary_formats/ class="md-nav__link "> <span class=md-ellipsis> Binary Formats </span> </a> <label class="md-nav__link " for=__nav_2_2 id=__nav_2_2_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_2_label aria-expanded=false> <label class=md-nav__title for=__nav_2_2> <span class="md-nav__icon md-icon"></span> Binary Formats </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../features/binary_formats/bjdata/ class=md-nav__link> <span class=md-ellipsis> BJData </span> </a> </li> <li class=md-nav__item> <a href=../../features/binary_formats/bson/ class=md-nav__link> <span class=md-ellipsis> BSON </span> </a> </li> <li class=md-nav__item> <a href=../../features/binary_formats/cbor/ class=md-nav__link> <span class=md-ellipsis> CBOR </span> </a> </li> <li class=md-nav__item> <a href=../../features/binary_formats/messagepack/ class=md-nav__link> <span class=md-ellipsis> MessagePack </span> </a> </li> <li class=md-nav__item> <a href=../../features/binary_formats/ubjson/ class=md-nav__link> <span class=md-ellipsis> UBJSON </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../features/binary_values/ class=md-nav__link> <span class=md-ellipsis> Binary Values </span> </a> </li> <li class=md-nav__item> <a href=../../features/comments/ class=md-nav__link> <span class=md-ellipsis> Comments </span> </a> </li> <li class=md-nav__item> <a href=../../features/trailing_commas/ class=md-nav__link> <span class=md-ellipsis> Trailing Commas </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_6> <div class="md-nav__link md-nav__container"> <a href=../../features/element_access/ class="md-nav__link "> <span class=md-ellipsis> Element Access </span> </a> <label class="md-nav__link " for=__nav_2_6 id=__nav_2_6_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_6_label aria-expanded=false> <label class=md-nav__title for=__nav_2_6> <span class="md-nav__icon md-icon"></span> Element Access </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../features/element_access/unchecked_access/ class=md-nav__link> <span class=md-ellipsis> Unchecked access: operator[] </span> </a> </li> <li class=md-nav__item> <a href=../../features/element_access/checked_access/ class=md-nav__link> <span class=md-ellipsis> Checked access: at </span> </a> </li> <li class=md-nav__item> <a href=../../features/element_access/default_value/ class=md-nav__link> <span class=md-ellipsis> Access with default value: value </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../features/iterators/ class=md-nav__link> <span class=md-ellipsis> Iterators </span> </a> </li> <li class=md-nav__item> <a href=../../features/json_pointer/ class=md-nav__link> <span class=md-ellipsis> JSON Pointer </span> </a> </li> <li class=md-nav__item> <a href=../../features/json_patch/ class=md-nav__link> <span class=md-ellipsis> JSON Patch and Diff </span> </a> </li> <li class=md-nav__item> <a href=../../features/merge_patch/ class=md-nav__link> <span class=md-ellipsis> JSON Merge Patch </span> </a> </li> <li class=md-nav__item> <a href=../../features/modules/ class=md-nav__link> <span class=md-ellipsis> Modules </span> </a> </li> <li class=md-nav__item> <a href=../../features/namespace/ class=md-nav__link> <span class=md-ellipsis> nlohmann Namespace </span> </a> </li> <li class=md-nav__item> <a href=../../features/object_order/ class=md-nav__link> <span class=md-ellipsis> Object Order </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_14> <div class="md-nav__link md-nav__container"> <a href=../../features/parsing/ class="md-nav__link "> <span class=md-ellipsis> Parsing </span> </a> <label class="md-nav__link " for=__nav_2_14 id=__nav_2_14_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_14_label aria-expanded=false> <label class=md-nav__title for=__nav_2_14> <span class="md-nav__icon md-icon"></span> Parsing </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../features/parsing/json_lines/ class=md-nav__link> <span class=md-ellipsis> JSON Lines </span> </a> </li> <li class=md-nav__item> <a href=../../features/parsing/parse_exceptions/ class=md-nav__link> <span class=md-ellipsis> Parsing and Exceptions </span> </a> </li> <li class=md-nav__item> <a href=../../features/parsing/parser_callbacks/ class=md-nav__link> <span class=md-ellipsis> Parser Callbacks </span> </a> </li> <li class=md-nav__item> <a href=../../features/parsing/sax_interface/ class=md-nav__link> <span class=md-ellipsis> SAX Interface </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../features/assertions/ class=md-nav__link> <span class=md-ellipsis> Runtime Assertions </span> </a> </li> <li class=md-nav__item> <a href=../../features/enum_conversion/ class=md-nav__link> <span class=md-ellipsis> Specializing enum conversion </span> </a> </li> <li class=md-nav__item> <a href=../../features/macros/ class=md-nav__link> <span class=md-ellipsis> Supported Macros </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_18> <div class="md-nav__link md-nav__container"> <a href=../../features/types/ class="md-nav__link "> <span class=md-ellipsis> Types </span> </a> <label class="md-nav__link " for=__nav_2_18 id=__nav_2_18_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_18_label aria-expanded=false> <label class=md-nav__title for=__nav_2_18> <span class="md-nav__icon md-icon"></span> Types </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../features/types/number_handling/ class=md-nav__link> <span class=md-ellipsis> Number Handling </span> </a> </li> </ul> </nav> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_3> <div class="md-nav__link md-nav__container"> <a href=../../integration/ class="md-nav__link "> <span class=md-ellipsis> Integration </span> </a> <label class="md-nav__link " for=__nav_3 id=__nav_3_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_3_label aria-expanded=false> <label class=md-nav__title for=__nav_3> <span class="md-nav__icon md-icon"></span> Integration </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../integration/migration_guide/ class=md-nav__link> <span class=md-ellipsis> Migration Guide </span> </a> </li> <li class=md-nav__item> <a href=../../integration/cmake/ class=md-nav__link> <span class=md-ellipsis> CMake </span> </a> </li> <li class=md-nav__item> <a href=../../integration/package_managers/ class=md-nav__link> <span class=md-ellipsis> Package Managers </span> </a> </li> <li class=md-nav__item> <a href=../../integration/pkg-config/ class=md-nav__link> <span class=md-ellipsis> Pkg-config </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4> <label class=md-nav__link for=__nav_4 id=__nav_4_label tabindex=0> <span class=md-ellipsis> API Documentation </span> <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_4_label aria-expanded=false> <label class=md-nav__title for=__nav_4> <span class="md-nav__icon md-icon"></span> API Documentation </label> <ul class=md-nav__list data-md-scrollfix> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_1> <div class="md-nav__link md-nav__container"> <a href=../../api/basic_json/ class="md-nav__link "> <span class=md-ellipsis> basic_json </span> </a> <label class="md-nav__link " for=__nav_4_1 id=__nav_4_1_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_1_label aria-expanded=false> <label class=md-nav__title for=__nav_4_1> <span class="md-nav__icon md-icon"></span> basic_json </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../api/basic_json/basic_json/ class=md-nav__link> <span class=md-ellipsis> (Constructor) </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/~basic_json/ class=md-nav__link> <span class=md-ellipsis> (Destructor) </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/accept/ class=md-nav__link> <span class=md-ellipsis> accept </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/array/ class=md-nav__link> <span class=md-ellipsis> array </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/array_t/ class=md-nav__link> <span class=md-ellipsis> array_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/at/ class=md-nav__link> <span class=md-ellipsis> at </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/back/ class=md-nav__link> <span class=md-ellipsis> back </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/begin/ class=md-nav__link> <span class=md-ellipsis> begin </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/binary/ class=md-nav__link> <span class=md-ellipsis> binary </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/binary_t/ class=md-nav__link> <span class=md-ellipsis> binary_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/boolean_t/ class=md-nav__link> <span class=md-ellipsis> boolean_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/cbegin/ class=md-nav__link> <span class=md-ellipsis> cbegin </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/cbor_tag_handler_t/ class=md-nav__link> <span class=md-ellipsis> cbor_tag_handler_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/cend/ class=md-nav__link> <span class=md-ellipsis> cend </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/clear/ class=md-nav__link> <span class=md-ellipsis> clear </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/contains/ class=md-nav__link> <span class=md-ellipsis> contains </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/count/ class=md-nav__link> <span class=md-ellipsis> count </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/crbegin/ class=md-nav__link> <span class=md-ellipsis> crbegin </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/crend/ class=md-nav__link> <span class=md-ellipsis> crend </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/default_object_comparator_t/ class=md-nav__link> <span class=md-ellipsis> default_object_comparator_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/diff/ class=md-nav__link> <span class=md-ellipsis> diff </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/dump/ class=md-nav__link> <span class=md-ellipsis> dump </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/emplace/ class=md-nav__link> <span class=md-ellipsis> emplace </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/emplace_back/ class=md-nav__link> <span class=md-ellipsis> emplace_back </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/empty/ class=md-nav__link> <span class=md-ellipsis> empty </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/end/ class=md-nav__link> <span class=md-ellipsis> end </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/end_pos/ class=md-nav__link> <span class=md-ellipsis> end_pos </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/erase/ class=md-nav__link> <span class=md-ellipsis> erase </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/error_handler_t/ class=md-nav__link> <span class=md-ellipsis> error_handler_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/exception/ class=md-nav__link> <span class=md-ellipsis> exception </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/find/ class=md-nav__link> <span class=md-ellipsis> find </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/flatten/ class=md-nav__link> <span class=md-ellipsis> flatten </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/from_bjdata/ class=md-nav__link> <span class=md-ellipsis> from_bjdata </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/from_bson/ class=md-nav__link> <span class=md-ellipsis> from_bson </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/from_cbor/ class=md-nav__link> <span class=md-ellipsis> from_cbor </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/from_msgpack/ class=md-nav__link> <span class=md-ellipsis> from_msgpack </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/from_ubjson/ class=md-nav__link> <span class=md-ellipsis> from_ubjson </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/front/ class=md-nav__link> <span class=md-ellipsis> front </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/get/ class=md-nav__link> <span class=md-ellipsis> get </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/get_allocator/ class=md-nav__link> <span class=md-ellipsis> get_allocator </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/get_binary/ class=md-nav__link> <span class=md-ellipsis> get_binary </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/get_ptr/ class=md-nav__link> <span class=md-ellipsis> get_ptr </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/get_ref/ class=md-nav__link> <span class=md-ellipsis> get_ref </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/get_to/ class=md-nav__link> <span class=md-ellipsis> get_to </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/std_hash/ class=md-nav__link> <span class=md-ellipsis> std::hash&lt;basic_json&gt; </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/input_format_t/ class=md-nav__link> <span class=md-ellipsis> input_format_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/insert/ class=md-nav__link> <span class=md-ellipsis> insert </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/invalid_iterator/ class=md-nav__link> <span class=md-ellipsis> invalid_iterator </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_array/ class=md-nav__link> <span class=md-ellipsis> is_array </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_binary/ class=md-nav__link> <span class=md-ellipsis> is_binary </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_boolean/ class=md-nav__link> <span class=md-ellipsis> is_boolean </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_discarded/ class=md-nav__link> <span class=md-ellipsis> is_discarded </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_null/ class=md-nav__link> <span class=md-ellipsis> is_null </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_number/ class=md-nav__link> <span class=md-ellipsis> is_number </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_number_float/ class=md-nav__link> <span class=md-ellipsis> is_number_float </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_number_integer/ class=md-nav__link> <span class=md-ellipsis> is_number_integer </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_number_unsigned/ class=md-nav__link> <span class=md-ellipsis> is_number_unsigned </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_object/ class=md-nav__link> <span class=md-ellipsis> is_object </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_primitive/ class=md-nav__link> <span class=md-ellipsis> is_primitive </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_string/ class=md-nav__link> <span class=md-ellipsis> is_string </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_structured/ class=md-nav__link> <span class=md-ellipsis> is_structured </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/items/ class=md-nav__link> <span class=md-ellipsis> items </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/json_base_class_t/ class=md-nav__link> <span class=md-ellipsis> json_base_class_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/json_serializer/ class=md-nav__link> <span class=md-ellipsis> json_serializer </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/max_size/ class=md-nav__link> <span class=md-ellipsis> max_size </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/meta/ class=md-nav__link> <span class=md-ellipsis> meta </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/merge_patch/ class=md-nav__link> <span class=md-ellipsis> merge_patch </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/number_float_t/ class=md-nav__link> <span class=md-ellipsis> number_float_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/number_integer_t/ class=md-nav__link> <span class=md-ellipsis> number_integer_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/number_unsigned_t/ class=md-nav__link> <span class=md-ellipsis> number_unsigned_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/object/ class=md-nav__link> <span class=md-ellipsis> object </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/object_comparator_t/ class=md-nav__link> <span class=md-ellipsis> object_comparator_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/object_t/ class=md-nav__link> <span class=md-ellipsis> object_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/operator_ValueType/ class=md-nav__link> <span class=md-ellipsis> operator ValueType </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/operator_value_t/ class=md-nav__link> <span class=md-ellipsis> operator value_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/operator%5B%5D/ class=md-nav__link> <span class=md-ellipsis> operator[] </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/operator%3D/ class=md-nav__link> <span class=md-ellipsis> operator= </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/operator%2B%3D/ class=md-nav__link> <span class=md-ellipsis> operator+= </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/operator_eq/ class=md-nav__link> <span class=md-ellipsis> operator== </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/operator_ne/ class=md-nav__link> <span class=md-ellipsis> operator!= </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/operator_lt/ class=md-nav__link> <span class=md-ellipsis> operator< </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/operator_gt/ class=md-nav__link> <span class=md-ellipsis> operator> </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/operator_le/ class=md-nav__link> <span class=md-ellipsis> operator<= </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/operator_ge/ class=md-nav__link> <span class=md-ellipsis> operator>= </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/operator_spaceship/ class=md-nav__link> <span class=md-ellipsis> operator<=> </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/out_of_range/ class=md-nav__link> <span class=md-ellipsis> out_of_range </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/other_error/ class=md-nav__link> <span class=md-ellipsis> other_error </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/parse/ class=md-nav__link> <span class=md-ellipsis> parse </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/parse_error/ class=md-nav__link> <span class=md-ellipsis> parse_error </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/parse_event_t/ class=md-nav__link> <span class=md-ellipsis> parse_event_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/parser_callback_t/ class=md-nav__link> <span class=md-ellipsis> parser_callback_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/patch/ class=md-nav__link> <span class=md-ellipsis> patch </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/patch_inplace/ class=md-nav__link> <span class=md-ellipsis> patch_inplace </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/push_back/ class=md-nav__link> <span class=md-ellipsis> push_back </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/rbegin/ class=md-nav__link> <span class=md-ellipsis> rbegin </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/rend/ class=md-nav__link> <span class=md-ellipsis> rend </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/sax_parse/ class=md-nav__link> <span class=md-ellipsis> sax_parse </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/size/ class=md-nav__link> <span class=md-ellipsis> size </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/start_pos/ class=md-nav__link> <span class=md-ellipsis> start_pos </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/string_t/ class=md-nav__link> <span class=md-ellipsis> string_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/swap/ class=md-nav__link> <span class=md-ellipsis> swap </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/std_swap/ class=md-nav__link> <span class=md-ellipsis> std::swap&lt;basic_json&gt; </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/to_bjdata/ class=md-nav__link> <span class=md-ellipsis> to_bjdata </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/to_bson/ class=md-nav__link> <span class=md-ellipsis> to_bson </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/to_cbor/ class=md-nav__link> <span class=md-ellipsis> to_cbor </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/to_msgpack/ class=md-nav__link> <span class=md-ellipsis> to_msgpack </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/to_string/ class=md-nav__link> <span class=md-ellipsis> to_string </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/to_ubjson/ class=md-nav__link> <span class=md-ellipsis> to_ubjson </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/type/ class=md-nav__link> <span class=md-ellipsis> type </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/type_error/ class=md-nav__link> <span class=md-ellipsis> type_error </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/type_name/ class=md-nav__link> <span class=md-ellipsis> type_name </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/unflatten/ class=md-nav__link> <span class=md-ellipsis> unflatten </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/update/ class=md-nav__link> <span class=md-ellipsis> update </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/value/ class=md-nav__link> <span class=md-ellipsis> value </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/value_t/ class=md-nav__link> <span class=md-ellipsis> value_t </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_2> <div class="md-nav__link md-nav__container"> <a href=../../api/byte_container_with_subtype/ class="md-nav__link "> <span class=md-ellipsis> byte_container_with_subtype </span> </a> <label class="md-nav__link " for=__nav_4_2 id=__nav_4_2_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_2_label aria-expanded=false> <label class=md-nav__title for=__nav_4_2> <span class="md-nav__icon md-icon"></span> byte_container_with_subtype </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../api/byte_container_with_subtype/byte_container_with_subtype/ class=md-nav__link> <span class=md-ellipsis> (constructor) </span> </a> </li> <li class=md-nav__item> <a href=../../api/byte_container_with_subtype/clear_subtype/ class=md-nav__link> <span class=md-ellipsis> clear_subtype </span> </a> </li> <li class=md-nav__item> <a href=../../api/byte_container_with_subtype/has_subtype/ class=md-nav__link> <span class=md-ellipsis> has_subtype </span> </a> </li> <li class=md-nav__item> <a href=../../api/byte_container_with_subtype/set_subtype/ class=md-nav__link> <span class=md-ellipsis> set_subtype </span> </a> </li> <li class=md-nav__item> <a href=../../api/byte_container_with_subtype/subtype/ class=md-nav__link> <span class=md-ellipsis> subtype </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_3> <div class="md-nav__link md-nav__container"> <a href=../../api/adl_serializer/ class="md-nav__link "> <span class=md-ellipsis> adl_serializer </span> </a> <label class="md-nav__link " for=__nav_4_3 id=__nav_4_3_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_3_label aria-expanded=false> <label class=md-nav__title for=__nav_4_3> <span class="md-nav__icon md-icon"></span> adl_serializer </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../api/adl_serializer/from_json/ class=md-nav__link> <span class=md-ellipsis> from_json </span> </a> </li> <li class=md-nav__item> <a href=../../api/adl_serializer/to_json/ class=md-nav__link> <span class=md-ellipsis> to_json </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../api/json/ class=md-nav__link> <span class=md-ellipsis> json </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_5> <div class="md-nav__link md-nav__container"> <a href=../../api/json_pointer/ class="md-nav__link "> <span class=md-ellipsis> json_pointer </span> </a> <label class="md-nav__link " for=__nav_4_5 id=__nav_4_5_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_5_label aria-expanded=false> <label class=md-nav__title for=__nav_4_5> <span class="md-nav__icon md-icon"></span> json_pointer </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../api/json_pointer/json_pointer/ class=md-nav__link> <span class=md-ellipsis> (Constructor) </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/back/ class=md-nav__link> <span class=md-ellipsis> back </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/empty/ class=md-nav__link> <span class=md-ellipsis> empty </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/front/ class=md-nav__link> <span class=md-ellipsis> front </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/operator_string_t/ class=md-nav__link> <span class=md-ellipsis> operator string_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/operator_eq/ class=md-nav__link> <span class=md-ellipsis> operator== </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/operator_ne/ class=md-nav__link> <span class=md-ellipsis> operator!= </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/operator_slash/ class=md-nav__link> <span class=md-ellipsis> operator/ </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/operator_slasheq/ class=md-nav__link> <span class=md-ellipsis> operator/= </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/parent_pointer/ class=md-nav__link> <span class=md-ellipsis> parent_pointer </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/pop_back/ class=md-nav__link> <span class=md-ellipsis> pop_back </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/pop_front/ class=md-nav__link> <span class=md-ellipsis> pop_front </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/push_back/ class=md-nav__link> <span class=md-ellipsis> push_back </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/push_front/ class=md-nav__link> <span class=md-ellipsis> push_front </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/string_t/ class=md-nav__link> <span class=md-ellipsis> string_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/to_string/ class=md-nav__link> <span class=md-ellipsis> to_string </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_6> <div class="md-nav__link md-nav__container"> <a href=../../api/json_sax/ class="md-nav__link "> <span class=md-ellipsis> json_sax </span> </a> <label class="md-nav__link " for=__nav_4_6 id=__nav_4_6_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_6_label aria-expanded=false> <label class=md-nav__title for=__nav_4_6> <span class="md-nav__icon md-icon"></span> json_sax </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../api/json_sax/binary/ class=md-nav__link> <span class=md-ellipsis> binary </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_sax/boolean/ class=md-nav__link> <span class=md-ellipsis> boolean </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_sax/end_array/ class=md-nav__link> <span class=md-ellipsis> end_array </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_sax/end_object/ class=md-nav__link> <span class=md-ellipsis> end_object </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_sax/key/ class=md-nav__link> <span class=md-ellipsis> key </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_sax/null/ class=md-nav__link> <span class=md-ellipsis> null </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_sax/number_float/ class=md-nav__link> <span class=md-ellipsis> number_float </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_sax/number_integer/ class=md-nav__link> <span class=md-ellipsis> number_integer </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_sax/number_unsigned/ class=md-nav__link> <span class=md-ellipsis> number_unsigned </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_sax/parse_error/ class=md-nav__link> <span class=md-ellipsis> parse_error </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_sax/start_array/ class=md-nav__link> <span class=md-ellipsis> start_array </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_sax/start_object/ class=md-nav__link> <span class=md-ellipsis> start_object </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_sax/string/ class=md-nav__link> <span class=md-ellipsis> string </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../api/operator_ltlt/ class=md-nav__link> <span class=md-ellipsis> operator<<(basic_json), operator<<(json_pointer) </span> </a> </li> <li class=md-nav__item> <a href=../../api/operator_gtgt/ class=md-nav__link> <span class=md-ellipsis> operator>>(basic_json) </span> </a> </li> <li class=md-nav__item> <a href=../../api/operator_literal_json/ class=md-nav__link> <span class=md-ellipsis> operator""_json </span> </a> </li> <li class=md-nav__item> <a href=../../api/operator_literal_json_pointer/ class=md-nav__link> <span class=md-ellipsis> operator""_json_pointer </span> </a> </li> <li class=md-nav__item> <a href=../../api/ordered_json/ class=md-nav__link> <span class=md-ellipsis> ordered_json </span> </a> </li> <li class=md-nav__item> <a href=../../api/ordered_map/ class=md-nav__link> <span class=md-ellipsis> ordered_map </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_13> <div class="md-nav__link md-nav__container"> <a href=../../api/macros/ class="md-nav__link "> <span class=md-ellipsis> macros </span> </a> <label class="md-nav__link " for=__nav_4_13 id=__nav_4_13_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_13_label aria-expanded=false> <label class=md-nav__title for=__nav_4_13> <span class="md-nav__icon md-icon"></span> macros </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../api/macros/json_assert/ class=md-nav__link> <span class=md-ellipsis> JSON_ASSERT </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_brace_init_copy_semantics/ class=md-nav__link> <span class=md-ellipsis> JSON_BRACE_INIT_COPY_SEMANTICS </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_throw_user/ class=md-nav__link> <span class=md-ellipsis> JSON_CATCH_USER, JSON_THROW_USER, JSON_TRY_USER </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_diagnostics/ class=md-nav__link> <span class=md-ellipsis> JSON_DIAGNOSTICS </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_diagnostic_positions/ class=md-nav__link> <span class=md-ellipsis> JSON_DIAGNOSTIC_POSITIONS </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_disable_enum_serialization/ class=md-nav__link> <span class=md-ellipsis> JSON_DISABLE_ENUM_SERIALIZATION </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_has_cpp_11/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_CPP_11, JSON_HAS_CPP_14, JSON_HAS_CPP_17, JSON_HAS_CPP_20 </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_has_filesystem/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_EXPERIMENTAL_FILESYSTEM, JSON_HAS_FILESYSTEM </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_has_ranges/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_RANGES </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_has_static_rtti/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_STATIC_RTTI </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_has_three_way_comparison/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_THREE_WAY_COMPARISON </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_noexception/ class=md-nav__link> <span class=md-ellipsis> JSON_NOEXCEPTION </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_no_io/ class=md-nav__link> <span class=md-ellipsis> JSON_NO_IO </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_skip_library_version_check/ class=md-nav__link> <span class=md-ellipsis> JSON_SKIP_LIBRARY_VERSION_CHECK </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_skip_unsupported_compiler_check/ class=md-nav__link> <span class=md-ellipsis> JSON_SKIP_UNSUPPORTED_COMPILER_CHECK </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_use_global_udls/ class=md-nav__link> <span class=md-ellipsis> JSON_USE_GLOBAL_UDLS </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_use_implicit_conversions/ class=md-nav__link> <span class=md-ellipsis> JSON_USE_IMPLICIT_CONVERSIONS </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_use_legacy_discarded_value_comparison/ class=md-nav__link> <span class=md-ellipsis> JSON_USE_LEGACY_DISCARDED_VALUE_COMPARISON </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/nlohmann_define_derived_type/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_ONLY_SERIALIZE, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/nlohmann_define_type_intrusive/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_TYPE_INTRUSIVE, NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_TYPE_INTRUSIVE_ONLY_SERIALIZE </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/nlohmann_define_type_non_intrusive/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/nlohmann_define_type_with_names/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_TYPE_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/nlohmann_json_namespace/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_NAMESPACE </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/nlohmann_json_namespace_begin/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_NAMESPACE_BEGIN, NLOHMANN_JSON_NAMESPACE_END </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/nlohmann_json_namespace_no_version/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_NAMESPACE_NO_VERSION </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/nlohmann_json_serialize_enum/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_SERIALIZE_ENUM </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/nlohmann_json_serialize_enum_strict/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_SERIALIZE_ENUM_STRICT </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/nlohmann_json_version_major/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_VERSION_MAJOR, NLOHMANN_JSON_VERSION_MINOR, NLOHMANN_JSON_VERSION_PATCH </span> </a> </li> </ul> </nav> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_5> <div class="md-nav__link md-nav__container"> <a href=../../community/ class="md-nav__link "> <span class=md-ellipsis> Community </span> </a> <label class="md-nav__link " for=__nav_5 id=__nav_5_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_5_label aria-expanded=false> <label class=md-nav__title for=__nav_5> <span class="md-nav__icon md-icon"></span> Community </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../community/code_of_conduct/ class=md-nav__link> <span class=md-ellipsis> Code of Conduct </span> </a> </li> <li class=md-nav__item> <a href=../../community/contribution_guidelines/ class=md-nav__link> <span class=md-ellipsis> Contribution Guidelines </span> </a> </li> <li class=md-nav__item> <a href=../../community/quality_assurance/ class=md-nav__link> <span class=md-ellipsis> Quality assurance </span> </a> </li> <li class=md-nav__item> <a href=../../community/governance/ class=md-nav__link> <span class=md-ellipsis> Governance </span> </a> </li> <li class=md-nav__item> <a href=../../community/security_policy/ class=md-nav__link> <span class=md-ellipsis> Security Policy </span> </a> </li> </ul> </nav> </li> </ul> </nav> </div> </div> </div> <div class="md-sidebar md-sidebar--secondary" data-md-component=sidebar data-md-type=toc> <div class=md-sidebar__scrollwrap> <div class=md-sidebar__inner> <nav class="md-nav md-nav--secondary" aria-label="Table of contents"> </nav> </div> </div> </div> <div class=md-content data-md-component=content> <article class="md-content__inner md-typeset"> <a href="https://github.com/nlohmann/json/edit/develop/docs/mkdocs/docs/home/license.md" title="Edit this page" class="md-content__button md-icon" rel="edit"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M10 20H6V4h7v5h5v3.1l2-2V8l-6-6H6c-1.1 0-2 .9-2 2v16c0 1.1.9 2 2 2h4zm10.2-7c.1 0 .3.1.4.2l1.3 1.3c.2.2.2.6 0 .8l-1 1-2.1-2.1 1-1c.1-.1.2-.2.4-.2m0 3.9L14.1 23H12v-2.1l6.1-6.1z"/></svg> </a> <a href="https://github.com/nlohmann/json/raw/develop/docs/mkdocs/docs/home/license.md" title="View source of this page" class="md-content__button md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M17 18c.56 0 1 .44 1 1s-.44 1-1 1-1-.44-1-1 .44-1 1-1m0-3c-2.73 0-5.06 1.66-6 4 .94 2.34 3.27 4 6 4s5.06-1.66 6-4c-.94-2.34-3.27-4-6-4m0 6.5a2.5 2.5 0 0 1-2.5-2.5 2.5 2.5 0 0 1 2.5-2.5 2.5 2.5 0 0 1 2.5 2.5 2.5 2.5 0 0 1-2.5 2.5M9.27 20H6V4h7v5h5v4.07c.7.08 1.36.25 2 .49V8l-6-6H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h4.5a8.2 8.2 0 0 1-1.23-2"/></svg> </a> <h1 id=license>License<a class=headerlink href=#license title="Permanent link">&para;</a></h1> <p><img align="right" src="../../assets/external/149753425.v2.pressablecdn.com/wp-content/uploads/2009/06/OSIApproved_100X125.png"></p> <p>The class is licensed under the <a href="https://opensource.org/licenses/MIT"><abbr title="Massachusetts Institute of Technology">MIT</abbr> License</a>:</p> <p>Copyright &copy; 2013-2026 <a href="https://nlohmann.me">Niels Lohmann</a></p> <p>Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the “Software”), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:</p> <p>The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.</p> <p>THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.</p> <hr> <p>The class contains the <abbr title="Unicode Transformation Format">UTF</abbr>-8 Decoder from Bjoern Hoehrmann which is licensed under the <a href="https://opensource.org/licenses/MIT"><abbr title="Massachusetts Institute of Technology">MIT</abbr> License</a> (see above). Copyright &copy; 2008-2009 <a href="http://bjoern.hoehrmann.de/">Björn Hoehrmann</a> <a href=mailto:bjoern@hoehrmann.de>&#98;&#106;&#111;&#101;&#114;&#110;&#64;&#104;&#111;&#101;&#104;&#114;&#109;&#97;&#110;&#110;&#46;&#100;&#101;</a></p> <p>The class contains a slightly modified version of the Grisu2 algorithm from Florian Loitsch which is licensed under the <a href="https://opensource.org/licenses/MIT"><abbr title="Massachusetts Institute of Technology">MIT</abbr> License</a> (see above). Copyright &copy; 2009 <a href="https://florian.loitsch.com/">Florian Loitsch</a></p> <p>The class contains a copy of <a href="https://nemequ.github.io/hedley/">Hedley</a> from Evan Nemerson which is licensed as <a href="https://creativecommons.org/publicdomain/zero/1.0/"><abbr title="Creative Commons Zero">CC0</abbr>-1.0</a>.</p> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 29, 2026 20:15:18 UTC">June 29, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
diff --git a/home/releases/index.html b/home/releases/index.html
index 85d63ea..26659d8 100644
--- a/home/releases/index.html
+++ b/home/releases/index.html
@@ -1,10 +1 @@
-<!doctype html><html lang=en class=no-js> <head><meta charset=utf-8><meta name=viewport content="width=device-width,initial-scale=1"><meta name=author content="Niels Lohmann"><link href="https://json.nlohmann.me/home/releases/" rel="canonical"><link href=../exceptions/ rel=prev><link href=../design_goals/ rel=next><link rel=icon href=../../assets/images/favicon.png><meta name=generator content="mkdocs-1.6.1, mkdocs-material-9.7.6"><title>Releases - JSON for Modern C++</title><link rel=stylesheet href=../../assets/stylesheets/main.484c7ddc.min.css><link rel=stylesheet href=../../assets/stylesheets/palette.ab4e12ef.min.css><link rel="stylesheet" href="../../assets/external/fonts.googleapis.com/css.61a430c9.css"><style>:root{--md-text-font:"Roboto";--md-code-font:"JetBrains Mono"}</style><link rel=stylesheet href=../../css/custom.css><script>__md_scope=new URL("../..",location),__md_hash=e=>[...e].reduce(((e,_)=>(e<<5)-e+_.charCodeAt(0)),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script></head> <body dir=ltr data-md-color-scheme=default data-md-color-primary=indigo data-md-color-accent=indigo> <input class=md-toggle data-md-toggle=drawer type=checkbox id=__drawer autocomplete=off> <input class=md-toggle data-md-toggle=search type=checkbox id=__search autocomplete=off> <label class=md-overlay for=__drawer></label> <div data-md-component=skip> <a href=#releases class=md-skip> Skip to content </a> </div> <div data-md-component=announce> </div> <header class=md-header data-md-component=header> <nav class="md-header__inner md-grid" aria-label=Header> <a href=../.. title="JSON for Modern C++" class="md-header__button md-logo" aria-label="JSON for Modern C++" data-md-component=logo> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54"/></svg> </a> <label class="md-header__button md-icon" for=__drawer> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M3 6h18v2H3zm0 5h18v2H3zm0 5h18v2H3z"/></svg> </label> <div class=md-header__title data-md-component=header-title> <div class=md-header__ellipsis> <div class=md-header__topic> <span class=md-ellipsis> JSON for Modern C++ </span> </div> <div class=md-header__topic data-md-component=header-topic> <span class=md-ellipsis> Releases </span> </div> </div> </div> <form class=md-header__option data-md-component=palette> <input class=md-option data-md-color-media="(prefers-color-scheme: light)" data-md-color-scheme=default data-md-color-primary=indigo data-md-color-accent=indigo aria-label="Switch to dark mode" type=radio name=__palette id=__palette_0> <label class="md-header__button md-icon" title="Switch to dark mode" for=__palette_1 hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a4 4 0 0 0-4 4 4 4 0 0 0 4 4 4 4 0 0 0 4-4 4 4 0 0 0-4-4m0 10a6 6 0 0 1-6-6 6 6 0 0 1 6-6 6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12z"/></svg> </label> <input class=md-option data-md-color-media="(prefers-color-scheme: dark)" data-md-color-scheme=slate data-md-color-primary=indigo data-md-color-accent=indigo aria-label="Switch to light mode" type=radio name=__palette id=__palette_1> <label class="md-header__button md-icon" title="Switch to light mode" for=__palette_0 hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 18c-.89 0-1.74-.2-2.5-.55C11.56 16.5 13 14.42 13 12s-1.44-4.5-3.5-5.45C10.26 6.2 11.11 6 12 6a6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12z"/></svg> </label> </form> <script>var palette=__md_get("__palette");if(palette&&palette.color){if("(prefers-color-scheme)"===palette.color.media){var media=matchMedia("(prefers-color-scheme: light)"),input=document.querySelector(media.matches?"[data-md-color-media='(prefers-color-scheme: light)']":"[data-md-color-media='(prefers-color-scheme: dark)']");palette.color.media=input.getAttribute("data-md-color-media"),palette.color.scheme=input.getAttribute("data-md-color-scheme"),palette.color.primary=input.getAttribute("data-md-color-primary"),palette.color.accent=input.getAttribute("data-md-color-accent")}for(var[key,value]of Object.entries(palette.color))document.body.setAttribute("data-md-color-"+key,value)}</script> <label class="md-header__button md-icon" for=__search> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg> </label> <div class=md-search data-md-component=search role=dialog> <label class=md-search__overlay for=__search></label> <div class=md-search__inner role=search> <form class=md-search__form name=search> <input type=text class=md-search__input name=query aria-label=Search placeholder=Search autocapitalize=off autocorrect=off autocomplete=off spellcheck=false data-md-component=search-query required> <label class="md-search__icon md-icon" for=__search> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11z"/></svg> </label> <nav class=md-search__options aria-label=Search> <button type=reset class="md-search__icon md-icon" title=Clear aria-label=Clear tabindex=-1> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z"/></svg> </button> </nav> </form> <div class=md-search__output> <div class=md-search__scrollwrap tabindex=0 data-md-scrollfix> <div class=md-search-result data-md-component=search-result> <div class=md-search-result__meta> Initializing search </div> <ol class=md-search-result__list role=presentation></ol> </div> </div> </div> </div> </div> <div class=md-header__source> <a href="https://github.com/nlohmann/json" title="Go to repository" class="md-source" data-md-component="source"> <div class="md-source__icon md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </div> <div class=md-source__repository> nlohmann/json </div> </a> </div> </nav> </header> <div class=md-container data-md-component=container> <nav class=md-tabs aria-label=Tabs data-md-component=tabs> <div class=md-grid> <ul class=md-tabs__list> <li class="md-tabs__item md-tabs__item--active"> <a href=../.. class=md-tabs__link> Home </a> </li> <li class=md-tabs__item> <a href=../../features/arbitrary_types/ class=md-tabs__link> Features </a> </li> <li class=md-tabs__item> <a href=../../integration/ class=md-tabs__link> Integration </a> </li> <li class=md-tabs__item> <a href=../../api/basic_json/ class=md-tabs__link> API Documentation </a> </li> <li class=md-tabs__item> <a href=../../community/ class=md-tabs__link> Community </a> </li> </ul> </div> </nav> <main class=md-main data-md-component=main> <div class="md-main__inner md-grid"> <div class="md-sidebar md-sidebar--primary" data-md-component=sidebar data-md-type=navigation> <div class=md-sidebar__scrollwrap> <div class=md-sidebar__inner> <nav class="md-nav md-nav--primary md-nav--lifted" aria-label=Navigation data-md-level=0> <label class=md-nav__title for=__drawer> <a href=../.. title="JSON for Modern C++" class="md-nav__button md-logo" aria-label="JSON for Modern C++" data-md-component=logo> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54"/></svg> </a> JSON for Modern C++ </label> <div class=md-nav__source> <a href="https://github.com/nlohmann/json" title="Go to repository" class="md-source" data-md-component="source"> <div class="md-source__icon md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </div> <div class=md-source__repository> nlohmann/json </div> </a> </div> <ul class=md-nav__list data-md-scrollfix> <li class="md-nav__item md-nav__item--active md-nav__item--section md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_1 checked> <div class="md-nav__link md-nav__container"> <a href=../.. class="md-nav__link "> <span class=md-ellipsis> Home </span> </a> <label class="md-nav__link " for=__nav_1 id=__nav_1_label tabindex> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_1_label aria-expanded=true> <label class=md-nav__title for=__nav_1> <span class="md-nav__icon md-icon"></span> Home </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../license/ class=md-nav__link> <span class=md-ellipsis> License </span> </a> </li> <li class=md-nav__item> <a href=../faq/ class=md-nav__link> <span class=md-ellipsis> FAQ </span> </a> </li> <li class=md-nav__item> <a href=../exceptions/ class=md-nav__link> <span class=md-ellipsis> Exceptions </span> </a> </li> <li class="md-nav__item md-nav__item--active"> <input class="md-nav__toggle md-toggle" type=checkbox id=__toc> <label class="md-nav__link md-nav__link--active" for=__toc> <span class=md-ellipsis> Releases </span> <span class="md-nav__icon md-icon"></span> </label> <a href=./ class="md-nav__link md-nav__link--active"> <span class=md-ellipsis> Releases </span> </a> <nav class="md-nav md-nav--secondary" aria-label="Table of contents"> <label class=md-nav__title for=__toc> <span class="md-nav__icon md-icon"></span> Table of contents </label> <ul class=md-nav__list data-md-component=toc data-md-scrollfix> <li class=md-nav__item> <a href=#v373 class=md-nav__link> <span class=md-ellipsis> v3.7.3 </span> </a> <nav class=md-nav aria-label=v3.7.3> <ul class=md-nav__list> <li class=md-nav__item> <a href=#summary class=md-nav__link> <span class=md-ellipsis> Summary </span> </a> </li> <li class=md-nav__item> <a href=#bug-fixes class=md-nav__link> <span class=md-ellipsis> Bug Fixes </span> </a> </li> <li class=md-nav__item> <a href=#deprecated-functions class=md-nav__link> <span class=md-ellipsis> Deprecated functions </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=#v372 class=md-nav__link> <span class=md-ellipsis> v3.7.2 </span> </a> <nav class=md-nav aria-label=v3.7.2> <ul class=md-nav__list> <li class=md-nav__item> <a href=#summary_1 class=md-nav__link> <span class=md-ellipsis> Summary </span> </a> </li> <li class=md-nav__item> <a href=#bug-fixes_1 class=md-nav__link> <span class=md-ellipsis> Bug Fixes </span> </a> </li> <li class=md-nav__item> <a href=#further-changes class=md-nav__link> <span class=md-ellipsis> Further Changes </span> </a> </li> <li class=md-nav__item> <a href=#deprecated-functions_1 class=md-nav__link> <span class=md-ellipsis> Deprecated functions </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=#v371 class=md-nav__link> <span class=md-ellipsis> v3.7.1 </span> </a> <nav class=md-nav aria-label=v3.7.1> <ul class=md-nav__list> <li class=md-nav__item> <a href=#summary_2 class=md-nav__link> <span class=md-ellipsis> Summary </span> </a> </li> <li class=md-nav__item> <a href=#bug-fixes_2 class=md-nav__link> <span class=md-ellipsis> Bug Fixes </span> </a> </li> <li class=md-nav__item> <a href=#improvements class=md-nav__link> <span class=md-ellipsis> Improvements </span> </a> </li> <li class=md-nav__item> <a href=#further-changes_1 class=md-nav__link> <span class=md-ellipsis> Further Changes </span> </a> </li> <li class=md-nav__item> <a href=#deprecated-functions_2 class=md-nav__link> <span class=md-ellipsis> Deprecated functions </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=#v370 class=md-nav__link> <span class=md-ellipsis> v3.7.0 </span> </a> <nav class=md-nav aria-label=v3.7.0> <ul class=md-nav__list> <li class=md-nav__item> <a href=#summary_3 class=md-nav__link> <span class=md-ellipsis> Summary </span> </a> </li> <li class=md-nav__item> <a href=#new-features class=md-nav__link> <span class=md-ellipsis> New Features </span> </a> </li> <li class=md-nav__item> <a href=#bug-fixes_3 class=md-nav__link> <span class=md-ellipsis> Bug Fixes </span> </a> </li> <li class=md-nav__item> <a href=#improvements_1 class=md-nav__link> <span class=md-ellipsis> Improvements </span> </a> </li> <li class=md-nav__item> <a href=#further-changes_2 class=md-nav__link> <span class=md-ellipsis> Further Changes </span> </a> </li> <li class=md-nav__item> <a href=#deprecated-functions_3 class=md-nav__link> <span class=md-ellipsis> Deprecated functions </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=#v361 class=md-nav__link> <span class=md-ellipsis> v3.6.1 </span> </a> <nav class=md-nav aria-label=v3.6.1> <ul class=md-nav__list> <li class=md-nav__item> <a href=#summary_4 class=md-nav__link> <span class=md-ellipsis> Summary </span> </a> </li> <li class=md-nav__item> <a href=#bug-fixes_4 class=md-nav__link> <span class=md-ellipsis> Bug Fixes </span> </a> </li> <li class=md-nav__item> <a href=#further-changes_3 class=md-nav__link> <span class=md-ellipsis> Further Changes </span> </a> </li> <li class=md-nav__item> <a href=#deprecated-functions_4 class=md-nav__link> <span class=md-ellipsis> Deprecated functions </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=#v360 class=md-nav__link> <span class=md-ellipsis> v3.6.0 </span> </a> <nav class=md-nav aria-label=v3.6.0> <ul class=md-nav__list> <li class=md-nav__item> <a href=#summary_5 class=md-nav__link> <span class=md-ellipsis> Summary </span> </a> </li> <li class=md-nav__item> <a href=#new-features_1 class=md-nav__link> <span class=md-ellipsis> New Features </span> </a> </li> <li class=md-nav__item> <a href=#bug-fixes_5 class=md-nav__link> <span class=md-ellipsis> Bug Fixes </span> </a> </li> <li class=md-nav__item> <a href=#improvements_2 class=md-nav__link> <span class=md-ellipsis> Improvements </span> </a> </li> <li class=md-nav__item> <a href=#further-changes_4 class=md-nav__link> <span class=md-ellipsis> Further Changes </span> </a> </li> <li class=md-nav__item> <a href=#deprecated-functions_5 class=md-nav__link> <span class=md-ellipsis> Deprecated functions </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=#v350 class=md-nav__link> <span class=md-ellipsis> v3.5.0 </span> </a> <nav class=md-nav aria-label=v3.5.0> <ul class=md-nav__list> <li class=md-nav__item> <a href=#summary_6 class=md-nav__link> <span class=md-ellipsis> Summary </span> </a> </li> <li class=md-nav__item> <a href=#new-features_2 class=md-nav__link> <span class=md-ellipsis> New Features </span> </a> </li> <li class=md-nav__item> <a href=#bug-fixes_6 class=md-nav__link> <span class=md-ellipsis> Bug Fixes </span> </a> </li> <li class=md-nav__item> <a href=#improvements_3 class=md-nav__link> <span class=md-ellipsis> Improvements </span> </a> </li> <li class=md-nav__item> <a href=#further-changes_5 class=md-nav__link> <span class=md-ellipsis> Further Changes </span> </a> </li> <li class=md-nav__item> <a href=#deprecated-functions_6 class=md-nav__link> <span class=md-ellipsis> Deprecated functions </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=#v340 class=md-nav__link> <span class=md-ellipsis> v3.4.0 </span> </a> <nav class=md-nav aria-label=v3.4.0> <ul class=md-nav__list> <li class=md-nav__item> <a href=#summary_7 class=md-nav__link> <span class=md-ellipsis> Summary </span> </a> </li> <li class=md-nav__item> <a href=#new-features_3 class=md-nav__link> <span class=md-ellipsis> New Features </span> </a> </li> <li class=md-nav__item> <a href=#bug-fixes_7 class=md-nav__link> <span class=md-ellipsis> Bug Fixes </span> </a> </li> <li class=md-nav__item> <a href=#improvements_4 class=md-nav__link> <span class=md-ellipsis> Improvements </span> </a> </li> <li class=md-nav__item> <a href=#further-changes_6 class=md-nav__link> <span class=md-ellipsis> Further Changes </span> </a> </li> <li class=md-nav__item> <a href=#deprecated-functions_7 class=md-nav__link> <span class=md-ellipsis> Deprecated functions </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=#v330 class=md-nav__link> <span class=md-ellipsis> v3.3.0 </span> </a> <nav class=md-nav aria-label=v3.3.0> <ul class=md-nav__list> <li class=md-nav__item> <a href=#summary_8 class=md-nav__link> <span class=md-ellipsis> Summary </span> </a> </li> <li class=md-nav__item> <a href=#new-features_4 class=md-nav__link> <span class=md-ellipsis> New Features </span> </a> </li> <li class=md-nav__item> <a href=#bug-fixes_8 class=md-nav__link> <span class=md-ellipsis> Bug Fixes </span> </a> </li> <li class=md-nav__item> <a href=#improvements_5 class=md-nav__link> <span class=md-ellipsis> Improvements </span> </a> </li> <li class=md-nav__item> <a href=#further-changes_7 class=md-nav__link> <span class=md-ellipsis> Further Changes </span> </a> </li> <li class=md-nav__item> <a href=#deprecated-functions_8 class=md-nav__link> <span class=md-ellipsis> Deprecated functions </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=#v320 class=md-nav__link> <span class=md-ellipsis> v3.2.0 </span> </a> <nav class=md-nav aria-label=v3.2.0> <ul class=md-nav__list> <li class=md-nav__item> <a href=#summary_9 class=md-nav__link> <span class=md-ellipsis> Summary </span> </a> </li> <li class=md-nav__item> <a href=#new-features_5 class=md-nav__link> <span class=md-ellipsis> New Features </span> </a> </li> <li class=md-nav__item> <a href=#bug-fixes_9 class=md-nav__link> <span class=md-ellipsis> Bug Fixes </span> </a> </li> <li class=md-nav__item> <a href=#improvements_6 class=md-nav__link> <span class=md-ellipsis> Improvements </span> </a> </li> <li class=md-nav__item> <a href=#further-changes_8 class=md-nav__link> <span class=md-ellipsis> Further Changes </span> </a> </li> <li class=md-nav__item> <a href=#deprecated-functions_9 class=md-nav__link> <span class=md-ellipsis> Deprecated functions </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=#v312 class=md-nav__link> <span class=md-ellipsis> v3.1.2 </span> </a> <nav class=md-nav aria-label=v3.1.2> <ul class=md-nav__list> <li class=md-nav__item> <a href=#summary_10 class=md-nav__link> <span class=md-ellipsis> Summary </span> </a> </li> <li class=md-nav__item> <a href=#bug-fixes_10 class=md-nav__link> <span class=md-ellipsis> Bug Fixes </span> </a> </li> <li class=md-nav__item> <a href=#improvements_7 class=md-nav__link> <span class=md-ellipsis> Improvements </span> </a> </li> <li class=md-nav__item> <a href=#further-changes_9 class=md-nav__link> <span class=md-ellipsis> Further Changes </span> </a> </li> <li class=md-nav__item> <a href=#deprecated-functions_10 class=md-nav__link> <span class=md-ellipsis> Deprecated functions </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=#v311 class=md-nav__link> <span class=md-ellipsis> v3.1.1 </span> </a> <nav class=md-nav aria-label=v3.1.1> <ul class=md-nav__list> <li class=md-nav__item> <a href=#summary_11 class=md-nav__link> <span class=md-ellipsis> Summary </span> </a> </li> <li class=md-nav__item> <a href=#bug-fixes_11 class=md-nav__link> <span class=md-ellipsis> Bug Fixes </span> </a> </li> <li class=md-nav__item> <a href=#further-changes_10 class=md-nav__link> <span class=md-ellipsis> Further Changes </span> </a> </li> <li class=md-nav__item> <a href=#deprecated-functions_11 class=md-nav__link> <span class=md-ellipsis> Deprecated functions </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=#v310 class=md-nav__link> <span class=md-ellipsis> v3.1.0 </span> </a> <nav class=md-nav aria-label=v3.1.0> <ul class=md-nav__list> <li class=md-nav__item> <a href=#summary_12 class=md-nav__link> <span class=md-ellipsis> Summary </span> </a> </li> <li class=md-nav__item> <a href=#new-features_6 class=md-nav__link> <span class=md-ellipsis> New features </span> </a> </li> <li class=md-nav__item> <a href=#improvements_8 class=md-nav__link> <span class=md-ellipsis> Improvements </span> </a> </li> <li class=md-nav__item> <a href=#reorganization class=md-nav__link> <span class=md-ellipsis> Reorganization </span> </a> </li> <li class=md-nav__item> <a href=#further-changes_11 class=md-nav__link> <span class=md-ellipsis> Further changes </span> </a> </li> <li class=md-nav__item> <a href=#deprecated-functions_12 class=md-nav__link> <span class=md-ellipsis> Deprecated functions </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=#v301 class=md-nav__link> <span class=md-ellipsis> v3.0.1 </span> </a> <nav class=md-nav aria-label=v3.0.1> <ul class=md-nav__list> <li class=md-nav__item> <a href=#summary_13 class=md-nav__link> <span class=md-ellipsis> Summary </span> </a> </li> <li class=md-nav__item> <a href=#changes class=md-nav__link> <span class=md-ellipsis> Changes </span> </a> </li> <li class=md-nav__item> <a href=#deprecated-functions_13 class=md-nav__link> <span class=md-ellipsis> Deprecated functions </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=#v300 class=md-nav__link> <span class=md-ellipsis> v3.0.0 </span> </a> <nav class=md-nav aria-label=v3.0.0> <ul class=md-nav__list> <li class=md-nav__item> <a href=#summary_14 class=md-nav__link> <span class=md-ellipsis> Summary </span> </a> </li> <li class=md-nav__item> <a href=#breaking-changes class=md-nav__link> <span class=md-ellipsis> Breaking changes </span> </a> </li> <li class=md-nav__item> <a href=#deprecated-functions_14 class=md-nav__link> <span class=md-ellipsis> Deprecated functions </span> </a> </li> <li class=md-nav__item> <a href=#new-features_7 class=md-nav__link> <span class=md-ellipsis> New features </span> </a> </li> <li class=md-nav__item> <a href=#further-changes_12 class=md-nav__link> <span class=md-ellipsis> Further changes </span> </a> </li> <li class=md-nav__item> <a href=#moving-from-2xx-to-300 class=md-nav__link> <span class=md-ellipsis> Moving from 2.x.x to 3.0.0 </span> </a> <nav class=md-nav aria-label="Moving from 2.x.x to 3.0.0"> <ul class=md-nav__list> <li class=md-nav__item> <a href=#user-defined-exceptions class=md-nav__link> <span class=md-ellipsis> User-defined Exceptions </span> </a> </li> <li class=md-nav__item> <a href=#handling-of-nan-and-inf class=md-nav__link> <span class=md-ellipsis> Handling of NaN and INF </span> </a> </li> <li class=md-nav__item> <a href=#removal-of-deprecated-functions class=md-nav__link> <span class=md-ellipsis> Removal of deprecated functions </span> </a> </li> </ul> </nav> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=#v211 class=md-nav__link> <span class=md-ellipsis> v2.1.1 </span> </a> <nav class=md-nav aria-label=v2.1.1> <ul class=md-nav__list> <li class=md-nav__item> <a href=#summary_15 class=md-nav__link> <span class=md-ellipsis> Summary </span> </a> </li> <li class=md-nav__item> <a href=#changes_1 class=md-nav__link> <span class=md-ellipsis> Changes </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=#v210 class=md-nav__link> <span class=md-ellipsis> v2.1.0 </span> </a> <nav class=md-nav aria-label=v2.1.0> <ul class=md-nav__list> <li class=md-nav__item> <a href=#summary_16 class=md-nav__link> <span class=md-ellipsis> Summary </span> </a> </li> <li class=md-nav__item> <a href=#changes_2 class=md-nav__link> <span class=md-ellipsis> Changes </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=#v2010 class=md-nav__link> <span class=md-ellipsis> v2.0.10 </span> </a> <nav class=md-nav aria-label=v2.0.10> <ul class=md-nav__list> <li class=md-nav__item> <a href=#summary_17 class=md-nav__link> <span class=md-ellipsis> Summary </span> </a> </li> <li class=md-nav__item> <a href=#changes_3 class=md-nav__link> <span class=md-ellipsis> Changes </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=#v209 class=md-nav__link> <span class=md-ellipsis> v2.0.9 </span> </a> <nav class=md-nav aria-label=v2.0.9> <ul class=md-nav__list> <li class=md-nav__item> <a href=#summary_18 class=md-nav__link> <span class=md-ellipsis> Summary </span> </a> </li> <li class=md-nav__item> <a href=#changes_4 class=md-nav__link> <span class=md-ellipsis> Changes </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=#v208 class=md-nav__link> <span class=md-ellipsis> v2.0.8 </span> </a> <nav class=md-nav aria-label=v2.0.8> <ul class=md-nav__list> <li class=md-nav__item> <a href=#summary_19 class=md-nav__link> <span class=md-ellipsis> Summary </span> </a> </li> <li class=md-nav__item> <a href=#changes_5 class=md-nav__link> <span class=md-ellipsis> Changes </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=#v207 class=md-nav__link> <span class=md-ellipsis> v2.0.7 </span> </a> <nav class=md-nav aria-label=v2.0.7> <ul class=md-nav__list> <li class=md-nav__item> <a href=#summary_20 class=md-nav__link> <span class=md-ellipsis> Summary </span> </a> </li> <li class=md-nav__item> <a href=#changes_6 class=md-nav__link> <span class=md-ellipsis> Changes </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=#v206 class=md-nav__link> <span class=md-ellipsis> v2.0.6 </span> </a> <nav class=md-nav aria-label=v2.0.6> <ul class=md-nav__list> <li class=md-nav__item> <a href=#summary_21 class=md-nav__link> <span class=md-ellipsis> Summary </span> </a> </li> <li class=md-nav__item> <a href=#changes_7 class=md-nav__link> <span class=md-ellipsis> Changes </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=#v205 class=md-nav__link> <span class=md-ellipsis> v2.0.5 </span> </a> <nav class=md-nav aria-label=v2.0.5> <ul class=md-nav__list> <li class=md-nav__item> <a href=#summary_22 class=md-nav__link> <span class=md-ellipsis> Summary </span> </a> </li> <li class=md-nav__item> <a href=#changes_8 class=md-nav__link> <span class=md-ellipsis> Changes </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=#v204 class=md-nav__link> <span class=md-ellipsis> v2.0.4 </span> </a> <nav class=md-nav aria-label=v2.0.4> <ul class=md-nav__list> <li class=md-nav__item> <a href=#summary_23 class=md-nav__link> <span class=md-ellipsis> Summary </span> </a> </li> <li class=md-nav__item> <a href=#changes_9 class=md-nav__link> <span class=md-ellipsis> Changes </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=#v203 class=md-nav__link> <span class=md-ellipsis> v2.0.3 </span> </a> <nav class=md-nav aria-label=v2.0.3> <ul class=md-nav__list> <li class=md-nav__item> <a href=#summary_24 class=md-nav__link> <span class=md-ellipsis> Summary </span> </a> </li> <li class=md-nav__item> <a href=#changes_10 class=md-nav__link> <span class=md-ellipsis> Changes </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=#v202 class=md-nav__link> <span class=md-ellipsis> v2.0.2 </span> </a> <nav class=md-nav aria-label=v2.0.2> <ul class=md-nav__list> <li class=md-nav__item> <a href=#summary_25 class=md-nav__link> <span class=md-ellipsis> Summary </span> </a> </li> <li class=md-nav__item> <a href=#changes_11 class=md-nav__link> <span class=md-ellipsis> Changes </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=#v201 class=md-nav__link> <span class=md-ellipsis> v2.0.1 </span> </a> <nav class=md-nav aria-label=v2.0.1> <ul class=md-nav__list> <li class=md-nav__item> <a href=#summary_26 class=md-nav__link> <span class=md-ellipsis> Summary </span> </a> </li> <li class=md-nav__item> <a href=#changes_12 class=md-nav__link> <span class=md-ellipsis> Changes </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=#v200 class=md-nav__link> <span class=md-ellipsis> v2.0.0 </span> </a> <nav class=md-nav aria-label=v2.0.0> <ul class=md-nav__list> <li class=md-nav__item> <a href=#summary_27 class=md-nav__link> <span class=md-ellipsis> Summary </span> </a> </li> <li class=md-nav__item> <a href=#changes_13 class=md-nav__link> <span class=md-ellipsis> Changes </span> </a> </li> <li class=md-nav__item> <a href=#notes class=md-nav__link> <span class=md-ellipsis> Notes </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=#v110 class=md-nav__link> <span class=md-ellipsis> v1.1.0 </span> </a> <nav class=md-nav aria-label=v1.1.0> <ul class=md-nav__list> <li class=md-nav__item> <a href=#summary_28 class=md-nav__link> <span class=md-ellipsis> Summary </span> </a> </li> <li class=md-nav__item> <a href=#changes_14 class=md-nav__link> <span class=md-ellipsis> Changes </span> </a> </li> <li class=md-nav__item> <a href=#notes_1 class=md-nav__link> <span class=md-ellipsis> Notes </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=#v100 class=md-nav__link> <span class=md-ellipsis> v1.0.0 </span> </a> <nav class=md-nav aria-label=v1.0.0> <ul class=md-nav__list> <li class=md-nav__item> <a href=#summary_29 class=md-nav__link> <span class=md-ellipsis> Summary </span> </a> </li> <li class=md-nav__item> <a href=#changes_15 class=md-nav__link> <span class=md-ellipsis> Changes </span> </a> </li> </ul> </nav> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../design_goals/ class=md-nav__link> <span class=md-ellipsis> Design goals </span> </a> </li> <li class=md-nav__item> <a href=../architecture/ class=md-nav__link> <span class=md-ellipsis> Architecture </span> </a> </li> <li class=md-nav__item> <a href=../customers/ class=md-nav__link> <span class=md-ellipsis> Customers </span> </a> </li> <li class=md-nav__item> <a href=../sponsors/ class=md-nav__link> <span class=md-ellipsis> Sponsors </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2> <label class=md-nav__link for=__nav_2 id=__nav_2_label tabindex=0> <span class=md-ellipsis> Features </span> <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_2_label aria-expanded=false> <label class=md-nav__title for=__nav_2> <span class="md-nav__icon md-icon"></span> Features </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../features/arbitrary_types/ class=md-nav__link> <span class=md-ellipsis> Arbitrary Type Conversions </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_2> <div class="md-nav__link md-nav__container"> <a href=../../features/binary_formats/ class="md-nav__link "> <span class=md-ellipsis> Binary Formats </span> </a> <label class="md-nav__link " for=__nav_2_2 id=__nav_2_2_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_2_label aria-expanded=false> <label class=md-nav__title for=__nav_2_2> <span class="md-nav__icon md-icon"></span> Binary Formats </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../features/binary_formats/bjdata/ class=md-nav__link> <span class=md-ellipsis> BJData </span> </a> </li> <li class=md-nav__item> <a href=../../features/binary_formats/bson/ class=md-nav__link> <span class=md-ellipsis> BSON </span> </a> </li> <li class=md-nav__item> <a href=../../features/binary_formats/cbor/ class=md-nav__link> <span class=md-ellipsis> CBOR </span> </a> </li> <li class=md-nav__item> <a href=../../features/binary_formats/messagepack/ class=md-nav__link> <span class=md-ellipsis> MessagePack </span> </a> </li> <li class=md-nav__item> <a href=../../features/binary_formats/ubjson/ class=md-nav__link> <span class=md-ellipsis> UBJSON </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../features/binary_values/ class=md-nav__link> <span class=md-ellipsis> Binary Values </span> </a> </li> <li class=md-nav__item> <a href=../../features/comments/ class=md-nav__link> <span class=md-ellipsis> Comments </span> </a> </li> <li class=md-nav__item> <a href=../../features/trailing_commas/ class=md-nav__link> <span class=md-ellipsis> Trailing Commas </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_6> <div class="md-nav__link md-nav__container"> <a href=../../features/element_access/ class="md-nav__link "> <span class=md-ellipsis> Element Access </span> </a> <label class="md-nav__link " for=__nav_2_6 id=__nav_2_6_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_6_label aria-expanded=false> <label class=md-nav__title for=__nav_2_6> <span class="md-nav__icon md-icon"></span> Element Access </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../features/element_access/unchecked_access/ class=md-nav__link> <span class=md-ellipsis> Unchecked access: operator[] </span> </a> </li> <li class=md-nav__item> <a href=../../features/element_access/checked_access/ class=md-nav__link> <span class=md-ellipsis> Checked access: at </span> </a> </li> <li class=md-nav__item> <a href=../../features/element_access/default_value/ class=md-nav__link> <span class=md-ellipsis> Access with default value: value </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../features/iterators/ class=md-nav__link> <span class=md-ellipsis> Iterators </span> </a> </li> <li class=md-nav__item> <a href=../../features/json_pointer/ class=md-nav__link> <span class=md-ellipsis> JSON Pointer </span> </a> </li> <li class=md-nav__item> <a href=../../features/json_patch/ class=md-nav__link> <span class=md-ellipsis> JSON Patch and Diff </span> </a> </li> <li class=md-nav__item> <a href=../../features/merge_patch/ class=md-nav__link> <span class=md-ellipsis> JSON Merge Patch </span> </a> </li> <li class=md-nav__item> <a href=../../features/modules/ class=md-nav__link> <span class=md-ellipsis> Modules </span> </a> </li> <li class=md-nav__item> <a href=../../features/namespace/ class=md-nav__link> <span class=md-ellipsis> nlohmann Namespace </span> </a> </li> <li class=md-nav__item> <a href=../../features/object_order/ class=md-nav__link> <span class=md-ellipsis> Object Order </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_14> <div class="md-nav__link md-nav__container"> <a href=../../features/parsing/ class="md-nav__link "> <span class=md-ellipsis> Parsing </span> </a> <label class="md-nav__link " for=__nav_2_14 id=__nav_2_14_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_14_label aria-expanded=false> <label class=md-nav__title for=__nav_2_14> <span class="md-nav__icon md-icon"></span> Parsing </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../features/parsing/json_lines/ class=md-nav__link> <span class=md-ellipsis> JSON Lines </span> </a> </li> <li class=md-nav__item> <a href=../../features/parsing/parse_exceptions/ class=md-nav__link> <span class=md-ellipsis> Parsing and Exceptions </span> </a> </li> <li class=md-nav__item> <a href=../../features/parsing/parser_callbacks/ class=md-nav__link> <span class=md-ellipsis> Parser Callbacks </span> </a> </li> <li class=md-nav__item> <a href=../../features/parsing/sax_interface/ class=md-nav__link> <span class=md-ellipsis> SAX Interface </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../features/assertions/ class=md-nav__link> <span class=md-ellipsis> Runtime Assertions </span> </a> </li> <li class=md-nav__item> <a href=../../features/enum_conversion/ class=md-nav__link> <span class=md-ellipsis> Specializing enum conversion </span> </a> </li> <li class=md-nav__item> <a href=../../features/macros/ class=md-nav__link> <span class=md-ellipsis> Supported Macros </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_18> <div class="md-nav__link md-nav__container"> <a href=../../features/types/ class="md-nav__link "> <span class=md-ellipsis> Types </span> </a> <label class="md-nav__link " for=__nav_2_18 id=__nav_2_18_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_18_label aria-expanded=false> <label class=md-nav__title for=__nav_2_18> <span class="md-nav__icon md-icon"></span> Types </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../features/types/number_handling/ class=md-nav__link> <span class=md-ellipsis> Number Handling </span> </a> </li> </ul> </nav> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_3> <div class="md-nav__link md-nav__container"> <a href=../../integration/ class="md-nav__link "> <span class=md-ellipsis> Integration </span> </a> <label class="md-nav__link " for=__nav_3 id=__nav_3_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_3_label aria-expanded=false> <label class=md-nav__title for=__nav_3> <span class="md-nav__icon md-icon"></span> Integration </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../integration/migration_guide/ class=md-nav__link> <span class=md-ellipsis> Migration Guide </span> </a> </li> <li class=md-nav__item> <a href=../../integration/cmake/ class=md-nav__link> <span class=md-ellipsis> CMake </span> </a> </li> <li class=md-nav__item> <a href=../../integration/package_managers/ class=md-nav__link> <span class=md-ellipsis> Package Managers </span> </a> </li> <li class=md-nav__item> <a href=../../integration/pkg-config/ class=md-nav__link> <span class=md-ellipsis> Pkg-config </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4> <label class=md-nav__link for=__nav_4 id=__nav_4_label tabindex=0> <span class=md-ellipsis> API Documentation </span> <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_4_label aria-expanded=false> <label class=md-nav__title for=__nav_4> <span class="md-nav__icon md-icon"></span> API Documentation </label> <ul class=md-nav__list data-md-scrollfix> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_1> <div class="md-nav__link md-nav__container"> <a href=../../api/basic_json/ class="md-nav__link "> <span class=md-ellipsis> basic_json </span> </a> <label class="md-nav__link " for=__nav_4_1 id=__nav_4_1_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_1_label aria-expanded=false> <label class=md-nav__title for=__nav_4_1> <span class="md-nav__icon md-icon"></span> basic_json </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../api/basic_json/basic_json/ class=md-nav__link> <span class=md-ellipsis> (Constructor) </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/~basic_json/ class=md-nav__link> <span class=md-ellipsis> (Destructor) </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/accept/ class=md-nav__link> <span class=md-ellipsis> accept </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/array/ class=md-nav__link> <span class=md-ellipsis> array </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/array_t/ class=md-nav__link> <span class=md-ellipsis> array_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/at/ class=md-nav__link> <span class=md-ellipsis> at </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/back/ class=md-nav__link> <span class=md-ellipsis> back </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/begin/ class=md-nav__link> <span class=md-ellipsis> begin </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/binary/ class=md-nav__link> <span class=md-ellipsis> binary </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/binary_t/ class=md-nav__link> <span class=md-ellipsis> binary_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/boolean_t/ class=md-nav__link> <span class=md-ellipsis> boolean_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/cbegin/ class=md-nav__link> <span class=md-ellipsis> cbegin </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/cbor_tag_handler_t/ class=md-nav__link> <span class=md-ellipsis> cbor_tag_handler_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/cend/ class=md-nav__link> <span class=md-ellipsis> cend </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/clear/ class=md-nav__link> <span class=md-ellipsis> clear </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/contains/ class=md-nav__link> <span class=md-ellipsis> contains </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/count/ class=md-nav__link> <span class=md-ellipsis> count </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/crbegin/ class=md-nav__link> <span class=md-ellipsis> crbegin </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/crend/ class=md-nav__link> <span class=md-ellipsis> crend </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/default_object_comparator_t/ class=md-nav__link> <span class=md-ellipsis> default_object_comparator_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/diff/ class=md-nav__link> <span class=md-ellipsis> diff </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/dump/ class=md-nav__link> <span class=md-ellipsis> dump </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/emplace/ class=md-nav__link> <span class=md-ellipsis> emplace </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/emplace_back/ class=md-nav__link> <span class=md-ellipsis> emplace_back </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/empty/ class=md-nav__link> <span class=md-ellipsis> empty </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/end/ class=md-nav__link> <span class=md-ellipsis> end </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/end_pos/ class=md-nav__link> <span class=md-ellipsis> end_pos </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/erase/ class=md-nav__link> <span class=md-ellipsis> erase </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/error_handler_t/ class=md-nav__link> <span class=md-ellipsis> error_handler_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/exception/ class=md-nav__link> <span class=md-ellipsis> exception </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/find/ class=md-nav__link> <span class=md-ellipsis> find </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/flatten/ class=md-nav__link> <span class=md-ellipsis> flatten </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/from_bjdata/ class=md-nav__link> <span class=md-ellipsis> from_bjdata </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/from_bson/ class=md-nav__link> <span class=md-ellipsis> from_bson </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/from_cbor/ class=md-nav__link> <span class=md-ellipsis> from_cbor </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/from_msgpack/ class=md-nav__link> <span class=md-ellipsis> from_msgpack </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/from_ubjson/ class=md-nav__link> <span class=md-ellipsis> from_ubjson </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/front/ class=md-nav__link> <span class=md-ellipsis> front </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/get/ class=md-nav__link> <span class=md-ellipsis> get </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/get_allocator/ class=md-nav__link> <span class=md-ellipsis> get_allocator </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/get_binary/ class=md-nav__link> <span class=md-ellipsis> get_binary </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/get_ptr/ class=md-nav__link> <span class=md-ellipsis> get_ptr </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/get_ref/ class=md-nav__link> <span class=md-ellipsis> get_ref </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/get_to/ class=md-nav__link> <span class=md-ellipsis> get_to </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/std_hash/ class=md-nav__link> <span class=md-ellipsis> std::hash&lt;basic_json&gt; </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/input_format_t/ class=md-nav__link> <span class=md-ellipsis> input_format_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/insert/ class=md-nav__link> <span class=md-ellipsis> insert </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/invalid_iterator/ class=md-nav__link> <span class=md-ellipsis> invalid_iterator </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_array/ class=md-nav__link> <span class=md-ellipsis> is_array </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_binary/ class=md-nav__link> <span class=md-ellipsis> is_binary </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_boolean/ class=md-nav__link> <span class=md-ellipsis> is_boolean </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_discarded/ class=md-nav__link> <span class=md-ellipsis> is_discarded </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_null/ class=md-nav__link> <span class=md-ellipsis> is_null </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_number/ class=md-nav__link> <span class=md-ellipsis> is_number </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_number_float/ class=md-nav__link> <span class=md-ellipsis> is_number_float </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_number_integer/ class=md-nav__link> <span class=md-ellipsis> is_number_integer </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_number_unsigned/ class=md-nav__link> <span class=md-ellipsis> is_number_unsigned </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_object/ class=md-nav__link> <span class=md-ellipsis> is_object </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_primitive/ class=md-nav__link> <span class=md-ellipsis> is_primitive </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_string/ class=md-nav__link> <span class=md-ellipsis> is_string </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_structured/ class=md-nav__link> <span class=md-ellipsis> is_structured </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/items/ class=md-nav__link> <span class=md-ellipsis> items </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/json_base_class_t/ class=md-nav__link> <span class=md-ellipsis> json_base_class_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/json_serializer/ class=md-nav__link> <span class=md-ellipsis> json_serializer </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/max_size/ class=md-nav__link> <span class=md-ellipsis> max_size </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/meta/ class=md-nav__link> <span class=md-ellipsis> meta </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/merge_patch/ class=md-nav__link> <span class=md-ellipsis> merge_patch </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/number_float_t/ class=md-nav__link> <span class=md-ellipsis> number_float_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/number_integer_t/ class=md-nav__link> <span class=md-ellipsis> number_integer_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/number_unsigned_t/ class=md-nav__link> <span class=md-ellipsis> number_unsigned_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/object/ class=md-nav__link> <span class=md-ellipsis> object </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/object_comparator_t/ class=md-nav__link> <span class=md-ellipsis> object_comparator_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/object_t/ class=md-nav__link> <span class=md-ellipsis> object_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/operator_ValueType/ class=md-nav__link> <span class=md-ellipsis> operator ValueType </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/operator_value_t/ class=md-nav__link> <span class=md-ellipsis> operator value_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/operator%5B%5D/ class=md-nav__link> <span class=md-ellipsis> operator[] </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/operator%3D/ class=md-nav__link> <span class=md-ellipsis> operator= </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/operator%2B%3D/ class=md-nav__link> <span class=md-ellipsis> operator+= </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/operator_eq/ class=md-nav__link> <span class=md-ellipsis> operator== </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/operator_ne/ class=md-nav__link> <span class=md-ellipsis> operator!= </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/operator_lt/ class=md-nav__link> <span class=md-ellipsis> operator< </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/operator_gt/ class=md-nav__link> <span class=md-ellipsis> operator> </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/operator_le/ class=md-nav__link> <span class=md-ellipsis> operator<= </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/operator_ge/ class=md-nav__link> <span class=md-ellipsis> operator>= </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/operator_spaceship/ class=md-nav__link> <span class=md-ellipsis> operator<=> </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/out_of_range/ class=md-nav__link> <span class=md-ellipsis> out_of_range </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/other_error/ class=md-nav__link> <span class=md-ellipsis> other_error </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/parse/ class=md-nav__link> <span class=md-ellipsis> parse </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/parse_error/ class=md-nav__link> <span class=md-ellipsis> parse_error </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/parse_event_t/ class=md-nav__link> <span class=md-ellipsis> parse_event_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/parser_callback_t/ class=md-nav__link> <span class=md-ellipsis> parser_callback_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/patch/ class=md-nav__link> <span class=md-ellipsis> patch </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/patch_inplace/ class=md-nav__link> <span class=md-ellipsis> patch_inplace </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/push_back/ class=md-nav__link> <span class=md-ellipsis> push_back </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/rbegin/ class=md-nav__link> <span class=md-ellipsis> rbegin </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/rend/ class=md-nav__link> <span class=md-ellipsis> rend </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/sax_parse/ class=md-nav__link> <span class=md-ellipsis> sax_parse </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/size/ class=md-nav__link> <span class=md-ellipsis> size </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/start_pos/ class=md-nav__link> <span class=md-ellipsis> start_pos </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/string_t/ class=md-nav__link> <span class=md-ellipsis> string_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/swap/ class=md-nav__link> <span class=md-ellipsis> swap </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/std_swap/ class=md-nav__link> <span class=md-ellipsis> std::swap&lt;basic_json&gt; </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/to_bjdata/ class=md-nav__link> <span class=md-ellipsis> to_bjdata </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/to_bson/ class=md-nav__link> <span class=md-ellipsis> to_bson </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/to_cbor/ class=md-nav__link> <span class=md-ellipsis> to_cbor </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/to_msgpack/ class=md-nav__link> <span class=md-ellipsis> to_msgpack </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/to_string/ class=md-nav__link> <span class=md-ellipsis> to_string </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/to_ubjson/ class=md-nav__link> <span class=md-ellipsis> to_ubjson </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/type/ class=md-nav__link> <span class=md-ellipsis> type </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/type_error/ class=md-nav__link> <span class=md-ellipsis> type_error </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/type_name/ class=md-nav__link> <span class=md-ellipsis> type_name </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/unflatten/ class=md-nav__link> <span class=md-ellipsis> unflatten </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/update/ class=md-nav__link> <span class=md-ellipsis> update </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/value/ class=md-nav__link> <span class=md-ellipsis> value </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/value_t/ class=md-nav__link> <span class=md-ellipsis> value_t </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_2> <div class="md-nav__link md-nav__container"> <a href=../../api/byte_container_with_subtype/ class="md-nav__link "> <span class=md-ellipsis> byte_container_with_subtype </span> </a> <label class="md-nav__link " for=__nav_4_2 id=__nav_4_2_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_2_label aria-expanded=false> <label class=md-nav__title for=__nav_4_2> <span class="md-nav__icon md-icon"></span> byte_container_with_subtype </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../api/byte_container_with_subtype/byte_container_with_subtype/ class=md-nav__link> <span class=md-ellipsis> (constructor) </span> </a> </li> <li class=md-nav__item> <a href=../../api/byte_container_with_subtype/clear_subtype/ class=md-nav__link> <span class=md-ellipsis> clear_subtype </span> </a> </li> <li class=md-nav__item> <a href=../../api/byte_container_with_subtype/has_subtype/ class=md-nav__link> <span class=md-ellipsis> has_subtype </span> </a> </li> <li class=md-nav__item> <a href=../../api/byte_container_with_subtype/set_subtype/ class=md-nav__link> <span class=md-ellipsis> set_subtype </span> </a> </li> <li class=md-nav__item> <a href=../../api/byte_container_with_subtype/subtype/ class=md-nav__link> <span class=md-ellipsis> subtype </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_3> <div class="md-nav__link md-nav__container"> <a href=../../api/adl_serializer/ class="md-nav__link "> <span class=md-ellipsis> adl_serializer </span> </a> <label class="md-nav__link " for=__nav_4_3 id=__nav_4_3_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_3_label aria-expanded=false> <label class=md-nav__title for=__nav_4_3> <span class="md-nav__icon md-icon"></span> adl_serializer </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../api/adl_serializer/from_json/ class=md-nav__link> <span class=md-ellipsis> from_json </span> </a> </li> <li class=md-nav__item> <a href=../../api/adl_serializer/to_json/ class=md-nav__link> <span class=md-ellipsis> to_json </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../api/json/ class=md-nav__link> <span class=md-ellipsis> json </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_5> <div class="md-nav__link md-nav__container"> <a href=../../api/json_pointer/ class="md-nav__link "> <span class=md-ellipsis> json_pointer </span> </a> <label class="md-nav__link " for=__nav_4_5 id=__nav_4_5_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_5_label aria-expanded=false> <label class=md-nav__title for=__nav_4_5> <span class="md-nav__icon md-icon"></span> json_pointer </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../api/json_pointer/json_pointer/ class=md-nav__link> <span class=md-ellipsis> (Constructor) </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/back/ class=md-nav__link> <span class=md-ellipsis> back </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/empty/ class=md-nav__link> <span class=md-ellipsis> empty </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/front/ class=md-nav__link> <span class=md-ellipsis> front </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/operator_string_t/ class=md-nav__link> <span class=md-ellipsis> operator string_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/operator_eq/ class=md-nav__link> <span class=md-ellipsis> operator== </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/operator_ne/ class=md-nav__link> <span class=md-ellipsis> operator!= </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/operator_slash/ class=md-nav__link> <span class=md-ellipsis> operator/ </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/operator_slasheq/ class=md-nav__link> <span class=md-ellipsis> operator/= </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/parent_pointer/ class=md-nav__link> <span class=md-ellipsis> parent_pointer </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/pop_back/ class=md-nav__link> <span class=md-ellipsis> pop_back </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/pop_front/ class=md-nav__link> <span class=md-ellipsis> pop_front </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/push_back/ class=md-nav__link> <span class=md-ellipsis> push_back </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/push_front/ class=md-nav__link> <span class=md-ellipsis> push_front </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/string_t/ class=md-nav__link> <span class=md-ellipsis> string_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/to_string/ class=md-nav__link> <span class=md-ellipsis> to_string </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_6> <div class="md-nav__link md-nav__container"> <a href=../../api/json_sax/ class="md-nav__link "> <span class=md-ellipsis> json_sax </span> </a> <label class="md-nav__link " for=__nav_4_6 id=__nav_4_6_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_6_label aria-expanded=false> <label class=md-nav__title for=__nav_4_6> <span class="md-nav__icon md-icon"></span> json_sax </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../api/json_sax/binary/ class=md-nav__link> <span class=md-ellipsis> binary </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_sax/boolean/ class=md-nav__link> <span class=md-ellipsis> boolean </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_sax/end_array/ class=md-nav__link> <span class=md-ellipsis> end_array </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_sax/end_object/ class=md-nav__link> <span class=md-ellipsis> end_object </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_sax/key/ class=md-nav__link> <span class=md-ellipsis> key </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_sax/null/ class=md-nav__link> <span class=md-ellipsis> null </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_sax/number_float/ class=md-nav__link> <span class=md-ellipsis> number_float </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_sax/number_integer/ class=md-nav__link> <span class=md-ellipsis> number_integer </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_sax/number_unsigned/ class=md-nav__link> <span class=md-ellipsis> number_unsigned </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_sax/parse_error/ class=md-nav__link> <span class=md-ellipsis> parse_error </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_sax/start_array/ class=md-nav__link> <span class=md-ellipsis> start_array </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_sax/start_object/ class=md-nav__link> <span class=md-ellipsis> start_object </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_sax/string/ class=md-nav__link> <span class=md-ellipsis> string </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../api/operator_ltlt/ class=md-nav__link> <span class=md-ellipsis> operator<<(basic_json), operator<<(json_pointer) </span> </a> </li> <li class=md-nav__item> <a href=../../api/operator_gtgt/ class=md-nav__link> <span class=md-ellipsis> operator>>(basic_json) </span> </a> </li> <li class=md-nav__item> <a href=../../api/operator_literal_json/ class=md-nav__link> <span class=md-ellipsis> operator""_json </span> </a> </li> <li class=md-nav__item> <a href=../../api/operator_literal_json_pointer/ class=md-nav__link> <span class=md-ellipsis> operator""_json_pointer </span> </a> </li> <li class=md-nav__item> <a href=../../api/ordered_json/ class=md-nav__link> <span class=md-ellipsis> ordered_json </span> </a> </li> <li class=md-nav__item> <a href=../../api/ordered_map/ class=md-nav__link> <span class=md-ellipsis> ordered_map </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_13> <div class="md-nav__link md-nav__container"> <a href=../../api/macros/ class="md-nav__link "> <span class=md-ellipsis> macros </span> </a> <label class="md-nav__link " for=__nav_4_13 id=__nav_4_13_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_13_label aria-expanded=false> <label class=md-nav__title for=__nav_4_13> <span class="md-nav__icon md-icon"></span> macros </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../api/macros/json_assert/ class=md-nav__link> <span class=md-ellipsis> JSON_ASSERT </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_brace_init_copy_semantics/ class=md-nav__link> <span class=md-ellipsis> JSON_BRACE_INIT_COPY_SEMANTICS </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_throw_user/ class=md-nav__link> <span class=md-ellipsis> JSON_CATCH_USER, JSON_THROW_USER, JSON_TRY_USER </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_diagnostics/ class=md-nav__link> <span class=md-ellipsis> JSON_DIAGNOSTICS </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_diagnostic_positions/ class=md-nav__link> <span class=md-ellipsis> JSON_DIAGNOSTIC_POSITIONS </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_disable_enum_serialization/ class=md-nav__link> <span class=md-ellipsis> JSON_DISABLE_ENUM_SERIALIZATION </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_has_cpp_11/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_CPP_11, JSON_HAS_CPP_14, JSON_HAS_CPP_17, JSON_HAS_CPP_20 </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_has_filesystem/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_EXPERIMENTAL_FILESYSTEM, JSON_HAS_FILESYSTEM </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_has_ranges/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_RANGES </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_has_static_rtti/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_STATIC_RTTI </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_has_three_way_comparison/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_THREE_WAY_COMPARISON </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_noexception/ class=md-nav__link> <span class=md-ellipsis> JSON_NOEXCEPTION </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_no_io/ class=md-nav__link> <span class=md-ellipsis> JSON_NO_IO </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_skip_library_version_check/ class=md-nav__link> <span class=md-ellipsis> JSON_SKIP_LIBRARY_VERSION_CHECK </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_skip_unsupported_compiler_check/ class=md-nav__link> <span class=md-ellipsis> JSON_SKIP_UNSUPPORTED_COMPILER_CHECK </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_use_global_udls/ class=md-nav__link> <span class=md-ellipsis> JSON_USE_GLOBAL_UDLS </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_use_implicit_conversions/ class=md-nav__link> <span class=md-ellipsis> JSON_USE_IMPLICIT_CONVERSIONS </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_use_legacy_discarded_value_comparison/ class=md-nav__link> <span class=md-ellipsis> JSON_USE_LEGACY_DISCARDED_VALUE_COMPARISON </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/nlohmann_define_derived_type/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_ONLY_SERIALIZE, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/nlohmann_define_type_intrusive/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_TYPE_INTRUSIVE, NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_TYPE_INTRUSIVE_ONLY_SERIALIZE </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/nlohmann_define_type_non_intrusive/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/nlohmann_define_type_with_names/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_TYPE_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/nlohmann_json_namespace/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_NAMESPACE </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/nlohmann_json_namespace_begin/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_NAMESPACE_BEGIN, NLOHMANN_JSON_NAMESPACE_END </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/nlohmann_json_namespace_no_version/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_NAMESPACE_NO_VERSION </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/nlohmann_json_serialize_enum/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_SERIALIZE_ENUM </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/nlohmann_json_serialize_enum_strict/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_SERIALIZE_ENUM_STRICT </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/nlohmann_json_version_major/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_VERSION_MAJOR, NLOHMANN_JSON_VERSION_MINOR, NLOHMANN_JSON_VERSION_PATCH </span> </a> </li> </ul> </nav> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_5> <div class="md-nav__link md-nav__container"> <a href=../../community/ class="md-nav__link "> <span class=md-ellipsis> Community </span> </a> <label class="md-nav__link " for=__nav_5 id=__nav_5_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_5_label aria-expanded=false> <label class=md-nav__title for=__nav_5> <span class="md-nav__icon md-icon"></span> Community </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../community/code_of_conduct/ class=md-nav__link> <span class=md-ellipsis> Code of Conduct </span> </a> </li> <li class=md-nav__item> <a href=../../community/contribution_guidelines/ class=md-nav__link> <span class=md-ellipsis> Contribution Guidelines </span> </a> </li> <li class=md-nav__item> <a href=../../community/quality_assurance/ class=md-nav__link> <span class=md-ellipsis> Quality assurance </span> </a> </li> <li class=md-nav__item> <a href=../../community/governance/ class=md-nav__link> <span class=md-ellipsis> Governance </span> </a> </li> <li class=md-nav__item> <a href=../../community/security_policy/ class=md-nav__link> <span class=md-ellipsis> Security Policy </span> </a> </li> </ul> </nav> </li> </ul> </nav> </div> </div> </div> <div class="md-sidebar md-sidebar--secondary" data-md-component=sidebar data-md-type=toc> <div class=md-sidebar__scrollwrap> <div class=md-sidebar__inner> <nav class="md-nav md-nav--secondary" aria-label="Table of contents"> <label class=md-nav__title for=__toc> <span class="md-nav__icon md-icon"></span> Table of contents </label> <ul class=md-nav__list data-md-component=toc data-md-scrollfix> <li class=md-nav__item> <a href=#v373 class=md-nav__link> <span class=md-ellipsis> v3.7.3 </span> </a> <nav class=md-nav aria-label=v3.7.3> <ul class=md-nav__list> <li class=md-nav__item> <a href=#summary class=md-nav__link> <span class=md-ellipsis> Summary </span> </a> </li> <li class=md-nav__item> <a href=#bug-fixes class=md-nav__link> <span class=md-ellipsis> Bug Fixes </span> </a> </li> <li class=md-nav__item> <a href=#deprecated-functions class=md-nav__link> <span class=md-ellipsis> Deprecated functions </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=#v372 class=md-nav__link> <span class=md-ellipsis> v3.7.2 </span> </a> <nav class=md-nav aria-label=v3.7.2> <ul class=md-nav__list> <li class=md-nav__item> <a href=#summary_1 class=md-nav__link> <span class=md-ellipsis> Summary </span> </a> </li> <li class=md-nav__item> <a href=#bug-fixes_1 class=md-nav__link> <span class=md-ellipsis> Bug Fixes </span> </a> </li> <li class=md-nav__item> <a href=#further-changes class=md-nav__link> <span class=md-ellipsis> Further Changes </span> </a> </li> <li class=md-nav__item> <a href=#deprecated-functions_1 class=md-nav__link> <span class=md-ellipsis> Deprecated functions </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=#v371 class=md-nav__link> <span class=md-ellipsis> v3.7.1 </span> </a> <nav class=md-nav aria-label=v3.7.1> <ul class=md-nav__list> <li class=md-nav__item> <a href=#summary_2 class=md-nav__link> <span class=md-ellipsis> Summary </span> </a> </li> <li class=md-nav__item> <a href=#bug-fixes_2 class=md-nav__link> <span class=md-ellipsis> Bug Fixes </span> </a> </li> <li class=md-nav__item> <a href=#improvements class=md-nav__link> <span class=md-ellipsis> Improvements </span> </a> </li> <li class=md-nav__item> <a href=#further-changes_1 class=md-nav__link> <span class=md-ellipsis> Further Changes </span> </a> </li> <li class=md-nav__item> <a href=#deprecated-functions_2 class=md-nav__link> <span class=md-ellipsis> Deprecated functions </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=#v370 class=md-nav__link> <span class=md-ellipsis> v3.7.0 </span> </a> <nav class=md-nav aria-label=v3.7.0> <ul class=md-nav__list> <li class=md-nav__item> <a href=#summary_3 class=md-nav__link> <span class=md-ellipsis> Summary </span> </a> </li> <li class=md-nav__item> <a href=#new-features class=md-nav__link> <span class=md-ellipsis> New Features </span> </a> </li> <li class=md-nav__item> <a href=#bug-fixes_3 class=md-nav__link> <span class=md-ellipsis> Bug Fixes </span> </a> </li> <li class=md-nav__item> <a href=#improvements_1 class=md-nav__link> <span class=md-ellipsis> Improvements </span> </a> </li> <li class=md-nav__item> <a href=#further-changes_2 class=md-nav__link> <span class=md-ellipsis> Further Changes </span> </a> </li> <li class=md-nav__item> <a href=#deprecated-functions_3 class=md-nav__link> <span class=md-ellipsis> Deprecated functions </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=#v361 class=md-nav__link> <span class=md-ellipsis> v3.6.1 </span> </a> <nav class=md-nav aria-label=v3.6.1> <ul class=md-nav__list> <li class=md-nav__item> <a href=#summary_4 class=md-nav__link> <span class=md-ellipsis> Summary </span> </a> </li> <li class=md-nav__item> <a href=#bug-fixes_4 class=md-nav__link> <span class=md-ellipsis> Bug Fixes </span> </a> </li> <li class=md-nav__item> <a href=#further-changes_3 class=md-nav__link> <span class=md-ellipsis> Further Changes </span> </a> </li> <li class=md-nav__item> <a href=#deprecated-functions_4 class=md-nav__link> <span class=md-ellipsis> Deprecated functions </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=#v360 class=md-nav__link> <span class=md-ellipsis> v3.6.0 </span> </a> <nav class=md-nav aria-label=v3.6.0> <ul class=md-nav__list> <li class=md-nav__item> <a href=#summary_5 class=md-nav__link> <span class=md-ellipsis> Summary </span> </a> </li> <li class=md-nav__item> <a href=#new-features_1 class=md-nav__link> <span class=md-ellipsis> New Features </span> </a> </li> <li class=md-nav__item> <a href=#bug-fixes_5 class=md-nav__link> <span class=md-ellipsis> Bug Fixes </span> </a> </li> <li class=md-nav__item> <a href=#improvements_2 class=md-nav__link> <span class=md-ellipsis> Improvements </span> </a> </li> <li class=md-nav__item> <a href=#further-changes_4 class=md-nav__link> <span class=md-ellipsis> Further Changes </span> </a> </li> <li class=md-nav__item> <a href=#deprecated-functions_5 class=md-nav__link> <span class=md-ellipsis> Deprecated functions </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=#v350 class=md-nav__link> <span class=md-ellipsis> v3.5.0 </span> </a> <nav class=md-nav aria-label=v3.5.0> <ul class=md-nav__list> <li class=md-nav__item> <a href=#summary_6 class=md-nav__link> <span class=md-ellipsis> Summary </span> </a> </li> <li class=md-nav__item> <a href=#new-features_2 class=md-nav__link> <span class=md-ellipsis> New Features </span> </a> </li> <li class=md-nav__item> <a href=#bug-fixes_6 class=md-nav__link> <span class=md-ellipsis> Bug Fixes </span> </a> </li> <li class=md-nav__item> <a href=#improvements_3 class=md-nav__link> <span class=md-ellipsis> Improvements </span> </a> </li> <li class=md-nav__item> <a href=#further-changes_5 class=md-nav__link> <span class=md-ellipsis> Further Changes </span> </a> </li> <li class=md-nav__item> <a href=#deprecated-functions_6 class=md-nav__link> <span class=md-ellipsis> Deprecated functions </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=#v340 class=md-nav__link> <span class=md-ellipsis> v3.4.0 </span> </a> <nav class=md-nav aria-label=v3.4.0> <ul class=md-nav__list> <li class=md-nav__item> <a href=#summary_7 class=md-nav__link> <span class=md-ellipsis> Summary </span> </a> </li> <li class=md-nav__item> <a href=#new-features_3 class=md-nav__link> <span class=md-ellipsis> New Features </span> </a> </li> <li class=md-nav__item> <a href=#bug-fixes_7 class=md-nav__link> <span class=md-ellipsis> Bug Fixes </span> </a> </li> <li class=md-nav__item> <a href=#improvements_4 class=md-nav__link> <span class=md-ellipsis> Improvements </span> </a> </li> <li class=md-nav__item> <a href=#further-changes_6 class=md-nav__link> <span class=md-ellipsis> Further Changes </span> </a> </li> <li class=md-nav__item> <a href=#deprecated-functions_7 class=md-nav__link> <span class=md-ellipsis> Deprecated functions </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=#v330 class=md-nav__link> <span class=md-ellipsis> v3.3.0 </span> </a> <nav class=md-nav aria-label=v3.3.0> <ul class=md-nav__list> <li class=md-nav__item> <a href=#summary_8 class=md-nav__link> <span class=md-ellipsis> Summary </span> </a> </li> <li class=md-nav__item> <a href=#new-features_4 class=md-nav__link> <span class=md-ellipsis> New Features </span> </a> </li> <li class=md-nav__item> <a href=#bug-fixes_8 class=md-nav__link> <span class=md-ellipsis> Bug Fixes </span> </a> </li> <li class=md-nav__item> <a href=#improvements_5 class=md-nav__link> <span class=md-ellipsis> Improvements </span> </a> </li> <li class=md-nav__item> <a href=#further-changes_7 class=md-nav__link> <span class=md-ellipsis> Further Changes </span> </a> </li> <li class=md-nav__item> <a href=#deprecated-functions_8 class=md-nav__link> <span class=md-ellipsis> Deprecated functions </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=#v320 class=md-nav__link> <span class=md-ellipsis> v3.2.0 </span> </a> <nav class=md-nav aria-label=v3.2.0> <ul class=md-nav__list> <li class=md-nav__item> <a href=#summary_9 class=md-nav__link> <span class=md-ellipsis> Summary </span> </a> </li> <li class=md-nav__item> <a href=#new-features_5 class=md-nav__link> <span class=md-ellipsis> New Features </span> </a> </li> <li class=md-nav__item> <a href=#bug-fixes_9 class=md-nav__link> <span class=md-ellipsis> Bug Fixes </span> </a> </li> <li class=md-nav__item> <a href=#improvements_6 class=md-nav__link> <span class=md-ellipsis> Improvements </span> </a> </li> <li class=md-nav__item> <a href=#further-changes_8 class=md-nav__link> <span class=md-ellipsis> Further Changes </span> </a> </li> <li class=md-nav__item> <a href=#deprecated-functions_9 class=md-nav__link> <span class=md-ellipsis> Deprecated functions </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=#v312 class=md-nav__link> <span class=md-ellipsis> v3.1.2 </span> </a> <nav class=md-nav aria-label=v3.1.2> <ul class=md-nav__list> <li class=md-nav__item> <a href=#summary_10 class=md-nav__link> <span class=md-ellipsis> Summary </span> </a> </li> <li class=md-nav__item> <a href=#bug-fixes_10 class=md-nav__link> <span class=md-ellipsis> Bug Fixes </span> </a> </li> <li class=md-nav__item> <a href=#improvements_7 class=md-nav__link> <span class=md-ellipsis> Improvements </span> </a> </li> <li class=md-nav__item> <a href=#further-changes_9 class=md-nav__link> <span class=md-ellipsis> Further Changes </span> </a> </li> <li class=md-nav__item> <a href=#deprecated-functions_10 class=md-nav__link> <span class=md-ellipsis> Deprecated functions </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=#v311 class=md-nav__link> <span class=md-ellipsis> v3.1.1 </span> </a> <nav class=md-nav aria-label=v3.1.1> <ul class=md-nav__list> <li class=md-nav__item> <a href=#summary_11 class=md-nav__link> <span class=md-ellipsis> Summary </span> </a> </li> <li class=md-nav__item> <a href=#bug-fixes_11 class=md-nav__link> <span class=md-ellipsis> Bug Fixes </span> </a> </li> <li class=md-nav__item> <a href=#further-changes_10 class=md-nav__link> <span class=md-ellipsis> Further Changes </span> </a> </li> <li class=md-nav__item> <a href=#deprecated-functions_11 class=md-nav__link> <span class=md-ellipsis> Deprecated functions </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=#v310 class=md-nav__link> <span class=md-ellipsis> v3.1.0 </span> </a> <nav class=md-nav aria-label=v3.1.0> <ul class=md-nav__list> <li class=md-nav__item> <a href=#summary_12 class=md-nav__link> <span class=md-ellipsis> Summary </span> </a> </li> <li class=md-nav__item> <a href=#new-features_6 class=md-nav__link> <span class=md-ellipsis> New features </span> </a> </li> <li class=md-nav__item> <a href=#improvements_8 class=md-nav__link> <span class=md-ellipsis> Improvements </span> </a> </li> <li class=md-nav__item> <a href=#reorganization class=md-nav__link> <span class=md-ellipsis> Reorganization </span> </a> </li> <li class=md-nav__item> <a href=#further-changes_11 class=md-nav__link> <span class=md-ellipsis> Further changes </span> </a> </li> <li class=md-nav__item> <a href=#deprecated-functions_12 class=md-nav__link> <span class=md-ellipsis> Deprecated functions </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=#v301 class=md-nav__link> <span class=md-ellipsis> v3.0.1 </span> </a> <nav class=md-nav aria-label=v3.0.1> <ul class=md-nav__list> <li class=md-nav__item> <a href=#summary_13 class=md-nav__link> <span class=md-ellipsis> Summary </span> </a> </li> <li class=md-nav__item> <a href=#changes class=md-nav__link> <span class=md-ellipsis> Changes </span> </a> </li> <li class=md-nav__item> <a href=#deprecated-functions_13 class=md-nav__link> <span class=md-ellipsis> Deprecated functions </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=#v300 class=md-nav__link> <span class=md-ellipsis> v3.0.0 </span> </a> <nav class=md-nav aria-label=v3.0.0> <ul class=md-nav__list> <li class=md-nav__item> <a href=#summary_14 class=md-nav__link> <span class=md-ellipsis> Summary </span> </a> </li> <li class=md-nav__item> <a href=#breaking-changes class=md-nav__link> <span class=md-ellipsis> Breaking changes </span> </a> </li> <li class=md-nav__item> <a href=#deprecated-functions_14 class=md-nav__link> <span class=md-ellipsis> Deprecated functions </span> </a> </li> <li class=md-nav__item> <a href=#new-features_7 class=md-nav__link> <span class=md-ellipsis> New features </span> </a> </li> <li class=md-nav__item> <a href=#further-changes_12 class=md-nav__link> <span class=md-ellipsis> Further changes </span> </a> </li> <li class=md-nav__item> <a href=#moving-from-2xx-to-300 class=md-nav__link> <span class=md-ellipsis> Moving from 2.x.x to 3.0.0 </span> </a> <nav class=md-nav aria-label="Moving from 2.x.x to 3.0.0"> <ul class=md-nav__list> <li class=md-nav__item> <a href=#user-defined-exceptions class=md-nav__link> <span class=md-ellipsis> User-defined Exceptions </span> </a> </li> <li class=md-nav__item> <a href=#handling-of-nan-and-inf class=md-nav__link> <span class=md-ellipsis> Handling of NaN and INF </span> </a> </li> <li class=md-nav__item> <a href=#removal-of-deprecated-functions class=md-nav__link> <span class=md-ellipsis> Removal of deprecated functions </span> </a> </li> </ul> </nav> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=#v211 class=md-nav__link> <span class=md-ellipsis> v2.1.1 </span> </a> <nav class=md-nav aria-label=v2.1.1> <ul class=md-nav__list> <li class=md-nav__item> <a href=#summary_15 class=md-nav__link> <span class=md-ellipsis> Summary </span> </a> </li> <li class=md-nav__item> <a href=#changes_1 class=md-nav__link> <span class=md-ellipsis> Changes </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=#v210 class=md-nav__link> <span class=md-ellipsis> v2.1.0 </span> </a> <nav class=md-nav aria-label=v2.1.0> <ul class=md-nav__list> <li class=md-nav__item> <a href=#summary_16 class=md-nav__link> <span class=md-ellipsis> Summary </span> </a> </li> <li class=md-nav__item> <a href=#changes_2 class=md-nav__link> <span class=md-ellipsis> Changes </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=#v2010 class=md-nav__link> <span class=md-ellipsis> v2.0.10 </span> </a> <nav class=md-nav aria-label=v2.0.10> <ul class=md-nav__list> <li class=md-nav__item> <a href=#summary_17 class=md-nav__link> <span class=md-ellipsis> Summary </span> </a> </li> <li class=md-nav__item> <a href=#changes_3 class=md-nav__link> <span class=md-ellipsis> Changes </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=#v209 class=md-nav__link> <span class=md-ellipsis> v2.0.9 </span> </a> <nav class=md-nav aria-label=v2.0.9> <ul class=md-nav__list> <li class=md-nav__item> <a href=#summary_18 class=md-nav__link> <span class=md-ellipsis> Summary </span> </a> </li> <li class=md-nav__item> <a href=#changes_4 class=md-nav__link> <span class=md-ellipsis> Changes </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=#v208 class=md-nav__link> <span class=md-ellipsis> v2.0.8 </span> </a> <nav class=md-nav aria-label=v2.0.8> <ul class=md-nav__list> <li class=md-nav__item> <a href=#summary_19 class=md-nav__link> <span class=md-ellipsis> Summary </span> </a> </li> <li class=md-nav__item> <a href=#changes_5 class=md-nav__link> <span class=md-ellipsis> Changes </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=#v207 class=md-nav__link> <span class=md-ellipsis> v2.0.7 </span> </a> <nav class=md-nav aria-label=v2.0.7> <ul class=md-nav__list> <li class=md-nav__item> <a href=#summary_20 class=md-nav__link> <span class=md-ellipsis> Summary </span> </a> </li> <li class=md-nav__item> <a href=#changes_6 class=md-nav__link> <span class=md-ellipsis> Changes </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=#v206 class=md-nav__link> <span class=md-ellipsis> v2.0.6 </span> </a> <nav class=md-nav aria-label=v2.0.6> <ul class=md-nav__list> <li class=md-nav__item> <a href=#summary_21 class=md-nav__link> <span class=md-ellipsis> Summary </span> </a> </li> <li class=md-nav__item> <a href=#changes_7 class=md-nav__link> <span class=md-ellipsis> Changes </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=#v205 class=md-nav__link> <span class=md-ellipsis> v2.0.5 </span> </a> <nav class=md-nav aria-label=v2.0.5> <ul class=md-nav__list> <li class=md-nav__item> <a href=#summary_22 class=md-nav__link> <span class=md-ellipsis> Summary </span> </a> </li> <li class=md-nav__item> <a href=#changes_8 class=md-nav__link> <span class=md-ellipsis> Changes </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=#v204 class=md-nav__link> <span class=md-ellipsis> v2.0.4 </span> </a> <nav class=md-nav aria-label=v2.0.4> <ul class=md-nav__list> <li class=md-nav__item> <a href=#summary_23 class=md-nav__link> <span class=md-ellipsis> Summary </span> </a> </li> <li class=md-nav__item> <a href=#changes_9 class=md-nav__link> <span class=md-ellipsis> Changes </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=#v203 class=md-nav__link> <span class=md-ellipsis> v2.0.3 </span> </a> <nav class=md-nav aria-label=v2.0.3> <ul class=md-nav__list> <li class=md-nav__item> <a href=#summary_24 class=md-nav__link> <span class=md-ellipsis> Summary </span> </a> </li> <li class=md-nav__item> <a href=#changes_10 class=md-nav__link> <span class=md-ellipsis> Changes </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=#v202 class=md-nav__link> <span class=md-ellipsis> v2.0.2 </span> </a> <nav class=md-nav aria-label=v2.0.2> <ul class=md-nav__list> <li class=md-nav__item> <a href=#summary_25 class=md-nav__link> <span class=md-ellipsis> Summary </span> </a> </li> <li class=md-nav__item> <a href=#changes_11 class=md-nav__link> <span class=md-ellipsis> Changes </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=#v201 class=md-nav__link> <span class=md-ellipsis> v2.0.1 </span> </a> <nav class=md-nav aria-label=v2.0.1> <ul class=md-nav__list> <li class=md-nav__item> <a href=#summary_26 class=md-nav__link> <span class=md-ellipsis> Summary </span> </a> </li> <li class=md-nav__item> <a href=#changes_12 class=md-nav__link> <span class=md-ellipsis> Changes </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=#v200 class=md-nav__link> <span class=md-ellipsis> v2.0.0 </span> </a> <nav class=md-nav aria-label=v2.0.0> <ul class=md-nav__list> <li class=md-nav__item> <a href=#summary_27 class=md-nav__link> <span class=md-ellipsis> Summary </span> </a> </li> <li class=md-nav__item> <a href=#changes_13 class=md-nav__link> <span class=md-ellipsis> Changes </span> </a> </li> <li class=md-nav__item> <a href=#notes class=md-nav__link> <span class=md-ellipsis> Notes </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=#v110 class=md-nav__link> <span class=md-ellipsis> v1.1.0 </span> </a> <nav class=md-nav aria-label=v1.1.0> <ul class=md-nav__list> <li class=md-nav__item> <a href=#summary_28 class=md-nav__link> <span class=md-ellipsis> Summary </span> </a> </li> <li class=md-nav__item> <a href=#changes_14 class=md-nav__link> <span class=md-ellipsis> Changes </span> </a> </li> <li class=md-nav__item> <a href=#notes_1 class=md-nav__link> <span class=md-ellipsis> Notes </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=#v100 class=md-nav__link> <span class=md-ellipsis> v1.0.0 </span> </a> <nav class=md-nav aria-label=v1.0.0> <ul class=md-nav__list> <li class=md-nav__item> <a href=#summary_29 class=md-nav__link> <span class=md-ellipsis> Summary </span> </a> </li> <li class=md-nav__item> <a href=#changes_15 class=md-nav__link> <span class=md-ellipsis> Changes </span> </a> </li> </ul> </nav> </li> </ul> </nav> </div> </div> </div> <div class=md-content data-md-component=content> <article class="md-content__inner md-typeset"> <a href="https://github.com/nlohmann/json/edit/develop/docs/mkdocs/docs/home/releases.md" title="Edit this page" class="md-content__button md-icon" rel="edit"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M10 20H6V4h7v5h5v3.1l2-2V8l-6-6H6c-1.1 0-2 .9-2 2v16c0 1.1.9 2 2 2h4zm10.2-7c.1 0 .3.1.4.2l1.3 1.3c.2.2.2.6 0 .8l-1 1-2.1-2.1 1-1c.1-.1.2-.2.4-.2m0 3.9L14.1 23H12v-2.1l6.1-6.1z"/></svg> </a> <a href="https://github.com/nlohmann/json/raw/develop/docs/mkdocs/docs/home/releases.md" title="View source of this page" class="md-content__button md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M17 18c.56 0 1 .44 1 1s-.44 1-1 1-1-.44-1-1 .44-1 1-1m0-3c-2.73 0-5.06 1.66-6 4 .94 2.34 3.27 4 6 4s5.06-1.66 6-4c-.94-2.34-3.27-4-6-4m0 6.5a2.5 2.5 0 0 1-2.5-2.5 2.5 2.5 0 0 1 2.5-2.5 2.5 2.5 0 0 1 2.5 2.5 2.5 2.5 0 0 1-2.5 2.5M9.27 20H6V4h7v5h5v4.07c.7.08 1.36.25 2 .49V8l-6-6H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h4.5a8.2 8.2 0 0 1-1.23-2"/></svg> </a> <h1 id=releases>Releases<a class=headerlink href=#releases title="Permanent link">&para;</a></h1> <h2 id=v373>v3.7.3<a class=headerlink href=#v373 title="Permanent link">&para;</a></h2> <div class="admonition summary"> <p class=admonition-title>Files</p> <ul> <li><a href="https://github.com/nlohmann/json/releases/download/v3.7.3/include.zip">include.zip</a> (274 KB)</li> <li><a href="https://github.com/nlohmann/json/releases/download/v3.7.3/include.zip.asc">include.zip.asc</a> (1 KB)</li> <li><a href="https://github.com/nlohmann/json/releases/download/v3.7.3/json.hpp">json.hpp</a> (791 KB)</li> <li><a href="https://github.com/nlohmann/json/releases/download/v3.7.3/json.hpp.asc">json.hpp.asc</a> (1 KB)</li> </ul> </div> <p>Release date: 2019-11-17 <abbr title="Secure Hash Algorithm">SHA</abbr>-256: 3b5d2b8f8282b80557091514d8ab97e27f9574336c804ee666fda673a9b59926 (json.hpp), 87b5884741427220d3a33df1363ae0e8b898099fbc59f1c451113f6732891014 (include.zip)</p> <h3 id=summary>Summary<a class=headerlink href=#summary title="Permanent link">&para;</a></h3> <p>This release fixes a bug introduced in release 3.7.2 which could yield quadratic complexity in destructor calls. All changes are backward-compatible.</p> <h3 id=bug-fixes><img alt="🐛" class="twemoji" src="../../assets/external/cdn.jsdelivr.net/gh/jdecked/twemoji@16.0.1/assets/svg/1f41b.svg" title=":bug:"> Bug Fixes<a class=headerlink href=#bug-fixes title="Permanent link">&para;</a></h3> <ul> <li>Removed <code>reserve()</code> calls from the destructor which could lead to quadratic complexity. #1837 #1838</li> </ul> <h3 id=deprecated-functions><img alt="🔥" class="twemoji" src="../../assets/external/cdn.jsdelivr.net/gh/jdecked/twemoji@16.0.1/assets/svg/1f525.svg" title=":fire:"> Deprecated functions<a class=headerlink href=#deprecated-functions title="Permanent link">&para;</a></h3> <p>This release does not deprecate any functions. As an overview, the following functions have been deprecated in earlier versions and will be removed in the next major version (i.e., 4.0.0):</p> <ul> <li>Function <a href="http://nlohmann.github.io/json/doxygen/classnlohmann_1_1basic__json_af1592a06bc63811886ade4f9d965045e.html#af1592a06bc63811886ade4f9d965045e"><code>iterator_wrapper</code></a> are deprecated. Please use the member function <a href="http://nlohmann.github.io/json/doxygen/classnlohmann_1_1basic__json_afe3e137ace692efa08590d8df40f58dd.html#afe3e137ace692efa08590d8df40f58dd"><code>items()</code></a> instead.</li> <li>Functions <a href="http://nlohmann.github.io/json/doxygen/classnlohmann_1_1basic__json_ab7285a92514fcdbe6de505ebaba92ea3.html#ab7285a92514fcdbe6de505ebaba92ea3"><code>friend std::istream&amp; operator&lt;&lt;(basic_json&amp;, std::istream&amp;)</code></a> and <a href="http://nlohmann.github.io/json/doxygen/classnlohmann_1_1basic__json_a9e06deabe69262c3ffc5533d32856983.html#a9e06deabe69262c3ffc5533d32856983"><code>friend std::ostream&amp; operator&gt;&gt;(const basic_json&amp;, std::ostream&amp;)</code></a> are deprecated. Please use <a href="http://nlohmann.github.io/json/doxygen/classnlohmann_1_1basic__json_aaf363408931d76472ded14017e59c9e8.html#aaf363408931d76472ded14017e59c9e8"><code>friend std::istream&amp; operator&gt;&gt;(std::istream&amp;, basic_json&amp;)</code></a> and <a href="http://nlohmann.github.io/json/doxygen/classnlohmann_1_1basic__json_a5e34c5435e557d0bf666bd7311211405.html#a5e34c5435e557d0bf666bd7311211405"><code>friend operator&lt;&lt;(std::ostream&amp;, const basic_json&amp;)</code></a> instead.</li> </ul> <h2 id=v372>v3.7.2<a class=headerlink href=#v372 title="Permanent link">&para;</a></h2> <div class="admonition summary"> <p class=admonition-title>Files</p> <ul> <li><a href="https://github.com/nlohmann/json/releases/download/v3.7.2/include.zip">include.zip</a> (274 KB)</li> <li><a href="https://github.com/nlohmann/json/releases/download/v3.7.2/include.zip.asc">include.zip.asc</a> (1 KB)</li> <li><a href="https://github.com/nlohmann/json/releases/download/v3.7.2/json.hpp">json.hpp</a> (791 KB)</li> <li><a href="https://github.com/nlohmann/json/releases/download/v3.7.2/json.hpp.asc">json.hpp.asc</a> (1 KB)</li> </ul> </div> <p>Release date: 2019-11-10 <abbr title="Secure Hash Algorithm">SHA</abbr>-256: 0a65fcbbe1b334d3f45c9498e5ee28c3f3b2428aea98557da4a3ff12f0f14ad6 (json.hpp), 67f69c9a93b7fa0612dc1b6273119d2c560317333581845f358aaa68bff8f087 (include.zip)</p> <h3 id=summary_1>Summary<a class=headerlink href=#summary_1 title="Permanent link">&para;</a></h3> <p>Project <a href="https://github.com/lovasoa/bad_json_parsers">bad_json_parsers</a> tested how <abbr title="JavaScript Object Notation">JSON</abbr> parser libraries react on <strong>deeply nested inputs</strong>. It turns out that this library segfaulted at a certain nesting depth. This bug was fixed with this release. <strong>Now the parsing is only bounded by the available memory.</strong> All changes are backward-compatible.</p> <h3 id=bug-fixes_1><img alt="🐛" class="twemoji" src="../../assets/external/cdn.jsdelivr.net/gh/jdecked/twemoji@16.0.1/assets/svg/1f41b.svg" title=":bug:"> Bug Fixes<a class=headerlink href=#bug-fixes_1 title="Permanent link">&para;</a></h3> <ul> <li>Fixed a bug that lead to stack overflow for deeply nested <abbr title="JavaScript Object Notation">JSON</abbr> values (objects, array) by changing the implementation of the destructor from a recursive to an iterative approach. #832, #1419, #1835</li> </ul> <h3 id=further-changes><img alt="🔨" class="twemoji" src="../../assets/external/cdn.jsdelivr.net/gh/jdecked/twemoji@16.0.1/assets/svg/1f528.svg" title=":hammer:"> Further Changes<a class=headerlink href=#further-changes title="Permanent link">&para;</a></h3> <ul> <li>Added WhiteStone Bolt. #1830</li> </ul> <h3 id=deprecated-functions_1><img alt="🔥" class="twemoji" src="../../assets/external/cdn.jsdelivr.net/gh/jdecked/twemoji@16.0.1/assets/svg/1f525.svg" title=":fire:"> Deprecated functions<a class=headerlink href=#deprecated-functions_1 title="Permanent link">&para;</a></h3> <p>This release does not deprecate any functions. As an overview, the following functions have been deprecated in earlier versions and will be removed in the next major version (i.e., 4.0.0):</p> <ul> <li>Function <a href="http://nlohmann.github.io/json/doxygen/classnlohmann_1_1basic__json_af1592a06bc63811886ade4f9d965045e.html#af1592a06bc63811886ade4f9d965045e"><code>iterator_wrapper</code></a> are deprecated. Please use the member function <a href="http://nlohmann.github.io/json/doxygen/classnlohmann_1_1basic__json_afe3e137ace692efa08590d8df40f58dd.html#afe3e137ace692efa08590d8df40f58dd"><code>items()</code></a> instead.</li> <li>Functions <a href="http://nlohmann.github.io/json/doxygen/classnlohmann_1_1basic__json_ab7285a92514fcdbe6de505ebaba92ea3.html#ab7285a92514fcdbe6de505ebaba92ea3"><code>friend std::istream&amp; operator&lt;&lt;(basic_json&amp;, std::istream&amp;)</code></a> and <a href="http://nlohmann.github.io/json/doxygen/classnlohmann_1_1basic__json_a9e06deabe69262c3ffc5533d32856983.html#a9e06deabe69262c3ffc5533d32856983"><code>friend std::ostream&amp; operator&gt;&gt;(const basic_json&amp;, std::ostream&amp;)</code></a> are deprecated. Please use <a href="http://nlohmann.github.io/json/doxygen/classnlohmann_1_1basic__json_aaf363408931d76472ded14017e59c9e8.html#aaf363408931d76472ded14017e59c9e8"><code>friend std::istream&amp; operator&gt;&gt;(std::istream&amp;, basic_json&amp;)</code></a> and <a href="http://nlohmann.github.io/json/doxygen/classnlohmann_1_1basic__json_a5e34c5435e557d0bf666bd7311211405.html#a5e34c5435e557d0bf666bd7311211405"><code>friend operator&lt;&lt;(std::ostream&amp;, const basic_json&amp;)</code></a> instead.</li> </ul> <h2 id=v371>v3.7.1<a class=headerlink href=#v371 title="Permanent link">&para;</a></h2> <div class="admonition summary"> <p class=admonition-title>Files</p> <ul> <li><a href="https://github.com/nlohmann/json/releases/download/v3.7.1/include.zip">include.zip</a> (273 KB)</li> <li><a href="https://github.com/nlohmann/json/releases/download/v3.7.1/include.zip.asc">include.zip.asc</a> (1 KB)</li> <li><a href="https://github.com/nlohmann/json/releases/download/v3.7.1/json.hpp">json.hpp</a> (789 KB)</li> <li><a href="https://github.com/nlohmann/json/releases/download/v3.7.1/json.hpp.asc">json.hpp.asc</a> (1 KB)</li> </ul> </div> <p>Release date: 2019-11-06 <abbr title="Secure Hash Algorithm">SHA</abbr>-256: b5ba7228f3c22a882d379e93d08eab4349458ee16fbf45291347994eac7dc7ce (json.hpp), 77b9f54b34e7989e6f402afb516f7ff2830df551c3a36973085e2c7a6b1045fe (include.zip)</p> <h3 id=summary_2>Summary<a class=headerlink href=#summary_2 title="Permanent link">&para;</a></h3> <p>This release fixes several small bugs in the library. All changes are backward-compatible.</p> <h3 id=bug-fixes_2><img alt="🐛" class="twemoji" src="../../assets/external/cdn.jsdelivr.net/gh/jdecked/twemoji@16.0.1/assets/svg/1f41b.svg" title=":bug:"> Bug Fixes<a class=headerlink href=#bug-fixes_2 title="Permanent link">&para;</a></h3> <ul> <li>Fixed a segmentation fault when serializing <code>std::int64_t</code> minimum value. #1708 #1722</li> <li>Fixed the <a href="https://nlohmann.github.io/json/classnlohmann_1_1basic__json_ab23b04802eb9da97dc3f664e54e09cb3.html#ab23b04802eb9da97dc3f664e54e09cb3"><code>contains()</code></a> function for <abbr title="JavaScript Object Notation">JSON</abbr> Pointers. #1727 #1741</li> <li>Fixed too lax <abbr title="Substitution failure is not an error">SFINAE</abbr> guard for conversion from <code>std::pair</code> and <code>std::tuple</code> to <code>json</code>. #1805 #1806 #1825 #1826</li> <li>Fixed some regressions detected by UBSAN. Updated <abbr title="Continuous Integration">CI</abbr> to use Clang-Tidy 7.1.0. #1716 #1728</li> <li>Fixed integer truncation in <code>iteration_proxy</code>. #1797</li> <li>Updated <a href="https://github.com/nemequ/hedley">Hedley</a> to v11 to <a href="https://github.com/nemequ/hedley/issues/28">fix a E2512 error</a> in <abbr title="Microsoft Visual C++">MSVC</abbr>. #1799</li> <li>Fixed a compile error in enum deserialization of non non-default-constructible types. #1647 #1821</li> <li>Fixed the conversion from <code>json</code> to <code>std::valarray</code>.</li> </ul> <h3 id=improvements><img alt="⚡" class="twemoji" src="../../assets/external/cdn.jsdelivr.net/gh/jdecked/twemoji@16.0.1/assets/svg/26a1.svg" title=":zap:"> Improvements<a class=headerlink href=#improvements title="Permanent link">&para;</a></h3> <ul> <li>The <a href="https://nlohmann.github.io/json/classnlohmann_1_1basic__json_afe3e137ace692efa08590d8df40f58dd.html#afe3e137ace692efa08590d8df40f58dd"><code>items()</code></a> function can now be used with a custom string type. #1765</li> <li>Made <a href="https://nlohmann.github.io/json/classnlohmann_1_1json__pointer_a213bc67c32a30c68ac6bf06f5195d482.html#a213bc67c32a30c68ac6bf06f5195d482"><code>json_pointer::back</code></a> <code>const</code>. #1764 #1769</li> <li>Meson is part of the release archive. #1672 #1694 </li> <li>Improved documentation on the Meson and Spack package manager. #1694 #1720</li> </ul> <h3 id=further-changes_1><img alt="🔨" class="twemoji" src="../../assets/external/cdn.jsdelivr.net/gh/jdecked/twemoji@16.0.1/assets/svg/1f528.svg" title=":hammer:"> Further Changes<a class=headerlink href=#further-changes_1 title="Permanent link">&para;</a></h3> <ul> <li>Added GitHub Workflow with <code>ubuntu-latest</code>/<abbr title="GNU Compiler Collection">GCC</abbr> 7.4.0 as <abbr title="Continuous Integration">CI</abbr> step.</li> <li>Added <abbr title="GNU Compiler Collection">GCC</abbr> 9 to Travis <abbr title="Continuous Integration">CI</abbr> to compile with C++20 support. #1724</li> <li>Added <abbr title="Microsoft Visual C++">MSVC</abbr> 2019 to the AppVeyor <abbr title="Continuous Integration">CI</abbr>. #1780</li> <li>Added badge to <a href="https://bugs.chromium.org/p/oss-fuzz/issues/list?sort=-opened&amp;can=1&amp;q=proj:json">fuzzing status</a>.</li> <li>Fixed some cppcheck warnings. #1760</li> <li>Fixed several typos in the documentation. #1720 #1767 #1803</li> <li>Added documentation on the <code>JSON_THROW_USER</code>, <code>JSON_TRY_USER</code>, and <code>JSON_CATCH_USER</code> macros to control user-defined exception handling.</li> <li>Used GitHub's <a href="https://github.com/nlohmann/json/blob/develop/.github/CODEOWNERS">CODEOWNERS</a> and <a href="https://github.com/nlohmann/json/blob/develop/.github/SECURITY.md">SECURITY</a> feature.</li> <li>Removed <code>GLOB</code> from CMake files. #1779</li> <li>Updated to <a href="https://github.com/onqtam/doctest">Doctest</a> 2.3.5.</li> </ul> <h3 id=deprecated-functions_2><img alt="🔥" class="twemoji" src="../../assets/external/cdn.jsdelivr.net/gh/jdecked/twemoji@16.0.1/assets/svg/1f525.svg" title=":fire:"> Deprecated functions<a class=headerlink href=#deprecated-functions_2 title="Permanent link">&para;</a></h3> <p>This release does not deprecate any functions. As an overview, the following functions have been deprecated in earlier versions and will be removed in the next major version (i.e., 4.0.0):</p> <ul> <li>Function <a href="http://nlohmann.github.io/json/doxygen/classnlohmann_1_1basic__json_af1592a06bc63811886ade4f9d965045e.html#af1592a06bc63811886ade4f9d965045e"><code>iterator_wrapper</code></a> are deprecated. Please use the member function <a href="http://nlohmann.github.io/json/doxygen/classnlohmann_1_1basic__json_afe3e137ace692efa08590d8df40f58dd.html#afe3e137ace692efa08590d8df40f58dd"><code>items()</code></a> instead.</li> <li>Functions <a href="http://nlohmann.github.io/json/doxygen/classnlohmann_1_1basic__json_ab7285a92514fcdbe6de505ebaba92ea3.html#ab7285a92514fcdbe6de505ebaba92ea3"><code>friend std::istream&amp; operator&lt;&lt;(basic_json&amp;, std::istream&amp;)</code></a> and <a href="http://nlohmann.github.io/json/doxygen/classnlohmann_1_1basic__json_a9e06deabe69262c3ffc5533d32856983.html#a9e06deabe69262c3ffc5533d32856983"><code>friend std::ostream&amp; operator&gt;&gt;(const basic_json&amp;, std::ostream&amp;)</code></a> are deprecated. Please use <a href="http://nlohmann.github.io/json/doxygen/classnlohmann_1_1basic__json_aaf363408931d76472ded14017e59c9e8.html#aaf363408931d76472ded14017e59c9e8"><code>friend std::istream&amp; operator&gt;&gt;(std::istream&amp;, basic_json&amp;)</code></a> and <a href="http://nlohmann.github.io/json/doxygen/classnlohmann_1_1basic__json_a5e34c5435e557d0bf666bd7311211405.html#a5e34c5435e557d0bf666bd7311211405"><code>friend operator&lt;&lt;(std::ostream&amp;, const basic_json&amp;)</code></a> instead.</li> </ul> <h2 id=v370>v3.7.0<a class=headerlink href=#v370 title="Permanent link">&para;</a></h2> <div class="admonition summary"> <p class=admonition-title>Files</p> <ul> <li><a href="https://github.com/nlohmann/json/releases/download/v3.7.0/include.zip">include.zip</a> (143 KB)</li> <li><a href="https://github.com/nlohmann/json/releases/download/v3.7.0/include.zip.asc">include.zip.asc</a> (1 KB)</li> <li><a href="https://github.com/nlohmann/json/releases/download/v3.7.0/json.hpp">json.hpp</a> (782 KB)</li> <li><a href="https://github.com/nlohmann/json/releases/download/v3.7.0/json.hpp.asc">json.hpp.asc</a> (1 KB)</li> </ul> </div> <p>Release date: 2019-07-28 <abbr title="Secure Hash Algorithm">SHA</abbr>-256: a503214947952b69f0062f572cb74c17582a495767446347ce2e452963fc2ca4 (json.hpp), 541c34438fd54182e9cdc68dd20c898d766713ad6d901fb2c6e28ff1f1e7c10d (include.zip)</p> <h3 id=summary_3>Summary<a class=headerlink href=#summary_3 title="Permanent link">&para;</a></h3> <p>This release introduces a few convenience functions and performs a lot of house keeping (bug fixes and small improvements). All changes are backward-compatible.</p> <h3 id=new-features><img alt="✨" class="twemoji" src="../../assets/external/cdn.jsdelivr.net/gh/jdecked/twemoji@16.0.1/assets/svg/2728.svg" title=":sparkles:"> New Features<a class=headerlink href=#new-features title="Permanent link">&para;</a></h3> <ul> <li>Add overload of the <strong><a href="http://nlohmann.github.io/json/doxygen/classnlohmann_1_1basic__json_ab23b04802eb9da97dc3f664e54e09cb3.html#ab23b04802eb9da97dc3f664e54e09cb3"><code>contains</code></a> function</strong> to check if a <abbr title="JavaScript Object Notation">JSON</abbr> pointer is valid without throwing exceptions, just like its <a href="http://nlohmann.github.io/json/doxygen/classnlohmann_1_1basic__json_a9286acdc0578fc66e9346323e69fc0e3.html#a9286acdc0578fc66e9346323e69fc0e3">counterpart for object keys</a>. #1600</li> <li>Add a function <strong><a href="http://nlohmann.github.io/json/doxygen/namespacenlohmann_a6ce645a0b8717757e096a5b5773b7a16.html#a6ce645a0b8717757e096a5b5773b7a16"><code>to_string</code></a></strong> to allow for generic conversion to strings. #916 #1585</li> <li>Add <strong>return value for the <a href="http://nlohmann.github.io/json/doxygen/classnlohmann_1_1basic__json_abf29131f898b05aad2c01a9c80e7a002.html#abf29131f898b05aad2c01a9c80e7a002"><code>emplace_back</code></a> function</strong>, returning a reference to the added element just like C++17 is <a href="https://en.cppreference.com/w/cpp/container/vector/emplace_back">introducing this</a> for <code>std::vector</code>. #1609</li> <li>Add info how to use the library with the <strong><a href="https://wiki.archlinux.org/index.php/pacman">pacman</a> package manager</strong> on MSYS2. #1670</li> </ul> <h3 id=bug-fixes_3><img alt="🐛" class="twemoji" src="../../assets/external/cdn.jsdelivr.net/gh/jdecked/twemoji@16.0.1/assets/svg/1f41b.svg" title=":bug:"> Bug Fixes<a class=headerlink href=#bug-fixes_3 title="Permanent link">&para;</a></h3> <ul> <li>Fix an issue where typedefs with certain names yielded a compilation error. #1642 #1643</li> <li>Fix a conversion to <code>std::string_view</code> in the unit tests. #1634 #1639</li> <li>Fix <abbr title="Microsoft Visual C++">MSVC</abbr> Debug build. #1536 #1570 #1608</li> <li>Fix <a href="https://nlohmann.github.io/json/classnlohmann_1_1basic__json_a65753c68f06639eda0d355f919564e01.html#a65753c68f06639eda0d355f919564e01"><code>get_to</code></a> method to clear existing content before writing. #1511 #1555</li> <li>Fix a <code>-Wc++17-extensions</code> warning. <code>nodiscard</code> attributes are now only used with Clang when <code>-std=c++17</code> is used. #1535 #1551</li> </ul> <h3 id=improvements_1><img alt="⚡" class="twemoji" src="../../assets/external/cdn.jsdelivr.net/gh/jdecked/twemoji@16.0.1/assets/svg/26a1.svg" title=":zap:"> Improvements<a class=headerlink href=#improvements_1 title="Permanent link">&para;</a></h3> <ul> <li>Switch from <a href="https://github.com/philsquared/Catch">Catch</a> to <strong><a href="https://github.com/onqtam/doctest">doctest</a></strong> for the unit tests which speeds up compilation and runtime of the 112,112,308 tests.</li> <li>Add an explicit section to the <a href="https://github.com/nlohmann/json/blob/develop/README.md">README</a> about the <strong>frequently addressed topics</strong> <a href="https://github.com/nlohmann/json#character-encoding">character encoding</a>, <a href="https://github.com/nlohmann/json#comments-in-json">comments in <abbr title="JavaScript Object Notation">JSON</abbr></a>, and the <a href="https://github.com/nlohmann/json#order-of-object-keys">order of object keys</a>.</li> </ul> <h3 id=further-changes_2><img alt="🔨" class="twemoji" src="../../assets/external/cdn.jsdelivr.net/gh/jdecked/twemoji@16.0.1/assets/svg/1f528.svg" title=":hammer:"> Further Changes<a class=headerlink href=#further-changes_2 title="Permanent link">&para;</a></h3> <ul> <li>Use <a href="https://cmake.org/cmake/help/v3.0/module/GNUInstallDirs.html"><code>GNUInstallDirs</code></a> to set library install directories. #1673</li> <li>Fix links in the <a href="https://github.com/nlohmann/json/blob/develop/README.md">README</a>. #1620 #1621 #1622 #1623 #1625</li> <li>Mention <a href="http://nlohmann.github.io/json/doxygen/namespacenlohmann_a2bfd99e845a2e5cd90aeaf1b1431f474.html#a2bfd99e845a2e5cd90aeaf1b1431f474"><code>json</code> type</a> on the <a href="http://nlohmann.github.io/json/doxygen/index.html">documentation start page</a>. #1616</li> <li>Complete documentation of <a href="http://nlohmann.github.io/json/doxygen/classnlohmann_1_1basic__json_adcf8ca5079f5db993820bf50036bf45d.html#adcf8ca5079f5db993820bf50036bf45d"><code>value()</code> function</a> with respect to <code>type_error.302</code> exception. #1601</li> <li>Fix links in the documentation. #1598</li> <li>Add regression tests for <abbr title="Microsoft Visual C++">MSVC</abbr>. #1543 #1570</li> <li>Use <strong><a href="http://circleci.com">CircleCI</a></strong> for <a href="https://circleci.com/gh/nlohmann/json">continuous integration</a>.</li> <li>Use <strong><a href="https://doozer.io">Doozer</a></strong> for <a href="https://doozer.io/nlohmann/json">continuous integration</a> on Linux (CentOS, Raspbian, Fedora)</li> <li>Add tests to check each CMake flag (<code>JSON_BuildTests</code>, <code>JSON_Install</code>, <code>JSON_MultipleHeaders</code>, <code>JSON_Sanitizer</code>, <code>JSON_Valgrind</code>, <code>JSON_NoExceptions</code>, <code>JSON_Coverage</code>).</li> <li>Use <a href="https://nemequ.github.io/hedley/">Hedley</a> to avoid re-inventing several compiler-agnostic feature macros like <code>JSON_DEPRECATED</code>, <code>JSON_NODISCARD</code>, <code>JSON_LIKELY</code>, <code>JSON_UNLIKELY</code>, <code>JSON_HAS_CPP_14</code>, or <code>JSON_HAS_CPP_17</code>. Functions taking or returning pointers are annotated accordingly when a pointer will not be null.</li> <li>Build and run tests on <a href="https://ci.appveyor.com/project/nlohmann/json">AppVeyor</a> in DEBUG and RELEASE mode.</li> </ul> <h3 id=deprecated-functions_3><img alt="🔥" class="twemoji" src="../../assets/external/cdn.jsdelivr.net/gh/jdecked/twemoji@16.0.1/assets/svg/1f525.svg" title=":fire:"> Deprecated functions<a class=headerlink href=#deprecated-functions_3 title="Permanent link">&para;</a></h3> <p>This release does not deprecate any functions. As an overview, the following functions have been deprecated in earlier versions and will be removed in the next major version (i.e., 4.0.0):</p> <ul> <li>Function <a href="http://nlohmann.github.io/json/doxygen/classnlohmann_1_1basic__json_af1592a06bc63811886ade4f9d965045e.html#af1592a06bc63811886ade4f9d965045e"><code>iterator_wrapper</code></a> are deprecated. Please use the member function <a href="http://nlohmann.github.io/json/doxygen/classnlohmann_1_1basic__json_afe3e137ace692efa08590d8df40f58dd.html#afe3e137ace692efa08590d8df40f58dd"><code>items()</code></a> instead.</li> <li>Functions <a href="http://nlohmann.github.io/json/doxygen/classnlohmann_1_1basic__json_ab7285a92514fcdbe6de505ebaba92ea3.html#ab7285a92514fcdbe6de505ebaba92ea3"><code>friend std::istream&amp; operator&lt;&lt;(basic_json&amp;, std::istream&amp;)</code></a> and <a href="http://nlohmann.github.io/json/doxygen/classnlohmann_1_1basic__json_a9e06deabe69262c3ffc5533d32856983.html#a9e06deabe69262c3ffc5533d32856983"><code>friend std::ostream&amp; operator&gt;&gt;(const basic_json&amp;, std::ostream&amp;)</code></a> are deprecated. Please use <a href="http://nlohmann.github.io/json/doxygen/classnlohmann_1_1basic__json_aaf363408931d76472ded14017e59c9e8.html#aaf363408931d76472ded14017e59c9e8"><code>friend std::istream&amp; operator&gt;&gt;(std::istream&amp;, basic_json&amp;)</code></a> and <a href="http://nlohmann.github.io/json/doxygen/classnlohmann_1_1basic__json_a5e34c5435e557d0bf666bd7311211405.html#a5e34c5435e557d0bf666bd7311211405"><code>friend operator&lt;&lt;(std::ostream&amp;, const basic_json&amp;)</code></a> instead.</li> </ul> <h2 id=v361>v3.6.1<a class=headerlink href=#v361 title="Permanent link">&para;</a></h2> <div class="admonition summary"> <p class=admonition-title>Files</p> <ul> <li><a href="https://github.com/nlohmann/json/releases/download/v3.6.1/include.zip">include.zip</a> (136 KB)</li> <li><a href="https://github.com/nlohmann/json/releases/download/v3.6.1/include.zip.asc">include.zip.asc</a> (1 KB)</li> <li><a href="https://github.com/nlohmann/json/releases/download/v3.6.1/json.hpp">json.hpp</a> (711 KB)</li> <li><a href="https://github.com/nlohmann/json/releases/download/v3.6.1/json.hpp.asc">json.hpp.asc</a> (1 KB)</li> </ul> </div> <p>Release date: 2019-03-20 <abbr title="Secure Hash Algorithm">SHA</abbr>-256: d2eeb25d2e95bffeb08ebb7704cdffd2e8fca7113eba9a0b38d60a5c391ea09a (json.hpp), 69cc88207ce91347ea530b227ff0776db82dcb8de6704e1a3d74f4841bc651cf (include.zip)</p> <h3 id=summary_4>Summary<a class=headerlink href=#summary_4 title="Permanent link">&para;</a></h3> <p>This release <strong>fixes a regression and a bug</strong> introduced by the earlier 3.6.0 release. All changes are backward-compatible.</p> <h3 id=bug-fixes_4><img alt="🐛" class="twemoji" src="../../assets/external/cdn.jsdelivr.net/gh/jdecked/twemoji@16.0.1/assets/svg/1f41b.svg" title=":bug:"> Bug Fixes<a class=headerlink href=#bug-fixes_4 title="Permanent link">&para;</a></h3> <ul> <li>Fixed regression of #590 which could lead to compilation errors with <abbr title="GNU Compiler Collection">GCC</abbr> 7 and <abbr title="GNU Compiler Collection">GCC</abbr> 8. #1530</li> <li>Fixed a compilation error when <code>&lt;Windows.h&gt;</code> was included. #1531</li> </ul> <h3 id=further-changes_3><img alt="🔨" class="twemoji" src="../../assets/external/cdn.jsdelivr.net/gh/jdecked/twemoji@16.0.1/assets/svg/1f528.svg" title=":hammer:"> Further Changes<a class=headerlink href=#further-changes_3 title="Permanent link">&para;</a></h3> <ul> <li>Fixed a warning for missing field initializers. #1527</li> </ul> <h3 id=deprecated-functions_4><img alt="🔥" class="twemoji" src="../../assets/external/cdn.jsdelivr.net/gh/jdecked/twemoji@16.0.1/assets/svg/1f525.svg" title=":fire:"> Deprecated functions<a class=headerlink href=#deprecated-functions_4 title="Permanent link">&para;</a></h3> <p>This release does not deprecate any functions. As an overview, the following functions have been deprecated in earlier versions and will be removed in the next major version (i.e., 4.0.0):</p> <ul> <li>Function <a href="http://nlohmann.github.io/json/doxygen/classnlohmann_1_1basic__json_af1592a06bc63811886ade4f9d965045e.html#af1592a06bc63811886ade4f9d965045e"><code>iterator_wrapper</code></a> are deprecated. Please use the member function <a href="http://nlohmann.github.io/json/doxygen/classnlohmann_1_1basic__json_afe3e137ace692efa08590d8df40f58dd.html#afe3e137ace692efa08590d8df40f58dd"><code>items()</code></a> instead.</li> <li>Functions <a href="http://nlohmann.github.io/json/doxygen/classnlohmann_1_1basic__json_ab7285a92514fcdbe6de505ebaba92ea3.html#ab7285a92514fcdbe6de505ebaba92ea3"><code>friend std::istream&amp; operator&lt;&lt;(basic_json&amp;, std::istream&amp;)</code></a> and <a href="http://nlohmann.github.io/json/doxygen/classnlohmann_1_1basic__json_a9e06deabe69262c3ffc5533d32856983.html#a9e06deabe69262c3ffc5533d32856983"><code>friend std::ostream&amp; operator&gt;&gt;(const basic_json&amp;, std::ostream&amp;)</code></a> are deprecated. Please use <a href="http://nlohmann.github.io/json/doxygen/classnlohmann_1_1basic__json_aaf363408931d76472ded14017e59c9e8.html#aaf363408931d76472ded14017e59c9e8"><code>friend std::istream&amp; operator&gt;&gt;(std::istream&amp;, basic_json&amp;)</code></a> and <a href="http://nlohmann.github.io/json/doxygen/classnlohmann_1_1basic__json_a5e34c5435e557d0bf666bd7311211405.html#a5e34c5435e557d0bf666bd7311211405"><code>friend operator&lt;&lt;(std::ostream&amp;, const basic_json&amp;)</code></a> instead.</li> </ul> <h2 id=v360>v3.6.0<a class=headerlink href=#v360 title="Permanent link">&para;</a></h2> <div class="admonition summary"> <p class=admonition-title>Files</p> <ul> <li><a href="https://github.com/nlohmann/json/releases/download/v3.6.0/include.zip">include.zip</a> (136 KB)</li> <li><a href="https://github.com/nlohmann/json/releases/download/v3.6.0/include.zip.asc">include.zip.asc</a> (1 KB)</li> <li><a href="https://github.com/nlohmann/json/releases/download/v3.6.0/json.hpp">json.hpp</a> (711 KB)</li> <li><a href="https://github.com/nlohmann/json/releases/download/v3.6.0/json.hpp.asc">json.hpp.asc</a> (1 KB)</li> </ul> </div> <p>Release date: 2019-03-20 <abbr title="Secure Hash Algorithm">SHA</abbr>-256: ce9839370f28094c71107c405affb3b08c4a098154988014cbb0800b1c44a831 (json.hpp), 237c5e66e7f8186a02804ce9dbd5f69ce89fe7424ef84adf6142e973bd9532f4 (include.zip)</p> <p>ℹ️ <strong>This release introduced a regression. Please update to <a href="https://github.com/nlohmann/json/releases/tag/v3.6.1">version 3.6.1</a>!</strong></p> <h3 id=summary_5>Summary<a class=headerlink href=#summary_5 title="Permanent link">&para;</a></h3> <p>This release adds some <strong>convenience functions for <abbr title="JavaScript Object Notation">JSON</abbr> Pointers</strong>, introduces a <a href="http://nlohmann.github.io/json/doxygen/classnlohmann_1_1basic__json_a0a45fc740637123fdf05fef970f8be47.html#a0a45fc740637123fdf05fef970f8be47"><code>contains</code></a> function to check if a key is present in an object, and improves the <strong>performance of integer serialization</strong>. Furthermore, a lot of small bug fixes and improvements have been made. All changes are backward-compatible.</p> <h3 id=new-features_1><img alt="✨" class="twemoji" src="../../assets/external/cdn.jsdelivr.net/gh/jdecked/twemoji@16.0.1/assets/svg/2728.svg" title=":sparkles:"> New Features<a class=headerlink href=#new-features_1 title="Permanent link">&para;</a></h3> <ul> <li>Overworked the public interface for <abbr title="JavaScript Object Notation">JSON</abbr> Pointers. The creation of <abbr title="JavaScript Object Notation">JSON</abbr> Pointers is simplified with <a href="http://nlohmann.github.io/json/doxygen/classnlohmann_1_1json__pointer_a90a11fe6c7f37b1746a3ff9cb24b0d53.html#a90a11fe6c7f37b1746a3ff9cb24b0d53"><code>operator/</code></a> and <a href="http://nlohmann.github.io/json/doxygen/classnlohmann_1_1json__pointer_a7395bd0af29ac23fd3f21543c935cdfa.html#a7395bd0af29ac23fd3f21543c935cdfa"><code>operator/=</code></a>. <abbr title="JavaScript Object Notation">JSON</abbr> Pointers can be inspected with <a href="http://nlohmann.github.io/json/doxygen/classnlohmann_1_1json__pointer_a649252bda4a2e75a0915b11a25d8bcc3.html#a649252bda4a2e75a0915b11a25d8bcc3"><code>empty</code></a>, <a href="http://nlohmann.github.io/json/doxygen/classnlohmann_1_1json__pointer_a6bd5b554c10f15672135c216893eef31.html#a6bd5b554c10f15672135c216893eef31"><code>back</code></a>, and <a href="http://nlohmann.github.io/json/doxygen/classnlohmann_1_1json__pointer_afdaacce1edb7145e0434e014f0e8685a.html#afdaacce1edb7145e0434e014f0e8685a"><code>parent_pointer</code></a>, and manipulated with <a href="http://nlohmann.github.io/json/doxygen/classnlohmann_1_1json__pointer_a697d12b5bd6205f8866691b166b7c7dc.html#a697d12b5bd6205f8866691b166b7c7dc"><code>push_back</code></a> and <a href="http://nlohmann.github.io/json/doxygen/classnlohmann_1_1json__pointer_a4b1ee4d511ca195bed896a3da47e264c.html#a4b1ee4d511ca195bed896a3da47e264c"><code>pop_back</code></a>. #1434</li> <li>Added a boolean method <a href="http://nlohmann.github.io/json/doxygen/classnlohmann_1_1basic__json_a0a45fc740637123fdf05fef970f8be47.html#a0a45fc740637123fdf05fef970f8be47"><code>contains</code></a> to check whether an element exists in a <abbr title="JavaScript Object Notation">JSON</abbr> object with a given key. Returns false when called on non-object types. #1471 #1474</li> </ul> <h3 id=bug-fixes_5><img alt="🐛" class="twemoji" src="../../assets/external/cdn.jsdelivr.net/gh/jdecked/twemoji@16.0.1/assets/svg/1f41b.svg" title=":bug:"> Bug Fixes<a class=headerlink href=#bug-fixes_5 title="Permanent link">&para;</a></h3> <ul> <li>Fixed a compilation issues with libc 2.12. #1483 #1514</li> <li>Fixed endian conversion on PPC64. #1489</li> <li>Fixed library to compile with <abbr title="GNU Compiler Collection">GCC</abbr> 9. #1472 #1492</li> <li>Fixed a compilation issue with <abbr title="GNU Compiler Collection">GCC</abbr> 7 on CentOS. #1496</li> <li>Fixed an integer overflow. #1447</li> <li>Fixed buffer flushing in serializer. #1445 #1446</li> </ul> <h3 id=improvements_2><img alt="⚡" class="twemoji" src="../../assets/external/cdn.jsdelivr.net/gh/jdecked/twemoji@16.0.1/assets/svg/26a1.svg" title=":zap:"> Improvements<a class=headerlink href=#improvements_2 title="Permanent link">&para;</a></h3> <ul> <li>The performance of dumping integers has been greatly improved. #1411</li> <li>Added CMake parameter <code>JSON_Install</code> to control whether the library should be installed (default: on). #1330</li> <li>Fixed a lot of compiler and linter warnings. #1400 #1435 #1502</li> <li>Reduced required CMake version from 3.8 to 3.1. #1409 #1428 #1441 #1498</li> <li>Added <code>nodiscard</code> attribute to <code>meta()</code>, <code>array()</code>, <code>object()</code>, <code>from_cbor</code>, <code>from_msgpack</code>, <code>from_ubjson</code>, <code>from_bson</code>, and <code>parse</code>. #1433</li> </ul> <h3 id=further-changes_4><img alt="🔨" class="twemoji" src="../../assets/external/cdn.jsdelivr.net/gh/jdecked/twemoji@16.0.1/assets/svg/1f528.svg" title=":hammer:"> Further Changes<a class=headerlink href=#further-changes_4 title="Permanent link">&para;</a></h3> <ul> <li>Added missing headers. #1500</li> <li>Fixed typos and broken links in README. #1417 #1423 #1425 #1451 #1455 #1491</li> <li>Fixed documentation of parse function. #1473</li> <li>Suppressed warning that cannot be fixed inside the library. #1401 #1468</li> <li>Improved package manager suppert:<ul> <li>Updated Buckaroo instructions. #1495</li> <li>Improved Meson support. #1463</li> <li>Added Conda package manager documentation. #1430</li> <li>Added NuGet package manager documentation. #1132</li> </ul> </li> <li>Continuous Integration<ul> <li>Removed unstable or deprecated Travis builders (Xcode 6.4 - 8.2) and added Xcode 10.1 builder.</li> <li>Added Clang 7 to Travis <abbr title="Continuous Integration">CI</abbr>.</li> <li>Fixed AppVeyor x64 builds. #1374 #1414</li> </ul> </li> <li>Updated thirdparty libraries:<ul> <li>Catch 1.12.0 -&gt; 1.12.2</li> <li>Google Benchmark 1.3.0 -&gt; 1.4.1</li> <li>Doxygen 1.8.15 -&gt; 1.8.16</li> </ul> </li> </ul> <h3 id=deprecated-functions_5><img alt="🔥" class="twemoji" src="../../assets/external/cdn.jsdelivr.net/gh/jdecked/twemoji@16.0.1/assets/svg/1f525.svg" title=":fire:"> Deprecated functions<a class=headerlink href=#deprecated-functions_5 title="Permanent link">&para;</a></h3> <p>This release does not deprecate any functions. As an overview, the following functions have been deprecated in earlier versions and will be removed in the next major version (i.e., 4.0.0):</p> <ul> <li>Function <a href="http://nlohmann.github.io/json/doxygen/classnlohmann_1_1basic__json_af1592a06bc63811886ade4f9d965045e.html#af1592a06bc63811886ade4f9d965045e"><code>iterator_wrapper</code></a> are deprecated. Please use the member function <a href="http://nlohmann.github.io/json/doxygen/classnlohmann_1_1basic__json_afe3e137ace692efa08590d8df40f58dd.html#afe3e137ace692efa08590d8df40f58dd"><code>items()</code></a> instead.</li> <li>Functions <a href="http://nlohmann.github.io/json/doxygen/classnlohmann_1_1basic__json_ab7285a92514fcdbe6de505ebaba92ea3.html#ab7285a92514fcdbe6de505ebaba92ea3"><code>friend std::istream&amp; operator&lt;&lt;(basic_json&amp;, std::istream&amp;)</code></a> and <a href="http://nlohmann.github.io/json/doxygen/classnlohmann_1_1basic__json_a9e06deabe69262c3ffc5533d32856983.html#a9e06deabe69262c3ffc5533d32856983"><code>friend std::ostream&amp; operator&gt;&gt;(const basic_json&amp;, std::ostream&amp;)</code></a> are deprecated. Please use <a href="http://nlohmann.github.io/json/doxygen/classnlohmann_1_1basic__json_aaf363408931d76472ded14017e59c9e8.html#aaf363408931d76472ded14017e59c9e8"><code>friend std::istream&amp; operator&gt;&gt;(std::istream&amp;, basic_json&amp;)</code></a> and <a href="http://nlohmann.github.io/json/doxygen/classnlohmann_1_1basic__json_a5e34c5435e557d0bf666bd7311211405.html#a5e34c5435e557d0bf666bd7311211405"><code>friend operator&lt;&lt;(std::ostream&amp;, const basic_json&amp;)</code></a> instead.</li> </ul> <h2 id=v350>v3.5.0<a class=headerlink href=#v350 title="Permanent link">&para;</a></h2> <div class="admonition summary"> <p class=admonition-title>Files</p> <ul> <li><a href="https://github.com/nlohmann/json/releases/download/v3.5.0/include.zip">include.zip</a> (133 KB)</li> <li><a href="https://github.com/nlohmann/json/releases/download/v3.5.0/include.zip.asc">include.zip.asc</a> (1 KB)</li> <li><a href="https://github.com/nlohmann/json/releases/download/v3.5.0/json.hpp">json.hpp</a> (693 KB)</li> <li><a href="https://github.com/nlohmann/json/releases/download/v3.5.0/json.hpp.asc">json.hpp.asc</a> (1 KB)</li> </ul> </div> <p>Release date: 2018-12-22 <abbr title="Secure Hash Algorithm">SHA</abbr>-256: 8a6dbf3bf01156f438d0ca7e78c2971bca50eec4ca6f0cf59adf3464c43bb9d5 (json.hpp), 3564da9c5b0cf2e032f97c69baedf10ddbc98030c337d0327a215ea72259ea21 (include.zip)</p> <h3 id=summary_6>Summary<a class=headerlink href=#summary_6 title="Permanent link">&para;</a></h3> <p>This release introduces the support for <strong>structured bindings</strong> and reading from <strong><code>FILE*</code></strong>. Besides, a few bugs have been fixed. All changes are backward-compatible.</p> <h3 id=new-features_2><img alt="✨" class="twemoji" src="../../assets/external/cdn.jsdelivr.net/gh/jdecked/twemoji@16.0.1/assets/svg/2728.svg" title=":sparkles:"> New Features<a class=headerlink href=#new-features_2 title="Permanent link">&para;</a></h3> <ul> <li> <p><strong>Structured bindings</strong> are now supported for <abbr title="JavaScript Object Notation">JSON</abbr> objects and arrays via the <a href="https://nlohmann.github.io/json/classnlohmann_1_1basic__json_afe3e137ace692efa08590d8df40f58dd.html#afe3e137ace692efa08590d8df40f58dd"><code>items()</code></a> member function, so finally this code is possible: <div class=highlight><pre><span></span><code><span class=k>for</span><span class=w> </span><span class=p>(</span><span class=k>auto</span><span class=o>&amp;</span><span class=w> </span><span class=p>[</span><span class=n>key</span><span class=p>,</span><span class=w> </span><span class=n>val</span><span class=p>]</span><span class=w> </span><span class=o>:</span><span class=w> </span><span class=n>j</span><span class=p>.</span><span class=n>items</span><span class=p>())</span><span class=w> </span><span class=p>{</span>
-<span class=w>    </span><span class=n>std</span><span class=o>::</span><span class=n>cout</span><span class=w> </span><span class=o>&lt;&lt;</span><span class=w> </span><span class=n>key</span><span class=w> </span><span class=o>&lt;&lt;</span><span class=w> </span><span class=sc>&#39;:&#39;</span><span class=w> </span><span class=o>&lt;&lt;</span><span class=w> </span><span class=n>val</span><span class=w> </span><span class=o>&lt;&lt;</span><span class=w> </span><span class=sc>&#39;\n&#39;</span><span class=p>;</span>
-<span class=p>}</span>
-</code></pre></div> #1388 #1391</p> </li> <li> <p>Added support for <strong>reading from <code>FILE*</code></strong> to support situations in which streams are nit available or would require too much RAM. #1370 #1392</p> </li> </ul> <h3 id=bug-fixes_6><img alt="🐛" class="twemoji" src="../../assets/external/cdn.jsdelivr.net/gh/jdecked/twemoji@16.0.1/assets/svg/1f41b.svg" title=":bug:"> Bug Fixes<a class=headerlink href=#bug-fixes_6 title="Permanent link">&para;</a></h3> <ul> <li>The <code>eofbit</code> was not set for input streams when the end of a stream was reached while parsing. #1340 #1343</li> <li>Fixed a bug in the <abbr title="Simple API for XML">SAX</abbr> parser for <abbr title="Binary JSON">BSON</abbr> arrays.</li> </ul> <h3 id=improvements_3><img alt="⚡" class="twemoji" src="../../assets/external/cdn.jsdelivr.net/gh/jdecked/twemoji@16.0.1/assets/svg/26a1.svg" title=":zap:"> Improvements<a class=headerlink href=#improvements_3 title="Permanent link">&para;</a></h3> <ul> <li>Added support for Clang 5.0.1 (PS4 version). #1341 #1342</li> </ul> <h3 id=further-changes_5><img alt="🔨" class="twemoji" src="../../assets/external/cdn.jsdelivr.net/gh/jdecked/twemoji@16.0.1/assets/svg/1f528.svg" title=":hammer:"> Further Changes<a class=headerlink href=#further-changes_5 title="Permanent link">&para;</a></h3> <ul> <li>Added a warning for implicit conversions to the documentation: It is not recommended to use implicit conversions when reading <strong>from</strong> a <abbr title="JavaScript Object Notation">JSON</abbr> value. Details about this recommendation can be found <a href="https://www.github.com/nlohmann/json/issues/958">here</a>. #1363</li> <li>Fixed typos in the documentation. #1329 #1380 #1382</li> <li>Fixed a C4800 warning. #1364</li> <li>Fixed a <code>-Wshadow</code> warning #1346</li> <li>Wrapped <code>std::snprintf</code> calls to avoid error in <abbr title="Microsoft Visual C++">MSVC</abbr>. #1337</li> <li>Added code to allow installation via Meson. #1345</li> </ul> <h3 id=deprecated-functions_6><img alt="🔥" class="twemoji" src="../../assets/external/cdn.jsdelivr.net/gh/jdecked/twemoji@16.0.1/assets/svg/1f525.svg" title=":fire:"> Deprecated functions<a class=headerlink href=#deprecated-functions_6 title="Permanent link">&para;</a></h3> <p>This release does not deprecate any functions. As an overview, the following functions have been deprecated in earlier versions and will be removed in the next major version (i.e., 4.0.0):</p> <ul> <li>Function <a href="http://nlohmann.github.io/json/doxygen/classnlohmann_1_1basic__json_af1592a06bc63811886ade4f9d965045e.html#af1592a06bc63811886ade4f9d965045e"><code>iterator_wrapper</code></a> are deprecated. Please use the member function <a href="http://nlohmann.github.io/json/doxygen/classnlohmann_1_1basic__json_afe3e137ace692efa08590d8df40f58dd.html#afe3e137ace692efa08590d8df40f58dd"><code>items()</code></a> instead.</li> <li>Functions <a href="http://nlohmann.github.io/json/doxygen/classnlohmann_1_1basic__json_ab7285a92514fcdbe6de505ebaba92ea3.html#ab7285a92514fcdbe6de505ebaba92ea3"><code>friend std::istream&amp; operator&lt;&lt;(basic_json&amp;, std::istream&amp;)</code></a> and <a href="http://nlohmann.github.io/json/doxygen/classnlohmann_1_1basic__json_a9e06deabe69262c3ffc5533d32856983.html#a9e06deabe69262c3ffc5533d32856983"><code>friend std::ostream&amp; operator&gt;&gt;(const basic_json&amp;, std::ostream&amp;)</code></a> are deprecated. Please use <a href="http://nlohmann.github.io/json/doxygen/classnlohmann_1_1basic__json_aaf363408931d76472ded14017e59c9e8.html#aaf363408931d76472ded14017e59c9e8"><code>friend std::istream&amp; operator&gt;&gt;(std::istream&amp;, basic_json&amp;)</code></a> and <a href="http://nlohmann.github.io/json/doxygen/classnlohmann_1_1basic__json_a5e34c5435e557d0bf666bd7311211405.html#a5e34c5435e557d0bf666bd7311211405"><code>friend operator&lt;&lt;(std::ostream&amp;, const basic_json&amp;)</code></a> instead.</li> </ul> <h2 id=v340>v3.4.0<a class=headerlink href=#v340 title="Permanent link">&para;</a></h2> <div class="admonition summary"> <p class=admonition-title>Files</p> <ul> <li><a href="https://github.com/nlohmann/json/releases/download/v3.4.0/include.zip">include.zip</a> (132 KB)</li> <li><a href="https://github.com/nlohmann/json/releases/download/v3.4.0/include.zip.asc">include.zip.asc</a> (1 KB)</li> <li><a href="https://github.com/nlohmann/json/releases/download/v3.4.0/json.hpp">json.hpp</a> (689 KB)</li> <li><a href="https://github.com/nlohmann/json/releases/download/v3.4.0/json.hpp.asc">json.hpp.asc</a> (1 KB)</li> </ul> </div> <p>Release date: 2018-10-30 <abbr title="Secure Hash Algorithm">SHA</abbr>-256: 63da6d1f22b2a7bb9e4ff7d6b255cf691a161ff49532dcc45d398a53e295835f (json.hpp), bfec46fc0cee01c509cf064d2254517e7fa80d1e7647fea37cf81d97c5682bdc (include.zip)</p> <h3 id=summary_7>Summary<a class=headerlink href=#summary_7 title="Permanent link">&para;</a></h3> <p>This release introduces three new features:</p> <ul> <li><strong><abbr title="Binary JSON">BSON</abbr> (Binary <abbr title="JavaScript Object Notation">JSON</abbr>)</strong> is next to <abbr title="Concise Binary Object Representation">CBOR</abbr>, MessagePack, and <abbr title="Universal Binary JSON">UBJSON</abbr> the fourth binary (de)serialization format supported by the library.</li> <li><strong>Adjustable error handlers for invalid Unicode</strong> allows to specify the behavior when invalid byte sequences are serialized.</li> <li><strong>Simplified enum/<abbr title="JavaScript Object Notation">JSON</abbr> mapping</strong> with a macro in case the default mapping to integers is not desired.</li> </ul> <p>Furthermore, some effort has been invested in improving the <strong>parse error messages</strong>. Besides, a few bugs have been fixed. All changes are backward-compatible.</p> <h3 id=new-features_3><img alt="✨" class="twemoji" src="../../assets/external/cdn.jsdelivr.net/gh/jdecked/twemoji@16.0.1/assets/svg/2728.svg" title=":sparkles:"> New Features<a class=headerlink href=#new-features_3 title="Permanent link">&para;</a></h3> <ul> <li>The library can read and write a subset of <strong><a href="http://bsonspec.org/"><abbr title="Binary JSON">BSON</abbr></a> (Binary <abbr title="JavaScript Object Notation">JSON</abbr>)</strong>. All data types known from <abbr title="JavaScript Object Notation">JSON</abbr> are supported, whereas other types more tied to MongoDB such as timestamps, object ids, or binary data are currently not implemented. See <a href="https://github.com/nlohmann/json#binary-formats-bson-cbor-messagepack-and-ubjson">the README</a> for examples. #1244 #1320</li> <li>The behavior when the library encounters an invalid Unicode sequence during serialization can now be controlled by defining one of three <strong>Unicode error handlers</strong>: (1) throw an exception (default behavior), (2) replace invalid sequences by the Unicode replacement character (U+FFFD), or (3) ignore/filter invalid sequences. See the <a href="https://nlohmann.github.io/json/classnlohmann_1_1basic__json_a50ec80b02d0f3f51130d4abb5d1cfdc5.html#a50ec80b02d0f3f51130d4abb5d1cfdc5">documentation of the <code>dump</code> function</a> for examples. #1198 #1314</li> <li>To easily specify a user-defined <strong>enum/<abbr title="JavaScript Object Notation">JSON</abbr> mapping</strong>, a macro <code>NLOHMANN_JSON_SERIALIZE_ENUM</code> has been introduced. See the <a href="https://github.com/nlohmann/json#specializing-enum-conversion">README section</a> for more information. #1208 #1323</li> </ul> <h3 id=bug-fixes_7><img alt="🐛" class="twemoji" src="../../assets/external/cdn.jsdelivr.net/gh/jdecked/twemoji@16.0.1/assets/svg/1f41b.svg" title=":bug:"> Bug Fixes<a class=headerlink href=#bug-fixes_7 title="Permanent link">&para;</a></h3> <ul> <li>fixed truncation #1286 #1315</li> <li>fixed an issue with std::pair #1299 #1301</li> <li>fixed an issue with std::variant #1292 #1294</li> <li>fixed a bug in the <abbr title="JavaScript Object Notation">JSON</abbr> Pointer parser</li> </ul> <h3 id=improvements_4><img alt="⚡" class="twemoji" src="../../assets/external/cdn.jsdelivr.net/gh/jdecked/twemoji@16.0.1/assets/svg/26a1.svg" title=":zap:"> Improvements<a class=headerlink href=#improvements_4 title="Permanent link">&para;</a></h3> <ul> <li>The <strong>diagnosis messages for parse errors</strong> have been improved: error messages now indicated line/column positions where possible (in addition to a byte count) and also the context in which the error occurred (e.g., "while parsing a <abbr title="JavaScript Object Notation">JSON</abbr> string"). Example: error <code>parse error at 2: syntax error - invalid string: control character must be escaped; last read: '&lt;U+0009&gt;'</code> is now reported as <code>parse error at line 1, column 2: syntax error while parsing value - invalid string: control character U+0009 (HT) must be escaped to \u0009 or \t; last read: '&lt;U+0009&gt;'</code>. #1280 #1288 #1303</li> </ul> <h3 id=further-changes_6><img alt="🔨" class="twemoji" src="../../assets/external/cdn.jsdelivr.net/gh/jdecked/twemoji@16.0.1/assets/svg/1f528.svg" title=":hammer:"> Further Changes<a class=headerlink href=#further-changes_6 title="Permanent link">&para;</a></h3> <ul> <li>improved Meson documentation #1305</li> <li>fixed some more linter warnings #1280</li> <li>fixed Clang detection for third-party Google Benchmark library #1277</li> </ul> <h3 id=deprecated-functions_7><img alt="🔥" class="twemoji" src="../../assets/external/cdn.jsdelivr.net/gh/jdecked/twemoji@16.0.1/assets/svg/1f525.svg" title=":fire:"> Deprecated functions<a class=headerlink href=#deprecated-functions_7 title="Permanent link">&para;</a></h3> <p>This release does not deprecate any functions. As an overview, the following functions have been deprecated in earlier versions and will be removed in the next major version (i.e., 4.0.0):</p> <ul> <li>Function <a href="http://nlohmann.github.io/json/doxygen/classnlohmann_1_1basic__json_af1592a06bc63811886ade4f9d965045e.html#af1592a06bc63811886ade4f9d965045e"><code>iterator_wrapper</code></a> are deprecated. Please use the member function <a href="http://nlohmann.github.io/json/doxygen/classnlohmann_1_1basic__json_afe3e137ace692efa08590d8df40f58dd.html#afe3e137ace692efa08590d8df40f58dd"><code>items()</code></a> instead.</li> <li>Functions <a href="http://nlohmann.github.io/json/doxygen/classnlohmann_1_1basic__json_ab7285a92514fcdbe6de505ebaba92ea3.html#ab7285a92514fcdbe6de505ebaba92ea3"><code>friend std::istream&amp; operator&lt;&lt;(basic_json&amp;, std::istream&amp;)</code></a> and <a href="http://nlohmann.github.io/json/doxygen/classnlohmann_1_1basic__json_a9e06deabe69262c3ffc5533d32856983.html#a9e06deabe69262c3ffc5533d32856983"><code>friend std::ostream&amp; operator&gt;&gt;(const basic_json&amp;, std::ostream&amp;)</code></a> are deprecated. Please use <a href="http://nlohmann.github.io/json/doxygen/classnlohmann_1_1basic__json_aaf363408931d76472ded14017e59c9e8.html#aaf363408931d76472ded14017e59c9e8"><code>friend std::istream&amp; operator&gt;&gt;(std::istream&amp;, basic_json&amp;)</code></a> and <a href="http://nlohmann.github.io/json/doxygen/classnlohmann_1_1basic__json_a5e34c5435e557d0bf666bd7311211405.html#a5e34c5435e557d0bf666bd7311211405"><code>friend operator&lt;&lt;(std::ostream&amp;, const basic_json&amp;)</code></a> instead.</li> </ul> <h2 id=v330>v3.3.0<a class=headerlink href=#v330 title="Permanent link">&para;</a></h2> <div class="admonition summary"> <p class=admonition-title>Files</p> <ul> <li><a href="https://github.com/nlohmann/json/releases/download/v3.3.0/include.zip">include.zip</a> (123 KB)</li> <li><a href="https://github.com/nlohmann/json/releases/download/v3.3.0/include.zip.asc">include.zip.asc</a> (1 KB)</li> <li><a href="https://github.com/nlohmann/json/releases/download/v3.3.0/json.hpp">json.hpp</a> (635 KB)</li> <li><a href="https://github.com/nlohmann/json/releases/download/v3.3.0/json.hpp.asc">json.hpp.asc</a> (1 KB)</li> </ul> </div> <p>Release date: 2018-10-05 <abbr title="Secure Hash Algorithm">SHA</abbr>-256: f1327bb60c58757a3dd2b0c9c45d49503d571337681d950ec621f8374bcc14d4 (json.hpp), 9588d63557333aaa485e92221ec38014a85a6134e7486fe3441e0541a5a89576 (include.zip)</p> <h3 id=summary_8>Summary<a class=headerlink href=#summary_8 title="Permanent link">&para;</a></h3> <p>This release adds support for <strong><abbr title="GNU Compiler Collection">GCC</abbr> 4.8</strong>. Furthermore, it adds a function <a href="http://nlohmann.github.io/json/doxygen/classnlohmann_1_1basic__json_a8a3db7d78f74232d3a6fb8f1abf69709.html#a8a3db7d78f74232d3a6fb8f1abf69709"><strong><code>get_to</code></strong></a> to write a <abbr title="JavaScript Object Notation">JSON</abbr> value to a passed reference. Another topic of this release was the <strong>CMake support</strong> which has been overworked and documented.</p> <p>Besides, a lot of bugs have been fixed and slight improvements have been made. All changes are backward-compatible.</p> <h3 id=new-features_4><img alt="✨" class="twemoji" src="../../assets/external/cdn.jsdelivr.net/gh/jdecked/twemoji@16.0.1/assets/svg/2728.svg" title=":sparkles:"> New Features<a class=headerlink href=#new-features_4 title="Permanent link">&para;</a></h3> <ul> <li>The library can now also built with <strong><abbr title="GNU Compiler Collection">GCC</abbr> 4.8</strong>. Though this compiler does not fully support C++11, it can successfully compile and run the test suite. Note that bug <a href="https://gcc.gnu.org/bugzilla/show_bug.cgi?id=57824">57824</a> in <abbr title="GNU Compiler Collection">GCC</abbr> 4.8 still forbids to use multiline raw strings in arguments to macros. #1257</li> <li>Added new function <a href="http://nlohmann.github.io/json/doxygen/classnlohmann_1_1basic__json_a8a3db7d78f74232d3a6fb8f1abf69709.html#a8a3db7d78f74232d3a6fb8f1abf69709"><strong><code>get_to</code></strong></a> to write a <abbr title="JavaScript Object Notation">JSON</abbr> value to a passed reference. The destination type is automatically derived which allows more succinct code compared to the <code>get</code> function. #1227 #1231</li> </ul> <h3 id=bug-fixes_8><img alt="🐛" class="twemoji" src="../../assets/external/cdn.jsdelivr.net/gh/jdecked/twemoji@16.0.1/assets/svg/1f41b.svg" title=":bug:"> Bug Fixes<a class=headerlink href=#bug-fixes_8 title="Permanent link">&para;</a></h3> <ul> <li>Fixed a bug in the CMake file that made <code>target_link_libraries</code> to not properly include <code>nlohmann_json</code>. #1243 #1245 #1260</li> <li>Fixed a warning in <abbr title="Microsoft Visual C++">MSVC</abbr> 2017 complaining about a constexpr if. #1204 #1268 #1272</li> <li>Fixed a bug that prevented compilation with ICPC. #755 #1222</li> <li>Improved the <abbr title="Substitution failure is not an error">SFINAE</abbr> correctness to fix a bug in the conversion operator. #1237 #1238</li> <li>Fixed a <code>-Wctor-dtor-privacy</code> warning. #1224</li> <li>Fixed a warning on a lambda in unevaluated context. #1225 #1230</li> <li>Fixed a bug introduced in version 3.2.0 where defining <code>JSON_CATCH_USER</code> led to duplicate macro definition of <code>JSON_INTERNAL_CATCH</code>. #1213 #1214</li> <li>Fixed a bug that prevented compilation with Clang 3.4.2 in RHEL 7. #1179 #1249</li> </ul> <h3 id=improvements_5><img alt="⚡" class="twemoji" src="../../assets/external/cdn.jsdelivr.net/gh/jdecked/twemoji@16.0.1/assets/svg/26a1.svg" title=":zap:"> Improvements<a class=headerlink href=#improvements_5 title="Permanent link">&para;</a></h3> <ul> <li>Added <a href="https://github.com/nlohmann/json#cmake">documentation on CMake integration</a> of the library. #1270</li> <li>Changed the CMake file to use <code>find_package(nlohmann_json)</code> without installing the library. #1202</li> <li>Improved error messages in case <code>operator[]</code> is used with the wrong combination (json.exception.type_error.305) of <abbr title="JavaScript Object Notation">JSON</abbr> container type and argument type. Example: "cannot use operator[] with a string argument". #1220 #1221</li> <li>Added a license and version information to the Meson build file. #1252</li> <li>Removed static assertions to indicated missing <code>to_json</code> or <code>from_json</code> functions as such assertions do not play well with <abbr title="Substitution failure is not an error">SFINAE</abbr>. These assertions also led to problems with GMock. #960 #1212 #1228</li> <li>The test suite now does not wait forever if run in a wrong directory and input files are not found. #1262</li> <li>The test suite does not show deprecation warnings for deprecated functions which frequently led to confusion. #1271</li> </ul> <h3 id=further-changes_7><img alt="🔨" class="twemoji" src="../../assets/external/cdn.jsdelivr.net/gh/jdecked/twemoji@16.0.1/assets/svg/1f528.svg" title=":hammer:"> Further Changes<a class=headerlink href=#further-changes_7 title="Permanent link">&para;</a></h3> <ul> <li><abbr title="GNU Compiler Collection">GCC</abbr> 4.8 and Xcode 10 were added to the <a href="https://travis-ci.org/nlohmann/json">continuous integration suite</a> at Travis.</li> <li>Added <a href="https://lgtm.com/projects/g/nlohmann/json/context:cpp">lgtm</a> checks to pull requests.</li> <li>Added tests for CMake integration. #1260</li> </ul> <h3 id=deprecated-functions_8><img alt="🔥" class="twemoji" src="../../assets/external/cdn.jsdelivr.net/gh/jdecked/twemoji@16.0.1/assets/svg/1f525.svg" title=":fire:"> Deprecated functions<a class=headerlink href=#deprecated-functions_8 title="Permanent link">&para;</a></h3> <p>This release does not deprecate any functions. As an overview, the following functions have been deprecated in earlier versions and will be removed in the next major version (i.e., 4.0.0):</p> <ul> <li>Function <a href="http://nlohmann.github.io/json/doxygen/classnlohmann_1_1basic__json_af1592a06bc63811886ade4f9d965045e.html#af1592a06bc63811886ade4f9d965045e"><code>iterator_wrapper</code></a> are deprecated. Please use the member function <a href="http://nlohmann.github.io/json/doxygen/classnlohmann_1_1basic__json_afe3e137ace692efa08590d8df40f58dd.html#afe3e137ace692efa08590d8df40f58dd"><code>items()</code></a> instead.</li> <li>Functions <a href="http://nlohmann.github.io/json/doxygen/classnlohmann_1_1basic__json_ab7285a92514fcdbe6de505ebaba92ea3.html#ab7285a92514fcdbe6de505ebaba92ea3"><code>friend std::istream&amp; operator&lt;&lt;(basic_json&amp;, std::istream&amp;)</code></a> and <a href="http://nlohmann.github.io/json/doxygen/classnlohmann_1_1basic__json_a9e06deabe69262c3ffc5533d32856983.html#a9e06deabe69262c3ffc5533d32856983"><code>friend std::ostream&amp; operator&gt;&gt;(const basic_json&amp;, std::ostream&amp;)</code></a> are deprecated. Please use <a href="http://nlohmann.github.io/json/doxygen/classnlohmann_1_1basic__json_aaf363408931d76472ded14017e59c9e8.html#aaf363408931d76472ded14017e59c9e8"><code>friend std::istream&amp; operator&gt;&gt;(std::istream&amp;, basic_json&amp;)</code></a> and <a href="http://nlohmann.github.io/json/doxygen/classnlohmann_1_1basic__json_a5e34c5435e557d0bf666bd7311211405.html#a5e34c5435e557d0bf666bd7311211405"><code>friend operator&lt;&lt;(std::ostream&amp;, const basic_json&amp;)</code></a> instead.</li> </ul> <h2 id=v320>v3.2.0<a class=headerlink href=#v320 title="Permanent link">&para;</a></h2> <div class="admonition summary"> <p class=admonition-title>Files</p> <ul> <li><a href="https://github.com/nlohmann/json/releases/download/v3.2.0/include.zip">include.zip</a> (124 KB)</li> <li><a href="https://github.com/nlohmann/json/releases/download/v3.2.0/include.zip.asc">include.zip.asc</a> (1 KB)</li> <li><a href="https://github.com/nlohmann/json/releases/download/v3.2.0/json.hpp">json.hpp</a> (636 KB)</li> <li><a href="https://github.com/nlohmann/json/releases/download/v3.2.0/json.hpp.asc">json.hpp.asc</a> (1 KB)</li> </ul> </div> <p>Release date: 2018-08-20 <abbr title="Secure Hash Algorithm">SHA</abbr>-256: ce6b5610a051ec6795fa11c33854abebb086f0fd67c311f5921c3c07f9531b44 (json.hpp), 35ee642558b90e2f9bc758995c4788c4b4d4dec54eef95fb8f38cb4d49c8fc7c (include.zip)</p> <h3 id=summary_9>Summary<a class=headerlink href=#summary_9 title="Permanent link">&para;</a></h3> <p>This release introduces a <a href="https://nlohmann.github.io/json/structnlohmann_1_1json__sax.html"><strong><abbr title="Simple API for XML">SAX</abbr> interface</strong></a> to the library. While this may be a very special feature used by only few people, it allowed to unify all functions that consumed input and created some kind of <abbr title="JavaScript Object Notation">JSON</abbr> value. Internally, now all existing functions like <code>parse</code>, <code>accept</code>, <code>from_cbor</code>, <code>from_msgpack</code>, and <code>from_ubjson</code> use the <abbr title="Simple API for XML">SAX</abbr> interface with different event processors. This allowed to separate the input processing from the value generation. Furthermore, throwing an exception in case of a parse error is now optional and up to the event processor. Finally, the <abbr title="JavaScript Object Notation">JSON</abbr> parser is now non-recursive (meaning it does not use the call stack, but <code>std::vector&lt;bool&gt;</code> to track the hierarchy of structured values) which allows to process nested input more efficiently.</p> <p>Furthermore, the library finally is able to parse from <strong>wide string types</strong>. This is the first step toward opening the library from <abbr title="Unicode Transformation Format">UTF</abbr>-8 to <abbr title="Unicode Transformation Format">UTF</abbr>-16 and <abbr title="Unicode Transformation Format">UTF</abbr>-32.</p> <p>This release further fixes several bugs in the library. All changes are backward-compatible.</p> <h3 id=new-features_5><img alt="✨" class="twemoji" src="../../assets/external/cdn.jsdelivr.net/gh/jdecked/twemoji@16.0.1/assets/svg/2728.svg" title=":sparkles:"> New Features<a class=headerlink href=#new-features_5 title="Permanent link">&para;</a></h3> <ul> <li>added a parser with a <strong><abbr title="Simple API for XML">SAX</abbr> interface</strong> (#971, #1153)</li> <li>support to parse from <strong>wide string types</strong> <code>std::wstring</code>, <code>std::u16string</code>, and <code>std::u32string</code>; the input will be converted to <abbr title="Unicode Transformation Format">UTF</abbr>-8 (#1031)</li> <li>added support for <strong><code>std::string_view</code></strong> when using C++17 (#1028)</li> <li>allow to <strong>roundtrip <code>std::map</code> and <code>std::unordered_map</code></strong> from <abbr title="JavaScript Object Notation">JSON</abbr> if key type is not convertible to string; in these cases, values are serialized to arrays of pairs (#1079, #1089, #1133, #1138)</li> </ul> <h3 id=bug-fixes_9><img alt="🐛" class="twemoji" src="../../assets/external/cdn.jsdelivr.net/gh/jdecked/twemoji@16.0.1/assets/svg/1f41b.svg" title=":bug:"> Bug Fixes<a class=headerlink href=#bug-fixes_9 title="Permanent link">&para;</a></h3> <ul> <li>allow to create <code>nullptr_t</code> from <abbr title="JavaScript Object Notation">JSON</abbr> allowing to properly roundtrip <code>null</code> values (#1169)</li> <li>allow compare user-defined string types (#1130)</li> <li>better support for algorithms using iterators from <code>items()</code> (#1045, #1134)</li> <li>added parameter to avoid compilation error with <abbr title="Microsoft Visual C++">MSVC</abbr> 2015 debug builds (#1114)</li> <li>re-added accidentally skipped unit tests (#1176)</li> <li>fixed <abbr title="Microsoft Visual C++">MSVC</abbr> issue with <code>std::swap</code> (#1168)</li> </ul> <h3 id=improvements_6><img alt="⚡" class="twemoji" src="../../assets/external/cdn.jsdelivr.net/gh/jdecked/twemoji@16.0.1/assets/svg/26a1.svg" title=":zap:"> Improvements<a class=headerlink href=#improvements_6 title="Permanent link">&para;</a></h3> <ul> <li><code>key()</code> function for iterators returns a const reference rather than a string copy (#1098)</li> <li>binary formats <abbr title="Concise Binary Object Representation">CBOR</abbr>, MessagePack, and <abbr title="Universal Binary JSON">UBJSON</abbr> now supports <code>float</code> as type for floating-point numbers (#1021)</li> </ul> <h3 id=further-changes_8><img alt="🔨" class="twemoji" src="../../assets/external/cdn.jsdelivr.net/gh/jdecked/twemoji@16.0.1/assets/svg/1f528.svg" title=":hammer:"> Further Changes<a class=headerlink href=#further-changes_8 title="Permanent link">&para;</a></h3> <ul> <li>changed issue templates</li> <li>improved continuous integration: added builders for Xcode 9.3 and 9.4, added builders for <abbr title="GNU Compiler Collection">GCC</abbr> 8 and Clang 6, added builder for MinGW, added builders for <abbr title="Microsoft Visual C++">MSVC</abbr> targeting x86</li> <li>required CMake version is now at least 3.8 (#1040)</li> <li>overworked CMake file wrt. packaging (#1048)</li> <li>added package managers: Spack (#1041) and CocoaPods (#1148)</li> <li>fixed Meson include directory (#1142)</li> <li>preprocessor macro <code>JSON_SKIP_UNSUPPORTED_COMPILER_CHECK</code> can skip the rejection of unsupported compilers - use at your own risk! (#1128)</li> <li>preprocessor macro <code>JSON_INTERNAL_CATCH</code>/<code>JSON_INTERNAL_CATCH_USER</code> allows to control the behavior of exception handling inside the library (#1187)</li> <li>added note on <code>char</code> to <abbr title="JavaScript Object Notation">JSON</abbr> conversion</li> <li>added note how to send security-related issue via encrypted email</li> <li>removed dependency to <code>std::stringstream</code> (#1117)</li> <li>added <abbr title="Software Package Data Exchange">SPDX</abbr>-License-Identifier</li> <li>added updated <abbr title="JavaScript Object Notation">JSON</abbr> Parsing Test Suite, described in <a href="http://seriot.ch/parsing_json.php">Parsing <abbr title="JavaScript Object Notation">JSON</abbr> is a Minefield 💣</a></li> <li>updated to Catch 1.12.0</li> </ul> <h3 id=deprecated-functions_9><img alt="🔥" class="twemoji" src="../../assets/external/cdn.jsdelivr.net/gh/jdecked/twemoji@16.0.1/assets/svg/1f525.svg" title=":fire:"> Deprecated functions<a class=headerlink href=#deprecated-functions_9 title="Permanent link">&para;</a></h3> <p>This release does not deprecate any functions. As an overview, the following functions have been deprecated in earlier versions and will be removed in the next major version (i.e., 4.0.0):</p> <ul> <li>Function <a href="http://nlohmann.github.io/json/doxygen/classnlohmann_1_1basic__json_af1592a06bc63811886ade4f9d965045e.html#af1592a06bc63811886ade4f9d965045e"><code>iterator_wrapper</code></a> are deprecated. Please use the member function <a href="http://nlohmann.github.io/json/doxygen/classnlohmann_1_1basic__json_afe3e137ace692efa08590d8df40f58dd.html#afe3e137ace692efa08590d8df40f58dd"><code>items()</code></a> instead.</li> <li>Functions <a href="http://nlohmann.github.io/json/doxygen/classnlohmann_1_1basic__json_ab7285a92514fcdbe6de505ebaba92ea3.html#ab7285a92514fcdbe6de505ebaba92ea3"><code>friend std::istream&amp; operator&lt;&lt;(basic_json&amp;, std::istream&amp;)</code></a> and <a href="http://nlohmann.github.io/json/doxygen/classnlohmann_1_1basic__json_a9e06deabe69262c3ffc5533d32856983.html#a9e06deabe69262c3ffc5533d32856983"><code>friend std::ostream&amp; operator&gt;&gt;(const basic_json&amp;, std::ostream&amp;)</code></a> are deprecated. Please use <a href="http://nlohmann.github.io/json/doxygen/classnlohmann_1_1basic__json_aaf363408931d76472ded14017e59c9e8.html#aaf363408931d76472ded14017e59c9e8"><code>friend std::istream&amp; operator&gt;&gt;(std::istream&amp;, basic_json&amp;)</code></a> and <a href="http://nlohmann.github.io/json/doxygen/classnlohmann_1_1basic__json_a5e34c5435e557d0bf666bd7311211405.html#a5e34c5435e557d0bf666bd7311211405"><code>friend operator&lt;&lt;(std::ostream&amp;, const basic_json&amp;)</code></a> instead.</li> </ul> <h2 id=v312>v3.1.2<a class=headerlink href=#v312 title="Permanent link">&para;</a></h2> <div class="admonition summary"> <p class=admonition-title>Files</p> <ul> <li><a href="https://github.com/nlohmann/json/releases/download/v3.1.2/include.zip">include.zip</a> (115 KB)</li> <li><a href="https://github.com/nlohmann/json/releases/download/v3.1.2/include.zip.asc">include.zip.asc</a> (1 KB)</li> <li><a href="https://github.com/nlohmann/json/releases/download/v3.1.2/json.hpp">json.hpp</a> (582 KB)</li> <li><a href="https://github.com/nlohmann/json/releases/download/v3.1.2/json.hpp.asc">json.hpp.asc</a> (1 KB)</li> </ul> </div> <p>Release date: 2018-03-14 <abbr title="Secure Hash Algorithm">SHA</abbr>-256: fbdfec4b4cf63b3b565d09f87e6c3c183bdd45c5be1864d3fcb338f6f02c1733 (json.hpp), 495362ee1b9d03d9526ba9ccf1b4a9c37691abe3a642ddbced13e5778c16660c (include.zip)</p> <h3 id=summary_10>Summary<a class=headerlink href=#summary_10 title="Permanent link">&para;</a></h3> <p>This release fixes several bugs in the library. All changes are backward-compatible.</p> <h3 id=bug-fixes_10><img alt="🐛" class="twemoji" src="../../assets/external/cdn.jsdelivr.net/gh/jdecked/twemoji@16.0.1/assets/svg/1f41b.svg" title=":bug:"> Bug Fixes<a class=headerlink href=#bug-fixes_10 title="Permanent link">&para;</a></h3> <ul> <li>Fixed a <strong>memory leak</strong> occurring in the parser callback (#1001).</li> <li>Different <strong>specializations of <code>basic_json</code></strong> (e.g., using different template arguments for strings or objects) can now be used in assignments (#972, #977, #986).</li> <li>Fixed a logical error in an iterator range check (#992).</li> </ul> <h3 id=improvements_7><img alt="⚡" class="twemoji" src="../../assets/external/cdn.jsdelivr.net/gh/jdecked/twemoji@16.0.1/assets/svg/26a1.svg" title=":zap:"> Improvements<a class=headerlink href=#improvements_7 title="Permanent link">&para;</a></h3> <ul> <li>The parser and the serialization now support <strong>user-defined string types</strong> (#1006, #1009).</li> </ul> <h3 id=further-changes_9><img alt="🔨" class="twemoji" src="../../assets/external/cdn.jsdelivr.net/gh/jdecked/twemoji@16.0.1/assets/svg/1f528.svg" title=":hammer:"> Further Changes<a class=headerlink href=#further-changes_9 title="Permanent link">&para;</a></h3> <ul> <li><strong><a href="http://clang-analyzer.llvm.org">Clang Analyzer</a></strong> is now used as additional static analyzer; see <code>make clang_analyze</code>.</li> <li>Overworked <a href="https://github.com/nlohmann/json/blob/develop/README.md">README</a> by adding links to the <a href="https://nlohmann.github.io/json/">documentation</a> (#981).</li> </ul> <h3 id=deprecated-functions_10><img alt="🔥" class="twemoji" src="../../assets/external/cdn.jsdelivr.net/gh/jdecked/twemoji@16.0.1/assets/svg/1f525.svg" title=":fire:"> Deprecated functions<a class=headerlink href=#deprecated-functions_10 title="Permanent link">&para;</a></h3> <p>This release does not deprecate any functions. As an overview, the following functions have been deprecated in earlier versions and will be removed in the next major version (i.e., 4.0.0):</p> <ul> <li>Function <a href="http://nlohmann.github.io/json/doxygen/classnlohmann_1_1basic__json_af1592a06bc63811886ade4f9d965045e.html#af1592a06bc63811886ade4f9d965045e"><code>iterator_wrapper</code></a> are deprecated. Please use the member function <a href="http://nlohmann.github.io/json/doxygen/classnlohmann_1_1basic__json_afe3e137ace692efa08590d8df40f58dd.html#afe3e137ace692efa08590d8df40f58dd"><code>items()</code></a> instead.</li> <li>Functions <a href="http://nlohmann.github.io/json/doxygen/classnlohmann_1_1basic__json_ab7285a92514fcdbe6de505ebaba92ea3.html#ab7285a92514fcdbe6de505ebaba92ea3"><code>friend std::istream&amp; operator&lt;&lt;(basic_json&amp;, std::istream&amp;)</code></a> and <a href="http://nlohmann.github.io/json/doxygen/classnlohmann_1_1basic__json_a9e06deabe69262c3ffc5533d32856983.html#a9e06deabe69262c3ffc5533d32856983"><code>friend std::ostream&amp; operator&gt;&gt;(const basic_json&amp;, std::ostream&amp;)</code></a> are deprecated. Please use <a href="http://nlohmann.github.io/json/doxygen/classnlohmann_1_1basic__json_aaf363408931d76472ded14017e59c9e8.html#aaf363408931d76472ded14017e59c9e8"><code>friend std::istream&amp; operator&gt;&gt;(std::istream&amp;, basic_json&amp;)</code></a> and <a href="http://nlohmann.github.io/json/doxygen/classnlohmann_1_1basic__json_a5e34c5435e557d0bf666bd7311211405.html#a5e34c5435e557d0bf666bd7311211405"><code>friend operator&lt;&lt;(std::ostream&amp;, const basic_json&amp;)</code></a> instead.</li> </ul> <h2 id=v311>v3.1.1<a class=headerlink href=#v311 title="Permanent link">&para;</a></h2> <div class="admonition summary"> <p class=admonition-title>Files</p> <ul> <li><a href="https://github.com/nlohmann/json/releases/download/v3.1.1/include.zip">include.zip</a> (114 KB)</li> <li><a href="https://github.com/nlohmann/json/releases/download/v3.1.1/include.zip.asc">include.zip.asc</a> (1 KB)</li> <li><a href="https://github.com/nlohmann/json/releases/download/v3.1.1/json.hpp">json.hpp</a> (577 KB)</li> <li><a href="https://github.com/nlohmann/json/releases/download/v3.1.1/json.hpp.asc">json.hpp.asc</a> (1 KB)</li> </ul> </div> <p>Release date: 2018-02-13 <abbr title="Secure Hash Algorithm">SHA</abbr>-256: e14ce5e33d6a2daf748026bd4947f3d9686ca4cfd53d10c3da46a0a9aceb7f2e (json.hpp), fde771d4b9e4f222965c00758a2bdd627d04fb7b59e09b7f3d1965abdc848505 (include.zip)</p> <h3 id=summary_11>Summary<a class=headerlink href=#summary_11 title="Permanent link">&para;</a></h3> <p>This release fixes several bugs in the library. All changes are backward-compatible.</p> <h3 id=bug-fixes_11><img alt="🐛" class="twemoji" src="../../assets/external/cdn.jsdelivr.net/gh/jdecked/twemoji@16.0.1/assets/svg/1f41b.svg" title=":bug:"> Bug Fixes<a class=headerlink href=#bug-fixes_11 title="Permanent link">&para;</a></h3> <ul> <li>Fixed parsing of <strong><abbr title="Concise Binary Object Representation">CBOR</abbr> strings with indefinite length</strong> (#961). Earlier versions of this library misinterpreted the <abbr title="Concise Binary Object Representation">CBOR</abbr> standard and rejected input with the <code>0x7F</code> start byte.</li> <li>Fixed user-defined <strong>conversion to vector type</strong> (#924, #969). A wrong <abbr title="Substitution failure is not an error">SFINAE</abbr> check rejected code though a user-defined conversion was provided.</li> <li>Fixed documentation of the parser behavior for <strong>objects with duplicate keys</strong> (#963). The exact behavior is not specified by <a href="https://tools.ietf.org/html/rfc8259"><abbr title="Request for Comments">RFC</abbr> 8259</a> and the library now also provides no guarantee which object key is stored.</li> <li>Added check to detect memory <strong>overflow when parsing <abbr title="Universal Binary JSON">UBJSON</abbr> containers</strong> (#962). The optimized <abbr title="Universal Binary JSON">UBJSON</abbr> format allowed for specifying an array with billions of <code>null</code> elements with a few bytes and the library did not check whether this size exceeded <code>max_size()</code>.</li> </ul> <h3 id=further-changes_10><img alt="🔨" class="twemoji" src="../../assets/external/cdn.jsdelivr.net/gh/jdecked/twemoji@16.0.1/assets/svg/1f528.svg" title=":hammer:"> Further Changes<a class=headerlink href=#further-changes_10 title="Permanent link">&para;</a></h3> <ul> <li><a href="https://coveralls.io/github/nlohmann/json">Code coverage</a> is now calculated for the individual header files, allowing to find uncovered lines more quickly than by browsing through the single header version (#953, #957).</li> <li>A Makefile target <code>run_benchmarks</code> was added to quickly build and run the benchmark suite.</li> <li>The documentation was harmonized with respect to the header inclusion (#955). Now all examples and the README use <code>#include &lt;nlohmann/json.hpp&gt;</code> to allow for selecting <code>single_include</code> or <code>include</code> or whatever installation folder as include directory.</li> <li>Added note on how to use the library with the <a href="http://cget.readthedocs.io/en/latest/">cget</a> package manager (#954).</li> </ul> <h3 id=deprecated-functions_11><img alt="🔥" class="twemoji" src="../../assets/external/cdn.jsdelivr.net/gh/jdecked/twemoji@16.0.1/assets/svg/1f525.svg" title=":fire:"> Deprecated functions<a class=headerlink href=#deprecated-functions_11 title="Permanent link">&para;</a></h3> <p>This release does not deprecate any functions. As an overview, the following functions have been deprecated in earlier versions and will be removed in the next major version (i.e., 4.0.0):</p> <ul> <li>Function <a href="http://nlohmann.github.io/json/doxygen/classnlohmann_1_1basic__json_af1592a06bc63811886ade4f9d965045e.html#af1592a06bc63811886ade4f9d965045e"><code>iterator_wrapper</code></a> are deprecated. Please use the member function <a href="http://nlohmann.github.io/json/doxygen/classnlohmann_1_1basic__json_afe3e137ace692efa08590d8df40f58dd.html#afe3e137ace692efa08590d8df40f58dd"><code>items()</code></a> instead.</li> <li>Functions <a href="http://nlohmann.github.io/json/doxygen/classnlohmann_1_1basic__json_ab7285a92514fcdbe6de505ebaba92ea3.html#ab7285a92514fcdbe6de505ebaba92ea3"><code>friend std::istream&amp; operator&lt;&lt;(basic_json&amp;, std::istream&amp;)</code></a> and <a href="http://nlohmann.github.io/json/doxygen/classnlohmann_1_1basic__json_a9e06deabe69262c3ffc5533d32856983.html#a9e06deabe69262c3ffc5533d32856983"><code>friend std::ostream&amp; operator&gt;&gt;(const basic_json&amp;, std::ostream&amp;)</code></a> are deprecated. Please use <a href="http://nlohmann.github.io/json/doxygen/classnlohmann_1_1basic__json_aaf363408931d76472ded14017e59c9e8.html#aaf363408931d76472ded14017e59c9e8"><code>friend std::istream&amp; operator&gt;&gt;(std::istream&amp;, basic_json&amp;)</code></a> and <a href="http://nlohmann.github.io/json/doxygen/classnlohmann_1_1basic__json_a5e34c5435e557d0bf666bd7311211405.html#a5e34c5435e557d0bf666bd7311211405"><code>friend operator&lt;&lt;(std::ostream&amp;, const basic_json&amp;)</code></a> instead.</li> </ul> <h2 id=v310>v3.1.0<a class=headerlink href=#v310 title="Permanent link">&para;</a></h2> <div class="admonition summary"> <p class=admonition-title>Files</p> <ul> <li><a href="https://github.com/nlohmann/json/releases/download/v3.1.0/include.zip">include.zip</a> (114 KB)</li> <li><a href="https://github.com/nlohmann/json/releases/download/v3.1.0/include.zip.asc">include.zip.asc</a> (1 KB)</li> <li><a href="https://github.com/nlohmann/json/releases/download/v3.1.0/json.hpp">json.hpp</a> (577 KB)</li> <li><a href="https://github.com/nlohmann/json/releases/download/v3.1.0/json.hpp.asc">json.hpp.asc</a> (1 KB)</li> </ul> </div> <p>Release date: 2018-02-01 <abbr title="Secure Hash Algorithm">SHA</abbr>-256: d40f614d10a6e4e4e80dca9463da905285f20e93116c36d97d4dc1aa63d10ba4 (json.hpp), 2b7234fca394d1e27b7e017117ed80b7518fafbb4f4c13a7c069624f6f924673 (include.zip)</p> <h3 id=summary_12>Summary<a class=headerlink href=#summary_12 title="Permanent link">&para;</a></h3> <p>This release adds support for the <a href="http://ubjson.org"><strong><abbr title="Universal Binary JSON">UBJSON</abbr></strong></a> format and <a href="https://tools.ietf.org/html/rfc7386"><strong><abbr title="JavaScript Object Notation">JSON</abbr> Merge Patch</strong></a>. It also contains some minor changes and bug fixes. All changes are backward-compatible.</p> <h3 id=new-features_6><img alt="✨" class="twemoji" src="../../assets/external/cdn.jsdelivr.net/gh/jdecked/twemoji@16.0.1/assets/svg/2728.svg" title=":sparkles:"> New features<a class=headerlink href=#new-features_6 title="Permanent link">&para;</a></h3> <ul> <li>The library now supports <a href="http://ubjson.org"><strong><abbr title="Universal Binary JSON">UBJSON</abbr></strong></a> (Universal Binary <abbr title="JavaScript Object Notation">JSON</abbr> Specification) as binary format to read and write <abbr title="JavaScript Object Notation">JSON</abbr> values space-efficiently. See the <a href="https://json.nlohmann.me/features/binary_formats/">documentation overview</a> for a comparison of the different formats <abbr title="Concise Binary Object Representation">CBOR</abbr>, MessagePack, and <abbr title="Universal Binary JSON">UBJSON</abbr>.</li> <li><a href="https://tools.ietf.org/html/rfc7386"><strong><abbr title="JavaScript Object Notation">JSON</abbr> Merge Patch</strong></a> (<abbr title="Request for Comments">RFC</abbr> 7386) offers an intuitive means to describe patches between <abbr title="JavaScript Object Notation">JSON</abbr> values (#876, #877). See the documentation of <a href="http://nlohmann.github.io/json/doxygen/classnlohmann_1_1basic__json_a0ec0cd19cce42ae6071f3cc6870ea295.html#a0ec0cd19cce42ae6071f3cc6870ea295"><code>merge_patch</code></a> for more information.</li> </ul> <h3 id=improvements_8><img alt="⚡" class="twemoji" src="../../assets/external/cdn.jsdelivr.net/gh/jdecked/twemoji@16.0.1/assets/svg/26a1.svg" title=":zap:"> Improvements<a class=headerlink href=#improvements_8 title="Permanent link">&para;</a></h3> <ul> <li>The library now uses the <strong>Grisu2 algorithm</strong> for printing floating-point numbers (based on the reference implementation by Florian Loitsch) which produces a short representation which is guaranteed to round-trip (#360, #935, #936).</li> <li>The <strong><abbr title="Unicode Transformation Format">UTF</abbr>-8 handling</strong> was further simplified by using the decoder of Björn Hoehrmann in more scenarios.</li> </ul> <h3 id=reorganization><img alt="🚚" class="twemoji" src="../../assets/external/cdn.jsdelivr.net/gh/jdecked/twemoji@16.0.1/assets/svg/1f69a.svg" title=":truck:"> Reorganization<a class=headerlink href=#reorganization title="Permanent link">&para;</a></h3> <ul> <li>Though the library is released as a single header, its development got more and more complicated. With this release, the header is <strong>split into several files</strong> and the single-header file <code>json.hpp</code> can be generated from these development sources. In the repository, folder <code>include</code> contains the development sources and <code>single_include</code> contains the single <code>json.hpp</code> header (#700, #906, #907, #910, #911, #915, #920, #924, #925, #928, #944).</li> <li>The split further allowed for a <strong>forward declaration header</strong> <code>include/nlohmann/json_fwd.hpp</code> to speed up compilation times (#314).</li> </ul> <h3 id=further-changes_11><img alt="🔨" class="twemoji" src="../../assets/external/cdn.jsdelivr.net/gh/jdecked/twemoji@16.0.1/assets/svg/1f528.svg" title=":hammer:"> Further changes<a class=headerlink href=#further-changes_11 title="Permanent link">&para;</a></h3> <ul> <li><a href="https://github.com/google/benchmark">Google Benchmark</a> is now used for micro benchmarks (see <code>benchmarks</code> folder, #921).</li> <li>The serialization (<abbr title="JavaScript Object Notation">JSON</abbr> and binary formats) now properly work with the libraries string template parameter, allowing for optimized string implementations to be used in constraint environments such as embedded software (#941, #950).</li> <li>The exceptional behavior can now be overridden by defining macros <code>JSON_THROW_USER</code>, <code>JSON_TRY_USER</code>, and <code>JSON_CATCH_USER</code>, defining the behavior of <code>throw</code>, <code>try</code> and <code>catch</code>, respectively. This allows to switch off C++'s exception mechanism yet still execute user-defined code in case an error condition occurs (#938).</li> <li>To facilitate the interplay with <a href="https://github.com/westes/flex">flex</a> and <a href="https://www.gnu.org/software/bison/">Bison</a>, the library does not use the variable name <code>yytext</code> any more as it could clash with macro definitions (#933).</li> <li>The library now defines <code>NLOHMANN_JSON_VERSION_MAJOR</code>, <code>NLOHMANN_JSON_VERSION_MINOR</code>, and <code>NLOHMANN_JSON_VERSION_PATCH</code> to allow for conditional compilation based on the included library version (#943, #948).</li> <li>A compilation error with <abbr title="Intel C++ Compiler">ICC</abbr> has been fixed (#947).</li> <li>Typos and links in the documentation have been fixed (#900, #930).</li> <li>A compiler error related to incomplete types has been fixed (#919).</li> <li>The tests form the <a href="http://www.cl.cam.ac.uk/~mgk25/ucs/examples/UTF-8-test.txt"><abbr title="Unicode Transformation Format">UTF</abbr>-8 decoder stress test</a> have been added to the test suite.</li> </ul> <h3 id=deprecated-functions_12><img alt="🔥" class="twemoji" src="../../assets/external/cdn.jsdelivr.net/gh/jdecked/twemoji@16.0.1/assets/svg/1f525.svg" title=":fire:"> Deprecated functions<a class=headerlink href=#deprecated-functions_12 title="Permanent link">&para;</a></h3> <ul> <li>Function <a href="http://nlohmann.github.io/json/doxygen/classnlohmann_1_1basic__json_af1592a06bc63811886ade4f9d965045e.html#af1592a06bc63811886ade4f9d965045e"><code>iterator_wrapper</code></a> has been deprecated (#874). Since its introduction, the name was up for discussion, as it was too technical. We now introduced the member function <a href="http://nlohmann.github.io/json/doxygen/classnlohmann_1_1basic__json_afe3e137ace692efa08590d8df40f58dd.html#afe3e137ace692efa08590d8df40f58dd"><code>items()</code></a> with the same semantics. <code>iterator_wrapper</code> will be removed in the next major version (i.e., 4.0.0).</li> </ul> <p>Furthermore, the following functions are deprecated since version 3.0.0 and will be removed in the next major version (i.e., 4.0.0):</p> <ul> <li><a href="http://nlohmann.github.io/json/doxygen/classnlohmann_1_1basic__json_ab7285a92514fcdbe6de505ebaba92ea3.html#ab7285a92514fcdbe6de505ebaba92ea3"><code>friend std::istream&amp; operator&lt;&lt;(basic_json&amp;, std::istream&amp;)</code></a></li> <li><a href="http://nlohmann.github.io/json/doxygen/classnlohmann_1_1basic__json_a9e06deabe69262c3ffc5533d32856983.html#a9e06deabe69262c3ffc5533d32856983"><code>friend std::ostream&amp; operator&gt;&gt;(const basic_json&amp;, std::ostream&amp;)</code></a></li> </ul> <p>Please use <a href="http://nlohmann.github.io/json/doxygen/classnlohmann_1_1basic__json_aaf363408931d76472ded14017e59c9e8.html#aaf363408931d76472ded14017e59c9e8"><code>friend std::istream&amp; operator&gt;&gt;(std::istream&amp;, basic_json&amp;)</code></a> and <a href="http://nlohmann.github.io/json/doxygen/classnlohmann_1_1basic__json_a5e34c5435e557d0bf666bd7311211405.html#a5e34c5435e557d0bf666bd7311211405"><code>friend operator&lt;&lt;(std::ostream&amp;, const basic_json&amp;)</code></a> instead.</p> <h2 id=v301>v3.0.1<a class=headerlink href=#v301 title="Permanent link">&para;</a></h2> <div class="admonition summary"> <p class=admonition-title>Files</p> <ul> <li><a href="https://github.com/nlohmann/json/releases/download/v3.0.1/json.hpp">json.hpp</a> (502 KB)</li> <li><a href="https://github.com/nlohmann/json/releases/download/v3.0.1/json.hpp.asc">json.hpp.asc</a> (1 KB)</li> </ul> </div> <p>Release date: 2017-12-29 <abbr title="Secure Hash Algorithm">SHA</abbr>-256: c9b3591f1bb94e723a0cd7be861733a3a555b234ef132be1e9027a0364118c4c</p> <h3 id=summary_13>Summary<a class=headerlink href=#summary_13 title="Permanent link">&para;</a></h3> <p>This release fixes small issues in the implementation of <strong><abbr title="JavaScript Object Notation">JSON</abbr> Pointer</strong> and <strong><abbr title="JavaScript Object Notation">JSON</abbr> Patch</strong>. All changes are backward-compatible.</p> <h3 id=changes>Changes<a class=headerlink href=#changes title="Permanent link">&para;</a></h3> <ul> <li><img alt="🐛" class="twemoji" src="../../assets/external/cdn.jsdelivr.net/gh/jdecked/twemoji@16.0.1/assets/svg/1f41b.svg" title=":bug:"> The <strong>"copy" operation of <abbr title="JavaScript Object Notation">JSON</abbr> Patch</strong> (<a href="https://tools.ietf.org/html/rfc6902"><abbr title="Request for Comments">RFC</abbr> 6902</a>) requests that it is an error if the target path points into a non-existing array or object (see #894 for a detailed description). This release fixes the implementation to detect such invalid target paths and throw an exception.</li> <li><img alt="🐛" class="twemoji" src="../../assets/external/cdn.jsdelivr.net/gh/jdecked/twemoji@16.0.1/assets/svg/1f41b.svg" title=":bug:"> An <strong>array index in a <abbr title="JavaScript Object Notation">JSON</abbr> Pointer</strong> (<a href="https://tools.ietf.org/html/rfc6901"><abbr title="Request for Comments">RFC</abbr> 6901</a>) must be an integer. This release fixes the implementation to throw an exception in case invalid array indices such as <code>10e2</code> are used.</li> <li><img alt="✅" class="twemoji" src="../../assets/external/cdn.jsdelivr.net/gh/jdecked/twemoji@16.0.1/assets/svg/2705.svg" title=":white_check_mark:"> Added the <a href="https://github.com/json-patch/json-patch-tests"><abbr title="JavaScript Object Notation">JSON</abbr> Patch tests</a> from Byron Ruth and Mike McCabe.</li> <li><img alt="📝" class="twemoji" src="../../assets/external/cdn.jsdelivr.net/gh/jdecked/twemoji@16.0.1/assets/svg/1f4dd.svg" title=":memo:"> Fixed the documentation of the <a href="https://nlohmann.github.io/json/classnlohmann_1_1basic__json_a8ab61397c10f18b305520da7073b2b45.html#a8ab61397c10f18b305520da7073b2b45"><code>at(ptr)</code> function with <abbr title="JavaScript Object Notation">JSON</abbr> Pointers</a> to list all possible exceptions (see #888).</li> <li><img alt="📝" class="twemoji" src="../../assets/external/cdn.jsdelivr.net/gh/jdecked/twemoji@16.0.1/assets/svg/1f4dd.svg" title=":memo:"> Updated the <a href="https://nlohmann.github.io/json/">container overview documentation</a> (see #883).</li> <li><img alt="🔧" class="twemoji" src="../../assets/external/cdn.jsdelivr.net/gh/jdecked/twemoji@16.0.1/assets/svg/1f527.svg" title=":wrench:"> The CMake files now respect the <a href="https://cmake.org/cmake/help/latest/module/CTest.html?highlight=build_testing"><code>BUILD_TESTING</code></a> option (see #846, #885)</li> <li><img alt="🚨" class="twemoji" src="../../assets/external/cdn.jsdelivr.net/gh/jdecked/twemoji@16.0.1/assets/svg/1f6a8.svg" title=":rotating_light:"> Fixed some compiler warnings (see #858, #882).</li> </ul> <h3 id=deprecated-functions_13>Deprecated functions<a class=headerlink href=#deprecated-functions_13 title="Permanent link">&para;</a></h3> <p><img alt="🔥" class="twemoji" src="../../assets/external/cdn.jsdelivr.net/gh/jdecked/twemoji@16.0.1/assets/svg/1f525.svg" title=":fire:"> To unify the interfaces and to improve similarity with the <abbr title="Standard Template Library">STL</abbr>, the following functions are deprecated since version 3.0.0 and will be removed in the next major version (i.e., 4.0.0):</p> <ul> <li><a href="http://nlohmann.github.io/json/doxygen/classnlohmann_1_1basic__json_ab7285a92514fcdbe6de505ebaba92ea3.html#ab7285a92514fcdbe6de505ebaba92ea3"><code>friend std::istream&amp; operator&lt;&lt;(basic_json&amp;, std::istream&amp;)</code></a></li> <li><a href="http://nlohmann.github.io/json/doxygen/classnlohmann_1_1basic__json_a9e06deabe69262c3ffc5533d32856983.html#a9e06deabe69262c3ffc5533d32856983"><code>friend std::ostream&amp; operator&gt;&gt;(const basic_json&amp;, std::ostream&amp;)</code></a></li> </ul> <p>Please use <a href="http://nlohmann.github.io/json/doxygen/classnlohmann_1_1basic__json_aaf363408931d76472ded14017e59c9e8.html#aaf363408931d76472ded14017e59c9e8"><code>friend std::istream&amp; operator&gt;&gt;(std::istream&amp;, basic_json&amp;)</code></a> and <a href="http://nlohmann.github.io/json/doxygen/classnlohmann_1_1basic__json_a5e34c5435e557d0bf666bd7311211405.html#a5e34c5435e557d0bf666bd7311211405"><code>friend operator&lt;&lt;(std::ostream&amp;, const basic_json&amp;)</code></a> instead.</p> <h2 id=v300>v3.0.0<a class=headerlink href=#v300 title="Permanent link">&para;</a></h2> <div class="admonition summary"> <p class=admonition-title>Files</p> <ul> <li><a href="https://github.com/nlohmann/json/releases/download/v3.0.0/json.hpp">json.hpp</a> (501 KB)</li> <li><a href="https://github.com/nlohmann/json/releases/download/v3.0.0/json.hpp.asc">json.hpp.asc</a> (1 KB)</li> </ul> </div> <p>Release date: 2017-12-17 <abbr title="Secure Hash Algorithm">SHA</abbr>-256: 076d4a0cb890a3c3d389c68421a11c3d77c64bd788e85d50f1b77ed252f2a462</p> <h3 id=summary_14>Summary<a class=headerlink href=#summary_14 title="Permanent link">&para;</a></h3> <p><img src="../../assets/external/user-images.githubusercontent.com/159488/34072418-8f5ba396-e287-11e7-9de7-8bc7482ac23c.png" align="right"></p> <p>After almost a year, here is finally a new release of <abbr title="JavaScript Object Notation">JSON</abbr> for Modern C++, and it is a major one! As we adhere to <a href="https://semver.org">semantic versioning</a>, this means the release includes some breaking changes, so please read the next section carefully before you update. But don't worry, we also added a few new features and put a lot of effort into fixing a lot of bugs and straighten out a few inconsistencies.</p> <h3 id=breaking-changes><img alt="💥" class="twemoji" src="../../assets/external/cdn.jsdelivr.net/gh/jdecked/twemoji@16.0.1/assets/svg/1f4a5.svg" title=":boom:"> Breaking changes<a class=headerlink href=#breaking-changes title="Permanent link">&para;</a></h3> <p>This section describes changes that change the public <abbr title="Application Programming Interfaces">API</abbr> of the library and may require changes in code using a previous version of the library. In section "Moving from 2.x.x to 3.0.0" at the end of the release notes, we describe in detail how existing code needs to be changed.</p> <ul> <li>The library now uses <a href="http://nlohmann.github.io/json/doxygen/classnlohmann_1_1basic__json_a9a0aced019cb1d65bb49703406c84970.html#a9a0aced019cb1d65bb49703406c84970"><strong>user-defined exceptions</strong></a> instead of reusing those defined in <code>&lt;stdexcept&gt;</code> (#244). This not only allows to add more information to the exceptions (every exception now has an identifier, and parse errors contain the position of the error), but also to easily catch all library exceptions with a single <code>catch(json::exception)</code>.</li> <li>When strings with a different encoding as <abbr title="Unicode Transformation Format">UTF</abbr>-8 were stored in <abbr title="JavaScript Object Notation">JSON</abbr> values, their serialization could not be parsed by the library itself, as only <abbr title="Unicode Transformation Format">UTF</abbr>-8 is supported. To enforce this library limitation and improve consistency, <strong>non-<abbr title="Unicode Transformation Format">UTF</abbr>-8 encoded strings now yield a <code>json::type_error</code> exception during serialization</strong> (#838). The check for valid <abbr title="Unicode Transformation Format">UTF</abbr>-8 is realized with code from <a href="http://bjoern.hoehrmann.de/">Björn Hoehrmann</a>.</li> <li><strong><abbr title="Not a Number">NaN</abbr> and infinity values can now be stored inside the <abbr title="JavaScript Object Notation">JSON</abbr> value</strong> without throwing an exception. They are, however, still serialized as <code>null</code> (#388).</li> <li>The library's iterator tag was changed from RandomAccessIterator to <strong><a href="https://en.cppreference.com/w/cpp/named_req/BidirectionalIterator">BidirectionalIterator</a></strong> (#593). Supporting RandomAccessIterator was incorrect as it assumed an ordering of values in a <abbr title="JavaScript Object Notation">JSON</abbr> objects which are unordered by definition.</li> <li>The library does not include the standard headers <code>&lt;iostream&gt;</code>, <code>&lt;ctype&gt;</code>, and <code>&lt;stdexcept&gt;</code> any more. You may need to add these headers to code relying on them.</li> <li>Removed constructor <code>explicit basic_json(std::istream&amp; i, const parser_callback_t cb = nullptr)</code> which was deprecated in version 2.0.0 (#480).</li> </ul> <h3 id=deprecated-functions_14><img alt="🔥" class="twemoji" src="../../assets/external/cdn.jsdelivr.net/gh/jdecked/twemoji@16.0.1/assets/svg/1f525.svg" title=":fire:"> Deprecated functions<a class=headerlink href=#deprecated-functions_14 title="Permanent link">&para;</a></h3> <p>To unify the interfaces and to improve similarity with the <abbr title="Standard Template Library">STL</abbr>, the following functions are now deprecated and will be removed in the next major version (i.e., 4.0.0):</p> <ul> <li><a href="http://nlohmann.github.io/json/doxygen/classnlohmann_1_1basic__json_ab7285a92514fcdbe6de505ebaba92ea3.html#ab7285a92514fcdbe6de505ebaba92ea3"><code>friend std::istream&amp; operator&lt;&lt;(basic_json&amp;, std::istream&amp;)</code></a></li> <li><a href="http://nlohmann.github.io/json/doxygen/classnlohmann_1_1basic__json_a9e06deabe69262c3ffc5533d32856983.html#a9e06deabe69262c3ffc5533d32856983"><code>friend std::ostream&amp; operator&gt;&gt;(const basic_json&amp;, std::ostream&amp;)</code></a></li> </ul> <p>Please use <a href="http://nlohmann.github.io/json/doxygen/classnlohmann_1_1basic__json_aaf363408931d76472ded14017e59c9e8.html#aaf363408931d76472ded14017e59c9e8"><code>friend std::istream&amp; operator&gt;&gt;(std::istream&amp;, basic_json&amp;)</code></a> and <a href="http://nlohmann.github.io/json/doxygen/classnlohmann_1_1basic__json_a5e34c5435e557d0bf666bd7311211405.html#a5e34c5435e557d0bf666bd7311211405"><code>friend operator&lt;&lt;(std::ostream&amp;, const basic_json&amp;)</code></a> instead.</p> <h3 id=new-features_7><img alt="✨" class="twemoji" src="../../assets/external/cdn.jsdelivr.net/gh/jdecked/twemoji@16.0.1/assets/svg/2728.svg" title=":sparkles:"> New features<a class=headerlink href=#new-features_7 title="Permanent link">&para;</a></h3> <p>With all this breaking and deprecation out of the way, let's talk about features!</p> <ul> <li>We improved the <strong>diagnostic information for syntax errors</strong> (#301). Now, an exception <a href="http://nlohmann.github.io/json/doxygen/classnlohmann_1_1basic__json_af1efc2468e6022be6e35fc2944cabe4d.html#af1efc2468e6022be6e35fc2944cabe4d"><code>json::parse_error</code></a> is thrown which contains a detailed message on the error, but also a member <code>byte</code> to indicate the byte offset in the input where the error occurred.</li> <li>We added a <strong>non-throwing syntax check</strong> (#458): The new <code>accept</code> function returns a Boolean indicating whether the input is proper <abbr title="JavaScript Object Notation">JSON</abbr>. We also added a Boolean parameter <code>allow_exceptions</code> to the existing <a href="http://nlohmann.github.io/json/doxygen/classnlohmann_1_1basic__json_aa9676414f2e36383c4b181fe856aa3c0.html#aa9676414f2e36383c4b181fe856aa3c0"><code>parse</code></a> functions to return a <code>discarded</code> value in case a syntax error occurs instead of throwing an exception.</li> <li>An <a href="http://nlohmann.github.io/json/doxygen/classnlohmann_1_1basic__json_a1cfa9ae5e7c2434cab4cfe69bffffe11.html#a1cfa9ae5e7c2434cab4cfe69bffffe11"><code>update</code></a> function was added to <strong>merge two <abbr title="JavaScript Object Notation">JSON</abbr> objects</strong> (#428). In case you are wondering: the name was inspired by <a href="https://docs.python.org/2/library/stdtypes.html#dict.update">Python</a>.</li> <li>The <a href="http://nlohmann.github.io/json/doxygen/classnlohmann_1_1basic__json_a1b0a4e60d56f1fe80501ed941e122892.html#a1b0a4e60d56f1fe80501ed941e122892"><code>insert</code></a> function now also supports an iterator range to add elements to an object.</li> <li>The binary exchange formats <strong><abbr title="Concise Binary Object Representation">CBOR</abbr> and MessagePack can now be parsed from input streams and written to output streams</strong> (#477).</li> <li>Input streams are now only read until the end of a <abbr title="JavaScript Object Notation">JSON</abbr> value instead of the end of the input (#367).</li> <li>The serialization function <a href="http://nlohmann.github.io/json/doxygen/classnlohmann_1_1basic__json_a5adea76fedba9898d404fef8598aa663.html#a5adea76fedba9898d404fef8598aa663"><code>dump</code></a> now has two optional parameters <code>ensure_ascii</code> to <strong>escape all non-<abbr title="American Standard Code for Information Interchange">ASCII</abbr> characters</strong> with <code>\uxxxx</code> and an <code>indent_char</code> parameter to choose whether to <strong>indent with spaces or tabs</strong> (#654). </li> <li>Added <strong>built-in type support</strong> for C arrays (#502), <code>std::pair</code> and <code>std::tuple</code> (#563, #614), <code>enum</code> and <code>enum class</code> (#545), <code>std::vector&lt;bool&gt;</code> (#494). Fixed support for <code>std::valarray</code> (#702), <code>std::array</code> (#553), and <code>std::map&lt;std::string, std::string&gt;</code> (#600, #607).</li> </ul> <h3 id=further-changes_12><img alt="🔨" class="twemoji" src="../../assets/external/cdn.jsdelivr.net/gh/jdecked/twemoji@16.0.1/assets/svg/1f528.svg" title=":hammer:"> Further changes<a class=headerlink href=#further-changes_12 title="Permanent link">&para;</a></h3> <p>Furthermore, there have been a lot of changes under the hood:</p> <ul> <li>Replaced the <a href="http://re2c.org">re2c</a> generated scanner by a self-coded version which allows for a better modularization of the parser and better diagnostics. To test the new scanner, we added millions (8,860,608 to be exact) of unit tests to check all valid and invalid byte sequences of the Unicode standard.</li> <li>Google's OSS-Fuzz is still constantly fuzz-testing the library and found several issues that were fixed in this release (#497, #504, #514, #516, #518, #519, #575).</li> <li>We now also ignore <abbr title="Unicode Transformation Format">UTF</abbr>-8 byte order marks when parsing from an iterator range (#602).</li> <li>Values can be now moved from initializer lists (#663).</li> <li>Updated to <a href="https://github.com/catchorg/Catch2">Catch</a> 1.9.7. Unfortunately, Catch2 currently has some performance issues.</li> <li>The non-exceptional paths of the library are now annotated with <code>__builtin_expect</code> to optimize branch prediction as long as no error occurs.</li> <li><abbr title="Microsoft Visual C++">MSVC</abbr> now produces a stack trace in <abbr title="Microsoft Visual C++">MSVC</abbr> if a <code>from_json</code> or <code>to_json</code> function was not found for a user-defined type. We also added a debug visualizer <a href="https://github.com/nlohmann/json/blob/develop/nlohmann_json.natvis"><code>nlohmann_json.natvis</code></a> for better debugging in <abbr title="Microsoft Visual C++">MSVC</abbr> (#844).</li> <li>Overworked the documentation and added even more examples.</li> <li>The build workflow now relies on CMake and CTest. Special flags can be chosen with CMake, including coverage (<code>JSON_Coverage</code>), compilation without exceptions (<code>JSON_NoExceptions</code>), LLVM sanitizers (<code>JSON_Sanitizer</code>), or execution with Valgrind (<code>JSON_Valgrind</code>).</li> <li>Added support for package managers Meson (#576), Conan (#566), Hunter (#671, #829), and vcpkg (#753).</li> <li>Added <abbr title="Continuous Integration">CI</abbr> builders: Xcode 8.3, 9.0, 9.1, and 9.2; <abbr title="GNU Compiler Collection">GCC</abbr> 7.2; Clang 3.8, 3.9, 4.0, and 5.0; Visual Studio 2017. The library is further built with C++17 settings on the latest Clang, <abbr title="GNU Compiler Collection">GCC</abbr>, and <abbr title="Microsoft Visual C++">MSVC</abbr> version to quickly detect new issues.</li> </ul> <h3 id=moving-from-2xx-to-300>Moving from 2.x.x to 3.0.0<a class=headerlink href=#moving-from-2xx-to-300 title="Permanent link">&para;</a></h3> <h4 id=user-defined-exceptions>User-defined Exceptions<a class=headerlink href=#user-defined-exceptions title="Permanent link">&para;</a></h4> <p>There are five different exceptions inheriting from <a href="http://nlohmann.github.io/json/doxygen/classnlohmann_1_1basic__json_a9a0aced019cb1d65bb49703406c84970.html#a9a0aced019cb1d65bb49703406c84970"><code>json::exception</code></a>:</p> <ul> <li><a href="http://nlohmann.github.io/json/doxygen/classnlohmann_1_1basic__json_af1efc2468e6022be6e35fc2944cabe4d.html#af1efc2468e6022be6e35fc2944cabe4d"><code>json::parse_error</code></a> for syntax errors (including the binary formats),</li> <li><a href="http://nlohmann.github.io/json/doxygen/classnlohmann_1_1basic__json_ac13d32f7cbd02d616e71d8dc30dadcbf.html#ac13d32f7cbd02d616e71d8dc30dadcbf"><code>json::invalid_iterator</code></a> for errors related to iterators,</li> <li><a href="http://nlohmann.github.io/json/doxygen/classnlohmann_1_1basic__json_a4010e8e268fefd86da773c10318f2902.html#a4010e8e268fefd86da773c10318f2902"><code>json::type_error</code></a> for errors where functions were called with the wrong <abbr title="JavaScript Object Notation">JSON</abbr> type,</li> <li><a href="http://nlohmann.github.io/json/doxygen/classnlohmann_1_1basic__json_a28f7c2f087274a0012eb7a2333ee1580.html#a28f7c2f087274a0012eb7a2333ee1580"><code>json::out_of_range</code></a> for range errors, and</li> <li><a href="http://nlohmann.github.io/json/doxygen/classnlohmann_1_1basic__json_a3333a5a8714912adda33a35b369f7b3d.html#a3333a5a8714912adda33a35b369f7b3d"><code>json::other_error</code></a> for miscellaneous errors.</li> </ul> <p>To support these exception, the <code>try</code>/<code>catch</code> blocks of your code need to be adjusted:</p> <table> <thead> <tr> <th style="text-align: left;">new exception</th> <th style="text-align: left;">previous exception</th> </tr> </thead> <tbody> <tr> <td style="text-align: left;">parse_error.101</td> <td style="text-align: left;">invalid_argument</td> </tr> <tr> <td style="text-align: left;">parse_error.102</td> <td style="text-align: left;">invalid_argument</td> </tr> <tr> <td style="text-align: left;">parse_error.103</td> <td style="text-align: left;">invalid_argument</td> </tr> <tr> <td style="text-align: left;">parse_error.104</td> <td style="text-align: left;">invalid_argument</td> </tr> <tr> <td style="text-align: left;">parse_error.105</td> <td style="text-align: left;">invalid_argument</td> </tr> <tr> <td style="text-align: left;">parse_error.106</td> <td style="text-align: left;">domain_error</td> </tr> <tr> <td style="text-align: left;">parse_error.107</td> <td style="text-align: left;">domain_error</td> </tr> <tr> <td style="text-align: left;">parse_error.108</td> <td style="text-align: left;">domain_error</td> </tr> <tr> <td style="text-align: left;">parse_error.109</td> <td style="text-align: left;">invalid_argument</td> </tr> <tr> <td style="text-align: left;">parse_error.110</td> <td style="text-align: left;">out_of_range</td> </tr> <tr> <td style="text-align: left;">parse_error.111</td> <td style="text-align: left;">invalid_argument</td> </tr> <tr> <td style="text-align: left;">parse_error.112</td> <td style="text-align: left;">invalid_argument</td> </tr> <tr> <td style="text-align: left;">invalid_iterator.201</td> <td style="text-align: left;">domain_error</td> </tr> <tr> <td style="text-align: left;">invalid_iterator.202</td> <td style="text-align: left;">domain_error</td> </tr> <tr> <td style="text-align: left;">invalid_iterator.203</td> <td style="text-align: left;">domain_error</td> </tr> <tr> <td style="text-align: left;">invalid_iterator.204</td> <td style="text-align: left;">out_of_range</td> </tr> <tr> <td style="text-align: left;">invalid_iterator.205</td> <td style="text-align: left;">out_of_range</td> </tr> <tr> <td style="text-align: left;">invalid_iterator.206</td> <td style="text-align: left;">domain_error</td> </tr> <tr> <td style="text-align: left;">invalid_iterator.207</td> <td style="text-align: left;">domain_error</td> </tr> <tr> <td style="text-align: left;">invalid_iterator.208</td> <td style="text-align: left;">domain_error</td> </tr> <tr> <td style="text-align: left;">invalid_iterator.209</td> <td style="text-align: left;">domain_error</td> </tr> <tr> <td style="text-align: left;">invalid_iterator.210</td> <td style="text-align: left;">domain_error</td> </tr> <tr> <td style="text-align: left;">invalid_iterator.211</td> <td style="text-align: left;">domain_error</td> </tr> <tr> <td style="text-align: left;">invalid_iterator.212</td> <td style="text-align: left;">domain_error</td> </tr> <tr> <td style="text-align: left;">invalid_iterator.213</td> <td style="text-align: left;">domain_error</td> </tr> <tr> <td style="text-align: left;">invalid_iterator.214</td> <td style="text-align: left;">out_of_range</td> </tr> <tr> <td style="text-align: left;">type_error.301</td> <td style="text-align: left;">domain_error</td> </tr> <tr> <td style="text-align: left;">type_error.302</td> <td style="text-align: left;">domain_error</td> </tr> <tr> <td style="text-align: left;">type_error.303</td> <td style="text-align: left;">domain_error</td> </tr> <tr> <td style="text-align: left;">type_error.304</td> <td style="text-align: left;">domain_error</td> </tr> <tr> <td style="text-align: left;">type_error.305</td> <td style="text-align: left;">domain_error</td> </tr> <tr> <td style="text-align: left;">type_error.306</td> <td style="text-align: left;">domain_error</td> </tr> <tr> <td style="text-align: left;">type_error.307</td> <td style="text-align: left;">domain_error</td> </tr> <tr> <td style="text-align: left;">type_error.308</td> <td style="text-align: left;">domain_error</td> </tr> <tr> <td style="text-align: left;">type_error.309</td> <td style="text-align: left;">domain_error</td> </tr> <tr> <td style="text-align: left;">type_error.310</td> <td style="text-align: left;">domain_error</td> </tr> <tr> <td style="text-align: left;">type_error.311</td> <td style="text-align: left;">domain_error</td> </tr> <tr> <td style="text-align: left;">type_error.313</td> <td style="text-align: left;">domain_error</td> </tr> <tr> <td style="text-align: left;">type_error.314</td> <td style="text-align: left;">domain_error</td> </tr> <tr> <td style="text-align: left;">type_error.315</td> <td style="text-align: left;">domain_error</td> </tr> <tr> <td style="text-align: left;">out_of_range.401</td> <td style="text-align: left;">out_of_range</td> </tr> <tr> <td style="text-align: left;">out_of_range.402</td> <td style="text-align: left;">out_of_range</td> </tr> <tr> <td style="text-align: left;">out_of_range.403</td> <td style="text-align: left;">out_of_range</td> </tr> <tr> <td style="text-align: left;">out_of_range.404</td> <td style="text-align: left;">out_of_range</td> </tr> <tr> <td style="text-align: left;">out_of_range.405</td> <td style="text-align: left;">domain_error</td> </tr> <tr> <td style="text-align: left;">other_error.501</td> <td style="text-align: left;">domain_error</td> </tr> </tbody> </table> <h4 id=handling-of-nan-and-inf>Handling of <abbr title="Not a Number">NaN</abbr> and INF<a class=headerlink href=#handling-of-nan-and-inf title="Permanent link">&para;</a></h4> <ul> <li> <p>If an overflow occurs during parsing a number from a <abbr title="JavaScript Object Notation">JSON</abbr> text, an exception <a href="http://nlohmann.github.io/json/doxygen/classnlohmann_1_1basic__json_a28f7c2f087274a0012eb7a2333ee1580.html#a28f7c2f087274a0012eb7a2333ee1580"><code>json::out_of_range</code></a> is thrown so that the overflow is detected early and roundtripping is guaranteed.</p> </li> <li> <p><abbr title="Not a Number">NaN</abbr> and INF floating-point values can be stored in a <abbr title="JavaScript Object Notation">JSON</abbr> value and are not replaced by null. That is, the basic_json class behaves like <code>double</code> in this regard (no exception occurs). However, <abbr title="Not a Number">NaN</abbr> and INF are serialized to <code>null</code>.</p> </li> </ul> <h4 id=removal-of-deprecated-functions>Removal of deprecated functions<a class=headerlink href=#removal-of-deprecated-functions title="Permanent link">&para;</a></h4> <p>Function <code>explicit basic_json(std::istream&amp; i, const parser_callback_t cb = nullptr)</code> should be replaced by the <code>parse</code> function: Let <code>ss</code> be a stream and <code>cb</code> be a parse callback function.</p> <p>Old code:</p> <div class=highlight><pre><span></span><code><span class=n>json</span><span class=w> </span><span class=nf>j</span><span class=p>(</span><span class=n>ss</span><span class=p>,</span><span class=w> </span><span class=n>cb</span><span class=p>);</span>
-</code></pre></div> <p>New code:</p> <div class=highlight><pre><span></span><code><span class=n>json</span><span class=w> </span><span class=n>j</span><span class=w> </span><span class=o>=</span><span class=w> </span><span class=n>json</span><span class=o>::</span><span class=n>parse</span><span class=p>(</span><span class=n>ss</span><span class=p>,</span><span class=w> </span><span class=n>cb</span><span class=p>);</span>
-</code></pre></div> <p>If no callback function is used, also the following code works:</p> <div class=highlight><pre><span></span><code><span class=n>json</span><span class=w> </span><span class=n>j</span><span class=p>;</span>
-<span class=n>j</span><span class=w> </span><span class=o>&lt;&lt;</span><span class=w> </span><span class=n>ss</span><span class=p>;</span>
-</code></pre></div> <p>or</p> <div class=highlight><pre><span></span><code><span class=n>json</span><span class=w> </span><span class=n>j</span><span class=p>;</span>
-<span class=n>ss</span><span class=w> </span><span class=o>&gt;&gt;</span><span class=w> </span><span class=n>j</span><span class=p>;</span>
-</code></pre></div> <h2 id=v211>v2.1.1<a class=headerlink href=#v211 title="Permanent link">&para;</a></h2> <div class="admonition summary"> <p class=admonition-title>Files</p> <ul> <li><a href="https://github.com/nlohmann/json/releases/download/v2.1.1/json.hpp">json.hpp</a> (437 KB)</li> <li><a href="https://github.com/nlohmann/json/releases/download/v2.1.1/json.hpp.asc">json.hpp.asc</a> (1 KB)</li> </ul> </div> <p>Release date: 2017-02-25 <abbr title="Secure Hash Algorithm">SHA</abbr>-256: faa2321beb1aa7416d035e7417fcfa59692ac3d8c202728f9bcc302e2d558f57</p> <h3 id=summary_15>Summary<a class=headerlink href=#summary_15 title="Permanent link">&para;</a></h3> <p>This release <strong>fixes a locale-related bug in the parser</strong>. To do so, the whole number handling (lexer, parser, and also the serialization) have been overworked. Furthermore, a lot of small changes added up that were added to this release. All changes are backward-compatible.</p> <h3 id=changes_1>Changes<a class=headerlink href=#changes_1 title="Permanent link">&para;</a></h3> <ul> <li><img alt="🐛" class="twemoji" src="../../assets/external/cdn.jsdelivr.net/gh/jdecked/twemoji@16.0.1/assets/svg/1f41b.svg" title=":bug:"> Locales that have a different character than <code>.</code> as decimal separator (e.g., the Norwegian locale <code>nb_NO.UTF-8</code>) led to truncated number parsing or parse errors. The library now has been fixed to work with <strong>any locale</strong>. Note that <code>.</code> is still the only valid decimal separator for <abbr title="JavaScript Object Notation">JSON</abbr> input.</li> <li><img alt="🐛" class="twemoji" src="../../assets/external/cdn.jsdelivr.net/gh/jdecked/twemoji@16.0.1/assets/svg/1f41b.svg" title=":bug:"> Numbers like <code>1.0</code> were correctly parsed as floating-point number, but serialized as integer (<code>1</code>). Now, <strong>floating-point numbers correctly round trip</strong>.</li> <li><img alt="🐛" class="twemoji" src="../../assets/external/cdn.jsdelivr.net/gh/jdecked/twemoji@16.0.1/assets/svg/1f41b.svg" title=":bug:"> Parsing incorrect <abbr title="JavaScript Object Notation">JSON</abbr> numbers with leading 0 (<code>0123</code>) could yield a <a href="https://github.com/nlohmann/json/issues/452">buffer overflow</a>. This is fixed now by detecting such errors directly by the lexer.</li> <li><img alt="🐛" class="twemoji" src="../../assets/external/cdn.jsdelivr.net/gh/jdecked/twemoji@16.0.1/assets/svg/1f41b.svg" title=":bug:"> Constructing a <abbr title="JavaScript Object Notation">JSON</abbr> value from a pointer was incorrectly interpreted as a Boolean; such code will now yield a compiler error.</li> <li><img alt="🐛" class="twemoji" src="../../assets/external/cdn.jsdelivr.net/gh/jdecked/twemoji@16.0.1/assets/svg/1f41b.svg" title=":bug:"> Comparing a <abbr title="JavaScript Object Notation">JSON</abbr> number with <code>0</code> led to a comparison with <code>null</code>. This is fixed now.</li> <li><img alt="🐛" class="twemoji" src="../../assets/external/cdn.jsdelivr.net/gh/jdecked/twemoji@16.0.1/assets/svg/1f41b.svg" title=":bug:"> All throw calls are now wrapped in macros.</li> <li><img alt="🔒" class="twemoji" src="../../assets/external/cdn.jsdelivr.net/gh/jdecked/twemoji@16.0.1/assets/svg/1f512.svg" title=":lock:"> Starting during the preparation of this release (since 8 February 2017), commits and released files are <strong>cryptographically signed</strong> with <a href="https://keybase.io/nlohmann/pgp_keys.asc?fingerprint=797167ae41c0a6d9232e48457f3cea63ae251b69">this GPG key</a>. Previous releases have also been signed.</li> <li><img alt="✨" class="twemoji" src="../../assets/external/cdn.jsdelivr.net/gh/jdecked/twemoji@16.0.1/assets/svg/2728.svg" title=":sparkles:"> The parser for MessagePack and <abbr title="Concise Binary Object Representation">CBOR</abbr> now supports an optional start index parameter to define a byte offset for the parser.</li> <li><img alt="🚨" class="twemoji" src="../../assets/external/cdn.jsdelivr.net/gh/jdecked/twemoji@16.0.1/assets/svg/1f6a8.svg" title=":rotating_light:"> Some more warnings have been fixed. With Clang, the code compiles <strong>without warnings</strong> with <code>-Weverything</code> (well, it needs <code>-Wno-documentation-unknown-command</code> and <code>-Wno-deprecated-declarations</code>, but you get the point).</li> <li><img alt="🔨" class="twemoji" src="../../assets/external/cdn.jsdelivr.net/gh/jdecked/twemoji@16.0.1/assets/svg/1f528.svg" title=":hammer:"> The code can be compiled easier with many Android NDKs by avoiding macros like <code>UINT8_MAX</code> which previously required defining a preprocessor macro for compilation.</li> <li><img alt="⚡" class="twemoji" src="../../assets/external/cdn.jsdelivr.net/gh/jdecked/twemoji@16.0.1/assets/svg/26a1.svg" title=":zap:"> The unit tests now compile two times faster.</li> <li><img alt="➕" class="twemoji" src="../../assets/external/cdn.jsdelivr.net/gh/jdecked/twemoji@16.0.1/assets/svg/2795.svg" title=":heavy_plus_sign:"> <a href="https://github.com/sakra/cotire">Cotire</a> is used to speed up the build.</li> <li><img alt="✏" class="twemoji" src="../../assets/external/cdn.jsdelivr.net/gh/jdecked/twemoji@16.0.1/assets/svg/270f.svg" title=":pencil2:"> Fixed a lot of typos in the documentation.</li> <li><img alt="📝" class="twemoji" src="../../assets/external/cdn.jsdelivr.net/gh/jdecked/twemoji@16.0.1/assets/svg/1f4dd.svg" title=":memo:"> Added a section to the README file that lists all used <a href="https://github.com/nlohmann/json#used-third-party-tools">third-party code/tools</a>.</li> <li><img alt="📝" class="twemoji" src="../../assets/external/cdn.jsdelivr.net/gh/jdecked/twemoji@16.0.1/assets/svg/1f4dd.svg" title=":memo:"> Added a note on constructing a string value vs. parsing.</li> <li><img alt="✅" class="twemoji" src="../../assets/external/cdn.jsdelivr.net/gh/jdecked/twemoji@16.0.1/assets/svg/2705.svg" title=":white_check_mark:"> The test suite now contains 11202597 unit tests.</li> <li><img alt="📝" class="twemoji" src="../../assets/external/cdn.jsdelivr.net/gh/jdecked/twemoji@16.0.1/assets/svg/1f4dd.svg" title=":memo:"> Improved the <a href="https://nlohmann.github.io/json/">Doxygen documentation</a> by shortening the template parameters of class <code>basic_json</code>.</li> <li><img alt="👷" class="twemoji" src="../../assets/external/cdn.jsdelivr.net/gh/jdecked/twemoji@16.0.1/assets/svg/1f477.svg" title=":construction_worker:"> Removed Doozer.</li> <li><img alt="👷" class="twemoji" src="../../assets/external/cdn.jsdelivr.net/gh/jdecked/twemoji@16.0.1/assets/svg/1f477.svg" title=":construction_worker:"> Added Codacity.</li> <li><img alt="⬆" class="twemoji" src="../../assets/external/cdn.jsdelivr.net/gh/jdecked/twemoji@16.0.1/assets/svg/2b06.svg" title=":arrow_up:"> Upgraded Catch to version 1.7.2.</li> </ul> <h2 id=v210>v2.1.0<a class=headerlink href=#v210 title="Permanent link">&para;</a></h2> <div class="admonition summary"> <p class=admonition-title>Files</p> <ul> <li><a href="https://github.com/nlohmann/json/releases/download/v2.1.0/json.hpp">json.hpp</a> (426 KB)</li> <li><a href="https://github.com/nlohmann/json/releases/download/v2.1.0/json.hpp.asc">json.hpp.asc</a> (1 KB)</li> </ul> </div> <ul> <li>Release date: 2017-01-28</li> <li><abbr title="Secure Hash Algorithm">SHA</abbr>-256: a571dee92515b685784fd527e38405cf3f5e13e96edbfe3f03d6df2e363a767b</li> </ul> <h3 id=summary_16>Summary<a class=headerlink href=#summary_16 title="Permanent link">&para;</a></h3> <p>This release introduces a means to convert from/to user-defined types. The release is backwards compatible.</p> <p><img alt="conversion" src="../../assets/external/cloud.githubusercontent.com/assets/159488/22399173/aebe8f7a-e597-11e6-930f-7494ee615827.png"></p> <h3 id=changes_2>Changes<a class=headerlink href=#changes_2 title="Permanent link">&para;</a></h3> <ul> <li><img alt="✨" class="twemoji" src="../../assets/external/cdn.jsdelivr.net/gh/jdecked/twemoji@16.0.1/assets/svg/2728.svg" title=":sparkles:"> The library now offers an elegant way to <strong>convert from and to arbitrary value types</strong>. All you need to do is to implement two functions: <code>to_json</code> and <code>from_json</code>. Then, a conversion is as simple as putting a <code>=</code> between variables. See the <a href="https://github.com/nlohmann/json#arbitrary-types-conversions">README</a> for more information and examples.</li> <li><img alt="✨" class="twemoji" src="../../assets/external/cdn.jsdelivr.net/gh/jdecked/twemoji@16.0.1/assets/svg/2728.svg" title=":sparkles:"> <strong>Exceptions can now be switched off.</strong> This can be done by defining the preprocessor symbol <code>JSON_NOEXCEPTION</code> or by passing <code>-fno-exceptions</code> to your compiler. In case the code would usually thrown an exception, <code>abort()</code> is now called.</li> <li><img alt="✨" class="twemoji" src="../../assets/external/cdn.jsdelivr.net/gh/jdecked/twemoji@16.0.1/assets/svg/2728.svg" title=":sparkles:"> <strong>Information on the library</strong> can be queried with the new (static) function <code>meta()</code> which returns a <abbr title="JavaScript Object Notation">JSON</abbr> object with information on the version, compiler, and platform. See the <a href>documentation</a> for an example.</li> <li><img alt="🐛" class="twemoji" src="../../assets/external/cdn.jsdelivr.net/gh/jdecked/twemoji@16.0.1/assets/svg/1f41b.svg" title=":bug:"> A bug in the <abbr title="Concise Binary Object Representation">CBOR</abbr> parser was fixed which led to a buffer overflow.</li> <li><img alt="✨" class="twemoji" src="../../assets/external/cdn.jsdelivr.net/gh/jdecked/twemoji@16.0.1/assets/svg/2728.svg" title=":sparkles:"> The function <a href><code>type_name()</code></a> is now public. It allows to query the type of a <abbr title="JavaScript Object Notation">JSON</abbr> value as string.</li> <li><img alt="✅" class="twemoji" src="../../assets/external/cdn.jsdelivr.net/gh/jdecked/twemoji@16.0.1/assets/svg/2705.svg" title=":white_check_mark:"> Added the <a href="https://github.com/minimaxir/big-list-of-naughty-strings">Big List of Naughty Strings</a> as test case.</li> <li><img alt="⬆" class="twemoji" src="../../assets/external/cdn.jsdelivr.net/gh/jdecked/twemoji@16.0.1/assets/svg/2b06.svg" title=":arrow_up:"> Updated to <a href="https://github.com/philsquared/Catch/releases/tag/v1.6.0">Catch v1.6.0</a>.</li> <li><img alt="📝" class="twemoji" src="../../assets/external/cdn.jsdelivr.net/gh/jdecked/twemoji@16.0.1/assets/svg/1f4dd.svg" title=":memo:"> Some typos in the documentation have been fixed.</li> </ul> <h2 id=v2010>v2.0.10<a class=headerlink href=#v2010 title="Permanent link">&para;</a></h2> <div class="admonition summary"> <p class=admonition-title>Files</p> <ul> <li><a href="https://github.com/nlohmann/json/releases/download/v2.0.10/json.hpp">json.hpp</a> (409 KB)</li> <li><a href="https://github.com/nlohmann/json/releases/download/v2.0.10/json.hpp.asc">json.hpp.asc</a> (1 KB)</li> </ul> </div> <ul> <li>Release date: 2017-01-02</li> <li><abbr title="Secure Hash Algorithm">SHA</abbr>-256: ec27d4e74e9ce0f78066389a70724afd07f10761009322dc020656704ad5296d</li> </ul> <h3 id=summary_17>Summary<a class=headerlink href=#summary_17 title="Permanent link">&para;</a></h3> <p>This release fixes several security-relevant bugs in the MessagePack and <abbr title="Concise Binary Object Representation">CBOR</abbr> parsers. The fixes are backwards compatible.</p> <h3 id=changes_3>Changes<a class=headerlink href=#changes_3 title="Permanent link">&para;</a></h3> <ul> <li><img alt="🐛" class="twemoji" src="../../assets/external/cdn.jsdelivr.net/gh/jdecked/twemoji@16.0.1/assets/svg/1f41b.svg" title=":bug:"> Fixed a lot of <strong>bugs in the <abbr title="Concise Binary Object Representation">CBOR</abbr> and MesssagePack parsers</strong>. These bugs occurred if invalid input was parsed and then could lead in buffer overflows. These bugs were found with Google's <a href="https://github.com/google/oss-fuzz">OSS-Fuzz</a>, see #405, #407, #408, #409, #411, and #412 for more information.</li> <li><img alt="👷" class="twemoji" src="../../assets/external/cdn.jsdelivr.net/gh/jdecked/twemoji@16.0.1/assets/svg/1f477.svg" title=":construction_worker:"> We now also use the <strong><a href="https://doozer.io">Doozer</a> continuous integration platform</strong>.</li> <li><img alt="👷" class="twemoji" src="../../assets/external/cdn.jsdelivr.net/gh/jdecked/twemoji@16.0.1/assets/svg/1f477.svg" title=":construction_worker:"> The complete test suite is now also run with <strong>Clang's address sanitizer and undefined-behavior sanitizer</strong>.</li> <li><img alt="✅" class="twemoji" src="../../assets/external/cdn.jsdelivr.net/gh/jdecked/twemoji@16.0.1/assets/svg/2705.svg" title=":white_check_mark:"> Overworked <strong>fuzz testing</strong>; <abbr title="Concise Binary Object Representation">CBOR</abbr> and MessagePack implementations are now fuzz-tested. Furthermore, all fuzz tests now include a round trip which ensures created output can again be properly parsed and yields the same <abbr title="JavaScript Object Notation">JSON</abbr> value.</li> <li><img alt="📝" class="twemoji" src="../../assets/external/cdn.jsdelivr.net/gh/jdecked/twemoji@16.0.1/assets/svg/1f4dd.svg" title=":memo:"> Clarified documentation of <code>find()</code> function to always return <code>end()</code> when called on non-object value types.</li> <li><img alt="🔨" class="twemoji" src="../../assets/external/cdn.jsdelivr.net/gh/jdecked/twemoji@16.0.1/assets/svg/1f528.svg" title=":hammer:"> Moved thirdparty test code to <code>test/thirdparty</code> directory.</li> </ul> <h2 id=v209>v2.0.9<a class=headerlink href=#v209 title="Permanent link">&para;</a></h2> <div class="admonition summary"> <p class=admonition-title>Files</p> <ul> <li><a href="https://github.com/nlohmann/json/releases/download/v2.0.9/json.hpp">json.hpp</a> (406 KB)</li> <li><a href="https://github.com/nlohmann/json/releases/download/v2.0.9/json.hpp.asc">json.hpp.asc</a> (1 KB)</li> </ul> </div> <ul> <li>Release date: 2016-12-16</li> <li><abbr title="Secure Hash Algorithm">SHA</abbr>-256: fbf3396f13e187d6c214c297bddc742d918ea9b55e10bfb3d9f458b9bfdc22e5</li> </ul> <h3 id=summary_18>Summary<a class=headerlink href=#summary_18 title="Permanent link">&para;</a></h3> <p>This release implements with <strong><a href="http://cbor.io"><abbr title="Concise Binary Object Representation">CBOR</abbr></a></strong> and <strong><a href="http://msgpack.org">MessagePack</a></strong> two <strong>binary serialization/deserialization formats</strong>. It further contains some small fixes and improvements. The fixes are backwards compatible.</p> <p><img alt="cbor" src="../../assets/external/cloud.githubusercontent.com/assets/159488/22399181/d4d60d32-e597-11e6-8dcb-825abcf9ac2a.png"></p> <h3 id=changes_4>Changes<a class=headerlink href=#changes_4 title="Permanent link">&para;</a></h3> <ul> <li><img alt="✨" class="twemoji" src="../../assets/external/cdn.jsdelivr.net/gh/jdecked/twemoji@16.0.1/assets/svg/2728.svg" title=":sparkles:"> The library can now read and write the binary formats <strong><a href="http://cbor.io"><abbr title="Concise Binary Object Representation">CBOR</abbr></a></strong> (Concise Binary Object Representation) and <strong><a href="http://msgpack.org">MessagePack</a></strong>. Both formats are aimed to produce a very compact representation of <abbr title="JavaScript Object Notation">JSON</abbr> which can be parsed very efficiently. See the <a href="https://github.com/nlohmann/json#binary-formats-cbor-and-messagepack">README file</a> for more information and examples.</li> <li><img alt="🔥" class="twemoji" src="../../assets/external/cdn.jsdelivr.net/gh/jdecked/twemoji@16.0.1/assets/svg/1f525.svg" title=":fire:"> simplified the iteration implementation allowing to remove dozens of lines of code</li> <li><img alt="🐛" class="twemoji" src="../../assets/external/cdn.jsdelivr.net/gh/jdecked/twemoji@16.0.1/assets/svg/1f41b.svg" title=":bug:"> fixed an <a href="https://github.com/nlohmann/json/issues/389">integer overflow error</a> detected by <a href="https://github.com/google/oss-fuzz">Google's OSS-Fuzz</a></li> <li><img alt="🐛" class="twemoji" src="../../assets/external/cdn.jsdelivr.net/gh/jdecked/twemoji@16.0.1/assets/svg/1f41b.svg" title=":bug:"> suppressed documentation warnings inside the library to facilitate compilation with <code>-Wdocumentation</code></li> <li><img alt="🐛" class="twemoji" src="../../assets/external/cdn.jsdelivr.net/gh/jdecked/twemoji@16.0.1/assets/svg/1f41b.svg" title=":bug:"> fixed an overflow detection error in the number parser</li> <li><img alt="📝" class="twemoji" src="../../assets/external/cdn.jsdelivr.net/gh/jdecked/twemoji@16.0.1/assets/svg/1f4dd.svg" title=":memo:"> updated <a href="https://github.com/nlohmann/json/blob/develop/.github/CONTRIBUTING.md">contribution guidelines</a> to a list of frequentely asked features that will most likely be never added to the library</li> <li><img alt="📝" class="twemoji" src="../../assets/external/cdn.jsdelivr.net/gh/jdecked/twemoji@16.0.1/assets/svg/1f4dd.svg" title=":memo:"> added a <strong>table of contents</strong> to the <a href="https://github.com/nlohmann/json/blob/develop/README.md">README file</a> to add some structure</li> <li><img alt="📝" class="twemoji" src="../../assets/external/cdn.jsdelivr.net/gh/jdecked/twemoji@16.0.1/assets/svg/1f4dd.svg" title=":memo:"> mentioned the many <a href="https://github.com/nlohmann/json/tree/develop/docs/mkdocs/docs/examples">examples</a> and the <a href="https://nlohmann.github.io/json/">documentation</a> in the <a href>README file</a></li> <li><img alt="🔨" class="twemoji" src="../../assets/external/cdn.jsdelivr.net/gh/jdecked/twemoji@16.0.1/assets/svg/1f528.svg" title=":hammer:"> split <a href="https://github.com/nlohmann/json/tree/develop/tests/src">unit tests</a> into individual independent binaries to speed up compilation and testing</li> <li><img alt="✅" class="twemoji" src="../../assets/external/cdn.jsdelivr.net/gh/jdecked/twemoji@16.0.1/assets/svg/2705.svg" title=":white_check_mark:"> the test suite now contains <strong>11201886</strong> tests</li> </ul> <h2 id=v208>v2.0.8<a class=headerlink href=#v208 title="Permanent link">&para;</a></h2> <div class="admonition summary"> <p class=admonition-title>Files</p> <ul> <li><a href="https://github.com/nlohmann/json/releases/download/v2.0.8/json.hpp">json.hpp</a> (360 KB)</li> <li><a href="https://github.com/nlohmann/json/releases/download/v2.0.8/json.hpp.asc">json.hpp.asc</a> (1 KB)</li> </ul> </div> <ul> <li>Release date: 2016-12-02</li> <li><abbr title="Secure Hash Algorithm">SHA</abbr>-256: b70db0ad34f8e0e61dc3f0cbab88099336c9674c193d8a3439d93d6aca2d7120</li> </ul> <h3 id=summary_19>Summary<a class=headerlink href=#summary_19 title="Permanent link">&para;</a></h3> <p>This release combines a lot of small fixes and improvements. The fixes are backwards compatible.</p> <h3 id=changes_5>Changes<a class=headerlink href=#changes_5 title="Permanent link">&para;</a></h3> <ul> <li><img alt="🐛" class="twemoji" src="../../assets/external/cdn.jsdelivr.net/gh/jdecked/twemoji@16.0.1/assets/svg/1f41b.svg" title=":bug:"> fixed a bug that froze the parser if a passed file was not found (now, <code>std::invalid_argument</code> is thrown)</li> <li><img alt="🐛" class="twemoji" src="../../assets/external/cdn.jsdelivr.net/gh/jdecked/twemoji@16.0.1/assets/svg/1f41b.svg" title=":bug:"> fixed a bug that lead to an error of a file at <abbr title="End of File">EOF</abbr> was parsed again (now, <code>std::invalid_argument</code> is thrown)</li> <li><img alt="✨" class="twemoji" src="../../assets/external/cdn.jsdelivr.net/gh/jdecked/twemoji@16.0.1/assets/svg/2728.svg" title=":sparkles:"> the well known functions <a href="http://nlohmann.github.io/json/doxygen/classnlohmann_1_1basic__json_a602f275f0359ab181221384989810604.html#a602f275f0359ab181221384989810604"><code>emplace</code></a> and <a href="http://nlohmann.github.io/json/doxygen/classnlohmann_1_1basic__json_af8a435033327d9237da414afc1cce513.html#af8a435033327d9237da414afc1cce513"><code>emplace_back</code></a> have been added to <abbr title="JavaScript Object Notation">JSON</abbr> values and work as expected</li> <li><img alt="⚡" class="twemoji" src="../../assets/external/cdn.jsdelivr.net/gh/jdecked/twemoji@16.0.1/assets/svg/26a1.svg" title=":zap:"> improved the performance of the serialization (<code>dump</code> function)</li> <li><img alt="⚡" class="twemoji" src="../../assets/external/cdn.jsdelivr.net/gh/jdecked/twemoji@16.0.1/assets/svg/26a1.svg" title=":zap:"> improved the performance of the deserialization (parser)</li> <li><img alt="👷" class="twemoji" src="../../assets/external/cdn.jsdelivr.net/gh/jdecked/twemoji@16.0.1/assets/svg/1f477.svg" title=":construction_worker:"> some continuous integration images at <a href="https://travis-ci.org/nlohmann/json">Travis</a> were added and retired; see <a href="https://github.com/nlohmann/json#supported-compilers">here</a> for the current continuous integration setup</li> <li><img alt="👷" class="twemoji" src="../../assets/external/cdn.jsdelivr.net/gh/jdecked/twemoji@16.0.1/assets/svg/1f477.svg" title=":construction_worker:"> the <a href="https://scan.coverity.com/projects/nlohmann-json">Coverity scan</a> works again</li> <li><img alt="📈" class="twemoji" src="../../assets/external/cdn.jsdelivr.net/gh/jdecked/twemoji@16.0.1/assets/svg/1f4c8.svg" title=":chart_with_upwards_trend:"> the benchmarking code has been improved to produce more stable results</li> <li><img alt="📝" class="twemoji" src="../../assets/external/cdn.jsdelivr.net/gh/jdecked/twemoji@16.0.1/assets/svg/1f4dd.svg" title=":memo:"> the <a href="https://github.com/nlohmann/json/blob/develop/README.md">README</a> file has been extended and includes more frequently asked examples</li> <li><img alt="✅" class="twemoji" src="../../assets/external/cdn.jsdelivr.net/gh/jdecked/twemoji@16.0.1/assets/svg/2705.svg" title=":white_check_mark:"> the test suite now contains 8905518 tests</li> <li><img alt="⬆" class="twemoji" src="../../assets/external/cdn.jsdelivr.net/gh/jdecked/twemoji@16.0.1/assets/svg/2b06.svg" title=":arrow_up:"> updated <a href="https://github.com/philsquared/Catch">Catch</a> to version 1.5.8</li> </ul> <h2 id=v207>v2.0.7<a class=headerlink href=#v207 title="Permanent link">&para;</a></h2> <div class="admonition summary"> <p class=admonition-title>Files</p> <ul> <li><a href="https://github.com/nlohmann/json/releases/download/v2.0.7/json.hpp">json.hpp</a> (355 KB)</li> <li><a href="https://github.com/nlohmann/json/releases/download/v2.0.7/json.hpp.asc">json.hpp.asc</a> (1 KB)</li> </ul> </div> <ul> <li>Release date: 2016-11-02</li> <li><abbr title="Secure Hash Algorithm">SHA</abbr>-256: 5545c323670f8165bae90b9dc6078825e86ec310d96cc4e5b47233ea43715bbf</li> </ul> <h3 id=summary_20>Summary<a class=headerlink href=#summary_20 title="Permanent link">&para;</a></h3> <p>This release fixes a few bugs in the <abbr title="JavaScript Object Notation">JSON</abbr> parser found in the <a href="https://seriot.ch/projects/parsing_json.html">Parsing <abbr title="JavaScript Object Notation">JSON</abbr> is a Minefield 💣</a> article. The fixes are backwards compatible.</p> <h3 id=changes_6>Changes<a class=headerlink href=#changes_6 title="Permanent link">&para;</a></h3> <ul> <li>The article <a href="https://seriot.ch/projects/parsing_json.html">Parsing <abbr title="JavaScript Object Notation">JSON</abbr> is a Minefield 💣</a> discusses a lot of pitfalls of the <abbr title="JavaScript Object Notation">JSON</abbr> specification. When investigating the published test cases, a few bugs in the library were found and fixed:</li> <li>Files with less than 5 bytes can now be parsed without error.</li> <li>The library now properly rejects any file encoding other than <abbr title="Unicode Transformation Format">UTF</abbr>-8. Furthermore, incorrect surrogate pairs are properly detected and rejected.</li> <li>The library now accepts all but one "yes" test (y_string_utf16.json): <abbr title="Unicode Transformation Format">UTF</abbr>-16 is not supported.</li> <li>The library rejects all but one "no" test (n_number_then_00.json): Null bytes are treated as end of file instead of an error. This allows to parse input from null-terminated strings.</li> <li>The string length passed to a user-defined string literal is now exploited to choose a more efficient constructor.</li> <li>A few grammar mistakes in the README file have been fixed.</li> </ul> <h2 id=v206>v2.0.6<a class=headerlink href=#v206 title="Permanent link">&para;</a></h2> <div class="admonition summary"> <p class=admonition-title>Files</p> <ul> <li><a href="https://github.com/nlohmann/json/releases/download/v2.0.6/json.hpp">json.hpp</a> (349 KB)</li> <li><a href="https://github.com/nlohmann/json/releases/download/v2.0.6/json.hpp.asc">json.hpp.asc</a> (1 KB)</li> </ul> </div> <ul> <li>Release date: 2016-10-15</li> <li>SHA256: 459cc93d5e2f503e50c6d5876eb86bfea7daf405f5a567c5a2c9abc2383756ae</li> </ul> <h3 id=summary_21>Summary<a class=headerlink href=#summary_21 title="Permanent link">&para;</a></h3> <p>This release fixes the semantics of <code>operator[]</code> for <abbr title="JavaScript Object Notation">JSON</abbr> Pointers (see below). This fix is backwards compatible.</p> <h3 id=changes_7>Changes<a class=headerlink href=#changes_7 title="Permanent link">&para;</a></h3> <ul> <li><strong><code>operator[]</code> for <abbr title="JavaScript Object Notation">JSON</abbr> Pointers</strong> now behaves like the other versions of <code>operator[]</code> and transforms <code>null</code> values into objects or arrays if required. This allows to created nested structures like <code>j["/foo/bar/2"] = 17</code> (yielding <code>{"foo": "bar": [null, null, 17]}</code>) without problems.</li> <li>overworked a helper <abbr title="Substitution failure is not an error">SFINAE</abbr> function</li> <li>fixed some documentation issues</li> <li>fixed the CMake files to allow to run the test suite outside the main project directory</li> <li>restored test coverage to 100%.</li> </ul> <h2 id=v205>v2.0.5<a class=headerlink href=#v205 title="Permanent link">&para;</a></h2> <div class="admonition summary"> <p class=admonition-title>Files</p> <ul> <li><a href="https://github.com/nlohmann/json/releases/download/v2.0.5/json.hpp">json.hpp</a> (347 KB)</li> <li><a href="https://github.com/nlohmann/json/releases/download/v2.0.5/json.hpp.asc">json.hpp.asc</a> (1 KB)</li> </ul> </div> <ul> <li>Release date: 2016-09-14</li> <li><abbr title="Secure Hash Algorithm">SHA</abbr>-256: 8b7565263a44e2b7d3b89808bc73d2d639037ff0c1f379e3d56dbd77e00b98d9</li> </ul> <h3 id=summary_22>Summary<a class=headerlink href=#summary_22 title="Permanent link">&para;</a></h3> <p>This release fixes a regression bug in the stream parser (function <code>parse()</code> and the <code>&lt;&lt;</code>/<code>&gt;&gt;</code> operators). This fix is backwards compatible.</p> <h3 id=changes_8>Changes<a class=headerlink href=#changes_8 title="Permanent link">&para;</a></h3> <ul> <li><strong>Bug fix</strong>: The end of a file stream was not detected properly which led to parse errors. This bug should have been fixed with 2.0.4, but there was still a flaw in the code.</li> </ul> <h2 id=v204>v2.0.4<a class=headerlink href=#v204 title="Permanent link">&para;</a></h2> <div class="admonition summary"> <p class=admonition-title>Files</p> <ul> <li><a href="https://github.com/nlohmann/json/releases/download/v2.0.4/json.hpp">json.hpp</a> (347 KB)</li> <li><a href="https://github.com/nlohmann/json/releases/download/v2.0.4/json.hpp.asc">json.hpp.asc</a> (1 KB)</li> </ul> </div> <ul> <li>Release date: 2016-09-11</li> <li><abbr title="Secure Hash Algorithm">SHA</abbr>-256: 632ceec4c25c4e2153f71470d3a2b992c8355f6d8b4d627d05dd16095cd3aeda</li> </ul> <h3 id=summary_23>Summary<a class=headerlink href=#summary_23 title="Permanent link">&para;</a></h3> <p>This release fixes a bug in the stream parser (function <code>parse()</code> and the <code>&lt;&lt;</code>/<code>&gt;&gt;</code> operators). This fix is backwards compatible.</p> <h3 id=changes_9>Changes<a class=headerlink href=#changes_9 title="Permanent link">&para;</a></h3> <ul> <li><strong>Bug fix</strong>: The end of a file stream was not detected properly which led to parse errors.</li> <li>Fixed a compiler warning about an unused variable.</li> </ul> <h2 id=v203>v2.0.3<a class=headerlink href=#v203 title="Permanent link">&para;</a></h2> <div class="admonition summary"> <p class=admonition-title>Files</p> <ul> <li><a href="https://github.com/nlohmann/json/releases/download/v2.0.3/json.hpp">json.hpp</a> (347 KB)</li> <li><a href="https://github.com/nlohmann/json/releases/download/v2.0.3/json.hpp.asc">json.hpp.asc</a> (1 KB)</li> </ul> </div> <ul> <li>Release date: 2016-08-31</li> <li><abbr title="Secure Hash Algorithm">SHA</abbr>-256: 535b73efe5546fde9e763c14aeadfc7b58183c0b3cd43c29741025aba6cf6bd3</li> </ul> <h3 id=summary_24>Summary<a class=headerlink href=#summary_24 title="Permanent link">&para;</a></h3> <p>This release combines a lot of small fixes and improvements. The release is backwards compatible.</p> <h3 id=changes_10>Changes<a class=headerlink href=#changes_10 title="Permanent link">&para;</a></h3> <ul> <li>The <strong>parser/deserialization functions have been generalized</strong> to process any contiguous sequence of 1-byte elements (e.g., <code>char</code>, <code>unsigned char</code>, <code>uint8_t</code>). This includes all kind of string representations (string literals, char arrays, <code>std::string</code>, <code>const char*</code>), contiguous containers (C-style arrays, <code>std::vector</code>, <code>std::array</code>, <code>std::valarray</code>, <code>std::initializer_list</code>). User-defined containers providing random-access iterator access via <code>std::begin</code> and <code>std::end</code> can be used as well. See the documentation (<a href="https://nlohmann.github.io/json/classnlohmann_1_1basic__json_ace63ac4eb1dd7251a259d32e397461a3.html#ace63ac4eb1dd7251a259d32e397461a3">1</a>, <a href="https://nlohmann.github.io/json/classnlohmann_1_1basic__json_a90f05d55d9d0702c075cd281fd0d85ae.html#a90f05d55d9d0702c075cd281fd0d85ae">2</a>, <a href="https://nlohmann.github.io/json/classnlohmann_1_1basic__json_aeffd70f622f8f2a51fd3d95af64b63a7.html#aeffd70f622f8f2a51fd3d95af64b63a7">3</a>, <a href="https://nlohmann.github.io/json/classnlohmann_1_1basic__json_aa8dca2e91a6301c36890f844e64f0023.html#aa8dca2e91a6301c36890f844e64f0023">4</a>) for more information. Note that contiguous storage cannot be checked at compile time; if any of the parse functions are called with a noncompliant container, the behavior is undefined and will most likely yield segmentation violation. The preconditions are enforced by an assertion unless the library is compiled with preprocessor symbol <code>NDEBUG</code>.</li> <li>As a general remark on <strong>assertions</strong>: The library uses assertions to preclude undefined behavior. A <a href="https://github.com/nlohmann/json/issues/289">prominent example</a> for this is the <code>operator[]</code> for const <abbr title="JavaScript Object Notation">JSON</abbr> objects. The behavior of this const version of the operator is undefined if the given key does not exist in the <abbr title="JavaScript Object Notation">JSON</abbr> object, because unlike the non-const version, it cannot add a <code>null</code> value at the given key. Assertions can be switched of by defining the preprocessor symbol <code>NDEBUG</code>. See the <a href="http://en.cppreference.com/w/cpp/error/assert">documentation of <code>assert</code></a> for more information.</li> <li>In the course of cleaning up the parser/deserialization functions, the constructor <a href="https://nlohmann.github.io/json/classnlohmann_1_1basic__json_a32350263eb105764844c5a85e156a255.html#a32350263eb105764844c5a85e156a255"><code>basic_json(std::istream&amp;, const parser_callback_t)</code></a> has been <strong>deprecated</strong> and will be deleted with the next major release 3.0.0 to unify the interface of the library. Deserialization will be done by stream operators or by calling one of the <code>parse</code> functions. That is, calls like <code>json j(i);</code> for an input stream <code>i</code> need to be replaced by <code>json j = json::parse(i);</code>. Compilers will produce a deprecation warning if client code uses this function.</li> <li>Minor improvements:</li> <li>Improved the performance of the serialization by avoiding the re-creation of a locale object.</li> <li>Fixed two <abbr title="Microsoft Visual C++">MSVC</abbr> warnings. Compiling the test suite with <code>/Wall</code> now only warns about non-inlined functions (C4710) and the deprecation of the constructor from input-stream (C4996).</li> <li>Some project internals:</li> <li><img align="right" src="../../assets/external/bestpractices.coreinfrastructure.org/assets/questions_page_badge-17b338c0e8528d695d8676e23f39f17ca2b89bb88176370803ee69aeebcb5be4.png"> The project has qualified for the <a href="https://bestpractices.coreinfrastructure.org/projects/289">Core Infrastructure Initiative Best Practices Badge</a>. While most requirements where already satisfied, some led to more explicit documentation of quality-ensuring procedures. For instance, static analysis is now executed with every commit on the build server. Furthermore, the <a href="https://github.com/nlohmann/json/blob/develop/.github/CONTRIBUTING.md">contribution guidelines document</a> how to communicate security issues privately.</li> <li>The test suite has been overworked and split into several files to allow for faster compilation and analysis. The execute the test suite, simply execute <code>make check</code>.</li> <li>The continuous integration with <a href="https://travis-ci.org/nlohmann/json">Travis</a> was extended with Clang versions 3.6.0 to 3.8.1 and now includes 18 different compiler/OS combinations.</li> <li>An 11-day run of <a href="http://lcamtuf.coredump.cx/afl/">American fuzzy lop</a> checked 962 million inputs on the parser and found no issue.</li> </ul> <h2 id=v202>v2.0.2<a class=headerlink href=#v202 title="Permanent link">&para;</a></h2> <div class="admonition summary"> <p class=admonition-title>Files</p> <ul> <li><a href="https://github.com/nlohmann/json/releases/download/v2.0.2/json.hpp">json.hpp</a> (338 KB)</li> <li><a href="https://github.com/nlohmann/json/releases/download/v2.0.2/json.hpp.asc">json.hpp.asc</a> (1 KB)</li> </ul> </div> <ul> <li>Release date: 2016-07-31</li> <li><abbr title="Secure Hash Algorithm">SHA</abbr>-256: 8e97b7965b4594b00998d6704465412360e1a0ed927badb51ded8b82291a8f3d</li> </ul> <h3 id=summary_25>Summary<a class=headerlink href=#summary_25 title="Permanent link">&para;</a></h3> <p>This release combines a lot of small fixes and improvements. The release is backwards compatible.</p> <h3 id=changes_11>Changes<a class=headerlink href=#changes_11 title="Permanent link">&para;</a></h3> <ul> <li>The <strong>parser</strong> has been overworked, and a lot of small issues have been fixed:</li> <li>Improved parser performance by avoiding recursion and using move semantics for the return value.</li> <li>Unescaped control characters <code>\x10</code>-<code>\x1f</code> are not accepted any more.</li> <li>Fixed a bug in the parser when reading from an input stream.</li> <li>Improved test case coverage for <abbr title="Unicode Transformation Format">UTF</abbr>-8 parsing: now, all valid Unicode code points are tested both escaped and unescaped.</li> <li>The precision of output streams is now preserved by the parser.</li> <li>Started to check the <strong>code correctness</strong> by proving termination of important loops. Furthermore, individual assertions have been replaced by a more systematic function which checks the class invariants. Note that assertions should be switched off in production by defining the preprocessor macro <code>NDEBUG</code>, see the <a href="http://en.cppreference.com/w/cpp/error/assert">documentation of <code>assert</code></a>.</li> <li>A lot of <strong>code cleanup</strong>: removed unused headers, fixed some compiler warnings, and fixed a build error for Windows-based Clang builds.</li> <li>Added some compile-time checks:</li> <li>Unsupported compilers are rejected during compilation with an <code>#error</code> command.</li> <li>Static assertion prohibits code with incompatible pointer types used in <code>get_ptr()</code>.</li> <li>Improved the <a href="https://nlohmann.github.io/json/">documentation</a>, and adjusted the documentation script to choose the correct version of <code>sed</code>.</li> <li>Replaced a lot of "raw loops" by <abbr title="Standard Template Library">STL</abbr> functions like <code>std::all_of</code>, <code>std::for_each</code>, or <code>std::accumulate</code>. This facilitates reasoning about termination of loops and sometimes allowed to simplify functions to a single return statement.</li> <li>Implemented a <code>value()</code> function for <abbr title="JavaScript Object Notation">JSON</abbr> pointers (similar to <code>at</code> function).</li> <li>The Homebrew formula (see <a href="https://github.com/nlohmann/json#integration">Integration</a>) is now tested for all Xcode builds (6.1 - 8.x) with Travis.</li> <li>Avoided output to <code>std::cout</code> in the test cases.</li> </ul> <h2 id=v201>v2.0.1<a class=headerlink href=#v201 title="Permanent link">&para;</a></h2> <div class="admonition summary"> <p class=admonition-title>Files</p> <ul> <li><a href="https://github.com/nlohmann/json/releases/download/v2.0.1/json.hpp">json.hpp</a> (321 KB)</li> <li><a href="https://github.com/nlohmann/json/releases/download/v2.0.1/json.hpp.asc">json.hpp.asc</a> (1 KB)</li> </ul> </div> <ul> <li>Release date: 2016-06-28</li> <li><abbr title="Secure Hash Algorithm">SHA</abbr>-256: ef550fcd7df572555bf068e9ec4e9d3b9e4cdd441cecb0dcea9ea7fd313f72dd</li> </ul> <h3 id=summary_26>Summary<a class=headerlink href=#summary_26 title="Permanent link">&para;</a></h3> <p>This release fixes a performance regression in the <abbr title="JavaScript Object Notation">JSON</abbr> serialization (function <code>dump()</code>). This fix is backwards compatible.</p> <h3 id=changes_12>Changes<a class=headerlink href=#changes_12 title="Permanent link">&para;</a></h3> <ul> <li>The locale of the output stream (or the internal string stream if a <abbr title="JavaScript Object Notation">JSON</abbr> value is serialized to a string) is now adjusted once for the whole serialization instead of for each floating-point number.</li> <li>The locale of an output stream is now correctly reset to the previous value by the <abbr title="JavaScript Object Notation">JSON</abbr> library.</li> </ul> <h2 id=v200>v2.0.0<a class=headerlink href=#v200 title="Permanent link">&para;</a></h2> <div class="admonition summary"> <p class=admonition-title>Files</p> <ul> <li><a href="https://github.com/nlohmann/json/releases/download/v2.0.0/json.hpp">json.hpp</a> (321 KB)</li> <li><a href="https://github.com/nlohmann/json/releases/download/v2.0.0/json.hpp.asc">json.hpp.asc</a> (1 KB)</li> </ul> </div> <ul> <li>Release date: 2016-06-24</li> <li><abbr title="Secure Hash Algorithm">SHA</abbr>-256: ac9e1fb25c2ac9ca5fc501fcd2fe3281fe04f07018a1b48820e7b1b11491bb6c</li> </ul> <h3 id=summary_27>Summary<a class=headerlink href=#summary_27 title="Permanent link">&para;</a></h3> <p>This release adds several features such as <abbr title="JavaScript Object Notation">JSON</abbr> Pointers, <abbr title="JavaScript Object Notation">JSON</abbr> Patch, or support for 64 bit unsigned integers. Furthermore, several (subtle) bugs have been fixed.</p> <p>As <code>noexcept</code> and <code>constexpr</code> specifier have been added to several functions, the public <abbr title="Application Programming Interfaces">API</abbr> has effectively been changed in a (potential) non-backwards compatible manner. As we adhere to <a href="http://semver.org">Semantic Versioning</a>, this calls for a new major version, so say hello to 2️⃣.0️⃣.0️⃣.</p> <h3 id=changes_13>Changes<a class=headerlink href=#changes_13 title="Permanent link">&para;</a></h3> <ul> <li>🔟 A <abbr title="JavaScript Object Notation">JSON</abbr> value now uses <code>uint64_t</code> (default value for template parameter <code>NumberUnsignedType</code>) as data type for <strong>unsigned integer</strong> values. This type is used automatically when an unsigned number is parsed. Furthermore, constructors, conversion operators and an <code>is_number_unsigned()</code> test have been added.</li> <li>👉 <strong><abbr title="JavaScript Object Notation">JSON</abbr> Pointer</strong> (<a href="https://tools.ietf.org/html/rfc6901"><abbr title="Request for Comments">RFC</abbr> 6901</a>) support: A <abbr title="JavaScript Object Notation">JSON</abbr> Pointer is a string (similar to an XPath expression) to address a value inside a structured <abbr title="JavaScript Object Notation">JSON</abbr> value. <abbr title="JavaScript Object Notation">JSON</abbr> Pointers can be used in <code>at()</code> and <code>operator[]</code> functions. Furthermore, <abbr title="JavaScript Object Notation">JSON</abbr> values can be “flattened” to key/value pairs using <code>flatten()</code> where each key is a <abbr title="JavaScript Object Notation">JSON</abbr> Pointer. The original value can be restored by “unflattening” the flattened value using <code>unflatten()</code>.</li> <li>🏥 <strong><abbr title="JavaScript Object Notation">JSON</abbr> Patch</strong> (<a href="https://tools.ietf.org/html/rfc6902"><abbr title="Request for Comments">RFC</abbr> 6902</a>) support. A <abbr title="JavaScript Object Notation">JSON</abbr> Patch is a <abbr title="JavaScript Object Notation">JSON</abbr> value that describes the required edit operations (add, change, remove, …) to transform a <abbr title="JavaScript Object Notation">JSON</abbr> value into another one. A <abbr title="JavaScript Object Notation">JSON</abbr> Patch can be created with function <code>diff(const basic_json&amp;)</code> and applied with <code>patch(const basic_json&amp;)</code>. Note the created patches use a rather primitive algorithm so far and leave room for improvement.</li> <li>🇪🇺 The code is now <strong>locale-independent</strong>: Floating-point numbers are always serialized with a period (<code>.</code>) as decimal separator and ignores different settings from the locale.</li> <li>🍺 <strong>Homebrew</strong> support: Install the library with <code>brew tap nlohmann/json &amp;&amp; brew install nlohmann_json</code>.</li> <li>Added constructor to create a <abbr title="JavaScript Object Notation">JSON</abbr> value by parsing a <code>std::istream</code> (e.g., <code>std::stringstream</code> or <code>std::ifstream</code>).</li> <li>Added <strong><code>noexcept</code></strong> specifier to <code>basic_json(boolean_t)</code>, <code>basic_json(const number_integer_t)</code>, <code>basic_json(const int)</code>, <code>basic_json(const number_float_t)</code>, iterator functions (<code>begin()</code>, <code>end()</code>, etc.)</li> <li>When parsing numbers, the sign of <code>0.0</code> (vs. <code>-0.0</code>) is preserved.</li> <li>Improved <abbr title="Microsoft Visual C++">MSVC</abbr> 2015, Android, and MinGW support. See <a href="https://github.com/nlohmann/json#supported-compilers">README</a> for more information.</li> <li>Improved test coverage (added 2,225,386 tests).</li> <li>Removed some misuses of <code>std::move</code>.</li> <li>Fixed several compiler warnings.</li> <li>Improved error messages from <abbr title="JavaScript Object Notation">JSON</abbr> parser.</li> <li>Updated to <a href="http://re2c.org"><code>re2c</code></a> to version 0.16 to use a minimal DFAs for the lexer.</li> <li>Updated test suite to use <a href="https://github.com/philsquared/Catch">Catch</a> version 1.5.6.</li> <li>Made type getters (<code>is_number</code>, etc.) and const value access <code>constexpr</code>.</li> <li>Functions <code>push_back</code> and <code>operator+=</code> now work with key/value pairs passed as initializer list, e.g. <code>j_object += {"key", 1}</code>.</li> <li>Overworked <code>CMakeLists.txt</code> to make it easier to integrate the library into other projects.</li> </ul> <h3 id=notes>Notes<a class=headerlink href=#notes title="Permanent link">&para;</a></h3> <ul> <li>Parser error messages are still very vague and contain no information on the error location.</li> <li>The implemented <code>diff</code> function is rather primitive and does not create minimal diffs.</li> <li>The name of function <code>iteration_wrapper</code> may change in the future and the function will be deprecated in the next release.</li> <li>Roundtripping (i.e., parsing a <abbr title="JavaScript Object Notation">JSON</abbr> value from a string, serializing it, and comparing the strings) of floating-point numbers is not 100% accurate. Note that <a href="https://tools.ietf.org/html/rfc8259"><abbr title="Request for Comments">RFC</abbr> 8259</a> defines no format to internally represent numbers and states not requirement for roundtripping. Nevertheless, benchmarks like <a href="https://github.com/miloyip/nativejson-benchmark">Native <abbr title="JavaScript Object Notation">JSON</abbr> Benchmark</a> treat roundtripping deviations as conformance errors.</li> </ul> <h2 id=v110>v1.1.0<a class=headerlink href=#v110 title="Permanent link">&para;</a></h2> <div class="admonition summary"> <p class=admonition-title>Files</p> <ul> <li><a href="https://github.com/nlohmann/json/releases/download/v1.1.0/json.hpp">json.hpp</a> (257 KB)</li> <li><a href="https://github.com/nlohmann/json/releases/download/v1.1.0/json.hpp.asc">json.hpp.asc</a> (1 KB)</li> </ul> </div> <ul> <li>Release date: 2016-01-24</li> <li><abbr title="Secure Hash Algorithm">SHA</abbr>-256: c0cf0e3017798ca6bb18e757ebc570d21a3bdac877845e2b9e9573d183ed2f05</li> </ul> <h3 id=summary_28>Summary<a class=headerlink href=#summary_28 title="Permanent link">&para;</a></h3> <p>This release fixes several small bugs and adds functionality in a backwards-compatible manner. Compared to the <a href="https://github.com/nlohmann/json/releases/tag/v1.0.0">last version (1.0.0)</a>, the following changes have been made:</p> <h3 id=changes_14>Changes<a class=headerlink href=#changes_14 title="Permanent link">&para;</a></h3> <ul> <li><em>Fixed</em>: <strong>Floating-point numbers</strong> are now serialized and deserialized properly such that roundtripping works in more cases. [#185, #186, #190, #191, #194]</li> <li><em>Added</em>: The code now contains <strong>assertions</strong> to detect undefined behavior during development. As the standard function <code>assert</code> is used, the assertions can be switched off by defining the preprocessor symbol <code>NDEBUG</code> during compilation. [#168]</li> <li><em>Added</em>: It is now possible to get a <strong>reference</strong> to the stored values via the newly added function <code>get_ref()</code>. [#128, #184]</li> <li><em>Fixed</em>: Access to object values via keys (<strong><code>operator[]</code></strong>) now works with all kind of string representations. [#171, #189]</li> <li><em>Fixed</em>: The code now compiles again with <strong>Microsoft Visual Studio 2015</strong>. [#144, #167, #188]</li> <li><em>Fixed</em>: All required headers are now included.</li> <li><em>Fixed</em>: Typos and other small issues. [#162, #166, #175, #177, #179, #180]</li> </ul> <h3 id=notes_1>Notes<a class=headerlink href=#notes_1 title="Permanent link">&para;</a></h3> <p>There are still known open issues (#178, #187) which will be fixed in version 2.0.0. However, these fixes will require a small <abbr title="Application Programming Interfaces">API</abbr> change and will not be entirely backwards-compatible.</p> <h2 id=v100>v1.0.0<a class=headerlink href=#v100 title="Permanent link">&para;</a></h2> <div class="admonition summary"> <p class=admonition-title>Files</p> <ul> <li><a href="https://github.com/nlohmann/json/releases/download/v1.0.0/json.hpp">json.hpp</a> (243 KB)</li> <li><a href="https://github.com/nlohmann/json/releases/download/v1.0.0/json.hpp.asc">json.hpp.asc</a> (1 KB)</li> </ul> </div> <ul> <li>Release date: 2015-12-28</li> <li><abbr title="Secure Hash Algorithm">SHA</abbr>-256: 767dc2fab1819d7b9e19b6e456d61e38d21ef7182606ecf01516e3f5230446de</li> </ul> <h3 id=summary_29>Summary<a class=headerlink href=#summary_29 title="Permanent link">&para;</a></h3> <p>This is the first official release. Compared to the <a href="https://github.com/nlohmann/json/releases/tag/v1.0.0-rc1">prerelease version 1.0.0-rc1</a>, only a few minor improvements have been made:</p> <h3 id=changes_15>Changes<a class=headerlink href=#changes_15 title="Permanent link">&para;</a></h3> <ul> <li><em>Changed</em>: A <strong><abbr title="Unicode Transformation Format">UTF</abbr>-8 byte order mark</strong> is silently ignored.</li> <li><em>Changed</em>: <code>sprintf</code> is no longer used.</li> <li><em>Changed</em>: <code>iterator_wrapper</code> also works for const objects; note: the name may change!</li> <li><em>Changed</em>: <strong>Error messages</strong> during deserialization have been improved.</li> <li><em>Added</em>: The <code>parse</code> function now also works with type <code>std::istream&amp;&amp;</code>.</li> <li><em>Added</em>: Function <code>value(key, default_value)</code> returns either a copy of an object's element at the specified key or a given default value if no element with the key exists.</li> <li><em>Added</em>: Public functions are tagged with the version they were introduced. This shall allow for better <strong>versioning</strong> in the future.</li> <li><em>Added</em>: All public functions and types are <strong>documented</strong> (see <a href="http://nlohmann.github.io/json/doxygen/">http://nlohmann.github.io/json/doxygen/</a>) including executable examples.</li> <li><em>Added</em>: Allocation of all types (in particular arrays, strings, and objects) is now exception-safe.</li> <li><em>Added</em>: They descriptions of thrown exceptions have been overworked and are part of the tests suite and documentation.</li> </ul> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 23, 2026 11:16:18 UTC">June 23, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
+<!doctype html><html lang=en class=no-js> <head><meta charset=utf-8><meta name=viewport content="width=device-width,initial-scale=1"><meta name=author content="Niels Lohmann"><link href="https://json.nlohmann.me/home/releases/" rel="canonical"><link href=../exceptions/ rel=prev><link href=../design_goals/ rel=next><link rel=icon href=../../assets/images/favicon.png><meta name=generator content="mkdocs-1.6.1, mkdocs-material-9.7.6"><title>Releases - JSON for Modern C++</title><link rel=stylesheet href=../../assets/stylesheets/main.484c7ddc.min.css><link rel=stylesheet href=../../assets/stylesheets/palette.ab4e12ef.min.css><link rel="stylesheet" href="../../assets/external/fonts.googleapis.com/css.61a430c9.css"><style>:root{--md-text-font:"Roboto";--md-code-font:"JetBrains Mono"}</style><link rel=stylesheet href=../../css/custom.css><script>__md_scope=new URL("../..",location),__md_hash=e=>[...e].reduce(((e,_)=>(e<<5)-e+_.charCodeAt(0)),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script></head> <body dir=ltr data-md-color-scheme=default data-md-color-primary=indigo data-md-color-accent=indigo> <input class=md-toggle data-md-toggle=drawer type=checkbox id=__drawer autocomplete=off> <input class=md-toggle data-md-toggle=search type=checkbox id=__search autocomplete=off> <label class=md-overlay for=__drawer></label> <div data-md-component=skip> <a href=#releases class=md-skip> Skip to content </a> </div> <div data-md-component=announce> </div> <header class=md-header data-md-component=header> <nav class="md-header__inner md-grid" aria-label=Header> <a href=../.. title="JSON for Modern C++" class="md-header__button md-logo" aria-label="JSON for Modern C++" data-md-component=logo> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54"/></svg> </a> <label class="md-header__button md-icon" for=__drawer> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M3 6h18v2H3zm0 5h18v2H3zm0 5h18v2H3z"/></svg> </label> <div class=md-header__title data-md-component=header-title> <div class=md-header__ellipsis> <div class=md-header__topic> <span class=md-ellipsis> JSON for Modern C++ </span> </div> <div class=md-header__topic data-md-component=header-topic> <span class=md-ellipsis> Releases </span> </div> </div> </div> <form class=md-header__option data-md-component=palette> <input class=md-option data-md-color-media="(prefers-color-scheme: light)" data-md-color-scheme=default data-md-color-primary=indigo data-md-color-accent=indigo aria-label="Switch to dark mode" type=radio name=__palette id=__palette_0> <label class="md-header__button md-icon" title="Switch to dark mode" for=__palette_1 hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a4 4 0 0 0-4 4 4 4 0 0 0 4 4 4 4 0 0 0 4-4 4 4 0 0 0-4-4m0 10a6 6 0 0 1-6-6 6 6 0 0 1 6-6 6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12z"/></svg> </label> <input class=md-option data-md-color-media="(prefers-color-scheme: dark)" data-md-color-scheme=slate data-md-color-primary=indigo data-md-color-accent=indigo aria-label="Switch to light mode" type=radio name=__palette id=__palette_1> <label class="md-header__button md-icon" title="Switch to light mode" for=__palette_0 hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 18c-.89 0-1.74-.2-2.5-.55C11.56 16.5 13 14.42 13 12s-1.44-4.5-3.5-5.45C10.26 6.2 11.11 6 12 6a6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12z"/></svg> </label> </form> <script>var palette=__md_get("__palette");if(palette&&palette.color){if("(prefers-color-scheme)"===palette.color.media){var media=matchMedia("(prefers-color-scheme: light)"),input=document.querySelector(media.matches?"[data-md-color-media='(prefers-color-scheme: light)']":"[data-md-color-media='(prefers-color-scheme: dark)']");palette.color.media=input.getAttribute("data-md-color-media"),palette.color.scheme=input.getAttribute("data-md-color-scheme"),palette.color.primary=input.getAttribute("data-md-color-primary"),palette.color.accent=input.getAttribute("data-md-color-accent")}for(var[key,value]of Object.entries(palette.color))document.body.setAttribute("data-md-color-"+key,value)}</script> <label class="md-header__button md-icon" for=__search> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg> </label> <div class=md-search data-md-component=search role=dialog> <label class=md-search__overlay for=__search></label> <div class=md-search__inner role=search> <form class=md-search__form name=search> <input type=text class=md-search__input name=query aria-label=Search placeholder=Search autocapitalize=off autocorrect=off autocomplete=off spellcheck=false data-md-component=search-query required> <label class="md-search__icon md-icon" for=__search> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11z"/></svg> </label> <nav class=md-search__options aria-label=Search> <button type=reset class="md-search__icon md-icon" title=Clear aria-label=Clear tabindex=-1> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z"/></svg> </button> </nav> </form> <div class=md-search__output> <div class=md-search__scrollwrap tabindex=0 data-md-scrollfix> <div class=md-search-result data-md-component=search-result> <div class=md-search-result__meta> Initializing search </div> <ol class=md-search-result__list role=presentation></ol> </div> </div> </div> </div> </div> <div class=md-header__source> <a href="https://github.com/nlohmann/json" title="Go to repository" class="md-source" data-md-component="source"> <div class="md-source__icon md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </div> <div class=md-source__repository> nlohmann/json </div> </a> </div> </nav> </header> <div class=md-container data-md-component=container> <nav class=md-tabs aria-label=Tabs data-md-component=tabs> <div class=md-grid> <ul class=md-tabs__list> <li class="md-tabs__item md-tabs__item--active"> <a href=../.. class=md-tabs__link> Home </a> </li> <li class=md-tabs__item> <a href=../../features/arbitrary_types/ class=md-tabs__link> Features </a> </li> <li class=md-tabs__item> <a href=../../integration/ class=md-tabs__link> Integration </a> </li> <li class=md-tabs__item> <a href=../../api/basic_json/ class=md-tabs__link> API Documentation </a> </li> <li class=md-tabs__item> <a href=../../community/ class=md-tabs__link> Community </a> </li> </ul> </div> </nav> <main class=md-main data-md-component=main> <div class="md-main__inner md-grid"> <div class="md-sidebar md-sidebar--primary" data-md-component=sidebar data-md-type=navigation> <div class=md-sidebar__scrollwrap> <div class=md-sidebar__inner> <nav class="md-nav md-nav--primary md-nav--lifted" aria-label=Navigation data-md-level=0> <label class=md-nav__title for=__drawer> <a href=../.. title="JSON for Modern C++" class="md-nav__button md-logo" aria-label="JSON for Modern C++" data-md-component=logo> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54"/></svg> </a> JSON for Modern C++ </label> <div class=md-nav__source> <a href="https://github.com/nlohmann/json" title="Go to repository" class="md-source" data-md-component="source"> <div class="md-source__icon md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </div> <div class=md-source__repository> nlohmann/json </div> </a> </div> <ul class=md-nav__list data-md-scrollfix> <li class="md-nav__item md-nav__item--active md-nav__item--section md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_1 checked> <div class="md-nav__link md-nav__container"> <a href=../.. class="md-nav__link "> <span class=md-ellipsis> Home </span> </a> <label class="md-nav__link " for=__nav_1 id=__nav_1_label tabindex> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_1_label aria-expanded=true> <label class=md-nav__title for=__nav_1> <span class="md-nav__icon md-icon"></span> Home </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../license/ class=md-nav__link> <span class=md-ellipsis> License </span> </a> </li> <li class=md-nav__item> <a href=../faq/ class=md-nav__link> <span class=md-ellipsis> FAQ </span> </a> </li> <li class=md-nav__item> <a href=../exceptions/ class=md-nav__link> <span class=md-ellipsis> Exceptions </span> </a> </li> <li class="md-nav__item md-nav__item--active"> <input class="md-nav__toggle md-toggle" type=checkbox id=__toc> <label class="md-nav__link md-nav__link--active" for=__toc> <span class=md-ellipsis> Releases </span> <span class="md-nav__icon md-icon"></span> </label> <a href=./ class="md-nav__link md-nav__link--active"> <span class=md-ellipsis> Releases </span> </a> <nav class="md-nav md-nav--secondary" aria-label="Table of contents"> <label class=md-nav__title for=__toc> <span class="md-nav__icon md-icon"></span> Table of contents </label> <ul class=md-nav__list data-md-component=toc data-md-scrollfix> <li class=md-nav__item> <a href=#v3120-2025-04-11 class=md-nav__link> <span class=md-ellipsis> v3.12.0 (2025-04-11) </span> </a> </li> <li class=md-nav__item> <a href=#v3113-2023-11-28 class=md-nav__link> <span class=md-ellipsis> v3.11.3 (2023-11-28) </span> </a> </li> <li class=md-nav__item> <a href=#v3112-2022-08-12 class=md-nav__link> <span class=md-ellipsis> v3.11.2 (2022-08-12) </span> </a> </li> <li class=md-nav__item> <a href=#v3111-2022-08-01 class=md-nav__link> <span class=md-ellipsis> v3.11.1 (2022-08-01) </span> </a> </li> <li class=md-nav__item> <a href=#v3110-2022-08-01 class=md-nav__link> <span class=md-ellipsis> v3.11.0 (2022-08-01) </span> </a> </li> <li class=md-nav__item> <a href=#v3105-2022-01-03 class=md-nav__link> <span class=md-ellipsis> v3.10.5 (2022-01-03) </span> </a> </li> <li class=md-nav__item> <a href=#v3104-2021-10-16 class=md-nav__link> <span class=md-ellipsis> v3.10.4 (2021-10-16) </span> </a> </li> <li class=md-nav__item> <a href=#v3103-2021-10-08 class=md-nav__link> <span class=md-ellipsis> v3.10.3 (2021-10-08) </span> </a> </li> <li class=md-nav__item> <a href=#v3102-2021-08-26 class=md-nav__link> <span class=md-ellipsis> v3.10.2 (2021-08-26) </span> </a> </li> <li class=md-nav__item> <a href=#v3101-2021-08-24 class=md-nav__link> <span class=md-ellipsis> v3.10.1 (2021-08-24) </span> </a> </li> <li class=md-nav__item> <a href=#v3100-2021-08-17 class=md-nav__link> <span class=md-ellipsis> v3.10.0 (2021-08-17) </span> </a> </li> <li class=md-nav__item> <a href=#v391-2020-08-06 class=md-nav__link> <span class=md-ellipsis> v3.9.1 (2020-08-06) </span> </a> </li> <li class=md-nav__item> <a href=#v390-2020-07-27 class=md-nav__link> <span class=md-ellipsis> v3.9.0 (2020-07-27) </span> </a> </li> <li class=md-nav__item> <a href=#v380-2020-06-14 class=md-nav__link> <span class=md-ellipsis> v3.8.0 (2020-06-14) </span> </a> </li> <li class=md-nav__item> <a href=#v373-2019-11-17 class=md-nav__link> <span class=md-ellipsis> v3.7.3 (2019-11-17) </span> </a> </li> <li class=md-nav__item> <a href=#v372-2019-11-10 class=md-nav__link> <span class=md-ellipsis> v3.7.2 (2019-11-10) </span> </a> </li> <li class=md-nav__item> <a href=#v371-2019-11-06 class=md-nav__link> <span class=md-ellipsis> v3.7.1 (2019-11-06) </span> </a> </li> <li class=md-nav__item> <a href=#v370-2019-07-28 class=md-nav__link> <span class=md-ellipsis> v3.7.0 (2019-07-28) </span> </a> </li> <li class=md-nav__item> <a href=#v361-2019-03-20 class=md-nav__link> <span class=md-ellipsis> v3.6.1 (2019-03-20) </span> </a> </li> <li class=md-nav__item> <a href=#v360-2019-03-20 class=md-nav__link> <span class=md-ellipsis> v3.6.0 (2019-03-20) </span> </a> </li> <li class=md-nav__item> <a href=#v350-2018-12-22 class=md-nav__link> <span class=md-ellipsis> v3.5.0 (2018-12-22) </span> </a> </li> <li class=md-nav__item> <a href=#v340-2018-10-30 class=md-nav__link> <span class=md-ellipsis> v3.4.0 (2018-10-30) </span> </a> </li> <li class=md-nav__item> <a href=#v330-2018-10-05 class=md-nav__link> <span class=md-ellipsis> v3.3.0 (2018-10-05) </span> </a> </li> <li class=md-nav__item> <a href=#v320-2018-08-20 class=md-nav__link> <span class=md-ellipsis> v3.2.0 (2018-08-20) </span> </a> </li> <li class=md-nav__item> <a href=#v312-2018-03-14 class=md-nav__link> <span class=md-ellipsis> v3.1.2 (2018-03-14) </span> </a> </li> <li class=md-nav__item> <a href=#v311-2018-02-13 class=md-nav__link> <span class=md-ellipsis> v3.1.1 (2018-02-13) </span> </a> </li> <li class=md-nav__item> <a href=#v310-2018-02-01 class=md-nav__link> <span class=md-ellipsis> v3.1.0 (2018-02-01) </span> </a> </li> <li class=md-nav__item> <a href=#v301-2017-12-29 class=md-nav__link> <span class=md-ellipsis> v3.0.1 (2017-12-29) </span> </a> </li> <li class=md-nav__item> <a href=#v300-2017-12-17 class=md-nav__link> <span class=md-ellipsis> v3.0.0 (2017-12-17) </span> </a> </li> <li class=md-nav__item> <a href=#v211-2017-02-25 class=md-nav__link> <span class=md-ellipsis> v2.1.1 (2017-02-25) </span> </a> </li> <li class=md-nav__item> <a href=#v210-2017-01-28 class=md-nav__link> <span class=md-ellipsis> v2.1.0 (2017-01-28) </span> </a> </li> <li class=md-nav__item> <a href=#v2010-2017-01-02 class=md-nav__link> <span class=md-ellipsis> v2.0.10 (2017-01-02) </span> </a> </li> <li class=md-nav__item> <a href=#v209-2016-12-16 class=md-nav__link> <span class=md-ellipsis> v2.0.9 (2016-12-16) </span> </a> </li> <li class=md-nav__item> <a href=#v208-2016-12-02 class=md-nav__link> <span class=md-ellipsis> v2.0.8 (2016-12-02) </span> </a> </li> <li class=md-nav__item> <a href=#v207-2016-11-02 class=md-nav__link> <span class=md-ellipsis> v2.0.7 (2016-11-02) </span> </a> </li> <li class=md-nav__item> <a href=#v206-2016-10-15 class=md-nav__link> <span class=md-ellipsis> v2.0.6 (2016-10-15) </span> </a> </li> <li class=md-nav__item> <a href=#v205-2016-09-14 class=md-nav__link> <span class=md-ellipsis> v2.0.5 (2016-09-14) </span> </a> </li> <li class=md-nav__item> <a href=#v204-2016-09-11 class=md-nav__link> <span class=md-ellipsis> v2.0.4 (2016-09-11) </span> </a> </li> <li class=md-nav__item> <a href=#v203-2016-08-31 class=md-nav__link> <span class=md-ellipsis> v2.0.3 (2016-08-31) </span> </a> </li> <li class=md-nav__item> <a href=#v202-2016-07-31 class=md-nav__link> <span class=md-ellipsis> v2.0.2 (2016-07-31) </span> </a> </li> <li class=md-nav__item> <a href=#v201-2016-06-28 class=md-nav__link> <span class=md-ellipsis> v2.0.1 (2016-06-28) </span> </a> </li> <li class=md-nav__item> <a href=#v200-2016-06-24 class=md-nav__link> <span class=md-ellipsis> v2.0.0 (2016-06-24) </span> </a> </li> <li class=md-nav__item> <a href=#v110-2016-01-24 class=md-nav__link> <span class=md-ellipsis> v1.1.0 (2016-01-24) </span> </a> </li> <li class=md-nav__item> <a href=#v100-2015-12-28 class=md-nav__link> <span class=md-ellipsis> v1.0.0 (2015-12-28) </span> </a> </li> <li class=md-nav__item> <a href=#see-also class=md-nav__link> <span class=md-ellipsis> See also </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../design_goals/ class=md-nav__link> <span class=md-ellipsis> Design goals </span> </a> </li> <li class=md-nav__item> <a href=../architecture/ class=md-nav__link> <span class=md-ellipsis> Architecture </span> </a> </li> <li class=md-nav__item> <a href=../customers/ class=md-nav__link> <span class=md-ellipsis> Customers </span> </a> </li> <li class=md-nav__item> <a href=../sponsors/ class=md-nav__link> <span class=md-ellipsis> Sponsors </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2> <label class=md-nav__link for=__nav_2 id=__nav_2_label tabindex=0> <span class=md-ellipsis> Features </span> <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_2_label aria-expanded=false> <label class=md-nav__title for=__nav_2> <span class="md-nav__icon md-icon"></span> Features </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../features/arbitrary_types/ class=md-nav__link> <span class=md-ellipsis> Arbitrary Type Conversions </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_2> <div class="md-nav__link md-nav__container"> <a href=../../features/binary_formats/ class="md-nav__link "> <span class=md-ellipsis> Binary Formats </span> </a> <label class="md-nav__link " for=__nav_2_2 id=__nav_2_2_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_2_label aria-expanded=false> <label class=md-nav__title for=__nav_2_2> <span class="md-nav__icon md-icon"></span> Binary Formats </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../features/binary_formats/bjdata/ class=md-nav__link> <span class=md-ellipsis> BJData </span> </a> </li> <li class=md-nav__item> <a href=../../features/binary_formats/bson/ class=md-nav__link> <span class=md-ellipsis> BSON </span> </a> </li> <li class=md-nav__item> <a href=../../features/binary_formats/cbor/ class=md-nav__link> <span class=md-ellipsis> CBOR </span> </a> </li> <li class=md-nav__item> <a href=../../features/binary_formats/messagepack/ class=md-nav__link> <span class=md-ellipsis> MessagePack </span> </a> </li> <li class=md-nav__item> <a href=../../features/binary_formats/ubjson/ class=md-nav__link> <span class=md-ellipsis> UBJSON </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../features/binary_values/ class=md-nav__link> <span class=md-ellipsis> Binary Values </span> </a> </li> <li class=md-nav__item> <a href=../../features/comments/ class=md-nav__link> <span class=md-ellipsis> Comments </span> </a> </li> <li class=md-nav__item> <a href=../../features/trailing_commas/ class=md-nav__link> <span class=md-ellipsis> Trailing Commas </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_6> <div class="md-nav__link md-nav__container"> <a href=../../features/element_access/ class="md-nav__link "> <span class=md-ellipsis> Element Access </span> </a> <label class="md-nav__link " for=__nav_2_6 id=__nav_2_6_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_6_label aria-expanded=false> <label class=md-nav__title for=__nav_2_6> <span class="md-nav__icon md-icon"></span> Element Access </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../features/element_access/unchecked_access/ class=md-nav__link> <span class=md-ellipsis> Unchecked access: operator[] </span> </a> </li> <li class=md-nav__item> <a href=../../features/element_access/checked_access/ class=md-nav__link> <span class=md-ellipsis> Checked access: at </span> </a> </li> <li class=md-nav__item> <a href=../../features/element_access/default_value/ class=md-nav__link> <span class=md-ellipsis> Access with default value: value </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../features/iterators/ class=md-nav__link> <span class=md-ellipsis> Iterators </span> </a> </li> <li class=md-nav__item> <a href=../../features/json_pointer/ class=md-nav__link> <span class=md-ellipsis> JSON Pointer </span> </a> </li> <li class=md-nav__item> <a href=../../features/json_patch/ class=md-nav__link> <span class=md-ellipsis> JSON Patch and Diff </span> </a> </li> <li class=md-nav__item> <a href=../../features/merge_patch/ class=md-nav__link> <span class=md-ellipsis> JSON Merge Patch </span> </a> </li> <li class=md-nav__item> <a href=../../features/modules/ class=md-nav__link> <span class=md-ellipsis> Modules </span> </a> </li> <li class=md-nav__item> <a href=../../features/namespace/ class=md-nav__link> <span class=md-ellipsis> nlohmann Namespace </span> </a> </li> <li class=md-nav__item> <a href=../../features/object_order/ class=md-nav__link> <span class=md-ellipsis> Object Order </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_14> <div class="md-nav__link md-nav__container"> <a href=../../features/parsing/ class="md-nav__link "> <span class=md-ellipsis> Parsing </span> </a> <label class="md-nav__link " for=__nav_2_14 id=__nav_2_14_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_14_label aria-expanded=false> <label class=md-nav__title for=__nav_2_14> <span class="md-nav__icon md-icon"></span> Parsing </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../features/parsing/json_lines/ class=md-nav__link> <span class=md-ellipsis> JSON Lines </span> </a> </li> <li class=md-nav__item> <a href=../../features/parsing/parse_exceptions/ class=md-nav__link> <span class=md-ellipsis> Parsing and Exceptions </span> </a> </li> <li class=md-nav__item> <a href=../../features/parsing/parser_callbacks/ class=md-nav__link> <span class=md-ellipsis> Parser Callbacks </span> </a> </li> <li class=md-nav__item> <a href=../../features/parsing/sax_interface/ class=md-nav__link> <span class=md-ellipsis> SAX Interface </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../features/assertions/ class=md-nav__link> <span class=md-ellipsis> Runtime Assertions </span> </a> </li> <li class=md-nav__item> <a href=../../features/enum_conversion/ class=md-nav__link> <span class=md-ellipsis> Specializing enum conversion </span> </a> </li> <li class=md-nav__item> <a href=../../features/macros/ class=md-nav__link> <span class=md-ellipsis> Supported Macros </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_18> <div class="md-nav__link md-nav__container"> <a href=../../features/types/ class="md-nav__link "> <span class=md-ellipsis> Types </span> </a> <label class="md-nav__link " for=__nav_2_18 id=__nav_2_18_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_18_label aria-expanded=false> <label class=md-nav__title for=__nav_2_18> <span class="md-nav__icon md-icon"></span> Types </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../features/types/number_handling/ class=md-nav__link> <span class=md-ellipsis> Number Handling </span> </a> </li> </ul> </nav> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_3> <div class="md-nav__link md-nav__container"> <a href=../../integration/ class="md-nav__link "> <span class=md-ellipsis> Integration </span> </a> <label class="md-nav__link " for=__nav_3 id=__nav_3_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_3_label aria-expanded=false> <label class=md-nav__title for=__nav_3> <span class="md-nav__icon md-icon"></span> Integration </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../integration/migration_guide/ class=md-nav__link> <span class=md-ellipsis> Migration Guide </span> </a> </li> <li class=md-nav__item> <a href=../../integration/cmake/ class=md-nav__link> <span class=md-ellipsis> CMake </span> </a> </li> <li class=md-nav__item> <a href=../../integration/package_managers/ class=md-nav__link> <span class=md-ellipsis> Package Managers </span> </a> </li> <li class=md-nav__item> <a href=../../integration/pkg-config/ class=md-nav__link> <span class=md-ellipsis> Pkg-config </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4> <label class=md-nav__link for=__nav_4 id=__nav_4_label tabindex=0> <span class=md-ellipsis> API Documentation </span> <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_4_label aria-expanded=false> <label class=md-nav__title for=__nav_4> <span class="md-nav__icon md-icon"></span> API Documentation </label> <ul class=md-nav__list data-md-scrollfix> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_1> <div class="md-nav__link md-nav__container"> <a href=../../api/basic_json/ class="md-nav__link "> <span class=md-ellipsis> basic_json </span> </a> <label class="md-nav__link " for=__nav_4_1 id=__nav_4_1_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_1_label aria-expanded=false> <label class=md-nav__title for=__nav_4_1> <span class="md-nav__icon md-icon"></span> basic_json </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../api/basic_json/basic_json/ class=md-nav__link> <span class=md-ellipsis> (Constructor) </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/~basic_json/ class=md-nav__link> <span class=md-ellipsis> (Destructor) </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/accept/ class=md-nav__link> <span class=md-ellipsis> accept </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/array/ class=md-nav__link> <span class=md-ellipsis> array </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/array_t/ class=md-nav__link> <span class=md-ellipsis> array_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/at/ class=md-nav__link> <span class=md-ellipsis> at </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/back/ class=md-nav__link> <span class=md-ellipsis> back </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/begin/ class=md-nav__link> <span class=md-ellipsis> begin </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/binary/ class=md-nav__link> <span class=md-ellipsis> binary </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/binary_t/ class=md-nav__link> <span class=md-ellipsis> binary_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/boolean_t/ class=md-nav__link> <span class=md-ellipsis> boolean_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/cbegin/ class=md-nav__link> <span class=md-ellipsis> cbegin </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/cbor_tag_handler_t/ class=md-nav__link> <span class=md-ellipsis> cbor_tag_handler_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/cend/ class=md-nav__link> <span class=md-ellipsis> cend </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/clear/ class=md-nav__link> <span class=md-ellipsis> clear </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/contains/ class=md-nav__link> <span class=md-ellipsis> contains </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/count/ class=md-nav__link> <span class=md-ellipsis> count </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/crbegin/ class=md-nav__link> <span class=md-ellipsis> crbegin </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/crend/ class=md-nav__link> <span class=md-ellipsis> crend </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/default_object_comparator_t/ class=md-nav__link> <span class=md-ellipsis> default_object_comparator_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/diff/ class=md-nav__link> <span class=md-ellipsis> diff </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/dump/ class=md-nav__link> <span class=md-ellipsis> dump </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/emplace/ class=md-nav__link> <span class=md-ellipsis> emplace </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/emplace_back/ class=md-nav__link> <span class=md-ellipsis> emplace_back </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/empty/ class=md-nav__link> <span class=md-ellipsis> empty </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/end/ class=md-nav__link> <span class=md-ellipsis> end </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/end_pos/ class=md-nav__link> <span class=md-ellipsis> end_pos </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/erase/ class=md-nav__link> <span class=md-ellipsis> erase </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/error_handler_t/ class=md-nav__link> <span class=md-ellipsis> error_handler_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/exception/ class=md-nav__link> <span class=md-ellipsis> exception </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/find/ class=md-nav__link> <span class=md-ellipsis> find </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/flatten/ class=md-nav__link> <span class=md-ellipsis> flatten </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/from_bjdata/ class=md-nav__link> <span class=md-ellipsis> from_bjdata </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/from_bson/ class=md-nav__link> <span class=md-ellipsis> from_bson </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/from_cbor/ class=md-nav__link> <span class=md-ellipsis> from_cbor </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/from_msgpack/ class=md-nav__link> <span class=md-ellipsis> from_msgpack </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/from_ubjson/ class=md-nav__link> <span class=md-ellipsis> from_ubjson </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/front/ class=md-nav__link> <span class=md-ellipsis> front </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/get/ class=md-nav__link> <span class=md-ellipsis> get </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/get_allocator/ class=md-nav__link> <span class=md-ellipsis> get_allocator </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/get_binary/ class=md-nav__link> <span class=md-ellipsis> get_binary </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/get_ptr/ class=md-nav__link> <span class=md-ellipsis> get_ptr </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/get_ref/ class=md-nav__link> <span class=md-ellipsis> get_ref </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/get_to/ class=md-nav__link> <span class=md-ellipsis> get_to </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/std_hash/ class=md-nav__link> <span class=md-ellipsis> std::hash&lt;basic_json&gt; </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/input_format_t/ class=md-nav__link> <span class=md-ellipsis> input_format_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/insert/ class=md-nav__link> <span class=md-ellipsis> insert </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/invalid_iterator/ class=md-nav__link> <span class=md-ellipsis> invalid_iterator </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_array/ class=md-nav__link> <span class=md-ellipsis> is_array </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_binary/ class=md-nav__link> <span class=md-ellipsis> is_binary </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_boolean/ class=md-nav__link> <span class=md-ellipsis> is_boolean </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_discarded/ class=md-nav__link> <span class=md-ellipsis> is_discarded </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_null/ class=md-nav__link> <span class=md-ellipsis> is_null </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_number/ class=md-nav__link> <span class=md-ellipsis> is_number </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_number_float/ class=md-nav__link> <span class=md-ellipsis> is_number_float </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_number_integer/ class=md-nav__link> <span class=md-ellipsis> is_number_integer </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_number_unsigned/ class=md-nav__link> <span class=md-ellipsis> is_number_unsigned </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_object/ class=md-nav__link> <span class=md-ellipsis> is_object </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_primitive/ class=md-nav__link> <span class=md-ellipsis> is_primitive </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_string/ class=md-nav__link> <span class=md-ellipsis> is_string </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_structured/ class=md-nav__link> <span class=md-ellipsis> is_structured </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/items/ class=md-nav__link> <span class=md-ellipsis> items </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/json_base_class_t/ class=md-nav__link> <span class=md-ellipsis> json_base_class_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/json_serializer/ class=md-nav__link> <span class=md-ellipsis> json_serializer </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/max_size/ class=md-nav__link> <span class=md-ellipsis> max_size </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/meta/ class=md-nav__link> <span class=md-ellipsis> meta </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/merge_patch/ class=md-nav__link> <span class=md-ellipsis> merge_patch </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/number_float_t/ class=md-nav__link> <span class=md-ellipsis> number_float_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/number_integer_t/ class=md-nav__link> <span class=md-ellipsis> number_integer_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/number_unsigned_t/ class=md-nav__link> <span class=md-ellipsis> number_unsigned_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/object/ class=md-nav__link> <span class=md-ellipsis> object </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/object_comparator_t/ class=md-nav__link> <span class=md-ellipsis> object_comparator_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/object_t/ class=md-nav__link> <span class=md-ellipsis> object_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/operator_ValueType/ class=md-nav__link> <span class=md-ellipsis> operator ValueType </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/operator_value_t/ class=md-nav__link> <span class=md-ellipsis> operator value_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/operator%5B%5D/ class=md-nav__link> <span class=md-ellipsis> operator[] </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/operator%3D/ class=md-nav__link> <span class=md-ellipsis> operator= </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/operator%2B%3D/ class=md-nav__link> <span class=md-ellipsis> operator+= </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/operator_eq/ class=md-nav__link> <span class=md-ellipsis> operator== </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/operator_ne/ class=md-nav__link> <span class=md-ellipsis> operator!= </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/operator_lt/ class=md-nav__link> <span class=md-ellipsis> operator< </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/operator_gt/ class=md-nav__link> <span class=md-ellipsis> operator> </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/operator_le/ class=md-nav__link> <span class=md-ellipsis> operator<= </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/operator_ge/ class=md-nav__link> <span class=md-ellipsis> operator>= </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/operator_spaceship/ class=md-nav__link> <span class=md-ellipsis> operator<=> </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/out_of_range/ class=md-nav__link> <span class=md-ellipsis> out_of_range </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/other_error/ class=md-nav__link> <span class=md-ellipsis> other_error </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/parse/ class=md-nav__link> <span class=md-ellipsis> parse </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/parse_error/ class=md-nav__link> <span class=md-ellipsis> parse_error </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/parse_event_t/ class=md-nav__link> <span class=md-ellipsis> parse_event_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/parser_callback_t/ class=md-nav__link> <span class=md-ellipsis> parser_callback_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/patch/ class=md-nav__link> <span class=md-ellipsis> patch </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/patch_inplace/ class=md-nav__link> <span class=md-ellipsis> patch_inplace </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/push_back/ class=md-nav__link> <span class=md-ellipsis> push_back </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/rbegin/ class=md-nav__link> <span class=md-ellipsis> rbegin </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/rend/ class=md-nav__link> <span class=md-ellipsis> rend </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/sax_parse/ class=md-nav__link> <span class=md-ellipsis> sax_parse </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/size/ class=md-nav__link> <span class=md-ellipsis> size </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/start_pos/ class=md-nav__link> <span class=md-ellipsis> start_pos </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/string_t/ class=md-nav__link> <span class=md-ellipsis> string_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/swap/ class=md-nav__link> <span class=md-ellipsis> swap </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/std_swap/ class=md-nav__link> <span class=md-ellipsis> std::swap&lt;basic_json&gt; </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/to_bjdata/ class=md-nav__link> <span class=md-ellipsis> to_bjdata </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/to_bson/ class=md-nav__link> <span class=md-ellipsis> to_bson </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/to_cbor/ class=md-nav__link> <span class=md-ellipsis> to_cbor </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/to_msgpack/ class=md-nav__link> <span class=md-ellipsis> to_msgpack </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/to_string/ class=md-nav__link> <span class=md-ellipsis> to_string </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/to_ubjson/ class=md-nav__link> <span class=md-ellipsis> to_ubjson </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/type/ class=md-nav__link> <span class=md-ellipsis> type </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/type_error/ class=md-nav__link> <span class=md-ellipsis> type_error </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/type_name/ class=md-nav__link> <span class=md-ellipsis> type_name </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/unflatten/ class=md-nav__link> <span class=md-ellipsis> unflatten </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/update/ class=md-nav__link> <span class=md-ellipsis> update </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/value/ class=md-nav__link> <span class=md-ellipsis> value </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/value_t/ class=md-nav__link> <span class=md-ellipsis> value_t </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_2> <div class="md-nav__link md-nav__container"> <a href=../../api/byte_container_with_subtype/ class="md-nav__link "> <span class=md-ellipsis> byte_container_with_subtype </span> </a> <label class="md-nav__link " for=__nav_4_2 id=__nav_4_2_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_2_label aria-expanded=false> <label class=md-nav__title for=__nav_4_2> <span class="md-nav__icon md-icon"></span> byte_container_with_subtype </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../api/byte_container_with_subtype/byte_container_with_subtype/ class=md-nav__link> <span class=md-ellipsis> (constructor) </span> </a> </li> <li class=md-nav__item> <a href=../../api/byte_container_with_subtype/clear_subtype/ class=md-nav__link> <span class=md-ellipsis> clear_subtype </span> </a> </li> <li class=md-nav__item> <a href=../../api/byte_container_with_subtype/has_subtype/ class=md-nav__link> <span class=md-ellipsis> has_subtype </span> </a> </li> <li class=md-nav__item> <a href=../../api/byte_container_with_subtype/set_subtype/ class=md-nav__link> <span class=md-ellipsis> set_subtype </span> </a> </li> <li class=md-nav__item> <a href=../../api/byte_container_with_subtype/subtype/ class=md-nav__link> <span class=md-ellipsis> subtype </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_3> <div class="md-nav__link md-nav__container"> <a href=../../api/adl_serializer/ class="md-nav__link "> <span class=md-ellipsis> adl_serializer </span> </a> <label class="md-nav__link " for=__nav_4_3 id=__nav_4_3_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_3_label aria-expanded=false> <label class=md-nav__title for=__nav_4_3> <span class="md-nav__icon md-icon"></span> adl_serializer </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../api/adl_serializer/from_json/ class=md-nav__link> <span class=md-ellipsis> from_json </span> </a> </li> <li class=md-nav__item> <a href=../../api/adl_serializer/to_json/ class=md-nav__link> <span class=md-ellipsis> to_json </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../api/json/ class=md-nav__link> <span class=md-ellipsis> json </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_5> <div class="md-nav__link md-nav__container"> <a href=../../api/json_pointer/ class="md-nav__link "> <span class=md-ellipsis> json_pointer </span> </a> <label class="md-nav__link " for=__nav_4_5 id=__nav_4_5_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_5_label aria-expanded=false> <label class=md-nav__title for=__nav_4_5> <span class="md-nav__icon md-icon"></span> json_pointer </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../api/json_pointer/json_pointer/ class=md-nav__link> <span class=md-ellipsis> (Constructor) </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/back/ class=md-nav__link> <span class=md-ellipsis> back </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/empty/ class=md-nav__link> <span class=md-ellipsis> empty </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/front/ class=md-nav__link> <span class=md-ellipsis> front </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/operator_string_t/ class=md-nav__link> <span class=md-ellipsis> operator string_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/operator_eq/ class=md-nav__link> <span class=md-ellipsis> operator== </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/operator_ne/ class=md-nav__link> <span class=md-ellipsis> operator!= </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/operator_slash/ class=md-nav__link> <span class=md-ellipsis> operator/ </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/operator_slasheq/ class=md-nav__link> <span class=md-ellipsis> operator/= </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/parent_pointer/ class=md-nav__link> <span class=md-ellipsis> parent_pointer </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/pop_back/ class=md-nav__link> <span class=md-ellipsis> pop_back </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/pop_front/ class=md-nav__link> <span class=md-ellipsis> pop_front </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/push_back/ class=md-nav__link> <span class=md-ellipsis> push_back </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/push_front/ class=md-nav__link> <span class=md-ellipsis> push_front </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/string_t/ class=md-nav__link> <span class=md-ellipsis> string_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/to_string/ class=md-nav__link> <span class=md-ellipsis> to_string </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_6> <div class="md-nav__link md-nav__container"> <a href=../../api/json_sax/ class="md-nav__link "> <span class=md-ellipsis> json_sax </span> </a> <label class="md-nav__link " for=__nav_4_6 id=__nav_4_6_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_6_label aria-expanded=false> <label class=md-nav__title for=__nav_4_6> <span class="md-nav__icon md-icon"></span> json_sax </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../api/json_sax/binary/ class=md-nav__link> <span class=md-ellipsis> binary </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_sax/boolean/ class=md-nav__link> <span class=md-ellipsis> boolean </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_sax/end_array/ class=md-nav__link> <span class=md-ellipsis> end_array </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_sax/end_object/ class=md-nav__link> <span class=md-ellipsis> end_object </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_sax/key/ class=md-nav__link> <span class=md-ellipsis> key </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_sax/null/ class=md-nav__link> <span class=md-ellipsis> null </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_sax/number_float/ class=md-nav__link> <span class=md-ellipsis> number_float </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_sax/number_integer/ class=md-nav__link> <span class=md-ellipsis> number_integer </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_sax/number_unsigned/ class=md-nav__link> <span class=md-ellipsis> number_unsigned </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_sax/parse_error/ class=md-nav__link> <span class=md-ellipsis> parse_error </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_sax/start_array/ class=md-nav__link> <span class=md-ellipsis> start_array </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_sax/start_object/ class=md-nav__link> <span class=md-ellipsis> start_object </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_sax/string/ class=md-nav__link> <span class=md-ellipsis> string </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../api/operator_ltlt/ class=md-nav__link> <span class=md-ellipsis> operator<<(basic_json), operator<<(json_pointer) </span> </a> </li> <li class=md-nav__item> <a href=../../api/operator_gtgt/ class=md-nav__link> <span class=md-ellipsis> operator>>(basic_json) </span> </a> </li> <li class=md-nav__item> <a href=../../api/operator_literal_json/ class=md-nav__link> <span class=md-ellipsis> operator""_json </span> </a> </li> <li class=md-nav__item> <a href=../../api/operator_literal_json_pointer/ class=md-nav__link> <span class=md-ellipsis> operator""_json_pointer </span> </a> </li> <li class=md-nav__item> <a href=../../api/ordered_json/ class=md-nav__link> <span class=md-ellipsis> ordered_json </span> </a> </li> <li class=md-nav__item> <a href=../../api/ordered_map/ class=md-nav__link> <span class=md-ellipsis> ordered_map </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_13> <div class="md-nav__link md-nav__container"> <a href=../../api/macros/ class="md-nav__link "> <span class=md-ellipsis> macros </span> </a> <label class="md-nav__link " for=__nav_4_13 id=__nav_4_13_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_13_label aria-expanded=false> <label class=md-nav__title for=__nav_4_13> <span class="md-nav__icon md-icon"></span> macros </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../api/macros/json_assert/ class=md-nav__link> <span class=md-ellipsis> JSON_ASSERT </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_brace_init_copy_semantics/ class=md-nav__link> <span class=md-ellipsis> JSON_BRACE_INIT_COPY_SEMANTICS </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_throw_user/ class=md-nav__link> <span class=md-ellipsis> JSON_CATCH_USER, JSON_THROW_USER, JSON_TRY_USER </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_diagnostics/ class=md-nav__link> <span class=md-ellipsis> JSON_DIAGNOSTICS </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_diagnostic_positions/ class=md-nav__link> <span class=md-ellipsis> JSON_DIAGNOSTIC_POSITIONS </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_disable_enum_serialization/ class=md-nav__link> <span class=md-ellipsis> JSON_DISABLE_ENUM_SERIALIZATION </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_has_cpp_11/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_CPP_11, JSON_HAS_CPP_14, JSON_HAS_CPP_17, JSON_HAS_CPP_20 </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_has_filesystem/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_EXPERIMENTAL_FILESYSTEM, JSON_HAS_FILESYSTEM </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_has_ranges/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_RANGES </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_has_static_rtti/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_STATIC_RTTI </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_has_three_way_comparison/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_THREE_WAY_COMPARISON </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_noexception/ class=md-nav__link> <span class=md-ellipsis> JSON_NOEXCEPTION </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_no_io/ class=md-nav__link> <span class=md-ellipsis> JSON_NO_IO </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_skip_library_version_check/ class=md-nav__link> <span class=md-ellipsis> JSON_SKIP_LIBRARY_VERSION_CHECK </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_skip_unsupported_compiler_check/ class=md-nav__link> <span class=md-ellipsis> JSON_SKIP_UNSUPPORTED_COMPILER_CHECK </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_use_global_udls/ class=md-nav__link> <span class=md-ellipsis> JSON_USE_GLOBAL_UDLS </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_use_implicit_conversions/ class=md-nav__link> <span class=md-ellipsis> JSON_USE_IMPLICIT_CONVERSIONS </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_use_legacy_discarded_value_comparison/ class=md-nav__link> <span class=md-ellipsis> JSON_USE_LEGACY_DISCARDED_VALUE_COMPARISON </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/nlohmann_define_derived_type/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_ONLY_SERIALIZE, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/nlohmann_define_type_intrusive/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_TYPE_INTRUSIVE, NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_TYPE_INTRUSIVE_ONLY_SERIALIZE </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/nlohmann_define_type_non_intrusive/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/nlohmann_define_type_with_names/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_TYPE_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/nlohmann_json_namespace/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_NAMESPACE </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/nlohmann_json_namespace_begin/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_NAMESPACE_BEGIN, NLOHMANN_JSON_NAMESPACE_END </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/nlohmann_json_namespace_no_version/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_NAMESPACE_NO_VERSION </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/nlohmann_json_serialize_enum/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_SERIALIZE_ENUM </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/nlohmann_json_serialize_enum_strict/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_SERIALIZE_ENUM_STRICT </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/nlohmann_json_version_major/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_VERSION_MAJOR, NLOHMANN_JSON_VERSION_MINOR, NLOHMANN_JSON_VERSION_PATCH </span> </a> </li> </ul> </nav> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_5> <div class="md-nav__link md-nav__container"> <a href=../../community/ class="md-nav__link "> <span class=md-ellipsis> Community </span> </a> <label class="md-nav__link " for=__nav_5 id=__nav_5_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_5_label aria-expanded=false> <label class=md-nav__title for=__nav_5> <span class="md-nav__icon md-icon"></span> Community </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../community/code_of_conduct/ class=md-nav__link> <span class=md-ellipsis> Code of Conduct </span> </a> </li> <li class=md-nav__item> <a href=../../community/contribution_guidelines/ class=md-nav__link> <span class=md-ellipsis> Contribution Guidelines </span> </a> </li> <li class=md-nav__item> <a href=../../community/quality_assurance/ class=md-nav__link> <span class=md-ellipsis> Quality assurance </span> </a> </li> <li class=md-nav__item> <a href=../../community/governance/ class=md-nav__link> <span class=md-ellipsis> Governance </span> </a> </li> <li class=md-nav__item> <a href=../../community/security_policy/ class=md-nav__link> <span class=md-ellipsis> Security Policy </span> </a> </li> </ul> </nav> </li> </ul> </nav> </div> </div> </div> <div class="md-sidebar md-sidebar--secondary" data-md-component=sidebar data-md-type=toc> <div class=md-sidebar__scrollwrap> <div class=md-sidebar__inner> <nav class="md-nav md-nav--secondary" aria-label="Table of contents"> <label class=md-nav__title for=__toc> <span class="md-nav__icon md-icon"></span> Table of contents </label> <ul class=md-nav__list data-md-component=toc data-md-scrollfix> <li class=md-nav__item> <a href=#v3120-2025-04-11 class=md-nav__link> <span class=md-ellipsis> v3.12.0 (2025-04-11) </span> </a> </li> <li class=md-nav__item> <a href=#v3113-2023-11-28 class=md-nav__link> <span class=md-ellipsis> v3.11.3 (2023-11-28) </span> </a> </li> <li class=md-nav__item> <a href=#v3112-2022-08-12 class=md-nav__link> <span class=md-ellipsis> v3.11.2 (2022-08-12) </span> </a> </li> <li class=md-nav__item> <a href=#v3111-2022-08-01 class=md-nav__link> <span class=md-ellipsis> v3.11.1 (2022-08-01) </span> </a> </li> <li class=md-nav__item> <a href=#v3110-2022-08-01 class=md-nav__link> <span class=md-ellipsis> v3.11.0 (2022-08-01) </span> </a> </li> <li class=md-nav__item> <a href=#v3105-2022-01-03 class=md-nav__link> <span class=md-ellipsis> v3.10.5 (2022-01-03) </span> </a> </li> <li class=md-nav__item> <a href=#v3104-2021-10-16 class=md-nav__link> <span class=md-ellipsis> v3.10.4 (2021-10-16) </span> </a> </li> <li class=md-nav__item> <a href=#v3103-2021-10-08 class=md-nav__link> <span class=md-ellipsis> v3.10.3 (2021-10-08) </span> </a> </li> <li class=md-nav__item> <a href=#v3102-2021-08-26 class=md-nav__link> <span class=md-ellipsis> v3.10.2 (2021-08-26) </span> </a> </li> <li class=md-nav__item> <a href=#v3101-2021-08-24 class=md-nav__link> <span class=md-ellipsis> v3.10.1 (2021-08-24) </span> </a> </li> <li class=md-nav__item> <a href=#v3100-2021-08-17 class=md-nav__link> <span class=md-ellipsis> v3.10.0 (2021-08-17) </span> </a> </li> <li class=md-nav__item> <a href=#v391-2020-08-06 class=md-nav__link> <span class=md-ellipsis> v3.9.1 (2020-08-06) </span> </a> </li> <li class=md-nav__item> <a href=#v390-2020-07-27 class=md-nav__link> <span class=md-ellipsis> v3.9.0 (2020-07-27) </span> </a> </li> <li class=md-nav__item> <a href=#v380-2020-06-14 class=md-nav__link> <span class=md-ellipsis> v3.8.0 (2020-06-14) </span> </a> </li> <li class=md-nav__item> <a href=#v373-2019-11-17 class=md-nav__link> <span class=md-ellipsis> v3.7.3 (2019-11-17) </span> </a> </li> <li class=md-nav__item> <a href=#v372-2019-11-10 class=md-nav__link> <span class=md-ellipsis> v3.7.2 (2019-11-10) </span> </a> </li> <li class=md-nav__item> <a href=#v371-2019-11-06 class=md-nav__link> <span class=md-ellipsis> v3.7.1 (2019-11-06) </span> </a> </li> <li class=md-nav__item> <a href=#v370-2019-07-28 class=md-nav__link> <span class=md-ellipsis> v3.7.0 (2019-07-28) </span> </a> </li> <li class=md-nav__item> <a href=#v361-2019-03-20 class=md-nav__link> <span class=md-ellipsis> v3.6.1 (2019-03-20) </span> </a> </li> <li class=md-nav__item> <a href=#v360-2019-03-20 class=md-nav__link> <span class=md-ellipsis> v3.6.0 (2019-03-20) </span> </a> </li> <li class=md-nav__item> <a href=#v350-2018-12-22 class=md-nav__link> <span class=md-ellipsis> v3.5.0 (2018-12-22) </span> </a> </li> <li class=md-nav__item> <a href=#v340-2018-10-30 class=md-nav__link> <span class=md-ellipsis> v3.4.0 (2018-10-30) </span> </a> </li> <li class=md-nav__item> <a href=#v330-2018-10-05 class=md-nav__link> <span class=md-ellipsis> v3.3.0 (2018-10-05) </span> </a> </li> <li class=md-nav__item> <a href=#v320-2018-08-20 class=md-nav__link> <span class=md-ellipsis> v3.2.0 (2018-08-20) </span> </a> </li> <li class=md-nav__item> <a href=#v312-2018-03-14 class=md-nav__link> <span class=md-ellipsis> v3.1.2 (2018-03-14) </span> </a> </li> <li class=md-nav__item> <a href=#v311-2018-02-13 class=md-nav__link> <span class=md-ellipsis> v3.1.1 (2018-02-13) </span> </a> </li> <li class=md-nav__item> <a href=#v310-2018-02-01 class=md-nav__link> <span class=md-ellipsis> v3.1.0 (2018-02-01) </span> </a> </li> <li class=md-nav__item> <a href=#v301-2017-12-29 class=md-nav__link> <span class=md-ellipsis> v3.0.1 (2017-12-29) </span> </a> </li> <li class=md-nav__item> <a href=#v300-2017-12-17 class=md-nav__link> <span class=md-ellipsis> v3.0.0 (2017-12-17) </span> </a> </li> <li class=md-nav__item> <a href=#v211-2017-02-25 class=md-nav__link> <span class=md-ellipsis> v2.1.1 (2017-02-25) </span> </a> </li> <li class=md-nav__item> <a href=#v210-2017-01-28 class=md-nav__link> <span class=md-ellipsis> v2.1.0 (2017-01-28) </span> </a> </li> <li class=md-nav__item> <a href=#v2010-2017-01-02 class=md-nav__link> <span class=md-ellipsis> v2.0.10 (2017-01-02) </span> </a> </li> <li class=md-nav__item> <a href=#v209-2016-12-16 class=md-nav__link> <span class=md-ellipsis> v2.0.9 (2016-12-16) </span> </a> </li> <li class=md-nav__item> <a href=#v208-2016-12-02 class=md-nav__link> <span class=md-ellipsis> v2.0.8 (2016-12-02) </span> </a> </li> <li class=md-nav__item> <a href=#v207-2016-11-02 class=md-nav__link> <span class=md-ellipsis> v2.0.7 (2016-11-02) </span> </a> </li> <li class=md-nav__item> <a href=#v206-2016-10-15 class=md-nav__link> <span class=md-ellipsis> v2.0.6 (2016-10-15) </span> </a> </li> <li class=md-nav__item> <a href=#v205-2016-09-14 class=md-nav__link> <span class=md-ellipsis> v2.0.5 (2016-09-14) </span> </a> </li> <li class=md-nav__item> <a href=#v204-2016-09-11 class=md-nav__link> <span class=md-ellipsis> v2.0.4 (2016-09-11) </span> </a> </li> <li class=md-nav__item> <a href=#v203-2016-08-31 class=md-nav__link> <span class=md-ellipsis> v2.0.3 (2016-08-31) </span> </a> </li> <li class=md-nav__item> <a href=#v202-2016-07-31 class=md-nav__link> <span class=md-ellipsis> v2.0.2 (2016-07-31) </span> </a> </li> <li class=md-nav__item> <a href=#v201-2016-06-28 class=md-nav__link> <span class=md-ellipsis> v2.0.1 (2016-06-28) </span> </a> </li> <li class=md-nav__item> <a href=#v200-2016-06-24 class=md-nav__link> <span class=md-ellipsis> v2.0.0 (2016-06-24) </span> </a> </li> <li class=md-nav__item> <a href=#v110-2016-01-24 class=md-nav__link> <span class=md-ellipsis> v1.1.0 (2016-01-24) </span> </a> </li> <li class=md-nav__item> <a href=#v100-2015-12-28 class=md-nav__link> <span class=md-ellipsis> v1.0.0 (2015-12-28) </span> </a> </li> <li class=md-nav__item> <a href=#see-also class=md-nav__link> <span class=md-ellipsis> See also </span> </a> </li> </ul> </nav> </div> </div> </div> <div class=md-content data-md-component=content> <article class="md-content__inner md-typeset"> <a href="https://github.com/nlohmann/json/edit/develop/docs/mkdocs/docs/home/releases.md" title="Edit this page" class="md-content__button md-icon" rel="edit"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M10 20H6V4h7v5h5v3.1l2-2V8l-6-6H6c-1.1 0-2 .9-2 2v16c0 1.1.9 2 2 2h4zm10.2-7c.1 0 .3.1.4.2l1.3 1.3c.2.2.2.6 0 .8l-1 1-2.1-2.1 1-1c.1-.1.2-.2.4-.2m0 3.9L14.1 23H12v-2.1l6.1-6.1z"/></svg> </a> <a href="https://github.com/nlohmann/json/raw/develop/docs/mkdocs/docs/home/releases.md" title="View source of this page" class="md-content__button md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M17 18c.56 0 1 .44 1 1s-.44 1-1 1-1-.44-1-1 .44-1 1-1m0-3c-2.73 0-5.06 1.66-6 4 .94 2.34 3.27 4 6 4s5.06-1.66 6-4c-.94-2.34-3.27-4-6-4m0 6.5a2.5 2.5 0 0 1-2.5-2.5 2.5 2.5 0 0 1 2.5-2.5 2.5 2.5 0 0 1 2.5 2.5 2.5 2.5 0 0 1-2.5 2.5M9.27 20H6V4h7v5h5v4.07c.7.08 1.36.25 2 .49V8l-6-6H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h4.5a8.2 8.2 0 0 1-1.23-2"/></svg> </a> <h1 id=releases>Releases<a class=headerlink href=#releases title="Permanent link">&para;</a></h1> <p>This page summarizes the notable changes of every release and links to the relevant documentation. The <strong>complete release notes</strong> — including all changes, the download files, and their checksums — are published on the <a href="https://github.com/nlohmann/json/releases">GitHub releases page</a>.</p> <h2 id=v3120-2025-04-11>v3.12.0 (2025-04-11)<a class=headerlink href=#v3120-2025-04-11 title="Permanent link">&para;</a></h2> <p>Fixes bugs found in 3.11.3 and adds several features. All changes are backward-compatible.</p> <ul> <li>Adds diagnostic byte positions via <a href=../../api/macros/json_diagnostic_positions/ ><code>JSON_DIAGNOSTIC_POSITIONS</code></a>, exposed through the new <a href=../../api/basic_json/start_pos/ ><code>start_pos</code></a> and <a href=../../api/basic_json/end_pos/ ><code>end_pos</code></a> member functions.</li> <li>Makes the <a href=../../features/arbitrary_types/#simplify-your-life-with-macros>conversion macros</a> templated (so they also work with <a href=../../api/ordered_json/ ><code>ordered_json</code></a>) and adds <a href=../../api/macros/nlohmann_define_derived_type/ ><code>NLOHMANN_DEFINE_DERIVED_TYPE</code></a> for derived classes.</li> <li>Adds <code>std::optional</code> support (C++17) and lets <a href=../../api/basic_json/patch/ ><code>patch</code></a>, <a href=../../api/basic_json/diff/ ><code>diff</code></a>, and <a href=../../api/basic_json/flatten/ ><code>flatten</code></a> work with arbitrary string types.</li> <li>Extends the <a href=../../features/binary_formats/ >binary formats</a>: <a href=../../features/binary_formats/bjdata/ ><abbr title="Binary JData">BJData</abbr></a> draft 3 and unsigned 64-bit integers for <a href=../../features/binary_formats/bson/ ><abbr title="Binary JSON">BSON</abbr></a>.</li> <li>Adds multidimensional C-array conversion and <abbr title="Unicode Transformation Format">UTF</abbr>-8 encoded <code>std::filesystem::path</code> conversions, and lowers the minimum <a href=../../integration/cmake/ >CMake</a> version to allow CMake 4.0.</li> </ul> <p><a href="https://github.com/nlohmann/json/releases/tag/v3.12.0">Full release notes</a>.</p> <h2 id=v3113-2023-11-28>v3.11.3 (2023-11-28)<a class=headerlink href=#v3113-2023-11-28 title="Permanent link">&para;</a></h2> <p>Adds features and fixes bugs found in 3.11.2. All changes are backward-compatible.</p> <ul> <li>Adds a <a href=../../api/basic_json/json_base_class_t/ >custom base class</a> as a node customization point.</li> <li>Adds serialization-only <a href=../../features/macros/ >conversion macros</a> (<code>NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE</code> and <code>NLOHMANN_DEFINE_TYPE_INTRUSIVE_ONLY_SERIALIZE</code>) and a clearer parse error for empty input.</li> <li>Adds <a href=../../integration/package_managers/#bazel>Bazel</a> and <a href=../../integration/package_managers/#swift-package-manager>Swift Package Manager</a> build support.</li> <li>Fixes custom allocators, a memory leak in <a href=../../api/adl_serializer/to_json/ ><code>adl_serializer</code></a>'s <code>to_json</code>, initializer-list construction when <code>size_type</code> is not <code>int</code>, and many compiler warnings.</li> </ul> <p><a href="https://github.com/nlohmann/json/releases/tag/v3.11.3">Full release notes</a>.</p> <h2 id=v3112-2022-08-12>v3.11.2 (2022-08-12)<a class=headerlink href=#v3112-2022-08-12 title="Permanent link">&para;</a></h2> <p>Fixes bugs found in 3.11.1 and restructures the namespace. All changes are backward-compatible.</p> <ul> <li>Fixes the <a href=../../api/basic_json/value/ ><code>value</code></a> function (broken for strings, size types, and <code>nullptr</code> in 3.11.0) and makes <code>json_fwd.hpp</code> self-contained.</li> <li>Restores using <a href=../../api/json_pointer/ ><code>json_pointer</code></a> as a key in associative containers and comparing it with strings.</li> <li>Restructures the inline <a href=../../features/namespace/ >namespace</a> and allows disabling the version component, and avoids heap allocations in the <a href=../../features/binary_formats/bjdata/ ><abbr title="Binary JData">BJData</abbr></a> parser.</li> </ul> <p><a href="https://github.com/nlohmann/json/releases/tag/v3.11.2">Full release notes</a>.</p> <h2 id=v3111-2022-08-01>v3.11.1 (2022-08-01)<a class=headerlink href=#v3111-2022-08-01 title="Permanent link">&para;</a></h2> <p>Fixes a regression from 3.11.0. All changes are backward-compatible.</p> <ul> <li>Restores the global <a href=../../api/macros/json_use_global_udls/ >user-defined string literals</a> <a href=../../api/operator_literal_json/ ><code>operator""_json</code></a> and <a href=../../api/operator_literal_json_pointer/ ><code>operator""_json_pointer</code></a>, which 3.11.0 had moved into a namespace by default.</li> </ul> <p><a href="https://github.com/nlohmann/json/releases/tag/v3.11.1">Full release notes</a>.</p> <h2 id=v3110-2022-08-01>v3.11.0 (2022-08-01)<a class=headerlink href=#v3110-2022-08-01 title="Permanent link">&para;</a></h2> <p>One of the largest releases ever. All changes are backward-compatible.</p> <ul> <li>Allows <code>std::string_view</code> as object keys in <a href=../../api/basic_json/at/ ><code>at</code></a>, <a href=../../api/basic_json/operator%5B%5D/ ><code>operator[]</code></a>, <a href=../../api/basic_json/value/ ><code>value</code></a>, <a href=../../api/basic_json/erase/ ><code>erase</code></a>, <a href=../../api/basic_json/find/ ><code>find</code></a>, <a href=../../api/basic_json/contains/ ><code>contains</code></a>, and <a href=../../api/basic_json/count/ ><code>count</code></a>.</li> <li>Adds the <a href=../../features/binary_formats/bjdata/ ><abbr title="Binary JData">BJData</abbr></a> binary format (the fifth supported format).</li> <li>Improves C++20 support, including <a href=../../api/basic_json/operator_spaceship/ ><code>operator&lt;=&gt;</code></a> and <code>&lt;ranges&gt;</code>-compatible iterators.</li> <li>Adds a versioned, ABI-tagged inline <a href=../../features/namespace/ >namespace</a> (<a href=../../api/macros/nlohmann_json_namespace/ ><code>NLOHMANN_JSON_NAMESPACE</code></a>) and the option to move the UDLs out of the global namespace (<a href=../../api/macros/json_use_global_udls/ ><code>JSON_USE_GLOBAL_UDLS</code></a>).</li> <li>Adds <a href=../../api/basic_json/patch_inplace/ ><code>patch_inplace</code></a>, default values for the <a href=../../features/arbitrary_types/#simplify-your-life-with-macros>conversion macros</a>, and an option to disable enum serialization (<a href=../../api/macros/json_disable_enum_serialization/ ><code>JSON_DISABLE_ENUM_SERIALIZATION</code></a>).</li> </ul> <p>This release introduced a UDL regression that was fixed in <a href="https://github.com/nlohmann/json/releases/tag/v3.11.1">3.11.1</a>. <a href="https://github.com/nlohmann/json/releases/tag/v3.11.0">Full release notes</a>.</p> <h2 id=v3105-2022-01-03>v3.10.5 (2022-01-03)<a class=headerlink href=#v3105-2022-01-03 title="Permanent link">&para;</a></h2> <p>Bug-fix release. All changes are backward-compatible.</p> <ul> <li>Guards the <code>std::filesystem</code> conversions behind compiler-support checks (<a href=../../api/macros/json_has_filesystem/ ><code>JSON_HAS_FILESYSTEM</code></a>), which can be set to <code>0</code> to disable them altogether.</li> </ul> <p><a href="https://github.com/nlohmann/json/releases/tag/v3.10.5">Full release notes</a>.</p> <h2 id=v3104-2021-10-16>v3.10.4 (2021-10-16)<a class=headerlink href=#v3104-2021-10-16 title="Permanent link">&para;</a></h2> <p>Fixes regressions introduced in 3.10.0. All changes are backward-compatible.</p> <ul> <li>Fixes the <code>std::filesystem::path</code> conversion (which could trigger a stack overflow and broke compilation on Windows).</li> <li>Fixes compilation for types with an explicit defaulted constructor and for code relying on the return values of <code>std::find</code> and <code>std::remove</code>.</li> </ul> <p><a href="https://github.com/nlohmann/json/releases/tag/v3.10.4">Full release notes</a>.</p> <h2 id=v3103-2021-10-08>v3.10.3 (2021-10-08)<a class=headerlink href=#v3103-2021-10-08 title="Permanent link">&para;</a></h2> <p>Fixes more regressions from 3.10.0. All changes are backward-compatible.</p> <ul> <li>Fixes <a href=../../api/macros/json_diagnostics/ >extended-diagnostics</a> assertions triggered by <a href=../../api/basic_json/update/ ><code>update</code></a> and by inserting into arrays.</li> <li>Supports custom allocators when writing binary formats into a <code>std::vector</code>, and allows conversion from types that only provide <code>begin()</code>/<code>end()</code>.</li> </ul> <p><a href="https://github.com/nlohmann/json/releases/tag/v3.10.3">Full release notes</a>.</p> <h2 id=v3102-2021-08-26>v3.10.2 (2021-08-26)<a class=headerlink href=#v3102-2021-08-26 title="Permanent link">&para;</a></h2> <p>Re-release of 3.10.1, whose Git tag pointed at the wrong commit due to a bug in the release script. All changes are backward-compatible. <a href="https://github.com/nlohmann/json/releases/tag/v3.10.2">Full release notes</a>.</p> <h2 id=v3101-2021-08-24>v3.10.1 (2021-08-24)<a class=headerlink href=#v3101-2021-08-24 title="Permanent link">&para;</a></h2> <p>Fixes a regression from 3.10.0. All changes are backward-compatible.</p> <ul> <li>Fixes an <a href=../../api/macros/json_diagnostics/ >extended-diagnostics</a> assertion triggered when used with <a href=../../api/ordered_json/ ><code>ordered_json</code></a>, and hardens the GDB pretty-printer.</li> </ul> <p><a href="https://github.com/nlohmann/json/releases/tag/v3.10.1">Full release notes</a>.</p> <h2 id=v3100-2021-08-17>v3.10.0 (2021-08-17)<a class=headerlink href=#v3100-2021-08-17 title="Permanent link">&para;</a></h2> <p>Feature release. All changes are backward-compatible.</p> <ul> <li>Adds <a href=../../api/macros/json_diagnostics/ >extended diagnostic messages</a> (<a href=../../api/macros/json_diagnostics/ ><code>JSON_DIAGNOSTICS</code></a>) that prepend a <abbr title="JavaScript Object Notation">JSON</abbr> pointer to exception messages to pinpoint the offending value.</li> <li>Adds a GDB pretty-printer and a <a href=../../api/basic_json/cbor_tag_handler_t/ ><code>cbor_tag_handler_t</code></a> <code>store</code> option to keep <abbr title="Concise Binary Object Representation">CBOR</abbr> tags as binary subtypes.</li> <li>Supports containers with non-default-constructible types and parsing from <code>std::byte</code>.</li> <li>Adds <a href=../../api/macros/json_no_io/ ><code>JSON_NO_IO</code></a> to exclude the I/O headers and the <a href=../../api/macros/json_has_cpp_11/ ><code>JSON_HAS_CPP_*</code></a> macros to override the detected C++ standard.</li> </ul> <p><a href="https://github.com/nlohmann/json/releases/tag/v3.10.0">Full release notes</a>.</p> <h2 id=v391-2020-08-06>v3.9.1 (2020-08-06)<a class=headerlink href=#v391-2020-08-06 title="Permanent link">&para;</a></h2> <p>Fixes two regressions from 3.9.0. All changes are backward-compatible.</p> <ul> <li>Accepts consecutive <a href=../../features/comments/ >comments</a> and completes the <a href=../../api/ordered_json/ ><code>ordered_json</code></a> interface (e.g. <code>ordered_json::parse</code>).</li> </ul> <p><a href="https://github.com/nlohmann/json/releases/tag/v3.9.1">Full release notes</a>.</p> <h2 id=v390-2020-07-27>v3.9.0 (2020-07-27)<a class=headerlink href=#v390-2020-07-27 title="Permanent link">&para;</a></h2> <p>Feature release adding four long-requested features. All changes are backward-compatible.</p> <ul> <li>Optional <a href=../../features/comments/ >comment</a> parsing in <a href=../../api/basic_json/parse/ ><code>parse</code></a> via the <code>ignore_comments</code> parameter.</li> <li><a href=../../api/ordered_json/ ><code>ordered_json</code></a> to preserve the <a href=../../features/object_order/ >insertion order</a> of object keys.</li> <li>An option to switch off <a href=../../api/macros/json_use_implicit_conversions/ >implicit conversions</a>.</li> <li>The <a href=../../features/arbitrary_types/#simplify-your-life-with-macros><code>NLOHMANN_DEFINE_TYPE_*</code></a> convenience macros, plus high-precision-number support for <a href=../../features/binary_formats/ubjson/ ><abbr title="Universal Binary JSON">UBJSON</abbr></a> and <abbr title="Concise Binary Object Representation">CBOR</abbr> tag handling.</li> </ul> <p><a href="https://github.com/nlohmann/json/releases/tag/v3.9.0">Full release notes</a>.</p> <h2 id=v380-2020-06-14>v3.8.0 (2020-06-14)<a class=headerlink href=#v380-2020-06-14 title="Permanent link">&para;</a></h2> <p>Feature release. All changes are backward-compatible.</p> <ul> <li>Introduces a <a href=../../features/binary_values/ >binary value</a> type that is read from and written to <a href=../../features/binary_formats/cbor/ ><abbr title="Concise Binary Object Representation">CBOR</abbr></a>, <a href=../../features/binary_formats/bson/ ><abbr title="Binary JSON">BSON</abbr></a>, and <a href=../../features/binary_formats/messagepack/ >MessagePack</a>, and can be shared between formats.</li> <li>Generalizes the input adapters to read from any <code>LegacyInputIterator</code> container (3–10 % faster parsing).</li> <li>Fixes <a href=../../api/basic_json/contains/ ><code>contains</code></a> for <abbr title="JavaScript Object Notation">JSON</abbr> pointers and makes the binary <a href=../../api/basic_json/from_cbor/ ><code>from_cbor</code></a>/<a href=../../api/basic_json/from_msgpack/ ><code>from_msgpack</code></a>/etc. functions respect <code>allow_exceptions</code>.</li> </ul> <p><a href="https://github.com/nlohmann/json/releases/tag/v3.8.0">Full release notes</a>.</p> <h2 id=v373-2019-11-17>v3.7.3 (2019-11-17)<a class=headerlink href=#v373-2019-11-17 title="Permanent link">&para;</a></h2> <p>Fixes a regression from 3.7.2 that could yield quadratic complexity in destructor calls. All changes are backward-compatible. <a href="https://github.com/nlohmann/json/releases/tag/v3.7.3">Full release notes</a>.</p> <h2 id=v372-2019-11-10>v3.7.2 (2019-11-10)<a class=headerlink href=#v372-2019-11-10 title="Permanent link">&para;</a></h2> <p>Fixes a stack overflow for deeply nested input by making the destructor iterative; parsing is now bounded only by available memory. All changes are backward-compatible. <a href="https://github.com/nlohmann/json/releases/tag/v3.7.2">Full release notes</a>.</p> <h2 id=v371-2019-11-06>v3.7.1 (2019-11-06)<a class=headerlink href=#v371-2019-11-06 title="Permanent link">&para;</a></h2> <p>Bug-fix release. All changes are backward-compatible.</p> <ul> <li>Fixes a segmentation fault when serializing the <code>std::int64_t</code> minimum value and fixes <a href=../../api/basic_json/contains/ ><code>contains</code></a> for <abbr title="JavaScript Object Notation">JSON</abbr> pointers.</li> <li>Allows <a href=../../api/basic_json/items/ ><code>items</code></a> with a custom string type and makes <code>json_pointer::back</code> <code>const</code>.</li> </ul> <p><a href="https://github.com/nlohmann/json/releases/tag/v3.7.1">Full release notes</a>.</p> <h2 id=v370-2019-07-28>v3.7.0 (2019-07-28)<a class=headerlink href=#v370-2019-07-28 title="Permanent link">&para;</a></h2> <p>Convenience features and house-keeping. All changes are backward-compatible.</p> <ul> <li>Adds a <a href=../../api/basic_json/contains/ ><code>contains</code></a> overload that checks a <abbr title="JavaScript Object Notation">JSON</abbr> pointer without throwing, a generic <code>to_string</code>, and a return value for <a href=../../api/basic_json/emplace_back/ ><code>emplace_back</code></a>.</li> </ul> <p><a href="https://github.com/nlohmann/json/releases/tag/v3.7.0">Full release notes</a>.</p> <h2 id=v361-2019-03-20>v3.6.1 (2019-03-20)<a class=headerlink href=#v361-2019-03-20 title="Permanent link">&para;</a></h2> <p>Fixes a regression (<abbr title="GNU Compiler Collection">GCC</abbr> 7/8 compilation) and a <code>&lt;Windows.h&gt;</code> build error introduced in 3.6.0. All changes are backward-compatible. <a href="https://github.com/nlohmann/json/releases/tag/v3.6.1">Full release notes</a>.</p> <h2 id=v360-2019-03-20>v3.6.0 (2019-03-20)<a class=headerlink href=#v360-2019-03-20 title="Permanent link">&para;</a></h2> <p>Feature release. All changes are backward-compatible.</p> <ul> <li>Reworks the <a href=../../features/json_pointer/ ><abbr title="JavaScript Object Notation">JSON</abbr> pointer</a> interface (<code>operator/</code>, <code>push_back</code>, <code>parent_pointer</code>, …).</li> <li>Adds a <a href=../../api/basic_json/contains/ ><code>contains</code></a> function to test for an object key and greatly improves the performance of integer serialization.</li> </ul> <p><a href="https://github.com/nlohmann/json/releases/tag/v3.6.0">Full release notes</a>.</p> <h2 id=v350-2018-12-22>v3.5.0 (2018-12-22)<a class=headerlink href=#v350-2018-12-22 title="Permanent link">&para;</a></h2> <p>Feature release. All changes are backward-compatible.</p> <ul> <li>Adds structured-binding support via the <a href=../../api/basic_json/items/ ><code>items</code></a> function and reading from <code>FILE*</code> in the <a href=../../api/basic_json/parse/ ><code>parse</code></a> function.</li> <li>Fixes the <code>eofbit</code> handling on input streams and a bug in the <abbr title="Binary JSON">BSON</abbr> <abbr title="Simple API for XML">SAX</abbr> parser.</li> </ul> <p><a href="https://github.com/nlohmann/json/releases/tag/v3.5.0">Full release notes</a>.</p> <h2 id=v340-2018-10-30>v3.4.0 (2018-10-30)<a class=headerlink href=#v340-2018-10-30 title="Permanent link">&para;</a></h2> <p>Feature release. All changes are backward-compatible.</p> <ul> <li>Adds <a href=../../features/binary_formats/bson/ ><abbr title="Binary JSON">BSON</abbr></a> read/write support.</li> <li>Adds configurable Unicode error handlers to <a href=../../api/basic_json/dump/ ><code>dump</code></a> (throw, replace with U+FFFD, or ignore) and the <a href=../../api/macros/nlohmann_json_serialize_enum/ ><code>NLOHMANN_JSON_SERIALIZE_ENUM</code></a> macro for <a href=../../features/enum_conversion/ >enum conversion</a>.</li> <li>Improves parse-error messages with line/column positions and context.</li> </ul> <p><a href="https://github.com/nlohmann/json/releases/tag/v3.4.0">Full release notes</a>.</p> <h2 id=v330-2018-10-05>v3.3.0 (2018-10-05)<a class=headerlink href=#v330-2018-10-05 title="Permanent link">&para;</a></h2> <p>Feature release. All changes are backward-compatible.</p> <ul> <li>Adds <abbr title="GNU Compiler Collection">GCC</abbr> 4.8 support, the <a href=../../api/basic_json/get_to/ ><code>get_to</code></a> function, and an overhauled and documented <a href=../../integration/cmake/ >CMake</a> integration.</li> </ul> <p><a href="https://github.com/nlohmann/json/releases/tag/v3.3.0">Full release notes</a>.</p> <h2 id=v320-2018-08-20>v3.2.0 (2018-08-20)<a class=headerlink href=#v320-2018-08-20 title="Permanent link">&para;</a></h2> <p>Feature release. All changes are backward-compatible.</p> <ul> <li>Adds a <a href=../../features/parsing/sax_interface/ ><abbr title="Simple API for XML">SAX</abbr> interface</a> and a non-recursive parser.</li> <li>Adds parsing from wide-string types (<code>std::wstring</code>, <code>std::u16string</code>, <code>std::u32string</code>) and <code>std::string_view</code> (C++17), and round-tripping of <code>std::map</code>/<code>std::unordered_map</code> with non-string keys.</li> </ul> <p><a href="https://github.com/nlohmann/json/releases/tag/v3.2.0">Full release notes</a>.</p> <h2 id=v312-2018-03-14>v3.1.2 (2018-03-14)<a class=headerlink href=#v312-2018-03-14 title="Permanent link">&para;</a></h2> <p>Bug-fix release. All changes are backward-compatible.</p> <ul> <li>Fixes a memory leak in the parser callback and adds user-defined string-type support to the parser and serializer.</li> </ul> <p><a href="https://github.com/nlohmann/json/releases/tag/v3.1.2">Full release notes</a>.</p> <h2 id=v311-2018-02-13>v3.1.1 (2018-02-13)<a class=headerlink href=#v311-2018-02-13 title="Permanent link">&para;</a></h2> <p>Bug-fix release. All changes are backward-compatible.</p> <ul> <li>Fixes parsing of indefinite-length <abbr title="Concise Binary Object Representation">CBOR</abbr> strings, a user-defined conversion to vector types, and overflow detection for <abbr title="Universal Binary JSON">UBJSON</abbr> containers.</li> </ul> <p><a href="https://github.com/nlohmann/json/releases/tag/v3.1.1">Full release notes</a>.</p> <h2 id=v310-2018-02-01>v3.1.0 (2018-02-01)<a class=headerlink href=#v310-2018-02-01 title="Permanent link">&para;</a></h2> <p>Feature release. All changes are backward-compatible.</p> <ul> <li>Adds <a href=../../features/binary_formats/ubjson/ ><abbr title="Universal Binary JSON">UBJSON</abbr></a> read/write support and <a href=../../features/merge_patch/ ><abbr title="JavaScript Object Notation">JSON</abbr> Merge Patch</a> via <a href=../../api/basic_json/merge_patch/ ><code>merge_patch</code></a>.</li> <li>Switches to the Grisu2 algorithm for short, round-trippable floating-point output, and splits the header into <a href=../../integration/ >multiple files</a> with a forward-declaration header.</li> </ul> <p><a href="https://github.com/nlohmann/json/releases/tag/v3.1.0">Full release notes</a>.</p> <h2 id=v301-2017-12-29>v3.0.1 (2017-12-29)<a class=headerlink href=#v301-2017-12-29 title="Permanent link">&para;</a></h2> <p>Fixes small issues in the <a href=../../features/json_pointer/ ><abbr title="JavaScript Object Notation">JSON</abbr> Pointer</a> and <a href=../../features/json_patch/ ><abbr title="JavaScript Object Notation">JSON</abbr> Patch</a> implementations (invalid "copy" targets and non-integer array indices). All changes are backward-compatible. <a href="https://github.com/nlohmann/json/releases/tag/v3.0.1">Full release notes</a>.</p> <h2 id=v300-2017-12-17>v3.0.0 (2017-12-17)<a class=headerlink href=#v300-2017-12-17 title="Permanent link">&para;</a></h2> <p>First 3.x release — a major release with breaking changes (see the <a href=../../integration/migration_guide/ >migration guide</a>).</p> <ul> <li>Introduces user-defined <a href=../exceptions/ >exceptions</a> (<code>json::exception</code> and subtypes, each with an identifier).</li> <li>Adds a non-throwing <a href=../../api/basic_json/accept/ ><code>accept</code></a> function and an <code>allow_exceptions</code> flag for <a href=../../api/basic_json/parse/ ><code>parse</code></a>, and an <a href=../../api/basic_json/update/ ><code>update</code></a> function to merge objects.</li> <li>Adds streaming for <abbr title="Concise Binary Object Representation">CBOR</abbr> and MessagePack and allows storing <abbr title="Not a Number">NaN</abbr>/infinity.</li> <li>Non-<abbr title="Unicode Transformation Format">UTF</abbr>-8 strings now throw on serialization, and the iterator category changed to bidirectional.</li> </ul> <p><a href="https://github.com/nlohmann/json/releases/tag/v3.0.0">Full release notes</a>.</p> <h2 id=v211-2017-02-25>v2.1.1 (2017-02-25)<a class=headerlink href=#v211-2017-02-25 title="Permanent link">&para;</a></h2> <p>Bug-fix release. All changes are backward-compatible.</p> <ul> <li>Makes number parsing and serialization locale-independent with correct floating-point round-tripping; released files are now GPG-signed.</li> </ul> <p><a href="https://github.com/nlohmann/json/releases/tag/v2.1.1">Full release notes</a>.</p> <h2 id=v210-2017-01-28>v2.1.0 (2017-01-28)<a class=headerlink href=#v210-2017-01-28 title="Permanent link">&para;</a></h2> <p>Feature release. All changes are backward-compatible.</p> <ul> <li>Adds conversions from and to <a href=../../features/arbitrary_types/ >arbitrary user-defined types</a> via <code>to_json</code>/<code>from_json</code>, the <a href=../../api/basic_json/meta/ ><code>meta</code></a> function, and the option to switch off exceptions (<a href=../../api/macros/json_noexception/ ><code>JSON_NOEXCEPTION</code></a>).</li> </ul> <p><a href="https://github.com/nlohmann/json/releases/tag/v2.1.0">Full release notes</a>.</p> <h2 id=v2010-2017-01-02>v2.0.10 (2017-01-02)<a class=headerlink href=#v2010-2017-01-02 title="Permanent link">&para;</a></h2> <p>Fixes several security-relevant bugs in the <abbr title="Concise Binary Object Representation">CBOR</abbr> and MessagePack parsers found by OSS-Fuzz. All changes are backward-compatible. <a href="https://github.com/nlohmann/json/releases/tag/v2.0.10">Full release notes</a>.</p> <h2 id=v209-2016-12-16>v2.0.9 (2016-12-16)<a class=headerlink href=#v209-2016-12-16 title="Permanent link">&para;</a></h2> <p>Adds the <a href=../../features/binary_formats/cbor/ ><abbr title="Concise Binary Object Representation">CBOR</abbr></a> and <a href=../../features/binary_formats/messagepack/ >MessagePack</a> binary formats. All changes are backward-compatible. <a href="https://github.com/nlohmann/json/releases/tag/v2.0.9">Full release notes</a>.</p> <h2 id=v208-2016-12-02>v2.0.8 (2016-12-02)<a class=headerlink href=#v208-2016-12-02 title="Permanent link">&para;</a></h2> <p>Adds the <a href=../../api/basic_json/emplace/ ><code>emplace</code></a> and <a href=../../api/basic_json/emplace_back/ ><code>emplace_back</code></a> functions and improves parsing and serialization performance. All changes are backward-compatible. <a href="https://github.com/nlohmann/json/releases/tag/v2.0.8">Full release notes</a>.</p> <h2 id=v207-2016-11-02>v2.0.7 (2016-11-02)<a class=headerlink href=#v207-2016-11-02 title="Permanent link">&para;</a></h2> <p>Fixes several parser bugs found through the "Parsing <abbr title="JavaScript Object Notation">JSON</abbr> is a Minefield" study (short files, encoding detection, surrogate pairs). All changes are backward-compatible. <a href="https://github.com/nlohmann/json/releases/tag/v2.0.7">Full release notes</a>.</p> <h2 id=v206-2016-10-15>v2.0.6 (2016-10-15)<a class=headerlink href=#v206-2016-10-15 title="Permanent link">&para;</a></h2> <p>Fixes <a href=../../api/basic_json/operator%5B%5D/ ><code>operator[]</code></a> for <a href=../../features/json_pointer/ ><abbr title="JavaScript Object Notation">JSON</abbr> pointers</a> so that it creates missing values like the other overloads. All changes are backward-compatible. <a href="https://github.com/nlohmann/json/releases/tag/v2.0.6">Full release notes</a>.</p> <h2 id=v205-2016-09-14>v2.0.5 (2016-09-14)<a class=headerlink href=#v205-2016-09-14 title="Permanent link">&para;</a></h2> <p>Fixes a remaining stream end-of-file detection bug in the parser. All changes are backward-compatible. <a href="https://github.com/nlohmann/json/releases/tag/v2.0.5">Full release notes</a>.</p> <h2 id=v204-2016-09-11>v2.0.4 (2016-09-11)<a class=headerlink href=#v204-2016-09-11 title="Permanent link">&para;</a></h2> <p>Fixes stream end-of-file detection in the parser. All changes are backward-compatible. <a href="https://github.com/nlohmann/json/releases/tag/v2.0.4">Full release notes</a>.</p> <h2 id=v203-2016-08-31>v2.0.3 (2016-08-31)<a class=headerlink href=#v203-2016-08-31 title="Permanent link">&para;</a></h2> <p>Generalizes the parser to accept any contiguous sequence of one-byte elements and deprecates the input-stream constructor in favor of the <a href=../../api/basic_json/parse/ ><code>parse</code></a> function. All changes are backward-compatible. <a href="https://github.com/nlohmann/json/releases/tag/v2.0.3">Full release notes</a>.</p> <h2 id=v202-2016-07-31>v2.0.2 (2016-07-31)<a class=headerlink href=#v202-2016-07-31 title="Permanent link">&para;</a></h2> <p>Overhauls the parser (now rejecting unescaped control characters), tightens the class invariants, and cleans up the code. All changes are backward-compatible. <a href="https://github.com/nlohmann/json/releases/tag/v2.0.2">Full release notes</a>.</p> <h2 id=v201-2016-06-28>v2.0.1 (2016-06-28)<a class=headerlink href=#v201-2016-06-28 title="Permanent link">&para;</a></h2> <p>Fixes a performance regression in the <a href=../../api/basic_json/dump/ ><code>dump</code></a> function by adjusting the stream locale once per serialization. All changes are backward-compatible. <a href="https://github.com/nlohmann/json/releases/tag/v2.0.1">Full release notes</a>.</p> <h2 id=v200-2016-06-24>v2.0.0 (2016-06-24)<a class=headerlink href=#v200-2016-06-24 title="Permanent link">&para;</a></h2> <p>Feature release with a minor (potentially non-backward-compatible) <abbr title="Application Programming Interfaces">API</abbr> change from added <code>noexcept</code> and <code>constexpr</code> specifiers.</p> <ul> <li>Adds <a href=../../features/json_pointer/ ><abbr title="JavaScript Object Notation">JSON</abbr> Pointer</a> support in <a href=../../api/basic_json/at/ ><code>at</code></a> and <a href=../../api/basic_json/operator%5B%5D/ ><code>operator[]</code></a>, plus <a href=../../api/basic_json/flatten/ ><code>flatten</code></a> and <a href=../../api/basic_json/unflatten/ ><code>unflatten</code></a>.</li> <li>Adds <a href=../../features/json_patch/ ><abbr title="JavaScript Object Notation">JSON</abbr> Patch</a> via <a href=../../api/basic_json/diff/ ><code>diff</code></a> and <a href=../../api/basic_json/patch/ ><code>patch</code></a>, unsigned 64-bit integer support, and locale-independent serialization.</li> </ul> <p><a href="https://github.com/nlohmann/json/releases/tag/v2.0.0">Full release notes</a>.</p> <h2 id=v110-2016-01-24>v1.1.0 (2016-01-24)<a class=headerlink href=#v110-2016-01-24 title="Permanent link">&para;</a></h2> <p>Bug-fix and feature release. All changes are backward-compatible.</p> <ul> <li>Improves floating-point round-tripping, adds a <code>get_ref</code> accessor for stored values, and introduces runtime <a href=../../features/assertions/ >assertions</a>.</li> </ul> <p><a href="https://github.com/nlohmann/json/releases/tag/v1.1.0">Full release notes</a>.</p> <h2 id=v100-2015-12-28>v1.0.0 (2015-12-28)<a class=headerlink href=#v100-2015-12-28 title="Permanent link">&para;</a></h2> <p>First official release. <a href="https://github.com/nlohmann/json/releases/tag/v1.0.0">Full release notes</a>.</p> <h2 id=see-also>See also<a class=headerlink href=#see-also title="Permanent link">&para;</a></h2> <ul> <li><a href=../../integration/migration_guide/ >Migration Guide</a> — how to future-proof your code for the next major version and replace deprecated functions.</li> </ul> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 29, 2026 20:15:18 UTC">June 29, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
diff --git a/home/sponsors/index.html b/home/sponsors/index.html
index 5efc720..90b9ac1 100644
--- a/home/sponsors/index.html
+++ b/home/sponsors/index.html
@@ -1 +1 @@
-<!doctype html><html lang=en class=no-js> <head><meta charset=utf-8><meta name=viewport content="width=device-width,initial-scale=1"><meta name=author content="Niels Lohmann"><link href="https://json.nlohmann.me/home/sponsors/" rel="canonical"><link href=../customers/ rel=prev><link href=../../features/arbitrary_types/ rel=next><link rel=icon href=../../assets/images/favicon.png><meta name=generator content="mkdocs-1.6.1, mkdocs-material-9.7.6"><title>Sponsors - JSON for Modern C++</title><link rel=stylesheet href=../../assets/stylesheets/main.484c7ddc.min.css><link rel=stylesheet href=../../assets/stylesheets/palette.ab4e12ef.min.css><link rel="stylesheet" href="../../assets/external/fonts.googleapis.com/css.61a430c9.css"><style>:root{--md-text-font:"Roboto";--md-code-font:"JetBrains Mono"}</style><link rel=stylesheet href=../../css/custom.css><script>__md_scope=new URL("../..",location),__md_hash=e=>[...e].reduce(((e,_)=>(e<<5)-e+_.charCodeAt(0)),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script></head> <body dir=ltr data-md-color-scheme=default data-md-color-primary=indigo data-md-color-accent=indigo> <input class=md-toggle data-md-toggle=drawer type=checkbox id=__drawer autocomplete=off> <input class=md-toggle data-md-toggle=search type=checkbox id=__search autocomplete=off> <label class=md-overlay for=__drawer></label> <div data-md-component=skip> <a href=#sponsors class=md-skip> Skip to content </a> </div> <div data-md-component=announce> </div> <header class=md-header data-md-component=header> <nav class="md-header__inner md-grid" aria-label=Header> <a href=../.. title="JSON for Modern C++" class="md-header__button md-logo" aria-label="JSON for Modern C++" data-md-component=logo> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54"/></svg> </a> <label class="md-header__button md-icon" for=__drawer> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M3 6h18v2H3zm0 5h18v2H3zm0 5h18v2H3z"/></svg> </label> <div class=md-header__title data-md-component=header-title> <div class=md-header__ellipsis> <div class=md-header__topic> <span class=md-ellipsis> JSON for Modern C++ </span> </div> <div class=md-header__topic data-md-component=header-topic> <span class=md-ellipsis> Sponsors </span> </div> </div> </div> <form class=md-header__option data-md-component=palette> <input class=md-option data-md-color-media="(prefers-color-scheme: light)" data-md-color-scheme=default data-md-color-primary=indigo data-md-color-accent=indigo aria-label="Switch to dark mode" type=radio name=__palette id=__palette_0> <label class="md-header__button md-icon" title="Switch to dark mode" for=__palette_1 hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a4 4 0 0 0-4 4 4 4 0 0 0 4 4 4 4 0 0 0 4-4 4 4 0 0 0-4-4m0 10a6 6 0 0 1-6-6 6 6 0 0 1 6-6 6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12z"/></svg> </label> <input class=md-option data-md-color-media="(prefers-color-scheme: dark)" data-md-color-scheme=slate data-md-color-primary=indigo data-md-color-accent=indigo aria-label="Switch to light mode" type=radio name=__palette id=__palette_1> <label class="md-header__button md-icon" title="Switch to light mode" for=__palette_0 hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 18c-.89 0-1.74-.2-2.5-.55C11.56 16.5 13 14.42 13 12s-1.44-4.5-3.5-5.45C10.26 6.2 11.11 6 12 6a6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12z"/></svg> </label> </form> <script>var palette=__md_get("__palette");if(palette&&palette.color){if("(prefers-color-scheme)"===palette.color.media){var media=matchMedia("(prefers-color-scheme: light)"),input=document.querySelector(media.matches?"[data-md-color-media='(prefers-color-scheme: light)']":"[data-md-color-media='(prefers-color-scheme: dark)']");palette.color.media=input.getAttribute("data-md-color-media"),palette.color.scheme=input.getAttribute("data-md-color-scheme"),palette.color.primary=input.getAttribute("data-md-color-primary"),palette.color.accent=input.getAttribute("data-md-color-accent")}for(var[key,value]of Object.entries(palette.color))document.body.setAttribute("data-md-color-"+key,value)}</script> <label class="md-header__button md-icon" for=__search> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg> </label> <div class=md-search data-md-component=search role=dialog> <label class=md-search__overlay for=__search></label> <div class=md-search__inner role=search> <form class=md-search__form name=search> <input type=text class=md-search__input name=query aria-label=Search placeholder=Search autocapitalize=off autocorrect=off autocomplete=off spellcheck=false data-md-component=search-query required> <label class="md-search__icon md-icon" for=__search> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11z"/></svg> </label> <nav class=md-search__options aria-label=Search> <button type=reset class="md-search__icon md-icon" title=Clear aria-label=Clear tabindex=-1> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z"/></svg> </button> </nav> </form> <div class=md-search__output> <div class=md-search__scrollwrap tabindex=0 data-md-scrollfix> <div class=md-search-result data-md-component=search-result> <div class=md-search-result__meta> Initializing search </div> <ol class=md-search-result__list role=presentation></ol> </div> </div> </div> </div> </div> <div class=md-header__source> <a href="https://github.com/nlohmann/json" title="Go to repository" class="md-source" data-md-component="source"> <div class="md-source__icon md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </div> <div class=md-source__repository> nlohmann/json </div> </a> </div> </nav> </header> <div class=md-container data-md-component=container> <nav class=md-tabs aria-label=Tabs data-md-component=tabs> <div class=md-grid> <ul class=md-tabs__list> <li class="md-tabs__item md-tabs__item--active"> <a href=../.. class=md-tabs__link> Home </a> </li> <li class=md-tabs__item> <a href=../../features/arbitrary_types/ class=md-tabs__link> Features </a> </li> <li class=md-tabs__item> <a href=../../integration/ class=md-tabs__link> Integration </a> </li> <li class=md-tabs__item> <a href=../../api/basic_json/ class=md-tabs__link> API Documentation </a> </li> <li class=md-tabs__item> <a href=../../community/ class=md-tabs__link> Community </a> </li> </ul> </div> </nav> <main class=md-main data-md-component=main> <div class="md-main__inner md-grid"> <div class="md-sidebar md-sidebar--primary" data-md-component=sidebar data-md-type=navigation> <div class=md-sidebar__scrollwrap> <div class=md-sidebar__inner> <nav class="md-nav md-nav--primary md-nav--lifted" aria-label=Navigation data-md-level=0> <label class=md-nav__title for=__drawer> <a href=../.. title="JSON for Modern C++" class="md-nav__button md-logo" aria-label="JSON for Modern C++" data-md-component=logo> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54"/></svg> </a> JSON for Modern C++ </label> <div class=md-nav__source> <a href="https://github.com/nlohmann/json" title="Go to repository" class="md-source" data-md-component="source"> <div class="md-source__icon md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </div> <div class=md-source__repository> nlohmann/json </div> </a> </div> <ul class=md-nav__list data-md-scrollfix> <li class="md-nav__item md-nav__item--active md-nav__item--section md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_1 checked> <div class="md-nav__link md-nav__container"> <a href=../.. class="md-nav__link "> <span class=md-ellipsis> Home </span> </a> <label class="md-nav__link " for=__nav_1 id=__nav_1_label tabindex> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_1_label aria-expanded=true> <label class=md-nav__title for=__nav_1> <span class="md-nav__icon md-icon"></span> Home </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../license/ class=md-nav__link> <span class=md-ellipsis> License </span> </a> </li> <li class=md-nav__item> <a href=../faq/ class=md-nav__link> <span class=md-ellipsis> FAQ </span> </a> </li> <li class=md-nav__item> <a href=../exceptions/ class=md-nav__link> <span class=md-ellipsis> Exceptions </span> </a> </li> <li class=md-nav__item> <a href=../releases/ class=md-nav__link> <span class=md-ellipsis> Releases </span> </a> </li> <li class=md-nav__item> <a href=../design_goals/ class=md-nav__link> <span class=md-ellipsis> Design goals </span> </a> </li> <li class=md-nav__item> <a href=../architecture/ class=md-nav__link> <span class=md-ellipsis> Architecture </span> </a> </li> <li class=md-nav__item> <a href=../customers/ class=md-nav__link> <span class=md-ellipsis> Customers </span> </a> </li> <li class="md-nav__item md-nav__item--active"> <input class="md-nav__toggle md-toggle" type=checkbox id=__toc> <label class="md-nav__link md-nav__link--active" for=__toc> <span class=md-ellipsis> Sponsors </span> <span class="md-nav__icon md-icon"></span> </label> <a href=./ class="md-nav__link md-nav__link--active"> <span class=md-ellipsis> Sponsors </span> </a> <nav class="md-nav md-nav--secondary" aria-label="Table of contents"> <label class=md-nav__title for=__toc> <span class="md-nav__icon md-icon"></span> Table of contents </label> <ul class=md-nav__list data-md-component=toc data-md-scrollfix> <li class=md-nav__item> <a href=#priority-sponsor class=md-nav__link> <span class=md-ellipsis> Priority Sponsor </span> </a> </li> <li class=md-nav__item> <a href=#named-sponsors class=md-nav__link> <span class=md-ellipsis> Named Sponsors </span> </a> </li> </ul> </nav> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2> <label class=md-nav__link for=__nav_2 id=__nav_2_label tabindex=0> <span class=md-ellipsis> Features </span> <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_2_label aria-expanded=false> <label class=md-nav__title for=__nav_2> <span class="md-nav__icon md-icon"></span> Features </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../features/arbitrary_types/ class=md-nav__link> <span class=md-ellipsis> Arbitrary Type Conversions </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_2> <div class="md-nav__link md-nav__container"> <a href=../../features/binary_formats/ class="md-nav__link "> <span class=md-ellipsis> Binary Formats </span> </a> <label class="md-nav__link " for=__nav_2_2 id=__nav_2_2_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_2_label aria-expanded=false> <label class=md-nav__title for=__nav_2_2> <span class="md-nav__icon md-icon"></span> Binary Formats </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../features/binary_formats/bjdata/ class=md-nav__link> <span class=md-ellipsis> BJData </span> </a> </li> <li class=md-nav__item> <a href=../../features/binary_formats/bson/ class=md-nav__link> <span class=md-ellipsis> BSON </span> </a> </li> <li class=md-nav__item> <a href=../../features/binary_formats/cbor/ class=md-nav__link> <span class=md-ellipsis> CBOR </span> </a> </li> <li class=md-nav__item> <a href=../../features/binary_formats/messagepack/ class=md-nav__link> <span class=md-ellipsis> MessagePack </span> </a> </li> <li class=md-nav__item> <a href=../../features/binary_formats/ubjson/ class=md-nav__link> <span class=md-ellipsis> UBJSON </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../features/binary_values/ class=md-nav__link> <span class=md-ellipsis> Binary Values </span> </a> </li> <li class=md-nav__item> <a href=../../features/comments/ class=md-nav__link> <span class=md-ellipsis> Comments </span> </a> </li> <li class=md-nav__item> <a href=../../features/trailing_commas/ class=md-nav__link> <span class=md-ellipsis> Trailing Commas </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_6> <div class="md-nav__link md-nav__container"> <a href=../../features/element_access/ class="md-nav__link "> <span class=md-ellipsis> Element Access </span> </a> <label class="md-nav__link " for=__nav_2_6 id=__nav_2_6_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_6_label aria-expanded=false> <label class=md-nav__title for=__nav_2_6> <span class="md-nav__icon md-icon"></span> Element Access </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../features/element_access/unchecked_access/ class=md-nav__link> <span class=md-ellipsis> Unchecked access: operator[] </span> </a> </li> <li class=md-nav__item> <a href=../../features/element_access/checked_access/ class=md-nav__link> <span class=md-ellipsis> Checked access: at </span> </a> </li> <li class=md-nav__item> <a href=../../features/element_access/default_value/ class=md-nav__link> <span class=md-ellipsis> Access with default value: value </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../features/iterators/ class=md-nav__link> <span class=md-ellipsis> Iterators </span> </a> </li> <li class=md-nav__item> <a href=../../features/json_pointer/ class=md-nav__link> <span class=md-ellipsis> JSON Pointer </span> </a> </li> <li class=md-nav__item> <a href=../../features/json_patch/ class=md-nav__link> <span class=md-ellipsis> JSON Patch and Diff </span> </a> </li> <li class=md-nav__item> <a href=../../features/merge_patch/ class=md-nav__link> <span class=md-ellipsis> JSON Merge Patch </span> </a> </li> <li class=md-nav__item> <a href=../../features/modules/ class=md-nav__link> <span class=md-ellipsis> Modules </span> </a> </li> <li class=md-nav__item> <a href=../../features/namespace/ class=md-nav__link> <span class=md-ellipsis> nlohmann Namespace </span> </a> </li> <li class=md-nav__item> <a href=../../features/object_order/ class=md-nav__link> <span class=md-ellipsis> Object Order </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_14> <div class="md-nav__link md-nav__container"> <a href=../../features/parsing/ class="md-nav__link "> <span class=md-ellipsis> Parsing </span> </a> <label class="md-nav__link " for=__nav_2_14 id=__nav_2_14_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_14_label aria-expanded=false> <label class=md-nav__title for=__nav_2_14> <span class="md-nav__icon md-icon"></span> Parsing </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../features/parsing/json_lines/ class=md-nav__link> <span class=md-ellipsis> JSON Lines </span> </a> </li> <li class=md-nav__item> <a href=../../features/parsing/parse_exceptions/ class=md-nav__link> <span class=md-ellipsis> Parsing and Exceptions </span> </a> </li> <li class=md-nav__item> <a href=../../features/parsing/parser_callbacks/ class=md-nav__link> <span class=md-ellipsis> Parser Callbacks </span> </a> </li> <li class=md-nav__item> <a href=../../features/parsing/sax_interface/ class=md-nav__link> <span class=md-ellipsis> SAX Interface </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../features/assertions/ class=md-nav__link> <span class=md-ellipsis> Runtime Assertions </span> </a> </li> <li class=md-nav__item> <a href=../../features/enum_conversion/ class=md-nav__link> <span class=md-ellipsis> Specializing enum conversion </span> </a> </li> <li class=md-nav__item> <a href=../../features/macros/ class=md-nav__link> <span class=md-ellipsis> Supported Macros </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_18> <div class="md-nav__link md-nav__container"> <a href=../../features/types/ class="md-nav__link "> <span class=md-ellipsis> Types </span> </a> <label class="md-nav__link " for=__nav_2_18 id=__nav_2_18_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_18_label aria-expanded=false> <label class=md-nav__title for=__nav_2_18> <span class="md-nav__icon md-icon"></span> Types </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../features/types/number_handling/ class=md-nav__link> <span class=md-ellipsis> Number Handling </span> </a> </li> </ul> </nav> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_3> <div class="md-nav__link md-nav__container"> <a href=../../integration/ class="md-nav__link "> <span class=md-ellipsis> Integration </span> </a> <label class="md-nav__link " for=__nav_3 id=__nav_3_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_3_label aria-expanded=false> <label class=md-nav__title for=__nav_3> <span class="md-nav__icon md-icon"></span> Integration </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../integration/migration_guide/ class=md-nav__link> <span class=md-ellipsis> Migration Guide </span> </a> </li> <li class=md-nav__item> <a href=../../integration/cmake/ class=md-nav__link> <span class=md-ellipsis> CMake </span> </a> </li> <li class=md-nav__item> <a href=../../integration/package_managers/ class=md-nav__link> <span class=md-ellipsis> Package Managers </span> </a> </li> <li class=md-nav__item> <a href=../../integration/pkg-config/ class=md-nav__link> <span class=md-ellipsis> Pkg-config </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4> <label class=md-nav__link for=__nav_4 id=__nav_4_label tabindex=0> <span class=md-ellipsis> API Documentation </span> <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_4_label aria-expanded=false> <label class=md-nav__title for=__nav_4> <span class="md-nav__icon md-icon"></span> API Documentation </label> <ul class=md-nav__list data-md-scrollfix> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_1> <div class="md-nav__link md-nav__container"> <a href=../../api/basic_json/ class="md-nav__link "> <span class=md-ellipsis> basic_json </span> </a> <label class="md-nav__link " for=__nav_4_1 id=__nav_4_1_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_1_label aria-expanded=false> <label class=md-nav__title for=__nav_4_1> <span class="md-nav__icon md-icon"></span> basic_json </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../api/basic_json/basic_json/ class=md-nav__link> <span class=md-ellipsis> (Constructor) </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/~basic_json/ class=md-nav__link> <span class=md-ellipsis> (Destructor) </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/accept/ class=md-nav__link> <span class=md-ellipsis> accept </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/array/ class=md-nav__link> <span class=md-ellipsis> array </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/array_t/ class=md-nav__link> <span class=md-ellipsis> array_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/at/ class=md-nav__link> <span class=md-ellipsis> at </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/back/ class=md-nav__link> <span class=md-ellipsis> back </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/begin/ class=md-nav__link> <span class=md-ellipsis> begin </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/binary/ class=md-nav__link> <span class=md-ellipsis> binary </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/binary_t/ class=md-nav__link> <span class=md-ellipsis> binary_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/boolean_t/ class=md-nav__link> <span class=md-ellipsis> boolean_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/cbegin/ class=md-nav__link> <span class=md-ellipsis> cbegin </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/cbor_tag_handler_t/ class=md-nav__link> <span class=md-ellipsis> cbor_tag_handler_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/cend/ class=md-nav__link> <span class=md-ellipsis> cend </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/clear/ class=md-nav__link> <span class=md-ellipsis> clear </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/contains/ class=md-nav__link> <span class=md-ellipsis> contains </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/count/ class=md-nav__link> <span class=md-ellipsis> count </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/crbegin/ class=md-nav__link> <span class=md-ellipsis> crbegin </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/crend/ class=md-nav__link> <span class=md-ellipsis> crend </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/default_object_comparator_t/ class=md-nav__link> <span class=md-ellipsis> default_object_comparator_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/diff/ class=md-nav__link> <span class=md-ellipsis> diff </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/dump/ class=md-nav__link> <span class=md-ellipsis> dump </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/emplace/ class=md-nav__link> <span class=md-ellipsis> emplace </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/emplace_back/ class=md-nav__link> <span class=md-ellipsis> emplace_back </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/empty/ class=md-nav__link> <span class=md-ellipsis> empty </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/end/ class=md-nav__link> <span class=md-ellipsis> end </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/end_pos/ class=md-nav__link> <span class=md-ellipsis> end_pos </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/erase/ class=md-nav__link> <span class=md-ellipsis> erase </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/error_handler_t/ class=md-nav__link> <span class=md-ellipsis> error_handler_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/exception/ class=md-nav__link> <span class=md-ellipsis> exception </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/find/ class=md-nav__link> <span class=md-ellipsis> find </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/flatten/ class=md-nav__link> <span class=md-ellipsis> flatten </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/from_bjdata/ class=md-nav__link> <span class=md-ellipsis> from_bjdata </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/from_bson/ class=md-nav__link> <span class=md-ellipsis> from_bson </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/from_cbor/ class=md-nav__link> <span class=md-ellipsis> from_cbor </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/from_msgpack/ class=md-nav__link> <span class=md-ellipsis> from_msgpack </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/from_ubjson/ class=md-nav__link> <span class=md-ellipsis> from_ubjson </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/front/ class=md-nav__link> <span class=md-ellipsis> front </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/get/ class=md-nav__link> <span class=md-ellipsis> get </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/get_allocator/ class=md-nav__link> <span class=md-ellipsis> get_allocator </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/get_binary/ class=md-nav__link> <span class=md-ellipsis> get_binary </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/get_ptr/ class=md-nav__link> <span class=md-ellipsis> get_ptr </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/get_ref/ class=md-nav__link> <span class=md-ellipsis> get_ref </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/get_to/ class=md-nav__link> <span class=md-ellipsis> get_to </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/std_hash/ class=md-nav__link> <span class=md-ellipsis> std::hash&lt;basic_json&gt; </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/input_format_t/ class=md-nav__link> <span class=md-ellipsis> input_format_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/insert/ class=md-nav__link> <span class=md-ellipsis> insert </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/invalid_iterator/ class=md-nav__link> <span class=md-ellipsis> invalid_iterator </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_array/ class=md-nav__link> <span class=md-ellipsis> is_array </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_binary/ class=md-nav__link> <span class=md-ellipsis> is_binary </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_boolean/ class=md-nav__link> <span class=md-ellipsis> is_boolean </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_discarded/ class=md-nav__link> <span class=md-ellipsis> is_discarded </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_null/ class=md-nav__link> <span class=md-ellipsis> is_null </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_number/ class=md-nav__link> <span class=md-ellipsis> is_number </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_number_float/ class=md-nav__link> <span class=md-ellipsis> is_number_float </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_number_integer/ class=md-nav__link> <span class=md-ellipsis> is_number_integer </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_number_unsigned/ class=md-nav__link> <span class=md-ellipsis> is_number_unsigned </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_object/ class=md-nav__link> <span class=md-ellipsis> is_object </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_primitive/ class=md-nav__link> <span class=md-ellipsis> is_primitive </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_string/ class=md-nav__link> <span class=md-ellipsis> is_string </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_structured/ class=md-nav__link> <span class=md-ellipsis> is_structured </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/items/ class=md-nav__link> <span class=md-ellipsis> items </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/json_base_class_t/ class=md-nav__link> <span class=md-ellipsis> json_base_class_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/json_serializer/ class=md-nav__link> <span class=md-ellipsis> json_serializer </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/max_size/ class=md-nav__link> <span class=md-ellipsis> max_size </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/meta/ class=md-nav__link> <span class=md-ellipsis> meta </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/merge_patch/ class=md-nav__link> <span class=md-ellipsis> merge_patch </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/number_float_t/ class=md-nav__link> <span class=md-ellipsis> number_float_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/number_integer_t/ class=md-nav__link> <span class=md-ellipsis> number_integer_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/number_unsigned_t/ class=md-nav__link> <span class=md-ellipsis> number_unsigned_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/object/ class=md-nav__link> <span class=md-ellipsis> object </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/object_comparator_t/ class=md-nav__link> <span class=md-ellipsis> object_comparator_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/object_t/ class=md-nav__link> <span class=md-ellipsis> object_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/operator_ValueType/ class=md-nav__link> <span class=md-ellipsis> operator ValueType </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/operator_value_t/ class=md-nav__link> <span class=md-ellipsis> operator value_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/operator%5B%5D/ class=md-nav__link> <span class=md-ellipsis> operator[] </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/operator%3D/ class=md-nav__link> <span class=md-ellipsis> operator= </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/operator%2B%3D/ class=md-nav__link> <span class=md-ellipsis> operator+= </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/operator_eq/ class=md-nav__link> <span class=md-ellipsis> operator== </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/operator_ne/ class=md-nav__link> <span class=md-ellipsis> operator!= </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/operator_lt/ class=md-nav__link> <span class=md-ellipsis> operator< </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/operator_gt/ class=md-nav__link> <span class=md-ellipsis> operator> </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/operator_le/ class=md-nav__link> <span class=md-ellipsis> operator<= </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/operator_ge/ class=md-nav__link> <span class=md-ellipsis> operator>= </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/operator_spaceship/ class=md-nav__link> <span class=md-ellipsis> operator<=> </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/out_of_range/ class=md-nav__link> <span class=md-ellipsis> out_of_range </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/other_error/ class=md-nav__link> <span class=md-ellipsis> other_error </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/parse/ class=md-nav__link> <span class=md-ellipsis> parse </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/parse_error/ class=md-nav__link> <span class=md-ellipsis> parse_error </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/parse_event_t/ class=md-nav__link> <span class=md-ellipsis> parse_event_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/parser_callback_t/ class=md-nav__link> <span class=md-ellipsis> parser_callback_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/patch/ class=md-nav__link> <span class=md-ellipsis> patch </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/patch_inplace/ class=md-nav__link> <span class=md-ellipsis> patch_inplace </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/push_back/ class=md-nav__link> <span class=md-ellipsis> push_back </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/rbegin/ class=md-nav__link> <span class=md-ellipsis> rbegin </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/rend/ class=md-nav__link> <span class=md-ellipsis> rend </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/sax_parse/ class=md-nav__link> <span class=md-ellipsis> sax_parse </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/size/ class=md-nav__link> <span class=md-ellipsis> size </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/start_pos/ class=md-nav__link> <span class=md-ellipsis> start_pos </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/string_t/ class=md-nav__link> <span class=md-ellipsis> string_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/swap/ class=md-nav__link> <span class=md-ellipsis> swap </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/std_swap/ class=md-nav__link> <span class=md-ellipsis> std::swap&lt;basic_json&gt; </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/to_bjdata/ class=md-nav__link> <span class=md-ellipsis> to_bjdata </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/to_bson/ class=md-nav__link> <span class=md-ellipsis> to_bson </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/to_cbor/ class=md-nav__link> <span class=md-ellipsis> to_cbor </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/to_msgpack/ class=md-nav__link> <span class=md-ellipsis> to_msgpack </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/to_string/ class=md-nav__link> <span class=md-ellipsis> to_string </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/to_ubjson/ class=md-nav__link> <span class=md-ellipsis> to_ubjson </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/type/ class=md-nav__link> <span class=md-ellipsis> type </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/type_error/ class=md-nav__link> <span class=md-ellipsis> type_error </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/type_name/ class=md-nav__link> <span class=md-ellipsis> type_name </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/unflatten/ class=md-nav__link> <span class=md-ellipsis> unflatten </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/update/ class=md-nav__link> <span class=md-ellipsis> update </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/value/ class=md-nav__link> <span class=md-ellipsis> value </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/value_t/ class=md-nav__link> <span class=md-ellipsis> value_t </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_2> <div class="md-nav__link md-nav__container"> <a href=../../api/byte_container_with_subtype/ class="md-nav__link "> <span class=md-ellipsis> byte_container_with_subtype </span> </a> <label class="md-nav__link " for=__nav_4_2 id=__nav_4_2_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_2_label aria-expanded=false> <label class=md-nav__title for=__nav_4_2> <span class="md-nav__icon md-icon"></span> byte_container_with_subtype </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../api/byte_container_with_subtype/byte_container_with_subtype/ class=md-nav__link> <span class=md-ellipsis> (constructor) </span> </a> </li> <li class=md-nav__item> <a href=../../api/byte_container_with_subtype/clear_subtype/ class=md-nav__link> <span class=md-ellipsis> clear_subtype </span> </a> </li> <li class=md-nav__item> <a href=../../api/byte_container_with_subtype/has_subtype/ class=md-nav__link> <span class=md-ellipsis> has_subtype </span> </a> </li> <li class=md-nav__item> <a href=../../api/byte_container_with_subtype/set_subtype/ class=md-nav__link> <span class=md-ellipsis> set_subtype </span> </a> </li> <li class=md-nav__item> <a href=../../api/byte_container_with_subtype/subtype/ class=md-nav__link> <span class=md-ellipsis> subtype </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_3> <div class="md-nav__link md-nav__container"> <a href=../../api/adl_serializer/ class="md-nav__link "> <span class=md-ellipsis> adl_serializer </span> </a> <label class="md-nav__link " for=__nav_4_3 id=__nav_4_3_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_3_label aria-expanded=false> <label class=md-nav__title for=__nav_4_3> <span class="md-nav__icon md-icon"></span> adl_serializer </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../api/adl_serializer/from_json/ class=md-nav__link> <span class=md-ellipsis> from_json </span> </a> </li> <li class=md-nav__item> <a href=../../api/adl_serializer/to_json/ class=md-nav__link> <span class=md-ellipsis> to_json </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../api/json/ class=md-nav__link> <span class=md-ellipsis> json </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_5> <div class="md-nav__link md-nav__container"> <a href=../../api/json_pointer/ class="md-nav__link "> <span class=md-ellipsis> json_pointer </span> </a> <label class="md-nav__link " for=__nav_4_5 id=__nav_4_5_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_5_label aria-expanded=false> <label class=md-nav__title for=__nav_4_5> <span class="md-nav__icon md-icon"></span> json_pointer </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../api/json_pointer/json_pointer/ class=md-nav__link> <span class=md-ellipsis> (Constructor) </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/back/ class=md-nav__link> <span class=md-ellipsis> back </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/empty/ class=md-nav__link> <span class=md-ellipsis> empty </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/front/ class=md-nav__link> <span class=md-ellipsis> front </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/operator_string_t/ class=md-nav__link> <span class=md-ellipsis> operator string_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/operator_eq/ class=md-nav__link> <span class=md-ellipsis> operator== </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/operator_ne/ class=md-nav__link> <span class=md-ellipsis> operator!= </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/operator_slash/ class=md-nav__link> <span class=md-ellipsis> operator/ </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/operator_slasheq/ class=md-nav__link> <span class=md-ellipsis> operator/= </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/parent_pointer/ class=md-nav__link> <span class=md-ellipsis> parent_pointer </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/pop_back/ class=md-nav__link> <span class=md-ellipsis> pop_back </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/pop_front/ class=md-nav__link> <span class=md-ellipsis> pop_front </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/push_back/ class=md-nav__link> <span class=md-ellipsis> push_back </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/push_front/ class=md-nav__link> <span class=md-ellipsis> push_front </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/string_t/ class=md-nav__link> <span class=md-ellipsis> string_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/to_string/ class=md-nav__link> <span class=md-ellipsis> to_string </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_6> <div class="md-nav__link md-nav__container"> <a href=../../api/json_sax/ class="md-nav__link "> <span class=md-ellipsis> json_sax </span> </a> <label class="md-nav__link " for=__nav_4_6 id=__nav_4_6_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_6_label aria-expanded=false> <label class=md-nav__title for=__nav_4_6> <span class="md-nav__icon md-icon"></span> json_sax </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../api/json_sax/binary/ class=md-nav__link> <span class=md-ellipsis> binary </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_sax/boolean/ class=md-nav__link> <span class=md-ellipsis> boolean </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_sax/end_array/ class=md-nav__link> <span class=md-ellipsis> end_array </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_sax/end_object/ class=md-nav__link> <span class=md-ellipsis> end_object </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_sax/key/ class=md-nav__link> <span class=md-ellipsis> key </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_sax/null/ class=md-nav__link> <span class=md-ellipsis> null </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_sax/number_float/ class=md-nav__link> <span class=md-ellipsis> number_float </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_sax/number_integer/ class=md-nav__link> <span class=md-ellipsis> number_integer </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_sax/number_unsigned/ class=md-nav__link> <span class=md-ellipsis> number_unsigned </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_sax/parse_error/ class=md-nav__link> <span class=md-ellipsis> parse_error </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_sax/start_array/ class=md-nav__link> <span class=md-ellipsis> start_array </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_sax/start_object/ class=md-nav__link> <span class=md-ellipsis> start_object </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_sax/string/ class=md-nav__link> <span class=md-ellipsis> string </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../api/operator_ltlt/ class=md-nav__link> <span class=md-ellipsis> operator<<(basic_json), operator<<(json_pointer) </span> </a> </li> <li class=md-nav__item> <a href=../../api/operator_gtgt/ class=md-nav__link> <span class=md-ellipsis> operator>>(basic_json) </span> </a> </li> <li class=md-nav__item> <a href=../../api/operator_literal_json/ class=md-nav__link> <span class=md-ellipsis> operator""_json </span> </a> </li> <li class=md-nav__item> <a href=../../api/operator_literal_json_pointer/ class=md-nav__link> <span class=md-ellipsis> operator""_json_pointer </span> </a> </li> <li class=md-nav__item> <a href=../../api/ordered_json/ class=md-nav__link> <span class=md-ellipsis> ordered_json </span> </a> </li> <li class=md-nav__item> <a href=../../api/ordered_map/ class=md-nav__link> <span class=md-ellipsis> ordered_map </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_13> <div class="md-nav__link md-nav__container"> <a href=../../api/macros/ class="md-nav__link "> <span class=md-ellipsis> macros </span> </a> <label class="md-nav__link " for=__nav_4_13 id=__nav_4_13_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_13_label aria-expanded=false> <label class=md-nav__title for=__nav_4_13> <span class="md-nav__icon md-icon"></span> macros </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../api/macros/json_assert/ class=md-nav__link> <span class=md-ellipsis> JSON_ASSERT </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_brace_init_copy_semantics/ class=md-nav__link> <span class=md-ellipsis> JSON_BRACE_INIT_COPY_SEMANTICS </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_throw_user/ class=md-nav__link> <span class=md-ellipsis> JSON_CATCH_USER, JSON_THROW_USER, JSON_TRY_USER </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_diagnostics/ class=md-nav__link> <span class=md-ellipsis> JSON_DIAGNOSTICS </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_diagnostic_positions/ class=md-nav__link> <span class=md-ellipsis> JSON_DIAGNOSTIC_POSITIONS </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_disable_enum_serialization/ class=md-nav__link> <span class=md-ellipsis> JSON_DISABLE_ENUM_SERIALIZATION </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_has_cpp_11/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_CPP_11, JSON_HAS_CPP_14, JSON_HAS_CPP_17, JSON_HAS_CPP_20 </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_has_filesystem/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_EXPERIMENTAL_FILESYSTEM, JSON_HAS_FILESYSTEM </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_has_ranges/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_RANGES </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_has_static_rtti/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_STATIC_RTTI </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_has_three_way_comparison/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_THREE_WAY_COMPARISON </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_noexception/ class=md-nav__link> <span class=md-ellipsis> JSON_NOEXCEPTION </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_no_io/ class=md-nav__link> <span class=md-ellipsis> JSON_NO_IO </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_skip_library_version_check/ class=md-nav__link> <span class=md-ellipsis> JSON_SKIP_LIBRARY_VERSION_CHECK </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_skip_unsupported_compiler_check/ class=md-nav__link> <span class=md-ellipsis> JSON_SKIP_UNSUPPORTED_COMPILER_CHECK </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_use_global_udls/ class=md-nav__link> <span class=md-ellipsis> JSON_USE_GLOBAL_UDLS </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_use_implicit_conversions/ class=md-nav__link> <span class=md-ellipsis> JSON_USE_IMPLICIT_CONVERSIONS </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_use_legacy_discarded_value_comparison/ class=md-nav__link> <span class=md-ellipsis> JSON_USE_LEGACY_DISCARDED_VALUE_COMPARISON </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/nlohmann_define_derived_type/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_ONLY_SERIALIZE, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/nlohmann_define_type_intrusive/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_TYPE_INTRUSIVE, NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_TYPE_INTRUSIVE_ONLY_SERIALIZE </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/nlohmann_define_type_non_intrusive/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/nlohmann_define_type_with_names/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_TYPE_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/nlohmann_json_namespace/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_NAMESPACE </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/nlohmann_json_namespace_begin/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_NAMESPACE_BEGIN, NLOHMANN_JSON_NAMESPACE_END </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/nlohmann_json_namespace_no_version/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_NAMESPACE_NO_VERSION </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/nlohmann_json_serialize_enum/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_SERIALIZE_ENUM </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/nlohmann_json_serialize_enum_strict/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_SERIALIZE_ENUM_STRICT </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/nlohmann_json_version_major/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_VERSION_MAJOR, NLOHMANN_JSON_VERSION_MINOR, NLOHMANN_JSON_VERSION_PATCH </span> </a> </li> </ul> </nav> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_5> <div class="md-nav__link md-nav__container"> <a href=../../community/ class="md-nav__link "> <span class=md-ellipsis> Community </span> </a> <label class="md-nav__link " for=__nav_5 id=__nav_5_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_5_label aria-expanded=false> <label class=md-nav__title for=__nav_5> <span class="md-nav__icon md-icon"></span> Community </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../community/code_of_conduct/ class=md-nav__link> <span class=md-ellipsis> Code of Conduct </span> </a> </li> <li class=md-nav__item> <a href=../../community/contribution_guidelines/ class=md-nav__link> <span class=md-ellipsis> Contribution Guidelines </span> </a> </li> <li class=md-nav__item> <a href=../../community/quality_assurance/ class=md-nav__link> <span class=md-ellipsis> Quality assurance </span> </a> </li> <li class=md-nav__item> <a href=../../community/governance/ class=md-nav__link> <span class=md-ellipsis> Governance </span> </a> </li> <li class=md-nav__item> <a href=../../community/security_policy/ class=md-nav__link> <span class=md-ellipsis> Security Policy </span> </a> </li> </ul> </nav> </li> </ul> </nav> </div> </div> </div> <div class="md-sidebar md-sidebar--secondary" data-md-component=sidebar data-md-type=toc> <div class=md-sidebar__scrollwrap> <div class=md-sidebar__inner> <nav class="md-nav md-nav--secondary" aria-label="Table of contents"> <label class=md-nav__title for=__toc> <span class="md-nav__icon md-icon"></span> Table of contents </label> <ul class=md-nav__list data-md-component=toc data-md-scrollfix> <li class=md-nav__item> <a href=#priority-sponsor class=md-nav__link> <span class=md-ellipsis> Priority Sponsor </span> </a> </li> <li class=md-nav__item> <a href=#named-sponsors class=md-nav__link> <span class=md-ellipsis> Named Sponsors </span> </a> </li> </ul> </nav> </div> </div> </div> <div class=md-content data-md-component=content> <article class="md-content__inner md-typeset"> <a href="https://github.com/nlohmann/json/edit/develop/docs/mkdocs/docs/home/sponsors.md" title="Edit this page" class="md-content__button md-icon" rel="edit"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M10 20H6V4h7v5h5v3.1l2-2V8l-6-6H6c-1.1 0-2 .9-2 2v16c0 1.1.9 2 2 2h4zm10.2-7c.1 0 .3.1.4.2l1.3 1.3c.2.2.2.6 0 .8l-1 1-2.1-2.1 1-1c.1-.1.2-.2.4-.2m0 3.9L14.1 23H12v-2.1l6.1-6.1z"/></svg> </a> <a href="https://github.com/nlohmann/json/raw/develop/docs/mkdocs/docs/home/sponsors.md" title="View source of this page" class="md-content__button md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M17 18c.56 0 1 .44 1 1s-.44 1-1 1-1-.44-1-1 .44-1 1-1m0-3c-2.73 0-5.06 1.66-6 4 .94 2.34 3.27 4 6 4s5.06-1.66 6-4c-.94-2.34-3.27-4-6-4m0 6.5a2.5 2.5 0 0 1-2.5-2.5 2.5 2.5 0 0 1 2.5-2.5 2.5 2.5 0 0 1 2.5 2.5 2.5 2.5 0 0 1-2.5 2.5M9.27 20H6V4h7v5h5v4.07c.7.08 1.36.25 2 .49V8l-6-6H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h4.5a8.2 8.2 0 0 1-1.23-2"/></svg> </a> <h1 id=sponsors>Sponsors<a class=headerlink href=#sponsors title="Permanent link">&para;</a></h1> <p>You can sponsor this library at <a href="https://github.com/sponsors/nlohmann">GitHub Sponsors</a>.</p> <h2 id=priority-sponsor>Priority Sponsor<a class=headerlink href=#priority-sponsor title="Permanent link">&para;</a></h2> <ul> <li><a href="https://github.com/codeclown">Martti Laine</a></li> <li><a href="https://github.com/phrrngtn">Paul Harrington</a></li> </ul> <h2 id=named-sponsors>Named Sponsors<a class=headerlink href=#named-sponsors title="Permanent link">&para;</a></h2> <ul> <li><a href="https://github.com/reFX-Mike">Michael Hartmann</a></li> <li><a href="https://github.com/sthagen">Stefan Hagen</a></li> <li><a href="https://github.com/homer6">Steve Sperandeo</a></li> <li><a href="https://github.com/eljefedelrodeodeljefe">Robert Jefe Lindstädt</a></li> <li><a href="https://github.com/ciroque">Steve Wagner</a></li> <li><a href="https://github.com/LionNatsu">Lion Yang</a></li> </ul> <p>Thanks everyone!</p> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 23, 2026 11:16:18 UTC">June 23, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
+<!doctype html><html lang=en class=no-js> <head><meta charset=utf-8><meta name=viewport content="width=device-width,initial-scale=1"><meta name=author content="Niels Lohmann"><link href="https://json.nlohmann.me/home/sponsors/" rel="canonical"><link href=../customers/ rel=prev><link href=../../features/arbitrary_types/ rel=next><link rel=icon href=../../assets/images/favicon.png><meta name=generator content="mkdocs-1.6.1, mkdocs-material-9.7.6"><title>Sponsors - JSON for Modern C++</title><link rel=stylesheet href=../../assets/stylesheets/main.484c7ddc.min.css><link rel=stylesheet href=../../assets/stylesheets/palette.ab4e12ef.min.css><link rel="stylesheet" href="../../assets/external/fonts.googleapis.com/css.61a430c9.css"><style>:root{--md-text-font:"Roboto";--md-code-font:"JetBrains Mono"}</style><link rel=stylesheet href=../../css/custom.css><script>__md_scope=new URL("../..",location),__md_hash=e=>[...e].reduce(((e,_)=>(e<<5)-e+_.charCodeAt(0)),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script></head> <body dir=ltr data-md-color-scheme=default data-md-color-primary=indigo data-md-color-accent=indigo> <input class=md-toggle data-md-toggle=drawer type=checkbox id=__drawer autocomplete=off> <input class=md-toggle data-md-toggle=search type=checkbox id=__search autocomplete=off> <label class=md-overlay for=__drawer></label> <div data-md-component=skip> <a href=#sponsors class=md-skip> Skip to content </a> </div> <div data-md-component=announce> </div> <header class=md-header data-md-component=header> <nav class="md-header__inner md-grid" aria-label=Header> <a href=../.. title="JSON for Modern C++" class="md-header__button md-logo" aria-label="JSON for Modern C++" data-md-component=logo> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54"/></svg> </a> <label class="md-header__button md-icon" for=__drawer> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M3 6h18v2H3zm0 5h18v2H3zm0 5h18v2H3z"/></svg> </label> <div class=md-header__title data-md-component=header-title> <div class=md-header__ellipsis> <div class=md-header__topic> <span class=md-ellipsis> JSON for Modern C++ </span> </div> <div class=md-header__topic data-md-component=header-topic> <span class=md-ellipsis> Sponsors </span> </div> </div> </div> <form class=md-header__option data-md-component=palette> <input class=md-option data-md-color-media="(prefers-color-scheme: light)" data-md-color-scheme=default data-md-color-primary=indigo data-md-color-accent=indigo aria-label="Switch to dark mode" type=radio name=__palette id=__palette_0> <label class="md-header__button md-icon" title="Switch to dark mode" for=__palette_1 hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a4 4 0 0 0-4 4 4 4 0 0 0 4 4 4 4 0 0 0 4-4 4 4 0 0 0-4-4m0 10a6 6 0 0 1-6-6 6 6 0 0 1 6-6 6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12z"/></svg> </label> <input class=md-option data-md-color-media="(prefers-color-scheme: dark)" data-md-color-scheme=slate data-md-color-primary=indigo data-md-color-accent=indigo aria-label="Switch to light mode" type=radio name=__palette id=__palette_1> <label class="md-header__button md-icon" title="Switch to light mode" for=__palette_0 hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 18c-.89 0-1.74-.2-2.5-.55C11.56 16.5 13 14.42 13 12s-1.44-4.5-3.5-5.45C10.26 6.2 11.11 6 12 6a6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12z"/></svg> </label> </form> <script>var palette=__md_get("__palette");if(palette&&palette.color){if("(prefers-color-scheme)"===palette.color.media){var media=matchMedia("(prefers-color-scheme: light)"),input=document.querySelector(media.matches?"[data-md-color-media='(prefers-color-scheme: light)']":"[data-md-color-media='(prefers-color-scheme: dark)']");palette.color.media=input.getAttribute("data-md-color-media"),palette.color.scheme=input.getAttribute("data-md-color-scheme"),palette.color.primary=input.getAttribute("data-md-color-primary"),palette.color.accent=input.getAttribute("data-md-color-accent")}for(var[key,value]of Object.entries(palette.color))document.body.setAttribute("data-md-color-"+key,value)}</script> <label class="md-header__button md-icon" for=__search> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg> </label> <div class=md-search data-md-component=search role=dialog> <label class=md-search__overlay for=__search></label> <div class=md-search__inner role=search> <form class=md-search__form name=search> <input type=text class=md-search__input name=query aria-label=Search placeholder=Search autocapitalize=off autocorrect=off autocomplete=off spellcheck=false data-md-component=search-query required> <label class="md-search__icon md-icon" for=__search> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11z"/></svg> </label> <nav class=md-search__options aria-label=Search> <button type=reset class="md-search__icon md-icon" title=Clear aria-label=Clear tabindex=-1> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z"/></svg> </button> </nav> </form> <div class=md-search__output> <div class=md-search__scrollwrap tabindex=0 data-md-scrollfix> <div class=md-search-result data-md-component=search-result> <div class=md-search-result__meta> Initializing search </div> <ol class=md-search-result__list role=presentation></ol> </div> </div> </div> </div> </div> <div class=md-header__source> <a href="https://github.com/nlohmann/json" title="Go to repository" class="md-source" data-md-component="source"> <div class="md-source__icon md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </div> <div class=md-source__repository> nlohmann/json </div> </a> </div> </nav> </header> <div class=md-container data-md-component=container> <nav class=md-tabs aria-label=Tabs data-md-component=tabs> <div class=md-grid> <ul class=md-tabs__list> <li class="md-tabs__item md-tabs__item--active"> <a href=../.. class=md-tabs__link> Home </a> </li> <li class=md-tabs__item> <a href=../../features/arbitrary_types/ class=md-tabs__link> Features </a> </li> <li class=md-tabs__item> <a href=../../integration/ class=md-tabs__link> Integration </a> </li> <li class=md-tabs__item> <a href=../../api/basic_json/ class=md-tabs__link> API Documentation </a> </li> <li class=md-tabs__item> <a href=../../community/ class=md-tabs__link> Community </a> </li> </ul> </div> </nav> <main class=md-main data-md-component=main> <div class="md-main__inner md-grid"> <div class="md-sidebar md-sidebar--primary" data-md-component=sidebar data-md-type=navigation> <div class=md-sidebar__scrollwrap> <div class=md-sidebar__inner> <nav class="md-nav md-nav--primary md-nav--lifted" aria-label=Navigation data-md-level=0> <label class=md-nav__title for=__drawer> <a href=../.. title="JSON for Modern C++" class="md-nav__button md-logo" aria-label="JSON for Modern C++" data-md-component=logo> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54"/></svg> </a> JSON for Modern C++ </label> <div class=md-nav__source> <a href="https://github.com/nlohmann/json" title="Go to repository" class="md-source" data-md-component="source"> <div class="md-source__icon md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </div> <div class=md-source__repository> nlohmann/json </div> </a> </div> <ul class=md-nav__list data-md-scrollfix> <li class="md-nav__item md-nav__item--active md-nav__item--section md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_1 checked> <div class="md-nav__link md-nav__container"> <a href=../.. class="md-nav__link "> <span class=md-ellipsis> Home </span> </a> <label class="md-nav__link " for=__nav_1 id=__nav_1_label tabindex> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_1_label aria-expanded=true> <label class=md-nav__title for=__nav_1> <span class="md-nav__icon md-icon"></span> Home </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../license/ class=md-nav__link> <span class=md-ellipsis> License </span> </a> </li> <li class=md-nav__item> <a href=../faq/ class=md-nav__link> <span class=md-ellipsis> FAQ </span> </a> </li> <li class=md-nav__item> <a href=../exceptions/ class=md-nav__link> <span class=md-ellipsis> Exceptions </span> </a> </li> <li class=md-nav__item> <a href=../releases/ class=md-nav__link> <span class=md-ellipsis> Releases </span> </a> </li> <li class=md-nav__item> <a href=../design_goals/ class=md-nav__link> <span class=md-ellipsis> Design goals </span> </a> </li> <li class=md-nav__item> <a href=../architecture/ class=md-nav__link> <span class=md-ellipsis> Architecture </span> </a> </li> <li class=md-nav__item> <a href=../customers/ class=md-nav__link> <span class=md-ellipsis> Customers </span> </a> </li> <li class="md-nav__item md-nav__item--active"> <input class="md-nav__toggle md-toggle" type=checkbox id=__toc> <label class="md-nav__link md-nav__link--active" for=__toc> <span class=md-ellipsis> Sponsors </span> <span class="md-nav__icon md-icon"></span> </label> <a href=./ class="md-nav__link md-nav__link--active"> <span class=md-ellipsis> Sponsors </span> </a> <nav class="md-nav md-nav--secondary" aria-label="Table of contents"> <label class=md-nav__title for=__toc> <span class="md-nav__icon md-icon"></span> Table of contents </label> <ul class=md-nav__list data-md-component=toc data-md-scrollfix> <li class=md-nav__item> <a href=#priority-sponsor class=md-nav__link> <span class=md-ellipsis> Priority Sponsor </span> </a> </li> <li class=md-nav__item> <a href=#named-sponsors class=md-nav__link> <span class=md-ellipsis> Named Sponsors </span> </a> </li> </ul> </nav> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2> <label class=md-nav__link for=__nav_2 id=__nav_2_label tabindex=0> <span class=md-ellipsis> Features </span> <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_2_label aria-expanded=false> <label class=md-nav__title for=__nav_2> <span class="md-nav__icon md-icon"></span> Features </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../features/arbitrary_types/ class=md-nav__link> <span class=md-ellipsis> Arbitrary Type Conversions </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_2> <div class="md-nav__link md-nav__container"> <a href=../../features/binary_formats/ class="md-nav__link "> <span class=md-ellipsis> Binary Formats </span> </a> <label class="md-nav__link " for=__nav_2_2 id=__nav_2_2_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_2_label aria-expanded=false> <label class=md-nav__title for=__nav_2_2> <span class="md-nav__icon md-icon"></span> Binary Formats </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../features/binary_formats/bjdata/ class=md-nav__link> <span class=md-ellipsis> BJData </span> </a> </li> <li class=md-nav__item> <a href=../../features/binary_formats/bson/ class=md-nav__link> <span class=md-ellipsis> BSON </span> </a> </li> <li class=md-nav__item> <a href=../../features/binary_formats/cbor/ class=md-nav__link> <span class=md-ellipsis> CBOR </span> </a> </li> <li class=md-nav__item> <a href=../../features/binary_formats/messagepack/ class=md-nav__link> <span class=md-ellipsis> MessagePack </span> </a> </li> <li class=md-nav__item> <a href=../../features/binary_formats/ubjson/ class=md-nav__link> <span class=md-ellipsis> UBJSON </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../features/binary_values/ class=md-nav__link> <span class=md-ellipsis> Binary Values </span> </a> </li> <li class=md-nav__item> <a href=../../features/comments/ class=md-nav__link> <span class=md-ellipsis> Comments </span> </a> </li> <li class=md-nav__item> <a href=../../features/trailing_commas/ class=md-nav__link> <span class=md-ellipsis> Trailing Commas </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_6> <div class="md-nav__link md-nav__container"> <a href=../../features/element_access/ class="md-nav__link "> <span class=md-ellipsis> Element Access </span> </a> <label class="md-nav__link " for=__nav_2_6 id=__nav_2_6_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_6_label aria-expanded=false> <label class=md-nav__title for=__nav_2_6> <span class="md-nav__icon md-icon"></span> Element Access </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../features/element_access/unchecked_access/ class=md-nav__link> <span class=md-ellipsis> Unchecked access: operator[] </span> </a> </li> <li class=md-nav__item> <a href=../../features/element_access/checked_access/ class=md-nav__link> <span class=md-ellipsis> Checked access: at </span> </a> </li> <li class=md-nav__item> <a href=../../features/element_access/default_value/ class=md-nav__link> <span class=md-ellipsis> Access with default value: value </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../features/iterators/ class=md-nav__link> <span class=md-ellipsis> Iterators </span> </a> </li> <li class=md-nav__item> <a href=../../features/json_pointer/ class=md-nav__link> <span class=md-ellipsis> JSON Pointer </span> </a> </li> <li class=md-nav__item> <a href=../../features/json_patch/ class=md-nav__link> <span class=md-ellipsis> JSON Patch and Diff </span> </a> </li> <li class=md-nav__item> <a href=../../features/merge_patch/ class=md-nav__link> <span class=md-ellipsis> JSON Merge Patch </span> </a> </li> <li class=md-nav__item> <a href=../../features/modules/ class=md-nav__link> <span class=md-ellipsis> Modules </span> </a> </li> <li class=md-nav__item> <a href=../../features/namespace/ class=md-nav__link> <span class=md-ellipsis> nlohmann Namespace </span> </a> </li> <li class=md-nav__item> <a href=../../features/object_order/ class=md-nav__link> <span class=md-ellipsis> Object Order </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_14> <div class="md-nav__link md-nav__container"> <a href=../../features/parsing/ class="md-nav__link "> <span class=md-ellipsis> Parsing </span> </a> <label class="md-nav__link " for=__nav_2_14 id=__nav_2_14_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_14_label aria-expanded=false> <label class=md-nav__title for=__nav_2_14> <span class="md-nav__icon md-icon"></span> Parsing </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../features/parsing/json_lines/ class=md-nav__link> <span class=md-ellipsis> JSON Lines </span> </a> </li> <li class=md-nav__item> <a href=../../features/parsing/parse_exceptions/ class=md-nav__link> <span class=md-ellipsis> Parsing and Exceptions </span> </a> </li> <li class=md-nav__item> <a href=../../features/parsing/parser_callbacks/ class=md-nav__link> <span class=md-ellipsis> Parser Callbacks </span> </a> </li> <li class=md-nav__item> <a href=../../features/parsing/sax_interface/ class=md-nav__link> <span class=md-ellipsis> SAX Interface </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../features/assertions/ class=md-nav__link> <span class=md-ellipsis> Runtime Assertions </span> </a> </li> <li class=md-nav__item> <a href=../../features/enum_conversion/ class=md-nav__link> <span class=md-ellipsis> Specializing enum conversion </span> </a> </li> <li class=md-nav__item> <a href=../../features/macros/ class=md-nav__link> <span class=md-ellipsis> Supported Macros </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_18> <div class="md-nav__link md-nav__container"> <a href=../../features/types/ class="md-nav__link "> <span class=md-ellipsis> Types </span> </a> <label class="md-nav__link " for=__nav_2_18 id=__nav_2_18_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_18_label aria-expanded=false> <label class=md-nav__title for=__nav_2_18> <span class="md-nav__icon md-icon"></span> Types </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../features/types/number_handling/ class=md-nav__link> <span class=md-ellipsis> Number Handling </span> </a> </li> </ul> </nav> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_3> <div class="md-nav__link md-nav__container"> <a href=../../integration/ class="md-nav__link "> <span class=md-ellipsis> Integration </span> </a> <label class="md-nav__link " for=__nav_3 id=__nav_3_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_3_label aria-expanded=false> <label class=md-nav__title for=__nav_3> <span class="md-nav__icon md-icon"></span> Integration </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../integration/migration_guide/ class=md-nav__link> <span class=md-ellipsis> Migration Guide </span> </a> </li> <li class=md-nav__item> <a href=../../integration/cmake/ class=md-nav__link> <span class=md-ellipsis> CMake </span> </a> </li> <li class=md-nav__item> <a href=../../integration/package_managers/ class=md-nav__link> <span class=md-ellipsis> Package Managers </span> </a> </li> <li class=md-nav__item> <a href=../../integration/pkg-config/ class=md-nav__link> <span class=md-ellipsis> Pkg-config </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4> <label class=md-nav__link for=__nav_4 id=__nav_4_label tabindex=0> <span class=md-ellipsis> API Documentation </span> <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_4_label aria-expanded=false> <label class=md-nav__title for=__nav_4> <span class="md-nav__icon md-icon"></span> API Documentation </label> <ul class=md-nav__list data-md-scrollfix> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_1> <div class="md-nav__link md-nav__container"> <a href=../../api/basic_json/ class="md-nav__link "> <span class=md-ellipsis> basic_json </span> </a> <label class="md-nav__link " for=__nav_4_1 id=__nav_4_1_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_1_label aria-expanded=false> <label class=md-nav__title for=__nav_4_1> <span class="md-nav__icon md-icon"></span> basic_json </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../api/basic_json/basic_json/ class=md-nav__link> <span class=md-ellipsis> (Constructor) </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/~basic_json/ class=md-nav__link> <span class=md-ellipsis> (Destructor) </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/accept/ class=md-nav__link> <span class=md-ellipsis> accept </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/array/ class=md-nav__link> <span class=md-ellipsis> array </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/array_t/ class=md-nav__link> <span class=md-ellipsis> array_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/at/ class=md-nav__link> <span class=md-ellipsis> at </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/back/ class=md-nav__link> <span class=md-ellipsis> back </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/begin/ class=md-nav__link> <span class=md-ellipsis> begin </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/binary/ class=md-nav__link> <span class=md-ellipsis> binary </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/binary_t/ class=md-nav__link> <span class=md-ellipsis> binary_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/boolean_t/ class=md-nav__link> <span class=md-ellipsis> boolean_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/cbegin/ class=md-nav__link> <span class=md-ellipsis> cbegin </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/cbor_tag_handler_t/ class=md-nav__link> <span class=md-ellipsis> cbor_tag_handler_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/cend/ class=md-nav__link> <span class=md-ellipsis> cend </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/clear/ class=md-nav__link> <span class=md-ellipsis> clear </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/contains/ class=md-nav__link> <span class=md-ellipsis> contains </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/count/ class=md-nav__link> <span class=md-ellipsis> count </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/crbegin/ class=md-nav__link> <span class=md-ellipsis> crbegin </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/crend/ class=md-nav__link> <span class=md-ellipsis> crend </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/default_object_comparator_t/ class=md-nav__link> <span class=md-ellipsis> default_object_comparator_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/diff/ class=md-nav__link> <span class=md-ellipsis> diff </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/dump/ class=md-nav__link> <span class=md-ellipsis> dump </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/emplace/ class=md-nav__link> <span class=md-ellipsis> emplace </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/emplace_back/ class=md-nav__link> <span class=md-ellipsis> emplace_back </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/empty/ class=md-nav__link> <span class=md-ellipsis> empty </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/end/ class=md-nav__link> <span class=md-ellipsis> end </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/end_pos/ class=md-nav__link> <span class=md-ellipsis> end_pos </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/erase/ class=md-nav__link> <span class=md-ellipsis> erase </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/error_handler_t/ class=md-nav__link> <span class=md-ellipsis> error_handler_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/exception/ class=md-nav__link> <span class=md-ellipsis> exception </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/find/ class=md-nav__link> <span class=md-ellipsis> find </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/flatten/ class=md-nav__link> <span class=md-ellipsis> flatten </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/from_bjdata/ class=md-nav__link> <span class=md-ellipsis> from_bjdata </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/from_bson/ class=md-nav__link> <span class=md-ellipsis> from_bson </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/from_cbor/ class=md-nav__link> <span class=md-ellipsis> from_cbor </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/from_msgpack/ class=md-nav__link> <span class=md-ellipsis> from_msgpack </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/from_ubjson/ class=md-nav__link> <span class=md-ellipsis> from_ubjson </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/front/ class=md-nav__link> <span class=md-ellipsis> front </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/get/ class=md-nav__link> <span class=md-ellipsis> get </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/get_allocator/ class=md-nav__link> <span class=md-ellipsis> get_allocator </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/get_binary/ class=md-nav__link> <span class=md-ellipsis> get_binary </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/get_ptr/ class=md-nav__link> <span class=md-ellipsis> get_ptr </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/get_ref/ class=md-nav__link> <span class=md-ellipsis> get_ref </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/get_to/ class=md-nav__link> <span class=md-ellipsis> get_to </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/std_hash/ class=md-nav__link> <span class=md-ellipsis> std::hash&lt;basic_json&gt; </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/input_format_t/ class=md-nav__link> <span class=md-ellipsis> input_format_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/insert/ class=md-nav__link> <span class=md-ellipsis> insert </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/invalid_iterator/ class=md-nav__link> <span class=md-ellipsis> invalid_iterator </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_array/ class=md-nav__link> <span class=md-ellipsis> is_array </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_binary/ class=md-nav__link> <span class=md-ellipsis> is_binary </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_boolean/ class=md-nav__link> <span class=md-ellipsis> is_boolean </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_discarded/ class=md-nav__link> <span class=md-ellipsis> is_discarded </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_null/ class=md-nav__link> <span class=md-ellipsis> is_null </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_number/ class=md-nav__link> <span class=md-ellipsis> is_number </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_number_float/ class=md-nav__link> <span class=md-ellipsis> is_number_float </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_number_integer/ class=md-nav__link> <span class=md-ellipsis> is_number_integer </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_number_unsigned/ class=md-nav__link> <span class=md-ellipsis> is_number_unsigned </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_object/ class=md-nav__link> <span class=md-ellipsis> is_object </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_primitive/ class=md-nav__link> <span class=md-ellipsis> is_primitive </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_string/ class=md-nav__link> <span class=md-ellipsis> is_string </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_structured/ class=md-nav__link> <span class=md-ellipsis> is_structured </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/items/ class=md-nav__link> <span class=md-ellipsis> items </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/json_base_class_t/ class=md-nav__link> <span class=md-ellipsis> json_base_class_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/json_serializer/ class=md-nav__link> <span class=md-ellipsis> json_serializer </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/max_size/ class=md-nav__link> <span class=md-ellipsis> max_size </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/meta/ class=md-nav__link> <span class=md-ellipsis> meta </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/merge_patch/ class=md-nav__link> <span class=md-ellipsis> merge_patch </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/number_float_t/ class=md-nav__link> <span class=md-ellipsis> number_float_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/number_integer_t/ class=md-nav__link> <span class=md-ellipsis> number_integer_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/number_unsigned_t/ class=md-nav__link> <span class=md-ellipsis> number_unsigned_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/object/ class=md-nav__link> <span class=md-ellipsis> object </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/object_comparator_t/ class=md-nav__link> <span class=md-ellipsis> object_comparator_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/object_t/ class=md-nav__link> <span class=md-ellipsis> object_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/operator_ValueType/ class=md-nav__link> <span class=md-ellipsis> operator ValueType </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/operator_value_t/ class=md-nav__link> <span class=md-ellipsis> operator value_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/operator%5B%5D/ class=md-nav__link> <span class=md-ellipsis> operator[] </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/operator%3D/ class=md-nav__link> <span class=md-ellipsis> operator= </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/operator%2B%3D/ class=md-nav__link> <span class=md-ellipsis> operator+= </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/operator_eq/ class=md-nav__link> <span class=md-ellipsis> operator== </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/operator_ne/ class=md-nav__link> <span class=md-ellipsis> operator!= </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/operator_lt/ class=md-nav__link> <span class=md-ellipsis> operator< </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/operator_gt/ class=md-nav__link> <span class=md-ellipsis> operator> </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/operator_le/ class=md-nav__link> <span class=md-ellipsis> operator<= </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/operator_ge/ class=md-nav__link> <span class=md-ellipsis> operator>= </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/operator_spaceship/ class=md-nav__link> <span class=md-ellipsis> operator<=> </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/out_of_range/ class=md-nav__link> <span class=md-ellipsis> out_of_range </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/other_error/ class=md-nav__link> <span class=md-ellipsis> other_error </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/parse/ class=md-nav__link> <span class=md-ellipsis> parse </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/parse_error/ class=md-nav__link> <span class=md-ellipsis> parse_error </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/parse_event_t/ class=md-nav__link> <span class=md-ellipsis> parse_event_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/parser_callback_t/ class=md-nav__link> <span class=md-ellipsis> parser_callback_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/patch/ class=md-nav__link> <span class=md-ellipsis> patch </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/patch_inplace/ class=md-nav__link> <span class=md-ellipsis> patch_inplace </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/push_back/ class=md-nav__link> <span class=md-ellipsis> push_back </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/rbegin/ class=md-nav__link> <span class=md-ellipsis> rbegin </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/rend/ class=md-nav__link> <span class=md-ellipsis> rend </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/sax_parse/ class=md-nav__link> <span class=md-ellipsis> sax_parse </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/size/ class=md-nav__link> <span class=md-ellipsis> size </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/start_pos/ class=md-nav__link> <span class=md-ellipsis> start_pos </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/string_t/ class=md-nav__link> <span class=md-ellipsis> string_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/swap/ class=md-nav__link> <span class=md-ellipsis> swap </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/std_swap/ class=md-nav__link> <span class=md-ellipsis> std::swap&lt;basic_json&gt; </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/to_bjdata/ class=md-nav__link> <span class=md-ellipsis> to_bjdata </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/to_bson/ class=md-nav__link> <span class=md-ellipsis> to_bson </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/to_cbor/ class=md-nav__link> <span class=md-ellipsis> to_cbor </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/to_msgpack/ class=md-nav__link> <span class=md-ellipsis> to_msgpack </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/to_string/ class=md-nav__link> <span class=md-ellipsis> to_string </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/to_ubjson/ class=md-nav__link> <span class=md-ellipsis> to_ubjson </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/type/ class=md-nav__link> <span class=md-ellipsis> type </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/type_error/ class=md-nav__link> <span class=md-ellipsis> type_error </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/type_name/ class=md-nav__link> <span class=md-ellipsis> type_name </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/unflatten/ class=md-nav__link> <span class=md-ellipsis> unflatten </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/update/ class=md-nav__link> <span class=md-ellipsis> update </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/value/ class=md-nav__link> <span class=md-ellipsis> value </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/value_t/ class=md-nav__link> <span class=md-ellipsis> value_t </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_2> <div class="md-nav__link md-nav__container"> <a href=../../api/byte_container_with_subtype/ class="md-nav__link "> <span class=md-ellipsis> byte_container_with_subtype </span> </a> <label class="md-nav__link " for=__nav_4_2 id=__nav_4_2_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_2_label aria-expanded=false> <label class=md-nav__title for=__nav_4_2> <span class="md-nav__icon md-icon"></span> byte_container_with_subtype </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../api/byte_container_with_subtype/byte_container_with_subtype/ class=md-nav__link> <span class=md-ellipsis> (constructor) </span> </a> </li> <li class=md-nav__item> <a href=../../api/byte_container_with_subtype/clear_subtype/ class=md-nav__link> <span class=md-ellipsis> clear_subtype </span> </a> </li> <li class=md-nav__item> <a href=../../api/byte_container_with_subtype/has_subtype/ class=md-nav__link> <span class=md-ellipsis> has_subtype </span> </a> </li> <li class=md-nav__item> <a href=../../api/byte_container_with_subtype/set_subtype/ class=md-nav__link> <span class=md-ellipsis> set_subtype </span> </a> </li> <li class=md-nav__item> <a href=../../api/byte_container_with_subtype/subtype/ class=md-nav__link> <span class=md-ellipsis> subtype </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_3> <div class="md-nav__link md-nav__container"> <a href=../../api/adl_serializer/ class="md-nav__link "> <span class=md-ellipsis> adl_serializer </span> </a> <label class="md-nav__link " for=__nav_4_3 id=__nav_4_3_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_3_label aria-expanded=false> <label class=md-nav__title for=__nav_4_3> <span class="md-nav__icon md-icon"></span> adl_serializer </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../api/adl_serializer/from_json/ class=md-nav__link> <span class=md-ellipsis> from_json </span> </a> </li> <li class=md-nav__item> <a href=../../api/adl_serializer/to_json/ class=md-nav__link> <span class=md-ellipsis> to_json </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../api/json/ class=md-nav__link> <span class=md-ellipsis> json </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_5> <div class="md-nav__link md-nav__container"> <a href=../../api/json_pointer/ class="md-nav__link "> <span class=md-ellipsis> json_pointer </span> </a> <label class="md-nav__link " for=__nav_4_5 id=__nav_4_5_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_5_label aria-expanded=false> <label class=md-nav__title for=__nav_4_5> <span class="md-nav__icon md-icon"></span> json_pointer </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../api/json_pointer/json_pointer/ class=md-nav__link> <span class=md-ellipsis> (Constructor) </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/back/ class=md-nav__link> <span class=md-ellipsis> back </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/empty/ class=md-nav__link> <span class=md-ellipsis> empty </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/front/ class=md-nav__link> <span class=md-ellipsis> front </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/operator_string_t/ class=md-nav__link> <span class=md-ellipsis> operator string_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/operator_eq/ class=md-nav__link> <span class=md-ellipsis> operator== </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/operator_ne/ class=md-nav__link> <span class=md-ellipsis> operator!= </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/operator_slash/ class=md-nav__link> <span class=md-ellipsis> operator/ </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/operator_slasheq/ class=md-nav__link> <span class=md-ellipsis> operator/= </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/parent_pointer/ class=md-nav__link> <span class=md-ellipsis> parent_pointer </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/pop_back/ class=md-nav__link> <span class=md-ellipsis> pop_back </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/pop_front/ class=md-nav__link> <span class=md-ellipsis> pop_front </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/push_back/ class=md-nav__link> <span class=md-ellipsis> push_back </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/push_front/ class=md-nav__link> <span class=md-ellipsis> push_front </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/string_t/ class=md-nav__link> <span class=md-ellipsis> string_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/to_string/ class=md-nav__link> <span class=md-ellipsis> to_string </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_6> <div class="md-nav__link md-nav__container"> <a href=../../api/json_sax/ class="md-nav__link "> <span class=md-ellipsis> json_sax </span> </a> <label class="md-nav__link " for=__nav_4_6 id=__nav_4_6_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_6_label aria-expanded=false> <label class=md-nav__title for=__nav_4_6> <span class="md-nav__icon md-icon"></span> json_sax </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../api/json_sax/binary/ class=md-nav__link> <span class=md-ellipsis> binary </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_sax/boolean/ class=md-nav__link> <span class=md-ellipsis> boolean </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_sax/end_array/ class=md-nav__link> <span class=md-ellipsis> end_array </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_sax/end_object/ class=md-nav__link> <span class=md-ellipsis> end_object </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_sax/key/ class=md-nav__link> <span class=md-ellipsis> key </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_sax/null/ class=md-nav__link> <span class=md-ellipsis> null </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_sax/number_float/ class=md-nav__link> <span class=md-ellipsis> number_float </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_sax/number_integer/ class=md-nav__link> <span class=md-ellipsis> number_integer </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_sax/number_unsigned/ class=md-nav__link> <span class=md-ellipsis> number_unsigned </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_sax/parse_error/ class=md-nav__link> <span class=md-ellipsis> parse_error </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_sax/start_array/ class=md-nav__link> <span class=md-ellipsis> start_array </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_sax/start_object/ class=md-nav__link> <span class=md-ellipsis> start_object </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_sax/string/ class=md-nav__link> <span class=md-ellipsis> string </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../api/operator_ltlt/ class=md-nav__link> <span class=md-ellipsis> operator<<(basic_json), operator<<(json_pointer) </span> </a> </li> <li class=md-nav__item> <a href=../../api/operator_gtgt/ class=md-nav__link> <span class=md-ellipsis> operator>>(basic_json) </span> </a> </li> <li class=md-nav__item> <a href=../../api/operator_literal_json/ class=md-nav__link> <span class=md-ellipsis> operator""_json </span> </a> </li> <li class=md-nav__item> <a href=../../api/operator_literal_json_pointer/ class=md-nav__link> <span class=md-ellipsis> operator""_json_pointer </span> </a> </li> <li class=md-nav__item> <a href=../../api/ordered_json/ class=md-nav__link> <span class=md-ellipsis> ordered_json </span> </a> </li> <li class=md-nav__item> <a href=../../api/ordered_map/ class=md-nav__link> <span class=md-ellipsis> ordered_map </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_13> <div class="md-nav__link md-nav__container"> <a href=../../api/macros/ class="md-nav__link "> <span class=md-ellipsis> macros </span> </a> <label class="md-nav__link " for=__nav_4_13 id=__nav_4_13_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_13_label aria-expanded=false> <label class=md-nav__title for=__nav_4_13> <span class="md-nav__icon md-icon"></span> macros </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../api/macros/json_assert/ class=md-nav__link> <span class=md-ellipsis> JSON_ASSERT </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_brace_init_copy_semantics/ class=md-nav__link> <span class=md-ellipsis> JSON_BRACE_INIT_COPY_SEMANTICS </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_throw_user/ class=md-nav__link> <span class=md-ellipsis> JSON_CATCH_USER, JSON_THROW_USER, JSON_TRY_USER </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_diagnostics/ class=md-nav__link> <span class=md-ellipsis> JSON_DIAGNOSTICS </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_diagnostic_positions/ class=md-nav__link> <span class=md-ellipsis> JSON_DIAGNOSTIC_POSITIONS </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_disable_enum_serialization/ class=md-nav__link> <span class=md-ellipsis> JSON_DISABLE_ENUM_SERIALIZATION </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_has_cpp_11/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_CPP_11, JSON_HAS_CPP_14, JSON_HAS_CPP_17, JSON_HAS_CPP_20 </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_has_filesystem/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_EXPERIMENTAL_FILESYSTEM, JSON_HAS_FILESYSTEM </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_has_ranges/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_RANGES </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_has_static_rtti/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_STATIC_RTTI </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_has_three_way_comparison/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_THREE_WAY_COMPARISON </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_noexception/ class=md-nav__link> <span class=md-ellipsis> JSON_NOEXCEPTION </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_no_io/ class=md-nav__link> <span class=md-ellipsis> JSON_NO_IO </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_skip_library_version_check/ class=md-nav__link> <span class=md-ellipsis> JSON_SKIP_LIBRARY_VERSION_CHECK </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_skip_unsupported_compiler_check/ class=md-nav__link> <span class=md-ellipsis> JSON_SKIP_UNSUPPORTED_COMPILER_CHECK </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_use_global_udls/ class=md-nav__link> <span class=md-ellipsis> JSON_USE_GLOBAL_UDLS </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_use_implicit_conversions/ class=md-nav__link> <span class=md-ellipsis> JSON_USE_IMPLICIT_CONVERSIONS </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_use_legacy_discarded_value_comparison/ class=md-nav__link> <span class=md-ellipsis> JSON_USE_LEGACY_DISCARDED_VALUE_COMPARISON </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/nlohmann_define_derived_type/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_ONLY_SERIALIZE, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/nlohmann_define_type_intrusive/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_TYPE_INTRUSIVE, NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_TYPE_INTRUSIVE_ONLY_SERIALIZE </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/nlohmann_define_type_non_intrusive/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/nlohmann_define_type_with_names/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_TYPE_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/nlohmann_json_namespace/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_NAMESPACE </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/nlohmann_json_namespace_begin/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_NAMESPACE_BEGIN, NLOHMANN_JSON_NAMESPACE_END </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/nlohmann_json_namespace_no_version/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_NAMESPACE_NO_VERSION </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/nlohmann_json_serialize_enum/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_SERIALIZE_ENUM </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/nlohmann_json_serialize_enum_strict/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_SERIALIZE_ENUM_STRICT </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/nlohmann_json_version_major/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_VERSION_MAJOR, NLOHMANN_JSON_VERSION_MINOR, NLOHMANN_JSON_VERSION_PATCH </span> </a> </li> </ul> </nav> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_5> <div class="md-nav__link md-nav__container"> <a href=../../community/ class="md-nav__link "> <span class=md-ellipsis> Community </span> </a> <label class="md-nav__link " for=__nav_5 id=__nav_5_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_5_label aria-expanded=false> <label class=md-nav__title for=__nav_5> <span class="md-nav__icon md-icon"></span> Community </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../community/code_of_conduct/ class=md-nav__link> <span class=md-ellipsis> Code of Conduct </span> </a> </li> <li class=md-nav__item> <a href=../../community/contribution_guidelines/ class=md-nav__link> <span class=md-ellipsis> Contribution Guidelines </span> </a> </li> <li class=md-nav__item> <a href=../../community/quality_assurance/ class=md-nav__link> <span class=md-ellipsis> Quality assurance </span> </a> </li> <li class=md-nav__item> <a href=../../community/governance/ class=md-nav__link> <span class=md-ellipsis> Governance </span> </a> </li> <li class=md-nav__item> <a href=../../community/security_policy/ class=md-nav__link> <span class=md-ellipsis> Security Policy </span> </a> </li> </ul> </nav> </li> </ul> </nav> </div> </div> </div> <div class="md-sidebar md-sidebar--secondary" data-md-component=sidebar data-md-type=toc> <div class=md-sidebar__scrollwrap> <div class=md-sidebar__inner> <nav class="md-nav md-nav--secondary" aria-label="Table of contents"> <label class=md-nav__title for=__toc> <span class="md-nav__icon md-icon"></span> Table of contents </label> <ul class=md-nav__list data-md-component=toc data-md-scrollfix> <li class=md-nav__item> <a href=#priority-sponsor class=md-nav__link> <span class=md-ellipsis> Priority Sponsor </span> </a> </li> <li class=md-nav__item> <a href=#named-sponsors class=md-nav__link> <span class=md-ellipsis> Named Sponsors </span> </a> </li> </ul> </nav> </div> </div> </div> <div class=md-content data-md-component=content> <article class="md-content__inner md-typeset"> <a href="https://github.com/nlohmann/json/edit/develop/docs/mkdocs/docs/home/sponsors.md" title="Edit this page" class="md-content__button md-icon" rel="edit"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M10 20H6V4h7v5h5v3.1l2-2V8l-6-6H6c-1.1 0-2 .9-2 2v16c0 1.1.9 2 2 2h4zm10.2-7c.1 0 .3.1.4.2l1.3 1.3c.2.2.2.6 0 .8l-1 1-2.1-2.1 1-1c.1-.1.2-.2.4-.2m0 3.9L14.1 23H12v-2.1l6.1-6.1z"/></svg> </a> <a href="https://github.com/nlohmann/json/raw/develop/docs/mkdocs/docs/home/sponsors.md" title="View source of this page" class="md-content__button md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M17 18c.56 0 1 .44 1 1s-.44 1-1 1-1-.44-1-1 .44-1 1-1m0-3c-2.73 0-5.06 1.66-6 4 .94 2.34 3.27 4 6 4s5.06-1.66 6-4c-.94-2.34-3.27-4-6-4m0 6.5a2.5 2.5 0 0 1-2.5-2.5 2.5 2.5 0 0 1 2.5-2.5 2.5 2.5 0 0 1 2.5 2.5 2.5 2.5 0 0 1-2.5 2.5M9.27 20H6V4h7v5h5v4.07c.7.08 1.36.25 2 .49V8l-6-6H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h4.5a8.2 8.2 0 0 1-1.23-2"/></svg> </a> <h1 id=sponsors>Sponsors<a class=headerlink href=#sponsors title="Permanent link">&para;</a></h1> <p>You can sponsor this library at <a href="https://github.com/sponsors/nlohmann">GitHub Sponsors</a>.</p> <h2 id=priority-sponsor>Priority Sponsor<a class=headerlink href=#priority-sponsor title="Permanent link">&para;</a></h2> <ul> <li><a href="https://github.com/codeclown">Martti Laine</a></li> <li><a href="https://github.com/phrrngtn">Paul Harrington</a></li> </ul> <h2 id=named-sponsors>Named Sponsors<a class=headerlink href=#named-sponsors title="Permanent link">&para;</a></h2> <ul> <li><a href="https://github.com/reFX-Mike">Michael Hartmann</a></li> <li><a href="https://github.com/sthagen">Stefan Hagen</a></li> <li><a href="https://github.com/homer6">Steve Sperandeo</a></li> <li><a href="https://github.com/eljefedelrodeodeljefe">Robert Jefe Lindstädt</a></li> <li><a href="https://github.com/ciroque">Steve Wagner</a></li> <li><a href="https://github.com/LionNatsu">Lion Yang</a></li> </ul> <p>Thanks everyone!</p> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 29, 2026 20:15:18 UTC">June 29, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
diff --git a/index.html b/index.html
index 8127531..feb536d 100644
--- a/index.html
+++ b/index.html
@@ -1 +1 @@
-<!doctype html><html lang=en class=no-js> <head><meta charset=utf-8><meta name=viewport content="width=device-width,initial-scale=1"><meta name=author content="Niels Lohmann"><link href="https://json.nlohmann.me/" rel="canonical"><link href=home/license/ rel=next><link rel=icon href=assets/images/favicon.png><meta name=generator content="mkdocs-1.6.1, mkdocs-material-9.7.6"><title>JSON for Modern C++ - JSON for Modern C++</title><link rel=stylesheet href=assets/stylesheets/main.484c7ddc.min.css><link rel=stylesheet href=assets/stylesheets/palette.ab4e12ef.min.css><link rel="stylesheet" href="assets/external/fonts.googleapis.com/css.61a430c9.css"><style>:root{--md-text-font:"Roboto";--md-code-font:"JetBrains Mono"}</style><link rel=stylesheet href=css/custom.css><script>__md_scope=new URL(".",location),__md_hash=e=>[...e].reduce(((e,_)=>(e<<5)-e+_.charCodeAt(0)),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script></head> <body dir=ltr data-md-color-scheme=default data-md-color-primary=indigo data-md-color-accent=indigo> <input class=md-toggle data-md-toggle=drawer type=checkbox id=__drawer autocomplete=off> <input class=md-toggle data-md-toggle=search type=checkbox id=__search autocomplete=off> <label class=md-overlay for=__drawer></label> <div data-md-component=skip> <a href=#json-for-modern-c class=md-skip> Skip to content </a> </div> <div data-md-component=announce> </div> <header class=md-header data-md-component=header> <nav class="md-header__inner md-grid" aria-label=Header> <a href=. title="JSON for Modern C++" class="md-header__button md-logo" aria-label="JSON for Modern C++" data-md-component=logo> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54"/></svg> </a> <label class="md-header__button md-icon" for=__drawer> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M3 6h18v2H3zm0 5h18v2H3zm0 5h18v2H3z"/></svg> </label> <div class=md-header__title data-md-component=header-title> <div class=md-header__ellipsis> <div class=md-header__topic> <span class=md-ellipsis> JSON for Modern C++ </span> </div> <div class=md-header__topic data-md-component=header-topic> <span class=md-ellipsis> JSON for Modern C++ </span> </div> </div> </div> <form class=md-header__option data-md-component=palette> <input class=md-option data-md-color-media="(prefers-color-scheme: light)" data-md-color-scheme=default data-md-color-primary=indigo data-md-color-accent=indigo aria-label="Switch to dark mode" type=radio name=__palette id=__palette_0> <label class="md-header__button md-icon" title="Switch to dark mode" for=__palette_1 hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a4 4 0 0 0-4 4 4 4 0 0 0 4 4 4 4 0 0 0 4-4 4 4 0 0 0-4-4m0 10a6 6 0 0 1-6-6 6 6 0 0 1 6-6 6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12z"/></svg> </label> <input class=md-option data-md-color-media="(prefers-color-scheme: dark)" data-md-color-scheme=slate data-md-color-primary=indigo data-md-color-accent=indigo aria-label="Switch to light mode" type=radio name=__palette id=__palette_1> <label class="md-header__button md-icon" title="Switch to light mode" for=__palette_0 hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 18c-.89 0-1.74-.2-2.5-.55C11.56 16.5 13 14.42 13 12s-1.44-4.5-3.5-5.45C10.26 6.2 11.11 6 12 6a6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12z"/></svg> </label> </form> <script>var palette=__md_get("__palette");if(palette&&palette.color){if("(prefers-color-scheme)"===palette.color.media){var media=matchMedia("(prefers-color-scheme: light)"),input=document.querySelector(media.matches?"[data-md-color-media='(prefers-color-scheme: light)']":"[data-md-color-media='(prefers-color-scheme: dark)']");palette.color.media=input.getAttribute("data-md-color-media"),palette.color.scheme=input.getAttribute("data-md-color-scheme"),palette.color.primary=input.getAttribute("data-md-color-primary"),palette.color.accent=input.getAttribute("data-md-color-accent")}for(var[key,value]of Object.entries(palette.color))document.body.setAttribute("data-md-color-"+key,value)}</script> <label class="md-header__button md-icon" for=__search> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg> </label> <div class=md-search data-md-component=search role=dialog> <label class=md-search__overlay for=__search></label> <div class=md-search__inner role=search> <form class=md-search__form name=search> <input type=text class=md-search__input name=query aria-label=Search placeholder=Search autocapitalize=off autocorrect=off autocomplete=off spellcheck=false data-md-component=search-query required> <label class="md-search__icon md-icon" for=__search> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11z"/></svg> </label> <nav class=md-search__options aria-label=Search> <button type=reset class="md-search__icon md-icon" title=Clear aria-label=Clear tabindex=-1> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z"/></svg> </button> </nav> </form> <div class=md-search__output> <div class=md-search__scrollwrap tabindex=0 data-md-scrollfix> <div class=md-search-result data-md-component=search-result> <div class=md-search-result__meta> Initializing search </div> <ol class=md-search-result__list role=presentation></ol> </div> </div> </div> </div> </div> <div class=md-header__source> <a href="https://github.com/nlohmann/json" title="Go to repository" class="md-source" data-md-component="source"> <div class="md-source__icon md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </div> <div class=md-source__repository> nlohmann/json </div> </a> </div> </nav> </header> <div class=md-container data-md-component=container> <nav class=md-tabs aria-label=Tabs data-md-component=tabs> <div class=md-grid> <ul class=md-tabs__list> <li class="md-tabs__item md-tabs__item--active"> <a href=. class=md-tabs__link> Home </a> </li> <li class=md-tabs__item> <a href=features/arbitrary_types/ class=md-tabs__link> Features </a> </li> <li class=md-tabs__item> <a href=integration/ class=md-tabs__link> Integration </a> </li> <li class=md-tabs__item> <a href=api/basic_json/ class=md-tabs__link> API Documentation </a> </li> <li class=md-tabs__item> <a href=community/ class=md-tabs__link> Community </a> </li> </ul> </div> </nav> <main class=md-main data-md-component=main> <div class="md-main__inner md-grid"> <div class="md-sidebar md-sidebar--primary" data-md-component=sidebar data-md-type=navigation> <div class=md-sidebar__scrollwrap> <div class=md-sidebar__inner> <nav class="md-nav md-nav--primary md-nav--lifted" aria-label=Navigation data-md-level=0> <label class=md-nav__title for=__drawer> <a href=. title="JSON for Modern C++" class="md-nav__button md-logo" aria-label="JSON for Modern C++" data-md-component=logo> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54"/></svg> </a> JSON for Modern C++ </label> <div class=md-nav__source> <a href="https://github.com/nlohmann/json" title="Go to repository" class="md-source" data-md-component="source"> <div class="md-source__icon md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </div> <div class=md-source__repository> nlohmann/json </div> </a> </div> <ul class=md-nav__list data-md-scrollfix> <li class="md-nav__item md-nav__item--active md-nav__item--section md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_1 checked> <div class="md-nav__link md-nav__container"> <a href=. class="md-nav__link md-nav__link--active"> <span class=md-ellipsis> Home </span> </a> <label class="md-nav__link md-nav__link--active" for=__nav_1 id=__nav_1_label tabindex> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_1_label aria-expanded=true> <label class=md-nav__title for=__nav_1> <span class="md-nav__icon md-icon"></span> Home </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=home/license/ class=md-nav__link> <span class=md-ellipsis> License </span> </a> </li> <li class=md-nav__item> <a href=home/faq/ class=md-nav__link> <span class=md-ellipsis> FAQ </span> </a> </li> <li class=md-nav__item> <a href=home/exceptions/ class=md-nav__link> <span class=md-ellipsis> Exceptions </span> </a> </li> <li class=md-nav__item> <a href=home/releases/ class=md-nav__link> <span class=md-ellipsis> Releases </span> </a> </li> <li class=md-nav__item> <a href=home/design_goals/ class=md-nav__link> <span class=md-ellipsis> Design goals </span> </a> </li> <li class=md-nav__item> <a href=home/architecture/ class=md-nav__link> <span class=md-ellipsis> Architecture </span> </a> </li> <li class=md-nav__item> <a href=home/customers/ class=md-nav__link> <span class=md-ellipsis> Customers </span> </a> </li> <li class=md-nav__item> <a href=home/sponsors/ class=md-nav__link> <span class=md-ellipsis> Sponsors </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2> <label class=md-nav__link for=__nav_2 id=__nav_2_label tabindex=0> <span class=md-ellipsis> Features </span> <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_2_label aria-expanded=false> <label class=md-nav__title for=__nav_2> <span class="md-nav__icon md-icon"></span> Features </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=features/arbitrary_types/ class=md-nav__link> <span class=md-ellipsis> Arbitrary Type Conversions </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_2> <div class="md-nav__link md-nav__container"> <a href=features/binary_formats/ class="md-nav__link "> <span class=md-ellipsis> Binary Formats </span> </a> <label class="md-nav__link " for=__nav_2_2 id=__nav_2_2_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_2_label aria-expanded=false> <label class=md-nav__title for=__nav_2_2> <span class="md-nav__icon md-icon"></span> Binary Formats </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=features/binary_formats/bjdata/ class=md-nav__link> <span class=md-ellipsis> BJData </span> </a> </li> <li class=md-nav__item> <a href=features/binary_formats/bson/ class=md-nav__link> <span class=md-ellipsis> BSON </span> </a> </li> <li class=md-nav__item> <a href=features/binary_formats/cbor/ class=md-nav__link> <span class=md-ellipsis> CBOR </span> </a> </li> <li class=md-nav__item> <a href=features/binary_formats/messagepack/ class=md-nav__link> <span class=md-ellipsis> MessagePack </span> </a> </li> <li class=md-nav__item> <a href=features/binary_formats/ubjson/ class=md-nav__link> <span class=md-ellipsis> UBJSON </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=features/binary_values/ class=md-nav__link> <span class=md-ellipsis> Binary Values </span> </a> </li> <li class=md-nav__item> <a href=features/comments/ class=md-nav__link> <span class=md-ellipsis> Comments </span> </a> </li> <li class=md-nav__item> <a href=features/trailing_commas/ class=md-nav__link> <span class=md-ellipsis> Trailing Commas </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_6> <div class="md-nav__link md-nav__container"> <a href=features/element_access/ class="md-nav__link "> <span class=md-ellipsis> Element Access </span> </a> <label class="md-nav__link " for=__nav_2_6 id=__nav_2_6_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_6_label aria-expanded=false> <label class=md-nav__title for=__nav_2_6> <span class="md-nav__icon md-icon"></span> Element Access </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=features/element_access/unchecked_access/ class=md-nav__link> <span class=md-ellipsis> Unchecked access: operator[] </span> </a> </li> <li class=md-nav__item> <a href=features/element_access/checked_access/ class=md-nav__link> <span class=md-ellipsis> Checked access: at </span> </a> </li> <li class=md-nav__item> <a href=features/element_access/default_value/ class=md-nav__link> <span class=md-ellipsis> Access with default value: value </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=features/iterators/ class=md-nav__link> <span class=md-ellipsis> Iterators </span> </a> </li> <li class=md-nav__item> <a href=features/json_pointer/ class=md-nav__link> <span class=md-ellipsis> JSON Pointer </span> </a> </li> <li class=md-nav__item> <a href=features/json_patch/ class=md-nav__link> <span class=md-ellipsis> JSON Patch and Diff </span> </a> </li> <li class=md-nav__item> <a href=features/merge_patch/ class=md-nav__link> <span class=md-ellipsis> JSON Merge Patch </span> </a> </li> <li class=md-nav__item> <a href=features/modules/ class=md-nav__link> <span class=md-ellipsis> Modules </span> </a> </li> <li class=md-nav__item> <a href=features/namespace/ class=md-nav__link> <span class=md-ellipsis> nlohmann Namespace </span> </a> </li> <li class=md-nav__item> <a href=features/object_order/ class=md-nav__link> <span class=md-ellipsis> Object Order </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_14> <div class="md-nav__link md-nav__container"> <a href=features/parsing/ class="md-nav__link "> <span class=md-ellipsis> Parsing </span> </a> <label class="md-nav__link " for=__nav_2_14 id=__nav_2_14_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_14_label aria-expanded=false> <label class=md-nav__title for=__nav_2_14> <span class="md-nav__icon md-icon"></span> Parsing </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=features/parsing/json_lines/ class=md-nav__link> <span class=md-ellipsis> JSON Lines </span> </a> </li> <li class=md-nav__item> <a href=features/parsing/parse_exceptions/ class=md-nav__link> <span class=md-ellipsis> Parsing and Exceptions </span> </a> </li> <li class=md-nav__item> <a href=features/parsing/parser_callbacks/ class=md-nav__link> <span class=md-ellipsis> Parser Callbacks </span> </a> </li> <li class=md-nav__item> <a href=features/parsing/sax_interface/ class=md-nav__link> <span class=md-ellipsis> SAX Interface </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=features/assertions/ class=md-nav__link> <span class=md-ellipsis> Runtime Assertions </span> </a> </li> <li class=md-nav__item> <a href=features/enum_conversion/ class=md-nav__link> <span class=md-ellipsis> Specializing enum conversion </span> </a> </li> <li class=md-nav__item> <a href=features/macros/ class=md-nav__link> <span class=md-ellipsis> Supported Macros </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_18> <div class="md-nav__link md-nav__container"> <a href=features/types/ class="md-nav__link "> <span class=md-ellipsis> Types </span> </a> <label class="md-nav__link " for=__nav_2_18 id=__nav_2_18_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_18_label aria-expanded=false> <label class=md-nav__title for=__nav_2_18> <span class="md-nav__icon md-icon"></span> Types </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=features/types/number_handling/ class=md-nav__link> <span class=md-ellipsis> Number Handling </span> </a> </li> </ul> </nav> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_3> <div class="md-nav__link md-nav__container"> <a href=integration/ class="md-nav__link "> <span class=md-ellipsis> Integration </span> </a> <label class="md-nav__link " for=__nav_3 id=__nav_3_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_3_label aria-expanded=false> <label class=md-nav__title for=__nav_3> <span class="md-nav__icon md-icon"></span> Integration </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=integration/migration_guide/ class=md-nav__link> <span class=md-ellipsis> Migration Guide </span> </a> </li> <li class=md-nav__item> <a href=integration/cmake/ class=md-nav__link> <span class=md-ellipsis> CMake </span> </a> </li> <li class=md-nav__item> <a href=integration/package_managers/ class=md-nav__link> <span class=md-ellipsis> Package Managers </span> </a> </li> <li class=md-nav__item> <a href=integration/pkg-config/ class=md-nav__link> <span class=md-ellipsis> Pkg-config </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4> <label class=md-nav__link for=__nav_4 id=__nav_4_label tabindex=0> <span class=md-ellipsis> API Documentation </span> <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_4_label aria-expanded=false> <label class=md-nav__title for=__nav_4> <span class="md-nav__icon md-icon"></span> API Documentation </label> <ul class=md-nav__list data-md-scrollfix> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_1> <div class="md-nav__link md-nav__container"> <a href=api/basic_json/ class="md-nav__link "> <span class=md-ellipsis> basic_json </span> </a> <label class="md-nav__link " for=__nav_4_1 id=__nav_4_1_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_1_label aria-expanded=false> <label class=md-nav__title for=__nav_4_1> <span class="md-nav__icon md-icon"></span> basic_json </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=api/basic_json/basic_json/ class=md-nav__link> <span class=md-ellipsis> (Constructor) </span> </a> </li> <li class=md-nav__item> <a href=api/basic_json/~basic_json/ class=md-nav__link> <span class=md-ellipsis> (Destructor) </span> </a> </li> <li class=md-nav__item> <a href=api/basic_json/accept/ class=md-nav__link> <span class=md-ellipsis> accept </span> </a> </li> <li class=md-nav__item> <a href=api/basic_json/array/ class=md-nav__link> <span class=md-ellipsis> array </span> </a> </li> <li class=md-nav__item> <a href=api/basic_json/array_t/ class=md-nav__link> <span class=md-ellipsis> array_t </span> </a> </li> <li class=md-nav__item> <a href=api/basic_json/at/ class=md-nav__link> <span class=md-ellipsis> at </span> </a> </li> <li class=md-nav__item> <a href=api/basic_json/back/ class=md-nav__link> <span class=md-ellipsis> back </span> </a> </li> <li class=md-nav__item> <a href=api/basic_json/begin/ class=md-nav__link> <span class=md-ellipsis> begin </span> </a> </li> <li class=md-nav__item> <a href=api/basic_json/binary/ class=md-nav__link> <span class=md-ellipsis> binary </span> </a> </li> <li class=md-nav__item> <a href=api/basic_json/binary_t/ class=md-nav__link> <span class=md-ellipsis> binary_t </span> </a> </li> <li class=md-nav__item> <a href=api/basic_json/boolean_t/ class=md-nav__link> <span class=md-ellipsis> boolean_t </span> </a> </li> <li class=md-nav__item> <a href=api/basic_json/cbegin/ class=md-nav__link> <span class=md-ellipsis> cbegin </span> </a> </li> <li class=md-nav__item> <a href=api/basic_json/cbor_tag_handler_t/ class=md-nav__link> <span class=md-ellipsis> cbor_tag_handler_t </span> </a> </li> <li class=md-nav__item> <a href=api/basic_json/cend/ class=md-nav__link> <span class=md-ellipsis> cend </span> </a> </li> <li class=md-nav__item> <a href=api/basic_json/clear/ class=md-nav__link> <span class=md-ellipsis> clear </span> </a> </li> <li class=md-nav__item> <a href=api/basic_json/contains/ class=md-nav__link> <span class=md-ellipsis> contains </span> </a> </li> <li class=md-nav__item> <a href=api/basic_json/count/ class=md-nav__link> <span class=md-ellipsis> count </span> </a> </li> <li class=md-nav__item> <a href=api/basic_json/crbegin/ class=md-nav__link> <span class=md-ellipsis> crbegin </span> </a> </li> <li class=md-nav__item> <a href=api/basic_json/crend/ class=md-nav__link> <span class=md-ellipsis> crend </span> </a> </li> <li class=md-nav__item> <a href=api/basic_json/default_object_comparator_t/ class=md-nav__link> <span class=md-ellipsis> default_object_comparator_t </span> </a> </li> <li class=md-nav__item> <a href=api/basic_json/diff/ class=md-nav__link> <span class=md-ellipsis> diff </span> </a> </li> <li class=md-nav__item> <a href=api/basic_json/dump/ class=md-nav__link> <span class=md-ellipsis> dump </span> </a> </li> <li class=md-nav__item> <a href=api/basic_json/emplace/ class=md-nav__link> <span class=md-ellipsis> emplace </span> </a> </li> <li class=md-nav__item> <a href=api/basic_json/emplace_back/ class=md-nav__link> <span class=md-ellipsis> emplace_back </span> </a> </li> <li class=md-nav__item> <a href=api/basic_json/empty/ class=md-nav__link> <span class=md-ellipsis> empty </span> </a> </li> <li class=md-nav__item> <a href=api/basic_json/end/ class=md-nav__link> <span class=md-ellipsis> end </span> </a> </li> <li class=md-nav__item> <a href=api/basic_json/end_pos/ class=md-nav__link> <span class=md-ellipsis> end_pos </span> </a> </li> <li class=md-nav__item> <a href=api/basic_json/erase/ class=md-nav__link> <span class=md-ellipsis> erase </span> </a> </li> <li class=md-nav__item> <a href=api/basic_json/error_handler_t/ class=md-nav__link> <span class=md-ellipsis> error_handler_t </span> </a> </li> <li class=md-nav__item> <a href=api/basic_json/exception/ class=md-nav__link> <span class=md-ellipsis> exception </span> </a> </li> <li class=md-nav__item> <a href=api/basic_json/find/ class=md-nav__link> <span class=md-ellipsis> find </span> </a> </li> <li class=md-nav__item> <a href=api/basic_json/flatten/ class=md-nav__link> <span class=md-ellipsis> flatten </span> </a> </li> <li class=md-nav__item> <a href=api/basic_json/from_bjdata/ class=md-nav__link> <span class=md-ellipsis> from_bjdata </span> </a> </li> <li class=md-nav__item> <a href=api/basic_json/from_bson/ class=md-nav__link> <span class=md-ellipsis> from_bson </span> </a> </li> <li class=md-nav__item> <a href=api/basic_json/from_cbor/ class=md-nav__link> <span class=md-ellipsis> from_cbor </span> </a> </li> <li class=md-nav__item> <a href=api/basic_json/from_msgpack/ class=md-nav__link> <span class=md-ellipsis> from_msgpack </span> </a> </li> <li class=md-nav__item> <a href=api/basic_json/from_ubjson/ class=md-nav__link> <span class=md-ellipsis> from_ubjson </span> </a> </li> <li class=md-nav__item> <a href=api/basic_json/front/ class=md-nav__link> <span class=md-ellipsis> front </span> </a> </li> <li class=md-nav__item> <a href=api/basic_json/get/ class=md-nav__link> <span class=md-ellipsis> get </span> </a> </li> <li class=md-nav__item> <a href=api/basic_json/get_allocator/ class=md-nav__link> <span class=md-ellipsis> get_allocator </span> </a> </li> <li class=md-nav__item> <a href=api/basic_json/get_binary/ class=md-nav__link> <span class=md-ellipsis> get_binary </span> </a> </li> <li class=md-nav__item> <a href=api/basic_json/get_ptr/ class=md-nav__link> <span class=md-ellipsis> get_ptr </span> </a> </li> <li class=md-nav__item> <a href=api/basic_json/get_ref/ class=md-nav__link> <span class=md-ellipsis> get_ref </span> </a> </li> <li class=md-nav__item> <a href=api/basic_json/get_to/ class=md-nav__link> <span class=md-ellipsis> get_to </span> </a> </li> <li class=md-nav__item> <a href=api/basic_json/std_hash/ class=md-nav__link> <span class=md-ellipsis> std::hash&lt;basic_json&gt; </span> </a> </li> <li class=md-nav__item> <a href=api/basic_json/input_format_t/ class=md-nav__link> <span class=md-ellipsis> input_format_t </span> </a> </li> <li class=md-nav__item> <a href=api/basic_json/insert/ class=md-nav__link> <span class=md-ellipsis> insert </span> </a> </li> <li class=md-nav__item> <a href=api/basic_json/invalid_iterator/ class=md-nav__link> <span class=md-ellipsis> invalid_iterator </span> </a> </li> <li class=md-nav__item> <a href=api/basic_json/is_array/ class=md-nav__link> <span class=md-ellipsis> is_array </span> </a> </li> <li class=md-nav__item> <a href=api/basic_json/is_binary/ class=md-nav__link> <span class=md-ellipsis> is_binary </span> </a> </li> <li class=md-nav__item> <a href=api/basic_json/is_boolean/ class=md-nav__link> <span class=md-ellipsis> is_boolean </span> </a> </li> <li class=md-nav__item> <a href=api/basic_json/is_discarded/ class=md-nav__link> <span class=md-ellipsis> is_discarded </span> </a> </li> <li class=md-nav__item> <a href=api/basic_json/is_null/ class=md-nav__link> <span class=md-ellipsis> is_null </span> </a> </li> <li class=md-nav__item> <a href=api/basic_json/is_number/ class=md-nav__link> <span class=md-ellipsis> is_number </span> </a> </li> <li class=md-nav__item> <a href=api/basic_json/is_number_float/ class=md-nav__link> <span class=md-ellipsis> is_number_float </span> </a> </li> <li class=md-nav__item> <a href=api/basic_json/is_number_integer/ class=md-nav__link> <span class=md-ellipsis> is_number_integer </span> </a> </li> <li class=md-nav__item> <a href=api/basic_json/is_number_unsigned/ class=md-nav__link> <span class=md-ellipsis> is_number_unsigned </span> </a> </li> <li class=md-nav__item> <a href=api/basic_json/is_object/ class=md-nav__link> <span class=md-ellipsis> is_object </span> </a> </li> <li class=md-nav__item> <a href=api/basic_json/is_primitive/ class=md-nav__link> <span class=md-ellipsis> is_primitive </span> </a> </li> <li class=md-nav__item> <a href=api/basic_json/is_string/ class=md-nav__link> <span class=md-ellipsis> is_string </span> </a> </li> <li class=md-nav__item> <a href=api/basic_json/is_structured/ class=md-nav__link> <span class=md-ellipsis> is_structured </span> </a> </li> <li class=md-nav__item> <a href=api/basic_json/items/ class=md-nav__link> <span class=md-ellipsis> items </span> </a> </li> <li class=md-nav__item> <a href=api/basic_json/json_base_class_t/ class=md-nav__link> <span class=md-ellipsis> json_base_class_t </span> </a> </li> <li class=md-nav__item> <a href=api/basic_json/json_serializer/ class=md-nav__link> <span class=md-ellipsis> json_serializer </span> </a> </li> <li class=md-nav__item> <a href=api/basic_json/max_size/ class=md-nav__link> <span class=md-ellipsis> max_size </span> </a> </li> <li class=md-nav__item> <a href=api/basic_json/meta/ class=md-nav__link> <span class=md-ellipsis> meta </span> </a> </li> <li class=md-nav__item> <a href=api/basic_json/merge_patch/ class=md-nav__link> <span class=md-ellipsis> merge_patch </span> </a> </li> <li class=md-nav__item> <a href=api/basic_json/number_float_t/ class=md-nav__link> <span class=md-ellipsis> number_float_t </span> </a> </li> <li class=md-nav__item> <a href=api/basic_json/number_integer_t/ class=md-nav__link> <span class=md-ellipsis> number_integer_t </span> </a> </li> <li class=md-nav__item> <a href=api/basic_json/number_unsigned_t/ class=md-nav__link> <span class=md-ellipsis> number_unsigned_t </span> </a> </li> <li class=md-nav__item> <a href=api/basic_json/object/ class=md-nav__link> <span class=md-ellipsis> object </span> </a> </li> <li class=md-nav__item> <a href=api/basic_json/object_comparator_t/ class=md-nav__link> <span class=md-ellipsis> object_comparator_t </span> </a> </li> <li class=md-nav__item> <a href=api/basic_json/object_t/ class=md-nav__link> <span class=md-ellipsis> object_t </span> </a> </li> <li class=md-nav__item> <a href=api/basic_json/operator_ValueType/ class=md-nav__link> <span class=md-ellipsis> operator ValueType </span> </a> </li> <li class=md-nav__item> <a href=api/basic_json/operator_value_t/ class=md-nav__link> <span class=md-ellipsis> operator value_t </span> </a> </li> <li class=md-nav__item> <a href=api/basic_json/operator%5B%5D/ class=md-nav__link> <span class=md-ellipsis> operator[] </span> </a> </li> <li class=md-nav__item> <a href=api/basic_json/operator%3D/ class=md-nav__link> <span class=md-ellipsis> operator= </span> </a> </li> <li class=md-nav__item> <a href=api/basic_json/operator%2B%3D/ class=md-nav__link> <span class=md-ellipsis> operator+= </span> </a> </li> <li class=md-nav__item> <a href=api/basic_json/operator_eq/ class=md-nav__link> <span class=md-ellipsis> operator== </span> </a> </li> <li class=md-nav__item> <a href=api/basic_json/operator_ne/ class=md-nav__link> <span class=md-ellipsis> operator!= </span> </a> </li> <li class=md-nav__item> <a href=api/basic_json/operator_lt/ class=md-nav__link> <span class=md-ellipsis> operator< </span> </a> </li> <li class=md-nav__item> <a href=api/basic_json/operator_gt/ class=md-nav__link> <span class=md-ellipsis> operator> </span> </a> </li> <li class=md-nav__item> <a href=api/basic_json/operator_le/ class=md-nav__link> <span class=md-ellipsis> operator<= </span> </a> </li> <li class=md-nav__item> <a href=api/basic_json/operator_ge/ class=md-nav__link> <span class=md-ellipsis> operator>= </span> </a> </li> <li class=md-nav__item> <a href=api/basic_json/operator_spaceship/ class=md-nav__link> <span class=md-ellipsis> operator<=> </span> </a> </li> <li class=md-nav__item> <a href=api/basic_json/out_of_range/ class=md-nav__link> <span class=md-ellipsis> out_of_range </span> </a> </li> <li class=md-nav__item> <a href=api/basic_json/other_error/ class=md-nav__link> <span class=md-ellipsis> other_error </span> </a> </li> <li class=md-nav__item> <a href=api/basic_json/parse/ class=md-nav__link> <span class=md-ellipsis> parse </span> </a> </li> <li class=md-nav__item> <a href=api/basic_json/parse_error/ class=md-nav__link> <span class=md-ellipsis> parse_error </span> </a> </li> <li class=md-nav__item> <a href=api/basic_json/parse_event_t/ class=md-nav__link> <span class=md-ellipsis> parse_event_t </span> </a> </li> <li class=md-nav__item> <a href=api/basic_json/parser_callback_t/ class=md-nav__link> <span class=md-ellipsis> parser_callback_t </span> </a> </li> <li class=md-nav__item> <a href=api/basic_json/patch/ class=md-nav__link> <span class=md-ellipsis> patch </span> </a> </li> <li class=md-nav__item> <a href=api/basic_json/patch_inplace/ class=md-nav__link> <span class=md-ellipsis> patch_inplace </span> </a> </li> <li class=md-nav__item> <a href=api/basic_json/push_back/ class=md-nav__link> <span class=md-ellipsis> push_back </span> </a> </li> <li class=md-nav__item> <a href=api/basic_json/rbegin/ class=md-nav__link> <span class=md-ellipsis> rbegin </span> </a> </li> <li class=md-nav__item> <a href=api/basic_json/rend/ class=md-nav__link> <span class=md-ellipsis> rend </span> </a> </li> <li class=md-nav__item> <a href=api/basic_json/sax_parse/ class=md-nav__link> <span class=md-ellipsis> sax_parse </span> </a> </li> <li class=md-nav__item> <a href=api/basic_json/size/ class=md-nav__link> <span class=md-ellipsis> size </span> </a> </li> <li class=md-nav__item> <a href=api/basic_json/start_pos/ class=md-nav__link> <span class=md-ellipsis> start_pos </span> </a> </li> <li class=md-nav__item> <a href=api/basic_json/string_t/ class=md-nav__link> <span class=md-ellipsis> string_t </span> </a> </li> <li class=md-nav__item> <a href=api/basic_json/swap/ class=md-nav__link> <span class=md-ellipsis> swap </span> </a> </li> <li class=md-nav__item> <a href=api/basic_json/std_swap/ class=md-nav__link> <span class=md-ellipsis> std::swap&lt;basic_json&gt; </span> </a> </li> <li class=md-nav__item> <a href=api/basic_json/to_bjdata/ class=md-nav__link> <span class=md-ellipsis> to_bjdata </span> </a> </li> <li class=md-nav__item> <a href=api/basic_json/to_bson/ class=md-nav__link> <span class=md-ellipsis> to_bson </span> </a> </li> <li class=md-nav__item> <a href=api/basic_json/to_cbor/ class=md-nav__link> <span class=md-ellipsis> to_cbor </span> </a> </li> <li class=md-nav__item> <a href=api/basic_json/to_msgpack/ class=md-nav__link> <span class=md-ellipsis> to_msgpack </span> </a> </li> <li class=md-nav__item> <a href=api/basic_json/to_string/ class=md-nav__link> <span class=md-ellipsis> to_string </span> </a> </li> <li class=md-nav__item> <a href=api/basic_json/to_ubjson/ class=md-nav__link> <span class=md-ellipsis> to_ubjson </span> </a> </li> <li class=md-nav__item> <a href=api/basic_json/type/ class=md-nav__link> <span class=md-ellipsis> type </span> </a> </li> <li class=md-nav__item> <a href=api/basic_json/type_error/ class=md-nav__link> <span class=md-ellipsis> type_error </span> </a> </li> <li class=md-nav__item> <a href=api/basic_json/type_name/ class=md-nav__link> <span class=md-ellipsis> type_name </span> </a> </li> <li class=md-nav__item> <a href=api/basic_json/unflatten/ class=md-nav__link> <span class=md-ellipsis> unflatten </span> </a> </li> <li class=md-nav__item> <a href=api/basic_json/update/ class=md-nav__link> <span class=md-ellipsis> update </span> </a> </li> <li class=md-nav__item> <a href=api/basic_json/value/ class=md-nav__link> <span class=md-ellipsis> value </span> </a> </li> <li class=md-nav__item> <a href=api/basic_json/value_t/ class=md-nav__link> <span class=md-ellipsis> value_t </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_2> <div class="md-nav__link md-nav__container"> <a href=api/byte_container_with_subtype/ class="md-nav__link "> <span class=md-ellipsis> byte_container_with_subtype </span> </a> <label class="md-nav__link " for=__nav_4_2 id=__nav_4_2_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_2_label aria-expanded=false> <label class=md-nav__title for=__nav_4_2> <span class="md-nav__icon md-icon"></span> byte_container_with_subtype </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=api/byte_container_with_subtype/byte_container_with_subtype/ class=md-nav__link> <span class=md-ellipsis> (constructor) </span> </a> </li> <li class=md-nav__item> <a href=api/byte_container_with_subtype/clear_subtype/ class=md-nav__link> <span class=md-ellipsis> clear_subtype </span> </a> </li> <li class=md-nav__item> <a href=api/byte_container_with_subtype/has_subtype/ class=md-nav__link> <span class=md-ellipsis> has_subtype </span> </a> </li> <li class=md-nav__item> <a href=api/byte_container_with_subtype/set_subtype/ class=md-nav__link> <span class=md-ellipsis> set_subtype </span> </a> </li> <li class=md-nav__item> <a href=api/byte_container_with_subtype/subtype/ class=md-nav__link> <span class=md-ellipsis> subtype </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_3> <div class="md-nav__link md-nav__container"> <a href=api/adl_serializer/ class="md-nav__link "> <span class=md-ellipsis> adl_serializer </span> </a> <label class="md-nav__link " for=__nav_4_3 id=__nav_4_3_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_3_label aria-expanded=false> <label class=md-nav__title for=__nav_4_3> <span class="md-nav__icon md-icon"></span> adl_serializer </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=api/adl_serializer/from_json/ class=md-nav__link> <span class=md-ellipsis> from_json </span> </a> </li> <li class=md-nav__item> <a href=api/adl_serializer/to_json/ class=md-nav__link> <span class=md-ellipsis> to_json </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=api/json/ class=md-nav__link> <span class=md-ellipsis> json </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_5> <div class="md-nav__link md-nav__container"> <a href=api/json_pointer/ class="md-nav__link "> <span class=md-ellipsis> json_pointer </span> </a> <label class="md-nav__link " for=__nav_4_5 id=__nav_4_5_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_5_label aria-expanded=false> <label class=md-nav__title for=__nav_4_5> <span class="md-nav__icon md-icon"></span> json_pointer </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=api/json_pointer/json_pointer/ class=md-nav__link> <span class=md-ellipsis> (Constructor) </span> </a> </li> <li class=md-nav__item> <a href=api/json_pointer/back/ class=md-nav__link> <span class=md-ellipsis> back </span> </a> </li> <li class=md-nav__item> <a href=api/json_pointer/empty/ class=md-nav__link> <span class=md-ellipsis> empty </span> </a> </li> <li class=md-nav__item> <a href=api/json_pointer/front/ class=md-nav__link> <span class=md-ellipsis> front </span> </a> </li> <li class=md-nav__item> <a href=api/json_pointer/operator_string_t/ class=md-nav__link> <span class=md-ellipsis> operator string_t </span> </a> </li> <li class=md-nav__item> <a href=api/json_pointer/operator_eq/ class=md-nav__link> <span class=md-ellipsis> operator== </span> </a> </li> <li class=md-nav__item> <a href=api/json_pointer/operator_ne/ class=md-nav__link> <span class=md-ellipsis> operator!= </span> </a> </li> <li class=md-nav__item> <a href=api/json_pointer/operator_slash/ class=md-nav__link> <span class=md-ellipsis> operator/ </span> </a> </li> <li class=md-nav__item> <a href=api/json_pointer/operator_slasheq/ class=md-nav__link> <span class=md-ellipsis> operator/= </span> </a> </li> <li class=md-nav__item> <a href=api/json_pointer/parent_pointer/ class=md-nav__link> <span class=md-ellipsis> parent_pointer </span> </a> </li> <li class=md-nav__item> <a href=api/json_pointer/pop_back/ class=md-nav__link> <span class=md-ellipsis> pop_back </span> </a> </li> <li class=md-nav__item> <a href=api/json_pointer/pop_front/ class=md-nav__link> <span class=md-ellipsis> pop_front </span> </a> </li> <li class=md-nav__item> <a href=api/json_pointer/push_back/ class=md-nav__link> <span class=md-ellipsis> push_back </span> </a> </li> <li class=md-nav__item> <a href=api/json_pointer/push_front/ class=md-nav__link> <span class=md-ellipsis> push_front </span> </a> </li> <li class=md-nav__item> <a href=api/json_pointer/string_t/ class=md-nav__link> <span class=md-ellipsis> string_t </span> </a> </li> <li class=md-nav__item> <a href=api/json_pointer/to_string/ class=md-nav__link> <span class=md-ellipsis> to_string </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_6> <div class="md-nav__link md-nav__container"> <a href=api/json_sax/ class="md-nav__link "> <span class=md-ellipsis> json_sax </span> </a> <label class="md-nav__link " for=__nav_4_6 id=__nav_4_6_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_6_label aria-expanded=false> <label class=md-nav__title for=__nav_4_6> <span class="md-nav__icon md-icon"></span> json_sax </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=api/json_sax/binary/ class=md-nav__link> <span class=md-ellipsis> binary </span> </a> </li> <li class=md-nav__item> <a href=api/json_sax/boolean/ class=md-nav__link> <span class=md-ellipsis> boolean </span> </a> </li> <li class=md-nav__item> <a href=api/json_sax/end_array/ class=md-nav__link> <span class=md-ellipsis> end_array </span> </a> </li> <li class=md-nav__item> <a href=api/json_sax/end_object/ class=md-nav__link> <span class=md-ellipsis> end_object </span> </a> </li> <li class=md-nav__item> <a href=api/json_sax/key/ class=md-nav__link> <span class=md-ellipsis> key </span> </a> </li> <li class=md-nav__item> <a href=api/json_sax/null/ class=md-nav__link> <span class=md-ellipsis> null </span> </a> </li> <li class=md-nav__item> <a href=api/json_sax/number_float/ class=md-nav__link> <span class=md-ellipsis> number_float </span> </a> </li> <li class=md-nav__item> <a href=api/json_sax/number_integer/ class=md-nav__link> <span class=md-ellipsis> number_integer </span> </a> </li> <li class=md-nav__item> <a href=api/json_sax/number_unsigned/ class=md-nav__link> <span class=md-ellipsis> number_unsigned </span> </a> </li> <li class=md-nav__item> <a href=api/json_sax/parse_error/ class=md-nav__link> <span class=md-ellipsis> parse_error </span> </a> </li> <li class=md-nav__item> <a href=api/json_sax/start_array/ class=md-nav__link> <span class=md-ellipsis> start_array </span> </a> </li> <li class=md-nav__item> <a href=api/json_sax/start_object/ class=md-nav__link> <span class=md-ellipsis> start_object </span> </a> </li> <li class=md-nav__item> <a href=api/json_sax/string/ class=md-nav__link> <span class=md-ellipsis> string </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=api/operator_ltlt/ class=md-nav__link> <span class=md-ellipsis> operator<<(basic_json), operator<<(json_pointer) </span> </a> </li> <li class=md-nav__item> <a href=api/operator_gtgt/ class=md-nav__link> <span class=md-ellipsis> operator>>(basic_json) </span> </a> </li> <li class=md-nav__item> <a href=api/operator_literal_json/ class=md-nav__link> <span class=md-ellipsis> operator""_json </span> </a> </li> <li class=md-nav__item> <a href=api/operator_literal_json_pointer/ class=md-nav__link> <span class=md-ellipsis> operator""_json_pointer </span> </a> </li> <li class=md-nav__item> <a href=api/ordered_json/ class=md-nav__link> <span class=md-ellipsis> ordered_json </span> </a> </li> <li class=md-nav__item> <a href=api/ordered_map/ class=md-nav__link> <span class=md-ellipsis> ordered_map </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_13> <div class="md-nav__link md-nav__container"> <a href=api/macros/ class="md-nav__link "> <span class=md-ellipsis> macros </span> </a> <label class="md-nav__link " for=__nav_4_13 id=__nav_4_13_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_13_label aria-expanded=false> <label class=md-nav__title for=__nav_4_13> <span class="md-nav__icon md-icon"></span> macros </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=api/macros/json_assert/ class=md-nav__link> <span class=md-ellipsis> JSON_ASSERT </span> </a> </li> <li class=md-nav__item> <a href=api/macros/json_brace_init_copy_semantics/ class=md-nav__link> <span class=md-ellipsis> JSON_BRACE_INIT_COPY_SEMANTICS </span> </a> </li> <li class=md-nav__item> <a href=api/macros/json_throw_user/ class=md-nav__link> <span class=md-ellipsis> JSON_CATCH_USER, JSON_THROW_USER, JSON_TRY_USER </span> </a> </li> <li class=md-nav__item> <a href=api/macros/json_diagnostics/ class=md-nav__link> <span class=md-ellipsis> JSON_DIAGNOSTICS </span> </a> </li> <li class=md-nav__item> <a href=api/macros/json_diagnostic_positions/ class=md-nav__link> <span class=md-ellipsis> JSON_DIAGNOSTIC_POSITIONS </span> </a> </li> <li class=md-nav__item> <a href=api/macros/json_disable_enum_serialization/ class=md-nav__link> <span class=md-ellipsis> JSON_DISABLE_ENUM_SERIALIZATION </span> </a> </li> <li class=md-nav__item> <a href=api/macros/json_has_cpp_11/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_CPP_11, JSON_HAS_CPP_14, JSON_HAS_CPP_17, JSON_HAS_CPP_20 </span> </a> </li> <li class=md-nav__item> <a href=api/macros/json_has_filesystem/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_EXPERIMENTAL_FILESYSTEM, JSON_HAS_FILESYSTEM </span> </a> </li> <li class=md-nav__item> <a href=api/macros/json_has_ranges/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_RANGES </span> </a> </li> <li class=md-nav__item> <a href=api/macros/json_has_static_rtti/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_STATIC_RTTI </span> </a> </li> <li class=md-nav__item> <a href=api/macros/json_has_three_way_comparison/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_THREE_WAY_COMPARISON </span> </a> </li> <li class=md-nav__item> <a href=api/macros/json_noexception/ class=md-nav__link> <span class=md-ellipsis> JSON_NOEXCEPTION </span> </a> </li> <li class=md-nav__item> <a href=api/macros/json_no_io/ class=md-nav__link> <span class=md-ellipsis> JSON_NO_IO </span> </a> </li> <li class=md-nav__item> <a href=api/macros/json_skip_library_version_check/ class=md-nav__link> <span class=md-ellipsis> JSON_SKIP_LIBRARY_VERSION_CHECK </span> </a> </li> <li class=md-nav__item> <a href=api/macros/json_skip_unsupported_compiler_check/ class=md-nav__link> <span class=md-ellipsis> JSON_SKIP_UNSUPPORTED_COMPILER_CHECK </span> </a> </li> <li class=md-nav__item> <a href=api/macros/json_use_global_udls/ class=md-nav__link> <span class=md-ellipsis> JSON_USE_GLOBAL_UDLS </span> </a> </li> <li class=md-nav__item> <a href=api/macros/json_use_implicit_conversions/ class=md-nav__link> <span class=md-ellipsis> JSON_USE_IMPLICIT_CONVERSIONS </span> </a> </li> <li class=md-nav__item> <a href=api/macros/json_use_legacy_discarded_value_comparison/ class=md-nav__link> <span class=md-ellipsis> JSON_USE_LEGACY_DISCARDED_VALUE_COMPARISON </span> </a> </li> <li class=md-nav__item> <a href=api/macros/nlohmann_define_derived_type/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_ONLY_SERIALIZE, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE </span> </a> </li> <li class=md-nav__item> <a href=api/macros/nlohmann_define_type_intrusive/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_TYPE_INTRUSIVE, NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_TYPE_INTRUSIVE_ONLY_SERIALIZE </span> </a> </li> <li class=md-nav__item> <a href=api/macros/nlohmann_define_type_non_intrusive/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE </span> </a> </li> <li class=md-nav__item> <a href=api/macros/nlohmann_define_type_with_names/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_TYPE_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES </span> </a> </li> <li class=md-nav__item> <a href=api/macros/nlohmann_json_namespace/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_NAMESPACE </span> </a> </li> <li class=md-nav__item> <a href=api/macros/nlohmann_json_namespace_begin/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_NAMESPACE_BEGIN, NLOHMANN_JSON_NAMESPACE_END </span> </a> </li> <li class=md-nav__item> <a href=api/macros/nlohmann_json_namespace_no_version/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_NAMESPACE_NO_VERSION </span> </a> </li> <li class=md-nav__item> <a href=api/macros/nlohmann_json_serialize_enum/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_SERIALIZE_ENUM </span> </a> </li> <li class=md-nav__item> <a href=api/macros/nlohmann_json_serialize_enum_strict/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_SERIALIZE_ENUM_STRICT </span> </a> </li> <li class=md-nav__item> <a href=api/macros/nlohmann_json_version_major/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_VERSION_MAJOR, NLOHMANN_JSON_VERSION_MINOR, NLOHMANN_JSON_VERSION_PATCH </span> </a> </li> </ul> </nav> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_5> <div class="md-nav__link md-nav__container"> <a href=community/ class="md-nav__link "> <span class=md-ellipsis> Community </span> </a> <label class="md-nav__link " for=__nav_5 id=__nav_5_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_5_label aria-expanded=false> <label class=md-nav__title for=__nav_5> <span class="md-nav__icon md-icon"></span> Community </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=community/code_of_conduct/ class=md-nav__link> <span class=md-ellipsis> Code of Conduct </span> </a> </li> <li class=md-nav__item> <a href=community/contribution_guidelines/ class=md-nav__link> <span class=md-ellipsis> Contribution Guidelines </span> </a> </li> <li class=md-nav__item> <a href=community/quality_assurance/ class=md-nav__link> <span class=md-ellipsis> Quality assurance </span> </a> </li> <li class=md-nav__item> <a href=community/governance/ class=md-nav__link> <span class=md-ellipsis> Governance </span> </a> </li> <li class=md-nav__item> <a href=community/security_policy/ class=md-nav__link> <span class=md-ellipsis> Security Policy </span> </a> </li> </ul> </nav> </li> </ul> </nav> </div> </div> </div> <div class="md-sidebar md-sidebar--secondary" data-md-component=sidebar data-md-type=toc> <div class=md-sidebar__scrollwrap> <div class=md-sidebar__inner> <nav class="md-nav md-nav--secondary" aria-label="Table of contents"> </nav> </div> </div> </div> <div class=md-content data-md-component=content> <article class="md-content__inner md-typeset"> <a href="https://github.com/nlohmann/json/edit/develop/docs/mkdocs/docs/index.md" title="Edit this page" class="md-content__button md-icon" rel="edit"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M10 20H6V4h7v5h5v3.1l2-2V8l-6-6H6c-1.1 0-2 .9-2 2v16c0 1.1.9 2 2 2h4zm10.2-7c.1 0 .3.1.4.2l1.3 1.3c.2.2.2.6 0 .8l-1 1-2.1-2.1 1-1c.1-.1.2-.2.4-.2m0 3.9L14.1 23H12v-2.1l6.1-6.1z"/></svg> </a> <a href="https://github.com/nlohmann/json/raw/develop/docs/mkdocs/docs/index.md" title="View source of this page" class="md-content__button md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M17 18c.56 0 1 .44 1 1s-.44 1-1 1-1-.44-1-1 .44-1 1-1m0-3c-2.73 0-5.06 1.66-6 4 .94 2.34 3.27 4 6 4s5.06-1.66 6-4c-.94-2.34-3.27-4-6-4m0 6.5a2.5 2.5 0 0 1-2.5-2.5 2.5 2.5 0 0 1 2.5-2.5 2.5 2.5 0 0 1 2.5 2.5 2.5 2.5 0 0 1-2.5 2.5M9.27 20H6V4h7v5h5v4.07c.7.08 1.36.25 2 .49V8l-6-6H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h4.5a8.2 8.2 0 0 1-1.23-2"/></svg> </a> <h1 id=json-for-modern-c><abbr title="JavaScript Object Notation">JSON</abbr> for Modern C++<a class=headerlink href=#json-for-modern-c title="Permanent link">&para;</a></h1> <p><img alt src=images/json.gif></p> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 23, 2026 11:16:18 UTC">June 23, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": ".", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=assets/javascripts/bundle.79ae519e.min.js></script> <script src="assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
+<!doctype html><html lang=en class=no-js> <head><meta charset=utf-8><meta name=viewport content="width=device-width,initial-scale=1"><meta name=author content="Niels Lohmann"><link href="https://json.nlohmann.me/" rel="canonical"><link href=home/license/ rel=next><link rel=icon href=assets/images/favicon.png><meta name=generator content="mkdocs-1.6.1, mkdocs-material-9.7.6"><title>JSON for Modern C++ - JSON for Modern C++</title><link rel=stylesheet href=assets/stylesheets/main.484c7ddc.min.css><link rel=stylesheet href=assets/stylesheets/palette.ab4e12ef.min.css><link rel="stylesheet" href="assets/external/fonts.googleapis.com/css.61a430c9.css"><style>:root{--md-text-font:"Roboto";--md-code-font:"JetBrains Mono"}</style><link rel=stylesheet href=css/custom.css><script>__md_scope=new URL(".",location),__md_hash=e=>[...e].reduce(((e,_)=>(e<<5)-e+_.charCodeAt(0)),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script></head> <body dir=ltr data-md-color-scheme=default data-md-color-primary=indigo data-md-color-accent=indigo> <input class=md-toggle data-md-toggle=drawer type=checkbox id=__drawer autocomplete=off> <input class=md-toggle data-md-toggle=search type=checkbox id=__search autocomplete=off> <label class=md-overlay for=__drawer></label> <div data-md-component=skip> <a href=#json-for-modern-c class=md-skip> Skip to content </a> </div> <div data-md-component=announce> </div> <header class=md-header data-md-component=header> <nav class="md-header__inner md-grid" aria-label=Header> <a href=. title="JSON for Modern C++" class="md-header__button md-logo" aria-label="JSON for Modern C++" data-md-component=logo> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54"/></svg> </a> <label class="md-header__button md-icon" for=__drawer> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M3 6h18v2H3zm0 5h18v2H3zm0 5h18v2H3z"/></svg> </label> <div class=md-header__title data-md-component=header-title> <div class=md-header__ellipsis> <div class=md-header__topic> <span class=md-ellipsis> JSON for Modern C++ </span> </div> <div class=md-header__topic data-md-component=header-topic> <span class=md-ellipsis> JSON for Modern C++ </span> </div> </div> </div> <form class=md-header__option data-md-component=palette> <input class=md-option data-md-color-media="(prefers-color-scheme: light)" data-md-color-scheme=default data-md-color-primary=indigo data-md-color-accent=indigo aria-label="Switch to dark mode" type=radio name=__palette id=__palette_0> <label class="md-header__button md-icon" title="Switch to dark mode" for=__palette_1 hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a4 4 0 0 0-4 4 4 4 0 0 0 4 4 4 4 0 0 0 4-4 4 4 0 0 0-4-4m0 10a6 6 0 0 1-6-6 6 6 0 0 1 6-6 6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12z"/></svg> </label> <input class=md-option data-md-color-media="(prefers-color-scheme: dark)" data-md-color-scheme=slate data-md-color-primary=indigo data-md-color-accent=indigo aria-label="Switch to light mode" type=radio name=__palette id=__palette_1> <label class="md-header__button md-icon" title="Switch to light mode" for=__palette_0 hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 18c-.89 0-1.74-.2-2.5-.55C11.56 16.5 13 14.42 13 12s-1.44-4.5-3.5-5.45C10.26 6.2 11.11 6 12 6a6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12z"/></svg> </label> </form> <script>var palette=__md_get("__palette");if(palette&&palette.color){if("(prefers-color-scheme)"===palette.color.media){var media=matchMedia("(prefers-color-scheme: light)"),input=document.querySelector(media.matches?"[data-md-color-media='(prefers-color-scheme: light)']":"[data-md-color-media='(prefers-color-scheme: dark)']");palette.color.media=input.getAttribute("data-md-color-media"),palette.color.scheme=input.getAttribute("data-md-color-scheme"),palette.color.primary=input.getAttribute("data-md-color-primary"),palette.color.accent=input.getAttribute("data-md-color-accent")}for(var[key,value]of Object.entries(palette.color))document.body.setAttribute("data-md-color-"+key,value)}</script> <label class="md-header__button md-icon" for=__search> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg> </label> <div class=md-search data-md-component=search role=dialog> <label class=md-search__overlay for=__search></label> <div class=md-search__inner role=search> <form class=md-search__form name=search> <input type=text class=md-search__input name=query aria-label=Search placeholder=Search autocapitalize=off autocorrect=off autocomplete=off spellcheck=false data-md-component=search-query required> <label class="md-search__icon md-icon" for=__search> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11z"/></svg> </label> <nav class=md-search__options aria-label=Search> <button type=reset class="md-search__icon md-icon" title=Clear aria-label=Clear tabindex=-1> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z"/></svg> </button> </nav> </form> <div class=md-search__output> <div class=md-search__scrollwrap tabindex=0 data-md-scrollfix> <div class=md-search-result data-md-component=search-result> <div class=md-search-result__meta> Initializing search </div> <ol class=md-search-result__list role=presentation></ol> </div> </div> </div> </div> </div> <div class=md-header__source> <a href="https://github.com/nlohmann/json" title="Go to repository" class="md-source" data-md-component="source"> <div class="md-source__icon md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </div> <div class=md-source__repository> nlohmann/json </div> </a> </div> </nav> </header> <div class=md-container data-md-component=container> <nav class=md-tabs aria-label=Tabs data-md-component=tabs> <div class=md-grid> <ul class=md-tabs__list> <li class="md-tabs__item md-tabs__item--active"> <a href=. class=md-tabs__link> Home </a> </li> <li class=md-tabs__item> <a href=features/arbitrary_types/ class=md-tabs__link> Features </a> </li> <li class=md-tabs__item> <a href=integration/ class=md-tabs__link> Integration </a> </li> <li class=md-tabs__item> <a href=api/basic_json/ class=md-tabs__link> API Documentation </a> </li> <li class=md-tabs__item> <a href=community/ class=md-tabs__link> Community </a> </li> </ul> </div> </nav> <main class=md-main data-md-component=main> <div class="md-main__inner md-grid"> <div class="md-sidebar md-sidebar--primary" data-md-component=sidebar data-md-type=navigation> <div class=md-sidebar__scrollwrap> <div class=md-sidebar__inner> <nav class="md-nav md-nav--primary md-nav--lifted" aria-label=Navigation data-md-level=0> <label class=md-nav__title for=__drawer> <a href=. title="JSON for Modern C++" class="md-nav__button md-logo" aria-label="JSON for Modern C++" data-md-component=logo> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54"/></svg> </a> JSON for Modern C++ </label> <div class=md-nav__source> <a href="https://github.com/nlohmann/json" title="Go to repository" class="md-source" data-md-component="source"> <div class="md-source__icon md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </div> <div class=md-source__repository> nlohmann/json </div> </a> </div> <ul class=md-nav__list data-md-scrollfix> <li class="md-nav__item md-nav__item--active md-nav__item--section md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_1 checked> <div class="md-nav__link md-nav__container"> <a href=. class="md-nav__link md-nav__link--active"> <span class=md-ellipsis> Home </span> </a> <label class="md-nav__link md-nav__link--active" for=__nav_1 id=__nav_1_label tabindex> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_1_label aria-expanded=true> <label class=md-nav__title for=__nav_1> <span class="md-nav__icon md-icon"></span> Home </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=home/license/ class=md-nav__link> <span class=md-ellipsis> License </span> </a> </li> <li class=md-nav__item> <a href=home/faq/ class=md-nav__link> <span class=md-ellipsis> FAQ </span> </a> </li> <li class=md-nav__item> <a href=home/exceptions/ class=md-nav__link> <span class=md-ellipsis> Exceptions </span> </a> </li> <li class=md-nav__item> <a href=home/releases/ class=md-nav__link> <span class=md-ellipsis> Releases </span> </a> </li> <li class=md-nav__item> <a href=home/design_goals/ class=md-nav__link> <span class=md-ellipsis> Design goals </span> </a> </li> <li class=md-nav__item> <a href=home/architecture/ class=md-nav__link> <span class=md-ellipsis> Architecture </span> </a> </li> <li class=md-nav__item> <a href=home/customers/ class=md-nav__link> <span class=md-ellipsis> Customers </span> </a> </li> <li class=md-nav__item> <a href=home/sponsors/ class=md-nav__link> <span class=md-ellipsis> Sponsors </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2> <label class=md-nav__link for=__nav_2 id=__nav_2_label tabindex=0> <span class=md-ellipsis> Features </span> <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_2_label aria-expanded=false> <label class=md-nav__title for=__nav_2> <span class="md-nav__icon md-icon"></span> Features </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=features/arbitrary_types/ class=md-nav__link> <span class=md-ellipsis> Arbitrary Type Conversions </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_2> <div class="md-nav__link md-nav__container"> <a href=features/binary_formats/ class="md-nav__link "> <span class=md-ellipsis> Binary Formats </span> </a> <label class="md-nav__link " for=__nav_2_2 id=__nav_2_2_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_2_label aria-expanded=false> <label class=md-nav__title for=__nav_2_2> <span class="md-nav__icon md-icon"></span> Binary Formats </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=features/binary_formats/bjdata/ class=md-nav__link> <span class=md-ellipsis> BJData </span> </a> </li> <li class=md-nav__item> <a href=features/binary_formats/bson/ class=md-nav__link> <span class=md-ellipsis> BSON </span> </a> </li> <li class=md-nav__item> <a href=features/binary_formats/cbor/ class=md-nav__link> <span class=md-ellipsis> CBOR </span> </a> </li> <li class=md-nav__item> <a href=features/binary_formats/messagepack/ class=md-nav__link> <span class=md-ellipsis> MessagePack </span> </a> </li> <li class=md-nav__item> <a href=features/binary_formats/ubjson/ class=md-nav__link> <span class=md-ellipsis> UBJSON </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=features/binary_values/ class=md-nav__link> <span class=md-ellipsis> Binary Values </span> </a> </li> <li class=md-nav__item> <a href=features/comments/ class=md-nav__link> <span class=md-ellipsis> Comments </span> </a> </li> <li class=md-nav__item> <a href=features/trailing_commas/ class=md-nav__link> <span class=md-ellipsis> Trailing Commas </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_6> <div class="md-nav__link md-nav__container"> <a href=features/element_access/ class="md-nav__link "> <span class=md-ellipsis> Element Access </span> </a> <label class="md-nav__link " for=__nav_2_6 id=__nav_2_6_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_6_label aria-expanded=false> <label class=md-nav__title for=__nav_2_6> <span class="md-nav__icon md-icon"></span> Element Access </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=features/element_access/unchecked_access/ class=md-nav__link> <span class=md-ellipsis> Unchecked access: operator[] </span> </a> </li> <li class=md-nav__item> <a href=features/element_access/checked_access/ class=md-nav__link> <span class=md-ellipsis> Checked access: at </span> </a> </li> <li class=md-nav__item> <a href=features/element_access/default_value/ class=md-nav__link> <span class=md-ellipsis> Access with default value: value </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=features/iterators/ class=md-nav__link> <span class=md-ellipsis> Iterators </span> </a> </li> <li class=md-nav__item> <a href=features/json_pointer/ class=md-nav__link> <span class=md-ellipsis> JSON Pointer </span> </a> </li> <li class=md-nav__item> <a href=features/json_patch/ class=md-nav__link> <span class=md-ellipsis> JSON Patch and Diff </span> </a> </li> <li class=md-nav__item> <a href=features/merge_patch/ class=md-nav__link> <span class=md-ellipsis> JSON Merge Patch </span> </a> </li> <li class=md-nav__item> <a href=features/modules/ class=md-nav__link> <span class=md-ellipsis> Modules </span> </a> </li> <li class=md-nav__item> <a href=features/namespace/ class=md-nav__link> <span class=md-ellipsis> nlohmann Namespace </span> </a> </li> <li class=md-nav__item> <a href=features/object_order/ class=md-nav__link> <span class=md-ellipsis> Object Order </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_14> <div class="md-nav__link md-nav__container"> <a href=features/parsing/ class="md-nav__link "> <span class=md-ellipsis> Parsing </span> </a> <label class="md-nav__link " for=__nav_2_14 id=__nav_2_14_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_14_label aria-expanded=false> <label class=md-nav__title for=__nav_2_14> <span class="md-nav__icon md-icon"></span> Parsing </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=features/parsing/json_lines/ class=md-nav__link> <span class=md-ellipsis> JSON Lines </span> </a> </li> <li class=md-nav__item> <a href=features/parsing/parse_exceptions/ class=md-nav__link> <span class=md-ellipsis> Parsing and Exceptions </span> </a> </li> <li class=md-nav__item> <a href=features/parsing/parser_callbacks/ class=md-nav__link> <span class=md-ellipsis> Parser Callbacks </span> </a> </li> <li class=md-nav__item> <a href=features/parsing/sax_interface/ class=md-nav__link> <span class=md-ellipsis> SAX Interface </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=features/assertions/ class=md-nav__link> <span class=md-ellipsis> Runtime Assertions </span> </a> </li> <li class=md-nav__item> <a href=features/enum_conversion/ class=md-nav__link> <span class=md-ellipsis> Specializing enum conversion </span> </a> </li> <li class=md-nav__item> <a href=features/macros/ class=md-nav__link> <span class=md-ellipsis> Supported Macros </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_18> <div class="md-nav__link md-nav__container"> <a href=features/types/ class="md-nav__link "> <span class=md-ellipsis> Types </span> </a> <label class="md-nav__link " for=__nav_2_18 id=__nav_2_18_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_18_label aria-expanded=false> <label class=md-nav__title for=__nav_2_18> <span class="md-nav__icon md-icon"></span> Types </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=features/types/number_handling/ class=md-nav__link> <span class=md-ellipsis> Number Handling </span> </a> </li> </ul> </nav> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_3> <div class="md-nav__link md-nav__container"> <a href=integration/ class="md-nav__link "> <span class=md-ellipsis> Integration </span> </a> <label class="md-nav__link " for=__nav_3 id=__nav_3_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_3_label aria-expanded=false> <label class=md-nav__title for=__nav_3> <span class="md-nav__icon md-icon"></span> Integration </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=integration/migration_guide/ class=md-nav__link> <span class=md-ellipsis> Migration Guide </span> </a> </li> <li class=md-nav__item> <a href=integration/cmake/ class=md-nav__link> <span class=md-ellipsis> CMake </span> </a> </li> <li class=md-nav__item> <a href=integration/package_managers/ class=md-nav__link> <span class=md-ellipsis> Package Managers </span> </a> </li> <li class=md-nav__item> <a href=integration/pkg-config/ class=md-nav__link> <span class=md-ellipsis> Pkg-config </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4> <label class=md-nav__link for=__nav_4 id=__nav_4_label tabindex=0> <span class=md-ellipsis> API Documentation </span> <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_4_label aria-expanded=false> <label class=md-nav__title for=__nav_4> <span class="md-nav__icon md-icon"></span> API Documentation </label> <ul class=md-nav__list data-md-scrollfix> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_1> <div class="md-nav__link md-nav__container"> <a href=api/basic_json/ class="md-nav__link "> <span class=md-ellipsis> basic_json </span> </a> <label class="md-nav__link " for=__nav_4_1 id=__nav_4_1_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_1_label aria-expanded=false> <label class=md-nav__title for=__nav_4_1> <span class="md-nav__icon md-icon"></span> basic_json </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=api/basic_json/basic_json/ class=md-nav__link> <span class=md-ellipsis> (Constructor) </span> </a> </li> <li class=md-nav__item> <a href=api/basic_json/~basic_json/ class=md-nav__link> <span class=md-ellipsis> (Destructor) </span> </a> </li> <li class=md-nav__item> <a href=api/basic_json/accept/ class=md-nav__link> <span class=md-ellipsis> accept </span> </a> </li> <li class=md-nav__item> <a href=api/basic_json/array/ class=md-nav__link> <span class=md-ellipsis> array </span> </a> </li> <li class=md-nav__item> <a href=api/basic_json/array_t/ class=md-nav__link> <span class=md-ellipsis> array_t </span> </a> </li> <li class=md-nav__item> <a href=api/basic_json/at/ class=md-nav__link> <span class=md-ellipsis> at </span> </a> </li> <li class=md-nav__item> <a href=api/basic_json/back/ class=md-nav__link> <span class=md-ellipsis> back </span> </a> </li> <li class=md-nav__item> <a href=api/basic_json/begin/ class=md-nav__link> <span class=md-ellipsis> begin </span> </a> </li> <li class=md-nav__item> <a href=api/basic_json/binary/ class=md-nav__link> <span class=md-ellipsis> binary </span> </a> </li> <li class=md-nav__item> <a href=api/basic_json/binary_t/ class=md-nav__link> <span class=md-ellipsis> binary_t </span> </a> </li> <li class=md-nav__item> <a href=api/basic_json/boolean_t/ class=md-nav__link> <span class=md-ellipsis> boolean_t </span> </a> </li> <li class=md-nav__item> <a href=api/basic_json/cbegin/ class=md-nav__link> <span class=md-ellipsis> cbegin </span> </a> </li> <li class=md-nav__item> <a href=api/basic_json/cbor_tag_handler_t/ class=md-nav__link> <span class=md-ellipsis> cbor_tag_handler_t </span> </a> </li> <li class=md-nav__item> <a href=api/basic_json/cend/ class=md-nav__link> <span class=md-ellipsis> cend </span> </a> </li> <li class=md-nav__item> <a href=api/basic_json/clear/ class=md-nav__link> <span class=md-ellipsis> clear </span> </a> </li> <li class=md-nav__item> <a href=api/basic_json/contains/ class=md-nav__link> <span class=md-ellipsis> contains </span> </a> </li> <li class=md-nav__item> <a href=api/basic_json/count/ class=md-nav__link> <span class=md-ellipsis> count </span> </a> </li> <li class=md-nav__item> <a href=api/basic_json/crbegin/ class=md-nav__link> <span class=md-ellipsis> crbegin </span> </a> </li> <li class=md-nav__item> <a href=api/basic_json/crend/ class=md-nav__link> <span class=md-ellipsis> crend </span> </a> </li> <li class=md-nav__item> <a href=api/basic_json/default_object_comparator_t/ class=md-nav__link> <span class=md-ellipsis> default_object_comparator_t </span> </a> </li> <li class=md-nav__item> <a href=api/basic_json/diff/ class=md-nav__link> <span class=md-ellipsis> diff </span> </a> </li> <li class=md-nav__item> <a href=api/basic_json/dump/ class=md-nav__link> <span class=md-ellipsis> dump </span> </a> </li> <li class=md-nav__item> <a href=api/basic_json/emplace/ class=md-nav__link> <span class=md-ellipsis> emplace </span> </a> </li> <li class=md-nav__item> <a href=api/basic_json/emplace_back/ class=md-nav__link> <span class=md-ellipsis> emplace_back </span> </a> </li> <li class=md-nav__item> <a href=api/basic_json/empty/ class=md-nav__link> <span class=md-ellipsis> empty </span> </a> </li> <li class=md-nav__item> <a href=api/basic_json/end/ class=md-nav__link> <span class=md-ellipsis> end </span> </a> </li> <li class=md-nav__item> <a href=api/basic_json/end_pos/ class=md-nav__link> <span class=md-ellipsis> end_pos </span> </a> </li> <li class=md-nav__item> <a href=api/basic_json/erase/ class=md-nav__link> <span class=md-ellipsis> erase </span> </a> </li> <li class=md-nav__item> <a href=api/basic_json/error_handler_t/ class=md-nav__link> <span class=md-ellipsis> error_handler_t </span> </a> </li> <li class=md-nav__item> <a href=api/basic_json/exception/ class=md-nav__link> <span class=md-ellipsis> exception </span> </a> </li> <li class=md-nav__item> <a href=api/basic_json/find/ class=md-nav__link> <span class=md-ellipsis> find </span> </a> </li> <li class=md-nav__item> <a href=api/basic_json/flatten/ class=md-nav__link> <span class=md-ellipsis> flatten </span> </a> </li> <li class=md-nav__item> <a href=api/basic_json/from_bjdata/ class=md-nav__link> <span class=md-ellipsis> from_bjdata </span> </a> </li> <li class=md-nav__item> <a href=api/basic_json/from_bson/ class=md-nav__link> <span class=md-ellipsis> from_bson </span> </a> </li> <li class=md-nav__item> <a href=api/basic_json/from_cbor/ class=md-nav__link> <span class=md-ellipsis> from_cbor </span> </a> </li> <li class=md-nav__item> <a href=api/basic_json/from_msgpack/ class=md-nav__link> <span class=md-ellipsis> from_msgpack </span> </a> </li> <li class=md-nav__item> <a href=api/basic_json/from_ubjson/ class=md-nav__link> <span class=md-ellipsis> from_ubjson </span> </a> </li> <li class=md-nav__item> <a href=api/basic_json/front/ class=md-nav__link> <span class=md-ellipsis> front </span> </a> </li> <li class=md-nav__item> <a href=api/basic_json/get/ class=md-nav__link> <span class=md-ellipsis> get </span> </a> </li> <li class=md-nav__item> <a href=api/basic_json/get_allocator/ class=md-nav__link> <span class=md-ellipsis> get_allocator </span> </a> </li> <li class=md-nav__item> <a href=api/basic_json/get_binary/ class=md-nav__link> <span class=md-ellipsis> get_binary </span> </a> </li> <li class=md-nav__item> <a href=api/basic_json/get_ptr/ class=md-nav__link> <span class=md-ellipsis> get_ptr </span> </a> </li> <li class=md-nav__item> <a href=api/basic_json/get_ref/ class=md-nav__link> <span class=md-ellipsis> get_ref </span> </a> </li> <li class=md-nav__item> <a href=api/basic_json/get_to/ class=md-nav__link> <span class=md-ellipsis> get_to </span> </a> </li> <li class=md-nav__item> <a href=api/basic_json/std_hash/ class=md-nav__link> <span class=md-ellipsis> std::hash&lt;basic_json&gt; </span> </a> </li> <li class=md-nav__item> <a href=api/basic_json/input_format_t/ class=md-nav__link> <span class=md-ellipsis> input_format_t </span> </a> </li> <li class=md-nav__item> <a href=api/basic_json/insert/ class=md-nav__link> <span class=md-ellipsis> insert </span> </a> </li> <li class=md-nav__item> <a href=api/basic_json/invalid_iterator/ class=md-nav__link> <span class=md-ellipsis> invalid_iterator </span> </a> </li> <li class=md-nav__item> <a href=api/basic_json/is_array/ class=md-nav__link> <span class=md-ellipsis> is_array </span> </a> </li> <li class=md-nav__item> <a href=api/basic_json/is_binary/ class=md-nav__link> <span class=md-ellipsis> is_binary </span> </a> </li> <li class=md-nav__item> <a href=api/basic_json/is_boolean/ class=md-nav__link> <span class=md-ellipsis> is_boolean </span> </a> </li> <li class=md-nav__item> <a href=api/basic_json/is_discarded/ class=md-nav__link> <span class=md-ellipsis> is_discarded </span> </a> </li> <li class=md-nav__item> <a href=api/basic_json/is_null/ class=md-nav__link> <span class=md-ellipsis> is_null </span> </a> </li> <li class=md-nav__item> <a href=api/basic_json/is_number/ class=md-nav__link> <span class=md-ellipsis> is_number </span> </a> </li> <li class=md-nav__item> <a href=api/basic_json/is_number_float/ class=md-nav__link> <span class=md-ellipsis> is_number_float </span> </a> </li> <li class=md-nav__item> <a href=api/basic_json/is_number_integer/ class=md-nav__link> <span class=md-ellipsis> is_number_integer </span> </a> </li> <li class=md-nav__item> <a href=api/basic_json/is_number_unsigned/ class=md-nav__link> <span class=md-ellipsis> is_number_unsigned </span> </a> </li> <li class=md-nav__item> <a href=api/basic_json/is_object/ class=md-nav__link> <span class=md-ellipsis> is_object </span> </a> </li> <li class=md-nav__item> <a href=api/basic_json/is_primitive/ class=md-nav__link> <span class=md-ellipsis> is_primitive </span> </a> </li> <li class=md-nav__item> <a href=api/basic_json/is_string/ class=md-nav__link> <span class=md-ellipsis> is_string </span> </a> </li> <li class=md-nav__item> <a href=api/basic_json/is_structured/ class=md-nav__link> <span class=md-ellipsis> is_structured </span> </a> </li> <li class=md-nav__item> <a href=api/basic_json/items/ class=md-nav__link> <span class=md-ellipsis> items </span> </a> </li> <li class=md-nav__item> <a href=api/basic_json/json_base_class_t/ class=md-nav__link> <span class=md-ellipsis> json_base_class_t </span> </a> </li> <li class=md-nav__item> <a href=api/basic_json/json_serializer/ class=md-nav__link> <span class=md-ellipsis> json_serializer </span> </a> </li> <li class=md-nav__item> <a href=api/basic_json/max_size/ class=md-nav__link> <span class=md-ellipsis> max_size </span> </a> </li> <li class=md-nav__item> <a href=api/basic_json/meta/ class=md-nav__link> <span class=md-ellipsis> meta </span> </a> </li> <li class=md-nav__item> <a href=api/basic_json/merge_patch/ class=md-nav__link> <span class=md-ellipsis> merge_patch </span> </a> </li> <li class=md-nav__item> <a href=api/basic_json/number_float_t/ class=md-nav__link> <span class=md-ellipsis> number_float_t </span> </a> </li> <li class=md-nav__item> <a href=api/basic_json/number_integer_t/ class=md-nav__link> <span class=md-ellipsis> number_integer_t </span> </a> </li> <li class=md-nav__item> <a href=api/basic_json/number_unsigned_t/ class=md-nav__link> <span class=md-ellipsis> number_unsigned_t </span> </a> </li> <li class=md-nav__item> <a href=api/basic_json/object/ class=md-nav__link> <span class=md-ellipsis> object </span> </a> </li> <li class=md-nav__item> <a href=api/basic_json/object_comparator_t/ class=md-nav__link> <span class=md-ellipsis> object_comparator_t </span> </a> </li> <li class=md-nav__item> <a href=api/basic_json/object_t/ class=md-nav__link> <span class=md-ellipsis> object_t </span> </a> </li> <li class=md-nav__item> <a href=api/basic_json/operator_ValueType/ class=md-nav__link> <span class=md-ellipsis> operator ValueType </span> </a> </li> <li class=md-nav__item> <a href=api/basic_json/operator_value_t/ class=md-nav__link> <span class=md-ellipsis> operator value_t </span> </a> </li> <li class=md-nav__item> <a href=api/basic_json/operator%5B%5D/ class=md-nav__link> <span class=md-ellipsis> operator[] </span> </a> </li> <li class=md-nav__item> <a href=api/basic_json/operator%3D/ class=md-nav__link> <span class=md-ellipsis> operator= </span> </a> </li> <li class=md-nav__item> <a href=api/basic_json/operator%2B%3D/ class=md-nav__link> <span class=md-ellipsis> operator+= </span> </a> </li> <li class=md-nav__item> <a href=api/basic_json/operator_eq/ class=md-nav__link> <span class=md-ellipsis> operator== </span> </a> </li> <li class=md-nav__item> <a href=api/basic_json/operator_ne/ class=md-nav__link> <span class=md-ellipsis> operator!= </span> </a> </li> <li class=md-nav__item> <a href=api/basic_json/operator_lt/ class=md-nav__link> <span class=md-ellipsis> operator< </span> </a> </li> <li class=md-nav__item> <a href=api/basic_json/operator_gt/ class=md-nav__link> <span class=md-ellipsis> operator> </span> </a> </li> <li class=md-nav__item> <a href=api/basic_json/operator_le/ class=md-nav__link> <span class=md-ellipsis> operator<= </span> </a> </li> <li class=md-nav__item> <a href=api/basic_json/operator_ge/ class=md-nav__link> <span class=md-ellipsis> operator>= </span> </a> </li> <li class=md-nav__item> <a href=api/basic_json/operator_spaceship/ class=md-nav__link> <span class=md-ellipsis> operator<=> </span> </a> </li> <li class=md-nav__item> <a href=api/basic_json/out_of_range/ class=md-nav__link> <span class=md-ellipsis> out_of_range </span> </a> </li> <li class=md-nav__item> <a href=api/basic_json/other_error/ class=md-nav__link> <span class=md-ellipsis> other_error </span> </a> </li> <li class=md-nav__item> <a href=api/basic_json/parse/ class=md-nav__link> <span class=md-ellipsis> parse </span> </a> </li> <li class=md-nav__item> <a href=api/basic_json/parse_error/ class=md-nav__link> <span class=md-ellipsis> parse_error </span> </a> </li> <li class=md-nav__item> <a href=api/basic_json/parse_event_t/ class=md-nav__link> <span class=md-ellipsis> parse_event_t </span> </a> </li> <li class=md-nav__item> <a href=api/basic_json/parser_callback_t/ class=md-nav__link> <span class=md-ellipsis> parser_callback_t </span> </a> </li> <li class=md-nav__item> <a href=api/basic_json/patch/ class=md-nav__link> <span class=md-ellipsis> patch </span> </a> </li> <li class=md-nav__item> <a href=api/basic_json/patch_inplace/ class=md-nav__link> <span class=md-ellipsis> patch_inplace </span> </a> </li> <li class=md-nav__item> <a href=api/basic_json/push_back/ class=md-nav__link> <span class=md-ellipsis> push_back </span> </a> </li> <li class=md-nav__item> <a href=api/basic_json/rbegin/ class=md-nav__link> <span class=md-ellipsis> rbegin </span> </a> </li> <li class=md-nav__item> <a href=api/basic_json/rend/ class=md-nav__link> <span class=md-ellipsis> rend </span> </a> </li> <li class=md-nav__item> <a href=api/basic_json/sax_parse/ class=md-nav__link> <span class=md-ellipsis> sax_parse </span> </a> </li> <li class=md-nav__item> <a href=api/basic_json/size/ class=md-nav__link> <span class=md-ellipsis> size </span> </a> </li> <li class=md-nav__item> <a href=api/basic_json/start_pos/ class=md-nav__link> <span class=md-ellipsis> start_pos </span> </a> </li> <li class=md-nav__item> <a href=api/basic_json/string_t/ class=md-nav__link> <span class=md-ellipsis> string_t </span> </a> </li> <li class=md-nav__item> <a href=api/basic_json/swap/ class=md-nav__link> <span class=md-ellipsis> swap </span> </a> </li> <li class=md-nav__item> <a href=api/basic_json/std_swap/ class=md-nav__link> <span class=md-ellipsis> std::swap&lt;basic_json&gt; </span> </a> </li> <li class=md-nav__item> <a href=api/basic_json/to_bjdata/ class=md-nav__link> <span class=md-ellipsis> to_bjdata </span> </a> </li> <li class=md-nav__item> <a href=api/basic_json/to_bson/ class=md-nav__link> <span class=md-ellipsis> to_bson </span> </a> </li> <li class=md-nav__item> <a href=api/basic_json/to_cbor/ class=md-nav__link> <span class=md-ellipsis> to_cbor </span> </a> </li> <li class=md-nav__item> <a href=api/basic_json/to_msgpack/ class=md-nav__link> <span class=md-ellipsis> to_msgpack </span> </a> </li> <li class=md-nav__item> <a href=api/basic_json/to_string/ class=md-nav__link> <span class=md-ellipsis> to_string </span> </a> </li> <li class=md-nav__item> <a href=api/basic_json/to_ubjson/ class=md-nav__link> <span class=md-ellipsis> to_ubjson </span> </a> </li> <li class=md-nav__item> <a href=api/basic_json/type/ class=md-nav__link> <span class=md-ellipsis> type </span> </a> </li> <li class=md-nav__item> <a href=api/basic_json/type_error/ class=md-nav__link> <span class=md-ellipsis> type_error </span> </a> </li> <li class=md-nav__item> <a href=api/basic_json/type_name/ class=md-nav__link> <span class=md-ellipsis> type_name </span> </a> </li> <li class=md-nav__item> <a href=api/basic_json/unflatten/ class=md-nav__link> <span class=md-ellipsis> unflatten </span> </a> </li> <li class=md-nav__item> <a href=api/basic_json/update/ class=md-nav__link> <span class=md-ellipsis> update </span> </a> </li> <li class=md-nav__item> <a href=api/basic_json/value/ class=md-nav__link> <span class=md-ellipsis> value </span> </a> </li> <li class=md-nav__item> <a href=api/basic_json/value_t/ class=md-nav__link> <span class=md-ellipsis> value_t </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_2> <div class="md-nav__link md-nav__container"> <a href=api/byte_container_with_subtype/ class="md-nav__link "> <span class=md-ellipsis> byte_container_with_subtype </span> </a> <label class="md-nav__link " for=__nav_4_2 id=__nav_4_2_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_2_label aria-expanded=false> <label class=md-nav__title for=__nav_4_2> <span class="md-nav__icon md-icon"></span> byte_container_with_subtype </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=api/byte_container_with_subtype/byte_container_with_subtype/ class=md-nav__link> <span class=md-ellipsis> (constructor) </span> </a> </li> <li class=md-nav__item> <a href=api/byte_container_with_subtype/clear_subtype/ class=md-nav__link> <span class=md-ellipsis> clear_subtype </span> </a> </li> <li class=md-nav__item> <a href=api/byte_container_with_subtype/has_subtype/ class=md-nav__link> <span class=md-ellipsis> has_subtype </span> </a> </li> <li class=md-nav__item> <a href=api/byte_container_with_subtype/set_subtype/ class=md-nav__link> <span class=md-ellipsis> set_subtype </span> </a> </li> <li class=md-nav__item> <a href=api/byte_container_with_subtype/subtype/ class=md-nav__link> <span class=md-ellipsis> subtype </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_3> <div class="md-nav__link md-nav__container"> <a href=api/adl_serializer/ class="md-nav__link "> <span class=md-ellipsis> adl_serializer </span> </a> <label class="md-nav__link " for=__nav_4_3 id=__nav_4_3_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_3_label aria-expanded=false> <label class=md-nav__title for=__nav_4_3> <span class="md-nav__icon md-icon"></span> adl_serializer </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=api/adl_serializer/from_json/ class=md-nav__link> <span class=md-ellipsis> from_json </span> </a> </li> <li class=md-nav__item> <a href=api/adl_serializer/to_json/ class=md-nav__link> <span class=md-ellipsis> to_json </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=api/json/ class=md-nav__link> <span class=md-ellipsis> json </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_5> <div class="md-nav__link md-nav__container"> <a href=api/json_pointer/ class="md-nav__link "> <span class=md-ellipsis> json_pointer </span> </a> <label class="md-nav__link " for=__nav_4_5 id=__nav_4_5_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_5_label aria-expanded=false> <label class=md-nav__title for=__nav_4_5> <span class="md-nav__icon md-icon"></span> json_pointer </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=api/json_pointer/json_pointer/ class=md-nav__link> <span class=md-ellipsis> (Constructor) </span> </a> </li> <li class=md-nav__item> <a href=api/json_pointer/back/ class=md-nav__link> <span class=md-ellipsis> back </span> </a> </li> <li class=md-nav__item> <a href=api/json_pointer/empty/ class=md-nav__link> <span class=md-ellipsis> empty </span> </a> </li> <li class=md-nav__item> <a href=api/json_pointer/front/ class=md-nav__link> <span class=md-ellipsis> front </span> </a> </li> <li class=md-nav__item> <a href=api/json_pointer/operator_string_t/ class=md-nav__link> <span class=md-ellipsis> operator string_t </span> </a> </li> <li class=md-nav__item> <a href=api/json_pointer/operator_eq/ class=md-nav__link> <span class=md-ellipsis> operator== </span> </a> </li> <li class=md-nav__item> <a href=api/json_pointer/operator_ne/ class=md-nav__link> <span class=md-ellipsis> operator!= </span> </a> </li> <li class=md-nav__item> <a href=api/json_pointer/operator_slash/ class=md-nav__link> <span class=md-ellipsis> operator/ </span> </a> </li> <li class=md-nav__item> <a href=api/json_pointer/operator_slasheq/ class=md-nav__link> <span class=md-ellipsis> operator/= </span> </a> </li> <li class=md-nav__item> <a href=api/json_pointer/parent_pointer/ class=md-nav__link> <span class=md-ellipsis> parent_pointer </span> </a> </li> <li class=md-nav__item> <a href=api/json_pointer/pop_back/ class=md-nav__link> <span class=md-ellipsis> pop_back </span> </a> </li> <li class=md-nav__item> <a href=api/json_pointer/pop_front/ class=md-nav__link> <span class=md-ellipsis> pop_front </span> </a> </li> <li class=md-nav__item> <a href=api/json_pointer/push_back/ class=md-nav__link> <span class=md-ellipsis> push_back </span> </a> </li> <li class=md-nav__item> <a href=api/json_pointer/push_front/ class=md-nav__link> <span class=md-ellipsis> push_front </span> </a> </li> <li class=md-nav__item> <a href=api/json_pointer/string_t/ class=md-nav__link> <span class=md-ellipsis> string_t </span> </a> </li> <li class=md-nav__item> <a href=api/json_pointer/to_string/ class=md-nav__link> <span class=md-ellipsis> to_string </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_6> <div class="md-nav__link md-nav__container"> <a href=api/json_sax/ class="md-nav__link "> <span class=md-ellipsis> json_sax </span> </a> <label class="md-nav__link " for=__nav_4_6 id=__nav_4_6_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_6_label aria-expanded=false> <label class=md-nav__title for=__nav_4_6> <span class="md-nav__icon md-icon"></span> json_sax </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=api/json_sax/binary/ class=md-nav__link> <span class=md-ellipsis> binary </span> </a> </li> <li class=md-nav__item> <a href=api/json_sax/boolean/ class=md-nav__link> <span class=md-ellipsis> boolean </span> </a> </li> <li class=md-nav__item> <a href=api/json_sax/end_array/ class=md-nav__link> <span class=md-ellipsis> end_array </span> </a> </li> <li class=md-nav__item> <a href=api/json_sax/end_object/ class=md-nav__link> <span class=md-ellipsis> end_object </span> </a> </li> <li class=md-nav__item> <a href=api/json_sax/key/ class=md-nav__link> <span class=md-ellipsis> key </span> </a> </li> <li class=md-nav__item> <a href=api/json_sax/null/ class=md-nav__link> <span class=md-ellipsis> null </span> </a> </li> <li class=md-nav__item> <a href=api/json_sax/number_float/ class=md-nav__link> <span class=md-ellipsis> number_float </span> </a> </li> <li class=md-nav__item> <a href=api/json_sax/number_integer/ class=md-nav__link> <span class=md-ellipsis> number_integer </span> </a> </li> <li class=md-nav__item> <a href=api/json_sax/number_unsigned/ class=md-nav__link> <span class=md-ellipsis> number_unsigned </span> </a> </li> <li class=md-nav__item> <a href=api/json_sax/parse_error/ class=md-nav__link> <span class=md-ellipsis> parse_error </span> </a> </li> <li class=md-nav__item> <a href=api/json_sax/start_array/ class=md-nav__link> <span class=md-ellipsis> start_array </span> </a> </li> <li class=md-nav__item> <a href=api/json_sax/start_object/ class=md-nav__link> <span class=md-ellipsis> start_object </span> </a> </li> <li class=md-nav__item> <a href=api/json_sax/string/ class=md-nav__link> <span class=md-ellipsis> string </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=api/operator_ltlt/ class=md-nav__link> <span class=md-ellipsis> operator<<(basic_json), operator<<(json_pointer) </span> </a> </li> <li class=md-nav__item> <a href=api/operator_gtgt/ class=md-nav__link> <span class=md-ellipsis> operator>>(basic_json) </span> </a> </li> <li class=md-nav__item> <a href=api/operator_literal_json/ class=md-nav__link> <span class=md-ellipsis> operator""_json </span> </a> </li> <li class=md-nav__item> <a href=api/operator_literal_json_pointer/ class=md-nav__link> <span class=md-ellipsis> operator""_json_pointer </span> </a> </li> <li class=md-nav__item> <a href=api/ordered_json/ class=md-nav__link> <span class=md-ellipsis> ordered_json </span> </a> </li> <li class=md-nav__item> <a href=api/ordered_map/ class=md-nav__link> <span class=md-ellipsis> ordered_map </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_13> <div class="md-nav__link md-nav__container"> <a href=api/macros/ class="md-nav__link "> <span class=md-ellipsis> macros </span> </a> <label class="md-nav__link " for=__nav_4_13 id=__nav_4_13_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_13_label aria-expanded=false> <label class=md-nav__title for=__nav_4_13> <span class="md-nav__icon md-icon"></span> macros </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=api/macros/json_assert/ class=md-nav__link> <span class=md-ellipsis> JSON_ASSERT </span> </a> </li> <li class=md-nav__item> <a href=api/macros/json_brace_init_copy_semantics/ class=md-nav__link> <span class=md-ellipsis> JSON_BRACE_INIT_COPY_SEMANTICS </span> </a> </li> <li class=md-nav__item> <a href=api/macros/json_throw_user/ class=md-nav__link> <span class=md-ellipsis> JSON_CATCH_USER, JSON_THROW_USER, JSON_TRY_USER </span> </a> </li> <li class=md-nav__item> <a href=api/macros/json_diagnostics/ class=md-nav__link> <span class=md-ellipsis> JSON_DIAGNOSTICS </span> </a> </li> <li class=md-nav__item> <a href=api/macros/json_diagnostic_positions/ class=md-nav__link> <span class=md-ellipsis> JSON_DIAGNOSTIC_POSITIONS </span> </a> </li> <li class=md-nav__item> <a href=api/macros/json_disable_enum_serialization/ class=md-nav__link> <span class=md-ellipsis> JSON_DISABLE_ENUM_SERIALIZATION </span> </a> </li> <li class=md-nav__item> <a href=api/macros/json_has_cpp_11/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_CPP_11, JSON_HAS_CPP_14, JSON_HAS_CPP_17, JSON_HAS_CPP_20 </span> </a> </li> <li class=md-nav__item> <a href=api/macros/json_has_filesystem/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_EXPERIMENTAL_FILESYSTEM, JSON_HAS_FILESYSTEM </span> </a> </li> <li class=md-nav__item> <a href=api/macros/json_has_ranges/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_RANGES </span> </a> </li> <li class=md-nav__item> <a href=api/macros/json_has_static_rtti/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_STATIC_RTTI </span> </a> </li> <li class=md-nav__item> <a href=api/macros/json_has_three_way_comparison/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_THREE_WAY_COMPARISON </span> </a> </li> <li class=md-nav__item> <a href=api/macros/json_noexception/ class=md-nav__link> <span class=md-ellipsis> JSON_NOEXCEPTION </span> </a> </li> <li class=md-nav__item> <a href=api/macros/json_no_io/ class=md-nav__link> <span class=md-ellipsis> JSON_NO_IO </span> </a> </li> <li class=md-nav__item> <a href=api/macros/json_skip_library_version_check/ class=md-nav__link> <span class=md-ellipsis> JSON_SKIP_LIBRARY_VERSION_CHECK </span> </a> </li> <li class=md-nav__item> <a href=api/macros/json_skip_unsupported_compiler_check/ class=md-nav__link> <span class=md-ellipsis> JSON_SKIP_UNSUPPORTED_COMPILER_CHECK </span> </a> </li> <li class=md-nav__item> <a href=api/macros/json_use_global_udls/ class=md-nav__link> <span class=md-ellipsis> JSON_USE_GLOBAL_UDLS </span> </a> </li> <li class=md-nav__item> <a href=api/macros/json_use_implicit_conversions/ class=md-nav__link> <span class=md-ellipsis> JSON_USE_IMPLICIT_CONVERSIONS </span> </a> </li> <li class=md-nav__item> <a href=api/macros/json_use_legacy_discarded_value_comparison/ class=md-nav__link> <span class=md-ellipsis> JSON_USE_LEGACY_DISCARDED_VALUE_COMPARISON </span> </a> </li> <li class=md-nav__item> <a href=api/macros/nlohmann_define_derived_type/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_ONLY_SERIALIZE, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE </span> </a> </li> <li class=md-nav__item> <a href=api/macros/nlohmann_define_type_intrusive/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_TYPE_INTRUSIVE, NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_TYPE_INTRUSIVE_ONLY_SERIALIZE </span> </a> </li> <li class=md-nav__item> <a href=api/macros/nlohmann_define_type_non_intrusive/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE </span> </a> </li> <li class=md-nav__item> <a href=api/macros/nlohmann_define_type_with_names/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_TYPE_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES </span> </a> </li> <li class=md-nav__item> <a href=api/macros/nlohmann_json_namespace/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_NAMESPACE </span> </a> </li> <li class=md-nav__item> <a href=api/macros/nlohmann_json_namespace_begin/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_NAMESPACE_BEGIN, NLOHMANN_JSON_NAMESPACE_END </span> </a> </li> <li class=md-nav__item> <a href=api/macros/nlohmann_json_namespace_no_version/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_NAMESPACE_NO_VERSION </span> </a> </li> <li class=md-nav__item> <a href=api/macros/nlohmann_json_serialize_enum/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_SERIALIZE_ENUM </span> </a> </li> <li class=md-nav__item> <a href=api/macros/nlohmann_json_serialize_enum_strict/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_SERIALIZE_ENUM_STRICT </span> </a> </li> <li class=md-nav__item> <a href=api/macros/nlohmann_json_version_major/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_VERSION_MAJOR, NLOHMANN_JSON_VERSION_MINOR, NLOHMANN_JSON_VERSION_PATCH </span> </a> </li> </ul> </nav> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_5> <div class="md-nav__link md-nav__container"> <a href=community/ class="md-nav__link "> <span class=md-ellipsis> Community </span> </a> <label class="md-nav__link " for=__nav_5 id=__nav_5_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_5_label aria-expanded=false> <label class=md-nav__title for=__nav_5> <span class="md-nav__icon md-icon"></span> Community </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=community/code_of_conduct/ class=md-nav__link> <span class=md-ellipsis> Code of Conduct </span> </a> </li> <li class=md-nav__item> <a href=community/contribution_guidelines/ class=md-nav__link> <span class=md-ellipsis> Contribution Guidelines </span> </a> </li> <li class=md-nav__item> <a href=community/quality_assurance/ class=md-nav__link> <span class=md-ellipsis> Quality assurance </span> </a> </li> <li class=md-nav__item> <a href=community/governance/ class=md-nav__link> <span class=md-ellipsis> Governance </span> </a> </li> <li class=md-nav__item> <a href=community/security_policy/ class=md-nav__link> <span class=md-ellipsis> Security Policy </span> </a> </li> </ul> </nav> </li> </ul> </nav> </div> </div> </div> <div class="md-sidebar md-sidebar--secondary" data-md-component=sidebar data-md-type=toc> <div class=md-sidebar__scrollwrap> <div class=md-sidebar__inner> <nav class="md-nav md-nav--secondary" aria-label="Table of contents"> </nav> </div> </div> </div> <div class=md-content data-md-component=content> <article class="md-content__inner md-typeset"> <a href="https://github.com/nlohmann/json/edit/develop/docs/mkdocs/docs/index.md" title="Edit this page" class="md-content__button md-icon" rel="edit"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M10 20H6V4h7v5h5v3.1l2-2V8l-6-6H6c-1.1 0-2 .9-2 2v16c0 1.1.9 2 2 2h4zm10.2-7c.1 0 .3.1.4.2l1.3 1.3c.2.2.2.6 0 .8l-1 1-2.1-2.1 1-1c.1-.1.2-.2.4-.2m0 3.9L14.1 23H12v-2.1l6.1-6.1z"/></svg> </a> <a href="https://github.com/nlohmann/json/raw/develop/docs/mkdocs/docs/index.md" title="View source of this page" class="md-content__button md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M17 18c.56 0 1 .44 1 1s-.44 1-1 1-1-.44-1-1 .44-1 1-1m0-3c-2.73 0-5.06 1.66-6 4 .94 2.34 3.27 4 6 4s5.06-1.66 6-4c-.94-2.34-3.27-4-6-4m0 6.5a2.5 2.5 0 0 1-2.5-2.5 2.5 2.5 0 0 1 2.5-2.5 2.5 2.5 0 0 1 2.5 2.5 2.5 2.5 0 0 1-2.5 2.5M9.27 20H6V4h7v5h5v4.07c.7.08 1.36.25 2 .49V8l-6-6H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h4.5a8.2 8.2 0 0 1-1.23-2"/></svg> </a> <h1 id=json-for-modern-c><abbr title="JavaScript Object Notation">JSON</abbr> for Modern C++<a class=headerlink href=#json-for-modern-c title="Permanent link">&para;</a></h1> <p><img alt src=images/json.gif></p> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 29, 2026 20:15:18 UTC">June 29, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": ".", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=assets/javascripts/bundle.79ae519e.min.js></script> <script src="assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
diff --git a/integration/cmake/index.html b/integration/cmake/index.html
index 55174a1..71fe77e 100644
--- a/integration/cmake/index.html
+++ b/integration/cmake/index.html
@@ -1,4 +1,4 @@
-<!doctype html><html lang=en class=no-js> <head><meta charset=utf-8><meta name=viewport content="width=device-width,initial-scale=1"><meta name=author content="Niels Lohmann"><link href="https://json.nlohmann.me/integration/cmake/" rel="canonical"><link href=../migration_guide/ rel=prev><link href=../package_managers/ rel=next><link rel=icon href=../../assets/images/favicon.png><meta name=generator content="mkdocs-1.6.1, mkdocs-material-9.7.6"><title>CMake - JSON for Modern C++</title><link rel=stylesheet href=../../assets/stylesheets/main.484c7ddc.min.css><link rel=stylesheet href=../../assets/stylesheets/palette.ab4e12ef.min.css><link rel="stylesheet" href="../../assets/external/fonts.googleapis.com/css.61a430c9.css"><style>:root{--md-text-font:"Roboto";--md-code-font:"JetBrains Mono"}</style><link rel=stylesheet href=../../css/custom.css><script>__md_scope=new URL("../..",location),__md_hash=e=>[...e].reduce(((e,_)=>(e<<5)-e+_.charCodeAt(0)),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script></head> <body dir=ltr data-md-color-scheme=default data-md-color-primary=indigo data-md-color-accent=indigo> <input class=md-toggle data-md-toggle=drawer type=checkbox id=__drawer autocomplete=off> <input class=md-toggle data-md-toggle=search type=checkbox id=__search autocomplete=off> <label class=md-overlay for=__drawer></label> <div data-md-component=skip> <a href=#cmake class=md-skip> Skip to content </a> </div> <div data-md-component=announce> </div> <header class=md-header data-md-component=header> <nav class="md-header__inner md-grid" aria-label=Header> <a href=../.. title="JSON for Modern C++" class="md-header__button md-logo" aria-label="JSON for Modern C++" data-md-component=logo> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54"/></svg> </a> <label class="md-header__button md-icon" for=__drawer> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M3 6h18v2H3zm0 5h18v2H3zm0 5h18v2H3z"/></svg> </label> <div class=md-header__title data-md-component=header-title> <div class=md-header__ellipsis> <div class=md-header__topic> <span class=md-ellipsis> JSON for Modern C++ </span> </div> <div class=md-header__topic data-md-component=header-topic> <span class=md-ellipsis> CMake </span> </div> </div> </div> <form class=md-header__option data-md-component=palette> <input class=md-option data-md-color-media="(prefers-color-scheme: light)" data-md-color-scheme=default data-md-color-primary=indigo data-md-color-accent=indigo aria-label="Switch to dark mode" type=radio name=__palette id=__palette_0> <label class="md-header__button md-icon" title="Switch to dark mode" for=__palette_1 hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a4 4 0 0 0-4 4 4 4 0 0 0 4 4 4 4 0 0 0 4-4 4 4 0 0 0-4-4m0 10a6 6 0 0 1-6-6 6 6 0 0 1 6-6 6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12z"/></svg> </label> <input class=md-option data-md-color-media="(prefers-color-scheme: dark)" data-md-color-scheme=slate data-md-color-primary=indigo data-md-color-accent=indigo aria-label="Switch to light mode" type=radio name=__palette id=__palette_1> <label class="md-header__button md-icon" title="Switch to light mode" for=__palette_0 hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 18c-.89 0-1.74-.2-2.5-.55C11.56 16.5 13 14.42 13 12s-1.44-4.5-3.5-5.45C10.26 6.2 11.11 6 12 6a6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12z"/></svg> </label> </form> <script>var palette=__md_get("__palette");if(palette&&palette.color){if("(prefers-color-scheme)"===palette.color.media){var media=matchMedia("(prefers-color-scheme: light)"),input=document.querySelector(media.matches?"[data-md-color-media='(prefers-color-scheme: light)']":"[data-md-color-media='(prefers-color-scheme: dark)']");palette.color.media=input.getAttribute("data-md-color-media"),palette.color.scheme=input.getAttribute("data-md-color-scheme"),palette.color.primary=input.getAttribute("data-md-color-primary"),palette.color.accent=input.getAttribute("data-md-color-accent")}for(var[key,value]of Object.entries(palette.color))document.body.setAttribute("data-md-color-"+key,value)}</script> <label class="md-header__button md-icon" for=__search> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg> </label> <div class=md-search data-md-component=search role=dialog> <label class=md-search__overlay for=__search></label> <div class=md-search__inner role=search> <form class=md-search__form name=search> <input type=text class=md-search__input name=query aria-label=Search placeholder=Search autocapitalize=off autocorrect=off autocomplete=off spellcheck=false data-md-component=search-query required> <label class="md-search__icon md-icon" for=__search> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11z"/></svg> </label> <nav class=md-search__options aria-label=Search> <button type=reset class="md-search__icon md-icon" title=Clear aria-label=Clear tabindex=-1> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z"/></svg> </button> </nav> </form> <div class=md-search__output> <div class=md-search__scrollwrap tabindex=0 data-md-scrollfix> <div class=md-search-result data-md-component=search-result> <div class=md-search-result__meta> Initializing search </div> <ol class=md-search-result__list role=presentation></ol> </div> </div> </div> </div> </div> <div class=md-header__source> <a href="https://github.com/nlohmann/json" title="Go to repository" class="md-source" data-md-component="source"> <div class="md-source__icon md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </div> <div class=md-source__repository> nlohmann/json </div> </a> </div> </nav> </header> <div class=md-container data-md-component=container> <nav class=md-tabs aria-label=Tabs data-md-component=tabs> <div class=md-grid> <ul class=md-tabs__list> <li class=md-tabs__item> <a href=../.. class=md-tabs__link> Home </a> </li> <li class=md-tabs__item> <a href=../../features/arbitrary_types/ class=md-tabs__link> Features </a> </li> <li class="md-tabs__item md-tabs__item--active"> <a href=../ class=md-tabs__link> Integration </a> </li> <li class=md-tabs__item> <a href=../../api/basic_json/ class=md-tabs__link> API Documentation </a> </li> <li class=md-tabs__item> <a href=../../community/ class=md-tabs__link> Community </a> </li> </ul> </div> </nav> <main class=md-main data-md-component=main> <div class="md-main__inner md-grid"> <div class="md-sidebar md-sidebar--primary" data-md-component=sidebar data-md-type=navigation> <div class=md-sidebar__scrollwrap> <div class=md-sidebar__inner> <nav class="md-nav md-nav--primary md-nav--lifted" aria-label=Navigation data-md-level=0> <label class=md-nav__title for=__drawer> <a href=../.. title="JSON for Modern C++" class="md-nav__button md-logo" aria-label="JSON for Modern C++" data-md-component=logo> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54"/></svg> </a> JSON for Modern C++ </label> <div class=md-nav__source> <a href="https://github.com/nlohmann/json" title="Go to repository" class="md-source" data-md-component="source"> <div class="md-source__icon md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </div> <div class=md-source__repository> nlohmann/json </div> </a> </div> <ul class=md-nav__list data-md-scrollfix> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_1> <div class="md-nav__link md-nav__container"> <a href=../.. class="md-nav__link "> <span class=md-ellipsis> Home </span> </a> <label class="md-nav__link " for=__nav_1 id=__nav_1_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_1_label aria-expanded=false> <label class=md-nav__title for=__nav_1> <span class="md-nav__icon md-icon"></span> Home </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../home/license/ class=md-nav__link> <span class=md-ellipsis> License </span> </a> </li> <li class=md-nav__item> <a href=../../home/faq/ class=md-nav__link> <span class=md-ellipsis> FAQ </span> </a> </li> <li class=md-nav__item> <a href=../../home/exceptions/ class=md-nav__link> <span class=md-ellipsis> Exceptions </span> </a> </li> <li class=md-nav__item> <a href=../../home/releases/ class=md-nav__link> <span class=md-ellipsis> Releases </span> </a> </li> <li class=md-nav__item> <a href=../../home/design_goals/ class=md-nav__link> <span class=md-ellipsis> Design goals </span> </a> </li> <li class=md-nav__item> <a href=../../home/architecture/ class=md-nav__link> <span class=md-ellipsis> Architecture </span> </a> </li> <li class=md-nav__item> <a href=../../home/customers/ class=md-nav__link> <span class=md-ellipsis> Customers </span> </a> </li> <li class=md-nav__item> <a href=../../home/sponsors/ class=md-nav__link> <span class=md-ellipsis> Sponsors </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2> <label class=md-nav__link for=__nav_2 id=__nav_2_label tabindex=0> <span class=md-ellipsis> Features </span> <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_2_label aria-expanded=false> <label class=md-nav__title for=__nav_2> <span class="md-nav__icon md-icon"></span> Features </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../features/arbitrary_types/ class=md-nav__link> <span class=md-ellipsis> Arbitrary Type Conversions </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_2> <div class="md-nav__link md-nav__container"> <a href=../../features/binary_formats/ class="md-nav__link "> <span class=md-ellipsis> Binary Formats </span> </a> <label class="md-nav__link " for=__nav_2_2 id=__nav_2_2_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_2_label aria-expanded=false> <label class=md-nav__title for=__nav_2_2> <span class="md-nav__icon md-icon"></span> Binary Formats </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../features/binary_formats/bjdata/ class=md-nav__link> <span class=md-ellipsis> BJData </span> </a> </li> <li class=md-nav__item> <a href=../../features/binary_formats/bson/ class=md-nav__link> <span class=md-ellipsis> BSON </span> </a> </li> <li class=md-nav__item> <a href=../../features/binary_formats/cbor/ class=md-nav__link> <span class=md-ellipsis> CBOR </span> </a> </li> <li class=md-nav__item> <a href=../../features/binary_formats/messagepack/ class=md-nav__link> <span class=md-ellipsis> MessagePack </span> </a> </li> <li class=md-nav__item> <a href=../../features/binary_formats/ubjson/ class=md-nav__link> <span class=md-ellipsis> UBJSON </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../features/binary_values/ class=md-nav__link> <span class=md-ellipsis> Binary Values </span> </a> </li> <li class=md-nav__item> <a href=../../features/comments/ class=md-nav__link> <span class=md-ellipsis> Comments </span> </a> </li> <li class=md-nav__item> <a href=../../features/trailing_commas/ class=md-nav__link> <span class=md-ellipsis> Trailing Commas </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_6> <div class="md-nav__link md-nav__container"> <a href=../../features/element_access/ class="md-nav__link "> <span class=md-ellipsis> Element Access </span> </a> <label class="md-nav__link " for=__nav_2_6 id=__nav_2_6_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_6_label aria-expanded=false> <label class=md-nav__title for=__nav_2_6> <span class="md-nav__icon md-icon"></span> Element Access </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../features/element_access/unchecked_access/ class=md-nav__link> <span class=md-ellipsis> Unchecked access: operator[] </span> </a> </li> <li class=md-nav__item> <a href=../../features/element_access/checked_access/ class=md-nav__link> <span class=md-ellipsis> Checked access: at </span> </a> </li> <li class=md-nav__item> <a href=../../features/element_access/default_value/ class=md-nav__link> <span class=md-ellipsis> Access with default value: value </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../features/iterators/ class=md-nav__link> <span class=md-ellipsis> Iterators </span> </a> </li> <li class=md-nav__item> <a href=../../features/json_pointer/ class=md-nav__link> <span class=md-ellipsis> JSON Pointer </span> </a> </li> <li class=md-nav__item> <a href=../../features/json_patch/ class=md-nav__link> <span class=md-ellipsis> JSON Patch and Diff </span> </a> </li> <li class=md-nav__item> <a href=../../features/merge_patch/ class=md-nav__link> <span class=md-ellipsis> JSON Merge Patch </span> </a> </li> <li class=md-nav__item> <a href=../../features/modules/ class=md-nav__link> <span class=md-ellipsis> Modules </span> </a> </li> <li class=md-nav__item> <a href=../../features/namespace/ class=md-nav__link> <span class=md-ellipsis> nlohmann Namespace </span> </a> </li> <li class=md-nav__item> <a href=../../features/object_order/ class=md-nav__link> <span class=md-ellipsis> Object Order </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_14> <div class="md-nav__link md-nav__container"> <a href=../../features/parsing/ class="md-nav__link "> <span class=md-ellipsis> Parsing </span> </a> <label class="md-nav__link " for=__nav_2_14 id=__nav_2_14_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_14_label aria-expanded=false> <label class=md-nav__title for=__nav_2_14> <span class="md-nav__icon md-icon"></span> Parsing </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../features/parsing/json_lines/ class=md-nav__link> <span class=md-ellipsis> JSON Lines </span> </a> </li> <li class=md-nav__item> <a href=../../features/parsing/parse_exceptions/ class=md-nav__link> <span class=md-ellipsis> Parsing and Exceptions </span> </a> </li> <li class=md-nav__item> <a href=../../features/parsing/parser_callbacks/ class=md-nav__link> <span class=md-ellipsis> Parser Callbacks </span> </a> </li> <li class=md-nav__item> <a href=../../features/parsing/sax_interface/ class=md-nav__link> <span class=md-ellipsis> SAX Interface </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../features/assertions/ class=md-nav__link> <span class=md-ellipsis> Runtime Assertions </span> </a> </li> <li class=md-nav__item> <a href=../../features/enum_conversion/ class=md-nav__link> <span class=md-ellipsis> Specializing enum conversion </span> </a> </li> <li class=md-nav__item> <a href=../../features/macros/ class=md-nav__link> <span class=md-ellipsis> Supported Macros </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_18> <div class="md-nav__link md-nav__container"> <a href=../../features/types/ class="md-nav__link "> <span class=md-ellipsis> Types </span> </a> <label class="md-nav__link " for=__nav_2_18 id=__nav_2_18_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_18_label aria-expanded=false> <label class=md-nav__title for=__nav_2_18> <span class="md-nav__icon md-icon"></span> Types </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../features/types/number_handling/ class=md-nav__link> <span class=md-ellipsis> Number Handling </span> </a> </li> </ul> </nav> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--active md-nav__item--section md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_3 checked> <div class="md-nav__link md-nav__container"> <a href=../ class="md-nav__link "> <span class=md-ellipsis> Integration </span> </a> <label class="md-nav__link " for=__nav_3 id=__nav_3_label tabindex> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_3_label aria-expanded=true> <label class=md-nav__title for=__nav_3> <span class="md-nav__icon md-icon"></span> Integration </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../migration_guide/ class=md-nav__link> <span class=md-ellipsis> Migration Guide </span> </a> </li> <li class="md-nav__item md-nav__item--active"> <input class="md-nav__toggle md-toggle" type=checkbox id=__toc> <label class="md-nav__link md-nav__link--active" for=__toc> <span class=md-ellipsis> CMake </span> <span class="md-nav__icon md-icon"></span> </label> <a href=./ class="md-nav__link md-nav__link--active"> <span class=md-ellipsis> CMake </span> </a> <nav class="md-nav md-nav--secondary" aria-label="Table of contents"> <label class=md-nav__title for=__toc> <span class="md-nav__icon md-icon"></span> Table of contents </label> <ul class=md-nav__list data-md-component=toc data-md-scrollfix> <li class=md-nav__item> <a href=#integration class=md-nav__link> <span class=md-ellipsis> Integration </span> </a> <nav class=md-nav aria-label=Integration> <ul class=md-nav__list> <li class=md-nav__item> <a href=#external class=md-nav__link> <span class=md-ellipsis> External </span> </a> </li> <li class=md-nav__item> <a href=#embedded class=md-nav__link> <span class=md-ellipsis> Embedded </span> </a> </li> <li class=md-nav__item> <a href=#supporting-both class=md-nav__link> <span class=md-ellipsis> Supporting Both </span> </a> </li> <li class=md-nav__item> <a href=#fetchcontent class=md-nav__link> <span class=md-ellipsis> FetchContent </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=#cmake-options class=md-nav__link> <span class=md-ellipsis> CMake Options </span> </a> <nav class=md-nav aria-label="CMake Options"> <ul class=md-nav__list> <li class=md-nav__item> <a href=#json_buildtests class=md-nav__link> <span class=md-ellipsis> JSON_BuildTests </span> </a> </li> <li class=md-nav__item> <a href=#json_ci class=md-nav__link> <span class=md-ellipsis> JSON_CI </span> </a> </li> <li class=md-nav__item> <a href=#json_diagnostics class=md-nav__link> <span class=md-ellipsis> JSON_Diagnostics </span> </a> </li> <li class=md-nav__item> <a href=#json_diagnostic_positions class=md-nav__link> <span class=md-ellipsis> JSON_Diagnostic_Positions </span> </a> </li> <li class=md-nav__item> <a href=#json_disableenumserialization class=md-nav__link> <span class=md-ellipsis> JSON_DisableEnumSerialization </span> </a> </li> <li class=md-nav__item> <a href=#json_fasttests class=md-nav__link> <span class=md-ellipsis> JSON_FastTests </span> </a> </li> <li class=md-nav__item> <a href=#json_globaludls class=md-nav__link> <span class=md-ellipsis> JSON_GlobalUDLs </span> </a> </li> <li class=md-nav__item> <a href=#json_implicitconversions class=md-nav__link> <span class=md-ellipsis> JSON_ImplicitConversions </span> </a> </li> <li class=md-nav__item> <a href=#json_install class=md-nav__link> <span class=md-ellipsis> JSON_Install </span> </a> </li> <li class=md-nav__item> <a href=#json_legacydiscardedvaluecomparison class=md-nav__link> <span class=md-ellipsis> JSON_LegacyDiscardedValueComparison </span> </a> </li> <li class=md-nav__item> <a href=#json_multipleheaders class=md-nav__link> <span class=md-ellipsis> JSON_MultipleHeaders </span> </a> </li> <li class=md-nav__item> <a href=#json_systeminclude class=md-nav__link> <span class=md-ellipsis> JSON_SystemInclude </span> </a> </li> <li class=md-nav__item> <a href=#json_valgrind class=md-nav__link> <span class=md-ellipsis> JSON_Valgrind </span> </a> </li> </ul> </nav> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../package_managers/ class=md-nav__link> <span class=md-ellipsis> Package Managers </span> </a> </li> <li class=md-nav__item> <a href=../pkg-config/ class=md-nav__link> <span class=md-ellipsis> Pkg-config </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4> <label class=md-nav__link for=__nav_4 id=__nav_4_label tabindex=0> <span class=md-ellipsis> API Documentation </span> <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_4_label aria-expanded=false> <label class=md-nav__title for=__nav_4> <span class="md-nav__icon md-icon"></span> API Documentation </label> <ul class=md-nav__list data-md-scrollfix> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_1> <div class="md-nav__link md-nav__container"> <a href=../../api/basic_json/ class="md-nav__link "> <span class=md-ellipsis> basic_json </span> </a> <label class="md-nav__link " for=__nav_4_1 id=__nav_4_1_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_1_label aria-expanded=false> <label class=md-nav__title for=__nav_4_1> <span class="md-nav__icon md-icon"></span> basic_json </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../api/basic_json/basic_json/ class=md-nav__link> <span class=md-ellipsis> (Constructor) </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/~basic_json/ class=md-nav__link> <span class=md-ellipsis> (Destructor) </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/accept/ class=md-nav__link> <span class=md-ellipsis> accept </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/array/ class=md-nav__link> <span class=md-ellipsis> array </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/array_t/ class=md-nav__link> <span class=md-ellipsis> array_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/at/ class=md-nav__link> <span class=md-ellipsis> at </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/back/ class=md-nav__link> <span class=md-ellipsis> back </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/begin/ class=md-nav__link> <span class=md-ellipsis> begin </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/binary/ class=md-nav__link> <span class=md-ellipsis> binary </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/binary_t/ class=md-nav__link> <span class=md-ellipsis> binary_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/boolean_t/ class=md-nav__link> <span class=md-ellipsis> boolean_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/cbegin/ class=md-nav__link> <span class=md-ellipsis> cbegin </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/cbor_tag_handler_t/ class=md-nav__link> <span class=md-ellipsis> cbor_tag_handler_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/cend/ class=md-nav__link> <span class=md-ellipsis> cend </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/clear/ class=md-nav__link> <span class=md-ellipsis> clear </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/contains/ class=md-nav__link> <span class=md-ellipsis> contains </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/count/ class=md-nav__link> <span class=md-ellipsis> count </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/crbegin/ class=md-nav__link> <span class=md-ellipsis> crbegin </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/crend/ class=md-nav__link> <span class=md-ellipsis> crend </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/default_object_comparator_t/ class=md-nav__link> <span class=md-ellipsis> default_object_comparator_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/diff/ class=md-nav__link> <span class=md-ellipsis> diff </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/dump/ class=md-nav__link> <span class=md-ellipsis> dump </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/emplace/ class=md-nav__link> <span class=md-ellipsis> emplace </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/emplace_back/ class=md-nav__link> <span class=md-ellipsis> emplace_back </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/empty/ class=md-nav__link> <span class=md-ellipsis> empty </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/end/ class=md-nav__link> <span class=md-ellipsis> end </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/end_pos/ class=md-nav__link> <span class=md-ellipsis> end_pos </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/erase/ class=md-nav__link> <span class=md-ellipsis> erase </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/error_handler_t/ class=md-nav__link> <span class=md-ellipsis> error_handler_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/exception/ class=md-nav__link> <span class=md-ellipsis> exception </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/find/ class=md-nav__link> <span class=md-ellipsis> find </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/flatten/ class=md-nav__link> <span class=md-ellipsis> flatten </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/from_bjdata/ class=md-nav__link> <span class=md-ellipsis> from_bjdata </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/from_bson/ class=md-nav__link> <span class=md-ellipsis> from_bson </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/from_cbor/ class=md-nav__link> <span class=md-ellipsis> from_cbor </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/from_msgpack/ class=md-nav__link> <span class=md-ellipsis> from_msgpack </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/from_ubjson/ class=md-nav__link> <span class=md-ellipsis> from_ubjson </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/front/ class=md-nav__link> <span class=md-ellipsis> front </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/get/ class=md-nav__link> <span class=md-ellipsis> get </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/get_allocator/ class=md-nav__link> <span class=md-ellipsis> get_allocator </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/get_binary/ class=md-nav__link> <span class=md-ellipsis> get_binary </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/get_ptr/ class=md-nav__link> <span class=md-ellipsis> get_ptr </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/get_ref/ class=md-nav__link> <span class=md-ellipsis> get_ref </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/get_to/ class=md-nav__link> <span class=md-ellipsis> get_to </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/std_hash/ class=md-nav__link> <span class=md-ellipsis> std::hash&lt;basic_json&gt; </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/input_format_t/ class=md-nav__link> <span class=md-ellipsis> input_format_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/insert/ class=md-nav__link> <span class=md-ellipsis> insert </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/invalid_iterator/ class=md-nav__link> <span class=md-ellipsis> invalid_iterator </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_array/ class=md-nav__link> <span class=md-ellipsis> is_array </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_binary/ class=md-nav__link> <span class=md-ellipsis> is_binary </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_boolean/ class=md-nav__link> <span class=md-ellipsis> is_boolean </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_discarded/ class=md-nav__link> <span class=md-ellipsis> is_discarded </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_null/ class=md-nav__link> <span class=md-ellipsis> is_null </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_number/ class=md-nav__link> <span class=md-ellipsis> is_number </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_number_float/ class=md-nav__link> <span class=md-ellipsis> is_number_float </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_number_integer/ class=md-nav__link> <span class=md-ellipsis> is_number_integer </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_number_unsigned/ class=md-nav__link> <span class=md-ellipsis> is_number_unsigned </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_object/ class=md-nav__link> <span class=md-ellipsis> is_object </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_primitive/ class=md-nav__link> <span class=md-ellipsis> is_primitive </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_string/ class=md-nav__link> <span class=md-ellipsis> is_string </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_structured/ class=md-nav__link> <span class=md-ellipsis> is_structured </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/items/ class=md-nav__link> <span class=md-ellipsis> items </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/json_base_class_t/ class=md-nav__link> <span class=md-ellipsis> json_base_class_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/json_serializer/ class=md-nav__link> <span class=md-ellipsis> json_serializer </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/max_size/ class=md-nav__link> <span class=md-ellipsis> max_size </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/meta/ class=md-nav__link> <span class=md-ellipsis> meta </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/merge_patch/ class=md-nav__link> <span class=md-ellipsis> merge_patch </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/number_float_t/ class=md-nav__link> <span class=md-ellipsis> number_float_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/number_integer_t/ class=md-nav__link> <span class=md-ellipsis> number_integer_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/number_unsigned_t/ class=md-nav__link> <span class=md-ellipsis> number_unsigned_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/object/ class=md-nav__link> <span class=md-ellipsis> object </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/object_comparator_t/ class=md-nav__link> <span class=md-ellipsis> object_comparator_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/object_t/ class=md-nav__link> <span class=md-ellipsis> object_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/operator_ValueType/ class=md-nav__link> <span class=md-ellipsis> operator ValueType </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/operator_value_t/ class=md-nav__link> <span class=md-ellipsis> operator value_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/operator%5B%5D/ class=md-nav__link> <span class=md-ellipsis> operator[] </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/operator%3D/ class=md-nav__link> <span class=md-ellipsis> operator= </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/operator%2B%3D/ class=md-nav__link> <span class=md-ellipsis> operator+= </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/operator_eq/ class=md-nav__link> <span class=md-ellipsis> operator== </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/operator_ne/ class=md-nav__link> <span class=md-ellipsis> operator!= </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/operator_lt/ class=md-nav__link> <span class=md-ellipsis> operator< </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/operator_gt/ class=md-nav__link> <span class=md-ellipsis> operator> </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/operator_le/ class=md-nav__link> <span class=md-ellipsis> operator<= </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/operator_ge/ class=md-nav__link> <span class=md-ellipsis> operator>= </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/operator_spaceship/ class=md-nav__link> <span class=md-ellipsis> operator<=> </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/out_of_range/ class=md-nav__link> <span class=md-ellipsis> out_of_range </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/other_error/ class=md-nav__link> <span class=md-ellipsis> other_error </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/parse/ class=md-nav__link> <span class=md-ellipsis> parse </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/parse_error/ class=md-nav__link> <span class=md-ellipsis> parse_error </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/parse_event_t/ class=md-nav__link> <span class=md-ellipsis> parse_event_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/parser_callback_t/ class=md-nav__link> <span class=md-ellipsis> parser_callback_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/patch/ class=md-nav__link> <span class=md-ellipsis> patch </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/patch_inplace/ class=md-nav__link> <span class=md-ellipsis> patch_inplace </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/push_back/ class=md-nav__link> <span class=md-ellipsis> push_back </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/rbegin/ class=md-nav__link> <span class=md-ellipsis> rbegin </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/rend/ class=md-nav__link> <span class=md-ellipsis> rend </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/sax_parse/ class=md-nav__link> <span class=md-ellipsis> sax_parse </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/size/ class=md-nav__link> <span class=md-ellipsis> size </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/start_pos/ class=md-nav__link> <span class=md-ellipsis> start_pos </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/string_t/ class=md-nav__link> <span class=md-ellipsis> string_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/swap/ class=md-nav__link> <span class=md-ellipsis> swap </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/std_swap/ class=md-nav__link> <span class=md-ellipsis> std::swap&lt;basic_json&gt; </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/to_bjdata/ class=md-nav__link> <span class=md-ellipsis> to_bjdata </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/to_bson/ class=md-nav__link> <span class=md-ellipsis> to_bson </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/to_cbor/ class=md-nav__link> <span class=md-ellipsis> to_cbor </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/to_msgpack/ class=md-nav__link> <span class=md-ellipsis> to_msgpack </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/to_string/ class=md-nav__link> <span class=md-ellipsis> to_string </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/to_ubjson/ class=md-nav__link> <span class=md-ellipsis> to_ubjson </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/type/ class=md-nav__link> <span class=md-ellipsis> type </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/type_error/ class=md-nav__link> <span class=md-ellipsis> type_error </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/type_name/ class=md-nav__link> <span class=md-ellipsis> type_name </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/unflatten/ class=md-nav__link> <span class=md-ellipsis> unflatten </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/update/ class=md-nav__link> <span class=md-ellipsis> update </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/value/ class=md-nav__link> <span class=md-ellipsis> value </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/value_t/ class=md-nav__link> <span class=md-ellipsis> value_t </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_2> <div class="md-nav__link md-nav__container"> <a href=../../api/byte_container_with_subtype/ class="md-nav__link "> <span class=md-ellipsis> byte_container_with_subtype </span> </a> <label class="md-nav__link " for=__nav_4_2 id=__nav_4_2_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_2_label aria-expanded=false> <label class=md-nav__title for=__nav_4_2> <span class="md-nav__icon md-icon"></span> byte_container_with_subtype </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../api/byte_container_with_subtype/byte_container_with_subtype/ class=md-nav__link> <span class=md-ellipsis> (constructor) </span> </a> </li> <li class=md-nav__item> <a href=../../api/byte_container_with_subtype/clear_subtype/ class=md-nav__link> <span class=md-ellipsis> clear_subtype </span> </a> </li> <li class=md-nav__item> <a href=../../api/byte_container_with_subtype/has_subtype/ class=md-nav__link> <span class=md-ellipsis> has_subtype </span> </a> </li> <li class=md-nav__item> <a href=../../api/byte_container_with_subtype/set_subtype/ class=md-nav__link> <span class=md-ellipsis> set_subtype </span> </a> </li> <li class=md-nav__item> <a href=../../api/byte_container_with_subtype/subtype/ class=md-nav__link> <span class=md-ellipsis> subtype </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_3> <div class="md-nav__link md-nav__container"> <a href=../../api/adl_serializer/ class="md-nav__link "> <span class=md-ellipsis> adl_serializer </span> </a> <label class="md-nav__link " for=__nav_4_3 id=__nav_4_3_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_3_label aria-expanded=false> <label class=md-nav__title for=__nav_4_3> <span class="md-nav__icon md-icon"></span> adl_serializer </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../api/adl_serializer/from_json/ class=md-nav__link> <span class=md-ellipsis> from_json </span> </a> </li> <li class=md-nav__item> <a href=../../api/adl_serializer/to_json/ class=md-nav__link> <span class=md-ellipsis> to_json </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../api/json/ class=md-nav__link> <span class=md-ellipsis> json </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_5> <div class="md-nav__link md-nav__container"> <a href=../../api/json_pointer/ class="md-nav__link "> <span class=md-ellipsis> json_pointer </span> </a> <label class="md-nav__link " for=__nav_4_5 id=__nav_4_5_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_5_label aria-expanded=false> <label class=md-nav__title for=__nav_4_5> <span class="md-nav__icon md-icon"></span> json_pointer </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../api/json_pointer/json_pointer/ class=md-nav__link> <span class=md-ellipsis> (Constructor) </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/back/ class=md-nav__link> <span class=md-ellipsis> back </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/empty/ class=md-nav__link> <span class=md-ellipsis> empty </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/front/ class=md-nav__link> <span class=md-ellipsis> front </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/operator_string_t/ class=md-nav__link> <span class=md-ellipsis> operator string_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/operator_eq/ class=md-nav__link> <span class=md-ellipsis> operator== </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/operator_ne/ class=md-nav__link> <span class=md-ellipsis> operator!= </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/operator_slash/ class=md-nav__link> <span class=md-ellipsis> operator/ </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/operator_slasheq/ class=md-nav__link> <span class=md-ellipsis> operator/= </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/parent_pointer/ class=md-nav__link> <span class=md-ellipsis> parent_pointer </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/pop_back/ class=md-nav__link> <span class=md-ellipsis> pop_back </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/pop_front/ class=md-nav__link> <span class=md-ellipsis> pop_front </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/push_back/ class=md-nav__link> <span class=md-ellipsis> push_back </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/push_front/ class=md-nav__link> <span class=md-ellipsis> push_front </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/string_t/ class=md-nav__link> <span class=md-ellipsis> string_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/to_string/ class=md-nav__link> <span class=md-ellipsis> to_string </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_6> <div class="md-nav__link md-nav__container"> <a href=../../api/json_sax/ class="md-nav__link "> <span class=md-ellipsis> json_sax </span> </a> <label class="md-nav__link " for=__nav_4_6 id=__nav_4_6_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_6_label aria-expanded=false> <label class=md-nav__title for=__nav_4_6> <span class="md-nav__icon md-icon"></span> json_sax </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../api/json_sax/binary/ class=md-nav__link> <span class=md-ellipsis> binary </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_sax/boolean/ class=md-nav__link> <span class=md-ellipsis> boolean </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_sax/end_array/ class=md-nav__link> <span class=md-ellipsis> end_array </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_sax/end_object/ class=md-nav__link> <span class=md-ellipsis> end_object </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_sax/key/ class=md-nav__link> <span class=md-ellipsis> key </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_sax/null/ class=md-nav__link> <span class=md-ellipsis> null </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_sax/number_float/ class=md-nav__link> <span class=md-ellipsis> number_float </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_sax/number_integer/ class=md-nav__link> <span class=md-ellipsis> number_integer </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_sax/number_unsigned/ class=md-nav__link> <span class=md-ellipsis> number_unsigned </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_sax/parse_error/ class=md-nav__link> <span class=md-ellipsis> parse_error </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_sax/start_array/ class=md-nav__link> <span class=md-ellipsis> start_array </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_sax/start_object/ class=md-nav__link> <span class=md-ellipsis> start_object </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_sax/string/ class=md-nav__link> <span class=md-ellipsis> string </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../api/operator_ltlt/ class=md-nav__link> <span class=md-ellipsis> operator<<(basic_json), operator<<(json_pointer) </span> </a> </li> <li class=md-nav__item> <a href=../../api/operator_gtgt/ class=md-nav__link> <span class=md-ellipsis> operator>>(basic_json) </span> </a> </li> <li class=md-nav__item> <a href=../../api/operator_literal_json/ class=md-nav__link> <span class=md-ellipsis> operator""_json </span> </a> </li> <li class=md-nav__item> <a href=../../api/operator_literal_json_pointer/ class=md-nav__link> <span class=md-ellipsis> operator""_json_pointer </span> </a> </li> <li class=md-nav__item> <a href=../../api/ordered_json/ class=md-nav__link> <span class=md-ellipsis> ordered_json </span> </a> </li> <li class=md-nav__item> <a href=../../api/ordered_map/ class=md-nav__link> <span class=md-ellipsis> ordered_map </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_13> <div class="md-nav__link md-nav__container"> <a href=../../api/macros/ class="md-nav__link "> <span class=md-ellipsis> macros </span> </a> <label class="md-nav__link " for=__nav_4_13 id=__nav_4_13_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_13_label aria-expanded=false> <label class=md-nav__title for=__nav_4_13> <span class="md-nav__icon md-icon"></span> macros </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../api/macros/json_assert/ class=md-nav__link> <span class=md-ellipsis> JSON_ASSERT </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_brace_init_copy_semantics/ class=md-nav__link> <span class=md-ellipsis> JSON_BRACE_INIT_COPY_SEMANTICS </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_throw_user/ class=md-nav__link> <span class=md-ellipsis> JSON_CATCH_USER, JSON_THROW_USER, JSON_TRY_USER </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_diagnostics/ class=md-nav__link> <span class=md-ellipsis> JSON_DIAGNOSTICS </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_diagnostic_positions/ class=md-nav__link> <span class=md-ellipsis> JSON_DIAGNOSTIC_POSITIONS </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_disable_enum_serialization/ class=md-nav__link> <span class=md-ellipsis> JSON_DISABLE_ENUM_SERIALIZATION </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_has_cpp_11/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_CPP_11, JSON_HAS_CPP_14, JSON_HAS_CPP_17, JSON_HAS_CPP_20 </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_has_filesystem/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_EXPERIMENTAL_FILESYSTEM, JSON_HAS_FILESYSTEM </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_has_ranges/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_RANGES </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_has_static_rtti/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_STATIC_RTTI </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_has_three_way_comparison/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_THREE_WAY_COMPARISON </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_noexception/ class=md-nav__link> <span class=md-ellipsis> JSON_NOEXCEPTION </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_no_io/ class=md-nav__link> <span class=md-ellipsis> JSON_NO_IO </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_skip_library_version_check/ class=md-nav__link> <span class=md-ellipsis> JSON_SKIP_LIBRARY_VERSION_CHECK </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_skip_unsupported_compiler_check/ class=md-nav__link> <span class=md-ellipsis> JSON_SKIP_UNSUPPORTED_COMPILER_CHECK </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_use_global_udls/ class=md-nav__link> <span class=md-ellipsis> JSON_USE_GLOBAL_UDLS </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_use_implicit_conversions/ class=md-nav__link> <span class=md-ellipsis> JSON_USE_IMPLICIT_CONVERSIONS </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_use_legacy_discarded_value_comparison/ class=md-nav__link> <span class=md-ellipsis> JSON_USE_LEGACY_DISCARDED_VALUE_COMPARISON </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/nlohmann_define_derived_type/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_ONLY_SERIALIZE, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/nlohmann_define_type_intrusive/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_TYPE_INTRUSIVE, NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_TYPE_INTRUSIVE_ONLY_SERIALIZE </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/nlohmann_define_type_non_intrusive/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/nlohmann_define_type_with_names/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_TYPE_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/nlohmann_json_namespace/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_NAMESPACE </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/nlohmann_json_namespace_begin/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_NAMESPACE_BEGIN, NLOHMANN_JSON_NAMESPACE_END </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/nlohmann_json_namespace_no_version/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_NAMESPACE_NO_VERSION </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/nlohmann_json_serialize_enum/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_SERIALIZE_ENUM </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/nlohmann_json_serialize_enum_strict/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_SERIALIZE_ENUM_STRICT </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/nlohmann_json_version_major/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_VERSION_MAJOR, NLOHMANN_JSON_VERSION_MINOR, NLOHMANN_JSON_VERSION_PATCH </span> </a> </li> </ul> </nav> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_5> <div class="md-nav__link md-nav__container"> <a href=../../community/ class="md-nav__link "> <span class=md-ellipsis> Community </span> </a> <label class="md-nav__link " for=__nav_5 id=__nav_5_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_5_label aria-expanded=false> <label class=md-nav__title for=__nav_5> <span class="md-nav__icon md-icon"></span> Community </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../community/code_of_conduct/ class=md-nav__link> <span class=md-ellipsis> Code of Conduct </span> </a> </li> <li class=md-nav__item> <a href=../../community/contribution_guidelines/ class=md-nav__link> <span class=md-ellipsis> Contribution Guidelines </span> </a> </li> <li class=md-nav__item> <a href=../../community/quality_assurance/ class=md-nav__link> <span class=md-ellipsis> Quality assurance </span> </a> </li> <li class=md-nav__item> <a href=../../community/governance/ class=md-nav__link> <span class=md-ellipsis> Governance </span> </a> </li> <li class=md-nav__item> <a href=../../community/security_policy/ class=md-nav__link> <span class=md-ellipsis> Security Policy </span> </a> </li> </ul> </nav> </li> </ul> </nav> </div> </div> </div> <div class="md-sidebar md-sidebar--secondary" data-md-component=sidebar data-md-type=toc> <div class=md-sidebar__scrollwrap> <div class=md-sidebar__inner> <nav class="md-nav md-nav--secondary" aria-label="Table of contents"> <label class=md-nav__title for=__toc> <span class="md-nav__icon md-icon"></span> Table of contents </label> <ul class=md-nav__list data-md-component=toc data-md-scrollfix> <li class=md-nav__item> <a href=#integration class=md-nav__link> <span class=md-ellipsis> Integration </span> </a> <nav class=md-nav aria-label=Integration> <ul class=md-nav__list> <li class=md-nav__item> <a href=#external class=md-nav__link> <span class=md-ellipsis> External </span> </a> </li> <li class=md-nav__item> <a href=#embedded class=md-nav__link> <span class=md-ellipsis> Embedded </span> </a> </li> <li class=md-nav__item> <a href=#supporting-both class=md-nav__link> <span class=md-ellipsis> Supporting Both </span> </a> </li> <li class=md-nav__item> <a href=#fetchcontent class=md-nav__link> <span class=md-ellipsis> FetchContent </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=#cmake-options class=md-nav__link> <span class=md-ellipsis> CMake Options </span> </a> <nav class=md-nav aria-label="CMake Options"> <ul class=md-nav__list> <li class=md-nav__item> <a href=#json_buildtests class=md-nav__link> <span class=md-ellipsis> JSON_BuildTests </span> </a> </li> <li class=md-nav__item> <a href=#json_ci class=md-nav__link> <span class=md-ellipsis> JSON_CI </span> </a> </li> <li class=md-nav__item> <a href=#json_diagnostics class=md-nav__link> <span class=md-ellipsis> JSON_Diagnostics </span> </a> </li> <li class=md-nav__item> <a href=#json_diagnostic_positions class=md-nav__link> <span class=md-ellipsis> JSON_Diagnostic_Positions </span> </a> </li> <li class=md-nav__item> <a href=#json_disableenumserialization class=md-nav__link> <span class=md-ellipsis> JSON_DisableEnumSerialization </span> </a> </li> <li class=md-nav__item> <a href=#json_fasttests class=md-nav__link> <span class=md-ellipsis> JSON_FastTests </span> </a> </li> <li class=md-nav__item> <a href=#json_globaludls class=md-nav__link> <span class=md-ellipsis> JSON_GlobalUDLs </span> </a> </li> <li class=md-nav__item> <a href=#json_implicitconversions class=md-nav__link> <span class=md-ellipsis> JSON_ImplicitConversions </span> </a> </li> <li class=md-nav__item> <a href=#json_install class=md-nav__link> <span class=md-ellipsis> JSON_Install </span> </a> </li> <li class=md-nav__item> <a href=#json_legacydiscardedvaluecomparison class=md-nav__link> <span class=md-ellipsis> JSON_LegacyDiscardedValueComparison </span> </a> </li> <li class=md-nav__item> <a href=#json_multipleheaders class=md-nav__link> <span class=md-ellipsis> JSON_MultipleHeaders </span> </a> </li> <li class=md-nav__item> <a href=#json_systeminclude class=md-nav__link> <span class=md-ellipsis> JSON_SystemInclude </span> </a> </li> <li class=md-nav__item> <a href=#json_valgrind class=md-nav__link> <span class=md-ellipsis> JSON_Valgrind </span> </a> </li> </ul> </nav> </li> </ul> </nav> </div> </div> </div> <div class=md-content data-md-component=content> <article class="md-content__inner md-typeset"> <a href="https://github.com/nlohmann/json/edit/develop/docs/mkdocs/docs/integration/cmake.md" title="Edit this page" class="md-content__button md-icon" rel="edit"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M10 20H6V4h7v5h5v3.1l2-2V8l-6-6H6c-1.1 0-2 .9-2 2v16c0 1.1.9 2 2 2h4zm10.2-7c.1 0 .3.1.4.2l1.3 1.3c.2.2.2.6 0 .8l-1 1-2.1-2.1 1-1c.1-.1.2-.2.4-.2m0 3.9L14.1 23H12v-2.1l6.1-6.1z"/></svg> </a> <a href="https://github.com/nlohmann/json/raw/develop/docs/mkdocs/docs/integration/cmake.md" title="View source of this page" class="md-content__button md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M17 18c.56 0 1 .44 1 1s-.44 1-1 1-1-.44-1-1 .44-1 1-1m0-3c-2.73 0-5.06 1.66-6 4 .94 2.34 3.27 4 6 4s5.06-1.66 6-4c-.94-2.34-3.27-4-6-4m0 6.5a2.5 2.5 0 0 1-2.5-2.5 2.5 2.5 0 0 1 2.5-2.5 2.5 2.5 0 0 1 2.5 2.5 2.5 2.5 0 0 1-2.5 2.5M9.27 20H6V4h7v5h5v4.07c.7.08 1.36.25 2 .49V8l-6-6H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h4.5a8.2 8.2 0 0 1-1.23-2"/></svg> </a> <h1 id=cmake>CMake<a class=headerlink href=#cmake title="Permanent link">&para;</a></h1> <h2 id=integration>Integration<a class=headerlink href=#integration title="Permanent link">&para;</a></h2> <p>You can use the <code>nlohmann_json::nlohmann_json</code> interface target in CMake. This target populates the appropriate usage requirements for <a href="https://cmake.org/cmake/help/latest/prop_tgt/INTERFACE_INCLUDE_DIRECTORIES.html"><code>INTERFACE_INCLUDE_DIRECTORIES</code></a> to point to the appropriate include directories and <a href="https://cmake.org/cmake/help/latest/prop_tgt/INTERFACE_COMPILE_FEATURES.html"><code>INTERFACE_COMPILE_FEATURES</code></a> for the necessary C++11 flags.</p> <h3 id=external>External<a class=headerlink href=#external title="Permanent link">&para;</a></h3> <p>To use this library from a CMake project, you can locate it directly with <a href="https://cmake.org/cmake/help/latest/command/find_package.html"><code>find_package()</code></a> and use the namespaced imported target from the generated package configuration:</p> <div class="admonition example"> <p class=admonition-title>Example</p> <div class=highlight><span class=filename>CMakeLists.txt</span><pre><span></span><code><span class=nb>cmake_minimum_required</span><span class=p>(</span><span class=s>VERSION</span><span class=w> </span><span class=s>3.5</span><span class=p>)</span>
+<!doctype html><html lang=en class=no-js> <head><meta charset=utf-8><meta name=viewport content="width=device-width,initial-scale=1"><meta name=author content="Niels Lohmann"><link href="https://json.nlohmann.me/integration/cmake/" rel="canonical"><link href=../migration_guide/ rel=prev><link href=../package_managers/ rel=next><link rel=icon href=../../assets/images/favicon.png><meta name=generator content="mkdocs-1.6.1, mkdocs-material-9.7.6"><title>CMake - JSON for Modern C++</title><link rel=stylesheet href=../../assets/stylesheets/main.484c7ddc.min.css><link rel=stylesheet href=../../assets/stylesheets/palette.ab4e12ef.min.css><link rel="stylesheet" href="../../assets/external/fonts.googleapis.com/css.61a430c9.css"><style>:root{--md-text-font:"Roboto";--md-code-font:"JetBrains Mono"}</style><link rel=stylesheet href=../../css/custom.css><script>__md_scope=new URL("../..",location),__md_hash=e=>[...e].reduce(((e,_)=>(e<<5)-e+_.charCodeAt(0)),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script></head> <body dir=ltr data-md-color-scheme=default data-md-color-primary=indigo data-md-color-accent=indigo> <input class=md-toggle data-md-toggle=drawer type=checkbox id=__drawer autocomplete=off> <input class=md-toggle data-md-toggle=search type=checkbox id=__search autocomplete=off> <label class=md-overlay for=__drawer></label> <div data-md-component=skip> <a href=#cmake class=md-skip> Skip to content </a> </div> <div data-md-component=announce> </div> <header class=md-header data-md-component=header> <nav class="md-header__inner md-grid" aria-label=Header> <a href=../.. title="JSON for Modern C++" class="md-header__button md-logo" aria-label="JSON for Modern C++" data-md-component=logo> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54"/></svg> </a> <label class="md-header__button md-icon" for=__drawer> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M3 6h18v2H3zm0 5h18v2H3zm0 5h18v2H3z"/></svg> </label> <div class=md-header__title data-md-component=header-title> <div class=md-header__ellipsis> <div class=md-header__topic> <span class=md-ellipsis> JSON for Modern C++ </span> </div> <div class=md-header__topic data-md-component=header-topic> <span class=md-ellipsis> CMake </span> </div> </div> </div> <form class=md-header__option data-md-component=palette> <input class=md-option data-md-color-media="(prefers-color-scheme: light)" data-md-color-scheme=default data-md-color-primary=indigo data-md-color-accent=indigo aria-label="Switch to dark mode" type=radio name=__palette id=__palette_0> <label class="md-header__button md-icon" title="Switch to dark mode" for=__palette_1 hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a4 4 0 0 0-4 4 4 4 0 0 0 4 4 4 4 0 0 0 4-4 4 4 0 0 0-4-4m0 10a6 6 0 0 1-6-6 6 6 0 0 1 6-6 6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12z"/></svg> </label> <input class=md-option data-md-color-media="(prefers-color-scheme: dark)" data-md-color-scheme=slate data-md-color-primary=indigo data-md-color-accent=indigo aria-label="Switch to light mode" type=radio name=__palette id=__palette_1> <label class="md-header__button md-icon" title="Switch to light mode" for=__palette_0 hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 18c-.89 0-1.74-.2-2.5-.55C11.56 16.5 13 14.42 13 12s-1.44-4.5-3.5-5.45C10.26 6.2 11.11 6 12 6a6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12z"/></svg> </label> </form> <script>var palette=__md_get("__palette");if(palette&&palette.color){if("(prefers-color-scheme)"===palette.color.media){var media=matchMedia("(prefers-color-scheme: light)"),input=document.querySelector(media.matches?"[data-md-color-media='(prefers-color-scheme: light)']":"[data-md-color-media='(prefers-color-scheme: dark)']");palette.color.media=input.getAttribute("data-md-color-media"),palette.color.scheme=input.getAttribute("data-md-color-scheme"),palette.color.primary=input.getAttribute("data-md-color-primary"),palette.color.accent=input.getAttribute("data-md-color-accent")}for(var[key,value]of Object.entries(palette.color))document.body.setAttribute("data-md-color-"+key,value)}</script> <label class="md-header__button md-icon" for=__search> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg> </label> <div class=md-search data-md-component=search role=dialog> <label class=md-search__overlay for=__search></label> <div class=md-search__inner role=search> <form class=md-search__form name=search> <input type=text class=md-search__input name=query aria-label=Search placeholder=Search autocapitalize=off autocorrect=off autocomplete=off spellcheck=false data-md-component=search-query required> <label class="md-search__icon md-icon" for=__search> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11z"/></svg> </label> <nav class=md-search__options aria-label=Search> <button type=reset class="md-search__icon md-icon" title=Clear aria-label=Clear tabindex=-1> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z"/></svg> </button> </nav> </form> <div class=md-search__output> <div class=md-search__scrollwrap tabindex=0 data-md-scrollfix> <div class=md-search-result data-md-component=search-result> <div class=md-search-result__meta> Initializing search </div> <ol class=md-search-result__list role=presentation></ol> </div> </div> </div> </div> </div> <div class=md-header__source> <a href="https://github.com/nlohmann/json" title="Go to repository" class="md-source" data-md-component="source"> <div class="md-source__icon md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </div> <div class=md-source__repository> nlohmann/json </div> </a> </div> </nav> </header> <div class=md-container data-md-component=container> <nav class=md-tabs aria-label=Tabs data-md-component=tabs> <div class=md-grid> <ul class=md-tabs__list> <li class=md-tabs__item> <a href=../.. class=md-tabs__link> Home </a> </li> <li class=md-tabs__item> <a href=../../features/arbitrary_types/ class=md-tabs__link> Features </a> </li> <li class="md-tabs__item md-tabs__item--active"> <a href=../ class=md-tabs__link> Integration </a> </li> <li class=md-tabs__item> <a href=../../api/basic_json/ class=md-tabs__link> API Documentation </a> </li> <li class=md-tabs__item> <a href=../../community/ class=md-tabs__link> Community </a> </li> </ul> </div> </nav> <main class=md-main data-md-component=main> <div class="md-main__inner md-grid"> <div class="md-sidebar md-sidebar--primary" data-md-component=sidebar data-md-type=navigation> <div class=md-sidebar__scrollwrap> <div class=md-sidebar__inner> <nav class="md-nav md-nav--primary md-nav--lifted" aria-label=Navigation data-md-level=0> <label class=md-nav__title for=__drawer> <a href=../.. title="JSON for Modern C++" class="md-nav__button md-logo" aria-label="JSON for Modern C++" data-md-component=logo> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54"/></svg> </a> JSON for Modern C++ </label> <div class=md-nav__source> <a href="https://github.com/nlohmann/json" title="Go to repository" class="md-source" data-md-component="source"> <div class="md-source__icon md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </div> <div class=md-source__repository> nlohmann/json </div> </a> </div> <ul class=md-nav__list data-md-scrollfix> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_1> <div class="md-nav__link md-nav__container"> <a href=../.. class="md-nav__link "> <span class=md-ellipsis> Home </span> </a> <label class="md-nav__link " for=__nav_1 id=__nav_1_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_1_label aria-expanded=false> <label class=md-nav__title for=__nav_1> <span class="md-nav__icon md-icon"></span> Home </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../home/license/ class=md-nav__link> <span class=md-ellipsis> License </span> </a> </li> <li class=md-nav__item> <a href=../../home/faq/ class=md-nav__link> <span class=md-ellipsis> FAQ </span> </a> </li> <li class=md-nav__item> <a href=../../home/exceptions/ class=md-nav__link> <span class=md-ellipsis> Exceptions </span> </a> </li> <li class=md-nav__item> <a href=../../home/releases/ class=md-nav__link> <span class=md-ellipsis> Releases </span> </a> </li> <li class=md-nav__item> <a href=../../home/design_goals/ class=md-nav__link> <span class=md-ellipsis> Design goals </span> </a> </li> <li class=md-nav__item> <a href=../../home/architecture/ class=md-nav__link> <span class=md-ellipsis> Architecture </span> </a> </li> <li class=md-nav__item> <a href=../../home/customers/ class=md-nav__link> <span class=md-ellipsis> Customers </span> </a> </li> <li class=md-nav__item> <a href=../../home/sponsors/ class=md-nav__link> <span class=md-ellipsis> Sponsors </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2> <label class=md-nav__link for=__nav_2 id=__nav_2_label tabindex=0> <span class=md-ellipsis> Features </span> <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_2_label aria-expanded=false> <label class=md-nav__title for=__nav_2> <span class="md-nav__icon md-icon"></span> Features </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../features/arbitrary_types/ class=md-nav__link> <span class=md-ellipsis> Arbitrary Type Conversions </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_2> <div class="md-nav__link md-nav__container"> <a href=../../features/binary_formats/ class="md-nav__link "> <span class=md-ellipsis> Binary Formats </span> </a> <label class="md-nav__link " for=__nav_2_2 id=__nav_2_2_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_2_label aria-expanded=false> <label class=md-nav__title for=__nav_2_2> <span class="md-nav__icon md-icon"></span> Binary Formats </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../features/binary_formats/bjdata/ class=md-nav__link> <span class=md-ellipsis> BJData </span> </a> </li> <li class=md-nav__item> <a href=../../features/binary_formats/bson/ class=md-nav__link> <span class=md-ellipsis> BSON </span> </a> </li> <li class=md-nav__item> <a href=../../features/binary_formats/cbor/ class=md-nav__link> <span class=md-ellipsis> CBOR </span> </a> </li> <li class=md-nav__item> <a href=../../features/binary_formats/messagepack/ class=md-nav__link> <span class=md-ellipsis> MessagePack </span> </a> </li> <li class=md-nav__item> <a href=../../features/binary_formats/ubjson/ class=md-nav__link> <span class=md-ellipsis> UBJSON </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../features/binary_values/ class=md-nav__link> <span class=md-ellipsis> Binary Values </span> </a> </li> <li class=md-nav__item> <a href=../../features/comments/ class=md-nav__link> <span class=md-ellipsis> Comments </span> </a> </li> <li class=md-nav__item> <a href=../../features/trailing_commas/ class=md-nav__link> <span class=md-ellipsis> Trailing Commas </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_6> <div class="md-nav__link md-nav__container"> <a href=../../features/element_access/ class="md-nav__link "> <span class=md-ellipsis> Element Access </span> </a> <label class="md-nav__link " for=__nav_2_6 id=__nav_2_6_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_6_label aria-expanded=false> <label class=md-nav__title for=__nav_2_6> <span class="md-nav__icon md-icon"></span> Element Access </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../features/element_access/unchecked_access/ class=md-nav__link> <span class=md-ellipsis> Unchecked access: operator[] </span> </a> </li> <li class=md-nav__item> <a href=../../features/element_access/checked_access/ class=md-nav__link> <span class=md-ellipsis> Checked access: at </span> </a> </li> <li class=md-nav__item> <a href=../../features/element_access/default_value/ class=md-nav__link> <span class=md-ellipsis> Access with default value: value </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../features/iterators/ class=md-nav__link> <span class=md-ellipsis> Iterators </span> </a> </li> <li class=md-nav__item> <a href=../../features/json_pointer/ class=md-nav__link> <span class=md-ellipsis> JSON Pointer </span> </a> </li> <li class=md-nav__item> <a href=../../features/json_patch/ class=md-nav__link> <span class=md-ellipsis> JSON Patch and Diff </span> </a> </li> <li class=md-nav__item> <a href=../../features/merge_patch/ class=md-nav__link> <span class=md-ellipsis> JSON Merge Patch </span> </a> </li> <li class=md-nav__item> <a href=../../features/modules/ class=md-nav__link> <span class=md-ellipsis> Modules </span> </a> </li> <li class=md-nav__item> <a href=../../features/namespace/ class=md-nav__link> <span class=md-ellipsis> nlohmann Namespace </span> </a> </li> <li class=md-nav__item> <a href=../../features/object_order/ class=md-nav__link> <span class=md-ellipsis> Object Order </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_14> <div class="md-nav__link md-nav__container"> <a href=../../features/parsing/ class="md-nav__link "> <span class=md-ellipsis> Parsing </span> </a> <label class="md-nav__link " for=__nav_2_14 id=__nav_2_14_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_14_label aria-expanded=false> <label class=md-nav__title for=__nav_2_14> <span class="md-nav__icon md-icon"></span> Parsing </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../features/parsing/json_lines/ class=md-nav__link> <span class=md-ellipsis> JSON Lines </span> </a> </li> <li class=md-nav__item> <a href=../../features/parsing/parse_exceptions/ class=md-nav__link> <span class=md-ellipsis> Parsing and Exceptions </span> </a> </li> <li class=md-nav__item> <a href=../../features/parsing/parser_callbacks/ class=md-nav__link> <span class=md-ellipsis> Parser Callbacks </span> </a> </li> <li class=md-nav__item> <a href=../../features/parsing/sax_interface/ class=md-nav__link> <span class=md-ellipsis> SAX Interface </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../features/assertions/ class=md-nav__link> <span class=md-ellipsis> Runtime Assertions </span> </a> </li> <li class=md-nav__item> <a href=../../features/enum_conversion/ class=md-nav__link> <span class=md-ellipsis> Specializing enum conversion </span> </a> </li> <li class=md-nav__item> <a href=../../features/macros/ class=md-nav__link> <span class=md-ellipsis> Supported Macros </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_18> <div class="md-nav__link md-nav__container"> <a href=../../features/types/ class="md-nav__link "> <span class=md-ellipsis> Types </span> </a> <label class="md-nav__link " for=__nav_2_18 id=__nav_2_18_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_18_label aria-expanded=false> <label class=md-nav__title for=__nav_2_18> <span class="md-nav__icon md-icon"></span> Types </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../features/types/number_handling/ class=md-nav__link> <span class=md-ellipsis> Number Handling </span> </a> </li> </ul> </nav> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--active md-nav__item--section md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_3 checked> <div class="md-nav__link md-nav__container"> <a href=../ class="md-nav__link "> <span class=md-ellipsis> Integration </span> </a> <label class="md-nav__link " for=__nav_3 id=__nav_3_label tabindex> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_3_label aria-expanded=true> <label class=md-nav__title for=__nav_3> <span class="md-nav__icon md-icon"></span> Integration </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../migration_guide/ class=md-nav__link> <span class=md-ellipsis> Migration Guide </span> </a> </li> <li class="md-nav__item md-nav__item--active"> <input class="md-nav__toggle md-toggle" type=checkbox id=__toc> <label class="md-nav__link md-nav__link--active" for=__toc> <span class=md-ellipsis> CMake </span> <span class="md-nav__icon md-icon"></span> </label> <a href=./ class="md-nav__link md-nav__link--active"> <span class=md-ellipsis> CMake </span> </a> <nav class="md-nav md-nav--secondary" aria-label="Table of contents"> <label class=md-nav__title for=__toc> <span class="md-nav__icon md-icon"></span> Table of contents </label> <ul class=md-nav__list data-md-component=toc data-md-scrollfix> <li class=md-nav__item> <a href=#integration class=md-nav__link> <span class=md-ellipsis> Integration </span> </a> <nav class=md-nav aria-label=Integration> <ul class=md-nav__list> <li class=md-nav__item> <a href=#external class=md-nav__link> <span class=md-ellipsis> External </span> </a> </li> <li class=md-nav__item> <a href=#embedded class=md-nav__link> <span class=md-ellipsis> Embedded </span> </a> </li> <li class=md-nav__item> <a href=#supporting-both class=md-nav__link> <span class=md-ellipsis> Supporting Both </span> </a> </li> <li class=md-nav__item> <a href=#fetchcontent class=md-nav__link> <span class=md-ellipsis> FetchContent </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=#cmake-options class=md-nav__link> <span class=md-ellipsis> CMake Options </span> </a> <nav class=md-nav aria-label="CMake Options"> <ul class=md-nav__list> <li class=md-nav__item> <a href=#json_buildtests class=md-nav__link> <span class=md-ellipsis> JSON_BuildTests </span> </a> </li> <li class=md-nav__item> <a href=#json_ci class=md-nav__link> <span class=md-ellipsis> JSON_CI </span> </a> </li> <li class=md-nav__item> <a href=#json_diagnostics class=md-nav__link> <span class=md-ellipsis> JSON_Diagnostics </span> </a> </li> <li class=md-nav__item> <a href=#json_diagnostic_positions class=md-nav__link> <span class=md-ellipsis> JSON_Diagnostic_Positions </span> </a> </li> <li class=md-nav__item> <a href=#json_disableenumserialization class=md-nav__link> <span class=md-ellipsis> JSON_DisableEnumSerialization </span> </a> </li> <li class=md-nav__item> <a href=#json_fasttests class=md-nav__link> <span class=md-ellipsis> JSON_FastTests </span> </a> </li> <li class=md-nav__item> <a href=#json_globaludls class=md-nav__link> <span class=md-ellipsis> JSON_GlobalUDLs </span> </a> </li> <li class=md-nav__item> <a href=#json_implicitconversions class=md-nav__link> <span class=md-ellipsis> JSON_ImplicitConversions </span> </a> </li> <li class=md-nav__item> <a href=#json_install class=md-nav__link> <span class=md-ellipsis> JSON_Install </span> </a> </li> <li class=md-nav__item> <a href=#json_legacydiscardedvaluecomparison class=md-nav__link> <span class=md-ellipsis> JSON_LegacyDiscardedValueComparison </span> </a> </li> <li class=md-nav__item> <a href=#json_multipleheaders class=md-nav__link> <span class=md-ellipsis> JSON_MultipleHeaders </span> </a> </li> <li class=md-nav__item> <a href=#json_systeminclude class=md-nav__link> <span class=md-ellipsis> JSON_SystemInclude </span> </a> </li> <li class=md-nav__item> <a href=#json_valgrind class=md-nav__link> <span class=md-ellipsis> JSON_Valgrind </span> </a> </li> <li class=md-nav__item> <a href=#nlohmann_json_build_modules class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_BUILD_MODULES </span> </a> </li> </ul> </nav> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../package_managers/ class=md-nav__link> <span class=md-ellipsis> Package Managers </span> </a> </li> <li class=md-nav__item> <a href=../pkg-config/ class=md-nav__link> <span class=md-ellipsis> Pkg-config </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4> <label class=md-nav__link for=__nav_4 id=__nav_4_label tabindex=0> <span class=md-ellipsis> API Documentation </span> <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_4_label aria-expanded=false> <label class=md-nav__title for=__nav_4> <span class="md-nav__icon md-icon"></span> API Documentation </label> <ul class=md-nav__list data-md-scrollfix> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_1> <div class="md-nav__link md-nav__container"> <a href=../../api/basic_json/ class="md-nav__link "> <span class=md-ellipsis> basic_json </span> </a> <label class="md-nav__link " for=__nav_4_1 id=__nav_4_1_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_1_label aria-expanded=false> <label class=md-nav__title for=__nav_4_1> <span class="md-nav__icon md-icon"></span> basic_json </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../api/basic_json/basic_json/ class=md-nav__link> <span class=md-ellipsis> (Constructor) </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/~basic_json/ class=md-nav__link> <span class=md-ellipsis> (Destructor) </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/accept/ class=md-nav__link> <span class=md-ellipsis> accept </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/array/ class=md-nav__link> <span class=md-ellipsis> array </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/array_t/ class=md-nav__link> <span class=md-ellipsis> array_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/at/ class=md-nav__link> <span class=md-ellipsis> at </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/back/ class=md-nav__link> <span class=md-ellipsis> back </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/begin/ class=md-nav__link> <span class=md-ellipsis> begin </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/binary/ class=md-nav__link> <span class=md-ellipsis> binary </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/binary_t/ class=md-nav__link> <span class=md-ellipsis> binary_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/boolean_t/ class=md-nav__link> <span class=md-ellipsis> boolean_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/cbegin/ class=md-nav__link> <span class=md-ellipsis> cbegin </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/cbor_tag_handler_t/ class=md-nav__link> <span class=md-ellipsis> cbor_tag_handler_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/cend/ class=md-nav__link> <span class=md-ellipsis> cend </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/clear/ class=md-nav__link> <span class=md-ellipsis> clear </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/contains/ class=md-nav__link> <span class=md-ellipsis> contains </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/count/ class=md-nav__link> <span class=md-ellipsis> count </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/crbegin/ class=md-nav__link> <span class=md-ellipsis> crbegin </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/crend/ class=md-nav__link> <span class=md-ellipsis> crend </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/default_object_comparator_t/ class=md-nav__link> <span class=md-ellipsis> default_object_comparator_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/diff/ class=md-nav__link> <span class=md-ellipsis> diff </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/dump/ class=md-nav__link> <span class=md-ellipsis> dump </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/emplace/ class=md-nav__link> <span class=md-ellipsis> emplace </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/emplace_back/ class=md-nav__link> <span class=md-ellipsis> emplace_back </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/empty/ class=md-nav__link> <span class=md-ellipsis> empty </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/end/ class=md-nav__link> <span class=md-ellipsis> end </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/end_pos/ class=md-nav__link> <span class=md-ellipsis> end_pos </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/erase/ class=md-nav__link> <span class=md-ellipsis> erase </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/error_handler_t/ class=md-nav__link> <span class=md-ellipsis> error_handler_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/exception/ class=md-nav__link> <span class=md-ellipsis> exception </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/find/ class=md-nav__link> <span class=md-ellipsis> find </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/flatten/ class=md-nav__link> <span class=md-ellipsis> flatten </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/from_bjdata/ class=md-nav__link> <span class=md-ellipsis> from_bjdata </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/from_bson/ class=md-nav__link> <span class=md-ellipsis> from_bson </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/from_cbor/ class=md-nav__link> <span class=md-ellipsis> from_cbor </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/from_msgpack/ class=md-nav__link> <span class=md-ellipsis> from_msgpack </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/from_ubjson/ class=md-nav__link> <span class=md-ellipsis> from_ubjson </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/front/ class=md-nav__link> <span class=md-ellipsis> front </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/get/ class=md-nav__link> <span class=md-ellipsis> get </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/get_allocator/ class=md-nav__link> <span class=md-ellipsis> get_allocator </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/get_binary/ class=md-nav__link> <span class=md-ellipsis> get_binary </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/get_ptr/ class=md-nav__link> <span class=md-ellipsis> get_ptr </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/get_ref/ class=md-nav__link> <span class=md-ellipsis> get_ref </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/get_to/ class=md-nav__link> <span class=md-ellipsis> get_to </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/std_hash/ class=md-nav__link> <span class=md-ellipsis> std::hash&lt;basic_json&gt; </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/input_format_t/ class=md-nav__link> <span class=md-ellipsis> input_format_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/insert/ class=md-nav__link> <span class=md-ellipsis> insert </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/invalid_iterator/ class=md-nav__link> <span class=md-ellipsis> invalid_iterator </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_array/ class=md-nav__link> <span class=md-ellipsis> is_array </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_binary/ class=md-nav__link> <span class=md-ellipsis> is_binary </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_boolean/ class=md-nav__link> <span class=md-ellipsis> is_boolean </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_discarded/ class=md-nav__link> <span class=md-ellipsis> is_discarded </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_null/ class=md-nav__link> <span class=md-ellipsis> is_null </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_number/ class=md-nav__link> <span class=md-ellipsis> is_number </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_number_float/ class=md-nav__link> <span class=md-ellipsis> is_number_float </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_number_integer/ class=md-nav__link> <span class=md-ellipsis> is_number_integer </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_number_unsigned/ class=md-nav__link> <span class=md-ellipsis> is_number_unsigned </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_object/ class=md-nav__link> <span class=md-ellipsis> is_object </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_primitive/ class=md-nav__link> <span class=md-ellipsis> is_primitive </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_string/ class=md-nav__link> <span class=md-ellipsis> is_string </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_structured/ class=md-nav__link> <span class=md-ellipsis> is_structured </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/items/ class=md-nav__link> <span class=md-ellipsis> items </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/json_base_class_t/ class=md-nav__link> <span class=md-ellipsis> json_base_class_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/json_serializer/ class=md-nav__link> <span class=md-ellipsis> json_serializer </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/max_size/ class=md-nav__link> <span class=md-ellipsis> max_size </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/meta/ class=md-nav__link> <span class=md-ellipsis> meta </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/merge_patch/ class=md-nav__link> <span class=md-ellipsis> merge_patch </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/number_float_t/ class=md-nav__link> <span class=md-ellipsis> number_float_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/number_integer_t/ class=md-nav__link> <span class=md-ellipsis> number_integer_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/number_unsigned_t/ class=md-nav__link> <span class=md-ellipsis> number_unsigned_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/object/ class=md-nav__link> <span class=md-ellipsis> object </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/object_comparator_t/ class=md-nav__link> <span class=md-ellipsis> object_comparator_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/object_t/ class=md-nav__link> <span class=md-ellipsis> object_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/operator_ValueType/ class=md-nav__link> <span class=md-ellipsis> operator ValueType </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/operator_value_t/ class=md-nav__link> <span class=md-ellipsis> operator value_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/operator%5B%5D/ class=md-nav__link> <span class=md-ellipsis> operator[] </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/operator%3D/ class=md-nav__link> <span class=md-ellipsis> operator= </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/operator%2B%3D/ class=md-nav__link> <span class=md-ellipsis> operator+= </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/operator_eq/ class=md-nav__link> <span class=md-ellipsis> operator== </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/operator_ne/ class=md-nav__link> <span class=md-ellipsis> operator!= </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/operator_lt/ class=md-nav__link> <span class=md-ellipsis> operator< </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/operator_gt/ class=md-nav__link> <span class=md-ellipsis> operator> </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/operator_le/ class=md-nav__link> <span class=md-ellipsis> operator<= </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/operator_ge/ class=md-nav__link> <span class=md-ellipsis> operator>= </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/operator_spaceship/ class=md-nav__link> <span class=md-ellipsis> operator<=> </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/out_of_range/ class=md-nav__link> <span class=md-ellipsis> out_of_range </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/other_error/ class=md-nav__link> <span class=md-ellipsis> other_error </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/parse/ class=md-nav__link> <span class=md-ellipsis> parse </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/parse_error/ class=md-nav__link> <span class=md-ellipsis> parse_error </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/parse_event_t/ class=md-nav__link> <span class=md-ellipsis> parse_event_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/parser_callback_t/ class=md-nav__link> <span class=md-ellipsis> parser_callback_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/patch/ class=md-nav__link> <span class=md-ellipsis> patch </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/patch_inplace/ class=md-nav__link> <span class=md-ellipsis> patch_inplace </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/push_back/ class=md-nav__link> <span class=md-ellipsis> push_back </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/rbegin/ class=md-nav__link> <span class=md-ellipsis> rbegin </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/rend/ class=md-nav__link> <span class=md-ellipsis> rend </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/sax_parse/ class=md-nav__link> <span class=md-ellipsis> sax_parse </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/size/ class=md-nav__link> <span class=md-ellipsis> size </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/start_pos/ class=md-nav__link> <span class=md-ellipsis> start_pos </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/string_t/ class=md-nav__link> <span class=md-ellipsis> string_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/swap/ class=md-nav__link> <span class=md-ellipsis> swap </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/std_swap/ class=md-nav__link> <span class=md-ellipsis> std::swap&lt;basic_json&gt; </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/to_bjdata/ class=md-nav__link> <span class=md-ellipsis> to_bjdata </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/to_bson/ class=md-nav__link> <span class=md-ellipsis> to_bson </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/to_cbor/ class=md-nav__link> <span class=md-ellipsis> to_cbor </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/to_msgpack/ class=md-nav__link> <span class=md-ellipsis> to_msgpack </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/to_string/ class=md-nav__link> <span class=md-ellipsis> to_string </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/to_ubjson/ class=md-nav__link> <span class=md-ellipsis> to_ubjson </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/type/ class=md-nav__link> <span class=md-ellipsis> type </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/type_error/ class=md-nav__link> <span class=md-ellipsis> type_error </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/type_name/ class=md-nav__link> <span class=md-ellipsis> type_name </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/unflatten/ class=md-nav__link> <span class=md-ellipsis> unflatten </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/update/ class=md-nav__link> <span class=md-ellipsis> update </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/value/ class=md-nav__link> <span class=md-ellipsis> value </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/value_t/ class=md-nav__link> <span class=md-ellipsis> value_t </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_2> <div class="md-nav__link md-nav__container"> <a href=../../api/byte_container_with_subtype/ class="md-nav__link "> <span class=md-ellipsis> byte_container_with_subtype </span> </a> <label class="md-nav__link " for=__nav_4_2 id=__nav_4_2_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_2_label aria-expanded=false> <label class=md-nav__title for=__nav_4_2> <span class="md-nav__icon md-icon"></span> byte_container_with_subtype </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../api/byte_container_with_subtype/byte_container_with_subtype/ class=md-nav__link> <span class=md-ellipsis> (constructor) </span> </a> </li> <li class=md-nav__item> <a href=../../api/byte_container_with_subtype/clear_subtype/ class=md-nav__link> <span class=md-ellipsis> clear_subtype </span> </a> </li> <li class=md-nav__item> <a href=../../api/byte_container_with_subtype/has_subtype/ class=md-nav__link> <span class=md-ellipsis> has_subtype </span> </a> </li> <li class=md-nav__item> <a href=../../api/byte_container_with_subtype/set_subtype/ class=md-nav__link> <span class=md-ellipsis> set_subtype </span> </a> </li> <li class=md-nav__item> <a href=../../api/byte_container_with_subtype/subtype/ class=md-nav__link> <span class=md-ellipsis> subtype </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_3> <div class="md-nav__link md-nav__container"> <a href=../../api/adl_serializer/ class="md-nav__link "> <span class=md-ellipsis> adl_serializer </span> </a> <label class="md-nav__link " for=__nav_4_3 id=__nav_4_3_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_3_label aria-expanded=false> <label class=md-nav__title for=__nav_4_3> <span class="md-nav__icon md-icon"></span> adl_serializer </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../api/adl_serializer/from_json/ class=md-nav__link> <span class=md-ellipsis> from_json </span> </a> </li> <li class=md-nav__item> <a href=../../api/adl_serializer/to_json/ class=md-nav__link> <span class=md-ellipsis> to_json </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../api/json/ class=md-nav__link> <span class=md-ellipsis> json </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_5> <div class="md-nav__link md-nav__container"> <a href=../../api/json_pointer/ class="md-nav__link "> <span class=md-ellipsis> json_pointer </span> </a> <label class="md-nav__link " for=__nav_4_5 id=__nav_4_5_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_5_label aria-expanded=false> <label class=md-nav__title for=__nav_4_5> <span class="md-nav__icon md-icon"></span> json_pointer </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../api/json_pointer/json_pointer/ class=md-nav__link> <span class=md-ellipsis> (Constructor) </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/back/ class=md-nav__link> <span class=md-ellipsis> back </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/empty/ class=md-nav__link> <span class=md-ellipsis> empty </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/front/ class=md-nav__link> <span class=md-ellipsis> front </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/operator_string_t/ class=md-nav__link> <span class=md-ellipsis> operator string_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/operator_eq/ class=md-nav__link> <span class=md-ellipsis> operator== </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/operator_ne/ class=md-nav__link> <span class=md-ellipsis> operator!= </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/operator_slash/ class=md-nav__link> <span class=md-ellipsis> operator/ </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/operator_slasheq/ class=md-nav__link> <span class=md-ellipsis> operator/= </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/parent_pointer/ class=md-nav__link> <span class=md-ellipsis> parent_pointer </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/pop_back/ class=md-nav__link> <span class=md-ellipsis> pop_back </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/pop_front/ class=md-nav__link> <span class=md-ellipsis> pop_front </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/push_back/ class=md-nav__link> <span class=md-ellipsis> push_back </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/push_front/ class=md-nav__link> <span class=md-ellipsis> push_front </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/string_t/ class=md-nav__link> <span class=md-ellipsis> string_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/to_string/ class=md-nav__link> <span class=md-ellipsis> to_string </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_6> <div class="md-nav__link md-nav__container"> <a href=../../api/json_sax/ class="md-nav__link "> <span class=md-ellipsis> json_sax </span> </a> <label class="md-nav__link " for=__nav_4_6 id=__nav_4_6_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_6_label aria-expanded=false> <label class=md-nav__title for=__nav_4_6> <span class="md-nav__icon md-icon"></span> json_sax </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../api/json_sax/binary/ class=md-nav__link> <span class=md-ellipsis> binary </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_sax/boolean/ class=md-nav__link> <span class=md-ellipsis> boolean </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_sax/end_array/ class=md-nav__link> <span class=md-ellipsis> end_array </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_sax/end_object/ class=md-nav__link> <span class=md-ellipsis> end_object </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_sax/key/ class=md-nav__link> <span class=md-ellipsis> key </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_sax/null/ class=md-nav__link> <span class=md-ellipsis> null </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_sax/number_float/ class=md-nav__link> <span class=md-ellipsis> number_float </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_sax/number_integer/ class=md-nav__link> <span class=md-ellipsis> number_integer </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_sax/number_unsigned/ class=md-nav__link> <span class=md-ellipsis> number_unsigned </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_sax/parse_error/ class=md-nav__link> <span class=md-ellipsis> parse_error </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_sax/start_array/ class=md-nav__link> <span class=md-ellipsis> start_array </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_sax/start_object/ class=md-nav__link> <span class=md-ellipsis> start_object </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_sax/string/ class=md-nav__link> <span class=md-ellipsis> string </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../api/operator_ltlt/ class=md-nav__link> <span class=md-ellipsis> operator<<(basic_json), operator<<(json_pointer) </span> </a> </li> <li class=md-nav__item> <a href=../../api/operator_gtgt/ class=md-nav__link> <span class=md-ellipsis> operator>>(basic_json) </span> </a> </li> <li class=md-nav__item> <a href=../../api/operator_literal_json/ class=md-nav__link> <span class=md-ellipsis> operator""_json </span> </a> </li> <li class=md-nav__item> <a href=../../api/operator_literal_json_pointer/ class=md-nav__link> <span class=md-ellipsis> operator""_json_pointer </span> </a> </li> <li class=md-nav__item> <a href=../../api/ordered_json/ class=md-nav__link> <span class=md-ellipsis> ordered_json </span> </a> </li> <li class=md-nav__item> <a href=../../api/ordered_map/ class=md-nav__link> <span class=md-ellipsis> ordered_map </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_13> <div class="md-nav__link md-nav__container"> <a href=../../api/macros/ class="md-nav__link "> <span class=md-ellipsis> macros </span> </a> <label class="md-nav__link " for=__nav_4_13 id=__nav_4_13_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_13_label aria-expanded=false> <label class=md-nav__title for=__nav_4_13> <span class="md-nav__icon md-icon"></span> macros </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../api/macros/json_assert/ class=md-nav__link> <span class=md-ellipsis> JSON_ASSERT </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_brace_init_copy_semantics/ class=md-nav__link> <span class=md-ellipsis> JSON_BRACE_INIT_COPY_SEMANTICS </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_throw_user/ class=md-nav__link> <span class=md-ellipsis> JSON_CATCH_USER, JSON_THROW_USER, JSON_TRY_USER </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_diagnostics/ class=md-nav__link> <span class=md-ellipsis> JSON_DIAGNOSTICS </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_diagnostic_positions/ class=md-nav__link> <span class=md-ellipsis> JSON_DIAGNOSTIC_POSITIONS </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_disable_enum_serialization/ class=md-nav__link> <span class=md-ellipsis> JSON_DISABLE_ENUM_SERIALIZATION </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_has_cpp_11/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_CPP_11, JSON_HAS_CPP_14, JSON_HAS_CPP_17, JSON_HAS_CPP_20 </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_has_filesystem/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_EXPERIMENTAL_FILESYSTEM, JSON_HAS_FILESYSTEM </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_has_ranges/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_RANGES </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_has_static_rtti/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_STATIC_RTTI </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_has_three_way_comparison/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_THREE_WAY_COMPARISON </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_noexception/ class=md-nav__link> <span class=md-ellipsis> JSON_NOEXCEPTION </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_no_io/ class=md-nav__link> <span class=md-ellipsis> JSON_NO_IO </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_skip_library_version_check/ class=md-nav__link> <span class=md-ellipsis> JSON_SKIP_LIBRARY_VERSION_CHECK </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_skip_unsupported_compiler_check/ class=md-nav__link> <span class=md-ellipsis> JSON_SKIP_UNSUPPORTED_COMPILER_CHECK </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_use_global_udls/ class=md-nav__link> <span class=md-ellipsis> JSON_USE_GLOBAL_UDLS </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_use_implicit_conversions/ class=md-nav__link> <span class=md-ellipsis> JSON_USE_IMPLICIT_CONVERSIONS </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_use_legacy_discarded_value_comparison/ class=md-nav__link> <span class=md-ellipsis> JSON_USE_LEGACY_DISCARDED_VALUE_COMPARISON </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/nlohmann_define_derived_type/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_ONLY_SERIALIZE, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/nlohmann_define_type_intrusive/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_TYPE_INTRUSIVE, NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_TYPE_INTRUSIVE_ONLY_SERIALIZE </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/nlohmann_define_type_non_intrusive/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/nlohmann_define_type_with_names/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_TYPE_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/nlohmann_json_namespace/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_NAMESPACE </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/nlohmann_json_namespace_begin/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_NAMESPACE_BEGIN, NLOHMANN_JSON_NAMESPACE_END </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/nlohmann_json_namespace_no_version/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_NAMESPACE_NO_VERSION </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/nlohmann_json_serialize_enum/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_SERIALIZE_ENUM </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/nlohmann_json_serialize_enum_strict/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_SERIALIZE_ENUM_STRICT </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/nlohmann_json_version_major/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_VERSION_MAJOR, NLOHMANN_JSON_VERSION_MINOR, NLOHMANN_JSON_VERSION_PATCH </span> </a> </li> </ul> </nav> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_5> <div class="md-nav__link md-nav__container"> <a href=../../community/ class="md-nav__link "> <span class=md-ellipsis> Community </span> </a> <label class="md-nav__link " for=__nav_5 id=__nav_5_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_5_label aria-expanded=false> <label class=md-nav__title for=__nav_5> <span class="md-nav__icon md-icon"></span> Community </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../community/code_of_conduct/ class=md-nav__link> <span class=md-ellipsis> Code of Conduct </span> </a> </li> <li class=md-nav__item> <a href=../../community/contribution_guidelines/ class=md-nav__link> <span class=md-ellipsis> Contribution Guidelines </span> </a> </li> <li class=md-nav__item> <a href=../../community/quality_assurance/ class=md-nav__link> <span class=md-ellipsis> Quality assurance </span> </a> </li> <li class=md-nav__item> <a href=../../community/governance/ class=md-nav__link> <span class=md-ellipsis> Governance </span> </a> </li> <li class=md-nav__item> <a href=../../community/security_policy/ class=md-nav__link> <span class=md-ellipsis> Security Policy </span> </a> </li> </ul> </nav> </li> </ul> </nav> </div> </div> </div> <div class="md-sidebar md-sidebar--secondary" data-md-component=sidebar data-md-type=toc> <div class=md-sidebar__scrollwrap> <div class=md-sidebar__inner> <nav class="md-nav md-nav--secondary" aria-label="Table of contents"> <label class=md-nav__title for=__toc> <span class="md-nav__icon md-icon"></span> Table of contents </label> <ul class=md-nav__list data-md-component=toc data-md-scrollfix> <li class=md-nav__item> <a href=#integration class=md-nav__link> <span class=md-ellipsis> Integration </span> </a> <nav class=md-nav aria-label=Integration> <ul class=md-nav__list> <li class=md-nav__item> <a href=#external class=md-nav__link> <span class=md-ellipsis> External </span> </a> </li> <li class=md-nav__item> <a href=#embedded class=md-nav__link> <span class=md-ellipsis> Embedded </span> </a> </li> <li class=md-nav__item> <a href=#supporting-both class=md-nav__link> <span class=md-ellipsis> Supporting Both </span> </a> </li> <li class=md-nav__item> <a href=#fetchcontent class=md-nav__link> <span class=md-ellipsis> FetchContent </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=#cmake-options class=md-nav__link> <span class=md-ellipsis> CMake Options </span> </a> <nav class=md-nav aria-label="CMake Options"> <ul class=md-nav__list> <li class=md-nav__item> <a href=#json_buildtests class=md-nav__link> <span class=md-ellipsis> JSON_BuildTests </span> </a> </li> <li class=md-nav__item> <a href=#json_ci class=md-nav__link> <span class=md-ellipsis> JSON_CI </span> </a> </li> <li class=md-nav__item> <a href=#json_diagnostics class=md-nav__link> <span class=md-ellipsis> JSON_Diagnostics </span> </a> </li> <li class=md-nav__item> <a href=#json_diagnostic_positions class=md-nav__link> <span class=md-ellipsis> JSON_Diagnostic_Positions </span> </a> </li> <li class=md-nav__item> <a href=#json_disableenumserialization class=md-nav__link> <span class=md-ellipsis> JSON_DisableEnumSerialization </span> </a> </li> <li class=md-nav__item> <a href=#json_fasttests class=md-nav__link> <span class=md-ellipsis> JSON_FastTests </span> </a> </li> <li class=md-nav__item> <a href=#json_globaludls class=md-nav__link> <span class=md-ellipsis> JSON_GlobalUDLs </span> </a> </li> <li class=md-nav__item> <a href=#json_implicitconversions class=md-nav__link> <span class=md-ellipsis> JSON_ImplicitConversions </span> </a> </li> <li class=md-nav__item> <a href=#json_install class=md-nav__link> <span class=md-ellipsis> JSON_Install </span> </a> </li> <li class=md-nav__item> <a href=#json_legacydiscardedvaluecomparison class=md-nav__link> <span class=md-ellipsis> JSON_LegacyDiscardedValueComparison </span> </a> </li> <li class=md-nav__item> <a href=#json_multipleheaders class=md-nav__link> <span class=md-ellipsis> JSON_MultipleHeaders </span> </a> </li> <li class=md-nav__item> <a href=#json_systeminclude class=md-nav__link> <span class=md-ellipsis> JSON_SystemInclude </span> </a> </li> <li class=md-nav__item> <a href=#json_valgrind class=md-nav__link> <span class=md-ellipsis> JSON_Valgrind </span> </a> </li> <li class=md-nav__item> <a href=#nlohmann_json_build_modules class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_BUILD_MODULES </span> </a> </li> </ul> </nav> </li> </ul> </nav> </div> </div> </div> <div class=md-content data-md-component=content> <article class="md-content__inner md-typeset"> <a href="https://github.com/nlohmann/json/edit/develop/docs/mkdocs/docs/integration/cmake.md" title="Edit this page" class="md-content__button md-icon" rel="edit"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M10 20H6V4h7v5h5v3.1l2-2V8l-6-6H6c-1.1 0-2 .9-2 2v16c0 1.1.9 2 2 2h4zm10.2-7c.1 0 .3.1.4.2l1.3 1.3c.2.2.2.6 0 .8l-1 1-2.1-2.1 1-1c.1-.1.2-.2.4-.2m0 3.9L14.1 23H12v-2.1l6.1-6.1z"/></svg> </a> <a href="https://github.com/nlohmann/json/raw/develop/docs/mkdocs/docs/integration/cmake.md" title="View source of this page" class="md-content__button md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M17 18c.56 0 1 .44 1 1s-.44 1-1 1-1-.44-1-1 .44-1 1-1m0-3c-2.73 0-5.06 1.66-6 4 .94 2.34 3.27 4 6 4s5.06-1.66 6-4c-.94-2.34-3.27-4-6-4m0 6.5a2.5 2.5 0 0 1-2.5-2.5 2.5 2.5 0 0 1 2.5-2.5 2.5 2.5 0 0 1 2.5 2.5 2.5 2.5 0 0 1-2.5 2.5M9.27 20H6V4h7v5h5v4.07c.7.08 1.36.25 2 .49V8l-6-6H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h4.5a8.2 8.2 0 0 1-1.23-2"/></svg> </a> <h1 id=cmake>CMake<a class=headerlink href=#cmake title="Permanent link">&para;</a></h1> <h2 id=integration>Integration<a class=headerlink href=#integration title="Permanent link">&para;</a></h2> <p>You can use the <code>nlohmann_json::nlohmann_json</code> interface target in CMake. This target populates the appropriate usage requirements for <a href="https://cmake.org/cmake/help/latest/prop_tgt/INTERFACE_INCLUDE_DIRECTORIES.html"><code>INTERFACE_INCLUDE_DIRECTORIES</code></a> to point to the appropriate include directories and <a href="https://cmake.org/cmake/help/latest/prop_tgt/INTERFACE_COMPILE_FEATURES.html"><code>INTERFACE_COMPILE_FEATURES</code></a> for the necessary C++11 flags.</p> <h3 id=external>External<a class=headerlink href=#external title="Permanent link">&para;</a></h3> <p>To use this library from a CMake project, you can locate it directly with <a href="https://cmake.org/cmake/help/latest/command/find_package.html"><code>find_package()</code></a> and use the namespaced imported target from the generated package configuration:</p> <div class="admonition example"> <p class=admonition-title>Example</p> <div class=highlight><span class=filename>CMakeLists.txt</span><pre><span></span><code><span class=nb>cmake_minimum_required</span><span class=p>(</span><span class=s>VERSION</span><span class=w> </span><span class=s>3.5</span><span class=p>)</span>
 <span class=nb>project</span><span class=p>(</span><span class=s>ExampleProject</span><span class=w> </span><span class=s>LANGUAGES</span><span class=w> </span><span class=s>CXX</span><span class=p>)</span>
 
 <span class=nb>find_package</span><span class=p>(</span><span class=s>nlohmann_json</span><span class=w> </span><span class=s>3.12.0</span><span class=w> </span><span class=s>REQUIRED</span><span class=p>)</span>
@@ -46,4 +46,4 @@
 <span class=w>    </span><span class=s>GIT_REPOSITORY</span><span class=w> </span><span class=s>https://github.com/nlohmann/json</span>
 <span class=w>    </span><span class=s>GIT_TAG</span><span class=w> </span><span class=s>v3.12.0</span>
 <span class=p>)</span>
-</code></pre></div> <p>However, the repository <a href="https://github.com/nlohmann/json">https://github.com/nlohmann/json</a> download size is quite large.</p> </div> <h2 id=cmake-options>CMake Options<a class=headerlink href=#cmake-options title="Permanent link">&para;</a></h2> <h3 id=json_buildtests><code>JSON_BuildTests</code><a class=headerlink href=#json_buildtests title="Permanent link">&para;</a></h3> <p>Build the unit tests when <a href="https://cmake.org/cmake/help/latest/command/enable_testing.html"><code>BUILD_TESTING</code></a> is enabled. This option is <code>ON</code> by default if the library's CMake project is the top project. That is, when integrating the library as described above, the test suite is not built unless explicitly switched on with this option.</p> <h3 id=json_ci><code>JSON_CI</code><a class=headerlink href=#json_ci title="Permanent link">&para;</a></h3> <p>Enable <abbr title="Continuous Integration">CI</abbr> build targets. The exact targets are used during the several <abbr title="Continuous Integration">CI</abbr> steps and are subject to change without notice. This option is <code>OFF</code> by default.</p> <h3 id=json_diagnostics><code>JSON_Diagnostics</code><a class=headerlink href=#json_diagnostics title="Permanent link">&para;</a></h3> <p>Enable <a href=../../home/exceptions/#extended-diagnostic-messages>extended diagnostic messages</a> by defining macro <a href=../../api/macros/json_diagnostics/ ><code>JSON_DIAGNOSTICS</code></a>. This option is <code>OFF</code> by default.</p> <h3 id=json_diagnostic_positions><code>JSON_Diagnostic_Positions</code><a class=headerlink href=#json_diagnostic_positions title="Permanent link">&para;</a></h3> <p>Enable position diagnostics by defining macro <a href=../../api/macros/json_diagnostic_positions/ ><code>JSON_DIAGNOSTIC_POSITIONS</code></a>. This option is <code>OFF</code> by default.</p> <h3 id=json_disableenumserialization><code>JSON_DisableEnumSerialization</code><a class=headerlink href=#json_disableenumserialization title="Permanent link">&para;</a></h3> <p>Disable default <code>enum</code> serialization by defining the macro <a href=../../api/macros/json_disable_enum_serialization/ ><code>JSON_DISABLE_ENUM_SERIALIZATION</code></a>. This option is <code>OFF</code> by default.</p> <h3 id=json_fasttests><code>JSON_FastTests</code><a class=headerlink href=#json_fasttests title="Permanent link">&para;</a></h3> <p>Skip expensive/slow test suites. This option is <code>OFF</code> by default. Depends on <code>JSON_BuildTests</code>.</p> <h3 id=json_globaludls><code>JSON_GlobalUDLs</code><a class=headerlink href=#json_globaludls title="Permanent link">&para;</a></h3> <p>Place user-defined string literals in the global namespace by defining the macro <a href=../../api/macros/json_use_global_udls/ ><code>JSON_USE_GLOBAL_UDLS</code></a>. This option is <code>OFF</code> by default.</p> <h3 id=json_implicitconversions><code>JSON_ImplicitConversions</code><a class=headerlink href=#json_implicitconversions title="Permanent link">&para;</a></h3> <p>Enable implicit conversions by defining macro <a href=../../api/macros/json_use_implicit_conversions/ ><code>JSON_USE_IMPLICIT_CONVERSIONS</code></a>. This option is <code>ON</code> by default.</p> <h3 id=json_install><code>JSON_Install</code><a class=headerlink href=#json_install title="Permanent link">&para;</a></h3> <p>Install CMake targets during install step. This option is <code>ON</code> by default if the library's CMake project is the top project.</p> <h3 id=json_legacydiscardedvaluecomparison><code>JSON_LegacyDiscardedValueComparison</code><a class=headerlink href=#json_legacydiscardedvaluecomparison title="Permanent link">&para;</a></h3> <p>Enable the (incorrect) legacy comparison behavior of discarded <abbr title="JavaScript Object Notation">JSON</abbr> values by defining macro <a href=../../api/macros/json_use_legacy_discarded_value_comparison/ ><code>JSON_USE_LEGACY_DISCARDED_VALUE_COMPARISON</code></a>. This option is <code>OFF</code> by default.</p> <h3 id=json_multipleheaders><code>JSON_MultipleHeaders</code><a class=headerlink href=#json_multipleheaders title="Permanent link">&para;</a></h3> <p>Use the non-amalgamated version of the library. This option is <code>OFF</code> by default.</p> <h3 id=json_systeminclude><code>JSON_SystemInclude</code><a class=headerlink href=#json_systeminclude title="Permanent link">&para;</a></h3> <p>Treat the library headers like system headers (i.e., adding <code>SYSTEM</code> to the <a href="https://cmake.org/cmake/help/latest/command/target_include_directories.html"><code>target_include_directories</code></a> call) to check for this library by tools like Clang-Tidy. This option is <code>OFF</code> by default.</p> <h3 id=json_valgrind><code>JSON_Valgrind</code><a class=headerlink href=#json_valgrind title="Permanent link">&para;</a></h3> <p>Execute the test suite with <a href="https://valgrind.org">Valgrind</a>. This option is <code>OFF</code> by default. Depends on <code>JSON_BuildTests</code>.</p> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 23, 2026 11:16:18 UTC">June 23, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
+</code></pre></div> <p>However, the repository <a href="https://github.com/nlohmann/json">https://github.com/nlohmann/json</a> download size is quite large.</p> </div> <h2 id=cmake-options>CMake Options<a class=headerlink href=#cmake-options title="Permanent link">&para;</a></h2> <h3 id=json_buildtests><code>JSON_BuildTests</code><a class=headerlink href=#json_buildtests title="Permanent link">&para;</a></h3> <p>Build the unit tests when <a href="https://cmake.org/cmake/help/latest/command/enable_testing.html"><code>BUILD_TESTING</code></a> is enabled. This option is <code>ON</code> by default if the library's CMake project is the top project. That is, when integrating the library as described above, the test suite is not built unless explicitly switched on with this option.</p> <h3 id=json_ci><code>JSON_CI</code><a class=headerlink href=#json_ci title="Permanent link">&para;</a></h3> <p>Enable <abbr title="Continuous Integration">CI</abbr> build targets. The exact targets are used during the several <abbr title="Continuous Integration">CI</abbr> steps and are subject to change without notice. This option is <code>OFF</code> by default.</p> <h3 id=json_diagnostics><code>JSON_Diagnostics</code><a class=headerlink href=#json_diagnostics title="Permanent link">&para;</a></h3> <p>Enable <a href=../../home/exceptions/#extended-diagnostic-messages>extended diagnostic messages</a> by defining macro <a href=../../api/macros/json_diagnostics/ ><code>JSON_DIAGNOSTICS</code></a>. This option is <code>OFF</code> by default.</p> <h3 id=json_diagnostic_positions><code>JSON_Diagnostic_Positions</code><a class=headerlink href=#json_diagnostic_positions title="Permanent link">&para;</a></h3> <p>Enable position diagnostics by defining macro <a href=../../api/macros/json_diagnostic_positions/ ><code>JSON_DIAGNOSTIC_POSITIONS</code></a>. This option is <code>OFF</code> by default.</p> <h3 id=json_disableenumserialization><code>JSON_DisableEnumSerialization</code><a class=headerlink href=#json_disableenumserialization title="Permanent link">&para;</a></h3> <p>Disable default <code>enum</code> serialization by defining the macro <a href=../../api/macros/json_disable_enum_serialization/ ><code>JSON_DISABLE_ENUM_SERIALIZATION</code></a>. This option is <code>OFF</code> by default.</p> <h3 id=json_fasttests><code>JSON_FastTests</code><a class=headerlink href=#json_fasttests title="Permanent link">&para;</a></h3> <p>Skip expensive/slow test suites. This option is <code>OFF</code> by default. Depends on <code>JSON_BuildTests</code>.</p> <h3 id=json_globaludls><code>JSON_GlobalUDLs</code><a class=headerlink href=#json_globaludls title="Permanent link">&para;</a></h3> <p>Place user-defined string literals in the global namespace by defining the macro <a href=../../api/macros/json_use_global_udls/ ><code>JSON_USE_GLOBAL_UDLS</code></a>. This option is <code>OFF</code> by default.</p> <h3 id=json_implicitconversions><code>JSON_ImplicitConversions</code><a class=headerlink href=#json_implicitconversions title="Permanent link">&para;</a></h3> <p>Enable implicit conversions by defining macro <a href=../../api/macros/json_use_implicit_conversions/ ><code>JSON_USE_IMPLICIT_CONVERSIONS</code></a>. This option is <code>ON</code> by default.</p> <h3 id=json_install><code>JSON_Install</code><a class=headerlink href=#json_install title="Permanent link">&para;</a></h3> <p>Install CMake targets during install step. This option is <code>ON</code> by default if the library's CMake project is the top project.</p> <h3 id=json_legacydiscardedvaluecomparison><code>JSON_LegacyDiscardedValueComparison</code><a class=headerlink href=#json_legacydiscardedvaluecomparison title="Permanent link">&para;</a></h3> <p>Enable the (incorrect) legacy comparison behavior of discarded <abbr title="JavaScript Object Notation">JSON</abbr> values by defining macro <a href=../../api/macros/json_use_legacy_discarded_value_comparison/ ><code>JSON_USE_LEGACY_DISCARDED_VALUE_COMPARISON</code></a>. This option is <code>OFF</code> by default.</p> <h3 id=json_multipleheaders><code>JSON_MultipleHeaders</code><a class=headerlink href=#json_multipleheaders title="Permanent link">&para;</a></h3> <p>Use the non-amalgamated version of the library. This option is <code>ON</code> by default.</p> <h3 id=json_systeminclude><code>JSON_SystemInclude</code><a class=headerlink href=#json_systeminclude title="Permanent link">&para;</a></h3> <p>Treat the library headers like system headers (i.e., adding <code>SYSTEM</code> to the <a href="https://cmake.org/cmake/help/latest/command/target_include_directories.html"><code>target_include_directories</code></a> call) to check for this library by tools like Clang-Tidy. This option is <code>OFF</code> by default.</p> <h3 id=json_valgrind><code>JSON_Valgrind</code><a class=headerlink href=#json_valgrind title="Permanent link">&para;</a></h3> <p>Execute the test suite with <a href="https://valgrind.org">Valgrind</a>. This option is <code>OFF</code> by default. Depends on <code>JSON_BuildTests</code>.</p> <h3 id=nlohmann_json_build_modules><code>NLOHMANN_JSON_BUILD_MODULES</code><a class=headerlink href=#nlohmann_json_build_modules title="Permanent link">&para;</a></h3> <p>Build the experimental <a href=../../features/modules/ >C++ module</a> <code>nlohmann.json</code> (requires CMake 3.28 or later and C++20). This option is <code>OFF</code> by default.</p> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 29, 2026 20:15:18 UTC">June 29, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
diff --git a/integration/index.html b/integration/index.html
index 8a6f068..cfd35ff 100644
--- a/integration/index.html
+++ b/integration/index.html
@@ -2,4 +2,4 @@
 
 <span class=c1>// for convenience</span>
 <span class=k>using</span><span class=w> </span><span class=n>json</span><span class=w> </span><span class=o>=</span><span class=w> </span><span class=n>nlohmann</span><span class=o>::</span><span class=n>json</span><span class=p>;</span>
-</code></pre></div> <p>to the files you want to process <abbr title="JavaScript Object Notation">JSON</abbr> and set the necessary switches to enable C++11 (e.g., <code>-std=c++11</code> for <abbr title="GNU Compiler Collection">GCC</abbr> and Clang).</p> <p>You can further use file <a href="https://github.com/nlohmann/json/blob/develop/single_include/nlohmann/json_fwd.hpp"><code>single_include/nlohmann/json_fwd.hpp</code></a> for forward declarations.</p> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 23, 2026 11:16:18 UTC">June 23, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
+</code></pre></div> <p>to the files you want to process <abbr title="JavaScript Object Notation">JSON</abbr> and set the necessary switches to enable C++11 (e.g., <code>-std=c++11</code> for <abbr title="GNU Compiler Collection">GCC</abbr> and Clang).</p> <p>You can further use file <a href="https://github.com/nlohmann/json/blob/develop/single_include/nlohmann/json_fwd.hpp"><code>single_include/nlohmann/json_fwd.hpp</code></a> for forward declarations.</p> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 29, 2026 20:15:18 UTC">June 29, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
diff --git a/integration/migration_guide/index.html b/integration/migration_guide/index.html
index 2772ca8..1e54dce 100644
--- a/integration/migration_guide/index.html
+++ b/integration/migration_guide/index.html
@@ -39,7 +39,7 @@
 </code></pre></div> </div> <div class=tabbed-block> <div class=highlight><pre><span></span><code><span class=n>nlohmann</span><span class=o>::</span><span class=n>json</span><span class=w> </span><span class=n>j</span><span class=w> </span><span class=o>=</span><span class=w> </span><span class=s>&quot;Hello, world!&quot;</span><span class=p>;</span>
 <span class=n>std</span><span class=o>::</span><span class=n>string</span><span class=w> </span><span class=n>s</span><span class=p>;</span>
 <span class=n>j</span><span class=p>.</span><span class=n>get_to</span><span class=p>(</span><span class=n>s</span><span class=p>);</span>
-</code></pre></div> </div> </div> </div> <p>You can prepare existing code by already defining <a href=../../api/macros/json_use_implicit_conversions/ ><code>JSON_USE_IMPLICIT_CONVERSIONS</code></a> to <code>0</code> and replace any implicit conversions with calls to <a href=../../api/basic_json/get/ ><code>get</code></a>.</p> <h2 id=import-namespace-literals-for-udls>Import namespace <code>literals</code> for UDLs<a class=headerlink href=#import-namespace-literals-for-udls title="Permanent link">&para;</a></h2> <p>The user-defined string literals <a href=../../api/operator_literal_json/ ><code>operator""_json</code></a> and <a href=../../api/operator_literal_json_pointer/ ><code>operator""_json_pointer</code></a> will be removed from the global namespace in the next major release of the library.</p> <div class="tabbed-set tabbed-alternate" data-tabs=10:2><input checked=checked id=__tabbed_10_1 name=__tabbed_10 type=radio><input id=__tabbed_10_2 name=__tabbed_10 type=radio><div class=tabbed-labels><label for=__tabbed_10_1>Deprecated</label><label for=__tabbed_10_2>Future-proof</label></div> <div class=tabbed-content> <div class=tabbed-block> <div class=highlight><pre><span></span><code><span class=n>nlohmann</span><span class=o>::</span><span class=n>json</span><span class=w> </span><span class=n>j</span><span class=w> </span><span class=o>=</span><span class=w> </span><span class=s>&quot;[1,2,3]&quot;</span><span class=n>_json</span><span class=p>;</span>
+</code></pre></div> </div> </div> </div> <h2 id=import-namespace-literals-for-udls>Import namespace <code>literals</code> for UDLs<a class=headerlink href=#import-namespace-literals-for-udls title="Permanent link">&para;</a></h2> <p>The user-defined string literals <a href=../../api/operator_literal_json/ ><code>operator""_json</code></a> and <a href=../../api/operator_literal_json_pointer/ ><code>operator""_json_pointer</code></a> will be removed from the global namespace in the next major release of the library.</p> <div class="tabbed-set tabbed-alternate" data-tabs=10:2><input checked=checked id=__tabbed_10_1 name=__tabbed_10 type=radio><input id=__tabbed_10_2 name=__tabbed_10 type=radio><div class=tabbed-labels><label for=__tabbed_10_1>Deprecated</label><label for=__tabbed_10_2>Future-proof</label></div> <div class=tabbed-content> <div class=tabbed-block> <div class=highlight><pre><span></span><code><span class=n>nlohmann</span><span class=o>::</span><span class=n>json</span><span class=w> </span><span class=n>j</span><span class=w> </span><span class=o>=</span><span class=w> </span><span class=s>&quot;[1,2,3]&quot;</span><span class=n>_json</span><span class=p>;</span>
 </code></pre></div> </div> <div class=tabbed-block> <div class=highlight><pre><span></span><code><span class=k>using</span><span class=w> </span><span class=k>namespace</span><span class=w> </span><span class=nn>nlohmann</span><span class=o>::</span><span class=nn>literals</span><span class=p>;</span>
 <span class=n>nlohmann</span><span class=o>::</span><span class=n>json</span><span class=w> </span><span class=n>j</span><span class=w> </span><span class=o>=</span><span class=w> </span><span class=s>&quot;[1,2,3]&quot;</span><span class=n>_json</span><span class=p>;</span>
 </code></pre></div> </div> </div> </div> <p>To prepare existing code, define <a href=../../api/macros/json_use_global_udls/ ><code>JSON_USE_GLOBAL_UDLS</code></a> to <code>0</code> and bring the string literals into scope where needed.</p> <h2 id=do-not-hard-code-the-complete-library-namespace>Do not hard-code the complete library namespace<a class=headerlink href=#do-not-hard-code-the-complete-library-namespace title="Permanent link">&para;</a></h2> <p>The <a href=../../features/namespace/ ><code>nlohmann</code> namespace</a> contains a sub-namespace to avoid problems when different versions or configurations of the library are used in the same project. Always use <code>nlohmann</code> as namespace or, when the exact version and configuration is relevant, use macro <a href=../../api/macros/nlohmann_json_namespace/ ><code>NLOHMANN_JSON_NAMESPACE</code></a> to denote the namespace.</p> <div class="tabbed-set tabbed-alternate" data-tabs=11:3><input checked=checked id=__tabbed_11_1 name=__tabbed_11 type=radio><input id=__tabbed_11_2 name=__tabbed_11 type=radio><input id=__tabbed_11_3 name=__tabbed_11 type=radio><div class=tabbed-labels><label for=__tabbed_11_1>Dangerous</label><label for=__tabbed_11_2>Future-proof</label><label for=__tabbed_11_3>Future-proof (alternative)</label></div> <div class=tabbed-content> <div class=tabbed-block> <div class=highlight><pre><span></span><code><span class=kt>void</span><span class=w> </span><span class=nf>to_json</span><span class=p>(</span><span class=n>nlohmann</span><span class=o>::</span><span class=n>json_abi_v3_11_2</span><span class=o>::</span><span class=n>json</span><span class=o>&amp;</span><span class=w> </span><span class=n>j</span><span class=p>,</span><span class=w> </span><span class=k>const</span><span class=w> </span><span class=n>person</span><span class=o>&amp;</span><span class=w> </span><span class=n>p</span><span class=p>)</span>
@@ -54,4 +54,4 @@
 <span class=p>{</span>
 <span class=w>    </span><span class=n>j</span><span class=p>[</span><span class=s>&quot;age&quot;</span><span class=p>]</span><span class=w> </span><span class=o>=</span><span class=w> </span><span class=n>p</span><span class=p>.</span><span class=n>age</span><span class=p>;</span>
 <span class=p>}</span>
-</code></pre></div> </div> </div> </div> <h2 id=do-not-use-the-details-namespace>Do not use the <code>details</code> namespace<a class=headerlink href=#do-not-use-the-details-namespace title="Permanent link">&para;</a></h2> <p>The <code>details</code> namespace is not part of the public <abbr title="Application Programming Interfaces">API</abbr> of the library and can change in any version without an announcement. Do not rely on any function or type in the <code>details</code> namespace.</p> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 23, 2026 11:16:18 UTC">June 23, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
+</code></pre></div> </div> </div> </div> <h2 id=do-not-use-the-details-namespace>Do not use the <code>details</code> namespace<a class=headerlink href=#do-not-use-the-details-namespace title="Permanent link">&para;</a></h2> <p>The <code>details</code> namespace is not part of the public <abbr title="Application Programming Interfaces">API</abbr> of the library and can change in any version without an announcement. Do not rely on any function or type in the <code>details</code> namespace.</p> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 29, 2026 20:15:18 UTC">June 29, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
diff --git a/integration/package_managers/index.html b/integration/package_managers/index.html
index 2cdab2e..d3076c5 100644
--- a/integration/package_managers/index.html
+++ b/integration/package_managers/index.html
@@ -1,4 +1,4 @@
-<!doctype html><html lang=en class=no-js> <head><meta charset=utf-8><meta name=viewport content="width=device-width,initial-scale=1"><meta name=author content="Niels Lohmann"><link href="https://json.nlohmann.me/integration/package_managers/" rel="canonical"><link href=../cmake/ rel=prev><link href=../pkg-config/ rel=next><link rel=icon href=../../assets/images/favicon.png><meta name=generator content="mkdocs-1.6.1, mkdocs-material-9.7.6"><title>Package Managers - JSON for Modern C++</title><link rel=stylesheet href=../../assets/stylesheets/main.484c7ddc.min.css><link rel=stylesheet href=../../assets/stylesheets/palette.ab4e12ef.min.css><link rel="stylesheet" href="../../assets/external/fonts.googleapis.com/css.61a430c9.css"><style>:root{--md-text-font:"Roboto";--md-code-font:"JetBrains Mono"}</style><link rel=stylesheet href=../../css/custom.css><script>__md_scope=new URL("../..",location),__md_hash=e=>[...e].reduce(((e,_)=>(e<<5)-e+_.charCodeAt(0)),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script></head> <body dir=ltr data-md-color-scheme=default data-md-color-primary=indigo data-md-color-accent=indigo> <input class=md-toggle data-md-toggle=drawer type=checkbox id=__drawer autocomplete=off> <input class=md-toggle data-md-toggle=search type=checkbox id=__search autocomplete=off> <label class=md-overlay for=__drawer></label> <div data-md-component=skip> <a href=#package-managers class=md-skip> Skip to content </a> </div> <div data-md-component=announce> </div> <header class=md-header data-md-component=header> <nav class="md-header__inner md-grid" aria-label=Header> <a href=../.. title="JSON for Modern C++" class="md-header__button md-logo" aria-label="JSON for Modern C++" data-md-component=logo> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54"/></svg> </a> <label class="md-header__button md-icon" for=__drawer> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M3 6h18v2H3zm0 5h18v2H3zm0 5h18v2H3z"/></svg> </label> <div class=md-header__title data-md-component=header-title> <div class=md-header__ellipsis> <div class=md-header__topic> <span class=md-ellipsis> JSON for Modern C++ </span> </div> <div class=md-header__topic data-md-component=header-topic> <span class=md-ellipsis> Package Managers </span> </div> </div> </div> <form class=md-header__option data-md-component=palette> <input class=md-option data-md-color-media="(prefers-color-scheme: light)" data-md-color-scheme=default data-md-color-primary=indigo data-md-color-accent=indigo aria-label="Switch to dark mode" type=radio name=__palette id=__palette_0> <label class="md-header__button md-icon" title="Switch to dark mode" for=__palette_1 hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a4 4 0 0 0-4 4 4 4 0 0 0 4 4 4 4 0 0 0 4-4 4 4 0 0 0-4-4m0 10a6 6 0 0 1-6-6 6 6 0 0 1 6-6 6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12z"/></svg> </label> <input class=md-option data-md-color-media="(prefers-color-scheme: dark)" data-md-color-scheme=slate data-md-color-primary=indigo data-md-color-accent=indigo aria-label="Switch to light mode" type=radio name=__palette id=__palette_1> <label class="md-header__button md-icon" title="Switch to light mode" for=__palette_0 hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 18c-.89 0-1.74-.2-2.5-.55C11.56 16.5 13 14.42 13 12s-1.44-4.5-3.5-5.45C10.26 6.2 11.11 6 12 6a6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12z"/></svg> </label> </form> <script>var palette=__md_get("__palette");if(palette&&palette.color){if("(prefers-color-scheme)"===palette.color.media){var media=matchMedia("(prefers-color-scheme: light)"),input=document.querySelector(media.matches?"[data-md-color-media='(prefers-color-scheme: light)']":"[data-md-color-media='(prefers-color-scheme: dark)']");palette.color.media=input.getAttribute("data-md-color-media"),palette.color.scheme=input.getAttribute("data-md-color-scheme"),palette.color.primary=input.getAttribute("data-md-color-primary"),palette.color.accent=input.getAttribute("data-md-color-accent")}for(var[key,value]of Object.entries(palette.color))document.body.setAttribute("data-md-color-"+key,value)}</script> <label class="md-header__button md-icon" for=__search> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg> </label> <div class=md-search data-md-component=search role=dialog> <label class=md-search__overlay for=__search></label> <div class=md-search__inner role=search> <form class=md-search__form name=search> <input type=text class=md-search__input name=query aria-label=Search placeholder=Search autocapitalize=off autocorrect=off autocomplete=off spellcheck=false data-md-component=search-query required> <label class="md-search__icon md-icon" for=__search> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11z"/></svg> </label> <nav class=md-search__options aria-label=Search> <button type=reset class="md-search__icon md-icon" title=Clear aria-label=Clear tabindex=-1> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z"/></svg> </button> </nav> </form> <div class=md-search__output> <div class=md-search__scrollwrap tabindex=0 data-md-scrollfix> <div class=md-search-result data-md-component=search-result> <div class=md-search-result__meta> Initializing search </div> <ol class=md-search-result__list role=presentation></ol> </div> </div> </div> </div> </div> <div class=md-header__source> <a href="https://github.com/nlohmann/json" title="Go to repository" class="md-source" data-md-component="source"> <div class="md-source__icon md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </div> <div class=md-source__repository> nlohmann/json </div> </a> </div> </nav> </header> <div class=md-container data-md-component=container> <nav class=md-tabs aria-label=Tabs data-md-component=tabs> <div class=md-grid> <ul class=md-tabs__list> <li class=md-tabs__item> <a href=../.. class=md-tabs__link> Home </a> </li> <li class=md-tabs__item> <a href=../../features/arbitrary_types/ class=md-tabs__link> Features </a> </li> <li class="md-tabs__item md-tabs__item--active"> <a href=../ class=md-tabs__link> Integration </a> </li> <li class=md-tabs__item> <a href=../../api/basic_json/ class=md-tabs__link> API Documentation </a> </li> <li class=md-tabs__item> <a href=../../community/ class=md-tabs__link> Community </a> </li> </ul> </div> </nav> <main class=md-main data-md-component=main> <div class="md-main__inner md-grid"> <div class="md-sidebar md-sidebar--primary" data-md-component=sidebar data-md-type=navigation> <div class=md-sidebar__scrollwrap> <div class=md-sidebar__inner> <nav class="md-nav md-nav--primary md-nav--lifted" aria-label=Navigation data-md-level=0> <label class=md-nav__title for=__drawer> <a href=../.. title="JSON for Modern C++" class="md-nav__button md-logo" aria-label="JSON for Modern C++" data-md-component=logo> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54"/></svg> </a> JSON for Modern C++ </label> <div class=md-nav__source> <a href="https://github.com/nlohmann/json" title="Go to repository" class="md-source" data-md-component="source"> <div class="md-source__icon md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </div> <div class=md-source__repository> nlohmann/json </div> </a> </div> <ul class=md-nav__list data-md-scrollfix> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_1> <div class="md-nav__link md-nav__container"> <a href=../.. class="md-nav__link "> <span class=md-ellipsis> Home </span> </a> <label class="md-nav__link " for=__nav_1 id=__nav_1_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_1_label aria-expanded=false> <label class=md-nav__title for=__nav_1> <span class="md-nav__icon md-icon"></span> Home </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../home/license/ class=md-nav__link> <span class=md-ellipsis> License </span> </a> </li> <li class=md-nav__item> <a href=../../home/faq/ class=md-nav__link> <span class=md-ellipsis> FAQ </span> </a> </li> <li class=md-nav__item> <a href=../../home/exceptions/ class=md-nav__link> <span class=md-ellipsis> Exceptions </span> </a> </li> <li class=md-nav__item> <a href=../../home/releases/ class=md-nav__link> <span class=md-ellipsis> Releases </span> </a> </li> <li class=md-nav__item> <a href=../../home/design_goals/ class=md-nav__link> <span class=md-ellipsis> Design goals </span> </a> </li> <li class=md-nav__item> <a href=../../home/architecture/ class=md-nav__link> <span class=md-ellipsis> Architecture </span> </a> </li> <li class=md-nav__item> <a href=../../home/customers/ class=md-nav__link> <span class=md-ellipsis> Customers </span> </a> </li> <li class=md-nav__item> <a href=../../home/sponsors/ class=md-nav__link> <span class=md-ellipsis> Sponsors </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2> <label class=md-nav__link for=__nav_2 id=__nav_2_label tabindex=0> <span class=md-ellipsis> Features </span> <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_2_label aria-expanded=false> <label class=md-nav__title for=__nav_2> <span class="md-nav__icon md-icon"></span> Features </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../features/arbitrary_types/ class=md-nav__link> <span class=md-ellipsis> Arbitrary Type Conversions </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_2> <div class="md-nav__link md-nav__container"> <a href=../../features/binary_formats/ class="md-nav__link "> <span class=md-ellipsis> Binary Formats </span> </a> <label class="md-nav__link " for=__nav_2_2 id=__nav_2_2_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_2_label aria-expanded=false> <label class=md-nav__title for=__nav_2_2> <span class="md-nav__icon md-icon"></span> Binary Formats </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../features/binary_formats/bjdata/ class=md-nav__link> <span class=md-ellipsis> BJData </span> </a> </li> <li class=md-nav__item> <a href=../../features/binary_formats/bson/ class=md-nav__link> <span class=md-ellipsis> BSON </span> </a> </li> <li class=md-nav__item> <a href=../../features/binary_formats/cbor/ class=md-nav__link> <span class=md-ellipsis> CBOR </span> </a> </li> <li class=md-nav__item> <a href=../../features/binary_formats/messagepack/ class=md-nav__link> <span class=md-ellipsis> MessagePack </span> </a> </li> <li class=md-nav__item> <a href=../../features/binary_formats/ubjson/ class=md-nav__link> <span class=md-ellipsis> UBJSON </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../features/binary_values/ class=md-nav__link> <span class=md-ellipsis> Binary Values </span> </a> </li> <li class=md-nav__item> <a href=../../features/comments/ class=md-nav__link> <span class=md-ellipsis> Comments </span> </a> </li> <li class=md-nav__item> <a href=../../features/trailing_commas/ class=md-nav__link> <span class=md-ellipsis> Trailing Commas </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_6> <div class="md-nav__link md-nav__container"> <a href=../../features/element_access/ class="md-nav__link "> <span class=md-ellipsis> Element Access </span> </a> <label class="md-nav__link " for=__nav_2_6 id=__nav_2_6_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_6_label aria-expanded=false> <label class=md-nav__title for=__nav_2_6> <span class="md-nav__icon md-icon"></span> Element Access </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../features/element_access/unchecked_access/ class=md-nav__link> <span class=md-ellipsis> Unchecked access: operator[] </span> </a> </li> <li class=md-nav__item> <a href=../../features/element_access/checked_access/ class=md-nav__link> <span class=md-ellipsis> Checked access: at </span> </a> </li> <li class=md-nav__item> <a href=../../features/element_access/default_value/ class=md-nav__link> <span class=md-ellipsis> Access with default value: value </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../features/iterators/ class=md-nav__link> <span class=md-ellipsis> Iterators </span> </a> </li> <li class=md-nav__item> <a href=../../features/json_pointer/ class=md-nav__link> <span class=md-ellipsis> JSON Pointer </span> </a> </li> <li class=md-nav__item> <a href=../../features/json_patch/ class=md-nav__link> <span class=md-ellipsis> JSON Patch and Diff </span> </a> </li> <li class=md-nav__item> <a href=../../features/merge_patch/ class=md-nav__link> <span class=md-ellipsis> JSON Merge Patch </span> </a> </li> <li class=md-nav__item> <a href=../../features/modules/ class=md-nav__link> <span class=md-ellipsis> Modules </span> </a> </li> <li class=md-nav__item> <a href=../../features/namespace/ class=md-nav__link> <span class=md-ellipsis> nlohmann Namespace </span> </a> </li> <li class=md-nav__item> <a href=../../features/object_order/ class=md-nav__link> <span class=md-ellipsis> Object Order </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_14> <div class="md-nav__link md-nav__container"> <a href=../../features/parsing/ class="md-nav__link "> <span class=md-ellipsis> Parsing </span> </a> <label class="md-nav__link " for=__nav_2_14 id=__nav_2_14_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_14_label aria-expanded=false> <label class=md-nav__title for=__nav_2_14> <span class="md-nav__icon md-icon"></span> Parsing </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../features/parsing/json_lines/ class=md-nav__link> <span class=md-ellipsis> JSON Lines </span> </a> </li> <li class=md-nav__item> <a href=../../features/parsing/parse_exceptions/ class=md-nav__link> <span class=md-ellipsis> Parsing and Exceptions </span> </a> </li> <li class=md-nav__item> <a href=../../features/parsing/parser_callbacks/ class=md-nav__link> <span class=md-ellipsis> Parser Callbacks </span> </a> </li> <li class=md-nav__item> <a href=../../features/parsing/sax_interface/ class=md-nav__link> <span class=md-ellipsis> SAX Interface </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../features/assertions/ class=md-nav__link> <span class=md-ellipsis> Runtime Assertions </span> </a> </li> <li class=md-nav__item> <a href=../../features/enum_conversion/ class=md-nav__link> <span class=md-ellipsis> Specializing enum conversion </span> </a> </li> <li class=md-nav__item> <a href=../../features/macros/ class=md-nav__link> <span class=md-ellipsis> Supported Macros </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_18> <div class="md-nav__link md-nav__container"> <a href=../../features/types/ class="md-nav__link "> <span class=md-ellipsis> Types </span> </a> <label class="md-nav__link " for=__nav_2_18 id=__nav_2_18_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_18_label aria-expanded=false> <label class=md-nav__title for=__nav_2_18> <span class="md-nav__icon md-icon"></span> Types </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../features/types/number_handling/ class=md-nav__link> <span class=md-ellipsis> Number Handling </span> </a> </li> </ul> </nav> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--active md-nav__item--section md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_3 checked> <div class="md-nav__link md-nav__container"> <a href=../ class="md-nav__link "> <span class=md-ellipsis> Integration </span> </a> <label class="md-nav__link " for=__nav_3 id=__nav_3_label tabindex> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_3_label aria-expanded=true> <label class=md-nav__title for=__nav_3> <span class="md-nav__icon md-icon"></span> Integration </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../migration_guide/ class=md-nav__link> <span class=md-ellipsis> Migration Guide </span> </a> </li> <li class=md-nav__item> <a href=../cmake/ class=md-nav__link> <span class=md-ellipsis> CMake </span> </a> </li> <li class="md-nav__item md-nav__item--active"> <input class="md-nav__toggle md-toggle" type=checkbox id=__toc> <label class="md-nav__link md-nav__link--active" for=__toc> <span class=md-ellipsis> Package Managers </span> <span class="md-nav__icon md-icon"></span> </label> <a href=./ class="md-nav__link md-nav__link--active"> <span class=md-ellipsis> Package Managers </span> </a> <nav class="md-nav md-nav--secondary" aria-label="Table of contents"> <label class=md-nav__title for=__toc> <span class="md-nav__icon md-icon"></span> Table of contents </label> <ul class=md-nav__list data-md-component=toc data-md-scrollfix> <li class=md-nav__item> <a href=#running-example class=md-nav__link> <span class=md-ellipsis> Running example </span> </a> </li> <li class=md-nav__item> <a href=#homebrew class=md-nav__link> <span class=md-ellipsis> Homebrew </span> </a> </li> <li class=md-nav__item> <a href=#meson class=md-nav__link> <span class=md-ellipsis> Meson </span> </a> </li> <li class=md-nav__item> <a href=#bazel class=md-nav__link> <span class=md-ellipsis> Bazel </span> </a> </li> <li class=md-nav__item> <a href=#conan class=md-nav__link> <span class=md-ellipsis> Conan </span> </a> </li> <li class=md-nav__item> <a href=#spack class=md-nav__link> <span class=md-ellipsis> Spack </span> </a> </li> <li class=md-nav__item> <a href=#hunter class=md-nav__link> <span class=md-ellipsis> Hunter </span> </a> </li> <li class=md-nav__item> <a href=#vcpkg class=md-nav__link> <span class=md-ellipsis> vcpkg </span> </a> </li> <li class=md-nav__item> <a href=#cget class=md-nav__link> <span class=md-ellipsis> cget </span> </a> </li> <li class=md-nav__item> <a href=#swift-package-manager class=md-nav__link> <span class=md-ellipsis> Swift Package Manager </span> </a> </li> <li class=md-nav__item> <a href=#nuget class=md-nav__link> <span class=md-ellipsis> NuGet </span> </a> </li> <li class=md-nav__item> <a href=#conda class=md-nav__link> <span class=md-ellipsis> Conda </span> </a> </li> <li class=md-nav__item> <a href=#msys2 class=md-nav__link> <span class=md-ellipsis> MSYS2 </span> </a> </li> <li class=md-nav__item> <a href=#macports class=md-nav__link> <span class=md-ellipsis> MacPorts </span> </a> </li> <li class=md-nav__item> <a href=#build2 class=md-nav__link> <span class=md-ellipsis> build2 </span> </a> </li> <li class=md-nav__item> <a href=#cpmcmake class=md-nav__link> <span class=md-ellipsis> CPM.cmake </span> </a> </li> <li class=md-nav__item> <a href=#xmake class=md-nav__link> <span class=md-ellipsis> xmake </span> </a> </li> <li class=md-nav__item> <a href=#other-package-managers class=md-nav__link> <span class=md-ellipsis> Other package managers </span> </a> </li> <li class=md-nav__item> <a href=#buckaroo class=md-nav__link> <span class=md-ellipsis> Buckaroo </span> </a> </li> <li class=md-nav__item> <a href=#cocoapods class=md-nav__link> <span class=md-ellipsis> CocoaPods </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../pkg-config/ class=md-nav__link> <span class=md-ellipsis> Pkg-config </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4> <label class=md-nav__link for=__nav_4 id=__nav_4_label tabindex=0> <span class=md-ellipsis> API Documentation </span> <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_4_label aria-expanded=false> <label class=md-nav__title for=__nav_4> <span class="md-nav__icon md-icon"></span> API Documentation </label> <ul class=md-nav__list data-md-scrollfix> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_1> <div class="md-nav__link md-nav__container"> <a href=../../api/basic_json/ class="md-nav__link "> <span class=md-ellipsis> basic_json </span> </a> <label class="md-nav__link " for=__nav_4_1 id=__nav_4_1_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_1_label aria-expanded=false> <label class=md-nav__title for=__nav_4_1> <span class="md-nav__icon md-icon"></span> basic_json </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../api/basic_json/basic_json/ class=md-nav__link> <span class=md-ellipsis> (Constructor) </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/~basic_json/ class=md-nav__link> <span class=md-ellipsis> (Destructor) </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/accept/ class=md-nav__link> <span class=md-ellipsis> accept </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/array/ class=md-nav__link> <span class=md-ellipsis> array </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/array_t/ class=md-nav__link> <span class=md-ellipsis> array_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/at/ class=md-nav__link> <span class=md-ellipsis> at </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/back/ class=md-nav__link> <span class=md-ellipsis> back </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/begin/ class=md-nav__link> <span class=md-ellipsis> begin </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/binary/ class=md-nav__link> <span class=md-ellipsis> binary </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/binary_t/ class=md-nav__link> <span class=md-ellipsis> binary_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/boolean_t/ class=md-nav__link> <span class=md-ellipsis> boolean_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/cbegin/ class=md-nav__link> <span class=md-ellipsis> cbegin </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/cbor_tag_handler_t/ class=md-nav__link> <span class=md-ellipsis> cbor_tag_handler_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/cend/ class=md-nav__link> <span class=md-ellipsis> cend </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/clear/ class=md-nav__link> <span class=md-ellipsis> clear </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/contains/ class=md-nav__link> <span class=md-ellipsis> contains </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/count/ class=md-nav__link> <span class=md-ellipsis> count </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/crbegin/ class=md-nav__link> <span class=md-ellipsis> crbegin </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/crend/ class=md-nav__link> <span class=md-ellipsis> crend </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/default_object_comparator_t/ class=md-nav__link> <span class=md-ellipsis> default_object_comparator_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/diff/ class=md-nav__link> <span class=md-ellipsis> diff </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/dump/ class=md-nav__link> <span class=md-ellipsis> dump </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/emplace/ class=md-nav__link> <span class=md-ellipsis> emplace </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/emplace_back/ class=md-nav__link> <span class=md-ellipsis> emplace_back </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/empty/ class=md-nav__link> <span class=md-ellipsis> empty </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/end/ class=md-nav__link> <span class=md-ellipsis> end </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/end_pos/ class=md-nav__link> <span class=md-ellipsis> end_pos </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/erase/ class=md-nav__link> <span class=md-ellipsis> erase </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/error_handler_t/ class=md-nav__link> <span class=md-ellipsis> error_handler_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/exception/ class=md-nav__link> <span class=md-ellipsis> exception </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/find/ class=md-nav__link> <span class=md-ellipsis> find </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/flatten/ class=md-nav__link> <span class=md-ellipsis> flatten </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/from_bjdata/ class=md-nav__link> <span class=md-ellipsis> from_bjdata </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/from_bson/ class=md-nav__link> <span class=md-ellipsis> from_bson </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/from_cbor/ class=md-nav__link> <span class=md-ellipsis> from_cbor </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/from_msgpack/ class=md-nav__link> <span class=md-ellipsis> from_msgpack </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/from_ubjson/ class=md-nav__link> <span class=md-ellipsis> from_ubjson </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/front/ class=md-nav__link> <span class=md-ellipsis> front </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/get/ class=md-nav__link> <span class=md-ellipsis> get </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/get_allocator/ class=md-nav__link> <span class=md-ellipsis> get_allocator </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/get_binary/ class=md-nav__link> <span class=md-ellipsis> get_binary </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/get_ptr/ class=md-nav__link> <span class=md-ellipsis> get_ptr </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/get_ref/ class=md-nav__link> <span class=md-ellipsis> get_ref </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/get_to/ class=md-nav__link> <span class=md-ellipsis> get_to </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/std_hash/ class=md-nav__link> <span class=md-ellipsis> std::hash&lt;basic_json&gt; </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/input_format_t/ class=md-nav__link> <span class=md-ellipsis> input_format_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/insert/ class=md-nav__link> <span class=md-ellipsis> insert </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/invalid_iterator/ class=md-nav__link> <span class=md-ellipsis> invalid_iterator </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_array/ class=md-nav__link> <span class=md-ellipsis> is_array </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_binary/ class=md-nav__link> <span class=md-ellipsis> is_binary </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_boolean/ class=md-nav__link> <span class=md-ellipsis> is_boolean </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_discarded/ class=md-nav__link> <span class=md-ellipsis> is_discarded </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_null/ class=md-nav__link> <span class=md-ellipsis> is_null </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_number/ class=md-nav__link> <span class=md-ellipsis> is_number </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_number_float/ class=md-nav__link> <span class=md-ellipsis> is_number_float </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_number_integer/ class=md-nav__link> <span class=md-ellipsis> is_number_integer </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_number_unsigned/ class=md-nav__link> <span class=md-ellipsis> is_number_unsigned </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_object/ class=md-nav__link> <span class=md-ellipsis> is_object </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_primitive/ class=md-nav__link> <span class=md-ellipsis> is_primitive </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_string/ class=md-nav__link> <span class=md-ellipsis> is_string </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_structured/ class=md-nav__link> <span class=md-ellipsis> is_structured </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/items/ class=md-nav__link> <span class=md-ellipsis> items </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/json_base_class_t/ class=md-nav__link> <span class=md-ellipsis> json_base_class_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/json_serializer/ class=md-nav__link> <span class=md-ellipsis> json_serializer </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/max_size/ class=md-nav__link> <span class=md-ellipsis> max_size </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/meta/ class=md-nav__link> <span class=md-ellipsis> meta </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/merge_patch/ class=md-nav__link> <span class=md-ellipsis> merge_patch </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/number_float_t/ class=md-nav__link> <span class=md-ellipsis> number_float_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/number_integer_t/ class=md-nav__link> <span class=md-ellipsis> number_integer_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/number_unsigned_t/ class=md-nav__link> <span class=md-ellipsis> number_unsigned_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/object/ class=md-nav__link> <span class=md-ellipsis> object </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/object_comparator_t/ class=md-nav__link> <span class=md-ellipsis> object_comparator_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/object_t/ class=md-nav__link> <span class=md-ellipsis> object_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/operator_ValueType/ class=md-nav__link> <span class=md-ellipsis> operator ValueType </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/operator_value_t/ class=md-nav__link> <span class=md-ellipsis> operator value_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/operator%5B%5D/ class=md-nav__link> <span class=md-ellipsis> operator[] </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/operator%3D/ class=md-nav__link> <span class=md-ellipsis> operator= </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/operator%2B%3D/ class=md-nav__link> <span class=md-ellipsis> operator+= </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/operator_eq/ class=md-nav__link> <span class=md-ellipsis> operator== </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/operator_ne/ class=md-nav__link> <span class=md-ellipsis> operator!= </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/operator_lt/ class=md-nav__link> <span class=md-ellipsis> operator< </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/operator_gt/ class=md-nav__link> <span class=md-ellipsis> operator> </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/operator_le/ class=md-nav__link> <span class=md-ellipsis> operator<= </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/operator_ge/ class=md-nav__link> <span class=md-ellipsis> operator>= </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/operator_spaceship/ class=md-nav__link> <span class=md-ellipsis> operator<=> </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/out_of_range/ class=md-nav__link> <span class=md-ellipsis> out_of_range </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/other_error/ class=md-nav__link> <span class=md-ellipsis> other_error </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/parse/ class=md-nav__link> <span class=md-ellipsis> parse </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/parse_error/ class=md-nav__link> <span class=md-ellipsis> parse_error </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/parse_event_t/ class=md-nav__link> <span class=md-ellipsis> parse_event_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/parser_callback_t/ class=md-nav__link> <span class=md-ellipsis> parser_callback_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/patch/ class=md-nav__link> <span class=md-ellipsis> patch </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/patch_inplace/ class=md-nav__link> <span class=md-ellipsis> patch_inplace </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/push_back/ class=md-nav__link> <span class=md-ellipsis> push_back </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/rbegin/ class=md-nav__link> <span class=md-ellipsis> rbegin </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/rend/ class=md-nav__link> <span class=md-ellipsis> rend </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/sax_parse/ class=md-nav__link> <span class=md-ellipsis> sax_parse </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/size/ class=md-nav__link> <span class=md-ellipsis> size </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/start_pos/ class=md-nav__link> <span class=md-ellipsis> start_pos </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/string_t/ class=md-nav__link> <span class=md-ellipsis> string_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/swap/ class=md-nav__link> <span class=md-ellipsis> swap </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/std_swap/ class=md-nav__link> <span class=md-ellipsis> std::swap&lt;basic_json&gt; </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/to_bjdata/ class=md-nav__link> <span class=md-ellipsis> to_bjdata </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/to_bson/ class=md-nav__link> <span class=md-ellipsis> to_bson </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/to_cbor/ class=md-nav__link> <span class=md-ellipsis> to_cbor </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/to_msgpack/ class=md-nav__link> <span class=md-ellipsis> to_msgpack </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/to_string/ class=md-nav__link> <span class=md-ellipsis> to_string </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/to_ubjson/ class=md-nav__link> <span class=md-ellipsis> to_ubjson </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/type/ class=md-nav__link> <span class=md-ellipsis> type </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/type_error/ class=md-nav__link> <span class=md-ellipsis> type_error </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/type_name/ class=md-nav__link> <span class=md-ellipsis> type_name </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/unflatten/ class=md-nav__link> <span class=md-ellipsis> unflatten </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/update/ class=md-nav__link> <span class=md-ellipsis> update </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/value/ class=md-nav__link> <span class=md-ellipsis> value </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/value_t/ class=md-nav__link> <span class=md-ellipsis> value_t </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_2> <div class="md-nav__link md-nav__container"> <a href=../../api/byte_container_with_subtype/ class="md-nav__link "> <span class=md-ellipsis> byte_container_with_subtype </span> </a> <label class="md-nav__link " for=__nav_4_2 id=__nav_4_2_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_2_label aria-expanded=false> <label class=md-nav__title for=__nav_4_2> <span class="md-nav__icon md-icon"></span> byte_container_with_subtype </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../api/byte_container_with_subtype/byte_container_with_subtype/ class=md-nav__link> <span class=md-ellipsis> (constructor) </span> </a> </li> <li class=md-nav__item> <a href=../../api/byte_container_with_subtype/clear_subtype/ class=md-nav__link> <span class=md-ellipsis> clear_subtype </span> </a> </li> <li class=md-nav__item> <a href=../../api/byte_container_with_subtype/has_subtype/ class=md-nav__link> <span class=md-ellipsis> has_subtype </span> </a> </li> <li class=md-nav__item> <a href=../../api/byte_container_with_subtype/set_subtype/ class=md-nav__link> <span class=md-ellipsis> set_subtype </span> </a> </li> <li class=md-nav__item> <a href=../../api/byte_container_with_subtype/subtype/ class=md-nav__link> <span class=md-ellipsis> subtype </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_3> <div class="md-nav__link md-nav__container"> <a href=../../api/adl_serializer/ class="md-nav__link "> <span class=md-ellipsis> adl_serializer </span> </a> <label class="md-nav__link " for=__nav_4_3 id=__nav_4_3_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_3_label aria-expanded=false> <label class=md-nav__title for=__nav_4_3> <span class="md-nav__icon md-icon"></span> adl_serializer </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../api/adl_serializer/from_json/ class=md-nav__link> <span class=md-ellipsis> from_json </span> </a> </li> <li class=md-nav__item> <a href=../../api/adl_serializer/to_json/ class=md-nav__link> <span class=md-ellipsis> to_json </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../api/json/ class=md-nav__link> <span class=md-ellipsis> json </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_5> <div class="md-nav__link md-nav__container"> <a href=../../api/json_pointer/ class="md-nav__link "> <span class=md-ellipsis> json_pointer </span> </a> <label class="md-nav__link " for=__nav_4_5 id=__nav_4_5_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_5_label aria-expanded=false> <label class=md-nav__title for=__nav_4_5> <span class="md-nav__icon md-icon"></span> json_pointer </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../api/json_pointer/json_pointer/ class=md-nav__link> <span class=md-ellipsis> (Constructor) </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/back/ class=md-nav__link> <span class=md-ellipsis> back </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/empty/ class=md-nav__link> <span class=md-ellipsis> empty </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/front/ class=md-nav__link> <span class=md-ellipsis> front </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/operator_string_t/ class=md-nav__link> <span class=md-ellipsis> operator string_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/operator_eq/ class=md-nav__link> <span class=md-ellipsis> operator== </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/operator_ne/ class=md-nav__link> <span class=md-ellipsis> operator!= </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/operator_slash/ class=md-nav__link> <span class=md-ellipsis> operator/ </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/operator_slasheq/ class=md-nav__link> <span class=md-ellipsis> operator/= </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/parent_pointer/ class=md-nav__link> <span class=md-ellipsis> parent_pointer </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/pop_back/ class=md-nav__link> <span class=md-ellipsis> pop_back </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/pop_front/ class=md-nav__link> <span class=md-ellipsis> pop_front </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/push_back/ class=md-nav__link> <span class=md-ellipsis> push_back </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/push_front/ class=md-nav__link> <span class=md-ellipsis> push_front </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/string_t/ class=md-nav__link> <span class=md-ellipsis> string_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/to_string/ class=md-nav__link> <span class=md-ellipsis> to_string </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_6> <div class="md-nav__link md-nav__container"> <a href=../../api/json_sax/ class="md-nav__link "> <span class=md-ellipsis> json_sax </span> </a> <label class="md-nav__link " for=__nav_4_6 id=__nav_4_6_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_6_label aria-expanded=false> <label class=md-nav__title for=__nav_4_6> <span class="md-nav__icon md-icon"></span> json_sax </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../api/json_sax/binary/ class=md-nav__link> <span class=md-ellipsis> binary </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_sax/boolean/ class=md-nav__link> <span class=md-ellipsis> boolean </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_sax/end_array/ class=md-nav__link> <span class=md-ellipsis> end_array </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_sax/end_object/ class=md-nav__link> <span class=md-ellipsis> end_object </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_sax/key/ class=md-nav__link> <span class=md-ellipsis> key </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_sax/null/ class=md-nav__link> <span class=md-ellipsis> null </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_sax/number_float/ class=md-nav__link> <span class=md-ellipsis> number_float </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_sax/number_integer/ class=md-nav__link> <span class=md-ellipsis> number_integer </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_sax/number_unsigned/ class=md-nav__link> <span class=md-ellipsis> number_unsigned </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_sax/parse_error/ class=md-nav__link> <span class=md-ellipsis> parse_error </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_sax/start_array/ class=md-nav__link> <span class=md-ellipsis> start_array </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_sax/start_object/ class=md-nav__link> <span class=md-ellipsis> start_object </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_sax/string/ class=md-nav__link> <span class=md-ellipsis> string </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../api/operator_ltlt/ class=md-nav__link> <span class=md-ellipsis> operator<<(basic_json), operator<<(json_pointer) </span> </a> </li> <li class=md-nav__item> <a href=../../api/operator_gtgt/ class=md-nav__link> <span class=md-ellipsis> operator>>(basic_json) </span> </a> </li> <li class=md-nav__item> <a href=../../api/operator_literal_json/ class=md-nav__link> <span class=md-ellipsis> operator""_json </span> </a> </li> <li class=md-nav__item> <a href=../../api/operator_literal_json_pointer/ class=md-nav__link> <span class=md-ellipsis> operator""_json_pointer </span> </a> </li> <li class=md-nav__item> <a href=../../api/ordered_json/ class=md-nav__link> <span class=md-ellipsis> ordered_json </span> </a> </li> <li class=md-nav__item> <a href=../../api/ordered_map/ class=md-nav__link> <span class=md-ellipsis> ordered_map </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_13> <div class="md-nav__link md-nav__container"> <a href=../../api/macros/ class="md-nav__link "> <span class=md-ellipsis> macros </span> </a> <label class="md-nav__link " for=__nav_4_13 id=__nav_4_13_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_13_label aria-expanded=false> <label class=md-nav__title for=__nav_4_13> <span class="md-nav__icon md-icon"></span> macros </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../api/macros/json_assert/ class=md-nav__link> <span class=md-ellipsis> JSON_ASSERT </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_brace_init_copy_semantics/ class=md-nav__link> <span class=md-ellipsis> JSON_BRACE_INIT_COPY_SEMANTICS </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_throw_user/ class=md-nav__link> <span class=md-ellipsis> JSON_CATCH_USER, JSON_THROW_USER, JSON_TRY_USER </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_diagnostics/ class=md-nav__link> <span class=md-ellipsis> JSON_DIAGNOSTICS </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_diagnostic_positions/ class=md-nav__link> <span class=md-ellipsis> JSON_DIAGNOSTIC_POSITIONS </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_disable_enum_serialization/ class=md-nav__link> <span class=md-ellipsis> JSON_DISABLE_ENUM_SERIALIZATION </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_has_cpp_11/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_CPP_11, JSON_HAS_CPP_14, JSON_HAS_CPP_17, JSON_HAS_CPP_20 </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_has_filesystem/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_EXPERIMENTAL_FILESYSTEM, JSON_HAS_FILESYSTEM </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_has_ranges/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_RANGES </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_has_static_rtti/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_STATIC_RTTI </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_has_three_way_comparison/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_THREE_WAY_COMPARISON </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_noexception/ class=md-nav__link> <span class=md-ellipsis> JSON_NOEXCEPTION </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_no_io/ class=md-nav__link> <span class=md-ellipsis> JSON_NO_IO </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_skip_library_version_check/ class=md-nav__link> <span class=md-ellipsis> JSON_SKIP_LIBRARY_VERSION_CHECK </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_skip_unsupported_compiler_check/ class=md-nav__link> <span class=md-ellipsis> JSON_SKIP_UNSUPPORTED_COMPILER_CHECK </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_use_global_udls/ class=md-nav__link> <span class=md-ellipsis> JSON_USE_GLOBAL_UDLS </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_use_implicit_conversions/ class=md-nav__link> <span class=md-ellipsis> JSON_USE_IMPLICIT_CONVERSIONS </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_use_legacy_discarded_value_comparison/ class=md-nav__link> <span class=md-ellipsis> JSON_USE_LEGACY_DISCARDED_VALUE_COMPARISON </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/nlohmann_define_derived_type/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_ONLY_SERIALIZE, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/nlohmann_define_type_intrusive/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_TYPE_INTRUSIVE, NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_TYPE_INTRUSIVE_ONLY_SERIALIZE </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/nlohmann_define_type_non_intrusive/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/nlohmann_define_type_with_names/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_TYPE_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/nlohmann_json_namespace/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_NAMESPACE </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/nlohmann_json_namespace_begin/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_NAMESPACE_BEGIN, NLOHMANN_JSON_NAMESPACE_END </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/nlohmann_json_namespace_no_version/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_NAMESPACE_NO_VERSION </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/nlohmann_json_serialize_enum/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_SERIALIZE_ENUM </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/nlohmann_json_serialize_enum_strict/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_SERIALIZE_ENUM_STRICT </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/nlohmann_json_version_major/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_VERSION_MAJOR, NLOHMANN_JSON_VERSION_MINOR, NLOHMANN_JSON_VERSION_PATCH </span> </a> </li> </ul> </nav> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_5> <div class="md-nav__link md-nav__container"> <a href=../../community/ class="md-nav__link "> <span class=md-ellipsis> Community </span> </a> <label class="md-nav__link " for=__nav_5 id=__nav_5_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_5_label aria-expanded=false> <label class=md-nav__title for=__nav_5> <span class="md-nav__icon md-icon"></span> Community </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../community/code_of_conduct/ class=md-nav__link> <span class=md-ellipsis> Code of Conduct </span> </a> </li> <li class=md-nav__item> <a href=../../community/contribution_guidelines/ class=md-nav__link> <span class=md-ellipsis> Contribution Guidelines </span> </a> </li> <li class=md-nav__item> <a href=../../community/quality_assurance/ class=md-nav__link> <span class=md-ellipsis> Quality assurance </span> </a> </li> <li class=md-nav__item> <a href=../../community/governance/ class=md-nav__link> <span class=md-ellipsis> Governance </span> </a> </li> <li class=md-nav__item> <a href=../../community/security_policy/ class=md-nav__link> <span class=md-ellipsis> Security Policy </span> </a> </li> </ul> </nav> </li> </ul> </nav> </div> </div> </div> <div class="md-sidebar md-sidebar--secondary" data-md-component=sidebar data-md-type=toc> <div class=md-sidebar__scrollwrap> <div class=md-sidebar__inner> <nav class="md-nav md-nav--secondary" aria-label="Table of contents"> <label class=md-nav__title for=__toc> <span class="md-nav__icon md-icon"></span> Table of contents </label> <ul class=md-nav__list data-md-component=toc data-md-scrollfix> <li class=md-nav__item> <a href=#running-example class=md-nav__link> <span class=md-ellipsis> Running example </span> </a> </li> <li class=md-nav__item> <a href=#homebrew class=md-nav__link> <span class=md-ellipsis> Homebrew </span> </a> </li> <li class=md-nav__item> <a href=#meson class=md-nav__link> <span class=md-ellipsis> Meson </span> </a> </li> <li class=md-nav__item> <a href=#bazel class=md-nav__link> <span class=md-ellipsis> Bazel </span> </a> </li> <li class=md-nav__item> <a href=#conan class=md-nav__link> <span class=md-ellipsis> Conan </span> </a> </li> <li class=md-nav__item> <a href=#spack class=md-nav__link> <span class=md-ellipsis> Spack </span> </a> </li> <li class=md-nav__item> <a href=#hunter class=md-nav__link> <span class=md-ellipsis> Hunter </span> </a> </li> <li class=md-nav__item> <a href=#vcpkg class=md-nav__link> <span class=md-ellipsis> vcpkg </span> </a> </li> <li class=md-nav__item> <a href=#cget class=md-nav__link> <span class=md-ellipsis> cget </span> </a> </li> <li class=md-nav__item> <a href=#swift-package-manager class=md-nav__link> <span class=md-ellipsis> Swift Package Manager </span> </a> </li> <li class=md-nav__item> <a href=#nuget class=md-nav__link> <span class=md-ellipsis> NuGet </span> </a> </li> <li class=md-nav__item> <a href=#conda class=md-nav__link> <span class=md-ellipsis> Conda </span> </a> </li> <li class=md-nav__item> <a href=#msys2 class=md-nav__link> <span class=md-ellipsis> MSYS2 </span> </a> </li> <li class=md-nav__item> <a href=#macports class=md-nav__link> <span class=md-ellipsis> MacPorts </span> </a> </li> <li class=md-nav__item> <a href=#build2 class=md-nav__link> <span class=md-ellipsis> build2 </span> </a> </li> <li class=md-nav__item> <a href=#cpmcmake class=md-nav__link> <span class=md-ellipsis> CPM.cmake </span> </a> </li> <li class=md-nav__item> <a href=#xmake class=md-nav__link> <span class=md-ellipsis> xmake </span> </a> </li> <li class=md-nav__item> <a href=#other-package-managers class=md-nav__link> <span class=md-ellipsis> Other package managers </span> </a> </li> <li class=md-nav__item> <a href=#buckaroo class=md-nav__link> <span class=md-ellipsis> Buckaroo </span> </a> </li> <li class=md-nav__item> <a href=#cocoapods class=md-nav__link> <span class=md-ellipsis> CocoaPods </span> </a> </li> </ul> </nav> </div> </div> </div> <div class=md-content data-md-component=content> <article class="md-content__inner md-typeset"> <a href="https://github.com/nlohmann/json/edit/develop/docs/mkdocs/docs/integration/package_managers.md" title="Edit this page" class="md-content__button md-icon" rel="edit"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M10 20H6V4h7v5h5v3.1l2-2V8l-6-6H6c-1.1 0-2 .9-2 2v16c0 1.1.9 2 2 2h4zm10.2-7c.1 0 .3.1.4.2l1.3 1.3c.2.2.2.6 0 .8l-1 1-2.1-2.1 1-1c.1-.1.2-.2.4-.2m0 3.9L14.1 23H12v-2.1l6.1-6.1z"/></svg> </a> <a href="https://github.com/nlohmann/json/raw/develop/docs/mkdocs/docs/integration/package_managers.md" title="View source of this page" class="md-content__button md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M17 18c.56 0 1 .44 1 1s-.44 1-1 1-1-.44-1-1 .44-1 1-1m0-3c-2.73 0-5.06 1.66-6 4 .94 2.34 3.27 4 6 4s5.06-1.66 6-4c-.94-2.34-3.27-4-6-4m0 6.5a2.5 2.5 0 0 1-2.5-2.5 2.5 2.5 0 0 1 2.5-2.5 2.5 2.5 0 0 1 2.5 2.5 2.5 2.5 0 0 1-2.5 2.5M9.27 20H6V4h7v5h5v4.07c.7.08 1.36.25 2 .49V8l-6-6H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h4.5a8.2 8.2 0 0 1-1.23-2"/></svg> </a> <h1 id=package-managers>Package Managers<a class=headerlink href=#package-managers title="Permanent link">&para;</a></h1> <p style="text-align: center"> <img alt=Homebrew src=../../images/package_managers/homebrew.svg style=height:1em>&nbsp;<a href=#homebrew><strong>Homebrew</strong></a> <code>nlohmann-json</code> &emsp; <img alt=Meson src=../../images/package_managers/meson.svg style=height:1em>&nbsp;<a href=#meson><strong>Meson</strong></a> <code>nlohmann_json</code> &emsp; <img alt=Bazel src=../../images/package_managers/bazel.svg style=height:1em>&nbsp;<a href=#bazel><strong>Bazel</strong></a> <code>nlohmann_json</code><br> <img alt=Conan src=../../images/package_managers/conan.svg style=height:1em>&nbsp;<a href=#conan><strong>Conan</strong></a> <code>nlohmann_json</code> &emsp; <img alt=Spack src=../../images/package_managers/spack.svg style=height:1em>&nbsp;<a href=#spack><strong>Spack</strong></a> <code>nlohmann-json</code> &emsp; <a href=#hunter><strong>Hunter</strong></a> <code>nlohmann_json</code><br> <img alt=vcpkg src=../../images/package_managers/vcpkg.png style=height:1em>&nbsp;<a href=#vcpkg><strong>vcpkg</strong></a> <code>nlohmann-json</code> &emsp; <a href=#cget><strong>cget</strong></a> <code>nlohmann/json</code> &emsp; <img alt="Swift Package Manager" src=../../images/package_managers/swift.svg style=height:1em>&nbsp;<a href=#swift-package-manager><strong>Swift Package Manager</strong></a> <code>nlohmann/json</code><br> <img alt=Nuget src=../../images/package_managers/nuget.svg style=height:1em>&nbsp;<a href=#nuget><strong>NuGet</strong></a> <code>nlohmann.json</code> &emsp; <img alt=Conda src=../../images/package_managers/conda.svg style=height:1em>&nbsp;<a href=#conda><strong>Conda</strong></a> <code>nlohmann_json</code> &emsp; <img alt=MacPorts src=../../images/package_managers/macports.svg style=height:1em>&nbsp;<a href=#macports><strong>MacPorts</strong></a> <code>nlohmann-json</code><br> <img alt=cpm.cmake src=../../images/package_managers/CPM.png style=height:1em>&nbsp;<a href=#cpmcmake><strong>CPM.cmake</strong></a> <code>gh:nlohmann/json</code> <img alt=xmake src=../../images/package_managers/xmake.svg style=height:1em>&nbsp;<a href=#xmake><strong>xmake</strong></a> <code>nlohmann_json</code> </p> <h2 id=running-example>Running example<a class=headerlink href=#running-example title="Permanent link">&para;</a></h2> <p>Throughout this page, we will describe how to compile the example file <code>example.cpp</code> below.</p> <div class=highlight><pre><span></span><code><span class=cp>#include</span><span class=w> </span><span class=cpf>&lt;nlohmann/json.hpp&gt;</span>
+<!doctype html><html lang=en class=no-js> <head><meta charset=utf-8><meta name=viewport content="width=device-width,initial-scale=1"><meta name=author content="Niels Lohmann"><link href="https://json.nlohmann.me/integration/package_managers/" rel="canonical"><link href=../cmake/ rel=prev><link href=../pkg-config/ rel=next><link rel=icon href=../../assets/images/favicon.png><meta name=generator content="mkdocs-1.6.1, mkdocs-material-9.7.6"><title>Package Managers - JSON for Modern C++</title><link rel=stylesheet href=../../assets/stylesheets/main.484c7ddc.min.css><link rel=stylesheet href=../../assets/stylesheets/palette.ab4e12ef.min.css><link rel="stylesheet" href="../../assets/external/fonts.googleapis.com/css.61a430c9.css"><style>:root{--md-text-font:"Roboto";--md-code-font:"JetBrains Mono"}</style><link rel=stylesheet href=../../css/custom.css><script>__md_scope=new URL("../..",location),__md_hash=e=>[...e].reduce(((e,_)=>(e<<5)-e+_.charCodeAt(0)),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script></head> <body dir=ltr data-md-color-scheme=default data-md-color-primary=indigo data-md-color-accent=indigo> <input class=md-toggle data-md-toggle=drawer type=checkbox id=__drawer autocomplete=off> <input class=md-toggle data-md-toggle=search type=checkbox id=__search autocomplete=off> <label class=md-overlay for=__drawer></label> <div data-md-component=skip> <a href=#package-managers class=md-skip> Skip to content </a> </div> <div data-md-component=announce> </div> <header class=md-header data-md-component=header> <nav class="md-header__inner md-grid" aria-label=Header> <a href=../.. title="JSON for Modern C++" class="md-header__button md-logo" aria-label="JSON for Modern C++" data-md-component=logo> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54"/></svg> </a> <label class="md-header__button md-icon" for=__drawer> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M3 6h18v2H3zm0 5h18v2H3zm0 5h18v2H3z"/></svg> </label> <div class=md-header__title data-md-component=header-title> <div class=md-header__ellipsis> <div class=md-header__topic> <span class=md-ellipsis> JSON for Modern C++ </span> </div> <div class=md-header__topic data-md-component=header-topic> <span class=md-ellipsis> Package Managers </span> </div> </div> </div> <form class=md-header__option data-md-component=palette> <input class=md-option data-md-color-media="(prefers-color-scheme: light)" data-md-color-scheme=default data-md-color-primary=indigo data-md-color-accent=indigo aria-label="Switch to dark mode" type=radio name=__palette id=__palette_0> <label class="md-header__button md-icon" title="Switch to dark mode" for=__palette_1 hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a4 4 0 0 0-4 4 4 4 0 0 0 4 4 4 4 0 0 0 4-4 4 4 0 0 0-4-4m0 10a6 6 0 0 1-6-6 6 6 0 0 1 6-6 6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12z"/></svg> </label> <input class=md-option data-md-color-media="(prefers-color-scheme: dark)" data-md-color-scheme=slate data-md-color-primary=indigo data-md-color-accent=indigo aria-label="Switch to light mode" type=radio name=__palette id=__palette_1> <label class="md-header__button md-icon" title="Switch to light mode" for=__palette_0 hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 18c-.89 0-1.74-.2-2.5-.55C11.56 16.5 13 14.42 13 12s-1.44-4.5-3.5-5.45C10.26 6.2 11.11 6 12 6a6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12z"/></svg> </label> </form> <script>var palette=__md_get("__palette");if(palette&&palette.color){if("(prefers-color-scheme)"===palette.color.media){var media=matchMedia("(prefers-color-scheme: light)"),input=document.querySelector(media.matches?"[data-md-color-media='(prefers-color-scheme: light)']":"[data-md-color-media='(prefers-color-scheme: dark)']");palette.color.media=input.getAttribute("data-md-color-media"),palette.color.scheme=input.getAttribute("data-md-color-scheme"),palette.color.primary=input.getAttribute("data-md-color-primary"),palette.color.accent=input.getAttribute("data-md-color-accent")}for(var[key,value]of Object.entries(palette.color))document.body.setAttribute("data-md-color-"+key,value)}</script> <label class="md-header__button md-icon" for=__search> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg> </label> <div class=md-search data-md-component=search role=dialog> <label class=md-search__overlay for=__search></label> <div class=md-search__inner role=search> <form class=md-search__form name=search> <input type=text class=md-search__input name=query aria-label=Search placeholder=Search autocapitalize=off autocorrect=off autocomplete=off spellcheck=false data-md-component=search-query required> <label class="md-search__icon md-icon" for=__search> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11z"/></svg> </label> <nav class=md-search__options aria-label=Search> <button type=reset class="md-search__icon md-icon" title=Clear aria-label=Clear tabindex=-1> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z"/></svg> </button> </nav> </form> <div class=md-search__output> <div class=md-search__scrollwrap tabindex=0 data-md-scrollfix> <div class=md-search-result data-md-component=search-result> <div class=md-search-result__meta> Initializing search </div> <ol class=md-search-result__list role=presentation></ol> </div> </div> </div> </div> </div> <div class=md-header__source> <a href="https://github.com/nlohmann/json" title="Go to repository" class="md-source" data-md-component="source"> <div class="md-source__icon md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </div> <div class=md-source__repository> nlohmann/json </div> </a> </div> </nav> </header> <div class=md-container data-md-component=container> <nav class=md-tabs aria-label=Tabs data-md-component=tabs> <div class=md-grid> <ul class=md-tabs__list> <li class=md-tabs__item> <a href=../.. class=md-tabs__link> Home </a> </li> <li class=md-tabs__item> <a href=../../features/arbitrary_types/ class=md-tabs__link> Features </a> </li> <li class="md-tabs__item md-tabs__item--active"> <a href=../ class=md-tabs__link> Integration </a> </li> <li class=md-tabs__item> <a href=../../api/basic_json/ class=md-tabs__link> API Documentation </a> </li> <li class=md-tabs__item> <a href=../../community/ class=md-tabs__link> Community </a> </li> </ul> </div> </nav> <main class=md-main data-md-component=main> <div class="md-main__inner md-grid"> <div class="md-sidebar md-sidebar--primary" data-md-component=sidebar data-md-type=navigation> <div class=md-sidebar__scrollwrap> <div class=md-sidebar__inner> <nav class="md-nav md-nav--primary md-nav--lifted" aria-label=Navigation data-md-level=0> <label class=md-nav__title for=__drawer> <a href=../.. title="JSON for Modern C++" class="md-nav__button md-logo" aria-label="JSON for Modern C++" data-md-component=logo> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54"/></svg> </a> JSON for Modern C++ </label> <div class=md-nav__source> <a href="https://github.com/nlohmann/json" title="Go to repository" class="md-source" data-md-component="source"> <div class="md-source__icon md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </div> <div class=md-source__repository> nlohmann/json </div> </a> </div> <ul class=md-nav__list data-md-scrollfix> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_1> <div class="md-nav__link md-nav__container"> <a href=../.. class="md-nav__link "> <span class=md-ellipsis> Home </span> </a> <label class="md-nav__link " for=__nav_1 id=__nav_1_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_1_label aria-expanded=false> <label class=md-nav__title for=__nav_1> <span class="md-nav__icon md-icon"></span> Home </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../home/license/ class=md-nav__link> <span class=md-ellipsis> License </span> </a> </li> <li class=md-nav__item> <a href=../../home/faq/ class=md-nav__link> <span class=md-ellipsis> FAQ </span> </a> </li> <li class=md-nav__item> <a href=../../home/exceptions/ class=md-nav__link> <span class=md-ellipsis> Exceptions </span> </a> </li> <li class=md-nav__item> <a href=../../home/releases/ class=md-nav__link> <span class=md-ellipsis> Releases </span> </a> </li> <li class=md-nav__item> <a href=../../home/design_goals/ class=md-nav__link> <span class=md-ellipsis> Design goals </span> </a> </li> <li class=md-nav__item> <a href=../../home/architecture/ class=md-nav__link> <span class=md-ellipsis> Architecture </span> </a> </li> <li class=md-nav__item> <a href=../../home/customers/ class=md-nav__link> <span class=md-ellipsis> Customers </span> </a> </li> <li class=md-nav__item> <a href=../../home/sponsors/ class=md-nav__link> <span class=md-ellipsis> Sponsors </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2> <label class=md-nav__link for=__nav_2 id=__nav_2_label tabindex=0> <span class=md-ellipsis> Features </span> <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_2_label aria-expanded=false> <label class=md-nav__title for=__nav_2> <span class="md-nav__icon md-icon"></span> Features </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../features/arbitrary_types/ class=md-nav__link> <span class=md-ellipsis> Arbitrary Type Conversions </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_2> <div class="md-nav__link md-nav__container"> <a href=../../features/binary_formats/ class="md-nav__link "> <span class=md-ellipsis> Binary Formats </span> </a> <label class="md-nav__link " for=__nav_2_2 id=__nav_2_2_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_2_label aria-expanded=false> <label class=md-nav__title for=__nav_2_2> <span class="md-nav__icon md-icon"></span> Binary Formats </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../features/binary_formats/bjdata/ class=md-nav__link> <span class=md-ellipsis> BJData </span> </a> </li> <li class=md-nav__item> <a href=../../features/binary_formats/bson/ class=md-nav__link> <span class=md-ellipsis> BSON </span> </a> </li> <li class=md-nav__item> <a href=../../features/binary_formats/cbor/ class=md-nav__link> <span class=md-ellipsis> CBOR </span> </a> </li> <li class=md-nav__item> <a href=../../features/binary_formats/messagepack/ class=md-nav__link> <span class=md-ellipsis> MessagePack </span> </a> </li> <li class=md-nav__item> <a href=../../features/binary_formats/ubjson/ class=md-nav__link> <span class=md-ellipsis> UBJSON </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../features/binary_values/ class=md-nav__link> <span class=md-ellipsis> Binary Values </span> </a> </li> <li class=md-nav__item> <a href=../../features/comments/ class=md-nav__link> <span class=md-ellipsis> Comments </span> </a> </li> <li class=md-nav__item> <a href=../../features/trailing_commas/ class=md-nav__link> <span class=md-ellipsis> Trailing Commas </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_6> <div class="md-nav__link md-nav__container"> <a href=../../features/element_access/ class="md-nav__link "> <span class=md-ellipsis> Element Access </span> </a> <label class="md-nav__link " for=__nav_2_6 id=__nav_2_6_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_6_label aria-expanded=false> <label class=md-nav__title for=__nav_2_6> <span class="md-nav__icon md-icon"></span> Element Access </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../features/element_access/unchecked_access/ class=md-nav__link> <span class=md-ellipsis> Unchecked access: operator[] </span> </a> </li> <li class=md-nav__item> <a href=../../features/element_access/checked_access/ class=md-nav__link> <span class=md-ellipsis> Checked access: at </span> </a> </li> <li class=md-nav__item> <a href=../../features/element_access/default_value/ class=md-nav__link> <span class=md-ellipsis> Access with default value: value </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../features/iterators/ class=md-nav__link> <span class=md-ellipsis> Iterators </span> </a> </li> <li class=md-nav__item> <a href=../../features/json_pointer/ class=md-nav__link> <span class=md-ellipsis> JSON Pointer </span> </a> </li> <li class=md-nav__item> <a href=../../features/json_patch/ class=md-nav__link> <span class=md-ellipsis> JSON Patch and Diff </span> </a> </li> <li class=md-nav__item> <a href=../../features/merge_patch/ class=md-nav__link> <span class=md-ellipsis> JSON Merge Patch </span> </a> </li> <li class=md-nav__item> <a href=../../features/modules/ class=md-nav__link> <span class=md-ellipsis> Modules </span> </a> </li> <li class=md-nav__item> <a href=../../features/namespace/ class=md-nav__link> <span class=md-ellipsis> nlohmann Namespace </span> </a> </li> <li class=md-nav__item> <a href=../../features/object_order/ class=md-nav__link> <span class=md-ellipsis> Object Order </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_14> <div class="md-nav__link md-nav__container"> <a href=../../features/parsing/ class="md-nav__link "> <span class=md-ellipsis> Parsing </span> </a> <label class="md-nav__link " for=__nav_2_14 id=__nav_2_14_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_14_label aria-expanded=false> <label class=md-nav__title for=__nav_2_14> <span class="md-nav__icon md-icon"></span> Parsing </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../features/parsing/json_lines/ class=md-nav__link> <span class=md-ellipsis> JSON Lines </span> </a> </li> <li class=md-nav__item> <a href=../../features/parsing/parse_exceptions/ class=md-nav__link> <span class=md-ellipsis> Parsing and Exceptions </span> </a> </li> <li class=md-nav__item> <a href=../../features/parsing/parser_callbacks/ class=md-nav__link> <span class=md-ellipsis> Parser Callbacks </span> </a> </li> <li class=md-nav__item> <a href=../../features/parsing/sax_interface/ class=md-nav__link> <span class=md-ellipsis> SAX Interface </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../features/assertions/ class=md-nav__link> <span class=md-ellipsis> Runtime Assertions </span> </a> </li> <li class=md-nav__item> <a href=../../features/enum_conversion/ class=md-nav__link> <span class=md-ellipsis> Specializing enum conversion </span> </a> </li> <li class=md-nav__item> <a href=../../features/macros/ class=md-nav__link> <span class=md-ellipsis> Supported Macros </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_18> <div class="md-nav__link md-nav__container"> <a href=../../features/types/ class="md-nav__link "> <span class=md-ellipsis> Types </span> </a> <label class="md-nav__link " for=__nav_2_18 id=__nav_2_18_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_18_label aria-expanded=false> <label class=md-nav__title for=__nav_2_18> <span class="md-nav__icon md-icon"></span> Types </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../features/types/number_handling/ class=md-nav__link> <span class=md-ellipsis> Number Handling </span> </a> </li> </ul> </nav> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--active md-nav__item--section md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_3 checked> <div class="md-nav__link md-nav__container"> <a href=../ class="md-nav__link "> <span class=md-ellipsis> Integration </span> </a> <label class="md-nav__link " for=__nav_3 id=__nav_3_label tabindex> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_3_label aria-expanded=true> <label class=md-nav__title for=__nav_3> <span class="md-nav__icon md-icon"></span> Integration </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../migration_guide/ class=md-nav__link> <span class=md-ellipsis> Migration Guide </span> </a> </li> <li class=md-nav__item> <a href=../cmake/ class=md-nav__link> <span class=md-ellipsis> CMake </span> </a> </li> <li class="md-nav__item md-nav__item--active"> <input class="md-nav__toggle md-toggle" type=checkbox id=__toc> <label class="md-nav__link md-nav__link--active" for=__toc> <span class=md-ellipsis> Package Managers </span> <span class="md-nav__icon md-icon"></span> </label> <a href=./ class="md-nav__link md-nav__link--active"> <span class=md-ellipsis> Package Managers </span> </a> <nav class="md-nav md-nav--secondary" aria-label="Table of contents"> <label class=md-nav__title for=__toc> <span class="md-nav__icon md-icon"></span> Table of contents </label> <ul class=md-nav__list data-md-component=toc data-md-scrollfix> <li class=md-nav__item> <a href=#running-example class=md-nav__link> <span class=md-ellipsis> Running example </span> </a> </li> <li class=md-nav__item> <a href=#homebrew class=md-nav__link> <span class=md-ellipsis> Homebrew </span> </a> </li> <li class=md-nav__item> <a href=#meson class=md-nav__link> <span class=md-ellipsis> Meson </span> </a> </li> <li class=md-nav__item> <a href=#bazel class=md-nav__link> <span class=md-ellipsis> Bazel </span> </a> </li> <li class=md-nav__item> <a href=#conan class=md-nav__link> <span class=md-ellipsis> Conan </span> </a> </li> <li class=md-nav__item> <a href=#spack class=md-nav__link> <span class=md-ellipsis> Spack </span> </a> </li> <li class=md-nav__item> <a href=#hunter class=md-nav__link> <span class=md-ellipsis> Hunter </span> </a> </li> <li class=md-nav__item> <a href=#vcpkg class=md-nav__link> <span class=md-ellipsis> vcpkg </span> </a> </li> <li class=md-nav__item> <a href=#cget class=md-nav__link> <span class=md-ellipsis> cget </span> </a> </li> <li class=md-nav__item> <a href=#swift-package-manager class=md-nav__link> <span class=md-ellipsis> Swift Package Manager </span> </a> </li> <li class=md-nav__item> <a href=#nuget class=md-nav__link> <span class=md-ellipsis> NuGet </span> </a> </li> <li class=md-nav__item> <a href=#conda class=md-nav__link> <span class=md-ellipsis> Conda </span> </a> </li> <li class=md-nav__item> <a href=#msys2 class=md-nav__link> <span class=md-ellipsis> MSYS2 </span> </a> </li> <li class=md-nav__item> <a href=#macports class=md-nav__link> <span class=md-ellipsis> MacPorts </span> </a> </li> <li class=md-nav__item> <a href=#build2 class=md-nav__link> <span class=md-ellipsis> build2 </span> </a> </li> <li class=md-nav__item> <a href=#cpmcmake class=md-nav__link> <span class=md-ellipsis> CPM.cmake </span> </a> </li> <li class=md-nav__item> <a href=#xmake class=md-nav__link> <span class=md-ellipsis> xmake </span> </a> </li> <li class=md-nav__item> <a href=#other-package-managers class=md-nav__link> <span class=md-ellipsis> Other package managers </span> </a> </li> <li class=md-nav__item> <a href=#buckaroo class=md-nav__link> <span class=md-ellipsis> Buckaroo </span> </a> </li> <li class=md-nav__item> <a href=#cocoapods class=md-nav__link> <span class=md-ellipsis> CocoaPods </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../pkg-config/ class=md-nav__link> <span class=md-ellipsis> Pkg-config </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4> <label class=md-nav__link for=__nav_4 id=__nav_4_label tabindex=0> <span class=md-ellipsis> API Documentation </span> <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_4_label aria-expanded=false> <label class=md-nav__title for=__nav_4> <span class="md-nav__icon md-icon"></span> API Documentation </label> <ul class=md-nav__list data-md-scrollfix> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_1> <div class="md-nav__link md-nav__container"> <a href=../../api/basic_json/ class="md-nav__link "> <span class=md-ellipsis> basic_json </span> </a> <label class="md-nav__link " for=__nav_4_1 id=__nav_4_1_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_1_label aria-expanded=false> <label class=md-nav__title for=__nav_4_1> <span class="md-nav__icon md-icon"></span> basic_json </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../api/basic_json/basic_json/ class=md-nav__link> <span class=md-ellipsis> (Constructor) </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/~basic_json/ class=md-nav__link> <span class=md-ellipsis> (Destructor) </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/accept/ class=md-nav__link> <span class=md-ellipsis> accept </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/array/ class=md-nav__link> <span class=md-ellipsis> array </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/array_t/ class=md-nav__link> <span class=md-ellipsis> array_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/at/ class=md-nav__link> <span class=md-ellipsis> at </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/back/ class=md-nav__link> <span class=md-ellipsis> back </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/begin/ class=md-nav__link> <span class=md-ellipsis> begin </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/binary/ class=md-nav__link> <span class=md-ellipsis> binary </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/binary_t/ class=md-nav__link> <span class=md-ellipsis> binary_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/boolean_t/ class=md-nav__link> <span class=md-ellipsis> boolean_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/cbegin/ class=md-nav__link> <span class=md-ellipsis> cbegin </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/cbor_tag_handler_t/ class=md-nav__link> <span class=md-ellipsis> cbor_tag_handler_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/cend/ class=md-nav__link> <span class=md-ellipsis> cend </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/clear/ class=md-nav__link> <span class=md-ellipsis> clear </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/contains/ class=md-nav__link> <span class=md-ellipsis> contains </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/count/ class=md-nav__link> <span class=md-ellipsis> count </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/crbegin/ class=md-nav__link> <span class=md-ellipsis> crbegin </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/crend/ class=md-nav__link> <span class=md-ellipsis> crend </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/default_object_comparator_t/ class=md-nav__link> <span class=md-ellipsis> default_object_comparator_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/diff/ class=md-nav__link> <span class=md-ellipsis> diff </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/dump/ class=md-nav__link> <span class=md-ellipsis> dump </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/emplace/ class=md-nav__link> <span class=md-ellipsis> emplace </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/emplace_back/ class=md-nav__link> <span class=md-ellipsis> emplace_back </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/empty/ class=md-nav__link> <span class=md-ellipsis> empty </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/end/ class=md-nav__link> <span class=md-ellipsis> end </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/end_pos/ class=md-nav__link> <span class=md-ellipsis> end_pos </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/erase/ class=md-nav__link> <span class=md-ellipsis> erase </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/error_handler_t/ class=md-nav__link> <span class=md-ellipsis> error_handler_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/exception/ class=md-nav__link> <span class=md-ellipsis> exception </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/find/ class=md-nav__link> <span class=md-ellipsis> find </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/flatten/ class=md-nav__link> <span class=md-ellipsis> flatten </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/from_bjdata/ class=md-nav__link> <span class=md-ellipsis> from_bjdata </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/from_bson/ class=md-nav__link> <span class=md-ellipsis> from_bson </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/from_cbor/ class=md-nav__link> <span class=md-ellipsis> from_cbor </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/from_msgpack/ class=md-nav__link> <span class=md-ellipsis> from_msgpack </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/from_ubjson/ class=md-nav__link> <span class=md-ellipsis> from_ubjson </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/front/ class=md-nav__link> <span class=md-ellipsis> front </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/get/ class=md-nav__link> <span class=md-ellipsis> get </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/get_allocator/ class=md-nav__link> <span class=md-ellipsis> get_allocator </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/get_binary/ class=md-nav__link> <span class=md-ellipsis> get_binary </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/get_ptr/ class=md-nav__link> <span class=md-ellipsis> get_ptr </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/get_ref/ class=md-nav__link> <span class=md-ellipsis> get_ref </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/get_to/ class=md-nav__link> <span class=md-ellipsis> get_to </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/std_hash/ class=md-nav__link> <span class=md-ellipsis> std::hash&lt;basic_json&gt; </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/input_format_t/ class=md-nav__link> <span class=md-ellipsis> input_format_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/insert/ class=md-nav__link> <span class=md-ellipsis> insert </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/invalid_iterator/ class=md-nav__link> <span class=md-ellipsis> invalid_iterator </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_array/ class=md-nav__link> <span class=md-ellipsis> is_array </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_binary/ class=md-nav__link> <span class=md-ellipsis> is_binary </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_boolean/ class=md-nav__link> <span class=md-ellipsis> is_boolean </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_discarded/ class=md-nav__link> <span class=md-ellipsis> is_discarded </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_null/ class=md-nav__link> <span class=md-ellipsis> is_null </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_number/ class=md-nav__link> <span class=md-ellipsis> is_number </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_number_float/ class=md-nav__link> <span class=md-ellipsis> is_number_float </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_number_integer/ class=md-nav__link> <span class=md-ellipsis> is_number_integer </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_number_unsigned/ class=md-nav__link> <span class=md-ellipsis> is_number_unsigned </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_object/ class=md-nav__link> <span class=md-ellipsis> is_object </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_primitive/ class=md-nav__link> <span class=md-ellipsis> is_primitive </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_string/ class=md-nav__link> <span class=md-ellipsis> is_string </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_structured/ class=md-nav__link> <span class=md-ellipsis> is_structured </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/items/ class=md-nav__link> <span class=md-ellipsis> items </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/json_base_class_t/ class=md-nav__link> <span class=md-ellipsis> json_base_class_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/json_serializer/ class=md-nav__link> <span class=md-ellipsis> json_serializer </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/max_size/ class=md-nav__link> <span class=md-ellipsis> max_size </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/meta/ class=md-nav__link> <span class=md-ellipsis> meta </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/merge_patch/ class=md-nav__link> <span class=md-ellipsis> merge_patch </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/number_float_t/ class=md-nav__link> <span class=md-ellipsis> number_float_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/number_integer_t/ class=md-nav__link> <span class=md-ellipsis> number_integer_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/number_unsigned_t/ class=md-nav__link> <span class=md-ellipsis> number_unsigned_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/object/ class=md-nav__link> <span class=md-ellipsis> object </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/object_comparator_t/ class=md-nav__link> <span class=md-ellipsis> object_comparator_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/object_t/ class=md-nav__link> <span class=md-ellipsis> object_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/operator_ValueType/ class=md-nav__link> <span class=md-ellipsis> operator ValueType </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/operator_value_t/ class=md-nav__link> <span class=md-ellipsis> operator value_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/operator%5B%5D/ class=md-nav__link> <span class=md-ellipsis> operator[] </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/operator%3D/ class=md-nav__link> <span class=md-ellipsis> operator= </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/operator%2B%3D/ class=md-nav__link> <span class=md-ellipsis> operator+= </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/operator_eq/ class=md-nav__link> <span class=md-ellipsis> operator== </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/operator_ne/ class=md-nav__link> <span class=md-ellipsis> operator!= </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/operator_lt/ class=md-nav__link> <span class=md-ellipsis> operator< </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/operator_gt/ class=md-nav__link> <span class=md-ellipsis> operator> </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/operator_le/ class=md-nav__link> <span class=md-ellipsis> operator<= </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/operator_ge/ class=md-nav__link> <span class=md-ellipsis> operator>= </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/operator_spaceship/ class=md-nav__link> <span class=md-ellipsis> operator<=> </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/out_of_range/ class=md-nav__link> <span class=md-ellipsis> out_of_range </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/other_error/ class=md-nav__link> <span class=md-ellipsis> other_error </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/parse/ class=md-nav__link> <span class=md-ellipsis> parse </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/parse_error/ class=md-nav__link> <span class=md-ellipsis> parse_error </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/parse_event_t/ class=md-nav__link> <span class=md-ellipsis> parse_event_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/parser_callback_t/ class=md-nav__link> <span class=md-ellipsis> parser_callback_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/patch/ class=md-nav__link> <span class=md-ellipsis> patch </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/patch_inplace/ class=md-nav__link> <span class=md-ellipsis> patch_inplace </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/push_back/ class=md-nav__link> <span class=md-ellipsis> push_back </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/rbegin/ class=md-nav__link> <span class=md-ellipsis> rbegin </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/rend/ class=md-nav__link> <span class=md-ellipsis> rend </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/sax_parse/ class=md-nav__link> <span class=md-ellipsis> sax_parse </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/size/ class=md-nav__link> <span class=md-ellipsis> size </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/start_pos/ class=md-nav__link> <span class=md-ellipsis> start_pos </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/string_t/ class=md-nav__link> <span class=md-ellipsis> string_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/swap/ class=md-nav__link> <span class=md-ellipsis> swap </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/std_swap/ class=md-nav__link> <span class=md-ellipsis> std::swap&lt;basic_json&gt; </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/to_bjdata/ class=md-nav__link> <span class=md-ellipsis> to_bjdata </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/to_bson/ class=md-nav__link> <span class=md-ellipsis> to_bson </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/to_cbor/ class=md-nav__link> <span class=md-ellipsis> to_cbor </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/to_msgpack/ class=md-nav__link> <span class=md-ellipsis> to_msgpack </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/to_string/ class=md-nav__link> <span class=md-ellipsis> to_string </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/to_ubjson/ class=md-nav__link> <span class=md-ellipsis> to_ubjson </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/type/ class=md-nav__link> <span class=md-ellipsis> type </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/type_error/ class=md-nav__link> <span class=md-ellipsis> type_error </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/type_name/ class=md-nav__link> <span class=md-ellipsis> type_name </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/unflatten/ class=md-nav__link> <span class=md-ellipsis> unflatten </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/update/ class=md-nav__link> <span class=md-ellipsis> update </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/value/ class=md-nav__link> <span class=md-ellipsis> value </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/value_t/ class=md-nav__link> <span class=md-ellipsis> value_t </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_2> <div class="md-nav__link md-nav__container"> <a href=../../api/byte_container_with_subtype/ class="md-nav__link "> <span class=md-ellipsis> byte_container_with_subtype </span> </a> <label class="md-nav__link " for=__nav_4_2 id=__nav_4_2_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_2_label aria-expanded=false> <label class=md-nav__title for=__nav_4_2> <span class="md-nav__icon md-icon"></span> byte_container_with_subtype </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../api/byte_container_with_subtype/byte_container_with_subtype/ class=md-nav__link> <span class=md-ellipsis> (constructor) </span> </a> </li> <li class=md-nav__item> <a href=../../api/byte_container_with_subtype/clear_subtype/ class=md-nav__link> <span class=md-ellipsis> clear_subtype </span> </a> </li> <li class=md-nav__item> <a href=../../api/byte_container_with_subtype/has_subtype/ class=md-nav__link> <span class=md-ellipsis> has_subtype </span> </a> </li> <li class=md-nav__item> <a href=../../api/byte_container_with_subtype/set_subtype/ class=md-nav__link> <span class=md-ellipsis> set_subtype </span> </a> </li> <li class=md-nav__item> <a href=../../api/byte_container_with_subtype/subtype/ class=md-nav__link> <span class=md-ellipsis> subtype </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_3> <div class="md-nav__link md-nav__container"> <a href=../../api/adl_serializer/ class="md-nav__link "> <span class=md-ellipsis> adl_serializer </span> </a> <label class="md-nav__link " for=__nav_4_3 id=__nav_4_3_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_3_label aria-expanded=false> <label class=md-nav__title for=__nav_4_3> <span class="md-nav__icon md-icon"></span> adl_serializer </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../api/adl_serializer/from_json/ class=md-nav__link> <span class=md-ellipsis> from_json </span> </a> </li> <li class=md-nav__item> <a href=../../api/adl_serializer/to_json/ class=md-nav__link> <span class=md-ellipsis> to_json </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../api/json/ class=md-nav__link> <span class=md-ellipsis> json </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_5> <div class="md-nav__link md-nav__container"> <a href=../../api/json_pointer/ class="md-nav__link "> <span class=md-ellipsis> json_pointer </span> </a> <label class="md-nav__link " for=__nav_4_5 id=__nav_4_5_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_5_label aria-expanded=false> <label class=md-nav__title for=__nav_4_5> <span class="md-nav__icon md-icon"></span> json_pointer </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../api/json_pointer/json_pointer/ class=md-nav__link> <span class=md-ellipsis> (Constructor) </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/back/ class=md-nav__link> <span class=md-ellipsis> back </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/empty/ class=md-nav__link> <span class=md-ellipsis> empty </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/front/ class=md-nav__link> <span class=md-ellipsis> front </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/operator_string_t/ class=md-nav__link> <span class=md-ellipsis> operator string_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/operator_eq/ class=md-nav__link> <span class=md-ellipsis> operator== </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/operator_ne/ class=md-nav__link> <span class=md-ellipsis> operator!= </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/operator_slash/ class=md-nav__link> <span class=md-ellipsis> operator/ </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/operator_slasheq/ class=md-nav__link> <span class=md-ellipsis> operator/= </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/parent_pointer/ class=md-nav__link> <span class=md-ellipsis> parent_pointer </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/pop_back/ class=md-nav__link> <span class=md-ellipsis> pop_back </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/pop_front/ class=md-nav__link> <span class=md-ellipsis> pop_front </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/push_back/ class=md-nav__link> <span class=md-ellipsis> push_back </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/push_front/ class=md-nav__link> <span class=md-ellipsis> push_front </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/string_t/ class=md-nav__link> <span class=md-ellipsis> string_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/to_string/ class=md-nav__link> <span class=md-ellipsis> to_string </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_6> <div class="md-nav__link md-nav__container"> <a href=../../api/json_sax/ class="md-nav__link "> <span class=md-ellipsis> json_sax </span> </a> <label class="md-nav__link " for=__nav_4_6 id=__nav_4_6_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_6_label aria-expanded=false> <label class=md-nav__title for=__nav_4_6> <span class="md-nav__icon md-icon"></span> json_sax </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../api/json_sax/binary/ class=md-nav__link> <span class=md-ellipsis> binary </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_sax/boolean/ class=md-nav__link> <span class=md-ellipsis> boolean </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_sax/end_array/ class=md-nav__link> <span class=md-ellipsis> end_array </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_sax/end_object/ class=md-nav__link> <span class=md-ellipsis> end_object </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_sax/key/ class=md-nav__link> <span class=md-ellipsis> key </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_sax/null/ class=md-nav__link> <span class=md-ellipsis> null </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_sax/number_float/ class=md-nav__link> <span class=md-ellipsis> number_float </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_sax/number_integer/ class=md-nav__link> <span class=md-ellipsis> number_integer </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_sax/number_unsigned/ class=md-nav__link> <span class=md-ellipsis> number_unsigned </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_sax/parse_error/ class=md-nav__link> <span class=md-ellipsis> parse_error </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_sax/start_array/ class=md-nav__link> <span class=md-ellipsis> start_array </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_sax/start_object/ class=md-nav__link> <span class=md-ellipsis> start_object </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_sax/string/ class=md-nav__link> <span class=md-ellipsis> string </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../api/operator_ltlt/ class=md-nav__link> <span class=md-ellipsis> operator<<(basic_json), operator<<(json_pointer) </span> </a> </li> <li class=md-nav__item> <a href=../../api/operator_gtgt/ class=md-nav__link> <span class=md-ellipsis> operator>>(basic_json) </span> </a> </li> <li class=md-nav__item> <a href=../../api/operator_literal_json/ class=md-nav__link> <span class=md-ellipsis> operator""_json </span> </a> </li> <li class=md-nav__item> <a href=../../api/operator_literal_json_pointer/ class=md-nav__link> <span class=md-ellipsis> operator""_json_pointer </span> </a> </li> <li class=md-nav__item> <a href=../../api/ordered_json/ class=md-nav__link> <span class=md-ellipsis> ordered_json </span> </a> </li> <li class=md-nav__item> <a href=../../api/ordered_map/ class=md-nav__link> <span class=md-ellipsis> ordered_map </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_13> <div class="md-nav__link md-nav__container"> <a href=../../api/macros/ class="md-nav__link "> <span class=md-ellipsis> macros </span> </a> <label class="md-nav__link " for=__nav_4_13 id=__nav_4_13_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_13_label aria-expanded=false> <label class=md-nav__title for=__nav_4_13> <span class="md-nav__icon md-icon"></span> macros </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../api/macros/json_assert/ class=md-nav__link> <span class=md-ellipsis> JSON_ASSERT </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_brace_init_copy_semantics/ class=md-nav__link> <span class=md-ellipsis> JSON_BRACE_INIT_COPY_SEMANTICS </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_throw_user/ class=md-nav__link> <span class=md-ellipsis> JSON_CATCH_USER, JSON_THROW_USER, JSON_TRY_USER </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_diagnostics/ class=md-nav__link> <span class=md-ellipsis> JSON_DIAGNOSTICS </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_diagnostic_positions/ class=md-nav__link> <span class=md-ellipsis> JSON_DIAGNOSTIC_POSITIONS </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_disable_enum_serialization/ class=md-nav__link> <span class=md-ellipsis> JSON_DISABLE_ENUM_SERIALIZATION </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_has_cpp_11/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_CPP_11, JSON_HAS_CPP_14, JSON_HAS_CPP_17, JSON_HAS_CPP_20 </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_has_filesystem/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_EXPERIMENTAL_FILESYSTEM, JSON_HAS_FILESYSTEM </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_has_ranges/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_RANGES </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_has_static_rtti/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_STATIC_RTTI </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_has_three_way_comparison/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_THREE_WAY_COMPARISON </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_noexception/ class=md-nav__link> <span class=md-ellipsis> JSON_NOEXCEPTION </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_no_io/ class=md-nav__link> <span class=md-ellipsis> JSON_NO_IO </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_skip_library_version_check/ class=md-nav__link> <span class=md-ellipsis> JSON_SKIP_LIBRARY_VERSION_CHECK </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_skip_unsupported_compiler_check/ class=md-nav__link> <span class=md-ellipsis> JSON_SKIP_UNSUPPORTED_COMPILER_CHECK </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_use_global_udls/ class=md-nav__link> <span class=md-ellipsis> JSON_USE_GLOBAL_UDLS </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_use_implicit_conversions/ class=md-nav__link> <span class=md-ellipsis> JSON_USE_IMPLICIT_CONVERSIONS </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_use_legacy_discarded_value_comparison/ class=md-nav__link> <span class=md-ellipsis> JSON_USE_LEGACY_DISCARDED_VALUE_COMPARISON </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/nlohmann_define_derived_type/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_ONLY_SERIALIZE, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/nlohmann_define_type_intrusive/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_TYPE_INTRUSIVE, NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_TYPE_INTRUSIVE_ONLY_SERIALIZE </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/nlohmann_define_type_non_intrusive/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/nlohmann_define_type_with_names/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_TYPE_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/nlohmann_json_namespace/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_NAMESPACE </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/nlohmann_json_namespace_begin/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_NAMESPACE_BEGIN, NLOHMANN_JSON_NAMESPACE_END </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/nlohmann_json_namespace_no_version/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_NAMESPACE_NO_VERSION </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/nlohmann_json_serialize_enum/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_SERIALIZE_ENUM </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/nlohmann_json_serialize_enum_strict/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_SERIALIZE_ENUM_STRICT </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/nlohmann_json_version_major/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_VERSION_MAJOR, NLOHMANN_JSON_VERSION_MINOR, NLOHMANN_JSON_VERSION_PATCH </span> </a> </li> </ul> </nav> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_5> <div class="md-nav__link md-nav__container"> <a href=../../community/ class="md-nav__link "> <span class=md-ellipsis> Community </span> </a> <label class="md-nav__link " for=__nav_5 id=__nav_5_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_5_label aria-expanded=false> <label class=md-nav__title for=__nav_5> <span class="md-nav__icon md-icon"></span> Community </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../community/code_of_conduct/ class=md-nav__link> <span class=md-ellipsis> Code of Conduct </span> </a> </li> <li class=md-nav__item> <a href=../../community/contribution_guidelines/ class=md-nav__link> <span class=md-ellipsis> Contribution Guidelines </span> </a> </li> <li class=md-nav__item> <a href=../../community/quality_assurance/ class=md-nav__link> <span class=md-ellipsis> Quality assurance </span> </a> </li> <li class=md-nav__item> <a href=../../community/governance/ class=md-nav__link> <span class=md-ellipsis> Governance </span> </a> </li> <li class=md-nav__item> <a href=../../community/security_policy/ class=md-nav__link> <span class=md-ellipsis> Security Policy </span> </a> </li> </ul> </nav> </li> </ul> </nav> </div> </div> </div> <div class="md-sidebar md-sidebar--secondary" data-md-component=sidebar data-md-type=toc> <div class=md-sidebar__scrollwrap> <div class=md-sidebar__inner> <nav class="md-nav md-nav--secondary" aria-label="Table of contents"> <label class=md-nav__title for=__toc> <span class="md-nav__icon md-icon"></span> Table of contents </label> <ul class=md-nav__list data-md-component=toc data-md-scrollfix> <li class=md-nav__item> <a href=#running-example class=md-nav__link> <span class=md-ellipsis> Running example </span> </a> </li> <li class=md-nav__item> <a href=#homebrew class=md-nav__link> <span class=md-ellipsis> Homebrew </span> </a> </li> <li class=md-nav__item> <a href=#meson class=md-nav__link> <span class=md-ellipsis> Meson </span> </a> </li> <li class=md-nav__item> <a href=#bazel class=md-nav__link> <span class=md-ellipsis> Bazel </span> </a> </li> <li class=md-nav__item> <a href=#conan class=md-nav__link> <span class=md-ellipsis> Conan </span> </a> </li> <li class=md-nav__item> <a href=#spack class=md-nav__link> <span class=md-ellipsis> Spack </span> </a> </li> <li class=md-nav__item> <a href=#hunter class=md-nav__link> <span class=md-ellipsis> Hunter </span> </a> </li> <li class=md-nav__item> <a href=#vcpkg class=md-nav__link> <span class=md-ellipsis> vcpkg </span> </a> </li> <li class=md-nav__item> <a href=#cget class=md-nav__link> <span class=md-ellipsis> cget </span> </a> </li> <li class=md-nav__item> <a href=#swift-package-manager class=md-nav__link> <span class=md-ellipsis> Swift Package Manager </span> </a> </li> <li class=md-nav__item> <a href=#nuget class=md-nav__link> <span class=md-ellipsis> NuGet </span> </a> </li> <li class=md-nav__item> <a href=#conda class=md-nav__link> <span class=md-ellipsis> Conda </span> </a> </li> <li class=md-nav__item> <a href=#msys2 class=md-nav__link> <span class=md-ellipsis> MSYS2 </span> </a> </li> <li class=md-nav__item> <a href=#macports class=md-nav__link> <span class=md-ellipsis> MacPorts </span> </a> </li> <li class=md-nav__item> <a href=#build2 class=md-nav__link> <span class=md-ellipsis> build2 </span> </a> </li> <li class=md-nav__item> <a href=#cpmcmake class=md-nav__link> <span class=md-ellipsis> CPM.cmake </span> </a> </li> <li class=md-nav__item> <a href=#xmake class=md-nav__link> <span class=md-ellipsis> xmake </span> </a> </li> <li class=md-nav__item> <a href=#other-package-managers class=md-nav__link> <span class=md-ellipsis> Other package managers </span> </a> </li> <li class=md-nav__item> <a href=#buckaroo class=md-nav__link> <span class=md-ellipsis> Buckaroo </span> </a> </li> <li class=md-nav__item> <a href=#cocoapods class=md-nav__link> <span class=md-ellipsis> CocoaPods </span> </a> </li> </ul> </nav> </div> </div> </div> <div class=md-content data-md-component=content> <article class="md-content__inner md-typeset"> <a href="https://github.com/nlohmann/json/edit/develop/docs/mkdocs/docs/integration/package_managers.md" title="Edit this page" class="md-content__button md-icon" rel="edit"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M10 20H6V4h7v5h5v3.1l2-2V8l-6-6H6c-1.1 0-2 .9-2 2v16c0 1.1.9 2 2 2h4zm10.2-7c.1 0 .3.1.4.2l1.3 1.3c.2.2.2.6 0 .8l-1 1-2.1-2.1 1-1c.1-.1.2-.2.4-.2m0 3.9L14.1 23H12v-2.1l6.1-6.1z"/></svg> </a> <a href="https://github.com/nlohmann/json/raw/develop/docs/mkdocs/docs/integration/package_managers.md" title="View source of this page" class="md-content__button md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M17 18c.56 0 1 .44 1 1s-.44 1-1 1-1-.44-1-1 .44-1 1-1m0-3c-2.73 0-5.06 1.66-6 4 .94 2.34 3.27 4 6 4s5.06-1.66 6-4c-.94-2.34-3.27-4-6-4m0 6.5a2.5 2.5 0 0 1-2.5-2.5 2.5 2.5 0 0 1 2.5-2.5 2.5 2.5 0 0 1 2.5 2.5 2.5 2.5 0 0 1-2.5 2.5M9.27 20H6V4h7v5h5v4.07c.7.08 1.36.25 2 .49V8l-6-6H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h4.5a8.2 8.2 0 0 1-1.23-2"/></svg> </a> <h1 id=package-managers>Package Managers<a class=headerlink href=#package-managers title="Permanent link">&para;</a></h1> <p style="text-align: center"> <img alt=Homebrew src=../../images/package_managers/homebrew.svg style=height:1em>&nbsp;<a href=#homebrew><strong>Homebrew</strong></a> <code>nlohmann-json</code> &emsp; <img alt=Meson src=../../images/package_managers/meson.svg style=height:1em>&nbsp;<a href=#meson><strong>Meson</strong></a> <code>nlohmann_json</code> &emsp; <img alt=Bazel src=../../images/package_managers/bazel.svg style=height:1em>&nbsp;<a href=#bazel><strong>Bazel</strong></a> <code>nlohmann_json</code><br> <img alt=Conan src=../../images/package_managers/conan.svg style=height:1em>&nbsp;<a href=#conan><strong>Conan</strong></a> <code>nlohmann_json</code> &emsp; <img alt=Spack src=../../images/package_managers/spack.svg style=height:1em>&nbsp;<a href=#spack><strong>Spack</strong></a> <code>nlohmann-json</code> &emsp; <a href=#hunter><strong>Hunter</strong></a> <code>nlohmann_json</code><br> <img alt=vcpkg src=../../images/package_managers/vcpkg.png style=height:1em>&nbsp;<a href=#vcpkg><strong>vcpkg</strong></a> <code>nlohmann-json</code> &emsp; <a href=#cget><strong>cget</strong></a> <code>nlohmann/json</code> &emsp; <img alt="Swift Package Manager" src=../../images/package_managers/swift.svg style=height:1em>&nbsp;<a href=#swift-package-manager><strong>Swift Package Manager</strong></a> <code>nlohmann/json</code><br> <img alt=Nuget src=../../images/package_managers/nuget.svg style=height:1em>&nbsp;<a href=#nuget><strong>NuGet</strong></a> <code>nlohmann.json</code> &emsp; <img alt=Conda src=../../images/package_managers/conda.svg style=height:1em>&nbsp;<a href=#conda><strong>Conda</strong></a> <code>nlohmann_json</code> &emsp; <img alt=MacPorts src=../../images/package_managers/macports.svg style=height:1em>&nbsp;<a href=#macports><strong>MacPorts</strong></a> <code>nlohmann-json</code><br> <img alt=cpm.cmake src=../../images/package_managers/CPM.png style=height:1em>&nbsp;<a href=#cpmcmake><strong>CPM.cmake</strong></a> <code>gh:nlohmann/json</code> &emsp; <img alt=xmake src=../../images/package_managers/xmake.svg style=height:1em>&nbsp;<a href=#xmake><strong>xmake</strong></a> <code>nlohmann_json</code> </p> <h2 id=running-example>Running example<a class=headerlink href=#running-example title="Permanent link">&para;</a></h2> <p>Throughout this page, we will describe how to compile the example file <code>example.cpp</code> below.</p> <div class=highlight><pre><span></span><code><span class=cp>#include</span><span class=w> </span><span class=cpf>&lt;nlohmann/json.hpp&gt;</span>
 <span class=cp>#include</span><span class=w> </span><span class=cpf>&lt;iostream&gt;</span>
 <span class=cp>#include</span><span class=w> </span><span class=cpf>&lt;iomanip&gt;</span>
 
@@ -58,7 +58,7 @@
 </code></pre></div> </li> <li> <p>Install the package:</p> <div class=highlight><pre><span></span><code>brew<span class=w> </span>install<span class=w> </span>nlohmann-json
 </code></pre></div> </li> <li> <p>Compile the code and pass the Homebrew prefix to CMake to find installed packages via <code class=highlight><span class=err>find_package</span></code>:</p> <div class=highlight><pre><span></span><code><span class=nv>CMAKE_PREFIX_PATH</span><span class=o>=</span><span class=k>$(</span>brew<span class=w> </span>--prefix<span class=k>)</span><span class=w> </span>cmake<span class=w> </span>-S<span class=w> </span>.<span class=w> </span>-B<span class=w> </span>build
 cmake<span class=w> </span>--build<span class=w> </span>build
-</code></pre></div> </li> </ol> </details> <h2 id=meson>Meson<a class=headerlink href=#meson title="Permanent link">&para;</a></h2> <div class="admonition abstract"> <p class=admonition-title>Summary</p> <p>wrap: <strong><code>nlohmann_json</code></strong></p> <ul> <li><span class=twemoji><svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M7.75 6.5a1.25 1.25 0 1 0 0 2.5 1.25 1.25 0 0 0 0-2.5"/><path d="M2.5 1h8.44a1.5 1.5 0 0 1 1.06.44l10.25 10.25a1.5 1.5 0 0 1 0 2.12l-8.44 8.44a1.5 1.5 0 0 1-2.12 0L1.44 12A1.5 1.5 0 0 1 1 10.94V2.5A1.5 1.5 0 0 1 2.5 1m0 1.5v8.44l10.25 10.25 8.44-8.44L10.94 2.5Z"/></svg></span> Available versions: current version and select older versions (see <a href="https://mesonbuild.com/Wrapdb-projects.html">WrapDB</a>)</li> <li><span class=twemoji><svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M20.322.75h1.176a1.75 1.75 0 0 1 1.75 1.749v1.177a10.75 10.75 0 0 1-2.925 7.374l-1.228 1.304a24 24 0 0 1-1.596 1.542v5.038c0 .615-.323 1.184-.85 1.5l-4.514 2.709a.75.75 0 0 1-1.12-.488l-.963-4.572a1.3 1.3 0 0 1-.14-.129L8.04 15.96l-1.994-1.873a1.3 1.3 0 0 1-.129-.14l-4.571-.963a.75.75 0 0 1-.49-1.12l2.71-4.514c.316-.527.885-.85 1.5-.85h5.037a24 24 0 0 1 1.542-1.594l1.304-1.23A10.75 10.75 0 0 1 20.321.75Zm-6.344 4.018v-.001l-1.304 1.23a22.3 22.3 0 0 0-3.255 3.851l-2.193 3.29 1.859 1.744.034.034 1.743 1.858 3.288-2.192a22.3 22.3 0 0 0 3.854-3.257l1.228-1.303a9.25 9.25 0 0 0 2.517-6.346V2.5a.25.25 0 0 0-.25-.25h-1.177a9.25 9.25 0 0 0-6.344 2.518M6.5 21c-1.209 1.209-3.901 1.445-4.743 1.49a.24.24 0 0 1-.18-.067.24.24 0 0 1-.067-.18c.045-.842.281-3.534 1.49-4.743.9-.9 2.6-.9 3.5 0s.9 2.6 0 3.5m-.592-8.588L8.17 9.017q.346-.519.717-1.017H5.066a.25.25 0 0 0-.214.121l-2.167 3.612ZM16 15.112q-.5.372-1.018.718l-3.393 2.262.678 3.223 3.612-2.167a.25.25 0 0 0 .121-.214ZM17.5 8a1.5 1.5 0 1 1-3.001-.001A1.5 1.5 0 0 1 17.5 8"/></svg></span> The package is update automatically from file <a href="https://github.com/nlohmann/json/blob/develop/meson.build"><code>meson.build</code></a>.</li> <li><span class=twemoji><svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M3 3a2 2 0 0 1 2-2h9.982a2 2 0 0 1 1.414.586l4.018 4.018A2 2 0 0 1 21 7.018V21a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2Zm2-.5a.5.5 0 0 0-.5.5v18a.5.5 0 0 0 .5.5h14a.5.5 0 0 0 .5-.5V8.5h-4a2 2 0 0 1-2-2v-4Zm10 0v4a.5.5 0 0 0 .5.5h4a.5.5 0 0 0-.146-.336l-4.018-4.018A.5.5 0 0 0 15 2.5"/></svg></span> File issues at the <a href="https://github.com/nlohmann/json/issues">library issue tracker</a></li> <li><span class=twemoji><svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M10.97 8.265a1.45 1.45 0 0 0-.487.57.75.75 0 0 1-1.341-.67c.2-.402.513-.826.997-1.148C10.627 6.69 11.244 6.5 12 6.5c.658 0 1.369.195 1.934.619a2.45 2.45 0 0 1 1.004 2.006c0 1.033-.513 1.72-1.027 2.215-.19.183-.399.358-.579.508l-.147.123a4 4 0 0 0-.435.409v1.37a.75.75 0 1 1-1.5 0v-1.473c0-.237.067-.504.247-.736.22-.28.486-.517.718-.714l.183-.153.001-.001c.172-.143.324-.27.47-.412.368-.355.569-.676.569-1.136a.95.95 0 0 0-.404-.806C12.766 8.118 12.384 8 12 8c-.494 0-.814.121-1.03.265M13 17a1 1 0 1 1-2 0 1 1 0 0 1 2 0"/><path d="M12 1c6.075 0 11 4.925 11 11s-4.925 11-11 11S1 18.075 1 12 5.925 1 12 1M2.5 12a9.5 9.5 0 0 0 9.5 9.5 9.5 9.5 0 0 0 9.5-9.5A9.5 9.5 0 0 0 12 2.5 9.5 9.5 0 0 0 2.5 12"/></svg></span> <a href="https://mesonbuild.com/index.html">Meson website</a></li> </ul> </div> <p>If you are using the <a href="http://mesonbuild.com">Meson Build System</a>, add this source tree as a <a href="https://mesonbuild.com/Subprojects.html#using-a-subproject">meson subproject</a>. You may also use the <code>include.zip</code> published in this project's <a href="https://github.com/nlohmann/json/releases">Releases</a> to reduce the size of the vendored source tree. Alternatively, you can get a wrap file by downloading it from <a href="https://mesonbuild.com/Wrapdb-projects.html">Meson WrapDB</a>, or use</p> <div class=highlight><pre><span></span><code>meson<span class=w> </span>wrap<span class=w> </span>install<span class=w> </span>nlohmann_json
+</code></pre></div> </li> </ol> </details> <h2 id=meson>Meson<a class=headerlink href=#meson title="Permanent link">&para;</a></h2> <div class="admonition abstract"> <p class=admonition-title>Summary</p> <p>wrap: <strong><code>nlohmann_json</code></strong></p> <ul> <li><span class=twemoji><svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M7.75 6.5a1.25 1.25 0 1 0 0 2.5 1.25 1.25 0 0 0 0-2.5"/><path d="M2.5 1h8.44a1.5 1.5 0 0 1 1.06.44l10.25 10.25a1.5 1.5 0 0 1 0 2.12l-8.44 8.44a1.5 1.5 0 0 1-2.12 0L1.44 12A1.5 1.5 0 0 1 1 10.94V2.5A1.5 1.5 0 0 1 2.5 1m0 1.5v8.44l10.25 10.25 8.44-8.44L10.94 2.5Z"/></svg></span> Available versions: current version and select older versions (see <a href="https://mesonbuild.com/Wrapdb-projects.html">WrapDB</a>)</li> <li><span class=twemoji><svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M20.322.75h1.176a1.75 1.75 0 0 1 1.75 1.749v1.177a10.75 10.75 0 0 1-2.925 7.374l-1.228 1.304a24 24 0 0 1-1.596 1.542v5.038c0 .615-.323 1.184-.85 1.5l-4.514 2.709a.75.75 0 0 1-1.12-.488l-.963-4.572a1.3 1.3 0 0 1-.14-.129L8.04 15.96l-1.994-1.873a1.3 1.3 0 0 1-.129-.14l-4.571-.963a.75.75 0 0 1-.49-1.12l2.71-4.514c.316-.527.885-.85 1.5-.85h5.037a24 24 0 0 1 1.542-1.594l1.304-1.23A10.75 10.75 0 0 1 20.321.75Zm-6.344 4.018v-.001l-1.304 1.23a22.3 22.3 0 0 0-3.255 3.851l-2.193 3.29 1.859 1.744.034.034 1.743 1.858 3.288-2.192a22.3 22.3 0 0 0 3.854-3.257l1.228-1.303a9.25 9.25 0 0 0 2.517-6.346V2.5a.25.25 0 0 0-.25-.25h-1.177a9.25 9.25 0 0 0-6.344 2.518M6.5 21c-1.209 1.209-3.901 1.445-4.743 1.49a.24.24 0 0 1-.18-.067.24.24 0 0 1-.067-.18c.045-.842.281-3.534 1.49-4.743.9-.9 2.6-.9 3.5 0s.9 2.6 0 3.5m-.592-8.588L8.17 9.017q.346-.519.717-1.017H5.066a.25.25 0 0 0-.214.121l-2.167 3.612ZM16 15.112q-.5.372-1.018.718l-3.393 2.262.678 3.223 3.612-2.167a.25.25 0 0 0 .121-.214ZM17.5 8a1.5 1.5 0 1 1-3.001-.001A1.5 1.5 0 0 1 17.5 8"/></svg></span> The package is updated automatically from file <a href="https://github.com/nlohmann/json/blob/develop/meson.build"><code>meson.build</code></a>.</li> <li><span class=twemoji><svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M3 3a2 2 0 0 1 2-2h9.982a2 2 0 0 1 1.414.586l4.018 4.018A2 2 0 0 1 21 7.018V21a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2Zm2-.5a.5.5 0 0 0-.5.5v18a.5.5 0 0 0 .5.5h14a.5.5 0 0 0 .5-.5V8.5h-4a2 2 0 0 1-2-2v-4Zm10 0v4a.5.5 0 0 0 .5.5h4a.5.5 0 0 0-.146-.336l-4.018-4.018A.5.5 0 0 0 15 2.5"/></svg></span> File issues at the <a href="https://github.com/nlohmann/json/issues">library issue tracker</a></li> <li><span class=twemoji><svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M10.97 8.265a1.45 1.45 0 0 0-.487.57.75.75 0 0 1-1.341-.67c.2-.402.513-.826.997-1.148C10.627 6.69 11.244 6.5 12 6.5c.658 0 1.369.195 1.934.619a2.45 2.45 0 0 1 1.004 2.006c0 1.033-.513 1.72-1.027 2.215-.19.183-.399.358-.579.508l-.147.123a4 4 0 0 0-.435.409v1.37a.75.75 0 1 1-1.5 0v-1.473c0-.237.067-.504.247-.736.22-.28.486-.517.718-.714l.183-.153.001-.001c.172-.143.324-.27.47-.412.368-.355.569-.676.569-1.136a.95.95 0 0 0-.404-.806C12.766 8.118 12.384 8 12 8c-.494 0-.814.121-1.03.265M13 17a1 1 0 1 1-2 0 1 1 0 0 1 2 0"/><path d="M12 1c6.075 0 11 4.925 11 11s-4.925 11-11 11S1 18.075 1 12 5.925 1 12 1M2.5 12a9.5 9.5 0 0 0 9.5 9.5 9.5 9.5 0 0 0 9.5-9.5A9.5 9.5 0 0 0 12 2.5 9.5 9.5 0 0 0 2.5 12"/></svg></span> <a href="https://mesonbuild.com/index.html">Meson website</a></li> </ul> </div> <p>If you are using the <a href="http://mesonbuild.com">Meson Build System</a>, add this source tree as a <a href="https://mesonbuild.com/Subprojects.html#using-a-subproject">meson subproject</a>. You may also use the <code>include.zip</code> published in this project's <a href="https://github.com/nlohmann/json/releases">Releases</a> to reduce the size of the vendored source tree. Alternatively, you can get a wrap file by downloading it from <a href="https://mesonbuild.com/Wrapdb-projects.html">Meson WrapDB</a>, or use</p> <div class=highlight><pre><span></span><code>meson<span class=w> </span>wrap<span class=w> </span>install<span class=w> </span>nlohmann_json
 </code></pre></div> <p>Please see the Meson project for any issues regarding the packaging.</p> <p>The provided <code>meson.build</code> can also be used as an alternative to CMake for installing <code>nlohmann_json</code> system-wide in which case a pkg-config file is installed. To use it, have your build system require the <code>nlohmann_json</code> pkg-config dependency. In Meson, it is preferred to use the <a href="https://mesonbuild.com/Reference-manual.html#dependency"><code>dependency()</code></a> object with a subproject fallback, rather than using the subproject directly.</p> <details class=example> <summary>Example: Wrap</summary> <ol> <li> <p>Create the following files:</p> <div class=highlight><span class=filename>meson.build</span><pre><span></span><code><span class=na>project(&#39;json_example&#39;, &#39;cpp&#39;,</span>
 <span class=w>  </span><span class=na>version</span><span class=o>:</span><span class=w> </span><span class=s>&#39;1.0&#39;</span><span class=na>,</span>
 <span class=w>  </span><span class=na>default_options</span><span class=o>:</span><span class=w> </span><span class=s>[&#39;cpp_std=c++11&#39;]</span>
@@ -103,7 +103,7 @@
 <span class=p>}</span>
 </code></pre></div> </li> <li> <p>Build and run:</p> <div class=highlight><pre><span></span><code>bazel<span class=w> </span>build<span class=w> </span>//:main
 bazel<span class=w> </span>run<span class=w> </span>//:main
-</code></pre></div> </li> </ol> </details> <h2 id=conan>Conan<a class=headerlink href=#conan title="Permanent link">&para;</a></h2> <div class="admonition abstract"> <p class=admonition-title>Summary</p> <p>recipe: <a href="https://conan.io/center/recipes/nlohmann_json"><strong><code>nlohmann_json</code></strong></a></p> <ul> <li><a href="https://repology.org/project/nlohmann-json/versions"><img alt="ConanCenter package" src="../../assets/external/repology.org/badge/version-for-repo/conancenter/nlohmann-json.svg"></a></li> <li><span class=twemoji><svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M7.75 6.5a1.25 1.25 0 1 0 0 2.5 1.25 1.25 0 0 0 0-2.5"/><path d="M2.5 1h8.44a1.5 1.5 0 0 1 1.06.44l10.25 10.25a1.5 1.5 0 0 1 0 2.12l-8.44 8.44a1.5 1.5 0 0 1-2.12 0L1.44 12A1.5 1.5 0 0 1 1 10.94V2.5A1.5 1.5 0 0 1 2.5 1m0 1.5v8.44l10.25 10.25 8.44-8.44L10.94 2.5Z"/></svg></span> Available versions: current version and older versions (see <a href="https://conan.io/center/recipes/nlohmann_json">Conan Center</a>)</li> <li><span class=twemoji><svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M20.322.75h1.176a1.75 1.75 0 0 1 1.75 1.749v1.177a10.75 10.75 0 0 1-2.925 7.374l-1.228 1.304a24 24 0 0 1-1.596 1.542v5.038c0 .615-.323 1.184-.85 1.5l-4.514 2.709a.75.75 0 0 1-1.12-.488l-.963-4.572a1.3 1.3 0 0 1-.14-.129L8.04 15.96l-1.994-1.873a1.3 1.3 0 0 1-.129-.14l-4.571-.963a.75.75 0 0 1-.49-1.12l2.71-4.514c.316-.527.885-.85 1.5-.85h5.037a24 24 0 0 1 1.542-1.594l1.304-1.23A10.75 10.75 0 0 1 20.321.75Zm-6.344 4.018v-.001l-1.304 1.23a22.3 22.3 0 0 0-3.255 3.851l-2.193 3.29 1.859 1.744.034.034 1.743 1.858 3.288-2.192a22.3 22.3 0 0 0 3.854-3.257l1.228-1.303a9.25 9.25 0 0 0 2.517-6.346V2.5a.25.25 0 0 0-.25-.25h-1.177a9.25 9.25 0 0 0-6.344 2.518M6.5 21c-1.209 1.209-3.901 1.445-4.743 1.49a.24.24 0 0 1-.18-.067.24.24 0 0 1-.067-.18c.045-.842.281-3.534 1.49-4.743.9-.9 2.6-.9 3.5 0s.9 2.6 0 3.5m-.592-8.588L8.17 9.017q.346-.519.717-1.017H5.066a.25.25 0 0 0-.214.121l-2.167 3.612ZM16 15.112q-.5.372-1.018.718l-3.393 2.262.678 3.223 3.612-2.167a.25.25 0 0 0 .121-.214ZM17.5 8a1.5 1.5 0 1 1-3.001-.001A1.5 1.5 0 0 1 17.5 8"/></svg></span> The package is update automatically via <a href="https://github.com/conan-io/conan-center-index/tree/master/recipes/nlohmann_json">this recipe</a>.</li> <li><span class=twemoji><svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M3 3a2 2 0 0 1 2-2h9.982a2 2 0 0 1 1.414.586l4.018 4.018A2 2 0 0 1 21 7.018V21a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2Zm2-.5a.5.5 0 0 0-.5.5v18a.5.5 0 0 0 .5.5h14a.5.5 0 0 0 .5-.5V8.5h-4a2 2 0 0 1-2-2v-4Zm10 0v4a.5.5 0 0 0 .5.5h4a.5.5 0 0 0-.146-.336l-4.018-4.018A.5.5 0 0 0 15 2.5"/></svg></span> File issues at the <a href="https://github.com/conan-io/conan-center-index/issues">Conan Center issue tracker</a></li> <li><span class=twemoji><svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M10.97 8.265a1.45 1.45 0 0 0-.487.57.75.75 0 0 1-1.341-.67c.2-.402.513-.826.997-1.148C10.627 6.69 11.244 6.5 12 6.5c.658 0 1.369.195 1.934.619a2.45 2.45 0 0 1 1.004 2.006c0 1.033-.513 1.72-1.027 2.215-.19.183-.399.358-.579.508l-.147.123a4 4 0 0 0-.435.409v1.37a.75.75 0 1 1-1.5 0v-1.473c0-.237.067-.504.247-.736.22-.28.486-.517.718-.714l.183-.153.001-.001c.172-.143.324-.27.47-.412.368-.355.569-.676.569-1.136a.95.95 0 0 0-.404-.806C12.766 8.118 12.384 8 12 8c-.494 0-.814.121-1.03.265M13 17a1 1 0 1 1-2 0 1 1 0 0 1 2 0"/><path d="M12 1c6.075 0 11 4.925 11 11s-4.925 11-11 11S1 18.075 1 12 5.925 1 12 1M2.5 12a9.5 9.5 0 0 0 9.5 9.5 9.5 9.5 0 0 0 9.5-9.5A9.5 9.5 0 0 0 12 2.5 9.5 9.5 0 0 0 2.5 12"/></svg></span> <a href="https://conan.io">Conan website</a></li> </ul> </div> <p>If you are using <a href="https://www.conan.io/">Conan</a> to manage your dependencies, merely add <code>nlohmann_json/x.y.z</code> to your <code>conanfile</code>'s requires, where <code>x.y.z</code> is the release version you want to use.</p> <details class=example> <summary>Example</summary> <ol> <li> <p>Create the following files:</p> <div class=highlight><span class=filename>Conanfile.txt</span><pre><span></span><code><span class=k>[requires]</span>
+</code></pre></div> </li> </ol> </details> <h2 id=conan>Conan<a class=headerlink href=#conan title="Permanent link">&para;</a></h2> <div class="admonition abstract"> <p class=admonition-title>Summary</p> <p>recipe: <a href="https://conan.io/center/recipes/nlohmann_json"><strong><code>nlohmann_json</code></strong></a></p> <ul> <li><a href="https://repology.org/project/nlohmann-json/versions"><img alt="ConanCenter package" src="../../assets/external/repology.org/badge/version-for-repo/conancenter/nlohmann-json.svg"></a></li> <li><span class=twemoji><svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M7.75 6.5a1.25 1.25 0 1 0 0 2.5 1.25 1.25 0 0 0 0-2.5"/><path d="M2.5 1h8.44a1.5 1.5 0 0 1 1.06.44l10.25 10.25a1.5 1.5 0 0 1 0 2.12l-8.44 8.44a1.5 1.5 0 0 1-2.12 0L1.44 12A1.5 1.5 0 0 1 1 10.94V2.5A1.5 1.5 0 0 1 2.5 1m0 1.5v8.44l10.25 10.25 8.44-8.44L10.94 2.5Z"/></svg></span> Available versions: current version and older versions (see <a href="https://conan.io/center/recipes/nlohmann_json">Conan Center</a>)</li> <li><span class=twemoji><svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M20.322.75h1.176a1.75 1.75 0 0 1 1.75 1.749v1.177a10.75 10.75 0 0 1-2.925 7.374l-1.228 1.304a24 24 0 0 1-1.596 1.542v5.038c0 .615-.323 1.184-.85 1.5l-4.514 2.709a.75.75 0 0 1-1.12-.488l-.963-4.572a1.3 1.3 0 0 1-.14-.129L8.04 15.96l-1.994-1.873a1.3 1.3 0 0 1-.129-.14l-4.571-.963a.75.75 0 0 1-.49-1.12l2.71-4.514c.316-.527.885-.85 1.5-.85h5.037a24 24 0 0 1 1.542-1.594l1.304-1.23A10.75 10.75 0 0 1 20.321.75Zm-6.344 4.018v-.001l-1.304 1.23a22.3 22.3 0 0 0-3.255 3.851l-2.193 3.29 1.859 1.744.034.034 1.743 1.858 3.288-2.192a22.3 22.3 0 0 0 3.854-3.257l1.228-1.303a9.25 9.25 0 0 0 2.517-6.346V2.5a.25.25 0 0 0-.25-.25h-1.177a9.25 9.25 0 0 0-6.344 2.518M6.5 21c-1.209 1.209-3.901 1.445-4.743 1.49a.24.24 0 0 1-.18-.067.24.24 0 0 1-.067-.18c.045-.842.281-3.534 1.49-4.743.9-.9 2.6-.9 3.5 0s.9 2.6 0 3.5m-.592-8.588L8.17 9.017q.346-.519.717-1.017H5.066a.25.25 0 0 0-.214.121l-2.167 3.612ZM16 15.112q-.5.372-1.018.718l-3.393 2.262.678 3.223 3.612-2.167a.25.25 0 0 0 .121-.214ZM17.5 8a1.5 1.5 0 1 1-3.001-.001A1.5 1.5 0 0 1 17.5 8"/></svg></span> The package is updated automatically via <a href="https://github.com/conan-io/conan-center-index/tree/master/recipes/nlohmann_json">this recipe</a>.</li> <li><span class=twemoji><svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M3 3a2 2 0 0 1 2-2h9.982a2 2 0 0 1 1.414.586l4.018 4.018A2 2 0 0 1 21 7.018V21a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2Zm2-.5a.5.5 0 0 0-.5.5v18a.5.5 0 0 0 .5.5h14a.5.5 0 0 0 .5-.5V8.5h-4a2 2 0 0 1-2-2v-4Zm10 0v4a.5.5 0 0 0 .5.5h4a.5.5 0 0 0-.146-.336l-4.018-4.018A.5.5 0 0 0 15 2.5"/></svg></span> File issues at the <a href="https://github.com/conan-io/conan-center-index/issues">Conan Center issue tracker</a></li> <li><span class=twemoji><svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M10.97 8.265a1.45 1.45 0 0 0-.487.57.75.75 0 0 1-1.341-.67c.2-.402.513-.826.997-1.148C10.627 6.69 11.244 6.5 12 6.5c.658 0 1.369.195 1.934.619a2.45 2.45 0 0 1 1.004 2.006c0 1.033-.513 1.72-1.027 2.215-.19.183-.399.358-.579.508l-.147.123a4 4 0 0 0-.435.409v1.37a.75.75 0 1 1-1.5 0v-1.473c0-.237.067-.504.247-.736.22-.28.486-.517.718-.714l.183-.153.001-.001c.172-.143.324-.27.47-.412.368-.355.569-.676.569-1.136a.95.95 0 0 0-.404-.806C12.766 8.118 12.384 8 12 8c-.494 0-.814.121-1.03.265M13 17a1 1 0 1 1-2 0 1 1 0 0 1 2 0"/><path d="M12 1c6.075 0 11 4.925 11 11s-4.925 11-11 11S1 18.075 1 12 5.925 1 12 1M2.5 12a9.5 9.5 0 0 0 9.5 9.5 9.5 9.5 0 0 0 9.5-9.5A9.5 9.5 0 0 0 12 2.5 9.5 9.5 0 0 0 2.5 12"/></svg></span> <a href="https://conan.io">Conan website</a></li> </ul> </div> <p>If you are using <a href="https://www.conan.io/">Conan</a> to manage your dependencies, merely add <code>nlohmann_json/x.y.z</code> to your <code>conanfile</code>'s requires, where <code>x.y.z</code> is the release version you want to use.</p> <details class=example> <summary>Example</summary> <ol> <li> <p>Create the following files:</p> <div class=highlight><span class=filename>Conanfile.txt</span><pre><span></span><code><span class=k>[requires]</span>
 <span class=na>nlohmann_json/3.12.0</span>
 
 <span class=k>[generators]</span>
@@ -248,7 +248,7 @@
 <span class=p>{</span>
 <span class=w>    </span><span class=n>std</span><span class=o>::</span><span class=n>cout</span><span class=w> </span><span class=o>&lt;&lt;</span><span class=w> </span><span class=n>std</span><span class=o>::</span><span class=n>setw</span><span class=p>(</span><span class=mi>4</span><span class=p>)</span><span class=w> </span><span class=o>&lt;&lt;</span><span class=w> </span><span class=n>json</span><span class=o>::</span><span class=n>meta</span><span class=p>()</span><span class=w> </span><span class=o>&lt;&lt;</span><span class=w> </span><span class=n>std</span><span class=o>::</span><span class=n>endl</span><span class=p>;</span>
 <span class=p>}</span>
-</code></pre></div> </li> <li> <p>Create and activate an anvironment "json`:</p> <div class=highlight><pre><span></span><code>conda<span class=w> </span>create<span class=w> </span>-n<span class=w> </span>json
+</code></pre></div> </li> <li> <p>Create and activate an environment <code>json</code>:</p> <div class=highlight><pre><span></span><code>conda<span class=w> </span>create<span class=w> </span>-n<span class=w> </span>json
 conda<span class=w> </span>activate<span class=w> </span>json
 </code></pre></div> </li> <li> <p>Install the package:</p> <div class=highlight><pre><span></span><code>conda<span class=w> </span>install<span class=w> </span>-c<span class=w> </span>conda-forge<span class=w> </span>nlohmann_json
 </code></pre></div> </li> <li> <p>Build the code:</p> <div class=highlight><pre><span></span><code>g++<span class=w> </span>-std<span class=o>=</span>c++11<span class=w> </span>-I<span class=k>$(</span>conda<span class=w> </span>info<span class=w> </span>--base<span class=k>)</span>/envs/json/include<span class=w> </span>example.cpp<span class=w> </span>-o<span class=w> </span>example
@@ -264,7 +264,7 @@
 <span class=w>    </span><span class=n>std</span><span class=o>::</span><span class=n>cout</span><span class=w> </span><span class=o>&lt;&lt;</span><span class=w> </span><span class=n>std</span><span class=o>::</span><span class=n>setw</span><span class=p>(</span><span class=mi>4</span><span class=p>)</span><span class=w> </span><span class=o>&lt;&lt;</span><span class=w> </span><span class=n>json</span><span class=o>::</span><span class=n>meta</span><span class=p>()</span><span class=w> </span><span class=o>&lt;&lt;</span><span class=w> </span><span class=n>std</span><span class=o>::</span><span class=n>endl</span><span class=p>;</span>
 <span class=p>}</span>
 </code></pre></div> </li> <li> <p>Install the package:</p> <div class=highlight><pre><span></span><code>sudo<span class=w> </span>port<span class=w> </span>install<span class=w> </span>nlohmann-json
-</code></pre></div> </li> <li> <p>Compile the code and pass the Homebrew prefix to the include path such that the library can be found:</p> <div class=highlight><pre><span></span><code>c++<span class=w> </span>example.cpp<span class=w> </span>-I/opt/local/include<span class=w> </span>-std<span class=o>=</span>c++11<span class=w> </span>-o<span class=w> </span>example
+</code></pre></div> </li> <li> <p>Compile the code and pass the MacPorts prefix to the include path such that the library can be found:</p> <div class=highlight><pre><span></span><code>c++<span class=w> </span>example.cpp<span class=w> </span>-I/opt/local/include<span class=w> </span>-std<span class=o>=</span>c++11<span class=w> </span>-o<span class=w> </span>example
 </code></pre></div> </li> </ol> </details> <details class=example> <summary>Example: CMake</summary> <ol> <li> <p>Create the following files:</p> <div class=highlight><span class=filename>example.cpp</span><pre><span></span><code><span class=cp>#include</span><span class=w> </span><span class=cpf>&lt;nlohmann/json.hpp&gt;</span>
 <span class=cp>#include</span><span class=w> </span><span class=cpf>&lt;iostream&gt;</span>
 <span class=cp>#include</span><span class=w> </span><span class=cpf>&lt;iomanip&gt;</span>
@@ -285,13 +285,13 @@
 </code></pre></div> </li> <li> <p>Install the package:</p> <div class=highlight><pre><span></span><code>sudo<span class=w> </span>port<span class=w> </span>install<span class=w> </span>nlohmann-json
 </code></pre></div> </li> <li> <p>Compile the code:</p> <div class=highlight><pre><span></span><code>cmake<span class=w> </span>-S<span class=w> </span>.<span class=w> </span>-B<span class=w> </span>build
 cmake<span class=w> </span>--build<span class=w> </span>build
-</code></pre></div> </li> </ol> </details> <h2 id=build2>build2<a class=headerlink href=#build2 title="Permanent link">&para;</a></h2> <div class="admonition abstract"> <p class=admonition-title>Summary</p> <p>package: <strong><code>nlohmann-json</code></strong> library target: <strong><code>nlohmann-json%lib{json}</code></strong> available in package repositories: - <a href="https://cppget.org/nlohmann-json"><code>cppget.org</code> (recommended)</a> - <a href="https://github.com/build2-packaging/nlohmann-json/">package's sources (for advanced users)</a></p> <ul> <li><span class=twemoji><svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M7.75 6.5a1.25 1.25 0 1 0 0 2.5 1.25 1.25 0 0 0 0-2.5"/><path d="M2.5 1h8.44a1.5 1.5 0 0 1 1.06.44l10.25 10.25a1.5 1.5 0 0 1 0 2.12l-8.44 8.44a1.5 1.5 0 0 1-2.12 0L1.44 12A1.5 1.5 0 0 1 1 10.94V2.5A1.5 1.5 0 0 1 2.5 1m0 1.5v8.44l10.25 10.25 8.44-8.44L10.94 2.5Z"/></svg></span> Available versions: current version and older versions since <code>3.7.3</code> (see <a href="https://cppget.org/nlohmann-json">cppget.org</a>)</li> <li><span class=twemoji><svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M20.322.75h1.176a1.75 1.75 0 0 1 1.75 1.749v1.177a10.75 10.75 0 0 1-2.925 7.374l-1.228 1.304a24 24 0 0 1-1.596 1.542v5.038c0 .615-.323 1.184-.85 1.5l-4.514 2.709a.75.75 0 0 1-1.12-.488l-.963-4.572a1.3 1.3 0 0 1-.14-.129L8.04 15.96l-1.994-1.873a1.3 1.3 0 0 1-.129-.14l-4.571-.963a.75.75 0 0 1-.49-1.12l2.71-4.514c.316-.527.885-.85 1.5-.85h5.037a24 24 0 0 1 1.542-1.594l1.304-1.23A10.75 10.75 0 0 1 20.321.75Zm-6.344 4.018v-.001l-1.304 1.23a22.3 22.3 0 0 0-3.255 3.851l-2.193 3.29 1.859 1.744.034.034 1.743 1.858 3.288-2.192a22.3 22.3 0 0 0 3.854-3.257l1.228-1.303a9.25 9.25 0 0 0 2.517-6.346V2.5a.25.25 0 0 0-.25-.25h-1.177a9.25 9.25 0 0 0-6.344 2.518M6.5 21c-1.209 1.209-3.901 1.445-4.743 1.49a.24.24 0 0 1-.18-.067.24.24 0 0 1-.067-.18c.045-.842.281-3.534 1.49-4.743.9-.9 2.6-.9 3.5 0s.9 2.6 0 3.5m-.592-8.588L8.17 9.017q.346-.519.717-1.017H5.066a.25.25 0 0 0-.214.121l-2.167 3.612ZM16 15.112q-.5.372-1.018.718l-3.393 2.262.678 3.223 3.612-2.167a.25.25 0 0 0 .121-.214ZM17.5 8a1.5 1.5 0 1 1-3.001-.001A1.5 1.5 0 0 1 17.5 8"/></svg></span> The package is maintained and published by the <code>build2</code> community in [this repository]<a href="https://github.com/build2-packaging/nlohmann-json/">(https://github.com/build2-packaging/nlohmann-json/</a>).</li> <li><span class=twemoji><svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M3 3a2 2 0 0 1 2-2h9.982a2 2 0 0 1 1.414.586l4.018 4.018A2 2 0 0 1 21 7.018V21a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2Zm2-.5a.5.5 0 0 0-.5.5v18a.5.5 0 0 0 .5.5h14a.5.5 0 0 0 .5-.5V8.5h-4a2 2 0 0 1-2-2v-4Zm10 0v4a.5.5 0 0 0 .5.5h4a.5.5 0 0 0-.146-.336l-4.018-4.018A.5.5 0 0 0 15 2.5"/></svg></span> File issues at the <a href="https://github.com/build2-packaging/nlohmann-json/issues/">package source repository</a></li> <li><span class=twemoji><svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M10.97 8.265a1.45 1.45 0 0 0-.487.57.75.75 0 0 1-1.341-.67c.2-.402.513-.826.997-1.148C10.627 6.69 11.244 6.5 12 6.5c.658 0 1.369.195 1.934.619a2.45 2.45 0 0 1 1.004 2.006c0 1.033-.513 1.72-1.027 2.215-.19.183-.399.358-.579.508l-.147.123a4 4 0 0 0-.435.409v1.37a.75.75 0 1 1-1.5 0v-1.473c0-.237.067-.504.247-.736.22-.28.486-.517.718-.714l.183-.153.001-.001c.172-.143.324-.27.47-.412.368-.355.569-.676.569-1.136a.95.95 0 0 0-.404-.806C12.766 8.118 12.384 8 12 8c-.494 0-.814.121-1.03.265M13 17a1 1 0 1 1-2 0 1 1 0 0 1 2 0"/><path d="M12 1c6.075 0 11 4.925 11 11s-4.925 11-11 11S1 18.075 1 12 5.925 1 12 1M2.5 12a9.5 9.5 0 0 0 9.5 9.5 9.5 9.5 0 0 0 9.5-9.5A9.5 9.5 0 0 0 12 2.5 9.5 9.5 0 0 0 2.5 12"/></svg></span> <a href="https://build2"><code>build2</code> website</a></li> </ul> </div> <p>Note: <a href="https://build2.org"><code>build2</code></a> should not be considered as a standalone package-manager. It is a build-system + package manager + project manager, a set of tools that work hand-in-hand. <code>build2</code>-based projects do not rely on existing <code>CMake</code> scripts and the build scripts defining the project's targets are specific to <code>build2</code>.</p> <p>To use this package in an exising <a href="https://build2.org"><code>build2</code></a> project, the general steps are:</p> <ol> <li> <p><details><summary>Make the package available to download from a package repository that provides it.</summary></p> <p>Your project's <code>repositories.manifest</code> specifies where the package manager will try to acquire packages by default. Make sure one of the repositories specified in this file provides <code>nlhomann-json</code> package. The recommended open-source repository is <a href="https://cppget.org/"><code>cppget.org</code></a>.</p> <p>If the project has been created using <a href="https://build2.org/bdep/doc/bdep-new.xhtml"><code>bdep new</code></a>, <code>cppget.org</code> is already specified in <code>repositories.manifest</code> but commented, just uncomment these lines: <div class=highlight><pre><span></span><code>:
+</code></pre></div> </li> </ol> </details> <h2 id=build2>build2<a class=headerlink href=#build2 title="Permanent link">&para;</a></h2> <div class="admonition abstract"> <p class=admonition-title>Summary</p> <p>package: <strong><code>nlohmann-json</code></strong> library target: <strong><code>nlohmann-json%lib{json}</code></strong> available in package repositories: - <a href="https://cppget.org/nlohmann-json"><code>cppget.org</code> (recommended)</a> - <a href="https://github.com/build2-packaging/nlohmann-json/">package's sources (for advanced users)</a></p> <ul> <li><span class=twemoji><svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M7.75 6.5a1.25 1.25 0 1 0 0 2.5 1.25 1.25 0 0 0 0-2.5"/><path d="M2.5 1h8.44a1.5 1.5 0 0 1 1.06.44l10.25 10.25a1.5 1.5 0 0 1 0 2.12l-8.44 8.44a1.5 1.5 0 0 1-2.12 0L1.44 12A1.5 1.5 0 0 1 1 10.94V2.5A1.5 1.5 0 0 1 2.5 1m0 1.5v8.44l10.25 10.25 8.44-8.44L10.94 2.5Z"/></svg></span> Available versions: current version and older versions since <code>3.7.3</code> (see <a href="https://cppget.org/nlohmann-json">cppget.org</a>)</li> <li><span class=twemoji><svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M20.322.75h1.176a1.75 1.75 0 0 1 1.75 1.749v1.177a10.75 10.75 0 0 1-2.925 7.374l-1.228 1.304a24 24 0 0 1-1.596 1.542v5.038c0 .615-.323 1.184-.85 1.5l-4.514 2.709a.75.75 0 0 1-1.12-.488l-.963-4.572a1.3 1.3 0 0 1-.14-.129L8.04 15.96l-1.994-1.873a1.3 1.3 0 0 1-.129-.14l-4.571-.963a.75.75 0 0 1-.49-1.12l2.71-4.514c.316-.527.885-.85 1.5-.85h5.037a24 24 0 0 1 1.542-1.594l1.304-1.23A10.75 10.75 0 0 1 20.321.75Zm-6.344 4.018v-.001l-1.304 1.23a22.3 22.3 0 0 0-3.255 3.851l-2.193 3.29 1.859 1.744.034.034 1.743 1.858 3.288-2.192a22.3 22.3 0 0 0 3.854-3.257l1.228-1.303a9.25 9.25 0 0 0 2.517-6.346V2.5a.25.25 0 0 0-.25-.25h-1.177a9.25 9.25 0 0 0-6.344 2.518M6.5 21c-1.209 1.209-3.901 1.445-4.743 1.49a.24.24 0 0 1-.18-.067.24.24 0 0 1-.067-.18c.045-.842.281-3.534 1.49-4.743.9-.9 2.6-.9 3.5 0s.9 2.6 0 3.5m-.592-8.588L8.17 9.017q.346-.519.717-1.017H5.066a.25.25 0 0 0-.214.121l-2.167 3.612ZM16 15.112q-.5.372-1.018.718l-3.393 2.262.678 3.223 3.612-2.167a.25.25 0 0 0 .121-.214ZM17.5 8a1.5 1.5 0 1 1-3.001-.001A1.5 1.5 0 0 1 17.5 8"/></svg></span> The package is maintained and published by the <code>build2</code> community in <a href="https://github.com/build2-packaging/nlohmann-json/">this repository</a>.</li> <li><span class=twemoji><svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M3 3a2 2 0 0 1 2-2h9.982a2 2 0 0 1 1.414.586l4.018 4.018A2 2 0 0 1 21 7.018V21a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2Zm2-.5a.5.5 0 0 0-.5.5v18a.5.5 0 0 0 .5.5h14a.5.5 0 0 0 .5-.5V8.5h-4a2 2 0 0 1-2-2v-4Zm10 0v4a.5.5 0 0 0 .5.5h4a.5.5 0 0 0-.146-.336l-4.018-4.018A.5.5 0 0 0 15 2.5"/></svg></span> File issues at the <a href="https://github.com/build2-packaging/nlohmann-json/issues/">package source repository</a></li> <li><span class=twemoji><svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M10.97 8.265a1.45 1.45 0 0 0-.487.57.75.75 0 0 1-1.341-.67c.2-.402.513-.826.997-1.148C10.627 6.69 11.244 6.5 12 6.5c.658 0 1.369.195 1.934.619a2.45 2.45 0 0 1 1.004 2.006c0 1.033-.513 1.72-1.027 2.215-.19.183-.399.358-.579.508l-.147.123a4 4 0 0 0-.435.409v1.37a.75.75 0 1 1-1.5 0v-1.473c0-.237.067-.504.247-.736.22-.28.486-.517.718-.714l.183-.153.001-.001c.172-.143.324-.27.47-.412.368-.355.569-.676.569-1.136a.95.95 0 0 0-.404-.806C12.766 8.118 12.384 8 12 8c-.494 0-.814.121-1.03.265M13 17a1 1 0 1 1-2 0 1 1 0 0 1 2 0"/><path d="M12 1c6.075 0 11 4.925 11 11s-4.925 11-11 11S1 18.075 1 12 5.925 1 12 1M2.5 12a9.5 9.5 0 0 0 9.5 9.5 9.5 9.5 0 0 0 9.5-9.5A9.5 9.5 0 0 0 12 2.5 9.5 9.5 0 0 0 2.5 12"/></svg></span> <a href="https://build2.org"><code>build2</code> website</a></li> </ul> </div> <p>Note: <a href="https://build2.org"><code>build2</code></a> should not be considered as a standalone package-manager. It is a build-system + package manager + project manager, a set of tools that work hand-in-hand. <code>build2</code>-based projects do not rely on existing <code>CMake</code> scripts and the build scripts defining the project's targets are specific to <code>build2</code>.</p> <p>To use this package in an existing <a href="https://build2.org"><code>build2</code></a> project, the general steps are:</p> <ol> <li> <p><details><summary>Make the package available to download from a package repository that provides it.</summary></p> <p>Your project's <code>repositories.manifest</code> specifies where the package manager will try to acquire packages by default. Make sure one of the repositories specified in this file provides <code>nlohmann-json</code> package. The recommended open-source repository is <a href="https://cppget.org/"><code>cppget.org</code></a>.</p> <p>If the project has been created using <a href="https://build2.org/bdep/doc/bdep-new.xhtml"><code>bdep new</code></a>, <code>cppget.org</code> is already specified in <code>repositories.manifest</code> but commented, just uncomment these lines: <div class=highlight><pre><span></span><code>:
 role: prerequisite
 location: https://pkg.cppget.org/1/stable
 </code></pre></div> </details></p> </li> <li> <p><details><summary>Add this package as dependency of your project.</summary></p> <p>In your project's <code>manifest</code> add the dependency to the package using <code>depends: nlohmann-json</code>. You could also add some <a href="https://build2.org/build2-toolchain/doc/build2-toolchain-intro.xhtml#guide-add-remove-deps">version constraints</a>. For example, to depend on the latest version available: <div class=highlight><pre><span></span><code>depends: nlohmann-json
-</code></pre></div> </details></p> </li> <li> <p><details><summary>Add this library as dependency of your target that uses it.</summary></p> <p>In the <code>buildfile</code> defining the target that will use this library:</p> <div class=codehilite><pre><span></span><code>- import the target `lib{json}` from the `nlhomann-json` package, for example:
+</code></pre></div> </details></p> </li> <li> <p><details><summary>Add this library as dependency of your target that uses it.</summary></p> <p>In the <code>buildfile</code> defining the target that will use this library:</p> <div class=codehilite><pre><span></span><code>- import the target `lib{json}` from the `nlohmann-json` package, for example:
     ```
-    import nljson = nlhomann-json%lib{json}
+    import nljson = nlohmann-json%lib{json}
     ```
 
 - then add the library&#39;s target as requirement for your target using it, for example:
@@ -370,7 +370,7 @@
 <span class=c1># build only,</span>
 b
 
-<span class=c1># or build and test the executable&#39;s output, will only work if the `tescript` is correct</span>
+<span class=c1># or build and test the executable&#39;s output, will only work if the `testscript` is correct</span>
 b<span class=w> </span><span class=nb>test</span>
 </code></pre></div> </li> </ol> </details> <h2 id=cpmcmake>CPM.cmake<a class=headerlink href=#cpmcmake title="Permanent link">&para;</a></h2> <div class="admonition abstract"> <p class=admonition-title>Summary</p> <p>package: <strong><code>gh:nlohmann/json</code></strong></p> <ul> <li><span class=twemoji><svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M7.75 6.5a1.25 1.25 0 1 0 0 2.5 1.25 1.25 0 0 0 0-2.5"/><path d="M2.5 1h8.44a1.5 1.5 0 0 1 1.06.44l10.25 10.25a1.5 1.5 0 0 1 0 2.12l-8.44 8.44a1.5 1.5 0 0 1-2.12 0L1.44 12A1.5 1.5 0 0 1 1 10.94V2.5A1.5 1.5 0 0 1 2.5 1m0 1.5v8.44l10.25 10.25 8.44-8.44L10.94 2.5Z"/></svg></span> Available versions: current and previous versions</li> <li><span class=twemoji><svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M20.322.75h1.176a1.75 1.75 0 0 1 1.75 1.749v1.177a10.75 10.75 0 0 1-2.925 7.374l-1.228 1.304a24 24 0 0 1-1.596 1.542v5.038c0 .615-.323 1.184-.85 1.5l-4.514 2.709a.75.75 0 0 1-1.12-.488l-.963-4.572a1.3 1.3 0 0 1-.14-.129L8.04 15.96l-1.994-1.873a1.3 1.3 0 0 1-.129-.14l-4.571-.963a.75.75 0 0 1-.49-1.12l2.71-4.514c.316-.527.885-.85 1.5-.85h5.037a24 24 0 0 1 1.542-1.594l1.304-1.23A10.75 10.75 0 0 1 20.321.75Zm-6.344 4.018v-.001l-1.304 1.23a22.3 22.3 0 0 0-3.255 3.851l-2.193 3.29 1.859 1.744.034.034 1.743 1.858 3.288-2.192a22.3 22.3 0 0 0 3.854-3.257l1.228-1.303a9.25 9.25 0 0 0 2.517-6.346V2.5a.25.25 0 0 0-.25-.25h-1.177a9.25 9.25 0 0 0-6.344 2.518M6.5 21c-1.209 1.209-3.901 1.445-4.743 1.49a.24.24 0 0 1-.18-.067.24.24 0 0 1-.067-.18c.045-.842.281-3.534 1.49-4.743.9-.9 2.6-.9 3.5 0s.9 2.6 0 3.5m-.592-8.588L8.17 9.017q.346-.519.717-1.017H5.066a.25.25 0 0 0-.214.121l-2.167 3.612ZM16 15.112q-.5.372-1.018.718l-3.393 2.262.678 3.223 3.612-2.167a.25.25 0 0 0 .121-.214ZM17.5 8a1.5 1.5 0 1 1-3.001-.001A1.5 1.5 0 0 1 17.5 8"/></svg></span> The package is updated with every release.</li> <li><span class=twemoji><svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M3 3a2 2 0 0 1 2-2h9.982a2 2 0 0 1 1.414.586l4.018 4.018A2 2 0 0 1 21 7.018V21a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2Zm2-.5a.5.5 0 0 0-.5.5v18a.5.5 0 0 0 .5.5h14a.5.5 0 0 0 .5-.5V8.5h-4a2 2 0 0 1-2-2v-4Zm10 0v4a.5.5 0 0 0 .5.5h4a.5.5 0 0 0-.146-.336l-4.018-4.018A.5.5 0 0 0 15 2.5"/></svg></span> File issues at the <a href="https://github.com/cpm-cmake/CPM.cmake/issues">CPM.cmake issue tracker</a></li> <li><span class=twemoji><svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M10.97 8.265a1.45 1.45 0 0 0-.487.57.75.75 0 0 1-1.341-.67c.2-.402.513-.826.997-1.148C10.627 6.69 11.244 6.5 12 6.5c.658 0 1.369.195 1.934.619a2.45 2.45 0 0 1 1.004 2.006c0 1.033-.513 1.72-1.027 2.215-.19.183-.399.358-.579.508l-.147.123a4 4 0 0 0-.435.409v1.37a.75.75 0 1 1-1.5 0v-1.473c0-.237.067-.504.247-.736.22-.28.486-.517.718-.714l.183-.153.001-.001c.172-.143.324-.27.47-.412.368-.355.569-.676.569-1.136a.95.95 0 0 0-.404-.806C12.766 8.118 12.384 8 12 8c-.494 0-.814.121-1.03.265M13 17a1 1 0 1 1-2 0 1 1 0 0 1 2 0"/><path d="M12 1c6.075 0 11 4.925 11 11s-4.925 11-11 11S1 18.075 1 12 5.925 1 12 1M2.5 12a9.5 9.5 0 0 0 9.5 9.5 9.5 9.5 0 0 0 9.5-9.5A9.5 9.5 0 0 0 12 2.5 9.5 9.5 0 0 0 2.5 12"/></svg></span> <a href="https://github.com/cpm-cmake/CPM.cmake">CPM.cmake website</a></li> </ul> </div> <p>If you are using <a href="https://github.com/TheLartians/CPM.cmake"><code>CPM.cmake</code></a>, add the <a href="https://github.com/TheLartians/CPM.cmake#adding-cpm">CPM.cmake script</a> and the following snippet to your CMake project:</p> <div class=highlight><pre><span></span><code><span class=nb>CPMAddPackage</span><span class=p>(</span><span class=s2>&quot;gh:nlohmann/json@3.12.0&quot;</span><span class=p>)</span>
 </code></pre></div> <details class=example> <summary>Example</summary> <ol> <li> <p>Create the following files:</p> <div class=highlight><span class=filename>example.cpp</span><pre><span></span><code><span class=cp>#include</span><span class=w> </span><span class=cpf>&lt;nlohmann/json.hpp&gt;</span>
@@ -416,4 +416,4 @@
 <span class=w>    </span><span class=nf>set_languages</span><span class=p>(</span><span class=s2>&quot;cxx11&quot;</span><span class=p>)</span>
 </code></pre></div> </li> <li> <p>Build</p> <div class=highlight><pre><span></span><code>xmake
 </code></pre></div> </li> <li> <p>Run</p> <div class=highlight><pre><span></span><code>xmake<span class=w> </span>run
-</code></pre></div> </li> </ol> </details> <hr> <h2 id=other-package-managers>Other package managers<a class=headerlink href=#other-package-managers title="Permanent link">&para;</a></h2> <p>The library is also contained in many other package repositories: <a href="https://repology.org/project/nlohmann-json/versions"><img alt="Packaging status" src="../../assets/external/repology.org/badge/tiny-repos/nlohmann-json.svg"></a></p> <details class=example> <summary>Package version overview</summary> <p><a href="https://repology.org/project/nlohmann-json/versions"><img alt="Packaging status" src="../../assets/external/repology.org/badge/vertical-allrepos/nlohmann-json.svg"></a></p> </details> <hr> <h2 id=buckaroo>Buckaroo<a class=headerlink href=#buckaroo title="Permanent link">&para;</a></h2> <p>If you are using <a href="https://buckaroo.pm">Buckaroo</a>, you can install this library's module with <code>buckaroo add github.com/buckaroo-pm/nlohmann-json</code>. There is a demo repo <a href="https://github.com/njlr/buckaroo-nholmann-json-example">here</a>.</p> <div class="admonition warning"> <p class=admonition-title>Warning</p> <p>The module is outdated as the respective <a href="https://github.com/buckaroo-pm/nlohmann-json">repository</a> has not been updated in years.</p> </div> <h2 id=cocoapods>CocoaPods<a class=headerlink href=#cocoapods title="Permanent link">&para;</a></h2> <p>If you are using <a href="https://cocoapods.org">CocoaPods</a>, you can use the library by adding pod <code>"nlohmann_json", '~&gt;3.1.2'</code> to your podfile (see <a href="https://bitbucket.org/benman/nlohmann_json-cocoapod/src/master/">an example</a>). Please file issues <a href="https://bitbucket.org/benman/nlohmann_json-cocoapod/issues?status=new&amp;status=open">here</a>.</p> <p><img alt src="../../assets/external/img.shields.io/cocoapods/v/nlohmann_json.svg"></p> <div class="admonition warning"> <p class=admonition-title>Warning</p> <p>The module is outdated as the respective <a href="https://cocoapods.org/pods/nlohmann_json">pod</a> has not been updated in years.</p> </div> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 23, 2026 11:16:18 UTC">June 23, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
+</code></pre></div> </li> </ol> </details> <hr> <h2 id=other-package-managers>Other package managers<a class=headerlink href=#other-package-managers title="Permanent link">&para;</a></h2> <p>The library is also contained in many other package repositories: <a href="https://repology.org/project/nlohmann-json/versions"><img alt="Packaging status" src="../../assets/external/repology.org/badge/tiny-repos/nlohmann-json.svg"></a></p> <details class=example> <summary>Package version overview</summary> <p><a href="https://repology.org/project/nlohmann-json/versions"><img alt="Packaging status" src="../../assets/external/repology.org/badge/vertical-allrepos/nlohmann-json.svg"></a></p> </details> <hr> <h2 id=buckaroo>Buckaroo<a class=headerlink href=#buckaroo title="Permanent link">&para;</a></h2> <p>If you are using <a href="https://buckaroo.pm">Buckaroo</a>, you can install this library's module with <code>buckaroo add github.com/buckaroo-pm/nlohmann-json</code>. There is a demo repo <a href="https://github.com/njlr/buckaroo-nholmann-json-example">here</a>.</p> <div class="admonition warning"> <p class=admonition-title>Warning</p> <p>The module is outdated as the respective <a href="https://github.com/buckaroo-pm/nlohmann-json">repository</a> has not been updated in years.</p> </div> <h2 id=cocoapods>CocoaPods<a class=headerlink href=#cocoapods title="Permanent link">&para;</a></h2> <p>If you are using <a href="https://cocoapods.org">CocoaPods</a>, you can use the library by adding pod <code>"nlohmann_json", '~&gt;3.1.2'</code> to your podfile (see <a href="https://bitbucket.org/benman/nlohmann_json-cocoapod/src/master/">an example</a>). Please file issues <a href="https://bitbucket.org/benman/nlohmann_json-cocoapod/issues?status=new&amp;status=open">here</a>.</p> <p><img alt src="../../assets/external/img.shields.io/cocoapods/v/nlohmann_json.svg"></p> <div class="admonition warning"> <p class=admonition-title>Warning</p> <p>The module is outdated as the respective <a href="https://cocoapods.org/pods/nlohmann_json">pod</a> has not been updated in years.</p> </div> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 29, 2026 20:15:18 UTC">June 29, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
diff --git a/integration/pkg-config/index.html b/integration/pkg-config/index.html
index 666c41b..51835ea 100644
--- a/integration/pkg-config/index.html
+++ b/integration/pkg-config/index.html
@@ -1,3 +1,3 @@
 <!doctype html><html lang=en class=no-js> <head><meta charset=utf-8><meta name=viewport content="width=device-width,initial-scale=1"><meta name=author content="Niels Lohmann"><link href="https://json.nlohmann.me/integration/pkg-config/" rel="canonical"><link href=../package_managers/ rel=prev><link href=../../api/basic_json/ rel=next><link rel=icon href=../../assets/images/favicon.png><meta name=generator content="mkdocs-1.6.1, mkdocs-material-9.7.6"><title>Pkg-config - JSON for Modern C++</title><link rel=stylesheet href=../../assets/stylesheets/main.484c7ddc.min.css><link rel=stylesheet href=../../assets/stylesheets/palette.ab4e12ef.min.css><link rel="stylesheet" href="../../assets/external/fonts.googleapis.com/css.61a430c9.css"><style>:root{--md-text-font:"Roboto";--md-code-font:"JetBrains Mono"}</style><link rel=stylesheet href=../../css/custom.css><script>__md_scope=new URL("../..",location),__md_hash=e=>[...e].reduce(((e,_)=>(e<<5)-e+_.charCodeAt(0)),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script></head> <body dir=ltr data-md-color-scheme=default data-md-color-primary=indigo data-md-color-accent=indigo> <input class=md-toggle data-md-toggle=drawer type=checkbox id=__drawer autocomplete=off> <input class=md-toggle data-md-toggle=search type=checkbox id=__search autocomplete=off> <label class=md-overlay for=__drawer></label> <div data-md-component=skip> <a href=#pkg-config class=md-skip> Skip to content </a> </div> <div data-md-component=announce> </div> <header class=md-header data-md-component=header> <nav class="md-header__inner md-grid" aria-label=Header> <a href=../.. title="JSON for Modern C++" class="md-header__button md-logo" aria-label="JSON for Modern C++" data-md-component=logo> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54"/></svg> </a> <label class="md-header__button md-icon" for=__drawer> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M3 6h18v2H3zm0 5h18v2H3zm0 5h18v2H3z"/></svg> </label> <div class=md-header__title data-md-component=header-title> <div class=md-header__ellipsis> <div class=md-header__topic> <span class=md-ellipsis> JSON for Modern C++ </span> </div> <div class=md-header__topic data-md-component=header-topic> <span class=md-ellipsis> Pkg-config </span> </div> </div> </div> <form class=md-header__option data-md-component=palette> <input class=md-option data-md-color-media="(prefers-color-scheme: light)" data-md-color-scheme=default data-md-color-primary=indigo data-md-color-accent=indigo aria-label="Switch to dark mode" type=radio name=__palette id=__palette_0> <label class="md-header__button md-icon" title="Switch to dark mode" for=__palette_1 hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a4 4 0 0 0-4 4 4 4 0 0 0 4 4 4 4 0 0 0 4-4 4 4 0 0 0-4-4m0 10a6 6 0 0 1-6-6 6 6 0 0 1 6-6 6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12z"/></svg> </label> <input class=md-option data-md-color-media="(prefers-color-scheme: dark)" data-md-color-scheme=slate data-md-color-primary=indigo data-md-color-accent=indigo aria-label="Switch to light mode" type=radio name=__palette id=__palette_1> <label class="md-header__button md-icon" title="Switch to light mode" for=__palette_0 hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 18c-.89 0-1.74-.2-2.5-.55C11.56 16.5 13 14.42 13 12s-1.44-4.5-3.5-5.45C10.26 6.2 11.11 6 12 6a6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12z"/></svg> </label> </form> <script>var palette=__md_get("__palette");if(palette&&palette.color){if("(prefers-color-scheme)"===palette.color.media){var media=matchMedia("(prefers-color-scheme: light)"),input=document.querySelector(media.matches?"[data-md-color-media='(prefers-color-scheme: light)']":"[data-md-color-media='(prefers-color-scheme: dark)']");palette.color.media=input.getAttribute("data-md-color-media"),palette.color.scheme=input.getAttribute("data-md-color-scheme"),palette.color.primary=input.getAttribute("data-md-color-primary"),palette.color.accent=input.getAttribute("data-md-color-accent")}for(var[key,value]of Object.entries(palette.color))document.body.setAttribute("data-md-color-"+key,value)}</script> <label class="md-header__button md-icon" for=__search> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg> </label> <div class=md-search data-md-component=search role=dialog> <label class=md-search__overlay for=__search></label> <div class=md-search__inner role=search> <form class=md-search__form name=search> <input type=text class=md-search__input name=query aria-label=Search placeholder=Search autocapitalize=off autocorrect=off autocomplete=off spellcheck=false data-md-component=search-query required> <label class="md-search__icon md-icon" for=__search> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11z"/></svg> </label> <nav class=md-search__options aria-label=Search> <button type=reset class="md-search__icon md-icon" title=Clear aria-label=Clear tabindex=-1> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z"/></svg> </button> </nav> </form> <div class=md-search__output> <div class=md-search__scrollwrap tabindex=0 data-md-scrollfix> <div class=md-search-result data-md-component=search-result> <div class=md-search-result__meta> Initializing search </div> <ol class=md-search-result__list role=presentation></ol> </div> </div> </div> </div> </div> <div class=md-header__source> <a href="https://github.com/nlohmann/json" title="Go to repository" class="md-source" data-md-component="source"> <div class="md-source__icon md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </div> <div class=md-source__repository> nlohmann/json </div> </a> </div> </nav> </header> <div class=md-container data-md-component=container> <nav class=md-tabs aria-label=Tabs data-md-component=tabs> <div class=md-grid> <ul class=md-tabs__list> <li class=md-tabs__item> <a href=../.. class=md-tabs__link> Home </a> </li> <li class=md-tabs__item> <a href=../../features/arbitrary_types/ class=md-tabs__link> Features </a> </li> <li class="md-tabs__item md-tabs__item--active"> <a href=../ class=md-tabs__link> Integration </a> </li> <li class=md-tabs__item> <a href=../../api/basic_json/ class=md-tabs__link> API Documentation </a> </li> <li class=md-tabs__item> <a href=../../community/ class=md-tabs__link> Community </a> </li> </ul> </div> </nav> <main class=md-main data-md-component=main> <div class="md-main__inner md-grid"> <div class="md-sidebar md-sidebar--primary" data-md-component=sidebar data-md-type=navigation> <div class=md-sidebar__scrollwrap> <div class=md-sidebar__inner> <nav class="md-nav md-nav--primary md-nav--lifted" aria-label=Navigation data-md-level=0> <label class=md-nav__title for=__drawer> <a href=../.. title="JSON for Modern C++" class="md-nav__button md-logo" aria-label="JSON for Modern C++" data-md-component=logo> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54"/></svg> </a> JSON for Modern C++ </label> <div class=md-nav__source> <a href="https://github.com/nlohmann/json" title="Go to repository" class="md-source" data-md-component="source"> <div class="md-source__icon md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </div> <div class=md-source__repository> nlohmann/json </div> </a> </div> <ul class=md-nav__list data-md-scrollfix> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_1> <div class="md-nav__link md-nav__container"> <a href=../.. class="md-nav__link "> <span class=md-ellipsis> Home </span> </a> <label class="md-nav__link " for=__nav_1 id=__nav_1_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_1_label aria-expanded=false> <label class=md-nav__title for=__nav_1> <span class="md-nav__icon md-icon"></span> Home </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../home/license/ class=md-nav__link> <span class=md-ellipsis> License </span> </a> </li> <li class=md-nav__item> <a href=../../home/faq/ class=md-nav__link> <span class=md-ellipsis> FAQ </span> </a> </li> <li class=md-nav__item> <a href=../../home/exceptions/ class=md-nav__link> <span class=md-ellipsis> Exceptions </span> </a> </li> <li class=md-nav__item> <a href=../../home/releases/ class=md-nav__link> <span class=md-ellipsis> Releases </span> </a> </li> <li class=md-nav__item> <a href=../../home/design_goals/ class=md-nav__link> <span class=md-ellipsis> Design goals </span> </a> </li> <li class=md-nav__item> <a href=../../home/architecture/ class=md-nav__link> <span class=md-ellipsis> Architecture </span> </a> </li> <li class=md-nav__item> <a href=../../home/customers/ class=md-nav__link> <span class=md-ellipsis> Customers </span> </a> </li> <li class=md-nav__item> <a href=../../home/sponsors/ class=md-nav__link> <span class=md-ellipsis> Sponsors </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2> <label class=md-nav__link for=__nav_2 id=__nav_2_label tabindex=0> <span class=md-ellipsis> Features </span> <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_2_label aria-expanded=false> <label class=md-nav__title for=__nav_2> <span class="md-nav__icon md-icon"></span> Features </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../features/arbitrary_types/ class=md-nav__link> <span class=md-ellipsis> Arbitrary Type Conversions </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_2> <div class="md-nav__link md-nav__container"> <a href=../../features/binary_formats/ class="md-nav__link "> <span class=md-ellipsis> Binary Formats </span> </a> <label class="md-nav__link " for=__nav_2_2 id=__nav_2_2_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_2_label aria-expanded=false> <label class=md-nav__title for=__nav_2_2> <span class="md-nav__icon md-icon"></span> Binary Formats </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../features/binary_formats/bjdata/ class=md-nav__link> <span class=md-ellipsis> BJData </span> </a> </li> <li class=md-nav__item> <a href=../../features/binary_formats/bson/ class=md-nav__link> <span class=md-ellipsis> BSON </span> </a> </li> <li class=md-nav__item> <a href=../../features/binary_formats/cbor/ class=md-nav__link> <span class=md-ellipsis> CBOR </span> </a> </li> <li class=md-nav__item> <a href=../../features/binary_formats/messagepack/ class=md-nav__link> <span class=md-ellipsis> MessagePack </span> </a> </li> <li class=md-nav__item> <a href=../../features/binary_formats/ubjson/ class=md-nav__link> <span class=md-ellipsis> UBJSON </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../features/binary_values/ class=md-nav__link> <span class=md-ellipsis> Binary Values </span> </a> </li> <li class=md-nav__item> <a href=../../features/comments/ class=md-nav__link> <span class=md-ellipsis> Comments </span> </a> </li> <li class=md-nav__item> <a href=../../features/trailing_commas/ class=md-nav__link> <span class=md-ellipsis> Trailing Commas </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_6> <div class="md-nav__link md-nav__container"> <a href=../../features/element_access/ class="md-nav__link "> <span class=md-ellipsis> Element Access </span> </a> <label class="md-nav__link " for=__nav_2_6 id=__nav_2_6_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_6_label aria-expanded=false> <label class=md-nav__title for=__nav_2_6> <span class="md-nav__icon md-icon"></span> Element Access </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../features/element_access/unchecked_access/ class=md-nav__link> <span class=md-ellipsis> Unchecked access: operator[] </span> </a> </li> <li class=md-nav__item> <a href=../../features/element_access/checked_access/ class=md-nav__link> <span class=md-ellipsis> Checked access: at </span> </a> </li> <li class=md-nav__item> <a href=../../features/element_access/default_value/ class=md-nav__link> <span class=md-ellipsis> Access with default value: value </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../features/iterators/ class=md-nav__link> <span class=md-ellipsis> Iterators </span> </a> </li> <li class=md-nav__item> <a href=../../features/json_pointer/ class=md-nav__link> <span class=md-ellipsis> JSON Pointer </span> </a> </li> <li class=md-nav__item> <a href=../../features/json_patch/ class=md-nav__link> <span class=md-ellipsis> JSON Patch and Diff </span> </a> </li> <li class=md-nav__item> <a href=../../features/merge_patch/ class=md-nav__link> <span class=md-ellipsis> JSON Merge Patch </span> </a> </li> <li class=md-nav__item> <a href=../../features/modules/ class=md-nav__link> <span class=md-ellipsis> Modules </span> </a> </li> <li class=md-nav__item> <a href=../../features/namespace/ class=md-nav__link> <span class=md-ellipsis> nlohmann Namespace </span> </a> </li> <li class=md-nav__item> <a href=../../features/object_order/ class=md-nav__link> <span class=md-ellipsis> Object Order </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_14> <div class="md-nav__link md-nav__container"> <a href=../../features/parsing/ class="md-nav__link "> <span class=md-ellipsis> Parsing </span> </a> <label class="md-nav__link " for=__nav_2_14 id=__nav_2_14_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_14_label aria-expanded=false> <label class=md-nav__title for=__nav_2_14> <span class="md-nav__icon md-icon"></span> Parsing </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../features/parsing/json_lines/ class=md-nav__link> <span class=md-ellipsis> JSON Lines </span> </a> </li> <li class=md-nav__item> <a href=../../features/parsing/parse_exceptions/ class=md-nav__link> <span class=md-ellipsis> Parsing and Exceptions </span> </a> </li> <li class=md-nav__item> <a href=../../features/parsing/parser_callbacks/ class=md-nav__link> <span class=md-ellipsis> Parser Callbacks </span> </a> </li> <li class=md-nav__item> <a href=../../features/parsing/sax_interface/ class=md-nav__link> <span class=md-ellipsis> SAX Interface </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../features/assertions/ class=md-nav__link> <span class=md-ellipsis> Runtime Assertions </span> </a> </li> <li class=md-nav__item> <a href=../../features/enum_conversion/ class=md-nav__link> <span class=md-ellipsis> Specializing enum conversion </span> </a> </li> <li class=md-nav__item> <a href=../../features/macros/ class=md-nav__link> <span class=md-ellipsis> Supported Macros </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_18> <div class="md-nav__link md-nav__container"> <a href=../../features/types/ class="md-nav__link "> <span class=md-ellipsis> Types </span> </a> <label class="md-nav__link " for=__nav_2_18 id=__nav_2_18_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_18_label aria-expanded=false> <label class=md-nav__title for=__nav_2_18> <span class="md-nav__icon md-icon"></span> Types </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../features/types/number_handling/ class=md-nav__link> <span class=md-ellipsis> Number Handling </span> </a> </li> </ul> </nav> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--active md-nav__item--section md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_3 checked> <div class="md-nav__link md-nav__container"> <a href=../ class="md-nav__link "> <span class=md-ellipsis> Integration </span> </a> <label class="md-nav__link " for=__nav_3 id=__nav_3_label tabindex> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_3_label aria-expanded=true> <label class=md-nav__title for=__nav_3> <span class="md-nav__icon md-icon"></span> Integration </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../migration_guide/ class=md-nav__link> <span class=md-ellipsis> Migration Guide </span> </a> </li> <li class=md-nav__item> <a href=../cmake/ class=md-nav__link> <span class=md-ellipsis> CMake </span> </a> </li> <li class=md-nav__item> <a href=../package_managers/ class=md-nav__link> <span class=md-ellipsis> Package Managers </span> </a> </li> <li class="md-nav__item md-nav__item--active"> <input class="md-nav__toggle md-toggle" type=checkbox id=__toc> <a href=./ class="md-nav__link md-nav__link--active"> <span class=md-ellipsis> Pkg-config </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4> <label class=md-nav__link for=__nav_4 id=__nav_4_label tabindex=0> <span class=md-ellipsis> API Documentation </span> <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_4_label aria-expanded=false> <label class=md-nav__title for=__nav_4> <span class="md-nav__icon md-icon"></span> API Documentation </label> <ul class=md-nav__list data-md-scrollfix> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_1> <div class="md-nav__link md-nav__container"> <a href=../../api/basic_json/ class="md-nav__link "> <span class=md-ellipsis> basic_json </span> </a> <label class="md-nav__link " for=__nav_4_1 id=__nav_4_1_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_1_label aria-expanded=false> <label class=md-nav__title for=__nav_4_1> <span class="md-nav__icon md-icon"></span> basic_json </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../api/basic_json/basic_json/ class=md-nav__link> <span class=md-ellipsis> (Constructor) </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/~basic_json/ class=md-nav__link> <span class=md-ellipsis> (Destructor) </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/accept/ class=md-nav__link> <span class=md-ellipsis> accept </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/array/ class=md-nav__link> <span class=md-ellipsis> array </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/array_t/ class=md-nav__link> <span class=md-ellipsis> array_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/at/ class=md-nav__link> <span class=md-ellipsis> at </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/back/ class=md-nav__link> <span class=md-ellipsis> back </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/begin/ class=md-nav__link> <span class=md-ellipsis> begin </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/binary/ class=md-nav__link> <span class=md-ellipsis> binary </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/binary_t/ class=md-nav__link> <span class=md-ellipsis> binary_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/boolean_t/ class=md-nav__link> <span class=md-ellipsis> boolean_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/cbegin/ class=md-nav__link> <span class=md-ellipsis> cbegin </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/cbor_tag_handler_t/ class=md-nav__link> <span class=md-ellipsis> cbor_tag_handler_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/cend/ class=md-nav__link> <span class=md-ellipsis> cend </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/clear/ class=md-nav__link> <span class=md-ellipsis> clear </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/contains/ class=md-nav__link> <span class=md-ellipsis> contains </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/count/ class=md-nav__link> <span class=md-ellipsis> count </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/crbegin/ class=md-nav__link> <span class=md-ellipsis> crbegin </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/crend/ class=md-nav__link> <span class=md-ellipsis> crend </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/default_object_comparator_t/ class=md-nav__link> <span class=md-ellipsis> default_object_comparator_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/diff/ class=md-nav__link> <span class=md-ellipsis> diff </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/dump/ class=md-nav__link> <span class=md-ellipsis> dump </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/emplace/ class=md-nav__link> <span class=md-ellipsis> emplace </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/emplace_back/ class=md-nav__link> <span class=md-ellipsis> emplace_back </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/empty/ class=md-nav__link> <span class=md-ellipsis> empty </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/end/ class=md-nav__link> <span class=md-ellipsis> end </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/end_pos/ class=md-nav__link> <span class=md-ellipsis> end_pos </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/erase/ class=md-nav__link> <span class=md-ellipsis> erase </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/error_handler_t/ class=md-nav__link> <span class=md-ellipsis> error_handler_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/exception/ class=md-nav__link> <span class=md-ellipsis> exception </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/find/ class=md-nav__link> <span class=md-ellipsis> find </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/flatten/ class=md-nav__link> <span class=md-ellipsis> flatten </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/from_bjdata/ class=md-nav__link> <span class=md-ellipsis> from_bjdata </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/from_bson/ class=md-nav__link> <span class=md-ellipsis> from_bson </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/from_cbor/ class=md-nav__link> <span class=md-ellipsis> from_cbor </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/from_msgpack/ class=md-nav__link> <span class=md-ellipsis> from_msgpack </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/from_ubjson/ class=md-nav__link> <span class=md-ellipsis> from_ubjson </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/front/ class=md-nav__link> <span class=md-ellipsis> front </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/get/ class=md-nav__link> <span class=md-ellipsis> get </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/get_allocator/ class=md-nav__link> <span class=md-ellipsis> get_allocator </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/get_binary/ class=md-nav__link> <span class=md-ellipsis> get_binary </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/get_ptr/ class=md-nav__link> <span class=md-ellipsis> get_ptr </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/get_ref/ class=md-nav__link> <span class=md-ellipsis> get_ref </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/get_to/ class=md-nav__link> <span class=md-ellipsis> get_to </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/std_hash/ class=md-nav__link> <span class=md-ellipsis> std::hash&lt;basic_json&gt; </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/input_format_t/ class=md-nav__link> <span class=md-ellipsis> input_format_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/insert/ class=md-nav__link> <span class=md-ellipsis> insert </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/invalid_iterator/ class=md-nav__link> <span class=md-ellipsis> invalid_iterator </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_array/ class=md-nav__link> <span class=md-ellipsis> is_array </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_binary/ class=md-nav__link> <span class=md-ellipsis> is_binary </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_boolean/ class=md-nav__link> <span class=md-ellipsis> is_boolean </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_discarded/ class=md-nav__link> <span class=md-ellipsis> is_discarded </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_null/ class=md-nav__link> <span class=md-ellipsis> is_null </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_number/ class=md-nav__link> <span class=md-ellipsis> is_number </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_number_float/ class=md-nav__link> <span class=md-ellipsis> is_number_float </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_number_integer/ class=md-nav__link> <span class=md-ellipsis> is_number_integer </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_number_unsigned/ class=md-nav__link> <span class=md-ellipsis> is_number_unsigned </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_object/ class=md-nav__link> <span class=md-ellipsis> is_object </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_primitive/ class=md-nav__link> <span class=md-ellipsis> is_primitive </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_string/ class=md-nav__link> <span class=md-ellipsis> is_string </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_structured/ class=md-nav__link> <span class=md-ellipsis> is_structured </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/items/ class=md-nav__link> <span class=md-ellipsis> items </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/json_base_class_t/ class=md-nav__link> <span class=md-ellipsis> json_base_class_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/json_serializer/ class=md-nav__link> <span class=md-ellipsis> json_serializer </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/max_size/ class=md-nav__link> <span class=md-ellipsis> max_size </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/meta/ class=md-nav__link> <span class=md-ellipsis> meta </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/merge_patch/ class=md-nav__link> <span class=md-ellipsis> merge_patch </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/number_float_t/ class=md-nav__link> <span class=md-ellipsis> number_float_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/number_integer_t/ class=md-nav__link> <span class=md-ellipsis> number_integer_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/number_unsigned_t/ class=md-nav__link> <span class=md-ellipsis> number_unsigned_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/object/ class=md-nav__link> <span class=md-ellipsis> object </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/object_comparator_t/ class=md-nav__link> <span class=md-ellipsis> object_comparator_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/object_t/ class=md-nav__link> <span class=md-ellipsis> object_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/operator_ValueType/ class=md-nav__link> <span class=md-ellipsis> operator ValueType </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/operator_value_t/ class=md-nav__link> <span class=md-ellipsis> operator value_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/operator%5B%5D/ class=md-nav__link> <span class=md-ellipsis> operator[] </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/operator%3D/ class=md-nav__link> <span class=md-ellipsis> operator= </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/operator%2B%3D/ class=md-nav__link> <span class=md-ellipsis> operator+= </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/operator_eq/ class=md-nav__link> <span class=md-ellipsis> operator== </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/operator_ne/ class=md-nav__link> <span class=md-ellipsis> operator!= </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/operator_lt/ class=md-nav__link> <span class=md-ellipsis> operator< </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/operator_gt/ class=md-nav__link> <span class=md-ellipsis> operator> </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/operator_le/ class=md-nav__link> <span class=md-ellipsis> operator<= </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/operator_ge/ class=md-nav__link> <span class=md-ellipsis> operator>= </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/operator_spaceship/ class=md-nav__link> <span class=md-ellipsis> operator<=> </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/out_of_range/ class=md-nav__link> <span class=md-ellipsis> out_of_range </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/other_error/ class=md-nav__link> <span class=md-ellipsis> other_error </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/parse/ class=md-nav__link> <span class=md-ellipsis> parse </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/parse_error/ class=md-nav__link> <span class=md-ellipsis> parse_error </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/parse_event_t/ class=md-nav__link> <span class=md-ellipsis> parse_event_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/parser_callback_t/ class=md-nav__link> <span class=md-ellipsis> parser_callback_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/patch/ class=md-nav__link> <span class=md-ellipsis> patch </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/patch_inplace/ class=md-nav__link> <span class=md-ellipsis> patch_inplace </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/push_back/ class=md-nav__link> <span class=md-ellipsis> push_back </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/rbegin/ class=md-nav__link> <span class=md-ellipsis> rbegin </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/rend/ class=md-nav__link> <span class=md-ellipsis> rend </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/sax_parse/ class=md-nav__link> <span class=md-ellipsis> sax_parse </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/size/ class=md-nav__link> <span class=md-ellipsis> size </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/start_pos/ class=md-nav__link> <span class=md-ellipsis> start_pos </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/string_t/ class=md-nav__link> <span class=md-ellipsis> string_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/swap/ class=md-nav__link> <span class=md-ellipsis> swap </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/std_swap/ class=md-nav__link> <span class=md-ellipsis> std::swap&lt;basic_json&gt; </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/to_bjdata/ class=md-nav__link> <span class=md-ellipsis> to_bjdata </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/to_bson/ class=md-nav__link> <span class=md-ellipsis> to_bson </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/to_cbor/ class=md-nav__link> <span class=md-ellipsis> to_cbor </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/to_msgpack/ class=md-nav__link> <span class=md-ellipsis> to_msgpack </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/to_string/ class=md-nav__link> <span class=md-ellipsis> to_string </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/to_ubjson/ class=md-nav__link> <span class=md-ellipsis> to_ubjson </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/type/ class=md-nav__link> <span class=md-ellipsis> type </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/type_error/ class=md-nav__link> <span class=md-ellipsis> type_error </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/type_name/ class=md-nav__link> <span class=md-ellipsis> type_name </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/unflatten/ class=md-nav__link> <span class=md-ellipsis> unflatten </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/update/ class=md-nav__link> <span class=md-ellipsis> update </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/value/ class=md-nav__link> <span class=md-ellipsis> value </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/value_t/ class=md-nav__link> <span class=md-ellipsis> value_t </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_2> <div class="md-nav__link md-nav__container"> <a href=../../api/byte_container_with_subtype/ class="md-nav__link "> <span class=md-ellipsis> byte_container_with_subtype </span> </a> <label class="md-nav__link " for=__nav_4_2 id=__nav_4_2_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_2_label aria-expanded=false> <label class=md-nav__title for=__nav_4_2> <span class="md-nav__icon md-icon"></span> byte_container_with_subtype </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../api/byte_container_with_subtype/byte_container_with_subtype/ class=md-nav__link> <span class=md-ellipsis> (constructor) </span> </a> </li> <li class=md-nav__item> <a href=../../api/byte_container_with_subtype/clear_subtype/ class=md-nav__link> <span class=md-ellipsis> clear_subtype </span> </a> </li> <li class=md-nav__item> <a href=../../api/byte_container_with_subtype/has_subtype/ class=md-nav__link> <span class=md-ellipsis> has_subtype </span> </a> </li> <li class=md-nav__item> <a href=../../api/byte_container_with_subtype/set_subtype/ class=md-nav__link> <span class=md-ellipsis> set_subtype </span> </a> </li> <li class=md-nav__item> <a href=../../api/byte_container_with_subtype/subtype/ class=md-nav__link> <span class=md-ellipsis> subtype </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_3> <div class="md-nav__link md-nav__container"> <a href=../../api/adl_serializer/ class="md-nav__link "> <span class=md-ellipsis> adl_serializer </span> </a> <label class="md-nav__link " for=__nav_4_3 id=__nav_4_3_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_3_label aria-expanded=false> <label class=md-nav__title for=__nav_4_3> <span class="md-nav__icon md-icon"></span> adl_serializer </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../api/adl_serializer/from_json/ class=md-nav__link> <span class=md-ellipsis> from_json </span> </a> </li> <li class=md-nav__item> <a href=../../api/adl_serializer/to_json/ class=md-nav__link> <span class=md-ellipsis> to_json </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../api/json/ class=md-nav__link> <span class=md-ellipsis> json </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_5> <div class="md-nav__link md-nav__container"> <a href=../../api/json_pointer/ class="md-nav__link "> <span class=md-ellipsis> json_pointer </span> </a> <label class="md-nav__link " for=__nav_4_5 id=__nav_4_5_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_5_label aria-expanded=false> <label class=md-nav__title for=__nav_4_5> <span class="md-nav__icon md-icon"></span> json_pointer </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../api/json_pointer/json_pointer/ class=md-nav__link> <span class=md-ellipsis> (Constructor) </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/back/ class=md-nav__link> <span class=md-ellipsis> back </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/empty/ class=md-nav__link> <span class=md-ellipsis> empty </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/front/ class=md-nav__link> <span class=md-ellipsis> front </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/operator_string_t/ class=md-nav__link> <span class=md-ellipsis> operator string_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/operator_eq/ class=md-nav__link> <span class=md-ellipsis> operator== </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/operator_ne/ class=md-nav__link> <span class=md-ellipsis> operator!= </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/operator_slash/ class=md-nav__link> <span class=md-ellipsis> operator/ </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/operator_slasheq/ class=md-nav__link> <span class=md-ellipsis> operator/= </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/parent_pointer/ class=md-nav__link> <span class=md-ellipsis> parent_pointer </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/pop_back/ class=md-nav__link> <span class=md-ellipsis> pop_back </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/pop_front/ class=md-nav__link> <span class=md-ellipsis> pop_front </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/push_back/ class=md-nav__link> <span class=md-ellipsis> push_back </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/push_front/ class=md-nav__link> <span class=md-ellipsis> push_front </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/string_t/ class=md-nav__link> <span class=md-ellipsis> string_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/to_string/ class=md-nav__link> <span class=md-ellipsis> to_string </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_6> <div class="md-nav__link md-nav__container"> <a href=../../api/json_sax/ class="md-nav__link "> <span class=md-ellipsis> json_sax </span> </a> <label class="md-nav__link " for=__nav_4_6 id=__nav_4_6_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_6_label aria-expanded=false> <label class=md-nav__title for=__nav_4_6> <span class="md-nav__icon md-icon"></span> json_sax </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../api/json_sax/binary/ class=md-nav__link> <span class=md-ellipsis> binary </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_sax/boolean/ class=md-nav__link> <span class=md-ellipsis> boolean </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_sax/end_array/ class=md-nav__link> <span class=md-ellipsis> end_array </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_sax/end_object/ class=md-nav__link> <span class=md-ellipsis> end_object </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_sax/key/ class=md-nav__link> <span class=md-ellipsis> key </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_sax/null/ class=md-nav__link> <span class=md-ellipsis> null </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_sax/number_float/ class=md-nav__link> <span class=md-ellipsis> number_float </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_sax/number_integer/ class=md-nav__link> <span class=md-ellipsis> number_integer </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_sax/number_unsigned/ class=md-nav__link> <span class=md-ellipsis> number_unsigned </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_sax/parse_error/ class=md-nav__link> <span class=md-ellipsis> parse_error </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_sax/start_array/ class=md-nav__link> <span class=md-ellipsis> start_array </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_sax/start_object/ class=md-nav__link> <span class=md-ellipsis> start_object </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_sax/string/ class=md-nav__link> <span class=md-ellipsis> string </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../api/operator_ltlt/ class=md-nav__link> <span class=md-ellipsis> operator<<(basic_json), operator<<(json_pointer) </span> </a> </li> <li class=md-nav__item> <a href=../../api/operator_gtgt/ class=md-nav__link> <span class=md-ellipsis> operator>>(basic_json) </span> </a> </li> <li class=md-nav__item> <a href=../../api/operator_literal_json/ class=md-nav__link> <span class=md-ellipsis> operator""_json </span> </a> </li> <li class=md-nav__item> <a href=../../api/operator_literal_json_pointer/ class=md-nav__link> <span class=md-ellipsis> operator""_json_pointer </span> </a> </li> <li class=md-nav__item> <a href=../../api/ordered_json/ class=md-nav__link> <span class=md-ellipsis> ordered_json </span> </a> </li> <li class=md-nav__item> <a href=../../api/ordered_map/ class=md-nav__link> <span class=md-ellipsis> ordered_map </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_13> <div class="md-nav__link md-nav__container"> <a href=../../api/macros/ class="md-nav__link "> <span class=md-ellipsis> macros </span> </a> <label class="md-nav__link " for=__nav_4_13 id=__nav_4_13_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_13_label aria-expanded=false> <label class=md-nav__title for=__nav_4_13> <span class="md-nav__icon md-icon"></span> macros </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../api/macros/json_assert/ class=md-nav__link> <span class=md-ellipsis> JSON_ASSERT </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_brace_init_copy_semantics/ class=md-nav__link> <span class=md-ellipsis> JSON_BRACE_INIT_COPY_SEMANTICS </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_throw_user/ class=md-nav__link> <span class=md-ellipsis> JSON_CATCH_USER, JSON_THROW_USER, JSON_TRY_USER </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_diagnostics/ class=md-nav__link> <span class=md-ellipsis> JSON_DIAGNOSTICS </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_diagnostic_positions/ class=md-nav__link> <span class=md-ellipsis> JSON_DIAGNOSTIC_POSITIONS </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_disable_enum_serialization/ class=md-nav__link> <span class=md-ellipsis> JSON_DISABLE_ENUM_SERIALIZATION </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_has_cpp_11/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_CPP_11, JSON_HAS_CPP_14, JSON_HAS_CPP_17, JSON_HAS_CPP_20 </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_has_filesystem/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_EXPERIMENTAL_FILESYSTEM, JSON_HAS_FILESYSTEM </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_has_ranges/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_RANGES </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_has_static_rtti/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_STATIC_RTTI </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_has_three_way_comparison/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_THREE_WAY_COMPARISON </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_noexception/ class=md-nav__link> <span class=md-ellipsis> JSON_NOEXCEPTION </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_no_io/ class=md-nav__link> <span class=md-ellipsis> JSON_NO_IO </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_skip_library_version_check/ class=md-nav__link> <span class=md-ellipsis> JSON_SKIP_LIBRARY_VERSION_CHECK </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_skip_unsupported_compiler_check/ class=md-nav__link> <span class=md-ellipsis> JSON_SKIP_UNSUPPORTED_COMPILER_CHECK </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_use_global_udls/ class=md-nav__link> <span class=md-ellipsis> JSON_USE_GLOBAL_UDLS </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_use_implicit_conversions/ class=md-nav__link> <span class=md-ellipsis> JSON_USE_IMPLICIT_CONVERSIONS </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_use_legacy_discarded_value_comparison/ class=md-nav__link> <span class=md-ellipsis> JSON_USE_LEGACY_DISCARDED_VALUE_COMPARISON </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/nlohmann_define_derived_type/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_ONLY_SERIALIZE, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/nlohmann_define_type_intrusive/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_TYPE_INTRUSIVE, NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_TYPE_INTRUSIVE_ONLY_SERIALIZE </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/nlohmann_define_type_non_intrusive/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/nlohmann_define_type_with_names/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_TYPE_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/nlohmann_json_namespace/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_NAMESPACE </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/nlohmann_json_namespace_begin/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_NAMESPACE_BEGIN, NLOHMANN_JSON_NAMESPACE_END </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/nlohmann_json_namespace_no_version/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_NAMESPACE_NO_VERSION </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/nlohmann_json_serialize_enum/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_SERIALIZE_ENUM </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/nlohmann_json_serialize_enum_strict/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_SERIALIZE_ENUM_STRICT </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/nlohmann_json_version_major/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_VERSION_MAJOR, NLOHMANN_JSON_VERSION_MINOR, NLOHMANN_JSON_VERSION_PATCH </span> </a> </li> </ul> </nav> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_5> <div class="md-nav__link md-nav__container"> <a href=../../community/ class="md-nav__link "> <span class=md-ellipsis> Community </span> </a> <label class="md-nav__link " for=__nav_5 id=__nav_5_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_5_label aria-expanded=false> <label class=md-nav__title for=__nav_5> <span class="md-nav__icon md-icon"></span> Community </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../community/code_of_conduct/ class=md-nav__link> <span class=md-ellipsis> Code of Conduct </span> </a> </li> <li class=md-nav__item> <a href=../../community/contribution_guidelines/ class=md-nav__link> <span class=md-ellipsis> Contribution Guidelines </span> </a> </li> <li class=md-nav__item> <a href=../../community/quality_assurance/ class=md-nav__link> <span class=md-ellipsis> Quality assurance </span> </a> </li> <li class=md-nav__item> <a href=../../community/governance/ class=md-nav__link> <span class=md-ellipsis> Governance </span> </a> </li> <li class=md-nav__item> <a href=../../community/security_policy/ class=md-nav__link> <span class=md-ellipsis> Security Policy </span> </a> </li> </ul> </nav> </li> </ul> </nav> </div> </div> </div> <div class="md-sidebar md-sidebar--secondary" data-md-component=sidebar data-md-type=toc> <div class=md-sidebar__scrollwrap> <div class=md-sidebar__inner> <nav class="md-nav md-nav--secondary" aria-label="Table of contents"> </nav> </div> </div> </div> <div class=md-content data-md-component=content> <article class="md-content__inner md-typeset"> <a href="https://github.com/nlohmann/json/edit/develop/docs/mkdocs/docs/integration/pkg-config.md" title="Edit this page" class="md-content__button md-icon" rel="edit"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M10 20H6V4h7v5h5v3.1l2-2V8l-6-6H6c-1.1 0-2 .9-2 2v16c0 1.1.9 2 2 2h4zm10.2-7c.1 0 .3.1.4.2l1.3 1.3c.2.2.2.6 0 .8l-1 1-2.1-2.1 1-1c.1-.1.2-.2.4-.2m0 3.9L14.1 23H12v-2.1l6.1-6.1z"/></svg> </a> <a href="https://github.com/nlohmann/json/raw/develop/docs/mkdocs/docs/integration/pkg-config.md" title="View source of this page" class="md-content__button md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M17 18c.56 0 1 .44 1 1s-.44 1-1 1-1-.44-1-1 .44-1 1-1m0-3c-2.73 0-5.06 1.66-6 4 .94 2.34 3.27 4 6 4s5.06-1.66 6-4c-.94-2.34-3.27-4-6-4m0 6.5a2.5 2.5 0 0 1-2.5-2.5 2.5 2.5 0 0 1 2.5-2.5 2.5 2.5 0 0 1 2.5 2.5 2.5 2.5 0 0 1-2.5 2.5M9.27 20H6V4h7v5h5v4.07c.7.08 1.36.25 2 .49V8l-6-6H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h4.5a8.2 8.2 0 0 1-1.23-2"/></svg> </a> <h1 id=pkg-config>Pkg-config<a class=headerlink href=#pkg-config title="Permanent link">&para;</a></h1> <p>If you are using bare Makefiles, you can use <code>pkg-config</code> to generate the include flags that point to where the library is installed:</p> <div class=highlight><pre><span></span><code>pkg-config<span class=w> </span>nlohmann_json<span class=w> </span>--cflags
 </code></pre></div> <p>Users of the <a href=../package_managers/#meson>Meson build system</a> will also be able to use a system-wide library, which will be found by <code>pkg-config</code>:</p> <div class=highlight><pre><span></span><code><span class=n>json</span><span class=w> </span><span class=o>=</span><span class=w> </span><span class=nb>dependency</span><span class=p>(</span><span class=s>&#39;nlohmann_json&#39;</span><span class=p>,</span><span class=w> </span><span class=n>required</span><span class=p>:</span><span class=w> </span><span class=kc>true</span><span class=p>)</span>
-</code></pre></div> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 23, 2026 11:16:18 UTC">June 23, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
+</code></pre></div> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 29, 2026 20:15:18 UTC">June 29, 2026</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2013-2026 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../assets/javascripts/bundle.79ae519e.min.js></script> <script src="../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html>
\ No newline at end of file
diff --git a/search/search_index.json b/search/search_index.json
index bb82f6c..e6fc766 100644
--- a/search/search_index.json
+++ b/search/search_index.json
@@ -1 +1 @@
-{"config":{"lang":["en"],"separator":"[\\s\\-\\.]","pipeline":["stopWordFilter"],"fields":{"title":{"boost":1000.0},"text":{"boost":1.0},"tags":{"boost":1000000.0}}},"docs":[{"location":"","title":"JSON for Modern C++","text":""},{"location":"api/json/","title":"nlohmann::json","text":"<pre><code>using json = basic_json&lt;&gt;;\n</code></pre> <p>This type is the default specialization of the basic_json class which uses the standard template types.</p>"},{"location":"api/json/#examples","title":"Examples","text":"Example <p>The example below demonstrates how to use the type <code>nlohmann::json</code>.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;iomanip&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create a JSON object\n    json j =\n    {\n        {\"pi\", 3.141},\n        {\"happy\", true},\n        {\"name\", \"Niels\"},\n        {\"nothing\", nullptr},\n        {\n            \"answer\", {\n                {\"everything\", 42}\n            }\n        },\n        {\"list\", {1, 0, 2}},\n        {\n            \"object\", {\n                {\"currency\", \"USD\"},\n                {\"value\", 42.99}\n            }\n        }\n    };\n\n    // add new values\n    j[\"new\"][\"key\"][\"value\"] = {\"another\", \"list\"};\n\n    // count elements\n    auto s = j.size();\n    j[\"size\"] = s;\n\n    // pretty print with indent of 4 spaces\n    std::cout &lt;&lt; std::setw(4) &lt;&lt; j &lt;&lt; '\\n';\n}\n</code></pre> <p>Output:</p> <pre><code>{\n    \"answer\": {\n        \"everything\": 42\n    },\n    \"happy\": true,\n    \"list\": [\n        1,\n        0,\n        2\n    ],\n    \"name\": \"Niels\",\n    \"new\": {\n        \"key\": {\n            \"value\": [\n                \"another\",\n                \"list\"\n            ]\n        }\n    },\n    \"nothing\": null,\n    \"object\": {\n        \"currency\": \"USD\",\n        \"value\": 42.99\n    },\n    \"pi\": 3.141,\n    \"size\": 8\n}\n</code></pre>"},{"location":"api/json/#version-history","title":"Version history","text":"<p>Since version 1.0.0.</p>"},{"location":"api/operator_gtgt/","title":"nlohmann::operator&gt;&gt;(basic_json)","text":"<pre><code>std::istream&amp; operator&gt;&gt;(std::istream&amp; i, basic_json&amp; j);\n</code></pre> <p>Deserializes an input stream to a JSON value.</p>"},{"location":"api/operator_gtgt/#parameters","title":"Parameters","text":"<code>i</code> (in, out) input stream to read a serialized JSON value from <code>j</code> (in, out) JSON value to write the deserialized input to"},{"location":"api/operator_gtgt/#return-value","title":"Return value","text":"<p>the stream <code>i</code></p>"},{"location":"api/operator_gtgt/#exceptions","title":"Exceptions","text":"<ul> <li>Throws <code>parse_error.101</code> in case of an unexpected token.</li> <li>Throws <code>parse_error.102</code> if <code>to_unicode</code> fails or surrogate error.</li> <li>Throws <code>parse_error.103</code> if <code>to_unicode</code> fails.</li> </ul>"},{"location":"api/operator_gtgt/#complexity","title":"Complexity","text":"<p>Linear in the length of the input. The parser is a predictive LL(1) parser.</p>"},{"location":"api/operator_gtgt/#notes","title":"Notes","text":"<p>A UTF-8 byte order mark is silently ignored.</p> <p>Deprecation</p> <p>This function replaces function <code>std::istream&amp; operator&lt;&lt;(basic_json&amp; j, std::istream&amp; i)</code> which has been deprecated in version 3.0.0. It will be removed in version 4.0.0. Please replace calls like <code>j &lt;&lt; i;</code> with <code>i &gt;&gt; j;</code>.</p>"},{"location":"api/operator_gtgt/#examples","title":"Examples","text":"Example <p>The example below shows how a JSON value is constructed by reading a serialization from a stream.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;iomanip&gt;\n#include &lt;sstream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create stream with serialized JSON\n    std::stringstream ss;\n    ss &lt;&lt; R\"({\n        \"number\": 23,\n        \"string\": \"Hello, world!\",\n        \"array\": [1, 2, 3, 4, 5],\n        \"boolean\": false,\n        \"null\": null\n    })\";\n\n    // create JSON value and read the serialization from the stream\n    json j;\n    ss &gt;&gt; j;\n\n    // serialize JSON\n    std::cout &lt;&lt; std::setw(2) &lt;&lt; j &lt;&lt; '\\n';\n}\n</code></pre> <p>Output:</p> <pre><code>{\n  \"array\": [\n    1,\n    2,\n    3,\n    4,\n    5\n  ],\n  \"boolean\": false,\n  \"null\": null,\n  \"number\": 23,\n  \"string\": \"Hello, world!\"\n}\n</code></pre>"},{"location":"api/operator_gtgt/#see-also","title":"See also","text":"<ul> <li>accept - check if the input is valid JSON</li> <li>parse - deserialize from a compatible input</li> </ul>"},{"location":"api/operator_gtgt/#version-history","title":"Version history","text":"<ul> <li>Added in version 1.0.0. Deprecated in version 3.0.0.</li> </ul>"},{"location":"api/operator_literal_json/","title":"nlohmann::operator\"\"_json","text":"<pre><code>json operator \"\"_json(const char* s, std::size_t n);\njson operator \"\"_json(const char8_t* s, std::size_t n);  // since C++20\n</code></pre> <p>This operator implements a user-defined string literal for JSON objects. It can be used by adding <code>_json</code> to a string literal and returns a <code>json</code> object if no parse error occurred.</p> <p>It is recommended to bring the operator into scope using any of the following lines: <pre><code>using nlohmann::literals::operator \"\"_json;\nusing namespace nlohmann::literals;\nusing namespace nlohmann::json_literals;\nusing namespace nlohmann::literals::json_literals;\nusing namespace nlohmann;\n</code></pre></p> <p>This is suggested to ease migration to the next major version release of the library. See <code>JSON_USE_GLOBAL_UDLS</code> for details.</p>"},{"location":"api/operator_literal_json/#parameters","title":"Parameters","text":"<code>s</code> (in) a string representation of a JSON object <code>n</code> (in) length of string <code>s</code>"},{"location":"api/operator_literal_json/#return-value","title":"Return value","text":"<p><code>json</code> value parsed from <code>s</code></p>"},{"location":"api/operator_literal_json/#exceptions","title":"Exceptions","text":"<p>The function can throw anything that <code>parse(s, s+n)</code> would throw.</p>"},{"location":"api/operator_literal_json/#complexity","title":"Complexity","text":"<p>Linear.</p>"},{"location":"api/operator_literal_json/#examples","title":"Examples","text":"Example <p>The following code shows how to create JSON values from string literals.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;iomanip&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\nusing namespace nlohmann::literals;\n\nint main()\n{\n    json j = R\"( {\"hello\": \"world\", \"answer\": 42} )\"_json;\n\n    std::cout &lt;&lt; std::setw(2) &lt;&lt; j &lt;&lt; '\\n';\n}\n</code></pre> <p>Output:</p> <pre><code>{\n  \"answer\": 42,\n  \"hello\": \"world\"\n}\n</code></pre>"},{"location":"api/operator_literal_json/#version-history","title":"Version history","text":"<ul> <li>Added in version 1.0.0.</li> <li>Moved to namespace <code>nlohmann::literals::json_literals</code> in 3.11.0.</li> <li>Added <code>char8_t*</code> overload in 3.12.1.</li> </ul>"},{"location":"api/operator_literal_json_pointer/","title":"nlohmann::operator\"\"_json_pointer","text":"<pre><code>json_pointer operator \"\"_json_pointer(const char* s, std::size_t n);\njson_pointer operator \"\"_json_pointer(const char8_t* s, std::size_t n);  // since C++20\n</code></pre> <p>This operator implements a user-defined string literal for JSON Pointers. It can be used by adding <code>_json_pointer</code> to a string literal and returns a <code>json_pointer</code> object if no parse error occurred.</p> <p>It is recommended to bring the operator into scope using any of the following lines: <pre><code>using nlohmann::literals::operator \"\"_json_pointer;\nusing namespace nlohmann::literals;\nusing namespace nlohmann::json_literals;\nusing namespace nlohmann::literals::json_literals;\nusing namespace nlohmann;\n</code></pre> This is suggested to ease migration to the next major version release of the library. See <code>JSON_USE_GLOBAL_UDLS</code> for details.</p>"},{"location":"api/operator_literal_json_pointer/#parameters","title":"Parameters","text":"<code>s</code> (in) a string representation of a JSON Pointer <code>n</code> (in) length of string <code>s</code>"},{"location":"api/operator_literal_json_pointer/#return-value","title":"Return value","text":"<p><code>json_pointer</code> value parsed from <code>s</code></p>"},{"location":"api/operator_literal_json_pointer/#exceptions","title":"Exceptions","text":"<p>The function can throw anything that <code>json_pointer::json_pointer</code> would throw.</p>"},{"location":"api/operator_literal_json_pointer/#complexity","title":"Complexity","text":"<p>Linear.</p>"},{"location":"api/operator_literal_json_pointer/#examples","title":"Examples","text":"Example <p>The following code shows how to create JSON Pointers from string literals.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;iomanip&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\nusing namespace nlohmann::literals;\n\nint main()\n{\n    json j = R\"( {\"hello\": \"world\", \"answer\": 42} )\"_json;\n    auto val = j[\"/hello\"_json_pointer];\n\n    std::cout &lt;&lt; std::setw(2) &lt;&lt; val &lt;&lt; '\\n';\n}\n</code></pre> <p>Output:</p> <pre><code>\"world\"\n</code></pre>"},{"location":"api/operator_literal_json_pointer/#see-also","title":"See also","text":"<ul> <li>json_pointer - type to represent JSON Pointers</li> </ul>"},{"location":"api/operator_literal_json_pointer/#version-history","title":"Version history","text":"<ul> <li>Added in version 2.0.0.</li> <li>Moved to namespace <code>nlohmann::literals::json_literals</code> in 3.11.0.</li> <li>Added <code>char8_t*</code> overload in 3.12.1.</li> </ul>"},{"location":"api/operator_ltlt/","title":"nlohmann::operator&lt;&lt;(basic_json), nlohmann::operator&lt;&lt;(json_pointer)","text":"<pre><code>std::ostream&amp; operator&lt;&lt;(std::ostream&amp; o, const basic_json&amp; j);      // (1)\n\nstd::ostream&amp; operator&lt;&lt;(std::ostream&amp; o, const json_pointer&amp; ptr);  // (2)\n</code></pre> <ol> <li>Serialize the given JSON value <code>j</code> to the output stream <code>o</code>. The JSON value will be serialized using the    <code>dump</code> member function.<ul> <li>The indentation of the output can be controlled with the member variable <code>width</code> of the output stream <code>o</code>. For   instance, using the manipulator <code>std::setw(4)</code> on <code>o</code> sets the indentation level to <code>4</code> and the serialization   result is the same as calling <code>dump(4)</code>.</li> <li>The indentation character can be controlled with the member variable <code>fill</code> of the output stream <code>o</code>.   For instance, the manipulator <code>std::setfill('\\\\t')</code> sets indentation to use a tab character rather than the   default space character.</li> </ul> </li> <li>Write a string representation of the given JSON pointer <code>ptr</code> to the output stream <code>o</code>. The string representation is    obtained using the <code>to_string</code> member function.</li> </ol>"},{"location":"api/operator_ltlt/#parameters","title":"Parameters","text":"<code>o</code> (in, out) stream to write to <code>j</code> (in) JSON value to serialize <code>ptr</code> (in) JSON pointer to write"},{"location":"api/operator_ltlt/#return-value","title":"Return value","text":"<p>the stream <code>o</code></p>"},{"location":"api/operator_ltlt/#exceptions","title":"Exceptions","text":"<ol> <li>Throws <code>type_error.316</code> if a string stored inside the JSON    value is not UTF-8 encoded. Note that unlike the <code>dump</code> member functions, no <code>error_handler</code>    can be set.</li> <li>None.</li> </ol>"},{"location":"api/operator_ltlt/#complexity","title":"Complexity","text":"<p>Linear.</p>"},{"location":"api/operator_ltlt/#notes","title":"Notes","text":"<p>Deprecation</p> <p>Function  <code>std::ostream&amp; operator&lt;&lt;(std::ostream&amp; o, const basic_json&amp; j)</code> replaces function <code>std::ostream&amp; operator&gt;&gt;(const basic_json&amp; j, std::ostream&amp; o)</code> which has been deprecated in version 3.0.0. It will be removed in version 4.0.0. Please replace calls like <code>j &gt;&gt; o;</code> with <code>o &lt;&lt; j;</code>.</p>"},{"location":"api/operator_ltlt/#examples","title":"Examples","text":"Example: (1) serialize JSON value to stream <p>The example below shows the serialization with different parameters to <code>width</code> to adjust the indentation level.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;iomanip&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create JSON values\n    json j_object = {{\"one\", 1}, {\"two\", 2}};\n    json j_array = {1, 2, 4, 8, 16};\n\n    // serialize without indentation\n    std::cout &lt;&lt; j_object &lt;&lt; \"\\n\\n\";\n    std::cout &lt;&lt; j_array &lt;&lt; \"\\n\\n\";\n\n    // serialize with indentation\n    std::cout &lt;&lt; std::setw(4) &lt;&lt; j_object &lt;&lt; \"\\n\\n\";\n    std::cout &lt;&lt; std::setw(2) &lt;&lt; j_array &lt;&lt; \"\\n\\n\";\n    std::cout &lt;&lt; std::setw(1) &lt;&lt; std::setfill('\\t') &lt;&lt; j_object &lt;&lt; \"\\n\\n\";\n}\n</code></pre> <p>Output:</p> <pre><code>{\"one\":1,\"two\":2}\n\n[1,2,4,8,16]\n\n{\n    \"one\": 1,\n    \"two\": 2\n}\n\n[\n  1,\n  2,\n  4,\n  8,\n  16\n]\n\n{\n    \"one\": 1,\n    \"two\": 2\n}\n</code></pre> Example: (2) write JSON pointer to stream <p>The example below shows how to write a JSON pointer to a stream.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create JSON pointer\n    json::json_pointer ptr(\"/foo/bar/baz\");\n\n    // write string representation to stream\n    std::cout &lt;&lt; ptr &lt;&lt; std::endl;\n}\n</code></pre> <p>Output:</p> <pre><code>/foo/bar/baz\n</code></pre>"},{"location":"api/operator_ltlt/#version-history","title":"Version history","text":"<ol> <li>Added in version 1.0.0. Added support for indentation character and deprecated    <code>std::ostream&amp; operator&gt;&gt;(const basic_json&amp; j, std::ostream&amp; o)</code> in version 3.0.0.</li> <li>Added in version 3.11.0.</li> </ol>"},{"location":"api/ordered_json/","title":"nlohmann::ordered_json","text":"<pre><code>using ordered_json = basic_json&lt;ordered_map&gt;;\n</code></pre> <p>This type preserves the insertion order of object keys.</p>"},{"location":"api/ordered_json/#iterator-invalidation","title":"Iterator invalidation","text":"<p>The type is based on <code>ordered_map</code> which in turn uses a <code>std::vector</code> to store object elements. Therefore, adding object elements can yield a reallocation in which case all iterators (including the <code>end()</code> iterator) and all references to the elements are invalidated. Also, any iterator or reference after the insertion point will point to the same index, which is now a different value.</p>"},{"location":"api/ordered_json/#examples","title":"Examples","text":"Example <p>The example below demonstrates how <code>ordered_json</code> preserves the insertion order of object keys.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing ordered_json = nlohmann::ordered_json;\n\nint main()\n{\n    ordered_json j;\n    j[\"one\"] = 1;\n    j[\"two\"] = 2;\n    j[\"three\"] = 3;\n\n    std::cout &lt;&lt; j.dump(2) &lt;&lt; '\\n';\n}\n</code></pre> <p>Output:</p> <pre><code>{\n  \"one\": 1,\n  \"two\": 2,\n  \"three\": 3\n}\n</code></pre>"},{"location":"api/ordered_json/#see-also","title":"See also","text":"<ul> <li>ordered_map</li> <li>Object Order</li> </ul>"},{"location":"api/ordered_json/#version-history","title":"Version history","text":"<p>Since version 3.9.0.</p>"},{"location":"api/ordered_map/","title":"nlohmann::ordered_map","text":"<pre><code>template&lt;class Key, class T, class IgnoredLess = std::less&lt;Key&gt;,\n         class Allocator = std::allocator&lt;std::pair&lt;const Key, T&gt;&gt;&gt;\nstruct ordered_map : std::vector&lt;std::pair&lt;const Key, T&gt;, Allocator&gt;;\n</code></pre> <p>A minimal map-like container that preserves insertion order for use within <code>nlohmann::ordered_json</code> (<code>nlohmann::basic_json&lt;ordered_map&gt;</code>).</p>"},{"location":"api/ordered_map/#template-parameters","title":"Template parameters","text":"<code>Key</code> key type <code>T</code> mapped type <code>IgnoredLess</code> comparison function (ignored and only added to ensure compatibility with <code>std::map</code>) <code>Allocator</code> allocator type"},{"location":"api/ordered_map/#iterator-invalidation","title":"Iterator invalidation","text":"<p>The type uses a <code>std::vector</code> to store object elements. Therefore, adding elements can yield a reallocation in which case all iterators (including the <code>end()</code> iterator) and all references to the elements are invalidated.</p>"},{"location":"api/ordered_map/#member-types","title":"Member types","text":"<ul> <li>key_type - key type (<code>Key</code>)</li> <li>mapped_type - mapped type (<code>T</code>)</li> <li>Container - base container type (<code>std::vector&lt;std::pair&lt;const Key, T&gt;, Allocator&gt;</code>)</li> <li>iterator</li> <li>const_iterator</li> <li>size_type</li> <li>value_type</li> <li>key_compare - key comparison function <pre><code>std::equal_to&lt;Key&gt;  // until C++14\n\nstd::equal_to&lt;&gt;     // since C++14\n</code></pre></li> </ul>"},{"location":"api/ordered_map/#member-functions","title":"Member functions","text":"<ul> <li>(constructor)</li> <li>(destructor)</li> <li>emplace</li> <li>operator[]</li> <li>at</li> <li>erase</li> <li>count</li> <li>find</li> <li>insert</li> </ul>"},{"location":"api/ordered_map/#examples","title":"Examples","text":"Example <p>The example shows the different behavior of <code>std::map</code> and <code>nlohmann::ordered_map</code>.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\n// simple output function\ntemplate&lt;typename Map&gt;\nvoid output(const char* prefix, const Map&amp; m)\n{\n    std::cout &lt;&lt; prefix &lt;&lt; \" = { \";\n    for (auto&amp; element : m)\n    {\n        std::cout &lt;&lt; element.first &lt;&lt; \":\" &lt;&lt; element.second &lt;&lt; ' ';\n    }\n    std::cout &lt;&lt; \"}\" &lt;&lt; std::endl;\n}\n\nint main()\n{\n    // create and fill two maps\n    nlohmann::ordered_map&lt;std::string, std::string&gt; m_ordered;\n    m_ordered[\"one\"] = \"eins\";\n    m_ordered[\"two\"] = \"zwei\";\n    m_ordered[\"three\"] = \"drei\";\n\n    std::map&lt;std::string, std::string&gt; m_std;\n    m_std[\"one\"] = \"eins\";\n    m_std[\"two\"] = \"zwei\";\n    m_std[\"three\"] = \"drei\";\n\n    // output: m_ordered is ordered by insertion order, m_std is ordered by key\n    output(\"m_ordered\", m_ordered);\n    output(\"m_std\", m_std);\n\n    // erase and re-add \"one\" key\n    m_ordered.erase(\"one\");\n    m_ordered[\"one\"] = \"eins\";\n\n    m_std.erase(\"one\");\n    m_std[\"one\"] = \"eins\";\n\n    // output: m_ordered shows newly added key at the end; m_std is again ordered by key\n    output(\"m_ordered\", m_ordered);\n    output(\"m_std\", m_std);\n}\n</code></pre> <p>Output:</p> <pre><code>m_ordered = { one:eins two:zwei three:drei }\nm_std = { one:eins three:drei two:zwei }\nm_ordered = { two:zwei three:drei one:eins }\nm_std = { one:eins three:drei two:zwei }\n</code></pre>"},{"location":"api/ordered_map/#see-also","title":"See also","text":"<ul> <li>ordered_json</li> </ul>"},{"location":"api/ordered_map/#version-history","title":"Version history","text":"<ul> <li>Added in version 3.9.0 to implement <code>nlohmann::ordered_json</code>.</li> <li>Added key_compare member in version 3.11.0.</li> </ul>"},{"location":"api/adl_serializer/","title":"nlohmann::adl_serializer","text":"<pre><code>template&lt;typename, typename&gt;\nstruct adl_serializer;\n</code></pre> <p>Serializer that uses ADL (Argument-Dependent Lookup) to choose <code>to_json</code>/<code>from_json</code> functions from the types' namespaces.</p> <p>It is implemented similarly to</p> <pre><code>template&lt;typename ValueType&gt;\nstruct adl_serializer {\n    template&lt;typename BasicJsonType&gt;\n    static void to_json(BasicJsonType&amp; j, const T&amp; value) {\n        // calls the \"to_json\" method in T's namespace\n    }\n\n    template&lt;typename BasicJsonType&gt;\n    static void from_json(const BasicJsonType&amp; j, T&amp; value) {\n        // same thing, but with the \"from_json\" method\n    }\n};\n</code></pre>"},{"location":"api/adl_serializer/#member-functions","title":"Member functions","text":"<ul> <li>from_json - convert a JSON value to any value type</li> <li>to_json - convert any value type to a JSON value</li> </ul>"},{"location":"api/adl_serializer/#version-history","title":"Version history","text":"<ul> <li>Added in version 2.1.0.</li> </ul>"},{"location":"api/adl_serializer/from_json/","title":"nlohmann::adl_serializer::from_json","text":"<pre><code>// (1)\ntemplate&lt;typename BasicJsonType, typename TargetType = ValueType&gt;\nstatic auto from_json(BasicJsonType &amp;&amp; j, TargetType&amp; val) noexcept(\n    noexcept(::nlohmann::from_json(std::forward&lt;BasicJsonType&gt;(j), val)))\n-&gt; decltype(::nlohmann::from_json(std::forward&lt;BasicJsonType&gt;(j), val), void())\n\n// (2)\ntemplate&lt;typename BasicJsonType, typename TargetType = ValueType&gt;\nstatic auto from_json(BasicJsonType &amp;&amp; j) noexcept(\nnoexcept(::nlohmann::from_json(std::forward&lt;BasicJsonType&gt;(j), detail::identity_tag&lt;TargetType&gt; {})))\n-&gt; decltype(::nlohmann::from_json(std::forward&lt;BasicJsonType&gt;(j), detail::identity_tag&lt;TargetType&gt; {}))\n</code></pre> <p>This function is usually called by the <code>get()</code> function of the basic_json class (either explicitly or via the conversion operators).</p> <ol> <li>This function is chosen for default-constructible value types.</li> <li>This function is chosen for value types which are not default-constructible.</li> </ol>"},{"location":"api/adl_serializer/from_json/#parameters","title":"Parameters","text":"<code>j</code> (in) JSON value to read from <code>val</code> (out) value to write to"},{"location":"api/adl_serializer/from_json/#return-value","title":"Return value","text":"<p>Copy of the JSON value, converted to <code>ValueType</code></p>"},{"location":"api/adl_serializer/from_json/#examples","title":"Examples","text":"Example: (1) Default-constructible type <p>The example below shows how a <code>from_json</code> function can be implemented for a user-defined type. This function is called by the <code>adl_serializer</code> when <code>get&lt;ns::person&gt;()</code> is called.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nnamespace ns\n{\n// a simple struct to model a person\nstruct person\n{\n    std::string name;\n    std::string address;\n    int age;\n};\n} // namespace ns\n\nnamespace ns\n{\nvoid from_json(const json&amp; j, person&amp; p)\n{\n    j.at(\"name\").get_to(p.name);\n    j.at(\"address\").get_to(p.address);\n    j.at(\"age\").get_to(p.age);\n}\n} // namespace ns\n\nint main()\n{\n    json j;\n    j[\"name\"] = \"Ned Flanders\";\n    j[\"address\"] = \"744 Evergreen Terrace\";\n    j[\"age\"] = 60;\n\n    auto p = j.get&lt;ns::person&gt;();\n\n    std::cout &lt;&lt; p.name &lt;&lt; \" (\" &lt;&lt; p.age &lt;&lt; \") lives in \" &lt;&lt; p.address &lt;&lt; std::endl;\n}\n</code></pre> <p>Output:</p> <pre><code>Ned Flanders (60) lives in 744 Evergreen Terrace\n</code></pre> Example: (2) Non-default-constructible type <p>The example below shows how a <code>from_json</code> is implemented as part of a specialization of the <code>adl_serializer</code> to realize the conversion of a non-default-constructible type.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nnamespace ns\n{\n// a simple struct to model a person (not default constructible)\nstruct person\n{\n    person(std::string n, std::string a, int aa)\n        : name(std::move(n)), address(std::move(a)), age(aa)\n    {}\n\n    std::string name;\n    std::string address;\n    int age;\n};\n} // namespace ns\n\nnamespace nlohmann\n{\ntemplate &lt;&gt;\nstruct adl_serializer&lt;ns::person&gt;\n{\n    static ns::person from_json(const json&amp; j)\n    {\n        return {j.at(\"name\"), j.at(\"address\"), j.at(\"age\")};\n    }\n\n    // Here's the catch! You must provide a to_json method! Otherwise, you\n    // will not be able to convert person to json, since you fully\n    // specialized adl_serializer on that type\n    static void to_json(json&amp; j, ns::person p)\n    {\n        j[\"name\"] = p.name;\n        j[\"address\"] = p.address;\n        j[\"age\"] = p.age;\n    }\n};\n} // namespace nlohmann\n\nint main()\n{\n    json j;\n    j[\"name\"] = \"Ned Flanders\";\n    j[\"address\"] = \"744 Evergreen Terrace\";\n    j[\"age\"] = 60;\n\n    auto p = j.get&lt;ns::person&gt;();\n\n    std::cout &lt;&lt; p.name &lt;&lt; \" (\" &lt;&lt; p.age &lt;&lt; \") lives in \" &lt;&lt; p.address &lt;&lt; std::endl;\n}\n</code></pre> <p>Output:</p> <pre><code>Ned Flanders (60) lives in 744 Evergreen Terrace\n</code></pre>"},{"location":"api/adl_serializer/from_json/#see-also","title":"See also","text":"<ul> <li>to_json</li> </ul>"},{"location":"api/adl_serializer/from_json/#version-history","title":"Version history","text":"<ul> <li>Added in version 2.1.0.</li> </ul>"},{"location":"api/adl_serializer/to_json/","title":"nlohmann::adl_serializer::to_json","text":"<pre><code>template&lt;typename BasicJsonType, typename TargetType = ValueType&gt;\nstatic auto to_json(BasicJsonType&amp; j, TargetType &amp;&amp; val) noexcept(\n    noexcept(::nlohmann::to_json(j, std::forward&lt;TargetType&gt;(val))))\n-&gt; decltype(::nlohmann::to_json(j, std::forward&lt;TargetType&gt;(val)), void())\n</code></pre> <p>This function is usually called by the constructors of the basic_json class.</p>"},{"location":"api/adl_serializer/to_json/#parameters","title":"Parameters","text":"<code>j</code> (out) JSON value to write to <code>val</code> (in) value to read from"},{"location":"api/adl_serializer/to_json/#examples","title":"Examples","text":"Example <p>The example below shows how a <code>to_json</code> function can be implemented for a user-defined type. This function is called by the <code>adl_serializer</code> when the constructor <code>basic_json(ns::person)</code> is called.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nnamespace ns\n{\n// a simple struct to model a person\nstruct person\n{\n    std::string name;\n    std::string address;\n    int age;\n};\n} // namespace ns\n\nnamespace ns\n{\nvoid to_json(json&amp; j, const person&amp; p)\n{\n    j = json{ {\"name\", p.name}, {\"address\", p.address}, {\"age\", p.age} };\n}\n} // namespace ns\n\nint main()\n{\n    ns::person p = {\"Ned Flanders\", \"744 Evergreen Terrace\", 60};\n\n    json j = p;\n\n    std::cout &lt;&lt; j &lt;&lt; std::endl;\n}\n</code></pre> <p>Output:</p> <pre><code>{\"address\":\"744 Evergreen Terrace\",\"age\":60,\"name\":\"Ned Flanders\"}\n</code></pre>"},{"location":"api/adl_serializer/to_json/#see-also","title":"See also","text":"<ul> <li>from_json</li> </ul>"},{"location":"api/adl_serializer/to_json/#version-history","title":"Version history","text":"<ul> <li>Added in version 2.1.0.</li> </ul>"},{"location":"api/basic_json/","title":"nlohmann::basic_json","text":"<p>Defined in header <code>&lt;nlohmann/json.hpp&gt;</code></p> <pre><code>template&lt;\n    template&lt;typename U, typename V, typename... Args&gt; class ObjectType = std::map,\n    template&lt;typename U, typename... Args&gt; class ArrayType = std::vector,\n    class StringType = std::string,\n    class BooleanType = bool,\n    class NumberIntegerType = std::int64_t,\n    class NumberUnsignedType = std::uint64_t,\n    class NumberFloatType = double,\n    template&lt;typename U&gt; class AllocatorType = std::allocator,\n    template&lt;typename T, typename SFINAE = void&gt; class JSONSerializer = adl_serializer,\n    class BinaryType = std::vector&lt;std::uint8_t&gt;,\n    class CustomBaseClass = void\n&gt;\nclass basic_json;\n</code></pre>"},{"location":"api/basic_json/#template-parameters","title":"Template parameters","text":"Template parameter Description Derived type <code>ObjectType</code> type for JSON objects <code>object_t</code> <code>ArrayType</code> type for JSON arrays <code>array_t</code> <code>StringType</code> type for JSON strings and object keys <code>string_t</code> <code>BooleanType</code> type for JSON booleans <code>boolean_t</code> <code>NumberIntegerType</code> type for JSON integer numbers <code>number_integer_t</code> <code>NumberUnsignedType</code> type for JSON unsigned integer numbers <code>number_unsigned_t</code> <code>NumberFloatType</code> type for JSON floating-point numbers <code>number_float_t</code> <code>AllocatorType</code> type of the allocator to use <code>JSONSerializer</code> the serializer to resolve internal calls to <code>to_json()</code> and <code>from_json()</code> <code>json_serializer</code> <code>BinaryType</code> type for binary arrays <code>binary_t</code> <code>CustomBaseClass</code> extension point for user code <code>json_base_class_t</code>"},{"location":"api/basic_json/#specializations","title":"Specializations","text":"<ul> <li>json - default specialization</li> <li>ordered_json - a specialization that maintains the insertion order of object keys</li> </ul>"},{"location":"api/basic_json/#iterator-invalidation","title":"Iterator invalidation","text":"<p>All operations that add values to an array (<code>push_back</code> , <code>operator+=</code>, <code>emplace_back</code>, <code>insert</code>, and <code>operator[]</code> for a non-existing index) can yield a reallocation, in which case all iterators (including the <code>end()</code> iterator) and all references to the elements are invalidated.</p> <p>For <code>ordered_json</code>, also all operations that add a value to an object (<code>push_back</code>, <code>operator+=</code>, <code>emplace</code>, <code>insert</code>, <code>update</code>, and <code>operator[]</code> for a non-existing key) can yield a reallocation, in which case all iterators (including the <code>end()</code> iterator) and all references to the elements are invalidated.</p>"},{"location":"api/basic_json/#requirements","title":"Requirements","text":"<p>The class satisfies the following concept requirements:</p>"},{"location":"api/basic_json/#basic","title":"Basic","text":"<ul> <li>DefaultConstructible: JSON values can be   default-constructed. The result will be a JSON null value.</li> <li>MoveConstructible: A JSON value can be constructed   from an rvalue argument.</li> <li>CopyConstructible: A JSON value can be   copy-constructed from an lvalue expression.</li> <li>MoveAssignable: A JSON value can be assigned from an   rvalue argument.</li> <li>CopyAssignable: A JSON value can be copy-assigned from   an lvalue expression.</li> <li>Destructible: JSON values can be destructed.</li> </ul>"},{"location":"api/basic_json/#layout","title":"Layout","text":"<ul> <li>StandardLayoutType: JSON values have   standard layout: All non-static data   members are private and standard layout types, the class has no virtual functions or (virtual) base classes.</li> </ul>"},{"location":"api/basic_json/#library-wide","title":"Library-wide","text":"<ul> <li>EqualityComparable: JSON values can be compared with   <code>==</code>, see <code>operator==</code>.</li> <li>LessThanComparable: JSON values can be compared with   <code>&lt;</code>, see <code>operator&lt;</code>.</li> <li>Swappable: Any JSON lvalue or rvalue of can be swapped with   any lvalue or rvalue of other compatible types, using unqualified function <code>swap</code>.</li> <li>NullablePointer: JSON values can be compared against   <code>std::nullptr_t</code> objects which are used to model the <code>null</code> value.</li> </ul>"},{"location":"api/basic_json/#container","title":"Container","text":"<ul> <li>Container: JSON values can be used like STL containers and   provide iterator access.</li> <li>ReversibleContainer: JSON values can be used like   STL containers and provide reverse iterator access.</li> </ul>"},{"location":"api/basic_json/#member-types","title":"Member types","text":"<ul> <li>adl_serializer - the default serializer</li> <li>value_t - the JSON type enumeration</li> <li>json_pointer - JSON Pointer implementation</li> <li>json_serializer - type of the serializer to for conversions from/to JSON</li> <li>error_handler_t - type to choose behavior on decoding errors</li> <li>cbor_tag_handler_t - type to choose how to handle CBOR tags</li> <li>initializer_list_t - type for initializer lists of <code>basic_json</code> values</li> <li>input_format_t - type to choose the format to parse</li> <li>json_sax_t - type for SAX events</li> </ul>"},{"location":"api/basic_json/#exceptions","title":"Exceptions","text":"<ul> <li>exception - general exception of the <code>basic_json</code> class<ul> <li>parse_error - exception indicating a parse error</li> <li>invalid_iterator - exception indicating errors with iterators</li> <li>type_error - exception indicating executing a member function with a wrong type</li> <li>out_of_range - exception indicating access out of the defined range</li> <li>other_error - exception indicating other library errors</li> </ul> </li> </ul>"},{"location":"api/basic_json/#container-types","title":"Container types","text":"Type Definition <code>value_type</code> <code>basic_json</code> <code>reference</code> <code>value_type&amp;</code> <code>const_reference</code> <code>const value_type&amp;</code> <code>difference_type</code> <code>std::ptrdiff_t</code> <code>size_type</code> <code>std::size_t</code> <code>allocator_type</code> <code>AllocatorType&lt;basic_json&gt;</code> <code>pointer</code> <code>std::allocator_traits&lt;allocator_type&gt;::pointer</code> <code>const_pointer</code> <code>std::allocator_traits&lt;allocator_type&gt;::const_pointer</code> <code>iterator</code> LegacyBidirectionalIterator <code>const_iterator</code> constant LegacyBidirectionalIterator <code>reverse_iterator</code> reverse iterator, derived from <code>iterator</code> <code>const_reverse_iterator</code> reverse iterator, derived from <code>const_iterator</code> <code>iteration_proxy</code> helper type for <code>items</code> function"},{"location":"api/basic_json/#json-value-data-types","title":"JSON value data types","text":"<ul> <li>array_t - type for arrays</li> <li>binary_t - type for binary arrays</li> <li>boolean_t - type for booleans</li> <li>default_object_comparator_t - default comparator for objects</li> <li>number_float_t - type for numbers (floating-point)</li> <li>number_integer_t - type for numbers (integer)</li> <li>number_unsigned_t - type for numbers (unsigned)</li> <li>object_comparator_t - comparator for objects</li> <li>object_t - type for objects</li> <li>string_t - type for strings</li> </ul>"},{"location":"api/basic_json/#parser-callback","title":"Parser callback","text":"<ul> <li>parse_event_t - parser event types</li> <li>parser_callback_t - per-element parser callback type</li> </ul>"},{"location":"api/basic_json/#member-functions","title":"Member functions","text":"<ul> <li>(constructor)</li> <li>(destructor)</li> <li>operator= - copy assignment</li> <li>array (static) - explicitly create an array</li> <li>binary (static) - explicitly create a binary array</li> <li>object (static) - explicitly create an object</li> </ul>"},{"location":"api/basic_json/#object-inspection","title":"Object inspection","text":"<p>Functions to inspect the type of a JSON value.</p> <ul> <li>type - return the type of the JSON value</li> <li>operator value_t - return the type of the JSON value</li> <li>type_name - return the type as string</li> <li>is_primitive - return whether the type is primitive</li> <li>is_structured - return whether the type is structured</li> <li>is_null - return whether the value is null</li> <li>is_boolean - return whether the value is a boolean</li> <li>is_number - return whether the value is a number</li> <li>is_number_integer - return whether the value is an integer number</li> <li>is_number_unsigned - return whether the value is an unsigned integer number</li> <li>is_number_float - return whether the value is a floating-point number</li> <li>is_object - return whether the value is an object</li> <li>is_array - return whether the value is an array</li> <li>is_string - return whether the value is a string</li> <li>is_binary - return whether the value is a binary array</li> <li>is_discarded - return whether the value is discarded</li> </ul> <p>Optional functions to access the diagnostic positions.</p> <ul> <li>start_pos - return the start position of the value</li> <li>end_pos - return the one past the end position of the value</li> </ul>"},{"location":"api/basic_json/#value-access","title":"Value access","text":"<p>Direct access to the stored value of a JSON value.</p> <ul> <li>get - get a value</li> <li>get_to - get a value and write it to a destination</li> <li>get_ptr - get a pointer value</li> <li>get_ref - get a reference value</li> <li>operator ValueType - get a value</li> <li>get_binary - get a binary value</li> </ul>"},{"location":"api/basic_json/#element-access","title":"Element access","text":"<p>Access to the JSON value</p> <ul> <li>at - access specified element with bounds checking</li> <li>operator[] - access specified element</li> <li>value - access specified object element with default value</li> <li>front - access the first element</li> <li>back - access the last element</li> </ul>"},{"location":"api/basic_json/#lookup","title":"Lookup","text":"<ul> <li>find - find an element in a JSON object</li> <li>count - returns the number of occurrences of a key in a JSON object</li> <li>contains - check the existence of an element in a JSON object</li> </ul>"},{"location":"api/basic_json/#iterators","title":"Iterators","text":"<ul> <li>begin - returns an iterator to the first element</li> <li>cbegin - returns a const iterator to the first element</li> <li>end - returns an iterator to one past the last element</li> <li>cend - returns a const iterator to one past the last element</li> <li>rbegin - returns an iterator to the reverse-beginning</li> <li>rend - returns an iterator to the reverse-end</li> <li>crbegin - returns a const iterator to the reverse-beginning</li> <li>crend - returns a const iterator to the reverse-end</li> <li>items - wrapper to access iterator member functions in range-based for</li> </ul>"},{"location":"api/basic_json/#capacity","title":"Capacity","text":"<ul> <li>empty - checks whether the container is empty</li> <li>size - returns the number of elements</li> <li>max_size - returns the maximum possible number of elements</li> </ul>"},{"location":"api/basic_json/#modifiers","title":"Modifiers","text":"<ul> <li>clear - clears the contents</li> <li>push_back - add a value to an array/object</li> <li>operator+= - add a value to an array/object</li> <li>emplace_back - add a value to an array</li> <li>emplace - add a value to an object if a key does not exist</li> <li>erase - remove elements</li> <li>insert - inserts elements</li> <li>update - updates a JSON object from another object, overwriting existing keys </li> <li>swap - exchanges the values</li> </ul>"},{"location":"api/basic_json/#lexicographical-comparison-operators","title":"Lexicographical comparison operators","text":"<ul> <li>operator== - comparison: equal</li> <li>operator!= - comparison: not equal</li> <li>operator&lt; - comparison: less than</li> <li>operator&gt; - comparison: greater than</li> <li>operator&lt;= - comparison: less than or equal</li> <li>operator&gt;= - comparison: greater than or equal</li> <li>operator&lt;=&gt; - comparison: 3-way</li> </ul>"},{"location":"api/basic_json/#serialization-dumping","title":"Serialization / Dumping","text":"<ul> <li>dump - serialization</li> </ul>"},{"location":"api/basic_json/#deserialization-parsing","title":"Deserialization / Parsing","text":"<ul> <li>parse (static) - deserialize from a compatible input</li> <li>accept (static) - check if the input is valid JSON</li> <li>sax_parse (static) - generate SAX events</li> </ul>"},{"location":"api/basic_json/#json-pointer-functions","title":"JSON Pointer functions","text":"<ul> <li>flatten - return flattened JSON value</li> <li>unflatten - unflatten a previously flattened JSON value</li> </ul>"},{"location":"api/basic_json/#json-patch-functions","title":"JSON Patch functions","text":"<ul> <li>patch - applies a JSON patch</li> <li>patch_inplace - applies a JSON patch in place</li> <li>diff (static) - creates a diff as a JSON patch</li> </ul>"},{"location":"api/basic_json/#json-merge-patch-functions","title":"JSON Merge Patch functions","text":"<ul> <li>merge_patch - applies a JSON Merge Patch</li> </ul>"},{"location":"api/basic_json/#static-functions","title":"Static functions","text":"<ul> <li>meta - returns version information on the library</li> <li>get_allocator - returns the allocator associated with the container</li> </ul>"},{"location":"api/basic_json/#binary-formats","title":"Binary formats","text":"<ul> <li>from_bjdata (static) - create a JSON value from an input in BJData format</li> <li>from_bson (static) - create a JSON value from an input in BSON format</li> <li>from_cbor (static) - create a JSON value from an input in CBOR format</li> <li>from_msgpack (static) - create a JSON value from an input in MessagePack format</li> <li>from_ubjson (static) - create a JSON value from an input in UBJSON format</li> <li>to_bjdata (static) - create a BJData serialization of a given JSON value</li> <li>to_bson (static) - create a BSON serialization of a given JSON value</li> <li>to_cbor (static) - create a CBOR serialization of a given JSON value</li> <li>to_msgpack (static) - create a MessagePack serialization of a given JSON value</li> <li>to_ubjson (static) - create a UBJSON serialization of a given JSON value</li> </ul>"},{"location":"api/basic_json/#non-member-functions","title":"Non-member functions","text":"<ul> <li>operator&lt;&lt;(std::ostream&amp;) - serialize to stream</li> <li>operator&gt;&gt;(std::istream&amp;) - deserialize from stream</li> <li>to_string - user-defined <code>to_string</code> function for JSON values</li> </ul>"},{"location":"api/basic_json/#literals","title":"Literals","text":"<ul> <li>operator\"\"_json - user-defined string literal for JSON values</li> </ul>"},{"location":"api/basic_json/#helper-classes","title":"Helper classes","text":"<ul> <li>std::hash&lt;basic_json&gt; - return a hash value for a JSON object</li> <li>std::swap&lt;basic_json&gt; - exchanges the values of two JSON objects</li> </ul>"},{"location":"api/basic_json/#examples","title":"Examples","text":"Example <p>The example shows how the library is used.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;iomanip&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create a JSON object\n    json j =\n    {\n        {\"pi\", 3.141},\n        {\"happy\", true},\n        {\"name\", \"Niels\"},\n        {\"nothing\", nullptr},\n        {\n            \"answer\", {\n                {\"everything\", 42}\n            }\n        },\n        {\"list\", {1, 0, 2}},\n        {\n            \"object\", {\n                {\"currency\", \"USD\"},\n                {\"value\", 42.99}\n            }\n        }\n    };\n\n    // add new values\n    j[\"new\"][\"key\"][\"value\"] = {\"another\", \"list\"};\n\n    // count elements\n    auto s = j.size();\n    j[\"size\"] = s;\n\n    // pretty print with indent of 4 spaces\n    std::cout &lt;&lt; std::setw(4) &lt;&lt; j &lt;&lt; '\\n';\n}\n</code></pre> <p>Output:</p> <pre><code>{\n    \"answer\": {\n        \"everything\": 42\n    },\n    \"happy\": true,\n    \"list\": [\n        1,\n        0,\n        2\n    ],\n    \"name\": \"Niels\",\n    \"new\": {\n        \"key\": {\n            \"value\": [\n                \"another\",\n                \"list\"\n            ]\n        }\n    },\n    \"nothing\": null,\n    \"object\": {\n        \"currency\": \"USD\",\n        \"value\": 42.99\n    },\n    \"pi\": 3.141,\n    \"size\": 8\n}\n</code></pre>"},{"location":"api/basic_json/#see-also","title":"See also","text":"<ul> <li>RFC 8259: The JavaScript Object Notation (JSON) Data Interchange Format</li> </ul>"},{"location":"api/basic_json/#version-history","title":"Version history","text":"<ul> <li>Added in version 1.0.0.</li> </ul>"},{"location":"api/basic_json/accept/","title":"nlohmann::basic_json::accept","text":"<pre><code>// (1)\ntemplate&lt;typename InputType&gt;\nstatic bool accept(InputType&amp;&amp; i,\n                   const bool ignore_comments = false,\n                   const bool ignore_trailing_commas = false);\n\n// (2)\ntemplate&lt;typename IteratorType&gt;\nstatic bool accept(IteratorType first, IteratorType last,\n                   const bool ignore_comments = false,\n                   const bool ignore_trailing_commas = false);\n</code></pre> <p>Checks whether the input is valid JSON.</p> <ol> <li>Reads from a compatible input.</li> <li> <p>Reads from a pair of character iterators</p> <p>The value_type of the iterator must be an integral type with a size of 1, 2, or 4 bytes, which will be interpreted respectively as UTF-8, UTF-16, and UTF-32.</p> </li> </ol> <p>Unlike the <code>parse()</code> function, this function neither throws an exception in case of invalid JSON input (i.e., a parse error) nor creates diagnostic information.</p>"},{"location":"api/basic_json/accept/#template-parameters","title":"Template parameters","text":"<code>InputType</code> <p>A compatible input, for instance:</p> <ul> <li>an <code>std::istream</code> object</li> <li>a <code>FILE</code> pointer (throws if null)</li> <li>a C-style array of characters</li> <li>a pointer to a null-terminated string of single byte characters (throws if null)</li> <li>a <code>std::string</code></li> <li>an object <code>obj</code> for which <code>begin(obj)</code> and <code>end(obj)</code> produces a valid pair of iterators.</li> </ul> <code>IteratorType</code> <p>a compatible iterator type, for instance.</p> <ul> <li>a pair of <code>std::string::iterator</code> or <code>std::vector&lt;std::uint8_t&gt;::iterator</code></li> <li>a pair of pointers such as <code>ptr</code> and <code>ptr + len</code></li> </ul>"},{"location":"api/basic_json/accept/#parameters","title":"Parameters","text":"<code>i</code> (in) Input to parse from. <code>ignore_comments</code> (in) whether comments should be ignored and treated like whitespace (<code>true</code>) or yield a parse error (<code>false</code>); (optional, <code>false</code> by default) <code>ignore_trailing_commas</code> (in) whether trailing commas in arrays or objects should be ignored and treated like whitespace (<code>true</code>) or yield a parse error (<code>false</code>); (optional, <code>false</code> by default) <code>first</code> (in) iterator to the start of the character range <code>last</code> (in) iterator to the end of the character range"},{"location":"api/basic_json/accept/#return-value","title":"Return value","text":"<p>Whether the input is valid JSON.</p>"},{"location":"api/basic_json/accept/#exception-safety","title":"Exception safety","text":"<p>Strong guarantee: if an exception is thrown, there are no changes in the JSON value.</p>"},{"location":"api/basic_json/accept/#exceptions","title":"Exceptions","text":"<p>Throws <code>parse_error.101</code> in case of an empty input like a null <code>FILE*</code> or <code>char*</code> pointer.</p>"},{"location":"api/basic_json/accept/#complexity","title":"Complexity","text":"<p>Linear in the length of the input. The parser is a predictive LL(1) parser.</p>"},{"location":"api/basic_json/accept/#notes","title":"Notes","text":"<p>A UTF-8 byte order mark is silently ignored.</p>"},{"location":"api/basic_json/accept/#examples","title":"Examples","text":"Example <p>The example below demonstrates the <code>accept()</code> function reading from a string.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;iomanip&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // a valid JSON text\n    auto valid_text = R\"(\n    {\n        \"numbers\": [1, 2, 3]\n    }\n    )\";\n\n    // an invalid JSON text\n    auto invalid_text = R\"(\n    {\n        \"strings\": [\"extra\", \"comma\", ]\n    }\n    )\";\n\n    std::cout &lt;&lt; std::boolalpha\n              &lt;&lt; json::accept(valid_text) &lt;&lt; ' '\n              &lt;&lt; json::accept(invalid_text) &lt;&lt; '\\n';\n}\n</code></pre> <p>Output:</p> <pre><code>true false\n</code></pre>"},{"location":"api/basic_json/accept/#see-also","title":"See also","text":"<ul> <li>parse - deserialize from a compatible input</li> <li>operator&gt;&gt; - deserialize from stream</li> </ul>"},{"location":"api/basic_json/accept/#version-history","title":"Version history","text":"<ul> <li>Added in version 3.0.0.</li> <li>Ignoring comments via <code>ignore_comments</code> added in version 3.9.0.</li> <li>Changed runtime assertion in case of <code>FILE*</code> null pointers to exception in version 3.12.0.</li> <li>Added <code>ignore_trailing_commas</code> in version 3.12.1.</li> </ul> <p>Deprecation</p> <p>Overload (2) replaces calls to <code>accept</code> with a pair of iterators as their first parameter which has been deprecated in version 3.8.0. This overload will be removed in version 4.0.0. Please replace all calls like <code>accept({ptr, ptr+len}, ...);</code> with <code>accept(ptr, ptr+len, ...);</code>.</p> <p>You should be warned by your compiler with a <code>-Wdeprecated-declarations</code> warning if you are using a deprecated function.</p>"},{"location":"api/basic_json/array/","title":"nlohmann::basic_json::array","text":"<pre><code>static basic_json array(initializer_list_t init = {});\n</code></pre> <p>Creates a JSON array value from a given initializer list. That is, given a list of values <code>a, b, c</code>, creates the JSON value <code>[a, b, c]</code>. If the initializer list is empty, the empty array <code>[]</code> is created.</p>"},{"location":"api/basic_json/array/#parameters","title":"Parameters","text":"<code>init</code> (in) initializer list with JSON values to create an array from (optional)"},{"location":"api/basic_json/array/#return-value","title":"Return value","text":"<p>JSON array value</p>"},{"location":"api/basic_json/array/#exception-safety","title":"Exception safety","text":"<p>Strong guarantee: if an exception is thrown, there are no changes in the JSON value.</p>"},{"location":"api/basic_json/array/#complexity","title":"Complexity","text":"<p>Linear in the size of <code>init</code>.</p>"},{"location":"api/basic_json/array/#notes","title":"Notes","text":"<p>This function is only needed to express two edge cases that cannot be realized with the initializer list constructor (<code>basic_json(initializer_list_t, bool, value_t)</code>). These cases are:</p> <ol> <li>creating an array whose elements are all pairs whose first element is a string -- in this case, the initializer list    constructor would create an object, taking the first elements as keys</li> <li>creating an empty array -- passing the empty initializer list to the initializer list constructor yields an empty    object</li> </ol>"},{"location":"api/basic_json/array/#examples","title":"Examples","text":"Example <p>The following code shows an example for the <code>array</code> function.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create JSON arrays\n    json j_no_init_list = json::array();\n    json j_empty_init_list = json::array({});\n    json j_nonempty_init_list = json::array({1, 2, 3, 4});\n    json j_list_of_pairs = json::array({ {\"one\", 1}, {\"two\", 2} });\n\n    // serialize the JSON arrays\n    std::cout &lt;&lt; j_no_init_list &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_empty_init_list &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_nonempty_init_list &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_list_of_pairs &lt;&lt; '\\n';\n}\n</code></pre> <p>Output:</p> <pre><code>[]\n[]\n[1,2,3,4]\n[[\"one\",1],[\"two\",2]]\n</code></pre>"},{"location":"api/basic_json/array/#see-also","title":"See also","text":"<ul> <li><code>basic_json(initializer_list_t)</code> - create a JSON value from an initializer list</li> <li><code>object</code> - create a JSON object value from an initializer list</li> </ul>"},{"location":"api/basic_json/array/#version-history","title":"Version history","text":"<ul> <li>Added in version 1.0.0.</li> </ul>"},{"location":"api/basic_json/array_t/","title":"nlohmann::basic_json::array_t","text":"<pre><code>using array_t = ArrayType&lt;basic_json, AllocatorType&lt;basic_json&gt;&gt;;\n</code></pre> <p>The type used to store JSON arrays.</p> <p>RFC 8259 describes JSON arrays as follows:</p> <p>An array is an ordered sequence of zero or more values.</p> <p>To store objects in C++, a type is defined by the template parameters explained below.</p>"},{"location":"api/basic_json/array_t/#template-parameters","title":"Template parameters","text":"<code>ArrayType</code> container type to store arrays (e.g., <code>std::vector</code> or <code>std::list</code>) <code>AllocatorType</code> the allocator to use for objects (e.g., <code>std::allocator</code>)"},{"location":"api/basic_json/array_t/#notes","title":"Notes","text":""},{"location":"api/basic_json/array_t/#default-type","title":"Default type","text":"<p>With the default values for <code>ArrayType</code> (<code>std::vector</code>) and <code>AllocatorType</code> (<code>std::allocator</code>), the default value for <code>array_t</code> is:</p> <pre><code>std::vector&lt;\n  basic_json, // value_type\n  std::allocator&lt;basic_json&gt; // allocator_type\n&gt;\n</code></pre>"},{"location":"api/basic_json/array_t/#limits","title":"Limits","text":"<p>RFC 8259 specifies:</p> <p>An implementation may set limits on the maximum depth of nesting.</p> <p>In this class, the array's limit of nesting is not explicitly constrained. However, a maximum depth of nesting may be introduced by the compiler or runtime environment. A theoretical limit can be queried by calling the <code>max_size</code> function of a JSON array.</p>"},{"location":"api/basic_json/array_t/#storage","title":"Storage","text":"<p>Arrays are stored as pointers in a <code>basic_json</code> type. That is, for any access to array values, a pointer of type <code>array_t*</code> must be dereferenced.</p>"},{"location":"api/basic_json/array_t/#examples","title":"Examples","text":"Example <p>The following code shows that <code>array_t</code> is by default, a typedef to <code>std::vector&lt;nlohmann::json&gt;</code>.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;iomanip&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    std::cout &lt;&lt; std::boolalpha &lt;&lt; std::is_same&lt;std::vector&lt;json&gt;, json::array_t&gt;::value &lt;&lt; std::endl;\n}\n</code></pre> <p>Output:</p> <pre><code>true\n</code></pre>"},{"location":"api/basic_json/array_t/#version-history","title":"Version history","text":"<ul> <li>Added in version 1.0.0.</li> </ul>"},{"location":"api/basic_json/at/","title":"nlohmann::basic_json::at","text":"<pre><code>// (1)\nreference at(size_type idx);\nconst_reference at(size_type idx) const;\n\n// (2)\nreference at(const typename object_t::key_type&amp; key);\nconst_reference at(const typename object_t::key_type&amp; key) const;\n\n// (3)\ntemplate&lt;typename KeyType&gt;\nreference at(KeyType&amp;&amp; key);\ntemplate&lt;typename KeyType&gt;\nconst_reference at(KeyType&amp;&amp; key) const;\n\n// (4)\nreference at(const json_pointer&amp; ptr);\nconst_reference at(const json_pointer&amp; ptr) const;\n</code></pre> <ol> <li>Returns a reference to the array element at specified location <code>idx</code>, with bounds checking.</li> <li>Returns a reference to the object element with specified key <code>key</code>, with bounds checking.</li> <li>See 2. This overload is only available if <code>KeyType</code> is comparable with <code>typename object_t::key_type</code> and    <code>typename object_comparator_t::is_transparent</code> denotes a type.</li> <li>Returns a reference to the element at specified JSON pointer <code>ptr</code>, with bounds checking.</li> </ol>"},{"location":"api/basic_json/at/#template-parameters","title":"Template parameters","text":"<code>KeyType</code> A type for an object key other than <code>json_pointer</code> that is comparable with <code>string_t</code> using  <code>object_comparator_t</code>. This can also be a string view (C++17)."},{"location":"api/basic_json/at/#parameters","title":"Parameters","text":"<code>idx</code> (in) index of the element to access <code>key</code> (in) object key of the elements to access <code>ptr</code> (in) JSON pointer to the desired element"},{"location":"api/basic_json/at/#return-value","title":"Return value","text":"<ol> <li>reference to the element at index <code>idx</code></li> <li>reference to the element at key <code>key</code></li> <li>reference to the element at key <code>key</code></li> <li>reference to the element pointed to by <code>ptr</code></li> </ol>"},{"location":"api/basic_json/at/#exception-safety","title":"Exception safety","text":"<p>Strong exception safety: if an exception occurs, the original value stays intact.</p>"},{"location":"api/basic_json/at/#exceptions","title":"Exceptions","text":"<ol> <li>The function can throw the following exceptions:<ul> <li>Throws <code>type_error.304</code> if the JSON value is not an array;   in this case, calling <code>at</code> with an index makes no sense. See the example below.</li> <li>Throws <code>out_of_range.401</code> if the index <code>idx</code> is out of   range of the array; that is, <code>idx &gt;= size()</code>. See the example below.</li> </ul> </li> <li>The function can throw the following exceptions:<ul> <li>Throws <code>type_error.304</code> if the JSON value is not an object;   in this case, calling <code>at</code> with a key makes no sense. See the example below.</li> <li>Throws <code>out_of_range.403</code> if the key <code>key</code> is not   stored in the object; that is, <code>find(key) == end()</code>. See the example below.</li> </ul> </li> <li>See 2.</li> <li>The function can throw the following exceptions:<ul> <li>Throws <code>parse_error.106</code> if an array index in the passed   JSON pointer <code>ptr</code> begins with '0'. See the example below.</li> <li>Throws <code>parse_error.109</code> if an array index in the passed   JSON pointer <code>ptr</code> is not a number. See the example below.</li> <li>Throws <code>out_of_range.401</code> if an array index in the passed   JSON pointer <code>ptr</code> is out of range. See the example below.</li> <li>Throws <code>out_of_range.402</code> if the array index '-' is used   in the passed JSON pointer <code>ptr</code>. As <code>at</code> provides checked access (and no elements are implicitly inserted), the   index '-' is always invalid. See the example below.</li> <li>Throws <code>out_of_range.403</code> if the JSON pointer describes a   key of an object which cannot be found. See the example below.</li> <li>Throws <code>out_of_range.404</code> if the JSON pointer <code>ptr</code> can   not be resolved. See the example below.</li> </ul> </li> </ol>"},{"location":"api/basic_json/at/#complexity","title":"Complexity","text":"<ol> <li>Constant.</li> <li>Logarithmic in the size of the container.</li> <li>Logarithmic in the size of the container.</li> <li>Logarithmic in the size of the container.</li> </ol>"},{"location":"api/basic_json/at/#examples","title":"Examples","text":"Example: (1) access specified array element with bounds checking <p>The example below shows how array elements can be read and written using <code>at()</code>. It also demonstrates the different exceptions that can be thrown.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create JSON array\n    json array = {\"first\", \"2nd\", \"third\", \"fourth\"};\n\n    // output element at index 2 (third element)\n    std::cout &lt;&lt; array.at(2) &lt;&lt; '\\n';\n\n    // change element at index 1 (second element) to \"second\"\n    array.at(1) = \"second\";\n\n    // output changed array\n    std::cout &lt;&lt; array &lt;&lt; '\\n';\n\n    // exception type_error.304\n    try\n    {\n        // use at() on a non-array type\n        json str = \"I am a string\";\n        str.at(0) = \"Another string\";\n    }\n    catch (const json::type_error&amp; e)\n    {\n        std::cout &lt;&lt; e.what() &lt;&lt; '\\n';\n    }\n\n    // exception out_of_range.401\n    try\n    {\n        // try to write beyond the array limit\n        array.at(5) = \"sixth\";\n    }\n    catch (const json::out_of_range&amp; e)\n    {\n        std::cout &lt;&lt; e.what() &lt;&lt; '\\n';\n    }\n}\n</code></pre> <p>Output:</p> <pre><code>\"third\"\n[\"first\",\"second\",\"third\",\"fourth\"]\n[json.exception.type_error.304] cannot use at() with string\n[json.exception.out_of_range.401] array index 5 is out of range\n</code></pre> Example: (1) access specified array element with bounds checking <p>The example below shows how array elements can be read using <code>at()</code>. It also demonstrates the different exceptions that can be thrown.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create JSON array\n    const json array = {\"first\", \"2nd\", \"third\", \"fourth\"};\n\n    // output element at index 2 (third element)\n    std::cout &lt;&lt; array.at(2) &lt;&lt; '\\n';\n\n    // exception type_error.304\n    try\n    {\n        // use at() on a non-array type\n        const json str = \"I am a string\";\n        std::cout &lt;&lt; str.at(0) &lt;&lt; '\\n';\n    }\n    catch (const json::type_error&amp; e)\n    {\n        std::cout &lt;&lt; e.what() &lt;&lt; '\\n';\n    }\n\n    // exception out_of_range.401\n    try\n    {\n        // try to read beyond the array limit\n        std::cout &lt;&lt; array.at(5) &lt;&lt; '\\n';\n    }\n    catch (const json::out_of_range&amp; e)\n    {\n        std::cout &lt;&lt; e.what() &lt;&lt; '\\n';\n    }\n}\n</code></pre> <p>Output:</p> <pre><code>\"third\"\n[json.exception.type_error.304] cannot use at() with string\n[json.exception.out_of_range.401] array index 5 is out of range\n</code></pre> Example: (2) access specified object element with bounds checking <p>The example below shows how object elements can be read and written using <code>at()</code>. It also demonstrates the different exceptions that can be thrown.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create JSON object\n    json object =\n    {\n        {\"the good\", \"il buono\"},\n        {\"the bad\", \"il cattivo\"},\n        {\"the ugly\", \"il brutto\"}\n    };\n\n    // output element with key \"the ugly\"\n    std::cout &lt;&lt; object.at(\"the ugly\") &lt;&lt; '\\n';\n\n    // change element with key \"the bad\"\n    object.at(\"the bad\") = \"il cattivo\";\n\n    // output changed array\n    std::cout &lt;&lt; object &lt;&lt; '\\n';\n\n    // exception type_error.304\n    try\n    {\n        // use at() on a non-object type\n        json str = \"I am a string\";\n        str.at(\"the good\") = \"Another string\";\n    }\n    catch (const json::type_error&amp; e)\n    {\n        std::cout &lt;&lt; e.what() &lt;&lt; '\\n';\n    }\n\n    // exception out_of_range.401\n    try\n    {\n        // try to write at a nonexisting key\n        object.at(\"the fast\") = \"il rapido\";\n    }\n    catch (const json::out_of_range&amp; e)\n    {\n        std::cout &lt;&lt; e.what() &lt;&lt; '\\n';\n    }\n}\n</code></pre> <p>Output:</p> <pre><code>\"il brutto\"\n{\"the bad\":\"il cattivo\",\"the good\":\"il buono\",\"the ugly\":\"il brutto\"}\n[json.exception.type_error.304] cannot use at() with string\n[json.exception.out_of_range.403] key 'the fast' not found\n</code></pre> Example: (2) access specified object element with bounds checking <p>The example below shows how object elements can be read using <code>at()</code>. It also demonstrates the different exceptions that can be thrown.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create JSON object\n    const json object =\n    {\n        {\"the good\", \"il buono\"},\n        {\"the bad\", \"il cattivo\"},\n        {\"the ugly\", \"il brutto\"}\n    };\n\n    // output element with key \"the ugly\"\n    std::cout &lt;&lt; object.at(\"the ugly\") &lt;&lt; '\\n';\n\n    // exception type_error.304\n    try\n    {\n        // use at() on a non-object type\n        const json str = \"I am a string\";\n        std::cout &lt;&lt; str.at(\"the good\") &lt;&lt; '\\n';\n    }\n    catch (const json::type_error&amp; e)\n    {\n        std::cout &lt;&lt; e.what() &lt;&lt; '\\n';\n    }\n\n    // exception out_of_range.401\n    try\n    {\n        // try to read from a nonexisting key\n        std::cout &lt;&lt; object.at(\"the fast\") &lt;&lt; '\\n';\n    }\n    catch (const json::out_of_range)\n    {\n        std::cout &lt;&lt; \"out of range\" &lt;&lt; '\\n';\n    }\n}\n</code></pre> <p>Output:</p> <pre><code>\"il brutto\"\n[json.exception.type_error.304] cannot use at() with string\nout of range\n</code></pre> Example: (3) access specified object element using string_view with bounds checking <p>The example below shows how object elements can be read and written using <code>at()</code>. It also demonstrates the different exceptions that can be thrown.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;string_view&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing namespace std::string_view_literals;\nusing json = nlohmann::json;\n\nint main()\n{\n    // create JSON object\n    json object =\n    {\n        {\"the good\", \"il buono\"},\n        {\"the bad\", \"il cattivo\"},\n        {\"the ugly\", \"il brutto\"}\n    };\n\n    // output element with key \"the ugly\" using string_view\n    std::cout &lt;&lt; object.at(\"the ugly\"sv) &lt;&lt; '\\n';\n\n    // change element with key \"the bad\" using string_view\n    object.at(\"the bad\"sv) = \"il cattivo\";\n\n    // output changed array\n    std::cout &lt;&lt; object &lt;&lt; '\\n';\n\n    // exception type_error.304\n    try\n    {\n        // use at() with string_view on a non-object type\n        json str = \"I am a string\";\n        str.at(\"the good\"sv) = \"Another string\";\n    }\n    catch (const json::type_error&amp; e)\n    {\n        std::cout &lt;&lt; e.what() &lt;&lt; '\\n';\n    }\n\n    // exception out_of_range.401\n    try\n    {\n        // try to write at a nonexisting key using string_view\n        object.at(\"the fast\"sv) = \"il rapido\";\n    }\n    catch (const json::out_of_range&amp; e)\n    {\n        std::cout &lt;&lt; e.what() &lt;&lt; '\\n';\n    }\n}\n</code></pre> <p>Output:</p> <pre><code>\"il brutto\"\n{\"the bad\":\"il cattivo\",\"the good\":\"il buono\",\"the ugly\":\"il brutto\"}\n[json.exception.type_error.304] cannot use at() with string\n[json.exception.out_of_range.403] key 'the fast' not found\n</code></pre> Example: (3) access specified object element using string_view with bounds checking <p>The example below shows how object elements can be read using <code>at()</code>. It also demonstrates the different exceptions that can be thrown.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;string_view&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing namespace std::string_view_literals;\nusing json = nlohmann::json;\n\nint main()\n{\n    // create JSON object\n    const json object =\n    {\n        {\"the good\", \"il buono\"},\n        {\"the bad\", \"il cattivo\"},\n        {\"the ugly\", \"il brutto\"}\n    };\n\n    // output element with key \"the ugly\" using string_view\n    std::cout &lt;&lt; object.at(\"the ugly\"sv) &lt;&lt; '\\n';\n\n    // exception type_error.304\n    try\n    {\n        // use at() with string_view on a non-object type\n        const json str = \"I am a string\";\n        std::cout &lt;&lt; str.at(\"the good\"sv) &lt;&lt; '\\n';\n    }\n    catch (const json::type_error&amp; e)\n    {\n        std::cout &lt;&lt; e.what() &lt;&lt; '\\n';\n    }\n\n    // exception out_of_range.401\n    try\n    {\n        // try to read from a nonexisting key using string_view\n        std::cout &lt;&lt; object.at(\"the fast\"sv) &lt;&lt; '\\n';\n    }\n    catch (const json::out_of_range&amp; e)\n    {\n        std::cout &lt;&lt; \"out of range\" &lt;&lt; '\\n';\n    }\n}\n</code></pre> <p>Output:</p> <pre><code>\"il brutto\"\n[json.exception.type_error.304] cannot use at() with string\nout of range\n</code></pre> Example: (4) access specified element via JSON Pointer <p>The example below shows how object elements can be read and written using <code>at()</code>. It also demonstrates the different exceptions that can be thrown.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\nusing namespace nlohmann::literals;\n\nint main()\n{\n    // create a JSON value\n    json j =\n    {\n        {\"number\", 1}, {\"string\", \"foo\"}, {\"array\", {1, 2}}\n    };\n\n    // read-only access\n\n    // output element with JSON pointer \"/number\"\n    std::cout &lt;&lt; j.at(\"/number\"_json_pointer) &lt;&lt; '\\n';\n    // output element with JSON pointer \"/string\"\n    std::cout &lt;&lt; j.at(\"/string\"_json_pointer) &lt;&lt; '\\n';\n    // output element with JSON pointer \"/array\"\n    std::cout &lt;&lt; j.at(\"/array\"_json_pointer) &lt;&lt; '\\n';\n    // output element with JSON pointer \"/array/1\"\n    std::cout &lt;&lt; j.at(\"/array/1\"_json_pointer) &lt;&lt; '\\n';\n\n    // writing access\n\n    // change the string\n    j.at(\"/string\"_json_pointer) = \"bar\";\n    // output the changed string\n    std::cout &lt;&lt; j[\"string\"] &lt;&lt; '\\n';\n\n    // change an array element\n    j.at(\"/array/1\"_json_pointer) = 21;\n    // output the changed array\n    std::cout &lt;&lt; j[\"array\"] &lt;&lt; '\\n';\n\n    // out_of_range.106\n    try\n    {\n        // try to use an array index with leading '0'\n        json::reference ref = j.at(\"/array/01\"_json_pointer);\n    }\n    catch (const json::parse_error&amp; e)\n    {\n        std::cout &lt;&lt; e.what() &lt;&lt; '\\n';\n    }\n\n    // out_of_range.109\n    try\n    {\n        // try to use an array index that is not a number\n        json::reference ref = j.at(\"/array/one\"_json_pointer);\n    }\n    catch (const json::parse_error&amp; e)\n    {\n        std::cout &lt;&lt; e.what() &lt;&lt; '\\n';\n    }\n\n    // out_of_range.401\n    try\n    {\n        // try to use an invalid array index\n        json::reference ref = j.at(\"/array/4\"_json_pointer);\n    }\n    catch (const json::out_of_range&amp; e)\n    {\n        std::cout &lt;&lt; e.what() &lt;&lt; '\\n';\n    }\n\n    // out_of_range.402\n    try\n    {\n        // try to use the array index '-'\n        json::reference ref = j.at(\"/array/-\"_json_pointer);\n    }\n    catch (const json::out_of_range&amp; e)\n    {\n        std::cout &lt;&lt; e.what() &lt;&lt; '\\n';\n    }\n\n    // out_of_range.403\n    try\n    {\n        // try to use a JSON pointer to a nonexistent object key\n        json::const_reference ref = j.at(\"/foo\"_json_pointer);\n    }\n    catch (const json::out_of_range&amp; e)\n    {\n        std::cout &lt;&lt; e.what() &lt;&lt; '\\n';\n    }\n\n    // out_of_range.404\n    try\n    {\n        // try to use a JSON pointer that cannot be resolved\n        json::reference ref = j.at(\"/number/foo\"_json_pointer);\n    }\n    catch (const json::out_of_range&amp; e)\n    {\n        std::cout &lt;&lt; e.what() &lt;&lt; '\\n';\n    }\n}\n</code></pre> <p>Output:</p> <pre><code>1\n\"foo\"\n[1,2]\n2\n\"bar\"\n[1,21]\n[json.exception.parse_error.106] parse error: array index '01' must not begin with '0'\n[json.exception.parse_error.109] parse error: array index 'one' is not a number\n[json.exception.out_of_range.401] array index 4 is out of range\n[json.exception.out_of_range.402] array index '-' (2) is out of range\n[json.exception.out_of_range.403] key 'foo' not found\n[json.exception.out_of_range.404] unresolved reference token 'foo'\n</code></pre> Example: (4) access specified element via JSON Pointer <p>The example below shows how object elements can be read using <code>at()</code>. It also demonstrates the different exceptions that can be thrown.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\nusing namespace nlohmann::literals;\n\nint main()\n{\n    // create a JSON value\n    const json j =\n    {\n        {\"number\", 1}, {\"string\", \"foo\"}, {\"array\", {1, 2}}\n    };\n\n    // read-only access\n\n    // output element with JSON pointer \"/number\"\n    std::cout &lt;&lt; j.at(\"/number\"_json_pointer) &lt;&lt; '\\n';\n    // output element with JSON pointer \"/string\"\n    std::cout &lt;&lt; j.at(\"/string\"_json_pointer) &lt;&lt; '\\n';\n    // output element with JSON pointer \"/array\"\n    std::cout &lt;&lt; j.at(\"/array\"_json_pointer) &lt;&lt; '\\n';\n    // output element with JSON pointer \"/array/1\"\n    std::cout &lt;&lt; j.at(\"/array/1\"_json_pointer) &lt;&lt; '\\n';\n\n    // out_of_range.109\n    try\n    {\n        // try to use an array index that is not a number\n        json::const_reference ref = j.at(\"/array/one\"_json_pointer);\n    }\n    catch (const json::parse_error&amp; e)\n    {\n        std::cout &lt;&lt; e.what() &lt;&lt; '\\n';\n    }\n\n    // out_of_range.401\n    try\n    {\n        // try to use an invalid array index\n        json::const_reference ref = j.at(\"/array/4\"_json_pointer);\n    }\n    catch (const json::out_of_range&amp; e)\n    {\n        std::cout &lt;&lt; e.what() &lt;&lt; '\\n';\n    }\n\n    // out_of_range.402\n    try\n    {\n        // try to use the array index '-'\n        json::const_reference ref = j.at(\"/array/-\"_json_pointer);\n    }\n    catch (const json::out_of_range&amp; e)\n    {\n        std::cout &lt;&lt; e.what() &lt;&lt; '\\n';\n    }\n\n    // out_of_range.403\n    try\n    {\n        // try to use a JSON pointer to a nonexistent object key\n        json::const_reference ref = j.at(\"/foo\"_json_pointer);\n    }\n    catch (const json::out_of_range&amp; e)\n    {\n        std::cout &lt;&lt; e.what() &lt;&lt; '\\n';\n    }\n\n    // out_of_range.404\n    try\n    {\n        // try to use a JSON pointer that cannot be resolved\n        json::const_reference ref = j.at(\"/number/foo\"_json_pointer);\n    }\n    catch (const json::out_of_range&amp; e)\n    {\n        std::cout &lt;&lt; e.what() &lt;&lt; '\\n';\n    }\n}\n</code></pre> <p>Output:</p> <pre><code>1\n\"foo\"\n[1,2]\n2\n[json.exception.parse_error.109] parse error: array index 'one' is not a number\n[json.exception.out_of_range.401] array index 4 is out of range\n[json.exception.out_of_range.402] array index '-' (2) is out of range\n[json.exception.out_of_range.403] key 'foo' not found\n[json.exception.out_of_range.404] unresolved reference token 'foo'\n</code></pre>"},{"location":"api/basic_json/at/#see-also","title":"See also","text":"<ul> <li>documentation on checked access</li> <li><code>operator[]</code> for unchecked access by reference</li> <li><code>value</code> for access with default value</li> </ul>"},{"location":"api/basic_json/at/#version-history","title":"Version history","text":"<ol> <li>Added in version 1.0.0.</li> <li>Added in version 1.0.0.</li> <li>Added in version 3.11.0.</li> <li>Added in version 2.0.0.</li> </ol>"},{"location":"api/basic_json/back/","title":"nlohmann::basic_json::back","text":"<pre><code>reference back();\n\nconst_reference back() const;\n</code></pre> <p>Returns a reference to the last element in the container. For a JSON container <code>c</code>, the expression <code>c.back()</code> is equivalent to</p> <pre><code>auto tmp = c.end();\n--tmp;\nreturn *tmp;\n</code></pre>"},{"location":"api/basic_json/back/#return-value","title":"Return value","text":"<p>In the case of a structured type (array or object), a reference to the last element is returned. In the case of number, string, boolean, or binary values, a reference to the value is returned.</p>"},{"location":"api/basic_json/back/#exception-safety","title":"Exception safety","text":"<p>Strong guarantee: if an exception is thrown, there are no changes in the JSON value.</p>"},{"location":"api/basic_json/back/#exceptions","title":"Exceptions","text":"<p>If the JSON value is <code>null</code>, exception <code>invalid_iterator.214</code> is thrown.</p>"},{"location":"api/basic_json/back/#complexity","title":"Complexity","text":"<p>Constant.</p>"},{"location":"api/basic_json/back/#notes","title":"Notes","text":"<p>Precondition</p> <p>The array or object must not be empty. Calling <code>back</code> on an empty array or object yields undefined behavior.</p>"},{"location":"api/basic_json/back/#examples","title":"Examples","text":"Example <p>The following code shows an example for <code>back()</code>.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create JSON values\n    json j_boolean = true;\n    json j_number_integer = 17;\n    json j_number_float = 23.42;\n    json j_object = {{\"one\", 1}, {\"two\", 2}};\n    json j_object_empty(json::value_t::object);\n    json j_array = {1, 2, 4, 8, 16};\n    json j_array_empty(json::value_t::array);\n    json j_string = \"Hello, world\";\n\n    // call back()\n    std::cout &lt;&lt; j_boolean.back() &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_number_integer.back() &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_number_float.back() &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_object.back() &lt;&lt; '\\n';\n    //std::cout &lt;&lt; j_object_empty.back() &lt;&lt; '\\n';  // undefined behavior\n    std::cout &lt;&lt; j_array.back() &lt;&lt; '\\n';\n    //std::cout &lt;&lt; j_array_empty.back() &lt;&lt; '\\n';   // undefined behavior\n    std::cout &lt;&lt; j_string.back() &lt;&lt; '\\n';\n\n    // back() called on a null value\n    try\n    {\n        json j_null;\n        j_null.back();\n    }\n    catch (const json::invalid_iterator&amp; e)\n    {\n        std::cout &lt;&lt; e.what() &lt;&lt; '\\n';\n    }\n}\n</code></pre> <p>Output:</p> <pre><code>true\n17\n23.42\n2\n16\n\"Hello, world\"\n[json.exception.invalid_iterator.214] cannot get value\n</code></pre>"},{"location":"api/basic_json/back/#see-also","title":"See also","text":"<ul> <li>front to access the first element</li> </ul>"},{"location":"api/basic_json/back/#version-history","title":"Version history","text":"<ul> <li>Added in version 1.0.0.</li> <li>Adjusted code to return reference to binary values in version 3.8.0.</li> </ul>"},{"location":"api/basic_json/basic_json/","title":"nlohmann::basic_json::basic_json","text":"<pre><code>// (1)\nbasic_json(const value_t v);\n\n// (2)\nbasic_json(std::nullptr_t = nullptr) noexcept;\n\n// (3)\ntemplate&lt;typename CompatibleType&gt;\nbasic_json(CompatibleType&amp;&amp; val) noexcept(noexcept(\n           JSONSerializer&lt;U&gt;::to_json(std::declval&lt;basic_json_t&amp;&gt;(),\n                                      std::forward&lt;CompatibleType&gt;(val))));\n\n// (4)\ntemplate&lt;typename BasicJsonType&gt;\nbasic_json(const BasicJsonType&amp; val);\n\n// (5)\nbasic_json(initializer_list_t init,\n           bool type_deduction = true,\n           value_t manual_type = value_t::array);\n\n// (6)\nbasic_json(size_type cnt, const basic_json&amp; val);\n\n// (7)\nbasic_json(iterator first, iterator last);\nbasic_json(const_iterator first, const_iterator last);\n\n// (8)\nbasic_json(const basic_json&amp; other);\n\n// (9)\nbasic_json(basic_json&amp;&amp; other) noexcept;\n</code></pre> <ol> <li> <p>Create an empty JSON value with a given type. The value will be default initialized with an empty value which depends    on the type:</p> Value type initial value null <code>null</code> boolean <code>false</code> string <code>\"\"</code> number <code>0</code> object <code>{}</code> array <code>[]</code> binary empty array <p>The postcondition of this constructor can be restored by calling <code>clear()</code>.</p> </li> <li> <p>Create a <code>null</code> JSON value. It either takes a null pointer as parameter (explicitly creating <code>null</code>)    or no parameter (implicitly creating <code>null</code>). The passed null pointer itself is not read -- it is only used to    choose the right constructor.</p> </li> <li> <p>This is a \"catch all\" constructor for all compatible JSON types; that is, types for which a <code>to_json()</code> method    exists. The constructor forwards the parameter <code>val</code> to that method (to <code>json_serializer&lt;U&gt;::to_json</code> method with    <code>U = uncvref_t&lt;CompatibleType&gt;</code>, to be exact).</p> <p>Template type <code>CompatibleType</code> includes, but is not limited to, the following types:</p> <ul> <li>arrays: <code>array_t</code> and all kinds of compatible containers such as <code>std::vector</code>, <code>std::deque</code>,  <code>std::list</code>, <code>std::forward_list</code>, <code>std::array</code>, <code>std::valarray</code>, <code>std::set</code>, <code>std::unordered_set</code>, <code>std::multiset</code>,  and <code>std::unordered_multiset</code> with a <code>value_type</code> from which a <code>basic_json</code> value can be constructed.</li> <li>objects: <code>object_t</code> and all kinds of compatible associative containers such as <code>std::map</code>,  <code>std::unordered_map</code>, <code>std::multimap</code>, and <code>std::unordered_multimap</code> with a <code>key_type</code> compatible to <code>string_t</code>  and a <code>value_type</code> from which a <code>basic_json</code> value can be constructed.</li> <li>strings: <code>string_t</code>, string literals, and all compatible string containers can be used.</li> <li>numbers: <code>number_integer_t</code>, <code>number_unsigned_t</code>,  <code>number_float_t</code>, and all convertible number types such as <code>int</code>, <code>size_t</code>, <code>int64_t</code>, <code>float</code>  or <code>double</code> can be used.</li> <li>boolean: <code>boolean_t</code> / <code>bool</code> can be used.</li> <li>binary: <code>binary_t</code> / <code>std::vector&lt;uint8_t&gt;</code> may be used; unfortunately because string literals cannot be  distinguished from binary character arrays by the C++ type system, all types compatible with <code>const char*</code> will be  directed to the string constructor instead. This is both for backwards compatibility and due to the fact that a  binary type is not a standard JSON type.</li> </ul> <p>See the examples below.</p> </li> <li> <p>This is a constructor for existing <code>basic_json</code> types. It does not hijack copy/move constructors, since the parameter    has different template arguments than the current ones.</p> <p>The constructor tries to convert the internal <code>m_value</code> of the parameter.</p> </li> <li> <p>Creates a JSON value of type array or object from the passed initializer list <code>init</code>. In case <code>type_deduction</code> is    <code>true</code> (default), the type of the JSON value to be created is deducted from the initializer list <code>init</code>    according to the following rules:</p> <ol> <li>If the list is empty, an empty JSON object value <code>{}</code> is created.</li> <li>If the list consists of pairs whose first element is a string, a JSON object value is created where the first   elements of the pairs are treated as keys and the second elements are as values.</li> <li>In all other cases, an array is created.</li> </ol> <p>The rules aim to create the best fit between a C++ initializer list and JSON values. The rationale is as follows:</p> <ol> <li>The empty initializer list is written as <code>{}</code> which is exactly an empty JSON object.</li> <li>C++ has no way of describing mapped types other than to list a list of pairs. As JSON requires that keys must be    of type string, rule 2 is the weakest constraint one can pose on initializer lists to interpret them as an    object.</li> <li>In all other cases, the initializer list could not be interpreted as a JSON object type, so interpreting it as a    JSON array type is safe.</li> </ol> <p>With the rules described above, the following JSON values cannot be expressed by an initializer list:</p> <ul> <li>the empty array (<code>[]</code>): use <code>array(initializer_list_t)</code> with an empty initializer list in this case</li> <li>arrays whose elements satisfy rule 2: use <code>array(initializer_list_t)</code> with the same initializer list in this case</li> </ul> <p>Function <code>array()</code> and <code>object()</code> force array and object creation from initializer lists, respectively.</p> </li> <li> <p>Constructs a JSON array value by creating <code>cnt</code> copies of a passed value. In case <code>cnt</code> is <code>0</code>, an empty array is    created.</p> </li> <li> <p>Constructs the JSON value with the contents of the range <code>[first, last)</code>. The semantics depend on the different    types a JSON value can have:</p> <ul> <li>In case of a <code>null</code> type, invalid_iterator.206   is thrown.</li> <li>In case of other primitive types (number, boolean, or string), <code>first</code> must be <code>begin()</code> and <code>last</code> must be   <code>end()</code>. In this case, the value is copied. Otherwise,   <code>invalid_iterator.204</code> is thrown.</li> <li>In case of structured types (array, object), the constructor behaves as similar versions for <code>std::vector</code> or   <code>std::map</code>; that is, a JSON array or object is constructed from the values in the range.</li> </ul> </li> <li> <p>Creates a copy of a given JSON value.</p> </li> <li> <p>Move constructor. Constructs a JSON value with the contents of the given value <code>other</code> using move semantics. It    \"steals\" the resources from <code>other</code> and leaves it as JSON <code>null</code> value.</p> </li> </ol>"},{"location":"api/basic_json/basic_json/#template-parameters","title":"Template parameters","text":"<code>CompatibleType</code> <p>a type such that:</p> <ul> <li><code>CompatibleType</code> is not derived from <code>std::istream</code>,</li> <li><code>CompatibleType</code> is not <code>basic_json</code> (to avoid hijacking copy/move constructors),</li> <li><code>CompatibleType</code> is not a different <code>basic_json</code> type (i.e. with different template arguments)</li> <li><code>CompatibleType</code> is not a <code>basic_json</code> nested type (e.g., <code>json_pointer</code>, <code>iterator</code>, etc.)</li> <li><code>json_serializer&lt;U&gt;</code> (with <code>U = uncvref_t&lt;CompatibleType&gt;</code>) has a <code>to_json(basic_json_t&amp;, CompatibleType&amp;&amp;)</code>    method</li> </ul> <code>BasicJsonType</code>: <p>a type such that:</p> <ul> <li><code>BasicJsonType</code> is a <code>basic_json</code> type.</li> <li><code>BasicJsonType</code> has different template arguments than <code>basic_json_t</code>.</li> </ul> <code>U</code>: <code>uncvref_t&lt;CompatibleType&gt;</code>"},{"location":"api/basic_json/basic_json/#parameters","title":"Parameters","text":"<code>v</code> (in) the type of the value to create <code>val</code> (in) the value to be forwarded to the respective constructor <code>init</code> (in) initializer list with JSON values <code>type_deduction</code> (in) internal parameter; when set to <code>true</code>, the type of the JSON value is deducted from the initializer list <code>init</code>; when set to <code>false</code>, the type provided via <code>manual_type</code> is forced. This mode is used by the functions <code>array(initializer_list_t)</code> and <code>object(initializer_list_t)</code>. <code>manual_type</code> (in) internal parameter; when <code>type_deduction</code> is set to <code>false</code>, the created JSON value will use the provided type (only <code>value_t::array</code> and <code>value_t::object</code> are valid); when <code>type_deduction</code> is set to <code>true</code>, this parameter has no effect <code>cnt</code> (in) the number of JSON copies of <code>val</code> to create <code>first</code> (in) the beginning of the range to copy from (included) <code>last</code> (in) the end of the range to copy from (excluded) <code>other</code> (in) the JSON value to copy/move"},{"location":"api/basic_json/basic_json/#exception-safety","title":"Exception safety","text":"<ol> <li>Strong guarantee: if an exception is thrown, there are no changes to any JSON value.</li> <li>No-throw guarantee: this constructor never throws exceptions.</li> <li>Depends on the called constructor. For types directly supported by the library (i.e., all types for which no    <code>to_json()</code> function was provided), a strong guarantee holds: if an exception is thrown, there are no changes to any    JSON value.</li> <li>Depends on the called constructor. For types directly supported by the library (i.e., all types for which no    <code>to_json()</code> function was provided), a strong guarantee holds: if an exception is thrown, there are no changes to any    JSON value.</li> <li>Strong guarantee: if an exception is thrown, there are no changes to any JSON value.</li> <li>Strong guarantee: if an exception is thrown, there are no changes to any JSON value.</li> <li>Strong guarantee: if an exception is thrown, there are no changes to any JSON value.</li> <li>Strong guarantee: if an exception is thrown, there are no changes to any JSON value.</li> <li>No-throw guarantee: this constructor never throws exceptions.</li> </ol>"},{"location":"api/basic_json/basic_json/#exceptions","title":"Exceptions","text":"<ol> <li>(none)</li> <li>The function does not throw exceptions.</li> <li>(none)</li> <li>(none)</li> <li>The function can throw the following exceptions:<ul> <li>Throws <code>type_error.301</code> if <code>type_deduction</code> is   <code>false</code>, <code>manual_type</code> is <code>value_t::object</code>, but <code>init</code> contains an element which is not a pair whose first   element is a string. In this case, the constructor could not create an object. If <code>type_deduction</code> would have been   <code>true</code>, an array would have been created. See <code>object(initializer_list_t)</code> for an example.</li> </ul> </li> <li>(none)</li> <li>The function can throw the following exceptions:<ul> <li>Throws <code>invalid_iterator.201</code> if iterators <code>first</code>   and <code>last</code> are not compatible (i.e., do not belong to the same JSON value). In this case, the range   <code>[first, last)</code> is undefined.</li> <li>Throws <code>invalid_iterator.204</code> if iterators <code>first</code>   and <code>last</code> belong to a primitive type (number, boolean, or string), but <code>first</code> does not point to the first   element anymore. In this case, the range <code>[first, last)</code> is undefined. See the example code below.</li> <li>Throws <code>invalid_iterator.206</code> if iterators <code>first</code>   and <code>last</code> belong to a <code>null</code> value. In this case, the range <code>[first, last)</code> is undefined.</li> </ul> </li> <li>(none)</li> <li>The function does not throw exceptions.</li> </ol>"},{"location":"api/basic_json/basic_json/#complexity","title":"Complexity","text":"<ol> <li>Constant.</li> <li>Constant.</li> <li>Usually linear in the size of the passed <code>val</code>, also depending on the implementation of the called <code>to_json()</code>    method.</li> <li>Usually linear in the size of the passed <code>val</code>, also depending on the implementation of the called <code>to_json()</code>    method.</li> <li>Linear in the size of the initializer list <code>init</code>.</li> <li>Linear in <code>cnt</code>.</li> <li>Linear in distance between <code>first</code> and <code>last</code>.</li> <li>Linear in the size of <code>other</code>.</li> <li>Constant.</li> </ol>"},{"location":"api/basic_json/basic_json/#notes","title":"Notes","text":"<ul> <li> <p>Overload 5:</p> <p>Empty initializer list</p> <p>When used without parentheses around an empty initializer list, <code>basic_json()</code> is called instead of this function, yielding the JSON <code>null</code> value.</p> </li> <li> <p>Overload 7:</p> <p>Preconditions</p> <ul> <li>Iterators <code>first</code> and <code>last</code> must be initialized. **This precondition is enforced with a   runtime assertion.</li> <li>Range <code>[first, last)</code> is valid. Usually, this precondition cannot be checked efficiently. Only certain edge   cases are detected; see the description of the exceptions above. A violation of this precondition yields   undefined behavior.</li> </ul> <p>Runtime assertion</p> <p>A precondition is enforced with a runtime assertion.</p> </li> <li> <p>Overload 8:</p> <p>Postcondition</p> <p><code>*this == other</code></p> </li> <li> <p>Overload 9:</p> <p>Postconditions</p> <ul> <li><code>`*this</code> has the same value as <code>other</code> before the call.</li> <li><code>other</code> is a JSON <code>null</code> value</li> </ul> </li> </ul>"},{"location":"api/basic_json/basic_json/#examples","title":"Examples","text":"Example: (1) create an empty value with a given type <p>The following code shows the constructor for different <code>value_t</code> values.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create the different JSON values with default values\n    json j_null(json::value_t::null);\n    json j_boolean(json::value_t::boolean);\n    json j_number_integer(json::value_t::number_integer);\n    json j_number_float(json::value_t::number_float);\n    json j_object(json::value_t::object);\n    json j_array(json::value_t::array);\n    json j_string(json::value_t::string);\n\n    // serialize the JSON values\n    std::cout &lt;&lt; j_null &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_boolean &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_number_integer &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_number_float &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_object &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_array &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_string &lt;&lt; '\\n';\n}\n</code></pre> <p>Output:</p> <pre><code>null\nfalse\n0\n0.0\n{}\n[]\n\"\"\n</code></pre> Example: (2) create a <code>null</code> object <p>The following code shows the constructor with and without a null pointer parameter.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // implicitly create a JSON null value\n    json j1;\n\n    // explicitly create a JSON null value\n    json j2(nullptr);\n\n    // serialize the JSON null value\n    std::cout &lt;&lt; j1 &lt;&lt; '\\n' &lt;&lt; j2 &lt;&lt; '\\n';\n}\n</code></pre> <p>Output:</p> <pre><code>null\nnull\n</code></pre> Example: (3) create a JSON value from compatible types <p>The following code shows the constructor with several compatible types.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;deque&gt;\n#include &lt;list&gt;\n#include &lt;forward_list&gt;\n#include &lt;set&gt;\n#include &lt;unordered_map&gt;\n#include &lt;unordered_set&gt;\n#include &lt;valarray&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // ============\n    // object types\n    // ============\n\n    // create an object from an object_t value\n    json::object_t object_value = { {\"one\", 1}, {\"two\", 2} };\n    json j_object_t(object_value);\n\n    // create an object from std::map\n    std::map&lt;std::string, int&gt; c_map\n    {\n        {\"one\", 1}, {\"two\", 2}, {\"three\", 3}\n    };\n    json j_map(c_map);\n\n    // create an object from std::unordered_map\n    std::unordered_map&lt;const char*, double&gt; c_umap\n    {\n        {\"one\", 1.2}, {\"two\", 2.3}, {\"three\", 3.4}\n    };\n    json j_umap(c_umap);\n\n    // create an object from std::multimap\n    std::multimap&lt;std::string, bool&gt; c_mmap\n    {\n        {\"one\", true}, {\"two\", true}, {\"three\", false}, {\"three\", true}\n    };\n    json j_mmap(c_mmap); // only one entry for key \"three\" is used\n\n    // create an object from std::unordered_multimap\n    std::unordered_multimap&lt;std::string, bool&gt; c_ummap\n    {\n        {\"one\", true}, {\"two\", true}, {\"three\", false}, {\"three\", true}\n    };\n    json j_ummap(c_ummap); // only one entry for key \"three\" is used\n\n    // serialize the JSON objects\n    std::cout &lt;&lt; j_object_t &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_map &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_umap &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_mmap &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_ummap &lt;&lt; \"\\n\\n\";\n\n    // ===========\n    // array types\n    // ===========\n\n    // create an array from an array_t value\n    json::array_t array_value = {\"one\", \"two\", 3, 4.5, false};\n    json j_array_t(array_value);\n\n    // create an array from std::vector\n    std::vector&lt;int&gt; c_vector {1, 2, 3, 4};\n    json j_vec(c_vector);\n\n    // create an array from std::valarray\n    std::valarray&lt;short&gt; c_valarray {10, 9, 8, 7};\n    json j_valarray(c_valarray);\n\n    // create an array from std::deque\n    std::deque&lt;double&gt; c_deque {1.2, 2.3, 3.4, 5.6};\n    json j_deque(c_deque);\n\n    // create an array from std::list\n    std::list&lt;bool&gt; c_list {true, true, false, true};\n    json j_list(c_list);\n\n    // create an array from std::forward_list\n    std::forward_list&lt;std::int64_t&gt; c_flist {12345678909876, 23456789098765, 34567890987654, 45678909876543};\n    json j_flist(c_flist);\n\n    // create an array from std::array\n    std::array&lt;unsigned long, 4&gt; c_array {{1, 2, 3, 4}};\n    json j_array(c_array);\n\n    // create an array from std::set\n    std::set&lt;std::string&gt; c_set {\"one\", \"two\", \"three\", \"four\", \"one\"};\n    json j_set(c_set); // only one entry for \"one\" is used\n\n    // create an array from std::unordered_set\n    std::unordered_set&lt;std::string&gt; c_uset {\"one\", \"two\", \"three\", \"four\", \"one\"};\n    json j_uset(c_uset); // only one entry for \"one\" is used\n\n    // create an array from std::multiset\n    std::multiset&lt;std::string&gt; c_mset {\"one\", \"two\", \"one\", \"four\"};\n    json j_mset(c_mset); // both entries for \"one\" are used\n\n    // create an array from std::unordered_multiset\n    std::unordered_multiset&lt;std::string&gt; c_umset {\"one\", \"two\", \"one\", \"four\"};\n    json j_umset(c_umset); // both entries for \"one\" are used\n\n    // serialize the JSON arrays\n    std::cout &lt;&lt; j_array_t &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_vec &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_valarray &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_deque &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_list &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_flist &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_array &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_set &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_uset &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_mset &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_umset &lt;&lt; \"\\n\\n\";\n\n    // ============\n    // string types\n    // ============\n\n    // create string from a string_t value\n    json::string_t string_value = \"The quick brown fox jumps over the lazy dog.\";\n    json j_string_t(string_value);\n\n    // create a JSON string directly from a string literal\n    json j_string_literal(\"The quick brown fox jumps over the lazy dog.\");\n\n    // create string from std::string\n    std::string s_stdstring = \"The quick brown fox jumps over the lazy dog.\";\n    json j_stdstring(s_stdstring);\n\n    // serialize the JSON strings\n    std::cout &lt;&lt; j_string_t &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_string_literal &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_stdstring &lt;&lt; \"\\n\\n\";\n\n    // ============\n    // number types\n    // ============\n\n    // create a JSON number from number_integer_t\n    json::number_integer_t value_integer_t = -42;\n    json j_integer_t(value_integer_t);\n\n    // create a JSON number from number_unsigned_t\n    json::number_integer_t value_unsigned_t = 17;\n    json j_unsigned_t(value_unsigned_t);\n\n    // create a JSON number from an anonymous enum\n    enum { enum_value = 17 };\n    json j_enum(enum_value);\n\n    // create values of different integer types\n    short n_short = 42;\n    int n_int = -23;\n    long n_long = 1024;\n    int_least32_t n_int_least32_t = -17;\n    uint8_t n_uint8_t = 8;\n\n    // create (integer) JSON numbers\n    json j_short(n_short);\n    json j_int(n_int);\n    json j_long(n_long);\n    json j_int_least32_t(n_int_least32_t);\n    json j_uint8_t(n_uint8_t);\n\n    // create values of different floating-point types\n    json::number_float_t v_ok = 3.141592653589793;\n    json::number_float_t v_nan = NAN;\n    json::number_float_t v_infinity = INFINITY;\n\n    // create values of different floating-point types\n    float n_float = 42.23;\n    float n_float_nan = 1.0f / 0.0f;\n    double n_double = 23.42;\n\n    // create (floating point) JSON numbers\n    json j_ok(v_ok);\n    json j_nan(v_nan);\n    json j_infinity(v_infinity);\n    json j_float(n_float);\n    json j_float_nan(n_float_nan);\n    json j_double(n_double);\n\n    // serialize the JSON numbers\n    std::cout &lt;&lt; j_integer_t &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_unsigned_t &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_enum &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_short &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_int &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_long &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_int_least32_t &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_uint8_t &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_ok &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_nan &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_infinity &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_float &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_float_nan &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_double &lt;&lt; \"\\n\\n\";\n\n    // =============\n    // boolean types\n    // =============\n\n    // create boolean values\n    json j_truth = true;\n    json j_falsity = false;\n\n    // serialize the JSON booleans\n    std::cout &lt;&lt; j_truth &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_falsity &lt;&lt; '\\n';\n}\n</code></pre> <p>Output:</p> <pre><code>{\"one\":1,\"two\":2}\n{\"one\":1,\"three\":3,\"two\":2}\n{\"one\":1.2,\"three\":3.4,\"two\":2.3}\n{\"one\":true,\"three\":false,\"two\":true}\n{\"one\":true,\"three\":false,\"two\":true}\n\n[\"one\",\"two\",3,4.5,false]\n[1,2,3,4]\n[10,9,8,7]\n[1.2,2.3,3.4,5.6]\n[true,true,false,true]\n[12345678909876,23456789098765,34567890987654,45678909876543]\n[1,2,3,4]\n[\"four\",\"one\",\"three\",\"two\"]\n[\"four\",\"three\",\"two\",\"one\"]\n[\"four\",\"one\",\"one\",\"two\"]\n[\"four\",\"two\",\"one\",\"one\"]\n\n\"The quick brown fox jumps over the lazy dog.\"\n\"The quick brown fox jumps over the lazy dog.\"\n\"The quick brown fox jumps over the lazy dog.\"\n\n-42\n17\n17\n42\n-23\n1024\n-17\n8\n3.141592653589793\nnull\nnull\n42.22999954223633\nnull\n23.42\n\ntrue\nfalse\n</code></pre> <p>Note the output is platform-dependent.</p> Example: (5) create a container (array or object) from an initializer list <p>The example below shows how JSON values are created from initializer lists.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create JSON values\n    json j_empty_init_list = json({});\n    json j_object = { {\"one\", 1}, {\"two\", 2} };\n    json j_array = {1, 2, 3, 4};\n    json j_nested_object = { {\"one\", {1}}, {\"two\", {1, 2}} };\n    json j_nested_array = { {{1}, \"one\"}, {{1, 2}, \"two\"} };\n\n    // serialize the JSON value\n    std::cout &lt;&lt; j_empty_init_list &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_object &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_array &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_nested_object &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_nested_array &lt;&lt; '\\n';\n}\n</code></pre> <p>Output:</p> <pre><code>{}\n{\"one\":1,\"two\":2}\n[1,2,3,4]\n{\"one\":[1],\"two\":[1,2]}\n[[[1],\"one\"],[[1,2],\"two\"]]\n</code></pre> Example: (6) construct an array with count copies of a given value <p>The following code shows examples for creating arrays with several copies of a given value.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create an array by creating copies of a JSON value\n    json value = \"Hello\";\n    json array_0 = json(0, value);\n    json array_1 = json(1, value);\n    json array_5 = json(5, value);\n\n    // serialize the JSON arrays\n    std::cout &lt;&lt; array_0 &lt;&lt; '\\n';\n    std::cout &lt;&lt; array_1 &lt;&lt; '\\n';\n    std::cout &lt;&lt; array_5 &lt;&lt; '\\n';\n}\n</code></pre> <p>Output:</p> <pre><code>[]\n[\"Hello\"]\n[\"Hello\",\"Hello\",\"Hello\",\"Hello\",\"Hello\"]\n</code></pre> Example: (7) construct a JSON container given an iterator range <p>The example below shows several ways to create JSON values by specifying a subrange with iterators.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create JSON values\n    json j_array = {\"alpha\", \"bravo\", \"charly\", \"delta\", \"easy\"};\n    json j_number = 42;\n    json j_object = {{\"one\", \"eins\"}, {\"two\", \"zwei\"}};\n\n    // create copies using iterators\n    json j_array_range(j_array.begin() + 1, j_array.end() - 2);\n    json j_number_range(j_number.begin(), j_number.end());\n    json j_object_range(j_object.begin(), j_object.find(\"two\"));\n\n    // serialize the values\n    std::cout &lt;&lt; j_array_range &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_number_range &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_object_range &lt;&lt; '\\n';\n\n    // example for an exception\n    try\n    {\n        json j_invalid(j_number.begin() + 1, j_number.end());\n    }\n    catch (const json::invalid_iterator&amp; e)\n    {\n        std::cout &lt;&lt; e.what() &lt;&lt; '\\n';\n    }\n}\n</code></pre> <p>Output:</p> <pre><code>[\"bravo\",\"charly\"]\n42\n{\"one\":\"eins\"}\n[json.exception.invalid_iterator.204] iterators out of range\n</code></pre> Example: (8) copy constructor <p>The following code shows an example for the copy constructor.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create a JSON array\n    json j1 = {\"one\", \"two\", 3, 4.5, false};\n\n    // create a copy\n    json j2(j1);\n\n    // serialize the JSON array\n    std::cout &lt;&lt; j1 &lt;&lt; \" = \" &lt;&lt; j2 &lt;&lt; '\\n';\n    std::cout &lt;&lt; std::boolalpha &lt;&lt; (j1 == j2) &lt;&lt; '\\n';\n}\n</code></pre> <p>Output:</p> <pre><code>[\"one\",\"two\",3,4.5,false] = [\"one\",\"two\",3,4.5,false]\ntrue\n</code></pre> Example: (9) move constructor <p>The code below shows the move constructor explicitly called via <code>std::move</code>.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create a JSON value\n    json a = 23;\n\n    // move contents of a to b\n    json b(std::move(a));\n\n    // serialize the JSON arrays\n    std::cout &lt;&lt; a &lt;&lt; '\\n';\n    std::cout &lt;&lt; b &lt;&lt; '\\n';\n}\n</code></pre> <p>Output:</p> <pre><code>null\n23\n</code></pre>"},{"location":"api/basic_json/basic_json/#version-history","title":"Version history","text":"<ol> <li>Since version 1.0.0.</li> <li>Since version 1.0.0.</li> <li>Since version 2.1.0.</li> <li>Since version 3.2.0.</li> <li>Since version 1.0.0.</li> <li>Since version 1.0.0.</li> <li>Since version 1.0.0.</li> <li>Since version 1.0.0.</li> <li>Since version 1.0.0.</li> </ol>"},{"location":"api/basic_json/begin/","title":"nlohmann::basic_json::begin","text":"<pre><code>iterator begin() noexcept;\nconst_iterator begin() const noexcept;\n</code></pre> <p>Returns an iterator to the first element.</p> <p></p>"},{"location":"api/basic_json/begin/#return-value","title":"Return value","text":"<p>iterator to the first element</p>"},{"location":"api/basic_json/begin/#exception-safety","title":"Exception safety","text":"<p>No-throw guarantee: this member function never throws exceptions.</p>"},{"location":"api/basic_json/begin/#complexity","title":"Complexity","text":"<p>Constant.</p>"},{"location":"api/basic_json/begin/#examples","title":"Examples","text":"Example <p>The following code shows an example for <code>begin()</code>.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create an array value\n    json array = {1, 2, 3, 4, 5};\n\n    // get an iterator to the first element\n    json::iterator it = array.begin();\n\n    // serialize the element that the iterator points to\n    std::cout &lt;&lt; *it &lt;&lt; '\\n';\n}\n</code></pre> <p>Output:</p> <pre><code>1\n</code></pre>"},{"location":"api/basic_json/begin/#version-history","title":"Version history","text":"<ul> <li>Added in version 1.0.0.</li> </ul>"},{"location":"api/basic_json/binary/","title":"nlohmann::basic_json::binary","text":"<pre><code>// (1)\nstatic basic_json binary(const typename binary_t::container_type&amp; init);\nstatic basic_json binary(typename binary_t::container_type&amp;&amp; init);\n\n// (2)\nstatic basic_json binary(const typename binary_t::container_type&amp; init,\n                         std::uint8_t subtype);\nstatic basic_json binary(typename binary_t::container_type&amp;&amp; init,\n                         std::uint8_t subtype);\n</code></pre> <ol> <li>Creates a JSON binary array value from a given binary container.</li> <li>Creates a JSON binary array value from a given binary container with subtype.</li> </ol> <p>Binary values are part of various binary formats, such as CBOR, MessagePack, and BSON. This constructor is used to create a value for serialization to those formats.</p>"},{"location":"api/basic_json/binary/#parameters","title":"Parameters","text":"<code>init</code> (in) container containing bytes to use as a binary type <code>subtype</code> (in) subtype to use in CBOR, MessagePack, and BSON"},{"location":"api/basic_json/binary/#return-value","title":"Return value","text":"<p>JSON binary array value</p>"},{"location":"api/basic_json/binary/#exception-safety","title":"Exception safety","text":"<p>Strong guarantee: if an exception is thrown, there are no changes in the JSON value.</p>"},{"location":"api/basic_json/binary/#complexity","title":"Complexity","text":"<p>Linear in the size of <code>init</code>; constant for <code>typename binary_t::container_type&amp;&amp; init</code> versions.</p>"},{"location":"api/basic_json/binary/#notes","title":"Notes","text":"<p>Note, this function exists because of the difficulty in correctly specifying the correct template overload in the standard value ctor, as both JSON arrays and JSON binary arrays are backed with some form of a <code>std::vector</code>. Because JSON binary arrays are a non-standard extension, it was decided that it would be best to prevent automatic initialization of a binary array type, for backwards compatibility and so it does not happen on accident.</p>"},{"location":"api/basic_json/binary/#examples","title":"Examples","text":"Example <p>The following code shows how to create a binary value.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create a binary vector\n    std::vector&lt;std::uint8_t&gt; vec = {0xCA, 0xFE, 0xBA, 0xBE};\n\n    // create a binary JSON value with subtype 42\n    json j = json::binary(vec, 42);\n\n    // output type and subtype\n    std::cout &lt;&lt; \"type: \" &lt;&lt; j.type_name() &lt;&lt; \", subtype: \" &lt;&lt; j.get_binary().subtype() &lt;&lt; std::endl;\n}\n</code></pre> <p>Output:</p> <pre><code>type: binary, subtype: 42\n</code></pre>"},{"location":"api/basic_json/binary/#version-history","title":"Version history","text":"<ul> <li>Added in version 3.8.0.</li> </ul>"},{"location":"api/basic_json/binary_t/","title":"nlohmann::basic_json::binary_t","text":"<pre><code>using binary_t = byte_container_with_subtype&lt;BinaryType&gt;;\n</code></pre> <p>This type is a type designed to carry binary data that appears in various serialized formats, such as CBOR's Major Type 2, MessagePack's bin, and BSON's generic binary subtype. This type is NOT a part of standard JSON and exists solely for compatibility with these binary types. As such, it is simply defined as an ordered sequence of zero or more byte values.</p> <p>Additionally, as an implementation detail, the subtype of the binary data is carried around as a <code>std::uint64_t</code>, which is compatible with both of the binary data formats that use binary subtyping, (though the specific numbering is incompatible with each other, and it is up to the user to translate between them). The subtype is added to <code>BinaryType</code> via the helper type byte_container_with_subtype.</p> <p>CBOR's RFC 7049 describes this type as:</p> <p>Major type 2: a byte string. The string's length in bytes is represented following the rules for positive integers (major type 0).</p> <p>MessagePack's documentation on the bin type family describes this type as:</p> <p>Bin format family stores a byte array in 2, 3, or 5 bytes of extra bytes in addition to the size of the byte array.</p> <p>BSON's specifications describe several binary types; however, this type is intended to represent the generic binary type which has the description:</p> <p>Generic binary subtype - This is the most commonly used binary subtype and should be the 'default' for drivers and tools.</p> <p>None of these impose any limitations on the internal representation other than the basic unit of storage be some type of array whose parts are decomposable into bytes.</p> <p>The default representation of this binary format is a <code>std::vector&lt;std::uint8_t&gt;</code>, which is a very common way to represent a byte array in modern C++.</p>"},{"location":"api/basic_json/binary_t/#template-parameters","title":"Template parameters","text":"<code>BinaryType</code> container type to store arrays"},{"location":"api/basic_json/binary_t/#notes","title":"Notes","text":""},{"location":"api/basic_json/binary_t/#default-type","title":"Default type","text":"<p>The default values for <code>BinaryType</code> is <code>std::vector&lt;std::uint8_t&gt;</code>.</p>"},{"location":"api/basic_json/binary_t/#storage","title":"Storage","text":"<p>Binary Arrays are stored as pointers in a <code>basic_json</code> type. That is, for any access to array values, a pointer of the type <code>binary_t*</code> must be dereferenced.</p>"},{"location":"api/basic_json/binary_t/#notes-on-subtypes","title":"Notes on subtypes","text":"<ul> <li> <p>CBOR</p> <ul> <li>Binary values are represented as byte strings. Subtypes are written as tags.</li> </ul> </li> <li> <p>MessagePack</p> <ul> <li>If a subtype is given and the binary array contains exactly 1, 2, 4, 8, or 16 elements, the fixext family (fixext1,   fixext2, fixext4, fixext8) is used. For other sizes, the ext family (ext8, ext16, ext32) is used. The subtype is   then added as a signed 8-bit integer.</li> <li>If no subtype is given, the bin family (bin8, bin16, bin32) is used.</li> </ul> </li> <li> <p>BSON</p> <ul> <li>If a subtype is given, it is used and added as an unsigned 8-bit integer.</li> <li>If no subtype is given, the generic binary subtype 0x00 is used.</li> </ul> </li> </ul>"},{"location":"api/basic_json/binary_t/#examples","title":"Examples","text":"Example <p>The following code shows that <code>binary_t</code> is by default, a typedef to <code>nlohmann::byte_container_with_subtype&lt;std::vector&lt;std::uint8_t&gt;&gt;</code>.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;iomanip&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    std::cout &lt;&lt; std::boolalpha &lt;&lt; std::is_same&lt;nlohmann::byte_container_with_subtype&lt;std::vector&lt;std::uint8_t&gt;&gt;, json::binary_t&gt;::value &lt;&lt; std::endl;\n}\n</code></pre> <p>Output:</p> <pre><code>true\n</code></pre>"},{"location":"api/basic_json/binary_t/#see-also","title":"See also","text":"<ul> <li>byte_container_with_subtype</li> </ul>"},{"location":"api/basic_json/binary_t/#version-history","title":"Version history","text":"<ul> <li>Added in version 3.8.0. Changed the type of subtype to <code>std::uint64_t</code> in version 3.10.0.</li> </ul>"},{"location":"api/basic_json/boolean_t/","title":"nlohmann::basic_json::boolean_t","text":"<pre><code>using boolean_t = BooleanType;\n</code></pre> <p>The type used to store JSON booleans.</p> <p>RFC 8259 implicitly describes a boolean as a type which differentiates the two literals <code>true</code> and <code>false</code>.</p> <p>To store objects in C++, a type is defined by the template parameter  <code>BooleanType</code> which chooses the type to use.</p>"},{"location":"api/basic_json/boolean_t/#notes","title":"Notes","text":""},{"location":"api/basic_json/boolean_t/#default-type","title":"Default type","text":"<p>With the default values for <code>BooleanType</code> (<code>bool</code>), the default value for <code>boolean_t</code> is <code>bool</code>.</p>"},{"location":"api/basic_json/boolean_t/#storage","title":"Storage","text":"<p>Boolean values are stored directly inside a <code>basic_json</code> type.</p>"},{"location":"api/basic_json/boolean_t/#examples","title":"Examples","text":"Example <p>The following code shows that <code>boolean_t</code> is by default, a typedef to <code>bool</code>.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;iomanip&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    std::cout &lt;&lt; std::boolalpha &lt;&lt; std::is_same&lt;bool, json::boolean_t&gt;::value &lt;&lt; std::endl;\n}\n</code></pre> <p>Output:</p> <pre><code>true\n</code></pre>"},{"location":"api/basic_json/boolean_t/#version-history","title":"Version history","text":"<ul> <li>Added in version 1.0.0.</li> </ul>"},{"location":"api/basic_json/cbegin/","title":"nlohmann::basic_json::cbegin","text":"<pre><code>const_iterator cbegin() const noexcept;\n</code></pre> <p>Returns an iterator to the first element.</p> <p></p>"},{"location":"api/basic_json/cbegin/#return-value","title":"Return value","text":"<p>iterator to the first element</p>"},{"location":"api/basic_json/cbegin/#exception-safety","title":"Exception safety","text":"<p>No-throw guarantee: this member function never throws exceptions.</p>"},{"location":"api/basic_json/cbegin/#complexity","title":"Complexity","text":"<p>Constant.</p>"},{"location":"api/basic_json/cbegin/#examples","title":"Examples","text":"Example <p>The following code shows an example for <code>cbegin()</code>.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create an array value\n    const json array = {1, 2, 3, 4, 5};\n\n    // get an iterator to the first element\n    json::const_iterator it = array.cbegin();\n\n    // serialize the element that the iterator points to\n    std::cout &lt;&lt; *it &lt;&lt; '\\n';\n}\n</code></pre> <p>Output:</p> <pre><code>1\n</code></pre>"},{"location":"api/basic_json/cbegin/#version-history","title":"Version history","text":"<ul> <li>Added in version 1.0.0.</li> </ul>"},{"location":"api/basic_json/cbor_tag_handler_t/","title":"nlohmann::basic_json::cbor_tag_handler_t","text":"<pre><code>enum class cbor_tag_handler_t\n{\n    error,\n    ignore,\n    store\n};\n</code></pre> <p>This enumeration is used in the <code>from_cbor</code> function to choose how to treat tags:</p> error throw a <code>parse_error</code> exception in case of a tag ignore ignore tags store store tagged values as binary container with subtype (for bytes 0xd8..0xdb)"},{"location":"api/basic_json/cbor_tag_handler_t/#examples","title":"Examples","text":"Example <p>The example below shows how the different values of the <code>cbor_tag_handler_t</code> influence the behavior of <code>from_cbor</code> when reading a tagged byte string.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // tagged byte string\n    std::vector&lt;std::uint8_t&gt; vec = {{0xd8, 0x42, 0x44, 0xcA, 0xfe, 0xba, 0xbe}};\n\n    // cbor_tag_handler_t::error throws\n    try\n    {\n        auto b_throw_on_tag = json::from_cbor(vec, true, true, json::cbor_tag_handler_t::error);\n    }\n    catch (const json::parse_error&amp; e)\n    {\n        std::cout &lt;&lt; e.what() &lt;&lt; std::endl;\n    }\n\n    // cbor_tag_handler_t::ignore ignores the tag\n    auto b_ignore_tag = json::from_cbor(vec, true, true, json::cbor_tag_handler_t::ignore);\n    std::cout &lt;&lt; b_ignore_tag &lt;&lt; std::endl;\n\n    // cbor_tag_handler_t::store stores the tag as binary subtype\n    auto b_store_tag = json::from_cbor(vec, true, true, json::cbor_tag_handler_t::store);\n    std::cout &lt;&lt; b_store_tag &lt;&lt; std::endl;\n}\n</code></pre> <p>Output:</p> <pre><code>[json.exception.parse_error.112] parse error at byte 1: syntax error while parsing CBOR value: invalid byte: 0xD8\n{\"bytes\":[202,254,186,190],\"subtype\":null}\n{\"bytes\":[202,254,186,190],\"subtype\":66}\n</code></pre>"},{"location":"api/basic_json/cbor_tag_handler_t/#version-history","title":"Version history","text":"<ul> <li>Added in version 3.9.0. Added value <code>store</code> in 3.10.0.</li> </ul>"},{"location":"api/basic_json/cend/","title":"nlohmann::basic_json::cend","text":"<pre><code>const_iterator cend() const noexcept;\n</code></pre> <p>Returns an iterator to one past the last element.</p> <p></p>"},{"location":"api/basic_json/cend/#return-value","title":"Return value","text":"<p>iterator one past the last element</p>"},{"location":"api/basic_json/cend/#exception-safety","title":"Exception safety","text":"<p>No-throw guarantee: this member function never throws exceptions.</p>"},{"location":"api/basic_json/cend/#complexity","title":"Complexity","text":"<p>Constant.</p>"},{"location":"api/basic_json/cend/#examples","title":"Examples","text":"Example <p>The following code shows an example for <code>cend()</code>.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create an array value\n    json array = {1, 2, 3, 4, 5};\n\n    // get an iterator to one past the last element\n    json::const_iterator it = array.cend();\n\n    // decrement the iterator to point to the last element\n    --it;\n\n    // serialize the element that the iterator points to\n    std::cout &lt;&lt; *it &lt;&lt; '\\n';\n}\n</code></pre> <p>Output:</p> <pre><code>5\n</code></pre>"},{"location":"api/basic_json/cend/#version-history","title":"Version history","text":"<ul> <li>Added in version 1.0.0.</li> </ul>"},{"location":"api/basic_json/clear/","title":"nlohmann::basic_json::clear","text":"<pre><code>void clear() noexcept;\n</code></pre> <p>Clears the content of a JSON value and resets it to the default value as if <code>basic_json(value_t)</code> would have been called with the current value type from <code>type()</code>:</p> Value type initial value null <code>null</code> boolean <code>false</code> string <code>\"\"</code> number <code>0</code> binary An empty byte vector object <code>{}</code> array <code>[]</code> <p>Has the same effect as calling</p> <pre><code>*this = basic_json(type());\n</code></pre>"},{"location":"api/basic_json/clear/#exception-safety","title":"Exception safety","text":"<p>No-throw guarantee: this function never throws exceptions.</p>"},{"location":"api/basic_json/clear/#complexity","title":"Complexity","text":"<p>Linear in the size of the JSON value.</p>"},{"location":"api/basic_json/clear/#notes","title":"Notes","text":"<p>All iterators, pointers, and references related to this container are invalidated.</p>"},{"location":"api/basic_json/clear/#examples","title":"Examples","text":"Example <p>The example below shows the effect of <code>clear()</code> to different JSON types.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create JSON values\n    json j_null;\n    json j_boolean = true;\n    json j_number_integer = 17;\n    json j_number_float = 23.42;\n    json j_object = {{\"one\", 1}, {\"two\", 2}};\n    json j_array = {1, 2, 4, 8, 16};\n    json j_string = \"Hello, world\";\n\n    // call clear()\n    j_null.clear();\n    j_boolean.clear();\n    j_number_integer.clear();\n    j_number_float.clear();\n    j_object.clear();\n    j_array.clear();\n    j_string.clear();\n\n    // serialize the cleared values()\n    std::cout &lt;&lt; j_null &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_boolean &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_number_integer &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_number_float &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_object &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_array &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_string &lt;&lt; '\\n';\n}\n</code></pre> <p>Output:</p> <pre><code>null\nfalse\n0\n0.0\n{}\n[]\n\"\"\n</code></pre>"},{"location":"api/basic_json/clear/#version-history","title":"Version history","text":"<ul> <li>Added in version 1.0.0.</li> <li>Added support for binary types in version 3.8.0.</li> </ul>"},{"location":"api/basic_json/contains/","title":"nlohmann::basic_json::contains","text":"<pre><code>// (1)\nbool contains(const typename object_t::key_type&amp; key) const;\n\n// (2)\ntemplate&lt;typename KeyType&gt;\nbool contains(KeyType&amp;&amp; key) const;\n\n// (3)\nbool contains(const json_pointer&amp; ptr) const;\n</code></pre> <ol> <li>Check whether an element exists in a JSON object with a key equivalent to <code>key</code>. If the element is not found or the     JSON value is not an object, <code>false</code> is returned.</li> <li>See 1. This overload is only available if <code>KeyType</code> is comparable with <code>typename object_t::key_type</code> and    <code>typename object_comparator_t::is_transparent</code> denotes a type.</li> <li>Check whether the given JSON pointer <code>ptr</code> can be resolved in the current JSON value.</li> </ol>"},{"location":"api/basic_json/contains/#template-parameters","title":"Template parameters","text":"<code>KeyType</code> A type for an object key other than <code>json_pointer</code> that is comparable with <code>string_t</code> using  <code>object_comparator_t</code>. This can also be a string view (C++17)."},{"location":"api/basic_json/contains/#parameters","title":"Parameters","text":"<code>key</code> (in) key value to check its existence. <code>ptr</code> (in) JSON pointer to check its existence."},{"location":"api/basic_json/contains/#return-value","title":"Return value","text":"<ol> <li><code>true</code> if an element with specified <code>key</code> exists. If no such element with such a key is found or the JSON value    is not an object, <code>false</code> is returned.</li> <li>See 1.</li> <li><code>true</code> if the JSON pointer can be resolved to a stored value, <code>false</code> otherwise.</li> </ol>"},{"location":"api/basic_json/contains/#exception-safety","title":"Exception safety","text":"<p>Strong exception safety: if an exception occurs, the original value stays intact.</p>"},{"location":"api/basic_json/contains/#exceptions","title":"Exceptions","text":"<ol> <li>The function does not throw exceptions.</li> <li>The function does not throw exceptions.</li> <li>The function can throw the following exceptions:<ul> <li>Throws <code>parse_error.106</code> if an array index begins with   <code>0</code>.</li> <li>Throws <code>parse_error.109</code> if an array index was not a   number.</li> </ul> </li> </ol>"},{"location":"api/basic_json/contains/#complexity","title":"Complexity","text":"<p>Logarithmic in the size of the JSON object.</p>"},{"location":"api/basic_json/contains/#notes","title":"Notes","text":"<ul> <li>This method always returns <code>false</code> when executed on a JSON type that is not an object.</li> <li>This method can be executed on any JSON value type.</li> </ul> <p>Postconditions</p> <p>If <code>j.contains(x)</code> returns <code>true</code> for a key or JSON pointer <code>x</code>, then it is safe to call <code>j[x]</code>.</p>"},{"location":"api/basic_json/contains/#examples","title":"Examples","text":"Example: (1) check with key <p>The example shows how <code>contains()</code> is used.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\nusing namespace nlohmann::literals;\n\nint main()\n{\n    // create some JSON values\n    json j_object = R\"( {\"key\": \"value\"} )\"_json;\n    json j_array = R\"( [1, 2, 3] )\"_json;\n\n    // call contains\n    std::cout &lt;&lt; std::boolalpha &lt;&lt;\n              \"j_object contains 'key': \" &lt;&lt; j_object.contains(\"key\") &lt;&lt; '\\n' &lt;&lt;\n              \"j_object contains 'another': \" &lt;&lt; j_object.contains(\"another\") &lt;&lt; '\\n' &lt;&lt;\n              \"j_array contains 'key': \" &lt;&lt; j_array.contains(\"key\") &lt;&lt; std::endl;\n}\n</code></pre> <p>Output:</p> <pre><code>j_object contains 'key': true\nj_object contains 'another': false\nj_array contains 'key': false\n</code></pre> Example: (2) check with key using string_view <p>The example shows how <code>contains()</code> is used.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;string_view&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing namespace std::string_view_literals;\nusing json = nlohmann::json;\nusing namespace nlohmann::literals;\n\nint main()\n{\n    // create some JSON values\n    json j_object = R\"( {\"key\": \"value\"} )\"_json;\n    json j_array = R\"( [1, 2, 3] )\"_json;\n\n    // call contains\n    std::cout &lt;&lt; std::boolalpha &lt;&lt;\n              \"j_object contains 'key': \" &lt;&lt; j_object.contains(\"key\"sv) &lt;&lt; '\\n' &lt;&lt;\n              \"j_object contains 'another': \" &lt;&lt; j_object.contains(\"another\"sv) &lt;&lt; '\\n' &lt;&lt;\n              \"j_array contains 'key': \" &lt;&lt; j_array.contains(\"key\"sv) &lt;&lt; std::endl;\n}\n</code></pre> <p>Output:</p> <pre><code>j_object contains 'key': true\nj_object contains 'another': false\nj_array contains 'key': false\n</code></pre> Example: (3) check with JSON pointer <p>The example shows how <code>contains()</code> is used.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\nusing namespace nlohmann::literals;\n\nint main()\n{\n    // create a JSON value\n    json j =\n    {\n        {\"number\", 1}, {\"string\", \"foo\"}, {\"array\", {1, 2}}\n    };\n\n    std::cout &lt;&lt; std::boolalpha\n              &lt;&lt; j.contains(\"/number\"_json_pointer) &lt;&lt; '\\n'\n              &lt;&lt; j.contains(\"/string\"_json_pointer) &lt;&lt; '\\n'\n              &lt;&lt; j.contains(\"/array\"_json_pointer) &lt;&lt; '\\n'\n              &lt;&lt; j.contains(\"/array/1\"_json_pointer) &lt;&lt; '\\n'\n              &lt;&lt; j.contains(\"/array/-\"_json_pointer) &lt;&lt; '\\n'\n              &lt;&lt; j.contains(\"/array/4\"_json_pointer) &lt;&lt; '\\n'\n              &lt;&lt; j.contains(\"/baz\"_json_pointer) &lt;&lt; std::endl;\n\n    try\n    {\n        // try to use an array index with leading '0'\n        j.contains(\"/array/01\"_json_pointer);\n    }\n    catch (const json::parse_error&amp; e)\n    {\n        std::cout &lt;&lt; e.what() &lt;&lt; '\\n';\n    }\n\n    try\n    {\n        // try to use an array index that is not a number\n        j.contains(\"/array/one\"_json_pointer);\n    }\n    catch (const json::parse_error&amp; e)\n    {\n        std::cout &lt;&lt; e.what() &lt;&lt; '\\n';\n    }\n}\n</code></pre> <p>Output:</p> <pre><code>true\ntrue\ntrue\ntrue\nfalse\nfalse\nfalse\n</code></pre>"},{"location":"api/basic_json/contains/#version-history","title":"Version history","text":"<ol> <li>Added in version 3.11.0.</li> <li>Added in version 3.6.0. Extended template <code>KeyType</code> to support comparable types in version 3.11.0.</li> <li>Added in version 3.7.0.</li> </ol>"},{"location":"api/basic_json/count/","title":"nlohmann::basic_json::count","text":"<pre><code>// (1)\nsize_type count(const typename object_t::key_type&amp; key) const;\n\n// (2)\ntemplate&lt;typename KeyType&gt;\nsize_type count(KeyType&amp;&amp; key) const;\n</code></pre> <ol> <li>Returns the number of elements with key <code>key</code>. If <code>ObjectType</code> is the default <code>std::map</code> type, the return value will    always be <code>0</code> (<code>key</code> was not found) or <code>1</code> (<code>key</code> was found).</li> <li>See 1. This overload is only available if <code>KeyType</code> is comparable with <code>typename object_t::key_type</code> and    <code>typename object_comparator_t::is_transparent</code> denotes a type.</li> </ol>"},{"location":"api/basic_json/count/#template-parameters","title":"Template parameters","text":"<code>KeyType</code> A type for an object key other than <code>json_pointer</code> that is comparable with <code>string_t</code> using  <code>object_comparator_t</code>. This can also be a string view (C++17)."},{"location":"api/basic_json/count/#parameters","title":"Parameters","text":"<code>key</code> (in) key value of the element to count."},{"location":"api/basic_json/count/#return-value","title":"Return value","text":"<p>Number of elements with key <code>key</code>. If the JSON value is not an object, the return value will be <code>0</code>.</p>"},{"location":"api/basic_json/count/#exception-safety","title":"Exception safety","text":"<p>Strong exception safety: if an exception occurs, the original value stays intact.</p>"},{"location":"api/basic_json/count/#complexity","title":"Complexity","text":"<p>Logarithmic in the size of the JSON object.</p>"},{"location":"api/basic_json/count/#notes","title":"Notes","text":"<p>This method always returns <code>0</code> when executed on a JSON type that is not an object.</p>"},{"location":"api/basic_json/count/#examples","title":"Examples","text":"Example: (1) count number of elements <p>The example shows how <code>count()</code> is used.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create a JSON object\n    json j_object = {{\"one\", 1}, {\"two\", 2}};\n\n    // call count()\n    auto count_two = j_object.count(\"two\");\n    auto count_three = j_object.count(\"three\");\n\n    // print values\n    std::cout &lt;&lt; \"number of elements with key \\\"two\\\": \" &lt;&lt; count_two &lt;&lt; '\\n';\n    std::cout &lt;&lt; \"number of elements with key \\\"three\\\": \" &lt;&lt; count_three &lt;&lt; '\\n';\n}\n</code></pre> <p>Output:</p> <pre><code>number of elements with key \"two\": 1\nnumber of elements with key \"three\": 0\n</code></pre> Example: (2) count number of elements using string_view <p>The example shows how <code>count()</code> is used.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;string_view&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing namespace std::string_view_literals;\nusing json = nlohmann::json;\n\nint main()\n{\n    // create a JSON object\n    json j_object = {{\"one\", 1}, {\"two\", 2}};\n\n    // call count()\n    auto count_two = j_object.count(\"two\"sv);\n    auto count_three = j_object.count(\"three\"sv);\n\n    // print values\n    std::cout &lt;&lt; \"number of elements with key \\\"two\\\": \" &lt;&lt; count_two &lt;&lt; '\\n';\n    std::cout &lt;&lt; \"number of elements with key \\\"three\\\": \" &lt;&lt; count_three &lt;&lt; '\\n';\n}\n</code></pre> <p>Output:</p> <pre><code>number of elements with key \"two\": 1\nnumber of elements with key \"three\": 0\n</code></pre>"},{"location":"api/basic_json/count/#version-history","title":"Version history","text":"<ol> <li>Added in version 3.11.0.</li> <li>Added in version 1.0.0. Changed parameter <code>key</code> type to <code>KeyType&amp;&amp;</code> in version 3.11.0.</li> </ol>"},{"location":"api/basic_json/crbegin/","title":"nlohmann::basic_json::crbegin","text":"<pre><code>const_reverse_iterator crbegin() const noexcept;\n</code></pre> <p>Returns an iterator to the reverse-beginning; that is, the last element.</p> <p></p>"},{"location":"api/basic_json/crbegin/#return-value","title":"Return value","text":"<p>reverse iterator to the first element</p>"},{"location":"api/basic_json/crbegin/#exception-safety","title":"Exception safety","text":"<p>No-throw guarantee: this member function never throws exceptions.</p>"},{"location":"api/basic_json/crbegin/#complexity","title":"Complexity","text":"<p>Constant.</p>"},{"location":"api/basic_json/crbegin/#examples","title":"Examples","text":"Example <p>The following code shows an example for <code>crbegin()</code>.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create an array value\n    json array = {1, 2, 3, 4, 5};\n\n    // get an iterator to the reverse-beginning\n    json::const_reverse_iterator it = array.crbegin();\n\n    // serialize the element that the iterator points to\n    std::cout &lt;&lt; *it &lt;&lt; '\\n';\n}\n</code></pre> <p>Output:</p> <pre><code>5\n</code></pre>"},{"location":"api/basic_json/crbegin/#version-history","title":"Version history","text":"<ul> <li>Added in version 1.0.0.</li> </ul>"},{"location":"api/basic_json/crend/","title":"nlohmann::basic_json::crend","text":"<pre><code>const_reverse_iterator crend() const noexcept;\n</code></pre> <p>Returns an iterator to the reverse-end; that is, one before the first element. This element acts as a placeholder, attempting to access it results in undefined behavior.</p> <p></p>"},{"location":"api/basic_json/crend/#return-value","title":"Return value","text":"<p>reverse iterator to the element following the last element</p>"},{"location":"api/basic_json/crend/#exception-safety","title":"Exception safety","text":"<p>No-throw guarantee: this member function never throws exceptions.</p>"},{"location":"api/basic_json/crend/#complexity","title":"Complexity","text":"<p>Constant.</p>"},{"location":"api/basic_json/crend/#examples","title":"Examples","text":"Example <p>The following code shows an example for <code>eend()</code>.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create an array value\n    json array = {1, 2, 3, 4, 5};\n\n    // get an iterator to the reverse-end\n    json::const_reverse_iterator it = array.crend();\n\n    // increment the iterator to point to the first element\n    --it;\n\n    // serialize the element that the iterator points to\n    std::cout &lt;&lt; *it &lt;&lt; '\\n';\n}\n</code></pre> <p>Output:</p> <pre><code>1\n</code></pre>"},{"location":"api/basic_json/crend/#version-history","title":"Version history","text":"<ul> <li>Added in version 1.0.0.</li> </ul>"},{"location":"api/basic_json/default_object_comparator_t/","title":"nlohmann::basic_json::default_object_comparator_t","text":"<pre><code>using default_object_comparator_t = std::less&lt;StringType&gt;;  // until C++14\n\nusing default_object_comparator_t = std::less&lt;&gt;;            // since C++14\n</code></pre> <p>The default comparator used by <code>object_t</code>.</p> <p>Since C++14 a transparent comparator is used which prevents unnecessary string construction when looking up a key in an object.</p> <p>The actual comparator used depends on <code>object_t</code> and can be obtained via <code>object_comparator_t</code>.</p>"},{"location":"api/basic_json/default_object_comparator_t/#examples","title":"Examples","text":"Example <p>The example below demonstrates the default comparator.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    std::cout &lt;&lt; std::boolalpha\n              &lt;&lt; \"one &lt; two : \" &lt;&lt; json::default_object_comparator_t{}(\"one\", \"two\") &lt;&lt; \"\\n\"\n              &lt;&lt; \"three &lt; four : \" &lt;&lt; json::default_object_comparator_t{}(\"three\", \"four\") &lt;&lt; std::endl;\n}\n</code></pre> <p>Output:</p> <pre><code>one &lt; two : true\nthree &lt; four : false\n</code></pre>"},{"location":"api/basic_json/default_object_comparator_t/#version-history","title":"Version history","text":"<ul> <li>Added in version 3.11.0.</li> </ul>"},{"location":"api/basic_json/diff/","title":"nlohmann::basic_json::diff","text":"<pre><code>static basic_json diff(const basic_json&amp; source,\n                       const basic_json&amp; target);\n</code></pre> <p>Creates a JSON Patch so that value <code>source</code> can be changed into the value <code>target</code> by calling <code>patch</code> function.</p> <p>For two JSON values <code>source</code> and <code>target</code>, the following code yields always <code>true</code>: <pre><code>source.patch(diff(source, target)) == target;\n</code></pre></p>"},{"location":"api/basic_json/diff/#parameters","title":"Parameters","text":"<code>source</code> (in) JSON value to compare from <code>target</code> (in) JSON value to compare against"},{"location":"api/basic_json/diff/#return-value","title":"Return value","text":"<p>a JSON patch to convert the <code>source</code> to <code>target</code></p>"},{"location":"api/basic_json/diff/#exception-safety","title":"Exception safety","text":"<p>Strong guarantee: if an exception is thrown, there are no changes in the JSON value.</p>"},{"location":"api/basic_json/diff/#complexity","title":"Complexity","text":"<p>Linear in the lengths of <code>source</code> and <code>target</code>.</p>"},{"location":"api/basic_json/diff/#notes","title":"Notes","text":"<p>Currently, only <code>remove</code>, <code>add</code>, and <code>replace</code> operations are generated.</p>"},{"location":"api/basic_json/diff/#examples","title":"Examples","text":"Example <p>The following code shows how a JSON patch is created as a diff for two JSON values.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;iomanip&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\nusing namespace nlohmann::literals;\n\nint main()\n{\n    // the source document\n    json source = R\"(\n        {\n            \"baz\": \"qux\",\n            \"foo\": \"bar\"\n        }\n    )\"_json;\n\n    // the target document\n    json target = R\"(\n        {\n            \"baz\": \"boo\",\n            \"hello\": [\n                \"world\"\n            ]\n        }\n    )\"_json;\n\n    // create the patch\n    json patch = json::diff(source, target);\n\n    // roundtrip\n    json patched_source = source.patch(patch);\n\n    // output patch and roundtrip result\n    std::cout &lt;&lt; std::setw(4) &lt;&lt; patch &lt;&lt; \"\\n\\n\"\n              &lt;&lt; std::setw(4) &lt;&lt; patched_source &lt;&lt; std::endl;\n}\n</code></pre> <p>Output:</p> <pre><code>[\n    {\n        \"op\": \"replace\",\n        \"path\": \"/baz\",\n        \"value\": \"boo\"\n    },\n    {\n        \"op\": \"remove\",\n        \"path\": \"/foo\"\n    },\n    {\n        \"op\": \"add\",\n        \"path\": \"/hello\",\n        \"value\": [\n            \"world\"\n        ]\n    }\n]\n\n{\n    \"baz\": \"boo\",\n    \"hello\": [\n        \"world\"\n    ]\n}\n</code></pre>"},{"location":"api/basic_json/diff/#see-also","title":"See also","text":"<ul> <li>RFC 6902 (JSON Patch)</li> </ul>"},{"location":"api/basic_json/diff/#version-history","title":"Version history","text":"<ul> <li>Added in version 2.0.0.</li> </ul>"},{"location":"api/basic_json/dump/","title":"nlohmann::basic_json::dump","text":"<pre><code>string_t dump(const int indent = -1,\n              const char indent_char = ' ',\n              const bool ensure_ascii = false,\n              const error_handler_t error_handler = error_handler_t::strict) const;\n</code></pre> <p>Serialization function for JSON values. The function tries to mimic Python's <code>json.dumps()</code> function, and currently supports its <code>indent</code> and <code>ensure_ascii</code> parameters.</p>"},{"location":"api/basic_json/dump/#parameters","title":"Parameters","text":"<code>indent</code> (in) If <code>indent</code> is nonnegative, then array elements and object members will be pretty-printed with that indent level. An indent level of <code>0</code> will only insert newlines. <code>-1</code> (the default) selects the most compact representation. <code>indent_char</code> (in) The character to use for indentation if <code>indent</code> is greater than <code>0</code>. The default is <code></code> (space). <code>ensure_ascii</code> (in) If <code>ensure_ascii</code> is true, all non-ASCII characters in the output are escaped with <code>\\uXXXX</code> sequences, and the result consists of ASCII characters only. <code>error_handler</code> (in) how to react on decoding errors; there are three possible values (see <code>error_handler_t</code>: <code>strict</code> (throws and exception in case a decoding error occurs; default), <code>replace</code> (replace invalid UTF-8 sequences with U+FFFD), and <code>ignore</code> (ignore invalid UTF-8 sequences during serialization; all bytes are copied to the output unchanged))."},{"location":"api/basic_json/dump/#return-value","title":"Return value","text":"<p>string containing the serialization of the JSON value</p>"},{"location":"api/basic_json/dump/#exception-safety","title":"Exception safety","text":"<p>Strong guarantee: if an exception is thrown, there are no changes to any JSON value.</p>"},{"location":"api/basic_json/dump/#exceptions","title":"Exceptions","text":"<p>Throws <code>type_error.316</code> if a string stored inside the JSON value is not UTF-8 encoded and <code>error_handler</code> is set to <code>strict</code></p>"},{"location":"api/basic_json/dump/#complexity","title":"Complexity","text":"<p>Linear.</p>"},{"location":"api/basic_json/dump/#notes","title":"Notes","text":"<p>Binary values are serialized as an object containing two keys:</p> <ul> <li>\"bytes\": an array of bytes as integers</li> <li>\"subtype\": the subtype as integer or <code>null</code> if the binary has no subtype</li> </ul>"},{"location":"api/basic_json/dump/#examples","title":"Examples","text":"Example <p>The following example shows the effect of different <code>indent</code>, <code>indent_char</code>, and <code>ensure_ascii</code> parameters to the result of the serialization.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create JSON values\n    json j_object = {{\"one\", 1}, {\"two\", 2}};\n    json j_array = {1, 2, 4, 8, 16};\n    json j_string = \"Hell\u00f6 \ud83d\ude00!\";\n\n    // call dump()\n    std::cout &lt;&lt; \"objects:\" &lt;&lt; '\\n'\n              &lt;&lt; j_object.dump() &lt;&lt; \"\\n\\n\"\n              &lt;&lt; j_object.dump(-1) &lt;&lt; \"\\n\\n\"\n              &lt;&lt; j_object.dump(0) &lt;&lt; \"\\n\\n\"\n              &lt;&lt; j_object.dump(4) &lt;&lt; \"\\n\\n\"\n              &lt;&lt; j_object.dump(1, '\\t') &lt;&lt; \"\\n\\n\";\n\n    std::cout &lt;&lt; \"arrays:\" &lt;&lt; '\\n'\n              &lt;&lt; j_array.dump() &lt;&lt; \"\\n\\n\"\n              &lt;&lt; j_array.dump(-1) &lt;&lt; \"\\n\\n\"\n              &lt;&lt; j_array.dump(0) &lt;&lt; \"\\n\\n\"\n              &lt;&lt; j_array.dump(4) &lt;&lt; \"\\n\\n\"\n              &lt;&lt; j_array.dump(1, '\\t') &lt;&lt; \"\\n\\n\";\n\n    std::cout &lt;&lt; \"strings:\" &lt;&lt; '\\n'\n              &lt;&lt; j_string.dump() &lt;&lt; '\\n'\n              &lt;&lt; j_string.dump(-1, ' ', true) &lt;&lt; '\\n';\n\n    // create JSON value with invalid UTF-8 byte sequence\n    json j_invalid = \"\u00e4\\xA9\u00fc\";\n    try\n    {\n        std::cout &lt;&lt; j_invalid.dump() &lt;&lt; std::endl;\n    }\n    catch (const json::type_error&amp; e)\n    {\n        std::cout &lt;&lt; e.what() &lt;&lt; std::endl;\n    }\n\n    std::cout &lt;&lt; \"string with replaced invalid characters: \"\n              &lt;&lt; j_invalid.dump(-1, ' ', false, json::error_handler_t::replace)\n              &lt;&lt; \"\\nstring with ignored invalid characters: \"\n              &lt;&lt; j_invalid.dump(-1, ' ', false, json::error_handler_t::ignore)\n              &lt;&lt; '\\n';\n}\n</code></pre> <p>Output:</p> <pre><code>objects:\n{\"one\":1,\"two\":2}\n\n{\"one\":1,\"two\":2}\n\n{\n\"one\": 1,\n\"two\": 2\n}\n\n{\n    \"one\": 1,\n    \"two\": 2\n}\n\n{\n    \"one\": 1,\n    \"two\": 2\n}\n\narrays:\n[1,2,4,8,16]\n\n[1,2,4,8,16]\n\n[\n1,\n2,\n4,\n8,\n16\n]\n\n[\n    1,\n    2,\n    4,\n    8,\n    16\n]\n\n[\n    1,\n    2,\n    4,\n    8,\n    16\n]\n\nstrings:\n\"Hell\u00f6 \ud83d\ude00!\"\n\"Hell\\u00f6 \\ud83d\\ude00!\"\n[json.exception.type_error.316] invalid UTF-8 byte at index 2: 0xA9\nstring with replaced invalid characters: \"\u00e4\ufffd\u00fc\"\nstring with ignored invalid characters: \"\u00e4\u00fc\"\n</code></pre>"},{"location":"api/basic_json/dump/#version-history","title":"Version history","text":"<ul> <li>Added in version 1.0.0.</li> <li>Indentation character <code>indent_char</code>, option <code>ensure_ascii</code> and exceptions added in version 3.0.0.</li> <li>Error handlers added in version 3.4.0.</li> <li>Serialization of binary values added in version 3.8.0.</li> </ul>"},{"location":"api/basic_json/emplace/","title":"nlohmann::basic_json::emplace","text":"<pre><code>template&lt;class... Args&gt;\nstd::pair&lt;iterator, bool&gt; emplace(Args&amp;&amp; ... args);\n</code></pre> <p>Inserts a new element into a JSON object constructed in-place with the given <code>args</code> if there is no element with the key in the container. If the function is called on a JSON null value, an empty object is created before appending the value created from <code>args</code>.</p>"},{"location":"api/basic_json/emplace/#template-parameters","title":"Template parameters","text":"<code>Args</code> compatible types to create a <code>basic_json</code> object"},{"location":"api/basic_json/emplace/#iterator-invalidation","title":"Iterator invalidation","text":"<p>For <code>ordered_json</code>, adding a value to an object can yield a reallocation, in which case all iterators (including the <code>end()</code> iterator) and all references to the elements are invalidated.</p>"},{"location":"api/basic_json/emplace/#parameters","title":"Parameters","text":"<code>args</code> (in) arguments to forward to a constructor of <code>basic_json</code>"},{"location":"api/basic_json/emplace/#return-value","title":"Return value","text":"<p>a pair consisting of an iterator to the inserted element, or the already-existing element if no insertion happened, and a <code>bool</code> denoting whether the insertion took place.</p>"},{"location":"api/basic_json/emplace/#exceptions","title":"Exceptions","text":"<p>Throws <code>type_error.311</code> when called on a type other than JSON object or <code>null</code>; example: <code>\"cannot use emplace() with number\"</code></p>"},{"location":"api/basic_json/emplace/#complexity","title":"Complexity","text":"<p>Logarithmic in the size of the container, O(log(<code>size()</code>)).</p>"},{"location":"api/basic_json/emplace/#examples","title":"Examples","text":"Example <p>The example shows how <code>emplace()</code> can be used to add elements to a JSON object. Note how the <code>null</code> value was silently converted to a JSON object. Further note how no value is added if there was already one value stored with the same key.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create JSON values\n    json object = {{\"one\", 1}, {\"two\", 2}};\n    json null;\n\n    // print values\n    std::cout &lt;&lt; object &lt;&lt; '\\n';\n    std::cout &lt;&lt; null &lt;&lt; '\\n';\n\n    // add values\n    auto res1 = object.emplace(\"three\", 3);\n    null.emplace(\"A\", \"a\");\n    null.emplace(\"B\", \"b\");\n\n    // the following call will not add an object, because there is already\n    // a value stored at key \"B\"\n    auto res2 = null.emplace(\"B\", \"c\");\n\n    // print values\n    std::cout &lt;&lt; object &lt;&lt; '\\n';\n    std::cout &lt;&lt; *res1.first &lt;&lt; \" \" &lt;&lt; std::boolalpha &lt;&lt; res1.second &lt;&lt; '\\n';\n\n    std::cout &lt;&lt; null &lt;&lt; '\\n';\n    std::cout &lt;&lt; *res2.first &lt;&lt; \" \" &lt;&lt; std::boolalpha &lt;&lt; res2.second &lt;&lt; '\\n';\n}\n</code></pre> <p>Output:</p> <pre><code>{\"one\":1,\"two\":2}\nnull\n{\"one\":1,\"three\":3,\"two\":2}\n3 true\n{\"A\":\"a\",\"B\":\"b\"}\n\"b\" false\n</code></pre>"},{"location":"api/basic_json/emplace/#version-history","title":"Version history","text":"<ul> <li>Since version 2.0.8.</li> </ul>"},{"location":"api/basic_json/emplace_back/","title":"nlohmann::basic_json::emplace_back","text":"<pre><code>template&lt;class... Args&gt;\nreference emplace_back(Args&amp;&amp; ... args);\n</code></pre> <p>Creates a JSON value from the passed parameters <code>args</code> to the end of the JSON value. If the function is called on a JSON <code>null</code> value, an empty array is created before appending the value created from <code>args</code>.</p>"},{"location":"api/basic_json/emplace_back/#template-parameters","title":"Template parameters","text":"<code>Args</code> compatible types to create a <code>basic_json</code> object"},{"location":"api/basic_json/emplace_back/#iterator-invalidation","title":"Iterator invalidation","text":"<p>By adding an element to the end of the array, a reallocation can happen, in which case all iterators (including the <code>end()</code> iterator) and all references to the elements are invalidated. Otherwise, only the <code>end()</code> iterator is invalidated.</p>"},{"location":"api/basic_json/emplace_back/#parameters","title":"Parameters","text":"<code>args</code> (in) arguments to forward to a constructor of <code>basic_json</code>"},{"location":"api/basic_json/emplace_back/#return-value","title":"Return value","text":"<p>reference to the inserted element</p>"},{"location":"api/basic_json/emplace_back/#exceptions","title":"Exceptions","text":"<p>Throws <code>type_error.311</code> when called on a type other than JSON array or <code>null</code>; example: <code>\"cannot use emplace_back() with number\"</code></p>"},{"location":"api/basic_json/emplace_back/#complexity","title":"Complexity","text":"<p>Amortized constant.</p>"},{"location":"api/basic_json/emplace_back/#examples","title":"Examples","text":"Example <p>The example shows how <code>emplace_back()</code> can be used to add elements to a JSON array. Note how the <code>null</code> value was silently converted to a JSON array.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create JSON values\n    json array = {1, 2, 3, 4, 5};\n    json null;\n\n    // print values\n    std::cout &lt;&lt; array &lt;&lt; '\\n';\n    std::cout &lt;&lt; null &lt;&lt; '\\n';\n\n    // add values\n    array.emplace_back(6);\n    null.emplace_back(\"first\");\n    null.emplace_back(3, \"second\");\n\n    // print values\n    std::cout &lt;&lt; array &lt;&lt; '\\n';\n    std::cout &lt;&lt; null &lt;&lt; '\\n';\n}\n</code></pre> <p>Output:</p> <pre><code>[1,2,3,4,5]\nnull\n[1,2,3,4,5,6]\n[\"first\",[\"second\",\"second\",\"second\"]]\n</code></pre>"},{"location":"api/basic_json/emplace_back/#see-also","title":"See also","text":"<ul> <li>operator+= add a value to an array/object</li> <li>push_back add a value to an array/object</li> </ul>"},{"location":"api/basic_json/emplace_back/#version-history","title":"Version history","text":"<ul> <li>Since version 2.0.8.</li> <li>Returns reference since 3.7.0.</li> </ul>"},{"location":"api/basic_json/empty/","title":"nlohmann::basic_json::empty","text":"<pre><code>bool empty() const noexcept;\n</code></pre> <p>Checks if a JSON value has no elements (i.e., whether its <code>size()</code> is <code>0</code>).</p>"},{"location":"api/basic_json/empty/#return-value","title":"Return value","text":"<p>The return value depends on the different types and is defined as follows:</p> Value type return value null <code>true</code> boolean <code>false</code> string <code>false</code> number <code>false</code> binary <code>false</code> object result of function <code>object_t::empty()</code> array result of function <code>array_t::empty()</code>"},{"location":"api/basic_json/empty/#exception-safety","title":"Exception safety","text":"<p>No-throw guarantee: this function never throws exceptions.</p>"},{"location":"api/basic_json/empty/#complexity","title":"Complexity","text":"<p>Constant, as long as <code>array_t</code> and <code>object_t</code> satisfy the Container concept; that is, their <code>empty()</code> functions have constant complexity.</p>"},{"location":"api/basic_json/empty/#possible-implementation","title":"Possible implementation","text":"<pre><code>bool empty() const noexcept\n{\n    return size() == 0;\n}\n</code></pre>"},{"location":"api/basic_json/empty/#notes","title":"Notes","text":"<p>This function does not return whether a string stored as JSON value is empty -- it returns whether the JSON container itself is empty which is <code>false</code> in the case of a string.</p>"},{"location":"api/basic_json/empty/#examples","title":"Examples","text":"Example <p>The following code uses <code>empty()</code> to check if a JSON object contains any elements.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create JSON values\n    json j_null;\n    json j_boolean = true;\n    json j_number_integer = 17;\n    json j_number_float = 23.42;\n    json j_object = {{\"one\", 1}, {\"two\", 2}};\n    json j_object_empty(json::value_t::object);\n    json j_array = {1, 2, 4, 8, 16};\n    json j_array_empty(json::value_t::array);\n    json j_string = \"Hello, world\";\n\n    // call empty()\n    std::cout &lt;&lt; std::boolalpha;\n    std::cout &lt;&lt; j_null.empty() &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_boolean.empty() &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_number_integer.empty() &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_number_float.empty() &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_object.empty() &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_object_empty.empty() &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_array.empty() &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_array_empty.empty() &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_string.empty() &lt;&lt; '\\n';\n}\n</code></pre> <p>Output:</p> <pre><code>true\nfalse\nfalse\nfalse\nfalse\ntrue\nfalse\ntrue\nfalse\n</code></pre>"},{"location":"api/basic_json/empty/#version-history","title":"Version history","text":"<ul> <li>Added in version 1.0.0.</li> <li>Extended to return <code>false</code> for binary types in version 3.8.0.</li> </ul>"},{"location":"api/basic_json/end/","title":"nlohmann::basic_json::end","text":"<pre><code>iterator end() noexcept;\nconst_iterator end() const noexcept;\n</code></pre> <p>Returns an iterator to one past the last element.</p> <p></p>"},{"location":"api/basic_json/end/#return-value","title":"Return value","text":"<p>iterator one past the last element</p>"},{"location":"api/basic_json/end/#exception-safety","title":"Exception safety","text":"<p>No-throw guarantee: this member function never throws exceptions.</p>"},{"location":"api/basic_json/end/#complexity","title":"Complexity","text":"<p>Constant.</p>"},{"location":"api/basic_json/end/#examples","title":"Examples","text":"Example <p>The following code shows an example for <code>end()</code>.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create an array value\n    json array = {1, 2, 3, 4, 5};\n\n    // get an iterator to one past the last element\n    json::iterator it = array.end();\n\n    // decrement the iterator to point to the last element\n    --it;\n\n    // serialize the element that the iterator points to\n    std::cout &lt;&lt; *it &lt;&lt; '\\n';\n}\n</code></pre> <p>Output:</p> <pre><code>5\n</code></pre>"},{"location":"api/basic_json/end/#version-history","title":"Version history","text":"<ul> <li>Added in version 1.0.0.</li> </ul>"},{"location":"api/basic_json/end_pos/","title":"nlohmann::basic_json::end_pos","text":"<pre><code>#if JSON_DIAGNOSTIC_POSITIONS\nconstexpr std::size_t end_pos() const noexcept;\n#endif\n</code></pre> <p>Returns the position immediately following the last character of the JSON string from which the value was parsed from.</p> JSON type return value object position after the closing <code>}</code> array position after the closing <code>]</code> string position after the closing <code>\"</code> number position after the last character boolean position after <code>e</code> null position after <code>l</code>"},{"location":"api/basic_json/end_pos/#return-value","title":"Return value","text":"<p>the position of the character following the last character of the given value in the parsed JSON string, if the value was created by the <code>parse</code> function, or <code>std::string::npos</code> if the value was constructed otherwise</p>"},{"location":"api/basic_json/end_pos/#exception-safety","title":"Exception safety","text":"<p>No-throw guarantee: this member function never throws exceptions.</p>"},{"location":"api/basic_json/end_pos/#complexity","title":"Complexity","text":"<p>Constant.</p>"},{"location":"api/basic_json/end_pos/#notes","title":"Notes","text":"<p>Note</p> <p>The function is only available if macro <code>JSON_DIAGNOSTIC_POSITIONS</code> has been defined to <code>1</code> before including the library header.</p> <p>Invalidation</p> <p>The returned positions are only valid as long as the JSON value is not changed. The positions are not updated when the JSON value is changed.</p>"},{"location":"api/basic_json/end_pos/#examples","title":"Examples","text":"Example <pre><code>#include &lt;iostream&gt;\n\n#define JSON_DIAGNOSTIC_POSITIONS 1\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    std::string json_string = R\"(\n    {\n        \"address\": {\n            \"street\": \"Fake Street\",\n            \"housenumber\": 1\n        }\n    }\n    )\";\n    json j = json::parse(json_string);\n\n    std::cout &lt;&lt; \"Root diagnostic positions: \\n\";\n    std::cout &lt;&lt; \"\\tstart_pos: \" &lt;&lt; j.start_pos() &lt;&lt; '\\n';\n    std::cout &lt;&lt; \"\\tend_pos:\" &lt;&lt; j.end_pos() &lt;&lt; \"\\n\";\n    std::cout &lt;&lt; \"Original string: \\n\";\n    std::cout &lt;&lt; \"{\\n        \\\"address\\\": {\\n            \\\"street\\\": \\\"Fake Street\\\",\\n            \\\"housenumber\\\": 1\\n        }\\n    }\" &lt;&lt; \"\\n\";\n    std::cout &lt;&lt; \"Parsed string: \\n\";\n    std::cout &lt;&lt; json_string.substr(j.start_pos(), j.end_pos() - j.start_pos()) &lt;&lt; \"\\n\\n\";\n\n    std::cout &lt;&lt; \"address diagnostic positions: \\n\";\n    std::cout &lt;&lt; \"\\tstart_pos:\" &lt;&lt; j[\"address\"].start_pos() &lt;&lt; '\\n';\n    std::cout &lt;&lt; \"\\tend_pos:\" &lt;&lt; j[\"address\"].end_pos() &lt;&lt; \"\\n\\n\";\n    std::cout &lt;&lt; \"Original string: \\n\";\n    std::cout &lt;&lt; \"{            \\\"street\\\": \\\"Fake Street\\\",\\n            \\\"housenumber\\\": 1\\n        }\" &lt;&lt; \"\\n\";\n    std::cout &lt;&lt; \"Parsed string: \\n\";\n    std::cout &lt;&lt; json_string.substr(j[\"address\"].start_pos(), j[\"address\"].end_pos() - j[\"address\"].start_pos()) &lt;&lt; \"\\n\\n\";\n\n    std::cout &lt;&lt; \"street diagnostic positions: \\n\";\n    std::cout &lt;&lt; \"\\tstart_pos:\" &lt;&lt; j[\"address\"][\"street\"].start_pos() &lt;&lt; '\\n';\n    std::cout &lt;&lt; \"\\tend_pos:\" &lt;&lt; j[\"address\"][\"street\"].end_pos() &lt;&lt; \"\\n\\n\";\n    std::cout &lt;&lt; \"Original string: \\n\";\n    std::cout &lt;&lt; \"\\\"Fake Street\\\"\" &lt;&lt; \"\\n\";\n    std::cout &lt;&lt; \"Parsed string: \\n\";\n    std::cout &lt;&lt; json_string.substr(j[\"address\"][\"street\"].start_pos(), j[\"address\"][\"street\"].end_pos() - j[\"address\"][\"street\"].start_pos()) &lt;&lt; \"\\n\\n\";\n\n    std::cout &lt;&lt; \"housenumber diagnostic positions: \\n\";\n    std::cout &lt;&lt; \"\\tstart_pos:\" &lt;&lt; j[\"address\"][\"housenumber\"].start_pos() &lt;&lt; '\\n';\n    std::cout &lt;&lt; \"\\tend_pos:\" &lt;&lt; j[\"address\"][\"housenumber\"].end_pos() &lt;&lt; \"\\n\\n\";\n    std::cout &lt;&lt; \"Original string: \\n\";\n    std::cout &lt;&lt; \"1\" &lt;&lt; \"\\n\";\n    std::cout &lt;&lt; \"Parsed string: \\n\";\n    std::cout &lt;&lt; json_string.substr(j[\"address\"][\"housenumber\"].start_pos(), j[\"address\"][\"housenumber\"].end_pos() - j[\"address\"][\"housenumber\"].start_pos()) &lt;&lt; \"\\n\\n\";\n}\n</code></pre> <p>Output:</p> <pre><code>Root diagnostic positions: \n    start_pos: 5\n    end_pos:109\nOriginal string: \n{\n        \"address\": {\n            \"street\": \"Fake Street\",\n            \"housenumber\": 1\n        }\n    }\nParsed string: \n{\n        \"address\": {\n            \"street\": \"Fake Street\",\n            \"housenumber\": 1\n        }\n    }\n\naddress diagnostic positions: \n    start_pos:26\n    end_pos:103\n\nOriginal string: \n{            \"street\": \"Fake Street\",\n            \"housenumber\": 1\n        }\nParsed string: \n{\n            \"street\": \"Fake Street\",\n            \"housenumber\": 1\n        }\n\nstreet diagnostic positions: \n    start_pos:50\n    end_pos:63\n\nOriginal string: \n\"Fake Street\"\nParsed string: \n\"Fake Street\"\n\nhousenumber diagnostic positions: \n    start_pos:92\n    end_pos:93\n\nOriginal string: \n1\nParsed string: \n1\n</code></pre> <p>The output shows the start/end positions of all the objects and fields in the JSON string.</p>"},{"location":"api/basic_json/end_pos/#see-also","title":"See also","text":"<ul> <li>start_pos to access the start position</li> <li>JSON_DIAGNOSTIC_POSITIONS for an overview of the diagnostic positions</li> </ul>"},{"location":"api/basic_json/end_pos/#version-history","title":"Version history","text":"<ul> <li>Added in version 3.12.0.</li> </ul>"},{"location":"api/basic_json/erase/","title":"nlohmann::basic_json::erase","text":"<pre><code>// (1)\niterator erase(iterator pos);\nconst_iterator erase(const_iterator pos);\n\n// (2)\niterator erase(iterator first, iterator last);\nconst_iterator erase(const_iterator first, const_iterator last);\n\n// (3)\nsize_type erase(const typename object_t::key_type&amp; key);\n\n// (4)\ntemplate&lt;typename KeyType&gt;\nsize_type erase(KeyType&amp;&amp; key);\n\n// (5)\nvoid erase(const size_type idx);\n</code></pre> <ol> <li> <p>Removes an element from a JSON value specified by iterator <code>pos</code>. The iterator <code>pos</code> must be valid and    dereferenceable. Thus, the <code>end()</code> iterator (which is valid, but is not dereferenceable) cannot be used as a value for    <code>pos</code>.</p> <p>If called on a primitive type other than <code>null</code>, the resulting JSON value will be <code>null</code>.</p> </li> <li> <p>Remove an element range specified by <code>[first; last)</code> from a JSON value. The iterator <code>first</code> does not need to be    dereferenceable if <code>first == last</code>: erasing an empty range is a no-op.</p> <p>If called on a primitive type other than <code>null</code>, the resulting JSON value will be <code>null</code>.</p> </li> <li> <p>Removes an element from a JSON object by key.</p> </li> <li> <p>See 3. This overload is only available if <code>KeyType</code> is comparable with <code>typename object_t::key_type</code> and    <code>typename object_comparator_t::is_transparent</code> denotes a type.</p> </li> <li> <p>Removes an element from a JSON array by index.</p> </li> </ol>"},{"location":"api/basic_json/erase/#template-parameters","title":"Template parameters","text":"<code>KeyType</code> A type for an object key other than <code>json_pointer</code> that is comparable with <code>string_t</code> using  <code>object_comparator_t</code>. This can also be a string view (C++17)."},{"location":"api/basic_json/erase/#parameters","title":"Parameters","text":"<code>pos</code> (in) iterator to the element to remove <code>first</code> (in) iterator to the beginning of the range to remove <code>last</code> (in) iterator past the end of the range to remove <code>key</code> (in) object key of the elements to remove <code>idx</code> (in) array index of the element to remove"},{"location":"api/basic_json/erase/#return-value","title":"Return value","text":"<ol> <li>Iterator following the last removed element. If the iterator <code>pos</code> refers to the last element, the <code>end()</code> iterator    is returned.</li> <li>Iterator following the last removed element. If the iterator <code>last</code> refers to the last element, the <code>end()</code> iterator    is returned.</li> <li>Number of elements removed. If <code>ObjectType</code> is the default <code>std::map</code> type, the return value will always be <code>0</code>    (<code>key</code> was not found) or <code>1</code> (<code>key</code> was found).</li> <li>See 3.</li> <li>(none)</li> </ol>"},{"location":"api/basic_json/erase/#exception-safety","title":"Exception safety","text":"<p>Strong exception safety: if an exception occurs, the original value stays intact.</p>"},{"location":"api/basic_json/erase/#exceptions","title":"Exceptions","text":"<ol> <li>The function can throw the following exceptions:<ul> <li>Throws <code>type_error.307</code> if called on a <code>null</code> value;   example: <code>\"cannot use erase() with null\"</code></li> <li>Throws <code>invalid_iterator.202</code> if called on an   iterator which does not belong to the current JSON value; example: <code>\"iterator does not fit current value\"</code></li> <li>Throws <code>invalid_iterator.205</code> if called on a   primitive type with invalid iterator (i.e., any iterator which is not <code>begin()</code>); example: <code>\"iterator out of   range\"</code></li> </ul> </li> <li>The function can throw the following exceptions:<ul> <li>Throws <code>type_error.307</code> if called on a <code>null</code> value;   example: <code>\"cannot use erase() with null\"</code></li> <li>Throws <code>invalid_iterator.203</code> if called on iterators   which does not belong to the current JSON value; example: <code>\"iterators do not fit current value\"</code></li> <li>Throws <code>invalid_iterator.204</code> if called on a   primitive type with invalid iterators (i.e., if <code>first != begin()</code> and <code>last != end()</code>); example: <code>\"iterators out   of range\"</code></li> </ul> </li> <li>The function can throw the following exceptions:<ul> <li>Throws <code>type_error.307</code> when called on a type other than   JSON object; example: <code>\"cannot use erase() with null\"</code></li> </ul> </li> <li>See 3.</li> <li>The function can throw the following exceptions:<ul> <li>Throws <code>type_error.307</code> when called on a type other than   JSON object; example: <code>\"cannot use erase() with null\"</code></li> <li>Throws <code>out_of_range.401</code> when <code>idx &gt;= size()</code>; example:   <code>\"array index 17 is out of range\"</code></li> </ul> </li> </ol>"},{"location":"api/basic_json/erase/#complexity","title":"Complexity","text":"<ol> <li>The complexity depends on the type:<ul> <li>objects: amortized constant</li> <li>arrays: linear in distance between <code>pos</code> and the end of the container</li> <li>strings and binary: linear in the length of the member</li> <li>other types: constant</li> </ul> </li> <li>The complexity depends on the type:<ul> <li>objects: <code>log(size()) + std::distance(first, last)</code></li> <li>arrays: linear in the distance between <code>first</code> and <code>last</code>, plus linear      in the distance between <code>last</code> and end of the container</li> <li>strings and binary: linear in the length of the member</li> <li>other types: constant</li> </ul> </li> <li><code>log(size()) + count(key)</code></li> <li><code>log(size()) + count(key)</code></li> <li>Linear in distance between <code>idx</code> and the end of the container.</li> </ol>"},{"location":"api/basic_json/erase/#notes","title":"Notes","text":"<ol> <li>Invalidates iterators and references at or after the point of the <code>erase</code>, including the <code>end()</code> iterator.</li> <li>(none)</li> <li>References and iterators to the erased elements are invalidated. Other references and iterators are not affected.</li> <li>See 3.</li> <li>(none)</li> </ol>"},{"location":"api/basic_json/erase/#examples","title":"Examples","text":"Example: (1) remove element given an iterator <p>The example shows the effect of <code>erase()</code> for different JSON types using an iterator.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create JSON values\n    json j_boolean = true;\n    json j_number_integer = 17;\n    json j_number_float = 23.42;\n    json j_object = {{\"one\", 1}, {\"two\", 2}};\n    json j_array = {1, 2, 4, 8, 16};\n    json j_string = \"Hello, world\";\n\n    // call erase()\n    j_boolean.erase(j_boolean.begin());\n    j_number_integer.erase(j_number_integer.begin());\n    j_number_float.erase(j_number_float.begin());\n    j_object.erase(j_object.find(\"two\"));\n    j_array.erase(j_array.begin() + 2);\n    j_string.erase(j_string.begin());\n\n    // print values\n    std::cout &lt;&lt; j_boolean &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_number_integer &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_number_float &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_object &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_array &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_string &lt;&lt; '\\n';\n}\n</code></pre> <p>Output:</p> <pre><code>null\nnull\nnull\n{\"one\":1}\n[1,2,8,16]\nnull\n</code></pre> Example: (2) remove elements given an iterator range <p>The example shows the effect of <code>erase()</code> for different JSON types using an iterator range.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create JSON values\n    json j_boolean = true;\n    json j_number_integer = 17;\n    json j_number_float = 23.42;\n    json j_object = {{\"one\", 1}, {\"two\", 2}};\n    json j_array = {1, 2, 4, 8, 16};\n    json j_string = \"Hello, world\";\n\n    // call erase()\n    j_boolean.erase(j_boolean.begin(), j_boolean.end());\n    j_number_integer.erase(j_number_integer.begin(), j_number_integer.end());\n    j_number_float.erase(j_number_float.begin(), j_number_float.end());\n    j_object.erase(j_object.find(\"two\"), j_object.end());\n    j_array.erase(j_array.begin() + 1, j_array.begin() + 3);\n    j_string.erase(j_string.begin(), j_string.end());\n\n    // print values\n    std::cout &lt;&lt; j_boolean &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_number_integer &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_number_float &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_object &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_array &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_string &lt;&lt; '\\n';\n}\n</code></pre> <p>Output:</p> <pre><code>null\nnull\nnull\n{\"one\":1}\n[1,8,16]\nnull\n</code></pre> Example: (3) remove element from a JSON object given a key <p>The example shows the effect of <code>erase()</code> for different JSON types using an object key.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create a JSON object\n    json j_object = {{\"one\", 1}, {\"two\", 2}};\n\n    // call erase()\n    auto count_one = j_object.erase(\"one\");\n    auto count_three = j_object.erase(\"three\");\n\n    // print values\n    std::cout &lt;&lt; j_object &lt;&lt; '\\n';\n    std::cout &lt;&lt; count_one &lt;&lt; \" \" &lt;&lt; count_three &lt;&lt; '\\n';\n}\n</code></pre> <p>Output:</p> <pre><code>{\"two\":2}\n1 0\n</code></pre> Example: (4) remove element from a JSON object given a key using string_view <p>The example shows the effect of <code>erase()</code> for different JSON types using an object key.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;string_view&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing namespace std::string_view_literals;\nusing json = nlohmann::json;\n\nint main()\n{\n    // create a JSON object\n    json j_object = {{\"one\", 1}, {\"two\", 2}};\n\n    // call erase()\n    auto count_one = j_object.erase(\"one\"sv);\n    auto count_three = j_object.erase(\"three\"sv);\n\n    // print values\n    std::cout &lt;&lt; j_object &lt;&lt; '\\n';\n    std::cout &lt;&lt; count_one &lt;&lt; \" \" &lt;&lt; count_three &lt;&lt; '\\n';\n}\n</code></pre> <p>Output:</p> <pre><code>{\"two\":2}\n1 0\n</code></pre> Example: (5) remove element from a JSON array given an index <p>The example shows the effect of <code>erase()</code> using an array index.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create a JSON array\n    json j_array = {0, 1, 2, 3, 4, 5};\n\n    // call erase()\n    j_array.erase(2);\n\n    // print values\n    std::cout &lt;&lt; j_array &lt;&lt; '\\n';\n}\n</code></pre> <p>Output:</p> <pre><code>[0,1,3,4,5]\n</code></pre>"},{"location":"api/basic_json/erase/#version-history","title":"Version history","text":"<ol> <li>Added in version 1.0.0. Added support for binary types in version 3.8.0.</li> <li>Added in version 1.0.0. Added support for binary types in version 3.8.0.</li> <li>Added in version 1.0.0.</li> <li>Added in version 3.11.0.</li> <li>Added in version 1.0.0.</li> </ol>"},{"location":"api/basic_json/error_handler_t/","title":"nlohmann::basic_json::error_handler_t","text":"<pre><code>enum class error_handler_t {\n    strict,\n    replace,\n    ignore\n};\n</code></pre> <p>This enumeration is used in the <code>dump</code> function to choose how to treat decoding errors while serializing a <code>basic_json</code> value. Three values are differentiated:</p> strict throw a <code>type_error</code> exception in case of invalid UTF-8 replace replace invalid UTF-8 sequences with U+FFFD (\ufffd REPLACEMENT CHARACTER) ignore ignore invalid UTF-8 sequences; all bytes are copied to the output unchanged"},{"location":"api/basic_json/error_handler_t/#examples","title":"Examples","text":"Example <p>The example below shows how the different values of the <code>error_handler_t</code> influence the behavior of <code>dump</code> when reading serializing an invalid UTF-8 sequence.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create JSON value with invalid UTF-8 byte sequence\n    json j_invalid = \"\u00e4\\xA9\u00fc\";\n    try\n    {\n        std::cout &lt;&lt; j_invalid.dump() &lt;&lt; std::endl;\n    }\n    catch (const json::type_error&amp; e)\n    {\n        std::cout &lt;&lt; e.what() &lt;&lt; std::endl;\n    }\n\n    std::cout &lt;&lt; \"string with replaced invalid characters: \"\n              &lt;&lt; j_invalid.dump(-1, ' ', false, json::error_handler_t::replace)\n              &lt;&lt; \"\\nstring with ignored invalid characters: \"\n              &lt;&lt; j_invalid.dump(-1, ' ', false, json::error_handler_t::ignore)\n              &lt;&lt; '\\n';\n}\n</code></pre> <p>Output:</p> <pre><code>[json.exception.type_error.316] invalid UTF-8 byte at index 2: 0xA9\nstring with replaced invalid characters: \"\u00e4\ufffd\u00fc\"\nstring with ignored invalid characters: \"\u00e4\u00fc\"\n</code></pre>"},{"location":"api/basic_json/error_handler_t/#version-history","title":"Version history","text":"<ul> <li>Added in version 3.4.0.</li> </ul>"},{"location":"api/basic_json/exception/","title":"nlohmann::basic_json::exception","text":"<pre><code>class exception : public std::exception;\n</code></pre> <p>This class is an extension of <code>std::exception</code> objects with a member <code>id</code> for exception ids. It is used as the base class for all exceptions thrown by the <code>basic_json</code> class. This class can hence be used as \"wildcard\" to catch exceptions, see example below.</p> <pre><code>classDiagram\n  direction LR\n\n    class std_exception [\"std::exception\"] {\n        &lt;&lt;interface&gt;&gt;\n    }\n\n    class json_exception [\"basic_json::exception\"] {\n        +const int id\n        +const char* what() const\n    }\n\n    class json_parse_error [\"basic_json::parse_error\"] {\n        +const std::size_t byte\n    }\n\n    class json_invalid_iterator [\"basic_json::invalid_iterator\"]\n    class json_type_error [\"basic_json::type_error\"]\n    class json_out_of_range [\"basic_json::out_of_range\"]\n    class json_other_error [\"basic_json::other_error\"]\n\n    std_exception &lt;|-- json_exception\n    json_exception &lt;|-- json_parse_error\n    json_exception &lt;|-- json_invalid_iterator\n    json_exception &lt;|-- json_type_error\n    json_exception &lt;|-- json_out_of_range\n    json_exception &lt;|-- json_other_error\n\n    style json_exception fill:#CCCCFF</code></pre> <p>Subclasses:</p> <ul> <li><code>parse_error</code> for exceptions indicating a parse error</li> <li><code>invalid_iterator</code> for exceptions indicating errors with iterators</li> <li><code>type_error</code> for exceptions indicating executing a member function with a wrong type</li> <li><code>out_of_range</code> for exceptions indicating access out of the defined range</li> <li><code>other_error</code> for exceptions indicating other library errors</li> </ul>"},{"location":"api/basic_json/exception/#member-functions","title":"Member functions","text":"<ul> <li>what - returns explanatory string</li> </ul>"},{"location":"api/basic_json/exception/#member-variables","title":"Member variables","text":"<ul> <li>id - the id of the exception</li> </ul>"},{"location":"api/basic_json/exception/#notes","title":"Notes","text":"<p>To have nothrow-copy-constructible exceptions, we internally use <code>std::runtime_error</code> which can cope with arbitrary-length error messages. Intermediate strings are built with static functions and then passed to the actual constructor.</p>"},{"location":"api/basic_json/exception/#examples","title":"Examples","text":"Example <p>The following code shows how arbitrary library exceptions can be caught.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    try\n    {\n        // calling at() for a non-existing key\n        json j = {{\"foo\", \"bar\"}};\n        json k = j.at(\"non-existing\");\n    }\n    catch (const json::exception&amp; e)\n    {\n        // output exception information\n        std::cout &lt;&lt; \"message: \" &lt;&lt; e.what() &lt;&lt; '\\n'\n                  &lt;&lt; \"exception id: \" &lt;&lt; e.id &lt;&lt; std::endl;\n    }\n}\n</code></pre> <p>Output:</p> <pre><code>message: [json.exception.out_of_range.403] key 'non-existing' not found\nexception id: 403\n</code></pre>"},{"location":"api/basic_json/exception/#see-also","title":"See also","text":"<p>List of exceptions</p>"},{"location":"api/basic_json/exception/#version-history","title":"Version history","text":"<ul> <li>Since version 3.0.0.</li> </ul>"},{"location":"api/basic_json/find/","title":"nlohmann::basic_json::find","text":"<pre><code>// (1)\niterator find(const typename object_t::key_type&amp; key);\nconst_iterator find(const typename object_t::key_type&amp; key) const;\n\n// (2)\ntemplate&lt;typename KeyType&gt;\niterator find(KeyType&amp;&amp; key);\ntemplate&lt;typename KeyType&gt;\nconst_iterator find(KeyType&amp;&amp; key) const;\n</code></pre> <ol> <li>Finds an element in a JSON object with a key equivalent to <code>key</code>. If the element is not found or the    JSON value is not an object, <code>end()</code> is returned.</li> <li>See 1. This overload is only available if <code>KeyType</code> is comparable with <code>typename object_t::key_type</code> and    <code>typename object_comparator_t::is_transparent</code> denotes a type.</li> </ol>"},{"location":"api/basic_json/find/#template-parameters","title":"Template parameters","text":"<code>KeyType</code> A type for an object key other than <code>json_pointer</code> that is comparable with <code>string_t</code> using  <code>object_comparator_t</code>. This can also be a string view (C++17)."},{"location":"api/basic_json/find/#parameters","title":"Parameters","text":"<code>key</code> (in) key value of the element to search for."},{"location":"api/basic_json/find/#return-value","title":"Return value","text":"<p>Iterator to an element with a key equivalent to <code>key</code>. If no such element is found or the JSON value is not an object, a past-the-end iterator (see <code>end()</code>) is returned.</p>"},{"location":"api/basic_json/find/#exception-safety","title":"Exception safety","text":"<p>Strong exception safety: if an exception occurs, the original value stays intact.</p>"},{"location":"api/basic_json/find/#complexity","title":"Complexity","text":"<p>Logarithmic in the size of the JSON object.</p>"},{"location":"api/basic_json/find/#notes","title":"Notes","text":"<p>This method always returns <code>end()</code> when executed on a JSON type that is not an object.</p>"},{"location":"api/basic_json/find/#examples","title":"Examples","text":"Example: (1) find object element by key <p>The example shows how <code>find()</code> is used.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create a JSON object\n    json j_object = {{\"one\", 1}, {\"two\", 2}};\n\n    // call find\n    auto it_two = j_object.find(\"two\");\n    auto it_three = j_object.find(\"three\");\n\n    // print values\n    std::cout &lt;&lt; std::boolalpha;\n    std::cout &lt;&lt; \"\\\"two\\\" was found: \" &lt;&lt; (it_two != j_object.end()) &lt;&lt; '\\n';\n    std::cout &lt;&lt; \"value at key \\\"two\\\": \" &lt;&lt; *it_two &lt;&lt; '\\n';\n    std::cout &lt;&lt; \"\\\"three\\\" was found: \" &lt;&lt; (it_three != j_object.end()) &lt;&lt; '\\n';\n}\n</code></pre> <p>Output:</p> <pre><code>\"two\" was found: true\nvalue at key \"two\": 2\n\"three\" was found: false\n</code></pre> Example: (2) find object element by key using string_view <p>The example shows how <code>find()</code> is used.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;string_view&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing namespace std::string_view_literals;\nusing json = nlohmann::json;\n\nint main()\n{\n    // create a JSON object\n    json j_object = {{\"one\", 1}, {\"two\", 2}};\n\n    // call find\n    auto it_two = j_object.find(\"two\"sv);\n    auto it_three = j_object.find(\"three\"sv);\n\n    // print values\n    std::cout &lt;&lt; std::boolalpha;\n    std::cout &lt;&lt; \"\\\"two\\\" was found: \" &lt;&lt; (it_two != j_object.end()) &lt;&lt; '\\n';\n    std::cout &lt;&lt; \"value at key \\\"two\\\": \" &lt;&lt; *it_two &lt;&lt; '\\n';\n    std::cout &lt;&lt; \"\\\"three\\\" was found: \" &lt;&lt; (it_three != j_object.end()) &lt;&lt; '\\n';\n}\n</code></pre> <p>Output:</p> <pre><code>\"two\" was found: true\nvalue at key \"two\": 2\n\"three\" was found: false\n</code></pre>"},{"location":"api/basic_json/find/#see-also","title":"See also","text":"<ul> <li>contains checks whether a key exists</li> </ul>"},{"location":"api/basic_json/find/#version-history","title":"Version history","text":"<ol> <li>Added in version 3.11.0.</li> <li>Added in version 1.0.0. Changed to support comparable types in version 3.11.0.</li> </ol>"},{"location":"api/basic_json/flatten/","title":"nlohmann::basic_json::flatten","text":"<pre><code>basic_json flatten() const;\n</code></pre> <p>The function creates a JSON object whose keys are JSON pointers (see RFC 6901) and whose values are all primitive (see <code>is_primitive()</code> for more information). The original JSON value can be restored using the <code>unflatten()</code> function.</p>"},{"location":"api/basic_json/flatten/#return-value","title":"Return value","text":"<p>an object that maps JSON pointers to primitive values</p>"},{"location":"api/basic_json/flatten/#exception-safety","title":"Exception safety","text":"<p>Strong exception safety: if an exception occurs, the original value stays intact.</p>"},{"location":"api/basic_json/flatten/#complexity","title":"Complexity","text":"<p>Linear in the size of the JSON value.</p>"},{"location":"api/basic_json/flatten/#notes","title":"Notes","text":"<p>Empty objects and arrays are flattened to <code>null</code> and will not be reconstructed correctly by the <code>unflatten()</code> function.</p>"},{"location":"api/basic_json/flatten/#examples","title":"Examples","text":"Example <p>The following code shows how a JSON object is flattened to an object whose keys consist of JSON pointers.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;iomanip&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create JSON value\n    json j =\n    {\n        {\"pi\", 3.141},\n        {\"happy\", true},\n        {\"name\", \"Niels\"},\n        {\"nothing\", nullptr},\n        {\n            \"answer\", {\n                {\"everything\", 42}\n            }\n        },\n        {\"list\", {1, 0, 2}},\n        {\n            \"object\", {\n                {\"currency\", \"USD\"},\n                {\"value\", 42.99}\n            }\n        }\n    };\n\n    // call flatten()\n    std::cout &lt;&lt; std::setw(4) &lt;&lt; j.flatten() &lt;&lt; '\\n';\n}\n</code></pre> <p>Output:</p> <pre><code>{\n    \"/answer/everything\": 42,\n    \"/happy\": true,\n    \"/list/0\": 1,\n    \"/list/1\": 0,\n    \"/list/2\": 2,\n    \"/name\": \"Niels\",\n    \"/nothing\": null,\n    \"/object/currency\": \"USD\",\n    \"/object/value\": 42.99,\n    \"/pi\": 3.141\n}\n</code></pre>"},{"location":"api/basic_json/flatten/#see-also","title":"See also","text":"<ul> <li>unflatten the reverse function</li> </ul>"},{"location":"api/basic_json/flatten/#version-history","title":"Version history","text":"<ul> <li>Added in version 2.0.0.</li> </ul>"},{"location":"api/basic_json/from_bjdata/","title":"nlohmann::basic_json::from_bjdata","text":"<pre><code>// (1)\ntemplate&lt;typename InputType&gt;\nstatic basic_json from_bjdata(InputType&amp;&amp; i,\n                              const bool strict = true,\n                              const bool allow_exceptions = true);\n// (2)\ntemplate&lt;typename IteratorType&gt;\nstatic basic_json from_bjdata(IteratorType first, IteratorType last,\n                              const bool strict = true,\n                              const bool allow_exceptions = true);\n</code></pre> <p>Deserializes a given input to a JSON value using the BJData (Binary JData) serialization format.</p> <ol> <li>Reads from a compatible input.</li> <li>Reads from an iterator range.</li> </ol> <p>The exact mapping and its limitations are described on a dedicated page.</p>"},{"location":"api/basic_json/from_bjdata/#template-parameters","title":"Template parameters","text":"<code>InputType</code> <p>A compatible input, for instance:</p> <ul> <li>an <code>std::istream</code> object</li> <li>a <code>FILE</code> pointer</li> <li>a C-style array of characters</li> <li>a pointer to a null-terminated string of single byte characters</li> <li>an object <code>obj</code> for which <code>begin(obj)</code> and <code>end(obj)</code> produces a valid pair of iterators.</li> </ul> <code>IteratorType</code> a compatible iterator type"},{"location":"api/basic_json/from_bjdata/#parameters","title":"Parameters","text":"<code>i</code> (in) an input in BJData format convertible to an input adapter <code>first</code> (in) iterator to the start of the input <code>last</code> (in) iterator to the end of the input <code>strict</code> (in) whether to expect the input to be consumed until EOF (<code>true</code> by default) <code>allow_exceptions</code> (in) whether to throw exceptions in case of a parse error (optional, <code>true</code> by default)"},{"location":"api/basic_json/from_bjdata/#return-value","title":"Return value","text":"<p>deserialized JSON value; in case of a parse error and <code>allow_exceptions</code> set to <code>false</code>, the return value will be <code>value_t::discarded</code>. The latter can be checked with <code>is_discarded</code>.</p>"},{"location":"api/basic_json/from_bjdata/#exception-safety","title":"Exception safety","text":"<p>Strong guarantee: if an exception is thrown, there are no changes in the JSON value.</p>"},{"location":"api/basic_json/from_bjdata/#exceptions","title":"Exceptions","text":"<ul> <li>Throws parse_error.110 if the given input ends prematurely or   the end of the file was not reached when <code>strict</code> was set to true</li> <li>Throws parse_error.112 if a parse error occurs</li> <li>Throws parse_error.113 if a string could not be parsed   successfully</li> </ul>"},{"location":"api/basic_json/from_bjdata/#complexity","title":"Complexity","text":"<p>Linear in the size of the input.</p>"},{"location":"api/basic_json/from_bjdata/#examples","title":"Examples","text":"Example <p>The example shows the deserialization of a byte vector in BJData format to a JSON value.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;iomanip&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create byte vector\n    std::vector&lt;std::uint8_t&gt; v = {0x7B, 0x69, 0x07, 0x63, 0x6F, 0x6D, 0x70, 0x61,\n                                   0x63, 0x74, 0x54, 0x69, 0x06, 0x73, 0x63, 0x68,\n                                   0x65, 0x6D, 0x61, 0x69, 0x00, 0x7D\n                                  };\n\n    // deserialize it with BJData\n    json j = json::from_bjdata(v);\n\n    // print the deserialized JSON value\n    std::cout &lt;&lt; std::setw(2) &lt;&lt; j &lt;&lt; std::endl;\n}\n</code></pre> <p>Output:</p> <pre><code>{\n  \"compact\": true,\n  \"schema\": 0\n}\n</code></pre>"},{"location":"api/basic_json/from_bjdata/#version-history","title":"Version history","text":"<ul> <li>Added in version 3.11.0.</li> </ul>"},{"location":"api/basic_json/from_bson/","title":"nlohmann::basic_json::from_bson","text":"<pre><code>// (1)\ntemplate&lt;typename InputType&gt;\nstatic basic_json from_bson(InputType&amp;&amp; i,\n                            const bool strict = true,\n                            const bool allow_exceptions = true);\n// (2)\ntemplate&lt;typename IteratorType&gt;\nstatic basic_json from_bson(IteratorType first, IteratorType last,\n                            const bool strict = true,\n                            const bool allow_exceptions = true);\n</code></pre> <p>Deserializes a given input to a JSON value using the BSON (Binary JSON) serialization format.</p> <ol> <li>Reads from a compatible input.</li> <li>Reads from an iterator range.</li> </ol> <p>The exact mapping and its limitations are described on a dedicated page.</p>"},{"location":"api/basic_json/from_bson/#template-parameters","title":"Template parameters","text":"<code>InputType</code> <p>A compatible input, for instance:</p> <ul> <li>an <code>std::istream</code> object</li> <li>a <code>FILE</code> pointer</li> <li>a C-style array of characters</li> <li>a pointer to a null-terminated string of single byte characters</li> <li>an object <code>obj</code> for which <code>begin(obj)</code> and <code>end(obj)</code> produces a valid pair of iterators.</li> </ul> <code>IteratorType</code> a compatible iterator type"},{"location":"api/basic_json/from_bson/#parameters","title":"Parameters","text":"<code>i</code> (in) an input in BSON format convertible to an input adapter <code>first</code> (in) iterator to the start of the input <code>last</code> (in) iterator to the end of the input <code>strict</code> (in) whether to expect the input to be consumed until EOF (<code>true</code> by default) <code>allow_exceptions</code> (in) whether to throw exceptions in case of a parse error (optional, <code>true</code> by default)"},{"location":"api/basic_json/from_bson/#return-value","title":"Return value","text":"<p>deserialized JSON value; in case of a parse error and <code>allow_exceptions</code> set to <code>false</code>, the return value will be <code>value_t::discarded</code>.  The latter can be checked with <code>is_discarded</code>.</p>"},{"location":"api/basic_json/from_bson/#exception-safety","title":"Exception safety","text":"<p>Strong guarantee: if an exception is thrown, there are no changes in the JSON value.</p>"},{"location":"api/basic_json/from_bson/#exceptions","title":"Exceptions","text":"<p>Throws <code>parse_error.114</code> if an unsupported BSON record type is encountered.</p>"},{"location":"api/basic_json/from_bson/#complexity","title":"Complexity","text":"<p>Linear in the size of the input.</p>"},{"location":"api/basic_json/from_bson/#examples","title":"Examples","text":"Example <p>The example shows the deserialization of a byte vector in BSON format to a JSON value.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;iomanip&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create byte vector\n    std::vector&lt;std::uint8_t&gt; v = {0x1b, 0x00, 0x00, 0x00, 0x08, 0x63, 0x6f, 0x6d,\n                                   0x70, 0x61, 0x63, 0x74, 0x00, 0x01, 0x10, 0x73,\n                                   0x63, 0x68, 0x65, 0x6d, 0x61, 0x00, 0x00, 0x00,\n                                   0x00, 0x00, 0x00\n                                  };\n\n    // deserialize it with BSON\n    json j = json::from_bson(v);\n\n    // print the deserialized JSON value\n    std::cout &lt;&lt; std::setw(2) &lt;&lt; j &lt;&lt; std::endl;\n}\n</code></pre> <p>Output:</p> <pre><code>{\n  \"compact\": true,\n  \"schema\": 0\n}\n</code></pre>"},{"location":"api/basic_json/from_bson/#see-also","title":"See also","text":"<ul> <li>BSON specification</li> <li>to_bson for the analogous serialization</li> <li>from_cbor for the related CBOR format</li> <li>from_msgpack for the related MessagePack format</li> <li>from_ubjson for the related UBJSON format</li> </ul>"},{"location":"api/basic_json/from_bson/#version-history","title":"Version history","text":"<ul> <li>Added in version 3.4.0.</li> </ul> <p>Deprecation</p> <ul> <li>Overload (2) replaces calls to <code>from_bson</code> with a pointer and a length as first two parameters, which has been   deprecated in version 3.8.0. This overload will be removed in version 4.0.0. Please replace all calls like   <code>from_bson(ptr, len, ...);</code> with <code>from_bson(ptr, ptr+len, ...);</code>.</li> <li>Overload (2) replaces calls to <code>from_bson</code> with a pair of iterators as their first parameter, which has been   deprecated in version 3.8.0. This overload will be removed in version 4.0.0. Please replace all calls like   <code>from_bson({ptr, ptr+len}, ...);</code> with <code>from_bson(ptr, ptr+len, ...);</code>.</li> </ul> <p>You should be warned by your compiler with a <code>-Wdeprecated-declarations</code> warning if you are using a deprecated function.</p>"},{"location":"api/basic_json/from_cbor/","title":"nlohmann::basic_json::from_cbor","text":"<pre><code>// (1)\ntemplate&lt;typename InputType&gt;\nstatic basic_json from_cbor(InputType&amp;&amp; i,\n                            const bool strict = true,\n                            const bool allow_exceptions = true,\n                            const cbor_tag_handler_t tag_handler = cbor_tag_handler_t::error);\n\n// (2)\ntemplate&lt;typename IteratorType&gt;\nstatic basic_json from_cbor(IteratorType first, IteratorType last,\n                            const bool strict = true,\n                            const bool allow_exceptions = true,\n                            const cbor_tag_handler_t tag_handler = cbor_tag_handler_t::error);\n</code></pre> <p>Deserializes a given input to a JSON value using the CBOR (Concise Binary Object Representation) serialization format.</p> <ol> <li>Reads from a compatible input.</li> <li>Reads from an iterator range.</li> </ol> <p>The exact mapping and its limitations are described on a dedicated page.</p>"},{"location":"api/basic_json/from_cbor/#template-parameters","title":"Template parameters","text":"<code>InputType</code> <p>A compatible input, for instance:</p> <ul> <li>an <code>std::istream</code> object</li> <li>a <code>FILE</code> pointer</li> <li>a C-style array of characters</li> <li>a pointer to a null-terminated string of single byte characters</li> <li>an object <code>obj</code> for which <code>begin(obj)</code> and <code>end(obj)</code> produces a valid pair of iterators.</li> </ul> <code>IteratorType</code> a compatible iterator type"},{"location":"api/basic_json/from_cbor/#parameters","title":"Parameters","text":"<code>i</code> (in) an input in CBOR format convertible to an input adapter <code>first</code> (in) iterator to the start of the input <code>last</code> (in) iterator to the end of the input <code>strict</code> (in) whether to expect the input to be consumed until EOF (<code>true</code> by default) <code>allow_exceptions</code> (in) whether to throw exceptions in case of a parse error (optional, <code>true</code> by default) <code>tag_handler</code> (in) how to treat CBOR tags (optional, <code>error</code> by default); see <code>cbor_tag_handler_t</code> for more information"},{"location":"api/basic_json/from_cbor/#return-value","title":"Return value","text":"<p>deserialized JSON value; in case of a parse error and <code>allow_exceptions</code> set to <code>false</code>, the return value will be <code>value_t::discarded</code>.  The latter can be checked with <code>is_discarded</code>.</p>"},{"location":"api/basic_json/from_cbor/#exception-safety","title":"Exception safety","text":"<p>Strong guarantee: if an exception is thrown, there are no changes in the JSON value.</p>"},{"location":"api/basic_json/from_cbor/#exceptions","title":"Exceptions","text":"<ul> <li>Throws parse_error.110 if the given input ends prematurely or   the end of the file was not reached when <code>strict</code> was set to true</li> <li>Throws parse_error.112 if unsupported features from CBOR were   used in the given input or if the input is not valid CBOR</li> <li>Throws parse_error.113 if a string was expected as a map key,   but not found</li> </ul>"},{"location":"api/basic_json/from_cbor/#complexity","title":"Complexity","text":"<p>Linear in the size of the input.</p>"},{"location":"api/basic_json/from_cbor/#examples","title":"Examples","text":"Example <p>The example shows the deserialization of a byte vector in CBOR format to a JSON value.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;iomanip&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create byte vector\n    std::vector&lt;std::uint8_t&gt; v = {0xa2, 0x67, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x63,\n                                   0x74, 0xf5, 0x66, 0x73, 0x63, 0x68, 0x65, 0x6d,\n                                   0x61, 0x00\n                                  };\n\n    // deserialize it with CBOR\n    json j = json::from_cbor(v);\n\n    // print the deserialized JSON value\n    std::cout &lt;&lt; std::setw(2) &lt;&lt; j &lt;&lt; std::endl;\n}\n</code></pre> <p>Output:</p> <pre><code>{\n  \"compact\": true,\n  \"schema\": 0\n}\n</code></pre>"},{"location":"api/basic_json/from_cbor/#version-history","title":"Version history","text":"<ul> <li>Added in version 2.0.9.</li> <li>Parameter <code>start_index</code> since version 2.1.1.</li> <li>Changed to consume input adapters, removed <code>start_index</code> parameter, and added <code>strict</code> parameter in version 3.0.0.</li> <li>Added <code>allow_exceptions</code> parameter in version 3.2.0.</li> <li>Added <code>tag_handler</code> parameter in version 3.9.0.</li> </ul> <p>Deprecation</p> <ul> <li>Overload (2) replaces calls to <code>from_cbor</code> with a pointer and a length as first two parameters, which has been   deprecated in version 3.8.0. This overload will be removed in version 4.0.0. Please replace all calls like   <code>from_cbor(ptr, len, ...);</code> with <code>from_cbor(ptr, ptr+len, ...);</code>.</li> <li>Overload (2) replaces calls to <code>from_cbor</code> with a pair of iterators as their first parameter, which has been   deprecated in version 3.8.0. This overload will be removed in version 4.0.0. Please replace all calls like   <code>from_cbor({ptr, ptr+len}, ...);</code> with <code>from_cbor(ptr, ptr+len, ...);</code>.</li> </ul> <p>You should be warned by your compiler with a <code>-Wdeprecated-declarations</code> warning if you are using a deprecated function.</p>"},{"location":"api/basic_json/from_msgpack/","title":"nlohmann::basic_json::from_msgpack","text":"<pre><code>// (1)\ntemplate&lt;typename InputType&gt;\nstatic basic_json from_msgpack(InputType&amp;&amp; i,\n                               const bool strict = true,\n                               const bool allow_exceptions = true);\n// (2)\ntemplate&lt;typename IteratorType&gt;\nstatic basic_json from_msgpack(IteratorType first, IteratorType last,\n                               const bool strict = true,\n                               const bool allow_exceptions = true);\n</code></pre> <p>Deserializes a given input to a JSON value using the MessagePack serialization format.</p> <ol> <li>Reads from a compatible input.</li> <li>Reads from an iterator range.</li> </ol> <p>The exact mapping and its limitations are described on a dedicated page.</p>"},{"location":"api/basic_json/from_msgpack/#template-parameters","title":"Template parameters","text":"<code>InputType</code> <p>A compatible input, for instance:</p> <ul> <li>an <code>std::istream</code> object</li> <li>a <code>FILE</code> pointer</li> <li>a C-style array of characters</li> <li>a pointer to a null-terminated string of single byte characters</li> <li>an object <code>obj</code> for which <code>begin(obj)</code> and <code>end(obj)</code> produces a valid pair of iterators.</li> </ul> <code>IteratorType</code> a compatible iterator type"},{"location":"api/basic_json/from_msgpack/#parameters","title":"Parameters","text":"<code>i</code> (in) an input in MessagePack format convertible to an input adapter <code>first</code> (in) iterator to the start of the input <code>last</code> (in) iterator to the end of the input <code>strict</code> (in) whether to expect the input to be consumed until EOF (<code>true</code> by default) <code>allow_exceptions</code> (in) whether to throw exceptions in case of a parse error (optional, <code>true</code> by default)"},{"location":"api/basic_json/from_msgpack/#return-value","title":"Return value","text":"<p>deserialized JSON value; in case of a parse error and <code>allow_exceptions</code> set to <code>false</code>, the return value will be <code>value_t::discarded</code>. The latter can be checked with <code>is_discarded</code>.</p>"},{"location":"api/basic_json/from_msgpack/#exception-safety","title":"Exception safety","text":"<p>Strong guarantee: if an exception is thrown, there are no changes in the JSON value.</p>"},{"location":"api/basic_json/from_msgpack/#exceptions","title":"Exceptions","text":"<ul> <li>Throws parse_error.110 if the given input ends prematurely or   the end of the file was not reached when <code>strict</code> was set to true</li> <li>Throws parse_error.112 if unsupported features from   MessagePack were used in the given input or if the input is not valid MessagePack</li> <li>Throws parse_error.113 if a string was expected as a map key,   but not found</li> </ul>"},{"location":"api/basic_json/from_msgpack/#complexity","title":"Complexity","text":"<p>Linear in the size of the input.</p>"},{"location":"api/basic_json/from_msgpack/#examples","title":"Examples","text":"Example <p>The example shows the deserialization of a byte vector in MessagePack format to a JSON value.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;iomanip&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create byte vector\n    std::vector&lt;std::uint8_t&gt; v = {0x82, 0xa7, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x63,\n                                   0x74, 0xc3, 0xa6, 0x73, 0x63, 0x68, 0x65, 0x6d,\n                                   0x61, 0x00\n                                  };\n\n    // deserialize it with MessagePack\n    json j = json::from_msgpack(v);\n\n    // print the deserialized JSON value\n    std::cout &lt;&lt; std::setw(2) &lt;&lt; j &lt;&lt; std::endl;\n}\n</code></pre> <p>Output:</p> <pre><code>{\n  \"compact\": true,\n  \"schema\": 0\n}\n</code></pre>"},{"location":"api/basic_json/from_msgpack/#version-history","title":"Version history","text":"<ul> <li>Added in version 2.0.9.</li> <li>Parameter <code>start_index</code> since version 2.1.1.</li> <li>Changed to consume input adapters, removed <code>start_index</code> parameter, and added <code>strict</code> parameter in version 3.0.0.</li> <li>Added <code>allow_exceptions</code> parameter in version 3.2.0.</li> </ul> <p>Deprecation</p> <ul> <li>Overload (2) replaces calls to <code>from_msgpack</code> with a pointer and a length as first two parameters, which has been   deprecated in version 3.8.0. This overload will be removed in version 4.0.0. Please replace all calls like   <code>from_msgpack(ptr, len, ...);</code> with <code>from_msgpack(ptr, ptr+len, ...);</code>.</li> <li>Overload (2) replaces calls to <code>from_cbor</code> with a pair of iterators as their first parameter, which has been   deprecated in version 3.8.0. This overload will be removed in version 4.0.0. Please replace all calls like   <code>from_msgpack({ptr, ptr+len}, ...);</code> with <code>from_msgpack(ptr, ptr+len, ...);</code>.</li> </ul> <p>You should be warned by your compiler with a <code>-Wdeprecated-declarations</code> warning if you are using a deprecated function.</p>"},{"location":"api/basic_json/from_ubjson/","title":"nlohmann::basic_json::from_ubjson","text":"<pre><code>// (1)\ntemplate&lt;typename InputType&gt;\nstatic basic_json from_ubjson(InputType&amp;&amp; i,\n                              const bool strict = true,\n                              const bool allow_exceptions = true);\n// (2)\ntemplate&lt;typename IteratorType&gt;\nstatic basic_json from_ubjson(IteratorType first, IteratorType last,\n                              const bool strict = true,\n                              const bool allow_exceptions = true);\n</code></pre> <p>Deserializes a given input to a JSON value using the UBJSON (Universal Binary JSON) serialization format.</p> <ol> <li>Reads from a compatible input.</li> <li>Reads from an iterator range.</li> </ol> <p>The exact mapping and its limitations are described on a dedicated page.</p>"},{"location":"api/basic_json/from_ubjson/#template-parameters","title":"Template parameters","text":"<code>InputType</code> <p>A compatible input, for instance:</p> <ul> <li>an <code>std::istream</code> object</li> <li>a <code>FILE</code> pointer</li> <li>a C-style array of characters</li> <li>a pointer to a null-terminated string of single byte characters</li> <li>an object <code>obj</code> for which <code>begin(obj)</code> and <code>end(obj)</code> produces a valid pair of iterators.</li> </ul> <code>IteratorType</code> a compatible iterator type"},{"location":"api/basic_json/from_ubjson/#parameters","title":"Parameters","text":"<code>i</code> (in) an input in UBJSON format convertible to an input adapter <code>first</code> (in) iterator to the start of the input <code>last</code> (in) iterator to the end of the input <code>strict</code> (in) whether to expect the input to be consumed until EOF (<code>true</code> by default) <code>allow_exceptions</code> (in) whether to throw exceptions in case of a parse error (optional, <code>true</code> by default)"},{"location":"api/basic_json/from_ubjson/#return-value","title":"Return value","text":"<p>deserialized JSON value; in case of a parse error and <code>allow_exceptions</code> set to <code>false</code>, the return value will be <code>value_t::discarded</code>. The latter can be checked with <code>is_discarded</code>.</p>"},{"location":"api/basic_json/from_ubjson/#exception-safety","title":"Exception safety","text":"<p>Strong guarantee: if an exception is thrown, there are no changes in the JSON value.</p>"},{"location":"api/basic_json/from_ubjson/#exceptions","title":"Exceptions","text":"<ul> <li>Throws parse_error.110 if the given input ends prematurely or   the end of the file was not reached when <code>strict</code> was set to true</li> <li>Throws parse_error.112 if a parse error occurs</li> <li>Throws parse_error.113 if a string could not be parsed    successfully</li> </ul>"},{"location":"api/basic_json/from_ubjson/#complexity","title":"Complexity","text":"<p>Linear in the size of the input.</p>"},{"location":"api/basic_json/from_ubjson/#examples","title":"Examples","text":"Example <p>The example shows the deserialization of a byte vector in UBJSON format to a JSON value.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;iomanip&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create byte vector\n    std::vector&lt;std::uint8_t&gt; v = {0x7B, 0x69, 0x07, 0x63, 0x6F, 0x6D, 0x70, 0x61,\n                                   0x63, 0x74, 0x54, 0x69, 0x06, 0x73, 0x63, 0x68,\n                                   0x65, 0x6D, 0x61, 0x69, 0x00, 0x7D\n                                  };\n\n    // deserialize it with UBJSON\n    json j = json::from_ubjson(v);\n\n    // print the deserialized JSON value\n    std::cout &lt;&lt; std::setw(2) &lt;&lt; j &lt;&lt; std::endl;\n}\n</code></pre> <p>Output:</p> <pre><code>{\n  \"compact\": true,\n  \"schema\": 0\n}\n</code></pre>"},{"location":"api/basic_json/from_ubjson/#version-history","title":"Version history","text":"<ul> <li>Added in version 3.1.0.</li> <li>Added <code>allow_exceptions</code> parameter in version 3.2.0.</li> </ul> <p>Deprecation</p> <ul> <li>Overload (2) replaces calls to <code>from_ubjson</code> with a pointer and a length as first two parameters, which has been   deprecated in version 3.8.0. This overload will be removed in version 4.0.0. Please replace all calls like   <code>from_ubjson(ptr, len, ...);</code> with <code>from_ubjson(ptr, ptr+len, ...);</code>.</li> <li>Overload (2) replaces calls to <code>from_ubjson</code> with a pair of iterators as their first parameter, which has been   deprecated in version 3.8.0. This overload will be removed in version 4.0.0. Please replace all calls like   <code>from_ubjson({ptr, ptr+len}, ...);</code> with <code>from_ubjson(ptr, ptr+len, ...);</code>.</li> </ul> <p>You should be warned by your compiler with a <code>-Wdeprecated-declarations</code> warning if you are using a deprecated function.</p>"},{"location":"api/basic_json/front/","title":"nlohmann::basic_json::front","text":"<pre><code>reference front();\nconst_reference front() const;\n</code></pre> <p>Returns a reference to the first element in the container. For a JSON container <code>c</code>, the expression <code>c.front()</code> is equivalent to <code>*c.begin()</code>.</p>"},{"location":"api/basic_json/front/#return-value","title":"Return value","text":"<p>In the case of a structured type (array or object), a reference to the first element is returned. In the case of number, string, boolean, or binary values, a reference to the value is returned.</p>"},{"location":"api/basic_json/front/#exception-safety","title":"Exception safety","text":"<p>Strong guarantee: if an exception is thrown, there are no changes in the JSON value.</p>"},{"location":"api/basic_json/front/#exceptions","title":"Exceptions","text":"<p>If the JSON value is <code>null</code>, exception <code>invalid_iterator.214</code> is thrown.</p>"},{"location":"api/basic_json/front/#complexity","title":"Complexity","text":"<p>Constant.</p>"},{"location":"api/basic_json/front/#notes","title":"Notes","text":"<p>Precondition</p> <p>The array or object must not be empty. Calling <code>front</code> on an empty array or object yields undefined behavior.</p>"},{"location":"api/basic_json/front/#examples","title":"Examples","text":"Example <p>The following code shows an example for <code>front()</code>.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create JSON values\n    json j_null;\n    json j_boolean = true;\n    json j_number_integer = 17;\n    json j_number_float = 23.42;\n    json j_object = {{\"one\", 1}, {\"two\", 2}};\n    json j_object_empty(json::value_t::object);\n    json j_array = {1, 2, 4, 8, 16};\n    json j_array_empty(json::value_t::array);\n    json j_string = \"Hello, world\";\n\n    // call front()\n    //std::cout &lt;&lt; j_null.front() &lt;&lt; '\\n';          // would throw\n    std::cout &lt;&lt; j_boolean.front() &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_number_integer.front() &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_number_float.front() &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_object.front() &lt;&lt; '\\n';\n    //std::cout &lt;&lt; j_object_empty.front() &lt;&lt; '\\n';  // undefined behavior\n    std::cout &lt;&lt; j_array.front() &lt;&lt; '\\n';\n    //std::cout &lt;&lt; j_array_empty.front() &lt;&lt; '\\n';   // undefined behavior\n    std::cout &lt;&lt; j_string.front() &lt;&lt; '\\n';\n}\n</code></pre> <p>Output:</p> <pre><code>true\n17\n23.42\n1\n1\n\"Hello, world\"\n</code></pre>"},{"location":"api/basic_json/front/#see-also","title":"See also","text":"<ul> <li>back to access the last element</li> </ul>"},{"location":"api/basic_json/front/#version-history","title":"Version history","text":"<ul> <li>Added in version 1.0.0.</li> <li>Adjusted code to return reference to binary values in version 3.8.0.</li> </ul>"},{"location":"api/basic_json/get/","title":"nlohmann::basic_json::get","text":"<pre><code>// (1)\ntemplate&lt;typename ValueType&gt;\nValueType get() const noexcept(\n    noexcept(JSONSerializer&lt;ValueType&gt;::from_json(\n        std::declval&lt;const basic_json_t&amp;&gt;(), std::declval&lt;ValueType&amp;&gt;())));\n\n// (2)\ntemplate&lt;typename BasicJsonType&gt;\nBasicJsonType get() const;\n\n// (3)\ntemplate&lt;typename PointerType&gt;\nPointerType get_ptr();\n\ntemplate&lt;typename PointerType&gt;\nconstexpr const PointerType get_ptr() const noexcept;\n</code></pre> <ol> <li> <p>Explicit type conversion between the JSON value and a compatible value which is    CopyConstructible and    DefaultConstructible. The value is converted by    calling the <code>json_serializer&lt;ValueType&gt;</code> <code>from_json()</code> method.</p> <p>The function is equivalent to executing <pre><code>ValueType ret;\nJSONSerializer&lt;ValueType&gt;::from_json(*this, ret);\nreturn ret;\n</code></pre></p> <p>This overload is chosen if:</p> <ul> <li><code>ValueType</code> is not <code>basic_json</code>,</li> <li><code>json_serializer&lt;ValueType&gt;</code> has a <code>from_json()</code> method of the form   <code>void from_json(const basic_json&amp;, ValueType&amp;)</code>, and</li> <li><code>json_serializer&lt;ValueType&gt;</code> does not have a <code>from_json()</code> method of the form   <code>ValueType from_json(const basic_json&amp;)</code></li> </ul> <p>If the type is not CopyConstructible and not DefaultConstructible, the value is converted by calling the <code>json_serializer&lt;ValueType&gt;</code> <code>from_json()</code> method.</p> <p>The function is then equivalent to executing <pre><code>return JSONSerializer&lt;ValueTypeCV&gt;::from_json(*this);\n</code></pre></p> <p>This overload is chosen if:</p> <ul> <li><code>ValueType</code> is not <code>basic_json</code> and</li> <li><code>json_serializer&lt;ValueType&gt;</code> has a <code>from_json()</code> method of the form  <code>ValueType from_json(const basic_json&amp;)</code></li> </ul> <p>If <code>json_serializer&lt;ValueType&gt;</code> has both overloads of <code>from_json()</code>, the latter one is chosen.</p> </li> <li> <p>Overload for <code>basic_json</code> specializations. The function is equivalent to executing     <pre><code>return *this;\n</code></pre></p> </li> <li> <p>Explicit pointer access to the internally stored JSON value. No copies are made.</p> </li> </ol>"},{"location":"api/basic_json/get/#template-parameters","title":"Template parameters","text":"<code>ValueType</code> the value type to return <code>BasicJsonType</code> a specialization of <code>basic_json</code> <code>PointerType</code> pointer type; must be a pointer to <code>array_t</code>, <code>object_t</code>, <code>string_t</code>, <code>boolean_t</code>, <code>number_integer_t</code>, or <code>number_unsigned_t</code>, <code>number_float_t</code>, or <code>binary_t</code>. Other types will not compile."},{"location":"api/basic_json/get/#return-value","title":"Return value","text":"<ol> <li>copy of the JSON value, converted to <code>ValueType</code></li> <li>a copy of <code>*this</code>, converted into <code>BasicJsonType</code></li> <li>pointer to the internally stored JSON value if the requested pointer type fits to the JSON value; <code>nullptr</code>    otherwise</li> </ol>"},{"location":"api/basic_json/get/#exceptions","title":"Exceptions","text":"<p>Depends on what <code>json_serializer&lt;ValueType&gt;</code> <code>from_json()</code> method throws</p>"},{"location":"api/basic_json/get/#notes","title":"Notes","text":"<p>Undefined behavior for pointers</p> <p>Writing data to the pointee (overload 3) of the result yields an undefined state.</p> <p>Undefined behavior for numeric conversions</p> <p>Conversions between numeric types are performed by the corresponding <code>from_json()</code> implementation using the target C++ type. When converting between numeric types, the library does not check whether the source value is representable by the target type.</p> <p>If the source value is outside the range of the target type, the behavior is the same as the corresponding C++ conversion. In particular, converting a floating-point value to an integer type that cannot represent the value results in undefined behavior.</p> <p>See Number conversion for more information.</p>"},{"location":"api/basic_json/get/#examples","title":"Examples","text":"Example <p>The example below shows several conversions from JSON values to other types. There a few things to note: (1) Floating-point numbers can be converted to integers, (2) A JSON array can be converted to a standard <code>std::vector&lt;short&gt;</code>, (3) A JSON object can be converted to C++ associative containers such as <code>std::unordered_map&lt;std::string, json&gt;</code>.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;unordered_map&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create a JSON value with different types\n    json json_types =\n    {\n        {\"boolean\", true},\n        {\n            \"number\", {\n                {\"integer\", 42},\n                {\"floating-point\", 17.23}\n            }\n        },\n        {\"string\", \"Hello, world!\"},\n        {\"array\", {1, 2, 3, 4, 5}},\n        {\"null\", nullptr}\n    };\n\n    // use explicit conversions\n    auto v1 = json_types[\"boolean\"].get&lt;bool&gt;();\n    auto v2 = json_types[\"number\"][\"integer\"].get&lt;int&gt;();\n    auto v3 = json_types[\"number\"][\"integer\"].get&lt;short&gt;();\n    auto v4 = json_types[\"number\"][\"floating-point\"].get&lt;float&gt;();\n    auto v5 = json_types[\"number\"][\"floating-point\"].get&lt;int&gt;();\n    auto v6 = json_types[\"string\"].get&lt;std::string&gt;();\n    auto v7 = json_types[\"array\"].get&lt;std::vector&lt;short&gt;&gt;();\n    auto v8 = json_types.get&lt;std::unordered_map&lt;std::string, json&gt;&gt;();\n\n    // print the conversion results\n    std::cout &lt;&lt; v1 &lt;&lt; '\\n';\n    std::cout &lt;&lt; v2 &lt;&lt; ' ' &lt;&lt; v3 &lt;&lt; '\\n';\n    std::cout &lt;&lt; v4 &lt;&lt; ' ' &lt;&lt; v5 &lt;&lt; '\\n';\n    std::cout &lt;&lt; v6 &lt;&lt; '\\n';\n\n    for (auto i : v7)\n    {\n        std::cout &lt;&lt; i &lt;&lt; ' ';\n    }\n    std::cout &lt;&lt; \"\\n\\n\";\n\n    for (auto i : v8)\n    {\n        std::cout &lt;&lt; i.first &lt;&lt; \": \" &lt;&lt; i.second &lt;&lt; '\\n';\n    }\n}\n</code></pre> <p>Output:</p> <pre><code>1\n42 42\n17.23 17\nHello, world!\n1 2 3 4 5 \n\nstring: \"Hello, world!\"\nnumber: {\"floating-point\":17.23,\"integer\":42}\nnull: null\nboolean: true\narray: [1,2,3,4,5]\n</code></pre> Example <p>The example below shows how pointers to internal values of a JSON value can be requested. Note that no type conversions are made and a <code>#cpp nullptr</code> is returned if the value and the requested pointer type does not match.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create a JSON number\n    json value = 17;\n\n    // explicitly getting pointers\n    auto p1 = value.get&lt;const json::number_integer_t*&gt;();\n    auto p2 = value.get&lt;json::number_integer_t*&gt;();\n    auto p3 = value.get&lt;json::number_integer_t* const&gt;();\n    auto p4 = value.get&lt;const json::number_integer_t* const&gt;();\n    auto p5 = value.get&lt;json::number_float_t*&gt;();\n\n    // print the pointees\n    std::cout &lt;&lt; *p1 &lt;&lt; ' ' &lt;&lt; *p2 &lt;&lt; ' ' &lt;&lt; *p3 &lt;&lt; ' ' &lt;&lt; *p4 &lt;&lt; '\\n';\n    std::cout &lt;&lt; std::boolalpha &lt;&lt; (p5 == nullptr) &lt;&lt; '\\n';\n}\n</code></pre> <p>Output:</p> <pre><code>17 17 17 17\ntrue\n</code></pre>"},{"location":"api/basic_json/get/#version-history","title":"Version history","text":"<ol> <li>Since version 2.1.0.</li> <li>Since version 2.1.0. Extended to work with other specializations of <code>basic_json</code> in version 3.2.0.</li> <li>Since version 1.0.0.</li> </ol>"},{"location":"api/basic_json/get_allocator/","title":"nlohmann::basic_json::get_allocator","text":"<pre><code>static allocator_type get_allocator();\n</code></pre> <p>Returns the allocator associated with the container.</p>"},{"location":"api/basic_json/get_allocator/#return-value","title":"Return value","text":"<p>associated allocator</p>"},{"location":"api/basic_json/get_allocator/#examples","title":"Examples","text":"Example <p>The example shows how <code>get_allocator()</code> is used to created <code>json</code> values.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    auto alloc = json::get_allocator();\n    using traits_t = std::allocator_traits&lt;decltype(alloc)&gt;;\n\n    json* j = traits_t::allocate(alloc, 1);\n    traits_t::construct(alloc, j, \"Hello, world!\");\n\n    std::cout &lt;&lt; *j &lt;&lt; std::endl;\n\n    traits_t::destroy(alloc, j);\n    traits_t::deallocate(alloc, j, 1);\n}\n</code></pre> <p>Output:</p> <pre><code>\"Hello, world!\"\n</code></pre>"},{"location":"api/basic_json/get_allocator/#version-history","title":"Version history","text":"<ul> <li>Added in version 1.0.0.</li> </ul>"},{"location":"api/basic_json/get_binary/","title":"nlohmann::basic_json::get_binary","text":"<pre><code>binary_t&amp; get_binary();\n\nconst binary_t&amp; get_binary() const;\n</code></pre> <p>Returns a reference to the stored binary value.</p>"},{"location":"api/basic_json/get_binary/#return-value","title":"Return value","text":"<p>Reference to binary value.</p>"},{"location":"api/basic_json/get_binary/#exception-safety","title":"Exception safety","text":"<p>Strong exception safety: if an exception occurs, the original value stays intact.</p>"},{"location":"api/basic_json/get_binary/#exceptions","title":"Exceptions","text":"<p>Throws <code>type_error.302</code> if the value is not binary</p>"},{"location":"api/basic_json/get_binary/#complexity","title":"Complexity","text":"<p>Constant.</p>"},{"location":"api/basic_json/get_binary/#examples","title":"Examples","text":"Example <p>The following code shows how to query a binary value.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create a binary vector\n    std::vector&lt;std::uint8_t&gt; vec = {0xCA, 0xFE, 0xBA, 0xBE};\n\n    // create a binary JSON value with subtype 42\n    json j = json::binary(vec, 42);\n\n    // output type and subtype\n    std::cout &lt;&lt; \"type: \" &lt;&lt; j.type_name() &lt;&lt; \", subtype: \" &lt;&lt; j.get_binary().subtype() &lt;&lt; std::endl;\n}\n</code></pre> <p>Output:</p> <pre><code>type: binary, subtype: 42\n</code></pre>"},{"location":"api/basic_json/get_binary/#version-history","title":"Version history","text":"<ul> <li>Added in version 3.8.0.</li> </ul>"},{"location":"api/basic_json/get_ptr/","title":"nlohmann::basic_json::get_ptr","text":"<pre><code>template&lt;typename PointerType&gt;\nPointerType get_ptr() noexcept;\n\ntemplate&lt;typename PointerType&gt;\nconstexpr const PointerType get_ptr() const noexcept;\n</code></pre> <p>Implicit pointer access to the internally stored JSON value. No copies are made.</p>"},{"location":"api/basic_json/get_ptr/#template-parameters","title":"Template parameters","text":"<code>PointerType</code> pointer type; must be a pointer to <code>array_t</code>, <code>object_t</code>, <code>string_t</code>, <code>boolean_t</code>, <code>number_integer_t</code>, or <code>number_unsigned_t</code>, <code>number_float_t</code>, or <code>binary_t</code>. Other types will not compile."},{"location":"api/basic_json/get_ptr/#return-value","title":"Return value","text":"<p>pointer to the internally stored JSON value if the requested pointer type fits to the JSON value; <code>nullptr</code> otherwise</p>"},{"location":"api/basic_json/get_ptr/#exception-safety","title":"Exception safety","text":"<p>No-throw guarantee: this function never throws exceptions.</p>"},{"location":"api/basic_json/get_ptr/#complexity","title":"Complexity","text":"<p>Constant.</p>"},{"location":"api/basic_json/get_ptr/#notes","title":"Notes","text":"<p>Undefined behavior</p> <p>The pointer becomes invalid if the underlying JSON object changes.</p> <p>Consider the following example code where the pointer <code>ptr</code> changes after the array is resized. As a result, reading or writing to <code>ptr</code> after the array change would be undefined behavior. The address of the first array element changes, because the underlying <code>std::vector</code> is resized after adding a fifth element.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    json j = {1, 2, 3, 4};\n    auto* ptr = j[0].get_ptr&lt;std::int64_t*&gt;();\n    std::cout &lt;&lt; \"value at \" &lt;&lt; ptr &lt;&lt; \" is \" &lt;&lt; *ptr &lt;&lt; std::endl;\n\n    j.push_back(5);\n\n    ptr = j[0].get_ptr&lt;std::int64_t*&gt;();\n    std::cout &lt;&lt; \"value at \" &lt;&lt; ptr &lt;&lt; \" is \" &lt;&lt; *ptr &lt;&lt; std::endl;\n}\n</code></pre> <p>Output:</p> <pre><code>value at 0x6000012fc1c8 is 1\nvalue at 0x6000029fc088 is 1\n</code></pre>"},{"location":"api/basic_json/get_ptr/#examples","title":"Examples","text":"Example <p>The example below shows how pointers to internal values of a JSON value can be requested. Note that no type conversions are made and a <code>nullptr</code> is returned if the value and the requested pointer type does not match.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create a JSON number\n    json value = 17;\n\n    // explicitly getting pointers\n    auto p1 = value.get_ptr&lt;const json::number_integer_t*&gt;();\n    auto p2 = value.get_ptr&lt;json::number_integer_t*&gt;();\n    auto p3 = value.get_ptr&lt;json::number_integer_t* const&gt;();\n    auto p4 = value.get_ptr&lt;const json::number_integer_t* const&gt;();\n    auto p5 = value.get_ptr&lt;json::number_float_t*&gt;();\n\n    // print the pointees\n    std::cout &lt;&lt; *p1 &lt;&lt; ' ' &lt;&lt; *p2 &lt;&lt; ' ' &lt;&lt; *p3 &lt;&lt; ' ' &lt;&lt; *p4 &lt;&lt; '\\n';\n    std::cout &lt;&lt; std::boolalpha &lt;&lt; (p5 == nullptr) &lt;&lt; '\\n';\n}\n</code></pre> <p>Output:</p> <pre><code>17 17 17 17\ntrue\n</code></pre>"},{"location":"api/basic_json/get_ptr/#see-also","title":"See also","text":"<ul> <li>get_ref() get a reference value</li> </ul>"},{"location":"api/basic_json/get_ptr/#version-history","title":"Version history","text":"<ul> <li>Added in version 1.0.0.</li> <li>Extended to binary types in version 3.8.0.</li> </ul>"},{"location":"api/basic_json/get_ref/","title":"nlohmann::basic_json::get_ref","text":"<pre><code>template&lt;typename ReferenceType&gt;\nReferenceType get_ref();\n\ntemplate&lt;typename ReferenceType&gt;\nconst ReferenceType get_ref() const;\n</code></pre> <p>Implicit reference access to the internally stored JSON value. No copies are made.</p>"},{"location":"api/basic_json/get_ref/#template-parameters","title":"Template parameters","text":"<code>ReferenceType</code> reference type; must be a reference to <code>array_t</code>, <code>object_t</code>, <code>string_t</code>, <code>boolean_t</code>, <code>number_integer_t</code>, or <code>number_unsigned_t</code>, <code>number_float_t</code>, or <code>binary_t</code>. Enforced by a static assertion."},{"location":"api/basic_json/get_ref/#return-value","title":"Return value","text":"<p>reference to the internally stored JSON value if the requested reference type fits to the JSON value; throws <code>type_error.303</code> otherwise</p>"},{"location":"api/basic_json/get_ref/#exception-safety","title":"Exception safety","text":"<p>Strong exception safety: if an exception occurs, the original value stays intact.</p>"},{"location":"api/basic_json/get_ref/#exceptions","title":"Exceptions","text":"<p>Throws <code>type_error.303</code> if the requested reference type does not match the stored JSON value type; example: <code>\"incompatible ReferenceType for get_ref, actual type is binary\"</code>.</p>"},{"location":"api/basic_json/get_ref/#complexity","title":"Complexity","text":"<p>Constant.</p>"},{"location":"api/basic_json/get_ref/#notes","title":"Notes","text":"<p>Undefined behavior</p> <p>The reference becomes invalid if the underlying JSON object changes.</p>"},{"location":"api/basic_json/get_ref/#examples","title":"Examples","text":"Example <p>The example shows several calls to <code>get_ref()</code>.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create a JSON number\n    json value = 17;\n\n    // explicitly getting references\n    auto r1 = value.get_ref&lt;const json::number_integer_t&amp;&gt;();\n    auto r2 = value.get_ref&lt;json::number_integer_t&amp;&gt;();\n\n    // print the values\n    std::cout &lt;&lt; r1 &lt;&lt; ' ' &lt;&lt; r2 &lt;&lt; '\\n';\n\n    // incompatible type throws exception\n    try\n    {\n        auto r3 = value.get_ref&lt;json::number_float_t&amp;&gt;();\n    }\n    catch (const json::type_error&amp; ex)\n    {\n        std::cout &lt;&lt; ex.what() &lt;&lt; '\\n';\n    }\n}\n</code></pre> <p>Output:</p> <pre><code>17 17\n[json.exception.type_error.303] incompatible ReferenceType for get_ref, actual type is number\n</code></pre>"},{"location":"api/basic_json/get_ref/#see-also","title":"See also","text":"<ul> <li>get_ptr() get a pointer value</li> </ul>"},{"location":"api/basic_json/get_ref/#version-history","title":"Version history","text":"<ul> <li>Added in version 1.1.0.</li> <li>Extended to binary types in version 3.8.0.</li> </ul>"},{"location":"api/basic_json/get_to/","title":"nlohmann::basic_json::get_to","text":"<pre><code>template&lt;typename ValueType&gt;\nValueType&amp; get_to(ValueType&amp; v) const noexcept(\n    noexcept(JSONSerializer&lt;ValueType&gt;::from_json(\n        std::declval&lt;const basic_json_t&amp;&gt;(), v)));\n</code></pre> <p>Explicit type conversion between the JSON value and a compatible value. The value is filled into the input parameter by calling the <code>json_serializer&lt;ValueType&gt;</code> <code>from_json()</code> method.</p> <p>The function is equivalent to executing <pre><code>ValueType v;\nJSONSerializer&lt;ValueType&gt;::from_json(*this, v);\n</code></pre></p> <p>This overload is chosen if:</p> <ul> <li><code>ValueType</code> is not <code>basic_json</code>,</li> <li><code>json_serializer&lt;ValueType&gt;</code> has a <code>from_json()</code> method of the form <code>void from_json(const basic_json&amp;, ValueType&amp;)</code></li> </ul>"},{"location":"api/basic_json/get_to/#template-parameters","title":"Template parameters","text":"<code>ValueType</code> the value type to return"},{"location":"api/basic_json/get_to/#return-value","title":"Return value","text":"<p>the input parameter, allowing chaining calls</p>"},{"location":"api/basic_json/get_to/#exceptions","title":"Exceptions","text":"<p>Depends on what <code>json_serializer&lt;ValueType&gt;</code> <code>from_json()</code> method throws</p>"},{"location":"api/basic_json/get_to/#examples","title":"Examples","text":"Example <p>The example below shows several conversions from JSON values to other types. There a few things to note: (1) Floating-point numbers can be converted to integers, (2) A JSON array can be converted to a standard <code>std::vector&lt;short&gt;</code>, (3) A JSON object can be converted to C++ associative containers such as <code>#cpp std::unordered_map&lt;std::string, json&gt;</code>.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;unordered_map&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create a JSON value with different types\n    json json_types =\n    {\n        {\"boolean\", true},\n        {\n            \"number\", {\n                {\"integer\", 42},\n                {\"floating-point\", 17.23}\n            }\n        },\n        {\"string\", \"Hello, world!\"},\n        {\"array\", {1, 2, 3, 4, 5}},\n        {\"null\", nullptr}\n    };\n\n    bool v1;\n    int v2;\n    short v3;\n    float v4;\n    int v5;\n    std::string v6;\n    std::vector&lt;short&gt; v7;\n    std::unordered_map&lt;std::string, json&gt; v8;\n\n    // use explicit conversions\n    json_types[\"boolean\"].get_to(v1);\n    json_types[\"number\"][\"integer\"].get_to(v2);\n    json_types[\"number\"][\"integer\"].get_to(v3);\n    json_types[\"number\"][\"floating-point\"].get_to(v4);\n    json_types[\"number\"][\"floating-point\"].get_to(v5);\n    json_types[\"string\"].get_to(v6);\n    json_types[\"array\"].get_to(v7);\n    json_types.get_to(v8);\n\n    // print the conversion results\n    std::cout &lt;&lt; v1 &lt;&lt; '\\n';\n    std::cout &lt;&lt; v2 &lt;&lt; ' ' &lt;&lt; v3 &lt;&lt; '\\n';\n    std::cout &lt;&lt; v4 &lt;&lt; ' ' &lt;&lt; v5 &lt;&lt; '\\n';\n    std::cout &lt;&lt; v6 &lt;&lt; '\\n';\n\n    for (auto i : v7)\n    {\n        std::cout &lt;&lt; i &lt;&lt; ' ';\n    }\n    std::cout &lt;&lt; \"\\n\\n\";\n\n    for (auto i : v8)\n    {\n        std::cout &lt;&lt; i.first &lt;&lt; \": \" &lt;&lt; i.second &lt;&lt; '\\n';\n    }\n}\n</code></pre> <p>Output:</p> <pre><code>1\n42 42\n17.23 17\nHello, world!\n1 2 3 4 5 \n\nstring: \"Hello, world!\"\nnumber: {\"floating-point\":17.23,\"integer\":42}\nnull: null\nboolean: true\narray: [1,2,3,4,5]\n</code></pre>"},{"location":"api/basic_json/get_to/#version-history","title":"Version history","text":"<ul> <li>Since version 3.3.0.</li> </ul>"},{"location":"api/basic_json/input_format_t/","title":"nlohmann::basic_json::input_format_t","text":"<pre><code>enum class input_format_t {\n    json,\n    cbor,\n    msgpack,\n    ubjson,\n    bson,\n    bjdata\n};\n</code></pre> <p>This enumeration is used in the <code>sax_parse</code> function to choose the input format to parse:</p> json JSON (JavaScript Object Notation) cbor CBOR (Concise Binary Object Representation) msgpack MessagePack ubjson UBJSON (Universal Binary JSON) bson BSON (Binary JSON) bjdata BJData (Binary JData)"},{"location":"api/basic_json/input_format_t/#examples","title":"Examples","text":"Example <p>The example below shows how an <code>input_format_t</code> enum value is passed to <code>sax_parse</code> to set the input format to CBOR.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;iomanip&gt;\n#include &lt;sstream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\n// a simple event consumer that collects string representations of the passed\n// values; note inheriting from json::json_sax_t is not required, but can\n// help not to forget a required function\nclass sax_event_consumer : public json::json_sax_t\n{\n  public:\n    std::vector&lt;std::string&gt; events;\n\n    bool null() override\n    {\n        events.push_back(\"null()\");\n        return true;\n    }\n\n    bool boolean(bool val) override\n    {\n        events.push_back(\"boolean(val=\" + std::string(val ? \"true\" : \"false\") + \")\");\n        return true;\n    }\n\n    bool number_integer(number_integer_t val) override\n    {\n        events.push_back(\"number_integer(val=\" + std::to_string(val) + \")\");\n        return true;\n    }\n\n    bool number_unsigned(number_unsigned_t val) override\n    {\n        events.push_back(\"number_unsigned(val=\" + std::to_string(val) + \")\");\n        return true;\n    }\n\n    bool number_float(number_float_t val, const string_t&amp; s) override\n    {\n        events.push_back(\"number_float(val=\" + std::to_string(val) + \", s=\" + s + \")\");\n        return true;\n    }\n\n    bool string(string_t&amp; val) override\n    {\n        events.push_back(\"string(val=\" + val + \")\");\n        return true;\n    }\n\n    bool start_object(std::size_t elements) override\n    {\n        events.push_back(\"start_object(elements=\" + std::to_string(elements) + \")\");\n        return true;\n    }\n\n    bool end_object() override\n    {\n        events.push_back(\"end_object()\");\n        return true;\n    }\n\n    bool start_array(std::size_t elements) override\n    {\n        events.push_back(\"start_array(elements=\" + std::to_string(elements) + \")\");\n        return true;\n    }\n\n    bool end_array() override\n    {\n        events.push_back(\"end_array()\");\n        return true;\n    }\n\n    bool key(string_t&amp; val) override\n    {\n        events.push_back(\"key(val=\" + val + \")\");\n        return true;\n    }\n\n    bool binary(json::binary_t&amp; val) override\n    {\n        events.push_back(\"binary(val=[...])\");\n        return true;\n    }\n\n    bool parse_error(std::size_t position, const std::string&amp; last_token, const json::exception&amp; ex) override\n    {\n        events.push_back(\"parse_error(position=\" + std::to_string(position) + \", last_token=\" + last_token + \",\\n            ex=\" + std::string(ex.what()) + \")\");\n        return false;\n    }\n};\n\nint main()\n{\n    // CBOR byte string\n    std::vector&lt;std::uint8_t&gt; vec = {{0x44, 0xcA, 0xfe, 0xba, 0xbe}};\n\n    // create a SAX event consumer object\n    sax_event_consumer sec;\n\n    // parse CBOR\n    bool result = json::sax_parse(vec, &amp;sec, json::input_format_t::cbor);\n\n    // output the recorded events\n    for (auto&amp; event : sec.events)\n    {\n        std::cout &lt;&lt; event &lt;&lt; \"\\n\";\n    }\n\n    // output the result of sax_parse\n    std::cout &lt;&lt; \"\\nresult: \" &lt;&lt; std::boolalpha &lt;&lt; result &lt;&lt; std::endl;\n}\n</code></pre> <p>Output:</p> <pre><code>binary(val=[...])\n\nresult: true\n</code></pre>"},{"location":"api/basic_json/input_format_t/#version-history","title":"Version history","text":"<ul> <li>Added in version 3.2.0.</li> </ul>"},{"location":"api/basic_json/insert/","title":"nlohmann::basic_json::insert","text":"<pre><code>// (1)\niterator insert(const_iterator pos, const basic_json&amp; val);\niterator insert(const_iterator pos, basic_json&amp;&amp; val);\n\n// (2)\niterator insert(const_iterator pos, size_type cnt, const basic_json&amp; val);\n\n// (3)\niterator insert(const_iterator pos, const_iterator first, const_iterator last);\n\n// (4)\niterator insert(const_iterator pos, initializer_list_t ilist);\n\n// (5)\nvoid insert(const_iterator first, const_iterator last);\n</code></pre> <ol> <li>Inserts element <code>val</code> into an array before iterator <code>pos</code>.</li> <li>Inserts <code>cnt</code> copies of <code>val</code> into an array before iterator <code>pos</code>.</li> <li>Inserts elements from range <code>[first, last)</code> into an array before iterator <code>pos</code>.</li> <li>Inserts elements from initializer list <code>ilist</code> into an array before iterator <code>pos</code>.</li> <li>Inserts elements from range <code>[first, last)</code> into an object.</li> </ol>"},{"location":"api/basic_json/insert/#iterator-invalidation","title":"Iterator invalidation","text":"<p>For all cases where an element is added to an array, a reallocation can happen, in which case all iterators (including the <code>end()</code> iterator) and all references to the elements are invalidated. Otherwise, only the <code>end()</code> iterator is invalidated. Also, any iterator or reference after the insertion point will point to the same index, which is now a different value.</p> <p>For <code>ordered_json</code>, also adding an element to an object can yield a reallocation which again invalidates all iterators and all references. Also, any iterator or reference after the insertion point will point to the same index, which is now a different value.</p>"},{"location":"api/basic_json/insert/#parameters","title":"Parameters","text":"<code>pos</code> (in) iterator before which the content will be inserted; may be the <code>end()</code> iterator <code>val</code> (in) value to insert <code>cnt</code> (in) number of copies of <code>val</code> to insert <code>first</code> (in) the start of the range of elements to insert <code>last</code> (in) the end of the range of elements to insert <code>ilist</code> (in) initializer list to insert the values from"},{"location":"api/basic_json/insert/#return-value","title":"Return value","text":"<ol> <li>iterator pointing to the inserted <code>val</code>.</li> <li>iterator pointing to the first element inserted, or <code>pos</code> if <code>cnt==0</code></li> <li>iterator pointing to the first element inserted, or <code>pos</code> if <code>first==last</code></li> <li>iterator pointing to the first element inserted, or <code>pos</code> if <code>ilist</code> is empty</li> <li>(none)</li> </ol>"},{"location":"api/basic_json/insert/#exception-safety","title":"Exception safety","text":"<p>Strong exception safety: if an exception occurs, the original value stays intact.</p>"},{"location":"api/basic_json/insert/#exceptions","title":"Exceptions","text":"<ol> <li>The function can throw the following exceptions:<ul> <li>Throws <code>type_error.309</code> if called on JSON values other than   arrays; example: <code>\"cannot use insert() with string\"</code></li> <li>Throws <code>invalid_iterator.202</code> if called on an   iterator which does not belong to the current JSON value; example: <code>\"iterator does not fit current value\"</code></li> </ul> </li> <li>The function can throw the following exceptions:<ul> <li>Throws <code>type_error.309</code> if called on JSON values other than   arrays; example: <code>\"cannot use insert() with string\"</code></li> <li>Throws <code>invalid_iterator.202</code> if called on an   iterator which does not belong to the current JSON value; example: <code>\"iterator does not fit current value\"</code></li> </ul> </li> <li>The function can throw the following exceptions:<ul> <li>Throws <code>type_error.309</code> if called on JSON values other than   arrays; example: <code>\"cannot use insert() with string\"</code></li> <li>Throws <code>invalid_iterator.202</code> if called on an   iterator which does not belong to the current JSON value; example: <code>\"iterator does not fit current value\"</code></li> <li>Throws <code>invalid_iterator.210</code> if <code>first</code> and <code>last</code>   do not belong to the same JSON value; example: <code>\"iterators do not fit\"</code></li> <li>Throws <code>invalid_iterator.211</code> if <code>first</code> or <code>last</code>   are iterators into container for which insert is called; example: <code>\"passed iterators may not belong to container\"</code></li> </ul> </li> <li>The function can throw the following exceptions:<ul> <li>Throws <code>type_error.309</code> if called on JSON values other than   arrays; example: <code>\"cannot use insert() with string\"</code></li> <li>Throws <code>invalid_iterator.202</code> if called on an   iterator which does not belong to the current JSON value; example: <code>\"iterator does not fit current value\"</code></li> </ul> </li> <li>The function can throw the following exceptions:<ul> <li>Throws <code>type_error.309</code> if called on JSON values other than   objects; example: <code>\"cannot use insert() with string\"</code></li> <li>Throws <code>invalid_iterator.202</code> if called on an   iterator which does not belong to the current JSON value; example: <code>\"iterator does not fit current value\"</code></li> <li>Throws <code>invalid_iterator.210</code> if <code>first</code> and <code>last</code>   do not belong to the same JSON value; example: <code>\"iterators do not fit\"</code></li> </ul> </li> </ol>"},{"location":"api/basic_json/insert/#complexity","title":"Complexity","text":"<ol> <li>Constant plus linear in the distance between <code>pos</code> and end of the container.</li> <li>Linear in <code>cnt</code> plus linear in the distance between <code>pos</code> and end of the container.</li> <li>Linear in <code>std::distance(first, last)</code> plus linear in the distance between <code>pos</code> and end of the container.</li> <li>Linear in <code>ilist.size()</code> plus linear in the distance between <code>pos</code> and end of the container.</li> <li>Logarithmic: <code>O(N*log(size() + N))</code>, where <code>N</code> is the number of elements to insert.</li> </ol>"},{"location":"api/basic_json/insert/#examples","title":"Examples","text":"Example (1): insert element into array <p>The example shows how <code>insert()</code> is used.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create a JSON array\n    json v = {1, 2, 3, 4};\n\n    // insert number 10 before number 3\n    auto new_pos = v.insert(v.begin() + 2, 10);\n\n    // output new array and result of insert call\n    std::cout &lt;&lt; *new_pos &lt;&lt; '\\n';\n    std::cout &lt;&lt; v &lt;&lt; '\\n';\n}\n</code></pre> <p>Output:</p> <pre><code>10\n[1,2,10,3,4]\n</code></pre> Example (2): insert copies of element into array <p>The example shows how <code>insert()</code> is used.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create a JSON array\n    json v = {1, 2, 3, 4};\n\n    // insert number 7 copies of number 7 before number 3\n    auto new_pos = v.insert(v.begin() + 2, 7, 7);\n\n    // output new array and result of insert call\n    std::cout &lt;&lt; *new_pos &lt;&lt; '\\n';\n    std::cout &lt;&lt; v &lt;&lt; '\\n';\n}\n</code></pre> <p>Output:</p> <pre><code>7\n[1,2,7,7,7,7,7,7,7,3,4]\n</code></pre> Example (3): insert a range of elements into an array <p>The example shows how <code>insert()</code> is used.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create a JSON array\n    json v = {1, 2, 3, 4};\n\n    // create a JSON array to copy values from\n    json v2 = {\"one\", \"two\", \"three\", \"four\"};\n\n    // insert range from v2 before the end of array v\n    auto new_pos = v.insert(v.end(), v2.begin(), v2.end());\n\n    // output new array and result of insert call\n    std::cout &lt;&lt; *new_pos &lt;&lt; '\\n';\n    std::cout &lt;&lt; v &lt;&lt; '\\n';\n}\n</code></pre> <p>Output:</p> <pre><code>\"one\"\n[1,2,3,4,\"one\",\"two\",\"three\",\"four\"]\n</code></pre> Example (4): insert elements from an initializer list into an array <p>The example shows how <code>insert()</code> is used.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create a JSON array\n    json v = {1, 2, 3, 4};\n\n    // insert range from v2 before the end of array v\n    auto new_pos = v.insert(v.end(), {7, 8, 9});\n\n    // output new array and result of insert call\n    std::cout &lt;&lt; *new_pos &lt;&lt; '\\n';\n    std::cout &lt;&lt; v &lt;&lt; '\\n';\n}\n</code></pre> <p>Output:</p> <pre><code>7\n[1,2,3,4,7,8,9]\n</code></pre> Example (5): insert a range of elements into an object <p>The example shows how <code>insert()</code> is used.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create two JSON objects\n    json j1 = {{\"one\", \"eins\"}, {\"two\", \"zwei\"}};\n    json j2 = {{\"eleven\", \"elf\"}, {\"seventeen\", \"siebzehn\"}};\n\n    // output objects\n    std::cout &lt;&lt; j1 &lt;&lt; '\\n';\n    std::cout &lt;&lt; j2 &lt;&lt; '\\n';\n\n    // insert range from j2 to j1\n    j1.insert(j2.begin(), j2.end());\n\n    // output result of insert call\n    std::cout &lt;&lt; j1 &lt;&lt; '\\n';\n}\n</code></pre> <p>Output:</p> <pre><code>{\"one\":\"eins\",\"two\":\"zwei\"}\n{\"eleven\":\"elf\",\"seventeen\":\"siebzehn\"}\n{\"eleven\":\"elf\",\"one\":\"eins\",\"seventeen\":\"siebzehn\",\"two\":\"zwei\"}\n</code></pre>"},{"location":"api/basic_json/insert/#version-history","title":"Version history","text":"<ol> <li>Added in version 1.0.0.</li> <li>Added in version 1.0.0.</li> <li>Added in version 1.0.0.</li> <li>Added in version 1.0.0.</li> <li>Added in version 3.0.0.</li> </ol>"},{"location":"api/basic_json/invalid_iterator/","title":"nlohmann::basic_json::invalid_iterator","text":"<pre><code>class invalid_iterator : public exception;\n</code></pre> <p>This exception is thrown if iterators passed to a library function do not match the expected semantics.</p> <p>Exceptions have ids 2xx (see list of iterator errors).</p> <pre><code>classDiagram\n  direction LR\n\n    class std_exception [\"std::exception\"] {\n        &lt;&lt;interface&gt;&gt;\n    }\n\n    class json_exception [\"basic_json::exception\"] {\n        +const int id\n        +const char* what() const\n    }\n\n    class json_parse_error [\"basic_json::parse_error\"] {\n        +const std::size_t byte\n    }\n\n    class json_invalid_iterator [\"basic_json::invalid_iterator\"]\n    class json_type_error [\"basic_json::type_error\"]\n    class json_out_of_range [\"basic_json::out_of_range\"]\n    class json_other_error [\"basic_json::other_error\"]\n\n    std_exception &lt;|-- json_exception\n    json_exception &lt;|-- json_parse_error\n    json_exception &lt;|-- json_invalid_iterator\n    json_exception &lt;|-- json_type_error\n    json_exception &lt;|-- json_out_of_range\n    json_exception &lt;|-- json_other_error\n\n    style json_invalid_iterator fill:#CCCCFF</code></pre>"},{"location":"api/basic_json/invalid_iterator/#member-functions","title":"Member functions","text":"<ul> <li>what - returns explanatory string</li> </ul>"},{"location":"api/basic_json/invalid_iterator/#member-variables","title":"Member variables","text":"<ul> <li>id - the id of the exception</li> </ul>"},{"location":"api/basic_json/invalid_iterator/#examples","title":"Examples","text":"Example <p>The following code shows how a <code>invalid_iterator</code> exception can be caught.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    try\n    {\n        // calling iterator::key() on non-object iterator\n        json j = \"string\";\n        json::iterator it = j.begin();\n        auto k = it.key();\n    }\n    catch (const json::invalid_iterator&amp; e)\n    {\n        // output exception information\n        std::cout &lt;&lt; \"message: \" &lt;&lt; e.what() &lt;&lt; '\\n'\n                  &lt;&lt; \"exception id: \" &lt;&lt; e.id &lt;&lt; std::endl;\n    }\n}\n</code></pre> <p>Output:</p> <pre><code>message: [json.exception.invalid_iterator.207] cannot use key() for non-object iterators\nexception id: 207\n</code></pre>"},{"location":"api/basic_json/invalid_iterator/#see-also","title":"See also","text":"<ul> <li>List of iterator errors</li> <li><code>parse_error</code> for exceptions indicating a parse error</li> <li><code>type_error</code> for exceptions indicating executing a member function with a wrong type</li> <li><code>out_of_range</code> for exceptions indicating access out of the defined range</li> <li><code>other_error</code> for exceptions indicating other library errors</li> </ul>"},{"location":"api/basic_json/invalid_iterator/#version-history","title":"Version history","text":"<ul> <li>Since version 3.0.0.</li> </ul>"},{"location":"api/basic_json/is_array/","title":"nlohmann::basic_json::is_array","text":"<pre><code>constexpr bool is_array() const noexcept;\n</code></pre> <p>This function returns <code>true</code> if and only if the JSON value is an array.</p>"},{"location":"api/basic_json/is_array/#return-value","title":"Return value","text":"<p><code>true</code> if type is an array, <code>false</code> otherwise.</p>"},{"location":"api/basic_json/is_array/#exception-safety","title":"Exception safety","text":"<p>No-throw guarantee: this member function never throws exceptions.</p>"},{"location":"api/basic_json/is_array/#complexity","title":"Complexity","text":"<p>Constant.</p>"},{"location":"api/basic_json/is_array/#examples","title":"Examples","text":"Example <p>The following code exemplifies <code>is_array()</code> for all JSON types.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create JSON values\n    json j_null;\n    json j_boolean = true;\n    json j_number_integer = 17;\n    json j_number_unsigned_integer = 12345678987654321u;\n    json j_number_float = 23.42;\n    json j_object = {{\"one\", 1}, {\"two\", 2}};\n    json j_array = {1, 2, 4, 8, 16};\n    json j_string = \"Hello, world\";\n    json j_binary = json::binary({1, 2, 3});\n\n    // call is_array()\n    std::cout &lt;&lt; std::boolalpha;\n    std::cout &lt;&lt; j_null.is_array() &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_boolean.is_array() &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_number_integer.is_array() &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_number_unsigned_integer.is_array() &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_number_float.is_array() &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_object.is_array() &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_array.is_array() &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_string.is_array() &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_binary.is_array() &lt;&lt; '\\n';\n}\n</code></pre> <p>Output:</p> <pre><code>false\nfalse\nfalse\nfalse\nfalse\nfalse\ntrue\nfalse\nfalse\n</code></pre>"},{"location":"api/basic_json/is_array/#version-history","title":"Version history","text":"<ul> <li>Added in version 1.0.0.</li> </ul>"},{"location":"api/basic_json/is_binary/","title":"nlohmann::basic_json::is_binary","text":"<pre><code>constexpr bool is_binary() const noexcept;\n</code></pre> <p>This function returns <code>true</code> if and only if the JSON value is a binary array.</p>"},{"location":"api/basic_json/is_binary/#return-value","title":"Return value","text":"<p><code>true</code> if type is binary, <code>false</code> otherwise.</p>"},{"location":"api/basic_json/is_binary/#exception-safety","title":"Exception safety","text":"<p>No-throw guarantee: this member function never throws exceptions.</p>"},{"location":"api/basic_json/is_binary/#complexity","title":"Complexity","text":"<p>Constant.</p>"},{"location":"api/basic_json/is_binary/#examples","title":"Examples","text":"Example <p>The following code exemplifies <code>is_binary()</code> for all JSON types.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create JSON values\n    json j_null;\n    json j_boolean = true;\n    json j_number_integer = 17;\n    json j_number_unsigned_integer = 12345678987654321u;\n    json j_number_float = 23.42;\n    json j_object = {{\"one\", 1}, {\"two\", 2}};\n    json j_array = {1, 2, 4, 8, 16};\n    json j_string = \"Hello, world\";\n    json j_binary = json::binary({1, 2, 3});\n\n    // call is_binary()\n    std::cout &lt;&lt; std::boolalpha;\n    std::cout &lt;&lt; j_null.is_binary() &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_boolean.is_binary() &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_number_integer.is_binary() &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_number_unsigned_integer.is_binary() &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_number_float.is_binary() &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_object.is_binary() &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_array.is_binary() &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_string.is_binary() &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_binary.is_binary() &lt;&lt; '\\n';\n}\n</code></pre> <p>Output:</p> <pre><code>false\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\ntrue\n</code></pre>"},{"location":"api/basic_json/is_binary/#version-history","title":"Version history","text":"<ul> <li>Added in version 3.8.0.</li> </ul>"},{"location":"api/basic_json/is_boolean/","title":"nlohmann::basic_json::is_boolean","text":"<pre><code>constexpr bool is_boolean() const noexcept;\n</code></pre> <p>This function returns <code>true</code> if and only if the JSON value is <code>true</code> or <code>false</code>.</p>"},{"location":"api/basic_json/is_boolean/#return-value","title":"Return value","text":"<p><code>true</code> if type is boolean, <code>false</code> otherwise.</p>"},{"location":"api/basic_json/is_boolean/#exception-safety","title":"Exception safety","text":"<p>No-throw guarantee: this member function never throws exceptions.</p>"},{"location":"api/basic_json/is_boolean/#complexity","title":"Complexity","text":"<p>Constant.</p>"},{"location":"api/basic_json/is_boolean/#examples","title":"Examples","text":"Example <p>The following code exemplifies <code>is_boolean()</code> for all JSON types.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create JSON values\n    json j_null;\n    json j_boolean = true;\n    json j_number_integer = 17;\n    json j_number_unsigned_integer = 12345678987654321u;\n    json j_number_float = 23.42;\n    json j_object = {{\"one\", 1}, {\"two\", 2}};\n    json j_array = {1, 2, 4, 8, 16};\n    json j_string = \"Hello, world\";\n    json j_binary = json::binary({1, 2, 3});\n\n    // call is_boolean()\n    std::cout &lt;&lt; std::boolalpha;\n    std::cout &lt;&lt; j_null.is_boolean() &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_boolean.is_boolean() &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_number_integer.is_boolean() &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_number_unsigned_integer.is_boolean() &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_number_float.is_boolean() &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_object.is_boolean() &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_array.is_boolean() &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_string.is_boolean() &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_binary.is_boolean() &lt;&lt; '\\n';\n}\n</code></pre> <p>Output:</p> <pre><code>false\ntrue\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\n</code></pre>"},{"location":"api/basic_json/is_boolean/#version-history","title":"Version history","text":"<ul> <li>Added in version 1.0.0.</li> </ul>"},{"location":"api/basic_json/is_discarded/","title":"nlohmann::basic_json::is_discarded","text":"<pre><code>constexpr bool is_discarded() const noexcept;\n</code></pre> <p>This function returns <code>true</code> for a JSON value if either:</p> <ul> <li>the value was discarded during parsing with a callback function (see <code>parser_callback_t</code>), or</li> <li>the value is the result of parsing invalid JSON with parameter <code>allow_exceptions</code> set to <code>false</code>; see   <code>parse</code> for more information.</li> </ul>"},{"location":"api/basic_json/is_discarded/#return-value","title":"Return value","text":"<p><code>true</code> if type is discarded, <code>false</code> otherwise.</p>"},{"location":"api/basic_json/is_discarded/#exception-safety","title":"Exception safety","text":"<p>No-throw guarantee: this member function never throws exceptions.</p>"},{"location":"api/basic_json/is_discarded/#complexity","title":"Complexity","text":"<p>Constant.</p>"},{"location":"api/basic_json/is_discarded/#notes","title":"Notes","text":"<p>Comparisons</p> <p>Discarded values are never compared equal with <code>operator==</code>. That is, checking whether a JSON value <code>j</code> is discarded will only work via:</p> <pre><code>j.is_discarded()\n</code></pre> <p>because</p> <pre><code>j == json::value_t::discarded\n</code></pre> <p>will always be <code>false</code>.</p> <p>Removal during parsing with callback functions</p> <p>When a value is discarded by a callback function (see <code>parser_callback_t</code>) during parsing, then it is removed when it is part of a structured value. For instance, if the second value of an array is discarded, instead of <code>[null, discarded, false]</code>, the array <code>[null, false]</code> is returned. Only if the top-level value is discarded, the return value of the <code>parse</code> call is discarded.</p> <p>This function will always be <code>false</code> for JSON values after parsing. That is, discarded values can only occur during parsing, but will be removed when inside a structured value or replaced by null in other cases.</p>"},{"location":"api/basic_json/is_discarded/#examples","title":"Examples","text":"Example <p>The following code exemplifies <code>is_discarded()</code> for all JSON types.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create JSON values\n    json j_null;\n    json j_boolean = true;\n    json j_number_integer = 17;\n    json j_number_unsigned_integer = 12345678987654321u;\n    json j_number_float = 23.42;\n    json j_object = {{\"one\", 1}, {\"two\", 2}};\n    json j_array = {1, 2, 4, 8, 16};\n    json j_string = \"Hello, world\";\n    json j_binary = json::binary({1, 2, 3});\n\n    // call is_discarded()\n    std::cout &lt;&lt; std::boolalpha;\n    std::cout &lt;&lt; j_null.is_discarded() &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_boolean.is_discarded() &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_number_integer.is_discarded() &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_number_unsigned_integer.is_discarded() &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_number_float.is_discarded() &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_object.is_discarded() &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_array.is_discarded() &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_string.is_discarded() &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_binary.is_discarded() &lt;&lt; '\\n';\n}\n</code></pre> <p>Output:</p> <pre><code>false\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\n</code></pre>"},{"location":"api/basic_json/is_discarded/#version-history","title":"Version history","text":"<ul> <li>Added in version 1.0.0.</li> </ul>"},{"location":"api/basic_json/is_null/","title":"nlohmann::basic_json::is_null","text":"<pre><code>constexpr bool is_null() const noexcept;\n</code></pre> <p>This function returns <code>true</code> if and only if the JSON value is <code>null</code>.</p>"},{"location":"api/basic_json/is_null/#return-value","title":"Return value","text":"<p><code>true</code> if type is <code>null</code>, <code>false</code> otherwise.</p>"},{"location":"api/basic_json/is_null/#exception-safety","title":"Exception safety","text":"<p>No-throw guarantee: this member function never throws exceptions.</p>"},{"location":"api/basic_json/is_null/#complexity","title":"Complexity","text":"<p>Constant.</p>"},{"location":"api/basic_json/is_null/#examples","title":"Examples","text":"Example <p>The following code exemplifies <code>is_null()</code> for all JSON types.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create JSON values\n    json j_null;\n    json j_boolean = true;\n    json j_number_integer = 17;\n    json j_number_unsigned_integer = 12345678987654321u;\n    json j_number_float = 23.42;\n    json j_object = {{\"one\", 1}, {\"two\", 2}};\n    json j_array = {1, 2, 4, 8, 16};\n    json j_string = \"Hello, world\";\n    json j_binary = json::binary({1, 2, 3});\n\n    // call is_null()\n    std::cout &lt;&lt; std::boolalpha;\n    std::cout &lt;&lt; j_null.is_null() &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_boolean.is_null() &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_number_integer.is_null() &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_number_unsigned_integer.is_null() &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_number_float.is_null() &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_object.is_null() &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_array.is_null() &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_string.is_null() &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_binary.is_null() &lt;&lt; '\\n';\n}\n</code></pre> <p>Output:</p> <pre><code>true\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\n</code></pre>"},{"location":"api/basic_json/is_null/#version-history","title":"Version history","text":"<ul> <li>Added in version 1.0.0.</li> </ul>"},{"location":"api/basic_json/is_number/","title":"nlohmann::basic_json::is_number","text":"<pre><code>constexpr bool is_number() const noexcept;\n</code></pre> <p>This function returns <code>true</code> if and only if the JSON value is a number. This includes both integer (signed and unsigned) and floating-point values.</p>"},{"location":"api/basic_json/is_number/#return-value","title":"Return value","text":"<p><code>true</code> if type is number (regardless whether integer, unsigned integer, or floating-type), <code>false</code> otherwise.</p>"},{"location":"api/basic_json/is_number/#exception-safety","title":"Exception safety","text":"<p>No-throw guarantee: this member function never throws exceptions.</p>"},{"location":"api/basic_json/is_number/#complexity","title":"Complexity","text":"<p>Constant.</p>"},{"location":"api/basic_json/is_number/#possible-implementation","title":"Possible implementation","text":"<pre><code>constexpr bool is_number() const noexcept\n{\n    return is_number_integer() || is_number_float();\n}\n</code></pre>"},{"location":"api/basic_json/is_number/#examples","title":"Examples","text":"Example <p>The following code exemplifies <code>is_number()</code> for all JSON types.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create JSON values\n    json j_null;\n    json j_boolean = true;\n    json j_number_integer = 17;\n    json j_number_unsigned_integer = 12345678987654321u;\n    json j_number_float = 23.42;\n    json j_object = {{\"one\", 1}, {\"two\", 2}};\n    json j_array = {1, 2, 4, 8, 16};\n    json j_string = \"Hello, world\";\n    json j_binary = json::binary({1, 2, 3});\n\n    // call is_number()\n    std::cout &lt;&lt; std::boolalpha;\n    std::cout &lt;&lt; j_null.is_number() &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_boolean.is_number() &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_number_integer.is_number() &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_number_unsigned_integer.is_number() &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_number_float.is_number() &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_object.is_number() &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_array.is_number() &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_string.is_number() &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_binary.is_number() &lt;&lt; '\\n';\n}\n</code></pre> <p>Output:</p> <pre><code>false\nfalse\ntrue\ntrue\ntrue\nfalse\nfalse\nfalse\nfalse\n</code></pre>"},{"location":"api/basic_json/is_number/#see-also","title":"See also","text":"<ul> <li>is_number_integer() check if the value is an integer or unsigned integer number</li> <li>is_number_unsigned() check if the value is an unsigned integer number</li> <li>is_number_float() check if the value is a floating-point number</li> </ul>"},{"location":"api/basic_json/is_number/#version-history","title":"Version history","text":"<ul> <li>Added in version 1.0.0.</li> <li>Extended to also return <code>true</code> for unsigned integers in 2.0.0.</li> </ul>"},{"location":"api/basic_json/is_number_float/","title":"nlohmann::basic_json::is_number_float","text":"<pre><code>constexpr bool is_number_float() const noexcept;\n</code></pre> <p>This function returns <code>true</code> if and only if the JSON value is a floating-point number. This excludes signed and unsigned integer values.</p>"},{"location":"api/basic_json/is_number_float/#return-value","title":"Return value","text":"<p><code>true</code> if type is a floating-point number, <code>false</code> otherwise.</p>"},{"location":"api/basic_json/is_number_float/#exception-safety","title":"Exception safety","text":"<p>No-throw guarantee: this member function never throws exceptions.</p>"},{"location":"api/basic_json/is_number_float/#complexity","title":"Complexity","text":"<p>Constant.</p>"},{"location":"api/basic_json/is_number_float/#examples","title":"Examples","text":"Example <p>The following code exemplifies <code>is_number_float()</code> for all JSON types.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create JSON values\n    json j_null;\n    json j_boolean = true;\n    json j_number_integer = 17;\n    json j_number_unsigned_integer = 12345678987654321u;\n    json j_number_float = 23.42;\n    json j_object = {{\"one\", 1}, {\"two\", 2}};\n    json j_array = {1, 2, 4, 8, 16};\n    json j_string = \"Hello, world\";\n    json j_binary = json::binary({1, 2, 3});\n\n    // call is_number_float()\n    std::cout &lt;&lt; std::boolalpha;\n    std::cout &lt;&lt; j_null.is_number_float() &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_boolean.is_number_float() &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_number_integer.is_number_float() &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_number_unsigned_integer.is_number_float() &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_number_float.is_number_float() &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_object.is_number_float() &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_array.is_number_float() &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_string.is_number_float() &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_binary.is_number_float() &lt;&lt; '\\n';\n}\n</code></pre> <p>Output:</p> <pre><code>false\nfalse\nfalse\nfalse\ntrue\nfalse\nfalse\nfalse\nfalse\n</code></pre>"},{"location":"api/basic_json/is_number_float/#see-also","title":"See also","text":"<ul> <li>is_number() check if the value is a number</li> <li>is_number_integer() check if the value is an integer or unsigned integer number</li> <li>is_number_unsigned() check if the value is an unsigned integer number</li> </ul>"},{"location":"api/basic_json/is_number_float/#version-history","title":"Version history","text":"<ul> <li>Added in version 1.0.0.</li> </ul>"},{"location":"api/basic_json/is_number_integer/","title":"nlohmann::basic_json::is_number_integer","text":"<pre><code>constexpr bool is_number_integer() const noexcept;\n</code></pre> <p>This function returns <code>true</code> if and only if the JSON value is a signed or unsigned integer number. This excludes floating-point values.</p>"},{"location":"api/basic_json/is_number_integer/#return-value","title":"Return value","text":"<p><code>true</code> if type is an integer or unsigned integer number, <code>false</code> otherwise.</p>"},{"location":"api/basic_json/is_number_integer/#exception-safety","title":"Exception safety","text":"<p>No-throw guarantee: this member function never throws exceptions.</p>"},{"location":"api/basic_json/is_number_integer/#complexity","title":"Complexity","text":"<p>Constant.</p>"},{"location":"api/basic_json/is_number_integer/#examples","title":"Examples","text":"Example <p>The following code exemplifies <code>is_number_integer()</code> for all JSON types.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create JSON values\n    json j_null;\n    json j_boolean = true;\n    json j_number_integer = 17;\n    json j_number_unsigned_integer = 12345678987654321u;\n    json j_number_float = 23.42;\n    json j_object = {{\"one\", 1}, {\"two\", 2}};\n    json j_array = {1, 2, 4, 8, 16};\n    json j_string = \"Hello, world\";\n    json j_binary = json::binary({1, 2, 3});\n\n    // call is_number_integer()\n    std::cout &lt;&lt; std::boolalpha;\n    std::cout &lt;&lt; j_null.is_number_integer() &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_boolean.is_number_integer() &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_number_integer.is_number_integer() &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_number_unsigned_integer.is_number_integer() &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_number_float.is_number_integer() &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_object.is_number_integer() &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_array.is_number_integer() &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_string.is_number_integer() &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_binary.is_number_integer() &lt;&lt; '\\n';\n}\n</code></pre> <p>Output:</p> <pre><code>false\nfalse\ntrue\ntrue\nfalse\nfalse\nfalse\nfalse\nfalse\n</code></pre>"},{"location":"api/basic_json/is_number_integer/#see-also","title":"See also","text":"<ul> <li>is_number() check if the value is a number</li> <li>is_number_unsigned() check if the value is an unsigned integer number</li> <li>is_number_float() check if the value is a floating-point number</li> </ul>"},{"location":"api/basic_json/is_number_integer/#version-history","title":"Version history","text":"<ul> <li>Added in version 1.0.0.</li> <li>Extended to also return <code>true</code> for unsigned integers in 2.0.0.</li> </ul>"},{"location":"api/basic_json/is_number_unsigned/","title":"nlohmann::basic_json::is_number_unsigned","text":"<pre><code>constexpr bool is_number_unsigned() const noexcept;\n</code></pre> <p>This function returns <code>true</code> if and only if the JSON value is an unsigned integer number. This excludes floating-point and signed integer values.</p>"},{"location":"api/basic_json/is_number_unsigned/#return-value","title":"Return value","text":"<p><code>true</code> if type is an unsigned integer number, <code>false</code> otherwise.</p>"},{"location":"api/basic_json/is_number_unsigned/#exception-safety","title":"Exception safety","text":"<p>No-throw guarantee: this member function never throws exceptions.</p>"},{"location":"api/basic_json/is_number_unsigned/#complexity","title":"Complexity","text":"<p>Constant.</p>"},{"location":"api/basic_json/is_number_unsigned/#examples","title":"Examples","text":"Example <p>The following code exemplifies <code>is_number_unsigned()</code> for all JSON types.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create JSON values\n    json j_null;\n    json j_boolean = true;\n    json j_number_integer = 17;\n    json j_number_unsigned_integer = 12345678987654321u;\n    json j_number_float = 23.42;\n    json j_object = {{\"one\", 1}, {\"two\", 2}};\n    json j_array = {1, 2, 4, 8, 16};\n    json j_string = \"Hello, world\";\n    json j_binary = json::binary({1, 2, 3});\n\n    // call is_number_unsigned()\n    std::cout &lt;&lt; std::boolalpha;\n    std::cout &lt;&lt; j_null.is_number_unsigned() &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_boolean.is_number_unsigned() &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_number_integer.is_number_unsigned() &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_number_unsigned_integer.is_number_unsigned() &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_number_float.is_number_unsigned() &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_object.is_number_unsigned() &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_array.is_number_unsigned() &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_string.is_number_unsigned() &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_binary.is_number_unsigned() &lt;&lt; '\\n';\n}\n</code></pre> <p>Output:</p> <pre><code>false\nfalse\nfalse\ntrue\nfalse\nfalse\nfalse\nfalse\nfalse\n</code></pre>"},{"location":"api/basic_json/is_number_unsigned/#see-also","title":"See also","text":"<ul> <li>is_number() check if the value is a number</li> <li>is_number_integer() check if the value is an integer or unsigned integer number</li> <li>is_number_float() check if the value is a floating-point number</li> </ul>"},{"location":"api/basic_json/is_number_unsigned/#version-history","title":"Version history","text":"<ul> <li>Added in version 2.0.0.</li> </ul>"},{"location":"api/basic_json/is_object/","title":"nlohmann::basic_json::is_object","text":"<pre><code>constexpr bool is_object() const noexcept;\n</code></pre> <p>This function returns <code>true</code> if and only if the JSON value is an object.</p>"},{"location":"api/basic_json/is_object/#return-value","title":"Return value","text":"<p><code>true</code> if type is an object, <code>false</code> otherwise.</p>"},{"location":"api/basic_json/is_object/#exception-safety","title":"Exception safety","text":"<p>No-throw guarantee: this member function never throws exceptions.</p>"},{"location":"api/basic_json/is_object/#complexity","title":"Complexity","text":"<p>Constant.</p>"},{"location":"api/basic_json/is_object/#examples","title":"Examples","text":"Example <p>The following code exemplifies <code>is_object()</code> for all JSON types.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create JSON values\n    json j_null;\n    json j_boolean = true;\n    json j_number_integer = 17;\n    json j_number_float = 23.42;\n    json j_number_unsigned_integer = 12345678987654321u;\n    json j_object = {{\"one\", 1}, {\"two\", 2}};\n    json j_array = {1, 2, 4, 8, 16};\n    json j_string = \"Hello, world\";\n    json j_binary = json::binary({1, 2, 3});\n\n    // call is_object()\n    std::cout &lt;&lt; std::boolalpha;\n    std::cout &lt;&lt; j_null.is_object() &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_boolean.is_object() &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_number_integer.is_object() &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_number_unsigned_integer.is_object() &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_number_float.is_object() &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_object.is_object() &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_array.is_object() &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_string.is_object() &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_binary.is_object() &lt;&lt; '\\n';\n}\n</code></pre> <p>Output:</p> <pre><code>false\nfalse\nfalse\nfalse\nfalse\ntrue\nfalse\nfalse\nfalse\n</code></pre>"},{"location":"api/basic_json/is_object/#version-history","title":"Version history","text":"<ul> <li>Added in version 1.0.0.</li> </ul>"},{"location":"api/basic_json/is_primitive/","title":"nlohmann::basic_json::is_primitive","text":"<pre><code>constexpr bool is_primitive() const noexcept;\n</code></pre> <p>This function returns <code>true</code> if and only if the JSON type is primitive (string, number, boolean, <code>null</code>, binary).</p>"},{"location":"api/basic_json/is_primitive/#return-value","title":"Return value","text":"<p><code>true</code> if type is primitive (string, number, boolean, <code>null</code>, or binary), <code>false</code> otherwise.</p>"},{"location":"api/basic_json/is_primitive/#exception-safety","title":"Exception safety","text":"<p>No-throw guarantee: this member function never throws exceptions.</p>"},{"location":"api/basic_json/is_primitive/#complexity","title":"Complexity","text":"<p>Constant.</p>"},{"location":"api/basic_json/is_primitive/#possible-implementation","title":"Possible implementation","text":"<pre><code>constexpr bool is_primitive() const noexcept\n{\n    return is_null() || is_string() || is_boolean() || is_number() || is_binary();\n}\n</code></pre>"},{"location":"api/basic_json/is_primitive/#notes","title":"Notes","text":"<p>The term primitive stems from RFC 8259:</p> <p>JSON can represent four primitive types (strings, numbers, booleans, and null) and two structured types (objects and arrays).</p> <p>This library extends primitive types to binary types, because binary types are roughly comparable to strings. Hence, <code>is_primitive()</code> returns <code>true</code> for binary values.</p>"},{"location":"api/basic_json/is_primitive/#examples","title":"Examples","text":"Example <p>The following code exemplifies <code>is_primitive()</code> for all JSON types.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create JSON values\n    json j_null;\n    json j_boolean = true;\n    json j_number_integer = 17;\n    json j_number_float = 23.42;\n    json j_number_unsigned_integer = 12345678987654321u;\n    json j_object = {{\"one\", 1}, {\"two\", 2}};\n    json j_array = {1, 2, 4, 8, 16};\n    json j_string = \"Hello, world\";\n    json j_binary = json::binary({1, 2, 3});\n\n    // call is_primitive()\n    std::cout &lt;&lt; std::boolalpha;\n    std::cout &lt;&lt; j_null.is_primitive() &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_boolean.is_primitive() &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_number_integer.is_primitive() &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_number_unsigned_integer.is_primitive() &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_number_float.is_primitive() &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_object.is_primitive() &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_array.is_primitive() &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_string.is_primitive() &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_binary.is_primitive() &lt;&lt; '\\n';\n}\n</code></pre> <p>Output:</p> <pre><code>true\ntrue\ntrue\ntrue\ntrue\nfalse\nfalse\ntrue\ntrue\n</code></pre>"},{"location":"api/basic_json/is_primitive/#see-also","title":"See also","text":"<ul> <li>is_structured() returns whether the JSON value is structured</li> <li>is_null() returns whether the JSON value is <code>null</code></li> <li>is_string() returns whether the JSON value is a string</li> <li>is_boolean() returns whether the JSON value is a boolean</li> <li>is_number() returns whether the JSON value is a number</li> <li>is_binary() returns whether the JSON value is a binary array</li> </ul>"},{"location":"api/basic_json/is_primitive/#version-history","title":"Version history","text":"<ul> <li>Added in version 1.0.0.</li> <li>Extended to return <code>true</code> for binary types in version 3.8.0.</li> </ul>"},{"location":"api/basic_json/is_string/","title":"nlohmann::basic_json::is_string","text":"<pre><code>constexpr bool is_string() const noexcept;\n</code></pre> <p>This function returns <code>true</code> if and only if the JSON value is a string.</p>"},{"location":"api/basic_json/is_string/#return-value","title":"Return value","text":"<p><code>true</code> if type is a string, <code>false</code> otherwise.</p>"},{"location":"api/basic_json/is_string/#exception-safety","title":"Exception safety","text":"<p>No-throw guarantee: this member function never throws exceptions.</p>"},{"location":"api/basic_json/is_string/#complexity","title":"Complexity","text":"<p>Constant.</p>"},{"location":"api/basic_json/is_string/#examples","title":"Examples","text":"Example <p>The following code exemplifies <code>is_string()</code> for all JSON types.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create JSON values\n    json j_null;\n    json j_boolean = true;\n    json j_number_integer = 17;\n    json j_number_float = 23.42;\n    json j_number_unsigned_integer = 12345678987654321u;\n    json j_object = {{\"one\", 1}, {\"two\", 2}};\n    json j_array = {1, 2, 4, 8, 16};\n    json j_string = \"Hello, world\";\n    json j_binary = json::binary({1, 2, 3});\n\n    // call is_string()\n    std::cout &lt;&lt; std::boolalpha;\n    std::cout &lt;&lt; j_null.is_string() &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_boolean.is_string() &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_number_integer.is_string() &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_number_unsigned_integer.is_string() &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_number_float.is_string() &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_object.is_string() &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_array.is_string() &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_string.is_string() &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_binary.is_string() &lt;&lt; '\\n';\n}\n</code></pre> <p>Output:</p> <pre><code>false\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\ntrue\nfalse\n</code></pre>"},{"location":"api/basic_json/is_string/#version-history","title":"Version history","text":"<ul> <li>Added in version 1.0.0.</li> </ul>"},{"location":"api/basic_json/is_structured/","title":"nlohmann::basic_json::is_structured","text":"<pre><code>constexpr bool is_structured() const noexcept;\n</code></pre> <p>This function returns <code>true</code> if and only if the JSON type is structured (array or object).</p>"},{"location":"api/basic_json/is_structured/#return-value","title":"Return value","text":"<p><code>true</code> if type is structured (array or object), <code>false</code> otherwise.</p>"},{"location":"api/basic_json/is_structured/#exception-safety","title":"Exception safety","text":"<p>No-throw guarantee: this member function never throws exceptions.</p>"},{"location":"api/basic_json/is_structured/#complexity","title":"Complexity","text":"<p>Constant.</p>"},{"location":"api/basic_json/is_structured/#possible-implementation","title":"Possible implementation","text":"<pre><code>constexpr bool is_structured() const noexcept\n{\n    return is_array() || is_object();\n}\n</code></pre>"},{"location":"api/basic_json/is_structured/#notes","title":"Notes","text":"<p>The term structured stems from RFC 8259:</p> <p>JSON can represent four primitive types (strings, numbers, booleans, and null) and two structured types (objects and arrays).</p> <p>Note that though strings are containers in C++, they are treated as primitive values in JSON.</p>"},{"location":"api/basic_json/is_structured/#examples","title":"Examples","text":"Example <p>The following code exemplifies <code>is_structured()</code> for all JSON types.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create JSON values\n    json j_null;\n    json j_boolean = true;\n    json j_number_integer = 17;\n    json j_number_float = 23.42;\n    json j_number_unsigned_integer = 12345678987654321u;\n    json j_object = {{\"one\", 1}, {\"two\", 2}};\n    json j_array = {1, 2, 4, 8, 16};\n    json j_string = \"Hello, world\";\n    json j_binary = json::binary({1, 2, 3});\n\n    // call is_structured()\n    std::cout &lt;&lt; std::boolalpha;\n    std::cout &lt;&lt; j_null.is_structured() &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_boolean.is_structured() &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_number_integer.is_structured() &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_number_unsigned_integer.is_structured() &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_number_float.is_structured() &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_object.is_structured() &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_array.is_structured() &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_string.is_structured() &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_binary.is_structured() &lt;&lt; '\\n';\n}\n</code></pre> <p>Output:</p> <pre><code>false\nfalse\nfalse\nfalse\nfalse\ntrue\ntrue\nfalse\nfalse\n</code></pre>"},{"location":"api/basic_json/is_structured/#see-also","title":"See also","text":"<ul> <li>is_primitive() returns whether JSON value is primitive</li> <li>is_array() returns whether the value is an array</li> <li>is_object() returns whether the value is an object</li> </ul>"},{"location":"api/basic_json/is_structured/#version-history","title":"Version history","text":"<ul> <li>Added in version 1.0.0.</li> </ul>"},{"location":"api/basic_json/items/","title":"nlohmann::basic_json::items","text":"<pre><code>iteration_proxy&lt;iterator&gt; items() noexcept;\niteration_proxy&lt;const_iterator&gt; items() const noexcept;\n</code></pre> <p>This function allows accessing <code>iterator::key()</code> and <code>iterator::value()</code> during range-based for loops. In these loops, a reference to the JSON values is returned, so there is no access to the underlying iterator.</p> <p>For loop without <code>items()</code> function:</p> <pre><code>for (auto it = j_object.begin(); it != j_object.end(); ++it)\n{\n    std::cout &lt;&lt; \"key: \" &lt;&lt; it.key() &lt;&lt; \", value:\" &lt;&lt; it.value() &lt;&lt; '\\n';\n}\n</code></pre> <p>Range-based for loop without <code>items()</code> function:</p> <pre><code>for (auto it : j_object)\n{\n    // \"it\" is of type json::reference and has no key() member\n    std::cout &lt;&lt; \"value: \" &lt;&lt; it &lt;&lt; '\\n';\n}\n</code></pre> <p>Range-based for loop with <code>items()</code> function:</p> <pre><code>for (auto&amp; el : j_object.items())\n{\n    std::cout &lt;&lt; \"key: \" &lt;&lt; el.key() &lt;&lt; \", value:\" &lt;&lt; el.value() &lt;&lt; '\\n';\n}\n</code></pre> <p>The <code>items()</code> function also allows using structured bindings (C++17):</p> <pre><code>for (auto&amp; [key, val] : j_object.items())\n{\n    std::cout &lt;&lt; \"key: \" &lt;&lt; key &lt;&lt; \", value:\" &lt;&lt; val &lt;&lt; '\\n';\n}\n</code></pre>"},{"location":"api/basic_json/items/#return-value","title":"Return value","text":"<p>iteration proxy object wrapping the current value with an interface to use in range-based for loops</p>"},{"location":"api/basic_json/items/#exception-safety","title":"Exception safety","text":"<p>Strong guarantee: if an exception is thrown, there are no changes in the JSON value.</p>"},{"location":"api/basic_json/items/#complexity","title":"Complexity","text":"<p>Constant.</p>"},{"location":"api/basic_json/items/#notes","title":"Notes","text":"<p>When iterating over an array, <code>key()</code> will return the index of the element as string (see example). For primitive types (e.g., numbers), <code>key()</code> returns an empty string.</p> <p>Lifetime issues</p> <p>Using <code>items()</code> on temporary objects is dangerous. Make sure the object's lifetime exceeds the iteration. See #2040 for more information.</p>"},{"location":"api/basic_json/items/#examples","title":"Examples","text":"Example <p>The following code shows an example for <code>items()</code>.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create JSON values\n    json j_object = {{\"one\", 1}, {\"two\", 2}};\n    json j_array = {1, 2, 4, 8, 16};\n\n    // example for an object\n    for (auto&amp; x : j_object.items())\n    {\n        std::cout &lt;&lt; \"key: \" &lt;&lt; x.key() &lt;&lt; \", value: \" &lt;&lt; x.value() &lt;&lt; '\\n';\n    }\n\n    // example for an array\n    for (auto&amp; x : j_array.items())\n    {\n        std::cout &lt;&lt; \"key: \" &lt;&lt; x.key() &lt;&lt; \", value: \" &lt;&lt; x.value() &lt;&lt; '\\n';\n    }\n}\n</code></pre> <p>Output:</p> <pre><code>key: one, value: 1\nkey: two, value: 2\nkey: 0, value: 1\nkey: 1, value: 2\nkey: 2, value: 4\nkey: 3, value: 8\nkey: 4, value: 16\n</code></pre>"},{"location":"api/basic_json/items/#version-history","title":"Version history","text":"<ul> <li>Added <code>iterator_wrapper</code> in version 3.0.0.</li> <li>Added <code>items</code> and deprecated <code>iterator_wrapper</code> in version 3.1.0.</li> <li>Added structured binding support in version 3.5.0.</li> </ul> <p>Deprecation</p> <p>This function replaces the static function <code>iterator_wrapper</code> which was introduced in version 1.0.0, but has been deprecated in version 3.1.0. Function <code>iterator_wrapper</code> will be removed in version 4.0.0. Please replace all occurrences of <code>iterator_wrapper(j)</code> with <code>j.items()</code>.</p> <p>You should be warned by your compiler with a <code>-Wdeprecated-declarations</code> warning if you are using a deprecated function.</p>"},{"location":"api/basic_json/json_base_class_t/","title":"nlohmann::basic_json::json_base_class_t","text":"<pre><code>using json_base_class_t = detail::json_base_class&lt;CustomBaseClass&gt;;\n</code></pre> <p>The base class used to inject custom functionality into each instance of <code>basic_json</code>. Examples of such functionality might be metadata, additional member functions (e.g., visitors), or other application-specific code.</p>"},{"location":"api/basic_json/json_base_class_t/#template-parameters","title":"Template parameters","text":"<code>CustomBaseClass</code> the base class to be added to <code>basic_json</code>"},{"location":"api/basic_json/json_base_class_t/#notes","title":"Notes","text":""},{"location":"api/basic_json/json_base_class_t/#default-type","title":"Default type","text":"<p>The default value for <code>CustomBaseClass</code> is <code>void</code>. In this case, an empty base class is used and no additional functionality is injected.</p>"},{"location":"api/basic_json/json_base_class_t/#limitations","title":"Limitations","text":"<p>The type <code>CustomBaseClass</code> has to be a default-constructible class. <code>basic_json</code> only supports copy/move construction/assignment if <code>CustomBaseClass</code> does so as well.</p>"},{"location":"api/basic_json/json_base_class_t/#examples","title":"Examples","text":"Example <p>The following code shows how to inject custom data and methods for each node.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nclass visitor_adaptor_with_metadata\n{\n  public:\n    template &lt;class Fnc&gt;\n    void visit(const Fnc&amp; fnc) const;\n\n    int metadata = 42;\n  private:\n    template &lt;class Ptr, class Fnc&gt;\n    void do_visit(const Ptr&amp; ptr, const Fnc&amp; fnc) const;\n};\n\nusing json = nlohmann::basic_json &lt;\n             std::map,\n             std::vector,\n             std::string,\n             bool,\n             std::int64_t,\n             std::uint64_t,\n             double,\n             std::allocator,\n             nlohmann::adl_serializer,\n             std::vector&lt;std::uint8_t&gt;,\n             visitor_adaptor_with_metadata\n             &gt;;\n\ntemplate &lt;class Fnc&gt;\nvoid visitor_adaptor_with_metadata::visit(const Fnc&amp; fnc) const\n{\n    do_visit(json::json_pointer{}, fnc);\n}\n\ntemplate &lt;class Ptr, class Fnc&gt;\nvoid visitor_adaptor_with_metadata::do_visit(const Ptr&amp; ptr, const Fnc&amp; fnc) const\n{\n    using value_t = nlohmann::detail::value_t;\n    const json&amp; j = *static_cast&lt;const json*&gt;(this);\n    switch (j.type())\n    {\n        case value_t::object:\n            fnc(ptr, j);\n            for (const auto&amp; entry : j.items())\n            {\n                entry.value().do_visit(ptr / entry.key(), fnc);\n            }\n            break;\n        case value_t::array:\n            fnc(ptr, j);\n            for (std::size_t i = 0; i &lt; j.size(); ++i)\n            {\n                j.at(i).do_visit(ptr / std::to_string(i), fnc);\n            }\n            break;\n        case value_t::null:\n        case value_t::string:\n        case value_t::boolean:\n        case value_t::number_integer:\n        case value_t::number_unsigned:\n        case value_t::number_float:\n        case value_t::binary:\n            fnc(ptr, j);\n            break;\n        case value_t::discarded:\n        default:\n            break;\n    }\n}\n\nint main()\n{\n    // create a json object\n    json j;\n    j[\"null\"];\n    j[\"object\"][\"uint\"] = 1U;\n    j[\"object\"].metadata = 21;\n\n    // visit and output\n    j.visit(\n         [&amp;](const json::json_pointer &amp; p,\n             const json &amp; j)\n    {\n        std::cout &lt;&lt; (p.empty() ? std::string{\"/\"} : p.to_string())\n                  &lt;&lt; \" - metadata = \" &lt;&lt; j.metadata &lt;&lt; \" -&gt; \" &lt;&lt; j.dump() &lt;&lt; '\\n';\n    });\n}\n</code></pre> <p>Output:</p> <pre><code>/ - metadata = 42 -&gt; {\"null\":null,\"object\":{\"uint\":1}}\n/null - metadata = 42 -&gt; null\n/object - metadata = 21 -&gt; {\"uint\":1}\n/object/uint - metadata = 42 -&gt; 1\n</code></pre>"},{"location":"api/basic_json/json_base_class_t/#version-history","title":"Version history","text":"<ul> <li>Added in version 3.12.0.</li> </ul>"},{"location":"api/basic_json/json_serializer/","title":"nlohmann::basic_json::json_serializer","text":"<pre><code>template&lt;typename T, typename SFINAE&gt;\nusing json_serializer = JSONSerializer&lt;T, SFINAE&gt;;\n</code></pre>"},{"location":"api/basic_json/json_serializer/#template-parameters","title":"Template parameters","text":"<code>T</code> type to convert; will be used in the <code>to_json</code>/<code>from_json</code> functions <code>SFINAE</code> type to add compile type checks via SFINAE; usually <code>void</code>"},{"location":"api/basic_json/json_serializer/#notes","title":"Notes","text":""},{"location":"api/basic_json/json_serializer/#default-type","title":"Default type","text":"<p>The default values for <code>json_serializer</code> is <code>adl_serializer</code>.</p>"},{"location":"api/basic_json/json_serializer/#examples","title":"Examples","text":"Example <p>The example below shows how a conversion of a non-default-constructible type is implemented via a specialization of the <code>adl_serializer</code>.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nnamespace ns\n{\n// a simple struct to model a person (not default constructible)\nstruct person\n{\n    person(std::string n, std::string a, int aa)\n        : name(std::move(n)), address(std::move(a)), age(aa)\n    {}\n\n    std::string name;\n    std::string address;\n    int age;\n};\n} // namespace ns\n\nnamespace nlohmann\n{\ntemplate &lt;&gt;\nstruct adl_serializer&lt;ns::person&gt;\n{\n    static ns::person from_json(const json&amp; j)\n    {\n        return {j.at(\"name\"), j.at(\"address\"), j.at(\"age\")};\n    }\n\n    // Here's the catch! You must provide a to_json method! Otherwise, you\n    // will not be able to convert person to json, since you fully\n    // specialized adl_serializer on that type\n    static void to_json(json&amp; j, ns::person p)\n    {\n        j[\"name\"] = p.name;\n        j[\"address\"] = p.address;\n        j[\"age\"] = p.age;\n    }\n};\n} // namespace nlohmann\n\nint main()\n{\n    json j;\n    j[\"name\"] = \"Ned Flanders\";\n    j[\"address\"] = \"744 Evergreen Terrace\";\n    j[\"age\"] = 60;\n\n    auto p = j.get&lt;ns::person&gt;();\n\n    std::cout &lt;&lt; p.name &lt;&lt; \" (\" &lt;&lt; p.age &lt;&lt; \") lives in \" &lt;&lt; p.address &lt;&lt; std::endl;\n}\n</code></pre> <p>Output:</p> <pre><code>Ned Flanders (60) lives in 744 Evergreen Terrace\n</code></pre>"},{"location":"api/basic_json/json_serializer/#version-history","title":"Version history","text":"<ul> <li>Since version 2.0.0.</li> </ul>"},{"location":"api/basic_json/max_size/","title":"nlohmann::basic_json::max_size","text":"<pre><code>size_type max_size() const noexcept;\n</code></pre> <p>Returns the maximum number of elements a JSON value is able to hold due to system or library implementation limitations, i.e. <code>std::distance(begin(), end())</code> for the JSON value.</p>"},{"location":"api/basic_json/max_size/#return-value","title":"Return value","text":"<p>The return value depends on the different types and is defined as follows:</p> Value type return value null <code>0</code> (same as <code>size()</code>) boolean <code>1</code> (same as <code>size()</code>) string <code>1</code> (same as <code>size()</code>) number <code>1</code> (same as <code>size()</code>) binary <code>1</code> (same as <code>size()</code>) object result of function <code>object_t::max_size()</code> array result of function <code>array_t::max_size()</code>"},{"location":"api/basic_json/max_size/#exception-safety","title":"Exception safety","text":"<p>No-throw guarantee: this function never throws exceptions.</p>"},{"location":"api/basic_json/max_size/#complexity","title":"Complexity","text":"<p>Constant, as long as <code>array_t</code> and <code>object_t</code> satisfy the Container concept; that is, their <code>max_size()</code> functions have constant complexity.</p>"},{"location":"api/basic_json/max_size/#notes","title":"Notes","text":"<p>This function does not return the maximal length of a string stored as JSON value -- it returns the maximal number of string elements the JSON value can store which is <code>1</code>.</p>"},{"location":"api/basic_json/max_size/#examples","title":"Examples","text":"Example <p>The following code calls <code>max_size()</code> on the different value types.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create JSON values\n    json j_null;\n    json j_boolean = true;\n    json j_number_integer = 17;\n    json j_number_float = 23.42;\n    json j_object = {{\"one\", 1}, {\"two\", 2}};\n    json j_array = {1, 2, 4, 8, 16};\n    json j_string = \"Hello, world\";\n\n    // call max_size()\n    std::cout &lt;&lt; j_null.max_size() &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_boolean.max_size() &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_number_integer.max_size() &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_number_float.max_size() &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_object.max_size() &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_array.max_size() &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_string.max_size() &lt;&lt; '\\n';\n}\n</code></pre> <p>Output:</p> <pre><code>0\n1\n1\n1\n115292150460684697\n576460752303423487\n1\n</code></pre> <p>Note the output is platform-dependent.</p>"},{"location":"api/basic_json/max_size/#version-history","title":"Version history","text":"<ul> <li>Added in version 1.0.0.</li> <li>Extended to return <code>1</code> for binary types in version 3.8.0.</li> </ul>"},{"location":"api/basic_json/merge_patch/","title":"nlohmann::basic_json::merge_patch","text":"<pre><code>void merge_patch(const basic_json&amp; apply_patch);\n</code></pre> <p>The merge patch format is primarily intended for use with the HTTP PATCH method as a means of describing a set of modifications to a target resource's content. This function applies a merge patch to the current JSON value.</p> <p>The function implements the following algorithm from Section 2 of RFC 7396 (JSON Merge Patch):</p> <pre><code>define MergePatch(Target, Patch):\n  if Patch is an Object:\n    if Target is not an Object:\n      Target = {} // Ignore the contents and set it to an empty Object\n    for each Name/Value pair in Patch:\n      if Value is null:\n        if Name exists in Target:\n          remove the Name/Value pair from Target\n      else:\n        Target[Name] = MergePatch(Target[Name], Value)\n    return Target\n  else:\n    return Patch\n</code></pre> <p>Thereby, <code>Target</code> is the current object; that is, the patch is applied to the current value.</p>"},{"location":"api/basic_json/merge_patch/#parameters","title":"Parameters","text":"<code>apply_patch</code> (in) the patch to apply"},{"location":"api/basic_json/merge_patch/#complexity","title":"Complexity","text":"<p>Linear in the lengths of <code>apply_patch</code>.</p>"},{"location":"api/basic_json/merge_patch/#examples","title":"Examples","text":"Example <p>The following code shows how a JSON Merge Patch is applied to a JSON document.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n#include &lt;iomanip&gt; // for std::setw\n\nusing json = nlohmann::json;\nusing namespace nlohmann::literals;\n\nint main()\n{\n    // the original document\n    json document = R\"({\n                \"title\": \"Goodbye!\",\n                \"author\": {\n                    \"givenName\": \"John\",\n                    \"familyName\": \"Doe\"\n                },\n                \"tags\": [\n                    \"example\",\n                    \"sample\"\n                ],\n                \"content\": \"This will be unchanged\"\n            })\"_json;\n\n    // the patch\n    json patch = R\"({\n                \"title\": \"Hello!\",\n                \"phoneNumber\": \"+01-123-456-7890\",\n                \"author\": {\n                    \"familyName\": null\n                },\n                \"tags\": [\n                    \"example\"\n                ]\n            })\"_json;\n\n    // apply the patch\n    document.merge_patch(patch);\n\n    // output original and patched document\n    std::cout &lt;&lt; std::setw(4) &lt;&lt; document &lt;&lt; std::endl;\n}\n</code></pre> <p>Output:</p> <pre><code>{\n    \"author\": {\n        \"givenName\": \"John\"\n    },\n    \"content\": \"This will be unchanged\",\n    \"phoneNumber\": \"+01-123-456-7890\",\n    \"tags\": [\n        \"example\"\n    ],\n    \"title\": \"Hello!\"\n}\n</code></pre>"},{"location":"api/basic_json/merge_patch/#see-also","title":"See also","text":"<ul> <li>RFC 7396 (JSON Merge Patch)</li> <li>patch apply a JSON patch</li> </ul>"},{"location":"api/basic_json/merge_patch/#version-history","title":"Version history","text":"<ul> <li>Added in version 3.0.0.</li> </ul>"},{"location":"api/basic_json/meta/","title":"nlohmann::basic_json::meta","text":"<pre><code>static basic_json meta();\n</code></pre> <p>This function returns a JSON object with information about the library, including the version number and information on the platform and compiler.</p>"},{"location":"api/basic_json/meta/#return-value","title":"Return value","text":"<p>JSON object holding version information</p> key description <code>compiler</code> Information on the used compiler. It is an object with the following keys: <code>c++</code> (the used C++ standard), <code>family</code> (the compiler family; possible values are <code>clang</code>, <code>icc</code>, <code>gcc</code>, <code>ilecpp</code>, <code>msvc</code>, <code>pgcpp</code>, <code>sunpro</code>, and <code>unknown</code>), and <code>version</code> (the compiler version). <code>copyright</code> The copyright line for the library as string. <code>name</code> The name of the library as string. <code>platform</code> The used platform as string. Possible values are <code>win32</code>, <code>linux</code>, <code>apple</code>, <code>unix</code>, and <code>unknown</code>. <code>url</code> The URL of the project as string. <code>version</code> The version of the library. It is an object with the following keys: <code>major</code>, <code>minor</code>, and <code>patch</code> as defined by Semantic Versioning, and <code>string</code> (the version string)."},{"location":"api/basic_json/meta/#exception-safety","title":"Exception safety","text":"<p>Strong guarantee: if an exception is thrown, there are no changes to any JSON value.</p>"},{"location":"api/basic_json/meta/#complexity","title":"Complexity","text":"<p>Constant.</p>"},{"location":"api/basic_json/meta/#examples","title":"Examples","text":"Example <p>The following code shows an example output of the <code>meta()</code> function.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;iomanip&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // call meta()\n    std::cout &lt;&lt; std::setw(4) &lt;&lt; json::meta() &lt;&lt; '\\n';\n}\n</code></pre> <p>Output:</p> <pre><code>{\n    \"compiler\": {\n        \"c++\": \"201103\",\n        \"family\": \"gcc\",\n        \"version\": \"12.4.0\"\n    },\n    \"copyright\": \"(C) 2013-2026 Niels Lohmann\",\n    \"name\": \"JSON for Modern C++\",\n    \"platform\": \"apple\",\n    \"url\": \"https://github.com/nlohmann/json\",\n    \"version\": {\n        \"major\": 3,\n        \"minor\": 12,\n        \"patch\": 0,\n        \"string\": \"3.12.0\"\n    }\n}\n</code></pre> <p>Note the output is platform-dependent.</p>"},{"location":"api/basic_json/meta/#see-also","title":"See also","text":"<ul> <li>NLOHMANN_JSON_VERSION_MAJOR/NLOHMANN_JSON_VERSION_MINOR/NLOHMANN_JSON_VERSION_PATCH   - library version information</li> </ul>"},{"location":"api/basic_json/meta/#version-history","title":"Version history","text":"<ul> <li>Added in version 2.1.0.</li> </ul>"},{"location":"api/basic_json/number_float_t/","title":"nlohmann::basic_json::number_float_t","text":"<pre><code>using number_float_t = NumberFloatType;\n</code></pre> <p>The type used to store JSON numbers (floating-point).</p> <p>RFC 8259 describes numbers as follows:</p> <p>The representation of numbers is similar to that used in most programming languages. A number is represented in base 10 using decimal digits. It contains an integer component that may be prefixed with an optional minus sign, which may be followed by a fraction part and/or an exponent part. Leading zeros are not allowed. (...) Numeric values that cannot be represented in the grammar below (such as Infinity and NaN) are not permitted.</p> <p>This description includes both integer and floating-point numbers. However, C++ allows more precise storage if it is known whether the number is a signed integer, an unsigned integer, or a floating-point number. Therefore, three different types, <code>number_integer_t</code>, <code>number_unsigned_t</code> and <code>number_float_t</code> are used.</p> <p>To store floating-point numbers in C++, a type is defined by the template parameter <code>NumberFloatType</code> which chooses the type to use.</p>"},{"location":"api/basic_json/number_float_t/#notes","title":"Notes","text":""},{"location":"api/basic_json/number_float_t/#default-type","title":"Default type","text":"<p>With the default values for <code>NumberFloatType</code> (<code>double</code>), the default value for <code>number_float_t</code> is <code>double</code>.</p>"},{"location":"api/basic_json/number_float_t/#default-behavior","title":"Default behavior","text":"<ul> <li>The restrictions about leading zeros are not enforced in C++. Instead, leading zeros in floating-point literals will   be ignored. Internally, the value will be stored as a decimal number. For instance, the C++ floating-point literal   <code>01.2</code> will be serialized to <code>1.2</code>. During deserialization, leading zeros yield an error.</li> <li>Not-a-number (NaN) values will be serialized to <code>null</code>.</li> </ul>"},{"location":"api/basic_json/number_float_t/#limits","title":"Limits","text":"<p>RFC 8259 states:</p> <p>This specification allows implementations to set limits on the range and precision of numbers accepted. Since software that implements IEEE 754-2008 binary64 (double precision) numbers is generally available and widely used, good interoperability can be achieved by implementations that expect no more precision or range than these provide, in the sense that implementations will approximate JSON numbers within the expected precision.</p> <p>This implementation does exactly follow this approach, as it uses double precision floating-point numbers. Note values smaller than <code>-1.79769313486232e+308</code> and values greater than <code>1.79769313486232e+308</code> will be stored as NaN internally and be serialized to <code>null</code>.</p>"},{"location":"api/basic_json/number_float_t/#storage","title":"Storage","text":"<p>Floating-point number values are stored directly inside a <code>basic_json</code> type.</p>"},{"location":"api/basic_json/number_float_t/#examples","title":"Examples","text":"Example <p>The following code shows that <code>number_float_t</code> is by default, a typedef to <code>double</code>.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;iomanip&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    std::cout &lt;&lt; std::boolalpha &lt;&lt; std::is_same&lt;double, json::number_float_t&gt;::value &lt;&lt; std::endl;\n}\n</code></pre> <p>Output:</p> <pre><code>true\n</code></pre>"},{"location":"api/basic_json/number_float_t/#version-history","title":"Version history","text":"<ul> <li>Added in version 1.0.0.</li> </ul>"},{"location":"api/basic_json/number_integer_t/","title":"nlohmann::basic_json::number_integer_t","text":"<pre><code>using number_integer_t = NumberIntegerType;\n</code></pre> <p>The type used to store JSON numbers (integers).</p> <p>RFC 8259 describes numbers as follows:</p> <p>The representation of numbers is similar to that used in most programming languages. A number is represented in base 10 using decimal digits. It contains an integer component that may be prefixed with an optional minus sign, which may be followed by a fraction part and/or an exponent part. Leading zeros are not allowed. (...) Numeric values that cannot be represented in the grammar below (such as Infinity and NaN) are not permitted.</p> <p>This description includes both integer and floating-point numbers. However, C++ allows more precise storage if it is known whether the number is a signed integer, an unsigned integer, or a floating-point number. Therefore, three different types, <code>number_integer_t</code>,  <code>number_unsigned_t</code> and <code>number_float_t</code> are used.</p> <p>To store integer numbers in C++, a type is defined by the template parameter <code>NumberIntegerType</code> which chooses the type to use.</p>"},{"location":"api/basic_json/number_integer_t/#notes","title":"Notes","text":""},{"location":"api/basic_json/number_integer_t/#default-type","title":"Default type","text":"<p>With the default values for <code>NumberIntegerType</code> (<code>std::int64_t</code>), the default value for <code>number_integer_t</code> is <code>std::int64_t</code>.</p>"},{"location":"api/basic_json/number_integer_t/#default-behavior","title":"Default behavior","text":"<ul> <li>The restrictions about leading zeros are not enforced in C++. Instead, leading zeros in integer literals lead to an   interpretation as an octal number. Internally, the value will be stored as a decimal number. For instance, the C++   integer literal <code>010</code> will be serialized to <code>8</code>. During deserialization, leading zeros yield an error.</li> <li>Not-a-number (NaN) values will be serialized to <code>null</code>.</li> </ul>"},{"location":"api/basic_json/number_integer_t/#limits","title":"Limits","text":"<p>RFC 8259 specifies:</p> <p>An implementation may set limits on the range and precision of numbers.</p> <p>When the default type is used, the maximal integer number that can be stored is <code>9223372036854775807</code> (INT64_MAX) and the minimal integer number that can be stored is <code>-9223372036854775808</code> (INT64_MIN). Integer numbers that are out of range will yield over/underflow when used in a constructor. During deserialization, too large or small integer numbers will automatically be stored as <code>number_unsigned_t</code> or <code>number_float_t</code>.</p> <p>RFC 8259 further states:</p> <p>Note that when such software is used, numbers that are integers and are in the range [-2^{53}+1, 2^{53}-1] are interoperable in the sense that implementations will agree exactly on their numeric values.</p> <p>As this range is a subrange of the exactly supported range [INT64_MIN, INT64_MAX], this class's integer type is interoperable.</p>"},{"location":"api/basic_json/number_integer_t/#storage","title":"Storage","text":"<p>Integer number values are stored directly inside a <code>basic_json</code> type.</p>"},{"location":"api/basic_json/number_integer_t/#examples","title":"Examples","text":"Example <p>The following code shows that <code>number_integer_t</code> is by default, a typedef to <code>std::int64_t</code>.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;iomanip&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    std::cout &lt;&lt; std::boolalpha &lt;&lt; std::is_same&lt;std::int64_t, json::number_integer_t&gt;::value &lt;&lt; std::endl;\n}\n</code></pre> <p>Output:</p> <pre><code>true\n</code></pre>"},{"location":"api/basic_json/number_integer_t/#version-history","title":"Version history","text":"<ul> <li>Added in version 1.0.0.</li> </ul>"},{"location":"api/basic_json/number_unsigned_t/","title":"nlohmann::basic_json::number_unsigned_t","text":"<pre><code>using number_unsigned_t = NumberUnsignedType;\n</code></pre> <p>The type used to store JSON numbers (unsigned).</p> <p>RFC 8259 describes numbers as follows:</p> <p>The representation of numbers is similar to that used in most programming languages. A number is represented in base 10 using decimal digits. It contains an integer component that may be prefixed with an optional minus sign, which may be followed by a fraction part and/or an exponent part. Leading zeros are not allowed. (...) Numeric values that cannot be represented in the grammar below (such as Infinity and NaN) are not permitted.</p> <p>This description includes both integer and floating-point numbers. However, C++ allows more precise storage if it is known whether the number is a signed integer, an unsigned integer, or a floating-point number. Therefore, three different types, <code>number_integer_t</code>, <code>number_unsigned_t</code> and <code>number_float_t</code> are used.</p> <p>To store unsigned integer numbers in C++, a type is defined by the template parameter <code>NumberUnsignedType</code> which chooses the type to use.</p>"},{"location":"api/basic_json/number_unsigned_t/#notes","title":"Notes","text":""},{"location":"api/basic_json/number_unsigned_t/#default-type","title":"Default type","text":"<p>With the default values for <code>NumberUnsignedType</code> (<code>std::uint64_t</code>), the default value for <code>number_unsigned_t</code> is <code>std::uint64_t</code>.</p>"},{"location":"api/basic_json/number_unsigned_t/#default-behavior","title":"Default behavior","text":"<ul> <li>The restrictions about leading zeros are not enforced in C++. Instead, leading zeros in integer literals lead to an   interpretation as an octal number. Internally, the value will be stored as a decimal number. For instance, the C++   integer  literal <code>010</code> will be serialized to <code>8</code>. During deserialization, leading zeros yield an error.</li> <li>Not-a-number (NaN) values will be serialized to <code>null</code>.</li> </ul>"},{"location":"api/basic_json/number_unsigned_t/#limits","title":"Limits","text":"<p>RFC 8259 specifies:</p> <p>An implementation may set limits on the range and precision of numbers.</p> <p>When the default type is used, the maximal integer number that can be stored is <code>18446744073709551615</code> (UINT64_MAX) and the minimal integer number that can be stored is <code>0</code>. Integer numbers that are out of range will yield over/underflow when used in a constructor. During deserialization, too large or small integer numbers will automatically be stored as <code>number_integer_t</code> or <code>number_float_t</code>.</p> <p>RFC 8259 further states:</p> <p>Note that when such software is used, numbers that are integers and are in the range \\f[-2^{53}+1, 2^{53}-1]\\f are interoperable in the sense that implementations will agree exactly on their numeric values.</p> <p>As this range is a subrange (when considered in conjunction with the <code>number_integer_t</code> type) of the exactly supported range [0, UINT64_MAX], this class's integer type is interoperable.</p>"},{"location":"api/basic_json/number_unsigned_t/#storage","title":"Storage","text":"<p>Integer number values are stored directly inside a <code>basic_json</code> type.</p>"},{"location":"api/basic_json/number_unsigned_t/#examples","title":"Examples","text":"Example <p>The following code shows that <code>number_unsigned_t</code> is by default, a typedef to <code>std::uint64_t</code>.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;iomanip&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    std::cout &lt;&lt; std::boolalpha &lt;&lt; std::is_same&lt;std::uint64_t, json::number_unsigned_t&gt;::value &lt;&lt; std::endl;\n}\n</code></pre> <p>Output:</p> <pre><code>true\n</code></pre>"},{"location":"api/basic_json/number_unsigned_t/#version-history","title":"Version history","text":"<ul> <li>Added in version 2.0.0.</li> </ul>"},{"location":"api/basic_json/object/","title":"nlohmann::basic_json::object","text":"<pre><code>static basic_json object(initializer_list_t init = {});\n</code></pre> <p>Creates a JSON object value from a given initializer list. The initializer lists elements must be pairs, and their first elements must be strings. If the initializer list is empty, the empty object <code>{}</code> is created.</p>"},{"location":"api/basic_json/object/#parameters","title":"Parameters","text":"<code>init</code> (in) initializer list with JSON values to create an object from (optional)"},{"location":"api/basic_json/object/#return-value","title":"Return value","text":"<p>JSON object value</p>"},{"location":"api/basic_json/object/#exception-safety","title":"Exception safety","text":"<p>Strong guarantee: if an exception is thrown, there are no changes in the JSON value.</p>"},{"location":"api/basic_json/object/#exceptions","title":"Exceptions","text":"<p>Throws <code>type_error.301</code> if <code>init</code> is not a list of pairs whose first elements are strings. In this case, no object can be created. When such a value is passed to <code>basic_json(initializer_list_t, bool, value_t)</code>, an array would have been created from the passed initializer list <code>init</code>. See the example below.</p>"},{"location":"api/basic_json/object/#complexity","title":"Complexity","text":"<p>Linear in the size of <code>init</code>.</p>"},{"location":"api/basic_json/object/#notes","title":"Notes","text":"<p>This function is only added for symmetry reasons. In contrast to the related function <code>array(initializer_list_t)</code>, there are no cases that can only be expressed by this function. That is, any initializer list <code>init</code> can also be passed to the initializer list constructor <code>basic_json(initializer_list_t, bool, value_t)</code>.</p>"},{"location":"api/basic_json/object/#examples","title":"Examples","text":"Example <p>The following code shows an example for the <code>object</code> function.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create JSON objects\n    json j_no_init_list = json::object();\n    json j_empty_init_list = json::object({});\n    json j_list_of_pairs = json::object({ {\"one\", 1}, {\"two\", 2} });\n\n    // serialize the JSON objects\n    std::cout &lt;&lt; j_no_init_list &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_empty_init_list &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_list_of_pairs &lt;&lt; '\\n';\n\n    // example for an exception\n    try\n    {\n        // can only create an object from a list of pairs\n        json j_invalid_object = json::object({{ \"one\", 1, 2 }});\n    }\n    catch (const json::type_error&amp; e)\n    {\n        std::cout &lt;&lt; e.what() &lt;&lt; '\\n';\n    }\n}\n</code></pre> <p>Output:</p> <pre><code>{}\n{}\n{\"one\":1,\"two\":2}\n[json.exception.type_error.301] cannot create object from initializer list\n</code></pre>"},{"location":"api/basic_json/object/#see-also","title":"See also","text":"<ul> <li><code>basic_json(initializer_list_t)</code> - create a JSON value from an initializer list</li> <li><code>array</code> - create a JSON array value from an initializer list</li> </ul>"},{"location":"api/basic_json/object/#version-history","title":"Version history","text":"<ul> <li>Added in version 1.0.0.</li> </ul>"},{"location":"api/basic_json/object_comparator_t/","title":"nlohmann::basic_json::object_comparator_t","text":"<pre><code>using object_comparator_t = typename object_t::key_compare;\n// or\nusing object_comparator_t = default_object_comparator_t;\n</code></pre> <p>The comparator used by <code>object_t</code>. Defined as <code>typename object_t::key_compare</code> if available, and <code>default_object_comparator_t</code> otherwise.</p>"},{"location":"api/basic_json/object_comparator_t/#examples","title":"Examples","text":"Example <p>The example below demonstrates the used object comparator.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    std::cout &lt;&lt; std::boolalpha\n              &lt;&lt; \"json::object_comparator_t(\\\"one\\\", \\\"two\\\") = \" &lt;&lt; json::object_comparator_t{}(\"one\", \"two\") &lt;&lt; \"\\n\"\n              &lt;&lt; \"json::object_comparator_t(\\\"three\\\", \\\"four\\\") = \" &lt;&lt; json::object_comparator_t{}(\"three\", \"four\") &lt;&lt; std::endl;\n}\n</code></pre> <p>Output:</p> <pre><code>json::object_comparator_t(\"one\", \"two\") = true\njson::object_comparator_t(\"three\", \"four\") = false\n</code></pre>"},{"location":"api/basic_json/object_comparator_t/#version-history","title":"Version history","text":"<ul> <li>Added in version 3.0.0.</li> <li>Changed to be conditionally defined as <code>typename object_t::key_compare</code> or <code>default_object_comparator_t</code> in   version 3.11.0.</li> </ul>"},{"location":"api/basic_json/object_t/","title":"nlohmann::basic_json::object_t","text":"<pre><code>using object_t = ObjectType&lt;StringType,\n                            basic_json,\n                            default_object_comparator_t,\n                            AllocatorType&lt;std::pair&lt;const StringType, basic_json&gt;&gt;&gt;;\n</code></pre> <p>The type used to store JSON objects.</p> <p>RFC 8259 describes JSON objects as follows:</p> <p>An object is an unordered collection of zero or more name/value pairs, where a name is a string and a value is a string, number, boolean, null, object, or array.</p> <p>To store objects in C++, a type is defined by the template parameters described below.</p>"},{"location":"api/basic_json/object_t/#template-parameters","title":"Template parameters","text":"<code>ObjectType</code> the container to store objects (e.g., <code>std::map</code> or <code>std::unordered_map</code>) <code>StringType</code> the type of the keys or names (e.g., <code>std::string</code>). The comparison function <code>std::less&lt;StringType&gt;</code> is used to order elements inside the container. <code>AllocatorType</code> the allocator to use for objects (e.g., <code>std::allocator</code>)"},{"location":"api/basic_json/object_t/#notes","title":"Notes","text":""},{"location":"api/basic_json/object_t/#default-type","title":"Default type","text":"<p>With the default values for <code>ObjectType</code> (<code>std::map</code>), <code>StringType</code> (<code>std::string</code>), and <code>AllocatorType</code> (<code>std::allocator</code>), the default value for <code>object_t</code> is:</p> <pre><code>// until C++14\nstd::map&lt;\n  std::string, // key_type\n  basic_json, // value_type\n  std::less&lt;std::string&gt;, // key_compare\n  std::allocator&lt;std::pair&lt;const std::string, basic_json&gt;&gt; // allocator_type\n&gt;\n\n// since C++14\nstd::map&lt;\n  std::string, // key_type\n  basic_json, // value_type\n  std::less&lt;&gt;, // key_compare\n  std::allocator&lt;std::pair&lt;const std::string, basic_json&gt;&gt; // allocator_type\n&gt;\n</code></pre> <p>See <code>default_object_comparator_t</code> for more information.</p>"},{"location":"api/basic_json/object_t/#behavior","title":"Behavior","text":"<p>The choice of <code>object_t</code> influences the behavior of the JSON class. With the default type, objects have the following behavior:</p> <ul> <li>When all names are unique, objects will be interoperable in the sense that all software implementations receiving that   object will agree on the name-value mappings.</li> <li>When the names within an object are not unique, it is unspecified which one of the values for a given key will be   chosen. For instance, <code>{\"key\": 2, \"key\": 1}</code> could be equal to either <code>{\"key\": 1}</code> or   <code>{\"key\": 2}</code>.</li> <li>Internally, name/value pairs are stored in lexicographical order of the names. Objects will also be serialized (see   <code>dump</code>) in this order. For instance, <code>{\"b\": 1, \"a\": 2}</code> and <code>{\"a\": 2, \"b\": 1}</code> will be stored   and serialized as <code>{\"a\": 2, \"b\": 1}</code>.</li> <li>When comparing objects, the order of the name/value pairs is irrelevant. This makes objects interoperable in the sense   that they will not be affected by these differences. For instance, <code>{\"b\": 1, \"a\": 2}</code> and   <code>{\"a\": 2, \"b\": 1}</code> will be treated as equal.</li> </ul>"},{"location":"api/basic_json/object_t/#limits","title":"Limits","text":"<p>RFC 8259 specifies:</p> <p>An implementation may set limits on the maximum depth of nesting.</p> <p>In this class, the object's limit of nesting is not explicitly constrained. However, a maximum depth of nesting may be introduced by the compiler or runtime environment. A theoretical limit can be queried by calling the <code>max_size</code> function of a JSON object.</p>"},{"location":"api/basic_json/object_t/#storage","title":"Storage","text":"<p>Objects are stored as pointers in a <code>basic_json</code> type. That is, for any access to object values, a pointer of type <code>object_t*</code> must be dereferenced.</p>"},{"location":"api/basic_json/object_t/#object-key-order","title":"Object key order","text":"<p>The order name/value pairs are added to the object are not preserved by the library. Therefore, iterating an object may return name/value pairs in a different order than they were originally stored. In fact, keys will be traversed in alphabetical order as <code>std::map</code> with <code>std::less</code> is used by default. Please note this behavior conforms to RFC 8259, because any order implements the specified \"unordered\" nature of JSON objects.</p>"},{"location":"api/basic_json/object_t/#examples","title":"Examples","text":"Example <p>The following code shows that <code>object_t</code> is by default, a typedef to <code>std::map&lt;json::string_t, json&gt;</code>.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;iomanip&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    std::cout &lt;&lt; std::boolalpha &lt;&lt; std::is_same&lt;std::map&lt;json::string_t, json&gt;, json::object_t&gt;::value &lt;&lt; std::endl;\n}\n</code></pre> <p>Output:</p> <pre><code>true\n</code></pre>"},{"location":"api/basic_json/object_t/#version-history","title":"Version history","text":"<ul> <li>Added in version 1.0.0.</li> </ul>"},{"location":"api/basic_json/operator%2B%3D/","title":"nlohmann::basic_json::operator+=","text":"<pre><code>// (1)\nreference operator+=(basic_json&amp;&amp; val);\nreference operator+=(const basic_json&amp; val);\n\n// (2)\nreference operator+=(const typename object_t::value_type&amp; val);\n\n// (3)\nreference operator+=(initializer_list_t init);\n</code></pre> <ol> <li> <p>Appends the given element <code>val</code> to the end of the JSON array. If the function is called on a JSON null value, an    empty array is created before appending <code>val</code>.</p> </li> <li> <p>Inserts the given element <code>val</code> to the JSON object. If the function is called on a JSON null value, an empty object    is created before inserting <code>val</code>.</p> </li> <li> <p>This function allows using <code>operator+=</code> with an initializer list. In case</p> <ol> <li>the current value is an object,</li> <li>the initializer list <code>init</code> contains only two elements, and</li> <li>the first element of <code>init</code> is a string,</li> </ol> <p><code>init</code> is converted into an object element and added using <code>operator+=(const typename object_t::value_type&amp;)</code>. Otherwise, <code>init</code> is converted to a JSON value and added using <code>operator+=(basic_json&amp;&amp;)</code>.</p> </li> </ol>"},{"location":"api/basic_json/operator%2B%3D/#iterator-invalidation","title":"Iterator invalidation","text":"<p>For all cases where an element is added to an array, a reallocation can happen, in which case all iterators (including the <code>end()</code> iterator) and all references to the elements are invalidated. Otherwise, only the <code>end()</code> iterator is invalidated.</p> <p>For <code>ordered_json</code>, also adding an element to an object can yield a reallocation which again invalidates all iterators and all references.</p>"},{"location":"api/basic_json/operator%2B%3D/#parameters","title":"Parameters","text":"<code>val</code> (in) the value to add to the JSON array/object <code>init</code> (in) an initializer list"},{"location":"api/basic_json/operator%2B%3D/#return-value","title":"Return value","text":"<p><code>*this</code></p>"},{"location":"api/basic_json/operator%2B%3D/#exceptions","title":"Exceptions","text":"<p>All functions can throw the following exception:   - Throws <code>type_error.308</code> when called on a type other than     JSON array or null; example: <code>\"cannot use operator+=() with number\"</code></p>"},{"location":"api/basic_json/operator%2B%3D/#complexity","title":"Complexity","text":"<ol> <li>Amortized constant.</li> <li>Logarithmic in the size of the container, O(log(<code>size()</code>)).</li> <li>Linear in the size of the initializer list <code>init</code>.</li> </ol>"},{"location":"api/basic_json/operator%2B%3D/#notes","title":"Notes","text":"<p>(3) This function is required to resolve an ambiguous overload error, because pairs like <code>{\"key\", \"value\"}</code> can be both interpreted as <code>object_t::value_type</code> or <code>std::initializer_list&lt;basic_json&gt;</code>, see #235 for more information.</p>"},{"location":"api/basic_json/operator%2B%3D/#examples","title":"Examples","text":"Example: (1) add element to array <p>The example shows how <code>push_back()</code> and <code>+=</code> can be used to add elements to a JSON array. Note how the <code>null</code> value was silently converted to a JSON array.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create JSON values\n    json array = {1, 2, 3, 4, 5};\n    json null;\n\n    // print values\n    std::cout &lt;&lt; array &lt;&lt; '\\n';\n    std::cout &lt;&lt; null &lt;&lt; '\\n';\n\n    // add values\n    array.push_back(6);\n    array += 7;\n    null += \"first\";\n    null += \"second\";\n\n    // print values\n    std::cout &lt;&lt; array &lt;&lt; '\\n';\n    std::cout &lt;&lt; null &lt;&lt; '\\n';\n}\n</code></pre> <p>Output:</p> <pre><code>[1,2,3,4,5]\nnull\n[1,2,3,4,5,6,7]\n[\"first\",\"second\"]\n</code></pre> Example: (2) add element to object <p>The example shows how <code>push_back()</code> and <code>+=</code> can be used to add elements to a JSON object. Note how the <code>null</code> value was silently converted to a JSON object.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create JSON values\n    json object = {{\"one\", 1}, {\"two\", 2}};\n    json null;\n\n    // print values\n    std::cout &lt;&lt; object &lt;&lt; '\\n';\n    std::cout &lt;&lt; null &lt;&lt; '\\n';\n\n    // add values\n    object.push_back(json::object_t::value_type(\"three\", 3));\n    object += json::object_t::value_type(\"four\", 4);\n    null += json::object_t::value_type(\"A\", \"a\");\n    null += json::object_t::value_type(\"B\", \"b\");\n\n    // print values\n    std::cout &lt;&lt; object &lt;&lt; '\\n';\n    std::cout &lt;&lt; null &lt;&lt; '\\n';\n}\n</code></pre> <p>Output:</p> <pre><code>{\"one\":1,\"two\":2}\nnull\n{\"four\":4,\"one\":1,\"three\":3,\"two\":2}\n{\"A\":\"a\",\"B\":\"b\"}\n</code></pre> Example: (3) add to object from initializer list <p>The example shows how initializer lists are treated as objects when possible.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create JSON values\n    json object = {{\"one\", 1}, {\"two\", 2}};\n    json null;\n\n    // print values\n    std::cout &lt;&lt; object &lt;&lt; '\\n';\n    std::cout &lt;&lt; null &lt;&lt; '\\n';\n\n    // add values:\n    object.push_back({\"three\", 3});  // object is extended\n    object += {\"four\", 4};           // object is extended\n    null.push_back({\"five\", 5});     // null is converted to array\n\n    // print values\n    std::cout &lt;&lt; object &lt;&lt; '\\n';\n    std::cout &lt;&lt; null &lt;&lt; '\\n';\n\n    // would throw:\n    //object.push_back({1, 2, 3});\n}\n</code></pre> <p>Output:</p> <pre><code>{\"one\":1,\"two\":2}\nnull\n{\"four\":4,\"one\":1,\"three\":3,\"two\":2}\n[[\"five\",5]]\n</code></pre>"},{"location":"api/basic_json/operator%2B%3D/#see-also","title":"See also","text":"<ul> <li>emplace_back add a value to an array</li> <li>push_back add a value to an array/object</li> </ul>"},{"location":"api/basic_json/operator%2B%3D/#version-history","title":"Version history","text":"<ol> <li>Since version 1.0.0.</li> <li>Since version 1.0.0.</li> <li>Since version 2.0.0.</li> </ol>"},{"location":"api/basic_json/operator%3D/","title":"nlohmann::basic_json::operator=","text":"<pre><code>basic_json&amp; operator=(basic_json other) noexcept (\n    std::is_nothrow_move_constructible&lt;value_t&gt;::value &amp;&amp;\n    std::is_nothrow_move_assignable&lt;value_t&gt;::value &amp;&amp;\n    std::is_nothrow_move_constructible&lt;json_value&gt;::value &amp;&amp;\n    std::is_nothrow_move_assignable&lt;json_value&gt;::value\n);\n</code></pre> <p>Copy assignment operator. Copies a JSON value via the \"copy and swap\" strategy: It is expressed in terms of the copy constructor, destructor, and the <code>swap()</code> member function.</p>"},{"location":"api/basic_json/operator%3D/#parameters","title":"Parameters","text":"<code>other</code> (in) value to copy from"},{"location":"api/basic_json/operator%3D/#complexity","title":"Complexity","text":"<p>Linear.</p>"},{"location":"api/basic_json/operator%3D/#examples","title":"Examples","text":"Example <p>The code below shows and example for the copy assignment. It creates a copy of value <code>a</code> which is then swapped with <code>b</code>. Finally, the copy of <code>a</code> (which is the null value after the swap) is destroyed.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create JSON values\n    json a = 23;\n    json b = 42;\n\n    // copy-assign a to b\n    b = a;\n\n    // serialize the JSON arrays\n    std::cout &lt;&lt; a &lt;&lt; '\\n';\n    std::cout &lt;&lt; b &lt;&lt; '\\n';\n}\n</code></pre> <p>Output:</p> <pre><code>23\n23\n</code></pre>"},{"location":"api/basic_json/operator%3D/#version-history","title":"Version history","text":"<ul> <li>Added in version 1.0.0.</li> </ul>"},{"location":"api/basic_json/operator%5B%5D/","title":"nlohmann::basic_json::operator[]","text":"<pre><code>// (1)\nreference operator[](size_type idx);\nconst_reference operator[](size_type idx) const;\n\n// (2)\nreference operator[](typename object_t::key_type key);\nconst_reference operator[](const typename object_t::key_type&amp; key) const;\n\n// (3)\ntemplate&lt;typename KeyType&gt;\nreference operator[](KeyType&amp;&amp; key);\ntemplate&lt;typename KeyType&gt;\nconst_reference operator[](KeyType&amp;&amp; key) const;\n\n// (4)\nreference operator[](const json_pointer&amp; ptr);\nconst_reference operator[](const json_pointer&amp; ptr) const;\n</code></pre> <ol> <li>Returns a reference to the array element at specified location <code>idx</code>.</li> <li>Returns a reference to the object element with specified key <code>key</code>. The non-const qualified overload takes the key by    value.</li> <li>See 2. This overload is only available if <code>KeyType</code> is comparable with <code>typename object_t::key_type</code> and    <code>typename object_comparator_t::is_transparent</code> denotes a type.</li> <li>Returns a reference to the element with specified JSON pointer <code>ptr</code>.</li> </ol>"},{"location":"api/basic_json/operator%5B%5D/#template-parameters","title":"Template parameters","text":"<code>KeyType</code> A type for an object key other than <code>json_pointer</code> that is comparable with <code>string_t</code> using  <code>object_comparator_t</code>. This can also be a string view (C++17)."},{"location":"api/basic_json/operator%5B%5D/#iterator-invalidation","title":"Iterator invalidation","text":"<p>For the non-const versions 1. and 4., when passing an array index that does not exist, it is created and filled with a <code>null</code> value before a reference to it is returned. For this, a reallocation can happen, in which case all iterators (including the <code>end()</code> iterator) and all references to the elements are invalidated.</p> <p>For <code>ordered_json</code>, also passing an object key to the non-const versions 2., 3., and 4., a reallocation can happen which again invalidates all iterators and all references.</p>"},{"location":"api/basic_json/operator%5B%5D/#parameters","title":"Parameters","text":"<code>idx</code> (in) index of the element to access <code>key</code> (in) object key of the element to access <code>ptr</code> (in) JSON pointer to the desired element"},{"location":"api/basic_json/operator%5B%5D/#return-value","title":"Return value","text":"<ol> <li>(const) reference to the element at index <code>idx</code></li> <li>(const) reference to the element at key <code>key</code></li> <li>(const) reference to the element at key <code>key</code></li> <li>(const) reference to the element pointed to by <code>ptr</code></li> </ol>"},{"location":"api/basic_json/operator%5B%5D/#exception-safety","title":"Exception safety","text":"<p>Strong exception safety: if an exception occurs, the original value stays intact.</p>"},{"location":"api/basic_json/operator%5B%5D/#exceptions","title":"Exceptions","text":"<ol> <li>The function can throw the following exceptions:<ul> <li>Throws <code>type_error.305</code> if the JSON value is not an array   or null; in that case, using the <code>[]</code> operator with an index makes no sense.</li> </ul> </li> <li>The function can throw the following exceptions:<ul> <li>Throws <code>type_error.305</code> if the JSON value is not an object   or null; in that case, using the <code>[]</code> operator with a key makes no sense.</li> </ul> </li> <li>See 2.</li> <li>The function can throw the following exceptions:<ul> <li>Throws <code>parse_error.106</code> if an array index in the passed   JSON pointer <code>ptr</code> begins with '0'.</li> <li>Throws <code>parse_error.109</code> if an array index in the passed   JSON pointer <code>ptr</code> is not a number.</li> <li>Throws <code>out_of_range.402</code> if the array index '-' is used   in the passed JSON pointer <code>ptr</code> for the const version.</li> <li>Throws <code>out_of_range.404</code> if the JSON pointer <code>ptr</code> can   not be resolved.</li> </ul> </li> </ol>"},{"location":"api/basic_json/operator%5B%5D/#complexity","title":"Complexity","text":"<ol> <li>Constant if <code>idx</code> is in the range of the array. Otherwise, linear in <code>idx - size()</code>.</li> <li>Logarithmic in the size of the container.</li> <li>Logarithmic in the size of the container.</li> <li>Logarithmic in the size of the container.</li> </ol>"},{"location":"api/basic_json/operator%5B%5D/#notes","title":"Notes","text":"<p>Undefined behavior and runtime assertions</p> <ol> <li>If the element with key <code>idx</code> does not exist, the behavior is undefined.</li> <li>If the element with key <code>key</code> does not exist, the behavior is undefined and is guarded by a    runtime assertion!</li> </ol> <ol> <li> <p>The non-const version may add values: If <code>idx</code> is beyond the range of the array (i.e., <code>idx &gt;= size()</code>), then the    array is silently filled up with <code>null</code> values to make <code>idx</code> a valid reference to the last stored element. In    case the value was <code>null</code> before, it is converted to an array.</p> </li> <li> <p>If <code>key</code> is not found in the object, then it is silently added to the object and filled with a <code>null</code> value to    make <code>key</code> a valid reference. In case the value was <code>null</code> before, it is converted to an object.</p> </li> <li> <p>See 2.</p> </li> <li> <p><code>null</code> values are created in arrays and objects if necessary.</p> <p>In particular:</p> <ul> <li>If the JSON pointer points to an object key that does not exist, it is created and filled with a <code>null</code>   value before a reference to it is returned.</li> <li>If the JSON pointer points to an array index that does not exist, it is created and filled with a <code>null</code>   value before a reference to it is returned. All indices between the current maximum and the given index are also   filled with <code>null</code>.</li> <li>The special value <code>-</code> is treated as a synonym for the index past the end.</li> </ul> </li> </ol>"},{"location":"api/basic_json/operator%5B%5D/#examples","title":"Examples","text":"Example: (1) access specified array element <p>The example below shows how array elements can be read and written using <code>[]</code> operator. Note the addition of <code>null</code> values.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create a JSON array\n    json array = {1, 2, 3, 4, 5};\n\n    // output element at index 3 (fourth element)\n    std::cout &lt;&lt; array[3] &lt;&lt; '\\n';\n\n    // change last element to 6\n    array[array.size() - 1] = 6;\n\n    // output changed array\n    std::cout &lt;&lt; array &lt;&lt; '\\n';\n\n    // write beyond array limit\n    array[10] = 11;\n\n    // output changed array\n    std::cout &lt;&lt; array &lt;&lt; '\\n';\n}\n</code></pre> <p>Output:</p> <pre><code>4\n[1,2,3,4,6]\n[1,2,3,4,6,null,null,null,null,null,11]\n</code></pre> Example: (1) access specified array element (const) <p>The example below shows how array elements can be read using the <code>[]</code> operator.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create JSON array\n    const json array = {\"first\", \"2nd\", \"third\", \"fourth\"};\n\n    // output element at index 2 (third element)\n    std::cout &lt;&lt; array.at(2) &lt;&lt; '\\n';\n}\n</code></pre> <p>Output:</p> <pre><code>\"third\"\n</code></pre> Example: (2) access specified object element <p>The example below shows how object elements can be read and written using the <code>[]</code> operator.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;iomanip&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create a JSON object\n    json object =\n    {\n        {\"one\", 1}, {\"two\", 2}, {\"three\", 2.9}\n    };\n\n    // output element with key \"two\"\n    std::cout &lt;&lt; object[\"two\"] &lt;&lt; \"\\n\\n\";\n\n    // change element with key \"three\"\n    object[\"three\"] = 3;\n\n    // output changed array\n    std::cout &lt;&lt; std::setw(4) &lt;&lt; object &lt;&lt; \"\\n\\n\";\n\n    // mention nonexisting key\n    object[\"four\"];\n\n    // write to nonexisting key\n    object[\"five\"][\"really\"][\"nested\"] = true;\n\n    // output changed object\n    std::cout &lt;&lt; std::setw(4) &lt;&lt; object &lt;&lt; '\\n';\n}\n</code></pre> <p>Output:</p> <pre><code>2\n\n{\n    \"one\": 1,\n    \"three\": 3,\n    \"two\": 2\n}\n\n{\n    \"five\": {\n        \"really\": {\n            \"nested\": true\n        }\n    },\n    \"four\": null,\n    \"one\": 1,\n    \"three\": 3,\n    \"two\": 2\n}\n</code></pre> Example: (2) access specified object element (const) <p>The example below shows how object elements can be read using the <code>[]</code> operator.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create a JSON object\n    const json object =\n    {\n        {\"one\", 1}, {\"two\", 2}, {\"three\", 2.9}\n    };\n\n    // output element with key \"two\"\n    std::cout &lt;&lt; object[\"two\"] &lt;&lt; '\\n';\n}\n</code></pre> <p>Output:</p> <pre><code>2\n</code></pre> Example: (3) access specified object element using string_view <p>The example below shows how object elements can be read using the <code>[]</code> operator.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;iomanip&gt;\n#include &lt;string_view&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing namespace std::string_view_literals;\nusing json = nlohmann::json;\n\nint main()\n{\n    // create a JSON object\n    json object =\n    {\n        {\"one\", 1}, {\"two\", 2}, {\"three\", 2.9}\n    };\n\n    // output element with key \"two\"\n    std::cout &lt;&lt; object[\"two\"sv] &lt;&lt; \"\\n\\n\";\n\n    // change element with key \"three\"\n    object[\"three\"sv] = 3;\n\n    // output changed array\n    std::cout &lt;&lt; std::setw(4) &lt;&lt; object &lt;&lt; \"\\n\\n\";\n\n    // mention nonexisting key\n    object[\"four\"sv];\n\n    // write to nonexisting key\n    object[\"five\"sv][\"really\"sv][\"nested\"sv] = true;\n\n    // output changed object\n    std::cout &lt;&lt; std::setw(4) &lt;&lt; object &lt;&lt; '\\n';\n}\n</code></pre> <p>Output:</p> <pre><code>2\n\n{\n    \"one\": 1,\n    \"three\": 3,\n    \"two\": 2\n}\n\n{\n    \"five\": {\n        \"really\": {\n            \"nested\": true\n        }\n    },\n    \"four\": null,\n    \"one\": 1,\n    \"three\": 3,\n    \"two\": 2\n}\n</code></pre> Example: (3) access specified object element using string_view (const) <p>The example below shows how object elements can be read using the <code>[]</code> operator.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;string_view&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing namespace std::string_view_literals;\nusing json = nlohmann::json;\n\nint main()\n{\n    // create a JSON object\n    const json object =\n    {\n        {\"one\", 1}, {\"two\", 2}, {\"three\", 2.9}\n    };\n\n    // output element with key \"two\"\n    std::cout &lt;&lt; object[\"two\"sv] &lt;&lt; '\\n';\n}\n</code></pre> <p>Output:</p> <pre><code>2\n</code></pre> Example: (4) access specified element via JSON Pointer <p>The example below shows how values can be read and written using JSON Pointers.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\nusing namespace nlohmann::literals;\n\nint main()\n{\n    // create a JSON value\n    json j =\n    {\n        {\"number\", 1}, {\"string\", \"foo\"}, {\"array\", {1, 2}}\n    };\n\n    // read-only access\n\n    // output element with JSON pointer \"/number\"\n    std::cout &lt;&lt; j[\"/number\"_json_pointer] &lt;&lt; '\\n';\n    // output element with JSON pointer \"/string\"\n    std::cout &lt;&lt; j[\"/string\"_json_pointer] &lt;&lt; '\\n';\n    // output element with JSON pointer \"/array\"\n    std::cout &lt;&lt; j[\"/array\"_json_pointer] &lt;&lt; '\\n';\n    // output element with JSON pointer \"/array/1\"\n    std::cout &lt;&lt; j[\"/array/1\"_json_pointer] &lt;&lt; '\\n';\n\n    // writing access\n\n    // change the string\n    j[\"/string\"_json_pointer] = \"bar\";\n    // output the changed string\n    std::cout &lt;&lt; j[\"string\"] &lt;&lt; '\\n';\n\n    // \"change\" a nonexisting object entry\n    j[\"/boolean\"_json_pointer] = true;\n    // output the changed object\n    std::cout &lt;&lt; j &lt;&lt; '\\n';\n\n    // change an array element\n    j[\"/array/1\"_json_pointer] = 21;\n    // \"change\" an array element with nonexisting index\n    j[\"/array/4\"_json_pointer] = 44;\n    // output the changed array\n    std::cout &lt;&lt; j[\"array\"] &lt;&lt; '\\n';\n\n    // \"change\" the array element past the end\n    j[\"/array/-\"_json_pointer] = 55;\n    // output the changed array\n    std::cout &lt;&lt; j[\"array\"] &lt;&lt; '\\n';\n}\n</code></pre> <p>Output:</p> <pre><code>1\n\"foo\"\n[1,2]\n2\n\"bar\"\n{\"array\":[1,2],\"boolean\":true,\"number\":1,\"string\":\"bar\"}\n[1,21,null,null,44]\n[1,21,null,null,44,55]\n</code></pre> Example: (4) access specified element via JSON Pointer (const) <p>The example below shows how values can be read using JSON Pointers.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\nusing namespace nlohmann::literals;\n\nint main()\n{\n    // create a JSON value\n    const json j =\n    {\n        {\"number\", 1}, {\"string\", \"foo\"}, {\"array\", {1, 2}}\n    };\n\n    // read-only access\n\n    // output element with JSON pointer \"/number\"\n    std::cout &lt;&lt; j[\"/number\"_json_pointer] &lt;&lt; '\\n';\n    // output element with JSON pointer \"/string\"\n    std::cout &lt;&lt; j[\"/string\"_json_pointer] &lt;&lt; '\\n';\n    // output element with JSON pointer \"/array\"\n    std::cout &lt;&lt; j[\"/array\"_json_pointer] &lt;&lt; '\\n';\n    // output element with JSON pointer \"/array/1\"\n    std::cout &lt;&lt; j[\"/array/1\"_json_pointer] &lt;&lt; '\\n';\n}\n</code></pre> <p>Output:</p> <pre><code>1\n\"foo\"\n[1,2]\n2\n</code></pre>"},{"location":"api/basic_json/operator%5B%5D/#see-also","title":"See also","text":"<ul> <li>documentation on unchecked access</li> <li>documentation on runtime assertions</li> <li>see <code>at</code> for access by reference with range checking</li> <li>see <code>value</code> for access with default value</li> </ul>"},{"location":"api/basic_json/operator%5B%5D/#version-history","title":"Version history","text":"<ol> <li>Added in version 1.0.0.</li> <li>Added in version 1.0.0. Added overloads for <code>T* key</code> in version 1.1.0. Removed overloads for <code>T* key</code> (replaced by 3)    in version 3.11.0.</li> <li>Added in version 3.11.0.</li> <li>Added in version 2.0.0.</li> </ol>"},{"location":"api/basic_json/operator_ValueType/","title":"nlohmann::basic_json::operator ValueType","text":"<pre><code>template&lt;typename ValueType&gt;\nJSON_EXPLICIT operator ValueType() const;\n</code></pre> <p>Implicit type conversion between the JSON value and a compatible value. The call is realized by calling <code>get()</code>. See Notes for the meaning of <code>JSON_EXPLICIT</code>.</p>"},{"location":"api/basic_json/operator_ValueType/#template-parameters","title":"Template parameters","text":"<code>ValueType</code> the value type to return"},{"location":"api/basic_json/operator_ValueType/#return-value","title":"Return value","text":"<p>copy of the JSON value, converted to <code>ValueType</code></p>"},{"location":"api/basic_json/operator_ValueType/#exceptions","title":"Exceptions","text":"<p>Depends on what <code>json_serializer&lt;ValueType&gt;</code> <code>from_json()</code> method throws</p>"},{"location":"api/basic_json/operator_ValueType/#complexity","title":"Complexity","text":"<p>Linear in the size of the JSON value.</p>"},{"location":"api/basic_json/operator_ValueType/#notes","title":"Notes","text":"<p>Definition of <code>JSON_EXPLICIT</code></p> <p>By default <code>JSON_EXPLICIT</code> is defined to the empty string, so the signature is:</p> <pre><code>template&lt;typename ValueType&gt;\noperator ValueType() const;\n</code></pre> <p>If <code>JSON_USE_IMPLICIT_CONVERSIONS</code> is set to <code>0</code>, <code>JSON_EXPLICIT</code> is defined to <code>explicit</code>:</p> <pre><code>template&lt;typename ValueType&gt;\nexplicit operator ValueType() const;\n</code></pre> <p>That is, implicit conversions can be switched off by defining <code>JSON_USE_IMPLICIT_CONVERSIONS</code> to <code>0</code>.</p> <p>Future behavior change</p> <p>Implicit conversions will be switched off by default in the next major release of the library. That is, <code>JSON_EXPLICIT</code> will be set to <code>explicit</code> by default.</p> <p>You can prepare existing code by already defining <code>JSON_USE_IMPLICIT_CONVERSIONS</code> to <code>0</code> and replace any implicit conversions with calls to <code>get</code>.</p>"},{"location":"api/basic_json/operator_ValueType/#examples","title":"Examples","text":"Example <p>The example below shows several conversions from JSON values to other types. There are a few things to note: (1) Floating-point numbers can be converted to integers, (2) A JSON array can be converted to a standard <code>std::vector&lt;short&gt;</code>, (3) A JSON object can be converted to C++ associative containers such as <code>std::unordered_map&lt;std::string, json&gt;</code>.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;unordered_map&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create a JSON value with different types\n    json json_types =\n    {\n        {\"boolean\", true},\n        {\n            \"number\", {\n                {\"integer\", 42},\n                {\"floating-point\", 17.23}\n            }\n        },\n        {\"string\", \"Hello, world!\"},\n        {\"array\", {1, 2, 3, 4, 5}},\n        {\"null\", nullptr}\n    };\n\n    // use implicit conversions\n    bool v1 = json_types[\"boolean\"];\n    int v2 = json_types[\"number\"][\"integer\"];\n    short v3 = json_types[\"number\"][\"integer\"];\n    float v4 = json_types[\"number\"][\"floating-point\"];\n    int v5 = json_types[\"number\"][\"floating-point\"];\n    std::string v6 = json_types[\"string\"];\n    std::vector&lt;short&gt; v7 = json_types[\"array\"];\n    std::unordered_map&lt;std::string, json&gt; v8 = json_types;\n\n    // print the conversion results\n    std::cout &lt;&lt; v1 &lt;&lt; '\\n';\n    std::cout &lt;&lt; v2 &lt;&lt; ' ' &lt;&lt; v3 &lt;&lt; '\\n';\n    std::cout &lt;&lt; v4 &lt;&lt; ' ' &lt;&lt; v5 &lt;&lt; '\\n';\n    std::cout &lt;&lt; v6 &lt;&lt; '\\n';\n\n    for (auto i : v7)\n    {\n        std::cout &lt;&lt; i &lt;&lt; ' ';\n    }\n    std::cout &lt;&lt; \"\\n\\n\";\n\n    for (auto i : v8)\n    {\n        std::cout &lt;&lt; i.first &lt;&lt; \": \" &lt;&lt; i.second &lt;&lt; '\\n';\n    }\n\n    // example for an exception\n    try\n    {\n        bool v1 = json_types[\"string\"];\n    }\n    catch (const json::type_error&amp; e)\n    {\n        std::cout &lt;&lt; e.what() &lt;&lt; '\\n';\n    }\n}\n</code></pre> <p>Output:</p> <pre><code>1\n42 42\n17.23 17\nHello, world!\n1 2 3 4 5 \n\nstring: \"Hello, world!\"\nnumber: {\"floating-point\":17.23,\"integer\":42}\nnull: null\nboolean: true\narray: [1,2,3,4,5]\n[json.exception.type_error.302] type must be boolean, but is string\n</code></pre>"},{"location":"api/basic_json/operator_ValueType/#version-history","title":"Version history","text":"<ul> <li>Since version 1.0.0.</li> <li>Macros <code>JSON_EXPLICIT</code>/<code>JSON_USE_IMPLICIT_CONVERSIONS</code> added   in version 3.9.0.</li> </ul>"},{"location":"api/basic_json/operator_eq/","title":"nlohmann::basic_json::operator==","text":"<pre><code>// until C++20\nbool operator==(const_reference lhs, const_reference rhs) noexcept;   // (1)\n\ntemplate&lt;typename ScalarType&gt;\nbool operator==(const_reference lhs, const ScalarType rhs) noexcept;  // (2)\n\ntemplate&lt;typename ScalarType&gt;\nbool operator==(ScalarType lhs, const const_reference rhs) noexcept;  // (2)\n\n// since C++20\nclass basic_json {\n    bool operator==(const_reference rhs) const noexcept;              // (1)\n\n    template&lt;typename ScalarType&gt;\n    bool operator==(ScalarType rhs) const noexcept;                   // (2)\n};\n</code></pre> <ol> <li> <p>Compares two JSON values for equality according to the following rules:</p> <ul> <li>Two JSON values are equal if (1) neither value is discarded, or (2) they are of the same type and their stored   values are the same according to their respective <code>operator==</code>.</li> <li>Integer and floating-point numbers are automatically converted before comparison.</li> </ul> </li> <li> <p>Compares a JSON value and a scalar or a scalar and a JSON value for equality by converting the    scalar to a JSON value and comparing both JSON values according to 1.</p> </li> </ol>"},{"location":"api/basic_json/operator_eq/#template-parameters","title":"Template parameters","text":"<code>ScalarType</code> a scalar type according to <code>std::is_scalar&lt;ScalarType&gt;::value</code>"},{"location":"api/basic_json/operator_eq/#parameters","title":"Parameters","text":"<code>lhs</code> (in) first value to consider  <code>rhs</code> (in) second value to consider"},{"location":"api/basic_json/operator_eq/#return-value","title":"Return value","text":"<p>whether the values <code>lhs</code>/<code>*this</code> and <code>rhs</code> are equal</p>"},{"location":"api/basic_json/operator_eq/#exception-safety","title":"Exception safety","text":"<p>No-throw guarantee: this function never throws exceptions.</p>"},{"location":"api/basic_json/operator_eq/#complexity","title":"Complexity","text":"<p>Linear.</p>"},{"location":"api/basic_json/operator_eq/#notes","title":"Notes","text":"<p>Comparing special values</p> <ul> <li><code>NaN</code> values are unordered within the domain of numbers.   The following comparisons all yield <code>false</code>:<ol> <li>Comparing a <code>NaN</code> with itself.</li> <li>Comparing a <code>NaN</code> with another <code>NaN</code>.</li> <li>Comparing a <code>NaN</code> and any other number.</li> </ol> </li> <li>JSON <code>null</code> values are all equal.</li> <li>Discarded values never compare equal to themselves.</li> </ul> <p>Comparing floating-point numbers</p> <p>Floating-point numbers inside JSON values numbers are compared with <code>json::number_float_t::operator==</code> which is <code>double::operator==</code> by default. To compare floating-point while respecting an epsilon, an alternative comparison function could be used, for instance</p> <pre><code>template&lt;typename T, typename = typename std::enable_if&lt;std::is_floating_point&lt;T&gt;::value, T&gt;::type&gt;\ninline bool is_same(T a, T b, T epsilon = std::numeric_limits&lt;T&gt;::epsilon()) noexcept\n{\n    return std::abs(a - b) &lt;= epsilon;\n}\n</code></pre> <p>Or you can self-defined operator equal function like this:</p> <pre><code>bool my_equal(const_reference lhs, const_reference rhs)\n{\n    const auto lhs_type lhs.type();\n    const auto rhs_type rhs.type();\n    if (lhs_type == rhs_type)\n    {\n        switch(lhs_type)\n            // self_defined case\n            case value_t::number_float:\n                return std::abs(lhs - rhs) &lt;= std::numeric_limits&lt;float&gt;::epsilon();\n            // other cases remain the same with the original\n            ...\n    }\n...\n}\n</code></pre> <p>Comparing different <code>basic_json</code> specializations</p> <p>Comparing different <code>basic_json</code> specializations can have surprising effects. For instance, the result of comparing the JSON objects</p> <pre><code>{\n   \"version\": 1,\n   \"type\": \"integer\"\n}\n</code></pre> <p>and</p> <pre><code>{\n   \"type\": \"integer\",\n   \"version\": 1\n}\n</code></pre> <p>depends on whether <code>nlohmann::json</code> or <code>nlohmann::ordered_json</code> is used:</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;iomanip&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    nlohmann::json uj1 = {{\"version\", 1}, {\"type\", \"integer\"}};\n    nlohmann::json uj2 = {{\"type\", \"integer\"}, {\"version\", 1}};\n\n    nlohmann::ordered_json oj1 = {{\"version\", 1}, {\"type\", \"integer\"}};\n    nlohmann::ordered_json oj2 = {{\"type\", \"integer\"}, {\"version\", 1}};\n\n    std::cout &lt;&lt; std::boolalpha &lt;&lt; (uj1 == uj2) &lt;&lt; '\\n' &lt;&lt; (oj1 == oj2) &lt;&lt; std::endl;\n}\n</code></pre> <p>Output:</p> <pre><code>true\nfalse\n</code></pre>"},{"location":"api/basic_json/operator_eq/#examples","title":"Examples","text":"Example <p>The example demonstrates comparing several JSON types.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create several JSON values\n    json array_1 = {1, 2, 3};\n    json array_2 = {1, 2, 4};\n    json object_1 = {{\"A\", \"a\"}, {\"B\", \"b\"}};\n    json object_2 = {{\"B\", \"b\"}, {\"A\", \"a\"}};\n    json number_1 = 17;\n    json number_2 = 17.000000000000001L;\n    json string_1 = \"foo\";\n    json string_2 = \"bar\";\n\n    // output values and comparisons\n    std::cout &lt;&lt; std::boolalpha;\n    std::cout &lt;&lt; array_1 &lt;&lt; \" == \" &lt;&lt; array_2 &lt;&lt; \" \" &lt;&lt; (array_1 == array_2) &lt;&lt; '\\n';\n    std::cout &lt;&lt; object_1 &lt;&lt; \" == \" &lt;&lt; object_2 &lt;&lt; \" \" &lt;&lt; (object_1 == object_2) &lt;&lt; '\\n';\n    std::cout &lt;&lt; number_1 &lt;&lt; \" == \" &lt;&lt; number_2 &lt;&lt; \" \" &lt;&lt; (number_1 == number_2) &lt;&lt; '\\n';\n    std::cout &lt;&lt; string_1 &lt;&lt; \" == \" &lt;&lt; string_2 &lt;&lt; \" \" &lt;&lt; (string_1 == string_2) &lt;&lt; '\\n';\n}\n</code></pre> <p>Output:</p> <pre><code>[1,2,3] == [1,2,4] false\n{\"A\":\"a\",\"B\":\"b\"} == {\"A\":\"a\",\"B\":\"b\"} true\n17 == 17.0 true\n\"foo\" == \"bar\" false\n</code></pre> Example <p>The example demonstrates comparing several JSON types against the null pointer (JSON <code>null</code>).</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create several JSON values\n    json array = {1, 2, 3};\n    json object = {{\"A\", \"a\"}, {\"B\", \"b\"}};\n    json number = 17;\n    json string = \"foo\";\n    json null;\n\n    // output values and comparisons\n    std::cout &lt;&lt; std::boolalpha;\n    std::cout &lt;&lt; array &lt;&lt; \" == nullptr \" &lt;&lt; (array == nullptr) &lt;&lt; '\\n';\n    std::cout &lt;&lt; object &lt;&lt; \" == nullptr \" &lt;&lt; (object == nullptr) &lt;&lt; '\\n';\n    std::cout &lt;&lt; number &lt;&lt; \" == nullptr \" &lt;&lt; (number == nullptr) &lt;&lt; '\\n';\n    std::cout &lt;&lt; string &lt;&lt; \" == nullptr \" &lt;&lt; (string == nullptr) &lt;&lt; '\\n';\n    std::cout &lt;&lt; null &lt;&lt; \" == nullptr \" &lt;&lt; (null == nullptr) &lt;&lt; '\\n';\n}\n</code></pre> <p>Output:</p> <pre><code>[1,2,3] == nullptr false\n{\"A\":\"a\",\"B\":\"b\"} == nullptr false\n17 == nullptr false\n\"foo\" == nullptr false\nnull == nullptr true\n</code></pre>"},{"location":"api/basic_json/operator_eq/#version-history","title":"Version history","text":"<ol> <li>Added in version 1.0.0. Added C++20 member functions in version 3.11.0.</li> <li>Added in version 1.0.0. Added C++20 member functions in version 3.11.0.</li> </ol>"},{"location":"api/basic_json/operator_ge/","title":"nlohmann::basic_json::operator&gt;=","text":"<pre><code>// until C++20\nbool operator&gt;=(const_reference lhs, const_reference rhs) noexcept;   // (1)\n\ntemplate&lt;typename ScalarType&gt;\nbool operator&gt;=(const_reference lhs, const ScalarType rhs) noexcept;  // (2)\n\ntemplate&lt;typename ScalarType&gt;\nbool operator&gt;=(ScalarType lhs, const const_reference rhs) noexcept;  // (2)\n</code></pre> <ol> <li> <p>Compares whether one JSON value <code>lhs</code> is greater than or equal to another JSON value <code>rhs</code> according to the following    rules:</p> <ul> <li>The comparison always yields <code>false</code> if (1) either operand is discarded, or (2) either operand is <code>NaN</code> and   the other operand is either <code>NaN</code> or any other number.</li> <li>Otherwise, returns the result of <code>!(lhs &lt; rhs)</code> (see operator&lt;).</li> </ul> </li> <li> <p>Compares whether a JSON value is greater than or equal to a scalar or a scalar is greater than or equal to a JSON    value by converting the scalar to a JSON value and comparing both JSON values according to 1.</p> </li> </ol>"},{"location":"api/basic_json/operator_ge/#template-parameters","title":"Template parameters","text":"<code>ScalarType</code> a scalar type according to <code>std::is_scalar&lt;ScalarType&gt;::value</code>"},{"location":"api/basic_json/operator_ge/#parameters","title":"Parameters","text":"<code>lhs</code> (in) first value to consider  <code>rhs</code> (in) second value to consider"},{"location":"api/basic_json/operator_ge/#return-value","title":"Return value","text":"<p>whether <code>lhs</code> is less than or equal to <code>rhs</code></p>"},{"location":"api/basic_json/operator_ge/#exception-safety","title":"Exception safety","text":"<p>No-throw guarantee: this function never throws exceptions.</p>"},{"location":"api/basic_json/operator_ge/#complexity","title":"Complexity","text":"<p>Linear.</p>"},{"location":"api/basic_json/operator_ge/#notes","title":"Notes","text":"<p>Comparing <code>NaN</code></p> <p><code>NaN</code> values are unordered within the domain of numbers. The following comparisons all yield <code>false</code>:   1. Comparing a <code>NaN</code> with itself.   2. Comparing a <code>NaN</code> with another <code>NaN</code>.   3. Comparing a <code>NaN</code> and any other number.</p> <p>Operator overload resolution</p> <p>Since C++20 overload resolution will consider the rewritten candidate generated from <code>operator&lt;=&gt;</code>.</p>"},{"location":"api/basic_json/operator_ge/#examples","title":"Examples","text":"Example <p>The example demonstrates comparing several JSON types.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create several JSON values\n    json array_1 = {1, 2, 3};\n    json array_2 = {1, 2, 4};\n    json object_1 = {{\"A\", \"a\"}, {\"B\", \"b\"}};\n    json object_2 = {{\"B\", \"b\"}, {\"A\", \"a\"}};\n    json number_1 = 17;\n    json number_2 = 17.0000000000001L;\n    json string_1 = \"foo\";\n    json string_2 = \"bar\";\n\n    // output values and comparisons\n    std::cout &lt;&lt; std::boolalpha;\n    std::cout &lt;&lt; array_1 &lt;&lt; \" &gt;= \" &lt;&lt; array_2 &lt;&lt; \" \" &lt;&lt; (array_1 &gt;= array_2) &lt;&lt; '\\n';\n    std::cout &lt;&lt; object_1 &lt;&lt; \" &gt;= \" &lt;&lt; object_2 &lt;&lt; \" \" &lt;&lt; (object_1 &gt;= object_2) &lt;&lt; '\\n';\n    std::cout &lt;&lt; number_1 &lt;&lt; \" &gt;= \" &lt;&lt; number_2 &lt;&lt; \" \" &lt;&lt; (number_1 &gt;= number_2) &lt;&lt; '\\n';\n    std::cout &lt;&lt; string_1 &lt;&lt; \" &gt;= \" &lt;&lt; string_2 &lt;&lt; \" \" &lt;&lt; (string_1 &gt;= string_2) &lt;&lt; '\\n';\n}\n</code></pre> <p>Output:</p> <pre><code>[1,2,3] &gt;= [1,2,4] false\n{\"A\":\"a\",\"B\":\"b\"} &gt;= {\"A\":\"a\",\"B\":\"b\"} true\n17 &gt;= 17.0000000000001 false\n\"foo\" &gt;= \"bar\" true\n</code></pre>"},{"location":"api/basic_json/operator_ge/#see-also","title":"See also","text":"<ul> <li>operator&lt;=&gt; comparison: 3-way</li> </ul>"},{"location":"api/basic_json/operator_ge/#version-history","title":"Version history","text":"<ol> <li>Added in version 1.0.0. Conditionally removed since C++20 in version 3.11.0.</li> <li>Added in version 1.0.0. Conditionally removed since C++20 in version 3.11.0.</li> </ol>"},{"location":"api/basic_json/operator_gt/","title":"nlohmann::basic_json::operator&gt;","text":"<pre><code>// until C++20\nbool operator&gt;(const_reference lhs, const_reference rhs) noexcept;   // (1)\n\ntemplate&lt;typename ScalarType&gt;\nbool operator&gt;(const_reference lhs, const ScalarType rhs) noexcept;  // (2)\n\ntemplate&lt;typename ScalarType&gt;\nbool operator&gt;(ScalarType lhs, const const_reference rhs) noexcept;  // (2)\n</code></pre> <ol> <li> <p>Compares whether one JSON value <code>lhs</code> is greater than another JSON value <code>rhs</code> according to the   following rules:</p> <ul> <li>The comparison always yields <code>false</code> if (1) either operand is discarded, or (2) either   operand is <code>NaN</code> and the other operand is either <code>NaN</code> or any other number.</li> <li>Otherwise, returns the result of <code>!(lhs &lt;= rhs)</code> (see operator&lt;=).</li> </ul> </li> <li> <p>Compares whether a JSON value is greater than a scalar or a scalar is greater than a JSON value by    converting the scalar to a JSON value and comparing both JSON values according to 1.</p> </li> </ol>"},{"location":"api/basic_json/operator_gt/#template-parameters","title":"Template parameters","text":"<code>ScalarType</code> a scalar type according to <code>std::is_scalar&lt;ScalarType&gt;::value</code>"},{"location":"api/basic_json/operator_gt/#parameters","title":"Parameters","text":"<code>lhs</code> (in) first value to consider  <code>rhs</code> (in) second value to consider"},{"location":"api/basic_json/operator_gt/#return-value","title":"Return value","text":"<p>whether <code>lhs</code> is greater than <code>rhs</code></p>"},{"location":"api/basic_json/operator_gt/#exception-safety","title":"Exception safety","text":"<p>No-throw guarantee: this function never throws exceptions.</p>"},{"location":"api/basic_json/operator_gt/#complexity","title":"Complexity","text":"<p>Linear.</p>"},{"location":"api/basic_json/operator_gt/#notes","title":"Notes","text":"<p>Comparing <code>NaN</code></p> <p><code>NaN</code> values are unordered within the domain of numbers. The following comparisons all yield <code>false</code>:   1. Comparing a <code>NaN</code> with itself.   2. Comparing a <code>NaN</code> with another <code>NaN</code>.   3. Comparing a <code>NaN</code> and any other number.</p> <p>Operator overload resolution</p> <p>Since C++20 overload resolution will consider the rewritten candidate generated from <code>operator&lt;=&gt;</code>.</p>"},{"location":"api/basic_json/operator_gt/#examples","title":"Examples","text":"Example <p>The example demonstrates comparing several JSON types.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create several JSON values\n    json array_1 = {1, 2, 3};\n    json array_2 = {1, 2, 4};\n    json object_1 = {{\"A\", \"a\"}, {\"B\", \"b\"}};\n    json object_2 = {{\"B\", \"b\"}, {\"A\", \"a\"}};\n    json number_1 = 17;\n    json number_2 = 17.0000000000001L;\n    json string_1 = \"foo\";\n    json string_2 = \"bar\";\n\n    // output values and comparisons\n    std::cout &lt;&lt; std::boolalpha;\n    std::cout &lt;&lt; array_1 &lt;&lt; \" &gt; \" &lt;&lt; array_2 &lt;&lt; \" \" &lt;&lt; (array_1 &gt; array_2) &lt;&lt; '\\n';\n    std::cout &lt;&lt; object_1 &lt;&lt; \" &gt; \" &lt;&lt; object_2 &lt;&lt; \" \" &lt;&lt; (object_1 &gt; object_2) &lt;&lt; '\\n';\n    std::cout &lt;&lt; number_1 &lt;&lt; \" &gt; \" &lt;&lt; number_2 &lt;&lt; \" \" &lt;&lt; (number_1 &gt; number_2) &lt;&lt; '\\n';\n    std::cout &lt;&lt; string_1 &lt;&lt; \" &gt; \" &lt;&lt; string_2 &lt;&lt; \" \" &lt;&lt; (string_1 &gt; string_2) &lt;&lt; '\\n';\n}\n</code></pre> <p>Output:</p> <pre><code>[1,2,3] &gt; [1,2,4] false\n{\"A\":\"a\",\"B\":\"b\"} &gt; {\"A\":\"a\",\"B\":\"b\"} false\n17 &gt; 17.0000000000001 false\n\"foo\" &gt; \"bar\" true\n</code></pre>"},{"location":"api/basic_json/operator_gt/#see-also","title":"See also","text":"<ul> <li>operator&lt;=&gt; comparison: 3-way</li> </ul>"},{"location":"api/basic_json/operator_gt/#version-history","title":"Version history","text":"<ol> <li>Added in version 1.0.0. Conditionally removed since C++20 in version 3.11.0.</li> <li>Added in version 1.0.0. Conditionally removed since C++20 in version 3.11.0.</li> </ol>"},{"location":"api/basic_json/operator_le/","title":"nlohmann::basic_json::operator&lt;=","text":"<pre><code>// until C++20\nbool operator&lt;=(const_reference lhs, const_reference rhs) noexcept;   // (1)\n\ntemplate&lt;typename ScalarType&gt;\nbool operator&lt;=(const_reference lhs, const ScalarType rhs) noexcept;  // (2)\n\ntemplate&lt;typename ScalarType&gt;\nbool operator&lt;=(ScalarType lhs, const const_reference rhs) noexcept;  // (2)\n</code></pre> <ol> <li> <p>Compares whether one JSON value <code>lhs</code> is less than or equal to another JSON value <code>rhs</code>    according to the following rules:</p> <ul> <li>The comparison always yields <code>false</code> if (1) either operand is discarded, or (2) either   operand is <code>NaN</code> and the other operand is either <code>NaN</code> or any other number.</li> <li>Otherwise, returns the result of <code>!(rhs &lt; lhs)</code> (see operator&lt;).</li> </ul> </li> <li> <p>Compares whether a JSON value is less than or equal to a scalar or a scalar is less than or equal    to a JSON value by converting the scalar to a JSON value and comparing both JSON values according    to 1.</p> </li> </ol>"},{"location":"api/basic_json/operator_le/#template-parameters","title":"Template parameters","text":"<code>ScalarType</code> a scalar type according to <code>std::is_scalar&lt;ScalarType&gt;::value</code>"},{"location":"api/basic_json/operator_le/#parameters","title":"Parameters","text":"<code>lhs</code> (in) first value to consider  <code>rhs</code> (in) second value to consider"},{"location":"api/basic_json/operator_le/#return-value","title":"Return value","text":"<p>whether <code>lhs</code> is less than or equal to <code>rhs</code></p>"},{"location":"api/basic_json/operator_le/#exception-safety","title":"Exception safety","text":"<p>No-throw guarantee: this function never throws exceptions.</p>"},{"location":"api/basic_json/operator_le/#complexity","title":"Complexity","text":"<p>Linear.</p>"},{"location":"api/basic_json/operator_le/#notes","title":"Notes","text":"<p>Comparing <code>NaN</code></p> <p><code>NaN</code> values are unordered within the domain of numbers. The following comparisons all yield <code>false</code>:   1. Comparing a <code>NaN</code> with itself.   2. Comparing a <code>NaN</code> with another <code>NaN</code>.   3. Comparing a <code>NaN</code> and any other number.</p> <p>Operator overload resolution</p> <p>Since C++20 overload resolution will consider the rewritten candidate generated from <code>operator&lt;=&gt;</code>.</p>"},{"location":"api/basic_json/operator_le/#examples","title":"Examples","text":"Example <p>The example demonstrates comparing several JSON types.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create several JSON values\n    json array_1 = {1, 2, 3};\n    json array_2 = {1, 2, 4};\n    json object_1 = {{\"A\", \"a\"}, {\"B\", \"b\"}};\n    json object_2 = {{\"B\", \"b\"}, {\"A\", \"a\"}};\n    json number_1 = 17;\n    json number_2 = 17.0000000000001L;\n    json string_1 = \"foo\";\n    json string_2 = \"bar\";\n\n    // output values and comparisons\n    std::cout &lt;&lt; std::boolalpha;\n    std::cout &lt;&lt; array_1 &lt;&lt; \" &lt;= \" &lt;&lt; array_2 &lt;&lt; \" \" &lt;&lt; (array_1 &lt;= array_2) &lt;&lt; '\\n';\n    std::cout &lt;&lt; object_1 &lt;&lt; \" &lt;= \" &lt;&lt; object_2 &lt;&lt; \" \" &lt;&lt; (object_1 &lt;= object_2) &lt;&lt; '\\n';\n    std::cout &lt;&lt; number_1 &lt;&lt; \" &lt;= \" &lt;&lt; number_2 &lt;&lt; \" \" &lt;&lt; (number_1 &lt;= number_2) &lt;&lt; '\\n';\n    std::cout &lt;&lt; string_1 &lt;&lt; \" &lt;= \" &lt;&lt; string_2 &lt;&lt; \" \" &lt;&lt; (string_1 &lt;= string_2) &lt;&lt; '\\n';\n}\n</code></pre> <p>Output:</p> <pre><code>[1,2,3] &lt;= [1,2,4] true\n{\"A\":\"a\",\"B\":\"b\"} &lt;= {\"A\":\"a\",\"B\":\"b\"} true\n17 &lt;= 17.0000000000001 true\n\"foo\" &lt;= \"bar\" false\n</code></pre>"},{"location":"api/basic_json/operator_le/#see-also","title":"See also","text":"<ul> <li>operator&lt;=&gt; comparison: 3-way</li> </ul>"},{"location":"api/basic_json/operator_le/#version-history","title":"Version history","text":"<ol> <li>Added in version 1.0.0. Conditionally removed since C++20 in version 3.11.0.</li> <li>Added in version 1.0.0. Conditionally removed since C++20 in version 3.11.0.</li> </ol>"},{"location":"api/basic_json/operator_lt/","title":"nlohmann::basic_json::operator&lt;","text":"<pre><code>// until C++20\nbool operator&lt;(const_reference lhs, const_reference rhs) noexcept;   // (1)\n\ntemplate&lt;typename ScalarType&gt;\nbool operator&lt;(const_reference lhs, const ScalarType rhs) noexcept;  // (2)\n\ntemplate&lt;typename ScalarType&gt;\nbool operator&lt;(ScalarType lhs, const const_reference rhs) noexcept;  // (2)\n</code></pre> <ol> <li> <p>Compares whether one JSON value <code>lhs</code> is less than another JSON value <code>rhs</code> according to the   following rules:</p> <ul> <li>If either operand is discarded, the comparison yields <code>false</code>.</li> <li>If both operands have the same type, the values are compared using their respective <code>operator&lt;</code>.</li> <li>Integer and floating-point numbers are automatically converted before comparison.</li> <li>In case <code>lhs</code> and <code>rhs</code> have different types, the values are ignored and the order of the types   is considered, which is:<ol> <li>null</li> <li>boolean</li> <li>number (all types)</li> <li>object</li> <li>array</li> <li>string</li> <li>binary   For instance, any boolean value is considered less than any string.</li> </ol> </li> </ul> </li> <li> <p>Compares whether a JSON value is less than a scalar or a scalar is less than a JSON value by converting    the scalar to a JSON value and comparing both JSON values according to 1.</p> </li> </ol>"},{"location":"api/basic_json/operator_lt/#template-parameters","title":"Template parameters","text":"<code>ScalarType</code> a scalar type according to <code>std::is_scalar&lt;ScalarType&gt;::value</code>"},{"location":"api/basic_json/operator_lt/#parameters","title":"Parameters","text":"<code>lhs</code> (in) first value to consider  <code>rhs</code> (in) second value to consider"},{"location":"api/basic_json/operator_lt/#return-value","title":"Return value","text":"<p>whether <code>lhs</code> is less than <code>rhs</code></p>"},{"location":"api/basic_json/operator_lt/#exception-safety","title":"Exception safety","text":"<p>No-throw guarantee: this function never throws exceptions.</p>"},{"location":"api/basic_json/operator_lt/#complexity","title":"Complexity","text":"<p>Linear.</p>"},{"location":"api/basic_json/operator_lt/#notes","title":"Notes","text":"<p>Comparing <code>NaN</code></p> <p><code>NaN</code> values are unordered within the domain of numbers. The following comparisons all yield <code>false</code>:   1. Comparing a <code>NaN</code> with itself.   2. Comparing a <code>NaN</code> with another <code>NaN</code>.   3. Comparing a <code>NaN</code> and any other number.</p> <p>Operator overload resolution</p> <p>Since C++20 overload resolution will consider the rewritten candidate generated from <code>operator&lt;=&gt;</code>.</p>"},{"location":"api/basic_json/operator_lt/#examples","title":"Examples","text":"Example <p>The example demonstrates comparing several JSON types.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create several JSON values\n    json array_1 = {1, 2, 3};\n    json array_2 = {1, 2, 4};\n    json object_1 = {{\"A\", \"a\"}, {\"B\", \"b\"}};\n    json object_2 = {{\"B\", \"b\"}, {\"A\", \"a\"}};\n    json number_1 = 17;\n    json number_2 = 17.0000000000001L;\n    json string_1 = \"foo\";\n    json string_2 = \"bar\";\n\n    // output values and comparisons\n    std::cout &lt;&lt; std::boolalpha;\n    std::cout &lt;&lt; array_1 &lt;&lt; \" == \" &lt;&lt; array_2 &lt;&lt; \" \" &lt;&lt; (array_1 &lt; array_2) &lt;&lt; '\\n';\n    std::cout &lt;&lt; object_1 &lt;&lt; \" == \" &lt;&lt; object_2 &lt;&lt; \" \" &lt;&lt; (object_1 &lt; object_2) &lt;&lt; '\\n';\n    std::cout &lt;&lt; number_1 &lt;&lt; \" == \" &lt;&lt; number_2 &lt;&lt; \" \" &lt;&lt; (number_1 &lt; number_2) &lt;&lt; '\\n';\n    std::cout &lt;&lt; string_1 &lt;&lt; \" == \" &lt;&lt; string_2 &lt;&lt; \" \" &lt;&lt; (string_1 &lt; string_2) &lt;&lt; '\\n';\n}\n</code></pre> <p>Output:</p> <pre><code>[1,2,3] == [1,2,4] true\n{\"A\":\"a\",\"B\":\"b\"} == {\"A\":\"a\",\"B\":\"b\"} false\n17 == 17.0000000000001 true\n\"foo\" == \"bar\" false\n</code></pre>"},{"location":"api/basic_json/operator_lt/#see-also","title":"See also","text":"<ul> <li>operator&lt;=&gt; comparison: 3-way</li> </ul>"},{"location":"api/basic_json/operator_lt/#version-history","title":"Version history","text":"<ol> <li>Added in version 1.0.0. Conditionally removed since C++20 in version 3.11.0.</li> <li>Added in version 1.0.0. Conditionally removed since C++20 in version 3.11.0.</li> </ol>"},{"location":"api/basic_json/operator_ne/","title":"nlohmann::basic_json::operator!=","text":"<pre><code>// until C++20\nbool operator!=(const_reference lhs, const_reference rhs) noexcept;   // (1)\n\ntemplate&lt;typename ScalarType&gt;\nbool operator!=(const_reference lhs, const ScalarType rhs) noexcept;  // (2)\n\ntemplate&lt;typename ScalarType&gt;\nbool operator!=(ScalarType lhs, const const_reference rhs) noexcept;  // (2)\n\n// since C++20\nclass basic_json {\n    bool operator!=(const_reference rhs) const noexcept;              // (1)\n\n    template&lt;typename ScalarType&gt;\n    bool operator!=(ScalarType rhs) const noexcept;                   // (2)\n};\n</code></pre> <ol> <li> <p>Compares two JSON values for inequality according to the following rules:</p> <ul> <li>The comparison always yields <code>false</code> if (1) either operand is discarded, or (2) either operand is <code>NaN</code> and   the other operand is either <code>NaN</code> or any other number.</li> <li>Otherwise, returns the result of <code>!(lhs == rhs)</code> (until C++20) or <code>!(*this == rhs)</code> (since C++20).</li> </ul> </li> <li> <p>Compares a JSON value and a scalar or a scalar and a JSON value for inequality by converting the scalar to a JSON    value and comparing both JSON values according to 1.</p> </li> </ol>"},{"location":"api/basic_json/operator_ne/#template-parameters","title":"Template parameters","text":"<code>ScalarType</code> a scalar type according to <code>std::is_scalar&lt;ScalarType&gt;::value</code>"},{"location":"api/basic_json/operator_ne/#parameters","title":"Parameters","text":"<code>lhs</code> (in) first value to consider  <code>rhs</code> (in) second value to consider"},{"location":"api/basic_json/operator_ne/#return-value","title":"Return value","text":"<p>whether the values <code>lhs</code>/<code>*this</code> and <code>rhs</code> are not equal</p>"},{"location":"api/basic_json/operator_ne/#exception-safety","title":"Exception safety","text":"<p>No-throw guarantee: this function never throws exceptions.</p>"},{"location":"api/basic_json/operator_ne/#complexity","title":"Complexity","text":"<p>Linear.</p>"},{"location":"api/basic_json/operator_ne/#notes","title":"Notes","text":"<p>Comparing <code>NaN</code></p> <p><code>NaN</code> values are unordered within the domain of numbers. The following comparisons all yield <code>false</code>:   1. Comparing a <code>NaN</code> with itself.   2. Comparing a <code>NaN</code> with another <code>NaN</code>.   3. Comparing a <code>NaN</code> and any other number.</p>"},{"location":"api/basic_json/operator_ne/#examples","title":"Examples","text":"Example <p>The example demonstrates comparing several JSON types.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create several JSON values\n    json array_1 = {1, 2, 3};\n    json array_2 = {1, 2, 4};\n    json object_1 = {{\"A\", \"a\"}, {\"B\", \"b\"}};\n    json object_2 = {{\"B\", \"b\"}, {\"A\", \"a\"}};\n    json number_1 = 17;\n    json number_2 = 17.000000000000001L;\n    json string_1 = \"foo\";\n    json string_2 = \"bar\";\n\n    // output values and comparisons\n    std::cout &lt;&lt; std::boolalpha;\n    std::cout &lt;&lt; array_1 &lt;&lt; \" != \" &lt;&lt; array_2 &lt;&lt; \" \" &lt;&lt; (array_1 != array_2) &lt;&lt; '\\n';\n    std::cout &lt;&lt; object_1 &lt;&lt; \" != \" &lt;&lt; object_2 &lt;&lt; \" \" &lt;&lt; (object_1 != object_2) &lt;&lt; '\\n';\n    std::cout &lt;&lt; number_1 &lt;&lt; \" != \" &lt;&lt; number_2 &lt;&lt; \" \" &lt;&lt; (number_1 != number_2) &lt;&lt; '\\n';\n    std::cout &lt;&lt; string_1 &lt;&lt; \" != \" &lt;&lt; string_2 &lt;&lt; \" \" &lt;&lt; (string_1 != string_2) &lt;&lt; '\\n';\n}\n</code></pre> <p>Output:</p> <pre><code>[1,2,3] != [1,2,4] true\n{\"A\":\"a\",\"B\":\"b\"} != {\"A\":\"a\",\"B\":\"b\"} false\n17 != 17.0 false\n\"foo\" != \"bar\" true\n</code></pre> Example <p>The example demonstrates comparing several JSON types against the null pointer (JSON <code>null</code>).</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create several JSON values\n    json array = {1, 2, 3};\n    json object = {{\"A\", \"a\"}, {\"B\", \"b\"}};\n    json number = 17;\n    json string = \"foo\";\n    json null;\n\n    // output values and comparisons\n    std::cout &lt;&lt; std::boolalpha;\n    std::cout &lt;&lt; array &lt;&lt; \" != nullptr \" &lt;&lt; (array != nullptr) &lt;&lt; '\\n';\n    std::cout &lt;&lt; object &lt;&lt; \" != nullptr \" &lt;&lt; (object != nullptr) &lt;&lt; '\\n';\n    std::cout &lt;&lt; number &lt;&lt; \" != nullptr \" &lt;&lt; (number != nullptr) &lt;&lt; '\\n';\n    std::cout &lt;&lt; string &lt;&lt; \" != nullptr \" &lt;&lt; (string != nullptr) &lt;&lt; '\\n';\n    std::cout &lt;&lt; null &lt;&lt; \" != nullptr \" &lt;&lt; (null != nullptr) &lt;&lt; '\\n';\n}\n</code></pre> <p>Output:</p> <pre><code>[1,2,3] != nullptr true\n{\"A\":\"a\",\"B\":\"b\"} != nullptr true\n17 != nullptr true\n\"foo\" != nullptr true\nnull != nullptr false\n</code></pre>"},{"location":"api/basic_json/operator_ne/#version-history","title":"Version history","text":"<ol> <li>Added in version 1.0.0. Added C++20 member functions in version 3.11.0.</li> <li>Added in version 1.0.0. Added C++20 member functions in version 3.11.0.</li> </ol>"},{"location":"api/basic_json/operator_spaceship/","title":"nlohmann::basic_json::operator&lt;=&gt;","text":"<pre><code>// since C++20\nclass basic_json {\n    std::partial_ordering operator&lt;=&gt;(const_reference rhs) const noexcept;  // (1)\n\n    template&lt;typename ScalarType&gt;\n    std::partial_ordering operator&lt;=&gt;(const ScalarType rhs) const noexcept; // (2)\n};\n</code></pre> <ol> <li> <p>3-way compares two JSON values producing a result of type <code>std::partial_ordering</code> according to the following rules:</p> <ul> <li>Two JSON values compare with a result of <code>std::partial_ordering::unordered</code> if either value is discarded.</li> <li>If both JSON values are of the same type, the result is produced by 3-way comparing their stored values using   their respective <code>operator&lt;=&gt;</code>.</li> <li>Integer and floating-point numbers are converted to their common type and then 3-way compared using their   respective <code>operator&lt;=&gt;</code>.   For instance, comparing an integer and a floating-point value will 3-way compare the first value converted to   floating-point with the second value.</li> <li>Otherwise, yields a result by comparing the type (see <code>value_t</code>).</li> </ul> </li> <li> <p>3-way compares a JSON value and a scalar or a scalar and a JSON value by converting the scalar to a JSON value and    3-way comparing both JSON values (see 1).</p> </li> </ol>"},{"location":"api/basic_json/operator_spaceship/#template-parameters","title":"Template parameters","text":"<code>ScalarType</code> a scalar type according to <code>std::is_scalar&lt;ScalarType&gt;::value</code>"},{"location":"api/basic_json/operator_spaceship/#parameters","title":"Parameters","text":"<code>rhs</code> (in) second value to consider"},{"location":"api/basic_json/operator_spaceship/#return-value","title":"Return value","text":"<p>the <code>std::partial_ordering</code> of the 3-way comparison of <code>*this</code> and <code>rhs</code></p>"},{"location":"api/basic_json/operator_spaceship/#exception-safety","title":"Exception safety","text":"<p>No-throw guarantee: this function never throws exceptions.</p>"},{"location":"api/basic_json/operator_spaceship/#complexity","title":"Complexity","text":"<p>Linear.</p>"},{"location":"api/basic_json/operator_spaceship/#notes","title":"Notes","text":"<p>Comparing <code>NaN</code></p> <ul> <li><code>NaN</code> values are unordered within the domain of numbers.   The following comparisons all yield <code>std::partial_ordering::unordered</code>:<ol> <li>Comparing a <code>NaN</code> with itself.</li> <li>Comparing a <code>NaN</code> with another <code>NaN</code>.</li> <li>Comparing a <code>NaN</code> and any other number.</li> </ol> </li> </ul>"},{"location":"api/basic_json/operator_spaceship/#examples","title":"Examples","text":"Example: (1) comparing JSON values <p>The example demonstrates comparing several JSON values.</p> <pre><code>#include &lt;compare&gt;\n#include &lt;iostream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nconst char* to_string(const std::partial_ordering&amp; po)\n{\n    if (std::is_lt(po))\n    {\n        return \"less\";\n    }\n    else if (std::is_gt(po))\n    {\n        return \"greater\";\n    }\n    else if (std::is_eq(po))\n    {\n        return \"equivalent\";\n    }\n    return \"unordered\";\n}\n\nint main()\n{\n    // create several JSON values\n    json array_1 = {1, 2, 3};\n    json array_2 = {1, 2, 4};\n    json object_1 = {{\"A\", \"a\"}, {\"B\", \"b\"}};\n    json object_2 = {{\"B\", \"b\"}, {\"A\", \"a\"}};\n    json number = 17;\n    json string = \"foo\";\n    json discarded = json(json::value_t::discarded);\n\n    // output values and comparisons\n    std::cout &lt;&lt; array_1 &lt;&lt; \" &lt;=&gt; \" &lt;&lt; array_2 &lt;&lt; \" := \" &lt;&lt; to_string(array_1 &lt;=&gt; array_2) &lt;&lt; '\\n'; // *NOPAD*\n    std::cout &lt;&lt; object_1 &lt;&lt; \" &lt;=&gt; \" &lt;&lt; object_2 &lt;&lt; \" := \" &lt;&lt; to_string(object_1 &lt;=&gt; object_2) &lt;&lt; '\\n'; // *NOPAD*\n    std::cout &lt;&lt; string &lt;&lt; \" &lt;=&gt; \" &lt;&lt; number &lt;&lt; \" := \" &lt;&lt; to_string(string &lt;=&gt; number) &lt;&lt; '\\n'; // *NOPAD*\n    std::cout &lt;&lt; string &lt;&lt; \" &lt;=&gt; \" &lt;&lt; discarded &lt;&lt; \" := \" &lt;&lt; to_string(string &lt;=&gt; discarded) &lt;&lt; '\\n'; // *NOPAD*\n}\n</code></pre> <p>Output:</p> <pre><code>[1,2,3] &lt;=&gt; [1,2,4] := less\n{\"A\":\"a\",\"B\":\"b\"} &lt;=&gt; {\"A\":\"a\",\"B\":\"b\"} := equivalent\n\"foo\" &lt;=&gt; 17 := greater\n\"foo\" &lt;=&gt; &lt;discarded&gt; := unordered\n</code></pre> Example: (2) comparing JSON values and scalars <p>The example demonstrates comparing several JSON values and scalars.</p> <pre><code>#include &lt;compare&gt;\n#include &lt;iostream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nconst char* to_string(const std::partial_ordering&amp; po)\n{\n    if (std::is_lt(po))\n    {\n        return \"less\";\n    }\n    else if (std::is_gt(po))\n    {\n        return \"greater\";\n    }\n    else if (std::is_eq(po))\n    {\n        return \"equivalent\";\n    }\n    return \"unordered\";\n}\n\nint main()\n{\n    using float_limits = std::numeric_limits&lt;json::number_float_t&gt;;\n    constexpr auto nan = float_limits::quiet_NaN();\n\n    // create several JSON values\n    json boolean = false;\n    json number = 17;\n    json string = \"17\";\n\n    // output values and comparisons\n    std::cout &lt;&lt; std::boolalpha &lt;&lt; std::fixed;\n    std::cout &lt;&lt; boolean &lt;&lt; \" &lt;=&gt; \" &lt;&lt; true &lt;&lt; \" := \" &lt;&lt; to_string(boolean &lt;=&gt; true) &lt;&lt; '\\n'; // *NOPAD*\n    std::cout &lt;&lt; number &lt;&lt; \" &lt;=&gt; \" &lt;&lt; 17.0 &lt;&lt; \" := \" &lt;&lt; to_string(number &lt;=&gt; 17.0) &lt;&lt; '\\n'; // *NOPAD*\n    std::cout &lt;&lt; number &lt;&lt; \" &lt;=&gt; \" &lt;&lt; nan &lt;&lt; \" := \" &lt;&lt; to_string(number &lt;=&gt; nan) &lt;&lt; '\\n'; // *NOPAD*\n    std::cout &lt;&lt; string &lt;&lt; \" &lt;=&gt; \" &lt;&lt; 17 &lt;&lt; \" := \" &lt;&lt; to_string(string &lt;=&gt; 17) &lt;&lt; '\\n'; // *NOPAD*\n}\n</code></pre> <p>Output:</p> <pre><code>false &lt;=&gt; true := less\n17 &lt;=&gt; 17.000000 := equivalent\n17 &lt;=&gt; nan := unordered\n\"17\" &lt;=&gt; 17 := greater\n</code></pre>"},{"location":"api/basic_json/operator_spaceship/#see-also","title":"See also","text":"<ul> <li>operator== - comparison: equal</li> <li>operator!= - comparison: not equal</li> <li>operator&lt; - comparison: less than</li> <li>operator&lt;= - comparison: less than or equal</li> <li>operator&gt; - comparison: greater than</li> <li>operator&gt;= - comparison: greater than or equal</li> </ul>"},{"location":"api/basic_json/operator_spaceship/#version-history","title":"Version history","text":"<ol> <li>Added in version 3.11.0.</li> <li>Added in version 3.11.0.</li> </ol>"},{"location":"api/basic_json/operator_value_t/","title":"nlohmann::basic_json::operator value_t","text":"<pre><code>constexpr operator value_t() const noexcept;\n</code></pre> <p>Return the type of the JSON value as a value from the <code>value_t</code> enumeration.</p>"},{"location":"api/basic_json/operator_value_t/#return-value","title":"Return value","text":"<p>the type of the JSON value</p> Value type return value <code>null</code> <code>value_t::null</code> boolean <code>value_t::boolean</code> string <code>value_t::string</code> number (integer) <code>value_t::number_integer</code> number (unsigned integer) <code>value_t::number_unsigned</code> number (floating-point) <code>value_t::number_float</code> object <code>value_t::object</code> array <code>value_t::array</code> binary <code>value_t::binary</code> discarded <code>value_t::discarded</code>"},{"location":"api/basic_json/operator_value_t/#exception-safety","title":"Exception safety","text":"<p>No-throw guarantee: this member function never throws exceptions.</p>"},{"location":"api/basic_json/operator_value_t/#complexity","title":"Complexity","text":"<p>Constant.</p>"},{"location":"api/basic_json/operator_value_t/#examples","title":"Examples","text":"Example <p>The following code exemplifies <code>operator value_t()</code> for all JSON types.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create JSON values\n    json j_null;\n    json j_boolean = true;\n    json j_number_integer = -17;\n    json j_number_unsigned = 42u;\n    json j_number_float = 23.42;\n    json j_object = {{\"one\", 1}, {\"two\", 2}};\n    json j_array = {1, 2, 4, 8, 16};\n    json j_string = \"Hello, world\";\n\n    // call operator value_t()\n    json::value_t t_null = j_null;\n    json::value_t t_boolean = j_boolean;\n    json::value_t t_number_integer = j_number_integer;\n    json::value_t t_number_unsigned = j_number_unsigned;\n    json::value_t t_number_float = j_number_float;\n    json::value_t t_object = j_object;\n    json::value_t t_array = j_array;\n    json::value_t t_string = j_string;\n\n    // print types\n    std::cout &lt;&lt; std::boolalpha;\n    std::cout &lt;&lt; (t_null == json::value_t::null) &lt;&lt; '\\n';\n    std::cout &lt;&lt; (t_boolean == json::value_t::boolean) &lt;&lt; '\\n';\n    std::cout &lt;&lt; (t_number_integer == json::value_t::number_integer) &lt;&lt; '\\n';\n    std::cout &lt;&lt; (t_number_unsigned == json::value_t::number_unsigned) &lt;&lt; '\\n';\n    std::cout &lt;&lt; (t_number_float == json::value_t::number_float) &lt;&lt; '\\n';\n    std::cout &lt;&lt; (t_object == json::value_t::object) &lt;&lt; '\\n';\n    std::cout &lt;&lt; (t_array == json::value_t::array) &lt;&lt; '\\n';\n    std::cout &lt;&lt; (t_string == json::value_t::string) &lt;&lt; '\\n';\n}\n</code></pre> <p>Output:</p> <pre><code>true\ntrue\ntrue\ntrue\ntrue\ntrue\ntrue\ntrue\n</code></pre>"},{"location":"api/basic_json/operator_value_t/#version-history","title":"Version history","text":"<ul> <li>Added in version 1.0.0.</li> <li>Added unsigned integer type in version 2.0.0.</li> <li>Added binary type in version 3.8.0.</li> </ul>"},{"location":"api/basic_json/other_error/","title":"nlohmann::basic_json::other_error","text":"<pre><code>class other_error : public exception;\n</code></pre> <p>This exception is thrown in case of errors that cannot be classified with the other exception types.</p> <p>Exceptions have ids 5xx (see list of other errors).</p> <pre><code>classDiagram\n  direction LR\n\n    class std_exception [\"std::exception\"] {\n        &lt;&lt;interface&gt;&gt;\n    }\n\n    class json_exception [\"basic_json::exception\"] {\n        +const int id\n        +const char* what() const\n    }\n\n    class json_parse_error [\"basic_json::parse_error\"] {\n        +const std::size_t byte\n    }\n\n    class json_invalid_iterator [\"basic_json::invalid_iterator\"]\n    class json_type_error [\"basic_json::type_error\"]\n    class json_out_of_range [\"basic_json::out_of_range\"]\n    class json_other_error [\"basic_json::other_error\"]\n\n    std_exception &lt;|-- json_exception\n    json_exception &lt;|-- json_parse_error\n    json_exception &lt;|-- json_invalid_iterator\n    json_exception &lt;|-- json_type_error\n    json_exception &lt;|-- json_out_of_range\n    json_exception &lt;|-- json_other_error\n\n    style json_other_error fill:#CCCCFF</code></pre>"},{"location":"api/basic_json/other_error/#member-functions","title":"Member functions","text":"<ul> <li>what - returns explanatory string</li> </ul>"},{"location":"api/basic_json/other_error/#member-variables","title":"Member variables","text":"<ul> <li>id - the id of the exception</li> </ul>"},{"location":"api/basic_json/other_error/#examples","title":"Examples","text":"Example <p>The following code shows how a <code>other_error</code> exception can be caught.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\nusing namespace nlohmann::literals;\n\nint main()\n{\n    try\n    {\n        // executing a failing JSON Patch operation\n        json value = R\"({\n            \"best_biscuit\": {\n                \"name\": \"Oreo\"\n            }\n        })\"_json;\n        json patch = R\"([{\n            \"op\": \"test\",\n            \"path\": \"/best_biscuit/name\",\n            \"value\": \"Choco Leibniz\"\n        }])\"_json;\n        value.patch(patch);\n    }\n    catch (const json::other_error&amp; e)\n    {\n        // output exception information\n        std::cout &lt;&lt; \"message: \" &lt;&lt; e.what() &lt;&lt; '\\n'\n                  &lt;&lt; \"exception id: \" &lt;&lt; e.id &lt;&lt; std::endl;\n    }\n}\n</code></pre> <p>Output:</p> <pre><code>message: [json.exception.other_error.501] unsuccessful: {\"op\":\"test\",\"path\":\"/best_biscuit/name\",\"value\":\"Choco Leibniz\"}\nexception id: 501\n</code></pre>"},{"location":"api/basic_json/other_error/#see-also","title":"See also","text":"<ul> <li>List of other errors</li> <li><code>parse_error</code> for exceptions indicating a parse error</li> <li><code>invalid_iterator</code> for exceptions indicating errors with iterators</li> <li><code>type_error</code> for exceptions indicating executing a member function with a wrong type</li> <li><code>out_of_range</code> for exceptions indicating access out of the defined range</li> </ul>"},{"location":"api/basic_json/other_error/#version-history","title":"Version history","text":"<ul> <li>Since version 3.0.0.</li> </ul>"},{"location":"api/basic_json/out_of_range/","title":"nlohmann::basic_json::out_of_range","text":"<pre><code>class out_of_range : public exception;\n</code></pre> <p>This exception is thrown in case a library function is called on an input parameter that exceeds the expected range, for instance, in the case of array indices or nonexisting object keys.</p> <p>Exceptions have ids 4xx (see list of out-of-range errors).</p> <pre><code>classDiagram\n  direction LR\n\n    class std_exception [\"std::exception\"] {\n        &lt;&lt;interface&gt;&gt;\n    }\n\n    class json_exception [\"basic_json::exception\"] {\n        +const int id\n        +const char* what() const\n    }\n\n    class json_parse_error [\"basic_json::parse_error\"] {\n        +const std::size_t byte\n    }\n\n    class json_invalid_iterator [\"basic_json::invalid_iterator\"]\n    class json_type_error [\"basic_json::type_error\"]\n    class json_out_of_range [\"basic_json::out_of_range\"]\n    class json_other_error [\"basic_json::other_error\"]\n\n    std_exception &lt;|-- json_exception\n    json_exception &lt;|-- json_parse_error\n    json_exception &lt;|-- json_invalid_iterator\n    json_exception &lt;|-- json_type_error\n    json_exception &lt;|-- json_out_of_range\n    json_exception &lt;|-- json_other_error\n\n    style json_out_of_range fill:#CCCCFF</code></pre>"},{"location":"api/basic_json/out_of_range/#member-functions","title":"Member functions","text":"<ul> <li>what - returns explanatory string</li> </ul>"},{"location":"api/basic_json/out_of_range/#member-variables","title":"Member variables","text":"<ul> <li>id - the id of the exception</li> </ul>"},{"location":"api/basic_json/out_of_range/#examples","title":"Examples","text":"Example <p>The following code shows how a <code>out_of_range</code> exception can be caught.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    try\n    {\n        // calling at() for an invalid index\n        json j = {1, 2, 3, 4};\n        j.at(4) = 10;\n    }\n    catch (const json::out_of_range&amp; e)\n    {\n        // output exception information\n        std::cout &lt;&lt; \"message: \" &lt;&lt; e.what() &lt;&lt; '\\n'\n                  &lt;&lt; \"exception id: \" &lt;&lt; e.id &lt;&lt; std::endl;\n    }\n}\n</code></pre> <p>Output:</p> <pre><code>message: [json.exception.out_of_range.401] array index 4 is out of range\nexception id: 401\n</code></pre>"},{"location":"api/basic_json/out_of_range/#see-also","title":"See also","text":"<ul> <li>List of out-of-range errors</li> <li><code>parse_error</code> for exceptions indicating a parse error</li> <li><code>invalid_iterator</code> for exceptions indicating errors with iterators</li> <li><code>type_error</code> for exceptions indicating executing a member function with a wrong type</li> <li><code>other_error</code> for exceptions indicating other library errors</li> </ul>"},{"location":"api/basic_json/out_of_range/#version-history","title":"Version history","text":"<ul> <li>Since version 3.0.0.</li> </ul>"},{"location":"api/basic_json/parse/","title":"nlohmann::basic_json::parse","text":"<pre><code>// (1)\ntemplate&lt;typename InputType&gt;\nstatic basic_json parse(InputType&amp;&amp; i,\n                        const parser_callback_t cb = nullptr,\n                        const bool allow_exceptions = true,\n                        const bool ignore_comments = false,\n                        const bool ignore_trailing_commas = false);\n\n// (2)\ntemplate&lt;typename IteratorType&gt;\nstatic basic_json parse(IteratorType first, IteratorType last,\n                        const parser_callback_t cb = nullptr,\n                        const bool allow_exceptions = true,\n                        const bool ignore_comments = false,\n                        const bool ignore_trailing_commas = false);\n</code></pre> <ol> <li>Deserialize from a compatible input.</li> <li> <p>Deserialize from a pair of character iterators</p> <p>The <code>value_type</code> of the iterator must be an integral type with size of 1, 2, or 4 bytes, which will be interpreted respectively as UTF-8, UTF-16, and UTF-32.</p> </li> </ol>"},{"location":"api/basic_json/parse/#template-parameters","title":"Template parameters","text":"<code>InputType</code> <p>A compatible input, for instance:</p> <ul> <li>an <code>std::istream</code> object</li> <li>a <code>FILE</code> pointer (throws if null)</li> <li>a C-style array of characters</li> <li>a pointer to a null-terminated string of single byte characters (throws if null)</li> <li>a <code>std::string</code></li> <li>an object <code>obj</code> for which <code>begin(obj)</code> and <code>end(obj)</code> produces a valid pair of iterators.</li> </ul> <code>IteratorType</code> <p>a compatible iterator type, for instance.</p> <ul> <li>a pair of <code>std::string::iterator</code> or <code>std::vector&lt;std::uint8_t&gt;::iterator</code></li> <li>a pair of pointers such as <code>ptr</code> and <code>ptr + len</code></li> </ul>"},{"location":"api/basic_json/parse/#parameters","title":"Parameters","text":"<code>i</code> (in) Input to parse from. <code>cb</code> (in) a parser callback function of type <code>parser_callback_t</code> which is used to control the deserialization by filtering unwanted values (optional) <code>allow_exceptions</code> (in) whether to throw exceptions in case of a parse error (optional, <code>true</code> by default) <code>ignore_comments</code> (in) whether comments should be ignored and treated like whitespace (<code>true</code>) or yield a parse error (<code>false</code>); (optional, <code>false</code> by default) <code>ignore_trailing_commas</code> (in) whether trailing commas in arrays or objects should be ignored and treated like whitespace (<code>true</code>) or yield a parse error (<code>false</code>); (optional, <code>false</code> by default) <code>first</code> (in) iterator to the start of a character range <code>last</code> (in) iterator to the end of a character range"},{"location":"api/basic_json/parse/#return-value","title":"Return value","text":"<p>Deserialized JSON value; in case of a parse error and <code>allow_exceptions</code> set to <code>false</code>, the return value will be <code>value_t::discarded</code>. The latter can be checked with <code>is_discarded</code>.</p>"},{"location":"api/basic_json/parse/#exception-safety","title":"Exception safety","text":"<p>Strong guarantee: if an exception is thrown, there are no changes in the JSON value.</p>"},{"location":"api/basic_json/parse/#exceptions","title":"Exceptions","text":"<ul> <li>Throws <code>parse_error.101</code> in case of an unexpected token, or   empty input like a null <code>FILE*</code> or <code>char*</code> pointer.</li> <li>Throws <code>parse_error.102</code> if <code>to_unicode</code> fails or surrogate   error.</li> <li>Throws <code>parse_error.103</code> if <code>to_unicode</code> fails.</li> </ul>"},{"location":"api/basic_json/parse/#complexity","title":"Complexity","text":"<p>Linear in the length of the input. The parser is a predictive LL(1) parser. The complexity can be higher if the parser callback function <code>cb</code> or reading from (1) the input <code>i</code> or (2) the iterator range [<code>first</code>, <code>last</code>] has a super-linear complexity.</p>"},{"location":"api/basic_json/parse/#notes","title":"Notes","text":"<p>A UTF-8 byte order mark is silently ignored.</p>"},{"location":"api/basic_json/parse/#examples","title":"Examples","text":"Parsing from a character array <p>The example below demonstrates the <code>parse()</code> function reading from an array.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;iomanip&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // a JSON text\n    char text[] = R\"(\n    {\n        \"Image\": {\n            \"Width\":  800,\n            \"Height\": 600,\n            \"Title\":  \"View from 15th Floor\",\n            \"Thumbnail\": {\n                \"Url\":    \"http://www.example.com/image/481989943\",\n                \"Height\": 125,\n                \"Width\":  100\n            },\n            \"Animated\" : false,\n            \"IDs\": [116, 943, 234, 38793]\n        }\n    }\n    )\";\n\n    // parse and serialize JSON\n    json j_complete = json::parse(text);\n    std::cout &lt;&lt; std::setw(4) &lt;&lt; j_complete &lt;&lt; \"\\n\\n\";\n}\n</code></pre> <p>Output:</p> <pre><code>{\n    \"Image\": {\n        \"Animated\": false,\n        \"Height\": 600,\n        \"IDs\": [\n            116,\n            943,\n            234,\n            38793\n        ],\n        \"Thumbnail\": {\n            \"Height\": 125,\n            \"Url\": \"http://www.example.com/image/481989943\",\n            \"Width\": 100\n        },\n        \"Title\": \"View from 15th Floor\",\n        \"Width\": 800\n    }\n}\n</code></pre> Parsing from a string <p>The example below demonstrates the <code>parse()</code> function with and without callback function.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;iomanip&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // a JSON text\n    auto text = R\"(\n    {\n        \"Image\": {\n            \"Width\":  800,\n            \"Height\": 600,\n            \"Title\":  \"View from 15th Floor\",\n            \"Thumbnail\": {\n                \"Url\":    \"http://www.example.com/image/481989943\",\n                \"Height\": 125,\n                \"Width\":  100\n            },\n            \"Animated\" : false,\n            \"IDs\": [116, 943, 234, 38793]\n        }\n    }\n    )\";\n\n    // parse and serialize JSON\n    json j_complete = json::parse(text);\n    std::cout &lt;&lt; std::setw(4) &lt;&lt; j_complete &lt;&lt; \"\\n\\n\";\n\n    // define parser callback\n    json::parser_callback_t cb = [](int depth, json::parse_event_t event, json &amp; parsed)\n    {\n        // skip object elements with key \"Thumbnail\"\n        if (event == json::parse_event_t::key and parsed == json(\"Thumbnail\"))\n        {\n            return false;\n        }\n        else\n        {\n            return true;\n        }\n    };\n\n    // parse (with callback) and serialize JSON\n    json j_filtered = json::parse(text, cb);\n    std::cout &lt;&lt; std::setw(4) &lt;&lt; j_filtered &lt;&lt; '\\n';\n}\n</code></pre> <p>Output:</p> <pre><code>{\n    \"Image\": {\n        \"Animated\": false,\n        \"Height\": 600,\n        \"IDs\": [\n            116,\n            943,\n            234,\n            38793\n        ],\n        \"Thumbnail\": {\n            \"Height\": 125,\n            \"Url\": \"http://www.example.com/image/481989943\",\n            \"Width\": 100\n        },\n        \"Title\": \"View from 15th Floor\",\n        \"Width\": 800\n    }\n}\n\n{\n    \"Image\": {\n        \"Animated\": false,\n        \"Height\": 600,\n        \"IDs\": [\n            116,\n            943,\n            234,\n            38793\n        ],\n        \"Title\": \"View from 15th Floor\",\n        \"Width\": 800\n    }\n}\n</code></pre> Parsing from an input stream <p>The example below demonstrates the <code>parse()</code> function with and without callback function.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;iomanip&gt;\n#include &lt;sstream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // a JSON text\n    auto text = R\"(\n    {\n        \"Image\": {\n            \"Width\":  800,\n            \"Height\": 600,\n            \"Title\":  \"View from 15th Floor\",\n            \"Thumbnail\": {\n                \"Url\":    \"http://www.example.com/image/481989943\",\n                \"Height\": 125,\n                \"Width\":  100\n            },\n            \"Animated\" : false,\n            \"IDs\": [116, 943, 234, 38793]\n        }\n    }\n    )\";\n\n    // fill a stream with JSON text\n    std::stringstream ss;\n    ss &lt;&lt; text;\n\n    // parse and serialize JSON\n    json j_complete = json::parse(ss);\n    std::cout &lt;&lt; std::setw(4) &lt;&lt; j_complete &lt;&lt; \"\\n\\n\";\n\n    // define parser callback\n    json::parser_callback_t cb = [](int depth, json::parse_event_t event, json &amp; parsed)\n    {\n        // skip object elements with key \"Thumbnail\"\n        if (event == json::parse_event_t::key and parsed == json(\"Thumbnail\"))\n        {\n            return false;\n        }\n        else\n        {\n            return true;\n        }\n    };\n\n    // fill a stream with JSON text\n    ss.clear();\n    ss &lt;&lt; text;\n\n    // parse (with callback) and serialize JSON\n    json j_filtered = json::parse(ss, cb);\n    std::cout &lt;&lt; std::setw(4) &lt;&lt; j_filtered &lt;&lt; '\\n';\n}\n</code></pre> <p>Output:</p> <pre><code>{\n    \"Image\": {\n        \"Animated\": false,\n        \"Height\": 600,\n        \"IDs\": [\n            116,\n            943,\n            234,\n            38793\n        ],\n        \"Thumbnail\": {\n            \"Height\": 125,\n            \"Url\": \"http://www.example.com/image/481989943\",\n            \"Width\": 100\n        },\n        \"Title\": \"View from 15th Floor\",\n        \"Width\": 800\n    }\n}\n\n{\n    \"Image\": {\n        \"Animated\": false,\n        \"Height\": 600,\n        \"IDs\": [\n            116,\n            943,\n            234,\n            38793\n        ],\n        \"Title\": \"View from 15th Floor\",\n        \"Width\": 800\n    }\n}\n</code></pre> Parsing from a contiguous container <p>The example below demonstrates the <code>parse()</code> function reading from a contiguous container.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;iomanip&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // a JSON text given as std::vector\n    std::vector&lt;std::uint8_t&gt; text = {'[', '1', ',', '2', ',', '3', ']', '\\0'};\n\n    // parse and serialize JSON\n    json j_complete = json::parse(text);\n    std::cout &lt;&lt; std::setw(4) &lt;&lt; j_complete &lt;&lt; \"\\n\\n\";\n}\n</code></pre> <p>Output:</p> <pre><code>[\n    1,\n    2,\n    3\n]\n</code></pre> Parsing from a non-null-terminated string <p>The example below demonstrates the <code>parse()</code> function reading from a string that is not null-terminated.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;iomanip&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // a JSON text given as string that is not null-terminated\n    const char* ptr = \"[1,2,3]another value\";\n\n    // parse and serialize JSON\n    json j_complete = json::parse(ptr, ptr + 7);\n    std::cout &lt;&lt; std::setw(4) &lt;&lt; j_complete &lt;&lt; \"\\n\\n\";\n}\n</code></pre> <p>Output:</p> <pre><code>[\n    1,\n    2,\n    3\n]\n</code></pre> Parsing from an iterator pair <p>The example below demonstrates the <code>parse()</code> function reading from an iterator pair.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;iomanip&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // a JSON text given an input with other values\n    std::vector&lt;std::uint8_t&gt; input = {'[', '1', ',', '2', ',', '3', ']', 'o', 't', 'h', 'e', 'r'};\n\n    // parse and serialize JSON\n    json j_complete = json::parse(input.begin(), input.begin() + 7);\n    std::cout &lt;&lt; std::setw(4) &lt;&lt; j_complete &lt;&lt; \"\\n\\n\";\n}\n</code></pre> <p>Output:</p> <pre><code>[\n    1,\n    2,\n    3\n]\n</code></pre> Effect of <code>allow_exceptions</code> parameter <p>The example below demonstrates the effect of the <code>allow_exceptions</code> parameter in the \u00b4parse()` function.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // an invalid JSON text\n    std::string text = R\"(\n    {\n        \"key\": \"value without closing quotes\n    }\n    )\";\n\n    // parse with exceptions\n    try\n    {\n        json j = json::parse(text);\n    }\n    catch (const json::parse_error&amp; e)\n    {\n        std::cout &lt;&lt; e.what() &lt;&lt; std::endl;\n    }\n\n    // parse without exceptions\n    json j = json::parse(text, nullptr, false);\n\n    if (j.is_discarded())\n    {\n        std::cout &lt;&lt; \"the input is invalid JSON\" &lt;&lt; std::endl;\n    }\n    else\n    {\n        std::cout &lt;&lt; \"the input is valid JSON: \" &lt;&lt; j &lt;&lt; std::endl;\n    }\n}\n</code></pre> <p>Output:</p> <pre><code>[json.exception.parse_error.101] parse error at line 4, column 0: syntax error while parsing value - invalid string: control character U+000A (LF) must be escaped to \\u000A or \\n; last read: '\"value without closing quotes&lt;U+000A&gt;'\nthe input is invalid JSON\n</code></pre> Effect of <code>ignore_comments</code> parameter <p>The example below demonstrates the effect of the <code>ignore_comments</code> parameter in the <code>parse()</code> function.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    std::string s = R\"(\n    {\n        // update in 2006: removed Pluto\n        \"planets\": [\"Mercury\", \"Venus\", \"Earth\", \"Mars\",\n                    \"Jupiter\", \"Uranus\", \"Neptune\" /*, \"Pluto\" */]\n    }\n    )\";\n\n    try\n    {\n        json j = json::parse(s);\n    }\n    catch (json::exception&amp; e)\n    {\n        std::cout &lt;&lt; e.what() &lt;&lt; std::endl;\n    }\n\n    json j = json::parse(s,\n                         /* callback */ nullptr,\n                         /* allow exceptions */ true,\n                         /* ignore_comments */ true);\n    std::cout &lt;&lt; j.dump(2) &lt;&lt; '\\n';\n}\n</code></pre> <p>Output:</p> <pre><code>[json.exception.parse_error.101] parse error at line 3, column 9: syntax error while parsing object key - invalid literal; last read: '&lt;U+000A&gt;    {&lt;U+000A&gt;        /'; expected string literal\n{\n  \"planets\": [\n    \"Mercury\",\n    \"Venus\",\n    \"Earth\",\n    \"Mars\",\n    \"Jupiter\",\n    \"Uranus\",\n    \"Neptune\"\n  ]\n}\n</code></pre> Effect of <code>ignore_trailing_commas</code> parameter <p>The example below demonstrates the effect of the <code>ignore_trailing_commas</code> parameter in the <code>parse()</code> function.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    std::string s = R\"(\n    {\n        \"planets\": [\n            \"Mercury\",\n            \"Venus\",\n            \"Earth\",\n            \"Mars\",\n            \"Jupiter\",\n            \"Uranus\",\n            \"Neptune\",\n        ]\n    }\n    )\";\n\n    try\n    {\n        json j = json::parse(s);\n    }\n    catch (json::exception&amp; e)\n    {\n        std::cout &lt;&lt; e.what() &lt;&lt; std::endl;\n    }\n\n    json j = json::parse(s,\n                         /* callback */ nullptr,\n                         /* allow exceptions */ true,\n                         /* ignore_comments */ false,\n                         /* ignore_trailing_commas */ true);\n    std::cout &lt;&lt; j.dump(2) &lt;&lt; '\\n';\n}\n</code></pre> <p>Output:</p> <pre><code>[json.exception.parse_error.101] parse error at line 11, column 9: syntax error while parsing value - unexpected ']'; expected '[', '{', or a literal\n{\n  \"planets\": [\n    \"Mercury\",\n    \"Venus\",\n    \"Earth\",\n    \"Mars\",\n    \"Jupiter\",\n    \"Uranus\",\n    \"Neptune\"\n  ]\n}\n</code></pre>"},{"location":"api/basic_json/parse/#see-also","title":"See also","text":"<ul> <li>accept - check if the input is valid JSON</li> <li>operator&gt;&gt; - deserialize from stream</li> </ul>"},{"location":"api/basic_json/parse/#version-history","title":"Version history","text":"<ul> <li>Added in version 1.0.0.</li> <li>Overload for contiguous containers (1) added in version 2.0.3.</li> <li>Ignoring comments via <code>ignore_comments</code> added in version 3.9.0.</li> <li>Changed runtime assertion in case of <code>FILE*</code> null pointers to exception in version 3.12.0.</li> <li>Added <code>ignore_trailing_commas</code> in version 3.12.1.</li> </ul> <p>Deprecation</p> <p>Overload (2) replaces calls to <code>parse</code> with a pair of iterators as their first parameter which has been deprecated in version 3.8.0. This overload will be removed in version 4.0.0. Please replace all calls like <code>parse({ptr, ptr+len}, ...);</code> with <code>parse(ptr, ptr+len, ...);</code>.</p> <p>You should be warned by your compiler with a <code>-Wdeprecated-declarations</code> warning if you are using a deprecated function.</p>"},{"location":"api/basic_json/parse_error/","title":"nlohmann::basic_json::parse_error","text":"<pre><code>class parse_error : public exception;\n</code></pre> <p>The library throws this exception when a parse error occurs. Parse errors can occur during the deserialization of JSON text, BSON, CBOR, MessagePack, UBJSON, as well as when using JSON Patch.</p> <p>Member <code>byte</code> holds the byte index of the last read character in the input file (see note below).</p> <p>Exceptions have ids 1xx (see list of parse errors).</p> <pre><code>classDiagram\n  direction LR\n\n    class std_exception [\"std::exception\"] {\n        &lt;&lt;interface&gt;&gt;\n    }\n\n    class json_exception [\"basic_json::exception\"] {\n        +const int id\n        +const char* what() const\n    }\n\n    class json_parse_error [\"basic_json::parse_error\"] {\n        +const std::size_t byte\n    }\n\n    class json_invalid_iterator [\"basic_json::invalid_iterator\"]\n    class json_type_error [\"basic_json::type_error\"]\n    class json_out_of_range [\"basic_json::out_of_range\"]\n    class json_other_error [\"basic_json::other_error\"]\n\n    std_exception &lt;|-- json_exception\n    json_exception &lt;|-- json_parse_error\n    json_exception &lt;|-- json_invalid_iterator\n    json_exception &lt;|-- json_type_error\n    json_exception &lt;|-- json_out_of_range\n    json_exception &lt;|-- json_other_error\n\n    style json_parse_error fill:#CCCCFF</code></pre>"},{"location":"api/basic_json/parse_error/#member-functions","title":"Member functions","text":"<ul> <li>what - returns explanatory string</li> </ul>"},{"location":"api/basic_json/parse_error/#member-variables","title":"Member variables","text":"<ul> <li>id - the id of the exception</li> <li>byte - byte index of the parse error</li> </ul>"},{"location":"api/basic_json/parse_error/#notes","title":"Notes","text":"<p>For an input with n bytes, 1 is the index of the first character and n+1 is the index of the terminating null byte or the end of file. This also holds true when reading a byte vector for binary formats.</p>"},{"location":"api/basic_json/parse_error/#examples","title":"Examples","text":"Example <p>The following code shows how a <code>parse_error</code> exception can be caught.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    try\n    {\n        // parsing input with a syntax error\n        json::parse(\"[1,2,3,]\");\n    }\n    catch (const json::parse_error&amp; e)\n    {\n        // output exception information\n        std::cout &lt;&lt; \"message: \" &lt;&lt; e.what() &lt;&lt; '\\n'\n                  &lt;&lt; \"exception id: \" &lt;&lt; e.id &lt;&lt; '\\n'\n                  &lt;&lt; \"byte position of error: \" &lt;&lt; e.byte &lt;&lt; std::endl;\n    }\n}\n</code></pre> <p>Output:</p> <pre><code>message: [json.exception.parse_error.101] parse error at line 1, column 8: syntax error while parsing value - unexpected ']'; expected '[', '{', or a literal\nexception id: 101\nbyte position of error: 8\n</code></pre>"},{"location":"api/basic_json/parse_error/#see-also","title":"See also","text":"<ul> <li>List of parse errors</li> <li><code>invalid_iterator</code> for exceptions indicating errors with iterators</li> <li><code>type_error</code> for exceptions indicating executing a member function with a wrong type</li> <li><code>out_of_range</code> for exceptions indicating access out of the defined range</li> <li><code>other_error</code> for exceptions indicating other library errors</li> </ul>"},{"location":"api/basic_json/parse_error/#version-history","title":"Version history","text":"<ul> <li>Since version 3.0.0.</li> </ul>"},{"location":"api/basic_json/parse_event_t/","title":"nlohmann::basic_json::parse_event_t","text":"<pre><code>enum class parse_event_t : std::uint8_t {\n    object_start,\n    object_end,\n    array_start,\n    array_end,\n    key,\n    value\n};\n</code></pre> <p>The parser callback distinguishes the following events:</p> <ul> <li><code>object_start</code>: the parser read <code>{</code> and started to process a JSON object</li> <li><code>key</code>: the parser read a key of a value in an object</li> <li><code>object_end</code>: the parser read <code>}</code> and finished processing a JSON object</li> <li><code>array_start</code>: the parser read <code>[</code> and started to process a JSON array</li> <li><code>array_end</code>: the parser read <code>]</code> and finished processing a JSON array</li> <li><code>value</code>: the parser finished reading a JSON value</li> </ul>"},{"location":"api/basic_json/parse_event_t/#examples","title":"Examples","text":""},{"location":"api/basic_json/parse_event_t/#version-history","title":"Version history","text":"<ul> <li>Added in version 1.0.0.</li> </ul>"},{"location":"api/basic_json/parser_callback_t/","title":"nlohmann::basic_json::parser_callback_t","text":"<pre><code>template&lt;typename BasicJsonType&gt;\nusing parser_callback_t =\n    std::function&lt;bool(int depth, parse_event_t event, BasicJsonType&amp; parsed)&gt;;\n</code></pre> <p>With a parser callback function, the result of parsing a JSON text can be influenced. When passed to <code>parse</code>, it is called on certain events (passed as <code>parse_event_t</code> via parameter <code>event</code>) with a set recursion depth <code>depth</code> and context JSON value <code>parsed</code>. The return value of the callback function is a boolean indicating whether the element that emitted the callback shall be kept or not.</p> <p>We distinguish six scenarios (determined by the event type) in which the callback function can be called. The following table describes the values of the parameters <code>depth</code>, <code>event</code>, and <code>parsed</code>.</p> parameter <code>event</code> description parameter <code>depth</code> parameter <code>parsed</code> <code>parse_event_t::object_start</code> the parser read <code>{</code> and started to process a JSON object depth of the parent of the JSON object a JSON value with type discarded <code>parse_event_t::key</code> the parser read a key of a value in an object depth of the currently parsed JSON object a JSON string containing the key <code>parse_event_t::object_end</code> the parser read <code>}</code> and finished processing a JSON object depth of the parent of the JSON object the parsed JSON object <code>parse_event_t::array_start</code> the parser read <code>[</code> and started to process a JSON array depth of the parent of the JSON array a JSON value with type discarded <code>parse_event_t::array_end</code> the parser read <code>]</code> and finished processing a JSON array depth of the parent of the JSON array the parsed JSON array <code>parse_event_t::value</code> the parser finished reading a JSON value depth of the value the parsed JSON value <p></p> <p>Discarding a value (i.e., returning <code>false</code>) has different effects depending on the context in which function was called:</p> <ul> <li>Discarded values in structured types are skipped. That is, the parser will behave as if the discarded value was never   read.</li> <li>In case a value outside a structured type is skipped, it is replaced with <code>null</code>. This case happens if the top-level   element is skipped.</li> </ul>"},{"location":"api/basic_json/parser_callback_t/#parameters","title":"Parameters","text":"<code>depth</code> (in) the depth of the recursion during parsing <code>event</code> (in) an event of type <code>parse_event_t</code> indicating the context in the callback function has been called <code>parsed</code> (in, out) the current intermediate parse result; note that  writing to this value has no effect for <code>parse_event_t::key</code> events"},{"location":"api/basic_json/parser_callback_t/#return-value","title":"Return value","text":"<p>Whether the JSON value which called the function during parsing should be kept (<code>true</code>) or not (<code>false</code>). In the latter case, it is either skipped completely or replaced by an empty discarded object.</p>"},{"location":"api/basic_json/parser_callback_t/#examples","title":"Examples","text":"Example <p>The example below demonstrates the <code>parse()</code> function with and without callback function.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;iomanip&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // a JSON text\n    auto text = R\"(\n    {\n        \"Image\": {\n            \"Width\":  800,\n            \"Height\": 600,\n            \"Title\":  \"View from 15th Floor\",\n            \"Thumbnail\": {\n                \"Url\":    \"http://www.example.com/image/481989943\",\n                \"Height\": 125,\n                \"Width\":  100\n            },\n            \"Animated\" : false,\n            \"IDs\": [116, 943, 234, 38793]\n        }\n    }\n    )\";\n\n    // parse and serialize JSON\n    json j_complete = json::parse(text);\n    std::cout &lt;&lt; std::setw(4) &lt;&lt; j_complete &lt;&lt; \"\\n\\n\";\n\n    // define parser callback\n    json::parser_callback_t cb = [](int depth, json::parse_event_t event, json &amp; parsed)\n    {\n        // skip object elements with key \"Thumbnail\"\n        if (event == json::parse_event_t::key and parsed == json(\"Thumbnail\"))\n        {\n            return false;\n        }\n        else\n        {\n            return true;\n        }\n    };\n\n    // parse (with callback) and serialize JSON\n    json j_filtered = json::parse(text, cb);\n    std::cout &lt;&lt; std::setw(4) &lt;&lt; j_filtered &lt;&lt; '\\n';\n}\n</code></pre> <p>Output:</p> <pre><code>{\n    \"Image\": {\n        \"Animated\": false,\n        \"Height\": 600,\n        \"IDs\": [\n            116,\n            943,\n            234,\n            38793\n        ],\n        \"Thumbnail\": {\n            \"Height\": 125,\n            \"Url\": \"http://www.example.com/image/481989943\",\n            \"Width\": 100\n        },\n        \"Title\": \"View from 15th Floor\",\n        \"Width\": 800\n    }\n}\n\n{\n    \"Image\": {\n        \"Animated\": false,\n        \"Height\": 600,\n        \"IDs\": [\n            116,\n            943,\n            234,\n            38793\n        ],\n        \"Title\": \"View from 15th Floor\",\n        \"Width\": 800\n    }\n}\n</code></pre>"},{"location":"api/basic_json/parser_callback_t/#version-history","title":"Version history","text":"<ul> <li>Added in version 1.0.0.</li> </ul>"},{"location":"api/basic_json/patch/","title":"nlohmann::basic_json::patch","text":"<pre><code>basic_json patch(const basic_json&amp; json_patch) const;\n</code></pre> <p>JSON Patch defines a JSON document structure for expressing a sequence of operations to apply to a JSON document. With this function, a JSON Patch is applied to the current JSON value by executing all operations from the patch.</p>"},{"location":"api/basic_json/patch/#parameters","title":"Parameters","text":"<code>json_patch</code> (in) JSON patch document"},{"location":"api/basic_json/patch/#return-value","title":"Return value","text":"<p>patched document</p>"},{"location":"api/basic_json/patch/#exception-safety","title":"Exception safety","text":"<p>Strong guarantee: if an exception is thrown, there are no changes in the JSON value.</p>"},{"location":"api/basic_json/patch/#exceptions","title":"Exceptions","text":"<ul> <li>Throws <code>parse_error.104</code> if the JSON patch does not consist of   an array of objects.</li> <li>Throws <code>parse_error.105</code> if the JSON patch is malformed (e.g.,   mandatory attributes are missing); example: <code>\"operation add must have member path\"</code>.</li> <li>Throws <code>out_of_range.401</code> if an array index is out of range.</li> <li>Throws <code>out_of_range.403</code> if a JSON pointer inside the patch   could not be resolved successfully in the current JSON value; example: <code>\"key baz not found\"</code>.</li> <li>Throws <code>out_of_range.405</code> if JSON pointer has no parent   (\"add\", \"remove\", \"move\")</li> <li>Throws <code>out_of_range.501</code> if \"test\" operation was   unsuccessful.</li> </ul>"},{"location":"api/basic_json/patch/#complexity","title":"Complexity","text":"<p>Linear in the size of the JSON value and the length of the JSON patch. As usually the patch affects only a fraction of the JSON value, the complexity can usually be neglected.</p>"},{"location":"api/basic_json/patch/#notes","title":"Notes","text":"<p>The application of a patch is atomic: Either all operations succeed and the patched document is returned or an exception is thrown. In any case, the original value is not changed: the patch is applied to a copy of the value.</p>"},{"location":"api/basic_json/patch/#examples","title":"Examples","text":"Example <p>The following code shows how a JSON patch is applied to a value.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;iomanip&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\nusing namespace nlohmann::literals;\n\nint main()\n{\n    // the original document\n    json doc = R\"(\n        {\n          \"baz\": \"qux\",\n          \"foo\": \"bar\"\n        }\n    )\"_json;\n\n    // the patch\n    json patch = R\"(\n        [\n          { \"op\": \"replace\", \"path\": \"/baz\", \"value\": \"boo\" },\n          { \"op\": \"add\", \"path\": \"/hello\", \"value\": [\"world\"] },\n          { \"op\": \"remove\", \"path\": \"/foo\"}\n        ]\n    )\"_json;\n\n    // apply the patch\n    json patched_doc = doc.patch(patch);\n\n    // output original and patched document\n    std::cout &lt;&lt; std::setw(4) &lt;&lt; doc &lt;&lt; \"\\n\\n\"\n              &lt;&lt; std::setw(4) &lt;&lt; patched_doc &lt;&lt; std::endl;\n}\n</code></pre> <p>Output:</p> <pre><code>{\n    \"baz\": \"qux\",\n    \"foo\": \"bar\"\n}\n\n{\n    \"baz\": \"boo\",\n    \"hello\": [\n        \"world\"\n    ]\n}\n</code></pre>"},{"location":"api/basic_json/patch/#see-also","title":"See also","text":"<ul> <li>RFC 6902 (JSON Patch)</li> <li>RFC 6901 (JSON Pointer)</li> <li>patch_inplace applies a JSON Patch without creating a copy of the document</li> <li>merge_patch applies a JSON Merge Patch</li> </ul>"},{"location":"api/basic_json/patch/#version-history","title":"Version history","text":"<ul> <li>Added in version 2.0.0.</li> </ul>"},{"location":"api/basic_json/patch_inplace/","title":"nlohmann::basic_json::patch_inplace","text":"<pre><code>void patch_inplace(const basic_json&amp; json_patch) const;\n</code></pre> <p>JSON Patch defines a JSON document structure for expressing a sequence of operations to apply to a JSON document. With this function, a JSON Patch is applied to the current JSON value by executing all operations from the patch. This function applies a JSON patch in place and returns void.</p>"},{"location":"api/basic_json/patch_inplace/#parameters","title":"Parameters","text":"<code>json_patch</code> (in) JSON patch document"},{"location":"api/basic_json/patch_inplace/#exception-safety","title":"Exception safety","text":"<p>No guarantees, value may be corrupted by an unsuccessful patch operation.</p>"},{"location":"api/basic_json/patch_inplace/#exceptions","title":"Exceptions","text":"<ul> <li>Throws <code>parse_error.104</code> if the JSON patch does not consist of   an array of objects.</li> <li>Throws <code>parse_error.105</code> if the JSON patch is malformed (e.g.,   mandatory attributes are missing); example: <code>\"operation add must have member path\"</code>.</li> <li>Throws <code>out_of_range.401</code> if an array index is out of range.</li> <li>Throws <code>out_of_range.403</code> if a JSON pointer inside the patch   could not be resolved successfully in the current JSON value; example: <code>\"key baz not found\"</code>.</li> <li>Throws <code>out_of_range.405</code> if JSON pointer has no parent   (\"add\", \"remove\", \"move\")</li> <li>Throws <code>out_of_range.501</code> if \"test\" operation was   unsuccessful.</li> </ul>"},{"location":"api/basic_json/patch_inplace/#complexity","title":"Complexity","text":"<p>Linear in the size of the JSON value and the length of the JSON patch. As usually the patch affects only a fraction of the JSON value, the complexity can usually be neglected.</p>"},{"location":"api/basic_json/patch_inplace/#notes","title":"Notes","text":"<p>Unlike <code>patch</code>, <code>patch_inplace</code> applies the operation \"in place\" and no copy of the JSON value is created. That makes it faster for large documents by avoiding the copy. However, the JSON value might be corrupted if the function throws an exception.</p>"},{"location":"api/basic_json/patch_inplace/#examples","title":"Examples","text":"Example <p>The following code shows how a JSON patch is applied to a value.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;iomanip&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\nusing namespace nlohmann::literals;\n\nint main()\n{\n    // the original document\n    json doc = R\"(\n        {\n          \"baz\": \"qux\",\n          \"foo\": \"bar\"\n        }\n    )\"_json;\n\n    // the patch\n    json patch = R\"(\n        [\n          { \"op\": \"replace\", \"path\": \"/baz\", \"value\": \"boo\" },\n          { \"op\": \"add\", \"path\": \"/hello\", \"value\": [\"world\"] },\n          { \"op\": \"remove\", \"path\": \"/foo\"}\n        ]\n    )\"_json;\n\n    // output original document\n    std::cout &lt;&lt; \"Before\\n\" &lt;&lt; std::setw(4) &lt;&lt; doc &lt;&lt; std::endl;\n\n    // apply the patch\n    doc.patch_inplace(patch);\n\n    // output patched document\n    std::cout &lt;&lt; \"\\nAfter\\n\" &lt;&lt; std::setw(4) &lt;&lt; doc &lt;&lt; std::endl;\n}\n</code></pre> <p>Output:</p> <pre><code>Before\n{\n    \"baz\": \"qux\",\n    \"foo\": \"bar\"\n}\n\nAfter\n{\n    \"baz\": \"boo\",\n    \"hello\": [\n        \"world\"\n    ]\n}\n</code></pre>"},{"location":"api/basic_json/patch_inplace/#see-also","title":"See also","text":"<ul> <li>RFC 6902 (JSON Patch)</li> <li>RFC 6901 (JSON Pointer)</li> <li>patch applies a JSON Merge Patch</li> <li>merge_patch applies a JSON Merge Patch</li> </ul>"},{"location":"api/basic_json/patch_inplace/#version-history","title":"Version history","text":"<ul> <li>Added in version 3.11.0.</li> </ul>"},{"location":"api/basic_json/push_back/","title":"nlohmann::basic_json::push_back","text":"<pre><code>// (1)\nvoid push_back(basic_json&amp;&amp; val);\nvoid push_back(const basic_json&amp; val);\n\n// (2)\nvoid push_back(const typename object_t::value_type&amp; val);\n\n// (3)\nvoid push_back(initializer_list_t init);\n</code></pre> <ol> <li> <p>Appends the given element <code>val</code> to the end of the JSON array. If the function is called on a JSON null value, an    empty array is created before appending <code>val</code>.</p> </li> <li> <p>Inserts the given element <code>val</code> to the JSON object. If the function is called on a JSON null value, an empty object    is created before inserting <code>val</code>.</p> </li> <li> <p>This function allows using <code>push_back</code> with an initializer list. In case</p> <ol> <li>the current value is an object,</li> <li>the initializer list <code>init</code> contains only two elements, and</li> <li>the first element of <code>init</code> is a string,</li> </ol> <p><code>init</code> is converted into an object element and added using <code>push_back(const typename object_t::value_type&amp;)</code>. Otherwise, <code>init</code> is converted to a JSON value and added using <code>push_back(basic_json&amp;&amp;)</code>.</p> </li> </ol>"},{"location":"api/basic_json/push_back/#iterator-invalidation","title":"Iterator invalidation","text":"<p>For all cases where an element is added to an array, a reallocation can happen, in which case all iterators (including the <code>end()</code> iterator) and all references to the elements are invalidated. Otherwise, only the <code>end()</code> iterator is invalidated.</p> <p>For <code>ordered_json</code>, also adding an element to an object can yield a reallocation which again invalidates all iterators and all references.</p>"},{"location":"api/basic_json/push_back/#parameters","title":"Parameters","text":"<code>val</code> (in) the value to add to the JSON array/object <code>init</code> (in) an initializer list"},{"location":"api/basic_json/push_back/#exceptions","title":"Exceptions","text":"<p>All functions can throw the following exception:   - Throws <code>type_error.308</code> when called on a type other than     JSON array or null; example: <code>\"cannot use push_back() with number\"</code></p>"},{"location":"api/basic_json/push_back/#complexity","title":"Complexity","text":"<ol> <li>Amortized constant.</li> <li>Logarithmic in the size of the container, O(log(<code>size()</code>)).</li> <li>Linear in the size of the initializer list <code>init</code>.</li> </ol>"},{"location":"api/basic_json/push_back/#notes","title":"Notes","text":"<p>(3) This function is required to resolve an ambiguous overload error, because pairs like <code>{\"key\", \"value\"}</code> can be both     interpreted as <code>object_t::value_type</code> or <code>std::initializer_list&lt;basic_json&gt;</code>, see     #235 for more information.</p>"},{"location":"api/basic_json/push_back/#examples","title":"Examples","text":"Example: (1) add element to array <p>The example shows how <code>push_back()</code> and <code>+=</code> can be used to add elements to a JSON array. Note how the <code>null</code> value was silently converted to a JSON array.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create JSON values\n    json array = {1, 2, 3, 4, 5};\n    json null;\n\n    // print values\n    std::cout &lt;&lt; array &lt;&lt; '\\n';\n    std::cout &lt;&lt; null &lt;&lt; '\\n';\n\n    // add values\n    array.push_back(6);\n    array += 7;\n    null += \"first\";\n    null += \"second\";\n\n    // print values\n    std::cout &lt;&lt; array &lt;&lt; '\\n';\n    std::cout &lt;&lt; null &lt;&lt; '\\n';\n}\n</code></pre> <p>Output:</p> <pre><code>[1,2,3,4,5]\nnull\n[1,2,3,4,5,6,7]\n[\"first\",\"second\"]\n</code></pre> Example: (2) add element to object <p>The example shows how <code>push_back()</code> and <code>+=</code> can be used to add elements to a JSON object. Note how the <code>null</code> value was silently converted to a JSON object.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create JSON values\n    json object = {{\"one\", 1}, {\"two\", 2}};\n    json null;\n\n    // print values\n    std::cout &lt;&lt; object &lt;&lt; '\\n';\n    std::cout &lt;&lt; null &lt;&lt; '\\n';\n\n    // add values\n    object.push_back(json::object_t::value_type(\"three\", 3));\n    object += json::object_t::value_type(\"four\", 4);\n    null += json::object_t::value_type(\"A\", \"a\");\n    null += json::object_t::value_type(\"B\", \"b\");\n\n    // print values\n    std::cout &lt;&lt; object &lt;&lt; '\\n';\n    std::cout &lt;&lt; null &lt;&lt; '\\n';\n}\n</code></pre> <p>Output:</p> <pre><code>{\"one\":1,\"two\":2}\nnull\n{\"four\":4,\"one\":1,\"three\":3,\"two\":2}\n{\"A\":\"a\",\"B\":\"b\"}\n</code></pre> Example: (3) add to object from initializer list <p>The example shows how initializer lists are treated as objects when possible.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create JSON values\n    json object = {{\"one\", 1}, {\"two\", 2}};\n    json null;\n\n    // print values\n    std::cout &lt;&lt; object &lt;&lt; '\\n';\n    std::cout &lt;&lt; null &lt;&lt; '\\n';\n\n    // add values:\n    object.push_back({\"three\", 3});  // object is extended\n    object += {\"four\", 4};           // object is extended\n    null.push_back({\"five\", 5});     // null is converted to array\n\n    // print values\n    std::cout &lt;&lt; object &lt;&lt; '\\n';\n    std::cout &lt;&lt; null &lt;&lt; '\\n';\n\n    // would throw:\n    //object.push_back({1, 2, 3});\n}\n</code></pre> <p>Output:</p> <pre><code>{\"one\":1,\"two\":2}\nnull\n{\"four\":4,\"one\":1,\"three\":3,\"two\":2}\n[[\"five\",5]]\n</code></pre>"},{"location":"api/basic_json/push_back/#see-also","title":"See also","text":"<ul> <li>emplace_back add a value to an array</li> <li>operator+= add a value to an array/object</li> </ul>"},{"location":"api/basic_json/push_back/#version-history","title":"Version history","text":"<ol> <li>Since version 1.0.0.</li> <li>Since version 1.0.0.</li> <li>Since version 2.0.0.</li> </ol>"},{"location":"api/basic_json/rbegin/","title":"nlohmann::basic_json::rbegin","text":"<pre><code>reverse_iterator rbegin() noexcept;\nconst_reverse_iterator rbegin() const noexcept;\n</code></pre> <p>Returns an iterator to the reverse-beginning; that is, the last element.</p> <p></p>"},{"location":"api/basic_json/rbegin/#return-value","title":"Return value","text":"<p>reverse iterator to the first element</p>"},{"location":"api/basic_json/rbegin/#exception-safety","title":"Exception safety","text":"<p>No-throw guarantee: this member function never throws exceptions.</p>"},{"location":"api/basic_json/rbegin/#complexity","title":"Complexity","text":"<p>Constant.</p>"},{"location":"api/basic_json/rbegin/#examples","title":"Examples","text":"Example <p>The following code shows an example for <code>rbegin()</code>.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create an array value\n    json array = {1, 2, 3, 4, 5};\n\n    // get an iterator to the reverse-beginning\n    json::reverse_iterator it = array.rbegin();\n\n    // serialize the element that the iterator points to\n    std::cout &lt;&lt; *it &lt;&lt; '\\n';\n}\n</code></pre> <p>Output:</p> <pre><code>5\n</code></pre>"},{"location":"api/basic_json/rbegin/#version-history","title":"Version history","text":"<ul> <li>Added in version 1.0.0.</li> </ul>"},{"location":"api/basic_json/rend/","title":"nlohmann::basic_json::rend","text":"<pre><code>reverse_iterator rend() noexcept;\nconst_reverse_iterator rend() const noexcept;\n</code></pre> <p>Returns an iterator to the reverse-end; that is, one before the first element. This element acts as a placeholder, attempting to access it results in undefined behavior.</p> <p></p>"},{"location":"api/basic_json/rend/#return-value","title":"Return value","text":"<p>reverse iterator to the element following the last element</p>"},{"location":"api/basic_json/rend/#exception-safety","title":"Exception safety","text":"<p>No-throw guarantee: this member function never throws exceptions.</p>"},{"location":"api/basic_json/rend/#complexity","title":"Complexity","text":"<p>Constant.</p>"},{"location":"api/basic_json/rend/#examples","title":"Examples","text":"Example <p>The following code shows an example for <code>eend()</code>.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create an array value\n    json array = {1, 2, 3, 4, 5};\n\n    // get an iterator to the reverse-end\n    json::reverse_iterator it = array.rend();\n\n    // increment the iterator to point to the first element\n    --it;\n\n    // serialize the element that the iterator points to\n    std::cout &lt;&lt; *it &lt;&lt; '\\n';\n}\n</code></pre> <p>Output:</p> <pre><code>1\n</code></pre>"},{"location":"api/basic_json/rend/#version-history","title":"Version history","text":"<ul> <li>Added in version 1.0.0.</li> </ul>"},{"location":"api/basic_json/sax_parse/","title":"nlohmann::basic_json::sax_parse","text":"<pre><code>// (1)\ntemplate &lt;typename InputType, typename SAX&gt;\nstatic bool sax_parse(InputType&amp;&amp; i,\n                      SAX* sax,\n                      input_format_t format = input_format_t::json,\n                      const bool strict = true,\n                      const bool ignore_comments = false,\n                      const bool ignore_trailing_commas = false);\n\n// (2)\ntemplate&lt;class IteratorType, class SAX&gt;\nstatic bool sax_parse(IteratorType first, IteratorType last,\n                      SAX* sax,\n                      input_format_t format = input_format_t::json,\n                      const bool strict = true,\n                      const bool ignore_comments = false,\n                      const bool ignore_trailing_commas = false);\n</code></pre> <p>Read from input and generate SAX events</p> <ol> <li>Read from a compatible input.</li> <li> <p>Read from a pair of character iterators</p> <p>The value_type of the iterator must be an integral type with a size of 1, 2, or 4 bytes, which will be interpreted respectively as UTF-8, UTF-16, and UTF-32.</p> </li> </ol> <p>The SAX event lister must follow the interface of <code>json_sax</code>.</p>"},{"location":"api/basic_json/sax_parse/#template-parameters","title":"Template parameters","text":"<code>InputType</code> <p>A compatible input, for instance:</p> <ul> <li>an <code>std::istream</code> object</li> <li>a <code>FILE</code> pointer</li> <li>a C-style array of characters</li> <li>a pointer to a null-terminated string of single byte characters</li> <li>an object <code>obj</code> for which <code>begin(obj)</code> and <code>end(obj)</code> produces a valid pair of   iterators.</li> </ul> <code>IteratorType</code> Description <code>SAX</code> Description"},{"location":"api/basic_json/sax_parse/#parameters","title":"Parameters","text":"<code>i</code> (in) Input to parse from <code>sax</code> (in) SAX event listener (must not be null) <code>format</code> (in) the format to parse (JSON, CBOR, MessagePack, or UBJSON) (optional, <code>input_format_t::json</code> by default), see  <code>input_format_t</code> for more information <code>strict</code> (in) whether the input has to be consumed completely (optional, <code>true</code> by default) <code>ignore_comments</code> (in) whether comments should be ignored and treated like whitespace (<code>true</code>) or yield a parse error (<code>false</code>); (optional, <code>false</code> by default) <code>ignore_trailing_commas</code> (in) whether trailing commas in arrays or objects should be ignored and treated like whitespace (<code>true</code>) or yield a parse error (<code>false</code>); (optional, <code>false</code> by default) <code>first</code> (in) iterator to the start of a character range <code>last</code> (in) iterator to the end of a character range"},{"location":"api/basic_json/sax_parse/#return-value","title":"Return value","text":"<p>return value of the last processed SAX event</p>"},{"location":"api/basic_json/sax_parse/#exception-safety","title":"Exception safety","text":"<p>Strong guarantee: if an exception is thrown, there are no changes in the JSON value.</p>"},{"location":"api/basic_json/sax_parse/#exceptions","title":"Exceptions","text":"<ul> <li>Throws <code>parse_error.101</code> in case of an unexpected token, or   empty input like a null <code>FILE*</code> or <code>char*</code> pointer.</li> <li>Throws <code>parse_error.102</code> if <code>to_unicode</code> fails or surrogate   error.</li> <li>Throws <code>parse_error.103</code> if <code>to_unicode</code> fails.</li> </ul>"},{"location":"api/basic_json/sax_parse/#complexity","title":"Complexity","text":"<p>Linear in the length of the input. The parser is a predictive LL(1) parser. The complexity can be higher if the SAX consumer <code>sax</code> has a super-linear complexity.</p>"},{"location":"api/basic_json/sax_parse/#notes","title":"Notes","text":"<p>A UTF-8 byte order mark is silently ignored.</p>"},{"location":"api/basic_json/sax_parse/#examples","title":"Examples","text":"Example <p>The example below demonstrates the <code>sax_parse()</code> function reading from string and processing the events with a user-defined SAX event consumer.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;iomanip&gt;\n#include &lt;sstream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\n// a simple event consumer that collects string representations of the passed\n// values; note inheriting from json::json_sax_t is not required, but can\n// help not to forget a required function\nclass sax_event_consumer : public json::json_sax_t\n{\n  public:\n    std::vector&lt;std::string&gt; events;\n\n    bool null() override\n    {\n        events.push_back(\"null()\");\n        return true;\n    }\n\n    bool boolean(bool val) override\n    {\n        events.push_back(\"boolean(val=\" + std::string(val ? \"true\" : \"false\") + \")\");\n        return true;\n    }\n\n    bool number_integer(number_integer_t val) override\n    {\n        events.push_back(\"number_integer(val=\" + std::to_string(val) + \")\");\n        return true;\n    }\n\n    bool number_unsigned(number_unsigned_t val) override\n    {\n        events.push_back(\"number_unsigned(val=\" + std::to_string(val) + \")\");\n        return true;\n    }\n\n    bool number_float(number_float_t val, const string_t&amp; s) override\n    {\n        events.push_back(\"number_float(val=\" + std::to_string(val) + \", s=\" + s + \")\");\n        return true;\n    }\n\n    bool string(string_t&amp; val) override\n    {\n        events.push_back(\"string(val=\" + val + \")\");\n        return true;\n    }\n\n    bool start_object(std::size_t elements) override\n    {\n        events.push_back(\"start_object(elements=\" + std::to_string(elements) + \")\");\n        return true;\n    }\n\n    bool end_object() override\n    {\n        events.push_back(\"end_object()\");\n        return true;\n    }\n\n    bool start_array(std::size_t elements) override\n    {\n        events.push_back(\"start_array(elements=\" + std::to_string(elements) + \")\");\n        return true;\n    }\n\n    bool end_array() override\n    {\n        events.push_back(\"end_array()\");\n        return true;\n    }\n\n    bool key(string_t&amp; val) override\n    {\n        events.push_back(\"key(val=\" + val + \")\");\n        return true;\n    }\n\n    bool binary(json::binary_t&amp; val) override\n    {\n        events.push_back(\"binary(val=[...])\");\n        return true;\n    }\n\n    bool parse_error(std::size_t position, const std::string&amp; last_token, const json::exception&amp; ex) override\n    {\n        events.push_back(\"parse_error(position=\" + std::to_string(position) + \", last_token=\" + last_token + \",\\n            ex=\" + std::string(ex.what()) + \")\");\n        return false;\n    }\n};\n\nint main()\n{\n    // a JSON text\n    auto text = R\"(\n    {\n        \"Image\": {\n            \"Width\":  800,\n            \"Height\": 600,\n            \"Title\":  \"View from 15th Floor\",\n            \"Thumbnail\": {\n                \"Url\":    \"http://www.example.com/image/481989943\",\n                \"Height\": 125,\n                \"Width\":  100\n            },\n            \"Animated\" : false,\n            \"IDs\": [116, 943, 234, -38793],\n            \"DeletionDate\": null,\n            \"Distance\": 12.723374634\n        }\n    }]\n    )\";\n\n    // create a SAX event consumer object\n    sax_event_consumer sec;\n\n    // parse JSON\n    bool result = json::sax_parse(text, &amp;sec);\n\n    // output the recorded events\n    for (auto&amp; event : sec.events)\n    {\n        std::cout &lt;&lt; event &lt;&lt; \"\\n\";\n    }\n\n    // output the result of sax_parse\n    std::cout &lt;&lt; \"\\nresult: \" &lt;&lt; std::boolalpha &lt;&lt; result &lt;&lt; std::endl;\n}\n</code></pre> <p>Output:</p> <pre><code>start_object(elements=18446744073709551615)\nkey(val=Image)\nstart_object(elements=18446744073709551615)\nkey(val=Width)\nnumber_unsigned(val=800)\nkey(val=Height)\nnumber_unsigned(val=600)\nkey(val=Title)\nstring(val=View from 15th Floor)\nkey(val=Thumbnail)\nstart_object(elements=18446744073709551615)\nkey(val=Url)\nstring(val=http://www.example.com/image/481989943)\nkey(val=Height)\nnumber_unsigned(val=125)\nkey(val=Width)\nnumber_unsigned(val=100)\nend_object()\nkey(val=Animated)\nboolean(val=false)\nkey(val=IDs)\nstart_array(elements=18446744073709551615)\nnumber_unsigned(val=116)\nnumber_unsigned(val=943)\nnumber_unsigned(val=234)\nnumber_integer(val=-38793)\nend_array()\nkey(val=DeletionDate)\nnull()\nkey(val=Distance)\nnumber_float(val=12.723375, s=12.723374634)\nend_object()\nend_object()\nparse_error(position=460, last_token=12.723374634&lt;U+000A&gt;        }&lt;U+000A&gt;    }],\n            ex=[json.exception.parse_error.101] parse error at line 17, column 6: syntax error while parsing value - unexpected ']'; expected end of input)\n\nresult: false\n</code></pre>"},{"location":"api/basic_json/sax_parse/#version-history","title":"Version history","text":"<ul> <li>Added in version 3.2.0.</li> <li>Ignoring comments via <code>ignore_comments</code> added in version 3.9.0.</li> <li>Added <code>ignore_trailing_commas</code> in version 3.12.1.</li> </ul> <p>Deprecation</p> <p>Overload (2) replaces calls to <code>sax_parse</code> with a pair of iterators as their first parameter which has been deprecated in version 3.8.0. This overload will be removed in version 4.0.0. Please replace all calls like <code>sax_parse({ptr, ptr+len});</code> with <code>sax_parse(ptr, ptr+len);</code>.</p>"},{"location":"api/basic_json/size/","title":"nlohmann::basic_json::size","text":"<pre><code>size_type size() const noexcept;\n</code></pre> <p>Returns the number of elements in a JSON value.</p>"},{"location":"api/basic_json/size/#return-value","title":"Return value","text":"<p>The return value depends on the different types and is defined as follows:</p> Value type return value null <code>0</code> boolean <code>1</code> string <code>1</code> number <code>1</code> binary <code>1</code> object result of function object_t::size() array result of function array_t::size()"},{"location":"api/basic_json/size/#exception-safety","title":"Exception safety","text":"<p>No-throw guarantee: this function never throws exceptions.</p>"},{"location":"api/basic_json/size/#complexity","title":"Complexity","text":"<p>Constant, as long as <code>array_t</code> and <code>object_t</code> satisfy the Container concept; that is, their <code>size()</code> functions have constant complexity.</p>"},{"location":"api/basic_json/size/#notes","title":"Notes","text":"<p>This function does not return the length of a string stored as JSON value -- it returns the number of elements in the JSON value which is <code>1</code> in the case of a string.</p>"},{"location":"api/basic_json/size/#examples","title":"Examples","text":"Example <p>The following code calls <code>size()</code> on the different value types.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create JSON values\n    json j_null;\n    json j_boolean = true;\n    json j_number_integer = 17;\n    json j_number_float = 23.42;\n    json j_object = {{\"one\", 1}, {\"two\", 2}};\n    json j_object_empty(json::value_t::object);\n    json j_array = {1, 2, 4, 8, 16};\n    json j_array_empty(json::value_t::array);\n    json j_string = \"Hello, world\";\n\n    // call size()\n    std::cout &lt;&lt; j_null.size() &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_boolean.size() &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_number_integer.size() &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_number_float.size() &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_object.size() &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_object_empty.size() &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_array.size() &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_array_empty.size() &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_string.size() &lt;&lt; '\\n';\n}\n</code></pre> <p>Output:</p> <pre><code>0\n1\n1\n1\n2\n0\n5\n0\n1\n</code></pre>"},{"location":"api/basic_json/size/#version-history","title":"Version history","text":"<ul> <li>Added in version 1.0.0.</li> <li>Extended to return <code>1</code> for binary types in version 3.8.0.</li> </ul>"},{"location":"api/basic_json/start_pos/","title":"nlohmann::basic_json::start_pos","text":"<pre><code>#if JSON_DIAGNOSTIC_POSITIONS\nconstexpr std::size_t start_pos() const noexcept;\n#endif\n</code></pre> <p>Returns the position of the first character in the JSON string from which the value was parsed from.</p> JSON type return value object position of the opening <code>{</code> array position of the opening <code>[</code> string position of the opening <code>\"</code> number position of the first character boolean position of <code>t</code> for <code>true</code> and <code>f</code> for <code>false</code> null position of <code>n</code>"},{"location":"api/basic_json/start_pos/#return-value","title":"Return value","text":"<p>the position of the first character of the value in the parsed JSON string, if the value was created by the <code>parse</code> function, or <code>std::string::npos</code> if the value was constructed otherwise</p>"},{"location":"api/basic_json/start_pos/#exception-safety","title":"Exception safety","text":"<p>No-throw guarantee: this member function never throws exceptions.</p>"},{"location":"api/basic_json/start_pos/#complexity","title":"Complexity","text":"<p>Constant.</p>"},{"location":"api/basic_json/start_pos/#notes","title":"Notes","text":"<p>Note</p> <p>The function is only available if macro <code>JSON_DIAGNOSTIC_POSITIONS</code> has been defined to <code>1</code> before including the library header.</p> <p>Invalidation</p> <p>The returned positions are only valid as long as the JSON value is not changed. The positions are not updated when the JSON value is changed.</p>"},{"location":"api/basic_json/start_pos/#examples","title":"Examples","text":"Example <pre><code>#include &lt;iostream&gt;\n\n#define JSON_DIAGNOSTIC_POSITIONS 1\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    std::string json_string = R\"(\n    {\n        \"address\": {\n            \"street\": \"Fake Street\",\n            \"housenumber\": 1\n        }\n    }\n    )\";\n    json j = json::parse(json_string);\n\n    std::cout &lt;&lt; \"Root diagnostic positions: \\n\";\n    std::cout &lt;&lt; \"\\tstart_pos: \" &lt;&lt; j.start_pos() &lt;&lt; '\\n';\n    std::cout &lt;&lt; \"\\tend_pos:\" &lt;&lt; j.end_pos() &lt;&lt; \"\\n\";\n    std::cout &lt;&lt; \"Original string: \\n\";\n    std::cout &lt;&lt; \"{\\n        \\\"address\\\": {\\n            \\\"street\\\": \\\"Fake Street\\\",\\n            \\\"housenumber\\\": 1\\n        }\\n    }\" &lt;&lt; \"\\n\";\n    std::cout &lt;&lt; \"Parsed string: \\n\";\n    std::cout &lt;&lt; json_string.substr(j.start_pos(), j.end_pos() - j.start_pos()) &lt;&lt; \"\\n\\n\";\n\n    std::cout &lt;&lt; \"address diagnostic positions: \\n\";\n    std::cout &lt;&lt; \"\\tstart_pos:\" &lt;&lt; j[\"address\"].start_pos() &lt;&lt; '\\n';\n    std::cout &lt;&lt; \"\\tend_pos:\" &lt;&lt; j[\"address\"].end_pos() &lt;&lt; \"\\n\\n\";\n    std::cout &lt;&lt; \"Original string: \\n\";\n    std::cout &lt;&lt; \"{            \\\"street\\\": \\\"Fake Street\\\",\\n            \\\"housenumber\\\": 1\\n        }\" &lt;&lt; \"\\n\";\n    std::cout &lt;&lt; \"Parsed string: \\n\";\n    std::cout &lt;&lt; json_string.substr(j[\"address\"].start_pos(), j[\"address\"].end_pos() - j[\"address\"].start_pos()) &lt;&lt; \"\\n\\n\";\n\n    std::cout &lt;&lt; \"street diagnostic positions: \\n\";\n    std::cout &lt;&lt; \"\\tstart_pos:\" &lt;&lt; j[\"address\"][\"street\"].start_pos() &lt;&lt; '\\n';\n    std::cout &lt;&lt; \"\\tend_pos:\" &lt;&lt; j[\"address\"][\"street\"].end_pos() &lt;&lt; \"\\n\\n\";\n    std::cout &lt;&lt; \"Original string: \\n\";\n    std::cout &lt;&lt; \"\\\"Fake Street\\\"\" &lt;&lt; \"\\n\";\n    std::cout &lt;&lt; \"Parsed string: \\n\";\n    std::cout &lt;&lt; json_string.substr(j[\"address\"][\"street\"].start_pos(), j[\"address\"][\"street\"].end_pos() - j[\"address\"][\"street\"].start_pos()) &lt;&lt; \"\\n\\n\";\n\n    std::cout &lt;&lt; \"housenumber diagnostic positions: \\n\";\n    std::cout &lt;&lt; \"\\tstart_pos:\" &lt;&lt; j[\"address\"][\"housenumber\"].start_pos() &lt;&lt; '\\n';\n    std::cout &lt;&lt; \"\\tend_pos:\" &lt;&lt; j[\"address\"][\"housenumber\"].end_pos() &lt;&lt; \"\\n\\n\";\n    std::cout &lt;&lt; \"Original string: \\n\";\n    std::cout &lt;&lt; \"1\" &lt;&lt; \"\\n\";\n    std::cout &lt;&lt; \"Parsed string: \\n\";\n    std::cout &lt;&lt; json_string.substr(j[\"address\"][\"housenumber\"].start_pos(), j[\"address\"][\"housenumber\"].end_pos() - j[\"address\"][\"housenumber\"].start_pos()) &lt;&lt; \"\\n\\n\";\n}\n</code></pre> <p>Output:</p> <pre><code>Root diagnostic positions: \n    start_pos: 5\n    end_pos:109\nOriginal string: \n{\n        \"address\": {\n            \"street\": \"Fake Street\",\n            \"housenumber\": 1\n        }\n    }\nParsed string: \n{\n        \"address\": {\n            \"street\": \"Fake Street\",\n            \"housenumber\": 1\n        }\n    }\n\naddress diagnostic positions: \n    start_pos:26\n    end_pos:103\n\nOriginal string: \n{            \"street\": \"Fake Street\",\n            \"housenumber\": 1\n        }\nParsed string: \n{\n            \"street\": \"Fake Street\",\n            \"housenumber\": 1\n        }\n\nstreet diagnostic positions: \n    start_pos:50\n    end_pos:63\n\nOriginal string: \n\"Fake Street\"\nParsed string: \n\"Fake Street\"\n\nhousenumber diagnostic positions: \n    start_pos:92\n    end_pos:93\n\nOriginal string: \n1\nParsed string: \n1\n</code></pre> <p>The output shows the start/end positions of all the objects and fields in the JSON string.</p>"},{"location":"api/basic_json/start_pos/#see-also","title":"See also","text":"<ul> <li>end_pos to access the end position</li> <li>JSON_DIAGNOSTIC_POSITIONS for an overview of the diagnostic positions</li> </ul>"},{"location":"api/basic_json/start_pos/#version-history","title":"Version history","text":"<ul> <li>Added in version 3.12.0.</li> </ul>"},{"location":"api/basic_json/std_hash/","title":"std::hash&lt;nlohmann::basic_json&gt;","text":"<pre><code>namespace std {\n    struct hash&lt;nlohmann::basic_json&gt;;\n}\n</code></pre> <p>Return a hash value for a JSON object. The hash function tries to rely on <code>std::hash</code> where possible. Furthermore, the type of the JSON value is taken into account to have different hash values for <code>null</code>, <code>0</code>, <code>0U</code>, and <code>false</code>, etc.</p>"},{"location":"api/basic_json/std_hash/#examples","title":"Examples","text":"Example <p>The example shows how to calculate hash values for different JSON values.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;iomanip&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\nusing namespace nlohmann::literals;\n\nint main()\n{\n    std::cout &lt;&lt; \"hash(null) = \" &lt;&lt; std::hash&lt;json&gt; {}(json(nullptr)) &lt;&lt; '\\n'\n              &lt;&lt; \"hash(false) = \" &lt;&lt; std::hash&lt;json&gt; {}(json(false)) &lt;&lt; '\\n'\n              &lt;&lt; \"hash(0) = \" &lt;&lt; std::hash&lt;json&gt; {}(json(0)) &lt;&lt; '\\n'\n              &lt;&lt; \"hash(0U) = \" &lt;&lt; std::hash&lt;json&gt; {}(json(0U)) &lt;&lt; '\\n'\n              &lt;&lt; \"hash(\\\"\\\") = \" &lt;&lt; std::hash&lt;json&gt; {}(json(\"\")) &lt;&lt; '\\n'\n              &lt;&lt; \"hash({}) = \" &lt;&lt; std::hash&lt;json&gt; {}(json::object()) &lt;&lt; '\\n'\n              &lt;&lt; \"hash([]) = \" &lt;&lt; std::hash&lt;json&gt; {}(json::array()) &lt;&lt; '\\n'\n              &lt;&lt; \"hash({\\\"hello\\\": \\\"world\\\"}) = \" &lt;&lt; std::hash&lt;json&gt; {}(\"{\\\"hello\\\": \\\"world\\\"}\"_json)\n              &lt;&lt; std::endl;\n}\n</code></pre> <p>Output:</p> <pre><code>hash(null) = 2654435769\nhash(false) = 2654436030\nhash(0) = 2654436095\nhash(0U) = 2654436156\nhash(\"\") = 6142509191626859748\nhash({}) = 2654435832\nhash([]) = 2654435899\nhash({\"hello\": \"world\"}) = 4469488738203676328\n</code></pre> <p>Note the output is platform-dependent.</p>"},{"location":"api/basic_json/std_hash/#version-history","title":"Version history","text":"<ul> <li>Added in version 1.0.0.</li> <li>Extended for arbitrary basic_json types in version 3.10.5.</li> </ul>"},{"location":"api/basic_json/std_swap/","title":"std::swap&lt;basic_json&gt;","text":"<pre><code>namespace std {\n    void swap(nlohmann::basic_json&amp; j1, nlohmann::basic_json&amp; j2);\n}\n</code></pre> <p>Exchanges the values of two JSON objects.</p>"},{"location":"api/basic_json/std_swap/#parameters","title":"Parameters","text":"<code>j1</code> (in, out) value to be replaced by <code>j2</code> <code>j2</code> (in, out) value to be replaced by <code>j1</code>"},{"location":"api/basic_json/std_swap/#possible-implementation","title":"Possible implementation","text":"<pre><code>void swap(nlohmann::basic_json&amp; j1, nlohmann::basic_json&amp; j2)\n{\n    j1.swap(j2);\n}\n</code></pre>"},{"location":"api/basic_json/std_swap/#examples","title":"Examples","text":"Example <p>The following code shows how two values are swapped with <code>std::swap</code>.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;iomanip&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create JSON values\n    json j1 = {{\"one\", 1}, {\"two\", 2}};\n    json j2 = {1, 2, 4, 8, 16};\n\n    std::cout &lt;&lt; \"j1 = \" &lt;&lt; j1 &lt;&lt; \" | j2 = \" &lt;&lt; j2 &lt;&lt; '\\n';\n\n    // swap values\n    std::swap(j1, j2);\n\n    std::cout &lt;&lt; \"j1 = \" &lt;&lt; j1 &lt;&lt; \" | j2 = \" &lt;&lt; j2 &lt;&lt; std::endl;\n}\n</code></pre> <p>Output:</p> <pre><code>j1 = {\"one\":1,\"two\":2} | j2 = [1,2,4,8,16]\nj1 = [1,2,4,8,16] | j2 = {\"one\":1,\"two\":2}\n</code></pre>"},{"location":"api/basic_json/std_swap/#see-also","title":"See also","text":"<ul> <li>swap</li> </ul>"},{"location":"api/basic_json/std_swap/#version-history","title":"Version history","text":"<ul> <li>Added in version 1.0.0.</li> <li>Extended for arbitrary basic_json types in version 3.10.5.</li> </ul>"},{"location":"api/basic_json/string_t/","title":"nlohmann::basic_json::string_t","text":"<pre><code>using string_t = StringType;\n</code></pre> <p>The type used to store JSON strings.</p> <p>RFC 8259 describes JSON strings as follows:</p> <p>A string is a sequence of zero or more Unicode characters.</p> <p>To store objects in C++, a type is defined by the template parameter described below. Unicode values are split by the JSON class into byte-sized characters during deserialization.</p>"},{"location":"api/basic_json/string_t/#template-parameters","title":"Template parameters","text":"<code>StringType</code> the container to store strings (e.g., <code>std::string</code>). Note this container is used for keys/names in objects, see object_t."},{"location":"api/basic_json/string_t/#notes","title":"Notes","text":""},{"location":"api/basic_json/string_t/#default-type","title":"Default type","text":"<p>With the default values for <code>StringType</code> (<code>std::string</code>), the default value for <code>string_t</code> is <code>std::string</code>.</p>"},{"location":"api/basic_json/string_t/#encoding","title":"Encoding","text":"<p>Strings are stored in UTF-8 encoding. Therefore, functions like <code>std::string::size()</code> or <code>std::string::length()</code> return the number of bytes in the string rather than the number of characters or glyphs.</p>"},{"location":"api/basic_json/string_t/#string-comparison","title":"String comparison","text":"<p>RFC 8259 states:</p> <p>Software implementations are typically required to test names of object members for equality. Implementations that transform the textual representation into sequences of Unicode code units and then perform the comparison numerically, code unit by code unit, are interoperable in the sense that implementations will agree in all cases on equality or inequality of two strings. For example, implementations that compare strings with escaped characters unconverted may incorrectly find that <code>\"a\\\\b\"</code> and <code>\"a\\u005Cb\"</code> are not equal.</p> <p>This implementation is interoperable as it does compare strings code unit by code unit.</p>"},{"location":"api/basic_json/string_t/#storage","title":"Storage","text":"<p>String values are stored as pointers in a <code>basic_json</code> type. That is, for any access to string values, a pointer of type <code>string_t*</code> must be dereferenced.</p>"},{"location":"api/basic_json/string_t/#examples","title":"Examples","text":"Example <p>The following code shows that <code>string_t</code> is by default, a typedef to <code>std::string</code>.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;iomanip&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    std::cout &lt;&lt; std::boolalpha &lt;&lt; std::is_same&lt;std::string, json::string_t&gt;::value &lt;&lt; std::endl;\n}\n</code></pre> <p>Output:</p> <pre><code>true\n</code></pre>"},{"location":"api/basic_json/string_t/#version-history","title":"Version history","text":"<ul> <li>Added in version 1.0.0.</li> </ul>"},{"location":"api/basic_json/swap/","title":"nlohmann::basic_json::swap","text":"<pre><code>// (1)\nvoid swap(reference other) noexcept;\n\n// (2)\nvoid swap(reference left, reference right) noexcept;\n\n// (3)\nvoid swap(array_t&amp; other);\n\n// (4)\nvoid swap(object_t&amp; other);\n\n// (5)\nvoid swap(string_t&amp; other);\n\n// (6)\nvoid swap(binary_t&amp; other);\n\n// (7)\nvoid swap(typename binary_t::container_type&amp; other);\n</code></pre> <ol> <li>Exchanges the contents of the JSON value with those of <code>other</code>. Does not invoke any move, copy, or swap operations on    individual elements. All iterators and references remain valid. The past-the-end iterator is invalidated. </li> <li>Exchanges the contents of the JSON value from <code>left</code> with those of <code>right</code>. Does not invoke any move, copy, or swap    operations on individual elements. All iterators and references remain valid. The past-the-end iterator is    invalidated. Implemented as a friend function callable via ADL.</li> <li>Exchanges the contents of a JSON array with those of <code>other</code>. Does not invoke any move, copy, or swap operations on    individual elements. All iterators and references remain valid. The past-the-end iterator is invalidated. </li> <li>Exchanges the contents of a JSON object with those of <code>other</code>. Does not invoke any move, copy, or swap operations on    individual elements. All iterators and references remain valid. The past-the-end iterator is invalidated.</li> <li>Exchanges the contents of a JSON string with those of <code>other</code>. Does not invoke any move, copy, or swap operations on    individual elements. All iterators and references remain valid. The past-the-end iterator is invalidated.</li> <li>Exchanges the contents of a binary value with those of <code>other</code>. Does not invoke any move, copy, or swap operations on    individual elements. All iterators and references remain valid. The past-the-end iterator is invalidated.</li> <li>Exchanges the contents of a binary value with those of <code>other</code>. Does not invoke any move, copy, or swap operations on    individual elements. All iterators and references remain valid. The past-the-end iterator is invalidated. Unlike    version (6), no binary subtype is involved.</li> </ol>"},{"location":"api/basic_json/swap/#parameters","title":"Parameters","text":"<code>other</code> (in, out) value to exchange the contents with <code>left</code> (in, out) value to exchange the contents with <code>right</code> (in, out) value to exchange the contents with"},{"location":"api/basic_json/swap/#exceptions","title":"Exceptions","text":"<ol> <li>No-throw guarantee: this function never throws exceptions.</li> <li>No-throw guarantee: this function never throws exceptions.</li> <li>Throws <code>type_error.310</code> if called on JSON values other than    arrays; example: <code>\"cannot use swap() with boolean\"</code></li> <li>Throws <code>type_error.310</code> if called on JSON values other than    objects; example: <code>\"cannot use swap() with boolean\"</code></li> <li>Throws <code>type_error.310</code> if called on JSON values other than    strings; example: <code>\"cannot use swap() with boolean\"</code></li> <li>Throws <code>type_error.310</code> if called on JSON values other than    binaries; example: <code>\"cannot use swap() with boolean\"</code></li> <li>Throws <code>type_error.310</code> if called on JSON values other than    binaries; example: <code>\"cannot use swap() with boolean\"</code></li> </ol>"},{"location":"api/basic_json/swap/#complexity","title":"Complexity","text":"<p>Constant.</p>"},{"location":"api/basic_json/swap/#examples","title":"Examples","text":"Example: Swap JSON value (1, 2) <p>The example below shows how JSON values can be swapped with <code>swap()</code>.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create two JSON values\n    json j1 = {1, 2, 3, 4, 5};\n    json j2 = {{\"pi\", 3.141592653589793}, {\"e\", 2.718281828459045}};\n\n    // swap the values\n    j1.swap(j2);\n\n    // output the values\n    std::cout &lt;&lt; \"j1 = \" &lt;&lt; j1 &lt;&lt; '\\n';\n    std::cout &lt;&lt; \"j2 = \" &lt;&lt; j2 &lt;&lt; '\\n';\n}\n</code></pre> <p>Output:</p> <pre><code>j1 = {\"e\":2.718281828459045,\"pi\":3.141592653589793}\nj2 = [1,2,3,4,5]\n</code></pre> Example: Swap array (3) <p>The example below shows how arrays can be swapped with <code>swap()</code>.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create a JSON value\n    json value = {{\"array\", {1, 2, 3, 4}}};\n\n    // create an array_t\n    json::array_t array = {\"Snap\", \"Crackle\", \"Pop\"};\n\n    // swap the array stored in the JSON value\n    value[\"array\"].swap(array);\n\n    // output the values\n    std::cout &lt;&lt; \"value = \" &lt;&lt; value &lt;&lt; '\\n';\n    std::cout &lt;&lt; \"array = \" &lt;&lt; array &lt;&lt; '\\n';\n}\n</code></pre> <p>Output:</p> <pre><code>value = {\"array\":[\"Snap\",\"Crackle\",\"Pop\"]}\narray = [1,2,3,4]\n</code></pre> Example: Swap object (4) <p>The example below shows how objects can be swapped with <code>swap()</code>.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create a JSON value\n    json value = { {\"translation\", {{\"one\", \"eins\"}, {\"two\", \"zwei\"}}} };\n\n    // create an object_t\n    json::object_t object = {{\"cow\", \"Kuh\"}, {\"dog\", \"Hund\"}};\n\n    // swap the object stored in the JSON value\n    value[\"translation\"].swap(object);\n\n    // output the values\n    std::cout &lt;&lt; \"value = \" &lt;&lt; value &lt;&lt; '\\n';\n    std::cout &lt;&lt; \"object = \" &lt;&lt; object &lt;&lt; '\\n';\n}\n</code></pre> <p>Output:</p> <pre><code>value = {\"translation\":{\"cow\":\"Kuh\",\"dog\":\"Hund\"}}\nobject = {\"one\":\"eins\",\"two\":\"zwei\"}\n</code></pre> Example: Swap string (5) <p>The example below shows how strings can be swapped with <code>swap()</code>.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create a JSON value\n    json value = { \"the good\", \"the bad\", \"the ugly\" };\n\n    // create string_t\n    json::string_t string = \"the fast\";\n\n    // swap the object stored in the JSON value\n    value[1].swap(string);\n\n    // output the values\n    std::cout &lt;&lt; \"value = \" &lt;&lt; value &lt;&lt; '\\n';\n    std::cout &lt;&lt; \"string = \" &lt;&lt; string &lt;&lt; '\\n';\n}\n</code></pre> <p>Output:</p> <pre><code>value = [\"the good\",\"the fast\",\"the ugly\"]\nstring = the bad\n</code></pre> Example: Swap string (6) <p>The example below shows how binary values can be swapped with <code>swap()</code>.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create a binary value\n    json value = json::binary({1, 2, 3});\n\n    // create a binary_t\n    json::binary_t binary = {{4, 5, 6}};\n\n    // swap the object stored in the JSON value\n    value.swap(binary);\n\n    // output the values\n    std::cout &lt;&lt; \"value = \" &lt;&lt; value &lt;&lt; '\\n';\n    std::cout &lt;&lt; \"binary = \" &lt;&lt; json(binary) &lt;&lt; '\\n';\n}\n</code></pre> <p>Output:</p> <pre><code>value = {\"bytes\":[4,5,6],\"subtype\":null}\nbinary = {\"bytes\":[1,2,3],\"subtype\":null}\n</code></pre>"},{"location":"api/basic_json/swap/#see-also","title":"See also","text":"<ul> <li>std::swap&lt;basic_json&gt;</li> </ul>"},{"location":"api/basic_json/swap/#version-history","title":"Version history","text":"<ol> <li>Since version 1.0.0.</li> <li>Since version 1.0.0.</li> <li>Since version 1.0.0.</li> <li>Since version 1.0.0.</li> <li>Since version 1.0.0.</li> <li>Since version 3.8.0.</li> <li>Since version 3.8.0.</li> </ol>"},{"location":"api/basic_json/to_bjdata/","title":"nlohmann::basic_json::to_bjdata","text":"<pre><code>// (1)\nstatic std::vector&lt;std::uint8_t&gt; to_bjdata(const basic_json&amp; j,\n                                           const bool use_size = false,\n                                           const bool use_type = false,\n                                           const bjdata_version_t version = bjdata_version_t::draft2);\n\n// (2)\nstatic void to_bjdata(const basic_json&amp; j, detail::output_adapter&lt;std::uint8_t&gt; o,\n                      const bool use_size = false, const bool use_type = false,\n                      const bjdata_version_t version = bjdata_version_t::draft2);\nstatic void to_bjdata(const basic_json&amp; j, detail::output_adapter&lt;char&gt; o,\n                      const bool use_size = false, const bool use_type = false,\n                      const bjdata_version_t version = bjdata_version_t::draft2);\n</code></pre> <p>Serializes a given JSON value <code>j</code> to a byte vector using the BJData (Binary JData) serialization format. BJData aims to be more compact than JSON itself, yet more efficient to parse.</p> <ol> <li>Returns a byte vector containing the BJData serialization.</li> <li>Writes the BJData serialization to an output adapter.</li> </ol> <p>The exact mapping and its limitations are described on a dedicated page.</p>"},{"location":"api/basic_json/to_bjdata/#parameters","title":"Parameters","text":"<code>j</code> (in) JSON value to serialize <code>o</code> (in) output adapter to write serialization to <code>use_size</code> (in) whether to add size annotations to container types; optional, <code>false</code> by default. <code>use_type</code> (in) whether to add type annotations to container types (must be combined with <code>use_size = true</code>); optional, <code>false</code> by default. <code>version</code> (in) which version of BJData to use (see note on \"Binary values\" on BJData); optional, <code>bjdata_version_t::draft2</code> by default."},{"location":"api/basic_json/to_bjdata/#return-value","title":"Return value","text":"<ol> <li>BJData serialization as byte vector</li> <li>(none)</li> </ol>"},{"location":"api/basic_json/to_bjdata/#exception-safety","title":"Exception safety","text":"<p>Strong guarantee: if an exception is thrown, there are no changes in the JSON value.</p>"},{"location":"api/basic_json/to_bjdata/#complexity","title":"Complexity","text":"<p>Linear in the size of the JSON value <code>j</code>.</p>"},{"location":"api/basic_json/to_bjdata/#examples","title":"Examples","text":"Example <p>The example shows the serialization of a JSON value to a byte vector in BJData format.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;iomanip&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\nusing namespace nlohmann::literals;\n\n// function to print BJData's diagnostic format\nvoid print_byte(uint8_t byte)\n{\n    if (32 &lt; byte and byte &lt; 128)\n    {\n        std::cout &lt;&lt; (char)byte;\n    }\n    else\n    {\n        std::cout &lt;&lt; (int)byte;\n    }\n}\n\nint main()\n{\n    // create a JSON value\n    json j = R\"({\"compact\": true, \"schema\": false})\"_json;\n\n    // serialize it to BJData\n    std::vector&lt;std::uint8_t&gt; v = json::to_bjdata(j);\n\n    // print the vector content\n    for (auto&amp; byte : v)\n    {\n        print_byte(byte);\n    }\n    std::cout &lt;&lt; std::endl;\n\n    // create an array of numbers\n    json array = {1, 2, 3, 4, 5, 6, 7, 8};\n\n    // serialize it to BJData using default representation\n    std::vector&lt;std::uint8_t&gt; v_array = json::to_bjdata(array);\n    // serialize it to BJData using size optimization\n    std::vector&lt;std::uint8_t&gt; v_array_size = json::to_bjdata(array, true);\n    // serialize it to BJData using type optimization\n    std::vector&lt;std::uint8_t&gt; v_array_size_and_type = json::to_bjdata(array, true, true);\n\n    // print the vector contents\n    for (auto&amp; byte : v_array)\n    {\n        print_byte(byte);\n    }\n    std::cout &lt;&lt; std::endl;\n\n    for (auto&amp; byte : v_array_size)\n    {\n        print_byte(byte);\n    }\n    std::cout &lt;&lt; std::endl;\n\n    for (auto&amp; byte : v_array_size_and_type)\n    {\n        print_byte(byte);\n    }\n    std::cout &lt;&lt; std::endl;\n}\n</code></pre> <p>Output:</p> <pre><code>{i7compactTi6schemaF}\n[i1i2i3i4i5i6i7i8]\n[#i8i1i2i3i4i5i6i7i8\n[$i#i812345678\n</code></pre>"},{"location":"api/basic_json/to_bjdata/#version-history","title":"Version history","text":"<ul> <li>Added in version 3.11.0.</li> <li>BJData version parameter (for draft3 binary encoding) added in version 3.12.0.</li> </ul>"},{"location":"api/basic_json/to_bson/","title":"nlohmann::basic_json::to_bson","text":"<pre><code>// (1)\nstatic std::vector&lt;std::uint8_t&gt; to_bson(const basic_json&amp; j);\n\n// (2)\nstatic void to_bson(const basic_json&amp; j, detail::output_adapter&lt;std::uint8_t&gt; o);\nstatic void to_bson(const basic_json&amp; j, detail::output_adapter&lt;char&gt; o);\n</code></pre> <p>BSON (Binary JSON) is a binary format in which zero or more ordered key/value pairs are stored as a single entity (a so-called document).</p> <ol> <li>Returns a byte vector containing the BSON serialization.</li> <li>Writes the BSON serialization to an output adapter.</li> </ol> <p>The exact mapping and its limitations are described on a dedicated page.</p>"},{"location":"api/basic_json/to_bson/#parameters","title":"Parameters","text":"<code>j</code> (in) JSON value to serialize <code>o</code> (in) output adapter to write serialization to"},{"location":"api/basic_json/to_bson/#return-value","title":"Return value","text":"<ol> <li>BSON serialization as a byte vector</li> <li>(none)</li> </ol>"},{"location":"api/basic_json/to_bson/#exception-safety","title":"Exception safety","text":"<p>Strong guarantee: if an exception is thrown, there are no changes in the JSON value.</p>"},{"location":"api/basic_json/to_bson/#complexity","title":"Complexity","text":"<p>Linear in the size of the JSON value <code>j</code>.</p>"},{"location":"api/basic_json/to_bson/#examples","title":"Examples","text":"Example <p>The example shows the serialization of a JSON value to a byte vector in BSON format.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;iomanip&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\nusing namespace nlohmann::literals;\n\nint main()\n{\n    // create a JSON value\n    json j = R\"({\"compact\": true, \"schema\": 0})\"_json;\n\n    // serialize it to BSON\n    std::vector&lt;std::uint8_t&gt; v = json::to_bson(j);\n\n    // print the vector content\n    for (auto&amp; byte : v)\n    {\n        std::cout &lt;&lt; \"0x\" &lt;&lt; std::hex &lt;&lt; std::setw(2) &lt;&lt; std::setfill('0') &lt;&lt; (int)byte &lt;&lt; \" \";\n    }\n    std::cout &lt;&lt; std::endl;\n}\n</code></pre> <p>Output:</p> <pre><code>0x1b 0x00 0x00 0x00 0x08 0x63 0x6f 0x6d 0x70 0x61 0x63 0x74 0x00 0x01 0x10 0x73 0x63 0x68 0x65 0x6d 0x61 0x00 0x00 0x00 0x00 0x00 0x00 \n</code></pre>"},{"location":"api/basic_json/to_bson/#version-history","title":"Version history","text":"<ul> <li>Added in version 3.4.0.</li> </ul>"},{"location":"api/basic_json/to_cbor/","title":"nlohmann::basic_json::to_cbor","text":"<pre><code>// (1)\nstatic std::vector&lt;std::uint8_t&gt; to_cbor(const basic_json&amp; j);\n\n// (2)\nstatic void to_cbor(const basic_json&amp; j, detail::output_adapter&lt;std::uint8_t&gt; o);\nstatic void to_cbor(const basic_json&amp; j, detail::output_adapter&lt;char&gt; o);\n</code></pre> <p>Serializes a given JSON value <code>j</code> to a byte vector using the CBOR (Concise Binary Object Representation) serialization format. CBOR is a binary serialization format that aims to be more compact than JSON itself, yet more efficient to parse.</p> <ol> <li>Returns a byte vector containing the CBOR serialization.</li> <li>Writes the CBOR serialization to an output adapter.</li> </ol> <p>The exact mapping and its limitations are described on a dedicated page.</p>"},{"location":"api/basic_json/to_cbor/#parameters","title":"Parameters","text":"<code>j</code> (in) JSON value to serialize <code>o</code> (in) output adapter to write serialization to"},{"location":"api/basic_json/to_cbor/#return-value","title":"Return value","text":"<ol> <li>CBOR serialization as a byte vector</li> <li>(none)</li> </ol>"},{"location":"api/basic_json/to_cbor/#exception-safety","title":"Exception safety","text":"<p>Strong guarantee: if an exception is thrown, there are no changes in the JSON value.</p>"},{"location":"api/basic_json/to_cbor/#complexity","title":"Complexity","text":"<p>Linear in the size of the JSON value <code>j</code>.</p>"},{"location":"api/basic_json/to_cbor/#examples","title":"Examples","text":"Example <p>The example shows the serialization of a JSON value to a byte vector in CBOR format.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;iomanip&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\nusing namespace nlohmann::literals;\n\nint main()\n{\n    // create a JSON value\n    json j = R\"({\"compact\": true, \"schema\": 0})\"_json;\n\n    // serialize it to CBOR\n    std::vector&lt;std::uint8_t&gt; v = json::to_cbor(j);\n\n    // print the vector content\n    for (auto&amp; byte : v)\n    {\n        std::cout &lt;&lt; \"0x\" &lt;&lt; std::hex &lt;&lt; std::setw(2) &lt;&lt; std::setfill('0') &lt;&lt; (int)byte &lt;&lt; \" \";\n    }\n    std::cout &lt;&lt; std::endl;\n}\n</code></pre> <p>Output:</p> <pre><code>0xa2 0x67 0x63 0x6f 0x6d 0x70 0x61 0x63 0x74 0xf5 0x66 0x73 0x63 0x68 0x65 0x6d 0x61 0x00 \n</code></pre>"},{"location":"api/basic_json/to_cbor/#version-history","title":"Version history","text":"<ul> <li>Added in version 2.0.9.</li> <li>Compact representation of floating-point numbers added in version 3.8.0.</li> </ul>"},{"location":"api/basic_json/to_msgpack/","title":"nlohmann::basic_json::to_msgpack","text":"<pre><code>// (1)\nstatic std::vector&lt;std::uint8_t&gt; to_msgpack(const basic_json&amp; j);\n\n// (2)\nstatic void to_msgpack(const basic_json&amp; j, detail::output_adapter&lt;std::uint8_t&gt; o);\nstatic void to_msgpack(const basic_json&amp; j, detail::output_adapter&lt;char&gt; o);\n</code></pre> <p>Serializes a given JSON value <code>j</code> to a byte vector using the MessagePack serialization format. MessagePack is a binary serialization format that aims to be more compact than JSON itself, yet more efficient to parse.</p> <ol> <li>Returns a byte vector containing the MessagePack serialization.</li> <li>Writes the MessagePack serialization to an output adapter.</li> </ol> <p>The exact mapping and its limitations are described on a dedicated page.</p>"},{"location":"api/basic_json/to_msgpack/#parameters","title":"Parameters","text":"<code>j</code> (in) JSON value to serialize <code>o</code> (in) output adapter to write serialization to"},{"location":"api/basic_json/to_msgpack/#return-value","title":"Return value","text":"<ol> <li>MessagePack serialization as a byte vector</li> <li>(none)</li> </ol>"},{"location":"api/basic_json/to_msgpack/#exception-safety","title":"Exception safety","text":"<p>Strong guarantee: if an exception is thrown, there are no changes in the JSON value.</p>"},{"location":"api/basic_json/to_msgpack/#complexity","title":"Complexity","text":"<p>Linear in the size of the JSON value <code>j</code>.</p>"},{"location":"api/basic_json/to_msgpack/#examples","title":"Examples","text":"Example <p>The example shows the serialization of a JSON value to a byte vector in MessagePack format.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;iomanip&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\nusing namespace nlohmann::literals;\n\nint main()\n{\n    // create a JSON value\n    json j = R\"({\"compact\": true, \"schema\": 0})\"_json;\n\n    // serialize it to MessagePack\n    std::vector&lt;std::uint8_t&gt; v = json::to_msgpack(j);\n\n    // print the vector content\n    for (auto&amp; byte : v)\n    {\n        std::cout &lt;&lt; \"0x\" &lt;&lt; std::hex &lt;&lt; std::setw(2) &lt;&lt; std::setfill('0') &lt;&lt; (int)byte &lt;&lt; \" \";\n    }\n    std::cout &lt;&lt; std::endl;\n}\n</code></pre> <p>Output:</p> <pre><code>0x82 0xa7 0x63 0x6f 0x6d 0x70 0x61 0x63 0x74 0xc3 0xa6 0x73 0x63 0x68 0x65 0x6d 0x61 0x00 \n</code></pre>"},{"location":"api/basic_json/to_msgpack/#version-history","title":"Version history","text":"<ul> <li>Added in version 2.0.9.</li> </ul>"},{"location":"api/basic_json/to_string/","title":"to_string(basic_json)","text":"<pre><code>template &lt;typename BasicJsonType&gt;\nstd::string to_string(const BasicJsonType&amp; j);\n</code></pre> <p>This function implements a user-defined to_string for JSON objects.</p>"},{"location":"api/basic_json/to_string/#template-parameters","title":"Template parameters","text":"<code>BasicJsonType</code> a specialization of <code>basic_json</code>"},{"location":"api/basic_json/to_string/#return-value","title":"Return value","text":"<p>string containing the serialization of the JSON value</p>"},{"location":"api/basic_json/to_string/#exception-safety","title":"Exception safety","text":"<p>Strong guarantee: if an exception is thrown, there are no changes to any JSON value.</p>"},{"location":"api/basic_json/to_string/#exceptions","title":"Exceptions","text":"<p>Throws <code>type_error.316</code> if a string stored inside the JSON value is not UTF-8 encoded</p>"},{"location":"api/basic_json/to_string/#complexity","title":"Complexity","text":"<p>Linear.</p>"},{"location":"api/basic_json/to_string/#possible-implementation","title":"Possible implementation","text":"<pre><code>template &lt;typename BasicJsonType&gt;\nstd::string to_string(const BasicJsonType&amp; j)\n{\n    return j.dump();\n}\n</code></pre>"},{"location":"api/basic_json/to_string/#examples","title":"Examples","text":"Example <p>The following code shows how the library's <code>to_string()</code> function integrates with others, allowing argument-dependent lookup.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\nusing std::to_string;\n\nint main()\n{\n    // create values\n    json j = {{\"one\", 1}, {\"two\", 2}};\n    int i = 42;\n\n    // use ADL to select best to_string function\n    auto j_str = to_string(j);  // calling nlohmann::to_string\n    auto i_str = to_string(i);  // calling std::to_string\n\n    // serialize without indentation\n    std::cout &lt;&lt; j_str &lt;&lt; \"\\n\\n\"\n              &lt;&lt; i_str &lt;&lt; std::endl;\n}\n</code></pre> <p>Output:</p> <pre><code>{\"one\":1,\"two\":2}\n\n42\n</code></pre>"},{"location":"api/basic_json/to_string/#see-also","title":"See also","text":"<ul> <li>dump</li> </ul>"},{"location":"api/basic_json/to_string/#version-history","title":"Version history","text":"<p>Added in version 3.7.0.</p>"},{"location":"api/basic_json/to_ubjson/","title":"nlohmann::basic_json::to_ubjson","text":"<pre><code>// (1)\nstatic std::vector&lt;std::uint8_t&gt; to_ubjson(const basic_json&amp; j,\n                                           const bool use_size = false,\n                                           const bool use_type = false);\n\n// (2)\nstatic void to_ubjson(const basic_json&amp; j, detail::output_adapter&lt;std::uint8_t&gt; o,\n                      const bool use_size = false, const bool use_type = false);\nstatic void to_ubjson(const basic_json&amp; j, detail::output_adapter&lt;char&gt; o,\n                      const bool use_size = false, const bool use_type = false);\n</code></pre> <p>Serializes a given JSON value <code>j</code> to a byte vector using the UBJSON (Universal Binary JSON) serialization format. UBJSON aims to be more compact than JSON itself, yet more efficient to parse.</p> <ol> <li>Returns a byte vector containing the UBJSON serialization.</li> <li>Writes the UBJSON serialization to an output adapter.</li> </ol> <p>The exact mapping and its limitations are described on a dedicated page.</p>"},{"location":"api/basic_json/to_ubjson/#parameters","title":"Parameters","text":"<code>j</code> (in) JSON value to serialize <code>o</code> (in) output adapter to write serialization to <code>use_size</code> (in) whether to add size annotations to container types; optional, <code>false</code> by default. <code>use_type</code> (in) whether to add type annotations to container types (must be combined with <code>use_size = true</code>); optional, <code>false</code> by default."},{"location":"api/basic_json/to_ubjson/#return-value","title":"Return value","text":"<ol> <li>UBJSON serialization as a byte vector</li> <li>(none)</li> </ol>"},{"location":"api/basic_json/to_ubjson/#exception-safety","title":"Exception safety","text":"<p>Strong guarantee: if an exception is thrown, there are no changes in the JSON value.</p>"},{"location":"api/basic_json/to_ubjson/#complexity","title":"Complexity","text":"<p>Linear in the size of the JSON value <code>j</code>.</p>"},{"location":"api/basic_json/to_ubjson/#examples","title":"Examples","text":"Example <p>The example shows the serialization of a JSON value to a byte vector in UBJSON format.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;iomanip&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\nusing namespace nlohmann::literals;\n\n// function to print UBJSON's diagnostic format\nvoid print_byte(uint8_t byte)\n{\n    if (32 &lt; byte and byte &lt; 128)\n    {\n        std::cout &lt;&lt; (char)byte;\n    }\n    else\n    {\n        std::cout &lt;&lt; (int)byte;\n    }\n}\n\nint main()\n{\n    // create a JSON value\n    json j = R\"({\"compact\": true, \"schema\": false})\"_json;\n\n    // serialize it to UBJSON\n    std::vector&lt;std::uint8_t&gt; v = json::to_ubjson(j);\n\n    // print the vector content\n    for (auto&amp; byte : v)\n    {\n        print_byte(byte);\n    }\n    std::cout &lt;&lt; std::endl;\n\n    // create an array of numbers\n    json array = {1, 2, 3, 4, 5, 6, 7, 8};\n\n    // serialize it to UBJSON using default representation\n    std::vector&lt;std::uint8_t&gt; v_array = json::to_ubjson(array);\n    // serialize it to UBJSON using size optimization\n    std::vector&lt;std::uint8_t&gt; v_array_size = json::to_ubjson(array, true);\n    // serialize it to UBJSON using type optimization\n    std::vector&lt;std::uint8_t&gt; v_array_size_and_type = json::to_ubjson(array, true, true);\n\n    // print the vector contents\n    for (auto&amp; byte : v_array)\n    {\n        print_byte(byte);\n    }\n    std::cout &lt;&lt; std::endl;\n\n    for (auto&amp; byte : v_array_size)\n    {\n        print_byte(byte);\n    }\n    std::cout &lt;&lt; std::endl;\n\n    for (auto&amp; byte : v_array_size_and_type)\n    {\n        print_byte(byte);\n    }\n    std::cout &lt;&lt; std::endl;\n}\n</code></pre> <p>Output:</p> <pre><code>{i7compactTi6schemaF}\n[i1i2i3i4i5i6i7i8]\n[#i8i1i2i3i4i5i6i7i8\n[$i#i812345678\n</code></pre>"},{"location":"api/basic_json/to_ubjson/#version-history","title":"Version history","text":"<ul> <li>Added in version 3.1.0.</li> </ul>"},{"location":"api/basic_json/type/","title":"nlohmann::basic_json::type","text":"<pre><code>constexpr value_t type() const noexcept;\n</code></pre> <p>Return the type of the JSON value as a value from the <code>value_t</code> enumeration.</p>"},{"location":"api/basic_json/type/#return-value","title":"Return value","text":"<p>the type of the JSON value</p> Value type return value <code>null</code> <code>value_t::null</code> boolean <code>value_t::boolean</code> string <code>value_t::string</code> number (integer) <code>value_t::number_integer</code> number (unsigned integer) <code>value_t::number_unsigned</code> number (floating-point) <code>value_t::number_float</code> object <code>value_t::object</code> array <code>value_t::array</code> binary <code>value_t::binary</code> discarded <code>value_t::discarded</code>"},{"location":"api/basic_json/type/#exception-safety","title":"Exception safety","text":"<p>No-throw guarantee: this member function never throws exceptions.</p>"},{"location":"api/basic_json/type/#complexity","title":"Complexity","text":"<p>Constant.</p>"},{"location":"api/basic_json/type/#examples","title":"Examples","text":"Example <p>The following code exemplifies <code>type()</code> for all JSON types.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create JSON values\n    json j_null;\n    json j_boolean = true;\n    json j_number_integer = -17;\n    json j_number_unsigned = 42u;\n    json j_number_float = 23.42;\n    json j_object = {{\"one\", 1}, {\"two\", 2}};\n    json j_array = {1, 2, 4, 8, 16};\n    json j_string = \"Hello, world\";\n\n    // call type()\n    std::cout &lt;&lt; std::boolalpha;\n    std::cout &lt;&lt; (j_null.type() == json::value_t::null) &lt;&lt; '\\n';\n    std::cout &lt;&lt; (j_boolean.type() == json::value_t::boolean) &lt;&lt; '\\n';\n    std::cout &lt;&lt; (j_number_integer.type() == json::value_t::number_integer) &lt;&lt; '\\n';\n    std::cout &lt;&lt; (j_number_unsigned.type() == json::value_t::number_unsigned) &lt;&lt; '\\n';\n    std::cout &lt;&lt; (j_number_float.type() == json::value_t::number_float) &lt;&lt; '\\n';\n    std::cout &lt;&lt; (j_object.type() == json::value_t::object) &lt;&lt; '\\n';\n    std::cout &lt;&lt; (j_array.type() == json::value_t::array) &lt;&lt; '\\n';\n    std::cout &lt;&lt; (j_string.type() == json::value_t::string) &lt;&lt; '\\n';\n}\n</code></pre> <p>Output:</p> <pre><code>true\ntrue\ntrue\ntrue\ntrue\ntrue\ntrue\ntrue\n</code></pre>"},{"location":"api/basic_json/type/#version-history","title":"Version history","text":"<ul> <li>Added in version 1.0.0.</li> <li>Added unsigned integer type in version 2.0.0.</li> <li>Added binary type in version 3.8.0.</li> </ul>"},{"location":"api/basic_json/type_error/","title":"nlohmann::basic_json::type_error","text":"<pre><code>class type_error : public exception;\n</code></pre> <p>This exception is thrown in case of a type error; that is, a library function is executed on a JSON value whose type does not match the expected semantics.</p> <p>Exceptions have ids 3xx (see list of type errors).</p> <pre><code>classDiagram\n  direction LR\n\n    class std_exception [\"std::exception\"] {\n        &lt;&lt;interface&gt;&gt;\n    }\n\n    class json_exception [\"basic_json::exception\"] {\n        +const int id\n        +const char* what() const\n    }\n\n    class json_parse_error [\"basic_json::parse_error\"] {\n        +const std::size_t byte\n    }\n\n    class json_invalid_iterator [\"basic_json::invalid_iterator\"]\n    class json_type_error [\"basic_json::type_error\"]\n    class json_out_of_range [\"basic_json::out_of_range\"]\n    class json_other_error [\"basic_json::other_error\"]\n\n    std_exception &lt;|-- json_exception\n    json_exception &lt;|-- json_parse_error\n    json_exception &lt;|-- json_invalid_iterator\n    json_exception &lt;|-- json_type_error\n    json_exception &lt;|-- json_out_of_range\n    json_exception &lt;|-- json_other_error\n\n    style json_type_error fill:#CCCCFF</code></pre>"},{"location":"api/basic_json/type_error/#member-functions","title":"Member functions","text":"<ul> <li>what - returns explanatory string</li> </ul>"},{"location":"api/basic_json/type_error/#member-variables","title":"Member variables","text":"<ul> <li>id - the id of the exception</li> </ul>"},{"location":"api/basic_json/type_error/#examples","title":"Examples","text":"Example <p>The following code shows how a <code>type_error</code> exception can be caught.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    try\n    {\n        // calling push_back() on a string value\n        json j = \"string\";\n        j.push_back(\"another string\");\n    }\n    catch (const json::type_error&amp; e)\n    {\n        // output exception information\n        std::cout &lt;&lt; \"message: \" &lt;&lt; e.what() &lt;&lt; '\\n'\n                  &lt;&lt; \"exception id: \" &lt;&lt; e.id &lt;&lt; std::endl;\n    }\n}\n</code></pre> <p>Output:</p> <pre><code>message: [json.exception.type_error.308] cannot use push_back() with string\nexception id: 308\n</code></pre>"},{"location":"api/basic_json/type_error/#see-also","title":"See also","text":"<ul> <li>List of type errors</li> <li><code>parse_error</code> for exceptions indicating a parse error</li> <li><code>invalid_iterator</code> for exceptions indicating errors with iterators</li> <li><code>out_of_range</code> for exceptions indicating access out of the defined range</li> <li><code>other_error</code> for exceptions indicating other library errors</li> </ul>"},{"location":"api/basic_json/type_error/#version-history","title":"Version history","text":"<ul> <li>Since version 3.0.0.</li> </ul>"},{"location":"api/basic_json/type_name/","title":"nlohmann::basic_json::type_name","text":"<pre><code>const char* type_name() const noexcept;\n</code></pre> <p>Returns the type name as string to be used in error messages -- usually to indicate that a function was called on a wrong JSON type.</p>"},{"location":"api/basic_json/type_name/#return-value","title":"Return value","text":"<p>a string representation of the type (<code>value_t</code>):</p> Value type return value <code>null</code> <code>\"null\"</code> boolean <code>\"boolean\"</code> string <code>\"string\"</code> number (integer, unsigned integer, floating-point) <code>\"number\"</code> object <code>\"object\"</code> array <code>\"array\"</code> binary <code>\"binary\"</code> discarded <code>\"discarded\"</code>"},{"location":"api/basic_json/type_name/#exception-safety","title":"Exception safety","text":"<p>No-throw guarantee: this member function never throws exceptions.</p>"},{"location":"api/basic_json/type_name/#complexity","title":"Complexity","text":"<p>Constant.</p>"},{"location":"api/basic_json/type_name/#examples","title":"Examples","text":"Example <p>The following code exemplifies <code>type_name()</code> for all JSON types.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create JSON values\n    json j_null;\n    json j_boolean = true;\n    json j_number_integer = -17;\n    json j_number_unsigned = 42u;\n    json j_number_float = 23.42;\n    json j_object = {{\"one\", 1}, {\"two\", 2}};\n    json j_array = {1, 2, 4, 8, 16};\n    json j_string = \"Hello, world\";\n\n    // call type_name()\n    std::cout &lt;&lt; j_null &lt;&lt; \" is a \" &lt;&lt; j_null.type_name() &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_boolean &lt;&lt; \" is a \" &lt;&lt; j_boolean.type_name() &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_number_integer &lt;&lt; \" is a \" &lt;&lt; j_number_integer.type_name() &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_number_unsigned &lt;&lt; \" is a \" &lt;&lt; j_number_unsigned.type_name() &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_number_float &lt;&lt; \" is a \" &lt;&lt; j_number_float.type_name() &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_object &lt;&lt; \" is an \" &lt;&lt; j_object.type_name() &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_array &lt;&lt; \" is an \" &lt;&lt; j_array.type_name() &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_string &lt;&lt; \" is a \" &lt;&lt; j_string.type_name() &lt;&lt; '\\n';\n}\n</code></pre> <p>Output:</p> <pre><code>null is a null\ntrue is a boolean\n-17 is a number\n42 is a number\n23.42 is a number\n{\"one\":1,\"two\":2} is an object\n[1,2,4,8,16] is an array\n\"Hello, world\" is a string\n</code></pre>"},{"location":"api/basic_json/type_name/#version-history","title":"Version history","text":"<ul> <li>Added in version 1.0.0.</li> <li>Part of the public API version since 2.1.0.</li> <li>Changed return value to <code>const char*</code> and added <code>noexcept</code> in version 3.0.0.</li> <li>Added support for binary type in version 3.8.0.</li> </ul>"},{"location":"api/basic_json/unflatten/","title":"nlohmann::basic_json::unflatten","text":"<pre><code>basic_json unflatten() const;\n</code></pre> <p>The function restores the arbitrary nesting of a JSON value that has been flattened before using the <code>flatten()</code> function. The JSON value must meet certain constraints:</p> <ol> <li>The value must be an object.</li> <li>The keys must be JSON pointers (see RFC 6901)</li> <li>The mapped values must be primitive JSON types.</li> </ol>"},{"location":"api/basic_json/unflatten/#return-value","title":"Return value","text":"<p>the original JSON from a flattened version</p>"},{"location":"api/basic_json/unflatten/#exception-safety","title":"Exception safety","text":"<p>Strong exception safety: if an exception occurs, the original value stays intact.</p>"},{"location":"api/basic_json/unflatten/#exceptions","title":"Exceptions","text":"<p>The function can throw the following exceptions:</p> <ul> <li>Throws <code>type_error.314</code> if value is not an object</li> <li>Throws <code>type_error.315</code> if object values are not primitive</li> </ul>"},{"location":"api/basic_json/unflatten/#complexity","title":"Complexity","text":"<p>Linear in the size of the JSON value.</p>"},{"location":"api/basic_json/unflatten/#notes","title":"Notes","text":"<p>Empty objects and arrays are flattened by <code>flatten()</code> to <code>null</code> values and cannot unflattened to their original type. Apart from this example, for a JSON value <code>j</code>, the following is always true: <code>j == j.flatten().unflatten()</code>.</p>"},{"location":"api/basic_json/unflatten/#examples","title":"Examples","text":"Example <p>The following code shows how a flattened JSON object is unflattened into the original nested JSON object.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;iomanip&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create JSON value\n    json j_flattened =\n    {\n        {\"/answer/everything\", 42},\n        {\"/happy\", true},\n        {\"/list/0\", 1},\n        {\"/list/1\", 0},\n        {\"/list/2\", 2},\n        {\"/name\", \"Niels\"},\n        {\"/nothing\", nullptr},\n        {\"/object/currency\", \"USD\"},\n        {\"/object/value\", 42.99},\n        {\"/pi\", 3.141}\n    };\n\n    // call unflatten()\n    std::cout &lt;&lt; std::setw(4) &lt;&lt; j_flattened.unflatten() &lt;&lt; '\\n';\n}\n</code></pre> <p>Output:</p> <pre><code>{\n    \"answer\": {\n        \"everything\": 42\n    },\n    \"happy\": true,\n    \"list\": [\n        1,\n        0,\n        2\n    ],\n    \"name\": \"Niels\",\n    \"nothing\": null,\n    \"object\": {\n        \"currency\": \"USD\",\n        \"value\": 42.99\n    },\n    \"pi\": 3.141\n}\n</code></pre>"},{"location":"api/basic_json/unflatten/#see-also","title":"See also","text":"<ul> <li>flatten the reverse function</li> </ul>"},{"location":"api/basic_json/unflatten/#version-history","title":"Version history","text":"<ul> <li>Added in version 2.0.0.</li> </ul>"},{"location":"api/basic_json/update/","title":"nlohmann::basic_json::update","text":"<pre><code>// (1)\nvoid update(const_reference j, bool merge_objects = false);\n\n// (2)\nvoid update(const_iterator first, const_iterator last, bool merge_objects = false);\n</code></pre> <ol> <li>Inserts all values from JSON object <code>j</code>.</li> <li>Inserts all values from range <code>[first, last)</code></li> </ol> <p>When <code>merge_objects</code> is <code>false</code> (default), existing keys are overwritten. When <code>merge_objects</code> is <code>true</code>, recursively merges objects with common keys.</p> <p>The function is motivated by Python's dict.update function.</p>"},{"location":"api/basic_json/update/#iterator-invalidation","title":"Iterator invalidation","text":"<p>For <code>ordered_json</code>, adding a value to an object can yield a reallocation, in which case all iterators (including the <code>end()</code> iterator) and all references to the elements are invalidated.</p>"},{"location":"api/basic_json/update/#parameters","title":"Parameters","text":"<code>j</code> (in) JSON object to read values from <code>merge_objects</code> (in) when <code>true</code>, existing keys are not overwritten, but contents of objects are merged recursively (default: <code>false</code>) <code>first</code> (in) the beginning of the range of elements to insert <code>last</code> (in) the end of the range of elements to insert"},{"location":"api/basic_json/update/#exceptions","title":"Exceptions","text":"<ol> <li>The function can throw the following exceptions:<ul> <li>Throws <code>type_error.312</code> if called on JSON values other than   objects; example: <code>\"cannot use update() with string\"</code></li> </ul> </li> <li>The function can throw the following exceptions:<ul> <li>Throws <code>type_error.312</code> if called on JSON values other than   objects; example: <code>\"cannot use update() with string\"</code></li> <li>Throws <code>invalid_iterator.202</code> if called on an   iterator which does not belong to the current JSON value; example: <code>\"iterator does not fit current value\"</code></li> <li>Throws <code>invalid_iterator.210</code> if <code>first</code> and <code>last</code>   do not belong to the same JSON value; example: <code>\"iterators do not fit\"</code></li> </ul> </li> </ol>"},{"location":"api/basic_json/update/#complexity","title":"Complexity","text":"<ol> <li>O(N*log(size() + N)), where N is the number of elements to insert.</li> <li>O(N*log(size() + N)), where N is the number of elements to insert.</li> </ol>"},{"location":"api/basic_json/update/#examples","title":"Examples","text":"Example <p>The example shows how <code>update()</code> is used.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;iomanip&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\nusing namespace nlohmann::literals;\n\nint main()\n{\n    // create two JSON objects\n    json o1 = R\"( {\"color\": \"red\", \"price\": 17.99, \"names\": {\"de\": \"Flugzeug\"}} )\"_json;\n    json o2 = R\"( {\"color\": \"blue\", \"speed\": 100, \"names\": {\"en\": \"plane\"}} )\"_json;\n    json o3 = o1;\n\n    // add all keys from o2 to o1 (updating \"color\", replacing \"names\")\n    o1.update(o2);\n\n    // add all keys from o2 to o1 (updating \"color\", merging \"names\")\n    o3.update(o2, true);\n\n    // output updated object o1 and o3\n    std::cout &lt;&lt; std::setw(2) &lt;&lt; o1 &lt;&lt; '\\n';\n    std::cout &lt;&lt; std::setw(2) &lt;&lt; o3 &lt;&lt; '\\n';\n}\n</code></pre> <p>Output:</p> <pre><code>{\n  \"color\": \"blue\",\n  \"names\": {\n    \"en\": \"plane\"\n  },\n  \"price\": 17.99,\n  \"speed\": 100\n}\n{\n  \"color\": \"blue\",\n  \"names\": {\n    \"de\": \"Flugzeug\",\n    \"en\": \"plane\"\n  },\n  \"price\": 17.99,\n  \"speed\": 100\n}\n</code></pre> Example <p>The example shows how <code>update()</code> is used.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;iomanip&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\nusing namespace nlohmann::literals;\n\nint main()\n{\n    // create two JSON objects\n    json o1 = R\"( {\"color\": \"red\", \"price\": 17.99, \"names\": {\"de\": \"Flugzeug\"}} )\"_json;\n    json o2 = R\"( {\"color\": \"blue\", \"speed\": 100, \"names\": {\"en\": \"plane\"}} )\"_json;\n    json o3 = o1;\n\n    // add all keys from o2 to o1 (updating \"color\", replacing \"names\")\n    o1.update(o2.begin(), o2.end());\n\n    // add all keys from o2 to o1 (updating \"color\", merging \"names\")\n    o3.update(o2.begin(), o2.end(), true);\n\n    // output updated object o1 and o3\n    std::cout &lt;&lt; std::setw(2) &lt;&lt; o1 &lt;&lt; '\\n';\n    std::cout &lt;&lt; std::setw(2) &lt;&lt; o3 &lt;&lt; '\\n';\n}\n</code></pre> <p>Output:</p> <pre><code>{\n  \"color\": \"blue\",\n  \"names\": {\n    \"en\": \"plane\"\n  },\n  \"price\": 17.99,\n  \"speed\": 100\n}\n{\n  \"color\": \"blue\",\n  \"names\": {\n    \"de\": \"Flugzeug\",\n    \"en\": \"plane\"\n  },\n  \"price\": 17.99,\n  \"speed\": 100\n}\n</code></pre> Example <p>One common use case for this function is the handling of user settings. Assume your application can be configured in some aspects:</p> <pre><code>{\n    \"color\": \"red\",\n    \"active\": true,\n    \"name\": {\"de\": \"Maus\", \"en\": \"mouse\"}\n}\n</code></pre> <p>The user may override the default settings selectively:</p> <pre><code>{\n    \"color\": \"blue\",\n    \"name\": {\"es\": \"rat\u00f3n\"},\n}\n</code></pre> <p>Then <code>update</code> manages the merging of default settings and user settings:</p> <pre><code>auto user_settings = json::parse(\"config.json\");\nauto effective_settings = get_default_settings();\neffective_settings.update(user_settings);\n</code></pre> <p>Now <code>effective_settings</code> contains the default settings, but those keys set by the user are overwritten:</p> <pre><code>{\n    \"color\": \"blue\",\n    \"active\": true,\n    \"name\": {\"es\": \"rat\u00f3n\"}\n}\n</code></pre> <p>Note existing keys were just overwritten. To merge objects, <code>merge_objects</code> setting should be set to <code>true</code>:</p> <pre><code>auto user_settings = json::parse(\"config.json\");\nauto effective_settings = get_default_settings();\neffective_settings.update(user_settings, true);\n</code></pre> <pre><code>{\n    \"color\": \"blue\",\n    \"active\": true,\n    \"name\": {\"de\": \"Maus\", \"en\": \"mouse\", \"es\": \"rat\u00f3n\"}\n}\n</code></pre>"},{"location":"api/basic_json/update/#version-history","title":"Version history","text":"<ul> <li>Added in version 3.0.0.</li> <li>Added <code>merge_objects</code> parameter in 3.10.5.</li> </ul>"},{"location":"api/basic_json/value/","title":"nlohmann::basic_json::value","text":"<pre><code>// (1)\ntemplate&lt;class ValueType&gt;\nValueType value(const typename object_t::key_type&amp; key,\n                ValueType&amp;&amp; default_value) const;\n\n// (2)\ntemplate&lt;class ValueType, class KeyType&gt;\nValueType value(KeyType&amp;&amp; key,\n                ValueType&amp;&amp; default_value) const;\n\n// (3)\ntemplate&lt;class ValueType&gt;\nValueType value(const json_pointer&amp; ptr,\n                const ValueType&amp; default_value) const;\n</code></pre> <ol> <li> <p>Returns either a copy of an object's element at the specified key <code>key</code> or a given default value if no element with    key <code>key</code> exists.</p> <p>The function is basically equivalent to executing <pre><code>try {\n   return at(key);\n} catch(out_of_range) {\n   return default_value;\n}\n</code></pre></p> </li> <li> <p>See 1. This overload is only available if <code>KeyType</code> is comparable with <code>typename object_t::key_type</code> and    <code>typename object_comparator_t::is_transparent</code> denotes a type.</p> </li> <li> <p>Returns either a copy of an object's element at the specified JSON pointer <code>ptr</code> or a given default value if no value    at <code>ptr</code> exists.</p> <p>The function is basically equivalent to executing <pre><code>try {\n   return at(ptr);\n} catch(out_of_range) {\n   return default_value;\n}\n</code></pre></p> </li> </ol> <p>Differences to <code>at</code> and <code>operator[]</code></p> <ul> <li>Unlike <code>at</code>, this function does not throw if the given <code>key</code>/<code>ptr</code> was not found.</li> <li>Unlike <code>operator[]</code>, this function does not implicitly add an element to the position defined by  <code>key</code>/<code>ptr</code> key. This function is furthermore also applicable to const objects.</li> </ul>"},{"location":"api/basic_json/value/#template-parameters","title":"Template parameters","text":"<code>KeyType</code> A type for an object key other than <code>json_pointer</code> that is comparable with <code>string_t</code> using  <code>object_comparator_t</code>. This can also be a string view (C++17). <code>ValueType</code> type compatible to JSON values, for instance <code>int</code> for JSON integer numbers, <code>bool</code> for JSON booleans, or <code>std::vector</code> types for JSON arrays. Note the type of the expected value at <code>key</code>/<code>ptr</code> and the default value <code>default_value</code> must be compatible."},{"location":"api/basic_json/value/#parameters","title":"Parameters","text":"<code>key</code> (in) key of the element to access <code>default_value</code> (in) the value to return if <code>key</code>/<code>ptr</code> found no value <code>ptr</code> (in) a JSON pointer to the element to access"},{"location":"api/basic_json/value/#return-value","title":"Return value","text":"<ol> <li>copy of the element at key <code>key</code> or <code>default_value</code> if <code>key</code> is not found</li> <li>copy of the element at key <code>key</code> or <code>default_value</code> if <code>key</code> is not found</li> <li>copy of the element at JSON Pointer <code>ptr</code> or <code>default_value</code> if no value for <code>ptr</code> is found</li> </ol>"},{"location":"api/basic_json/value/#exception-safety","title":"Exception safety","text":"<p>Strong guarantee: if an exception is thrown, there are no changes to any JSON value.</p>"},{"location":"api/basic_json/value/#exceptions","title":"Exceptions","text":"<ol> <li>The function can throw the following exceptions:<ul> <li>Throws <code>type_error.302</code> if <code>default_value</code> does not match   the type of the value at <code>key</code></li> <li>Throws <code>type_error.306</code> if the JSON value is not an object;   in that case, using <code>value()</code> with a key makes no sense.</li> </ul> </li> <li>See 1.</li> <li>The function can throw the following exceptions:<ul> <li>Throws <code>type_error.302</code> if <code>default_value</code> does not match   the type of the value at <code>ptr</code></li> <li>Throws <code>type_error.306</code> if the JSON value is not an object;   in that case, using <code>value()</code> with a key makes no sense.</li> </ul> </li> </ol>"},{"location":"api/basic_json/value/#complexity","title":"Complexity","text":"<ol> <li>Logarithmic in the size of the container.</li> <li>Logarithmic in the size of the container.</li> <li>Logarithmic in the size of the container.</li> </ol>"},{"location":"api/basic_json/value/#notes","title":"Notes","text":"<p>Return type</p> <p>The value function is a template, and the return type of the function is determined by the type of the provided default value unless otherwise specified. This can have unexpected effects. In the example below, we store a 64-bit unsigned integer. We get exactly that value when using <code>operator[]</code>. However, when we call <code>value</code> and provide <code>0</code> as default value, then <code>-1</code> is returned. This occurs, because <code>0</code> has type <code>int</code> which overflows when handling the value <code>18446744073709551615</code>.</p> <p>To address this issue, either provide a correctly typed default value or use the template parameter to specify the desired return type. Note that this issue occurs even when a value is stored at the provided key, and the default value is not used as the return value.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    json j = json::parse(R\"({\"uint64\": 18446744073709551615})\");\n\n    std::cout &lt;&lt; \"operator[]:                \" &lt;&lt; j[\"uint64\"] &lt;&lt; '\\n'\n              &lt;&lt; \"default value (int):       \" &lt;&lt; j.value(\"uint64\", 0) &lt;&lt; '\\n'\n              &lt;&lt; \"default value (uint64_t):  \" &lt;&lt; j.value(\"uint64\", std::uint64_t(0)) &lt;&lt; '\\n'\n              &lt;&lt; \"explicit return value type: \" &lt;&lt; j.value&lt;std::uint64_t&gt;(\"uint64\", 0) &lt;&lt; '\\n';\n}\n</code></pre> <p>Output:</p> <pre><code>operator[]:                18446744073709551615\ndefault value (int):       -1\ndefault value (uint64_t):  18446744073709551615\nexplicit return value type: 18446744073709551615\n</code></pre>"},{"location":"api/basic_json/value/#examples","title":"Examples","text":"Example: (1) access specified object element with default value <p>The example below shows how object elements can be queried with a default value.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create a JSON object with different entry types\n    json j =\n    {\n        {\"integer\", 1},\n        {\"floating\", 42.23},\n        {\"string\", \"hello world\"},\n        {\"boolean\", true},\n        {\"object\", {{\"key1\", 1}, {\"key2\", 2}}},\n        {\"array\", {1, 2, 3}}\n    };\n\n    // access existing values\n    int v_integer = j.value(\"integer\", 0);\n    double v_floating = j.value(\"floating\", 47.11);\n\n    // access nonexisting values and rely on default value\n    std::string v_string = j.value(\"nonexisting\", \"oops\");\n    bool v_boolean = j.value(\"nonexisting\", false);\n\n    // output values\n    std::cout &lt;&lt; std::boolalpha &lt;&lt; v_integer &lt;&lt; \" \" &lt;&lt; v_floating\n              &lt;&lt; \" \" &lt;&lt; v_string &lt;&lt; \" \" &lt;&lt; v_boolean &lt;&lt; \"\\n\";\n}\n</code></pre> <p>Output:</p> <pre><code>1 42.23 oops false\n</code></pre> Example: (2) access specified object element using string_view with default value <p>The example below shows how object elements can be queried with a default value.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;string_view&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing namespace std::string_view_literals;\nusing json = nlohmann::json;\n\nint main()\n{\n    // create a JSON object with different entry types\n    json j =\n    {\n        {\"integer\", 1},\n        {\"floating\", 42.23},\n        {\"string\", \"hello world\"},\n        {\"boolean\", true},\n        {\"object\", {{\"key1\", 1}, {\"key2\", 2}}},\n        {\"array\", {1, 2, 3}}\n    };\n\n    // access existing values\n    int v_integer = j.value(\"integer\"sv, 0);\n    double v_floating = j.value(\"floating\"sv, 47.11);\n\n    // access nonexisting values and rely on default value\n    std::string v_string = j.value(\"nonexisting\"sv, \"oops\");\n    bool v_boolean = j.value(\"nonexisting\"sv, false);\n\n    // output values\n    std::cout &lt;&lt; std::boolalpha &lt;&lt; v_integer &lt;&lt; \" \" &lt;&lt; v_floating\n              &lt;&lt; \" \" &lt;&lt; v_string &lt;&lt; \" \" &lt;&lt; v_boolean &lt;&lt; \"\\n\";\n}\n</code></pre> <p>Output:</p> <pre><code>1 42.23 oops false\n</code></pre> Example: (3) access specified object element via JSON Pointer with default value <p>The example below shows how object elements can be queried with a default value.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\nusing namespace nlohmann::literals;\n\nint main()\n{\n    // create a JSON object with different entry types\n    json j =\n    {\n        {\"integer\", 1},\n        {\"floating\", 42.23},\n        {\"string\", \"hello world\"},\n        {\"boolean\", true},\n        {\"object\", {{\"key1\", 1}, {\"key2\", 2}}},\n        {\"array\", {1, 2, 3}}\n    };\n\n    // access existing values\n    int v_integer = j.value(\"/integer\"_json_pointer, 0);\n    double v_floating = j.value(\"/floating\"_json_pointer, 47.11);\n\n    // access nonexisting values and rely on default value\n    std::string v_string = j.value(\"/nonexisting\"_json_pointer, \"oops\");\n    bool v_boolean = j.value(\"/nonexisting\"_json_pointer, false);\n\n    // output values\n    std::cout &lt;&lt; std::boolalpha &lt;&lt; v_integer &lt;&lt; \" \" &lt;&lt; v_floating\n              &lt;&lt; \" \" &lt;&lt; v_string &lt;&lt; \" \" &lt;&lt; v_boolean &lt;&lt; \"\\n\";\n}\n</code></pre> <p>Output:</p> <pre><code>1 42.23 oops false\n</code></pre>"},{"location":"api/basic_json/value/#see-also","title":"See also","text":"<ul> <li>see <code>at</code> for access by reference with range checking</li> <li>see <code>operator[]</code> for unchecked access by reference</li> </ul>"},{"location":"api/basic_json/value/#version-history","title":"Version history","text":"<ol> <li>Added in version 1.0.0. Changed parameter <code>default_value</code> type from <code>const ValueType&amp;</code> to <code>ValueType&amp;&amp;</code> in version 3.11.0.</li> <li>Added in version 3.11.0. Made <code>ValueType</code> the first template parameter in version 3.11.2.</li> <li>Added in version 2.0.2.</li> </ol>"},{"location":"api/basic_json/value_t/","title":"nlohmann::basic_json::value_t","text":"<pre><code>enum class value_t : std::uint8_t {\n    null,\n    object,\n    array,\n    string,\n    boolean,\n    number_integer,\n    number_unsigned,\n    number_float,\n    binary,\n    discarded\n};\n</code></pre> <p>This enumeration collects the different JSON types. It is internally used to distinguish the stored values, and the functions <code>is_null</code>, <code>is_object</code>, <code>is_array</code>, <code>is_string</code>, <code>is_boolean</code>, <code>is_number</code> (with <code>is_number_integer</code>, <code>is_number_unsigned</code>, and <code>is_number_float</code>), <code>is_discarded</code>, <code>is_binary</code>, <code>is_primitive</code>, and <code>is_structured</code> rely on it.</p>"},{"location":"api/basic_json/value_t/#notes","title":"Notes","text":"<p>Ordering</p> <p>The order of types is as follows:</p> <ol> <li><code>null</code></li> <li><code>boolean</code></li> <li><code>number_integer</code>, <code>number_unsigned</code>, <code>number_float</code></li> <li><code>object</code></li> <li><code>array</code></li> <li><code>string</code></li> <li><code>binary</code></li> </ol> <p><code>discarded</code> is unordered.</p> <p>Types of numbers</p> <p>There are three enumerators for numbers (<code>number_integer</code>, <code>number_unsigned</code>, and <code>number_float</code>) to distinguish between different types of numbers:</p> <ul> <li><code>number_unsigned_t</code> for unsigned integers</li> <li><code>number_integer_t</code> for signed integers</li> <li><code>number_float_t</code> for floating-point numbers or to approximate integers which do not fit     into the limits of their respective type</li> </ul> <p>Comparison operators</p> <p><code>operator&lt;</code> and <code>operator&lt;=&gt;</code> (since C++20) are overloaded and compare according to the ordering described above. Until C++20 all other relational and equality operators yield results according to the integer value of each enumerator. Since C++20 some compilers consider the rewritten candidates generated from <code>operator&lt;=&gt;</code> during overload resolution, while others do not. For predictable and portable behavior use:</p> <ul> <li><code>operator&lt;</code> or <code>operator&lt;=&gt;</code> when wanting to compare according to the order described above</li> <li><code>operator==</code> or <code>operator!=</code> when wanting to compare according to each enumerators integer value</li> </ul>"},{"location":"api/basic_json/value_t/#examples","title":"Examples","text":"Example <p>The following code how <code>type()</code> queries the <code>value_t</code> for all JSON types.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create JSON values\n    json j_null;\n    json j_boolean = true;\n    json j_number_integer = -17;\n    json j_number_unsigned = 42u;\n    json j_number_float = 23.42;\n    json j_object = {{\"one\", 1}, {\"two\", 2}};\n    json j_array = {1, 2, 4, 8, 16};\n    json j_string = \"Hello, world\";\n\n    // call type()\n    std::cout &lt;&lt; std::boolalpha;\n    std::cout &lt;&lt; (j_null.type() == json::value_t::null) &lt;&lt; '\\n';\n    std::cout &lt;&lt; (j_boolean.type() == json::value_t::boolean) &lt;&lt; '\\n';\n    std::cout &lt;&lt; (j_number_integer.type() == json::value_t::number_integer) &lt;&lt; '\\n';\n    std::cout &lt;&lt; (j_number_unsigned.type() == json::value_t::number_unsigned) &lt;&lt; '\\n';\n    std::cout &lt;&lt; (j_number_float.type() == json::value_t::number_float) &lt;&lt; '\\n';\n    std::cout &lt;&lt; (j_object.type() == json::value_t::object) &lt;&lt; '\\n';\n    std::cout &lt;&lt; (j_array.type() == json::value_t::array) &lt;&lt; '\\n';\n    std::cout &lt;&lt; (j_string.type() == json::value_t::string) &lt;&lt; '\\n';\n}\n</code></pre> <p>Output:</p> <pre><code>true\ntrue\ntrue\ntrue\ntrue\ntrue\ntrue\ntrue\n</code></pre>"},{"location":"api/basic_json/value_t/#version-history","title":"Version history","text":"<ul> <li>Added in version 1.0.0.</li> <li>Added unsigned integer type in version 2.0.0.</li> <li>Added binary type in version 3.8.0.</li> </ul>"},{"location":"api/basic_json/~basic_json/","title":"nlohmann::basic_json::~basic_json","text":"<pre><code>~basic_json() noexcept;\n</code></pre> <p>Destroys the JSON value and frees all allocated memory.</p>"},{"location":"api/basic_json/~basic_json/#exception-safety","title":"Exception safety","text":"<p>No-throw guarantee: this member function never throws exceptions.</p>"},{"location":"api/basic_json/~basic_json/#complexity","title":"Complexity","text":"<p>Linear.</p>"},{"location":"api/basic_json/~basic_json/#version-history","title":"Version history","text":"<ul> <li>Added in version 1.0.0.</li> </ul>"},{"location":"api/byte_container_with_subtype/","title":"nlohmann::byte_container_with_subtype","text":"<pre><code>template&lt;typename BinaryType&gt;\nclass byte_container_with_subtype : public BinaryType;\n</code></pre> <p>This type extends the template parameter <code>BinaryType</code> provided to <code>basic_json</code> with a subtype used by BSON and MessagePack. This type exists so that the user does not have to specify a type themselves with a specific naming scheme in order to override the binary type.</p>"},{"location":"api/byte_container_with_subtype/#template-parameters","title":"Template parameters","text":"<code>BinaryType</code> container to store bytes (<code>std::vector&lt;std::uint8_t&gt;</code> by default)"},{"location":"api/byte_container_with_subtype/#member-types","title":"Member types","text":"<ul> <li>container_type - the type of the underlying container (<code>BinaryType</code>)</li> <li>subtype_type - the type of the subtype (<code>std::uint64_t</code>)</li> </ul>"},{"location":"api/byte_container_with_subtype/#member-functions","title":"Member functions","text":"<ul> <li>(constructor)</li> <li>operator== - comparison: equal</li> <li>operator!= - comparison: not equal</li> <li>set_subtype - sets the binary subtype</li> <li>subtype - return the binary subtype</li> <li>has_subtype - return whether the value has a subtype</li> <li>clear_subtype - clears the binary subtype</li> </ul>"},{"location":"api/byte_container_with_subtype/#version-history","title":"Version history","text":"<ul> <li>Added in version 3.8.0.</li> <li>Changed the type of subtypes to <code>std::uint64_t</code> in 3.10.0.</li> </ul>"},{"location":"api/byte_container_with_subtype/byte_container_with_subtype/","title":"nlohmann::byte_container_with_subtype::byte_container_with_subtype","text":"<pre><code>// (1)\nbyte_container_with_subtype();\n\n// (2)\nbyte_container_with_subtype(const container_type&amp; container);\nbyte_container_with_subtype(container_type&amp;&amp; container);\n\n// (3)\nbyte_container_with_subtype(const container_type&amp; container, subtype_type subtype);\nbyte_container_with_subtype(container_type&amp;&amp; container, subtype_type subtype);\n</code></pre> <ol> <li>Create an empty binary container without a subtype.</li> <li>Create a binary container without a subtype.</li> <li>Create a binary container with a subtype.</li> </ol>"},{"location":"api/byte_container_with_subtype/byte_container_with_subtype/#parameters","title":"Parameters","text":"<code>container</code> (in) binary container <code>subtype</code> (in) subtype"},{"location":"api/byte_container_with_subtype/byte_container_with_subtype/#examples","title":"Examples","text":"Example <p>The example below demonstrates how byte containers can be created.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\n// define a byte container based on std::vector\nusing byte_container_with_subtype = nlohmann::byte_container_with_subtype&lt;std::vector&lt;std::uint8_t&gt;&gt;;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // (1) create empty container\n    auto c1 = byte_container_with_subtype();\n\n    std::vector&lt;std::uint8_t&gt; bytes = {{0xca, 0xfe, 0xba, 0xbe}};\n\n    // (2) create container\n    auto c2 = byte_container_with_subtype(bytes);\n\n    // (3) create container with subtype\n    auto c3 = byte_container_with_subtype(bytes, 42);\n\n    std::cout &lt;&lt; json(c1) &lt;&lt; \"\\n\" &lt;&lt; json(c2) &lt;&lt; \"\\n\" &lt;&lt; json(c3) &lt;&lt; std::endl;\n}\n</code></pre> <p>Output:</p> <pre><code>{\"bytes\":[],\"subtype\":null}\n{\"bytes\":[202,254,186,190],\"subtype\":null}\n{\"bytes\":[202,254,186,190],\"subtype\":42}\n</code></pre>"},{"location":"api/byte_container_with_subtype/byte_container_with_subtype/#version-history","title":"Version history","text":"<p>Since version 3.8.0.</p>"},{"location":"api/byte_container_with_subtype/clear_subtype/","title":"nlohmann::byte_container_with_subtype::clear_subtype","text":"<pre><code>void clear_subtype() noexcept;\n</code></pre> <p>Clears the binary subtype and flags the value as not having a subtype, which has implications for serialization; for instance, MessagePack will prefer the bin family over the ext family.</p>"},{"location":"api/byte_container_with_subtype/clear_subtype/#exception-safety","title":"Exception safety","text":"<p>No-throw guarantee: this function never throws exceptions.</p>"},{"location":"api/byte_container_with_subtype/clear_subtype/#complexity","title":"Complexity","text":"<p>Constant.</p>"},{"location":"api/byte_container_with_subtype/clear_subtype/#examples","title":"Examples","text":"Example <p>The example below demonstrates how <code>clear_subtype</code> can remove subtypes.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\n// define a byte container based on std::vector\nusing byte_container_with_subtype = nlohmann::byte_container_with_subtype&lt;std::vector&lt;std::uint8_t&gt;&gt;;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    std::vector&lt;std::uint8_t&gt; bytes = {{0xca, 0xfe, 0xba, 0xbe}};\n\n    // create container with subtype\n    auto c1 = byte_container_with_subtype(bytes, 42);\n\n    std::cout &lt;&lt; \"before calling clear_subtype(): \" &lt;&lt; json(c1) &lt;&lt; '\\n';\n\n    c1.clear_subtype();\n\n    std::cout &lt;&lt; \"after calling clear_subtype(): \" &lt;&lt; json(c1) &lt;&lt; '\\n';\n}\n</code></pre> <p>Output:</p> <pre><code>before calling clear_subtype(): {\"bytes\":[202,254,186,190],\"subtype\":42}\nafter calling clear_subtype(): {\"bytes\":[202,254,186,190],\"subtype\":null}\n</code></pre>"},{"location":"api/byte_container_with_subtype/clear_subtype/#version-history","title":"Version history","text":"<p>Since version 3.8.0.</p>"},{"location":"api/byte_container_with_subtype/has_subtype/","title":"nlohmann::byte_container_with_subtype::has_subtype","text":"<pre><code>constexpr bool has_subtype() const noexcept;\n</code></pre> <p>Returns whether the value has a subtype.</p>"},{"location":"api/byte_container_with_subtype/has_subtype/#return-value","title":"Return value","text":"<p>whether the value has a subtype</p>"},{"location":"api/byte_container_with_subtype/has_subtype/#exception-safety","title":"Exception safety","text":"<p>No-throw guarantee: this function never throws exceptions.</p>"},{"location":"api/byte_container_with_subtype/has_subtype/#complexity","title":"Complexity","text":"<p>Constant.</p>"},{"location":"api/byte_container_with_subtype/has_subtype/#examples","title":"Examples","text":"Example <p>The example below demonstrates how <code>has_subtype</code> can check whether a subtype was set.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\n// define a byte container based on std::vector\nusing byte_container_with_subtype = nlohmann::byte_container_with_subtype&lt;std::vector&lt;std::uint8_t&gt;&gt;;\n\nint main()\n{\n    std::vector&lt;std::uint8_t&gt; bytes = {{0xca, 0xfe, 0xba, 0xbe}};\n\n    // create container\n    auto c1 = byte_container_with_subtype(bytes);\n\n    // create container with subtype\n    auto c2 = byte_container_with_subtype(bytes, 42);\n\n    std::cout &lt;&lt; std::boolalpha &lt;&lt; \"c1.has_subtype() = \" &lt;&lt; c1.has_subtype()\n              &lt;&lt; \"\\nc2.has_subtype() = \" &lt;&lt; c2.has_subtype() &lt;&lt; std::endl;\n}\n</code></pre> <p>Output:</p> <pre><code>c1.has_subtype() = false\nc2.has_subtype() = true\n</code></pre>"},{"location":"api/byte_container_with_subtype/has_subtype/#version-history","title":"Version history","text":"<p>Since version 3.8.0.</p>"},{"location":"api/byte_container_with_subtype/set_subtype/","title":"nlohmann::byte_container_with_subtype::set_subtype","text":"<pre><code>void set_subtype(subtype_type subtype) noexcept;\n</code></pre> <p>Sets the binary subtype of the value, also flags a binary JSON value as having a subtype, which has implications for serialization.</p>"},{"location":"api/byte_container_with_subtype/set_subtype/#parameters","title":"Parameters","text":"<code>subtype</code> (in) subtype to set"},{"location":"api/byte_container_with_subtype/set_subtype/#exception-safety","title":"Exception safety","text":"<p>No-throw guarantee: this function never throws exceptions.</p>"},{"location":"api/byte_container_with_subtype/set_subtype/#complexity","title":"Complexity","text":"<p>Constant.</p>"},{"location":"api/byte_container_with_subtype/set_subtype/#examples","title":"Examples","text":"Example <p>The example below demonstrates how a subtype can be set with <code>set_subtype</code>.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\n// define a byte container based on std::vector\nusing byte_container_with_subtype = nlohmann::byte_container_with_subtype&lt;std::vector&lt;std::uint8_t&gt;&gt;;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    std::vector&lt;std::uint8_t&gt; bytes = {{0xca, 0xfe, 0xba, 0xbe}};\n\n    // create container without subtype\n    auto c = byte_container_with_subtype(bytes);\n\n    std::cout &lt;&lt; \"before calling set_subtype(42): \" &lt;&lt; json(c) &lt;&lt; '\\n';\n\n    // set the subtype\n    c.set_subtype(42);\n\n    std::cout &lt;&lt; \"after calling set_subtype(42): \" &lt;&lt; json(c) &lt;&lt; '\\n';\n}\n</code></pre> <p>Output:</p> <pre><code>before calling set_subtype(42): {\"bytes\":[202,254,186,190],\"subtype\":null}\nafter calling set_subtype(42): {\"bytes\":[202,254,186,190],\"subtype\":42}\n</code></pre>"},{"location":"api/byte_container_with_subtype/set_subtype/#version-history","title":"Version history","text":"<p>Since version 3.8.0.</p>"},{"location":"api/byte_container_with_subtype/subtype/","title":"nlohmann::byte_container_with_subtype::subtype","text":"<pre><code>constexpr subtype_type subtype() const noexcept;\n</code></pre> <p>Returns the numerical subtype of the value if it has a subtype. If it does not have a subtype, this function will return <code>subtype_type(-1)</code> as a sentinel value.</p>"},{"location":"api/byte_container_with_subtype/subtype/#return-value","title":"Return value","text":"<p>the numerical subtype of the binary value, or <code>subtype_type(-1)</code> if no subtype is set</p>"},{"location":"api/byte_container_with_subtype/subtype/#exception-safety","title":"Exception safety","text":"<p>No-throw guarantee: this function never throws exceptions.</p>"},{"location":"api/byte_container_with_subtype/subtype/#complexity","title":"Complexity","text":"<p>Constant.</p>"},{"location":"api/byte_container_with_subtype/subtype/#examples","title":"Examples","text":"Example <p>The example below demonstrates how the subtype can be retrieved with <code>subtype</code>. Note how <code>subtype_type(-1)</code> is returned for container <code>c1</code>.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\n// define a byte container based on std::vector\nusing byte_container_with_subtype = nlohmann::byte_container_with_subtype&lt;std::vector&lt;std::uint8_t&gt;&gt;;\n\nint main()\n{\n    std::vector&lt;std::uint8_t&gt; bytes = {{0xca, 0xfe, 0xba, 0xbe}};\n\n    // create container\n    auto c1 = byte_container_with_subtype(bytes);\n\n    // create container with subtype\n    auto c2 = byte_container_with_subtype(bytes, 42);\n\n    std::cout &lt;&lt; \"c1.subtype() = \" &lt;&lt; c1.subtype()\n              &lt;&lt; \"\\nc2.subtype() = \" &lt;&lt; c2.subtype() &lt;&lt; std::endl;\n\n    // in case no subtype is set, return special value\n    assert(c1.subtype() == static_cast&lt;byte_container_with_subtype::subtype_type&gt;(-1));\n}\n</code></pre> <p>Output:</p> <pre><code>c1.subtype() = 18446744073709551615\nc2.subtype() = 42\n</code></pre>"},{"location":"api/byte_container_with_subtype/subtype/#version-history","title":"Version history","text":"<ul> <li>Added in version 3.8.0</li> <li>Fixed return value to properly return <code>subtype_type(-1)</code> as documented in version 3.10.0.</li> </ul>"},{"location":"api/json_pointer/","title":"nlohmann::json_pointer","text":"<pre><code>template&lt;typename RefStringType&gt;\nclass json_pointer;\n</code></pre> <p>A JSON pointer defines a string syntax for identifying a specific value within a JSON document. It can be used with functions <code>at</code> and <code>operator[]</code>. Furthermore, JSON pointers are the base for JSON patches.</p>"},{"location":"api/json_pointer/#template-parameters","title":"Template parameters","text":"<code>RefStringType</code> the string type used for the reference tokens making up the JSON pointer <p>Deprecation</p> <p>For backwards compatibility <code>RefStringType</code> may also be a specialization of <code>basic_json</code> in which case <code>string_t</code> will be deduced as <code>basic_json::string_t</code>. This feature is deprecated and may be removed in a future major version.</p>"},{"location":"api/json_pointer/#member-types","title":"Member types","text":"<ul> <li>string_t - the string type used for the reference tokens</li> </ul>"},{"location":"api/json_pointer/#member-functions","title":"Member functions","text":"<ul> <li>(constructor)</li> <li>to_string - return a string representation of the JSON pointer</li> <li>operator string_t - return a string representation of the JSON pointer</li> <li>operator== - compare: equal</li> <li>operator!= - compare: not equal</li> <li>operator/= - append to the end of the JSON pointer</li> <li>operator/ - create JSON Pointer by appending</li> <li>parent_pointer - returns the parent of this JSON pointer</li> <li>pop_back - remove the last reference token</li> <li>back - return last reference token</li> <li>push_back - append an unescaped token at the end of the pointer</li> <li>pop_front - remove the first reference token</li> <li>front - return first reference token</li> <li>push_front - append an unescaped token at the start of the pointer</li> <li>empty - return whether the pointer points to the root document</li> </ul>"},{"location":"api/json_pointer/#literals","title":"Literals","text":"<ul> <li>operator\"\"_json_pointer - user-defined string literal for JSON pointers</li> </ul>"},{"location":"api/json_pointer/#see-also","title":"See also","text":"<ul> <li>RFC 6901</li> </ul>"},{"location":"api/json_pointer/#version-history","title":"Version history","text":"<ul> <li>Added in version 2.0.0.</li> <li>Changed template parameter from <code>basic_json</code> to string type in version 3.11.0.</li> </ul>"},{"location":"api/json_pointer/back/","title":"nlohmann::json_pointer::back","text":"<pre><code>const string_t&amp; back() const;\n</code></pre> <p>Return the last reference token.</p>"},{"location":"api/json_pointer/back/#return-value","title":"Return value","text":"<p>Last reference token.</p>"},{"location":"api/json_pointer/back/#exceptions","title":"Exceptions","text":"<p>Throws out_of_range.405 if the JSON pointer has no parent.</p>"},{"location":"api/json_pointer/back/#complexity","title":"Complexity","text":"<p>Constant.</p>"},{"location":"api/json_pointer/back/#examples","title":"Examples","text":"Example <p>The example shows the usage of <code>back</code>.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // different JSON Pointers\n    json::json_pointer ptr1(\"/foo\");\n    json::json_pointer ptr2(\"/foo/0\");\n\n    // call empty()\n    std::cout &lt;&lt; \"last reference token of \\\"\" &lt;&lt; ptr1 &lt;&lt; \"\\\" is \\\"\" &lt;&lt; ptr1.back() &lt;&lt; \"\\\"\\n\"\n              &lt;&lt; \"last reference token of \\\"\" &lt;&lt; ptr2 &lt;&lt; \"\\\" is \\\"\" &lt;&lt; ptr2.back() &lt;&lt; \"\\\"\" &lt;&lt; std::endl;\n}\n</code></pre> <p>Output:</p> <pre><code>last reference token of \"/foo\" is \"foo\"\nlast reference token of \"/foo/0\" is \"0\"\n</code></pre>"},{"location":"api/json_pointer/back/#version-history","title":"Version history","text":"<ul> <li>Added in version 3.6.0.</li> <li>Changed return type to <code>string_t</code> in version 3.11.0.</li> </ul>"},{"location":"api/json_pointer/empty/","title":"nlohmann::json_pointer::empty","text":"<pre><code>bool empty() const noexcept;\n</code></pre> <p>Return whether the pointer points to the root document.</p>"},{"location":"api/json_pointer/empty/#return-value","title":"Return value","text":"<p><code>true</code> iff the JSON pointer points to the root document.</p>"},{"location":"api/json_pointer/empty/#exception-safety","title":"Exception safety","text":"<p>No-throw guarantee: this function never throws exceptions.</p>"},{"location":"api/json_pointer/empty/#complexity","title":"Complexity","text":"<p>Constant.</p>"},{"location":"api/json_pointer/empty/#examples","title":"Examples","text":"Example <p>The example shows the result of <code>empty</code> for different JSON Pointers.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // different JSON Pointers\n    json::json_pointer ptr0;\n    json::json_pointer ptr1(\"\");\n    json::json_pointer ptr2(\"/foo\");\n    json::json_pointer ptr3(\"/foo/0\");\n\n    // call empty()\n    std::cout &lt;&lt; std::boolalpha\n              &lt;&lt; \"\\\"\" &lt;&lt; ptr0 &lt;&lt; \"\\\": \" &lt;&lt; ptr0.empty() &lt;&lt; '\\n'\n              &lt;&lt; \"\\\"\" &lt;&lt; ptr1 &lt;&lt; \"\\\": \" &lt;&lt; ptr1.empty() &lt;&lt; '\\n'\n              &lt;&lt; \"\\\"\" &lt;&lt; ptr2 &lt;&lt; \"\\\": \" &lt;&lt; ptr2.empty() &lt;&lt; '\\n'\n              &lt;&lt; \"\\\"\" &lt;&lt; ptr3 &lt;&lt; \"\\\": \" &lt;&lt; ptr3.empty() &lt;&lt; std::endl;\n}\n</code></pre> <p>Output:</p> <pre><code>\"\": true\n\"\": true\n\"/foo\": false\n\"/foo/0\": false\n</code></pre>"},{"location":"api/json_pointer/empty/#version-history","title":"Version history","text":"<p>Added in version 3.6.0.</p>"},{"location":"api/json_pointer/front/","title":"nlohmann::json_pointer::front","text":"<pre><code>const string_t&amp; front() const;\n</code></pre> <p>Return the first reference token.</p>"},{"location":"api/json_pointer/front/#return-value","title":"Return value","text":"<p>First reference token.</p>"},{"location":"api/json_pointer/front/#exceptions","title":"Exceptions","text":"<p>Throws out_of_range.405 if the JSON pointer has no parent.</p>"},{"location":"api/json_pointer/front/#complexity","title":"Complexity","text":"<p>Constant.</p>"},{"location":"api/json_pointer/front/#examples","title":"Examples","text":"Example <p>The example shows the usage of <code>front</code>.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // different JSON Pointers\n    json::json_pointer ptr1(\"/foo\");\n    json::json_pointer ptr2(\"/foo/0\");\n\n    // call empty()\n    std::cout &lt;&lt; \"first reference token of \\\"\" &lt;&lt; ptr1 &lt;&lt; \"\\\" is \\\"\" &lt;&lt; ptr1.front() &lt;&lt; \"\\\"\\n\"\n              &lt;&lt; \"first reference token of \\\"\" &lt;&lt; ptr2 &lt;&lt; \"\\\" is \\\"\" &lt;&lt; ptr2.front() &lt;&lt; \"\\\"\" &lt;&lt; std::endl;\n}\n</code></pre> <p>Output:</p> <pre><code>first reference token of \"/foo\" is \"foo\"\nfirst reference token of \"/foo/0\" is \"foo\"\n</code></pre>"},{"location":"api/json_pointer/front/#version-history","title":"Version history","text":""},{"location":"api/json_pointer/json_pointer/","title":"nlohmann::json_pointer::json_pointer","text":"<pre><code>explicit json_pointer(const string_t&amp; s = \"\");\n</code></pre> <p>Create a JSON pointer according to the syntax described in Section 3 of RFC6901.</p>"},{"location":"api/json_pointer/json_pointer/#parameters","title":"Parameters","text":"<code>s</code> (in) string representing the JSON pointer; if omitted, the empty string is assumed which references the whole JSON value"},{"location":"api/json_pointer/json_pointer/#exceptions","title":"Exceptions","text":"<ul> <li>Throws parse_error.107 if the given JSON pointer <code>s</code> is    nonempty and does not begin with a slash (<code>/</code>); see example below.</li> <li>Throws parse_error.108 if a tilde (<code>~</code>) in the given JSON   pointer <code>s</code> is not followed by <code>0</code> (representing <code>~</code>) or <code>1</code> (representing <code>/</code>); see example below.</li> </ul>"},{"location":"api/json_pointer/json_pointer/#examples","title":"Examples","text":"Example <p>The example shows the construction several valid JSON pointers as well as the exceptional behavior.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // correct JSON pointers\n    json::json_pointer p1;\n    json::json_pointer p2(\"\");\n    json::json_pointer p3(\"/\");\n    json::json_pointer p4(\"//\");\n    json::json_pointer p5(\"/foo/bar\");\n    json::json_pointer p6(\"/foo/bar/-\");\n    json::json_pointer p7(\"/foo/~0\");\n    json::json_pointer p8(\"/foo/~1\");\n\n    // error: JSON pointer does not begin with a slash\n    try\n    {\n        json::json_pointer p9(\"foo\");\n    }\n    catch (const json::parse_error&amp; e)\n    {\n        std::cout &lt;&lt; e.what() &lt;&lt; '\\n';\n    }\n\n    // error: JSON pointer uses escape symbol ~ not followed by 0 or 1\n    try\n    {\n        json::json_pointer p10(\"/foo/~\");\n    }\n    catch (const json::parse_error&amp; e)\n    {\n        std::cout &lt;&lt; e.what() &lt;&lt; '\\n';\n    }\n\n    // error: JSON pointer uses escape symbol ~ not followed by 0 or 1\n    try\n    {\n        json::json_pointer p11(\"/foo/~3\");\n    }\n    catch (const json::parse_error&amp; e)\n    {\n        std::cout &lt;&lt; e.what() &lt;&lt; '\\n';\n    }\n}\n</code></pre> <p>Output:</p> <pre><code>[json.exception.parse_error.107] parse error at byte 1: JSON pointer must be empty or begin with '/' - was: 'foo'\n[json.exception.parse_error.108] parse error: escape character '~' must be followed with '0' or '1'\n[json.exception.parse_error.108] parse error: escape character '~' must be followed with '0' or '1'\n</code></pre>"},{"location":"api/json_pointer/json_pointer/#version-history","title":"Version history","text":"<ul> <li>Added in version 2.0.0.</li> <li>Changed type of <code>s</code> to <code>string_t</code> in version 3.11.0.</li> </ul>"},{"location":"api/json_pointer/operator_eq/","title":"nlohmann::json_pointer::operator==","text":"<pre><code>// until C++20\ntemplate&lt;typename RefStringTypeLhs, typename RefStringTypeRhs&gt;\nbool operator==(\n    const json_pointer&lt;RefStringTypeLhs&gt;&amp; lhs,\n    const json_pointer&lt;RefStringTypeRhs&gt;&amp; rhs) noexcept;            // (1)\n\ntemplate&lt;typename RefStringTypeLhs, typename StringType&gt;\nbool operator==(\n    const json_pointer&lt;RefStringTypeLhs&gt;&amp; lhs,\n    const StringType&amp; rhs);                                         // (2)\n\ntemplate&lt;typename RefStringTypeRhs, typename StringType&gt;\nbool operator==(\n    const StringType&amp; lhs,\n    const json_pointer&lt;RefStringTypeRhs&gt;&amp; rhs);                     // (2)\n\n// since C++20\nclass json_pointer {\n    template&lt;typename RefStringTypeRhs&gt;\n    bool operator==(\n        const json_pointer&lt;RefStringTypeRhs&gt;&amp; rhs) const noexcept;  // (1)\n\n    bool operator==(const string_t&amp; rhs) const;                     // (2)\n};\n</code></pre> <ol> <li> <p>Compares two JSON pointers for equality by comparing their reference tokens.</p> </li> <li> <p>Compares a JSON pointer and a string or a string and a JSON pointer for equality by converting the string to a JSON    pointer and comparing the JSON pointers according to 1.</p> </li> </ol>"},{"location":"api/json_pointer/operator_eq/#template-parameters","title":"Template parameters","text":"<code>RefStringTypeLhs</code>, <code>RefStringTypeRhs</code> the string type of the left-hand side or right-hand side JSON pointer, respectively <code>StringType</code> the string type derived from the <code>json_pointer</code> operand (<code>json_pointer::string_t</code>)"},{"location":"api/json_pointer/operator_eq/#parameters","title":"Parameters","text":"<code>lhs</code> (in) first value to consider <code>rhs</code> (in) second value to consider"},{"location":"api/json_pointer/operator_eq/#return-value","title":"Return value","text":"<p>whether the values <code>lhs</code>/<code>*this</code> and <code>rhs</code> are equal</p>"},{"location":"api/json_pointer/operator_eq/#exception-safety","title":"Exception safety","text":"<ol> <li>No-throw guarantee: this function never throws exceptions.</li> <li>Strong exception safety: if an exception occurs, the original value stays intact.</li> </ol>"},{"location":"api/json_pointer/operator_eq/#exceptions","title":"Exceptions","text":"<ol> <li>(none)</li> <li>The function can throw the following exceptions:</li> <li>Throws parse_error.107 if the given JSON pointer <code>s</code> is      nonempty and does not begin with a slash (<code>/</code>); see example below.</li> <li>Throws parse_error.108 if a tilde (<code>~</code>) in the given JSON      pointer <code>s</code> is not followed by <code>0</code> (representing <code>~</code>) or <code>1</code> (representing <code>/</code>); see example below.</li> </ol>"},{"location":"api/json_pointer/operator_eq/#complexity","title":"Complexity","text":"<p>Constant if <code>lhs</code> and <code>rhs</code> differ in the number of reference tokens, otherwise linear in the number of reference tokens.</p>"},{"location":"api/json_pointer/operator_eq/#notes","title":"Notes","text":"<p>Deprecation</p> <p>Overload 2 is deprecated and will be removed in a future major version release.</p>"},{"location":"api/json_pointer/operator_eq/#examples","title":"Examples","text":"Example: (1) Comparing JSON pointers <p>The example demonstrates comparing JSON pointers.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // different JSON pointers\n    json::json_pointer ptr0;\n    json::json_pointer ptr1(\"\");\n    json::json_pointer ptr2(\"/foo\");\n\n    // compare JSON pointers\n    std::cout &lt;&lt; std::boolalpha\n              &lt;&lt; \"\\\"\" &lt;&lt; ptr0 &lt;&lt; \"\\\" == \\\"\" &lt;&lt; ptr0 &lt;&lt; \"\\\": \" &lt;&lt; (ptr0 == ptr0) &lt;&lt; '\\n'\n              &lt;&lt; \"\\\"\" &lt;&lt; ptr0 &lt;&lt; \"\\\" == \\\"\" &lt;&lt; ptr1 &lt;&lt; \"\\\": \" &lt;&lt; (ptr0 == ptr1) &lt;&lt; '\\n'\n              &lt;&lt; \"\\\"\" &lt;&lt; ptr1 &lt;&lt; \"\\\" == \\\"\" &lt;&lt; ptr2 &lt;&lt; \"\\\": \" &lt;&lt; (ptr1 == ptr2) &lt;&lt; '\\n'\n              &lt;&lt; \"\\\"\" &lt;&lt; ptr2 &lt;&lt; \"\\\" == \\\"\" &lt;&lt; ptr2 &lt;&lt; \"\\\": \" &lt;&lt; (ptr2 == ptr2) &lt;&lt; std::endl;\n}\n</code></pre> <p>Output:</p> <pre><code>\"\" == \"\": true\n\"\" == \"\": true\n\"\" == \"/foo\": false\n\"/foo\" == \"/foo\": true\n</code></pre> Example: (2) Comparing JSON pointers and strings <p>The example demonstrates comparing JSON pointers and strings, and when doing so may raise an exception.</p> <pre><code>#include &lt;exception&gt;\n#include &lt;iostream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // different JSON pointers\n    json::json_pointer ptr0;\n    json::json_pointer ptr1(\"\");\n    json::json_pointer ptr2(\"/foo\");\n\n    // different strings\n    std::string str0(\"\");\n    std::string str1(\"/foo\");\n    std::string str2(\"bar\");\n\n    // compare JSON pointers and strings\n    std::cout &lt;&lt; std::boolalpha\n              &lt;&lt; \"\\\"\" &lt;&lt; ptr0 &lt;&lt; \"\\\" == \\\"\" &lt;&lt; str0 &lt;&lt; \"\\\": \" &lt;&lt; (ptr0 == str0) &lt;&lt; '\\n'\n              &lt;&lt; \"\\\"\" &lt;&lt; str0 &lt;&lt; \"\\\" == \\\"\" &lt;&lt; ptr1 &lt;&lt; \"\\\": \" &lt;&lt; (str0 == ptr1) &lt;&lt; '\\n'\n              &lt;&lt; \"\\\"\" &lt;&lt; ptr2 &lt;&lt; \"\\\" == \\\"\" &lt;&lt; str1 &lt;&lt; \"\\\": \" &lt;&lt; (ptr2 == str1) &lt;&lt; std::endl;\n\n    try\n    {\n        std::cout &lt;&lt; \"\\\"\" &lt;&lt; str2 &lt;&lt; \"\\\" == \\\"\" &lt;&lt; ptr2 &lt;&lt; \"\\\": \" &lt;&lt; (str2 == ptr2) &lt;&lt; std::endl;\n    }\n    catch (const json::parse_error&amp; ex)\n    {\n        std::cout &lt;&lt; ex.what() &lt;&lt; std::endl;\n    }\n}\n</code></pre> <p>Output:</p> <pre><code>\"\" == \"\": true\n\"\" == \"\": true\n\"/foo\" == \"/foo\": true\n\"bar\" == \"/foo\": [json.exception.parse_error.107] parse error at byte 1: JSON pointer must be empty or begin with '/' - was: 'bar'\n</code></pre>"},{"location":"api/json_pointer/operator_eq/#version-history","title":"Version history","text":"<ol> <li>Added in version 2.1.0. Added C++20 member functions in version 3.11.2.</li> <li>Added for backward compatibility and deprecated in version 3.11.2.</li> </ol>"},{"location":"api/json_pointer/operator_ne/","title":"nlohmann::json_pointer::operator!=","text":"<pre><code>// until C++20\ntemplate&lt;typename RefStringTypeLhs, typename RefStringTypeRhs&gt;\nbool operator!=(\n    const json_pointer&lt;RefStringTypeLhs&gt;&amp; lhs,\n    const json_pointer&lt;RefStringTypeRhs&gt;&amp; rhs) noexcept;  // (1)\n\ntemplate&lt;typename RefStringTypeLhs, typename StringType&gt;\nbool operator!=(\n    const json_pointer&lt;RefStringTypeLhs&gt;&amp; lhs,\n    const StringType&amp; rhs);                               // (2)\n\ntemplate&lt;typename RefStringTypeRhs, typename StringType&gt;\nbool operator!=(\n    const StringType&amp; lhs,\n    const json_pointer&lt;RefStringTypeRhs&gt;&amp; rhs);           // (2)\n</code></pre> <ol> <li> <p>Compares two JSON pointers for inequality by comparing their reference tokens.</p> </li> <li> <p>Compares a JSON pointer and a string or a string and a JSON pointer for inequality by converting the string to a    JSON pointer and comparing the JSON pointers according to 1.</p> </li> </ol>"},{"location":"api/json_pointer/operator_ne/#template-parameters","title":"Template parameters","text":"<code>RefStringTypeLhs</code>, <code>RefStringTypeRhs</code> the string type of the left-hand side or right-hand side JSON pointer, respectively <code>StringType</code> the string type derived from the <code>json_pointer</code> operand (<code>json_pointer::string_t</code>)"},{"location":"api/json_pointer/operator_ne/#parameters","title":"Parameters","text":"<code>lhs</code> (in) first value to consider <code>rhs</code> (in) second value to consider"},{"location":"api/json_pointer/operator_ne/#return-value","title":"Return value","text":"<p>whether the values <code>lhs</code>/<code>*this</code> and <code>rhs</code> are not equal</p>"},{"location":"api/json_pointer/operator_ne/#exception-safety","title":"Exception safety","text":"<ol> <li>No-throw guarantee: this function never throws exceptions.</li> <li>Strong exception safety: if an exception occurs, the original value stays intact.</li> </ol>"},{"location":"api/json_pointer/operator_ne/#exceptions","title":"Exceptions","text":"<ol> <li>(none)</li> <li>The function can throw the following exceptions:</li> <li>Throws parse_error.107 if the given JSON pointer <code>s</code> is      nonempty and does not begin with a slash (<code>/</code>); see example below.</li> <li>Throws parse_error.108 if a tilde (<code>~</code>) in the given JSON      pointer <code>s</code> is not followed by <code>0</code> (representing <code>~</code>) or <code>1</code> (representing <code>/</code>); see example below.</li> </ol>"},{"location":"api/json_pointer/operator_ne/#complexity","title":"Complexity","text":"<p>Constant if <code>lhs</code> and <code>rhs</code> differ in the number of reference tokens, otherwise linear in the number of reference tokens.</p>"},{"location":"api/json_pointer/operator_ne/#notes","title":"Notes","text":"<p>Operator overload resolution</p> <p>Since C++20 overload resolution will consider the rewritten candidate generated from <code>operator==</code>.</p> <p>Deprecation</p> <p>Overload 2 is deprecated and will be removed in a future major version release.</p>"},{"location":"api/json_pointer/operator_ne/#examples","title":"Examples","text":"Example: (1) Comparing JSON pointers <p>The example demonstrates comparing JSON pointers.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // different JSON pointers\n    json::json_pointer ptr0;\n    json::json_pointer ptr1(\"\");\n    json::json_pointer ptr2(\"/foo\");\n\n    // compare JSON pointers\n    std::cout &lt;&lt; std::boolalpha\n              &lt;&lt; \"\\\"\" &lt;&lt; ptr0 &lt;&lt; \"\\\" != \\\"\" &lt;&lt; ptr0 &lt;&lt; \"\\\": \" &lt;&lt; (ptr0 != ptr0) &lt;&lt; '\\n'\n              &lt;&lt; \"\\\"\" &lt;&lt; ptr0 &lt;&lt; \"\\\" != \\\"\" &lt;&lt; ptr1 &lt;&lt; \"\\\": \" &lt;&lt; (ptr0 != ptr1) &lt;&lt; '\\n'\n              &lt;&lt; \"\\\"\" &lt;&lt; ptr1 &lt;&lt; \"\\\" != \\\"\" &lt;&lt; ptr2 &lt;&lt; \"\\\": \" &lt;&lt; (ptr1 != ptr2) &lt;&lt; '\\n'\n              &lt;&lt; \"\\\"\" &lt;&lt; ptr2 &lt;&lt; \"\\\" != \\\"\" &lt;&lt; ptr2 &lt;&lt; \"\\\": \" &lt;&lt; (ptr2 != ptr2) &lt;&lt; std::endl;\n}\n</code></pre> <p>Output:</p> <pre><code>\"\" != \"\": false\n\"\" != \"\": false\n\"\" != \"/foo\": true\n\"/foo\" != \"/foo\": false\n</code></pre> Example: (2) Comparing JSON pointers and strings <p>The example demonstrates comparing JSON pointers and strings, and when doing so may raise an exception.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // different JSON pointers\n    json::json_pointer ptr0;\n    json::json_pointer ptr1(\"\");\n    json::json_pointer ptr2(\"/foo\");\n\n    // different strings\n    std::string str0(\"\");\n    std::string str1(\"/foo\");\n    std::string str2(\"bar\");\n\n    // compare JSON pointers and strings\n    std::cout &lt;&lt; std::boolalpha\n              &lt;&lt; \"\\\"\" &lt;&lt; ptr0 &lt;&lt; \"\\\" != \\\"\" &lt;&lt; str0 &lt;&lt; \"\\\": \" &lt;&lt; (ptr0 != str0) &lt;&lt; '\\n'\n              &lt;&lt; \"\\\"\" &lt;&lt; str0 &lt;&lt; \"\\\" != \\\"\" &lt;&lt; ptr1 &lt;&lt; \"\\\": \" &lt;&lt; (str0 != ptr1) &lt;&lt; '\\n'\n              &lt;&lt; \"\\\"\" &lt;&lt; ptr2 &lt;&lt; \"\\\" != \\\"\" &lt;&lt; str1 &lt;&lt; \"\\\": \" &lt;&lt; (ptr2 != str1) &lt;&lt; std::endl;\n\n    try\n    {\n        std::cout &lt;&lt; \"\\\"\" &lt;&lt; str2 &lt;&lt; \"\\\" != \\\"\" &lt;&lt; ptr2 &lt;&lt; \"\\\": \" &lt;&lt; (str2 != ptr2) &lt;&lt; std::endl;\n    }\n    catch (const json::parse_error&amp; ex)\n    {\n        std::cout &lt;&lt; ex.what() &lt;&lt; std::endl;\n    }\n}\n</code></pre> <p>Output:</p> <pre><code>\"\" != \"\": false\n\"\" != \"\": false\n\"/foo\" != \"/foo\": false\n\"bar\" != \"/foo\": [json.exception.parse_error.107] parse error at byte 1: JSON pointer must be empty or begin with '/' - was: 'bar'\n</code></pre>"},{"location":"api/json_pointer/operator_ne/#version-history","title":"Version history","text":"<ol> <li>Added in version 2.1.0.</li> <li>Added for backward compatibility and deprecated in version 3.11.2.</li> </ol>"},{"location":"api/json_pointer/operator_slash/","title":"nlohmann::json_pointer::operator/","text":"<pre><code>// (1)\njson_pointer operator/(const json_pointer&amp; lhs, const json_pointer&amp; rhs);\n\n// (2)\njson_pointer operator/(const json_pointer&amp; lhs, string_t token);\n\n// (3)\njson_pointer operator/(const json_pointer&amp; lhs, std::size_t array_idx);\n</code></pre> <ol> <li>create a new JSON pointer by appending the right JSON pointer at the end of the left JSON pointer</li> <li>create a new JSON pointer by appending the unescaped token at the end of the JSON pointer</li> <li>create a new JSON pointer by appending the array-index-token at the end of the JSON pointer</li> </ol>"},{"location":"api/json_pointer/operator_slash/#parameters","title":"Parameters","text":"<code>lhs</code> (in) JSON pointer <code>rhs</code> (in) JSON pointer to append <code>token</code> (in) reference token to append <code>array_idx</code> (in) array index to append"},{"location":"api/json_pointer/operator_slash/#return-value","title":"Return value","text":"<ol> <li>a new JSON pointer with <code>rhs</code> appended to <code>lhs</code></li> <li>a new JSON pointer with unescaped <code>token</code> appended to <code>lhs</code></li> <li>a new JSON pointer with <code>array_idx</code> appended to <code>lhs</code></li> </ol>"},{"location":"api/json_pointer/operator_slash/#complexity","title":"Complexity","text":"<ol> <li>Linear in the length of <code>lhs</code> and <code>rhs</code>.</li> <li>Linear in the length of <code>lhs</code>.</li> <li>Linear in the length of <code>lhs</code>.</li> </ol>"},{"location":"api/json_pointer/operator_slash/#examples","title":"Examples","text":"Example <p>The example shows the usage of <code>operator/</code>.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create a JSON pointer\n    json::json_pointer ptr(\"/foo\");\n\n    // append a JSON Pointer\n    std::cout &lt;&lt; \"\\\"\" &lt;&lt; ptr / json::json_pointer(\"/bar/baz\") &lt;&lt; \"\\\"\\n\";\n\n    // append a string\n    std::cout &lt;&lt; \"\\\"\" &lt;&lt; ptr / \"fob\" &lt;&lt; \"\\\"\\n\";\n\n    // append an array index\n    std::cout &lt;&lt; \"\\\"\" &lt;&lt; ptr / 42 &lt;&lt; \"\\\"\" &lt;&lt; std::endl;\n}\n</code></pre> <p>Output:</p> <pre><code>\"/foo/bar/baz\"\n\"/foo/fob\"\n\"/foo/42\"\n</code></pre>"},{"location":"api/json_pointer/operator_slash/#version-history","title":"Version history","text":"<ol> <li>Added in version 3.6.0.</li> <li>Added in version 3.6.0. Changed type of <code>token</code> to <code>string_t</code> in version 3.11.0.</li> <li>Added in version 3.6.0.</li> </ol>"},{"location":"api/json_pointer/operator_slasheq/","title":"nlohmann::json_pointer::operator/=","text":"<pre><code>// (1)\njson_pointer&amp; operator/=(const json_pointer&amp; ptr);\n\n// (2)\njson_pointer&amp; operator/=(string_t token);\n\n// (3)\njson_pointer&amp; operator/=(std::size_t array_idx)\n</code></pre> <ol> <li>append another JSON pointer at the end of this JSON pointer</li> <li>append an unescaped reference token at the end of this JSON pointer</li> <li>append an array index at the end of this JSON pointer</li> </ol>"},{"location":"api/json_pointer/operator_slasheq/#parameters","title":"Parameters","text":"<code>ptr</code> (in) JSON pointer to append <code>token</code> (in) reference token to append <code>array_idx</code> (in) array index to append"},{"location":"api/json_pointer/operator_slasheq/#return-value","title":"Return value","text":"<ol> <li>JSON pointer with <code>ptr</code> appended</li> <li>JSON pointer with <code>token</code> appended without escaping <code>token</code></li> <li>JSON pointer with <code>array_idx</code> appended</li> </ol>"},{"location":"api/json_pointer/operator_slasheq/#complexity","title":"Complexity","text":"<ol> <li>Linear in the length of <code>ptr</code>.</li> <li>Amortized constant.</li> <li>Amortized constant.</li> </ol>"},{"location":"api/json_pointer/operator_slasheq/#examples","title":"Examples","text":"Example <p>The example shows the usage of <code>operator/=</code>.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create a JSON pointer\n    json::json_pointer ptr(\"/foo\");\n    std::cout &lt;&lt; \"\\\"\" &lt;&lt; ptr &lt;&lt; \"\\\"\\n\";\n\n    // append a JSON Pointer\n    ptr /= json::json_pointer(\"/bar/baz\");\n    std::cout &lt;&lt; \"\\\"\" &lt;&lt; ptr &lt;&lt; \"\\\"\\n\";\n\n    // append a string\n    ptr /= \"fob\";\n    std::cout &lt;&lt; \"\\\"\" &lt;&lt; ptr &lt;&lt; \"\\\"\\n\";\n\n    // append an array index\n    ptr /= 42;\n    std::cout &lt;&lt; \"\\\"\" &lt;&lt; ptr &lt;&lt; \"\\\"\" &lt;&lt; std::endl;\n}\n</code></pre> <p>Output:</p> <pre><code>\"/foo\"\n\"/foo/bar/baz\"\n\"/foo/bar/baz/fob\"\n\"/foo/bar/baz/fob/42\"\n</code></pre>"},{"location":"api/json_pointer/operator_slasheq/#version-history","title":"Version history","text":"<ol> <li>Added in version 3.6.0.</li> <li>Added in version 3.6.0. Changed type of <code>token</code> to <code>string_t</code> in version 3.11.0.</li> <li>Added in version 3.6.0.</li> </ol>"},{"location":"api/json_pointer/operator_string_t/","title":"nlohmann::json_pointer::operator string_t","text":"<pre><code>operator string_t() const\n</code></pre> <p>Return a string representation of the JSON pointer.</p>"},{"location":"api/json_pointer/operator_string_t/#return-value","title":"Return value","text":"<p>A string representation of the JSON pointer</p>"},{"location":"api/json_pointer/operator_string_t/#possible-implementation","title":"Possible implementation","text":"<pre><code>operator string_t() const\n{\n    return to_string();\n}\n</code></pre>"},{"location":"api/json_pointer/operator_string_t/#notes","title":"Notes","text":"<p>Deprecation</p> <p>This function is deprecated in favor of <code>to_string</code> and will be removed in a future major version release.</p>"},{"location":"api/json_pointer/operator_string_t/#examples","title":"Examples","text":"Example <p>The example shows how JSON Pointers can be implicitly converted to strings.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // different JSON Pointers\n    json::json_pointer ptr1(\"/foo/0\");\n    json::json_pointer ptr2(\"/a~1b\");\n\n    // implicit conversion to string\n    std::string s;\n    s += ptr1;\n    s += \"\\n\";\n    s += ptr2;\n\n    std::cout &lt;&lt; s &lt;&lt; std::endl;\n}\n</code></pre> <p>Output:</p> <pre><code>/foo/0\n/a~1b\n</code></pre>"},{"location":"api/json_pointer/operator_string_t/#see-also","title":"See also","text":"<ul> <li>string_t- type for strings</li> </ul>"},{"location":"api/json_pointer/operator_string_t/#version-history","title":"Version history","text":"<ul> <li>Since version 2.0.0.</li> <li>Changed type to <code>string_t</code> and deprecated in version 3.11.0.</li> </ul>"},{"location":"api/json_pointer/parent_pointer/","title":"nlohmann::json_pointer::parent_pointer","text":"<pre><code>json_pointer parent_pointer() const;\n</code></pre> <p>Returns the parent of this JSON pointer.</p>"},{"location":"api/json_pointer/parent_pointer/#return-value","title":"Return value","text":"<p>Parent of this JSON pointer; in case this JSON pointer is the root, the root itself is returned.</p>"},{"location":"api/json_pointer/parent_pointer/#complexity","title":"Complexity","text":"<p>Linear in the length of the JSON pointer.</p>"},{"location":"api/json_pointer/parent_pointer/#examples","title":"Examples","text":"Example <p>The example shows the result of <code>parent_pointer</code> for different JSON Pointers.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // different JSON Pointers\n    json::json_pointer ptr1(\"\");\n    json::json_pointer ptr2(\"/foo\");\n    json::json_pointer ptr3(\"/foo/0\");\n\n    // call parent_pointer()\n    std::cout &lt;&lt; std::boolalpha\n              &lt;&lt; \"parent of \\\"\" &lt;&lt; ptr1 &lt;&lt; \"\\\" is \\\"\" &lt;&lt; ptr1.parent_pointer() &lt;&lt; \"\\\"\\n\"\n              &lt;&lt; \"parent of \\\"\" &lt;&lt; ptr2 &lt;&lt; \"\\\" is \\\"\" &lt;&lt; ptr2.parent_pointer() &lt;&lt; \"\\\"\\n\"\n              &lt;&lt; \"parent of \\\"\" &lt;&lt; ptr3 &lt;&lt; \"\\\" is \\\"\" &lt;&lt; ptr3.parent_pointer() &lt;&lt; \"\\\"\" &lt;&lt; std::endl;\n}\n</code></pre> <p>Output:</p> <pre><code>parent of \"\" is \"\"\nparent of \"/foo\" is \"\"\nparent of \"/foo/0\" is \"/foo\"\n</code></pre>"},{"location":"api/json_pointer/parent_pointer/#version-history","title":"Version history","text":"<p>Added in version 3.6.0.</p>"},{"location":"api/json_pointer/pop_back/","title":"nlohmann::json_pointer::pop_back","text":"<pre><code>void pop_back();\n</code></pre> <p>Remove the last reference token.</p>"},{"location":"api/json_pointer/pop_back/#exceptions","title":"Exceptions","text":"<p>Throws out_of_range.405 if the JSON pointer has no parent.</p>"},{"location":"api/json_pointer/pop_back/#complexity","title":"Complexity","text":"<p>Constant.</p>"},{"location":"api/json_pointer/pop_back/#examples","title":"Examples","text":"Example <p>The example shows the usage of <code>pop_back</code>.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create empty JSON Pointer\n    json::json_pointer ptr(\"/foo/bar/baz\");\n    std::cout &lt;&lt; \"\\\"\" &lt;&lt; ptr &lt;&lt; \"\\\"\\n\";\n\n    // call pop_back()\n    ptr.pop_back();\n    std::cout &lt;&lt; \"\\\"\" &lt;&lt; ptr &lt;&lt; \"\\\"\\n\";\n\n    ptr.pop_back();\n    std::cout &lt;&lt; \"\\\"\" &lt;&lt; ptr &lt;&lt; \"\\\"\\n\";\n\n    ptr.pop_back();\n    std::cout &lt;&lt; \"\\\"\" &lt;&lt; ptr &lt;&lt; \"\\\"\\n\";\n}\n</code></pre> <p>Output:</p> <pre><code>\"/foo/bar/baz\"\n\"/foo/bar\"\n\"/foo\"\n\"\"\n</code></pre>"},{"location":"api/json_pointer/pop_back/#version-history","title":"Version history","text":"<p>Added in version 3.6.0.</p>"},{"location":"api/json_pointer/pop_front/","title":"nlohmann::json_pointer::pop_front","text":"<pre><code>void pop_front();\n</code></pre> <p>Remove the first reference token.</p>"},{"location":"api/json_pointer/pop_front/#exceptions","title":"Exceptions","text":"<p>Throws out_of_range.405 if the JSON pointer has no parent.</p>"},{"location":"api/json_pointer/pop_front/#complexity","title":"Complexity","text":"<p>Linear in the number of reference tokens in the <code>json_pointer</code>.</p>"},{"location":"api/json_pointer/pop_front/#examples","title":"Examples","text":"Example <p>The example shows the usage of <code>pop_front</code>.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create empty JSON Pointer\n    json::json_pointer ptr(\"/foo/bar/baz\");\n    std::cout &lt;&lt; \"\\\"\" &lt;&lt; ptr &lt;&lt; \"\\\"\\n\";\n\n    // call pop_front()\n    ptr.pop_front();\n    std::cout &lt;&lt; \"\\\"\" &lt;&lt; ptr &lt;&lt; \"\\\"\\n\";\n\n    ptr.pop_front();\n    std::cout &lt;&lt; \"\\\"\" &lt;&lt; ptr &lt;&lt; \"\\\"\\n\";\n\n    ptr.pop_front();\n    std::cout &lt;&lt; \"\\\"\" &lt;&lt; ptr &lt;&lt; \"\\\"\\n\";\n}\n</code></pre> <p>Output:</p> <pre><code>\"/foo/bar/baz\"\n\"/bar/baz\"\n\"/baz\"\n\"\"\n</code></pre>"},{"location":"api/json_pointer/pop_front/#version-history","title":"Version history","text":""},{"location":"api/json_pointer/push_back/","title":"nlohmann::json_pointer::push_back","text":"<pre><code>void push_back(const string_t&amp; token);\n\nvoid push_back(string_t&amp;&amp; token);\n</code></pre> <p>Append an unescaped token at the end of the reference pointer.</p>"},{"location":"api/json_pointer/push_back/#parameters","title":"Parameters","text":"<code>token</code> (in) token to add"},{"location":"api/json_pointer/push_back/#complexity","title":"Complexity","text":"<p>Amortized constant.</p>"},{"location":"api/json_pointer/push_back/#examples","title":"Examples","text":"Example <p>The example shows the result of <code>push_back</code> for different JSON Pointers.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create empty JSON Pointer\n    json::json_pointer ptr;\n    std::cout &lt;&lt; \"\\\"\" &lt;&lt; ptr &lt;&lt; \"\\\"\\n\";\n\n    // call push_back()\n    ptr.push_back(\"foo\");\n    std::cout &lt;&lt; \"\\\"\" &lt;&lt; ptr &lt;&lt; \"\\\"\\n\";\n\n    ptr.push_back(\"0\");\n    std::cout &lt;&lt; \"\\\"\" &lt;&lt; ptr &lt;&lt; \"\\\"\\n\";\n\n    ptr.push_back(\"bar\");\n    std::cout &lt;&lt; \"\\\"\" &lt;&lt; ptr &lt;&lt; \"\\\"\\n\";\n}\n</code></pre> <p>Output:</p> <pre><code>\"\"\n\"/foo\"\n\"/foo/0\"\n\"/foo/0/bar\"\n</code></pre>"},{"location":"api/json_pointer/push_back/#version-history","title":"Version history","text":"<ul> <li>Added in version 3.6.0.</li> <li>Changed type of <code>token</code> to <code>string_t</code> in version 3.11.0.</li> </ul>"},{"location":"api/json_pointer/push_front/","title":"nlohmann::json_pointer::push_front","text":"<pre><code>void push_front(const string_t&amp; token);\n\nvoid push_front(string_t&amp;&amp; token);\n</code></pre> <p>Append an unescaped token at the start of the reference pointer.</p>"},{"location":"api/json_pointer/push_front/#parameters","title":"Parameters","text":"<code>token</code> (in) token to add"},{"location":"api/json_pointer/push_front/#complexity","title":"Complexity","text":"<p>Linear in the number of reference tokens in the <code>json_pointer</code>.</p>"},{"location":"api/json_pointer/push_front/#examples","title":"Examples","text":"Example <p>The example shows the result of <code>push_front</code> for different JSON Pointers.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create empty JSON Pointer\n    json::json_pointer ptr;\n    std::cout &lt;&lt; \"\\\"\" &lt;&lt; ptr &lt;&lt; \"\\\"\\n\";\n\n    // call push_front()\n    ptr.push_front(\"foo\");\n    std::cout &lt;&lt; \"\\\"\" &lt;&lt; ptr &lt;&lt; \"\\\"\\n\";\n\n    ptr.push_front(\"0\");\n    std::cout &lt;&lt; \"\\\"\" &lt;&lt; ptr &lt;&lt; \"\\\"\\n\";\n\n    ptr.push_front(\"bar\");\n    std::cout &lt;&lt; \"\\\"\" &lt;&lt; ptr &lt;&lt; \"\\\"\\n\";\n}\n</code></pre> <p>Output:</p> <pre><code>\"\"\n\"/foo\"\n\"/0/foo\"\n\"/bar/0/foo\"\n</code></pre>"},{"location":"api/json_pointer/push_front/#version-history","title":"Version history","text":""},{"location":"api/json_pointer/string_t/","title":"nlohmann::json_pointer::string_t","text":"<pre><code>using string_t = RefStringType;\n</code></pre> <p>The string type used for the reference tokens making up the JSON pointer.</p> <p>See <code>basic_json::string_t</code> for more information.</p>"},{"location":"api/json_pointer/string_t/#examples","title":"Examples","text":"Example <p>The example shows the type <code>string_t</code> and its relation to <code>basic_json::string_t</code>.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    json::json_pointer::string_t s = \"This is a string.\";\n\n    std::cout &lt;&lt; s &lt;&lt; std::endl;\n\n    std::cout &lt;&lt; std::boolalpha &lt;&lt; std::is_same&lt;json::json_pointer::string_t, json::string_t&gt;::value &lt;&lt; std::endl;\n}\n</code></pre> <p>Output:</p> <pre><code>This is a string.\ntrue\n</code></pre>"},{"location":"api/json_pointer/string_t/#version-history","title":"Version history","text":"<ul> <li>Added in version 3.11.0.</li> </ul>"},{"location":"api/json_pointer/to_string/","title":"nlohmann::json_pointer::to_string","text":"<pre><code>string_t to_string() const;\n</code></pre> <p>Return a string representation of the JSON pointer.</p>"},{"location":"api/json_pointer/to_string/#return-value","title":"Return value","text":"<p>A string representation of the JSON pointer</p>"},{"location":"api/json_pointer/to_string/#notes","title":"Notes","text":"<p>For each JSON pointer <code>ptr</code>, it holds:</p> <pre><code>ptr == json_pointer(ptr.to_string());\n</code></pre>"},{"location":"api/json_pointer/to_string/#examples","title":"Examples","text":"Example <p>The example shows the result of <code>to_string</code>.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // different JSON Pointers\n    json::json_pointer ptr1(\"\");\n    json::json_pointer ptr2(\"/foo\");\n    json::json_pointer ptr3(\"/foo/0\");\n    json::json_pointer ptr4(\"/\");\n    json::json_pointer ptr5(\"/a~1b\");\n    json::json_pointer ptr6(\"/c%d\");\n    json::json_pointer ptr7(\"/e^f\");\n    json::json_pointer ptr8(\"/g|h\");\n    json::json_pointer ptr9(\"/i\\\\j\");\n    json::json_pointer ptr10(\"/k\\\"l\");\n    json::json_pointer ptr11(\"/ \");\n    json::json_pointer ptr12(\"/m~0n\");\n\n    std::cout &lt;&lt; \"\\\"\" &lt;&lt; ptr1.to_string() &lt;&lt; \"\\\"\\n\"\n              &lt;&lt; \"\\\"\" &lt;&lt; ptr2.to_string() &lt;&lt; \"\\\"\\n\"\n              &lt;&lt; \"\\\"\" &lt;&lt; ptr3.to_string() &lt;&lt; \"\\\"\\n\"\n              &lt;&lt; \"\\\"\" &lt;&lt; ptr4.to_string() &lt;&lt; \"\\\"\\n\"\n              &lt;&lt; \"\\\"\" &lt;&lt; ptr5.to_string() &lt;&lt; \"\\\"\\n\"\n              &lt;&lt; \"\\\"\" &lt;&lt; ptr6.to_string() &lt;&lt; \"\\\"\\n\"\n              &lt;&lt; \"\\\"\" &lt;&lt; ptr7.to_string() &lt;&lt; \"\\\"\\n\"\n              &lt;&lt; \"\\\"\" &lt;&lt; ptr8.to_string() &lt;&lt; \"\\\"\\n\"\n              &lt;&lt; \"\\\"\" &lt;&lt; ptr9.to_string() &lt;&lt; \"\\\"\\n\"\n              &lt;&lt; \"\\\"\" &lt;&lt; ptr10.to_string() &lt;&lt; \"\\\"\\n\"\n              &lt;&lt; \"\\\"\" &lt;&lt; ptr11.to_string() &lt;&lt; \"\\\"\\n\"\n              &lt;&lt; \"\\\"\" &lt;&lt; ptr12.to_string() &lt;&lt; \"\\\"\" &lt;&lt; std::endl;\n}\n</code></pre> <p>Output:</p> <pre><code>\"\"\n\"/foo\"\n\"/foo/0\"\n\"/\"\n\"/a~1b\"\n\"/c%d\"\n\"/e^f\"\n\"/g|h\"\n\"/i\\j\"\n\"/k\"l\"\n\"/ \"\n\"/m~0n\"\n</code></pre>"},{"location":"api/json_pointer/to_string/#version-history","title":"Version history","text":"<ul> <li>Since version 2.0.0.</li> <li>Changed return type to <code>string_t</code> in version 3.11.0.</li> </ul>"},{"location":"api/json_sax/","title":"nlohmann::json_sax","text":"<pre><code>template&lt;typename BasicJsonType&gt;\nstruct json_sax;\n</code></pre> <p>This class describes the SAX interface used by sax_parse. Each function is called in different situations while the input is parsed. The boolean return value informs the parser whether to continue processing the input.</p>"},{"location":"api/json_sax/#template-parameters","title":"Template parameters","text":"<code>BasicJsonType</code> a specialization of <code>basic_json</code>"},{"location":"api/json_sax/#member-types","title":"Member types","text":"<ul> <li>number_integer_t - <code>BasicJsonType</code>'s type for numbers (integer)</li> <li>number_unsigned_t - <code>BasicJsonType</code>'s type for numbers (unsigned)</li> <li>number_float_t - <code>BasicJsonType</code>'s type for numbers (floating-point)</li> <li>string_t - <code>BasicJsonType</code>'s type for strings</li> <li>binary_t - <code>BasicJsonType</code>'s type for binary arrays</li> </ul>"},{"location":"api/json_sax/#member-functions","title":"Member functions","text":"<ul> <li>binary (virtual) - a binary value was read</li> <li>boolean (virtual) - a boolean value was read</li> <li>end_array (virtual) - the end of an array was read</li> <li>end_object (virtual) - the end of an object was read</li> <li>key (virtual) - an object key was read</li> <li>null (virtual) - a null value was read</li> <li>number_float (virtual) - a floating-point number was read</li> <li>number_integer (virtual) - an integer number was read</li> <li>number_unsigned (virtual) - an unsigned integer number was read</li> <li>parse_error (virtual) - a parse error occurred</li> <li>start_array (virtual) - the beginning of an array was read</li> <li>start_object (virtual) - the beginning of an object was read</li> <li>string (virtual) - a string value was read</li> </ul>"},{"location":"api/json_sax/#version-history","title":"Version history","text":"<ul> <li>Added in version 3.2.0.</li> <li>Support for binary values (<code>binary_t</code>, <code>binary</code>) added in version 3.8.0.</li> </ul>"},{"location":"api/json_sax/binary/","title":"nlohmann::json_sax::binary","text":"<pre><code>virtual bool binary(binary_t&amp; val) = 0;\n</code></pre> <p>A binary value was read.</p>"},{"location":"api/json_sax/binary/#parameters","title":"Parameters","text":"<code>val</code> (in) binary value"},{"location":"api/json_sax/binary/#return-value","title":"Return value","text":"<p>Whether parsing should proceed.</p>"},{"location":"api/json_sax/binary/#notes","title":"Notes","text":"<p>It is safe to move the passed binary value.</p>"},{"location":"api/json_sax/binary/#examples","title":"Examples","text":"Example <p>The example below shows how the SAX interface is used.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;iomanip&gt;\n#include &lt;sstream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\n// a simple event consumer that collects string representations of the passed\n// values; note inheriting from json::json_sax_t is not required, but can\n// help not to forget a required function\nclass sax_event_consumer : public json::json_sax_t\n{\n  public:\n    std::vector&lt;std::string&gt; events;\n\n    bool null() override\n    {\n        events.push_back(\"null()\");\n        return true;\n    }\n\n    bool boolean(bool val) override\n    {\n        events.push_back(\"boolean(val=\" + std::string(val ? \"true\" : \"false\") + \")\");\n        return true;\n    }\n\n    bool number_integer(number_integer_t val) override\n    {\n        events.push_back(\"number_integer(val=\" + std::to_string(val) + \")\");\n        return true;\n    }\n\n    bool number_unsigned(number_unsigned_t val) override\n    {\n        events.push_back(\"number_unsigned(val=\" + std::to_string(val) + \")\");\n        return true;\n    }\n\n    bool number_float(number_float_t val, const string_t&amp; s) override\n    {\n        events.push_back(\"number_float(val=\" + std::to_string(val) + \", s=\" + s + \")\");\n        return true;\n    }\n\n    bool string(string_t&amp; val) override\n    {\n        events.push_back(\"string(val=\" + val + \")\");\n        return true;\n    }\n\n    bool start_object(std::size_t elements) override\n    {\n        events.push_back(\"start_object(elements=\" + std::to_string(elements) + \")\");\n        return true;\n    }\n\n    bool end_object() override\n    {\n        events.push_back(\"end_object()\");\n        return true;\n    }\n\n    bool start_array(std::size_t elements) override\n    {\n        events.push_back(\"start_array(elements=\" + std::to_string(elements) + \")\");\n        return true;\n    }\n\n    bool end_array() override\n    {\n        events.push_back(\"end_array()\");\n        return true;\n    }\n\n    bool key(string_t&amp; val) override\n    {\n        events.push_back(\"key(val=\" + val + \")\");\n        return true;\n    }\n\n    bool binary(json::binary_t&amp; val) override\n    {\n        events.push_back(\"binary(val=[...])\");\n        return true;\n    }\n\n    bool parse_error(std::size_t position, const std::string&amp; last_token, const json::exception&amp; ex) override\n    {\n        events.push_back(\"parse_error(position=\" + std::to_string(position) + \", last_token=\" + last_token + \",\\n            ex=\" + std::string(ex.what()) + \")\");\n        return false;\n    }\n};\n\nint main()\n{\n    // CBOR byte string\n    std::vector&lt;std::uint8_t&gt; vec = {{0x44, 0xcA, 0xfe, 0xba, 0xbe}};\n\n    // create a SAX event consumer object\n    sax_event_consumer sec;\n\n    // parse CBOR\n    bool result = json::sax_parse(vec, &amp;sec, json::input_format_t::cbor);\n\n    // output the recorded events\n    for (auto&amp; event : sec.events)\n    {\n        std::cout &lt;&lt; event &lt;&lt; \"\\n\";\n    }\n\n    // output the result of sax_parse\n    std::cout &lt;&lt; \"\\nresult: \" &lt;&lt; std::boolalpha &lt;&lt; result &lt;&lt; std::endl;\n}\n</code></pre> <p>Output:</p> <pre><code>binary(val=[...])\n\nresult: true\n</code></pre>"},{"location":"api/json_sax/binary/#version-history","title":"Version history","text":"<ul> <li>Added in version 3.8.0.</li> </ul>"},{"location":"api/json_sax/boolean/","title":"nlohmann::json_sax::boolean","text":"<pre><code>virtual bool boolean(bool val) = 0;\n</code></pre> <p>A boolean value was read.</p>"},{"location":"api/json_sax/boolean/#parameters","title":"Parameters","text":"<code>val</code> (in) boolean value"},{"location":"api/json_sax/boolean/#return-value","title":"Return value","text":"<p>Whether parsing should proceed.</p>"},{"location":"api/json_sax/boolean/#examples","title":"Examples","text":"Example <p>The example below shows how the SAX interface is used.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;iomanip&gt;\n#include &lt;sstream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\n// a simple event consumer that collects string representations of the passed\n// values; note inheriting from json::json_sax_t is not required, but can\n// help not to forget a required function\nclass sax_event_consumer : public json::json_sax_t\n{\n  public:\n    std::vector&lt;std::string&gt; events;\n\n    bool null() override\n    {\n        events.push_back(\"null()\");\n        return true;\n    }\n\n    bool boolean(bool val) override\n    {\n        events.push_back(\"boolean(val=\" + std::string(val ? \"true\" : \"false\") + \")\");\n        return true;\n    }\n\n    bool number_integer(number_integer_t val) override\n    {\n        events.push_back(\"number_integer(val=\" + std::to_string(val) + \")\");\n        return true;\n    }\n\n    bool number_unsigned(number_unsigned_t val) override\n    {\n        events.push_back(\"number_unsigned(val=\" + std::to_string(val) + \")\");\n        return true;\n    }\n\n    bool number_float(number_float_t val, const string_t&amp; s) override\n    {\n        events.push_back(\"number_float(val=\" + std::to_string(val) + \", s=\" + s + \")\");\n        return true;\n    }\n\n    bool string(string_t&amp; val) override\n    {\n        events.push_back(\"string(val=\" + val + \")\");\n        return true;\n    }\n\n    bool start_object(std::size_t elements) override\n    {\n        events.push_back(\"start_object(elements=\" + std::to_string(elements) + \")\");\n        return true;\n    }\n\n    bool end_object() override\n    {\n        events.push_back(\"end_object()\");\n        return true;\n    }\n\n    bool start_array(std::size_t elements) override\n    {\n        events.push_back(\"start_array(elements=\" + std::to_string(elements) + \")\");\n        return true;\n    }\n\n    bool end_array() override\n    {\n        events.push_back(\"end_array()\");\n        return true;\n    }\n\n    bool key(string_t&amp; val) override\n    {\n        events.push_back(\"key(val=\" + val + \")\");\n        return true;\n    }\n\n    bool binary(json::binary_t&amp; val) override\n    {\n        events.push_back(\"binary(val=[...])\");\n        return true;\n    }\n\n    bool parse_error(std::size_t position, const std::string&amp; last_token, const json::exception&amp; ex) override\n    {\n        events.push_back(\"parse_error(position=\" + std::to_string(position) + \", last_token=\" + last_token + \",\\n            ex=\" + std::string(ex.what()) + \")\");\n        return false;\n    }\n};\n\nint main()\n{\n    // a JSON text\n    auto text = R\"(\n    {\n        \"Image\": {\n            \"Width\":  800,\n            \"Height\": 600,\n            \"Title\":  \"View from 15th Floor\",\n            \"Thumbnail\": {\n                \"Url\":    \"http://www.example.com/image/481989943\",\n                \"Height\": 125,\n                \"Width\":  100\n            },\n            \"Animated\" : false,\n            \"IDs\": [116, 943, 234, -38793],\n            \"DeletionDate\": null,\n            \"Distance\": 12.723374634\n        }\n    }]\n    )\";\n\n    // create a SAX event consumer object\n    sax_event_consumer sec;\n\n    // parse JSON\n    bool result = json::sax_parse(text, &amp;sec);\n\n    // output the recorded events\n    for (auto&amp; event : sec.events)\n    {\n        std::cout &lt;&lt; event &lt;&lt; \"\\n\";\n    }\n\n    // output the result of sax_parse\n    std::cout &lt;&lt; \"\\nresult: \" &lt;&lt; std::boolalpha &lt;&lt; result &lt;&lt; std::endl;\n}\n</code></pre> <p>Output:</p> <pre><code>start_object(elements=18446744073709551615)\nkey(val=Image)\nstart_object(elements=18446744073709551615)\nkey(val=Width)\nnumber_unsigned(val=800)\nkey(val=Height)\nnumber_unsigned(val=600)\nkey(val=Title)\nstring(val=View from 15th Floor)\nkey(val=Thumbnail)\nstart_object(elements=18446744073709551615)\nkey(val=Url)\nstring(val=http://www.example.com/image/481989943)\nkey(val=Height)\nnumber_unsigned(val=125)\nkey(val=Width)\nnumber_unsigned(val=100)\nend_object()\nkey(val=Animated)\nboolean(val=false)\nkey(val=IDs)\nstart_array(elements=18446744073709551615)\nnumber_unsigned(val=116)\nnumber_unsigned(val=943)\nnumber_unsigned(val=234)\nnumber_integer(val=-38793)\nend_array()\nkey(val=DeletionDate)\nnull()\nkey(val=Distance)\nnumber_float(val=12.723375, s=12.723374634)\nend_object()\nend_object()\nparse_error(position=460, last_token=12.723374634&lt;U+000A&gt;        }&lt;U+000A&gt;    }],\n            ex=[json.exception.parse_error.101] parse error at line 17, column 6: syntax error while parsing value - unexpected ']'; expected end of input)\n\nresult: false\n</code></pre>"},{"location":"api/json_sax/boolean/#version-history","title":"Version history","text":"<ul> <li>Added in version 3.2.0.</li> </ul>"},{"location":"api/json_sax/end_array/","title":"nlohmann::json_sax::end_array","text":"<pre><code>virtual bool end_array() = 0;\n</code></pre> <p>The end of an array was read.</p>"},{"location":"api/json_sax/end_array/#return-value","title":"Return value","text":"<p>Whether parsing should proceed.</p>"},{"location":"api/json_sax/end_array/#examples","title":"Examples","text":"Example <p>The example below shows how the SAX interface is used.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;iomanip&gt;\n#include &lt;sstream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\n// a simple event consumer that collects string representations of the passed\n// values; note inheriting from json::json_sax_t is not required, but can\n// help not to forget a required function\nclass sax_event_consumer : public json::json_sax_t\n{\n  public:\n    std::vector&lt;std::string&gt; events;\n\n    bool null() override\n    {\n        events.push_back(\"null()\");\n        return true;\n    }\n\n    bool boolean(bool val) override\n    {\n        events.push_back(\"boolean(val=\" + std::string(val ? \"true\" : \"false\") + \")\");\n        return true;\n    }\n\n    bool number_integer(number_integer_t val) override\n    {\n        events.push_back(\"number_integer(val=\" + std::to_string(val) + \")\");\n        return true;\n    }\n\n    bool number_unsigned(number_unsigned_t val) override\n    {\n        events.push_back(\"number_unsigned(val=\" + std::to_string(val) + \")\");\n        return true;\n    }\n\n    bool number_float(number_float_t val, const string_t&amp; s) override\n    {\n        events.push_back(\"number_float(val=\" + std::to_string(val) + \", s=\" + s + \")\");\n        return true;\n    }\n\n    bool string(string_t&amp; val) override\n    {\n        events.push_back(\"string(val=\" + val + \")\");\n        return true;\n    }\n\n    bool start_object(std::size_t elements) override\n    {\n        events.push_back(\"start_object(elements=\" + std::to_string(elements) + \")\");\n        return true;\n    }\n\n    bool end_object() override\n    {\n        events.push_back(\"end_object()\");\n        return true;\n    }\n\n    bool start_array(std::size_t elements) override\n    {\n        events.push_back(\"start_array(elements=\" + std::to_string(elements) + \")\");\n        return true;\n    }\n\n    bool end_array() override\n    {\n        events.push_back(\"end_array()\");\n        return true;\n    }\n\n    bool key(string_t&amp; val) override\n    {\n        events.push_back(\"key(val=\" + val + \")\");\n        return true;\n    }\n\n    bool binary(json::binary_t&amp; val) override\n    {\n        events.push_back(\"binary(val=[...])\");\n        return true;\n    }\n\n    bool parse_error(std::size_t position, const std::string&amp; last_token, const json::exception&amp; ex) override\n    {\n        events.push_back(\"parse_error(position=\" + std::to_string(position) + \", last_token=\" + last_token + \",\\n            ex=\" + std::string(ex.what()) + \")\");\n        return false;\n    }\n};\n\nint main()\n{\n    // a JSON text\n    auto text = R\"(\n    {\n        \"Image\": {\n            \"Width\":  800,\n            \"Height\": 600,\n            \"Title\":  \"View from 15th Floor\",\n            \"Thumbnail\": {\n                \"Url\":    \"http://www.example.com/image/481989943\",\n                \"Height\": 125,\n                \"Width\":  100\n            },\n            \"Animated\" : false,\n            \"IDs\": [116, 943, 234, -38793],\n            \"DeletionDate\": null,\n            \"Distance\": 12.723374634\n        }\n    }]\n    )\";\n\n    // create a SAX event consumer object\n    sax_event_consumer sec;\n\n    // parse JSON\n    bool result = json::sax_parse(text, &amp;sec);\n\n    // output the recorded events\n    for (auto&amp; event : sec.events)\n    {\n        std::cout &lt;&lt; event &lt;&lt; \"\\n\";\n    }\n\n    // output the result of sax_parse\n    std::cout &lt;&lt; \"\\nresult: \" &lt;&lt; std::boolalpha &lt;&lt; result &lt;&lt; std::endl;\n}\n</code></pre> <p>Output:</p> <pre><code>start_object(elements=18446744073709551615)\nkey(val=Image)\nstart_object(elements=18446744073709551615)\nkey(val=Width)\nnumber_unsigned(val=800)\nkey(val=Height)\nnumber_unsigned(val=600)\nkey(val=Title)\nstring(val=View from 15th Floor)\nkey(val=Thumbnail)\nstart_object(elements=18446744073709551615)\nkey(val=Url)\nstring(val=http://www.example.com/image/481989943)\nkey(val=Height)\nnumber_unsigned(val=125)\nkey(val=Width)\nnumber_unsigned(val=100)\nend_object()\nkey(val=Animated)\nboolean(val=false)\nkey(val=IDs)\nstart_array(elements=18446744073709551615)\nnumber_unsigned(val=116)\nnumber_unsigned(val=943)\nnumber_unsigned(val=234)\nnumber_integer(val=-38793)\nend_array()\nkey(val=DeletionDate)\nnull()\nkey(val=Distance)\nnumber_float(val=12.723375, s=12.723374634)\nend_object()\nend_object()\nparse_error(position=460, last_token=12.723374634&lt;U+000A&gt;        }&lt;U+000A&gt;    }],\n            ex=[json.exception.parse_error.101] parse error at line 17, column 6: syntax error while parsing value - unexpected ']'; expected end of input)\n\nresult: false\n</code></pre>"},{"location":"api/json_sax/end_array/#version-history","title":"Version history","text":"<ul> <li>Added in version 3.2.0.</li> </ul>"},{"location":"api/json_sax/end_object/","title":"nlohmann::json_sax::end_object","text":"<pre><code>virtual bool end_object() = 0;\n</code></pre> <p>The end of an object was read.</p>"},{"location":"api/json_sax/end_object/#return-value","title":"Return value","text":"<p>Whether parsing should proceed.</p>"},{"location":"api/json_sax/end_object/#examples","title":"Examples","text":"Example <p>The example below shows how the SAX interface is used.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;iomanip&gt;\n#include &lt;sstream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\n// a simple event consumer that collects string representations of the passed\n// values; note inheriting from json::json_sax_t is not required, but can\n// help not to forget a required function\nclass sax_event_consumer : public json::json_sax_t\n{\n  public:\n    std::vector&lt;std::string&gt; events;\n\n    bool null() override\n    {\n        events.push_back(\"null()\");\n        return true;\n    }\n\n    bool boolean(bool val) override\n    {\n        events.push_back(\"boolean(val=\" + std::string(val ? \"true\" : \"false\") + \")\");\n        return true;\n    }\n\n    bool number_integer(number_integer_t val) override\n    {\n        events.push_back(\"number_integer(val=\" + std::to_string(val) + \")\");\n        return true;\n    }\n\n    bool number_unsigned(number_unsigned_t val) override\n    {\n        events.push_back(\"number_unsigned(val=\" + std::to_string(val) + \")\");\n        return true;\n    }\n\n    bool number_float(number_float_t val, const string_t&amp; s) override\n    {\n        events.push_back(\"number_float(val=\" + std::to_string(val) + \", s=\" + s + \")\");\n        return true;\n    }\n\n    bool string(string_t&amp; val) override\n    {\n        events.push_back(\"string(val=\" + val + \")\");\n        return true;\n    }\n\n    bool start_object(std::size_t elements) override\n    {\n        events.push_back(\"start_object(elements=\" + std::to_string(elements) + \")\");\n        return true;\n    }\n\n    bool end_object() override\n    {\n        events.push_back(\"end_object()\");\n        return true;\n    }\n\n    bool start_array(std::size_t elements) override\n    {\n        events.push_back(\"start_array(elements=\" + std::to_string(elements) + \")\");\n        return true;\n    }\n\n    bool end_array() override\n    {\n        events.push_back(\"end_array()\");\n        return true;\n    }\n\n    bool key(string_t&amp; val) override\n    {\n        events.push_back(\"key(val=\" + val + \")\");\n        return true;\n    }\n\n    bool binary(json::binary_t&amp; val) override\n    {\n        events.push_back(\"binary(val=[...])\");\n        return true;\n    }\n\n    bool parse_error(std::size_t position, const std::string&amp; last_token, const json::exception&amp; ex) override\n    {\n        events.push_back(\"parse_error(position=\" + std::to_string(position) + \", last_token=\" + last_token + \",\\n            ex=\" + std::string(ex.what()) + \")\");\n        return false;\n    }\n};\n\nint main()\n{\n    // a JSON text\n    auto text = R\"(\n    {\n        \"Image\": {\n            \"Width\":  800,\n            \"Height\": 600,\n            \"Title\":  \"View from 15th Floor\",\n            \"Thumbnail\": {\n                \"Url\":    \"http://www.example.com/image/481989943\",\n                \"Height\": 125,\n                \"Width\":  100\n            },\n            \"Animated\" : false,\n            \"IDs\": [116, 943, 234, -38793],\n            \"DeletionDate\": null,\n            \"Distance\": 12.723374634\n        }\n    }]\n    )\";\n\n    // create a SAX event consumer object\n    sax_event_consumer sec;\n\n    // parse JSON\n    bool result = json::sax_parse(text, &amp;sec);\n\n    // output the recorded events\n    for (auto&amp; event : sec.events)\n    {\n        std::cout &lt;&lt; event &lt;&lt; \"\\n\";\n    }\n\n    // output the result of sax_parse\n    std::cout &lt;&lt; \"\\nresult: \" &lt;&lt; std::boolalpha &lt;&lt; result &lt;&lt; std::endl;\n}\n</code></pre> <p>Output:</p> <pre><code>start_object(elements=18446744073709551615)\nkey(val=Image)\nstart_object(elements=18446744073709551615)\nkey(val=Width)\nnumber_unsigned(val=800)\nkey(val=Height)\nnumber_unsigned(val=600)\nkey(val=Title)\nstring(val=View from 15th Floor)\nkey(val=Thumbnail)\nstart_object(elements=18446744073709551615)\nkey(val=Url)\nstring(val=http://www.example.com/image/481989943)\nkey(val=Height)\nnumber_unsigned(val=125)\nkey(val=Width)\nnumber_unsigned(val=100)\nend_object()\nkey(val=Animated)\nboolean(val=false)\nkey(val=IDs)\nstart_array(elements=18446744073709551615)\nnumber_unsigned(val=116)\nnumber_unsigned(val=943)\nnumber_unsigned(val=234)\nnumber_integer(val=-38793)\nend_array()\nkey(val=DeletionDate)\nnull()\nkey(val=Distance)\nnumber_float(val=12.723375, s=12.723374634)\nend_object()\nend_object()\nparse_error(position=460, last_token=12.723374634&lt;U+000A&gt;        }&lt;U+000A&gt;    }],\n            ex=[json.exception.parse_error.101] parse error at line 17, column 6: syntax error while parsing value - unexpected ']'; expected end of input)\n\nresult: false\n</code></pre>"},{"location":"api/json_sax/end_object/#version-history","title":"Version history","text":"<ul> <li>Added in version 3.2.0.</li> </ul>"},{"location":"api/json_sax/key/","title":"nlohmann::json_sax::key","text":"<pre><code>virtual bool key(string_t&amp; val) = 0;\n</code></pre> <p>An object key was read.</p>"},{"location":"api/json_sax/key/#parameters","title":"Parameters","text":"<code>val</code> (in) object key"},{"location":"api/json_sax/key/#return-value","title":"Return value","text":"<p>Whether parsing should proceed.</p>"},{"location":"api/json_sax/key/#notes","title":"Notes","text":"<p>It is safe to move the passed object key value.</p>"},{"location":"api/json_sax/key/#examples","title":"Examples","text":"Example <p>The example below shows how the SAX interface is used.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;iomanip&gt;\n#include &lt;sstream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\n// a simple event consumer that collects string representations of the passed\n// values; note inheriting from json::json_sax_t is not required, but can\n// help not to forget a required function\nclass sax_event_consumer : public json::json_sax_t\n{\n  public:\n    std::vector&lt;std::string&gt; events;\n\n    bool null() override\n    {\n        events.push_back(\"null()\");\n        return true;\n    }\n\n    bool boolean(bool val) override\n    {\n        events.push_back(\"boolean(val=\" + std::string(val ? \"true\" : \"false\") + \")\");\n        return true;\n    }\n\n    bool number_integer(number_integer_t val) override\n    {\n        events.push_back(\"number_integer(val=\" + std::to_string(val) + \")\");\n        return true;\n    }\n\n    bool number_unsigned(number_unsigned_t val) override\n    {\n        events.push_back(\"number_unsigned(val=\" + std::to_string(val) + \")\");\n        return true;\n    }\n\n    bool number_float(number_float_t val, const string_t&amp; s) override\n    {\n        events.push_back(\"number_float(val=\" + std::to_string(val) + \", s=\" + s + \")\");\n        return true;\n    }\n\n    bool string(string_t&amp; val) override\n    {\n        events.push_back(\"string(val=\" + val + \")\");\n        return true;\n    }\n\n    bool start_object(std::size_t elements) override\n    {\n        events.push_back(\"start_object(elements=\" + std::to_string(elements) + \")\");\n        return true;\n    }\n\n    bool end_object() override\n    {\n        events.push_back(\"end_object()\");\n        return true;\n    }\n\n    bool start_array(std::size_t elements) override\n    {\n        events.push_back(\"start_array(elements=\" + std::to_string(elements) + \")\");\n        return true;\n    }\n\n    bool end_array() override\n    {\n        events.push_back(\"end_array()\");\n        return true;\n    }\n\n    bool key(string_t&amp; val) override\n    {\n        events.push_back(\"key(val=\" + val + \")\");\n        return true;\n    }\n\n    bool binary(json::binary_t&amp; val) override\n    {\n        events.push_back(\"binary(val=[...])\");\n        return true;\n    }\n\n    bool parse_error(std::size_t position, const std::string&amp; last_token, const json::exception&amp; ex) override\n    {\n        events.push_back(\"parse_error(position=\" + std::to_string(position) + \", last_token=\" + last_token + \",\\n            ex=\" + std::string(ex.what()) + \")\");\n        return false;\n    }\n};\n\nint main()\n{\n    // a JSON text\n    auto text = R\"(\n    {\n        \"Image\": {\n            \"Width\":  800,\n            \"Height\": 600,\n            \"Title\":  \"View from 15th Floor\",\n            \"Thumbnail\": {\n                \"Url\":    \"http://www.example.com/image/481989943\",\n                \"Height\": 125,\n                \"Width\":  100\n            },\n            \"Animated\" : false,\n            \"IDs\": [116, 943, 234, -38793],\n            \"DeletionDate\": null,\n            \"Distance\": 12.723374634\n        }\n    }]\n    )\";\n\n    // create a SAX event consumer object\n    sax_event_consumer sec;\n\n    // parse JSON\n    bool result = json::sax_parse(text, &amp;sec);\n\n    // output the recorded events\n    for (auto&amp; event : sec.events)\n    {\n        std::cout &lt;&lt; event &lt;&lt; \"\\n\";\n    }\n\n    // output the result of sax_parse\n    std::cout &lt;&lt; \"\\nresult: \" &lt;&lt; std::boolalpha &lt;&lt; result &lt;&lt; std::endl;\n}\n</code></pre> <p>Output:</p> <pre><code>start_object(elements=18446744073709551615)\nkey(val=Image)\nstart_object(elements=18446744073709551615)\nkey(val=Width)\nnumber_unsigned(val=800)\nkey(val=Height)\nnumber_unsigned(val=600)\nkey(val=Title)\nstring(val=View from 15th Floor)\nkey(val=Thumbnail)\nstart_object(elements=18446744073709551615)\nkey(val=Url)\nstring(val=http://www.example.com/image/481989943)\nkey(val=Height)\nnumber_unsigned(val=125)\nkey(val=Width)\nnumber_unsigned(val=100)\nend_object()\nkey(val=Animated)\nboolean(val=false)\nkey(val=IDs)\nstart_array(elements=18446744073709551615)\nnumber_unsigned(val=116)\nnumber_unsigned(val=943)\nnumber_unsigned(val=234)\nnumber_integer(val=-38793)\nend_array()\nkey(val=DeletionDate)\nnull()\nkey(val=Distance)\nnumber_float(val=12.723375, s=12.723374634)\nend_object()\nend_object()\nparse_error(position=460, last_token=12.723374634&lt;U+000A&gt;        }&lt;U+000A&gt;    }],\n            ex=[json.exception.parse_error.101] parse error at line 17, column 6: syntax error while parsing value - unexpected ']'; expected end of input)\n\nresult: false\n</code></pre>"},{"location":"api/json_sax/key/#version-history","title":"Version history","text":"<ul> <li>Added in version 3.2.0.</li> </ul>"},{"location":"api/json_sax/null/","title":"nlohmann::json_sax::null","text":"<pre><code>virtual bool null() = 0;\n</code></pre> <p>A null value was read.</p>"},{"location":"api/json_sax/null/#return-value","title":"Return value","text":"<p>Whether parsing should proceed.</p>"},{"location":"api/json_sax/null/#examples","title":"Examples","text":"Example <p>The example below shows how the SAX interface is used.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;iomanip&gt;\n#include &lt;sstream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\n// a simple event consumer that collects string representations of the passed\n// values; note inheriting from json::json_sax_t is not required, but can\n// help not to forget a required function\nclass sax_event_consumer : public json::json_sax_t\n{\n  public:\n    std::vector&lt;std::string&gt; events;\n\n    bool null() override\n    {\n        events.push_back(\"null()\");\n        return true;\n    }\n\n    bool boolean(bool val) override\n    {\n        events.push_back(\"boolean(val=\" + std::string(val ? \"true\" : \"false\") + \")\");\n        return true;\n    }\n\n    bool number_integer(number_integer_t val) override\n    {\n        events.push_back(\"number_integer(val=\" + std::to_string(val) + \")\");\n        return true;\n    }\n\n    bool number_unsigned(number_unsigned_t val) override\n    {\n        events.push_back(\"number_unsigned(val=\" + std::to_string(val) + \")\");\n        return true;\n    }\n\n    bool number_float(number_float_t val, const string_t&amp; s) override\n    {\n        events.push_back(\"number_float(val=\" + std::to_string(val) + \", s=\" + s + \")\");\n        return true;\n    }\n\n    bool string(string_t&amp; val) override\n    {\n        events.push_back(\"string(val=\" + val + \")\");\n        return true;\n    }\n\n    bool start_object(std::size_t elements) override\n    {\n        events.push_back(\"start_object(elements=\" + std::to_string(elements) + \")\");\n        return true;\n    }\n\n    bool end_object() override\n    {\n        events.push_back(\"end_object()\");\n        return true;\n    }\n\n    bool start_array(std::size_t elements) override\n    {\n        events.push_back(\"start_array(elements=\" + std::to_string(elements) + \")\");\n        return true;\n    }\n\n    bool end_array() override\n    {\n        events.push_back(\"end_array()\");\n        return true;\n    }\n\n    bool key(string_t&amp; val) override\n    {\n        events.push_back(\"key(val=\" + val + \")\");\n        return true;\n    }\n\n    bool binary(json::binary_t&amp; val) override\n    {\n        events.push_back(\"binary(val=[...])\");\n        return true;\n    }\n\n    bool parse_error(std::size_t position, const std::string&amp; last_token, const json::exception&amp; ex) override\n    {\n        events.push_back(\"parse_error(position=\" + std::to_string(position) + \", last_token=\" + last_token + \",\\n            ex=\" + std::string(ex.what()) + \")\");\n        return false;\n    }\n};\n\nint main()\n{\n    // a JSON text\n    auto text = R\"(\n    {\n        \"Image\": {\n            \"Width\":  800,\n            \"Height\": 600,\n            \"Title\":  \"View from 15th Floor\",\n            \"Thumbnail\": {\n                \"Url\":    \"http://www.example.com/image/481989943\",\n                \"Height\": 125,\n                \"Width\":  100\n            },\n            \"Animated\" : false,\n            \"IDs\": [116, 943, 234, -38793],\n            \"DeletionDate\": null,\n            \"Distance\": 12.723374634\n        }\n    }]\n    )\";\n\n    // create a SAX event consumer object\n    sax_event_consumer sec;\n\n    // parse JSON\n    bool result = json::sax_parse(text, &amp;sec);\n\n    // output the recorded events\n    for (auto&amp; event : sec.events)\n    {\n        std::cout &lt;&lt; event &lt;&lt; \"\\n\";\n    }\n\n    // output the result of sax_parse\n    std::cout &lt;&lt; \"\\nresult: \" &lt;&lt; std::boolalpha &lt;&lt; result &lt;&lt; std::endl;\n}\n</code></pre> <p>Output:</p> <pre><code>start_object(elements=18446744073709551615)\nkey(val=Image)\nstart_object(elements=18446744073709551615)\nkey(val=Width)\nnumber_unsigned(val=800)\nkey(val=Height)\nnumber_unsigned(val=600)\nkey(val=Title)\nstring(val=View from 15th Floor)\nkey(val=Thumbnail)\nstart_object(elements=18446744073709551615)\nkey(val=Url)\nstring(val=http://www.example.com/image/481989943)\nkey(val=Height)\nnumber_unsigned(val=125)\nkey(val=Width)\nnumber_unsigned(val=100)\nend_object()\nkey(val=Animated)\nboolean(val=false)\nkey(val=IDs)\nstart_array(elements=18446744073709551615)\nnumber_unsigned(val=116)\nnumber_unsigned(val=943)\nnumber_unsigned(val=234)\nnumber_integer(val=-38793)\nend_array()\nkey(val=DeletionDate)\nnull()\nkey(val=Distance)\nnumber_float(val=12.723375, s=12.723374634)\nend_object()\nend_object()\nparse_error(position=460, last_token=12.723374634&lt;U+000A&gt;        }&lt;U+000A&gt;    }],\n            ex=[json.exception.parse_error.101] parse error at line 17, column 6: syntax error while parsing value - unexpected ']'; expected end of input)\n\nresult: false\n</code></pre>"},{"location":"api/json_sax/null/#version-history","title":"Version history","text":"<ul> <li>Added in version 3.2.0.</li> </ul>"},{"location":"api/json_sax/number_float/","title":"nlohmann::json_sax::number_float","text":"<pre><code>virtual bool number_float(number_float_t val, const string_t&amp; s) = 0;\n</code></pre> <p>A floating-point number was read.</p>"},{"location":"api/json_sax/number_float/#parameters","title":"Parameters","text":"<code>val</code> (in) floating-point value <code>s</code> (in) string representation of the original input"},{"location":"api/json_sax/number_float/#return-value","title":"Return value","text":"<p>Whether parsing should proceed.</p>"},{"location":"api/json_sax/number_float/#examples","title":"Examples","text":"Example <p>The example below shows how the SAX interface is used.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;iomanip&gt;\n#include &lt;sstream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\n// a simple event consumer that collects string representations of the passed\n// values; note inheriting from json::json_sax_t is not required, but can\n// help not to forget a required function\nclass sax_event_consumer : public json::json_sax_t\n{\n  public:\n    std::vector&lt;std::string&gt; events;\n\n    bool null() override\n    {\n        events.push_back(\"null()\");\n        return true;\n    }\n\n    bool boolean(bool val) override\n    {\n        events.push_back(\"boolean(val=\" + std::string(val ? \"true\" : \"false\") + \")\");\n        return true;\n    }\n\n    bool number_integer(number_integer_t val) override\n    {\n        events.push_back(\"number_integer(val=\" + std::to_string(val) + \")\");\n        return true;\n    }\n\n    bool number_unsigned(number_unsigned_t val) override\n    {\n        events.push_back(\"number_unsigned(val=\" + std::to_string(val) + \")\");\n        return true;\n    }\n\n    bool number_float(number_float_t val, const string_t&amp; s) override\n    {\n        events.push_back(\"number_float(val=\" + std::to_string(val) + \", s=\" + s + \")\");\n        return true;\n    }\n\n    bool string(string_t&amp; val) override\n    {\n        events.push_back(\"string(val=\" + val + \")\");\n        return true;\n    }\n\n    bool start_object(std::size_t elements) override\n    {\n        events.push_back(\"start_object(elements=\" + std::to_string(elements) + \")\");\n        return true;\n    }\n\n    bool end_object() override\n    {\n        events.push_back(\"end_object()\");\n        return true;\n    }\n\n    bool start_array(std::size_t elements) override\n    {\n        events.push_back(\"start_array(elements=\" + std::to_string(elements) + \")\");\n        return true;\n    }\n\n    bool end_array() override\n    {\n        events.push_back(\"end_array()\");\n        return true;\n    }\n\n    bool key(string_t&amp; val) override\n    {\n        events.push_back(\"key(val=\" + val + \")\");\n        return true;\n    }\n\n    bool binary(json::binary_t&amp; val) override\n    {\n        events.push_back(\"binary(val=[...])\");\n        return true;\n    }\n\n    bool parse_error(std::size_t position, const std::string&amp; last_token, const json::exception&amp; ex) override\n    {\n        events.push_back(\"parse_error(position=\" + std::to_string(position) + \", last_token=\" + last_token + \",\\n            ex=\" + std::string(ex.what()) + \")\");\n        return false;\n    }\n};\n\nint main()\n{\n    // a JSON text\n    auto text = R\"(\n    {\n        \"Image\": {\n            \"Width\":  800,\n            \"Height\": 600,\n            \"Title\":  \"View from 15th Floor\",\n            \"Thumbnail\": {\n                \"Url\":    \"http://www.example.com/image/481989943\",\n                \"Height\": 125,\n                \"Width\":  100\n            },\n            \"Animated\" : false,\n            \"IDs\": [116, 943, 234, -38793],\n            \"DeletionDate\": null,\n            \"Distance\": 12.723374634\n        }\n    }]\n    )\";\n\n    // create a SAX event consumer object\n    sax_event_consumer sec;\n\n    // parse JSON\n    bool result = json::sax_parse(text, &amp;sec);\n\n    // output the recorded events\n    for (auto&amp; event : sec.events)\n    {\n        std::cout &lt;&lt; event &lt;&lt; \"\\n\";\n    }\n\n    // output the result of sax_parse\n    std::cout &lt;&lt; \"\\nresult: \" &lt;&lt; std::boolalpha &lt;&lt; result &lt;&lt; std::endl;\n}\n</code></pre> <p>Output:</p> <pre><code>start_object(elements=18446744073709551615)\nkey(val=Image)\nstart_object(elements=18446744073709551615)\nkey(val=Width)\nnumber_unsigned(val=800)\nkey(val=Height)\nnumber_unsigned(val=600)\nkey(val=Title)\nstring(val=View from 15th Floor)\nkey(val=Thumbnail)\nstart_object(elements=18446744073709551615)\nkey(val=Url)\nstring(val=http://www.example.com/image/481989943)\nkey(val=Height)\nnumber_unsigned(val=125)\nkey(val=Width)\nnumber_unsigned(val=100)\nend_object()\nkey(val=Animated)\nboolean(val=false)\nkey(val=IDs)\nstart_array(elements=18446744073709551615)\nnumber_unsigned(val=116)\nnumber_unsigned(val=943)\nnumber_unsigned(val=234)\nnumber_integer(val=-38793)\nend_array()\nkey(val=DeletionDate)\nnull()\nkey(val=Distance)\nnumber_float(val=12.723375, s=12.723374634)\nend_object()\nend_object()\nparse_error(position=460, last_token=12.723374634&lt;U+000A&gt;        }&lt;U+000A&gt;    }],\n            ex=[json.exception.parse_error.101] parse error at line 17, column 6: syntax error while parsing value - unexpected ']'; expected end of input)\n\nresult: false\n</code></pre>"},{"location":"api/json_sax/number_float/#version-history","title":"Version history","text":"<ul> <li>Added in version 3.2.0.</li> </ul>"},{"location":"api/json_sax/number_integer/","title":"nlohmann::json_sax::number_integer","text":"<pre><code>virtual bool number_integer(number_integer_t val) = 0;\n</code></pre> <p>An integer number was read.</p>"},{"location":"api/json_sax/number_integer/#parameters","title":"Parameters","text":"<code>val</code> (in) integer value"},{"location":"api/json_sax/number_integer/#return-value","title":"Return value","text":"<p>Whether parsing should proceed.</p>"},{"location":"api/json_sax/number_integer/#examples","title":"Examples","text":"Example <p>The example below shows how the SAX interface is used.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;iomanip&gt;\n#include &lt;sstream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\n// a simple event consumer that collects string representations of the passed\n// values; note inheriting from json::json_sax_t is not required, but can\n// help not to forget a required function\nclass sax_event_consumer : public json::json_sax_t\n{\n  public:\n    std::vector&lt;std::string&gt; events;\n\n    bool null() override\n    {\n        events.push_back(\"null()\");\n        return true;\n    }\n\n    bool boolean(bool val) override\n    {\n        events.push_back(\"boolean(val=\" + std::string(val ? \"true\" : \"false\") + \")\");\n        return true;\n    }\n\n    bool number_integer(number_integer_t val) override\n    {\n        events.push_back(\"number_integer(val=\" + std::to_string(val) + \")\");\n        return true;\n    }\n\n    bool number_unsigned(number_unsigned_t val) override\n    {\n        events.push_back(\"number_unsigned(val=\" + std::to_string(val) + \")\");\n        return true;\n    }\n\n    bool number_float(number_float_t val, const string_t&amp; s) override\n    {\n        events.push_back(\"number_float(val=\" + std::to_string(val) + \", s=\" + s + \")\");\n        return true;\n    }\n\n    bool string(string_t&amp; val) override\n    {\n        events.push_back(\"string(val=\" + val + \")\");\n        return true;\n    }\n\n    bool start_object(std::size_t elements) override\n    {\n        events.push_back(\"start_object(elements=\" + std::to_string(elements) + \")\");\n        return true;\n    }\n\n    bool end_object() override\n    {\n        events.push_back(\"end_object()\");\n        return true;\n    }\n\n    bool start_array(std::size_t elements) override\n    {\n        events.push_back(\"start_array(elements=\" + std::to_string(elements) + \")\");\n        return true;\n    }\n\n    bool end_array() override\n    {\n        events.push_back(\"end_array()\");\n        return true;\n    }\n\n    bool key(string_t&amp; val) override\n    {\n        events.push_back(\"key(val=\" + val + \")\");\n        return true;\n    }\n\n    bool binary(json::binary_t&amp; val) override\n    {\n        events.push_back(\"binary(val=[...])\");\n        return true;\n    }\n\n    bool parse_error(std::size_t position, const std::string&amp; last_token, const json::exception&amp; ex) override\n    {\n        events.push_back(\"parse_error(position=\" + std::to_string(position) + \", last_token=\" + last_token + \",\\n            ex=\" + std::string(ex.what()) + \")\");\n        return false;\n    }\n};\n\nint main()\n{\n    // a JSON text\n    auto text = R\"(\n    {\n        \"Image\": {\n            \"Width\":  800,\n            \"Height\": 600,\n            \"Title\":  \"View from 15th Floor\",\n            \"Thumbnail\": {\n                \"Url\":    \"http://www.example.com/image/481989943\",\n                \"Height\": 125,\n                \"Width\":  100\n            },\n            \"Animated\" : false,\n            \"IDs\": [116, 943, 234, -38793],\n            \"DeletionDate\": null,\n            \"Distance\": 12.723374634\n        }\n    }]\n    )\";\n\n    // create a SAX event consumer object\n    sax_event_consumer sec;\n\n    // parse JSON\n    bool result = json::sax_parse(text, &amp;sec);\n\n    // output the recorded events\n    for (auto&amp; event : sec.events)\n    {\n        std::cout &lt;&lt; event &lt;&lt; \"\\n\";\n    }\n\n    // output the result of sax_parse\n    std::cout &lt;&lt; \"\\nresult: \" &lt;&lt; std::boolalpha &lt;&lt; result &lt;&lt; std::endl;\n}\n</code></pre> <p>Output:</p> <pre><code>start_object(elements=18446744073709551615)\nkey(val=Image)\nstart_object(elements=18446744073709551615)\nkey(val=Width)\nnumber_unsigned(val=800)\nkey(val=Height)\nnumber_unsigned(val=600)\nkey(val=Title)\nstring(val=View from 15th Floor)\nkey(val=Thumbnail)\nstart_object(elements=18446744073709551615)\nkey(val=Url)\nstring(val=http://www.example.com/image/481989943)\nkey(val=Height)\nnumber_unsigned(val=125)\nkey(val=Width)\nnumber_unsigned(val=100)\nend_object()\nkey(val=Animated)\nboolean(val=false)\nkey(val=IDs)\nstart_array(elements=18446744073709551615)\nnumber_unsigned(val=116)\nnumber_unsigned(val=943)\nnumber_unsigned(val=234)\nnumber_integer(val=-38793)\nend_array()\nkey(val=DeletionDate)\nnull()\nkey(val=Distance)\nnumber_float(val=12.723375, s=12.723374634)\nend_object()\nend_object()\nparse_error(position=460, last_token=12.723374634&lt;U+000A&gt;        }&lt;U+000A&gt;    }],\n            ex=[json.exception.parse_error.101] parse error at line 17, column 6: syntax error while parsing value - unexpected ']'; expected end of input)\n\nresult: false\n</code></pre>"},{"location":"api/json_sax/number_integer/#version-history","title":"Version history","text":"<ul> <li>Added in version 3.2.0.</li> </ul>"},{"location":"api/json_sax/number_unsigned/","title":"nlohmann::json_sax::number_unsigned","text":"<pre><code>virtual bool number_unsigned(number_unsigned_t val) = 0;\n</code></pre> <p>An unsigned integer number was read.</p>"},{"location":"api/json_sax/number_unsigned/#parameters","title":"Parameters","text":"<code>val</code> (in) unsigned integer value"},{"location":"api/json_sax/number_unsigned/#return-value","title":"Return value","text":"<p>Whether parsing should proceed.</p>"},{"location":"api/json_sax/number_unsigned/#examples","title":"Examples","text":"Example <p>The example below shows how the SAX interface is used.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;iomanip&gt;\n#include &lt;sstream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\n// a simple event consumer that collects string representations of the passed\n// values; note inheriting from json::json_sax_t is not required, but can\n// help not to forget a required function\nclass sax_event_consumer : public json::json_sax_t\n{\n  public:\n    std::vector&lt;std::string&gt; events;\n\n    bool null() override\n    {\n        events.push_back(\"null()\");\n        return true;\n    }\n\n    bool boolean(bool val) override\n    {\n        events.push_back(\"boolean(val=\" + std::string(val ? \"true\" : \"false\") + \")\");\n        return true;\n    }\n\n    bool number_integer(number_integer_t val) override\n    {\n        events.push_back(\"number_integer(val=\" + std::to_string(val) + \")\");\n        return true;\n    }\n\n    bool number_unsigned(number_unsigned_t val) override\n    {\n        events.push_back(\"number_unsigned(val=\" + std::to_string(val) + \")\");\n        return true;\n    }\n\n    bool number_float(number_float_t val, const string_t&amp; s) override\n    {\n        events.push_back(\"number_float(val=\" + std::to_string(val) + \", s=\" + s + \")\");\n        return true;\n    }\n\n    bool string(string_t&amp; val) override\n    {\n        events.push_back(\"string(val=\" + val + \")\");\n        return true;\n    }\n\n    bool start_object(std::size_t elements) override\n    {\n        events.push_back(\"start_object(elements=\" + std::to_string(elements) + \")\");\n        return true;\n    }\n\n    bool end_object() override\n    {\n        events.push_back(\"end_object()\");\n        return true;\n    }\n\n    bool start_array(std::size_t elements) override\n    {\n        events.push_back(\"start_array(elements=\" + std::to_string(elements) + \")\");\n        return true;\n    }\n\n    bool end_array() override\n    {\n        events.push_back(\"end_array()\");\n        return true;\n    }\n\n    bool key(string_t&amp; val) override\n    {\n        events.push_back(\"key(val=\" + val + \")\");\n        return true;\n    }\n\n    bool binary(json::binary_t&amp; val) override\n    {\n        events.push_back(\"binary(val=[...])\");\n        return true;\n    }\n\n    bool parse_error(std::size_t position, const std::string&amp; last_token, const json::exception&amp; ex) override\n    {\n        events.push_back(\"parse_error(position=\" + std::to_string(position) + \", last_token=\" + last_token + \",\\n            ex=\" + std::string(ex.what()) + \")\");\n        return false;\n    }\n};\n\nint main()\n{\n    // a JSON text\n    auto text = R\"(\n    {\n        \"Image\": {\n            \"Width\":  800,\n            \"Height\": 600,\n            \"Title\":  \"View from 15th Floor\",\n            \"Thumbnail\": {\n                \"Url\":    \"http://www.example.com/image/481989943\",\n                \"Height\": 125,\n                \"Width\":  100\n            },\n            \"Animated\" : false,\n            \"IDs\": [116, 943, 234, -38793],\n            \"DeletionDate\": null,\n            \"Distance\": 12.723374634\n        }\n    }]\n    )\";\n\n    // create a SAX event consumer object\n    sax_event_consumer sec;\n\n    // parse JSON\n    bool result = json::sax_parse(text, &amp;sec);\n\n    // output the recorded events\n    for (auto&amp; event : sec.events)\n    {\n        std::cout &lt;&lt; event &lt;&lt; \"\\n\";\n    }\n\n    // output the result of sax_parse\n    std::cout &lt;&lt; \"\\nresult: \" &lt;&lt; std::boolalpha &lt;&lt; result &lt;&lt; std::endl;\n}\n</code></pre> <p>Output:</p> <pre><code>start_object(elements=18446744073709551615)\nkey(val=Image)\nstart_object(elements=18446744073709551615)\nkey(val=Width)\nnumber_unsigned(val=800)\nkey(val=Height)\nnumber_unsigned(val=600)\nkey(val=Title)\nstring(val=View from 15th Floor)\nkey(val=Thumbnail)\nstart_object(elements=18446744073709551615)\nkey(val=Url)\nstring(val=http://www.example.com/image/481989943)\nkey(val=Height)\nnumber_unsigned(val=125)\nkey(val=Width)\nnumber_unsigned(val=100)\nend_object()\nkey(val=Animated)\nboolean(val=false)\nkey(val=IDs)\nstart_array(elements=18446744073709551615)\nnumber_unsigned(val=116)\nnumber_unsigned(val=943)\nnumber_unsigned(val=234)\nnumber_integer(val=-38793)\nend_array()\nkey(val=DeletionDate)\nnull()\nkey(val=Distance)\nnumber_float(val=12.723375, s=12.723374634)\nend_object()\nend_object()\nparse_error(position=460, last_token=12.723374634&lt;U+000A&gt;        }&lt;U+000A&gt;    }],\n            ex=[json.exception.parse_error.101] parse error at line 17, column 6: syntax error while parsing value - unexpected ']'; expected end of input)\n\nresult: false\n</code></pre>"},{"location":"api/json_sax/number_unsigned/#version-history","title":"Version history","text":"<ul> <li>Added in version 3.2.0.</li> </ul>"},{"location":"api/json_sax/parse_error/","title":"nlohmann::json_sax::parse_error","text":"<pre><code>virtual bool parse_error(std::size_t position,\n                         const std::string&amp; last_token,\n                         const detail::exception&amp; ex) = 0;\n</code></pre> <p>A parse error occurred.</p>"},{"location":"api/json_sax/parse_error/#parameters","title":"Parameters","text":"<code>position</code> (in) the position in the input where the error occurs <code>last_token</code> (in) the last read token <code>ex</code> (in) an exception object describing the error"},{"location":"api/json_sax/parse_error/#return-value","title":"Return value","text":"<p>Whether parsing should proceed (must return <code>false</code>).</p>"},{"location":"api/json_sax/parse_error/#examples","title":"Examples","text":"Example <p>The example below shows how the SAX interface is used.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;iomanip&gt;\n#include &lt;sstream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\n// a simple event consumer that collects string representations of the passed\n// values; note inheriting from json::json_sax_t is not required, but can\n// help not to forget a required function\nclass sax_event_consumer : public json::json_sax_t\n{\n  public:\n    std::vector&lt;std::string&gt; events;\n\n    bool null() override\n    {\n        events.push_back(\"null()\");\n        return true;\n    }\n\n    bool boolean(bool val) override\n    {\n        events.push_back(\"boolean(val=\" + std::string(val ? \"true\" : \"false\") + \")\");\n        return true;\n    }\n\n    bool number_integer(number_integer_t val) override\n    {\n        events.push_back(\"number_integer(val=\" + std::to_string(val) + \")\");\n        return true;\n    }\n\n    bool number_unsigned(number_unsigned_t val) override\n    {\n        events.push_back(\"number_unsigned(val=\" + std::to_string(val) + \")\");\n        return true;\n    }\n\n    bool number_float(number_float_t val, const string_t&amp; s) override\n    {\n        events.push_back(\"number_float(val=\" + std::to_string(val) + \", s=\" + s + \")\");\n        return true;\n    }\n\n    bool string(string_t&amp; val) override\n    {\n        events.push_back(\"string(val=\" + val + \")\");\n        return true;\n    }\n\n    bool start_object(std::size_t elements) override\n    {\n        events.push_back(\"start_object(elements=\" + std::to_string(elements) + \")\");\n        return true;\n    }\n\n    bool end_object() override\n    {\n        events.push_back(\"end_object()\");\n        return true;\n    }\n\n    bool start_array(std::size_t elements) override\n    {\n        events.push_back(\"start_array(elements=\" + std::to_string(elements) + \")\");\n        return true;\n    }\n\n    bool end_array() override\n    {\n        events.push_back(\"end_array()\");\n        return true;\n    }\n\n    bool key(string_t&amp; val) override\n    {\n        events.push_back(\"key(val=\" + val + \")\");\n        return true;\n    }\n\n    bool binary(json::binary_t&amp; val) override\n    {\n        events.push_back(\"binary(val=[...])\");\n        return true;\n    }\n\n    bool parse_error(std::size_t position, const std::string&amp; last_token, const json::exception&amp; ex) override\n    {\n        events.push_back(\"parse_error(position=\" + std::to_string(position) + \", last_token=\" + last_token + \",\\n            ex=\" + std::string(ex.what()) + \")\");\n        return false;\n    }\n};\n\nint main()\n{\n    // a JSON text\n    auto text = R\"(\n    {\n        \"Image\": {\n            \"Width\":  800,\n            \"Height\": 600,\n            \"Title\":  \"View from 15th Floor\",\n            \"Thumbnail\": {\n                \"Url\":    \"http://www.example.com/image/481989943\",\n                \"Height\": 125,\n                \"Width\":  100\n            },\n            \"Animated\" : false,\n            \"IDs\": [116, 943, 234, -38793],\n            \"DeletionDate\": null,\n            \"Distance\": 12.723374634\n        }\n    }]\n    )\";\n\n    // create a SAX event consumer object\n    sax_event_consumer sec;\n\n    // parse JSON\n    bool result = json::sax_parse(text, &amp;sec);\n\n    // output the recorded events\n    for (auto&amp; event : sec.events)\n    {\n        std::cout &lt;&lt; event &lt;&lt; \"\\n\";\n    }\n\n    // output the result of sax_parse\n    std::cout &lt;&lt; \"\\nresult: \" &lt;&lt; std::boolalpha &lt;&lt; result &lt;&lt; std::endl;\n}\n</code></pre> <p>Output:</p> <pre><code>start_object(elements=18446744073709551615)\nkey(val=Image)\nstart_object(elements=18446744073709551615)\nkey(val=Width)\nnumber_unsigned(val=800)\nkey(val=Height)\nnumber_unsigned(val=600)\nkey(val=Title)\nstring(val=View from 15th Floor)\nkey(val=Thumbnail)\nstart_object(elements=18446744073709551615)\nkey(val=Url)\nstring(val=http://www.example.com/image/481989943)\nkey(val=Height)\nnumber_unsigned(val=125)\nkey(val=Width)\nnumber_unsigned(val=100)\nend_object()\nkey(val=Animated)\nboolean(val=false)\nkey(val=IDs)\nstart_array(elements=18446744073709551615)\nnumber_unsigned(val=116)\nnumber_unsigned(val=943)\nnumber_unsigned(val=234)\nnumber_integer(val=-38793)\nend_array()\nkey(val=DeletionDate)\nnull()\nkey(val=Distance)\nnumber_float(val=12.723375, s=12.723374634)\nend_object()\nend_object()\nparse_error(position=460, last_token=12.723374634&lt;U+000A&gt;        }&lt;U+000A&gt;    }],\n            ex=[json.exception.parse_error.101] parse error at line 17, column 6: syntax error while parsing value - unexpected ']'; expected end of input)\n\nresult: false\n</code></pre>"},{"location":"api/json_sax/parse_error/#version-history","title":"Version history","text":"<ul> <li>Added in version 3.2.0.</li> </ul>"},{"location":"api/json_sax/start_array/","title":"nlohmann::json_sax::start_array","text":"<pre><code>virtual bool start_array(std::size_t elements) = 0;\n</code></pre> <p>The beginning of an array was read.</p>"},{"location":"api/json_sax/start_array/#parameters","title":"Parameters","text":"<code>elements</code> (in) number of object elements or <code>-1</code> if unknown"},{"location":"api/json_sax/start_array/#return-value","title":"Return value","text":"<p>Whether parsing should proceed.</p>"},{"location":"api/json_sax/start_array/#notes","title":"Notes","text":"<p>Binary formats may report the number of elements.</p>"},{"location":"api/json_sax/start_array/#examples","title":"Examples","text":"Example <p>The example below shows how the SAX interface is used.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;iomanip&gt;\n#include &lt;sstream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\n// a simple event consumer that collects string representations of the passed\n// values; note inheriting from json::json_sax_t is not required, but can\n// help not to forget a required function\nclass sax_event_consumer : public json::json_sax_t\n{\n  public:\n    std::vector&lt;std::string&gt; events;\n\n    bool null() override\n    {\n        events.push_back(\"null()\");\n        return true;\n    }\n\n    bool boolean(bool val) override\n    {\n        events.push_back(\"boolean(val=\" + std::string(val ? \"true\" : \"false\") + \")\");\n        return true;\n    }\n\n    bool number_integer(number_integer_t val) override\n    {\n        events.push_back(\"number_integer(val=\" + std::to_string(val) + \")\");\n        return true;\n    }\n\n    bool number_unsigned(number_unsigned_t val) override\n    {\n        events.push_back(\"number_unsigned(val=\" + std::to_string(val) + \")\");\n        return true;\n    }\n\n    bool number_float(number_float_t val, const string_t&amp; s) override\n    {\n        events.push_back(\"number_float(val=\" + std::to_string(val) + \", s=\" + s + \")\");\n        return true;\n    }\n\n    bool string(string_t&amp; val) override\n    {\n        events.push_back(\"string(val=\" + val + \")\");\n        return true;\n    }\n\n    bool start_object(std::size_t elements) override\n    {\n        events.push_back(\"start_object(elements=\" + std::to_string(elements) + \")\");\n        return true;\n    }\n\n    bool end_object() override\n    {\n        events.push_back(\"end_object()\");\n        return true;\n    }\n\n    bool start_array(std::size_t elements) override\n    {\n        events.push_back(\"start_array(elements=\" + std::to_string(elements) + \")\");\n        return true;\n    }\n\n    bool end_array() override\n    {\n        events.push_back(\"end_array()\");\n        return true;\n    }\n\n    bool key(string_t&amp; val) override\n    {\n        events.push_back(\"key(val=\" + val + \")\");\n        return true;\n    }\n\n    bool binary(json::binary_t&amp; val) override\n    {\n        events.push_back(\"binary(val=[...])\");\n        return true;\n    }\n\n    bool parse_error(std::size_t position, const std::string&amp; last_token, const json::exception&amp; ex) override\n    {\n        events.push_back(\"parse_error(position=\" + std::to_string(position) + \", last_token=\" + last_token + \",\\n            ex=\" + std::string(ex.what()) + \")\");\n        return false;\n    }\n};\n\nint main()\n{\n    // a JSON text\n    auto text = R\"(\n    {\n        \"Image\": {\n            \"Width\":  800,\n            \"Height\": 600,\n            \"Title\":  \"View from 15th Floor\",\n            \"Thumbnail\": {\n                \"Url\":    \"http://www.example.com/image/481989943\",\n                \"Height\": 125,\n                \"Width\":  100\n            },\n            \"Animated\" : false,\n            \"IDs\": [116, 943, 234, -38793],\n            \"DeletionDate\": null,\n            \"Distance\": 12.723374634\n        }\n    }]\n    )\";\n\n    // create a SAX event consumer object\n    sax_event_consumer sec;\n\n    // parse JSON\n    bool result = json::sax_parse(text, &amp;sec);\n\n    // output the recorded events\n    for (auto&amp; event : sec.events)\n    {\n        std::cout &lt;&lt; event &lt;&lt; \"\\n\";\n    }\n\n    // output the result of sax_parse\n    std::cout &lt;&lt; \"\\nresult: \" &lt;&lt; std::boolalpha &lt;&lt; result &lt;&lt; std::endl;\n}\n</code></pre> <p>Output:</p> <pre><code>start_object(elements=18446744073709551615)\nkey(val=Image)\nstart_object(elements=18446744073709551615)\nkey(val=Width)\nnumber_unsigned(val=800)\nkey(val=Height)\nnumber_unsigned(val=600)\nkey(val=Title)\nstring(val=View from 15th Floor)\nkey(val=Thumbnail)\nstart_object(elements=18446744073709551615)\nkey(val=Url)\nstring(val=http://www.example.com/image/481989943)\nkey(val=Height)\nnumber_unsigned(val=125)\nkey(val=Width)\nnumber_unsigned(val=100)\nend_object()\nkey(val=Animated)\nboolean(val=false)\nkey(val=IDs)\nstart_array(elements=18446744073709551615)\nnumber_unsigned(val=116)\nnumber_unsigned(val=943)\nnumber_unsigned(val=234)\nnumber_integer(val=-38793)\nend_array()\nkey(val=DeletionDate)\nnull()\nkey(val=Distance)\nnumber_float(val=12.723375, s=12.723374634)\nend_object()\nend_object()\nparse_error(position=460, last_token=12.723374634&lt;U+000A&gt;        }&lt;U+000A&gt;    }],\n            ex=[json.exception.parse_error.101] parse error at line 17, column 6: syntax error while parsing value - unexpected ']'; expected end of input)\n\nresult: false\n</code></pre>"},{"location":"api/json_sax/start_array/#version-history","title":"Version history","text":"<ul> <li>Added in version 3.2.0.</li> </ul>"},{"location":"api/json_sax/start_object/","title":"nlohmann::json_sax::start_object","text":"<pre><code>virtual bool start_object(std::size_t elements) = 0;\n</code></pre> <p>The beginning of an object was read.</p>"},{"location":"api/json_sax/start_object/#parameters","title":"Parameters","text":"<code>elements</code> (in) number of object elements or <code>-1</code> if unknown"},{"location":"api/json_sax/start_object/#return-value","title":"Return value","text":"<p>Whether parsing should proceed.</p>"},{"location":"api/json_sax/start_object/#notes","title":"Notes","text":"<p>Binary formats may report the number of elements.</p>"},{"location":"api/json_sax/start_object/#examples","title":"Examples","text":"Example <p>The example below shows how the SAX interface is used.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;iomanip&gt;\n#include &lt;sstream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\n// a simple event consumer that collects string representations of the passed\n// values; note inheriting from json::json_sax_t is not required, but can\n// help not to forget a required function\nclass sax_event_consumer : public json::json_sax_t\n{\n  public:\n    std::vector&lt;std::string&gt; events;\n\n    bool null() override\n    {\n        events.push_back(\"null()\");\n        return true;\n    }\n\n    bool boolean(bool val) override\n    {\n        events.push_back(\"boolean(val=\" + std::string(val ? \"true\" : \"false\") + \")\");\n        return true;\n    }\n\n    bool number_integer(number_integer_t val) override\n    {\n        events.push_back(\"number_integer(val=\" + std::to_string(val) + \")\");\n        return true;\n    }\n\n    bool number_unsigned(number_unsigned_t val) override\n    {\n        events.push_back(\"number_unsigned(val=\" + std::to_string(val) + \")\");\n        return true;\n    }\n\n    bool number_float(number_float_t val, const string_t&amp; s) override\n    {\n        events.push_back(\"number_float(val=\" + std::to_string(val) + \", s=\" + s + \")\");\n        return true;\n    }\n\n    bool string(string_t&amp; val) override\n    {\n        events.push_back(\"string(val=\" + val + \")\");\n        return true;\n    }\n\n    bool start_object(std::size_t elements) override\n    {\n        events.push_back(\"start_object(elements=\" + std::to_string(elements) + \")\");\n        return true;\n    }\n\n    bool end_object() override\n    {\n        events.push_back(\"end_object()\");\n        return true;\n    }\n\n    bool start_array(std::size_t elements) override\n    {\n        events.push_back(\"start_array(elements=\" + std::to_string(elements) + \")\");\n        return true;\n    }\n\n    bool end_array() override\n    {\n        events.push_back(\"end_array()\");\n        return true;\n    }\n\n    bool key(string_t&amp; val) override\n    {\n        events.push_back(\"key(val=\" + val + \")\");\n        return true;\n    }\n\n    bool binary(json::binary_t&amp; val) override\n    {\n        events.push_back(\"binary(val=[...])\");\n        return true;\n    }\n\n    bool parse_error(std::size_t position, const std::string&amp; last_token, const json::exception&amp; ex) override\n    {\n        events.push_back(\"parse_error(position=\" + std::to_string(position) + \", last_token=\" + last_token + \",\\n            ex=\" + std::string(ex.what()) + \")\");\n        return false;\n    }\n};\n\nint main()\n{\n    // a JSON text\n    auto text = R\"(\n    {\n        \"Image\": {\n            \"Width\":  800,\n            \"Height\": 600,\n            \"Title\":  \"View from 15th Floor\",\n            \"Thumbnail\": {\n                \"Url\":    \"http://www.example.com/image/481989943\",\n                \"Height\": 125,\n                \"Width\":  100\n            },\n            \"Animated\" : false,\n            \"IDs\": [116, 943, 234, -38793],\n            \"DeletionDate\": null,\n            \"Distance\": 12.723374634\n        }\n    }]\n    )\";\n\n    // create a SAX event consumer object\n    sax_event_consumer sec;\n\n    // parse JSON\n    bool result = json::sax_parse(text, &amp;sec);\n\n    // output the recorded events\n    for (auto&amp; event : sec.events)\n    {\n        std::cout &lt;&lt; event &lt;&lt; \"\\n\";\n    }\n\n    // output the result of sax_parse\n    std::cout &lt;&lt; \"\\nresult: \" &lt;&lt; std::boolalpha &lt;&lt; result &lt;&lt; std::endl;\n}\n</code></pre> <p>Output:</p> <pre><code>start_object(elements=18446744073709551615)\nkey(val=Image)\nstart_object(elements=18446744073709551615)\nkey(val=Width)\nnumber_unsigned(val=800)\nkey(val=Height)\nnumber_unsigned(val=600)\nkey(val=Title)\nstring(val=View from 15th Floor)\nkey(val=Thumbnail)\nstart_object(elements=18446744073709551615)\nkey(val=Url)\nstring(val=http://www.example.com/image/481989943)\nkey(val=Height)\nnumber_unsigned(val=125)\nkey(val=Width)\nnumber_unsigned(val=100)\nend_object()\nkey(val=Animated)\nboolean(val=false)\nkey(val=IDs)\nstart_array(elements=18446744073709551615)\nnumber_unsigned(val=116)\nnumber_unsigned(val=943)\nnumber_unsigned(val=234)\nnumber_integer(val=-38793)\nend_array()\nkey(val=DeletionDate)\nnull()\nkey(val=Distance)\nnumber_float(val=12.723375, s=12.723374634)\nend_object()\nend_object()\nparse_error(position=460, last_token=12.723374634&lt;U+000A&gt;        }&lt;U+000A&gt;    }],\n            ex=[json.exception.parse_error.101] parse error at line 17, column 6: syntax error while parsing value - unexpected ']'; expected end of input)\n\nresult: false\n</code></pre>"},{"location":"api/json_sax/start_object/#version-history","title":"Version history","text":"<ul> <li>Added in version 3.2.0.</li> </ul>"},{"location":"api/json_sax/string/","title":"nlohmann::json_sax::string","text":"<pre><code>virtual bool string(string_t&amp; val) = 0;\n</code></pre> <p>A string value was read.</p>"},{"location":"api/json_sax/string/#parameters","title":"Parameters","text":"<code>val</code> (in) string value"},{"location":"api/json_sax/string/#return-value","title":"Return value","text":"<p>Whether parsing should proceed.</p>"},{"location":"api/json_sax/string/#notes","title":"Notes","text":"<p>It is safe to move the passed string value.</p>"},{"location":"api/json_sax/string/#examples","title":"Examples","text":"Example <p>The example below shows how the SAX interface is used.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;iomanip&gt;\n#include &lt;sstream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\n// a simple event consumer that collects string representations of the passed\n// values; note inheriting from json::json_sax_t is not required, but can\n// help not to forget a required function\nclass sax_event_consumer : public json::json_sax_t\n{\n  public:\n    std::vector&lt;std::string&gt; events;\n\n    bool null() override\n    {\n        events.push_back(\"null()\");\n        return true;\n    }\n\n    bool boolean(bool val) override\n    {\n        events.push_back(\"boolean(val=\" + std::string(val ? \"true\" : \"false\") + \")\");\n        return true;\n    }\n\n    bool number_integer(number_integer_t val) override\n    {\n        events.push_back(\"number_integer(val=\" + std::to_string(val) + \")\");\n        return true;\n    }\n\n    bool number_unsigned(number_unsigned_t val) override\n    {\n        events.push_back(\"number_unsigned(val=\" + std::to_string(val) + \")\");\n        return true;\n    }\n\n    bool number_float(number_float_t val, const string_t&amp; s) override\n    {\n        events.push_back(\"number_float(val=\" + std::to_string(val) + \", s=\" + s + \")\");\n        return true;\n    }\n\n    bool string(string_t&amp; val) override\n    {\n        events.push_back(\"string(val=\" + val + \")\");\n        return true;\n    }\n\n    bool start_object(std::size_t elements) override\n    {\n        events.push_back(\"start_object(elements=\" + std::to_string(elements) + \")\");\n        return true;\n    }\n\n    bool end_object() override\n    {\n        events.push_back(\"end_object()\");\n        return true;\n    }\n\n    bool start_array(std::size_t elements) override\n    {\n        events.push_back(\"start_array(elements=\" + std::to_string(elements) + \")\");\n        return true;\n    }\n\n    bool end_array() override\n    {\n        events.push_back(\"end_array()\");\n        return true;\n    }\n\n    bool key(string_t&amp; val) override\n    {\n        events.push_back(\"key(val=\" + val + \")\");\n        return true;\n    }\n\n    bool binary(json::binary_t&amp; val) override\n    {\n        events.push_back(\"binary(val=[...])\");\n        return true;\n    }\n\n    bool parse_error(std::size_t position, const std::string&amp; last_token, const json::exception&amp; ex) override\n    {\n        events.push_back(\"parse_error(position=\" + std::to_string(position) + \", last_token=\" + last_token + \",\\n            ex=\" + std::string(ex.what()) + \")\");\n        return false;\n    }\n};\n\nint main()\n{\n    // a JSON text\n    auto text = R\"(\n    {\n        \"Image\": {\n            \"Width\":  800,\n            \"Height\": 600,\n            \"Title\":  \"View from 15th Floor\",\n            \"Thumbnail\": {\n                \"Url\":    \"http://www.example.com/image/481989943\",\n                \"Height\": 125,\n                \"Width\":  100\n            },\n            \"Animated\" : false,\n            \"IDs\": [116, 943, 234, -38793],\n            \"DeletionDate\": null,\n            \"Distance\": 12.723374634\n        }\n    }]\n    )\";\n\n    // create a SAX event consumer object\n    sax_event_consumer sec;\n\n    // parse JSON\n    bool result = json::sax_parse(text, &amp;sec);\n\n    // output the recorded events\n    for (auto&amp; event : sec.events)\n    {\n        std::cout &lt;&lt; event &lt;&lt; \"\\n\";\n    }\n\n    // output the result of sax_parse\n    std::cout &lt;&lt; \"\\nresult: \" &lt;&lt; std::boolalpha &lt;&lt; result &lt;&lt; std::endl;\n}\n</code></pre> <p>Output:</p> <pre><code>start_object(elements=18446744073709551615)\nkey(val=Image)\nstart_object(elements=18446744073709551615)\nkey(val=Width)\nnumber_unsigned(val=800)\nkey(val=Height)\nnumber_unsigned(val=600)\nkey(val=Title)\nstring(val=View from 15th Floor)\nkey(val=Thumbnail)\nstart_object(elements=18446744073709551615)\nkey(val=Url)\nstring(val=http://www.example.com/image/481989943)\nkey(val=Height)\nnumber_unsigned(val=125)\nkey(val=Width)\nnumber_unsigned(val=100)\nend_object()\nkey(val=Animated)\nboolean(val=false)\nkey(val=IDs)\nstart_array(elements=18446744073709551615)\nnumber_unsigned(val=116)\nnumber_unsigned(val=943)\nnumber_unsigned(val=234)\nnumber_integer(val=-38793)\nend_array()\nkey(val=DeletionDate)\nnull()\nkey(val=Distance)\nnumber_float(val=12.723375, s=12.723374634)\nend_object()\nend_object()\nparse_error(position=460, last_token=12.723374634&lt;U+000A&gt;        }&lt;U+000A&gt;    }],\n            ex=[json.exception.parse_error.101] parse error at line 17, column 6: syntax error while parsing value - unexpected ']'; expected end of input)\n\nresult: false\n</code></pre>"},{"location":"api/json_sax/string/#version-history","title":"Version history","text":"<ul> <li>Added in version 3.2.0.</li> </ul>"},{"location":"api/macros/","title":"Macros","text":"<p>Some aspects of the library can be configured by defining preprocessor macros before including the <code>json.hpp</code> header. See also the macro overview page.</p>"},{"location":"api/macros/#runtime-assertions","title":"Runtime assertions","text":"<ul> <li>JSON_ASSERT(x) - control behavior of runtime assertions</li> </ul>"},{"location":"api/macros/#exceptions","title":"Exceptions","text":"<ul> <li>JSON_CATCH_USER(exception)JSON_THROW_USER(exception)JSON_TRY_USER - control exceptions</li> <li>JSON_DIAGNOSTICS - control extended diagnostics</li> <li>JSON_DIAGNOSTIC_POSITIONS - access positions of elements</li> <li>JSON_NOEXCEPTION - switch off exceptions</li> </ul>"},{"location":"api/macros/#language-support","title":"Language support","text":"<ul> <li>JSON_HAS_CPP_11JSON_HAS_CPP_14JSON_HAS_CPP_17JSON_HAS_CPP_20 - set supported C++ standard</li> <li>JSON_HAS_FILESYSTEMJSON_HAS_EXPERIMENTAL_FILESYSTEM - control <code>std::filesystem</code> support</li> <li>JSON_HAS_RANGES - control <code>std::ranges</code> support</li> <li>JSON_HAS_THREE_WAY_COMPARISON - control 3-way comparison support</li> <li>JSON_NO_IO - switch off functions relying on certain C++ I/O headers</li> <li>JSON_SKIP_UNSUPPORTED_COMPILER_CHECK - do not warn about unsupported compilers</li> <li>JSON_USE_GLOBAL_UDLS - place user-defined string literals (UDLs) into the global namespace</li> </ul>"},{"location":"api/macros/#library-version","title":"Library version","text":"<ul> <li>JSON_SKIP_LIBRARY_VERSION_CHECK - skip library version check</li> <li>NLOHMANN_JSON_VERSION_MAJORNLOHMANN_JSON_VERSION_MINORNLOHMANN_JSON_VERSION_PATCH   - library version information</li> </ul>"},{"location":"api/macros/#library-namespace","title":"Library namespace","text":"<ul> <li>NLOHMANN_JSON_NAMESPACE - full name of the <code>nlohmann</code> namespace</li> <li>NLOHMANN_JSON_NAMESPACE_BEGINNLOHMANN_JSON_NAMESPACE_END - open and   close the library namespace</li> <li>NLOHMANN_JSON_NAMESPACE_NO_VERSION - disable the version component of   the inline namespace</li> </ul>"},{"location":"api/macros/#type-conversions","title":"Type conversions","text":"<ul> <li>JSON_BRACE_INIT_COPY_SEMANTICS - opt in to copy/move semantics for single-element brace initialization</li> <li>JSON_DISABLE_ENUM_SERIALIZATION - switch off default serialization/deserialization functions for enums</li> <li>JSON_USE_IMPLICIT_CONVERSIONS - control implicit conversions</li> </ul>"},{"location":"api/macros/#comparison-behavior","title":"Comparison behavior","text":"<ul> <li>JSON_USE_LEGACY_DISCARDED_VALUE_COMPARISON -   control comparison of discarded values</li> </ul>"},{"location":"api/macros/#serializationdeserialization-macros","title":"Serialization/deserialization macros","text":""},{"location":"api/macros/#enums","title":"Enums","text":"<ul> <li>NLOHMANN_JSON_SERIALIZE_ENUM - serialize/deserialize an enum</li> <li>NLOHMANN_JSON_SERIALIZE_ENUM_STRICT - serialize/deserialize an enum with exceptions</li> </ul>"},{"location":"api/macros/#classes-and-structs","title":"Classes and structs","text":"<ul> <li>NLOHMANN_DEFINE_TYPE_INTRUSIVE - serialize/deserialize a non-derived class   with private members</li> <li>NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT - serialize/deserialize a   non-derived class with private members; uses default values</li> <li>NLOHMANN_DEFINE_TYPE_INTRUSIVE_ONLY_SERIALIZE - serialize a non-derived class   with private members</li> <li>NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE - serialize/deserialize a non-derived   class</li> <li>NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT - serialize/deserialize a   non-derived class; uses default values</li> <li> <p>NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE - serialize a   non-derived class</p> </li> <li> <p>NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE - serialize/deserialize a derived class   with private members</p> </li> <li>NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_DEFAULT - serialize/deserialize a   derived class with private members; uses default values</li> <li>NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_ONLY_SERIALIZE - serialize a derived   class with private members</li> <li>NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE - serialize/deserialize a derived   class</li> <li>NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_DEFAULT - serialize/deserialize   a derived class; uses default values</li> <li>NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE - serialize a derived   class</li> <li>NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_NAMES - serialize/deserialize a non-derived class   with private members; uses custom names</li> <li>NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT_WITH_NAMES - serialize/deserialize a   non-derived class with private members; uses default values; uses custom names</li> <li>NLOHMANN_DEFINE_TYPE_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES - serialize a non-derived class   with private members; uses custom names</li> <li>NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_NAMES - serialize/deserialize a non-derived   class; uses custom names</li> <li>NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT_WITH_NAMES - serialize/deserialize a   non-derived class; uses default values; uses custom names</li> <li> <p>NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES - serialize a   non-derived class; uses custom names</p> </li> <li> <p>NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_NAMES - serialize/deserialize a derived class   with private members; uses custom names</p> </li> <li>NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_DEFAULT_WITH_NAMES - serialize/deserialize a   derived class with private members; uses default values; uses custom names</li> <li>NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES - serialize a derived   class with private members; uses custom names</li> <li>NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_NAMES - serialize/deserialize a derived   class; uses custom names</li> <li>NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_DEFAULT_WITH_NAMES - serialize/deserialize   a derived class; uses default values; uses custom names</li> <li>NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES - serialize a derived   class; uses custom names</li> </ul>"},{"location":"api/macros/json_assert/","title":"JSON_ASSERT","text":"<pre><code>#define JSON_ASSERT(x) /* value */\n</code></pre> <p>This macro controls which code is executed for runtime assertions of the library.</p>"},{"location":"api/macros/json_assert/#parameters","title":"Parameters","text":"<code>x</code> (in) expression of a scalar type"},{"location":"api/macros/json_assert/#default-definition","title":"Default definition","text":"<p>The default value is <code>assert(x)</code>.</p> <pre><code>#define JSON_ASSERT(x) assert(x)\n</code></pre> <p>Therefore, assertions can be switched off by defining <code>NDEBUG</code>.</p>"},{"location":"api/macros/json_assert/#notes","title":"Notes","text":"<ul> <li>The library uses numerous assertions to guarantee invariants and to abort in case of otherwise undefined behavior   (e.g., when calling operator[] with a missing object key on a <code>const</code> object). See   page runtime assertions for more information.</li> <li>Defining the macro to code that does not call <code>std::abort</code> may leave the library in an undefined state.</li> <li>The macro is undefined outside the library.</li> </ul>"},{"location":"api/macros/json_assert/#examples","title":"Examples","text":"Example 1: default behavior <p>The following code will trigger an assertion at runtime:</p> <pre><code>#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    const json j = {{\"key\", \"value\"}};\n    auto v = j[\"missing\"];\n}\n</code></pre> <p>Output:</p> <pre><code>Assertion failed: (m_value.object-&gt;find(key) != m_value.object-&gt;end()), function operator[], file json.hpp, line 2144.\n</code></pre> Example 2: user-defined behavior <p>The assertion reporting can be changed by defining <code>JSON_ASSERT(x)</code> differently.</p> <pre><code>#include &lt;cstdio&gt;\n#include &lt;cstdlib&gt;\n#define JSON_ASSERT(x) if(!(x)){fprintf(stderr, \"assertion error in %s\\n\", __FUNCTION__); std::abort();}\n\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    const json j = {{\"key\", \"value\"}};\n    auto v = j[\"missing\"];\n}\n</code></pre> <p>Output:</p> <pre><code>assertion error in operator[]\n</code></pre>"},{"location":"api/macros/json_assert/#see-also","title":"See also","text":"<ul> <li>Runtime Assertions - overview documentation</li> </ul>"},{"location":"api/macros/json_assert/#version-history","title":"Version history","text":"<ul> <li>Added in version 3.9.0.</li> </ul>"},{"location":"api/macros/json_brace_init_copy_semantics/","title":"JSON_BRACE_INIT_COPY_SEMANTICS","text":"<pre><code>#define JSON_BRACE_INIT_COPY_SEMANTICS /* value */\n</code></pre> <p>When defined to <code>1</code>, single-element brace initialization of a <code>basic_json</code> value is treated as a copy/move of the element rather than wrapping it in a single-element array.</p>"},{"location":"api/macros/json_brace_init_copy_semantics/#default-definition","title":"Default definition","text":"<p>The default value is <code>0</code> (disabled \u2014 existing behavior is preserved).</p> <pre><code>#define JSON_BRACE_INIT_COPY_SEMANTICS 0\n</code></pre>"},{"location":"api/macros/json_brace_init_copy_semantics/#notes","title":"Notes","text":"<p>Background</p> <p>C++ always prefers the <code>initializer_list</code> constructor over the copy/move constructor for brace initialization. This means that code like</p> <pre><code>json obj = {{\"key\", \"value\"}};\njson j{obj};\n</code></pre> <p>creates a single-element array <code>[{\"key\":\"value\"}]</code> instead of a copy of <code>obj</code>. This behavior is compiler-dependent for older compilers (GCC wrapped, Clang did not), but starting from Clang 20, both compilers behave the same way.</p> <p>Enabling this macro opts into copy/move semantics for this case (see #5074).</p> <p>Opt-in only</p> <p>This macro must be defined before including <code>&lt;nlohmann/json.hpp&gt;</code>. Defining it after the include has no effect.</p> <p>Workaround without the macro</p> <p>To explicitly create a single-element array without enabling this macro, use <code>json::array()</code>:</p> <pre><code>json j = json::array({obj});  // always creates [obj]\n</code></pre>"},{"location":"api/macros/json_brace_init_copy_semantics/#examples","title":"Examples","text":"Default behavior (macro not defined) <p>Without the macro, single-element brace initialization wraps the value in an array:</p> <pre><code>#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    json obj = {{\"key\", \"value\"}};\n\n    json j{obj};\n    // j is [{\"key\":\"value\"}]  -- single-element array, NOT a copy of obj\n}\n</code></pre> Opt-in copy semantics (macro defined to 1) <p>With the macro, single-element brace initialization copies/moves the value:</p> <pre><code>#define JSON_BRACE_INIT_COPY_SEMANTICS 1\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    json obj = {{\"key\", \"value\"}};\n\n    json j{obj};\n    // j is {\"key\":\"value\"}  -- copy of obj\n}\n</code></pre>"},{"location":"api/macros/json_brace_init_copy_semantics/#see-also","title":"See also","text":"<ul> <li>FAQ: Brace initialization yields arrays</li> <li>basic_json(initializer_list_t) - the affected constructor</li> </ul>"},{"location":"api/macros/json_brace_init_copy_semantics/#version-history","title":"Version history","text":"<ul> <li>Added in version 3.12.0.</li> </ul>"},{"location":"api/macros/json_diagnostic_positions/","title":"JSON_DIAGNOSTIC_POSITIONS","text":"<pre><code>#define JSON_DIAGNOSTIC_POSITIONS /* value */\n</code></pre> <p>This macro enables position diagnostics for generated JSON objects.</p> <p>When enabled, two new member functions <code>start_pos()</code> and <code>end_pos()</code> are added to <code>basic_json</code> values. If the value was created by calling the<code>parse</code> function, then these functions allow querying the byte positions of the value in the input it was parsed from. In case the value was constructed by other means, <code>std::string::npos</code> is returned.</p> <p><code>start_pos()</code> returns the position of the first character of a given value in the original JSON string, while <code>end_pos()</code> returns the position of the character following the last character. For objects and arrays, the first and last characters correspond to the opening or closing braces/brackets, respectively. For primitive values, the first and last character represents the opening and closing quotes (strings) or the first and last character of the field's numerical or predefined value (<code>true</code>, <code>false</code>, <code>null</code>), respectively.</p> JSON type return value <code>start_pos()</code> return value <code>end_pos()</code> object position of the opening <code>{</code> position after the closing <code>}</code> array position of the opening <code>[</code> position after the closing <code>]</code> string position of the opening <code>\"</code> position after the closing <code>\"</code> number position of the first character position after the last character boolean position of <code>t</code> for <code>true</code> and <code>f</code> for <code>false</code> position after <code>e</code> null position of <code>n</code> position after <code>l</code> <p>Given the above, <code>end_pos()</code><code>-</code><code>start_pos()</code> for a JSON value provides the length of the parsed JSON string for that value, including the opening or closing braces, brackets, or quotes.</p> <p>Note that enabling this macro increases the size of every JSON value by two <code>std::size_t</code> fields and adds slight runtime overhead to parsing, copying JSON value objects, and the generation of error messages for exceptions. It also causes these values to be reported in those error messages.</p>"},{"location":"api/macros/json_diagnostic_positions/#default-definition","title":"Default definition","text":"<p>The default value is <code>0</code> (position diagnostics are switched off).</p> <pre><code>#define JSON_DIAGNOSTIC_POSITIONS 0\n</code></pre> <p>When the macro is not defined, the library will define it to its default value.</p>"},{"location":"api/macros/json_diagnostic_positions/#notes","title":"Notes","text":"<p>CMake option</p> <p>Diagnostic positions can also be controlled with the CMake option <code>JSON_Diagnostic_Positions</code> (<code>OFF</code> by default) which defines <code>JSON_DIAGNOSTIC_POSITIONS</code> accordingly.</p> <p>Availability</p> <p>Diagnostic positions are only available if the value was created by the <code>parse</code> function. The <code>sax_parse</code> function or all other means to create a JSON value do not set the diagnostic positions and <code>start_pos()</code> and <code>end_pos()</code> will only return <code>std::string::npos</code> for these values.</p> <p>Invalidation</p> <p>The returned positions are only valid as long as the JSON value is not changed. The positions are not updated when the JSON value is changed.</p>"},{"location":"api/macros/json_diagnostic_positions/#examples","title":"Examples","text":"Example: retrieving positions <pre><code>#include &lt;iostream&gt;\n\n#define JSON_DIAGNOSTIC_POSITIONS 1\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    std::string json_string = R\"(\n    {\n        \"address\": {\n            \"street\": \"Fake Street\",\n            \"housenumber\": 1\n        }\n    }\n    )\";\n    json j = json::parse(json_string);\n\n    std::cout &lt;&lt; \"Root diagnostic positions: \\n\";\n    std::cout &lt;&lt; \"\\tstart_pos: \" &lt;&lt; j.start_pos() &lt;&lt; '\\n';\n    std::cout &lt;&lt; \"\\tend_pos:\" &lt;&lt; j.end_pos() &lt;&lt; \"\\n\";\n    std::cout &lt;&lt; \"Original string: \\n\";\n    std::cout &lt;&lt; \"{\\n        \\\"address\\\": {\\n            \\\"street\\\": \\\"Fake Street\\\",\\n            \\\"housenumber\\\": 1\\n        }\\n    }\" &lt;&lt; \"\\n\";\n    std::cout &lt;&lt; \"Parsed string: \\n\";\n    std::cout &lt;&lt; json_string.substr(j.start_pos(), j.end_pos() - j.start_pos()) &lt;&lt; \"\\n\\n\";\n\n    std::cout &lt;&lt; \"address diagnostic positions: \\n\";\n    std::cout &lt;&lt; \"\\tstart_pos:\" &lt;&lt; j[\"address\"].start_pos() &lt;&lt; '\\n';\n    std::cout &lt;&lt; \"\\tend_pos:\" &lt;&lt; j[\"address\"].end_pos() &lt;&lt; \"\\n\\n\";\n    std::cout &lt;&lt; \"Original string: \\n\";\n    std::cout &lt;&lt; \"{            \\\"street\\\": \\\"Fake Street\\\",\\n            \\\"housenumber\\\": 1\\n        }\" &lt;&lt; \"\\n\";\n    std::cout &lt;&lt; \"Parsed string: \\n\";\n    std::cout &lt;&lt; json_string.substr(j[\"address\"].start_pos(), j[\"address\"].end_pos() - j[\"address\"].start_pos()) &lt;&lt; \"\\n\\n\";\n\n    std::cout &lt;&lt; \"street diagnostic positions: \\n\";\n    std::cout &lt;&lt; \"\\tstart_pos:\" &lt;&lt; j[\"address\"][\"street\"].start_pos() &lt;&lt; '\\n';\n    std::cout &lt;&lt; \"\\tend_pos:\" &lt;&lt; j[\"address\"][\"street\"].end_pos() &lt;&lt; \"\\n\\n\";\n    std::cout &lt;&lt; \"Original string: \\n\";\n    std::cout &lt;&lt; \"\\\"Fake Street\\\"\" &lt;&lt; \"\\n\";\n    std::cout &lt;&lt; \"Parsed string: \\n\";\n    std::cout &lt;&lt; json_string.substr(j[\"address\"][\"street\"].start_pos(), j[\"address\"][\"street\"].end_pos() - j[\"address\"][\"street\"].start_pos()) &lt;&lt; \"\\n\\n\";\n\n    std::cout &lt;&lt; \"housenumber diagnostic positions: \\n\";\n    std::cout &lt;&lt; \"\\tstart_pos:\" &lt;&lt; j[\"address\"][\"housenumber\"].start_pos() &lt;&lt; '\\n';\n    std::cout &lt;&lt; \"\\tend_pos:\" &lt;&lt; j[\"address\"][\"housenumber\"].end_pos() &lt;&lt; \"\\n\\n\";\n    std::cout &lt;&lt; \"Original string: \\n\";\n    std::cout &lt;&lt; \"1\" &lt;&lt; \"\\n\";\n    std::cout &lt;&lt; \"Parsed string: \\n\";\n    std::cout &lt;&lt; json_string.substr(j[\"address\"][\"housenumber\"].start_pos(), j[\"address\"][\"housenumber\"].end_pos() - j[\"address\"][\"housenumber\"].start_pos()) &lt;&lt; \"\\n\\n\";\n}\n</code></pre> <p>Output:</p> <pre><code>Root diagnostic positions: \n    start_pos: 5\n    end_pos:109\nOriginal string: \n{\n        \"address\": {\n            \"street\": \"Fake Street\",\n            \"housenumber\": 1\n        }\n    }\nParsed string: \n{\n        \"address\": {\n            \"street\": \"Fake Street\",\n            \"housenumber\": 1\n        }\n    }\n\naddress diagnostic positions: \n    start_pos:26\n    end_pos:103\n\nOriginal string: \n{            \"street\": \"Fake Street\",\n            \"housenumber\": 1\n        }\nParsed string: \n{\n            \"street\": \"Fake Street\",\n            \"housenumber\": 1\n        }\n\nstreet diagnostic positions: \n    start_pos:50\n    end_pos:63\n\nOriginal string: \n\"Fake Street\"\nParsed string: \n\"Fake Street\"\n\nhousenumber diagnostic positions: \n    start_pos:92\n    end_pos:93\n\nOriginal string: \n1\nParsed string: \n1\n</code></pre> <p>The output shows the start/end positions of all the objects and fields in the JSON string.</p> Example 2: using only diagnostic positions in exceptions <pre><code>#include &lt;iostream&gt;\n\n#define JSON_DIAGNOSTIC_POSITIONS 1\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\n/* Demonstration of type error exception with diagnostic positions support enabled */\nint main()\n{\n    //Invalid json string - housenumber type must be int instead of string\n    const std::string json_invalid_string = R\"(\n    {\n        \"address\": {\n            \"street\": \"Fake Street\",\n            \"housenumber\": \"1\"\n        }\n    }\n    )\";\n    json j = json::parse(json_invalid_string);\n    try\n    {\n        int housenumber = j[\"address\"][\"housenumber\"];\n        std::cout &lt;&lt; housenumber;\n    }\n    catch (const json::exception&amp; e)\n    {\n        std::cout &lt;&lt; e.what() &lt;&lt; '\\n';\n    }\n}\n</code></pre> <p>Output:</p> <pre><code>[json.exception.type_error.302] (bytes 92-95) type must be number, but is string\n</code></pre> <pre><code>The output shows the exception with start/end positions only.\n</code></pre> Example 3: using extended diagnostics with positions enabled in exceptions <pre><code>#include &lt;iostream&gt;\n\n#define JSON_DIAGNOSTICS 1\n#define JSON_DIAGNOSTIC_POSITIONS 1\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\n/* Demonstration of type error exception with diagnostic positions support enabled */\nint main()\n{\n    //Invalid json string - housenumber type must be int instead of string\n    const std::string json_invalid_string = R\"(\n    {\n        \"address\": {\n            \"street\": \"Fake Street\",\n            \"housenumber\": \"1\"\n        }\n    }\n    )\";\n    json j = json::parse(json_invalid_string);\n    try\n    {\n        int housenumber = j[\"address\"][\"housenumber\"];\n        std::cout &lt;&lt; housenumber;\n    }\n    catch (const json::exception&amp; e)\n    {\n        std::cout &lt;&lt; e.what() &lt;&lt; '\\n';\n    }\n}\n</code></pre> <p>Output:</p> <pre><code>[json.exception.type_error.302] (/address/housenumber) (bytes 92-95) type must be number, but is string\n</code></pre> <pre><code>The output shows the exception with diagnostic path info and start/end positions.\n</code></pre>"},{"location":"api/macros/json_diagnostic_positions/#see-also","title":"See also","text":"<ul> <li> JSON_Diagnostic_Positions - CMake option to control the macro</li> <li>JSON_DIAGNOSTICS - macro to control extended diagnostics</li> </ul>"},{"location":"api/macros/json_diagnostic_positions/#version-history","title":"Version history","text":"<ul> <li>Added in version 3.12.0.</li> </ul>"},{"location":"api/macros/json_diagnostics/","title":"JSON_DIAGNOSTICS","text":"<pre><code>#define JSON_DIAGNOSTICS /* value */\n</code></pre> <p>This macro enables extended diagnostics for exception messages. Possible values are <code>1</code> to enable or <code>0</code> to disable (default).</p> <p>When enabled, exception messages contain a JSON Pointer to the JSON value that triggered the exception. Note that enabling this macro increases the size of every JSON value by one pointer and adds some runtime overhead.</p>"},{"location":"api/macros/json_diagnostics/#default-definition","title":"Default definition","text":"<p>The default value is <code>0</code> (extended diagnostics are switched off).</p> <pre><code>#define JSON_DIAGNOSTICS 0\n</code></pre> <p>When the macro is not defined, the library will define it to its default value.</p>"},{"location":"api/macros/json_diagnostics/#notes","title":"Notes","text":"<p>ABI compatibility</p> <p>As of version 3.11.0, this macro is no longer required to be defined consistently throughout a codebase to avoid One Definition Rule (ODR) violations, as the value of this macro is encoded in the namespace, resulting in distinct symbol names. </p> <p>This allows different parts of a codebase to use different versions or configurations of this library without causing improper behavior.</p> <p>Where possible, it is still recommended that all code define this the same way for maximum interoperability.</p> <p>CMake option</p> <p>Diagnostic messages can also be controlled with the CMake option <code>JSON_Diagnostics</code> (<code>OFF</code> by default) which defines <code>JSON_DIAGNOSTICS</code> accordingly.</p>"},{"location":"api/macros/json_diagnostics/#examples","title":"Examples","text":"Example 1: default behavior <pre><code>#include &lt;iostream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    json j;\n    j[\"address\"][\"street\"] = \"Fake Street\";\n    j[\"address\"][\"housenumber\"] = \"12\";\n\n    try\n    {\n        int housenumber = j[\"address\"][\"housenumber\"];\n    }\n    catch (const json::exception&amp; e)\n    {\n        std::cout &lt;&lt; e.what() &lt;&lt; '\\n';\n    }\n}\n</code></pre> <p>Output:</p> <pre><code>[json.exception.type_error.302] type must be number, but is string\n</code></pre> <p>This exception can be hard to debug if storing the value <code>\"12\"</code> and accessing it is further apart.</p> Example 2: extended diagnostic messages <pre><code>#include &lt;iostream&gt;\n\n# define JSON_DIAGNOSTICS 1\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    json j;\n    j[\"address\"][\"street\"] = \"Fake Street\";\n    j[\"address\"][\"housenumber\"] = \"12\";\n\n    try\n    {\n        int housenumber = j[\"address\"][\"housenumber\"];\n    }\n    catch (const json::exception&amp; e)\n    {\n        std::cout &lt;&lt; e.what() &lt;&lt; '\\n';\n    }\n}\n</code></pre> <p>Output:</p> <pre><code>[json.exception.type_error.302] (/address/housenumber) type must be number, but is string\n</code></pre> <p>Now the exception message contains a JSON Pointer <code>/address/housenumber</code> that indicates which value has the wrong type.</p> Example 3: using only diagnostic positions in exceptions <pre><code>#include &lt;iostream&gt;\n\n#define JSON_DIAGNOSTIC_POSITIONS 1\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\n/* Demonstration of type error exception with diagnostic positions support enabled */\nint main()\n{\n    //Invalid json string - housenumber type must be int instead of string\n    const std::string json_invalid_string = R\"(\n    {\n        \"address\": {\n            \"street\": \"Fake Street\",\n            \"housenumber\": \"1\"\n        }\n    }\n    )\";\n    json j = json::parse(json_invalid_string);\n    try\n    {\n        int housenumber = j[\"address\"][\"housenumber\"];\n        std::cout &lt;&lt; housenumber;\n    }\n    catch (const json::exception&amp; e)\n    {\n        std::cout &lt;&lt; e.what() &lt;&lt; '\\n';\n    }\n}\n</code></pre> <p>Output:</p> <p><pre><code>[json.exception.type_error.302] (bytes 92-95) type must be number, but is string\n</code></pre>     The output shows the exception with start/end positions only.</p>"},{"location":"api/macros/json_diagnostics/#see-also","title":"See also","text":"<ul> <li> JSON_Diagnostics - CMake option to control the macro</li> <li>JSON_DIAGNOSTIC_POSITIONS - macro to access positions of elements</li> </ul>"},{"location":"api/macros/json_diagnostics/#version-history","title":"Version history","text":"<ul> <li>Added in version 3.10.0.</li> <li>As of version 3.11.0, the definition is allowed to vary between translation units.</li> </ul>"},{"location":"api/macros/json_disable_enum_serialization/","title":"JSON_DISABLE_ENUM_SERIALIZATION","text":"<pre><code>#define JSON_DISABLE_ENUM_SERIALIZATION /* value */\n</code></pre> <p>When defined to <code>1</code>, default serialization and deserialization functions for enums are excluded and have to be provided by the user, for example, using <code>NLOHMANN_JSON_SERIALIZE_ENUM</code> (see arbitrary type conversions for more details).</p> <p>Parsing or serializing an enum will result in a compiler error.</p> <p>This works for both unscoped and scoped enums.</p>"},{"location":"api/macros/json_disable_enum_serialization/#default-definition","title":"Default definition","text":"<p>The default value is <code>0</code>.</p> <pre><code>#define JSON_DISABLE_ENUM_SERIALIZATION 0\n</code></pre>"},{"location":"api/macros/json_disable_enum_serialization/#notes","title":"Notes","text":"<p>CMake option</p> <p>Enum serialization can also be controlled with the CMake option <code>JSON_DisableEnumSerialization</code> (<code>OFF</code> by default) which defines <code>JSON_DISABLE_ENUM_SERIALIZATION</code> accordingly.</p>"},{"location":"api/macros/json_disable_enum_serialization/#examples","title":"Examples","text":"Example 1: Disabled behavior <p>The code below forces the library not to create default serialization/deserialization functions <code>from_json</code> and <code>to_json</code>, meaning the code below does not compile.</p> <pre><code>#define JSON_DISABLE_ENUM_SERIALIZATION 1\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nenum class Choice\n{\n    first,\n    second,\n};\n\nint main()\n{\n    // normally invokes to_json serialization function but with JSON_DISABLE_ENUM_SERIALIZATION defined, it does not\n    const json j = Choice::first; \n\n    // normally invokes from_json parse function but with JSON_DISABLE_ENUM_SERIALIZATION defined, it does not\n    Choice ch = j.get&lt;Choice&gt;();\n}\n</code></pre> Example 2: Serialize enum macro <p>The code below forces the library not to create default serialization/deserialization functions <code>from_json</code> and <code>to_json</code>, but uses <code>NLOHMANN_JSON_SERIALIZE_ENUM</code> to parse and serialize the enum.</p> <pre><code>#define JSON_DISABLE_ENUM_SERIALIZATION 1\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nenum class Choice\n{\n    first,\n    second,\n};\n\nNLOHMANN_JSON_SERIALIZE_ENUM(Choice,\n{\n    { Choice::first, \"first\" },\n    { Choice::second, \"second\" },\n})\n\nint main()\n{\n    // uses user-defined to_json function defined by macro\n    const json j = Choice::first; \n\n    // uses user-defined from_json function defined by macro\n    Choice ch = j.get&lt;Choice&gt;();\n}\n</code></pre> Example 3: User-defined serialization/deserialization functions <p>The code below forces the library not to create default serialization/deserialization functions <code>from_json</code> and <code>to_json</code>, but uses user-defined functions to parse and serialize the enum.</p> <pre><code>#define JSON_DISABLE_ENUM_SERIALIZATION 1\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nenum class Choice\n{\n    first,\n    second,\n};\n\nvoid from_json(const json&amp; j, Choice&amp; ch)\n{\n    auto value = j.get&lt;std::string&gt;();\n    if (value == \"first\")\n    {\n        ch = Choice::first;\n    }\n    else if (value == \"second\")\n    {\n        ch = Choice::second;\n    }\n}\n\nvoid to_json(json&amp; j, const Choice&amp; ch)\n{\n    auto value = j.get&lt;std::string&gt;();\n    if (value == \"first\")\n    {\n        ch = Choice::first;\n    }\n    else if (value == \"second\")\n    {\n        ch = Choice::second;\n    }\n}\n\nint main()\n{\n    // uses user-defined to_json function\n    const json j = Choice::first; \n\n    // uses user-defined from_json function\n    Choice ch = j.get&lt;Choice&gt;();\n}\n</code></pre>"},{"location":"api/macros/json_disable_enum_serialization/#see-also","title":"See also","text":"<ul> <li> JSON_DisableEnumSerialization - CMake option to control   the macro</li> <li><code>NLOHMANN_JSON_SERIALIZE_ENUM</code> - serialize/deserialize an enum</li> </ul>"},{"location":"api/macros/json_disable_enum_serialization/#version-history","title":"Version history","text":"<ul> <li>Added in version 3.11.0.</li> </ul>"},{"location":"api/macros/json_has_cpp_11/","title":"JSON_HAS_CPP_11, JSON_HAS_CPP_14, JSON_HAS_CPP_17, JSON_HAS_CPP_20","text":"<pre><code>#define JSON_HAS_CPP_11\n#define JSON_HAS_CPP_14\n#define JSON_HAS_CPP_17\n#define JSON_HAS_CPP_20\n</code></pre> <p>The library targets C++11, but also supports some features introduced in later C++ versions (e.g., <code>std::string_view</code> support for C++17). For these new features, the library implements some preprocessor checks to determine the C++ standard. By defining any of these symbols, the internal check is overridden and the provided C++ version is unconditionally assumed. This can be helpful for compilers that only implement parts of the standard and would be detected incorrectly.</p>"},{"location":"api/macros/json_has_cpp_11/#default-definition","title":"Default definition","text":"<p>The default value is detected based on preprocessor macros such as <code>__cplusplus</code>, <code>_HAS_CXX17</code>, or <code>_MSVC_LANG</code>.</p>"},{"location":"api/macros/json_has_cpp_11/#notes","title":"Notes","text":"<ul> <li><code>JSON_HAS_CPP_11</code> is always defined.</li> <li>All macros are undefined outside the library.</li> </ul>"},{"location":"api/macros/json_has_cpp_11/#examples","title":"Examples","text":"Example <p>The code below forces the library to use the C++14 standard:</p> <pre><code>#define JSON_HAS_CPP_14 1\n#include &lt;nlohmann/json.hpp&gt;\n\n...\n</code></pre>"},{"location":"api/macros/json_has_cpp_11/#version-history","title":"Version history","text":"<ul> <li>Added in version 3.10.5.</li> </ul>"},{"location":"api/macros/json_has_filesystem/","title":"JSON_HAS_FILESYSTEM / JSON_HAS_EXPERIMENTAL_FILESYSTEM","text":"<pre><code>#define JSON_HAS_FILESYSTEM /* value */\n#define JSON_HAS_EXPERIMENTAL_FILESYSTEM /* value */\n</code></pre> <p>When compiling with C++17, the library provides conversions from and to <code>std::filesystem::path</code>. As compiler support for filesystem is limited, the library tries to detect whether <code>&lt;filesystem&gt;</code>/<code>std::filesystem</code> (<code>JSON_HAS_FILESYSTEM</code>) or <code>&lt;experimental/filesystem&gt;</code>/<code>std::experimental::filesystem</code> (<code>JSON_HAS_EXPERIMENTAL_FILESYSTEM</code>) should be used. To override the built-in check, define <code>JSON_HAS_FILESYSTEM</code> or <code>JSON_HAS_EXPERIMENTAL_FILESYSTEM</code> to <code>1</code>.</p>"},{"location":"api/macros/json_has_filesystem/#default-definition","title":"Default definition","text":"<p>The default value is detected based on the preprocessor macros <code>__cpp_lib_filesystem</code>, <code>__cpp_lib_experimental_filesystem</code>, <code>__has_include(&lt;filesystem&gt;)</code>, or <code>__has_include(&lt;experimental/filesystem&gt;)</code>.</p>"},{"location":"api/macros/json_has_filesystem/#notes","title":"Notes","text":"<ul> <li>Note that older compilers or older versions of libstd++ also require the library <code>stdc++fs</code> to be linked to for   filesystem support.</li> <li>Both macros are undefined outside the library.</li> </ul>"},{"location":"api/macros/json_has_filesystem/#examples","title":"Examples","text":"Example <p>The code below forces the library to use the header <code>&lt;experimental/filesystem&gt;</code>.</p> <pre><code>#define JSON_HAS_EXPERIMENTAL_FILESYSTEM 1\n#include &lt;nlohmann/json.hpp&gt;\n\n...\n</code></pre>"},{"location":"api/macros/json_has_filesystem/#version-history","title":"Version history","text":"<ul> <li>Added in version 3.10.5.</li> </ul>"},{"location":"api/macros/json_has_ranges/","title":"JSON_HAS_RANGES","text":"<pre><code>#define JSON_HAS_RANGES /* value */\n</code></pre> <p>This macro indicates whether the standard library has any support for ranges. Implies support for concepts. Possible values are <code>1</code> when supported or <code>0</code> when unsupported.</p>"},{"location":"api/macros/json_has_ranges/#default-definition","title":"Default definition","text":"<p>The default value is detected based on the preprocessor macro <code>__cpp_lib_ranges</code>.</p> <p>When the macro is not defined, the library will define it to its default value.</p>"},{"location":"api/macros/json_has_ranges/#examples","title":"Examples","text":"Example <p>The code below forces the library to enable support for ranges:</p> <pre><code>#define JSON_HAS_RANGES 1\n#include &lt;nlohmann/json.hpp&gt;\n\n...\n</code></pre>"},{"location":"api/macros/json_has_ranges/#version-history","title":"Version history","text":"<ul> <li>Added in version 3.11.0.</li> </ul>"},{"location":"api/macros/json_has_static_rtti/","title":"JSON_HAS_STATIC_RTTI","text":"<pre><code>#define JSON_HAS_STATIC_RTTI /* value */\n</code></pre> <p>This macro indicates whether the standard library has any support for RTTI (run time type information). Possible values are <code>1</code> when supported or <code>0</code> when unsupported.</p>"},{"location":"api/macros/json_has_static_rtti/#default-definition","title":"Default definition","text":"<p>The default value is detected based on the preprocessor macro <code>_HAS_STATIC_RTTI</code>.</p> <p>When the macro is not defined, the library will define it to its default value.</p>"},{"location":"api/macros/json_has_static_rtti/#examples","title":"Examples","text":"Example <p>The code below forces the library to enable support for libraries with RTTI dependence:</p> <pre><code>#define JSON_HAS_STATIC_RTTI 1\n#include &lt;nlohmann/json.hpp&gt;\n\n...\n</code></pre>"},{"location":"api/macros/json_has_static_rtti/#version-history","title":"Version history","text":"<ul> <li>Added in version 3.11.3.</li> </ul>"},{"location":"api/macros/json_has_three_way_comparison/","title":"JSON_HAS_THREE_WAY_COMPARISON","text":"<pre><code>#define JSON_HAS_THREE_WAY_COMPARISON /* value */\n</code></pre> <p>This macro indicates whether the compiler and standard library support 3-way comparison. Possible values are <code>1</code> when supported or <code>0</code> when unsupported.</p>"},{"location":"api/macros/json_has_three_way_comparison/#default-definition","title":"Default definition","text":"<p>The default value is detected based on the preprocessor macros <code>__cpp_impl_three_way_comparison</code> and <code>__cpp_lib_three_way_comparison</code>.</p> <p>When the macro is not defined, the library will define it to its default value.</p>"},{"location":"api/macros/json_has_three_way_comparison/#examples","title":"Examples","text":"Example <p>The code below forces the library to use 3-way comparison:</p> <pre><code>#define JSON_HAS_THREE_WAY_COMPARISON 1\n#include &lt;nlohmann/json.hpp&gt;\n\n...\n</code></pre>"},{"location":"api/macros/json_has_three_way_comparison/#version-history","title":"Version history","text":"<ul> <li>Added in version 3.11.0.</li> </ul>"},{"location":"api/macros/json_no_io/","title":"JSON_NO_IO","text":"<pre><code>#define JSON_NO_IO\n</code></pre> <p>When defined, headers <code>&lt;cstdio&gt;</code>, <code>&lt;ios&gt;</code>, <code>&lt;iosfwd&gt;</code>, <code>&lt;istream&gt;</code>, and <code>&lt;ostream&gt;</code> are not included and parse functions relying on these headers are excluded. This is relevant for environments where these I/O functions are disallowed for security reasons (e.g., Intel Software Guard Extensions (SGX)).</p>"},{"location":"api/macros/json_no_io/#default-definition","title":"Default definition","text":"<p>By default, <code>JSON_NO_IO</code> is not defined.</p> <pre><code>#undef JSON_NO_IO\n</code></pre>"},{"location":"api/macros/json_no_io/#examples","title":"Examples","text":"Example <p>The code below forces the library not to use the headers <code>&lt;cstdio&gt;</code>, <code>&lt;ios&gt;</code>, <code>&lt;iosfwd&gt;</code>, <code>&lt;istream&gt;</code>, and <code>&lt;ostream&gt;</code>.</p> <pre><code>#define JSON_NO_IO 1\n#include &lt;nlohmann/json.hpp&gt;\n\n...\n</code></pre>"},{"location":"api/macros/json_no_io/#version-history","title":"Version history","text":"<ul> <li>Added in version 3.10.0.</li> </ul>"},{"location":"api/macros/json_noexception/","title":"JSON_NOEXCEPTION","text":"<pre><code>#define JSON_NOEXCEPTION\n</code></pre> <p>Exceptions can be switched off by defining the symbol <code>JSON_NOEXCEPTION</code>. When defining <code>JSON_NOEXCEPTION</code>, <code>try</code> is replaced by <code>if (true)</code>, <code>catch</code> is replaced by <code>if (false)</code>, and <code>throw</code> is replaced by <code>std::abort()</code>.</p> <p>The same effect is achieved by setting the compiler flag <code>-fno-exceptions</code>.</p>"},{"location":"api/macros/json_noexception/#default-definition","title":"Default definition","text":"<p>By default, the macro is not defined.</p> <pre><code>#undef JSON_NOEXCEPTION\n</code></pre>"},{"location":"api/macros/json_noexception/#notes","title":"Notes","text":"<p>The explanatory <code>what()</code> string of exceptions is not available for MSVC if exceptions are disabled, see #2824.</p>"},{"location":"api/macros/json_noexception/#examples","title":"Examples","text":"Example <p>The code below switches off exceptions in the library.</p> <pre><code>#define JSON_NOEXCEPTION 1\n#include &lt;nlohmann/json.hpp&gt;\n\n...\n</code></pre>"},{"location":"api/macros/json_noexception/#see-also","title":"See also","text":"<ul> <li>Switch off exceptions for more information how to switch off exceptions</li> </ul>"},{"location":"api/macros/json_noexception/#version-history","title":"Version history","text":"<p>Added in version 2.1.0.</p>"},{"location":"api/macros/json_skip_library_version_check/","title":"JSON_SKIP_LIBRARY_VERSION_CHECK","text":"<pre><code>#define JSON_SKIP_LIBRARY_VERSION_CHECK\n</code></pre> <p>When defined, the library will not create a compiler warning when a different version of the library was already included.</p>"},{"location":"api/macros/json_skip_library_version_check/#default-definition","title":"Default definition","text":"<p>By default, the macro is not defined.</p> <pre><code>#undef JSON_SKIP_LIBRARY_VERSION_CHECK\n</code></pre>"},{"location":"api/macros/json_skip_library_version_check/#notes","title":"Notes","text":"<p>ABI compatibility</p> <p>Mixing different library versions in the same code can be a problem as the different versions may not be ABI compatible.</p>"},{"location":"api/macros/json_skip_library_version_check/#examples","title":"Examples","text":"<p>Example</p> <p>The following warning will be shown in case a different version of the library was already included:</p> <pre><code>Already included a different version of the library!\n</code></pre>"},{"location":"api/macros/json_skip_library_version_check/#version-history","title":"Version history","text":"<p>Added in version 3.11.0.</p>"},{"location":"api/macros/json_skip_unsupported_compiler_check/","title":"JSON_SKIP_UNSUPPORTED_COMPILER_CHECK","text":"<pre><code>#define JSON_SKIP_UNSUPPORTED_COMPILER_CHECK\n</code></pre> <p>When defined, the library will not create a compile error when a known unsupported compiler is detected. This allows  using the library with compilers that do not fully support C++11 and may only work if unsupported features are not used.</p>"},{"location":"api/macros/json_skip_unsupported_compiler_check/#default-definition","title":"Default definition","text":"<p>By default, the macro is not defined.</p> <pre><code>#undef JSON_SKIP_UNSUPPORTED_COMPILER_CHECK\n</code></pre>"},{"location":"api/macros/json_skip_unsupported_compiler_check/#examples","title":"Examples","text":"Example <p>The code below switches off the check whether the compiler is supported.</p> <pre><code>#define JSON_SKIP_UNSUPPORTED_COMPILER_CHECK 1\n#include &lt;nlohmann/json.hpp&gt;\n\n...\n</code></pre>"},{"location":"api/macros/json_skip_unsupported_compiler_check/#version-history","title":"Version history","text":"<p>Added in version 3.2.0.</p>"},{"location":"api/macros/json_throw_user/","title":"JSON_CATCH_USER, JSON_THROW_USER, JSON_TRY_USER","text":"<pre><code>// (1)\n#define JSON_CATCH_USER(exception) /* value */\n// (2)\n#define JSON_THROW_USER(exception) /* value */\n// (3)\n#define JSON_TRY_USER /* value */\n</code></pre> <p>Controls how exceptions are handled by the library.</p> <ol> <li>This macro overrides <code>catch</code> calls inside the library.    The argument is the type of the exception to catch. As of version 3.8.0, the library only catches <code>std::out_of_range</code>    exceptions internally to rethrow them as <code>json::out_of_range</code> exceptions.    The macro is always followed by a scope.</li> <li>This macro overrides <code>throw</code> calls inside the library. The argument is the exception to be thrown. Note that    <code>JSON_THROW_USER</code> should leave the current scope (e.g., by throwing or aborting), as continuing after it may yield    undefined behavior.</li> <li>This macro overrides <code>try</code> calls inside the library. It has no arguments and is always followed by a scope.</li> </ol>"},{"location":"api/macros/json_throw_user/#parameters","title":"Parameters","text":"<code>exception</code> (in) an exception type"},{"location":"api/macros/json_throw_user/#default-definition","title":"Default definition","text":"<p>By default, the macros map to their respective C++ keywords:</p> <pre><code>#define JSON_CATCH_USER(exception) catch(exception)\n#define JSON_THROW_USER(exception) throw exception\n#define JSON_TRY_USER              try\n</code></pre> <p>When exceptions are switched off, the <code>try</code> block is executed unconditionally, and throwing exceptions is replaced by calling <code>std::abort</code> to make reaching the <code>throw</code> branch abort the process.</p> <pre><code>#define JSON_THROW_USER(exception) std::abort()\n#define JSON_TRY_USER              if (true)\n#define JSON_CATCH_USER(exception) if (false)\n</code></pre>"},{"location":"api/macros/json_throw_user/#examples","title":"Examples","text":"Example <p>The code below switches off exceptions and creates a log entry with a detailed error message in case of errors.</p> <pre><code>#include &lt;iostream&gt;\n\n#define JSON_TRY_USER if(true)\n#define JSON_CATCH_USER(exception) if(false)\n#define JSON_THROW_USER(exception)                           \\\n    {std::clog &lt;&lt; \"Error in \" &lt;&lt; __FILE__ &lt;&lt; \":\" &lt;&lt; __LINE__ \\\n               &lt;&lt; \" (function \" &lt;&lt; __FUNCTION__ &lt;&lt; \") - \"    \\\n               &lt;&lt; (exception).what() &lt;&lt; std::endl;           \\\n     std::abort();}\n\n#include &lt;nlohmann/json.hpp&gt;\n</code></pre>"},{"location":"api/macros/json_throw_user/#see-also","title":"See also","text":"<ul> <li>Switch off exceptions for more information how to switch off exceptions</li> <li>JSON_NOEXCEPTION - switch off exceptions</li> </ul>"},{"location":"api/macros/json_throw_user/#version-history","title":"Version history","text":"<ul> <li>Added in version 3.1.0.</li> </ul>"},{"location":"api/macros/json_use_global_udls/","title":"JSON_USE_GLOBAL_UDLS","text":"<pre><code>#define JSON_USE_GLOBAL_UDLS /* value */\n</code></pre> <p>When defined to <code>1</code>, the user-defined string literals (UDLs) are placed into the global namespace instead of <code>nlohmann::literals::json_literals</code>.</p>"},{"location":"api/macros/json_use_global_udls/#default-definition","title":"Default definition","text":"<p>The default value is <code>1</code>.</p> <pre><code>#define JSON_USE_GLOBAL_UDLS 1\n</code></pre> <p>When the macro is not defined, the library will define it to its default value.</p>"},{"location":"api/macros/json_use_global_udls/#notes","title":"Notes","text":"<p>Future behavior change</p> <p>The user-defined string literals will be removed from the global namespace in the next major release of the library.</p> <p>To prepare existing code, define <code>JSON_USE_GLOBAL_UDLS</code> to <code>0</code> and bring the string literals into scope where needed. Refer to any of the string literals for details.</p> <p>CMake option</p> <p>The placement of user-defined string literals can also be controlled with the CMake option <code>JSON_GlobalUDLs</code> (<code>ON</code> by default) which defines <code>JSON_USE_GLOBAL_UDLS</code> accordingly.</p>"},{"location":"api/macros/json_use_global_udls/#examples","title":"Examples","text":"Example 1: Default behavior <p>The code below shows the default behavior using the <code>_json</code> UDL.</p> <pre><code>#include &lt;nlohmann/json.hpp&gt;\n\n#include &lt;iostream&gt;\n\nint main()\n{\n    auto j = \"42\"_json;\n\n    std::cout &lt;&lt; j &lt;&lt; std::endl;\n}\n</code></pre> <p>Output:</p> <pre><code>42\n</code></pre> Example 2: Namespaced UDLs <p>The code below shows how UDLs need to be brought into scope before using <code>_json</code> when <code>JSON_USE_GLOBAL_UDLS</code> is defined to <code>0</code>.</p> <pre><code>#define JSON_USE_GLOBAL_UDLS 0\n#include &lt;nlohmann/json.hpp&gt;\n\n#include &lt;iostream&gt;\n\nint main()\n{\n    // auto j = \"42\"_json; // This line would fail to compile,\n                           // because the UDLs are not in the global namespace\n\n    // Bring the UDLs into scope\n    using namespace nlohmann::json_literals;\n\n    auto j = \"42\"_json;\n\n    std::cout &lt;&lt; j &lt;&lt; std::endl;\n}\n</code></pre> <p>Output:</p> <pre><code>42\n</code></pre>"},{"location":"api/macros/json_use_global_udls/#see-also","title":"See also","text":"<ul> <li><code>operator\"\"_json</code></li> <li><code>operator\"\"_json_pointer</code></li> <li> JSON_GlobalUDLs - CMake option to control the macro</li> </ul>"},{"location":"api/macros/json_use_global_udls/#version-history","title":"Version history","text":"<ul> <li>Added in version 3.11.0.</li> </ul>"},{"location":"api/macros/json_use_implicit_conversions/","title":"JSON_USE_IMPLICIT_CONVERSIONS","text":"<pre><code>#define JSON_USE_IMPLICIT_CONVERSIONS /* value */\n</code></pre> <p>When defined to <code>0</code>, implicit conversions are switched off. By default, implicit conversions are switched on. The value directly affects <code>operator ValueType</code>.</p>"},{"location":"api/macros/json_use_implicit_conversions/#default-definition","title":"Default definition","text":"<p>By default, implicit conversions are enabled.</p> <pre><code>#define JSON_USE_IMPLICIT_CONVERSIONS 1\n</code></pre>"},{"location":"api/macros/json_use_implicit_conversions/#notes","title":"Notes","text":"<p>Future behavior change</p> <p>Implicit conversions will be switched off by default in the next major release of the library.</p> <p>You can prepare existing code by already defining <code>JSON_USE_IMPLICIT_CONVERSIONS</code> to <code>0</code> and replace any implicit conversions with calls to <code>get</code>.</p> <p>CMake option</p> <p>Implicit conversions can also be controlled with the CMake option <code>JSON_ImplicitConversions</code> (<code>ON</code> by default) which defines <code>JSON_USE_IMPLICIT_CONVERSIONS</code> accordingly.</p>"},{"location":"api/macros/json_use_implicit_conversions/#examples","title":"Examples","text":"Example <p>This is an example for an implicit conversion:</p> <pre><code>json j = \"Hello, world!\";\nstd::string s = j;\n</code></pre> <p>When <code>JSON_USE_IMPLICIT_CONVERSIONS</code> is defined to <code>0</code>, the code above does no longer compile. Instead, it must be written like this:</p> <pre><code>json j = \"Hello, world!\";\nauto s = j.get&lt;std::string&gt;();\n</code></pre>"},{"location":"api/macros/json_use_implicit_conversions/#see-also","title":"See also","text":"<ul> <li>operator ValueType - get a value (implicit)</li> <li>get - get a value (explicit)</li> <li> JSON_ImplicitConversions - CMake option to control the macro</li> </ul>"},{"location":"api/macros/json_use_implicit_conversions/#version-history","title":"Version history","text":"<ul> <li>Added in version 3.9.0.</li> </ul>"},{"location":"api/macros/json_use_legacy_discarded_value_comparison/","title":"JSON_USE_LEGACY_DISCARDED_VALUE_COMPARISON","text":"<pre><code>#define JSON_USE_LEGACY_DISCARDED_VALUE_COMPARISON /* value */\n</code></pre> <p>This macro enables the (incorrect) legacy comparison behavior of discarded JSON values. Possible values are <code>1</code> to enable or <code>0</code> to disable (default).</p> <p>When enabled, comparisons involving at least one discarded JSON value yield results as follows:</p> Operator Result <code>==</code> <code>false</code> <code>!=</code> <code>true</code> <code>&lt;</code> <code>false</code> <code>&lt;=</code> <code>true</code> <code>&gt;=</code> <code>true</code> <code>&gt;</code> <code>false</code> <p>Otherwise, comparisons involving at least one discarded JSON value always yield <code>false</code>.</p>"},{"location":"api/macros/json_use_legacy_discarded_value_comparison/#default-definition","title":"Default definition","text":"<p>The default value is <code>0</code>.</p> <pre><code>#define JSON_USE_LEGACY_DISCARDED_VALUE_COMPARISON 0\n</code></pre> <p>When the macro is not defined, the library will define it to its default value.</p>"},{"location":"api/macros/json_use_legacy_discarded_value_comparison/#notes","title":"Notes","text":"<p>Inconsistent behavior in C++20 and beyond</p> <p>When targeting C++20 or above, enabling the legacy comparison behavior is strongly discouraged.</p> <ul> <li>The 3-way comparison operator (<code>&lt;=&gt;</code>) will always give the correct result     (<code>std::partial_ordering::unordered</code>) regardless of the value of     <code>JSON_USE_LEGACY_DISCARDED_VALUE_COMPARISON</code>.</li> <li>Overloads for the equality and relational operators emulate the legacy behavior.</li> </ul> <p>Code outside your control may use either 3-way comparison or the equality and relational operators, resulting in inconsistent and unpredictable behavior.</p> <p>See <code>operator&lt;=&gt;</code> for more information on 3-way comparison.</p> <p>Deprecation</p> <p>The legacy comparison behavior is deprecated and may be removed in a future major version release.</p> <p>New code should not depend on it and existing code should try to remove or rewrite expressions relying on it.</p> <p>CMake option</p> <p>Legacy comparison can also be controlled with the CMake option <code>JSON_LegacyDiscardedValueComparison</code> (<code>OFF</code> by default) which defines <code>JSON_USE_LEGACY_DISCARDED_VALUE_COMPARISON</code> accordingly.</p>"},{"location":"api/macros/json_use_legacy_discarded_value_comparison/#examples","title":"Examples","text":"Example <p>The code below switches on the legacy discarded value comparison behavior in the library.</p> <pre><code>#define JSON_USE_LEGACY_DISCARDED_VALUE_COMPARISON 1\n#include &lt;nlohmann/json.hpp&gt;\n\n...\n</code></pre>"},{"location":"api/macros/json_use_legacy_discarded_value_comparison/#see-also","title":"See also","text":"<ul> <li> JSON_LegacyDiscardedValueComparison - CMake option to control the macro</li> </ul>"},{"location":"api/macros/json_use_legacy_discarded_value_comparison/#version-history","title":"Version history","text":"<ul> <li>Added in version 3.11.0.</li> </ul>"},{"location":"api/macros/nlohmann_define_derived_type/","title":"NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_ONLY_SERIALIZE, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE","text":"NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_DEFAULT,     NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_ONLY_SERIALIZE, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE,     NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE <pre><code>// (1)\n#define NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE(type, base_type, member...)\n// (2)\n#define NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_DEFAULT(type, base_type, member...)\n// (3)\n#define NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_ONLY_SERIALIZE(type, base_type, member...)\n\n// (4)\n#define NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE(type, base_type, member...)\n// (5)\n#define NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_DEFAULT(type, base_type, member...)\n// (6)\n#define NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE(type, base_type, member...)\n</code></pre> <p>These macros can be used to simplify the serialization/deserialization of derived types if you want to use a JSON object as serialization and want to use the member variable names as object keys in that object.</p> <ul> <li>Macros 1, 2, and 3 are to be defined inside the class/struct to create code for. Like <code>NLOHMANN_DEFINE_TYPE_INTRUSIVE</code>, they can access private members.</li> <li>Macros 4, 5, and 6 are to be defined outside the class/struct to create code for, but inside its namespace. Like <code>NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE</code>, they cannot access private members.</li> </ul> <p>The first parameter is the name of the derived class/struct, the second parameter is the name of the base class/struct and all remaining parameters name the members. The base type must be already serializable/deserializable.</p> <ul> <li>Macros 1 and 4 will use <code>at</code> during deserialization and will throw   <code>out_of_range.403</code> if a key is missing in the JSON object.</li> <li>Macros 2 and 5 will use <code>value</code> during deserialization and fall back to the default value for the    respective type of the member variable if a key in the JSON object is missing. The generated <code>from_json()</code> function    default constructs an object and uses its values as the defaults when calling the <code>value</code> function.</li> </ul> <p>Summary:</p> Need access to private members Need only de-serialization Allow missing values when de-serializing macro NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_DEFAULT NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_ONLY_SERIALIZE NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_DEFAULT NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE"},{"location":"api/macros/nlohmann_define_derived_type/#parameters","title":"Parameters","text":"<code>type</code> (in) name of the type (class, struct) to serialize/deserialize <code>base_type</code> (in) name of the base type (class, struct) <code>type</code> is derived from <code>member</code> (in) name of the member variable to serialize/deserialize; up to 63 members can be given as a comma-separated list"},{"location":"api/macros/nlohmann_define_derived_type/#default-definition","title":"Default definition","text":"<p>Macros 1 and 2 add two friend functions to the class which take care of the serialization and deserialization:</p> <pre><code>template&lt;typename BasicJsonType&gt;\nfriend void to_json(BasicJsonType&amp;, const type&amp;);\ntemplate&lt;typename BasicJsonType&gt;\nfriend void from_json(const BasicJsonType&amp;, type&amp;);\n</code></pre> <p>Macros 4 and 5 add two functions to the namespace which take care of the serialization and deserialization:</p> <pre><code>template&lt;typename BasicJsonType&gt;\nvoid to_json(BasicJsonType&amp;, const type&amp;);\ntemplate&lt;typename BasicJsonType&gt;\nvoid from_json(const BasicJsonType&amp;, type&amp;);\n</code></pre> <p>Macros 3 and 6 add one function to the namespace, which takes care of the serialization only:</p> <pre><code>template&lt;typename BasicJsonType&gt;\nvoid to_json(BasicJsonType&amp;, const type&amp;);\n</code></pre> <p>In first two cases, they call the <code>to_json</code>/<code>from_json</code> functions of the base type before serializing/deserializing the members of the derived type:</p> <pre><code>class A { /* ... */ };\nclass B : public A { /* ... */ };\n\ntemplate&lt;typename BasicJsonType&gt;\nvoid to_json(BasicJsonType&amp; j, const B&amp; b) {\n    nlohmann::to_json(j, static_cast&lt;const A&amp;&gt;(b));\n    // ...\n}\n\ntemplate&lt;typename BasicJsonType&gt;\nvoid from_json(const BasicJsonType&amp; j, B&amp; b) {\n    nlohmann::from_json(j, static_cast&lt;A&amp;&gt;(b));\n    // ...\n}\n</code></pre> <p>In the third case, only <code>to_json</code> will be called:</p> <pre><code>class A { /* ... */ };\nclass B : public A { /* ... */ };\n\ntemplate&lt;typename BasicJsonType&gt;\nvoid to_json(BasicJsonType&amp; j, const B&amp; b) {\n    nlohmann::to_json(j, static_cast&lt;const A&amp;&gt;(b));\n    // ...\n}\n</code></pre>"},{"location":"api/macros/nlohmann_define_derived_type/#notes","title":"Notes","text":"<p>Prerequisites</p> <ul> <li>Macros 1, 2, and 3 have the same prerequisites of NLOHMANN_DEFINE_TYPE_INTRUSIVE.</li> <li>Macros 4, 5, and 6 have the same prerequisites of NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE.</li> <li>Serialization/deserialization of base types must be defined.</li> </ul> <p>Implementation limits</p> <p>See Implementation limits for NLOHMANN_DEFINE_TYPE_INTRUSIVE and NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE, respectively.</p>"},{"location":"api/macros/nlohmann_define_derived_type/#examples","title":"Examples","text":"NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE <p>Consider the following complete example:</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;iomanip&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing nlohmann::json;\n\nclass A\n{\n  private:\n    double Aa = 0.0;\n    double Ab = 0.0;\n\n  public:\n    A() = default;\n    A(double a, double b) : Aa(a), Ab(b) {}\n    NLOHMANN_DEFINE_TYPE_INTRUSIVE(A, Aa, Ab)\n};\n\nclass B : public A\n{\n  private:\n    int Ba = 0;\n    int Bb = 0;\n\n  public:\n    B() = default;\n    B(int a, int b, double aa, double ab) : A(aa, ab), Ba(a), Bb(b) {}\n    NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE(B, A, Ba, Bb)\n};\n\nint main()\n{\n    B example(23, 42, 3.142, 1.777);\n    json example_json = example;\n\n    std::cout &lt;&lt; std::setw(4) &lt;&lt; example_json &lt;&lt; std::endl;\n}\n</code></pre> <p>Output:</p> <pre><code>{\n    \"Aa\": 3.142,\n    \"Ab\": 1.777,\n    \"Ba\": 23,\n    \"Bb\": 42\n}\n</code></pre> <p>Notes:</p> <ul> <li><code>A</code> and <code>B</code> are default-constructible. This is a requirement for using the macro.</li> <li><code>A</code> has private members and is not a derived class. Hence, macro <code>NLOHMANN_DEFINE_TYPE_INTRUSIVE</code> is used.</li> <li>As <code>B</code> is a derived class, <code>NLOHMANN_DEFINE_TYPE_INTRUSIVE</code> is not applicable, but   <code>NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE</code> must be used.</li> <li>The macro <code>NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE</code> is used inside the class use as   <code>NLOHMANN_DEFINE_TYPE_INTRUSIVE</code>.</li> </ul>"},{"location":"api/macros/nlohmann_define_derived_type/#see-also","title":"See also","text":"<ul> <li>NLOHMANN_DEFINE_TYPE_INTRUSIVE / NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT /    NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_ONLY_SERIALIZE   for similar macros that can be defined inside a non-derived type.</li> <li>NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE / NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT /    NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE   for similar macros that can be defined outside a non-derived type.</li> <li>Arbitrary Type Conversions for an overview.</li> </ul>"},{"location":"api/macros/nlohmann_define_derived_type/#version-history","title":"Version history","text":"<ol> <li>Added in version 3.12.0.</li> <li>Added in version 3.12.0.</li> <li>Added in version 3.12.0.</li> <li>Added in version 3.12.0.</li> <li>Added in version 3.12.0.</li> <li>Added in version 3.12.0.</li> </ol>"},{"location":"api/macros/nlohmann_define_type_intrusive/","title":"NLOHMANN_DEFINE_TYPE_INTRUSIVE, NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_TYPE_INTRUSIVE_ONLY_SERIALIZE","text":"<pre><code>#define NLOHMANN_DEFINE_TYPE_INTRUSIVE(type, member...)              // (1)\n#define NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT(type, member...) // (2)\n#define NLOHMANN_DEFINE_TYPE_INTRUSIVE_ONLY_SERIALIZE(type, member...) // (3)\n</code></pre> <p>These macros can be used to simplify the serialization/deserialization of types if you want to use a JSON object as serialization and want to use the member variable names as object keys in that object. The macro is to be defined inside the class/struct to create code for. Unlike <code>NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE</code>, it can access private members. The first parameter is the name of the class/struct, and all remaining parameters name the members.</p> <ol> <li>Will use <code>at</code> during deserialization and will throw   <code>out_of_range.403</code> if a key is missing in the JSON object.</li> <li>Will use <code>value</code> during deserialization and fall back to the default value for the    respective type of the member variable if a key in the JSON object is missing. The generated <code>from_json()</code> function    default constructs an object and uses its values as the defaults when calling the <code>value</code> function.</li> <li>Only defines the serialization. Useful in cases when the type does not have a default constructor and only serialization is required.</li> </ol> <p>Summary:</p> Need access to private members Need only de-serialization Allow missing values when de-serializing macro NLOHMANN_DEFINE_TYPE_INTRUSIVE NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT NLOHMANN_DEFINE_TYPE_INTRUSIVE_ONLY_SERIALIZE"},{"location":"api/macros/nlohmann_define_type_intrusive/#parameters","title":"Parameters","text":"<code>type</code> (in) name of the type (class, struct) to serialize/deserialize <code>member</code> (in) name of the member variable to serialize/deserialize; up to 63 members can be given as a comma-separated list"},{"location":"api/macros/nlohmann_define_type_intrusive/#default-definition","title":"Default definition","text":"<p>The macros add two friend functions to the class which take care of the serialization and deserialization:</p> <pre><code>template&lt;typename BasicJsonType&gt;\nfriend void to_json(BasicJsonType&amp;, const type&amp;);\ntemplate&lt;typename BasicJsonType&gt;\nfriend void from_json(const BasicJsonType&amp;, type&amp;); // except (3)\n</code></pre> <p>See the examples below for the concrete generated code.</p>"},{"location":"api/macros/nlohmann_define_type_intrusive/#notes","title":"Notes","text":"<p>Prerequisites</p> <ol> <li>The type <code>type</code> must be default constructible (except (3)). See How can I use <code>get()</code> for non-default    constructible/non-copyable types? for how to overcome this limitation.</li> <li>The macro must be used inside the type (class/struct).</li> </ol> <p>Implementation limits</p> <ul> <li>The current implementation is limited to at most 63 member variables. If you want to serialize/deserialize types   with more than 63 member variables, you need to define the <code>to_json</code>/<code>from_json</code> functions manually.</li> </ul>"},{"location":"api/macros/nlohmann_define_type_intrusive/#examples","title":"Examples","text":"Example (1): NLOHMANN_DEFINE_TYPE_INTRUSIVE <p>Consider the following complete example:</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\nusing namespace nlohmann::literals;\n\nnamespace ns\n{\nclass person\n{\n  private:\n    std::string name = \"John Doe\";\n    std::string address = \"123 Fake St\";\n    int age = -1;\n\n  public:\n    person() = default;\n    person(std::string name_, std::string address_, int age_)\n        : name(std::move(name_)), address(std::move(address_)), age(age_)\n    {}\n\n    NLOHMANN_DEFINE_TYPE_INTRUSIVE(person, name, address, age)\n};\n} // namespace ns\n\nint main()\n{\n    ns::person p = {\"Ned Flanders\", \"744 Evergreen Terrace\", 60};\n\n    // serialization: person -&gt; json\n    json j = p;\n    std::cout &lt;&lt; \"serialization: \" &lt;&lt; j &lt;&lt; std::endl;\n\n    // deserialization: json -&gt; person\n    json j2 = R\"({\"address\": \"742 Evergreen Terrace\", \"age\": 40, \"name\": \"Homer Simpson\"})\"_json;\n    auto p2 = j2.get&lt;ns::person&gt;();\n\n    // incomplete deserialization:\n    json j3 = R\"({\"address\": \"742 Evergreen Terrace\", \"name\": \"Maggie Simpson\"})\"_json;\n    try\n    {\n        auto p3 = j3.get&lt;ns::person&gt;();\n    }\n    catch (const json::exception&amp; e)\n    {\n        std::cout &lt;&lt; \"deserialization failed: \" &lt;&lt; e.what() &lt;&lt; std::endl;\n    }\n}\n</code></pre> <p>Output:</p> <pre><code>serialization: {\"address\":\"744 Evergreen Terrace\",\"age\":60,\"name\":\"Ned Flanders\"}\ndeserialization failed: [json.exception.out_of_range.403] key 'age' not found\n</code></pre> <p>Notes:</p> <ul> <li><code>ns::person</code> is default-constructible. This is a requirement for using the macro.</li> <li><code>ns::person</code> has private member variables. This makes <code>NLOHMANN_DEFINE_TYPE_INTRUSIVE</code> applicable, but not   <code>NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE</code>.</li> <li>The macro <code>NLOHMANN_DEFINE_TYPE_INTRUSIVE</code> is used inside the class.</li> <li>A missing key \"age\" in the deserialization yields an exception. To fall back to the default value,   <code>NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT</code> can be used.</li> </ul> <p>The macro is equivalent to:</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\nusing namespace nlohmann::literals;\n\nnamespace ns\n{\nclass person\n{\n  private:\n    std::string name = \"John Doe\";\n    std::string address = \"123 Fake St\";\n    int age = -1;\n\n  public:\n    person() = default;\n    person(std::string name_, std::string address_, int age_)\n        : name(std::move(name_)), address(std::move(address_)), age(age_)\n    {}\n\n    template&lt;typename BasicJsonType&gt;\n    friend void to_json(BasicJsonType&amp; nlohmann_json_j, const person&amp; nlohmann_json_t)\n    {\n        nlohmann_json_j[\"name\"] = nlohmann_json_t.name;\n        nlohmann_json_j[\"address\"] = nlohmann_json_t.address;\n        nlohmann_json_j[\"age\"] = nlohmann_json_t.age;\n    }\n\n    template&lt;typename BasicJsonType&gt;\n    friend void from_json(const BasicJsonType&amp; nlohmann_json_j, person&amp; nlohmann_json_t)\n    {\n        nlohmann_json_t.name = nlohmann_json_j.at(\"name\");\n        nlohmann_json_t.address = nlohmann_json_j.at(\"address\");\n        nlohmann_json_t.age = nlohmann_json_j.at(\"age\");\n    }\n};\n} // namespace ns\n\nint main()\n{\n    ns::person p = {\"Ned Flanders\", \"744 Evergreen Terrace\", 60};\n\n    // serialization: person -&gt; json\n    json j = p;\n    std::cout &lt;&lt; \"serialization: \" &lt;&lt; j &lt;&lt; std::endl;\n\n    // deserialization: json -&gt; person\n    json j2 = R\"({\"address\": \"742 Evergreen Terrace\", \"age\": 40, \"name\": \"Homer Simpson\"})\"_json;\n    auto p2 = j2.get&lt;ns::person&gt;();\n\n    // incomplete deserialization:\n    json j3 = R\"({\"address\": \"742 Evergreen Terrace\", \"name\": \"Maggie Simpson\"})\"_json;\n    try\n    {\n        auto p3 = j3.get&lt;ns::person&gt;();\n    }\n    catch (const json::exception&amp; e)\n    {\n        std::cout &lt;&lt; \"deserialization failed: \" &lt;&lt; e.what() &lt;&lt; std::endl;\n    }\n}\n</code></pre> Example (2): NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT <p>Consider the following complete example:</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\nusing namespace nlohmann::literals;\n\nnamespace ns\n{\nclass person\n{\n  private:\n    std::string name = \"John Doe\";\n    std::string address = \"123 Fake St\";\n    int age = -1;\n\n  public:\n    person() = default;\n    person(std::string name_, std::string address_, int age_)\n        : name(std::move(name_)), address(std::move(address_)), age(age_)\n    {}\n\n    NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT(person, name, address, age)\n};\n} // namespace ns\n\nint main()\n{\n    ns::person p = {\"Ned Flanders\", \"744 Evergreen Terrace\", 60};\n\n    // serialization: person -&gt; json\n    json j = p;\n    std::cout &lt;&lt; \"serialization: \" &lt;&lt; j &lt;&lt; std::endl;\n\n    // deserialization: json -&gt; person\n    json j2 = R\"({\"address\": \"742 Evergreen Terrace\", \"age\": 40, \"name\": \"Homer Simpson\"})\"_json;\n    auto p2 = j2.get&lt;ns::person&gt;();\n\n    // incomplete deserialization:\n    json j3 = R\"({\"address\": \"742 Evergreen Terrace\", \"name\": \"Maggie Simpson\"})\"_json;\n    auto p3 = j3.get&lt;ns::person&gt;();\n    std::cout &lt;&lt; \"roundtrip: \" &lt;&lt; json(p3) &lt;&lt; std::endl;\n}\n</code></pre> <p>Output:</p> <pre><code>serialization: {\"address\":\"744 Evergreen Terrace\",\"age\":60,\"name\":\"Ned Flanders\"}\nroundtrip: {\"address\":\"742 Evergreen Terrace\",\"age\":-1,\"name\":\"Maggie Simpson\"}\n</code></pre> <p>Notes:</p> <ul> <li><code>ns::person</code> is default-constructible. This is a requirement for using the macro.</li> <li><code>ns::person</code> has private member variables. This makes <code>NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT</code> applicable,    but not <code>NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT</code>.</li> <li>The macro <code>NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT</code> is used inside the class.</li> <li>A missing key \"age\" in the deserialization does not yield an exception. Instead, the default value <code>-1</code> is used.</li> </ul> <p>The macro is equivalent to:</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\nusing namespace nlohmann::literals;\n\nnamespace ns\n{\nclass person\n{\n  private:\n    std::string name = \"John Doe\";\n    std::string address = \"123 Fake St\";\n    int age = -1;\n\n  public:\n    person() = default;\n    person(std::string name_, std::string address_, int age_)\n        : name(std::move(name_)), address(std::move(address_)), age(age_)\n    {}\n\n    template&lt;typename BasicJsonType&gt;\n    friend void to_json(BasicJsonType&amp; nlohmann_json_j, const person&amp; nlohmann_json_t)\n    {\n        nlohmann_json_j[\"name\"] = nlohmann_json_t.name;\n        nlohmann_json_j[\"address\"] = nlohmann_json_t.address;\n        nlohmann_json_j[\"age\"] = nlohmann_json_t.age;\n    }\n\n    template&lt;typename BasicJsonType&gt;\n    friend void from_json(const BasicJsonType&amp; nlohmann_json_j, person&amp; nlohmann_json_t)\n    {\n        person nlohmann_json_default_obj;\n        nlohmann_json_t.name = nlohmann_json_j.value(\"name\", nlohmann_json_default_obj.name);\n        nlohmann_json_t.address = nlohmann_json_j.value(\"address\", nlohmann_json_default_obj.address);\n        nlohmann_json_t.age = nlohmann_json_j.value(\"age\", nlohmann_json_default_obj.age);\n    }\n};\n} // namespace ns\n\nint main()\n{\n    ns::person p = {\"Ned Flanders\", \"744 Evergreen Terrace\", 60};\n\n    // serialization: person -&gt; json\n    json j = p;\n    std::cout &lt;&lt; \"serialization: \" &lt;&lt; j &lt;&lt; std::endl;\n\n    // deserialization: json -&gt; person\n    json j2 = R\"({\"address\": \"742 Evergreen Terrace\", \"age\": 40, \"name\": \"Homer Simpson\"})\"_json;\n    auto p2 = j2.get&lt;ns::person&gt;();\n\n    // incomplete deserialization:\n    json j3 = R\"({\"address\": \"742 Evergreen Terrace\", \"name\": \"Maggie Simpson\"})\"_json;\n    auto p3 = j3.get&lt;ns::person&gt;();\n    std::cout &lt;&lt; \"roundtrip: \" &lt;&lt; json(p3) &lt;&lt; std::endl;\n}\n</code></pre> <p>Note how a default-initialized <code>person</code> object is used in the <code>from_json</code> to fill missing values.</p> Example (3): NLOHMANN_DEFINE_TYPE_INTRUSIVE_ONLY_SERIALIZE <p>Consider the following complete example:</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\nusing namespace nlohmann::literals;\n\nnamespace ns\n{\nclass person\n{\n  private:\n    std::string name = \"John Doe\";\n    std::string address = \"123 Fake St\";\n    int age = -1;\n\n  public:\n    // No default constructor\n    person(std::string name_, std::string address_, int age_)\n        : name(std::move(name_)), address(std::move(address_)), age(age_)\n    {}\n\n    NLOHMANN_DEFINE_TYPE_INTRUSIVE(person, name, address, age)\n};\n} // namespace ns\n\nint main()\n{\n    ns::person p = {\"Ned Flanders\", \"744 Evergreen Terrace\", 60};\n\n    // serialization: person -&gt; json\n    json j = p;\n    std::cout &lt;&lt; \"serialization: \" &lt;&lt; j &lt;&lt; std::endl;\n}\n</code></pre> <p>Output:</p> <pre><code>serialization: {\"address\":\"744 Evergreen Terrace\",\"age\":60,\"name\":\"Ned Flanders\"}\n</code></pre> <p>Notes:</p> <ul> <li><code>ns::person</code> is non-default-constructible. This allows this macro to be used instead of    <code>NLOHMANN_DEFINE_TYPE_INTRUSIVE</code> and <code>NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT</code>.</li> <li><code>ns::person</code> has private member variables. This makes <code>NLOHMANN_DEFINE_TYPE_INTRUSIVE_ONLY_SERIALIZE</code> applicable, but not   <code>NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE</code>.</li> <li>The macro <code>NLOHMANN_DEFINE_TYPE_INTRUSIVE_ONLY_SERIALIZE</code> is used inside the class.</li> </ul> <p>The macro is equivalent to:</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\nusing namespace nlohmann::literals;\n\nnamespace ns\n{\nclass person\n{\n  private:\n    std::string name = \"John Doe\";\n    std::string address = \"123 Fake St\";\n    int age = -1;\n\n  public:\n    // No default constructor\n    person(std::string name_, std::string address_, int age_)\n        : name(std::move(name_)), address(std::move(address_)), age(age_)\n    {}\n\n    template&lt;typename BasicJsonType&gt;\n    friend void to_json(BasicJsonType&amp; nlohmann_json_j, const person&amp; nlohmann_json_t)\n    {\n        nlohmann_json_j[\"name\"] = nlohmann_json_t.name;\n        nlohmann_json_j[\"address\"] = nlohmann_json_t.address;\n        nlohmann_json_j[\"age\"] = nlohmann_json_t.age;\n    }\n};\n} // namespace ns\n\nint main()\n{\n    ns::person p = {\"Ned Flanders\", \"744 Evergreen Terrace\", 60};\n\n    // serialization: person -&gt; json\n    json j = p;\n    std::cout &lt;&lt; \"serialization: \" &lt;&lt; j &lt;&lt; std::endl;\n}\n</code></pre>"},{"location":"api/macros/nlohmann_define_type_intrusive/#see-also","title":"See also","text":"<ul> <li>NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT,    NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE   for a similar macro that can be defined outside the type.</li> <li>NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_DEFAULT,   NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_ONLY_SERIALIZE, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE,   NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_DEFAULT,    NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE for similar macros for   derived types</li> <li>Arbitrary Type Conversions for an overview.</li> </ul>"},{"location":"api/macros/nlohmann_define_type_intrusive/#version-history","title":"Version history","text":"<ol> <li>Added in version 3.9.0.</li> <li>Added in version 3.11.0.</li> <li>Added in version 3.11.3.</li> </ol>"},{"location":"api/macros/nlohmann_define_type_non_intrusive/","title":"NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE","text":"<pre><code>#define NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE(type, member...)              // (1)\n#define NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT(type, member...) // (2)\n#define NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE(type, member...) // (3)\n</code></pre> <p>These macros can be used to simplify the serialization/deserialization of types if you want to use a JSON object as serialization and want to use the member variable names as object keys in that object. The macro is to be defined outside the class/struct to create code for, but inside its namespace. Unlike <code>NLOHMANN_DEFINE_TYPE_INTRUSIVE</code>, it cannot access private members. The first parameter is the name of the class/struct, and all remaining parameters name the members.</p> <ol> <li>Will use <code>at</code> during deserialization and will throw    <code>out_of_range.403</code> if a key is missing in the JSON object.</li> <li>Will use <code>value</code> during deserialization and fall back to the default value for the    respective type of the member variable if a key in the JSON object is missing. The generated <code>from_json()</code> function    default constructs an object and uses its values as the defaults when calling the <code>value</code> function.</li> <li>Only defines the serialization. Useful in cases when the type does not have a default constructor and only serialization is required.</li> </ol> <p>Summary:</p> Need access to private members Need only de-serialization Allow missing values when de-serializing macro NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE"},{"location":"api/macros/nlohmann_define_type_non_intrusive/#parameters","title":"Parameters","text":"<code>type</code> (in) name of the type (class, struct) to serialize/deserialize <code>member</code> (in) name of the (public) member variable to serialize/deserialize; up to 63 members can be given as a comma-separated list"},{"location":"api/macros/nlohmann_define_type_non_intrusive/#default-definition","title":"Default definition","text":"<p>The macros add two functions to the namespace which take care of the serialization and deserialization:</p> <pre><code>template&lt;typename BasicJsonType&gt;\nvoid to_json(BasicJsonType&amp;, const type&amp;);\ntemplate&lt;typename BasicJsonType&gt;\nvoid from_json(const BasicJsonType&amp;, type&amp;); // except (3)\n</code></pre> <p>See the examples below for the concrete generated code.</p>"},{"location":"api/macros/nlohmann_define_type_non_intrusive/#notes","title":"Notes","text":"<p>Prerequisites</p> <ol> <li>The type <code>type</code> must be default constructible (except (3). See How can I use <code>get()</code> for non-default constructible/non-copyable types?    for how to overcome this limitation.</li> <li>The macro must be used outside the type (class/struct).</li> <li>The passed members must be public.</li> </ol> <p>Implementation limits</p> <ul> <li>The current implementation is limited to at most 63 member variables. If you want to serialize/deserialize types   with more than 63 member variables, you need to define the <code>to_json</code>/<code>from_json</code> functions manually.</li> </ul>"},{"location":"api/macros/nlohmann_define_type_non_intrusive/#examples","title":"Examples","text":"Example (1): NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE <p>Consider the following complete example:</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\nusing namespace nlohmann::literals;\n\nnamespace ns\n{\nstruct person\n{\n    std::string name;\n    std::string address;\n    int age;\n};\n\nNLOHMANN_DEFINE_TYPE_NON_INTRUSIVE(person, name, address, age)\n} // namespace ns\n\nint main()\n{\n    ns::person p = {\"Ned Flanders\", \"744 Evergreen Terrace\", 60};\n\n    // serialization: person -&gt; json\n    json j = p;\n    std::cout &lt;&lt; \"serialization: \" &lt;&lt; j &lt;&lt; std::endl;\n\n    // deserialization: json -&gt; person\n    json j2 = R\"({\"address\": \"742 Evergreen Terrace\", \"age\": 40, \"name\": \"Homer Simpson\"})\"_json;\n    auto p2 = j2.get&lt;ns::person&gt;();\n\n    // incomplete deserialization:\n    json j3 = R\"({\"address\": \"742 Evergreen Terrace\", \"name\": \"Maggie Simpson\"})\"_json;\n    try\n    {\n        auto p3 = j3.get&lt;ns::person&gt;();\n    }\n    catch (const json::exception&amp; e)\n    {\n        std::cout &lt;&lt; \"deserialization failed: \" &lt;&lt; e.what() &lt;&lt; std::endl;\n    }\n}\n</code></pre> <p>Output:</p> <pre><code>serialization: {\"address\":\"744 Evergreen Terrace\",\"age\":60,\"name\":\"Ned Flanders\"}\ndeserialization failed: [json.exception.out_of_range.403] key 'age' not found\n</code></pre> <p>Notes:</p> <ul> <li><code>ns::person</code> is default-constructible. This is a requirement for using the macro.</li> <li><code>ns::person</code> has only public member variables. This makes <code>NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE</code> applicable.</li> <li>The macro <code>NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE</code> is used outside the class, but inside its namespace <code>ns</code>.</li> <li>A missing key \"age\" in the deserialization yields an exception. To fall back to the default value,   <code>NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT</code> can be used.</li> </ul> <p>The macro is equivalent to:</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\nusing namespace nlohmann::literals;\n\nnamespace ns\n{\nstruct person\n{\n    std::string name;\n    std::string address;\n    int age;\n};\n\ntemplate&lt;typename BasicJsonType&gt;\nvoid to_json(BasicJsonType&amp; nlohmann_json_j, const person&amp; nlohmann_json_t)\n{\n    nlohmann_json_j[\"name\"] = nlohmann_json_t.name;\n    nlohmann_json_j[\"address\"] = nlohmann_json_t.address;\n    nlohmann_json_j[\"age\"] = nlohmann_json_t.age;\n}\n\ntemplate&lt;typename BasicJsonType&gt;\nvoid from_json(const BasicJsonType&amp; nlohmann_json_j, person&amp; nlohmann_json_t)\n{\n    nlohmann_json_t.name = nlohmann_json_j.at(\"name\");\n    nlohmann_json_t.address = nlohmann_json_j.at(\"address\");\n    nlohmann_json_t.age = nlohmann_json_j.at(\"age\");\n}\n} // namespace ns\n\nint main()\n{\n    ns::person p = {\"Ned Flanders\", \"744 Evergreen Terrace\", 60};\n\n    // serialization: person -&gt; json\n    json j = p;\n    std::cout &lt;&lt; \"serialization: \" &lt;&lt; j &lt;&lt; std::endl;\n\n    // deserialization: json -&gt; person\n    json j2 = R\"({\"address\": \"742 Evergreen Terrace\", \"age\": 40, \"name\": \"Homer Simpson\"})\"_json;\n    auto p2 = j2.get&lt;ns::person&gt;();\n\n    // incomplete deserialization:\n    json j3 = R\"({\"address\": \"742 Evergreen Terrace\", \"name\": \"Maggie Simpson\"})\"_json;\n    try\n    {\n        auto p3 = j3.get&lt;ns::person&gt;();\n    }\n    catch (const json::exception&amp; e)\n    {\n        std::cout &lt;&lt; \"deserialization failed: \" &lt;&lt; e.what() &lt;&lt; std::endl;\n    }\n}\n</code></pre> Example (2): NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT <p>Consider the following complete example:</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\nusing namespace nlohmann::literals;\n\nnamespace ns\n{\nstruct person\n{\n    std::string name = \"John Doe\";\n    std::string address = \"123 Fake St\";\n    int age = -1;\n\n    person() = default;\n    person(std::string name_, std::string address_, int age_)\n        : name(std::move(name_)), address(std::move(address_)), age(age_)\n    {}\n};\n\nNLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT(person, name, address, age)\n} // namespace ns\n\nint main()\n{\n    ns::person p = {\"Ned Flanders\", \"744 Evergreen Terrace\", 60};\n\n    // serialization: person -&gt; json\n    json j = p;\n    std::cout &lt;&lt; \"serialization: \" &lt;&lt; j &lt;&lt; std::endl;\n\n    // deserialization: json -&gt; person\n    json j2 = R\"({\"address\": \"742 Evergreen Terrace\", \"age\": 40, \"name\": \"Homer Simpson\"})\"_json;\n    auto p2 = j2.get&lt;ns::person&gt;();\n\n    // incomplete deserialization:\n    json j3 = R\"({\"address\": \"742 Evergreen Terrace\", \"name\": \"Maggie Simpson\"})\"_json;\n    auto p3 = j3.get&lt;ns::person&gt;();\n    std::cout &lt;&lt; \"roundtrip: \" &lt;&lt; json(p3) &lt;&lt; std::endl;\n}\n</code></pre> <p>Output:</p> <pre><code>serialization: {\"address\":\"744 Evergreen Terrace\",\"age\":60,\"name\":\"Ned Flanders\"}\nroundtrip: {\"address\":\"742 Evergreen Terrace\",\"age\":-1,\"name\":\"Maggie Simpson\"}\n</code></pre> <p>Notes:</p> <ul> <li><code>ns::person</code> is default-constructible. This is a requirement for using the macro.</li> <li><code>ns::person</code> has only public member variables. This makes <code>NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT</code>   applicable.</li> <li>The macro <code>NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT</code> is used outside the class, but inside its   namespace <code>ns</code>.</li> <li>A missing key \"age\" in the deserialization does not yield an exception. Instead, the default value <code>-1</code> is used.</li> </ul> <p>The macro is equivalent to:</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\nusing namespace nlohmann::literals;\n\nnamespace ns\n{\nstruct person\n{\n    std::string name = \"John Doe\";\n    std::string address = \"123 Fake St\";\n    int age = -1;\n\n    person() = default;\n    person(std::string name_, std::string address_, int age_)\n        : name(std::move(name_)), address(std::move(address_)), age(age_)\n    {}\n};\n\ntemplate&lt;typename BasicJsonType&gt;\nvoid to_json(BasicJsonType&amp; nlohmann_json_j, const person&amp; nlohmann_json_t)\n{\n    nlohmann_json_j[\"name\"] = nlohmann_json_t.name;\n    nlohmann_json_j[\"address\"] = nlohmann_json_t.address;\n    nlohmann_json_j[\"age\"] = nlohmann_json_t.age;\n}\n\ntemplate&lt;typename BasicJsonType&gt;\nvoid from_json(const BasicJsonType&amp; nlohmann_json_j, person&amp; nlohmann_json_t)\n{\n    person nlohmann_json_default_obj;\n    nlohmann_json_t.name = nlohmann_json_j.value(\"name\", nlohmann_json_default_obj.name);\n    nlohmann_json_t.address = nlohmann_json_j.value(\"address\", nlohmann_json_default_obj.address);\n    nlohmann_json_t.age = nlohmann_json_j.value(\"age\", nlohmann_json_default_obj.age);\n}\n} // namespace ns\n\nint main()\n{\n    ns::person p = {\"Ned Flanders\", \"744 Evergreen Terrace\", 60};\n\n    // serialization: person -&gt; json\n    json j = p;\n    std::cout &lt;&lt; \"serialization: \" &lt;&lt; j &lt;&lt; std::endl;\n\n    // deserialization: json -&gt; person\n    json j2 = R\"({\"address\": \"742 Evergreen Terrace\", \"age\": 40, \"name\": \"Homer Simpson\"})\"_json;\n    auto p2 = j2.get&lt;ns::person&gt;();\n\n    // incomplete deserialization:\n    json j3 = R\"({\"address\": \"742 Evergreen Terrace\", \"name\": \"Maggie Simpson\"})\"_json;\n    auto p3 = j3.get&lt;ns::person&gt;();\n    std::cout &lt;&lt; \"roundtrip: \" &lt;&lt; json(p3) &lt;&lt; std::endl;\n}\n</code></pre> <p>Note how a default-initialized <code>person</code> object is used in the <code>from_json</code> to fill missing values.</p> Example (3): NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE <p>Consider the following complete example:</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\nusing namespace nlohmann::literals;\n\nnamespace ns\n{\nstruct person\n{\n    std::string name;\n    std::string address;\n    int age;\n};\n\nNLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE(person, name, address, age)\n} // namespace ns\n\nint main()\n{\n    ns::person p = {\"Ned Flanders\", \"744 Evergreen Terrace\", 60};\n\n    // serialization: person -&gt; json\n    json j = p;\n    std::cout &lt;&lt; \"serialization: \" &lt;&lt; j &lt;&lt; std::endl;\n}\n</code></pre> <p>Output:</p> <pre><code>serialization: {\"address\":\"744 Evergreen Terrace\",\"age\":60,\"name\":\"Ned Flanders\"}\n</code></pre> <p>Notes:</p> <ul> <li><code>ns::person</code> is non-default-constructible. This allows this macro to be used instead of    <code>NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE</code> and <code>NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT</code>.</li> <li><code>ns::person</code> has only public member variables. This makes <code>NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE</code> applicable.</li> <li>The macro <code>NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE</code> is used outside the class, but inside its namespace <code>ns</code>.</li> </ul> <p>The macro is equivalent to:</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\nusing namespace nlohmann::literals;\n\nnamespace ns\n{\nstruct person\n{\n    std::string name;\n    std::string address;\n    int age;\n};\n\ntemplate&lt;typename BasicJsonType&gt;\nvoid to_json(BasicJsonType&amp; nlohmann_json_j, const person&amp; nlohmann_json_t)\n{\n    nlohmann_json_j[\"name\"] = nlohmann_json_t.name;\n    nlohmann_json_j[\"address\"] = nlohmann_json_t.address;\n    nlohmann_json_j[\"age\"] = nlohmann_json_t.age;\n}\n} // namespace ns\n\nint main()\n{\n    ns::person p = {\"Ned Flanders\", \"744 Evergreen Terrace\", 60};\n\n    // serialization: person -&gt; json\n    json j = p;\n    std::cout &lt;&lt; \"serialization: \" &lt;&lt; j &lt;&lt; std::endl;\n}\n</code></pre>"},{"location":"api/macros/nlohmann_define_type_non_intrusive/#see-also","title":"See also","text":"<ul> <li>NLOHMANN_DEFINE_TYPE_INTRUSIVE, NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT,   NLOHMANN_DEFINE_TYPE_INTRUSIVE_ONLY_SERIALIZE   for a similar macro that can be defined inside the type.</li> <li>NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_DEFAULT,   NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_ONLY_SERIALIZE, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE,   NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_DEFAULT,   NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE for similar macros for   derived types</li> <li>Arbitrary Type Conversions for an overview.</li> </ul>"},{"location":"api/macros/nlohmann_define_type_non_intrusive/#version-history","title":"Version history","text":"<ol> <li>Added in version 3.9.0.</li> <li>Added in version 3.11.0.</li> <li>Added in version 3.11.3.</li> </ol>"},{"location":"api/macros/nlohmann_define_type_with_names/","title":"NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_TYPE_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES","text":"NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT_WITH_NAMES,     NLOHMANN_DEFINE_TYPE_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_NAMES,     NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES,     NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_DEFAULT_WITH_NAMES,     NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_NAMES,     NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES <pre><code>#define NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_NAMES(type, \"json_member_name\", member...)\n#define NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT_WITH_NAMES(type, \"json_member_name\", member...)\n#define NLOHMANN_DEFINE_TYPE_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES(type, \"json_member_name\", member...)\n#define NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_NAMES(type, \"json_member_name\", member...)\n#define NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT_WITH_NAMES(type, \"json_member_name\", member...)\n#define NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES(type, \"json_member_name\", member...)\n#define NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_NAMES(type, base_type, \"json_member_name\", member...)\n#define NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_DEFAULT_WITH_NAMES(type, base_type, \"json_member_name\", member...)\n#define NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES(type, base_type, \"json_member_name\", member...)\n#define NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_NAMES(type, base_type, \"json_member_name\", member...)\n#define NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_DEFAULT_WITH_NAMES(type, base_type, \"json_member_name\", member...)\n#define NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES(type, base_type, \"json_member_name\", member...)\n</code></pre> <p>These macros can be used in case you want to use the custom names for the member variables in the resulting JSON. They behave exactly as their non-<code>WITH_NAMES</code> counterparts, but require an additional parameter for each member variable which will be used in JSON. Both serialization and deserialization will only use the custom names for JSON, the names of the member variables themselves will be ignored.</p> <p>Using the named conversion macros will halve the maximum number of member variables from 63 to 31.</p> <p>For further information please refer to the corresponding macros without <code>WITH_NAMES</code>.</p>"},{"location":"api/macros/nlohmann_define_type_with_names/#parameters","title":"Parameters","text":"<code>type</code> (in) name of the type (class, struct) to serialize/deserialize <code>base_type</code> (in) name of the base type (class, struct) <code>type</code> is derived from (used only in <code>DEFINE_DERIVED_TYPE</code> macros) <code>json_member_name</code> (in) the string that will be used as the name for the next value <code>member</code> (in) name of the member variable to serialize/deserialize"},{"location":"api/macros/nlohmann_define_type_with_names/#examples","title":"Examples","text":"Example (1): NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_NAMES <p>Consider the following complete example:</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\nusing namespace nlohmann::literals;\n\nnamespace ns\n{\nstruct person\n{\n    std::string name;\n    std::string address;\n    int age;\n};\n\nNLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_NAMES(person, \"json_name\", name, \"json_address\", address, \"json_age\", age)\n} // namespace ns\n\nint main()\n{\n    ns::person p = {\"Ned Flanders\", \"744 Evergreen Terrace\", 60};\n\n    // serialization: person -&gt; json\n    json j = p;\n    std::cout &lt;&lt; \"serialization: \" &lt;&lt; j &lt;&lt; std::endl;\n\n    // deserialization: json -&gt; person\n    json j2 = R\"({\"json_address\": \"742 Evergreen Terrace\", \"json_age\": 40, \"json_name\": \"Homer Simpson\"})\"_json;\n    auto p2 = j2.template get&lt;ns::person&gt;();\n\n    // incomplete deserialization:\n    json j3 = R\"({\"json_address\": \"742 Evergreen Terrace\", \"json_name\": \"Maggie Simpson\"})\"_json;\n    try\n    {\n        auto p3 = j3.template get&lt;ns::person&gt;();\n    }\n    catch (const json::exception&amp; e)\n    {\n        std::cout &lt;&lt; \"deserialization failed: \" &lt;&lt; e.what() &lt;&lt; std::endl;\n    }\n}\n</code></pre> <p>Output:</p> <pre><code>serialization: {\"json_address\":\"744 Evergreen Terrace\",\"json_age\":60,\"json_name\":\"Ned Flanders\"}\ndeserialization failed: [json.exception.out_of_range.403] key 'json_age' not found\n</code></pre> <p>Notes:</p> <ul> <li><code>ns::person</code> is default-constructible. This is a requirement for using the macro.</li> <li><code>ns::person</code> has only public member variables. This makes <code>NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_NAMES</code> applicable.</li> <li>The macro <code>NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_NAMES</code> is used outside the class, but inside its namespace <code>ns</code>.</li> <li>A missing key \"age\" in the deserialization yields an exception. To fall back to the default value,   <code>NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT_WITH_NAMES</code> can be used.</li> </ul> <p>The macro is equivalent to:</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\nusing namespace nlohmann::literals;\n\nnamespace ns\n{\nstruct person\n{\n    std::string name;\n    std::string address;\n    int age;\n};\n\ntemplate &lt;typename BasicJsonType, nlohmann::detail::enable_if_t&lt;nlohmann::detail::is_basic_json&lt;BasicJsonType&gt;::value, int&gt; = 0&gt;\nvoid to_json(BasicJsonType&amp; nlohmann_json_j, const person&amp; nlohmann_json_t)\n{\n    nlohmann_json_j[\"json_name\"] = nlohmann_json_t.name;\n    nlohmann_json_j[\"json_address\"] = nlohmann_json_t.address;\n    nlohmann_json_j[\"json_age\"] = nlohmann_json_t.age;\n}\n\ntemplate &lt;typename BasicJsonType, nlohmann::detail::enable_if_t&lt;nlohmann::detail::is_basic_json&lt;BasicJsonType&gt;::value, int&gt; = 0&gt;\nvoid from_json(const BasicJsonType&amp; nlohmann_json_j, person&amp; nlohmann_json_t)\n{\n    nlohmann_json_j.at(\"json_name\").get_to(nlohmann_json_t.name);\n    nlohmann_json_j.at(\"json_address\").get_to(nlohmann_json_t.address);\n    nlohmann_json_j.at(\"json_age\").get_to(nlohmann_json_t.age);\n}\n} // namespace ns\n\nint main()\n{\n    ns::person p = {\"Ned Flanders\", \"744 Evergreen Terrace\", 60};\n\n    // serialization: person -&gt; json\n    json j = p;\n    std::cout &lt;&lt; \"serialization: \" &lt;&lt; j &lt;&lt; std::endl;\n\n    // deserialization: json -&gt; person\n    json j2 = R\"({\"json_address\": \"742 Evergreen Terrace\", \"json_age\": 40, \"json_name\": \"Homer Simpson\"})\"_json;\n    auto p2 = j2.template get&lt;ns::person&gt;();\n\n    // incomplete deserialization:\n    json j3 = R\"({\"json_address\": \"742 Evergreen Terrace\", \"json_name\": \"Maggie Simpson\"})\"_json;\n    try\n    {\n        auto p3 = j3.template get&lt;ns::person&gt;();\n    }\n    catch (const json::exception&amp; e)\n    {\n        std::cout &lt;&lt; \"deserialization failed: \" &lt;&lt; e.what() &lt;&lt; std::endl;\n    }\n}\n</code></pre>"},{"location":"api/macros/nlohmann_define_type_with_names/#version-history","title":"Version history","text":"<ol> <li>Added in version 3.11.x.</li> </ol>"},{"location":"api/macros/nlohmann_json_namespace/","title":"NLOHMANN_JSON_NAMESPACE","text":"<pre><code>#define NLOHMANN_JSON_NAMESPACE /* value */\n</code></pre> <p>This macro evaluates to the full name of the <code>nlohmann</code> namespace.</p>"},{"location":"api/macros/nlohmann_json_namespace/#default-definition","title":"Default definition","text":"<p>The default value consists of the root namespace (<code>nlohmann</code>) and an inline ABI namespace. See <code>nlohmann</code> Namespace for details.</p> <p>When the macro is not defined, the library will define it to its default value. Overriding this value has no effect on the library.</p>"},{"location":"api/macros/nlohmann_json_namespace/#examples","title":"Examples","text":"Example <p>The example shows how to use <code>NLOHMANN_JSON_NAMESPACE</code> instead of just <code>nlohmann</code>, as well as how to output the value of <code>NLOHMANN_JSON_NAMESPACE</code>.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\n// possible use case: use NLOHMANN_JSON_NAMESPACE instead of nlohmann\nusing json = NLOHMANN_JSON_NAMESPACE::json;\n\n// macro needed to output the NLOHMANN_JSON_NAMESPACE as string literal\n#define Q(x) #x\n#define QUOTE(x) Q(x)\n\nint main()\n{\n    std::cout &lt;&lt; QUOTE(NLOHMANN_JSON_NAMESPACE) &lt;&lt; std::endl;\n}\n</code></pre> <p>Output:</p> <pre><code>nlohmann::json_abi_v3_12_0\n</code></pre>"},{"location":"api/macros/nlohmann_json_namespace/#see-also","title":"See also","text":"<ul> <li><code>NLOHMANN_JSON_NAMESPACE_BEGIN, NLOHMANN_JSON_NAMESPACE_END</code></li> <li><code>NLOHMANN_JSON_NAMESPACE_NO_VERSION</code></li> </ul>"},{"location":"api/macros/nlohmann_json_namespace/#version-history","title":"Version history","text":"<ul> <li>Added in version 3.11.0. Changed inline namespace name in version 3.11.2.</li> </ul>"},{"location":"api/macros/nlohmann_json_namespace_begin/","title":"NLOHMANN_JSON_NAMESPACE_BEGIN, NLOHMANN_JSON_NAMESPACE_END","text":"<pre><code>#define NLOHMANN_JSON_NAMESPACE_BEGIN /* value */  // (1)\n#define NLOHMANN_JSON_NAMESPACE_END   /* value */  // (2)\n</code></pre> <p>These macros can be used to open and close the <code>nlohmann</code> namespace. See <code>nlohmann</code> Namespace for details.</p> <ol> <li>Opens the namespace.</li> <li>Closes the namespace.</li> </ol>"},{"location":"api/macros/nlohmann_json_namespace_begin/#default-definition","title":"Default definition","text":"<p>The default definitions open and close the <code>nlohmann</code> namespace. The precise definition of [<code>NLOHMANN_JSON_NAMESPACE_BEGIN</code>] varies as described here.</p> <ol> <li> <p>Default definition of <code>NLOHMANN_JSON_NAMESPACE_BEGIN</code>:</p> <pre><code>namespace nlohmann\n{\ninline namespace json_abi_v3_11_2\n{\n</code></pre> </li> <li> <p>Default definition of <code>NLOHMANN_JSON_NAMESPACE_END</code>:     <pre><code>}  // namespace json_abi_v3_11_2\n}  // namespace nlohmann\n</code></pre></p> </li> </ol> <p>When these macros are not defined, the library will define them to their default definitions.</p>"},{"location":"api/macros/nlohmann_json_namespace_begin/#examples","title":"Examples","text":"Example <p>The example shows how to use <code>NLOHMANN_JSON_NAMESPACE_BEGIN</code>/<code>NLOHMANN_JSON_NAMESPACE_END</code> from the How do I convert third-party types? page.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;optional&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\n// partial specialization (see https://json.nlohmann.me/features/arbitrary_types/)\nNLOHMANN_JSON_NAMESPACE_BEGIN\ntemplate &lt;typename T&gt;\nstruct adl_serializer&lt;std::optional&lt;T&gt;&gt;\n{\n    static void to_json(json&amp; j, const std::optional&lt;T&gt;&amp; opt)\n    {\n        if (opt == std::nullopt)\n        {\n            j = nullptr;\n        }\n        else\n        {\n            j = *opt;\n        }\n    }\n};\nNLOHMANN_JSON_NAMESPACE_END\n\nint main()\n{\n    std::optional&lt;int&gt; o1 = 1;\n    std::optional&lt;int&gt; o2 = std::nullopt;\n\n    NLOHMANN_JSON_NAMESPACE::json j;\n    j.push_back(o1);\n    j.push_back(o2);\n    std::cout &lt;&lt; j &lt;&lt; std::endl;\n}\n</code></pre> <p>Output:</p> <pre><code>[1,null]\n</code></pre>"},{"location":"api/macros/nlohmann_json_namespace_begin/#see-also","title":"See also","text":"<ul> <li><code>nlohmann</code> Namespace</li> <li>NLOHMANN_JSON_NAMESPACE</li> <li><code>NLOHMANN_JSON_NAMESPACE_NO_VERSION</code></li> </ul>"},{"location":"api/macros/nlohmann_json_namespace_begin/#version-history","title":"Version history","text":"<ul> <li>Added in version 3.11.0. Changed inline namespace name in version 3.11.2.</li> </ul>"},{"location":"api/macros/nlohmann_json_namespace_no_version/","title":"NLOHMANN_JSON_NAMESPACE_NO_VERSION","text":"<pre><code>#define NLOHMANN_JSON_NAMESPACE_NO_VERSION /* value */\n</code></pre> <p>If defined to <code>1</code>, the version component is omitted from the inline namespace. See <code>nlohmann</code> Namespace for details.</p>"},{"location":"api/macros/nlohmann_json_namespace_no_version/#default-definition","title":"Default definition","text":"<p>The default value is <code>0</code>.</p> <pre><code>#define NLOHMANN_JSON_NAMESPACE_NO_VERSION 0\n</code></pre> <p>When the macro is not defined, the library will define it to its default value.</p>"},{"location":"api/macros/nlohmann_json_namespace_no_version/#examples","title":"Examples","text":"Example <p>The example shows how to use <code>NLOHMANN_JSON_NAMESPACE_NO_VERSION</code> to disable the version component of the inline namespace.</p> <pre><code>#include &lt;iostream&gt;\n\n#define NLOHMANN_JSON_NAMESPACE_NO_VERSION 1\n#include &lt;nlohmann/json.hpp&gt;\n\n// macro needed to output the NLOHMANN_JSON_NAMESPACE as string literal\n#define Q(x) #x\n#define QUOTE(x) Q(x)\n\nint main()\n{\n    std::cout &lt;&lt; QUOTE(NLOHMANN_JSON_NAMESPACE) &lt;&lt; std::endl;\n}\n</code></pre> <p>Output:</p> <pre><code>nlohmann::json_abi\n</code></pre>"},{"location":"api/macros/nlohmann_json_namespace_no_version/#see-also","title":"See also","text":"<ul> <li><code>nlohmann</code> Namespace</li> <li><code>NLOHMANN_JSON_NAMESPACE</code></li> <li><code>NLOHMANN_JSON_NAMESPACE_BEGIN, NLOHMANN_JSON_NAMESPACE_END</code></li> </ul>"},{"location":"api/macros/nlohmann_json_namespace_no_version/#version-history","title":"Version history","text":"<ul> <li>Added in version 3.11.2.</li> </ul>"},{"location":"api/macros/nlohmann_json_serialize_enum/","title":"NLOHMANN_JSON_SERIALIZE_ENUM","text":"<pre><code>#define NLOHMANN_JSON_SERIALIZE_ENUM(type, conversion...)\n</code></pre> <p>By default, enum values are serialized to JSON as integers. In some cases, this could result in undesired behavior. If an enum is modified or re-ordered after data has been serialized to JSON, the later deserialized JSON data may be undefined or a different enum value than was originally intended.</p> <p>The <code>NLOHMANN_JSON_SERIALIZE_ENUM</code> allows to define a user-defined serialization for every enumerator.</p>"},{"location":"api/macros/nlohmann_json_serialize_enum/#parameters","title":"Parameters","text":"<code>type</code> (in) name of the enum to serialize/deserialize <code>conversion</code> (in) a pair of an enumerator and a JSON serialization; arbitrary pairs can be given as a comma-separated list"},{"location":"api/macros/nlohmann_json_serialize_enum/#default-definition","title":"Default definition","text":"<p>The macro adds two functions to the namespace which take care of the serialization and deserialization:</p> <pre><code>template&lt;typename BasicJsonType&gt;\ninline void to_json(BasicJsonType&amp; j, const type&amp; e);\ntemplate&lt;typename BasicJsonType&gt;\ninline void from_json(const BasicJsonType&amp; j, type&amp; e);\n</code></pre>"},{"location":"api/macros/nlohmann_json_serialize_enum/#notes","title":"Notes","text":"<p>Prerequisites</p> <p>The macro must be used inside the namespace of the enum.</p> <p>Important notes</p> <ul> <li>When using <code>get&lt;ENUM_TYPE&gt;()</code>, undefined JSON values will default to the first specified   conversion. Select this default pair carefully. See example 1 below.</li> <li>If an enum or JSON value is specified in multiple conversions, the first matching conversion from the top of the   list will be returned when converting to or from JSON. See example 2 below.</li> </ul>"},{"location":"api/macros/nlohmann_json_serialize_enum/#examples","title":"Examples","text":"Example 1: Basic usage <p>The example shows how <code>NLOHMANN_JSON_SERIALIZE_ENUM</code> can be used to serialize/deserialize both classical enums and C++11 enum classes:</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nnamespace ns\n{\nenum TaskState\n{\n    TS_STOPPED,\n    TS_RUNNING,\n    TS_COMPLETED,\n    TS_INVALID = -1\n};\n\nNLOHMANN_JSON_SERIALIZE_ENUM(TaskState,\n{\n    { TS_INVALID, nullptr },\n    { TS_STOPPED, \"stopped\" },\n    { TS_RUNNING, \"running\" },\n    { TS_COMPLETED, \"completed\" }\n})\n\nenum class Color\n{\n    red, green, blue, unknown\n};\n\nNLOHMANN_JSON_SERIALIZE_ENUM(Color,\n{\n    { Color::unknown, \"unknown\" }, { Color::red, \"red\" },\n    { Color::green, \"green\" }, { Color::blue, \"blue\" }\n})\n} // namespace ns\n\nint main()\n{\n    // serialization\n    json j_stopped = ns::TS_STOPPED;\n    json j_red = ns::Color::red;\n    std::cout &lt;&lt; \"ns::TS_STOPPED -&gt; \" &lt;&lt; j_stopped\n              &lt;&lt; \", ns::Color::red -&gt; \" &lt;&lt; j_red &lt;&lt; std::endl;\n\n    // deserialization\n    json j_running = \"running\";\n    json j_blue = \"blue\";\n    auto running = j_running.get&lt;ns::TaskState&gt;();\n    auto blue = j_blue.get&lt;ns::Color&gt;();\n    std::cout &lt;&lt; j_running &lt;&lt; \" -&gt; \" &lt;&lt; running\n              &lt;&lt; \", \" &lt;&lt; j_blue &lt;&lt; \" -&gt; \" &lt;&lt; static_cast&lt;int&gt;(blue) &lt;&lt; std::endl;\n\n    // deserializing undefined JSON value to enum\n    // (where the first map entry above is the default)\n    json j_pi = 3.14;\n    auto invalid = j_pi.get&lt;ns::TaskState&gt;();\n    auto unknown = j_pi.get&lt;ns::Color&gt;();\n    std::cout &lt;&lt; j_pi &lt;&lt; \" -&gt; \" &lt;&lt; invalid &lt;&lt; \", \"\n              &lt;&lt; j_pi &lt;&lt; \" -&gt; \" &lt;&lt; static_cast&lt;int&gt;(unknown) &lt;&lt; std::endl;\n}\n</code></pre> <p>Output:</p> <pre><code>ns::TS_STOPPED -&gt; \"stopped\", ns::Color::red -&gt; \"red\"\n\"running\" -&gt; 1, \"blue\" -&gt; 2\n3.14 -&gt; -1, 3.14 -&gt; 3\n</code></pre> Example 2: Multiple conversions for one enumerator <p>The example shows how to use multiple conversions for a single enumerator. In the example, <code>Color::red</code> will always be serialized to <code>\"red\"</code>, because the first occurring conversion. The second conversion, however, offers an alternative deserialization from <code>\"rot\"</code> to <code>Color::red</code>.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nnamespace ns\n{\nenum class Color\n{\n    red, green, blue, unknown\n};\n\nNLOHMANN_JSON_SERIALIZE_ENUM(Color,\n{\n    { Color::unknown, \"unknown\" }, { Color::red, \"red\" },\n    { Color::green, \"green\" }, { Color::blue, \"blue\" },\n    { Color::red, \"rot\" } // a second conversion for Color::red\n})\n}\n\nint main()\n{\n    // serialization\n    json j_red = ns::Color::red;\n    std::cout &lt;&lt; static_cast&lt;int&gt;(ns::Color::red) &lt;&lt; \" -&gt; \" &lt;&lt; j_red &lt;&lt; std::endl;\n\n    // deserialization\n    json j_rot = \"rot\";\n    auto rot = j_rot.get&lt;ns::Color&gt;();\n    auto red = j_red.get&lt;ns::Color&gt;();\n    std::cout &lt;&lt; j_rot &lt;&lt; \" -&gt; \" &lt;&lt; static_cast&lt;int&gt;(rot) &lt;&lt; std::endl;\n    std::cout &lt;&lt; j_red &lt;&lt; \" -&gt; \" &lt;&lt; static_cast&lt;int&gt;(red) &lt;&lt; std::endl;\n}\n</code></pre> <p>Output:</p> <pre><code>0 -&gt; \"red\"\n\"rot\" -&gt; 0\n\"red\" -&gt; 0\n</code></pre>"},{"location":"api/macros/nlohmann_json_serialize_enum/#see-also","title":"See also","text":"<ul> <li>Specializing enum conversion</li> <li><code>NLOHMANN_JSON_SERIALIZE_ENUM_STRICT</code></li> <li><code>JSON_DISABLE_ENUM_SERIALIZATION</code></li> </ul>"},{"location":"api/macros/nlohmann_json_serialize_enum/#version-history","title":"Version history","text":"<p>Added in version 3.4.0.</p>"},{"location":"api/macros/nlohmann_json_serialize_enum_strict/","title":"NLOHMANN_JSON_SERIALIZE_ENUM_STRICT","text":"<pre><code>#define NLOHMANN_JSON_SERIALIZE_ENUM_STRICT(type, conversion...)\n</code></pre> <p>By default, enum values are serialized to JSON as integers. In some cases, this could result in undesired behavior. If an enum is modified or re-ordered after data has been serialized to JSON, the later deserialized JSON data may be undefined or a different enum value than was originally intended.</p> <p><code>NLOHMANN_JSON_SERIALIZE_ENUM_STRICT</code> allows to define a user-defined serialization for every enumerator that throws an exception on undefined input.</p>"},{"location":"api/macros/nlohmann_json_serialize_enum_strict/#parameters","title":"Parameters","text":"<code>type</code> (in) name of the enum to serialize/deserialize <code>conversion</code> (in) a pair of an enumerator and a JSON serialization; arbitrary pairs can be given as a comma-separated list"},{"location":"api/macros/nlohmann_json_serialize_enum_strict/#default-definition","title":"Default definition","text":"<p>The macro adds two functions to the namespace which take care of the serialization and deserialization:</p> <pre><code>template&lt;typename BasicJsonType&gt;\ninline void to_json(BasicJsonType&amp; j, const type&amp; e);\ntemplate&lt;typename BasicJsonType&gt;\ninline void from_json(const BasicJsonType&amp; j, type&amp; e);\n</code></pre>"},{"location":"api/macros/nlohmann_json_serialize_enum_strict/#notes","title":"Notes","text":"<p>Prerequisites</p> <p>The macro must be used inside the namespace of the enum.</p> <p>Important notes</p> <ul> <li>When using <code>get&lt;ENUM_TYPE&gt;()</code>, undefined JSON values will throw an exception.</li> <li>If an enum or JSON value is specified in multiple conversions, the first matching conversion from the top of the   list will be returned when converting to or from JSON. See example 2 below.</li> </ul>"},{"location":"api/macros/nlohmann_json_serialize_enum_strict/#examples","title":"Examples","text":"Example 1: Basic usage <p>The example shows how <code>NLOHMANN_JSON_SERIALIZE_ENUM_STRICT</code> can be used to serialize/deserialize both classical enums and C++11 enum classes:</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nnamespace ns\n{\nenum TaskState\n{\n    TS_STOPPED,\n    TS_RUNNING,\n    TS_COMPLETED,\n    TS_INVALID = -1\n};\n\nNLOHMANN_JSON_SERIALIZE_ENUM_STRICT(TaskState,\n{\n    { TS_INVALID, nullptr },\n    { TS_STOPPED, \"stopped\" },\n    { TS_RUNNING, \"running\" },\n    { TS_COMPLETED, \"completed\" }\n})\n\nenum class Color\n{\n    red, green, blue, unknown\n};\n\nNLOHMANN_JSON_SERIALIZE_ENUM_STRICT(Color,\n{\n    { Color::unknown, \"unknown\" }, { Color::red, \"red\" },\n    { Color::green, \"green\" }, { Color::blue, \"blue\" }\n})\n} // namespace ns\n\nint main()\n{\n    // serialization\n    json j_stopped = ns::TS_STOPPED;\n    json j_red = ns::Color::red;\n    std::cout &lt;&lt; \"ns::TS_STOPPED -&gt; \" &lt;&lt; j_stopped\n              &lt;&lt; \", ns::Color::red -&gt; \" &lt;&lt; j_red &lt;&lt; std::endl;\n\n    // deserialization\n    json j_running = \"running\";\n    json j_blue = \"blue\";\n    auto running = j_running.get&lt;ns::TaskState&gt;();\n    auto blue = j_blue.get&lt;ns::Color&gt;();\n    std::cout &lt;&lt; j_running &lt;&lt; \" -&gt; \" &lt;&lt; running\n              &lt;&lt; \", \" &lt;&lt; j_blue &lt;&lt; \" -&gt; \" &lt;&lt; static_cast&lt;int&gt;(blue) &lt;&lt; std::endl;\n\n}\n</code></pre> <p>Output:</p> <pre><code>ns::TS_STOPPED -&gt; \"stopped\", ns::Color::red -&gt; \"red\"\n\"running\" -&gt; 1, \"blue\" -&gt; 2\n</code></pre> Example 2: Multiple conversions for one enumerator <p>The example shows how to use multiple conversions for a single enumerator. In the example, <code>Color::red</code> will always be serialized to <code>\"red\"</code>, because the first occurring conversion. The second conversion, however, offers an alternative deserialization from <code>\"rot\"</code> to <code>Color::red</code>.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nnamespace ns\n{\nenum class Color\n{\n    red, green, blue, unknown\n};\n\nNLOHMANN_JSON_SERIALIZE_ENUM_STRICT(Color,\n{\n    { Color::unknown, \"unknown\" }, { Color::red, \"red\" },\n    { Color::green, \"green\" }, { Color::blue, \"blue\" },\n    { Color::red, \"rot\" } // a second conversion for Color::red\n})\n}\n\nint main()\n{\n    // serialization\n    json j_red = ns::Color::red;\n    std::cout &lt;&lt; static_cast&lt;int&gt;(ns::Color::red) &lt;&lt; \" -&gt; \" &lt;&lt; j_red &lt;&lt; std::endl;\n\n    // deserialization\n    json j_rot = \"rot\";\n    auto rot = j_rot.get&lt;ns::Color&gt;();\n    auto red = j_red.get&lt;ns::Color&gt;();\n    std::cout &lt;&lt; j_rot &lt;&lt; \" -&gt; \" &lt;&lt; static_cast&lt;int&gt;(rot) &lt;&lt; std::endl;\n    std::cout &lt;&lt; j_red &lt;&lt; \" -&gt; \" &lt;&lt; static_cast&lt;int&gt;(red) &lt;&lt; std::endl;\n}\n</code></pre> <p>Output:</p> <pre><code>0 -&gt; \"red\"\n\"rot\" -&gt; 0\n\"red\" -&gt; 0\n</code></pre> Example 3: exceptions on invalid serialization <p>The example shows how an invalid serialization causes an exception to be thrown. In the example, Color::unknown is not defined in the mapping used to call <code>NLOHMANN_JSON_SERIALIZE_ENUM_STRICT</code> so causes an exception when used to serialize. Similarly, \"what\" does not refer to an enum value so also causes an exception when deserialization is attempted.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nnamespace ns\n{\n\nenum class Color\n{\n    red,\n    green,\n    blue,\n    unknown // not mapped in JSON_SERIALIZE_ENUM_STRICT\n};\n\nNLOHMANN_JSON_SERIALIZE_ENUM_STRICT(Color,\n{\n    {Color::red, \"red\"},\n    {Color::green, \"green\"},\n    {Color::blue, \"blue\"}\n})\n\n} // namespace ns\n\n\nint main()\n{\n    // invalid serialization\n    try\n    {\n        // ns::color::unknown was not mapped in macro\n        json invalid_serialization = ns::Color::unknown;\n    }\n    catch (const json::exception e)\n    {\n        std::cout &lt;&lt; \"deserialization failed: \" &lt;&lt; e.what() &lt;&lt; std::endl;\n    }\n\n    // invalid deserialization\n    try\n    {\n        // what does not map to an enum\n        json invalid_deserialization(\"what\");\n        ns::Color color = invalid_deserialization.get&lt;ns::Color&gt;();\n    }\n    catch (const json::exception e)\n    {\n        std::cout &lt;&lt; \"deserialization failed: \" &lt;&lt; e.what() &lt;&lt; std::endl;\n    }\n\n    return 0;\n}\n</code></pre> <p>Output: <pre><code>deserialization failed: [json.exception.out_of_range.410] enum value out of range for Color\ndeserialization failed: [json.exception.out_of_range.410] enum value out of range for Color: \"what\"\n</code></pre></p>"},{"location":"api/macros/nlohmann_json_serialize_enum_strict/#see-also","title":"See also","text":"<ul> <li>Specializing enum conversion</li> <li><code>NLOHMANN_JSON_SERIALIZE_ENUM</code></li> <li><code>JSON_DISABLE_ENUM_SERIALIZATION</code></li> </ul>"},{"location":"api/macros/nlohmann_json_serialize_enum_strict/#version-history","title":"Version history","text":"<p>Added in version 3.12.0.</p>"},{"location":"api/macros/nlohmann_json_version_major/","title":"NLOHMANN_JSON_VERSION_MAJOR, NLOHMANN_JSON_VERSION_MINOR, NLOHMANN_JSON_VERSION_PATCH","text":"<pre><code>#define NLOHMANN_JSON_VERSION_MAJOR /* value */\n#define NLOHMANN_JSON_VERSION_MINOR /* value */\n#define NLOHMANN_JSON_VERSION_PATCH /* value */\n</code></pre> <p>These macros are defined by the library and contain the version numbers according to Semantic Versioning 2.0.0.</p>"},{"location":"api/macros/nlohmann_json_version_major/#default-definition","title":"Default definition","text":"<p>The macros are defined according to the current library version.</p>"},{"location":"api/macros/nlohmann_json_version_major/#examples","title":"Examples","text":"Example <p>The example below shows how <code>NLOHMANN_JSON_VERSION_MAJOR</code>, <code>NLOHMANN_JSON_VERSION_MINOR</code>, and <code>NLOHMANN_JSON_VERSION_PATCH</code> are defined by the library.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    std::cout &lt;&lt; \"JSON for Modern C++ version \"\n              &lt;&lt; NLOHMANN_JSON_VERSION_MAJOR &lt;&lt; \".\"\n              &lt;&lt; NLOHMANN_JSON_VERSION_MINOR &lt;&lt; \".\"\n              &lt;&lt; NLOHMANN_JSON_VERSION_PATCH &lt;&lt; std::endl;\n}\n</code></pre> <p>Output:</p> <pre><code>JSON for Modern C++ version 3.12.0\n</code></pre>"},{"location":"api/macros/nlohmann_json_version_major/#see-also","title":"See also","text":"<ul> <li>meta - returns version information on the library</li> <li>JSON_SKIP_LIBRARY_VERSION_CHECK - skip library version check</li> </ul>"},{"location":"api/macros/nlohmann_json_version_major/#version-history","title":"Version history","text":"<ul> <li>Added in version 3.1.0.</li> </ul>"},{"location":"community/","title":"Community","text":"<ul> <li>Code of Conduct - the rules and norms of this project</li> <li>Contribution Guidelines - guidelines how to contribute to this project</li> <li>Governance - the governance model of this project</li> <li>Quality Assurance - how the quality of this project is assured</li> <li>Security Policy - the security policy of the project</li> </ul>"},{"location":"community/code_of_conduct/","title":"Contributor Covenant Code of Conduct","text":""},{"location":"community/code_of_conduct/#our-pledge","title":"Our Pledge","text":"<p>We as members, contributors, and leaders pledge to make participation in our community a harassment-free experience for everyone, regardless of age, body size, visible or invisible disability, ethnicity, sex characteristics, gender identity and expression, level of experience, education, socio-economic status, nationality, personal appearance, race, caste, color, religion, or sexual identity and orientation.</p> <p>We pledge to act and interact in ways that contribute to an open, welcoming, diverse, inclusive, and healthy community.</p>"},{"location":"community/code_of_conduct/#our-standards","title":"Our Standards","text":"<p>Examples of behavior that contributes to a positive environment for our community include:</p> <ul> <li>Demonstrating empathy and kindness toward other people</li> <li>Being respectful of differing opinions, viewpoints, and experiences</li> <li>Giving and gracefully accepting constructive feedback</li> <li>Accepting responsibility and apologizing to those affected by our mistakes,   and learning from the experience</li> <li>Focusing on what is best not just for us as individuals, but for the overall   community</li> </ul> <p>Examples of unacceptable behavior include:</p> <ul> <li>The use of sexualized language or imagery, and sexual attention or advances of   any kind</li> <li>Trolling, insulting or derogatory comments, and personal or political attacks</li> <li>Public or private harassment</li> <li>Publishing others' private information, such as a physical or email address,   without their explicit permission</li> <li>Other conduct which could reasonably be considered inappropriate in a   professional setting</li> </ul>"},{"location":"community/code_of_conduct/#enforcement-responsibilities","title":"Enforcement Responsibilities","text":"<p>Community leaders are responsible for clarifying and enforcing our standards of acceptable behavior and will take appropriate and fair corrective action in response to any behavior that they deem inappropriate, threatening, offensive, or harmful.</p> <p>Community leaders have the right and responsibility to remove, edit, or reject comments, commits, code, wiki edits, issues, and other contributions that are not aligned to this Code of Conduct, and will communicate reasons for moderation decisions when appropriate.</p>"},{"location":"community/code_of_conduct/#scope","title":"Scope","text":"<p>This Code of Conduct applies within all community spaces, and also applies when an individual is officially representing the community in public spaces. Examples of representing our community include using an official email address, posting via an official social media account, or acting as an appointed representative at an online or offline event.</p>"},{"location":"community/code_of_conduct/#enforcement","title":"Enforcement","text":"<p>Instances of abusive, harassing, or otherwise unacceptable behavior may be reported to the community leaders responsible for enforcement at mail@nlohmann.me. All complaints will be reviewed and investigated promptly and fairly.</p> <p>All community leaders are obligated to respect the privacy and security of the reporter of any incident.</p>"},{"location":"community/code_of_conduct/#enforcement-guidelines","title":"Enforcement Guidelines","text":"<p>Community leaders will follow these Community Impact Guidelines in determining the consequences for any action they deem in violation of this Code of Conduct:</p>"},{"location":"community/code_of_conduct/#1-correction","title":"1. Correction","text":"<p>Community Impact: Use of inappropriate language or other behavior deemed unprofessional or unwelcome in the community.</p> <p>Consequence: A private, written warning from community leaders, providing clarity around the nature of the violation and an explanation of why the behavior was inappropriate. A public apology may be requested.</p>"},{"location":"community/code_of_conduct/#2-warning","title":"2. Warning","text":"<p>Community Impact: A violation through a single incident or series of actions.</p> <p>Consequence: A warning with consequences for continued behavior. No interaction with the people involved, including unsolicited interaction with those enforcing the Code of Conduct, for a specified period of time. This includes avoiding interactions in community spaces as well as external channels like social media. Violating these terms may lead to a temporary or permanent ban.</p>"},{"location":"community/code_of_conduct/#3-temporary-ban","title":"3. Temporary Ban","text":"<p>Community Impact: A serious violation of community standards, including sustained inappropriate behavior.</p> <p>Consequence: A temporary ban from any sort of interaction or public communication with the community for a specified period of time. No public or private interaction with the people involved, including unsolicited interaction with those enforcing the Code of Conduct, is allowed during this period. Violating these terms may lead to a permanent ban.</p>"},{"location":"community/code_of_conduct/#4-permanent-ban","title":"4. Permanent Ban","text":"<p>Community Impact: Demonstrating a pattern of violation of community standards, including sustained inappropriate behavior, harassment of an individual, or aggression toward or disparagement of classes of individuals.</p> <p>Consequence: A permanent ban from any sort of public interaction within the community.</p>"},{"location":"community/code_of_conduct/#attribution","title":"Attribution","text":"<p>This Code of Conduct is adapted from the Contributor Covenant, version 2.1, available at https://www.contributor-covenant.org/version/2/1/code_of_conduct.html.</p> <p>Community Impact Guidelines were inspired by Mozilla's code of conduct enforcement ladder.</p> <p>For answers to common questions about this code of conduct, see the FAQ at https://www.contributor-covenant.org/faq. Translations are available at https://www.contributor-covenant.org/translations.</p>"},{"location":"community/contribution_guidelines/","title":"Contribution Guidelines","text":"<p>Thank you for your interest in contributing to this project! What began as an exercise to explore the exciting features of C++11 has evolved into a widely used JSON library. I truly appreciate all the contributions from the community, whether it's proposing features, identifying bugs, or fixing mistakes! To ensure that our collaboration is efficient and effective, please follow these guidelines.</p> <p>Feel free to discuss or suggest improvements to this document by submitting a pull request.</p>"},{"location":"community/contribution_guidelines/#ways-to-contribute","title":"Ways to Contribute","text":"<p>There are multiple ways to contribute.</p>"},{"location":"community/contribution_guidelines/#reporting-an-issue","title":"Reporting an issue","text":"<p>Please create an issue, assuming one does not already exist, and describe your concern. Note you need a GitHub account for this.</p> <p>Clearly describe the issue:</p> <ul> <li>If it is a bug, please describe how to reproduce it. If possible, attach a complete example which demonstrates   the error. Please also state what you expected to happen instead of the error.</li> <li>If you propose a change or addition, try to give an example what the improved code could look like or how to use   it.</li> <li>If you found a compilation error, please tell us which compiler (version and operating system) you used and paste   the (relevant part of) the error messages to the ticket.</li> </ul> <p>Please stick to the provided issue template bug report if possible.</p>"},{"location":"community/contribution_guidelines/#reporting-a-security-vulnerability","title":"Reporting a security vulnerability","text":"<p>You can report a security vulnerability according to our security policy.</p>"},{"location":"community/contribution_guidelines/#discussing-a-new-feature","title":"Discussing a new feature","text":"<p>For questions, feature or support requests, please open a discussion. If you find a proposed answer satisfactory, please use the \"Mark as answer\" button to make it easier for readers to see what helped and for the community to filter for open questions.</p>"},{"location":"community/contribution_guidelines/#proposing-a-fix-or-an-improvement","title":"Proposing a fix or an improvement","text":"<p>Join an ongoing discussion or comment on an existing issue before starting to code. This can help to avoid duplicate efforts or other frustration during the later review.</p> <p>Create a pull request against the <code>develop</code> branch and follow the pull request template. In particular,</p> <ul> <li>describe the changes in detail, both the what and why,</li> <li>reference existing issues where applicable,</li> <li>add tests to maintain 100% test coverage,</li> <li>update the documentation as needed, and</li> <li>ensure the source code is amalgamated.</li> </ul> <p>We describe all points in detail below.</p> <p>All contributions (including pull requests) must agree to the Developer Certificate of Origin (DCO) version 1.1. This is exactly the same one created and used by the Linux kernel developers and posted on http://developercertificate.org/. This is a developer's certification that he or she has the right to submit the patch for inclusion into the project.</p>"},{"location":"community/contribution_guidelines/#how-to","title":"How to...","text":""},{"location":"community/contribution_guidelines/#describe-your-changes","title":"Describe your changes","text":"<p>This library is primarily maintained as a spare-time project. As such, I cannot make any guarantee how quickly changes are merged and released. Therefore, it is very important to make the review as smooth as possible by explaining not only what you changed, but why. This rationale can be very valuable down the road when improvements or bugs are discussed years later.</p>"},{"location":"community/contribution_guidelines/#reference-an-existing-issue","title":"Reference an existing issue","text":"<p>Link a pull request to an issue to clarify that a fix is forthcoming and which issue can be closed after merging. Only a few cases (e.g., fixing typos) do not require prior discussions.</p>"},{"location":"community/contribution_guidelines/#write-tests","title":"Write tests","text":"<p>The library has an extensive test suite that currently covers 100 % of the library's code. These tests are crucial to maintain API stability and give future contributors confidence that they do not accidentally break things. As Titus Winters aptly put it:</p> <p>If you liked it, you should have put a test on it.</p>"},{"location":"community/contribution_guidelines/#run-the-tests","title":"Run the tests","text":"<p>First, ensure the test suite runs before making any changes:</p> <pre><code>$ cmake -S. -B build\n$ cmake --build build -j 10\n$ ctest --test-dir build -j 10\n</code></pre> <p>The test suite should report:</p> <pre><code>100% tests passed, 0 tests failed out of 98\n</code></pre>"},{"location":"community/contribution_guidelines/#add-tests","title":"Add tests","text":"<p>The tests are located in <code>tests/src/unit-*.cpp</code> and contain doctest assertions like <code>CHECK</code>. The tests are structured along the features of the library or the nature of the tests. Usually, it should be clear from the context which existing file needs to be extended, and only very few cases require creating new test files.</p> <p>When fixing a bug, edit <code>unit-regression2.cpp</code> and add a section referencing the fixed issue.</p>"},{"location":"community/contribution_guidelines/#exceptions","title":"Exceptions","text":"<p>When you test exceptions, please use <code>CHECK_THROWS_WITH_AS</code> which also takes the <code>what()</code> argument of the thrown exception into account.</p>"},{"location":"community/contribution_guidelines/#coverage","title":"Coverage","text":"<p>If test coverage decreases, an automatic warning comment will be posted on the pull request. You can access a code coverage report as an artifact to the \u201cUbuntu\u201d workflow.</p>"},{"location":"community/contribution_guidelines/#update-the-documentation","title":"Update the documentation","text":"<p>The main documentation of the library is generated from the files <code>docs/mkdocs/docs</code>. This folder contains dedicated pages for certain features, a list of all exceptions, and  extensive API documentation with details on every public API function.</p> <p>Build the documentation locally using:</p> <pre><code>make install_venv -C docs/mkdocs\nmake serve -C docs/mkdocs\n</code></pre> <p>The documentation will then be available at http://127.0.0.1:8000/. See the documentation of mkdocs and Material for MkDocs for more information.</p>"},{"location":"community/contribution_guidelines/#amalgamate-the-source-code","title":"Amalgamate the source code","text":"<p>The single-header files <code>single_include/nlohmann/json.hpp</code> and <code>single_include/nlohmann/json_fwd.hpp</code> are generated from the source files in the <code>include/nlohmann</code> directory. Do not edit the files directly; instead, modify the include/nlohmann sources and regenerate the files by executing:</p> <pre><code>make amalgamate\n</code></pre> <p>Running <code>make amalgamate</code> will also apply automatic formatting to the source files using <code>Artistic Style</code>. This formatting may modify your source files in-place. Be certain to review and commit any changes to avoid unintended formatting diffs in commits.</p>"},{"location":"community/contribution_guidelines/#recommended-documentation","title":"Recommended documentation","text":"<ul> <li>The library\u2019s README file is an excellent starting point to   understand its functionality.</li> <li>The documentation page is the reference documentation of the library.</li> <li>RFC 8259 is the reference for the JavaScript Object Notation (JSON)   Data Interchange Format.</li> </ul>"},{"location":"community/contribution_guidelines/#please-dont","title":"Please don't...","text":"<p>Certain contributions are not helpful.</p>"},{"location":"community/contribution_guidelines/#break-the-public-api","title":"Break the public API","text":"<p>We take pride in the library being used by numerous customers across various industries. They all rely on the guarantees provided by semantic versioning. Please do not change the library such that the public API of the 3.x.y version is broken. This includes:</p> <ul> <li>Changing function signatures (altering parameter types, return types, number of parameters) or changing the const-ness   of member functions.</li> <li>Removing functions.</li> <li>Renaming functions or classes.</li> <li>Changing exception handling.</li> <li>Changing exception ids.</li> <li>Changing access specifiers.</li> <li>Changing default arguments.</li> </ul> <p>Although these guidelines may seem restrictive, they are essential for maintaining the library\u2019s utility.</p> <p>Breaking changes may be introduced when they are guarded with a feature macro such as <code>JSON_USE_IMPLICIT_CONVERSIONS</code> which allows  selectively changing the behavior of the library. In next steps, the current behavior can then be deprecated. Using feature macros then allows users to test their code against the library in the next major release.</p>"},{"location":"community/contribution_guidelines/#break-c11-language-conformance","title":"Break C++11 language conformance","text":"<p>This library is designed to work with C++11 and later. This means that any supported C++11 compiler should compile the library without problems. Some compilers like GCC 4.7 (and earlier), Clang 3.3 (and earlier), or Microsoft Visual Studio 13.0 and earlier are known not to work due to missing or incomplete C++11 support.</p> <p>Please do not add features that do not work with the mentioned supported compilers. Please guard features from C++14 and later against the respective <code>JSON_HAS_CPP_14</code> macros.</p>"},{"location":"community/contribution_guidelines/#break-json-conformance","title":"Break JSON conformance","text":"<p>Please refrain from proposing changes that would break JSON conformance. If you propose a conformant extension of JSON to be supported by the library, please motivate this extension.</p>"},{"location":"community/contribution_guidelines/#wanted","title":"Wanted","text":"<p>The following areas really need contribution and are always welcomed:</p> <ul> <li>Extending the continuous integration toward more exotic compilers such as Android NDK, Intel's Compiler, or the   bleeding-edge versions Clang.</li> <li>Improving the efficiency of the JSON parser. The current parser is implemented as a naive recursive descent parser   with hand-coded string handling. More sophisticated approaches like LALR parsers would be really appreciated. That   said, parser generators like Bison or ANTLR do not play nice with single-header files -- I really would like to keep   the parser inside the <code>json.hpp</code> header, and I am not aware of approaches similar to <code>re2c</code> for   parsing.</li> <li>Extending and updating existing benchmarks to include (the most recent version of) this library. Though efficiency   is not everything, speed and memory consumption are very important characteristics for C++ developers, so having   proper comparisons would be interesting.</li> </ul> <p>We look forward to your contributions and collaboration to enhance the library!</p>"},{"location":"community/governance/","title":"Governance","text":"<p>The governance model for the JSON for Modern C++ project is a Benevolent Dictator for Life (BDFL) structure. As the sole maintainer, Niels Lohmann is responsible for all key aspects of the project. The project governance may evolve as the project grows, but any changes will be documented here and communicated to contributors.</p>"},{"location":"community/governance/#overview","title":"Overview","text":"<p>This project is led by a benevolent dictator, Niels Lohmann, and managed by the community. That is, the community actively contributes to the day-to-day maintenance of the project, but the general strategic line is drawn by the benevolent dictator. In case of disagreement, they have the last word. It is the benevolent dictator\u2019s job to resolve disputes within the community and to ensure that the project is able to progress in a coordinated way. In turn, it is the community\u2019s job to guide the decisions of the benevolent dictator through active engagement and contribution.</p>"},{"location":"community/governance/#roles-and-responsibilities","title":"Roles and responsibilities","text":""},{"location":"community/governance/#benevolent-dictator-project-lead","title":"Benevolent dictator (project lead)","text":"<p>Typically, the benevolent dictator, or project lead, is self-appointed. However, because the community always has the ability to fork, this person is fully answerable to the community. The project lead\u2019s role is a difficult one: they set the strategic objectives of the project and communicate these clearly to the community. They also have to understand the community as a whole and strive to satisfy as many conflicting needs as possible, while ensuring that the project survives in the long term.</p> <p>In many ways, the role of the benevolent dictator is less about dictatorship and more about diplomacy. The key is to ensure that, as the project expands, the right people are given influence over it and the community rallies behind the vision of the project lead. The lead\u2019s job is then to ensure that the committers (see below) make the right decisions on behalf of the project. Generally speaking, as long as the committers are aligned with the project\u2019s strategy, the project lead will allow them to proceed as they desire.</p>"},{"location":"community/governance/#committers","title":"Committers","text":"<p>Committers are contributors who have made several valuable contributions to the project and are now relied upon to both write code directly to the repository and screen the contributions of others. In many cases they are programmers but it is also possible that they contribute in a different role. Typically, a committer will focus on a specific aspect of the project, and will bring a level of expertise and understanding that earns them the respect of the community and the project lead. The role of committer is not an official one, it is simply a position that influential members of the community will find themselves in as the project lead looks to them for guidance and support.</p> <p>Committers have no authority over the overall direction of the project. However, they do have the ear of the project lead. It is a committer\u2019s job to ensure that the lead is aware of the community\u2019s needs and collective objectives, and to help develop or elicit appropriate contributions to the project. Often, committers are given informal control over their specific areas of responsibility, and are assigned rights to directly modify certain areas of the source code. That is, although committers do not have explicit decision-making authority, they will often find that their actions are synonymous with the decisions made by the lead.</p>"},{"location":"community/governance/#contributors","title":"Contributors","text":"<p>Contributors are community members who either have no desire to become committers, or have not yet been given the opportunity by the benevolent dictator. They make valuable contributions, such as those outlined in the list below, but generally do not have the authority to make direct changes to the project code. Contributors engage with the project through communication tools, such as email lists, and via reports and patches attached to issues in the issue tracker, as detailed in our community tools document.</p> <p>Anyone can become a contributor. There is no expectation of commitment to the project, no specific skill requirements and no selection process. To become a contributor, a community member simply has to perform one or more actions that are beneficial to the project.</p> <p>Some contributors will already be engaging with the project as users, but will also find themselves doing one or more of the following:</p> <ul> <li>supporting new users (current users often provide the most effective new user support)</li> <li>reporting bugs</li> <li>identifying requirements</li> <li>supplying graphics and web design</li> <li>programming</li> <li>assisting with project infrastructure</li> <li>writing documentation</li> <li>fixing bugs</li> <li>adding features</li> </ul> <p>As contributors gain experience and familiarity with the project, they may find that the project lead starts relying on them more and more. When this begins to happen, they gradually adopt the role of committer, as described above.</p>"},{"location":"community/governance/#users","title":"Users","text":"<p>Users are community members who have a need for the project. They are the most important members of the community: without them, the project would have no purpose. Anyone can be a user; there are no specific requirements.</p> <p>Users should be encouraged to participate in the life of the project and the community as much as possible. User contributions enable the project team to ensure that they are satisfying the needs of those users. Common user activities include (but are not limited to):</p> <ul> <li>evangelising about the project</li> <li>informing developers of project strengths and weaknesses from a new user\u2019s perspective</li> <li>providing moral support (a \u2018thank you\u2019 goes a long way)</li> <li>providing financial support</li> </ul> <p>Users who continue to engage with the project and its community will often find themselves becoming more and more involved. Such users may then go on to become contributors, as described above.</p>"},{"location":"community/governance/#support","title":"Support","text":"<p>All participants in the community are encouraged to provide support for new users within the project management infrastructure. This support is provided as a way of growing the community. Those seeking support should recognise that all support activity within the project is voluntary and is therefore provided as and when time allows. A user requiring guaranteed response times or results should therefore seek to purchase a support contract from a vendor. (Of course, that vendor should be an active member of the community.) However, for those willing to engage with the project on its own terms, and willing to help support other users, the community support channels are ideal.</p>"},{"location":"community/governance/#contribution-process","title":"Contribution Process","text":"<p>Anyone can contribute to the project, regardless of their skills, as there are many ways to contribute. For instance, a contributor might be active on the project mailing list and issue tracker, or might supply patches. The various ways of contributing are described in more detail in our roles in open source document.</p> <p>The developer mailing list is the most appropriate place for a contributor to ask for help when making their first contribution.</p>"},{"location":"community/governance/#decision-making-process","title":"Decision-Making Process","text":"<p>The benevolent dictatorship model does not need a formal conflict resolution process, since the project lead\u2019s word is final. If the community chooses to question the wisdom of the actions of a committer, the project lead can review their decisions by checking the email archives, and either uphold or reverse them.</p> <p>Source</p> <p>The text was taken from http://oss-watch.ac.uk/resources/benevolentdictatorgovernancemodel.</p>"},{"location":"community/quality_assurance/","title":"Quality assurance","text":"<p>Ensuring quality is paramount for this project, particularly because numerous other projects depend on it. Each commit to the library undergoes rigorous checks against the following requirements, and any violations will result in a failed build.</p>"},{"location":"community/quality_assurance/#c-language-compliance-and-compiler-compatibility","title":"C++ language compliance and compiler compatibility","text":"<p>Requirement: Compiler support</p> <p>Any compiler with complete C++11 support can compile the library without warnings.</p> <ul> <li> <p> The library is compiled with 50+ different C++ compilers with different operating systems and platforms,   including the oldest versions known to compile the library.</p> Compilers used in continuous integration Compiler Architecture Operating System CI AppleClang 15.0.0.15000040; Xcode 15.0.1 x86_64 macOS 13.7.2 (Ventura) GitHub AppleClang 15.0.0.15000100; Xcode 15.1 x86_64 macOS 13.7.2 (Ventura) GitHub AppleClang 15.0.0.15000100; Xcode 15.2 x86_64 macOS 13.7.2 (Ventura) GitHub AppleClang 15.0.0.15000309; Xcode 15.3 arm64 macOS 14.7.2 (Sonoma) GitHub AppleClang 15.0.0.15000309; Xcode 15.4 arm64 macOS 14.7.2 (Sonoma) GitHub AppleClang 16.0.0.16000026; Xcode 16 arm64 macOS 15.2 (Sequoia) GitHub AppleClang 16.0.0.16000026; Xcode 16.1 arm64 macOS 15.2 (Sequoia) GitHub AppleClang 16.0.0.16000026; Xcode 16.2 arm64 macOS 15.2 (Sequoia) GitHub AppleClang 17.0.0.17000013; Xcode 16.3 arm64 macOS 15.5 (Sequoia) GitHub AppleClang 17.0.0.17000013; Xcode 16.4 arm64 macOS 15.5 (Sequoia) GitHub AppleClang 17.0.0.17000319; Xcode 26.0.1 arm64 macOS 15.5 (Sequoia) GitHub Clang 3.5.2 x86_64 Ubuntu 22.04.1 LTS GitHub Clang 3.6.2 x86_64 Ubuntu 22.04.1 LTS GitHub Clang 3.7.1 x86_64 Ubuntu 22.04.1 LTS GitHub Clang 3.8.1 x86_64 Ubuntu 22.04.1 LTS GitHub Clang 3.9.1 x86_64 Ubuntu 22.04.1 LTS GitHub Clang 4.0.1 x86_64 Ubuntu 22.04.1 LTS GitHub Clang 5.0.2 x86_64 Ubuntu 22.04.1 LTS GitHub Clang 6.0.1 x86_64 Ubuntu 22.04.1 LTS GitHub Clang 7.1.0 x86_64 Ubuntu 22.04.1 LTS GitHub Clang 8.0.1 x86_64 Ubuntu 22.04.1 LTS GitHub Clang 9.0.1 x86_64 Ubuntu 22.04.1 LTS GitHub Clang 10.0.1 x86_64 Ubuntu 22.04.1 LTS GitHub Clang 11.0.1 with GNU-like command-line x86_64 Windows Server 2022 (Build 20348) GitHub Clang 11.1.0 x86_64 Ubuntu 22.04.1 LTS GitHub Clang 12.0.1 with GNU-like command-line x86_64 Windows Server 2022 (Build 20348) GitHub Clang 12.0.1 x86_64 Ubuntu 22.04.1 LTS GitHub Clang 13.0.1 with GNU-like command-line x86_64 Windows Server 2022 (Build 20348) GitHub Clang 13.0.1 x86_64 Ubuntu 22.04.1 LTS GitHub Clang 14.0.6 x86_64 Ubuntu 22.04.1 LTS GitHub Clang 14.0.6 with GNU-like command-line x86_64 Windows Server 2022 (Build 20348) GitHub Clang 15.0.7 x86_64 Ubuntu 22.04.1 LTS GitHub Clang 15.0.7 with GNU-like command-line x86_64 Windows Server 2022 (Build 20348) GitHub Clang 16.0.6 x86_64 Ubuntu 22.04.1 LTS GitHub Clang 16.0.6 with GNU-like command-line x86_64 Windows Server 2022 (Build 20348) GitHub Clang 17.0.6 x86_64 Ubuntu 22.04.1 LTS GitHub Clang 18.1.8 x86_64 Ubuntu 22.04.1 LTS GitHub Clang 18.1.8 with GNU-like command-line x86_64 Windows Server 2022 (Build 20348) GitHub Clang 19.1.5 with MSVC-like command-line x86_64 Windows Server 2022 (Build 20348) GitHub Clang 19.1.7 x86_64 Ubuntu 22.04.1 LTS GitHub Clang 19.1.7 with GNU-like command-line x86_64 Windows Server 2022 (Build 20348) GitHub Clang 20.1.1 x86_64 Ubuntu 22.04.1 LTS GitHub Clang 20.1.8 with GNU-like command-line x86_64 Windows Server 2022 (Build 20348) GitHub Clang 21.0.0 x86_64 Ubuntu 22.04.1 LTS GitHub Emscripten 4.0.6 x86_64 Ubuntu 22.04.1 LTS GitHub GNU 4.8.5 x86_64 Ubuntu 22.04.1 LTS GitHub GNU 4.9.3 x86_64 Ubuntu 22.04.1 LTS GitHub GNU 5.5.0 x86_64 Ubuntu 22.04.1 LTS GitHub GNU 6.4.0 x86_64 Ubuntu 22.04.1 LTS GitHub GNU 7.5.0 x86_64 Ubuntu 22.04.1 LTS GitHub GNU 8.5.0 x86_64 Ubuntu 22.04.1 LTS GitHub GNU 9.3.0 x86_64 Ubuntu 22.04.1 LTS GitHub GNU 9.4.0 x86_64 Ubuntu 22.04.1 LTS GitHub GNU 9.5.0 x86_64 Ubuntu 22.04.1 LTS GitHub GNU 10.5.0 x86_64 Ubuntu 22.04.1 LTS GitHub GNU 11.4.0 x86_64 Ubuntu 22.04.1 LTS GitHub GNU 11.5.0 x86_64 Ubuntu 22.04.1 LTS GitHub GNU 12.2.0 (MinGW-W64 i686-ucrt-posix-dwarf) x86_64 Windows Server 2022 (Build 20348) GitHub GNU 12.2.0 (MinGW-W64 x86_64-ucrt-posix-seh) x86_64 Windows Server 2022 (Build 20348) GitHub GNU 12.4.0 x86_64 Ubuntu 22.04.1 LTS GitHub GNU 13.3.0 x86_64 Ubuntu 22.04.1 LTS GitHub GNU 14.2.0 x86_64 Ubuntu 22.04.1 LTS GitHub GNU 14.2.0 arm64 Linux 6.1.100 Cirrus CI GNU 15.1.0 x86_64 Ubuntu 22.04.1 LTS GitHub icpc (ICC) 2021.5.0 20211109 x86_64 Ubuntu 20.04.3 LTS GitHub MSVC 19.0.24241.7 x86 Windows 8.1 AppVeyor MSVC 19.16.27035.0 x86 Windows-10 (Build 14393) AppVeyor MSVC 19.29.30157.0 x86 Windows-10 (Build 17763) AppVeyor MSVC 19.44.35214.0 x86 Windows Server 2022 (Build 20348) GitHub MSVC 19.44.35214.0 x86_64 Windows Server 2022 (Build 20348) GitHub </li> <li> <p> The library is compiled with all C++ language revisions (C++11, C++14, C++17, C++20, C++23, and C++26) to detect   and fix language deprecations early.</p> </li> <li> The library is checked for compiler warnings:</li> <li> <p>On Clang, <code>-Weverything</code> is used with 8 exceptions.</p> Clang warnings <pre><code># Ignored Clang warnings:\n# -Wno-c++98-compat               The library targets C++11.\n# -Wno-c++98-compat-pedantic      The library targets C++11.\n# -Wno-deprecated-declarations    The library contains annotations for deprecated functions.\n# -Wno-extra-semi-stmt            The library uses assert which triggers this warning.\n# -Wno-padded                     We do not care about padding warnings.\n# -Wno-covered-switch-default     All switches list all cases and a default case.\n# -Wno-unsafe-buffer-usage        Otherwise Doctest would not compile.\n# -Wno-missing-noreturn           We found no way to silence this warning otherwise, see PR #4871\n\nset(CLANG_CXXFLAGS\n    -Werror\n    -Weverything\n    -Wno-c++98-compat\n    -Wno-c++98-compat-pedantic\n    -Wno-deprecated-declarations\n    -Wno-extra-semi-stmt\n    -Wno-padded\n    -Wno-covered-switch-default\n    -Wno-unsafe-buffer-usage\n    -Wno-missing-noreturn\n)\n</code></pre> </li> <li> <p>On GCC, 300+ warnings are enabled with 8 exceptions.</p> GCC warnings <pre><code># Warning flags determined for GCC 15.1.0 with https://github.com/nlohmann/gcc_flags:\n# Ignored GCC warnings:\n# -Wno-abi-tag           We do not care about ABI tags.\n# -Wno-aggregate-return  The library uses aggregate returns.\n# -Wno-long-long         The library uses the long long type to interface with system functions.\n# -Wno-namespaces        The library uses namespaces.\n# -Wno-nrvo              Doctest triggers this warning.\n# -Wno-padded            We do not care about padding warnings.\n# -Wno-system-headers    We do not care about warnings in system headers.\n# -Wno-templates         The library uses templates.\n\nset(GCC_CXXFLAGS\n    -pedantic\n    -Werror\n    --all-warnings\n    --extra-warnings\n    -W\n    -WNSObject-attribute\n    -Wno-abi-tag\n    -Waddress\n    -Waddress-of-packed-member\n    -Wno-aggregate-return\n    -Waggressive-loop-optimizations\n    -Waligned-new=all\n    -Wall\n    -Walloc-size\n    -Walloc-zero\n    -Walloca\n    -Wanalyzer-allocation-size\n    -Wanalyzer-deref-before-check\n    -Wanalyzer-double-fclose\n    -Wanalyzer-double-free\n    -Wanalyzer-exposure-through-output-file\n    -Wanalyzer-exposure-through-uninit-copy\n    -Wanalyzer-fd-access-mode-mismatch\n    -Wanalyzer-fd-double-close\n    -Wanalyzer-fd-leak\n    -Wanalyzer-fd-phase-mismatch\n    -Wanalyzer-fd-type-mismatch\n    -Wanalyzer-fd-use-after-close\n    -Wanalyzer-fd-use-without-check\n    -Wanalyzer-file-leak\n    -Wanalyzer-free-of-non-heap\n    -Wanalyzer-imprecise-fp-arithmetic\n    -Wanalyzer-infinite-loop\n    -Wanalyzer-infinite-recursion\n    -Wanalyzer-jump-through-null\n    -Wanalyzer-malloc-leak\n    -Wanalyzer-mismatching-deallocation\n    -Wanalyzer-null-argument\n    -Wanalyzer-null-dereference\n    -Wanalyzer-out-of-bounds\n    -Wanalyzer-overlapping-buffers\n    -Wanalyzer-possible-null-argument\n    -Wanalyzer-possible-null-dereference\n    -Wanalyzer-putenv-of-auto-var\n    -Wanalyzer-shift-count-negative\n    -Wanalyzer-shift-count-overflow\n    -Wanalyzer-stale-setjmp-buffer\n    -Wanalyzer-symbol-too-complex\n    -Wanalyzer-tainted-allocation-size\n    -Wanalyzer-tainted-array-index\n    -Wanalyzer-tainted-assertion\n    -Wanalyzer-tainted-divisor\n    -Wanalyzer-tainted-offset\n    -Wanalyzer-tainted-size\n    -Wanalyzer-too-complex\n    -Wanalyzer-undefined-behavior-ptrdiff\n    -Wanalyzer-undefined-behavior-strtok\n    -Wanalyzer-unsafe-call-within-signal-handler\n    -Wanalyzer-use-after-free\n    -Wanalyzer-use-of-pointer-in-stale-stack-frame\n    -Wanalyzer-use-of-uninitialized-value\n    -Wanalyzer-va-arg-type-mismatch\n    -Wanalyzer-va-list-exhausted\n    -Wanalyzer-va-list-leak\n    -Wanalyzer-va-list-use-after-va-end\n    -Wanalyzer-write-to-const\n    -Wanalyzer-write-to-string-literal\n    -Warith-conversion\n    -Warray-bounds=2\n    -Warray-compare\n    -Warray-parameter=2\n    -Wattribute-alias=2\n    -Wattribute-warning\n    -Wattributes\n    -Wbool-compare\n    -Wbool-operation\n    -Wbuiltin-declaration-mismatch\n    -Wbuiltin-macro-redefined\n    -Wc++0x-compat\n    -Wc++11-compat\n    -Wc++11-extensions\n    -Wc++14-compat\n    -Wc++14-extensions\n    -Wc++17-compat\n    -Wc++17-extensions\n    -Wc++1z-compat\n    -Wc++20-compat\n    -Wc++20-extensions\n    -Wc++23-extensions\n    -Wc++26-extensions\n    -Wc++2a-compat\n    -Wcalloc-transposed-args\n    -Wcannot-profile\n    -Wcast-align\n    -Wcast-align=strict\n    -Wcast-function-type\n    -Wcast-qual\n    -Wcast-user-defined\n    -Wcatch-value=3\n    -Wchanges-meaning\n    -Wchar-subscripts\n    -Wclass-conversion\n    -Wclass-memaccess\n    -Wclobbered\n    -Wcomma-subscript\n    -Wcomment\n    -Wcomments\n    -Wcomplain-wrong-lang\n    -Wconditionally-supported\n    -Wconversion\n    -Wconversion-null\n    -Wcoverage-invalid-line-number\n    -Wcoverage-mismatch\n    -Wcoverage-too-many-conditions\n    -Wcoverage-too-many-paths\n    -Wcpp\n    -Wctad-maybe-unsupported\n    -Wctor-dtor-privacy\n    -Wdangling-else\n    -Wdangling-pointer=2\n    -Wdangling-reference\n    -Wdate-time\n    -Wdefaulted-function-deleted\n    -Wdelete-incomplete\n    -Wdelete-non-virtual-dtor\n    -Wdeprecated\n    -Wdeprecated-copy\n    -Wdeprecated-copy-dtor\n    -Wdeprecated-declarations\n    -Wdeprecated-enum-enum-conversion\n    -Wdeprecated-enum-float-conversion\n    -Wdeprecated-literal-operator\n    -Wdeprecated-variadic-comma-omission\n    -Wdisabled-optimization\n    -Wdiv-by-zero\n    -Wdouble-promotion\n    -Wduplicated-branches\n    -Wduplicated-cond\n    -Weffc++\n    -Welaborated-enum-base\n    -Wempty-body\n    -Wendif-labels\n    -Wenum-compare\n    -Wenum-conversion\n    -Wexceptions\n    -Wexpansion-to-defined\n    -Wextra\n    -Wextra-semi\n    -Wflex-array-member-not-at-end\n    -Wfloat-conversion\n    -Wfloat-equal\n    -Wformat -Wformat-contains-nul\n    -Wformat -Wformat-diag\n    -Wformat -Wformat-extra-args\n    -Wformat -Wformat-nonliteral\n    -Wformat -Wformat-overflow=2\n    -Wformat -Wformat-security\n    -Wformat -Wformat-signedness\n    -Wformat -Wformat-truncation=2\n    -Wformat -Wformat-y2k\n    -Wformat -Wformat-zero-length\n    -Wformat=2\n    -Wframe-address\n    -Wfree-nonheap-object\n    -Wglobal-module\n    -Whardened\n    -Wheader-guard\n    -Whsa\n    -Wif-not-aligned\n    -Wignored-attributes\n    -Wignored-qualifiers\n    -Wimplicit-fallthrough=5\n    -Winaccessible-base\n    -Winfinite-recursion\n    -Winherited-variadic-ctor\n    -Winit-list-lifetime\n    -Winit-self\n    -Winline\n    -Wint-in-bool-context\n    -Wint-to-pointer-cast\n    -Winterference-size\n    -Winvalid-constexpr\n    -Winvalid-imported-macros\n    -Winvalid-memory-model\n    -Winvalid-offsetof\n    -Winvalid-pch\n    -Winvalid-utf8\n    -Wliteral-suffix\n    -Wlogical-not-parentheses\n    -Wlogical-op\n    -Wno-long-long\n    -Wlto-type-mismatch\n    -Wmain\n    -Wmaybe-musttail-local-addr\n    -Wmaybe-uninitialized\n    -Wmemset-elt-size\n    -Wmemset-transposed-args\n    -Wmisleading-indentation\n    -Wmismatched-dealloc\n    -Wmismatched-new-delete\n    -Wmismatched-tags\n    -Wmissing-attributes\n    -Wmissing-braces\n    -Wmissing-declarations\n    -Wmissing-field-initializers\n    -Wmissing-include-dirs\n    -Wmissing-profile\n    -Wmissing-requires\n    -Wmissing-template-keyword\n    -Wmultichar\n    -Wmultiple-inheritance\n    -Wmultistatement-macros\n    -Wmusttail-local-addr\n    -Wno-namespaces\n    -Wnarrowing\n    -Wnoexcept\n    -Wnoexcept-type\n    -Wnon-template-friend\n    -Wnon-virtual-dtor\n    -Wnonnull\n    -Wnonnull-compare\n    -Wnormalized=nfkc\n    -Wno-nrvo\n    -Wnull-dereference\n    -Wodr\n    -Wold-style-cast\n    -Wopenacc-parallelism\n    -Wopenmp\n    -Wopenmp-simd\n    -Woverflow\n    -Woverlength-strings\n    -Woverloaded-virtual=2\n    -Wpacked\n    -Wpacked-bitfield-compat\n    -Wpacked-not-aligned\n    -Wno-padded\n    -Wparentheses\n    -Wpedantic\n    -Wpessimizing-move\n    -Wplacement-new=2\n    -Wpmf-conversions\n    -Wpointer-arith\n    -Wpointer-compare\n    -Wpragma-once-outside-header\n    -Wpragmas\n    -Wprio-ctor-dtor\n    -Wpsabi\n    -Wrange-loop-construct\n    -Wredundant-decls\n    -Wredundant-move\n    -Wredundant-tags\n    -Wregister\n    -Wreorder\n    -Wrestrict\n    -Wreturn-local-addr\n    -Wreturn-type\n    -Wscalar-storage-order\n    -Wself-move\n    -Wsequence-point\n    -Wshadow=compatible-local\n    -Wshadow=global\n    -Wshadow=local\n    -Wshift-count-negative\n    -Wshift-count-overflow\n    -Wshift-negative-value\n    -Wshift-overflow=2\n    -Wsign-compare\n    -Wsign-conversion\n    -Wsign-promo\n    -Wsized-deallocation\n    -Wsizeof-array-argument\n    -Wsizeof-array-div\n    -Wsizeof-pointer-div\n    -Wsizeof-pointer-memaccess\n    -Wstack-protector\n    -Wstrict-aliasing\n    -Wstrict-aliasing=3\n    -Wstrict-null-sentinel\n    -Wstrict-overflow\n    -Wstring-compare\n    -Wstringop-overflow\n    -Wstringop-overflow=4\n    -Wstringop-overread\n    -Wstringop-truncation\n    -Wsubobject-linkage\n    -Wsuggest-attribute=cold\n    -Wsuggest-attribute=const\n    -Wsuggest-attribute=format\n    -Wsuggest-attribute=malloc\n    -Wsuggest-attribute=noreturn\n    -Wsuggest-attribute=pure\n    -Wsuggest-attribute=returns_nonnull\n    -Wsuggest-final-methods\n    -Wsuggest-final-types\n    -Wsuggest-override\n    -Wswitch\n    -Wswitch-bool\n    -Wswitch-default\n    -Wswitch-enum\n    -Wswitch-outside-range\n    -Wswitch-unreachable\n    -Wsync-nand\n    -Wsynth\n    -Wno-system-headers\n    -Wtautological-compare\n    -Wtemplate-body\n    -Wtemplate-id-cdtor\n    -Wtemplate-names-tu-local\n    -Wno-templates\n    -Wterminate\n    -Wtrailing-whitespace\n    -Wtrampolines\n    -Wtrigraphs\n    -Wtrivial-auto-var-init\n    -Wtsan\n    -Wtype-limits\n    -Wundef\n    -Wunicode\n    -Wuninitialized\n    -Wunknown-pragmas\n    -Wunreachable-code\n    -Wunsafe-loop-optimizations\n    -Wunused\n    -Wunused-but-set-parameter\n    -Wunused-but-set-variable\n    -Wunused-const-variable=2\n    -Wunused-function\n    -Wunused-label\n    -Wunused-local-typedefs\n    -Wunused-macros\n    -Wunused-parameter\n    -Wunused-result\n    -Wunused-value\n    -Wunused-variable\n    -Wuse-after-free=3\n    -Wuseless-cast\n    -Wvarargs\n    -Wvariadic-macros\n    -Wvector-operation-performance\n    -Wvexing-parse\n    -Wvirtual-inheritance\n    -Wvirtual-move-assign\n    -Wvla\n    -Wvla-parameter\n    -Wvolatile\n    -Wvolatile-register-var\n    -Wwrite-strings\n    -Wxor-used-as-pow\n    -Wzero-as-null-pointer-constant\n    -Wzero-length-bounds\n)\n</code></pre> </li> </ul>"},{"location":"community/quality_assurance/#c-standard-library-compliance","title":"C++ standard library compliance","text":"<p>Requirement: No prerequisites</p> <p>The library has no prerequisites other than the Standard Template Library (STL).</p> <ul> <li> The library is compiled and tested with both libc++ and   libstdc++ to detect subtle differences or incompatibilities.</li> <li> The code checked with Include What You Use (IWYU) that all required standard   headers are included.</li> <li> On Windows, the library is compiled with <code>&lt;Windows.h&gt;</code> being included to detect and avoid common bugs.</li> <li> The library is compiled with exceptions disabled to support alternative means of error handling.</li> </ul>"},{"location":"community/quality_assurance/#stable-public-api","title":"Stable public API","text":"<p>Requirement: Stable public API</p> <p>Any change to the library does not break the public API.</p> <ul> <li> All public API functions are tested with a variety of arguments.</li> <li> The library is compiled and tested with different template arguments for number, string, array, and object types.</li> <li> Unit tests cover all lines of the code base.</li> <li> Every exception of the library is thrown in the test suite, and the error messages and exception ids are checked.</li> </ul> <p>Requirement: Complete documentation</p> <p>The public API is extensively documented.</p> <ul> <li> Every public API function has a dedicated page in the   API reference documentation with a self-contained code example.</li> <li> All examples in the documentation are tested, and changes in their output are treated as an error.</li> </ul>"},{"location":"community/quality_assurance/#robust-input-processing","title":"Robust input processing","text":"<p>Requirement: Standards compliance</p> <p>The library is compliant to JSON as defined in RFC 8259.</p> <ul> <li> The lexer is tested with all valid Unicode code points and all prefixes of all invalid Unicode code points.</li> <li> The parser is tested against extensive correctness suites for JSON compliance.</li> <li> In addition, the library is continuously fuzz-tested at OSS-Fuzz where the   library is checked against billions of inputs.</li> </ul>"},{"location":"community/quality_assurance/#static-analysis","title":"Static analysis","text":"<p>Requirement: State-of-the-art code analysis</p> <p>The code is checked with state-of-the-art static code analysis tools.</p> <ul> <li> <p> The code is checked with the latest Clang-Tidy.</p> Clang-Tidy configuration (.clang-tidy) <pre><code># TODO: The first three checks are only removed to get the CI going. They have to be addressed at some point.\n# TODO: portability-avoid-pragma-once: should be fixed eventually\n\nChecks: '*,\n\n         -portability-template-virtual-member-function,\n         -bugprone-use-after-move,\n         -hicpp-invalid-access-moved,\n\n         -altera-id-dependent-backward-branch,\n         -altera-struct-pack-align,\n         -altera-unroll-loops,\n         -android-cloexec-fopen,\n         -boost-use-ranges,\n         -bugprone-easily-swappable-parameters,\n         -cert-err58-cpp,\n         -clang-analyzer-webkit.NoUncountedMemberChecker,\n         -concurrency-mt-unsafe,\n         -cppcoreguidelines-avoid-const-or-ref-data-members,\n         -cppcoreguidelines-avoid-do-while,\n         -cppcoreguidelines-avoid-goto,\n         -cppcoreguidelines-avoid-magic-numbers,\n         -cppcoreguidelines-avoid-non-const-global-variables,\n         -cppcoreguidelines-macro-usage,\n         -cppcoreguidelines-pro-bounds-avoid-unchecked-container-access,\n         -cppcoreguidelines-pro-bounds-array-to-pointer-decay,\n         -cppcoreguidelines-pro-bounds-constant-array-index,\n         -cppcoreguidelines-pro-bounds-pointer-arithmetic,\n         -cppcoreguidelines-pro-type-reinterpret-cast,\n         -cppcoreguidelines-pro-type-union-access,\n         -cppcoreguidelines-rvalue-reference-param-not-moved,\n         -cppcoreguidelines-virtual-class-destructor,\n         -fuchsia-default-arguments-calls,\n         -fuchsia-default-arguments-declarations,\n         -fuchsia-overloaded-operator,\n         -google-explicit-constructor,\n         -google-readability-function-size,\n         -google-runtime-float,\n         -google-runtime-int,\n         -google-runtime-references,\n         -hicpp-avoid-goto,\n         -hicpp-explicit-conversions,\n         -hicpp-function-size,\n         -hicpp-no-array-decay,\n         -hicpp-no-assembler,\n         -hicpp-signed-bitwise,\n         -hicpp-uppercase-literal-suffix,\n         -llvm-header-guard,\n         -llvm-include-order,\n         -llvm-prefer-static-over-anonymous-namespace,\n         -llvm-use-ranges,\n         -llvmlibc-*,\n         -misc-use-anonymous-namespace,\n         -misc-confusable-identifiers,\n         -misc-include-cleaner,\n         -misc-no-recursion,\n         -misc-non-private-member-variables-in-classes,\n         -modernize-concat-nested-namespaces,\n         -modernize-type-traits,\n         -modernize-use-constraints,\n         -modernize-use-designated-initializers,\n         -modernize-use-nodiscard,\n         -modernize-use-ranges,\n         -modernize-use-std-numbers,\n         -modernize-use-trailing-return-type,\n         -performance-enum-size,\n         -portability-avoid-pragma-once,\n         -readability-function-cognitive-complexity,\n         -readability-function-size,\n         -readability-identifier-length,\n         -readability-magic-numbers,\n         -readability-redundant-access-specifiers,\n         -readability-redundant-parentheses,\n         -readability-simplify-boolean-expr,\n         -readability-uppercase-literal-suffix,\n         -readability-use-concise-preprocessor-directives'\n\nCheckOptions:\n  - key: hicpp-special-member-functions.AllowSoleDefaultDtor\n    value: 1\n\nWarningsAsErrors: '*'\n\n#HeaderFilterRegex: '.*nlohmann.*'\nHeaderFilterRegex: '.*hpp$'\n</code></pre> </li> <li> <p> The code is checked with the latest Cppcheck with all warnings enabled.</p> </li> <li> The code is checked with the latest Clang Static Analyzer with 89 enabled   rules.</li> <li> The code is checked with Infer.</li> <li> The code is checked with Codacy.</li> </ul>"},{"location":"community/quality_assurance/#dynamic-analysis","title":"Dynamic analysis","text":"<p>Requirement: Correctness</p> <p>The library is checked for memory correctness and absence of undefined behavior.</p> <ul> <li> The test suite is executed with enabled runtime assertions to   check invariants and preconditions of functions to detect undefined behavior.</li> <li> The test suite is executed with Valgrind (Memcheck) to detect memory leaks.</li> <li> The test suite is executed with Sanitizers (address sanitizer, undefined   behavior sanitizer, integer overflow detection, nullability violations).</li> </ul>"},{"location":"community/quality_assurance/#style-check","title":"Style check","text":"<p>Requirement: Common code style</p> <p>A common code style is used throughout all code files of the library.</p> <ul> <li> <p> The code is formatted with Artistic Style (astyle) against a style configuration   that is also enforced in the CI.</p> Astyle configuration (tools/astyle/.astylerc) <pre><code># Configuration for Artistic Style\n# see https://astyle.sourceforge.net/astyle.html\n\n#######################\n# Brace Style Options #\n#######################\n\n# use Allman style for braces\n--style=allman\n\n###############\n# Tab Options #\n###############\n\n# indent using 4 spaces\n--indent=spaces=4\n\n#######################\n# Indentation Options #\n#######################\n\n# indent access modifiers one half indent\n--indent-modifiers\n\n# indent switch cases to the switch block\n--indent-switches\n\n# indent preprocessor blocks\n--indent-preproc-block\n\n# indent preprocessor defines\n--indent-preproc-define\n\n# indent C++ comments\n--indent-col1-comments\n\n###################\n# Padding Options #\n###################\n\n# insert space padding around operators\n--pad-oper\n\n# insert space between if/for/while... and the following parentheses\n--pad-header\n\n# attach the pointer to the variable type (left)\n--align-pointer=type\n\n# attach the reference to the variable type (left)\n--align-reference=type\n\n######################\n# Formatting Options #\n######################\n\n# add braces to unbraced one line conditional statements\n--add-braces\n\n# convert tabs to spaces\n--convert-tabs\n\n# closes whitespace between the ending angle brackets of template definitions\n--close-templates\n\n#################\n# Other Options #\n#################\n\n# do not create backup files\n--suffix=none\n\n# preserve the original file date\n--preserve-date\n\n# display only the files that have been formatted\n--formatted\n\n# for the linux (LF) line end style\n--lineend=linux\n</code></pre> </li> <li> <p> The code style is checked with cpplint with 61 enabled rules.</p> </li> </ul>"},{"location":"community/quality_assurance/#simple-integration","title":"Simple integration","text":"<p>Requirement: Single header</p> <p>The library can be used by adding a single header to a C++ project.</p> <ul> <li> An amalgamation script is used to check if the source code is exposed as a self-contained single-header file.</li> <li> The test suite is checked against the amalgamated source file as well as the individual source file.</li> </ul> <p>Requirement: CMake as primary development tool</p> <p>All library functions are exposed and usable by CMake.</p> <ul> <li> All library options are exposed as CMake options and tested.</li> <li> The library is tested against relevant CMake versions:</li> <li>CMake 3.5 (the earliest supported)</li> <li>CMake 3.31.6 (the latest 3.x release)</li> <li>CMake 4.0.0 (a very recent release)</li> </ul>"},{"location":"community/security_policy/","title":"Security Policy","text":""},{"location":"community/security_policy/#reporting-a-vulnerability","title":"Reporting a Vulnerability","text":"<p>We value the security of our users and appreciate your efforts to responsibly disclose vulnerabilities. If you have identified a security vulnerability in this repository, please use the GitHub Security Advisory \"Report a Vulnerability\" tab.</p> <p>Until it is published, this draft security advisory will only be visible to the maintainers of this project. Other users and teams may be added once the advisory is created.</p> <p>We will send a response indicating the next steps in handling your report. After the initial reply to your report, we will keep you informed of the progress towards a fix and full announcement and may ask for additional information or guidance.</p> <p>For vulnerabilities in third-party dependencies or modules, please report them directly to the respective maintainers.</p>"},{"location":"community/security_policy/#additional-resources","title":"Additional Resources","text":"<ul> <li>Explore security-related topics and contribute to tools and projects through   GitHub Security Lab.</li> <li>Learn more about responsible disclosure and reporting vulnerabilities in GitHub at   About coordinated disclosure of security vulnerabilities.</li> </ul> <p>We sincerely thank you for contributing to the security and integrity of this project!</p>"},{"location":"features/arbitrary_types/","title":"Arbitrary Type Conversions","text":"<p>Every type can be serialized in JSON, not just STL containers and scalar types. Usually, you would do something along those lines:</p> <pre><code>namespace ns {\n    // a simple struct to model a person\n    struct person {\n        std::string name;\n        std::string address;\n        int age;\n    };\n} // namespace ns\n\nns::person p = {\"Ned Flanders\", \"744 Evergreen Terrace\", 60};\n\n// convert to JSON: copy each value into the JSON object\njson j;\nj[\"name\"] = p.name;\nj[\"address\"] = p.address;\nj[\"age\"] = p.age;\n\n// ...\n\n// convert from JSON: copy each value from the JSON object\nns::person p {\n    j[\"name\"].get&lt;std::string&gt;(),\n    j[\"address\"].get&lt;std::string&gt;(),\n    j[\"age\"].get&lt;int&gt;()\n};\n</code></pre> <p>It works, but that's quite a lot of boilerplate... Fortunately, there's a better way:</p> <pre><code>// create a person\nns::person p {\"Ned Flanders\", \"744 Evergreen Terrace\", 60};\n\n// conversion: person -&gt; json\njson j = p;\n\nstd::cout &lt;&lt; j &lt;&lt; std::endl;\n// {\"address\":\"744 Evergreen Terrace\",\"age\":60,\"name\":\"Ned Flanders\"}\n\n// conversion: json -&gt; person\nauto p2 = j.get&lt;ns::person&gt;();\n\n// that's it\nassert(p == p2);\n</code></pre>"},{"location":"features/arbitrary_types/#basic-usage","title":"Basic usage","text":"<p>To make this work with one of your types, you only need to provide two functions:</p> <pre><code>using json = nlohmann::json;\n\nnamespace ns {\n    void to_json(json&amp; j, const person&amp; p) {\n        j = json{ {\"name\", p.name}, {\"address\", p.address}, {\"age\", p.age} };\n    }\n\n    void from_json(const json&amp; j, person&amp; p) {\n        j.at(\"name\").get_to(p.name);\n        j.at(\"address\").get_to(p.address);\n        j.at(\"age\").get_to(p.age);\n    }\n} // namespace ns\n</code></pre> <p>That's all! When calling the <code>json</code> constructor with your type, your custom <code>to_json</code> method will be automatically called. Likewise, when calling <code>get&lt;your_type&gt;()</code> or <code>get_to(your_type&amp;)</code>, the <code>from_json</code> method will be called.</p> <p>Some important things:</p> <ul> <li>Those methods MUST be in your type's namespace (which can be the global namespace), or the library will not be able to locate them (in this example, they are in namespace <code>ns</code>, where <code>person</code> is defined).</li> <li>Those methods MUST be available (e.g., proper headers must be included) everywhere you use these conversions. Look at #1108 for errors that may occur otherwise.</li> <li>When using <code>get&lt;your_type&gt;()</code>, <code>your_type</code> MUST be DefaultConstructible. (There is a way to bypass this requirement described later.)</li> <li>In function <code>from_json</code>, use function <code>at()</code> to access the object values rather than <code>operator[]</code>. In case a key does not exist, <code>at</code> throws an exception that you can handle, whereas <code>operator[]</code> exhibits undefined behavior.</li> <li>You do not need to add serializers or deserializers for STL types like <code>std::vector</code>: the library already implements these.</li> </ul>"},{"location":"features/arbitrary_types/#simplify-your-life-with-macros","title":"Simplify your life with macros","text":"<p>If you just want to serialize/deserialize some structs, the <code>to_json</code>/<code>from_json</code> functions can be a lot of boilerplate.</p> <p>There are several macros to make your life easier as long as you want to use a JSON object as serialization. The macros are following the naming pattern, and you can chose the macro based on the needed features:</p> <ul> <li>All the macros start with <code>NLOHMANN_DEFINE</code>.</li> <li>If you want a macro for the derived object, use the <code>DERIVED_TYPE</code> variant, otherwise use <code>TYPE</code>.<ul> <li>The <code>DERIVED_TYPE</code> variant requires an additional parameter of a base type, which should have the <code>to_json</code>/<code>from_json</code> functions defined. For instance, with a macro of its own.</li> </ul> </li> <li>If you need access to the private fields use <code>INTRUSIVE</code> variant, otherwise use <code>NON_INTRUSIVE</code>.<ul> <li>The <code>INTRUSIVE</code> macro should be defined inside the target class/struct, <code>NON_INTRUSIVE</code> should be defined within the same namespace.</li> </ul> </li> <li>If you want to deserialize the incomplete JSONs, use the <code>WITH_DEFAULTS</code> variant, which will use the default values for the member variables absent in JSON, the variant without <code>WITH_DEFAULTS</code> will raise an exception.</li> <li>If you do not need deserialization at all and only interested in <code>to_json</code> function, you can use the <code>ONLY_SERIALIZE</code> variant.</li> <li>If you want to use the custom JSON names for member variables, use <code>WITH_NAMES</code> variant, otherwise the JSON name of the variable will be the same as its regular name. </li> </ul> <p>For all the macros, the first parameter is the name of the class/struct. The <code>DERIVED_TYPE</code> macros require a second parameter of a base class. All the remaining parameters name the member variables. The <code>WITH_NAMES</code> macros require a JSON name before each of the variables.</p> Need access to private members Need only de-serialization Allow missing values when de-serializing macro NLOHMANN_DEFINE_TYPE_INTRUSIVE NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT NLOHMANN_DEFINE_TYPE_INTRUSIVE_ONLY_SERIALIZE NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE <p>For derived classes and structs, use the following macros</p> Need access to private members Need only de-serialization Allow missing values when de-serializing macro NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_DEFAULT NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_ONLY_SERIALIZE NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_DEFAULT NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE <p>Implementation limits</p> <ul> <li>The current macro implementations are limited to at most 63 member variables. If you want to serialize/deserialize   types with more than 63 member variables, you need to define the <code>to_json</code>/<code>from_json</code> functions manually.</li> <li>For the <code>WITH_NAMES</code> variants the limit is halved to 31 member variables.</li> </ul> Example <p>The <code>to_json</code>/<code>from_json</code> functions for the <code>person</code> struct above can be created with:</p> <pre><code>namespace ns {\n    NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE(person, name, address, age)\n}\n</code></pre> <p>If you want to inherit the <code>person</code> struct and add a field to it, it can be done with:</p> <pre><code>namespace ns {\n    struct person_derived : person {\n        std:string email;\n    };\n\n    NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE(person_derived, person, email)\n}\n</code></pre> <p>Here is another example with private members, where <code>NLOHMANN_DEFINE_TYPE_INTRUSIVE</code> is needed:</p> <pre><code>namespace ns {\n    class address {\n      private:\n        std::string street;\n        int housenumber;\n        int postcode;\n\n      public:\n        NLOHMANN_DEFINE_TYPE_INTRUSIVE(address, street, housenumber, postcode)\n    };\n}\n</code></pre> <p>Or in case if you use some naming convention that you do not want to expose to JSON:</p> <pre><code>namespace ns {\n    class address {\n      private:\n        std::string m_street;\n        int m_housenumber;\n        int m_postcode;\n\n      public:\n        NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_NAMES(address, \"street\", m_street,\n                                                           \"housenumber\", m_housenumber,\n                                                           \"postcode\", m_postcode)\n    };\n}\n</code></pre>"},{"location":"features/arbitrary_types/#how-do-i-convert-third-party-types","title":"How do I convert third-party types?","text":"<p>This requires a bit more advanced technique. But first, let us see how this conversion mechanism works:</p> <p>The library uses JSON Serializers to convert types to JSON. The default serializer for <code>nlohmann::json</code> is <code>nlohmann::adl_serializer</code> (ADL means Argument-Dependent Lookup).</p> <p>It is implemented like this (simplified):</p> <pre><code>template &lt;typename T&gt;\nstruct adl_serializer {\n    static void to_json(json&amp; j, const T&amp; value) {\n        // calls the \"to_json\" method in T's namespace\n    }\n\n    static void from_json(const json&amp; j, T&amp; value) {\n        // same thing, but with the \"from_json\" method\n    }\n};\n</code></pre> <p>This serializer works fine when you have control over the type's namespace. However, what about <code>boost::optional</code> or <code>std::filesystem::path</code> (C++17)? Hijacking the <code>boost</code> namespace is pretty bad, and it's illegal to add something other than template specializations to <code>std</code>...</p> <p>To solve this, you need to add a specialization of <code>adl_serializer</code> to the <code>nlohmann</code> namespace, here's an example:</p> <pre><code>// partial specialization (full specialization works too)\nNLOHMANN_JSON_NAMESPACE_BEGIN\ntemplate &lt;typename T&gt;\nstruct adl_serializer&lt;boost::optional&lt;T&gt;&gt; {\n    static void to_json(json&amp; j, const boost::optional&lt;T&gt;&amp; opt) {\n        if (opt == boost::none) {\n            j = nullptr;\n        } else {\n            j = *opt; // this will call adl_serializer&lt;T&gt;::to_json which will\n                      // find the free function to_json in T's namespace!\n        }\n    }\n\n    static void from_json(const json&amp; j, boost::optional&lt;T&gt;&amp; opt) {\n        if (j.is_null()) {\n            opt = boost::none;\n        } else {\n            opt = j.get&lt;T&gt;(); // same as above, but with\n                              // adl_serializer&lt;T&gt;::from_json\n        }\n    }\n};\nNLOHMANN_JSON_NAMESPACE_END\n</code></pre> <p>ABI compatibility</p> <p>Use <code>NLOHMANN_JSON_NAMESPACE_BEGIN</code> and <code>NLOHMANN_JSON_NAMESPACE_END</code> instead of <code>namespace nlohmann { }</code> in code which may be linked with different versions of this library.</p>"},{"location":"features/arbitrary_types/#how-can-i-use-get-for-non-default-constructiblenon-copyable-types","title":"How can I use <code>get()</code> for non-default constructible/non-copyable types?","text":"<p>There is a way if your type is MoveConstructible. You will need to specialize the <code>adl_serializer</code> as well, but with a special <code>from_json</code> overload:</p> <pre><code>struct move_only_type {\n    move_only_type() = delete;\n    move_only_type(int ii): i(ii) {}\n    move_only_type(const move_only_type&amp;) = delete;\n    move_only_type(move_only_type&amp;&amp;) = default;\n\n    int i;\n};\n\nnamespace nlohmann {\n    template &lt;&gt;\n    struct adl_serializer&lt;move_only_type&gt; {\n        // note: the return type is no longer 'void', and the method only takes\n        // one argument\n        static move_only_type from_json(const json&amp; j) {\n            return {j.get&lt;int&gt;()};\n        }\n\n        // Here's the catch! You must provide a to_json method! Otherwise, you\n        // will not be able to convert move_only_type to json, since you fully\n        // specialized adl_serializer on that type\n        static void to_json(json&amp; j, move_only_type t) {\n            j = t.i;\n        }\n    };\n}\n</code></pre>"},{"location":"features/arbitrary_types/#can-i-write-my-own-serializer-advanced-use","title":"Can I write my own serializer? (Advanced use)","text":"<p>Yes. You might want to take a look at <code>unit-udt.cpp</code> in the test suite, to see a few examples.</p> <p>If you write your own serializer, you will need to do a few things:</p> <ul> <li>use a different <code>basic_json</code> alias than <code>nlohmann::json</code> (the last template parameter of <code>basic_json</code> is the <code>JSONSerializer</code>)</li> <li>use your <code>basic_json</code> alias (or a template parameter) in all your <code>to_json</code>/<code>from_json</code> methods</li> <li>use <code>nlohmann::to_json</code> and <code>nlohmann::from_json</code> when you need ADL</li> </ul> <p>Here is an example, without simplifications, that only accepts types with a size &lt;= 32, and uses ADL.</p> <pre><code>// You should use void as a second template argument\n// if you don't need compile-time checks on T\ntemplate&lt;typename T, typename SFINAE = typename std::enable_if&lt;sizeof(T) &lt;= 32&gt;::type&gt;\nstruct less_than_32_serializer {\n    template &lt;typename BasicJsonType&gt;\n    static void to_json(BasicJsonType&amp; j, T value) {\n        // we want to use ADL, and call the correct to_json overload\n        using nlohmann::to_json; // this method is called by adl_serializer,\n                                 // this is where the magic happens\n        to_json(j, value);\n    }\n\n    template &lt;typename BasicJsonType&gt;\n    static void from_json(const BasicJsonType&amp; j, T&amp; value) {\n        // same thing here\n        using nlohmann::from_json;\n        from_json(j, value);\n    }\n};\n</code></pre> <p>Be very careful when reimplementing your serializer, you can stack overflow if you don't pay attention:</p> <pre><code>template &lt;typename T, void&gt;\nstruct bad_serializer\n{\n    template &lt;typename BasicJsonType&gt;\n    static void to_json(BasicJsonType&amp; j, const T&amp; value) {\n      // this calls BasicJsonType::json_serializer&lt;T&gt;::to_json(j, value);\n      // if BasicJsonType::json_serializer == bad_serializer ... oops!\n      j = value;\n    }\n\n    template &lt;typename BasicJsonType&gt;\n    static void from_json(const BasicJsonType&amp; j, T&amp; value) {\n      // this calls BasicJsonType::json_serializer&lt;T&gt;::from_json(j, value);\n      // if BasicJsonType::json_serializer == bad_serializer ... oops!\n      value = j.template get&lt;T&gt;(); // oops!\n    }\n};\n</code></pre>"},{"location":"features/assertions/","title":"Runtime Assertions","text":"<p>The code contains numerous debug assertions to ensure class invariants are valid or to detect undefined behavior. Whereas the former class invariants are nothing to be concerned with, the latter checks for undefined behavior are to detect bugs in client code.</p>"},{"location":"features/assertions/#switch-off-runtime-assertions","title":"Switch off runtime assertions","text":"<p>Runtime assertions can be switched off by defining the preprocessor macro <code>NDEBUG</code> (see the documentation of assert) which is the default for release builds.</p>"},{"location":"features/assertions/#change-assertion-behavior","title":"Change assertion behavior","text":"<p>The behavior of runtime assertions can be changes by defining macro <code>JSON_ASSERT(x)</code> before including the <code>json.hpp</code> header.</p>"},{"location":"features/assertions/#function-with-runtime-assertions","title":"Function with runtime assertions","text":""},{"location":"features/assertions/#unchecked-object-access-to-a-const-value","title":"Unchecked object access to a const value","text":"<p>Function <code>operator[]</code> implements unchecked access for objects. Whereas a missing key is added in the case of non-const objects, accessing a const object with a missing key is undefined behavior (think of a dereferenced null pointer) and yields a runtime assertion.</p> <p>If you are not sure whether an element in an object exists, use checked access with the <code>at</code> function or call the <code>contains</code> function before.</p> <p>See also the documentation on element access.</p> Example 1: Missing object key <p>The following code will trigger an assertion at runtime:</p> <pre><code>#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    const json j = {{\"key\", \"value\"}};\n    auto v = j[\"missing\"];\n}\n</code></pre> <p>Output:</p> <pre><code>Assertion failed: (m_value.object-&gt;find(key) != m_value.object-&gt;end()), function operator[], file json.hpp, line 2144.\n</code></pre>"},{"location":"features/assertions/#constructing-from-an-uninitialized-iterator-range","title":"Constructing from an uninitialized iterator range","text":"<p>Constructing a JSON value from an iterator range (see constructor) with an uninitialized iterator is undefined behavior and yields a runtime assertion.</p> Example 2: Uninitialized iterator range <p>The following code will trigger an assertion at runtime:</p> <pre><code>#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    json::iterator it1, it2;\n    json j(it1, it2);\n}\n</code></pre> <p>Output:</p> <pre><code>Assertion failed: (m_object != nullptr), function operator++, file iter_impl.hpp, line 368.\n</code></pre>"},{"location":"features/assertions/#operations-on-uninitialized-iterators","title":"Operations on uninitialized iterators","text":"<p>Any operation on uninitialized iterators (i.e., iterators that are not associated with any JSON value) is undefined behavior and yields a runtime assertion.</p> Example 3: Uninitialized iterator <p>The following code will trigger an assertion at runtime:</p> <pre><code>#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n  json::iterator it;\n  ++it;\n}\n</code></pre> <p>Output:</p> <pre><code>Assertion failed: (m_object != nullptr), function operator++, file iter_impl.hpp, line 368.\n</code></pre>"},{"location":"features/assertions/#changes","title":"Changes","text":""},{"location":"features/assertions/#reading-from-a-null-file-or-char-pointer","title":"Reading from a null <code>FILE</code> or <code>char</code> pointer","text":"<p>Reading from a null <code>FILE</code> or <code>char</code> pointer in C++ is undefined behavior.  Until version 3.12.0, this library asserted that the pointer was not <code>nullptr</code> using a runtime assertion. If assertions were disabled, this would result in undefined behavior. Since version 3.12.0, this library checks for <code>nullptr</code> and throws a <code>parse_error.101</code> to prevent the undefined behavior.</p> Example 4: Reading from null pointer <p>The following code will trigger an assertion at runtime:</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    std::FILE* f = std::fopen(\"nonexistent_file.json\", \"r\");\n    try {\n        json j = json::parse(f);\n    } catch (std::exception&amp; e) {\n        std::cerr &lt;&lt; e.what() &lt;&lt; std::endl;\n    }\n}\n</code></pre> <p>Output:</p> <pre><code>[json.exception.parse_error.101] parse error: attempting to parse an empty input; check that your input string or stream contains the expected JSON\n</code></pre>"},{"location":"features/assertions/#see-also","title":"See also","text":"<ul> <li>JSON_ASSERT - control behavior of runtime assertions</li> </ul>"},{"location":"features/binary_values/","title":"Binary Values","text":"<p>The library implements several binary formats that encode JSON in an efficient way. Most of these formats support binary values; that is, values that have semantics defined outside the library and only define a sequence of bytes to be stored.</p> <p>JSON itself does not have a binary value. As such, binary values are an extension that this library implements to store values received by a binary format. Binary values are never created by the JSON parser and are only part of a serialized JSON text if they have been created manually or via a binary format.</p>"},{"location":"features/binary_values/#api-for-binary-values","title":"API for binary values","text":"<pre><code>classDiagram\n\nclass binary_t [\"json::binary_t\"] {\n    +void set_subtype(std::uint64_t subtype)\n    +void clear_subtype()\n    +std::uint64_t subtype() const\n    +bool has_subtype() const\n}\n\nclass vector [\"std::vector&lt;uint8_t&gt;\"]\n\nvector &lt;|-- binary_t</code></pre> <p>By default, binary values are stored as <code>std::vector&lt;std::uint8_t&gt;</code>. This type can be changed by providing a template parameter to the <code>basic_json</code> type. To store binary subtypes, the storage type is extended and exposed as <code>json::binary_t</code>:</p> <pre><code>auto binary = json::binary_t({0xCA, 0xFE, 0xBA, 0xBE});\nauto binary_with_subtype = json::binary_t({0xCA, 0xFE, 0xBA, 0xBE}, 42);\n</code></pre> <p>There are several convenience functions to check and set the subtype:</p> <pre><code>binary.has_subtype();                   // returns false\nbinary_with_subtype.has_subtype();      // returns true\n\nbinary_with_subtype.clear_subtype();\nbinary_with_subtype.has_subtype();      // returns true\n\nbinary_with_subtype.set_subtype(42);\nbinary.set_subtype(23);\n\nbinary.subtype();                       // returns 23\n</code></pre> <p>As <code>json::binary_t</code> is subclassing <code>std::vector&lt;std::uint8_t&gt;</code>, all member functions are available:</p> <pre><code>binary.size();  // returns 4\nbinary[1];      // returns 0xFE\n</code></pre> <p>JSON values can be constructed from <code>json::binary_t</code>:</p> <pre><code>json j = binary;\n</code></pre> <p>Binary values are primitive values just like numbers or strings:</p> <pre><code>j.is_binary();    // returns true\nj.is_primitive(); // returns true\n</code></pre> <p>Given a binary JSON value, the <code>binary_t</code> can be accessed by reference as via <code>get_binary()</code>:</p> <pre><code>j.get_binary().has_subtype();  // returns true\nj.get_binary().size();         // returns 4\n</code></pre> <p>For convenience, binary JSON values can be constructed via <code>json::binary</code>:</p> <pre><code>auto j2 = json::binary({0xCA, 0xFE, 0xBA, 0xBE}, 23);\nauto j3 = json::binary({0xCA, 0xFE, 0xBA, 0xBE});\n\nj2 == j;                        // returns true\nj3.get_binary().has_subtype();  // returns false\nj3.get_binary().subtype();      // returns std::uint64_t(-1) as j3 has no subtype\n</code></pre>"},{"location":"features/binary_values/#serialization","title":"Serialization","text":"<p>Binary values are serialized differently according to the formats.</p>"},{"location":"features/binary_values/#json","title":"JSON","text":"<p>JSON does not have a binary type, and this library does not introduce a new type as this would break conformance. Instead, binary values are serialized as an object with two keys: <code>bytes</code> holds an array of integers, and <code>subtype</code> is an integer or <code>null</code>.</p> Example <p>Code:</p> <pre><code>// create a binary value of subtype 42\njson j;\nj[\"binary\"] = json::binary({0xCA, 0xFE, 0xBA, 0xBE}, 42);\n\n// serialize to standard output\nstd::cout &lt;&lt; j.dump(2) &lt;&lt; std::endl;\n</code></pre> <p>Output:</p> <pre><code>{\n  \"binary\": {\n    \"bytes\": [202, 254, 186, 190],\n    \"subtype\": 42\n  }\n}\n</code></pre> <p>No roundtrip for binary values</p> <p>The JSON parser will not parse the objects generated by binary values back to binary values. This is by design to remain standards compliant. Serializing binary values to JSON is only implemented for debugging purposes.</p>"},{"location":"features/binary_values/#bjdata","title":"BJData","text":"<p>BJData neither supports binary values nor subtypes and proposes to serialize binary values as an array of uint8 values. The library implements this translation.</p> Example <p>Code:</p> <pre><code>// create a binary value of subtype 42 (will be ignored in BJData)\njson j;\nj[\"binary\"] = json::binary({0xCA, 0xFE, 0xBA, 0xBE}, 42);\n\n// convert to BJData\nauto v = json::to_bjdata(j);      \n</code></pre> <p><code>v</code> is a <code>std::vector&lt;std::uint8t&gt;</code> with the following 20 elements:</p> <pre><code>0x7B                                             // '{'\n    0x69 0x06                                    // i 6 (length of the key)\n    0x62 0x69 0x6E 0x61 0x72 0x79                // \"binary\"\n    0x5B                                         // '['\n        0x55 0xCA 0x55 0xFE 0x55 0xBA 0x55 0xBE  // content (each byte prefixed with 'U')\n    0x5D                                         // ']'\n0x7D                                             // '}'\n</code></pre> <p>The following code uses the type and size optimization for UBJSON:</p> <pre><code>// convert to UBJSON using the size and type optimization\nauto v = json::to_bjdata(j, true, true);\n</code></pre> <p>The resulting vector has 22 elements; the optimization is not effective for examples with few values:</p> <pre><code>0x7B                                // '{'\n    0x23 0x69 0x01                  // '#' 'i' type of the array elements: unsigned integers\n    0x69 0x06                       // i 6 (length of the key)\n    0x62 0x69 0x6E 0x61 0x72 0x79   // \"binary\"\n    0x5B                            // '[' array\n        0x24 0x55                   // '$' 'U' type of the array elements: unsigned integers\n        0x23 0x69 0x04              // '#' i 4 number of array elements\n        0xCA 0xFE 0xBA 0xBE         // content\n</code></pre> <p>Note that subtype (42) is not serialized and that UBJSON has no binary type, and deserializing <code>v</code> would yield the following value:</p> <pre><code>{\n  \"binary\": [202, 254, 186, 190]\n}\n</code></pre>"},{"location":"features/binary_values/#bson","title":"BSON","text":"<p>BSON supports binary values and subtypes. If a subtype is given, it is used and added as an unsigned 8-bit integer. If no subtype is given, the generic binary subtype 0x00 is used.</p> Example <p>Code:</p> <pre><code>// create a binary value of subtype 42\njson j;\nj[\"binary\"] = json::binary({0xCA, 0xFE, 0xBA, 0xBE}, 42);\n\n// convert to BSON\nauto v = json::to_bson(j);      \n</code></pre> <p><code>v</code> is a <code>std::vector&lt;std::uint8t&gt;</code> with the following 22 elements:</p> <pre><code>0x16 0x00 0x00 0x00                         // number of bytes in the document\n    0x05                                    // binary value\n        0x62 0x69 0x6E 0x61 0x72 0x79 0x00  // key \"binary\" + null byte\n        0x04 0x00 0x00 0x00                 // number of bytes\n        0x2a                                // subtype\n        0xCA 0xFE 0xBA 0xBE                 // content\n0x00                                        // end of the document\n</code></pre> <p>Note that the serialization preserves the subtype, and deserializing <code>v</code> would yield the following value:</p> <pre><code>{\n  \"binary\": {\n    \"bytes\": [202, 254, 186, 190],\n    \"subtype\": 42\n  }\n}\n</code></pre>"},{"location":"features/binary_values/#cbor","title":"CBOR","text":"<p>CBOR supports binary values, but no subtypes. Subtypes will be serialized as tags. Any binary value will be serialized as byte strings. The library will choose the smallest representation using the length of the byte array.</p> Example <p>Code:</p> <pre><code>// create a binary value of subtype 42\njson j;\nj[\"binary\"] = json::binary({0xCA, 0xFE, 0xBA, 0xBE}, 42);\n\n// convert to CBOR\nauto v = json::to_cbor(j);      \n</code></pre> <p><code>v</code> is a <code>std::vector&lt;std::uint8t&gt;</code> with the following 15 elements:</p> <pre><code>0xA1                                   // map(1)\n    0x66                               // text(6)\n        0x62 0x69 0x6E 0x61 0x72 0x79  // \"binary\"\n    0xD8 0x2A                          // tag(42)\n    0x44                               // bytes(4)\n        0xCA 0xFE 0xBA 0xBE            // content\n</code></pre> <p>Note that the subtype is serialized as tag. However, parsing tagged values yield a parse error unless <code>json::cbor_tag_handler_t::ignore</code> or <code>json::cbor_tag_handler_t::store</code> is passed to <code>json::from_cbor</code>.</p> <pre><code>{\n  \"binary\": {\n    \"bytes\": [202, 254, 186, 190],\n    \"subtype\": null\n  }\n}\n</code></pre>"},{"location":"features/binary_values/#messagepack","title":"MessagePack","text":"<p>MessagePack supports binary values and subtypes. If a subtype is given, the ext family is used. The library will choose the smallest representation among fixext1, fixext2, fixext4, fixext8, ext8, ext16, and ext32. The subtype is then added as a signed 8-bit integer.</p> <p>If no subtype is given, the bin family (bin8, bin16, bin32) is used.</p> Example <p>Code:</p> <pre><code>// create a binary value of subtype 42\njson j;\nj[\"binary\"] = json::binary({0xCA, 0xFE, 0xBA, 0xBE}, 42);\n\n// convert to MessagePack\nauto v = json::to_msgpack(j);      \n</code></pre> <p><code>v</code> is a <code>std::vector&lt;std::uint8t&gt;</code> with the following 14 elements:</p> <pre><code>0x81                                   // fixmap1\n    0xA6                               // fixstr6\n        0x62 0x69 0x6E 0x61 0x72 0x79  // \"binary\"\n    0xD6                               // fixext4\n        0x2A                           // subtype\n        0xCA 0xFE 0xBA 0xBE            // content\n</code></pre> <p>Note that the serialization preserves the subtype, and deserializing <code>v</code> would yield the following value:</p> <pre><code>{\n  \"binary\": {\n    \"bytes\": [202, 254, 186, 190],\n    \"subtype\": 42\n  }\n}\n</code></pre>"},{"location":"features/binary_values/#ubjson","title":"UBJSON","text":"<p>UBJSON neither supports binary values nor subtypes and proposes to serialize binary values as an array of uint8 values. The library implements this translation.</p> Example <p>Code:</p> <pre><code>// create a binary value of subtype 42 (will be ignored in UBJSON)\njson j;\nj[\"binary\"] = json::binary({0xCA, 0xFE, 0xBA, 0xBE}, 42);\n\n// convert to UBJSON\nauto v = json::to_ubjson(j);      \n</code></pre> <p><code>v</code> is a <code>std::vector&lt;std::uint8t&gt;</code> with the following 20 elements:</p> <pre><code>0x7B                                             // '{'\n    0x69 0x06                                    // i 6 (length of the key)\n    0x62 0x69 0x6E 0x61 0x72 0x79                // \"binary\"\n    0x5B                                         // '['\n        0x55 0xCA 0x55 0xFE 0x55 0xBA 0x55 0xBE  // content (each byte prefixed with 'U')\n    0x5D                                         // ']'\n0x7D                                             // '}'\n</code></pre> <p>The following code uses the type and size optimization for UBJSON:</p> <pre><code>// convert to UBJSON using the size and type optimization\nauto v = json::to_ubjson(j, true, true);\n</code></pre> <p>The resulting vector has 23 elements; the optimization is not effective for examples with few values:</p> <pre><code>0x7B                                // '{'\n    0x24                            // '$' type of the object elements\n    0x5B                            // '[' array\n    0x23 0x69 0x01                  // '#' i 1 number of object elements\n    0x69 0x06                       // i 6 (length of the key)\n    0x62 0x69 0x6E 0x61 0x72 0x79   // \"binary\"\n        0x24 0x55                   // '$' 'U' type of the array elements: unsigned integers\n        0x23 0x69 0x04              // '#' i 4 number of array elements\n        0xCA 0xFE 0xBA 0xBE         // content\n</code></pre> <p>Note that subtype (42) is not serialized and that UBJSON has no binary type, and deserializing <code>v</code> would yield the following value:</p> <pre><code>{\n  \"binary\": [202, 254, 186, 190]\n}\n</code></pre>"},{"location":"features/comments/","title":"Comments","text":"<p>This library does not support comments by default. It does so for three reasons:</p> <ol> <li>Comments are not part of the JSON specification. You may argue that <code>//</code> or <code>/* */</code> are allowed in JavaScript, but JSON is not JavaScript.</li> <li> <p>This was not an oversight: Douglas Crockford wrote on this in May 2012:</p> <p>I removed comments from JSON because I saw people were using them to hold parsing directives, a practice which would have destroyed interoperability.  I know that the lack of comments makes some people sad, but it shouldn't. </p> <p>Suppose you are using JSON to keep configuration files, which you would like to annotate. Go ahead and insert all the comments you like. Then pipe it through JSMin before handing it to your JSON parser.</p> </li> <li> <p>It is dangerous for interoperability if some libraries add comment support while others do not. Please check The Harmful Consequences of the Robustness Principle on this.</p> </li> </ol> <p>However, you can set parameter <code>ignore_comments</code> to <code>true</code> in the <code>parse</code> function to ignore <code>//</code> or <code>/* */</code> comments. Comments will then be treated as whitespace.</p> <p>For more information, see JSON With Commas and Comments (JWCC).</p> <p>Example</p> <p>Consider the following JSON with comments.</p> <pre><code>{\n    // update in 2006: removed Pluto\n    \"planets\": [\"Mercury\", \"Venus\", \"Earth\", \"Mars\",\n                \"Jupiter\", \"Uranus\", \"Neptune\" /*, \"Pluto\" */]\n}\n</code></pre> <p>When calling <code>parse</code> without additional argument, a parse error exception is thrown. If <code>ignore_comments</code> is set to <code>true</code>, the comments are ignored during parsing:</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    std::string s = R\"(\n    {\n        // update in 2006: removed Pluto\n        \"planets\": [\"Mercury\", \"Venus\", \"Earth\", \"Mars\",\n                    \"Jupiter\", \"Uranus\", \"Neptune\" /*, \"Pluto\" */]\n    }\n    )\";\n\n    try\n    {\n        json j = json::parse(s);\n    }\n    catch (json::exception&amp; e)\n    {\n        std::cout &lt;&lt; e.what() &lt;&lt; std::endl;\n    }\n\n    json j = json::parse(s,\n                         /* callback */ nullptr,\n                         /* allow exceptions */ true,\n                         /* ignore_comments */ true);\n    std::cout &lt;&lt; j.dump(2) &lt;&lt; '\\n';\n}\n</code></pre> <p>Output:</p> <pre><code>[json.exception.parse_error.101] parse error at line 3, column 9: syntax error while parsing object key - invalid literal; last read: '&lt;U+000A&gt;    {&lt;U+000A&gt;        /'; expected string literal\n{\n  \"planets\": [\n    \"Mercury\",\n    \"Venus\",\n    \"Earth\",\n    \"Mars\",\n    \"Jupiter\",\n    \"Uranus\",\n    \"Neptune\"\n  ]\n}\n</code></pre>"},{"location":"features/enum_conversion/","title":"Specializing enum conversion","text":"<p>By default, enum values are serialized to JSON as integers. In some cases, this could result in undesired behavior. If the integer values of any enum values are changed after data using those enum values has been serialized to JSON, then deserializing that JSON would result in a different enum value being restored, or the value not being found at all.</p> <p>It is possible to more precisely specify how a given enum is mapped to and from JSON as shown below:</p> <pre><code>// example enum type declaration\nenum TaskState {\n    TS_STOPPED,\n    TS_RUNNING,\n    TS_COMPLETED,\n    TS_INVALID=-1,\n};\n\n// map TaskState values to JSON as strings\nNLOHMANN_JSON_SERIALIZE_ENUM( TaskState, {\n    {TS_INVALID, nullptr},\n    {TS_STOPPED, \"stopped\"},\n    {TS_RUNNING, \"running\"},\n    {TS_COMPLETED, \"completed\"},\n})\n</code></pre> <p>The <code>NLOHMANN_JSON_SERIALIZE_ENUM()</code> macro declares a set of <code>to_json()</code> / <code>from_json()</code> functions for type <code>TaskState</code> while avoiding repetition and boilerplate serialization code.</p>"},{"location":"features/enum_conversion/#usage","title":"Usage","text":"<pre><code>// enum to JSON as string\njson j = TS_STOPPED;\nassert(j == \"stopped\");\n\n// json string to enum\njson j3 = \"running\";\nassert(j3.get&lt;TaskState&gt;() == TS_RUNNING);\n\n// undefined json value to enum (where the first map entry above is the default)\njson jPi = 3.14;\nassert(jPi.get&lt;TaskState&gt;() == TS_INVALID );\n</code></pre>"},{"location":"features/enum_conversion/#notes","title":"Notes","text":"<p>Just as in Arbitrary Type Conversions above,</p> <ul> <li><code>NLOHMANN_JSON_SERIALIZE_ENUM()</code> MUST be declared in your enum type's   namespace (which can be the global namespace), or the library will not be able to locate it, and it will default to   integer serialization.</li> <li>It MUST be available (e.g., proper headers must be included) everywhere you use the conversions.</li> </ul> <p>Other Important points:</p> <ul> <li>When using <code>get&lt;ENUM_TYPE&gt;()</code>, undefined JSON values will default to the first pair specified in your map. Select this   default pair carefully. If you desire an exception in this circumstance use <code>NLOHMANN_JSON_SERIALIZE_ENUM_STRICT()</code>   which behaves identically except for throwing an exception on unrecognized values.</li> <li>If an enum or JSON value is specified more than once in your map, the first matching occurrence from the top of the   map will be returned when converting to or from JSON.</li> <li>To disable the default serialization of enumerators as integers and force a compiler error instead, see <code>JSON_DISABLE_ENUM_SERIALIZATION</code>.</li> </ul>"},{"location":"features/iterators/","title":"Iterators","text":""},{"location":"features/iterators/#overview","title":"Overview","text":"<p>A <code>basic_json</code> value is a container and allows access via iterators. Depending on the value type, <code>basic_json</code> stores zero or more values.</p> <p>As for other containers, <code>begin()</code> returns an iterator to the first value and <code>end()</code> returns an iterator to the value following the last value. The latter iterator is a placeholder and cannot be dereferenced. In case of null values, empty arrays, or empty objects, <code>begin()</code> will return <code>end()</code>.</p> <p></p>"},{"location":"features/iterators/#iteration-order-for-objects","title":"Iteration order for objects","text":"<p>When iterating over objects, values are ordered with respect to the <code>object_comparator_t</code> type which defaults to <code>std::less</code>. See the types documentation for more information.</p> Example <pre><code>// create JSON object {\"one\": 1, \"two\": 2, \"three\": 3}\njson j;\nj[\"one\"] = 1;\nj[\"two\"] = 2;\nj[\"three\"] = 3;\n\nfor (auto it = j.begin(); it != j.end(); ++it)\n{\n    std::cout &lt;&lt; *it &lt;&lt; std::endl;\n}\n</code></pre> <p>Output:</p> <pre><code>1\n3\n2\n</code></pre> <p>The reason for the order is the lexicographic ordering of the object keys \"one\", \"three\", \"two\".</p>"},{"location":"features/iterators/#access-object-keys-during-iteration","title":"Access object keys during iteration","text":"<p>The JSON iterators have two member functions, <code>key()</code> and <code>value()</code> to access the object key and stored value, respectively. When calling <code>key()</code> on a non-object iterator, an invalid_iterator.207 exception is thrown.</p> Example <pre><code>// create JSON object {\"one\": 1, \"two\": 2, \"three\": 3}\njson j;\nj[\"one\"] = 1;\nj[\"two\"] = 2;\nj[\"three\"] = 3;\n\nfor (auto it = j.begin(); it != j.end(); ++it)\n{\n    std::cout &lt;&lt; it.key() &lt;&lt; \" : \" &lt;&lt; it.value() &lt;&lt; std::endl;\n}\n</code></pre> <p>Output:</p> <pre><code>one : 1\nthree : 3\ntwo : 2\n</code></pre>"},{"location":"features/iterators/#range-based-for-loops","title":"Range-based for loops","text":"<p>C++11 allows using range-based for loops to iterate over a container.</p> <pre><code>for (auto it : j_object)\n{\n    // \"it\" is of type json::reference and has no key() member\n    std::cout &lt;&lt; \"value: \" &lt;&lt; it &lt;&lt; '\\n';\n}\n</code></pre> <p>For this reason, the <code>items()</code> function allows accessing <code>iterator::key()</code> and <code>iterator::value()</code> during range-based for loops. In these loops, a reference to the JSON values is returned, so there is no access to the underlying iterator.</p> <pre><code>for (auto&amp; el : j_object.items())\n{\n    std::cout &lt;&lt; \"key: \" &lt;&lt; el.key() &lt;&lt; \", value:\" &lt;&lt; el.value() &lt;&lt; '\\n';\n}\n</code></pre> <p>The items() function also allows using structured bindings (C++17):</p> <pre><code>for (auto&amp; [key, val] : j_object.items())\n{\n    std::cout &lt;&lt; \"key: \" &lt;&lt; key &lt;&lt; \", value:\" &lt;&lt; val &lt;&lt; '\\n';\n}\n</code></pre> <p>Note</p> <p>When iterating over an array, <code>key()</code> will return the index of the element as string. For primitive types (e.g., numbers), <code>key()</code> returns an empty string.</p> <p>Warning</p> <p>Using <code>items()</code> on temporary objects is dangerous. Make sure the object's lifetime exceeds the iteration. See #2040 for more information.</p>"},{"location":"features/iterators/#reverse-iteration-order","title":"Reverse iteration order","text":"<p><code>rbegin()</code> and <code>rend()</code> return iterators in the reverse sequence.</p> <p></p> Example <pre><code>json j = {1, 2, 3, 4};\n\nfor (auto it = j.rbegin(); it != j.rend(); ++it)\n{\n    std::cout &lt;&lt; *it &lt;&lt; std::endl;\n}\n</code></pre> <p>Output:</p> <pre><code>4\n3\n2\n1\n</code></pre>"},{"location":"features/iterators/#iterating-strings-and-binary-values","title":"Iterating strings and binary values","text":"<p>Note that \"value\" means a JSON value in this setting, not values stored in the underlying containers. That is, <code>*begin()</code> returns the complete string or binary array and is also safe the underlying string or binary array is empty.</p> Example <pre><code>json j = \"Hello, world\";\nfor (auto it = j.begin(); it != j.end(); ++it)\n{\n    std::cout &lt;&lt; *it &lt;&lt; std::endl;\n}\n</code></pre> <p>Output:</p> <pre><code>\"Hello, world\"\n</code></pre>"},{"location":"features/iterators/#iterator-invalidation","title":"Iterator invalidation","text":"Operations invalidated iterators <code>clear</code> all"},{"location":"features/json_patch/","title":"JSON Patch and Diff","text":""},{"location":"features/json_patch/#patches","title":"Patches","text":"<p>JSON Patch (RFC 6902) defines a JSON document structure for expressing a sequence of operations to apply to a JSON document. With the <code>patch</code> function, a JSON Patch is applied to the current JSON value by executing all operations from the patch.</p> Example <p>The following code shows how a JSON patch is applied to a value.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;iomanip&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\nusing namespace nlohmann::literals;\n\nint main()\n{\n    // the original document\n    json doc = R\"(\n        {\n          \"baz\": \"qux\",\n          \"foo\": \"bar\"\n        }\n    )\"_json;\n\n    // the patch\n    json patch = R\"(\n        [\n          { \"op\": \"replace\", \"path\": \"/baz\", \"value\": \"boo\" },\n          { \"op\": \"add\", \"path\": \"/hello\", \"value\": [\"world\"] },\n          { \"op\": \"remove\", \"path\": \"/foo\"}\n        ]\n    )\"_json;\n\n    // apply the patch\n    json patched_doc = doc.patch(patch);\n\n    // output original and patched document\n    std::cout &lt;&lt; std::setw(4) &lt;&lt; doc &lt;&lt; \"\\n\\n\"\n              &lt;&lt; std::setw(4) &lt;&lt; patched_doc &lt;&lt; std::endl;\n}\n</code></pre> <p>Output:</p> <pre><code>{\n    \"baz\": \"qux\",\n    \"foo\": \"bar\"\n}\n\n{\n    \"baz\": \"boo\",\n    \"hello\": [\n        \"world\"\n    ]\n}\n</code></pre>"},{"location":"features/json_patch/#diff","title":"Diff","text":"<p>The library can also calculate a JSON patch (i.e., a diff) given two JSON values.</p> <p>Invariant</p> <p>For two JSON values source and target, the following code yields always true:</p> <pre><code>source.patch(diff(source, target)) == target;\n</code></pre> Example <p>The following code shows how a JSON patch is created as a diff for two JSON values.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;iomanip&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\nusing namespace nlohmann::literals;\n\nint main()\n{\n    // the source document\n    json source = R\"(\n        {\n            \"baz\": \"qux\",\n            \"foo\": \"bar\"\n        }\n    )\"_json;\n\n    // the target document\n    json target = R\"(\n        {\n            \"baz\": \"boo\",\n            \"hello\": [\n                \"world\"\n            ]\n        }\n    )\"_json;\n\n    // create the patch\n    json patch = json::diff(source, target);\n\n    // roundtrip\n    json patched_source = source.patch(patch);\n\n    // output patch and roundtrip result\n    std::cout &lt;&lt; std::setw(4) &lt;&lt; patch &lt;&lt; \"\\n\\n\"\n              &lt;&lt; std::setw(4) &lt;&lt; patched_source &lt;&lt; std::endl;\n}\n</code></pre> <p>Output:</p> <pre><code>[\n    {\n        \"op\": \"replace\",\n        \"path\": \"/baz\",\n        \"value\": \"boo\"\n    },\n    {\n        \"op\": \"remove\",\n        \"path\": \"/foo\"\n    },\n    {\n        \"op\": \"add\",\n        \"path\": \"/hello\",\n        \"value\": [\n            \"world\"\n        ]\n    }\n]\n\n{\n    \"baz\": \"boo\",\n    \"hello\": [\n        \"world\"\n    ]\n}\n</code></pre>"},{"location":"features/json_pointer/","title":"JSON Pointer","text":""},{"location":"features/json_pointer/#introduction","title":"Introduction","text":"<p>The library supports JSON Pointer (RFC 6901) as an alternative means to address structured values. A JSON Pointer is a string that identifies a specific value within a JSON document.</p> <p>Consider the following JSON document</p> <pre><code>{\n    \"array\": [\"A\", \"B\", \"C\"],\n    \"nested\": {\n        \"one\": 1,\n        \"two\": 2,\n        \"three\": [true, false]\n    }\n}\n</code></pre> <p>Then every value inside the JSON document can be identified as follows:</p> JSON Pointer JSON value `` <code>{\"array\":[\"A\",\"B\",\"C\"],\"nested\":{\"one\":1,\"two\":2,\"three\":[true,false]}}</code> <code>/array</code> <code>[\"A\",\"B\",\"C\"]</code> <code>/array/0</code> <code>A</code> <code>/array/1</code> <code>B</code> <code>/array/2</code> <code>C</code> <code>/nested</code> <code>{\"one\":1,\"two\":2,\"three\":[true,false]}</code> <code>/nested/one</code> <code>1</code> <code>/nested/two</code> <code>2</code> <code>/nested/three</code> <code>[true,false]</code> <code>/nested/three/0</code> <code>true</code> <code>/nested/three/1</code> <code>false</code> <p>Note <code>/</code> does not identify the root (i.e., the whole document), but an object entry with empty key <code>\"\"</code>. See RFC 6901 for more information.</p>"},{"location":"features/json_pointer/#json-pointer-creation","title":"JSON Pointer creation","text":"<p>JSON Pointers can be created from a string:</p> <pre><code>json::json_pointer p(\"/nested/one\");\n</code></pre> <p>Furthermore, a user-defined string literal can be used to achieve the same result:</p> <pre><code>auto p = \"/nested/one\"_json_pointer;\n</code></pre> <p>The escaping rules of RFC 6901 are implemented. See the constructor documentation for more information.</p>"},{"location":"features/json_pointer/#value-access","title":"Value access","text":"<p>JSON Pointers can be used in the <code>at</code>, <code>operator[]</code>, and <code>value</code> functions just like object keys or array indices.</p> <pre><code>// the JSON value from above\nauto j = json::parse(R\"({\n    \"array\": [\"A\", \"B\", \"C\"],\n    \"nested\": {\n        \"one\": 1,\n        \"two\": 2,\n        \"three\": [true, false]\n    }\n})\");\n\n// access values\nauto val = j[\"\"_json_pointer];                              // {\"array\":[\"A\",\"B\",\"C\"],...}\nauto val1 = j[\"/nested/one\"_json_pointer];                  // 1\nauto val2 = j.at(json::json_pointer(\"/nested/three/1\"));    // false\nauto val3 = j.value(json::json_pointer(\"/nested/four\"), 0); // 0\n</code></pre>"},{"location":"features/json_pointer/#flatten-unflatten","title":"Flatten / unflatten","text":"<p>The library implements a function <code>flatten</code> to convert any JSON document into a JSON object where each key is a JSON Pointer and each value is a primitive JSON value (i.e., a string, boolean, number, or null).</p> <pre><code>// the JSON value from above\nauto j = json::parse(R\"({\n    \"array\": [\"A\", \"B\", \"C\"],\n    \"nested\": {\n        \"one\": 1,\n        \"two\": 2,\n        \"three\": [true, false]\n    }\n})\");\n\n// create flattened value\nauto j_flat = j.flatten();\n</code></pre> <p>The resulting value <code>j_flat</code> is:</p> <pre><code>{\n  \"/array/0\": \"A\",\n  \"/array/1\": \"B\",\n  \"/array/2\": \"C\",\n  \"/nested/one\": 1,\n  \"/nested/two\": 2,\n  \"/nested/three/0\": true,\n  \"/nested/three/1\": false\n}\n</code></pre> <p>The reverse function, <code>unflatten</code> recreates the original value.</p> <pre><code>auto j_original = j_flat.unflatten();\n</code></pre>"},{"location":"features/json_pointer/#see-also","title":"See also","text":"<ul> <li>Class <code>json_pointer</code></li> <li>Function <code>flatten</code></li> <li>Function <code>unflatten</code></li> <li>JSON Patch</li> </ul>"},{"location":"features/macros/","title":"Supported Macros","text":"<p>Some aspects of the library can be configured by defining preprocessor macros before including the <code>json.hpp</code> header. See also the API documentation for macros for examples and more information.</p>"},{"location":"features/macros/#json_assertx","title":"<code>JSON_ASSERT(x)</code>","text":"<p>This macro controls which code is executed for runtime assertions of the library.</p> <p>See full documentation of <code>JSON_ASSERT(x)</code>.</p>"},{"location":"features/macros/#json_catch_userexception","title":"<code>JSON_CATCH_USER(exception)</code>","text":"<p>This macro overrides <code>catch</code> calls inside the library.</p> <p>See full documentation of <code>JSON_CATCH_USER(exception)</code>.</p>"},{"location":"features/macros/#json_diagnostics","title":"<code>JSON_DIAGNOSTICS</code>","text":"<p>This macro enables extended diagnostics for exception messages. Possible values are <code>1</code> to enable or <code>0</code> to disable (default).</p> <p>When enabled, exception messages contain a JSON Pointer to the JSON value that triggered the exception, see Extended diagnostic messages for an example. Note that enabling this macro increases the size of every JSON value by one pointer and adds some runtime overhead.</p> <p>The diagnostics messages can also be controlled with the CMake option <code>JSON_Diagnostics</code> (<code>OFF</code> by default) which sets <code>JSON_DIAGNOSTICS</code> accordingly.</p> <p>See full documentation of <code>JSON_DIAGNOSTICS</code>.</p>"},{"location":"features/macros/#json_diagnostic_positions","title":"<code>JSON_DIAGNOSTIC_POSITIONS</code>","text":"<p>When enabled, two new member functions <code>start_pos()</code> and <code>end_pos()</code> are added to <code>basic_json</code> values. If the value was created by calling the<code>parse</code> function, then these functions allow querying the byte positions of the value in the input it was parsed from. The byte positions are also used in exceptions to help locate errors.</p> <p>The diagnostics positions can also be controlled with the CMake option <code>JSON_Diagnostic_Positions</code> (<code>OFF</code> by default) which sets <code>JSON_DIAGNOSTIC_POSITIONS</code> accordingly.</p> <p>See full documentation of <code>JSON_DIAGNOSTIC_POSITIONS</code></p>"},{"location":"features/macros/#json_has_cpp_11-json_has_cpp_14-json_has_cpp_17-json_has_cpp_20","title":"<code>JSON_HAS_CPP_11</code>, <code>JSON_HAS_CPP_14</code>, <code>JSON_HAS_CPP_17</code>, <code>JSON_HAS_CPP_20</code>","text":"<p>The library targets C++11, but also supports some features introduced in later C++ versions (e.g., <code>std::string_view</code> support for C++17). For these new features, the library implements some preprocessor checks to determine the C++ standard. By defining any of these symbols, the internal check is overridden and the provided C++ version is unconditionally assumed. This can be helpful for compilers that only implement parts of the standard and would be detected incorrectly.</p> <p>See full documentation of <code>JSON_HAS_CPP_11</code>, <code>JSON_HAS_CPP_14</code>, <code>JSON_HAS_CPP_17</code>, and <code>JSON_HAS_CPP_20</code>.</p>"},{"location":"features/macros/#json_has_filesystem-json_has_experimental_filesystem","title":"<code>JSON_HAS_FILESYSTEM</code>, <code>JSON_HAS_EXPERIMENTAL_FILESYSTEM</code>","text":"<p>When compiling with C++17, the library provides conversions from and to <code>std::filesystem::path</code>. As compiler support for filesystem is limited, the library tries to detect whether <code>&lt;filesystem&gt;</code>/<code>std::filesystem</code> (<code>JSON_HAS_FILESYSTEM</code>) or <code>&lt;experimental/filesystem&gt;</code>/<code>std::experimental::filesystem</code> (<code>JSON_HAS_EXPERIMENTAL_FILESYSTEM</code>) should be used. To override the built-in check, define <code>JSON_HAS_FILESYSTEM</code> or <code>JSON_HAS_EXPERIMENTAL_FILESYSTEM</code> to <code>1</code>.</p> <p>See full documentation of <code>JSON_HAS_FILESYSTEM</code> and <code>JSON_HAS_EXPERIMENTAL_FILESYSTEM</code>.</p>"},{"location":"features/macros/#json_noexception","title":"<code>JSON_NOEXCEPTION</code>","text":"<p>Exceptions can be switched off by defining the symbol <code>JSON_NOEXCEPTION</code>.</p> <p>See full documentation of <code>JSON_NOEXCEPTION</code>.</p>"},{"location":"features/macros/#json_disable_enum_serialization","title":"<code>JSON_DISABLE_ENUM_SERIALIZATION</code>","text":"<p>When defined, default parse and serialize functions for enums are excluded and have to be provided by the user, for example, using <code>NLOHMANN_JSON_SERIALIZE_ENUM</code>.</p> <p>See full documentation of <code>JSON_DISABLE_ENUM_SERIALIZATION</code>.</p>"},{"location":"features/macros/#json_no_io","title":"<code>JSON_NO_IO</code>","text":"<p>When defined, headers <code>&lt;cstdio&gt;</code>, <code>&lt;ios&gt;</code>, <code>&lt;iosfwd&gt;</code>, <code>&lt;istream&gt;</code>, and <code>&lt;ostream&gt;</code> are not included and parse functions relying on these headers are excluded. This is relevant for environment where these I/O functions are disallowed for security reasons (e.g., Intel Software Guard Extensions (SGX)).</p> <p>See full documentation of <code>JSON_NO_IO</code>.</p>"},{"location":"features/macros/#json_skip_library_version_check","title":"<code>JSON_SKIP_LIBRARY_VERSION_CHECK</code>","text":"<p>When defined, the library will not create a compiler warning when a different version of the library was already included.</p> <p>See full documentation of <code>JSON_SKIP_LIBRARY_VERSION_CHECK</code>.</p>"},{"location":"features/macros/#json_skip_unsupported_compiler_check","title":"<code>JSON_SKIP_UNSUPPORTED_COMPILER_CHECK</code>","text":"<p>When defined, the library will not create a compile error when a known unsupported compiler is detected. This allows  using the library with compilers that do not fully support C++11 and may only work if unsupported features are not used.</p> <p>See full documentation of <code>JSON_SKIP_UNSUPPORTED_COMPILER_CHECK</code>.</p>"},{"location":"features/macros/#json_throw_userexception","title":"<code>JSON_THROW_USER(exception)</code>","text":"<p>This macro overrides <code>throw</code> calls inside the library. The argument is the exception to be thrown.</p> <p>See full documentation of <code>JSON_THROW_USER(exception)</code>.</p>"},{"location":"features/macros/#json_try_user","title":"<code>JSON_TRY_USER</code>","text":"<p>This macro overrides <code>try</code> calls inside the library.</p> <p>See full documentation of <code>JSON_TRY_USER</code>.</p>"},{"location":"features/macros/#json_use_implicit_conversions","title":"<code>JSON_USE_IMPLICIT_CONVERSIONS</code>","text":"<p>When defined to <code>0</code>, implicit conversions are switched off. By default, implicit conversions are switched on.</p> <p>See full documentation of <code>JSON_USE_IMPLICIT_CONVERSIONS</code>.</p>"},{"location":"features/macros/#nlohmann_define_type_-nlohmann_define_derived_type_","title":"<code>NLOHMANN_DEFINE_TYPE_*(...)</code>, <code>NLOHMANN_DEFINE_DERIVED_TYPE_*(...)</code>","text":"<p>The library defines 12 macros to simplify the serialization/deserialization of types. See the page on arbitrary type conversion for a detailed discussion.</p>"},{"location":"features/macros/#nlohmann_json_serialize_enumtype","title":"<code>NLOHMANN_JSON_SERIALIZE_ENUM(type, ...)</code>","text":"<p>This macro simplifies the serialization/deserialization of enum types. See Specializing enum conversion for more information.</p> <p>See full documentation of <code>NLOHMANN_JSON_SERIALIZE_ENUM</code>.</p>"},{"location":"features/macros/#nlohmann_json_version_major-nlohmann_json_version_minor-nlohmann_json_version_patch","title":"<code>NLOHMANN_JSON_VERSION_MAJOR</code>, <code>NLOHMANN_JSON_VERSION_MINOR</code>, <code>NLOHMANN_JSON_VERSION_PATCH</code>","text":"<p>These macros are defined by the library and contain the version numbers according to Semantic Versioning 2.0.0.</p> <p>See full documentation of <code>NLOHMANN_JSON_VERSION_MAJOR</code>, <code>NLOHMANN_JSON_VERSION_MINOR</code>, and <code>NLOHMANN_JSON_VERSION_PATCH</code>.</p>"},{"location":"features/merge_patch/","title":"JSON Merge Patch","text":"<p>The library supports JSON Merge Patch (RFC 7386) as a patch format. The merge patch format is primarily intended for use with the HTTP PATCH method as a means of describing a set of modifications to a target resource's content. This function applies a merge patch to the current JSON value.</p> <p>Instead of using JSON Pointer to specify values to be manipulated, it describes the changes using a syntax that closely mimics the document being modified.</p> Example <p>The following code shows how a JSON Merge Patch is applied to a JSON document.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n#include &lt;iomanip&gt; // for std::setw\n\nusing json = nlohmann::json;\nusing namespace nlohmann::literals;\n\nint main()\n{\n    // the original document\n    json document = R\"({\n                \"title\": \"Goodbye!\",\n                \"author\": {\n                    \"givenName\": \"John\",\n                    \"familyName\": \"Doe\"\n                },\n                \"tags\": [\n                    \"example\",\n                    \"sample\"\n                ],\n                \"content\": \"This will be unchanged\"\n            })\"_json;\n\n    // the patch\n    json patch = R\"({\n                \"title\": \"Hello!\",\n                \"phoneNumber\": \"+01-123-456-7890\",\n                \"author\": {\n                    \"familyName\": null\n                },\n                \"tags\": [\n                    \"example\"\n                ]\n            })\"_json;\n\n    // apply the patch\n    document.merge_patch(patch);\n\n    // output original and patched document\n    std::cout &lt;&lt; std::setw(4) &lt;&lt; document &lt;&lt; std::endl;\n}\n</code></pre> <p>Output:</p> <pre><code>{\n    \"author\": {\n        \"givenName\": \"John\"\n    },\n    \"content\": \"This will be unchanged\",\n    \"phoneNumber\": \"+01-123-456-7890\",\n    \"tags\": [\n        \"example\"\n    ],\n    \"title\": \"Hello!\"\n}\n</code></pre>"},{"location":"features/modules/","title":"Modules","text":"<p>This library has experimental support for C++ modules, introduced in C++20. The library can be imported by writing <code>import nlohmann.json;</code> instead of <code>#include &lt;nlohmann/json.hpp&gt;</code>. </p> <p>Please be aware that the module is experimental and a full test is outstanding, and the exported symbols are subject to change.</p>"},{"location":"features/modules/#requirements","title":"Requirements","text":"<p>The <code>nlohmann.json</code> module requires that the build system is configured to build and resolve modules when imported. Obviously, as modules were introduced in C++20, this feature can only be used in C++20 and subsequent versions.</p> <p>To enable building the <code>nlohmann.json</code> module (which is not done by default), the macro <code>NLOHMANN_JSON_BUILD_MODULES</code> must be passed to the build system.</p>"},{"location":"features/modules/#example","title":"Example","text":"<p>When using modules rather than headers, the previous example for creating a <code>json</code> object through a JSON file, would instead be: <pre><code>import std;\nimport nlohmann.json;\n\nusing json = nlohmann::json;\n\n// ...\n\nstd::ifstream f(\"example.json\");\njson data = json::parse(f);\n</code></pre></p>"},{"location":"features/modules/#modules-do-not-export-macros","title":"Modules do not export macros","text":"<p>It should be noted that as modules do not export macros, the <code>nlohmann.json</code> module will not export any macros.</p>"},{"location":"features/modules/#exported-symbols","title":"Exported symbols","text":"<p>Only the following symbols are exported from <code>nlohmann.json</code>:</p> <ul> <li><code>nlohmann::adl_serializer</code></li> <li><code>nlohmann::basic_json</code></li> <li><code>nlohmann::json</code></li> <li><code>nlohmann::json_pointer</code></li> <li><code>nlohmann::ordered_json</code></li> <li><code>nlohmann::ordered_map</code></li> <li><code>nlohmann::to_string</code></li> <li><code>nlohmann::literals::json_literals::operator\"\"_json</code></li> <li><code>nlohmann::literals::json_literals::operator\"\"_json_pointer</code></li> </ul>"},{"location":"features/namespace/","title":"<code>nlohmann</code> Namespace","text":"<p>The 3.11.0 release introduced an inline namespace to allow different parts of a codebase to safely use different versions of the JSON library as long as they never exchange instances of library types.</p>"},{"location":"features/namespace/#structure","title":"Structure","text":"<p>The complete default namespace name is derived as follows:</p> <ul> <li>The root namespace is always <code>nlohmann</code>.</li> <li>The inline namespace starts with <code>json_abi</code> and is followed by several optional ABI tags according to the value of   these ABI-affecting macros, in order:<ul> <li><code>JSON_DIAGNOSTICS</code> defined non-zero appends <code>_diag</code>.</li> <li><code>JSON_USE_LEGACY_DISCARDED_VALUE_COMPARISON</code>   defined non-zero appends <code>_ldvcmp</code>.</li> </ul> </li> <li>The inline namespace ends with the suffix <code>_v</code> followed by the 3 components of the version number separated by   underscores. To omit the version component, see Disabling the version component   below.</li> </ul> <p>For example, the namespace name for version 3.11.2 with <code>JSON_DIAGNOSTICS</code> defined to <code>1</code> is:</p> <pre><code>nlohmann::json_abi_diag_v3_11_2\n</code></pre>"},{"location":"features/namespace/#purpose","title":"Purpose","text":"<p>Several incompatibilities have been observed. Amongst the most common ones is linking code compiled with different definitions of <code>JSON_DIAGNOSTICS</code>. This is illustrated in the diagram below.</p> <pre><code>graph\n    json[\"&lt;strong&gt;nlohmann_json (v3.10.5)&lt;/strong&gt;&lt;br&gt;JSON_DIAGNOSTICS=0\"]\n    json_diag[\"&lt;strong&gt;nlohmann_json (v3.10.5)&lt;/strong&gt;&lt;br&gt;JSON_DIAGNOSTICS=1\"]\n    library[\"&lt;strong&gt;some library&lt;/strong&gt;\"]\n    app[\"&lt;strong&gt;application&lt;/strong&gt;\"]\n\n    library --&gt; json\n    app --&gt; json_diag\n    app --&gt; library</code></pre> <p>In releases prior to 3.11.0, mixing any version of the JSON library with different <code>JSON_DIAGNOSTICS</code> settings would result in a crashing application. If <code>some_library</code> never passes instances of JSON library types to the application, this scenario became safe in version 3.11.0 and above due to the inline namespace yielding distinct symbol names.</p>"},{"location":"features/namespace/#limitations","title":"Limitations","text":"<p>Neither the compiler nor the linker will issue as much as a warning when translation units \u2013 intended to be linked together and that include different versions and/or configurations of the JSON library \u2013 exchange and use library types.</p> <p>There is an exception when forward declarations are used (i.e., when including <code>json_fwd.hpp</code>) in which case the linker may complain about undefined references.</p>"},{"location":"features/namespace/#disabling-the-version-component","title":"Disabling the version component","text":"<p>Different versions are not necessarily ABI-incompatible, but the project does not actively track changes in the ABI and recommends that all parts of a codebase exchanging library types be built with the same version. Users can, at their own risk, disable the version component of the linline namespace, allowing different versions \u2013 but not configurations \u2013 to be used in cases where the linker would otherwise output undefined reference errors.</p> <p>To do so, define <code>NLOHMANN_JSON_NAMESPACE_NO_VERSION</code> to <code>1</code>.</p> <p>This applies to version 3.11.2 and above only; versions 3.11.0 and 3.11.1 can apply the technique described in the next section to emulate the effect of the <code>NLOHMANN_JSON_NAMESPACE_NO_VERSION</code> macro.</p> <p>Use at your own risk</p> <p>Disabling the namespace version component and mixing ABI-incompatible versions will result in crashes or incorrect behavior. You have been warned!</p>"},{"location":"features/namespace/#disabling-the-inline-namespace-completely","title":"Disabling the inline namespace completely","text":"<p>When interoperability with code using a pre-3.11.0 version of the library is required, users can, at their own risk restore the old namespace layout by redefining <code>NLOHMANN_JSON_NAMESPACE_BEGIN, NLOHMANN_JSON_NAMESPACE_END</code> as follows:</p> <pre><code>#define NLOHMANN_JSON_NAMESPACE_BEGIN  namespace nlohmann {\n#define NLOHMANN_JSON_NAMESPACE_END    }\n</code></pre> <p>Use at your own risk</p> <p>Overriding the namespace and mixing ABI-incompatible versions will result in crashes or incorrect behavior. You have been warned!</p>"},{"location":"features/namespace/#version-history","title":"Version history","text":"<ul> <li>Introduced inline namespace (<code>json_v3_11_0[_abi-tag]*</code>) in version 3.11.0.</li> <li>Changed structure of inline namespace in version 3.11.2.</li> </ul>"},{"location":"features/object_order/","title":"Object Order","text":"<p>The JSON standard defines objects as \"an unordered collection of zero or more name/value pairs\". As such, an implementation does not need to preserve any specific order of object keys.</p>"},{"location":"features/object_order/#default-behavior-sort-keys","title":"Default behavior: sort keys","text":"<p>The default type <code>nlohmann::json</code> uses a <code>std::map</code> to store JSON objects, and thus stores object keys sorted alphabetically.</p> Example <pre><code>#include &lt;iostream&gt;\n#include \"json.hpp\"\n\nusing json = nlohmann::json;\n\nint main()\n{\n    json j;\n    j[\"one\"] = 1;\n    j[\"two\"] = 2;\n    j[\"three\"] = 3;\n\n    std::cout &lt;&lt; j.dump(2) &lt;&lt; '\\n';\n}\n</code></pre> <p>Output:</p> <pre><code>{\n  \"one\": 1,\n  \"three\": 3,\n  \"two\": 2\n}\n</code></pre>"},{"location":"features/object_order/#alternative-behavior-preserve-insertion-order","title":"Alternative behavior: preserve insertion order","text":"<p>If you do want to preserve the insertion order, you can try the type <code>nlohmann::ordered_json</code>.</p> Example <pre><code>#include &lt;iostream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing ordered_json = nlohmann::ordered_json;\n\nint main()\n{\n    ordered_json j;\n    j[\"one\"] = 1;\n    j[\"two\"] = 2;\n    j[\"three\"] = 3;\n\n    std::cout &lt;&lt; j.dump(2) &lt;&lt; '\\n';\n}\n</code></pre> <p>Output:</p> <pre><code>{\n  \"one\": 1,\n  \"two\": 2,\n  \"three\": 3\n}\n</code></pre> <p>Alternatively, you can use a more sophisticated ordered map like <code>tsl::ordered_map</code> (integration) or <code>nlohmann::fifo_map</code> (integration).</p>"},{"location":"features/object_order/#notes-on-parsing","title":"Notes on parsing","text":"<p>Note that you also need to call the right <code>parse</code> function when reading from a file. Assume file <code>input.json</code> contains the JSON object above:</p> <pre><code>{\n  \"one\": 1,\n  \"two\": 2,\n  \"three\": 3\n}\n</code></pre> <p>Right way</p> <p>The following code correctly calls the <code>parse</code> function from <code>nlohmann::ordered_json</code>:</p> <pre><code>std::ifstream i(\"input.json\");\nauto j = nlohmann::ordered_json::parse(i);\nstd::cout &lt;&lt; j.dump(2) &lt;&lt; std::endl;\n</code></pre> <p>The output will be:</p> <pre><code>{\n  \"one\": 1,\n  \"two\": 2,\n  \"three\": 3\n}\n</code></pre> Wrong way <p>The following code incorrectly calls the <code>parse</code> function from <code>nlohmann::json</code> which does not preserve the insertion order, but sorts object keys. Assigning the result to <code>nlohmann::ordered_json</code> compiles, but does not restore the order from the input file.</p> <pre><code>std::ifstream i(\"input.json\");\nnlohmann::ordered_json j = nlohmann::json::parse(i);\nstd::cout &lt;&lt; j.dump(2) &lt;&lt; std::endl;\n</code></pre> <p>The output will be:</p> <pre><code>{\n  \"one\": 1,\n  \"three\": 3\n  \"two\": 2,\n}\n</code></pre>"},{"location":"features/trailing_commas/","title":"Trailing Commas","text":"<p>Like comments, this library does not support trailing commas in arrays and objects by default.</p> <p>You can set parameter <code>ignore_trailing_commas</code> to <code>true</code> in the <code>parse</code> function to allow trailing commas in arrays and objects. Note that a single comma as the only content of the array or object (<code>[,]</code> or <code>{,}</code>) is not allowed, and multiple trailing commas (<code>[1,,]</code>) are not allowed either.</p> <p>This library does not add trailing commas when serializing JSON data.</p> <p>For more information, see JSON With Commas and Comments (JWCC).</p> <p>Example</p> <p>Consider the following JSON with trailing commas.</p> <pre><code>{\n    \"planets\": [\n        \"Mercury\",\n        \"Venus\",\n        \"Earth\",\n        \"Mars\",\n        \"Jupiter\",\n        \"Uranus\",\n        \"Neptune\",\n    ]\n}\n</code></pre> <p>When calling <code>parse</code> without additional argument, a parse error exception is thrown. If <code>ignore_trailing_commas</code> is set to <code>true</code>, the trailing commas are ignored during parsing:</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    std::string s = R\"(\n    {\n        \"planets\": [\n            \"Mercury\",\n            \"Venus\",\n            \"Earth\",\n            \"Mars\",\n            \"Jupiter\",\n            \"Uranus\",\n            \"Neptune\",\n        ]\n    }\n    )\";\n\n    try\n    {\n        json j = json::parse(s);\n    }\n    catch (json::exception&amp; e)\n    {\n        std::cout &lt;&lt; e.what() &lt;&lt; std::endl;\n    }\n\n    json j = json::parse(s,\n                         /* callback */ nullptr,\n                         /* allow exceptions */ true,\n                         /* ignore_comments */ false,\n                         /* ignore_trailing_commas */ true);\n    std::cout &lt;&lt; j.dump(2) &lt;&lt; '\\n';\n}\n</code></pre> <p>Output:</p> <pre><code>[json.exception.parse_error.101] parse error at line 11, column 9: syntax error while parsing value - unexpected ']'; expected '[', '{', or a literal\n{\n  \"planets\": [\n    \"Mercury\",\n    \"Venus\",\n    \"Earth\",\n    \"Mars\",\n    \"Jupiter\",\n    \"Uranus\",\n    \"Neptune\"\n  ]\n}\n</code></pre>"},{"location":"features/binary_formats/","title":"Binary Formats","text":"<p>Though JSON is a ubiquitous data format, it is not a very compact format suitable for data exchange, for instance, over a network. Hence, the library supports</p> <ul> <li>BJData (Binary JData),</li> <li>BSON (Binary JSON),</li> <li>CBOR (Concise Binary Object Representation),</li> <li>MessagePack, and</li> <li>UBJSON (Universal Binary JSON)</li> </ul> <p>to efficiently encode JSON values to byte vectors and to decode such vectors.</p>"},{"location":"features/binary_formats/#comparison","title":"Comparison","text":""},{"location":"features/binary_formats/#completeness","title":"Completeness","text":"Format Serialization Deserialization BJData complete complete BSON incomplete: top-level value must be an object incomplete, but all JSON types are supported CBOR complete incomplete, but all JSON types are supported MessagePack complete complete UBJSON complete complete"},{"location":"features/binary_formats/#binary-values","title":"Binary values","text":"Format Binary values Binary subtypes BJData not supported not supported BSON supported supported CBOR supported supported MessagePack supported supported UBJSON not supported not supported <p>See binary values for more information.</p>"},{"location":"features/binary_formats/#sizes","title":"Sizes","text":"Format canada.json twitter.json citm_catalog.json jeopardy.json BJData 53.2 % 91.1 % 78.1 % 96.6 % BJData (size) 58.6 % 92.1 % 86.7 % 97.4 % BJData (size+tyoe) 58.6 % 92.1 % 86.5 % 97.4 % BSON 85.8 % 95.2 % 95.8 % 106.7 % CBOR 50.5 % 86.3 % 68.4 % 88.0 % MessagePack 50.5 % 86.0 % 68.5 % 87.9 % UBJSON 53.2 % 91.3 % 78.2 % 96.6 % UBJSON (size) 58.6 % 92.3 % 86.8 % 97.4 % UBJSON (size+type) 55.9 % 92.3 % 85.0 % 95.0 % <p>Sizes compared to minified JSON value.</p>"},{"location":"features/binary_formats/bjdata/","title":"BJData","text":"<p>The BJData format was derived from and improved upon Universal Binary JSON(UBJSON) specification (Draft 12). Specifically, it introduces an optimized array container for efficient storage of N-dimensional packed arrays (ND-arrays); it also adds 5 new type markers - <code>[u] - uint16</code>, <code>[m] - uint32</code>, <code>[M] - uint64</code>, <code>[h] - float16</code> and <code>[B] - byte</code> - to unambiguously map common binary numeric types; furthermore, it uses little-endian (LE) to store all numerics instead of big-endian (BE) as in UBJSON to avoid unnecessary conversions on commonly available platforms.</p> <p>Compared to other binary JSON-like formats such as MessagePack and CBOR, both BJData and UBJSON demonstrate a rare combination of being both binary and quasi-human-readable. This is because all semantic elements in BJData and UBJSON, including the data-type markers and name/string types, are directly human-readable. Data stored in the BJData/UBJSON format is not only compact in size, fast to read/write, but also can be directly searched or read using simple processing.</p> <p>References</p> <ul> <li>BJData Specification</li> </ul>"},{"location":"features/binary_formats/bjdata/#serialization","title":"Serialization","text":"<p>The library uses the following mapping from JSON values types to BJData types according to the BJData specification:</p> JSON value type value/range BJData type marker null <code>null</code> null <code>Z</code> boolean <code>true</code> true <code>T</code> boolean <code>false</code> false <code>F</code> number_integer -9223372036854775808..-2147483649 int64 <code>L</code> number_integer -2147483648..-32769 int32 <code>l</code> number_integer -32768..-129 int16 <code>I</code> number_integer -128..127 int8 <code>i</code> number_integer 128..255 uint8 <code>U</code> number_integer 256..32767 int16 <code>I</code> number_integer 32768..65535 uint16 <code>u</code> number_integer 65536..2147483647 int32 <code>l</code> number_integer 2147483648..4294967295 uint32 <code>m</code> number_integer 4294967296..9223372036854775807 int64 <code>L</code> number_integer 9223372036854775808..18446744073709551615 uint64 <code>M</code> number_unsigned 0..127 int8 <code>i</code> number_unsigned 128..255 uint8 <code>U</code> number_unsigned 256..32767 int16 <code>I</code> number_unsigned 32768..65535 uint16 <code>u</code> number_unsigned 65536..2147483647 int32 <code>l</code> number_unsigned 2147483648..4294967295 uint32 <code>m</code> number_unsigned 4294967296..9223372036854775807 int64 <code>L</code> number_unsigned 9223372036854775808..18446744073709551615 uint64 <code>M</code> number_float any value float64 <code>D</code> string with shortest length indicator string <code>S</code> array see notes on optimized format/ND-array array <code>[</code> object see notes on optimized format map <code>{</code> binary see notes on binary values array <code>[$B</code> <p>Complete mapping</p> <p>The mapping is complete in the sense that any JSON value type can be converted to a BJData value.</p> <p>Any BJData output created by <code>to_bjdata</code> can be successfully parsed by <code>from_bjdata</code>.</p> <p>Size constraints</p> <p>The following values can not be converted to a BJData value:</p> <ul> <li>strings with more than 18446744073709551615 bytes, i.e., 2^{64}-1 bytes (theoretical)</li> </ul> <p>Unused BJData markers</p> <p>The following markers are not used in the conversion:</p> <ul> <li><code>Z</code>: no-op values are not created.</li> <li><code>C</code>: single-byte strings are serialized with <code>S</code> markers.</li> </ul> <p>NaN/infinity handling</p> <p>If NaN or Infinity are stored inside a JSON number, they are serialized properly. This behavior differs from the <code>dump()</code> function which serializes NaN or Infinity to <code>null</code>.</p> <p>Endianness</p> <p>A breaking difference between BJData and UBJSON is the endianness of numerical values. In BJData, all numerical data types (integers <code>UiuImlML</code> and floating-point values <code>hdD</code>) are stored in the little-endian (LE) byte order as opposed to big-endian as used by UBJSON. Adopting LE to store numeric records avoids unnecessary byte swapping on most modern computers where LE is used as the default byte order.</p> <p>Optimized formats</p> <p>Optimized formats for containers are supported via two parameters of <code>to_bjdata</code>:</p> <ul> <li>Parameter <code>use_size</code> adds size information to the beginning of a container and removes the closing marker.</li> <li>Parameter <code>use_type</code> further checks whether all elements of a container have the same type and adds the type   marker to the beginning of the container. The <code>use_type</code> parameter must only be used together with   <code>use_size = true</code>.</li> </ul> <p>Note that <code>use_size = true</code> alone may result in larger representations - the benefit of this parameter is that the receiving side is immediately informed of the number of elements in the container.</p> <p>ND-array optimized format</p> <p>BJData extends UBJSON's optimized array size marker to support ND-arrays of uniform numerical data types (referred to as packed arrays). For example, the 2-D <code>uint8</code> integer array <code>[[1,2],[3,4],[5,6]]</code>, stored as nested optimized array in UBJSON <code>[ [$U#i2 1 2 [$U#i2 3 4 [$U#i2 5 6 ]</code>, can be further compressed in BJData to <code>[$U#[$i#i2 2 3 1 2 3 4 5 6</code> or <code>[$U#[i2 i3] 1 2 3 4 5 6</code>.</p> <p>To maintain type and size information, ND-arrays are converted to JSON objects following the annotated array format (defined in the JData specification (Draft 3)), when parsed using <code>from_bjdata</code>. For example, the above 2-D <code>uint8</code> array can be parsed and accessed as</p> <pre><code>{\n    \"_ArrayType_\": \"uint8\",\n    \"_ArraySize_\": [2,3],\n    \"_ArrayData_\": [1,2,3,4,5,6]\n}\n</code></pre> <p>Likewise, when a JSON object in the above form is serialized using <code>to_bjdata</code>, it is automatically converted into a compact BJData ND-array. The only exception is, that when the 1-dimensional vector stored in <code>\"_ArraySize_\"</code> contains a single integer or two integers with one being 1, a regular 1-D optimized array is generated.</p> <p>The current version of this library does not yet support automatic detection of and conversion from a nested JSON array input to a BJData ND-array.</p> <p>Restrictions in optimized data types for arrays and objects</p> <p>Due to diminished space saving, hampered readability, and increased security risks, in BJData, the allowed data types following the <code>$</code> marker in an optimized array and object container are restricted to non-zero-fixed-length data types. Therefore, the valid optimized type markers can only be one of <code>UiuImlMLhdDCB</code>. This also means other variable (<code>[{SH</code>) or zero-length types (<code>TFN</code>) can not be used in an optimized array or object in BJData.</p> <p>Binary values</p> <p>BJData provides a dedicated <code>B</code> marker (defined in the BJData specification (Draft 3)) that is used in optimized arrays to designate binary data. This means that, unlike UBJSON, binary data can be both serialized and deserialized.</p> <p>To preserve compatibility with BJData Draft 2, the Draft 3 optimized binary array must be explicitly enabled using the <code>version</code> parameter of <code>to_bjdata</code>.</p> <p>In Draft2 mode (default), if the JSON data contains the binary type, the value stored as a list of integers, as suggested by the BJData documentation. In particular, this means that the serialization and the deserialization of JSON containing binary values into BJData and back will result in a different JSON object.</p> Example <pre><code>#include &lt;iostream&gt;\n#include &lt;iomanip&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\nusing namespace nlohmann::literals;\n\n// function to print BJData's diagnostic format\nvoid print_byte(uint8_t byte)\n{\n    if (32 &lt; byte and byte &lt; 128)\n    {\n        std::cout &lt;&lt; (char)byte;\n    }\n    else\n    {\n        std::cout &lt;&lt; (int)byte;\n    }\n}\n\nint main()\n{\n    // create a JSON value\n    json j = R\"({\"compact\": true, \"schema\": false})\"_json;\n\n    // serialize it to BJData\n    std::vector&lt;std::uint8_t&gt; v = json::to_bjdata(j);\n\n    // print the vector content\n    for (auto&amp; byte : v)\n    {\n        print_byte(byte);\n    }\n    std::cout &lt;&lt; std::endl;\n\n    // create an array of numbers\n    json array = {1, 2, 3, 4, 5, 6, 7, 8};\n\n    // serialize it to BJData using default representation\n    std::vector&lt;std::uint8_t&gt; v_array = json::to_bjdata(array);\n    // serialize it to BJData using size optimization\n    std::vector&lt;std::uint8_t&gt; v_array_size = json::to_bjdata(array, true);\n    // serialize it to BJData using type optimization\n    std::vector&lt;std::uint8_t&gt; v_array_size_and_type = json::to_bjdata(array, true, true);\n\n    // print the vector contents\n    for (auto&amp; byte : v_array)\n    {\n        print_byte(byte);\n    }\n    std::cout &lt;&lt; std::endl;\n\n    for (auto&amp; byte : v_array_size)\n    {\n        print_byte(byte);\n    }\n    std::cout &lt;&lt; std::endl;\n\n    for (auto&amp; byte : v_array_size_and_type)\n    {\n        print_byte(byte);\n    }\n    std::cout &lt;&lt; std::endl;\n}\n</code></pre> <p>Output:</p> <pre><code>{i7compactTi6schemaF}\n[i1i2i3i4i5i6i7i8]\n[#i8i1i2i3i4i5i6i7i8\n[$i#i812345678\n</code></pre>"},{"location":"features/binary_formats/bjdata/#deserialization","title":"Deserialization","text":"<p>The library maps BJData types to JSON value types as follows:</p> BJData type JSON value type marker no-op no value, next value is read <code>N</code> null <code>null</code> <code>Z</code> false <code>false</code> <code>F</code> true <code>true</code> <code>T</code> float16 number_float <code>h</code> float32 number_float <code>d</code> float64 number_float <code>D</code> uint8 number_unsigned <code>U</code> int8 number_integer <code>i</code> uint16 number_unsigned <code>u</code> int16 number_integer <code>I</code> uint32 number_unsigned <code>m</code> int32 number_integer <code>l</code> uint64 number_unsigned <code>M</code> int64 number_integer <code>L</code> byte number_unsigned <code>B</code> string string <code>S</code> char string <code>C</code> array array (optimized values are supported) <code>[</code> ND-array object (in JData annotated array format) <code>[$.#[.</code> object object (optimized values are supported) <code>{</code> binary binary (strongly-typed byte array) <code>[$B</code> <p>Complete mapping</p> <p>The mapping is complete in the sense that any BJData value can be converted to a JSON value.</p> Example <pre><code>#include &lt;iostream&gt;\n#include &lt;iomanip&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create byte vector\n    std::vector&lt;std::uint8_t&gt; v = {0x7B, 0x69, 0x07, 0x63, 0x6F, 0x6D, 0x70, 0x61,\n                                   0x63, 0x74, 0x54, 0x69, 0x06, 0x73, 0x63, 0x68,\n                                   0x65, 0x6D, 0x61, 0x69, 0x00, 0x7D\n                                  };\n\n    // deserialize it with BJData\n    json j = json::from_bjdata(v);\n\n    // print the deserialized JSON value\n    std::cout &lt;&lt; std::setw(2) &lt;&lt; j &lt;&lt; std::endl;\n}\n</code></pre> <p>Output:</p> <pre><code>{\n  \"compact\": true,\n  \"schema\": 0\n}\n</code></pre>"},{"location":"features/binary_formats/bson/","title":"BSON","text":"<p>BSON, short for Binary JSON, is a binary-encoded serialization of JSON-like documents. Like JSON, BSON supports the embedding of documents and arrays within other documents and arrays. BSON also contains extensions that allow representation of data types that are not part of the JSON spec. For example, BSON has a Date type and a BinData type.</p> <p>References</p> <ul> <li>BSON Website - the main source on BSON</li> <li>BSON Specification - the specification</li> </ul>"},{"location":"features/binary_formats/bson/#serialization","title":"Serialization","text":"<p>The library uses the following mapping from JSON values types to BSON types:</p> JSON value type value/range BSON type marker null <code>null</code> null 0x0A boolean <code>true</code>, <code>false</code> boolean 0x08 number_integer -9223372036854775808..-2147483649 int64 0x12 number_integer -2147483648..2147483647 int32 0x10 number_integer 2147483648..9223372036854775807 int64 0x12 number_unsigned 0..2147483647 int32 0x10 number_unsigned 2147483648..9223372036854775807 int64 0x12 number_unsigned 9223372036854775808..18446744073709551615 uint64 0x11 number_float any value double 0x01 string any value string 0x02 array any value document 0x04 object any value document 0x03 binary any value binary 0x05 <p>Incomplete mapping</p> <p>The mapping is incomplete, since only JSON-objects (and things contained therein) can be serialized to BSON. Also, keys may not contain U+0000, since they are serialized a zero-terminated c-strings.</p> Example <pre><code>#include &lt;iostream&gt;\n#include &lt;iomanip&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\nusing namespace nlohmann::literals;\n\nint main()\n{\n    // create a JSON value\n    json j = R\"({\"compact\": true, \"schema\": 0})\"_json;\n\n    // serialize it to BSON\n    std::vector&lt;std::uint8_t&gt; v = json::to_bson(j);\n\n    // print the vector content\n    for (auto&amp; byte : v)\n    {\n        std::cout &lt;&lt; \"0x\" &lt;&lt; std::hex &lt;&lt; std::setw(2) &lt;&lt; std::setfill('0') &lt;&lt; (int)byte &lt;&lt; \" \";\n    }\n    std::cout &lt;&lt; std::endl;\n}\n</code></pre> <p>Output:</p> <pre><code>0x1b 0x00 0x00 0x00 0x08 0x63 0x6f 0x6d 0x70 0x61 0x63 0x74 0x00 0x01 0x10 0x73 0x63 0x68 0x65 0x6d 0x61 0x00 0x00 0x00 0x00 0x00 0x00 \n</code></pre>"},{"location":"features/binary_formats/bson/#deserialization","title":"Deserialization","text":"<p>The library maps BSON record types to JSON value types as follows:</p> BSON type BSON marker byte JSON value type double 0x01 number_float string 0x02 string document 0x03 object array 0x04 array binary 0x05 binary undefined 0x06 unsupported ObjectId 0x07 unsupported boolean 0x08 boolean UTC Date-Time 0x09 unsupported null 0x0A null Regular Expr. 0x0B unsupported DB Pointer 0x0C unsupported JavaScript Code 0x0D unsupported Symbol 0x0E unsupported JavaScript Code 0x0F unsupported int32 0x10 number_integer uint64(Timestamp) 0x11 number_unsigned 128-bit decimal float 0x13 unsupported Max Key 0x7F unsupported Min Key 0xFF unsupported <p>Incomplete mapping</p> <p>The mapping is incomplete. The unsupported mappings are indicated in the table above.</p> <p>Handling of BSON type 0x11</p> <p>BSON type 0x11 is used to represent uint64 numbers. This library treats these values purely as uint64 numbers  and does not parse them into date-related formats.</p> Example <pre><code>#include &lt;iostream&gt;\n#include &lt;iomanip&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create byte vector\n    std::vector&lt;std::uint8_t&gt; v = {0x1b, 0x00, 0x00, 0x00, 0x08, 0x63, 0x6f, 0x6d,\n                                   0x70, 0x61, 0x63, 0x74, 0x00, 0x01, 0x10, 0x73,\n                                   0x63, 0x68, 0x65, 0x6d, 0x61, 0x00, 0x00, 0x00,\n                                   0x00, 0x00, 0x00\n                                  };\n\n    // deserialize it with BSON\n    json j = json::from_bson(v);\n\n    // print the deserialized JSON value\n    std::cout &lt;&lt; std::setw(2) &lt;&lt; j &lt;&lt; std::endl;\n}\n</code></pre> <p>Output:</p> <pre><code>{\n  \"compact\": true,\n  \"schema\": 0\n}\n</code></pre>"},{"location":"features/binary_formats/cbor/","title":"CBOR","text":"<p>The Concise Binary Object Representation (CBOR) is a data format whose design goals include the possibility of extremely small code sizes, fairly small message size, and extensibility without the need for version negotiation.</p> <p>References</p> <ul> <li>CBOR Website - the main source on CBOR</li> <li>CBOR Playground - an interactive webpage to translate between JSON and CBOR</li> <li>RFC 7049 - the CBOR specification</li> </ul>"},{"location":"features/binary_formats/cbor/#serialization","title":"Serialization","text":"<p>The library uses the following mapping from JSON values types to CBOR types according to the CBOR specification (RFC 7049):</p> JSON value type value/range CBOR type first byte null <code>null</code> Null 0xF6 boolean <code>true</code> True 0xF5 boolean <code>false</code> False 0xF4 number_integer -9223372036854775808..-2147483649 Negative integer (8 bytes follow) 0x3B number_integer -2147483648..-32769 Negative integer (4 bytes follow) 0x3A number_integer -32768..-129 Negative integer (2 bytes follow) 0x39 number_integer -128..-25 Negative integer (1 byte follow) 0x38 number_integer -24..-1 Negative integer 0x20..0x37 number_integer 0..23 Integer 0x00..0x17 number_integer 24..255 Unsigned integer (1 byte follow) 0x18 number_integer 256..65535 Unsigned integer (2 bytes follow) 0x19 number_integer 65536..4294967295 Unsigned integer (4 bytes follow) 0x1A number_integer 4294967296..18446744073709551615 Unsigned integer (8 bytes follow) 0x1B number_unsigned 0..23 Integer 0x00..0x17 number_unsigned 24..255 Unsigned integer (1 byte follow) 0x18 number_unsigned 256..65535 Unsigned integer (2 bytes follow) 0x19 number_unsigned 65536..4294967295 Unsigned integer (4 bytes follow) 0x1A number_unsigned 4294967296..18446744073709551615 Unsigned integer (8 bytes follow) 0x1B number_float any value representable by a float Single-Precision Float 0xFA number_float any value NOT representable by a float Double-Precision Float 0xFB string length: 0..23 UTF-8 string 0x60..0x77 string length: 23..255 UTF-8 string (1 byte follow) 0x78 string length: 256..65535 UTF-8 string (2 bytes follow) 0x79 string length: 65536..4294967295 UTF-8 string (4 bytes follow) 0x7A string length: 4294967296..18446744073709551615 UTF-8 string (8 bytes follow) 0x7B array size: 0..23 array 0x80..0x97 array size: 23..255 array (1 byte follow) 0x98 array size: 256..65535 array (2 bytes follow) 0x99 array size: 65536..4294967295 array (4 bytes follow) 0x9A array size: 4294967296..18446744073709551615 array (8 bytes follow) 0x9B object size: 0..23 map 0xA0..0xB7 object size: 23..255 map (1 byte follow) 0xB8 object size: 256..65535 map (2 bytes follow) 0xB9 object size: 65536..4294967295 map (4 bytes follow) 0xBA object size: 4294967296..18446744073709551615 map (8 bytes follow) 0xBB binary size: 0..23 byte string 0x40..0x57 binary size: 23..255 byte string (1 byte follow) 0x58 binary size: 256..65535 byte string (2 bytes follow) 0x59 binary size: 65536..4294967295 byte string (4 bytes follow) 0x5A binary size: 4294967296..18446744073709551615 byte string (8 bytes follow) 0x5B <p>Binary values with subtype are mapped to tagged values (0xD8..0xDB) depending on the subtype, followed by a byte string, see \"binary\" cells in the table above.</p> <p>Complete mapping</p> <p>The mapping is complete in the sense that any JSON value type can be converted to a CBOR value.</p> <p>NaN/infinity handling</p> <p>If NaN or Infinity are stored inside a JSON number, they are serialized properly. This behavior differs from the normal JSON serialization which serializes NaN or Infinity to <code>null</code>.</p> <p>Unused CBOR types</p> <p>The following CBOR types are not used in the conversion:</p> <ul> <li>UTF-8 strings terminated by \"break\" (0x7F)</li> <li>arrays terminated by \"break\" (0x9F)</li> <li>maps terminated by \"break\" (0xBF)</li> <li>byte strings terminated by \"break\" (0x5F)</li> <li>date/time (0xC0..0xC1)</li> <li>bignum (0xC2..0xC3)</li> <li>decimal fraction (0xC4)</li> <li>bigfloat (0xC5)</li> <li>expected conversions (0xD5..0xD7)</li> <li>simple values (0xE0..0xF3, 0xF8)</li> <li>undefined (0xF7)</li> <li>half-precision floats (0xF9)</li> <li>break (0xFF)</li> </ul> <p>Tagged items</p> <p>Binary subtypes will be serialized as tagged items. See binary values for an example.</p> Example <pre><code>#include &lt;iostream&gt;\n#include &lt;iomanip&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\nusing namespace nlohmann::literals;\n\nint main()\n{\n    // create a JSON value\n    json j = R\"({\"compact\": true, \"schema\": 0})\"_json;\n\n    // serialize it to CBOR\n    std::vector&lt;std::uint8_t&gt; v = json::to_cbor(j);\n\n    // print the vector content\n    for (auto&amp; byte : v)\n    {\n        std::cout &lt;&lt; \"0x\" &lt;&lt; std::hex &lt;&lt; std::setw(2) &lt;&lt; std::setfill('0') &lt;&lt; (int)byte &lt;&lt; \" \";\n    }\n    std::cout &lt;&lt; std::endl;\n}\n</code></pre> <p>Output:</p> <pre><code>0xa2 0x67 0x63 0x6f 0x6d 0x70 0x61 0x63 0x74 0xf5 0x66 0x73 0x63 0x68 0x65 0x6d 0x61 0x00 \n</code></pre>"},{"location":"features/binary_formats/cbor/#deserialization","title":"Deserialization","text":"<p>The library maps CBOR types to JSON value types as follows:</p> CBOR type JSON value type first byte Integer number_unsigned 0x00..0x17 Unsigned integer number_unsigned 0x18 Unsigned integer number_unsigned 0x19 Unsigned integer number_unsigned 0x1A Unsigned integer number_unsigned 0x1B Negative integer number_integer 0x20..0x37 Negative integer number_integer 0x38 Negative integer number_integer 0x39 Negative integer number_integer 0x3A Negative integer number_integer 0x3B Byte string binary 0x40..0x57 Byte string binary 0x58 Byte string binary 0x59 Byte string binary 0x5A Byte string binary 0x5B UTF-8 string string 0x60..0x77 UTF-8 string string 0x78 UTF-8 string string 0x79 UTF-8 string string 0x7A UTF-8 string string 0x7B UTF-8 string string 0x7F array array 0x80..0x97 array array 0x98 array array 0x99 array array 0x9A array array 0x9B array array 0x9F map object 0xA0..0xB7 map object 0xB8 map object 0xB9 map object 0xBA map object 0xBB map object 0xBF False <code>false</code> 0xF4 True <code>true</code> 0xF5 Null <code>null</code> 0xF6 Half-Precision Float number_float 0xF9 Single-Precision Float number_float 0xFA Double-Precision Float number_float 0xFB <p>Incomplete mapping</p> <p>The mapping is incomplete in the sense that not all CBOR types can be converted to a JSON value. The following CBOR types are not supported and will yield parse errors:</p> <ul> <li>date/time (0xC0..0xC1)</li> <li>bignum (0xC2..0xC3)</li> <li>decimal fraction (0xC4)</li> <li>bigfloat (0xC5)</li> <li>expected conversions (0xD5..0xD7)</li> <li>simple values (0xE0..0xF3, 0xF8)</li> <li>undefined (0xF7)</li> </ul> <p>Object keys</p> <p>CBOR allows map keys of any type, whereas JSON only allows strings as keys in object values. Therefore, CBOR maps with keys other than UTF-8 strings are rejected.</p> <p>Tagged items</p> <p>Tagged items will throw a parse error by default. They can be ignored by passing <code>cbor_tag_handler_t::ignore</code> to function <code>from_cbor</code>. They can be stored by passing <code>cbor_tag_handler_t::store</code> to function <code>from_cbor</code>.</p> Example <pre><code>#include &lt;iostream&gt;\n#include &lt;iomanip&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create byte vector\n    std::vector&lt;std::uint8_t&gt; v = {0xa2, 0x67, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x63,\n                                   0x74, 0xf5, 0x66, 0x73, 0x63, 0x68, 0x65, 0x6d,\n                                   0x61, 0x00\n                                  };\n\n    // deserialize it with CBOR\n    json j = json::from_cbor(v);\n\n    // print the deserialized JSON value\n    std::cout &lt;&lt; std::setw(2) &lt;&lt; j &lt;&lt; std::endl;\n}\n</code></pre> <p>Output:</p> <pre><code>{\n  \"compact\": true,\n  \"schema\": 0\n}\n</code></pre>"},{"location":"features/binary_formats/messagepack/","title":"MessagePack","text":"<p>MessagePack is an efficient binary serialization format. It lets you exchange data among multiple languages like JSON. But it's faster and smaller. Small integers are encoded into a single byte, and typical short strings require only one extra byte in addition to the strings themselves.</p> <p>References</p> <ul> <li>MessagePack website</li> <li>MessagePack specification</li> </ul>"},{"location":"features/binary_formats/messagepack/#serialization","title":"Serialization","text":"<p>The library uses the following mapping from JSON values types to MessagePack types according to the MessagePack specification:</p> JSON value type value/range MessagePack type first byte null <code>null</code> nil 0xC0 boolean <code>true</code> true 0xC3 boolean <code>false</code> false 0xC2 number_integer -9223372036854775808..-2147483649 int64 0xD3 number_integer -2147483648..-32769 int32 0xD2 number_integer -32768..-129 int16 0xD1 number_integer -128..-33 int8 0xD0 number_integer -32..-1 negative fixint 0xE0..0xFF number_integer 0..127 positive fixint 0x00..0x7F number_integer 128..255 uint 8 0xCC number_integer 256..65535 uint 16 0xCD number_integer 65536..4294967295 uint 32 0xCE number_integer 4294967296..18446744073709551615 uint 64 0xCF number_unsigned 0..127 positive fixint 0x00..0x7F number_unsigned 128..255 uint 8 0xCC number_unsigned 256..65535 uint 16 0xCD number_unsigned 65536..4294967295 uint 32 0xCE number_unsigned 4294967296..18446744073709551615 uint 64 0xCF number_float any value representable by a float float 32 0xCA number_float any value NOT representable by a float float 64 0xCB string length: 0..31 fixstr 0xA0..0xBF string length: 32..255 str 8 0xD9 string length: 256..65535 str 16 0xDA string length: 65536..4294967295 str 32 0xDB array size: 0..15 fixarray 0x90..0x9F array size: 16..65535 array 16 0xDC array size: 65536..4294967295 array 32 0xDD object size: 0..15 fix map 0x80..0x8F object size: 16..65535 map 16 0xDE object size: 65536..4294967295 map 32 0xDF binary size: 0..255 bin 8 0xC4 binary size: 256..65535 bin 16 0xC5 binary size: 65536..4294967295 bin 32 0xC6 <p>Complete mapping</p> <p>The mapping is complete in the sense that any JSON value type can be converted to a MessagePack value.</p> <p>Any MessagePack output created by <code>to_msgpack</code> can be successfully parsed by <code>from_msgpack</code>.</p> <p>Size constraints</p> <p>The following values can not be converted to a MessagePack value:</p> <ul> <li>strings with more than 4294967295 bytes</li> <li>byte strings with more than 4294967295 bytes</li> <li>arrays with more than 4294967295 elements</li> <li>objects with more than 4294967295 elements</li> </ul> <p>NaN/infinity handling</p> <p>If NaN or Infinity are stored inside a JSON number, they are serialized properly in contrast to the dump function which serializes NaN or Infinity to <code>null</code>.</p> Example <pre><code>#include &lt;iostream&gt;\n#include &lt;iomanip&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\nusing namespace nlohmann::literals;\n\nint main()\n{\n    // create a JSON value\n    json j = R\"({\"compact\": true, \"schema\": 0})\"_json;\n\n    // serialize it to MessagePack\n    std::vector&lt;std::uint8_t&gt; v = json::to_msgpack(j);\n\n    // print the vector content\n    for (auto&amp; byte : v)\n    {\n        std::cout &lt;&lt; \"0x\" &lt;&lt; std::hex &lt;&lt; std::setw(2) &lt;&lt; std::setfill('0') &lt;&lt; (int)byte &lt;&lt; \" \";\n    }\n    std::cout &lt;&lt; std::endl;\n}\n</code></pre> <p>Output:</p> <pre><code>0x82 0xa7 0x63 0x6f 0x6d 0x70 0x61 0x63 0x74 0xc3 0xa6 0x73 0x63 0x68 0x65 0x6d 0x61 0x00 \n</code></pre>"},{"location":"features/binary_formats/messagepack/#deserialization","title":"Deserialization","text":"<p>The library maps MessagePack types to JSON value types as follows:</p> MessagePack type JSON value type first byte positive fixint number_unsigned 0x00..0x7F fixmap object 0x80..0x8F fixarray array 0x90..0x9F fixstr string 0xA0..0xBF nil <code>null</code> 0xC0 false <code>false</code> 0xC2 true <code>true</code> 0xC3 float 32 number_float 0xCA float 64 number_float 0xCB uint 8 number_unsigned 0xCC uint 16 number_unsigned 0xCD uint 32 number_unsigned 0xCE uint 64 number_unsigned 0xCF int 8 number_integer 0xD0 int 16 number_integer 0xD1 int 32 number_integer 0xD2 int 64 number_integer 0xD3 str 8 string 0xD9 str 16 string 0xDA str 32 string 0xDB array 16 array 0xDC array 32 array 0xDD map 16 object 0xDE map 32 object 0xDF bin 8 binary 0xC4 bin 16 binary 0xC5 bin 32 binary 0xC6 ext 8 binary 0xC7 ext 16 binary 0xC8 ext 32 binary 0xC9 fixext 1 binary 0xD4 fixext 2 binary 0xD5 fixext 4 binary 0xD6 fixext 8 binary 0xD7 fixext 16 binary 0xD8 negative fixint number_integer 0xE0-0xFF <p>Info</p> <p>Any MessagePack output created by <code>to_msgpack</code> can be successfully parsed by <code>from_msgpack</code>.</p> Example <pre><code>#include &lt;iostream&gt;\n#include &lt;iomanip&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create byte vector\n    std::vector&lt;std::uint8_t&gt; v = {0x82, 0xa7, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x63,\n                                   0x74, 0xc3, 0xa6, 0x73, 0x63, 0x68, 0x65, 0x6d,\n                                   0x61, 0x00\n                                  };\n\n    // deserialize it with MessagePack\n    json j = json::from_msgpack(v);\n\n    // print the deserialized JSON value\n    std::cout &lt;&lt; std::setw(2) &lt;&lt; j &lt;&lt; std::endl;\n}\n</code></pre> <p>Output:</p> <pre><code>{\n  \"compact\": true,\n  \"schema\": 0\n}\n</code></pre>"},{"location":"features/binary_formats/ubjson/","title":"UBJSON","text":"<p>Universal Binary JSON (UBJSON) is a binary form directly imitating JSON, but requiring fewer bytes of data. It aims to achieve the generality of JSON, combined with being much easier to process than JSON.</p> <p>References</p> <ul> <li>UBJSON Website</li> </ul>"},{"location":"features/binary_formats/ubjson/#serialization","title":"Serialization","text":"<p>The library uses the following mapping from JSON values types to UBJSON types according to the UBJSON specification:</p> JSON value type value/range UBJSON type marker null <code>null</code> null <code>Z</code> boolean <code>true</code> true <code>T</code> boolean <code>false</code> false <code>F</code> number_integer -9223372036854775808..-2147483649 int64 <code>L</code> number_integer -2147483648..-32769 int32 <code>l</code> number_integer -32768..-129 int16 <code>I</code> number_integer -128..127 int8 <code>i</code> number_integer 128..255 uint8 <code>U</code> number_integer 256..32767 int16 <code>I</code> number_integer 32768..2147483647 int32 <code>l</code> number_integer 2147483648..9223372036854775807 int64 <code>L</code> number_unsigned 0..127 int8 <code>i</code> number_unsigned 128..255 uint8 <code>U</code> number_unsigned 256..32767 int16 <code>I</code> number_unsigned 32768..2147483647 int32 <code>l</code> number_unsigned 2147483648..9223372036854775807 int64 <code>L</code> number_unsigned 2147483649..18446744073709551615 high-precision <code>H</code> number_float any value float64 <code>D</code> string with shortest length indicator string <code>S</code> array see notes on optimized format array <code>[</code> object see notes on optimized format map <code>{</code> <p>Complete mapping</p> <p>The mapping is complete in the sense that any JSON value type can be converted to a UBJSON value.</p> <p>Any UBJSON output created by <code>to_ubjson</code> can be successfully parsed by <code>from_ubjson</code>.</p> <p>Size constraints</p> <p>The following values can not be converted to a UBJSON value:</p> <ul> <li>strings with more than 9223372036854775807 bytes (theoretical)</li> </ul> <p>Unused UBJSON markers</p> <p>The following markers are not used in the conversion:</p> <ul> <li><code>Z</code>: no-op values are not created.</li> <li><code>C</code>: single-byte strings are serialized with <code>S</code> markers.</li> </ul> <p>NaN/infinity handling</p> <p>If NaN or Infinity are stored inside a JSON number, they are serialized properly. This behavior differs from the <code>dump()</code> function which serializes NaN or Infinity to <code>null</code>.</p> <p>Optimized formats</p> <p>The optimized formats for containers are supported: Parameter <code>use_size</code> adds size information to the beginning of a container and removes the closing marker. Parameter <code>use_type</code> further checks whether all elements of a container have the same type and adds the type marker to the beginning of the container. The <code>use_type</code> parameter must only be used together with <code>use_size = true</code>.</p> <p>Note that <code>use_size = true</code> alone may result in larger representations - the benefit of this parameter is that the receiving side is immediately informed on the number of elements of the container.</p> <p>Binary values</p> <p>If the JSON data contains the binary type, the value stored is a list of integers, as suggested by the UBJSON documentation.  In particular, this means that serialization and the deserialization of a JSON containing binary values into UBJSON and back will result in a different JSON object.</p> Example <pre><code>#include &lt;iostream&gt;\n#include &lt;iomanip&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\nusing namespace nlohmann::literals;\n\n// function to print UBJSON's diagnostic format\nvoid print_byte(uint8_t byte)\n{\n    if (32 &lt; byte and byte &lt; 128)\n    {\n        std::cout &lt;&lt; (char)byte;\n    }\n    else\n    {\n        std::cout &lt;&lt; (int)byte;\n    }\n}\n\nint main()\n{\n    // create a JSON value\n    json j = R\"({\"compact\": true, \"schema\": false})\"_json;\n\n    // serialize it to UBJSON\n    std::vector&lt;std::uint8_t&gt; v = json::to_ubjson(j);\n\n    // print the vector content\n    for (auto&amp; byte : v)\n    {\n        print_byte(byte);\n    }\n    std::cout &lt;&lt; std::endl;\n\n    // create an array of numbers\n    json array = {1, 2, 3, 4, 5, 6, 7, 8};\n\n    // serialize it to UBJSON using default representation\n    std::vector&lt;std::uint8_t&gt; v_array = json::to_ubjson(array);\n    // serialize it to UBJSON using size optimization\n    std::vector&lt;std::uint8_t&gt; v_array_size = json::to_ubjson(array, true);\n    // serialize it to UBJSON using type optimization\n    std::vector&lt;std::uint8_t&gt; v_array_size_and_type = json::to_ubjson(array, true, true);\n\n    // print the vector contents\n    for (auto&amp; byte : v_array)\n    {\n        print_byte(byte);\n    }\n    std::cout &lt;&lt; std::endl;\n\n    for (auto&amp; byte : v_array_size)\n    {\n        print_byte(byte);\n    }\n    std::cout &lt;&lt; std::endl;\n\n    for (auto&amp; byte : v_array_size_and_type)\n    {\n        print_byte(byte);\n    }\n    std::cout &lt;&lt; std::endl;\n}\n</code></pre> <p>Output:</p> <pre><code>{i7compactTi6schemaF}\n[i1i2i3i4i5i6i7i8]\n[#i8i1i2i3i4i5i6i7i8\n[$i#i812345678\n</code></pre>"},{"location":"features/binary_formats/ubjson/#deserialization","title":"Deserialization","text":"<p>The library maps UBJSON types to JSON value types as follows:</p> UBJSON type JSON value type marker no-op no value, next value is read <code>N</code> null <code>null</code> <code>Z</code> false <code>false</code> <code>F</code> true <code>true</code> <code>T</code> float32 number_float <code>d</code> float64 number_float <code>D</code> uint8 number_unsigned <code>U</code> int8 number_integer <code>i</code> int16 number_integer <code>I</code> int32 number_integer <code>l</code> int64 number_integer <code>L</code> string string <code>S</code> char string <code>C</code> array array (optimized values are supported) <code>[</code> object object (optimized values are supported) <code>{</code> <p>Complete mapping</p> <p>The mapping is complete in the sense that any UBJSON value can be converted to a JSON value.</p> Example <pre><code>#include &lt;iostream&gt;\n#include &lt;iomanip&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create byte vector\n    std::vector&lt;std::uint8_t&gt; v = {0x7B, 0x69, 0x07, 0x63, 0x6F, 0x6D, 0x70, 0x61,\n                                   0x63, 0x74, 0x54, 0x69, 0x06, 0x73, 0x63, 0x68,\n                                   0x65, 0x6D, 0x61, 0x69, 0x00, 0x7D\n                                  };\n\n    // deserialize it with UBJSON\n    json j = json::from_ubjson(v);\n\n    // print the deserialized JSON value\n    std::cout &lt;&lt; std::setw(2) &lt;&lt; j &lt;&lt; std::endl;\n}\n</code></pre> <p>Output:</p> <pre><code>{\n  \"compact\": true,\n  \"schema\": 0\n}\n</code></pre>"},{"location":"features/element_access/","title":"Element Access","text":"<p>There are many ways elements in a JSON value can be accessed:</p> <ul> <li>unchecked access via <code>operator[]</code></li> <li>checked access via <code>at</code></li> <li>access with default value via <code>value</code></li> <li>iterators</li> <li>JSON pointers</li> </ul>"},{"location":"features/element_access/checked_access/","title":"Checked access: at","text":""},{"location":"features/element_access/checked_access/#overview","title":"Overview","text":"<p>The <code>at</code> member function performs checked access; that is, it returns a reference to the desired value if it exists and throws a <code>basic_json::out_of_range</code> exception otherwise.</p> Read access <p>Consider the following JSON value:</p> <pre><code>{\n    \"name\": \"Mary Smith\",\n    \"age\": 42,\n    \"hobbies\": [\"hiking\", \"reading\"]\n}\n</code></pre> <p>Assume the value is parsed to a <code>json</code> variable <code>j</code>.</p> expression value <code>j</code> <code>{\"name\": \"Mary Smith\", \"age\": 42, \"hobbies\": [\"hiking\", \"reading\"]}</code> <code>j.at(\"name\")</code> <code>\"Mary Smith\"</code> <code>j.at(\"age\")</code> <code>42</code> <code>j.at(\"hobbies\")</code> <code>[\"hiking\", \"reading\"]</code> <code>j.at(\"hobbies\").at(0)</code> <code>\"hiking\"</code> <code>j.at(\"hobbies\").at(1)</code> <code>\"reading\"</code> <p>The return value is a reference, so it can be modified by the original value.</p> Write access <pre><code>j.at(\"name\") = \"John Smith\";\n</code></pre> <p>This code produces the following JSON value:</p> <pre><code>{\n    \"name\": \"John Smith\",\n    \"age\": 42,\n    \"hobbies\": [\"hiking\", \"reading\"]\n}\n</code></pre> <p>When accessing an invalid index (i.e., an index greater than or equal to the array size) or the passed object key is non-existing, an exception is thrown.</p> Accessing via invalid index or missing key <pre><code>j.at(\"hobbies\").at(3) = \"cooking\";\n</code></pre> <p>This code produces the following exception:</p> <pre><code>[json.exception.out_of_range.401] array index 3 is out of range\n</code></pre> <p>When you extended diagnostic messages are enabled by defining <code>JSON_DIAGNOSTICS</code>, the exception further gives information where the key or index is missing or out of range.</p> <pre><code>[json.exception.out_of_range.401] (/hobbies) array index 3 is out of range\n</code></pre>"},{"location":"features/element_access/checked_access/#notes","title":"Notes","text":"<p>Exceptions</p> <ul> <li><code>at</code> can only be used with objects (with a string argument) or with arrays (with a   numeric argument). For other types, a <code>basic_json::type_error</code>   is thrown.</li> <li><code>basic_json::out_of_range</code> exception exceptions are thrown if the   provided key is not found in an object or the provided index is invalid.</li> </ul>"},{"location":"features/element_access/checked_access/#summary","title":"Summary","text":"scenario non-const value const value access to existing object key reference to existing value is returned const reference to existing value is returned access to valid array index reference to existing value is returned const reference to existing value is returned access to non-existing object key <code>basic_json::out_of_range</code> exception is thrown <code>basic_json::out_of_range</code> exception is thrown access to invalid array index <code>basic_json::out_of_range</code> exception is thrown <code>basic_json::out_of_range</code> exception is thrown"},{"location":"features/element_access/default_value/","title":"Access with default value: value","text":""},{"location":"features/element_access/default_value/#overview","title":"Overview","text":"<p>In many situations, such as configuration files, missing values are not exceptional, but may be treated as if a default value was present. For this case, use <code>value(key, default_value)</code> which takes the key you want to access and a default value in case there is no value stored with that key.</p>"},{"location":"features/element_access/default_value/#example","title":"Example","text":"Example <p>Consider the following JSON value:</p> <pre><code>{\n    \"logOutput\": \"result.log\",\n    \"append\": true\n}\n</code></pre> <p>Assume the value is parsed to a <code>json</code> variable <code>j</code>.</p> expression value <code>j</code> <code>{\"logOutput\": \"result.log\", \"append\": true}</code> <code>j.value(\"logOutput\", \"logfile.log\")</code> <code>\"result.log\"</code> <code>j.value(\"append\", true)</code> <code>true</code> <code>j.value(\"append\", false)</code> <code>true</code> <code>j.value(\"logLevel\", \"verbose\")</code> <code>\"verbose\"</code>"},{"location":"features/element_access/default_value/#notes","title":"Notes","text":"<p>Exceptions</p> <ul> <li><code>value</code> can only be used with objects. For other types, a <code>basic_json::type_error</code> is thrown.</li> </ul> <p>Return type</p> <p>The value function is a template, and the return type of the function is determined by the type of the provided default value unless otherwise specified. This can have unexpected effects. In the example below, we store a 64-bit unsigned integer. We get exactly that value when using <code>operator[]</code>. However, when we call <code>value</code> and provide <code>0</code> as default value, then <code>-1</code> is returned. The occurs, because <code>0</code> has type <code>int</code> which overflows when handling the value <code>18446744073709551615</code>.</p> <p>To address this issue, either provide a correctly typed default value or use the template parameter to specify the desired return type. Note that this issue occurs even when a value is stored at the provided key, and the default value is not used as the return value.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    json j = json::parse(R\"({\"uint64\": 18446744073709551615})\");\n\n    std::cout &lt;&lt; \"operator[]:                \" &lt;&lt; j[\"uint64\"] &lt;&lt; '\\n'\n              &lt;&lt; \"default value (int):       \" &lt;&lt; j.value(\"uint64\", 0) &lt;&lt; '\\n'\n              &lt;&lt; \"default value (uint64_t):  \" &lt;&lt; j.value(\"uint64\", std::uint64_t(0)) &lt;&lt; '\\n'\n              &lt;&lt; \"explicit return value type: \" &lt;&lt; j.value&lt;std::uint64_t&gt;(\"uint64\", 0) &lt;&lt; '\\n';\n}\n</code></pre> <p>Output:</p> <pre><code>operator[]:                18446744073709551615\ndefault value (int):       -1\ndefault value (uint64_t):  18446744073709551615\nexplicit return value type: 18446744073709551615\n</code></pre>"},{"location":"features/element_access/default_value/#see-also","title":"See also","text":"<ul> <li><code>value</code> for access with default value</li> <li>documentation on checked access</li> </ul>"},{"location":"features/element_access/unchecked_access/","title":"Unchecked access: operator[]","text":""},{"location":"features/element_access/unchecked_access/#overview","title":"Overview","text":"<p>Elements in a JSON object and a JSON array can be accessed via <code>operator[]</code> similar to a <code>std::map</code> and a <code>std::vector</code>, respectively.</p> Read access <p>Consider the following JSON value:</p> <pre><code>{\n    \"name\": \"Mary Smith\",\n    \"age\": 42,\n    \"hobbies\": [\"hiking\", \"reading\"]\n}\n</code></pre> <p>Assume the value is parsed to a <code>json</code> variable <code>j</code>.</p> expression value <code>j</code> <code>{\"name\": \"Mary Smith\", \"age\": 42, \"hobbies\": [\"hiking\", \"reading\"]}</code> <code>j[\"name\"]</code> <code>\"Mary Smith\"</code> <code>j[\"age\"]</code> <code>42</code> <code>j[\"hobbies\"]</code> <code>[\"hiking\", \"reading\"]</code> <code>j[\"hobbies\"][0]</code> <code>\"hiking\"</code> <code>j[\"hobbies\"][1]</code> <code>\"reading\"</code> <p>The return value is a reference, so it can modify the original value. In case the passed object key is non-existing, a <code>null</code> value is inserted which can immediately be overwritten.</p> Write access <pre><code>j[\"name\"] = \"John Smith\";\nj[\"maidenName\"] = \"Jones\";\n</code></pre> <p>This code produces the following JSON value:</p> <pre><code>{\n    \"name\": \"John Smith\",\n    \"maidenName\": \"Jones\",\n    \"age\": 42,\n    \"hobbies\": [\"hiking\", \"reading\"]\n}\n</code></pre> <p>When accessing an invalid index (i.e., an index greater than or equal to the array size), the JSON array is resized such that the passed index is the new maximal index. Intermediate values are filled with <code>null</code>.</p> Filling up arrays with <code>null</code> values <pre><code>j[\"hobbies\"][0] = \"running\";\nj[\"hobbies\"][3] = \"cooking\";\n</code></pre> <p>This code produces the following JSON value:</p> <pre><code>{\n    \"name\": \"John Smith\",\n    \"maidenName\": \"Jones\",\n    \"age\": 42,\n    \"hobbies\": [\"running\", \"reading\", null, \"cooking\"]\n}\n</code></pre>"},{"location":"features/element_access/unchecked_access/#notes","title":"Notes","text":"<p>Design rationale</p> <p>The library behaves differently to <code>std::vector</code> and <code>std::map</code>:</p> <ul> <li><code>std::vector::operator[]</code> never inserts a new element.</li> <li><code>std::map::operator[]</code> is not available for const values.</li> </ul> <p>The type <code>json</code> wraps all JSON value types. It would be impossible to remove <code>operator[]</code> for const objects. At the same time, inserting elements for non-const objects is really convenient as it avoids awkward <code>insert</code> calls. To this end, we decided to have an inserting non-const behavior for both arrays and objects.</p> <p>Info</p> <p>The access is unchecked. In case the passed object key does not exist or the passed array index is invalid, no exception is thrown.</p> <p>Danger</p> <ul> <li>It is undefined behavior to access a const object with a non-existing key.</li> <li>It is undefined behavior to access a const array with an invalid index.</li> <li>In debug mode, an assertion will fire in both cases. You can disable assertions by defining the preprocessor   symbol <code>NDEBUG</code> or redefine the macro <code>JSON_ASSERT(x)</code>. See the documentation   on runtime assertions for more information.</li> </ul> <p>Exceptions</p> <p><code>operator[]</code> can only be used with objects (with a string argument) or with arrays (with a numeric argument). For other types, a <code>basic_json::type_error</code> is thrown.</p>"},{"location":"features/element_access/unchecked_access/#summary","title":"Summary","text":"scenario non-const value const value access to existing object key reference to existing value is returned const reference to existing value is returned access to valid array index reference to existing value is returned const reference to existing value is returned access to non-existing object key reference to newly inserted <code>null</code> value is returned undefined behavior; runtime assertion in debug mode access to invalid array index reference to newly inserted <code>null</code> value is returned; any index between previous maximal index and passed index are filled with <code>null</code> undefined behavior; runtime assertion in debug mode"},{"location":"features/parsing/","title":"Parsing","text":"<p>Note</p> <p>This page is under construction.</p>"},{"location":"features/parsing/#input","title":"Input","text":""},{"location":"features/parsing/#sax-vs-dom-parsing","title":"SAX vs. DOM parsing","text":""},{"location":"features/parsing/#exceptions","title":"Exceptions","text":"<p>See parsing and exceptions.</p>"},{"location":"features/parsing/json_lines/","title":"JSON Lines","text":"<p>The JSON Lines format is a text format of newline-delimited JSON. In particular:</p> <ol> <li>The input must be UTF-8 encoded.</li> <li>Every line must be a valid JSON value.</li> <li>The line separator must be <code>\\n</code>. As <code>\\r</code> is silently ignored, <code>\\r\\n</code> is also supported.</li> <li>The final character may be <code>\\n</code>, but is not required to be one.</li> </ol> <p>JSON Text example</p> <pre><code>{\"name\": \"Gilbert\", \"wins\": [[\"straight\", \"7\u2663\"], [\"one pair\", \"10\u2665\"]]}\n{\"name\": \"Alexa\", \"wins\": [[\"two pair\", \"4\u2660\"], [\"two pair\", \"9\u2660\"]]}\n{\"name\": \"May\", \"wins\": []}\n{\"name\": \"Deloise\", \"wins\": [[\"three of a kind\", \"5\u2663\"]]}\n</code></pre> <p>JSON Lines input with more than one value is treated as invalid JSON by the <code>parse</code> or <code>accept</code> functions. To process it line by line, functions like <code>std::getline</code> can be used:</p> <p>Example: Parse JSON Text input line by line</p> <p>The example below demonstrates how JSON Lines can be processed.</p> <pre><code>#include &lt;sstream&gt;\n#include &lt;iostream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // JSON Lines (see https://jsonlines.org)\n    std::stringstream input;\n    input &lt;&lt; R\"({\"name\": \"Gilbert\", \"wins\": [[\"straight\", \"7\u2663\"], [\"one pair\", \"10\u2665\"]]}\n{\"name\": \"Alexa\", \"wins\": [[\"two pair\", \"4\u2660\"], [\"two pair\", \"9\u2660\"]]}\n{\"name\": \"May\", \"wins\": []}\n{\"name\": \"Deloise\", \"wins\": [[\"three of a kind\", \"5\u2663\"]]}\n)\";\n\n    std::string line;\n    while (std::getline(input, line))\n    {\n        std::cout &lt;&lt; json::parse(line) &lt;&lt; std::endl;\n    }\n}\n</code></pre> <p>Output:</p> <pre><code>{\"name\":\"Gilbert\",\"wins\":[[\"straight\",\"7\u2663\"],[\"one pair\",\"10\u2665\"]]}\n{\"name\":\"Alexa\",\"wins\":[[\"two pair\",\"4\u2660\"],[\"two pair\",\"9\u2660\"]]}\n{\"name\":\"May\",\"wins\":[]}\n{\"name\":\"Deloise\",\"wins\":[[\"three of a kind\",\"5\u2663\"]]}\n</code></pre> <p>Note</p> <p>Using <code>operator&gt;&gt;</code> like</p> <pre><code>json j;\nwhile (input &gt;&gt; j)\n{\n    std::cout &lt;&lt; j &lt;&lt; std::endl;\n}\n</code></pre> <p>with a JSON Lines input does not work, because the parser will try to parse one value after the last one.</p>"},{"location":"features/parsing/parse_exceptions/","title":"Parsing and Exceptions","text":"<p>When the input is not valid JSON, an exception of type <code>parse_error</code> is thrown. This exception contains the position in the input where the error occurred, together with a diagnostic message and the last read input token. The exceptions page contains a list of examples for parse error exceptions. In case you process untrusted input, always enclose your code with a <code>try</code>/<code>catch</code> block, like</p> <pre><code>json j;\ntry\n{\n    j = json::parse(my_input);\n}\ncatch (json::parse_error&amp; ex)\n{\n    std::cerr &lt;&lt; \"parse error at byte \" &lt;&lt; ex.byte &lt;&lt; std::endl;\n}\n</code></pre> <p>In case exceptions are undesired or not supported by the environment, there are different ways to proceed:</p>"},{"location":"features/parsing/parse_exceptions/#switch-off-exceptions","title":"Switch off exceptions","text":"<p>The <code>parse()</code> function accepts a <code>bool</code> parameter <code>allow_exceptions</code> which controls whether an exception is thrown when a parse error occurs (<code>true</code>, default) or whether a discarded value should be returned (<code>false</code>).</p> <pre><code>json j = json::parse(my_input, nullptr, false);\nif (j.is_discarded())\n{\n    std::cerr &lt;&lt; \"parse error\" &lt;&lt; std::endl;\n}\n</code></pre> <p>Note there is no diagnostic information available in this scenario.</p>"},{"location":"features/parsing/parse_exceptions/#use-accept-function","title":"Use accept() function","text":"<p>Alternatively, function <code>accept()</code> can be used which does not return a <code>json</code> value, but a <code>bool</code> indicating whether the input is valid JSON.</p> <pre><code>if (!json::accept(my_input))\n{\n    std::cerr &lt;&lt; \"parse error\" &lt;&lt; std::endl;\n}\n</code></pre> <p>Again, there is no diagnostic information available.</p>"},{"location":"features/parsing/parse_exceptions/#user-defined-sax-interface","title":"User-defined SAX interface","text":"<p>Finally, you can implement the SAX interface and decide what should happen in case of a parse error.</p> <p>This function has the following interface:</p> <pre><code>bool parse_error(std::size_t position,\n                 const std::string&amp; last_token,\n                 const json::exception&amp; ex);\n</code></pre> <p>The return value indicates whether the parsing should continue, so the function should usually return <code>false</code>.</p> Example <pre><code>#include &lt;iostream&gt;\n#include \"json.hpp\"\n\nusing json = nlohmann::json;\n\nclass sax_no_exception : public nlohmann::detail::json_sax_dom_parser&lt;json&gt;\n{\n  public:\n    sax_no_exception(json&amp; j)\n      : nlohmann::detail::json_sax_dom_parser&lt;json&gt;(j, false)\n    {}\n\n    bool parse_error(std::size_t position,\n                     const std::string&amp; last_token,\n                     const json::exception&amp; ex)\n    {\n        std::cerr &lt;&lt; \"parse error at input byte \" &lt;&lt; position &lt;&lt; \"\\n\"\n                  &lt;&lt; ex.what() &lt;&lt; \"\\n\"\n                  &lt;&lt; \"last read: \\\"\" &lt;&lt; last_token &lt;&lt; \"\\\"\"\n                  &lt;&lt; std::endl;\n        return false;\n    }\n};\n\nint main()\n{\n    std::string myinput = \"[1,2,3,]\";\n\n    json result;\n    sax_no_exception sax(result);\n\n    bool parse_result = json::sax_parse(myinput, &amp;sax);\n    if (!parse_result)\n    {\n        std::cerr &lt;&lt; \"parsing unsuccessful!\" &lt;&lt; std::endl;\n    }\n\n    std::cout &lt;&lt; \"parsed value: \" &lt;&lt; result &lt;&lt; std::endl;\n}\n</code></pre> <p>Output:</p> <pre><code>parse error at input byte 8\n[json.exception.parse_error.101] parse error at line 1, column 8: syntax error while parsing value - unexpected ']'; expected '[', '{', or a literal\nlast read: \"3,]\"\nparsing unsuccessful!\nparsed value: [1,2,3]\n</code></pre>"},{"location":"features/parsing/parser_callbacks/","title":"Parser Callbacks","text":""},{"location":"features/parsing/parser_callbacks/#overview","title":"Overview","text":"<p>With a parser callback function, the result of parsing a JSON text can be influenced. When passed to <code>parse</code>, it is called on certain events (passed as <code>parse_event_t</code> via parameter <code>event</code>) with a set recursion depth <code>depth</code> and context JSON value <code>parsed</code>. The return value of the callback function is a boolean indicating whether the element that emitted the callback shall be kept or not.</p> <p>The type of the callback function is:</p> <pre><code>template&lt;typename BasicJsonType&gt;\nusing parser_callback_t =\n    std::function&lt;bool(int depth, parse_event_t event, BasicJsonType&amp; parsed)&gt;;\n</code></pre>"},{"location":"features/parsing/parser_callbacks/#callback-event-types","title":"Callback event types","text":"<p>We distinguish six scenarios (determined by the event type) in which the callback function can be called. The following table describes the values of the parameters <code>depth</code>, <code>event</code>, and <code>parsed</code>.</p> parameter <code>event</code> description parameter <code>depth</code> parameter <code>parsed</code> <code>parse_event_t::object_start</code> the parser read <code>{</code> and started to process a JSON object depth of the parent of the JSON object a JSON value with type discarded <code>parse_event_t::key</code> the parser read a key of a value in an object depth of the currently parsed JSON object a JSON string containing the key <code>parse_event_t::object_end</code> the parser read <code>}</code> and finished processing a JSON object depth of the parent of the JSON object the parsed JSON object <code>parse_event_t::array_start</code> the parser read <code>[</code> and started to process a JSON array depth of the parent of the JSON array a JSON value with type discarded <code>parse_event_t::array_end</code> the parser read <code>]</code> and finished processing a JSON array depth of the parent of the JSON array the parsed JSON array <code>parse_event_t::value</code> the parser finished reading a JSON value depth of the value the parsed JSON value Example <p>When parsing the following JSON text,</p> <pre><code>{\n    \"name\": \"Berlin\",\n    \"location\": [\n        52.519444,\n        13.406667\n    ]\n}\n</code></pre> <p>these calls are made to the callback function:</p> event depth parsed <code>object_start</code> 0 discarded <code>key</code> 1 <code>\"name\"</code> <code>value</code> 1 <code>\"Berlin\"</code> <code>key</code> 1 <code>\"location\"</code> <code>array_start</code> 1 discarded <code>value</code> 2 <code>52.519444</code> <code>value</code> 2 <code>13.406667</code> <code>array_end</code> 1 <code>[52.519444,13.406667]</code> <code>object_end</code> 0 <code>{\"location\":[52.519444,13.406667],\"name\":\"Berlin\"}</code>"},{"location":"features/parsing/parser_callbacks/#return-value","title":"Return value","text":"<p>Discarding a value (i.e., returning <code>false</code>) has different effects depending on the context in which the function was called:</p> <ul> <li>Discarded values in structured types are skipped. That is, the parser will behave as if the discarded value was never   read.</li> <li>In case a value outside a structured type is skipped, it is replaced with <code>null</code>. This case happens if the   top-level element is skipped.</li> </ul> Example <p>The example below demonstrates the <code>parse()</code> function with and without callback function.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;iomanip&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // a JSON text\n    auto text = R\"(\n    {\n        \"Image\": {\n            \"Width\":  800,\n            \"Height\": 600,\n            \"Title\":  \"View from 15th Floor\",\n            \"Thumbnail\": {\n                \"Url\":    \"http://www.example.com/image/481989943\",\n                \"Height\": 125,\n                \"Width\":  100\n            },\n            \"Animated\" : false,\n            \"IDs\": [116, 943, 234, 38793]\n        }\n    }\n    )\";\n\n    // parse and serialize JSON\n    json j_complete = json::parse(text);\n    std::cout &lt;&lt; std::setw(4) &lt;&lt; j_complete &lt;&lt; \"\\n\\n\";\n\n    // define parser callback\n    json::parser_callback_t cb = [](int depth, json::parse_event_t event, json &amp; parsed)\n    {\n        // skip object elements with key \"Thumbnail\"\n        if (event == json::parse_event_t::key and parsed == json(\"Thumbnail\"))\n        {\n            return false;\n        }\n        else\n        {\n            return true;\n        }\n    };\n\n    // parse (with callback) and serialize JSON\n    json j_filtered = json::parse(text, cb);\n    std::cout &lt;&lt; std::setw(4) &lt;&lt; j_filtered &lt;&lt; '\\n';\n}\n</code></pre> <p>Output:</p> <pre><code>{\n    \"Image\": {\n        \"Animated\": false,\n        \"Height\": 600,\n        \"IDs\": [\n            116,\n            943,\n            234,\n            38793\n        ],\n        \"Thumbnail\": {\n            \"Height\": 125,\n            \"Url\": \"http://www.example.com/image/481989943\",\n            \"Width\": 100\n        },\n        \"Title\": \"View from 15th Floor\",\n        \"Width\": 800\n    }\n}\n\n{\n    \"Image\": {\n        \"Animated\": false,\n        \"Height\": 600,\n        \"IDs\": [\n            116,\n            943,\n            234,\n            38793\n        ],\n        \"Title\": \"View from 15th Floor\",\n        \"Width\": 800\n    }\n}\n</code></pre>"},{"location":"features/parsing/sax_interface/","title":"SAX Interface","text":"<p>The library uses a SAX-like interface with the following functions:</p> <pre><code>classDiagram\n\nclass sax_t [\"json::sax_t\"] {\n    &lt;&lt;interface&gt;&gt;\n    +bool null()*\n\n    +bool boolean(bool val)*\n\n    +bool number_integer(number_integer_t val)*\n    +bool number_unsigned(number_unsigned_t val)*\n\n    +bool number_float(number_float_t val, const string_t&amp; s)*\n\n    +bool string(string_t&amp; val)*\n    +bool binary(binary_t&amp; val)*\n\n    +bool start_object(std::size_t elements)*\n    +bool end_object()*\n    +bool start_array(std::size_t elements)*\n    +bool end_array()*\n    +bool key(string_t&amp; val)*\n\n    +bool parse_error(std::size_t position, const std::string&amp; last_token, const json::exception&amp; ex)*\n}</code></pre> <pre><code>// called when null is parsed\nbool null();\n\n// called when a boolean is parsed; value is passed\nbool boolean(bool val);\n\n// called when a signed or unsigned integer number is parsed; value is passed\nbool number_integer(number_integer_t val);\nbool number_unsigned(number_unsigned_t val);\n\n// called when a floating-point number is parsed; value and original string is passed\nbool number_float(number_float_t val, const string_t&amp; s);\n\n// called when a string is parsed; value is passed and can be safely moved away\nbool string(string_t&amp; val);\n// called when a binary value is parsed; value is passed and can be safely moved away\nbool binary(binary_t&amp; val);\n\n// called when an object or array begins or ends, resp. The number of elements is passed (or -1 if not known)\nbool start_object(std::size_t elements);\nbool end_object();\nbool start_array(std::size_t elements);\nbool end_array();\n// called when an object key is parsed; value is passed and can be safely moved away\nbool key(string_t&amp; val);\n\n// called when a parse error occurs; byte position, the last token, and an exception is passed\nbool parse_error(std::size_t position, const std::string&amp; last_token, const json::exception&amp; ex);\n</code></pre> <p>The return value of each function determines whether parsing should proceed.</p> <p>To implement your own SAX handler, proceed as follows:</p> <ol> <li>Implement the SAX interface in a class. You can use class <code>nlohmann::json_sax&lt;json&gt;</code> as base class, but you can also use any class where the functions described above are implemented and public.</li> <li>Create an object of your SAX interface class, e.g. <code>my_sax</code>.</li> <li>Call <code>bool json::sax_parse(input, &amp;my_sax);</code> where the first parameter can be any input like a string or an input stream and the second parameter is a pointer to your SAX interface.</li> </ol> <p>Note the <code>sax_parse</code> function only returns a <code>bool</code> indicating the result of the last executed SAX event. It does not return <code>json</code> value - it is up to you to decide what to do with the SAX events. Furthermore, no exceptions are thrown in case of a parse error - it is up to you what to do with the exception object passed to your <code>parse_error</code> implementation. Internally, the SAX interface is used for the DOM parser (class <code>json_sax_dom_parser</code>) as well as the acceptor (<code>json_sax_acceptor</code>), see file <code>json_sax.hpp</code>.</p>"},{"location":"features/parsing/sax_interface/#see-also","title":"See also","text":"<ul> <li>json_sax - documentation of the SAX interface</li> <li>sax_parse - SAX parser</li> </ul>"},{"location":"features/types/","title":"Types","text":"<p>This page gives an overview of how JSON values are stored and how this can be configured.</p>"},{"location":"features/types/#overview","title":"Overview","text":"<p>By default, JSON values are stored as follows:</p> JSON type C++ type object <code>std::map&lt;std::string, basic_json&gt;</code> array <code>std::vector&lt;basic_json&gt;</code> null <code>std::nullptr_t</code> string <code>std::string</code> boolean <code>bool</code> number <code>std::int64_t</code>, <code>std::uint64_t</code>, and <code>double</code> <p>Note there are three different types for numbers - when parsing JSON text, the best fitting type is chosen.</p>"},{"location":"features/types/#storage","title":"Storage","text":"<pre><code>classDiagram\n\nclass value_t {\n    &lt;&lt;enumeration&gt;&gt;\n    null\n    object\n    array\n    string\n    boolean\n    number_integer\n    number_unsigned\n    number_float\n    binary\n    discarded\n}\n\nclass json_value {\n    &lt;&lt;union&gt;&gt;\n    object_t* object\n    array_t* array\n    string_t* string\n    binary_t* binary\n    boolean_t boolean\n    number_integer_t number_integer\n    number_unsigned_t number_unsigned\n    number_float_t number_float\n}\n\nclass basic_json {\n    -value_t m_type\n    -json_value m_value\n    +typedef object_t\n    +typedef array_t\n    +typedef binary_t\n    +typedef boolean_t\n    +typedef number_integer_t\n    +typedef number_unsigned_t\n    +typedef number_float_t\n}\n\nbasic_json .. json_value\nbasic_json .. value_t</code></pre>"},{"location":"features/types/#template-arguments","title":"Template arguments","text":"<p>The data types to store a JSON value are derived from the template arguments passed to class <code>basic_json</code>:</p> <pre><code>template&lt;\n    template&lt;typename U, typename V, typename... Args&gt; class ObjectType = std::map,\n    template&lt;typename U, typename... Args&gt; class ArrayType = std::vector,\n    class StringType = std::string,\n    class BooleanType = bool,\n    class NumberIntegerType = std::int64_t,\n    class NumberUnsignedType = std::uint64_t,\n    class NumberFloatType = double,\n    template&lt;typename U&gt; class AllocatorType = std::allocator,\n    template&lt;typename T, typename SFINAE = void&gt; class JSONSerializer = adl_serializer,\n    class BinaryType = std::vector&lt;std::uint8_t&gt;\n&gt;\nclass basic_json;\n</code></pre> <p>Type <code>json</code> is an alias for <code>basic_json&lt;&gt;</code> and uses the default types.</p> <p>From the template arguments, the following types are derived:</p> <pre><code>using object_comparator_t = std::less&lt;&gt;;\nusing object_t = ObjectType&lt;StringType, basic_json, object_comparator_t,\n                   AllocatorType&lt;std::pair&lt;const StringType, basic_json&gt;&gt;&gt;;\n\nusing array_t = ArrayType&lt;basic_json, AllocatorType&lt;basic_json&gt;&gt;;\n\nusing string_t = StringType;\n\nusing boolean_t = BooleanType;\n\nusing number_integer_t = NumberIntegerType;\nusing number_unsigned_t = NumberUnsignedType;\nusing number_float_t = NumberFloatType;\n\nusing binary_t = nlohmann::byte_container_with_subtype&lt;BinaryType&gt;;\n</code></pre>"},{"location":"features/types/#objects","title":"Objects","text":"<p>RFC 8259 describes JSON objects as follows:</p> <p>An object is an unordered collection of zero or more name/value pairs, where a name is a string and a value is a string, number, boolean, null, object, or array.</p>"},{"location":"features/types/#default-type","title":"Default type","text":"<p>With the default values for ObjectType (<code>std::map</code>), StringType (<code>std::string</code>), and AllocatorType (<code>std::allocator</code>), the default value for <code>object_t</code> is:</p> <pre><code>std::map&lt;\n  std::string, // key_type\n  basic_json, // value_type\n  std::less&lt;&gt;, // key_compare\n  std::allocator&lt;std::pair&lt;const std::string, basic_json&gt;&gt; // allocator_type\n&gt;\n</code></pre>"},{"location":"features/types/#behavior","title":"Behavior","text":"<p>The choice of <code>object_t</code> influences the behavior of the JSON class. With the default type, objects have the following behavior:</p> <ul> <li>When all names are unique, objects will be interoperable in the sense that all software implementations receiving that object will agree on the name-value mappings.</li> <li>When the names within an object are not unique, it is unspecified which one of the values for a given key will be chosen. For instance, <code>{\"key\": 2, \"key\": 1}</code> could be equal to either <code>{\"key\": 1}</code> or <code>{\"key\": 2}</code>.</li> <li>Internally, name/value pairs are stored in lexicographical order of the names. Objects will also be serialized (see <code>dump</code>) in this order. For instance, both <code>{\"b\": 1, \"a\": 2}</code> and <code>{\"a\": 2, \"b\": 1}</code> will be stored and serialized as <code>{\"a\": 2, \"b\": 1}</code>.</li> <li>When comparing objects, the order of the name/value pairs is irrelevant. This makes objects interoperable in the sense that they will not be affected by these differences. For instance, <code>{\"b\": 1, \"a\": 2}</code> and <code>{\"a\": 2, \"b\": 1}</code> will be treated as equal.</li> </ul>"},{"location":"features/types/#key-order","title":"Key order","text":"<p>The order name/value pairs are added to the object are not preserved by the library. Therefore, iterating an object may return name/value pairs in a different order than they were originally stored. In fact, keys will be traversed in alphabetical order as <code>std::map</code> with <code>std::less</code> is used by default. Please note this behavior conforms to RFC 8259, because any order implements the specified \"unordered\" nature of JSON objects.</p>"},{"location":"features/types/#limits","title":"Limits","text":"<p>RFC 8259 specifies:</p> <p>An implementation may set limits on the maximum depth of nesting.</p> <p>In this class, the object's limit of nesting is not explicitly constrained. However, a maximum depth of nesting may be introduced by the compiler or runtime environment. A theoretical limit can be queried by calling the <code>max_size</code> function of a JSON object.</p>"},{"location":"features/types/#storage_1","title":"Storage","text":"<p>Objects are stored as pointers in a <code>basic_json</code> type. That is, for any access to object values, a pointer of type <code>object_t*</code> must be dereferenced.</p>"},{"location":"features/types/#arrays","title":"Arrays","text":"<p>RFC 8259 describes JSON arrays as follows:</p> <p>An array is an ordered sequence of zero or more values.</p>"},{"location":"features/types/#default-type_1","title":"Default type","text":"<p>With the default values for ArrayType (<code>std::vector</code>) and AllocatorType (<code>std::allocator</code>), the default value for <code>array_t</code> is:</p> <pre><code>std::vector&lt;\n  basic_json, // value_type\n  std::allocator&lt;basic_json&gt; // allocator_type\n&gt;\n</code></pre>"},{"location":"features/types/#limits_1","title":"Limits","text":"<p>RFC 8259 specifies:</p> <p>An implementation may set limits on the maximum depth of nesting.</p> <p>In this class, the array's limit of nesting is not explicitly constrained. However, a maximum depth of nesting may be introduced by the compiler or runtime environment. A theoretical limit can be queried by calling the <code>max_size</code> function of a JSON array.</p>"},{"location":"features/types/#storage_2","title":"Storage","text":"<p>Arrays are stored as pointers in a <code>basic_json</code> type. That is, for any access to array values, a pointer of type <code>array_t*</code> must be dereferenced.</p>"},{"location":"features/types/#strings","title":"Strings","text":"<p>RFC 8259 describes JSON strings as follows:</p> <p>A string is a sequence of zero or more Unicode characters.</p> <p>Unicode values are split by the JSON class into byte-sized characters during deserialization.</p>"},{"location":"features/types/#default-type_2","title":"Default type","text":"<p>With the default values for StringType (<code>std::string</code>), the default value for <code>string_t</code> is <code>std::string</code>.</p>"},{"location":"features/types/#encoding","title":"Encoding","text":"<p>Strings are stored in UTF-8 encoding. Therefore, functions like <code>std::string::size()</code> or <code>std::string::length()</code> return the number of bytes in the string rather than the number of characters or glyphs.</p>"},{"location":"features/types/#string-comparison","title":"String comparison","text":"<p>RFC 8259 states:</p> <p>Software implementations are typically required to test names of object members for equality. Implementations that transform the textual representation into sequences of Unicode code units and then perform the comparison numerically, code unit by code unit are interoperable in the sense that implementations will agree in all cases on equality or inequality of two strings. For example, implementations that compare strings with escaped characters unconverted may incorrectly find that <code>\"a\\\\b\"</code> and <code>\"a\\u005Cb\"</code> are not equal.</p> <p>This implementation is interoperable as it does compare strings code unit by code unit.</p>"},{"location":"features/types/#storage_3","title":"Storage","text":"<p>String values are stored as pointers in a <code>basic_json</code> type. That is, for any access to string values, a pointer of type <code>string_t*</code> must be dereferenced.</p>"},{"location":"features/types/#booleans","title":"Booleans","text":"<p>RFC 8259 implicitly describes a boolean as a type which differentiates the two literals <code>true</code> and <code>false</code>.</p>"},{"location":"features/types/#default-type_3","title":"Default type","text":"<p>With the default values for BooleanType (<code>bool</code>), the default value for <code>boolean_t</code> is <code>bool</code>.</p>"},{"location":"features/types/#storage_4","title":"Storage","text":"<p>Boolean values are stored directly inside a <code>basic_json</code> type.</p>"},{"location":"features/types/#numbers","title":"Numbers","text":"<p>See the number handling article for a detailed discussion on how numbers are handled by this library.</p> <p>RFC 8259 describes numbers as follows:</p> <p>The representation of numbers is similar to that used in most programming languages. A number is represented in base 10 using decimal digits. It contains an integer component that may be prefixed with an optional minus sign, which may be followed by a fraction part and/or an exponent part. Leading zeros are not allowed. (...) Numeric values that cannot be represented in the grammar below (such as Infinity and NaN) are not permitted.</p> <p>This description includes both integer and floating-point numbers. However, C++ allows more precise storage if it is known whether the number is a signed integer, an unsigned integer, or a floating-point number. Therefore, three different types, <code>number_integer_t</code>, <code>number_unsigned_t</code>, and <code>number_float_t</code> are used.</p>"},{"location":"features/types/#default-types","title":"Default types","text":"<p>With the default values for NumberIntegerType (<code>std::int64_t</code>), the default value for <code>number_integer_t</code> is <code>std::int64_t</code>. With the default values for NumberUnsignedType (<code>std::uint64_t</code>), the default value for <code>number_unsigned_t</code> is <code>std::uint64_t</code>. With the default values for NumberFloatType (<code>double</code>), the default value for <code>number_float_t</code> is <code>double</code>.</p>"},{"location":"features/types/#default-behavior","title":"Default behavior","text":"<ul> <li>The restrictions about leading zeros are not enforced in C++. Instead, leading zeros in integer literals lead to an interpretation as an octal number. Internally, the value will be stored as a decimal number. For instance, the C++ integer literal <code>010</code> will be serialized to <code>8</code>. During deserialization, leading zeros yield an error.</li> <li>Not-a-number (NaN) values will be serialized to <code>null</code>.</li> </ul>"},{"location":"features/types/#limits_2","title":"Limits","text":"<p>RFC 8259 specifies:</p> <p>An implementation may set limits on the range and precision of numbers.</p> <p>When the default type is used, the maximal integer number that can be stored is <code>9223372036854775807</code> (<code>INT64_MAX</code>) and the minimal integer number that can be stored is <code>-9223372036854775808</code> (<code>INT64_MIN</code>). Integer numbers that are out of range will yield over/underflow when used in a constructor. During deserialization, too large or small integer numbers will automatically be stored as <code>number_unsigned_t</code> or <code>number_float_t</code>.</p> <p>When the default type is used, the maximal unsigned integer number that can be stored is <code>18446744073709551615</code> (<code>UINT64_MAX</code>) and the minimal integer number that can be stored is <code>0</code>. Integer numbers that are out of range will yield over/underflow when used in a constructor. During deserialization, too large or small integer numbers will automatically be stored as <code>number_integer_t</code> or <code>number_float_t</code>.</p> <p>RFC 8259 further states:</p> <p>Note that when such software is used, numbers that are integers and are in the range [-2^{53}+1, 2^{53}-1] are interoperable in the sense that implementations will agree exactly on their numeric values.</p> <p>As this range is a subrange of the exactly supported range [<code>INT64_MIN</code>, <code>INT64_MAX</code>], this class's integer type is interoperable.</p> <p>RFC 8259 states:</p> <p>This specification allows implementations to set limits on the range and precision of numbers accepted. Since software that implements IEEE 754-2008 binary64 (double precision) numbers is generally available and widely used, good interoperability can be achieved by implementations that expect no more precision or range than these provide, in the sense that implementations will approximate JSON numbers within the expected precision.</p> <p>This implementation does exactly follow this approach, as it uses double precision floating-point numbers. Note values smaller than <code>-1.79769313486232e+308</code> and values greater than <code>1.79769313486232e+308</code> will be stored as NaN internally and be serialized to <code>null</code>.</p>"},{"location":"features/types/#storage_5","title":"Storage","text":"<p>Integer number values, unsigned integer number values, and floating-point number values are stored directly inside a <code>basic_json</code> type.</p>"},{"location":"features/types/number_handling/","title":"Number Handling","text":"<p>This document describes how the library is handling numbers.</p>"},{"location":"features/types/number_handling/#background","title":"Background","text":"<p>This section briefly summarizes how the JSON specification describes how numbers should be handled.</p>"},{"location":"features/types/number_handling/#json-number-syntax","title":"JSON number syntax","text":"<p>JSON defines the syntax of numbers as follows:</p> <p>RFC 8259, Section 6</p> <p>The representation of numbers is similar to that used in most programming languages.  A number is represented in base 10 using decimal digits.  It contains an integer component that may be prefixed with an optional minus sign, which may be followed by a fraction part and/or an exponent part.  Leading zeros are not allowed.</p> <p>A fraction part is a decimal point followed by one or more digits.</p> <p>An exponent part begins with the letter E in uppercase or lowercase, which may be followed by a plus or minus sign.  The E and optional sign are followed by one or more digits.</p> <p>The following railroad diagram from json.org visualizes the number syntax:</p> <p></p>"},{"location":"features/types/number_handling/#number-interoperability","title":"Number interoperability","text":"<p>On number interoperability, the following remarks are made:</p> <p>RFC 8259, Section 6</p> <p>This specification allows implementations to set limits on the range and precision of numbers accepted.  Since software that implements IEEE 754 binary64 (double precision) numbers [IEEE754] is generally available and widely used, good interoperability can be achieved by implementations that expect no more precision or range than these provide, in the sense that implementations will approximate JSON numbers within the expected precision.  A JSON number such as 1E400 or 3.141592653589793238462643383279 may indicate potential interoperability problems, since it suggests that the software that created it expects receiving software to have greater capabilities for numeric magnitude and precision than is widely available.</p> <p>Note that when such software is used, numbers that are integers and are in the range [-2^{53}+1, 2^{53}-1] are interoperable in the sense that implementations will agree exactly on their numeric values.</p>"},{"location":"features/types/number_handling/#library-implementation","title":"Library implementation","text":"<p>This section describes how this library implements the above number specification.</p>"},{"location":"features/types/number_handling/#number-storage","title":"Number storage","text":"<p>In the default <code>json</code> type, numbers are stored as <code>std::uint64_t</code>, <code>std::int64_t</code>, and <code>double</code>, respectively. Thereby, <code>std::uint64_t</code> and <code>std::int64_t</code> are used only if they can store the  number without loss of precision. If this is impossible (e.g., if the number is too large), the number is stored as <code>double</code>.</p> <p>Notes</p> <ul> <li>Numbers with a decimal digit or scientific notation are always stored as <code>double</code>.</li> <li>The number types can be changed, see Template number types. </li> <li>As of version 3.9.1, the conversion is realized by   <code>std::strtoull</code>,   <code>std::strtoll</code>, and   <code>std::strtod</code>, respectively.</li> </ul> <p>Examples</p> <ul> <li>Integer <code>-12345678912345789123456789</code> is smaller than <code>INT64_MIN</code> and will be stored as floating-point   number <code>-1.2345678912345788e+25</code>.</li> <li>Integer <code>1E3</code> will be stored as floating-point number <code>1000.0</code>.</li> </ul>"},{"location":"features/types/number_handling/#number-limits","title":"Number limits","text":"<ul> <li>Any 64-bit signed or unsigned integer can be stored without loss of precision.</li> <li>Numbers exceeding the limits of <code>double</code> (i.e., numbers that after conversion via <code>std::strtod</code> are not satisfying <code>std::isfinite</code> such as <code>1E400</code>) will throw exception <code>json.exception.out_of_range.406</code> during parsing.</li> <li>Floating-point numbers are rounded to the next number representable as <code>double</code>. For instance <code>3.141592653589793238462643383279</code> is stored as <code>0x400921fb54442d18</code>. This is the same behavior as the code <code>double x = 3.141592653589793238462643383279;</code>.</li> </ul> <p>Interoperability</p> <ul> <li>The library interoperable with respect to the specification, because its supported range [-2^{63}, 2^{64}-1] is   larger than the described range [-2^{53}+1, 2^{53}-1].</li> <li>All integers outside the range [-2^{63}, 2^{64}-1], as well as floating-point numbers are stored as <code>double</code>.   This also concurs with the specification above.</li> </ul>"},{"location":"features/types/number_handling/#zeros","title":"Zeros","text":"<p>The JSON number grammar allows for different ways to express zero, and this library will store zeros differently:</p> Literal Stored value and type Serialization <code>0</code> <code>std::uint64_t(0)</code> <code>0</code> <code>-0</code> <code>std::int64_t(0)</code> <code>0</code> <code>0.0</code> <code>double(0.0)</code> <code>0.0</code> <code>-0.0</code> <code>double(-0.0)</code> <code>-0.0</code> <code>0E0</code> <code>double(0.0)</code> <code>0.0</code> <code>-0E0</code> <code>double(-0.0)</code> <code>-0.0</code> <p>That is, <code>-0</code> is stored as a signed integer, but the serialization does not reproduce the <code>-</code>.</p>"},{"location":"features/types/number_handling/#number-serialization","title":"Number serialization","text":"<ul> <li>Integer numbers are serialized as is; that is, no scientific notation is used.</li> <li>Floating-point numbers are serialized as specified by the <code>%g</code> printf modifier with    <code>std::numeric_limits&lt;double&gt;::max_digits10</code>   significant digits. The rationale is to use the shortest representation while still allowing round-tripping.</li> </ul> <p>Notes regarding precision of floating-point numbers</p> <p>As described above, floating-point numbers are rounded to the nearest double and serialized with the shortest representation to allow round-tripping. This can yield confusing examples:</p> <ul> <li>The serialization can have fewer decimal places than the input: <code>2555.5599999999999</code> will be serialized as   <code>2555.56</code>. The reverse can also be true.</li> <li>The serialization can be in scientific notation even if the input is not: <code>0.0000972439793401814</code> will be    serialized as <code>9.72439793401814e-05</code>. The reverse can also be true: <code>12345E-5</code> will be serialized as   <code>0.12345</code>.</li> <li>Conversions from <code>float</code> to <code>double</code> can also introduce rounding errors:     <pre><code>float f = 0.3;\njson j = f;\nstd::cout &lt;&lt; j &lt;&lt; '\\n';\n</code></pre>     yields <code>0.30000001192092896</code>.</li> </ul> <p>All examples here can be reproduced by passing the original double value to</p> <pre><code>std::printf(\"%.*g\\n\", std::numeric_limits&lt;double&gt;::max_digits10, double_value);\n</code></pre>"},{"location":"features/types/number_handling/#nan-handling","title":"NaN handling","text":"<p>NaN (not-a-number) cannot be expressed with the number syntax described above and are in fact explicitly excluded:</p> <p>RFC 8259, Section 6</p> <p>Numeric values that cannot be represented in the grammar below (such as Infinity and NaN) are not permitted.</p> <p>That is, there is no way to parse a NaN value. However, assignments can store NaN values in a JSON value.</p> <p>This library serializes NaN values  as <code>null</code>. This corresponds to the behavior of JavaScript's <code>JSON.stringify</code> function.</p> <p>Example</p> <p>The following example shows how a NaN value is stored in a <code>json</code> value.</p> <pre><code>int main()\n{\n    double val = std::numeric_limits&lt;double&gt;::quiet_NaN();\n    std::cout &lt;&lt; \"val=\" &lt;&lt; val &lt;&lt; std::endl;\n    json j = val;\n    std::cout &lt;&lt; \"j=\" &lt;&lt; j.dump() &lt;&lt; std::endl;\n    val = j;\n    std::cout &lt;&lt; \"val=\" &lt;&lt; val &lt;&lt; std::endl;\n}\n</code></pre> <p>output:</p> <pre><code>val=nan\nj=null\nval=nan\n</code></pre>"},{"location":"features/types/number_handling/#number-comparison","title":"Number comparison","text":"<p>Floating-point inside JSON values numbers are compared with <code>json::number_float_t::operator==</code> which is <code>double::operator==</code> by default.</p> <p>Alternative comparison functions</p> <p>To compare floating-point while respecting an epsilon, an alternative comparison function could be used, for instance</p> <p><pre><code>template&lt;typename T, typename = typename std::enable_if&lt;std::is_floating_point&lt;T&gt;::value, T&gt;::type&gt;\ninline bool is_same(T a, T b, T epsilon = std::numeric_limits&lt;T&gt;::epsilon()) noexcept\n{\n    return std::abs(a - b) &lt;= epsilon;\n}\n</code></pre> Or you can self-define an operator equal function like this:</p> <pre><code>bool my_equal(const_reference lhs, const_reference rhs)\n{\n    const auto lhs_type lhs.type();\n    const auto rhs_type rhs.type();\n    if (lhs_type == rhs_type)\n    {\n        switch(lhs_type)\n        {\n            // self_defined case\n            case value_t::number_float:\n                return std::abs(lhs - rhs) &lt;= std::numeric_limits&lt;float&gt;::epsilon();\n\n            // other cases remain the same with the original\n            ...\n        }\n    }\n    ...\n}\n</code></pre> <p>(see #703 for more information.)</p> <p>Note</p> <p>NaN values never compare equal to themselves or to other NaN values. See #514.</p>"},{"location":"features/types/number_handling/#number-conversion","title":"Number conversion","text":"<p>Just like the C++ language itself, the <code>get</code> family of functions allows conversions between unsigned and signed integers, and between integers and floating-point values to integers. This behavior may be surprising.</p> <p>Unconditional number conversions</p> <pre><code>double d = 42.3;                          // non-integer double value 42.3\njson jd = d;                              // stores double value 42.3\nstd::int64_t i = jd.get&lt;std::int64_t&gt;();  // now i==42; no warning or error is produced\n</code></pre> <p>Note the last line with throw a <code>json.exception.type_error.302</code> exception if <code>jd</code> is not a numerical type, for instance a string.</p> <p>Numeric conversions are performed according to the corresponding C++ conversion rules. The library does not perform range checks when converting between numeric types.</p> <p>In particular, conversions from floating-point values to integer types, or conversions to integer types with a smaller range than the stored value, may produce implementation-defined or undefined behavior if the source value cannot be represented by the target type.</p> <p>Applications requiring checked conversions should inspect the stored number type with <code>is_number_float()</code>, <code>is_number_integer()</code>, <code>is_number_unsigned()</code>, or <code>type()</code>, and perform explicit range checks before converting to a narrower type.</p> <p>The rationale is twofold:</p> <ol> <li>JSON does not define a number type or precision (see above).</li> <li>C++ also allows silently converting between number types.</li> </ol> <p>Conditional number conversion</p> <p>The code above can be solved by explicitly checking the nature of the value with members such as <code>is_number_integer()</code> or <code>is_number_unsigned()</code>:</p> <pre><code>// check if jd is really integer-valued\nif (jd.is_number_integer())\n{\n    // if so, do the conversion and use i\n    std::int64_t i = jd.get&lt;std::int64_t&gt;();\n    // ...\n}\nelse\n{\n    // otherwise, take appropriate action\n    // ...\n}\n</code></pre> <p>Note this approach also has the advantage that it can react on non-numerical JSON value types such as strings.</p> <p>(Example taken from #777.)</p>"},{"location":"features/types/number_handling/#determine-number-types","title":"Determine number types","text":"<p>As the example in Number conversion shows, there are different functions to determine the type of the stored number:</p> <ul> <li><code>is_number()</code> returns <code>true</code> for any number type</li> <li><code>is_number_integer()</code> returns <code>true</code> for signed and unsigned integers</li> <li><code>is_number_unsigned()</code> returns <code>true</code> for unsigned integers only</li> <li><code>is_number_float()</code> returns <code>true</code> for floating-point numbers</li> <li><code>type_name()</code> returns <code>\"number\"</code> for any number type</li> <li><code>type()</code> returns a different enumerator of   <code>value_t</code> for all number types</li> </ul> function unsigned integer signed integer floating-point string <code>is_number()</code> <code>true</code> <code>true</code> <code>true</code> <code>false</code> <code>is_number_integer()</code> <code>true</code> <code>true</code> <code>false</code> <code>false</code> <code>is_number_unsigned()</code> <code>true</code> <code>false</code> <code>false</code> <code>false</code> <code>is_number_float()</code> <code>false</code> <code>false</code> <code>true</code> <code>false</code> <code>type_name()</code> <code>\"number\"</code> <code>\"number\"</code> <code>\"number\"</code> <code>\"string\"</code> <code>type()</code> <code>number_unsigned</code> <code>number_integer</code> <code>number_float</code> <code>string</code>"},{"location":"features/types/number_handling/#template-number-types","title":"Template number types","text":"<p>The number types can be changed with template parameters.</p> position number type default type possible values 5 signed integers <code>std::int64_t</code> <code>std::int32_t</code>, <code>std::int16_t</code>, etc. 6 unsigned integers <code>std::uint64_t</code> <code>std::uint32_t</code>, <code>std::uint16_t</code>, etc. 7 floating-point <code>double</code> <code>float</code>, <code>long double</code> <p>Constraints on number types</p> <ul> <li>The type for signed integers must be convertible from <code>long long</code>. The type for floating-point numbers is used   in case of overflow.</li> <li>The type for unsigned integers must be convertible from <code>unsigned long long</code>.  The type for floating-point   numbers is used in case of overflow.</li> <li>The types for signed and unsigned integers must be distinct, see   #2573.</li> <li>Only <code>double</code>, <code>float</code>, and <code>long double</code> are supported for floating-point numbers.</li> </ul> <p>Example</p> <p>A <code>basic_json</code> type that uses <code>long double</code> as floating-point type.</p> <pre><code>using json_ld = nlohmann::basic_json&lt;std::map, std::vector, std::string, bool,\n                                     std::int64_t, std::uint64_t, long double&gt;;\n</code></pre> <p>Note values should then be parsed with <code>json_ld::parse</code> rather than <code>json::parse</code> as the latter would parse floating-point values to <code>double</code> before then converting them to <code>long double</code>.</p>"},{"location":"home/architecture/","title":"Architecture","text":"<p>Info</p> <p>This page is still under construction. Its goal is to provide a high-level overview of the library's architecture. This should help new contributors to get an idea of the used concepts and where to make changes.</p>"},{"location":"home/architecture/#overview","title":"Overview","text":"<p>The main structure is class nlohmann::basic_json.</p> <ul> <li>public API</li> <li>container interface</li> <li>iterators</li> </ul>"},{"location":"home/architecture/#template-specializations","title":"Template specializations","text":"<ul> <li>describe template parameters of <code>basic_json</code></li> <li><code>json</code></li> <li><code>ordered_json</code> via <code>ordered_map</code></li> </ul>"},{"location":"home/architecture/#value-storage","title":"Value storage","text":"<p>Values are stored as a tagged union of value_t and json_value.</p> <pre><code>/// the type of the current element\nvalue_t m_type = value_t::null;\n\n/// the value of the current element\njson_value m_value = {};\n</code></pre> <p>with</p> <pre><code>enum class value_t : std::uint8_t\n{\n    null,             ///&lt; null value\n    object,           ///&lt; object (unordered set of name/value pairs)\n    array,            ///&lt; array (ordered collection of values)\n    string,           ///&lt; string value\n    boolean,          ///&lt; boolean value\n    number_integer,   ///&lt; number value (signed integer)\n    number_unsigned,  ///&lt; number value (unsigned integer)\n    number_float,     ///&lt; number value (floating-point)\n    binary,           ///&lt; binary array (ordered collection of bytes)\n    discarded         ///&lt; discarded by the parser callback function\n};\n\nunion json_value {\n  /// object (stored with pointer to save storage)\n  object_t *object;\n  /// array (stored with pointer to save storage)\n  array_t *array;\n  /// string (stored with pointer to save storage)\n  string_t *string;\n  /// binary (stored with pointer to save storage)\n  binary_t *binary;\n  /// boolean\n  boolean_t boolean;\n  /// number (integer)\n  number_integer_t number_integer;\n  /// number (unsigned integer)\n  number_unsigned_t number_unsigned;\n  /// number (floating-point)\n  number_float_t number_float;\n};\n</code></pre>"},{"location":"home/architecture/#parsing-inputs-deserialization","title":"Parsing inputs (deserialization)","text":"<p>Input is read via input adapters that abstract a source with a common interface:</p> <pre><code>/// read a single character\nstd::char_traits&lt;char&gt;::int_type get_character() noexcept;\n\n/// read multiple characters to a destination buffer and\n/// returns the number of characters successfully read\ntemplate&lt;class T&gt;\nstd::size_t get_elements(T* dest, std::size_t count = 1);\n</code></pre> <p>List examples of input adapters.</p>"},{"location":"home/architecture/#sax-interface","title":"SAX Interface","text":"<p>TODO</p>"},{"location":"home/architecture/#writing-outputs-serialization","title":"Writing outputs (serialization)","text":"<p>Output is written via output adapters:</p> <pre><code>template&lt;typename T&gt;\nvoid write_character(CharType c);\n\ntemplate&lt;typename CharType&gt;\nvoid write_characters(const CharType* s, std::size_t length);\n</code></pre> <p>List examples of output adapters.</p>"},{"location":"home/architecture/#value-conversion","title":"Value conversion","text":"<pre><code>template&lt;class T&gt;\nvoid to_json(basic_json&amp; j, const T&amp; t);\n\ntemplate&lt;class T&gt;\nvoid from_json(const basic_json&amp; j, T&amp; t);\n</code></pre>"},{"location":"home/architecture/#additional-features","title":"Additional features","text":"<ul> <li>JSON Pointers</li> <li>Binary formats</li> <li>Custom base class</li> <li>Conversion macros</li> </ul>"},{"location":"home/architecture/#details-namespace","title":"Details namespace","text":"<ul> <li>C++ feature backports</li> </ul>"},{"location":"home/customers/","title":"Customers","text":"<p>The library is used in multiple projects, applications, operating systems, etc. The list below is not exhaustive, but the result of an internet search. If you know further customers of the library, please let me know.</p> <p></p>"},{"location":"home/customers/#space-exploration","title":"Space Exploration","text":"<ul> <li>Peregrine Lunar Lander Flight 01 - The library was used for payload management in the Peregrine Moon Lander, developed by Astrobotic Technology and launched as part of NASA's Commercial Lunar Payload Services (CLPS) program. After six days in orbit, the spacecraft was intentionally redirected into Earth's atmosphere, where it burned up over the Pacific Ocean on January 18, 2024.</li> </ul>"},{"location":"home/customers/#automotive","title":"Automotive","text":"<ul> <li>Alexa Auto SDK, a software development kit enabling the integration of Alexa into automotive systems</li> <li>Apollo, a framework for building autonomous driving systems</li> <li>Automotive Grade Linux (AGL), a collaborative open-source platform for automotive software development</li> <li>Genesis Motor (infotainment), a luxury automotive brand</li> <li>Hyundai (infotainment), a global automotive brand</li> <li>Kia (infotainment), a global automotive brand</li> <li>Mercedes-Benz Operating System (MB.OS), a core component of the vehicle software ecosystem from Mercedes-Benz</li> <li>Rivian (infotainment), an electric vehicle manufacturer</li> <li>Suzuki (infotainment), a global automotive and motorcycle manufacturer</li> </ul>"},{"location":"home/customers/#gaming-and-entertainment","title":"Gaming and Entertainment","text":"<ul> <li>Assassin's Creed: Mirage, a stealth-action game set in the Middle East, focusing on the journey of a young assassin with classic parkour and stealth mechanics</li> <li>Chasm: The Rift, a first-person shooter blending horror and adventure, where players navigate dark realms and battle monsters</li> <li>College Football 25, a college football simulation game featuring gameplay that mimics real-life college teams and competitions</li> <li>Concepts, a digital sketching app designed for creative professionals, offering flexible drawing tools for illustration, design, and brainstorming</li> <li>Depthkit, a tool for creating and capturing volumetric video, enabling immersive 3D experiences and interactive content</li> <li>IMG.LY, a platform offering creative tools and SDKs for integrating advanced image and video editing in applications</li> <li>LOOT, a tool for optimizing the load order of game plugins, commonly used in The Elder Scrolls and Fallout series</li> <li>Madden NFL 25, a sports simulation game capturing the excitement of American football with realistic gameplay and team management features</li> <li>Marne, an unofficial private server platform for hosting custom Battlefield 1 game experiences</li> <li>Minecraft, a popular sandbox video game</li> <li>NHL 22, a hockey simulation game offering realistic gameplay, team management, and various modes to enhance the hockey experience</li> <li>Pixelpart, a 2D animation and video compositing software that allows users to create animated graphics and visual effects with a focus on simplicity and ease of use</li> <li>Razer Cortex, a gaming performance optimizer and system booster designed to enhance the gaming experience</li> <li>Red Dead Redemption II, an open-world action-adventure game following an outlaw's story in the late 1800s, emphasizing deep storytelling and immersive gameplay</li> <li>Snapchat, a multimedia messaging and augmented reality app for communication and entertainment</li> <li>Tactics Ogre: Reborn, a tactical role-playing game featuring strategic battles and deep storytelling elements</li> <li>Throne and Liberty, an MMORPG that offers an expansive fantasy world with dynamic gameplay and immersive storytelling</li> <li>Unity Vivox, a communication service that enables voice and text chat functionality in multiplayer games developed with Unity</li> <li>Zool: Redimensioned, a modern reimagining of the classic platformer featuring fast-paced gameplay and vibrant environments</li> <li>immersivetech, a technology company focused on immersive experiences, providing tools and solutions for virtual and augmented reality applications</li> </ul>"},{"location":"home/customers/#consumer-electronics","title":"Consumer Electronics","text":"<ul> <li>Audinate, a provider of networked audio solutions specializing in Dante technology, which facilitates high-quality digital audio transport over IP networks</li> <li>Canon CanoScan LIDE, a series of flatbed scanners offering high-resolution image scanning for home and office use</li> <li>Canon PIXMA Printers, a line of all-in-one inkjet printers known for high-quality printing and wireless connectivity</li> <li>Cisco Webex Desk Camera, a video camera designed for professional-quality video conferencing and remote collaboration</li> <li>Philips Hue Personal Wireless Lighting, a smart lighting system for customizable and wireless home illumination</li> <li>Ray-Ban Meta Smart glasses, a pair of smart glasses designed for capturing photos and videos with integrated connectivity and social features</li> <li>Razer Synapse, a unified configuration software enabling hardware customization for Razer devices</li> <li>Siemens SINEMA Remote Connect, a remote connectivity solution for monitoring and managing industrial networks and devices securely</li> <li>Sony PlayStation 4, a gaming console developed by Sony that offers a wide range of games and multimedia entertainment features</li> <li>Sony Virtual Webcam Driver for Remote Camera, a software driver that enables the use of Sony cameras as virtual webcams for video conferencing and streaming</li> </ul>"},{"location":"home/customers/#operating-systems","title":"Operating Systems","text":"<ul> <li>Apple iOS and macOS, a family of operating systems developed by Apple, including iOS for mobile devices and macOS for desktop computers</li> <li>Google Fuchsia, an open-source operating system developed by Google, designed to be secure, updatable, and adaptable across various devices</li> <li>SerenityOS, an open-source operating system that aims to provide a simple and beautiful user experience with a focus on simplicity and elegance</li> <li>Yocto, a Linux-based build system for creating custom operating systems and software distributions, tailored for embedded devices and IoT applications</li> </ul>"},{"location":"home/customers/#development-tools-and-ides","title":"Development Tools and IDEs","text":"<ul> <li>Accentize SpectralBalance, an adaptive speech analysis tool designed to enhance audio quality by optimizing frequency balance in recordings</li> <li>Arm Compiler for Linux, a software development toolchain for compiling and optimizing applications on Arm-based Linux systems</li> <li>BBEdit, a professional text and code editor for macOS</li> <li>CoderPad, a collaborative coding platform that enables real-time code interviews and assessments for developers; the library is included in every CoderPad instance and can be accessed with a simple <code>#include \"json.hpp\"</code></li> <li>Compiler Explorer, a web-based tool that allows users to write, compile, and visualize the assembly output of code in various programming languages; the library is readily available and accessible with the directive <code>#include &lt;nlohmann/json.hpp&gt;</code>.</li> <li>GitHub CodeQL, a code analysis tool used for identifying security vulnerabilities and bugs in software through semantic queries</li> <li>Hex-Rays, a reverse engineering toolset for analyzing and decompiling binaries, primarily used for security research and vulnerability analysis</li> <li>ImHex, a hex editor designed for reverse engineering, providing advanced features for data analysis and manipulation</li> <li>Intel GPA Framework, a suite of cross-platform tools for capturing, analyzing, and optimizing graphics applications across different APIs</li> <li>Intopix, a provider of advanced image processing and compression solutions used in software development and AV workflows</li> <li>Java SE, the core Java platform that provides the libraries and runtime needed to build and run general-purpose Java applications</li> <li>MKVToolNix, a set of tools for creating, editing, and inspecting MKV (Matroska) multimedia container files</li> <li>Meta Yoga, a layout engine that facilitates flexible and efficient user interface design across multiple platforms</li> <li>NVIDIA Nsight Compute, a performance analysis tool for CUDA applications that provides detailed insights into GPU performance metrics</li> <li>Notepad++, a free source code editor that supports various programming languages</li> <li>OpenRGB, an open source RGB lighting control that doesn't depend on manufacturer software</li> <li>OpenTelemetry C++, a library for collecting and exporting observability data in C++, enabling developers to implement distributed tracing and metrics in their application</li> <li>Qt Creator, an IDE for developing applications using the Qt application framework</li> <li>Scanbot SDK, a software development kit (SDK) that provides tools for integrating advanced document scanning and barcode scanning capabilities into applications</li> </ul>"},{"location":"home/customers/#machine-learning-and-ai","title":"Machine Learning and AI","text":"<ul> <li>Apple Core ML Tools, a set of tools for converting and configuring machine learning models for deployment in Apple's Core ML framework</li> <li>Avular Mobile Robotics, a platform for developing and deploying mobile robotics solutions</li> <li>Google gemma.cpp, a lightweight C++ inference engine designed for running AI models from the Gemma family</li> <li>llama.cpp, a C++ library designed for efficient inference of large language models (LLMs), enabling streamlined integration into applications</li> <li>MLX, an array framework for machine learning on Apple Silicon</li> <li>Mozilla llamafile, a tool designed for distributing and executing large language models (LLMs) efficiently using a single file format</li> <li>NVIDIA ACE, a suite of real-time AI solutions designed for the development of interactive avatars and digital human applications, enabling scalable and sophisticated user interactions</li> <li>Peer, a platform offering personalized AI assistants for interactive learning and creative collaboration</li> <li>stable-diffusion.cpp, a C++ implementation of the Stable Diffusion image generation model</li> <li>TanvasTouch, a software development kit (SDK) that enables developers to create tactile experiences on touchscreens, allowing users to feel textures and physical sensations in a digital environment</li> <li>TensorFlow, a machine learning framework that facilitates the development and training of models, supporting data serialization and efficient data exchange between components</li> </ul>"},{"location":"home/customers/#scientific-research-and-analysis","title":"Scientific Research and Analysis","text":"<ul> <li>BLACK, a bounded linear temporal logic (LTL) satisfiability checker</li> <li>CERN Atlas Athena, a software framework used in the ATLAS experiment at the Large Hadron Collider (LHC) for performance monitoring</li> <li>ICU, the International Components for Unicode, a mature library for software globalization and multilingual support</li> <li>KAMERA, a platform for synchronized data collection and real-time deep learning to map marine species like polar bears and seals, aiding Arctic ecosystem research</li> <li>KiCad, a free and open-source software suite for electronic design automation</li> <li>Maple, a symbolic and numeric computing environment for advanced mathematical modeling and analysis</li> <li>MeVisLab, a software framework for medical image processing and visualization.</li> <li>OpenPMD API, a versatile programming interface for accessing and managing scientific data, designed to facilitate the efficient storage, retrieval, and sharing of simulation data across various applications and platforms</li> <li>ParaView, an open-source tool for large-scale data visualization and analysis across various scientific domains</li> <li>QGIS, a free and open-source geographic information system (GIS) application that allows users to create, edit, visualize, and analyze geospatial data across a variety of formats</li> <li>VTK, a software library for 3D computer graphics, image processing, and visualization</li> <li>VolView, a lightweight application for interactive visualization and analysis of 3D medical imaging data.</li> </ul>"},{"location":"home/customers/#business-and-productivity-software","title":"Business and Productivity Software","text":"<ul> <li>ArcGIS PRO, a desktop geographic information system (GIS) application developed by Esri for mapping and spatial analysis</li> <li>Autodesk Desktop, a software platform developed by Autodesk for creating and managing desktop applications and services</li> <li>Check Point, a cybersecurity company specializing in threat prevention and network security solutions, offering a range of products designed to protect enterprises from cyber threats and ensure data integrity</li> <li>Microsoft Office for Mac, a suite of productivity applications developed by Microsoft for macOS, including tools for word processing, spreadsheets, and presentations</li> <li>Microsoft Teams, a team collaboration application offering workspace chat and video conferencing, file storage, and integration of proprietary and third-party applications and services</li> <li>Nexthink Infinity, a digital employee experience management platform for monitoring and improving IT performance</li> <li>Sophos Connect Client, a secure VPN client from Sophos that allows remote users to connect to their corporate network, ensuring secure access to resources and data</li> <li>Stonebranch, a cloud-based cybersecurity solution that integrates backup, disaster recovery, and cybersecurity features to protect data and ensure business continuity for organizations</li> <li>Tablecruncher, a data analysis tool that allows users to import, analyze, and visualize spreadsheet data, offering interactive features for better insights and decision-making</li> <li>magicplan, a mobile application for creating floor plans and interior designs using augmented reality</li> </ul>"},{"location":"home/customers/#databases-and-big-data","title":"Databases and Big Data","text":"<ul> <li>ADIOS2, a data management framework designed for high-performance input and output operations</li> <li>Cribl Stream, a real-time data processing platform that enables organizations to collect, route, and transform observability data, enhancing visibility and insights into their systems</li> <li>DB Browser for SQLite, a visual open-source tool for creating, designing, and editing SQLite database files</li> <li>MySQL Connector/C++, a C++ library for connecting and interacting with MySQL databases</li> <li>MySQL NDB Cluster, a distributed database system that provides high availability and scalability for MySQL databases</li> <li>MySQL Shell, an advanced client and code editor for interacting with MySQL servers, supporting SQL, Python, and JavaScript</li> <li>PrestoDB, a distributed SQL query engine designed for large-scale data analytics, originally developed by Facebook</li> <li>ROOT Data Analysis Framework, an open-source data analysis framework widely used in high-energy physics and other fields for data processing and visualization</li> <li>WiredTiger, a high-performance storage engine for databases, offering support for compression, concurrency, and checkpointing</li> </ul>"},{"location":"home/customers/#simulation-and-modeling","title":"Simulation and Modeling","text":"<ul> <li>Arcturus HoloSuite, a software toolset for capturing, editing, and streaming volumetric video, featuring advanced compression technologies for high-quality 3D content creation</li> <li>azul, a fast and efficient 3D city model viewer designed for visualizing urban environments and spatial data</li> <li>Blender, a free and open-source 3D creation suite for modeling, animation, rendering, and more</li> <li>cpplot, a library for creating interactive graphs and charts in C++, which can be viewed in web browsers</li> <li>Foundry Nuke, a powerful node-based digital compositing and visual effects application used in film and television post-production</li> <li>GAMS, a high-performance mathematical modeling system for optimization and decision support</li> <li>Kitware SMTK, a software toolkit for managing simulation models and workflows in scientific and engineering applications</li> <li>M-Star, a computational fluid dynamics software for simulating and analyzing fluid flow</li> <li>MapleSim CAD Toolbox, a software extension for MapleSim that integrates CAD models, allowing users to import, manipulate, and analyze 3D CAD data within the MapleSim environment for enhanced modeling and simulation</li> <li>NVIDIA Omniverse, a platform for 3D content creation and collaboration that enables real-time simulations and interactive experiences across various industries</li> <li>Pixar Renderman, a photorealistic 3D rendering software developed by Pixar, widely used in the film industry for creating high-quality visual effects and animations</li> <li>ROS - Robot Operating System, a set of software libraries and tools that assist in developing robot applications</li> <li>UBS, a multinational financial services and banking company</li> </ul>"},{"location":"home/customers/#enterprise-and-cloud-applications","title":"Enterprise and Cloud Applications","text":"<ul> <li>Acronis Cyber Protect Cloud, an all-in-one data protection solution that combines backup, disaster recovery, and cybersecurity to safeguard business data from threats like ransomware</li> <li>Baereos, a backup solution that provides data protection and recovery options for various environments, including physical and virtual systems</li> <li>Bitdefender Home Scanner, a tool from Bitdefender that scans devices for malware and security threats, providing a safeguard against potential online dangers</li> <li>Citrix Provisioning, a solution that streamlines the delivery of virtual desktops and applications by allowing administrators to manage and provision resources efficiently across multiple environments</li> <li>Citrix Virtual Apps and Desktops, a solution from Citrix that delivers virtual apps and desktops</li> <li>Cyberarc, a security solution that specializes in privileged access management, enabling organizations to control and monitor access to critical systems and data, thereby enhancing overall cybersecurity posture</li> <li>Egnyte Desktop, a secure cloud storage solution designed for businesses, enabling file sharing, collaboration, and data management across teams while ensuring compliance and data protection</li> <li>Elster, a digital platform developed by German tax authorities for secure and efficient electronic tax filing and management using secunet protect4use</li> <li>Ethereum Solidity, a high-level, object-oriented programming language designed for implementing smart contracts on the Ethereum platform</li> <li>Inciga, a monitoring tool for IT infrastructure, designed to provide insights into system performance and availability through customizable dashboards and alerts</li> <li>Intel Accelerator Management Daemon for VMware ESXi, a management tool designed for monitoring and controlling Intel hardware accelerators within VMware ESXi environments, optimizing performance and resource allocation</li> <li>Juniper Identity Management Service</li> <li>Microsoft Azure IoT SDK, a collection of tools and libraries to help developers connect, build, and deploy Internet of Things (IoT) solutions on the Azure cloud platform</li> <li>Microsoft WinGet, a command-line utility included in the Windows Package Manager</li> <li>plexusAV, a high-performance AV-over-IP transceiver device capable of video encoding and decoding using the IPMX standard</li> <li>Pointr, a platform for indoor positioning and navigation solutions, offering tools and SDKs for developers to create location-based applications</li> <li>secunet protect4use, a secure, passwordless multifactor authentication solution that transforms smartphones into digital keyrings, ensuring high security for online services and digital identities</li> <li>Sencore MRD 7000, a professional multi-channel receiver and decoder supporting UHD and HD stream decoding</li> </ul>"},{"location":"home/design_goals/","title":"Design goals","text":"<p>There are myriads of JSON libraries out there, and each may even have its reason to exist. Our class had these design goals:</p> <ul> <li> <p>Intuitive syntax. In languages such as Python, JSON feels like a first-class data type. We used all the operator magic of modern C++ to achieve the same feeling in your code.</p> </li> <li> <p>Trivial integration. Our whole code consists of a single header file <code>json.hpp</code>. That's it. No library, no subproject, no dependencies, no complex build system. The class is written in vanilla C++11. All in all, everything should require no adjustment of your compiler flags or project settings.</p> </li> <li> <p>Serious testing. Our class is heavily unit-tested and covers 100% of the code, including all exceptional behavior. Furthermore, we checked with Valgrind and the Clang Sanitizers that there are no memory leaks. Google OSS-Fuzz additionally runs fuzz tests against all parsers 24/7, effectively executing billions of tests so far. To maintain high quality, the project is following the Core Infrastructure Initiative (CII) best practices.</p> </li> </ul> <p>Other aspects were not so important to us:</p> <ul> <li> <p>Memory efficiency. Each JSON object has an overhead of one pointer (the maximal size of a union) and one enumeration element (1 byte). The default generalization uses the following C++ data types: <code>std::string</code> for strings, <code>int64_t</code>, <code>uint64_t</code> or <code>double</code> for numbers, <code>std::map</code> for objects, <code>std::vector</code> for arrays, and <code>bool</code> for Booleans. However, you can template the generalized class <code>basic_json</code> to your needs.</p> </li> <li> <p>Speed. There are certainly faster JSON libraries out there. However, if your goal is to speed up your development by adding JSON support with a single header, then this library is the way to go. If you know how to use a <code>std::vector</code> or <code>std::map</code>, you are already set.</p> </li> </ul> <p>See the contribution guidelines for more information.</p>"},{"location":"home/exceptions/","title":"Exceptions","text":""},{"location":"home/exceptions/#overview","title":"Overview","text":""},{"location":"home/exceptions/#base-type","title":"Base type","text":"<p>All exceptions inherit from class <code>json::exception</code> (which in turn inherits from <code>std::exception</code>). It is used as the base class for all exceptions thrown by the <code>basic_json</code> class. This class can hence be used as \"wildcard\" to catch exceptions.</p> <pre><code>classDiagram\n  direction LR\n    class `std::exception` {\n        &lt;&lt;interface&gt;&gt;\n    }\n\n    class `json::exception` {\n        +const int id\n        +const char* what() const\n    }\n\n    class `json::parse_error` {\n        +const std::size_t byte\n    }\n\n    class `json::invalid_iterator`\n    class `json::type_error`\n    class `json::out_of_range`\n    class `json::other_error`\n\n    `std::exception` &lt;|-- `json::exception`\n    `json::exception` &lt;|-- `json::parse_error`\n    `json::exception` &lt;|-- `json::invalid_iterator`\n    `json::exception` &lt;|-- `json::type_error`\n    `json::exception` &lt;|-- `json::out_of_range`\n    `json::exception` &lt;|-- `json::other_error`</code></pre>"},{"location":"home/exceptions/#switch-off-exceptions","title":"Switch off exceptions","text":"<p>Exceptions are used widely within the library. They can, however, be switched off with either using the compiler flag <code>-fno-exceptions</code> or by defining the symbol <code>JSON_NOEXCEPTION</code>. In this case, exceptions are replaced by <code>abort()</code> calls. You can further control this behavior by defining <code>JSON_THROW_USER</code> (overriding <code>throw</code>), <code>JSON_TRY_USER</code> (overriding <code>try</code>), and <code>JSON_CATCH_USER</code> (overriding <code>catch</code>).</p> <p>Note that <code>JSON_THROW_USER</code> should leave the current scope (e.g., by throwing or aborting), as continuing after it may yield undefined behavior.</p> Example <p>The code below switches off exceptions and creates a log entry with a detailed error message in case of errors.</p> <pre><code>#include &lt;iostream&gt;\n\n#define JSON_TRY_USER if(true)\n#define JSON_CATCH_USER(exception) if(false)\n#define JSON_THROW_USER(exception)                           \\\n    {std::clog &lt;&lt; \"Error in \" &lt;&lt; __FILE__ &lt;&lt; \":\" &lt;&lt; __LINE__ \\\n               &lt;&lt; \" (function \" &lt;&lt; __FUNCTION__ &lt;&lt; \") - \"    \\\n               &lt;&lt; (exception).what() &lt;&lt; std::endl;           \\\n     std::abort();}\n\n#include &lt;nlohmann/json.hpp&gt;\n</code></pre> <p>Note the explanatory <code>what()</code> string of exceptions is not available for MSVC if exceptions are disabled, see #2824.</p> <p>See documentation of <code>JSON_TRY_USER</code>, <code>JSON_CATCH_USER</code> and <code>JSON_THROW_USER</code> for more information.</p>"},{"location":"home/exceptions/#extended-diagnostic-messages","title":"Extended diagnostic messages","text":"<p>Exceptions in the library are thrown in the local context of the JSON value they are detected. This makes detailed diagnostics messages, and hence debugging, difficult.</p> Example <pre><code>#include &lt;iostream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    json j;\n    j[\"address\"][\"street\"] = \"Fake Street\";\n    j[\"address\"][\"housenumber\"] = \"12\";\n\n    try\n    {\n        int housenumber = j[\"address\"][\"housenumber\"];\n    }\n    catch (const json::exception&amp; e)\n    {\n        std::cout &lt;&lt; e.what() &lt;&lt; '\\n';\n    }\n}\n</code></pre> <p>Output:</p> <pre><code>[json.exception.type_error.302] type must be number, but is string\n</code></pre> <p>This exception can be hard to debug if storing the value <code>\"12\"</code> and accessing it is further apart.</p> <p>To create better diagnostics messages, each JSON value needs a pointer to its parent value such that a global context (i.e., a path from the root value to the value that led to the exception) can be created. That global context is provided as JSON Pointer.</p> <p>As this global context comes at the price of storing one additional pointer per JSON value and runtime overhead to maintain the parent relation, extended diagnostics are disabled by default. They can, however, be enabled by defining the preprocessor symbol <code>JSON_DIAGNOSTICS</code> to <code>1</code> before including <code>json.hpp</code>.</p> Example <pre><code>#include &lt;iostream&gt;\n\n# define JSON_DIAGNOSTICS 1\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    json j;\n    j[\"address\"][\"street\"] = \"Fake Street\";\n    j[\"address\"][\"housenumber\"] = \"12\";\n\n    try\n    {\n        int housenumber = j[\"address\"][\"housenumber\"];\n    }\n    catch (const json::exception&amp; e)\n    {\n        std::cout &lt;&lt; e.what() &lt;&lt; '\\n';\n    }\n}\n</code></pre> <p>Output:</p> <pre><code>[json.exception.type_error.302] (/address/housenumber) type must be number, but is string\n</code></pre> <p>Now the exception message contains a JSON Pointer <code>/address/housenumber</code> that indicates which value has the wrong type.</p> <p>See documentation of <code>JSON_DIAGNOSTICS</code> for more information.</p>"},{"location":"home/exceptions/#parse-errors","title":"Parse errors","text":"<p>The library throws this exception when a parse error occurs. Parse errors can occur during the deserialization of JSON text, CBOR, MessagePack, as well as when using JSON Patch.</p> <p>Exceptions have ids 1xx.</p> <p>Byte index</p> <p>Member <code>byte</code> holds the byte index of the last read character in the input file.</p> <p>For an input with n bytes, 1 is the index of the first character and n+1 is the index of the terminating null byte or the end of file. This also holds true when reading a byte vector (CBOR or MessagePack).</p> Example <p>The following code shows how a <code>parse_error</code> exception can be caught.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    try\n    {\n        // parsing input with a syntax error\n        json::parse(\"[1,2,3,]\");\n    }\n    catch (const json::parse_error&amp; e)\n    {\n        // output exception information\n        std::cout &lt;&lt; \"message: \" &lt;&lt; e.what() &lt;&lt; '\\n'\n                  &lt;&lt; \"exception id: \" &lt;&lt; e.id &lt;&lt; '\\n'\n                  &lt;&lt; \"byte position of error: \" &lt;&lt; e.byte &lt;&lt; std::endl;\n    }\n}\n</code></pre> <p>Output:</p> <pre><code>message: [json.exception.parse_error.101] parse error at line 1, column 8: syntax error while parsing value - unexpected ']'; expected '[', '{', or a literal\nexception id: 101\nbyte position of error: 8\n</code></pre>"},{"location":"home/exceptions/#jsonexceptionparse_error101","title":"json.exception.parse_error.101","text":"<p>This error indicates a syntax error while deserializing a JSON text. The error message describes that an unexpected token (character) was encountered, and the member <code>byte</code> indicates the error position.</p> <p>Example message</p> <p>Input ended prematurely:</p> <pre><code>[json.exception.parse_error.101] parse error at 2: unexpected end of input; expected string literal\n</code></pre> <p>No input:</p> <pre><code>[json.exception.parse_error.101] parse error at line 1, column 1: attempting to parse an empty input; check that your input string or stream contains the expected JSON\n</code></pre> <p>Control character was not escaped:</p> <pre><code>[json.exception.parse_error.101] parse error at line 1, column 2: syntax error while parsing value - invalid string: control character U+0009 (HT) must be escaped to \\u0009 or \\\\; last read: '\"&lt;U+0009&gt;'\"\n</code></pre> <p>String was not closed:</p> <pre><code>[json.exception.parse_error.101] parse error at line 1, column 2: syntax error while parsing value - invalid string: missing closing quote; last read: '\"'\n</code></pre> <p>Invalid number format:</p> <pre><code>[json.exception.parse_error.101] parse error at line 1, column 3: syntax error while parsing value - invalid number; expected '+', '-', or digit after exponent; last read: '1E'\n</code></pre> <p><code>\\u</code> was not be followed by four hex digits:</p> <pre><code>[json.exception.parse_error.101] parse error at line 1, column 6: syntax error while parsing value - invalid string: '\\u' must be followed by 4 hex digits; last read: '\"\\u01\"'\n</code></pre> <p>Invalid UTF-8 surrogate pair:</p> <pre><code>[json.exception.parse_error.101] parse error at line 1, column 13: syntax error while parsing value - invalid string: surrogate U+DC00..U+DFFF must follow U+D800..U+DBFF; last read: '\"\\uD7FF\\uDC00'\"\n</code></pre> <p>Invalid UTF-8 byte:</p> <pre><code>[json.exception.parse_error.101] parse error at line 3, column 24: syntax error while parsing value - invalid string: ill-formed UTF-8 byte; last read: '\"vous \\352t'\n</code></pre> <p>Tip</p> <ul> <li>Make sure the input is correctly read. Try to write the input to standard output to check if, for instance, the input file was successfully opened.</li> <li>Paste the input to a JSON validator like http://jsonlint.com or a tool like jq.</li> </ul>"},{"location":"home/exceptions/#jsonexceptionparse_error102","title":"json.exception.parse_error.102","text":"<p>JSON uses the <code>\\uxxxx</code> format to describe Unicode characters. Code points above 0xFFFF are split into two <code>\\uxxxx</code> entries (\"surrogate pairs\"). This error indicates that the surrogate pair is incomplete or contains an invalid code point.</p> <p>Example message</p> <pre><code>parse error at 14: missing or wrong low surrogate\n</code></pre> <p>Note</p> <p>This exception is not used any more. Instead json.exception.parse_error.101 with a more detailed description is used.</p>"},{"location":"home/exceptions/#jsonexceptionparse_error103","title":"json.exception.parse_error.103","text":"<p>Unicode supports code points up to 0x10FFFF. Code points above 0x10FFFF are invalid.</p> <p>Example message</p> <pre><code>parse error: code points above 0x10FFFF are invalid\n</code></pre> <p>Note</p> <p>This exception is not used any more. Instead json.exception.parse_error.101 with a more detailed description is used.</p>"},{"location":"home/exceptions/#jsonexceptionparse_error104","title":"json.exception.parse_error.104","text":"<p>RFC 6902 requires a JSON Patch document to be a JSON document that represents an array of objects.</p> <p>Example message</p> <pre><code>[json.exception.parse_error.104] parse error: JSON patch must be an array of objects\n</code></pre>"},{"location":"home/exceptions/#jsonexceptionparse_error105","title":"json.exception.parse_error.105","text":"<p>An operation of a JSON Patch document must contain exactly one \"op\" member, whose value indicates the operation to perform. Its value must be one of \"add\", \"remove\", \"replace\", \"move\", \"copy\", or \"test\"; other values are errors.</p> <p>Example message</p> <p><pre><code>[json.exception.parse_error.105] parse error: operation 'add' must have member 'value'\n</code></pre> <pre><code>[json.exception.parse_error.105] parse error: operation 'copy' must have string member 'from'\n</code></pre> <pre><code>[json.exception.parse_error.105] parse error: operation value 'foo' is invalid\n</code></pre></p>"},{"location":"home/exceptions/#jsonexceptionparse_error106","title":"json.exception.parse_error.106","text":"<p>An array index in a JSON Pointer (RFC 6901) may be <code>0</code> or any number without a leading <code>0</code>.</p> <p>Example message</p> <pre><code>[json.exception.parse_error.106] parse error: array index '01' must not begin with '0'\n</code></pre>"},{"location":"home/exceptions/#jsonexceptionparse_error107","title":"json.exception.parse_error.107","text":"<p>A JSON Pointer must be a Unicode string containing a sequence of zero or more reference tokens, each prefixed by a <code>/</code> character.</p> <p>Example message</p> <pre><code>[json.exception.parse_error.107] parse error at byte 1: JSON pointer must be empty or begin with '/' - was: 'foo'\n</code></pre>"},{"location":"home/exceptions/#jsonexceptionparse_error108","title":"json.exception.parse_error.108","text":"<p>In a JSON Pointer, only <code>~0</code> and <code>~1</code> are valid escape sequences.</p> <p>Example message</p> <pre><code>[json.exception.parse_error.108] parse error: escape character '~' must be followed with '0' or '1'\n</code></pre>"},{"location":"home/exceptions/#jsonexceptionparse_error109","title":"json.exception.parse_error.109","text":"<p>A JSON Pointer array index must be a number.</p> <p>Example messages</p> <p><pre><code>[json.exception.parse_error.109] parse error: array index 'one' is not a number\n</code></pre> <pre><code>[json.exception.parse_error.109] parse error: array index '+1' is not a number\n</code></pre></p>"},{"location":"home/exceptions/#jsonexceptionparse_error110","title":"json.exception.parse_error.110","text":"<p>When parsing CBOR or MessagePack, the byte vector ends before the complete value has been read.</p> <p>Example message</p> <p><pre><code>[json.exception.parse_error.110] parse error at byte 5: syntax error while parsing CBOR string: unexpected end of input\n</code></pre> <pre><code>[json.exception.parse_error.110] parse error at byte 2: syntax error while parsing UBJSON value: expected end of input; last byte: 0x5A\n</code></pre></p>"},{"location":"home/exceptions/#jsonexceptionparse_error112","title":"json.exception.parse_error.112","text":"<p>An unexpected byte was read in a binary format or length information is invalid (BSON).</p> <p>Example messages</p> <p><pre><code>[json.exception.parse_error.112] parse error at byte 1: syntax error while parsing CBOR value: invalid byte: 0x1C\n</code></pre> <pre><code>[json.exception.parse_error.112] parse error at byte 1: syntax error while parsing MessagePack value: invalid byte: 0xC1\n</code></pre> <pre><code>[json.exception.parse_error.112] parse error at byte 4: syntax error while parsing BJData size: expected '#' after type information; last byte: 0x02\n</code></pre> <pre><code>[json.exception.parse_error.112] parse error at byte 4: syntax error while parsing UBJSON size: expected '#' after type information; last byte: 0x02\n</code></pre> <pre><code>[json.exception.parse_error.112] parse error at byte 10: syntax error while parsing BSON string: string length must be at least 1, is -2147483648\n</code></pre> <pre><code>[json.exception.parse_error.112] parse error at byte 15: syntax error while parsing BSON binary: byte array length cannot be negative, is -1\n</code></pre></p>"},{"location":"home/exceptions/#jsonexceptionparse_error113","title":"json.exception.parse_error.113","text":"<p>While parsing a map key, a value that is not a string has been read.</p> <p>Example messages</p> <p><pre><code>[json.exception.parse_error.113] parse error at byte 2: syntax error while parsing CBOR string: expected length specification (0x60-0x7B) or indefinite string type (0x7F); last byte: 0xFF\n</code></pre> <pre><code>[json.exception.parse_error.113] parse error at byte 2: syntax error while parsing MessagePack string: expected length specification (0xA0-0xBF, 0xD9-0xDB); last byte: 0xFF\n</code></pre> <pre><code>[json.exception.parse_error.113] parse error at byte 2: syntax error while parsing UBJSON char: byte after 'C' must be in range 0x00..0x7F; last byte: 0x82\n</code></pre></p>"},{"location":"home/exceptions/#jsonexceptionparse_error114","title":"json.exception.parse_error.114","text":"<p>The parsing of the corresponding BSON record type is not implemented (yet).</p> <p>Example message</p> <pre><code>[json.exception.parse_error.114] parse error at byte 5: Unsupported BSON record type 0xFF\n</code></pre>"},{"location":"home/exceptions/#jsonexceptionparse_error115","title":"json.exception.parse_error.115","text":"<p>A UBJSON high-precision number could not be parsed.</p> <p>Example message</p> <pre><code>[json.exception.parse_error.115] parse error at byte 5: syntax error while parsing UBJSON high-precision number: invalid number text: 1A\n</code></pre>"},{"location":"home/exceptions/#iterator-errors","title":"Iterator errors","text":"<p>This exception is thrown if iterators passed to a library function do not match the expected semantics.</p> <p>Exceptions have ids 2xx.</p> Example <p>The following code shows how an <code>invalid_iterator</code> exception can be caught.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    try\n    {\n        // calling iterator::key() on non-object iterator\n        json j = \"string\";\n        json::iterator it = j.begin();\n        auto k = it.key();\n    }\n    catch (const json::invalid_iterator&amp; e)\n    {\n        // output exception information\n        std::cout &lt;&lt; \"message: \" &lt;&lt; e.what() &lt;&lt; '\\n'\n                  &lt;&lt; \"exception id: \" &lt;&lt; e.id &lt;&lt; std::endl;\n    }\n}\n</code></pre> <p>Output:</p> <pre><code>message: [json.exception.invalid_iterator.207] cannot use key() for non-object iterators\nexception id: 207\n</code></pre>"},{"location":"home/exceptions/#jsonexceptioninvalid_iterator201","title":"json.exception.invalid_iterator.201","text":"<p>The iterators passed to constructor <code>basic_json(InputIT first, InputIT last)</code> are not compatible, meaning they do not belong to the same container. Therefore, the range (<code>first</code>, <code>last</code>) is invalid.</p> <p>Example message</p> <pre><code>[json.exception.invalid_iterator.201] iterators are not compatible\n</code></pre>"},{"location":"home/exceptions/#jsonexceptioninvalid_iterator202","title":"json.exception.invalid_iterator.202","text":"<p>In the erase or insert function, the passed iterator <code>pos</code> does not belong to the JSON value for which the function was called. It hence does not define a valid position for the deletion/insertion.</p> <p>Example messages</p> <p><pre><code>[json.exception.invalid_iterator.202] iterator does not fit current value\n</code></pre> <pre><code>[json.exception.invalid_iterator.202] iterators first and last must point to objects\n</code></pre></p>"},{"location":"home/exceptions/#jsonexceptioninvalid_iterator203","title":"json.exception.invalid_iterator.203","text":"<p>Either iterator passed to function <code>erase(IteratorType first, IteratorType last</code>) does not belong to the JSON value from which values shall be erased. It hence does not define a valid range to delete values from.</p> <p>Example message</p> <pre><code>[json.exception.invalid_iterator.203] iterators do not fit current value\n</code></pre>"},{"location":"home/exceptions/#jsonexceptioninvalid_iterator204","title":"json.exception.invalid_iterator.204","text":"<p>When an iterator range for a primitive type (number, boolean, or string) is passed to a constructor or an erase function, this range has to be exactly (<code>begin(),</code> <code>end()),</code> because this is the only way the single stored value is expressed. All other ranges are invalid.</p> <p>Example message</p> <pre><code>[json.exception.invalid_iterator.204] iterators out of range\n</code></pre>"},{"location":"home/exceptions/#jsonexceptioninvalid_iterator205","title":"json.exception.invalid_iterator.205","text":"<p>When an iterator for a primitive type (number, boolean, or string) is passed to an erase function, the iterator has to be the <code>begin()</code> iterator, because it is the only way to address the stored value. All other iterators are invalid.</p> <p>Example message</p> <pre><code>[json.exception.invalid_iterator.205] iterator out of range\n</code></pre>"},{"location":"home/exceptions/#jsonexceptioninvalid_iterator206","title":"json.exception.invalid_iterator.206","text":"<p>The iterators passed to constructor <code>basic_json(InputIT first, InputIT last)</code> belong to a JSON null value and hence to not define a valid range.</p> <p>Example message</p> <pre><code>[json.exception.invalid_iterator.206] cannot construct with iterators from null\n</code></pre>"},{"location":"home/exceptions/#jsonexceptioninvalid_iterator207","title":"json.exception.invalid_iterator.207","text":"<p>The <code>key()</code> member function can only be used on iterators belonging to a JSON object, because other types do not have a concept of a key.</p> <p>Example message</p> <pre><code>[json.exception.invalid_iterator.207] cannot use key() for non-object iterators\n</code></pre>"},{"location":"home/exceptions/#jsonexceptioninvalid_iterator208","title":"json.exception.invalid_iterator.208","text":"<p>The <code>operator[]</code> to specify a concrete offset cannot be used on iterators belonging to a JSON object, because JSON objects are unordered.</p> <p>Example message</p> <pre><code>[json.exception.invalid_iterator.208] cannot use operator[] for object iterators\n</code></pre>"},{"location":"home/exceptions/#jsonexceptioninvalid_iterator209","title":"json.exception.invalid_iterator.209","text":"<p>The offset operators (<code>+</code>, <code>-</code>, <code>+=</code>, <code>-=</code>) cannot be used on iterators belonging to a JSON object, because JSON objects are unordered.</p> <p>Example message</p> <pre><code>[json.exception.invalid_iterator.209] cannot use offsets with object iterators\n</code></pre>"},{"location":"home/exceptions/#jsonexceptioninvalid_iterator210","title":"json.exception.invalid_iterator.210","text":"<p>The iterator range passed to the insert function is not compatible, meaning they do not belong to the same container. Therefore, the range (<code>first</code>, <code>last</code>) is invalid.</p> <p>Example message</p> <pre><code>[json.exception.invalid_iterator.210] iterators do not fit\n</code></pre>"},{"location":"home/exceptions/#jsonexceptioninvalid_iterator211","title":"json.exception.invalid_iterator.211","text":"<p>The iterator range passed to the insert function must not be a subrange of the container to insert to.</p> <p>Example message</p> <pre><code>[json.exception.invalid_iterator.211] passed iterators may not belong to container\n</code></pre>"},{"location":"home/exceptions/#jsonexceptioninvalid_iterator212","title":"json.exception.invalid_iterator.212","text":"<p>When two iterators are compared, they must belong to the same container.</p> <p>Example message</p> <pre><code>[json.exception.invalid_iterator.212] cannot compare iterators of different containers\n</code></pre>"},{"location":"home/exceptions/#jsonexceptioninvalid_iterator213","title":"json.exception.invalid_iterator.213","text":"<p>The order of object iterators cannot be compared, because JSON objects are unordered.</p> <p>Example message</p> <pre><code>[json.exception.invalid_iterator.213] cannot compare order of object iterators\n</code></pre>"},{"location":"home/exceptions/#jsonexceptioninvalid_iterator214","title":"json.exception.invalid_iterator.214","text":"<p>Cannot retrieve value from iterator: The iterator either refers to a null value, or it refers to a primitive type (number, boolean, or string), but does not match the iterator returned by <code>begin()</code>.</p> <p>Example message</p> <pre><code>[json.exception.invalid_iterator.214] cannot get value\n</code></pre>"},{"location":"home/exceptions/#type-errors","title":"Type errors","text":"<p>This exception is thrown in case of a type error; that is, a library function is executed on a JSON value whose type does not match the expected semantics.</p> <p>Exceptions have ids 3xx.</p> Example <p>The following code shows how a <code>type_error</code> exception can be caught.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    try\n    {\n        // calling push_back() on a string value\n        json j = \"string\";\n        j.push_back(\"another string\");\n    }\n    catch (const json::type_error&amp; e)\n    {\n        // output exception information\n        std::cout &lt;&lt; \"message: \" &lt;&lt; e.what() &lt;&lt; '\\n'\n                  &lt;&lt; \"exception id: \" &lt;&lt; e.id &lt;&lt; std::endl;\n    }\n}\n</code></pre> <p>Output:</p> <pre><code>message: [json.exception.type_error.308] cannot use push_back() with string\nexception id: 308\n</code></pre>"},{"location":"home/exceptions/#jsonexceptiontype_error301","title":"json.exception.type_error.301","text":"<p>To create an object from an initializer list, the initializer list must consist only of a list of pairs whose first element is a string. When this constraint is violated, an array is created instead.</p> <p>Example message</p> <pre><code>[json.exception.type_error.301] cannot create object from initializer list\n</code></pre>"},{"location":"home/exceptions/#jsonexceptiontype_error302","title":"json.exception.type_error.302","text":"<p>During implicit or explicit value conversion, the JSON type must be compatible with the target type. For instance, a JSON string can only be converted into string types, but not into numbers or boolean types.</p> <p>Example messages</p> <p><pre><code>[json.exception.type_error.302] type must be object, but is null\n</code></pre> <pre><code>[json.exception.type_error.302] type must be string, but is object\n</code></pre></p>"},{"location":"home/exceptions/#jsonexceptiontype_error303","title":"json.exception.type_error.303","text":"<p>To retrieve a reference to a value stored in a <code>basic_json</code> object with <code>get_ref</code>, the type of the reference must match the value type. For instance, for a JSON array, the <code>ReferenceType</code> must be <code>array_t &amp;</code>.</p> <p>Example messages</p> <p><pre><code>[json.exception.type_error.303] incompatible ReferenceType for get_ref, actual type is object\n</code></pre> <pre><code>[json.exception.type_error.303] incompatible ReferenceType for get_ref, actual type is number\"\n</code></pre></p>"},{"location":"home/exceptions/#jsonexceptiontype_error304","title":"json.exception.type_error.304","text":"<p>The <code>at()</code> member functions can only be executed for certain JSON types.</p> <p>Example messages</p> <p><pre><code>[json.exception.type_error.304] cannot use at() with string\n</code></pre> <pre><code>[json.exception.type_error.304] cannot use at() with number\n</code></pre></p>"},{"location":"home/exceptions/#jsonexceptiontype_error305","title":"json.exception.type_error.305","text":"<p>The <code>operator[]</code> member functions can only be executed for certain JSON types.</p> <p>Example messages</p> <p><pre><code>[json.exception.type_error.305] cannot use operator[] with a string argument with array\n</code></pre> <pre><code>[json.exception.type_error.305] cannot use operator[] with a numeric argument with object\n</code></pre></p>"},{"location":"home/exceptions/#jsonexceptiontype_error306","title":"json.exception.type_error.306","text":"<p>The <code>value()</code> member functions can only be executed for certain JSON types.</p> <p>Example message</p> <pre><code>[json.exception.type_error.306] cannot use value() with number\n</code></pre>"},{"location":"home/exceptions/#jsonexceptiontype_error307","title":"json.exception.type_error.307","text":"<p>The <code>erase()</code> member functions can only be executed for certain JSON types.</p> <p>Example message</p> <pre><code>[json.exception.type_error.307] cannot use erase() with string\n</code></pre>"},{"location":"home/exceptions/#jsonexceptiontype_error308","title":"json.exception.type_error.308","text":"<p>The <code>push_back()</code> and <code>operator+=</code> member functions can only be executed for certain JSON types.</p> <p>Example message</p> <pre><code>[json.exception.type_error.308] cannot use push_back() with string\n</code></pre>"},{"location":"home/exceptions/#jsonexceptiontype_error309","title":"json.exception.type_error.309","text":"<p>The <code>insert()</code> member functions can only be executed for certain JSON types.</p> <p>Example messages</p> <p><pre><code>[json.exception.type_error.309] cannot use insert() with array\n</code></pre> <pre><code>[json.exception.type_error.309] cannot use insert() with number\n</code></pre></p>"},{"location":"home/exceptions/#jsonexceptiontype_error310","title":"json.exception.type_error.310","text":"<p>The <code>swap()</code> member functions can only be executed for certain JSON types.</p> <p>Example message</p> <pre><code>[json.exception.type_error.310] cannot use swap() with number\n</code></pre>"},{"location":"home/exceptions/#jsonexceptiontype_error311","title":"json.exception.type_error.311","text":"<p>The <code>emplace()</code> and <code>emplace_back()</code> member functions can only be executed for certain JSON types.</p> <p>Example messages</p> <p><pre><code>[json.exception.type_error.311] cannot use emplace() with number\n</code></pre> <pre><code>[json.exception.type_error.311] cannot use emplace_back() with number\n</code></pre></p>"},{"location":"home/exceptions/#jsonexceptiontype_error312","title":"json.exception.type_error.312","text":"<p>The <code>update()</code> member functions can only be executed for certain JSON types.</p> <p>Example message</p> <pre><code>[json.exception.type_error.312] cannot use update() with array\n</code></pre>"},{"location":"home/exceptions/#jsonexceptiontype_error313","title":"json.exception.type_error.313","text":"<p>The <code>unflatten</code> function converts an object whose keys are JSON Pointers back into an arbitrary nested JSON value. The JSON Pointers must not overlap, because then the resulting value would not be well-defined.</p> <p>Example message</p> <pre><code>[json.exception.type_error.313] invalid value to unflatten\n</code></pre>"},{"location":"home/exceptions/#jsonexceptiontype_error314","title":"json.exception.type_error.314","text":"<p>The <code>unflatten</code> function only works for an object whose keys are JSON Pointers.</p> <p>Example message</p> <p>Calling <code>unflatten()</code> on an array <code>[1,2,3]</code>:</p> <pre><code>[json.exception.type_error.314] only objects can be unflattened\n</code></pre>"},{"location":"home/exceptions/#jsonexceptiontype_error315","title":"json.exception.type_error.315","text":"<p>The <code>unflatten()</code> function only works for an object whose keys are JSON Pointers and whose values are primitive.</p> <p>Example message</p> <p>Calling <code>unflatten()</code> on an object <code>{\"/1\", [1,2,3]}</code>:</p> <pre><code>[json.exception.type_error.315] values in object must be primitive\n</code></pre>"},{"location":"home/exceptions/#jsonexceptiontype_error316","title":"json.exception.type_error.316","text":"<p>The <code>dump()</code> function only works with UTF-8 encoded strings; that is, if you assign a <code>std::string</code> to a JSON value, make sure it is UTF-8 encoded.</p> <p>Example message</p> <p>Calling <code>dump()</code> on a JSON value containing an ISO 8859-1 encoded string: <pre><code>[json.exception.type_error.316] invalid UTF-8 byte at index 15: 0x6F\n</code></pre></p> <p>Tip</p> <ul> <li>Store the source file with UTF-8 encoding.</li> <li>Pass an error handler as last parameter to the <code>dump()</code> function to avoid this exception:<ul> <li><code>json::error_handler_t::replace</code> will replace invalid bytes sequences with <code>U+FFFD</code> </li> <li><code>json::error_handler_t::ignore</code> will silently ignore invalid byte sequences</li> </ul> </li> </ul>"},{"location":"home/exceptions/#jsonexceptiontype_error317","title":"json.exception.type_error.317","text":"<p>The dynamic type of the object cannot be represented in the requested serialization format (e.g., a raw <code>true</code> or <code>null</code> JSON object cannot be serialized to BSON)</p> <p>Example messages</p> <p>Serializing <code>null</code> to BSON: <pre><code>[json.exception.type_error.317] to serialize to BSON, top-level type must be object, but is null\n</code></pre> Serializing <code>[1,2,3]</code> to BSON: <pre><code>[json.exception.type_error.317] to serialize to BSON, top-level type must be object, but is array\n</code></pre></p> <p>Tip</p> <p>Encapsulate the JSON value in an object. That is, instead of serializing <code>true</code>, serialize <code>{\"value\": true}</code></p>"},{"location":"home/exceptions/#out-of-range","title":"Out of range","text":"<p>This exception is thrown in case a library function is called on an input parameter that exceeds the expected range, for instance, in the case of array indices or nonexisting object keys.</p> <p>Exceptions have ids 4xx.</p> Example <p>The following code shows how an <code>out_of_range</code> exception can be caught.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    try\n    {\n        // calling at() for an invalid index\n        json j = {1, 2, 3, 4};\n        j.at(4) = 10;\n    }\n    catch (const json::out_of_range&amp; e)\n    {\n        // output exception information\n        std::cout &lt;&lt; \"message: \" &lt;&lt; e.what() &lt;&lt; '\\n'\n                  &lt;&lt; \"exception id: \" &lt;&lt; e.id &lt;&lt; std::endl;\n    }\n}\n</code></pre> <p>Output:</p> <pre><code>message: [json.exception.out_of_range.401] array index 4 is out of range\nexception id: 401\n</code></pre>"},{"location":"home/exceptions/#jsonexceptionout_of_range401","title":"json.exception.out_of_range.401","text":"<p>The provided array index <code>i</code> is larger than <code>size-1</code>.</p> <p>Example message</p> <pre><code>array index 3 is out of range\n</code></pre>"},{"location":"home/exceptions/#jsonexceptionout_of_range402","title":"json.exception.out_of_range.402","text":"<p>The special array index <code>-</code> in a JSON Pointer never describes a valid element of the array, but the index past the end. That is, it can only be used to add elements at this position, but not to read it.</p> <p>Example message</p> <pre><code>array index '-' (3) is out of range\n</code></pre>"},{"location":"home/exceptions/#jsonexceptionout_of_range403","title":"json.exception.out_of_range.403","text":"<p>The provided key was not found in the JSON object.</p> <p>Example message</p> <pre><code>key 'foo' not found\n</code></pre>"},{"location":"home/exceptions/#jsonexceptionout_of_range404","title":"json.exception.out_of_range.404","text":"<p>A reference token in a JSON Pointer could not be resolved.</p> <p>Example message</p> <pre><code>unresolved reference token 'foo'\n</code></pre>"},{"location":"home/exceptions/#jsonexceptionout_of_range405","title":"json.exception.out_of_range.405","text":"<p>The JSON Patch operations 'remove' and 'add' cannot be applied to the root element of the JSON value.</p> <p>Example message</p> <pre><code>JSON pointer has no parent\n</code></pre>"},{"location":"home/exceptions/#jsonexceptionout_of_range406","title":"json.exception.out_of_range.406","text":"<p>A parsed number could not be stored as without changing it to NaN or INF.</p> <p>Example message</p> <pre><code>number overflow parsing '10E1000'\n</code></pre>"},{"location":"home/exceptions/#jsonexceptionout_of_range407","title":"json.exception.out_of_range.407","text":"<p>This exception previously indicated that the UBJSON and BSON binary formats did not support integer numbers greater than 9223372036854775807 due to limitations in the implemented mapping. However, these limitations have since been resolved, and this exception no longer occurs.</p> <p>Exception cannot occur any more</p> <ul> <li>Since version 3.9.0, integer numbers beyond int64 are serialized as high-precision UBJSON numbers.</li> <li>Since version 3.12.0, integer numbers beyond int64 are serialized as uint64 BSON numbers.</li> </ul>"},{"location":"home/exceptions/#jsonexceptionout_of_range408","title":"json.exception.out_of_range.408","text":"<p>The size (following <code>#</code>) of an UBJSON array or object exceeds the maximal capacity.</p> <p>Example message</p> <pre><code>excessive array size: 8658170730974374167\n</code></pre>"},{"location":"home/exceptions/#jsonexceptionout_of_range409","title":"json.exception.out_of_range.409","text":"<p>Key identifiers to be serialized to BSON cannot contain code point U+0000, since the key is stored as zero-terminated c-string.</p> <p>Example message</p> <pre><code>BSON key cannot contain code point U+0000 (at byte 2)\n</code></pre>"},{"location":"home/exceptions/#jsonexceptionout_of_range410","title":"json.exception.out_of_range.410","text":"<p>Undefined json fields cannot be used with <code>NLOHMANN_JSON_SERIALIZE_ENUM_STRICT</code></p> <p>Example message</p> <pre><code>enum value out of range\n</code></pre>"},{"location":"home/exceptions/#further-exceptions","title":"Further exceptions","text":"<p>This exception is thrown in case of errors that cannot be classified with the other exception types.</p> <p>Exceptions have ids 5xx.</p> Example <p>The following code shows how an <code>other_error</code> exception can be caught.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\nusing namespace nlohmann::literals;\n\nint main()\n{\n    try\n    {\n        // executing a failing JSON Patch operation\n        json value = R\"({\n            \"best_biscuit\": {\n                \"name\": \"Oreo\"\n            }\n        })\"_json;\n        json patch = R\"([{\n            \"op\": \"test\",\n            \"path\": \"/best_biscuit/name\",\n            \"value\": \"Choco Leibniz\"\n        }])\"_json;\n        value.patch(patch);\n    }\n    catch (const json::other_error&amp; e)\n    {\n        // output exception information\n        std::cout &lt;&lt; \"message: \" &lt;&lt; e.what() &lt;&lt; '\\n'\n                  &lt;&lt; \"exception id: \" &lt;&lt; e.id &lt;&lt; std::endl;\n    }\n}\n</code></pre> <p>Output:</p> <pre><code>message: [json.exception.other_error.501] unsuccessful: {\"op\":\"test\",\"path\":\"/best_biscuit/name\",\"value\":\"Choco Leibniz\"}\nexception id: 501\n</code></pre>"},{"location":"home/exceptions/#jsonexceptionother_error501","title":"json.exception.other_error.501","text":"<p>A JSON Patch operation 'test' failed. The unsuccessful operation is also printed.</p> <p>Example message</p> <p>Executing <code>{\"op\":\"test\", \"path\":\"/baz\", \"value\":\"bar\"}</code> on <code>{\"baz\": \"qux\"}</code>:</p> <pre><code>[json.exception.other_error.501] unsuccessful: {\"op\":\"test\",\"path\":\"/baz\",\"value\":\"bar\"}\n</code></pre>"},{"location":"home/faq/","title":"Frequently Asked Questions (FAQ)","text":""},{"location":"home/faq/#known-bugs","title":"Known bugs","text":""},{"location":"home/faq/#brace-initialization-yields-arrays","title":"Brace initialization yields arrays","text":"<p>Question</p> <p>Why does</p> <pre><code>json j{true};\n</code></pre> <p>and</p> <pre><code>json j(true);\n</code></pre> <p>yield different results (<code>[true]</code> vs. <code>true</code>)?</p> <p>This is a known issue, and -- even worse -- the behavior differs between GCC and Clang. The \"culprit\" for this is the library's constructor overloads for initializer lists to allow syntax like</p> <pre><code>json array = {1, 2, 3, 4};\n</code></pre> <p>for arrays and</p> <pre><code>json object = {{\"one\", 1}, {\"two\", 2}}; \n</code></pre> <p>for objects.</p> <p>Tip</p> <p>To avoid any confusion and ensure portable code, do not use brace initialization with the types <code>basic_json</code>, <code>json</code>, or <code>ordered_json</code> unless you want to create an object or array as shown in the examples above.</p> <p>To explicitly create a single-element array, use <code>json::array({value})</code>:</p> <pre><code>json j = json::array({true});  // [true]\n</code></pre> <p>Opt-in copy semantics (since version 3.12.0)</p> <p>If you define <code>JSON_BRACE_INIT_COPY_SEMANTICS</code> to <code>1</code> before including the library, single-element brace initialization is treated as copy/move instead of creating a single-element array:</p> <pre><code>#define JSON_BRACE_INIT_COPY_SEMANTICS 1\n#include &lt;nlohmann/json.hpp&gt;\n\njson obj = {{\"key\", \"value\"}};\njson j{obj};   // -&gt; {\"key\":\"value\"}  (copy, not array)\n</code></pre> <p>Without the macro (default behavior), <code>json j{obj}</code> creates <code>[{\"key\":\"value\"}]</code>. This opt-in macro fixes issue #5074 while preserving backwards compatibility for existing code.</p>"},{"location":"home/faq/#limitations","title":"Limitations","text":""},{"location":"home/faq/#relaxed-parsing","title":"Relaxed parsing","text":"<p>Question</p> <p>Can you add an option to ignore trailing commas?</p> <p>This library does not support any feature that would jeopardize interoperability.</p>"},{"location":"home/faq/#parse-errors-reading-non-ascii-characters","title":"Parse errors reading non-ASCII characters","text":"<p>Questions</p> <ul> <li>Why is the parser complaining about a Chinese character?</li> <li>Does the library support Unicode?</li> <li>I get an exception <code>[json.exception.parse_error.101] parse error at line 1, column 53: syntax error while parsing value - invalid string: ill-formed UTF-8 byte; last read: '\"Test\u00e9$')\"</code></li> </ul> <p>The library supports Unicode input as follows:</p> <ul> <li>Only UTF-8 encoded input is supported, which is the default encoding for JSON, according to RFC 8259.</li> <li><code>std::u16string</code> and <code>std::u32string</code> can be parsed, assuming UTF-16 and UTF-32 encoding, respectively. These encodings are not supported when reading from files or other input containers.</li> <li>Other encodings such as Latin-1 or ISO 8859-1 are not supported and will yield parse or serialization errors.</li> <li>The library will not replace Unicode noncharacters.</li> <li>Invalid surrogates (e.g., incomplete pairs such as <code>\\uDEAD</code>) will yield parse errors.</li> <li>The strings stored in the library are UTF-8 encoded. When using the default string type (<code>std::string</code>), note that its length/size functions return the number of stored bytes rather than the number of characters or glyphs.</li> <li>When you store strings with different encodings in the library, calling <code>dump()</code> may throw an exception unless <code>json::error_handler_t::replace</code> or <code>json::error_handler_t::ignore</code> are used as error handlers.</li> </ul> <p>In most cases, the parser is right to complain, because the input is not UTF-8 encoded. This is especially true for Microsoft Windows, where Latin-1 or ISO 8859-1 is often the standard encoding.</p>"},{"location":"home/faq/#wide-string-handling","title":"Wide string handling","text":"<p>Question</p> <p>Why are wide strings (e.g., <code>std::wstring</code>) dumped as arrays of numbers?</p> <p>As described above, the library assumes UTF-8 as encoding.  To store a wide string, you need to change the encoding.</p> <p>Example</p> <pre><code>#include &lt;codecvt&gt; // codecvt_utf8\n#include &lt;locale&gt;  // wstring_convert\n\n// encoding function\nstd::string to_utf8(std::wstring&amp; wide_string)\n{\n    static std::wstring_convert&lt;std::codecvt_utf8&lt;wchar_t&gt;&gt; utf8_conv;\n    return utf8_conv.to_bytes(wide_string);\n}\n\njson j;\nstd::wstring ws = L\"\u8ecaB1234 \u3053\u3093\u306b\u3061\u306f\";\n\nj[\"original\"] = ws;\nj[\"encoded\"] = to_utf8(ws);\n\nstd::cout &lt;&lt; j &lt;&lt; std::endl;\n</code></pre> <p>The result is:</p> <pre><code>{\n  \"encoded\": \"\u8ecaB1234 \u3053\u3093\u306b\u3061\u306f\",\n  \"original\": [36554, 66, 49, 50, 51, 52, 32, 12371, 12435, 12395, 12385, 12399]\n}\n</code></pre>"},{"location":"home/faq/#exceptions","title":"Exceptions","text":""},{"location":"home/faq/#parsing-without-exceptions","title":"Parsing without exceptions","text":"<p>Question</p> <p>Is it possible to indicate a parse error without throwing an exception?</p> <p>Yes, see Parsing and exceptions.</p>"},{"location":"home/faq/#key-name-in-exceptions","title":"Key name in exceptions","text":"<p>Question</p> <p>Can I get the key of the object item that caused an exception?</p> <p>Yes, you can. Please define the symbol <code>JSON_DIAGNOSTICS</code> to get extended diagnostics messages.</p>"},{"location":"home/faq/#serialization-issues","title":"Serialization issues","text":""},{"location":"home/faq/#number-precision","title":"Number precision","text":"<p>Question</p> <ul> <li>It seems that precision is lost when serializing a double.</li> <li>Can I change the precision for floating-point serialization?</li> </ul> <p>The library uses <code>std::numeric_limits&lt;number_float_t&gt;::digits10</code> (15 for IEEE <code>double</code>s) digits for serialization. This value is sufficient to guarantee roundtripping. If one uses more than this number of digits of precision, then string -&gt; value -&gt; string is not guaranteed to round-trip.</p> <p>cppreference.com</p> <p>The value of <code>std::numeric_limits&lt;T&gt;::digits10</code> is the number of base-10 digits that can be represented by the type T without change, that is, any number with this many significant decimal digits can be converted to a value of type T and back to decimal form, without change due to rounding or overflow. </p> <p>Tip</p> <p>The website https://float.exposed gives a good insight into the internal storage of floating-point numbers.</p> <p>See this section on the library's number handling for more information.</p>"},{"location":"home/faq/#compilation-issues","title":"Compilation issues","text":""},{"location":"home/faq/#android-sdk","title":"Android SDK","text":"<p>Question</p> <p>Why does the code not compile with Android SDK?</p> <p>Android defaults to using very old compilers and C++ libraries. To fix this, add the following to your <code>Application.mk</code>. This will switch to the LLVM C++ library, the Clang compiler, and enable C++11 and other features disabled by default.</p> <pre><code>APP_STL := c++_shared\nNDK_TOOLCHAIN_VERSION := clang3.6\nAPP_CPPFLAGS += -frtti -fexceptions\n</code></pre> <p>The code compiles successfully with Android NDK, Revision 9 - 11 (and possibly later) and CrystaX's Android NDK version 10.</p>"},{"location":"home/faq/#missing-stl-function","title":"Missing STL function","text":"<p>Questions</p> <ul> <li>Why do I get a compilation error <code>'to_string' is not a member of 'std'</code> (or similarly, for <code>strtod</code> or <code>strtof</code>)?</li> <li>Why does the code not compile with MinGW or Android SDK?</li> </ul> <p>This is not an issue with the code, but rather with the compiler itself. On Android, see above to build with a newer environment.  For MinGW, please refer to this site and this discussion for information on how to fix this bug. For Android NDK using <code>APP_STL := gnustl_static</code>, please refer to this discussion.</p>"},{"location":"home/license/","title":"License","text":"<p>The class is licensed under the MIT License:</p> <p>Copyright \u00a9 2013-2026 Niels Lohmann</p> <p>Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \u201cSoftware\u201d), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:</p> <p>The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.</p> <p>THE SOFTWARE IS PROVIDED \u201cAS IS\u201d, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.</p> <p>The class contains the UTF-8 Decoder from Bjoern Hoehrmann which is licensed under the MIT License (see above). Copyright \u00a9 2008-2009 Bj\u00f6rn Hoehrmann bjoern@hoehrmann.de</p> <p>The class contains a slightly modified version of the Grisu2 algorithm from Florian Loitsch which is licensed under the MIT License (see above). Copyright \u00a9 2009 Florian Loitsch</p> <p>The class contains a copy of Hedley from Evan Nemerson which is licensed as CC0-1.0.</p>"},{"location":"home/releases/","title":"Releases","text":""},{"location":"home/releases/#v373","title":"v3.7.3","text":"<p>Files</p> <ul> <li>include.zip (274 KB)</li> <li>include.zip.asc (1 KB)</li> <li>json.hpp (791 KB)</li> <li>json.hpp.asc (1 KB)</li> </ul> <p>Release date: 2019-11-17 SHA-256: 3b5d2b8f8282b80557091514d8ab97e27f9574336c804ee666fda673a9b59926 (json.hpp), 87b5884741427220d3a33df1363ae0e8b898099fbc59f1c451113f6732891014 (include.zip)</p>"},{"location":"home/releases/#summary","title":"Summary","text":"<p>This release fixes a bug introduced in release 3.7.2 which could yield quadratic complexity in destructor calls. All changes are backward-compatible.</p>"},{"location":"home/releases/#bug-fixes","title":"Bug Fixes","text":"<ul> <li>Removed <code>reserve()</code> calls from the destructor which could lead to quadratic complexity. #1837 #1838</li> </ul>"},{"location":"home/releases/#deprecated-functions","title":"Deprecated functions","text":"<p>This release does not deprecate any functions. As an overview, the following functions have been deprecated in earlier versions and will be removed in the next major version (i.e., 4.0.0):</p> <ul> <li>Function <code>iterator_wrapper</code> are deprecated. Please use the member function <code>items()</code> instead.</li> <li>Functions <code>friend std::istream&amp; operator&lt;&lt;(basic_json&amp;, std::istream&amp;)</code> and <code>friend std::ostream&amp; operator&gt;&gt;(const basic_json&amp;, std::ostream&amp;)</code> are deprecated. Please use <code>friend std::istream&amp;  operator&gt;&gt;(std::istream&amp;, basic_json&amp;)</code> and <code>friend operator&lt;&lt;(std::ostream&amp;, const basic_json&amp;)</code> instead.</li> </ul>"},{"location":"home/releases/#v372","title":"v3.7.2","text":"<p>Files</p> <ul> <li>include.zip (274 KB)</li> <li>include.zip.asc (1 KB)</li> <li>json.hpp (791 KB)</li> <li>json.hpp.asc (1 KB)</li> </ul> <p>Release date: 2019-11-10 SHA-256: 0a65fcbbe1b334d3f45c9498e5ee28c3f3b2428aea98557da4a3ff12f0f14ad6 (json.hpp), 67f69c9a93b7fa0612dc1b6273119d2c560317333581845f358aaa68bff8f087 (include.zip)</p>"},{"location":"home/releases/#summary_1","title":"Summary","text":"<p>Project bad_json_parsers tested how JSON parser libraries react on deeply nested inputs. It turns out that this library segfaulted at a certain nesting depth. This bug was fixed with this release. Now the parsing is only bounded by the available memory. All changes are backward-compatible.</p>"},{"location":"home/releases/#bug-fixes_1","title":"Bug Fixes","text":"<ul> <li>Fixed a bug that lead to stack overflow for deeply nested JSON values (objects, array) by changing the implementation of the destructor from a recursive to an iterative approach. #832, #1419, #1835</li> </ul>"},{"location":"home/releases/#further-changes","title":"Further Changes","text":"<ul> <li>Added WhiteStone Bolt. #1830</li> </ul>"},{"location":"home/releases/#deprecated-functions_1","title":"Deprecated functions","text":"<p>This release does not deprecate any functions. As an overview, the following functions have been deprecated in earlier versions and will be removed in the next major version (i.e., 4.0.0):</p> <ul> <li>Function <code>iterator_wrapper</code> are deprecated. Please use the member function <code>items()</code> instead.</li> <li>Functions <code>friend std::istream&amp; operator&lt;&lt;(basic_json&amp;, std::istream&amp;)</code> and <code>friend std::ostream&amp; operator&gt;&gt;(const basic_json&amp;, std::ostream&amp;)</code> are deprecated. Please use <code>friend std::istream&amp;  operator&gt;&gt;(std::istream&amp;, basic_json&amp;)</code> and <code>friend operator&lt;&lt;(std::ostream&amp;, const basic_json&amp;)</code> instead.</li> </ul>"},{"location":"home/releases/#v371","title":"v3.7.1","text":"<p>Files</p> <ul> <li>include.zip (273 KB)</li> <li>include.zip.asc (1 KB)</li> <li>json.hpp (789 KB)</li> <li>json.hpp.asc (1 KB)</li> </ul> <p>Release date: 2019-11-06 SHA-256: b5ba7228f3c22a882d379e93d08eab4349458ee16fbf45291347994eac7dc7ce (json.hpp), 77b9f54b34e7989e6f402afb516f7ff2830df551c3a36973085e2c7a6b1045fe (include.zip)</p>"},{"location":"home/releases/#summary_2","title":"Summary","text":"<p>This release fixes several small bugs in the library. All changes are backward-compatible.</p>"},{"location":"home/releases/#bug-fixes_2","title":"Bug Fixes","text":"<ul> <li>Fixed a segmentation fault when serializing <code>std::int64_t</code> minimum value. #1708 #1722</li> <li>Fixed the <code>contains()</code> function for JSON Pointers. #1727 #1741</li> <li>Fixed too lax SFINAE guard for conversion from <code>std::pair</code> and <code>std::tuple</code> to <code>json</code>. #1805 #1806 #1825 #1826</li> <li>Fixed some regressions detected by UBSAN. Updated CI to use Clang-Tidy 7.1.0. #1716 #1728</li> <li>Fixed integer truncation in <code>iteration_proxy</code>. #1797</li> <li>Updated Hedley to v11 to fix a E2512 error in MSVC. #1799</li> <li>Fixed a compile error in enum deserialization of non non-default-constructible types. #1647 #1821</li> <li>Fixed the conversion from <code>json</code> to <code>std::valarray</code>.</li> </ul>"},{"location":"home/releases/#improvements","title":"Improvements","text":"<ul> <li>The <code>items()</code> function can now be used with a custom string type. #1765</li> <li>Made <code>json_pointer::back</code> <code>const</code>. #1764 #1769</li> <li>Meson is part of the release archive. #1672 #1694 </li> <li>Improved documentation on the Meson and Spack package manager. #1694 #1720</li> </ul>"},{"location":"home/releases/#further-changes_1","title":"Further Changes","text":"<ul> <li>Added GitHub Workflow with <code>ubuntu-latest</code>/GCC 7.4.0 as CI step.</li> <li>Added GCC 9 to Travis CI to compile with C++20 support. #1724</li> <li>Added MSVC 2019 to the AppVeyor CI. #1780</li> <li>Added badge to fuzzing status.</li> <li>Fixed some cppcheck warnings. #1760</li> <li>Fixed several typos in the documentation. #1720 #1767 #1803</li> <li>Added documentation on the <code>JSON_THROW_USER</code>, <code>JSON_TRY_USER</code>, and <code>JSON_CATCH_USER</code> macros to control user-defined exception handling.</li> <li>Used GitHub's CODEOWNERS and SECURITY feature.</li> <li>Removed <code>GLOB</code> from CMake files. #1779</li> <li>Updated to Doctest 2.3.5.</li> </ul>"},{"location":"home/releases/#deprecated-functions_2","title":"Deprecated functions","text":"<p>This release does not deprecate any functions. As an overview, the following functions have been deprecated in earlier versions and will be removed in the next major version (i.e., 4.0.0):</p> <ul> <li>Function <code>iterator_wrapper</code> are deprecated. Please use the member function <code>items()</code> instead.</li> <li>Functions <code>friend std::istream&amp; operator&lt;&lt;(basic_json&amp;, std::istream&amp;)</code> and <code>friend std::ostream&amp; operator&gt;&gt;(const basic_json&amp;, std::ostream&amp;)</code> are deprecated. Please use <code>friend std::istream&amp;  operator&gt;&gt;(std::istream&amp;, basic_json&amp;)</code> and <code>friend operator&lt;&lt;(std::ostream&amp;, const basic_json&amp;)</code> instead.</li> </ul>"},{"location":"home/releases/#v370","title":"v3.7.0","text":"<p>Files</p> <ul> <li>include.zip (143 KB)</li> <li>include.zip.asc (1 KB)</li> <li>json.hpp (782 KB)</li> <li>json.hpp.asc (1 KB)</li> </ul> <p>Release date: 2019-07-28 SHA-256: a503214947952b69f0062f572cb74c17582a495767446347ce2e452963fc2ca4 (json.hpp), 541c34438fd54182e9cdc68dd20c898d766713ad6d901fb2c6e28ff1f1e7c10d (include.zip)</p>"},{"location":"home/releases/#summary_3","title":"Summary","text":"<p>This release introduces a few convenience functions and performs a lot of house keeping (bug fixes and small improvements). All changes are backward-compatible.</p>"},{"location":"home/releases/#new-features","title":"New Features","text":"<ul> <li>Add overload of the <code>contains</code> function to check if a JSON pointer is valid without throwing exceptions, just like its counterpart for object keys. #1600</li> <li>Add a function <code>to_string</code> to allow for generic conversion to strings. #916 #1585</li> <li>Add return value for the <code>emplace_back</code> function, returning a reference to the added element just like C++17 is introducing this for <code>std::vector</code>. #1609</li> <li>Add info how to use the library with the pacman package manager on MSYS2. #1670</li> </ul>"},{"location":"home/releases/#bug-fixes_3","title":"Bug Fixes","text":"<ul> <li>Fix an issue where typedefs with certain names yielded a compilation error. #1642 #1643</li> <li>Fix a conversion to <code>std::string_view</code> in the unit tests. #1634 #1639</li> <li>Fix MSVC Debug build. #1536 #1570 #1608</li> <li>Fix <code>get_to</code> method to clear existing content before writing. #1511 #1555</li> <li>Fix a <code>-Wc++17-extensions</code> warning. <code>nodiscard</code> attributes are now only used with Clang when <code>-std=c++17</code> is used. #1535 #1551</li> </ul>"},{"location":"home/releases/#improvements_1","title":"Improvements","text":"<ul> <li>Switch from Catch to doctest for the unit tests which speeds up compilation and runtime of the 112,112,308 tests.</li> <li>Add an explicit section to the README about the frequently addressed topics character encoding, comments in JSON, and the order of object keys.</li> </ul>"},{"location":"home/releases/#further-changes_2","title":"Further Changes","text":"<ul> <li>Use <code>GNUInstallDirs</code> to set library install directories. #1673</li> <li>Fix links in the README. #1620 #1621 #1622 #1623 #1625</li> <li>Mention <code>json</code> type on the documentation start page. #1616</li> <li>Complete documentation of <code>value()</code> function with respect to <code>type_error.302</code> exception. #1601</li> <li>Fix links in the documentation. #1598</li> <li>Add regression tests for MSVC. #1543 #1570</li> <li>Use CircleCI for continuous integration.</li> <li>Use Doozer for continuous integration on Linux (CentOS, Raspbian, Fedora)</li> <li>Add tests to check each CMake flag (<code>JSON_BuildTests</code>, <code>JSON_Install</code>, <code>JSON_MultipleHeaders</code>, <code>JSON_Sanitizer</code>, <code>JSON_Valgrind</code>, <code>JSON_NoExceptions</code>, <code>JSON_Coverage</code>).</li> <li>Use Hedley to avoid re-inventing several compiler-agnostic feature macros like <code>JSON_DEPRECATED</code>, <code>JSON_NODISCARD</code>, <code>JSON_LIKELY</code>, <code>JSON_UNLIKELY</code>, <code>JSON_HAS_CPP_14</code>, or <code>JSON_HAS_CPP_17</code>. Functions taking or returning pointers are annotated accordingly when a pointer will not be null.</li> <li>Build and run tests on AppVeyor in DEBUG and RELEASE mode.</li> </ul>"},{"location":"home/releases/#deprecated-functions_3","title":"Deprecated functions","text":"<p>This release does not deprecate any functions. As an overview, the following functions have been deprecated in earlier versions and will be removed in the next major version (i.e., 4.0.0):</p> <ul> <li>Function <code>iterator_wrapper</code> are deprecated. Please use the member function <code>items()</code> instead.</li> <li>Functions <code>friend std::istream&amp; operator&lt;&lt;(basic_json&amp;, std::istream&amp;)</code> and <code>friend std::ostream&amp; operator&gt;&gt;(const basic_json&amp;, std::ostream&amp;)</code> are deprecated. Please use <code>friend std::istream&amp;  operator&gt;&gt;(std::istream&amp;, basic_json&amp;)</code> and <code>friend operator&lt;&lt;(std::ostream&amp;, const basic_json&amp;)</code> instead.</li> </ul>"},{"location":"home/releases/#v361","title":"v3.6.1","text":"<p>Files</p> <ul> <li>include.zip (136 KB)</li> <li>include.zip.asc (1 KB)</li> <li>json.hpp (711 KB)</li> <li>json.hpp.asc (1 KB)</li> </ul> <p>Release date: 2019-03-20 SHA-256: d2eeb25d2e95bffeb08ebb7704cdffd2e8fca7113eba9a0b38d60a5c391ea09a (json.hpp), 69cc88207ce91347ea530b227ff0776db82dcb8de6704e1a3d74f4841bc651cf (include.zip)</p>"},{"location":"home/releases/#summary_4","title":"Summary","text":"<p>This release fixes a regression and a bug introduced by the earlier 3.6.0 release. All changes are backward-compatible.</p>"},{"location":"home/releases/#bug-fixes_4","title":"Bug Fixes","text":"<ul> <li>Fixed regression of #590 which could lead to compilation errors with GCC 7 and GCC 8. #1530</li> <li>Fixed a compilation error when <code>&lt;Windows.h&gt;</code> was included. #1531</li> </ul>"},{"location":"home/releases/#further-changes_3","title":"Further Changes","text":"<ul> <li>Fixed a warning for missing field initializers. #1527</li> </ul>"},{"location":"home/releases/#deprecated-functions_4","title":"Deprecated functions","text":"<p>This release does not deprecate any functions. As an overview, the following functions have been deprecated in earlier versions and will be removed in the next major version (i.e., 4.0.0):</p> <ul> <li>Function <code>iterator_wrapper</code> are deprecated. Please use the member function <code>items()</code> instead.</li> <li>Functions <code>friend std::istream&amp; operator&lt;&lt;(basic_json&amp;, std::istream&amp;)</code> and <code>friend std::ostream&amp; operator&gt;&gt;(const basic_json&amp;, std::ostream&amp;)</code> are deprecated. Please use <code>friend std::istream&amp;  operator&gt;&gt;(std::istream&amp;, basic_json&amp;)</code> and <code>friend operator&lt;&lt;(std::ostream&amp;, const basic_json&amp;)</code> instead.</li> </ul>"},{"location":"home/releases/#v360","title":"v3.6.0","text":"<p>Files</p> <ul> <li>include.zip (136 KB)</li> <li>include.zip.asc (1 KB)</li> <li>json.hpp (711 KB)</li> <li>json.hpp.asc (1 KB)</li> </ul> <p>Release date: 2019-03-20 SHA-256: ce9839370f28094c71107c405affb3b08c4a098154988014cbb0800b1c44a831 (json.hpp), 237c5e66e7f8186a02804ce9dbd5f69ce89fe7424ef84adf6142e973bd9532f4 (include.zip)</p> <p>\u2139\ufe0f This release introduced a regression. Please update to version 3.6.1!</p>"},{"location":"home/releases/#summary_5","title":"Summary","text":"<p>This release adds some convenience functions for JSON Pointers, introduces a <code>contains</code> function to check if a key is present in an object, and improves the performance of integer serialization. Furthermore, a lot of small bug fixes and improvements have been made. All changes are backward-compatible.</p>"},{"location":"home/releases/#new-features_1","title":"New Features","text":"<ul> <li>Overworked the public interface for JSON Pointers. The creation of JSON Pointers is simplified with <code>operator/</code> and <code>operator/=</code>. JSON Pointers can be inspected with <code>empty</code>, <code>back</code>,  and <code>parent_pointer</code>, and manipulated with <code>push_back</code> and <code>pop_back</code>. #1434</li> <li>Added a boolean method <code>contains</code> to check whether an element exists in a JSON object with a given key. Returns false when called on non-object types. #1471 #1474</li> </ul>"},{"location":"home/releases/#bug-fixes_5","title":"Bug Fixes","text":"<ul> <li>Fixed a compilation issues with libc 2.12. #1483 #1514</li> <li>Fixed endian conversion on PPC64. #1489</li> <li>Fixed library to compile with GCC 9. #1472 #1492</li> <li>Fixed a compilation issue with GCC 7 on CentOS. #1496</li> <li>Fixed an integer overflow. #1447</li> <li>Fixed buffer flushing in serializer. #1445 #1446</li> </ul>"},{"location":"home/releases/#improvements_2","title":"Improvements","text":"<ul> <li>The performance of dumping integers has been greatly improved. #1411</li> <li>Added CMake parameter <code>JSON_Install</code> to control whether the library should be installed (default: on). #1330</li> <li>Fixed a lot of compiler and linter warnings. #1400 #1435 #1502</li> <li>Reduced required CMake version from 3.8 to 3.1. #1409 #1428 #1441 #1498</li> <li>Added <code>nodiscard</code> attribute to <code>meta()</code>, <code>array()</code>, <code>object()</code>, <code>from_cbor</code>, <code>from_msgpack</code>, <code>from_ubjson</code>, <code>from_bson</code>, and <code>parse</code>. #1433</li> </ul>"},{"location":"home/releases/#further-changes_4","title":"Further Changes","text":"<ul> <li>Added missing headers. #1500</li> <li>Fixed typos and broken links in README. #1417 #1423 #1425 #1451 #1455 #1491</li> <li>Fixed documentation of parse function. #1473</li> <li>Suppressed warning that cannot be fixed inside the library. #1401 #1468</li> <li>Improved package manager suppert:<ul> <li>Updated Buckaroo instructions. #1495</li> <li>Improved Meson support. #1463</li> <li>Added Conda package manager documentation. #1430</li> <li>Added NuGet package manager documentation. #1132</li> </ul> </li> <li>Continuous Integration<ul> <li>Removed unstable or deprecated Travis builders (Xcode 6.4 - 8.2) and added Xcode 10.1 builder.</li> <li>Added Clang 7 to Travis CI.</li> <li>Fixed AppVeyor x64 builds. #1374 #1414</li> </ul> </li> <li>Updated thirdparty libraries:<ul> <li>Catch 1.12.0 -&gt; 1.12.2</li> <li>Google Benchmark 1.3.0 -&gt; 1.4.1</li> <li>Doxygen 1.8.15 -&gt; 1.8.16</li> </ul> </li> </ul>"},{"location":"home/releases/#deprecated-functions_5","title":"Deprecated functions","text":"<p>This release does not deprecate any functions. As an overview, the following functions have been deprecated in earlier versions and will be removed in the next major version (i.e., 4.0.0):</p> <ul> <li>Function <code>iterator_wrapper</code> are deprecated. Please use the member function <code>items()</code> instead.</li> <li>Functions <code>friend std::istream&amp; operator&lt;&lt;(basic_json&amp;, std::istream&amp;)</code> and <code>friend std::ostream&amp; operator&gt;&gt;(const basic_json&amp;, std::ostream&amp;)</code> are deprecated. Please use <code>friend std::istream&amp;  operator&gt;&gt;(std::istream&amp;, basic_json&amp;)</code> and <code>friend operator&lt;&lt;(std::ostream&amp;, const basic_json&amp;)</code> instead.</li> </ul>"},{"location":"home/releases/#v350","title":"v3.5.0","text":"<p>Files</p> <ul> <li>include.zip (133 KB)</li> <li>include.zip.asc (1 KB)</li> <li>json.hpp (693 KB)</li> <li>json.hpp.asc (1 KB)</li> </ul> <p>Release date: 2018-12-22 SHA-256: 8a6dbf3bf01156f438d0ca7e78c2971bca50eec4ca6f0cf59adf3464c43bb9d5 (json.hpp), 3564da9c5b0cf2e032f97c69baedf10ddbc98030c337d0327a215ea72259ea21 (include.zip)</p>"},{"location":"home/releases/#summary_6","title":"Summary","text":"<p>This release introduces the support for structured bindings and reading from <code>FILE*</code>. Besides, a few bugs have been fixed. All changes are backward-compatible.</p>"},{"location":"home/releases/#new-features_2","title":"New Features","text":"<ul> <li> <p>Structured bindings are now supported for JSON objects and arrays via the <code>items()</code> member function, so finally this code is possible:   <pre><code>for (auto&amp; [key, val] : j.items()) {\n    std::cout &lt;&lt; key &lt;&lt; ':' &lt;&lt; val &lt;&lt; '\\n';\n}\n</code></pre>   #1388 #1391</p> </li> <li> <p>Added support for reading from <code>FILE*</code> to support situations in which streams are nit available or would require too much RAM. #1370 #1392</p> </li> </ul>"},{"location":"home/releases/#bug-fixes_6","title":"Bug Fixes","text":"<ul> <li>The <code>eofbit</code> was not set for input streams when the end of a stream was reached while parsing. #1340 #1343</li> <li>Fixed a bug in the SAX parser for BSON arrays.</li> </ul>"},{"location":"home/releases/#improvements_3","title":"Improvements","text":"<ul> <li>Added support for Clang 5.0.1 (PS4 version). #1341 #1342</li> </ul>"},{"location":"home/releases/#further-changes_5","title":"Further Changes","text":"<ul> <li>Added a warning for implicit conversions to the documentation: It is not recommended to use implicit conversions when reading from a JSON value. Details about this recommendation can be found here.  #1363</li> <li>Fixed typos in the documentation. #1329 #1380 #1382</li> <li>Fixed a C4800 warning. #1364</li> <li>Fixed a <code>-Wshadow</code> warning #1346</li> <li>Wrapped <code>std::snprintf</code> calls to avoid error in MSVC. #1337</li> <li>Added code to allow installation via Meson. #1345</li> </ul>"},{"location":"home/releases/#deprecated-functions_6","title":"Deprecated functions","text":"<p>This release does not deprecate any functions. As an overview, the following functions have been deprecated in earlier versions and will be removed in the next major version (i.e., 4.0.0):</p> <ul> <li>Function <code>iterator_wrapper</code> are deprecated. Please use the member function <code>items()</code> instead.</li> <li>Functions <code>friend std::istream&amp; operator&lt;&lt;(basic_json&amp;, std::istream&amp;)</code> and <code>friend std::ostream&amp; operator&gt;&gt;(const basic_json&amp;, std::ostream&amp;)</code> are deprecated. Please use <code>friend std::istream&amp;  operator&gt;&gt;(std::istream&amp;, basic_json&amp;)</code> and <code>friend operator&lt;&lt;(std::ostream&amp;, const basic_json&amp;)</code> instead.</li> </ul>"},{"location":"home/releases/#v340","title":"v3.4.0","text":"<p>Files</p> <ul> <li>include.zip (132 KB)</li> <li>include.zip.asc (1 KB)</li> <li>json.hpp (689 KB)</li> <li>json.hpp.asc (1 KB)</li> </ul> <p>Release date: 2018-10-30 SHA-256: 63da6d1f22b2a7bb9e4ff7d6b255cf691a161ff49532dcc45d398a53e295835f (json.hpp), bfec46fc0cee01c509cf064d2254517e7fa80d1e7647fea37cf81d97c5682bdc (include.zip)</p>"},{"location":"home/releases/#summary_7","title":"Summary","text":"<p>This release introduces three new features:</p> <ul> <li>BSON (Binary JSON) is next to CBOR, MessagePack, and UBJSON the fourth binary (de)serialization format supported by the library.</li> <li>Adjustable error handlers for invalid Unicode allows to specify the behavior when invalid byte sequences are serialized.</li> <li>Simplified enum/JSON mapping with a macro in case the default mapping to integers is not desired.</li> </ul> <p>Furthermore, some effort has been invested in improving the parse error messages. Besides, a few bugs have been fixed. All changes are backward-compatible.</p>"},{"location":"home/releases/#new-features_3","title":"New Features","text":"<ul> <li>The library can read and write a subset of BSON (Binary JSON). All data types known from JSON are supported, whereas other types more tied to MongoDB such as timestamps, object ids, or binary data are currently not implemented. See the README for examples. #1244 #1320</li> <li>The behavior when the library encounters an invalid Unicode sequence during serialization can now be controlled by defining one of three Unicode error handlers: (1) throw an exception (default behavior), (2) replace invalid sequences by the Unicode replacement character (U+FFFD), or (3) ignore/filter invalid sequences. See the documentation of the <code>dump</code> function for examples. #1198 #1314</li> <li>To easily specify a user-defined enum/JSON mapping, a macro <code>NLOHMANN_JSON_SERIALIZE_ENUM</code> has been introduced. See the README section for more information. #1208 #1323</li> </ul>"},{"location":"home/releases/#bug-fixes_7","title":"Bug Fixes","text":"<ul> <li>fixed truncation #1286 #1315</li> <li>fixed an issue with std::pair #1299 #1301</li> <li>fixed an issue with std::variant #1292 #1294</li> <li>fixed a bug in the JSON Pointer parser</li> </ul>"},{"location":"home/releases/#improvements_4","title":"Improvements","text":"<ul> <li>The diagnosis messages for parse errors have been improved: error messages now indicated line/column positions where possible (in addition to a byte count) and also the context in which the error occurred (e.g., \"while parsing a JSON string\"). Example: error <code>parse error at 2: syntax error - invalid string: control character must be escaped; last read: '&lt;U+0009&gt;'</code> is now reported as <code>parse error at line 1, column 2: syntax error while parsing value - invalid string: control character U+0009 (HT) must be escaped to \\u0009 or \\t; last read: '&lt;U+0009&gt;'</code>. #1280 #1288 #1303</li> </ul>"},{"location":"home/releases/#further-changes_6","title":"Further Changes","text":"<ul> <li>improved Meson documentation #1305</li> <li>fixed some more linter warnings #1280</li> <li>fixed Clang detection for third-party Google Benchmark library #1277</li> </ul>"},{"location":"home/releases/#deprecated-functions_7","title":"Deprecated functions","text":"<p>This release does not deprecate any functions. As an overview, the following functions have been deprecated in earlier versions and will be removed in the next major version (i.e., 4.0.0):</p> <ul> <li>Function <code>iterator_wrapper</code> are deprecated. Please use the member function <code>items()</code> instead.</li> <li>Functions <code>friend std::istream&amp; operator&lt;&lt;(basic_json&amp;, std::istream&amp;)</code> and <code>friend std::ostream&amp; operator&gt;&gt;(const basic_json&amp;, std::ostream&amp;)</code> are deprecated. Please use <code>friend std::istream&amp;  operator&gt;&gt;(std::istream&amp;, basic_json&amp;)</code> and <code>friend operator&lt;&lt;(std::ostream&amp;, const basic_json&amp;)</code> instead.</li> </ul>"},{"location":"home/releases/#v330","title":"v3.3.0","text":"<p>Files</p> <ul> <li>include.zip (123 KB)</li> <li>include.zip.asc (1 KB)</li> <li>json.hpp (635 KB)</li> <li>json.hpp.asc (1 KB)</li> </ul> <p>Release date: 2018-10-05 SHA-256: f1327bb60c58757a3dd2b0c9c45d49503d571337681d950ec621f8374bcc14d4 (json.hpp), 9588d63557333aaa485e92221ec38014a85a6134e7486fe3441e0541a5a89576 (include.zip)</p>"},{"location":"home/releases/#summary_8","title":"Summary","text":"<p>This release adds support for GCC 4.8. Furthermore, it adds a function <code>get_to</code> to write a JSON value to a passed reference. Another topic of this release was the CMake support which has been overworked and documented.</p> <p>Besides, a lot of bugs have been fixed and slight improvements have been made. All changes are backward-compatible.</p>"},{"location":"home/releases/#new-features_4","title":"New Features","text":"<ul> <li>The library can now also built with GCC 4.8. Though this compiler does not fully support C++11, it can successfully compile and run the test suite. Note that bug 57824 in GCC 4.8 still forbids to use multiline raw strings in arguments to macros. #1257</li> <li>Added new function <code>get_to</code> to write a JSON value to a passed reference. The destination type is automatically derived which allows more succinct code compared to the <code>get</code> function. #1227 #1231</li> </ul>"},{"location":"home/releases/#bug-fixes_8","title":"Bug Fixes","text":"<ul> <li>Fixed a bug in the CMake file that made <code>target_link_libraries</code> to not properly include <code>nlohmann_json</code>. #1243 #1245 #1260</li> <li>Fixed a warning in MSVC 2017 complaining about a constexpr if. #1204 #1268 #1272</li> <li>Fixed a bug that prevented compilation with ICPC. #755 #1222</li> <li>Improved the SFINAE correctness to fix a bug in the conversion operator. #1237 #1238</li> <li>Fixed a <code>-Wctor-dtor-privacy</code> warning. #1224</li> <li>Fixed a warning on a lambda in unevaluated context. #1225 #1230</li> <li>Fixed a bug introduced in version 3.2.0 where defining <code>JSON_CATCH_USER</code> led to duplicate macro definition of <code>JSON_INTERNAL_CATCH</code>. #1213 #1214</li> <li>Fixed a bug that prevented compilation with Clang 3.4.2 in RHEL 7. #1179 #1249</li> </ul>"},{"location":"home/releases/#improvements_5","title":"Improvements","text":"<ul> <li>Added documentation on CMake integration of the library. #1270</li> <li>Changed the CMake file to use <code>find_package(nlohmann_json)</code> without installing the library. #1202</li> <li>Improved error messages in case <code>operator[]</code> is used with the wrong combination (json.exception.type_error.305) of JSON container type and argument type. Example: \"cannot use operator[] with a string argument\". #1220 #1221</li> <li>Added a license and version information to the Meson build file. #1252</li> <li>Removed static assertions to indicated missing <code>to_json</code> or <code>from_json</code> functions as such assertions do not play well with SFINAE. These assertions also led to problems with GMock. #960 #1212 #1228</li> <li>The test suite now does not wait forever if run in a wrong directory and input files are not found. #1262</li> <li>The test suite does not show deprecation warnings for deprecated functions which frequently led to confusion. #1271</li> </ul>"},{"location":"home/releases/#further-changes_7","title":"Further Changes","text":"<ul> <li>GCC 4.8 and Xcode 10 were added to the continuous integration suite at Travis.</li> <li>Added lgtm checks to pull requests.</li> <li>Added tests for CMake integration. #1260</li> </ul>"},{"location":"home/releases/#deprecated-functions_8","title":"Deprecated functions","text":"<p>This release does not deprecate any functions. As an overview, the following functions have been deprecated in earlier versions and will be removed in the next major version (i.e., 4.0.0):</p> <ul> <li>Function <code>iterator_wrapper</code> are deprecated. Please use the member function <code>items()</code> instead.</li> <li>Functions <code>friend std::istream&amp; operator&lt;&lt;(basic_json&amp;, std::istream&amp;)</code> and <code>friend std::ostream&amp; operator&gt;&gt;(const basic_json&amp;, std::ostream&amp;)</code> are deprecated. Please use <code>friend std::istream&amp;  operator&gt;&gt;(std::istream&amp;, basic_json&amp;)</code> and <code>friend operator&lt;&lt;(std::ostream&amp;, const basic_json&amp;)</code> instead.</li> </ul>"},{"location":"home/releases/#v320","title":"v3.2.0","text":"<p>Files</p> <ul> <li>include.zip (124 KB)</li> <li>include.zip.asc (1 KB)</li> <li>json.hpp (636 KB)</li> <li>json.hpp.asc (1 KB)</li> </ul> <p>Release date: 2018-08-20 SHA-256: ce6b5610a051ec6795fa11c33854abebb086f0fd67c311f5921c3c07f9531b44 (json.hpp), 35ee642558b90e2f9bc758995c4788c4b4d4dec54eef95fb8f38cb4d49c8fc7c (include.zip)</p>"},{"location":"home/releases/#summary_9","title":"Summary","text":"<p>This release introduces a SAX interface to the library. While this may be a very special feature used by only few people, it allowed to unify all functions that consumed input and created some kind of JSON value. Internally, now all existing functions like <code>parse</code>, <code>accept</code>, <code>from_cbor</code>, <code>from_msgpack</code>, and <code>from_ubjson</code> use the SAX interface with different event processors. This allowed to separate the input processing from the value generation. Furthermore, throwing an exception in case of a parse error is now optional and up to the event processor. Finally, the JSON parser is now non-recursive (meaning it does not use the call stack, but <code>std::vector&lt;bool&gt;</code> to track the hierarchy of structured values) which allows to process nested input more efficiently.</p> <p>Furthermore, the library finally is able to parse from wide string types. This is the first step toward opening the library from UTF-8 to UTF-16 and UTF-32.</p> <p>This release further fixes several bugs in the library. All changes are backward-compatible.</p>"},{"location":"home/releases/#new-features_5","title":"New Features","text":"<ul> <li>added a parser with a SAX interface (#971, #1153)</li> <li>support to parse from wide string types <code>std::wstring</code>, <code>std::u16string</code>, and <code>std::u32string</code>; the input will be converted to UTF-8 (#1031)</li> <li>added support for <code>std::string_view</code> when using C++17 (#1028)</li> <li>allow to roundtrip <code>std::map</code> and <code>std::unordered_map</code> from JSON if key type is not convertible to string; in these cases, values are serialized to arrays of pairs (#1079, #1089, #1133, #1138)</li> </ul>"},{"location":"home/releases/#bug-fixes_9","title":"Bug Fixes","text":"<ul> <li>allow to create <code>nullptr_t</code> from JSON allowing to properly roundtrip <code>null</code> values (#1169)</li> <li>allow compare user-defined string types (#1130)</li> <li>better support for algorithms using iterators from <code>items()</code> (#1045, #1134)</li> <li>added parameter to avoid compilation error with MSVC 2015 debug builds (#1114)</li> <li>re-added accidentally skipped unit tests (#1176)</li> <li>fixed MSVC issue with <code>std::swap</code> (#1168)</li> </ul>"},{"location":"home/releases/#improvements_6","title":"Improvements","text":"<ul> <li><code>key()</code> function for iterators returns a const reference rather than a string copy (#1098)</li> <li>binary formats CBOR, MessagePack, and UBJSON now supports <code>float</code> as type for floating-point numbers (#1021)</li> </ul>"},{"location":"home/releases/#further-changes_8","title":"Further Changes","text":"<ul> <li>changed issue templates</li> <li>improved continuous integration: added builders for Xcode 9.3 and 9.4, added builders for GCC 8 and Clang 6, added builder for MinGW, added builders for MSVC targeting x86</li> <li>required CMake version is now at least 3.8 (#1040)</li> <li>overworked CMake file wrt. packaging (#1048)</li> <li>added package managers: Spack (#1041) and CocoaPods (#1148)</li> <li>fixed Meson include directory (#1142)</li> <li>preprocessor macro <code>JSON_SKIP_UNSUPPORTED_COMPILER_CHECK</code> can skip the rejection of unsupported compilers - use at your own risk! (#1128)</li> <li>preprocessor macro <code>JSON_INTERNAL_CATCH</code>/<code>JSON_INTERNAL_CATCH_USER</code> allows to control the behavior of exception handling inside the library (#1187)</li> <li>added note on <code>char</code> to JSON conversion</li> <li>added note how to send security-related issue via encrypted email</li> <li>removed dependency to <code>std::stringstream</code> (#1117)</li> <li>added SPDX-License-Identifier</li> <li>added updated JSON Parsing Test Suite, described in Parsing JSON is a Minefield \ud83d\udca3</li> <li>updated to Catch 1.12.0</li> </ul>"},{"location":"home/releases/#deprecated-functions_9","title":"Deprecated functions","text":"<p>This release does not deprecate any functions. As an overview, the following functions have been deprecated in earlier versions and will be removed in the next major version (i.e., 4.0.0):</p> <ul> <li>Function <code>iterator_wrapper</code> are deprecated. Please use the member function <code>items()</code> instead.</li> <li>Functions <code>friend std::istream&amp; operator&lt;&lt;(basic_json&amp;, std::istream&amp;)</code> and <code>friend std::ostream&amp; operator&gt;&gt;(const basic_json&amp;, std::ostream&amp;)</code> are deprecated. Please use <code>friend std::istream&amp;  operator&gt;&gt;(std::istream&amp;, basic_json&amp;)</code> and <code>friend operator&lt;&lt;(std::ostream&amp;, const basic_json&amp;)</code> instead.</li> </ul>"},{"location":"home/releases/#v312","title":"v3.1.2","text":"<p>Files</p> <ul> <li>include.zip (115 KB)</li> <li>include.zip.asc (1 KB)</li> <li>json.hpp (582 KB)</li> <li>json.hpp.asc (1 KB)</li> </ul> <p>Release date: 2018-03-14 SHA-256: fbdfec4b4cf63b3b565d09f87e6c3c183bdd45c5be1864d3fcb338f6f02c1733 (json.hpp), 495362ee1b9d03d9526ba9ccf1b4a9c37691abe3a642ddbced13e5778c16660c (include.zip)</p>"},{"location":"home/releases/#summary_10","title":"Summary","text":"<p>This release fixes several bugs in the library. All changes are backward-compatible.</p>"},{"location":"home/releases/#bug-fixes_10","title":"Bug Fixes","text":"<ul> <li>Fixed a memory leak occurring in the parser callback (#1001).</li> <li>Different specializations of <code>basic_json</code> (e.g., using different template arguments for strings or objects) can now be used in assignments (#972, #977, #986).</li> <li>Fixed a logical error in an iterator range check (#992).</li> </ul>"},{"location":"home/releases/#improvements_7","title":"Improvements","text":"<ul> <li>The parser and the serialization now support user-defined string types (#1006, #1009).</li> </ul>"},{"location":"home/releases/#further-changes_9","title":"Further Changes","text":"<ul> <li>Clang Analyzer is now used as additional static analyzer; see <code>make clang_analyze</code>.</li> <li>Overworked README by adding links to the documentation (#981).</li> </ul>"},{"location":"home/releases/#deprecated-functions_10","title":"Deprecated functions","text":"<p>This release does not deprecate any functions. As an overview, the following functions have been deprecated in earlier versions and will be removed in the next major version (i.e., 4.0.0):</p> <ul> <li>Function <code>iterator_wrapper</code> are deprecated. Please use the member function <code>items()</code> instead.</li> <li>Functions <code>friend std::istream&amp; operator&lt;&lt;(basic_json&amp;, std::istream&amp;)</code> and <code>friend std::ostream&amp; operator&gt;&gt;(const basic_json&amp;, std::ostream&amp;)</code> are deprecated. Please use <code>friend std::istream&amp;  operator&gt;&gt;(std::istream&amp;, basic_json&amp;)</code> and <code>friend operator&lt;&lt;(std::ostream&amp;, const basic_json&amp;)</code> instead.</li> </ul>"},{"location":"home/releases/#v311","title":"v3.1.1","text":"<p>Files</p> <ul> <li>include.zip (114 KB)</li> <li>include.zip.asc (1 KB)</li> <li>json.hpp (577 KB)</li> <li>json.hpp.asc (1 KB)</li> </ul> <p>Release date: 2018-02-13 SHA-256: e14ce5e33d6a2daf748026bd4947f3d9686ca4cfd53d10c3da46a0a9aceb7f2e (json.hpp), fde771d4b9e4f222965c00758a2bdd627d04fb7b59e09b7f3d1965abdc848505 (include.zip)</p>"},{"location":"home/releases/#summary_11","title":"Summary","text":"<p>This release fixes several bugs in the library. All changes are backward-compatible.</p>"},{"location":"home/releases/#bug-fixes_11","title":"Bug Fixes","text":"<ul> <li>Fixed parsing of CBOR strings with indefinite length (#961). Earlier versions of this library misinterpreted the CBOR standard and rejected input with the <code>0x7F</code> start byte.</li> <li>Fixed user-defined conversion to vector type (#924, #969). A wrong SFINAE check rejected code though a user-defined conversion was provided.</li> <li>Fixed documentation of the parser behavior for objects with duplicate keys (#963). The exact behavior is not specified by RFC 8259 and the library now also provides no guarantee which object key is stored.</li> <li>Added check to detect memory overflow when parsing UBJSON containers (#962). The optimized UBJSON format allowed for specifying an array with billions of <code>null</code> elements with a few bytes and the library did not check whether this size exceeded <code>max_size()</code>.</li> </ul>"},{"location":"home/releases/#further-changes_10","title":"Further Changes","text":"<ul> <li>Code coverage is now calculated for the individual header files, allowing to find uncovered lines more quickly than by browsing through the single header version (#953, #957).</li> <li>A Makefile target <code>run_benchmarks</code> was added to quickly build and run the benchmark suite.</li> <li>The documentation was harmonized with respect to the header inclusion (#955). Now all examples and the README use <code>#include &lt;nlohmann/json.hpp&gt;</code> to allow for selecting <code>single_include</code> or <code>include</code> or whatever installation folder as include directory.</li> <li>Added note on how to use the library with the cget package manager (#954).</li> </ul>"},{"location":"home/releases/#deprecated-functions_11","title":"Deprecated functions","text":"<p>This release does not deprecate any functions. As an overview, the following functions have been deprecated in earlier versions and will be removed in the next major version (i.e., 4.0.0):</p> <ul> <li>Function <code>iterator_wrapper</code> are deprecated. Please use the member function <code>items()</code> instead.</li> <li>Functions <code>friend std::istream&amp; operator&lt;&lt;(basic_json&amp;, std::istream&amp;)</code> and <code>friend std::ostream&amp; operator&gt;&gt;(const basic_json&amp;, std::ostream&amp;)</code> are deprecated. Please use <code>friend std::istream&amp;  operator&gt;&gt;(std::istream&amp;, basic_json&amp;)</code> and <code>friend operator&lt;&lt;(std::ostream&amp;, const basic_json&amp;)</code> instead.</li> </ul>"},{"location":"home/releases/#v310","title":"v3.1.0","text":"<p>Files</p> <ul> <li>include.zip (114 KB)</li> <li>include.zip.asc (1 KB)</li> <li>json.hpp (577 KB)</li> <li>json.hpp.asc (1 KB)</li> </ul> <p>Release date: 2018-02-01 SHA-256: d40f614d10a6e4e4e80dca9463da905285f20e93116c36d97d4dc1aa63d10ba4 (json.hpp), 2b7234fca394d1e27b7e017117ed80b7518fafbb4f4c13a7c069624f6f924673 (include.zip)</p>"},{"location":"home/releases/#summary_12","title":"Summary","text":"<p>This release adds support for the UBJSON format and JSON Merge Patch. It also contains some minor changes and bug fixes. All changes are backward-compatible.</p>"},{"location":"home/releases/#new-features_6","title":"New features","text":"<ul> <li>The library now supports UBJSON (Universal Binary JSON Specification) as binary format to read and write JSON values space-efficiently. See the documentation overview for a comparison of the different formats CBOR, MessagePack, and UBJSON.</li> <li>JSON Merge Patch (RFC 7386) offers an intuitive means to describe patches between JSON values (#876, #877). See the documentation of <code>merge_patch</code> for more information.</li> </ul>"},{"location":"home/releases/#improvements_8","title":"Improvements","text":"<ul> <li>The library now uses the Grisu2 algorithm for printing floating-point numbers (based on the reference implementation by Florian Loitsch) which produces a short representation which is guaranteed to round-trip (#360, #935, #936).</li> <li>The UTF-8 handling was further simplified by using the decoder of Bj\u00f6rn Hoehrmann in more scenarios.</li> </ul>"},{"location":"home/releases/#reorganization","title":"Reorganization","text":"<ul> <li>Though the library is released as a single header, its development got more and more complicated. With this release, the header is split into several files and the single-header file <code>json.hpp</code> can be generated from these development sources. In the repository, folder <code>include</code> contains the development sources and <code>single_include</code> contains the single <code>json.hpp</code> header (#700, #906, #907, #910, #911, #915, #920, #924, #925, #928, #944).</li> <li>The split further allowed for a forward declaration header <code>include/nlohmann/json_fwd.hpp</code> to speed up compilation times (#314).</li> </ul>"},{"location":"home/releases/#further-changes_11","title":"Further changes","text":"<ul> <li>Google Benchmark is now used for micro benchmarks (see <code>benchmarks</code> folder, #921).</li> <li>The serialization (JSON and binary formats) now properly work with the libraries string template parameter, allowing for optimized string implementations to be used in constraint environments such as embedded software (#941, #950).</li> <li>The exceptional behavior can now be overridden by defining macros <code>JSON_THROW_USER</code>, <code>JSON_TRY_USER</code>, and <code>JSON_CATCH_USER</code>, defining the behavior of <code>throw</code>, <code>try</code> and <code>catch</code>, respectively. This allows to switch off C++'s exception mechanism yet still execute user-defined code in case an error condition occurs (#938).</li> <li>To facilitate the interplay with flex and Bison, the library does not use the variable name <code>yytext</code> any more as it could clash with macro definitions (#933).</li> <li>The library now defines <code>NLOHMANN_JSON_VERSION_MAJOR</code>, <code>NLOHMANN_JSON_VERSION_MINOR</code>, and <code>NLOHMANN_JSON_VERSION_PATCH</code> to allow for conditional compilation based on the included library version (#943, #948).</li> <li>A compilation error with ICC has been fixed (#947).</li> <li>Typos and links in the documentation have been fixed (#900, #930).</li> <li>A compiler error related to incomplete types has been fixed (#919).</li> <li>The tests form the UTF-8 decoder stress test have been added to the test suite.</li> </ul>"},{"location":"home/releases/#deprecated-functions_12","title":"Deprecated functions","text":"<ul> <li>Function <code>iterator_wrapper</code> has been deprecated (#874). Since its introduction, the name was up for discussion, as it was too technical. We now introduced the member function <code>items()</code> with the same semantics. <code>iterator_wrapper</code> will be removed in the next major version (i.e., 4.0.0).</li> </ul> <p>Furthermore, the following functions are deprecated since version 3.0.0 and will be removed in the next major version (i.e., 4.0.0):</p> <ul> <li><code>friend std::istream&amp; operator&lt;&lt;(basic_json&amp;, std::istream&amp;)</code></li> <li><code>friend std::ostream&amp; operator&gt;&gt;(const basic_json&amp;, std::ostream&amp;)</code></li> </ul> <p>Please use <code>friend std::istream&amp;  operator&gt;&gt;(std::istream&amp;, basic_json&amp;)</code> and <code>friend operator&lt;&lt;(std::ostream&amp;, const basic_json&amp;)</code> instead.</p>"},{"location":"home/releases/#v301","title":"v3.0.1","text":"<p>Files</p> <ul> <li>json.hpp (502 KB)</li> <li>json.hpp.asc (1 KB)</li> </ul> <p>Release date: 2017-12-29 SHA-256: c9b3591f1bb94e723a0cd7be861733a3a555b234ef132be1e9027a0364118c4c</p>"},{"location":"home/releases/#summary_13","title":"Summary","text":"<p>This release fixes small issues in the implementation of JSON Pointer and JSON Patch. All changes are backward-compatible.</p>"},{"location":"home/releases/#changes","title":"Changes","text":"<ul> <li> The \"copy\" operation of JSON Patch (RFC 6902) requests that it is an error if the target path points into a non-existing array or object (see #894 for a detailed description). This release fixes the implementation to detect such invalid target paths and throw an exception.</li> <li> An array index in a JSON Pointer (RFC 6901) must be an integer. This release fixes the implementation to throw an exception in case invalid array indices such as <code>10e2</code> are used.</li> <li> Added the JSON Patch tests from Byron Ruth and Mike McCabe.</li> <li> Fixed the documentation of the <code>at(ptr)</code> function with JSON Pointers to list all possible exceptions (see #888).</li> <li> Updated the container overview documentation (see #883).</li> <li> The CMake files now respect the <code>BUILD_TESTING</code> option (see #846, #885)</li> <li> Fixed some compiler warnings (see #858, #882).</li> </ul>"},{"location":"home/releases/#deprecated-functions_13","title":"Deprecated functions","text":"<p> To unify the interfaces and to improve similarity with the STL, the following functions are deprecated since version 3.0.0 and will be removed in the next major version (i.e., 4.0.0):</p> <ul> <li><code>friend std::istream&amp; operator&lt;&lt;(basic_json&amp;, std::istream&amp;)</code></li> <li><code>friend std::ostream&amp; operator&gt;&gt;(const basic_json&amp;, std::ostream&amp;)</code></li> </ul> <p>Please use <code>friend std::istream&amp;  operator&gt;&gt;(std::istream&amp;, basic_json&amp;)</code> and <code>friend operator&lt;&lt;(std::ostream&amp;, const basic_json&amp;)</code> instead.</p>"},{"location":"home/releases/#v300","title":"v3.0.0","text":"<p>Files</p> <ul> <li>json.hpp (501 KB)</li> <li>json.hpp.asc (1 KB)</li> </ul> <p>Release date: 2017-12-17 SHA-256: 076d4a0cb890a3c3d389c68421a11c3d77c64bd788e85d50f1b77ed252f2a462</p>"},{"location":"home/releases/#summary_14","title":"Summary","text":"<p>After almost a year, here is finally a new release of JSON for Modern C++, and it is a major one! As we adhere to semantic versioning, this means the release includes some breaking changes, so please read the next section carefully before you update. But don't worry, we also added a few new features and put a lot of effort into fixing a lot of bugs and straighten out a few inconsistencies.</p>"},{"location":"home/releases/#breaking-changes","title":"Breaking changes","text":"<p>This section describes changes that change the public API of the library and may require changes in code using a previous version of the library. In section \"Moving from 2.x.x to 3.0.0\" at the end of the release notes, we describe in detail how existing code needs to be changed.</p> <ul> <li>The library now uses user-defined exceptions instead of reusing those defined in <code>&lt;stdexcept&gt;</code> (#244). This not only allows to add more information to the exceptions (every exception now has an identifier, and parse errors contain the position of the error), but also to easily catch all library exceptions with a single <code>catch(json::exception)</code>.</li> <li>When strings with a different encoding as UTF-8 were stored in JSON values, their serialization could not be parsed by the library itself, as only UTF-8 is supported. To enforce this library limitation and improve consistency, non-UTF-8 encoded strings now yield a <code>json::type_error</code> exception during serialization (#838). The check for valid UTF-8 is realized with code from Bj\u00f6rn Hoehrmann.</li> <li>NaN and infinity values can now be stored inside the JSON value without throwing an exception. They are, however, still serialized as <code>null</code> (#388).</li> <li>The library's iterator tag was changed from RandomAccessIterator to BidirectionalIterator (#593). Supporting RandomAccessIterator was incorrect as it assumed an ordering of values in a JSON objects which are unordered by definition.</li> <li>The library does not include the standard headers <code>&lt;iostream&gt;</code>, <code>&lt;ctype&gt;</code>, and <code>&lt;stdexcept&gt;</code> any more. You may need to add these headers to code relying on them.</li> <li>Removed constructor <code>explicit basic_json(std::istream&amp; i, const parser_callback_t cb = nullptr)</code> which was deprecated in version 2.0.0 (#480).</li> </ul>"},{"location":"home/releases/#deprecated-functions_14","title":"Deprecated functions","text":"<p>To unify the interfaces and to improve similarity with the STL, the following functions are now deprecated and will be removed in the next major version (i.e., 4.0.0):</p> <ul> <li><code>friend std::istream&amp; operator&lt;&lt;(basic_json&amp;, std::istream&amp;)</code></li> <li><code>friend std::ostream&amp; operator&gt;&gt;(const basic_json&amp;, std::ostream&amp;)</code></li> </ul> <p>Please use <code>friend std::istream&amp;  operator&gt;&gt;(std::istream&amp;, basic_json&amp;)</code> and <code>friend operator&lt;&lt;(std::ostream&amp;, const basic_json&amp;)</code> instead.</p>"},{"location":"home/releases/#new-features_7","title":"New features","text":"<p>With all this breaking and deprecation out of the way, let's talk about features!</p> <ul> <li>We improved the diagnostic information for syntax errors (#301). Now, an exception <code>json::parse_error</code> is thrown which contains a detailed message on the error, but also a member <code>byte</code> to indicate the byte offset in the input where the error occurred.</li> <li>We added a non-throwing syntax check (#458): The new <code>accept</code> function returns a Boolean indicating whether the input is proper JSON. We also added a Boolean parameter <code>allow_exceptions</code> to the existing <code>parse</code> functions to return a <code>discarded</code> value in case a syntax error occurs instead of throwing an exception.</li> <li>An <code>update</code> function was added to merge two JSON objects (#428). In case you are wondering: the name was inspired by Python.</li> <li>The <code>insert</code> function now also supports an iterator range to add elements to an object.</li> <li>The binary exchange formats CBOR and MessagePack can now be parsed from input streams and written to output streams (#477).</li> <li>Input streams are now only read until the end of a JSON value instead of the end of the input (#367).</li> <li>The serialization function <code>dump</code> now has two optional parameters <code>ensure_ascii</code> to escape all non-ASCII characters with <code>\\uxxxx</code> and an <code>indent_char</code> parameter to choose whether to indent with spaces or tabs (#654). </li> <li>Added built-in type support for C arrays (#502), <code>std::pair</code> and <code>std::tuple</code> (#563, #614), <code>enum</code> and <code>enum class</code> (#545), <code>std::vector&lt;bool&gt;</code> (#494). Fixed support for <code>std::valarray</code> (#702), <code>std::array</code> (#553), and <code>std::map&lt;std::string, std::string&gt;</code> (#600, #607).</li> </ul>"},{"location":"home/releases/#further-changes_12","title":"Further changes","text":"<p>Furthermore, there have been a lot of changes under the hood:</p> <ul> <li>Replaced the re2c generated scanner by a self-coded version which allows for a better modularization of the parser and better diagnostics. To test the new scanner, we added millions (8,860,608 to be exact) of unit tests to check all valid and invalid byte sequences of the Unicode standard.</li> <li>Google's OSS-Fuzz is still constantly fuzz-testing the library and found several issues that were fixed in this release (#497, #504, #514, #516, #518, #519, #575).</li> <li>We now also ignore UTF-8 byte order marks when parsing from an iterator range (#602).</li> <li>Values can be now moved from initializer lists (#663).</li> <li>Updated to Catch 1.9.7. Unfortunately, Catch2 currently has some performance issues.</li> <li>The non-exceptional paths of the library are now annotated with <code>__builtin_expect</code> to optimize branch prediction as long as no error occurs.</li> <li>MSVC now produces a stack trace in MSVC if a <code>from_json</code> or <code>to_json</code> function was not found for a user-defined type. We also added a debug visualizer <code>nlohmann_json.natvis</code> for better debugging in MSVC (#844).</li> <li>Overworked the documentation and added even more examples.</li> <li>The build workflow now relies on CMake and CTest. Special flags can be chosen with CMake, including coverage (<code>JSON_Coverage</code>), compilation without exceptions (<code>JSON_NoExceptions</code>), LLVM sanitizers (<code>JSON_Sanitizer</code>), or execution with Valgrind (<code>JSON_Valgrind</code>).</li> <li>Added support for package managers Meson (#576), Conan (#566), Hunter (#671, #829), and vcpkg (#753).</li> <li>Added CI builders: Xcode 8.3, 9.0, 9.1, and 9.2; GCC 7.2; Clang 3.8, 3.9, 4.0, and 5.0; Visual Studio 2017. The library is further built with C++17 settings on the latest Clang, GCC, and MSVC version to quickly detect new issues.</li> </ul>"},{"location":"home/releases/#moving-from-2xx-to-300","title":"Moving from 2.x.x to 3.0.0","text":""},{"location":"home/releases/#user-defined-exceptions","title":"User-defined Exceptions","text":"<p>There are five different exceptions inheriting from <code>json::exception</code>:</p> <ul> <li><code>json::parse_error</code> for syntax errors (including the binary formats),</li> <li><code>json::invalid_iterator</code> for errors related to iterators,</li> <li><code>json::type_error</code> for errors where functions were called with the wrong JSON type,</li> <li><code>json::out_of_range</code> for range errors, and</li> <li><code>json::other_error</code> for miscellaneous errors.</li> </ul> <p>To support these exception, the <code>try</code>/<code>catch</code> blocks of your code need to be adjusted:</p> new exception previous exception parse_error.101 invalid_argument parse_error.102 invalid_argument parse_error.103 invalid_argument parse_error.104 invalid_argument parse_error.105 invalid_argument parse_error.106 domain_error parse_error.107 domain_error parse_error.108 domain_error parse_error.109 invalid_argument parse_error.110 out_of_range parse_error.111 invalid_argument parse_error.112 invalid_argument invalid_iterator.201 domain_error invalid_iterator.202 domain_error invalid_iterator.203 domain_error invalid_iterator.204 out_of_range invalid_iterator.205 out_of_range invalid_iterator.206 domain_error invalid_iterator.207 domain_error invalid_iterator.208 domain_error invalid_iterator.209 domain_error invalid_iterator.210 domain_error invalid_iterator.211 domain_error invalid_iterator.212 domain_error invalid_iterator.213 domain_error invalid_iterator.214 out_of_range type_error.301 domain_error type_error.302 domain_error type_error.303 domain_error type_error.304 domain_error type_error.305 domain_error type_error.306 domain_error type_error.307 domain_error type_error.308 domain_error type_error.309 domain_error type_error.310 domain_error type_error.311 domain_error type_error.313 domain_error type_error.314 domain_error type_error.315 domain_error out_of_range.401 out_of_range out_of_range.402 out_of_range out_of_range.403 out_of_range out_of_range.404 out_of_range out_of_range.405 domain_error other_error.501 domain_error"},{"location":"home/releases/#handling-of-nan-and-inf","title":"Handling of NaN and INF","text":"<ul> <li> <p>If an overflow occurs during parsing a number from a JSON text, an exception <code>json::out_of_range</code> is thrown so that the overflow is detected early and roundtripping is guaranteed.</p> </li> <li> <p>NaN and INF floating-point values can be stored in a JSON value and are not replaced by null. That is, the basic_json class behaves like <code>double</code> in this regard (no exception occurs). However, NaN and INF are serialized to <code>null</code>.</p> </li> </ul>"},{"location":"home/releases/#removal-of-deprecated-functions","title":"Removal of deprecated functions","text":"<p>Function <code>explicit basic_json(std::istream&amp; i, const parser_callback_t cb = nullptr)</code> should be replaced by the <code>parse</code> function: Let <code>ss</code> be a stream and <code>cb</code> be a parse callback function.</p> <p>Old code:</p> <pre><code>json j(ss, cb);\n</code></pre> <p>New code:</p> <pre><code>json j = json::parse(ss, cb);\n</code></pre> <p>If no callback function is used, also the following code works:</p> <pre><code>json j;\nj &lt;&lt; ss;\n</code></pre> <p>or</p> <pre><code>json j;\nss &gt;&gt; j;\n</code></pre>"},{"location":"home/releases/#v211","title":"v2.1.1","text":"<p>Files</p> <ul> <li>json.hpp (437 KB)</li> <li>json.hpp.asc (1 KB)</li> </ul> <p>Release date: 2017-02-25 SHA-256: faa2321beb1aa7416d035e7417fcfa59692ac3d8c202728f9bcc302e2d558f57</p>"},{"location":"home/releases/#summary_15","title":"Summary","text":"<p>This release fixes a locale-related bug in the parser. To do so, the whole number handling (lexer, parser, and also the serialization) have been overworked. Furthermore, a lot of small changes added up that were added to this release. All changes are backward-compatible.</p>"},{"location":"home/releases/#changes_1","title":"Changes","text":"<ul> <li> Locales that have a different character than <code>.</code> as decimal separator (e.g., the Norwegian locale <code>nb_NO.UTF-8</code>) led to truncated number parsing or parse errors. The library now has been fixed to work with any locale. Note that <code>.</code> is still the only valid decimal separator for JSON input.</li> <li> Numbers like <code>1.0</code> were correctly parsed as floating-point number, but serialized as integer (<code>1</code>). Now, floating-point numbers correctly round trip.</li> <li> Parsing incorrect JSON numbers with leading 0 (<code>0123</code>) could yield a buffer overflow. This is fixed now by detecting such errors directly by the lexer.</li> <li> Constructing a JSON value from a pointer was incorrectly interpreted as a Boolean; such code will now yield a compiler error.</li> <li> Comparing a JSON number with <code>0</code> led to a comparison with <code>null</code>. This is fixed now.</li> <li> All throw calls are now wrapped in macros.</li> <li> Starting during the preparation of this release (since 8 February 2017), commits and released files are cryptographically signed with this GPG key. Previous releases have also been signed.</li> <li> The parser for MessagePack and CBOR now supports an optional start index parameter to define a byte offset for the parser.</li> <li> Some more warnings have been fixed. With Clang, the code compiles without warnings with <code>-Weverything</code> (well, it needs <code>-Wno-documentation-unknown-command</code> and <code>-Wno-deprecated-declarations</code>, but you get the point).</li> <li> The code can be compiled easier with many Android NDKs by avoiding macros like <code>UINT8_MAX</code> which previously required defining a preprocessor macro for compilation.</li> <li> The unit tests now compile two times faster.</li> <li> Cotire is used to speed up the build.</li> <li> Fixed a lot of typos in the documentation.</li> <li> Added a section to the README file that lists all used third-party code/tools.</li> <li> Added a note on constructing a string value vs. parsing.</li> <li> The test suite now contains 11202597 unit tests.</li> <li> Improved the Doxygen documentation by shortening the template parameters of class <code>basic_json</code>.</li> <li> Removed Doozer.</li> <li> Added Codacity.</li> <li> Upgraded Catch to version 1.7.2.</li> </ul>"},{"location":"home/releases/#v210","title":"v2.1.0","text":"<p>Files</p> <ul> <li>json.hpp (426 KB)</li> <li>json.hpp.asc (1 KB)</li> </ul> <ul> <li>Release date: 2017-01-28</li> <li>SHA-256: a571dee92515b685784fd527e38405cf3f5e13e96edbfe3f03d6df2e363a767b</li> </ul>"},{"location":"home/releases/#summary_16","title":"Summary","text":"<p>This release introduces a means to convert from/to user-defined types. The release is backwards compatible.</p> <p></p>"},{"location":"home/releases/#changes_2","title":"Changes","text":"<ul> <li> The library now offers an elegant way to convert from and to arbitrary value types. All you need to do is to implement two functions: <code>to_json</code> and <code>from_json</code>. Then, a conversion is as simple as putting a <code>=</code> between variables. See the README for more information and examples.</li> <li> Exceptions can now be switched off. This can be done by defining the preprocessor symbol <code>JSON_NOEXCEPTION</code> or by passing <code>-fno-exceptions</code> to your compiler. In case the code would usually thrown an exception, <code>abort()</code> is now called.</li> <li> Information on the library can be queried with the new (static) function <code>meta()</code> which returns a JSON object with information on the version, compiler, and platform. See the documentation for an example.</li> <li> A bug in the CBOR parser was fixed which led to a buffer overflow.</li> <li> The function <code>type_name()</code> is now public. It allows to query the type of a JSON value as string.</li> <li> Added the Big List of Naughty Strings as test case.</li> <li> Updated to Catch v1.6.0.</li> <li> Some typos in the documentation have been fixed.</li> </ul>"},{"location":"home/releases/#v2010","title":"v2.0.10","text":"<p>Files</p> <ul> <li>json.hpp (409 KB)</li> <li>json.hpp.asc (1 KB)</li> </ul> <ul> <li>Release date: 2017-01-02</li> <li>SHA-256: ec27d4e74e9ce0f78066389a70724afd07f10761009322dc020656704ad5296d</li> </ul>"},{"location":"home/releases/#summary_17","title":"Summary","text":"<p>This release fixes several security-relevant bugs in the MessagePack and CBOR parsers. The fixes are backwards compatible.</p>"},{"location":"home/releases/#changes_3","title":"Changes","text":"<ul> <li> Fixed a lot of bugs in the CBOR and MesssagePack parsers. These bugs occurred if invalid input was parsed and then could lead in buffer overflows. These bugs were found with Google's OSS-Fuzz, see #405, #407, #408, #409, #411, and #412 for more information.</li> <li> We now also use the Doozer continuous integration platform.</li> <li> The complete test suite is now also run with Clang's address sanitizer and undefined-behavior sanitizer.</li> <li> Overworked fuzz testing; CBOR and MessagePack implementations are now fuzz-tested. Furthermore, all fuzz tests now include a round trip which ensures created output can again be properly parsed and yields the same JSON value.</li> <li> Clarified documentation of <code>find()</code> function to always return <code>end()</code> when called on non-object value types.</li> <li> Moved thirdparty test code to <code>test/thirdparty</code> directory.</li> </ul>"},{"location":"home/releases/#v209","title":"v2.0.9","text":"<p>Files</p> <ul> <li>json.hpp (406 KB)</li> <li>json.hpp.asc (1 KB)</li> </ul> <ul> <li>Release date: 2016-12-16</li> <li>SHA-256: fbf3396f13e187d6c214c297bddc742d918ea9b55e10bfb3d9f458b9bfdc22e5</li> </ul>"},{"location":"home/releases/#summary_18","title":"Summary","text":"<p>This release implements with CBOR and MessagePack two binary serialization/deserialization formats. It further contains some small fixes and improvements. The fixes are backwards compatible.</p> <p></p>"},{"location":"home/releases/#changes_4","title":"Changes","text":"<ul> <li> The library can now read and write the binary formats CBOR (Concise Binary Object Representation) and MessagePack. Both formats are aimed to produce a very compact representation of JSON which can be parsed very efficiently. See the  README file for more information and examples.</li> <li> simplified the iteration implementation allowing to remove dozens of lines of code</li> <li> fixed an integer overflow error detected by Google's OSS-Fuzz</li> <li> suppressed documentation warnings inside the library to facilitate compilation with <code>-Wdocumentation</code></li> <li> fixed an overflow detection error in the number parser</li> <li> updated contribution guidelines to a list of frequentely asked features that will most likely be never added to the library</li> <li>  added a table of contents to the README file to add some structure</li> <li> mentioned the many examples and the documentation in the README file</li> <li> split unit tests into individual independent binaries to speed up compilation and testing</li> <li> the test suite now contains 11201886 tests</li> </ul>"},{"location":"home/releases/#v208","title":"v2.0.8","text":"<p>Files</p> <ul> <li>json.hpp (360 KB)</li> <li>json.hpp.asc (1 KB)</li> </ul> <ul> <li>Release date: 2016-12-02</li> <li>SHA-256: b70db0ad34f8e0e61dc3f0cbab88099336c9674c193d8a3439d93d6aca2d7120</li> </ul>"},{"location":"home/releases/#summary_19","title":"Summary","text":"<p>This release combines a lot of small fixes and improvements. The fixes are backwards compatible.</p>"},{"location":"home/releases/#changes_5","title":"Changes","text":"<ul> <li> fixed a bug that froze the parser if a passed file was not found (now, <code>std::invalid_argument</code> is thrown)</li> <li> fixed a bug that lead to an error of a file at EOF was parsed again (now, <code>std::invalid_argument</code> is thrown)</li> <li> the well known functions <code>emplace</code> and <code>emplace_back</code> have been added to JSON values and work as expected</li> <li> improved the performance of the serialization (<code>dump</code> function)</li> <li> improved the performance of the deserialization (parser)</li> <li> some continuous integration images at Travis were added and retired; see here for the current continuous integration setup</li> <li> the Coverity scan works again</li> <li> the benchmarking code has been improved to produce more stable results</li> <li> the README file has been extended and includes more frequently asked examples</li> <li> the test suite now contains 8905518 tests</li> <li> updated Catch to version 1.5.8</li> </ul>"},{"location":"home/releases/#v207","title":"v2.0.7","text":"<p>Files</p> <ul> <li>json.hpp (355 KB)</li> <li>json.hpp.asc (1 KB)</li> </ul> <ul> <li>Release date: 2016-11-02</li> <li>SHA-256: 5545c323670f8165bae90b9dc6078825e86ec310d96cc4e5b47233ea43715bbf</li> </ul>"},{"location":"home/releases/#summary_20","title":"Summary","text":"<p>This release fixes a few bugs in the JSON parser found in the Parsing JSON is a Minefield \ud83d\udca3 article. The fixes are backwards compatible.</p>"},{"location":"home/releases/#changes_6","title":"Changes","text":"<ul> <li>The article Parsing JSON is a Minefield \ud83d\udca3 discusses a lot of pitfalls of the JSON specification. When investigating the published test cases, a few bugs in the library were found and fixed:</li> <li>Files with less than 5 bytes can now be parsed without error.</li> <li>The library now properly rejects any file encoding other than UTF-8. Furthermore, incorrect surrogate pairs are properly detected and rejected.</li> <li>The library now accepts all but one \"yes\" test (y_string_utf16.json): UTF-16 is not supported.</li> <li>The library rejects all but one \"no\" test (n_number_then_00.json): Null bytes are treated as end of file instead of an error. This allows to parse input from null-terminated strings.</li> <li>The string length passed to a user-defined string literal is now exploited to choose a more efficient constructor.</li> <li>A few grammar mistakes in the README file have been fixed.</li> </ul>"},{"location":"home/releases/#v206","title":"v2.0.6","text":"<p>Files</p> <ul> <li>json.hpp (349 KB)</li> <li>json.hpp.asc (1 KB)</li> </ul> <ul> <li>Release date: 2016-10-15</li> <li>SHA256: 459cc93d5e2f503e50c6d5876eb86bfea7daf405f5a567c5a2c9abc2383756ae</li> </ul>"},{"location":"home/releases/#summary_21","title":"Summary","text":"<p>This release fixes the semantics of <code>operator[]</code> for JSON Pointers (see below). This fix is backwards compatible.</p>"},{"location":"home/releases/#changes_7","title":"Changes","text":"<ul> <li><code>operator[]</code> for JSON Pointers now behaves like the other versions of <code>operator[]</code> and transforms <code>null</code> values into objects or arrays if required. This allows to created nested structures like <code>j[\"/foo/bar/2\"] = 17</code> (yielding <code>{\"foo\": \"bar\": [null, null, 17]}</code>) without problems.</li> <li>overworked a helper SFINAE function</li> <li>fixed some documentation issues</li> <li>fixed the CMake files to allow to run the test suite outside the main project directory</li> <li>restored test coverage to 100%.</li> </ul>"},{"location":"home/releases/#v205","title":"v2.0.5","text":"<p>Files</p> <ul> <li>json.hpp (347 KB)</li> <li>json.hpp.asc (1 KB)</li> </ul> <ul> <li>Release date: 2016-09-14</li> <li>SHA-256: 8b7565263a44e2b7d3b89808bc73d2d639037ff0c1f379e3d56dbd77e00b98d9</li> </ul>"},{"location":"home/releases/#summary_22","title":"Summary","text":"<p>This release fixes a regression bug in the stream parser (function <code>parse()</code> and the <code>&lt;&lt;</code>/<code>&gt;&gt;</code> operators). This fix is backwards compatible.</p>"},{"location":"home/releases/#changes_8","title":"Changes","text":"<ul> <li>Bug fix: The end of a file stream was not detected properly which led to parse errors. This bug should have been fixed with 2.0.4, but there was still a flaw in the code.</li> </ul>"},{"location":"home/releases/#v204","title":"v2.0.4","text":"<p>Files</p> <ul> <li>json.hpp (347 KB)</li> <li>json.hpp.asc (1 KB)</li> </ul> <ul> <li>Release date: 2016-09-11</li> <li>SHA-256: 632ceec4c25c4e2153f71470d3a2b992c8355f6d8b4d627d05dd16095cd3aeda</li> </ul>"},{"location":"home/releases/#summary_23","title":"Summary","text":"<p>This release fixes a bug in the stream parser (function <code>parse()</code> and the <code>&lt;&lt;</code>/<code>&gt;&gt;</code> operators). This fix is backwards compatible.</p>"},{"location":"home/releases/#changes_9","title":"Changes","text":"<ul> <li>Bug fix: The end of a file stream was not detected properly which led to parse errors.</li> <li>Fixed a compiler warning about an unused variable.</li> </ul>"},{"location":"home/releases/#v203","title":"v2.0.3","text":"<p>Files</p> <ul> <li>json.hpp (347 KB)</li> <li>json.hpp.asc (1 KB)</li> </ul> <ul> <li>Release date: 2016-08-31</li> <li>SHA-256: 535b73efe5546fde9e763c14aeadfc7b58183c0b3cd43c29741025aba6cf6bd3</li> </ul>"},{"location":"home/releases/#summary_24","title":"Summary","text":"<p>This release combines a lot of small fixes and improvements. The release is backwards compatible.</p>"},{"location":"home/releases/#changes_10","title":"Changes","text":"<ul> <li>The parser/deserialization functions have been generalized to process any contiguous sequence of 1-byte elements (e.g., <code>char</code>, <code>unsigned char</code>, <code>uint8_t</code>). This includes all kind of string representations (string literals, char arrays, <code>std::string</code>, <code>const char*</code>), contiguous containers (C-style arrays, <code>std::vector</code>, <code>std::array</code>, <code>std::valarray</code>, <code>std::initializer_list</code>). User-defined containers providing random-access iterator access via <code>std::begin</code> and <code>std::end</code> can be used as well. See the documentation (1, 2, 3, 4) for more information. Note that contiguous storage cannot be checked at compile time; if any of the parse functions are called with a noncompliant container, the behavior is undefined and will most likely yield segmentation violation. The preconditions are enforced by an assertion unless the library is compiled with preprocessor symbol <code>NDEBUG</code>.</li> <li>As a general remark on assertions: The library uses assertions to preclude undefined behavior. A prominent example for this is the <code>operator[]</code> for const JSON objects. The behavior of this const version of the operator is undefined if the given key does not exist in the JSON object, because unlike the non-const version, it cannot add a <code>null</code> value at the given key. Assertions can be switched of by defining the preprocessor symbol <code>NDEBUG</code>. See the documentation of <code>assert</code> for more information.</li> <li>In the course of cleaning up the parser/deserialization functions, the constructor <code>basic_json(std::istream&amp;, const parser_callback_t)</code> has been deprecated and will be deleted with the next major release 3.0.0 to unify the interface of the library. Deserialization will be done by stream operators or by calling one of the <code>parse</code> functions. That is, calls like <code>json j(i);</code> for an input stream <code>i</code> need to be replaced by <code>json j = json::parse(i);</code>. Compilers will produce a deprecation warning if client code uses this function.</li> <li>Minor improvements:</li> <li>Improved the performance of the serialization by avoiding the re-creation of a locale object.</li> <li>Fixed two MSVC warnings. Compiling the test suite with <code>/Wall</code> now only warns about non-inlined functions (C4710) and the deprecation of the constructor from input-stream (C4996).</li> <li>Some project internals:</li> <li> The project has qualified for the Core Infrastructure Initiative Best Practices Badge. While most requirements where already satisfied, some led to more explicit documentation of quality-ensuring procedures. For instance, static analysis is now executed with every commit on the build server. Furthermore, the contribution guidelines document how to communicate security issues privately.</li> <li>The test suite has been overworked and split into several files to allow for faster compilation and analysis. The execute the test suite, simply execute <code>make check</code>.</li> <li>The continuous integration with Travis was extended with Clang versions 3.6.0 to 3.8.1 and now includes 18 different compiler/OS combinations.</li> <li>An 11-day run of American fuzzy lop checked 962 million inputs on the parser and found no issue.</li> </ul>"},{"location":"home/releases/#v202","title":"v2.0.2","text":"<p>Files</p> <ul> <li>json.hpp (338 KB)</li> <li>json.hpp.asc (1 KB)</li> </ul> <ul> <li>Release date: 2016-07-31</li> <li>SHA-256: 8e97b7965b4594b00998d6704465412360e1a0ed927badb51ded8b82291a8f3d</li> </ul>"},{"location":"home/releases/#summary_25","title":"Summary","text":"<p>This release combines a lot of small fixes and improvements. The release is backwards compatible.</p>"},{"location":"home/releases/#changes_11","title":"Changes","text":"<ul> <li>The parser has been overworked, and a lot of small issues have been fixed:</li> <li>Improved parser performance by avoiding recursion and using move semantics for the return value.</li> <li>Unescaped control characters <code>\\x10</code>-<code>\\x1f</code> are not accepted any more.</li> <li>Fixed a bug in the parser when reading from an input stream.</li> <li>Improved test case coverage for UTF-8 parsing: now, all valid Unicode code points are tested both escaped and unescaped.</li> <li>The precision of output streams is now preserved by the parser.</li> <li>Started to check the code correctness by proving termination of important loops. Furthermore, individual assertions have been replaced by a more systematic function which checks the class invariants. Note that assertions should be switched off in production by defining the preprocessor macro <code>NDEBUG</code>, see the documentation of <code>assert</code>.</li> <li>A lot of code cleanup: removed unused headers, fixed some compiler warnings, and fixed a build error for Windows-based Clang builds.</li> <li>Added some compile-time checks:</li> <li>Unsupported compilers are rejected during compilation with an <code>#error</code> command.</li> <li>Static assertion prohibits code with incompatible pointer types used in <code>get_ptr()</code>.</li> <li>Improved the documentation, and adjusted the documentation script to choose the correct version of <code>sed</code>.</li> <li>Replaced a lot of \"raw loops\" by STL functions like <code>std::all_of</code>, <code>std::for_each</code>, or <code>std::accumulate</code>. This facilitates reasoning about termination of loops and sometimes allowed to simplify functions to a single return statement.</li> <li>Implemented a <code>value()</code> function for JSON pointers (similar to <code>at</code> function).</li> <li>The Homebrew formula (see Integration) is now tested for all Xcode builds (6.1 - 8.x) with Travis.</li> <li>Avoided output to <code>std::cout</code> in the test cases.</li> </ul>"},{"location":"home/releases/#v201","title":"v2.0.1","text":"<p>Files</p> <ul> <li>json.hpp (321 KB)</li> <li>json.hpp.asc (1 KB)</li> </ul> <ul> <li>Release date: 2016-06-28</li> <li>SHA-256: ef550fcd7df572555bf068e9ec4e9d3b9e4cdd441cecb0dcea9ea7fd313f72dd</li> </ul>"},{"location":"home/releases/#summary_26","title":"Summary","text":"<p>This release fixes a performance regression in the JSON serialization (function <code>dump()</code>). This fix is backwards compatible.</p>"},{"location":"home/releases/#changes_12","title":"Changes","text":"<ul> <li>The locale of the output stream (or the internal string stream if a JSON value is serialized to a string) is now adjusted once for the whole serialization instead of for each floating-point number.</li> <li>The locale of an output stream is now correctly reset to the previous value by the JSON library.</li> </ul>"},{"location":"home/releases/#v200","title":"v2.0.0","text":"<p>Files</p> <ul> <li>json.hpp (321 KB)</li> <li>json.hpp.asc (1 KB)</li> </ul> <ul> <li>Release date: 2016-06-24</li> <li>SHA-256: ac9e1fb25c2ac9ca5fc501fcd2fe3281fe04f07018a1b48820e7b1b11491bb6c</li> </ul>"},{"location":"home/releases/#summary_27","title":"Summary","text":"<p>This release adds several features such as JSON Pointers, JSON Patch, or support for 64 bit unsigned integers. Furthermore, several (subtle) bugs have been fixed.</p> <p>As <code>noexcept</code> and <code>constexpr</code> specifier have been added to several functions, the public API has effectively been changed in a (potential) non-backwards compatible manner. As we adhere to Semantic Versioning, this calls for a new major version, so say hello to 2\ufe0f\u20e3.0\ufe0f\u20e3.0\ufe0f\u20e3.</p>"},{"location":"home/releases/#changes_13","title":"Changes","text":"<ul> <li>\ud83d\udd1f A JSON value now uses <code>uint64_t</code> (default value for template parameter <code>NumberUnsignedType</code>) as data type for unsigned integer values. This type is used automatically when an unsigned number is parsed. Furthermore, constructors, conversion operators and an <code>is_number_unsigned()</code> test have been added.</li> <li>\ud83d\udc49 JSON Pointer (RFC 6901) support: A JSON Pointer is a string (similar to an XPath expression) to address a value inside a structured JSON value. JSON Pointers can be used in <code>at()</code> and <code>operator[]</code> functions. Furthermore, JSON values can be \u201cflattened\u201d to key/value pairs using <code>flatten()</code> where each key is a JSON Pointer. The original value can be restored by \u201cunflattening\u201d the flattened value using <code>unflatten()</code>.</li> <li>\ud83c\udfe5 JSON Patch (RFC 6902) support. A JSON Patch is a JSON value that describes the required edit operations (add, change, remove, \u2026) to transform a JSON value into another one. A JSON Patch can be created with function <code>diff(const basic_json&amp;)</code> and applied with <code>patch(const basic_json&amp;)</code>. Note the created patches use a rather primitive algorithm so far and leave room for improvement.</li> <li>\ud83c\uddea\ud83c\uddfa The code is now locale-independent: Floating-point numbers are always serialized with a period (<code>.</code>) as decimal separator and ignores different settings from the locale.</li> <li>\ud83c\udf7a Homebrew support: Install the library with <code>brew tap nlohmann/json &amp;&amp; brew install nlohmann_json</code>.</li> <li>Added constructor to create a JSON value by parsing a <code>std::istream</code> (e.g., <code>std::stringstream</code> or <code>std::ifstream</code>).</li> <li>Added <code>noexcept</code> specifier to <code>basic_json(boolean_t)</code>, <code>basic_json(const number_integer_t)</code>, <code>basic_json(const int)</code>, <code>basic_json(const number_float_t)</code>, iterator functions (<code>begin()</code>, <code>end()</code>, etc.)</li> <li>When parsing numbers, the sign of <code>0.0</code> (vs. <code>-0.0</code>) is preserved.</li> <li>Improved MSVC 2015, Android, and MinGW support. See README for more information.</li> <li>Improved test coverage (added 2,225,386 tests).</li> <li>Removed some misuses of <code>std::move</code>.</li> <li>Fixed several compiler warnings.</li> <li>Improved error messages from JSON parser.</li> <li>Updated to <code>re2c</code> to version 0.16 to use a minimal DFAs for the lexer.</li> <li>Updated test suite to use Catch version 1.5.6.</li> <li>Made type getters (<code>is_number</code>, etc.) and const value access <code>constexpr</code>.</li> <li>Functions <code>push_back</code> and <code>operator+=</code> now work with key/value pairs passed as initializer list, e.g. <code>j_object += {\"key\", 1}</code>.</li> <li>Overworked <code>CMakeLists.txt</code> to make it easier to integrate the library into other projects.</li> </ul>"},{"location":"home/releases/#notes","title":"Notes","text":"<ul> <li>Parser error messages are still very vague and contain no information on the error location.</li> <li>The implemented <code>diff</code> function is rather primitive and does not create minimal diffs.</li> <li>The name of function <code>iteration_wrapper</code> may change in the future and the function will be deprecated in the next release.</li> <li>Roundtripping (i.e., parsing a JSON value from a string, serializing it, and comparing the strings) of floating-point numbers is not 100% accurate. Note that RFC 8259 defines no format to internally represent numbers and states not requirement for roundtripping. Nevertheless, benchmarks like Native JSON Benchmark treat roundtripping deviations as conformance errors.</li> </ul>"},{"location":"home/releases/#v110","title":"v1.1.0","text":"<p>Files</p> <ul> <li>json.hpp (257 KB)</li> <li>json.hpp.asc (1 KB)</li> </ul> <ul> <li>Release date: 2016-01-24</li> <li>SHA-256: c0cf0e3017798ca6bb18e757ebc570d21a3bdac877845e2b9e9573d183ed2f05</li> </ul>"},{"location":"home/releases/#summary_28","title":"Summary","text":"<p>This release fixes several small bugs and adds functionality in a backwards-compatible manner. Compared to the last version (1.0.0), the following changes have been made:</p>"},{"location":"home/releases/#changes_14","title":"Changes","text":"<ul> <li>Fixed: Floating-point numbers are now serialized and deserialized properly such that roundtripping works in more cases. [#185, #186, #190, #191, #194]</li> <li>Added: The code now contains assertions to detect undefined behavior during development. As the standard function <code>assert</code> is used, the assertions can be switched off by defining the preprocessor symbol <code>NDEBUG</code> during compilation. [#168]</li> <li>Added: It is now possible to get a reference to the stored values via the newly added function <code>get_ref()</code>. [#128, #184]</li> <li>Fixed: Access to object values via keys (<code>operator[]</code>) now works with all kind of string representations. [#171, #189]</li> <li>Fixed: The code now compiles again with Microsoft Visual Studio 2015. [#144, #167, #188]</li> <li>Fixed: All required headers are now included.</li> <li>Fixed: Typos and other small issues. [#162, #166,  #175, #177, #179, #180]</li> </ul>"},{"location":"home/releases/#notes_1","title":"Notes","text":"<p>There are still known open issues (#178, #187) which will be fixed in version 2.0.0. However, these fixes will require a small API change and will not be entirely backwards-compatible.</p>"},{"location":"home/releases/#v100","title":"v1.0.0","text":"<p>Files</p> <ul> <li>json.hpp (243 KB)</li> <li>json.hpp.asc (1 KB)</li> </ul> <ul> <li>Release date: 2015-12-28</li> <li>SHA-256: 767dc2fab1819d7b9e19b6e456d61e38d21ef7182606ecf01516e3f5230446de</li> </ul>"},{"location":"home/releases/#summary_29","title":"Summary","text":"<p>This is the first official release. Compared to the prerelease version 1.0.0-rc1, only a few minor improvements have been made:</p>"},{"location":"home/releases/#changes_15","title":"Changes","text":"<ul> <li>Changed: A UTF-8 byte order mark is silently ignored.</li> <li>Changed: <code>sprintf</code> is no longer used.</li> <li>Changed: <code>iterator_wrapper</code> also works for const objects; note: the name may change!</li> <li>Changed: Error messages during deserialization have been improved.</li> <li>Added: The <code>parse</code> function now also works with type <code>std::istream&amp;&amp;</code>.</li> <li>Added: Function <code>value(key, default_value)</code> returns either a copy of an object's element at the specified key or a given default value if no element with the key exists.</li> <li>Added: Public functions are tagged with the version they were introduced. This shall allow for better versioning in the future.</li> <li>Added: All public functions and types are documented (see http://nlohmann.github.io/json/doxygen/) including executable examples.</li> <li>Added: Allocation of all types (in particular arrays, strings, and objects) is now exception-safe.</li> <li>Added: They descriptions of thrown exceptions have been overworked and are part of the tests suite and documentation.</li> </ul>"},{"location":"home/sponsors/","title":"Sponsors","text":"<p>You can sponsor this library at GitHub Sponsors.</p>"},{"location":"home/sponsors/#priority-sponsor","title":"Priority Sponsor","text":"<ul> <li>Martti Laine</li> <li>Paul Harrington</li> </ul>"},{"location":"home/sponsors/#named-sponsors","title":"Named Sponsors","text":"<ul> <li>Michael Hartmann</li> <li>Stefan Hagen</li> <li>Steve Sperandeo</li> <li>Robert Jefe Lindst\u00e4dt</li> <li>Steve Wagner</li> <li>Lion Yang</li> </ul> <p>Thanks everyone!</p>"},{"location":"integration/","title":"Header only","text":"<p><code>json.hpp</code> is the single required file in <code>single_include/nlohmann</code> or released here. You need to add</p> <pre><code>#include &lt;nlohmann/json.hpp&gt;\n\n// for convenience\nusing json = nlohmann::json;\n</code></pre> <p>to the files you want to process JSON and set the necessary switches to enable C++11 (e.g., <code>-std=c++11</code> for GCC and Clang).</p> <p>You can further use file <code>single_include/nlohmann/json_fwd.hpp</code> for forward declarations.</p>"},{"location":"integration/cmake/","title":"CMake","text":""},{"location":"integration/cmake/#integration","title":"Integration","text":"<p>You can use the <code>nlohmann_json::nlohmann_json</code> interface target in CMake. This target populates the appropriate usage requirements for <code>INTERFACE_INCLUDE_DIRECTORIES</code> to point to the appropriate include directories and <code>INTERFACE_COMPILE_FEATURES</code> for the necessary C++11 flags.</p>"},{"location":"integration/cmake/#external","title":"External","text":"<p>To use this library from a CMake project, you can locate it directly with <code>find_package()</code> and use the namespaced imported target from the generated package configuration:</p> <p>Example</p> CMakeLists.txt<pre><code>cmake_minimum_required(VERSION 3.5)\nproject(ExampleProject LANGUAGES CXX)\n\nfind_package(nlohmann_json 3.12.0 REQUIRED)\n\nadd_executable(example example.cpp)\ntarget_link_libraries(example PRIVATE nlohmann_json::nlohmann_json)\n</code></pre> <p>The package configuration file, <code>nlohmann_jsonConfig.cmake</code>, can be used either from an install tree or directly out of the build tree.</p>"},{"location":"integration/cmake/#embedded","title":"Embedded","text":"<p>To embed the library directly into an existing CMake project, place the entire source tree in a subdirectory and call <code>add_subdirectory()</code> in your <code>CMakeLists.txt</code> file.</p> <p>Example</p> CMakeLists.txt<pre><code>cmake_minimum_required(VERSION 3.5)\nproject(ExampleProject LANGUAGES CXX)\n\n# If you only include this third party in PRIVATE source files, you do not need to install it\n# when your main project gets installed.\nset(JSON_Install OFF CACHE INTERNAL \"\")\n\nadd_subdirectory(nlohmann_json)\n\nadd_executable(example example.cpp)\ntarget_link_libraries(example PRIVATE nlohmann_json::nlohmann_json)\n</code></pre> <p>Note</p> <p>Do not use <code>include(nlohmann_json/CMakeLists.txt)</code>, since that carries with it unintended consequences that will break the build. It is generally discouraged (although not necessarily well documented as such) to use <code>include(...)</code> for pulling in other CMake projects anyways.</p>"},{"location":"integration/cmake/#supporting-both","title":"Supporting Both","text":"<p>To allow your project to support either an externally supplied or an embedded JSON library, you can use a pattern akin to the following.</p> <p>Example</p> CMakeLists.txt<pre><code>project(ExampleProject LANGUAGES CXX)\n\noption(EXAMPLE_USE_EXTERNAL_JSON \"Use an external JSON library\" OFF)\n\nadd_subdirectory(thirdparty)\n\nadd_executable(example example.cpp)\n\n# Note that the namespaced target will always be available regardless of the import method\ntarget_link_libraries(example PRIVATE nlohmann_json::nlohmann_json)\n</code></pre> thirdparty/CMakeLists.txt<pre><code>if(EXAMPLE_USE_EXTERNAL_JSON)\n    find_package(nlohmann_json 3.12.0 REQUIRED)\nelse()\n    set(JSON_BuildTests OFF CACHE INTERNAL \"\")\n    add_subdirectory(nlohmann_json)\nendif()\n</code></pre> <p><code>thirdparty/nlohmann_json</code> is then a complete copy of this source tree.</p>"},{"location":"integration/cmake/#fetchcontent","title":"FetchContent","text":"<p>Since CMake v3.11, FetchContent can be used to automatically download a release as a dependency at configure time.</p> <p>Example</p> CMakeLists.txt<pre><code>cmake_minimum_required(VERSION 3.11)\nproject(ExampleProject LANGUAGES CXX)\n\ninclude(FetchContent)\n\nFetchContent_Declare(json URL https://github.com/nlohmann/json/releases/download/v3.12.0/json.tar.xz)\nFetchContent_MakeAvailable(json)\n\nadd_executable(example example.cpp)\ntarget_link_libraries(example PRIVATE nlohmann_json::nlohmann_json)\n</code></pre> <p>Note</p> <p>It is recommended to use the URL approach described above which is supported as of version 3.10.0. It is also possible to pass the Git repository like</p> <pre><code>FetchContent_Declare(json\n    GIT_REPOSITORY https://github.com/nlohmann/json\n    GIT_TAG v3.12.0\n)\n</code></pre> <p>However, the repository https://github.com/nlohmann/json download size is quite large.</p>"},{"location":"integration/cmake/#cmake-options","title":"CMake Options","text":""},{"location":"integration/cmake/#json_buildtests","title":"<code>JSON_BuildTests</code>","text":"<p>Build the unit tests when <code>BUILD_TESTING</code> is enabled. This option is <code>ON</code> by default if the library's CMake project is the top project. That is, when integrating the library as described above, the test suite is not built unless explicitly switched on with this option.</p>"},{"location":"integration/cmake/#json_ci","title":"<code>JSON_CI</code>","text":"<p>Enable CI build targets. The exact targets are used during the several CI steps and are subject to change without notice. This option is <code>OFF</code> by default.</p>"},{"location":"integration/cmake/#json_diagnostics","title":"<code>JSON_Diagnostics</code>","text":"<p>Enable extended diagnostic messages by defining macro <code>JSON_DIAGNOSTICS</code>. This option is <code>OFF</code> by default.</p>"},{"location":"integration/cmake/#json_diagnostic_positions","title":"<code>JSON_Diagnostic_Positions</code>","text":"<p>Enable position diagnostics by defining macro <code>JSON_DIAGNOSTIC_POSITIONS</code>. This option is <code>OFF</code> by default.</p>"},{"location":"integration/cmake/#json_disableenumserialization","title":"<code>JSON_DisableEnumSerialization</code>","text":"<p>Disable default <code>enum</code> serialization by defining the macro <code>JSON_DISABLE_ENUM_SERIALIZATION</code>. This option is <code>OFF</code> by default.</p>"},{"location":"integration/cmake/#json_fasttests","title":"<code>JSON_FastTests</code>","text":"<p>Skip expensive/slow test suites. This option is <code>OFF</code> by default. Depends on <code>JSON_BuildTests</code>.</p>"},{"location":"integration/cmake/#json_globaludls","title":"<code>JSON_GlobalUDLs</code>","text":"<p>Place user-defined string literals in the global namespace by defining the macro <code>JSON_USE_GLOBAL_UDLS</code>. This option is <code>OFF</code> by default.</p>"},{"location":"integration/cmake/#json_implicitconversions","title":"<code>JSON_ImplicitConversions</code>","text":"<p>Enable implicit conversions by defining macro <code>JSON_USE_IMPLICIT_CONVERSIONS</code>. This option is <code>ON</code> by default.</p>"},{"location":"integration/cmake/#json_install","title":"<code>JSON_Install</code>","text":"<p>Install CMake targets during install step. This option is <code>ON</code> by default if the library's CMake project is the top project.</p>"},{"location":"integration/cmake/#json_legacydiscardedvaluecomparison","title":"<code>JSON_LegacyDiscardedValueComparison</code>","text":"<p>Enable the (incorrect) legacy comparison behavior of discarded JSON values by defining macro <code>JSON_USE_LEGACY_DISCARDED_VALUE_COMPARISON</code>. This option is <code>OFF</code> by default.</p>"},{"location":"integration/cmake/#json_multipleheaders","title":"<code>JSON_MultipleHeaders</code>","text":"<p>Use the non-amalgamated version of the library. This option is <code>OFF</code> by default.</p>"},{"location":"integration/cmake/#json_systeminclude","title":"<code>JSON_SystemInclude</code>","text":"<p>Treat the library headers like system headers (i.e., adding <code>SYSTEM</code> to the <code>target_include_directories</code> call) to check for this library by tools like Clang-Tidy. This option is <code>OFF</code> by default.</p>"},{"location":"integration/cmake/#json_valgrind","title":"<code>JSON_Valgrind</code>","text":"<p>Execute the test suite with Valgrind. This option is <code>OFF</code> by default. Depends on <code>JSON_BuildTests</code>.</p>"},{"location":"integration/migration_guide/","title":"Migration Guide","text":"<p>This page collects some guidelines on how to future-proof your code for future versions of this library.</p>"},{"location":"integration/migration_guide/#replace-deprecated-functions","title":"Replace deprecated functions","text":"<p>The following functions have been deprecated and will be removed in the next major version (i.e., 4.0.0). All deprecations are annotated with <code>HEDLEY_DEPRECATED_FOR</code> to report which function to use instead.</p>"},{"location":"integration/migration_guide/#parsing","title":"Parsing","text":"<ul> <li> <p>Function <code>friend std::istream&amp; operator&lt;&lt;(basic_json&amp;, std::istream&amp;)</code> is deprecated since 3.0.0. Please use   <code>friend std::istream&amp;  operator&gt;&gt;(std::istream&amp;, basic_json&amp;)</code> instead.</p> DeprecatedFuture-proof <pre><code>nlohmann::json j;\nstd::stringstream ss(\"[1,2,3]\");\nj &lt;&lt; ss;\n</code></pre> <pre><code>nlohmann::json j;\nstd::stringstream ss(\"[1,2,3]\");\nss &gt;&gt; j;\n</code></pre> </li> <li> <p>Passing iterator pairs or pointer/length pairs to parsing functions (<code>parse</code>,   <code>accept</code>, <code>sax_parse</code>,   <code>from_cbor</code>, <code>from_msgpack</code>,   <code>from_ubjson</code>, and <code>from_bson</code> via initializer   lists is deprecated since 3.8.0. Instead, pass two iterators; for instance, call <code>from_cbor(ptr, ptr+len)</code> instead of   <code>from_cbor({ptr, len})</code>.</p> DeprecatedFuture-proof <pre><code>const char* s = \"[1,2,3]\";\nbool ok = nlohmann::json::accept({s, s + std::strlen(s)});\n</code></pre> <pre><code>const char* s = \"[1,2,3]\";\nbool ok = nlohmann::json::accept(s, s + std::strlen(s));\n</code></pre> </li> </ul>"},{"location":"integration/migration_guide/#json-pointers","title":"JSON Pointers","text":"<ul> <li> <p>Comparing JSON Pointers with strings via <code>operator==</code> and   <code>operator!=</code> is deprecated since 3.11.2. To compare a   <code>json_pointer</code> <code>p</code> with a string <code>s</code>, convert <code>s</code> to a <code>json_pointer</code> first and use   <code>json_pointer::operator==</code> or   <code>json_pointer::operator!=</code>.</p> DeprecatedFuture-proof <pre><code>nlohmann::json::json_pointer lhs(\"/foo/bar/1\");\nassert(lhs == \"/foo/bar/1\");\n</code></pre> <pre><code>nlohmann::json::json_pointer lhs(\"/foo/bar/1\");\nassert(lhs == nlohmann::json::json_pointer(\"/foo/bar/1\"));\n</code></pre> </li> <li> <p>The implicit conversion from JSON Pointers to string   (<code>json_pointer::operator string_t</code>) is deprecated since 3.11.0. Use   <code>json_pointer::to_string</code> instead.</p> DeprecatedFuture-proof <pre><code>nlohmann::json::json_pointer ptr(\"/foo/bar/1\");\nstd::string s = ptr;\n</code></pre> <pre><code>nlohmann::json::json_pointer ptr(\"/foo/bar/1\");\nstd::string s = ptr.to_string();\n</code></pre> </li> <li> <p>Passing a <code>basic_json</code> specialization as template parameter <code>RefStringType</code> to   <code>json_pointer</code> is deprecated since 3.11.0. The string type can now be directly   provided.</p> DeprecatedFuture-proof <pre><code>using my_json = nlohmann::basic_json&lt;std::map, std::vector, my_string_type&gt;;\nnlohmann::json_pointer&lt;my_json&gt; ptr(\"/foo/bar/1\");\n</code></pre> <pre><code>nlohmann::json_pointer&lt;my_string_type&gt; ptr(\"/foo/bar/1\");\n</code></pre> <p>Thereby, <code>nlohmann::my_json::json_pointer</code> is an alias for <code>nlohmann::json_pointer&lt;my_string_type&gt;</code> and is always an  alias to the <code>json_pointer</code> with the appropriate string type for all specializations of <code>basic_json</code>.</p> </li> </ul>"},{"location":"integration/migration_guide/#miscellaneous-functions","title":"Miscellaneous functions","text":"<ul> <li> <p>The function <code>iterator_wrapper</code> is deprecated since 3.1.0. Please use the member function   <code>items</code> instead.</p> DeprecatedFuture-proof <pre><code>for (auto &amp;x : nlohmann::json::iterator_wrapper(j))\n{\n    std::cout &lt;&lt; x.key() &lt;&lt; \":\" &lt;&lt; x.value() &lt;&lt; std::endl;\n}\n</code></pre> <pre><code>for (auto &amp;x : j.items())\n{\n    std::cout &lt;&lt; x.key() &lt;&lt; \":\" &lt;&lt; x.value() &lt;&lt; std::endl;\n}\n</code></pre> </li> <li> <p>Function <code>friend std::ostream&amp; operator&gt;&gt;(const basic_json&amp;, std::ostream&amp;)</code> is deprecated since 3.0.0. Please use   <code>friend operator&lt;&lt;(std::ostream&amp;, const basic_json&amp;)</code> instead.</p> DeprecatedFuture-proof <pre><code>j &gt;&gt; std::cout;\n</code></pre> <pre><code>std::cout &lt;&lt; j;\n</code></pre> </li> <li> <p>The legacy comparison behavior for discarded values is deprecated since 3.11.0. It is already disabled by default and   can still be enabled by defining   <code>JSON_USE_LEGACY_DISCARDED_VALUE_COMPARISON</code> to <code>1</code>.</p> DeprecatedFuture-proof <pre><code>#define JSON_USE_LEGACY_DISCARDED_VALUE_COMPARISON 1\n#include &lt;nlohmann/json.hpp&gt;\n</code></pre> <pre><code>#include &lt;nlohmann/json.hpp&gt;\n</code></pre> </li> </ul>"},{"location":"integration/migration_guide/#replace-implicit-conversions","title":"Replace implicit conversions","text":"<p>Implicit conversions via <code>operator ValueType</code> will be switched off by default in the next major release of the library.</p> <p>You can prepare existing code by already defining <code>JSON_USE_IMPLICIT_CONVERSIONS</code> to <code>0</code> and replace any implicit conversions with calls to <code>get</code>, <code>get_to</code>, <code>get_ref</code>, or <code>get_ptr</code>.</p> DeprecatedFuture-proofFuture-proof (alternative) <pre><code>nlohmann::json j = \"Hello, world!\";\nstd::string s = j;\n</code></pre> <pre><code>nlohmann::json j = \"Hello, world!\";\nauto s = j.get&lt;std::string&gt;();\n</code></pre> <pre><code>nlohmann::json j = \"Hello, world!\";\nstd::string s;\nj.get_to(s);\n</code></pre> <p>You can prepare existing code by already defining <code>JSON_USE_IMPLICIT_CONVERSIONS</code> to <code>0</code> and replace any implicit conversions with calls to <code>get</code>.</p>"},{"location":"integration/migration_guide/#import-namespace-literals-for-udls","title":"Import namespace <code>literals</code> for UDLs","text":"<p>The user-defined string literals <code>operator\"\"_json</code> and <code>operator\"\"_json_pointer</code> will be removed from the global namespace in the next major release of the library.</p> DeprecatedFuture-proof <pre><code>nlohmann::json j = \"[1,2,3]\"_json;\n</code></pre> <pre><code>using namespace nlohmann::literals;\nnlohmann::json j = \"[1,2,3]\"_json;\n</code></pre> <p>To prepare existing code, define <code>JSON_USE_GLOBAL_UDLS</code> to <code>0</code> and bring the string literals into scope where needed.</p>"},{"location":"integration/migration_guide/#do-not-hard-code-the-complete-library-namespace","title":"Do not hard-code the complete library namespace","text":"<p>The <code>nlohmann</code> namespace contains a sub-namespace to avoid problems when different versions or configurations of the library are used in the same project. Always use <code>nlohmann</code> as namespace or, when the exact version and configuration is relevant, use macro <code>NLOHMANN_JSON_NAMESPACE</code> to denote the namespace.</p> DangerousFuture-proofFuture-proof (alternative) <pre><code>void to_json(nlohmann::json_abi_v3_11_2::json&amp; j, const person&amp; p)\n{\n    j[\"age\"] = p.age;\n}\n</code></pre> <pre><code>void to_json(nlohmann::json&amp; j, const person&amp; p)\n{\n    j[\"age\"] = p.age;\n}\n</code></pre> <pre><code>void to_json(NLOHMANN_JSON_NAMESPACE::json&amp; j, const person&amp; p)\n{\n    j[\"age\"] = p.age;\n}\n</code></pre>"},{"location":"integration/migration_guide/#do-not-use-the-details-namespace","title":"Do not use the <code>details</code> namespace","text":"<p>The <code>details</code> namespace is not part of the public API of the library and can change in any version without an announcement. Do not rely on any function or type in the <code>details</code> namespace.</p>"},{"location":"integration/package_managers/","title":"Package Managers","text":"<p> Homebrew <code>nlohmann-json</code> Meson <code>nlohmann_json</code> Bazel <code>nlohmann_json</code> Conan <code>nlohmann_json</code> Spack <code>nlohmann-json</code> Hunter <code>nlohmann_json</code> vcpkg <code>nlohmann-json</code> cget <code>nlohmann/json</code> Swift Package Manager <code>nlohmann/json</code> NuGet <code>nlohmann.json</code> Conda <code>nlohmann_json</code> MacPorts <code>nlohmann-json</code> CPM.cmake <code>gh:nlohmann/json</code> xmake <code>nlohmann_json</code> </p>"},{"location":"integration/package_managers/#running-example","title":"Running example","text":"<p>Throughout this page, we will describe how to compile the example file <code>example.cpp</code> below.</p> <pre><code>#include &lt;nlohmann/json.hpp&gt;\n#include &lt;iostream&gt;\n#include &lt;iomanip&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    std::cout &lt;&lt; std::setw(4) &lt;&lt; json::meta() &lt;&lt; std::endl;\n}\n</code></pre> <p>When executed, this program should create output similar to</p> <pre><code>{\n    \"compiler\": {\n        \"c++\": \"201103\",\n        \"family\": \"gcc\",\n        \"version\": \"12.4.0\"\n    },\n    \"copyright\": \"(C) 2013-2026 Niels Lohmann\",\n    \"name\": \"JSON for Modern C++\",\n    \"platform\": \"apple\",\n    \"url\": \"https://github.com/nlohmann/json\",\n    \"version\": {\n        \"major\": 3,\n        \"minor\": 12,\n        \"patch\": 0,\n        \"string\": \"3.12.0\"\n    }\n}\n</code></pre>"},{"location":"integration/package_managers/#homebrew","title":"Homebrew","text":"<p>Summary</p> <p>formula: <code>nlohmann-json</code></p> <ul> <li> Available versions: current version and development version (with <code>--HEAD</code> parameter)</li> <li> The formula is updated with every release.</li> <li> Maintainer: Niels Lohmann</li> <li> File issues at the Homebrew issue tracker</li> <li> Homebrew website</li> </ul> <p>If you are using Homebrew, you can install the library with</p> <pre><code>brew install nlohmann-json\n</code></pre> <p>The header can be used directly in your code or via CMake.</p> Example: Raw compilation <ol> <li> <p>Create the following file:</p> example.cpp<pre><code>#include &lt;nlohmann/json.hpp&gt;\n#include &lt;iostream&gt;\n#include &lt;iomanip&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    std::cout &lt;&lt; std::setw(4) &lt;&lt; json::meta() &lt;&lt; std::endl;\n}\n</code></pre> </li> <li> <p>Install the package:</p> <pre><code>brew install nlohmann-json\n</code></pre> </li> <li> <p>Compile the code and pass the Homebrew prefix to the include path such that the library can be found:</p> <pre><code>c++ example.cpp -I$(brew --prefix nlohmann-json)/include -std=c++11 -o example\n</code></pre> </li> </ol> Example: CMake <ol> <li> <p>Create the following files:</p> example.cpp<pre><code>#include &lt;nlohmann/json.hpp&gt;\n#include &lt;iostream&gt;\n#include &lt;iomanip&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    std::cout &lt;&lt; std::setw(4) &lt;&lt; json::meta() &lt;&lt; std::endl;\n}\n</code></pre> CMakeLists.txt<pre><code>cmake_minimum_required(VERSION 3.15)\nproject(json_example)\n\nfind_package(nlohmann_json CONFIG REQUIRED)\n\nadd_executable(json_example example.cpp)\ntarget_link_libraries(json_example PRIVATE nlohmann_json::nlohmann_json)\n</code></pre> </li> <li> <p>Install the package:</p> <pre><code>brew install nlohmann-json\n</code></pre> </li> <li> <p>Compile the code and pass the Homebrew prefix to CMake to find installed packages via <code>find_package</code>:</p> <pre><code>CMAKE_PREFIX_PATH=$(brew --prefix) cmake -S . -B build\ncmake --build build\n</code></pre> </li> </ol>"},{"location":"integration/package_managers/#meson","title":"Meson","text":"<p>Summary</p> <p>wrap: <code>nlohmann_json</code></p> <ul> <li> Available versions: current version and select older versions (see   WrapDB)</li> <li> The package is update automatically from file   <code>meson.build</code>.</li> <li> File issues at the library issue tracker</li> <li> Meson website</li> </ul> <p>If you are using the Meson Build System, add this source tree as a meson subproject. You may also use the <code>include.zip</code> published in this project's Releases to reduce the size of the vendored source tree. Alternatively, you can get a wrap file by downloading it from Meson WrapDB, or use</p> <pre><code>meson wrap install nlohmann_json\n</code></pre> <p>Please see the Meson project for any issues regarding the packaging.</p> <p>The provided <code>meson.build</code> can also be used as an alternative to CMake for installing <code>nlohmann_json</code> system-wide in which case a pkg-config file is installed. To use it, have your build system require the <code>nlohmann_json</code> pkg-config dependency. In Meson, it is preferred to use the <code>dependency()</code> object with a subproject fallback, rather than using the subproject directly.</p> Example: Wrap <ol> <li> <p>Create the following files:</p> meson.build<pre><code>project('json_example', 'cpp',\n  version: '1.0',\n  default_options: ['cpp_std=c++11']\n)\n\ndependency_json = dependency('nlohmann_json', required: true)\n\nexecutable('json_example',\n  sources: ['example.cpp'],\n  dependencies: [dependency_json],\n  install: true\n)\n</code></pre> example.cpp<pre><code>#include &lt;nlohmann/json.hpp&gt;\n#include &lt;iostream&gt;\n#include &lt;iomanip&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    std::cout &lt;&lt; std::setw(4) &lt;&lt; json::meta() &lt;&lt; std::endl;\n}\n</code></pre> </li> <li> <p>Use the Meson WrapDB to fetch the nlohmann/json wrap:</p> <pre><code>mkdir subprojects\nmeson wrap install nlohmann_json\n</code></pre> </li> <li> <p>Build:</p> <pre><code>meson setup build\nmeson compile -C build\n</code></pre> </li> </ol>"},{"location":"integration/package_managers/#bazel","title":"Bazel","text":"<p>Summary</p> <p>use <code>bazel_dep</code>, <code>git_override</code>, or <code>local_path_override</code></p> <ul> <li> Any version, that is available via Bazel Central Registry</li> <li> File issues at the library issue tracker</li> <li> Bazel website</li> </ul> <p>This repository provides a Bazel <code>MODULE.bazel</code> and a corresponding <code>BUILD.bazel</code> file. Therefore, this repository can be referenced within a <code>MODULE.bazel</code> by rules such as <code>archive_override</code>, <code>git_override</code>, or <code>local_path_override</code>. To use the library, you need to depend on the target <code>@nlohmann_json//:json</code> (i.e., via <code>deps</code> attribute).</p> Example <ol> <li> <p>Create the following files:</p> BUILD<pre><code>cc_binary(\n    name = \"main\",\n    srcs = [\"example.cpp\"],\n    deps = [\"@nlohmann_json//:json\"],\n)\n</code></pre> WORKSPACE<pre><code>bazel_dep(name = \"nlohmann_json\", version = \"3.11.3.bcr.1\")\n</code></pre> example.cpp<pre><code>#include &lt;nlohmann/json.hpp&gt;\n#include &lt;iostream&gt;\n#include &lt;iomanip&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    std::cout &lt;&lt; std::setw(4) &lt;&lt; json::meta() &lt;&lt; std::endl;\n}\n</code></pre> </li> <li> <p>Build and run:</p> <pre><code>bazel build //:main\nbazel run //:main\n</code></pre> </li> </ol>"},{"location":"integration/package_managers/#conan","title":"Conan","text":"<p>Summary</p> <p>recipe: <code>nlohmann_json</code></p> <ul> <li> Available versions: current version and older versions (see   Conan Center)</li> <li> The package is update automatically via   this recipe.</li> <li> File issues at the Conan Center issue tracker</li> <li> Conan website</li> </ul> <p>If you are using Conan to manage your dependencies, merely add <code>nlohmann_json/x.y.z</code> to your <code>conanfile</code>'s requires, where <code>x.y.z</code> is the release version you want to use.</p> Example <ol> <li> <p>Create the following files:</p> Conanfile.txt<pre><code>[requires]\nnlohmann_json/3.12.0\n\n[generators]\nCMakeToolchain\nCMakeDeps\n</code></pre> CMakeLists.txt<pre><code>cmake_minimum_required(VERSION 3.15)\nproject(json_example)\n\nfind_package(nlohmann_json REQUIRED)\n\nadd_executable(json_example example.cpp)\ntarget_link_libraries(json_example PRIVATE nlohmann_json::nlohmann_json)\n</code></pre> example.cpp<pre><code>#include &lt;nlohmann/json.hpp&gt;\n#include &lt;iostream&gt;\n#include &lt;iomanip&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    std::cout &lt;&lt; std::setw(4) &lt;&lt; json::meta() &lt;&lt; std::endl;\n}\n</code></pre> </li> <li> <p>Call Conan:</p> <pre><code>conan install . --output-folder=build --build=missing\n</code></pre> </li> <li> <p>Build:</p> <pre><code>cmake -S . -B build -DCMAKE_TOOLCHAIN_FILE=\"conan_toolchain.cmake\" -DCMAKE_BUILD_TYPE=Release\ncmake --build build\n</code></pre> </li> </ol>"},{"location":"integration/package_managers/#spack","title":"Spack","text":"<p>Summary</p> <p>package: <code>nlohmann-json</code></p> <ul> <li> Available versions: current version and older versions (see   Spack package)</li> <li> The package is updated with every release.</li> <li> Maintainer: Axel Huebl</li> <li> File issues at the Spack issue tracker</li> <li> Spack website</li> </ul> <p>If you are using Spack to manage your dependencies, you can use the <code>nlohmann-json</code> package via</p> <pre><code>spack install nlohmann-json\n</code></pre> <p>Please see the Spack project for any issues regarding the packaging.</p> Example <ol> <li> <p>Create the following files:</p> CMakeLists.txt<pre><code>cmake_minimum_required(VERSION 3.15)\nproject(json_example)\n\nfind_package(nlohmann_json REQUIRED)\n\nadd_executable(json_example example.cpp)\ntarget_link_libraries(json_example PRIVATE nlohmann_json::nlohmann_json)\n</code></pre> example.cpp<pre><code>#include &lt;nlohmann/json.hpp&gt;\n#include &lt;iostream&gt;\n#include &lt;iomanip&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    std::cout &lt;&lt; std::setw(4) &lt;&lt; json::meta() &lt;&lt; std::endl;\n}\n</code></pre> </li> <li> <p>Install the library:</p> <pre><code>spack install nlohmann-json\n</code></pre> </li> <li> <p>Load the environment for your Spack-installed packages:</p> <pre><code>spack load nlohmann-json\n</code></pre> </li> <li> <p>Build the project with CMake:</p> <pre><code>cmake -S . -B build -DCMAKE_PREFIX_PATH=$(spack location -i nlohmann-json)\ncmake --build build\n</code></pre> </li> </ol>"},{"location":"integration/package_managers/#hunter","title":"Hunter","text":"<p>Summary</p> <p>package: <code>nlohmann_json</code></p> <ul> <li> Available versions: current version and older versions (see   Hunter package)</li> <li> The package is updated with every release.</li> <li> File issues at the Hunter issue tracker</li> <li> Hunter website</li> </ul> <p>If you are using Hunter on your project for external dependencies, then you can use the nlohmann_json package via</p> <pre><code>hunter_add_package(nlohmann_json)\n</code></pre> <p>Please see the Hunter project for any issues regarding the packaging.</p> Example <ol> <li> <p>Create the following files:</p> CMakeLists.txt<pre><code>cmake_minimum_required(VERSION 3.15)\n\ninclude(\"cmake/HunterGate.cmake\")\nHunterGate(\n    URL \"https://github.com/cpp-pm/hunter/archive/v0.23.297.tar.gz\"\n    SHA1 \"3319fe6a3b08090df7df98dee75134d68e2ef5a3\"\n)\n\nproject(json_example)\n\nhunter_add_package(nlohmann_json)\nfind_package(nlohmann_json CONFIG REQUIRED)\n\nadd_executable(json_example example.cpp)\ntarget_link_libraries(json_example PRIVATE nlohmann_json::nlohmann_json)\n</code></pre> example.cpp<pre><code>#include &lt;nlohmann/json.hpp&gt;\n#include &lt;iostream&gt;\n#include &lt;iomanip&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    std::cout &lt;&lt; std::setw(4) &lt;&lt; json::meta() &lt;&lt; std::endl;\n}\n</code></pre> </li> <li> <p>Download required files</p> <pre><code>mkdir cmake\nwget https://raw.githubusercontent.com/cpp-pm/gate/master/cmake/HunterGate.cmake -O cmake/HunterGate.cmake\n</code></pre> </li> <li> <p>Build the project with CMake:</p> <pre><code>cmake -S . -B build\ncmake --build build\n</code></pre> </li> </ol>"},{"location":"integration/package_managers/#vcpkg","title":"vcpkg","text":"<p>Summary</p> <p>package: <code>nlohmann-json</code></p> <ul> <li> Available versions: current version</li> <li> The package is updated with every release.</li> <li> File issues at the vcpkg issue tracker</li> <li> vcpkg website</li> </ul> <p>If you are using vcpkg on your project for external dependencies, then you can install the nlohmann-json package with</p> <pre><code>vcpkg install nlohmann-json\n</code></pre> <p>and follow the then displayed descriptions. Please see the vcpkg project for any issues regarding the packaging.</p> Example <ol> <li> <p>Create the following files:</p> CMakeLists.txt<pre><code>cmake_minimum_required(VERSION 3.15)\nproject(json_example)\n\nfind_package(nlohmann_json CONFIG REQUIRED)\n\nadd_executable(json_example example.cpp)\ntarget_link_libraries(json_example PRIVATE nlohmann_json::nlohmann_json)\n</code></pre> example.cpp<pre><code>#include &lt;nlohmann/json.hpp&gt;\n#include &lt;iostream&gt;\n#include &lt;iomanip&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    std::cout &lt;&lt; std::setw(4) &lt;&lt; json::meta() &lt;&lt; std::endl;\n}\n</code></pre> </li> <li> <p>Install package:</p> <pre><code>vcpkg install nlohmann-json\n</code></pre> </li> <li> <p>Build:</p> <pre><code>cmake -S . -B build -DCMAKE_TOOLCHAIN_FILE=$VCPKG_ROOT/scripts/buildsystems/vcpkg.cmake\ncmake --build build\n</code></pre> </li> </ol>"},{"location":"integration/package_managers/#cget","title":"cget","text":"<p>Summary</p> <p>package: <code>nlohmann/json</code></p> <ul> <li> Available versions: current version and older versions</li> <li> The package is updated with every release.</li> <li> File issues at the cget issue tracker</li> <li> cget website</li> </ul> <p>If you are using cget, you can install the latest <code>master</code> version with</p> <pre><code>cget install nlohmann/json\n</code></pre> <p>A specific version can be installed with <code>cget install nlohmann/json@v3.12.0</code>. Also, the multiple header version can be installed by adding the <code>-DJSON_MultipleHeaders=ON</code> flag (i.e., <code>cget install nlohmann/json -DJSON_MultipleHeaders=ON</code>).</p> Example <ol> <li> <p>Create the following files:</p> CMakeLists.txt<pre><code>cmake_minimum_required(VERSION 3.15)\nproject(json_example)\n\nfind_package(nlohmann_json CONFIG REQUIRED)\n\nadd_executable(json_example example.cpp)\ntarget_link_libraries(json_example PRIVATE nlohmann_json::nlohmann_json)\n</code></pre> example.cpp<pre><code>#include &lt;nlohmann/json.hpp&gt;\n#include &lt;iostream&gt;\n#include &lt;iomanip&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    std::cout &lt;&lt; std::setw(4) &lt;&lt; json::meta() &lt;&lt; std::endl;\n}\n</code></pre> </li> <li> <p>Initialize cget</p> <pre><code>cget init\n</code></pre> </li> <li> <p>Install the library</p> <pre><code>cget install nlohmann/json\n</code></pre> </li> <li> <p>Build</p> <pre><code>cmake -S . -B build -DCMAKE_TOOLCHAIN_FILE=cget/cget/cget.cmake\ncmake --build build\n</code></pre> </li> </ol>"},{"location":"integration/package_managers/#swift-package-manager","title":"Swift Package Manager","text":"<p>Summary</p> <p>package: <code>nlohmann/json</code></p> <ul> <li> Available versions: current version and older versions</li> <li> The package is updated with every release.</li> <li> File issues at the library issue tracker</li> <li> Xcode documentation</li> </ul>"},{"location":"integration/package_managers/#nuget","title":"NuGet","text":"<p>Summary</p> <p>package: <code>nlohmann.json</code></p> <ul> <li> Available versions: current and previous versions</li> <li> The package is updated with every release.</li> <li> Maintainer: Hani Kaabi</li> <li> File issues at the maintainer's issue tracker</li> <li> NuGet website</li> </ul> <p>If you are using NuGet, you can use the package nlohmann.json with</p> <pre><code>dotnet add package nlohmann.json\n</code></pre> Example <p>Probably the easiest way to use NuGet packages is through Visual Studio graphical interface. Right-click on a project (any C++ project would do) in \u201cSolution Explorer\u201d and select \u201cManage NuGet Packages\u2026\u201d</p> <p></p> <p>Now you can click on \u201cBrowse\u201d tab and find the package you like to install.</p> <p></p> <p>Most of the packages in NuGet gallery are .NET packages and would not be useful in a C++ project. Microsoft recommends adding \u201cnative\u201d and \u201cnativepackage\u201d tags to C++ NuGet packages to distinguish them, but even adding \u201cnative\u201d to search query would still show many .NET-only packages in the list.</p> <p>Nevertheless, after finding the package you want, click on \u201cInstall\u201d button and accept confirmation dialogs. After the package is successfully added to the projects, you should be able to build and execute the project without the need for making any more changes to build settings.</p> <p>Note</p> <p>A few notes:</p> <ul> <li>NuGet packages are installed per project and not system-wide. The header and binaries for the package are only   available to the project it is added to, and not other projects (obviously unless we add the package to those   projects as well)</li> <li>One of the many great things about your elegant work is that it is a header-only library, which makes   deployment very straightforward. In case of libraries which need binary deployment (<code>.lib</code>, <code>.dll</code> and <code>.pdb</code>   for debug info) the different binaries for each supported compiler version must be added to the NuGet package.   Some library creators cram binary versions for all supported Visual C++ compiler versions in the same package,   so a single package will support all compilers. Some others create a different package for each compiler   version (and you usually see things like \u201cv140\u201d or \u201cvc141\u201d in package name to clarify which VC++ compiler this   package supports).</li> <li>Packages can have dependency to other packages, and in this case, NuGet will install all dependencies as well   as the requested package recursively.</li> </ul> <p>What happens behind the scenes</p> <p>After you add a NuGet package, three changes occur in the project source directory. Of course, we could make these changes manually instead of using GUI:</p> <p></p> <ol> <li> <p>A <code>packages.config</code> file will be created (or updated to include the package name if one such file already    exists). This file contains a list of the packages required by this project (name and minimum version) and must    be added to the project source code repository, so if you move the source code to a new machine, MSBuild/NuGet    knows which packages it has to restore (which it does automatically before each build).</p> <pre><code>&lt;?xml version=\"1.0\" encoding=\"utf-8\"?&gt;\n&lt;packages&gt;\n  &lt;package id=\"nlohmann.json\" version=\"3.5.0\" targetFramework=\"native\" /&gt;\n&lt;/packages&gt;\n</code></pre> </li> <li> <p>A <code>packages</code> folder which contains actual files in the packages (these are header and binary files required for    a successful build, plus a few metadata files). In case of this library for example, it contains <code>json.hpp</code>:</p> <p></p> <p>Note</p> <p>This directory should not be added to the project source code repository, as it will be restored before each build by MSBuild/NuGet. If you go ahead and delete this folder, then build the project again, it will magically re-appear!</p> </li> <li> <p>Project MSBuild makefile (which for Visual C++ projects has a .vcxproj extension) will be updated to include    settings from the package.</p> <p></p> <p>The important bit for us here is line 170, which tells MSBuild to import settings from <code>packages\\nlohmann.json.3.5.0\\build\\native\\nlohmann.json.targets</code> file. This is a file the package creator created and added to the package (you can see it is one of the two files I created in this repository, the other just contains package attributes like name and version number). What does it contain?</p> <p>For our header-only repository, the only setting we need is to add our include directory to the list of <code>AdditionalIncludeDirectories</code>:</p> <pre><code>&lt;?xml version=\"1.0\" encoding=\"utf-8\"?&gt;\n&lt;Project ToolsVersion=\"4.0\" xmlns=\"http://schemas.microsoft.com/developer/msbuild/2003\"&gt;\n    &lt;ItemDefinitionGroup&gt;\n        &lt;ClCompile&gt;\n            &lt;AdditionalIncludeDirectories&gt;$(MSBuildThisFileDirectory)include;%(AdditionalIncludeDirectories)&lt;/AdditionalIncludeDirectories&gt;\n        &lt;/ClCompile&gt;\n    &lt;/ItemDefinitionGroup&gt;\n&lt;/Project&gt;\n</code></pre> <p>For libraries with binary files, we will need to add <code>.lib</code> files to linker inputs and add settings to copy <code>.dll</code> and other redistributable files to output directory, if needed.</p> <p>There are other changes to the makefile as well:</p> <ul> <li> <p>Lines 165-167 add the <code>packages.config</code> as one of project files (so it is shown in Solution Explorer tree   view). It is added as None (no build action) and removing it wouldn\u2019t affect build.</p> </li> <li> <p>Lines 172-177 check to ensure the required packages are present. This will display a build error if package   directory is empty (for example when NuGet cannot restore packages because Internet connection is down).   Again, if you omit this section, the only change in build would be a more cryptic error message if build   fails.</p> </li> </ul> <p>Note</p> <p>Changes to .vcxproj makefile should also be added to project source code repository.</p> </li> </ol> <p>As you can see, the mechanism NuGet uses to modify project settings is through MSBuild makefiles, so using NuGet with other build systems and compilers (like CMake) as a dependency manager is either impossible or more problematic than useful.</p> <p>Please refer to this extensive description for more information.</p>"},{"location":"integration/package_managers/#conda","title":"Conda","text":"<p>Summary</p> <p>package: <code>nlohmann_json</code></p> <ul> <li> Available versions: current and previous versions</li> <li> The package is updated with every release.</li> <li> File issues at the feedstock's issue tracker</li> <li> Conda documentation</li> </ul> <p>If you are using conda, you can use the package nlohmann_json from conda-forge executing</p> <pre><code>conda install -c conda-forge nlohmann_json\n</code></pre> Example <ol> <li> <p>Create the following file:</p> example.cpp<pre><code>#include &lt;nlohmann/json.hpp&gt;\n#include &lt;iostream&gt;\n#include &lt;iomanip&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    std::cout &lt;&lt; std::setw(4) &lt;&lt; json::meta() &lt;&lt; std::endl;\n}\n</code></pre> </li> <li> <p>Create and activate an anvironment \"json`:</p> <pre><code>conda create -n json\nconda activate json\n</code></pre> </li> <li> <p>Install the package:</p> <pre><code>conda install -c conda-forge nlohmann_json\n</code></pre> </li> <li> <p>Build the code:</p> <pre><code>g++ -std=c++11 -I$(conda info --base)/envs/json/include example.cpp -o example\n</code></pre> </li> </ol>"},{"location":"integration/package_managers/#msys2","title":"MSYS2","text":"<p>If you are using MSYS2, you can use the mingw-w64-nlohmann-json package, type <code>pacman -S mingw-w64-i686-nlohmann-json</code> or <code>pacman -S mingw-w64-x86_64-nlohmann-json</code> for installation. Please file issues here if you experience problems with the packages.</p> <p> </p> <p> The package is updated automatically.</p>"},{"location":"integration/package_managers/#macports","title":"MacPorts","text":"<p>Summary</p> <p>port: <code>nlohmann-json</code></p> <ul> <li> Available versions: current version</li> <li> The port is updated with every release.</li> <li> File issues at the MacPorts issue tracker</li> <li> MacPorts website</li> </ul> <p>If you are using MacPorts, execute </p> <pre><code>sudo port install nlohmann-json\n</code></pre> <p>to install the nlohmann-json package.</p> Example: Raw compilation <ol> <li> <p>Create the following file:</p> example.cpp<pre><code>#include &lt;nlohmann/json.hpp&gt;\n#include &lt;iostream&gt;\n#include &lt;iomanip&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    std::cout &lt;&lt; std::setw(4) &lt;&lt; json::meta() &lt;&lt; std::endl;\n}\n</code></pre> </li> <li> <p>Install the package:</p> <pre><code>sudo port install nlohmann-json\n</code></pre> </li> <li> <p>Compile the code and pass the Homebrew prefix to the include path such that the library can be found:</p> <pre><code>c++ example.cpp -I/opt/local/include -std=c++11 -o example\n</code></pre> </li> </ol> Example: CMake <ol> <li> <p>Create the following files:</p> example.cpp<pre><code>#include &lt;nlohmann/json.hpp&gt;\n#include &lt;iostream&gt;\n#include &lt;iomanip&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    std::cout &lt;&lt; std::setw(4) &lt;&lt; json::meta() &lt;&lt; std::endl;\n}\n</code></pre> CMakeLists.txt<pre><code>cmake_minimum_required(VERSION 3.15)\nproject(json_example)\n\nfind_package(nlohmann_json CONFIG REQUIRED)\n\nadd_executable(json_example example.cpp)\ntarget_link_libraries(json_example PRIVATE nlohmann_json::nlohmann_json)\n</code></pre> </li> <li> <p>Install the package:</p> <pre><code>sudo port install nlohmann-json\n</code></pre> </li> <li> <p>Compile the code:</p> <pre><code>cmake -S . -B build\ncmake --build build\n</code></pre> </li> </ol>"},{"location":"integration/package_managers/#build2","title":"build2","text":"<p>Summary</p> <p>package: <code>nlohmann-json</code> library target: <code>nlohmann-json%lib{json}</code> available in package repositories:   - <code>cppget.org</code> (recommended)   - package's sources (for advanced users)</p> <ul> <li> Available versions: current version and older versions since <code>3.7.3</code> (see cppget.org)</li> <li> The package is maintained and published by the <code>build2</code> community in [this repository](https://github.com/build2-packaging/nlohmann-json/).</li> <li> File issues at the package source repository</li> <li> <code>build2</code> website</li> </ul> <p>Note: <code>build2</code> should not be considered as a standalone package-manager. It is a build-system + package manager + project manager, a set of tools that work hand-in-hand. <code>build2</code>-based projects do not rely on existing <code>CMake</code> scripts and the build scripts defining the project's targets are specific to <code>build2</code>.</p> <p>To use this package in an exising <code>build2</code> project, the general steps are:</p> <ol> <li> <p>Make the package available to download from a package repository that provides it. <p>Your project's <code>repositories.manifest</code> specifies where the package manager will try to acquire packages by default. Make sure one of the repositories specified in this file provides <code>nlhomann-json</code> package.   The recommended open-source repository is <code>cppget.org</code>.</p> <p>If the project has been created using <code>bdep new</code>, <code>cppget.org</code> is already specified in <code>repositories.manifest</code> but commented, just uncomment these lines:   <pre><code>:\nrole: prerequisite\nlocation: https://pkg.cppget.org/1/stable\n</code></pre> </p> <li> <p>Add this package as dependency of your project. <p>In your project's <code>manifest</code> add the dependency to the package using <code>depends: nlohmann-json</code>. You could also add some version constraints.    For example, to depend on the latest version available:    <pre><code>depends: nlohmann-json\n</code></pre> </p> <li> <p>Add this library as dependency of your target that uses it. <p>In the <code>buildfile</code> defining the target that will use this library:</p> <pre><code>- import the target `lib{json}` from the `nlhomann-json` package, for example:\n    ```\n    import nljson = nlhomann-json%lib{json}\n    ```\n\n- then add the library's target as requirement for your target using it, for example:\n    ```\n    exe{example} : ... $nljson\n    ```\n</code></pre> <li> <p>Use the library in your project's code and build it. <p>At this point, assuming your project is initialized in a build-configuration, any <code>b</code> or <code>bdep update</code> command that will update/build the project will also acquire the missing dependency automatically, then build it and link it with your target.</p> <p>If you just want to synchronize dependencies for all your configurations to download the ones you just added:     <pre><code>bdep sync -af\n</code></pre> </p> Example: from scratch, using <code>build2</code>'s <code>bdep new</code> command <ol> <li> <p>Create a new executable project \"example\" (see <code>bdep new</code> command details for the various options to create a new project):</p> <pre><code>bdep new example\n</code></pre> </li> <li> <p>Edit these files by replacing their content:</p> <ul> <li> <p><code>example/repositories.manifest</code>: Enable acquiring packages from https://cppget.org by uncommenting the related lines:</p> project's `repositories.manifest`<pre><code>: 1\nsummary: example project repository\n\n:\nrole: prerequisite\nlocation: https://pkg.cppget.org/1/stable\n#trust: ...\n\n#:\n#role: prerequisite\n#location: https://git.build2.org/hello/libhello.git\n</code></pre> </li> <li> <p><code>example/manifest</code>: Add the latest version of the <code>nlohmann-json</code> package as dependency to the project:</p> project's `manifest`<pre><code>name: example\nversion: 0.1.0-a.0.z\nlanguage: c++\nsummary: example C++ executable\nlicense: other: proprietary ; Not free/open source.\ndescription-file: README.md\nurl: https://example.org/example\nemail: your@emailprovider.com\n#build-error-email: your@emailprovider.com\ndepends: * build2 &gt;= 0.16.0\ndepends: * bpkg &gt;= 0.16.0\n#depends: libhello ^1.0.0\n\ndepends: nlohmann-json\n</code></pre> </li> <li> <p><code>example/example/buildfile</code>: import the library's target to be used as requirement for building the executable target <code>exe{example}</code>:</p> project's `buildfile`<pre><code>libs =\nimport libs = nlohmann-json%lib{json}\n\nexe{example}: {hxx ixx txx cxx}{**} $libs testscript\n\ncxx.poptions =+ \"-I$out_root\" \"-I$src_root\"\n</code></pre> </li> <li> <p><code>example/example/example.cxx</code>: <code>bdep new</code> generates a \"hello world\" by default, replace it by this:</p> example.cxx<pre><code>#include &lt;nlohmann/json.hpp&gt;\n#include &lt;iostream&gt;\n#include &lt;iomanip&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    std::cout &lt;&lt; std::setw(4) &lt;&lt; json::meta() &lt;&lt; std::endl;\n}\n</code></pre> </li> <li> <p><code>example/example/testscript</code>: (optional) if you want to be able to test that executable's output is correct using <code>b test</code>:</p> `testscript` checking the output of the program<pre><code>: json basics\n:\n$* &gt;&gt;~/EOO/\n{\n    \"compiler\": {\n/        \"c\\+\\+\": \"\\d+\",/\n/        \"family\": \"[\\w\\d]+\",/\n/        \"version\": \\d+/\n    },\n/    \"copyright\": \"\\(C\\) 2013-\\d+ Niels Lohmann\",/\n    \"name\": \"JSON for Modern C++\",\n/    \"platform\": \"[\\w\\d]+\",/\n    \"url\": \"https://github.com/nlohmann/json\",\n    \"version\": {\n        \"major\": 3,\n/        \"minor\": \\d+,/\n/        \"patch\": \\d+,/\n/        \"string\": \"3\\.\\d+\\.\\d+\"/\n    }\n}\nEOO\n</code></pre> </li> </ul> </li> <li> <p>Initialize the project in a default C/C++ build configuration directory, then build and test:</p> <pre><code>cd example/\n\n# create default C/C++ build configuration in ../example-myconfig/, initialize the project in it (downloads it's dependencies in it too)\nbdep init -C @myconfig cc\n\n# build only,\nb\n\n# or build and test the executable's output, will only work if the `tescript` is correct\nb test\n</code></pre> </li> </ol>"},{"location":"integration/package_managers/#cpmcmake","title":"CPM.cmake","text":"<p>Summary</p> <p>package: <code>gh:nlohmann/json</code></p> <ul> <li> Available versions: current and previous versions</li> <li> The package is updated with every release.</li> <li> File issues at the CPM.cmake issue tracker</li> <li> CPM.cmake website</li> </ul> <p>If you are using <code>CPM.cmake</code>, add the CPM.cmake script and the following snippet to your CMake project:</p> <pre><code>CPMAddPackage(\"gh:nlohmann/json@3.12.0\")\n</code></pre> Example <ol> <li> <p>Create the following files:</p> example.cpp<pre><code>#include &lt;nlohmann/json.hpp&gt;\n#include &lt;iostream&gt;\n#include &lt;iomanip&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    std::cout &lt;&lt; std::setw(4) &lt;&lt; json::meta() &lt;&lt; std::endl;\n}\n</code></pre> CMakeLists.txt<pre><code>cmake_minimum_required(VERSION 3.15)\nproject(json_example)\n\ninclude(${CMAKE_SOURCE_DIR}/cmake/CPM.cmake)\n\nCPMAddPackage(\"gh:nlohmann/json@3.12.0\")\n\nadd_executable(json_example example.cpp)\ntarget_link_libraries(json_example PRIVATE nlohmann_json::nlohmann_json)\n</code></pre> </li> <li> <p>Download CPM.cmake</p> <pre><code>mkdir -p cmake\nwget -O cmake/CPM.cmake https://github.com/cpm-cmake/CPM.cmake/releases/latest/download/get_cpm.cmake\n</code></pre> </li> <li> <p>Build</p> <pre><code>cmake -S . -B build\ncmake --build build\n</code></pre> </li> </ol>"},{"location":"integration/package_managers/#xmake","title":"xmake","text":"<p>Summary</p> <p>package: <code>nlohmann_json</code></p> <ul> <li> Available versions: current and previous versions</li> <li> The package is updated with every release.</li> <li> File issues at the xmake issue tracker</li> <li> xmake website</li> </ul> Example <ol> <li> <p>Create the following files:</p> example.cpp<pre><code>#include &lt;nlohmann/json.hpp&gt;\n#include &lt;iostream&gt;\n#include &lt;iomanip&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    std::cout &lt;&lt; std::setw(4) &lt;&lt; json::meta() &lt;&lt; std::endl;\n}\n</code></pre> xmake.lua<pre><code>add_requires(\"nlohmann_json\")\n\nadd_rules(\"mode.debug\", \"mode.release\")\ntarget(\"xm\")\n    set_kind(\"binary\")\n    add_files(\"example.cpp\")\n    add_packages(\"nlohmann_json\")\n    set_languages(\"cxx11\")\n</code></pre> </li> <li> <p>Build</p> <pre><code>xmake\n</code></pre> </li> <li> <p>Run</p> <pre><code>xmake run\n</code></pre> </li> </ol>"},{"location":"integration/package_managers/#other-package-managers","title":"Other package managers","text":"<p>The library is also contained in many other package repositories: </p> Package version overview <p></p>"},{"location":"integration/package_managers/#buckaroo","title":"Buckaroo","text":"<p>If you are using Buckaroo, you can install this library's module with <code>buckaroo add github.com/buckaroo-pm/nlohmann-json</code>. There is a demo repo here.</p> <p>Warning</p> <p>The module is outdated as the respective repository has not been updated in years.</p>"},{"location":"integration/package_managers/#cocoapods","title":"CocoaPods","text":"<p>If you are using CocoaPods, you can use the library by adding pod <code>\"nlohmann_json\", '~&gt;3.1.2'</code> to your podfile (see an example). Please file issues here.</p> <p></p> <p>Warning</p> <p>The module is outdated as the respective pod has not been updated in years.</p>"},{"location":"integration/pkg-config/","title":"Pkg-config","text":"<p>If you are using bare Makefiles, you can use <code>pkg-config</code> to generate the include flags that point to where the library is installed:</p> <pre><code>pkg-config nlohmann_json --cflags\n</code></pre> <p>Users of the Meson build system will also be able to use a system-wide library, which will be found by <code>pkg-config</code>:</p> <pre><code>json = dependency('nlohmann_json', required: true)\n</code></pre>"}]}
\ No newline at end of file
+{"config":{"lang":["en"],"separator":"[\\s\\-\\.]","pipeline":["stopWordFilter"],"fields":{"title":{"boost":1000.0},"text":{"boost":1.0},"tags":{"boost":1000000.0}}},"docs":[{"location":"","title":"JSON for Modern C++","text":""},{"location":"api/json/","title":"nlohmann::json","text":"<pre><code>using json = basic_json&lt;&gt;;\n</code></pre> <p>This type is the default specialization of the basic_json class which uses the standard template types.</p>"},{"location":"api/json/#examples","title":"Examples","text":"Example <p>The example below demonstrates how to use the type <code>nlohmann::json</code>.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;iomanip&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create a JSON object\n    json j =\n    {\n        {\"pi\", 3.141},\n        {\"happy\", true},\n        {\"name\", \"Niels\"},\n        {\"nothing\", nullptr},\n        {\n            \"answer\", {\n                {\"everything\", 42}\n            }\n        },\n        {\"list\", {1, 0, 2}},\n        {\n            \"object\", {\n                {\"currency\", \"USD\"},\n                {\"value\", 42.99}\n            }\n        }\n    };\n\n    // add new values\n    j[\"new\"][\"key\"][\"value\"] = {\"another\", \"list\"};\n\n    // count elements\n    auto s = j.size();\n    j[\"size\"] = s;\n\n    // pretty print with indent of 4 spaces\n    std::cout &lt;&lt; std::setw(4) &lt;&lt; j &lt;&lt; '\\n';\n}\n</code></pre> <p>Output:</p> <pre><code>{\n    \"answer\": {\n        \"everything\": 42\n    },\n    \"happy\": true,\n    \"list\": [\n        1,\n        0,\n        2\n    ],\n    \"name\": \"Niels\",\n    \"new\": {\n        \"key\": {\n            \"value\": [\n                \"another\",\n                \"list\"\n            ]\n        }\n    },\n    \"nothing\": null,\n    \"object\": {\n        \"currency\": \"USD\",\n        \"value\": 42.99\n    },\n    \"pi\": 3.141,\n    \"size\": 8\n}\n</code></pre>"},{"location":"api/json/#version-history","title":"Version history","text":"<p>Since version 1.0.0.</p>"},{"location":"api/operator_gtgt/","title":"nlohmann::operator&gt;&gt;(basic_json)","text":"<pre><code>std::istream&amp; operator&gt;&gt;(std::istream&amp; i, basic_json&amp; j);\n</code></pre> <p>Deserializes an input stream to a JSON value.</p>"},{"location":"api/operator_gtgt/#parameters","title":"Parameters","text":"<code>i</code> (in, out) input stream to read a serialized JSON value from <code>j</code> (in, out) JSON value to write the deserialized input to"},{"location":"api/operator_gtgt/#return-value","title":"Return value","text":"<p>the stream <code>i</code></p>"},{"location":"api/operator_gtgt/#exceptions","title":"Exceptions","text":"<ul> <li>Throws <code>parse_error.101</code> in case of an unexpected token.</li> </ul>"},{"location":"api/operator_gtgt/#complexity","title":"Complexity","text":"<p>Linear in the length of the input. The parser is a predictive LL(1) parser.</p>"},{"location":"api/operator_gtgt/#notes","title":"Notes","text":"<p>A UTF-8 byte order mark is silently ignored.</p> <p>Invalid Unicode escapes and unpaired surrogates in the input are reported as <code>parse_error.101</code> with a detailed message.</p> <p>Deprecation</p> <p>This function replaces function <code>std::istream&amp; operator&lt;&lt;(basic_json&amp; j, std::istream&amp; i)</code> which has been deprecated in version 3.0.0. It will be removed in version 4.0.0. Please replace calls like <code>j &lt;&lt; i;</code> with <code>i &gt;&gt; j;</code>.</p>"},{"location":"api/operator_gtgt/#examples","title":"Examples","text":"Example <p>The example below shows how a JSON value is constructed by reading a serialization from a stream.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;iomanip&gt;\n#include &lt;sstream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create stream with serialized JSON\n    std::stringstream ss;\n    ss &lt;&lt; R\"({\n        \"number\": 23,\n        \"string\": \"Hello, world!\",\n        \"array\": [1, 2, 3, 4, 5],\n        \"boolean\": false,\n        \"null\": null\n    })\";\n\n    // create JSON value and read the serialization from the stream\n    json j;\n    ss &gt;&gt; j;\n\n    // serialize JSON\n    std::cout &lt;&lt; std::setw(2) &lt;&lt; j &lt;&lt; '\\n';\n}\n</code></pre> <p>Output:</p> <pre><code>{\n  \"array\": [\n    1,\n    2,\n    3,\n    4,\n    5\n  ],\n  \"boolean\": false,\n  \"null\": null,\n  \"number\": 23,\n  \"string\": \"Hello, world!\"\n}\n</code></pre>"},{"location":"api/operator_gtgt/#see-also","title":"See also","text":"<ul> <li>accept - check if the input is valid JSON</li> <li>parse - deserialize from a compatible input</li> </ul>"},{"location":"api/operator_gtgt/#version-history","title":"Version history","text":"<ul> <li>Added in version 1.0.0.</li> </ul>"},{"location":"api/operator_literal_json/","title":"nlohmann::operator\"\"_json","text":"<pre><code>json operator \"\"_json(const char* s, std::size_t n);\njson operator \"\"_json(const char8_t* s, std::size_t n);  // since C++20\n</code></pre> <p>This operator implements a user-defined string literal for JSON objects. It can be used by adding <code>_json</code> to a string literal and returns a <code>json</code> object if no parse error occurred.</p> <p>It is recommended to bring the operator into scope using any of the following lines: <pre><code>using nlohmann::literals::operator \"\"_json;\nusing namespace nlohmann::literals;\nusing namespace nlohmann::json_literals;\nusing namespace nlohmann::literals::json_literals;\nusing namespace nlohmann;\n</code></pre></p> <p>This is suggested to ease migration to the next major version release of the library. See <code>JSON_USE_GLOBAL_UDLS</code> for details.</p>"},{"location":"api/operator_literal_json/#parameters","title":"Parameters","text":"<code>s</code> (in) a string representation of a JSON object <code>n</code> (in) length of string <code>s</code>"},{"location":"api/operator_literal_json/#return-value","title":"Return value","text":"<p><code>json</code> value parsed from <code>s</code></p>"},{"location":"api/operator_literal_json/#exceptions","title":"Exceptions","text":"<p>The function can throw anything that <code>parse(s, s+n)</code> would throw.</p>"},{"location":"api/operator_literal_json/#complexity","title":"Complexity","text":"<p>Linear.</p>"},{"location":"api/operator_literal_json/#examples","title":"Examples","text":"Example <p>The following code shows how to create JSON values from string literals.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;iomanip&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\nusing namespace nlohmann::literals;\n\nint main()\n{\n    json j = R\"( {\"hello\": \"world\", \"answer\": 42} )\"_json;\n\n    std::cout &lt;&lt; std::setw(2) &lt;&lt; j &lt;&lt; '\\n';\n}\n</code></pre> <p>Output:</p> <pre><code>{\n  \"answer\": 42,\n  \"hello\": \"world\"\n}\n</code></pre>"},{"location":"api/operator_literal_json/#version-history","title":"Version history","text":"<ul> <li>Added in version 1.0.0.</li> <li>Moved to namespace <code>nlohmann::literals::json_literals</code> in 3.11.0.</li> <li>Added <code>char8_t*</code> overload in 3.12.x.</li> </ul>"},{"location":"api/operator_literal_json_pointer/","title":"nlohmann::operator\"\"_json_pointer","text":"<pre><code>json_pointer operator \"\"_json_pointer(const char* s, std::size_t n);\njson_pointer operator \"\"_json_pointer(const char8_t* s, std::size_t n);  // since C++20\n</code></pre> <p>This operator implements a user-defined string literal for JSON Pointers. It can be used by adding <code>_json_pointer</code> to a string literal and returns a <code>json_pointer</code> object if no parse error occurred.</p> <p>It is recommended to bring the operator into scope using any of the following lines: <pre><code>using nlohmann::literals::operator \"\"_json_pointer;\nusing namespace nlohmann::literals;\nusing namespace nlohmann::json_literals;\nusing namespace nlohmann::literals::json_literals;\nusing namespace nlohmann;\n</code></pre> This is suggested to ease migration to the next major version release of the library. See <code>JSON_USE_GLOBAL_UDLS</code> for details.</p>"},{"location":"api/operator_literal_json_pointer/#parameters","title":"Parameters","text":"<code>s</code> (in) a string representation of a JSON Pointer <code>n</code> (in) length of string <code>s</code>"},{"location":"api/operator_literal_json_pointer/#return-value","title":"Return value","text":"<p><code>json_pointer</code> value parsed from <code>s</code></p>"},{"location":"api/operator_literal_json_pointer/#exceptions","title":"Exceptions","text":"<p>The function can throw anything that <code>json_pointer::json_pointer</code> would throw.</p>"},{"location":"api/operator_literal_json_pointer/#complexity","title":"Complexity","text":"<p>Linear.</p>"},{"location":"api/operator_literal_json_pointer/#examples","title":"Examples","text":"Example <p>The following code shows how to create JSON Pointers from string literals.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;iomanip&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\nusing namespace nlohmann::literals;\n\nint main()\n{\n    json j = R\"( {\"hello\": \"world\", \"answer\": 42} )\"_json;\n    auto val = j[\"/hello\"_json_pointer];\n\n    std::cout &lt;&lt; std::setw(2) &lt;&lt; val &lt;&lt; '\\n';\n}\n</code></pre> <p>Output:</p> <pre><code>\"world\"\n</code></pre>"},{"location":"api/operator_literal_json_pointer/#see-also","title":"See also","text":"<ul> <li>json_pointer - type to represent JSON Pointers</li> </ul>"},{"location":"api/operator_literal_json_pointer/#version-history","title":"Version history","text":"<ul> <li>Added in version 2.0.0.</li> <li>Moved to namespace <code>nlohmann::literals::json_literals</code> in 3.11.0.</li> <li>Added <code>char8_t*</code> overload in 3.12.x.</li> </ul>"},{"location":"api/operator_ltlt/","title":"nlohmann::operator&lt;&lt;(basic_json), nlohmann::operator&lt;&lt;(json_pointer)","text":"<pre><code>std::ostream&amp; operator&lt;&lt;(std::ostream&amp; o, const basic_json&amp; j);      // (1)\n\nstd::ostream&amp; operator&lt;&lt;(std::ostream&amp; o, const json_pointer&amp; ptr);  // (2)\n</code></pre> <ol> <li>Serialize the given JSON value <code>j</code> to the output stream <code>o</code>. The JSON value will be serialized using the    <code>dump</code> member function.<ul> <li>The indentation of the output can be controlled with the member variable <code>width</code> of the output stream <code>o</code>. For   instance, using the manipulator <code>std::setw(4)</code> on <code>o</code> sets the indentation level to <code>4</code> and the serialization   result is the same as calling <code>dump(4)</code>.</li> <li>The indentation character can be controlled with the member variable <code>fill</code> of the output stream <code>o</code>.   For instance, the manipulator <code>std::setfill('\\\\t')</code> sets indentation to use a tab character rather than the   default space character.</li> </ul> </li> <li>Write a string representation of the given JSON pointer <code>ptr</code> to the output stream <code>o</code>. The string representation is    obtained using the <code>to_string</code> member function.</li> </ol>"},{"location":"api/operator_ltlt/#parameters","title":"Parameters","text":"<code>o</code> (in, out) stream to write to <code>j</code> (in) JSON value to serialize <code>ptr</code> (in) JSON pointer to write"},{"location":"api/operator_ltlt/#return-value","title":"Return value","text":"<p>the stream <code>o</code></p>"},{"location":"api/operator_ltlt/#exceptions","title":"Exceptions","text":"<ol> <li>Throws <code>type_error.316</code> if a string stored inside the JSON    value is not UTF-8 encoded. Note that unlike the <code>dump</code> member functions, no <code>error_handler</code>    can be set.</li> <li>None.</li> </ol>"},{"location":"api/operator_ltlt/#complexity","title":"Complexity","text":"<p>Linear.</p>"},{"location":"api/operator_ltlt/#notes","title":"Notes","text":"<p>Deprecation</p> <p>Function  <code>std::ostream&amp; operator&lt;&lt;(std::ostream&amp; o, const basic_json&amp; j)</code> replaces function <code>std::ostream&amp; operator&gt;&gt;(const basic_json&amp; j, std::ostream&amp; o)</code> which has been deprecated in version 3.0.0. It will be removed in version 4.0.0. Please replace calls like <code>j &gt;&gt; o;</code> with <code>o &lt;&lt; j;</code>.</p>"},{"location":"api/operator_ltlt/#examples","title":"Examples","text":"Example: (1) serialize JSON value to stream <p>The example below shows the serialization with different parameters to <code>width</code> to adjust the indentation level.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;iomanip&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create JSON values\n    json j_object = {{\"one\", 1}, {\"two\", 2}};\n    json j_array = {1, 2, 4, 8, 16};\n\n    // serialize without indentation\n    std::cout &lt;&lt; j_object &lt;&lt; \"\\n\\n\";\n    std::cout &lt;&lt; j_array &lt;&lt; \"\\n\\n\";\n\n    // serialize with indentation\n    std::cout &lt;&lt; std::setw(4) &lt;&lt; j_object &lt;&lt; \"\\n\\n\";\n    std::cout &lt;&lt; std::setw(2) &lt;&lt; j_array &lt;&lt; \"\\n\\n\";\n    std::cout &lt;&lt; std::setw(1) &lt;&lt; std::setfill('\\t') &lt;&lt; j_object &lt;&lt; \"\\n\\n\";\n}\n</code></pre> <p>Output:</p> <pre><code>{\"one\":1,\"two\":2}\n\n[1,2,4,8,16]\n\n{\n    \"one\": 1,\n    \"two\": 2\n}\n\n[\n  1,\n  2,\n  4,\n  8,\n  16\n]\n\n{\n    \"one\": 1,\n    \"two\": 2\n}\n</code></pre> Example: (2) write JSON pointer to stream <p>The example below shows how to write a JSON pointer to a stream.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create JSON pointer\n    json::json_pointer ptr(\"/foo/bar/baz\");\n\n    // write string representation to stream\n    std::cout &lt;&lt; ptr &lt;&lt; std::endl;\n}\n</code></pre> <p>Output:</p> <pre><code>/foo/bar/baz\n</code></pre>"},{"location":"api/operator_ltlt/#version-history","title":"Version history","text":"<ol> <li>Added in version 1.0.0. Added support for indentation character and deprecated    <code>std::ostream&amp; operator&gt;&gt;(const basic_json&amp; j, std::ostream&amp; o)</code> in version 3.0.0.</li> <li>Added in version 3.11.0.</li> </ol>"},{"location":"api/ordered_json/","title":"nlohmann::ordered_json","text":"<pre><code>using ordered_json = basic_json&lt;ordered_map&gt;;\n</code></pre> <p>This type preserves the insertion order of object keys.</p>"},{"location":"api/ordered_json/#iterator-invalidation","title":"Iterator invalidation","text":"<p>The type is based on <code>ordered_map</code> which in turn uses a <code>std::vector</code> to store object elements. Therefore, adding object elements can yield a reallocation in which case all iterators (including the <code>end()</code> iterator) and all references to the elements are invalidated. Also, any iterator or reference after the insertion point will point to the same index, which is now a different value.</p>"},{"location":"api/ordered_json/#examples","title":"Examples","text":"Example <p>The example below demonstrates how <code>ordered_json</code> preserves the insertion order of object keys.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing ordered_json = nlohmann::ordered_json;\n\nint main()\n{\n    ordered_json j;\n    j[\"one\"] = 1;\n    j[\"two\"] = 2;\n    j[\"three\"] = 3;\n\n    std::cout &lt;&lt; j.dump(2) &lt;&lt; '\\n';\n}\n</code></pre> <p>Output:</p> <pre><code>{\n  \"one\": 1,\n  \"two\": 2,\n  \"three\": 3\n}\n</code></pre>"},{"location":"api/ordered_json/#see-also","title":"See also","text":"<ul> <li>ordered_map</li> <li>Object Order</li> </ul>"},{"location":"api/ordered_json/#version-history","title":"Version history","text":"<p>Since version 3.9.0.</p>"},{"location":"api/ordered_map/","title":"nlohmann::ordered_map","text":"<pre><code>template&lt;class Key, class T, class IgnoredLess = std::less&lt;Key&gt;,\n         class Allocator = std::allocator&lt;std::pair&lt;const Key, T&gt;&gt;&gt;\nstruct ordered_map : std::vector&lt;std::pair&lt;const Key, T&gt;, Allocator&gt;;\n</code></pre> <p>A minimal map-like container that preserves insertion order for use within <code>nlohmann::ordered_json</code> (<code>nlohmann::basic_json&lt;ordered_map&gt;</code>).</p>"},{"location":"api/ordered_map/#template-parameters","title":"Template parameters","text":"<code>Key</code> key type <code>T</code> mapped type <code>IgnoredLess</code> comparison function (ignored and only added to ensure compatibility with <code>std::map</code>) <code>Allocator</code> allocator type"},{"location":"api/ordered_map/#iterator-invalidation","title":"Iterator invalidation","text":"<p>The type uses a <code>std::vector</code> to store object elements. Therefore, adding elements can yield a reallocation in which case all iterators (including the <code>end()</code> iterator) and all references to the elements are invalidated.</p>"},{"location":"api/ordered_map/#member-types","title":"Member types","text":"<ul> <li>key_type - key type (<code>Key</code>)</li> <li>mapped_type - mapped type (<code>T</code>)</li> <li>Container - base container type (<code>std::vector&lt;std::pair&lt;const Key, T&gt;, Allocator&gt;</code>)</li> <li>iterator</li> <li>const_iterator</li> <li>size_type</li> <li>value_type</li> <li>key_compare - key comparison function <pre><code>std::equal_to&lt;Key&gt;  // until C++14\n\nstd::equal_to&lt;&gt;     // since C++14\n</code></pre></li> </ul>"},{"location":"api/ordered_map/#member-functions","title":"Member functions","text":"<ul> <li>(constructor)</li> <li>(destructor)</li> <li>emplace</li> <li>operator[]</li> <li>at</li> <li>erase</li> <li>count</li> <li>find</li> <li>insert</li> </ul>"},{"location":"api/ordered_map/#examples","title":"Examples","text":"Example <p>The example shows the different behavior of <code>std::map</code> and <code>nlohmann::ordered_map</code>.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\n// simple output function\ntemplate&lt;typename Map&gt;\nvoid output(const char* prefix, const Map&amp; m)\n{\n    std::cout &lt;&lt; prefix &lt;&lt; \" = { \";\n    for (auto&amp; element : m)\n    {\n        std::cout &lt;&lt; element.first &lt;&lt; \":\" &lt;&lt; element.second &lt;&lt; ' ';\n    }\n    std::cout &lt;&lt; \"}\" &lt;&lt; std::endl;\n}\n\nint main()\n{\n    // create and fill two maps\n    nlohmann::ordered_map&lt;std::string, std::string&gt; m_ordered;\n    m_ordered[\"one\"] = \"eins\";\n    m_ordered[\"two\"] = \"zwei\";\n    m_ordered[\"three\"] = \"drei\";\n\n    std::map&lt;std::string, std::string&gt; m_std;\n    m_std[\"one\"] = \"eins\";\n    m_std[\"two\"] = \"zwei\";\n    m_std[\"three\"] = \"drei\";\n\n    // output: m_ordered is ordered by insertion order, m_std is ordered by key\n    output(\"m_ordered\", m_ordered);\n    output(\"m_std\", m_std);\n\n    // erase and re-add \"one\" key\n    m_ordered.erase(\"one\");\n    m_ordered[\"one\"] = \"eins\";\n\n    m_std.erase(\"one\");\n    m_std[\"one\"] = \"eins\";\n\n    // output: m_ordered shows newly added key at the end; m_std is again ordered by key\n    output(\"m_ordered\", m_ordered);\n    output(\"m_std\", m_std);\n}\n</code></pre> <p>Output:</p> <pre><code>m_ordered = { one:eins two:zwei three:drei }\nm_std = { one:eins three:drei two:zwei }\nm_ordered = { two:zwei three:drei one:eins }\nm_std = { one:eins three:drei two:zwei }\n</code></pre>"},{"location":"api/ordered_map/#see-also","title":"See also","text":"<ul> <li>ordered_json</li> </ul>"},{"location":"api/ordered_map/#version-history","title":"Version history","text":"<ul> <li>Added in version 3.9.0 to implement <code>nlohmann::ordered_json</code>.</li> <li>Added key_compare member in version 3.11.0.</li> </ul>"},{"location":"api/adl_serializer/","title":"nlohmann::adl_serializer","text":"<pre><code>template&lt;typename, typename&gt;\nstruct adl_serializer;\n</code></pre> <p>Serializer that uses ADL (Argument-Dependent Lookup) to choose <code>to_json</code>/<code>from_json</code> functions from the types' namespaces.</p> <p>It is implemented similarly to</p> <pre><code>template&lt;typename ValueType&gt;\nstruct adl_serializer {\n    template&lt;typename BasicJsonType&gt;\n    static void to_json(BasicJsonType&amp; j, const T&amp; value) {\n        // calls the \"to_json\" method in T's namespace\n    }\n\n    template&lt;typename BasicJsonType&gt;\n    static void from_json(const BasicJsonType&amp; j, T&amp; value) {\n        // same thing, but with the \"from_json\" method\n    }\n};\n</code></pre>"},{"location":"api/adl_serializer/#member-functions","title":"Member functions","text":"<ul> <li>from_json - convert a JSON value to any value type</li> <li>to_json - convert any value type to a JSON value</li> </ul>"},{"location":"api/adl_serializer/#version-history","title":"Version history","text":"<ul> <li>Added in version 2.1.0.</li> </ul>"},{"location":"api/adl_serializer/from_json/","title":"nlohmann::adl_serializer::from_json","text":"<pre><code>// (1)\ntemplate&lt;typename BasicJsonType, typename TargetType = ValueType&gt;\nstatic auto from_json(BasicJsonType &amp;&amp; j, TargetType&amp; val) noexcept(\n    noexcept(::nlohmann::from_json(std::forward&lt;BasicJsonType&gt;(j), val)))\n-&gt; decltype(::nlohmann::from_json(std::forward&lt;BasicJsonType&gt;(j), val), void())\n\n// (2)\ntemplate&lt;typename BasicJsonType, typename TargetType = ValueType&gt;\nstatic auto from_json(BasicJsonType &amp;&amp; j) noexcept(\nnoexcept(::nlohmann::from_json(std::forward&lt;BasicJsonType&gt;(j), detail::identity_tag&lt;TargetType&gt; {})))\n-&gt; decltype(::nlohmann::from_json(std::forward&lt;BasicJsonType&gt;(j), detail::identity_tag&lt;TargetType&gt; {}))\n</code></pre> <p>This function is usually called by the <code>get()</code> function of the basic_json class (either explicitly or via the conversion operators).</p> <ol> <li>This function is chosen for default-constructible value types.</li> <li>This function is chosen for value types which are not default-constructible.</li> </ol>"},{"location":"api/adl_serializer/from_json/#parameters","title":"Parameters","text":"<code>j</code> (in) JSON value to read from <code>val</code> (out) value to write to"},{"location":"api/adl_serializer/from_json/#return-value","title":"Return value","text":"<ol> <li>(none) -- the converted value is written to the output parameter <code>val</code>.</li> <li>the JSON value <code>j</code> converted to <code>TargetType</code></li> </ol>"},{"location":"api/adl_serializer/from_json/#examples","title":"Examples","text":"Example: (1) Default-constructible type <p>The example below shows how a <code>from_json</code> function can be implemented for a user-defined type. This function is called by the <code>adl_serializer</code> when <code>get&lt;ns::person&gt;()</code> is called.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nnamespace ns\n{\n// a simple struct to model a person\nstruct person\n{\n    std::string name;\n    std::string address;\n    int age;\n};\n} // namespace ns\n\nnamespace ns\n{\nvoid from_json(const json&amp; j, person&amp; p)\n{\n    j.at(\"name\").get_to(p.name);\n    j.at(\"address\").get_to(p.address);\n    j.at(\"age\").get_to(p.age);\n}\n} // namespace ns\n\nint main()\n{\n    json j;\n    j[\"name\"] = \"Ned Flanders\";\n    j[\"address\"] = \"744 Evergreen Terrace\";\n    j[\"age\"] = 60;\n\n    auto p = j.get&lt;ns::person&gt;();\n\n    std::cout &lt;&lt; p.name &lt;&lt; \" (\" &lt;&lt; p.age &lt;&lt; \") lives in \" &lt;&lt; p.address &lt;&lt; std::endl;\n}\n</code></pre> <p>Output:</p> <pre><code>Ned Flanders (60) lives in 744 Evergreen Terrace\n</code></pre> Example: (2) Non-default-constructible type <p>The example below shows how a <code>from_json</code> is implemented as part of a specialization of the <code>adl_serializer</code> to realize the conversion of a non-default-constructible type.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nnamespace ns\n{\n// a simple struct to model a person (not default constructible)\nstruct person\n{\n    person(std::string n, std::string a, int aa)\n        : name(std::move(n)), address(std::move(a)), age(aa)\n    {}\n\n    std::string name;\n    std::string address;\n    int age;\n};\n} // namespace ns\n\nnamespace nlohmann\n{\ntemplate &lt;&gt;\nstruct adl_serializer&lt;ns::person&gt;\n{\n    static ns::person from_json(const json&amp; j)\n    {\n        return {j.at(\"name\"), j.at(\"address\"), j.at(\"age\")};\n    }\n\n    // Here's the catch! You must provide a to_json method! Otherwise, you\n    // will not be able to convert person to json, since you fully\n    // specialized adl_serializer on that type\n    static void to_json(json&amp; j, ns::person p)\n    {\n        j[\"name\"] = p.name;\n        j[\"address\"] = p.address;\n        j[\"age\"] = p.age;\n    }\n};\n} // namespace nlohmann\n\nint main()\n{\n    json j;\n    j[\"name\"] = \"Ned Flanders\";\n    j[\"address\"] = \"744 Evergreen Terrace\";\n    j[\"age\"] = 60;\n\n    auto p = j.get&lt;ns::person&gt;();\n\n    std::cout &lt;&lt; p.name &lt;&lt; \" (\" &lt;&lt; p.age &lt;&lt; \") lives in \" &lt;&lt; p.address &lt;&lt; std::endl;\n}\n</code></pre> <p>Output:</p> <pre><code>Ned Flanders (60) lives in 744 Evergreen Terrace\n</code></pre>"},{"location":"api/adl_serializer/from_json/#see-also","title":"See also","text":"<ul> <li>to_json</li> </ul>"},{"location":"api/adl_serializer/from_json/#version-history","title":"Version history","text":"<ul> <li>Added in version 2.1.0.</li> </ul>"},{"location":"api/adl_serializer/to_json/","title":"nlohmann::adl_serializer::to_json","text":"<pre><code>template&lt;typename BasicJsonType, typename TargetType = ValueType&gt;\nstatic auto to_json(BasicJsonType&amp; j, TargetType &amp;&amp; val) noexcept(\n    noexcept(::nlohmann::to_json(j, std::forward&lt;TargetType&gt;(val))))\n-&gt; decltype(::nlohmann::to_json(j, std::forward&lt;TargetType&gt;(val)), void())\n</code></pre> <p>This function is usually called by the constructors of the basic_json class.</p>"},{"location":"api/adl_serializer/to_json/#parameters","title":"Parameters","text":"<code>j</code> (out) JSON value to write to <code>val</code> (in) value to read from"},{"location":"api/adl_serializer/to_json/#examples","title":"Examples","text":"Example <p>The example below shows how a <code>to_json</code> function can be implemented for a user-defined type. This function is called by the <code>adl_serializer</code> when the constructor <code>basic_json(ns::person)</code> is called.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nnamespace ns\n{\n// a simple struct to model a person\nstruct person\n{\n    std::string name;\n    std::string address;\n    int age;\n};\n} // namespace ns\n\nnamespace ns\n{\nvoid to_json(json&amp; j, const person&amp; p)\n{\n    j = json{ {\"name\", p.name}, {\"address\", p.address}, {\"age\", p.age} };\n}\n} // namespace ns\n\nint main()\n{\n    ns::person p = {\"Ned Flanders\", \"744 Evergreen Terrace\", 60};\n\n    json j = p;\n\n    std::cout &lt;&lt; j &lt;&lt; std::endl;\n}\n</code></pre> <p>Output:</p> <pre><code>{\"address\":\"744 Evergreen Terrace\",\"age\":60,\"name\":\"Ned Flanders\"}\n</code></pre>"},{"location":"api/adl_serializer/to_json/#see-also","title":"See also","text":"<ul> <li>from_json</li> </ul>"},{"location":"api/adl_serializer/to_json/#version-history","title":"Version history","text":"<ul> <li>Added in version 2.1.0.</li> </ul>"},{"location":"api/basic_json/","title":"nlohmann::basic_json","text":"<p>Defined in header <code>&lt;nlohmann/json.hpp&gt;</code></p> <pre><code>template&lt;\n    template&lt;typename U, typename V, typename... Args&gt; class ObjectType = std::map,\n    template&lt;typename U, typename... Args&gt; class ArrayType = std::vector,\n    class StringType = std::string,\n    class BooleanType = bool,\n    class NumberIntegerType = std::int64_t,\n    class NumberUnsignedType = std::uint64_t,\n    class NumberFloatType = double,\n    template&lt;typename U&gt; class AllocatorType = std::allocator,\n    template&lt;typename T, typename SFINAE = void&gt; class JSONSerializer = adl_serializer,\n    class BinaryType = std::vector&lt;std::uint8_t&gt;,\n    class CustomBaseClass = void\n&gt;\nclass basic_json;\n</code></pre>"},{"location":"api/basic_json/#template-parameters","title":"Template parameters","text":"Template parameter Description Derived type <code>ObjectType</code> type for JSON objects <code>object_t</code> <code>ArrayType</code> type for JSON arrays <code>array_t</code> <code>StringType</code> type for JSON strings and object keys <code>string_t</code> <code>BooleanType</code> type for JSON booleans <code>boolean_t</code> <code>NumberIntegerType</code> type for JSON integer numbers <code>number_integer_t</code> <code>NumberUnsignedType</code> type for JSON unsigned integer numbers <code>number_unsigned_t</code> <code>NumberFloatType</code> type for JSON floating-point numbers <code>number_float_t</code> <code>AllocatorType</code> type of the allocator to use <code>JSONSerializer</code> the serializer to resolve internal calls to <code>to_json()</code> and <code>from_json()</code> <code>json_serializer</code> <code>BinaryType</code> type for binary arrays <code>binary_t</code> <code>CustomBaseClass</code> extension point for user code <code>json_base_class_t</code>"},{"location":"api/basic_json/#specializations","title":"Specializations","text":"<ul> <li>json - default specialization</li> <li>ordered_json - a specialization that maintains the insertion order of object keys</li> </ul>"},{"location":"api/basic_json/#iterator-invalidation","title":"Iterator invalidation","text":"<p>All operations that add values to an array (<code>push_back</code> , <code>operator+=</code>, <code>emplace_back</code>, <code>insert</code>, and <code>operator[]</code> for a non-existing index) can yield a reallocation, in which case all iterators (including the <code>end()</code> iterator) and all references to the elements are invalidated.</p> <p>For <code>ordered_json</code>, also all operations that add a value to an object (<code>push_back</code>, <code>operator+=</code>, <code>emplace</code>, <code>insert</code>, <code>update</code>, and <code>operator[]</code> for a non-existing key) can yield a reallocation, in which case all iterators (including the <code>end()</code> iterator) and all references to the elements are invalidated.</p>"},{"location":"api/basic_json/#requirements","title":"Requirements","text":"<p>The class satisfies the following concept requirements:</p>"},{"location":"api/basic_json/#basic","title":"Basic","text":"<ul> <li>DefaultConstructible: JSON values can be   default-constructed. The result will be a JSON null value.</li> <li>MoveConstructible: A JSON value can be constructed   from an rvalue argument.</li> <li>CopyConstructible: A JSON value can be   copy-constructed from an lvalue expression.</li> <li>MoveAssignable: A JSON value can be assigned from an   rvalue argument.</li> <li>CopyAssignable: A JSON value can be copy-assigned from   an lvalue expression.</li> <li>Destructible: JSON values can be destructed.</li> </ul>"},{"location":"api/basic_json/#layout","title":"Layout","text":"<ul> <li>StandardLayoutType: JSON values have   standard layout: All non-static data   members are private and standard layout types, the class has no virtual functions or (virtual) base classes.</li> </ul>"},{"location":"api/basic_json/#library-wide","title":"Library-wide","text":"<ul> <li>EqualityComparable: JSON values can be compared with   <code>==</code>, see <code>operator==</code>.</li> <li>LessThanComparable: JSON values can be compared with   <code>&lt;</code>, see <code>operator&lt;</code>.</li> <li>Swappable: Any JSON lvalue or rvalue of can be swapped with   any lvalue or rvalue of other compatible types, using unqualified function <code>swap</code>.</li> <li>NullablePointer: JSON values can be compared against   <code>std::nullptr_t</code> objects which are used to model the <code>null</code> value.</li> </ul>"},{"location":"api/basic_json/#container","title":"Container","text":"<ul> <li>Container: JSON values can be used like STL containers and   provide iterator access.</li> <li>ReversibleContainer: JSON values can be used like   STL containers and provide reverse iterator access.</li> </ul>"},{"location":"api/basic_json/#member-types","title":"Member types","text":"<ul> <li>adl_serializer - the default serializer</li> <li>value_t - the JSON type enumeration</li> <li>json_pointer - JSON Pointer implementation</li> <li>json_serializer - type of the serializer to for conversions from/to JSON</li> <li>error_handler_t - type to choose behavior on decoding errors</li> <li>cbor_tag_handler_t - type to choose how to handle CBOR tags</li> <li>initializer_list_t - type for initializer lists of <code>basic_json</code> values</li> <li>input_format_t - type to choose the format to parse</li> <li>json_sax_t - type for SAX events</li> </ul>"},{"location":"api/basic_json/#exceptions","title":"Exceptions","text":"<ul> <li>exception - general exception of the <code>basic_json</code> class<ul> <li>parse_error - exception indicating a parse error</li> <li>invalid_iterator - exception indicating errors with iterators</li> <li>type_error - exception indicating executing a member function with a wrong type</li> <li>out_of_range - exception indicating access out of the defined range</li> <li>other_error - exception indicating other library errors</li> </ul> </li> </ul>"},{"location":"api/basic_json/#container-types","title":"Container types","text":"Type Definition <code>value_type</code> <code>basic_json</code> <code>reference</code> <code>value_type&amp;</code> <code>const_reference</code> <code>const value_type&amp;</code> <code>difference_type</code> <code>std::ptrdiff_t</code> <code>size_type</code> <code>std::size_t</code> <code>allocator_type</code> <code>AllocatorType&lt;basic_json&gt;</code> <code>pointer</code> <code>std::allocator_traits&lt;allocator_type&gt;::pointer</code> <code>const_pointer</code> <code>std::allocator_traits&lt;allocator_type&gt;::const_pointer</code> <code>iterator</code> LegacyBidirectionalIterator <code>const_iterator</code> constant LegacyBidirectionalIterator <code>reverse_iterator</code> reverse iterator, derived from <code>iterator</code> <code>const_reverse_iterator</code> reverse iterator, derived from <code>const_iterator</code> <code>iteration_proxy</code> helper type for <code>items</code> function"},{"location":"api/basic_json/#json-value-data-types","title":"JSON value data types","text":"<ul> <li>array_t - type for arrays</li> <li>binary_t - type for binary arrays</li> <li>boolean_t - type for booleans</li> <li>default_object_comparator_t - default comparator for objects</li> <li>number_float_t - type for numbers (floating-point)</li> <li>number_integer_t - type for numbers (integer)</li> <li>number_unsigned_t - type for numbers (unsigned)</li> <li>object_comparator_t - comparator for objects</li> <li>object_t - type for objects</li> <li>string_t - type for strings</li> </ul>"},{"location":"api/basic_json/#parser-callback","title":"Parser callback","text":"<ul> <li>parse_event_t - parser event types</li> <li>parser_callback_t - per-element parser callback type</li> </ul>"},{"location":"api/basic_json/#member-functions","title":"Member functions","text":"<ul> <li>(constructor)</li> <li>(destructor)</li> <li>operator= - copy assignment</li> <li>array (static) - explicitly create an array</li> <li>binary (static) - explicitly create a binary array</li> <li>object (static) - explicitly create an object</li> </ul>"},{"location":"api/basic_json/#object-inspection","title":"Object inspection","text":"<p>Functions to inspect the type of a JSON value.</p> <ul> <li>type - return the type of the JSON value</li> <li>operator value_t - return the type of the JSON value</li> <li>type_name - return the type as string</li> <li>is_primitive - return whether the type is primitive</li> <li>is_structured - return whether the type is structured</li> <li>is_null - return whether the value is null</li> <li>is_boolean - return whether the value is a boolean</li> <li>is_number - return whether the value is a number</li> <li>is_number_integer - return whether the value is an integer number</li> <li>is_number_unsigned - return whether the value is an unsigned integer number</li> <li>is_number_float - return whether the value is a floating-point number</li> <li>is_object - return whether the value is an object</li> <li>is_array - return whether the value is an array</li> <li>is_string - return whether the value is a string</li> <li>is_binary - return whether the value is a binary array</li> <li>is_discarded - return whether the value is discarded</li> </ul> <p>Optional functions to access the diagnostic positions.</p> <ul> <li>start_pos - return the start position of the value</li> <li>end_pos - return the one past the end position of the value</li> </ul>"},{"location":"api/basic_json/#value-access","title":"Value access","text":"<p>Direct access to the stored value of a JSON value.</p> <ul> <li>get - get a value</li> <li>get_to - get a value and write it to a destination</li> <li>get_ptr - get a pointer value</li> <li>get_ref - get a reference value</li> <li>operator ValueType - get a value</li> <li>get_binary - get a binary value</li> </ul>"},{"location":"api/basic_json/#element-access","title":"Element access","text":"<p>Access to the JSON value</p> <ul> <li>at - access specified element with bounds checking</li> <li>operator[] - access specified element</li> <li>value - access specified object element with default value</li> <li>front - access the first element</li> <li>back - access the last element</li> </ul>"},{"location":"api/basic_json/#lookup","title":"Lookup","text":"<ul> <li>find - find an element in a JSON object</li> <li>count - returns the number of occurrences of a key in a JSON object</li> <li>contains - check the existence of an element in a JSON object</li> </ul>"},{"location":"api/basic_json/#iterators","title":"Iterators","text":"<ul> <li>begin - returns an iterator to the first element</li> <li>cbegin - returns a const iterator to the first element</li> <li>end - returns an iterator to one past the last element</li> <li>cend - returns a const iterator to one past the last element</li> <li>rbegin - returns an iterator to the reverse-beginning</li> <li>rend - returns an iterator to the reverse-end</li> <li>crbegin - returns a const iterator to the reverse-beginning</li> <li>crend - returns a const iterator to the reverse-end</li> <li>items - wrapper to access iterator member functions in range-based for</li> </ul>"},{"location":"api/basic_json/#capacity","title":"Capacity","text":"<ul> <li>empty - checks whether the container is empty</li> <li>size - returns the number of elements</li> <li>max_size - returns the maximum possible number of elements</li> </ul>"},{"location":"api/basic_json/#modifiers","title":"Modifiers","text":"<ul> <li>clear - clears the contents</li> <li>push_back - add a value to an array/object</li> <li>operator+= - add a value to an array/object</li> <li>emplace_back - add a value to an array</li> <li>emplace - add a value to an object if a key does not exist</li> <li>erase - remove elements</li> <li>insert - inserts elements</li> <li>update - updates a JSON object from another object, overwriting existing keys </li> <li>swap - exchanges the values</li> </ul>"},{"location":"api/basic_json/#lexicographical-comparison-operators","title":"Lexicographical comparison operators","text":"<ul> <li>operator== - comparison: equal</li> <li>operator!= - comparison: not equal</li> <li>operator&lt; - comparison: less than</li> <li>operator&gt; - comparison: greater than</li> <li>operator&lt;= - comparison: less than or equal</li> <li>operator&gt;= - comparison: greater than or equal</li> <li>operator&lt;=&gt; - comparison: 3-way</li> </ul>"},{"location":"api/basic_json/#serialization-dumping","title":"Serialization / Dumping","text":"<ul> <li>dump - serialization</li> </ul>"},{"location":"api/basic_json/#deserialization-parsing","title":"Deserialization / Parsing","text":"<ul> <li>parse (static) - deserialize from a compatible input</li> <li>accept (static) - check if the input is valid JSON</li> <li>sax_parse (static) - generate SAX events</li> </ul>"},{"location":"api/basic_json/#json-pointer-functions","title":"JSON Pointer functions","text":"<ul> <li>flatten - return flattened JSON value</li> <li>unflatten - unflatten a previously flattened JSON value</li> </ul>"},{"location":"api/basic_json/#json-patch-functions","title":"JSON Patch functions","text":"<ul> <li>patch - applies a JSON patch</li> <li>patch_inplace - applies a JSON patch in place</li> <li>diff (static) - creates a diff as a JSON patch</li> </ul>"},{"location":"api/basic_json/#json-merge-patch-functions","title":"JSON Merge Patch functions","text":"<ul> <li>merge_patch - applies a JSON Merge Patch</li> </ul>"},{"location":"api/basic_json/#static-functions","title":"Static functions","text":"<ul> <li>meta - returns version information on the library</li> <li>get_allocator - returns the allocator associated with the container</li> </ul>"},{"location":"api/basic_json/#binary-formats","title":"Binary formats","text":"<ul> <li>from_bjdata (static) - create a JSON value from an input in BJData format</li> <li>from_bson (static) - create a JSON value from an input in BSON format</li> <li>from_cbor (static) - create a JSON value from an input in CBOR format</li> <li>from_msgpack (static) - create a JSON value from an input in MessagePack format</li> <li>from_ubjson (static) - create a JSON value from an input in UBJSON format</li> <li>to_bjdata (static) - create a BJData serialization of a given JSON value</li> <li>to_bson (static) - create a BSON serialization of a given JSON value</li> <li>to_cbor (static) - create a CBOR serialization of a given JSON value</li> <li>to_msgpack (static) - create a MessagePack serialization of a given JSON value</li> <li>to_ubjson (static) - create a UBJSON serialization of a given JSON value</li> </ul>"},{"location":"api/basic_json/#non-member-functions","title":"Non-member functions","text":"<ul> <li>operator&lt;&lt;(std::ostream&amp;) - serialize to stream</li> <li>operator&gt;&gt;(std::istream&amp;) - deserialize from stream</li> <li>to_string - user-defined <code>to_string</code> function for JSON values</li> </ul>"},{"location":"api/basic_json/#literals","title":"Literals","text":"<ul> <li>operator\"\"_json - user-defined string literal for JSON values</li> </ul>"},{"location":"api/basic_json/#helper-classes","title":"Helper classes","text":"<ul> <li>std::hash&lt;basic_json&gt; - return a hash value for a JSON object</li> <li>std::swap&lt;basic_json&gt; - exchanges the values of two JSON objects</li> </ul>"},{"location":"api/basic_json/#examples","title":"Examples","text":"Example <p>The example shows how the library is used.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;iomanip&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create a JSON object\n    json j =\n    {\n        {\"pi\", 3.141},\n        {\"happy\", true},\n        {\"name\", \"Niels\"},\n        {\"nothing\", nullptr},\n        {\n            \"answer\", {\n                {\"everything\", 42}\n            }\n        },\n        {\"list\", {1, 0, 2}},\n        {\n            \"object\", {\n                {\"currency\", \"USD\"},\n                {\"value\", 42.99}\n            }\n        }\n    };\n\n    // add new values\n    j[\"new\"][\"key\"][\"value\"] = {\"another\", \"list\"};\n\n    // count elements\n    auto s = j.size();\n    j[\"size\"] = s;\n\n    // pretty print with indent of 4 spaces\n    std::cout &lt;&lt; std::setw(4) &lt;&lt; j &lt;&lt; '\\n';\n}\n</code></pre> <p>Output:</p> <pre><code>{\n    \"answer\": {\n        \"everything\": 42\n    },\n    \"happy\": true,\n    \"list\": [\n        1,\n        0,\n        2\n    ],\n    \"name\": \"Niels\",\n    \"new\": {\n        \"key\": {\n            \"value\": [\n                \"another\",\n                \"list\"\n            ]\n        }\n    },\n    \"nothing\": null,\n    \"object\": {\n        \"currency\": \"USD\",\n        \"value\": 42.99\n    },\n    \"pi\": 3.141,\n    \"size\": 8\n}\n</code></pre>"},{"location":"api/basic_json/#see-also","title":"See also","text":"<ul> <li>RFC 8259: The JavaScript Object Notation (JSON) Data Interchange Format</li> </ul>"},{"location":"api/basic_json/#version-history","title":"Version history","text":"<ul> <li>Added in version 1.0.0.</li> </ul>"},{"location":"api/basic_json/accept/","title":"nlohmann::basic_json::accept","text":"<pre><code>// (1)\ntemplate&lt;typename InputType&gt;\nstatic bool accept(InputType&amp;&amp; i,\n                   const bool ignore_comments = false,\n                   const bool ignore_trailing_commas = false);\n\n// (2)\ntemplate&lt;typename IteratorType&gt;\nstatic bool accept(IteratorType first, IteratorType last,\n                   const bool ignore_comments = false,\n                   const bool ignore_trailing_commas = false);\n</code></pre> <p>Checks whether the input is valid JSON.</p> <ol> <li>Reads from a compatible input.</li> <li> <p>Reads from a pair of character iterators</p> <p>The value_type of the iterator must be an integral type with a size of 1, 2, or 4 bytes, which will be interpreted respectively as UTF-8, UTF-16, and UTF-32.</p> </li> </ol> <p>Unlike the <code>parse()</code> function, this function neither throws an exception in case of invalid JSON input (i.e., a parse error) nor creates diagnostic information.</p>"},{"location":"api/basic_json/accept/#template-parameters","title":"Template parameters","text":"<code>InputType</code> <p>A compatible input, for instance:</p> <ul> <li>an <code>std::istream</code> object</li> <li>a <code>FILE</code> pointer (throws if null)</li> <li>a C-style array of characters</li> <li>a pointer to a null-terminated string of single byte characters (throws if null)</li> <li>a <code>std::string</code></li> <li>an object <code>obj</code> for which <code>begin(obj)</code> and <code>end(obj)</code> produces a valid pair of iterators.</li> </ul> <code>IteratorType</code> <p>a compatible iterator type, for instance.</p> <ul> <li>a pair of <code>std::string::iterator</code> or <code>std::vector&lt;std::uint8_t&gt;::iterator</code></li> <li>a pair of pointers such as <code>ptr</code> and <code>ptr + len</code></li> </ul>"},{"location":"api/basic_json/accept/#parameters","title":"Parameters","text":"<code>i</code> (in) Input to parse from. <code>ignore_comments</code> (in) whether comments should be ignored and treated like whitespace (<code>true</code>) or yield a parse error (<code>false</code>); (optional, <code>false</code> by default) <code>ignore_trailing_commas</code> (in) whether trailing commas in arrays or objects should be ignored and treated like whitespace (<code>true</code>) or yield a parse error (<code>false</code>); (optional, <code>false</code> by default) <code>first</code> (in) iterator to the start of the character range <code>last</code> (in) iterator to the end of the character range"},{"location":"api/basic_json/accept/#return-value","title":"Return value","text":"<p>Whether the input is valid JSON.</p>"},{"location":"api/basic_json/accept/#exception-safety","title":"Exception safety","text":"<p>Strong guarantee: if an exception is thrown, there are no changes in the JSON value.</p>"},{"location":"api/basic_json/accept/#exceptions","title":"Exceptions","text":"<p>Throws <code>parse_error.101</code> in case of an empty input like a null <code>FILE*</code> or <code>char*</code> pointer.</p>"},{"location":"api/basic_json/accept/#complexity","title":"Complexity","text":"<p>Linear in the length of the input. The parser is a predictive LL(1) parser.</p>"},{"location":"api/basic_json/accept/#notes","title":"Notes","text":"<p>A UTF-8 byte order mark is silently ignored.</p>"},{"location":"api/basic_json/accept/#examples","title":"Examples","text":"Example <p>The example below demonstrates the <code>accept()</code> function reading from a string.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;iomanip&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // a valid JSON text\n    auto valid_text = R\"(\n    {\n        \"numbers\": [1, 2, 3]\n    }\n    )\";\n\n    // an invalid JSON text\n    auto invalid_text = R\"(\n    {\n        \"strings\": [\"extra\", \"comma\", ]\n    }\n    )\";\n\n    std::cout &lt;&lt; std::boolalpha\n              &lt;&lt; json::accept(valid_text) &lt;&lt; ' '\n              &lt;&lt; json::accept(invalid_text) &lt;&lt; '\\n';\n}\n</code></pre> <p>Output:</p> <pre><code>true false\n</code></pre>"},{"location":"api/basic_json/accept/#see-also","title":"See also","text":"<ul> <li>parse - deserialize from a compatible input</li> <li>sax_parse - parse input using the SAX interface</li> <li>operator&gt;&gt; - deserialize from stream</li> </ul>"},{"location":"api/basic_json/accept/#version-history","title":"Version history","text":"<ul> <li>Added in version 3.0.0.</li> <li>Ignoring comments via <code>ignore_comments</code> added in version 3.9.0.</li> <li>Changed runtime assertion in case of <code>FILE*</code> null pointers to exception in version 3.12.0.</li> <li>Added <code>ignore_trailing_commas</code> in version 3.12.x.</li> </ul> <p>Deprecation</p> <p>Overload (2) replaces calls to <code>accept</code> with a pair of iterators as their first parameter which has been deprecated in version 3.8.0. This overload will be removed in version 4.0.0. Please replace all calls like <code>accept({ptr, ptr+len}, ...);</code> with <code>accept(ptr, ptr+len, ...);</code>.</p> <p>You should be warned by your compiler with a <code>-Wdeprecated-declarations</code> warning if you are using a deprecated function.</p>"},{"location":"api/basic_json/array/","title":"nlohmann::basic_json::array","text":"<pre><code>static basic_json array(initializer_list_t init = {});\n</code></pre> <p>Creates a JSON array value from a given initializer list. That is, given a list of values <code>a, b, c</code>, creates the JSON value <code>[a, b, c]</code>. If the initializer list is empty, the empty array <code>[]</code> is created.</p>"},{"location":"api/basic_json/array/#parameters","title":"Parameters","text":"<code>init</code> (in) initializer list with JSON values to create an array from (optional)"},{"location":"api/basic_json/array/#return-value","title":"Return value","text":"<p>JSON array value</p>"},{"location":"api/basic_json/array/#exception-safety","title":"Exception safety","text":"<p>Strong guarantee: if an exception is thrown, there are no changes in the JSON value.</p>"},{"location":"api/basic_json/array/#complexity","title":"Complexity","text":"<p>Linear in the size of <code>init</code>.</p>"},{"location":"api/basic_json/array/#notes","title":"Notes","text":"<p>This function is only needed to express two edge cases that cannot be realized with the initializer list constructor (<code>basic_json(initializer_list_t, bool, value_t)</code>). These cases are:</p> <ol> <li>creating an array whose elements are all pairs whose first element is a string -- in this case, the initializer list    constructor would create an object, taking the first elements as keys</li> <li>creating an empty array -- passing the empty initializer list to the initializer list constructor yields an empty    object</li> </ol>"},{"location":"api/basic_json/array/#examples","title":"Examples","text":"Example <p>The following code shows an example for the <code>array</code> function.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create JSON arrays\n    json j_no_init_list = json::array();\n    json j_empty_init_list = json::array({});\n    json j_nonempty_init_list = json::array({1, 2, 3, 4});\n    json j_list_of_pairs = json::array({ {\"one\", 1}, {\"two\", 2} });\n\n    // serialize the JSON arrays\n    std::cout &lt;&lt; j_no_init_list &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_empty_init_list &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_nonempty_init_list &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_list_of_pairs &lt;&lt; '\\n';\n}\n</code></pre> <p>Output:</p> <pre><code>[]\n[]\n[1,2,3,4]\n[[\"one\",1],[\"two\",2]]\n</code></pre>"},{"location":"api/basic_json/array/#see-also","title":"See also","text":"<ul> <li><code>basic_json(initializer_list_t)</code> - create a JSON value from an initializer list</li> <li><code>object</code> - create a JSON object value from an initializer list</li> </ul>"},{"location":"api/basic_json/array/#version-history","title":"Version history","text":"<ul> <li>Added in version 1.0.0.</li> </ul>"},{"location":"api/basic_json/array_t/","title":"nlohmann::basic_json::array_t","text":"<pre><code>using array_t = ArrayType&lt;basic_json, AllocatorType&lt;basic_json&gt;&gt;;\n</code></pre> <p>The type used to store JSON arrays.</p> <p>RFC 8259 describes JSON arrays as follows:</p> <p>An array is an ordered sequence of zero or more values.</p> <p>To store objects in C++, a type is defined by the template parameters explained below.</p>"},{"location":"api/basic_json/array_t/#template-parameters","title":"Template parameters","text":"<code>ArrayType</code> container type to store arrays (e.g., <code>std::vector</code> or <code>std::list</code>) <code>AllocatorType</code> the allocator to use for objects (e.g., <code>std::allocator</code>)"},{"location":"api/basic_json/array_t/#notes","title":"Notes","text":""},{"location":"api/basic_json/array_t/#default-type","title":"Default type","text":"<p>With the default values for <code>ArrayType</code> (<code>std::vector</code>) and <code>AllocatorType</code> (<code>std::allocator</code>), the default value for <code>array_t</code> is:</p> <pre><code>std::vector&lt;\n  basic_json, // value_type\n  std::allocator&lt;basic_json&gt; // allocator_type\n&gt;\n</code></pre>"},{"location":"api/basic_json/array_t/#limits","title":"Limits","text":"<p>RFC 8259 specifies:</p> <p>An implementation may set limits on the maximum depth of nesting.</p> <p>In this class, the array's limit of nesting is not explicitly constrained. However, a maximum depth of nesting may be introduced by the compiler or runtime environment. A theoretical limit can be queried by calling the <code>max_size</code> function of a JSON array.</p>"},{"location":"api/basic_json/array_t/#storage","title":"Storage","text":"<p>Arrays are stored as pointers in a <code>basic_json</code> type. That is, for any access to array values, a pointer of type <code>array_t*</code> must be dereferenced.</p>"},{"location":"api/basic_json/array_t/#examples","title":"Examples","text":"Example <p>The following code shows that <code>array_t</code> is by default, a typedef to <code>std::vector&lt;nlohmann::json&gt;</code>.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;iomanip&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    std::cout &lt;&lt; std::boolalpha &lt;&lt; std::is_same&lt;std::vector&lt;json&gt;, json::array_t&gt;::value &lt;&lt; std::endl;\n}\n</code></pre> <p>Output:</p> <pre><code>true\n</code></pre>"},{"location":"api/basic_json/array_t/#version-history","title":"Version history","text":"<ul> <li>Added in version 1.0.0.</li> </ul>"},{"location":"api/basic_json/at/","title":"nlohmann::basic_json::at","text":"<pre><code>// (1)\nreference at(size_type idx);\nconst_reference at(size_type idx) const;\n\n// (2)\nreference at(const typename object_t::key_type&amp; key);\nconst_reference at(const typename object_t::key_type&amp; key) const;\n\n// (3)\ntemplate&lt;typename KeyType&gt;\nreference at(KeyType&amp;&amp; key);\ntemplate&lt;typename KeyType&gt;\nconst_reference at(KeyType&amp;&amp; key) const;\n\n// (4)\nreference at(const json_pointer&amp; ptr);\nconst_reference at(const json_pointer&amp; ptr) const;\n</code></pre> <ol> <li>Returns a reference to the array element at specified location <code>idx</code>, with bounds checking.</li> <li>Returns a reference to the object element with specified key <code>key</code>, with bounds checking.</li> <li>See 2. This overload is only available if <code>KeyType</code> is comparable with <code>typename object_t::key_type</code> and    <code>typename object_comparator_t::is_transparent</code> denotes a type.</li> <li>Returns a reference to the element at specified JSON pointer <code>ptr</code>, with bounds checking.</li> </ol>"},{"location":"api/basic_json/at/#template-parameters","title":"Template parameters","text":"<code>KeyType</code> A type for an object key other than <code>json_pointer</code> that is comparable with <code>string_t</code> using  <code>object_comparator_t</code>. This can also be a string view (C++17)."},{"location":"api/basic_json/at/#parameters","title":"Parameters","text":"<code>idx</code> (in) index of the element to access <code>key</code> (in) object key of the elements to access <code>ptr</code> (in) JSON pointer to the desired element"},{"location":"api/basic_json/at/#return-value","title":"Return value","text":"<ol> <li>reference to the element at index <code>idx</code></li> <li>reference to the element at key <code>key</code></li> <li>reference to the element at key <code>key</code></li> <li>reference to the element pointed to by <code>ptr</code></li> </ol>"},{"location":"api/basic_json/at/#exception-safety","title":"Exception safety","text":"<p>Strong exception safety: if an exception occurs, the original value stays intact.</p>"},{"location":"api/basic_json/at/#exceptions","title":"Exceptions","text":"<ol> <li>The function can throw the following exceptions:<ul> <li>Throws <code>type_error.304</code> if the JSON value is not an array;   in this case, calling <code>at</code> with an index makes no sense. See the example below.</li> <li>Throws <code>out_of_range.401</code> if the index <code>idx</code> is out of   range of the array; that is, <code>idx &gt;= size()</code>. See the example below.</li> </ul> </li> <li>The function can throw the following exceptions:<ul> <li>Throws <code>type_error.304</code> if the JSON value is not an object;   in this case, calling <code>at</code> with a key makes no sense. See the example below.</li> <li>Throws <code>out_of_range.403</code> if the key <code>key</code> is not   stored in the object; that is, <code>find(key) == end()</code>. See the example below.</li> </ul> </li> <li>See 2.</li> <li>The function can throw the following exceptions:<ul> <li>Throws <code>parse_error.106</code> if an array index in the passed   JSON pointer <code>ptr</code> begins with '0'. See the example below.</li> <li>Throws <code>parse_error.109</code> if an array index in the passed   JSON pointer <code>ptr</code> is not a number. See the example below.</li> <li>Throws <code>out_of_range.401</code> if an array index in the passed   JSON pointer <code>ptr</code> is out of range. See the example below.</li> <li>Throws <code>out_of_range.402</code> if the array index '-' is used   in the passed JSON pointer <code>ptr</code>. As <code>at</code> provides checked access (and no elements are implicitly inserted), the   index '-' is always invalid. See the example below.</li> <li>Throws <code>out_of_range.403</code> if the JSON pointer describes a   key of an object which cannot be found. See the example below.</li> <li>Throws <code>out_of_range.404</code> if the JSON pointer <code>ptr</code> can   not be resolved. See the example below.</li> <li>Throws <code>out_of_range.410</code> if an array index in the passed   JSON pointer <code>ptr</code> exceeds the range of <code>size_type</code> (e.g., on 32-bit platforms).</li> </ul> </li> </ol>"},{"location":"api/basic_json/at/#complexity","title":"Complexity","text":"<ol> <li>Constant.</li> <li>Logarithmic in the size of the container.</li> <li>Logarithmic in the size of the container.</li> <li>Logarithmic in the size of the container.</li> </ol>"},{"location":"api/basic_json/at/#examples","title":"Examples","text":"Example: (1) access specified array element with bounds checking <p>The example below shows how array elements can be read and written using <code>at()</code>. It also demonstrates the different exceptions that can be thrown.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create JSON array\n    json array = {\"first\", \"2nd\", \"third\", \"fourth\"};\n\n    // output element at index 2 (third element)\n    std::cout &lt;&lt; array.at(2) &lt;&lt; '\\n';\n\n    // change element at index 1 (second element) to \"second\"\n    array.at(1) = \"second\";\n\n    // output changed array\n    std::cout &lt;&lt; array &lt;&lt; '\\n';\n\n    // exception type_error.304\n    try\n    {\n        // use at() on a non-array type\n        json str = \"I am a string\";\n        str.at(0) = \"Another string\";\n    }\n    catch (const json::type_error&amp; e)\n    {\n        std::cout &lt;&lt; e.what() &lt;&lt; '\\n';\n    }\n\n    // exception out_of_range.401\n    try\n    {\n        // try to write beyond the array limit\n        array.at(5) = \"sixth\";\n    }\n    catch (const json::out_of_range&amp; e)\n    {\n        std::cout &lt;&lt; e.what() &lt;&lt; '\\n';\n    }\n}\n</code></pre> <p>Output:</p> <pre><code>\"third\"\n[\"first\",\"second\",\"third\",\"fourth\"]\n[json.exception.type_error.304] cannot use at() with string\n[json.exception.out_of_range.401] array index 5 is out of range\n</code></pre> Example: (1) access specified array element with bounds checking <p>The example below shows how array elements can be read using <code>at()</code>. It also demonstrates the different exceptions that can be thrown.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create JSON array\n    const json array = {\"first\", \"2nd\", \"third\", \"fourth\"};\n\n    // output element at index 2 (third element)\n    std::cout &lt;&lt; array.at(2) &lt;&lt; '\\n';\n\n    // exception type_error.304\n    try\n    {\n        // use at() on a non-array type\n        const json str = \"I am a string\";\n        std::cout &lt;&lt; str.at(0) &lt;&lt; '\\n';\n    }\n    catch (const json::type_error&amp; e)\n    {\n        std::cout &lt;&lt; e.what() &lt;&lt; '\\n';\n    }\n\n    // exception out_of_range.401\n    try\n    {\n        // try to read beyond the array limit\n        std::cout &lt;&lt; array.at(5) &lt;&lt; '\\n';\n    }\n    catch (const json::out_of_range&amp; e)\n    {\n        std::cout &lt;&lt; e.what() &lt;&lt; '\\n';\n    }\n}\n</code></pre> <p>Output:</p> <pre><code>\"third\"\n[json.exception.type_error.304] cannot use at() with string\n[json.exception.out_of_range.401] array index 5 is out of range\n</code></pre> Example: (2) access specified object element with bounds checking <p>The example below shows how object elements can be read and written using <code>at()</code>. It also demonstrates the different exceptions that can be thrown.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create JSON object\n    json object =\n    {\n        {\"the good\", \"il buono\"},\n        {\"the bad\", \"il cattivo\"},\n        {\"the ugly\", \"il brutto\"}\n    };\n\n    // output element with key \"the ugly\"\n    std::cout &lt;&lt; object.at(\"the ugly\") &lt;&lt; '\\n';\n\n    // change element with key \"the bad\"\n    object.at(\"the bad\") = \"il cattivo\";\n\n    // output changed array\n    std::cout &lt;&lt; object &lt;&lt; '\\n';\n\n    // exception type_error.304\n    try\n    {\n        // use at() on a non-object type\n        json str = \"I am a string\";\n        str.at(\"the good\") = \"Another string\";\n    }\n    catch (const json::type_error&amp; e)\n    {\n        std::cout &lt;&lt; e.what() &lt;&lt; '\\n';\n    }\n\n    // exception out_of_range.401\n    try\n    {\n        // try to write at a nonexisting key\n        object.at(\"the fast\") = \"il rapido\";\n    }\n    catch (const json::out_of_range&amp; e)\n    {\n        std::cout &lt;&lt; e.what() &lt;&lt; '\\n';\n    }\n}\n</code></pre> <p>Output:</p> <pre><code>\"il brutto\"\n{\"the bad\":\"il cattivo\",\"the good\":\"il buono\",\"the ugly\":\"il brutto\"}\n[json.exception.type_error.304] cannot use at() with string\n[json.exception.out_of_range.403] key 'the fast' not found\n</code></pre> Example: (2) access specified object element with bounds checking <p>The example below shows how object elements can be read using <code>at()</code>. It also demonstrates the different exceptions that can be thrown.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create JSON object\n    const json object =\n    {\n        {\"the good\", \"il buono\"},\n        {\"the bad\", \"il cattivo\"},\n        {\"the ugly\", \"il brutto\"}\n    };\n\n    // output element with key \"the ugly\"\n    std::cout &lt;&lt; object.at(\"the ugly\") &lt;&lt; '\\n';\n\n    // exception type_error.304\n    try\n    {\n        // use at() on a non-object type\n        const json str = \"I am a string\";\n        std::cout &lt;&lt; str.at(\"the good\") &lt;&lt; '\\n';\n    }\n    catch (const json::type_error&amp; e)\n    {\n        std::cout &lt;&lt; e.what() &lt;&lt; '\\n';\n    }\n\n    // exception out_of_range.401\n    try\n    {\n        // try to read from a nonexisting key\n        std::cout &lt;&lt; object.at(\"the fast\") &lt;&lt; '\\n';\n    }\n    catch (const json::out_of_range)\n    {\n        std::cout &lt;&lt; \"out of range\" &lt;&lt; '\\n';\n    }\n}\n</code></pre> <p>Output:</p> <pre><code>\"il brutto\"\n[json.exception.type_error.304] cannot use at() with string\nout of range\n</code></pre> Example: (3) access specified object element using string_view with bounds checking <p>The example below shows how object elements can be read and written using <code>at()</code>. It also demonstrates the different exceptions that can be thrown.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;string_view&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing namespace std::string_view_literals;\nusing json = nlohmann::json;\n\nint main()\n{\n    // create JSON object\n    json object =\n    {\n        {\"the good\", \"il buono\"},\n        {\"the bad\", \"il cattivo\"},\n        {\"the ugly\", \"il brutto\"}\n    };\n\n    // output element with key \"the ugly\" using string_view\n    std::cout &lt;&lt; object.at(\"the ugly\"sv) &lt;&lt; '\\n';\n\n    // change element with key \"the bad\" using string_view\n    object.at(\"the bad\"sv) = \"il cattivo\";\n\n    // output changed array\n    std::cout &lt;&lt; object &lt;&lt; '\\n';\n\n    // exception type_error.304\n    try\n    {\n        // use at() with string_view on a non-object type\n        json str = \"I am a string\";\n        str.at(\"the good\"sv) = \"Another string\";\n    }\n    catch (const json::type_error&amp; e)\n    {\n        std::cout &lt;&lt; e.what() &lt;&lt; '\\n';\n    }\n\n    // exception out_of_range.401\n    try\n    {\n        // try to write at a nonexisting key using string_view\n        object.at(\"the fast\"sv) = \"il rapido\";\n    }\n    catch (const json::out_of_range&amp; e)\n    {\n        std::cout &lt;&lt; e.what() &lt;&lt; '\\n';\n    }\n}\n</code></pre> <p>Output:</p> <pre><code>\"il brutto\"\n{\"the bad\":\"il cattivo\",\"the good\":\"il buono\",\"the ugly\":\"il brutto\"}\n[json.exception.type_error.304] cannot use at() with string\n[json.exception.out_of_range.403] key 'the fast' not found\n</code></pre> Example: (3) access specified object element using string_view with bounds checking <p>The example below shows how object elements can be read using <code>at()</code>. It also demonstrates the different exceptions that can be thrown.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;string_view&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing namespace std::string_view_literals;\nusing json = nlohmann::json;\n\nint main()\n{\n    // create JSON object\n    const json object =\n    {\n        {\"the good\", \"il buono\"},\n        {\"the bad\", \"il cattivo\"},\n        {\"the ugly\", \"il brutto\"}\n    };\n\n    // output element with key \"the ugly\" using string_view\n    std::cout &lt;&lt; object.at(\"the ugly\"sv) &lt;&lt; '\\n';\n\n    // exception type_error.304\n    try\n    {\n        // use at() with string_view on a non-object type\n        const json str = \"I am a string\";\n        std::cout &lt;&lt; str.at(\"the good\"sv) &lt;&lt; '\\n';\n    }\n    catch (const json::type_error&amp; e)\n    {\n        std::cout &lt;&lt; e.what() &lt;&lt; '\\n';\n    }\n\n    // exception out_of_range.401\n    try\n    {\n        // try to read from a nonexisting key using string_view\n        std::cout &lt;&lt; object.at(\"the fast\"sv) &lt;&lt; '\\n';\n    }\n    catch (const json::out_of_range&amp; e)\n    {\n        std::cout &lt;&lt; \"out of range\" &lt;&lt; '\\n';\n    }\n}\n</code></pre> <p>Output:</p> <pre><code>\"il brutto\"\n[json.exception.type_error.304] cannot use at() with string\nout of range\n</code></pre> Example: (4) access specified element via JSON Pointer <p>The example below shows how object elements can be read and written using <code>at()</code>. It also demonstrates the different exceptions that can be thrown.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\nusing namespace nlohmann::literals;\n\nint main()\n{\n    // create a JSON value\n    json j =\n    {\n        {\"number\", 1}, {\"string\", \"foo\"}, {\"array\", {1, 2}}\n    };\n\n    // read-only access\n\n    // output element with JSON pointer \"/number\"\n    std::cout &lt;&lt; j.at(\"/number\"_json_pointer) &lt;&lt; '\\n';\n    // output element with JSON pointer \"/string\"\n    std::cout &lt;&lt; j.at(\"/string\"_json_pointer) &lt;&lt; '\\n';\n    // output element with JSON pointer \"/array\"\n    std::cout &lt;&lt; j.at(\"/array\"_json_pointer) &lt;&lt; '\\n';\n    // output element with JSON pointer \"/array/1\"\n    std::cout &lt;&lt; j.at(\"/array/1\"_json_pointer) &lt;&lt; '\\n';\n\n    // writing access\n\n    // change the string\n    j.at(\"/string\"_json_pointer) = \"bar\";\n    // output the changed string\n    std::cout &lt;&lt; j[\"string\"] &lt;&lt; '\\n';\n\n    // change an array element\n    j.at(\"/array/1\"_json_pointer) = 21;\n    // output the changed array\n    std::cout &lt;&lt; j[\"array\"] &lt;&lt; '\\n';\n\n    // out_of_range.106\n    try\n    {\n        // try to use an array index with leading '0'\n        json::reference ref = j.at(\"/array/01\"_json_pointer);\n    }\n    catch (const json::parse_error&amp; e)\n    {\n        std::cout &lt;&lt; e.what() &lt;&lt; '\\n';\n    }\n\n    // out_of_range.109\n    try\n    {\n        // try to use an array index that is not a number\n        json::reference ref = j.at(\"/array/one\"_json_pointer);\n    }\n    catch (const json::parse_error&amp; e)\n    {\n        std::cout &lt;&lt; e.what() &lt;&lt; '\\n';\n    }\n\n    // out_of_range.401\n    try\n    {\n        // try to use an invalid array index\n        json::reference ref = j.at(\"/array/4\"_json_pointer);\n    }\n    catch (const json::out_of_range&amp; e)\n    {\n        std::cout &lt;&lt; e.what() &lt;&lt; '\\n';\n    }\n\n    // out_of_range.402\n    try\n    {\n        // try to use the array index '-'\n        json::reference ref = j.at(\"/array/-\"_json_pointer);\n    }\n    catch (const json::out_of_range&amp; e)\n    {\n        std::cout &lt;&lt; e.what() &lt;&lt; '\\n';\n    }\n\n    // out_of_range.403\n    try\n    {\n        // try to use a JSON pointer to a nonexistent object key\n        json::const_reference ref = j.at(\"/foo\"_json_pointer);\n    }\n    catch (const json::out_of_range&amp; e)\n    {\n        std::cout &lt;&lt; e.what() &lt;&lt; '\\n';\n    }\n\n    // out_of_range.404\n    try\n    {\n        // try to use a JSON pointer that cannot be resolved\n        json::reference ref = j.at(\"/number/foo\"_json_pointer);\n    }\n    catch (const json::out_of_range&amp; e)\n    {\n        std::cout &lt;&lt; e.what() &lt;&lt; '\\n';\n    }\n}\n</code></pre> <p>Output:</p> <pre><code>1\n\"foo\"\n[1,2]\n2\n\"bar\"\n[1,21]\n[json.exception.parse_error.106] parse error: array index '01' must not begin with '0'\n[json.exception.parse_error.109] parse error: array index 'one' is not a number\n[json.exception.out_of_range.401] array index 4 is out of range\n[json.exception.out_of_range.402] array index '-' (2) is out of range\n[json.exception.out_of_range.403] key 'foo' not found\n[json.exception.out_of_range.404] unresolved reference token 'foo'\n</code></pre> Example: (4) access specified element via JSON Pointer <p>The example below shows how object elements can be read using <code>at()</code>. It also demonstrates the different exceptions that can be thrown.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\nusing namespace nlohmann::literals;\n\nint main()\n{\n    // create a JSON value\n    const json j =\n    {\n        {\"number\", 1}, {\"string\", \"foo\"}, {\"array\", {1, 2}}\n    };\n\n    // read-only access\n\n    // output element with JSON pointer \"/number\"\n    std::cout &lt;&lt; j.at(\"/number\"_json_pointer) &lt;&lt; '\\n';\n    // output element with JSON pointer \"/string\"\n    std::cout &lt;&lt; j.at(\"/string\"_json_pointer) &lt;&lt; '\\n';\n    // output element with JSON pointer \"/array\"\n    std::cout &lt;&lt; j.at(\"/array\"_json_pointer) &lt;&lt; '\\n';\n    // output element with JSON pointer \"/array/1\"\n    std::cout &lt;&lt; j.at(\"/array/1\"_json_pointer) &lt;&lt; '\\n';\n\n    // out_of_range.109\n    try\n    {\n        // try to use an array index that is not a number\n        json::const_reference ref = j.at(\"/array/one\"_json_pointer);\n    }\n    catch (const json::parse_error&amp; e)\n    {\n        std::cout &lt;&lt; e.what() &lt;&lt; '\\n';\n    }\n\n    // out_of_range.401\n    try\n    {\n        // try to use an invalid array index\n        json::const_reference ref = j.at(\"/array/4\"_json_pointer);\n    }\n    catch (const json::out_of_range&amp; e)\n    {\n        std::cout &lt;&lt; e.what() &lt;&lt; '\\n';\n    }\n\n    // out_of_range.402\n    try\n    {\n        // try to use the array index '-'\n        json::const_reference ref = j.at(\"/array/-\"_json_pointer);\n    }\n    catch (const json::out_of_range&amp; e)\n    {\n        std::cout &lt;&lt; e.what() &lt;&lt; '\\n';\n    }\n\n    // out_of_range.403\n    try\n    {\n        // try to use a JSON pointer to a nonexistent object key\n        json::const_reference ref = j.at(\"/foo\"_json_pointer);\n    }\n    catch (const json::out_of_range&amp; e)\n    {\n        std::cout &lt;&lt; e.what() &lt;&lt; '\\n';\n    }\n\n    // out_of_range.404\n    try\n    {\n        // try to use a JSON pointer that cannot be resolved\n        json::const_reference ref = j.at(\"/number/foo\"_json_pointer);\n    }\n    catch (const json::out_of_range&amp; e)\n    {\n        std::cout &lt;&lt; e.what() &lt;&lt; '\\n';\n    }\n}\n</code></pre> <p>Output:</p> <pre><code>1\n\"foo\"\n[1,2]\n2\n[json.exception.parse_error.109] parse error: array index 'one' is not a number\n[json.exception.out_of_range.401] array index 4 is out of range\n[json.exception.out_of_range.402] array index '-' (2) is out of range\n[json.exception.out_of_range.403] key 'foo' not found\n[json.exception.out_of_range.404] unresolved reference token 'foo'\n</code></pre>"},{"location":"api/basic_json/at/#see-also","title":"See also","text":"<ul> <li>documentation on checked access</li> <li><code>operator[]</code> for unchecked access by reference</li> <li><code>value</code> for access with default value</li> </ul>"},{"location":"api/basic_json/at/#version-history","title":"Version history","text":"<ol> <li>Added in version 1.0.0.</li> <li>Added in version 1.0.0.</li> <li>Added in version 3.11.0.</li> <li>Added in version 2.0.0.</li> </ol>"},{"location":"api/basic_json/back/","title":"nlohmann::basic_json::back","text":"<pre><code>reference back();\n\nconst_reference back() const;\n</code></pre> <p>Returns a reference to the last element in the container. For a JSON container <code>c</code>, the expression <code>c.back()</code> is equivalent to</p> <pre><code>auto tmp = c.end();\n--tmp;\nreturn *tmp;\n</code></pre>"},{"location":"api/basic_json/back/#return-value","title":"Return value","text":"<p>In the case of a structured type (array or object), a reference to the last element is returned. In the case of number, string, boolean, or binary values, a reference to the value is returned.</p>"},{"location":"api/basic_json/back/#exception-safety","title":"Exception safety","text":"<p>Strong guarantee: if an exception is thrown, there are no changes in the JSON value.</p>"},{"location":"api/basic_json/back/#exceptions","title":"Exceptions","text":"<p>If the JSON value is <code>null</code>, exception <code>invalid_iterator.214</code> is thrown.</p>"},{"location":"api/basic_json/back/#complexity","title":"Complexity","text":"<p>Constant.</p>"},{"location":"api/basic_json/back/#notes","title":"Notes","text":"<p>Precondition</p> <p>The array or object must not be empty. Calling <code>back</code> on an empty array or object yields undefined behavior.</p>"},{"location":"api/basic_json/back/#examples","title":"Examples","text":"Example <p>The following code shows an example for <code>back()</code>.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create JSON values\n    json j_boolean = true;\n    json j_number_integer = 17;\n    json j_number_float = 23.42;\n    json j_object = {{\"one\", 1}, {\"two\", 2}};\n    json j_object_empty(json::value_t::object);\n    json j_array = {1, 2, 4, 8, 16};\n    json j_array_empty(json::value_t::array);\n    json j_string = \"Hello, world\";\n\n    // call back()\n    std::cout &lt;&lt; j_boolean.back() &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_number_integer.back() &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_number_float.back() &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_object.back() &lt;&lt; '\\n';\n    //std::cout &lt;&lt; j_object_empty.back() &lt;&lt; '\\n';  // undefined behavior\n    std::cout &lt;&lt; j_array.back() &lt;&lt; '\\n';\n    //std::cout &lt;&lt; j_array_empty.back() &lt;&lt; '\\n';   // undefined behavior\n    std::cout &lt;&lt; j_string.back() &lt;&lt; '\\n';\n\n    // back() called on a null value\n    try\n    {\n        json j_null;\n        j_null.back();\n    }\n    catch (const json::invalid_iterator&amp; e)\n    {\n        std::cout &lt;&lt; e.what() &lt;&lt; '\\n';\n    }\n}\n</code></pre> <p>Output:</p> <pre><code>true\n17\n23.42\n2\n16\n\"Hello, world\"\n[json.exception.invalid_iterator.214] cannot get value\n</code></pre>"},{"location":"api/basic_json/back/#see-also","title":"See also","text":"<ul> <li>front to access the first element</li> </ul>"},{"location":"api/basic_json/back/#version-history","title":"Version history","text":"<ul> <li>Added in version 1.0.0.</li> <li>Adjusted code to return reference to binary values in version 3.8.0.</li> </ul>"},{"location":"api/basic_json/basic_json/","title":"nlohmann::basic_json::basic_json","text":"<pre><code>// (1)\nbasic_json(const value_t v);\n\n// (2)\nbasic_json(std::nullptr_t = nullptr) noexcept;\n\n// (3)\ntemplate&lt;typename CompatibleType&gt;\nbasic_json(CompatibleType&amp;&amp; val) noexcept(noexcept(\n           JSONSerializer&lt;U&gt;::to_json(std::declval&lt;basic_json_t&amp;&gt;(),\n                                      std::forward&lt;CompatibleType&gt;(val))));\n\n// (4)\ntemplate&lt;typename BasicJsonType&gt;\nbasic_json(const BasicJsonType&amp; val);\n\n// (5)\nbasic_json(initializer_list_t init,\n           bool type_deduction = true,\n           value_t manual_type = value_t::array);\n\n// (6)\nbasic_json(size_type cnt, const basic_json&amp; val);\n\n// (7)\nbasic_json(iterator first, iterator last);\nbasic_json(const_iterator first, const_iterator last);\n\n// (8)\nbasic_json(const basic_json&amp; other);\n\n// (9)\nbasic_json(basic_json&amp;&amp; other) noexcept;\n</code></pre> <ol> <li> <p>Create an empty JSON value with a given type. The value will be default initialized with an empty value which depends    on the type:</p> Value type initial value null <code>null</code> boolean <code>false</code> string <code>\"\"</code> number <code>0</code> object <code>{}</code> array <code>[]</code> binary empty array <p>The postcondition of this constructor can be restored by calling <code>clear()</code>.</p> </li> <li> <p>Create a <code>null</code> JSON value. It either takes a null pointer as parameter (explicitly creating <code>null</code>)    or no parameter (implicitly creating <code>null</code>). The passed null pointer itself is not read -- it is only used to    choose the right constructor.</p> </li> <li> <p>This is a \"catch all\" constructor for all compatible JSON types; that is, types for which a <code>to_json()</code> method    exists. The constructor forwards the parameter <code>val</code> to that method (to <code>json_serializer&lt;U&gt;::to_json</code> method with    <code>U = uncvref_t&lt;CompatibleType&gt;</code>, to be exact).</p> <p>Template type <code>CompatibleType</code> includes, but is not limited to, the following types:</p> <ul> <li>arrays: <code>array_t</code> and all kinds of compatible containers such as <code>std::vector</code>, <code>std::deque</code>,  <code>std::list</code>, <code>std::forward_list</code>, <code>std::array</code>, <code>std::valarray</code>, <code>std::set</code>, <code>std::unordered_set</code>, <code>std::multiset</code>,  and <code>std::unordered_multiset</code> with a <code>value_type</code> from which a <code>basic_json</code> value can be constructed.</li> <li>objects: <code>object_t</code> and all kinds of compatible associative containers such as <code>std::map</code>,  <code>std::unordered_map</code>, <code>std::multimap</code>, and <code>std::unordered_multimap</code> with a <code>key_type</code> compatible to <code>string_t</code>  and a <code>value_type</code> from which a <code>basic_json</code> value can be constructed.</li> <li>strings: <code>string_t</code>, string literals, and all compatible string containers can be used.</li> <li>numbers: <code>number_integer_t</code>, <code>number_unsigned_t</code>,  <code>number_float_t</code>, and all convertible number types such as <code>int</code>, <code>size_t</code>, <code>int64_t</code>, <code>float</code>  or <code>double</code> can be used.</li> <li>boolean: <code>boolean_t</code> / <code>bool</code> can be used.</li> <li>binary: <code>binary_t</code> / <code>std::vector&lt;uint8_t&gt;</code> may be used; unfortunately because string literals cannot be  distinguished from binary character arrays by the C++ type system, all types compatible with <code>const char*</code> will be  directed to the string constructor instead. This is both for backwards compatibility and due to the fact that a  binary type is not a standard JSON type.</li> </ul> <p>See the examples below.</p> </li> <li> <p>This is a constructor for existing <code>basic_json</code> types. It does not hijack copy/move constructors, since the parameter    has different template arguments than the current ones.</p> <p>The constructor tries to convert the internal <code>m_value</code> of the parameter.</p> </li> <li> <p>Creates a JSON value of type array or object from the passed initializer list <code>init</code>. In case <code>type_deduction</code> is    <code>true</code> (default), the type of the JSON value to be created is deducted from the initializer list <code>init</code>    according to the following rules:</p> <ol> <li>If the list is empty, an empty JSON object value <code>{}</code> is created.</li> <li>If the list consists of pairs whose first element is a string, a JSON object value is created where the first   elements of the pairs are treated as keys and the second elements are as values.</li> <li>In all other cases, an array is created.</li> </ol> <p>The rules aim to create the best fit between a C++ initializer list and JSON values. The rationale is as follows:</p> <ol> <li>The empty initializer list is written as <code>{}</code> which is exactly an empty JSON object.</li> <li>C++ has no way of describing mapped types other than to list a list of pairs. As JSON requires that keys must be    of type string, rule 2 is the weakest constraint one can pose on initializer lists to interpret them as an    object.</li> <li>In all other cases, the initializer list could not be interpreted as a JSON object type, so interpreting it as a    JSON array type is safe.</li> </ol> <p>With the rules described above, the following JSON values cannot be expressed by an initializer list:</p> <ul> <li>the empty array (<code>[]</code>): use <code>array(initializer_list_t)</code> with an empty initializer list in this case</li> <li>arrays whose elements satisfy rule 2: use <code>array(initializer_list_t)</code> with the same initializer list in this case</li> </ul> <p>Function <code>array()</code> and <code>object()</code> force array and object creation from initializer lists, respectively.</p> </li> <li> <p>Constructs a JSON array value by creating <code>cnt</code> copies of a passed value. In case <code>cnt</code> is <code>0</code>, an empty array is    created.</p> </li> <li> <p>Constructs the JSON value with the contents of the range <code>[first, last)</code>. The semantics depend on the different    types a JSON value can have:</p> <ul> <li>In case of a <code>null</code> type, invalid_iterator.206   is thrown.</li> <li>In case of other primitive types (number, boolean, or string), <code>first</code> must be <code>begin()</code> and <code>last</code> must be   <code>end()</code>. In this case, the value is copied. Otherwise,   <code>invalid_iterator.204</code> is thrown.</li> <li>In case of structured types (array, object), the constructor behaves as similar versions for <code>std::vector</code> or   <code>std::map</code>; that is, a JSON array or object is constructed from the values in the range.</li> </ul> </li> <li> <p>Creates a copy of a given JSON value.</p> </li> <li> <p>Move constructor. Constructs a JSON value with the contents of the given value <code>other</code> using move semantics. It    \"steals\" the resources from <code>other</code> and leaves it as JSON <code>null</code> value.</p> </li> </ol>"},{"location":"api/basic_json/basic_json/#template-parameters","title":"Template parameters","text":"<code>CompatibleType</code> <p>a type such that:</p> <ul> <li><code>CompatibleType</code> is not derived from <code>std::istream</code>,</li> <li><code>CompatibleType</code> is not <code>basic_json</code> (to avoid hijacking copy/move constructors),</li> <li><code>CompatibleType</code> is not a different <code>basic_json</code> type (i.e. with different template arguments)</li> <li><code>CompatibleType</code> is not a <code>basic_json</code> nested type (e.g., <code>json_pointer</code>, <code>iterator</code>, etc.)</li> <li><code>json_serializer&lt;U&gt;</code> (with <code>U = uncvref_t&lt;CompatibleType&gt;</code>) has a <code>to_json(basic_json_t&amp;, CompatibleType&amp;&amp;)</code>    method</li> </ul> <code>BasicJsonType</code>: <p>a type such that:</p> <ul> <li><code>BasicJsonType</code> is a <code>basic_json</code> type.</li> <li><code>BasicJsonType</code> has different template arguments than <code>basic_json_t</code>.</li> </ul> <code>U</code>: <code>uncvref_t&lt;CompatibleType&gt;</code>"},{"location":"api/basic_json/basic_json/#parameters","title":"Parameters","text":"<code>v</code> (in) the type of the value to create <code>val</code> (in) the value to be forwarded to the respective constructor <code>init</code> (in) initializer list with JSON values <code>type_deduction</code> (in) internal parameter; when set to <code>true</code>, the type of the JSON value is deducted from the initializer list <code>init</code>; when set to <code>false</code>, the type provided via <code>manual_type</code> is forced. This mode is used by the functions <code>array(initializer_list_t)</code> and <code>object(initializer_list_t)</code>. <code>manual_type</code> (in) internal parameter; when <code>type_deduction</code> is set to <code>false</code>, the created JSON value will use the provided type (only <code>value_t::array</code> and <code>value_t::object</code> are valid); when <code>type_deduction</code> is set to <code>true</code>, this parameter has no effect <code>cnt</code> (in) the number of JSON copies of <code>val</code> to create <code>first</code> (in) the beginning of the range to copy from (included) <code>last</code> (in) the end of the range to copy from (excluded) <code>other</code> (in) the JSON value to copy/move"},{"location":"api/basic_json/basic_json/#exception-safety","title":"Exception safety","text":"<ol> <li>Strong guarantee: if an exception is thrown, there are no changes to any JSON value.</li> <li>No-throw guarantee: this constructor never throws exceptions.</li> <li>Depends on the called constructor. For types directly supported by the library (i.e., all types for which no    <code>to_json()</code> function was provided), a strong guarantee holds: if an exception is thrown, there are no changes to any    JSON value.</li> <li>Depends on the called constructor. For types directly supported by the library (i.e., all types for which no    <code>to_json()</code> function was provided), a strong guarantee holds: if an exception is thrown, there are no changes to any    JSON value.</li> <li>Strong guarantee: if an exception is thrown, there are no changes to any JSON value.</li> <li>Strong guarantee: if an exception is thrown, there are no changes to any JSON value.</li> <li>Strong guarantee: if an exception is thrown, there are no changes to any JSON value.</li> <li>Strong guarantee: if an exception is thrown, there are no changes to any JSON value.</li> <li>No-throw guarantee: this constructor never throws exceptions.</li> </ol>"},{"location":"api/basic_json/basic_json/#exceptions","title":"Exceptions","text":"<ol> <li>(none)</li> <li>The function does not throw exceptions.</li> <li>(none)</li> <li>(none)</li> <li>The function can throw the following exceptions:<ul> <li>Throws <code>type_error.301</code> if <code>type_deduction</code> is   <code>false</code>, <code>manual_type</code> is <code>value_t::object</code>, but <code>init</code> contains an element which is not a pair whose first   element is a string. In this case, the constructor could not create an object. If <code>type_deduction</code> would have been   <code>true</code>, an array would have been created. See <code>object(initializer_list_t)</code> for an example.</li> </ul> </li> <li>(none)</li> <li>The function can throw the following exceptions:<ul> <li>Throws <code>invalid_iterator.201</code> if iterators <code>first</code>   and <code>last</code> are not compatible (i.e., do not belong to the same JSON value). In this case, the range   <code>[first, last)</code> is undefined.</li> <li>Throws <code>invalid_iterator.204</code> if iterators <code>first</code>   and <code>last</code> belong to a primitive type (number, boolean, or string), but <code>first</code> does not point to the first   element anymore. In this case, the range <code>[first, last)</code> is undefined. See the example code below.</li> <li>Throws <code>invalid_iterator.206</code> if iterators <code>first</code>   and <code>last</code> belong to a <code>null</code> value. In this case, the range <code>[first, last)</code> is undefined.</li> </ul> </li> <li>(none)</li> <li>The function does not throw exceptions.</li> </ol>"},{"location":"api/basic_json/basic_json/#complexity","title":"Complexity","text":"<ol> <li>Constant.</li> <li>Constant.</li> <li>Usually linear in the size of the passed <code>val</code>, also depending on the implementation of the called <code>to_json()</code>    method.</li> <li>Usually linear in the size of the passed <code>val</code>, also depending on the implementation of the called <code>to_json()</code>    method.</li> <li>Linear in the size of the initializer list <code>init</code>.</li> <li>Linear in <code>cnt</code>.</li> <li>Linear in distance between <code>first</code> and <code>last</code>.</li> <li>Linear in the size of <code>other</code>.</li> <li>Constant.</li> </ol>"},{"location":"api/basic_json/basic_json/#notes","title":"Notes","text":"<ul> <li> <p>Overload 5:</p> <p>Empty initializer list</p> <p>When used without parentheses around an empty initializer list, <code>basic_json()</code> is called instead of this function, yielding the JSON <code>null</code> value.</p> </li> <li> <p>Overload 7:</p> <p>Preconditions</p> <ul> <li>Iterators <code>first</code> and <code>last</code> must be initialized. **This precondition is enforced with a   runtime assertion.</li> <li>Range <code>[first, last)</code> is valid. Usually, this precondition cannot be checked efficiently. Only certain edge   cases are detected; see the description of the exceptions above. A violation of this precondition yields   undefined behavior.</li> </ul> <p>Runtime assertion</p> <p>A precondition is enforced with a runtime assertion.</p> </li> <li> <p>Overload 8:</p> <p>Postcondition</p> <p><code>*this == other</code></p> </li> <li> <p>Overload 9:</p> <p>Postconditions</p> <ul> <li><code>`*this</code> has the same value as <code>other</code> before the call.</li> <li><code>other</code> is a JSON <code>null</code> value</li> </ul> </li> </ul>"},{"location":"api/basic_json/basic_json/#examples","title":"Examples","text":"Example: (1) create an empty value with a given type <p>The following code shows the constructor for different <code>value_t</code> values.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create the different JSON values with default values\n    json j_null(json::value_t::null);\n    json j_boolean(json::value_t::boolean);\n    json j_number_integer(json::value_t::number_integer);\n    json j_number_float(json::value_t::number_float);\n    json j_object(json::value_t::object);\n    json j_array(json::value_t::array);\n    json j_string(json::value_t::string);\n\n    // serialize the JSON values\n    std::cout &lt;&lt; j_null &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_boolean &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_number_integer &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_number_float &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_object &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_array &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_string &lt;&lt; '\\n';\n}\n</code></pre> <p>Output:</p> <pre><code>null\nfalse\n0\n0.0\n{}\n[]\n\"\"\n</code></pre> Example: (2) create a <code>null</code> object <p>The following code shows the constructor with and without a null pointer parameter.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // implicitly create a JSON null value\n    json j1;\n\n    // explicitly create a JSON null value\n    json j2(nullptr);\n\n    // serialize the JSON null value\n    std::cout &lt;&lt; j1 &lt;&lt; '\\n' &lt;&lt; j2 &lt;&lt; '\\n';\n}\n</code></pre> <p>Output:</p> <pre><code>null\nnull\n</code></pre> Example: (3) create a JSON value from compatible types <p>The following code shows the constructor with several compatible types.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;deque&gt;\n#include &lt;list&gt;\n#include &lt;forward_list&gt;\n#include &lt;set&gt;\n#include &lt;unordered_map&gt;\n#include &lt;unordered_set&gt;\n#include &lt;valarray&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // ============\n    // object types\n    // ============\n\n    // create an object from an object_t value\n    json::object_t object_value = { {\"one\", 1}, {\"two\", 2} };\n    json j_object_t(object_value);\n\n    // create an object from std::map\n    std::map&lt;std::string, int&gt; c_map\n    {\n        {\"one\", 1}, {\"two\", 2}, {\"three\", 3}\n    };\n    json j_map(c_map);\n\n    // create an object from std::unordered_map\n    std::unordered_map&lt;const char*, double&gt; c_umap\n    {\n        {\"one\", 1.2}, {\"two\", 2.3}, {\"three\", 3.4}\n    };\n    json j_umap(c_umap);\n\n    // create an object from std::multimap\n    std::multimap&lt;std::string, bool&gt; c_mmap\n    {\n        {\"one\", true}, {\"two\", true}, {\"three\", false}, {\"three\", true}\n    };\n    json j_mmap(c_mmap); // only one entry for key \"three\" is used\n\n    // create an object from std::unordered_multimap\n    std::unordered_multimap&lt;std::string, bool&gt; c_ummap\n    {\n        {\"one\", true}, {\"two\", true}, {\"three\", false}, {\"three\", true}\n    };\n    json j_ummap(c_ummap); // only one entry for key \"three\" is used\n\n    // serialize the JSON objects\n    std::cout &lt;&lt; j_object_t &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_map &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_umap &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_mmap &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_ummap &lt;&lt; \"\\n\\n\";\n\n    // ===========\n    // array types\n    // ===========\n\n    // create an array from an array_t value\n    json::array_t array_value = {\"one\", \"two\", 3, 4.5, false};\n    json j_array_t(array_value);\n\n    // create an array from std::vector\n    std::vector&lt;int&gt; c_vector {1, 2, 3, 4};\n    json j_vec(c_vector);\n\n    // create an array from std::valarray\n    std::valarray&lt;short&gt; c_valarray {10, 9, 8, 7};\n    json j_valarray(c_valarray);\n\n    // create an array from std::deque\n    std::deque&lt;double&gt; c_deque {1.2, 2.3, 3.4, 5.6};\n    json j_deque(c_deque);\n\n    // create an array from std::list\n    std::list&lt;bool&gt; c_list {true, true, false, true};\n    json j_list(c_list);\n\n    // create an array from std::forward_list\n    std::forward_list&lt;std::int64_t&gt; c_flist {12345678909876, 23456789098765, 34567890987654, 45678909876543};\n    json j_flist(c_flist);\n\n    // create an array from std::array\n    std::array&lt;unsigned long, 4&gt; c_array {{1, 2, 3, 4}};\n    json j_array(c_array);\n\n    // create an array from std::set\n    std::set&lt;std::string&gt; c_set {\"one\", \"two\", \"three\", \"four\", \"one\"};\n    json j_set(c_set); // only one entry for \"one\" is used\n\n    // create an array from std::unordered_set\n    std::unordered_set&lt;std::string&gt; c_uset {\"one\", \"two\", \"three\", \"four\", \"one\"};\n    json j_uset(c_uset); // only one entry for \"one\" is used\n\n    // create an array from std::multiset\n    std::multiset&lt;std::string&gt; c_mset {\"one\", \"two\", \"one\", \"four\"};\n    json j_mset(c_mset); // both entries for \"one\" are used\n\n    // create an array from std::unordered_multiset\n    std::unordered_multiset&lt;std::string&gt; c_umset {\"one\", \"two\", \"one\", \"four\"};\n    json j_umset(c_umset); // both entries for \"one\" are used\n\n    // serialize the JSON arrays\n    std::cout &lt;&lt; j_array_t &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_vec &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_valarray &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_deque &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_list &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_flist &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_array &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_set &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_uset &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_mset &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_umset &lt;&lt; \"\\n\\n\";\n\n    // ============\n    // string types\n    // ============\n\n    // create string from a string_t value\n    json::string_t string_value = \"The quick brown fox jumps over the lazy dog.\";\n    json j_string_t(string_value);\n\n    // create a JSON string directly from a string literal\n    json j_string_literal(\"The quick brown fox jumps over the lazy dog.\");\n\n    // create string from std::string\n    std::string s_stdstring = \"The quick brown fox jumps over the lazy dog.\";\n    json j_stdstring(s_stdstring);\n\n    // serialize the JSON strings\n    std::cout &lt;&lt; j_string_t &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_string_literal &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_stdstring &lt;&lt; \"\\n\\n\";\n\n    // ============\n    // number types\n    // ============\n\n    // create a JSON number from number_integer_t\n    json::number_integer_t value_integer_t = -42;\n    json j_integer_t(value_integer_t);\n\n    // create a JSON number from number_unsigned_t\n    json::number_integer_t value_unsigned_t = 17;\n    json j_unsigned_t(value_unsigned_t);\n\n    // create a JSON number from an anonymous enum\n    enum { enum_value = 17 };\n    json j_enum(enum_value);\n\n    // create values of different integer types\n    short n_short = 42;\n    int n_int = -23;\n    long n_long = 1024;\n    int_least32_t n_int_least32_t = -17;\n    uint8_t n_uint8_t = 8;\n\n    // create (integer) JSON numbers\n    json j_short(n_short);\n    json j_int(n_int);\n    json j_long(n_long);\n    json j_int_least32_t(n_int_least32_t);\n    json j_uint8_t(n_uint8_t);\n\n    // create values of different floating-point types\n    json::number_float_t v_ok = 3.141592653589793;\n    json::number_float_t v_nan = NAN;\n    json::number_float_t v_infinity = INFINITY;\n\n    // create values of different floating-point types\n    float n_float = 42.23;\n    float n_float_nan = 1.0f / 0.0f;\n    double n_double = 23.42;\n\n    // create (floating point) JSON numbers\n    json j_ok(v_ok);\n    json j_nan(v_nan);\n    json j_infinity(v_infinity);\n    json j_float(n_float);\n    json j_float_nan(n_float_nan);\n    json j_double(n_double);\n\n    // serialize the JSON numbers\n    std::cout &lt;&lt; j_integer_t &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_unsigned_t &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_enum &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_short &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_int &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_long &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_int_least32_t &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_uint8_t &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_ok &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_nan &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_infinity &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_float &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_float_nan &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_double &lt;&lt; \"\\n\\n\";\n\n    // =============\n    // boolean types\n    // =============\n\n    // create boolean values\n    json j_truth = true;\n    json j_falsity = false;\n\n    // serialize the JSON booleans\n    std::cout &lt;&lt; j_truth &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_falsity &lt;&lt; '\\n';\n}\n</code></pre> <p>Output:</p> <pre><code>{\"one\":1,\"two\":2}\n{\"one\":1,\"three\":3,\"two\":2}\n{\"one\":1.2,\"three\":3.4,\"two\":2.3}\n{\"one\":true,\"three\":false,\"two\":true}\n{\"one\":true,\"three\":false,\"two\":true}\n\n[\"one\",\"two\",3,4.5,false]\n[1,2,3,4]\n[10,9,8,7]\n[1.2,2.3,3.4,5.6]\n[true,true,false,true]\n[12345678909876,23456789098765,34567890987654,45678909876543]\n[1,2,3,4]\n[\"four\",\"one\",\"three\",\"two\"]\n[\"four\",\"three\",\"two\",\"one\"]\n[\"four\",\"one\",\"one\",\"two\"]\n[\"four\",\"two\",\"one\",\"one\"]\n\n\"The quick brown fox jumps over the lazy dog.\"\n\"The quick brown fox jumps over the lazy dog.\"\n\"The quick brown fox jumps over the lazy dog.\"\n\n-42\n17\n17\n42\n-23\n1024\n-17\n8\n3.141592653589793\nnull\nnull\n42.22999954223633\nnull\n23.42\n\ntrue\nfalse\n</code></pre> <p>Note the output is platform-dependent.</p> Example: (5) create a container (array or object) from an initializer list <p>The example below shows how JSON values are created from initializer lists.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create JSON values\n    json j_empty_init_list = json({});\n    json j_object = { {\"one\", 1}, {\"two\", 2} };\n    json j_array = {1, 2, 3, 4};\n    json j_nested_object = { {\"one\", {1}}, {\"two\", {1, 2}} };\n    json j_nested_array = { {{1}, \"one\"}, {{1, 2}, \"two\"} };\n\n    // serialize the JSON value\n    std::cout &lt;&lt; j_empty_init_list &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_object &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_array &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_nested_object &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_nested_array &lt;&lt; '\\n';\n}\n</code></pre> <p>Output:</p> <pre><code>{}\n{\"one\":1,\"two\":2}\n[1,2,3,4]\n{\"one\":[1],\"two\":[1,2]}\n[[[1],\"one\"],[[1,2],\"two\"]]\n</code></pre> Example: (6) construct an array with count copies of a given value <p>The following code shows examples for creating arrays with several copies of a given value.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create an array by creating copies of a JSON value\n    json value = \"Hello\";\n    json array_0 = json(0, value);\n    json array_1 = json(1, value);\n    json array_5 = json(5, value);\n\n    // serialize the JSON arrays\n    std::cout &lt;&lt; array_0 &lt;&lt; '\\n';\n    std::cout &lt;&lt; array_1 &lt;&lt; '\\n';\n    std::cout &lt;&lt; array_5 &lt;&lt; '\\n';\n}\n</code></pre> <p>Output:</p> <pre><code>[]\n[\"Hello\"]\n[\"Hello\",\"Hello\",\"Hello\",\"Hello\",\"Hello\"]\n</code></pre> Example: (7) construct a JSON container given an iterator range <p>The example below shows several ways to create JSON values by specifying a subrange with iterators.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create JSON values\n    json j_array = {\"alpha\", \"bravo\", \"charly\", \"delta\", \"easy\"};\n    json j_number = 42;\n    json j_object = {{\"one\", \"eins\"}, {\"two\", \"zwei\"}};\n\n    // create copies using iterators\n    json j_array_range(j_array.begin() + 1, j_array.end() - 2);\n    json j_number_range(j_number.begin(), j_number.end());\n    json j_object_range(j_object.begin(), j_object.find(\"two\"));\n\n    // serialize the values\n    std::cout &lt;&lt; j_array_range &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_number_range &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_object_range &lt;&lt; '\\n';\n\n    // example for an exception\n    try\n    {\n        json j_invalid(j_number.begin() + 1, j_number.end());\n    }\n    catch (const json::invalid_iterator&amp; e)\n    {\n        std::cout &lt;&lt; e.what() &lt;&lt; '\\n';\n    }\n}\n</code></pre> <p>Output:</p> <pre><code>[\"bravo\",\"charly\"]\n42\n{\"one\":\"eins\"}\n[json.exception.invalid_iterator.204] iterators out of range\n</code></pre> Example: (8) copy constructor <p>The following code shows an example for the copy constructor.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create a JSON array\n    json j1 = {\"one\", \"two\", 3, 4.5, false};\n\n    // create a copy\n    json j2(j1);\n\n    // serialize the JSON array\n    std::cout &lt;&lt; j1 &lt;&lt; \" = \" &lt;&lt; j2 &lt;&lt; '\\n';\n    std::cout &lt;&lt; std::boolalpha &lt;&lt; (j1 == j2) &lt;&lt; '\\n';\n}\n</code></pre> <p>Output:</p> <pre><code>[\"one\",\"two\",3,4.5,false] = [\"one\",\"two\",3,4.5,false]\ntrue\n</code></pre> Example: (9) move constructor <p>The code below shows the move constructor explicitly called via <code>std::move</code>.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create a JSON value\n    json a = 23;\n\n    // move contents of a to b\n    json b(std::move(a));\n\n    // serialize the JSON arrays\n    std::cout &lt;&lt; a &lt;&lt; '\\n';\n    std::cout &lt;&lt; b &lt;&lt; '\\n';\n}\n</code></pre> <p>Output:</p> <pre><code>null\n23\n</code></pre>"},{"location":"api/basic_json/basic_json/#version-history","title":"Version history","text":"<ol> <li>Since version 1.0.0.</li> <li>Since version 1.0.0.</li> <li>Since version 2.1.0.</li> <li>Since version 3.2.0.</li> <li>Since version 1.0.0.</li> <li>Since version 1.0.0.</li> <li>Since version 1.0.0.</li> <li>Since version 1.0.0.</li> <li>Since version 1.0.0.</li> </ol>"},{"location":"api/basic_json/begin/","title":"nlohmann::basic_json::begin","text":"<pre><code>iterator begin() noexcept;\nconst_iterator begin() const noexcept;\n</code></pre> <p>Returns an iterator to the first element.</p> <p></p>"},{"location":"api/basic_json/begin/#return-value","title":"Return value","text":"<p>iterator to the first element</p>"},{"location":"api/basic_json/begin/#exception-safety","title":"Exception safety","text":"<p>No-throw guarantee: this member function never throws exceptions.</p>"},{"location":"api/basic_json/begin/#complexity","title":"Complexity","text":"<p>Constant.</p>"},{"location":"api/basic_json/begin/#examples","title":"Examples","text":"Example <p>The following code shows an example for <code>begin()</code>.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create an array value\n    json array = {1, 2, 3, 4, 5};\n\n    // get an iterator to the first element\n    json::iterator it = array.begin();\n\n    // serialize the element that the iterator points to\n    std::cout &lt;&lt; *it &lt;&lt; '\\n';\n}\n</code></pre> <p>Output:</p> <pre><code>1\n</code></pre>"},{"location":"api/basic_json/begin/#version-history","title":"Version history","text":"<ul> <li>Added in version 1.0.0.</li> </ul>"},{"location":"api/basic_json/binary/","title":"nlohmann::basic_json::binary","text":"<pre><code>// (1)\nstatic basic_json binary(const typename binary_t::container_type&amp; init);\nstatic basic_json binary(typename binary_t::container_type&amp;&amp; init);\n\n// (2)\nstatic basic_json binary(const typename binary_t::container_type&amp; init,\n                         std::uint8_t subtype);\nstatic basic_json binary(typename binary_t::container_type&amp;&amp; init,\n                         std::uint8_t subtype);\n</code></pre> <ol> <li>Creates a JSON binary array value from a given binary container.</li> <li>Creates a JSON binary array value from a given binary container with subtype.</li> </ol> <p>Binary values are part of various binary formats, such as CBOR, MessagePack, and BSON. This constructor is used to create a value for serialization to those formats.</p>"},{"location":"api/basic_json/binary/#parameters","title":"Parameters","text":"<code>init</code> (in) container containing bytes to use as a binary type <code>subtype</code> (in) subtype to use in CBOR, MessagePack, and BSON"},{"location":"api/basic_json/binary/#return-value","title":"Return value","text":"<p>JSON binary array value</p>"},{"location":"api/basic_json/binary/#exception-safety","title":"Exception safety","text":"<p>Strong guarantee: if an exception is thrown, there are no changes in the JSON value.</p>"},{"location":"api/basic_json/binary/#complexity","title":"Complexity","text":"<p>Linear in the size of <code>init</code>; constant for <code>typename binary_t::container_type&amp;&amp; init</code> versions.</p>"},{"location":"api/basic_json/binary/#notes","title":"Notes","text":"<p>Note, this function exists because of the difficulty in correctly specifying the correct template overload in the standard value ctor, as both JSON arrays and JSON binary arrays are backed with some form of a <code>std::vector</code>. Because JSON binary arrays are a non-standard extension, it was decided that it would be best to prevent automatic initialization of a binary array type, for backwards compatibility and so it does not happen on accident.</p>"},{"location":"api/basic_json/binary/#examples","title":"Examples","text":"Example <p>The following code shows how to create a binary value.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create a binary vector\n    std::vector&lt;std::uint8_t&gt; vec = {0xCA, 0xFE, 0xBA, 0xBE};\n\n    // create a binary JSON value with subtype 42\n    json j = json::binary(vec, 42);\n\n    // output type and subtype\n    std::cout &lt;&lt; \"type: \" &lt;&lt; j.type_name() &lt;&lt; \", subtype: \" &lt;&lt; j.get_binary().subtype() &lt;&lt; std::endl;\n}\n</code></pre> <p>Output:</p> <pre><code>type: binary, subtype: 42\n</code></pre>"},{"location":"api/basic_json/binary/#version-history","title":"Version history","text":"<ul> <li>Added in version 3.8.0.</li> </ul>"},{"location":"api/basic_json/binary_t/","title":"nlohmann::basic_json::binary_t","text":"<pre><code>using binary_t = byte_container_with_subtype&lt;BinaryType&gt;;\n</code></pre> <p>This type is a type designed to carry binary data that appears in various serialized formats, such as CBOR's Major Type 2, MessagePack's bin, and BSON's generic binary subtype. This type is NOT a part of standard JSON and exists solely for compatibility with these binary types. As such, it is simply defined as an ordered sequence of zero or more byte values.</p> <p>Additionally, as an implementation detail, the subtype of the binary data is carried around as a <code>std::uint64_t</code>, which is compatible with both of the binary data formats that use binary subtyping, (though the specific numbering is incompatible with each other, and it is up to the user to translate between them). The subtype is added to <code>BinaryType</code> via the helper type byte_container_with_subtype.</p> <p>CBOR's RFC 7049 describes this type as:</p> <p>Major type 2: a byte string. The string's length in bytes is represented following the rules for positive integers (major type 0).</p> <p>MessagePack's documentation on the bin type family describes this type as:</p> <p>Bin format family stores a byte array in 2, 3, or 5 bytes of extra bytes in addition to the size of the byte array.</p> <p>BSON's specifications describe several binary types; however, this type is intended to represent the generic binary type which has the description:</p> <p>Generic binary subtype - This is the most commonly used binary subtype and should be the 'default' for drivers and tools.</p> <p>None of these impose any limitations on the internal representation other than the basic unit of storage be some type of array whose parts are decomposable into bytes.</p> <p>The default representation of this binary format is a <code>std::vector&lt;std::uint8_t&gt;</code>, which is a very common way to represent a byte array in modern C++.</p>"},{"location":"api/basic_json/binary_t/#template-parameters","title":"Template parameters","text":"<code>BinaryType</code> container type to store arrays"},{"location":"api/basic_json/binary_t/#notes","title":"Notes","text":""},{"location":"api/basic_json/binary_t/#default-type","title":"Default type","text":"<p>The default values for <code>BinaryType</code> is <code>std::vector&lt;std::uint8_t&gt;</code>.</p>"},{"location":"api/basic_json/binary_t/#storage","title":"Storage","text":"<p>Binary Arrays are stored as pointers in a <code>basic_json</code> type. That is, for any access to array values, a pointer of the type <code>binary_t*</code> must be dereferenced.</p>"},{"location":"api/basic_json/binary_t/#notes-on-subtypes","title":"Notes on subtypes","text":"<ul> <li> <p>CBOR</p> <ul> <li>Binary values are represented as byte strings. Subtypes are written as tags.</li> </ul> </li> <li> <p>MessagePack</p> <ul> <li>If a subtype is given and the binary array contains exactly 1, 2, 4, 8, or 16 elements, the fixext family (fixext1,   fixext2, fixext4, fixext8) is used. For other sizes, the ext family (ext8, ext16, ext32) is used. The subtype is   then added as a signed 8-bit integer.</li> <li>If no subtype is given, the bin family (bin8, bin16, bin32) is used.</li> </ul> </li> <li> <p>BSON</p> <ul> <li>If a subtype is given, it is used and added as an unsigned 8-bit integer.</li> <li>If no subtype is given, the generic binary subtype 0x00 is used.</li> </ul> </li> </ul>"},{"location":"api/basic_json/binary_t/#examples","title":"Examples","text":"Example <p>The following code shows that <code>binary_t</code> is by default, a typedef to <code>nlohmann::byte_container_with_subtype&lt;std::vector&lt;std::uint8_t&gt;&gt;</code>.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;iomanip&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    std::cout &lt;&lt; std::boolalpha &lt;&lt; std::is_same&lt;nlohmann::byte_container_with_subtype&lt;std::vector&lt;std::uint8_t&gt;&gt;, json::binary_t&gt;::value &lt;&lt; std::endl;\n}\n</code></pre> <p>Output:</p> <pre><code>true\n</code></pre>"},{"location":"api/basic_json/binary_t/#see-also","title":"See also","text":"<ul> <li>byte_container_with_subtype</li> </ul>"},{"location":"api/basic_json/binary_t/#version-history","title":"Version history","text":"<ul> <li>Added in version 3.8.0. Changed the type of subtype to <code>std::uint64_t</code> in version 3.10.0.</li> </ul>"},{"location":"api/basic_json/boolean_t/","title":"nlohmann::basic_json::boolean_t","text":"<pre><code>using boolean_t = BooleanType;\n</code></pre> <p>The type used to store JSON booleans.</p> <p>RFC 8259 implicitly describes a boolean as a type which differentiates the two literals <code>true</code> and <code>false</code>.</p> <p>To store boolean values in C++, a type is defined by the template parameter  <code>BooleanType</code> which chooses the type to use.</p>"},{"location":"api/basic_json/boolean_t/#notes","title":"Notes","text":""},{"location":"api/basic_json/boolean_t/#default-type","title":"Default type","text":"<p>With the default values for <code>BooleanType</code> (<code>bool</code>), the default value for <code>boolean_t</code> is <code>bool</code>.</p>"},{"location":"api/basic_json/boolean_t/#storage","title":"Storage","text":"<p>Boolean values are stored directly inside a <code>basic_json</code> type.</p>"},{"location":"api/basic_json/boolean_t/#examples","title":"Examples","text":"Example <p>The following code shows that <code>boolean_t</code> is by default, a typedef to <code>bool</code>.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;iomanip&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    std::cout &lt;&lt; std::boolalpha &lt;&lt; std::is_same&lt;bool, json::boolean_t&gt;::value &lt;&lt; std::endl;\n}\n</code></pre> <p>Output:</p> <pre><code>true\n</code></pre>"},{"location":"api/basic_json/boolean_t/#version-history","title":"Version history","text":"<ul> <li>Added in version 1.0.0.</li> </ul>"},{"location":"api/basic_json/cbegin/","title":"nlohmann::basic_json::cbegin","text":"<pre><code>const_iterator cbegin() const noexcept;\n</code></pre> <p>Returns an iterator to the first element.</p> <p></p>"},{"location":"api/basic_json/cbegin/#return-value","title":"Return value","text":"<p>iterator to the first element</p>"},{"location":"api/basic_json/cbegin/#exception-safety","title":"Exception safety","text":"<p>No-throw guarantee: this member function never throws exceptions.</p>"},{"location":"api/basic_json/cbegin/#complexity","title":"Complexity","text":"<p>Constant.</p>"},{"location":"api/basic_json/cbegin/#examples","title":"Examples","text":"Example <p>The following code shows an example for <code>cbegin()</code>.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create an array value\n    const json array = {1, 2, 3, 4, 5};\n\n    // get an iterator to the first element\n    json::const_iterator it = array.cbegin();\n\n    // serialize the element that the iterator points to\n    std::cout &lt;&lt; *it &lt;&lt; '\\n';\n}\n</code></pre> <p>Output:</p> <pre><code>1\n</code></pre>"},{"location":"api/basic_json/cbegin/#version-history","title":"Version history","text":"<ul> <li>Added in version 1.0.0.</li> </ul>"},{"location":"api/basic_json/cbor_tag_handler_t/","title":"nlohmann::basic_json::cbor_tag_handler_t","text":"<pre><code>enum class cbor_tag_handler_t\n{\n    error,\n    ignore,\n    store\n};\n</code></pre> <p>This enumeration is used in the <code>from_cbor</code> function to choose how to treat tags:</p> error throw a <code>parse_error</code> exception in case of a tag ignore ignore tags store store tagged values as binary container with subtype (for bytes 0xd8..0xdb)"},{"location":"api/basic_json/cbor_tag_handler_t/#examples","title":"Examples","text":"Example <p>The example below shows how the different values of the <code>cbor_tag_handler_t</code> influence the behavior of <code>from_cbor</code> when reading a tagged byte string.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // tagged byte string\n    std::vector&lt;std::uint8_t&gt; vec = {{0xd8, 0x42, 0x44, 0xcA, 0xfe, 0xba, 0xbe}};\n\n    // cbor_tag_handler_t::error throws\n    try\n    {\n        auto b_throw_on_tag = json::from_cbor(vec, true, true, json::cbor_tag_handler_t::error);\n    }\n    catch (const json::parse_error&amp; e)\n    {\n        std::cout &lt;&lt; e.what() &lt;&lt; std::endl;\n    }\n\n    // cbor_tag_handler_t::ignore ignores the tag\n    auto b_ignore_tag = json::from_cbor(vec, true, true, json::cbor_tag_handler_t::ignore);\n    std::cout &lt;&lt; b_ignore_tag &lt;&lt; std::endl;\n\n    // cbor_tag_handler_t::store stores the tag as binary subtype\n    auto b_store_tag = json::from_cbor(vec, true, true, json::cbor_tag_handler_t::store);\n    std::cout &lt;&lt; b_store_tag &lt;&lt; std::endl;\n}\n</code></pre> <p>Output:</p> <pre><code>[json.exception.parse_error.112] parse error at byte 1: syntax error while parsing CBOR value: invalid byte: 0xD8\n{\"bytes\":[202,254,186,190],\"subtype\":null}\n{\"bytes\":[202,254,186,190],\"subtype\":66}\n</code></pre>"},{"location":"api/basic_json/cbor_tag_handler_t/#version-history","title":"Version history","text":"<ul> <li>Added in version 3.9.0. Added value <code>store</code> in 3.10.0.</li> </ul>"},{"location":"api/basic_json/cend/","title":"nlohmann::basic_json::cend","text":"<pre><code>const_iterator cend() const noexcept;\n</code></pre> <p>Returns an iterator to one past the last element.</p> <p></p>"},{"location":"api/basic_json/cend/#return-value","title":"Return value","text":"<p>iterator one past the last element</p>"},{"location":"api/basic_json/cend/#exception-safety","title":"Exception safety","text":"<p>No-throw guarantee: this member function never throws exceptions.</p>"},{"location":"api/basic_json/cend/#complexity","title":"Complexity","text":"<p>Constant.</p>"},{"location":"api/basic_json/cend/#examples","title":"Examples","text":"Example <p>The following code shows an example for <code>cend()</code>.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create an array value\n    json array = {1, 2, 3, 4, 5};\n\n    // get an iterator to one past the last element\n    json::const_iterator it = array.cend();\n\n    // decrement the iterator to point to the last element\n    --it;\n\n    // serialize the element that the iterator points to\n    std::cout &lt;&lt; *it &lt;&lt; '\\n';\n}\n</code></pre> <p>Output:</p> <pre><code>5\n</code></pre>"},{"location":"api/basic_json/cend/#version-history","title":"Version history","text":"<ul> <li>Added in version 1.0.0.</li> </ul>"},{"location":"api/basic_json/clear/","title":"nlohmann::basic_json::clear","text":"<pre><code>void clear() noexcept;\n</code></pre> <p>Clears the content of a JSON value and resets it to the default value as if <code>basic_json(value_t)</code> would have been called with the current value type from <code>type()</code>:</p> Value type initial value null <code>null</code> boolean <code>false</code> string <code>\"\"</code> number <code>0</code> binary An empty byte vector object <code>{}</code> array <code>[]</code> <p>Has the same effect as calling</p> <pre><code>*this = basic_json(type());\n</code></pre>"},{"location":"api/basic_json/clear/#exception-safety","title":"Exception safety","text":"<p>No-throw guarantee: this function never throws exceptions.</p>"},{"location":"api/basic_json/clear/#complexity","title":"Complexity","text":"<p>Linear in the size of the JSON value.</p>"},{"location":"api/basic_json/clear/#notes","title":"Notes","text":"<p>All iterators, pointers, and references related to this container are invalidated.</p>"},{"location":"api/basic_json/clear/#examples","title":"Examples","text":"Example <p>The example below shows the effect of <code>clear()</code> to different JSON types.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create JSON values\n    json j_null;\n    json j_boolean = true;\n    json j_number_integer = 17;\n    json j_number_float = 23.42;\n    json j_object = {{\"one\", 1}, {\"two\", 2}};\n    json j_array = {1, 2, 4, 8, 16};\n    json j_string = \"Hello, world\";\n\n    // call clear()\n    j_null.clear();\n    j_boolean.clear();\n    j_number_integer.clear();\n    j_number_float.clear();\n    j_object.clear();\n    j_array.clear();\n    j_string.clear();\n\n    // serialize the cleared values()\n    std::cout &lt;&lt; j_null &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_boolean &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_number_integer &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_number_float &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_object &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_array &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_string &lt;&lt; '\\n';\n}\n</code></pre> <p>Output:</p> <pre><code>null\nfalse\n0\n0.0\n{}\n[]\n\"\"\n</code></pre>"},{"location":"api/basic_json/clear/#version-history","title":"Version history","text":"<ul> <li>Added in version 1.0.0.</li> <li>Added support for binary types in version 3.8.0.</li> </ul>"},{"location":"api/basic_json/contains/","title":"nlohmann::basic_json::contains","text":"<pre><code>// (1)\nbool contains(const typename object_t::key_type&amp; key) const;\n\n// (2)\ntemplate&lt;typename KeyType&gt;\nbool contains(KeyType&amp;&amp; key) const;\n\n// (3)\nbool contains(const json_pointer&amp; ptr) const;\n</code></pre> <ol> <li>Check whether an element exists in a JSON object with a key equivalent to <code>key</code>. If the element is not found or the     JSON value is not an object, <code>false</code> is returned.</li> <li>See 1. This overload is only available if <code>KeyType</code> is comparable with <code>typename object_t::key_type</code> and    <code>typename object_comparator_t::is_transparent</code> denotes a type.</li> <li>Check whether the given JSON pointer <code>ptr</code> can be resolved in the current JSON value.</li> </ol>"},{"location":"api/basic_json/contains/#template-parameters","title":"Template parameters","text":"<code>KeyType</code> A type for an object key other than <code>json_pointer</code> that is comparable with <code>string_t</code> using  <code>object_comparator_t</code>. This can also be a string view (C++17)."},{"location":"api/basic_json/contains/#parameters","title":"Parameters","text":"<code>key</code> (in) key value to check its existence. <code>ptr</code> (in) JSON pointer to check its existence."},{"location":"api/basic_json/contains/#return-value","title":"Return value","text":"<ol> <li><code>true</code> if an element with specified <code>key</code> exists. If no such element with such a key is found or the JSON value    is not an object, <code>false</code> is returned.</li> <li>See 1.</li> <li><code>true</code> if the JSON pointer can be resolved to a stored value, <code>false</code> otherwise.</li> </ol>"},{"location":"api/basic_json/contains/#exception-safety","title":"Exception safety","text":"<p>Strong exception safety: if an exception occurs, the original value stays intact.</p>"},{"location":"api/basic_json/contains/#exceptions","title":"Exceptions","text":"<ol> <li>The function does not throw exceptions.</li> <li>The function does not throw exceptions.</li> <li>The function does not throw exceptions.</li> </ol>"},{"location":"api/basic_json/contains/#complexity","title":"Complexity","text":"<p>Logarithmic in the size of the JSON object.</p>"},{"location":"api/basic_json/contains/#notes","title":"Notes","text":"<ul> <li>This method always returns <code>false</code> when executed on a JSON type that is not an object.</li> <li>This method can be executed on any JSON value type.</li> </ul> <p>Postconditions</p> <p>If <code>j.contains(x)</code> returns <code>true</code> for a key or JSON pointer <code>x</code>, then it is safe to call <code>j[x]</code>.</p>"},{"location":"api/basic_json/contains/#examples","title":"Examples","text":"Example: (1) check with key <p>The example shows how <code>contains()</code> is used.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\nusing namespace nlohmann::literals;\n\nint main()\n{\n    // create some JSON values\n    json j_object = R\"( {\"key\": \"value\"} )\"_json;\n    json j_array = R\"( [1, 2, 3] )\"_json;\n\n    // call contains\n    std::cout &lt;&lt; std::boolalpha &lt;&lt;\n              \"j_object contains 'key': \" &lt;&lt; j_object.contains(\"key\") &lt;&lt; '\\n' &lt;&lt;\n              \"j_object contains 'another': \" &lt;&lt; j_object.contains(\"another\") &lt;&lt; '\\n' &lt;&lt;\n              \"j_array contains 'key': \" &lt;&lt; j_array.contains(\"key\") &lt;&lt; std::endl;\n}\n</code></pre> <p>Output:</p> <pre><code>j_object contains 'key': true\nj_object contains 'another': false\nj_array contains 'key': false\n</code></pre> Example: (2) check with key using string_view <p>The example shows how <code>contains()</code> is used.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;string_view&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing namespace std::string_view_literals;\nusing json = nlohmann::json;\nusing namespace nlohmann::literals;\n\nint main()\n{\n    // create some JSON values\n    json j_object = R\"( {\"key\": \"value\"} )\"_json;\n    json j_array = R\"( [1, 2, 3] )\"_json;\n\n    // call contains\n    std::cout &lt;&lt; std::boolalpha &lt;&lt;\n              \"j_object contains 'key': \" &lt;&lt; j_object.contains(\"key\"sv) &lt;&lt; '\\n' &lt;&lt;\n              \"j_object contains 'another': \" &lt;&lt; j_object.contains(\"another\"sv) &lt;&lt; '\\n' &lt;&lt;\n              \"j_array contains 'key': \" &lt;&lt; j_array.contains(\"key\"sv) &lt;&lt; std::endl;\n}\n</code></pre> <p>Output:</p> <pre><code>j_object contains 'key': true\nj_object contains 'another': false\nj_array contains 'key': false\n</code></pre> Example: (3) check with JSON pointer <p>The example shows how <code>contains()</code> is used.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\nusing namespace nlohmann::literals;\n\nint main()\n{\n    // create a JSON value\n    json j =\n    {\n        {\"number\", 1}, {\"string\", \"foo\"}, {\"array\", {1, 2}}\n    };\n\n    std::cout &lt;&lt; std::boolalpha\n              &lt;&lt; j.contains(\"/number\"_json_pointer) &lt;&lt; '\\n'\n              &lt;&lt; j.contains(\"/string\"_json_pointer) &lt;&lt; '\\n'\n              &lt;&lt; j.contains(\"/array\"_json_pointer) &lt;&lt; '\\n'\n              &lt;&lt; j.contains(\"/array/1\"_json_pointer) &lt;&lt; '\\n'\n              &lt;&lt; j.contains(\"/array/-\"_json_pointer) &lt;&lt; '\\n'\n              &lt;&lt; j.contains(\"/array/4\"_json_pointer) &lt;&lt; '\\n'\n              &lt;&lt; j.contains(\"/baz\"_json_pointer) &lt;&lt; std::endl;\n\n    try\n    {\n        // try to use an array index with leading '0'\n        j.contains(\"/array/01\"_json_pointer);\n    }\n    catch (const json::parse_error&amp; e)\n    {\n        std::cout &lt;&lt; e.what() &lt;&lt; '\\n';\n    }\n\n    try\n    {\n        // try to use an array index that is not a number\n        j.contains(\"/array/one\"_json_pointer);\n    }\n    catch (const json::parse_error&amp; e)\n    {\n        std::cout &lt;&lt; e.what() &lt;&lt; '\\n';\n    }\n}\n</code></pre> <p>Output:</p> <pre><code>true\ntrue\ntrue\ntrue\nfalse\nfalse\nfalse\n</code></pre>"},{"location":"api/basic_json/contains/#see-also","title":"See also","text":"<ul> <li>find find a value in an object</li> <li>count returns the number of occurrences of a key</li> </ul>"},{"location":"api/basic_json/contains/#version-history","title":"Version history","text":"<ol> <li>Added in version 3.11.0.</li> <li>Added in version 3.6.0. Extended template <code>KeyType</code> to support comparable types in version 3.11.0.</li> <li>Added in version 3.7.0.</li> </ol>"},{"location":"api/basic_json/count/","title":"nlohmann::basic_json::count","text":"<pre><code>// (1)\nsize_type count(const typename object_t::key_type&amp; key) const;\n\n// (2)\ntemplate&lt;typename KeyType&gt;\nsize_type count(KeyType&amp;&amp; key) const;\n</code></pre> <ol> <li>Returns the number of elements with key <code>key</code>. If <code>ObjectType</code> is the default <code>std::map</code> type, the return value will    always be <code>0</code> (<code>key</code> was not found) or <code>1</code> (<code>key</code> was found).</li> <li>See 1. This overload is only available if <code>KeyType</code> is comparable with <code>typename object_t::key_type</code> and    <code>typename object_comparator_t::is_transparent</code> denotes a type.</li> </ol>"},{"location":"api/basic_json/count/#template-parameters","title":"Template parameters","text":"<code>KeyType</code> A type for an object key other than <code>json_pointer</code> that is comparable with <code>string_t</code> using  <code>object_comparator_t</code>. This can also be a string view (C++17)."},{"location":"api/basic_json/count/#parameters","title":"Parameters","text":"<code>key</code> (in) key value of the element to count."},{"location":"api/basic_json/count/#return-value","title":"Return value","text":"<p>Number of elements with key <code>key</code>. If the JSON value is not an object, the return value will be <code>0</code>.</p>"},{"location":"api/basic_json/count/#exception-safety","title":"Exception safety","text":"<p>Strong exception safety: if an exception occurs, the original value stays intact.</p>"},{"location":"api/basic_json/count/#complexity","title":"Complexity","text":"<p>Logarithmic in the size of the JSON object.</p>"},{"location":"api/basic_json/count/#notes","title":"Notes","text":"<p>This method always returns <code>0</code> when executed on a JSON type that is not an object.</p>"},{"location":"api/basic_json/count/#examples","title":"Examples","text":"Example: (1) count number of elements <p>The example shows how <code>count()</code> is used.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create a JSON object\n    json j_object = {{\"one\", 1}, {\"two\", 2}};\n\n    // call count()\n    auto count_two = j_object.count(\"two\");\n    auto count_three = j_object.count(\"three\");\n\n    // print values\n    std::cout &lt;&lt; \"number of elements with key \\\"two\\\": \" &lt;&lt; count_two &lt;&lt; '\\n';\n    std::cout &lt;&lt; \"number of elements with key \\\"three\\\": \" &lt;&lt; count_three &lt;&lt; '\\n';\n}\n</code></pre> <p>Output:</p> <pre><code>number of elements with key \"two\": 1\nnumber of elements with key \"three\": 0\n</code></pre> Example: (2) count number of elements using string_view <p>The example shows how <code>count()</code> is used.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;string_view&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing namespace std::string_view_literals;\nusing json = nlohmann::json;\n\nint main()\n{\n    // create a JSON object\n    json j_object = {{\"one\", 1}, {\"two\", 2}};\n\n    // call count()\n    auto count_two = j_object.count(\"two\"sv);\n    auto count_three = j_object.count(\"three\"sv);\n\n    // print values\n    std::cout &lt;&lt; \"number of elements with key \\\"two\\\": \" &lt;&lt; count_two &lt;&lt; '\\n';\n    std::cout &lt;&lt; \"number of elements with key \\\"three\\\": \" &lt;&lt; count_three &lt;&lt; '\\n';\n}\n</code></pre> <p>Output:</p> <pre><code>number of elements with key \"two\": 1\nnumber of elements with key \"three\": 0\n</code></pre>"},{"location":"api/basic_json/count/#see-also","title":"See also","text":"<ul> <li>find find a value in an object</li> <li>contains checks whether a key exists</li> </ul>"},{"location":"api/basic_json/count/#version-history","title":"Version history","text":"<ol> <li>Added in version 3.11.0.</li> <li>Added in version 1.0.0. Changed parameter <code>key</code> type to <code>KeyType&amp;&amp;</code> in version 3.11.0.</li> </ol>"},{"location":"api/basic_json/crbegin/","title":"nlohmann::basic_json::crbegin","text":"<pre><code>const_reverse_iterator crbegin() const noexcept;\n</code></pre> <p>Returns an iterator to the reverse-beginning; that is, the last element.</p> <p></p>"},{"location":"api/basic_json/crbegin/#return-value","title":"Return value","text":"<p>reverse iterator to the last element</p>"},{"location":"api/basic_json/crbegin/#exception-safety","title":"Exception safety","text":"<p>No-throw guarantee: this member function never throws exceptions.</p>"},{"location":"api/basic_json/crbegin/#complexity","title":"Complexity","text":"<p>Constant.</p>"},{"location":"api/basic_json/crbegin/#examples","title":"Examples","text":"Example <p>The following code shows an example for <code>crbegin()</code>.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create an array value\n    json array = {1, 2, 3, 4, 5};\n\n    // get an iterator to the reverse-beginning\n    json::const_reverse_iterator it = array.crbegin();\n\n    // serialize the element that the iterator points to\n    std::cout &lt;&lt; *it &lt;&lt; '\\n';\n}\n</code></pre> <p>Output:</p> <pre><code>5\n</code></pre>"},{"location":"api/basic_json/crbegin/#version-history","title":"Version history","text":"<ul> <li>Added in version 1.0.0.</li> </ul>"},{"location":"api/basic_json/crend/","title":"nlohmann::basic_json::crend","text":"<pre><code>const_reverse_iterator crend() const noexcept;\n</code></pre> <p>Returns an iterator to the reverse-end; that is, one before the first element. This element acts as a placeholder, attempting to access it results in undefined behavior.</p> <p></p>"},{"location":"api/basic_json/crend/#return-value","title":"Return value","text":"<p>reverse iterator to the element following the last element</p>"},{"location":"api/basic_json/crend/#exception-safety","title":"Exception safety","text":"<p>No-throw guarantee: this member function never throws exceptions.</p>"},{"location":"api/basic_json/crend/#complexity","title":"Complexity","text":"<p>Constant.</p>"},{"location":"api/basic_json/crend/#examples","title":"Examples","text":"Example <p>The following code shows an example for <code>crend()</code>.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create an array value\n    json array = {1, 2, 3, 4, 5};\n\n    // get an iterator to the reverse-end\n    json::const_reverse_iterator it = array.crend();\n\n    // increment the iterator to point to the first element\n    --it;\n\n    // serialize the element that the iterator points to\n    std::cout &lt;&lt; *it &lt;&lt; '\\n';\n}\n</code></pre> <p>Output:</p> <pre><code>1\n</code></pre>"},{"location":"api/basic_json/crend/#version-history","title":"Version history","text":"<ul> <li>Added in version 1.0.0.</li> </ul>"},{"location":"api/basic_json/default_object_comparator_t/","title":"nlohmann::basic_json::default_object_comparator_t","text":"<pre><code>using default_object_comparator_t = std::less&lt;StringType&gt;;  // until C++14\n\nusing default_object_comparator_t = std::less&lt;&gt;;            // since C++14\n</code></pre> <p>The default comparator used by <code>object_t</code>.</p> <p>Since C++14 a transparent comparator is used which prevents unnecessary string construction when looking up a key in an object.</p> <p>The actual comparator used depends on <code>object_t</code> and can be obtained via <code>object_comparator_t</code>.</p>"},{"location":"api/basic_json/default_object_comparator_t/#examples","title":"Examples","text":"Example <p>The example below demonstrates the default comparator.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    std::cout &lt;&lt; std::boolalpha\n              &lt;&lt; \"one &lt; two : \" &lt;&lt; json::default_object_comparator_t{}(\"one\", \"two\") &lt;&lt; \"\\n\"\n              &lt;&lt; \"three &lt; four : \" &lt;&lt; json::default_object_comparator_t{}(\"three\", \"four\") &lt;&lt; std::endl;\n}\n</code></pre> <p>Output:</p> <pre><code>one &lt; two : true\nthree &lt; four : false\n</code></pre>"},{"location":"api/basic_json/default_object_comparator_t/#version-history","title":"Version history","text":"<ul> <li>Added in version 3.11.0.</li> </ul>"},{"location":"api/basic_json/diff/","title":"nlohmann::basic_json::diff","text":"<pre><code>static basic_json diff(const basic_json&amp; source,\n                       const basic_json&amp; target);\n</code></pre> <p>Creates a JSON Patch so that value <code>source</code> can be changed into the value <code>target</code> by calling <code>patch</code> function.</p> <p>For two JSON values <code>source</code> and <code>target</code>, the following code yields always <code>true</code>: <pre><code>source.patch(diff(source, target)) == target;\n</code></pre></p>"},{"location":"api/basic_json/diff/#parameters","title":"Parameters","text":"<code>source</code> (in) JSON value to compare from <code>target</code> (in) JSON value to compare against"},{"location":"api/basic_json/diff/#return-value","title":"Return value","text":"<p>a JSON patch to convert the <code>source</code> to <code>target</code></p>"},{"location":"api/basic_json/diff/#exception-safety","title":"Exception safety","text":"<p>Strong guarantee: if an exception is thrown, there are no changes in the JSON value.</p>"},{"location":"api/basic_json/diff/#complexity","title":"Complexity","text":"<p>Linear in the lengths of <code>source</code> and <code>target</code>.</p>"},{"location":"api/basic_json/diff/#notes","title":"Notes","text":"<p>Currently, only <code>remove</code>, <code>add</code>, and <code>replace</code> operations are generated.</p>"},{"location":"api/basic_json/diff/#examples","title":"Examples","text":"Example <p>The following code shows how a JSON patch is created as a diff for two JSON values.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;iomanip&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\nusing namespace nlohmann::literals;\n\nint main()\n{\n    // the source document\n    json source = R\"(\n        {\n            \"baz\": \"qux\",\n            \"foo\": \"bar\"\n        }\n    )\"_json;\n\n    // the target document\n    json target = R\"(\n        {\n            \"baz\": \"boo\",\n            \"hello\": [\n                \"world\"\n            ]\n        }\n    )\"_json;\n\n    // create the patch\n    json patch = json::diff(source, target);\n\n    // roundtrip\n    json patched_source = source.patch(patch);\n\n    // output patch and roundtrip result\n    std::cout &lt;&lt; std::setw(4) &lt;&lt; patch &lt;&lt; \"\\n\\n\"\n              &lt;&lt; std::setw(4) &lt;&lt; patched_source &lt;&lt; std::endl;\n}\n</code></pre> <p>Output:</p> <pre><code>[\n    {\n        \"op\": \"replace\",\n        \"path\": \"/baz\",\n        \"value\": \"boo\"\n    },\n    {\n        \"op\": \"remove\",\n        \"path\": \"/foo\"\n    },\n    {\n        \"op\": \"add\",\n        \"path\": \"/hello\",\n        \"value\": [\n            \"world\"\n        ]\n    }\n]\n\n{\n    \"baz\": \"boo\",\n    \"hello\": [\n        \"world\"\n    ]\n}\n</code></pre>"},{"location":"api/basic_json/diff/#see-also","title":"See also","text":"<ul> <li>RFC 6902 (JSON Patch)</li> <li>patch applies a JSON Patch</li> <li>patch_inplace applies a JSON Patch in place</li> <li>merge_patch applies a JSON Merge Patch</li> </ul>"},{"location":"api/basic_json/diff/#version-history","title":"Version history","text":"<ul> <li>Added in version 2.0.0.</li> </ul>"},{"location":"api/basic_json/dump/","title":"nlohmann::basic_json::dump","text":"<pre><code>string_t dump(const int indent = -1,\n              const char indent_char = ' ',\n              const bool ensure_ascii = false,\n              const error_handler_t error_handler = error_handler_t::strict) const;\n</code></pre> <p>Serialization function for JSON values. The function tries to mimic Python's <code>json.dumps()</code> function, and currently supports its <code>indent</code> and <code>ensure_ascii</code> parameters.</p>"},{"location":"api/basic_json/dump/#parameters","title":"Parameters","text":"<code>indent</code> (in) If <code>indent</code> is nonnegative, then array elements and object members will be pretty-printed with that indent level. An indent level of <code>0</code> will only insert newlines. <code>-1</code> (the default) selects the most compact representation. <code>indent_char</code> (in) The character to use for indentation if <code>indent</code> is greater than <code>0</code>. The default is <code></code> (space). <code>ensure_ascii</code> (in) If <code>ensure_ascii</code> is true, all non-ASCII characters in the output are escaped with <code>\\uXXXX</code> sequences, and the result consists of ASCII characters only. <code>error_handler</code> (in) how to react on decoding errors; there are three possible values (see <code>error_handler_t</code>: <code>strict</code> (throws an exception in case a decoding error occurs; default), <code>replace</code> (replace invalid UTF-8 sequences with U+FFFD), and <code>ignore</code> (ignore invalid UTF-8 sequences during serialization; all bytes are copied to the output unchanged))."},{"location":"api/basic_json/dump/#return-value","title":"Return value","text":"<p>string containing the serialization of the JSON value</p>"},{"location":"api/basic_json/dump/#exception-safety","title":"Exception safety","text":"<p>Strong guarantee: if an exception is thrown, there are no changes to any JSON value.</p>"},{"location":"api/basic_json/dump/#exceptions","title":"Exceptions","text":"<p>Throws <code>type_error.316</code> if a string stored inside the JSON value is not UTF-8 encoded and <code>error_handler</code> is set to <code>strict</code></p>"},{"location":"api/basic_json/dump/#complexity","title":"Complexity","text":"<p>Linear.</p>"},{"location":"api/basic_json/dump/#notes","title":"Notes","text":"<p>Binary values are serialized as an object containing two keys:</p> <ul> <li>\"bytes\": an array of bytes as integers</li> <li>\"subtype\": the subtype as integer or <code>null</code> if the binary has no subtype</li> </ul>"},{"location":"api/basic_json/dump/#examples","title":"Examples","text":"Example <p>The following example shows the effect of different <code>indent</code>, <code>indent_char</code>, and <code>ensure_ascii</code> parameters to the result of the serialization.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create JSON values\n    json j_object = {{\"one\", 1}, {\"two\", 2}};\n    json j_array = {1, 2, 4, 8, 16};\n    json j_string = \"Hell\u00f6 \ud83d\ude00!\";\n\n    // call dump()\n    std::cout &lt;&lt; \"objects:\" &lt;&lt; '\\n'\n              &lt;&lt; j_object.dump() &lt;&lt; \"\\n\\n\"\n              &lt;&lt; j_object.dump(-1) &lt;&lt; \"\\n\\n\"\n              &lt;&lt; j_object.dump(0) &lt;&lt; \"\\n\\n\"\n              &lt;&lt; j_object.dump(4) &lt;&lt; \"\\n\\n\"\n              &lt;&lt; j_object.dump(1, '\\t') &lt;&lt; \"\\n\\n\";\n\n    std::cout &lt;&lt; \"arrays:\" &lt;&lt; '\\n'\n              &lt;&lt; j_array.dump() &lt;&lt; \"\\n\\n\"\n              &lt;&lt; j_array.dump(-1) &lt;&lt; \"\\n\\n\"\n              &lt;&lt; j_array.dump(0) &lt;&lt; \"\\n\\n\"\n              &lt;&lt; j_array.dump(4) &lt;&lt; \"\\n\\n\"\n              &lt;&lt; j_array.dump(1, '\\t') &lt;&lt; \"\\n\\n\";\n\n    std::cout &lt;&lt; \"strings:\" &lt;&lt; '\\n'\n              &lt;&lt; j_string.dump() &lt;&lt; '\\n'\n              &lt;&lt; j_string.dump(-1, ' ', true) &lt;&lt; '\\n';\n\n    // create JSON value with invalid UTF-8 byte sequence\n    json j_invalid = \"\u00e4\\xA9\u00fc\";\n    try\n    {\n        std::cout &lt;&lt; j_invalid.dump() &lt;&lt; std::endl;\n    }\n    catch (const json::type_error&amp; e)\n    {\n        std::cout &lt;&lt; e.what() &lt;&lt; std::endl;\n    }\n\n    std::cout &lt;&lt; \"string with replaced invalid characters: \"\n              &lt;&lt; j_invalid.dump(-1, ' ', false, json::error_handler_t::replace)\n              &lt;&lt; \"\\nstring with ignored invalid characters: \"\n              &lt;&lt; j_invalid.dump(-1, ' ', false, json::error_handler_t::ignore)\n              &lt;&lt; '\\n';\n}\n</code></pre> <p>Output:</p> <pre><code>objects:\n{\"one\":1,\"two\":2}\n\n{\"one\":1,\"two\":2}\n\n{\n\"one\": 1,\n\"two\": 2\n}\n\n{\n    \"one\": 1,\n    \"two\": 2\n}\n\n{\n    \"one\": 1,\n    \"two\": 2\n}\n\narrays:\n[1,2,4,8,16]\n\n[1,2,4,8,16]\n\n[\n1,\n2,\n4,\n8,\n16\n]\n\n[\n    1,\n    2,\n    4,\n    8,\n    16\n]\n\n[\n    1,\n    2,\n    4,\n    8,\n    16\n]\n\nstrings:\n\"Hell\u00f6 \ud83d\ude00!\"\n\"Hell\\u00f6 \\ud83d\\ude00!\"\n[json.exception.type_error.316] invalid UTF-8 byte at index 2: 0xA9\nstring with replaced invalid characters: \"\u00e4\ufffd\u00fc\"\nstring with ignored invalid characters: \"\u00e4\u00fc\"\n</code></pre>"},{"location":"api/basic_json/dump/#see-also","title":"See also","text":"<ul> <li>to_string returns a string representation of a JSON value</li> <li>operator&lt;&lt; serialize to stream</li> </ul>"},{"location":"api/basic_json/dump/#version-history","title":"Version history","text":"<ul> <li>Added in version 1.0.0.</li> <li>Indentation character <code>indent_char</code>, option <code>ensure_ascii</code> and exceptions added in version 3.0.0.</li> <li>Error handlers added in version 3.4.0.</li> <li>Serialization of binary values added in version 3.8.0.</li> </ul>"},{"location":"api/basic_json/emplace/","title":"nlohmann::basic_json::emplace","text":"<pre><code>template&lt;class... Args&gt;\nstd::pair&lt;iterator, bool&gt; emplace(Args&amp;&amp; ... args);\n</code></pre> <p>Inserts a new element into a JSON object constructed in-place with the given <code>args</code> if there is no element with the key in the container. If the function is called on a JSON null value, an empty object is created before appending the value created from <code>args</code>.</p>"},{"location":"api/basic_json/emplace/#template-parameters","title":"Template parameters","text":"<code>Args</code> compatible types to create a <code>basic_json</code> object"},{"location":"api/basic_json/emplace/#iterator-invalidation","title":"Iterator invalidation","text":"<p>For <code>ordered_json</code>, adding a value to an object can yield a reallocation, in which case all iterators (including the <code>end()</code> iterator) and all references to the elements are invalidated.</p>"},{"location":"api/basic_json/emplace/#parameters","title":"Parameters","text":"<code>args</code> (in) arguments to forward to a constructor of <code>basic_json</code>"},{"location":"api/basic_json/emplace/#return-value","title":"Return value","text":"<p>a pair consisting of an iterator to the inserted element, or the already-existing element if no insertion happened, and a <code>bool</code> denoting whether the insertion took place.</p>"},{"location":"api/basic_json/emplace/#exception-safety","title":"Exception safety","text":"<p>Strong guarantee: if an exception is thrown, there are no changes to any JSON value.</p>"},{"location":"api/basic_json/emplace/#exceptions","title":"Exceptions","text":"<p>Throws <code>type_error.311</code> when called on a type other than JSON object or <code>null</code>; example: <code>\"cannot use emplace() with number\"</code></p>"},{"location":"api/basic_json/emplace/#complexity","title":"Complexity","text":"<p>Logarithmic in the size of the container, O(log(<code>size()</code>)).</p>"},{"location":"api/basic_json/emplace/#examples","title":"Examples","text":"Example <p>The example shows how <code>emplace()</code> can be used to add elements to a JSON object. Note how the <code>null</code> value was silently converted to a JSON object. Further note how no value is added if there was already one value stored with the same key.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create JSON values\n    json object = {{\"one\", 1}, {\"two\", 2}};\n    json null;\n\n    // print values\n    std::cout &lt;&lt; object &lt;&lt; '\\n';\n    std::cout &lt;&lt; null &lt;&lt; '\\n';\n\n    // add values\n    auto res1 = object.emplace(\"three\", 3);\n    null.emplace(\"A\", \"a\");\n    null.emplace(\"B\", \"b\");\n\n    // the following call will not add an object, because there is already\n    // a value stored at key \"B\"\n    auto res2 = null.emplace(\"B\", \"c\");\n\n    // print values\n    std::cout &lt;&lt; object &lt;&lt; '\\n';\n    std::cout &lt;&lt; *res1.first &lt;&lt; \" \" &lt;&lt; std::boolalpha &lt;&lt; res1.second &lt;&lt; '\\n';\n\n    std::cout &lt;&lt; null &lt;&lt; '\\n';\n    std::cout &lt;&lt; *res2.first &lt;&lt; \" \" &lt;&lt; std::boolalpha &lt;&lt; res2.second &lt;&lt; '\\n';\n}\n</code></pre> <p>Output:</p> <pre><code>{\"one\":1,\"two\":2}\nnull\n{\"one\":1,\"three\":3,\"two\":2}\n3 true\n{\"A\":\"a\",\"B\":\"b\"}\n\"b\" false\n</code></pre>"},{"location":"api/basic_json/emplace/#see-also","title":"See also","text":"<ul> <li>emplace_back add a value to an array</li> <li>insert add values to an array/object</li> </ul>"},{"location":"api/basic_json/emplace/#version-history","title":"Version history","text":"<ul> <li>Since version 2.0.8.</li> </ul>"},{"location":"api/basic_json/emplace_back/","title":"nlohmann::basic_json::emplace_back","text":"<pre><code>template&lt;class... Args&gt;\nreference emplace_back(Args&amp;&amp; ... args);\n</code></pre> <p>Creates a JSON value from the passed parameters <code>args</code> to the end of the JSON value. If the function is called on a JSON <code>null</code> value, an empty array is created before appending the value created from <code>args</code>.</p>"},{"location":"api/basic_json/emplace_back/#template-parameters","title":"Template parameters","text":"<code>Args</code> compatible types to create a <code>basic_json</code> object"},{"location":"api/basic_json/emplace_back/#iterator-invalidation","title":"Iterator invalidation","text":"<p>By adding an element to the end of the array, a reallocation can happen, in which case all iterators (including the <code>end()</code> iterator) and all references to the elements are invalidated. Otherwise, only the <code>end()</code> iterator is invalidated.</p>"},{"location":"api/basic_json/emplace_back/#parameters","title":"Parameters","text":"<code>args</code> (in) arguments to forward to a constructor of <code>basic_json</code>"},{"location":"api/basic_json/emplace_back/#return-value","title":"Return value","text":"<p>reference to the inserted element</p>"},{"location":"api/basic_json/emplace_back/#exceptions","title":"Exceptions","text":"<p>Throws <code>type_error.311</code> when called on a type other than JSON array or <code>null</code>; example: <code>\"cannot use emplace_back() with number\"</code></p>"},{"location":"api/basic_json/emplace_back/#complexity","title":"Complexity","text":"<p>Amortized constant.</p>"},{"location":"api/basic_json/emplace_back/#examples","title":"Examples","text":"Example <p>The example shows how <code>emplace_back()</code> can be used to add elements to a JSON array. Note how the <code>null</code> value was silently converted to a JSON array.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create JSON values\n    json array = {1, 2, 3, 4, 5};\n    json null;\n\n    // print values\n    std::cout &lt;&lt; array &lt;&lt; '\\n';\n    std::cout &lt;&lt; null &lt;&lt; '\\n';\n\n    // add values\n    array.emplace_back(6);\n    null.emplace_back(\"first\");\n    null.emplace_back(3, \"second\");\n\n    // print values\n    std::cout &lt;&lt; array &lt;&lt; '\\n';\n    std::cout &lt;&lt; null &lt;&lt; '\\n';\n}\n</code></pre> <p>Output:</p> <pre><code>[1,2,3,4,5]\nnull\n[1,2,3,4,5,6]\n[\"first\",[\"second\",\"second\",\"second\"]]\n</code></pre>"},{"location":"api/basic_json/emplace_back/#see-also","title":"See also","text":"<ul> <li>operator+= add a value to an array/object</li> <li>push_back add a value to an array/object</li> </ul>"},{"location":"api/basic_json/emplace_back/#version-history","title":"Version history","text":"<ul> <li>Since version 2.0.8.</li> <li>Returns reference since 3.7.0.</li> </ul>"},{"location":"api/basic_json/empty/","title":"nlohmann::basic_json::empty","text":"<pre><code>bool empty() const noexcept;\n</code></pre> <p>Checks if a JSON value has no elements (i.e., whether its <code>size()</code> is <code>0</code>).</p>"},{"location":"api/basic_json/empty/#return-value","title":"Return value","text":"<p>The return value depends on the different types and is defined as follows:</p> Value type return value null <code>true</code> boolean <code>false</code> string <code>false</code> number <code>false</code> binary <code>false</code> object result of function <code>object_t::empty()</code> array result of function <code>array_t::empty()</code>"},{"location":"api/basic_json/empty/#exception-safety","title":"Exception safety","text":"<p>No-throw guarantee: this function never throws exceptions.</p>"},{"location":"api/basic_json/empty/#complexity","title":"Complexity","text":"<p>Constant, as long as <code>array_t</code> and <code>object_t</code> satisfy the Container concept; that is, their <code>empty()</code> functions have constant complexity.</p>"},{"location":"api/basic_json/empty/#possible-implementation","title":"Possible implementation","text":"<pre><code>bool empty() const noexcept\n{\n    return size() == 0;\n}\n</code></pre>"},{"location":"api/basic_json/empty/#notes","title":"Notes","text":"<p>This function does not return whether a string stored as JSON value is empty -- it returns whether the JSON container itself is empty which is <code>false</code> in the case of a string.</p>"},{"location":"api/basic_json/empty/#examples","title":"Examples","text":"Example <p>The following code uses <code>empty()</code> to check if a JSON object contains any elements.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create JSON values\n    json j_null;\n    json j_boolean = true;\n    json j_number_integer = 17;\n    json j_number_float = 23.42;\n    json j_object = {{\"one\", 1}, {\"two\", 2}};\n    json j_object_empty(json::value_t::object);\n    json j_array = {1, 2, 4, 8, 16};\n    json j_array_empty(json::value_t::array);\n    json j_string = \"Hello, world\";\n\n    // call empty()\n    std::cout &lt;&lt; std::boolalpha;\n    std::cout &lt;&lt; j_null.empty() &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_boolean.empty() &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_number_integer.empty() &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_number_float.empty() &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_object.empty() &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_object_empty.empty() &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_array.empty() &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_array_empty.empty() &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_string.empty() &lt;&lt; '\\n';\n}\n</code></pre> <p>Output:</p> <pre><code>true\nfalse\nfalse\nfalse\nfalse\ntrue\nfalse\ntrue\nfalse\n</code></pre>"},{"location":"api/basic_json/empty/#version-history","title":"Version history","text":"<ul> <li>Added in version 1.0.0.</li> <li>Extended to return <code>false</code> for binary types in version 3.8.0.</li> </ul>"},{"location":"api/basic_json/end/","title":"nlohmann::basic_json::end","text":"<pre><code>iterator end() noexcept;\nconst_iterator end() const noexcept;\n</code></pre> <p>Returns an iterator to one past the last element.</p> <p></p>"},{"location":"api/basic_json/end/#return-value","title":"Return value","text":"<p>iterator one past the last element</p>"},{"location":"api/basic_json/end/#exception-safety","title":"Exception safety","text":"<p>No-throw guarantee: this member function never throws exceptions.</p>"},{"location":"api/basic_json/end/#complexity","title":"Complexity","text":"<p>Constant.</p>"},{"location":"api/basic_json/end/#examples","title":"Examples","text":"Example <p>The following code shows an example for <code>end()</code>.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create an array value\n    json array = {1, 2, 3, 4, 5};\n\n    // get an iterator to one past the last element\n    json::iterator it = array.end();\n\n    // decrement the iterator to point to the last element\n    --it;\n\n    // serialize the element that the iterator points to\n    std::cout &lt;&lt; *it &lt;&lt; '\\n';\n}\n</code></pre> <p>Output:</p> <pre><code>5\n</code></pre>"},{"location":"api/basic_json/end/#version-history","title":"Version history","text":"<ul> <li>Added in version 1.0.0.</li> </ul>"},{"location":"api/basic_json/end_pos/","title":"nlohmann::basic_json::end_pos","text":"<pre><code>#if JSON_DIAGNOSTIC_POSITIONS\nconstexpr std::size_t end_pos() const noexcept;\n#endif\n</code></pre> <p>Returns the position immediately following the last character of the JSON string from which the value was parsed from.</p> JSON type return value object position after the closing <code>}</code> array position after the closing <code>]</code> string position after the closing <code>\"</code> number position after the last character boolean position after <code>e</code> null position after <code>l</code>"},{"location":"api/basic_json/end_pos/#return-value","title":"Return value","text":"<p>the position of the character following the last character of the given value in the parsed JSON string, if the value was created by the <code>parse</code> function, or <code>std::string::npos</code> if the value was constructed otherwise</p>"},{"location":"api/basic_json/end_pos/#exception-safety","title":"Exception safety","text":"<p>No-throw guarantee: this member function never throws exceptions.</p>"},{"location":"api/basic_json/end_pos/#complexity","title":"Complexity","text":"<p>Constant.</p>"},{"location":"api/basic_json/end_pos/#notes","title":"Notes","text":"<p>Note</p> <p>The function is only available if macro <code>JSON_DIAGNOSTIC_POSITIONS</code> has been defined to <code>1</code> before including the library header.</p> <p>Invalidation</p> <p>The returned positions are only valid as long as the JSON value is not changed. The positions are not updated when the JSON value is changed.</p>"},{"location":"api/basic_json/end_pos/#examples","title":"Examples","text":"Example <pre><code>#include &lt;iostream&gt;\n\n#define JSON_DIAGNOSTIC_POSITIONS 1\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    std::string json_string = R\"(\n    {\n        \"address\": {\n            \"street\": \"Fake Street\",\n            \"housenumber\": 1\n        }\n    }\n    )\";\n    json j = json::parse(json_string);\n\n    std::cout &lt;&lt; \"Root diagnostic positions: \\n\";\n    std::cout &lt;&lt; \"\\tstart_pos: \" &lt;&lt; j.start_pos() &lt;&lt; '\\n';\n    std::cout &lt;&lt; \"\\tend_pos:\" &lt;&lt; j.end_pos() &lt;&lt; \"\\n\";\n    std::cout &lt;&lt; \"Original string: \\n\";\n    std::cout &lt;&lt; \"{\\n        \\\"address\\\": {\\n            \\\"street\\\": \\\"Fake Street\\\",\\n            \\\"housenumber\\\": 1\\n        }\\n    }\" &lt;&lt; \"\\n\";\n    std::cout &lt;&lt; \"Parsed string: \\n\";\n    std::cout &lt;&lt; json_string.substr(j.start_pos(), j.end_pos() - j.start_pos()) &lt;&lt; \"\\n\\n\";\n\n    std::cout &lt;&lt; \"address diagnostic positions: \\n\";\n    std::cout &lt;&lt; \"\\tstart_pos:\" &lt;&lt; j[\"address\"].start_pos() &lt;&lt; '\\n';\n    std::cout &lt;&lt; \"\\tend_pos:\" &lt;&lt; j[\"address\"].end_pos() &lt;&lt; \"\\n\\n\";\n    std::cout &lt;&lt; \"Original string: \\n\";\n    std::cout &lt;&lt; \"{            \\\"street\\\": \\\"Fake Street\\\",\\n            \\\"housenumber\\\": 1\\n        }\" &lt;&lt; \"\\n\";\n    std::cout &lt;&lt; \"Parsed string: \\n\";\n    std::cout &lt;&lt; json_string.substr(j[\"address\"].start_pos(), j[\"address\"].end_pos() - j[\"address\"].start_pos()) &lt;&lt; \"\\n\\n\";\n\n    std::cout &lt;&lt; \"street diagnostic positions: \\n\";\n    std::cout &lt;&lt; \"\\tstart_pos:\" &lt;&lt; j[\"address\"][\"street\"].start_pos() &lt;&lt; '\\n';\n    std::cout &lt;&lt; \"\\tend_pos:\" &lt;&lt; j[\"address\"][\"street\"].end_pos() &lt;&lt; \"\\n\\n\";\n    std::cout &lt;&lt; \"Original string: \\n\";\n    std::cout &lt;&lt; \"\\\"Fake Street\\\"\" &lt;&lt; \"\\n\";\n    std::cout &lt;&lt; \"Parsed string: \\n\";\n    std::cout &lt;&lt; json_string.substr(j[\"address\"][\"street\"].start_pos(), j[\"address\"][\"street\"].end_pos() - j[\"address\"][\"street\"].start_pos()) &lt;&lt; \"\\n\\n\";\n\n    std::cout &lt;&lt; \"housenumber diagnostic positions: \\n\";\n    std::cout &lt;&lt; \"\\tstart_pos:\" &lt;&lt; j[\"address\"][\"housenumber\"].start_pos() &lt;&lt; '\\n';\n    std::cout &lt;&lt; \"\\tend_pos:\" &lt;&lt; j[\"address\"][\"housenumber\"].end_pos() &lt;&lt; \"\\n\\n\";\n    std::cout &lt;&lt; \"Original string: \\n\";\n    std::cout &lt;&lt; \"1\" &lt;&lt; \"\\n\";\n    std::cout &lt;&lt; \"Parsed string: \\n\";\n    std::cout &lt;&lt; json_string.substr(j[\"address\"][\"housenumber\"].start_pos(), j[\"address\"][\"housenumber\"].end_pos() - j[\"address\"][\"housenumber\"].start_pos()) &lt;&lt; \"\\n\\n\";\n}\n</code></pre> <p>Output:</p> <pre><code>Root diagnostic positions: \n    start_pos: 5\n    end_pos:109\nOriginal string: \n{\n        \"address\": {\n            \"street\": \"Fake Street\",\n            \"housenumber\": 1\n        }\n    }\nParsed string: \n{\n        \"address\": {\n            \"street\": \"Fake Street\",\n            \"housenumber\": 1\n        }\n    }\n\naddress diagnostic positions: \n    start_pos:26\n    end_pos:103\n\nOriginal string: \n{            \"street\": \"Fake Street\",\n            \"housenumber\": 1\n        }\nParsed string: \n{\n            \"street\": \"Fake Street\",\n            \"housenumber\": 1\n        }\n\nstreet diagnostic positions: \n    start_pos:50\n    end_pos:63\n\nOriginal string: \n\"Fake Street\"\nParsed string: \n\"Fake Street\"\n\nhousenumber diagnostic positions: \n    start_pos:92\n    end_pos:93\n\nOriginal string: \n1\nParsed string: \n1\n</code></pre> <p>The output shows the start/end positions of all the objects and fields in the JSON string.</p>"},{"location":"api/basic_json/end_pos/#see-also","title":"See also","text":"<ul> <li>start_pos to access the start position</li> <li>JSON_DIAGNOSTIC_POSITIONS for an overview of the diagnostic positions</li> </ul>"},{"location":"api/basic_json/end_pos/#version-history","title":"Version history","text":"<ul> <li>Added in version 3.12.0.</li> </ul>"},{"location":"api/basic_json/erase/","title":"nlohmann::basic_json::erase","text":"<pre><code>// (1)\niterator erase(iterator pos);\nconst_iterator erase(const_iterator pos);\n\n// (2)\niterator erase(iterator first, iterator last);\nconst_iterator erase(const_iterator first, const_iterator last);\n\n// (3)\nsize_type erase(const typename object_t::key_type&amp; key);\n\n// (4)\ntemplate&lt;typename KeyType&gt;\nsize_type erase(KeyType&amp;&amp; key);\n\n// (5)\nvoid erase(const size_type idx);\n</code></pre> <ol> <li> <p>Removes an element from a JSON value specified by iterator <code>pos</code>. The iterator <code>pos</code> must be valid and    dereferenceable. Thus, the <code>end()</code> iterator (which is valid, but is not dereferenceable) cannot be used as a value for    <code>pos</code>.</p> <p>If called on a primitive type other than <code>null</code>, the resulting JSON value will be <code>null</code>.</p> </li> <li> <p>Remove an element range specified by <code>[first; last)</code> from a JSON value. The iterator <code>first</code> does not need to be    dereferenceable if <code>first == last</code>: erasing an empty range is a no-op.</p> <p>If called on a primitive type other than <code>null</code>, the resulting JSON value will be <code>null</code>.</p> </li> <li> <p>Removes an element from a JSON object by key.</p> </li> <li> <p>See 3. This overload is only available if <code>KeyType</code> is comparable with <code>typename object_t::key_type</code> and    <code>typename object_comparator_t::is_transparent</code> denotes a type.</p> </li> <li> <p>Removes an element from a JSON array by index.</p> </li> </ol>"},{"location":"api/basic_json/erase/#template-parameters","title":"Template parameters","text":"<code>KeyType</code> A type for an object key other than <code>json_pointer</code> that is comparable with <code>string_t</code> using  <code>object_comparator_t</code>. This can also be a string view (C++17)."},{"location":"api/basic_json/erase/#parameters","title":"Parameters","text":"<code>pos</code> (in) iterator to the element to remove <code>first</code> (in) iterator to the beginning of the range to remove <code>last</code> (in) iterator past the end of the range to remove <code>key</code> (in) object key of the elements to remove <code>idx</code> (in) array index of the element to remove"},{"location":"api/basic_json/erase/#return-value","title":"Return value","text":"<ol> <li>Iterator following the last removed element. If the iterator <code>pos</code> refers to the last element, the <code>end()</code> iterator    is returned.</li> <li>Iterator following the last removed element. If the iterator <code>last</code> refers to the last element, the <code>end()</code> iterator    is returned.</li> <li>Number of elements removed. If <code>ObjectType</code> is the default <code>std::map</code> type, the return value will always be <code>0</code>    (<code>key</code> was not found) or <code>1</code> (<code>key</code> was found).</li> <li>See 3.</li> <li>(none)</li> </ol>"},{"location":"api/basic_json/erase/#exception-safety","title":"Exception safety","text":"<p>Strong exception safety: if an exception occurs, the original value stays intact.</p>"},{"location":"api/basic_json/erase/#exceptions","title":"Exceptions","text":"<ol> <li>The function can throw the following exceptions:<ul> <li>Throws <code>type_error.307</code> if called on a <code>null</code> value;   example: <code>\"cannot use erase() with null\"</code></li> <li>Throws <code>invalid_iterator.202</code> if called on an   iterator which does not belong to the current JSON value; example: <code>\"iterator does not fit current value\"</code></li> <li>Throws <code>invalid_iterator.205</code> if called on a   primitive type with invalid iterator (i.e., any iterator which is not <code>begin()</code>); example: <code>\"iterator out of   range\"</code></li> </ul> </li> <li>The function can throw the following exceptions:<ul> <li>Throws <code>type_error.307</code> if called on a <code>null</code> value;   example: <code>\"cannot use erase() with null\"</code></li> <li>Throws <code>invalid_iterator.203</code> if called on iterators   which does not belong to the current JSON value; example: <code>\"iterators do not fit current value\"</code></li> <li>Throws <code>invalid_iterator.204</code> if called on a   primitive type with invalid iterators (i.e., if <code>first != begin()</code> and <code>last != end()</code>); example: <code>\"iterators out   of range\"</code></li> </ul> </li> <li>The function can throw the following exceptions:<ul> <li>Throws <code>type_error.307</code> when called on a type other than   JSON object; example: <code>\"cannot use erase() with null\"</code></li> </ul> </li> <li>See 3.</li> <li>The function can throw the following exceptions:<ul> <li>Throws <code>type_error.307</code> when called on a type other than   JSON array; example: <code>\"cannot use erase() with null\"</code></li> <li>Throws <code>out_of_range.401</code> when <code>idx &gt;= size()</code>; example:   <code>\"array index 17 is out of range\"</code></li> </ul> </li> </ol>"},{"location":"api/basic_json/erase/#complexity","title":"Complexity","text":"<ol> <li>The complexity depends on the type:<ul> <li>objects: amortized constant</li> <li>arrays: linear in distance between <code>pos</code> and the end of the container</li> <li>strings and binary: linear in the length of the member</li> <li>other types: constant</li> </ul> </li> <li>The complexity depends on the type:<ul> <li>objects: <code>log(size()) + std::distance(first, last)</code></li> <li>arrays: linear in the distance between <code>first</code> and <code>last</code>, plus linear      in the distance between <code>last</code> and end of the container</li> <li>strings and binary: linear in the length of the member</li> <li>other types: constant</li> </ul> </li> <li><code>log(size()) + count(key)</code></li> <li><code>log(size()) + count(key)</code></li> <li>Linear in distance between <code>idx</code> and the end of the container.</li> </ol>"},{"location":"api/basic_json/erase/#notes","title":"Notes","text":"<ol> <li>Invalidates iterators and references at or after the point of the <code>erase</code>, including the <code>end()</code> iterator.</li> <li>(none)</li> <li>References and iterators to the erased elements are invalidated. Other references and iterators are not affected.</li> <li>See 3.</li> <li>(none)</li> </ol>"},{"location":"api/basic_json/erase/#examples","title":"Examples","text":"Example: (1) remove element given an iterator <p>The example shows the effect of <code>erase()</code> for different JSON types using an iterator.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create JSON values\n    json j_boolean = true;\n    json j_number_integer = 17;\n    json j_number_float = 23.42;\n    json j_object = {{\"one\", 1}, {\"two\", 2}};\n    json j_array = {1, 2, 4, 8, 16};\n    json j_string = \"Hello, world\";\n\n    // call erase()\n    j_boolean.erase(j_boolean.begin());\n    j_number_integer.erase(j_number_integer.begin());\n    j_number_float.erase(j_number_float.begin());\n    j_object.erase(j_object.find(\"two\"));\n    j_array.erase(j_array.begin() + 2);\n    j_string.erase(j_string.begin());\n\n    // print values\n    std::cout &lt;&lt; j_boolean &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_number_integer &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_number_float &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_object &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_array &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_string &lt;&lt; '\\n';\n}\n</code></pre> <p>Output:</p> <pre><code>null\nnull\nnull\n{\"one\":1}\n[1,2,8,16]\nnull\n</code></pre> Example: (2) remove elements given an iterator range <p>The example shows the effect of <code>erase()</code> for different JSON types using an iterator range.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create JSON values\n    json j_boolean = true;\n    json j_number_integer = 17;\n    json j_number_float = 23.42;\n    json j_object = {{\"one\", 1}, {\"two\", 2}};\n    json j_array = {1, 2, 4, 8, 16};\n    json j_string = \"Hello, world\";\n\n    // call erase()\n    j_boolean.erase(j_boolean.begin(), j_boolean.end());\n    j_number_integer.erase(j_number_integer.begin(), j_number_integer.end());\n    j_number_float.erase(j_number_float.begin(), j_number_float.end());\n    j_object.erase(j_object.find(\"two\"), j_object.end());\n    j_array.erase(j_array.begin() + 1, j_array.begin() + 3);\n    j_string.erase(j_string.begin(), j_string.end());\n\n    // print values\n    std::cout &lt;&lt; j_boolean &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_number_integer &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_number_float &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_object &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_array &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_string &lt;&lt; '\\n';\n}\n</code></pre> <p>Output:</p> <pre><code>null\nnull\nnull\n{\"one\":1}\n[1,8,16]\nnull\n</code></pre> Example: (3) remove element from a JSON object given a key <p>The example shows the effect of <code>erase()</code> for different JSON types using an object key.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create a JSON object\n    json j_object = {{\"one\", 1}, {\"two\", 2}};\n\n    // call erase()\n    auto count_one = j_object.erase(\"one\");\n    auto count_three = j_object.erase(\"three\");\n\n    // print values\n    std::cout &lt;&lt; j_object &lt;&lt; '\\n';\n    std::cout &lt;&lt; count_one &lt;&lt; \" \" &lt;&lt; count_three &lt;&lt; '\\n';\n}\n</code></pre> <p>Output:</p> <pre><code>{\"two\":2}\n1 0\n</code></pre> Example: (4) remove element from a JSON object given a key using string_view <p>The example shows the effect of <code>erase()</code> for different JSON types using an object key.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;string_view&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing namespace std::string_view_literals;\nusing json = nlohmann::json;\n\nint main()\n{\n    // create a JSON object\n    json j_object = {{\"one\", 1}, {\"two\", 2}};\n\n    // call erase()\n    auto count_one = j_object.erase(\"one\"sv);\n    auto count_three = j_object.erase(\"three\"sv);\n\n    // print values\n    std::cout &lt;&lt; j_object &lt;&lt; '\\n';\n    std::cout &lt;&lt; count_one &lt;&lt; \" \" &lt;&lt; count_three &lt;&lt; '\\n';\n}\n</code></pre> <p>Output:</p> <pre><code>{\"two\":2}\n1 0\n</code></pre> Example: (5) remove element from a JSON array given an index <p>The example shows the effect of <code>erase()</code> using an array index.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create a JSON array\n    json j_array = {0, 1, 2, 3, 4, 5};\n\n    // call erase()\n    j_array.erase(2);\n\n    // print values\n    std::cout &lt;&lt; j_array &lt;&lt; '\\n';\n}\n</code></pre> <p>Output:</p> <pre><code>[0,1,3,4,5]\n</code></pre>"},{"location":"api/basic_json/erase/#see-also","title":"See also","text":"<ul> <li>clear clears the contents</li> <li>insert add values to an array/object</li> </ul>"},{"location":"api/basic_json/erase/#version-history","title":"Version history","text":"<ol> <li>Added in version 1.0.0. Added support for binary types in version 3.8.0.</li> <li>Added in version 1.0.0. Added support for binary types in version 3.8.0.</li> <li>Added in version 1.0.0.</li> <li>Added in version 3.11.0.</li> <li>Added in version 1.0.0.</li> </ol>"},{"location":"api/basic_json/error_handler_t/","title":"nlohmann::basic_json::error_handler_t","text":"<pre><code>enum class error_handler_t {\n    strict,\n    replace,\n    ignore\n};\n</code></pre> <p>This enumeration is used in the <code>dump</code> function to choose how to treat decoding errors while serializing a <code>basic_json</code> value. Three values are differentiated:</p> strict throw a <code>type_error</code> exception in case of invalid UTF-8 replace replace invalid UTF-8 sequences with U+FFFD (\ufffd REPLACEMENT CHARACTER) ignore ignore invalid UTF-8 sequences; all bytes are copied to the output unchanged"},{"location":"api/basic_json/error_handler_t/#examples","title":"Examples","text":"Example <p>The example below shows how the different values of the <code>error_handler_t</code> influence the behavior of <code>dump</code> when reading serializing an invalid UTF-8 sequence.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create JSON value with invalid UTF-8 byte sequence\n    json j_invalid = \"\u00e4\\xA9\u00fc\";\n    try\n    {\n        std::cout &lt;&lt; j_invalid.dump() &lt;&lt; std::endl;\n    }\n    catch (const json::type_error&amp; e)\n    {\n        std::cout &lt;&lt; e.what() &lt;&lt; std::endl;\n    }\n\n    std::cout &lt;&lt; \"string with replaced invalid characters: \"\n              &lt;&lt; j_invalid.dump(-1, ' ', false, json::error_handler_t::replace)\n              &lt;&lt; \"\\nstring with ignored invalid characters: \"\n              &lt;&lt; j_invalid.dump(-1, ' ', false, json::error_handler_t::ignore)\n              &lt;&lt; '\\n';\n}\n</code></pre> <p>Output:</p> <pre><code>[json.exception.type_error.316] invalid UTF-8 byte at index 2: 0xA9\nstring with replaced invalid characters: \"\u00e4\ufffd\u00fc\"\nstring with ignored invalid characters: \"\u00e4\u00fc\"\n</code></pre>"},{"location":"api/basic_json/error_handler_t/#version-history","title":"Version history","text":"<ul> <li>Added in version 3.4.0.</li> </ul>"},{"location":"api/basic_json/exception/","title":"nlohmann::basic_json::exception","text":"<pre><code>class exception : public std::exception;\n</code></pre> <p>This class is an extension of <code>std::exception</code> objects with a member <code>id</code> for exception ids. It is used as the base class for all exceptions thrown by the <code>basic_json</code> class. This class can hence be used as \"wildcard\" to catch exceptions, see example below.</p> <pre><code>classDiagram\n  direction LR\n\n    class std_exception [\"std::exception\"] {\n        &lt;&lt;interface&gt;&gt;\n    }\n\n    class json_exception [\"basic_json::exception\"] {\n        +const int id\n        +const char* what() const\n    }\n\n    class json_parse_error [\"basic_json::parse_error\"] {\n        +const std::size_t byte\n    }\n\n    class json_invalid_iterator [\"basic_json::invalid_iterator\"]\n    class json_type_error [\"basic_json::type_error\"]\n    class json_out_of_range [\"basic_json::out_of_range\"]\n    class json_other_error [\"basic_json::other_error\"]\n\n    std_exception &lt;|-- json_exception\n    json_exception &lt;|-- json_parse_error\n    json_exception &lt;|-- json_invalid_iterator\n    json_exception &lt;|-- json_type_error\n    json_exception &lt;|-- json_out_of_range\n    json_exception &lt;|-- json_other_error\n\n    style json_exception fill:#CCCCFF</code></pre> <p>Subclasses:</p> <ul> <li><code>parse_error</code> for exceptions indicating a parse error</li> <li><code>invalid_iterator</code> for exceptions indicating errors with iterators</li> <li><code>type_error</code> for exceptions indicating executing a member function with a wrong type</li> <li><code>out_of_range</code> for exceptions indicating access out of the defined range</li> <li><code>other_error</code> for exceptions indicating other library errors</li> </ul>"},{"location":"api/basic_json/exception/#member-functions","title":"Member functions","text":"<ul> <li>what - returns explanatory string</li> </ul>"},{"location":"api/basic_json/exception/#member-variables","title":"Member variables","text":"<ul> <li>id - the id of the exception</li> </ul>"},{"location":"api/basic_json/exception/#notes","title":"Notes","text":"<p>To have nothrow-copy-constructible exceptions, we internally use <code>std::runtime_error</code> which can cope with arbitrary-length error messages. Intermediate strings are built with static functions and then passed to the actual constructor.</p>"},{"location":"api/basic_json/exception/#examples","title":"Examples","text":"Example <p>The following code shows how arbitrary library exceptions can be caught.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    try\n    {\n        // calling at() for a non-existing key\n        json j = {{\"foo\", \"bar\"}};\n        json k = j.at(\"non-existing\");\n    }\n    catch (const json::exception&amp; e)\n    {\n        // output exception information\n        std::cout &lt;&lt; \"message: \" &lt;&lt; e.what() &lt;&lt; '\\n'\n                  &lt;&lt; \"exception id: \" &lt;&lt; e.id &lt;&lt; std::endl;\n    }\n}\n</code></pre> <p>Output:</p> <pre><code>message: [json.exception.out_of_range.403] key 'non-existing' not found\nexception id: 403\n</code></pre>"},{"location":"api/basic_json/exception/#see-also","title":"See also","text":"<p>List of exceptions</p>"},{"location":"api/basic_json/exception/#version-history","title":"Version history","text":"<ul> <li>Since version 3.0.0.</li> </ul>"},{"location":"api/basic_json/find/","title":"nlohmann::basic_json::find","text":"<pre><code>// (1)\niterator find(const typename object_t::key_type&amp; key);\nconst_iterator find(const typename object_t::key_type&amp; key) const;\n\n// (2)\ntemplate&lt;typename KeyType&gt;\niterator find(KeyType&amp;&amp; key);\ntemplate&lt;typename KeyType&gt;\nconst_iterator find(KeyType&amp;&amp; key) const;\n</code></pre> <ol> <li>Finds an element in a JSON object with a key equivalent to <code>key</code>. If the element is not found or the    JSON value is not an object, <code>end()</code> is returned.</li> <li>See 1. This overload is only available if <code>KeyType</code> is comparable with <code>typename object_t::key_type</code> and    <code>typename object_comparator_t::is_transparent</code> denotes a type.</li> </ol>"},{"location":"api/basic_json/find/#template-parameters","title":"Template parameters","text":"<code>KeyType</code> A type for an object key other than <code>json_pointer</code> that is comparable with <code>string_t</code> using  <code>object_comparator_t</code>. This can also be a string view (C++17)."},{"location":"api/basic_json/find/#parameters","title":"Parameters","text":"<code>key</code> (in) key value of the element to search for."},{"location":"api/basic_json/find/#return-value","title":"Return value","text":"<p>Iterator to an element with a key equivalent to <code>key</code>. If no such element is found or the JSON value is not an object, a past-the-end iterator (see <code>end()</code>) is returned.</p>"},{"location":"api/basic_json/find/#exception-safety","title":"Exception safety","text":"<p>Strong exception safety: if an exception occurs, the original value stays intact.</p>"},{"location":"api/basic_json/find/#complexity","title":"Complexity","text":"<p>Logarithmic in the size of the JSON object.</p>"},{"location":"api/basic_json/find/#notes","title":"Notes","text":"<p>This method always returns <code>end()</code> when executed on a JSON type that is not an object.</p>"},{"location":"api/basic_json/find/#examples","title":"Examples","text":"Example: (1) find object element by key <p>The example shows how <code>find()</code> is used.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create a JSON object\n    json j_object = {{\"one\", 1}, {\"two\", 2}};\n\n    // call find\n    auto it_two = j_object.find(\"two\");\n    auto it_three = j_object.find(\"three\");\n\n    // print values\n    std::cout &lt;&lt; std::boolalpha;\n    std::cout &lt;&lt; \"\\\"two\\\" was found: \" &lt;&lt; (it_two != j_object.end()) &lt;&lt; '\\n';\n    std::cout &lt;&lt; \"value at key \\\"two\\\": \" &lt;&lt; *it_two &lt;&lt; '\\n';\n    std::cout &lt;&lt; \"\\\"three\\\" was found: \" &lt;&lt; (it_three != j_object.end()) &lt;&lt; '\\n';\n}\n</code></pre> <p>Output:</p> <pre><code>\"two\" was found: true\nvalue at key \"two\": 2\n\"three\" was found: false\n</code></pre> Example: (2) find object element by key using string_view <p>The example shows how <code>find()</code> is used.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;string_view&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing namespace std::string_view_literals;\nusing json = nlohmann::json;\n\nint main()\n{\n    // create a JSON object\n    json j_object = {{\"one\", 1}, {\"two\", 2}};\n\n    // call find\n    auto it_two = j_object.find(\"two\"sv);\n    auto it_three = j_object.find(\"three\"sv);\n\n    // print values\n    std::cout &lt;&lt; std::boolalpha;\n    std::cout &lt;&lt; \"\\\"two\\\" was found: \" &lt;&lt; (it_two != j_object.end()) &lt;&lt; '\\n';\n    std::cout &lt;&lt; \"value at key \\\"two\\\": \" &lt;&lt; *it_two &lt;&lt; '\\n';\n    std::cout &lt;&lt; \"\\\"three\\\" was found: \" &lt;&lt; (it_three != j_object.end()) &lt;&lt; '\\n';\n}\n</code></pre> <p>Output:</p> <pre><code>\"two\" was found: true\nvalue at key \"two\": 2\n\"three\" was found: false\n</code></pre>"},{"location":"api/basic_json/find/#see-also","title":"See also","text":"<ul> <li>count returns the number of occurrences of a key</li> <li>contains checks whether a key exists</li> </ul>"},{"location":"api/basic_json/find/#version-history","title":"Version history","text":"<ol> <li>Added in version 3.11.0.</li> <li>Added in version 1.0.0. Changed to support comparable types in version 3.11.0.</li> </ol>"},{"location":"api/basic_json/flatten/","title":"nlohmann::basic_json::flatten","text":"<pre><code>basic_json flatten() const;\n</code></pre> <p>The function creates a JSON object whose keys are JSON pointers (see RFC 6901) and whose values are all primitive (see <code>is_primitive()</code> for more information). The original JSON value can be restored using the <code>unflatten()</code> function.</p>"},{"location":"api/basic_json/flatten/#return-value","title":"Return value","text":"<p>an object that maps JSON pointers to primitive values</p>"},{"location":"api/basic_json/flatten/#exception-safety","title":"Exception safety","text":"<p>Strong exception safety: if an exception occurs, the original value stays intact.</p>"},{"location":"api/basic_json/flatten/#complexity","title":"Complexity","text":"<p>Linear in the size of the JSON value.</p>"},{"location":"api/basic_json/flatten/#notes","title":"Notes","text":"<p>Empty objects and arrays are flattened to <code>null</code> and will not be reconstructed correctly by the <code>unflatten()</code> function.</p>"},{"location":"api/basic_json/flatten/#examples","title":"Examples","text":"Example <p>The following code shows how a JSON object is flattened to an object whose keys consist of JSON pointers.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;iomanip&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create JSON value\n    json j =\n    {\n        {\"pi\", 3.141},\n        {\"happy\", true},\n        {\"name\", \"Niels\"},\n        {\"nothing\", nullptr},\n        {\n            \"answer\", {\n                {\"everything\", 42}\n            }\n        },\n        {\"list\", {1, 0, 2}},\n        {\n            \"object\", {\n                {\"currency\", \"USD\"},\n                {\"value\", 42.99}\n            }\n        }\n    };\n\n    // call flatten()\n    std::cout &lt;&lt; std::setw(4) &lt;&lt; j.flatten() &lt;&lt; '\\n';\n}\n</code></pre> <p>Output:</p> <pre><code>{\n    \"/answer/everything\": 42,\n    \"/happy\": true,\n    \"/list/0\": 1,\n    \"/list/1\": 0,\n    \"/list/2\": 2,\n    \"/name\": \"Niels\",\n    \"/nothing\": null,\n    \"/object/currency\": \"USD\",\n    \"/object/value\": 42.99,\n    \"/pi\": 3.141\n}\n</code></pre>"},{"location":"api/basic_json/flatten/#see-also","title":"See also","text":"<ul> <li>unflatten the reverse function</li> </ul>"},{"location":"api/basic_json/flatten/#version-history","title":"Version history","text":"<ul> <li>Added in version 2.0.0.</li> </ul>"},{"location":"api/basic_json/from_bjdata/","title":"nlohmann::basic_json::from_bjdata","text":"<pre><code>// (1)\ntemplate&lt;typename InputType&gt;\nstatic basic_json from_bjdata(InputType&amp;&amp; i,\n                              const bool strict = true,\n                              const bool allow_exceptions = true);\n// (2)\ntemplate&lt;typename IteratorType&gt;\nstatic basic_json from_bjdata(IteratorType first, IteratorType last,\n                              const bool strict = true,\n                              const bool allow_exceptions = true);\n</code></pre> <p>Deserializes a given input to a JSON value using the BJData (Binary JData) serialization format.</p> <ol> <li>Reads from a compatible input.</li> <li>Reads from an iterator range.</li> </ol> <p>The exact mapping and its limitations are described on a dedicated page.</p>"},{"location":"api/basic_json/from_bjdata/#template-parameters","title":"Template parameters","text":"<code>InputType</code> <p>A compatible input, for instance:</p> <ul> <li>an <code>std::istream</code> object</li> <li>a <code>FILE</code> pointer</li> <li>a C-style array of characters</li> <li>a pointer to a null-terminated string of single byte characters</li> <li>an object <code>obj</code> for which <code>begin(obj)</code> and <code>end(obj)</code> produces a valid pair of iterators.</li> </ul> <code>IteratorType</code> a compatible iterator type"},{"location":"api/basic_json/from_bjdata/#parameters","title":"Parameters","text":"<code>i</code> (in) an input in BJData format convertible to an input adapter <code>first</code> (in) iterator to the start of the input <code>last</code> (in) iterator to the end of the input <code>strict</code> (in) whether to expect the input to be consumed until EOF (<code>true</code> by default) <code>allow_exceptions</code> (in) whether to throw exceptions in case of a parse error (optional, <code>true</code> by default)"},{"location":"api/basic_json/from_bjdata/#return-value","title":"Return value","text":"<p>deserialized JSON value; in case of a parse error and <code>allow_exceptions</code> set to <code>false</code>, the return value will be <code>value_t::discarded</code>. The latter can be checked with <code>is_discarded</code>.</p>"},{"location":"api/basic_json/from_bjdata/#exception-safety","title":"Exception safety","text":"<p>Strong guarantee: if an exception is thrown, there are no changes in the JSON value.</p>"},{"location":"api/basic_json/from_bjdata/#exceptions","title":"Exceptions","text":"<ul> <li>Throws parse_error.110 if the given input ends prematurely or   the end of the file was not reached when <code>strict</code> was set to true</li> <li>Throws parse_error.112 if a parse error occurs</li> <li>Throws parse_error.113 if a string could not be parsed   successfully</li> <li>Throws out_of_range.408 if the size of an optimized container   or n-dimensional array cannot be represented by <code>std::size_t</code></li> </ul>"},{"location":"api/basic_json/from_bjdata/#complexity","title":"Complexity","text":"<p>Linear in the size of the input.</p>"},{"location":"api/basic_json/from_bjdata/#examples","title":"Examples","text":"Example <p>The example shows the deserialization of a byte vector in BJData format to a JSON value.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;iomanip&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create byte vector\n    std::vector&lt;std::uint8_t&gt; v = {0x7B, 0x69, 0x07, 0x63, 0x6F, 0x6D, 0x70, 0x61,\n                                   0x63, 0x74, 0x54, 0x69, 0x06, 0x73, 0x63, 0x68,\n                                   0x65, 0x6D, 0x61, 0x69, 0x00, 0x7D\n                                  };\n\n    // deserialize it with BJData\n    json j = json::from_bjdata(v);\n\n    // print the deserialized JSON value\n    std::cout &lt;&lt; std::setw(2) &lt;&lt; j &lt;&lt; std::endl;\n}\n</code></pre> <p>Output:</p> <pre><code>{\n  \"compact\": true,\n  \"schema\": 0\n}\n</code></pre>"},{"location":"api/basic_json/from_bjdata/#see-also","title":"See also","text":"<ul> <li>to_bjdata create a BJData serialization of a JSON value</li> <li>from_cbor create a JSON value from an input in CBOR format</li> <li>from_msgpack create a JSON value from an input in MessagePack format</li> <li>from_bson create a JSON value from an input in BSON format</li> <li>from_ubjson create a JSON value from an input in UBJSON format</li> </ul>"},{"location":"api/basic_json/from_bjdata/#version-history","title":"Version history","text":"<ul> <li>Added in version 3.11.0.</li> </ul>"},{"location":"api/basic_json/from_bson/","title":"nlohmann::basic_json::from_bson","text":"<pre><code>// (1)\ntemplate&lt;typename InputType&gt;\nstatic basic_json from_bson(InputType&amp;&amp; i,\n                            const bool strict = true,\n                            const bool allow_exceptions = true);\n// (2)\ntemplate&lt;typename IteratorType&gt;\nstatic basic_json from_bson(IteratorType first, IteratorType last,\n                            const bool strict = true,\n                            const bool allow_exceptions = true);\n</code></pre> <p>Deserializes a given input to a JSON value using the BSON (Binary JSON) serialization format.</p> <ol> <li>Reads from a compatible input.</li> <li>Reads from an iterator range.</li> </ol> <p>The exact mapping and its limitations are described on a dedicated page.</p>"},{"location":"api/basic_json/from_bson/#template-parameters","title":"Template parameters","text":"<code>InputType</code> <p>A compatible input, for instance:</p> <ul> <li>an <code>std::istream</code> object</li> <li>a <code>FILE</code> pointer</li> <li>a C-style array of characters</li> <li>a pointer to a null-terminated string of single byte characters</li> <li>an object <code>obj</code> for which <code>begin(obj)</code> and <code>end(obj)</code> produces a valid pair of iterators.</li> </ul> <code>IteratorType</code> a compatible iterator type"},{"location":"api/basic_json/from_bson/#parameters","title":"Parameters","text":"<code>i</code> (in) an input in BSON format convertible to an input adapter <code>first</code> (in) iterator to the start of the input <code>last</code> (in) iterator to the end of the input <code>strict</code> (in) whether to expect the input to be consumed until EOF (<code>true</code> by default) <code>allow_exceptions</code> (in) whether to throw exceptions in case of a parse error (optional, <code>true</code> by default)"},{"location":"api/basic_json/from_bson/#return-value","title":"Return value","text":"<p>deserialized JSON value; in case of a parse error and <code>allow_exceptions</code> set to <code>false</code>, the return value will be <code>value_t::discarded</code>.  The latter can be checked with <code>is_discarded</code>.</p>"},{"location":"api/basic_json/from_bson/#exception-safety","title":"Exception safety","text":"<p>Strong guarantee: if an exception is thrown, there are no changes in the JSON value.</p>"},{"location":"api/basic_json/from_bson/#exceptions","title":"Exceptions","text":"<ul> <li>Throws <code>parse_error.110</code> if the given input ends prematurely or   the end of the input was not reached when <code>strict</code> was set to true</li> <li>Throws <code>parse_error.112</code> if a parse error occurs (e.g., an   invalid string or byte array length)</li> <li>Throws <code>parse_error.114</code> if an unsupported BSON record type is   encountered</li> </ul>"},{"location":"api/basic_json/from_bson/#complexity","title":"Complexity","text":"<p>Linear in the size of the input.</p>"},{"location":"api/basic_json/from_bson/#examples","title":"Examples","text":"Example <p>The example shows the deserialization of a byte vector in BSON format to a JSON value.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;iomanip&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create byte vector\n    std::vector&lt;std::uint8_t&gt; v = {0x1b, 0x00, 0x00, 0x00, 0x08, 0x63, 0x6f, 0x6d,\n                                   0x70, 0x61, 0x63, 0x74, 0x00, 0x01, 0x10, 0x73,\n                                   0x63, 0x68, 0x65, 0x6d, 0x61, 0x00, 0x00, 0x00,\n                                   0x00, 0x00, 0x00\n                                  };\n\n    // deserialize it with BSON\n    json j = json::from_bson(v);\n\n    // print the deserialized JSON value\n    std::cout &lt;&lt; std::setw(2) &lt;&lt; j &lt;&lt; std::endl;\n}\n</code></pre> <p>Output:</p> <pre><code>{\n  \"compact\": true,\n  \"schema\": 0\n}\n</code></pre>"},{"location":"api/basic_json/from_bson/#see-also","title":"See also","text":"<ul> <li>BSON specification</li> <li>to_bson for the analogous serialization</li> <li>from_cbor for the related CBOR format</li> <li>from_msgpack for the related MessagePack format</li> <li>from_ubjson for the related UBJSON format</li> <li>from_bjdata for the related BJData format</li> </ul>"},{"location":"api/basic_json/from_bson/#version-history","title":"Version history","text":"<ul> <li>Added in version 3.4.0.</li> </ul> <p>Deprecation</p> <ul> <li>Overload (2) replaces calls to <code>from_bson</code> with a pointer and a length as first two parameters, which has been   deprecated in version 3.8.0. This overload will be removed in version 4.0.0. Please replace all calls like   <code>from_bson(ptr, len, ...);</code> with <code>from_bson(ptr, ptr+len, ...);</code>.</li> <li>Overload (2) replaces calls to <code>from_bson</code> with a pair of iterators as their first parameter, which has been   deprecated in version 3.8.0. This overload will be removed in version 4.0.0. Please replace all calls like   <code>from_bson({ptr, ptr+len}, ...);</code> with <code>from_bson(ptr, ptr+len, ...);</code>.</li> </ul> <p>You should be warned by your compiler with a <code>-Wdeprecated-declarations</code> warning if you are using a deprecated function.</p>"},{"location":"api/basic_json/from_cbor/","title":"nlohmann::basic_json::from_cbor","text":"<pre><code>// (1)\ntemplate&lt;typename InputType&gt;\nstatic basic_json from_cbor(InputType&amp;&amp; i,\n                            const bool strict = true,\n                            const bool allow_exceptions = true,\n                            const cbor_tag_handler_t tag_handler = cbor_tag_handler_t::error);\n\n// (2)\ntemplate&lt;typename IteratorType&gt;\nstatic basic_json from_cbor(IteratorType first, IteratorType last,\n                            const bool strict = true,\n                            const bool allow_exceptions = true,\n                            const cbor_tag_handler_t tag_handler = cbor_tag_handler_t::error);\n</code></pre> <p>Deserializes a given input to a JSON value using the CBOR (Concise Binary Object Representation) serialization format.</p> <ol> <li>Reads from a compatible input.</li> <li>Reads from an iterator range.</li> </ol> <p>The exact mapping and its limitations are described on a dedicated page.</p>"},{"location":"api/basic_json/from_cbor/#template-parameters","title":"Template parameters","text":"<code>InputType</code> <p>A compatible input, for instance:</p> <ul> <li>an <code>std::istream</code> object</li> <li>a <code>FILE</code> pointer</li> <li>a C-style array of characters</li> <li>a pointer to a null-terminated string of single byte characters</li> <li>an object <code>obj</code> for which <code>begin(obj)</code> and <code>end(obj)</code> produces a valid pair of iterators.</li> </ul> <code>IteratorType</code> a compatible iterator type"},{"location":"api/basic_json/from_cbor/#parameters","title":"Parameters","text":"<code>i</code> (in) an input in CBOR format convertible to an input adapter <code>first</code> (in) iterator to the start of the input <code>last</code> (in) iterator to the end of the input <code>strict</code> (in) whether to expect the input to be consumed until EOF (<code>true</code> by default) <code>allow_exceptions</code> (in) whether to throw exceptions in case of a parse error (optional, <code>true</code> by default) <code>tag_handler</code> (in) how to treat CBOR tags (optional, <code>error</code> by default); see <code>cbor_tag_handler_t</code> for more information"},{"location":"api/basic_json/from_cbor/#return-value","title":"Return value","text":"<p>deserialized JSON value; in case of a parse error and <code>allow_exceptions</code> set to <code>false</code>, the return value will be <code>value_t::discarded</code>.  The latter can be checked with <code>is_discarded</code>.</p>"},{"location":"api/basic_json/from_cbor/#exception-safety","title":"Exception safety","text":"<p>Strong guarantee: if an exception is thrown, there are no changes in the JSON value.</p>"},{"location":"api/basic_json/from_cbor/#exceptions","title":"Exceptions","text":"<ul> <li>Throws parse_error.110 if the given input ends prematurely or   the end of the file was not reached when <code>strict</code> was set to true</li> <li>Throws parse_error.112 if unsupported features from CBOR were   used in the given input or if the input is not valid CBOR</li> <li>Throws parse_error.113 if a string was expected as a map key,   but not found</li> </ul>"},{"location":"api/basic_json/from_cbor/#complexity","title":"Complexity","text":"<p>Linear in the size of the input.</p>"},{"location":"api/basic_json/from_cbor/#examples","title":"Examples","text":"Example <p>The example shows the deserialization of a byte vector in CBOR format to a JSON value.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;iomanip&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create byte vector\n    std::vector&lt;std::uint8_t&gt; v = {0xa2, 0x67, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x63,\n                                   0x74, 0xf5, 0x66, 0x73, 0x63, 0x68, 0x65, 0x6d,\n                                   0x61, 0x00\n                                  };\n\n    // deserialize it with CBOR\n    json j = json::from_cbor(v);\n\n    // print the deserialized JSON value\n    std::cout &lt;&lt; std::setw(2) &lt;&lt; j &lt;&lt; std::endl;\n}\n</code></pre> <p>Output:</p> <pre><code>{\n  \"compact\": true,\n  \"schema\": 0\n}\n</code></pre>"},{"location":"api/basic_json/from_cbor/#see-also","title":"See also","text":"<ul> <li>to_cbor create a CBOR serialization of a JSON value</li> <li>from_msgpack create a JSON value from an input in MessagePack format</li> <li>from_bson create a JSON value from an input in BSON format</li> <li>from_ubjson create a JSON value from an input in UBJSON format</li> <li>from_bjdata create a JSON value from an input in BJData format</li> </ul>"},{"location":"api/basic_json/from_cbor/#version-history","title":"Version history","text":"<ul> <li>Added in version 2.0.9.</li> <li>Parameter <code>start_index</code> since version 2.1.1.</li> <li>Changed to consume input adapters, removed <code>start_index</code> parameter, and added <code>strict</code> parameter in version 3.0.0.</li> <li>Added <code>allow_exceptions</code> parameter in version 3.2.0.</li> <li>Added <code>tag_handler</code> parameter in version 3.9.0.</li> </ul> <p>Deprecation</p> <ul> <li>Overload (2) replaces calls to <code>from_cbor</code> with a pointer and a length as first two parameters, which has been   deprecated in version 3.8.0. This overload will be removed in version 4.0.0. Please replace all calls like   <code>from_cbor(ptr, len, ...);</code> with <code>from_cbor(ptr, ptr+len, ...);</code>.</li> <li>Overload (2) replaces calls to <code>from_cbor</code> with a pair of iterators as their first parameter, which has been   deprecated in version 3.8.0. This overload will be removed in version 4.0.0. Please replace all calls like   <code>from_cbor({ptr, ptr+len}, ...);</code> with <code>from_cbor(ptr, ptr+len, ...);</code>.</li> </ul> <p>You should be warned by your compiler with a <code>-Wdeprecated-declarations</code> warning if you are using a deprecated function.</p>"},{"location":"api/basic_json/from_msgpack/","title":"nlohmann::basic_json::from_msgpack","text":"<pre><code>// (1)\ntemplate&lt;typename InputType&gt;\nstatic basic_json from_msgpack(InputType&amp;&amp; i,\n                               const bool strict = true,\n                               const bool allow_exceptions = true);\n// (2)\ntemplate&lt;typename IteratorType&gt;\nstatic basic_json from_msgpack(IteratorType first, IteratorType last,\n                               const bool strict = true,\n                               const bool allow_exceptions = true);\n</code></pre> <p>Deserializes a given input to a JSON value using the MessagePack serialization format.</p> <ol> <li>Reads from a compatible input.</li> <li>Reads from an iterator range.</li> </ol> <p>The exact mapping and its limitations are described on a dedicated page.</p>"},{"location":"api/basic_json/from_msgpack/#template-parameters","title":"Template parameters","text":"<code>InputType</code> <p>A compatible input, for instance:</p> <ul> <li>an <code>std::istream</code> object</li> <li>a <code>FILE</code> pointer</li> <li>a C-style array of characters</li> <li>a pointer to a null-terminated string of single byte characters</li> <li>an object <code>obj</code> for which <code>begin(obj)</code> and <code>end(obj)</code> produces a valid pair of iterators.</li> </ul> <code>IteratorType</code> a compatible iterator type"},{"location":"api/basic_json/from_msgpack/#parameters","title":"Parameters","text":"<code>i</code> (in) an input in MessagePack format convertible to an input adapter <code>first</code> (in) iterator to the start of the input <code>last</code> (in) iterator to the end of the input <code>strict</code> (in) whether to expect the input to be consumed until EOF (<code>true</code> by default) <code>allow_exceptions</code> (in) whether to throw exceptions in case of a parse error (optional, <code>true</code> by default)"},{"location":"api/basic_json/from_msgpack/#return-value","title":"Return value","text":"<p>deserialized JSON value; in case of a parse error and <code>allow_exceptions</code> set to <code>false</code>, the return value will be <code>value_t::discarded</code>. The latter can be checked with <code>is_discarded</code>.</p>"},{"location":"api/basic_json/from_msgpack/#exception-safety","title":"Exception safety","text":"<p>Strong guarantee: if an exception is thrown, there are no changes in the JSON value.</p>"},{"location":"api/basic_json/from_msgpack/#exceptions","title":"Exceptions","text":"<ul> <li>Throws parse_error.110 if the given input ends prematurely or   the end of the file was not reached when <code>strict</code> was set to true</li> <li>Throws parse_error.112 if unsupported features from   MessagePack were used in the given input or if the input is not valid MessagePack</li> <li>Throws parse_error.113 if a string was expected as a map key,   but not found</li> </ul>"},{"location":"api/basic_json/from_msgpack/#complexity","title":"Complexity","text":"<p>Linear in the size of the input.</p>"},{"location":"api/basic_json/from_msgpack/#examples","title":"Examples","text":"Example <p>The example shows the deserialization of a byte vector in MessagePack format to a JSON value.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;iomanip&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create byte vector\n    std::vector&lt;std::uint8_t&gt; v = {0x82, 0xa7, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x63,\n                                   0x74, 0xc3, 0xa6, 0x73, 0x63, 0x68, 0x65, 0x6d,\n                                   0x61, 0x00\n                                  };\n\n    // deserialize it with MessagePack\n    json j = json::from_msgpack(v);\n\n    // print the deserialized JSON value\n    std::cout &lt;&lt; std::setw(2) &lt;&lt; j &lt;&lt; std::endl;\n}\n</code></pre> <p>Output:</p> <pre><code>{\n  \"compact\": true,\n  \"schema\": 0\n}\n</code></pre>"},{"location":"api/basic_json/from_msgpack/#see-also","title":"See also","text":"<ul> <li>to_msgpack create a MessagePack serialization of a JSON value</li> <li>from_cbor create a JSON value from an input in CBOR format</li> <li>from_bson create a JSON value from an input in BSON format</li> <li>from_ubjson create a JSON value from an input in UBJSON format</li> <li>from_bjdata create a JSON value from an input in BJData format</li> </ul>"},{"location":"api/basic_json/from_msgpack/#version-history","title":"Version history","text":"<ul> <li>Added in version 2.0.9.</li> <li>Parameter <code>start_index</code> since version 2.1.1.</li> <li>Changed to consume input adapters, removed <code>start_index</code> parameter, and added <code>strict</code> parameter in version 3.0.0.</li> <li>Added <code>allow_exceptions</code> parameter in version 3.2.0.</li> </ul> <p>Deprecation</p> <ul> <li>Overload (2) replaces calls to <code>from_msgpack</code> with a pointer and a length as first two parameters, which has been   deprecated in version 3.8.0. This overload will be removed in version 4.0.0. Please replace all calls like   <code>from_msgpack(ptr, len, ...);</code> with <code>from_msgpack(ptr, ptr+len, ...);</code>.</li> <li>Overload (2) replaces calls to <code>from_msgpack</code> with a pair of iterators as their first parameter, which has been   deprecated in version 3.8.0. This overload will be removed in version 4.0.0. Please replace all calls like   <code>from_msgpack({ptr, ptr+len}, ...);</code> with <code>from_msgpack(ptr, ptr+len, ...);</code>.</li> </ul> <p>You should be warned by your compiler with a <code>-Wdeprecated-declarations</code> warning if you are using a deprecated function.</p>"},{"location":"api/basic_json/from_ubjson/","title":"nlohmann::basic_json::from_ubjson","text":"<pre><code>// (1)\ntemplate&lt;typename InputType&gt;\nstatic basic_json from_ubjson(InputType&amp;&amp; i,\n                              const bool strict = true,\n                              const bool allow_exceptions = true);\n// (2)\ntemplate&lt;typename IteratorType&gt;\nstatic basic_json from_ubjson(IteratorType first, IteratorType last,\n                              const bool strict = true,\n                              const bool allow_exceptions = true);\n</code></pre> <p>Deserializes a given input to a JSON value using the UBJSON (Universal Binary JSON) serialization format.</p> <ol> <li>Reads from a compatible input.</li> <li>Reads from an iterator range.</li> </ol> <p>The exact mapping and its limitations are described on a dedicated page.</p>"},{"location":"api/basic_json/from_ubjson/#template-parameters","title":"Template parameters","text":"<code>InputType</code> <p>A compatible input, for instance:</p> <ul> <li>an <code>std::istream</code> object</li> <li>a <code>FILE</code> pointer</li> <li>a C-style array of characters</li> <li>a pointer to a null-terminated string of single byte characters</li> <li>an object <code>obj</code> for which <code>begin(obj)</code> and <code>end(obj)</code> produces a valid pair of iterators.</li> </ul> <code>IteratorType</code> a compatible iterator type"},{"location":"api/basic_json/from_ubjson/#parameters","title":"Parameters","text":"<code>i</code> (in) an input in UBJSON format convertible to an input adapter <code>first</code> (in) iterator to the start of the input <code>last</code> (in) iterator to the end of the input <code>strict</code> (in) whether to expect the input to be consumed until EOF (<code>true</code> by default) <code>allow_exceptions</code> (in) whether to throw exceptions in case of a parse error (optional, <code>true</code> by default)"},{"location":"api/basic_json/from_ubjson/#return-value","title":"Return value","text":"<p>deserialized JSON value; in case of a parse error and <code>allow_exceptions</code> set to <code>false</code>, the return value will be <code>value_t::discarded</code>. The latter can be checked with <code>is_discarded</code>.</p>"},{"location":"api/basic_json/from_ubjson/#exception-safety","title":"Exception safety","text":"<p>Strong guarantee: if an exception is thrown, there are no changes in the JSON value.</p>"},{"location":"api/basic_json/from_ubjson/#exceptions","title":"Exceptions","text":"<ul> <li>Throws parse_error.110 if the given input ends prematurely or   the end of the file was not reached when <code>strict</code> was set to true</li> <li>Throws parse_error.112 if a parse error occurs</li> <li>Throws parse_error.113 if a string could not be parsed   successfully</li> <li>Throws out_of_range.408 if the size of an optimized container   or n-dimensional array cannot be represented by <code>std::size_t</code></li> </ul>"},{"location":"api/basic_json/from_ubjson/#complexity","title":"Complexity","text":"<p>Linear in the size of the input.</p>"},{"location":"api/basic_json/from_ubjson/#examples","title":"Examples","text":"Example <p>The example shows the deserialization of a byte vector in UBJSON format to a JSON value.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;iomanip&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create byte vector\n    std::vector&lt;std::uint8_t&gt; v = {0x7B, 0x69, 0x07, 0x63, 0x6F, 0x6D, 0x70, 0x61,\n                                   0x63, 0x74, 0x54, 0x69, 0x06, 0x73, 0x63, 0x68,\n                                   0x65, 0x6D, 0x61, 0x69, 0x00, 0x7D\n                                  };\n\n    // deserialize it with UBJSON\n    json j = json::from_ubjson(v);\n\n    // print the deserialized JSON value\n    std::cout &lt;&lt; std::setw(2) &lt;&lt; j &lt;&lt; std::endl;\n}\n</code></pre> <p>Output:</p> <pre><code>{\n  \"compact\": true,\n  \"schema\": 0\n}\n</code></pre>"},{"location":"api/basic_json/from_ubjson/#see-also","title":"See also","text":"<ul> <li>to_ubjson create a UBJSON serialization of a JSON value</li> <li>from_cbor create a JSON value from an input in CBOR format</li> <li>from_msgpack create a JSON value from an input in MessagePack format</li> <li>from_bson create a JSON value from an input in BSON format</li> <li>from_bjdata create a JSON value from an input in BJData format</li> </ul>"},{"location":"api/basic_json/from_ubjson/#version-history","title":"Version history","text":"<ul> <li>Added in version 3.1.0.</li> <li>Added <code>allow_exceptions</code> parameter in version 3.2.0.</li> </ul> <p>Deprecation</p> <ul> <li>Overload (2) replaces calls to <code>from_ubjson</code> with a pointer and a length as first two parameters, which has been   deprecated in version 3.8.0. This overload will be removed in version 4.0.0. Please replace all calls like   <code>from_ubjson(ptr, len, ...);</code> with <code>from_ubjson(ptr, ptr+len, ...);</code>.</li> <li>Overload (2) replaces calls to <code>from_ubjson</code> with a pair of iterators as their first parameter, which has been   deprecated in version 3.8.0. This overload will be removed in version 4.0.0. Please replace all calls like   <code>from_ubjson({ptr, ptr+len}, ...);</code> with <code>from_ubjson(ptr, ptr+len, ...);</code>.</li> </ul> <p>You should be warned by your compiler with a <code>-Wdeprecated-declarations</code> warning if you are using a deprecated function.</p>"},{"location":"api/basic_json/front/","title":"nlohmann::basic_json::front","text":"<pre><code>reference front();\nconst_reference front() const;\n</code></pre> <p>Returns a reference to the first element in the container. For a JSON container <code>c</code>, the expression <code>c.front()</code> is equivalent to <code>*c.begin()</code>.</p>"},{"location":"api/basic_json/front/#return-value","title":"Return value","text":"<p>In the case of a structured type (array or object), a reference to the first element is returned. In the case of number, string, boolean, or binary values, a reference to the value is returned.</p>"},{"location":"api/basic_json/front/#exception-safety","title":"Exception safety","text":"<p>Strong guarantee: if an exception is thrown, there are no changes in the JSON value.</p>"},{"location":"api/basic_json/front/#exceptions","title":"Exceptions","text":"<p>If the JSON value is <code>null</code>, exception <code>invalid_iterator.214</code> is thrown.</p>"},{"location":"api/basic_json/front/#complexity","title":"Complexity","text":"<p>Constant.</p>"},{"location":"api/basic_json/front/#notes","title":"Notes","text":"<p>Precondition</p> <p>The array or object must not be empty. Calling <code>front</code> on an empty array or object yields undefined behavior.</p>"},{"location":"api/basic_json/front/#examples","title":"Examples","text":"Example <p>The following code shows an example for <code>front()</code>.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create JSON values\n    json j_null;\n    json j_boolean = true;\n    json j_number_integer = 17;\n    json j_number_float = 23.42;\n    json j_object = {{\"one\", 1}, {\"two\", 2}};\n    json j_object_empty(json::value_t::object);\n    json j_array = {1, 2, 4, 8, 16};\n    json j_array_empty(json::value_t::array);\n    json j_string = \"Hello, world\";\n\n    // call front()\n    //std::cout &lt;&lt; j_null.front() &lt;&lt; '\\n';          // would throw\n    std::cout &lt;&lt; j_boolean.front() &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_number_integer.front() &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_number_float.front() &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_object.front() &lt;&lt; '\\n';\n    //std::cout &lt;&lt; j_object_empty.front() &lt;&lt; '\\n';  // undefined behavior\n    std::cout &lt;&lt; j_array.front() &lt;&lt; '\\n';\n    //std::cout &lt;&lt; j_array_empty.front() &lt;&lt; '\\n';   // undefined behavior\n    std::cout &lt;&lt; j_string.front() &lt;&lt; '\\n';\n}\n</code></pre> <p>Output:</p> <pre><code>true\n17\n23.42\n1\n1\n\"Hello, world\"\n</code></pre>"},{"location":"api/basic_json/front/#see-also","title":"See also","text":"<ul> <li>back to access the last element</li> </ul>"},{"location":"api/basic_json/front/#version-history","title":"Version history","text":"<ul> <li>Added in version 1.0.0.</li> <li>Adjusted code to return reference to binary values in version 3.8.0.</li> </ul>"},{"location":"api/basic_json/get/","title":"nlohmann::basic_json::get","text":"<pre><code>// (1)\ntemplate&lt;typename ValueType&gt;\nValueType get() const noexcept(\n    noexcept(JSONSerializer&lt;ValueType&gt;::from_json(\n        std::declval&lt;const basic_json_t&amp;&gt;(), std::declval&lt;ValueType&amp;&gt;())));\n\n// (2)\ntemplate&lt;typename BasicJsonType&gt;\nBasicJsonType get() const;\n\n// (3)\ntemplate&lt;typename PointerType&gt;\nPointerType get_ptr();\n\ntemplate&lt;typename PointerType&gt;\nconstexpr const PointerType get_ptr() const noexcept;\n</code></pre> <ol> <li> <p>Explicit type conversion between the JSON value and a compatible value which is    CopyConstructible and    DefaultConstructible. The value is converted by    calling the <code>json_serializer&lt;ValueType&gt;</code> <code>from_json()</code> method.</p> <p>The function is equivalent to executing <pre><code>ValueType ret;\nJSONSerializer&lt;ValueType&gt;::from_json(*this, ret);\nreturn ret;\n</code></pre></p> <p>This overload is chosen if:</p> <ul> <li><code>ValueType</code> is not <code>basic_json</code>,</li> <li><code>json_serializer&lt;ValueType&gt;</code> has a <code>from_json()</code> method of the form   <code>void from_json(const basic_json&amp;, ValueType&amp;)</code>, and</li> <li><code>json_serializer&lt;ValueType&gt;</code> does not have a <code>from_json()</code> method of the form   <code>ValueType from_json(const basic_json&amp;)</code></li> </ul> <p>If the type is not CopyConstructible and not DefaultConstructible, the value is converted by calling the <code>json_serializer&lt;ValueType&gt;</code> <code>from_json()</code> method.</p> <p>The function is then equivalent to executing <pre><code>return JSONSerializer&lt;ValueTypeCV&gt;::from_json(*this);\n</code></pre></p> <p>This overload is chosen if:</p> <ul> <li><code>ValueType</code> is not <code>basic_json</code> and</li> <li><code>json_serializer&lt;ValueType&gt;</code> has a <code>from_json()</code> method of the form  <code>ValueType from_json(const basic_json&amp;)</code></li> </ul> <p>If <code>json_serializer&lt;ValueType&gt;</code> has both overloads of <code>from_json()</code>, the latter one is chosen.</p> </li> <li> <p>Overload for <code>basic_json</code> specializations. The function is equivalent to executing     <pre><code>return *this;\n</code></pre></p> </li> <li> <p>Explicit pointer access to the internally stored JSON value. No copies are made.</p> </li> </ol>"},{"location":"api/basic_json/get/#template-parameters","title":"Template parameters","text":"<code>ValueType</code> the value type to return <code>BasicJsonType</code> a specialization of <code>basic_json</code> <code>PointerType</code> pointer type; must be a pointer to <code>array_t</code>, <code>object_t</code>, <code>string_t</code>, <code>boolean_t</code>, <code>number_integer_t</code>, or <code>number_unsigned_t</code>, <code>number_float_t</code>, or <code>binary_t</code>. Other types will not compile."},{"location":"api/basic_json/get/#return-value","title":"Return value","text":"<ol> <li>copy of the JSON value, converted to <code>ValueType</code></li> <li>a copy of <code>*this</code>, converted into <code>BasicJsonType</code></li> <li>pointer to the internally stored JSON value if the requested pointer type fits to the JSON value; <code>nullptr</code>    otherwise</li> </ol>"},{"location":"api/basic_json/get/#exceptions","title":"Exceptions","text":"<p>Depends on what <code>json_serializer&lt;ValueType&gt;</code> <code>from_json()</code> method throws</p>"},{"location":"api/basic_json/get/#complexity","title":"Complexity","text":"<p>Depends on the <code>json_serializer&lt;ValueType&gt;::from_json()</code> implementation for overloads (1) and (2); constant for overload (3).</p>"},{"location":"api/basic_json/get/#notes","title":"Notes","text":"<p>Undefined behavior for pointers</p> <p>Writing data to the pointee (overload 3) of the result yields an undefined state.</p> <p>Undefined behavior for numeric conversions</p> <p>Conversions between numeric types are performed by the corresponding <code>from_json()</code> implementation using the target C++ type. When converting between numeric types, the library does not check whether the source value is representable by the target type.</p> <p>If the source value is outside the range of the target type, the behavior is the same as the corresponding C++ conversion. In particular, converting a floating-point value to an integer type that cannot represent the value results in undefined behavior.</p> <p>See Number conversion for more information.</p>"},{"location":"api/basic_json/get/#examples","title":"Examples","text":"Example <p>The example below shows several conversions from JSON values to other types. There a few things to note: (1) Floating-point numbers can be converted to integers, (2) A JSON array can be converted to a standard <code>std::vector&lt;short&gt;</code>, (3) A JSON object can be converted to C++ associative containers such as <code>std::unordered_map&lt;std::string, json&gt;</code>.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;unordered_map&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create a JSON value with different types\n    json json_types =\n    {\n        {\"boolean\", true},\n        {\n            \"number\", {\n                {\"integer\", 42},\n                {\"floating-point\", 17.23}\n            }\n        },\n        {\"string\", \"Hello, world!\"},\n        {\"array\", {1, 2, 3, 4, 5}},\n        {\"null\", nullptr}\n    };\n\n    // use explicit conversions\n    auto v1 = json_types[\"boolean\"].get&lt;bool&gt;();\n    auto v2 = json_types[\"number\"][\"integer\"].get&lt;int&gt;();\n    auto v3 = json_types[\"number\"][\"integer\"].get&lt;short&gt;();\n    auto v4 = json_types[\"number\"][\"floating-point\"].get&lt;float&gt;();\n    auto v5 = json_types[\"number\"][\"floating-point\"].get&lt;int&gt;();\n    auto v6 = json_types[\"string\"].get&lt;std::string&gt;();\n    auto v7 = json_types[\"array\"].get&lt;std::vector&lt;short&gt;&gt;();\n    auto v8 = json_types.get&lt;std::unordered_map&lt;std::string, json&gt;&gt;();\n\n    // print the conversion results\n    std::cout &lt;&lt; v1 &lt;&lt; '\\n';\n    std::cout &lt;&lt; v2 &lt;&lt; ' ' &lt;&lt; v3 &lt;&lt; '\\n';\n    std::cout &lt;&lt; v4 &lt;&lt; ' ' &lt;&lt; v5 &lt;&lt; '\\n';\n    std::cout &lt;&lt; v6 &lt;&lt; '\\n';\n\n    for (auto i : v7)\n    {\n        std::cout &lt;&lt; i &lt;&lt; ' ';\n    }\n    std::cout &lt;&lt; \"\\n\\n\";\n\n    for (auto i : v8)\n    {\n        std::cout &lt;&lt; i.first &lt;&lt; \": \" &lt;&lt; i.second &lt;&lt; '\\n';\n    }\n}\n</code></pre> <p>Output:</p> <pre><code>1\n42 42\n17.23 17\nHello, world!\n1 2 3 4 5 \n\nstring: \"Hello, world!\"\nnumber: {\"floating-point\":17.23,\"integer\":42}\nnull: null\nboolean: true\narray: [1,2,3,4,5]\n</code></pre> Example <p>The example below shows how pointers to internal values of a JSON value can be requested. Note that no type conversions are made and a <code>#cpp nullptr</code> is returned if the value and the requested pointer type does not match.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create a JSON number\n    json value = 17;\n\n    // explicitly getting pointers\n    auto p1 = value.get&lt;const json::number_integer_t*&gt;();\n    auto p2 = value.get&lt;json::number_integer_t*&gt;();\n    auto p3 = value.get&lt;json::number_integer_t* const&gt;();\n    auto p4 = value.get&lt;const json::number_integer_t* const&gt;();\n    auto p5 = value.get&lt;json::number_float_t*&gt;();\n\n    // print the pointees\n    std::cout &lt;&lt; *p1 &lt;&lt; ' ' &lt;&lt; *p2 &lt;&lt; ' ' &lt;&lt; *p3 &lt;&lt; ' ' &lt;&lt; *p4 &lt;&lt; '\\n';\n    std::cout &lt;&lt; std::boolalpha &lt;&lt; (p5 == nullptr) &lt;&lt; '\\n';\n}\n</code></pre> <p>Output:</p> <pre><code>17 17 17 17\ntrue\n</code></pre>"},{"location":"api/basic_json/get/#see-also","title":"See also","text":"<ul> <li>get_to convert and write into a passed value</li> <li>get_ptr get a pointer to the stored value</li> <li>get_ref get a reference to the stored value</li> <li>operator ValueType get a value via implicit conversion</li> </ul>"},{"location":"api/basic_json/get/#version-history","title":"Version history","text":"<ol> <li>Since version 2.1.0.</li> <li>Since version 2.1.0. Extended to work with other specializations of <code>basic_json</code> in version 3.2.0.</li> <li>Since version 1.0.0.</li> </ol>"},{"location":"api/basic_json/get_allocator/","title":"nlohmann::basic_json::get_allocator","text":"<pre><code>static allocator_type get_allocator();\n</code></pre> <p>Returns the allocator associated with the container.</p>"},{"location":"api/basic_json/get_allocator/#return-value","title":"Return value","text":"<p>associated allocator</p>"},{"location":"api/basic_json/get_allocator/#examples","title":"Examples","text":"Example <p>The example shows how <code>get_allocator()</code> is used to created <code>json</code> values.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    auto alloc = json::get_allocator();\n    using traits_t = std::allocator_traits&lt;decltype(alloc)&gt;;\n\n    json* j = traits_t::allocate(alloc, 1);\n    traits_t::construct(alloc, j, \"Hello, world!\");\n\n    std::cout &lt;&lt; *j &lt;&lt; std::endl;\n\n    traits_t::destroy(alloc, j);\n    traits_t::deallocate(alloc, j, 1);\n}\n</code></pre> <p>Output:</p> <pre><code>\"Hello, world!\"\n</code></pre>"},{"location":"api/basic_json/get_allocator/#version-history","title":"Version history","text":"<ul> <li>Added in version 1.0.0.</li> </ul>"},{"location":"api/basic_json/get_binary/","title":"nlohmann::basic_json::get_binary","text":"<pre><code>binary_t&amp; get_binary();\n\nconst binary_t&amp; get_binary() const;\n</code></pre> <p>Returns a reference to the stored binary value.</p>"},{"location":"api/basic_json/get_binary/#return-value","title":"Return value","text":"<p>Reference to binary value.</p>"},{"location":"api/basic_json/get_binary/#exception-safety","title":"Exception safety","text":"<p>Strong exception safety: if an exception occurs, the original value stays intact.</p>"},{"location":"api/basic_json/get_binary/#exceptions","title":"Exceptions","text":"<p>Throws <code>type_error.302</code> if the value is not binary</p>"},{"location":"api/basic_json/get_binary/#complexity","title":"Complexity","text":"<p>Constant.</p>"},{"location":"api/basic_json/get_binary/#examples","title":"Examples","text":"Example <p>The following code shows how to query a binary value.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create a binary vector\n    std::vector&lt;std::uint8_t&gt; vec = {0xCA, 0xFE, 0xBA, 0xBE};\n\n    // create a binary JSON value with subtype 42\n    json j = json::binary(vec, 42);\n\n    // output type and subtype\n    std::cout &lt;&lt; \"type: \" &lt;&lt; j.type_name() &lt;&lt; \", subtype: \" &lt;&lt; j.get_binary().subtype() &lt;&lt; std::endl;\n}\n</code></pre> <p>Output:</p> <pre><code>type: binary, subtype: 42\n</code></pre>"},{"location":"api/basic_json/get_binary/#see-also","title":"See also","text":"<ul> <li>get get a value (explicit conversion)</li> <li>get_ref get a reference to the stored value</li> </ul>"},{"location":"api/basic_json/get_binary/#version-history","title":"Version history","text":"<ul> <li>Added in version 3.8.0.</li> </ul>"},{"location":"api/basic_json/get_ptr/","title":"nlohmann::basic_json::get_ptr","text":"<pre><code>template&lt;typename PointerType&gt;\nPointerType get_ptr() noexcept;\n\ntemplate&lt;typename PointerType&gt;\nconstexpr const PointerType get_ptr() const noexcept;\n</code></pre> <p>Implicit pointer access to the internally stored JSON value. No copies are made.</p>"},{"location":"api/basic_json/get_ptr/#template-parameters","title":"Template parameters","text":"<code>PointerType</code> pointer type; must be a pointer to <code>array_t</code>, <code>object_t</code>, <code>string_t</code>, <code>boolean_t</code>, <code>number_integer_t</code>, or <code>number_unsigned_t</code>, <code>number_float_t</code>, or <code>binary_t</code>. Other types will not compile."},{"location":"api/basic_json/get_ptr/#return-value","title":"Return value","text":"<p>pointer to the internally stored JSON value if the requested pointer type fits to the JSON value; <code>nullptr</code> otherwise</p>"},{"location":"api/basic_json/get_ptr/#exception-safety","title":"Exception safety","text":"<p>No-throw guarantee: this function never throws exceptions.</p>"},{"location":"api/basic_json/get_ptr/#complexity","title":"Complexity","text":"<p>Constant.</p>"},{"location":"api/basic_json/get_ptr/#notes","title":"Notes","text":"<p>Undefined behavior</p> <p>The pointer becomes invalid if the underlying JSON object changes.</p> <p>Consider the following example code where the pointer <code>ptr</code> changes after the array is resized. As a result, reading or writing to <code>ptr</code> after the array change would be undefined behavior. The address of the first array element changes, because the underlying <code>std::vector</code> is resized after adding a fifth element.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    json j = {1, 2, 3, 4};\n    auto* ptr = j[0].get_ptr&lt;std::int64_t*&gt;();\n    std::cout &lt;&lt; \"value at \" &lt;&lt; ptr &lt;&lt; \" is \" &lt;&lt; *ptr &lt;&lt; std::endl;\n\n    j.push_back(5);\n\n    ptr = j[0].get_ptr&lt;std::int64_t*&gt;();\n    std::cout &lt;&lt; \"value at \" &lt;&lt; ptr &lt;&lt; \" is \" &lt;&lt; *ptr &lt;&lt; std::endl;\n}\n</code></pre> <p>Output:</p> <pre><code>value at 0x6000012fc1c8 is 1\nvalue at 0x6000029fc088 is 1\n</code></pre>"},{"location":"api/basic_json/get_ptr/#examples","title":"Examples","text":"Example <p>The example below shows how pointers to internal values of a JSON value can be requested. Note that no type conversions are made and a <code>nullptr</code> is returned if the value and the requested pointer type does not match.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create a JSON number\n    json value = 17;\n\n    // explicitly getting pointers\n    auto p1 = value.get_ptr&lt;const json::number_integer_t*&gt;();\n    auto p2 = value.get_ptr&lt;json::number_integer_t*&gt;();\n    auto p3 = value.get_ptr&lt;json::number_integer_t* const&gt;();\n    auto p4 = value.get_ptr&lt;const json::number_integer_t* const&gt;();\n    auto p5 = value.get_ptr&lt;json::number_float_t*&gt;();\n\n    // print the pointees\n    std::cout &lt;&lt; *p1 &lt;&lt; ' ' &lt;&lt; *p2 &lt;&lt; ' ' &lt;&lt; *p3 &lt;&lt; ' ' &lt;&lt; *p4 &lt;&lt; '\\n';\n    std::cout &lt;&lt; std::boolalpha &lt;&lt; (p5 == nullptr) &lt;&lt; '\\n';\n}\n</code></pre> <p>Output:</p> <pre><code>17 17 17 17\ntrue\n</code></pre>"},{"location":"api/basic_json/get_ptr/#see-also","title":"See also","text":"<ul> <li>get_ref() get a reference value</li> </ul>"},{"location":"api/basic_json/get_ptr/#version-history","title":"Version history","text":"<ul> <li>Added in version 1.0.0.</li> <li>Extended to binary types in version 3.8.0.</li> </ul>"},{"location":"api/basic_json/get_ref/","title":"nlohmann::basic_json::get_ref","text":"<pre><code>template&lt;typename ReferenceType&gt;\nReferenceType get_ref();\n\ntemplate&lt;typename ReferenceType&gt;\nconst ReferenceType get_ref() const;\n</code></pre> <p>Implicit reference access to the internally stored JSON value. No copies are made.</p>"},{"location":"api/basic_json/get_ref/#template-parameters","title":"Template parameters","text":"<code>ReferenceType</code> reference type; must be a reference to <code>array_t</code>, <code>object_t</code>, <code>string_t</code>, <code>boolean_t</code>, <code>number_integer_t</code>, or <code>number_unsigned_t</code>, <code>number_float_t</code>, or <code>binary_t</code>. Enforced by a static assertion."},{"location":"api/basic_json/get_ref/#return-value","title":"Return value","text":"<p>reference to the internally stored JSON value if the requested reference type fits to the JSON value; throws <code>type_error.303</code> otherwise</p>"},{"location":"api/basic_json/get_ref/#exception-safety","title":"Exception safety","text":"<p>Strong exception safety: if an exception occurs, the original value stays intact.</p>"},{"location":"api/basic_json/get_ref/#exceptions","title":"Exceptions","text":"<p>Throws <code>type_error.303</code> if the requested reference type does not match the stored JSON value type; example: <code>\"incompatible ReferenceType for get_ref, actual type is binary\"</code>.</p>"},{"location":"api/basic_json/get_ref/#complexity","title":"Complexity","text":"<p>Constant.</p>"},{"location":"api/basic_json/get_ref/#notes","title":"Notes","text":"<p>Undefined behavior</p> <p>The reference becomes invalid if the underlying JSON object changes.</p>"},{"location":"api/basic_json/get_ref/#examples","title":"Examples","text":"Example <p>The example shows several calls to <code>get_ref()</code>.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create a JSON number\n    json value = 17;\n\n    // explicitly getting references\n    auto r1 = value.get_ref&lt;const json::number_integer_t&amp;&gt;();\n    auto r2 = value.get_ref&lt;json::number_integer_t&amp;&gt;();\n\n    // print the values\n    std::cout &lt;&lt; r1 &lt;&lt; ' ' &lt;&lt; r2 &lt;&lt; '\\n';\n\n    // incompatible type throws exception\n    try\n    {\n        auto r3 = value.get_ref&lt;json::number_float_t&amp;&gt;();\n    }\n    catch (const json::type_error&amp; ex)\n    {\n        std::cout &lt;&lt; ex.what() &lt;&lt; '\\n';\n    }\n}\n</code></pre> <p>Output:</p> <pre><code>17 17\n[json.exception.type_error.303] incompatible ReferenceType for get_ref, actual type is number\n</code></pre>"},{"location":"api/basic_json/get_ref/#see-also","title":"See also","text":"<ul> <li>get_ptr() get a pointer value</li> </ul>"},{"location":"api/basic_json/get_ref/#version-history","title":"Version history","text":"<ul> <li>Added in version 1.1.0.</li> <li>Extended to binary types in version 3.8.0.</li> </ul>"},{"location":"api/basic_json/get_to/","title":"nlohmann::basic_json::get_to","text":"<pre><code>template&lt;typename ValueType&gt;\nValueType&amp; get_to(ValueType&amp; v) const noexcept(\n    noexcept(JSONSerializer&lt;ValueType&gt;::from_json(\n        std::declval&lt;const basic_json_t&amp;&gt;(), v)));\n</code></pre> <p>Explicit type conversion between the JSON value and a compatible value. The value is filled into the input parameter by calling the <code>json_serializer&lt;ValueType&gt;</code> <code>from_json()</code> method.</p> <p>The function is equivalent to executing <pre><code>ValueType v;\nJSONSerializer&lt;ValueType&gt;::from_json(*this, v);\n</code></pre></p> <p>This overload is chosen if:</p> <ul> <li><code>ValueType</code> is not <code>basic_json</code>,</li> <li><code>json_serializer&lt;ValueType&gt;</code> has a <code>from_json()</code> method of the form <code>void from_json(const basic_json&amp;, ValueType&amp;)</code></li> </ul>"},{"location":"api/basic_json/get_to/#template-parameters","title":"Template parameters","text":"<code>ValueType</code> the value type to return"},{"location":"api/basic_json/get_to/#return-value","title":"Return value","text":"<p>the input parameter, allowing chaining calls</p>"},{"location":"api/basic_json/get_to/#exceptions","title":"Exceptions","text":"<p>Depends on what <code>json_serializer&lt;ValueType&gt;</code> <code>from_json()</code> method throws</p>"},{"location":"api/basic_json/get_to/#complexity","title":"Complexity","text":"<p>Depends on the <code>json_serializer&lt;ValueType&gt;::from_json()</code> implementation.</p>"},{"location":"api/basic_json/get_to/#examples","title":"Examples","text":"Example <p>The example below shows several conversions from JSON values to other types. There a few things to note: (1) Floating-point numbers can be converted to integers, (2) A JSON array can be converted to a standard <code>std::vector&lt;short&gt;</code>, (3) A JSON object can be converted to C++ associative containers such as <code>#cpp std::unordered_map&lt;std::string, json&gt;</code>.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;unordered_map&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create a JSON value with different types\n    json json_types =\n    {\n        {\"boolean\", true},\n        {\n            \"number\", {\n                {\"integer\", 42},\n                {\"floating-point\", 17.23}\n            }\n        },\n        {\"string\", \"Hello, world!\"},\n        {\"array\", {1, 2, 3, 4, 5}},\n        {\"null\", nullptr}\n    };\n\n    bool v1;\n    int v2;\n    short v3;\n    float v4;\n    int v5;\n    std::string v6;\n    std::vector&lt;short&gt; v7;\n    std::unordered_map&lt;std::string, json&gt; v8;\n\n    // use explicit conversions\n    json_types[\"boolean\"].get_to(v1);\n    json_types[\"number\"][\"integer\"].get_to(v2);\n    json_types[\"number\"][\"integer\"].get_to(v3);\n    json_types[\"number\"][\"floating-point\"].get_to(v4);\n    json_types[\"number\"][\"floating-point\"].get_to(v5);\n    json_types[\"string\"].get_to(v6);\n    json_types[\"array\"].get_to(v7);\n    json_types.get_to(v8);\n\n    // print the conversion results\n    std::cout &lt;&lt; v1 &lt;&lt; '\\n';\n    std::cout &lt;&lt; v2 &lt;&lt; ' ' &lt;&lt; v3 &lt;&lt; '\\n';\n    std::cout &lt;&lt; v4 &lt;&lt; ' ' &lt;&lt; v5 &lt;&lt; '\\n';\n    std::cout &lt;&lt; v6 &lt;&lt; '\\n';\n\n    for (auto i : v7)\n    {\n        std::cout &lt;&lt; i &lt;&lt; ' ';\n    }\n    std::cout &lt;&lt; \"\\n\\n\";\n\n    for (auto i : v8)\n    {\n        std::cout &lt;&lt; i.first &lt;&lt; \": \" &lt;&lt; i.second &lt;&lt; '\\n';\n    }\n}\n</code></pre> <p>Output:</p> <pre><code>1\n42 42\n17.23 17\nHello, world!\n1 2 3 4 5 \n\nstring: \"Hello, world!\"\nnumber: {\"floating-point\":17.23,\"integer\":42}\nnull: null\nboolean: true\narray: [1,2,3,4,5]\n</code></pre>"},{"location":"api/basic_json/get_to/#see-also","title":"See also","text":"<ul> <li>get get a value (explicit conversion)</li> <li>get_ref get a reference to the stored value</li> <li>get_ptr get a pointer to the stored value</li> </ul>"},{"location":"api/basic_json/get_to/#version-history","title":"Version history","text":"<ul> <li>Since version 3.3.0.</li> </ul>"},{"location":"api/basic_json/input_format_t/","title":"nlohmann::basic_json::input_format_t","text":"<pre><code>enum class input_format_t {\n    json,\n    cbor,\n    msgpack,\n    ubjson,\n    bson,\n    bjdata\n};\n</code></pre> <p>This enumeration is used in the <code>sax_parse</code> function to choose the input format to parse:</p> json JSON (JavaScript Object Notation) cbor CBOR (Concise Binary Object Representation) msgpack MessagePack ubjson UBJSON (Universal Binary JSON) bson BSON (Binary JSON) bjdata BJData (Binary JData)"},{"location":"api/basic_json/input_format_t/#examples","title":"Examples","text":"Example <p>The example below shows how an <code>input_format_t</code> enum value is passed to <code>sax_parse</code> to set the input format to CBOR.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;iomanip&gt;\n#include &lt;sstream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\n// a simple event consumer that collects string representations of the passed\n// values; note inheriting from json::json_sax_t is not required, but can\n// help not to forget a required function\nclass sax_event_consumer : public json::json_sax_t\n{\n  public:\n    std::vector&lt;std::string&gt; events;\n\n    bool null() override\n    {\n        events.push_back(\"null()\");\n        return true;\n    }\n\n    bool boolean(bool val) override\n    {\n        events.push_back(\"boolean(val=\" + std::string(val ? \"true\" : \"false\") + \")\");\n        return true;\n    }\n\n    bool number_integer(number_integer_t val) override\n    {\n        events.push_back(\"number_integer(val=\" + std::to_string(val) + \")\");\n        return true;\n    }\n\n    bool number_unsigned(number_unsigned_t val) override\n    {\n        events.push_back(\"number_unsigned(val=\" + std::to_string(val) + \")\");\n        return true;\n    }\n\n    bool number_float(number_float_t val, const string_t&amp; s) override\n    {\n        events.push_back(\"number_float(val=\" + std::to_string(val) + \", s=\" + s + \")\");\n        return true;\n    }\n\n    bool string(string_t&amp; val) override\n    {\n        events.push_back(\"string(val=\" + val + \")\");\n        return true;\n    }\n\n    bool start_object(std::size_t elements) override\n    {\n        events.push_back(\"start_object(elements=\" + std::to_string(elements) + \")\");\n        return true;\n    }\n\n    bool end_object() override\n    {\n        events.push_back(\"end_object()\");\n        return true;\n    }\n\n    bool start_array(std::size_t elements) override\n    {\n        events.push_back(\"start_array(elements=\" + std::to_string(elements) + \")\");\n        return true;\n    }\n\n    bool end_array() override\n    {\n        events.push_back(\"end_array()\");\n        return true;\n    }\n\n    bool key(string_t&amp; val) override\n    {\n        events.push_back(\"key(val=\" + val + \")\");\n        return true;\n    }\n\n    bool binary(json::binary_t&amp; val) override\n    {\n        events.push_back(\"binary(val=[...])\");\n        return true;\n    }\n\n    bool parse_error(std::size_t position, const std::string&amp; last_token, const json::exception&amp; ex) override\n    {\n        events.push_back(\"parse_error(position=\" + std::to_string(position) + \", last_token=\" + last_token + \",\\n            ex=\" + std::string(ex.what()) + \")\");\n        return false;\n    }\n};\n\nint main()\n{\n    // CBOR byte string\n    std::vector&lt;std::uint8_t&gt; vec = {{0x44, 0xcA, 0xfe, 0xba, 0xbe}};\n\n    // create a SAX event consumer object\n    sax_event_consumer sec;\n\n    // parse CBOR\n    bool result = json::sax_parse(vec, &amp;sec, json::input_format_t::cbor);\n\n    // output the recorded events\n    for (auto&amp; event : sec.events)\n    {\n        std::cout &lt;&lt; event &lt;&lt; \"\\n\";\n    }\n\n    // output the result of sax_parse\n    std::cout &lt;&lt; \"\\nresult: \" &lt;&lt; std::boolalpha &lt;&lt; result &lt;&lt; std::endl;\n}\n</code></pre> <p>Output:</p> <pre><code>binary(val=[...])\n\nresult: true\n</code></pre>"},{"location":"api/basic_json/input_format_t/#version-history","title":"Version history","text":"<ul> <li>Added in version 3.2.0.</li> </ul>"},{"location":"api/basic_json/insert/","title":"nlohmann::basic_json::insert","text":"<pre><code>// (1)\niterator insert(const_iterator pos, const basic_json&amp; val);\niterator insert(const_iterator pos, basic_json&amp;&amp; val);\n\n// (2)\niterator insert(const_iterator pos, size_type cnt, const basic_json&amp; val);\n\n// (3)\niterator insert(const_iterator pos, const_iterator first, const_iterator last);\n\n// (4)\niterator insert(const_iterator pos, initializer_list_t ilist);\n\n// (5)\nvoid insert(const_iterator first, const_iterator last);\n</code></pre> <ol> <li>Inserts element <code>val</code> into an array before iterator <code>pos</code>.</li> <li>Inserts <code>cnt</code> copies of <code>val</code> into an array before iterator <code>pos</code>.</li> <li>Inserts elements from range <code>[first, last)</code> into an array before iterator <code>pos</code>.</li> <li>Inserts elements from initializer list <code>ilist</code> into an array before iterator <code>pos</code>.</li> <li>Inserts elements from range <code>[first, last)</code> into an object.</li> </ol>"},{"location":"api/basic_json/insert/#iterator-invalidation","title":"Iterator invalidation","text":"<p>For all cases where an element is added to an array, a reallocation can happen, in which case all iterators (including the <code>end()</code> iterator) and all references to the elements are invalidated. Otherwise, only the <code>end()</code> iterator is invalidated. Also, any iterator or reference after the insertion point will point to the same index, which is now a different value.</p> <p>For <code>ordered_json</code>, also adding an element to an object can yield a reallocation which again invalidates all iterators and all references. Also, any iterator or reference after the insertion point will point to the same index, which is now a different value.</p>"},{"location":"api/basic_json/insert/#parameters","title":"Parameters","text":"<code>pos</code> (in) iterator before which the content will be inserted; may be the <code>end()</code> iterator <code>val</code> (in) value to insert <code>cnt</code> (in) number of copies of <code>val</code> to insert <code>first</code> (in) the start of the range of elements to insert <code>last</code> (in) the end of the range of elements to insert <code>ilist</code> (in) initializer list to insert the values from"},{"location":"api/basic_json/insert/#return-value","title":"Return value","text":"<ol> <li>iterator pointing to the inserted <code>val</code>.</li> <li>iterator pointing to the first element inserted, or <code>pos</code> if <code>cnt==0</code></li> <li>iterator pointing to the first element inserted, or <code>pos</code> if <code>first==last</code></li> <li>iterator pointing to the first element inserted, or <code>pos</code> if <code>ilist</code> is empty</li> <li>(none)</li> </ol>"},{"location":"api/basic_json/insert/#exception-safety","title":"Exception safety","text":"<p>Strong exception safety: if an exception occurs, the original value stays intact.</p>"},{"location":"api/basic_json/insert/#exceptions","title":"Exceptions","text":"<ol> <li>The function can throw the following exceptions:<ul> <li>Throws <code>type_error.309</code> if called on JSON values other than   arrays; example: <code>\"cannot use insert() with string\"</code></li> <li>Throws <code>invalid_iterator.202</code> if called on an   iterator which does not belong to the current JSON value; example: <code>\"iterator does not fit current value\"</code></li> </ul> </li> <li>The function can throw the following exceptions:<ul> <li>Throws <code>type_error.309</code> if called on JSON values other than   arrays; example: <code>\"cannot use insert() with string\"</code></li> <li>Throws <code>invalid_iterator.202</code> if called on an   iterator which does not belong to the current JSON value; example: <code>\"iterator does not fit current value\"</code></li> </ul> </li> <li>The function can throw the following exceptions:<ul> <li>Throws <code>type_error.309</code> if called on JSON values other than   arrays; example: <code>\"cannot use insert() with string\"</code></li> <li>Throws <code>invalid_iterator.202</code> if called on an   iterator which does not belong to the current JSON value; example: <code>\"iterator does not fit current value\"</code></li> <li>Throws <code>invalid_iterator.210</code> if <code>first</code> and <code>last</code>   do not belong to the same JSON value; example: <code>\"iterators do not fit\"</code></li> <li>Throws <code>invalid_iterator.211</code> if <code>first</code> or <code>last</code>   are iterators into container for which insert is called; example: <code>\"passed iterators may not belong to container\"</code></li> </ul> </li> <li>The function can throw the following exceptions:<ul> <li>Throws <code>type_error.309</code> if called on JSON values other than   arrays; example: <code>\"cannot use insert() with string\"</code></li> <li>Throws <code>invalid_iterator.202</code> if called on an   iterator which does not belong to the current JSON value; example: <code>\"iterator does not fit current value\"</code></li> </ul> </li> <li>The function can throw the following exceptions:<ul> <li>Throws <code>type_error.309</code> if called on JSON values other than   objects; example: <code>\"cannot use insert() with string\"</code></li> <li>Throws <code>invalid_iterator.202</code> if <code>first</code> or <code>last</code>   do not point to an object; example: <code>\"iterators first and last must point to objects\"</code></li> <li>Throws <code>invalid_iterator.210</code> if <code>first</code> and <code>last</code>   do not belong to the same JSON value; example: <code>\"iterators do not fit\"</code></li> </ul> </li> </ol>"},{"location":"api/basic_json/insert/#complexity","title":"Complexity","text":"<ol> <li>Constant plus linear in the distance between <code>pos</code> and end of the container.</li> <li>Linear in <code>cnt</code> plus linear in the distance between <code>pos</code> and end of the container.</li> <li>Linear in <code>std::distance(first, last)</code> plus linear in the distance between <code>pos</code> and end of the container.</li> <li>Linear in <code>ilist.size()</code> plus linear in the distance between <code>pos</code> and end of the container.</li> <li>Logarithmic: <code>O(N*log(size() + N))</code>, where <code>N</code> is the number of elements to insert.</li> </ol>"},{"location":"api/basic_json/insert/#examples","title":"Examples","text":"Example (1): insert element into array <p>The example shows how <code>insert()</code> is used.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create a JSON array\n    json v = {1, 2, 3, 4};\n\n    // insert number 10 before number 3\n    auto new_pos = v.insert(v.begin() + 2, 10);\n\n    // output new array and result of insert call\n    std::cout &lt;&lt; *new_pos &lt;&lt; '\\n';\n    std::cout &lt;&lt; v &lt;&lt; '\\n';\n}\n</code></pre> <p>Output:</p> <pre><code>10\n[1,2,10,3,4]\n</code></pre> Example (2): insert copies of element into array <p>The example shows how <code>insert()</code> is used.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create a JSON array\n    json v = {1, 2, 3, 4};\n\n    // insert number 7 copies of number 7 before number 3\n    auto new_pos = v.insert(v.begin() + 2, 7, 7);\n\n    // output new array and result of insert call\n    std::cout &lt;&lt; *new_pos &lt;&lt; '\\n';\n    std::cout &lt;&lt; v &lt;&lt; '\\n';\n}\n</code></pre> <p>Output:</p> <pre><code>7\n[1,2,7,7,7,7,7,7,7,3,4]\n</code></pre> Example (3): insert a range of elements into an array <p>The example shows how <code>insert()</code> is used.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create a JSON array\n    json v = {1, 2, 3, 4};\n\n    // create a JSON array to copy values from\n    json v2 = {\"one\", \"two\", \"three\", \"four\"};\n\n    // insert range from v2 before the end of array v\n    auto new_pos = v.insert(v.end(), v2.begin(), v2.end());\n\n    // output new array and result of insert call\n    std::cout &lt;&lt; *new_pos &lt;&lt; '\\n';\n    std::cout &lt;&lt; v &lt;&lt; '\\n';\n}\n</code></pre> <p>Output:</p> <pre><code>\"one\"\n[1,2,3,4,\"one\",\"two\",\"three\",\"four\"]\n</code></pre> Example (4): insert elements from an initializer list into an array <p>The example shows how <code>insert()</code> is used.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create a JSON array\n    json v = {1, 2, 3, 4};\n\n    // insert range from v2 before the end of array v\n    auto new_pos = v.insert(v.end(), {7, 8, 9});\n\n    // output new array and result of insert call\n    std::cout &lt;&lt; *new_pos &lt;&lt; '\\n';\n    std::cout &lt;&lt; v &lt;&lt; '\\n';\n}\n</code></pre> <p>Output:</p> <pre><code>7\n[1,2,3,4,7,8,9]\n</code></pre> Example (5): insert a range of elements into an object <p>The example shows how <code>insert()</code> is used.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create two JSON objects\n    json j1 = {{\"one\", \"eins\"}, {\"two\", \"zwei\"}};\n    json j2 = {{\"eleven\", \"elf\"}, {\"seventeen\", \"siebzehn\"}};\n\n    // output objects\n    std::cout &lt;&lt; j1 &lt;&lt; '\\n';\n    std::cout &lt;&lt; j2 &lt;&lt; '\\n';\n\n    // insert range from j2 to j1\n    j1.insert(j2.begin(), j2.end());\n\n    // output result of insert call\n    std::cout &lt;&lt; j1 &lt;&lt; '\\n';\n}\n</code></pre> <p>Output:</p> <pre><code>{\"one\":\"eins\",\"two\":\"zwei\"}\n{\"eleven\":\"elf\",\"seventeen\":\"siebzehn\"}\n{\"eleven\":\"elf\",\"one\":\"eins\",\"seventeen\":\"siebzehn\",\"two\":\"zwei\"}\n</code></pre>"},{"location":"api/basic_json/insert/#see-also","title":"See also","text":"<ul> <li>emplace add a value to an object</li> <li>emplace_back add a value to an array</li> <li>push_back add a value to an array/object</li> <li>update merges objects</li> </ul>"},{"location":"api/basic_json/insert/#version-history","title":"Version history","text":"<ol> <li>Added in version 1.0.0.</li> <li>Added in version 1.0.0.</li> <li>Added in version 1.0.0.</li> <li>Added in version 1.0.0.</li> <li>Added in version 3.0.0.</li> </ol>"},{"location":"api/basic_json/invalid_iterator/","title":"nlohmann::basic_json::invalid_iterator","text":"<pre><code>class invalid_iterator : public exception;\n</code></pre> <p>This exception is thrown if iterators passed to a library function do not match the expected semantics.</p> <p>Exceptions have ids 2xx (see list of iterator errors).</p> <pre><code>classDiagram\n  direction LR\n\n    class std_exception [\"std::exception\"] {\n        &lt;&lt;interface&gt;&gt;\n    }\n\n    class json_exception [\"basic_json::exception\"] {\n        +const int id\n        +const char* what() const\n    }\n\n    class json_parse_error [\"basic_json::parse_error\"] {\n        +const std::size_t byte\n    }\n\n    class json_invalid_iterator [\"basic_json::invalid_iterator\"]\n    class json_type_error [\"basic_json::type_error\"]\n    class json_out_of_range [\"basic_json::out_of_range\"]\n    class json_other_error [\"basic_json::other_error\"]\n\n    std_exception &lt;|-- json_exception\n    json_exception &lt;|-- json_parse_error\n    json_exception &lt;|-- json_invalid_iterator\n    json_exception &lt;|-- json_type_error\n    json_exception &lt;|-- json_out_of_range\n    json_exception &lt;|-- json_other_error\n\n    style json_invalid_iterator fill:#CCCCFF</code></pre>"},{"location":"api/basic_json/invalid_iterator/#member-functions","title":"Member functions","text":"<ul> <li>what - returns explanatory string</li> </ul>"},{"location":"api/basic_json/invalid_iterator/#member-variables","title":"Member variables","text":"<ul> <li>id - the id of the exception</li> </ul>"},{"location":"api/basic_json/invalid_iterator/#examples","title":"Examples","text":"Example <p>The following code shows how a <code>invalid_iterator</code> exception can be caught.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    try\n    {\n        // calling iterator::key() on non-object iterator\n        json j = \"string\";\n        json::iterator it = j.begin();\n        auto k = it.key();\n    }\n    catch (const json::invalid_iterator&amp; e)\n    {\n        // output exception information\n        std::cout &lt;&lt; \"message: \" &lt;&lt; e.what() &lt;&lt; '\\n'\n                  &lt;&lt; \"exception id: \" &lt;&lt; e.id &lt;&lt; std::endl;\n    }\n}\n</code></pre> <p>Output:</p> <pre><code>message: [json.exception.invalid_iterator.207] cannot use key() for non-object iterators\nexception id: 207\n</code></pre>"},{"location":"api/basic_json/invalid_iterator/#see-also","title":"See also","text":"<ul> <li><code>exception</code> for the base class of all exceptions thrown by the library</li> <li>List of iterator errors</li> <li><code>parse_error</code> for exceptions indicating a parse error</li> <li><code>type_error</code> for exceptions indicating executing a member function with a wrong type</li> <li><code>out_of_range</code> for exceptions indicating access out of the defined range</li> <li><code>other_error</code> for exceptions indicating other library errors</li> </ul>"},{"location":"api/basic_json/invalid_iterator/#version-history","title":"Version history","text":"<ul> <li>Since version 3.0.0.</li> </ul>"},{"location":"api/basic_json/is_array/","title":"nlohmann::basic_json::is_array","text":"<pre><code>constexpr bool is_array() const noexcept;\n</code></pre> <p>This function returns <code>true</code> if and only if the JSON value is an array.</p>"},{"location":"api/basic_json/is_array/#return-value","title":"Return value","text":"<p><code>true</code> if type is an array, <code>false</code> otherwise.</p>"},{"location":"api/basic_json/is_array/#exception-safety","title":"Exception safety","text":"<p>No-throw guarantee: this member function never throws exceptions.</p>"},{"location":"api/basic_json/is_array/#complexity","title":"Complexity","text":"<p>Constant.</p>"},{"location":"api/basic_json/is_array/#examples","title":"Examples","text":"Example <p>The following code exemplifies <code>is_array()</code> for all JSON types.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create JSON values\n    json j_null;\n    json j_boolean = true;\n    json j_number_integer = 17;\n    json j_number_unsigned_integer = 12345678987654321u;\n    json j_number_float = 23.42;\n    json j_object = {{\"one\", 1}, {\"two\", 2}};\n    json j_array = {1, 2, 4, 8, 16};\n    json j_string = \"Hello, world\";\n    json j_binary = json::binary({1, 2, 3});\n\n    // call is_array()\n    std::cout &lt;&lt; std::boolalpha;\n    std::cout &lt;&lt; j_null.is_array() &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_boolean.is_array() &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_number_integer.is_array() &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_number_unsigned_integer.is_array() &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_number_float.is_array() &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_object.is_array() &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_array.is_array() &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_string.is_array() &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_binary.is_array() &lt;&lt; '\\n';\n}\n</code></pre> <p>Output:</p> <pre><code>false\nfalse\nfalse\nfalse\nfalse\nfalse\ntrue\nfalse\nfalse\n</code></pre>"},{"location":"api/basic_json/is_array/#version-history","title":"Version history","text":"<ul> <li>Added in version 1.0.0.</li> </ul>"},{"location":"api/basic_json/is_binary/","title":"nlohmann::basic_json::is_binary","text":"<pre><code>constexpr bool is_binary() const noexcept;\n</code></pre> <p>This function returns <code>true</code> if and only if the JSON value is a binary array.</p>"},{"location":"api/basic_json/is_binary/#return-value","title":"Return value","text":"<p><code>true</code> if type is binary, <code>false</code> otherwise.</p>"},{"location":"api/basic_json/is_binary/#exception-safety","title":"Exception safety","text":"<p>No-throw guarantee: this member function never throws exceptions.</p>"},{"location":"api/basic_json/is_binary/#complexity","title":"Complexity","text":"<p>Constant.</p>"},{"location":"api/basic_json/is_binary/#examples","title":"Examples","text":"Example <p>The following code exemplifies <code>is_binary()</code> for all JSON types.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create JSON values\n    json j_null;\n    json j_boolean = true;\n    json j_number_integer = 17;\n    json j_number_unsigned_integer = 12345678987654321u;\n    json j_number_float = 23.42;\n    json j_object = {{\"one\", 1}, {\"two\", 2}};\n    json j_array = {1, 2, 4, 8, 16};\n    json j_string = \"Hello, world\";\n    json j_binary = json::binary({1, 2, 3});\n\n    // call is_binary()\n    std::cout &lt;&lt; std::boolalpha;\n    std::cout &lt;&lt; j_null.is_binary() &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_boolean.is_binary() &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_number_integer.is_binary() &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_number_unsigned_integer.is_binary() &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_number_float.is_binary() &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_object.is_binary() &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_array.is_binary() &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_string.is_binary() &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_binary.is_binary() &lt;&lt; '\\n';\n}\n</code></pre> <p>Output:</p> <pre><code>false\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\ntrue\n</code></pre>"},{"location":"api/basic_json/is_binary/#version-history","title":"Version history","text":"<ul> <li>Added in version 3.8.0.</li> </ul>"},{"location":"api/basic_json/is_boolean/","title":"nlohmann::basic_json::is_boolean","text":"<pre><code>constexpr bool is_boolean() const noexcept;\n</code></pre> <p>This function returns <code>true</code> if and only if the JSON value is <code>true</code> or <code>false</code>.</p>"},{"location":"api/basic_json/is_boolean/#return-value","title":"Return value","text":"<p><code>true</code> if type is boolean, <code>false</code> otherwise.</p>"},{"location":"api/basic_json/is_boolean/#exception-safety","title":"Exception safety","text":"<p>No-throw guarantee: this member function never throws exceptions.</p>"},{"location":"api/basic_json/is_boolean/#complexity","title":"Complexity","text":"<p>Constant.</p>"},{"location":"api/basic_json/is_boolean/#examples","title":"Examples","text":"Example <p>The following code exemplifies <code>is_boolean()</code> for all JSON types.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create JSON values\n    json j_null;\n    json j_boolean = true;\n    json j_number_integer = 17;\n    json j_number_unsigned_integer = 12345678987654321u;\n    json j_number_float = 23.42;\n    json j_object = {{\"one\", 1}, {\"two\", 2}};\n    json j_array = {1, 2, 4, 8, 16};\n    json j_string = \"Hello, world\";\n    json j_binary = json::binary({1, 2, 3});\n\n    // call is_boolean()\n    std::cout &lt;&lt; std::boolalpha;\n    std::cout &lt;&lt; j_null.is_boolean() &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_boolean.is_boolean() &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_number_integer.is_boolean() &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_number_unsigned_integer.is_boolean() &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_number_float.is_boolean() &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_object.is_boolean() &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_array.is_boolean() &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_string.is_boolean() &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_binary.is_boolean() &lt;&lt; '\\n';\n}\n</code></pre> <p>Output:</p> <pre><code>false\ntrue\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\n</code></pre>"},{"location":"api/basic_json/is_boolean/#version-history","title":"Version history","text":"<ul> <li>Added in version 1.0.0.</li> </ul>"},{"location":"api/basic_json/is_discarded/","title":"nlohmann::basic_json::is_discarded","text":"<pre><code>constexpr bool is_discarded() const noexcept;\n</code></pre> <p>This function returns <code>true</code> for a JSON value if either:</p> <ul> <li>the value was discarded during parsing with a callback function (see <code>parser_callback_t</code>), or</li> <li>the value is the result of parsing invalid JSON with parameter <code>allow_exceptions</code> set to <code>false</code>; see   <code>parse</code> for more information.</li> </ul>"},{"location":"api/basic_json/is_discarded/#return-value","title":"Return value","text":"<p><code>true</code> if type is discarded, <code>false</code> otherwise.</p>"},{"location":"api/basic_json/is_discarded/#exception-safety","title":"Exception safety","text":"<p>No-throw guarantee: this member function never throws exceptions.</p>"},{"location":"api/basic_json/is_discarded/#complexity","title":"Complexity","text":"<p>Constant.</p>"},{"location":"api/basic_json/is_discarded/#notes","title":"Notes","text":"<p>Comparisons</p> <p>Discarded values are never compared equal with <code>operator==</code>. That is, checking whether a JSON value <code>j</code> is discarded will only work via:</p> <pre><code>j.is_discarded()\n</code></pre> <p>because</p> <pre><code>j == json::value_t::discarded\n</code></pre> <p>will always be <code>false</code>.</p> <p>Removal during parsing with callback functions</p> <p>When a value is discarded by a callback function (see <code>parser_callback_t</code>) during parsing, then it is removed when it is part of a structured value. For instance, if the second value of an array is discarded, instead of <code>[null, discarded, false]</code>, the array <code>[null, false]</code> is returned. If the top-level value itself is discarded by the callback, the <code>parse</code> call returns a <code>null</code> value.</p> <p>After a successful parse, this function always returns <code>false</code>: discarded values can only occur during parsing and are either removed when inside a structured value or replaced by <code>null</code> at the top level. The exception is parsing with <code>allow_exceptions</code> set to <code>false</code>: a parse error then yields a discarded value for which this function returns <code>true</code> (see <code>parse</code>).</p>"},{"location":"api/basic_json/is_discarded/#examples","title":"Examples","text":"Example <p>The following code exemplifies <code>is_discarded()</code> for all JSON types.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create JSON values\n    json j_null;\n    json j_boolean = true;\n    json j_number_integer = 17;\n    json j_number_unsigned_integer = 12345678987654321u;\n    json j_number_float = 23.42;\n    json j_object = {{\"one\", 1}, {\"two\", 2}};\n    json j_array = {1, 2, 4, 8, 16};\n    json j_string = \"Hello, world\";\n    json j_binary = json::binary({1, 2, 3});\n\n    // call is_discarded()\n    std::cout &lt;&lt; std::boolalpha;\n    std::cout &lt;&lt; j_null.is_discarded() &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_boolean.is_discarded() &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_number_integer.is_discarded() &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_number_unsigned_integer.is_discarded() &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_number_float.is_discarded() &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_object.is_discarded() &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_array.is_discarded() &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_string.is_discarded() &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_binary.is_discarded() &lt;&lt; '\\n';\n}\n</code></pre> <p>Output:</p> <pre><code>false\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\n</code></pre>"},{"location":"api/basic_json/is_discarded/#version-history","title":"Version history","text":"<ul> <li>Added in version 1.0.0.</li> </ul>"},{"location":"api/basic_json/is_null/","title":"nlohmann::basic_json::is_null","text":"<pre><code>constexpr bool is_null() const noexcept;\n</code></pre> <p>This function returns <code>true</code> if and only if the JSON value is <code>null</code>.</p>"},{"location":"api/basic_json/is_null/#return-value","title":"Return value","text":"<p><code>true</code> if type is <code>null</code>, <code>false</code> otherwise.</p>"},{"location":"api/basic_json/is_null/#exception-safety","title":"Exception safety","text":"<p>No-throw guarantee: this member function never throws exceptions.</p>"},{"location":"api/basic_json/is_null/#complexity","title":"Complexity","text":"<p>Constant.</p>"},{"location":"api/basic_json/is_null/#examples","title":"Examples","text":"Example <p>The following code exemplifies <code>is_null()</code> for all JSON types.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create JSON values\n    json j_null;\n    json j_boolean = true;\n    json j_number_integer = 17;\n    json j_number_unsigned_integer = 12345678987654321u;\n    json j_number_float = 23.42;\n    json j_object = {{\"one\", 1}, {\"two\", 2}};\n    json j_array = {1, 2, 4, 8, 16};\n    json j_string = \"Hello, world\";\n    json j_binary = json::binary({1, 2, 3});\n\n    // call is_null()\n    std::cout &lt;&lt; std::boolalpha;\n    std::cout &lt;&lt; j_null.is_null() &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_boolean.is_null() &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_number_integer.is_null() &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_number_unsigned_integer.is_null() &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_number_float.is_null() &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_object.is_null() &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_array.is_null() &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_string.is_null() &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_binary.is_null() &lt;&lt; '\\n';\n}\n</code></pre> <p>Output:</p> <pre><code>true\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\n</code></pre>"},{"location":"api/basic_json/is_null/#version-history","title":"Version history","text":"<ul> <li>Added in version 1.0.0.</li> </ul>"},{"location":"api/basic_json/is_number/","title":"nlohmann::basic_json::is_number","text":"<pre><code>constexpr bool is_number() const noexcept;\n</code></pre> <p>This function returns <code>true</code> if and only if the JSON value is a number. This includes both integer (signed and unsigned) and floating-point values.</p>"},{"location":"api/basic_json/is_number/#return-value","title":"Return value","text":"<p><code>true</code> if type is number (regardless whether integer, unsigned integer, or floating-point), <code>false</code> otherwise.</p>"},{"location":"api/basic_json/is_number/#exception-safety","title":"Exception safety","text":"<p>No-throw guarantee: this member function never throws exceptions.</p>"},{"location":"api/basic_json/is_number/#complexity","title":"Complexity","text":"<p>Constant.</p>"},{"location":"api/basic_json/is_number/#possible-implementation","title":"Possible implementation","text":"<pre><code>constexpr bool is_number() const noexcept\n{\n    return is_number_integer() || is_number_float();\n}\n</code></pre>"},{"location":"api/basic_json/is_number/#examples","title":"Examples","text":"Example <p>The following code exemplifies <code>is_number()</code> for all JSON types.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create JSON values\n    json j_null;\n    json j_boolean = true;\n    json j_number_integer = 17;\n    json j_number_unsigned_integer = 12345678987654321u;\n    json j_number_float = 23.42;\n    json j_object = {{\"one\", 1}, {\"two\", 2}};\n    json j_array = {1, 2, 4, 8, 16};\n    json j_string = \"Hello, world\";\n    json j_binary = json::binary({1, 2, 3});\n\n    // call is_number()\n    std::cout &lt;&lt; std::boolalpha;\n    std::cout &lt;&lt; j_null.is_number() &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_boolean.is_number() &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_number_integer.is_number() &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_number_unsigned_integer.is_number() &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_number_float.is_number() &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_object.is_number() &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_array.is_number() &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_string.is_number() &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_binary.is_number() &lt;&lt; '\\n';\n}\n</code></pre> <p>Output:</p> <pre><code>false\nfalse\ntrue\ntrue\ntrue\nfalse\nfalse\nfalse\nfalse\n</code></pre>"},{"location":"api/basic_json/is_number/#see-also","title":"See also","text":"<ul> <li>is_number_integer() check if the value is an integer or unsigned integer number</li> <li>is_number_unsigned() check if the value is an unsigned integer number</li> <li>is_number_float() check if the value is a floating-point number</li> </ul>"},{"location":"api/basic_json/is_number/#version-history","title":"Version history","text":"<ul> <li>Added in version 1.0.0.</li> <li>Extended to also return <code>true</code> for unsigned integers in 2.0.0.</li> </ul>"},{"location":"api/basic_json/is_number_float/","title":"nlohmann::basic_json::is_number_float","text":"<pre><code>constexpr bool is_number_float() const noexcept;\n</code></pre> <p>This function returns <code>true</code> if and only if the JSON value is a floating-point number. This excludes signed and unsigned integer values.</p>"},{"location":"api/basic_json/is_number_float/#return-value","title":"Return value","text":"<p><code>true</code> if type is a floating-point number, <code>false</code> otherwise.</p>"},{"location":"api/basic_json/is_number_float/#exception-safety","title":"Exception safety","text":"<p>No-throw guarantee: this member function never throws exceptions.</p>"},{"location":"api/basic_json/is_number_float/#complexity","title":"Complexity","text":"<p>Constant.</p>"},{"location":"api/basic_json/is_number_float/#examples","title":"Examples","text":"Example <p>The following code exemplifies <code>is_number_float()</code> for all JSON types.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create JSON values\n    json j_null;\n    json j_boolean = true;\n    json j_number_integer = 17;\n    json j_number_unsigned_integer = 12345678987654321u;\n    json j_number_float = 23.42;\n    json j_object = {{\"one\", 1}, {\"two\", 2}};\n    json j_array = {1, 2, 4, 8, 16};\n    json j_string = \"Hello, world\";\n    json j_binary = json::binary({1, 2, 3});\n\n    // call is_number_float()\n    std::cout &lt;&lt; std::boolalpha;\n    std::cout &lt;&lt; j_null.is_number_float() &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_boolean.is_number_float() &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_number_integer.is_number_float() &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_number_unsigned_integer.is_number_float() &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_number_float.is_number_float() &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_object.is_number_float() &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_array.is_number_float() &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_string.is_number_float() &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_binary.is_number_float() &lt;&lt; '\\n';\n}\n</code></pre> <p>Output:</p> <pre><code>false\nfalse\nfalse\nfalse\ntrue\nfalse\nfalse\nfalse\nfalse\n</code></pre>"},{"location":"api/basic_json/is_number_float/#see-also","title":"See also","text":"<ul> <li>is_number() check if the value is a number</li> <li>is_number_integer() check if the value is an integer or unsigned integer number</li> <li>is_number_unsigned() check if the value is an unsigned integer number</li> </ul>"},{"location":"api/basic_json/is_number_float/#version-history","title":"Version history","text":"<ul> <li>Added in version 1.0.0.</li> </ul>"},{"location":"api/basic_json/is_number_integer/","title":"nlohmann::basic_json::is_number_integer","text":"<pre><code>constexpr bool is_number_integer() const noexcept;\n</code></pre> <p>This function returns <code>true</code> if and only if the JSON value is a signed or unsigned integer number. This excludes floating-point values.</p>"},{"location":"api/basic_json/is_number_integer/#return-value","title":"Return value","text":"<p><code>true</code> if type is an integer or unsigned integer number, <code>false</code> otherwise.</p>"},{"location":"api/basic_json/is_number_integer/#exception-safety","title":"Exception safety","text":"<p>No-throw guarantee: this member function never throws exceptions.</p>"},{"location":"api/basic_json/is_number_integer/#complexity","title":"Complexity","text":"<p>Constant.</p>"},{"location":"api/basic_json/is_number_integer/#examples","title":"Examples","text":"Example <p>The following code exemplifies <code>is_number_integer()</code> for all JSON types.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create JSON values\n    json j_null;\n    json j_boolean = true;\n    json j_number_integer = 17;\n    json j_number_unsigned_integer = 12345678987654321u;\n    json j_number_float = 23.42;\n    json j_object = {{\"one\", 1}, {\"two\", 2}};\n    json j_array = {1, 2, 4, 8, 16};\n    json j_string = \"Hello, world\";\n    json j_binary = json::binary({1, 2, 3});\n\n    // call is_number_integer()\n    std::cout &lt;&lt; std::boolalpha;\n    std::cout &lt;&lt; j_null.is_number_integer() &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_boolean.is_number_integer() &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_number_integer.is_number_integer() &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_number_unsigned_integer.is_number_integer() &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_number_float.is_number_integer() &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_object.is_number_integer() &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_array.is_number_integer() &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_string.is_number_integer() &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_binary.is_number_integer() &lt;&lt; '\\n';\n}\n</code></pre> <p>Output:</p> <pre><code>false\nfalse\ntrue\ntrue\nfalse\nfalse\nfalse\nfalse\nfalse\n</code></pre>"},{"location":"api/basic_json/is_number_integer/#see-also","title":"See also","text":"<ul> <li>is_number() check if the value is a number</li> <li>is_number_unsigned() check if the value is an unsigned integer number</li> <li>is_number_float() check if the value is a floating-point number</li> </ul>"},{"location":"api/basic_json/is_number_integer/#version-history","title":"Version history","text":"<ul> <li>Added in version 1.0.0.</li> <li>Extended to also return <code>true</code> for unsigned integers in 2.0.0.</li> </ul>"},{"location":"api/basic_json/is_number_unsigned/","title":"nlohmann::basic_json::is_number_unsigned","text":"<pre><code>constexpr bool is_number_unsigned() const noexcept;\n</code></pre> <p>This function returns <code>true</code> if and only if the JSON value is an unsigned integer number. This excludes floating-point and signed integer values.</p>"},{"location":"api/basic_json/is_number_unsigned/#return-value","title":"Return value","text":"<p><code>true</code> if type is an unsigned integer number, <code>false</code> otherwise.</p>"},{"location":"api/basic_json/is_number_unsigned/#exception-safety","title":"Exception safety","text":"<p>No-throw guarantee: this member function never throws exceptions.</p>"},{"location":"api/basic_json/is_number_unsigned/#complexity","title":"Complexity","text":"<p>Constant.</p>"},{"location":"api/basic_json/is_number_unsigned/#examples","title":"Examples","text":"Example <p>The following code exemplifies <code>is_number_unsigned()</code> for all JSON types.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create JSON values\n    json j_null;\n    json j_boolean = true;\n    json j_number_integer = 17;\n    json j_number_unsigned_integer = 12345678987654321u;\n    json j_number_float = 23.42;\n    json j_object = {{\"one\", 1}, {\"two\", 2}};\n    json j_array = {1, 2, 4, 8, 16};\n    json j_string = \"Hello, world\";\n    json j_binary = json::binary({1, 2, 3});\n\n    // call is_number_unsigned()\n    std::cout &lt;&lt; std::boolalpha;\n    std::cout &lt;&lt; j_null.is_number_unsigned() &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_boolean.is_number_unsigned() &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_number_integer.is_number_unsigned() &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_number_unsigned_integer.is_number_unsigned() &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_number_float.is_number_unsigned() &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_object.is_number_unsigned() &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_array.is_number_unsigned() &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_string.is_number_unsigned() &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_binary.is_number_unsigned() &lt;&lt; '\\n';\n}\n</code></pre> <p>Output:</p> <pre><code>false\nfalse\nfalse\ntrue\nfalse\nfalse\nfalse\nfalse\nfalse\n</code></pre>"},{"location":"api/basic_json/is_number_unsigned/#see-also","title":"See also","text":"<ul> <li>is_number() check if the value is a number</li> <li>is_number_integer() check if the value is an integer or unsigned integer number</li> <li>is_number_float() check if the value is a floating-point number</li> </ul>"},{"location":"api/basic_json/is_number_unsigned/#version-history","title":"Version history","text":"<ul> <li>Added in version 2.0.0.</li> </ul>"},{"location":"api/basic_json/is_object/","title":"nlohmann::basic_json::is_object","text":"<pre><code>constexpr bool is_object() const noexcept;\n</code></pre> <p>This function returns <code>true</code> if and only if the JSON value is an object.</p>"},{"location":"api/basic_json/is_object/#return-value","title":"Return value","text":"<p><code>true</code> if type is an object, <code>false</code> otherwise.</p>"},{"location":"api/basic_json/is_object/#exception-safety","title":"Exception safety","text":"<p>No-throw guarantee: this member function never throws exceptions.</p>"},{"location":"api/basic_json/is_object/#complexity","title":"Complexity","text":"<p>Constant.</p>"},{"location":"api/basic_json/is_object/#examples","title":"Examples","text":"Example <p>The following code exemplifies <code>is_object()</code> for all JSON types.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create JSON values\n    json j_null;\n    json j_boolean = true;\n    json j_number_integer = 17;\n    json j_number_float = 23.42;\n    json j_number_unsigned_integer = 12345678987654321u;\n    json j_object = {{\"one\", 1}, {\"two\", 2}};\n    json j_array = {1, 2, 4, 8, 16};\n    json j_string = \"Hello, world\";\n    json j_binary = json::binary({1, 2, 3});\n\n    // call is_object()\n    std::cout &lt;&lt; std::boolalpha;\n    std::cout &lt;&lt; j_null.is_object() &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_boolean.is_object() &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_number_integer.is_object() &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_number_unsigned_integer.is_object() &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_number_float.is_object() &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_object.is_object() &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_array.is_object() &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_string.is_object() &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_binary.is_object() &lt;&lt; '\\n';\n}\n</code></pre> <p>Output:</p> <pre><code>false\nfalse\nfalse\nfalse\nfalse\ntrue\nfalse\nfalse\nfalse\n</code></pre>"},{"location":"api/basic_json/is_object/#version-history","title":"Version history","text":"<ul> <li>Added in version 1.0.0.</li> </ul>"},{"location":"api/basic_json/is_primitive/","title":"nlohmann::basic_json::is_primitive","text":"<pre><code>constexpr bool is_primitive() const noexcept;\n</code></pre> <p>This function returns <code>true</code> if and only if the JSON type is primitive (string, number, boolean, <code>null</code>, binary).</p>"},{"location":"api/basic_json/is_primitive/#return-value","title":"Return value","text":"<p><code>true</code> if type is primitive (string, number, boolean, <code>null</code>, or binary), <code>false</code> otherwise.</p>"},{"location":"api/basic_json/is_primitive/#exception-safety","title":"Exception safety","text":"<p>No-throw guarantee: this member function never throws exceptions.</p>"},{"location":"api/basic_json/is_primitive/#complexity","title":"Complexity","text":"<p>Constant.</p>"},{"location":"api/basic_json/is_primitive/#possible-implementation","title":"Possible implementation","text":"<pre><code>constexpr bool is_primitive() const noexcept\n{\n    return is_null() || is_string() || is_boolean() || is_number() || is_binary();\n}\n</code></pre>"},{"location":"api/basic_json/is_primitive/#notes","title":"Notes","text":"<p>The term primitive stems from RFC 8259:</p> <p>JSON can represent four primitive types (strings, numbers, booleans, and null) and two structured types (objects and arrays).</p> <p>This library extends primitive types to binary types, because binary types are roughly comparable to strings. Hence, <code>is_primitive()</code> returns <code>true</code> for binary values.</p>"},{"location":"api/basic_json/is_primitive/#examples","title":"Examples","text":"Example <p>The following code exemplifies <code>is_primitive()</code> for all JSON types.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create JSON values\n    json j_null;\n    json j_boolean = true;\n    json j_number_integer = 17;\n    json j_number_float = 23.42;\n    json j_number_unsigned_integer = 12345678987654321u;\n    json j_object = {{\"one\", 1}, {\"two\", 2}};\n    json j_array = {1, 2, 4, 8, 16};\n    json j_string = \"Hello, world\";\n    json j_binary = json::binary({1, 2, 3});\n\n    // call is_primitive()\n    std::cout &lt;&lt; std::boolalpha;\n    std::cout &lt;&lt; j_null.is_primitive() &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_boolean.is_primitive() &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_number_integer.is_primitive() &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_number_unsigned_integer.is_primitive() &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_number_float.is_primitive() &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_object.is_primitive() &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_array.is_primitive() &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_string.is_primitive() &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_binary.is_primitive() &lt;&lt; '\\n';\n}\n</code></pre> <p>Output:</p> <pre><code>true\ntrue\ntrue\ntrue\ntrue\nfalse\nfalse\ntrue\ntrue\n</code></pre>"},{"location":"api/basic_json/is_primitive/#see-also","title":"See also","text":"<ul> <li>is_structured() returns whether the JSON value is structured</li> <li>is_null() returns whether the JSON value is <code>null</code></li> <li>is_string() returns whether the JSON value is a string</li> <li>is_boolean() returns whether the JSON value is a boolean</li> <li>is_number() returns whether the JSON value is a number</li> <li>is_binary() returns whether the JSON value is a binary array</li> </ul>"},{"location":"api/basic_json/is_primitive/#version-history","title":"Version history","text":"<ul> <li>Added in version 1.0.0.</li> <li>Extended to return <code>true</code> for binary types in version 3.8.0.</li> </ul>"},{"location":"api/basic_json/is_string/","title":"nlohmann::basic_json::is_string","text":"<pre><code>constexpr bool is_string() const noexcept;\n</code></pre> <p>This function returns <code>true</code> if and only if the JSON value is a string.</p>"},{"location":"api/basic_json/is_string/#return-value","title":"Return value","text":"<p><code>true</code> if type is a string, <code>false</code> otherwise.</p>"},{"location":"api/basic_json/is_string/#exception-safety","title":"Exception safety","text":"<p>No-throw guarantee: this member function never throws exceptions.</p>"},{"location":"api/basic_json/is_string/#complexity","title":"Complexity","text":"<p>Constant.</p>"},{"location":"api/basic_json/is_string/#examples","title":"Examples","text":"Example <p>The following code exemplifies <code>is_string()</code> for all JSON types.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create JSON values\n    json j_null;\n    json j_boolean = true;\n    json j_number_integer = 17;\n    json j_number_float = 23.42;\n    json j_number_unsigned_integer = 12345678987654321u;\n    json j_object = {{\"one\", 1}, {\"two\", 2}};\n    json j_array = {1, 2, 4, 8, 16};\n    json j_string = \"Hello, world\";\n    json j_binary = json::binary({1, 2, 3});\n\n    // call is_string()\n    std::cout &lt;&lt; std::boolalpha;\n    std::cout &lt;&lt; j_null.is_string() &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_boolean.is_string() &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_number_integer.is_string() &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_number_unsigned_integer.is_string() &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_number_float.is_string() &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_object.is_string() &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_array.is_string() &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_string.is_string() &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_binary.is_string() &lt;&lt; '\\n';\n}\n</code></pre> <p>Output:</p> <pre><code>false\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\ntrue\nfalse\n</code></pre>"},{"location":"api/basic_json/is_string/#version-history","title":"Version history","text":"<ul> <li>Added in version 1.0.0.</li> </ul>"},{"location":"api/basic_json/is_structured/","title":"nlohmann::basic_json::is_structured","text":"<pre><code>constexpr bool is_structured() const noexcept;\n</code></pre> <p>This function returns <code>true</code> if and only if the JSON type is structured (array or object).</p>"},{"location":"api/basic_json/is_structured/#return-value","title":"Return value","text":"<p><code>true</code> if type is structured (array or object), <code>false</code> otherwise.</p>"},{"location":"api/basic_json/is_structured/#exception-safety","title":"Exception safety","text":"<p>No-throw guarantee: this member function never throws exceptions.</p>"},{"location":"api/basic_json/is_structured/#complexity","title":"Complexity","text":"<p>Constant.</p>"},{"location":"api/basic_json/is_structured/#possible-implementation","title":"Possible implementation","text":"<pre><code>constexpr bool is_structured() const noexcept\n{\n    return is_array() || is_object();\n}\n</code></pre>"},{"location":"api/basic_json/is_structured/#notes","title":"Notes","text":"<p>The term structured stems from RFC 8259:</p> <p>JSON can represent four primitive types (strings, numbers, booleans, and null) and two structured types (objects and arrays).</p> <p>Note that though strings are containers in C++, they are treated as primitive values in JSON.</p>"},{"location":"api/basic_json/is_structured/#examples","title":"Examples","text":"Example <p>The following code exemplifies <code>is_structured()</code> for all JSON types.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create JSON values\n    json j_null;\n    json j_boolean = true;\n    json j_number_integer = 17;\n    json j_number_float = 23.42;\n    json j_number_unsigned_integer = 12345678987654321u;\n    json j_object = {{\"one\", 1}, {\"two\", 2}};\n    json j_array = {1, 2, 4, 8, 16};\n    json j_string = \"Hello, world\";\n    json j_binary = json::binary({1, 2, 3});\n\n    // call is_structured()\n    std::cout &lt;&lt; std::boolalpha;\n    std::cout &lt;&lt; j_null.is_structured() &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_boolean.is_structured() &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_number_integer.is_structured() &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_number_unsigned_integer.is_structured() &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_number_float.is_structured() &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_object.is_structured() &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_array.is_structured() &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_string.is_structured() &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_binary.is_structured() &lt;&lt; '\\n';\n}\n</code></pre> <p>Output:</p> <pre><code>false\nfalse\nfalse\nfalse\nfalse\ntrue\ntrue\nfalse\nfalse\n</code></pre>"},{"location":"api/basic_json/is_structured/#see-also","title":"See also","text":"<ul> <li>is_primitive() returns whether JSON value is primitive</li> <li>is_array() returns whether the value is an array</li> <li>is_object() returns whether the value is an object</li> </ul>"},{"location":"api/basic_json/is_structured/#version-history","title":"Version history","text":"<ul> <li>Added in version 1.0.0.</li> </ul>"},{"location":"api/basic_json/items/","title":"nlohmann::basic_json::items","text":"<pre><code>iteration_proxy&lt;iterator&gt; items() noexcept;\niteration_proxy&lt;const_iterator&gt; items() const noexcept;\n</code></pre> <p>This function allows accessing <code>iterator::key()</code> and <code>iterator::value()</code> during range-based for loops. In these loops, a reference to the JSON values is returned, so there is no access to the underlying iterator.</p> <p>For loop without <code>items()</code> function:</p> <pre><code>for (auto it = j_object.begin(); it != j_object.end(); ++it)\n{\n    std::cout &lt;&lt; \"key: \" &lt;&lt; it.key() &lt;&lt; \", value:\" &lt;&lt; it.value() &lt;&lt; '\\n';\n}\n</code></pre> <p>Range-based for loop without <code>items()</code> function:</p> <pre><code>for (auto it : j_object)\n{\n    // \"it\" is of type json::reference and has no key() member\n    std::cout &lt;&lt; \"value: \" &lt;&lt; it &lt;&lt; '\\n';\n}\n</code></pre> <p>Range-based for loop with <code>items()</code> function:</p> <pre><code>for (auto&amp; el : j_object.items())\n{\n    std::cout &lt;&lt; \"key: \" &lt;&lt; el.key() &lt;&lt; \", value:\" &lt;&lt; el.value() &lt;&lt; '\\n';\n}\n</code></pre> <p>The <code>items()</code> function also allows using structured bindings (C++17):</p> <pre><code>for (auto&amp; [key, val] : j_object.items())\n{\n    std::cout &lt;&lt; \"key: \" &lt;&lt; key &lt;&lt; \", value:\" &lt;&lt; val &lt;&lt; '\\n';\n}\n</code></pre>"},{"location":"api/basic_json/items/#return-value","title":"Return value","text":"<p>iteration proxy object wrapping the current value with an interface to use in range-based for loops</p>"},{"location":"api/basic_json/items/#exception-safety","title":"Exception safety","text":"<p>Strong guarantee: if an exception is thrown, there are no changes in the JSON value.</p>"},{"location":"api/basic_json/items/#complexity","title":"Complexity","text":"<p>Constant.</p>"},{"location":"api/basic_json/items/#notes","title":"Notes","text":"<p>When iterating over an array, <code>key()</code> will return the index of the element as string (see example). For primitive types (e.g., numbers), <code>key()</code> returns an empty string.</p> <p>Lifetime issues</p> <p>Using <code>items()</code> on temporary objects is dangerous. Make sure the object's lifetime exceeds the iteration. See #2040 for more information.</p>"},{"location":"api/basic_json/items/#examples","title":"Examples","text":"Example <p>The following code shows an example for <code>items()</code>.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create JSON values\n    json j_object = {{\"one\", 1}, {\"two\", 2}};\n    json j_array = {1, 2, 4, 8, 16};\n\n    // example for an object\n    for (auto&amp; x : j_object.items())\n    {\n        std::cout &lt;&lt; \"key: \" &lt;&lt; x.key() &lt;&lt; \", value: \" &lt;&lt; x.value() &lt;&lt; '\\n';\n    }\n\n    // example for an array\n    for (auto&amp; x : j_array.items())\n    {\n        std::cout &lt;&lt; \"key: \" &lt;&lt; x.key() &lt;&lt; \", value: \" &lt;&lt; x.value() &lt;&lt; '\\n';\n    }\n}\n</code></pre> <p>Output:</p> <pre><code>key: one, value: 1\nkey: two, value: 2\nkey: 0, value: 1\nkey: 1, value: 2\nkey: 2, value: 4\nkey: 3, value: 8\nkey: 4, value: 16\n</code></pre>"},{"location":"api/basic_json/items/#see-also","title":"See also","text":"<ul> <li>begin returns an iterator to the first element</li> <li>end returns an iterator to one past the last element</li> </ul>"},{"location":"api/basic_json/items/#version-history","title":"Version history","text":"<ul> <li>Added <code>iterator_wrapper</code> in version 3.0.0.</li> <li>Added <code>items</code> and deprecated <code>iterator_wrapper</code> in version 3.1.0.</li> <li>Added structured binding support in version 3.5.0.</li> </ul> <p>Deprecation</p> <p>This function replaces the static function <code>iterator_wrapper</code> which was introduced in version 1.0.0, but has been deprecated in version 3.1.0. Function <code>iterator_wrapper</code> will be removed in version 4.0.0. Please replace all occurrences of <code>iterator_wrapper(j)</code> with <code>j.items()</code>.</p> <p>You should be warned by your compiler with a <code>-Wdeprecated-declarations</code> warning if you are using a deprecated function.</p>"},{"location":"api/basic_json/json_base_class_t/","title":"nlohmann::basic_json::json_base_class_t","text":"<pre><code>using json_base_class_t = detail::json_base_class&lt;CustomBaseClass&gt;;\n</code></pre> <p>The base class used to inject custom functionality into each instance of <code>basic_json</code>. Examples of such functionality might be metadata, additional member functions (e.g., visitors), or other application-specific code.</p>"},{"location":"api/basic_json/json_base_class_t/#template-parameters","title":"Template parameters","text":"<code>CustomBaseClass</code> the base class to be added to <code>basic_json</code>"},{"location":"api/basic_json/json_base_class_t/#notes","title":"Notes","text":""},{"location":"api/basic_json/json_base_class_t/#default-type","title":"Default type","text":"<p>The default value for <code>CustomBaseClass</code> is <code>void</code>. In this case, an empty base class is used and no additional functionality is injected.</p>"},{"location":"api/basic_json/json_base_class_t/#limitations","title":"Limitations","text":"<p>The type <code>CustomBaseClass</code> has to be a default-constructible class. <code>basic_json</code> only supports copy/move construction/assignment if <code>CustomBaseClass</code> does so as well.</p>"},{"location":"api/basic_json/json_base_class_t/#examples","title":"Examples","text":"Example <p>The following code shows how to inject custom data and methods for each node.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nclass visitor_adaptor_with_metadata\n{\n  public:\n    template &lt;class Fnc&gt;\n    void visit(const Fnc&amp; fnc) const;\n\n    int metadata = 42;\n  private:\n    template &lt;class Ptr, class Fnc&gt;\n    void do_visit(const Ptr&amp; ptr, const Fnc&amp; fnc) const;\n};\n\nusing json = nlohmann::basic_json &lt;\n             std::map,\n             std::vector,\n             std::string,\n             bool,\n             std::int64_t,\n             std::uint64_t,\n             double,\n             std::allocator,\n             nlohmann::adl_serializer,\n             std::vector&lt;std::uint8_t&gt;,\n             visitor_adaptor_with_metadata\n             &gt;;\n\ntemplate &lt;class Fnc&gt;\nvoid visitor_adaptor_with_metadata::visit(const Fnc&amp; fnc) const\n{\n    do_visit(json::json_pointer{}, fnc);\n}\n\ntemplate &lt;class Ptr, class Fnc&gt;\nvoid visitor_adaptor_with_metadata::do_visit(const Ptr&amp; ptr, const Fnc&amp; fnc) const\n{\n    using value_t = nlohmann::detail::value_t;\n    const json&amp; j = *static_cast&lt;const json*&gt;(this);\n    switch (j.type())\n    {\n        case value_t::object:\n            fnc(ptr, j);\n            for (const auto&amp; entry : j.items())\n            {\n                entry.value().do_visit(ptr / entry.key(), fnc);\n            }\n            break;\n        case value_t::array:\n            fnc(ptr, j);\n            for (std::size_t i = 0; i &lt; j.size(); ++i)\n            {\n                j.at(i).do_visit(ptr / std::to_string(i), fnc);\n            }\n            break;\n        case value_t::null:\n        case value_t::string:\n        case value_t::boolean:\n        case value_t::number_integer:\n        case value_t::number_unsigned:\n        case value_t::number_float:\n        case value_t::binary:\n            fnc(ptr, j);\n            break;\n        case value_t::discarded:\n        default:\n            break;\n    }\n}\n\nint main()\n{\n    // create a json object\n    json j;\n    j[\"null\"];\n    j[\"object\"][\"uint\"] = 1U;\n    j[\"object\"].metadata = 21;\n\n    // visit and output\n    j.visit(\n         [&amp;](const json::json_pointer &amp; p,\n             const json &amp; j)\n    {\n        std::cout &lt;&lt; (p.empty() ? std::string{\"/\"} : p.to_string())\n                  &lt;&lt; \" - metadata = \" &lt;&lt; j.metadata &lt;&lt; \" -&gt; \" &lt;&lt; j.dump() &lt;&lt; '\\n';\n    });\n}\n</code></pre> <p>Output:</p> <pre><code>/ - metadata = 42 -&gt; {\"null\":null,\"object\":{\"uint\":1}}\n/null - metadata = 42 -&gt; null\n/object - metadata = 21 -&gt; {\"uint\":1}\n/object/uint - metadata = 42 -&gt; 1\n</code></pre>"},{"location":"api/basic_json/json_base_class_t/#version-history","title":"Version history","text":"<ul> <li>Added in version 3.12.0.</li> </ul>"},{"location":"api/basic_json/json_serializer/","title":"nlohmann::basic_json::json_serializer","text":"<pre><code>template&lt;typename T, typename SFINAE&gt;\nusing json_serializer = JSONSerializer&lt;T, SFINAE&gt;;\n</code></pre>"},{"location":"api/basic_json/json_serializer/#template-parameters","title":"Template parameters","text":"<code>T</code> type to convert; will be used in the <code>to_json</code>/<code>from_json</code> functions <code>SFINAE</code> type to add compile type checks via SFINAE; usually <code>void</code>"},{"location":"api/basic_json/json_serializer/#notes","title":"Notes","text":""},{"location":"api/basic_json/json_serializer/#default-type","title":"Default type","text":"<p>The default values for <code>json_serializer</code> is <code>adl_serializer</code>.</p>"},{"location":"api/basic_json/json_serializer/#examples","title":"Examples","text":"Example <p>The example below shows how a conversion of a non-default-constructible type is implemented via a specialization of the <code>adl_serializer</code>.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nnamespace ns\n{\n// a simple struct to model a person (not default constructible)\nstruct person\n{\n    person(std::string n, std::string a, int aa)\n        : name(std::move(n)), address(std::move(a)), age(aa)\n    {}\n\n    std::string name;\n    std::string address;\n    int age;\n};\n} // namespace ns\n\nnamespace nlohmann\n{\ntemplate &lt;&gt;\nstruct adl_serializer&lt;ns::person&gt;\n{\n    static ns::person from_json(const json&amp; j)\n    {\n        return {j.at(\"name\"), j.at(\"address\"), j.at(\"age\")};\n    }\n\n    // Here's the catch! You must provide a to_json method! Otherwise, you\n    // will not be able to convert person to json, since you fully\n    // specialized adl_serializer on that type\n    static void to_json(json&amp; j, ns::person p)\n    {\n        j[\"name\"] = p.name;\n        j[\"address\"] = p.address;\n        j[\"age\"] = p.age;\n    }\n};\n} // namespace nlohmann\n\nint main()\n{\n    json j;\n    j[\"name\"] = \"Ned Flanders\";\n    j[\"address\"] = \"744 Evergreen Terrace\";\n    j[\"age\"] = 60;\n\n    auto p = j.get&lt;ns::person&gt;();\n\n    std::cout &lt;&lt; p.name &lt;&lt; \" (\" &lt;&lt; p.age &lt;&lt; \") lives in \" &lt;&lt; p.address &lt;&lt; std::endl;\n}\n</code></pre> <p>Output:</p> <pre><code>Ned Flanders (60) lives in 744 Evergreen Terrace\n</code></pre>"},{"location":"api/basic_json/json_serializer/#version-history","title":"Version history","text":"<ul> <li>Since version 2.0.0.</li> </ul>"},{"location":"api/basic_json/max_size/","title":"nlohmann::basic_json::max_size","text":"<pre><code>size_type max_size() const noexcept;\n</code></pre> <p>Returns the maximum number of elements a JSON value is able to hold due to system or library implementation limitations, i.e. <code>std::distance(begin(), end())</code> for the JSON value.</p>"},{"location":"api/basic_json/max_size/#return-value","title":"Return value","text":"<p>The return value depends on the different types and is defined as follows:</p> Value type return value null <code>0</code> (same as <code>size()</code>) boolean <code>1</code> (same as <code>size()</code>) string <code>1</code> (same as <code>size()</code>) number <code>1</code> (same as <code>size()</code>) binary <code>1</code> (same as <code>size()</code>) object result of function <code>object_t::max_size()</code> array result of function <code>array_t::max_size()</code>"},{"location":"api/basic_json/max_size/#exception-safety","title":"Exception safety","text":"<p>No-throw guarantee: this function never throws exceptions.</p>"},{"location":"api/basic_json/max_size/#complexity","title":"Complexity","text":"<p>Constant, as long as <code>array_t</code> and <code>object_t</code> satisfy the Container concept; that is, their <code>max_size()</code> functions have constant complexity.</p>"},{"location":"api/basic_json/max_size/#notes","title":"Notes","text":"<p>This function does not return the maximal length of a string stored as JSON value -- it returns the maximal number of string elements the JSON value can store which is <code>1</code>.</p>"},{"location":"api/basic_json/max_size/#examples","title":"Examples","text":"Example <p>The following code calls <code>max_size()</code> on the different value types.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create JSON values\n    json j_null;\n    json j_boolean = true;\n    json j_number_integer = 17;\n    json j_number_float = 23.42;\n    json j_object = {{\"one\", 1}, {\"two\", 2}};\n    json j_array = {1, 2, 4, 8, 16};\n    json j_string = \"Hello, world\";\n\n    // call max_size()\n    std::cout &lt;&lt; j_null.max_size() &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_boolean.max_size() &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_number_integer.max_size() &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_number_float.max_size() &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_object.max_size() &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_array.max_size() &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_string.max_size() &lt;&lt; '\\n';\n}\n</code></pre> <p>Output:</p> <pre><code>0\n1\n1\n1\n115292150460684697\n576460752303423487\n1\n</code></pre> <p>Note the output is platform-dependent.</p>"},{"location":"api/basic_json/max_size/#version-history","title":"Version history","text":"<ul> <li>Added in version 1.0.0.</li> <li>Extended to return <code>1</code> for binary types in version 3.8.0.</li> </ul>"},{"location":"api/basic_json/merge_patch/","title":"nlohmann::basic_json::merge_patch","text":"<pre><code>void merge_patch(const basic_json&amp; apply_patch);\n</code></pre> <p>The merge patch format is primarily intended for use with the HTTP PATCH method as a means of describing a set of modifications to a target resource's content. This function applies a merge patch to the current JSON value.</p> <p>The function implements the following algorithm from Section 2 of RFC 7396 (JSON Merge Patch):</p> <pre><code>define MergePatch(Target, Patch):\n  if Patch is an Object:\n    if Target is not an Object:\n      Target = {} // Ignore the contents and set it to an empty Object\n    for each Name/Value pair in Patch:\n      if Value is null:\n        if Name exists in Target:\n          remove the Name/Value pair from Target\n      else:\n        Target[Name] = MergePatch(Target[Name], Value)\n    return Target\n  else:\n    return Patch\n</code></pre> <p>Thereby, <code>Target</code> is the current object; that is, the patch is applied to the current value.</p>"},{"location":"api/basic_json/merge_patch/#parameters","title":"Parameters","text":"<code>apply_patch</code> (in) the patch to apply"},{"location":"api/basic_json/merge_patch/#complexity","title":"Complexity","text":"<p>Linear in the lengths of <code>apply_patch</code>.</p>"},{"location":"api/basic_json/merge_patch/#examples","title":"Examples","text":"Example <p>The following code shows how a JSON Merge Patch is applied to a JSON document.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n#include &lt;iomanip&gt; // for std::setw\n\nusing json = nlohmann::json;\nusing namespace nlohmann::literals;\n\nint main()\n{\n    // the original document\n    json document = R\"({\n                \"title\": \"Goodbye!\",\n                \"author\": {\n                    \"givenName\": \"John\",\n                    \"familyName\": \"Doe\"\n                },\n                \"tags\": [\n                    \"example\",\n                    \"sample\"\n                ],\n                \"content\": \"This will be unchanged\"\n            })\"_json;\n\n    // the patch\n    json patch = R\"({\n                \"title\": \"Hello!\",\n                \"phoneNumber\": \"+01-123-456-7890\",\n                \"author\": {\n                    \"familyName\": null\n                },\n                \"tags\": [\n                    \"example\"\n                ]\n            })\"_json;\n\n    // apply the patch\n    document.merge_patch(patch);\n\n    // output original and patched document\n    std::cout &lt;&lt; std::setw(4) &lt;&lt; document &lt;&lt; std::endl;\n}\n</code></pre> <p>Output:</p> <pre><code>{\n    \"author\": {\n        \"givenName\": \"John\"\n    },\n    \"content\": \"This will be unchanged\",\n    \"phoneNumber\": \"+01-123-456-7890\",\n    \"tags\": [\n        \"example\"\n    ],\n    \"title\": \"Hello!\"\n}\n</code></pre>"},{"location":"api/basic_json/merge_patch/#see-also","title":"See also","text":"<ul> <li>RFC 7396 (JSON Merge Patch)</li> <li>patch apply a JSON patch</li> </ul>"},{"location":"api/basic_json/merge_patch/#version-history","title":"Version history","text":"<ul> <li>Added in version 3.0.0.</li> </ul>"},{"location":"api/basic_json/meta/","title":"nlohmann::basic_json::meta","text":"<pre><code>static basic_json meta();\n</code></pre> <p>This function returns a JSON object with information about the library, including the version number and information on the platform and compiler.</p>"},{"location":"api/basic_json/meta/#return-value","title":"Return value","text":"<p>JSON object holding version information</p> key description <code>compiler</code> Information on the used compiler. It is an object with the following keys: <code>c++</code> (the used C++ standard), <code>family</code> (the compiler family; possible values are <code>clang</code>, <code>icc</code>, <code>gcc</code>, <code>ilecpp</code>, <code>msvc</code>, <code>pgcpp</code>, <code>sunpro</code>, and <code>unknown</code>), and <code>version</code> (the compiler version). On HP aCC compilers, <code>compiler</code> is instead the plain string <code>hp</code>. <code>copyright</code> The copyright line for the library as string. <code>name</code> The name of the library as string. <code>platform</code> The used platform as string. Possible values are <code>win32</code>, <code>linux</code>, <code>apple</code>, <code>unix</code>, and <code>unknown</code>. <code>url</code> The URL of the project as string. <code>version</code> The version of the library. It is an object with the following keys: <code>major</code>, <code>minor</code>, and <code>patch</code> as defined by Semantic Versioning, and <code>string</code> (the version string)."},{"location":"api/basic_json/meta/#exception-safety","title":"Exception safety","text":"<p>Strong guarantee: if an exception is thrown, there are no changes to any JSON value.</p>"},{"location":"api/basic_json/meta/#complexity","title":"Complexity","text":"<p>Constant.</p>"},{"location":"api/basic_json/meta/#examples","title":"Examples","text":"Example <p>The following code shows an example output of the <code>meta()</code> function.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;iomanip&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // call meta()\n    std::cout &lt;&lt; std::setw(4) &lt;&lt; json::meta() &lt;&lt; '\\n';\n}\n</code></pre> <p>Output:</p> <pre><code>{\n    \"compiler\": {\n        \"c++\": \"201103\",\n        \"family\": \"gcc\",\n        \"version\": \"12.4.0\"\n    },\n    \"copyright\": \"(C) 2013-2026 Niels Lohmann\",\n    \"name\": \"JSON for Modern C++\",\n    \"platform\": \"apple\",\n    \"url\": \"https://github.com/nlohmann/json\",\n    \"version\": {\n        \"major\": 3,\n        \"minor\": 12,\n        \"patch\": 0,\n        \"string\": \"3.12.0\"\n    }\n}\n</code></pre> <p>Note the output is platform-dependent.</p>"},{"location":"api/basic_json/meta/#see-also","title":"See also","text":"<ul> <li>NLOHMANN_JSON_VERSION_MAJOR/NLOHMANN_JSON_VERSION_MINOR/NLOHMANN_JSON_VERSION_PATCH   - library version information</li> </ul>"},{"location":"api/basic_json/meta/#version-history","title":"Version history","text":"<ul> <li>Added in version 2.1.0.</li> </ul>"},{"location":"api/basic_json/number_float_t/","title":"nlohmann::basic_json::number_float_t","text":"<pre><code>using number_float_t = NumberFloatType;\n</code></pre> <p>The type used to store JSON numbers (floating-point).</p> <p>RFC 8259 describes numbers as follows:</p> <p>The representation of numbers is similar to that used in most programming languages. A number is represented in base 10 using decimal digits. It contains an integer component that may be prefixed with an optional minus sign, which may be followed by a fraction part and/or an exponent part. Leading zeros are not allowed. (...) Numeric values that cannot be represented in the grammar below (such as Infinity and NaN) are not permitted.</p> <p>This description includes both integer and floating-point numbers. However, C++ allows more precise storage if it is known whether the number is a signed integer, an unsigned integer, or a floating-point number. Therefore, three different types, <code>number_integer_t</code>, <code>number_unsigned_t</code> and <code>number_float_t</code> are used.</p> <p>To store floating-point numbers in C++, a type is defined by the template parameter <code>NumberFloatType</code> which chooses the type to use.</p>"},{"location":"api/basic_json/number_float_t/#notes","title":"Notes","text":""},{"location":"api/basic_json/number_float_t/#default-type","title":"Default type","text":"<p>With the default values for <code>NumberFloatType</code> (<code>double</code>), the default value for <code>number_float_t</code> is <code>double</code>.</p>"},{"location":"api/basic_json/number_float_t/#default-behavior","title":"Default behavior","text":"<ul> <li>The restrictions about leading zeros are not enforced in C++. Instead, leading zeros in floating-point literals will   be ignored. Internally, the value will be stored as a decimal number. For instance, the C++ floating-point literal   <code>01.2</code> will be serialized to <code>1.2</code>. During deserialization, leading zeros yield an error.</li> <li>Not-a-number (NaN) values will be serialized to <code>null</code>.</li> </ul>"},{"location":"api/basic_json/number_float_t/#limits","title":"Limits","text":"<p>RFC 8259 states:</p> <p>This specification allows implementations to set limits on the range and precision of numbers accepted. Since software that implements IEEE 754-2008 binary64 (double precision) numbers is generally available and widely used, good interoperability can be achieved by implementations that expect no more precision or range than these provide, in the sense that implementations will approximate JSON numbers within the expected precision.</p> <p>This implementation does exactly follow this approach, as it uses double precision floating-point numbers. Note values smaller than <code>-1.79769313486232e+308</code> and values greater than <code>1.79769313486232e+308</code> will be stored as NaN internally and be serialized to <code>null</code>.</p>"},{"location":"api/basic_json/number_float_t/#storage","title":"Storage","text":"<p>Floating-point number values are stored directly inside a <code>basic_json</code> type.</p>"},{"location":"api/basic_json/number_float_t/#examples","title":"Examples","text":"Example <p>The following code shows that <code>number_float_t</code> is by default, a typedef to <code>double</code>.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;iomanip&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    std::cout &lt;&lt; std::boolalpha &lt;&lt; std::is_same&lt;double, json::number_float_t&gt;::value &lt;&lt; std::endl;\n}\n</code></pre> <p>Output:</p> <pre><code>true\n</code></pre>"},{"location":"api/basic_json/number_float_t/#version-history","title":"Version history","text":"<ul> <li>Added in version 1.0.0.</li> </ul>"},{"location":"api/basic_json/number_integer_t/","title":"nlohmann::basic_json::number_integer_t","text":"<pre><code>using number_integer_t = NumberIntegerType;\n</code></pre> <p>The type used to store JSON numbers (integers).</p> <p>RFC 8259 describes numbers as follows:</p> <p>The representation of numbers is similar to that used in most programming languages. A number is represented in base 10 using decimal digits. It contains an integer component that may be prefixed with an optional minus sign, which may be followed by a fraction part and/or an exponent part. Leading zeros are not allowed. (...) Numeric values that cannot be represented in the grammar below (such as Infinity and NaN) are not permitted.</p> <p>This description includes both integer and floating-point numbers. However, C++ allows more precise storage if it is known whether the number is a signed integer, an unsigned integer, or a floating-point number. Therefore, three different types, <code>number_integer_t</code>,  <code>number_unsigned_t</code> and <code>number_float_t</code> are used.</p> <p>To store integer numbers in C++, a type is defined by the template parameter <code>NumberIntegerType</code> which chooses the type to use.</p>"},{"location":"api/basic_json/number_integer_t/#notes","title":"Notes","text":""},{"location":"api/basic_json/number_integer_t/#default-type","title":"Default type","text":"<p>With the default values for <code>NumberIntegerType</code> (<code>std::int64_t</code>), the default value for <code>number_integer_t</code> is <code>std::int64_t</code>.</p>"},{"location":"api/basic_json/number_integer_t/#default-behavior","title":"Default behavior","text":"<ul> <li>The restrictions about leading zeros are not enforced in C++. Instead, leading zeros in integer literals lead to an   interpretation as an octal number. Internally, the value will be stored as a decimal number. For instance, the C++   integer literal <code>010</code> will be serialized to <code>8</code>. During deserialization, leading zeros yield an error.</li> </ul>"},{"location":"api/basic_json/number_integer_t/#limits","title":"Limits","text":"<p>RFC 8259 specifies:</p> <p>An implementation may set limits on the range and precision of numbers.</p> <p>When the default type is used, the maximal integer number that can be stored is <code>9223372036854775807</code> (INT64_MAX) and the minimal integer number that can be stored is <code>-9223372036854775808</code> (INT64_MIN). Integer numbers that are out of range will yield over/underflow when used in a constructor. During deserialization, too large or small integer numbers will automatically be stored as <code>number_unsigned_t</code> or <code>number_float_t</code>.</p> <p>RFC 8259 further states:</p> <p>Note that when such software is used, numbers that are integers and are in the range [-2^{53}+1, 2^{53}-1] are interoperable in the sense that implementations will agree exactly on their numeric values.</p> <p>As this range is a subrange of the exactly supported range [INT64_MIN, INT64_MAX], this class's integer type is interoperable.</p>"},{"location":"api/basic_json/number_integer_t/#storage","title":"Storage","text":"<p>Integer number values are stored directly inside a <code>basic_json</code> type.</p>"},{"location":"api/basic_json/number_integer_t/#examples","title":"Examples","text":"Example <p>The following code shows that <code>number_integer_t</code> is by default, a typedef to <code>std::int64_t</code>.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;iomanip&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    std::cout &lt;&lt; std::boolalpha &lt;&lt; std::is_same&lt;std::int64_t, json::number_integer_t&gt;::value &lt;&lt; std::endl;\n}\n</code></pre> <p>Output:</p> <pre><code>true\n</code></pre>"},{"location":"api/basic_json/number_integer_t/#version-history","title":"Version history","text":"<ul> <li>Added in version 1.0.0.</li> </ul>"},{"location":"api/basic_json/number_unsigned_t/","title":"nlohmann::basic_json::number_unsigned_t","text":"<pre><code>using number_unsigned_t = NumberUnsignedType;\n</code></pre> <p>The type used to store JSON numbers (unsigned).</p> <p>RFC 8259 describes numbers as follows:</p> <p>The representation of numbers is similar to that used in most programming languages. A number is represented in base 10 using decimal digits. It contains an integer component that may be prefixed with an optional minus sign, which may be followed by a fraction part and/or an exponent part. Leading zeros are not allowed. (...) Numeric values that cannot be represented in the grammar below (such as Infinity and NaN) are not permitted.</p> <p>This description includes both integer and floating-point numbers. However, C++ allows more precise storage if it is known whether the number is a signed integer, an unsigned integer, or a floating-point number. Therefore, three different types, <code>number_integer_t</code>, <code>number_unsigned_t</code> and <code>number_float_t</code> are used.</p> <p>To store unsigned integer numbers in C++, a type is defined by the template parameter <code>NumberUnsignedType</code> which chooses the type to use.</p>"},{"location":"api/basic_json/number_unsigned_t/#notes","title":"Notes","text":""},{"location":"api/basic_json/number_unsigned_t/#default-type","title":"Default type","text":"<p>With the default values for <code>NumberUnsignedType</code> (<code>std::uint64_t</code>), the default value for <code>number_unsigned_t</code> is <code>std::uint64_t</code>.</p>"},{"location":"api/basic_json/number_unsigned_t/#default-behavior","title":"Default behavior","text":"<ul> <li>The restrictions about leading zeros are not enforced in C++. Instead, leading zeros in integer literals lead to an   interpretation as an octal number. Internally, the value will be stored as a decimal number. For instance, the C++   integer  literal <code>010</code> will be serialized to <code>8</code>. During deserialization, leading zeros yield an error.</li> </ul>"},{"location":"api/basic_json/number_unsigned_t/#limits","title":"Limits","text":"<p>RFC 8259 specifies:</p> <p>An implementation may set limits on the range and precision of numbers.</p> <p>When the default type is used, the maximal integer number that can be stored is <code>18446744073709551615</code> (UINT64_MAX) and the minimal integer number that can be stored is <code>0</code>. Integer numbers that are out of range will yield over/underflow when used in a constructor. During deserialization, too large or small integer numbers will automatically be stored as <code>number_integer_t</code> or <code>number_float_t</code>.</p> <p>RFC 8259 further states:</p> <p>Note that when such software is used, numbers that are integers and are in the range [-2^{53}+1, 2^{53}-1] are interoperable in the sense that implementations will agree exactly on their numeric values.</p> <p>As this range is a subrange (when considered in conjunction with the <code>number_integer_t</code> type) of the exactly supported range [0, UINT64_MAX], this class's integer type is interoperable.</p>"},{"location":"api/basic_json/number_unsigned_t/#storage","title":"Storage","text":"<p>Integer number values are stored directly inside a <code>basic_json</code> type.</p>"},{"location":"api/basic_json/number_unsigned_t/#examples","title":"Examples","text":"Example <p>The following code shows that <code>number_unsigned_t</code> is by default, a typedef to <code>std::uint64_t</code>.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;iomanip&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    std::cout &lt;&lt; std::boolalpha &lt;&lt; std::is_same&lt;std::uint64_t, json::number_unsigned_t&gt;::value &lt;&lt; std::endl;\n}\n</code></pre> <p>Output:</p> <pre><code>true\n</code></pre>"},{"location":"api/basic_json/number_unsigned_t/#version-history","title":"Version history","text":"<ul> <li>Added in version 2.0.0.</li> </ul>"},{"location":"api/basic_json/object/","title":"nlohmann::basic_json::object","text":"<pre><code>static basic_json object(initializer_list_t init = {});\n</code></pre> <p>Creates a JSON object value from a given initializer list. The initializer lists elements must be pairs, and their first elements must be strings. If the initializer list is empty, the empty object <code>{}</code> is created.</p>"},{"location":"api/basic_json/object/#parameters","title":"Parameters","text":"<code>init</code> (in) initializer list with JSON values to create an object from (optional)"},{"location":"api/basic_json/object/#return-value","title":"Return value","text":"<p>JSON object value</p>"},{"location":"api/basic_json/object/#exception-safety","title":"Exception safety","text":"<p>Strong guarantee: if an exception is thrown, there are no changes in the JSON value.</p>"},{"location":"api/basic_json/object/#exceptions","title":"Exceptions","text":"<p>Throws <code>type_error.301</code> if <code>init</code> is not a list of pairs whose first elements are strings. In this case, no object can be created. When such a value is passed to <code>basic_json(initializer_list_t, bool, value_t)</code>, an array would have been created from the passed initializer list <code>init</code>. See the example below.</p>"},{"location":"api/basic_json/object/#complexity","title":"Complexity","text":"<p>Linear in the size of <code>init</code>.</p>"},{"location":"api/basic_json/object/#notes","title":"Notes","text":"<p>This function is only added for symmetry reasons. In contrast to the related function <code>array(initializer_list_t)</code>, there are no cases that can only be expressed by this function. That is, any initializer list <code>init</code> can also be passed to the initializer list constructor <code>basic_json(initializer_list_t, bool, value_t)</code>.</p>"},{"location":"api/basic_json/object/#examples","title":"Examples","text":"Example <p>The following code shows an example for the <code>object</code> function.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create JSON objects\n    json j_no_init_list = json::object();\n    json j_empty_init_list = json::object({});\n    json j_list_of_pairs = json::object({ {\"one\", 1}, {\"two\", 2} });\n\n    // serialize the JSON objects\n    std::cout &lt;&lt; j_no_init_list &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_empty_init_list &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_list_of_pairs &lt;&lt; '\\n';\n\n    // example for an exception\n    try\n    {\n        // can only create an object from a list of pairs\n        json j_invalid_object = json::object({{ \"one\", 1, 2 }});\n    }\n    catch (const json::type_error&amp; e)\n    {\n        std::cout &lt;&lt; e.what() &lt;&lt; '\\n';\n    }\n}\n</code></pre> <p>Output:</p> <pre><code>{}\n{}\n{\"one\":1,\"two\":2}\n[json.exception.type_error.301] cannot create object from initializer list\n</code></pre>"},{"location":"api/basic_json/object/#see-also","title":"See also","text":"<ul> <li><code>basic_json(initializer_list_t)</code> - create a JSON value from an initializer list</li> <li><code>array</code> - create a JSON array value from an initializer list</li> </ul>"},{"location":"api/basic_json/object/#version-history","title":"Version history","text":"<ul> <li>Added in version 1.0.0.</li> </ul>"},{"location":"api/basic_json/object_comparator_t/","title":"nlohmann::basic_json::object_comparator_t","text":"<pre><code>using object_comparator_t = typename object_t::key_compare;\n// or\nusing object_comparator_t = default_object_comparator_t;\n</code></pre> <p>The comparator used by <code>object_t</code>. Defined as <code>typename object_t::key_compare</code> if available, and <code>default_object_comparator_t</code> otherwise.</p>"},{"location":"api/basic_json/object_comparator_t/#examples","title":"Examples","text":"Example <p>The example below demonstrates the used object comparator.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    std::cout &lt;&lt; std::boolalpha\n              &lt;&lt; \"json::object_comparator_t(\\\"one\\\", \\\"two\\\") = \" &lt;&lt; json::object_comparator_t{}(\"one\", \"two\") &lt;&lt; \"\\n\"\n              &lt;&lt; \"json::object_comparator_t(\\\"three\\\", \\\"four\\\") = \" &lt;&lt; json::object_comparator_t{}(\"three\", \"four\") &lt;&lt; std::endl;\n}\n</code></pre> <p>Output:</p> <pre><code>json::object_comparator_t(\"one\", \"two\") = true\njson::object_comparator_t(\"three\", \"four\") = false\n</code></pre>"},{"location":"api/basic_json/object_comparator_t/#version-history","title":"Version history","text":"<ul> <li>Added in version 3.0.0.</li> <li>Changed to be conditionally defined as <code>typename object_t::key_compare</code> or <code>default_object_comparator_t</code> in   version 3.11.0.</li> </ul>"},{"location":"api/basic_json/object_t/","title":"nlohmann::basic_json::object_t","text":"<pre><code>using object_t = ObjectType&lt;StringType,\n                            basic_json,\n                            default_object_comparator_t,\n                            AllocatorType&lt;std::pair&lt;const StringType, basic_json&gt;&gt;&gt;;\n</code></pre> <p>The type used to store JSON objects.</p> <p>RFC 8259 describes JSON objects as follows:</p> <p>An object is an unordered collection of zero or more name/value pairs, where a name is a string and a value is a string, number, boolean, null, object, or array.</p> <p>To store objects in C++, a type is defined by the template parameters described below.</p>"},{"location":"api/basic_json/object_t/#template-parameters","title":"Template parameters","text":"<code>ObjectType</code> the container to store objects (e.g., <code>std::map</code> or <code>std::unordered_map</code>) <code>StringType</code> the type of the keys or names (e.g., <code>std::string</code>). The comparison function <code>std::less&lt;StringType&gt;</code> is used to order elements inside the container. <code>AllocatorType</code> the allocator to use for objects (e.g., <code>std::allocator</code>)"},{"location":"api/basic_json/object_t/#notes","title":"Notes","text":""},{"location":"api/basic_json/object_t/#default-type","title":"Default type","text":"<p>With the default values for <code>ObjectType</code> (<code>std::map</code>), <code>StringType</code> (<code>std::string</code>), and <code>AllocatorType</code> (<code>std::allocator</code>), the default value for <code>object_t</code> is:</p> <pre><code>// until C++14\nstd::map&lt;\n  std::string, // key_type\n  basic_json, // value_type\n  std::less&lt;std::string&gt;, // key_compare\n  std::allocator&lt;std::pair&lt;const std::string, basic_json&gt;&gt; // allocator_type\n&gt;\n\n// since C++14\nstd::map&lt;\n  std::string, // key_type\n  basic_json, // value_type\n  std::less&lt;&gt;, // key_compare\n  std::allocator&lt;std::pair&lt;const std::string, basic_json&gt;&gt; // allocator_type\n&gt;\n</code></pre> <p>See <code>default_object_comparator_t</code> for more information.</p>"},{"location":"api/basic_json/object_t/#behavior","title":"Behavior","text":"<p>The choice of <code>object_t</code> influences the behavior of the JSON class. With the default type, objects have the following behavior:</p> <ul> <li>When all names are unique, objects will be interoperable in the sense that all software implementations receiving that   object will agree on the name-value mappings.</li> <li>When the names within an object are not unique, it is unspecified which one of the values for a given key will be   chosen. For instance, <code>{\"key\": 2, \"key\": 1}</code> could be equal to either <code>{\"key\": 1}</code> or   <code>{\"key\": 2}</code>.</li> <li>Internally, name/value pairs are stored in lexicographical order of the names. Objects will also be serialized (see   <code>dump</code>) in this order. For instance, <code>{\"b\": 1, \"a\": 2}</code> and <code>{\"a\": 2, \"b\": 1}</code> will be stored   and serialized as <code>{\"a\": 2, \"b\": 1}</code>.</li> <li>When comparing objects, the order of the name/value pairs is irrelevant. This makes objects interoperable in the sense   that they will not be affected by these differences. For instance, <code>{\"b\": 1, \"a\": 2}</code> and   <code>{\"a\": 2, \"b\": 1}</code> will be treated as equal.</li> </ul>"},{"location":"api/basic_json/object_t/#limits","title":"Limits","text":"<p>RFC 8259 specifies:</p> <p>An implementation may set limits on the maximum depth of nesting.</p> <p>In this class, the object's limit of nesting is not explicitly constrained. However, a maximum depth of nesting may be introduced by the compiler or runtime environment. A theoretical limit can be queried by calling the <code>max_size</code> function of a JSON object.</p>"},{"location":"api/basic_json/object_t/#storage","title":"Storage","text":"<p>Objects are stored as pointers in a <code>basic_json</code> type. That is, for any access to object values, a pointer of type <code>object_t*</code> must be dereferenced.</p>"},{"location":"api/basic_json/object_t/#object-key-order","title":"Object key order","text":"<p>The order name/value pairs are added to the object are not preserved by the library. Therefore, iterating an object may return name/value pairs in a different order than they were originally stored. In fact, keys will be traversed in alphabetical order as <code>std::map</code> with <code>std::less</code> is used by default. Please note this behavior conforms to RFC 8259, because any order implements the specified \"unordered\" nature of JSON objects.</p>"},{"location":"api/basic_json/object_t/#examples","title":"Examples","text":"Example <p>The following code shows that <code>object_t</code> is by default, a typedef to <code>std::map&lt;json::string_t, json&gt;</code>.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;iomanip&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    std::cout &lt;&lt; std::boolalpha &lt;&lt; std::is_same&lt;std::map&lt;json::string_t, json&gt;, json::object_t&gt;::value &lt;&lt; std::endl;\n}\n</code></pre> <p>Output:</p> <pre><code>true\n</code></pre>"},{"location":"api/basic_json/object_t/#version-history","title":"Version history","text":"<ul> <li>Added in version 1.0.0.</li> </ul>"},{"location":"api/basic_json/operator%2B%3D/","title":"nlohmann::basic_json::operator+=","text":"<pre><code>// (1)\nreference operator+=(basic_json&amp;&amp; val);\nreference operator+=(const basic_json&amp; val);\n\n// (2)\nreference operator+=(const typename object_t::value_type&amp; val);\n\n// (3)\nreference operator+=(initializer_list_t init);\n</code></pre> <ol> <li> <p>Appends the given element <code>val</code> to the end of the JSON array. If the function is called on a JSON null value, an    empty array is created before appending <code>val</code>.</p> </li> <li> <p>Inserts the given element <code>val</code> to the JSON object. If the function is called on a JSON null value, an empty object    is created before inserting <code>val</code>.</p> </li> <li> <p>This function allows using <code>operator+=</code> with an initializer list. In case</p> <ol> <li>the current value is an object,</li> <li>the initializer list <code>init</code> contains only two elements, and</li> <li>the first element of <code>init</code> is a string,</li> </ol> <p><code>init</code> is converted into an object element and added using <code>operator+=(const typename object_t::value_type&amp;)</code>. Otherwise, <code>init</code> is converted to a JSON value and added using <code>operator+=(basic_json&amp;&amp;)</code>.</p> </li> </ol>"},{"location":"api/basic_json/operator%2B%3D/#iterator-invalidation","title":"Iterator invalidation","text":"<p>For all cases where an element is added to an array, a reallocation can happen, in which case all iterators (including the <code>end()</code> iterator) and all references to the elements are invalidated. Otherwise, only the <code>end()</code> iterator is invalidated.</p> <p>For <code>ordered_json</code>, also adding an element to an object can yield a reallocation which again invalidates all iterators and all references.</p>"},{"location":"api/basic_json/operator%2B%3D/#parameters","title":"Parameters","text":"<code>val</code> (in) the value to add to the JSON array/object <code>init</code> (in) an initializer list"},{"location":"api/basic_json/operator%2B%3D/#return-value","title":"Return value","text":"<p><code>*this</code></p>"},{"location":"api/basic_json/operator%2B%3D/#exceptions","title":"Exceptions","text":"<ol> <li>Throws <code>type_error.308</code> when called on a type other than    JSON array or null; example: <code>\"cannot use push_back() with number\"</code></li> <li>Throws <code>type_error.308</code> when called on a type other than    JSON object or null; example: <code>\"cannot use push_back() with number\"</code></li> <li>Throws <code>type_error.308</code> when called on a type other than    JSON array or null; example: <code>\"cannot use push_back() with number\"</code></li> </ol>"},{"location":"api/basic_json/operator%2B%3D/#complexity","title":"Complexity","text":"<ol> <li>Amortized constant.</li> <li>Logarithmic in the size of the container, O(log(<code>size()</code>)).</li> <li>Linear in the size of the initializer list <code>init</code>.</li> </ol>"},{"location":"api/basic_json/operator%2B%3D/#notes","title":"Notes","text":"<p>(3) This function is required to resolve an ambiguous overload error, because pairs like <code>{\"key\", \"value\"}</code> can be both interpreted as <code>object_t::value_type</code> or <code>std::initializer_list&lt;basic_json&gt;</code>, see #235 for more information.</p>"},{"location":"api/basic_json/operator%2B%3D/#examples","title":"Examples","text":"Example: (1) add element to array <p>The example shows how <code>push_back()</code> and <code>+=</code> can be used to add elements to a JSON array. Note how the <code>null</code> value was silently converted to a JSON array.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create JSON values\n    json array = {1, 2, 3, 4, 5};\n    json null;\n\n    // print values\n    std::cout &lt;&lt; array &lt;&lt; '\\n';\n    std::cout &lt;&lt; null &lt;&lt; '\\n';\n\n    // add values\n    array.push_back(6);\n    array += 7;\n    null += \"first\";\n    null += \"second\";\n\n    // print values\n    std::cout &lt;&lt; array &lt;&lt; '\\n';\n    std::cout &lt;&lt; null &lt;&lt; '\\n';\n}\n</code></pre> <p>Output:</p> <pre><code>[1,2,3,4,5]\nnull\n[1,2,3,4,5,6,7]\n[\"first\",\"second\"]\n</code></pre> Example: (2) add element to object <p>The example shows how <code>push_back()</code> and <code>+=</code> can be used to add elements to a JSON object. Note how the <code>null</code> value was silently converted to a JSON object.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create JSON values\n    json object = {{\"one\", 1}, {\"two\", 2}};\n    json null;\n\n    // print values\n    std::cout &lt;&lt; object &lt;&lt; '\\n';\n    std::cout &lt;&lt; null &lt;&lt; '\\n';\n\n    // add values\n    object.push_back(json::object_t::value_type(\"three\", 3));\n    object += json::object_t::value_type(\"four\", 4);\n    null += json::object_t::value_type(\"A\", \"a\");\n    null += json::object_t::value_type(\"B\", \"b\");\n\n    // print values\n    std::cout &lt;&lt; object &lt;&lt; '\\n';\n    std::cout &lt;&lt; null &lt;&lt; '\\n';\n}\n</code></pre> <p>Output:</p> <pre><code>{\"one\":1,\"two\":2}\nnull\n{\"four\":4,\"one\":1,\"three\":3,\"two\":2}\n{\"A\":\"a\",\"B\":\"b\"}\n</code></pre> Example: (3) add to object from initializer list <p>The example shows how initializer lists are treated as objects when possible.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create JSON values\n    json object = {{\"one\", 1}, {\"two\", 2}};\n    json null;\n\n    // print values\n    std::cout &lt;&lt; object &lt;&lt; '\\n';\n    std::cout &lt;&lt; null &lt;&lt; '\\n';\n\n    // add values:\n    object.push_back({\"three\", 3});  // object is extended\n    object += {\"four\", 4};           // object is extended\n    null.push_back({\"five\", 5});     // null is converted to array\n\n    // print values\n    std::cout &lt;&lt; object &lt;&lt; '\\n';\n    std::cout &lt;&lt; null &lt;&lt; '\\n';\n\n    // would throw:\n    //object.push_back({1, 2, 3});\n}\n</code></pre> <p>Output:</p> <pre><code>{\"one\":1,\"two\":2}\nnull\n{\"four\":4,\"one\":1,\"three\":3,\"two\":2}\n[[\"five\",5]]\n</code></pre>"},{"location":"api/basic_json/operator%2B%3D/#see-also","title":"See also","text":"<ul> <li>emplace_back add a value to an array</li> <li>push_back add a value to an array/object</li> </ul>"},{"location":"api/basic_json/operator%2B%3D/#version-history","title":"Version history","text":"<ol> <li>Since version 1.0.0.</li> <li>Since version 1.0.0.</li> <li>Since version 2.0.0.</li> </ol>"},{"location":"api/basic_json/operator%3D/","title":"nlohmann::basic_json::operator=","text":"<pre><code>basic_json&amp; operator=(basic_json other) noexcept (\n    std::is_nothrow_move_constructible&lt;value_t&gt;::value &amp;&amp;\n    std::is_nothrow_move_assignable&lt;value_t&gt;::value &amp;&amp;\n    std::is_nothrow_move_constructible&lt;json_value&gt;::value &amp;&amp;\n    std::is_nothrow_move_assignable&lt;json_value&gt;::value &amp;&amp;\n    std::is_nothrow_move_assignable&lt;json_base_class_t&gt;::value\n);\n</code></pre> <p>Copy assignment operator. Copies a JSON value via the \"copy and swap\" strategy: It is expressed in terms of the copy constructor, destructor, and the <code>swap()</code> member function.</p>"},{"location":"api/basic_json/operator%3D/#parameters","title":"Parameters","text":"<code>other</code> (in) value to copy from"},{"location":"api/basic_json/operator%3D/#exception-safety","title":"Exception safety","text":"<p>Strong guarantee: if an exception is thrown while copying <code>other</code>, there are no changes to <code>*this</code>.</p>"},{"location":"api/basic_json/operator%3D/#complexity","title":"Complexity","text":"<p>Linear.</p>"},{"location":"api/basic_json/operator%3D/#examples","title":"Examples","text":"Example <p>The code below shows and example for the copy assignment. It creates a copy of value <code>a</code> which is then swapped with <code>b</code>. Finally, the copy of <code>a</code> (which is the null value after the swap) is destroyed.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create JSON values\n    json a = 23;\n    json b = 42;\n\n    // copy-assign a to b\n    b = a;\n\n    // serialize the JSON arrays\n    std::cout &lt;&lt; a &lt;&lt; '\\n';\n    std::cout &lt;&lt; b &lt;&lt; '\\n';\n}\n</code></pre> <p>Output:</p> <pre><code>23\n23\n</code></pre>"},{"location":"api/basic_json/operator%3D/#see-also","title":"See also","text":"<ul> <li>basic_json create a JSON value</li> <li>swap exchanges the contents of two JSON values</li> </ul>"},{"location":"api/basic_json/operator%3D/#version-history","title":"Version history","text":"<ul> <li>Added in version 1.0.0.</li> </ul>"},{"location":"api/basic_json/operator%5B%5D/","title":"nlohmann::basic_json::operator[]","text":"<pre><code>// (1)\nreference operator[](size_type idx);\nconst_reference operator[](size_type idx) const;\n\n// (2)\nreference operator[](typename object_t::key_type key);\nconst_reference operator[](const typename object_t::key_type&amp; key) const;\n\n// (3)\ntemplate&lt;typename KeyType&gt;\nreference operator[](KeyType&amp;&amp; key);\ntemplate&lt;typename KeyType&gt;\nconst_reference operator[](KeyType&amp;&amp; key) const;\n\n// (4)\nreference operator[](const json_pointer&amp; ptr);\nconst_reference operator[](const json_pointer&amp; ptr) const;\n</code></pre> <ol> <li>Returns a reference to the array element at specified location <code>idx</code>.</li> <li>Returns a reference to the object element with specified key <code>key</code>. The non-const qualified overload takes the key by    value.</li> <li>See 2. This overload is only available if <code>KeyType</code> is comparable with <code>typename object_t::key_type</code> and    <code>typename object_comparator_t::is_transparent</code> denotes a type.</li> <li>Returns a reference to the element with specified JSON pointer <code>ptr</code>.</li> </ol>"},{"location":"api/basic_json/operator%5B%5D/#template-parameters","title":"Template parameters","text":"<code>KeyType</code> A type for an object key other than <code>json_pointer</code> that is comparable with <code>string_t</code> using  <code>object_comparator_t</code>. This can also be a string view (C++17)."},{"location":"api/basic_json/operator%5B%5D/#iterator-invalidation","title":"Iterator invalidation","text":"<p>For the non-const versions 1. and 4., when passing an array index that does not exist, it is created and filled with a <code>null</code> value before a reference to it is returned. For this, a reallocation can happen, in which case all iterators (including the <code>end()</code> iterator) and all references to the elements are invalidated.</p> <p>For <code>ordered_json</code>, also passing an object key to the non-const versions 2., 3., and 4., a reallocation can happen which again invalidates all iterators and all references.</p>"},{"location":"api/basic_json/operator%5B%5D/#parameters","title":"Parameters","text":"<code>idx</code> (in) index of the element to access <code>key</code> (in) object key of the element to access <code>ptr</code> (in) JSON pointer to the desired element"},{"location":"api/basic_json/operator%5B%5D/#return-value","title":"Return value","text":"<ol> <li>(const) reference to the element at index <code>idx</code></li> <li>(const) reference to the element at key <code>key</code></li> <li>(const) reference to the element at key <code>key</code></li> <li>(const) reference to the element pointed to by <code>ptr</code></li> </ol>"},{"location":"api/basic_json/operator%5B%5D/#exception-safety","title":"Exception safety","text":"<p>Strong exception safety: if an exception occurs, the original value stays intact.</p>"},{"location":"api/basic_json/operator%5B%5D/#exceptions","title":"Exceptions","text":"<ol> <li>The function can throw the following exceptions:<ul> <li>Throws <code>type_error.305</code> if the JSON value is not an array   or null; in that case, using the <code>[]</code> operator with an index makes no sense.</li> </ul> </li> <li>The function can throw the following exceptions:<ul> <li>Throws <code>type_error.305</code> if the JSON value is not an object   or null; in that case, using the <code>[]</code> operator with a key makes no sense.</li> </ul> </li> <li>See 2.</li> <li>The function can throw the following exceptions:<ul> <li>Throws <code>parse_error.106</code> if an array index in the passed   JSON pointer <code>ptr</code> begins with '0'.</li> <li>Throws <code>parse_error.109</code> if an array index in the passed   JSON pointer <code>ptr</code> is not a number.</li> <li>Throws <code>out_of_range.402</code> if the array index '-' is used   in the passed JSON pointer <code>ptr</code> for the const version.</li> <li>Throws <code>out_of_range.404</code> if the JSON pointer <code>ptr</code> can   not be resolved.</li> <li>Throws <code>out_of_range.410</code> if an array index in the passed   JSON pointer <code>ptr</code> exceeds the range of <code>size_type</code> (e.g., on 32-bit platforms).</li> </ul> </li> </ol>"},{"location":"api/basic_json/operator%5B%5D/#complexity","title":"Complexity","text":"<ol> <li>Constant if <code>idx</code> is in the range of the array. Otherwise, linear in <code>idx - size()</code>.</li> <li>Logarithmic in the size of the container.</li> <li>Logarithmic in the size of the container.</li> <li>Logarithmic in the size of the container.</li> </ol>"},{"location":"api/basic_json/operator%5B%5D/#notes","title":"Notes","text":"<p>Undefined behavior and runtime assertions</p> <p>The following cases apply to the const overloads; the non-const overloads instead insert the missing element (see the notes below).</p> <ol> <li>If the element at index <code>idx</code> does not exist, the behavior is undefined.</li> <li>If the element with key <code>key</code> does not exist, the behavior is undefined and is guarded by a    runtime assertion!</li> </ol> <ol> <li> <p>The non-const version may add values: If <code>idx</code> is beyond the range of the array (i.e., <code>idx &gt;= size()</code>), then the    array is silently filled up with <code>null</code> values to make <code>idx</code> a valid reference to the last stored element. In    case the value was <code>null</code> before, it is converted to an array.</p> </li> <li> <p>If <code>key</code> is not found in the object, then it is silently added to the object and filled with a <code>null</code> value to    make <code>key</code> a valid reference. In case the value was <code>null</code> before, it is converted to an object.</p> </li> <li> <p>See 2.</p> </li> <li> <p><code>null</code> values are created in arrays and objects if necessary.</p> <p>In particular:</p> <ul> <li>If the JSON pointer points to an object key that does not exist, it is created and filled with a <code>null</code>   value before a reference to it is returned.</li> <li>If the JSON pointer points to an array index that does not exist, it is created and filled with a <code>null</code>   value before a reference to it is returned. All indices between the current maximum and the given index are also   filled with <code>null</code>.</li> <li>The special value <code>-</code> is treated as a synonym for the index past the end.</li> </ul> </li> </ol>"},{"location":"api/basic_json/operator%5B%5D/#examples","title":"Examples","text":"Example: (1) access specified array element <p>The example below shows how array elements can be read and written using <code>[]</code> operator. Note the addition of <code>null</code> values.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create a JSON array\n    json array = {1, 2, 3, 4, 5};\n\n    // output element at index 3 (fourth element)\n    std::cout &lt;&lt; array[3] &lt;&lt; '\\n';\n\n    // change last element to 6\n    array[array.size() - 1] = 6;\n\n    // output changed array\n    std::cout &lt;&lt; array &lt;&lt; '\\n';\n\n    // write beyond array limit\n    array[10] = 11;\n\n    // output changed array\n    std::cout &lt;&lt; array &lt;&lt; '\\n';\n}\n</code></pre> <p>Output:</p> <pre><code>4\n[1,2,3,4,6]\n[1,2,3,4,6,null,null,null,null,null,11]\n</code></pre> Example: (1) access specified array element (const) <p>The example below shows how array elements can be read using the <code>[]</code> operator.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create JSON array\n    const json array = {\"first\", \"2nd\", \"third\", \"fourth\"};\n\n    // output element at index 2 (third element)\n    std::cout &lt;&lt; array.at(2) &lt;&lt; '\\n';\n}\n</code></pre> <p>Output:</p> <pre><code>\"third\"\n</code></pre> Example: (2) access specified object element <p>The example below shows how object elements can be read and written using the <code>[]</code> operator.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;iomanip&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create a JSON object\n    json object =\n    {\n        {\"one\", 1}, {\"two\", 2}, {\"three\", 2.9}\n    };\n\n    // output element with key \"two\"\n    std::cout &lt;&lt; object[\"two\"] &lt;&lt; \"\\n\\n\";\n\n    // change element with key \"three\"\n    object[\"three\"] = 3;\n\n    // output changed array\n    std::cout &lt;&lt; std::setw(4) &lt;&lt; object &lt;&lt; \"\\n\\n\";\n\n    // mention nonexisting key\n    object[\"four\"];\n\n    // write to nonexisting key\n    object[\"five\"][\"really\"][\"nested\"] = true;\n\n    // output changed object\n    std::cout &lt;&lt; std::setw(4) &lt;&lt; object &lt;&lt; '\\n';\n}\n</code></pre> <p>Output:</p> <pre><code>2\n\n{\n    \"one\": 1,\n    \"three\": 3,\n    \"two\": 2\n}\n\n{\n    \"five\": {\n        \"really\": {\n            \"nested\": true\n        }\n    },\n    \"four\": null,\n    \"one\": 1,\n    \"three\": 3,\n    \"two\": 2\n}\n</code></pre> Example: (2) access specified object element (const) <p>The example below shows how object elements can be read using the <code>[]</code> operator.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create a JSON object\n    const json object =\n    {\n        {\"one\", 1}, {\"two\", 2}, {\"three\", 2.9}\n    };\n\n    // output element with key \"two\"\n    std::cout &lt;&lt; object[\"two\"] &lt;&lt; '\\n';\n}\n</code></pre> <p>Output:</p> <pre><code>2\n</code></pre> Example: (3) access specified object element using string_view <p>The example below shows how object elements can be read using the <code>[]</code> operator.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;iomanip&gt;\n#include &lt;string_view&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing namespace std::string_view_literals;\nusing json = nlohmann::json;\n\nint main()\n{\n    // create a JSON object\n    json object =\n    {\n        {\"one\", 1}, {\"two\", 2}, {\"three\", 2.9}\n    };\n\n    // output element with key \"two\"\n    std::cout &lt;&lt; object[\"two\"sv] &lt;&lt; \"\\n\\n\";\n\n    // change element with key \"three\"\n    object[\"three\"sv] = 3;\n\n    // output changed array\n    std::cout &lt;&lt; std::setw(4) &lt;&lt; object &lt;&lt; \"\\n\\n\";\n\n    // mention nonexisting key\n    object[\"four\"sv];\n\n    // write to nonexisting key\n    object[\"five\"sv][\"really\"sv][\"nested\"sv] = true;\n\n    // output changed object\n    std::cout &lt;&lt; std::setw(4) &lt;&lt; object &lt;&lt; '\\n';\n}\n</code></pre> <p>Output:</p> <pre><code>2\n\n{\n    \"one\": 1,\n    \"three\": 3,\n    \"two\": 2\n}\n\n{\n    \"five\": {\n        \"really\": {\n            \"nested\": true\n        }\n    },\n    \"four\": null,\n    \"one\": 1,\n    \"three\": 3,\n    \"two\": 2\n}\n</code></pre> Example: (3) access specified object element using string_view (const) <p>The example below shows how object elements can be read using the <code>[]</code> operator.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;string_view&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing namespace std::string_view_literals;\nusing json = nlohmann::json;\n\nint main()\n{\n    // create a JSON object\n    const json object =\n    {\n        {\"one\", 1}, {\"two\", 2}, {\"three\", 2.9}\n    };\n\n    // output element with key \"two\"\n    std::cout &lt;&lt; object[\"two\"sv] &lt;&lt; '\\n';\n}\n</code></pre> <p>Output:</p> <pre><code>2\n</code></pre> Example: (4) access specified element via JSON Pointer <p>The example below shows how values can be read and written using JSON Pointers.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\nusing namespace nlohmann::literals;\n\nint main()\n{\n    // create a JSON value\n    json j =\n    {\n        {\"number\", 1}, {\"string\", \"foo\"}, {\"array\", {1, 2}}\n    };\n\n    // read-only access\n\n    // output element with JSON pointer \"/number\"\n    std::cout &lt;&lt; j[\"/number\"_json_pointer] &lt;&lt; '\\n';\n    // output element with JSON pointer \"/string\"\n    std::cout &lt;&lt; j[\"/string\"_json_pointer] &lt;&lt; '\\n';\n    // output element with JSON pointer \"/array\"\n    std::cout &lt;&lt; j[\"/array\"_json_pointer] &lt;&lt; '\\n';\n    // output element with JSON pointer \"/array/1\"\n    std::cout &lt;&lt; j[\"/array/1\"_json_pointer] &lt;&lt; '\\n';\n\n    // writing access\n\n    // change the string\n    j[\"/string\"_json_pointer] = \"bar\";\n    // output the changed string\n    std::cout &lt;&lt; j[\"string\"] &lt;&lt; '\\n';\n\n    // \"change\" a nonexisting object entry\n    j[\"/boolean\"_json_pointer] = true;\n    // output the changed object\n    std::cout &lt;&lt; j &lt;&lt; '\\n';\n\n    // change an array element\n    j[\"/array/1\"_json_pointer] = 21;\n    // \"change\" an array element with nonexisting index\n    j[\"/array/4\"_json_pointer] = 44;\n    // output the changed array\n    std::cout &lt;&lt; j[\"array\"] &lt;&lt; '\\n';\n\n    // \"change\" the array element past the end\n    j[\"/array/-\"_json_pointer] = 55;\n    // output the changed array\n    std::cout &lt;&lt; j[\"array\"] &lt;&lt; '\\n';\n}\n</code></pre> <p>Output:</p> <pre><code>1\n\"foo\"\n[1,2]\n2\n\"bar\"\n{\"array\":[1,2],\"boolean\":true,\"number\":1,\"string\":\"bar\"}\n[1,21,null,null,44]\n[1,21,null,null,44,55]\n</code></pre> Example: (4) access specified element via JSON Pointer (const) <p>The example below shows how values can be read using JSON Pointers.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\nusing namespace nlohmann::literals;\n\nint main()\n{\n    // create a JSON value\n    const json j =\n    {\n        {\"number\", 1}, {\"string\", \"foo\"}, {\"array\", {1, 2}}\n    };\n\n    // read-only access\n\n    // output element with JSON pointer \"/number\"\n    std::cout &lt;&lt; j[\"/number\"_json_pointer] &lt;&lt; '\\n';\n    // output element with JSON pointer \"/string\"\n    std::cout &lt;&lt; j[\"/string\"_json_pointer] &lt;&lt; '\\n';\n    // output element with JSON pointer \"/array\"\n    std::cout &lt;&lt; j[\"/array\"_json_pointer] &lt;&lt; '\\n';\n    // output element with JSON pointer \"/array/1\"\n    std::cout &lt;&lt; j[\"/array/1\"_json_pointer] &lt;&lt; '\\n';\n}\n</code></pre> <p>Output:</p> <pre><code>1\n\"foo\"\n[1,2]\n2\n</code></pre>"},{"location":"api/basic_json/operator%5B%5D/#see-also","title":"See also","text":"<ul> <li>documentation on unchecked access</li> <li>documentation on runtime assertions</li> <li>see <code>at</code> for access by reference with range checking</li> <li>see <code>value</code> for access with default value</li> </ul>"},{"location":"api/basic_json/operator%5B%5D/#version-history","title":"Version history","text":"<ol> <li>Added in version 1.0.0.</li> <li>Added in version 1.0.0. Added overloads for <code>T* key</code> in version 1.1.0. Removed overloads for <code>T* key</code> (replaced by 3)    in version 3.11.0.</li> <li>Added in version 3.11.0.</li> <li>Added in version 2.0.0.</li> </ol>"},{"location":"api/basic_json/operator_ValueType/","title":"nlohmann::basic_json::operator ValueType","text":"<pre><code>template&lt;typename ValueType&gt;\nJSON_EXPLICIT operator ValueType() const;\n</code></pre> <p>Implicit type conversion between the JSON value and a compatible value. The call is realized by calling <code>get()</code>. See Notes for the meaning of <code>JSON_EXPLICIT</code>.</p>"},{"location":"api/basic_json/operator_ValueType/#template-parameters","title":"Template parameters","text":"<code>ValueType</code> the value type to return"},{"location":"api/basic_json/operator_ValueType/#return-value","title":"Return value","text":"<p>copy of the JSON value, converted to <code>ValueType</code></p>"},{"location":"api/basic_json/operator_ValueType/#exceptions","title":"Exceptions","text":"<p>Depends on what <code>json_serializer&lt;ValueType&gt;</code> <code>from_json()</code> method throws</p>"},{"location":"api/basic_json/operator_ValueType/#complexity","title":"Complexity","text":"<p>Linear in the size of the JSON value.</p>"},{"location":"api/basic_json/operator_ValueType/#notes","title":"Notes","text":"<p>Definition of <code>JSON_EXPLICIT</code></p> <p>By default <code>JSON_EXPLICIT</code> is defined to the empty string, so the signature is:</p> <pre><code>template&lt;typename ValueType&gt;\noperator ValueType() const;\n</code></pre> <p>If <code>JSON_USE_IMPLICIT_CONVERSIONS</code> is set to <code>0</code>, <code>JSON_EXPLICIT</code> is defined to <code>explicit</code>:</p> <pre><code>template&lt;typename ValueType&gt;\nexplicit operator ValueType() const;\n</code></pre> <p>That is, implicit conversions can be switched off by defining <code>JSON_USE_IMPLICIT_CONVERSIONS</code> to <code>0</code>.</p> <p>Future behavior change</p> <p>Implicit conversions will be switched off by default in the next major release of the library. That is, <code>JSON_EXPLICIT</code> will be set to <code>explicit</code> by default.</p> <p>You can prepare existing code by already defining <code>JSON_USE_IMPLICIT_CONVERSIONS</code> to <code>0</code> and replace any implicit conversions with calls to <code>get</code>.</p>"},{"location":"api/basic_json/operator_ValueType/#examples","title":"Examples","text":"Example <p>The example below shows several conversions from JSON values to other types. There are a few things to note: (1) Floating-point numbers can be converted to integers, (2) A JSON array can be converted to a standard <code>std::vector&lt;short&gt;</code>, (3) A JSON object can be converted to C++ associative containers such as <code>std::unordered_map&lt;std::string, json&gt;</code>.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;unordered_map&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create a JSON value with different types\n    json json_types =\n    {\n        {\"boolean\", true},\n        {\n            \"number\", {\n                {\"integer\", 42},\n                {\"floating-point\", 17.23}\n            }\n        },\n        {\"string\", \"Hello, world!\"},\n        {\"array\", {1, 2, 3, 4, 5}},\n        {\"null\", nullptr}\n    };\n\n    // use implicit conversions\n    bool v1 = json_types[\"boolean\"];\n    int v2 = json_types[\"number\"][\"integer\"];\n    short v3 = json_types[\"number\"][\"integer\"];\n    float v4 = json_types[\"number\"][\"floating-point\"];\n    int v5 = json_types[\"number\"][\"floating-point\"];\n    std::string v6 = json_types[\"string\"];\n    std::vector&lt;short&gt; v7 = json_types[\"array\"];\n    std::unordered_map&lt;std::string, json&gt; v8 = json_types;\n\n    // print the conversion results\n    std::cout &lt;&lt; v1 &lt;&lt; '\\n';\n    std::cout &lt;&lt; v2 &lt;&lt; ' ' &lt;&lt; v3 &lt;&lt; '\\n';\n    std::cout &lt;&lt; v4 &lt;&lt; ' ' &lt;&lt; v5 &lt;&lt; '\\n';\n    std::cout &lt;&lt; v6 &lt;&lt; '\\n';\n\n    for (auto i : v7)\n    {\n        std::cout &lt;&lt; i &lt;&lt; ' ';\n    }\n    std::cout &lt;&lt; \"\\n\\n\";\n\n    for (auto i : v8)\n    {\n        std::cout &lt;&lt; i.first &lt;&lt; \": \" &lt;&lt; i.second &lt;&lt; '\\n';\n    }\n\n    // example for an exception\n    try\n    {\n        bool v1 = json_types[\"string\"];\n    }\n    catch (const json::type_error&amp; e)\n    {\n        std::cout &lt;&lt; e.what() &lt;&lt; '\\n';\n    }\n}\n</code></pre> <p>Output:</p> <pre><code>1\n42 42\n17.23 17\nHello, world!\n1 2 3 4 5 \n\nstring: \"Hello, world!\"\nnumber: {\"floating-point\":17.23,\"integer\":42}\nnull: null\nboolean: true\narray: [1,2,3,4,5]\n[json.exception.type_error.302] type must be boolean, but is string\n</code></pre>"},{"location":"api/basic_json/operator_ValueType/#see-also","title":"See also","text":"<ul> <li>get get a value (explicit conversion)</li> </ul>"},{"location":"api/basic_json/operator_ValueType/#version-history","title":"Version history","text":"<ul> <li>Since version 1.0.0.</li> <li>Macros <code>JSON_EXPLICIT</code>/<code>JSON_USE_IMPLICIT_CONVERSIONS</code> added   in version 3.9.0.</li> </ul>"},{"location":"api/basic_json/operator_eq/","title":"nlohmann::basic_json::operator==","text":"<pre><code>// until C++20\nbool operator==(const_reference lhs, const_reference rhs) noexcept;   // (1)\n\ntemplate&lt;typename ScalarType&gt;\nbool operator==(const_reference lhs, const ScalarType rhs) noexcept;  // (2)\n\ntemplate&lt;typename ScalarType&gt;\nbool operator==(ScalarType lhs, const const_reference rhs) noexcept;  // (2)\n\n// since C++20\nclass basic_json {\n    bool operator==(const_reference rhs) const noexcept;              // (1)\n\n    template&lt;typename ScalarType&gt;\n    bool operator==(ScalarType rhs) const noexcept;                   // (2)\n};\n</code></pre> <ol> <li> <p>Compares two JSON values for equality according to the following rules:</p> <ul> <li>Two JSON values are equal if (1) neither value is discarded, and (2) they are of the same type and their stored   values are the same according to their respective <code>operator==</code>.</li> <li>Integer and floating-point numbers are automatically converted before comparison.</li> </ul> </li> <li> <p>Compares a JSON value and a scalar or a scalar and a JSON value for equality by converting the    scalar to a JSON value and comparing both JSON values according to 1.</p> </li> </ol>"},{"location":"api/basic_json/operator_eq/#template-parameters","title":"Template parameters","text":"<code>ScalarType</code> a scalar type according to <code>std::is_scalar&lt;ScalarType&gt;::value</code>"},{"location":"api/basic_json/operator_eq/#parameters","title":"Parameters","text":"<code>lhs</code> (in) first value to consider  <code>rhs</code> (in) second value to consider"},{"location":"api/basic_json/operator_eq/#return-value","title":"Return value","text":"<p>whether the values <code>lhs</code>/<code>*this</code> and <code>rhs</code> are equal</p>"},{"location":"api/basic_json/operator_eq/#exception-safety","title":"Exception safety","text":"<p>No-throw guarantee: this function never throws exceptions.</p>"},{"location":"api/basic_json/operator_eq/#complexity","title":"Complexity","text":"<p>Linear.</p>"},{"location":"api/basic_json/operator_eq/#notes","title":"Notes","text":"<p>Comparing special values</p> <ul> <li><code>NaN</code> values are unordered within the domain of numbers.   The following comparisons all yield <code>false</code>:<ol> <li>Comparing a <code>NaN</code> with itself.</li> <li>Comparing a <code>NaN</code> with another <code>NaN</code>.</li> <li>Comparing a <code>NaN</code> and any other number.</li> </ol> </li> <li>JSON <code>null</code> values are all equal.</li> <li>Discarded values never compare equal to themselves.</li> </ul> <p>Comparing floating-point numbers</p> <p>Floating-point numbers inside JSON values numbers are compared with <code>json::number_float_t::operator==</code> which is <code>double::operator==</code> by default. To compare floating-point while respecting an epsilon, an alternative comparison function could be used, for instance</p> <pre><code>template&lt;typename T, typename = typename std::enable_if&lt;std::is_floating_point&lt;T&gt;::value, T&gt;::type&gt;\ninline bool is_same(T a, T b, T epsilon = std::numeric_limits&lt;T&gt;::epsilon()) noexcept\n{\n    return std::abs(a - b) &lt;= epsilon;\n}\n</code></pre> <p>Or you can define your own equality function like this:</p> <pre><code>bool my_equal(const_reference lhs, const_reference rhs)\n{\n    const auto lhs_type = lhs.type();\n    const auto rhs_type = rhs.type();\n    if (lhs_type == rhs_type)\n    {\n        switch(lhs_type)\n            // self_defined case\n            case value_t::number_float:\n                return std::abs(lhs - rhs) &lt;= std::numeric_limits&lt;float&gt;::epsilon();\n            // other cases remain the same with the original\n            ...\n    }\n...\n}\n</code></pre> <p>Comparing different <code>basic_json</code> specializations</p> <p>Comparing different <code>basic_json</code> specializations can have surprising effects. For instance, the result of comparing the JSON objects</p> <pre><code>{\n   \"version\": 1,\n   \"type\": \"integer\"\n}\n</code></pre> <p>and</p> <pre><code>{\n   \"type\": \"integer\",\n   \"version\": 1\n}\n</code></pre> <p>depends on whether <code>nlohmann::json</code> or <code>nlohmann::ordered_json</code> is used:</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;iomanip&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    nlohmann::json uj1 = {{\"version\", 1}, {\"type\", \"integer\"}};\n    nlohmann::json uj2 = {{\"type\", \"integer\"}, {\"version\", 1}};\n\n    nlohmann::ordered_json oj1 = {{\"version\", 1}, {\"type\", \"integer\"}};\n    nlohmann::ordered_json oj2 = {{\"type\", \"integer\"}, {\"version\", 1}};\n\n    std::cout &lt;&lt; std::boolalpha &lt;&lt; (uj1 == uj2) &lt;&lt; '\\n' &lt;&lt; (oj1 == oj2) &lt;&lt; std::endl;\n}\n</code></pre> <p>Output:</p> <pre><code>true\nfalse\n</code></pre>"},{"location":"api/basic_json/operator_eq/#examples","title":"Examples","text":"Example <p>The example demonstrates comparing several JSON types.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create several JSON values\n    json array_1 = {1, 2, 3};\n    json array_2 = {1, 2, 4};\n    json object_1 = {{\"A\", \"a\"}, {\"B\", \"b\"}};\n    json object_2 = {{\"B\", \"b\"}, {\"A\", \"a\"}};\n    json number_1 = 17;\n    json number_2 = 17.000000000000001L;\n    json string_1 = \"foo\";\n    json string_2 = \"bar\";\n\n    // output values and comparisons\n    std::cout &lt;&lt; std::boolalpha;\n    std::cout &lt;&lt; array_1 &lt;&lt; \" == \" &lt;&lt; array_2 &lt;&lt; \" \" &lt;&lt; (array_1 == array_2) &lt;&lt; '\\n';\n    std::cout &lt;&lt; object_1 &lt;&lt; \" == \" &lt;&lt; object_2 &lt;&lt; \" \" &lt;&lt; (object_1 == object_2) &lt;&lt; '\\n';\n    std::cout &lt;&lt; number_1 &lt;&lt; \" == \" &lt;&lt; number_2 &lt;&lt; \" \" &lt;&lt; (number_1 == number_2) &lt;&lt; '\\n';\n    std::cout &lt;&lt; string_1 &lt;&lt; \" == \" &lt;&lt; string_2 &lt;&lt; \" \" &lt;&lt; (string_1 == string_2) &lt;&lt; '\\n';\n}\n</code></pre> <p>Output:</p> <pre><code>[1,2,3] == [1,2,4] false\n{\"A\":\"a\",\"B\":\"b\"} == {\"A\":\"a\",\"B\":\"b\"} true\n17 == 17.0 true\n\"foo\" == \"bar\" false\n</code></pre> Example <p>The example demonstrates comparing several JSON types against the null pointer (JSON <code>null</code>).</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create several JSON values\n    json array = {1, 2, 3};\n    json object = {{\"A\", \"a\"}, {\"B\", \"b\"}};\n    json number = 17;\n    json string = \"foo\";\n    json null;\n\n    // output values and comparisons\n    std::cout &lt;&lt; std::boolalpha;\n    std::cout &lt;&lt; array &lt;&lt; \" == nullptr \" &lt;&lt; (array == nullptr) &lt;&lt; '\\n';\n    std::cout &lt;&lt; object &lt;&lt; \" == nullptr \" &lt;&lt; (object == nullptr) &lt;&lt; '\\n';\n    std::cout &lt;&lt; number &lt;&lt; \" == nullptr \" &lt;&lt; (number == nullptr) &lt;&lt; '\\n';\n    std::cout &lt;&lt; string &lt;&lt; \" == nullptr \" &lt;&lt; (string == nullptr) &lt;&lt; '\\n';\n    std::cout &lt;&lt; null &lt;&lt; \" == nullptr \" &lt;&lt; (null == nullptr) &lt;&lt; '\\n';\n}\n</code></pre> <p>Output:</p> <pre><code>[1,2,3] == nullptr false\n{\"A\":\"a\",\"B\":\"b\"} == nullptr false\n17 == nullptr false\n\"foo\" == nullptr false\nnull == nullptr true\n</code></pre>"},{"location":"api/basic_json/operator_eq/#see-also","title":"See also","text":"<ul> <li>operator!= compare for inequality</li> <li>operator&lt;=&gt; comparison: 3-way (C++20)</li> </ul>"},{"location":"api/basic_json/operator_eq/#version-history","title":"Version history","text":"<ol> <li>Added in version 1.0.0. Added C++20 member functions in version 3.11.0.</li> <li>Added in version 1.0.0. Added C++20 member functions in version 3.11.0.</li> </ol>"},{"location":"api/basic_json/operator_ge/","title":"nlohmann::basic_json::operator&gt;=","text":"<pre><code>// until C++20\nbool operator&gt;=(const_reference lhs, const_reference rhs) noexcept;   // (1)\n\ntemplate&lt;typename ScalarType&gt;\nbool operator&gt;=(const_reference lhs, const ScalarType rhs) noexcept;  // (2)\n\ntemplate&lt;typename ScalarType&gt;\nbool operator&gt;=(ScalarType lhs, const const_reference rhs) noexcept;  // (2)\n</code></pre> <ol> <li> <p>Compares whether one JSON value <code>lhs</code> is greater than or equal to another JSON value <code>rhs</code> according to the following    rules:</p> <ul> <li>The comparison always yields <code>false</code> if (1) either operand is discarded, or (2) either operand is <code>NaN</code> and   the other operand is either <code>NaN</code> or any other number.</li> <li>Otherwise, returns the result of <code>!(lhs &lt; rhs)</code> (see operator&lt;).</li> </ul> </li> <li> <p>Compares whether a JSON value is greater than or equal to a scalar or a scalar is greater than or equal to a JSON    value by converting the scalar to a JSON value and comparing both JSON values according to 1.</p> </li> </ol>"},{"location":"api/basic_json/operator_ge/#template-parameters","title":"Template parameters","text":"<code>ScalarType</code> a scalar type according to <code>std::is_scalar&lt;ScalarType&gt;::value</code>"},{"location":"api/basic_json/operator_ge/#parameters","title":"Parameters","text":"<code>lhs</code> (in) first value to consider  <code>rhs</code> (in) second value to consider"},{"location":"api/basic_json/operator_ge/#return-value","title":"Return value","text":"<p>whether <code>lhs</code> is greater than or equal to <code>rhs</code></p>"},{"location":"api/basic_json/operator_ge/#exception-safety","title":"Exception safety","text":"<p>No-throw guarantee: this function never throws exceptions.</p>"},{"location":"api/basic_json/operator_ge/#complexity","title":"Complexity","text":"<p>Linear.</p>"},{"location":"api/basic_json/operator_ge/#notes","title":"Notes","text":"<p>Comparing <code>NaN</code></p> <p><code>NaN</code> values are unordered within the domain of numbers. The following comparisons all yield <code>false</code>:   1. Comparing a <code>NaN</code> with itself.   2. Comparing a <code>NaN</code> with another <code>NaN</code>.   3. Comparing a <code>NaN</code> and any other number.</p> <p>Operator overload resolution</p> <p>Since C++20 overload resolution will consider the rewritten candidate generated from <code>operator&lt;=&gt;</code>.</p>"},{"location":"api/basic_json/operator_ge/#examples","title":"Examples","text":"Example <p>The example demonstrates comparing several JSON types.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create several JSON values\n    json array_1 = {1, 2, 3};\n    json array_2 = {1, 2, 4};\n    json object_1 = {{\"A\", \"a\"}, {\"B\", \"b\"}};\n    json object_2 = {{\"B\", \"b\"}, {\"A\", \"a\"}};\n    json number_1 = 17;\n    json number_2 = 17.0000000000001L;\n    json string_1 = \"foo\";\n    json string_2 = \"bar\";\n\n    // output values and comparisons\n    std::cout &lt;&lt; std::boolalpha;\n    std::cout &lt;&lt; array_1 &lt;&lt; \" &gt;= \" &lt;&lt; array_2 &lt;&lt; \" \" &lt;&lt; (array_1 &gt;= array_2) &lt;&lt; '\\n';\n    std::cout &lt;&lt; object_1 &lt;&lt; \" &gt;= \" &lt;&lt; object_2 &lt;&lt; \" \" &lt;&lt; (object_1 &gt;= object_2) &lt;&lt; '\\n';\n    std::cout &lt;&lt; number_1 &lt;&lt; \" &gt;= \" &lt;&lt; number_2 &lt;&lt; \" \" &lt;&lt; (number_1 &gt;= number_2) &lt;&lt; '\\n';\n    std::cout &lt;&lt; string_1 &lt;&lt; \" &gt;= \" &lt;&lt; string_2 &lt;&lt; \" \" &lt;&lt; (string_1 &gt;= string_2) &lt;&lt; '\\n';\n}\n</code></pre> <p>Output:</p> <pre><code>[1,2,3] &gt;= [1,2,4] false\n{\"A\":\"a\",\"B\":\"b\"} &gt;= {\"A\":\"a\",\"B\":\"b\"} true\n17 &gt;= 17.0000000000001 false\n\"foo\" &gt;= \"bar\" true\n</code></pre>"},{"location":"api/basic_json/operator_ge/#see-also","title":"See also","text":"<ul> <li>operator&lt;=&gt; comparison: 3-way</li> </ul>"},{"location":"api/basic_json/operator_ge/#version-history","title":"Version history","text":"<ol> <li>Added in version 1.0.0. Conditionally removed since C++20 in version 3.11.0.</li> <li>Added in version 1.0.0. Conditionally removed since C++20 in version 3.11.0.</li> </ol>"},{"location":"api/basic_json/operator_gt/","title":"nlohmann::basic_json::operator&gt;","text":"<pre><code>// until C++20\nbool operator&gt;(const_reference lhs, const_reference rhs) noexcept;   // (1)\n\ntemplate&lt;typename ScalarType&gt;\nbool operator&gt;(const_reference lhs, const ScalarType rhs) noexcept;  // (2)\n\ntemplate&lt;typename ScalarType&gt;\nbool operator&gt;(ScalarType lhs, const const_reference rhs) noexcept;  // (2)\n</code></pre> <ol> <li> <p>Compares whether one JSON value <code>lhs</code> is greater than another JSON value <code>rhs</code> according to the   following rules:</p> <ul> <li>The comparison always yields <code>false</code> if (1) either operand is discarded, or (2) either   operand is <code>NaN</code> and the other operand is either <code>NaN</code> or any other number.</li> <li>Otherwise, returns the result of <code>!(lhs &lt;= rhs)</code> (see operator&lt;=).</li> </ul> </li> <li> <p>Compares whether a JSON value is greater than a scalar or a scalar is greater than a JSON value by    converting the scalar to a JSON value and comparing both JSON values according to 1.</p> </li> </ol>"},{"location":"api/basic_json/operator_gt/#template-parameters","title":"Template parameters","text":"<code>ScalarType</code> a scalar type according to <code>std::is_scalar&lt;ScalarType&gt;::value</code>"},{"location":"api/basic_json/operator_gt/#parameters","title":"Parameters","text":"<code>lhs</code> (in) first value to consider  <code>rhs</code> (in) second value to consider"},{"location":"api/basic_json/operator_gt/#return-value","title":"Return value","text":"<p>whether <code>lhs</code> is greater than <code>rhs</code></p>"},{"location":"api/basic_json/operator_gt/#exception-safety","title":"Exception safety","text":"<p>No-throw guarantee: this function never throws exceptions.</p>"},{"location":"api/basic_json/operator_gt/#complexity","title":"Complexity","text":"<p>Linear.</p>"},{"location":"api/basic_json/operator_gt/#notes","title":"Notes","text":"<p>Comparing <code>NaN</code></p> <p><code>NaN</code> values are unordered within the domain of numbers. The following comparisons all yield <code>false</code>:   1. Comparing a <code>NaN</code> with itself.   2. Comparing a <code>NaN</code> with another <code>NaN</code>.   3. Comparing a <code>NaN</code> and any other number.</p> <p>Operator overload resolution</p> <p>Since C++20 overload resolution will consider the rewritten candidate generated from <code>operator&lt;=&gt;</code>.</p>"},{"location":"api/basic_json/operator_gt/#examples","title":"Examples","text":"Example <p>The example demonstrates comparing several JSON types.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create several JSON values\n    json array_1 = {1, 2, 3};\n    json array_2 = {1, 2, 4};\n    json object_1 = {{\"A\", \"a\"}, {\"B\", \"b\"}};\n    json object_2 = {{\"B\", \"b\"}, {\"A\", \"a\"}};\n    json number_1 = 17;\n    json number_2 = 17.0000000000001L;\n    json string_1 = \"foo\";\n    json string_2 = \"bar\";\n\n    // output values and comparisons\n    std::cout &lt;&lt; std::boolalpha;\n    std::cout &lt;&lt; array_1 &lt;&lt; \" &gt; \" &lt;&lt; array_2 &lt;&lt; \" \" &lt;&lt; (array_1 &gt; array_2) &lt;&lt; '\\n';\n    std::cout &lt;&lt; object_1 &lt;&lt; \" &gt; \" &lt;&lt; object_2 &lt;&lt; \" \" &lt;&lt; (object_1 &gt; object_2) &lt;&lt; '\\n';\n    std::cout &lt;&lt; number_1 &lt;&lt; \" &gt; \" &lt;&lt; number_2 &lt;&lt; \" \" &lt;&lt; (number_1 &gt; number_2) &lt;&lt; '\\n';\n    std::cout &lt;&lt; string_1 &lt;&lt; \" &gt; \" &lt;&lt; string_2 &lt;&lt; \" \" &lt;&lt; (string_1 &gt; string_2) &lt;&lt; '\\n';\n}\n</code></pre> <p>Output:</p> <pre><code>[1,2,3] &gt; [1,2,4] false\n{\"A\":\"a\",\"B\":\"b\"} &gt; {\"A\":\"a\",\"B\":\"b\"} false\n17 &gt; 17.0000000000001 false\n\"foo\" &gt; \"bar\" true\n</code></pre>"},{"location":"api/basic_json/operator_gt/#see-also","title":"See also","text":"<ul> <li>operator&lt;=&gt; comparison: 3-way</li> </ul>"},{"location":"api/basic_json/operator_gt/#version-history","title":"Version history","text":"<ol> <li>Added in version 1.0.0. Conditionally removed since C++20 in version 3.11.0.</li> <li>Added in version 1.0.0. Conditionally removed since C++20 in version 3.11.0.</li> </ol>"},{"location":"api/basic_json/operator_le/","title":"nlohmann::basic_json::operator&lt;=","text":"<pre><code>// until C++20\nbool operator&lt;=(const_reference lhs, const_reference rhs) noexcept;   // (1)\n\ntemplate&lt;typename ScalarType&gt;\nbool operator&lt;=(const_reference lhs, const ScalarType rhs) noexcept;  // (2)\n\ntemplate&lt;typename ScalarType&gt;\nbool operator&lt;=(ScalarType lhs, const const_reference rhs) noexcept;  // (2)\n</code></pre> <ol> <li> <p>Compares whether one JSON value <code>lhs</code> is less than or equal to another JSON value <code>rhs</code>    according to the following rules:</p> <ul> <li>The comparison always yields <code>false</code> if (1) either operand is discarded, or (2) either   operand is <code>NaN</code> and the other operand is either <code>NaN</code> or any other number.</li> <li>Otherwise, returns the result of <code>!(rhs &lt; lhs)</code> (see operator&lt;).</li> </ul> </li> <li> <p>Compares whether a JSON value is less than or equal to a scalar or a scalar is less than or equal    to a JSON value by converting the scalar to a JSON value and comparing both JSON values according    to 1.</p> </li> </ol>"},{"location":"api/basic_json/operator_le/#template-parameters","title":"Template parameters","text":"<code>ScalarType</code> a scalar type according to <code>std::is_scalar&lt;ScalarType&gt;::value</code>"},{"location":"api/basic_json/operator_le/#parameters","title":"Parameters","text":"<code>lhs</code> (in) first value to consider  <code>rhs</code> (in) second value to consider"},{"location":"api/basic_json/operator_le/#return-value","title":"Return value","text":"<p>whether <code>lhs</code> is less than or equal to <code>rhs</code></p>"},{"location":"api/basic_json/operator_le/#exception-safety","title":"Exception safety","text":"<p>No-throw guarantee: this function never throws exceptions.</p>"},{"location":"api/basic_json/operator_le/#complexity","title":"Complexity","text":"<p>Linear.</p>"},{"location":"api/basic_json/operator_le/#notes","title":"Notes","text":"<p>Comparing <code>NaN</code></p> <p><code>NaN</code> values are unordered within the domain of numbers. The following comparisons all yield <code>false</code>:   1. Comparing a <code>NaN</code> with itself.   2. Comparing a <code>NaN</code> with another <code>NaN</code>.   3. Comparing a <code>NaN</code> and any other number.</p> <p>Operator overload resolution</p> <p>Since C++20 overload resolution will consider the rewritten candidate generated from <code>operator&lt;=&gt;</code>.</p>"},{"location":"api/basic_json/operator_le/#examples","title":"Examples","text":"Example <p>The example demonstrates comparing several JSON types.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create several JSON values\n    json array_1 = {1, 2, 3};\n    json array_2 = {1, 2, 4};\n    json object_1 = {{\"A\", \"a\"}, {\"B\", \"b\"}};\n    json object_2 = {{\"B\", \"b\"}, {\"A\", \"a\"}};\n    json number_1 = 17;\n    json number_2 = 17.0000000000001L;\n    json string_1 = \"foo\";\n    json string_2 = \"bar\";\n\n    // output values and comparisons\n    std::cout &lt;&lt; std::boolalpha;\n    std::cout &lt;&lt; array_1 &lt;&lt; \" &lt;= \" &lt;&lt; array_2 &lt;&lt; \" \" &lt;&lt; (array_1 &lt;= array_2) &lt;&lt; '\\n';\n    std::cout &lt;&lt; object_1 &lt;&lt; \" &lt;= \" &lt;&lt; object_2 &lt;&lt; \" \" &lt;&lt; (object_1 &lt;= object_2) &lt;&lt; '\\n';\n    std::cout &lt;&lt; number_1 &lt;&lt; \" &lt;= \" &lt;&lt; number_2 &lt;&lt; \" \" &lt;&lt; (number_1 &lt;= number_2) &lt;&lt; '\\n';\n    std::cout &lt;&lt; string_1 &lt;&lt; \" &lt;= \" &lt;&lt; string_2 &lt;&lt; \" \" &lt;&lt; (string_1 &lt;= string_2) &lt;&lt; '\\n';\n}\n</code></pre> <p>Output:</p> <pre><code>[1,2,3] &lt;= [1,2,4] true\n{\"A\":\"a\",\"B\":\"b\"} &lt;= {\"A\":\"a\",\"B\":\"b\"} true\n17 &lt;= 17.0000000000001 true\n\"foo\" &lt;= \"bar\" false\n</code></pre>"},{"location":"api/basic_json/operator_le/#see-also","title":"See also","text":"<ul> <li>operator&lt;=&gt; comparison: 3-way</li> </ul>"},{"location":"api/basic_json/operator_le/#version-history","title":"Version history","text":"<ol> <li>Added in version 1.0.0. Conditionally removed since C++20 in version 3.11.0.</li> <li>Added in version 1.0.0. Conditionally removed since C++20 in version 3.11.0.</li> </ol>"},{"location":"api/basic_json/operator_lt/","title":"nlohmann::basic_json::operator&lt;","text":"<pre><code>// until C++20\nbool operator&lt;(const_reference lhs, const_reference rhs) noexcept;   // (1)\n\ntemplate&lt;typename ScalarType&gt;\nbool operator&lt;(const_reference lhs, const ScalarType rhs) noexcept;  // (2)\n\ntemplate&lt;typename ScalarType&gt;\nbool operator&lt;(ScalarType lhs, const const_reference rhs) noexcept;  // (2)\n</code></pre> <ol> <li> <p>Compares whether one JSON value <code>lhs</code> is less than another JSON value <code>rhs</code> according to the   following rules:</p> <ul> <li>If either operand is discarded, the comparison yields <code>false</code>.</li> <li>If both operands have the same type, the values are compared using their respective <code>operator&lt;</code>.</li> <li>Integer and floating-point numbers are automatically converted before comparison.</li> <li>In case <code>lhs</code> and <code>rhs</code> have different types, the values are ignored and the order of the types   is considered, which is:<ol> <li>null</li> <li>boolean</li> <li>number (all types)</li> <li>object</li> <li>array</li> <li>string</li> <li>binary   For instance, any boolean value is considered less than any string.</li> </ol> </li> </ul> </li> <li> <p>Compares whether a JSON value is less than a scalar or a scalar is less than a JSON value by converting    the scalar to a JSON value and comparing both JSON values according to 1.</p> </li> </ol>"},{"location":"api/basic_json/operator_lt/#template-parameters","title":"Template parameters","text":"<code>ScalarType</code> a scalar type according to <code>std::is_scalar&lt;ScalarType&gt;::value</code>"},{"location":"api/basic_json/operator_lt/#parameters","title":"Parameters","text":"<code>lhs</code> (in) first value to consider  <code>rhs</code> (in) second value to consider"},{"location":"api/basic_json/operator_lt/#return-value","title":"Return value","text":"<p>whether <code>lhs</code> is less than <code>rhs</code></p>"},{"location":"api/basic_json/operator_lt/#exception-safety","title":"Exception safety","text":"<p>No-throw guarantee: this function never throws exceptions.</p>"},{"location":"api/basic_json/operator_lt/#complexity","title":"Complexity","text":"<p>Linear.</p>"},{"location":"api/basic_json/operator_lt/#notes","title":"Notes","text":"<p>Comparing <code>NaN</code></p> <p><code>NaN</code> values are unordered within the domain of numbers. The following comparisons all yield <code>false</code>:   1. Comparing a <code>NaN</code> with itself.   2. Comparing a <code>NaN</code> with another <code>NaN</code>.   3. Comparing a <code>NaN</code> and any other number.</p> <p>Operator overload resolution</p> <p>Since C++20 overload resolution will consider the rewritten candidate generated from <code>operator&lt;=&gt;</code>.</p>"},{"location":"api/basic_json/operator_lt/#examples","title":"Examples","text":"Example <p>The example demonstrates comparing several JSON types.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create several JSON values\n    json array_1 = {1, 2, 3};\n    json array_2 = {1, 2, 4};\n    json object_1 = {{\"A\", \"a\"}, {\"B\", \"b\"}};\n    json object_2 = {{\"B\", \"b\"}, {\"A\", \"a\"}};\n    json number_1 = 17;\n    json number_2 = 17.0000000000001L;\n    json string_1 = \"foo\";\n    json string_2 = \"bar\";\n\n    // output values and comparisons\n    std::cout &lt;&lt; std::boolalpha;\n    std::cout &lt;&lt; array_1 &lt;&lt; \" == \" &lt;&lt; array_2 &lt;&lt; \" \" &lt;&lt; (array_1 &lt; array_2) &lt;&lt; '\\n';\n    std::cout &lt;&lt; object_1 &lt;&lt; \" == \" &lt;&lt; object_2 &lt;&lt; \" \" &lt;&lt; (object_1 &lt; object_2) &lt;&lt; '\\n';\n    std::cout &lt;&lt; number_1 &lt;&lt; \" == \" &lt;&lt; number_2 &lt;&lt; \" \" &lt;&lt; (number_1 &lt; number_2) &lt;&lt; '\\n';\n    std::cout &lt;&lt; string_1 &lt;&lt; \" == \" &lt;&lt; string_2 &lt;&lt; \" \" &lt;&lt; (string_1 &lt; string_2) &lt;&lt; '\\n';\n}\n</code></pre> <p>Output:</p> <pre><code>[1,2,3] == [1,2,4] true\n{\"A\":\"a\",\"B\":\"b\"} == {\"A\":\"a\",\"B\":\"b\"} false\n17 == 17.0000000000001 true\n\"foo\" == \"bar\" false\n</code></pre>"},{"location":"api/basic_json/operator_lt/#see-also","title":"See also","text":"<ul> <li>operator&lt;=&gt; comparison: 3-way</li> </ul>"},{"location":"api/basic_json/operator_lt/#version-history","title":"Version history","text":"<ol> <li>Added in version 1.0.0. Conditionally removed since C++20 in version 3.11.0.</li> <li>Added in version 1.0.0. Conditionally removed since C++20 in version 3.11.0.</li> </ol>"},{"location":"api/basic_json/operator_ne/","title":"nlohmann::basic_json::operator!=","text":"<pre><code>// until C++20\nbool operator!=(const_reference lhs, const_reference rhs) noexcept;   // (1)\n\ntemplate&lt;typename ScalarType&gt;\nbool operator!=(const_reference lhs, const ScalarType rhs) noexcept;  // (2)\n\ntemplate&lt;typename ScalarType&gt;\nbool operator!=(ScalarType lhs, const const_reference rhs) noexcept;  // (2)\n\n// since C++20\nclass basic_json {\n    bool operator!=(const_reference rhs) const noexcept;              // (1)\n\n    template&lt;typename ScalarType&gt;\n    bool operator!=(ScalarType rhs) const noexcept;                   // (2)\n};\n</code></pre> <ol> <li> <p>Compares two JSON values for inequality according to the following rules:</p> <ul> <li>The comparison always yields <code>false</code> if (1) either operand is discarded, or (2) either operand is <code>NaN</code> and   the other operand is either <code>NaN</code> or any other number.</li> <li>Otherwise, returns the result of <code>!(lhs == rhs)</code> (until C++20) or <code>!(*this == rhs)</code> (since C++20).</li> </ul> </li> <li> <p>Compares a JSON value and a scalar or a scalar and a JSON value for inequality by converting the scalar to a JSON    value and comparing both JSON values according to 1.</p> </li> </ol>"},{"location":"api/basic_json/operator_ne/#template-parameters","title":"Template parameters","text":"<code>ScalarType</code> a scalar type according to <code>std::is_scalar&lt;ScalarType&gt;::value</code>"},{"location":"api/basic_json/operator_ne/#parameters","title":"Parameters","text":"<code>lhs</code> (in) first value to consider  <code>rhs</code> (in) second value to consider"},{"location":"api/basic_json/operator_ne/#return-value","title":"Return value","text":"<p>whether the values <code>lhs</code>/<code>*this</code> and <code>rhs</code> are not equal</p>"},{"location":"api/basic_json/operator_ne/#exception-safety","title":"Exception safety","text":"<p>No-throw guarantee: this function never throws exceptions.</p>"},{"location":"api/basic_json/operator_ne/#complexity","title":"Complexity","text":"<p>Linear.</p>"},{"location":"api/basic_json/operator_ne/#notes","title":"Notes","text":"<p>Comparing <code>NaN</code></p> <p><code>NaN</code> values are unordered within the domain of numbers. The following comparisons all yield <code>false</code>:   1. Comparing a <code>NaN</code> with itself.   2. Comparing a <code>NaN</code> with another <code>NaN</code>.   3. Comparing a <code>NaN</code> and any other number.</p>"},{"location":"api/basic_json/operator_ne/#examples","title":"Examples","text":"Example <p>The example demonstrates comparing several JSON types.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create several JSON values\n    json array_1 = {1, 2, 3};\n    json array_2 = {1, 2, 4};\n    json object_1 = {{\"A\", \"a\"}, {\"B\", \"b\"}};\n    json object_2 = {{\"B\", \"b\"}, {\"A\", \"a\"}};\n    json number_1 = 17;\n    json number_2 = 17.000000000000001L;\n    json string_1 = \"foo\";\n    json string_2 = \"bar\";\n\n    // output values and comparisons\n    std::cout &lt;&lt; std::boolalpha;\n    std::cout &lt;&lt; array_1 &lt;&lt; \" != \" &lt;&lt; array_2 &lt;&lt; \" \" &lt;&lt; (array_1 != array_2) &lt;&lt; '\\n';\n    std::cout &lt;&lt; object_1 &lt;&lt; \" != \" &lt;&lt; object_2 &lt;&lt; \" \" &lt;&lt; (object_1 != object_2) &lt;&lt; '\\n';\n    std::cout &lt;&lt; number_1 &lt;&lt; \" != \" &lt;&lt; number_2 &lt;&lt; \" \" &lt;&lt; (number_1 != number_2) &lt;&lt; '\\n';\n    std::cout &lt;&lt; string_1 &lt;&lt; \" != \" &lt;&lt; string_2 &lt;&lt; \" \" &lt;&lt; (string_1 != string_2) &lt;&lt; '\\n';\n}\n</code></pre> <p>Output:</p> <pre><code>[1,2,3] != [1,2,4] true\n{\"A\":\"a\",\"B\":\"b\"} != {\"A\":\"a\",\"B\":\"b\"} false\n17 != 17.0 false\n\"foo\" != \"bar\" true\n</code></pre> Example <p>The example demonstrates comparing several JSON types against the null pointer (JSON <code>null</code>).</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create several JSON values\n    json array = {1, 2, 3};\n    json object = {{\"A\", \"a\"}, {\"B\", \"b\"}};\n    json number = 17;\n    json string = \"foo\";\n    json null;\n\n    // output values and comparisons\n    std::cout &lt;&lt; std::boolalpha;\n    std::cout &lt;&lt; array &lt;&lt; \" != nullptr \" &lt;&lt; (array != nullptr) &lt;&lt; '\\n';\n    std::cout &lt;&lt; object &lt;&lt; \" != nullptr \" &lt;&lt; (object != nullptr) &lt;&lt; '\\n';\n    std::cout &lt;&lt; number &lt;&lt; \" != nullptr \" &lt;&lt; (number != nullptr) &lt;&lt; '\\n';\n    std::cout &lt;&lt; string &lt;&lt; \" != nullptr \" &lt;&lt; (string != nullptr) &lt;&lt; '\\n';\n    std::cout &lt;&lt; null &lt;&lt; \" != nullptr \" &lt;&lt; (null != nullptr) &lt;&lt; '\\n';\n}\n</code></pre> <p>Output:</p> <pre><code>[1,2,3] != nullptr true\n{\"A\":\"a\",\"B\":\"b\"} != nullptr true\n17 != nullptr true\n\"foo\" != nullptr true\nnull != nullptr false\n</code></pre>"},{"location":"api/basic_json/operator_ne/#version-history","title":"Version history","text":"<ol> <li>Added in version 1.0.0. Added C++20 member functions in version 3.11.0.</li> <li>Added in version 1.0.0. Added C++20 member functions in version 3.11.0.</li> </ol>"},{"location":"api/basic_json/operator_spaceship/","title":"nlohmann::basic_json::operator&lt;=&gt;","text":"<pre><code>// since C++20\nclass basic_json {\n    std::partial_ordering operator&lt;=&gt;(const_reference rhs) const noexcept;  // (1)\n\n    template&lt;typename ScalarType&gt;\n    std::partial_ordering operator&lt;=&gt;(const ScalarType rhs) const noexcept; // (2)\n};\n</code></pre> <ol> <li> <p>3-way compares two JSON values producing a result of type <code>std::partial_ordering</code> according to the following rules:</p> <ul> <li>Two JSON values compare with a result of <code>std::partial_ordering::unordered</code> if either value is discarded.</li> <li>If both JSON values are of the same type, the result is produced by 3-way comparing their stored values using   their respective <code>operator&lt;=&gt;</code>.</li> <li>Integer and floating-point numbers are converted to their common type and then 3-way compared using their   respective <code>operator&lt;=&gt;</code>.   For instance, comparing an integer and a floating-point value will 3-way compare the first value converted to   floating-point with the second value.</li> <li>Otherwise, yields a result by comparing the type (see <code>value_t</code>).</li> </ul> </li> <li> <p>3-way compares a JSON value and a scalar or a scalar and a JSON value by converting the scalar to a JSON value and    3-way comparing both JSON values (see 1).</p> </li> </ol>"},{"location":"api/basic_json/operator_spaceship/#template-parameters","title":"Template parameters","text":"<code>ScalarType</code> a scalar type according to <code>std::is_scalar&lt;ScalarType&gt;::value</code>"},{"location":"api/basic_json/operator_spaceship/#parameters","title":"Parameters","text":"<code>rhs</code> (in) second value to consider"},{"location":"api/basic_json/operator_spaceship/#return-value","title":"Return value","text":"<p>the <code>std::partial_ordering</code> of the 3-way comparison of <code>*this</code> and <code>rhs</code></p>"},{"location":"api/basic_json/operator_spaceship/#exception-safety","title":"Exception safety","text":"<p>No-throw guarantee: this function never throws exceptions.</p>"},{"location":"api/basic_json/operator_spaceship/#complexity","title":"Complexity","text":"<p>Linear.</p>"},{"location":"api/basic_json/operator_spaceship/#notes","title":"Notes","text":"<p>Comparing <code>NaN</code></p> <ul> <li><code>NaN</code> values are unordered within the domain of numbers.   The following comparisons all yield <code>std::partial_ordering::unordered</code>:<ol> <li>Comparing a <code>NaN</code> with itself.</li> <li>Comparing a <code>NaN</code> with another <code>NaN</code>.</li> <li>Comparing a <code>NaN</code> and any other number.</li> </ol> </li> </ul>"},{"location":"api/basic_json/operator_spaceship/#examples","title":"Examples","text":"Example: (1) comparing JSON values <p>The example demonstrates comparing several JSON values.</p> <pre><code>#include &lt;compare&gt;\n#include &lt;iostream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nconst char* to_string(const std::partial_ordering&amp; po)\n{\n    if (std::is_lt(po))\n    {\n        return \"less\";\n    }\n    else if (std::is_gt(po))\n    {\n        return \"greater\";\n    }\n    else if (std::is_eq(po))\n    {\n        return \"equivalent\";\n    }\n    return \"unordered\";\n}\n\nint main()\n{\n    // create several JSON values\n    json array_1 = {1, 2, 3};\n    json array_2 = {1, 2, 4};\n    json object_1 = {{\"A\", \"a\"}, {\"B\", \"b\"}};\n    json object_2 = {{\"B\", \"b\"}, {\"A\", \"a\"}};\n    json number = 17;\n    json string = \"foo\";\n    json discarded = json(json::value_t::discarded);\n\n    // output values and comparisons\n    std::cout &lt;&lt; array_1 &lt;&lt; \" &lt;=&gt; \" &lt;&lt; array_2 &lt;&lt; \" := \" &lt;&lt; to_string(array_1 &lt;=&gt; array_2) &lt;&lt; '\\n'; // *NOPAD*\n    std::cout &lt;&lt; object_1 &lt;&lt; \" &lt;=&gt; \" &lt;&lt; object_2 &lt;&lt; \" := \" &lt;&lt; to_string(object_1 &lt;=&gt; object_2) &lt;&lt; '\\n'; // *NOPAD*\n    std::cout &lt;&lt; string &lt;&lt; \" &lt;=&gt; \" &lt;&lt; number &lt;&lt; \" := \" &lt;&lt; to_string(string &lt;=&gt; number) &lt;&lt; '\\n'; // *NOPAD*\n    std::cout &lt;&lt; string &lt;&lt; \" &lt;=&gt; \" &lt;&lt; discarded &lt;&lt; \" := \" &lt;&lt; to_string(string &lt;=&gt; discarded) &lt;&lt; '\\n'; // *NOPAD*\n}\n</code></pre> <p>Output:</p> <pre><code>[1,2,3] &lt;=&gt; [1,2,4] := less\n{\"A\":\"a\",\"B\":\"b\"} &lt;=&gt; {\"A\":\"a\",\"B\":\"b\"} := equivalent\n\"foo\" &lt;=&gt; 17 := greater\n\"foo\" &lt;=&gt; &lt;discarded&gt; := unordered\n</code></pre> Example: (2) comparing JSON values and scalars <p>The example demonstrates comparing several JSON values and scalars.</p> <pre><code>#include &lt;compare&gt;\n#include &lt;iostream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nconst char* to_string(const std::partial_ordering&amp; po)\n{\n    if (std::is_lt(po))\n    {\n        return \"less\";\n    }\n    else if (std::is_gt(po))\n    {\n        return \"greater\";\n    }\n    else if (std::is_eq(po))\n    {\n        return \"equivalent\";\n    }\n    return \"unordered\";\n}\n\nint main()\n{\n    using float_limits = std::numeric_limits&lt;json::number_float_t&gt;;\n    constexpr auto nan = float_limits::quiet_NaN();\n\n    // create several JSON values\n    json boolean = false;\n    json number = 17;\n    json string = \"17\";\n\n    // output values and comparisons\n    std::cout &lt;&lt; std::boolalpha &lt;&lt; std::fixed;\n    std::cout &lt;&lt; boolean &lt;&lt; \" &lt;=&gt; \" &lt;&lt; true &lt;&lt; \" := \" &lt;&lt; to_string(boolean &lt;=&gt; true) &lt;&lt; '\\n'; // *NOPAD*\n    std::cout &lt;&lt; number &lt;&lt; \" &lt;=&gt; \" &lt;&lt; 17.0 &lt;&lt; \" := \" &lt;&lt; to_string(number &lt;=&gt; 17.0) &lt;&lt; '\\n'; // *NOPAD*\n    std::cout &lt;&lt; number &lt;&lt; \" &lt;=&gt; \" &lt;&lt; nan &lt;&lt; \" := \" &lt;&lt; to_string(number &lt;=&gt; nan) &lt;&lt; '\\n'; // *NOPAD*\n    std::cout &lt;&lt; string &lt;&lt; \" &lt;=&gt; \" &lt;&lt; 17 &lt;&lt; \" := \" &lt;&lt; to_string(string &lt;=&gt; 17) &lt;&lt; '\\n'; // *NOPAD*\n}\n</code></pre> <p>Output:</p> <pre><code>false &lt;=&gt; true := less\n17 &lt;=&gt; 17.000000 := equivalent\n17 &lt;=&gt; nan := unordered\n\"17\" &lt;=&gt; 17 := greater\n</code></pre>"},{"location":"api/basic_json/operator_spaceship/#see-also","title":"See also","text":"<ul> <li>operator== - comparison: equal</li> <li>operator!= - comparison: not equal</li> <li>operator&lt; - comparison: less than</li> <li>operator&lt;= - comparison: less than or equal</li> <li>operator&gt; - comparison: greater than</li> <li>operator&gt;= - comparison: greater than or equal</li> </ul>"},{"location":"api/basic_json/operator_spaceship/#version-history","title":"Version history","text":"<ol> <li>Added in version 3.11.0.</li> <li>Added in version 3.11.0.</li> </ol>"},{"location":"api/basic_json/operator_value_t/","title":"nlohmann::basic_json::operator value_t","text":"<pre><code>constexpr operator value_t() const noexcept;\n</code></pre> <p>Return the type of the JSON value as a value from the <code>value_t</code> enumeration.</p>"},{"location":"api/basic_json/operator_value_t/#return-value","title":"Return value","text":"<p>the type of the JSON value</p> Value type return value <code>null</code> <code>value_t::null</code> boolean <code>value_t::boolean</code> string <code>value_t::string</code> number (integer) <code>value_t::number_integer</code> number (unsigned integer) <code>value_t::number_unsigned</code> number (floating-point) <code>value_t::number_float</code> object <code>value_t::object</code> array <code>value_t::array</code> binary <code>value_t::binary</code> discarded <code>value_t::discarded</code>"},{"location":"api/basic_json/operator_value_t/#exception-safety","title":"Exception safety","text":"<p>No-throw guarantee: this member function never throws exceptions.</p>"},{"location":"api/basic_json/operator_value_t/#complexity","title":"Complexity","text":"<p>Constant.</p>"},{"location":"api/basic_json/operator_value_t/#examples","title":"Examples","text":"Example <p>The following code exemplifies <code>operator value_t()</code> for all JSON types.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create JSON values\n    json j_null;\n    json j_boolean = true;\n    json j_number_integer = -17;\n    json j_number_unsigned = 42u;\n    json j_number_float = 23.42;\n    json j_object = {{\"one\", 1}, {\"two\", 2}};\n    json j_array = {1, 2, 4, 8, 16};\n    json j_string = \"Hello, world\";\n\n    // call operator value_t()\n    json::value_t t_null = j_null;\n    json::value_t t_boolean = j_boolean;\n    json::value_t t_number_integer = j_number_integer;\n    json::value_t t_number_unsigned = j_number_unsigned;\n    json::value_t t_number_float = j_number_float;\n    json::value_t t_object = j_object;\n    json::value_t t_array = j_array;\n    json::value_t t_string = j_string;\n\n    // print types\n    std::cout &lt;&lt; std::boolalpha;\n    std::cout &lt;&lt; (t_null == json::value_t::null) &lt;&lt; '\\n';\n    std::cout &lt;&lt; (t_boolean == json::value_t::boolean) &lt;&lt; '\\n';\n    std::cout &lt;&lt; (t_number_integer == json::value_t::number_integer) &lt;&lt; '\\n';\n    std::cout &lt;&lt; (t_number_unsigned == json::value_t::number_unsigned) &lt;&lt; '\\n';\n    std::cout &lt;&lt; (t_number_float == json::value_t::number_float) &lt;&lt; '\\n';\n    std::cout &lt;&lt; (t_object == json::value_t::object) &lt;&lt; '\\n';\n    std::cout &lt;&lt; (t_array == json::value_t::array) &lt;&lt; '\\n';\n    std::cout &lt;&lt; (t_string == json::value_t::string) &lt;&lt; '\\n';\n}\n</code></pre> <p>Output:</p> <pre><code>true\ntrue\ntrue\ntrue\ntrue\ntrue\ntrue\ntrue\n</code></pre>"},{"location":"api/basic_json/operator_value_t/#version-history","title":"Version history","text":"<ul> <li>Added in version 1.0.0.</li> <li>Added unsigned integer type in version 2.0.0.</li> <li>Added binary type in version 3.8.0.</li> </ul>"},{"location":"api/basic_json/other_error/","title":"nlohmann::basic_json::other_error","text":"<pre><code>class other_error : public exception;\n</code></pre> <p>This exception is thrown in case of errors that cannot be classified with the other exception types.</p> <p>Exceptions have ids 5xx (see list of other errors).</p> <pre><code>classDiagram\n  direction LR\n\n    class std_exception [\"std::exception\"] {\n        &lt;&lt;interface&gt;&gt;\n    }\n\n    class json_exception [\"basic_json::exception\"] {\n        +const int id\n        +const char* what() const\n    }\n\n    class json_parse_error [\"basic_json::parse_error\"] {\n        +const std::size_t byte\n    }\n\n    class json_invalid_iterator [\"basic_json::invalid_iterator\"]\n    class json_type_error [\"basic_json::type_error\"]\n    class json_out_of_range [\"basic_json::out_of_range\"]\n    class json_other_error [\"basic_json::other_error\"]\n\n    std_exception &lt;|-- json_exception\n    json_exception &lt;|-- json_parse_error\n    json_exception &lt;|-- json_invalid_iterator\n    json_exception &lt;|-- json_type_error\n    json_exception &lt;|-- json_out_of_range\n    json_exception &lt;|-- json_other_error\n\n    style json_other_error fill:#CCCCFF</code></pre>"},{"location":"api/basic_json/other_error/#member-functions","title":"Member functions","text":"<ul> <li>what - returns explanatory string</li> </ul>"},{"location":"api/basic_json/other_error/#member-variables","title":"Member variables","text":"<ul> <li>id - the id of the exception</li> </ul>"},{"location":"api/basic_json/other_error/#examples","title":"Examples","text":"Example <p>The following code shows how a <code>other_error</code> exception can be caught.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\nusing namespace nlohmann::literals;\n\nint main()\n{\n    try\n    {\n        // executing a failing JSON Patch operation\n        json value = R\"({\n            \"best_biscuit\": {\n                \"name\": \"Oreo\"\n            }\n        })\"_json;\n        json patch = R\"([{\n            \"op\": \"test\",\n            \"path\": \"/best_biscuit/name\",\n            \"value\": \"Choco Leibniz\"\n        }])\"_json;\n        value.patch(patch);\n    }\n    catch (const json::other_error&amp; e)\n    {\n        // output exception information\n        std::cout &lt;&lt; \"message: \" &lt;&lt; e.what() &lt;&lt; '\\n'\n                  &lt;&lt; \"exception id: \" &lt;&lt; e.id &lt;&lt; std::endl;\n    }\n}\n</code></pre> <p>Output:</p> <pre><code>message: [json.exception.other_error.501] unsuccessful: {\"op\":\"test\",\"path\":\"/best_biscuit/name\",\"value\":\"Choco Leibniz\"}\nexception id: 501\n</code></pre>"},{"location":"api/basic_json/other_error/#see-also","title":"See also","text":"<ul> <li><code>exception</code> for the base class of all exceptions thrown by the library</li> <li>List of other errors</li> <li><code>parse_error</code> for exceptions indicating a parse error</li> <li><code>invalid_iterator</code> for exceptions indicating errors with iterators</li> <li><code>type_error</code> for exceptions indicating executing a member function with a wrong type</li> <li><code>out_of_range</code> for exceptions indicating access out of the defined range</li> </ul>"},{"location":"api/basic_json/other_error/#version-history","title":"Version history","text":"<ul> <li>Since version 3.0.0.</li> </ul>"},{"location":"api/basic_json/out_of_range/","title":"nlohmann::basic_json::out_of_range","text":"<pre><code>class out_of_range : public exception;\n</code></pre> <p>This exception is thrown in case a library function is called on an input parameter that exceeds the expected range, for instance, in the case of array indices or nonexisting object keys.</p> <p>Exceptions have ids 4xx (see list of out-of-range errors).</p> <pre><code>classDiagram\n  direction LR\n\n    class std_exception [\"std::exception\"] {\n        &lt;&lt;interface&gt;&gt;\n    }\n\n    class json_exception [\"basic_json::exception\"] {\n        +const int id\n        +const char* what() const\n    }\n\n    class json_parse_error [\"basic_json::parse_error\"] {\n        +const std::size_t byte\n    }\n\n    class json_invalid_iterator [\"basic_json::invalid_iterator\"]\n    class json_type_error [\"basic_json::type_error\"]\n    class json_out_of_range [\"basic_json::out_of_range\"]\n    class json_other_error [\"basic_json::other_error\"]\n\n    std_exception &lt;|-- json_exception\n    json_exception &lt;|-- json_parse_error\n    json_exception &lt;|-- json_invalid_iterator\n    json_exception &lt;|-- json_type_error\n    json_exception &lt;|-- json_out_of_range\n    json_exception &lt;|-- json_other_error\n\n    style json_out_of_range fill:#CCCCFF</code></pre>"},{"location":"api/basic_json/out_of_range/#member-functions","title":"Member functions","text":"<ul> <li>what - returns explanatory string</li> </ul>"},{"location":"api/basic_json/out_of_range/#member-variables","title":"Member variables","text":"<ul> <li>id - the id of the exception</li> </ul>"},{"location":"api/basic_json/out_of_range/#examples","title":"Examples","text":"Example <p>The following code shows how a <code>out_of_range</code> exception can be caught.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    try\n    {\n        // calling at() for an invalid index\n        json j = {1, 2, 3, 4};\n        j.at(4) = 10;\n    }\n    catch (const json::out_of_range&amp; e)\n    {\n        // output exception information\n        std::cout &lt;&lt; \"message: \" &lt;&lt; e.what() &lt;&lt; '\\n'\n                  &lt;&lt; \"exception id: \" &lt;&lt; e.id &lt;&lt; std::endl;\n    }\n}\n</code></pre> <p>Output:</p> <pre><code>message: [json.exception.out_of_range.401] array index 4 is out of range\nexception id: 401\n</code></pre>"},{"location":"api/basic_json/out_of_range/#see-also","title":"See also","text":"<ul> <li><code>exception</code> for the base class of all exceptions thrown by the library</li> <li>List of out-of-range errors</li> <li><code>parse_error</code> for exceptions indicating a parse error</li> <li><code>invalid_iterator</code> for exceptions indicating errors with iterators</li> <li><code>type_error</code> for exceptions indicating executing a member function with a wrong type</li> <li><code>other_error</code> for exceptions indicating other library errors</li> </ul>"},{"location":"api/basic_json/out_of_range/#version-history","title":"Version history","text":"<ul> <li>Since version 3.0.0.</li> </ul>"},{"location":"api/basic_json/parse/","title":"nlohmann::basic_json::parse","text":"<pre><code>// (1)\ntemplate&lt;typename InputType&gt;\nstatic basic_json parse(InputType&amp;&amp; i,\n                        const parser_callback_t cb = nullptr,\n                        const bool allow_exceptions = true,\n                        const bool ignore_comments = false,\n                        const bool ignore_trailing_commas = false);\n\n// (2)\ntemplate&lt;typename IteratorType&gt;\nstatic basic_json parse(IteratorType first, IteratorType last,\n                        const parser_callback_t cb = nullptr,\n                        const bool allow_exceptions = true,\n                        const bool ignore_comments = false,\n                        const bool ignore_trailing_commas = false);\n</code></pre> <ol> <li>Deserialize from a compatible input.</li> <li> <p>Deserialize from a pair of character iterators</p> <p>The <code>value_type</code> of the iterator must be an integral type with size of 1, 2, or 4 bytes, which will be interpreted respectively as UTF-8, UTF-16, and UTF-32.</p> </li> </ol>"},{"location":"api/basic_json/parse/#template-parameters","title":"Template parameters","text":"<code>InputType</code> <p>A compatible input, for instance:</p> <ul> <li>an <code>std::istream</code> object</li> <li>a <code>FILE</code> pointer (throws if null)</li> <li>a C-style array of characters</li> <li>a pointer to a null-terminated string of single byte characters (throws if null)</li> <li>a <code>std::string</code></li> <li>an object <code>obj</code> for which <code>begin(obj)</code> and <code>end(obj)</code> produces a valid pair of iterators.</li> </ul> <code>IteratorType</code> <p>a compatible iterator type, for instance.</p> <ul> <li>a pair of <code>std::string::iterator</code> or <code>std::vector&lt;std::uint8_t&gt;::iterator</code></li> <li>a pair of pointers such as <code>ptr</code> and <code>ptr + len</code></li> </ul>"},{"location":"api/basic_json/parse/#parameters","title":"Parameters","text":"<code>i</code> (in) Input to parse from. <code>cb</code> (in) a parser callback function of type <code>parser_callback_t</code> which is used to control the deserialization by filtering unwanted values (optional) <code>allow_exceptions</code> (in) whether to throw exceptions in case of a parse error (optional, <code>true</code> by default) <code>ignore_comments</code> (in) whether comments should be ignored and treated like whitespace (<code>true</code>) or yield a parse error (<code>false</code>); (optional, <code>false</code> by default) <code>ignore_trailing_commas</code> (in) whether trailing commas in arrays or objects should be ignored and treated like whitespace (<code>true</code>) or yield a parse error (<code>false</code>); (optional, <code>false</code> by default) <code>first</code> (in) iterator to the start of a character range <code>last</code> (in) iterator to the end of a character range"},{"location":"api/basic_json/parse/#return-value","title":"Return value","text":"<p>Deserialized JSON value; in case of a parse error and <code>allow_exceptions</code> set to <code>false</code>, the return value will be <code>value_t::discarded</code>. The latter can be checked with <code>is_discarded</code>.</p>"},{"location":"api/basic_json/parse/#exception-safety","title":"Exception safety","text":"<p>Strong guarantee: if an exception is thrown, there are no changes in the JSON value.</p>"},{"location":"api/basic_json/parse/#exceptions","title":"Exceptions","text":"<ul> <li>Throws <code>parse_error.101</code> in case of an unexpected token, or   empty input like a null <code>FILE*</code> or <code>char*</code> pointer.</li> </ul>"},{"location":"api/basic_json/parse/#complexity","title":"Complexity","text":"<p>Linear in the length of the input. The parser is a predictive LL(1) parser. The complexity can be higher if the parser callback function <code>cb</code> or reading from (1) the input <code>i</code> or (2) the iterator range [<code>first</code>, <code>last</code>] has a super-linear complexity.</p>"},{"location":"api/basic_json/parse/#notes","title":"Notes","text":"<p>A UTF-8 byte order mark is silently ignored.</p> <p>Invalid Unicode escapes and unpaired surrogates in the input are reported as <code>parse_error.101</code> with a detailed message.</p>"},{"location":"api/basic_json/parse/#examples","title":"Examples","text":"Parsing from a character array <p>The example below demonstrates the <code>parse()</code> function reading from an array.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;iomanip&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // a JSON text\n    char text[] = R\"(\n    {\n        \"Image\": {\n            \"Width\":  800,\n            \"Height\": 600,\n            \"Title\":  \"View from 15th Floor\",\n            \"Thumbnail\": {\n                \"Url\":    \"http://www.example.com/image/481989943\",\n                \"Height\": 125,\n                \"Width\":  100\n            },\n            \"Animated\" : false,\n            \"IDs\": [116, 943, 234, 38793]\n        }\n    }\n    )\";\n\n    // parse and serialize JSON\n    json j_complete = json::parse(text);\n    std::cout &lt;&lt; std::setw(4) &lt;&lt; j_complete &lt;&lt; \"\\n\\n\";\n}\n</code></pre> <p>Output:</p> <pre><code>{\n    \"Image\": {\n        \"Animated\": false,\n        \"Height\": 600,\n        \"IDs\": [\n            116,\n            943,\n            234,\n            38793\n        ],\n        \"Thumbnail\": {\n            \"Height\": 125,\n            \"Url\": \"http://www.example.com/image/481989943\",\n            \"Width\": 100\n        },\n        \"Title\": \"View from 15th Floor\",\n        \"Width\": 800\n    }\n}\n</code></pre> Parsing from a string <p>The example below demonstrates the <code>parse()</code> function with and without callback function.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;iomanip&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // a JSON text\n    auto text = R\"(\n    {\n        \"Image\": {\n            \"Width\":  800,\n            \"Height\": 600,\n            \"Title\":  \"View from 15th Floor\",\n            \"Thumbnail\": {\n                \"Url\":    \"http://www.example.com/image/481989943\",\n                \"Height\": 125,\n                \"Width\":  100\n            },\n            \"Animated\" : false,\n            \"IDs\": [116, 943, 234, 38793]\n        }\n    }\n    )\";\n\n    // parse and serialize JSON\n    json j_complete = json::parse(text);\n    std::cout &lt;&lt; std::setw(4) &lt;&lt; j_complete &lt;&lt; \"\\n\\n\";\n\n    // define parser callback\n    json::parser_callback_t cb = [](int depth, json::parse_event_t event, json &amp; parsed)\n    {\n        // skip object elements with key \"Thumbnail\"\n        if (event == json::parse_event_t::key and parsed == json(\"Thumbnail\"))\n        {\n            return false;\n        }\n        else\n        {\n            return true;\n        }\n    };\n\n    // parse (with callback) and serialize JSON\n    json j_filtered = json::parse(text, cb);\n    std::cout &lt;&lt; std::setw(4) &lt;&lt; j_filtered &lt;&lt; '\\n';\n}\n</code></pre> <p>Output:</p> <pre><code>{\n    \"Image\": {\n        \"Animated\": false,\n        \"Height\": 600,\n        \"IDs\": [\n            116,\n            943,\n            234,\n            38793\n        ],\n        \"Thumbnail\": {\n            \"Height\": 125,\n            \"Url\": \"http://www.example.com/image/481989943\",\n            \"Width\": 100\n        },\n        \"Title\": \"View from 15th Floor\",\n        \"Width\": 800\n    }\n}\n\n{\n    \"Image\": {\n        \"Animated\": false,\n        \"Height\": 600,\n        \"IDs\": [\n            116,\n            943,\n            234,\n            38793\n        ],\n        \"Title\": \"View from 15th Floor\",\n        \"Width\": 800\n    }\n}\n</code></pre> Parsing from an input stream <p>The example below demonstrates the <code>parse()</code> function with and without callback function.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;iomanip&gt;\n#include &lt;sstream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // a JSON text\n    auto text = R\"(\n    {\n        \"Image\": {\n            \"Width\":  800,\n            \"Height\": 600,\n            \"Title\":  \"View from 15th Floor\",\n            \"Thumbnail\": {\n                \"Url\":    \"http://www.example.com/image/481989943\",\n                \"Height\": 125,\n                \"Width\":  100\n            },\n            \"Animated\" : false,\n            \"IDs\": [116, 943, 234, 38793]\n        }\n    }\n    )\";\n\n    // fill a stream with JSON text\n    std::stringstream ss;\n    ss &lt;&lt; text;\n\n    // parse and serialize JSON\n    json j_complete = json::parse(ss);\n    std::cout &lt;&lt; std::setw(4) &lt;&lt; j_complete &lt;&lt; \"\\n\\n\";\n\n    // define parser callback\n    json::parser_callback_t cb = [](int depth, json::parse_event_t event, json &amp; parsed)\n    {\n        // skip object elements with key \"Thumbnail\"\n        if (event == json::parse_event_t::key and parsed == json(\"Thumbnail\"))\n        {\n            return false;\n        }\n        else\n        {\n            return true;\n        }\n    };\n\n    // fill a stream with JSON text\n    ss.clear();\n    ss &lt;&lt; text;\n\n    // parse (with callback) and serialize JSON\n    json j_filtered = json::parse(ss, cb);\n    std::cout &lt;&lt; std::setw(4) &lt;&lt; j_filtered &lt;&lt; '\\n';\n}\n</code></pre> <p>Output:</p> <pre><code>{\n    \"Image\": {\n        \"Animated\": false,\n        \"Height\": 600,\n        \"IDs\": [\n            116,\n            943,\n            234,\n            38793\n        ],\n        \"Thumbnail\": {\n            \"Height\": 125,\n            \"Url\": \"http://www.example.com/image/481989943\",\n            \"Width\": 100\n        },\n        \"Title\": \"View from 15th Floor\",\n        \"Width\": 800\n    }\n}\n\n{\n    \"Image\": {\n        \"Animated\": false,\n        \"Height\": 600,\n        \"IDs\": [\n            116,\n            943,\n            234,\n            38793\n        ],\n        \"Title\": \"View from 15th Floor\",\n        \"Width\": 800\n    }\n}\n</code></pre> Parsing from a contiguous container <p>The example below demonstrates the <code>parse()</code> function reading from a contiguous container.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;iomanip&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // a JSON text given as std::vector\n    std::vector&lt;std::uint8_t&gt; text = {'[', '1', ',', '2', ',', '3', ']', '\\0'};\n\n    // parse and serialize JSON\n    json j_complete = json::parse(text);\n    std::cout &lt;&lt; std::setw(4) &lt;&lt; j_complete &lt;&lt; \"\\n\\n\";\n}\n</code></pre> <p>Output:</p> <pre><code>[\n    1,\n    2,\n    3\n]\n</code></pre> Parsing from a non-null-terminated string <p>The example below demonstrates the <code>parse()</code> function reading from a string that is not null-terminated.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;iomanip&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // a JSON text given as string that is not null-terminated\n    const char* ptr = \"[1,2,3]another value\";\n\n    // parse and serialize JSON\n    json j_complete = json::parse(ptr, ptr + 7);\n    std::cout &lt;&lt; std::setw(4) &lt;&lt; j_complete &lt;&lt; \"\\n\\n\";\n}\n</code></pre> <p>Output:</p> <pre><code>[\n    1,\n    2,\n    3\n]\n</code></pre> Parsing from an iterator pair <p>The example below demonstrates the <code>parse()</code> function reading from an iterator pair.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;iomanip&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // a JSON text given an input with other values\n    std::vector&lt;std::uint8_t&gt; input = {'[', '1', ',', '2', ',', '3', ']', 'o', 't', 'h', 'e', 'r'};\n\n    // parse and serialize JSON\n    json j_complete = json::parse(input.begin(), input.begin() + 7);\n    std::cout &lt;&lt; std::setw(4) &lt;&lt; j_complete &lt;&lt; \"\\n\\n\";\n}\n</code></pre> <p>Output:</p> <pre><code>[\n    1,\n    2,\n    3\n]\n</code></pre> Effect of <code>allow_exceptions</code> parameter <p>The example below demonstrates the effect of the <code>allow_exceptions</code> parameter in the <code>parse()</code> function.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // an invalid JSON text\n    std::string text = R\"(\n    {\n        \"key\": \"value without closing quotes\n    }\n    )\";\n\n    // parse with exceptions\n    try\n    {\n        json j = json::parse(text);\n    }\n    catch (const json::parse_error&amp; e)\n    {\n        std::cout &lt;&lt; e.what() &lt;&lt; std::endl;\n    }\n\n    // parse without exceptions\n    json j = json::parse(text, nullptr, false);\n\n    if (j.is_discarded())\n    {\n        std::cout &lt;&lt; \"the input is invalid JSON\" &lt;&lt; std::endl;\n    }\n    else\n    {\n        std::cout &lt;&lt; \"the input is valid JSON: \" &lt;&lt; j &lt;&lt; std::endl;\n    }\n}\n</code></pre> <p>Output:</p> <pre><code>[json.exception.parse_error.101] parse error at line 4, column 0: syntax error while parsing value - invalid string: control character U+000A (LF) must be escaped to \\u000A or \\n; last read: '\"value without closing quotes&lt;U+000A&gt;'\nthe input is invalid JSON\n</code></pre> Effect of <code>ignore_comments</code> parameter <p>The example below demonstrates the effect of the <code>ignore_comments</code> parameter in the <code>parse()</code> function.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    std::string s = R\"(\n    {\n        // update in 2006: removed Pluto\n        \"planets\": [\"Mercury\", \"Venus\", \"Earth\", \"Mars\",\n                    \"Jupiter\", \"Uranus\", \"Neptune\" /*, \"Pluto\" */]\n    }\n    )\";\n\n    try\n    {\n        json j = json::parse(s);\n    }\n    catch (json::exception&amp; e)\n    {\n        std::cout &lt;&lt; e.what() &lt;&lt; std::endl;\n    }\n\n    json j = json::parse(s,\n                         /* callback */ nullptr,\n                         /* allow exceptions */ true,\n                         /* ignore_comments */ true);\n    std::cout &lt;&lt; j.dump(2) &lt;&lt; '\\n';\n}\n</code></pre> <p>Output:</p> <pre><code>[json.exception.parse_error.101] parse error at line 3, column 9: syntax error while parsing object key - invalid literal; last read: '&lt;U+000A&gt;    {&lt;U+000A&gt;        /'; expected string literal\n{\n  \"planets\": [\n    \"Mercury\",\n    \"Venus\",\n    \"Earth\",\n    \"Mars\",\n    \"Jupiter\",\n    \"Uranus\",\n    \"Neptune\"\n  ]\n}\n</code></pre> Effect of <code>ignore_trailing_commas</code> parameter <p>The example below demonstrates the effect of the <code>ignore_trailing_commas</code> parameter in the <code>parse()</code> function.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    std::string s = R\"(\n    {\n        \"planets\": [\n            \"Mercury\",\n            \"Venus\",\n            \"Earth\",\n            \"Mars\",\n            \"Jupiter\",\n            \"Uranus\",\n            \"Neptune\",\n        ]\n    }\n    )\";\n\n    try\n    {\n        json j = json::parse(s);\n    }\n    catch (json::exception&amp; e)\n    {\n        std::cout &lt;&lt; e.what() &lt;&lt; std::endl;\n    }\n\n    json j = json::parse(s,\n                         /* callback */ nullptr,\n                         /* allow exceptions */ true,\n                         /* ignore_comments */ false,\n                         /* ignore_trailing_commas */ true);\n    std::cout &lt;&lt; j.dump(2) &lt;&lt; '\\n';\n}\n</code></pre> <p>Output:</p> <pre><code>[json.exception.parse_error.101] parse error at line 11, column 9: syntax error while parsing value - unexpected ']'; expected '[', '{', or a literal\n{\n  \"planets\": [\n    \"Mercury\",\n    \"Venus\",\n    \"Earth\",\n    \"Mars\",\n    \"Jupiter\",\n    \"Uranus\",\n    \"Neptune\"\n  ]\n}\n</code></pre>"},{"location":"api/basic_json/parse/#see-also","title":"See also","text":"<ul> <li>accept - check if the input is valid JSON</li> <li>sax_parse - parse input using the SAX interface</li> <li>operator&gt;&gt; - deserialize from stream</li> </ul>"},{"location":"api/basic_json/parse/#version-history","title":"Version history","text":"<ul> <li>Added in version 1.0.0.</li> <li>Overload for contiguous containers (1) added in version 2.0.3.</li> <li>Ignoring comments via <code>ignore_comments</code> added in version 3.9.0.</li> <li>Changed runtime assertion in case of <code>FILE*</code> null pointers to exception in version 3.12.0.</li> <li>Added <code>ignore_trailing_commas</code> in version 3.12.x.</li> </ul> <p>Deprecation</p> <p>Overload (2) replaces calls to <code>parse</code> with a pair of iterators as their first parameter which has been deprecated in version 3.8.0. This overload will be removed in version 4.0.0. Please replace all calls like <code>parse({ptr, ptr+len}, ...);</code> with <code>parse(ptr, ptr+len, ...);</code>.</p> <p>You should be warned by your compiler with a <code>-Wdeprecated-declarations</code> warning if you are using a deprecated function.</p>"},{"location":"api/basic_json/parse_error/","title":"nlohmann::basic_json::parse_error","text":"<pre><code>class parse_error : public exception;\n</code></pre> <p>The library throws this exception when a parse error occurs. Parse errors can occur during the deserialization of JSON text, BSON, CBOR, MessagePack, UBJSON, as well as when using JSON Patch.</p> <p>Member <code>byte</code> holds the byte index of the last read character in the input file (see note below).</p> <p>Exceptions have ids 1xx (see list of parse errors).</p> <pre><code>classDiagram\n  direction LR\n\n    class std_exception [\"std::exception\"] {\n        &lt;&lt;interface&gt;&gt;\n    }\n\n    class json_exception [\"basic_json::exception\"] {\n        +const int id\n        +const char* what() const\n    }\n\n    class json_parse_error [\"basic_json::parse_error\"] {\n        +const std::size_t byte\n    }\n\n    class json_invalid_iterator [\"basic_json::invalid_iterator\"]\n    class json_type_error [\"basic_json::type_error\"]\n    class json_out_of_range [\"basic_json::out_of_range\"]\n    class json_other_error [\"basic_json::other_error\"]\n\n    std_exception &lt;|-- json_exception\n    json_exception &lt;|-- json_parse_error\n    json_exception &lt;|-- json_invalid_iterator\n    json_exception &lt;|-- json_type_error\n    json_exception &lt;|-- json_out_of_range\n    json_exception &lt;|-- json_other_error\n\n    style json_parse_error fill:#CCCCFF</code></pre>"},{"location":"api/basic_json/parse_error/#member-functions","title":"Member functions","text":"<ul> <li>what - returns explanatory string</li> </ul>"},{"location":"api/basic_json/parse_error/#member-variables","title":"Member variables","text":"<ul> <li>id - the id of the exception</li> <li>byte - byte index of the parse error</li> </ul>"},{"location":"api/basic_json/parse_error/#notes","title":"Notes","text":"<p>For an input with n bytes, 1 is the index of the first character and n+1 is the index of the terminating null byte or the end of file. This also holds true when reading a byte vector for binary formats.</p>"},{"location":"api/basic_json/parse_error/#examples","title":"Examples","text":"Example <p>The following code shows how a <code>parse_error</code> exception can be caught.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    try\n    {\n        // parsing input with a syntax error\n        json::parse(\"[1,2,3,]\");\n    }\n    catch (const json::parse_error&amp; e)\n    {\n        // output exception information\n        std::cout &lt;&lt; \"message: \" &lt;&lt; e.what() &lt;&lt; '\\n'\n                  &lt;&lt; \"exception id: \" &lt;&lt; e.id &lt;&lt; '\\n'\n                  &lt;&lt; \"byte position of error: \" &lt;&lt; e.byte &lt;&lt; std::endl;\n    }\n}\n</code></pre> <p>Output:</p> <pre><code>message: [json.exception.parse_error.101] parse error at line 1, column 8: syntax error while parsing value - unexpected ']'; expected '[', '{', or a literal\nexception id: 101\nbyte position of error: 8\n</code></pre>"},{"location":"api/basic_json/parse_error/#see-also","title":"See also","text":"<ul> <li><code>exception</code> for the base class of all exceptions thrown by the library</li> <li>List of parse errors</li> <li><code>invalid_iterator</code> for exceptions indicating errors with iterators</li> <li><code>type_error</code> for exceptions indicating executing a member function with a wrong type</li> <li><code>out_of_range</code> for exceptions indicating access out of the defined range</li> <li><code>other_error</code> for exceptions indicating other library errors</li> </ul>"},{"location":"api/basic_json/parse_error/#version-history","title":"Version history","text":"<ul> <li>Since version 3.0.0.</li> </ul>"},{"location":"api/basic_json/parse_event_t/","title":"nlohmann::basic_json::parse_event_t","text":"<pre><code>enum class parse_event_t : std::uint8_t {\n    object_start,\n    object_end,\n    array_start,\n    array_end,\n    key,\n    value\n};\n</code></pre> <p>The parser callback distinguishes the following events:</p> <ul> <li><code>object_start</code>: the parser read <code>{</code> and started to process a JSON object</li> <li><code>key</code>: the parser read a key of a value in an object</li> <li><code>object_end</code>: the parser read <code>}</code> and finished processing a JSON object</li> <li><code>array_start</code>: the parser read <code>[</code> and started to process a JSON array</li> <li><code>array_end</code>: the parser read <code>]</code> and finished processing a JSON array</li> <li><code>value</code>: the parser finished reading a JSON value</li> </ul>"},{"location":"api/basic_json/parse_event_t/#examples","title":"Examples","text":""},{"location":"api/basic_json/parse_event_t/#see-also","title":"See also","text":"<ul> <li>parser_callback_t callback function type for the parser</li> <li>parse deserialize from a compatible input</li> </ul>"},{"location":"api/basic_json/parse_event_t/#version-history","title":"Version history","text":"<ul> <li>Added in version 1.0.0.</li> </ul>"},{"location":"api/basic_json/parser_callback_t/","title":"nlohmann::basic_json::parser_callback_t","text":"<pre><code>template&lt;typename BasicJsonType&gt;\nusing parser_callback_t =\n    std::function&lt;bool(int depth, parse_event_t event, BasicJsonType&amp; parsed)&gt;;\n</code></pre> <p>With a parser callback function, the result of parsing a JSON text can be influenced. When passed to <code>parse</code>, it is called on certain events (passed as <code>parse_event_t</code> via parameter <code>event</code>) with a set recursion depth <code>depth</code> and context JSON value <code>parsed</code>. The return value of the callback function is a boolean indicating whether the element that emitted the callback shall be kept or not.</p> <p>We distinguish six scenarios (determined by the event type) in which the callback function can be called. The following table describes the values of the parameters <code>depth</code>, <code>event</code>, and <code>parsed</code>.</p> parameter <code>event</code> description parameter <code>depth</code> parameter <code>parsed</code> <code>parse_event_t::object_start</code> the parser read <code>{</code> and started to process a JSON object depth of the parent of the JSON object a JSON value with type discarded <code>parse_event_t::key</code> the parser read a key of a value in an object depth of the currently parsed JSON object a JSON string containing the key <code>parse_event_t::object_end</code> the parser read <code>}</code> and finished processing a JSON object depth of the parent of the JSON object the parsed JSON object <code>parse_event_t::array_start</code> the parser read <code>[</code> and started to process a JSON array depth of the parent of the JSON array a JSON value with type discarded <code>parse_event_t::array_end</code> the parser read <code>]</code> and finished processing a JSON array depth of the parent of the JSON array the parsed JSON array <code>parse_event_t::value</code> the parser finished reading a JSON value depth of the value the parsed JSON value <p></p> <p>Discarding a value (i.e., returning <code>false</code>) has different effects depending on the context in which function was called:</p> <ul> <li>Discarded values in structured types are skipped. That is, the parser will behave as if the discarded value was never   read.</li> <li>In case a value outside a structured type is skipped, it is replaced with <code>null</code>. This case happens if the top-level   element is skipped.</li> </ul>"},{"location":"api/basic_json/parser_callback_t/#parameters","title":"Parameters","text":"<code>depth</code> (in) the depth of the recursion during parsing <code>event</code> (in) an event of type <code>parse_event_t</code> indicating the context in the callback function has been called <code>parsed</code> (in, out) the current intermediate parse result; note that  writing to this value has no effect for <code>parse_event_t::key</code> events"},{"location":"api/basic_json/parser_callback_t/#return-value","title":"Return value","text":"<p>Whether the JSON value which called the function during parsing should be kept (<code>true</code>) or not (<code>false</code>). In the latter case, it is either skipped completely or replaced by an empty discarded object.</p>"},{"location":"api/basic_json/parser_callback_t/#examples","title":"Examples","text":"Example <p>The example below demonstrates the <code>parse()</code> function with and without callback function.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;iomanip&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // a JSON text\n    auto text = R\"(\n    {\n        \"Image\": {\n            \"Width\":  800,\n            \"Height\": 600,\n            \"Title\":  \"View from 15th Floor\",\n            \"Thumbnail\": {\n                \"Url\":    \"http://www.example.com/image/481989943\",\n                \"Height\": 125,\n                \"Width\":  100\n            },\n            \"Animated\" : false,\n            \"IDs\": [116, 943, 234, 38793]\n        }\n    }\n    )\";\n\n    // parse and serialize JSON\n    json j_complete = json::parse(text);\n    std::cout &lt;&lt; std::setw(4) &lt;&lt; j_complete &lt;&lt; \"\\n\\n\";\n\n    // define parser callback\n    json::parser_callback_t cb = [](int depth, json::parse_event_t event, json &amp; parsed)\n    {\n        // skip object elements with key \"Thumbnail\"\n        if (event == json::parse_event_t::key and parsed == json(\"Thumbnail\"))\n        {\n            return false;\n        }\n        else\n        {\n            return true;\n        }\n    };\n\n    // parse (with callback) and serialize JSON\n    json j_filtered = json::parse(text, cb);\n    std::cout &lt;&lt; std::setw(4) &lt;&lt; j_filtered &lt;&lt; '\\n';\n}\n</code></pre> <p>Output:</p> <pre><code>{\n    \"Image\": {\n        \"Animated\": false,\n        \"Height\": 600,\n        \"IDs\": [\n            116,\n            943,\n            234,\n            38793\n        ],\n        \"Thumbnail\": {\n            \"Height\": 125,\n            \"Url\": \"http://www.example.com/image/481989943\",\n            \"Width\": 100\n        },\n        \"Title\": \"View from 15th Floor\",\n        \"Width\": 800\n    }\n}\n\n{\n    \"Image\": {\n        \"Animated\": false,\n        \"Height\": 600,\n        \"IDs\": [\n            116,\n            943,\n            234,\n            38793\n        ],\n        \"Title\": \"View from 15th Floor\",\n        \"Width\": 800\n    }\n}\n</code></pre>"},{"location":"api/basic_json/parser_callback_t/#see-also","title":"See also","text":"<ul> <li>parse deserialize from a compatible input</li> <li>parse_event_t enumeration of parser events</li> </ul>"},{"location":"api/basic_json/parser_callback_t/#version-history","title":"Version history","text":"<ul> <li>Added in version 1.0.0.</li> </ul>"},{"location":"api/basic_json/patch/","title":"nlohmann::basic_json::patch","text":"<pre><code>basic_json patch(const basic_json&amp; json_patch) const;\n</code></pre> <p>JSON Patch defines a JSON document structure for expressing a sequence of operations to apply to a JSON document. With this function, a JSON Patch is applied to the current JSON value by executing all operations from the patch.</p>"},{"location":"api/basic_json/patch/#parameters","title":"Parameters","text":"<code>json_patch</code> (in) JSON patch document"},{"location":"api/basic_json/patch/#return-value","title":"Return value","text":"<p>patched document</p>"},{"location":"api/basic_json/patch/#exception-safety","title":"Exception safety","text":"<p>Strong guarantee: if an exception is thrown, there are no changes in the JSON value.</p>"},{"location":"api/basic_json/patch/#exceptions","title":"Exceptions","text":"<ul> <li>Throws <code>parse_error.104</code> if the JSON patch does not consist of   an array of objects.</li> <li>Throws <code>parse_error.105</code> if the JSON patch is malformed (e.g.,   mandatory attributes are missing); example: <code>\"operation add must have member path\"</code>.</li> <li>Throws <code>out_of_range.401</code> if an array index is out of range.</li> <li>Throws <code>out_of_range.403</code> if a JSON pointer inside the patch   could not be resolved successfully in the current JSON value; example: <code>\"key baz not found\"</code>.</li> <li>Throws <code>out_of_range.405</code> if JSON pointer has no parent   (\"add\", \"remove\", \"move\")</li> <li>Throws <code>other_error.501</code> if \"test\" operation was   unsuccessful.</li> </ul>"},{"location":"api/basic_json/patch/#complexity","title":"Complexity","text":"<p>Linear in the size of the JSON value and the length of the JSON patch. As usually the patch affects only a fraction of the JSON value, the complexity can usually be neglected.</p>"},{"location":"api/basic_json/patch/#notes","title":"Notes","text":"<p>The application of a patch is atomic: Either all operations succeed and the patched document is returned or an exception is thrown. In any case, the original value is not changed: the patch is applied to a copy of the value.</p>"},{"location":"api/basic_json/patch/#examples","title":"Examples","text":"Example <p>The following code shows how a JSON patch is applied to a value.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;iomanip&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\nusing namespace nlohmann::literals;\n\nint main()\n{\n    // the original document\n    json doc = R\"(\n        {\n          \"baz\": \"qux\",\n          \"foo\": \"bar\"\n        }\n    )\"_json;\n\n    // the patch\n    json patch = R\"(\n        [\n          { \"op\": \"replace\", \"path\": \"/baz\", \"value\": \"boo\" },\n          { \"op\": \"add\", \"path\": \"/hello\", \"value\": [\"world\"] },\n          { \"op\": \"remove\", \"path\": \"/foo\"}\n        ]\n    )\"_json;\n\n    // apply the patch\n    json patched_doc = doc.patch(patch);\n\n    // output original and patched document\n    std::cout &lt;&lt; std::setw(4) &lt;&lt; doc &lt;&lt; \"\\n\\n\"\n              &lt;&lt; std::setw(4) &lt;&lt; patched_doc &lt;&lt; std::endl;\n}\n</code></pre> <p>Output:</p> <pre><code>{\n    \"baz\": \"qux\",\n    \"foo\": \"bar\"\n}\n\n{\n    \"baz\": \"boo\",\n    \"hello\": [\n        \"world\"\n    ]\n}\n</code></pre>"},{"location":"api/basic_json/patch/#see-also","title":"See also","text":"<ul> <li>RFC 6902 (JSON Patch)</li> <li>RFC 6901 (JSON Pointer)</li> <li>patch_inplace applies a JSON Patch without creating a copy of the document</li> <li>merge_patch applies a JSON Merge Patch</li> </ul>"},{"location":"api/basic_json/patch/#version-history","title":"Version history","text":"<ul> <li>Added in version 2.0.0.</li> </ul>"},{"location":"api/basic_json/patch_inplace/","title":"nlohmann::basic_json::patch_inplace","text":"<pre><code>void patch_inplace(const basic_json&amp; json_patch);\n</code></pre> <p>JSON Patch defines a JSON document structure for expressing a sequence of operations to apply to a JSON document. With this function, a JSON Patch is applied to the current JSON value by executing all operations from the patch. This function applies a JSON patch in place and returns void.</p>"},{"location":"api/basic_json/patch_inplace/#parameters","title":"Parameters","text":"<code>json_patch</code> (in) JSON patch document"},{"location":"api/basic_json/patch_inplace/#exception-safety","title":"Exception safety","text":"<p>No guarantees, value may be corrupted by an unsuccessful patch operation.</p>"},{"location":"api/basic_json/patch_inplace/#exceptions","title":"Exceptions","text":"<ul> <li>Throws <code>parse_error.104</code> if the JSON patch does not consist of   an array of objects.</li> <li>Throws <code>parse_error.105</code> if the JSON patch is malformed (e.g.,   mandatory attributes are missing); example: <code>\"operation add must have member path\"</code>.</li> <li>Throws <code>out_of_range.401</code> if an array index is out of range.</li> <li>Throws <code>out_of_range.403</code> if a JSON pointer inside the patch   could not be resolved successfully in the current JSON value; example: <code>\"key baz not found\"</code>.</li> <li>Throws <code>out_of_range.405</code> if JSON pointer has no parent   (\"add\", \"remove\", \"move\")</li> <li>Throws <code>other_error.501</code> if \"test\" operation was   unsuccessful.</li> </ul>"},{"location":"api/basic_json/patch_inplace/#complexity","title":"Complexity","text":"<p>Linear in the size of the JSON value and the length of the JSON patch. As usually the patch affects only a fraction of the JSON value, the complexity can usually be neglected.</p>"},{"location":"api/basic_json/patch_inplace/#notes","title":"Notes","text":"<p>Unlike <code>patch</code>, <code>patch_inplace</code> applies the operation \"in place\" and no copy of the JSON value is created. That makes it faster for large documents by avoiding the copy. However, the JSON value might be corrupted if the function throws an exception.</p>"},{"location":"api/basic_json/patch_inplace/#examples","title":"Examples","text":"Example <p>The following code shows how a JSON patch is applied to a value.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;iomanip&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\nusing namespace nlohmann::literals;\n\nint main()\n{\n    // the original document\n    json doc = R\"(\n        {\n          \"baz\": \"qux\",\n          \"foo\": \"bar\"\n        }\n    )\"_json;\n\n    // the patch\n    json patch = R\"(\n        [\n          { \"op\": \"replace\", \"path\": \"/baz\", \"value\": \"boo\" },\n          { \"op\": \"add\", \"path\": \"/hello\", \"value\": [\"world\"] },\n          { \"op\": \"remove\", \"path\": \"/foo\"}\n        ]\n    )\"_json;\n\n    // output original document\n    std::cout &lt;&lt; \"Before\\n\" &lt;&lt; std::setw(4) &lt;&lt; doc &lt;&lt; std::endl;\n\n    // apply the patch\n    doc.patch_inplace(patch);\n\n    // output patched document\n    std::cout &lt;&lt; \"\\nAfter\\n\" &lt;&lt; std::setw(4) &lt;&lt; doc &lt;&lt; std::endl;\n}\n</code></pre> <p>Output:</p> <pre><code>Before\n{\n    \"baz\": \"qux\",\n    \"foo\": \"bar\"\n}\n\nAfter\n{\n    \"baz\": \"boo\",\n    \"hello\": [\n        \"world\"\n    ]\n}\n</code></pre>"},{"location":"api/basic_json/patch_inplace/#see-also","title":"See also","text":"<ul> <li>RFC 6902 (JSON Patch)</li> <li>RFC 6901 (JSON Pointer)</li> <li>patch applies a JSON Patch</li> <li>merge_patch applies a JSON Merge Patch</li> </ul>"},{"location":"api/basic_json/patch_inplace/#version-history","title":"Version history","text":"<ul> <li>Added in version 3.11.0.</li> </ul>"},{"location":"api/basic_json/push_back/","title":"nlohmann::basic_json::push_back","text":"<pre><code>// (1)\nvoid push_back(basic_json&amp;&amp; val);\nvoid push_back(const basic_json&amp; val);\n\n// (2)\nvoid push_back(const typename object_t::value_type&amp; val);\n\n// (3)\nvoid push_back(initializer_list_t init);\n</code></pre> <ol> <li> <p>Appends the given element <code>val</code> to the end of the JSON array. If the function is called on a JSON null value, an    empty array is created before appending <code>val</code>.</p> </li> <li> <p>Inserts the given element <code>val</code> to the JSON object. If the function is called on a JSON null value, an empty object    is created before inserting <code>val</code>.</p> </li> <li> <p>This function allows using <code>push_back</code> with an initializer list. In case</p> <ol> <li>the current value is an object,</li> <li>the initializer list <code>init</code> contains only two elements, and</li> <li>the first element of <code>init</code> is a string,</li> </ol> <p><code>init</code> is converted into an object element and added using <code>push_back(const typename object_t::value_type&amp;)</code>. Otherwise, <code>init</code> is converted to a JSON value and added using <code>push_back(basic_json&amp;&amp;)</code>.</p> </li> </ol>"},{"location":"api/basic_json/push_back/#iterator-invalidation","title":"Iterator invalidation","text":"<p>For all cases where an element is added to an array, a reallocation can happen, in which case all iterators (including the <code>end()</code> iterator) and all references to the elements are invalidated. Otherwise, only the <code>end()</code> iterator is invalidated.</p> <p>For <code>ordered_json</code>, also adding an element to an object can yield a reallocation which again invalidates all iterators and all references.</p>"},{"location":"api/basic_json/push_back/#parameters","title":"Parameters","text":"<code>val</code> (in) the value to add to the JSON array/object <code>init</code> (in) an initializer list"},{"location":"api/basic_json/push_back/#exceptions","title":"Exceptions","text":"<ol> <li>Throws <code>type_error.308</code> when called on a type other than    JSON array or null; example: <code>\"cannot use push_back() with number\"</code></li> <li>Throws <code>type_error.308</code> when called on a type other than    JSON object or null; example: <code>\"cannot use push_back() with number\"</code></li> <li>Throws <code>type_error.308</code> when called on a type other than    JSON array or null; example: <code>\"cannot use push_back() with number\"</code></li> </ol>"},{"location":"api/basic_json/push_back/#complexity","title":"Complexity","text":"<ol> <li>Amortized constant.</li> <li>Logarithmic in the size of the container, O(log(<code>size()</code>)).</li> <li>Linear in the size of the initializer list <code>init</code>.</li> </ol>"},{"location":"api/basic_json/push_back/#notes","title":"Notes","text":"<p>(3) This function is required to resolve an ambiguous overload error, because pairs like <code>{\"key\", \"value\"}</code> can be both     interpreted as <code>object_t::value_type</code> or <code>std::initializer_list&lt;basic_json&gt;</code>, see     #235 for more information.</p>"},{"location":"api/basic_json/push_back/#examples","title":"Examples","text":"Example: (1) add element to array <p>The example shows how <code>push_back()</code> and <code>+=</code> can be used to add elements to a JSON array. Note how the <code>null</code> value was silently converted to a JSON array.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create JSON values\n    json array = {1, 2, 3, 4, 5};\n    json null;\n\n    // print values\n    std::cout &lt;&lt; array &lt;&lt; '\\n';\n    std::cout &lt;&lt; null &lt;&lt; '\\n';\n\n    // add values\n    array.push_back(6);\n    array += 7;\n    null += \"first\";\n    null += \"second\";\n\n    // print values\n    std::cout &lt;&lt; array &lt;&lt; '\\n';\n    std::cout &lt;&lt; null &lt;&lt; '\\n';\n}\n</code></pre> <p>Output:</p> <pre><code>[1,2,3,4,5]\nnull\n[1,2,3,4,5,6,7]\n[\"first\",\"second\"]\n</code></pre> Example: (2) add element to object <p>The example shows how <code>push_back()</code> and <code>+=</code> can be used to add elements to a JSON object. Note how the <code>null</code> value was silently converted to a JSON object.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create JSON values\n    json object = {{\"one\", 1}, {\"two\", 2}};\n    json null;\n\n    // print values\n    std::cout &lt;&lt; object &lt;&lt; '\\n';\n    std::cout &lt;&lt; null &lt;&lt; '\\n';\n\n    // add values\n    object.push_back(json::object_t::value_type(\"three\", 3));\n    object += json::object_t::value_type(\"four\", 4);\n    null += json::object_t::value_type(\"A\", \"a\");\n    null += json::object_t::value_type(\"B\", \"b\");\n\n    // print values\n    std::cout &lt;&lt; object &lt;&lt; '\\n';\n    std::cout &lt;&lt; null &lt;&lt; '\\n';\n}\n</code></pre> <p>Output:</p> <pre><code>{\"one\":1,\"two\":2}\nnull\n{\"four\":4,\"one\":1,\"three\":3,\"two\":2}\n{\"A\":\"a\",\"B\":\"b\"}\n</code></pre> Example: (3) add to object from initializer list <p>The example shows how initializer lists are treated as objects when possible.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create JSON values\n    json object = {{\"one\", 1}, {\"two\", 2}};\n    json null;\n\n    // print values\n    std::cout &lt;&lt; object &lt;&lt; '\\n';\n    std::cout &lt;&lt; null &lt;&lt; '\\n';\n\n    // add values:\n    object.push_back({\"three\", 3});  // object is extended\n    object += {\"four\", 4};           // object is extended\n    null.push_back({\"five\", 5});     // null is converted to array\n\n    // print values\n    std::cout &lt;&lt; object &lt;&lt; '\\n';\n    std::cout &lt;&lt; null &lt;&lt; '\\n';\n\n    // would throw:\n    //object.push_back({1, 2, 3});\n}\n</code></pre> <p>Output:</p> <pre><code>{\"one\":1,\"two\":2}\nnull\n{\"four\":4,\"one\":1,\"three\":3,\"two\":2}\n[[\"five\",5]]\n</code></pre>"},{"location":"api/basic_json/push_back/#see-also","title":"See also","text":"<ul> <li>emplace_back add a value to an array</li> <li>operator+= add a value to an array/object</li> </ul>"},{"location":"api/basic_json/push_back/#version-history","title":"Version history","text":"<ol> <li>Since version 1.0.0.</li> <li>Since version 1.0.0.</li> <li>Since version 2.0.0.</li> </ol>"},{"location":"api/basic_json/rbegin/","title":"nlohmann::basic_json::rbegin","text":"<pre><code>reverse_iterator rbegin() noexcept;\nconst_reverse_iterator rbegin() const noexcept;\n</code></pre> <p>Returns an iterator to the reverse-beginning; that is, the last element.</p> <p></p>"},{"location":"api/basic_json/rbegin/#return-value","title":"Return value","text":"<p>reverse iterator to the last element</p>"},{"location":"api/basic_json/rbegin/#exception-safety","title":"Exception safety","text":"<p>No-throw guarantee: this member function never throws exceptions.</p>"},{"location":"api/basic_json/rbegin/#complexity","title":"Complexity","text":"<p>Constant.</p>"},{"location":"api/basic_json/rbegin/#examples","title":"Examples","text":"Example <p>The following code shows an example for <code>rbegin()</code>.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create an array value\n    json array = {1, 2, 3, 4, 5};\n\n    // get an iterator to the reverse-beginning\n    json::reverse_iterator it = array.rbegin();\n\n    // serialize the element that the iterator points to\n    std::cout &lt;&lt; *it &lt;&lt; '\\n';\n}\n</code></pre> <p>Output:</p> <pre><code>5\n</code></pre>"},{"location":"api/basic_json/rbegin/#version-history","title":"Version history","text":"<ul> <li>Added in version 1.0.0.</li> </ul>"},{"location":"api/basic_json/rend/","title":"nlohmann::basic_json::rend","text":"<pre><code>reverse_iterator rend() noexcept;\nconst_reverse_iterator rend() const noexcept;\n</code></pre> <p>Returns an iterator to the reverse-end; that is, one before the first element. This element acts as a placeholder, attempting to access it results in undefined behavior.</p> <p></p>"},{"location":"api/basic_json/rend/#return-value","title":"Return value","text":"<p>reverse iterator to the element following the last element</p>"},{"location":"api/basic_json/rend/#exception-safety","title":"Exception safety","text":"<p>No-throw guarantee: this member function never throws exceptions.</p>"},{"location":"api/basic_json/rend/#complexity","title":"Complexity","text":"<p>Constant.</p>"},{"location":"api/basic_json/rend/#examples","title":"Examples","text":"Example <p>The following code shows an example for <code>rend()</code>.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create an array value\n    json array = {1, 2, 3, 4, 5};\n\n    // get an iterator to the reverse-end\n    json::reverse_iterator it = array.rend();\n\n    // increment the iterator to point to the first element\n    --it;\n\n    // serialize the element that the iterator points to\n    std::cout &lt;&lt; *it &lt;&lt; '\\n';\n}\n</code></pre> <p>Output:</p> <pre><code>1\n</code></pre>"},{"location":"api/basic_json/rend/#version-history","title":"Version history","text":"<ul> <li>Added in version 1.0.0.</li> </ul>"},{"location":"api/basic_json/sax_parse/","title":"nlohmann::basic_json::sax_parse","text":"<pre><code>// (1)\ntemplate &lt;typename InputType, typename SAX&gt;\nstatic bool sax_parse(InputType&amp;&amp; i,\n                      SAX* sax,\n                      input_format_t format = input_format_t::json,\n                      const bool strict = true,\n                      const bool ignore_comments = false,\n                      const bool ignore_trailing_commas = false);\n\n// (2)\ntemplate&lt;class IteratorType, class SAX&gt;\nstatic bool sax_parse(IteratorType first, IteratorType last,\n                      SAX* sax,\n                      input_format_t format = input_format_t::json,\n                      const bool strict = true,\n                      const bool ignore_comments = false,\n                      const bool ignore_trailing_commas = false);\n</code></pre> <p>Read from input and generate SAX events</p> <ol> <li>Read from a compatible input.</li> <li> <p>Read from a pair of character iterators</p> <p>The value_type of the iterator must be an integral type with a size of 1, 2, or 4 bytes, which will be interpreted respectively as UTF-8, UTF-16, and UTF-32.</p> </li> </ol> <p>The SAX event lister must follow the interface of <code>json_sax</code>.</p>"},{"location":"api/basic_json/sax_parse/#template-parameters","title":"Template parameters","text":"<code>InputType</code> <p>A compatible input, for instance:</p> <ul> <li>an <code>std::istream</code> object</li> <li>a <code>FILE</code> pointer</li> <li>a C-style array of characters</li> <li>a pointer to a null-terminated string of single byte characters</li> <li>an object <code>obj</code> for which <code>begin(obj)</code> and <code>end(obj)</code> produces a valid pair of   iterators.</li> </ul> <code>IteratorType</code> a compatible iterator type for overload (2); a pair of character iterators whose <code>value_type</code> is an integral type with a size of 1, 2, or 4 bytes (interpreted respectively as UTF-8, UTF-16, and UTF-32) <code>SAX</code> a class fulfilling the SAX event listener interface; see <code>json_sax</code>"},{"location":"api/basic_json/sax_parse/#parameters","title":"Parameters","text":"<code>i</code> (in) Input to parse from <code>sax</code> (in) SAX event listener (must not be null) <code>format</code> (in) the format to parse (JSON, CBOR, MessagePack, or UBJSON) (optional, <code>input_format_t::json</code> by default), see  <code>input_format_t</code> for more information <code>strict</code> (in) whether the input has to be consumed completely (optional, <code>true</code> by default) <code>ignore_comments</code> (in) whether comments should be ignored and treated like whitespace (<code>true</code>) or yield a parse error (<code>false</code>); (optional, <code>false</code> by default) <code>ignore_trailing_commas</code> (in) whether trailing commas in arrays or objects should be ignored and treated like whitespace (<code>true</code>) or yield a parse error (<code>false</code>); (optional, <code>false</code> by default) <code>first</code> (in) iterator to the start of a character range <code>last</code> (in) iterator to the end of a character range"},{"location":"api/basic_json/sax_parse/#return-value","title":"Return value","text":"<p>return value of the last processed SAX event</p>"},{"location":"api/basic_json/sax_parse/#exception-safety","title":"Exception safety","text":"<p>Strong guarantee: if an exception is thrown, there are no changes in the JSON value.</p>"},{"location":"api/basic_json/sax_parse/#exceptions","title":"Exceptions","text":"<ul> <li>Throws <code>parse_error.101</code> in case of an unexpected token, or   empty input like a null <code>FILE*</code> or <code>char*</code> pointer.</li> </ul>"},{"location":"api/basic_json/sax_parse/#complexity","title":"Complexity","text":"<p>Linear in the length of the input. The parser is a predictive LL(1) parser. The complexity can be higher if the SAX consumer <code>sax</code> has a super-linear complexity.</p>"},{"location":"api/basic_json/sax_parse/#notes","title":"Notes","text":"<p>A UTF-8 byte order mark is silently ignored.</p>"},{"location":"api/basic_json/sax_parse/#examples","title":"Examples","text":"Example <p>The example below demonstrates the <code>sax_parse()</code> function reading from string and processing the events with a user-defined SAX event consumer.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;iomanip&gt;\n#include &lt;sstream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\n// a simple event consumer that collects string representations of the passed\n// values; note inheriting from json::json_sax_t is not required, but can\n// help not to forget a required function\nclass sax_event_consumer : public json::json_sax_t\n{\n  public:\n    std::vector&lt;std::string&gt; events;\n\n    bool null() override\n    {\n        events.push_back(\"null()\");\n        return true;\n    }\n\n    bool boolean(bool val) override\n    {\n        events.push_back(\"boolean(val=\" + std::string(val ? \"true\" : \"false\") + \")\");\n        return true;\n    }\n\n    bool number_integer(number_integer_t val) override\n    {\n        events.push_back(\"number_integer(val=\" + std::to_string(val) + \")\");\n        return true;\n    }\n\n    bool number_unsigned(number_unsigned_t val) override\n    {\n        events.push_back(\"number_unsigned(val=\" + std::to_string(val) + \")\");\n        return true;\n    }\n\n    bool number_float(number_float_t val, const string_t&amp; s) override\n    {\n        events.push_back(\"number_float(val=\" + std::to_string(val) + \", s=\" + s + \")\");\n        return true;\n    }\n\n    bool string(string_t&amp; val) override\n    {\n        events.push_back(\"string(val=\" + val + \")\");\n        return true;\n    }\n\n    bool start_object(std::size_t elements) override\n    {\n        events.push_back(\"start_object(elements=\" + std::to_string(elements) + \")\");\n        return true;\n    }\n\n    bool end_object() override\n    {\n        events.push_back(\"end_object()\");\n        return true;\n    }\n\n    bool start_array(std::size_t elements) override\n    {\n        events.push_back(\"start_array(elements=\" + std::to_string(elements) + \")\");\n        return true;\n    }\n\n    bool end_array() override\n    {\n        events.push_back(\"end_array()\");\n        return true;\n    }\n\n    bool key(string_t&amp; val) override\n    {\n        events.push_back(\"key(val=\" + val + \")\");\n        return true;\n    }\n\n    bool binary(json::binary_t&amp; val) override\n    {\n        events.push_back(\"binary(val=[...])\");\n        return true;\n    }\n\n    bool parse_error(std::size_t position, const std::string&amp; last_token, const json::exception&amp; ex) override\n    {\n        events.push_back(\"parse_error(position=\" + std::to_string(position) + \", last_token=\" + last_token + \",\\n            ex=\" + std::string(ex.what()) + \")\");\n        return false;\n    }\n};\n\nint main()\n{\n    // a JSON text\n    auto text = R\"(\n    {\n        \"Image\": {\n            \"Width\":  800,\n            \"Height\": 600,\n            \"Title\":  \"View from 15th Floor\",\n            \"Thumbnail\": {\n                \"Url\":    \"http://www.example.com/image/481989943\",\n                \"Height\": 125,\n                \"Width\":  100\n            },\n            \"Animated\" : false,\n            \"IDs\": [116, 943, 234, -38793],\n            \"DeletionDate\": null,\n            \"Distance\": 12.723374634\n        }\n    }]\n    )\";\n\n    // create a SAX event consumer object\n    sax_event_consumer sec;\n\n    // parse JSON\n    bool result = json::sax_parse(text, &amp;sec);\n\n    // output the recorded events\n    for (auto&amp; event : sec.events)\n    {\n        std::cout &lt;&lt; event &lt;&lt; \"\\n\";\n    }\n\n    // output the result of sax_parse\n    std::cout &lt;&lt; \"\\nresult: \" &lt;&lt; std::boolalpha &lt;&lt; result &lt;&lt; std::endl;\n}\n</code></pre> <p>Output:</p> <pre><code>start_object(elements=18446744073709551615)\nkey(val=Image)\nstart_object(elements=18446744073709551615)\nkey(val=Width)\nnumber_unsigned(val=800)\nkey(val=Height)\nnumber_unsigned(val=600)\nkey(val=Title)\nstring(val=View from 15th Floor)\nkey(val=Thumbnail)\nstart_object(elements=18446744073709551615)\nkey(val=Url)\nstring(val=http://www.example.com/image/481989943)\nkey(val=Height)\nnumber_unsigned(val=125)\nkey(val=Width)\nnumber_unsigned(val=100)\nend_object()\nkey(val=Animated)\nboolean(val=false)\nkey(val=IDs)\nstart_array(elements=18446744073709551615)\nnumber_unsigned(val=116)\nnumber_unsigned(val=943)\nnumber_unsigned(val=234)\nnumber_integer(val=-38793)\nend_array()\nkey(val=DeletionDate)\nnull()\nkey(val=Distance)\nnumber_float(val=12.723375, s=12.723374634)\nend_object()\nend_object()\nparse_error(position=460, last_token=12.723374634&lt;U+000A&gt;        }&lt;U+000A&gt;    }],\n            ex=[json.exception.parse_error.101] parse error at line 17, column 6: syntax error while parsing value - unexpected ']'; expected end of input)\n\nresult: false\n</code></pre>"},{"location":"api/basic_json/sax_parse/#see-also","title":"See also","text":"<ul> <li>parse - deserialize from a compatible input</li> <li>accept - check if the input is valid JSON</li> </ul>"},{"location":"api/basic_json/sax_parse/#version-history","title":"Version history","text":"<ul> <li>Added in version 3.2.0.</li> <li>Ignoring comments via <code>ignore_comments</code> added in version 3.9.0.</li> <li>Added <code>ignore_trailing_commas</code> in version 3.12.x.</li> </ul> <p>Deprecation</p> <p>Overload (2) replaces calls to <code>sax_parse</code> with a pair of iterators as their first parameter which has been deprecated in version 3.8.0. This overload will be removed in version 4.0.0. Please replace all calls like <code>sax_parse({ptr, ptr+len});</code> with <code>sax_parse(ptr, ptr+len);</code>.</p>"},{"location":"api/basic_json/size/","title":"nlohmann::basic_json::size","text":"<pre><code>size_type size() const noexcept;\n</code></pre> <p>Returns the number of elements in a JSON value.</p>"},{"location":"api/basic_json/size/#return-value","title":"Return value","text":"<p>The return value depends on the different types and is defined as follows:</p> Value type return value null <code>0</code> boolean <code>1</code> string <code>1</code> number <code>1</code> binary <code>1</code> object result of function object_t::size() array result of function array_t::size()"},{"location":"api/basic_json/size/#exception-safety","title":"Exception safety","text":"<p>No-throw guarantee: this function never throws exceptions.</p>"},{"location":"api/basic_json/size/#complexity","title":"Complexity","text":"<p>Constant, as long as <code>array_t</code> and <code>object_t</code> satisfy the Container concept; that is, their <code>size()</code> functions have constant complexity.</p>"},{"location":"api/basic_json/size/#notes","title":"Notes","text":"<p>This function does not return the length of a string stored as JSON value -- it returns the number of elements in the JSON value which is <code>1</code> in the case of a string.</p>"},{"location":"api/basic_json/size/#examples","title":"Examples","text":"Example <p>The following code calls <code>size()</code> on the different value types.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create JSON values\n    json j_null;\n    json j_boolean = true;\n    json j_number_integer = 17;\n    json j_number_float = 23.42;\n    json j_object = {{\"one\", 1}, {\"two\", 2}};\n    json j_object_empty(json::value_t::object);\n    json j_array = {1, 2, 4, 8, 16};\n    json j_array_empty(json::value_t::array);\n    json j_string = \"Hello, world\";\n\n    // call size()\n    std::cout &lt;&lt; j_null.size() &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_boolean.size() &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_number_integer.size() &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_number_float.size() &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_object.size() &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_object_empty.size() &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_array.size() &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_array_empty.size() &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_string.size() &lt;&lt; '\\n';\n}\n</code></pre> <p>Output:</p> <pre><code>0\n1\n1\n1\n2\n0\n5\n0\n1\n</code></pre>"},{"location":"api/basic_json/size/#version-history","title":"Version history","text":"<ul> <li>Added in version 1.0.0.</li> <li>Extended to return <code>1</code> for binary types in version 3.8.0.</li> </ul>"},{"location":"api/basic_json/start_pos/","title":"nlohmann::basic_json::start_pos","text":"<pre><code>#if JSON_DIAGNOSTIC_POSITIONS\nconstexpr std::size_t start_pos() const noexcept;\n#endif\n</code></pre> <p>Returns the position of the first character in the JSON string from which the value was parsed from.</p> JSON type return value object position of the opening <code>{</code> array position of the opening <code>[</code> string position of the opening <code>\"</code> number position of the first character boolean position of <code>t</code> for <code>true</code> and <code>f</code> for <code>false</code> null position of <code>n</code>"},{"location":"api/basic_json/start_pos/#return-value","title":"Return value","text":"<p>the position of the first character of the value in the parsed JSON string, if the value was created by the <code>parse</code> function, or <code>std::string::npos</code> if the value was constructed otherwise</p>"},{"location":"api/basic_json/start_pos/#exception-safety","title":"Exception safety","text":"<p>No-throw guarantee: this member function never throws exceptions.</p>"},{"location":"api/basic_json/start_pos/#complexity","title":"Complexity","text":"<p>Constant.</p>"},{"location":"api/basic_json/start_pos/#notes","title":"Notes","text":"<p>Note</p> <p>The function is only available if macro <code>JSON_DIAGNOSTIC_POSITIONS</code> has been defined to <code>1</code> before including the library header.</p> <p>Invalidation</p> <p>The returned positions are only valid as long as the JSON value is not changed. The positions are not updated when the JSON value is changed.</p>"},{"location":"api/basic_json/start_pos/#examples","title":"Examples","text":"Example <pre><code>#include &lt;iostream&gt;\n\n#define JSON_DIAGNOSTIC_POSITIONS 1\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    std::string json_string = R\"(\n    {\n        \"address\": {\n            \"street\": \"Fake Street\",\n            \"housenumber\": 1\n        }\n    }\n    )\";\n    json j = json::parse(json_string);\n\n    std::cout &lt;&lt; \"Root diagnostic positions: \\n\";\n    std::cout &lt;&lt; \"\\tstart_pos: \" &lt;&lt; j.start_pos() &lt;&lt; '\\n';\n    std::cout &lt;&lt; \"\\tend_pos:\" &lt;&lt; j.end_pos() &lt;&lt; \"\\n\";\n    std::cout &lt;&lt; \"Original string: \\n\";\n    std::cout &lt;&lt; \"{\\n        \\\"address\\\": {\\n            \\\"street\\\": \\\"Fake Street\\\",\\n            \\\"housenumber\\\": 1\\n        }\\n    }\" &lt;&lt; \"\\n\";\n    std::cout &lt;&lt; \"Parsed string: \\n\";\n    std::cout &lt;&lt; json_string.substr(j.start_pos(), j.end_pos() - j.start_pos()) &lt;&lt; \"\\n\\n\";\n\n    std::cout &lt;&lt; \"address diagnostic positions: \\n\";\n    std::cout &lt;&lt; \"\\tstart_pos:\" &lt;&lt; j[\"address\"].start_pos() &lt;&lt; '\\n';\n    std::cout &lt;&lt; \"\\tend_pos:\" &lt;&lt; j[\"address\"].end_pos() &lt;&lt; \"\\n\\n\";\n    std::cout &lt;&lt; \"Original string: \\n\";\n    std::cout &lt;&lt; \"{            \\\"street\\\": \\\"Fake Street\\\",\\n            \\\"housenumber\\\": 1\\n        }\" &lt;&lt; \"\\n\";\n    std::cout &lt;&lt; \"Parsed string: \\n\";\n    std::cout &lt;&lt; json_string.substr(j[\"address\"].start_pos(), j[\"address\"].end_pos() - j[\"address\"].start_pos()) &lt;&lt; \"\\n\\n\";\n\n    std::cout &lt;&lt; \"street diagnostic positions: \\n\";\n    std::cout &lt;&lt; \"\\tstart_pos:\" &lt;&lt; j[\"address\"][\"street\"].start_pos() &lt;&lt; '\\n';\n    std::cout &lt;&lt; \"\\tend_pos:\" &lt;&lt; j[\"address\"][\"street\"].end_pos() &lt;&lt; \"\\n\\n\";\n    std::cout &lt;&lt; \"Original string: \\n\";\n    std::cout &lt;&lt; \"\\\"Fake Street\\\"\" &lt;&lt; \"\\n\";\n    std::cout &lt;&lt; \"Parsed string: \\n\";\n    std::cout &lt;&lt; json_string.substr(j[\"address\"][\"street\"].start_pos(), j[\"address\"][\"street\"].end_pos() - j[\"address\"][\"street\"].start_pos()) &lt;&lt; \"\\n\\n\";\n\n    std::cout &lt;&lt; \"housenumber diagnostic positions: \\n\";\n    std::cout &lt;&lt; \"\\tstart_pos:\" &lt;&lt; j[\"address\"][\"housenumber\"].start_pos() &lt;&lt; '\\n';\n    std::cout &lt;&lt; \"\\tend_pos:\" &lt;&lt; j[\"address\"][\"housenumber\"].end_pos() &lt;&lt; \"\\n\\n\";\n    std::cout &lt;&lt; \"Original string: \\n\";\n    std::cout &lt;&lt; \"1\" &lt;&lt; \"\\n\";\n    std::cout &lt;&lt; \"Parsed string: \\n\";\n    std::cout &lt;&lt; json_string.substr(j[\"address\"][\"housenumber\"].start_pos(), j[\"address\"][\"housenumber\"].end_pos() - j[\"address\"][\"housenumber\"].start_pos()) &lt;&lt; \"\\n\\n\";\n}\n</code></pre> <p>Output:</p> <pre><code>Root diagnostic positions: \n    start_pos: 5\n    end_pos:109\nOriginal string: \n{\n        \"address\": {\n            \"street\": \"Fake Street\",\n            \"housenumber\": 1\n        }\n    }\nParsed string: \n{\n        \"address\": {\n            \"street\": \"Fake Street\",\n            \"housenumber\": 1\n        }\n    }\n\naddress diagnostic positions: \n    start_pos:26\n    end_pos:103\n\nOriginal string: \n{            \"street\": \"Fake Street\",\n            \"housenumber\": 1\n        }\nParsed string: \n{\n            \"street\": \"Fake Street\",\n            \"housenumber\": 1\n        }\n\nstreet diagnostic positions: \n    start_pos:50\n    end_pos:63\n\nOriginal string: \n\"Fake Street\"\nParsed string: \n\"Fake Street\"\n\nhousenumber diagnostic positions: \n    start_pos:92\n    end_pos:93\n\nOriginal string: \n1\nParsed string: \n1\n</code></pre> <p>The output shows the start/end positions of all the objects and fields in the JSON string.</p>"},{"location":"api/basic_json/start_pos/#see-also","title":"See also","text":"<ul> <li>end_pos to access the end position</li> <li>JSON_DIAGNOSTIC_POSITIONS for an overview of the diagnostic positions</li> </ul>"},{"location":"api/basic_json/start_pos/#version-history","title":"Version history","text":"<ul> <li>Added in version 3.12.0.</li> </ul>"},{"location":"api/basic_json/std_hash/","title":"std::hash&lt;nlohmann::basic_json&gt;","text":"<pre><code>namespace std {\n    struct hash&lt;nlohmann::basic_json&gt;;\n}\n</code></pre> <p>Return a hash value for a JSON object. The hash function tries to rely on <code>std::hash</code> where possible. Furthermore, the type of the JSON value is taken into account to have different hash values for <code>null</code>, <code>0</code>, <code>0U</code>, and <code>false</code>, etc.</p>"},{"location":"api/basic_json/std_hash/#examples","title":"Examples","text":"Example <p>The example shows how to calculate hash values for different JSON values.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;iomanip&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\nusing namespace nlohmann::literals;\n\nint main()\n{\n    std::cout &lt;&lt; \"hash(null) = \" &lt;&lt; std::hash&lt;json&gt; {}(json(nullptr)) &lt;&lt; '\\n'\n              &lt;&lt; \"hash(false) = \" &lt;&lt; std::hash&lt;json&gt; {}(json(false)) &lt;&lt; '\\n'\n              &lt;&lt; \"hash(0) = \" &lt;&lt; std::hash&lt;json&gt; {}(json(0)) &lt;&lt; '\\n'\n              &lt;&lt; \"hash(0U) = \" &lt;&lt; std::hash&lt;json&gt; {}(json(0U)) &lt;&lt; '\\n'\n              &lt;&lt; \"hash(\\\"\\\") = \" &lt;&lt; std::hash&lt;json&gt; {}(json(\"\")) &lt;&lt; '\\n'\n              &lt;&lt; \"hash({}) = \" &lt;&lt; std::hash&lt;json&gt; {}(json::object()) &lt;&lt; '\\n'\n              &lt;&lt; \"hash([]) = \" &lt;&lt; std::hash&lt;json&gt; {}(json::array()) &lt;&lt; '\\n'\n              &lt;&lt; \"hash({\\\"hello\\\": \\\"world\\\"}) = \" &lt;&lt; std::hash&lt;json&gt; {}(\"{\\\"hello\\\": \\\"world\\\"}\"_json)\n              &lt;&lt; std::endl;\n}\n</code></pre> <p>Output:</p> <pre><code>hash(null) = 2654435769\nhash(false) = 2654436030\nhash(0) = 2654436095\nhash(0U) = 2654436156\nhash(\"\") = 6142509191626859748\nhash({}) = 2654435832\nhash([]) = 2654435899\nhash({\"hello\": \"world\"}) = 4469488738203676328\n</code></pre> <p>Note the output is platform-dependent.</p>"},{"location":"api/basic_json/std_hash/#version-history","title":"Version history","text":"<ul> <li>Added in version 1.0.0.</li> <li>Extended for arbitrary basic_json types in version 3.10.5.</li> </ul>"},{"location":"api/basic_json/std_swap/","title":"std::swap&lt;basic_json&gt;","text":"<pre><code>namespace std {\n    void swap(nlohmann::basic_json&amp; j1, nlohmann::basic_json&amp; j2);\n}\n</code></pre> <p>Exchanges the values of two JSON objects.</p>"},{"location":"api/basic_json/std_swap/#parameters","title":"Parameters","text":"<code>j1</code> (in, out) value to be replaced by <code>j2</code> <code>j2</code> (in, out) value to be replaced by <code>j1</code>"},{"location":"api/basic_json/std_swap/#exception-safety","title":"Exception safety","text":"<p>No-throw guarantee: this function never throws exceptions.</p>"},{"location":"api/basic_json/std_swap/#complexity","title":"Complexity","text":"<p>Constant.</p>"},{"location":"api/basic_json/std_swap/#possible-implementation","title":"Possible implementation","text":"<pre><code>void swap(nlohmann::basic_json&amp; j1, nlohmann::basic_json&amp; j2)\n{\n    j1.swap(j2);\n}\n</code></pre>"},{"location":"api/basic_json/std_swap/#examples","title":"Examples","text":"Example <p>The following code shows how two values are swapped with <code>std::swap</code>.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;iomanip&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create JSON values\n    json j1 = {{\"one\", 1}, {\"two\", 2}};\n    json j2 = {1, 2, 4, 8, 16};\n\n    std::cout &lt;&lt; \"j1 = \" &lt;&lt; j1 &lt;&lt; \" | j2 = \" &lt;&lt; j2 &lt;&lt; '\\n';\n\n    // swap values\n    std::swap(j1, j2);\n\n    std::cout &lt;&lt; \"j1 = \" &lt;&lt; j1 &lt;&lt; \" | j2 = \" &lt;&lt; j2 &lt;&lt; std::endl;\n}\n</code></pre> <p>Output:</p> <pre><code>j1 = {\"one\":1,\"two\":2} | j2 = [1,2,4,8,16]\nj1 = [1,2,4,8,16] | j2 = {\"one\":1,\"two\":2}\n</code></pre>"},{"location":"api/basic_json/std_swap/#see-also","title":"See also","text":"<ul> <li>swap</li> </ul>"},{"location":"api/basic_json/std_swap/#version-history","title":"Version history","text":"<ul> <li>Added in version 1.0.0.</li> <li>Extended for arbitrary basic_json types in version 3.10.5.</li> </ul>"},{"location":"api/basic_json/string_t/","title":"nlohmann::basic_json::string_t","text":"<pre><code>using string_t = StringType;\n</code></pre> <p>The type used to store JSON strings.</p> <p>RFC 8259 describes JSON strings as follows:</p> <p>A string is a sequence of zero or more Unicode characters.</p> <p>To store strings in C++, a type is defined by the template parameter described below. Unicode values are split by the JSON class into byte-sized characters during deserialization.</p>"},{"location":"api/basic_json/string_t/#template-parameters","title":"Template parameters","text":"<code>StringType</code> the container to store strings (e.g., <code>std::string</code>). Note this container is used for keys/names in objects, see object_t."},{"location":"api/basic_json/string_t/#notes","title":"Notes","text":""},{"location":"api/basic_json/string_t/#default-type","title":"Default type","text":"<p>With the default values for <code>StringType</code> (<code>std::string</code>), the default value for <code>string_t</code> is <code>std::string</code>.</p>"},{"location":"api/basic_json/string_t/#encoding","title":"Encoding","text":"<p>Strings are stored in UTF-8 encoding. Therefore, functions like <code>std::string::size()</code> or <code>std::string::length()</code> return the number of bytes in the string rather than the number of characters or glyphs.</p>"},{"location":"api/basic_json/string_t/#string-comparison","title":"String comparison","text":"<p>RFC 8259 states:</p> <p>Software implementations are typically required to test names of object members for equality. Implementations that transform the textual representation into sequences of Unicode code units and then perform the comparison numerically, code unit by code unit, are interoperable in the sense that implementations will agree in all cases on equality or inequality of two strings. For example, implementations that compare strings with escaped characters unconverted may incorrectly find that <code>\"a\\\\b\"</code> and <code>\"a\\u005Cb\"</code> are not equal.</p> <p>This implementation is interoperable as it does compare strings code unit by code unit.</p>"},{"location":"api/basic_json/string_t/#storage","title":"Storage","text":"<p>String values are stored as pointers in a <code>basic_json</code> type. That is, for any access to string values, a pointer of type <code>string_t*</code> must be dereferenced.</p>"},{"location":"api/basic_json/string_t/#examples","title":"Examples","text":"Example <p>The following code shows that <code>string_t</code> is by default, a typedef to <code>std::string</code>.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;iomanip&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    std::cout &lt;&lt; std::boolalpha &lt;&lt; std::is_same&lt;std::string, json::string_t&gt;::value &lt;&lt; std::endl;\n}\n</code></pre> <p>Output:</p> <pre><code>true\n</code></pre>"},{"location":"api/basic_json/string_t/#version-history","title":"Version history","text":"<ul> <li>Added in version 1.0.0.</li> </ul>"},{"location":"api/basic_json/swap/","title":"nlohmann::basic_json::swap","text":"<pre><code>// (1)\nvoid swap(reference other) noexcept (\n    std::is_nothrow_move_constructible&lt;value_t&gt;::value &amp;&amp;\n    std::is_nothrow_move_assignable&lt;value_t&gt;::value &amp;&amp;\n    std::is_nothrow_move_constructible&lt;json_value&gt;::value &amp;&amp;\n    std::is_nothrow_move_assignable&lt;json_value&gt;::value\n);\n\n// (2)\nfriend void swap(reference left, reference right) noexcept (\n    std::is_nothrow_move_constructible&lt;value_t&gt;::value &amp;&amp;\n    std::is_nothrow_move_assignable&lt;value_t&gt;::value &amp;&amp;\n    std::is_nothrow_move_constructible&lt;json_value&gt;::value &amp;&amp;\n    std::is_nothrow_move_assignable&lt;json_value&gt;::value\n);\n\n// (3)\nvoid swap(array_t&amp; other);\n\n// (4)\nvoid swap(object_t&amp; other);\n\n// (5)\nvoid swap(string_t&amp; other);\n\n// (6)\nvoid swap(binary_t&amp; other);\n\n// (7)\nvoid swap(typename binary_t::container_type&amp; other);\n</code></pre> <ol> <li>Exchanges the contents of the JSON value with those of <code>other</code>. Does not invoke any move, copy, or swap operations on    individual elements. All iterators and references remain valid. The past-the-end iterator is invalidated. </li> <li>Exchanges the contents of the JSON value from <code>left</code> with those of <code>right</code>. Does not invoke any move, copy, or swap    operations on individual elements. All iterators and references remain valid. The past-the-end iterator is    invalidated. Implemented as a friend function callable via ADL.</li> <li>Exchanges the contents of a JSON array with those of <code>other</code>. Does not invoke any move, copy, or swap operations on    individual elements. All iterators and references remain valid. The past-the-end iterator is invalidated. </li> <li>Exchanges the contents of a JSON object with those of <code>other</code>. Does not invoke any move, copy, or swap operations on    individual elements. All iterators and references remain valid. The past-the-end iterator is invalidated.</li> <li>Exchanges the contents of a JSON string with those of <code>other</code>. Does not invoke any move, copy, or swap operations on    individual elements. All iterators and references remain valid. The past-the-end iterator is invalidated.</li> <li>Exchanges the contents of a binary value with those of <code>other</code>. Does not invoke any move, copy, or swap operations on    individual elements. All iterators and references remain valid. The past-the-end iterator is invalidated.</li> <li>Exchanges the contents of a binary value with those of <code>other</code>. Does not invoke any move, copy, or swap operations on    individual elements. All iterators and references remain valid. The past-the-end iterator is invalidated. Unlike    version (6), no binary subtype is involved.</li> </ol>"},{"location":"api/basic_json/swap/#parameters","title":"Parameters","text":"<code>other</code> (in, out) value to exchange the contents with <code>left</code> (in, out) value to exchange the contents with <code>right</code> (in, out) value to exchange the contents with"},{"location":"api/basic_json/swap/#exceptions","title":"Exceptions","text":"<ol> <li>No-throw guarantee: this function never throws exceptions.</li> <li>No-throw guarantee: this function never throws exceptions.</li> <li>Throws <code>type_error.310</code> if called on JSON values other than    arrays; example: <code>\"cannot use swap(array_t&amp;) with boolean\"</code></li> <li>Throws <code>type_error.310</code> if called on JSON values other than    objects; example: <code>\"cannot use swap(object_t&amp;) with boolean\"</code></li> <li>Throws <code>type_error.310</code> if called on JSON values other than    strings; example: <code>\"cannot use swap(string_t&amp;) with boolean\"</code></li> <li>Throws <code>type_error.310</code> if called on JSON values other than    binaries; example: <code>\"cannot use swap(binary_t&amp;) with boolean\"</code></li> <li>Throws <code>type_error.310</code> if called on JSON values other than    binaries; example: <code>\"cannot use swap(binary_t::container_type&amp;) with boolean\"</code></li> </ol>"},{"location":"api/basic_json/swap/#complexity","title":"Complexity","text":"<p>Constant.</p>"},{"location":"api/basic_json/swap/#examples","title":"Examples","text":"Example: Swap JSON value (1, 2) <p>The example below shows how JSON values can be swapped with <code>swap()</code>.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create two JSON values\n    json j1 = {1, 2, 3, 4, 5};\n    json j2 = {{\"pi\", 3.141592653589793}, {\"e\", 2.718281828459045}};\n\n    // swap the values\n    j1.swap(j2);\n\n    // output the values\n    std::cout &lt;&lt; \"j1 = \" &lt;&lt; j1 &lt;&lt; '\\n';\n    std::cout &lt;&lt; \"j2 = \" &lt;&lt; j2 &lt;&lt; '\\n';\n}\n</code></pre> <p>Output:</p> <pre><code>j1 = {\"e\":2.718281828459045,\"pi\":3.141592653589793}\nj2 = [1,2,3,4,5]\n</code></pre> Example: Swap array (3) <p>The example below shows how arrays can be swapped with <code>swap()</code>.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create a JSON value\n    json value = {{\"array\", {1, 2, 3, 4}}};\n\n    // create an array_t\n    json::array_t array = {\"Snap\", \"Crackle\", \"Pop\"};\n\n    // swap the array stored in the JSON value\n    value[\"array\"].swap(array);\n\n    // output the values\n    std::cout &lt;&lt; \"value = \" &lt;&lt; value &lt;&lt; '\\n';\n    std::cout &lt;&lt; \"array = \" &lt;&lt; array &lt;&lt; '\\n';\n}\n</code></pre> <p>Output:</p> <pre><code>value = {\"array\":[\"Snap\",\"Crackle\",\"Pop\"]}\narray = [1,2,3,4]\n</code></pre> Example: Swap object (4) <p>The example below shows how objects can be swapped with <code>swap()</code>.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create a JSON value\n    json value = { {\"translation\", {{\"one\", \"eins\"}, {\"two\", \"zwei\"}}} };\n\n    // create an object_t\n    json::object_t object = {{\"cow\", \"Kuh\"}, {\"dog\", \"Hund\"}};\n\n    // swap the object stored in the JSON value\n    value[\"translation\"].swap(object);\n\n    // output the values\n    std::cout &lt;&lt; \"value = \" &lt;&lt; value &lt;&lt; '\\n';\n    std::cout &lt;&lt; \"object = \" &lt;&lt; object &lt;&lt; '\\n';\n}\n</code></pre> <p>Output:</p> <pre><code>value = {\"translation\":{\"cow\":\"Kuh\",\"dog\":\"Hund\"}}\nobject = {\"one\":\"eins\",\"two\":\"zwei\"}\n</code></pre> Example: Swap string (5) <p>The example below shows how strings can be swapped with <code>swap()</code>.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create a JSON value\n    json value = { \"the good\", \"the bad\", \"the ugly\" };\n\n    // create string_t\n    json::string_t string = \"the fast\";\n\n    // swap the object stored in the JSON value\n    value[1].swap(string);\n\n    // output the values\n    std::cout &lt;&lt; \"value = \" &lt;&lt; value &lt;&lt; '\\n';\n    std::cout &lt;&lt; \"string = \" &lt;&lt; string &lt;&lt; '\\n';\n}\n</code></pre> <p>Output:</p> <pre><code>value = [\"the good\",\"the fast\",\"the ugly\"]\nstring = the bad\n</code></pre> Example: Swap binary (6) <p>The example below shows how binary values can be swapped with <code>swap()</code>.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create a binary value\n    json value = json::binary({1, 2, 3});\n\n    // create a binary_t\n    json::binary_t binary = {{4, 5, 6}};\n\n    // swap the object stored in the JSON value\n    value.swap(binary);\n\n    // output the values\n    std::cout &lt;&lt; \"value = \" &lt;&lt; value &lt;&lt; '\\n';\n    std::cout &lt;&lt; \"binary = \" &lt;&lt; json(binary) &lt;&lt; '\\n';\n}\n</code></pre> <p>Output:</p> <pre><code>value = {\"bytes\":[4,5,6],\"subtype\":null}\nbinary = {\"bytes\":[1,2,3],\"subtype\":null}\n</code></pre>"},{"location":"api/basic_json/swap/#see-also","title":"See also","text":"<ul> <li>std::swap&lt;basic_json&gt;</li> <li>operator= copy assignment</li> <li>basic_json create a JSON value</li> </ul>"},{"location":"api/basic_json/swap/#version-history","title":"Version history","text":"<ol> <li>Since version 1.0.0.</li> <li>Since version 1.0.0.</li> <li>Since version 1.0.0.</li> <li>Since version 1.0.0.</li> <li>Since version 1.0.0.</li> <li>Since version 3.8.0.</li> <li>Since version 3.8.0.</li> </ol>"},{"location":"api/basic_json/to_bjdata/","title":"nlohmann::basic_json::to_bjdata","text":"<pre><code>// (1)\nstatic std::vector&lt;std::uint8_t&gt; to_bjdata(const basic_json&amp; j,\n                                           const bool use_size = false,\n                                           const bool use_type = false,\n                                           const bjdata_version_t version = bjdata_version_t::draft2);\n\n// (2)\nstatic void to_bjdata(const basic_json&amp; j, detail::output_adapter&lt;std::uint8_t&gt; o,\n                      const bool use_size = false, const bool use_type = false,\n                      const bjdata_version_t version = bjdata_version_t::draft2);\nstatic void to_bjdata(const basic_json&amp; j, detail::output_adapter&lt;char&gt; o,\n                      const bool use_size = false, const bool use_type = false,\n                      const bjdata_version_t version = bjdata_version_t::draft2);\n</code></pre> <p>Serializes a given JSON value <code>j</code> to a byte vector using the BJData (Binary JData) serialization format. BJData aims to be more compact than JSON itself, yet more efficient to parse.</p> <ol> <li>Returns a byte vector containing the BJData serialization.</li> <li>Writes the BJData serialization to an output adapter.</li> </ol> <p>The exact mapping and its limitations are described on a dedicated page.</p>"},{"location":"api/basic_json/to_bjdata/#parameters","title":"Parameters","text":"<code>j</code> (in) JSON value to serialize <code>o</code> (in) output adapter to write serialization to <code>use_size</code> (in) whether to add size annotations to container types; optional, <code>false</code> by default. <code>use_type</code> (in) whether to add type annotations to container types (must be combined with <code>use_size = true</code>); optional, <code>false</code> by default. <code>version</code> (in) which version of BJData to use (see note on \"Binary values\" on BJData); optional, <code>bjdata_version_t::draft2</code> by default."},{"location":"api/basic_json/to_bjdata/#return-value","title":"Return value","text":"<ol> <li>BJData serialization as byte vector</li> <li>(none)</li> </ol>"},{"location":"api/basic_json/to_bjdata/#exception-safety","title":"Exception safety","text":"<p>Strong guarantee: if an exception is thrown, there are no changes in the JSON value.</p>"},{"location":"api/basic_json/to_bjdata/#complexity","title":"Complexity","text":"<p>Linear in the size of the JSON value <code>j</code>.</p>"},{"location":"api/basic_json/to_bjdata/#examples","title":"Examples","text":"Example <p>The example shows the serialization of a JSON value to a byte vector in BJData format.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;iomanip&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\nusing namespace nlohmann::literals;\n\n// function to print BJData's diagnostic format\nvoid print_byte(uint8_t byte)\n{\n    if (32 &lt; byte and byte &lt; 128)\n    {\n        std::cout &lt;&lt; (char)byte;\n    }\n    else\n    {\n        std::cout &lt;&lt; (int)byte;\n    }\n}\n\nint main()\n{\n    // create a JSON value\n    json j = R\"({\"compact\": true, \"schema\": false})\"_json;\n\n    // serialize it to BJData\n    std::vector&lt;std::uint8_t&gt; v = json::to_bjdata(j);\n\n    // print the vector content\n    for (auto&amp; byte : v)\n    {\n        print_byte(byte);\n    }\n    std::cout &lt;&lt; std::endl;\n\n    // create an array of numbers\n    json array = {1, 2, 3, 4, 5, 6, 7, 8};\n\n    // serialize it to BJData using default representation\n    std::vector&lt;std::uint8_t&gt; v_array = json::to_bjdata(array);\n    // serialize it to BJData using size optimization\n    std::vector&lt;std::uint8_t&gt; v_array_size = json::to_bjdata(array, true);\n    // serialize it to BJData using type optimization\n    std::vector&lt;std::uint8_t&gt; v_array_size_and_type = json::to_bjdata(array, true, true);\n\n    // print the vector contents\n    for (auto&amp; byte : v_array)\n    {\n        print_byte(byte);\n    }\n    std::cout &lt;&lt; std::endl;\n\n    for (auto&amp; byte : v_array_size)\n    {\n        print_byte(byte);\n    }\n    std::cout &lt;&lt; std::endl;\n\n    for (auto&amp; byte : v_array_size_and_type)\n    {\n        print_byte(byte);\n    }\n    std::cout &lt;&lt; std::endl;\n}\n</code></pre> <p>Output:</p> <pre><code>{i7compactTi6schemaF}\n[i1i2i3i4i5i6i7i8]\n[#i8i1i2i3i4i5i6i7i8\n[$i#i812345678\n</code></pre>"},{"location":"api/basic_json/to_bjdata/#see-also","title":"See also","text":"<ul> <li>from_bjdata create a JSON value from an input in BJData format</li> <li>to_cbor create a CBOR serialization of a JSON value</li> <li>to_msgpack create a MessagePack serialization of a JSON value</li> <li>to_bson create a BSON serialization of a JSON value</li> <li>to_ubjson create a UBJSON serialization of a JSON value</li> </ul>"},{"location":"api/basic_json/to_bjdata/#version-history","title":"Version history","text":"<ul> <li>Added in version 3.11.0.</li> <li>BJData version parameter (for draft3 binary encoding) added in version 3.12.0.</li> </ul>"},{"location":"api/basic_json/to_bson/","title":"nlohmann::basic_json::to_bson","text":"<pre><code>// (1)\nstatic std::vector&lt;std::uint8_t&gt; to_bson(const basic_json&amp; j);\n\n// (2)\nstatic void to_bson(const basic_json&amp; j, detail::output_adapter&lt;std::uint8_t&gt; o);\nstatic void to_bson(const basic_json&amp; j, detail::output_adapter&lt;char&gt; o);\n</code></pre> <p>BSON (Binary JSON) is a binary format in which zero or more ordered key/value pairs are stored as a single entity (a so-called document).</p> <ol> <li>Returns a byte vector containing the BSON serialization.</li> <li>Writes the BSON serialization to an output adapter.</li> </ol> <p>The exact mapping and its limitations are described on a dedicated page.</p>"},{"location":"api/basic_json/to_bson/#parameters","title":"Parameters","text":"<code>j</code> (in) JSON value to serialize <code>o</code> (in) output adapter to write serialization to"},{"location":"api/basic_json/to_bson/#return-value","title":"Return value","text":"<ol> <li>BSON serialization as a byte vector</li> <li>(none)</li> </ol>"},{"location":"api/basic_json/to_bson/#exception-safety","title":"Exception safety","text":"<p>Strong guarantee: if an exception is thrown, there are no changes in the JSON value.</p>"},{"location":"api/basic_json/to_bson/#exceptions","title":"Exceptions","text":"<ul> <li>Throws <code>type_error.317</code> if the top-level type of the JSON value   is not an object; example: <code>\"to serialize to BSON, top-level type must be object, but is string\"</code></li> <li>Throws <code>out_of_range.409</code> if a key in the JSON object contains   a null byte (code point U+0000); example: <code>\"BSON key cannot contain code point U+0000 (at byte 2)\"</code></li> </ul>"},{"location":"api/basic_json/to_bson/#complexity","title":"Complexity","text":"<p>Linear in the size of the JSON value <code>j</code>.</p>"},{"location":"api/basic_json/to_bson/#examples","title":"Examples","text":"Example <p>The example shows the serialization of a JSON value to a byte vector in BSON format.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;iomanip&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\nusing namespace nlohmann::literals;\n\nint main()\n{\n    // create a JSON value\n    json j = R\"({\"compact\": true, \"schema\": 0})\"_json;\n\n    // serialize it to BSON\n    std::vector&lt;std::uint8_t&gt; v = json::to_bson(j);\n\n    // print the vector content\n    for (auto&amp; byte : v)\n    {\n        std::cout &lt;&lt; \"0x\" &lt;&lt; std::hex &lt;&lt; std::setw(2) &lt;&lt; std::setfill('0') &lt;&lt; (int)byte &lt;&lt; \" \";\n    }\n    std::cout &lt;&lt; std::endl;\n}\n</code></pre> <p>Output:</p> <pre><code>0x1b 0x00 0x00 0x00 0x08 0x63 0x6f 0x6d 0x70 0x61 0x63 0x74 0x00 0x01 0x10 0x73 0x63 0x68 0x65 0x6d 0x61 0x00 0x00 0x00 0x00 0x00 0x00 \n</code></pre>"},{"location":"api/basic_json/to_bson/#see-also","title":"See also","text":"<ul> <li>from_bson create a JSON value from an input in BSON format</li> <li>to_cbor create a CBOR serialization of a JSON value</li> <li>to_msgpack create a MessagePack serialization of a JSON value</li> <li>to_ubjson create a UBJSON serialization of a JSON value</li> <li>to_bjdata create a BJData serialization of a JSON value</li> </ul>"},{"location":"api/basic_json/to_bson/#version-history","title":"Version history","text":"<ul> <li>Added in version 3.4.0.</li> </ul>"},{"location":"api/basic_json/to_cbor/","title":"nlohmann::basic_json::to_cbor","text":"<pre><code>// (1)\nstatic std::vector&lt;std::uint8_t&gt; to_cbor(const basic_json&amp; j);\n\n// (2)\nstatic void to_cbor(const basic_json&amp; j, detail::output_adapter&lt;std::uint8_t&gt; o);\nstatic void to_cbor(const basic_json&amp; j, detail::output_adapter&lt;char&gt; o);\n</code></pre> <p>Serializes a given JSON value <code>j</code> to a byte vector using the CBOR (Concise Binary Object Representation) serialization format. CBOR is a binary serialization format that aims to be more compact than JSON itself, yet more efficient to parse.</p> <ol> <li>Returns a byte vector containing the CBOR serialization.</li> <li>Writes the CBOR serialization to an output adapter.</li> </ol> <p>The exact mapping and its limitations are described on a dedicated page.</p>"},{"location":"api/basic_json/to_cbor/#parameters","title":"Parameters","text":"<code>j</code> (in) JSON value to serialize <code>o</code> (in) output adapter to write serialization to"},{"location":"api/basic_json/to_cbor/#return-value","title":"Return value","text":"<ol> <li>CBOR serialization as a byte vector</li> <li>(none)</li> </ol>"},{"location":"api/basic_json/to_cbor/#exception-safety","title":"Exception safety","text":"<p>Strong guarantee: if an exception is thrown, there are no changes in the JSON value.</p>"},{"location":"api/basic_json/to_cbor/#complexity","title":"Complexity","text":"<p>Linear in the size of the JSON value <code>j</code>.</p>"},{"location":"api/basic_json/to_cbor/#examples","title":"Examples","text":"Example <p>The example shows the serialization of a JSON value to a byte vector in CBOR format.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;iomanip&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\nusing namespace nlohmann::literals;\n\nint main()\n{\n    // create a JSON value\n    json j = R\"({\"compact\": true, \"schema\": 0})\"_json;\n\n    // serialize it to CBOR\n    std::vector&lt;std::uint8_t&gt; v = json::to_cbor(j);\n\n    // print the vector content\n    for (auto&amp; byte : v)\n    {\n        std::cout &lt;&lt; \"0x\" &lt;&lt; std::hex &lt;&lt; std::setw(2) &lt;&lt; std::setfill('0') &lt;&lt; (int)byte &lt;&lt; \" \";\n    }\n    std::cout &lt;&lt; std::endl;\n}\n</code></pre> <p>Output:</p> <pre><code>0xa2 0x67 0x63 0x6f 0x6d 0x70 0x61 0x63 0x74 0xf5 0x66 0x73 0x63 0x68 0x65 0x6d 0x61 0x00 \n</code></pre>"},{"location":"api/basic_json/to_cbor/#see-also","title":"See also","text":"<ul> <li>from_cbor create a JSON value from an input in CBOR format</li> <li>to_msgpack create a MessagePack serialization of a JSON value</li> <li>to_bson create a BSON serialization of a JSON value</li> <li>to_ubjson create a UBJSON serialization of a JSON value</li> <li>to_bjdata create a BJData serialization of a JSON value</li> </ul>"},{"location":"api/basic_json/to_cbor/#version-history","title":"Version history","text":"<ul> <li>Added in version 2.0.9.</li> <li>Compact representation of floating-point numbers added in version 3.8.0.</li> </ul>"},{"location":"api/basic_json/to_msgpack/","title":"nlohmann::basic_json::to_msgpack","text":"<pre><code>// (1)\nstatic std::vector&lt;std::uint8_t&gt; to_msgpack(const basic_json&amp; j);\n\n// (2)\nstatic void to_msgpack(const basic_json&amp; j, detail::output_adapter&lt;std::uint8_t&gt; o);\nstatic void to_msgpack(const basic_json&amp; j, detail::output_adapter&lt;char&gt; o);\n</code></pre> <p>Serializes a given JSON value <code>j</code> to a byte vector using the MessagePack serialization format. MessagePack is a binary serialization format that aims to be more compact than JSON itself, yet more efficient to parse.</p> <ol> <li>Returns a byte vector containing the MessagePack serialization.</li> <li>Writes the MessagePack serialization to an output adapter.</li> </ol> <p>The exact mapping and its limitations are described on a dedicated page.</p>"},{"location":"api/basic_json/to_msgpack/#parameters","title":"Parameters","text":"<code>j</code> (in) JSON value to serialize <code>o</code> (in) output adapter to write serialization to"},{"location":"api/basic_json/to_msgpack/#return-value","title":"Return value","text":"<ol> <li>MessagePack serialization as a byte vector</li> <li>(none)</li> </ol>"},{"location":"api/basic_json/to_msgpack/#exception-safety","title":"Exception safety","text":"<p>Strong guarantee: if an exception is thrown, there are no changes in the JSON value.</p>"},{"location":"api/basic_json/to_msgpack/#complexity","title":"Complexity","text":"<p>Linear in the size of the JSON value <code>j</code>.</p>"},{"location":"api/basic_json/to_msgpack/#examples","title":"Examples","text":"Example <p>The example shows the serialization of a JSON value to a byte vector in MessagePack format.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;iomanip&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\nusing namespace nlohmann::literals;\n\nint main()\n{\n    // create a JSON value\n    json j = R\"({\"compact\": true, \"schema\": 0})\"_json;\n\n    // serialize it to MessagePack\n    std::vector&lt;std::uint8_t&gt; v = json::to_msgpack(j);\n\n    // print the vector content\n    for (auto&amp; byte : v)\n    {\n        std::cout &lt;&lt; \"0x\" &lt;&lt; std::hex &lt;&lt; std::setw(2) &lt;&lt; std::setfill('0') &lt;&lt; (int)byte &lt;&lt; \" \";\n    }\n    std::cout &lt;&lt; std::endl;\n}\n</code></pre> <p>Output:</p> <pre><code>0x82 0xa7 0x63 0x6f 0x6d 0x70 0x61 0x63 0x74 0xc3 0xa6 0x73 0x63 0x68 0x65 0x6d 0x61 0x00 \n</code></pre>"},{"location":"api/basic_json/to_msgpack/#see-also","title":"See also","text":"<ul> <li>from_msgpack create a JSON value from an input in MessagePack format</li> <li>to_cbor create a CBOR serialization of a JSON value</li> <li>to_bson create a BSON serialization of a JSON value</li> <li>to_ubjson create a UBJSON serialization of a JSON value</li> <li>to_bjdata create a BJData serialization of a JSON value</li> </ul>"},{"location":"api/basic_json/to_msgpack/#version-history","title":"Version history","text":"<ul> <li>Added in version 2.0.9.</li> </ul>"},{"location":"api/basic_json/to_string/","title":"to_string(basic_json)","text":"<pre><code>template &lt;typename BasicJsonType&gt;\nstd::string to_string(const BasicJsonType&amp; j);\n</code></pre> <p>This function implements a user-defined to_string for JSON objects.</p>"},{"location":"api/basic_json/to_string/#template-parameters","title":"Template parameters","text":"<code>BasicJsonType</code> a specialization of <code>basic_json</code>"},{"location":"api/basic_json/to_string/#return-value","title":"Return value","text":"<p>string containing the serialization of the JSON value</p>"},{"location":"api/basic_json/to_string/#exception-safety","title":"Exception safety","text":"<p>Strong guarantee: if an exception is thrown, there are no changes to any JSON value.</p>"},{"location":"api/basic_json/to_string/#exceptions","title":"Exceptions","text":"<p>Throws <code>type_error.316</code> if a string stored inside the JSON value is not UTF-8 encoded</p>"},{"location":"api/basic_json/to_string/#complexity","title":"Complexity","text":"<p>Linear.</p>"},{"location":"api/basic_json/to_string/#possible-implementation","title":"Possible implementation","text":"<pre><code>template &lt;typename BasicJsonType&gt;\nstd::string to_string(const BasicJsonType&amp; j)\n{\n    return j.dump();\n}\n</code></pre>"},{"location":"api/basic_json/to_string/#examples","title":"Examples","text":"Example <p>The following code shows how the library's <code>to_string()</code> function integrates with others, allowing argument-dependent lookup.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\nusing std::to_string;\n\nint main()\n{\n    // create values\n    json j = {{\"one\", 1}, {\"two\", 2}};\n    int i = 42;\n\n    // use ADL to select best to_string function\n    auto j_str = to_string(j);  // calling nlohmann::to_string\n    auto i_str = to_string(i);  // calling std::to_string\n\n    // serialize without indentation\n    std::cout &lt;&lt; j_str &lt;&lt; \"\\n\\n\"\n              &lt;&lt; i_str &lt;&lt; std::endl;\n}\n</code></pre> <p>Output:</p> <pre><code>{\"one\":1,\"two\":2}\n\n42\n</code></pre>"},{"location":"api/basic_json/to_string/#see-also","title":"See also","text":"<ul> <li>dump</li> </ul>"},{"location":"api/basic_json/to_string/#version-history","title":"Version history","text":"<p>Added in version 3.7.0.</p>"},{"location":"api/basic_json/to_ubjson/","title":"nlohmann::basic_json::to_ubjson","text":"<pre><code>// (1)\nstatic std::vector&lt;std::uint8_t&gt; to_ubjson(const basic_json&amp; j,\n                                           const bool use_size = false,\n                                           const bool use_type = false);\n\n// (2)\nstatic void to_ubjson(const basic_json&amp; j, detail::output_adapter&lt;std::uint8_t&gt; o,\n                      const bool use_size = false, const bool use_type = false);\nstatic void to_ubjson(const basic_json&amp; j, detail::output_adapter&lt;char&gt; o,\n                      const bool use_size = false, const bool use_type = false);\n</code></pre> <p>Serializes a given JSON value <code>j</code> to a byte vector using the UBJSON (Universal Binary JSON) serialization format. UBJSON aims to be more compact than JSON itself, yet more efficient to parse.</p> <ol> <li>Returns a byte vector containing the UBJSON serialization.</li> <li>Writes the UBJSON serialization to an output adapter.</li> </ol> <p>The exact mapping and its limitations are described on a dedicated page.</p>"},{"location":"api/basic_json/to_ubjson/#parameters","title":"Parameters","text":"<code>j</code> (in) JSON value to serialize <code>o</code> (in) output adapter to write serialization to <code>use_size</code> (in) whether to add size annotations to container types; optional, <code>false</code> by default. <code>use_type</code> (in) whether to add type annotations to container types (must be combined with <code>use_size = true</code>); optional, <code>false</code> by default."},{"location":"api/basic_json/to_ubjson/#return-value","title":"Return value","text":"<ol> <li>UBJSON serialization as a byte vector</li> <li>(none)</li> </ol>"},{"location":"api/basic_json/to_ubjson/#exception-safety","title":"Exception safety","text":"<p>Strong guarantee: if an exception is thrown, there are no changes in the JSON value.</p>"},{"location":"api/basic_json/to_ubjson/#complexity","title":"Complexity","text":"<p>Linear in the size of the JSON value <code>j</code>.</p>"},{"location":"api/basic_json/to_ubjson/#examples","title":"Examples","text":"Example <p>The example shows the serialization of a JSON value to a byte vector in UBJSON format.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;iomanip&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\nusing namespace nlohmann::literals;\n\n// function to print UBJSON's diagnostic format\nvoid print_byte(uint8_t byte)\n{\n    if (32 &lt; byte and byte &lt; 128)\n    {\n        std::cout &lt;&lt; (char)byte;\n    }\n    else\n    {\n        std::cout &lt;&lt; (int)byte;\n    }\n}\n\nint main()\n{\n    // create a JSON value\n    json j = R\"({\"compact\": true, \"schema\": false})\"_json;\n\n    // serialize it to UBJSON\n    std::vector&lt;std::uint8_t&gt; v = json::to_ubjson(j);\n\n    // print the vector content\n    for (auto&amp; byte : v)\n    {\n        print_byte(byte);\n    }\n    std::cout &lt;&lt; std::endl;\n\n    // create an array of numbers\n    json array = {1, 2, 3, 4, 5, 6, 7, 8};\n\n    // serialize it to UBJSON using default representation\n    std::vector&lt;std::uint8_t&gt; v_array = json::to_ubjson(array);\n    // serialize it to UBJSON using size optimization\n    std::vector&lt;std::uint8_t&gt; v_array_size = json::to_ubjson(array, true);\n    // serialize it to UBJSON using type optimization\n    std::vector&lt;std::uint8_t&gt; v_array_size_and_type = json::to_ubjson(array, true, true);\n\n    // print the vector contents\n    for (auto&amp; byte : v_array)\n    {\n        print_byte(byte);\n    }\n    std::cout &lt;&lt; std::endl;\n\n    for (auto&amp; byte : v_array_size)\n    {\n        print_byte(byte);\n    }\n    std::cout &lt;&lt; std::endl;\n\n    for (auto&amp; byte : v_array_size_and_type)\n    {\n        print_byte(byte);\n    }\n    std::cout &lt;&lt; std::endl;\n}\n</code></pre> <p>Output:</p> <pre><code>{i7compactTi6schemaF}\n[i1i2i3i4i5i6i7i8]\n[#i8i1i2i3i4i5i6i7i8\n[$i#i812345678\n</code></pre>"},{"location":"api/basic_json/to_ubjson/#see-also","title":"See also","text":"<ul> <li>from_ubjson create a JSON value from an input in UBJSON format</li> <li>to_cbor create a CBOR serialization of a JSON value</li> <li>to_msgpack create a MessagePack serialization of a JSON value</li> <li>to_bson create a BSON serialization of a JSON value</li> <li>to_bjdata create a BJData serialization of a JSON value</li> </ul>"},{"location":"api/basic_json/to_ubjson/#version-history","title":"Version history","text":"<ul> <li>Added in version 3.1.0.</li> </ul>"},{"location":"api/basic_json/type/","title":"nlohmann::basic_json::type","text":"<pre><code>constexpr value_t type() const noexcept;\n</code></pre> <p>Return the type of the JSON value as a value from the <code>value_t</code> enumeration.</p>"},{"location":"api/basic_json/type/#return-value","title":"Return value","text":"<p>the type of the JSON value</p> Value type return value <code>null</code> <code>value_t::null</code> boolean <code>value_t::boolean</code> string <code>value_t::string</code> number (integer) <code>value_t::number_integer</code> number (unsigned integer) <code>value_t::number_unsigned</code> number (floating-point) <code>value_t::number_float</code> object <code>value_t::object</code> array <code>value_t::array</code> binary <code>value_t::binary</code> discarded <code>value_t::discarded</code>"},{"location":"api/basic_json/type/#exception-safety","title":"Exception safety","text":"<p>No-throw guarantee: this member function never throws exceptions.</p>"},{"location":"api/basic_json/type/#complexity","title":"Complexity","text":"<p>Constant.</p>"},{"location":"api/basic_json/type/#examples","title":"Examples","text":"Example <p>The following code exemplifies <code>type()</code> for all JSON types.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create JSON values\n    json j_null;\n    json j_boolean = true;\n    json j_number_integer = -17;\n    json j_number_unsigned = 42u;\n    json j_number_float = 23.42;\n    json j_object = {{\"one\", 1}, {\"two\", 2}};\n    json j_array = {1, 2, 4, 8, 16};\n    json j_string = \"Hello, world\";\n\n    // call type()\n    std::cout &lt;&lt; std::boolalpha;\n    std::cout &lt;&lt; (j_null.type() == json::value_t::null) &lt;&lt; '\\n';\n    std::cout &lt;&lt; (j_boolean.type() == json::value_t::boolean) &lt;&lt; '\\n';\n    std::cout &lt;&lt; (j_number_integer.type() == json::value_t::number_integer) &lt;&lt; '\\n';\n    std::cout &lt;&lt; (j_number_unsigned.type() == json::value_t::number_unsigned) &lt;&lt; '\\n';\n    std::cout &lt;&lt; (j_number_float.type() == json::value_t::number_float) &lt;&lt; '\\n';\n    std::cout &lt;&lt; (j_object.type() == json::value_t::object) &lt;&lt; '\\n';\n    std::cout &lt;&lt; (j_array.type() == json::value_t::array) &lt;&lt; '\\n';\n    std::cout &lt;&lt; (j_string.type() == json::value_t::string) &lt;&lt; '\\n';\n}\n</code></pre> <p>Output:</p> <pre><code>true\ntrue\ntrue\ntrue\ntrue\ntrue\ntrue\ntrue\n</code></pre>"},{"location":"api/basic_json/type/#version-history","title":"Version history","text":"<ul> <li>Added in version 1.0.0.</li> <li>Added unsigned integer type in version 2.0.0.</li> <li>Added binary type in version 3.8.0.</li> </ul>"},{"location":"api/basic_json/type_error/","title":"nlohmann::basic_json::type_error","text":"<pre><code>class type_error : public exception;\n</code></pre> <p>This exception is thrown in case of a type error; that is, a library function is executed on a JSON value whose type does not match the expected semantics.</p> <p>Exceptions have ids 3xx (see list of type errors).</p> <pre><code>classDiagram\n  direction LR\n\n    class std_exception [\"std::exception\"] {\n        &lt;&lt;interface&gt;&gt;\n    }\n\n    class json_exception [\"basic_json::exception\"] {\n        +const int id\n        +const char* what() const\n    }\n\n    class json_parse_error [\"basic_json::parse_error\"] {\n        +const std::size_t byte\n    }\n\n    class json_invalid_iterator [\"basic_json::invalid_iterator\"]\n    class json_type_error [\"basic_json::type_error\"]\n    class json_out_of_range [\"basic_json::out_of_range\"]\n    class json_other_error [\"basic_json::other_error\"]\n\n    std_exception &lt;|-- json_exception\n    json_exception &lt;|-- json_parse_error\n    json_exception &lt;|-- json_invalid_iterator\n    json_exception &lt;|-- json_type_error\n    json_exception &lt;|-- json_out_of_range\n    json_exception &lt;|-- json_other_error\n\n    style json_type_error fill:#CCCCFF</code></pre>"},{"location":"api/basic_json/type_error/#member-functions","title":"Member functions","text":"<ul> <li>what - returns explanatory string</li> </ul>"},{"location":"api/basic_json/type_error/#member-variables","title":"Member variables","text":"<ul> <li>id - the id of the exception</li> </ul>"},{"location":"api/basic_json/type_error/#examples","title":"Examples","text":"Example <p>The following code shows how a <code>type_error</code> exception can be caught.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    try\n    {\n        // calling push_back() on a string value\n        json j = \"string\";\n        j.push_back(\"another string\");\n    }\n    catch (const json::type_error&amp; e)\n    {\n        // output exception information\n        std::cout &lt;&lt; \"message: \" &lt;&lt; e.what() &lt;&lt; '\\n'\n                  &lt;&lt; \"exception id: \" &lt;&lt; e.id &lt;&lt; std::endl;\n    }\n}\n</code></pre> <p>Output:</p> <pre><code>message: [json.exception.type_error.308] cannot use push_back() with string\nexception id: 308\n</code></pre>"},{"location":"api/basic_json/type_error/#see-also","title":"See also","text":"<ul> <li><code>exception</code> for the base class of all exceptions thrown by the library</li> <li>List of type errors</li> <li><code>parse_error</code> for exceptions indicating a parse error</li> <li><code>invalid_iterator</code> for exceptions indicating errors with iterators</li> <li><code>out_of_range</code> for exceptions indicating access out of the defined range</li> <li><code>other_error</code> for exceptions indicating other library errors</li> </ul>"},{"location":"api/basic_json/type_error/#version-history","title":"Version history","text":"<ul> <li>Since version 3.0.0.</li> </ul>"},{"location":"api/basic_json/type_name/","title":"nlohmann::basic_json::type_name","text":"<pre><code>const char* type_name() const noexcept;\n</code></pre> <p>Returns the type name as string to be used in error messages -- usually to indicate that a function was called on a wrong JSON type.</p>"},{"location":"api/basic_json/type_name/#return-value","title":"Return value","text":"<p>a string representation of the type (<code>value_t</code>):</p> Value type return value <code>null</code> <code>\"null\"</code> boolean <code>\"boolean\"</code> string <code>\"string\"</code> number (integer, unsigned integer, floating-point) <code>\"number\"</code> object <code>\"object\"</code> array <code>\"array\"</code> binary <code>\"binary\"</code> discarded <code>\"discarded\"</code>"},{"location":"api/basic_json/type_name/#exception-safety","title":"Exception safety","text":"<p>No-throw guarantee: this member function never throws exceptions.</p>"},{"location":"api/basic_json/type_name/#complexity","title":"Complexity","text":"<p>Constant.</p>"},{"location":"api/basic_json/type_name/#examples","title":"Examples","text":"Example <p>The following code exemplifies <code>type_name()</code> for all JSON types.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create JSON values\n    json j_null;\n    json j_boolean = true;\n    json j_number_integer = -17;\n    json j_number_unsigned = 42u;\n    json j_number_float = 23.42;\n    json j_object = {{\"one\", 1}, {\"two\", 2}};\n    json j_array = {1, 2, 4, 8, 16};\n    json j_string = \"Hello, world\";\n\n    // call type_name()\n    std::cout &lt;&lt; j_null &lt;&lt; \" is a \" &lt;&lt; j_null.type_name() &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_boolean &lt;&lt; \" is a \" &lt;&lt; j_boolean.type_name() &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_number_integer &lt;&lt; \" is a \" &lt;&lt; j_number_integer.type_name() &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_number_unsigned &lt;&lt; \" is a \" &lt;&lt; j_number_unsigned.type_name() &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_number_float &lt;&lt; \" is a \" &lt;&lt; j_number_float.type_name() &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_object &lt;&lt; \" is an \" &lt;&lt; j_object.type_name() &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_array &lt;&lt; \" is an \" &lt;&lt; j_array.type_name() &lt;&lt; '\\n';\n    std::cout &lt;&lt; j_string &lt;&lt; \" is a \" &lt;&lt; j_string.type_name() &lt;&lt; '\\n';\n}\n</code></pre> <p>Output:</p> <pre><code>null is a null\ntrue is a boolean\n-17 is a number\n42 is a number\n23.42 is a number\n{\"one\":1,\"two\":2} is an object\n[1,2,4,8,16] is an array\n\"Hello, world\" is a string\n</code></pre>"},{"location":"api/basic_json/type_name/#version-history","title":"Version history","text":"<ul> <li>Added in version 1.0.0.</li> <li>Part of the public API version since 2.1.0.</li> <li>Changed return value to <code>const char*</code> and added <code>noexcept</code> in version 3.0.0.</li> <li>Added support for binary type in version 3.8.0.</li> </ul>"},{"location":"api/basic_json/unflatten/","title":"nlohmann::basic_json::unflatten","text":"<pre><code>basic_json unflatten() const;\n</code></pre> <p>The function restores the arbitrary nesting of a JSON value that has been flattened before using the <code>flatten()</code> function. The JSON value must meet certain constraints:</p> <ol> <li>The value must be an object.</li> <li>The keys must be JSON pointers (see RFC 6901)</li> <li>The mapped values must be primitive JSON types.</li> </ol>"},{"location":"api/basic_json/unflatten/#return-value","title":"Return value","text":"<p>the original JSON from a flattened version</p>"},{"location":"api/basic_json/unflatten/#exception-safety","title":"Exception safety","text":"<p>Strong exception safety: if an exception occurs, the original value stays intact.</p>"},{"location":"api/basic_json/unflatten/#exceptions","title":"Exceptions","text":"<p>The function can throw the following exceptions:</p> <ul> <li>Throws <code>type_error.314</code> if value is not an object</li> <li>Throws <code>type_error.315</code> if object values are not primitive</li> <li>Throws <code>type_error.313</code> if a key (JSON pointer) leads to a   conflicting nesting; example: <code>\"invalid value to unflatten\"</code></li> <li>Throws <code>parse_error.109</code> if an array index in a key is not a   number; example: <code>\"array index 'one' is not a number\"</code></li> </ul>"},{"location":"api/basic_json/unflatten/#complexity","title":"Complexity","text":"<p>Linear in the size of the JSON value.</p>"},{"location":"api/basic_json/unflatten/#notes","title":"Notes","text":"<p>Empty objects and arrays are flattened by <code>flatten()</code> to <code>null</code> values and cannot unflattened to their original type. Apart from this example, for a JSON value <code>j</code>, the following is always true: <code>j == j.flatten().unflatten()</code>.</p>"},{"location":"api/basic_json/unflatten/#examples","title":"Examples","text":"Example <p>The following code shows how a flattened JSON object is unflattened into the original nested JSON object.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;iomanip&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create JSON value\n    json j_flattened =\n    {\n        {\"/answer/everything\", 42},\n        {\"/happy\", true},\n        {\"/list/0\", 1},\n        {\"/list/1\", 0},\n        {\"/list/2\", 2},\n        {\"/name\", \"Niels\"},\n        {\"/nothing\", nullptr},\n        {\"/object/currency\", \"USD\"},\n        {\"/object/value\", 42.99},\n        {\"/pi\", 3.141}\n    };\n\n    // call unflatten()\n    std::cout &lt;&lt; std::setw(4) &lt;&lt; j_flattened.unflatten() &lt;&lt; '\\n';\n}\n</code></pre> <p>Output:</p> <pre><code>{\n    \"answer\": {\n        \"everything\": 42\n    },\n    \"happy\": true,\n    \"list\": [\n        1,\n        0,\n        2\n    ],\n    \"name\": \"Niels\",\n    \"nothing\": null,\n    \"object\": {\n        \"currency\": \"USD\",\n        \"value\": 42.99\n    },\n    \"pi\": 3.141\n}\n</code></pre>"},{"location":"api/basic_json/unflatten/#see-also","title":"See also","text":"<ul> <li>flatten the reverse function</li> </ul>"},{"location":"api/basic_json/unflatten/#version-history","title":"Version history","text":"<ul> <li>Added in version 2.0.0.</li> </ul>"},{"location":"api/basic_json/update/","title":"nlohmann::basic_json::update","text":"<pre><code>// (1)\nvoid update(const_reference j, bool merge_objects = false);\n\n// (2)\nvoid update(const_iterator first, const_iterator last, bool merge_objects = false);\n</code></pre> <ol> <li>Inserts all values from JSON object <code>j</code>.</li> <li>Inserts all values from range <code>[first, last)</code></li> </ol> <p>When <code>merge_objects</code> is <code>false</code> (default), existing keys are overwritten. When <code>merge_objects</code> is <code>true</code>, recursively merges objects with common keys.</p> <p>If the JSON value is <code>null</code>, it is implicitly converted to an empty object before the values are inserted.</p> <p>The function is motivated by Python's dict.update function.</p>"},{"location":"api/basic_json/update/#iterator-invalidation","title":"Iterator invalidation","text":"<p>For <code>ordered_json</code>, adding a value to an object can yield a reallocation, in which case all iterators (including the <code>end()</code> iterator) and all references to the elements are invalidated.</p>"},{"location":"api/basic_json/update/#parameters","title":"Parameters","text":"<code>j</code> (in) JSON object to read values from <code>merge_objects</code> (in) when <code>true</code>, keys that exist in both objects and whose value in the source is itself an object are merged recursively; all other values are overwritten as usual (default: <code>false</code>) <code>first</code> (in) the beginning of the range of elements to insert <code>last</code> (in) the end of the range of elements to insert"},{"location":"api/basic_json/update/#exception-safety","title":"Exception safety","text":"<p>Basic guarantee: if an exception is thrown during the operation, the JSON value may be partially modified.</p>"},{"location":"api/basic_json/update/#exceptions","title":"Exceptions","text":"<ol> <li>The function can throw the following exceptions:<ul> <li>Throws <code>type_error.312</code> if called on JSON values other than   objects; example: <code>\"cannot use update() with string\"</code></li> </ul> </li> <li>The function can throw the following exceptions:<ul> <li>Throws <code>type_error.312</code> if called on JSON values other than   objects; example: <code>\"cannot use update() with string\"</code></li> <li>Throws <code>invalid_iterator.210</code> if <code>first</code> and <code>last</code>   do not belong to the same JSON value; example: <code>\"iterators do not fit\"</code></li> </ul> </li> </ol>"},{"location":"api/basic_json/update/#complexity","title":"Complexity","text":"<ol> <li>O(N*log(size() + N)), where N is the number of elements to insert.</li> <li>O(N*log(size() + N)), where N is the number of elements to insert.</li> </ol>"},{"location":"api/basic_json/update/#examples","title":"Examples","text":"Example <p>The example shows how <code>update()</code> is used.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;iomanip&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\nusing namespace nlohmann::literals;\n\nint main()\n{\n    // create two JSON objects\n    json o1 = R\"( {\"color\": \"red\", \"price\": 17.99, \"names\": {\"de\": \"Flugzeug\"}} )\"_json;\n    json o2 = R\"( {\"color\": \"blue\", \"speed\": 100, \"names\": {\"en\": \"plane\"}} )\"_json;\n    json o3 = o1;\n\n    // add all keys from o2 to o1 (updating \"color\", replacing \"names\")\n    o1.update(o2);\n\n    // add all keys from o2 to o1 (updating \"color\", merging \"names\")\n    o3.update(o2, true);\n\n    // output updated object o1 and o3\n    std::cout &lt;&lt; std::setw(2) &lt;&lt; o1 &lt;&lt; '\\n';\n    std::cout &lt;&lt; std::setw(2) &lt;&lt; o3 &lt;&lt; '\\n';\n}\n</code></pre> <p>Output:</p> <pre><code>{\n  \"color\": \"blue\",\n  \"names\": {\n    \"en\": \"plane\"\n  },\n  \"price\": 17.99,\n  \"speed\": 100\n}\n{\n  \"color\": \"blue\",\n  \"names\": {\n    \"de\": \"Flugzeug\",\n    \"en\": \"plane\"\n  },\n  \"price\": 17.99,\n  \"speed\": 100\n}\n</code></pre> Example <p>The example shows how <code>update()</code> is used.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;iomanip&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\nusing namespace nlohmann::literals;\n\nint main()\n{\n    // create two JSON objects\n    json o1 = R\"( {\"color\": \"red\", \"price\": 17.99, \"names\": {\"de\": \"Flugzeug\"}} )\"_json;\n    json o2 = R\"( {\"color\": \"blue\", \"speed\": 100, \"names\": {\"en\": \"plane\"}} )\"_json;\n    json o3 = o1;\n\n    // add all keys from o2 to o1 (updating \"color\", replacing \"names\")\n    o1.update(o2.begin(), o2.end());\n\n    // add all keys from o2 to o1 (updating \"color\", merging \"names\")\n    o3.update(o2.begin(), o2.end(), true);\n\n    // output updated object o1 and o3\n    std::cout &lt;&lt; std::setw(2) &lt;&lt; o1 &lt;&lt; '\\n';\n    std::cout &lt;&lt; std::setw(2) &lt;&lt; o3 &lt;&lt; '\\n';\n}\n</code></pre> <p>Output:</p> <pre><code>{\n  \"color\": \"blue\",\n  \"names\": {\n    \"en\": \"plane\"\n  },\n  \"price\": 17.99,\n  \"speed\": 100\n}\n{\n  \"color\": \"blue\",\n  \"names\": {\n    \"de\": \"Flugzeug\",\n    \"en\": \"plane\"\n  },\n  \"price\": 17.99,\n  \"speed\": 100\n}\n</code></pre> Example <p>One common use case for this function is the handling of user settings. Assume your application can be configured in some aspects:</p> <pre><code>{\n    \"color\": \"red\",\n    \"active\": true,\n    \"name\": {\"de\": \"Maus\", \"en\": \"mouse\"}\n}\n</code></pre> <p>The user may override the default settings selectively:</p> <pre><code>{\n    \"color\": \"blue\",\n    \"name\": {\"es\": \"rat\u00f3n\"},\n}\n</code></pre> <p>Then <code>update</code> manages the merging of default settings and user settings:</p> <pre><code>auto user_settings = json::parse(\"config.json\");\nauto effective_settings = get_default_settings();\neffective_settings.update(user_settings);\n</code></pre> <p>Now <code>effective_settings</code> contains the default settings, but those keys set by the user are overwritten:</p> <pre><code>{\n    \"color\": \"blue\",\n    \"active\": true,\n    \"name\": {\"es\": \"rat\u00f3n\"}\n}\n</code></pre> <p>Note existing keys were just overwritten. To merge objects, <code>merge_objects</code> setting should be set to <code>true</code>:</p> <pre><code>auto user_settings = json::parse(\"config.json\");\nauto effective_settings = get_default_settings();\neffective_settings.update(user_settings, true);\n</code></pre> <pre><code>{\n    \"color\": \"blue\",\n    \"active\": true,\n    \"name\": {\"de\": \"Maus\", \"en\": \"mouse\", \"es\": \"rat\u00f3n\"}\n}\n</code></pre>"},{"location":"api/basic_json/update/#see-also","title":"See also","text":"<ul> <li>insert add values to an array/object</li> <li>merge_patch applies a JSON Merge Patch</li> </ul>"},{"location":"api/basic_json/update/#version-history","title":"Version history","text":"<ul> <li>Added in version 3.0.0.</li> <li>Added <code>merge_objects</code> parameter in 3.10.5.</li> </ul>"},{"location":"api/basic_json/value/","title":"nlohmann::basic_json::value","text":"<pre><code>// (1)\ntemplate&lt;class ValueType&gt;\nValueType value(const typename object_t::key_type&amp; key,\n                ValueType&amp;&amp; default_value) const;\n\n// (2)\ntemplate&lt;class ValueType, class KeyType&gt;\nValueType value(KeyType&amp;&amp; key,\n                ValueType&amp;&amp; default_value) const;\n\n// (3)\ntemplate&lt;class ValueType&gt;\nValueType value(const json_pointer&amp; ptr,\n                const ValueType&amp; default_value) const;\n</code></pre> <ol> <li> <p>Returns either a copy of an object's element at the specified key <code>key</code> or a given default value if no element with    key <code>key</code> exists.</p> <p>The function is basically equivalent to executing <pre><code>try {\n   return at(key);\n} catch(out_of_range) {\n   return default_value;\n}\n</code></pre></p> </li> <li> <p>See 1. This overload is only available if <code>KeyType</code> is comparable with <code>typename object_t::key_type</code> and    <code>typename object_comparator_t::is_transparent</code> denotes a type.</p> </li> <li> <p>Returns either a copy of an object's element at the specified JSON pointer <code>ptr</code> or a given default value if no value    at <code>ptr</code> exists.</p> <p>The function is basically equivalent to executing <pre><code>try {\n   return at(ptr);\n} catch(out_of_range) {\n   return default_value;\n}\n</code></pre></p> </li> </ol> <p>Differences to <code>at</code> and <code>operator[]</code></p> <ul> <li>Unlike <code>at</code>, this function does not throw if the given <code>key</code>/<code>ptr</code> was not found.</li> <li>Unlike <code>operator[]</code>, this function does not implicitly add an element to the position defined by  <code>key</code>/<code>ptr</code> key. This function is furthermore also applicable to const objects.</li> </ul>"},{"location":"api/basic_json/value/#template-parameters","title":"Template parameters","text":"<code>KeyType</code> A type for an object key other than <code>json_pointer</code> that is comparable with <code>string_t</code> using  <code>object_comparator_t</code>. This can also be a string view (C++17). <code>ValueType</code> type compatible to JSON values, for instance <code>int</code> for JSON integer numbers, <code>bool</code> for JSON booleans, or <code>std::vector</code> types for JSON arrays. Note the type of the expected value at <code>key</code>/<code>ptr</code> and the default value <code>default_value</code> must be compatible."},{"location":"api/basic_json/value/#parameters","title":"Parameters","text":"<code>key</code> (in) key of the element to access <code>default_value</code> (in) the value to return if <code>key</code>/<code>ptr</code> found no value <code>ptr</code> (in) a JSON pointer to the element to access"},{"location":"api/basic_json/value/#return-value","title":"Return value","text":"<ol> <li>copy of the element at key <code>key</code> or <code>default_value</code> if <code>key</code> is not found</li> <li>copy of the element at key <code>key</code> or <code>default_value</code> if <code>key</code> is not found</li> <li>copy of the element at JSON Pointer <code>ptr</code> or <code>default_value</code> if no value for <code>ptr</code> is found</li> </ol>"},{"location":"api/basic_json/value/#exception-safety","title":"Exception safety","text":"<p>Strong guarantee: if an exception is thrown, there are no changes to any JSON value.</p>"},{"location":"api/basic_json/value/#exceptions","title":"Exceptions","text":"<ol> <li>The function can throw the following exceptions:<ul> <li>Throws <code>type_error.302</code> if <code>default_value</code> does not match   the type of the value at <code>key</code></li> <li>Throws <code>type_error.306</code> if the JSON value is not an object;   in that case, using <code>value()</code> with a key makes no sense.</li> </ul> </li> <li>See 1.</li> <li>The function can throw the following exceptions:<ul> <li>Throws <code>type_error.302</code> if <code>default_value</code> does not match   the type of the value at <code>ptr</code></li> <li>Throws <code>type_error.306</code> if the JSON value is not an object;   in that case, using <code>value()</code> with a JSON pointer makes no sense.</li> </ul> </li> </ol>"},{"location":"api/basic_json/value/#complexity","title":"Complexity","text":"<ol> <li>Logarithmic in the size of the container.</li> <li>Logarithmic in the size of the container.</li> <li>Logarithmic in the size of the container.</li> </ol>"},{"location":"api/basic_json/value/#notes","title":"Notes","text":"<p>Return type</p> <p>The value function is a template, and the return type of the function is determined by the type of the provided default value unless otherwise specified. This can have unexpected effects. In the example below, we store a 64-bit unsigned integer. We get exactly that value when using <code>operator[]</code>. However, when we call <code>value</code> and provide <code>0</code> as default value, then <code>-1</code> is returned. This occurs, because <code>0</code> has type <code>int</code> which overflows when handling the value <code>18446744073709551615</code>.</p> <p>To address this issue, either provide a correctly typed default value or use the template parameter to specify the desired return type. Note that this issue occurs even when a value is stored at the provided key, and the default value is not used as the return value.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    json j = json::parse(R\"({\"uint64\": 18446744073709551615})\");\n\n    std::cout &lt;&lt; \"operator[]:                \" &lt;&lt; j[\"uint64\"] &lt;&lt; '\\n'\n              &lt;&lt; \"default value (int):       \" &lt;&lt; j.value(\"uint64\", 0) &lt;&lt; '\\n'\n              &lt;&lt; \"default value (uint64_t):  \" &lt;&lt; j.value(\"uint64\", std::uint64_t(0)) &lt;&lt; '\\n'\n              &lt;&lt; \"explicit return value type: \" &lt;&lt; j.value&lt;std::uint64_t&gt;(\"uint64\", 0) &lt;&lt; '\\n';\n}\n</code></pre> <p>Output:</p> <pre><code>operator[]:                18446744073709551615\ndefault value (int):       -1\ndefault value (uint64_t):  18446744073709551615\nexplicit return value type: 18446744073709551615\n</code></pre>"},{"location":"api/basic_json/value/#examples","title":"Examples","text":"Example: (1) access specified object element with default value <p>The example below shows how object elements can be queried with a default value.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create a JSON object with different entry types\n    json j =\n    {\n        {\"integer\", 1},\n        {\"floating\", 42.23},\n        {\"string\", \"hello world\"},\n        {\"boolean\", true},\n        {\"object\", {{\"key1\", 1}, {\"key2\", 2}}},\n        {\"array\", {1, 2, 3}}\n    };\n\n    // access existing values\n    int v_integer = j.value(\"integer\", 0);\n    double v_floating = j.value(\"floating\", 47.11);\n\n    // access nonexisting values and rely on default value\n    std::string v_string = j.value(\"nonexisting\", \"oops\");\n    bool v_boolean = j.value(\"nonexisting\", false);\n\n    // output values\n    std::cout &lt;&lt; std::boolalpha &lt;&lt; v_integer &lt;&lt; \" \" &lt;&lt; v_floating\n              &lt;&lt; \" \" &lt;&lt; v_string &lt;&lt; \" \" &lt;&lt; v_boolean &lt;&lt; \"\\n\";\n}\n</code></pre> <p>Output:</p> <pre><code>1 42.23 oops false\n</code></pre> Example: (2) access specified object element using string_view with default value <p>The example below shows how object elements can be queried with a default value.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;string_view&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing namespace std::string_view_literals;\nusing json = nlohmann::json;\n\nint main()\n{\n    // create a JSON object with different entry types\n    json j =\n    {\n        {\"integer\", 1},\n        {\"floating\", 42.23},\n        {\"string\", \"hello world\"},\n        {\"boolean\", true},\n        {\"object\", {{\"key1\", 1}, {\"key2\", 2}}},\n        {\"array\", {1, 2, 3}}\n    };\n\n    // access existing values\n    int v_integer = j.value(\"integer\"sv, 0);\n    double v_floating = j.value(\"floating\"sv, 47.11);\n\n    // access nonexisting values and rely on default value\n    std::string v_string = j.value(\"nonexisting\"sv, \"oops\");\n    bool v_boolean = j.value(\"nonexisting\"sv, false);\n\n    // output values\n    std::cout &lt;&lt; std::boolalpha &lt;&lt; v_integer &lt;&lt; \" \" &lt;&lt; v_floating\n              &lt;&lt; \" \" &lt;&lt; v_string &lt;&lt; \" \" &lt;&lt; v_boolean &lt;&lt; \"\\n\";\n}\n</code></pre> <p>Output:</p> <pre><code>1 42.23 oops false\n</code></pre> Example: (3) access specified object element via JSON Pointer with default value <p>The example below shows how object elements can be queried with a default value.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\nusing namespace nlohmann::literals;\n\nint main()\n{\n    // create a JSON object with different entry types\n    json j =\n    {\n        {\"integer\", 1},\n        {\"floating\", 42.23},\n        {\"string\", \"hello world\"},\n        {\"boolean\", true},\n        {\"object\", {{\"key1\", 1}, {\"key2\", 2}}},\n        {\"array\", {1, 2, 3}}\n    };\n\n    // access existing values\n    int v_integer = j.value(\"/integer\"_json_pointer, 0);\n    double v_floating = j.value(\"/floating\"_json_pointer, 47.11);\n\n    // access nonexisting values and rely on default value\n    std::string v_string = j.value(\"/nonexisting\"_json_pointer, \"oops\");\n    bool v_boolean = j.value(\"/nonexisting\"_json_pointer, false);\n\n    // output values\n    std::cout &lt;&lt; std::boolalpha &lt;&lt; v_integer &lt;&lt; \" \" &lt;&lt; v_floating\n              &lt;&lt; \" \" &lt;&lt; v_string &lt;&lt; \" \" &lt;&lt; v_boolean &lt;&lt; \"\\n\";\n}\n</code></pre> <p>Output:</p> <pre><code>1 42.23 oops false\n</code></pre>"},{"location":"api/basic_json/value/#see-also","title":"See also","text":"<ul> <li>see <code>at</code> for access by reference with range checking</li> <li>see <code>operator[]</code> for unchecked access by reference</li> </ul>"},{"location":"api/basic_json/value/#version-history","title":"Version history","text":"<ol> <li>Added in version 1.0.0. Changed parameter <code>default_value</code> type from <code>const ValueType&amp;</code> to <code>ValueType&amp;&amp;</code> in version 3.11.0.</li> <li>Added in version 3.11.0. Made <code>ValueType</code> the first template parameter in version 3.11.2.</li> <li>Added in version 2.0.2.</li> </ol>"},{"location":"api/basic_json/value_t/","title":"nlohmann::basic_json::value_t","text":"<pre><code>enum class value_t : std::uint8_t {\n    null,\n    object,\n    array,\n    string,\n    boolean,\n    number_integer,\n    number_unsigned,\n    number_float,\n    binary,\n    discarded\n};\n</code></pre> <p>This enumeration collects the different JSON types. It is internally used to distinguish the stored values, and the functions <code>is_null</code>, <code>is_object</code>, <code>is_array</code>, <code>is_string</code>, <code>is_boolean</code>, <code>is_number</code> (with <code>is_number_integer</code>, <code>is_number_unsigned</code>, and <code>is_number_float</code>), <code>is_discarded</code>, <code>is_binary</code>, <code>is_primitive</code>, and <code>is_structured</code> rely on it.</p>"},{"location":"api/basic_json/value_t/#notes","title":"Notes","text":"<p>Ordering</p> <p>The order of types is as follows:</p> <ol> <li><code>null</code></li> <li><code>boolean</code></li> <li><code>number_integer</code>, <code>number_unsigned</code>, <code>number_float</code></li> <li><code>object</code></li> <li><code>array</code></li> <li><code>string</code></li> <li><code>binary</code></li> </ol> <p><code>discarded</code> is unordered.</p> <p>Types of numbers</p> <p>There are three enumerators for numbers (<code>number_integer</code>, <code>number_unsigned</code>, and <code>number_float</code>) to distinguish between different types of numbers:</p> <ul> <li><code>number_unsigned_t</code> for unsigned integers</li> <li><code>number_integer_t</code> for signed integers</li> <li><code>number_float_t</code> for floating-point numbers or to approximate integers which do not fit     into the limits of their respective type</li> </ul> <p>Comparison operators</p> <p><code>operator&lt;</code> and <code>operator&lt;=&gt;</code> (since C++20) are overloaded and compare according to the ordering described above. Until C++20 all other relational and equality operators yield results according to the integer value of each enumerator. Since C++20 some compilers consider the rewritten candidates generated from <code>operator&lt;=&gt;</code> during overload resolution, while others do not. For predictable and portable behavior use:</p> <ul> <li><code>operator&lt;</code> or <code>operator&lt;=&gt;</code> when wanting to compare according to the order described above</li> <li><code>operator==</code> or <code>operator!=</code> when wanting to compare according to each enumerators integer value</li> </ul>"},{"location":"api/basic_json/value_t/#examples","title":"Examples","text":"Example <p>The following code how <code>type()</code> queries the <code>value_t</code> for all JSON types.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create JSON values\n    json j_null;\n    json j_boolean = true;\n    json j_number_integer = -17;\n    json j_number_unsigned = 42u;\n    json j_number_float = 23.42;\n    json j_object = {{\"one\", 1}, {\"two\", 2}};\n    json j_array = {1, 2, 4, 8, 16};\n    json j_string = \"Hello, world\";\n\n    // call type()\n    std::cout &lt;&lt; std::boolalpha;\n    std::cout &lt;&lt; (j_null.type() == json::value_t::null) &lt;&lt; '\\n';\n    std::cout &lt;&lt; (j_boolean.type() == json::value_t::boolean) &lt;&lt; '\\n';\n    std::cout &lt;&lt; (j_number_integer.type() == json::value_t::number_integer) &lt;&lt; '\\n';\n    std::cout &lt;&lt; (j_number_unsigned.type() == json::value_t::number_unsigned) &lt;&lt; '\\n';\n    std::cout &lt;&lt; (j_number_float.type() == json::value_t::number_float) &lt;&lt; '\\n';\n    std::cout &lt;&lt; (j_object.type() == json::value_t::object) &lt;&lt; '\\n';\n    std::cout &lt;&lt; (j_array.type() == json::value_t::array) &lt;&lt; '\\n';\n    std::cout &lt;&lt; (j_string.type() == json::value_t::string) &lt;&lt; '\\n';\n}\n</code></pre> <p>Output:</p> <pre><code>true\ntrue\ntrue\ntrue\ntrue\ntrue\ntrue\ntrue\n</code></pre>"},{"location":"api/basic_json/value_t/#version-history","title":"Version history","text":"<ul> <li>Added in version 1.0.0.</li> <li>Added unsigned integer type in version 2.0.0.</li> <li>Added binary type in version 3.8.0.</li> </ul>"},{"location":"api/basic_json/~basic_json/","title":"nlohmann::basic_json::~basic_json","text":"<pre><code>~basic_json() noexcept;\n</code></pre> <p>Destroys the JSON value and frees all allocated memory.</p>"},{"location":"api/basic_json/~basic_json/#exception-safety","title":"Exception safety","text":"<p>No-throw guarantee: this member function never throws exceptions.</p>"},{"location":"api/basic_json/~basic_json/#complexity","title":"Complexity","text":"<p>Linear.</p>"},{"location":"api/basic_json/~basic_json/#version-history","title":"Version history","text":"<ul> <li>Added in version 1.0.0.</li> </ul>"},{"location":"api/byte_container_with_subtype/","title":"nlohmann::byte_container_with_subtype","text":"<pre><code>template&lt;typename BinaryType&gt;\nclass byte_container_with_subtype : public BinaryType;\n</code></pre> <p>This type extends the template parameter <code>BinaryType</code> provided to <code>basic_json</code> with a subtype used by BSON and MessagePack. This type exists so that the user does not have to specify a type themselves with a specific naming scheme in order to override the binary type.</p>"},{"location":"api/byte_container_with_subtype/#template-parameters","title":"Template parameters","text":"<code>BinaryType</code> container to store bytes (<code>std::vector&lt;std::uint8_t&gt;</code> by default)"},{"location":"api/byte_container_with_subtype/#member-types","title":"Member types","text":"<ul> <li>container_type - the type of the underlying container (<code>BinaryType</code>)</li> <li>subtype_type - the type of the subtype (<code>std::uint64_t</code>)</li> </ul>"},{"location":"api/byte_container_with_subtype/#member-functions","title":"Member functions","text":"<ul> <li>(constructor)</li> <li>operator== - comparison: equal</li> <li>operator!= - comparison: not equal</li> <li>set_subtype - sets the binary subtype</li> <li>subtype - return the binary subtype</li> <li>has_subtype - return whether the value has a subtype</li> <li>clear_subtype - clears the binary subtype</li> </ul>"},{"location":"api/byte_container_with_subtype/#version-history","title":"Version history","text":"<ul> <li>Added in version 3.8.0.</li> <li>Changed the type of subtypes to <code>std::uint64_t</code> in 3.10.0.</li> </ul>"},{"location":"api/byte_container_with_subtype/byte_container_with_subtype/","title":"nlohmann::byte_container_with_subtype::byte_container_with_subtype","text":"<pre><code>// (1)\nbyte_container_with_subtype();\n\n// (2)\nbyte_container_with_subtype(const container_type&amp; container);\nbyte_container_with_subtype(container_type&amp;&amp; container);\n\n// (3)\nbyte_container_with_subtype(const container_type&amp; container, subtype_type subtype);\nbyte_container_with_subtype(container_type&amp;&amp; container, subtype_type subtype);\n</code></pre> <ol> <li>Create an empty binary container without a subtype.</li> <li>Create a binary container without a subtype.</li> <li>Create a binary container with a subtype.</li> </ol>"},{"location":"api/byte_container_with_subtype/byte_container_with_subtype/#parameters","title":"Parameters","text":"<code>container</code> (in) binary container <code>subtype</code> (in) subtype"},{"location":"api/byte_container_with_subtype/byte_container_with_subtype/#examples","title":"Examples","text":"Example <p>The example below demonstrates how byte containers can be created.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\n// define a byte container based on std::vector\nusing byte_container_with_subtype = nlohmann::byte_container_with_subtype&lt;std::vector&lt;std::uint8_t&gt;&gt;;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // (1) create empty container\n    auto c1 = byte_container_with_subtype();\n\n    std::vector&lt;std::uint8_t&gt; bytes = {{0xca, 0xfe, 0xba, 0xbe}};\n\n    // (2) create container\n    auto c2 = byte_container_with_subtype(bytes);\n\n    // (3) create container with subtype\n    auto c3 = byte_container_with_subtype(bytes, 42);\n\n    std::cout &lt;&lt; json(c1) &lt;&lt; \"\\n\" &lt;&lt; json(c2) &lt;&lt; \"\\n\" &lt;&lt; json(c3) &lt;&lt; std::endl;\n}\n</code></pre> <p>Output:</p> <pre><code>{\"bytes\":[],\"subtype\":null}\n{\"bytes\":[202,254,186,190],\"subtype\":null}\n{\"bytes\":[202,254,186,190],\"subtype\":42}\n</code></pre>"},{"location":"api/byte_container_with_subtype/byte_container_with_subtype/#version-history","title":"Version history","text":"<p>Since version 3.8.0.</p>"},{"location":"api/byte_container_with_subtype/clear_subtype/","title":"nlohmann::byte_container_with_subtype::clear_subtype","text":"<pre><code>void clear_subtype() noexcept;\n</code></pre> <p>Clears the binary subtype and flags the value as not having a subtype, which has implications for serialization; for instance, MessagePack will prefer the bin family over the ext family.</p>"},{"location":"api/byte_container_with_subtype/clear_subtype/#exception-safety","title":"Exception safety","text":"<p>No-throw guarantee: this function never throws exceptions.</p>"},{"location":"api/byte_container_with_subtype/clear_subtype/#complexity","title":"Complexity","text":"<p>Constant.</p>"},{"location":"api/byte_container_with_subtype/clear_subtype/#examples","title":"Examples","text":"Example <p>The example below demonstrates how <code>clear_subtype</code> can remove subtypes.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\n// define a byte container based on std::vector\nusing byte_container_with_subtype = nlohmann::byte_container_with_subtype&lt;std::vector&lt;std::uint8_t&gt;&gt;;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    std::vector&lt;std::uint8_t&gt; bytes = {{0xca, 0xfe, 0xba, 0xbe}};\n\n    // create container with subtype\n    auto c1 = byte_container_with_subtype(bytes, 42);\n\n    std::cout &lt;&lt; \"before calling clear_subtype(): \" &lt;&lt; json(c1) &lt;&lt; '\\n';\n\n    c1.clear_subtype();\n\n    std::cout &lt;&lt; \"after calling clear_subtype(): \" &lt;&lt; json(c1) &lt;&lt; '\\n';\n}\n</code></pre> <p>Output:</p> <pre><code>before calling clear_subtype(): {\"bytes\":[202,254,186,190],\"subtype\":42}\nafter calling clear_subtype(): {\"bytes\":[202,254,186,190],\"subtype\":null}\n</code></pre>"},{"location":"api/byte_container_with_subtype/clear_subtype/#version-history","title":"Version history","text":"<p>Since version 3.8.0.</p>"},{"location":"api/byte_container_with_subtype/has_subtype/","title":"nlohmann::byte_container_with_subtype::has_subtype","text":"<pre><code>constexpr bool has_subtype() const noexcept;\n</code></pre> <p>Returns whether the value has a subtype.</p>"},{"location":"api/byte_container_with_subtype/has_subtype/#return-value","title":"Return value","text":"<p>whether the value has a subtype</p>"},{"location":"api/byte_container_with_subtype/has_subtype/#exception-safety","title":"Exception safety","text":"<p>No-throw guarantee: this function never throws exceptions.</p>"},{"location":"api/byte_container_with_subtype/has_subtype/#complexity","title":"Complexity","text":"<p>Constant.</p>"},{"location":"api/byte_container_with_subtype/has_subtype/#examples","title":"Examples","text":"Example <p>The example below demonstrates how <code>has_subtype</code> can check whether a subtype was set.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\n// define a byte container based on std::vector\nusing byte_container_with_subtype = nlohmann::byte_container_with_subtype&lt;std::vector&lt;std::uint8_t&gt;&gt;;\n\nint main()\n{\n    std::vector&lt;std::uint8_t&gt; bytes = {{0xca, 0xfe, 0xba, 0xbe}};\n\n    // create container\n    auto c1 = byte_container_with_subtype(bytes);\n\n    // create container with subtype\n    auto c2 = byte_container_with_subtype(bytes, 42);\n\n    std::cout &lt;&lt; std::boolalpha &lt;&lt; \"c1.has_subtype() = \" &lt;&lt; c1.has_subtype()\n              &lt;&lt; \"\\nc2.has_subtype() = \" &lt;&lt; c2.has_subtype() &lt;&lt; std::endl;\n}\n</code></pre> <p>Output:</p> <pre><code>c1.has_subtype() = false\nc2.has_subtype() = true\n</code></pre>"},{"location":"api/byte_container_with_subtype/has_subtype/#version-history","title":"Version history","text":"<p>Since version 3.8.0.</p>"},{"location":"api/byte_container_with_subtype/set_subtype/","title":"nlohmann::byte_container_with_subtype::set_subtype","text":"<pre><code>void set_subtype(subtype_type subtype) noexcept;\n</code></pre> <p>Sets the binary subtype of the value, also flags a binary JSON value as having a subtype, which has implications for serialization.</p>"},{"location":"api/byte_container_with_subtype/set_subtype/#parameters","title":"Parameters","text":"<code>subtype</code> (in) subtype to set"},{"location":"api/byte_container_with_subtype/set_subtype/#exception-safety","title":"Exception safety","text":"<p>No-throw guarantee: this function never throws exceptions.</p>"},{"location":"api/byte_container_with_subtype/set_subtype/#complexity","title":"Complexity","text":"<p>Constant.</p>"},{"location":"api/byte_container_with_subtype/set_subtype/#examples","title":"Examples","text":"Example <p>The example below demonstrates how a subtype can be set with <code>set_subtype</code>.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\n// define a byte container based on std::vector\nusing byte_container_with_subtype = nlohmann::byte_container_with_subtype&lt;std::vector&lt;std::uint8_t&gt;&gt;;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    std::vector&lt;std::uint8_t&gt; bytes = {{0xca, 0xfe, 0xba, 0xbe}};\n\n    // create container without subtype\n    auto c = byte_container_with_subtype(bytes);\n\n    std::cout &lt;&lt; \"before calling set_subtype(42): \" &lt;&lt; json(c) &lt;&lt; '\\n';\n\n    // set the subtype\n    c.set_subtype(42);\n\n    std::cout &lt;&lt; \"after calling set_subtype(42): \" &lt;&lt; json(c) &lt;&lt; '\\n';\n}\n</code></pre> <p>Output:</p> <pre><code>before calling set_subtype(42): {\"bytes\":[202,254,186,190],\"subtype\":null}\nafter calling set_subtype(42): {\"bytes\":[202,254,186,190],\"subtype\":42}\n</code></pre>"},{"location":"api/byte_container_with_subtype/set_subtype/#version-history","title":"Version history","text":"<p>Since version 3.8.0.</p>"},{"location":"api/byte_container_with_subtype/subtype/","title":"nlohmann::byte_container_with_subtype::subtype","text":"<pre><code>constexpr subtype_type subtype() const noexcept;\n</code></pre> <p>Returns the numerical subtype of the value if it has a subtype. If it does not have a subtype, this function will return <code>subtype_type(-1)</code> as a sentinel value.</p>"},{"location":"api/byte_container_with_subtype/subtype/#return-value","title":"Return value","text":"<p>the numerical subtype of the binary value, or <code>subtype_type(-1)</code> if no subtype is set</p>"},{"location":"api/byte_container_with_subtype/subtype/#exception-safety","title":"Exception safety","text":"<p>No-throw guarantee: this function never throws exceptions.</p>"},{"location":"api/byte_container_with_subtype/subtype/#complexity","title":"Complexity","text":"<p>Constant.</p>"},{"location":"api/byte_container_with_subtype/subtype/#examples","title":"Examples","text":"Example <p>The example below demonstrates how the subtype can be retrieved with <code>subtype</code>. Note how <code>subtype_type(-1)</code> is returned for container <code>c1</code>.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\n// define a byte container based on std::vector\nusing byte_container_with_subtype = nlohmann::byte_container_with_subtype&lt;std::vector&lt;std::uint8_t&gt;&gt;;\n\nint main()\n{\n    std::vector&lt;std::uint8_t&gt; bytes = {{0xca, 0xfe, 0xba, 0xbe}};\n\n    // create container\n    auto c1 = byte_container_with_subtype(bytes);\n\n    // create container with subtype\n    auto c2 = byte_container_with_subtype(bytes, 42);\n\n    std::cout &lt;&lt; \"c1.subtype() = \" &lt;&lt; c1.subtype()\n              &lt;&lt; \"\\nc2.subtype() = \" &lt;&lt; c2.subtype() &lt;&lt; std::endl;\n\n    // in case no subtype is set, return special value\n    assert(c1.subtype() == static_cast&lt;byte_container_with_subtype::subtype_type&gt;(-1));\n}\n</code></pre> <p>Output:</p> <pre><code>c1.subtype() = 18446744073709551615\nc2.subtype() = 42\n</code></pre>"},{"location":"api/byte_container_with_subtype/subtype/#version-history","title":"Version history","text":"<ul> <li>Added in version 3.8.0</li> <li>Fixed return value to properly return <code>subtype_type(-1)</code> as documented in version 3.10.0.</li> </ul>"},{"location":"api/json_pointer/","title":"nlohmann::json_pointer","text":"<pre><code>template&lt;typename RefStringType&gt;\nclass json_pointer;\n</code></pre> <p>A JSON pointer defines a string syntax for identifying a specific value within a JSON document. It can be used with functions <code>at</code> and <code>operator[]</code>. Furthermore, JSON pointers are the base for JSON patches.</p>"},{"location":"api/json_pointer/#template-parameters","title":"Template parameters","text":"<code>RefStringType</code> the string type used for the reference tokens making up the JSON pointer <p>Deprecation</p> <p>For backwards compatibility <code>RefStringType</code> may also be a specialization of <code>basic_json</code> in which case <code>string_t</code> will be deduced as <code>basic_json::string_t</code>. This feature is deprecated and may be removed in a future major version.</p>"},{"location":"api/json_pointer/#member-types","title":"Member types","text":"<ul> <li>string_t - the string type used for the reference tokens</li> </ul>"},{"location":"api/json_pointer/#member-functions","title":"Member functions","text":"<ul> <li>(constructor)</li> <li>to_string - return a string representation of the JSON pointer</li> <li>operator string_t - return a string representation of the JSON pointer</li> <li>operator== - compare: equal</li> <li>operator!= - compare: not equal</li> <li>operator/= - append to the end of the JSON pointer</li> <li>operator/ - create JSON Pointer by appending</li> <li>parent_pointer - returns the parent of this JSON pointer</li> <li>pop_back - remove the last reference token</li> <li>back - return last reference token</li> <li>push_back - append an unescaped token at the end of the pointer</li> <li>pop_front - remove the first reference token</li> <li>front - return first reference token</li> <li>push_front - append an unescaped token at the start of the pointer</li> <li>empty - return whether the pointer points to the root document</li> </ul>"},{"location":"api/json_pointer/#literals","title":"Literals","text":"<ul> <li>operator\"\"_json_pointer - user-defined string literal for JSON pointers</li> </ul>"},{"location":"api/json_pointer/#see-also","title":"See also","text":"<ul> <li>RFC 6901</li> </ul>"},{"location":"api/json_pointer/#version-history","title":"Version history","text":"<ul> <li>Added in version 2.0.0.</li> <li>Changed template parameter from <code>basic_json</code> to string type in version 3.11.0.</li> </ul>"},{"location":"api/json_pointer/back/","title":"nlohmann::json_pointer::back","text":"<pre><code>const string_t&amp; back() const;\n</code></pre> <p>Return the last reference token.</p>"},{"location":"api/json_pointer/back/#return-value","title":"Return value","text":"<p>Last reference token.</p>"},{"location":"api/json_pointer/back/#exceptions","title":"Exceptions","text":"<p>Throws out_of_range.405 if the JSON pointer has no parent.</p>"},{"location":"api/json_pointer/back/#complexity","title":"Complexity","text":"<p>Constant.</p>"},{"location":"api/json_pointer/back/#examples","title":"Examples","text":"Example <p>The example shows the usage of <code>back</code>.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // different JSON Pointers\n    json::json_pointer ptr1(\"/foo\");\n    json::json_pointer ptr2(\"/foo/0\");\n\n    // call empty()\n    std::cout &lt;&lt; \"last reference token of \\\"\" &lt;&lt; ptr1 &lt;&lt; \"\\\" is \\\"\" &lt;&lt; ptr1.back() &lt;&lt; \"\\\"\\n\"\n              &lt;&lt; \"last reference token of \\\"\" &lt;&lt; ptr2 &lt;&lt; \"\\\" is \\\"\" &lt;&lt; ptr2.back() &lt;&lt; \"\\\"\" &lt;&lt; std::endl;\n}\n</code></pre> <p>Output:</p> <pre><code>last reference token of \"/foo\" is \"foo\"\nlast reference token of \"/foo/0\" is \"0\"\n</code></pre>"},{"location":"api/json_pointer/back/#version-history","title":"Version history","text":"<ul> <li>Added in version 3.6.0.</li> <li>Changed return type to <code>string_t</code> in version 3.11.0.</li> </ul>"},{"location":"api/json_pointer/empty/","title":"nlohmann::json_pointer::empty","text":"<pre><code>bool empty() const noexcept;\n</code></pre> <p>Return whether the pointer points to the root document.</p>"},{"location":"api/json_pointer/empty/#return-value","title":"Return value","text":"<p><code>true</code> iff the JSON pointer points to the root document.</p>"},{"location":"api/json_pointer/empty/#exception-safety","title":"Exception safety","text":"<p>No-throw guarantee: this function never throws exceptions.</p>"},{"location":"api/json_pointer/empty/#complexity","title":"Complexity","text":"<p>Constant.</p>"},{"location":"api/json_pointer/empty/#examples","title":"Examples","text":"Example <p>The example shows the result of <code>empty</code> for different JSON Pointers.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // different JSON Pointers\n    json::json_pointer ptr0;\n    json::json_pointer ptr1(\"\");\n    json::json_pointer ptr2(\"/foo\");\n    json::json_pointer ptr3(\"/foo/0\");\n\n    // call empty()\n    std::cout &lt;&lt; std::boolalpha\n              &lt;&lt; \"\\\"\" &lt;&lt; ptr0 &lt;&lt; \"\\\": \" &lt;&lt; ptr0.empty() &lt;&lt; '\\n'\n              &lt;&lt; \"\\\"\" &lt;&lt; ptr1 &lt;&lt; \"\\\": \" &lt;&lt; ptr1.empty() &lt;&lt; '\\n'\n              &lt;&lt; \"\\\"\" &lt;&lt; ptr2 &lt;&lt; \"\\\": \" &lt;&lt; ptr2.empty() &lt;&lt; '\\n'\n              &lt;&lt; \"\\\"\" &lt;&lt; ptr3 &lt;&lt; \"\\\": \" &lt;&lt; ptr3.empty() &lt;&lt; std::endl;\n}\n</code></pre> <p>Output:</p> <pre><code>\"\": true\n\"\": true\n\"/foo\": false\n\"/foo/0\": false\n</code></pre>"},{"location":"api/json_pointer/empty/#version-history","title":"Version history","text":"<p>Added in version 3.6.0.</p>"},{"location":"api/json_pointer/front/","title":"nlohmann::json_pointer::front","text":"<pre><code>const string_t&amp; front() const;\n</code></pre> <p>Return the first reference token.</p>"},{"location":"api/json_pointer/front/#return-value","title":"Return value","text":"<p>First reference token.</p>"},{"location":"api/json_pointer/front/#exceptions","title":"Exceptions","text":"<p>Throws out_of_range.405 if the JSON pointer has no parent.</p>"},{"location":"api/json_pointer/front/#complexity","title":"Complexity","text":"<p>Constant.</p>"},{"location":"api/json_pointer/front/#examples","title":"Examples","text":"Example <p>The example shows the usage of <code>front</code>.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // different JSON Pointers\n    json::json_pointer ptr1(\"/foo\");\n    json::json_pointer ptr2(\"/foo/0\");\n\n    // call empty()\n    std::cout &lt;&lt; \"first reference token of \\\"\" &lt;&lt; ptr1 &lt;&lt; \"\\\" is \\\"\" &lt;&lt; ptr1.front() &lt;&lt; \"\\\"\\n\"\n              &lt;&lt; \"first reference token of \\\"\" &lt;&lt; ptr2 &lt;&lt; \"\\\" is \\\"\" &lt;&lt; ptr2.front() &lt;&lt; \"\\\"\" &lt;&lt; std::endl;\n}\n</code></pre> <p>Output:</p> <pre><code>first reference token of \"/foo\" is \"foo\"\nfirst reference token of \"/foo/0\" is \"foo\"\n</code></pre>"},{"location":"api/json_pointer/front/#version-history","title":"Version history","text":"<ul> <li>Added in version 3.12.x.</li> </ul>"},{"location":"api/json_pointer/json_pointer/","title":"nlohmann::json_pointer::json_pointer","text":"<pre><code>explicit json_pointer(const string_t&amp; s = \"\");\n</code></pre> <p>Create a JSON pointer according to the syntax described in Section 3 of RFC6901.</p>"},{"location":"api/json_pointer/json_pointer/#parameters","title":"Parameters","text":"<code>s</code> (in) string representing the JSON pointer; if omitted, the empty string is assumed which references the whole JSON value"},{"location":"api/json_pointer/json_pointer/#exceptions","title":"Exceptions","text":"<ul> <li>Throws parse_error.107 if the given JSON pointer <code>s</code> is    nonempty and does not begin with a slash (<code>/</code>); see example below.</li> <li>Throws parse_error.108 if a tilde (<code>~</code>) in the given JSON   pointer <code>s</code> is not followed by <code>0</code> (representing <code>~</code>) or <code>1</code> (representing <code>/</code>); see example below.</li> </ul>"},{"location":"api/json_pointer/json_pointer/#examples","title":"Examples","text":"Example <p>The example shows the construction several valid JSON pointers as well as the exceptional behavior.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // correct JSON pointers\n    json::json_pointer p1;\n    json::json_pointer p2(\"\");\n    json::json_pointer p3(\"/\");\n    json::json_pointer p4(\"//\");\n    json::json_pointer p5(\"/foo/bar\");\n    json::json_pointer p6(\"/foo/bar/-\");\n    json::json_pointer p7(\"/foo/~0\");\n    json::json_pointer p8(\"/foo/~1\");\n\n    // error: JSON pointer does not begin with a slash\n    try\n    {\n        json::json_pointer p9(\"foo\");\n    }\n    catch (const json::parse_error&amp; e)\n    {\n        std::cout &lt;&lt; e.what() &lt;&lt; '\\n';\n    }\n\n    // error: JSON pointer uses escape symbol ~ not followed by 0 or 1\n    try\n    {\n        json::json_pointer p10(\"/foo/~\");\n    }\n    catch (const json::parse_error&amp; e)\n    {\n        std::cout &lt;&lt; e.what() &lt;&lt; '\\n';\n    }\n\n    // error: JSON pointer uses escape symbol ~ not followed by 0 or 1\n    try\n    {\n        json::json_pointer p11(\"/foo/~3\");\n    }\n    catch (const json::parse_error&amp; e)\n    {\n        std::cout &lt;&lt; e.what() &lt;&lt; '\\n';\n    }\n}\n</code></pre> <p>Output:</p> <pre><code>[json.exception.parse_error.107] parse error at byte 1: JSON pointer must be empty or begin with '/' - was: 'foo'\n[json.exception.parse_error.108] parse error: escape character '~' must be followed with '0' or '1'\n[json.exception.parse_error.108] parse error: escape character '~' must be followed with '0' or '1'\n</code></pre>"},{"location":"api/json_pointer/json_pointer/#version-history","title":"Version history","text":"<ul> <li>Added in version 2.0.0.</li> <li>Changed type of <code>s</code> to <code>string_t</code> in version 3.11.0.</li> </ul>"},{"location":"api/json_pointer/operator_eq/","title":"nlohmann::json_pointer::operator==","text":"<pre><code>// until C++20\ntemplate&lt;typename RefStringTypeLhs, typename RefStringTypeRhs&gt;\nbool operator==(\n    const json_pointer&lt;RefStringTypeLhs&gt;&amp; lhs,\n    const json_pointer&lt;RefStringTypeRhs&gt;&amp; rhs) noexcept;            // (1)\n\ntemplate&lt;typename RefStringTypeLhs, typename StringType&gt;\nbool operator==(\n    const json_pointer&lt;RefStringTypeLhs&gt;&amp; lhs,\n    const StringType&amp; rhs);                                         // (2)\n\ntemplate&lt;typename RefStringTypeRhs, typename StringType&gt;\nbool operator==(\n    const StringType&amp; lhs,\n    const json_pointer&lt;RefStringTypeRhs&gt;&amp; rhs);                     // (2)\n\n// since C++20\nclass json_pointer {\n    template&lt;typename RefStringTypeRhs&gt;\n    bool operator==(\n        const json_pointer&lt;RefStringTypeRhs&gt;&amp; rhs) const noexcept;  // (1)\n\n    bool operator==(const string_t&amp; rhs) const;                     // (2)\n};\n</code></pre> <ol> <li> <p>Compares two JSON pointers for equality by comparing their reference tokens.</p> </li> <li> <p>Compares a JSON pointer and a string or a string and a JSON pointer for equality by converting the string to a JSON    pointer and comparing the JSON pointers according to 1.</p> </li> </ol>"},{"location":"api/json_pointer/operator_eq/#template-parameters","title":"Template parameters","text":"<code>RefStringTypeLhs</code>, <code>RefStringTypeRhs</code> the string type of the left-hand side or right-hand side JSON pointer, respectively <code>StringType</code> the string type derived from the <code>json_pointer</code> operand (<code>json_pointer::string_t</code>)"},{"location":"api/json_pointer/operator_eq/#parameters","title":"Parameters","text":"<code>lhs</code> (in) first value to consider <code>rhs</code> (in) second value to consider"},{"location":"api/json_pointer/operator_eq/#return-value","title":"Return value","text":"<p>whether the values <code>lhs</code>/<code>*this</code> and <code>rhs</code> are equal</p>"},{"location":"api/json_pointer/operator_eq/#exception-safety","title":"Exception safety","text":"<ol> <li>No-throw guarantee: this function never throws exceptions.</li> <li>Strong exception safety: if an exception occurs, the original value stays intact.</li> </ol>"},{"location":"api/json_pointer/operator_eq/#exceptions","title":"Exceptions","text":"<ol> <li>(none)</li> <li>The function can throw the following exceptions:</li> <li>Throws parse_error.107 if the given JSON pointer <code>s</code> is      nonempty and does not begin with a slash (<code>/</code>); see example below.</li> <li>Throws parse_error.108 if a tilde (<code>~</code>) in the given JSON      pointer <code>s</code> is not followed by <code>0</code> (representing <code>~</code>) or <code>1</code> (representing <code>/</code>); see example below.</li> </ol>"},{"location":"api/json_pointer/operator_eq/#complexity","title":"Complexity","text":"<p>Constant if <code>lhs</code> and <code>rhs</code> differ in the number of reference tokens, otherwise linear in the number of reference tokens.</p>"},{"location":"api/json_pointer/operator_eq/#notes","title":"Notes","text":"<p>Deprecation</p> <p>Overload 2 is deprecated and will be removed in a future major version release.</p>"},{"location":"api/json_pointer/operator_eq/#examples","title":"Examples","text":"Example: (1) Comparing JSON pointers <p>The example demonstrates comparing JSON pointers.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // different JSON pointers\n    json::json_pointer ptr0;\n    json::json_pointer ptr1(\"\");\n    json::json_pointer ptr2(\"/foo\");\n\n    // compare JSON pointers\n    std::cout &lt;&lt; std::boolalpha\n              &lt;&lt; \"\\\"\" &lt;&lt; ptr0 &lt;&lt; \"\\\" == \\\"\" &lt;&lt; ptr0 &lt;&lt; \"\\\": \" &lt;&lt; (ptr0 == ptr0) &lt;&lt; '\\n'\n              &lt;&lt; \"\\\"\" &lt;&lt; ptr0 &lt;&lt; \"\\\" == \\\"\" &lt;&lt; ptr1 &lt;&lt; \"\\\": \" &lt;&lt; (ptr0 == ptr1) &lt;&lt; '\\n'\n              &lt;&lt; \"\\\"\" &lt;&lt; ptr1 &lt;&lt; \"\\\" == \\\"\" &lt;&lt; ptr2 &lt;&lt; \"\\\": \" &lt;&lt; (ptr1 == ptr2) &lt;&lt; '\\n'\n              &lt;&lt; \"\\\"\" &lt;&lt; ptr2 &lt;&lt; \"\\\" == \\\"\" &lt;&lt; ptr2 &lt;&lt; \"\\\": \" &lt;&lt; (ptr2 == ptr2) &lt;&lt; std::endl;\n}\n</code></pre> <p>Output:</p> <pre><code>\"\" == \"\": true\n\"\" == \"\": true\n\"\" == \"/foo\": false\n\"/foo\" == \"/foo\": true\n</code></pre> Example: (2) Comparing JSON pointers and strings <p>The example demonstrates comparing JSON pointers and strings, and when doing so may raise an exception.</p> <pre><code>#include &lt;exception&gt;\n#include &lt;iostream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // different JSON pointers\n    json::json_pointer ptr0;\n    json::json_pointer ptr1(\"\");\n    json::json_pointer ptr2(\"/foo\");\n\n    // different strings\n    std::string str0(\"\");\n    std::string str1(\"/foo\");\n    std::string str2(\"bar\");\n\n    // compare JSON pointers and strings\n    std::cout &lt;&lt; std::boolalpha\n              &lt;&lt; \"\\\"\" &lt;&lt; ptr0 &lt;&lt; \"\\\" == \\\"\" &lt;&lt; str0 &lt;&lt; \"\\\": \" &lt;&lt; (ptr0 == str0) &lt;&lt; '\\n'\n              &lt;&lt; \"\\\"\" &lt;&lt; str0 &lt;&lt; \"\\\" == \\\"\" &lt;&lt; ptr1 &lt;&lt; \"\\\": \" &lt;&lt; (str0 == ptr1) &lt;&lt; '\\n'\n              &lt;&lt; \"\\\"\" &lt;&lt; ptr2 &lt;&lt; \"\\\" == \\\"\" &lt;&lt; str1 &lt;&lt; \"\\\": \" &lt;&lt; (ptr2 == str1) &lt;&lt; std::endl;\n\n    try\n    {\n        std::cout &lt;&lt; \"\\\"\" &lt;&lt; str2 &lt;&lt; \"\\\" == \\\"\" &lt;&lt; ptr2 &lt;&lt; \"\\\": \" &lt;&lt; (str2 == ptr2) &lt;&lt; std::endl;\n    }\n    catch (const json::parse_error&amp; ex)\n    {\n        std::cout &lt;&lt; ex.what() &lt;&lt; std::endl;\n    }\n}\n</code></pre> <p>Output:</p> <pre><code>\"\" == \"\": true\n\"\" == \"\": true\n\"/foo\" == \"/foo\": true\n\"bar\" == \"/foo\": [json.exception.parse_error.107] parse error at byte 1: JSON pointer must be empty or begin with '/' - was: 'bar'\n</code></pre>"},{"location":"api/json_pointer/operator_eq/#version-history","title":"Version history","text":"<ol> <li>Added in version 2.1.0. Added C++20 member functions in version 3.11.2.</li> <li>Added for backward compatibility and deprecated in version 3.11.2.</li> </ol>"},{"location":"api/json_pointer/operator_ne/","title":"nlohmann::json_pointer::operator!=","text":"<pre><code>// until C++20\ntemplate&lt;typename RefStringTypeLhs, typename RefStringTypeRhs&gt;\nbool operator!=(\n    const json_pointer&lt;RefStringTypeLhs&gt;&amp; lhs,\n    const json_pointer&lt;RefStringTypeRhs&gt;&amp; rhs) noexcept;  // (1)\n\ntemplate&lt;typename RefStringTypeLhs, typename StringType&gt;\nbool operator!=(\n    const json_pointer&lt;RefStringTypeLhs&gt;&amp; lhs,\n    const StringType&amp; rhs);                               // (2)\n\ntemplate&lt;typename RefStringTypeRhs, typename StringType&gt;\nbool operator!=(\n    const StringType&amp; lhs,\n    const json_pointer&lt;RefStringTypeRhs&gt;&amp; rhs);           // (2)\n</code></pre> <ol> <li> <p>Compares two JSON pointers for inequality by comparing their reference tokens.</p> </li> <li> <p>Compares a JSON pointer and a string or a string and a JSON pointer for inequality by converting the string to a    JSON pointer and comparing the JSON pointers according to 1.</p> </li> </ol>"},{"location":"api/json_pointer/operator_ne/#template-parameters","title":"Template parameters","text":"<code>RefStringTypeLhs</code>, <code>RefStringTypeRhs</code> the string type of the left-hand side or right-hand side JSON pointer, respectively <code>StringType</code> the string type derived from the <code>json_pointer</code> operand (<code>json_pointer::string_t</code>)"},{"location":"api/json_pointer/operator_ne/#parameters","title":"Parameters","text":"<code>lhs</code> (in) first value to consider <code>rhs</code> (in) second value to consider"},{"location":"api/json_pointer/operator_ne/#return-value","title":"Return value","text":"<p>whether the values <code>lhs</code>/<code>*this</code> and <code>rhs</code> are not equal</p>"},{"location":"api/json_pointer/operator_ne/#exception-safety","title":"Exception safety","text":"<ol> <li>No-throw guarantee: this function never throws exceptions.</li> <li>Strong exception safety: if an exception occurs, the original value stays intact.</li> </ol>"},{"location":"api/json_pointer/operator_ne/#exceptions","title":"Exceptions","text":"<ol> <li>(none)</li> <li>The function can throw the following exceptions:</li> <li>Throws parse_error.107 if the given JSON pointer <code>s</code> is      nonempty and does not begin with a slash (<code>/</code>); see example below.</li> <li>Throws parse_error.108 if a tilde (<code>~</code>) in the given JSON      pointer <code>s</code> is not followed by <code>0</code> (representing <code>~</code>) or <code>1</code> (representing <code>/</code>); see example below.</li> </ol>"},{"location":"api/json_pointer/operator_ne/#complexity","title":"Complexity","text":"<p>Constant if <code>lhs</code> and <code>rhs</code> differ in the number of reference tokens, otherwise linear in the number of reference tokens.</p>"},{"location":"api/json_pointer/operator_ne/#notes","title":"Notes","text":"<p>Operator overload resolution</p> <p>Since C++20 overload resolution will consider the rewritten candidate generated from <code>operator==</code>.</p> <p>Deprecation</p> <p>Overload 2 is deprecated and will be removed in a future major version release.</p>"},{"location":"api/json_pointer/operator_ne/#examples","title":"Examples","text":"Example: (1) Comparing JSON pointers <p>The example demonstrates comparing JSON pointers.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // different JSON pointers\n    json::json_pointer ptr0;\n    json::json_pointer ptr1(\"\");\n    json::json_pointer ptr2(\"/foo\");\n\n    // compare JSON pointers\n    std::cout &lt;&lt; std::boolalpha\n              &lt;&lt; \"\\\"\" &lt;&lt; ptr0 &lt;&lt; \"\\\" != \\\"\" &lt;&lt; ptr0 &lt;&lt; \"\\\": \" &lt;&lt; (ptr0 != ptr0) &lt;&lt; '\\n'\n              &lt;&lt; \"\\\"\" &lt;&lt; ptr0 &lt;&lt; \"\\\" != \\\"\" &lt;&lt; ptr1 &lt;&lt; \"\\\": \" &lt;&lt; (ptr0 != ptr1) &lt;&lt; '\\n'\n              &lt;&lt; \"\\\"\" &lt;&lt; ptr1 &lt;&lt; \"\\\" != \\\"\" &lt;&lt; ptr2 &lt;&lt; \"\\\": \" &lt;&lt; (ptr1 != ptr2) &lt;&lt; '\\n'\n              &lt;&lt; \"\\\"\" &lt;&lt; ptr2 &lt;&lt; \"\\\" != \\\"\" &lt;&lt; ptr2 &lt;&lt; \"\\\": \" &lt;&lt; (ptr2 != ptr2) &lt;&lt; std::endl;\n}\n</code></pre> <p>Output:</p> <pre><code>\"\" != \"\": false\n\"\" != \"\": false\n\"\" != \"/foo\": true\n\"/foo\" != \"/foo\": false\n</code></pre> Example: (2) Comparing JSON pointers and strings <p>The example demonstrates comparing JSON pointers and strings, and when doing so may raise an exception.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // different JSON pointers\n    json::json_pointer ptr0;\n    json::json_pointer ptr1(\"\");\n    json::json_pointer ptr2(\"/foo\");\n\n    // different strings\n    std::string str0(\"\");\n    std::string str1(\"/foo\");\n    std::string str2(\"bar\");\n\n    // compare JSON pointers and strings\n    std::cout &lt;&lt; std::boolalpha\n              &lt;&lt; \"\\\"\" &lt;&lt; ptr0 &lt;&lt; \"\\\" != \\\"\" &lt;&lt; str0 &lt;&lt; \"\\\": \" &lt;&lt; (ptr0 != str0) &lt;&lt; '\\n'\n              &lt;&lt; \"\\\"\" &lt;&lt; str0 &lt;&lt; \"\\\" != \\\"\" &lt;&lt; ptr1 &lt;&lt; \"\\\": \" &lt;&lt; (str0 != ptr1) &lt;&lt; '\\n'\n              &lt;&lt; \"\\\"\" &lt;&lt; ptr2 &lt;&lt; \"\\\" != \\\"\" &lt;&lt; str1 &lt;&lt; \"\\\": \" &lt;&lt; (ptr2 != str1) &lt;&lt; std::endl;\n\n    try\n    {\n        std::cout &lt;&lt; \"\\\"\" &lt;&lt; str2 &lt;&lt; \"\\\" != \\\"\" &lt;&lt; ptr2 &lt;&lt; \"\\\": \" &lt;&lt; (str2 != ptr2) &lt;&lt; std::endl;\n    }\n    catch (const json::parse_error&amp; ex)\n    {\n        std::cout &lt;&lt; ex.what() &lt;&lt; std::endl;\n    }\n}\n</code></pre> <p>Output:</p> <pre><code>\"\" != \"\": false\n\"\" != \"\": false\n\"/foo\" != \"/foo\": false\n\"bar\" != \"/foo\": [json.exception.parse_error.107] parse error at byte 1: JSON pointer must be empty or begin with '/' - was: 'bar'\n</code></pre>"},{"location":"api/json_pointer/operator_ne/#version-history","title":"Version history","text":"<ol> <li>Added in version 2.1.0.</li> <li>Added for backward compatibility and deprecated in version 3.11.2.</li> </ol>"},{"location":"api/json_pointer/operator_slash/","title":"nlohmann::json_pointer::operator/","text":"<pre><code>// (1)\njson_pointer operator/(const json_pointer&amp; lhs, const json_pointer&amp; rhs);\n\n// (2)\njson_pointer operator/(const json_pointer&amp; lhs, string_t token);\n\n// (3)\njson_pointer operator/(const json_pointer&amp; lhs, std::size_t array_idx);\n</code></pre> <ol> <li>create a new JSON pointer by appending the right JSON pointer at the end of the left JSON pointer</li> <li>create a new JSON pointer by appending the unescaped token at the end of the JSON pointer</li> <li>create a new JSON pointer by appending the array-index-token at the end of the JSON pointer</li> </ol>"},{"location":"api/json_pointer/operator_slash/#parameters","title":"Parameters","text":"<code>lhs</code> (in) JSON pointer <code>rhs</code> (in) JSON pointer to append <code>token</code> (in) reference token to append <code>array_idx</code> (in) array index to append"},{"location":"api/json_pointer/operator_slash/#return-value","title":"Return value","text":"<ol> <li>a new JSON pointer with <code>rhs</code> appended to <code>lhs</code></li> <li>a new JSON pointer with unescaped <code>token</code> appended to <code>lhs</code></li> <li>a new JSON pointer with <code>array_idx</code> appended to <code>lhs</code></li> </ol>"},{"location":"api/json_pointer/operator_slash/#complexity","title":"Complexity","text":"<ol> <li>Linear in the length of <code>lhs</code> and <code>rhs</code>.</li> <li>Linear in the length of <code>lhs</code>.</li> <li>Linear in the length of <code>lhs</code>.</li> </ol>"},{"location":"api/json_pointer/operator_slash/#examples","title":"Examples","text":"Example <p>The example shows the usage of <code>operator/</code>.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create a JSON pointer\n    json::json_pointer ptr(\"/foo\");\n\n    // append a JSON Pointer\n    std::cout &lt;&lt; \"\\\"\" &lt;&lt; ptr / json::json_pointer(\"/bar/baz\") &lt;&lt; \"\\\"\\n\";\n\n    // append a string\n    std::cout &lt;&lt; \"\\\"\" &lt;&lt; ptr / \"fob\" &lt;&lt; \"\\\"\\n\";\n\n    // append an array index\n    std::cout &lt;&lt; \"\\\"\" &lt;&lt; ptr / 42 &lt;&lt; \"\\\"\" &lt;&lt; std::endl;\n}\n</code></pre> <p>Output:</p> <pre><code>\"/foo/bar/baz\"\n\"/foo/fob\"\n\"/foo/42\"\n</code></pre>"},{"location":"api/json_pointer/operator_slash/#version-history","title":"Version history","text":"<ol> <li>Added in version 3.6.0.</li> <li>Added in version 3.6.0. Changed type of <code>token</code> to <code>string_t</code> in version 3.11.0.</li> <li>Added in version 3.6.0.</li> </ol>"},{"location":"api/json_pointer/operator_slasheq/","title":"nlohmann::json_pointer::operator/=","text":"<pre><code>// (1)\njson_pointer&amp; operator/=(const json_pointer&amp; ptr);\n\n// (2)\njson_pointer&amp; operator/=(string_t token);\n\n// (3)\njson_pointer&amp; operator/=(std::size_t array_idx)\n</code></pre> <ol> <li>append another JSON pointer at the end of this JSON pointer</li> <li>append an unescaped reference token at the end of this JSON pointer</li> <li>append an array index at the end of this JSON pointer</li> </ol>"},{"location":"api/json_pointer/operator_slasheq/#parameters","title":"Parameters","text":"<code>ptr</code> (in) JSON pointer to append <code>token</code> (in) reference token to append <code>array_idx</code> (in) array index to append"},{"location":"api/json_pointer/operator_slasheq/#return-value","title":"Return value","text":"<ol> <li>JSON pointer with <code>ptr</code> appended</li> <li>JSON pointer with <code>token</code> appended without escaping <code>token</code></li> <li>JSON pointer with <code>array_idx</code> appended</li> </ol>"},{"location":"api/json_pointer/operator_slasheq/#complexity","title":"Complexity","text":"<ol> <li>Linear in the length of <code>ptr</code>.</li> <li>Amortized constant.</li> <li>Amortized constant.</li> </ol>"},{"location":"api/json_pointer/operator_slasheq/#examples","title":"Examples","text":"Example <p>The example shows the usage of <code>operator/=</code>.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create a JSON pointer\n    json::json_pointer ptr(\"/foo\");\n    std::cout &lt;&lt; \"\\\"\" &lt;&lt; ptr &lt;&lt; \"\\\"\\n\";\n\n    // append a JSON Pointer\n    ptr /= json::json_pointer(\"/bar/baz\");\n    std::cout &lt;&lt; \"\\\"\" &lt;&lt; ptr &lt;&lt; \"\\\"\\n\";\n\n    // append a string\n    ptr /= \"fob\";\n    std::cout &lt;&lt; \"\\\"\" &lt;&lt; ptr &lt;&lt; \"\\\"\\n\";\n\n    // append an array index\n    ptr /= 42;\n    std::cout &lt;&lt; \"\\\"\" &lt;&lt; ptr &lt;&lt; \"\\\"\" &lt;&lt; std::endl;\n}\n</code></pre> <p>Output:</p> <pre><code>\"/foo\"\n\"/foo/bar/baz\"\n\"/foo/bar/baz/fob\"\n\"/foo/bar/baz/fob/42\"\n</code></pre>"},{"location":"api/json_pointer/operator_slasheq/#version-history","title":"Version history","text":"<ol> <li>Added in version 3.6.0.</li> <li>Added in version 3.6.0. Changed type of <code>token</code> to <code>string_t</code> in version 3.11.0.</li> <li>Added in version 3.6.0.</li> </ol>"},{"location":"api/json_pointer/operator_string_t/","title":"nlohmann::json_pointer::operator string_t","text":"<pre><code>operator string_t() const\n</code></pre> <p>Return a string representation of the JSON pointer.</p>"},{"location":"api/json_pointer/operator_string_t/#return-value","title":"Return value","text":"<p>A string representation of the JSON pointer</p>"},{"location":"api/json_pointer/operator_string_t/#possible-implementation","title":"Possible implementation","text":"<pre><code>operator string_t() const\n{\n    return to_string();\n}\n</code></pre>"},{"location":"api/json_pointer/operator_string_t/#notes","title":"Notes","text":"<p>Deprecation</p> <p>This function is deprecated in favor of <code>to_string</code> and will be removed in a future major version release.</p>"},{"location":"api/json_pointer/operator_string_t/#examples","title":"Examples","text":"Example <p>The example shows how JSON Pointers can be implicitly converted to strings.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // different JSON Pointers\n    json::json_pointer ptr1(\"/foo/0\");\n    json::json_pointer ptr2(\"/a~1b\");\n\n    // implicit conversion to string\n    std::string s;\n    s += ptr1;\n    s += \"\\n\";\n    s += ptr2;\n\n    std::cout &lt;&lt; s &lt;&lt; std::endl;\n}\n</code></pre> <p>Output:</p> <pre><code>/foo/0\n/a~1b\n</code></pre>"},{"location":"api/json_pointer/operator_string_t/#see-also","title":"See also","text":"<ul> <li>string_t- type for strings</li> </ul>"},{"location":"api/json_pointer/operator_string_t/#version-history","title":"Version history","text":"<ul> <li>Since version 2.0.0.</li> <li>Changed type to <code>string_t</code> and deprecated in version 3.11.0.</li> </ul>"},{"location":"api/json_pointer/parent_pointer/","title":"nlohmann::json_pointer::parent_pointer","text":"<pre><code>json_pointer parent_pointer() const;\n</code></pre> <p>Returns the parent of this JSON pointer.</p>"},{"location":"api/json_pointer/parent_pointer/#return-value","title":"Return value","text":"<p>Parent of this JSON pointer; in case this JSON pointer is the root, the root itself is returned.</p>"},{"location":"api/json_pointer/parent_pointer/#exception-safety","title":"Exception safety","text":"<p>No-throw guarantee: this function never throws exceptions.</p>"},{"location":"api/json_pointer/parent_pointer/#complexity","title":"Complexity","text":"<p>Linear in the length of the JSON pointer.</p>"},{"location":"api/json_pointer/parent_pointer/#examples","title":"Examples","text":"Example <p>The example shows the result of <code>parent_pointer</code> for different JSON Pointers.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // different JSON Pointers\n    json::json_pointer ptr1(\"\");\n    json::json_pointer ptr2(\"/foo\");\n    json::json_pointer ptr3(\"/foo/0\");\n\n    // call parent_pointer()\n    std::cout &lt;&lt; std::boolalpha\n              &lt;&lt; \"parent of \\\"\" &lt;&lt; ptr1 &lt;&lt; \"\\\" is \\\"\" &lt;&lt; ptr1.parent_pointer() &lt;&lt; \"\\\"\\n\"\n              &lt;&lt; \"parent of \\\"\" &lt;&lt; ptr2 &lt;&lt; \"\\\" is \\\"\" &lt;&lt; ptr2.parent_pointer() &lt;&lt; \"\\\"\\n\"\n              &lt;&lt; \"parent of \\\"\" &lt;&lt; ptr3 &lt;&lt; \"\\\" is \\\"\" &lt;&lt; ptr3.parent_pointer() &lt;&lt; \"\\\"\" &lt;&lt; std::endl;\n}\n</code></pre> <p>Output:</p> <pre><code>parent of \"\" is \"\"\nparent of \"/foo\" is \"\"\nparent of \"/foo/0\" is \"/foo\"\n</code></pre>"},{"location":"api/json_pointer/parent_pointer/#see-also","title":"See also","text":"<ul> <li>pop_back remove the last reference token</li> <li>back return the last reference token</li> </ul>"},{"location":"api/json_pointer/parent_pointer/#version-history","title":"Version history","text":"<p>Added in version 3.6.0.</p>"},{"location":"api/json_pointer/pop_back/","title":"nlohmann::json_pointer::pop_back","text":"<pre><code>void pop_back();\n</code></pre> <p>Remove the last reference token.</p>"},{"location":"api/json_pointer/pop_back/#exceptions","title":"Exceptions","text":"<p>Throws out_of_range.405 if the JSON pointer has no parent.</p>"},{"location":"api/json_pointer/pop_back/#complexity","title":"Complexity","text":"<p>Constant.</p>"},{"location":"api/json_pointer/pop_back/#examples","title":"Examples","text":"Example <p>The example shows the usage of <code>pop_back</code>.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create empty JSON Pointer\n    json::json_pointer ptr(\"/foo/bar/baz\");\n    std::cout &lt;&lt; \"\\\"\" &lt;&lt; ptr &lt;&lt; \"\\\"\\n\";\n\n    // call pop_back()\n    ptr.pop_back();\n    std::cout &lt;&lt; \"\\\"\" &lt;&lt; ptr &lt;&lt; \"\\\"\\n\";\n\n    ptr.pop_back();\n    std::cout &lt;&lt; \"\\\"\" &lt;&lt; ptr &lt;&lt; \"\\\"\\n\";\n\n    ptr.pop_back();\n    std::cout &lt;&lt; \"\\\"\" &lt;&lt; ptr &lt;&lt; \"\\\"\\n\";\n}\n</code></pre> <p>Output:</p> <pre><code>\"/foo/bar/baz\"\n\"/foo/bar\"\n\"/foo\"\n\"\"\n</code></pre>"},{"location":"api/json_pointer/pop_back/#version-history","title":"Version history","text":"<p>Added in version 3.6.0.</p>"},{"location":"api/json_pointer/pop_front/","title":"nlohmann::json_pointer::pop_front","text":"<pre><code>void pop_front();\n</code></pre> <p>Remove the first reference token.</p>"},{"location":"api/json_pointer/pop_front/#exceptions","title":"Exceptions","text":"<p>Throws out_of_range.405 if the JSON pointer has no parent.</p>"},{"location":"api/json_pointer/pop_front/#complexity","title":"Complexity","text":"<p>Linear in the number of reference tokens in the <code>json_pointer</code>.</p>"},{"location":"api/json_pointer/pop_front/#examples","title":"Examples","text":"Example <p>The example shows the usage of <code>pop_front</code>.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create empty JSON Pointer\n    json::json_pointer ptr(\"/foo/bar/baz\");\n    std::cout &lt;&lt; \"\\\"\" &lt;&lt; ptr &lt;&lt; \"\\\"\\n\";\n\n    // call pop_front()\n    ptr.pop_front();\n    std::cout &lt;&lt; \"\\\"\" &lt;&lt; ptr &lt;&lt; \"\\\"\\n\";\n\n    ptr.pop_front();\n    std::cout &lt;&lt; \"\\\"\" &lt;&lt; ptr &lt;&lt; \"\\\"\\n\";\n\n    ptr.pop_front();\n    std::cout &lt;&lt; \"\\\"\" &lt;&lt; ptr &lt;&lt; \"\\\"\\n\";\n}\n</code></pre> <p>Output:</p> <pre><code>\"/foo/bar/baz\"\n\"/bar/baz\"\n\"/baz\"\n\"\"\n</code></pre>"},{"location":"api/json_pointer/pop_front/#version-history","title":"Version history","text":"<ul> <li>Added in version 3.12.x.</li> </ul>"},{"location":"api/json_pointer/push_back/","title":"nlohmann::json_pointer::push_back","text":"<pre><code>void push_back(const string_t&amp; token);\n\nvoid push_back(string_t&amp;&amp; token);\n</code></pre> <p>Append an unescaped token at the end of the reference pointer.</p>"},{"location":"api/json_pointer/push_back/#parameters","title":"Parameters","text":"<code>token</code> (in) token to add"},{"location":"api/json_pointer/push_back/#complexity","title":"Complexity","text":"<p>Amortized constant.</p>"},{"location":"api/json_pointer/push_back/#examples","title":"Examples","text":"Example <p>The example shows the result of <code>push_back</code> for different JSON Pointers.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create empty JSON Pointer\n    json::json_pointer ptr;\n    std::cout &lt;&lt; \"\\\"\" &lt;&lt; ptr &lt;&lt; \"\\\"\\n\";\n\n    // call push_back()\n    ptr.push_back(\"foo\");\n    std::cout &lt;&lt; \"\\\"\" &lt;&lt; ptr &lt;&lt; \"\\\"\\n\";\n\n    ptr.push_back(\"0\");\n    std::cout &lt;&lt; \"\\\"\" &lt;&lt; ptr &lt;&lt; \"\\\"\\n\";\n\n    ptr.push_back(\"bar\");\n    std::cout &lt;&lt; \"\\\"\" &lt;&lt; ptr &lt;&lt; \"\\\"\\n\";\n}\n</code></pre> <p>Output:</p> <pre><code>\"\"\n\"/foo\"\n\"/foo/0\"\n\"/foo/0/bar\"\n</code></pre>"},{"location":"api/json_pointer/push_back/#version-history","title":"Version history","text":"<ul> <li>Added in version 3.6.0.</li> <li>Changed type of <code>token</code> to <code>string_t</code> in version 3.11.0.</li> </ul>"},{"location":"api/json_pointer/push_front/","title":"nlohmann::json_pointer::push_front","text":"<pre><code>void push_front(const string_t&amp; token);\n\nvoid push_front(string_t&amp;&amp; token);\n</code></pre> <p>Append an unescaped token at the start of the reference pointer.</p>"},{"location":"api/json_pointer/push_front/#parameters","title":"Parameters","text":"<code>token</code> (in) token to add"},{"location":"api/json_pointer/push_front/#complexity","title":"Complexity","text":"<p>Linear in the number of reference tokens in the <code>json_pointer</code>.</p>"},{"location":"api/json_pointer/push_front/#examples","title":"Examples","text":"Example <p>The example shows the result of <code>push_front</code> for different JSON Pointers.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create empty JSON Pointer\n    json::json_pointer ptr;\n    std::cout &lt;&lt; \"\\\"\" &lt;&lt; ptr &lt;&lt; \"\\\"\\n\";\n\n    // call push_front()\n    ptr.push_front(\"foo\");\n    std::cout &lt;&lt; \"\\\"\" &lt;&lt; ptr &lt;&lt; \"\\\"\\n\";\n\n    ptr.push_front(\"0\");\n    std::cout &lt;&lt; \"\\\"\" &lt;&lt; ptr &lt;&lt; \"\\\"\\n\";\n\n    ptr.push_front(\"bar\");\n    std::cout &lt;&lt; \"\\\"\" &lt;&lt; ptr &lt;&lt; \"\\\"\\n\";\n}\n</code></pre> <p>Output:</p> <pre><code>\"\"\n\"/foo\"\n\"/0/foo\"\n\"/bar/0/foo\"\n</code></pre>"},{"location":"api/json_pointer/push_front/#version-history","title":"Version history","text":"<ul> <li>Added in version 3.12.x.</li> </ul>"},{"location":"api/json_pointer/string_t/","title":"nlohmann::json_pointer::string_t","text":"<pre><code>using string_t = RefStringType;\n</code></pre> <p>The string type used for the reference tokens making up the JSON pointer.</p> <p>See <code>basic_json::string_t</code> for more information.</p>"},{"location":"api/json_pointer/string_t/#examples","title":"Examples","text":"Example <p>The example shows the type <code>string_t</code> and its relation to <code>basic_json::string_t</code>.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    json::json_pointer::string_t s = \"This is a string.\";\n\n    std::cout &lt;&lt; s &lt;&lt; std::endl;\n\n    std::cout &lt;&lt; std::boolalpha &lt;&lt; std::is_same&lt;json::json_pointer::string_t, json::string_t&gt;::value &lt;&lt; std::endl;\n}\n</code></pre> <p>Output:</p> <pre><code>This is a string.\ntrue\n</code></pre>"},{"location":"api/json_pointer/string_t/#version-history","title":"Version history","text":"<ul> <li>Added in version 3.11.0.</li> </ul>"},{"location":"api/json_pointer/to_string/","title":"nlohmann::json_pointer::to_string","text":"<pre><code>string_t to_string() const;\n</code></pre> <p>Return a string representation of the JSON pointer.</p>"},{"location":"api/json_pointer/to_string/#return-value","title":"Return value","text":"<p>A string representation of the JSON pointer</p>"},{"location":"api/json_pointer/to_string/#notes","title":"Notes","text":"<p>For each JSON pointer <code>ptr</code>, it holds:</p> <pre><code>ptr == json_pointer(ptr.to_string());\n</code></pre>"},{"location":"api/json_pointer/to_string/#examples","title":"Examples","text":"Example <p>The example shows the result of <code>to_string</code>.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // different JSON Pointers\n    json::json_pointer ptr1(\"\");\n    json::json_pointer ptr2(\"/foo\");\n    json::json_pointer ptr3(\"/foo/0\");\n    json::json_pointer ptr4(\"/\");\n    json::json_pointer ptr5(\"/a~1b\");\n    json::json_pointer ptr6(\"/c%d\");\n    json::json_pointer ptr7(\"/e^f\");\n    json::json_pointer ptr8(\"/g|h\");\n    json::json_pointer ptr9(\"/i\\\\j\");\n    json::json_pointer ptr10(\"/k\\\"l\");\n    json::json_pointer ptr11(\"/ \");\n    json::json_pointer ptr12(\"/m~0n\");\n\n    std::cout &lt;&lt; \"\\\"\" &lt;&lt; ptr1.to_string() &lt;&lt; \"\\\"\\n\"\n              &lt;&lt; \"\\\"\" &lt;&lt; ptr2.to_string() &lt;&lt; \"\\\"\\n\"\n              &lt;&lt; \"\\\"\" &lt;&lt; ptr3.to_string() &lt;&lt; \"\\\"\\n\"\n              &lt;&lt; \"\\\"\" &lt;&lt; ptr4.to_string() &lt;&lt; \"\\\"\\n\"\n              &lt;&lt; \"\\\"\" &lt;&lt; ptr5.to_string() &lt;&lt; \"\\\"\\n\"\n              &lt;&lt; \"\\\"\" &lt;&lt; ptr6.to_string() &lt;&lt; \"\\\"\\n\"\n              &lt;&lt; \"\\\"\" &lt;&lt; ptr7.to_string() &lt;&lt; \"\\\"\\n\"\n              &lt;&lt; \"\\\"\" &lt;&lt; ptr8.to_string() &lt;&lt; \"\\\"\\n\"\n              &lt;&lt; \"\\\"\" &lt;&lt; ptr9.to_string() &lt;&lt; \"\\\"\\n\"\n              &lt;&lt; \"\\\"\" &lt;&lt; ptr10.to_string() &lt;&lt; \"\\\"\\n\"\n              &lt;&lt; \"\\\"\" &lt;&lt; ptr11.to_string() &lt;&lt; \"\\\"\\n\"\n              &lt;&lt; \"\\\"\" &lt;&lt; ptr12.to_string() &lt;&lt; \"\\\"\" &lt;&lt; std::endl;\n}\n</code></pre> <p>Output:</p> <pre><code>\"\"\n\"/foo\"\n\"/foo/0\"\n\"/\"\n\"/a~1b\"\n\"/c%d\"\n\"/e^f\"\n\"/g|h\"\n\"/i\\j\"\n\"/k\"l\"\n\"/ \"\n\"/m~0n\"\n</code></pre>"},{"location":"api/json_pointer/to_string/#version-history","title":"Version history","text":"<ul> <li>Since version 2.0.0.</li> <li>Changed return type to <code>string_t</code> in version 3.11.0.</li> </ul>"},{"location":"api/json_sax/","title":"nlohmann::json_sax","text":"<pre><code>template&lt;typename BasicJsonType&gt;\nstruct json_sax;\n</code></pre> <p>This class describes the SAX interface used by sax_parse. Each function is called in different situations while the input is parsed. The boolean return value informs the parser whether to continue processing the input.</p>"},{"location":"api/json_sax/#template-parameters","title":"Template parameters","text":"<code>BasicJsonType</code> a specialization of <code>basic_json</code>"},{"location":"api/json_sax/#member-types","title":"Member types","text":"<ul> <li>number_integer_t - <code>BasicJsonType</code>'s type for numbers (integer)</li> <li>number_unsigned_t - <code>BasicJsonType</code>'s type for numbers (unsigned)</li> <li>number_float_t - <code>BasicJsonType</code>'s type for numbers (floating-point)</li> <li>string_t - <code>BasicJsonType</code>'s type for strings</li> <li>binary_t - <code>BasicJsonType</code>'s type for binary arrays</li> </ul>"},{"location":"api/json_sax/#member-functions","title":"Member functions","text":"<ul> <li>binary (virtual) - a binary value was read</li> <li>boolean (virtual) - a boolean value was read</li> <li>end_array (virtual) - the end of an array was read</li> <li>end_object (virtual) - the end of an object was read</li> <li>key (virtual) - an object key was read</li> <li>null (virtual) - a null value was read</li> <li>number_float (virtual) - a floating-point number was read</li> <li>number_integer (virtual) - an integer number was read</li> <li>number_unsigned (virtual) - an unsigned integer number was read</li> <li>parse_error (virtual) - a parse error occurred</li> <li>start_array (virtual) - the beginning of an array was read</li> <li>start_object (virtual) - the beginning of an object was read</li> <li>string (virtual) - a string value was read</li> </ul>"},{"location":"api/json_sax/#version-history","title":"Version history","text":"<ul> <li>Added in version 3.2.0.</li> <li>Support for binary values (<code>binary_t</code>, <code>binary</code>) added in version 3.8.0.</li> </ul>"},{"location":"api/json_sax/binary/","title":"nlohmann::json_sax::binary","text":"<pre><code>virtual bool binary(binary_t&amp; val) = 0;\n</code></pre> <p>A binary value was read.</p>"},{"location":"api/json_sax/binary/#parameters","title":"Parameters","text":"<code>val</code> (in) binary value"},{"location":"api/json_sax/binary/#return-value","title":"Return value","text":"<p>Whether parsing should proceed.</p>"},{"location":"api/json_sax/binary/#notes","title":"Notes","text":"<p>It is safe to move the passed binary value.</p>"},{"location":"api/json_sax/binary/#examples","title":"Examples","text":"Example <p>The example below shows how the SAX interface is used.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;iomanip&gt;\n#include &lt;sstream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\n// a simple event consumer that collects string representations of the passed\n// values; note inheriting from json::json_sax_t is not required, but can\n// help not to forget a required function\nclass sax_event_consumer : public json::json_sax_t\n{\n  public:\n    std::vector&lt;std::string&gt; events;\n\n    bool null() override\n    {\n        events.push_back(\"null()\");\n        return true;\n    }\n\n    bool boolean(bool val) override\n    {\n        events.push_back(\"boolean(val=\" + std::string(val ? \"true\" : \"false\") + \")\");\n        return true;\n    }\n\n    bool number_integer(number_integer_t val) override\n    {\n        events.push_back(\"number_integer(val=\" + std::to_string(val) + \")\");\n        return true;\n    }\n\n    bool number_unsigned(number_unsigned_t val) override\n    {\n        events.push_back(\"number_unsigned(val=\" + std::to_string(val) + \")\");\n        return true;\n    }\n\n    bool number_float(number_float_t val, const string_t&amp; s) override\n    {\n        events.push_back(\"number_float(val=\" + std::to_string(val) + \", s=\" + s + \")\");\n        return true;\n    }\n\n    bool string(string_t&amp; val) override\n    {\n        events.push_back(\"string(val=\" + val + \")\");\n        return true;\n    }\n\n    bool start_object(std::size_t elements) override\n    {\n        events.push_back(\"start_object(elements=\" + std::to_string(elements) + \")\");\n        return true;\n    }\n\n    bool end_object() override\n    {\n        events.push_back(\"end_object()\");\n        return true;\n    }\n\n    bool start_array(std::size_t elements) override\n    {\n        events.push_back(\"start_array(elements=\" + std::to_string(elements) + \")\");\n        return true;\n    }\n\n    bool end_array() override\n    {\n        events.push_back(\"end_array()\");\n        return true;\n    }\n\n    bool key(string_t&amp; val) override\n    {\n        events.push_back(\"key(val=\" + val + \")\");\n        return true;\n    }\n\n    bool binary(json::binary_t&amp; val) override\n    {\n        events.push_back(\"binary(val=[...])\");\n        return true;\n    }\n\n    bool parse_error(std::size_t position, const std::string&amp; last_token, const json::exception&amp; ex) override\n    {\n        events.push_back(\"parse_error(position=\" + std::to_string(position) + \", last_token=\" + last_token + \",\\n            ex=\" + std::string(ex.what()) + \")\");\n        return false;\n    }\n};\n\nint main()\n{\n    // CBOR byte string\n    std::vector&lt;std::uint8_t&gt; vec = {{0x44, 0xcA, 0xfe, 0xba, 0xbe}};\n\n    // create a SAX event consumer object\n    sax_event_consumer sec;\n\n    // parse CBOR\n    bool result = json::sax_parse(vec, &amp;sec, json::input_format_t::cbor);\n\n    // output the recorded events\n    for (auto&amp; event : sec.events)\n    {\n        std::cout &lt;&lt; event &lt;&lt; \"\\n\";\n    }\n\n    // output the result of sax_parse\n    std::cout &lt;&lt; \"\\nresult: \" &lt;&lt; std::boolalpha &lt;&lt; result &lt;&lt; std::endl;\n}\n</code></pre> <p>Output:</p> <pre><code>binary(val=[...])\n\nresult: true\n</code></pre>"},{"location":"api/json_sax/binary/#version-history","title":"Version history","text":"<ul> <li>Added in version 3.8.0.</li> </ul>"},{"location":"api/json_sax/boolean/","title":"nlohmann::json_sax::boolean","text":"<pre><code>virtual bool boolean(bool val) = 0;\n</code></pre> <p>A boolean value was read.</p>"},{"location":"api/json_sax/boolean/#parameters","title":"Parameters","text":"<code>val</code> (in) boolean value"},{"location":"api/json_sax/boolean/#return-value","title":"Return value","text":"<p>Whether parsing should proceed.</p>"},{"location":"api/json_sax/boolean/#examples","title":"Examples","text":"Example <p>The example below shows how the SAX interface is used.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;iomanip&gt;\n#include &lt;sstream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\n// a simple event consumer that collects string representations of the passed\n// values; note inheriting from json::json_sax_t is not required, but can\n// help not to forget a required function\nclass sax_event_consumer : public json::json_sax_t\n{\n  public:\n    std::vector&lt;std::string&gt; events;\n\n    bool null() override\n    {\n        events.push_back(\"null()\");\n        return true;\n    }\n\n    bool boolean(bool val) override\n    {\n        events.push_back(\"boolean(val=\" + std::string(val ? \"true\" : \"false\") + \")\");\n        return true;\n    }\n\n    bool number_integer(number_integer_t val) override\n    {\n        events.push_back(\"number_integer(val=\" + std::to_string(val) + \")\");\n        return true;\n    }\n\n    bool number_unsigned(number_unsigned_t val) override\n    {\n        events.push_back(\"number_unsigned(val=\" + std::to_string(val) + \")\");\n        return true;\n    }\n\n    bool number_float(number_float_t val, const string_t&amp; s) override\n    {\n        events.push_back(\"number_float(val=\" + std::to_string(val) + \", s=\" + s + \")\");\n        return true;\n    }\n\n    bool string(string_t&amp; val) override\n    {\n        events.push_back(\"string(val=\" + val + \")\");\n        return true;\n    }\n\n    bool start_object(std::size_t elements) override\n    {\n        events.push_back(\"start_object(elements=\" + std::to_string(elements) + \")\");\n        return true;\n    }\n\n    bool end_object() override\n    {\n        events.push_back(\"end_object()\");\n        return true;\n    }\n\n    bool start_array(std::size_t elements) override\n    {\n        events.push_back(\"start_array(elements=\" + std::to_string(elements) + \")\");\n        return true;\n    }\n\n    bool end_array() override\n    {\n        events.push_back(\"end_array()\");\n        return true;\n    }\n\n    bool key(string_t&amp; val) override\n    {\n        events.push_back(\"key(val=\" + val + \")\");\n        return true;\n    }\n\n    bool binary(json::binary_t&amp; val) override\n    {\n        events.push_back(\"binary(val=[...])\");\n        return true;\n    }\n\n    bool parse_error(std::size_t position, const std::string&amp; last_token, const json::exception&amp; ex) override\n    {\n        events.push_back(\"parse_error(position=\" + std::to_string(position) + \", last_token=\" + last_token + \",\\n            ex=\" + std::string(ex.what()) + \")\");\n        return false;\n    }\n};\n\nint main()\n{\n    // a JSON text\n    auto text = R\"(\n    {\n        \"Image\": {\n            \"Width\":  800,\n            \"Height\": 600,\n            \"Title\":  \"View from 15th Floor\",\n            \"Thumbnail\": {\n                \"Url\":    \"http://www.example.com/image/481989943\",\n                \"Height\": 125,\n                \"Width\":  100\n            },\n            \"Animated\" : false,\n            \"IDs\": [116, 943, 234, -38793],\n            \"DeletionDate\": null,\n            \"Distance\": 12.723374634\n        }\n    }]\n    )\";\n\n    // create a SAX event consumer object\n    sax_event_consumer sec;\n\n    // parse JSON\n    bool result = json::sax_parse(text, &amp;sec);\n\n    // output the recorded events\n    for (auto&amp; event : sec.events)\n    {\n        std::cout &lt;&lt; event &lt;&lt; \"\\n\";\n    }\n\n    // output the result of sax_parse\n    std::cout &lt;&lt; \"\\nresult: \" &lt;&lt; std::boolalpha &lt;&lt; result &lt;&lt; std::endl;\n}\n</code></pre> <p>Output:</p> <pre><code>start_object(elements=18446744073709551615)\nkey(val=Image)\nstart_object(elements=18446744073709551615)\nkey(val=Width)\nnumber_unsigned(val=800)\nkey(val=Height)\nnumber_unsigned(val=600)\nkey(val=Title)\nstring(val=View from 15th Floor)\nkey(val=Thumbnail)\nstart_object(elements=18446744073709551615)\nkey(val=Url)\nstring(val=http://www.example.com/image/481989943)\nkey(val=Height)\nnumber_unsigned(val=125)\nkey(val=Width)\nnumber_unsigned(val=100)\nend_object()\nkey(val=Animated)\nboolean(val=false)\nkey(val=IDs)\nstart_array(elements=18446744073709551615)\nnumber_unsigned(val=116)\nnumber_unsigned(val=943)\nnumber_unsigned(val=234)\nnumber_integer(val=-38793)\nend_array()\nkey(val=DeletionDate)\nnull()\nkey(val=Distance)\nnumber_float(val=12.723375, s=12.723374634)\nend_object()\nend_object()\nparse_error(position=460, last_token=12.723374634&lt;U+000A&gt;        }&lt;U+000A&gt;    }],\n            ex=[json.exception.parse_error.101] parse error at line 17, column 6: syntax error while parsing value - unexpected ']'; expected end of input)\n\nresult: false\n</code></pre>"},{"location":"api/json_sax/boolean/#version-history","title":"Version history","text":"<ul> <li>Added in version 3.2.0.</li> </ul>"},{"location":"api/json_sax/end_array/","title":"nlohmann::json_sax::end_array","text":"<pre><code>virtual bool end_array() = 0;\n</code></pre> <p>The end of an array was read.</p>"},{"location":"api/json_sax/end_array/#return-value","title":"Return value","text":"<p>Whether parsing should proceed.</p>"},{"location":"api/json_sax/end_array/#examples","title":"Examples","text":"Example <p>The example below shows how the SAX interface is used.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;iomanip&gt;\n#include &lt;sstream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\n// a simple event consumer that collects string representations of the passed\n// values; note inheriting from json::json_sax_t is not required, but can\n// help not to forget a required function\nclass sax_event_consumer : public json::json_sax_t\n{\n  public:\n    std::vector&lt;std::string&gt; events;\n\n    bool null() override\n    {\n        events.push_back(\"null()\");\n        return true;\n    }\n\n    bool boolean(bool val) override\n    {\n        events.push_back(\"boolean(val=\" + std::string(val ? \"true\" : \"false\") + \")\");\n        return true;\n    }\n\n    bool number_integer(number_integer_t val) override\n    {\n        events.push_back(\"number_integer(val=\" + std::to_string(val) + \")\");\n        return true;\n    }\n\n    bool number_unsigned(number_unsigned_t val) override\n    {\n        events.push_back(\"number_unsigned(val=\" + std::to_string(val) + \")\");\n        return true;\n    }\n\n    bool number_float(number_float_t val, const string_t&amp; s) override\n    {\n        events.push_back(\"number_float(val=\" + std::to_string(val) + \", s=\" + s + \")\");\n        return true;\n    }\n\n    bool string(string_t&amp; val) override\n    {\n        events.push_back(\"string(val=\" + val + \")\");\n        return true;\n    }\n\n    bool start_object(std::size_t elements) override\n    {\n        events.push_back(\"start_object(elements=\" + std::to_string(elements) + \")\");\n        return true;\n    }\n\n    bool end_object() override\n    {\n        events.push_back(\"end_object()\");\n        return true;\n    }\n\n    bool start_array(std::size_t elements) override\n    {\n        events.push_back(\"start_array(elements=\" + std::to_string(elements) + \")\");\n        return true;\n    }\n\n    bool end_array() override\n    {\n        events.push_back(\"end_array()\");\n        return true;\n    }\n\n    bool key(string_t&amp; val) override\n    {\n        events.push_back(\"key(val=\" + val + \")\");\n        return true;\n    }\n\n    bool binary(json::binary_t&amp; val) override\n    {\n        events.push_back(\"binary(val=[...])\");\n        return true;\n    }\n\n    bool parse_error(std::size_t position, const std::string&amp; last_token, const json::exception&amp; ex) override\n    {\n        events.push_back(\"parse_error(position=\" + std::to_string(position) + \", last_token=\" + last_token + \",\\n            ex=\" + std::string(ex.what()) + \")\");\n        return false;\n    }\n};\n\nint main()\n{\n    // a JSON text\n    auto text = R\"(\n    {\n        \"Image\": {\n            \"Width\":  800,\n            \"Height\": 600,\n            \"Title\":  \"View from 15th Floor\",\n            \"Thumbnail\": {\n                \"Url\":    \"http://www.example.com/image/481989943\",\n                \"Height\": 125,\n                \"Width\":  100\n            },\n            \"Animated\" : false,\n            \"IDs\": [116, 943, 234, -38793],\n            \"DeletionDate\": null,\n            \"Distance\": 12.723374634\n        }\n    }]\n    )\";\n\n    // create a SAX event consumer object\n    sax_event_consumer sec;\n\n    // parse JSON\n    bool result = json::sax_parse(text, &amp;sec);\n\n    // output the recorded events\n    for (auto&amp; event : sec.events)\n    {\n        std::cout &lt;&lt; event &lt;&lt; \"\\n\";\n    }\n\n    // output the result of sax_parse\n    std::cout &lt;&lt; \"\\nresult: \" &lt;&lt; std::boolalpha &lt;&lt; result &lt;&lt; std::endl;\n}\n</code></pre> <p>Output:</p> <pre><code>start_object(elements=18446744073709551615)\nkey(val=Image)\nstart_object(elements=18446744073709551615)\nkey(val=Width)\nnumber_unsigned(val=800)\nkey(val=Height)\nnumber_unsigned(val=600)\nkey(val=Title)\nstring(val=View from 15th Floor)\nkey(val=Thumbnail)\nstart_object(elements=18446744073709551615)\nkey(val=Url)\nstring(val=http://www.example.com/image/481989943)\nkey(val=Height)\nnumber_unsigned(val=125)\nkey(val=Width)\nnumber_unsigned(val=100)\nend_object()\nkey(val=Animated)\nboolean(val=false)\nkey(val=IDs)\nstart_array(elements=18446744073709551615)\nnumber_unsigned(val=116)\nnumber_unsigned(val=943)\nnumber_unsigned(val=234)\nnumber_integer(val=-38793)\nend_array()\nkey(val=DeletionDate)\nnull()\nkey(val=Distance)\nnumber_float(val=12.723375, s=12.723374634)\nend_object()\nend_object()\nparse_error(position=460, last_token=12.723374634&lt;U+000A&gt;        }&lt;U+000A&gt;    }],\n            ex=[json.exception.parse_error.101] parse error at line 17, column 6: syntax error while parsing value - unexpected ']'; expected end of input)\n\nresult: false\n</code></pre>"},{"location":"api/json_sax/end_array/#version-history","title":"Version history","text":"<ul> <li>Added in version 3.2.0.</li> </ul>"},{"location":"api/json_sax/end_object/","title":"nlohmann::json_sax::end_object","text":"<pre><code>virtual bool end_object() = 0;\n</code></pre> <p>The end of an object was read.</p>"},{"location":"api/json_sax/end_object/#return-value","title":"Return value","text":"<p>Whether parsing should proceed.</p>"},{"location":"api/json_sax/end_object/#examples","title":"Examples","text":"Example <p>The example below shows how the SAX interface is used.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;iomanip&gt;\n#include &lt;sstream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\n// a simple event consumer that collects string representations of the passed\n// values; note inheriting from json::json_sax_t is not required, but can\n// help not to forget a required function\nclass sax_event_consumer : public json::json_sax_t\n{\n  public:\n    std::vector&lt;std::string&gt; events;\n\n    bool null() override\n    {\n        events.push_back(\"null()\");\n        return true;\n    }\n\n    bool boolean(bool val) override\n    {\n        events.push_back(\"boolean(val=\" + std::string(val ? \"true\" : \"false\") + \")\");\n        return true;\n    }\n\n    bool number_integer(number_integer_t val) override\n    {\n        events.push_back(\"number_integer(val=\" + std::to_string(val) + \")\");\n        return true;\n    }\n\n    bool number_unsigned(number_unsigned_t val) override\n    {\n        events.push_back(\"number_unsigned(val=\" + std::to_string(val) + \")\");\n        return true;\n    }\n\n    bool number_float(number_float_t val, const string_t&amp; s) override\n    {\n        events.push_back(\"number_float(val=\" + std::to_string(val) + \", s=\" + s + \")\");\n        return true;\n    }\n\n    bool string(string_t&amp; val) override\n    {\n        events.push_back(\"string(val=\" + val + \")\");\n        return true;\n    }\n\n    bool start_object(std::size_t elements) override\n    {\n        events.push_back(\"start_object(elements=\" + std::to_string(elements) + \")\");\n        return true;\n    }\n\n    bool end_object() override\n    {\n        events.push_back(\"end_object()\");\n        return true;\n    }\n\n    bool start_array(std::size_t elements) override\n    {\n        events.push_back(\"start_array(elements=\" + std::to_string(elements) + \")\");\n        return true;\n    }\n\n    bool end_array() override\n    {\n        events.push_back(\"end_array()\");\n        return true;\n    }\n\n    bool key(string_t&amp; val) override\n    {\n        events.push_back(\"key(val=\" + val + \")\");\n        return true;\n    }\n\n    bool binary(json::binary_t&amp; val) override\n    {\n        events.push_back(\"binary(val=[...])\");\n        return true;\n    }\n\n    bool parse_error(std::size_t position, const std::string&amp; last_token, const json::exception&amp; ex) override\n    {\n        events.push_back(\"parse_error(position=\" + std::to_string(position) + \", last_token=\" + last_token + \",\\n            ex=\" + std::string(ex.what()) + \")\");\n        return false;\n    }\n};\n\nint main()\n{\n    // a JSON text\n    auto text = R\"(\n    {\n        \"Image\": {\n            \"Width\":  800,\n            \"Height\": 600,\n            \"Title\":  \"View from 15th Floor\",\n            \"Thumbnail\": {\n                \"Url\":    \"http://www.example.com/image/481989943\",\n                \"Height\": 125,\n                \"Width\":  100\n            },\n            \"Animated\" : false,\n            \"IDs\": [116, 943, 234, -38793],\n            \"DeletionDate\": null,\n            \"Distance\": 12.723374634\n        }\n    }]\n    )\";\n\n    // create a SAX event consumer object\n    sax_event_consumer sec;\n\n    // parse JSON\n    bool result = json::sax_parse(text, &amp;sec);\n\n    // output the recorded events\n    for (auto&amp; event : sec.events)\n    {\n        std::cout &lt;&lt; event &lt;&lt; \"\\n\";\n    }\n\n    // output the result of sax_parse\n    std::cout &lt;&lt; \"\\nresult: \" &lt;&lt; std::boolalpha &lt;&lt; result &lt;&lt; std::endl;\n}\n</code></pre> <p>Output:</p> <pre><code>start_object(elements=18446744073709551615)\nkey(val=Image)\nstart_object(elements=18446744073709551615)\nkey(val=Width)\nnumber_unsigned(val=800)\nkey(val=Height)\nnumber_unsigned(val=600)\nkey(val=Title)\nstring(val=View from 15th Floor)\nkey(val=Thumbnail)\nstart_object(elements=18446744073709551615)\nkey(val=Url)\nstring(val=http://www.example.com/image/481989943)\nkey(val=Height)\nnumber_unsigned(val=125)\nkey(val=Width)\nnumber_unsigned(val=100)\nend_object()\nkey(val=Animated)\nboolean(val=false)\nkey(val=IDs)\nstart_array(elements=18446744073709551615)\nnumber_unsigned(val=116)\nnumber_unsigned(val=943)\nnumber_unsigned(val=234)\nnumber_integer(val=-38793)\nend_array()\nkey(val=DeletionDate)\nnull()\nkey(val=Distance)\nnumber_float(val=12.723375, s=12.723374634)\nend_object()\nend_object()\nparse_error(position=460, last_token=12.723374634&lt;U+000A&gt;        }&lt;U+000A&gt;    }],\n            ex=[json.exception.parse_error.101] parse error at line 17, column 6: syntax error while parsing value - unexpected ']'; expected end of input)\n\nresult: false\n</code></pre>"},{"location":"api/json_sax/end_object/#version-history","title":"Version history","text":"<ul> <li>Added in version 3.2.0.</li> </ul>"},{"location":"api/json_sax/key/","title":"nlohmann::json_sax::key","text":"<pre><code>virtual bool key(string_t&amp; val) = 0;\n</code></pre> <p>An object key was read.</p>"},{"location":"api/json_sax/key/#parameters","title":"Parameters","text":"<code>val</code> (in) object key"},{"location":"api/json_sax/key/#return-value","title":"Return value","text":"<p>Whether parsing should proceed.</p>"},{"location":"api/json_sax/key/#notes","title":"Notes","text":"<p>It is safe to move the passed object key value.</p>"},{"location":"api/json_sax/key/#examples","title":"Examples","text":"Example <p>The example below shows how the SAX interface is used.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;iomanip&gt;\n#include &lt;sstream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\n// a simple event consumer that collects string representations of the passed\n// values; note inheriting from json::json_sax_t is not required, but can\n// help not to forget a required function\nclass sax_event_consumer : public json::json_sax_t\n{\n  public:\n    std::vector&lt;std::string&gt; events;\n\n    bool null() override\n    {\n        events.push_back(\"null()\");\n        return true;\n    }\n\n    bool boolean(bool val) override\n    {\n        events.push_back(\"boolean(val=\" + std::string(val ? \"true\" : \"false\") + \")\");\n        return true;\n    }\n\n    bool number_integer(number_integer_t val) override\n    {\n        events.push_back(\"number_integer(val=\" + std::to_string(val) + \")\");\n        return true;\n    }\n\n    bool number_unsigned(number_unsigned_t val) override\n    {\n        events.push_back(\"number_unsigned(val=\" + std::to_string(val) + \")\");\n        return true;\n    }\n\n    bool number_float(number_float_t val, const string_t&amp; s) override\n    {\n        events.push_back(\"number_float(val=\" + std::to_string(val) + \", s=\" + s + \")\");\n        return true;\n    }\n\n    bool string(string_t&amp; val) override\n    {\n        events.push_back(\"string(val=\" + val + \")\");\n        return true;\n    }\n\n    bool start_object(std::size_t elements) override\n    {\n        events.push_back(\"start_object(elements=\" + std::to_string(elements) + \")\");\n        return true;\n    }\n\n    bool end_object() override\n    {\n        events.push_back(\"end_object()\");\n        return true;\n    }\n\n    bool start_array(std::size_t elements) override\n    {\n        events.push_back(\"start_array(elements=\" + std::to_string(elements) + \")\");\n        return true;\n    }\n\n    bool end_array() override\n    {\n        events.push_back(\"end_array()\");\n        return true;\n    }\n\n    bool key(string_t&amp; val) override\n    {\n        events.push_back(\"key(val=\" + val + \")\");\n        return true;\n    }\n\n    bool binary(json::binary_t&amp; val) override\n    {\n        events.push_back(\"binary(val=[...])\");\n        return true;\n    }\n\n    bool parse_error(std::size_t position, const std::string&amp; last_token, const json::exception&amp; ex) override\n    {\n        events.push_back(\"parse_error(position=\" + std::to_string(position) + \", last_token=\" + last_token + \",\\n            ex=\" + std::string(ex.what()) + \")\");\n        return false;\n    }\n};\n\nint main()\n{\n    // a JSON text\n    auto text = R\"(\n    {\n        \"Image\": {\n            \"Width\":  800,\n            \"Height\": 600,\n            \"Title\":  \"View from 15th Floor\",\n            \"Thumbnail\": {\n                \"Url\":    \"http://www.example.com/image/481989943\",\n                \"Height\": 125,\n                \"Width\":  100\n            },\n            \"Animated\" : false,\n            \"IDs\": [116, 943, 234, -38793],\n            \"DeletionDate\": null,\n            \"Distance\": 12.723374634\n        }\n    }]\n    )\";\n\n    // create a SAX event consumer object\n    sax_event_consumer sec;\n\n    // parse JSON\n    bool result = json::sax_parse(text, &amp;sec);\n\n    // output the recorded events\n    for (auto&amp; event : sec.events)\n    {\n        std::cout &lt;&lt; event &lt;&lt; \"\\n\";\n    }\n\n    // output the result of sax_parse\n    std::cout &lt;&lt; \"\\nresult: \" &lt;&lt; std::boolalpha &lt;&lt; result &lt;&lt; std::endl;\n}\n</code></pre> <p>Output:</p> <pre><code>start_object(elements=18446744073709551615)\nkey(val=Image)\nstart_object(elements=18446744073709551615)\nkey(val=Width)\nnumber_unsigned(val=800)\nkey(val=Height)\nnumber_unsigned(val=600)\nkey(val=Title)\nstring(val=View from 15th Floor)\nkey(val=Thumbnail)\nstart_object(elements=18446744073709551615)\nkey(val=Url)\nstring(val=http://www.example.com/image/481989943)\nkey(val=Height)\nnumber_unsigned(val=125)\nkey(val=Width)\nnumber_unsigned(val=100)\nend_object()\nkey(val=Animated)\nboolean(val=false)\nkey(val=IDs)\nstart_array(elements=18446744073709551615)\nnumber_unsigned(val=116)\nnumber_unsigned(val=943)\nnumber_unsigned(val=234)\nnumber_integer(val=-38793)\nend_array()\nkey(val=DeletionDate)\nnull()\nkey(val=Distance)\nnumber_float(val=12.723375, s=12.723374634)\nend_object()\nend_object()\nparse_error(position=460, last_token=12.723374634&lt;U+000A&gt;        }&lt;U+000A&gt;    }],\n            ex=[json.exception.parse_error.101] parse error at line 17, column 6: syntax error while parsing value - unexpected ']'; expected end of input)\n\nresult: false\n</code></pre>"},{"location":"api/json_sax/key/#version-history","title":"Version history","text":"<ul> <li>Added in version 3.2.0.</li> </ul>"},{"location":"api/json_sax/null/","title":"nlohmann::json_sax::null","text":"<pre><code>virtual bool null() = 0;\n</code></pre> <p>A null value was read.</p>"},{"location":"api/json_sax/null/#return-value","title":"Return value","text":"<p>Whether parsing should proceed.</p>"},{"location":"api/json_sax/null/#examples","title":"Examples","text":"Example <p>The example below shows how the SAX interface is used.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;iomanip&gt;\n#include &lt;sstream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\n// a simple event consumer that collects string representations of the passed\n// values; note inheriting from json::json_sax_t is not required, but can\n// help not to forget a required function\nclass sax_event_consumer : public json::json_sax_t\n{\n  public:\n    std::vector&lt;std::string&gt; events;\n\n    bool null() override\n    {\n        events.push_back(\"null()\");\n        return true;\n    }\n\n    bool boolean(bool val) override\n    {\n        events.push_back(\"boolean(val=\" + std::string(val ? \"true\" : \"false\") + \")\");\n        return true;\n    }\n\n    bool number_integer(number_integer_t val) override\n    {\n        events.push_back(\"number_integer(val=\" + std::to_string(val) + \")\");\n        return true;\n    }\n\n    bool number_unsigned(number_unsigned_t val) override\n    {\n        events.push_back(\"number_unsigned(val=\" + std::to_string(val) + \")\");\n        return true;\n    }\n\n    bool number_float(number_float_t val, const string_t&amp; s) override\n    {\n        events.push_back(\"number_float(val=\" + std::to_string(val) + \", s=\" + s + \")\");\n        return true;\n    }\n\n    bool string(string_t&amp; val) override\n    {\n        events.push_back(\"string(val=\" + val + \")\");\n        return true;\n    }\n\n    bool start_object(std::size_t elements) override\n    {\n        events.push_back(\"start_object(elements=\" + std::to_string(elements) + \")\");\n        return true;\n    }\n\n    bool end_object() override\n    {\n        events.push_back(\"end_object()\");\n        return true;\n    }\n\n    bool start_array(std::size_t elements) override\n    {\n        events.push_back(\"start_array(elements=\" + std::to_string(elements) + \")\");\n        return true;\n    }\n\n    bool end_array() override\n    {\n        events.push_back(\"end_array()\");\n        return true;\n    }\n\n    bool key(string_t&amp; val) override\n    {\n        events.push_back(\"key(val=\" + val + \")\");\n        return true;\n    }\n\n    bool binary(json::binary_t&amp; val) override\n    {\n        events.push_back(\"binary(val=[...])\");\n        return true;\n    }\n\n    bool parse_error(std::size_t position, const std::string&amp; last_token, const json::exception&amp; ex) override\n    {\n        events.push_back(\"parse_error(position=\" + std::to_string(position) + \", last_token=\" + last_token + \",\\n            ex=\" + std::string(ex.what()) + \")\");\n        return false;\n    }\n};\n\nint main()\n{\n    // a JSON text\n    auto text = R\"(\n    {\n        \"Image\": {\n            \"Width\":  800,\n            \"Height\": 600,\n            \"Title\":  \"View from 15th Floor\",\n            \"Thumbnail\": {\n                \"Url\":    \"http://www.example.com/image/481989943\",\n                \"Height\": 125,\n                \"Width\":  100\n            },\n            \"Animated\" : false,\n            \"IDs\": [116, 943, 234, -38793],\n            \"DeletionDate\": null,\n            \"Distance\": 12.723374634\n        }\n    }]\n    )\";\n\n    // create a SAX event consumer object\n    sax_event_consumer sec;\n\n    // parse JSON\n    bool result = json::sax_parse(text, &amp;sec);\n\n    // output the recorded events\n    for (auto&amp; event : sec.events)\n    {\n        std::cout &lt;&lt; event &lt;&lt; \"\\n\";\n    }\n\n    // output the result of sax_parse\n    std::cout &lt;&lt; \"\\nresult: \" &lt;&lt; std::boolalpha &lt;&lt; result &lt;&lt; std::endl;\n}\n</code></pre> <p>Output:</p> <pre><code>start_object(elements=18446744073709551615)\nkey(val=Image)\nstart_object(elements=18446744073709551615)\nkey(val=Width)\nnumber_unsigned(val=800)\nkey(val=Height)\nnumber_unsigned(val=600)\nkey(val=Title)\nstring(val=View from 15th Floor)\nkey(val=Thumbnail)\nstart_object(elements=18446744073709551615)\nkey(val=Url)\nstring(val=http://www.example.com/image/481989943)\nkey(val=Height)\nnumber_unsigned(val=125)\nkey(val=Width)\nnumber_unsigned(val=100)\nend_object()\nkey(val=Animated)\nboolean(val=false)\nkey(val=IDs)\nstart_array(elements=18446744073709551615)\nnumber_unsigned(val=116)\nnumber_unsigned(val=943)\nnumber_unsigned(val=234)\nnumber_integer(val=-38793)\nend_array()\nkey(val=DeletionDate)\nnull()\nkey(val=Distance)\nnumber_float(val=12.723375, s=12.723374634)\nend_object()\nend_object()\nparse_error(position=460, last_token=12.723374634&lt;U+000A&gt;        }&lt;U+000A&gt;    }],\n            ex=[json.exception.parse_error.101] parse error at line 17, column 6: syntax error while parsing value - unexpected ']'; expected end of input)\n\nresult: false\n</code></pre>"},{"location":"api/json_sax/null/#version-history","title":"Version history","text":"<ul> <li>Added in version 3.2.0.</li> </ul>"},{"location":"api/json_sax/number_float/","title":"nlohmann::json_sax::number_float","text":"<pre><code>virtual bool number_float(number_float_t val, const string_t&amp; s) = 0;\n</code></pre> <p>A floating-point number was read.</p>"},{"location":"api/json_sax/number_float/#parameters","title":"Parameters","text":"<code>val</code> (in) floating-point value <code>s</code> (in) string representation of the original input"},{"location":"api/json_sax/number_float/#return-value","title":"Return value","text":"<p>Whether parsing should proceed.</p>"},{"location":"api/json_sax/number_float/#examples","title":"Examples","text":"Example <p>The example below shows how the SAX interface is used.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;iomanip&gt;\n#include &lt;sstream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\n// a simple event consumer that collects string representations of the passed\n// values; note inheriting from json::json_sax_t is not required, but can\n// help not to forget a required function\nclass sax_event_consumer : public json::json_sax_t\n{\n  public:\n    std::vector&lt;std::string&gt; events;\n\n    bool null() override\n    {\n        events.push_back(\"null()\");\n        return true;\n    }\n\n    bool boolean(bool val) override\n    {\n        events.push_back(\"boolean(val=\" + std::string(val ? \"true\" : \"false\") + \")\");\n        return true;\n    }\n\n    bool number_integer(number_integer_t val) override\n    {\n        events.push_back(\"number_integer(val=\" + std::to_string(val) + \")\");\n        return true;\n    }\n\n    bool number_unsigned(number_unsigned_t val) override\n    {\n        events.push_back(\"number_unsigned(val=\" + std::to_string(val) + \")\");\n        return true;\n    }\n\n    bool number_float(number_float_t val, const string_t&amp; s) override\n    {\n        events.push_back(\"number_float(val=\" + std::to_string(val) + \", s=\" + s + \")\");\n        return true;\n    }\n\n    bool string(string_t&amp; val) override\n    {\n        events.push_back(\"string(val=\" + val + \")\");\n        return true;\n    }\n\n    bool start_object(std::size_t elements) override\n    {\n        events.push_back(\"start_object(elements=\" + std::to_string(elements) + \")\");\n        return true;\n    }\n\n    bool end_object() override\n    {\n        events.push_back(\"end_object()\");\n        return true;\n    }\n\n    bool start_array(std::size_t elements) override\n    {\n        events.push_back(\"start_array(elements=\" + std::to_string(elements) + \")\");\n        return true;\n    }\n\n    bool end_array() override\n    {\n        events.push_back(\"end_array()\");\n        return true;\n    }\n\n    bool key(string_t&amp; val) override\n    {\n        events.push_back(\"key(val=\" + val + \")\");\n        return true;\n    }\n\n    bool binary(json::binary_t&amp; val) override\n    {\n        events.push_back(\"binary(val=[...])\");\n        return true;\n    }\n\n    bool parse_error(std::size_t position, const std::string&amp; last_token, const json::exception&amp; ex) override\n    {\n        events.push_back(\"parse_error(position=\" + std::to_string(position) + \", last_token=\" + last_token + \",\\n            ex=\" + std::string(ex.what()) + \")\");\n        return false;\n    }\n};\n\nint main()\n{\n    // a JSON text\n    auto text = R\"(\n    {\n        \"Image\": {\n            \"Width\":  800,\n            \"Height\": 600,\n            \"Title\":  \"View from 15th Floor\",\n            \"Thumbnail\": {\n                \"Url\":    \"http://www.example.com/image/481989943\",\n                \"Height\": 125,\n                \"Width\":  100\n            },\n            \"Animated\" : false,\n            \"IDs\": [116, 943, 234, -38793],\n            \"DeletionDate\": null,\n            \"Distance\": 12.723374634\n        }\n    }]\n    )\";\n\n    // create a SAX event consumer object\n    sax_event_consumer sec;\n\n    // parse JSON\n    bool result = json::sax_parse(text, &amp;sec);\n\n    // output the recorded events\n    for (auto&amp; event : sec.events)\n    {\n        std::cout &lt;&lt; event &lt;&lt; \"\\n\";\n    }\n\n    // output the result of sax_parse\n    std::cout &lt;&lt; \"\\nresult: \" &lt;&lt; std::boolalpha &lt;&lt; result &lt;&lt; std::endl;\n}\n</code></pre> <p>Output:</p> <pre><code>start_object(elements=18446744073709551615)\nkey(val=Image)\nstart_object(elements=18446744073709551615)\nkey(val=Width)\nnumber_unsigned(val=800)\nkey(val=Height)\nnumber_unsigned(val=600)\nkey(val=Title)\nstring(val=View from 15th Floor)\nkey(val=Thumbnail)\nstart_object(elements=18446744073709551615)\nkey(val=Url)\nstring(val=http://www.example.com/image/481989943)\nkey(val=Height)\nnumber_unsigned(val=125)\nkey(val=Width)\nnumber_unsigned(val=100)\nend_object()\nkey(val=Animated)\nboolean(val=false)\nkey(val=IDs)\nstart_array(elements=18446744073709551615)\nnumber_unsigned(val=116)\nnumber_unsigned(val=943)\nnumber_unsigned(val=234)\nnumber_integer(val=-38793)\nend_array()\nkey(val=DeletionDate)\nnull()\nkey(val=Distance)\nnumber_float(val=12.723375, s=12.723374634)\nend_object()\nend_object()\nparse_error(position=460, last_token=12.723374634&lt;U+000A&gt;        }&lt;U+000A&gt;    }],\n            ex=[json.exception.parse_error.101] parse error at line 17, column 6: syntax error while parsing value - unexpected ']'; expected end of input)\n\nresult: false\n</code></pre>"},{"location":"api/json_sax/number_float/#version-history","title":"Version history","text":"<ul> <li>Added in version 3.2.0.</li> </ul>"},{"location":"api/json_sax/number_integer/","title":"nlohmann::json_sax::number_integer","text":"<pre><code>virtual bool number_integer(number_integer_t val) = 0;\n</code></pre> <p>An integer number was read.</p>"},{"location":"api/json_sax/number_integer/#parameters","title":"Parameters","text":"<code>val</code> (in) integer value"},{"location":"api/json_sax/number_integer/#return-value","title":"Return value","text":"<p>Whether parsing should proceed.</p>"},{"location":"api/json_sax/number_integer/#examples","title":"Examples","text":"Example <p>The example below shows how the SAX interface is used.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;iomanip&gt;\n#include &lt;sstream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\n// a simple event consumer that collects string representations of the passed\n// values; note inheriting from json::json_sax_t is not required, but can\n// help not to forget a required function\nclass sax_event_consumer : public json::json_sax_t\n{\n  public:\n    std::vector&lt;std::string&gt; events;\n\n    bool null() override\n    {\n        events.push_back(\"null()\");\n        return true;\n    }\n\n    bool boolean(bool val) override\n    {\n        events.push_back(\"boolean(val=\" + std::string(val ? \"true\" : \"false\") + \")\");\n        return true;\n    }\n\n    bool number_integer(number_integer_t val) override\n    {\n        events.push_back(\"number_integer(val=\" + std::to_string(val) + \")\");\n        return true;\n    }\n\n    bool number_unsigned(number_unsigned_t val) override\n    {\n        events.push_back(\"number_unsigned(val=\" + std::to_string(val) + \")\");\n        return true;\n    }\n\n    bool number_float(number_float_t val, const string_t&amp; s) override\n    {\n        events.push_back(\"number_float(val=\" + std::to_string(val) + \", s=\" + s + \")\");\n        return true;\n    }\n\n    bool string(string_t&amp; val) override\n    {\n        events.push_back(\"string(val=\" + val + \")\");\n        return true;\n    }\n\n    bool start_object(std::size_t elements) override\n    {\n        events.push_back(\"start_object(elements=\" + std::to_string(elements) + \")\");\n        return true;\n    }\n\n    bool end_object() override\n    {\n        events.push_back(\"end_object()\");\n        return true;\n    }\n\n    bool start_array(std::size_t elements) override\n    {\n        events.push_back(\"start_array(elements=\" + std::to_string(elements) + \")\");\n        return true;\n    }\n\n    bool end_array() override\n    {\n        events.push_back(\"end_array()\");\n        return true;\n    }\n\n    bool key(string_t&amp; val) override\n    {\n        events.push_back(\"key(val=\" + val + \")\");\n        return true;\n    }\n\n    bool binary(json::binary_t&amp; val) override\n    {\n        events.push_back(\"binary(val=[...])\");\n        return true;\n    }\n\n    bool parse_error(std::size_t position, const std::string&amp; last_token, const json::exception&amp; ex) override\n    {\n        events.push_back(\"parse_error(position=\" + std::to_string(position) + \", last_token=\" + last_token + \",\\n            ex=\" + std::string(ex.what()) + \")\");\n        return false;\n    }\n};\n\nint main()\n{\n    // a JSON text\n    auto text = R\"(\n    {\n        \"Image\": {\n            \"Width\":  800,\n            \"Height\": 600,\n            \"Title\":  \"View from 15th Floor\",\n            \"Thumbnail\": {\n                \"Url\":    \"http://www.example.com/image/481989943\",\n                \"Height\": 125,\n                \"Width\":  100\n            },\n            \"Animated\" : false,\n            \"IDs\": [116, 943, 234, -38793],\n            \"DeletionDate\": null,\n            \"Distance\": 12.723374634\n        }\n    }]\n    )\";\n\n    // create a SAX event consumer object\n    sax_event_consumer sec;\n\n    // parse JSON\n    bool result = json::sax_parse(text, &amp;sec);\n\n    // output the recorded events\n    for (auto&amp; event : sec.events)\n    {\n        std::cout &lt;&lt; event &lt;&lt; \"\\n\";\n    }\n\n    // output the result of sax_parse\n    std::cout &lt;&lt; \"\\nresult: \" &lt;&lt; std::boolalpha &lt;&lt; result &lt;&lt; std::endl;\n}\n</code></pre> <p>Output:</p> <pre><code>start_object(elements=18446744073709551615)\nkey(val=Image)\nstart_object(elements=18446744073709551615)\nkey(val=Width)\nnumber_unsigned(val=800)\nkey(val=Height)\nnumber_unsigned(val=600)\nkey(val=Title)\nstring(val=View from 15th Floor)\nkey(val=Thumbnail)\nstart_object(elements=18446744073709551615)\nkey(val=Url)\nstring(val=http://www.example.com/image/481989943)\nkey(val=Height)\nnumber_unsigned(val=125)\nkey(val=Width)\nnumber_unsigned(val=100)\nend_object()\nkey(val=Animated)\nboolean(val=false)\nkey(val=IDs)\nstart_array(elements=18446744073709551615)\nnumber_unsigned(val=116)\nnumber_unsigned(val=943)\nnumber_unsigned(val=234)\nnumber_integer(val=-38793)\nend_array()\nkey(val=DeletionDate)\nnull()\nkey(val=Distance)\nnumber_float(val=12.723375, s=12.723374634)\nend_object()\nend_object()\nparse_error(position=460, last_token=12.723374634&lt;U+000A&gt;        }&lt;U+000A&gt;    }],\n            ex=[json.exception.parse_error.101] parse error at line 17, column 6: syntax error while parsing value - unexpected ']'; expected end of input)\n\nresult: false\n</code></pre>"},{"location":"api/json_sax/number_integer/#version-history","title":"Version history","text":"<ul> <li>Added in version 3.2.0.</li> </ul>"},{"location":"api/json_sax/number_unsigned/","title":"nlohmann::json_sax::number_unsigned","text":"<pre><code>virtual bool number_unsigned(number_unsigned_t val) = 0;\n</code></pre> <p>An unsigned integer number was read.</p>"},{"location":"api/json_sax/number_unsigned/#parameters","title":"Parameters","text":"<code>val</code> (in) unsigned integer value"},{"location":"api/json_sax/number_unsigned/#return-value","title":"Return value","text":"<p>Whether parsing should proceed.</p>"},{"location":"api/json_sax/number_unsigned/#examples","title":"Examples","text":"Example <p>The example below shows how the SAX interface is used.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;iomanip&gt;\n#include &lt;sstream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\n// a simple event consumer that collects string representations of the passed\n// values; note inheriting from json::json_sax_t is not required, but can\n// help not to forget a required function\nclass sax_event_consumer : public json::json_sax_t\n{\n  public:\n    std::vector&lt;std::string&gt; events;\n\n    bool null() override\n    {\n        events.push_back(\"null()\");\n        return true;\n    }\n\n    bool boolean(bool val) override\n    {\n        events.push_back(\"boolean(val=\" + std::string(val ? \"true\" : \"false\") + \")\");\n        return true;\n    }\n\n    bool number_integer(number_integer_t val) override\n    {\n        events.push_back(\"number_integer(val=\" + std::to_string(val) + \")\");\n        return true;\n    }\n\n    bool number_unsigned(number_unsigned_t val) override\n    {\n        events.push_back(\"number_unsigned(val=\" + std::to_string(val) + \")\");\n        return true;\n    }\n\n    bool number_float(number_float_t val, const string_t&amp; s) override\n    {\n        events.push_back(\"number_float(val=\" + std::to_string(val) + \", s=\" + s + \")\");\n        return true;\n    }\n\n    bool string(string_t&amp; val) override\n    {\n        events.push_back(\"string(val=\" + val + \")\");\n        return true;\n    }\n\n    bool start_object(std::size_t elements) override\n    {\n        events.push_back(\"start_object(elements=\" + std::to_string(elements) + \")\");\n        return true;\n    }\n\n    bool end_object() override\n    {\n        events.push_back(\"end_object()\");\n        return true;\n    }\n\n    bool start_array(std::size_t elements) override\n    {\n        events.push_back(\"start_array(elements=\" + std::to_string(elements) + \")\");\n        return true;\n    }\n\n    bool end_array() override\n    {\n        events.push_back(\"end_array()\");\n        return true;\n    }\n\n    bool key(string_t&amp; val) override\n    {\n        events.push_back(\"key(val=\" + val + \")\");\n        return true;\n    }\n\n    bool binary(json::binary_t&amp; val) override\n    {\n        events.push_back(\"binary(val=[...])\");\n        return true;\n    }\n\n    bool parse_error(std::size_t position, const std::string&amp; last_token, const json::exception&amp; ex) override\n    {\n        events.push_back(\"parse_error(position=\" + std::to_string(position) + \", last_token=\" + last_token + \",\\n            ex=\" + std::string(ex.what()) + \")\");\n        return false;\n    }\n};\n\nint main()\n{\n    // a JSON text\n    auto text = R\"(\n    {\n        \"Image\": {\n            \"Width\":  800,\n            \"Height\": 600,\n            \"Title\":  \"View from 15th Floor\",\n            \"Thumbnail\": {\n                \"Url\":    \"http://www.example.com/image/481989943\",\n                \"Height\": 125,\n                \"Width\":  100\n            },\n            \"Animated\" : false,\n            \"IDs\": [116, 943, 234, -38793],\n            \"DeletionDate\": null,\n            \"Distance\": 12.723374634\n        }\n    }]\n    )\";\n\n    // create a SAX event consumer object\n    sax_event_consumer sec;\n\n    // parse JSON\n    bool result = json::sax_parse(text, &amp;sec);\n\n    // output the recorded events\n    for (auto&amp; event : sec.events)\n    {\n        std::cout &lt;&lt; event &lt;&lt; \"\\n\";\n    }\n\n    // output the result of sax_parse\n    std::cout &lt;&lt; \"\\nresult: \" &lt;&lt; std::boolalpha &lt;&lt; result &lt;&lt; std::endl;\n}\n</code></pre> <p>Output:</p> <pre><code>start_object(elements=18446744073709551615)\nkey(val=Image)\nstart_object(elements=18446744073709551615)\nkey(val=Width)\nnumber_unsigned(val=800)\nkey(val=Height)\nnumber_unsigned(val=600)\nkey(val=Title)\nstring(val=View from 15th Floor)\nkey(val=Thumbnail)\nstart_object(elements=18446744073709551615)\nkey(val=Url)\nstring(val=http://www.example.com/image/481989943)\nkey(val=Height)\nnumber_unsigned(val=125)\nkey(val=Width)\nnumber_unsigned(val=100)\nend_object()\nkey(val=Animated)\nboolean(val=false)\nkey(val=IDs)\nstart_array(elements=18446744073709551615)\nnumber_unsigned(val=116)\nnumber_unsigned(val=943)\nnumber_unsigned(val=234)\nnumber_integer(val=-38793)\nend_array()\nkey(val=DeletionDate)\nnull()\nkey(val=Distance)\nnumber_float(val=12.723375, s=12.723374634)\nend_object()\nend_object()\nparse_error(position=460, last_token=12.723374634&lt;U+000A&gt;        }&lt;U+000A&gt;    }],\n            ex=[json.exception.parse_error.101] parse error at line 17, column 6: syntax error while parsing value - unexpected ']'; expected end of input)\n\nresult: false\n</code></pre>"},{"location":"api/json_sax/number_unsigned/#version-history","title":"Version history","text":"<ul> <li>Added in version 3.2.0.</li> </ul>"},{"location":"api/json_sax/parse_error/","title":"nlohmann::json_sax::parse_error","text":"<pre><code>virtual bool parse_error(std::size_t position,\n                         const std::string&amp; last_token,\n                         const detail::exception&amp; ex) = 0;\n</code></pre> <p>A parse error occurred.</p>"},{"location":"api/json_sax/parse_error/#parameters","title":"Parameters","text":"<code>position</code> (in) the position in the input where the error occurs <code>last_token</code> (in) the last read token <code>ex</code> (in) an exception object describing the error"},{"location":"api/json_sax/parse_error/#return-value","title":"Return value","text":"<p>Whether parsing should proceed (must return <code>false</code>).</p>"},{"location":"api/json_sax/parse_error/#examples","title":"Examples","text":"Example <p>The example below shows how the SAX interface is used.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;iomanip&gt;\n#include &lt;sstream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\n// a simple event consumer that collects string representations of the passed\n// values; note inheriting from json::json_sax_t is not required, but can\n// help not to forget a required function\nclass sax_event_consumer : public json::json_sax_t\n{\n  public:\n    std::vector&lt;std::string&gt; events;\n\n    bool null() override\n    {\n        events.push_back(\"null()\");\n        return true;\n    }\n\n    bool boolean(bool val) override\n    {\n        events.push_back(\"boolean(val=\" + std::string(val ? \"true\" : \"false\") + \")\");\n        return true;\n    }\n\n    bool number_integer(number_integer_t val) override\n    {\n        events.push_back(\"number_integer(val=\" + std::to_string(val) + \")\");\n        return true;\n    }\n\n    bool number_unsigned(number_unsigned_t val) override\n    {\n        events.push_back(\"number_unsigned(val=\" + std::to_string(val) + \")\");\n        return true;\n    }\n\n    bool number_float(number_float_t val, const string_t&amp; s) override\n    {\n        events.push_back(\"number_float(val=\" + std::to_string(val) + \", s=\" + s + \")\");\n        return true;\n    }\n\n    bool string(string_t&amp; val) override\n    {\n        events.push_back(\"string(val=\" + val + \")\");\n        return true;\n    }\n\n    bool start_object(std::size_t elements) override\n    {\n        events.push_back(\"start_object(elements=\" + std::to_string(elements) + \")\");\n        return true;\n    }\n\n    bool end_object() override\n    {\n        events.push_back(\"end_object()\");\n        return true;\n    }\n\n    bool start_array(std::size_t elements) override\n    {\n        events.push_back(\"start_array(elements=\" + std::to_string(elements) + \")\");\n        return true;\n    }\n\n    bool end_array() override\n    {\n        events.push_back(\"end_array()\");\n        return true;\n    }\n\n    bool key(string_t&amp; val) override\n    {\n        events.push_back(\"key(val=\" + val + \")\");\n        return true;\n    }\n\n    bool binary(json::binary_t&amp; val) override\n    {\n        events.push_back(\"binary(val=[...])\");\n        return true;\n    }\n\n    bool parse_error(std::size_t position, const std::string&amp; last_token, const json::exception&amp; ex) override\n    {\n        events.push_back(\"parse_error(position=\" + std::to_string(position) + \", last_token=\" + last_token + \",\\n            ex=\" + std::string(ex.what()) + \")\");\n        return false;\n    }\n};\n\nint main()\n{\n    // a JSON text\n    auto text = R\"(\n    {\n        \"Image\": {\n            \"Width\":  800,\n            \"Height\": 600,\n            \"Title\":  \"View from 15th Floor\",\n            \"Thumbnail\": {\n                \"Url\":    \"http://www.example.com/image/481989943\",\n                \"Height\": 125,\n                \"Width\":  100\n            },\n            \"Animated\" : false,\n            \"IDs\": [116, 943, 234, -38793],\n            \"DeletionDate\": null,\n            \"Distance\": 12.723374634\n        }\n    }]\n    )\";\n\n    // create a SAX event consumer object\n    sax_event_consumer sec;\n\n    // parse JSON\n    bool result = json::sax_parse(text, &amp;sec);\n\n    // output the recorded events\n    for (auto&amp; event : sec.events)\n    {\n        std::cout &lt;&lt; event &lt;&lt; \"\\n\";\n    }\n\n    // output the result of sax_parse\n    std::cout &lt;&lt; \"\\nresult: \" &lt;&lt; std::boolalpha &lt;&lt; result &lt;&lt; std::endl;\n}\n</code></pre> <p>Output:</p> <pre><code>start_object(elements=18446744073709551615)\nkey(val=Image)\nstart_object(elements=18446744073709551615)\nkey(val=Width)\nnumber_unsigned(val=800)\nkey(val=Height)\nnumber_unsigned(val=600)\nkey(val=Title)\nstring(val=View from 15th Floor)\nkey(val=Thumbnail)\nstart_object(elements=18446744073709551615)\nkey(val=Url)\nstring(val=http://www.example.com/image/481989943)\nkey(val=Height)\nnumber_unsigned(val=125)\nkey(val=Width)\nnumber_unsigned(val=100)\nend_object()\nkey(val=Animated)\nboolean(val=false)\nkey(val=IDs)\nstart_array(elements=18446744073709551615)\nnumber_unsigned(val=116)\nnumber_unsigned(val=943)\nnumber_unsigned(val=234)\nnumber_integer(val=-38793)\nend_array()\nkey(val=DeletionDate)\nnull()\nkey(val=Distance)\nnumber_float(val=12.723375, s=12.723374634)\nend_object()\nend_object()\nparse_error(position=460, last_token=12.723374634&lt;U+000A&gt;        }&lt;U+000A&gt;    }],\n            ex=[json.exception.parse_error.101] parse error at line 17, column 6: syntax error while parsing value - unexpected ']'; expected end of input)\n\nresult: false\n</code></pre>"},{"location":"api/json_sax/parse_error/#version-history","title":"Version history","text":"<ul> <li>Added in version 3.2.0.</li> </ul>"},{"location":"api/json_sax/start_array/","title":"nlohmann::json_sax::start_array","text":"<pre><code>virtual bool start_array(std::size_t elements) = 0;\n</code></pre> <p>The beginning of an array was read.</p>"},{"location":"api/json_sax/start_array/#parameters","title":"Parameters","text":"<code>elements</code> (in) number of array elements, or <code>std::numeric_limits&lt;std::size_t&gt;::max()</code> if unknown"},{"location":"api/json_sax/start_array/#return-value","title":"Return value","text":"<p>Whether parsing should proceed.</p>"},{"location":"api/json_sax/start_array/#notes","title":"Notes","text":"<p>Binary formats may report the number of elements.</p>"},{"location":"api/json_sax/start_array/#examples","title":"Examples","text":"Example <p>The example below shows how the SAX interface is used.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;iomanip&gt;\n#include &lt;sstream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\n// a simple event consumer that collects string representations of the passed\n// values; note inheriting from json::json_sax_t is not required, but can\n// help not to forget a required function\nclass sax_event_consumer : public json::json_sax_t\n{\n  public:\n    std::vector&lt;std::string&gt; events;\n\n    bool null() override\n    {\n        events.push_back(\"null()\");\n        return true;\n    }\n\n    bool boolean(bool val) override\n    {\n        events.push_back(\"boolean(val=\" + std::string(val ? \"true\" : \"false\") + \")\");\n        return true;\n    }\n\n    bool number_integer(number_integer_t val) override\n    {\n        events.push_back(\"number_integer(val=\" + std::to_string(val) + \")\");\n        return true;\n    }\n\n    bool number_unsigned(number_unsigned_t val) override\n    {\n        events.push_back(\"number_unsigned(val=\" + std::to_string(val) + \")\");\n        return true;\n    }\n\n    bool number_float(number_float_t val, const string_t&amp; s) override\n    {\n        events.push_back(\"number_float(val=\" + std::to_string(val) + \", s=\" + s + \")\");\n        return true;\n    }\n\n    bool string(string_t&amp; val) override\n    {\n        events.push_back(\"string(val=\" + val + \")\");\n        return true;\n    }\n\n    bool start_object(std::size_t elements) override\n    {\n        events.push_back(\"start_object(elements=\" + std::to_string(elements) + \")\");\n        return true;\n    }\n\n    bool end_object() override\n    {\n        events.push_back(\"end_object()\");\n        return true;\n    }\n\n    bool start_array(std::size_t elements) override\n    {\n        events.push_back(\"start_array(elements=\" + std::to_string(elements) + \")\");\n        return true;\n    }\n\n    bool end_array() override\n    {\n        events.push_back(\"end_array()\");\n        return true;\n    }\n\n    bool key(string_t&amp; val) override\n    {\n        events.push_back(\"key(val=\" + val + \")\");\n        return true;\n    }\n\n    bool binary(json::binary_t&amp; val) override\n    {\n        events.push_back(\"binary(val=[...])\");\n        return true;\n    }\n\n    bool parse_error(std::size_t position, const std::string&amp; last_token, const json::exception&amp; ex) override\n    {\n        events.push_back(\"parse_error(position=\" + std::to_string(position) + \", last_token=\" + last_token + \",\\n            ex=\" + std::string(ex.what()) + \")\");\n        return false;\n    }\n};\n\nint main()\n{\n    // a JSON text\n    auto text = R\"(\n    {\n        \"Image\": {\n            \"Width\":  800,\n            \"Height\": 600,\n            \"Title\":  \"View from 15th Floor\",\n            \"Thumbnail\": {\n                \"Url\":    \"http://www.example.com/image/481989943\",\n                \"Height\": 125,\n                \"Width\":  100\n            },\n            \"Animated\" : false,\n            \"IDs\": [116, 943, 234, -38793],\n            \"DeletionDate\": null,\n            \"Distance\": 12.723374634\n        }\n    }]\n    )\";\n\n    // create a SAX event consumer object\n    sax_event_consumer sec;\n\n    // parse JSON\n    bool result = json::sax_parse(text, &amp;sec);\n\n    // output the recorded events\n    for (auto&amp; event : sec.events)\n    {\n        std::cout &lt;&lt; event &lt;&lt; \"\\n\";\n    }\n\n    // output the result of sax_parse\n    std::cout &lt;&lt; \"\\nresult: \" &lt;&lt; std::boolalpha &lt;&lt; result &lt;&lt; std::endl;\n}\n</code></pre> <p>Output:</p> <pre><code>start_object(elements=18446744073709551615)\nkey(val=Image)\nstart_object(elements=18446744073709551615)\nkey(val=Width)\nnumber_unsigned(val=800)\nkey(val=Height)\nnumber_unsigned(val=600)\nkey(val=Title)\nstring(val=View from 15th Floor)\nkey(val=Thumbnail)\nstart_object(elements=18446744073709551615)\nkey(val=Url)\nstring(val=http://www.example.com/image/481989943)\nkey(val=Height)\nnumber_unsigned(val=125)\nkey(val=Width)\nnumber_unsigned(val=100)\nend_object()\nkey(val=Animated)\nboolean(val=false)\nkey(val=IDs)\nstart_array(elements=18446744073709551615)\nnumber_unsigned(val=116)\nnumber_unsigned(val=943)\nnumber_unsigned(val=234)\nnumber_integer(val=-38793)\nend_array()\nkey(val=DeletionDate)\nnull()\nkey(val=Distance)\nnumber_float(val=12.723375, s=12.723374634)\nend_object()\nend_object()\nparse_error(position=460, last_token=12.723374634&lt;U+000A&gt;        }&lt;U+000A&gt;    }],\n            ex=[json.exception.parse_error.101] parse error at line 17, column 6: syntax error while parsing value - unexpected ']'; expected end of input)\n\nresult: false\n</code></pre>"},{"location":"api/json_sax/start_array/#version-history","title":"Version history","text":"<ul> <li>Added in version 3.2.0.</li> </ul>"},{"location":"api/json_sax/start_object/","title":"nlohmann::json_sax::start_object","text":"<pre><code>virtual bool start_object(std::size_t elements) = 0;\n</code></pre> <p>The beginning of an object was read.</p>"},{"location":"api/json_sax/start_object/#parameters","title":"Parameters","text":"<code>elements</code> (in) number of object elements, or <code>std::numeric_limits&lt;std::size_t&gt;::max()</code> if unknown"},{"location":"api/json_sax/start_object/#return-value","title":"Return value","text":"<p>Whether parsing should proceed.</p>"},{"location":"api/json_sax/start_object/#notes","title":"Notes","text":"<p>Binary formats may report the number of elements.</p>"},{"location":"api/json_sax/start_object/#examples","title":"Examples","text":"Example <p>The example below shows how the SAX interface is used.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;iomanip&gt;\n#include &lt;sstream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\n// a simple event consumer that collects string representations of the passed\n// values; note inheriting from json::json_sax_t is not required, but can\n// help not to forget a required function\nclass sax_event_consumer : public json::json_sax_t\n{\n  public:\n    std::vector&lt;std::string&gt; events;\n\n    bool null() override\n    {\n        events.push_back(\"null()\");\n        return true;\n    }\n\n    bool boolean(bool val) override\n    {\n        events.push_back(\"boolean(val=\" + std::string(val ? \"true\" : \"false\") + \")\");\n        return true;\n    }\n\n    bool number_integer(number_integer_t val) override\n    {\n        events.push_back(\"number_integer(val=\" + std::to_string(val) + \")\");\n        return true;\n    }\n\n    bool number_unsigned(number_unsigned_t val) override\n    {\n        events.push_back(\"number_unsigned(val=\" + std::to_string(val) + \")\");\n        return true;\n    }\n\n    bool number_float(number_float_t val, const string_t&amp; s) override\n    {\n        events.push_back(\"number_float(val=\" + std::to_string(val) + \", s=\" + s + \")\");\n        return true;\n    }\n\n    bool string(string_t&amp; val) override\n    {\n        events.push_back(\"string(val=\" + val + \")\");\n        return true;\n    }\n\n    bool start_object(std::size_t elements) override\n    {\n        events.push_back(\"start_object(elements=\" + std::to_string(elements) + \")\");\n        return true;\n    }\n\n    bool end_object() override\n    {\n        events.push_back(\"end_object()\");\n        return true;\n    }\n\n    bool start_array(std::size_t elements) override\n    {\n        events.push_back(\"start_array(elements=\" + std::to_string(elements) + \")\");\n        return true;\n    }\n\n    bool end_array() override\n    {\n        events.push_back(\"end_array()\");\n        return true;\n    }\n\n    bool key(string_t&amp; val) override\n    {\n        events.push_back(\"key(val=\" + val + \")\");\n        return true;\n    }\n\n    bool binary(json::binary_t&amp; val) override\n    {\n        events.push_back(\"binary(val=[...])\");\n        return true;\n    }\n\n    bool parse_error(std::size_t position, const std::string&amp; last_token, const json::exception&amp; ex) override\n    {\n        events.push_back(\"parse_error(position=\" + std::to_string(position) + \", last_token=\" + last_token + \",\\n            ex=\" + std::string(ex.what()) + \")\");\n        return false;\n    }\n};\n\nint main()\n{\n    // a JSON text\n    auto text = R\"(\n    {\n        \"Image\": {\n            \"Width\":  800,\n            \"Height\": 600,\n            \"Title\":  \"View from 15th Floor\",\n            \"Thumbnail\": {\n                \"Url\":    \"http://www.example.com/image/481989943\",\n                \"Height\": 125,\n                \"Width\":  100\n            },\n            \"Animated\" : false,\n            \"IDs\": [116, 943, 234, -38793],\n            \"DeletionDate\": null,\n            \"Distance\": 12.723374634\n        }\n    }]\n    )\";\n\n    // create a SAX event consumer object\n    sax_event_consumer sec;\n\n    // parse JSON\n    bool result = json::sax_parse(text, &amp;sec);\n\n    // output the recorded events\n    for (auto&amp; event : sec.events)\n    {\n        std::cout &lt;&lt; event &lt;&lt; \"\\n\";\n    }\n\n    // output the result of sax_parse\n    std::cout &lt;&lt; \"\\nresult: \" &lt;&lt; std::boolalpha &lt;&lt; result &lt;&lt; std::endl;\n}\n</code></pre> <p>Output:</p> <pre><code>start_object(elements=18446744073709551615)\nkey(val=Image)\nstart_object(elements=18446744073709551615)\nkey(val=Width)\nnumber_unsigned(val=800)\nkey(val=Height)\nnumber_unsigned(val=600)\nkey(val=Title)\nstring(val=View from 15th Floor)\nkey(val=Thumbnail)\nstart_object(elements=18446744073709551615)\nkey(val=Url)\nstring(val=http://www.example.com/image/481989943)\nkey(val=Height)\nnumber_unsigned(val=125)\nkey(val=Width)\nnumber_unsigned(val=100)\nend_object()\nkey(val=Animated)\nboolean(val=false)\nkey(val=IDs)\nstart_array(elements=18446744073709551615)\nnumber_unsigned(val=116)\nnumber_unsigned(val=943)\nnumber_unsigned(val=234)\nnumber_integer(val=-38793)\nend_array()\nkey(val=DeletionDate)\nnull()\nkey(val=Distance)\nnumber_float(val=12.723375, s=12.723374634)\nend_object()\nend_object()\nparse_error(position=460, last_token=12.723374634&lt;U+000A&gt;        }&lt;U+000A&gt;    }],\n            ex=[json.exception.parse_error.101] parse error at line 17, column 6: syntax error while parsing value - unexpected ']'; expected end of input)\n\nresult: false\n</code></pre>"},{"location":"api/json_sax/start_object/#version-history","title":"Version history","text":"<ul> <li>Added in version 3.2.0.</li> </ul>"},{"location":"api/json_sax/string/","title":"nlohmann::json_sax::string","text":"<pre><code>virtual bool string(string_t&amp; val) = 0;\n</code></pre> <p>A string value was read.</p>"},{"location":"api/json_sax/string/#parameters","title":"Parameters","text":"<code>val</code> (in) string value"},{"location":"api/json_sax/string/#return-value","title":"Return value","text":"<p>Whether parsing should proceed.</p>"},{"location":"api/json_sax/string/#notes","title":"Notes","text":"<p>It is safe to move the passed string value.</p>"},{"location":"api/json_sax/string/#examples","title":"Examples","text":"Example <p>The example below shows how the SAX interface is used.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;iomanip&gt;\n#include &lt;sstream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\n// a simple event consumer that collects string representations of the passed\n// values; note inheriting from json::json_sax_t is not required, but can\n// help not to forget a required function\nclass sax_event_consumer : public json::json_sax_t\n{\n  public:\n    std::vector&lt;std::string&gt; events;\n\n    bool null() override\n    {\n        events.push_back(\"null()\");\n        return true;\n    }\n\n    bool boolean(bool val) override\n    {\n        events.push_back(\"boolean(val=\" + std::string(val ? \"true\" : \"false\") + \")\");\n        return true;\n    }\n\n    bool number_integer(number_integer_t val) override\n    {\n        events.push_back(\"number_integer(val=\" + std::to_string(val) + \")\");\n        return true;\n    }\n\n    bool number_unsigned(number_unsigned_t val) override\n    {\n        events.push_back(\"number_unsigned(val=\" + std::to_string(val) + \")\");\n        return true;\n    }\n\n    bool number_float(number_float_t val, const string_t&amp; s) override\n    {\n        events.push_back(\"number_float(val=\" + std::to_string(val) + \", s=\" + s + \")\");\n        return true;\n    }\n\n    bool string(string_t&amp; val) override\n    {\n        events.push_back(\"string(val=\" + val + \")\");\n        return true;\n    }\n\n    bool start_object(std::size_t elements) override\n    {\n        events.push_back(\"start_object(elements=\" + std::to_string(elements) + \")\");\n        return true;\n    }\n\n    bool end_object() override\n    {\n        events.push_back(\"end_object()\");\n        return true;\n    }\n\n    bool start_array(std::size_t elements) override\n    {\n        events.push_back(\"start_array(elements=\" + std::to_string(elements) + \")\");\n        return true;\n    }\n\n    bool end_array() override\n    {\n        events.push_back(\"end_array()\");\n        return true;\n    }\n\n    bool key(string_t&amp; val) override\n    {\n        events.push_back(\"key(val=\" + val + \")\");\n        return true;\n    }\n\n    bool binary(json::binary_t&amp; val) override\n    {\n        events.push_back(\"binary(val=[...])\");\n        return true;\n    }\n\n    bool parse_error(std::size_t position, const std::string&amp; last_token, const json::exception&amp; ex) override\n    {\n        events.push_back(\"parse_error(position=\" + std::to_string(position) + \", last_token=\" + last_token + \",\\n            ex=\" + std::string(ex.what()) + \")\");\n        return false;\n    }\n};\n\nint main()\n{\n    // a JSON text\n    auto text = R\"(\n    {\n        \"Image\": {\n            \"Width\":  800,\n            \"Height\": 600,\n            \"Title\":  \"View from 15th Floor\",\n            \"Thumbnail\": {\n                \"Url\":    \"http://www.example.com/image/481989943\",\n                \"Height\": 125,\n                \"Width\":  100\n            },\n            \"Animated\" : false,\n            \"IDs\": [116, 943, 234, -38793],\n            \"DeletionDate\": null,\n            \"Distance\": 12.723374634\n        }\n    }]\n    )\";\n\n    // create a SAX event consumer object\n    sax_event_consumer sec;\n\n    // parse JSON\n    bool result = json::sax_parse(text, &amp;sec);\n\n    // output the recorded events\n    for (auto&amp; event : sec.events)\n    {\n        std::cout &lt;&lt; event &lt;&lt; \"\\n\";\n    }\n\n    // output the result of sax_parse\n    std::cout &lt;&lt; \"\\nresult: \" &lt;&lt; std::boolalpha &lt;&lt; result &lt;&lt; std::endl;\n}\n</code></pre> <p>Output:</p> <pre><code>start_object(elements=18446744073709551615)\nkey(val=Image)\nstart_object(elements=18446744073709551615)\nkey(val=Width)\nnumber_unsigned(val=800)\nkey(val=Height)\nnumber_unsigned(val=600)\nkey(val=Title)\nstring(val=View from 15th Floor)\nkey(val=Thumbnail)\nstart_object(elements=18446744073709551615)\nkey(val=Url)\nstring(val=http://www.example.com/image/481989943)\nkey(val=Height)\nnumber_unsigned(val=125)\nkey(val=Width)\nnumber_unsigned(val=100)\nend_object()\nkey(val=Animated)\nboolean(val=false)\nkey(val=IDs)\nstart_array(elements=18446744073709551615)\nnumber_unsigned(val=116)\nnumber_unsigned(val=943)\nnumber_unsigned(val=234)\nnumber_integer(val=-38793)\nend_array()\nkey(val=DeletionDate)\nnull()\nkey(val=Distance)\nnumber_float(val=12.723375, s=12.723374634)\nend_object()\nend_object()\nparse_error(position=460, last_token=12.723374634&lt;U+000A&gt;        }&lt;U+000A&gt;    }],\n            ex=[json.exception.parse_error.101] parse error at line 17, column 6: syntax error while parsing value - unexpected ']'; expected end of input)\n\nresult: false\n</code></pre>"},{"location":"api/json_sax/string/#version-history","title":"Version history","text":"<ul> <li>Added in version 3.2.0.</li> </ul>"},{"location":"api/macros/","title":"Macros","text":"<p>Some aspects of the library can be configured by defining preprocessor macros before including the <code>json.hpp</code> header. See also the macro overview page.</p>"},{"location":"api/macros/#runtime-assertions","title":"Runtime assertions","text":"<ul> <li>JSON_ASSERT(x) - control behavior of runtime assertions</li> </ul>"},{"location":"api/macros/#exceptions","title":"Exceptions","text":"<ul> <li>JSON_CATCH_USER(exception)JSON_THROW_USER(exception)JSON_TRY_USER - control exceptions</li> <li>JSON_DIAGNOSTICS - control extended diagnostics</li> <li>JSON_DIAGNOSTIC_POSITIONS - access positions of elements</li> <li>JSON_NOEXCEPTION - switch off exceptions</li> </ul>"},{"location":"api/macros/#language-support","title":"Language support","text":"<ul> <li>JSON_HAS_CPP_11JSON_HAS_CPP_14JSON_HAS_CPP_17JSON_HAS_CPP_20 - set supported C++ standard</li> <li>JSON_HAS_FILESYSTEMJSON_HAS_EXPERIMENTAL_FILESYSTEM - control <code>std::filesystem</code> support</li> <li>JSON_HAS_RANGES - control <code>std::ranges</code> support</li> <li>JSON_HAS_THREE_WAY_COMPARISON - control 3-way comparison support</li> <li>JSON_NO_IO - switch off functions relying on certain C++ I/O headers</li> <li>JSON_SKIP_UNSUPPORTED_COMPILER_CHECK - do not warn about unsupported compilers</li> <li>JSON_USE_GLOBAL_UDLS - place user-defined string literals (UDLs) into the global namespace</li> </ul>"},{"location":"api/macros/#library-version","title":"Library version","text":"<ul> <li>JSON_SKIP_LIBRARY_VERSION_CHECK - skip library version check</li> <li>NLOHMANN_JSON_VERSION_MAJORNLOHMANN_JSON_VERSION_MINORNLOHMANN_JSON_VERSION_PATCH   - library version information</li> </ul>"},{"location":"api/macros/#library-namespace","title":"Library namespace","text":"<ul> <li>NLOHMANN_JSON_NAMESPACE - full name of the <code>nlohmann</code> namespace</li> <li>NLOHMANN_JSON_NAMESPACE_BEGINNLOHMANN_JSON_NAMESPACE_END - open and   close the library namespace</li> <li>NLOHMANN_JSON_NAMESPACE_NO_VERSION - disable the version component of   the inline namespace</li> </ul>"},{"location":"api/macros/#type-conversions","title":"Type conversions","text":"<ul> <li>JSON_BRACE_INIT_COPY_SEMANTICS - opt in to copy/move semantics for single-element brace initialization</li> <li>JSON_DISABLE_ENUM_SERIALIZATION - switch off default serialization/deserialization functions for enums</li> <li>JSON_USE_IMPLICIT_CONVERSIONS - control implicit conversions</li> </ul>"},{"location":"api/macros/#comparison-behavior","title":"Comparison behavior","text":"<ul> <li>JSON_USE_LEGACY_DISCARDED_VALUE_COMPARISON -   control comparison of discarded values</li> </ul>"},{"location":"api/macros/#serializationdeserialization-macros","title":"Serialization/deserialization macros","text":""},{"location":"api/macros/#enums","title":"Enums","text":"<ul> <li>NLOHMANN_JSON_SERIALIZE_ENUM - serialize/deserialize an enum</li> <li>NLOHMANN_JSON_SERIALIZE_ENUM_STRICT - serialize/deserialize an enum with exceptions</li> </ul>"},{"location":"api/macros/#classes-and-structs","title":"Classes and structs","text":"<ul> <li>NLOHMANN_DEFINE_TYPE_INTRUSIVE - serialize/deserialize a non-derived class   with private members</li> <li>NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT - serialize/deserialize a   non-derived class with private members; uses default values</li> <li>NLOHMANN_DEFINE_TYPE_INTRUSIVE_ONLY_SERIALIZE - serialize a non-derived class   with private members</li> <li>NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE - serialize/deserialize a non-derived   class</li> <li>NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT - serialize/deserialize a   non-derived class; uses default values</li> <li> <p>NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE - serialize a   non-derived class</p> </li> <li> <p>NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE - serialize/deserialize a derived class   with private members</p> </li> <li>NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_DEFAULT - serialize/deserialize a   derived class with private members; uses default values</li> <li>NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_ONLY_SERIALIZE - serialize a derived   class with private members</li> <li>NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE - serialize/deserialize a derived   class</li> <li>NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_DEFAULT - serialize/deserialize   a derived class; uses default values</li> <li>NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE - serialize a derived   class</li> <li>NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_NAMES - serialize/deserialize a non-derived class   with private members; uses custom names</li> <li>NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT_WITH_NAMES - serialize/deserialize a   non-derived class with private members; uses default values; uses custom names</li> <li>NLOHMANN_DEFINE_TYPE_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES - serialize a non-derived class   with private members; uses custom names</li> <li>NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_NAMES - serialize/deserialize a non-derived   class; uses custom names</li> <li>NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT_WITH_NAMES - serialize/deserialize a   non-derived class; uses default values; uses custom names</li> <li> <p>NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES - serialize a   non-derived class; uses custom names</p> </li> <li> <p>NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_NAMES - serialize/deserialize a derived class   with private members; uses custom names</p> </li> <li>NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_DEFAULT_WITH_NAMES - serialize/deserialize a   derived class with private members; uses default values; uses custom names</li> <li>NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES - serialize a derived   class with private members; uses custom names</li> <li>NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_NAMES - serialize/deserialize a derived   class; uses custom names</li> <li>NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_DEFAULT_WITH_NAMES - serialize/deserialize   a derived class; uses default values; uses custom names</li> <li>NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES - serialize a derived   class; uses custom names</li> </ul>"},{"location":"api/macros/json_assert/","title":"JSON_ASSERT","text":"<pre><code>#define JSON_ASSERT(x) /* value */\n</code></pre> <p>This macro controls which code is executed for runtime assertions of the library.</p>"},{"location":"api/macros/json_assert/#parameters","title":"Parameters","text":"<code>x</code> (in) expression of a scalar type"},{"location":"api/macros/json_assert/#default-definition","title":"Default definition","text":"<p>The default value is <code>assert(x)</code>.</p> <pre><code>#define JSON_ASSERT(x) assert(x)\n</code></pre> <p>Therefore, assertions can be switched off by defining <code>NDEBUG</code>.</p>"},{"location":"api/macros/json_assert/#notes","title":"Notes","text":"<ul> <li>The library uses numerous assertions to guarantee invariants and to abort in case of otherwise undefined behavior   (e.g., when calling operator[] with a missing object key on a <code>const</code> object). See   page runtime assertions for more information.</li> <li>Defining the macro to code that does not call <code>std::abort</code> may leave the library in an undefined state.</li> <li>The macro is undefined outside the library.</li> </ul>"},{"location":"api/macros/json_assert/#examples","title":"Examples","text":"Example 1: default behavior <p>The following code will trigger an assertion at runtime:</p> <pre><code>#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    const json j = {{\"key\", \"value\"}};\n    auto v = j[\"missing\"];\n}\n</code></pre> <p>Output:</p> <pre><code>Assertion failed: (m_value.object-&gt;find(key) != m_value.object-&gt;end()), function operator[], file json.hpp, line 2144.\n</code></pre> Example 2: user-defined behavior <p>The assertion reporting can be changed by defining <code>JSON_ASSERT(x)</code> differently.</p> <pre><code>#include &lt;cstdio&gt;\n#include &lt;cstdlib&gt;\n#define JSON_ASSERT(x) if(!(x)){fprintf(stderr, \"assertion error in %s\\n\", __FUNCTION__); std::abort();}\n\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    const json j = {{\"key\", \"value\"}};\n    auto v = j[\"missing\"];\n}\n</code></pre> <p>Output:</p> <pre><code>assertion error in operator[]\n</code></pre>"},{"location":"api/macros/json_assert/#see-also","title":"See also","text":"<ul> <li>Runtime Assertions - overview documentation</li> </ul>"},{"location":"api/macros/json_assert/#version-history","title":"Version history","text":"<ul> <li>Added in version 3.9.0.</li> </ul>"},{"location":"api/macros/json_brace_init_copy_semantics/","title":"JSON_BRACE_INIT_COPY_SEMANTICS","text":"<pre><code>#define JSON_BRACE_INIT_COPY_SEMANTICS /* value */\n</code></pre> <p>When defined to <code>1</code>, single-element brace initialization of a <code>basic_json</code> value is treated as a copy/move of the element rather than wrapping it in a single-element array.</p>"},{"location":"api/macros/json_brace_init_copy_semantics/#default-definition","title":"Default definition","text":"<p>The default value is <code>0</code> (disabled \u2014 existing behavior is preserved).</p> <pre><code>#define JSON_BRACE_INIT_COPY_SEMANTICS 0\n</code></pre>"},{"location":"api/macros/json_brace_init_copy_semantics/#notes","title":"Notes","text":"<p>Background</p> <p>C++ always prefers the <code>initializer_list</code> constructor over the copy/move constructor for brace initialization. This means that code like</p> <pre><code>json obj = {{\"key\", \"value\"}};\njson j{obj};\n</code></pre> <p>creates a single-element array <code>[{\"key\":\"value\"}]</code> instead of a copy of <code>obj</code>. This behavior is compiler-dependent for older compilers (GCC wrapped, Clang did not), but starting from Clang 20, both compilers behave the same way.</p> <p>Enabling this macro opts into copy/move semantics for this case (see #5074).</p> <p>Opt-in only</p> <p>This macro must be defined before including <code>&lt;nlohmann/json.hpp&gt;</code>. Defining it after the include has no effect.</p> <p>Workaround without the macro</p> <p>To explicitly create a single-element array without enabling this macro, use <code>json::array()</code>:</p> <pre><code>json j = json::array({obj});  // always creates [obj]\n</code></pre>"},{"location":"api/macros/json_brace_init_copy_semantics/#examples","title":"Examples","text":"Default behavior (macro not defined) <p>Without the macro, single-element brace initialization wraps the value in an array:</p> <pre><code>#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    json obj = {{\"key\", \"value\"}};\n\n    json j{obj};\n    // j is [{\"key\":\"value\"}]  -- single-element array, NOT a copy of obj\n}\n</code></pre> Opt-in copy semantics (macro defined to 1) <p>With the macro, single-element brace initialization copies/moves the value:</p> <pre><code>#define JSON_BRACE_INIT_COPY_SEMANTICS 1\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    json obj = {{\"key\", \"value\"}};\n\n    json j{obj};\n    // j is {\"key\":\"value\"}  -- copy of obj\n}\n</code></pre>"},{"location":"api/macros/json_brace_init_copy_semantics/#see-also","title":"See also","text":"<ul> <li>FAQ: Brace initialization yields arrays</li> <li>basic_json(initializer_list_t) - the affected constructor</li> </ul>"},{"location":"api/macros/json_brace_init_copy_semantics/#version-history","title":"Version history","text":"<ul> <li>Added in version 3.12.x.</li> </ul>"},{"location":"api/macros/json_diagnostic_positions/","title":"JSON_DIAGNOSTIC_POSITIONS","text":"<pre><code>#define JSON_DIAGNOSTIC_POSITIONS /* value */\n</code></pre> <p>This macro enables position diagnostics for generated JSON objects.</p> <p>When enabled, two new member functions <code>start_pos()</code> and <code>end_pos()</code> are added to <code>basic_json</code> values. If the value was created by calling the<code>parse</code> function, then these functions allow querying the byte positions of the value in the input it was parsed from. In case the value was constructed by other means, <code>std::string::npos</code> is returned.</p> <p><code>start_pos()</code> returns the position of the first character of a given value in the original JSON string, while <code>end_pos()</code> returns the position of the character following the last character. For objects and arrays, the first and last characters correspond to the opening or closing braces/brackets, respectively. For primitive values, the first and last character represents the opening and closing quotes (strings) or the first and last character of the field's numerical or predefined value (<code>true</code>, <code>false</code>, <code>null</code>), respectively.</p> JSON type return value <code>start_pos()</code> return value <code>end_pos()</code> object position of the opening <code>{</code> position after the closing <code>}</code> array position of the opening <code>[</code> position after the closing <code>]</code> string position of the opening <code>\"</code> position after the closing <code>\"</code> number position of the first character position after the last character boolean position of <code>t</code> for <code>true</code> and <code>f</code> for <code>false</code> position after <code>e</code> null position of <code>n</code> position after <code>l</code> <p>Given the above, <code>end_pos()</code><code>-</code><code>start_pos()</code> for a JSON value provides the length of the parsed JSON string for that value, including the opening or closing braces, brackets, or quotes.</p> <p>Note that enabling this macro increases the size of every JSON value by two <code>std::size_t</code> fields and adds slight runtime overhead to parsing, copying JSON value objects, and the generation of error messages for exceptions. It also causes these values to be reported in those error messages.</p>"},{"location":"api/macros/json_diagnostic_positions/#default-definition","title":"Default definition","text":"<p>The default value is <code>0</code> (position diagnostics are switched off).</p> <pre><code>#define JSON_DIAGNOSTIC_POSITIONS 0\n</code></pre> <p>When the macro is not defined, the library will define it to its default value.</p>"},{"location":"api/macros/json_diagnostic_positions/#notes","title":"Notes","text":"<p>CMake option</p> <p>Diagnostic positions can also be controlled with the CMake option <code>JSON_Diagnostic_Positions</code> (<code>OFF</code> by default) which defines <code>JSON_DIAGNOSTIC_POSITIONS</code> accordingly.</p> <p>Availability</p> <p>Diagnostic positions are only available if the value was created by the <code>parse</code> function. The <code>sax_parse</code> function or all other means to create a JSON value do not set the diagnostic positions and <code>start_pos()</code> and <code>end_pos()</code> will only return <code>std::string::npos</code> for these values.</p> <p>Invalidation</p> <p>The returned positions are only valid as long as the JSON value is not changed. The positions are not updated when the JSON value is changed.</p>"},{"location":"api/macros/json_diagnostic_positions/#examples","title":"Examples","text":"Example: retrieving positions <pre><code>#include &lt;iostream&gt;\n\n#define JSON_DIAGNOSTIC_POSITIONS 1\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    std::string json_string = R\"(\n    {\n        \"address\": {\n            \"street\": \"Fake Street\",\n            \"housenumber\": 1\n        }\n    }\n    )\";\n    json j = json::parse(json_string);\n\n    std::cout &lt;&lt; \"Root diagnostic positions: \\n\";\n    std::cout &lt;&lt; \"\\tstart_pos: \" &lt;&lt; j.start_pos() &lt;&lt; '\\n';\n    std::cout &lt;&lt; \"\\tend_pos:\" &lt;&lt; j.end_pos() &lt;&lt; \"\\n\";\n    std::cout &lt;&lt; \"Original string: \\n\";\n    std::cout &lt;&lt; \"{\\n        \\\"address\\\": {\\n            \\\"street\\\": \\\"Fake Street\\\",\\n            \\\"housenumber\\\": 1\\n        }\\n    }\" &lt;&lt; \"\\n\";\n    std::cout &lt;&lt; \"Parsed string: \\n\";\n    std::cout &lt;&lt; json_string.substr(j.start_pos(), j.end_pos() - j.start_pos()) &lt;&lt; \"\\n\\n\";\n\n    std::cout &lt;&lt; \"address diagnostic positions: \\n\";\n    std::cout &lt;&lt; \"\\tstart_pos:\" &lt;&lt; j[\"address\"].start_pos() &lt;&lt; '\\n';\n    std::cout &lt;&lt; \"\\tend_pos:\" &lt;&lt; j[\"address\"].end_pos() &lt;&lt; \"\\n\\n\";\n    std::cout &lt;&lt; \"Original string: \\n\";\n    std::cout &lt;&lt; \"{            \\\"street\\\": \\\"Fake Street\\\",\\n            \\\"housenumber\\\": 1\\n        }\" &lt;&lt; \"\\n\";\n    std::cout &lt;&lt; \"Parsed string: \\n\";\n    std::cout &lt;&lt; json_string.substr(j[\"address\"].start_pos(), j[\"address\"].end_pos() - j[\"address\"].start_pos()) &lt;&lt; \"\\n\\n\";\n\n    std::cout &lt;&lt; \"street diagnostic positions: \\n\";\n    std::cout &lt;&lt; \"\\tstart_pos:\" &lt;&lt; j[\"address\"][\"street\"].start_pos() &lt;&lt; '\\n';\n    std::cout &lt;&lt; \"\\tend_pos:\" &lt;&lt; j[\"address\"][\"street\"].end_pos() &lt;&lt; \"\\n\\n\";\n    std::cout &lt;&lt; \"Original string: \\n\";\n    std::cout &lt;&lt; \"\\\"Fake Street\\\"\" &lt;&lt; \"\\n\";\n    std::cout &lt;&lt; \"Parsed string: \\n\";\n    std::cout &lt;&lt; json_string.substr(j[\"address\"][\"street\"].start_pos(), j[\"address\"][\"street\"].end_pos() - j[\"address\"][\"street\"].start_pos()) &lt;&lt; \"\\n\\n\";\n\n    std::cout &lt;&lt; \"housenumber diagnostic positions: \\n\";\n    std::cout &lt;&lt; \"\\tstart_pos:\" &lt;&lt; j[\"address\"][\"housenumber\"].start_pos() &lt;&lt; '\\n';\n    std::cout &lt;&lt; \"\\tend_pos:\" &lt;&lt; j[\"address\"][\"housenumber\"].end_pos() &lt;&lt; \"\\n\\n\";\n    std::cout &lt;&lt; \"Original string: \\n\";\n    std::cout &lt;&lt; \"1\" &lt;&lt; \"\\n\";\n    std::cout &lt;&lt; \"Parsed string: \\n\";\n    std::cout &lt;&lt; json_string.substr(j[\"address\"][\"housenumber\"].start_pos(), j[\"address\"][\"housenumber\"].end_pos() - j[\"address\"][\"housenumber\"].start_pos()) &lt;&lt; \"\\n\\n\";\n}\n</code></pre> <p>Output:</p> <pre><code>Root diagnostic positions: \n    start_pos: 5\n    end_pos:109\nOriginal string: \n{\n        \"address\": {\n            \"street\": \"Fake Street\",\n            \"housenumber\": 1\n        }\n    }\nParsed string: \n{\n        \"address\": {\n            \"street\": \"Fake Street\",\n            \"housenumber\": 1\n        }\n    }\n\naddress diagnostic positions: \n    start_pos:26\n    end_pos:103\n\nOriginal string: \n{            \"street\": \"Fake Street\",\n            \"housenumber\": 1\n        }\nParsed string: \n{\n            \"street\": \"Fake Street\",\n            \"housenumber\": 1\n        }\n\nstreet diagnostic positions: \n    start_pos:50\n    end_pos:63\n\nOriginal string: \n\"Fake Street\"\nParsed string: \n\"Fake Street\"\n\nhousenumber diagnostic positions: \n    start_pos:92\n    end_pos:93\n\nOriginal string: \n1\nParsed string: \n1\n</code></pre> <p>The output shows the start/end positions of all the objects and fields in the JSON string.</p> Example 2: using only diagnostic positions in exceptions <pre><code>#include &lt;iostream&gt;\n\n#define JSON_DIAGNOSTIC_POSITIONS 1\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\n/* Demonstration of type error exception with diagnostic positions support enabled */\nint main()\n{\n    //Invalid json string - housenumber type must be int instead of string\n    const std::string json_invalid_string = R\"(\n    {\n        \"address\": {\n            \"street\": \"Fake Street\",\n            \"housenumber\": \"1\"\n        }\n    }\n    )\";\n    json j = json::parse(json_invalid_string);\n    try\n    {\n        int housenumber = j[\"address\"][\"housenumber\"];\n        std::cout &lt;&lt; housenumber;\n    }\n    catch (const json::exception&amp; e)\n    {\n        std::cout &lt;&lt; e.what() &lt;&lt; '\\n';\n    }\n}\n</code></pre> <p>Output:</p> <pre><code>[json.exception.type_error.302] (bytes 92-95) type must be number, but is string\n</code></pre> <pre><code>The output shows the exception with start/end positions only.\n</code></pre> Example 3: using extended diagnostics with positions enabled in exceptions <pre><code>#include &lt;iostream&gt;\n\n#define JSON_DIAGNOSTICS 1\n#define JSON_DIAGNOSTIC_POSITIONS 1\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\n/* Demonstration of type error exception with diagnostic positions support enabled */\nint main()\n{\n    //Invalid json string - housenumber type must be int instead of string\n    const std::string json_invalid_string = R\"(\n    {\n        \"address\": {\n            \"street\": \"Fake Street\",\n            \"housenumber\": \"1\"\n        }\n    }\n    )\";\n    json j = json::parse(json_invalid_string);\n    try\n    {\n        int housenumber = j[\"address\"][\"housenumber\"];\n        std::cout &lt;&lt; housenumber;\n    }\n    catch (const json::exception&amp; e)\n    {\n        std::cout &lt;&lt; e.what() &lt;&lt; '\\n';\n    }\n}\n</code></pre> <p>Output:</p> <pre><code>[json.exception.type_error.302] (/address/housenumber) (bytes 92-95) type must be number, but is string\n</code></pre> <pre><code>The output shows the exception with diagnostic path info and start/end positions.\n</code></pre>"},{"location":"api/macros/json_diagnostic_positions/#see-also","title":"See also","text":"<ul> <li> JSON_Diagnostic_Positions - CMake option to control the macro</li> <li>JSON_DIAGNOSTICS - macro to control extended diagnostics</li> </ul>"},{"location":"api/macros/json_diagnostic_positions/#version-history","title":"Version history","text":"<ul> <li>Added in version 3.12.0.</li> </ul>"},{"location":"api/macros/json_diagnostics/","title":"JSON_DIAGNOSTICS","text":"<pre><code>#define JSON_DIAGNOSTICS /* value */\n</code></pre> <p>This macro enables extended diagnostics for exception messages. Possible values are <code>1</code> to enable or <code>0</code> to disable (default).</p> <p>When enabled, exception messages contain a JSON Pointer to the JSON value that triggered the exception. Note that enabling this macro increases the size of every JSON value by one pointer and adds some runtime overhead.</p>"},{"location":"api/macros/json_diagnostics/#default-definition","title":"Default definition","text":"<p>The default value is <code>0</code> (extended diagnostics are switched off).</p> <pre><code>#define JSON_DIAGNOSTICS 0\n</code></pre> <p>When the macro is not defined, the library will define it to its default value.</p>"},{"location":"api/macros/json_diagnostics/#notes","title":"Notes","text":"<p>ABI compatibility</p> <p>As of version 3.11.0, this macro is no longer required to be defined consistently throughout a codebase to avoid One Definition Rule (ODR) violations, as the value of this macro is encoded in the namespace, resulting in distinct symbol names. </p> <p>This allows different parts of a codebase to use different versions or configurations of this library without causing improper behavior.</p> <p>Where possible, it is still recommended that all code define this the same way for maximum interoperability.</p> <p>CMake option</p> <p>Diagnostic messages can also be controlled with the CMake option <code>JSON_Diagnostics</code> (<code>OFF</code> by default) which defines <code>JSON_DIAGNOSTICS</code> accordingly.</p>"},{"location":"api/macros/json_diagnostics/#examples","title":"Examples","text":"Example 1: default behavior <pre><code>#include &lt;iostream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    json j;\n    j[\"address\"][\"street\"] = \"Fake Street\";\n    j[\"address\"][\"housenumber\"] = \"12\";\n\n    try\n    {\n        int housenumber = j[\"address\"][\"housenumber\"];\n    }\n    catch (const json::exception&amp; e)\n    {\n        std::cout &lt;&lt; e.what() &lt;&lt; '\\n';\n    }\n}\n</code></pre> <p>Output:</p> <pre><code>[json.exception.type_error.302] type must be number, but is string\n</code></pre> <p>This exception can be hard to debug if storing the value <code>\"12\"</code> and accessing it is further apart.</p> Example 2: extended diagnostic messages <pre><code>#include &lt;iostream&gt;\n\n# define JSON_DIAGNOSTICS 1\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    json j;\n    j[\"address\"][\"street\"] = \"Fake Street\";\n    j[\"address\"][\"housenumber\"] = \"12\";\n\n    try\n    {\n        int housenumber = j[\"address\"][\"housenumber\"];\n    }\n    catch (const json::exception&amp; e)\n    {\n        std::cout &lt;&lt; e.what() &lt;&lt; '\\n';\n    }\n}\n</code></pre> <p>Output:</p> <pre><code>[json.exception.type_error.302] (/address/housenumber) type must be number, but is string\n</code></pre> <p>Now the exception message contains a JSON Pointer <code>/address/housenumber</code> that indicates which value has the wrong type.</p> Example 3: using only diagnostic positions in exceptions <pre><code>#include &lt;iostream&gt;\n\n#define JSON_DIAGNOSTIC_POSITIONS 1\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\n/* Demonstration of type error exception with diagnostic positions support enabled */\nint main()\n{\n    //Invalid json string - housenumber type must be int instead of string\n    const std::string json_invalid_string = R\"(\n    {\n        \"address\": {\n            \"street\": \"Fake Street\",\n            \"housenumber\": \"1\"\n        }\n    }\n    )\";\n    json j = json::parse(json_invalid_string);\n    try\n    {\n        int housenumber = j[\"address\"][\"housenumber\"];\n        std::cout &lt;&lt; housenumber;\n    }\n    catch (const json::exception&amp; e)\n    {\n        std::cout &lt;&lt; e.what() &lt;&lt; '\\n';\n    }\n}\n</code></pre> <p>Output:</p> <p><pre><code>[json.exception.type_error.302] (bytes 92-95) type must be number, but is string\n</code></pre>     The output shows the exception with start/end positions only.</p>"},{"location":"api/macros/json_diagnostics/#see-also","title":"See also","text":"<ul> <li> JSON_Diagnostics - CMake option to control the macro</li> <li>JSON_DIAGNOSTIC_POSITIONS - macro to access positions of elements</li> </ul>"},{"location":"api/macros/json_diagnostics/#version-history","title":"Version history","text":"<ul> <li>Added in version 3.10.0.</li> <li>As of version 3.11.0, the definition is allowed to vary between translation units.</li> </ul>"},{"location":"api/macros/json_disable_enum_serialization/","title":"JSON_DISABLE_ENUM_SERIALIZATION","text":"<pre><code>#define JSON_DISABLE_ENUM_SERIALIZATION /* value */\n</code></pre> <p>When defined to <code>1</code>, default serialization and deserialization functions for enums are excluded and have to be provided by the user, for example, using <code>NLOHMANN_JSON_SERIALIZE_ENUM</code> (see arbitrary type conversions for more details).</p> <p>Parsing or serializing an enum will result in a compiler error.</p> <p>This works for both unscoped and scoped enums.</p>"},{"location":"api/macros/json_disable_enum_serialization/#default-definition","title":"Default definition","text":"<p>The default value is <code>0</code>.</p> <pre><code>#define JSON_DISABLE_ENUM_SERIALIZATION 0\n</code></pre>"},{"location":"api/macros/json_disable_enum_serialization/#notes","title":"Notes","text":"<p>CMake option</p> <p>Enum serialization can also be controlled with the CMake option <code>JSON_DisableEnumSerialization</code> (<code>OFF</code> by default) which defines <code>JSON_DISABLE_ENUM_SERIALIZATION</code> accordingly.</p>"},{"location":"api/macros/json_disable_enum_serialization/#examples","title":"Examples","text":"Example 1: Disabled behavior <p>The code below forces the library not to create default serialization/deserialization functions <code>from_json</code> and <code>to_json</code>, meaning the code below does not compile.</p> <pre><code>#define JSON_DISABLE_ENUM_SERIALIZATION 1\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nenum class Choice\n{\n    first,\n    second,\n};\n\nint main()\n{\n    // normally invokes to_json serialization function but with JSON_DISABLE_ENUM_SERIALIZATION defined, it does not\n    const json j = Choice::first; \n\n    // normally invokes from_json parse function but with JSON_DISABLE_ENUM_SERIALIZATION defined, it does not\n    Choice ch = j.get&lt;Choice&gt;();\n}\n</code></pre> Example 2: Serialize enum macro <p>The code below forces the library not to create default serialization/deserialization functions <code>from_json</code> and <code>to_json</code>, but uses <code>NLOHMANN_JSON_SERIALIZE_ENUM</code> to parse and serialize the enum.</p> <pre><code>#define JSON_DISABLE_ENUM_SERIALIZATION 1\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nenum class Choice\n{\n    first,\n    second,\n};\n\nNLOHMANN_JSON_SERIALIZE_ENUM(Choice,\n{\n    { Choice::first, \"first\" },\n    { Choice::second, \"second\" },\n})\n\nint main()\n{\n    // uses user-defined to_json function defined by macro\n    const json j = Choice::first; \n\n    // uses user-defined from_json function defined by macro\n    Choice ch = j.get&lt;Choice&gt;();\n}\n</code></pre> Example 3: User-defined serialization/deserialization functions <p>The code below forces the library not to create default serialization/deserialization functions <code>from_json</code> and <code>to_json</code>, but uses user-defined functions to parse and serialize the enum.</p> <pre><code>#define JSON_DISABLE_ENUM_SERIALIZATION 1\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nenum class Choice\n{\n    first,\n    second,\n};\n\nvoid from_json(const json&amp; j, Choice&amp; ch)\n{\n    auto value = j.get&lt;std::string&gt;();\n    if (value == \"first\")\n    {\n        ch = Choice::first;\n    }\n    else if (value == \"second\")\n    {\n        ch = Choice::second;\n    }\n}\n\nvoid to_json(json&amp; j, const Choice&amp; ch)\n{\n    if (ch == Choice::first)\n    {\n        j = \"first\";\n    }\n    else if (ch == Choice::second)\n    {\n        j = \"second\";\n    }\n}\n\nint main()\n{\n    // uses user-defined to_json function\n    const json j = Choice::first; \n\n    // uses user-defined from_json function\n    Choice ch = j.get&lt;Choice&gt;();\n}\n</code></pre>"},{"location":"api/macros/json_disable_enum_serialization/#see-also","title":"See also","text":"<ul> <li> JSON_DisableEnumSerialization - CMake option to control   the macro</li> <li><code>NLOHMANN_JSON_SERIALIZE_ENUM</code> - serialize/deserialize an enum</li> </ul>"},{"location":"api/macros/json_disable_enum_serialization/#version-history","title":"Version history","text":"<ul> <li>Added in version 3.11.0.</li> </ul>"},{"location":"api/macros/json_has_cpp_11/","title":"JSON_HAS_CPP_11, JSON_HAS_CPP_14, JSON_HAS_CPP_17, JSON_HAS_CPP_20, JSON_HAS_CPP_23, JSON_HAS_CPP_26","text":"<pre><code>#define JSON_HAS_CPP_11\n#define JSON_HAS_CPP_14\n#define JSON_HAS_CPP_17\n#define JSON_HAS_CPP_20\n#define JSON_HAS_CPP_23\n#define JSON_HAS_CPP_26\n</code></pre> <p>The library targets C++11, but also supports some features introduced in later C++ versions (e.g., <code>std::string_view</code> support for C++17). For these new features, the library implements some preprocessor checks to determine the C++ standard. By defining any of these symbols, the internal check is overridden and the provided C++ version is unconditionally assumed. This can be helpful for compilers that only implement parts of the standard and would be detected incorrectly.</p>"},{"location":"api/macros/json_has_cpp_11/#default-definition","title":"Default definition","text":"<p>The default value is detected based on preprocessor macros such as <code>__cplusplus</code>, <code>_HAS_CXX17</code>, or <code>_MSVC_LANG</code>.</p>"},{"location":"api/macros/json_has_cpp_11/#notes","title":"Notes","text":"<ul> <li>When the C++ standard is detected automatically, <code>JSON_HAS_CPP_11</code> is always defined. When you override the   detection by defining one of these macros manually, the automatic detection is skipped entirely, so you should define   all applicable macros (including <code>JSON_HAS_CPP_11</code>) yourself.</li> <li>All macros are undefined outside the library.</li> </ul>"},{"location":"api/macros/json_has_cpp_11/#examples","title":"Examples","text":"Example <p>The code below forces the library to use the C++14 standard:</p> <pre><code>#define JSON_HAS_CPP_14 1\n#include &lt;nlohmann/json.hpp&gt;\n\n...\n</code></pre>"},{"location":"api/macros/json_has_cpp_11/#version-history","title":"Version history","text":"<ul> <li>Added in version 3.10.5.</li> <li>Added <code>JSON_HAS_CPP_23</code> in version 3.12.0.</li> <li>Added <code>JSON_HAS_CPP_26</code> in version 3.12.x.</li> </ul>"},{"location":"api/macros/json_has_filesystem/","title":"JSON_HAS_FILESYSTEM / JSON_HAS_EXPERIMENTAL_FILESYSTEM","text":"<pre><code>#define JSON_HAS_FILESYSTEM /* value */\n#define JSON_HAS_EXPERIMENTAL_FILESYSTEM /* value */\n</code></pre> <p>When compiling with C++17, the library provides conversions from and to <code>std::filesystem::path</code>. As compiler support for filesystem is limited, the library tries to detect whether <code>&lt;filesystem&gt;</code>/<code>std::filesystem</code> (<code>JSON_HAS_FILESYSTEM</code>) or <code>&lt;experimental/filesystem&gt;</code>/<code>std::experimental::filesystem</code> (<code>JSON_HAS_EXPERIMENTAL_FILESYSTEM</code>) should be used. To override the built-in check, define <code>JSON_HAS_FILESYSTEM</code> or <code>JSON_HAS_EXPERIMENTAL_FILESYSTEM</code> to <code>1</code>.</p>"},{"location":"api/macros/json_has_filesystem/#default-definition","title":"Default definition","text":"<p>The default value is detected based on the preprocessor macros <code>__cpp_lib_filesystem</code>, <code>__cpp_lib_experimental_filesystem</code>, <code>__has_include(&lt;filesystem&gt;)</code>, or <code>__has_include(&lt;experimental/filesystem&gt;)</code>.</p>"},{"location":"api/macros/json_has_filesystem/#notes","title":"Notes","text":"<ul> <li>Note that older compilers or older versions of libstdc++ also require the library <code>stdc++fs</code> to be linked to for   filesystem support.</li> <li>Both macros are undefined outside the library.</li> </ul>"},{"location":"api/macros/json_has_filesystem/#examples","title":"Examples","text":"Example <p>The code below forces the library to use the header <code>&lt;experimental/filesystem&gt;</code>.</p> <pre><code>#define JSON_HAS_EXPERIMENTAL_FILESYSTEM 1\n#include &lt;nlohmann/json.hpp&gt;\n\n...\n</code></pre>"},{"location":"api/macros/json_has_filesystem/#version-history","title":"Version history","text":"<ul> <li>Added in version 3.10.5.</li> </ul>"},{"location":"api/macros/json_has_ranges/","title":"JSON_HAS_RANGES","text":"<pre><code>#define JSON_HAS_RANGES /* value */\n</code></pre> <p>This macro indicates whether the standard library has any support for ranges. Implies support for concepts. Possible values are <code>1</code> when supported or <code>0</code> when unsupported.</p>"},{"location":"api/macros/json_has_ranges/#default-definition","title":"Default definition","text":"<p>The default value is detected based on the preprocessor macro <code>__cpp_lib_ranges</code>.</p> <p>When the macro is not defined, the library will define it to its default value.</p>"},{"location":"api/macros/json_has_ranges/#examples","title":"Examples","text":"Example <p>The code below forces the library to enable support for ranges:</p> <pre><code>#define JSON_HAS_RANGES 1\n#include &lt;nlohmann/json.hpp&gt;\n\n...\n</code></pre>"},{"location":"api/macros/json_has_ranges/#version-history","title":"Version history","text":"<ul> <li>Added in version 3.11.0.</li> </ul>"},{"location":"api/macros/json_has_static_rtti/","title":"JSON_HAS_STATIC_RTTI","text":"<pre><code>#define JSON_HAS_STATIC_RTTI /* value */\n</code></pre> <p>This macro indicates whether the standard library has any support for RTTI (run time type information). Possible values are <code>1</code> when supported or <code>0</code> when unsupported.</p>"},{"location":"api/macros/json_has_static_rtti/#default-definition","title":"Default definition","text":"<p>The default value is detected based on the preprocessor macro <code>_HAS_STATIC_RTTI</code>.</p> <p>When the macro is not defined, the library will define it to its default value.</p>"},{"location":"api/macros/json_has_static_rtti/#examples","title":"Examples","text":"Example <p>The code below forces the library to enable support for libraries with RTTI dependence:</p> <pre><code>#define JSON_HAS_STATIC_RTTI 1\n#include &lt;nlohmann/json.hpp&gt;\n\n...\n</code></pre>"},{"location":"api/macros/json_has_static_rtti/#version-history","title":"Version history","text":"<ul> <li>Added in version 3.11.3.</li> </ul>"},{"location":"api/macros/json_has_three_way_comparison/","title":"JSON_HAS_THREE_WAY_COMPARISON","text":"<pre><code>#define JSON_HAS_THREE_WAY_COMPARISON /* value */\n</code></pre> <p>This macro indicates whether the compiler and standard library support 3-way comparison. Possible values are <code>1</code> when supported or <code>0</code> when unsupported.</p>"},{"location":"api/macros/json_has_three_way_comparison/#default-definition","title":"Default definition","text":"<p>The default value is detected based on the preprocessor macros <code>__cpp_impl_three_way_comparison</code> and <code>__cpp_lib_three_way_comparison</code>.</p> <p>When the macro is not defined, the library will define it to its default value.</p>"},{"location":"api/macros/json_has_three_way_comparison/#examples","title":"Examples","text":"Example <p>The code below forces the library to use 3-way comparison:</p> <pre><code>#define JSON_HAS_THREE_WAY_COMPARISON 1\n#include &lt;nlohmann/json.hpp&gt;\n\n...\n</code></pre>"},{"location":"api/macros/json_has_three_way_comparison/#version-history","title":"Version history","text":"<ul> <li>Added in version 3.11.0.</li> </ul>"},{"location":"api/macros/json_no_io/","title":"JSON_NO_IO","text":"<pre><code>#define JSON_NO_IO\n</code></pre> <p>When defined, headers <code>&lt;cstdio&gt;</code>, <code>&lt;ios&gt;</code>, <code>&lt;iosfwd&gt;</code>, <code>&lt;istream&gt;</code>, and <code>&lt;ostream&gt;</code> are not included and parse functions relying on these headers are excluded. This is relevant for environments where these I/O functions are disallowed for security reasons (e.g., Intel Software Guard Extensions (SGX)).</p>"},{"location":"api/macros/json_no_io/#default-definition","title":"Default definition","text":"<p>By default, <code>JSON_NO_IO</code> is not defined.</p> <pre><code>#undef JSON_NO_IO\n</code></pre>"},{"location":"api/macros/json_no_io/#examples","title":"Examples","text":"Example <p>The code below forces the library not to use the headers <code>&lt;cstdio&gt;</code>, <code>&lt;ios&gt;</code>, <code>&lt;iosfwd&gt;</code>, <code>&lt;istream&gt;</code>, and <code>&lt;ostream&gt;</code>.</p> <pre><code>#define JSON_NO_IO 1\n#include &lt;nlohmann/json.hpp&gt;\n\n...\n</code></pre>"},{"location":"api/macros/json_no_io/#version-history","title":"Version history","text":"<ul> <li>Added in version 3.10.0.</li> </ul>"},{"location":"api/macros/json_noexception/","title":"JSON_NOEXCEPTION","text":"<pre><code>#define JSON_NOEXCEPTION\n</code></pre> <p>Exceptions can be switched off by defining the symbol <code>JSON_NOEXCEPTION</code>. When defining <code>JSON_NOEXCEPTION</code>, <code>try</code> is replaced by <code>if (true)</code>, <code>catch</code> is replaced by <code>if (false)</code>, and <code>throw</code> is replaced by <code>std::abort()</code>.</p> <p>The same effect is achieved by setting the compiler flag <code>-fno-exceptions</code>.</p>"},{"location":"api/macros/json_noexception/#default-definition","title":"Default definition","text":"<p>By default, the macro is not defined.</p> <pre><code>#undef JSON_NOEXCEPTION\n</code></pre>"},{"location":"api/macros/json_noexception/#notes","title":"Notes","text":"<p>The explanatory <code>what()</code> string of exceptions is not available for MSVC if exceptions are disabled, see #2824.</p>"},{"location":"api/macros/json_noexception/#examples","title":"Examples","text":"Example <p>The code below switches off exceptions in the library.</p> <pre><code>#define JSON_NOEXCEPTION 1\n#include &lt;nlohmann/json.hpp&gt;\n\n...\n</code></pre>"},{"location":"api/macros/json_noexception/#see-also","title":"See also","text":"<ul> <li>Switch off exceptions for more information how to switch off exceptions</li> </ul>"},{"location":"api/macros/json_noexception/#version-history","title":"Version history","text":"<p>Added in version 2.1.0.</p>"},{"location":"api/macros/json_skip_library_version_check/","title":"JSON_SKIP_LIBRARY_VERSION_CHECK","text":"<pre><code>#define JSON_SKIP_LIBRARY_VERSION_CHECK\n</code></pre> <p>When defined, the library will not create a compiler warning when a different version of the library was already included.</p>"},{"location":"api/macros/json_skip_library_version_check/#default-definition","title":"Default definition","text":"<p>By default, the macro is not defined.</p> <pre><code>#undef JSON_SKIP_LIBRARY_VERSION_CHECK\n</code></pre>"},{"location":"api/macros/json_skip_library_version_check/#notes","title":"Notes","text":"<p>ABI compatibility</p> <p>Mixing different library versions in the same code can be a problem as the different versions may not be ABI compatible.</p>"},{"location":"api/macros/json_skip_library_version_check/#examples","title":"Examples","text":"Example <p>The code below switches off the warning about including a different version of the library.</p> <pre><code>#define JSON_SKIP_LIBRARY_VERSION_CHECK 1\n#include &lt;nlohmann/json.hpp&gt;\n\n...\n</code></pre> <p>Example</p> <p>The following warning will be shown in case a different version of the library was already included:</p> <pre><code>Already included a different version of the library!\n</code></pre>"},{"location":"api/macros/json_skip_library_version_check/#version-history","title":"Version history","text":"<p>Added in version 3.11.0.</p>"},{"location":"api/macros/json_skip_unsupported_compiler_check/","title":"JSON_SKIP_UNSUPPORTED_COMPILER_CHECK","text":"<pre><code>#define JSON_SKIP_UNSUPPORTED_COMPILER_CHECK\n</code></pre> <p>When defined, the library will not create a compile error when a known unsupported compiler is detected. This allows  using the library with compilers that do not fully support C++11 and may only work if unsupported features are not used.</p>"},{"location":"api/macros/json_skip_unsupported_compiler_check/#default-definition","title":"Default definition","text":"<p>By default, the macro is not defined.</p> <pre><code>#undef JSON_SKIP_UNSUPPORTED_COMPILER_CHECK\n</code></pre>"},{"location":"api/macros/json_skip_unsupported_compiler_check/#examples","title":"Examples","text":"Example <p>The code below switches off the check whether the compiler is supported.</p> <pre><code>#define JSON_SKIP_UNSUPPORTED_COMPILER_CHECK 1\n#include &lt;nlohmann/json.hpp&gt;\n\n...\n</code></pre>"},{"location":"api/macros/json_skip_unsupported_compiler_check/#version-history","title":"Version history","text":"<p>Added in version 3.2.0.</p>"},{"location":"api/macros/json_throw_user/","title":"JSON_CATCH_USER, JSON_THROW_USER, JSON_TRY_USER","text":"<pre><code>// (1)\n#define JSON_CATCH_USER(exception) /* value */\n// (2)\n#define JSON_THROW_USER(exception) /* value */\n// (3)\n#define JSON_TRY_USER /* value */\n</code></pre> <p>Controls how exceptions are handled by the library.</p> <ol> <li>This macro overrides <code>catch</code> calls inside the library.    The argument is the type of the exception to catch. As of version 3.8.0, the library only catches <code>std::out_of_range</code>    exceptions internally to rethrow them as <code>json::out_of_range</code> exceptions.    The macro is always followed by a scope.</li> <li>This macro overrides <code>throw</code> calls inside the library. The argument is the exception to be thrown. Note that    <code>JSON_THROW_USER</code> should leave the current scope (e.g., by throwing or aborting), as continuing after it may yield    undefined behavior.</li> <li>This macro overrides <code>try</code> calls inside the library. It has no arguments and is always followed by a scope.</li> </ol>"},{"location":"api/macros/json_throw_user/#parameters","title":"Parameters","text":"<code>exception</code> (in) an exception type"},{"location":"api/macros/json_throw_user/#default-definition","title":"Default definition","text":"<p>By default, the macros map to their respective C++ keywords:</p> <pre><code>#define JSON_CATCH_USER(exception) catch(exception)\n#define JSON_THROW_USER(exception) throw exception\n#define JSON_TRY_USER              try\n</code></pre> <p>When exceptions are switched off, the <code>try</code> block is executed unconditionally, and throwing exceptions is replaced by calling <code>std::abort</code> to make reaching the <code>throw</code> branch abort the process.</p> <pre><code>#define JSON_THROW_USER(exception) std::abort()\n#define JSON_TRY_USER              if (true)\n#define JSON_CATCH_USER(exception) if (false)\n</code></pre>"},{"location":"api/macros/json_throw_user/#examples","title":"Examples","text":"Example <p>The code below switches off exceptions and creates a log entry with a detailed error message in case of errors.</p> <pre><code>#include &lt;iostream&gt;\n\n#define JSON_TRY_USER if(true)\n#define JSON_CATCH_USER(exception) if(false)\n#define JSON_THROW_USER(exception)                           \\\n    {std::clog &lt;&lt; \"Error in \" &lt;&lt; __FILE__ &lt;&lt; \":\" &lt;&lt; __LINE__ \\\n               &lt;&lt; \" (function \" &lt;&lt; __FUNCTION__ &lt;&lt; \") - \"    \\\n               &lt;&lt; (exception).what() &lt;&lt; std::endl;           \\\n     std::abort();}\n\n#include &lt;nlohmann/json.hpp&gt;\n</code></pre>"},{"location":"api/macros/json_throw_user/#see-also","title":"See also","text":"<ul> <li>Switch off exceptions for more information how to switch off exceptions</li> <li>JSON_NOEXCEPTION - switch off exceptions</li> </ul>"},{"location":"api/macros/json_throw_user/#version-history","title":"Version history","text":"<ul> <li>Added in version 3.1.0.</li> </ul>"},{"location":"api/macros/json_use_global_udls/","title":"JSON_USE_GLOBAL_UDLS","text":"<pre><code>#define JSON_USE_GLOBAL_UDLS /* value */\n</code></pre> <p>When defined to <code>1</code>, the user-defined string literals (UDLs) are placed into the global namespace instead of <code>nlohmann::literals::json_literals</code>.</p>"},{"location":"api/macros/json_use_global_udls/#default-definition","title":"Default definition","text":"<p>The default value is <code>1</code>.</p> <pre><code>#define JSON_USE_GLOBAL_UDLS 1\n</code></pre> <p>When the macro is not defined, the library will define it to its default value.</p>"},{"location":"api/macros/json_use_global_udls/#notes","title":"Notes","text":"<p>Future behavior change</p> <p>The user-defined string literals will be removed from the global namespace in the next major release of the library.</p> <p>To prepare existing code, define <code>JSON_USE_GLOBAL_UDLS</code> to <code>0</code> and bring the string literals into scope where needed. Refer to any of the string literals for details.</p> <p>CMake option</p> <p>The placement of user-defined string literals can also be controlled with the CMake option <code>JSON_GlobalUDLs</code> (<code>ON</code> by default) which defines <code>JSON_USE_GLOBAL_UDLS</code> accordingly.</p>"},{"location":"api/macros/json_use_global_udls/#examples","title":"Examples","text":"Example 1: Default behavior <p>The code below shows the default behavior using the <code>_json</code> UDL.</p> <pre><code>#include &lt;nlohmann/json.hpp&gt;\n\n#include &lt;iostream&gt;\n\nint main()\n{\n    auto j = \"42\"_json;\n\n    std::cout &lt;&lt; j &lt;&lt; std::endl;\n}\n</code></pre> <p>Output:</p> <pre><code>42\n</code></pre> Example 2: Namespaced UDLs <p>The code below shows how UDLs need to be brought into scope before using <code>_json</code> when <code>JSON_USE_GLOBAL_UDLS</code> is defined to <code>0</code>.</p> <pre><code>#define JSON_USE_GLOBAL_UDLS 0\n#include &lt;nlohmann/json.hpp&gt;\n\n#include &lt;iostream&gt;\n\nint main()\n{\n    // auto j = \"42\"_json; // This line would fail to compile,\n                           // because the UDLs are not in the global namespace\n\n    // Bring the UDLs into scope\n    using namespace nlohmann::json_literals;\n\n    auto j = \"42\"_json;\n\n    std::cout &lt;&lt; j &lt;&lt; std::endl;\n}\n</code></pre> <p>Output:</p> <pre><code>42\n</code></pre>"},{"location":"api/macros/json_use_global_udls/#see-also","title":"See also","text":"<ul> <li><code>operator\"\"_json</code></li> <li><code>operator\"\"_json_pointer</code></li> <li> JSON_GlobalUDLs - CMake option to control the macro</li> </ul>"},{"location":"api/macros/json_use_global_udls/#version-history","title":"Version history","text":"<ul> <li>Added in version 3.11.0.</li> </ul>"},{"location":"api/macros/json_use_implicit_conversions/","title":"JSON_USE_IMPLICIT_CONVERSIONS","text":"<pre><code>#define JSON_USE_IMPLICIT_CONVERSIONS /* value */\n</code></pre> <p>When defined to <code>0</code>, implicit conversions are switched off. By default, implicit conversions are switched on. The value directly affects <code>operator ValueType</code>.</p>"},{"location":"api/macros/json_use_implicit_conversions/#default-definition","title":"Default definition","text":"<p>By default, implicit conversions are enabled.</p> <pre><code>#define JSON_USE_IMPLICIT_CONVERSIONS 1\n</code></pre>"},{"location":"api/macros/json_use_implicit_conversions/#notes","title":"Notes","text":"<p>Future behavior change</p> <p>Implicit conversions will be switched off by default in the next major release of the library.</p> <p>You can prepare existing code by already defining <code>JSON_USE_IMPLICIT_CONVERSIONS</code> to <code>0</code> and replace any implicit conversions with calls to <code>get</code>.</p> <p>CMake option</p> <p>Implicit conversions can also be controlled with the CMake option <code>JSON_ImplicitConversions</code> (<code>ON</code> by default) which defines <code>JSON_USE_IMPLICIT_CONVERSIONS</code> accordingly.</p>"},{"location":"api/macros/json_use_implicit_conversions/#examples","title":"Examples","text":"Example <p>This is an example for an implicit conversion:</p> <pre><code>json j = \"Hello, world!\";\nstd::string s = j;\n</code></pre> <p>When <code>JSON_USE_IMPLICIT_CONVERSIONS</code> is defined to <code>0</code>, the code above does no longer compile. Instead, it must be written like this:</p> <pre><code>json j = \"Hello, world!\";\nauto s = j.get&lt;std::string&gt;();\n</code></pre>"},{"location":"api/macros/json_use_implicit_conversions/#see-also","title":"See also","text":"<ul> <li>operator ValueType - get a value (implicit)</li> <li>get - get a value (explicit)</li> <li> JSON_ImplicitConversions - CMake option to control the macro</li> </ul>"},{"location":"api/macros/json_use_implicit_conversions/#version-history","title":"Version history","text":"<ul> <li>Added in version 3.9.0.</li> </ul>"},{"location":"api/macros/json_use_legacy_discarded_value_comparison/","title":"JSON_USE_LEGACY_DISCARDED_VALUE_COMPARISON","text":"<pre><code>#define JSON_USE_LEGACY_DISCARDED_VALUE_COMPARISON /* value */\n</code></pre> <p>This macro enables the (incorrect) legacy comparison behavior of discarded JSON values. Possible values are <code>1</code> to enable or <code>0</code> to disable (default).</p> <p>When enabled, comparisons involving at least one discarded JSON value yield results as follows:</p> Operator Result <code>==</code> <code>false</code> <code>!=</code> <code>true</code> <code>&lt;</code> <code>false</code> <code>&lt;=</code> <code>true</code> <code>&gt;=</code> <code>true</code> <code>&gt;</code> <code>false</code> <p>Otherwise, comparisons involving at least one discarded JSON value always yield <code>false</code>.</p>"},{"location":"api/macros/json_use_legacy_discarded_value_comparison/#default-definition","title":"Default definition","text":"<p>The default value is <code>0</code>.</p> <pre><code>#define JSON_USE_LEGACY_DISCARDED_VALUE_COMPARISON 0\n</code></pre> <p>When the macro is not defined, the library will define it to its default value.</p>"},{"location":"api/macros/json_use_legacy_discarded_value_comparison/#notes","title":"Notes","text":"<p>Inconsistent behavior in C++20 and beyond</p> <p>When targeting C++20 or above, enabling the legacy comparison behavior is strongly discouraged.</p> <ul> <li>The 3-way comparison operator (<code>&lt;=&gt;</code>) will always give the correct result     (<code>std::partial_ordering::unordered</code>) regardless of the value of     <code>JSON_USE_LEGACY_DISCARDED_VALUE_COMPARISON</code>.</li> <li>Overloads for the equality and relational operators emulate the legacy behavior.</li> </ul> <p>Code outside your control may use either 3-way comparison or the equality and relational operators, resulting in inconsistent and unpredictable behavior.</p> <p>See <code>operator&lt;=&gt;</code> for more information on 3-way comparison.</p> <p>Deprecation</p> <p>The legacy comparison behavior is deprecated and may be removed in a future major version release.</p> <p>New code should not depend on it and existing code should try to remove or rewrite expressions relying on it.</p> <p>CMake option</p> <p>Legacy comparison can also be controlled with the CMake option <code>JSON_LegacyDiscardedValueComparison</code> (<code>OFF</code> by default) which defines <code>JSON_USE_LEGACY_DISCARDED_VALUE_COMPARISON</code> accordingly.</p>"},{"location":"api/macros/json_use_legacy_discarded_value_comparison/#examples","title":"Examples","text":"Example <p>The code below switches on the legacy discarded value comparison behavior in the library.</p> <pre><code>#define JSON_USE_LEGACY_DISCARDED_VALUE_COMPARISON 1\n#include &lt;nlohmann/json.hpp&gt;\n\n...\n</code></pre>"},{"location":"api/macros/json_use_legacy_discarded_value_comparison/#see-also","title":"See also","text":"<ul> <li> JSON_LegacyDiscardedValueComparison - CMake option to control the macro</li> </ul>"},{"location":"api/macros/json_use_legacy_discarded_value_comparison/#version-history","title":"Version history","text":"<ul> <li>Added in version 3.11.0.</li> </ul>"},{"location":"api/macros/nlohmann_define_derived_type/","title":"NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_ONLY_SERIALIZE, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE","text":"NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_DEFAULT,     NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_ONLY_SERIALIZE, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE,     NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE <pre><code>// (1)\n#define NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE(type, base_type, member...)\n// (2)\n#define NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_DEFAULT(type, base_type, member...)\n// (3)\n#define NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_ONLY_SERIALIZE(type, base_type, member...)\n\n// (4)\n#define NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE(type, base_type, member...)\n// (5)\n#define NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_DEFAULT(type, base_type, member...)\n// (6)\n#define NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE(type, base_type, member...)\n</code></pre> <p>These macros can be used to simplify the serialization/deserialization of derived types if you want to use a JSON object as serialization and want to use the member variable names as object keys in that object.</p> <ul> <li>Macros 1, 2, and 3 are to be defined inside the class/struct to create code for. Like <code>NLOHMANN_DEFINE_TYPE_INTRUSIVE</code>, they can access private members.</li> <li>Macros 4, 5, and 6 are to be defined outside the class/struct to create code for, but inside its namespace. Like <code>NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE</code>, they cannot access private members.</li> </ul> <p>The first parameter is the name of the derived class/struct, the second parameter is the name of the base class/struct and all remaining parameters name the members. The base type must be already serializable/deserializable.</p> <ul> <li>Macros 1 and 4 will use <code>at</code> during deserialization and will throw   <code>out_of_range.403</code> if a key is missing in the JSON object.</li> <li>Macros 2 and 5 will use <code>value</code> during deserialization and fall back to the default value for the    respective type of the member variable if a key in the JSON object is missing. The generated <code>from_json()</code> function    default constructs an object and uses its values as the defaults when calling the <code>value</code> function.</li> </ul> <p>Summary:</p> Need access to private members Need only serialization Allow missing values when de-serializing macro NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_DEFAULT NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_ONLY_SERIALIZE NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_DEFAULT NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE"},{"location":"api/macros/nlohmann_define_derived_type/#parameters","title":"Parameters","text":"<code>type</code> (in) name of the type (class, struct) to serialize/deserialize <code>base_type</code> (in) name of the base type (class, struct) <code>type</code> is derived from <code>member</code> (in) name of the member variable to serialize/deserialize; up to 63 members can be given as a comma-separated list"},{"location":"api/macros/nlohmann_define_derived_type/#default-definition","title":"Default definition","text":"<p>Macros 1 and 2 add two friend functions to the class which take care of the serialization and deserialization:</p> <pre><code>template&lt;typename BasicJsonType&gt;\nfriend void to_json(BasicJsonType&amp;, const type&amp;);\ntemplate&lt;typename BasicJsonType&gt;\nfriend void from_json(const BasicJsonType&amp;, type&amp;);\n</code></pre> <p>Macros 4 and 5 add two functions to the namespace which take care of the serialization and deserialization:</p> <pre><code>template&lt;typename BasicJsonType&gt;\nvoid to_json(BasicJsonType&amp;, const type&amp;);\ntemplate&lt;typename BasicJsonType&gt;\nvoid from_json(const BasicJsonType&amp;, type&amp;);\n</code></pre> <p>Macros 3 and 6 add one function to the namespace, which takes care of the serialization only:</p> <pre><code>template&lt;typename BasicJsonType&gt;\nvoid to_json(BasicJsonType&amp;, const type&amp;);\n</code></pre> <p>In first two cases, they call the <code>to_json</code>/<code>from_json</code> functions of the base type before serializing/deserializing the members of the derived type:</p> <pre><code>class A { /* ... */ };\nclass B : public A { /* ... */ };\n\ntemplate&lt;typename BasicJsonType&gt;\nvoid to_json(BasicJsonType&amp; j, const B&amp; b) {\n    nlohmann::to_json(j, static_cast&lt;const A&amp;&gt;(b));\n    // ...\n}\n\ntemplate&lt;typename BasicJsonType&gt;\nvoid from_json(const BasicJsonType&amp; j, B&amp; b) {\n    nlohmann::from_json(j, static_cast&lt;A&amp;&gt;(b));\n    // ...\n}\n</code></pre> <p>In the third case, only <code>to_json</code> will be called:</p> <pre><code>class A { /* ... */ };\nclass B : public A { /* ... */ };\n\ntemplate&lt;typename BasicJsonType&gt;\nvoid to_json(BasicJsonType&amp; j, const B&amp; b) {\n    nlohmann::to_json(j, static_cast&lt;const A&amp;&gt;(b));\n    // ...\n}\n</code></pre>"},{"location":"api/macros/nlohmann_define_derived_type/#notes","title":"Notes","text":"<p>Prerequisites</p> <ul> <li>Macros 1, 2, and 3 have the same prerequisites of NLOHMANN_DEFINE_TYPE_INTRUSIVE.</li> <li>Macros 4, 5, and 6 have the same prerequisites of NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE.</li> <li>Serialization/deserialization of base types must be defined.</li> </ul> <p>Implementation limits</p> <p>See Implementation limits for NLOHMANN_DEFINE_TYPE_INTRUSIVE and NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE, respectively.</p>"},{"location":"api/macros/nlohmann_define_derived_type/#examples","title":"Examples","text":"NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE <p>Consider the following complete example:</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;iomanip&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing nlohmann::json;\n\nclass A\n{\n  private:\n    double Aa = 0.0;\n    double Ab = 0.0;\n\n  public:\n    A() = default;\n    A(double a, double b) : Aa(a), Ab(b) {}\n    NLOHMANN_DEFINE_TYPE_INTRUSIVE(A, Aa, Ab)\n};\n\nclass B : public A\n{\n  private:\n    int Ba = 0;\n    int Bb = 0;\n\n  public:\n    B() = default;\n    B(int a, int b, double aa, double ab) : A(aa, ab), Ba(a), Bb(b) {}\n    NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE(B, A, Ba, Bb)\n};\n\nint main()\n{\n    B example(23, 42, 3.142, 1.777);\n    json example_json = example;\n\n    std::cout &lt;&lt; std::setw(4) &lt;&lt; example_json &lt;&lt; std::endl;\n}\n</code></pre> <p>Output:</p> <pre><code>{\n    \"Aa\": 3.142,\n    \"Ab\": 1.777,\n    \"Ba\": 23,\n    \"Bb\": 42\n}\n</code></pre> <p>Notes:</p> <ul> <li><code>A</code> and <code>B</code> are default-constructible. This is a requirement for using the macro.</li> <li><code>A</code> has private members and is not a derived class. Hence, macro <code>NLOHMANN_DEFINE_TYPE_INTRUSIVE</code> is used.</li> <li>As <code>B</code> is a derived class, <code>NLOHMANN_DEFINE_TYPE_INTRUSIVE</code> is not applicable, but   <code>NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE</code> must be used.</li> <li>The macro <code>NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE</code> is used inside the class use as   <code>NLOHMANN_DEFINE_TYPE_INTRUSIVE</code>.</li> </ul>"},{"location":"api/macros/nlohmann_define_derived_type/#see-also","title":"See also","text":"<ul> <li>NLOHMANN_DEFINE_TYPE_INTRUSIVE / NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT /    NLOHMANN_DEFINE_TYPE_INTRUSIVE_ONLY_SERIALIZE   for similar macros that can be defined inside a non-derived type.</li> <li>NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE / NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT /    NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE   for similar macros that can be defined outside a non-derived type.</li> <li>Arbitrary Type Conversions for an overview.</li> </ul>"},{"location":"api/macros/nlohmann_define_derived_type/#version-history","title":"Version history","text":"<ol> <li>Added in version 3.12.0.</li> <li>Added in version 3.12.0.</li> <li>Added in version 3.12.0.</li> <li>Added in version 3.12.0.</li> <li>Added in version 3.12.0.</li> <li>Added in version 3.12.0.</li> </ol>"},{"location":"api/macros/nlohmann_define_type_intrusive/","title":"NLOHMANN_DEFINE_TYPE_INTRUSIVE, NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_TYPE_INTRUSIVE_ONLY_SERIALIZE","text":"<pre><code>#define NLOHMANN_DEFINE_TYPE_INTRUSIVE(type, member...)              // (1)\n#define NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT(type, member...) // (2)\n#define NLOHMANN_DEFINE_TYPE_INTRUSIVE_ONLY_SERIALIZE(type, member...) // (3)\n</code></pre> <p>These macros can be used to simplify the serialization/deserialization of types if you want to use a JSON object as serialization and want to use the member variable names as object keys in that object. The macro is to be defined inside the class/struct to create code for. Unlike <code>NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE</code>, it can access private members. The first parameter is the name of the class/struct, and all remaining parameters name the members.</p> <ol> <li>Will use <code>at</code> during deserialization and will throw   <code>out_of_range.403</code> if a key is missing in the JSON object.</li> <li>Will use <code>value</code> during deserialization and fall back to the default value for the    respective type of the member variable if a key in the JSON object is missing. The generated <code>from_json()</code> function    default constructs an object and uses its values as the defaults when calling the <code>value</code> function.</li> <li>Only defines the serialization. Useful in cases when the type does not have a default constructor and only serialization is required.</li> </ol> <p>Summary:</p> Need access to private members Need only serialization Allow missing values when de-serializing macro NLOHMANN_DEFINE_TYPE_INTRUSIVE NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT NLOHMANN_DEFINE_TYPE_INTRUSIVE_ONLY_SERIALIZE"},{"location":"api/macros/nlohmann_define_type_intrusive/#parameters","title":"Parameters","text":"<code>type</code> (in) name of the type (class, struct) to serialize/deserialize <code>member</code> (in) name of the member variable to serialize/deserialize; up to 63 members can be given as a comma-separated list"},{"location":"api/macros/nlohmann_define_type_intrusive/#default-definition","title":"Default definition","text":"<p>The macros add two friend functions to the class which take care of the serialization and deserialization:</p> <pre><code>template&lt;typename BasicJsonType&gt;\nfriend void to_json(BasicJsonType&amp;, const type&amp;);\ntemplate&lt;typename BasicJsonType&gt;\nfriend void from_json(const BasicJsonType&amp;, type&amp;); // except (3)\n</code></pre> <p>See the examples below for the concrete generated code.</p>"},{"location":"api/macros/nlohmann_define_type_intrusive/#notes","title":"Notes","text":"<p>Prerequisites</p> <ol> <li>The type <code>type</code> must be default constructible (except (3)). See How can I use <code>get()</code> for non-default    constructible/non-copyable types? for how to overcome this limitation.</li> <li>The macro must be used inside the type (class/struct).</li> </ol> <p>Implementation limits</p> <ul> <li>The current implementation is limited to at most 63 member variables. If you want to serialize/deserialize types   with more than 63 member variables, you need to define the <code>to_json</code>/<code>from_json</code> functions manually.</li> </ul>"},{"location":"api/macros/nlohmann_define_type_intrusive/#examples","title":"Examples","text":"Example (1): NLOHMANN_DEFINE_TYPE_INTRUSIVE <p>Consider the following complete example:</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\nusing namespace nlohmann::literals;\n\nnamespace ns\n{\nclass person\n{\n  private:\n    std::string name = \"John Doe\";\n    std::string address = \"123 Fake St\";\n    int age = -1;\n\n  public:\n    person() = default;\n    person(std::string name_, std::string address_, int age_)\n        : name(std::move(name_)), address(std::move(address_)), age(age_)\n    {}\n\n    NLOHMANN_DEFINE_TYPE_INTRUSIVE(person, name, address, age)\n};\n} // namespace ns\n\nint main()\n{\n    ns::person p = {\"Ned Flanders\", \"744 Evergreen Terrace\", 60};\n\n    // serialization: person -&gt; json\n    json j = p;\n    std::cout &lt;&lt; \"serialization: \" &lt;&lt; j &lt;&lt; std::endl;\n\n    // deserialization: json -&gt; person\n    json j2 = R\"({\"address\": \"742 Evergreen Terrace\", \"age\": 40, \"name\": \"Homer Simpson\"})\"_json;\n    auto p2 = j2.get&lt;ns::person&gt;();\n\n    // incomplete deserialization:\n    json j3 = R\"({\"address\": \"742 Evergreen Terrace\", \"name\": \"Maggie Simpson\"})\"_json;\n    try\n    {\n        auto p3 = j3.get&lt;ns::person&gt;();\n    }\n    catch (const json::exception&amp; e)\n    {\n        std::cout &lt;&lt; \"deserialization failed: \" &lt;&lt; e.what() &lt;&lt; std::endl;\n    }\n}\n</code></pre> <p>Output:</p> <pre><code>serialization: {\"address\":\"744 Evergreen Terrace\",\"age\":60,\"name\":\"Ned Flanders\"}\ndeserialization failed: [json.exception.out_of_range.403] key 'age' not found\n</code></pre> <p>Notes:</p> <ul> <li><code>ns::person</code> is default-constructible. This is a requirement for using the macro.</li> <li><code>ns::person</code> has private member variables. This makes <code>NLOHMANN_DEFINE_TYPE_INTRUSIVE</code> applicable, but not   <code>NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE</code>.</li> <li>The macro <code>NLOHMANN_DEFINE_TYPE_INTRUSIVE</code> is used inside the class.</li> <li>A missing key \"age\" in the deserialization yields an exception. To fall back to the default value,   <code>NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT</code> can be used.</li> </ul> <p>The macro is equivalent to:</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\nusing namespace nlohmann::literals;\n\nnamespace ns\n{\nclass person\n{\n  private:\n    std::string name = \"John Doe\";\n    std::string address = \"123 Fake St\";\n    int age = -1;\n\n  public:\n    person() = default;\n    person(std::string name_, std::string address_, int age_)\n        : name(std::move(name_)), address(std::move(address_)), age(age_)\n    {}\n\n    template&lt;typename BasicJsonType&gt;\n    friend void to_json(BasicJsonType&amp; nlohmann_json_j, const person&amp; nlohmann_json_t)\n    {\n        nlohmann_json_j[\"name\"] = nlohmann_json_t.name;\n        nlohmann_json_j[\"address\"] = nlohmann_json_t.address;\n        nlohmann_json_j[\"age\"] = nlohmann_json_t.age;\n    }\n\n    template&lt;typename BasicJsonType&gt;\n    friend void from_json(const BasicJsonType&amp; nlohmann_json_j, person&amp; nlohmann_json_t)\n    {\n        nlohmann_json_t.name = nlohmann_json_j.at(\"name\");\n        nlohmann_json_t.address = nlohmann_json_j.at(\"address\");\n        nlohmann_json_t.age = nlohmann_json_j.at(\"age\");\n    }\n};\n} // namespace ns\n\nint main()\n{\n    ns::person p = {\"Ned Flanders\", \"744 Evergreen Terrace\", 60};\n\n    // serialization: person -&gt; json\n    json j = p;\n    std::cout &lt;&lt; \"serialization: \" &lt;&lt; j &lt;&lt; std::endl;\n\n    // deserialization: json -&gt; person\n    json j2 = R\"({\"address\": \"742 Evergreen Terrace\", \"age\": 40, \"name\": \"Homer Simpson\"})\"_json;\n    auto p2 = j2.get&lt;ns::person&gt;();\n\n    // incomplete deserialization:\n    json j3 = R\"({\"address\": \"742 Evergreen Terrace\", \"name\": \"Maggie Simpson\"})\"_json;\n    try\n    {\n        auto p3 = j3.get&lt;ns::person&gt;();\n    }\n    catch (const json::exception&amp; e)\n    {\n        std::cout &lt;&lt; \"deserialization failed: \" &lt;&lt; e.what() &lt;&lt; std::endl;\n    }\n}\n</code></pre> Example (2): NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT <p>Consider the following complete example:</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\nusing namespace nlohmann::literals;\n\nnamespace ns\n{\nclass person\n{\n  private:\n    std::string name = \"John Doe\";\n    std::string address = \"123 Fake St\";\n    int age = -1;\n\n  public:\n    person() = default;\n    person(std::string name_, std::string address_, int age_)\n        : name(std::move(name_)), address(std::move(address_)), age(age_)\n    {}\n\n    NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT(person, name, address, age)\n};\n} // namespace ns\n\nint main()\n{\n    ns::person p = {\"Ned Flanders\", \"744 Evergreen Terrace\", 60};\n\n    // serialization: person -&gt; json\n    json j = p;\n    std::cout &lt;&lt; \"serialization: \" &lt;&lt; j &lt;&lt; std::endl;\n\n    // deserialization: json -&gt; person\n    json j2 = R\"({\"address\": \"742 Evergreen Terrace\", \"age\": 40, \"name\": \"Homer Simpson\"})\"_json;\n    auto p2 = j2.get&lt;ns::person&gt;();\n\n    // incomplete deserialization:\n    json j3 = R\"({\"address\": \"742 Evergreen Terrace\", \"name\": \"Maggie Simpson\"})\"_json;\n    auto p3 = j3.get&lt;ns::person&gt;();\n    std::cout &lt;&lt; \"roundtrip: \" &lt;&lt; json(p3) &lt;&lt; std::endl;\n}\n</code></pre> <p>Output:</p> <pre><code>serialization: {\"address\":\"744 Evergreen Terrace\",\"age\":60,\"name\":\"Ned Flanders\"}\nroundtrip: {\"address\":\"742 Evergreen Terrace\",\"age\":-1,\"name\":\"Maggie Simpson\"}\n</code></pre> <p>Notes:</p> <ul> <li><code>ns::person</code> is default-constructible. This is a requirement for using the macro.</li> <li><code>ns::person</code> has private member variables. This makes <code>NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT</code> applicable,    but not <code>NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT</code>.</li> <li>The macro <code>NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT</code> is used inside the class.</li> <li>A missing key \"age\" in the deserialization does not yield an exception. Instead, the default value <code>-1</code> is used.</li> </ul> <p>The macro is equivalent to:</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\nusing namespace nlohmann::literals;\n\nnamespace ns\n{\nclass person\n{\n  private:\n    std::string name = \"John Doe\";\n    std::string address = \"123 Fake St\";\n    int age = -1;\n\n  public:\n    person() = default;\n    person(std::string name_, std::string address_, int age_)\n        : name(std::move(name_)), address(std::move(address_)), age(age_)\n    {}\n\n    template&lt;typename BasicJsonType&gt;\n    friend void to_json(BasicJsonType&amp; nlohmann_json_j, const person&amp; nlohmann_json_t)\n    {\n        nlohmann_json_j[\"name\"] = nlohmann_json_t.name;\n        nlohmann_json_j[\"address\"] = nlohmann_json_t.address;\n        nlohmann_json_j[\"age\"] = nlohmann_json_t.age;\n    }\n\n    template&lt;typename BasicJsonType&gt;\n    friend void from_json(const BasicJsonType&amp; nlohmann_json_j, person&amp; nlohmann_json_t)\n    {\n        person nlohmann_json_default_obj;\n        nlohmann_json_t.name = nlohmann_json_j.value(\"name\", nlohmann_json_default_obj.name);\n        nlohmann_json_t.address = nlohmann_json_j.value(\"address\", nlohmann_json_default_obj.address);\n        nlohmann_json_t.age = nlohmann_json_j.value(\"age\", nlohmann_json_default_obj.age);\n    }\n};\n} // namespace ns\n\nint main()\n{\n    ns::person p = {\"Ned Flanders\", \"744 Evergreen Terrace\", 60};\n\n    // serialization: person -&gt; json\n    json j = p;\n    std::cout &lt;&lt; \"serialization: \" &lt;&lt; j &lt;&lt; std::endl;\n\n    // deserialization: json -&gt; person\n    json j2 = R\"({\"address\": \"742 Evergreen Terrace\", \"age\": 40, \"name\": \"Homer Simpson\"})\"_json;\n    auto p2 = j2.get&lt;ns::person&gt;();\n\n    // incomplete deserialization:\n    json j3 = R\"({\"address\": \"742 Evergreen Terrace\", \"name\": \"Maggie Simpson\"})\"_json;\n    auto p3 = j3.get&lt;ns::person&gt;();\n    std::cout &lt;&lt; \"roundtrip: \" &lt;&lt; json(p3) &lt;&lt; std::endl;\n}\n</code></pre> <p>Note how a default-initialized <code>person</code> object is used in the <code>from_json</code> to fill missing values.</p> Example (3): NLOHMANN_DEFINE_TYPE_INTRUSIVE_ONLY_SERIALIZE <p>Consider the following complete example:</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\nusing namespace nlohmann::literals;\n\nnamespace ns\n{\nclass person\n{\n  private:\n    std::string name = \"John Doe\";\n    std::string address = \"123 Fake St\";\n    int age = -1;\n\n  public:\n    // No default constructor\n    person(std::string name_, std::string address_, int age_)\n        : name(std::move(name_)), address(std::move(address_)), age(age_)\n    {}\n\n    NLOHMANN_DEFINE_TYPE_INTRUSIVE(person, name, address, age)\n};\n} // namespace ns\n\nint main()\n{\n    ns::person p = {\"Ned Flanders\", \"744 Evergreen Terrace\", 60};\n\n    // serialization: person -&gt; json\n    json j = p;\n    std::cout &lt;&lt; \"serialization: \" &lt;&lt; j &lt;&lt; std::endl;\n}\n</code></pre> <p>Output:</p> <pre><code>serialization: {\"address\":\"744 Evergreen Terrace\",\"age\":60,\"name\":\"Ned Flanders\"}\n</code></pre> <p>Notes:</p> <ul> <li><code>ns::person</code> is non-default-constructible. This allows this macro to be used instead of    <code>NLOHMANN_DEFINE_TYPE_INTRUSIVE</code> and <code>NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT</code>.</li> <li><code>ns::person</code> has private member variables. This makes <code>NLOHMANN_DEFINE_TYPE_INTRUSIVE_ONLY_SERIALIZE</code> applicable, but not   <code>NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE</code>.</li> <li>The macro <code>NLOHMANN_DEFINE_TYPE_INTRUSIVE_ONLY_SERIALIZE</code> is used inside the class.</li> </ul> <p>The macro is equivalent to:</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\nusing namespace nlohmann::literals;\n\nnamespace ns\n{\nclass person\n{\n  private:\n    std::string name = \"John Doe\";\n    std::string address = \"123 Fake St\";\n    int age = -1;\n\n  public:\n    // No default constructor\n    person(std::string name_, std::string address_, int age_)\n        : name(std::move(name_)), address(std::move(address_)), age(age_)\n    {}\n\n    template&lt;typename BasicJsonType&gt;\n    friend void to_json(BasicJsonType&amp; nlohmann_json_j, const person&amp; nlohmann_json_t)\n    {\n        nlohmann_json_j[\"name\"] = nlohmann_json_t.name;\n        nlohmann_json_j[\"address\"] = nlohmann_json_t.address;\n        nlohmann_json_j[\"age\"] = nlohmann_json_t.age;\n    }\n};\n} // namespace ns\n\nint main()\n{\n    ns::person p = {\"Ned Flanders\", \"744 Evergreen Terrace\", 60};\n\n    // serialization: person -&gt; json\n    json j = p;\n    std::cout &lt;&lt; \"serialization: \" &lt;&lt; j &lt;&lt; std::endl;\n}\n</code></pre>"},{"location":"api/macros/nlohmann_define_type_intrusive/#see-also","title":"See also","text":"<ul> <li>NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT,    NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE   for a similar macro that can be defined outside the type.</li> <li>NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_DEFAULT,   NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_ONLY_SERIALIZE, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE,   NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_DEFAULT,    NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE for similar macros for   derived types</li> <li>Arbitrary Type Conversions for an overview.</li> </ul>"},{"location":"api/macros/nlohmann_define_type_intrusive/#version-history","title":"Version history","text":"<ol> <li>Added in version 3.9.0.</li> <li>Added in version 3.11.0.</li> <li>Added in version 3.11.3.</li> </ol>"},{"location":"api/macros/nlohmann_define_type_non_intrusive/","title":"NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE","text":"<pre><code>#define NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE(type, member...)              // (1)\n#define NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT(type, member...) // (2)\n#define NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE(type, member...) // (3)\n</code></pre> <p>These macros can be used to simplify the serialization/deserialization of types if you want to use a JSON object as serialization and want to use the member variable names as object keys in that object. The macro is to be defined outside the class/struct to create code for, but inside its namespace. Unlike <code>NLOHMANN_DEFINE_TYPE_INTRUSIVE</code>, it cannot access private members. The first parameter is the name of the class/struct, and all remaining parameters name the members.</p> <ol> <li>Will use <code>at</code> during deserialization and will throw    <code>out_of_range.403</code> if a key is missing in the JSON object.</li> <li>Will use <code>value</code> during deserialization and fall back to the default value for the    respective type of the member variable if a key in the JSON object is missing. The generated <code>from_json()</code> function    default constructs an object and uses its values as the defaults when calling the <code>value</code> function.</li> <li>Only defines the serialization. Useful in cases when the type does not have a default constructor and only serialization is required.</li> </ol> <p>Summary:</p> Need access to private members Need only serialization Allow missing values when de-serializing macro NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE"},{"location":"api/macros/nlohmann_define_type_non_intrusive/#parameters","title":"Parameters","text":"<code>type</code> (in) name of the type (class, struct) to serialize/deserialize <code>member</code> (in) name of the (public) member variable to serialize/deserialize; up to 63 members can be given as a comma-separated list"},{"location":"api/macros/nlohmann_define_type_non_intrusive/#default-definition","title":"Default definition","text":"<p>The macros add two functions to the namespace which take care of the serialization and deserialization:</p> <pre><code>template&lt;typename BasicJsonType&gt;\nvoid to_json(BasicJsonType&amp;, const type&amp;);\ntemplate&lt;typename BasicJsonType&gt;\nvoid from_json(const BasicJsonType&amp;, type&amp;); // except (3)\n</code></pre> <p>See the examples below for the concrete generated code.</p>"},{"location":"api/macros/nlohmann_define_type_non_intrusive/#notes","title":"Notes","text":"<p>Prerequisites</p> <ol> <li>The type <code>type</code> must be default constructible (except (3). See How can I use <code>get()</code> for non-default constructible/non-copyable types?    for how to overcome this limitation.</li> <li>The macro must be used outside the type (class/struct).</li> <li>The passed members must be public.</li> </ol> <p>Implementation limits</p> <ul> <li>The current implementation is limited to at most 63 member variables. If you want to serialize/deserialize types   with more than 63 member variables, you need to define the <code>to_json</code>/<code>from_json</code> functions manually.</li> </ul>"},{"location":"api/macros/nlohmann_define_type_non_intrusive/#examples","title":"Examples","text":"Example (1): NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE <p>Consider the following complete example:</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\nusing namespace nlohmann::literals;\n\nnamespace ns\n{\nstruct person\n{\n    std::string name;\n    std::string address;\n    int age;\n};\n\nNLOHMANN_DEFINE_TYPE_NON_INTRUSIVE(person, name, address, age)\n} // namespace ns\n\nint main()\n{\n    ns::person p = {\"Ned Flanders\", \"744 Evergreen Terrace\", 60};\n\n    // serialization: person -&gt; json\n    json j = p;\n    std::cout &lt;&lt; \"serialization: \" &lt;&lt; j &lt;&lt; std::endl;\n\n    // deserialization: json -&gt; person\n    json j2 = R\"({\"address\": \"742 Evergreen Terrace\", \"age\": 40, \"name\": \"Homer Simpson\"})\"_json;\n    auto p2 = j2.get&lt;ns::person&gt;();\n\n    // incomplete deserialization:\n    json j3 = R\"({\"address\": \"742 Evergreen Terrace\", \"name\": \"Maggie Simpson\"})\"_json;\n    try\n    {\n        auto p3 = j3.get&lt;ns::person&gt;();\n    }\n    catch (const json::exception&amp; e)\n    {\n        std::cout &lt;&lt; \"deserialization failed: \" &lt;&lt; e.what() &lt;&lt; std::endl;\n    }\n}\n</code></pre> <p>Output:</p> <pre><code>serialization: {\"address\":\"744 Evergreen Terrace\",\"age\":60,\"name\":\"Ned Flanders\"}\ndeserialization failed: [json.exception.out_of_range.403] key 'age' not found\n</code></pre> <p>Notes:</p> <ul> <li><code>ns::person</code> is default-constructible. This is a requirement for using the macro.</li> <li><code>ns::person</code> has only public member variables. This makes <code>NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE</code> applicable.</li> <li>The macro <code>NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE</code> is used outside the class, but inside its namespace <code>ns</code>.</li> <li>A missing key \"age\" in the deserialization yields an exception. To fall back to the default value,   <code>NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT</code> can be used.</li> </ul> <p>The macro is equivalent to:</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\nusing namespace nlohmann::literals;\n\nnamespace ns\n{\nstruct person\n{\n    std::string name;\n    std::string address;\n    int age;\n};\n\ntemplate&lt;typename BasicJsonType&gt;\nvoid to_json(BasicJsonType&amp; nlohmann_json_j, const person&amp; nlohmann_json_t)\n{\n    nlohmann_json_j[\"name\"] = nlohmann_json_t.name;\n    nlohmann_json_j[\"address\"] = nlohmann_json_t.address;\n    nlohmann_json_j[\"age\"] = nlohmann_json_t.age;\n}\n\ntemplate&lt;typename BasicJsonType&gt;\nvoid from_json(const BasicJsonType&amp; nlohmann_json_j, person&amp; nlohmann_json_t)\n{\n    nlohmann_json_t.name = nlohmann_json_j.at(\"name\");\n    nlohmann_json_t.address = nlohmann_json_j.at(\"address\");\n    nlohmann_json_t.age = nlohmann_json_j.at(\"age\");\n}\n} // namespace ns\n\nint main()\n{\n    ns::person p = {\"Ned Flanders\", \"744 Evergreen Terrace\", 60};\n\n    // serialization: person -&gt; json\n    json j = p;\n    std::cout &lt;&lt; \"serialization: \" &lt;&lt; j &lt;&lt; std::endl;\n\n    // deserialization: json -&gt; person\n    json j2 = R\"({\"address\": \"742 Evergreen Terrace\", \"age\": 40, \"name\": \"Homer Simpson\"})\"_json;\n    auto p2 = j2.get&lt;ns::person&gt;();\n\n    // incomplete deserialization:\n    json j3 = R\"({\"address\": \"742 Evergreen Terrace\", \"name\": \"Maggie Simpson\"})\"_json;\n    try\n    {\n        auto p3 = j3.get&lt;ns::person&gt;();\n    }\n    catch (const json::exception&amp; e)\n    {\n        std::cout &lt;&lt; \"deserialization failed: \" &lt;&lt; e.what() &lt;&lt; std::endl;\n    }\n}\n</code></pre> Example (2): NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT <p>Consider the following complete example:</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\nusing namespace nlohmann::literals;\n\nnamespace ns\n{\nstruct person\n{\n    std::string name = \"John Doe\";\n    std::string address = \"123 Fake St\";\n    int age = -1;\n\n    person() = default;\n    person(std::string name_, std::string address_, int age_)\n        : name(std::move(name_)), address(std::move(address_)), age(age_)\n    {}\n};\n\nNLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT(person, name, address, age)\n} // namespace ns\n\nint main()\n{\n    ns::person p = {\"Ned Flanders\", \"744 Evergreen Terrace\", 60};\n\n    // serialization: person -&gt; json\n    json j = p;\n    std::cout &lt;&lt; \"serialization: \" &lt;&lt; j &lt;&lt; std::endl;\n\n    // deserialization: json -&gt; person\n    json j2 = R\"({\"address\": \"742 Evergreen Terrace\", \"age\": 40, \"name\": \"Homer Simpson\"})\"_json;\n    auto p2 = j2.get&lt;ns::person&gt;();\n\n    // incomplete deserialization:\n    json j3 = R\"({\"address\": \"742 Evergreen Terrace\", \"name\": \"Maggie Simpson\"})\"_json;\n    auto p3 = j3.get&lt;ns::person&gt;();\n    std::cout &lt;&lt; \"roundtrip: \" &lt;&lt; json(p3) &lt;&lt; std::endl;\n}\n</code></pre> <p>Output:</p> <pre><code>serialization: {\"address\":\"744 Evergreen Terrace\",\"age\":60,\"name\":\"Ned Flanders\"}\nroundtrip: {\"address\":\"742 Evergreen Terrace\",\"age\":-1,\"name\":\"Maggie Simpson\"}\n</code></pre> <p>Notes:</p> <ul> <li><code>ns::person</code> is default-constructible. This is a requirement for using the macro.</li> <li><code>ns::person</code> has only public member variables. This makes <code>NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT</code>   applicable.</li> <li>The macro <code>NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT</code> is used outside the class, but inside its   namespace <code>ns</code>.</li> <li>A missing key \"age\" in the deserialization does not yield an exception. Instead, the default value <code>-1</code> is used.</li> </ul> <p>The macro is equivalent to:</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\nusing namespace nlohmann::literals;\n\nnamespace ns\n{\nstruct person\n{\n    std::string name = \"John Doe\";\n    std::string address = \"123 Fake St\";\n    int age = -1;\n\n    person() = default;\n    person(std::string name_, std::string address_, int age_)\n        : name(std::move(name_)), address(std::move(address_)), age(age_)\n    {}\n};\n\ntemplate&lt;typename BasicJsonType&gt;\nvoid to_json(BasicJsonType&amp; nlohmann_json_j, const person&amp; nlohmann_json_t)\n{\n    nlohmann_json_j[\"name\"] = nlohmann_json_t.name;\n    nlohmann_json_j[\"address\"] = nlohmann_json_t.address;\n    nlohmann_json_j[\"age\"] = nlohmann_json_t.age;\n}\n\ntemplate&lt;typename BasicJsonType&gt;\nvoid from_json(const BasicJsonType&amp; nlohmann_json_j, person&amp; nlohmann_json_t)\n{\n    person nlohmann_json_default_obj;\n    nlohmann_json_t.name = nlohmann_json_j.value(\"name\", nlohmann_json_default_obj.name);\n    nlohmann_json_t.address = nlohmann_json_j.value(\"address\", nlohmann_json_default_obj.address);\n    nlohmann_json_t.age = nlohmann_json_j.value(\"age\", nlohmann_json_default_obj.age);\n}\n} // namespace ns\n\nint main()\n{\n    ns::person p = {\"Ned Flanders\", \"744 Evergreen Terrace\", 60};\n\n    // serialization: person -&gt; json\n    json j = p;\n    std::cout &lt;&lt; \"serialization: \" &lt;&lt; j &lt;&lt; std::endl;\n\n    // deserialization: json -&gt; person\n    json j2 = R\"({\"address\": \"742 Evergreen Terrace\", \"age\": 40, \"name\": \"Homer Simpson\"})\"_json;\n    auto p2 = j2.get&lt;ns::person&gt;();\n\n    // incomplete deserialization:\n    json j3 = R\"({\"address\": \"742 Evergreen Terrace\", \"name\": \"Maggie Simpson\"})\"_json;\n    auto p3 = j3.get&lt;ns::person&gt;();\n    std::cout &lt;&lt; \"roundtrip: \" &lt;&lt; json(p3) &lt;&lt; std::endl;\n}\n</code></pre> <p>Note how a default-initialized <code>person</code> object is used in the <code>from_json</code> to fill missing values.</p> Example (3): NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE <p>Consider the following complete example:</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\nusing namespace nlohmann::literals;\n\nnamespace ns\n{\nstruct person\n{\n    std::string name;\n    std::string address;\n    int age;\n};\n\nNLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE(person, name, address, age)\n} // namespace ns\n\nint main()\n{\n    ns::person p = {\"Ned Flanders\", \"744 Evergreen Terrace\", 60};\n\n    // serialization: person -&gt; json\n    json j = p;\n    std::cout &lt;&lt; \"serialization: \" &lt;&lt; j &lt;&lt; std::endl;\n}\n</code></pre> <p>Output:</p> <pre><code>serialization: {\"address\":\"744 Evergreen Terrace\",\"age\":60,\"name\":\"Ned Flanders\"}\n</code></pre> <p>Notes:</p> <ul> <li><code>ns::person</code> is non-default-constructible. This allows this macro to be used instead of    <code>NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE</code> and <code>NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT</code>.</li> <li><code>ns::person</code> has only public member variables. This makes <code>NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE</code> applicable.</li> <li>The macro <code>NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE</code> is used outside the class, but inside its namespace <code>ns</code>.</li> </ul> <p>The macro is equivalent to:</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\nusing namespace nlohmann::literals;\n\nnamespace ns\n{\nstruct person\n{\n    std::string name;\n    std::string address;\n    int age;\n};\n\ntemplate&lt;typename BasicJsonType&gt;\nvoid to_json(BasicJsonType&amp; nlohmann_json_j, const person&amp; nlohmann_json_t)\n{\n    nlohmann_json_j[\"name\"] = nlohmann_json_t.name;\n    nlohmann_json_j[\"address\"] = nlohmann_json_t.address;\n    nlohmann_json_j[\"age\"] = nlohmann_json_t.age;\n}\n} // namespace ns\n\nint main()\n{\n    ns::person p = {\"Ned Flanders\", \"744 Evergreen Terrace\", 60};\n\n    // serialization: person -&gt; json\n    json j = p;\n    std::cout &lt;&lt; \"serialization: \" &lt;&lt; j &lt;&lt; std::endl;\n}\n</code></pre>"},{"location":"api/macros/nlohmann_define_type_non_intrusive/#see-also","title":"See also","text":"<ul> <li>NLOHMANN_DEFINE_TYPE_INTRUSIVE, NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT,   NLOHMANN_DEFINE_TYPE_INTRUSIVE_ONLY_SERIALIZE   for a similar macro that can be defined inside the type.</li> <li>NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_DEFAULT,   NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_ONLY_SERIALIZE, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE,   NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_DEFAULT,   NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE for similar macros for   derived types</li> <li>Arbitrary Type Conversions for an overview.</li> </ul>"},{"location":"api/macros/nlohmann_define_type_non_intrusive/#version-history","title":"Version history","text":"<ol> <li>Added in version 3.9.0.</li> <li>Added in version 3.11.0.</li> <li>Added in version 3.11.3.</li> </ol>"},{"location":"api/macros/nlohmann_define_type_with_names/","title":"NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_TYPE_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES","text":"NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT_WITH_NAMES,     NLOHMANN_DEFINE_TYPE_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_NAMES,     NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES,     NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_DEFAULT_WITH_NAMES,     NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_NAMES,     NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_DEFAULT_WITH_NAMES, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES <pre><code>#define NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_NAMES(type, \"json_member_name\", member...)\n#define NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT_WITH_NAMES(type, \"json_member_name\", member...)\n#define NLOHMANN_DEFINE_TYPE_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES(type, \"json_member_name\", member...)\n#define NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_NAMES(type, \"json_member_name\", member...)\n#define NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT_WITH_NAMES(type, \"json_member_name\", member...)\n#define NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES(type, \"json_member_name\", member...)\n#define NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_NAMES(type, base_type, \"json_member_name\", member...)\n#define NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_DEFAULT_WITH_NAMES(type, base_type, \"json_member_name\", member...)\n#define NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES(type, base_type, \"json_member_name\", member...)\n#define NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_NAMES(type, base_type, \"json_member_name\", member...)\n#define NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_DEFAULT_WITH_NAMES(type, base_type, \"json_member_name\", member...)\n#define NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE_WITH_NAMES(type, base_type, \"json_member_name\", member...)\n</code></pre> <p>These macros can be used in case you want to use the custom names for the member variables in the resulting JSON. They behave exactly as their non-<code>WITH_NAMES</code> counterparts, but require an additional parameter for each member variable which will be used in JSON. Both serialization and deserialization will only use the custom names for JSON, the names of the member variables themselves will be ignored.</p> <p>Using the named conversion macros will halve the maximum number of member variables from 63 to 31.</p> <p>For further information please refer to the corresponding macros without <code>WITH_NAMES</code>.</p>"},{"location":"api/macros/nlohmann_define_type_with_names/#parameters","title":"Parameters","text":"<code>type</code> (in) name of the type (class, struct) to serialize/deserialize <code>base_type</code> (in) name of the base type (class, struct) <code>type</code> is derived from (used only in <code>DEFINE_DERIVED_TYPE</code> macros) <code>json_member_name</code> (in) the string that will be used as the name for the next value <code>member</code> (in) name of the member variable to serialize/deserialize"},{"location":"api/macros/nlohmann_define_type_with_names/#examples","title":"Examples","text":"Example (1): NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_NAMES <p>Consider the following complete example:</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\nusing namespace nlohmann::literals;\n\nnamespace ns\n{\nstruct person\n{\n    std::string name;\n    std::string address;\n    int age;\n};\n\nNLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_NAMES(person, \"json_name\", name, \"json_address\", address, \"json_age\", age)\n} // namespace ns\n\nint main()\n{\n    ns::person p = {\"Ned Flanders\", \"744 Evergreen Terrace\", 60};\n\n    // serialization: person -&gt; json\n    json j = p;\n    std::cout &lt;&lt; \"serialization: \" &lt;&lt; j &lt;&lt; std::endl;\n\n    // deserialization: json -&gt; person\n    json j2 = R\"({\"json_address\": \"742 Evergreen Terrace\", \"json_age\": 40, \"json_name\": \"Homer Simpson\"})\"_json;\n    auto p2 = j2.template get&lt;ns::person&gt;();\n\n    // incomplete deserialization:\n    json j3 = R\"({\"json_address\": \"742 Evergreen Terrace\", \"json_name\": \"Maggie Simpson\"})\"_json;\n    try\n    {\n        auto p3 = j3.template get&lt;ns::person&gt;();\n    }\n    catch (const json::exception&amp; e)\n    {\n        std::cout &lt;&lt; \"deserialization failed: \" &lt;&lt; e.what() &lt;&lt; std::endl;\n    }\n}\n</code></pre> <p>Output:</p> <pre><code>serialization: {\"json_address\":\"744 Evergreen Terrace\",\"json_age\":60,\"json_name\":\"Ned Flanders\"}\ndeserialization failed: [json.exception.out_of_range.403] key 'json_age' not found\n</code></pre> <p>Notes:</p> <ul> <li><code>ns::person</code> is default-constructible. This is a requirement for using the macro.</li> <li><code>ns::person</code> has only public member variables. This makes <code>NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_NAMES</code> applicable.</li> <li>The macro <code>NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_NAMES</code> is used outside the class, but inside its namespace <code>ns</code>.</li> <li>A missing key \"age\" in the deserialization yields an exception. To fall back to the default value,   <code>NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT_WITH_NAMES</code> can be used.</li> </ul> <p>The macro is equivalent to:</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\nusing namespace nlohmann::literals;\n\nnamespace ns\n{\nstruct person\n{\n    std::string name;\n    std::string address;\n    int age;\n};\n\ntemplate &lt;typename BasicJsonType, nlohmann::detail::enable_if_t&lt;nlohmann::detail::is_basic_json&lt;BasicJsonType&gt;::value, int&gt; = 0&gt;\nvoid to_json(BasicJsonType&amp; nlohmann_json_j, const person&amp; nlohmann_json_t)\n{\n    nlohmann_json_j[\"json_name\"] = nlohmann_json_t.name;\n    nlohmann_json_j[\"json_address\"] = nlohmann_json_t.address;\n    nlohmann_json_j[\"json_age\"] = nlohmann_json_t.age;\n}\n\ntemplate &lt;typename BasicJsonType, nlohmann::detail::enable_if_t&lt;nlohmann::detail::is_basic_json&lt;BasicJsonType&gt;::value, int&gt; = 0&gt;\nvoid from_json(const BasicJsonType&amp; nlohmann_json_j, person&amp; nlohmann_json_t)\n{\n    nlohmann_json_j.at(\"json_name\").get_to(nlohmann_json_t.name);\n    nlohmann_json_j.at(\"json_address\").get_to(nlohmann_json_t.address);\n    nlohmann_json_j.at(\"json_age\").get_to(nlohmann_json_t.age);\n}\n} // namespace ns\n\nint main()\n{\n    ns::person p = {\"Ned Flanders\", \"744 Evergreen Terrace\", 60};\n\n    // serialization: person -&gt; json\n    json j = p;\n    std::cout &lt;&lt; \"serialization: \" &lt;&lt; j &lt;&lt; std::endl;\n\n    // deserialization: json -&gt; person\n    json j2 = R\"({\"json_address\": \"742 Evergreen Terrace\", \"json_age\": 40, \"json_name\": \"Homer Simpson\"})\"_json;\n    auto p2 = j2.template get&lt;ns::person&gt;();\n\n    // incomplete deserialization:\n    json j3 = R\"({\"json_address\": \"742 Evergreen Terrace\", \"json_name\": \"Maggie Simpson\"})\"_json;\n    try\n    {\n        auto p3 = j3.template get&lt;ns::person&gt;();\n    }\n    catch (const json::exception&amp; e)\n    {\n        std::cout &lt;&lt; \"deserialization failed: \" &lt;&lt; e.what() &lt;&lt; std::endl;\n    }\n}\n</code></pre>"},{"location":"api/macros/nlohmann_define_type_with_names/#version-history","title":"Version history","text":"<ol> <li>Added in version 3.12.x.</li> </ol>"},{"location":"api/macros/nlohmann_json_namespace/","title":"NLOHMANN_JSON_NAMESPACE","text":"<pre><code>#define NLOHMANN_JSON_NAMESPACE /* value */\n</code></pre> <p>This macro evaluates to the full name of the <code>nlohmann</code> namespace.</p>"},{"location":"api/macros/nlohmann_json_namespace/#default-definition","title":"Default definition","text":"<p>The default value consists of the root namespace (<code>nlohmann</code>) and an inline ABI namespace. See <code>nlohmann</code> Namespace for details.</p> <p>When the macro is not defined, the library will define it to its default value. Overriding this value has no effect on the library.</p>"},{"location":"api/macros/nlohmann_json_namespace/#examples","title":"Examples","text":"Example <p>The example shows how to use <code>NLOHMANN_JSON_NAMESPACE</code> instead of just <code>nlohmann</code>, as well as how to output the value of <code>NLOHMANN_JSON_NAMESPACE</code>.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\n// possible use case: use NLOHMANN_JSON_NAMESPACE instead of nlohmann\nusing json = NLOHMANN_JSON_NAMESPACE::json;\n\n// macro needed to output the NLOHMANN_JSON_NAMESPACE as string literal\n#define Q(x) #x\n#define QUOTE(x) Q(x)\n\nint main()\n{\n    std::cout &lt;&lt; QUOTE(NLOHMANN_JSON_NAMESPACE) &lt;&lt; std::endl;\n}\n</code></pre> <p>Output:</p> <pre><code>nlohmann::json_abi_v3_12_0\n</code></pre>"},{"location":"api/macros/nlohmann_json_namespace/#see-also","title":"See also","text":"<ul> <li><code>NLOHMANN_JSON_NAMESPACE_BEGIN, NLOHMANN_JSON_NAMESPACE_END</code></li> <li><code>NLOHMANN_JSON_NAMESPACE_NO_VERSION</code></li> </ul>"},{"location":"api/macros/nlohmann_json_namespace/#version-history","title":"Version history","text":"<ul> <li>Added in version 3.11.0. Changed inline namespace name in version 3.11.2.</li> </ul>"},{"location":"api/macros/nlohmann_json_namespace_begin/","title":"NLOHMANN_JSON_NAMESPACE_BEGIN, NLOHMANN_JSON_NAMESPACE_END","text":"<pre><code>#define NLOHMANN_JSON_NAMESPACE_BEGIN /* value */  // (1)\n#define NLOHMANN_JSON_NAMESPACE_END   /* value */  // (2)\n</code></pre> <p>These macros can be used to open and close the <code>nlohmann</code> namespace. See <code>nlohmann</code> Namespace for details.</p> <ol> <li>Opens the namespace.</li> <li>Closes the namespace.</li> </ol>"},{"location":"api/macros/nlohmann_json_namespace_begin/#default-definition","title":"Default definition","text":"<p>The default definitions open and close the <code>nlohmann</code> namespace. The precise definition of [<code>NLOHMANN_JSON_NAMESPACE_BEGIN</code>] varies as described here.</p> <ol> <li> <p>Default definition of <code>NLOHMANN_JSON_NAMESPACE_BEGIN</code>:</p> <pre><code>namespace nlohmann\n{\ninline namespace json_abi_v3_12_0\n{\n</code></pre> </li> <li> <p>Default definition of <code>NLOHMANN_JSON_NAMESPACE_END</code>:     <pre><code>}  // namespace json_abi_v3_12_0\n}  // namespace nlohmann\n</code></pre></p> </li> </ol> <p>When these macros are not defined, the library will define them to their default definitions.</p>"},{"location":"api/macros/nlohmann_json_namespace_begin/#examples","title":"Examples","text":"Example <p>The example shows how to use <code>NLOHMANN_JSON_NAMESPACE_BEGIN</code>/<code>NLOHMANN_JSON_NAMESPACE_END</code> from the How do I convert third-party types? page.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;optional&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\n// partial specialization (see https://json.nlohmann.me/features/arbitrary_types/)\nNLOHMANN_JSON_NAMESPACE_BEGIN\ntemplate &lt;typename T&gt;\nstruct adl_serializer&lt;std::optional&lt;T&gt;&gt;\n{\n    static void to_json(json&amp; j, const std::optional&lt;T&gt;&amp; opt)\n    {\n        if (opt == std::nullopt)\n        {\n            j = nullptr;\n        }\n        else\n        {\n            j = *opt;\n        }\n    }\n};\nNLOHMANN_JSON_NAMESPACE_END\n\nint main()\n{\n    std::optional&lt;int&gt; o1 = 1;\n    std::optional&lt;int&gt; o2 = std::nullopt;\n\n    NLOHMANN_JSON_NAMESPACE::json j;\n    j.push_back(o1);\n    j.push_back(o2);\n    std::cout &lt;&lt; j &lt;&lt; std::endl;\n}\n</code></pre> <p>Output:</p> <pre><code>[1,null]\n</code></pre>"},{"location":"api/macros/nlohmann_json_namespace_begin/#see-also","title":"See also","text":"<ul> <li><code>nlohmann</code> Namespace</li> <li>NLOHMANN_JSON_NAMESPACE</li> <li><code>NLOHMANN_JSON_NAMESPACE_NO_VERSION</code></li> </ul>"},{"location":"api/macros/nlohmann_json_namespace_begin/#version-history","title":"Version history","text":"<ul> <li>Added in version 3.11.0. Changed inline namespace name in version 3.11.2.</li> </ul>"},{"location":"api/macros/nlohmann_json_namespace_no_version/","title":"NLOHMANN_JSON_NAMESPACE_NO_VERSION","text":"<pre><code>#define NLOHMANN_JSON_NAMESPACE_NO_VERSION /* value */\n</code></pre> <p>If defined to <code>1</code>, the version component is omitted from the inline namespace. See <code>nlohmann</code> Namespace for details.</p>"},{"location":"api/macros/nlohmann_json_namespace_no_version/#default-definition","title":"Default definition","text":"<p>The default value is <code>0</code>.</p> <pre><code>#define NLOHMANN_JSON_NAMESPACE_NO_VERSION 0\n</code></pre> <p>When the macro is not defined, the library will define it to its default value.</p>"},{"location":"api/macros/nlohmann_json_namespace_no_version/#examples","title":"Examples","text":"Example <p>The example shows how to use <code>NLOHMANN_JSON_NAMESPACE_NO_VERSION</code> to disable the version component of the inline namespace.</p> <pre><code>#include &lt;iostream&gt;\n\n#define NLOHMANN_JSON_NAMESPACE_NO_VERSION 1\n#include &lt;nlohmann/json.hpp&gt;\n\n// macro needed to output the NLOHMANN_JSON_NAMESPACE as string literal\n#define Q(x) #x\n#define QUOTE(x) Q(x)\n\nint main()\n{\n    std::cout &lt;&lt; QUOTE(NLOHMANN_JSON_NAMESPACE) &lt;&lt; std::endl;\n}\n</code></pre> <p>Output:</p> <pre><code>nlohmann::json_abi\n</code></pre>"},{"location":"api/macros/nlohmann_json_namespace_no_version/#see-also","title":"See also","text":"<ul> <li><code>nlohmann</code> Namespace</li> <li><code>NLOHMANN_JSON_NAMESPACE</code></li> <li><code>NLOHMANN_JSON_NAMESPACE_BEGIN, NLOHMANN_JSON_NAMESPACE_END</code></li> </ul>"},{"location":"api/macros/nlohmann_json_namespace_no_version/#version-history","title":"Version history","text":"<ul> <li>Added in version 3.11.2.</li> </ul>"},{"location":"api/macros/nlohmann_json_serialize_enum/","title":"NLOHMANN_JSON_SERIALIZE_ENUM","text":"<pre><code>#define NLOHMANN_JSON_SERIALIZE_ENUM(type, conversion...)\n</code></pre> <p>By default, enum values are serialized to JSON as integers. In some cases, this could result in undesired behavior. If an enum is modified or re-ordered after data has been serialized to JSON, the later deserialized JSON data may be undefined or a different enum value than was originally intended.</p> <p>The <code>NLOHMANN_JSON_SERIALIZE_ENUM</code> allows to define a user-defined serialization for every enumerator.</p>"},{"location":"api/macros/nlohmann_json_serialize_enum/#parameters","title":"Parameters","text":"<code>type</code> (in) name of the enum to serialize/deserialize <code>conversion</code> (in) a pair of an enumerator and a JSON serialization; arbitrary pairs can be given as a comma-separated list"},{"location":"api/macros/nlohmann_json_serialize_enum/#default-definition","title":"Default definition","text":"<p>The macro adds two functions to the namespace which take care of the serialization and deserialization:</p> <pre><code>template&lt;typename BasicJsonType&gt;\ninline void to_json(BasicJsonType&amp; j, const type&amp; e);\ntemplate&lt;typename BasicJsonType&gt;\ninline void from_json(const BasicJsonType&amp; j, type&amp; e);\n</code></pre>"},{"location":"api/macros/nlohmann_json_serialize_enum/#notes","title":"Notes","text":"<p>Prerequisites</p> <p>The macro must be used inside the namespace of the enum.</p> <p>Important notes</p> <ul> <li>When using <code>get&lt;ENUM_TYPE&gt;()</code>, undefined JSON values will default to the first specified   conversion. Select this default pair carefully. See example 1 below.</li> <li>If an enum or JSON value is specified in multiple conversions, the first matching conversion from the top of the   list will be returned when converting to or from JSON. See example 2 below.</li> </ul>"},{"location":"api/macros/nlohmann_json_serialize_enum/#examples","title":"Examples","text":"Example 1: Basic usage <p>The example shows how <code>NLOHMANN_JSON_SERIALIZE_ENUM</code> can be used to serialize/deserialize both classical enums and C++11 enum classes:</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nnamespace ns\n{\nenum TaskState\n{\n    TS_STOPPED,\n    TS_RUNNING,\n    TS_COMPLETED,\n    TS_INVALID = -1\n};\n\nNLOHMANN_JSON_SERIALIZE_ENUM(TaskState,\n{\n    { TS_INVALID, nullptr },\n    { TS_STOPPED, \"stopped\" },\n    { TS_RUNNING, \"running\" },\n    { TS_COMPLETED, \"completed\" }\n})\n\nenum class Color\n{\n    red, green, blue, unknown\n};\n\nNLOHMANN_JSON_SERIALIZE_ENUM(Color,\n{\n    { Color::unknown, \"unknown\" }, { Color::red, \"red\" },\n    { Color::green, \"green\" }, { Color::blue, \"blue\" }\n})\n} // namespace ns\n\nint main()\n{\n    // serialization\n    json j_stopped = ns::TS_STOPPED;\n    json j_red = ns::Color::red;\n    std::cout &lt;&lt; \"ns::TS_STOPPED -&gt; \" &lt;&lt; j_stopped\n              &lt;&lt; \", ns::Color::red -&gt; \" &lt;&lt; j_red &lt;&lt; std::endl;\n\n    // deserialization\n    json j_running = \"running\";\n    json j_blue = \"blue\";\n    auto running = j_running.get&lt;ns::TaskState&gt;();\n    auto blue = j_blue.get&lt;ns::Color&gt;();\n    std::cout &lt;&lt; j_running &lt;&lt; \" -&gt; \" &lt;&lt; running\n              &lt;&lt; \", \" &lt;&lt; j_blue &lt;&lt; \" -&gt; \" &lt;&lt; static_cast&lt;int&gt;(blue) &lt;&lt; std::endl;\n\n    // deserializing undefined JSON value to enum\n    // (where the first map entry above is the default)\n    json j_pi = 3.14;\n    auto invalid = j_pi.get&lt;ns::TaskState&gt;();\n    auto unknown = j_pi.get&lt;ns::Color&gt;();\n    std::cout &lt;&lt; j_pi &lt;&lt; \" -&gt; \" &lt;&lt; invalid &lt;&lt; \", \"\n              &lt;&lt; j_pi &lt;&lt; \" -&gt; \" &lt;&lt; static_cast&lt;int&gt;(unknown) &lt;&lt; std::endl;\n}\n</code></pre> <p>Output:</p> <pre><code>ns::TS_STOPPED -&gt; \"stopped\", ns::Color::red -&gt; \"red\"\n\"running\" -&gt; 1, \"blue\" -&gt; 2\n3.14 -&gt; -1, 3.14 -&gt; 3\n</code></pre> Example 2: Multiple conversions for one enumerator <p>The example shows how to use multiple conversions for a single enumerator. In the example, <code>Color::red</code> will always be serialized to <code>\"red\"</code>, because the first occurring conversion. The second conversion, however, offers an alternative deserialization from <code>\"rot\"</code> to <code>Color::red</code>.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nnamespace ns\n{\nenum class Color\n{\n    red, green, blue, unknown\n};\n\nNLOHMANN_JSON_SERIALIZE_ENUM(Color,\n{\n    { Color::unknown, \"unknown\" }, { Color::red, \"red\" },\n    { Color::green, \"green\" }, { Color::blue, \"blue\" },\n    { Color::red, \"rot\" } // a second conversion for Color::red\n})\n}\n\nint main()\n{\n    // serialization\n    json j_red = ns::Color::red;\n    std::cout &lt;&lt; static_cast&lt;int&gt;(ns::Color::red) &lt;&lt; \" -&gt; \" &lt;&lt; j_red &lt;&lt; std::endl;\n\n    // deserialization\n    json j_rot = \"rot\";\n    auto rot = j_rot.get&lt;ns::Color&gt;();\n    auto red = j_red.get&lt;ns::Color&gt;();\n    std::cout &lt;&lt; j_rot &lt;&lt; \" -&gt; \" &lt;&lt; static_cast&lt;int&gt;(rot) &lt;&lt; std::endl;\n    std::cout &lt;&lt; j_red &lt;&lt; \" -&gt; \" &lt;&lt; static_cast&lt;int&gt;(red) &lt;&lt; std::endl;\n}\n</code></pre> <p>Output:</p> <pre><code>0 -&gt; \"red\"\n\"rot\" -&gt; 0\n\"red\" -&gt; 0\n</code></pre>"},{"location":"api/macros/nlohmann_json_serialize_enum/#see-also","title":"See also","text":"<ul> <li>Specializing enum conversion</li> <li><code>NLOHMANN_JSON_SERIALIZE_ENUM_STRICT</code></li> <li><code>JSON_DISABLE_ENUM_SERIALIZATION</code></li> </ul>"},{"location":"api/macros/nlohmann_json_serialize_enum/#version-history","title":"Version history","text":"<p>Added in version 3.4.0.</p>"},{"location":"api/macros/nlohmann_json_serialize_enum_strict/","title":"NLOHMANN_JSON_SERIALIZE_ENUM_STRICT","text":"<pre><code>#define NLOHMANN_JSON_SERIALIZE_ENUM_STRICT(type, conversion...)\n</code></pre> <p>By default, enum values are serialized to JSON as integers. In some cases, this could result in undesired behavior. If an enum is modified or re-ordered after data has been serialized to JSON, the later deserialized JSON data may be undefined or a different enum value than was originally intended.</p> <p><code>NLOHMANN_JSON_SERIALIZE_ENUM_STRICT</code> allows to define a user-defined serialization for every enumerator that throws an exception on undefined input.</p>"},{"location":"api/macros/nlohmann_json_serialize_enum_strict/#parameters","title":"Parameters","text":"<code>type</code> (in) name of the enum to serialize/deserialize <code>conversion</code> (in) a pair of an enumerator and a JSON serialization; arbitrary pairs can be given as a comma-separated list"},{"location":"api/macros/nlohmann_json_serialize_enum_strict/#default-definition","title":"Default definition","text":"<p>The macro adds two functions to the namespace which take care of the serialization and deserialization:</p> <pre><code>template&lt;typename BasicJsonType&gt;\ninline void to_json(BasicJsonType&amp; j, const type&amp; e);\ntemplate&lt;typename BasicJsonType&gt;\ninline void from_json(const BasicJsonType&amp; j, type&amp; e);\n</code></pre>"},{"location":"api/macros/nlohmann_json_serialize_enum_strict/#notes","title":"Notes","text":"<p>Prerequisites</p> <p>The macro must be used inside the namespace of the enum.</p> <p>Important notes</p> <ul> <li>Undefined input throws <code>out_of_range.410</code> in both   directions: when serializing an enum value not listed in the conversions, and when deserializing (e.g., via   <code>get&lt;ENUM_TYPE&gt;()</code>) a JSON value that matches no conversion; example:   <code>\"enum value out of range for &lt;type&gt;\"</code>.</li> <li>If an enum or JSON value is specified in multiple conversions, the first matching conversion from the top of the   list will be returned when converting to or from JSON. See example 2 below.</li> </ul>"},{"location":"api/macros/nlohmann_json_serialize_enum_strict/#examples","title":"Examples","text":"Example 1: Basic usage <p>The example shows how <code>NLOHMANN_JSON_SERIALIZE_ENUM_STRICT</code> can be used to serialize/deserialize both classical enums and C++11 enum classes:</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nnamespace ns\n{\nenum TaskState\n{\n    TS_STOPPED,\n    TS_RUNNING,\n    TS_COMPLETED,\n    TS_INVALID = -1\n};\n\nNLOHMANN_JSON_SERIALIZE_ENUM_STRICT(TaskState,\n{\n    { TS_INVALID, nullptr },\n    { TS_STOPPED, \"stopped\" },\n    { TS_RUNNING, \"running\" },\n    { TS_COMPLETED, \"completed\" }\n})\n\nenum class Color\n{\n    red, green, blue, unknown\n};\n\nNLOHMANN_JSON_SERIALIZE_ENUM_STRICT(Color,\n{\n    { Color::unknown, \"unknown\" }, { Color::red, \"red\" },\n    { Color::green, \"green\" }, { Color::blue, \"blue\" }\n})\n} // namespace ns\n\nint main()\n{\n    // serialization\n    json j_stopped = ns::TS_STOPPED;\n    json j_red = ns::Color::red;\n    std::cout &lt;&lt; \"ns::TS_STOPPED -&gt; \" &lt;&lt; j_stopped\n              &lt;&lt; \", ns::Color::red -&gt; \" &lt;&lt; j_red &lt;&lt; std::endl;\n\n    // deserialization\n    json j_running = \"running\";\n    json j_blue = \"blue\";\n    auto running = j_running.get&lt;ns::TaskState&gt;();\n    auto blue = j_blue.get&lt;ns::Color&gt;();\n    std::cout &lt;&lt; j_running &lt;&lt; \" -&gt; \" &lt;&lt; running\n              &lt;&lt; \", \" &lt;&lt; j_blue &lt;&lt; \" -&gt; \" &lt;&lt; static_cast&lt;int&gt;(blue) &lt;&lt; std::endl;\n\n}\n</code></pre> <p>Output:</p> <pre><code>ns::TS_STOPPED -&gt; \"stopped\", ns::Color::red -&gt; \"red\"\n\"running\" -&gt; 1, \"blue\" -&gt; 2\n</code></pre> Example 2: Multiple conversions for one enumerator <p>The example shows how to use multiple conversions for a single enumerator. In the example, <code>Color::red</code> will always be serialized to <code>\"red\"</code>, because the first occurring conversion. The second conversion, however, offers an alternative deserialization from <code>\"rot\"</code> to <code>Color::red</code>.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nnamespace ns\n{\nenum class Color\n{\n    red, green, blue, unknown\n};\n\nNLOHMANN_JSON_SERIALIZE_ENUM_STRICT(Color,\n{\n    { Color::unknown, \"unknown\" }, { Color::red, \"red\" },\n    { Color::green, \"green\" }, { Color::blue, \"blue\" },\n    { Color::red, \"rot\" } // a second conversion for Color::red\n})\n}\n\nint main()\n{\n    // serialization\n    json j_red = ns::Color::red;\n    std::cout &lt;&lt; static_cast&lt;int&gt;(ns::Color::red) &lt;&lt; \" -&gt; \" &lt;&lt; j_red &lt;&lt; std::endl;\n\n    // deserialization\n    json j_rot = \"rot\";\n    auto rot = j_rot.get&lt;ns::Color&gt;();\n    auto red = j_red.get&lt;ns::Color&gt;();\n    std::cout &lt;&lt; j_rot &lt;&lt; \" -&gt; \" &lt;&lt; static_cast&lt;int&gt;(rot) &lt;&lt; std::endl;\n    std::cout &lt;&lt; j_red &lt;&lt; \" -&gt; \" &lt;&lt; static_cast&lt;int&gt;(red) &lt;&lt; std::endl;\n}\n</code></pre> <p>Output:</p> <pre><code>0 -&gt; \"red\"\n\"rot\" -&gt; 0\n\"red\" -&gt; 0\n</code></pre> Example 3: exceptions on invalid serialization <p>The example shows how an invalid serialization causes an exception to be thrown. In the example, Color::unknown is not defined in the mapping used to call <code>NLOHMANN_JSON_SERIALIZE_ENUM_STRICT</code> so causes an exception when used to serialize. Similarly, \"what\" does not refer to an enum value so also causes an exception when deserialization is attempted.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nnamespace ns\n{\n\nenum class Color\n{\n    red,\n    green,\n    blue,\n    unknown // not mapped in JSON_SERIALIZE_ENUM_STRICT\n};\n\nNLOHMANN_JSON_SERIALIZE_ENUM_STRICT(Color,\n{\n    {Color::red, \"red\"},\n    {Color::green, \"green\"},\n    {Color::blue, \"blue\"}\n})\n\n} // namespace ns\n\n\nint main()\n{\n    // invalid serialization\n    try\n    {\n        // ns::color::unknown was not mapped in macro\n        json invalid_serialization = ns::Color::unknown;\n    }\n    catch (const json::exception e)\n    {\n        std::cout &lt;&lt; \"deserialization failed: \" &lt;&lt; e.what() &lt;&lt; std::endl;\n    }\n\n    // invalid deserialization\n    try\n    {\n        // what does not map to an enum\n        json invalid_deserialization(\"what\");\n        ns::Color color = invalid_deserialization.get&lt;ns::Color&gt;();\n    }\n    catch (const json::exception e)\n    {\n        std::cout &lt;&lt; \"deserialization failed: \" &lt;&lt; e.what() &lt;&lt; std::endl;\n    }\n\n    return 0;\n}\n</code></pre> <p>Output: <pre><code>deserialization failed: [json.exception.out_of_range.410] enum value out of range for Color\ndeserialization failed: [json.exception.out_of_range.410] enum value out of range for Color: \"what\"\n</code></pre></p>"},{"location":"api/macros/nlohmann_json_serialize_enum_strict/#see-also","title":"See also","text":"<ul> <li>Specializing enum conversion</li> <li><code>NLOHMANN_JSON_SERIALIZE_ENUM</code></li> <li><code>JSON_DISABLE_ENUM_SERIALIZATION</code></li> </ul>"},{"location":"api/macros/nlohmann_json_serialize_enum_strict/#version-history","title":"Version history","text":"<p>Added in version 3.12.x.</p>"},{"location":"api/macros/nlohmann_json_version_major/","title":"NLOHMANN_JSON_VERSION_MAJOR, NLOHMANN_JSON_VERSION_MINOR, NLOHMANN_JSON_VERSION_PATCH","text":"<pre><code>#define NLOHMANN_JSON_VERSION_MAJOR /* value */\n#define NLOHMANN_JSON_VERSION_MINOR /* value */\n#define NLOHMANN_JSON_VERSION_PATCH /* value */\n</code></pre> <p>These macros are defined by the library and contain the version numbers according to Semantic Versioning 2.0.0.</p>"},{"location":"api/macros/nlohmann_json_version_major/#default-definition","title":"Default definition","text":"<p>The macros are defined according to the current library version.</p>"},{"location":"api/macros/nlohmann_json_version_major/#examples","title":"Examples","text":"Example <p>The example below shows how <code>NLOHMANN_JSON_VERSION_MAJOR</code>, <code>NLOHMANN_JSON_VERSION_MINOR</code>, and <code>NLOHMANN_JSON_VERSION_PATCH</code> are defined by the library.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    std::cout &lt;&lt; \"JSON for Modern C++ version \"\n              &lt;&lt; NLOHMANN_JSON_VERSION_MAJOR &lt;&lt; \".\"\n              &lt;&lt; NLOHMANN_JSON_VERSION_MINOR &lt;&lt; \".\"\n              &lt;&lt; NLOHMANN_JSON_VERSION_PATCH &lt;&lt; std::endl;\n}\n</code></pre> <p>Output:</p> <pre><code>JSON for Modern C++ version 3.12.0\n</code></pre>"},{"location":"api/macros/nlohmann_json_version_major/#see-also","title":"See also","text":"<ul> <li>meta - returns version information on the library</li> <li>JSON_SKIP_LIBRARY_VERSION_CHECK - skip library version check</li> </ul>"},{"location":"api/macros/nlohmann_json_version_major/#version-history","title":"Version history","text":"<ul> <li>Added in version 3.1.0.</li> </ul>"},{"location":"community/","title":"Community","text":"<ul> <li>Code of Conduct - the rules and norms of this project</li> <li>Contribution Guidelines - guidelines how to contribute to this project</li> <li>Governance - the governance model of this project</li> <li>Quality Assurance - how the quality of this project is assured</li> <li>Security Policy - the security policy of the project</li> </ul>"},{"location":"community/code_of_conduct/","title":"Contributor Covenant Code of Conduct","text":""},{"location":"community/code_of_conduct/#our-pledge","title":"Our Pledge","text":"<p>We as members, contributors, and leaders pledge to make participation in our community a harassment-free experience for everyone, regardless of age, body size, visible or invisible disability, ethnicity, sex characteristics, gender identity and expression, level of experience, education, socio-economic status, nationality, personal appearance, race, caste, color, religion, or sexual identity and orientation.</p> <p>We pledge to act and interact in ways that contribute to an open, welcoming, diverse, inclusive, and healthy community.</p>"},{"location":"community/code_of_conduct/#our-standards","title":"Our Standards","text":"<p>Examples of behavior that contributes to a positive environment for our community include:</p> <ul> <li>Demonstrating empathy and kindness toward other people</li> <li>Being respectful of differing opinions, viewpoints, and experiences</li> <li>Giving and gracefully accepting constructive feedback</li> <li>Accepting responsibility and apologizing to those affected by our mistakes,   and learning from the experience</li> <li>Focusing on what is best not just for us as individuals, but for the overall   community</li> </ul> <p>Examples of unacceptable behavior include:</p> <ul> <li>The use of sexualized language or imagery, and sexual attention or advances of   any kind</li> <li>Trolling, insulting or derogatory comments, and personal or political attacks</li> <li>Public or private harassment</li> <li>Publishing others' private information, such as a physical or email address,   without their explicit permission</li> <li>Other conduct which could reasonably be considered inappropriate in a   professional setting</li> </ul>"},{"location":"community/code_of_conduct/#enforcement-responsibilities","title":"Enforcement Responsibilities","text":"<p>Community leaders are responsible for clarifying and enforcing our standards of acceptable behavior and will take appropriate and fair corrective action in response to any behavior that they deem inappropriate, threatening, offensive, or harmful.</p> <p>Community leaders have the right and responsibility to remove, edit, or reject comments, commits, code, wiki edits, issues, and other contributions that are not aligned to this Code of Conduct, and will communicate reasons for moderation decisions when appropriate.</p>"},{"location":"community/code_of_conduct/#scope","title":"Scope","text":"<p>This Code of Conduct applies within all community spaces, and also applies when an individual is officially representing the community in public spaces. Examples of representing our community include using an official email address, posting via an official social media account, or acting as an appointed representative at an online or offline event.</p>"},{"location":"community/code_of_conduct/#enforcement","title":"Enforcement","text":"<p>Instances of abusive, harassing, or otherwise unacceptable behavior may be reported to the community leaders responsible for enforcement at mail@nlohmann.me. All complaints will be reviewed and investigated promptly and fairly.</p> <p>All community leaders are obligated to respect the privacy and security of the reporter of any incident.</p>"},{"location":"community/code_of_conduct/#enforcement-guidelines","title":"Enforcement Guidelines","text":"<p>Community leaders will follow these Community Impact Guidelines in determining the consequences for any action they deem in violation of this Code of Conduct:</p>"},{"location":"community/code_of_conduct/#1-correction","title":"1. Correction","text":"<p>Community Impact: Use of inappropriate language or other behavior deemed unprofessional or unwelcome in the community.</p> <p>Consequence: A private, written warning from community leaders, providing clarity around the nature of the violation and an explanation of why the behavior was inappropriate. A public apology may be requested.</p>"},{"location":"community/code_of_conduct/#2-warning","title":"2. Warning","text":"<p>Community Impact: A violation through a single incident or series of actions.</p> <p>Consequence: A warning with consequences for continued behavior. No interaction with the people involved, including unsolicited interaction with those enforcing the Code of Conduct, for a specified period of time. This includes avoiding interactions in community spaces as well as external channels like social media. Violating these terms may lead to a temporary or permanent ban.</p>"},{"location":"community/code_of_conduct/#3-temporary-ban","title":"3. Temporary Ban","text":"<p>Community Impact: A serious violation of community standards, including sustained inappropriate behavior.</p> <p>Consequence: A temporary ban from any sort of interaction or public communication with the community for a specified period of time. No public or private interaction with the people involved, including unsolicited interaction with those enforcing the Code of Conduct, is allowed during this period. Violating these terms may lead to a permanent ban.</p>"},{"location":"community/code_of_conduct/#4-permanent-ban","title":"4. Permanent Ban","text":"<p>Community Impact: Demonstrating a pattern of violation of community standards, including sustained inappropriate behavior, harassment of an individual, or aggression toward or disparagement of classes of individuals.</p> <p>Consequence: A permanent ban from any sort of public interaction within the community.</p>"},{"location":"community/code_of_conduct/#attribution","title":"Attribution","text":"<p>This Code of Conduct is adapted from the Contributor Covenant, version 2.1, available at https://www.contributor-covenant.org/version/2/1/code_of_conduct.html.</p> <p>Community Impact Guidelines were inspired by Mozilla's code of conduct enforcement ladder.</p> <p>For answers to common questions about this code of conduct, see the FAQ at https://www.contributor-covenant.org/faq. Translations are available at https://www.contributor-covenant.org/translations.</p>"},{"location":"community/contribution_guidelines/","title":"Contribution Guidelines","text":"<p>Thank you for your interest in contributing to this project! What began as an exercise to explore the exciting features of C++11 has evolved into a widely used JSON library. I truly appreciate all the contributions from the community, whether it's proposing features, identifying bugs, or fixing mistakes! To ensure that our collaboration is efficient and effective, please follow these guidelines.</p> <p>Feel free to discuss or suggest improvements to this document by submitting a pull request.</p>"},{"location":"community/contribution_guidelines/#ways-to-contribute","title":"Ways to Contribute","text":"<p>There are multiple ways to contribute.</p>"},{"location":"community/contribution_guidelines/#reporting-an-issue","title":"Reporting an issue","text":"<p>Please create an issue, assuming one does not already exist, and describe your concern. Note you need a GitHub account for this.</p> <p>Clearly describe the issue:</p> <ul> <li>If it is a bug, please describe how to reproduce it. If possible, attach a complete example which demonstrates   the error. Please also state what you expected to happen instead of the error.</li> <li>If you propose a change or addition, try to give an example what the improved code could look like or how to use   it.</li> <li>If you found a compilation error, please tell us which compiler (version and operating system) you used and paste   the (relevant part of) the error messages to the ticket.</li> </ul> <p>Please stick to the provided issue template bug report if possible.</p>"},{"location":"community/contribution_guidelines/#reporting-a-security-vulnerability","title":"Reporting a security vulnerability","text":"<p>You can report a security vulnerability according to our security policy.</p>"},{"location":"community/contribution_guidelines/#discussing-a-new-feature","title":"Discussing a new feature","text":"<p>For questions, feature or support requests, please open a discussion. If you find a proposed answer satisfactory, please use the \"Mark as answer\" button to make it easier for readers to see what helped and for the community to filter for open questions.</p>"},{"location":"community/contribution_guidelines/#proposing-a-fix-or-an-improvement","title":"Proposing a fix or an improvement","text":"<p>Join an ongoing discussion or comment on an existing issue before starting to code. This can help to avoid duplicate efforts or other frustration during the later review.</p> <p>Create a pull request against the <code>develop</code> branch and follow the pull request template. In particular,</p> <ul> <li>describe the changes in detail, both the what and why,</li> <li>reference existing issues where applicable,</li> <li>add tests to maintain 100% test coverage,</li> <li>update the documentation as needed, and</li> <li>ensure the source code is amalgamated.</li> </ul> <p>We describe all points in detail below.</p> <p>All contributions (including pull requests) must agree to the Developer Certificate of Origin (DCO) version 1.1. This is exactly the same one created and used by the Linux kernel developers and posted on http://developercertificate.org/. This is a developer's certification that he or she has the right to submit the patch for inclusion into the project.</p>"},{"location":"community/contribution_guidelines/#how-to","title":"How to...","text":""},{"location":"community/contribution_guidelines/#describe-your-changes","title":"Describe your changes","text":"<p>This library is primarily maintained as a spare-time project. As such, I cannot make any guarantee how quickly changes are merged and released. Therefore, it is very important to make the review as smooth as possible by explaining not only what you changed, but why. This rationale can be very valuable down the road when improvements or bugs are discussed years later.</p>"},{"location":"community/contribution_guidelines/#reference-an-existing-issue","title":"Reference an existing issue","text":"<p>Link a pull request to an issue to clarify that a fix is forthcoming and which issue can be closed after merging. Only a few cases (e.g., fixing typos) do not require prior discussions.</p>"},{"location":"community/contribution_guidelines/#write-tests","title":"Write tests","text":"<p>The library has an extensive test suite that currently covers 100 % of the library's code. These tests are crucial to maintain API stability and give future contributors confidence that they do not accidentally break things. As Titus Winters aptly put it:</p> <p>If you liked it, you should have put a test on it.</p>"},{"location":"community/contribution_guidelines/#run-the-tests","title":"Run the tests","text":"<p>First, ensure the test suite runs before making any changes:</p> <pre><code>$ cmake -S. -B build\n$ cmake --build build -j 10\n$ ctest --test-dir build -j 10\n</code></pre> <p>The test suite should report:</p> <pre><code>100% tests passed, 0 tests failed out of 98\n</code></pre>"},{"location":"community/contribution_guidelines/#add-tests","title":"Add tests","text":"<p>The tests are located in <code>tests/src/unit-*.cpp</code> and contain doctest assertions like <code>CHECK</code>. The tests are structured along the features of the library or the nature of the tests. Usually, it should be clear from the context which existing file needs to be extended, and only very few cases require creating new test files.</p> <p>When fixing a bug, edit <code>unit-regression2.cpp</code> and add a section referencing the fixed issue.</p>"},{"location":"community/contribution_guidelines/#exceptions","title":"Exceptions","text":"<p>When you test exceptions, please use <code>CHECK_THROWS_WITH_AS</code> which also takes the <code>what()</code> argument of the thrown exception into account.</p>"},{"location":"community/contribution_guidelines/#coverage","title":"Coverage","text":"<p>If test coverage decreases, an automatic warning comment will be posted on the pull request. You can access a code coverage report as an artifact to the \u201cUbuntu\u201d workflow.</p>"},{"location":"community/contribution_guidelines/#update-the-documentation","title":"Update the documentation","text":"<p>The main documentation of the library is generated from the files <code>docs/mkdocs/docs</code>. This folder contains dedicated pages for certain features, a list of all exceptions, and  extensive API documentation with details on every public API function.</p> <p>Build the documentation locally using:</p> <pre><code>make install_venv -C docs/mkdocs\nmake serve -C docs/mkdocs\n</code></pre> <p>The documentation will then be available at http://127.0.0.1:8000/. See the documentation of mkdocs and Material for MkDocs for more information.</p>"},{"location":"community/contribution_guidelines/#amalgamate-the-source-code","title":"Amalgamate the source code","text":"<p>The single-header files <code>single_include/nlohmann/json.hpp</code> and <code>single_include/nlohmann/json_fwd.hpp</code> are generated from the source files in the <code>include/nlohmann</code> directory. Do not edit the files directly; instead, modify the include/nlohmann sources and regenerate the files by executing:</p> <pre><code>make amalgamate\n</code></pre> <p>Running <code>make amalgamate</code> will also apply automatic formatting to the source files using <code>Artistic Style</code>. This formatting may modify your source files in-place. Be certain to review and commit any changes to avoid unintended formatting diffs in commits.</p>"},{"location":"community/contribution_guidelines/#recommended-documentation","title":"Recommended documentation","text":"<ul> <li>The library\u2019s README file is an excellent starting point to   understand its functionality.</li> <li>The documentation page is the reference documentation of the library.</li> <li>RFC 8259 is the reference for the JavaScript Object Notation (JSON)   Data Interchange Format.</li> </ul>"},{"location":"community/contribution_guidelines/#please-dont","title":"Please don't...","text":"<p>Certain contributions are not helpful.</p>"},{"location":"community/contribution_guidelines/#break-the-public-api","title":"Break the public API","text":"<p>We take pride in the library being used by numerous customers across various industries. They all rely on the guarantees provided by semantic versioning. Please do not change the library such that the public API of the 3.x.y version is broken. This includes:</p> <ul> <li>Changing function signatures (altering parameter types, return types, number of parameters) or changing the const-ness   of member functions.</li> <li>Removing functions.</li> <li>Renaming functions or classes.</li> <li>Changing exception handling.</li> <li>Changing exception ids.</li> <li>Changing access specifiers.</li> <li>Changing default arguments.</li> </ul> <p>Although these guidelines may seem restrictive, they are essential for maintaining the library\u2019s utility.</p> <p>Breaking changes may be introduced when they are guarded with a feature macro such as <code>JSON_USE_IMPLICIT_CONVERSIONS</code> which allows  selectively changing the behavior of the library. In next steps, the current behavior can then be deprecated. Using feature macros then allows users to test their code against the library in the next major release.</p>"},{"location":"community/contribution_guidelines/#break-c11-language-conformance","title":"Break C++11 language conformance","text":"<p>This library is designed to work with C++11 and later. This means that any supported C++11 compiler should compile the library without problems. Some compilers like GCC 4.7 (and earlier), Clang 3.3 (and earlier), or Microsoft Visual Studio 13.0 and earlier are known not to work due to missing or incomplete C++11 support.</p> <p>Please do not add features that do not work with the mentioned supported compilers. Please guard features from C++14 and later against the respective <code>JSON_HAS_CPP_14</code> macros.</p>"},{"location":"community/contribution_guidelines/#break-json-conformance","title":"Break JSON conformance","text":"<p>Please refrain from proposing changes that would break JSON conformance. If you propose a conformant extension of JSON to be supported by the library, please motivate this extension.</p>"},{"location":"community/contribution_guidelines/#wanted","title":"Wanted","text":"<p>The following areas really need contribution and are always welcomed:</p> <ul> <li>Extending the continuous integration toward more exotic compilers such as Android NDK, Intel's Compiler, or the   bleeding-edge versions Clang.</li> <li>Improving the efficiency of the JSON parser. The current parser is implemented as a naive recursive descent parser   with hand-coded string handling. More sophisticated approaches like LALR parsers would be really appreciated. That   said, parser generators like Bison or ANTLR do not play nice with single-header files -- I really would like to keep   the parser inside the <code>json.hpp</code> header, and I am not aware of approaches similar to <code>re2c</code> for   parsing.</li> <li>Extending and updating existing benchmarks to include (the most recent version of) this library. Though efficiency   is not everything, speed and memory consumption are very important characteristics for C++ developers, so having   proper comparisons would be interesting.</li> </ul> <p>We look forward to your contributions and collaboration to enhance the library!</p>"},{"location":"community/governance/","title":"Governance","text":"<p>The governance model for the JSON for Modern C++ project is a Benevolent Dictator for Life (BDFL) structure. As the sole maintainer, Niels Lohmann is responsible for all key aspects of the project. The project governance may evolve as the project grows, but any changes will be documented here and communicated to contributors.</p>"},{"location":"community/governance/#overview","title":"Overview","text":"<p>This project is led by a benevolent dictator, Niels Lohmann, and managed by the community. That is, the community actively contributes to the day-to-day maintenance of the project, but the general strategic line is drawn by the benevolent dictator. In case of disagreement, they have the last word. It is the benevolent dictator\u2019s job to resolve disputes within the community and to ensure that the project is able to progress in a coordinated way. In turn, it is the community\u2019s job to guide the decisions of the benevolent dictator through active engagement and contribution.</p>"},{"location":"community/governance/#roles-and-responsibilities","title":"Roles and responsibilities","text":""},{"location":"community/governance/#benevolent-dictator-project-lead","title":"Benevolent dictator (project lead)","text":"<p>Typically, the benevolent dictator, or project lead, is self-appointed. However, because the community always has the ability to fork, this person is fully answerable to the community. The project lead\u2019s role is a difficult one: they set the strategic objectives of the project and communicate these clearly to the community. They also have to understand the community as a whole and strive to satisfy as many conflicting needs as possible, while ensuring that the project survives in the long term.</p> <p>In many ways, the role of the benevolent dictator is less about dictatorship and more about diplomacy. The key is to ensure that, as the project expands, the right people are given influence over it and the community rallies behind the vision of the project lead. The lead\u2019s job is then to ensure that the committers (see below) make the right decisions on behalf of the project. Generally speaking, as long as the committers are aligned with the project\u2019s strategy, the project lead will allow them to proceed as they desire.</p>"},{"location":"community/governance/#committers","title":"Committers","text":"<p>Committers are contributors who have made several valuable contributions to the project and are now relied upon to both write code directly to the repository and screen the contributions of others. In many cases they are programmers but it is also possible that they contribute in a different role. Typically, a committer will focus on a specific aspect of the project, and will bring a level of expertise and understanding that earns them the respect of the community and the project lead. The role of committer is not an official one, it is simply a position that influential members of the community will find themselves in as the project lead looks to them for guidance and support.</p> <p>Committers have no authority over the overall direction of the project. However, they do have the ear of the project lead. It is a committer\u2019s job to ensure that the lead is aware of the community\u2019s needs and collective objectives, and to help develop or elicit appropriate contributions to the project. Often, committers are given informal control over their specific areas of responsibility, and are assigned rights to directly modify certain areas of the source code. That is, although committers do not have explicit decision-making authority, they will often find that their actions are synonymous with the decisions made by the lead.</p>"},{"location":"community/governance/#contributors","title":"Contributors","text":"<p>Contributors are community members who either have no desire to become committers, or have not yet been given the opportunity by the benevolent dictator. They make valuable contributions, such as those outlined in the list below, but generally do not have the authority to make direct changes to the project code. Contributors engage with the project through communication tools, such as email lists, and via reports and patches attached to issues in the issue tracker, as detailed in our community tools document.</p> <p>Anyone can become a contributor. There is no expectation of commitment to the project, no specific skill requirements and no selection process. To become a contributor, a community member simply has to perform one or more actions that are beneficial to the project.</p> <p>Some contributors will already be engaging with the project as users, but will also find themselves doing one or more of the following:</p> <ul> <li>supporting new users (current users often provide the most effective new user support)</li> <li>reporting bugs</li> <li>identifying requirements</li> <li>supplying graphics and web design</li> <li>programming</li> <li>assisting with project infrastructure</li> <li>writing documentation</li> <li>fixing bugs</li> <li>adding features</li> </ul> <p>As contributors gain experience and familiarity with the project, they may find that the project lead starts relying on them more and more. When this begins to happen, they gradually adopt the role of committer, as described above.</p>"},{"location":"community/governance/#users","title":"Users","text":"<p>Users are community members who have a need for the project. They are the most important members of the community: without them, the project would have no purpose. Anyone can be a user; there are no specific requirements.</p> <p>Users should be encouraged to participate in the life of the project and the community as much as possible. User contributions enable the project team to ensure that they are satisfying the needs of those users. Common user activities include (but are not limited to):</p> <ul> <li>evangelising about the project</li> <li>informing developers of project strengths and weaknesses from a new user\u2019s perspective</li> <li>providing moral support (a \u2018thank you\u2019 goes a long way)</li> <li>providing financial support</li> </ul> <p>Users who continue to engage with the project and its community will often find themselves becoming more and more involved. Such users may then go on to become contributors, as described above.</p>"},{"location":"community/governance/#support","title":"Support","text":"<p>All participants in the community are encouraged to provide support for new users within the project management infrastructure. This support is provided as a way of growing the community. Those seeking support should recognise that all support activity within the project is voluntary and is therefore provided as and when time allows. A user requiring guaranteed response times or results should therefore seek to purchase a support contract from a vendor. (Of course, that vendor should be an active member of the community.) However, for those willing to engage with the project on its own terms, and willing to help support other users, the community support channels are ideal.</p>"},{"location":"community/governance/#contribution-process","title":"Contribution Process","text":"<p>Anyone can contribute to the project, regardless of their skills, as there are many ways to contribute. For instance, a contributor might be active on the project mailing list and issue tracker, or might supply patches. The various ways of contributing are described in more detail in our roles in open source document.</p> <p>The developer mailing list is the most appropriate place for a contributor to ask for help when making their first contribution.</p>"},{"location":"community/governance/#decision-making-process","title":"Decision-Making Process","text":"<p>The benevolent dictatorship model does not need a formal conflict resolution process, since the project lead\u2019s word is final. If the community chooses to question the wisdom of the actions of a committer, the project lead can review their decisions by checking the email archives, and either uphold or reverse them.</p> <p>Source</p> <p>The text was taken from http://oss-watch.ac.uk/resources/benevolentdictatorgovernancemodel.</p>"},{"location":"community/quality_assurance/","title":"Quality assurance","text":"<p>Ensuring quality is paramount for this project, particularly because numerous other projects depend on it. Each commit to the library undergoes rigorous checks against the following requirements, and any violations will result in a failed build.</p>"},{"location":"community/quality_assurance/#c-language-compliance-and-compiler-compatibility","title":"C++ language compliance and compiler compatibility","text":"<p>Requirement: Compiler support</p> <p>Any compiler with complete C++11 support can compile the library without warnings.</p> <ul> <li> <p> The library is compiled with 50+ different C++ compilers with different operating systems and platforms,   including the oldest versions known to compile the library.</p> Compilers used in continuous integration Compiler Architecture Operating System CI AppleClang 15.0.0.15000040; Xcode 15.0.1 x86_64 macOS 13.7.2 (Ventura) GitHub AppleClang 15.0.0.15000100; Xcode 15.1 x86_64 macOS 13.7.2 (Ventura) GitHub AppleClang 15.0.0.15000100; Xcode 15.2 x86_64 macOS 13.7.2 (Ventura) GitHub AppleClang 15.0.0.15000309; Xcode 15.3 arm64 macOS 14.7.2 (Sonoma) GitHub AppleClang 15.0.0.15000309; Xcode 15.4 arm64 macOS 14.7.2 (Sonoma) GitHub AppleClang 16.0.0.16000026; Xcode 16 arm64 macOS 15.2 (Sequoia) GitHub AppleClang 16.0.0.16000026; Xcode 16.1 arm64 macOS 15.2 (Sequoia) GitHub AppleClang 16.0.0.16000026; Xcode 16.2 arm64 macOS 15.2 (Sequoia) GitHub AppleClang 17.0.0.17000013; Xcode 16.3 arm64 macOS 15.5 (Sequoia) GitHub AppleClang 17.0.0.17000013; Xcode 16.4 arm64 macOS 15.5 (Sequoia) GitHub AppleClang 17.0.0.17000319; Xcode 26.0.1 arm64 macOS 15.5 (Sequoia) GitHub Clang 3.5.2 x86_64 Ubuntu 22.04.1 LTS GitHub Clang 3.6.2 x86_64 Ubuntu 22.04.1 LTS GitHub Clang 3.7.1 x86_64 Ubuntu 22.04.1 LTS GitHub Clang 3.8.1 x86_64 Ubuntu 22.04.1 LTS GitHub Clang 3.9.1 x86_64 Ubuntu 22.04.1 LTS GitHub Clang 4.0.1 x86_64 Ubuntu 22.04.1 LTS GitHub Clang 5.0.2 x86_64 Ubuntu 22.04.1 LTS GitHub Clang 6.0.1 x86_64 Ubuntu 22.04.1 LTS GitHub Clang 7.1.0 x86_64 Ubuntu 22.04.1 LTS GitHub Clang 8.0.1 x86_64 Ubuntu 22.04.1 LTS GitHub Clang 9.0.1 x86_64 Ubuntu 22.04.1 LTS GitHub Clang 10.0.1 x86_64 Ubuntu 22.04.1 LTS GitHub Clang 11.0.1 with GNU-like command-line x86_64 Windows Server 2022 (Build 20348) GitHub Clang 11.1.0 x86_64 Ubuntu 22.04.1 LTS GitHub Clang 12.0.1 with GNU-like command-line x86_64 Windows Server 2022 (Build 20348) GitHub Clang 12.0.1 x86_64 Ubuntu 22.04.1 LTS GitHub Clang 13.0.1 with GNU-like command-line x86_64 Windows Server 2022 (Build 20348) GitHub Clang 13.0.1 x86_64 Ubuntu 22.04.1 LTS GitHub Clang 14.0.6 x86_64 Ubuntu 22.04.1 LTS GitHub Clang 14.0.6 with GNU-like command-line x86_64 Windows Server 2022 (Build 20348) GitHub Clang 15.0.7 x86_64 Ubuntu 22.04.1 LTS GitHub Clang 15.0.7 with GNU-like command-line x86_64 Windows Server 2022 (Build 20348) GitHub Clang 16.0.6 x86_64 Ubuntu 22.04.1 LTS GitHub Clang 16.0.6 with GNU-like command-line x86_64 Windows Server 2022 (Build 20348) GitHub Clang 17.0.6 x86_64 Ubuntu 22.04.1 LTS GitHub Clang 18.1.8 x86_64 Ubuntu 22.04.1 LTS GitHub Clang 18.1.8 with GNU-like command-line x86_64 Windows Server 2022 (Build 20348) GitHub Clang 19.1.5 with MSVC-like command-line x86_64 Windows Server 2022 (Build 20348) GitHub Clang 19.1.7 x86_64 Ubuntu 22.04.1 LTS GitHub Clang 19.1.7 with GNU-like command-line x86_64 Windows Server 2022 (Build 20348) GitHub Clang 20.1.1 x86_64 Ubuntu 22.04.1 LTS GitHub Clang 20.1.8 with GNU-like command-line x86_64 Windows Server 2022 (Build 20348) GitHub Clang 21.0.0 x86_64 Ubuntu 22.04.1 LTS GitHub Emscripten 4.0.6 x86_64 Ubuntu 22.04.1 LTS GitHub GNU 4.8.5 x86_64 Ubuntu 22.04.1 LTS GitHub GNU 4.9.3 x86_64 Ubuntu 22.04.1 LTS GitHub GNU 5.5.0 x86_64 Ubuntu 22.04.1 LTS GitHub GNU 6.4.0 x86_64 Ubuntu 22.04.1 LTS GitHub GNU 7.5.0 x86_64 Ubuntu 22.04.1 LTS GitHub GNU 8.5.0 x86_64 Ubuntu 22.04.1 LTS GitHub GNU 9.3.0 x86_64 Ubuntu 22.04.1 LTS GitHub GNU 9.4.0 x86_64 Ubuntu 22.04.1 LTS GitHub GNU 9.5.0 x86_64 Ubuntu 22.04.1 LTS GitHub GNU 10.5.0 x86_64 Ubuntu 22.04.1 LTS GitHub GNU 11.4.0 x86_64 Ubuntu 22.04.1 LTS GitHub GNU 11.5.0 x86_64 Ubuntu 22.04.1 LTS GitHub GNU 12.2.0 (MinGW-W64 i686-ucrt-posix-dwarf) x86_64 Windows Server 2022 (Build 20348) GitHub GNU 12.2.0 (MinGW-W64 x86_64-ucrt-posix-seh) x86_64 Windows Server 2022 (Build 20348) GitHub GNU 12.4.0 x86_64 Ubuntu 22.04.1 LTS GitHub GNU 13.3.0 x86_64 Ubuntu 22.04.1 LTS GitHub GNU 14.2.0 x86_64 Ubuntu 22.04.1 LTS GitHub GNU 14.2.0 arm64 Linux 6.1.100 Cirrus CI GNU 15.1.0 x86_64 Ubuntu 22.04.1 LTS GitHub icpc (ICC) 2021.5.0 20211109 x86_64 Ubuntu 20.04.3 LTS GitHub MSVC 19.0.24241.7 x86 Windows 8.1 AppVeyor MSVC 19.16.27035.0 x86 Windows-10 (Build 14393) AppVeyor MSVC 19.29.30157.0 x86 Windows-10 (Build 17763) AppVeyor MSVC 19.44.35214.0 x86 Windows Server 2022 (Build 20348) GitHub MSVC 19.44.35214.0 x86_64 Windows Server 2022 (Build 20348) GitHub </li> <li> <p> The library is compiled with all C++ language revisions (C++11, C++14, C++17, C++20, C++23, and C++26) to detect   and fix language deprecations early.</p> </li> <li> The library is checked for compiler warnings:</li> <li> <p>On Clang, <code>-Weverything</code> is used with 8 exceptions.</p> Clang warnings <pre><code># Ignored Clang warnings:\n# -Wno-c++98-compat               The library targets C++11.\n# -Wno-c++98-compat-pedantic      The library targets C++11.\n# -Wno-deprecated-declarations    The library contains annotations for deprecated functions.\n# -Wno-extra-semi-stmt            The library uses assert which triggers this warning.\n# -Wno-padded                     We do not care about padding warnings.\n# -Wno-covered-switch-default     All switches list all cases and a default case.\n# -Wno-unsafe-buffer-usage        Otherwise Doctest would not compile.\n# -Wno-missing-noreturn           We found no way to silence this warning otherwise, see PR #4871\n\nset(CLANG_CXXFLAGS\n    -Werror\n    -Weverything\n    -Wno-c++98-compat\n    -Wno-c++98-compat-pedantic\n    -Wno-deprecated-declarations\n    -Wno-extra-semi-stmt\n    -Wno-padded\n    -Wno-covered-switch-default\n    -Wno-unsafe-buffer-usage\n    -Wno-missing-noreturn\n)\n</code></pre> </li> <li> <p>On GCC, 300+ warnings are enabled with 8 exceptions.</p> GCC warnings <pre><code># Warning flags determined for GCC 15.1.0 with https://github.com/nlohmann/gcc_flags:\n# Ignored GCC warnings:\n# -Wno-abi-tag           We do not care about ABI tags.\n# -Wno-aggregate-return  The library uses aggregate returns.\n# -Wno-long-long         The library uses the long long type to interface with system functions.\n# -Wno-namespaces        The library uses namespaces.\n# -Wno-nrvo              Doctest triggers this warning.\n# -Wno-padded            We do not care about padding warnings.\n# -Wno-system-headers    We do not care about warnings in system headers.\n# -Wno-templates         The library uses templates.\n\nset(GCC_CXXFLAGS\n    -pedantic\n    -Werror\n    --all-warnings\n    --extra-warnings\n    -W\n    -WNSObject-attribute\n    -Wno-abi-tag\n    -Waddress\n    -Waddress-of-packed-member\n    -Wno-aggregate-return\n    -Waggressive-loop-optimizations\n    -Waligned-new=all\n    -Wall\n    -Walloc-size\n    -Walloc-zero\n    -Walloca\n    -Wanalyzer-allocation-size\n    -Wanalyzer-deref-before-check\n    -Wanalyzer-double-fclose\n    -Wanalyzer-double-free\n    -Wanalyzer-exposure-through-output-file\n    -Wanalyzer-exposure-through-uninit-copy\n    -Wanalyzer-fd-access-mode-mismatch\n    -Wanalyzer-fd-double-close\n    -Wanalyzer-fd-leak\n    -Wanalyzer-fd-phase-mismatch\n    -Wanalyzer-fd-type-mismatch\n    -Wanalyzer-fd-use-after-close\n    -Wanalyzer-fd-use-without-check\n    -Wanalyzer-file-leak\n    -Wanalyzer-free-of-non-heap\n    -Wanalyzer-imprecise-fp-arithmetic\n    -Wanalyzer-infinite-loop\n    -Wanalyzer-infinite-recursion\n    -Wanalyzer-jump-through-null\n    -Wanalyzer-malloc-leak\n    -Wanalyzer-mismatching-deallocation\n    -Wanalyzer-null-argument\n    -Wanalyzer-null-dereference\n    -Wanalyzer-out-of-bounds\n    -Wanalyzer-overlapping-buffers\n    -Wanalyzer-possible-null-argument\n    -Wanalyzer-possible-null-dereference\n    -Wanalyzer-putenv-of-auto-var\n    -Wanalyzer-shift-count-negative\n    -Wanalyzer-shift-count-overflow\n    -Wanalyzer-stale-setjmp-buffer\n    -Wanalyzer-symbol-too-complex\n    -Wanalyzer-tainted-allocation-size\n    -Wanalyzer-tainted-array-index\n    -Wanalyzer-tainted-assertion\n    -Wanalyzer-tainted-divisor\n    -Wanalyzer-tainted-offset\n    -Wanalyzer-tainted-size\n    -Wanalyzer-too-complex\n    -Wanalyzer-undefined-behavior-ptrdiff\n    -Wanalyzer-undefined-behavior-strtok\n    -Wanalyzer-unsafe-call-within-signal-handler\n    -Wanalyzer-use-after-free\n    -Wanalyzer-use-of-pointer-in-stale-stack-frame\n    -Wanalyzer-use-of-uninitialized-value\n    -Wanalyzer-va-arg-type-mismatch\n    -Wanalyzer-va-list-exhausted\n    -Wanalyzer-va-list-leak\n    -Wanalyzer-va-list-use-after-va-end\n    -Wanalyzer-write-to-const\n    -Wanalyzer-write-to-string-literal\n    -Warith-conversion\n    -Warray-bounds=2\n    -Warray-compare\n    -Warray-parameter=2\n    -Wattribute-alias=2\n    -Wattribute-warning\n    -Wattributes\n    -Wbool-compare\n    -Wbool-operation\n    -Wbuiltin-declaration-mismatch\n    -Wbuiltin-macro-redefined\n    -Wc++0x-compat\n    -Wc++11-compat\n    -Wc++11-extensions\n    -Wc++14-compat\n    -Wc++14-extensions\n    -Wc++17-compat\n    -Wc++17-extensions\n    -Wc++1z-compat\n    -Wc++20-compat\n    -Wc++20-extensions\n    -Wc++23-extensions\n    -Wc++26-extensions\n    -Wc++2a-compat\n    -Wcalloc-transposed-args\n    -Wcannot-profile\n    -Wcast-align\n    -Wcast-align=strict\n    -Wcast-function-type\n    -Wcast-qual\n    -Wcast-user-defined\n    -Wcatch-value=3\n    -Wchanges-meaning\n    -Wchar-subscripts\n    -Wclass-conversion\n    -Wclass-memaccess\n    -Wclobbered\n    -Wcomma-subscript\n    -Wcomment\n    -Wcomments\n    -Wcomplain-wrong-lang\n    -Wconditionally-supported\n    -Wconversion\n    -Wconversion-null\n    -Wcoverage-invalid-line-number\n    -Wcoverage-mismatch\n    -Wcoverage-too-many-conditions\n    -Wcoverage-too-many-paths\n    -Wcpp\n    -Wctad-maybe-unsupported\n    -Wctor-dtor-privacy\n    -Wdangling-else\n    -Wdangling-pointer=2\n    -Wdangling-reference\n    -Wdate-time\n    -Wdefaulted-function-deleted\n    -Wdelete-incomplete\n    -Wdelete-non-virtual-dtor\n    -Wdeprecated\n    -Wdeprecated-copy\n    -Wdeprecated-copy-dtor\n    -Wdeprecated-declarations\n    -Wdeprecated-enum-enum-conversion\n    -Wdeprecated-enum-float-conversion\n    -Wdeprecated-literal-operator\n    -Wdeprecated-variadic-comma-omission\n    -Wdisabled-optimization\n    -Wdiv-by-zero\n    -Wdouble-promotion\n    -Wduplicated-branches\n    -Wduplicated-cond\n    -Weffc++\n    -Welaborated-enum-base\n    -Wempty-body\n    -Wendif-labels\n    -Wenum-compare\n    -Wenum-conversion\n    -Wexceptions\n    -Wexpansion-to-defined\n    -Wextra\n    -Wextra-semi\n    -Wflex-array-member-not-at-end\n    -Wfloat-conversion\n    -Wfloat-equal\n    -Wformat -Wformat-contains-nul\n    -Wformat -Wformat-diag\n    -Wformat -Wformat-extra-args\n    -Wformat -Wformat-nonliteral\n    -Wformat -Wformat-overflow=2\n    -Wformat -Wformat-security\n    -Wformat -Wformat-signedness\n    -Wformat -Wformat-truncation=2\n    -Wformat -Wformat-y2k\n    -Wformat -Wformat-zero-length\n    -Wformat=2\n    -Wframe-address\n    -Wfree-nonheap-object\n    -Wglobal-module\n    -Whardened\n    -Wheader-guard\n    -Whsa\n    -Wif-not-aligned\n    -Wignored-attributes\n    -Wignored-qualifiers\n    -Wimplicit-fallthrough=5\n    -Winaccessible-base\n    -Winfinite-recursion\n    -Winherited-variadic-ctor\n    -Winit-list-lifetime\n    -Winit-self\n    -Winline\n    -Wint-in-bool-context\n    -Wint-to-pointer-cast\n    -Winterference-size\n    -Winvalid-constexpr\n    -Winvalid-imported-macros\n    -Winvalid-memory-model\n    -Winvalid-offsetof\n    -Winvalid-pch\n    -Winvalid-utf8\n    -Wliteral-suffix\n    -Wlogical-not-parentheses\n    -Wlogical-op\n    -Wno-long-long\n    -Wlto-type-mismatch\n    -Wmain\n    -Wmaybe-musttail-local-addr\n    -Wmaybe-uninitialized\n    -Wmemset-elt-size\n    -Wmemset-transposed-args\n    -Wmisleading-indentation\n    -Wmismatched-dealloc\n    -Wmismatched-new-delete\n    -Wmismatched-tags\n    -Wmissing-attributes\n    -Wmissing-braces\n    -Wmissing-declarations\n    -Wmissing-field-initializers\n    -Wmissing-include-dirs\n    -Wmissing-profile\n    -Wmissing-requires\n    -Wmissing-template-keyword\n    -Wmultichar\n    -Wmultiple-inheritance\n    -Wmultistatement-macros\n    -Wmusttail-local-addr\n    -Wno-namespaces\n    -Wnarrowing\n    -Wnoexcept\n    -Wnoexcept-type\n    -Wnon-template-friend\n    -Wnon-virtual-dtor\n    -Wnonnull\n    -Wnonnull-compare\n    -Wnormalized=nfkc\n    -Wno-nrvo\n    -Wnull-dereference\n    -Wodr\n    -Wold-style-cast\n    -Wopenacc-parallelism\n    -Wopenmp\n    -Wopenmp-simd\n    -Woverflow\n    -Woverlength-strings\n    -Woverloaded-virtual=2\n    -Wpacked\n    -Wpacked-bitfield-compat\n    -Wpacked-not-aligned\n    -Wno-padded\n    -Wparentheses\n    -Wpedantic\n    -Wpessimizing-move\n    -Wplacement-new=2\n    -Wpmf-conversions\n    -Wpointer-arith\n    -Wpointer-compare\n    -Wpragma-once-outside-header\n    -Wpragmas\n    -Wprio-ctor-dtor\n    -Wpsabi\n    -Wrange-loop-construct\n    -Wredundant-decls\n    -Wredundant-move\n    -Wredundant-tags\n    -Wregister\n    -Wreorder\n    -Wrestrict\n    -Wreturn-local-addr\n    -Wreturn-type\n    -Wscalar-storage-order\n    -Wself-move\n    -Wsequence-point\n    -Wshadow=compatible-local\n    -Wshadow=global\n    -Wshadow=local\n    -Wshift-count-negative\n    -Wshift-count-overflow\n    -Wshift-negative-value\n    -Wshift-overflow=2\n    -Wsign-compare\n    -Wsign-conversion\n    -Wsign-promo\n    -Wsized-deallocation\n    -Wsizeof-array-argument\n    -Wsizeof-array-div\n    -Wsizeof-pointer-div\n    -Wsizeof-pointer-memaccess\n    -Wstack-protector\n    -Wstrict-aliasing\n    -Wstrict-aliasing=3\n    -Wstrict-null-sentinel\n    -Wstrict-overflow\n    -Wstring-compare\n    -Wstringop-overflow\n    -Wstringop-overflow=4\n    -Wstringop-overread\n    -Wstringop-truncation\n    -Wsubobject-linkage\n    -Wsuggest-attribute=cold\n    -Wsuggest-attribute=const\n    -Wsuggest-attribute=format\n    -Wsuggest-attribute=malloc\n    -Wsuggest-attribute=noreturn\n    -Wsuggest-attribute=pure\n    -Wsuggest-attribute=returns_nonnull\n    -Wsuggest-final-methods\n    -Wsuggest-final-types\n    -Wsuggest-override\n    -Wswitch\n    -Wswitch-bool\n    -Wswitch-default\n    -Wswitch-enum\n    -Wswitch-outside-range\n    -Wswitch-unreachable\n    -Wsync-nand\n    -Wsynth\n    -Wno-system-headers\n    -Wtautological-compare\n    -Wtemplate-body\n    -Wtemplate-id-cdtor\n    -Wtemplate-names-tu-local\n    -Wno-templates\n    -Wterminate\n    -Wtrailing-whitespace\n    -Wtrampolines\n    -Wtrigraphs\n    -Wtrivial-auto-var-init\n    -Wtsan\n    -Wtype-limits\n    -Wundef\n    -Wunicode\n    -Wuninitialized\n    -Wunknown-pragmas\n    -Wunreachable-code\n    -Wunsafe-loop-optimizations\n    -Wunused\n    -Wunused-but-set-parameter\n    -Wunused-but-set-variable\n    -Wunused-const-variable=2\n    -Wunused-function\n    -Wunused-label\n    -Wunused-local-typedefs\n    -Wunused-macros\n    -Wunused-parameter\n    -Wunused-result\n    -Wunused-value\n    -Wunused-variable\n    -Wuse-after-free=3\n    -Wuseless-cast\n    -Wvarargs\n    -Wvariadic-macros\n    -Wvector-operation-performance\n    -Wvexing-parse\n    -Wvirtual-inheritance\n    -Wvirtual-move-assign\n    -Wvla\n    -Wvla-parameter\n    -Wvolatile\n    -Wvolatile-register-var\n    -Wwrite-strings\n    -Wxor-used-as-pow\n    -Wzero-as-null-pointer-constant\n    -Wzero-length-bounds\n)\n</code></pre> </li> </ul>"},{"location":"community/quality_assurance/#c-standard-library-compliance","title":"C++ standard library compliance","text":"<p>Requirement: No prerequisites</p> <p>The library has no prerequisites other than the Standard Template Library (STL).</p> <ul> <li> The library is compiled and tested with both libc++ and   libstdc++ to detect subtle differences or incompatibilities.</li> <li> The code checked with Include What You Use (IWYU) that all required standard   headers are included.</li> <li> On Windows, the library is compiled with <code>&lt;Windows.h&gt;</code> being included to detect and avoid common bugs.</li> <li> The library is compiled with exceptions disabled to support alternative means of error handling.</li> </ul>"},{"location":"community/quality_assurance/#stable-public-api","title":"Stable public API","text":"<p>Requirement: Stable public API</p> <p>Any change to the library does not break the public API.</p> <ul> <li> All public API functions are tested with a variety of arguments.</li> <li> The library is compiled and tested with different template arguments for number, string, array, and object types.</li> <li> Unit tests cover all lines of the code base.</li> <li> Every exception of the library is thrown in the test suite, and the error messages and exception ids are checked.</li> </ul> <p>Requirement: Complete documentation</p> <p>The public API is extensively documented.</p> <ul> <li> Every public API function has a dedicated page in the   API reference documentation with a self-contained code example.</li> <li> All examples in the documentation are tested, and changes in their output are treated as an error.</li> </ul>"},{"location":"community/quality_assurance/#robust-input-processing","title":"Robust input processing","text":"<p>Requirement: Standards compliance</p> <p>The library is compliant to JSON as defined in RFC 8259.</p> <ul> <li> The lexer is tested with all valid Unicode code points and all prefixes of all invalid Unicode code points.</li> <li> The parser is tested against extensive correctness suites for JSON compliance.</li> <li> In addition, the library is continuously fuzz-tested at OSS-Fuzz where the   library is checked against billions of inputs.</li> </ul>"},{"location":"community/quality_assurance/#static-analysis","title":"Static analysis","text":"<p>Requirement: State-of-the-art code analysis</p> <p>The code is checked with state-of-the-art static code analysis tools.</p> <ul> <li> <p> The code is checked with the latest Clang-Tidy.</p> Clang-Tidy configuration (.clang-tidy) <pre><code># TODO: The first three checks are only removed to get the CI going. They have to be addressed at some point.\n# TODO: portability-avoid-pragma-once: should be fixed eventually\n\nChecks: '*,\n\n         -portability-template-virtual-member-function,\n         -bugprone-use-after-move,\n         -hicpp-invalid-access-moved,\n\n         -altera-id-dependent-backward-branch,\n         -altera-struct-pack-align,\n         -altera-unroll-loops,\n         -android-cloexec-fopen,\n         -boost-use-ranges,\n         -bugprone-easily-swappable-parameters,\n         -cert-err58-cpp,\n         -clang-analyzer-webkit.NoUncountedMemberChecker,\n         -concurrency-mt-unsafe,\n         -cppcoreguidelines-avoid-const-or-ref-data-members,\n         -cppcoreguidelines-avoid-do-while,\n         -cppcoreguidelines-avoid-goto,\n         -cppcoreguidelines-avoid-magic-numbers,\n         -cppcoreguidelines-avoid-non-const-global-variables,\n         -cppcoreguidelines-macro-usage,\n         -cppcoreguidelines-pro-bounds-avoid-unchecked-container-access,\n         -cppcoreguidelines-pro-bounds-array-to-pointer-decay,\n         -cppcoreguidelines-pro-bounds-constant-array-index,\n         -cppcoreguidelines-pro-bounds-pointer-arithmetic,\n         -cppcoreguidelines-pro-type-reinterpret-cast,\n         -cppcoreguidelines-pro-type-union-access,\n         -cppcoreguidelines-rvalue-reference-param-not-moved,\n         -cppcoreguidelines-virtual-class-destructor,\n         -fuchsia-default-arguments-calls,\n         -fuchsia-default-arguments-declarations,\n         -fuchsia-overloaded-operator,\n         -google-explicit-constructor,\n         -google-readability-function-size,\n         -google-runtime-float,\n         -google-runtime-int,\n         -google-runtime-references,\n         -hicpp-avoid-goto,\n         -hicpp-explicit-conversions,\n         -hicpp-function-size,\n         -hicpp-no-array-decay,\n         -hicpp-no-assembler,\n         -hicpp-signed-bitwise,\n         -hicpp-uppercase-literal-suffix,\n         -llvm-header-guard,\n         -llvm-include-order,\n         -llvm-prefer-static-over-anonymous-namespace,\n         -llvm-use-ranges,\n         -llvmlibc-*,\n         -misc-use-anonymous-namespace,\n         -misc-confusable-identifiers,\n         -misc-include-cleaner,\n         -misc-no-recursion,\n         -misc-non-private-member-variables-in-classes,\n         -modernize-concat-nested-namespaces,\n         -modernize-type-traits,\n         -modernize-use-constraints,\n         -modernize-use-designated-initializers,\n         -modernize-use-nodiscard,\n         -modernize-use-ranges,\n         -modernize-use-std-numbers,\n         -modernize-use-trailing-return-type,\n         -performance-enum-size,\n         -portability-avoid-pragma-once,\n         -readability-function-cognitive-complexity,\n         -readability-function-size,\n         -readability-identifier-length,\n         -readability-magic-numbers,\n         -readability-redundant-access-specifiers,\n         -readability-redundant-parentheses,\n         -readability-simplify-boolean-expr,\n         -readability-uppercase-literal-suffix,\n         -readability-use-concise-preprocessor-directives'\n\nCheckOptions:\n  - key: hicpp-special-member-functions.AllowSoleDefaultDtor\n    value: 1\n\nWarningsAsErrors: '*'\n\n#HeaderFilterRegex: '.*nlohmann.*'\nHeaderFilterRegex: '.*hpp$'\n</code></pre> </li> <li> <p> The code is checked with the latest Cppcheck with all warnings enabled.</p> </li> <li> The code is checked with the latest Clang Static Analyzer with 89 enabled   rules.</li> <li> The code is checked with Infer.</li> <li> The code is checked with Codacy.</li> </ul>"},{"location":"community/quality_assurance/#dynamic-analysis","title":"Dynamic analysis","text":"<p>Requirement: Correctness</p> <p>The library is checked for memory correctness and absence of undefined behavior.</p> <ul> <li> The test suite is executed with enabled runtime assertions to   check invariants and preconditions of functions to detect undefined behavior.</li> <li> The test suite is executed with Valgrind (Memcheck) to detect memory leaks.</li> <li> The test suite is executed with Sanitizers (address sanitizer, undefined   behavior sanitizer, integer overflow detection, nullability violations).</li> </ul>"},{"location":"community/quality_assurance/#style-check","title":"Style check","text":"<p>Requirement: Common code style</p> <p>A common code style is used throughout all code files of the library.</p> <ul> <li> <p> The code is formatted with Artistic Style (astyle) against a style configuration   that is also enforced in the CI.</p> Astyle configuration (tools/astyle/.astylerc) <pre><code># Configuration for Artistic Style\n# see https://astyle.sourceforge.net/astyle.html\n\n#######################\n# Brace Style Options #\n#######################\n\n# use Allman style for braces\n--style=allman\n\n###############\n# Tab Options #\n###############\n\n# indent using 4 spaces\n--indent=spaces=4\n\n#######################\n# Indentation Options #\n#######################\n\n# indent access modifiers one half indent\n--indent-modifiers\n\n# indent switch cases to the switch block\n--indent-switches\n\n# indent preprocessor blocks\n--indent-preproc-block\n\n# indent preprocessor defines\n--indent-preproc-define\n\n# indent C++ comments\n--indent-col1-comments\n\n###################\n# Padding Options #\n###################\n\n# insert space padding around operators\n--pad-oper\n\n# insert space between if/for/while... and the following parentheses\n--pad-header\n\n# attach the pointer to the variable type (left)\n--align-pointer=type\n\n# attach the reference to the variable type (left)\n--align-reference=type\n\n######################\n# Formatting Options #\n######################\n\n# add braces to unbraced one line conditional statements\n--add-braces\n\n# convert tabs to spaces\n--convert-tabs\n\n# closes whitespace between the ending angle brackets of template definitions\n--close-templates\n\n#################\n# Other Options #\n#################\n\n# do not create backup files\n--suffix=none\n\n# preserve the original file date\n--preserve-date\n\n# display only the files that have been formatted\n--formatted\n\n# for the linux (LF) line end style\n--lineend=linux\n</code></pre> </li> <li> <p> The code style is checked with cpplint with 61 enabled rules.</p> </li> </ul>"},{"location":"community/quality_assurance/#simple-integration","title":"Simple integration","text":"<p>Requirement: Single header</p> <p>The library can be used by adding a single header to a C++ project.</p> <ul> <li> An amalgamation script is used to check if the source code is exposed as a self-contained single-header file.</li> <li> The test suite is checked against the amalgamated source file as well as the individual source file.</li> </ul> <p>Requirement: CMake as primary development tool</p> <p>All library functions are exposed and usable by CMake.</p> <ul> <li> All library options are exposed as CMake options and tested.</li> <li> The library is tested against relevant CMake versions:</li> <li>CMake 3.5 (the earliest supported)</li> <li>CMake 3.31.6 (the latest 3.x release)</li> <li>CMake 4.0.0 (a very recent release)</li> </ul>"},{"location":"community/security_policy/","title":"Security Policy","text":""},{"location":"community/security_policy/#reporting-a-vulnerability","title":"Reporting a Vulnerability","text":"<p>We value the security of our users and appreciate your efforts to responsibly disclose vulnerabilities. If you have identified a security vulnerability in this repository, please use the GitHub Security Advisory \"Report a Vulnerability\" tab.</p> <p>Until it is published, this draft security advisory will only be visible to the maintainers of this project. Other users and teams may be added once the advisory is created.</p> <p>We will send a response indicating the next steps in handling your report. After the initial reply to your report, we will keep you informed of the progress towards a fix and full announcement and may ask for additional information or guidance.</p> <p>For vulnerabilities in third-party dependencies or modules, please report them directly to the respective maintainers.</p>"},{"location":"community/security_policy/#additional-resources","title":"Additional Resources","text":"<ul> <li>Explore security-related topics and contribute to tools and projects through   GitHub Security Lab.</li> <li>Learn more about responsible disclosure and reporting vulnerabilities in GitHub at   About coordinated disclosure of security vulnerabilities.</li> </ul> <p>We sincerely thank you for contributing to the security and integrity of this project!</p>"},{"location":"features/arbitrary_types/","title":"Arbitrary Type Conversions","text":"<p>Every type can be serialized in JSON, not just STL containers and scalar types. Usually, you would do something along those lines:</p> <pre><code>namespace ns {\n    // a simple struct to model a person\n    struct person {\n        std::string name;\n        std::string address;\n        int age;\n    };\n} // namespace ns\n\nns::person p = {\"Ned Flanders\", \"744 Evergreen Terrace\", 60};\n\n// convert to JSON: copy each value into the JSON object\njson j;\nj[\"name\"] = p.name;\nj[\"address\"] = p.address;\nj[\"age\"] = p.age;\n\n// ...\n\n// convert from JSON: copy each value from the JSON object\nns::person p {\n    j[\"name\"].get&lt;std::string&gt;(),\n    j[\"address\"].get&lt;std::string&gt;(),\n    j[\"age\"].get&lt;int&gt;()\n};\n</code></pre> <p>It works, but that's quite a lot of boilerplate... Fortunately, there's a better way:</p> <pre><code>// create a person\nns::person p {\"Ned Flanders\", \"744 Evergreen Terrace\", 60};\n\n// conversion: person -&gt; json\njson j = p;\n\nstd::cout &lt;&lt; j &lt;&lt; std::endl;\n// {\"address\":\"744 Evergreen Terrace\",\"age\":60,\"name\":\"Ned Flanders\"}\n\n// conversion: json -&gt; person\nauto p2 = j.get&lt;ns::person&gt;();\n\n// that's it\nassert(p == p2);\n</code></pre>"},{"location":"features/arbitrary_types/#basic-usage","title":"Basic usage","text":"<p>To make this work with one of your types, you only need to provide two functions:</p> <pre><code>using json = nlohmann::json;\n\nnamespace ns {\n    void to_json(json&amp; j, const person&amp; p) {\n        j = json{ {\"name\", p.name}, {\"address\", p.address}, {\"age\", p.age} };\n    }\n\n    void from_json(const json&amp; j, person&amp; p) {\n        j.at(\"name\").get_to(p.name);\n        j.at(\"address\").get_to(p.address);\n        j.at(\"age\").get_to(p.age);\n    }\n} // namespace ns\n</code></pre> <p>That's all! When calling the <code>json</code> constructor with your type, your custom <code>to_json</code> method will be automatically called. Likewise, when calling <code>get&lt;your_type&gt;()</code> or <code>get_to(your_type&amp;)</code>, the <code>from_json</code> method will be called.</p> <p>Some important things:</p> <ul> <li>Those methods MUST be in your type's namespace (which can be the global namespace), or the library will not be able to locate them (in this example, they are in namespace <code>ns</code>, where <code>person</code> is defined).</li> <li>Those methods MUST be available (e.g., proper headers must be included) everywhere you use these conversions. Look at #1108 for errors that may occur otherwise.</li> <li>When using <code>get&lt;your_type&gt;()</code>, <code>your_type</code> MUST be DefaultConstructible. (There is a way to bypass this requirement described later.)</li> <li>In function <code>from_json</code>, use function <code>at()</code> to access the object values rather than <code>operator[]</code>. In case a key does not exist, <code>at</code> throws an exception that you can handle, whereas <code>operator[]</code> exhibits undefined behavior.</li> <li>You do not need to add serializers or deserializers for STL types like <code>std::vector</code>: the library already implements these.</li> </ul>"},{"location":"features/arbitrary_types/#simplify-your-life-with-macros","title":"Simplify your life with macros","text":"<p>If you just want to serialize/deserialize some structs, the <code>to_json</code>/<code>from_json</code> functions can be a lot of boilerplate.</p> <p>There are several macros to make your life easier as long as you want to use a JSON object as serialization. The macros are following the naming pattern, and you can chose the macro based on the needed features:</p> <ul> <li>All the macros start with <code>NLOHMANN_DEFINE</code>.</li> <li>If you want a macro for the derived object, use the <code>DERIVED_TYPE</code> variant, otherwise use <code>TYPE</code>.<ul> <li>The <code>DERIVED_TYPE</code> variant requires an additional parameter of a base type, which should have the <code>to_json</code>/<code>from_json</code> functions defined. For instance, with a macro of its own.</li> </ul> </li> <li>If you need access to the private fields use <code>INTRUSIVE</code> variant, otherwise use <code>NON_INTRUSIVE</code>.<ul> <li>The <code>INTRUSIVE</code> macro should be defined inside the target class/struct, <code>NON_INTRUSIVE</code> should be defined within the same namespace.</li> </ul> </li> <li>If you want to deserialize the incomplete JSONs, use the <code>WITH_DEFAULTS</code> variant, which will use the default values for the member variables absent in JSON, the variant without <code>WITH_DEFAULTS</code> will raise an exception.</li> <li>If you do not need deserialization at all and only interested in <code>to_json</code> function, you can use the <code>ONLY_SERIALIZE</code> variant.</li> <li>If you want to use the custom JSON names for member variables, use <code>WITH_NAMES</code> variant, otherwise the JSON name of the variable will be the same as its regular name. </li> </ul> <p>For all the macros, the first parameter is the name of the class/struct. The <code>DERIVED_TYPE</code> macros require a second parameter of a base class. All the remaining parameters name the member variables. The <code>WITH_NAMES</code> macros require a JSON name before each of the variables.</p> Need access to private members Need only de-serialization Allow missing values when de-serializing macro NLOHMANN_DEFINE_TYPE_INTRUSIVE NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT NLOHMANN_DEFINE_TYPE_INTRUSIVE_ONLY_SERIALIZE NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE <p>For derived classes and structs, use the following macros</p> Need access to private members Need only de-serialization Allow missing values when de-serializing macro NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_DEFAULT NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_ONLY_SERIALIZE NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_DEFAULT NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE <p>Implementation limits</p> <ul> <li>The current macro implementations are limited to at most 63 member variables. If you want to serialize/deserialize   types with more than 63 member variables, you need to define the <code>to_json</code>/<code>from_json</code> functions manually.</li> <li>For the <code>WITH_NAMES</code> variants the limit is halved to 31 member variables.</li> </ul> Example <p>The <code>to_json</code>/<code>from_json</code> functions for the <code>person</code> struct above can be created with:</p> <pre><code>namespace ns {\n    NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE(person, name, address, age)\n}\n</code></pre> <p>If you want to inherit the <code>person</code> struct and add a field to it, it can be done with:</p> <pre><code>namespace ns {\n    struct person_derived : person {\n        std:string email;\n    };\n\n    NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE(person_derived, person, email)\n}\n</code></pre> <p>Here is another example with private members, where <code>NLOHMANN_DEFINE_TYPE_INTRUSIVE</code> is needed:</p> <pre><code>namespace ns {\n    class address {\n      private:\n        std::string street;\n        int housenumber;\n        int postcode;\n\n      public:\n        NLOHMANN_DEFINE_TYPE_INTRUSIVE(address, street, housenumber, postcode)\n    };\n}\n</code></pre> <p>Or in case if you use some naming convention that you do not want to expose to JSON:</p> <pre><code>namespace ns {\n    class address {\n      private:\n        std::string m_street;\n        int m_housenumber;\n        int m_postcode;\n\n      public:\n        NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_NAMES(address, \"street\", m_street,\n                                                           \"housenumber\", m_housenumber,\n                                                           \"postcode\", m_postcode)\n    };\n}\n</code></pre>"},{"location":"features/arbitrary_types/#how-do-i-convert-third-party-types","title":"How do I convert third-party types?","text":"<p>This requires a bit more advanced technique. But first, let us see how this conversion mechanism works:</p> <p>The library uses JSON Serializers to convert types to JSON. The default serializer for <code>nlohmann::json</code> is <code>nlohmann::adl_serializer</code> (ADL means Argument-Dependent Lookup).</p> <p>It is implemented like this (simplified):</p> <pre><code>template &lt;typename T&gt;\nstruct adl_serializer {\n    static void to_json(json&amp; j, const T&amp; value) {\n        // calls the \"to_json\" method in T's namespace\n    }\n\n    static void from_json(const json&amp; j, T&amp; value) {\n        // same thing, but with the \"from_json\" method\n    }\n};\n</code></pre> <p>This serializer works fine when you have control over the type's namespace. However, what about <code>boost::optional</code> or <code>std::filesystem::path</code> (C++17)? Hijacking the <code>boost</code> namespace is pretty bad, and it's illegal to add something other than template specializations to <code>std</code>...</p> <p>To solve this, you need to add a specialization of <code>adl_serializer</code> to the <code>nlohmann</code> namespace, here's an example:</p> <pre><code>// partial specialization (full specialization works too)\nNLOHMANN_JSON_NAMESPACE_BEGIN\ntemplate &lt;typename T&gt;\nstruct adl_serializer&lt;boost::optional&lt;T&gt;&gt; {\n    static void to_json(json&amp; j, const boost::optional&lt;T&gt;&amp; opt) {\n        if (opt == boost::none) {\n            j = nullptr;\n        } else {\n            j = *opt; // this will call adl_serializer&lt;T&gt;::to_json which will\n                      // find the free function to_json in T's namespace!\n        }\n    }\n\n    static void from_json(const json&amp; j, boost::optional&lt;T&gt;&amp; opt) {\n        if (j.is_null()) {\n            opt = boost::none;\n        } else {\n            opt = j.get&lt;T&gt;(); // same as above, but with\n                              // adl_serializer&lt;T&gt;::from_json\n        }\n    }\n};\nNLOHMANN_JSON_NAMESPACE_END\n</code></pre> <p>ABI compatibility</p> <p>Use <code>NLOHMANN_JSON_NAMESPACE_BEGIN</code> and <code>NLOHMANN_JSON_NAMESPACE_END</code> instead of <code>namespace nlohmann { }</code> in code which may be linked with different versions of this library.</p>"},{"location":"features/arbitrary_types/#how-can-i-use-get-for-non-default-constructiblenon-copyable-types","title":"How can I use <code>get()</code> for non-default constructible/non-copyable types?","text":"<p>There is a way if your type is MoveConstructible. You will need to specialize the <code>adl_serializer</code> as well, but with a special <code>from_json</code> overload:</p> <pre><code>struct move_only_type {\n    move_only_type() = delete;\n    move_only_type(int ii): i(ii) {}\n    move_only_type(const move_only_type&amp;) = delete;\n    move_only_type(move_only_type&amp;&amp;) = default;\n\n    int i;\n};\n\nnamespace nlohmann {\n    template &lt;&gt;\n    struct adl_serializer&lt;move_only_type&gt; {\n        // note: the return type is no longer 'void', and the method only takes\n        // one argument\n        static move_only_type from_json(const json&amp; j) {\n            return {j.get&lt;int&gt;()};\n        }\n\n        // Here's the catch! You must provide a to_json method! Otherwise, you\n        // will not be able to convert move_only_type to json, since you fully\n        // specialized adl_serializer on that type\n        static void to_json(json&amp; j, move_only_type t) {\n            j = t.i;\n        }\n    };\n}\n</code></pre>"},{"location":"features/arbitrary_types/#can-i-write-my-own-serializer-advanced-use","title":"Can I write my own serializer? (Advanced use)","text":"<p>Yes. You might want to take a look at <code>unit-udt.cpp</code> in the test suite, to see a few examples.</p> <p>If you write your own serializer, you will need to do a few things:</p> <ul> <li>use a different <code>basic_json</code> alias than <code>nlohmann::json</code> (the last template parameter of <code>basic_json</code> is the <code>JSONSerializer</code>)</li> <li>use your <code>basic_json</code> alias (or a template parameter) in all your <code>to_json</code>/<code>from_json</code> methods</li> <li>use <code>nlohmann::to_json</code> and <code>nlohmann::from_json</code> when you need ADL</li> </ul> <p>Here is an example, without simplifications, that only accepts types with a size &lt;= 32, and uses ADL.</p> <pre><code>// You should use void as a second template argument\n// if you don't need compile-time checks on T\ntemplate&lt;typename T, typename SFINAE = typename std::enable_if&lt;sizeof(T) &lt;= 32&gt;::type&gt;\nstruct less_than_32_serializer {\n    template &lt;typename BasicJsonType&gt;\n    static void to_json(BasicJsonType&amp; j, T value) {\n        // we want to use ADL, and call the correct to_json overload\n        using nlohmann::to_json; // this method is called by adl_serializer,\n                                 // this is where the magic happens\n        to_json(j, value);\n    }\n\n    template &lt;typename BasicJsonType&gt;\n    static void from_json(const BasicJsonType&amp; j, T&amp; value) {\n        // same thing here\n        using nlohmann::from_json;\n        from_json(j, value);\n    }\n};\n</code></pre> <p>Be very careful when reimplementing your serializer, you can stack overflow if you don't pay attention:</p> <pre><code>template &lt;typename T, void&gt;\nstruct bad_serializer\n{\n    template &lt;typename BasicJsonType&gt;\n    static void to_json(BasicJsonType&amp; j, const T&amp; value) {\n      // this calls BasicJsonType::json_serializer&lt;T&gt;::to_json(j, value);\n      // if BasicJsonType::json_serializer == bad_serializer ... oops!\n      j = value;\n    }\n\n    template &lt;typename BasicJsonType&gt;\n    static void from_json(const BasicJsonType&amp; j, T&amp; value) {\n      // this calls BasicJsonType::json_serializer&lt;T&gt;::from_json(j, value);\n      // if BasicJsonType::json_serializer == bad_serializer ... oops!\n      value = j.template get&lt;T&gt;(); // oops!\n    }\n};\n</code></pre>"},{"location":"features/assertions/","title":"Runtime Assertions","text":"<p>The code contains numerous debug assertions to ensure class invariants are valid or to detect undefined behavior. Whereas the former class invariants are nothing to be concerned with, the latter checks for undefined behavior are to detect bugs in client code.</p>"},{"location":"features/assertions/#switch-off-runtime-assertions","title":"Switch off runtime assertions","text":"<p>Runtime assertions can be switched off by defining the preprocessor macro <code>NDEBUG</code> (see the documentation of assert) which is the default for release builds.</p>"},{"location":"features/assertions/#change-assertion-behavior","title":"Change assertion behavior","text":"<p>The behavior of runtime assertions can be changes by defining macro <code>JSON_ASSERT(x)</code> before including the <code>json.hpp</code> header.</p>"},{"location":"features/assertions/#function-with-runtime-assertions","title":"Function with runtime assertions","text":""},{"location":"features/assertions/#unchecked-object-access-to-a-const-value","title":"Unchecked object access to a const value","text":"<p>Function <code>operator[]</code> implements unchecked access for objects. Whereas a missing key is added in the case of non-const objects, accessing a const object with a missing key is undefined behavior (think of a dereferenced null pointer) and yields a runtime assertion.</p> <p>If you are not sure whether an element in an object exists, use checked access with the <code>at</code> function or call the <code>contains</code> function before.</p> <p>See also the documentation on element access.</p> Example 1: Missing object key <p>The following code will trigger an assertion at runtime:</p> <pre><code>#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    const json j = {{\"key\", \"value\"}};\n    auto v = j[\"missing\"];\n}\n</code></pre> <p>Output:</p> <pre><code>Assertion failed: (m_value.object-&gt;find(key) != m_value.object-&gt;end()), function operator[], file json.hpp, line 2144.\n</code></pre>"},{"location":"features/assertions/#constructing-from-an-uninitialized-iterator-range","title":"Constructing from an uninitialized iterator range","text":"<p>Constructing a JSON value from an iterator range (see constructor) with an uninitialized iterator is undefined behavior and yields a runtime assertion.</p> Example 2: Uninitialized iterator range <p>The following code will trigger an assertion at runtime:</p> <pre><code>#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    json::iterator it1, it2;\n    json j(it1, it2);\n}\n</code></pre> <p>Output:</p> <pre><code>Assertion failed: (m_object != nullptr), function operator++, file iter_impl.hpp, line 368.\n</code></pre>"},{"location":"features/assertions/#operations-on-uninitialized-iterators","title":"Operations on uninitialized iterators","text":"<p>Any operation on uninitialized iterators (i.e., iterators that are not associated with any JSON value) is undefined behavior and yields a runtime assertion.</p> Example 3: Uninitialized iterator <p>The following code will trigger an assertion at runtime:</p> <pre><code>#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n  json::iterator it;\n  ++it;\n}\n</code></pre> <p>Output:</p> <pre><code>Assertion failed: (m_object != nullptr), function operator++, file iter_impl.hpp, line 368.\n</code></pre>"},{"location":"features/assertions/#changes","title":"Changes","text":""},{"location":"features/assertions/#reading-from-a-null-file-or-char-pointer","title":"Reading from a null <code>FILE</code> or <code>char</code> pointer","text":"<p>Reading from a null <code>FILE</code> or <code>char</code> pointer in C++ is undefined behavior.  Until version 3.12.0, this library asserted that the pointer was not <code>nullptr</code> using a runtime assertion. If assertions were disabled, this would result in undefined behavior. Since version 3.12.0, this library checks for <code>nullptr</code> and throws a <code>parse_error.101</code> to prevent the undefined behavior.</p> Example 4: Reading from null pointer <p>The following code will trigger an assertion at runtime:</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    std::FILE* f = std::fopen(\"nonexistent_file.json\", \"r\");\n    try {\n        json j = json::parse(f);\n    } catch (std::exception&amp; e) {\n        std::cerr &lt;&lt; e.what() &lt;&lt; std::endl;\n    }\n}\n</code></pre> <p>Output:</p> <pre><code>[json.exception.parse_error.101] parse error: attempting to parse an empty input; check that your input string or stream contains the expected JSON\n</code></pre>"},{"location":"features/assertions/#see-also","title":"See also","text":"<ul> <li>JSON_ASSERT - control behavior of runtime assertions</li> </ul>"},{"location":"features/binary_values/","title":"Binary Values","text":"<p>The library implements several binary formats that encode JSON in an efficient way. Most of these formats support binary values; that is, values that have semantics defined outside the library and only define a sequence of bytes to be stored.</p> <p>JSON itself does not have a binary value. As such, binary values are an extension that this library implements to store values received by a binary format. Binary values are never created by the JSON parser and are only part of a serialized JSON text if they have been created manually or via a binary format.</p>"},{"location":"features/binary_values/#api-for-binary-values","title":"API for binary values","text":"<pre><code>classDiagram\n\nclass binary_t [\"json::binary_t\"] {\n    +void set_subtype(std::uint64_t subtype)\n    +void clear_subtype()\n    +std::uint64_t subtype() const\n    +bool has_subtype() const\n}\n\nclass vector [\"std::vector&lt;uint8_t&gt;\"]\n\nvector &lt;|-- binary_t</code></pre> <p>By default, binary values are stored as <code>std::vector&lt;std::uint8_t&gt;</code>. This type can be changed by providing a template parameter to the <code>basic_json</code> type. To store binary subtypes, the storage type is extended and exposed as <code>json::binary_t</code>:</p> <pre><code>auto binary = json::binary_t({0xCA, 0xFE, 0xBA, 0xBE});\nauto binary_with_subtype = json::binary_t({0xCA, 0xFE, 0xBA, 0xBE}, 42);\n</code></pre> <p>There are several convenience functions to check and set the subtype:</p> <pre><code>binary.has_subtype();                   // returns false\nbinary_with_subtype.has_subtype();      // returns true\n\nbinary_with_subtype.clear_subtype();\nbinary_with_subtype.has_subtype();      // returns true\n\nbinary_with_subtype.set_subtype(42);\nbinary.set_subtype(23);\n\nbinary.subtype();                       // returns 23\n</code></pre> <p>As <code>json::binary_t</code> is subclassing <code>std::vector&lt;std::uint8_t&gt;</code>, all member functions are available:</p> <pre><code>binary.size();  // returns 4\nbinary[1];      // returns 0xFE\n</code></pre> <p>JSON values can be constructed from <code>json::binary_t</code>:</p> <pre><code>json j = binary;\n</code></pre> <p>Binary values are primitive values just like numbers or strings:</p> <pre><code>j.is_binary();    // returns true\nj.is_primitive(); // returns true\n</code></pre> <p>Given a binary JSON value, the <code>binary_t</code> can be accessed by reference as via <code>get_binary()</code>:</p> <pre><code>j.get_binary().has_subtype();  // returns true\nj.get_binary().size();         // returns 4\n</code></pre> <p>For convenience, binary JSON values can be constructed via <code>json::binary</code>:</p> <pre><code>auto j2 = json::binary({0xCA, 0xFE, 0xBA, 0xBE}, 23);\nauto j3 = json::binary({0xCA, 0xFE, 0xBA, 0xBE});\n\nj2 == j;                        // returns true\nj3.get_binary().has_subtype();  // returns false\nj3.get_binary().subtype();      // returns std::uint64_t(-1) as j3 has no subtype\n</code></pre>"},{"location":"features/binary_values/#serialization","title":"Serialization","text":"<p>Binary values are serialized differently according to the formats.</p>"},{"location":"features/binary_values/#json","title":"JSON","text":"<p>JSON does not have a binary type, and this library does not introduce a new type as this would break conformance. Instead, binary values are serialized as an object with two keys: <code>bytes</code> holds an array of integers, and <code>subtype</code> is an integer or <code>null</code>.</p> Example <p>Code:</p> <pre><code>// create a binary value of subtype 42\njson j;\nj[\"binary\"] = json::binary({0xCA, 0xFE, 0xBA, 0xBE}, 42);\n\n// serialize to standard output\nstd::cout &lt;&lt; j.dump(2) &lt;&lt; std::endl;\n</code></pre> <p>Output:</p> <pre><code>{\n  \"binary\": {\n    \"bytes\": [202, 254, 186, 190],\n    \"subtype\": 42\n  }\n}\n</code></pre> <p>No roundtrip for binary values</p> <p>The JSON parser will not parse the objects generated by binary values back to binary values. This is by design to remain standards compliant. Serializing binary values to JSON is only implemented for debugging purposes.</p>"},{"location":"features/binary_values/#bjdata","title":"BJData","text":"<p>BJData neither supports binary values nor subtypes and proposes to serialize binary values as an array of uint8 values. The library implements this translation.</p> Example <p>Code:</p> <pre><code>// create a binary value of subtype 42 (will be ignored in BJData)\njson j;\nj[\"binary\"] = json::binary({0xCA, 0xFE, 0xBA, 0xBE}, 42);\n\n// convert to BJData\nauto v = json::to_bjdata(j);      \n</code></pre> <p><code>v</code> is a <code>std::vector&lt;std::uint8t&gt;</code> with the following 20 elements:</p> <pre><code>0x7B                                             // '{'\n    0x69 0x06                                    // i 6 (length of the key)\n    0x62 0x69 0x6E 0x61 0x72 0x79                // \"binary\"\n    0x5B                                         // '['\n        0x55 0xCA 0x55 0xFE 0x55 0xBA 0x55 0xBE  // content (each byte prefixed with 'U')\n    0x5D                                         // ']'\n0x7D                                             // '}'\n</code></pre> <p>The following code uses the type and size optimization for UBJSON:</p> <pre><code>// convert to UBJSON using the size and type optimization\nauto v = json::to_bjdata(j, true, true);\n</code></pre> <p>The resulting vector has 22 elements; the optimization is not effective for examples with few values:</p> <pre><code>0x7B                                // '{'\n    0x23 0x69 0x01                  // '#' 'i' type of the array elements: unsigned integers\n    0x69 0x06                       // i 6 (length of the key)\n    0x62 0x69 0x6E 0x61 0x72 0x79   // \"binary\"\n    0x5B                            // '[' array\n        0x24 0x55                   // '$' 'U' type of the array elements: unsigned integers\n        0x23 0x69 0x04              // '#' i 4 number of array elements\n        0xCA 0xFE 0xBA 0xBE         // content\n</code></pre> <p>Note that subtype (42) is not serialized and that UBJSON has no binary type, and deserializing <code>v</code> would yield the following value:</p> <pre><code>{\n  \"binary\": [202, 254, 186, 190]\n}\n</code></pre>"},{"location":"features/binary_values/#bson","title":"BSON","text":"<p>BSON supports binary values and subtypes. If a subtype is given, it is used and added as an unsigned 8-bit integer. If no subtype is given, the generic binary subtype 0x00 is used.</p> Example <p>Code:</p> <pre><code>// create a binary value of subtype 42\njson j;\nj[\"binary\"] = json::binary({0xCA, 0xFE, 0xBA, 0xBE}, 42);\n\n// convert to BSON\nauto v = json::to_bson(j);      \n</code></pre> <p><code>v</code> is a <code>std::vector&lt;std::uint8t&gt;</code> with the following 22 elements:</p> <pre><code>0x16 0x00 0x00 0x00                         // number of bytes in the document\n    0x05                                    // binary value\n        0x62 0x69 0x6E 0x61 0x72 0x79 0x00  // key \"binary\" + null byte\n        0x04 0x00 0x00 0x00                 // number of bytes\n        0x2a                                // subtype\n        0xCA 0xFE 0xBA 0xBE                 // content\n0x00                                        // end of the document\n</code></pre> <p>Note that the serialization preserves the subtype, and deserializing <code>v</code> would yield the following value:</p> <pre><code>{\n  \"binary\": {\n    \"bytes\": [202, 254, 186, 190],\n    \"subtype\": 42\n  }\n}\n</code></pre>"},{"location":"features/binary_values/#cbor","title":"CBOR","text":"<p>CBOR supports binary values, but no subtypes. Subtypes will be serialized as tags. Any binary value will be serialized as byte strings. The library will choose the smallest representation using the length of the byte array.</p> Example <p>Code:</p> <pre><code>// create a binary value of subtype 42\njson j;\nj[\"binary\"] = json::binary({0xCA, 0xFE, 0xBA, 0xBE}, 42);\n\n// convert to CBOR\nauto v = json::to_cbor(j);      \n</code></pre> <p><code>v</code> is a <code>std::vector&lt;std::uint8t&gt;</code> with the following 15 elements:</p> <pre><code>0xA1                                   // map(1)\n    0x66                               // text(6)\n        0x62 0x69 0x6E 0x61 0x72 0x79  // \"binary\"\n    0xD8 0x2A                          // tag(42)\n    0x44                               // bytes(4)\n        0xCA 0xFE 0xBA 0xBE            // content\n</code></pre> <p>Note that the subtype is serialized as tag. However, parsing tagged values yield a parse error unless <code>json::cbor_tag_handler_t::ignore</code> or <code>json::cbor_tag_handler_t::store</code> is passed to <code>json::from_cbor</code>.</p> <pre><code>{\n  \"binary\": {\n    \"bytes\": [202, 254, 186, 190],\n    \"subtype\": null\n  }\n}\n</code></pre>"},{"location":"features/binary_values/#messagepack","title":"MessagePack","text":"<p>MessagePack supports binary values and subtypes. If a subtype is given, the ext family is used. The library will choose the smallest representation among fixext1, fixext2, fixext4, fixext8, ext8, ext16, and ext32. The subtype is then added as a signed 8-bit integer.</p> <p>If no subtype is given, the bin family (bin8, bin16, bin32) is used.</p> Example <p>Code:</p> <pre><code>// create a binary value of subtype 42\njson j;\nj[\"binary\"] = json::binary({0xCA, 0xFE, 0xBA, 0xBE}, 42);\n\n// convert to MessagePack\nauto v = json::to_msgpack(j);      \n</code></pre> <p><code>v</code> is a <code>std::vector&lt;std::uint8t&gt;</code> with the following 14 elements:</p> <pre><code>0x81                                   // fixmap1\n    0xA6                               // fixstr6\n        0x62 0x69 0x6E 0x61 0x72 0x79  // \"binary\"\n    0xD6                               // fixext4\n        0x2A                           // subtype\n        0xCA 0xFE 0xBA 0xBE            // content\n</code></pre> <p>Note that the serialization preserves the subtype, and deserializing <code>v</code> would yield the following value:</p> <pre><code>{\n  \"binary\": {\n    \"bytes\": [202, 254, 186, 190],\n    \"subtype\": 42\n  }\n}\n</code></pre>"},{"location":"features/binary_values/#ubjson","title":"UBJSON","text":"<p>UBJSON neither supports binary values nor subtypes and proposes to serialize binary values as an array of uint8 values. The library implements this translation.</p> Example <p>Code:</p> <pre><code>// create a binary value of subtype 42 (will be ignored in UBJSON)\njson j;\nj[\"binary\"] = json::binary({0xCA, 0xFE, 0xBA, 0xBE}, 42);\n\n// convert to UBJSON\nauto v = json::to_ubjson(j);      \n</code></pre> <p><code>v</code> is a <code>std::vector&lt;std::uint8t&gt;</code> with the following 20 elements:</p> <pre><code>0x7B                                             // '{'\n    0x69 0x06                                    // i 6 (length of the key)\n    0x62 0x69 0x6E 0x61 0x72 0x79                // \"binary\"\n    0x5B                                         // '['\n        0x55 0xCA 0x55 0xFE 0x55 0xBA 0x55 0xBE  // content (each byte prefixed with 'U')\n    0x5D                                         // ']'\n0x7D                                             // '}'\n</code></pre> <p>The following code uses the type and size optimization for UBJSON:</p> <pre><code>// convert to UBJSON using the size and type optimization\nauto v = json::to_ubjson(j, true, true);\n</code></pre> <p>The resulting vector has 23 elements; the optimization is not effective for examples with few values:</p> <pre><code>0x7B                                // '{'\n    0x24                            // '$' type of the object elements\n    0x5B                            // '[' array\n    0x23 0x69 0x01                  // '#' i 1 number of object elements\n    0x69 0x06                       // i 6 (length of the key)\n    0x62 0x69 0x6E 0x61 0x72 0x79   // \"binary\"\n        0x24 0x55                   // '$' 'U' type of the array elements: unsigned integers\n        0x23 0x69 0x04              // '#' i 4 number of array elements\n        0xCA 0xFE 0xBA 0xBE         // content\n</code></pre> <p>Note that subtype (42) is not serialized and that UBJSON has no binary type, and deserializing <code>v</code> would yield the following value:</p> <pre><code>{\n  \"binary\": [202, 254, 186, 190]\n}\n</code></pre>"},{"location":"features/comments/","title":"Comments","text":"<p>This library does not support comments by default. It does so for three reasons:</p> <ol> <li>Comments are not part of the JSON specification. You may argue that <code>//</code> or <code>/* */</code> are allowed in JavaScript, but JSON is not JavaScript.</li> <li> <p>This was not an oversight: Douglas Crockford wrote on this in May 2012:</p> <p>I removed comments from JSON because I saw people were using them to hold parsing directives, a practice which would have destroyed interoperability.  I know that the lack of comments makes some people sad, but it shouldn't. </p> <p>Suppose you are using JSON to keep configuration files, which you would like to annotate. Go ahead and insert all the comments you like. Then pipe it through JSMin before handing it to your JSON parser.</p> </li> <li> <p>It is dangerous for interoperability if some libraries add comment support while others do not. Please check The Harmful Consequences of the Robustness Principle on this.</p> </li> </ol> <p>However, you can set parameter <code>ignore_comments</code> to <code>true</code> in the <code>parse</code> function to ignore <code>//</code> or <code>/* */</code> comments. Comments will then be treated as whitespace.</p> <p>For more information, see JSON With Commas and Comments (JWCC).</p> <p>Example</p> <p>Consider the following JSON with comments.</p> <pre><code>{\n    // update in 2006: removed Pluto\n    \"planets\": [\"Mercury\", \"Venus\", \"Earth\", \"Mars\",\n                \"Jupiter\", \"Uranus\", \"Neptune\" /*, \"Pluto\" */]\n}\n</code></pre> <p>When calling <code>parse</code> without additional argument, a parse error exception is thrown. If <code>ignore_comments</code> is set to <code>true</code>, the comments are ignored during parsing:</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    std::string s = R\"(\n    {\n        // update in 2006: removed Pluto\n        \"planets\": [\"Mercury\", \"Venus\", \"Earth\", \"Mars\",\n                    \"Jupiter\", \"Uranus\", \"Neptune\" /*, \"Pluto\" */]\n    }\n    )\";\n\n    try\n    {\n        json j = json::parse(s);\n    }\n    catch (json::exception&amp; e)\n    {\n        std::cout &lt;&lt; e.what() &lt;&lt; std::endl;\n    }\n\n    json j = json::parse(s,\n                         /* callback */ nullptr,\n                         /* allow exceptions */ true,\n                         /* ignore_comments */ true);\n    std::cout &lt;&lt; j.dump(2) &lt;&lt; '\\n';\n}\n</code></pre> <p>Output:</p> <pre><code>[json.exception.parse_error.101] parse error at line 3, column 9: syntax error while parsing object key - invalid literal; last read: '&lt;U+000A&gt;    {&lt;U+000A&gt;        /'; expected string literal\n{\n  \"planets\": [\n    \"Mercury\",\n    \"Venus\",\n    \"Earth\",\n    \"Mars\",\n    \"Jupiter\",\n    \"Uranus\",\n    \"Neptune\"\n  ]\n}\n</code></pre>"},{"location":"features/enum_conversion/","title":"Specializing enum conversion","text":"<p>By default, enum values are serialized to JSON as integers. In some cases, this could result in undesired behavior. If the integer values of any enum values are changed after data using those enum values has been serialized to JSON, then deserializing that JSON would result in a different enum value being restored, or the value not being found at all.</p> <p>It is possible to more precisely specify how a given enum is mapped to and from JSON as shown below:</p> <pre><code>// example enum type declaration\nenum TaskState {\n    TS_STOPPED,\n    TS_RUNNING,\n    TS_COMPLETED,\n    TS_INVALID=-1,\n};\n\n// map TaskState values to JSON as strings\nNLOHMANN_JSON_SERIALIZE_ENUM( TaskState, {\n    {TS_INVALID, nullptr},\n    {TS_STOPPED, \"stopped\"},\n    {TS_RUNNING, \"running\"},\n    {TS_COMPLETED, \"completed\"},\n})\n</code></pre> <p>The <code>NLOHMANN_JSON_SERIALIZE_ENUM()</code> macro declares a set of <code>to_json()</code> / <code>from_json()</code> functions for type <code>TaskState</code> while avoiding repetition and boilerplate serialization code.</p>"},{"location":"features/enum_conversion/#usage","title":"Usage","text":"<pre><code>// enum to JSON as string\njson j = TS_STOPPED;\nassert(j == \"stopped\");\n\n// json string to enum\njson j3 = \"running\";\nassert(j3.get&lt;TaskState&gt;() == TS_RUNNING);\n\n// undefined json value to enum (where the first map entry above is the default)\njson jPi = 3.14;\nassert(jPi.get&lt;TaskState&gt;() == TS_INVALID );\n</code></pre>"},{"location":"features/enum_conversion/#notes","title":"Notes","text":"<p>Just as in Arbitrary Type Conversions above,</p> <ul> <li><code>NLOHMANN_JSON_SERIALIZE_ENUM()</code> MUST be declared in your enum type's   namespace (which can be the global namespace), or the library will not be able to locate it, and it will default to   integer serialization.</li> <li>It MUST be available (e.g., proper headers must be included) everywhere you use the conversions.</li> </ul> <p>Other Important points:</p> <ul> <li>When using <code>get&lt;ENUM_TYPE&gt;()</code>, undefined JSON values will default to the first pair specified in your map. Select this   default pair carefully. If you desire an exception in this circumstance use <code>NLOHMANN_JSON_SERIALIZE_ENUM_STRICT()</code>   which behaves identically except for throwing an exception on unrecognized values.</li> <li>If an enum or JSON value is specified more than once in your map, the first matching occurrence from the top of the   map will be returned when converting to or from JSON.</li> <li>To disable the default serialization of enumerators as integers and force a compiler error instead, see <code>JSON_DISABLE_ENUM_SERIALIZATION</code>.</li> </ul>"},{"location":"features/iterators/","title":"Iterators","text":""},{"location":"features/iterators/#overview","title":"Overview","text":"<p>A <code>basic_json</code> value is a container and allows access via iterators. Depending on the value type, <code>basic_json</code> stores zero or more values.</p> <p>As for other containers, <code>begin()</code> returns an iterator to the first value and <code>end()</code> returns an iterator to the value following the last value. The latter iterator is a placeholder and cannot be dereferenced. In case of null values, empty arrays, or empty objects, <code>begin()</code> will return <code>end()</code>.</p> <p></p>"},{"location":"features/iterators/#iteration-order-for-objects","title":"Iteration order for objects","text":"<p>When iterating over objects, values are ordered with respect to the <code>object_comparator_t</code> type which defaults to <code>std::less</code>. See the types documentation for more information.</p> Example <pre><code>// create JSON object {\"one\": 1, \"two\": 2, \"three\": 3}\njson j;\nj[\"one\"] = 1;\nj[\"two\"] = 2;\nj[\"three\"] = 3;\n\nfor (auto it = j.begin(); it != j.end(); ++it)\n{\n    std::cout &lt;&lt; *it &lt;&lt; std::endl;\n}\n</code></pre> <p>Output:</p> <pre><code>1\n3\n2\n</code></pre> <p>The reason for the order is the lexicographic ordering of the object keys \"one\", \"three\", \"two\".</p>"},{"location":"features/iterators/#access-object-keys-during-iteration","title":"Access object keys during iteration","text":"<p>The JSON iterators have two member functions, <code>key()</code> and <code>value()</code> to access the object key and stored value, respectively. When calling <code>key()</code> on a non-object iterator, an invalid_iterator.207 exception is thrown.</p> Example <pre><code>// create JSON object {\"one\": 1, \"two\": 2, \"three\": 3}\njson j;\nj[\"one\"] = 1;\nj[\"two\"] = 2;\nj[\"three\"] = 3;\n\nfor (auto it = j.begin(); it != j.end(); ++it)\n{\n    std::cout &lt;&lt; it.key() &lt;&lt; \" : \" &lt;&lt; it.value() &lt;&lt; std::endl;\n}\n</code></pre> <p>Output:</p> <pre><code>one : 1\nthree : 3\ntwo : 2\n</code></pre>"},{"location":"features/iterators/#range-based-for-loops","title":"Range-based for loops","text":"<p>C++11 allows using range-based for loops to iterate over a container.</p> <pre><code>for (auto it : j_object)\n{\n    // \"it\" is of type json::reference and has no key() member\n    std::cout &lt;&lt; \"value: \" &lt;&lt; it &lt;&lt; '\\n';\n}\n</code></pre> <p>For this reason, the <code>items()</code> function allows accessing <code>iterator::key()</code> and <code>iterator::value()</code> during range-based for loops. In these loops, a reference to the JSON values is returned, so there is no access to the underlying iterator.</p> <pre><code>for (auto&amp; el : j_object.items())\n{\n    std::cout &lt;&lt; \"key: \" &lt;&lt; el.key() &lt;&lt; \", value:\" &lt;&lt; el.value() &lt;&lt; '\\n';\n}\n</code></pre> <p>The items() function also allows using structured bindings (C++17):</p> <pre><code>for (auto&amp; [key, val] : j_object.items())\n{\n    std::cout &lt;&lt; \"key: \" &lt;&lt; key &lt;&lt; \", value:\" &lt;&lt; val &lt;&lt; '\\n';\n}\n</code></pre> <p>Note</p> <p>When iterating over an array, <code>key()</code> will return the index of the element as string. For primitive types (e.g., numbers), <code>key()</code> returns an empty string.</p> <p>Warning</p> <p>Using <code>items()</code> on temporary objects is dangerous. Make sure the object's lifetime exceeds the iteration. See #2040 for more information.</p>"},{"location":"features/iterators/#reverse-iteration-order","title":"Reverse iteration order","text":"<p><code>rbegin()</code> and <code>rend()</code> return iterators in the reverse sequence.</p> <p></p> Example <pre><code>json j = {1, 2, 3, 4};\n\nfor (auto it = j.rbegin(); it != j.rend(); ++it)\n{\n    std::cout &lt;&lt; *it &lt;&lt; std::endl;\n}\n</code></pre> <p>Output:</p> <pre><code>4\n3\n2\n1\n</code></pre>"},{"location":"features/iterators/#iterating-strings-and-binary-values","title":"Iterating strings and binary values","text":"<p>Note that \"value\" means a JSON value in this setting, not values stored in the underlying containers. That is, <code>*begin()</code> returns the complete string or binary array and is also safe the underlying string or binary array is empty.</p> Example <pre><code>json j = \"Hello, world\";\nfor (auto it = j.begin(); it != j.end(); ++it)\n{\n    std::cout &lt;&lt; *it &lt;&lt; std::endl;\n}\n</code></pre> <p>Output:</p> <pre><code>\"Hello, world\"\n</code></pre>"},{"location":"features/iterators/#iterator-invalidation","title":"Iterator invalidation","text":"Operations invalidated iterators <code>clear</code> all"},{"location":"features/json_patch/","title":"JSON Patch and Diff","text":""},{"location":"features/json_patch/#patches","title":"Patches","text":"<p>JSON Patch (RFC 6902) defines a JSON document structure for expressing a sequence of operations to apply to a JSON document. With the <code>patch</code> function, a JSON Patch is applied to the current JSON value by executing all operations from the patch.</p> Example <p>The following code shows how a JSON patch is applied to a value.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;iomanip&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\nusing namespace nlohmann::literals;\n\nint main()\n{\n    // the original document\n    json doc = R\"(\n        {\n          \"baz\": \"qux\",\n          \"foo\": \"bar\"\n        }\n    )\"_json;\n\n    // the patch\n    json patch = R\"(\n        [\n          { \"op\": \"replace\", \"path\": \"/baz\", \"value\": \"boo\" },\n          { \"op\": \"add\", \"path\": \"/hello\", \"value\": [\"world\"] },\n          { \"op\": \"remove\", \"path\": \"/foo\"}\n        ]\n    )\"_json;\n\n    // apply the patch\n    json patched_doc = doc.patch(patch);\n\n    // output original and patched document\n    std::cout &lt;&lt; std::setw(4) &lt;&lt; doc &lt;&lt; \"\\n\\n\"\n              &lt;&lt; std::setw(4) &lt;&lt; patched_doc &lt;&lt; std::endl;\n}\n</code></pre> <p>Output:</p> <pre><code>{\n    \"baz\": \"qux\",\n    \"foo\": \"bar\"\n}\n\n{\n    \"baz\": \"boo\",\n    \"hello\": [\n        \"world\"\n    ]\n}\n</code></pre>"},{"location":"features/json_patch/#diff","title":"Diff","text":"<p>The library can also calculate a JSON patch (i.e., a diff) given two JSON values.</p> <p>Invariant</p> <p>For two JSON values source and target, the following code yields always true:</p> <pre><code>source.patch(diff(source, target)) == target;\n</code></pre> Example <p>The following code shows how a JSON patch is created as a diff for two JSON values.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;iomanip&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\nusing namespace nlohmann::literals;\n\nint main()\n{\n    // the source document\n    json source = R\"(\n        {\n            \"baz\": \"qux\",\n            \"foo\": \"bar\"\n        }\n    )\"_json;\n\n    // the target document\n    json target = R\"(\n        {\n            \"baz\": \"boo\",\n            \"hello\": [\n                \"world\"\n            ]\n        }\n    )\"_json;\n\n    // create the patch\n    json patch = json::diff(source, target);\n\n    // roundtrip\n    json patched_source = source.patch(patch);\n\n    // output patch and roundtrip result\n    std::cout &lt;&lt; std::setw(4) &lt;&lt; patch &lt;&lt; \"\\n\\n\"\n              &lt;&lt; std::setw(4) &lt;&lt; patched_source &lt;&lt; std::endl;\n}\n</code></pre> <p>Output:</p> <pre><code>[\n    {\n        \"op\": \"replace\",\n        \"path\": \"/baz\",\n        \"value\": \"boo\"\n    },\n    {\n        \"op\": \"remove\",\n        \"path\": \"/foo\"\n    },\n    {\n        \"op\": \"add\",\n        \"path\": \"/hello\",\n        \"value\": [\n            \"world\"\n        ]\n    }\n]\n\n{\n    \"baz\": \"boo\",\n    \"hello\": [\n        \"world\"\n    ]\n}\n</code></pre>"},{"location":"features/json_pointer/","title":"JSON Pointer","text":""},{"location":"features/json_pointer/#introduction","title":"Introduction","text":"<p>The library supports JSON Pointer (RFC 6901) as an alternative means to address structured values. A JSON Pointer is a string that identifies a specific value within a JSON document.</p> <p>Consider the following JSON document</p> <pre><code>{\n    \"array\": [\"A\", \"B\", \"C\"],\n    \"nested\": {\n        \"one\": 1,\n        \"two\": 2,\n        \"three\": [true, false]\n    }\n}\n</code></pre> <p>Then every value inside the JSON document can be identified as follows:</p> JSON Pointer JSON value `` <code>{\"array\":[\"A\",\"B\",\"C\"],\"nested\":{\"one\":1,\"two\":2,\"three\":[true,false]}}</code> <code>/array</code> <code>[\"A\",\"B\",\"C\"]</code> <code>/array/0</code> <code>A</code> <code>/array/1</code> <code>B</code> <code>/array/2</code> <code>C</code> <code>/nested</code> <code>{\"one\":1,\"two\":2,\"three\":[true,false]}</code> <code>/nested/one</code> <code>1</code> <code>/nested/two</code> <code>2</code> <code>/nested/three</code> <code>[true,false]</code> <code>/nested/three/0</code> <code>true</code> <code>/nested/three/1</code> <code>false</code> <p>Note <code>/</code> does not identify the root (i.e., the whole document), but an object entry with empty key <code>\"\"</code>. See RFC 6901 for more information.</p>"},{"location":"features/json_pointer/#json-pointer-creation","title":"JSON Pointer creation","text":"<p>JSON Pointers can be created from a string:</p> <pre><code>json::json_pointer p(\"/nested/one\");\n</code></pre> <p>Furthermore, a user-defined string literal can be used to achieve the same result:</p> <pre><code>auto p = \"/nested/one\"_json_pointer;\n</code></pre> <p>The escaping rules of RFC 6901 are implemented. See the constructor documentation for more information.</p>"},{"location":"features/json_pointer/#value-access","title":"Value access","text":"<p>JSON Pointers can be used in the <code>at</code>, <code>operator[]</code>, and <code>value</code> functions just like object keys or array indices.</p> <pre><code>// the JSON value from above\nauto j = json::parse(R\"({\n    \"array\": [\"A\", \"B\", \"C\"],\n    \"nested\": {\n        \"one\": 1,\n        \"two\": 2,\n        \"three\": [true, false]\n    }\n})\");\n\n// access values\nauto val = j[\"\"_json_pointer];                              // {\"array\":[\"A\",\"B\",\"C\"],...}\nauto val1 = j[\"/nested/one\"_json_pointer];                  // 1\nauto val2 = j.at(json::json_pointer(\"/nested/three/1\"));    // false\nauto val3 = j.value(json::json_pointer(\"/nested/four\"), 0); // 0\n</code></pre>"},{"location":"features/json_pointer/#flatten-unflatten","title":"Flatten / unflatten","text":"<p>The library implements a function <code>flatten</code> to convert any JSON document into a JSON object where each key is a JSON Pointer and each value is a primitive JSON value (i.e., a string, boolean, number, or null).</p> <pre><code>// the JSON value from above\nauto j = json::parse(R\"({\n    \"array\": [\"A\", \"B\", \"C\"],\n    \"nested\": {\n        \"one\": 1,\n        \"two\": 2,\n        \"three\": [true, false]\n    }\n})\");\n\n// create flattened value\nauto j_flat = j.flatten();\n</code></pre> <p>The resulting value <code>j_flat</code> is:</p> <pre><code>{\n  \"/array/0\": \"A\",\n  \"/array/1\": \"B\",\n  \"/array/2\": \"C\",\n  \"/nested/one\": 1,\n  \"/nested/two\": 2,\n  \"/nested/three/0\": true,\n  \"/nested/three/1\": false\n}\n</code></pre> <p>The reverse function, <code>unflatten</code> recreates the original value.</p> <pre><code>auto j_original = j_flat.unflatten();\n</code></pre>"},{"location":"features/json_pointer/#see-also","title":"See also","text":"<ul> <li>Class <code>json_pointer</code></li> <li>Function <code>flatten</code></li> <li>Function <code>unflatten</code></li> <li>JSON Patch</li> </ul>"},{"location":"features/macros/","title":"Supported Macros","text":"<p>Some aspects of the library can be configured by defining preprocessor macros before including the <code>json.hpp</code> header. See also the API documentation for macros for examples and more information.</p>"},{"location":"features/macros/#json_assertx","title":"<code>JSON_ASSERT(x)</code>","text":"<p>This macro controls which code is executed for runtime assertions of the library.</p> <p>See full documentation of <code>JSON_ASSERT(x)</code>.</p>"},{"location":"features/macros/#json_brace_init_copy_semantics","title":"<code>JSON_BRACE_INIT_COPY_SEMANTICS</code>","text":"<p>When defined to <code>1</code>, single-element brace initialization of a <code>basic_json</code> value (e.g., <code>json j{value};</code>) is treated as a copy/move of the element rather than wrapping it in a single-element array. The default value is <code>0</code>, which preserves the existing behavior.</p> <p>See full documentation of <code>JSON_BRACE_INIT_COPY_SEMANTICS</code>.</p>"},{"location":"features/macros/#json_catch_userexception","title":"<code>JSON_CATCH_USER(exception)</code>","text":"<p>This macro overrides <code>catch</code> calls inside the library.</p> <p>See full documentation of <code>JSON_CATCH_USER(exception)</code>.</p>"},{"location":"features/macros/#json_diagnostics","title":"<code>JSON_DIAGNOSTICS</code>","text":"<p>This macro enables extended diagnostics for exception messages. Possible values are <code>1</code> to enable or <code>0</code> to disable (default).</p> <p>When enabled, exception messages contain a JSON Pointer to the JSON value that triggered the exception, see Extended diagnostic messages for an example. Note that enabling this macro increases the size of every JSON value by one pointer and adds some runtime overhead.</p> <p>The diagnostics messages can also be controlled with the CMake option <code>JSON_Diagnostics</code> (<code>OFF</code> by default) which sets <code>JSON_DIAGNOSTICS</code> accordingly.</p> <p>See full documentation of <code>JSON_DIAGNOSTICS</code>.</p>"},{"location":"features/macros/#json_diagnostic_positions","title":"<code>JSON_DIAGNOSTIC_POSITIONS</code>","text":"<p>When enabled, two new member functions <code>start_pos()</code> and <code>end_pos()</code> are added to <code>basic_json</code> values. If the value was created by calling the<code>parse</code> function, then these functions allow querying the byte positions of the value in the input it was parsed from. The byte positions are also used in exceptions to help locate errors.</p> <p>The diagnostics positions can also be controlled with the CMake option <code>JSON_Diagnostic_Positions</code> (<code>OFF</code> by default) which sets <code>JSON_DIAGNOSTIC_POSITIONS</code> accordingly.</p> <p>See full documentation of <code>JSON_DIAGNOSTIC_POSITIONS</code></p>"},{"location":"features/macros/#json_has_cpp_11-json_has_cpp_14-json_has_cpp_17-json_has_cpp_20-json_has_cpp_23-json_has_cpp_26","title":"<code>JSON_HAS_CPP_11</code>, <code>JSON_HAS_CPP_14</code>, <code>JSON_HAS_CPP_17</code>, <code>JSON_HAS_CPP_20</code>, <code>JSON_HAS_CPP_23</code>, <code>JSON_HAS_CPP_26</code>","text":"<p>The library targets C++11, but also supports some features introduced in later C++ versions (e.g., <code>std::string_view</code> support for C++17). For these new features, the library implements some preprocessor checks to determine the C++ standard. By defining any of these symbols, the internal check is overridden and the provided C++ version is unconditionally assumed. This can be helpful for compilers that only implement parts of the standard and would be detected incorrectly.</p> <p>See full documentation of <code>JSON_HAS_CPP_11</code>, <code>JSON_HAS_CPP_14</code>, <code>JSON_HAS_CPP_17</code>, <code>JSON_HAS_CPP_20</code>, <code>JSON_HAS_CPP_23</code>, and <code>JSON_HAS_CPP_26</code>.</p>"},{"location":"features/macros/#json_has_filesystem-json_has_experimental_filesystem","title":"<code>JSON_HAS_FILESYSTEM</code>, <code>JSON_HAS_EXPERIMENTAL_FILESYSTEM</code>","text":"<p>When compiling with C++17, the library provides conversions from and to <code>std::filesystem::path</code>. As compiler support for filesystem is limited, the library tries to detect whether <code>&lt;filesystem&gt;</code>/<code>std::filesystem</code> (<code>JSON_HAS_FILESYSTEM</code>) or <code>&lt;experimental/filesystem&gt;</code>/<code>std::experimental::filesystem</code> (<code>JSON_HAS_EXPERIMENTAL_FILESYSTEM</code>) should be used. To override the built-in check, define <code>JSON_HAS_FILESYSTEM</code> or <code>JSON_HAS_EXPERIMENTAL_FILESYSTEM</code> to <code>1</code>.</p> <p>See full documentation of <code>JSON_HAS_FILESYSTEM</code> and <code>JSON_HAS_EXPERIMENTAL_FILESYSTEM</code>.</p>"},{"location":"features/macros/#json_noexception","title":"<code>JSON_NOEXCEPTION</code>","text":"<p>Exceptions can be switched off by defining the symbol <code>JSON_NOEXCEPTION</code>.</p> <p>See full documentation of <code>JSON_NOEXCEPTION</code>.</p>"},{"location":"features/macros/#json_disable_enum_serialization","title":"<code>JSON_DISABLE_ENUM_SERIALIZATION</code>","text":"<p>When defined, default parse and serialize functions for enums are excluded and have to be provided by the user, for example, using <code>NLOHMANN_JSON_SERIALIZE_ENUM</code>.</p> <p>See full documentation of <code>JSON_DISABLE_ENUM_SERIALIZATION</code>.</p>"},{"location":"features/macros/#json_no_io","title":"<code>JSON_NO_IO</code>","text":"<p>When defined, headers <code>&lt;cstdio&gt;</code>, <code>&lt;ios&gt;</code>, <code>&lt;iosfwd&gt;</code>, <code>&lt;istream&gt;</code>, and <code>&lt;ostream&gt;</code> are not included and parse functions relying on these headers are excluded. This is relevant for environment where these I/O functions are disallowed for security reasons (e.g., Intel Software Guard Extensions (SGX)).</p> <p>See full documentation of <code>JSON_NO_IO</code>.</p>"},{"location":"features/macros/#json_skip_library_version_check","title":"<code>JSON_SKIP_LIBRARY_VERSION_CHECK</code>","text":"<p>When defined, the library will not create a compiler warning when a different version of the library was already included.</p> <p>See full documentation of <code>JSON_SKIP_LIBRARY_VERSION_CHECK</code>.</p>"},{"location":"features/macros/#json_skip_unsupported_compiler_check","title":"<code>JSON_SKIP_UNSUPPORTED_COMPILER_CHECK</code>","text":"<p>When defined, the library will not create a compile error when a known unsupported compiler is detected. This allows  using the library with compilers that do not fully support C++11 and may only work if unsupported features are not used.</p> <p>See full documentation of <code>JSON_SKIP_UNSUPPORTED_COMPILER_CHECK</code>.</p>"},{"location":"features/macros/#json_throw_userexception","title":"<code>JSON_THROW_USER(exception)</code>","text":"<p>This macro overrides <code>throw</code> calls inside the library. The argument is the exception to be thrown.</p> <p>See full documentation of <code>JSON_THROW_USER(exception)</code>.</p>"},{"location":"features/macros/#json_try_user","title":"<code>JSON_TRY_USER</code>","text":"<p>This macro overrides <code>try</code> calls inside the library.</p> <p>See full documentation of <code>JSON_TRY_USER</code>.</p>"},{"location":"features/macros/#json_use_implicit_conversions","title":"<code>JSON_USE_IMPLICIT_CONVERSIONS</code>","text":"<p>When defined to <code>0</code>, implicit conversions are switched off. By default, implicit conversions are switched on.</p> <p>See full documentation of <code>JSON_USE_IMPLICIT_CONVERSIONS</code>.</p>"},{"location":"features/macros/#json_use_global_udls","title":"<code>JSON_USE_GLOBAL_UDLS</code>","text":"<p>When defined to <code>1</code> (default), the user-defined string literals <code>operator\"\"_json</code> and <code>operator\"\"_json_pointer</code> are placed into the global namespace instead of <code>nlohmann::literals::json_literals</code>.</p> <p>See full documentation of <code>JSON_USE_GLOBAL_UDLS</code>.</p>"},{"location":"features/macros/#json_use_legacy_discarded_value_comparison","title":"<code>JSON_USE_LEGACY_DISCARDED_VALUE_COMPARISON</code>","text":"<p>When defined to <code>1</code>, the library restores the legacy behavior in which a discarded value compared equal to itself. This behavior is deprecated and switched off (<code>0</code>) by default.</p> <p>See full documentation of <code>JSON_USE_LEGACY_DISCARDED_VALUE_COMPARISON</code>.</p>"},{"location":"features/macros/#nlohmann_define_type_-nlohmann_define_derived_type_","title":"<code>NLOHMANN_DEFINE_TYPE_*(...)</code>, <code>NLOHMANN_DEFINE_DERIVED_TYPE_*(...)</code>","text":"<p>The library defines 12 macros to simplify the serialization/deserialization of types. See the page on arbitrary type conversion for a detailed discussion.</p>"},{"location":"features/macros/#nlohmann_json_namespace-nlohmann_json_namespace_begin-nlohmann_json_namespace_end-nlohmann_json_namespace_no_version","title":"<code>NLOHMANN_JSON_NAMESPACE</code>, <code>NLOHMANN_JSON_NAMESPACE_BEGIN</code>, <code>NLOHMANN_JSON_NAMESPACE_END</code>, <code>NLOHMANN_JSON_NAMESPACE_NO_VERSION</code>","text":"<p>These macros relate to the versioned, inline <code>nlohmann</code> namespace:</p> <ul> <li><code>NLOHMANN_JSON_NAMESPACE</code> evaluates to the full name of the <code>nlohmann</code> namespace (including the inline ABI namespace).</li> <li><code>NLOHMANN_JSON_NAMESPACE_BEGIN</code> / <code>NLOHMANN_JSON_NAMESPACE_END</code> open and close the namespace (for example, to add   specializations).</li> <li><code>NLOHMANN_JSON_NAMESPACE_NO_VERSION</code>, when defined to <code>1</code>, omits the version component from the inline namespace.</li> </ul> <p>See the <code>nlohmann</code> Namespace page, and the full documentation of <code>NLOHMANN_JSON_NAMESPACE</code>, <code>NLOHMANN_JSON_NAMESPACE_BEGIN</code> / <code>NLOHMANN_JSON_NAMESPACE_END</code>, and <code>NLOHMANN_JSON_NAMESPACE_NO_VERSION</code>.</p>"},{"location":"features/macros/#nlohmann_json_serialize_enumtype","title":"<code>NLOHMANN_JSON_SERIALIZE_ENUM(type, ...)</code>","text":"<p>This macro simplifies the serialization/deserialization of enum types. See Specializing enum conversion for more information.</p> <p>See full documentation of <code>NLOHMANN_JSON_SERIALIZE_ENUM</code>.</p> <p>A strict variant <code>NLOHMANN_JSON_SERIALIZE_ENUM_STRICT</code> throws an exception on undefined input instead of falling back to the first mapping.</p>"},{"location":"features/macros/#nlohmann_json_version_major-nlohmann_json_version_minor-nlohmann_json_version_patch","title":"<code>NLOHMANN_JSON_VERSION_MAJOR</code>, <code>NLOHMANN_JSON_VERSION_MINOR</code>, <code>NLOHMANN_JSON_VERSION_PATCH</code>","text":"<p>These macros are defined by the library and contain the version numbers according to Semantic Versioning 2.0.0.</p> <p>See full documentation of <code>NLOHMANN_JSON_VERSION_MAJOR</code>, <code>NLOHMANN_JSON_VERSION_MINOR</code>, and <code>NLOHMANN_JSON_VERSION_PATCH</code>.</p>"},{"location":"features/merge_patch/","title":"JSON Merge Patch","text":"<p>The library supports JSON Merge Patch (RFC 7386) as a patch format. The merge patch format is primarily intended for use with the HTTP PATCH method as a means of describing a set of modifications to a target resource's content. This function applies a merge patch to the current JSON value.</p> <p>Instead of using JSON Pointer to specify values to be manipulated, it describes the changes using a syntax that closely mimics the document being modified.</p> Example <p>The following code shows how a JSON Merge Patch is applied to a JSON document.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n#include &lt;iomanip&gt; // for std::setw\n\nusing json = nlohmann::json;\nusing namespace nlohmann::literals;\n\nint main()\n{\n    // the original document\n    json document = R\"({\n                \"title\": \"Goodbye!\",\n                \"author\": {\n                    \"givenName\": \"John\",\n                    \"familyName\": \"Doe\"\n                },\n                \"tags\": [\n                    \"example\",\n                    \"sample\"\n                ],\n                \"content\": \"This will be unchanged\"\n            })\"_json;\n\n    // the patch\n    json patch = R\"({\n                \"title\": \"Hello!\",\n                \"phoneNumber\": \"+01-123-456-7890\",\n                \"author\": {\n                    \"familyName\": null\n                },\n                \"tags\": [\n                    \"example\"\n                ]\n            })\"_json;\n\n    // apply the patch\n    document.merge_patch(patch);\n\n    // output original and patched document\n    std::cout &lt;&lt; std::setw(4) &lt;&lt; document &lt;&lt; std::endl;\n}\n</code></pre> <p>Output:</p> <pre><code>{\n    \"author\": {\n        \"givenName\": \"John\"\n    },\n    \"content\": \"This will be unchanged\",\n    \"phoneNumber\": \"+01-123-456-7890\",\n    \"tags\": [\n        \"example\"\n    ],\n    \"title\": \"Hello!\"\n}\n</code></pre>"},{"location":"features/modules/","title":"Modules","text":"<p>This library has experimental support for C++ modules, introduced in C++20. The library can be imported by writing <code>import nlohmann.json;</code> instead of <code>#include &lt;nlohmann/json.hpp&gt;</code>. </p> <p>Please be aware that the module is experimental and a full test is outstanding, and the exported symbols are subject to change.</p>"},{"location":"features/modules/#requirements","title":"Requirements","text":"<p>The <code>nlohmann.json</code> module requires that the build system is configured to build and resolve modules when imported. Obviously, as modules were introduced in C++20, this feature can only be used in C++20 and subsequent versions.</p> <p>To enable building the <code>nlohmann.json</code> module (which is not done by default), the macro <code>NLOHMANN_JSON_BUILD_MODULES</code> must be passed to the build system.</p>"},{"location":"features/modules/#example","title":"Example","text":"<p>When using modules rather than headers, the previous example for creating a <code>json</code> object through a JSON file, would instead be: <pre><code>import std;\nimport nlohmann.json;\n\nusing json = nlohmann::json;\n\n// ...\n\nstd::ifstream f(\"example.json\");\njson data = json::parse(f);\n</code></pre></p>"},{"location":"features/modules/#modules-do-not-export-macros","title":"Modules do not export macros","text":"<p>It should be noted that as modules do not export macros, the <code>nlohmann.json</code> module will not export any macros.</p>"},{"location":"features/modules/#exported-symbols","title":"Exported symbols","text":"<p>Only the following symbols are exported from <code>nlohmann.json</code>:</p> <ul> <li><code>nlohmann::adl_serializer</code></li> <li><code>nlohmann::basic_json</code></li> <li><code>nlohmann::json</code></li> <li><code>nlohmann::json_pointer</code></li> <li><code>nlohmann::ordered_json</code></li> <li><code>nlohmann::ordered_map</code></li> <li><code>nlohmann::to_string</code></li> <li><code>nlohmann::literals::json_literals::operator\"\"_json</code></li> <li><code>nlohmann::literals::json_literals::operator\"\"_json_pointer</code></li> </ul>"},{"location":"features/namespace/","title":"<code>nlohmann</code> Namespace","text":"<p>The 3.11.0 release introduced an inline namespace to allow different parts of a codebase to safely use different versions of the JSON library as long as they never exchange instances of library types.</p>"},{"location":"features/namespace/#structure","title":"Structure","text":"<p>The complete default namespace name is derived as follows:</p> <ul> <li>The root namespace is always <code>nlohmann</code>.</li> <li>The inline namespace starts with <code>json_abi</code> and is followed by several optional ABI tags according to the value of   these ABI-affecting macros, in order:<ul> <li><code>JSON_DIAGNOSTICS</code> defined non-zero appends <code>_diag</code>.</li> <li><code>JSON_USE_LEGACY_DISCARDED_VALUE_COMPARISON</code>   defined non-zero appends <code>_ldvcmp</code>.</li> </ul> </li> <li>The inline namespace ends with the suffix <code>_v</code> followed by the 3 components of the version number separated by   underscores. To omit the version component, see Disabling the version component   below.</li> </ul> <p>For example, the namespace name for version 3.11.2 with <code>JSON_DIAGNOSTICS</code> defined to <code>1</code> is:</p> <pre><code>nlohmann::json_abi_diag_v3_11_2\n</code></pre>"},{"location":"features/namespace/#purpose","title":"Purpose","text":"<p>Several incompatibilities have been observed. Amongst the most common ones is linking code compiled with different definitions of <code>JSON_DIAGNOSTICS</code>. This is illustrated in the diagram below.</p> <pre><code>graph\n    json[\"&lt;strong&gt;nlohmann_json (v3.10.5)&lt;/strong&gt;&lt;br&gt;JSON_DIAGNOSTICS=0\"]\n    json_diag[\"&lt;strong&gt;nlohmann_json (v3.10.5)&lt;/strong&gt;&lt;br&gt;JSON_DIAGNOSTICS=1\"]\n    library[\"&lt;strong&gt;some library&lt;/strong&gt;\"]\n    app[\"&lt;strong&gt;application&lt;/strong&gt;\"]\n\n    library --&gt; json\n    app --&gt; json_diag\n    app --&gt; library</code></pre> <p>In releases prior to 3.11.0, mixing any version of the JSON library with different <code>JSON_DIAGNOSTICS</code> settings would result in a crashing application. If <code>some_library</code> never passes instances of JSON library types to the application, this scenario became safe in version 3.11.0 and above due to the inline namespace yielding distinct symbol names.</p>"},{"location":"features/namespace/#limitations","title":"Limitations","text":"<p>Neither the compiler nor the linker will issue as much as a warning when translation units \u2013 intended to be linked together and that include different versions and/or configurations of the JSON library \u2013 exchange and use library types.</p> <p>There is an exception when forward declarations are used (i.e., when including <code>json_fwd.hpp</code>) in which case the linker may complain about undefined references.</p>"},{"location":"features/namespace/#disabling-the-version-component","title":"Disabling the version component","text":"<p>Different versions are not necessarily ABI-incompatible, but the project does not actively track changes in the ABI and recommends that all parts of a codebase exchanging library types be built with the same version. Users can, at their own risk, disable the version component of the linline namespace, allowing different versions \u2013 but not configurations \u2013 to be used in cases where the linker would otherwise output undefined reference errors.</p> <p>To do so, define <code>NLOHMANN_JSON_NAMESPACE_NO_VERSION</code> to <code>1</code>.</p> <p>This applies to version 3.11.2 and above only; versions 3.11.0 and 3.11.1 can apply the technique described in the next section to emulate the effect of the <code>NLOHMANN_JSON_NAMESPACE_NO_VERSION</code> macro.</p> <p>Use at your own risk</p> <p>Disabling the namespace version component and mixing ABI-incompatible versions will result in crashes or incorrect behavior. You have been warned!</p>"},{"location":"features/namespace/#disabling-the-inline-namespace-completely","title":"Disabling the inline namespace completely","text":"<p>When interoperability with code using a pre-3.11.0 version of the library is required, users can, at their own risk restore the old namespace layout by redefining <code>NLOHMANN_JSON_NAMESPACE_BEGIN, NLOHMANN_JSON_NAMESPACE_END</code> as follows:</p> <pre><code>#define NLOHMANN_JSON_NAMESPACE_BEGIN  namespace nlohmann {\n#define NLOHMANN_JSON_NAMESPACE_END    }\n</code></pre> <p>Use at your own risk</p> <p>Overriding the namespace and mixing ABI-incompatible versions will result in crashes or incorrect behavior. You have been warned!</p>"},{"location":"features/namespace/#version-history","title":"Version history","text":"<ul> <li>Introduced inline namespace (<code>json_v3_11_0[_abi-tag]*</code>) in version 3.11.0.</li> <li>Changed structure of inline namespace in version 3.11.2.</li> </ul>"},{"location":"features/object_order/","title":"Object Order","text":"<p>The JSON standard defines objects as \"an unordered collection of zero or more name/value pairs\". As such, an implementation does not need to preserve any specific order of object keys.</p>"},{"location":"features/object_order/#default-behavior-sort-keys","title":"Default behavior: sort keys","text":"<p>The default type <code>nlohmann::json</code> uses a <code>std::map</code> to store JSON objects, and thus stores object keys sorted alphabetically.</p> Example <pre><code>#include &lt;iostream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    json j;\n    j[\"one\"] = 1;\n    j[\"two\"] = 2;\n    j[\"three\"] = 3;\n\n    std::cout &lt;&lt; j.dump(2) &lt;&lt; '\\n';\n}\n</code></pre> <p>Output:</p> <pre><code>{\n  \"one\": 1,\n  \"three\": 3,\n  \"two\": 2\n}\n</code></pre>"},{"location":"features/object_order/#alternative-behavior-preserve-insertion-order","title":"Alternative behavior: preserve insertion order","text":"<p>If you do want to preserve the insertion order, you can try the type <code>nlohmann::ordered_json</code>.</p> Example <pre><code>#include &lt;iostream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing ordered_json = nlohmann::ordered_json;\n\nint main()\n{\n    ordered_json j;\n    j[\"one\"] = 1;\n    j[\"two\"] = 2;\n    j[\"three\"] = 3;\n\n    std::cout &lt;&lt; j.dump(2) &lt;&lt; '\\n';\n}\n</code></pre> <p>Output:</p> <pre><code>{\n  \"one\": 1,\n  \"two\": 2,\n  \"three\": 3\n}\n</code></pre> <p>Alternatively, you can use a more sophisticated ordered map like <code>tsl::ordered_map</code> (integration) or <code>nlohmann::fifo_map</code> (integration).</p>"},{"location":"features/object_order/#notes-on-parsing","title":"Notes on parsing","text":"<p>Note that you also need to call the right <code>parse</code> function when reading from a file. Assume file <code>input.json</code> contains the JSON object above:</p> <pre><code>{\n  \"one\": 1,\n  \"two\": 2,\n  \"three\": 3\n}\n</code></pre> <p>Right way</p> <p>The following code correctly calls the <code>parse</code> function from <code>nlohmann::ordered_json</code>:</p> <pre><code>std::ifstream i(\"input.json\");\nauto j = nlohmann::ordered_json::parse(i);\nstd::cout &lt;&lt; j.dump(2) &lt;&lt; std::endl;\n</code></pre> <p>The output will be:</p> <pre><code>{\n  \"one\": 1,\n  \"two\": 2,\n  \"three\": 3\n}\n</code></pre> Wrong way <p>The following code incorrectly calls the <code>parse</code> function from <code>nlohmann::json</code> which does not preserve the insertion order, but sorts object keys. Assigning the result to <code>nlohmann::ordered_json</code> compiles, but does not restore the order from the input file.</p> <pre><code>std::ifstream i(\"input.json\");\nnlohmann::ordered_json j = nlohmann::json::parse(i);\nstd::cout &lt;&lt; j.dump(2) &lt;&lt; std::endl;\n</code></pre> <p>The output will be:</p> <pre><code>{\n  \"one\": 1,\n  \"three\": 3\n  \"two\": 2,\n}\n</code></pre>"},{"location":"features/trailing_commas/","title":"Trailing Commas","text":"<p>Like comments, this library does not support trailing commas in arrays and objects by default.</p> <p>You can set parameter <code>ignore_trailing_commas</code> to <code>true</code> in the <code>parse</code> function to allow trailing commas in arrays and objects. Note that a single comma as the only content of the array or object (<code>[,]</code> or <code>{,}</code>) is not allowed, and multiple trailing commas (<code>[1,,]</code>) are not allowed either.</p> <p>This library does not add trailing commas when serializing JSON data.</p> <p>For more information, see JSON With Commas and Comments (JWCC).</p> <p>Example</p> <p>Consider the following JSON with trailing commas.</p> <pre><code>{\n    \"planets\": [\n        \"Mercury\",\n        \"Venus\",\n        \"Earth\",\n        \"Mars\",\n        \"Jupiter\",\n        \"Uranus\",\n        \"Neptune\",\n    ]\n}\n</code></pre> <p>When calling <code>parse</code> without additional argument, a parse error exception is thrown. If <code>ignore_trailing_commas</code> is set to <code>true</code>, the trailing commas are ignored during parsing:</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    std::string s = R\"(\n    {\n        \"planets\": [\n            \"Mercury\",\n            \"Venus\",\n            \"Earth\",\n            \"Mars\",\n            \"Jupiter\",\n            \"Uranus\",\n            \"Neptune\",\n        ]\n    }\n    )\";\n\n    try\n    {\n        json j = json::parse(s);\n    }\n    catch (json::exception&amp; e)\n    {\n        std::cout &lt;&lt; e.what() &lt;&lt; std::endl;\n    }\n\n    json j = json::parse(s,\n                         /* callback */ nullptr,\n                         /* allow exceptions */ true,\n                         /* ignore_comments */ false,\n                         /* ignore_trailing_commas */ true);\n    std::cout &lt;&lt; j.dump(2) &lt;&lt; '\\n';\n}\n</code></pre> <p>Output:</p> <pre><code>[json.exception.parse_error.101] parse error at line 11, column 9: syntax error while parsing value - unexpected ']'; expected '[', '{', or a literal\n{\n  \"planets\": [\n    \"Mercury\",\n    \"Venus\",\n    \"Earth\",\n    \"Mars\",\n    \"Jupiter\",\n    \"Uranus\",\n    \"Neptune\"\n  ]\n}\n</code></pre>"},{"location":"features/binary_formats/","title":"Binary Formats","text":"<p>Though JSON is a ubiquitous data format, it is not a very compact format suitable for data exchange, for instance, over a network. Hence, the library supports</p> <ul> <li>BJData (Binary JData),</li> <li>BSON (Binary JSON),</li> <li>CBOR (Concise Binary Object Representation),</li> <li>MessagePack, and</li> <li>UBJSON (Universal Binary JSON)</li> </ul> <p>to efficiently encode JSON values to byte vectors and to decode such vectors.</p>"},{"location":"features/binary_formats/#comparison","title":"Comparison","text":""},{"location":"features/binary_formats/#completeness","title":"Completeness","text":"Format Serialization Deserialization BJData complete complete BSON incomplete: top-level value must be an object incomplete, but all JSON types are supported CBOR complete incomplete, but all JSON types are supported MessagePack complete complete UBJSON complete complete"},{"location":"features/binary_formats/#binary-values","title":"Binary values","text":"Format Binary values Binary subtypes BJData not supported not supported BSON supported supported CBOR supported supported MessagePack supported supported UBJSON not supported not supported <p>See binary values for more information.</p>"},{"location":"features/binary_formats/#sizes","title":"Sizes","text":"Format canada.json twitter.json citm_catalog.json jeopardy.json BJData 53.2 % 91.1 % 78.1 % 96.6 % BJData (size) 58.6 % 92.1 % 86.7 % 97.4 % BJData (size+tyoe) 58.6 % 92.1 % 86.5 % 97.4 % BSON 85.8 % 95.2 % 95.8 % 106.7 % CBOR 50.5 % 86.3 % 68.4 % 88.0 % MessagePack 50.5 % 86.0 % 68.5 % 87.9 % UBJSON 53.2 % 91.3 % 78.2 % 96.6 % UBJSON (size) 58.6 % 92.3 % 86.8 % 97.4 % UBJSON (size+type) 55.9 % 92.3 % 85.0 % 95.0 % <p>Sizes compared to minified JSON value.</p>"},{"location":"features/binary_formats/bjdata/","title":"BJData","text":"<p>The BJData format was derived from and improved upon Universal Binary JSON(UBJSON) specification (Draft 12). Specifically, it introduces an optimized array container for efficient storage of N-dimensional packed arrays (ND-arrays); it also adds 5 new type markers - <code>[u] - uint16</code>, <code>[m] - uint32</code>, <code>[M] - uint64</code>, <code>[h] - float16</code> and <code>[B] - byte</code> - to unambiguously map common binary numeric types; furthermore, it uses little-endian (LE) to store all numerics instead of big-endian (BE) as in UBJSON to avoid unnecessary conversions on commonly available platforms.</p> <p>Compared to other binary JSON-like formats such as MessagePack and CBOR, both BJData and UBJSON demonstrate a rare combination of being both binary and quasi-human-readable. This is because all semantic elements in BJData and UBJSON, including the data-type markers and name/string types, are directly human-readable. Data stored in the BJData/UBJSON format is not only compact in size, fast to read/write, but also can be directly searched or read using simple processing.</p> <p>References</p> <ul> <li>BJData Specification</li> </ul>"},{"location":"features/binary_formats/bjdata/#serialization","title":"Serialization","text":"<p>The library uses the following mapping from JSON values types to BJData types according to the BJData specification:</p> JSON value type value/range BJData type marker null <code>null</code> null <code>Z</code> boolean <code>true</code> true <code>T</code> boolean <code>false</code> false <code>F</code> number_integer -9223372036854775808..-2147483649 int64 <code>L</code> number_integer -2147483648..-32769 int32 <code>l</code> number_integer -32768..-129 int16 <code>I</code> number_integer -128..127 int8 <code>i</code> number_integer 128..255 uint8 <code>U</code> number_integer 256..32767 int16 <code>I</code> number_integer 32768..65535 uint16 <code>u</code> number_integer 65536..2147483647 int32 <code>l</code> number_integer 2147483648..4294967295 uint32 <code>m</code> number_integer 4294967296..9223372036854775807 int64 <code>L</code> number_integer 9223372036854775808..18446744073709551615 uint64 <code>M</code> number_unsigned 0..127 int8 <code>i</code> number_unsigned 128..255 uint8 <code>U</code> number_unsigned 256..32767 int16 <code>I</code> number_unsigned 32768..65535 uint16 <code>u</code> number_unsigned 65536..2147483647 int32 <code>l</code> number_unsigned 2147483648..4294967295 uint32 <code>m</code> number_unsigned 4294967296..9223372036854775807 int64 <code>L</code> number_unsigned 9223372036854775808..18446744073709551615 uint64 <code>M</code> number_float any value float64 <code>D</code> string with shortest length indicator string <code>S</code> array see notes on optimized format/ND-array array <code>[</code> object see notes on optimized format map <code>{</code> binary see notes on binary values array <code>[$B</code> <p>Complete mapping</p> <p>The mapping is complete in the sense that any JSON value type can be converted to a BJData value.</p> <p>Any BJData output created by <code>to_bjdata</code> can be successfully parsed by <code>from_bjdata</code>.</p> <p>Size constraints</p> <p>The following values can not be converted to a BJData value:</p> <ul> <li>strings with more than 18446744073709551615 bytes, i.e., 2^{64}-1 bytes (theoretical)</li> </ul> <p>Unused BJData markers</p> <p>The following markers are not used in the conversion:</p> <ul> <li><code>Z</code>: no-op values are not created.</li> <li><code>C</code>: single-byte strings are serialized with <code>S</code> markers.</li> </ul> <p>NaN/infinity handling</p> <p>If NaN or Infinity are stored inside a JSON number, they are serialized properly. This behavior differs from the <code>dump()</code> function which serializes NaN or Infinity to <code>null</code>.</p> <p>Endianness</p> <p>A breaking difference between BJData and UBJSON is the endianness of numerical values. In BJData, all numerical data types (integers <code>UiuImlML</code> and floating-point values <code>hdD</code>) are stored in the little-endian (LE) byte order as opposed to big-endian as used by UBJSON. Adopting LE to store numeric records avoids unnecessary byte swapping on most modern computers where LE is used as the default byte order.</p> <p>Optimized formats</p> <p>Optimized formats for containers are supported via two parameters of <code>to_bjdata</code>:</p> <ul> <li>Parameter <code>use_size</code> adds size information to the beginning of a container and removes the closing marker.</li> <li>Parameter <code>use_type</code> further checks whether all elements of a container have the same type and adds the type   marker to the beginning of the container. The <code>use_type</code> parameter must only be used together with   <code>use_size = true</code>.</li> </ul> <p>Note that <code>use_size = true</code> alone may result in larger representations - the benefit of this parameter is that the receiving side is immediately informed of the number of elements in the container.</p> <p>ND-array optimized format</p> <p>BJData extends UBJSON's optimized array size marker to support ND-arrays of uniform numerical data types (referred to as packed arrays). For example, the 2-D <code>uint8</code> integer array <code>[[1,2],[3,4],[5,6]]</code>, stored as nested optimized array in UBJSON <code>[ [$U#i2 1 2 [$U#i2 3 4 [$U#i2 5 6 ]</code>, can be further compressed in BJData to <code>[$U#[$i#i2 2 3 1 2 3 4 5 6</code> or <code>[$U#[i2 i3] 1 2 3 4 5 6</code>.</p> <p>To maintain type and size information, ND-arrays are converted to JSON objects following the annotated array format (defined in the JData specification (Draft 3)), when parsed using <code>from_bjdata</code>. For example, the above 2-D <code>uint8</code> array can be parsed and accessed as</p> <pre><code>{\n    \"_ArrayType_\": \"uint8\",\n    \"_ArraySize_\": [2,3],\n    \"_ArrayData_\": [1,2,3,4,5,6]\n}\n</code></pre> <p>Likewise, when a JSON object in the above form is serialized using <code>to_bjdata</code>, it is automatically converted into a compact BJData ND-array. The only exception is, that when the 1-dimensional vector stored in <code>\"_ArraySize_\"</code> contains a single integer or two integers with one being 1, a regular 1-D optimized array is generated.</p> <p>The current version of this library does not yet support automatic detection of and conversion from a nested JSON array input to a BJData ND-array.</p> <p>Restrictions in optimized data types for arrays and objects</p> <p>Due to diminished space saving, hampered readability, and increased security risks, in BJData, the allowed data types following the <code>$</code> marker in an optimized array and object container are restricted to non-zero-fixed-length data types. Therefore, the valid optimized type markers can only be one of <code>UiuImlMLhdDCB</code>. This also means other variable (<code>[{SH</code>) or zero-length types (<code>TFN</code>) can not be used in an optimized array or object in BJData.</p> <p>Binary values</p> <p>BJData provides a dedicated <code>B</code> marker (defined in the BJData specification (Draft 3)) that is used in optimized arrays to designate binary data. This means that, unlike UBJSON, binary data can be both serialized and deserialized.</p> <p>To preserve compatibility with BJData Draft 2, the Draft 3 optimized binary array must be explicitly enabled using the <code>version</code> parameter of <code>to_bjdata</code>.</p> <p>In Draft2 mode (default), if the JSON data contains the binary type, the value stored as a list of integers, as suggested by the BJData documentation. In particular, this means that the serialization and the deserialization of JSON containing binary values into BJData and back will result in a different JSON object.</p> Example <pre><code>#include &lt;iostream&gt;\n#include &lt;iomanip&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\nusing namespace nlohmann::literals;\n\n// function to print BJData's diagnostic format\nvoid print_byte(uint8_t byte)\n{\n    if (32 &lt; byte and byte &lt; 128)\n    {\n        std::cout &lt;&lt; (char)byte;\n    }\n    else\n    {\n        std::cout &lt;&lt; (int)byte;\n    }\n}\n\nint main()\n{\n    // create a JSON value\n    json j = R\"({\"compact\": true, \"schema\": false})\"_json;\n\n    // serialize it to BJData\n    std::vector&lt;std::uint8_t&gt; v = json::to_bjdata(j);\n\n    // print the vector content\n    for (auto&amp; byte : v)\n    {\n        print_byte(byte);\n    }\n    std::cout &lt;&lt; std::endl;\n\n    // create an array of numbers\n    json array = {1, 2, 3, 4, 5, 6, 7, 8};\n\n    // serialize it to BJData using default representation\n    std::vector&lt;std::uint8_t&gt; v_array = json::to_bjdata(array);\n    // serialize it to BJData using size optimization\n    std::vector&lt;std::uint8_t&gt; v_array_size = json::to_bjdata(array, true);\n    // serialize it to BJData using type optimization\n    std::vector&lt;std::uint8_t&gt; v_array_size_and_type = json::to_bjdata(array, true, true);\n\n    // print the vector contents\n    for (auto&amp; byte : v_array)\n    {\n        print_byte(byte);\n    }\n    std::cout &lt;&lt; std::endl;\n\n    for (auto&amp; byte : v_array_size)\n    {\n        print_byte(byte);\n    }\n    std::cout &lt;&lt; std::endl;\n\n    for (auto&amp; byte : v_array_size_and_type)\n    {\n        print_byte(byte);\n    }\n    std::cout &lt;&lt; std::endl;\n}\n</code></pre> <p>Output:</p> <pre><code>{i7compactTi6schemaF}\n[i1i2i3i4i5i6i7i8]\n[#i8i1i2i3i4i5i6i7i8\n[$i#i812345678\n</code></pre>"},{"location":"features/binary_formats/bjdata/#deserialization","title":"Deserialization","text":"<p>The library maps BJData types to JSON value types as follows:</p> BJData type JSON value type marker no-op no value, next value is read <code>N</code> null <code>null</code> <code>Z</code> false <code>false</code> <code>F</code> true <code>true</code> <code>T</code> float16 number_float <code>h</code> float32 number_float <code>d</code> float64 number_float <code>D</code> uint8 number_unsigned <code>U</code> int8 number_integer <code>i</code> uint16 number_unsigned <code>u</code> int16 number_integer <code>I</code> uint32 number_unsigned <code>m</code> int32 number_integer <code>l</code> uint64 number_unsigned <code>M</code> int64 number_integer <code>L</code> byte number_unsigned <code>B</code> string string <code>S</code> char string <code>C</code> array array (optimized values are supported) <code>[</code> ND-array object (in JData annotated array format) <code>[$.#[.</code> object object (optimized values are supported) <code>{</code> binary binary (strongly-typed byte array) <code>[$B</code> <p>Complete mapping</p> <p>The mapping is complete in the sense that any BJData value can be converted to a JSON value.</p> Example <pre><code>#include &lt;iostream&gt;\n#include &lt;iomanip&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create byte vector\n    std::vector&lt;std::uint8_t&gt; v = {0x7B, 0x69, 0x07, 0x63, 0x6F, 0x6D, 0x70, 0x61,\n                                   0x63, 0x74, 0x54, 0x69, 0x06, 0x73, 0x63, 0x68,\n                                   0x65, 0x6D, 0x61, 0x69, 0x00, 0x7D\n                                  };\n\n    // deserialize it with BJData\n    json j = json::from_bjdata(v);\n\n    // print the deserialized JSON value\n    std::cout &lt;&lt; std::setw(2) &lt;&lt; j &lt;&lt; std::endl;\n}\n</code></pre> <p>Output:</p> <pre><code>{\n  \"compact\": true,\n  \"schema\": 0\n}\n</code></pre>"},{"location":"features/binary_formats/bson/","title":"BSON","text":"<p>BSON, short for Binary JSON, is a binary-encoded serialization of JSON-like documents. Like JSON, BSON supports the embedding of documents and arrays within other documents and arrays. BSON also contains extensions that allow representation of data types that are not part of the JSON spec. For example, BSON has a Date type and a BinData type.</p> <p>References</p> <ul> <li>BSON Website - the main source on BSON</li> <li>BSON Specification - the specification</li> </ul>"},{"location":"features/binary_formats/bson/#serialization","title":"Serialization","text":"<p>The library uses the following mapping from JSON values types to BSON types:</p> JSON value type value/range BSON type marker null <code>null</code> null 0x0A boolean <code>true</code>, <code>false</code> boolean 0x08 number_integer -9223372036854775808..-2147483649 int64 0x12 number_integer -2147483648..2147483647 int32 0x10 number_integer 2147483648..9223372036854775807 int64 0x12 number_unsigned 0..2147483647 int32 0x10 number_unsigned 2147483648..9223372036854775807 int64 0x12 number_unsigned 9223372036854775808..18446744073709551615 uint64 0x11 number_float any value double 0x01 string any value string 0x02 array any value document 0x04 object any value document 0x03 binary any value binary 0x05 <p>Incomplete mapping</p> <p>The mapping is incomplete, since only JSON-objects (and things contained therein) can be serialized to BSON. Also, keys may not contain U+0000, since they are serialized a zero-terminated c-strings.</p> Example <pre><code>#include &lt;iostream&gt;\n#include &lt;iomanip&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\nusing namespace nlohmann::literals;\n\nint main()\n{\n    // create a JSON value\n    json j = R\"({\"compact\": true, \"schema\": 0})\"_json;\n\n    // serialize it to BSON\n    std::vector&lt;std::uint8_t&gt; v = json::to_bson(j);\n\n    // print the vector content\n    for (auto&amp; byte : v)\n    {\n        std::cout &lt;&lt; \"0x\" &lt;&lt; std::hex &lt;&lt; std::setw(2) &lt;&lt; std::setfill('0') &lt;&lt; (int)byte &lt;&lt; \" \";\n    }\n    std::cout &lt;&lt; std::endl;\n}\n</code></pre> <p>Output:</p> <pre><code>0x1b 0x00 0x00 0x00 0x08 0x63 0x6f 0x6d 0x70 0x61 0x63 0x74 0x00 0x01 0x10 0x73 0x63 0x68 0x65 0x6d 0x61 0x00 0x00 0x00 0x00 0x00 0x00 \n</code></pre>"},{"location":"features/binary_formats/bson/#deserialization","title":"Deserialization","text":"<p>The library maps BSON record types to JSON value types as follows:</p> BSON type BSON marker byte JSON value type double 0x01 number_float string 0x02 string document 0x03 object array 0x04 array binary 0x05 binary undefined 0x06 unsupported ObjectId 0x07 unsupported boolean 0x08 boolean UTC Date-Time 0x09 unsupported null 0x0A null Regular Expr. 0x0B unsupported DB Pointer 0x0C unsupported JavaScript Code 0x0D unsupported Symbol 0x0E unsupported JavaScript Code 0x0F unsupported int32 0x10 number_integer uint64(Timestamp) 0x11 number_unsigned 128-bit decimal float 0x13 unsupported Max Key 0x7F unsupported Min Key 0xFF unsupported <p>Incomplete mapping</p> <p>The mapping is incomplete. The unsupported mappings are indicated in the table above.</p> <p>Handling of BSON type 0x11</p> <p>BSON type 0x11 is used to represent uint64 numbers. This library treats these values purely as uint64 numbers  and does not parse them into date-related formats.</p> Example <pre><code>#include &lt;iostream&gt;\n#include &lt;iomanip&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create byte vector\n    std::vector&lt;std::uint8_t&gt; v = {0x1b, 0x00, 0x00, 0x00, 0x08, 0x63, 0x6f, 0x6d,\n                                   0x70, 0x61, 0x63, 0x74, 0x00, 0x01, 0x10, 0x73,\n                                   0x63, 0x68, 0x65, 0x6d, 0x61, 0x00, 0x00, 0x00,\n                                   0x00, 0x00, 0x00\n                                  };\n\n    // deserialize it with BSON\n    json j = json::from_bson(v);\n\n    // print the deserialized JSON value\n    std::cout &lt;&lt; std::setw(2) &lt;&lt; j &lt;&lt; std::endl;\n}\n</code></pre> <p>Output:</p> <pre><code>{\n  \"compact\": true,\n  \"schema\": 0\n}\n</code></pre>"},{"location":"features/binary_formats/cbor/","title":"CBOR","text":"<p>The Concise Binary Object Representation (CBOR) is a data format whose design goals include the possibility of extremely small code sizes, fairly small message size, and extensibility without the need for version negotiation.</p> <p>References</p> <ul> <li>CBOR Website - the main source on CBOR</li> <li>CBOR Playground - an interactive webpage to translate between JSON and CBOR</li> <li>RFC 7049 - the CBOR specification</li> </ul>"},{"location":"features/binary_formats/cbor/#serialization","title":"Serialization","text":"<p>The library uses the following mapping from JSON values types to CBOR types according to the CBOR specification (RFC 7049):</p> JSON value type value/range CBOR type first byte null <code>null</code> Null 0xF6 boolean <code>true</code> True 0xF5 boolean <code>false</code> False 0xF4 number_integer -9223372036854775808..-2147483649 Negative integer (8 bytes follow) 0x3B number_integer -2147483648..-32769 Negative integer (4 bytes follow) 0x3A number_integer -32768..-129 Negative integer (2 bytes follow) 0x39 number_integer -128..-25 Negative integer (1 byte follow) 0x38 number_integer -24..-1 Negative integer 0x20..0x37 number_integer 0..23 Integer 0x00..0x17 number_integer 24..255 Unsigned integer (1 byte follow) 0x18 number_integer 256..65535 Unsigned integer (2 bytes follow) 0x19 number_integer 65536..4294967295 Unsigned integer (4 bytes follow) 0x1A number_integer 4294967296..18446744073709551615 Unsigned integer (8 bytes follow) 0x1B number_unsigned 0..23 Integer 0x00..0x17 number_unsigned 24..255 Unsigned integer (1 byte follow) 0x18 number_unsigned 256..65535 Unsigned integer (2 bytes follow) 0x19 number_unsigned 65536..4294967295 Unsigned integer (4 bytes follow) 0x1A number_unsigned 4294967296..18446744073709551615 Unsigned integer (8 bytes follow) 0x1B number_float any value representable by a float Single-Precision Float 0xFA number_float any value NOT representable by a float Double-Precision Float 0xFB string length: 0..23 UTF-8 string 0x60..0x77 string length: 23..255 UTF-8 string (1 byte follow) 0x78 string length: 256..65535 UTF-8 string (2 bytes follow) 0x79 string length: 65536..4294967295 UTF-8 string (4 bytes follow) 0x7A string length: 4294967296..18446744073709551615 UTF-8 string (8 bytes follow) 0x7B array size: 0..23 array 0x80..0x97 array size: 23..255 array (1 byte follow) 0x98 array size: 256..65535 array (2 bytes follow) 0x99 array size: 65536..4294967295 array (4 bytes follow) 0x9A array size: 4294967296..18446744073709551615 array (8 bytes follow) 0x9B object size: 0..23 map 0xA0..0xB7 object size: 23..255 map (1 byte follow) 0xB8 object size: 256..65535 map (2 bytes follow) 0xB9 object size: 65536..4294967295 map (4 bytes follow) 0xBA object size: 4294967296..18446744073709551615 map (8 bytes follow) 0xBB binary size: 0..23 byte string 0x40..0x57 binary size: 23..255 byte string (1 byte follow) 0x58 binary size: 256..65535 byte string (2 bytes follow) 0x59 binary size: 65536..4294967295 byte string (4 bytes follow) 0x5A binary size: 4294967296..18446744073709551615 byte string (8 bytes follow) 0x5B <p>Binary values with subtype are mapped to tagged values (0xD8..0xDB) depending on the subtype, followed by a byte string, see \"binary\" cells in the table above.</p> <p>Complete mapping</p> <p>The mapping is complete in the sense that any JSON value type can be converted to a CBOR value.</p> <p>NaN/infinity handling</p> <p>If NaN or Infinity are stored inside a JSON number, they are serialized properly. This behavior differs from the normal JSON serialization which serializes NaN or Infinity to <code>null</code>.</p> <p>Unused CBOR types</p> <p>The following CBOR types are not used in the conversion:</p> <ul> <li>UTF-8 strings terminated by \"break\" (0x7F)</li> <li>arrays terminated by \"break\" (0x9F)</li> <li>maps terminated by \"break\" (0xBF)</li> <li>byte strings terminated by \"break\" (0x5F)</li> <li>date/time (0xC0..0xC1)</li> <li>bignum (0xC2..0xC3)</li> <li>decimal fraction (0xC4)</li> <li>bigfloat (0xC5)</li> <li>expected conversions (0xD5..0xD7)</li> <li>simple values (0xE0..0xF3, 0xF8)</li> <li>undefined (0xF7)</li> <li>half-precision floats (0xF9)</li> <li>break (0xFF)</li> </ul> <p>Tagged items</p> <p>Binary subtypes will be serialized as tagged items. See binary values for an example.</p> Example <pre><code>#include &lt;iostream&gt;\n#include &lt;iomanip&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\nusing namespace nlohmann::literals;\n\nint main()\n{\n    // create a JSON value\n    json j = R\"({\"compact\": true, \"schema\": 0})\"_json;\n\n    // serialize it to CBOR\n    std::vector&lt;std::uint8_t&gt; v = json::to_cbor(j);\n\n    // print the vector content\n    for (auto&amp; byte : v)\n    {\n        std::cout &lt;&lt; \"0x\" &lt;&lt; std::hex &lt;&lt; std::setw(2) &lt;&lt; std::setfill('0') &lt;&lt; (int)byte &lt;&lt; \" \";\n    }\n    std::cout &lt;&lt; std::endl;\n}\n</code></pre> <p>Output:</p> <pre><code>0xa2 0x67 0x63 0x6f 0x6d 0x70 0x61 0x63 0x74 0xf5 0x66 0x73 0x63 0x68 0x65 0x6d 0x61 0x00 \n</code></pre>"},{"location":"features/binary_formats/cbor/#deserialization","title":"Deserialization","text":"<p>The library maps CBOR types to JSON value types as follows:</p> CBOR type JSON value type first byte Integer number_unsigned 0x00..0x17 Unsigned integer number_unsigned 0x18 Unsigned integer number_unsigned 0x19 Unsigned integer number_unsigned 0x1A Unsigned integer number_unsigned 0x1B Negative integer number_integer 0x20..0x37 Negative integer number_integer 0x38 Negative integer number_integer 0x39 Negative integer number_integer 0x3A Negative integer number_integer 0x3B Byte string binary 0x40..0x57 Byte string binary 0x58 Byte string binary 0x59 Byte string binary 0x5A Byte string binary 0x5B UTF-8 string string 0x60..0x77 UTF-8 string string 0x78 UTF-8 string string 0x79 UTF-8 string string 0x7A UTF-8 string string 0x7B UTF-8 string string 0x7F array array 0x80..0x97 array array 0x98 array array 0x99 array array 0x9A array array 0x9B array array 0x9F map object 0xA0..0xB7 map object 0xB8 map object 0xB9 map object 0xBA map object 0xBB map object 0xBF False <code>false</code> 0xF4 True <code>true</code> 0xF5 Null <code>null</code> 0xF6 Half-Precision Float number_float 0xF9 Single-Precision Float number_float 0xFA Double-Precision Float number_float 0xFB <p>Incomplete mapping</p> <p>The mapping is incomplete in the sense that not all CBOR types can be converted to a JSON value. The following CBOR types are not supported and will yield parse errors:</p> <ul> <li>date/time (0xC0..0xC1)</li> <li>bignum (0xC2..0xC3)</li> <li>decimal fraction (0xC4)</li> <li>bigfloat (0xC5)</li> <li>expected conversions (0xD5..0xD7)</li> <li>simple values (0xE0..0xF3, 0xF8)</li> <li>undefined (0xF7)</li> </ul> <p>Object keys</p> <p>CBOR allows map keys of any type, whereas JSON only allows strings as keys in object values. Therefore, CBOR maps with keys other than UTF-8 strings are rejected.</p> <p>Tagged items</p> <p>Tagged items will throw a parse error by default. They can be ignored by passing <code>cbor_tag_handler_t::ignore</code> to function <code>from_cbor</code>. They can be stored by passing <code>cbor_tag_handler_t::store</code> to function <code>from_cbor</code>.</p> Example <pre><code>#include &lt;iostream&gt;\n#include &lt;iomanip&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create byte vector\n    std::vector&lt;std::uint8_t&gt; v = {0xa2, 0x67, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x63,\n                                   0x74, 0xf5, 0x66, 0x73, 0x63, 0x68, 0x65, 0x6d,\n                                   0x61, 0x00\n                                  };\n\n    // deserialize it with CBOR\n    json j = json::from_cbor(v);\n\n    // print the deserialized JSON value\n    std::cout &lt;&lt; std::setw(2) &lt;&lt; j &lt;&lt; std::endl;\n}\n</code></pre> <p>Output:</p> <pre><code>{\n  \"compact\": true,\n  \"schema\": 0\n}\n</code></pre>"},{"location":"features/binary_formats/messagepack/","title":"MessagePack","text":"<p>MessagePack is an efficient binary serialization format. It lets you exchange data among multiple languages like JSON. But it's faster and smaller. Small integers are encoded into a single byte, and typical short strings require only one extra byte in addition to the strings themselves.</p> <p>References</p> <ul> <li>MessagePack website</li> <li>MessagePack specification</li> </ul>"},{"location":"features/binary_formats/messagepack/#serialization","title":"Serialization","text":"<p>The library uses the following mapping from JSON values types to MessagePack types according to the MessagePack specification:</p> JSON value type value/range MessagePack type first byte null <code>null</code> nil 0xC0 boolean <code>true</code> true 0xC3 boolean <code>false</code> false 0xC2 number_integer -9223372036854775808..-2147483649 int64 0xD3 number_integer -2147483648..-32769 int32 0xD2 number_integer -32768..-129 int16 0xD1 number_integer -128..-33 int8 0xD0 number_integer -32..-1 negative fixint 0xE0..0xFF number_integer 0..127 positive fixint 0x00..0x7F number_integer 128..255 uint 8 0xCC number_integer 256..65535 uint 16 0xCD number_integer 65536..4294967295 uint 32 0xCE number_integer 4294967296..18446744073709551615 uint 64 0xCF number_unsigned 0..127 positive fixint 0x00..0x7F number_unsigned 128..255 uint 8 0xCC number_unsigned 256..65535 uint 16 0xCD number_unsigned 65536..4294967295 uint 32 0xCE number_unsigned 4294967296..18446744073709551615 uint 64 0xCF number_float any value representable by a float float 32 0xCA number_float any value NOT representable by a float float 64 0xCB string length: 0..31 fixstr 0xA0..0xBF string length: 32..255 str 8 0xD9 string length: 256..65535 str 16 0xDA string length: 65536..4294967295 str 32 0xDB array size: 0..15 fixarray 0x90..0x9F array size: 16..65535 array 16 0xDC array size: 65536..4294967295 array 32 0xDD object size: 0..15 fix map 0x80..0x8F object size: 16..65535 map 16 0xDE object size: 65536..4294967295 map 32 0xDF binary size: 0..255 bin 8 0xC4 binary size: 256..65535 bin 16 0xC5 binary size: 65536..4294967295 bin 32 0xC6 <p>Complete mapping</p> <p>The mapping is complete in the sense that any JSON value type can be converted to a MessagePack value.</p> <p>Any MessagePack output created by <code>to_msgpack</code> can be successfully parsed by <code>from_msgpack</code>.</p> <p>Size constraints</p> <p>The following values can not be converted to a MessagePack value:</p> <ul> <li>strings with more than 4294967295 bytes</li> <li>byte strings with more than 4294967295 bytes</li> <li>arrays with more than 4294967295 elements</li> <li>objects with more than 4294967295 elements</li> </ul> <p>NaN/infinity handling</p> <p>If NaN or Infinity are stored inside a JSON number, they are serialized properly in contrast to the dump function which serializes NaN or Infinity to <code>null</code>.</p> Example <pre><code>#include &lt;iostream&gt;\n#include &lt;iomanip&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\nusing namespace nlohmann::literals;\n\nint main()\n{\n    // create a JSON value\n    json j = R\"({\"compact\": true, \"schema\": 0})\"_json;\n\n    // serialize it to MessagePack\n    std::vector&lt;std::uint8_t&gt; v = json::to_msgpack(j);\n\n    // print the vector content\n    for (auto&amp; byte : v)\n    {\n        std::cout &lt;&lt; \"0x\" &lt;&lt; std::hex &lt;&lt; std::setw(2) &lt;&lt; std::setfill('0') &lt;&lt; (int)byte &lt;&lt; \" \";\n    }\n    std::cout &lt;&lt; std::endl;\n}\n</code></pre> <p>Output:</p> <pre><code>0x82 0xa7 0x63 0x6f 0x6d 0x70 0x61 0x63 0x74 0xc3 0xa6 0x73 0x63 0x68 0x65 0x6d 0x61 0x00 \n</code></pre>"},{"location":"features/binary_formats/messagepack/#deserialization","title":"Deserialization","text":"<p>The library maps MessagePack types to JSON value types as follows:</p> MessagePack type JSON value type first byte positive fixint number_unsigned 0x00..0x7F fixmap object 0x80..0x8F fixarray array 0x90..0x9F fixstr string 0xA0..0xBF nil <code>null</code> 0xC0 false <code>false</code> 0xC2 true <code>true</code> 0xC3 float 32 number_float 0xCA float 64 number_float 0xCB uint 8 number_unsigned 0xCC uint 16 number_unsigned 0xCD uint 32 number_unsigned 0xCE uint 64 number_unsigned 0xCF int 8 number_integer 0xD0 int 16 number_integer 0xD1 int 32 number_integer 0xD2 int 64 number_integer 0xD3 str 8 string 0xD9 str 16 string 0xDA str 32 string 0xDB array 16 array 0xDC array 32 array 0xDD map 16 object 0xDE map 32 object 0xDF bin 8 binary 0xC4 bin 16 binary 0xC5 bin 32 binary 0xC6 ext 8 binary 0xC7 ext 16 binary 0xC8 ext 32 binary 0xC9 fixext 1 binary 0xD4 fixext 2 binary 0xD5 fixext 4 binary 0xD6 fixext 8 binary 0xD7 fixext 16 binary 0xD8 negative fixint number_integer 0xE0-0xFF <p>Info</p> <p>Any MessagePack output created by <code>to_msgpack</code> can be successfully parsed by <code>from_msgpack</code>.</p> Example <pre><code>#include &lt;iostream&gt;\n#include &lt;iomanip&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create byte vector\n    std::vector&lt;std::uint8_t&gt; v = {0x82, 0xa7, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x63,\n                                   0x74, 0xc3, 0xa6, 0x73, 0x63, 0x68, 0x65, 0x6d,\n                                   0x61, 0x00\n                                  };\n\n    // deserialize it with MessagePack\n    json j = json::from_msgpack(v);\n\n    // print the deserialized JSON value\n    std::cout &lt;&lt; std::setw(2) &lt;&lt; j &lt;&lt; std::endl;\n}\n</code></pre> <p>Output:</p> <pre><code>{\n  \"compact\": true,\n  \"schema\": 0\n}\n</code></pre>"},{"location":"features/binary_formats/ubjson/","title":"UBJSON","text":"<p>Universal Binary JSON (UBJSON) is a binary form directly imitating JSON, but requiring fewer bytes of data. It aims to achieve the generality of JSON, combined with being much easier to process than JSON.</p> <p>References</p> <ul> <li>UBJSON Website</li> </ul>"},{"location":"features/binary_formats/ubjson/#serialization","title":"Serialization","text":"<p>The library uses the following mapping from JSON values types to UBJSON types according to the UBJSON specification:</p> JSON value type value/range UBJSON type marker null <code>null</code> null <code>Z</code> boolean <code>true</code> true <code>T</code> boolean <code>false</code> false <code>F</code> number_integer -9223372036854775808..-2147483649 int64 <code>L</code> number_integer -2147483648..-32769 int32 <code>l</code> number_integer -32768..-129 int16 <code>I</code> number_integer -128..127 int8 <code>i</code> number_integer 128..255 uint8 <code>U</code> number_integer 256..32767 int16 <code>I</code> number_integer 32768..2147483647 int32 <code>l</code> number_integer 2147483648..9223372036854775807 int64 <code>L</code> number_unsigned 0..127 int8 <code>i</code> number_unsigned 128..255 uint8 <code>U</code> number_unsigned 256..32767 int16 <code>I</code> number_unsigned 32768..2147483647 int32 <code>l</code> number_unsigned 2147483648..9223372036854775807 int64 <code>L</code> number_unsigned 2147483649..18446744073709551615 high-precision <code>H</code> number_float any value float64 <code>D</code> string with shortest length indicator string <code>S</code> array see notes on optimized format array <code>[</code> object see notes on optimized format map <code>{</code> <p>Complete mapping</p> <p>The mapping is complete in the sense that any JSON value type can be converted to a UBJSON value.</p> <p>Any UBJSON output created by <code>to_ubjson</code> can be successfully parsed by <code>from_ubjson</code>.</p> <p>Size constraints</p> <p>The following values can not be converted to a UBJSON value:</p> <ul> <li>strings with more than 9223372036854775807 bytes (theoretical)</li> </ul> <p>Unused UBJSON markers</p> <p>The following markers are not used in the conversion:</p> <ul> <li><code>Z</code>: no-op values are not created.</li> <li><code>C</code>: single-byte strings are serialized with <code>S</code> markers.</li> </ul> <p>NaN/infinity handling</p> <p>If NaN or Infinity are stored inside a JSON number, they are serialized properly. This behavior differs from the <code>dump()</code> function which serializes NaN or Infinity to <code>null</code>.</p> <p>Optimized formats</p> <p>The optimized formats for containers are supported: Parameter <code>use_size</code> adds size information to the beginning of a container and removes the closing marker. Parameter <code>use_type</code> further checks whether all elements of a container have the same type and adds the type marker to the beginning of the container. The <code>use_type</code> parameter must only be used together with <code>use_size = true</code>.</p> <p>Note that <code>use_size = true</code> alone may result in larger representations - the benefit of this parameter is that the receiving side is immediately informed on the number of elements of the container.</p> <p>Binary values</p> <p>If the JSON data contains the binary type, the value stored is a list of integers, as suggested by the UBJSON documentation.  In particular, this means that serialization and the deserialization of a JSON containing binary values into UBJSON and back will result in a different JSON object.</p> Example <pre><code>#include &lt;iostream&gt;\n#include &lt;iomanip&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\nusing namespace nlohmann::literals;\n\n// function to print UBJSON's diagnostic format\nvoid print_byte(uint8_t byte)\n{\n    if (32 &lt; byte and byte &lt; 128)\n    {\n        std::cout &lt;&lt; (char)byte;\n    }\n    else\n    {\n        std::cout &lt;&lt; (int)byte;\n    }\n}\n\nint main()\n{\n    // create a JSON value\n    json j = R\"({\"compact\": true, \"schema\": false})\"_json;\n\n    // serialize it to UBJSON\n    std::vector&lt;std::uint8_t&gt; v = json::to_ubjson(j);\n\n    // print the vector content\n    for (auto&amp; byte : v)\n    {\n        print_byte(byte);\n    }\n    std::cout &lt;&lt; std::endl;\n\n    // create an array of numbers\n    json array = {1, 2, 3, 4, 5, 6, 7, 8};\n\n    // serialize it to UBJSON using default representation\n    std::vector&lt;std::uint8_t&gt; v_array = json::to_ubjson(array);\n    // serialize it to UBJSON using size optimization\n    std::vector&lt;std::uint8_t&gt; v_array_size = json::to_ubjson(array, true);\n    // serialize it to UBJSON using type optimization\n    std::vector&lt;std::uint8_t&gt; v_array_size_and_type = json::to_ubjson(array, true, true);\n\n    // print the vector contents\n    for (auto&amp; byte : v_array)\n    {\n        print_byte(byte);\n    }\n    std::cout &lt;&lt; std::endl;\n\n    for (auto&amp; byte : v_array_size)\n    {\n        print_byte(byte);\n    }\n    std::cout &lt;&lt; std::endl;\n\n    for (auto&amp; byte : v_array_size_and_type)\n    {\n        print_byte(byte);\n    }\n    std::cout &lt;&lt; std::endl;\n}\n</code></pre> <p>Output:</p> <pre><code>{i7compactTi6schemaF}\n[i1i2i3i4i5i6i7i8]\n[#i8i1i2i3i4i5i6i7i8\n[$i#i812345678\n</code></pre>"},{"location":"features/binary_formats/ubjson/#deserialization","title":"Deserialization","text":"<p>The library maps UBJSON types to JSON value types as follows:</p> UBJSON type JSON value type marker no-op no value, next value is read <code>N</code> null <code>null</code> <code>Z</code> false <code>false</code> <code>F</code> true <code>true</code> <code>T</code> float32 number_float <code>d</code> float64 number_float <code>D</code> uint8 number_unsigned <code>U</code> int8 number_integer <code>i</code> int16 number_integer <code>I</code> int32 number_integer <code>l</code> int64 number_integer <code>L</code> string string <code>S</code> char string <code>C</code> array array (optimized values are supported) <code>[</code> object object (optimized values are supported) <code>{</code> <p>Complete mapping</p> <p>The mapping is complete in the sense that any UBJSON value can be converted to a JSON value.</p> Example <pre><code>#include &lt;iostream&gt;\n#include &lt;iomanip&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // create byte vector\n    std::vector&lt;std::uint8_t&gt; v = {0x7B, 0x69, 0x07, 0x63, 0x6F, 0x6D, 0x70, 0x61,\n                                   0x63, 0x74, 0x54, 0x69, 0x06, 0x73, 0x63, 0x68,\n                                   0x65, 0x6D, 0x61, 0x69, 0x00, 0x7D\n                                  };\n\n    // deserialize it with UBJSON\n    json j = json::from_ubjson(v);\n\n    // print the deserialized JSON value\n    std::cout &lt;&lt; std::setw(2) &lt;&lt; j &lt;&lt; std::endl;\n}\n</code></pre> <p>Output:</p> <pre><code>{\n  \"compact\": true,\n  \"schema\": 0\n}\n</code></pre>"},{"location":"features/element_access/","title":"Element Access","text":"<p>There are many ways elements in a JSON value can be accessed:</p> <ul> <li>unchecked access via <code>operator[]</code></li> <li>checked access via <code>at</code></li> <li>access with default value via <code>value</code></li> <li>iterators</li> <li>JSON pointers</li> </ul>"},{"location":"features/element_access/checked_access/","title":"Checked access: at","text":""},{"location":"features/element_access/checked_access/#overview","title":"Overview","text":"<p>The <code>at</code> member function performs checked access; that is, it returns a reference to the desired value if it exists and throws a <code>basic_json::out_of_range</code> exception otherwise.</p> Read access <p>Consider the following JSON value:</p> <pre><code>{\n    \"name\": \"Mary Smith\",\n    \"age\": 42,\n    \"hobbies\": [\"hiking\", \"reading\"]\n}\n</code></pre> <p>Assume the value is parsed to a <code>json</code> variable <code>j</code>.</p> expression value <code>j</code> <code>{\"name\": \"Mary Smith\", \"age\": 42, \"hobbies\": [\"hiking\", \"reading\"]}</code> <code>j.at(\"name\")</code> <code>\"Mary Smith\"</code> <code>j.at(\"age\")</code> <code>42</code> <code>j.at(\"hobbies\")</code> <code>[\"hiking\", \"reading\"]</code> <code>j.at(\"hobbies\").at(0)</code> <code>\"hiking\"</code> <code>j.at(\"hobbies\").at(1)</code> <code>\"reading\"</code> <p>The return value is a reference, so it can be modified by the original value.</p> Write access <pre><code>j.at(\"name\") = \"John Smith\";\n</code></pre> <p>This code produces the following JSON value:</p> <pre><code>{\n    \"name\": \"John Smith\",\n    \"age\": 42,\n    \"hobbies\": [\"hiking\", \"reading\"]\n}\n</code></pre> <p>When accessing an invalid index (i.e., an index greater than or equal to the array size) or the passed object key is non-existing, an exception is thrown.</p> Accessing via invalid index or missing key <pre><code>j.at(\"hobbies\").at(3) = \"cooking\";\n</code></pre> <p>This code produces the following exception:</p> <pre><code>[json.exception.out_of_range.401] array index 3 is out of range\n</code></pre> <p>When you extended diagnostic messages are enabled by defining <code>JSON_DIAGNOSTICS</code>, the exception further gives information where the key or index is missing or out of range.</p> <pre><code>[json.exception.out_of_range.401] (/hobbies) array index 3 is out of range\n</code></pre>"},{"location":"features/element_access/checked_access/#notes","title":"Notes","text":"<p>Exceptions</p> <ul> <li><code>at</code> can only be used with objects (with a string argument) or with arrays (with a   numeric argument). For other types, a <code>basic_json::type_error</code>   is thrown.</li> <li><code>basic_json::out_of_range</code> exception exceptions are thrown if the   provided key is not found in an object or the provided index is invalid.</li> </ul>"},{"location":"features/element_access/checked_access/#summary","title":"Summary","text":"scenario non-const value const value access to existing object key reference to existing value is returned const reference to existing value is returned access to valid array index reference to existing value is returned const reference to existing value is returned access to non-existing object key <code>basic_json::out_of_range</code> exception is thrown <code>basic_json::out_of_range</code> exception is thrown access to invalid array index <code>basic_json::out_of_range</code> exception is thrown <code>basic_json::out_of_range</code> exception is thrown"},{"location":"features/element_access/default_value/","title":"Access with default value: value","text":""},{"location":"features/element_access/default_value/#overview","title":"Overview","text":"<p>In many situations, such as configuration files, missing values are not exceptional, but may be treated as if a default value was present. For this case, use <code>value(key, default_value)</code> which takes the key you want to access and a default value in case there is no value stored with that key.</p>"},{"location":"features/element_access/default_value/#example","title":"Example","text":"Example <p>Consider the following JSON value:</p> <pre><code>{\n    \"logOutput\": \"result.log\",\n    \"append\": true\n}\n</code></pre> <p>Assume the value is parsed to a <code>json</code> variable <code>j</code>.</p> expression value <code>j</code> <code>{\"logOutput\": \"result.log\", \"append\": true}</code> <code>j.value(\"logOutput\", \"logfile.log\")</code> <code>\"result.log\"</code> <code>j.value(\"append\", true)</code> <code>true</code> <code>j.value(\"append\", false)</code> <code>true</code> <code>j.value(\"logLevel\", \"verbose\")</code> <code>\"verbose\"</code>"},{"location":"features/element_access/default_value/#notes","title":"Notes","text":"<p>Exceptions</p> <ul> <li><code>value</code> can only be used with objects. For other types, a <code>basic_json::type_error</code> is thrown.</li> </ul> <p>Return type</p> <p>The value function is a template, and the return type of the function is determined by the type of the provided default value unless otherwise specified. This can have unexpected effects. In the example below, we store a 64-bit unsigned integer. We get exactly that value when using <code>operator[]</code>. However, when we call <code>value</code> and provide <code>0</code> as default value, then <code>-1</code> is returned. The occurs, because <code>0</code> has type <code>int</code> which overflows when handling the value <code>18446744073709551615</code>.</p> <p>To address this issue, either provide a correctly typed default value or use the template parameter to specify the desired return type. Note that this issue occurs even when a value is stored at the provided key, and the default value is not used as the return value.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    json j = json::parse(R\"({\"uint64\": 18446744073709551615})\");\n\n    std::cout &lt;&lt; \"operator[]:                \" &lt;&lt; j[\"uint64\"] &lt;&lt; '\\n'\n              &lt;&lt; \"default value (int):       \" &lt;&lt; j.value(\"uint64\", 0) &lt;&lt; '\\n'\n              &lt;&lt; \"default value (uint64_t):  \" &lt;&lt; j.value(\"uint64\", std::uint64_t(0)) &lt;&lt; '\\n'\n              &lt;&lt; \"explicit return value type: \" &lt;&lt; j.value&lt;std::uint64_t&gt;(\"uint64\", 0) &lt;&lt; '\\n';\n}\n</code></pre> <p>Output:</p> <pre><code>operator[]:                18446744073709551615\ndefault value (int):       -1\ndefault value (uint64_t):  18446744073709551615\nexplicit return value type: 18446744073709551615\n</code></pre>"},{"location":"features/element_access/default_value/#see-also","title":"See also","text":"<ul> <li><code>value</code> for access with default value</li> <li>documentation on checked access</li> </ul>"},{"location":"features/element_access/unchecked_access/","title":"Unchecked access: operator[]","text":""},{"location":"features/element_access/unchecked_access/#overview","title":"Overview","text":"<p>Elements in a JSON object and a JSON array can be accessed via <code>operator[]</code> similar to a <code>std::map</code> and a <code>std::vector</code>, respectively.</p> Read access <p>Consider the following JSON value:</p> <pre><code>{\n    \"name\": \"Mary Smith\",\n    \"age\": 42,\n    \"hobbies\": [\"hiking\", \"reading\"]\n}\n</code></pre> <p>Assume the value is parsed to a <code>json</code> variable <code>j</code>.</p> expression value <code>j</code> <code>{\"name\": \"Mary Smith\", \"age\": 42, \"hobbies\": [\"hiking\", \"reading\"]}</code> <code>j[\"name\"]</code> <code>\"Mary Smith\"</code> <code>j[\"age\"]</code> <code>42</code> <code>j[\"hobbies\"]</code> <code>[\"hiking\", \"reading\"]</code> <code>j[\"hobbies\"][0]</code> <code>\"hiking\"</code> <code>j[\"hobbies\"][1]</code> <code>\"reading\"</code> <p>The return value is a reference, so it can modify the original value. In case the passed object key is non-existing, a <code>null</code> value is inserted which can immediately be overwritten.</p> Write access <pre><code>j[\"name\"] = \"John Smith\";\nj[\"maidenName\"] = \"Jones\";\n</code></pre> <p>This code produces the following JSON value:</p> <pre><code>{\n    \"name\": \"John Smith\",\n    \"maidenName\": \"Jones\",\n    \"age\": 42,\n    \"hobbies\": [\"hiking\", \"reading\"]\n}\n</code></pre> <p>When accessing an invalid index (i.e., an index greater than or equal to the array size), the JSON array is resized such that the passed index is the new maximal index. Intermediate values are filled with <code>null</code>.</p> Filling up arrays with <code>null</code> values <pre><code>j[\"hobbies\"][0] = \"running\";\nj[\"hobbies\"][3] = \"cooking\";\n</code></pre> <p>This code produces the following JSON value:</p> <pre><code>{\n    \"name\": \"John Smith\",\n    \"maidenName\": \"Jones\",\n    \"age\": 42,\n    \"hobbies\": [\"running\", \"reading\", null, \"cooking\"]\n}\n</code></pre>"},{"location":"features/element_access/unchecked_access/#notes","title":"Notes","text":"<p>Design rationale</p> <p>The library behaves differently to <code>std::vector</code> and <code>std::map</code>:</p> <ul> <li><code>std::vector::operator[]</code> never inserts a new element.</li> <li><code>std::map::operator[]</code> is not available for const values.</li> </ul> <p>The type <code>json</code> wraps all JSON value types. It would be impossible to remove <code>operator[]</code> for const objects. At the same time, inserting elements for non-const objects is really convenient as it avoids awkward <code>insert</code> calls. To this end, we decided to have an inserting non-const behavior for both arrays and objects.</p> <p>Info</p> <p>The access is unchecked. In case the passed object key does not exist or the passed array index is invalid, no exception is thrown.</p> <p>Danger</p> <ul> <li>It is undefined behavior to access a const object with a non-existing key.</li> <li>It is undefined behavior to access a const array with an invalid index.</li> <li>In debug mode, an assertion will fire in both cases. You can disable assertions by defining the preprocessor   symbol <code>NDEBUG</code> or redefine the macro <code>JSON_ASSERT(x)</code>. See the documentation   on runtime assertions for more information.</li> </ul> <p>Exceptions</p> <p><code>operator[]</code> can only be used with objects (with a string argument) or with arrays (with a numeric argument). For other types, a <code>basic_json::type_error</code> is thrown.</p>"},{"location":"features/element_access/unchecked_access/#summary","title":"Summary","text":"scenario non-const value const value access to existing object key reference to existing value is returned const reference to existing value is returned access to valid array index reference to existing value is returned const reference to existing value is returned access to non-existing object key reference to newly inserted <code>null</code> value is returned undefined behavior; runtime assertion in debug mode access to invalid array index reference to newly inserted <code>null</code> value is returned; any index between previous maximal index and passed index are filled with <code>null</code> undefined behavior; runtime assertion in debug mode"},{"location":"features/parsing/","title":"Parsing","text":"<p>Note</p> <p>This page is under construction.</p>"},{"location":"features/parsing/#input","title":"Input","text":""},{"location":"features/parsing/#sax-vs-dom-parsing","title":"SAX vs. DOM parsing","text":""},{"location":"features/parsing/#exceptions","title":"Exceptions","text":"<p>See parsing and exceptions.</p>"},{"location":"features/parsing/json_lines/","title":"JSON Lines","text":"<p>The JSON Lines format is a text format of newline-delimited JSON. In particular:</p> <ol> <li>The input must be UTF-8 encoded.</li> <li>Every line must be a valid JSON value.</li> <li>The line separator must be <code>\\n</code>. As <code>\\r</code> is silently ignored, <code>\\r\\n</code> is also supported.</li> <li>The final character may be <code>\\n</code>, but is not required to be one.</li> </ol> <p>JSON Text example</p> <pre><code>{\"name\": \"Gilbert\", \"wins\": [[\"straight\", \"7\u2663\"], [\"one pair\", \"10\u2665\"]]}\n{\"name\": \"Alexa\", \"wins\": [[\"two pair\", \"4\u2660\"], [\"two pair\", \"9\u2660\"]]}\n{\"name\": \"May\", \"wins\": []}\n{\"name\": \"Deloise\", \"wins\": [[\"three of a kind\", \"5\u2663\"]]}\n</code></pre> <p>JSON Lines input with more than one value is treated as invalid JSON by the <code>parse</code> or <code>accept</code> functions. To process it line by line, functions like <code>std::getline</code> can be used:</p> <p>Example: Parse JSON Text input line by line</p> <p>The example below demonstrates how JSON Lines can be processed.</p> <pre><code>#include &lt;sstream&gt;\n#include &lt;iostream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // JSON Lines (see https://jsonlines.org)\n    std::stringstream input;\n    input &lt;&lt; R\"({\"name\": \"Gilbert\", \"wins\": [[\"straight\", \"7\u2663\"], [\"one pair\", \"10\u2665\"]]}\n{\"name\": \"Alexa\", \"wins\": [[\"two pair\", \"4\u2660\"], [\"two pair\", \"9\u2660\"]]}\n{\"name\": \"May\", \"wins\": []}\n{\"name\": \"Deloise\", \"wins\": [[\"three of a kind\", \"5\u2663\"]]}\n)\";\n\n    std::string line;\n    while (std::getline(input, line))\n    {\n        std::cout &lt;&lt; json::parse(line) &lt;&lt; std::endl;\n    }\n}\n</code></pre> <p>Output:</p> <pre><code>{\"name\":\"Gilbert\",\"wins\":[[\"straight\",\"7\u2663\"],[\"one pair\",\"10\u2665\"]]}\n{\"name\":\"Alexa\",\"wins\":[[\"two pair\",\"4\u2660\"],[\"two pair\",\"9\u2660\"]]}\n{\"name\":\"May\",\"wins\":[]}\n{\"name\":\"Deloise\",\"wins\":[[\"three of a kind\",\"5\u2663\"]]}\n</code></pre> <p>Note</p> <p>Using <code>operator&gt;&gt;</code> like</p> <pre><code>json j;\nwhile (input &gt;&gt; j)\n{\n    std::cout &lt;&lt; j &lt;&lt; std::endl;\n}\n</code></pre> <p>with a JSON Lines input does not work, because the parser will try to parse one value after the last one.</p>"},{"location":"features/parsing/parse_exceptions/","title":"Parsing and Exceptions","text":"<p>When the input is not valid JSON, an exception of type <code>parse_error</code> is thrown. This exception contains the position in the input where the error occurred, together with a diagnostic message and the last read input token. The exceptions page contains a list of examples for parse error exceptions. In case you process untrusted input, always enclose your code with a <code>try</code>/<code>catch</code> block, like</p> <pre><code>json j;\ntry\n{\n    j = json::parse(my_input);\n}\ncatch (json::parse_error&amp; ex)\n{\n    std::cerr &lt;&lt; \"parse error at byte \" &lt;&lt; ex.byte &lt;&lt; std::endl;\n}\n</code></pre> <p>In case exceptions are undesired or not supported by the environment, there are different ways to proceed:</p>"},{"location":"features/parsing/parse_exceptions/#switch-off-exceptions","title":"Switch off exceptions","text":"<p>The <code>parse()</code> function accepts a <code>bool</code> parameter <code>allow_exceptions</code> which controls whether an exception is thrown when a parse error occurs (<code>true</code>, default) or whether a discarded value should be returned (<code>false</code>).</p> <pre><code>json j = json::parse(my_input, nullptr, false);\nif (j.is_discarded())\n{\n    std::cerr &lt;&lt; \"parse error\" &lt;&lt; std::endl;\n}\n</code></pre> <p>Note there is no diagnostic information available in this scenario.</p>"},{"location":"features/parsing/parse_exceptions/#use-accept-function","title":"Use accept() function","text":"<p>Alternatively, function <code>accept()</code> can be used which does not return a <code>json</code> value, but a <code>bool</code> indicating whether the input is valid JSON.</p> <pre><code>if (!json::accept(my_input))\n{\n    std::cerr &lt;&lt; \"parse error\" &lt;&lt; std::endl;\n}\n</code></pre> <p>Again, there is no diagnostic information available.</p>"},{"location":"features/parsing/parse_exceptions/#user-defined-sax-interface","title":"User-defined SAX interface","text":"<p>Finally, you can implement the SAX interface and decide what should happen in case of a parse error.</p> <p>This function has the following interface:</p> <pre><code>bool parse_error(std::size_t position,\n                 const std::string&amp; last_token,\n                 const json::exception&amp; ex);\n</code></pre> <p>The return value indicates whether the parsing should continue, so the function should usually return <code>false</code>.</p> Example <pre><code>#include &lt;iostream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nclass sax_no_exception : public nlohmann::detail::json_sax_dom_parser&lt;json&gt;\n{\n  public:\n    sax_no_exception(json&amp; j)\n      : nlohmann::detail::json_sax_dom_parser&lt;json&gt;(j, false)\n    {}\n\n    bool parse_error(std::size_t position,\n                     const std::string&amp; last_token,\n                     const json::exception&amp; ex)\n    {\n        std::cerr &lt;&lt; \"parse error at input byte \" &lt;&lt; position &lt;&lt; \"\\n\"\n                  &lt;&lt; ex.what() &lt;&lt; \"\\n\"\n                  &lt;&lt; \"last read: \\\"\" &lt;&lt; last_token &lt;&lt; \"\\\"\"\n                  &lt;&lt; std::endl;\n        return false;\n    }\n};\n\nint main()\n{\n    std::string myinput = \"[1,2,3,]\";\n\n    json result;\n    sax_no_exception sax(result);\n\n    bool parse_result = json::sax_parse(myinput, &amp;sax);\n    if (!parse_result)\n    {\n        std::cerr &lt;&lt; \"parsing unsuccessful!\" &lt;&lt; std::endl;\n    }\n\n    std::cout &lt;&lt; \"parsed value: \" &lt;&lt; result &lt;&lt; std::endl;\n}\n</code></pre> <p>Output:</p> <pre><code>parse error at input byte 8\n[json.exception.parse_error.101] parse error at line 1, column 8: syntax error while parsing value - unexpected ']'; expected '[', '{', or a literal\nlast read: \"3,]\"\nparsing unsuccessful!\nparsed value: [1,2,3]\n</code></pre>"},{"location":"features/parsing/parser_callbacks/","title":"Parser Callbacks","text":""},{"location":"features/parsing/parser_callbacks/#overview","title":"Overview","text":"<p>With a parser callback function, the result of parsing a JSON text can be influenced. When passed to <code>parse</code>, it is called on certain events (passed as <code>parse_event_t</code> via parameter <code>event</code>) with a set recursion depth <code>depth</code> and context JSON value <code>parsed</code>. The return value of the callback function is a boolean indicating whether the element that emitted the callback shall be kept or not.</p> <p>The type of the callback function is:</p> <pre><code>template&lt;typename BasicJsonType&gt;\nusing parser_callback_t =\n    std::function&lt;bool(int depth, parse_event_t event, BasicJsonType&amp; parsed)&gt;;\n</code></pre>"},{"location":"features/parsing/parser_callbacks/#callback-event-types","title":"Callback event types","text":"<p>We distinguish six scenarios (determined by the event type) in which the callback function can be called. The following table describes the values of the parameters <code>depth</code>, <code>event</code>, and <code>parsed</code>.</p> parameter <code>event</code> description parameter <code>depth</code> parameter <code>parsed</code> <code>parse_event_t::object_start</code> the parser read <code>{</code> and started to process a JSON object depth of the parent of the JSON object a JSON value with type discarded <code>parse_event_t::key</code> the parser read a key of a value in an object depth of the currently parsed JSON object a JSON string containing the key <code>parse_event_t::object_end</code> the parser read <code>}</code> and finished processing a JSON object depth of the parent of the JSON object the parsed JSON object <code>parse_event_t::array_start</code> the parser read <code>[</code> and started to process a JSON array depth of the parent of the JSON array a JSON value with type discarded <code>parse_event_t::array_end</code> the parser read <code>]</code> and finished processing a JSON array depth of the parent of the JSON array the parsed JSON array <code>parse_event_t::value</code> the parser finished reading a JSON value depth of the value the parsed JSON value Example <p>When parsing the following JSON text,</p> <pre><code>{\n    \"name\": \"Berlin\",\n    \"location\": [\n        52.519444,\n        13.406667\n    ]\n}\n</code></pre> <p>these calls are made to the callback function:</p> event depth parsed <code>object_start</code> 0 discarded <code>key</code> 1 <code>\"name\"</code> <code>value</code> 1 <code>\"Berlin\"</code> <code>key</code> 1 <code>\"location\"</code> <code>array_start</code> 1 discarded <code>value</code> 2 <code>52.519444</code> <code>value</code> 2 <code>13.406667</code> <code>array_end</code> 1 <code>[52.519444,13.406667]</code> <code>object_end</code> 0 <code>{\"location\":[52.519444,13.406667],\"name\":\"Berlin\"}</code>"},{"location":"features/parsing/parser_callbacks/#return-value","title":"Return value","text":"<p>Discarding a value (i.e., returning <code>false</code>) has different effects depending on the context in which the function was called:</p> <ul> <li>Discarded values in structured types are skipped. That is, the parser will behave as if the discarded value was never   read.</li> <li>In case a value outside a structured type is skipped, it is replaced with <code>null</code>. This case happens if the   top-level element is skipped.</li> </ul> Example <p>The example below demonstrates the <code>parse()</code> function with and without callback function.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;iomanip&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    // a JSON text\n    auto text = R\"(\n    {\n        \"Image\": {\n            \"Width\":  800,\n            \"Height\": 600,\n            \"Title\":  \"View from 15th Floor\",\n            \"Thumbnail\": {\n                \"Url\":    \"http://www.example.com/image/481989943\",\n                \"Height\": 125,\n                \"Width\":  100\n            },\n            \"Animated\" : false,\n            \"IDs\": [116, 943, 234, 38793]\n        }\n    }\n    )\";\n\n    // parse and serialize JSON\n    json j_complete = json::parse(text);\n    std::cout &lt;&lt; std::setw(4) &lt;&lt; j_complete &lt;&lt; \"\\n\\n\";\n\n    // define parser callback\n    json::parser_callback_t cb = [](int depth, json::parse_event_t event, json &amp; parsed)\n    {\n        // skip object elements with key \"Thumbnail\"\n        if (event == json::parse_event_t::key and parsed == json(\"Thumbnail\"))\n        {\n            return false;\n        }\n        else\n        {\n            return true;\n        }\n    };\n\n    // parse (with callback) and serialize JSON\n    json j_filtered = json::parse(text, cb);\n    std::cout &lt;&lt; std::setw(4) &lt;&lt; j_filtered &lt;&lt; '\\n';\n}\n</code></pre> <p>Output:</p> <pre><code>{\n    \"Image\": {\n        \"Animated\": false,\n        \"Height\": 600,\n        \"IDs\": [\n            116,\n            943,\n            234,\n            38793\n        ],\n        \"Thumbnail\": {\n            \"Height\": 125,\n            \"Url\": \"http://www.example.com/image/481989943\",\n            \"Width\": 100\n        },\n        \"Title\": \"View from 15th Floor\",\n        \"Width\": 800\n    }\n}\n\n{\n    \"Image\": {\n        \"Animated\": false,\n        \"Height\": 600,\n        \"IDs\": [\n            116,\n            943,\n            234,\n            38793\n        ],\n        \"Title\": \"View from 15th Floor\",\n        \"Width\": 800\n    }\n}\n</code></pre>"},{"location":"features/parsing/sax_interface/","title":"SAX Interface","text":"<p>The library uses a SAX-like interface with the following functions:</p> <pre><code>classDiagram\n\nclass sax_t [\"json::sax_t\"] {\n    &lt;&lt;interface&gt;&gt;\n    +bool null()*\n\n    +bool boolean(bool val)*\n\n    +bool number_integer(number_integer_t val)*\n    +bool number_unsigned(number_unsigned_t val)*\n\n    +bool number_float(number_float_t val, const string_t&amp; s)*\n\n    +bool string(string_t&amp; val)*\n    +bool binary(binary_t&amp; val)*\n\n    +bool start_object(std::size_t elements)*\n    +bool end_object()*\n    +bool start_array(std::size_t elements)*\n    +bool end_array()*\n    +bool key(string_t&amp; val)*\n\n    +bool parse_error(std::size_t position, const std::string&amp; last_token, const json::exception&amp; ex)*\n}</code></pre> <pre><code>// called when null is parsed\nbool null();\n\n// called when a boolean is parsed; value is passed\nbool boolean(bool val);\n\n// called when a signed or unsigned integer number is parsed; value is passed\nbool number_integer(number_integer_t val);\nbool number_unsigned(number_unsigned_t val);\n\n// called when a floating-point number is parsed; value and original string is passed\nbool number_float(number_float_t val, const string_t&amp; s);\n\n// called when a string is parsed; value is passed and can be safely moved away\nbool string(string_t&amp; val);\n// called when a binary value is parsed; value is passed and can be safely moved away\nbool binary(binary_t&amp; val);\n\n// called when an object or array begins or ends, resp. The number of elements is passed (or -1 if not known)\nbool start_object(std::size_t elements);\nbool end_object();\nbool start_array(std::size_t elements);\nbool end_array();\n// called when an object key is parsed; value is passed and can be safely moved away\nbool key(string_t&amp; val);\n\n// called when a parse error occurs; byte position, the last token, and an exception is passed\nbool parse_error(std::size_t position, const std::string&amp; last_token, const json::exception&amp; ex);\n</code></pre> <p>The return value of each function determines whether parsing should proceed.</p> <p>To implement your own SAX handler, proceed as follows:</p> <ol> <li>Implement the SAX interface in a class. You can use class <code>nlohmann::json_sax&lt;json&gt;</code> as base class, but you can also use any class where the functions described above are implemented and public.</li> <li>Create an object of your SAX interface class, e.g. <code>my_sax</code>.</li> <li>Call <code>bool json::sax_parse(input, &amp;my_sax);</code> where the first parameter can be any input like a string or an input stream and the second parameter is a pointer to your SAX interface.</li> </ol> <p>Note the <code>sax_parse</code> function only returns a <code>bool</code> indicating the result of the last executed SAX event. It does not return <code>json</code> value - it is up to you to decide what to do with the SAX events. Furthermore, no exceptions are thrown in case of a parse error - it is up to you what to do with the exception object passed to your <code>parse_error</code> implementation. Internally, the SAX interface is used for the DOM parser (class <code>json_sax_dom_parser</code>) as well as the acceptor (<code>json_sax_acceptor</code>), see file <code>json_sax.hpp</code>.</p>"},{"location":"features/parsing/sax_interface/#see-also","title":"See also","text":"<ul> <li>json_sax - documentation of the SAX interface</li> <li>sax_parse - SAX parser</li> </ul>"},{"location":"features/types/","title":"Types","text":"<p>This page gives an overview of how JSON values are stored and how this can be configured.</p>"},{"location":"features/types/#overview","title":"Overview","text":"<p>By default, JSON values are stored as follows:</p> JSON type C++ type object <code>std::map&lt;std::string, basic_json&gt;</code> array <code>std::vector&lt;basic_json&gt;</code> null <code>std::nullptr_t</code> string <code>std::string</code> boolean <code>bool</code> number <code>std::int64_t</code>, <code>std::uint64_t</code>, and <code>double</code> <p>Note there are three different types for numbers - when parsing JSON text, the best fitting type is chosen.</p>"},{"location":"features/types/#storage","title":"Storage","text":"<pre><code>classDiagram\n\nclass value_t {\n    &lt;&lt;enumeration&gt;&gt;\n    null\n    object\n    array\n    string\n    boolean\n    number_integer\n    number_unsigned\n    number_float\n    binary\n    discarded\n}\n\nclass json_value {\n    &lt;&lt;union&gt;&gt;\n    object_t* object\n    array_t* array\n    string_t* string\n    binary_t* binary\n    boolean_t boolean\n    number_integer_t number_integer\n    number_unsigned_t number_unsigned\n    number_float_t number_float\n}\n\nclass basic_json {\n    -value_t m_type\n    -json_value m_value\n    +typedef object_t\n    +typedef array_t\n    +typedef binary_t\n    +typedef boolean_t\n    +typedef number_integer_t\n    +typedef number_unsigned_t\n    +typedef number_float_t\n}\n\nbasic_json .. json_value\nbasic_json .. value_t</code></pre>"},{"location":"features/types/#template-arguments","title":"Template arguments","text":"<p>The data types to store a JSON value are derived from the template arguments passed to class <code>basic_json</code>:</p> <pre><code>template&lt;\n    template&lt;typename U, typename V, typename... Args&gt; class ObjectType = std::map,\n    template&lt;typename U, typename... Args&gt; class ArrayType = std::vector,\n    class StringType = std::string,\n    class BooleanType = bool,\n    class NumberIntegerType = std::int64_t,\n    class NumberUnsignedType = std::uint64_t,\n    class NumberFloatType = double,\n    template&lt;typename U&gt; class AllocatorType = std::allocator,\n    template&lt;typename T, typename SFINAE = void&gt; class JSONSerializer = adl_serializer,\n    class BinaryType = std::vector&lt;std::uint8_t&gt;\n&gt;\nclass basic_json;\n</code></pre> <p>Type <code>json</code> is an alias for <code>basic_json&lt;&gt;</code> and uses the default types.</p> <p>From the template arguments, the following types are derived:</p> <pre><code>using object_comparator_t = std::less&lt;&gt;;\nusing object_t = ObjectType&lt;StringType, basic_json, object_comparator_t,\n                   AllocatorType&lt;std::pair&lt;const StringType, basic_json&gt;&gt;&gt;;\n\nusing array_t = ArrayType&lt;basic_json, AllocatorType&lt;basic_json&gt;&gt;;\n\nusing string_t = StringType;\n\nusing boolean_t = BooleanType;\n\nusing number_integer_t = NumberIntegerType;\nusing number_unsigned_t = NumberUnsignedType;\nusing number_float_t = NumberFloatType;\n\nusing binary_t = nlohmann::byte_container_with_subtype&lt;BinaryType&gt;;\n</code></pre>"},{"location":"features/types/#objects","title":"Objects","text":"<p>RFC 8259 describes JSON objects as follows:</p> <p>An object is an unordered collection of zero or more name/value pairs, where a name is a string and a value is a string, number, boolean, null, object, or array.</p>"},{"location":"features/types/#default-type","title":"Default type","text":"<p>With the default values for ObjectType (<code>std::map</code>), StringType (<code>std::string</code>), and AllocatorType (<code>std::allocator</code>), the default value for <code>object_t</code> is:</p> <pre><code>std::map&lt;\n  std::string, // key_type\n  basic_json, // value_type\n  std::less&lt;&gt;, // key_compare\n  std::allocator&lt;std::pair&lt;const std::string, basic_json&gt;&gt; // allocator_type\n&gt;\n</code></pre>"},{"location":"features/types/#behavior","title":"Behavior","text":"<p>The choice of <code>object_t</code> influences the behavior of the JSON class. With the default type, objects have the following behavior:</p> <ul> <li>When all names are unique, objects will be interoperable in the sense that all software implementations receiving that object will agree on the name-value mappings.</li> <li>When the names within an object are not unique, it is unspecified which one of the values for a given key will be chosen. For instance, <code>{\"key\": 2, \"key\": 1}</code> could be equal to either <code>{\"key\": 1}</code> or <code>{\"key\": 2}</code>.</li> <li>Internally, name/value pairs are stored in lexicographical order of the names. Objects will also be serialized (see <code>dump</code>) in this order. For instance, both <code>{\"b\": 1, \"a\": 2}</code> and <code>{\"a\": 2, \"b\": 1}</code> will be stored and serialized as <code>{\"a\": 2, \"b\": 1}</code>.</li> <li>When comparing objects, the order of the name/value pairs is irrelevant. This makes objects interoperable in the sense that they will not be affected by these differences. For instance, <code>{\"b\": 1, \"a\": 2}</code> and <code>{\"a\": 2, \"b\": 1}</code> will be treated as equal.</li> </ul>"},{"location":"features/types/#key-order","title":"Key order","text":"<p>The order name/value pairs are added to the object are not preserved by the library. Therefore, iterating an object may return name/value pairs in a different order than they were originally stored. In fact, keys will be traversed in alphabetical order as <code>std::map</code> with <code>std::less</code> is used by default. Please note this behavior conforms to RFC 8259, because any order implements the specified \"unordered\" nature of JSON objects.</p>"},{"location":"features/types/#limits","title":"Limits","text":"<p>RFC 8259 specifies:</p> <p>An implementation may set limits on the maximum depth of nesting.</p> <p>In this class, the object's limit of nesting is not explicitly constrained. However, a maximum depth of nesting may be introduced by the compiler or runtime environment. A theoretical limit can be queried by calling the <code>max_size</code> function of a JSON object.</p>"},{"location":"features/types/#storage_1","title":"Storage","text":"<p>Objects are stored as pointers in a <code>basic_json</code> type. That is, for any access to object values, a pointer of type <code>object_t*</code> must be dereferenced.</p>"},{"location":"features/types/#arrays","title":"Arrays","text":"<p>RFC 8259 describes JSON arrays as follows:</p> <p>An array is an ordered sequence of zero or more values.</p>"},{"location":"features/types/#default-type_1","title":"Default type","text":"<p>With the default values for ArrayType (<code>std::vector</code>) and AllocatorType (<code>std::allocator</code>), the default value for <code>array_t</code> is:</p> <pre><code>std::vector&lt;\n  basic_json, // value_type\n  std::allocator&lt;basic_json&gt; // allocator_type\n&gt;\n</code></pre>"},{"location":"features/types/#limits_1","title":"Limits","text":"<p>RFC 8259 specifies:</p> <p>An implementation may set limits on the maximum depth of nesting.</p> <p>In this class, the array's limit of nesting is not explicitly constrained. However, a maximum depth of nesting may be introduced by the compiler or runtime environment. A theoretical limit can be queried by calling the <code>max_size</code> function of a JSON array.</p>"},{"location":"features/types/#storage_2","title":"Storage","text":"<p>Arrays are stored as pointers in a <code>basic_json</code> type. That is, for any access to array values, a pointer of type <code>array_t*</code> must be dereferenced.</p>"},{"location":"features/types/#strings","title":"Strings","text":"<p>RFC 8259 describes JSON strings as follows:</p> <p>A string is a sequence of zero or more Unicode characters.</p> <p>Unicode values are split by the JSON class into byte-sized characters during deserialization.</p>"},{"location":"features/types/#default-type_2","title":"Default type","text":"<p>With the default values for StringType (<code>std::string</code>), the default value for <code>string_t</code> is <code>std::string</code>.</p>"},{"location":"features/types/#encoding","title":"Encoding","text":"<p>Strings are stored in UTF-8 encoding. Therefore, functions like <code>std::string::size()</code> or <code>std::string::length()</code> return the number of bytes in the string rather than the number of characters or glyphs.</p>"},{"location":"features/types/#string-comparison","title":"String comparison","text":"<p>RFC 8259 states:</p> <p>Software implementations are typically required to test names of object members for equality. Implementations that transform the textual representation into sequences of Unicode code units and then perform the comparison numerically, code unit by code unit are interoperable in the sense that implementations will agree in all cases on equality or inequality of two strings. For example, implementations that compare strings with escaped characters unconverted may incorrectly find that <code>\"a\\\\b\"</code> and <code>\"a\\u005Cb\"</code> are not equal.</p> <p>This implementation is interoperable as it does compare strings code unit by code unit.</p>"},{"location":"features/types/#storage_3","title":"Storage","text":"<p>String values are stored as pointers in a <code>basic_json</code> type. That is, for any access to string values, a pointer of type <code>string_t*</code> must be dereferenced.</p>"},{"location":"features/types/#booleans","title":"Booleans","text":"<p>RFC 8259 implicitly describes a boolean as a type which differentiates the two literals <code>true</code> and <code>false</code>.</p>"},{"location":"features/types/#default-type_3","title":"Default type","text":"<p>With the default values for BooleanType (<code>bool</code>), the default value for <code>boolean_t</code> is <code>bool</code>.</p>"},{"location":"features/types/#storage_4","title":"Storage","text":"<p>Boolean values are stored directly inside a <code>basic_json</code> type.</p>"},{"location":"features/types/#numbers","title":"Numbers","text":"<p>See the number handling article for a detailed discussion on how numbers are handled by this library.</p> <p>RFC 8259 describes numbers as follows:</p> <p>The representation of numbers is similar to that used in most programming languages. A number is represented in base 10 using decimal digits. It contains an integer component that may be prefixed with an optional minus sign, which may be followed by a fraction part and/or an exponent part. Leading zeros are not allowed. (...) Numeric values that cannot be represented in the grammar below (such as Infinity and NaN) are not permitted.</p> <p>This description includes both integer and floating-point numbers. However, C++ allows more precise storage if it is known whether the number is a signed integer, an unsigned integer, or a floating-point number. Therefore, three different types, <code>number_integer_t</code>, <code>number_unsigned_t</code>, and <code>number_float_t</code> are used.</p>"},{"location":"features/types/#default-types","title":"Default types","text":"<p>With the default values for NumberIntegerType (<code>std::int64_t</code>), the default value for <code>number_integer_t</code> is <code>std::int64_t</code>. With the default values for NumberUnsignedType (<code>std::uint64_t</code>), the default value for <code>number_unsigned_t</code> is <code>std::uint64_t</code>. With the default values for NumberFloatType (<code>double</code>), the default value for <code>number_float_t</code> is <code>double</code>.</p>"},{"location":"features/types/#default-behavior","title":"Default behavior","text":"<ul> <li>The restrictions about leading zeros are not enforced in C++. Instead, leading zeros in integer literals lead to an interpretation as an octal number. Internally, the value will be stored as a decimal number. For instance, the C++ integer literal <code>010</code> will be serialized to <code>8</code>. During deserialization, leading zeros yield an error.</li> <li>Not-a-number (NaN) values will be serialized to <code>null</code>.</li> </ul>"},{"location":"features/types/#limits_2","title":"Limits","text":"<p>RFC 8259 specifies:</p> <p>An implementation may set limits on the range and precision of numbers.</p> <p>When the default type is used, the maximal integer number that can be stored is <code>9223372036854775807</code> (<code>INT64_MAX</code>) and the minimal integer number that can be stored is <code>-9223372036854775808</code> (<code>INT64_MIN</code>). Integer numbers that are out of range will yield over/underflow when used in a constructor. During deserialization, too large or small integer numbers will automatically be stored as <code>number_unsigned_t</code> or <code>number_float_t</code>.</p> <p>When the default type is used, the maximal unsigned integer number that can be stored is <code>18446744073709551615</code> (<code>UINT64_MAX</code>) and the minimal integer number that can be stored is <code>0</code>. Integer numbers that are out of range will yield over/underflow when used in a constructor. During deserialization, too large or small integer numbers will automatically be stored as <code>number_integer_t</code> or <code>number_float_t</code>.</p> <p>RFC 8259 further states:</p> <p>Note that when such software is used, numbers that are integers and are in the range [-2^{53}+1, 2^{53}-1] are interoperable in the sense that implementations will agree exactly on their numeric values.</p> <p>As this range is a subrange of the exactly supported range [<code>INT64_MIN</code>, <code>INT64_MAX</code>], this class's integer type is interoperable.</p> <p>RFC 8259 states:</p> <p>This specification allows implementations to set limits on the range and precision of numbers accepted. Since software that implements IEEE 754-2008 binary64 (double precision) numbers is generally available and widely used, good interoperability can be achieved by implementations that expect no more precision or range than these provide, in the sense that implementations will approximate JSON numbers within the expected precision.</p> <p>This implementation does exactly follow this approach, as it uses double precision floating-point numbers. Note values smaller than <code>-1.79769313486232e+308</code> and values greater than <code>1.79769313486232e+308</code> will be stored as NaN internally and be serialized to <code>null</code>.</p>"},{"location":"features/types/#storage_5","title":"Storage","text":"<p>Integer number values, unsigned integer number values, and floating-point number values are stored directly inside a <code>basic_json</code> type.</p>"},{"location":"features/types/number_handling/","title":"Number Handling","text":"<p>This document describes how the library is handling numbers.</p>"},{"location":"features/types/number_handling/#background","title":"Background","text":"<p>This section briefly summarizes how the JSON specification describes how numbers should be handled.</p>"},{"location":"features/types/number_handling/#json-number-syntax","title":"JSON number syntax","text":"<p>JSON defines the syntax of numbers as follows:</p> <p>RFC 8259, Section 6</p> <p>The representation of numbers is similar to that used in most programming languages.  A number is represented in base 10 using decimal digits.  It contains an integer component that may be prefixed with an optional minus sign, which may be followed by a fraction part and/or an exponent part.  Leading zeros are not allowed.</p> <p>A fraction part is a decimal point followed by one or more digits.</p> <p>An exponent part begins with the letter E in uppercase or lowercase, which may be followed by a plus or minus sign.  The E and optional sign are followed by one or more digits.</p> <p>The following railroad diagram from json.org visualizes the number syntax:</p> <p></p>"},{"location":"features/types/number_handling/#number-interoperability","title":"Number interoperability","text":"<p>On number interoperability, the following remarks are made:</p> <p>RFC 8259, Section 6</p> <p>This specification allows implementations to set limits on the range and precision of numbers accepted.  Since software that implements IEEE 754 binary64 (double precision) numbers [IEEE754] is generally available and widely used, good interoperability can be achieved by implementations that expect no more precision or range than these provide, in the sense that implementations will approximate JSON numbers within the expected precision.  A JSON number such as 1E400 or 3.141592653589793238462643383279 may indicate potential interoperability problems, since it suggests that the software that created it expects receiving software to have greater capabilities for numeric magnitude and precision than is widely available.</p> <p>Note that when such software is used, numbers that are integers and are in the range [-2^{53}+1, 2^{53}-1] are interoperable in the sense that implementations will agree exactly on their numeric values.</p>"},{"location":"features/types/number_handling/#library-implementation","title":"Library implementation","text":"<p>This section describes how this library implements the above number specification.</p>"},{"location":"features/types/number_handling/#number-storage","title":"Number storage","text":"<p>In the default <code>json</code> type, numbers are stored as <code>std::uint64_t</code>, <code>std::int64_t</code>, and <code>double</code>, respectively. Thereby, <code>std::uint64_t</code> and <code>std::int64_t</code> are used only if they can store the  number without loss of precision. If this is impossible (e.g., if the number is too large), the number is stored as <code>double</code>.</p> <p>Notes</p> <ul> <li>Numbers with a decimal digit or scientific notation are always stored as <code>double</code>.</li> <li>The number types can be changed, see Template number types. </li> <li>As of version 3.9.1, the conversion is realized by   <code>std::strtoull</code>,   <code>std::strtoll</code>, and   <code>std::strtod</code>, respectively.</li> </ul> <p>Examples</p> <ul> <li>Integer <code>-12345678912345789123456789</code> is smaller than <code>INT64_MIN</code> and will be stored as floating-point   number <code>-1.2345678912345788e+25</code>.</li> <li>Integer <code>1E3</code> will be stored as floating-point number <code>1000.0</code>.</li> </ul>"},{"location":"features/types/number_handling/#number-limits","title":"Number limits","text":"<ul> <li>Any 64-bit signed or unsigned integer can be stored without loss of precision.</li> <li>Numbers exceeding the limits of <code>double</code> (i.e., numbers that after conversion via <code>std::strtod</code> are not satisfying <code>std::isfinite</code> such as <code>1E400</code>) will throw exception <code>json.exception.out_of_range.406</code> during parsing.</li> <li>Floating-point numbers are rounded to the next number representable as <code>double</code>. For instance <code>3.141592653589793238462643383279</code> is stored as <code>0x400921fb54442d18</code>. This is the same behavior as the code <code>double x = 3.141592653589793238462643383279;</code>.</li> </ul> <p>Interoperability</p> <ul> <li>The library interoperable with respect to the specification, because its supported range [-2^{63}, 2^{64}-1] is   larger than the described range [-2^{53}+1, 2^{53}-1].</li> <li>All integers outside the range [-2^{63}, 2^{64}-1], as well as floating-point numbers are stored as <code>double</code>.   This also concurs with the specification above.</li> </ul>"},{"location":"features/types/number_handling/#zeros","title":"Zeros","text":"<p>The JSON number grammar allows for different ways to express zero, and this library will store zeros differently:</p> Literal Stored value and type Serialization <code>0</code> <code>std::uint64_t(0)</code> <code>0</code> <code>-0</code> <code>std::int64_t(0)</code> <code>0</code> <code>0.0</code> <code>double(0.0)</code> <code>0.0</code> <code>-0.0</code> <code>double(-0.0)</code> <code>-0.0</code> <code>0E0</code> <code>double(0.0)</code> <code>0.0</code> <code>-0E0</code> <code>double(-0.0)</code> <code>-0.0</code> <p>That is, <code>-0</code> is stored as a signed integer, but the serialization does not reproduce the <code>-</code>.</p>"},{"location":"features/types/number_handling/#number-serialization","title":"Number serialization","text":"<ul> <li>Integer numbers are serialized as is; that is, no scientific notation is used.</li> <li>Floating-point numbers are serialized as specified by the <code>%g</code> printf modifier with    <code>std::numeric_limits&lt;double&gt;::max_digits10</code>   significant digits. The rationale is to use the shortest representation while still allowing round-tripping.</li> </ul> <p>Notes regarding precision of floating-point numbers</p> <p>As described above, floating-point numbers are rounded to the nearest double and serialized with the shortest representation to allow round-tripping. This can yield confusing examples:</p> <ul> <li>The serialization can have fewer decimal places than the input: <code>2555.5599999999999</code> will be serialized as   <code>2555.56</code>. The reverse can also be true.</li> <li>The serialization can be in scientific notation even if the input is not: <code>0.0000972439793401814</code> will be    serialized as <code>9.72439793401814e-05</code>. The reverse can also be true: <code>12345E-5</code> will be serialized as   <code>0.12345</code>.</li> <li>Conversions from <code>float</code> to <code>double</code> can also introduce rounding errors:     <pre><code>float f = 0.3;\njson j = f;\nstd::cout &lt;&lt; j &lt;&lt; '\\n';\n</code></pre>     yields <code>0.30000001192092896</code>.</li> </ul> <p>All examples here can be reproduced by passing the original double value to</p> <pre><code>std::printf(\"%.*g\\n\", std::numeric_limits&lt;double&gt;::max_digits10, double_value);\n</code></pre>"},{"location":"features/types/number_handling/#nan-handling","title":"NaN handling","text":"<p>NaN (not-a-number) cannot be expressed with the number syntax described above and are in fact explicitly excluded:</p> <p>RFC 8259, Section 6</p> <p>Numeric values that cannot be represented in the grammar below (such as Infinity and NaN) are not permitted.</p> <p>That is, there is no way to parse a NaN value. However, assignments can store NaN values in a JSON value.</p> <p>This library serializes NaN values  as <code>null</code>. This corresponds to the behavior of JavaScript's <code>JSON.stringify</code> function.</p> <p>Example</p> <p>The following example shows how a NaN value is stored in a <code>json</code> value.</p> <pre><code>int main()\n{\n    double val = std::numeric_limits&lt;double&gt;::quiet_NaN();\n    std::cout &lt;&lt; \"val=\" &lt;&lt; val &lt;&lt; std::endl;\n    json j = val;\n    std::cout &lt;&lt; \"j=\" &lt;&lt; j.dump() &lt;&lt; std::endl;\n    val = j;\n    std::cout &lt;&lt; \"val=\" &lt;&lt; val &lt;&lt; std::endl;\n}\n</code></pre> <p>output:</p> <pre><code>val=nan\nj=null\nval=nan\n</code></pre>"},{"location":"features/types/number_handling/#number-comparison","title":"Number comparison","text":"<p>Floating-point inside JSON values numbers are compared with <code>json::number_float_t::operator==</code> which is <code>double::operator==</code> by default.</p> <p>Alternative comparison functions</p> <p>To compare floating-point while respecting an epsilon, an alternative comparison function could be used, for instance</p> <p><pre><code>template&lt;typename T, typename = typename std::enable_if&lt;std::is_floating_point&lt;T&gt;::value, T&gt;::type&gt;\ninline bool is_same(T a, T b, T epsilon = std::numeric_limits&lt;T&gt;::epsilon()) noexcept\n{\n    return std::abs(a - b) &lt;= epsilon;\n}\n</code></pre> Or you can self-define an operator equal function like this:</p> <pre><code>bool my_equal(const_reference lhs, const_reference rhs)\n{\n    const auto lhs_type lhs.type();\n    const auto rhs_type rhs.type();\n    if (lhs_type == rhs_type)\n    {\n        switch(lhs_type)\n        {\n            // self_defined case\n            case value_t::number_float:\n                return std::abs(lhs - rhs) &lt;= std::numeric_limits&lt;float&gt;::epsilon();\n\n            // other cases remain the same with the original\n            ...\n        }\n    }\n    ...\n}\n</code></pre> <p>(see #703 for more information.)</p> <p>Note</p> <p>NaN values never compare equal to themselves or to other NaN values. See #514.</p>"},{"location":"features/types/number_handling/#number-conversion","title":"Number conversion","text":"<p>Just like the C++ language itself, the <code>get</code> family of functions allows conversions between unsigned and signed integers, and between integers and floating-point values to integers. This behavior may be surprising.</p> <p>Unconditional number conversions</p> <pre><code>double d = 42.3;                          // non-integer double value 42.3\njson jd = d;                              // stores double value 42.3\nstd::int64_t i = jd.get&lt;std::int64_t&gt;();  // now i==42; no warning or error is produced\n</code></pre> <p>Note the last line with throw a <code>json.exception.type_error.302</code> exception if <code>jd</code> is not a numerical type, for instance a string.</p> <p>Numeric conversions are performed according to the corresponding C++ conversion rules. The library does not perform range checks when converting between numeric types.</p> <p>In particular, conversions from floating-point values to integer types, or conversions to integer types with a smaller range than the stored value, may produce implementation-defined or undefined behavior if the source value cannot be represented by the target type.</p> <p>Applications requiring checked conversions should inspect the stored number type with <code>is_number_float()</code>, <code>is_number_integer()</code>, <code>is_number_unsigned()</code>, or <code>type()</code>, and perform explicit range checks before converting to a narrower type.</p> <p>The rationale is twofold:</p> <ol> <li>JSON does not define a number type or precision (see above).</li> <li>C++ also allows silently converting between number types.</li> </ol> <p>Conditional number conversion</p> <p>The code above can be solved by explicitly checking the nature of the value with members such as <code>is_number_integer()</code> or <code>is_number_unsigned()</code>:</p> <pre><code>// check if jd is really integer-valued\nif (jd.is_number_integer())\n{\n    // if so, do the conversion and use i\n    std::int64_t i = jd.get&lt;std::int64_t&gt;();\n    // ...\n}\nelse\n{\n    // otherwise, take appropriate action\n    // ...\n}\n</code></pre> <p>Note this approach also has the advantage that it can react on non-numerical JSON value types such as strings.</p> <p>(Example taken from #777.)</p>"},{"location":"features/types/number_handling/#determine-number-types","title":"Determine number types","text":"<p>As the example in Number conversion shows, there are different functions to determine the type of the stored number:</p> <ul> <li><code>is_number()</code> returns <code>true</code> for any number type</li> <li><code>is_number_integer()</code> returns <code>true</code> for signed and unsigned integers</li> <li><code>is_number_unsigned()</code> returns <code>true</code> for unsigned integers only</li> <li><code>is_number_float()</code> returns <code>true</code> for floating-point numbers</li> <li><code>type_name()</code> returns <code>\"number\"</code> for any number type</li> <li><code>type()</code> returns a different enumerator of   <code>value_t</code> for all number types</li> </ul> function unsigned integer signed integer floating-point string <code>is_number()</code> <code>true</code> <code>true</code> <code>true</code> <code>false</code> <code>is_number_integer()</code> <code>true</code> <code>true</code> <code>false</code> <code>false</code> <code>is_number_unsigned()</code> <code>true</code> <code>false</code> <code>false</code> <code>false</code> <code>is_number_float()</code> <code>false</code> <code>false</code> <code>true</code> <code>false</code> <code>type_name()</code> <code>\"number\"</code> <code>\"number\"</code> <code>\"number\"</code> <code>\"string\"</code> <code>type()</code> <code>number_unsigned</code> <code>number_integer</code> <code>number_float</code> <code>string</code>"},{"location":"features/types/number_handling/#template-number-types","title":"Template number types","text":"<p>The number types can be changed with template parameters.</p> position number type default type possible values 5 signed integers <code>std::int64_t</code> <code>std::int32_t</code>, <code>std::int16_t</code>, etc. 6 unsigned integers <code>std::uint64_t</code> <code>std::uint32_t</code>, <code>std::uint16_t</code>, etc. 7 floating-point <code>double</code> <code>float</code>, <code>long double</code> <p>Constraints on number types</p> <ul> <li>The type for signed integers must be convertible from <code>long long</code>. The type for floating-point numbers is used   in case of overflow.</li> <li>The type for unsigned integers must be convertible from <code>unsigned long long</code>.  The type for floating-point   numbers is used in case of overflow.</li> <li>The types for signed and unsigned integers must be distinct, see   #2573.</li> <li>Only <code>double</code>, <code>float</code>, and <code>long double</code> are supported for floating-point numbers.</li> </ul> <p>Example</p> <p>A <code>basic_json</code> type that uses <code>long double</code> as floating-point type.</p> <pre><code>using json_ld = nlohmann::basic_json&lt;std::map, std::vector, std::string, bool,\n                                     std::int64_t, std::uint64_t, long double&gt;;\n</code></pre> <p>Note values should then be parsed with <code>json_ld::parse</code> rather than <code>json::parse</code> as the latter would parse floating-point values to <code>double</code> before then converting them to <code>long double</code>.</p>"},{"location":"home/architecture/","title":"Architecture","text":"<p>Info</p> <p>This page is still under construction. Its goal is to provide a high-level overview of the library's architecture. This should help new contributors to get an idea of the used concepts and where to make changes.</p>"},{"location":"home/architecture/#overview","title":"Overview","text":"<p>The main structure is class nlohmann::basic_json.</p> <ul> <li>public API</li> <li>container interface</li> <li>iterators</li> </ul>"},{"location":"home/architecture/#template-specializations","title":"Template specializations","text":"<ul> <li>describe template parameters of <code>basic_json</code></li> <li><code>json</code></li> <li><code>ordered_json</code> via <code>ordered_map</code></li> </ul>"},{"location":"home/architecture/#value-storage","title":"Value storage","text":"<p>Values are stored as a tagged union of value_t and json_value.</p> <pre><code>/// the type of the current element\nvalue_t m_type = value_t::null;\n\n/// the value of the current element\njson_value m_value = {};\n</code></pre> <p>with</p> <pre><code>enum class value_t : std::uint8_t\n{\n    null,             ///&lt; null value\n    object,           ///&lt; object (unordered set of name/value pairs)\n    array,            ///&lt; array (ordered collection of values)\n    string,           ///&lt; string value\n    boolean,          ///&lt; boolean value\n    number_integer,   ///&lt; number value (signed integer)\n    number_unsigned,  ///&lt; number value (unsigned integer)\n    number_float,     ///&lt; number value (floating-point)\n    binary,           ///&lt; binary array (ordered collection of bytes)\n    discarded         ///&lt; discarded by the parser callback function\n};\n\nunion json_value {\n  /// object (stored with pointer to save storage)\n  object_t *object;\n  /// array (stored with pointer to save storage)\n  array_t *array;\n  /// string (stored with pointer to save storage)\n  string_t *string;\n  /// binary (stored with pointer to save storage)\n  binary_t *binary;\n  /// boolean\n  boolean_t boolean;\n  /// number (integer)\n  number_integer_t number_integer;\n  /// number (unsigned integer)\n  number_unsigned_t number_unsigned;\n  /// number (floating-point)\n  number_float_t number_float;\n};\n</code></pre>"},{"location":"home/architecture/#parsing-inputs-deserialization","title":"Parsing inputs (deserialization)","text":"<p>Input is read via input adapters that abstract a source with a common interface:</p> <pre><code>/// read a single character\nstd::char_traits&lt;char&gt;::int_type get_character() noexcept;\n\n/// read multiple characters to a destination buffer and\n/// returns the number of characters successfully read\ntemplate&lt;class T&gt;\nstd::size_t get_elements(T* dest, std::size_t count = 1);\n</code></pre> <p>List examples of input adapters.</p>"},{"location":"home/architecture/#sax-interface","title":"SAX Interface","text":"<p>TODO</p>"},{"location":"home/architecture/#writing-outputs-serialization","title":"Writing outputs (serialization)","text":"<p>Output is written via output adapters:</p> <pre><code>template&lt;typename T&gt;\nvoid write_character(CharType c);\n\ntemplate&lt;typename CharType&gt;\nvoid write_characters(const CharType* s, std::size_t length);\n</code></pre> <p>List examples of output adapters.</p>"},{"location":"home/architecture/#value-conversion","title":"Value conversion","text":"<pre><code>template&lt;class T&gt;\nvoid to_json(basic_json&amp; j, const T&amp; t);\n\ntemplate&lt;class T&gt;\nvoid from_json(const basic_json&amp; j, T&amp; t);\n</code></pre>"},{"location":"home/architecture/#additional-features","title":"Additional features","text":"<ul> <li>JSON Pointers</li> <li>Binary formats</li> <li>Custom base class</li> <li>Conversion macros</li> </ul>"},{"location":"home/architecture/#details-namespace","title":"Details namespace","text":"<ul> <li>C++ feature backports</li> </ul>"},{"location":"home/customers/","title":"Customers","text":"<p>The library is used in multiple projects, applications, operating systems, etc. The list below is not exhaustive, but the result of an internet search. If you know further customers of the library, please let me know.</p> <p></p>"},{"location":"home/customers/#space-exploration","title":"Space Exploration","text":"<ul> <li>Peregrine Lunar Lander Flight 01 - The library was used for payload management in the Peregrine Moon Lander, developed by Astrobotic Technology and launched as part of NASA's Commercial Lunar Payload Services (CLPS) program. After six days in orbit, the spacecraft was intentionally redirected into Earth's atmosphere, where it burned up over the Pacific Ocean on January 18, 2024.</li> </ul>"},{"location":"home/customers/#automotive","title":"Automotive","text":"<ul> <li>Alexa Auto SDK, a software development kit enabling the integration of Alexa into automotive systems</li> <li>Apollo, a framework for building autonomous driving systems</li> <li>Automotive Grade Linux (AGL), a collaborative open-source platform for automotive software development</li> <li>Genesis Motor (infotainment), a luxury automotive brand</li> <li>Hyundai (infotainment), a global automotive brand</li> <li>Kia (infotainment), a global automotive brand</li> <li>Mercedes-Benz Operating System (MB.OS), a core component of the vehicle software ecosystem from Mercedes-Benz</li> <li>Rivian (infotainment), an electric vehicle manufacturer</li> <li>Suzuki (infotainment), a global automotive and motorcycle manufacturer</li> </ul>"},{"location":"home/customers/#gaming-and-entertainment","title":"Gaming and Entertainment","text":"<ul> <li>Assassin's Creed: Mirage, a stealth-action game set in the Middle East, focusing on the journey of a young assassin with classic parkour and stealth mechanics</li> <li>Chasm: The Rift, a first-person shooter blending horror and adventure, where players navigate dark realms and battle monsters</li> <li>College Football 25, a college football simulation game featuring gameplay that mimics real-life college teams and competitions</li> <li>Concepts, a digital sketching app designed for creative professionals, offering flexible drawing tools for illustration, design, and brainstorming</li> <li>Depthkit, a tool for creating and capturing volumetric video, enabling immersive 3D experiences and interactive content</li> <li>IMG.LY, a platform offering creative tools and SDKs for integrating advanced image and video editing in applications</li> <li>LOOT, a tool for optimizing the load order of game plugins, commonly used in The Elder Scrolls and Fallout series</li> <li>Madden NFL 25, a sports simulation game capturing the excitement of American football with realistic gameplay and team management features</li> <li>Marne, an unofficial private server platform for hosting custom Battlefield 1 game experiences</li> <li>Minecraft, a popular sandbox video game</li> <li>NHL 22, a hockey simulation game offering realistic gameplay, team management, and various modes to enhance the hockey experience</li> <li>Pixelpart, a 2D animation and video compositing software that allows users to create animated graphics and visual effects with a focus on simplicity and ease of use</li> <li>Razer Cortex, a gaming performance optimizer and system booster designed to enhance the gaming experience</li> <li>Red Dead Redemption II, an open-world action-adventure game following an outlaw's story in the late 1800s, emphasizing deep storytelling and immersive gameplay</li> <li>Snapchat, a multimedia messaging and augmented reality app for communication and entertainment</li> <li>Tactics Ogre: Reborn, a tactical role-playing game featuring strategic battles and deep storytelling elements</li> <li>Throne and Liberty, an MMORPG that offers an expansive fantasy world with dynamic gameplay and immersive storytelling</li> <li>Unity Vivox, a communication service that enables voice and text chat functionality in multiplayer games developed with Unity</li> <li>Zool: Redimensioned, a modern reimagining of the classic platformer featuring fast-paced gameplay and vibrant environments</li> <li>immersivetech, a technology company focused on immersive experiences, providing tools and solutions for virtual and augmented reality applications</li> </ul>"},{"location":"home/customers/#consumer-electronics","title":"Consumer Electronics","text":"<ul> <li>Audinate, a provider of networked audio solutions specializing in Dante technology, which facilitates high-quality digital audio transport over IP networks</li> <li>Canon CanoScan LIDE, a series of flatbed scanners offering high-resolution image scanning for home and office use</li> <li>Canon PIXMA Printers, a line of all-in-one inkjet printers known for high-quality printing and wireless connectivity</li> <li>Cisco Webex Desk Camera, a video camera designed for professional-quality video conferencing and remote collaboration</li> <li>Philips Hue Personal Wireless Lighting, a smart lighting system for customizable and wireless home illumination</li> <li>Ray-Ban Meta Smart glasses, a pair of smart glasses designed for capturing photos and videos with integrated connectivity and social features</li> <li>Razer Synapse, a unified configuration software enabling hardware customization for Razer devices</li> <li>Siemens SINEMA Remote Connect, a remote connectivity solution for monitoring and managing industrial networks and devices securely</li> <li>Sony PlayStation 4, a gaming console developed by Sony that offers a wide range of games and multimedia entertainment features</li> <li>Sony Virtual Webcam Driver for Remote Camera, a software driver that enables the use of Sony cameras as virtual webcams for video conferencing and streaming</li> </ul>"},{"location":"home/customers/#operating-systems","title":"Operating Systems","text":"<ul> <li>Apple iOS and macOS, a family of operating systems developed by Apple, including iOS for mobile devices and macOS for desktop computers</li> <li>Google Fuchsia, an open-source operating system developed by Google, designed to be secure, updatable, and adaptable across various devices</li> <li>SerenityOS, an open-source operating system that aims to provide a simple and beautiful user experience with a focus on simplicity and elegance</li> <li>Yocto, a Linux-based build system for creating custom operating systems and software distributions, tailored for embedded devices and IoT applications</li> </ul>"},{"location":"home/customers/#development-tools-and-ides","title":"Development Tools and IDEs","text":"<ul> <li>Accentize SpectralBalance, an adaptive speech analysis tool designed to enhance audio quality by optimizing frequency balance in recordings</li> <li>Arm Compiler for Linux, a software development toolchain for compiling and optimizing applications on Arm-based Linux systems</li> <li>BBEdit, a professional text and code editor for macOS</li> <li>CoderPad, a collaborative coding platform that enables real-time code interviews and assessments for developers; the library is included in every CoderPad instance and can be accessed with a simple <code>#include \"json.hpp\"</code></li> <li>Compiler Explorer, a web-based tool that allows users to write, compile, and visualize the assembly output of code in various programming languages; the library is readily available and accessible with the directive <code>#include &lt;nlohmann/json.hpp&gt;</code>.</li> <li>GitHub CodeQL, a code analysis tool used for identifying security vulnerabilities and bugs in software through semantic queries</li> <li>Hex-Rays, a reverse engineering toolset for analyzing and decompiling binaries, primarily used for security research and vulnerability analysis</li> <li>ImHex, a hex editor designed for reverse engineering, providing advanced features for data analysis and manipulation</li> <li>Intel GPA Framework, a suite of cross-platform tools for capturing, analyzing, and optimizing graphics applications across different APIs</li> <li>Intopix, a provider of advanced image processing and compression solutions used in software development and AV workflows</li> <li>Java SE, the core Java platform that provides the libraries and runtime needed to build and run general-purpose Java applications</li> <li>MKVToolNix, a set of tools for creating, editing, and inspecting MKV (Matroska) multimedia container files</li> <li>Meta Yoga, a layout engine that facilitates flexible and efficient user interface design across multiple platforms</li> <li>NVIDIA Nsight Compute, a performance analysis tool for CUDA applications that provides detailed insights into GPU performance metrics</li> <li>Notepad++, a free source code editor that supports various programming languages</li> <li>OpenRGB, an open source RGB lighting control that doesn't depend on manufacturer software</li> <li>OpenTelemetry C++, a library for collecting and exporting observability data in C++, enabling developers to implement distributed tracing and metrics in their application</li> <li>Qt Creator, an IDE for developing applications using the Qt application framework</li> <li>Scanbot SDK, a software development kit (SDK) that provides tools for integrating advanced document scanning and barcode scanning capabilities into applications</li> </ul>"},{"location":"home/customers/#machine-learning-and-ai","title":"Machine Learning and AI","text":"<ul> <li>Apple Core ML Tools, a set of tools for converting and configuring machine learning models for deployment in Apple's Core ML framework</li> <li>Avular Mobile Robotics, a platform for developing and deploying mobile robotics solutions</li> <li>Google gemma.cpp, a lightweight C++ inference engine designed for running AI models from the Gemma family</li> <li>llama.cpp, a C++ library designed for efficient inference of large language models (LLMs), enabling streamlined integration into applications</li> <li>MLX, an array framework for machine learning on Apple Silicon</li> <li>Mozilla llamafile, a tool designed for distributing and executing large language models (LLMs) efficiently using a single file format</li> <li>NVIDIA ACE, a suite of real-time AI solutions designed for the development of interactive avatars and digital human applications, enabling scalable and sophisticated user interactions</li> <li>Peer, a platform offering personalized AI assistants for interactive learning and creative collaboration</li> <li>stable-diffusion.cpp, a C++ implementation of the Stable Diffusion image generation model</li> <li>TanvasTouch, a software development kit (SDK) that enables developers to create tactile experiences on touchscreens, allowing users to feel textures and physical sensations in a digital environment</li> <li>TensorFlow, a machine learning framework that facilitates the development and training of models, supporting data serialization and efficient data exchange between components</li> </ul>"},{"location":"home/customers/#scientific-research-and-analysis","title":"Scientific Research and Analysis","text":"<ul> <li>BLACK, a bounded linear temporal logic (LTL) satisfiability checker</li> <li>CERN Atlas Athena, a software framework used in the ATLAS experiment at the Large Hadron Collider (LHC) for performance monitoring</li> <li>ICU, the International Components for Unicode, a mature library for software globalization and multilingual support</li> <li>KAMERA, a platform for synchronized data collection and real-time deep learning to map marine species like polar bears and seals, aiding Arctic ecosystem research</li> <li>KiCad, a free and open-source software suite for electronic design automation</li> <li>Maple, a symbolic and numeric computing environment for advanced mathematical modeling and analysis</li> <li>MeVisLab, a software framework for medical image processing and visualization.</li> <li>OpenPMD API, a versatile programming interface for accessing and managing scientific data, designed to facilitate the efficient storage, retrieval, and sharing of simulation data across various applications and platforms</li> <li>ParaView, an open-source tool for large-scale data visualization and analysis across various scientific domains</li> <li>QGIS, a free and open-source geographic information system (GIS) application that allows users to create, edit, visualize, and analyze geospatial data across a variety of formats</li> <li>VTK, a software library for 3D computer graphics, image processing, and visualization</li> <li>VolView, a lightweight application for interactive visualization and analysis of 3D medical imaging data.</li> </ul>"},{"location":"home/customers/#business-and-productivity-software","title":"Business and Productivity Software","text":"<ul> <li>ArcGIS PRO, a desktop geographic information system (GIS) application developed by Esri for mapping and spatial analysis</li> <li>Autodesk Desktop, a software platform developed by Autodesk for creating and managing desktop applications and services</li> <li>Check Point, a cybersecurity company specializing in threat prevention and network security solutions, offering a range of products designed to protect enterprises from cyber threats and ensure data integrity</li> <li>Microsoft Office for Mac, a suite of productivity applications developed by Microsoft for macOS, including tools for word processing, spreadsheets, and presentations</li> <li>Microsoft Teams, a team collaboration application offering workspace chat and video conferencing, file storage, and integration of proprietary and third-party applications and services</li> <li>Nexthink Infinity, a digital employee experience management platform for monitoring and improving IT performance</li> <li>Sophos Connect Client, a secure VPN client from Sophos that allows remote users to connect to their corporate network, ensuring secure access to resources and data</li> <li>Stonebranch, a cloud-based cybersecurity solution that integrates backup, disaster recovery, and cybersecurity features to protect data and ensure business continuity for organizations</li> <li>Tablecruncher, a data analysis tool that allows users to import, analyze, and visualize spreadsheet data, offering interactive features for better insights and decision-making</li> <li>magicplan, a mobile application for creating floor plans and interior designs using augmented reality</li> </ul>"},{"location":"home/customers/#databases-and-big-data","title":"Databases and Big Data","text":"<ul> <li>ADIOS2, a data management framework designed for high-performance input and output operations</li> <li>Cribl Stream, a real-time data processing platform that enables organizations to collect, route, and transform observability data, enhancing visibility and insights into their systems</li> <li>DB Browser for SQLite, a visual open-source tool for creating, designing, and editing SQLite database files</li> <li>MySQL Connector/C++, a C++ library for connecting and interacting with MySQL databases</li> <li>MySQL NDB Cluster, a distributed database system that provides high availability and scalability for MySQL databases</li> <li>MySQL Shell, an advanced client and code editor for interacting with MySQL servers, supporting SQL, Python, and JavaScript</li> <li>PrestoDB, a distributed SQL query engine designed for large-scale data analytics, originally developed by Facebook</li> <li>ROOT Data Analysis Framework, an open-source data analysis framework widely used in high-energy physics and other fields for data processing and visualization</li> <li>WiredTiger, a high-performance storage engine for databases, offering support for compression, concurrency, and checkpointing</li> </ul>"},{"location":"home/customers/#simulation-and-modeling","title":"Simulation and Modeling","text":"<ul> <li>Arcturus HoloSuite, a software toolset for capturing, editing, and streaming volumetric video, featuring advanced compression technologies for high-quality 3D content creation</li> <li>azul, a fast and efficient 3D city model viewer designed for visualizing urban environments and spatial data</li> <li>Blender, a free and open-source 3D creation suite for modeling, animation, rendering, and more</li> <li>cpplot, a library for creating interactive graphs and charts in C++, which can be viewed in web browsers</li> <li>Foundry Nuke, a powerful node-based digital compositing and visual effects application used in film and television post-production</li> <li>GAMS, a high-performance mathematical modeling system for optimization and decision support</li> <li>Kitware SMTK, a software toolkit for managing simulation models and workflows in scientific and engineering applications</li> <li>M-Star, a computational fluid dynamics software for simulating and analyzing fluid flow</li> <li>MapleSim CAD Toolbox, a software extension for MapleSim that integrates CAD models, allowing users to import, manipulate, and analyze 3D CAD data within the MapleSim environment for enhanced modeling and simulation</li> <li>NVIDIA Omniverse, a platform for 3D content creation and collaboration that enables real-time simulations and interactive experiences across various industries</li> <li>Pixar Renderman, a photorealistic 3D rendering software developed by Pixar, widely used in the film industry for creating high-quality visual effects and animations</li> <li>ROS - Robot Operating System, a set of software libraries and tools that assist in developing robot applications</li> <li>UBS, a multinational financial services and banking company</li> </ul>"},{"location":"home/customers/#enterprise-and-cloud-applications","title":"Enterprise and Cloud Applications","text":"<ul> <li>Acronis Cyber Protect Cloud, an all-in-one data protection solution that combines backup, disaster recovery, and cybersecurity to safeguard business data from threats like ransomware</li> <li>Baereos, a backup solution that provides data protection and recovery options for various environments, including physical and virtual systems</li> <li>Bitdefender Home Scanner, a tool from Bitdefender that scans devices for malware and security threats, providing a safeguard against potential online dangers</li> <li>Citrix Provisioning, a solution that streamlines the delivery of virtual desktops and applications by allowing administrators to manage and provision resources efficiently across multiple environments</li> <li>Citrix Virtual Apps and Desktops, a solution from Citrix that delivers virtual apps and desktops</li> <li>Cyberarc, a security solution that specializes in privileged access management, enabling organizations to control and monitor access to critical systems and data, thereby enhancing overall cybersecurity posture</li> <li>Egnyte Desktop, a secure cloud storage solution designed for businesses, enabling file sharing, collaboration, and data management across teams while ensuring compliance and data protection</li> <li>Elster, a digital platform developed by German tax authorities for secure and efficient electronic tax filing and management using secunet protect4use</li> <li>Ethereum Solidity, a high-level, object-oriented programming language designed for implementing smart contracts on the Ethereum platform</li> <li>Inciga, a monitoring tool for IT infrastructure, designed to provide insights into system performance and availability through customizable dashboards and alerts</li> <li>Intel Accelerator Management Daemon for VMware ESXi, a management tool designed for monitoring and controlling Intel hardware accelerators within VMware ESXi environments, optimizing performance and resource allocation</li> <li>Juniper Identity Management Service</li> <li>Microsoft Azure IoT SDK, a collection of tools and libraries to help developers connect, build, and deploy Internet of Things (IoT) solutions on the Azure cloud platform</li> <li>Microsoft WinGet, a command-line utility included in the Windows Package Manager</li> <li>plexusAV, a high-performance AV-over-IP transceiver device capable of video encoding and decoding using the IPMX standard</li> <li>Pointr, a platform for indoor positioning and navigation solutions, offering tools and SDKs for developers to create location-based applications</li> <li>secunet protect4use, a secure, passwordless multifactor authentication solution that transforms smartphones into digital keyrings, ensuring high security for online services and digital identities</li> <li>Sencore MRD 7000, a professional multi-channel receiver and decoder supporting UHD and HD stream decoding</li> </ul>"},{"location":"home/design_goals/","title":"Design goals","text":"<p>There are myriads of JSON libraries out there, and each may even have its reason to exist. Our class had these design goals:</p> <ul> <li> <p>Intuitive syntax. In languages such as Python, JSON feels like a first-class data type. We used all the operator magic of modern C++ to achieve the same feeling in your code.</p> </li> <li> <p>Trivial integration. Our whole code consists of a single header file <code>json.hpp</code>. That's it. No library, no subproject, no dependencies, no complex build system. The class is written in vanilla C++11. All in all, everything should require no adjustment of your compiler flags or project settings.</p> </li> <li> <p>Serious testing. Our class is heavily unit-tested and covers 100% of the code, including all exceptional behavior. Furthermore, we checked with Valgrind and the Clang Sanitizers that there are no memory leaks. Google OSS-Fuzz additionally runs fuzz tests against all parsers 24/7, effectively executing billions of tests so far. To maintain high quality, the project is following the Core Infrastructure Initiative (CII) best practices.</p> </li> </ul> <p>Other aspects were not so important to us:</p> <ul> <li> <p>Memory efficiency. Each JSON object has an overhead of one pointer (the maximal size of a union) and one enumeration element (1 byte). The default generalization uses the following C++ data types: <code>std::string</code> for strings, <code>int64_t</code>, <code>uint64_t</code> or <code>double</code> for numbers, <code>std::map</code> for objects, <code>std::vector</code> for arrays, and <code>bool</code> for Booleans. However, you can template the generalized class <code>basic_json</code> to your needs.</p> </li> <li> <p>Speed. There are certainly faster JSON libraries out there. However, if your goal is to speed up your development by adding JSON support with a single header, then this library is the way to go. If you know how to use a <code>std::vector</code> or <code>std::map</code>, you are already set.</p> </li> </ul> <p>See the contribution guidelines for more information.</p>"},{"location":"home/exceptions/","title":"Exceptions","text":""},{"location":"home/exceptions/#overview","title":"Overview","text":""},{"location":"home/exceptions/#base-type","title":"Base type","text":"<p>All exceptions inherit from class <code>json::exception</code> (which in turn inherits from <code>std::exception</code>). It is used as the base class for all exceptions thrown by the <code>basic_json</code> class. This class can hence be used as \"wildcard\" to catch exceptions.</p> <pre><code>classDiagram\n  direction LR\n    class `std::exception` {\n        &lt;&lt;interface&gt;&gt;\n    }\n\n    class `json::exception` {\n        +const int id\n        +const char* what() const\n    }\n\n    class `json::parse_error` {\n        +const std::size_t byte\n    }\n\n    class `json::invalid_iterator`\n    class `json::type_error`\n    class `json::out_of_range`\n    class `json::other_error`\n\n    `std::exception` &lt;|-- `json::exception`\n    `json::exception` &lt;|-- `json::parse_error`\n    `json::exception` &lt;|-- `json::invalid_iterator`\n    `json::exception` &lt;|-- `json::type_error`\n    `json::exception` &lt;|-- `json::out_of_range`\n    `json::exception` &lt;|-- `json::other_error`</code></pre>"},{"location":"home/exceptions/#switch-off-exceptions","title":"Switch off exceptions","text":"<p>Exceptions are used widely within the library. They can, however, be switched off with either using the compiler flag <code>-fno-exceptions</code> or by defining the symbol <code>JSON_NOEXCEPTION</code>. In this case, exceptions are replaced by <code>abort()</code> calls. You can further control this behavior by defining <code>JSON_THROW_USER</code> (overriding <code>throw</code>), <code>JSON_TRY_USER</code> (overriding <code>try</code>), and <code>JSON_CATCH_USER</code> (overriding <code>catch</code>).</p> <p>Note that <code>JSON_THROW_USER</code> should leave the current scope (e.g., by throwing or aborting), as continuing after it may yield undefined behavior.</p> Example <p>The code below switches off exceptions and creates a log entry with a detailed error message in case of errors.</p> <pre><code>#include &lt;iostream&gt;\n\n#define JSON_TRY_USER if(true)\n#define JSON_CATCH_USER(exception) if(false)\n#define JSON_THROW_USER(exception)                           \\\n    {std::clog &lt;&lt; \"Error in \" &lt;&lt; __FILE__ &lt;&lt; \":\" &lt;&lt; __LINE__ \\\n               &lt;&lt; \" (function \" &lt;&lt; __FUNCTION__ &lt;&lt; \") - \"    \\\n               &lt;&lt; (exception).what() &lt;&lt; std::endl;           \\\n     std::abort();}\n\n#include &lt;nlohmann/json.hpp&gt;\n</code></pre> <p>Note the explanatory <code>what()</code> string of exceptions is not available for MSVC if exceptions are disabled, see #2824.</p> <p>See documentation of <code>JSON_TRY_USER</code>, <code>JSON_CATCH_USER</code> and <code>JSON_THROW_USER</code> for more information.</p>"},{"location":"home/exceptions/#extended-diagnostic-messages","title":"Extended diagnostic messages","text":"<p>Exceptions in the library are thrown in the local context of the JSON value they are detected. This makes detailed diagnostics messages, and hence debugging, difficult.</p> Example <pre><code>#include &lt;iostream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    json j;\n    j[\"address\"][\"street\"] = \"Fake Street\";\n    j[\"address\"][\"housenumber\"] = \"12\";\n\n    try\n    {\n        int housenumber = j[\"address\"][\"housenumber\"];\n    }\n    catch (const json::exception&amp; e)\n    {\n        std::cout &lt;&lt; e.what() &lt;&lt; '\\n';\n    }\n}\n</code></pre> <p>Output:</p> <pre><code>[json.exception.type_error.302] type must be number, but is string\n</code></pre> <p>This exception can be hard to debug if storing the value <code>\"12\"</code> and accessing it is further apart.</p> <p>To create better diagnostics messages, each JSON value needs a pointer to its parent value such that a global context (i.e., a path from the root value to the value that led to the exception) can be created. That global context is provided as JSON Pointer.</p> <p>As this global context comes at the price of storing one additional pointer per JSON value and runtime overhead to maintain the parent relation, extended diagnostics are disabled by default. They can, however, be enabled by defining the preprocessor symbol <code>JSON_DIAGNOSTICS</code> to <code>1</code> before including <code>json.hpp</code>.</p> Example <pre><code>#include &lt;iostream&gt;\n\n# define JSON_DIAGNOSTICS 1\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    json j;\n    j[\"address\"][\"street\"] = \"Fake Street\";\n    j[\"address\"][\"housenumber\"] = \"12\";\n\n    try\n    {\n        int housenumber = j[\"address\"][\"housenumber\"];\n    }\n    catch (const json::exception&amp; e)\n    {\n        std::cout &lt;&lt; e.what() &lt;&lt; '\\n';\n    }\n}\n</code></pre> <p>Output:</p> <pre><code>[json.exception.type_error.302] (/address/housenumber) type must be number, but is string\n</code></pre> <p>Now the exception message contains a JSON Pointer <code>/address/housenumber</code> that indicates which value has the wrong type.</p> <p>See documentation of <code>JSON_DIAGNOSTICS</code> for more information.</p>"},{"location":"home/exceptions/#parse-errors","title":"Parse errors","text":"<p>The library throws this exception when a parse error occurs. Parse errors can occur during the deserialization of JSON text, CBOR, MessagePack, as well as when using JSON Patch.</p> <p>Exceptions have ids 1xx.</p> <p>Byte index</p> <p>Member <code>byte</code> holds the byte index of the last read character in the input file.</p> <p>For an input with n bytes, 1 is the index of the first character and n+1 is the index of the terminating null byte or the end of file. This also holds true when reading a byte vector (CBOR or MessagePack).</p> Example <p>The following code shows how a <code>parse_error</code> exception can be caught.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    try\n    {\n        // parsing input with a syntax error\n        json::parse(\"[1,2,3,]\");\n    }\n    catch (const json::parse_error&amp; e)\n    {\n        // output exception information\n        std::cout &lt;&lt; \"message: \" &lt;&lt; e.what() &lt;&lt; '\\n'\n                  &lt;&lt; \"exception id: \" &lt;&lt; e.id &lt;&lt; '\\n'\n                  &lt;&lt; \"byte position of error: \" &lt;&lt; e.byte &lt;&lt; std::endl;\n    }\n}\n</code></pre> <p>Output:</p> <pre><code>message: [json.exception.parse_error.101] parse error at line 1, column 8: syntax error while parsing value - unexpected ']'; expected '[', '{', or a literal\nexception id: 101\nbyte position of error: 8\n</code></pre>"},{"location":"home/exceptions/#jsonexceptionparse_error101","title":"json.exception.parse_error.101","text":"<p>This error indicates a syntax error while deserializing a JSON text. The error message describes that an unexpected token (character) was encountered, and the member <code>byte</code> indicates the error position.</p> <p>Example message</p> <p>Input ended prematurely:</p> <pre><code>[json.exception.parse_error.101] parse error at 2: unexpected end of input; expected string literal\n</code></pre> <p>No input:</p> <pre><code>[json.exception.parse_error.101] parse error at line 1, column 1: attempting to parse an empty input; check that your input string or stream contains the expected JSON\n</code></pre> <p>Control character was not escaped:</p> <pre><code>[json.exception.parse_error.101] parse error at line 1, column 2: syntax error while parsing value - invalid string: control character U+0009 (HT) must be escaped to \\u0009 or \\\\; last read: '\"&lt;U+0009&gt;'\"\n</code></pre> <p>String was not closed:</p> <pre><code>[json.exception.parse_error.101] parse error at line 1, column 2: syntax error while parsing value - invalid string: missing closing quote; last read: '\"'\n</code></pre> <p>Invalid number format:</p> <pre><code>[json.exception.parse_error.101] parse error at line 1, column 3: syntax error while parsing value - invalid number; expected '+', '-', or digit after exponent; last read: '1E'\n</code></pre> <p><code>\\u</code> was not be followed by four hex digits:</p> <pre><code>[json.exception.parse_error.101] parse error at line 1, column 6: syntax error while parsing value - invalid string: '\\u' must be followed by 4 hex digits; last read: '\"\\u01\"'\n</code></pre> <p>Invalid UTF-8 surrogate pair:</p> <pre><code>[json.exception.parse_error.101] parse error at line 1, column 13: syntax error while parsing value - invalid string: surrogate U+DC00..U+DFFF must follow U+D800..U+DBFF; last read: '\"\\uD7FF\\uDC00'\"\n</code></pre> <p>Invalid UTF-8 byte:</p> <pre><code>[json.exception.parse_error.101] parse error at line 3, column 24: syntax error while parsing value - invalid string: ill-formed UTF-8 byte; last read: '\"vous \\352t'\n</code></pre> <p>Tip</p> <ul> <li>Make sure the input is correctly read. Try to write the input to standard output to check if, for instance, the input file was successfully opened.</li> <li>Paste the input to a JSON validator like http://jsonlint.com or a tool like jq.</li> </ul>"},{"location":"home/exceptions/#jsonexceptionparse_error102","title":"json.exception.parse_error.102","text":"<p>JSON uses the <code>\\uxxxx</code> format to describe Unicode characters. Code points above 0xFFFF are split into two <code>\\uxxxx</code> entries (\"surrogate pairs\"). This error indicates that the surrogate pair is incomplete or contains an invalid code point.</p> <p>Example message</p> <pre><code>parse error at 14: missing or wrong low surrogate\n</code></pre> <p>Note</p> <p>This exception is not used any more. Instead json.exception.parse_error.101 with a more detailed description is used.</p>"},{"location":"home/exceptions/#jsonexceptionparse_error103","title":"json.exception.parse_error.103","text":"<p>Unicode supports code points up to 0x10FFFF. Code points above 0x10FFFF are invalid.</p> <p>Example message</p> <pre><code>parse error: code points above 0x10FFFF are invalid\n</code></pre> <p>Note</p> <p>This exception is not used any more. Instead json.exception.parse_error.101 with a more detailed description is used.</p>"},{"location":"home/exceptions/#jsonexceptionparse_error104","title":"json.exception.parse_error.104","text":"<p>RFC 6902 requires a JSON Patch document to be a JSON document that represents an array of objects.</p> <p>Example message</p> <pre><code>[json.exception.parse_error.104] parse error: JSON patch must be an array of objects\n</code></pre>"},{"location":"home/exceptions/#jsonexceptionparse_error105","title":"json.exception.parse_error.105","text":"<p>An operation of a JSON Patch document must contain exactly one \"op\" member, whose value indicates the operation to perform. Its value must be one of \"add\", \"remove\", \"replace\", \"move\", \"copy\", or \"test\"; other values are errors.</p> <p>Example message</p> <p><pre><code>[json.exception.parse_error.105] parse error: operation 'add' must have member 'value'\n</code></pre> <pre><code>[json.exception.parse_error.105] parse error: operation 'copy' must have string member 'from'\n</code></pre> <pre><code>[json.exception.parse_error.105] parse error: operation value 'foo' is invalid\n</code></pre></p>"},{"location":"home/exceptions/#jsonexceptionparse_error106","title":"json.exception.parse_error.106","text":"<p>An array index in a JSON Pointer (RFC 6901) may be <code>0</code> or any number without a leading <code>0</code>.</p> <p>Example message</p> <pre><code>[json.exception.parse_error.106] parse error: array index '01' must not begin with '0'\n</code></pre>"},{"location":"home/exceptions/#jsonexceptionparse_error107","title":"json.exception.parse_error.107","text":"<p>A JSON Pointer must be a Unicode string containing a sequence of zero or more reference tokens, each prefixed by a <code>/</code> character.</p> <p>Example message</p> <pre><code>[json.exception.parse_error.107] parse error at byte 1: JSON pointer must be empty or begin with '/' - was: 'foo'\n</code></pre>"},{"location":"home/exceptions/#jsonexceptionparse_error108","title":"json.exception.parse_error.108","text":"<p>In a JSON Pointer, only <code>~0</code> and <code>~1</code> are valid escape sequences.</p> <p>Example message</p> <pre><code>[json.exception.parse_error.108] parse error: escape character '~' must be followed with '0' or '1'\n</code></pre>"},{"location":"home/exceptions/#jsonexceptionparse_error109","title":"json.exception.parse_error.109","text":"<p>A JSON Pointer array index must be a number.</p> <p>Example messages</p> <p><pre><code>[json.exception.parse_error.109] parse error: array index 'one' is not a number\n</code></pre> <pre><code>[json.exception.parse_error.109] parse error: array index '+1' is not a number\n</code></pre></p>"},{"location":"home/exceptions/#jsonexceptionparse_error110","title":"json.exception.parse_error.110","text":"<p>When parsing CBOR or MessagePack, the byte vector ends before the complete value has been read.</p> <p>Example message</p> <p><pre><code>[json.exception.parse_error.110] parse error at byte 5: syntax error while parsing CBOR string: unexpected end of input\n</code></pre> <pre><code>[json.exception.parse_error.110] parse error at byte 2: syntax error while parsing UBJSON value: expected end of input; last byte: 0x5A\n</code></pre></p>"},{"location":"home/exceptions/#jsonexceptionparse_error112","title":"json.exception.parse_error.112","text":"<p>An unexpected byte was read in a binary format or length information is invalid (BSON).</p> <p>Example messages</p> <p><pre><code>[json.exception.parse_error.112] parse error at byte 1: syntax error while parsing CBOR value: invalid byte: 0x1C\n</code></pre> <pre><code>[json.exception.parse_error.112] parse error at byte 1: syntax error while parsing MessagePack value: invalid byte: 0xC1\n</code></pre> <pre><code>[json.exception.parse_error.112] parse error at byte 4: syntax error while parsing BJData size: expected '#' after type information; last byte: 0x02\n</code></pre> <pre><code>[json.exception.parse_error.112] parse error at byte 4: syntax error while parsing UBJSON size: expected '#' after type information; last byte: 0x02\n</code></pre> <pre><code>[json.exception.parse_error.112] parse error at byte 10: syntax error while parsing BSON string: string length must be at least 1, is -2147483648\n</code></pre> <pre><code>[json.exception.parse_error.112] parse error at byte 15: syntax error while parsing BSON binary: byte array length cannot be negative, is -1\n</code></pre></p>"},{"location":"home/exceptions/#jsonexceptionparse_error113","title":"json.exception.parse_error.113","text":"<p>While parsing a map key, a value that is not a string has been read.</p> <p>Example messages</p> <p><pre><code>[json.exception.parse_error.113] parse error at byte 2: syntax error while parsing CBOR string: expected length specification (0x60-0x7B) or indefinite string type (0x7F); last byte: 0xFF\n</code></pre> <pre><code>[json.exception.parse_error.113] parse error at byte 2: syntax error while parsing MessagePack string: expected length specification (0xA0-0xBF, 0xD9-0xDB); last byte: 0xFF\n</code></pre> <pre><code>[json.exception.parse_error.113] parse error at byte 2: syntax error while parsing UBJSON char: byte after 'C' must be in range 0x00..0x7F; last byte: 0x82\n</code></pre></p>"},{"location":"home/exceptions/#jsonexceptionparse_error114","title":"json.exception.parse_error.114","text":"<p>The parsing of the corresponding BSON record type is not implemented (yet).</p> <p>Example message</p> <pre><code>[json.exception.parse_error.114] parse error at byte 5: Unsupported BSON record type 0xFF\n</code></pre>"},{"location":"home/exceptions/#jsonexceptionparse_error115","title":"json.exception.parse_error.115","text":"<p>A UBJSON high-precision number could not be parsed.</p> <p>Example message</p> <pre><code>[json.exception.parse_error.115] parse error at byte 5: syntax error while parsing UBJSON high-precision number: invalid number text: 1A\n</code></pre>"},{"location":"home/exceptions/#iterator-errors","title":"Iterator errors","text":"<p>This exception is thrown if iterators passed to a library function do not match the expected semantics.</p> <p>Exceptions have ids 2xx.</p> Example <p>The following code shows how an <code>invalid_iterator</code> exception can be caught.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    try\n    {\n        // calling iterator::key() on non-object iterator\n        json j = \"string\";\n        json::iterator it = j.begin();\n        auto k = it.key();\n    }\n    catch (const json::invalid_iterator&amp; e)\n    {\n        // output exception information\n        std::cout &lt;&lt; \"message: \" &lt;&lt; e.what() &lt;&lt; '\\n'\n                  &lt;&lt; \"exception id: \" &lt;&lt; e.id &lt;&lt; std::endl;\n    }\n}\n</code></pre> <p>Output:</p> <pre><code>message: [json.exception.invalid_iterator.207] cannot use key() for non-object iterators\nexception id: 207\n</code></pre>"},{"location":"home/exceptions/#jsonexceptioninvalid_iterator201","title":"json.exception.invalid_iterator.201","text":"<p>The iterators passed to constructor <code>basic_json(InputIT first, InputIT last)</code> are not compatible, meaning they do not belong to the same container. Therefore, the range (<code>first</code>, <code>last</code>) is invalid.</p> <p>Example message</p> <pre><code>[json.exception.invalid_iterator.201] iterators are not compatible\n</code></pre>"},{"location":"home/exceptions/#jsonexceptioninvalid_iterator202","title":"json.exception.invalid_iterator.202","text":"<p>In the erase or insert function, the passed iterator <code>pos</code> does not belong to the JSON value for which the function was called. It hence does not define a valid position for the deletion/insertion.</p> <p>Example messages</p> <p><pre><code>[json.exception.invalid_iterator.202] iterator does not fit current value\n</code></pre> <pre><code>[json.exception.invalid_iterator.202] iterators first and last must point to objects\n</code></pre></p>"},{"location":"home/exceptions/#jsonexceptioninvalid_iterator203","title":"json.exception.invalid_iterator.203","text":"<p>Either iterator passed to function <code>erase(IteratorType first, IteratorType last</code>) does not belong to the JSON value from which values shall be erased. It hence does not define a valid range to delete values from.</p> <p>Example message</p> <pre><code>[json.exception.invalid_iterator.203] iterators do not fit current value\n</code></pre>"},{"location":"home/exceptions/#jsonexceptioninvalid_iterator204","title":"json.exception.invalid_iterator.204","text":"<p>When an iterator range for a primitive type (number, boolean, or string) is passed to a constructor or an erase function, this range has to be exactly (<code>begin(),</code> <code>end()),</code> because this is the only way the single stored value is expressed. All other ranges are invalid.</p> <p>Example message</p> <pre><code>[json.exception.invalid_iterator.204] iterators out of range\n</code></pre>"},{"location":"home/exceptions/#jsonexceptioninvalid_iterator205","title":"json.exception.invalid_iterator.205","text":"<p>When an iterator for a primitive type (number, boolean, or string) is passed to an erase function, the iterator has to be the <code>begin()</code> iterator, because it is the only way to address the stored value. All other iterators are invalid.</p> <p>Example message</p> <pre><code>[json.exception.invalid_iterator.205] iterator out of range\n</code></pre>"},{"location":"home/exceptions/#jsonexceptioninvalid_iterator206","title":"json.exception.invalid_iterator.206","text":"<p>The iterators passed to constructor <code>basic_json(InputIT first, InputIT last)</code> belong to a JSON null value and hence to not define a valid range.</p> <p>Example message</p> <pre><code>[json.exception.invalid_iterator.206] cannot construct with iterators from null\n</code></pre>"},{"location":"home/exceptions/#jsonexceptioninvalid_iterator207","title":"json.exception.invalid_iterator.207","text":"<p>The <code>key()</code> member function can only be used on iterators belonging to a JSON object, because other types do not have a concept of a key.</p> <p>Example message</p> <pre><code>[json.exception.invalid_iterator.207] cannot use key() for non-object iterators\n</code></pre>"},{"location":"home/exceptions/#jsonexceptioninvalid_iterator208","title":"json.exception.invalid_iterator.208","text":"<p>The <code>operator[]</code> to specify a concrete offset cannot be used on iterators belonging to a JSON object, because JSON objects are unordered.</p> <p>Example message</p> <pre><code>[json.exception.invalid_iterator.208] cannot use operator[] for object iterators\n</code></pre>"},{"location":"home/exceptions/#jsonexceptioninvalid_iterator209","title":"json.exception.invalid_iterator.209","text":"<p>The offset operators (<code>+</code>, <code>-</code>, <code>+=</code>, <code>-=</code>) cannot be used on iterators belonging to a JSON object, because JSON objects are unordered.</p> <p>Example message</p> <pre><code>[json.exception.invalid_iterator.209] cannot use offsets with object iterators\n</code></pre>"},{"location":"home/exceptions/#jsonexceptioninvalid_iterator210","title":"json.exception.invalid_iterator.210","text":"<p>The iterator range passed to the insert function is not compatible, meaning they do not belong to the same container. Therefore, the range (<code>first</code>, <code>last</code>) is invalid.</p> <p>Example message</p> <pre><code>[json.exception.invalid_iterator.210] iterators do not fit\n</code></pre>"},{"location":"home/exceptions/#jsonexceptioninvalid_iterator211","title":"json.exception.invalid_iterator.211","text":"<p>The iterator range passed to the insert function must not be a subrange of the container to insert to.</p> <p>Example message</p> <pre><code>[json.exception.invalid_iterator.211] passed iterators may not belong to container\n</code></pre>"},{"location":"home/exceptions/#jsonexceptioninvalid_iterator212","title":"json.exception.invalid_iterator.212","text":"<p>When two iterators are compared, they must belong to the same container.</p> <p>Example message</p> <pre><code>[json.exception.invalid_iterator.212] cannot compare iterators of different containers\n</code></pre>"},{"location":"home/exceptions/#jsonexceptioninvalid_iterator213","title":"json.exception.invalid_iterator.213","text":"<p>The order of object iterators cannot be compared, because JSON objects are unordered.</p> <p>Example message</p> <pre><code>[json.exception.invalid_iterator.213] cannot compare order of object iterators\n</code></pre>"},{"location":"home/exceptions/#jsonexceptioninvalid_iterator214","title":"json.exception.invalid_iterator.214","text":"<p>Cannot retrieve value from iterator: The iterator either refers to a null value, or it refers to a primitive type (number, boolean, or string), but does not match the iterator returned by <code>begin()</code>.</p> <p>Example message</p> <pre><code>[json.exception.invalid_iterator.214] cannot get value\n</code></pre>"},{"location":"home/exceptions/#type-errors","title":"Type errors","text":"<p>This exception is thrown in case of a type error; that is, a library function is executed on a JSON value whose type does not match the expected semantics.</p> <p>Exceptions have ids 3xx.</p> Example <p>The following code shows how a <code>type_error</code> exception can be caught.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    try\n    {\n        // calling push_back() on a string value\n        json j = \"string\";\n        j.push_back(\"another string\");\n    }\n    catch (const json::type_error&amp; e)\n    {\n        // output exception information\n        std::cout &lt;&lt; \"message: \" &lt;&lt; e.what() &lt;&lt; '\\n'\n                  &lt;&lt; \"exception id: \" &lt;&lt; e.id &lt;&lt; std::endl;\n    }\n}\n</code></pre> <p>Output:</p> <pre><code>message: [json.exception.type_error.308] cannot use push_back() with string\nexception id: 308\n</code></pre>"},{"location":"home/exceptions/#jsonexceptiontype_error301","title":"json.exception.type_error.301","text":"<p>To create an object from an initializer list, the initializer list must consist only of a list of pairs whose first element is a string. When this constraint is violated, an array is created instead.</p> <p>Example message</p> <pre><code>[json.exception.type_error.301] cannot create object from initializer list\n</code></pre>"},{"location":"home/exceptions/#jsonexceptiontype_error302","title":"json.exception.type_error.302","text":"<p>During implicit or explicit value conversion, the JSON type must be compatible with the target type. For instance, a JSON string can only be converted into string types, but not into numbers or boolean types.</p> <p>Example messages</p> <p><pre><code>[json.exception.type_error.302] type must be object, but is null\n</code></pre> <pre><code>[json.exception.type_error.302] type must be string, but is object\n</code></pre></p>"},{"location":"home/exceptions/#jsonexceptiontype_error303","title":"json.exception.type_error.303","text":"<p>To retrieve a reference to a value stored in a <code>basic_json</code> object with <code>get_ref</code>, the type of the reference must match the value type. For instance, for a JSON array, the <code>ReferenceType</code> must be <code>array_t &amp;</code>.</p> <p>Example messages</p> <p><pre><code>[json.exception.type_error.303] incompatible ReferenceType for get_ref, actual type is object\n</code></pre> <pre><code>[json.exception.type_error.303] incompatible ReferenceType for get_ref, actual type is number\"\n</code></pre></p>"},{"location":"home/exceptions/#jsonexceptiontype_error304","title":"json.exception.type_error.304","text":"<p>The <code>at()</code> member functions can only be executed for certain JSON types.</p> <p>Example messages</p> <p><pre><code>[json.exception.type_error.304] cannot use at() with string\n</code></pre> <pre><code>[json.exception.type_error.304] cannot use at() with number\n</code></pre></p>"},{"location":"home/exceptions/#jsonexceptiontype_error305","title":"json.exception.type_error.305","text":"<p>The <code>operator[]</code> member functions can only be executed for certain JSON types.</p> <p>Example messages</p> <p><pre><code>[json.exception.type_error.305] cannot use operator[] with a string argument with array\n</code></pre> <pre><code>[json.exception.type_error.305] cannot use operator[] with a numeric argument with object\n</code></pre></p>"},{"location":"home/exceptions/#jsonexceptiontype_error306","title":"json.exception.type_error.306","text":"<p>The <code>value()</code> member functions can only be executed for certain JSON types.</p> <p>Example message</p> <pre><code>[json.exception.type_error.306] cannot use value() with number\n</code></pre>"},{"location":"home/exceptions/#jsonexceptiontype_error307","title":"json.exception.type_error.307","text":"<p>The <code>erase()</code> member functions can only be executed for certain JSON types.</p> <p>Example message</p> <pre><code>[json.exception.type_error.307] cannot use erase() with string\n</code></pre>"},{"location":"home/exceptions/#jsonexceptiontype_error308","title":"json.exception.type_error.308","text":"<p>The <code>push_back()</code> and <code>operator+=</code> member functions can only be executed for certain JSON types.</p> <p>Example message</p> <pre><code>[json.exception.type_error.308] cannot use push_back() with string\n</code></pre>"},{"location":"home/exceptions/#jsonexceptiontype_error309","title":"json.exception.type_error.309","text":"<p>The <code>insert()</code> member functions can only be executed for certain JSON types.</p> <p>Example messages</p> <p><pre><code>[json.exception.type_error.309] cannot use insert() with array\n</code></pre> <pre><code>[json.exception.type_error.309] cannot use insert() with number\n</code></pre></p>"},{"location":"home/exceptions/#jsonexceptiontype_error310","title":"json.exception.type_error.310","text":"<p>The <code>swap()</code> member functions can only be executed for certain JSON types.</p> <p>Example message</p> <pre><code>[json.exception.type_error.310] cannot use swap() with number\n</code></pre>"},{"location":"home/exceptions/#jsonexceptiontype_error311","title":"json.exception.type_error.311","text":"<p>The <code>emplace()</code> and <code>emplace_back()</code> member functions can only be executed for certain JSON types.</p> <p>Example messages</p> <p><pre><code>[json.exception.type_error.311] cannot use emplace() with number\n</code></pre> <pre><code>[json.exception.type_error.311] cannot use emplace_back() with number\n</code></pre></p>"},{"location":"home/exceptions/#jsonexceptiontype_error312","title":"json.exception.type_error.312","text":"<p>The <code>update()</code> member functions can only be executed for certain JSON types.</p> <p>Example message</p> <pre><code>[json.exception.type_error.312] cannot use update() with array\n</code></pre>"},{"location":"home/exceptions/#jsonexceptiontype_error313","title":"json.exception.type_error.313","text":"<p>The <code>unflatten</code> function converts an object whose keys are JSON Pointers back into an arbitrary nested JSON value. The JSON Pointers must not overlap, because then the resulting value would not be well-defined.</p> <p>Example message</p> <pre><code>[json.exception.type_error.313] invalid value to unflatten\n</code></pre>"},{"location":"home/exceptions/#jsonexceptiontype_error314","title":"json.exception.type_error.314","text":"<p>The <code>unflatten</code> function only works for an object whose keys are JSON Pointers.</p> <p>Example message</p> <p>Calling <code>unflatten()</code> on an array <code>[1,2,3]</code>:</p> <pre><code>[json.exception.type_error.314] only objects can be unflattened\n</code></pre>"},{"location":"home/exceptions/#jsonexceptiontype_error315","title":"json.exception.type_error.315","text":"<p>The <code>unflatten()</code> function only works for an object whose keys are JSON Pointers and whose values are primitive.</p> <p>Example message</p> <p>Calling <code>unflatten()</code> on an object <code>{\"/1\", [1,2,3]}</code>:</p> <pre><code>[json.exception.type_error.315] values in object must be primitive\n</code></pre>"},{"location":"home/exceptions/#jsonexceptiontype_error316","title":"json.exception.type_error.316","text":"<p>The <code>dump()</code> function only works with UTF-8 encoded strings; that is, if you assign a <code>std::string</code> to a JSON value, make sure it is UTF-8 encoded.</p> <p>Example message</p> <p>Calling <code>dump()</code> on a JSON value containing an ISO 8859-1 encoded string: <pre><code>[json.exception.type_error.316] invalid UTF-8 byte at index 15: 0x6F\n</code></pre></p> <p>Tip</p> <ul> <li>Store the source file with UTF-8 encoding.</li> <li>Pass an error handler as last parameter to the <code>dump()</code> function to avoid this exception:<ul> <li><code>json::error_handler_t::replace</code> will replace invalid bytes sequences with <code>U+FFFD</code> </li> <li><code>json::error_handler_t::ignore</code> will silently ignore invalid byte sequences</li> </ul> </li> </ul>"},{"location":"home/exceptions/#jsonexceptiontype_error317","title":"json.exception.type_error.317","text":"<p>The dynamic type of the object cannot be represented in the requested serialization format (e.g., a raw <code>true</code> or <code>null</code> JSON object cannot be serialized to BSON)</p> <p>Example messages</p> <p>Serializing <code>null</code> to BSON: <pre><code>[json.exception.type_error.317] to serialize to BSON, top-level type must be object, but is null\n</code></pre> Serializing <code>[1,2,3]</code> to BSON: <pre><code>[json.exception.type_error.317] to serialize to BSON, top-level type must be object, but is array\n</code></pre></p> <p>Tip</p> <p>Encapsulate the JSON value in an object. That is, instead of serializing <code>true</code>, serialize <code>{\"value\": true}</code></p>"},{"location":"home/exceptions/#out-of-range","title":"Out of range","text":"<p>This exception is thrown in case a library function is called on an input parameter that exceeds the expected range, for instance, in the case of array indices or nonexisting object keys.</p> <p>Exceptions have ids 4xx.</p> Example <p>The following code shows how an <code>out_of_range</code> exception can be caught.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    try\n    {\n        // calling at() for an invalid index\n        json j = {1, 2, 3, 4};\n        j.at(4) = 10;\n    }\n    catch (const json::out_of_range&amp; e)\n    {\n        // output exception information\n        std::cout &lt;&lt; \"message: \" &lt;&lt; e.what() &lt;&lt; '\\n'\n                  &lt;&lt; \"exception id: \" &lt;&lt; e.id &lt;&lt; std::endl;\n    }\n}\n</code></pre> <p>Output:</p> <pre><code>message: [json.exception.out_of_range.401] array index 4 is out of range\nexception id: 401\n</code></pre>"},{"location":"home/exceptions/#jsonexceptionout_of_range401","title":"json.exception.out_of_range.401","text":"<p>The provided array index <code>i</code> is larger than <code>size-1</code>.</p> <p>Example message</p> <pre><code>array index 3 is out of range\n</code></pre>"},{"location":"home/exceptions/#jsonexceptionout_of_range402","title":"json.exception.out_of_range.402","text":"<p>The special array index <code>-</code> in a JSON Pointer never describes a valid element of the array, but the index past the end. That is, it can only be used to add elements at this position, but not to read it.</p> <p>Example message</p> <pre><code>array index '-' (3) is out of range\n</code></pre>"},{"location":"home/exceptions/#jsonexceptionout_of_range403","title":"json.exception.out_of_range.403","text":"<p>The provided key was not found in the JSON object.</p> <p>Example message</p> <pre><code>key 'foo' not found\n</code></pre>"},{"location":"home/exceptions/#jsonexceptionout_of_range404","title":"json.exception.out_of_range.404","text":"<p>A reference token in a JSON Pointer could not be resolved.</p> <p>Example message</p> <pre><code>unresolved reference token 'foo'\n</code></pre>"},{"location":"home/exceptions/#jsonexceptionout_of_range405","title":"json.exception.out_of_range.405","text":"<p>The JSON Patch operations 'remove' and 'add' cannot be applied to the root element of the JSON value.</p> <p>Example message</p> <pre><code>JSON pointer has no parent\n</code></pre>"},{"location":"home/exceptions/#jsonexceptionout_of_range406","title":"json.exception.out_of_range.406","text":"<p>A parsed number could not be stored as without changing it to NaN or INF.</p> <p>Example message</p> <pre><code>number overflow parsing '10E1000'\n</code></pre>"},{"location":"home/exceptions/#jsonexceptionout_of_range407","title":"json.exception.out_of_range.407","text":"<p>This exception previously indicated that the UBJSON and BSON binary formats did not support integer numbers greater than 9223372036854775807 due to limitations in the implemented mapping. However, these limitations have since been resolved, and this exception no longer occurs.</p> <p>Exception cannot occur any more</p> <ul> <li>Since version 3.9.0, integer numbers beyond int64 are serialized as high-precision UBJSON numbers.</li> <li>Since version 3.12.0, integer numbers beyond int64 are serialized as uint64 BSON numbers.</li> </ul>"},{"location":"home/exceptions/#jsonexceptionout_of_range408","title":"json.exception.out_of_range.408","text":"<p>The size (following <code>#</code>) of an UBJSON array or object exceeds the maximal capacity.</p> <p>Example message</p> <pre><code>excessive array size: 8658170730974374167\n</code></pre>"},{"location":"home/exceptions/#jsonexceptionout_of_range409","title":"json.exception.out_of_range.409","text":"<p>Key identifiers to be serialized to BSON cannot contain code point U+0000, since the key is stored as zero-terminated c-string.</p> <p>Example message</p> <pre><code>BSON key cannot contain code point U+0000 (at byte 2)\n</code></pre>"},{"location":"home/exceptions/#jsonexceptionout_of_range410","title":"json.exception.out_of_range.410","text":"<p>This exception is thrown when an undefined value is used with <code>NLOHMANN_JSON_SERIALIZE_ENUM_STRICT</code>, or when an array index in a JSON pointer exceeds the range of <code>size_type</code> (e.g., on 32-bit platforms).</p> <p>Example message</p> <pre><code>enum value out of range\narray index 18446744073709551616 exceeds size_type\n</code></pre>"},{"location":"home/exceptions/#further-exceptions","title":"Further exceptions","text":"<p>This exception is thrown in case of errors that cannot be classified with the other exception types.</p> <p>Exceptions have ids 5xx.</p> Example <p>The following code shows how an <code>other_error</code> exception can be caught.</p> <pre><code>#include &lt;iostream&gt;\n#include &lt;nlohmann/json.hpp&gt;\n\nusing json = nlohmann::json;\nusing namespace nlohmann::literals;\n\nint main()\n{\n    try\n    {\n        // executing a failing JSON Patch operation\n        json value = R\"({\n            \"best_biscuit\": {\n                \"name\": \"Oreo\"\n            }\n        })\"_json;\n        json patch = R\"([{\n            \"op\": \"test\",\n            \"path\": \"/best_biscuit/name\",\n            \"value\": \"Choco Leibniz\"\n        }])\"_json;\n        value.patch(patch);\n    }\n    catch (const json::other_error&amp; e)\n    {\n        // output exception information\n        std::cout &lt;&lt; \"message: \" &lt;&lt; e.what() &lt;&lt; '\\n'\n                  &lt;&lt; \"exception id: \" &lt;&lt; e.id &lt;&lt; std::endl;\n    }\n}\n</code></pre> <p>Output:</p> <pre><code>message: [json.exception.other_error.501] unsuccessful: {\"op\":\"test\",\"path\":\"/best_biscuit/name\",\"value\":\"Choco Leibniz\"}\nexception id: 501\n</code></pre>"},{"location":"home/exceptions/#jsonexceptionother_error501","title":"json.exception.other_error.501","text":"<p>A JSON Patch operation 'test' failed. The unsuccessful operation is also printed.</p> <p>Example message</p> <p>Executing <code>{\"op\":\"test\", \"path\":\"/baz\", \"value\":\"bar\"}</code> on <code>{\"baz\": \"qux\"}</code>:</p> <pre><code>[json.exception.other_error.501] unsuccessful: {\"op\":\"test\",\"path\":\"/baz\",\"value\":\"bar\"}\n</code></pre>"},{"location":"home/faq/","title":"Frequently Asked Questions (FAQ)","text":""},{"location":"home/faq/#known-bugs","title":"Known bugs","text":""},{"location":"home/faq/#brace-initialization-yields-arrays","title":"Brace initialization yields arrays","text":"<p>Question</p> <p>Why does</p> <pre><code>json j{true};\n</code></pre> <p>and</p> <pre><code>json j(true);\n</code></pre> <p>yield different results (<code>[true]</code> vs. <code>true</code>)?</p> <p>This is a known issue, and -- even worse -- the behavior differs between GCC and Clang. The \"culprit\" for this is the library's constructor overloads for initializer lists to allow syntax like</p> <pre><code>json array = {1, 2, 3, 4};\n</code></pre> <p>for arrays and</p> <pre><code>json object = {{\"one\", 1}, {\"two\", 2}}; \n</code></pre> <p>for objects.</p> <p>Tip</p> <p>To avoid any confusion and ensure portable code, do not use brace initialization with the types <code>basic_json</code>, <code>json</code>, or <code>ordered_json</code> unless you want to create an object or array as shown in the examples above.</p> <p>To explicitly create a single-element array, use <code>json::array({value})</code>:</p> <pre><code>json j = json::array({true});  // [true]\n</code></pre> <p>Opt-in copy semantics (since version 3.12.0)</p> <p>If you define <code>JSON_BRACE_INIT_COPY_SEMANTICS</code> to <code>1</code> before including the library, single-element brace initialization is treated as copy/move instead of creating a single-element array:</p> <pre><code>#define JSON_BRACE_INIT_COPY_SEMANTICS 1\n#include &lt;nlohmann/json.hpp&gt;\n\njson obj = {{\"key\", \"value\"}};\njson j{obj};   // -&gt; {\"key\":\"value\"}  (copy, not array)\n</code></pre> <p>Without the macro (default behavior), <code>json j{obj}</code> creates <code>[{\"key\":\"value\"}]</code>. This opt-in macro fixes issue #5074 while preserving backwards compatibility for existing code.</p>"},{"location":"home/faq/#limitations","title":"Limitations","text":""},{"location":"home/faq/#relaxed-parsing","title":"Relaxed parsing","text":"<p>Question</p> <p>Can you add an option to ignore trailing commas?</p> <p>This library does not support any feature that would jeopardize interoperability.</p>"},{"location":"home/faq/#parse-errors-reading-non-ascii-characters","title":"Parse errors reading non-ASCII characters","text":"<p>Questions</p> <ul> <li>Why is the parser complaining about a Chinese character?</li> <li>Does the library support Unicode?</li> <li>I get an exception <code>[json.exception.parse_error.101] parse error at line 1, column 53: syntax error while parsing value - invalid string: ill-formed UTF-8 byte; last read: '\"Test\u00e9$')\"</code></li> </ul> <p>The library supports Unicode input as follows:</p> <ul> <li>Only UTF-8 encoded input is supported, which is the default encoding for JSON, according to RFC 8259.</li> <li><code>std::u16string</code> and <code>std::u32string</code> can be parsed, assuming UTF-16 and UTF-32 encoding, respectively. These encodings are not supported when reading from files or other input containers.</li> <li>Other encodings such as Latin-1 or ISO 8859-1 are not supported and will yield parse or serialization errors.</li> <li>The library will not replace Unicode noncharacters.</li> <li>Invalid surrogates (e.g., incomplete pairs such as <code>\\uDEAD</code>) will yield parse errors.</li> <li>The strings stored in the library are UTF-8 encoded. When using the default string type (<code>std::string</code>), note that its length/size functions return the number of stored bytes rather than the number of characters or glyphs.</li> <li>When you store strings with different encodings in the library, calling <code>dump()</code> may throw an exception unless <code>json::error_handler_t::replace</code> or <code>json::error_handler_t::ignore</code> are used as error handlers.</li> </ul> <p>In most cases, the parser is right to complain, because the input is not UTF-8 encoded. This is especially true for Microsoft Windows, where Latin-1 or ISO 8859-1 is often the standard encoding.</p>"},{"location":"home/faq/#wide-string-handling","title":"Wide string handling","text":"<p>Question</p> <p>Why are wide strings (e.g., <code>std::wstring</code>) dumped as arrays of numbers?</p> <p>As described above, the library assumes UTF-8 as encoding.  To store a wide string, you need to change the encoding.</p> <p>Example</p> <pre><code>#include &lt;codecvt&gt; // codecvt_utf8\n#include &lt;locale&gt;  // wstring_convert\n\n// encoding function\nstd::string to_utf8(std::wstring&amp; wide_string)\n{\n    static std::wstring_convert&lt;std::codecvt_utf8&lt;wchar_t&gt;&gt; utf8_conv;\n    return utf8_conv.to_bytes(wide_string);\n}\n\njson j;\nstd::wstring ws = L\"\u8ecaB1234 \u3053\u3093\u306b\u3061\u306f\";\n\nj[\"original\"] = ws;\nj[\"encoded\"] = to_utf8(ws);\n\nstd::cout &lt;&lt; j &lt;&lt; std::endl;\n</code></pre> <p>The result is:</p> <pre><code>{\n  \"encoded\": \"\u8ecaB1234 \u3053\u3093\u306b\u3061\u306f\",\n  \"original\": [36554, 66, 49, 50, 51, 52, 32, 12371, 12435, 12395, 12385, 12399]\n}\n</code></pre>"},{"location":"home/faq/#exceptions","title":"Exceptions","text":""},{"location":"home/faq/#parsing-without-exceptions","title":"Parsing without exceptions","text":"<p>Question</p> <p>Is it possible to indicate a parse error without throwing an exception?</p> <p>Yes, see Parsing and exceptions.</p>"},{"location":"home/faq/#key-name-in-exceptions","title":"Key name in exceptions","text":"<p>Question</p> <p>Can I get the key of the object item that caused an exception?</p> <p>Yes, you can. Please define the symbol <code>JSON_DIAGNOSTICS</code> to get extended diagnostics messages.</p>"},{"location":"home/faq/#serialization-issues","title":"Serialization issues","text":""},{"location":"home/faq/#number-precision","title":"Number precision","text":"<p>Question</p> <ul> <li>It seems that precision is lost when serializing a double.</li> <li>Can I change the precision for floating-point serialization?</li> </ul> <p>The library uses <code>std::numeric_limits&lt;number_float_t&gt;::digits10</code> (15 for IEEE <code>double</code>s) digits for serialization. This value is sufficient to guarantee roundtripping. If one uses more than this number of digits of precision, then string -&gt; value -&gt; string is not guaranteed to round-trip.</p> <p>cppreference.com</p> <p>The value of <code>std::numeric_limits&lt;T&gt;::digits10</code> is the number of base-10 digits that can be represented by the type T without change, that is, any number with this many significant decimal digits can be converted to a value of type T and back to decimal form, without change due to rounding or overflow. </p> <p>Tip</p> <p>The website https://float.exposed gives a good insight into the internal storage of floating-point numbers.</p> <p>See this section on the library's number handling for more information.</p>"},{"location":"home/faq/#compilation-issues","title":"Compilation issues","text":""},{"location":"home/faq/#android-sdk","title":"Android SDK","text":"<p>Question</p> <p>Why does the code not compile with Android SDK?</p> <p>Android defaults to using very old compilers and C++ libraries. To fix this, add the following to your <code>Application.mk</code>. This will switch to the LLVM C++ library, the Clang compiler, and enable C++11 and other features disabled by default.</p> <pre><code>APP_STL := c++_shared\nNDK_TOOLCHAIN_VERSION := clang3.6\nAPP_CPPFLAGS += -frtti -fexceptions\n</code></pre> <p>The code compiles successfully with Android NDK, Revision 9 - 11 (and possibly later) and CrystaX's Android NDK version 10.</p>"},{"location":"home/faq/#missing-stl-function","title":"Missing STL function","text":"<p>Questions</p> <ul> <li>Why do I get a compilation error <code>'to_string' is not a member of 'std'</code> (or similarly, for <code>strtod</code> or <code>strtof</code>)?</li> <li>Why does the code not compile with MinGW or Android SDK?</li> </ul> <p>This is not an issue with the code, but rather with the compiler itself. On Android, see above to build with a newer environment.  For MinGW, please refer to this site and this discussion for information on how to fix this bug. For Android NDK using <code>APP_STL := gnustl_static</code>, please refer to this discussion.</p>"},{"location":"home/license/","title":"License","text":"<p>The class is licensed under the MIT License:</p> <p>Copyright \u00a9 2013-2026 Niels Lohmann</p> <p>Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \u201cSoftware\u201d), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:</p> <p>The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.</p> <p>THE SOFTWARE IS PROVIDED \u201cAS IS\u201d, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.</p> <p>The class contains the UTF-8 Decoder from Bjoern Hoehrmann which is licensed under the MIT License (see above). Copyright \u00a9 2008-2009 Bj\u00f6rn Hoehrmann bjoern@hoehrmann.de</p> <p>The class contains a slightly modified version of the Grisu2 algorithm from Florian Loitsch which is licensed under the MIT License (see above). Copyright \u00a9 2009 Florian Loitsch</p> <p>The class contains a copy of Hedley from Evan Nemerson which is licensed as CC0-1.0.</p>"},{"location":"home/releases/","title":"Releases","text":"<p>This page summarizes the notable changes of every release and links to the relevant documentation. The complete release notes \u2014 including all changes, the download files, and their checksums \u2014 are published on the GitHub releases page.</p>"},{"location":"home/releases/#v3120-2025-04-11","title":"v3.12.0 (2025-04-11)","text":"<p>Fixes bugs found in 3.11.3 and adds several features. All changes are backward-compatible.</p> <ul> <li>Adds diagnostic byte positions via <code>JSON_DIAGNOSTIC_POSITIONS</code>,   exposed through the new <code>start_pos</code> and   <code>end_pos</code> member functions.</li> <li>Makes the conversion macros   templated (so they also work with <code>ordered_json</code>) and adds   <code>NLOHMANN_DEFINE_DERIVED_TYPE</code> for derived classes.</li> <li>Adds <code>std::optional</code> support (C++17) and lets <code>patch</code>,   <code>diff</code>, and <code>flatten</code> work with   arbitrary string types.</li> <li>Extends the binary formats:   BJData draft 3 and unsigned 64-bit integers for   BSON.</li> <li>Adds multidimensional C-array conversion and UTF-8 encoded <code>std::filesystem::path</code> conversions, and   lowers the minimum CMake version to allow CMake 4.0.</li> </ul> <p>Full release notes.</p>"},{"location":"home/releases/#v3113-2023-11-28","title":"v3.11.3 (2023-11-28)","text":"<p>Adds features and fixes bugs found in 3.11.2. All changes are backward-compatible.</p> <ul> <li>Adds a custom base class as a node customization point.</li> <li>Adds serialization-only conversion macros   (<code>NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE</code> and <code>NLOHMANN_DEFINE_TYPE_INTRUSIVE_ONLY_SERIALIZE</code>)   and a clearer parse error for empty input.</li> <li>Adds Bazel and   Swift Package Manager build support.</li> <li>Fixes custom allocators, a memory leak in <code>adl_serializer</code>'s   <code>to_json</code>, initializer-list construction when <code>size_type</code> is not <code>int</code>, and many compiler warnings.</li> </ul> <p>Full release notes.</p>"},{"location":"home/releases/#v3112-2022-08-12","title":"v3.11.2 (2022-08-12)","text":"<p>Fixes bugs found in 3.11.1 and restructures the namespace. All changes are backward-compatible.</p> <ul> <li>Fixes the <code>value</code> function (broken for strings, size types, and   <code>nullptr</code> in 3.11.0) and makes <code>json_fwd.hpp</code> self-contained.</li> <li>Restores using <code>json_pointer</code> as a key in associative containers and   comparing it with strings.</li> <li>Restructures the inline namespace and allows disabling the version   component, and avoids heap allocations in the BJData parser.</li> </ul> <p>Full release notes.</p>"},{"location":"home/releases/#v3111-2022-08-01","title":"v3.11.1 (2022-08-01)","text":"<p>Fixes a regression from 3.11.0. All changes are backward-compatible.</p> <ul> <li>Restores the global user-defined string literals <code>operator\"\"_json</code> and   <code>operator\"\"_json_pointer</code>, which 3.11.0 had moved into a   namespace by default.</li> </ul> <p>Full release notes.</p>"},{"location":"home/releases/#v3110-2022-08-01","title":"v3.11.0 (2022-08-01)","text":"<p>One of the largest releases ever. All changes are backward-compatible.</p> <ul> <li>Allows <code>std::string_view</code> as object keys in <code>at</code>,   <code>operator[]</code>, <code>value</code>,   <code>erase</code>, <code>find</code>,   <code>contains</code>, and <code>count</code>.</li> <li>Adds the BJData binary format (the fifth supported format).</li> <li>Improves C++20 support, including <code>operator&lt;=&gt;</code> and   <code>&lt;ranges&gt;</code>-compatible iterators.</li> <li>Adds a versioned, ABI-tagged inline namespace   (<code>NLOHMANN_JSON_NAMESPACE</code>) and the option to move the   UDLs out of the global namespace (<code>JSON_USE_GLOBAL_UDLS</code>).</li> <li>Adds <code>patch_inplace</code>, default values for the   conversion macros, and an option to   disable enum serialization (<code>JSON_DISABLE_ENUM_SERIALIZATION</code>).</li> </ul> <p>This release introduced a UDL regression that was fixed in 3.11.1. Full release notes.</p>"},{"location":"home/releases/#v3105-2022-01-03","title":"v3.10.5 (2022-01-03)","text":"<p>Bug-fix release. All changes are backward-compatible.</p> <ul> <li>Guards the <code>std::filesystem</code> conversions behind compiler-support checks   (<code>JSON_HAS_FILESYSTEM</code>), which can be set to <code>0</code> to disable   them altogether.</li> </ul> <p>Full release notes.</p>"},{"location":"home/releases/#v3104-2021-10-16","title":"v3.10.4 (2021-10-16)","text":"<p>Fixes regressions introduced in 3.10.0. All changes are backward-compatible.</p> <ul> <li>Fixes the <code>std::filesystem::path</code> conversion (which could trigger a stack overflow and broke   compilation on Windows).</li> <li>Fixes compilation for types with an explicit defaulted constructor and for code relying on the   return values of <code>std::find</code> and <code>std::remove</code>.</li> </ul> <p>Full release notes.</p>"},{"location":"home/releases/#v3103-2021-10-08","title":"v3.10.3 (2021-10-08)","text":"<p>Fixes more regressions from 3.10.0. All changes are backward-compatible.</p> <ul> <li>Fixes extended-diagnostics assertions triggered by   <code>update</code> and by inserting into arrays.</li> <li>Supports custom allocators when writing binary formats into a <code>std::vector</code>, and allows conversion   from types that only provide <code>begin()</code>/<code>end()</code>.</li> </ul> <p>Full release notes.</p>"},{"location":"home/releases/#v3102-2021-08-26","title":"v3.10.2 (2021-08-26)","text":"<p>Re-release of 3.10.1, whose Git tag pointed at the wrong commit due to a bug in the release script. All changes are backward-compatible. Full release notes.</p>"},{"location":"home/releases/#v3101-2021-08-24","title":"v3.10.1 (2021-08-24)","text":"<p>Fixes a regression from 3.10.0. All changes are backward-compatible.</p> <ul> <li>Fixes an extended-diagnostics assertion triggered when used   with <code>ordered_json</code>, and hardens the GDB pretty-printer.</li> </ul> <p>Full release notes.</p>"},{"location":"home/releases/#v3100-2021-08-17","title":"v3.10.0 (2021-08-17)","text":"<p>Feature release. All changes are backward-compatible.</p> <ul> <li>Adds extended diagnostic messages   (<code>JSON_DIAGNOSTICS</code>) that prepend a JSON pointer to exception   messages to pinpoint the offending value.</li> <li>Adds a GDB pretty-printer and a <code>cbor_tag_handler_t</code> <code>store</code> option to keep CBOR tags as binary subtypes.</li> <li>Supports containers with non-default-constructible types and parsing from <code>std::byte</code>.</li> <li>Adds <code>JSON_NO_IO</code> to exclude the I/O headers and the   <code>JSON_HAS_CPP_*</code> macros to override the detected C++ standard.</li> </ul> <p>Full release notes.</p>"},{"location":"home/releases/#v391-2020-08-06","title":"v3.9.1 (2020-08-06)","text":"<p>Fixes two regressions from 3.9.0. All changes are backward-compatible.</p> <ul> <li>Accepts consecutive comments and completes the   <code>ordered_json</code> interface (e.g. <code>ordered_json::parse</code>).</li> </ul> <p>Full release notes.</p>"},{"location":"home/releases/#v390-2020-07-27","title":"v3.9.0 (2020-07-27)","text":"<p>Feature release adding four long-requested features. All changes are backward-compatible.</p> <ul> <li>Optional comment parsing in <code>parse</code> via the   <code>ignore_comments</code> parameter.</li> <li><code>ordered_json</code> to preserve the insertion order   of object keys.</li> <li>An option to switch off implicit conversions.</li> <li>The <code>NLOHMANN_DEFINE_TYPE_*</code>   convenience macros, plus high-precision-number support for   UBJSON and CBOR tag handling.</li> </ul> <p>Full release notes.</p>"},{"location":"home/releases/#v380-2020-06-14","title":"v3.8.0 (2020-06-14)","text":"<p>Feature release. All changes are backward-compatible.</p> <ul> <li>Introduces a binary value type that is read from and written to   CBOR, BSON, and   MessagePack, and can be shared between formats.</li> <li>Generalizes the input adapters to read from any <code>LegacyInputIterator</code> container (3\u201310 % faster   parsing).</li> <li>Fixes <code>contains</code> for JSON pointers and makes the binary   <code>from_cbor</code>/<code>from_msgpack</code>/etc.   functions respect <code>allow_exceptions</code>.</li> </ul> <p>Full release notes.</p>"},{"location":"home/releases/#v373-2019-11-17","title":"v3.7.3 (2019-11-17)","text":"<p>Fixes a regression from 3.7.2 that could yield quadratic complexity in destructor calls. All changes are backward-compatible. Full release notes.</p>"},{"location":"home/releases/#v372-2019-11-10","title":"v3.7.2 (2019-11-10)","text":"<p>Fixes a stack overflow for deeply nested input by making the destructor iterative; parsing is now bounded only by available memory. All changes are backward-compatible. Full release notes.</p>"},{"location":"home/releases/#v371-2019-11-06","title":"v3.7.1 (2019-11-06)","text":"<p>Bug-fix release. All changes are backward-compatible.</p> <ul> <li>Fixes a segmentation fault when serializing the <code>std::int64_t</code> minimum value and fixes   <code>contains</code> for JSON pointers.</li> <li>Allows <code>items</code> with a custom string type and makes <code>json_pointer::back</code> <code>const</code>.</li> </ul> <p>Full release notes.</p>"},{"location":"home/releases/#v370-2019-07-28","title":"v3.7.0 (2019-07-28)","text":"<p>Convenience features and house-keeping. All changes are backward-compatible.</p> <ul> <li>Adds a <code>contains</code> overload that checks a JSON pointer without   throwing, a generic <code>to_string</code>, and a return value for   <code>emplace_back</code>.</li> </ul> <p>Full release notes.</p>"},{"location":"home/releases/#v361-2019-03-20","title":"v3.6.1 (2019-03-20)","text":"<p>Fixes a regression (GCC 7/8 compilation) and a <code>&lt;Windows.h&gt;</code> build error introduced in 3.6.0. All changes are backward-compatible. Full release notes.</p>"},{"location":"home/releases/#v360-2019-03-20","title":"v3.6.0 (2019-03-20)","text":"<p>Feature release. All changes are backward-compatible.</p> <ul> <li>Reworks the JSON pointer interface (<code>operator/</code>, <code>push_back</code>,   <code>parent_pointer</code>, \u2026).</li> <li>Adds a <code>contains</code> function to test for an object key and greatly   improves the performance of integer serialization.</li> </ul> <p>Full release notes.</p>"},{"location":"home/releases/#v350-2018-12-22","title":"v3.5.0 (2018-12-22)","text":"<p>Feature release. All changes are backward-compatible.</p> <ul> <li>Adds structured-binding support via the <code>items</code> function and reading   from <code>FILE*</code> in the <code>parse</code> function.</li> <li>Fixes the <code>eofbit</code> handling on input streams and a bug in the BSON SAX parser.</li> </ul> <p>Full release notes.</p>"},{"location":"home/releases/#v340-2018-10-30","title":"v3.4.0 (2018-10-30)","text":"<p>Feature release. All changes are backward-compatible.</p> <ul> <li>Adds BSON read/write support.</li> <li>Adds configurable Unicode error handlers to <code>dump</code> (throw, replace with   U+FFFD, or ignore) and the   <code>NLOHMANN_JSON_SERIALIZE_ENUM</code> macro for   enum conversion.</li> <li>Improves parse-error messages with line/column positions and context.</li> </ul> <p>Full release notes.</p>"},{"location":"home/releases/#v330-2018-10-05","title":"v3.3.0 (2018-10-05)","text":"<p>Feature release. All changes are backward-compatible.</p> <ul> <li>Adds GCC 4.8 support, the <code>get_to</code> function, and an overhauled and   documented CMake integration.</li> </ul> <p>Full release notes.</p>"},{"location":"home/releases/#v320-2018-08-20","title":"v3.2.0 (2018-08-20)","text":"<p>Feature release. All changes are backward-compatible.</p> <ul> <li>Adds a SAX interface and a non-recursive parser.</li> <li>Adds parsing from wide-string types (<code>std::wstring</code>, <code>std::u16string</code>, <code>std::u32string</code>) and   <code>std::string_view</code> (C++17), and round-tripping of <code>std::map</code>/<code>std::unordered_map</code> with non-string   keys.</li> </ul> <p>Full release notes.</p>"},{"location":"home/releases/#v312-2018-03-14","title":"v3.1.2 (2018-03-14)","text":"<p>Bug-fix release. All changes are backward-compatible.</p> <ul> <li>Fixes a memory leak in the parser callback and adds user-defined string-type support to the parser   and serializer.</li> </ul> <p>Full release notes.</p>"},{"location":"home/releases/#v311-2018-02-13","title":"v3.1.1 (2018-02-13)","text":"<p>Bug-fix release. All changes are backward-compatible.</p> <ul> <li>Fixes parsing of indefinite-length CBOR strings, a user-defined conversion to vector types, and   overflow detection for UBJSON containers.</li> </ul> <p>Full release notes.</p>"},{"location":"home/releases/#v310-2018-02-01","title":"v3.1.0 (2018-02-01)","text":"<p>Feature release. All changes are backward-compatible.</p> <ul> <li>Adds UBJSON read/write support and   JSON Merge Patch via <code>merge_patch</code>.</li> <li>Switches to the Grisu2 algorithm for short, round-trippable floating-point output, and splits the   header into multiple files with a forward-declaration header.</li> </ul> <p>Full release notes.</p>"},{"location":"home/releases/#v301-2017-12-29","title":"v3.0.1 (2017-12-29)","text":"<p>Fixes small issues in the JSON Pointer and JSON Patch implementations (invalid \"copy\" targets and non-integer array indices). All changes are backward-compatible. Full release notes.</p>"},{"location":"home/releases/#v300-2017-12-17","title":"v3.0.0 (2017-12-17)","text":"<p>First 3.x release \u2014 a major release with breaking changes (see the migration guide).</p> <ul> <li>Introduces user-defined exceptions (<code>json::exception</code> and subtypes, each with an   identifier).</li> <li>Adds a non-throwing <code>accept</code> function and an <code>allow_exceptions</code> flag   for <code>parse</code>, and an <code>update</code> function to   merge objects.</li> <li>Adds streaming for CBOR and MessagePack and allows storing NaN/infinity.</li> <li>Non-UTF-8 strings now throw on serialization, and the iterator category changed to bidirectional.</li> </ul> <p>Full release notes.</p>"},{"location":"home/releases/#v211-2017-02-25","title":"v2.1.1 (2017-02-25)","text":"<p>Bug-fix release. All changes are backward-compatible.</p> <ul> <li>Makes number parsing and serialization locale-independent with correct floating-point   round-tripping; released files are now GPG-signed.</li> </ul> <p>Full release notes.</p>"},{"location":"home/releases/#v210-2017-01-28","title":"v2.1.0 (2017-01-28)","text":"<p>Feature release. All changes are backward-compatible.</p> <ul> <li>Adds conversions from and to arbitrary user-defined types via   <code>to_json</code>/<code>from_json</code>, the <code>meta</code> function, and the option to switch off   exceptions (<code>JSON_NOEXCEPTION</code>).</li> </ul> <p>Full release notes.</p>"},{"location":"home/releases/#v2010-2017-01-02","title":"v2.0.10 (2017-01-02)","text":"<p>Fixes several security-relevant bugs in the CBOR and MessagePack parsers found by OSS-Fuzz. All changes are backward-compatible. Full release notes.</p>"},{"location":"home/releases/#v209-2016-12-16","title":"v2.0.9 (2016-12-16)","text":"<p>Adds the CBOR and MessagePack binary formats. All changes are backward-compatible. Full release notes.</p>"},{"location":"home/releases/#v208-2016-12-02","title":"v2.0.8 (2016-12-02)","text":"<p>Adds the <code>emplace</code> and <code>emplace_back</code> functions and improves parsing and serialization performance. All changes are backward-compatible. Full release notes.</p>"},{"location":"home/releases/#v207-2016-11-02","title":"v2.0.7 (2016-11-02)","text":"<p>Fixes several parser bugs found through the \"Parsing JSON is a Minefield\" study (short files, encoding detection, surrogate pairs). All changes are backward-compatible. Full release notes.</p>"},{"location":"home/releases/#v206-2016-10-15","title":"v2.0.6 (2016-10-15)","text":"<p>Fixes <code>operator[]</code> for JSON pointers so that it creates missing values like the other overloads. All changes are backward-compatible. Full release notes.</p>"},{"location":"home/releases/#v205-2016-09-14","title":"v2.0.5 (2016-09-14)","text":"<p>Fixes a remaining stream end-of-file detection bug in the parser. All changes are backward-compatible. Full release notes.</p>"},{"location":"home/releases/#v204-2016-09-11","title":"v2.0.4 (2016-09-11)","text":"<p>Fixes stream end-of-file detection in the parser. All changes are backward-compatible. Full release notes.</p>"},{"location":"home/releases/#v203-2016-08-31","title":"v2.0.3 (2016-08-31)","text":"<p>Generalizes the parser to accept any contiguous sequence of one-byte elements and deprecates the input-stream constructor in favor of the <code>parse</code> function. All changes are backward-compatible. Full release notes.</p>"},{"location":"home/releases/#v202-2016-07-31","title":"v2.0.2 (2016-07-31)","text":"<p>Overhauls the parser (now rejecting unescaped control characters), tightens the class invariants, and cleans up the code. All changes are backward-compatible. Full release notes.</p>"},{"location":"home/releases/#v201-2016-06-28","title":"v2.0.1 (2016-06-28)","text":"<p>Fixes a performance regression in the <code>dump</code> function by adjusting the stream locale once per serialization. All changes are backward-compatible. Full release notes.</p>"},{"location":"home/releases/#v200-2016-06-24","title":"v2.0.0 (2016-06-24)","text":"<p>Feature release with a minor (potentially non-backward-compatible) API change from added <code>noexcept</code> and <code>constexpr</code> specifiers.</p> <ul> <li>Adds JSON Pointer support in <code>at</code> and   <code>operator[]</code>, plus <code>flatten</code>   and <code>unflatten</code>.</li> <li>Adds JSON Patch via <code>diff</code> and   <code>patch</code>, unsigned 64-bit integer support, and locale-independent   serialization.</li> </ul> <p>Full release notes.</p>"},{"location":"home/releases/#v110-2016-01-24","title":"v1.1.0 (2016-01-24)","text":"<p>Bug-fix and feature release. All changes are backward-compatible.</p> <ul> <li>Improves floating-point round-tripping, adds a <code>get_ref</code> accessor for stored values, and introduces   runtime assertions.</li> </ul> <p>Full release notes.</p>"},{"location":"home/releases/#v100-2015-12-28","title":"v1.0.0 (2015-12-28)","text":"<p>First official release. Full release notes.</p>"},{"location":"home/releases/#see-also","title":"See also","text":"<ul> <li>Migration Guide \u2014 how to future-proof your code for the next   major version and replace deprecated functions.</li> </ul>"},{"location":"home/sponsors/","title":"Sponsors","text":"<p>You can sponsor this library at GitHub Sponsors.</p>"},{"location":"home/sponsors/#priority-sponsor","title":"Priority Sponsor","text":"<ul> <li>Martti Laine</li> <li>Paul Harrington</li> </ul>"},{"location":"home/sponsors/#named-sponsors","title":"Named Sponsors","text":"<ul> <li>Michael Hartmann</li> <li>Stefan Hagen</li> <li>Steve Sperandeo</li> <li>Robert Jefe Lindst\u00e4dt</li> <li>Steve Wagner</li> <li>Lion Yang</li> </ul> <p>Thanks everyone!</p>"},{"location":"integration/","title":"Header only","text":"<p><code>json.hpp</code> is the single required file in <code>single_include/nlohmann</code> or released here. You need to add</p> <pre><code>#include &lt;nlohmann/json.hpp&gt;\n\n// for convenience\nusing json = nlohmann::json;\n</code></pre> <p>to the files you want to process JSON and set the necessary switches to enable C++11 (e.g., <code>-std=c++11</code> for GCC and Clang).</p> <p>You can further use file <code>single_include/nlohmann/json_fwd.hpp</code> for forward declarations.</p>"},{"location":"integration/cmake/","title":"CMake","text":""},{"location":"integration/cmake/#integration","title":"Integration","text":"<p>You can use the <code>nlohmann_json::nlohmann_json</code> interface target in CMake. This target populates the appropriate usage requirements for <code>INTERFACE_INCLUDE_DIRECTORIES</code> to point to the appropriate include directories and <code>INTERFACE_COMPILE_FEATURES</code> for the necessary C++11 flags.</p>"},{"location":"integration/cmake/#external","title":"External","text":"<p>To use this library from a CMake project, you can locate it directly with <code>find_package()</code> and use the namespaced imported target from the generated package configuration:</p> <p>Example</p> CMakeLists.txt<pre><code>cmake_minimum_required(VERSION 3.5)\nproject(ExampleProject LANGUAGES CXX)\n\nfind_package(nlohmann_json 3.12.0 REQUIRED)\n\nadd_executable(example example.cpp)\ntarget_link_libraries(example PRIVATE nlohmann_json::nlohmann_json)\n</code></pre> <p>The package configuration file, <code>nlohmann_jsonConfig.cmake</code>, can be used either from an install tree or directly out of the build tree.</p>"},{"location":"integration/cmake/#embedded","title":"Embedded","text":"<p>To embed the library directly into an existing CMake project, place the entire source tree in a subdirectory and call <code>add_subdirectory()</code> in your <code>CMakeLists.txt</code> file.</p> <p>Example</p> CMakeLists.txt<pre><code>cmake_minimum_required(VERSION 3.5)\nproject(ExampleProject LANGUAGES CXX)\n\n# If you only include this third party in PRIVATE source files, you do not need to install it\n# when your main project gets installed.\nset(JSON_Install OFF CACHE INTERNAL \"\")\n\nadd_subdirectory(nlohmann_json)\n\nadd_executable(example example.cpp)\ntarget_link_libraries(example PRIVATE nlohmann_json::nlohmann_json)\n</code></pre> <p>Note</p> <p>Do not use <code>include(nlohmann_json/CMakeLists.txt)</code>, since that carries with it unintended consequences that will break the build. It is generally discouraged (although not necessarily well documented as such) to use <code>include(...)</code> for pulling in other CMake projects anyways.</p>"},{"location":"integration/cmake/#supporting-both","title":"Supporting Both","text":"<p>To allow your project to support either an externally supplied or an embedded JSON library, you can use a pattern akin to the following.</p> <p>Example</p> CMakeLists.txt<pre><code>project(ExampleProject LANGUAGES CXX)\n\noption(EXAMPLE_USE_EXTERNAL_JSON \"Use an external JSON library\" OFF)\n\nadd_subdirectory(thirdparty)\n\nadd_executable(example example.cpp)\n\n# Note that the namespaced target will always be available regardless of the import method\ntarget_link_libraries(example PRIVATE nlohmann_json::nlohmann_json)\n</code></pre> thirdparty/CMakeLists.txt<pre><code>if(EXAMPLE_USE_EXTERNAL_JSON)\n    find_package(nlohmann_json 3.12.0 REQUIRED)\nelse()\n    set(JSON_BuildTests OFF CACHE INTERNAL \"\")\n    add_subdirectory(nlohmann_json)\nendif()\n</code></pre> <p><code>thirdparty/nlohmann_json</code> is then a complete copy of this source tree.</p>"},{"location":"integration/cmake/#fetchcontent","title":"FetchContent","text":"<p>Since CMake v3.11, FetchContent can be used to automatically download a release as a dependency at configure time.</p> <p>Example</p> CMakeLists.txt<pre><code>cmake_minimum_required(VERSION 3.11)\nproject(ExampleProject LANGUAGES CXX)\n\ninclude(FetchContent)\n\nFetchContent_Declare(json URL https://github.com/nlohmann/json/releases/download/v3.12.0/json.tar.xz)\nFetchContent_MakeAvailable(json)\n\nadd_executable(example example.cpp)\ntarget_link_libraries(example PRIVATE nlohmann_json::nlohmann_json)\n</code></pre> <p>Note</p> <p>It is recommended to use the URL approach described above which is supported as of version 3.10.0. It is also possible to pass the Git repository like</p> <pre><code>FetchContent_Declare(json\n    GIT_REPOSITORY https://github.com/nlohmann/json\n    GIT_TAG v3.12.0\n)\n</code></pre> <p>However, the repository https://github.com/nlohmann/json download size is quite large.</p>"},{"location":"integration/cmake/#cmake-options","title":"CMake Options","text":""},{"location":"integration/cmake/#json_buildtests","title":"<code>JSON_BuildTests</code>","text":"<p>Build the unit tests when <code>BUILD_TESTING</code> is enabled. This option is <code>ON</code> by default if the library's CMake project is the top project. That is, when integrating the library as described above, the test suite is not built unless explicitly switched on with this option.</p>"},{"location":"integration/cmake/#json_ci","title":"<code>JSON_CI</code>","text":"<p>Enable CI build targets. The exact targets are used during the several CI steps and are subject to change without notice. This option is <code>OFF</code> by default.</p>"},{"location":"integration/cmake/#json_diagnostics","title":"<code>JSON_Diagnostics</code>","text":"<p>Enable extended diagnostic messages by defining macro <code>JSON_DIAGNOSTICS</code>. This option is <code>OFF</code> by default.</p>"},{"location":"integration/cmake/#json_diagnostic_positions","title":"<code>JSON_Diagnostic_Positions</code>","text":"<p>Enable position diagnostics by defining macro <code>JSON_DIAGNOSTIC_POSITIONS</code>. This option is <code>OFF</code> by default.</p>"},{"location":"integration/cmake/#json_disableenumserialization","title":"<code>JSON_DisableEnumSerialization</code>","text":"<p>Disable default <code>enum</code> serialization by defining the macro <code>JSON_DISABLE_ENUM_SERIALIZATION</code>. This option is <code>OFF</code> by default.</p>"},{"location":"integration/cmake/#json_fasttests","title":"<code>JSON_FastTests</code>","text":"<p>Skip expensive/slow test suites. This option is <code>OFF</code> by default. Depends on <code>JSON_BuildTests</code>.</p>"},{"location":"integration/cmake/#json_globaludls","title":"<code>JSON_GlobalUDLs</code>","text":"<p>Place user-defined string literals in the global namespace by defining the macro <code>JSON_USE_GLOBAL_UDLS</code>. This option is <code>OFF</code> by default.</p>"},{"location":"integration/cmake/#json_implicitconversions","title":"<code>JSON_ImplicitConversions</code>","text":"<p>Enable implicit conversions by defining macro <code>JSON_USE_IMPLICIT_CONVERSIONS</code>. This option is <code>ON</code> by default.</p>"},{"location":"integration/cmake/#json_install","title":"<code>JSON_Install</code>","text":"<p>Install CMake targets during install step. This option is <code>ON</code> by default if the library's CMake project is the top project.</p>"},{"location":"integration/cmake/#json_legacydiscardedvaluecomparison","title":"<code>JSON_LegacyDiscardedValueComparison</code>","text":"<p>Enable the (incorrect) legacy comparison behavior of discarded JSON values by defining macro <code>JSON_USE_LEGACY_DISCARDED_VALUE_COMPARISON</code>. This option is <code>OFF</code> by default.</p>"},{"location":"integration/cmake/#json_multipleheaders","title":"<code>JSON_MultipleHeaders</code>","text":"<p>Use the non-amalgamated version of the library. This option is <code>ON</code> by default.</p>"},{"location":"integration/cmake/#json_systeminclude","title":"<code>JSON_SystemInclude</code>","text":"<p>Treat the library headers like system headers (i.e., adding <code>SYSTEM</code> to the <code>target_include_directories</code> call) to check for this library by tools like Clang-Tidy. This option is <code>OFF</code> by default.</p>"},{"location":"integration/cmake/#json_valgrind","title":"<code>JSON_Valgrind</code>","text":"<p>Execute the test suite with Valgrind. This option is <code>OFF</code> by default. Depends on <code>JSON_BuildTests</code>.</p>"},{"location":"integration/cmake/#nlohmann_json_build_modules","title":"<code>NLOHMANN_JSON_BUILD_MODULES</code>","text":"<p>Build the experimental C++ module <code>nlohmann.json</code> (requires CMake 3.28 or later and C++20). This option is <code>OFF</code> by default.</p>"},{"location":"integration/migration_guide/","title":"Migration Guide","text":"<p>This page collects some guidelines on how to future-proof your code for future versions of this library.</p>"},{"location":"integration/migration_guide/#replace-deprecated-functions","title":"Replace deprecated functions","text":"<p>The following functions have been deprecated and will be removed in the next major version (i.e., 4.0.0). All deprecations are annotated with <code>HEDLEY_DEPRECATED_FOR</code> to report which function to use instead.</p>"},{"location":"integration/migration_guide/#parsing","title":"Parsing","text":"<ul> <li> <p>Function <code>friend std::istream&amp; operator&lt;&lt;(basic_json&amp;, std::istream&amp;)</code> is deprecated since 3.0.0. Please use   <code>friend std::istream&amp;  operator&gt;&gt;(std::istream&amp;, basic_json&amp;)</code> instead.</p> DeprecatedFuture-proof <pre><code>nlohmann::json j;\nstd::stringstream ss(\"[1,2,3]\");\nj &lt;&lt; ss;\n</code></pre> <pre><code>nlohmann::json j;\nstd::stringstream ss(\"[1,2,3]\");\nss &gt;&gt; j;\n</code></pre> </li> <li> <p>Passing iterator pairs or pointer/length pairs to parsing functions (<code>parse</code>,   <code>accept</code>, <code>sax_parse</code>,   <code>from_cbor</code>, <code>from_msgpack</code>,   <code>from_ubjson</code>, and <code>from_bson</code> via initializer   lists is deprecated since 3.8.0. Instead, pass two iterators; for instance, call <code>from_cbor(ptr, ptr+len)</code> instead of   <code>from_cbor({ptr, len})</code>.</p> DeprecatedFuture-proof <pre><code>const char* s = \"[1,2,3]\";\nbool ok = nlohmann::json::accept({s, s + std::strlen(s)});\n</code></pre> <pre><code>const char* s = \"[1,2,3]\";\nbool ok = nlohmann::json::accept(s, s + std::strlen(s));\n</code></pre> </li> </ul>"},{"location":"integration/migration_guide/#json-pointers","title":"JSON Pointers","text":"<ul> <li> <p>Comparing JSON Pointers with strings via <code>operator==</code> and   <code>operator!=</code> is deprecated since 3.11.2. To compare a   <code>json_pointer</code> <code>p</code> with a string <code>s</code>, convert <code>s</code> to a <code>json_pointer</code> first and use   <code>json_pointer::operator==</code> or   <code>json_pointer::operator!=</code>.</p> DeprecatedFuture-proof <pre><code>nlohmann::json::json_pointer lhs(\"/foo/bar/1\");\nassert(lhs == \"/foo/bar/1\");\n</code></pre> <pre><code>nlohmann::json::json_pointer lhs(\"/foo/bar/1\");\nassert(lhs == nlohmann::json::json_pointer(\"/foo/bar/1\"));\n</code></pre> </li> <li> <p>The implicit conversion from JSON Pointers to string   (<code>json_pointer::operator string_t</code>) is deprecated since 3.11.0. Use   <code>json_pointer::to_string</code> instead.</p> DeprecatedFuture-proof <pre><code>nlohmann::json::json_pointer ptr(\"/foo/bar/1\");\nstd::string s = ptr;\n</code></pre> <pre><code>nlohmann::json::json_pointer ptr(\"/foo/bar/1\");\nstd::string s = ptr.to_string();\n</code></pre> </li> <li> <p>Passing a <code>basic_json</code> specialization as template parameter <code>RefStringType</code> to   <code>json_pointer</code> is deprecated since 3.11.0. The string type can now be directly   provided.</p> DeprecatedFuture-proof <pre><code>using my_json = nlohmann::basic_json&lt;std::map, std::vector, my_string_type&gt;;\nnlohmann::json_pointer&lt;my_json&gt; ptr(\"/foo/bar/1\");\n</code></pre> <pre><code>nlohmann::json_pointer&lt;my_string_type&gt; ptr(\"/foo/bar/1\");\n</code></pre> <p>Thereby, <code>nlohmann::my_json::json_pointer</code> is an alias for <code>nlohmann::json_pointer&lt;my_string_type&gt;</code> and is always an  alias to the <code>json_pointer</code> with the appropriate string type for all specializations of <code>basic_json</code>.</p> </li> </ul>"},{"location":"integration/migration_guide/#miscellaneous-functions","title":"Miscellaneous functions","text":"<ul> <li> <p>The function <code>iterator_wrapper</code> is deprecated since 3.1.0. Please use the member function   <code>items</code> instead.</p> DeprecatedFuture-proof <pre><code>for (auto &amp;x : nlohmann::json::iterator_wrapper(j))\n{\n    std::cout &lt;&lt; x.key() &lt;&lt; \":\" &lt;&lt; x.value() &lt;&lt; std::endl;\n}\n</code></pre> <pre><code>for (auto &amp;x : j.items())\n{\n    std::cout &lt;&lt; x.key() &lt;&lt; \":\" &lt;&lt; x.value() &lt;&lt; std::endl;\n}\n</code></pre> </li> <li> <p>Function <code>friend std::ostream&amp; operator&gt;&gt;(const basic_json&amp;, std::ostream&amp;)</code> is deprecated since 3.0.0. Please use   <code>friend operator&lt;&lt;(std::ostream&amp;, const basic_json&amp;)</code> instead.</p> DeprecatedFuture-proof <pre><code>j &gt;&gt; std::cout;\n</code></pre> <pre><code>std::cout &lt;&lt; j;\n</code></pre> </li> <li> <p>The legacy comparison behavior for discarded values is deprecated since 3.11.0. It is already disabled by default and   can still be enabled by defining   <code>JSON_USE_LEGACY_DISCARDED_VALUE_COMPARISON</code> to <code>1</code>.</p> DeprecatedFuture-proof <pre><code>#define JSON_USE_LEGACY_DISCARDED_VALUE_COMPARISON 1\n#include &lt;nlohmann/json.hpp&gt;\n</code></pre> <pre><code>#include &lt;nlohmann/json.hpp&gt;\n</code></pre> </li> </ul>"},{"location":"integration/migration_guide/#replace-implicit-conversions","title":"Replace implicit conversions","text":"<p>Implicit conversions via <code>operator ValueType</code> will be switched off by default in the next major release of the library.</p> <p>You can prepare existing code by already defining <code>JSON_USE_IMPLICIT_CONVERSIONS</code> to <code>0</code> and replace any implicit conversions with calls to <code>get</code>, <code>get_to</code>, <code>get_ref</code>, or <code>get_ptr</code>.</p> DeprecatedFuture-proofFuture-proof (alternative) <pre><code>nlohmann::json j = \"Hello, world!\";\nstd::string s = j;\n</code></pre> <pre><code>nlohmann::json j = \"Hello, world!\";\nauto s = j.get&lt;std::string&gt;();\n</code></pre> <pre><code>nlohmann::json j = \"Hello, world!\";\nstd::string s;\nj.get_to(s);\n</code></pre>"},{"location":"integration/migration_guide/#import-namespace-literals-for-udls","title":"Import namespace <code>literals</code> for UDLs","text":"<p>The user-defined string literals <code>operator\"\"_json</code> and <code>operator\"\"_json_pointer</code> will be removed from the global namespace in the next major release of the library.</p> DeprecatedFuture-proof <pre><code>nlohmann::json j = \"[1,2,3]\"_json;\n</code></pre> <pre><code>using namespace nlohmann::literals;\nnlohmann::json j = \"[1,2,3]\"_json;\n</code></pre> <p>To prepare existing code, define <code>JSON_USE_GLOBAL_UDLS</code> to <code>0</code> and bring the string literals into scope where needed.</p>"},{"location":"integration/migration_guide/#do-not-hard-code-the-complete-library-namespace","title":"Do not hard-code the complete library namespace","text":"<p>The <code>nlohmann</code> namespace contains a sub-namespace to avoid problems when different versions or configurations of the library are used in the same project. Always use <code>nlohmann</code> as namespace or, when the exact version and configuration is relevant, use macro <code>NLOHMANN_JSON_NAMESPACE</code> to denote the namespace.</p> DangerousFuture-proofFuture-proof (alternative) <pre><code>void to_json(nlohmann::json_abi_v3_11_2::json&amp; j, const person&amp; p)\n{\n    j[\"age\"] = p.age;\n}\n</code></pre> <pre><code>void to_json(nlohmann::json&amp; j, const person&amp; p)\n{\n    j[\"age\"] = p.age;\n}\n</code></pre> <pre><code>void to_json(NLOHMANN_JSON_NAMESPACE::json&amp; j, const person&amp; p)\n{\n    j[\"age\"] = p.age;\n}\n</code></pre>"},{"location":"integration/migration_guide/#do-not-use-the-details-namespace","title":"Do not use the <code>details</code> namespace","text":"<p>The <code>details</code> namespace is not part of the public API of the library and can change in any version without an announcement. Do not rely on any function or type in the <code>details</code> namespace.</p>"},{"location":"integration/package_managers/","title":"Package Managers","text":"<p> Homebrew <code>nlohmann-json</code> Meson <code>nlohmann_json</code> Bazel <code>nlohmann_json</code> Conan <code>nlohmann_json</code> Spack <code>nlohmann-json</code> Hunter <code>nlohmann_json</code> vcpkg <code>nlohmann-json</code> cget <code>nlohmann/json</code> Swift Package Manager <code>nlohmann/json</code> NuGet <code>nlohmann.json</code> Conda <code>nlohmann_json</code> MacPorts <code>nlohmann-json</code> CPM.cmake <code>gh:nlohmann/json</code> xmake <code>nlohmann_json</code> </p>"},{"location":"integration/package_managers/#running-example","title":"Running example","text":"<p>Throughout this page, we will describe how to compile the example file <code>example.cpp</code> below.</p> <pre><code>#include &lt;nlohmann/json.hpp&gt;\n#include &lt;iostream&gt;\n#include &lt;iomanip&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    std::cout &lt;&lt; std::setw(4) &lt;&lt; json::meta() &lt;&lt; std::endl;\n}\n</code></pre> <p>When executed, this program should create output similar to</p> <pre><code>{\n    \"compiler\": {\n        \"c++\": \"201103\",\n        \"family\": \"gcc\",\n        \"version\": \"12.4.0\"\n    },\n    \"copyright\": \"(C) 2013-2026 Niels Lohmann\",\n    \"name\": \"JSON for Modern C++\",\n    \"platform\": \"apple\",\n    \"url\": \"https://github.com/nlohmann/json\",\n    \"version\": {\n        \"major\": 3,\n        \"minor\": 12,\n        \"patch\": 0,\n        \"string\": \"3.12.0\"\n    }\n}\n</code></pre>"},{"location":"integration/package_managers/#homebrew","title":"Homebrew","text":"<p>Summary</p> <p>formula: <code>nlohmann-json</code></p> <ul> <li> Available versions: current version and development version (with <code>--HEAD</code> parameter)</li> <li> The formula is updated with every release.</li> <li> Maintainer: Niels Lohmann</li> <li> File issues at the Homebrew issue tracker</li> <li> Homebrew website</li> </ul> <p>If you are using Homebrew, you can install the library with</p> <pre><code>brew install nlohmann-json\n</code></pre> <p>The header can be used directly in your code or via CMake.</p> Example: Raw compilation <ol> <li> <p>Create the following file:</p> example.cpp<pre><code>#include &lt;nlohmann/json.hpp&gt;\n#include &lt;iostream&gt;\n#include &lt;iomanip&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    std::cout &lt;&lt; std::setw(4) &lt;&lt; json::meta() &lt;&lt; std::endl;\n}\n</code></pre> </li> <li> <p>Install the package:</p> <pre><code>brew install nlohmann-json\n</code></pre> </li> <li> <p>Compile the code and pass the Homebrew prefix to the include path such that the library can be found:</p> <pre><code>c++ example.cpp -I$(brew --prefix nlohmann-json)/include -std=c++11 -o example\n</code></pre> </li> </ol> Example: CMake <ol> <li> <p>Create the following files:</p> example.cpp<pre><code>#include &lt;nlohmann/json.hpp&gt;\n#include &lt;iostream&gt;\n#include &lt;iomanip&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    std::cout &lt;&lt; std::setw(4) &lt;&lt; json::meta() &lt;&lt; std::endl;\n}\n</code></pre> CMakeLists.txt<pre><code>cmake_minimum_required(VERSION 3.15)\nproject(json_example)\n\nfind_package(nlohmann_json CONFIG REQUIRED)\n\nadd_executable(json_example example.cpp)\ntarget_link_libraries(json_example PRIVATE nlohmann_json::nlohmann_json)\n</code></pre> </li> <li> <p>Install the package:</p> <pre><code>brew install nlohmann-json\n</code></pre> </li> <li> <p>Compile the code and pass the Homebrew prefix to CMake to find installed packages via <code>find_package</code>:</p> <pre><code>CMAKE_PREFIX_PATH=$(brew --prefix) cmake -S . -B build\ncmake --build build\n</code></pre> </li> </ol>"},{"location":"integration/package_managers/#meson","title":"Meson","text":"<p>Summary</p> <p>wrap: <code>nlohmann_json</code></p> <ul> <li> Available versions: current version and select older versions (see   WrapDB)</li> <li> The package is updated automatically from file   <code>meson.build</code>.</li> <li> File issues at the library issue tracker</li> <li> Meson website</li> </ul> <p>If you are using the Meson Build System, add this source tree as a meson subproject. You may also use the <code>include.zip</code> published in this project's Releases to reduce the size of the vendored source tree. Alternatively, you can get a wrap file by downloading it from Meson WrapDB, or use</p> <pre><code>meson wrap install nlohmann_json\n</code></pre> <p>Please see the Meson project for any issues regarding the packaging.</p> <p>The provided <code>meson.build</code> can also be used as an alternative to CMake for installing <code>nlohmann_json</code> system-wide in which case a pkg-config file is installed. To use it, have your build system require the <code>nlohmann_json</code> pkg-config dependency. In Meson, it is preferred to use the <code>dependency()</code> object with a subproject fallback, rather than using the subproject directly.</p> Example: Wrap <ol> <li> <p>Create the following files:</p> meson.build<pre><code>project('json_example', 'cpp',\n  version: '1.0',\n  default_options: ['cpp_std=c++11']\n)\n\ndependency_json = dependency('nlohmann_json', required: true)\n\nexecutable('json_example',\n  sources: ['example.cpp'],\n  dependencies: [dependency_json],\n  install: true\n)\n</code></pre> example.cpp<pre><code>#include &lt;nlohmann/json.hpp&gt;\n#include &lt;iostream&gt;\n#include &lt;iomanip&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    std::cout &lt;&lt; std::setw(4) &lt;&lt; json::meta() &lt;&lt; std::endl;\n}\n</code></pre> </li> <li> <p>Use the Meson WrapDB to fetch the nlohmann/json wrap:</p> <pre><code>mkdir subprojects\nmeson wrap install nlohmann_json\n</code></pre> </li> <li> <p>Build:</p> <pre><code>meson setup build\nmeson compile -C build\n</code></pre> </li> </ol>"},{"location":"integration/package_managers/#bazel","title":"Bazel","text":"<p>Summary</p> <p>use <code>bazel_dep</code>, <code>git_override</code>, or <code>local_path_override</code></p> <ul> <li> Any version, that is available via Bazel Central Registry</li> <li> File issues at the library issue tracker</li> <li> Bazel website</li> </ul> <p>This repository provides a Bazel <code>MODULE.bazel</code> and a corresponding <code>BUILD.bazel</code> file. Therefore, this repository can be referenced within a <code>MODULE.bazel</code> by rules such as <code>archive_override</code>, <code>git_override</code>, or <code>local_path_override</code>. To use the library, you need to depend on the target <code>@nlohmann_json//:json</code> (i.e., via <code>deps</code> attribute).</p> Example <ol> <li> <p>Create the following files:</p> BUILD<pre><code>cc_binary(\n    name = \"main\",\n    srcs = [\"example.cpp\"],\n    deps = [\"@nlohmann_json//:json\"],\n)\n</code></pre> WORKSPACE<pre><code>bazel_dep(name = \"nlohmann_json\", version = \"3.11.3.bcr.1\")\n</code></pre> example.cpp<pre><code>#include &lt;nlohmann/json.hpp&gt;\n#include &lt;iostream&gt;\n#include &lt;iomanip&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    std::cout &lt;&lt; std::setw(4) &lt;&lt; json::meta() &lt;&lt; std::endl;\n}\n</code></pre> </li> <li> <p>Build and run:</p> <pre><code>bazel build //:main\nbazel run //:main\n</code></pre> </li> </ol>"},{"location":"integration/package_managers/#conan","title":"Conan","text":"<p>Summary</p> <p>recipe: <code>nlohmann_json</code></p> <ul> <li> Available versions: current version and older versions (see   Conan Center)</li> <li> The package is updated automatically via   this recipe.</li> <li> File issues at the Conan Center issue tracker</li> <li> Conan website</li> </ul> <p>If you are using Conan to manage your dependencies, merely add <code>nlohmann_json/x.y.z</code> to your <code>conanfile</code>'s requires, where <code>x.y.z</code> is the release version you want to use.</p> Example <ol> <li> <p>Create the following files:</p> Conanfile.txt<pre><code>[requires]\nnlohmann_json/3.12.0\n\n[generators]\nCMakeToolchain\nCMakeDeps\n</code></pre> CMakeLists.txt<pre><code>cmake_minimum_required(VERSION 3.15)\nproject(json_example)\n\nfind_package(nlohmann_json REQUIRED)\n\nadd_executable(json_example example.cpp)\ntarget_link_libraries(json_example PRIVATE nlohmann_json::nlohmann_json)\n</code></pre> example.cpp<pre><code>#include &lt;nlohmann/json.hpp&gt;\n#include &lt;iostream&gt;\n#include &lt;iomanip&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    std::cout &lt;&lt; std::setw(4) &lt;&lt; json::meta() &lt;&lt; std::endl;\n}\n</code></pre> </li> <li> <p>Call Conan:</p> <pre><code>conan install . --output-folder=build --build=missing\n</code></pre> </li> <li> <p>Build:</p> <pre><code>cmake -S . -B build -DCMAKE_TOOLCHAIN_FILE=\"conan_toolchain.cmake\" -DCMAKE_BUILD_TYPE=Release\ncmake --build build\n</code></pre> </li> </ol>"},{"location":"integration/package_managers/#spack","title":"Spack","text":"<p>Summary</p> <p>package: <code>nlohmann-json</code></p> <ul> <li> Available versions: current version and older versions (see   Spack package)</li> <li> The package is updated with every release.</li> <li> Maintainer: Axel Huebl</li> <li> File issues at the Spack issue tracker</li> <li> Spack website</li> </ul> <p>If you are using Spack to manage your dependencies, you can use the <code>nlohmann-json</code> package via</p> <pre><code>spack install nlohmann-json\n</code></pre> <p>Please see the Spack project for any issues regarding the packaging.</p> Example <ol> <li> <p>Create the following files:</p> CMakeLists.txt<pre><code>cmake_minimum_required(VERSION 3.15)\nproject(json_example)\n\nfind_package(nlohmann_json REQUIRED)\n\nadd_executable(json_example example.cpp)\ntarget_link_libraries(json_example PRIVATE nlohmann_json::nlohmann_json)\n</code></pre> example.cpp<pre><code>#include &lt;nlohmann/json.hpp&gt;\n#include &lt;iostream&gt;\n#include &lt;iomanip&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    std::cout &lt;&lt; std::setw(4) &lt;&lt; json::meta() &lt;&lt; std::endl;\n}\n</code></pre> </li> <li> <p>Install the library:</p> <pre><code>spack install nlohmann-json\n</code></pre> </li> <li> <p>Load the environment for your Spack-installed packages:</p> <pre><code>spack load nlohmann-json\n</code></pre> </li> <li> <p>Build the project with CMake:</p> <pre><code>cmake -S . -B build -DCMAKE_PREFIX_PATH=$(spack location -i nlohmann-json)\ncmake --build build\n</code></pre> </li> </ol>"},{"location":"integration/package_managers/#hunter","title":"Hunter","text":"<p>Summary</p> <p>package: <code>nlohmann_json</code></p> <ul> <li> Available versions: current version and older versions (see   Hunter package)</li> <li> The package is updated with every release.</li> <li> File issues at the Hunter issue tracker</li> <li> Hunter website</li> </ul> <p>If you are using Hunter on your project for external dependencies, then you can use the nlohmann_json package via</p> <pre><code>hunter_add_package(nlohmann_json)\n</code></pre> <p>Please see the Hunter project for any issues regarding the packaging.</p> Example <ol> <li> <p>Create the following files:</p> CMakeLists.txt<pre><code>cmake_minimum_required(VERSION 3.15)\n\ninclude(\"cmake/HunterGate.cmake\")\nHunterGate(\n    URL \"https://github.com/cpp-pm/hunter/archive/v0.23.297.tar.gz\"\n    SHA1 \"3319fe6a3b08090df7df98dee75134d68e2ef5a3\"\n)\n\nproject(json_example)\n\nhunter_add_package(nlohmann_json)\nfind_package(nlohmann_json CONFIG REQUIRED)\n\nadd_executable(json_example example.cpp)\ntarget_link_libraries(json_example PRIVATE nlohmann_json::nlohmann_json)\n</code></pre> example.cpp<pre><code>#include &lt;nlohmann/json.hpp&gt;\n#include &lt;iostream&gt;\n#include &lt;iomanip&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    std::cout &lt;&lt; std::setw(4) &lt;&lt; json::meta() &lt;&lt; std::endl;\n}\n</code></pre> </li> <li> <p>Download required files</p> <pre><code>mkdir cmake\nwget https://raw.githubusercontent.com/cpp-pm/gate/master/cmake/HunterGate.cmake -O cmake/HunterGate.cmake\n</code></pre> </li> <li> <p>Build the project with CMake:</p> <pre><code>cmake -S . -B build\ncmake --build build\n</code></pre> </li> </ol>"},{"location":"integration/package_managers/#vcpkg","title":"vcpkg","text":"<p>Summary</p> <p>package: <code>nlohmann-json</code></p> <ul> <li> Available versions: current version</li> <li> The package is updated with every release.</li> <li> File issues at the vcpkg issue tracker</li> <li> vcpkg website</li> </ul> <p>If you are using vcpkg on your project for external dependencies, then you can install the nlohmann-json package with</p> <pre><code>vcpkg install nlohmann-json\n</code></pre> <p>and follow the then displayed descriptions. Please see the vcpkg project for any issues regarding the packaging.</p> Example <ol> <li> <p>Create the following files:</p> CMakeLists.txt<pre><code>cmake_minimum_required(VERSION 3.15)\nproject(json_example)\n\nfind_package(nlohmann_json CONFIG REQUIRED)\n\nadd_executable(json_example example.cpp)\ntarget_link_libraries(json_example PRIVATE nlohmann_json::nlohmann_json)\n</code></pre> example.cpp<pre><code>#include &lt;nlohmann/json.hpp&gt;\n#include &lt;iostream&gt;\n#include &lt;iomanip&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    std::cout &lt;&lt; std::setw(4) &lt;&lt; json::meta() &lt;&lt; std::endl;\n}\n</code></pre> </li> <li> <p>Install package:</p> <pre><code>vcpkg install nlohmann-json\n</code></pre> </li> <li> <p>Build:</p> <pre><code>cmake -S . -B build -DCMAKE_TOOLCHAIN_FILE=$VCPKG_ROOT/scripts/buildsystems/vcpkg.cmake\ncmake --build build\n</code></pre> </li> </ol>"},{"location":"integration/package_managers/#cget","title":"cget","text":"<p>Summary</p> <p>package: <code>nlohmann/json</code></p> <ul> <li> Available versions: current version and older versions</li> <li> The package is updated with every release.</li> <li> File issues at the cget issue tracker</li> <li> cget website</li> </ul> <p>If you are using cget, you can install the latest <code>master</code> version with</p> <pre><code>cget install nlohmann/json\n</code></pre> <p>A specific version can be installed with <code>cget install nlohmann/json@v3.12.0</code>. Also, the multiple header version can be installed by adding the <code>-DJSON_MultipleHeaders=ON</code> flag (i.e., <code>cget install nlohmann/json -DJSON_MultipleHeaders=ON</code>).</p> Example <ol> <li> <p>Create the following files:</p> CMakeLists.txt<pre><code>cmake_minimum_required(VERSION 3.15)\nproject(json_example)\n\nfind_package(nlohmann_json CONFIG REQUIRED)\n\nadd_executable(json_example example.cpp)\ntarget_link_libraries(json_example PRIVATE nlohmann_json::nlohmann_json)\n</code></pre> example.cpp<pre><code>#include &lt;nlohmann/json.hpp&gt;\n#include &lt;iostream&gt;\n#include &lt;iomanip&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    std::cout &lt;&lt; std::setw(4) &lt;&lt; json::meta() &lt;&lt; std::endl;\n}\n</code></pre> </li> <li> <p>Initialize cget</p> <pre><code>cget init\n</code></pre> </li> <li> <p>Install the library</p> <pre><code>cget install nlohmann/json\n</code></pre> </li> <li> <p>Build</p> <pre><code>cmake -S . -B build -DCMAKE_TOOLCHAIN_FILE=cget/cget/cget.cmake\ncmake --build build\n</code></pre> </li> </ol>"},{"location":"integration/package_managers/#swift-package-manager","title":"Swift Package Manager","text":"<p>Summary</p> <p>package: <code>nlohmann/json</code></p> <ul> <li> Available versions: current version and older versions</li> <li> The package is updated with every release.</li> <li> File issues at the library issue tracker</li> <li> Xcode documentation</li> </ul>"},{"location":"integration/package_managers/#nuget","title":"NuGet","text":"<p>Summary</p> <p>package: <code>nlohmann.json</code></p> <ul> <li> Available versions: current and previous versions</li> <li> The package is updated with every release.</li> <li> Maintainer: Hani Kaabi</li> <li> File issues at the maintainer's issue tracker</li> <li> NuGet website</li> </ul> <p>If you are using NuGet, you can use the package nlohmann.json with</p> <pre><code>dotnet add package nlohmann.json\n</code></pre> Example <p>Probably the easiest way to use NuGet packages is through Visual Studio graphical interface. Right-click on a project (any C++ project would do) in \u201cSolution Explorer\u201d and select \u201cManage NuGet Packages\u2026\u201d</p> <p></p> <p>Now you can click on \u201cBrowse\u201d tab and find the package you like to install.</p> <p></p> <p>Most of the packages in NuGet gallery are .NET packages and would not be useful in a C++ project. Microsoft recommends adding \u201cnative\u201d and \u201cnativepackage\u201d tags to C++ NuGet packages to distinguish them, but even adding \u201cnative\u201d to search query would still show many .NET-only packages in the list.</p> <p>Nevertheless, after finding the package you want, click on \u201cInstall\u201d button and accept confirmation dialogs. After the package is successfully added to the projects, you should be able to build and execute the project without the need for making any more changes to build settings.</p> <p>Note</p> <p>A few notes:</p> <ul> <li>NuGet packages are installed per project and not system-wide. The header and binaries for the package are only   available to the project it is added to, and not other projects (obviously unless we add the package to those   projects as well)</li> <li>One of the many great things about your elegant work is that it is a header-only library, which makes   deployment very straightforward. In case of libraries which need binary deployment (<code>.lib</code>, <code>.dll</code> and <code>.pdb</code>   for debug info) the different binaries for each supported compiler version must be added to the NuGet package.   Some library creators cram binary versions for all supported Visual C++ compiler versions in the same package,   so a single package will support all compilers. Some others create a different package for each compiler   version (and you usually see things like \u201cv140\u201d or \u201cvc141\u201d in package name to clarify which VC++ compiler this   package supports).</li> <li>Packages can have dependency to other packages, and in this case, NuGet will install all dependencies as well   as the requested package recursively.</li> </ul> <p>What happens behind the scenes</p> <p>After you add a NuGet package, three changes occur in the project source directory. Of course, we could make these changes manually instead of using GUI:</p> <p></p> <ol> <li> <p>A <code>packages.config</code> file will be created (or updated to include the package name if one such file already    exists). This file contains a list of the packages required by this project (name and minimum version) and must    be added to the project source code repository, so if you move the source code to a new machine, MSBuild/NuGet    knows which packages it has to restore (which it does automatically before each build).</p> <pre><code>&lt;?xml version=\"1.0\" encoding=\"utf-8\"?&gt;\n&lt;packages&gt;\n  &lt;package id=\"nlohmann.json\" version=\"3.5.0\" targetFramework=\"native\" /&gt;\n&lt;/packages&gt;\n</code></pre> </li> <li> <p>A <code>packages</code> folder which contains actual files in the packages (these are header and binary files required for    a successful build, plus a few metadata files). In case of this library for example, it contains <code>json.hpp</code>:</p> <p></p> <p>Note</p> <p>This directory should not be added to the project source code repository, as it will be restored before each build by MSBuild/NuGet. If you go ahead and delete this folder, then build the project again, it will magically re-appear!</p> </li> <li> <p>Project MSBuild makefile (which for Visual C++ projects has a .vcxproj extension) will be updated to include    settings from the package.</p> <p></p> <p>The important bit for us here is line 170, which tells MSBuild to import settings from <code>packages\\nlohmann.json.3.5.0\\build\\native\\nlohmann.json.targets</code> file. This is a file the package creator created and added to the package (you can see it is one of the two files I created in this repository, the other just contains package attributes like name and version number). What does it contain?</p> <p>For our header-only repository, the only setting we need is to add our include directory to the list of <code>AdditionalIncludeDirectories</code>:</p> <pre><code>&lt;?xml version=\"1.0\" encoding=\"utf-8\"?&gt;\n&lt;Project ToolsVersion=\"4.0\" xmlns=\"http://schemas.microsoft.com/developer/msbuild/2003\"&gt;\n    &lt;ItemDefinitionGroup&gt;\n        &lt;ClCompile&gt;\n            &lt;AdditionalIncludeDirectories&gt;$(MSBuildThisFileDirectory)include;%(AdditionalIncludeDirectories)&lt;/AdditionalIncludeDirectories&gt;\n        &lt;/ClCompile&gt;\n    &lt;/ItemDefinitionGroup&gt;\n&lt;/Project&gt;\n</code></pre> <p>For libraries with binary files, we will need to add <code>.lib</code> files to linker inputs and add settings to copy <code>.dll</code> and other redistributable files to output directory, if needed.</p> <p>There are other changes to the makefile as well:</p> <ul> <li> <p>Lines 165-167 add the <code>packages.config</code> as one of project files (so it is shown in Solution Explorer tree   view). It is added as None (no build action) and removing it wouldn\u2019t affect build.</p> </li> <li> <p>Lines 172-177 check to ensure the required packages are present. This will display a build error if package   directory is empty (for example when NuGet cannot restore packages because Internet connection is down).   Again, if you omit this section, the only change in build would be a more cryptic error message if build   fails.</p> </li> </ul> <p>Note</p> <p>Changes to .vcxproj makefile should also be added to project source code repository.</p> </li> </ol> <p>As you can see, the mechanism NuGet uses to modify project settings is through MSBuild makefiles, so using NuGet with other build systems and compilers (like CMake) as a dependency manager is either impossible or more problematic than useful.</p> <p>Please refer to this extensive description for more information.</p>"},{"location":"integration/package_managers/#conda","title":"Conda","text":"<p>Summary</p> <p>package: <code>nlohmann_json</code></p> <ul> <li> Available versions: current and previous versions</li> <li> The package is updated with every release.</li> <li> File issues at the feedstock's issue tracker</li> <li> Conda documentation</li> </ul> <p>If you are using conda, you can use the package nlohmann_json from conda-forge executing</p> <pre><code>conda install -c conda-forge nlohmann_json\n</code></pre> Example <ol> <li> <p>Create the following file:</p> example.cpp<pre><code>#include &lt;nlohmann/json.hpp&gt;\n#include &lt;iostream&gt;\n#include &lt;iomanip&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    std::cout &lt;&lt; std::setw(4) &lt;&lt; json::meta() &lt;&lt; std::endl;\n}\n</code></pre> </li> <li> <p>Create and activate an environment <code>json</code>:</p> <pre><code>conda create -n json\nconda activate json\n</code></pre> </li> <li> <p>Install the package:</p> <pre><code>conda install -c conda-forge nlohmann_json\n</code></pre> </li> <li> <p>Build the code:</p> <pre><code>g++ -std=c++11 -I$(conda info --base)/envs/json/include example.cpp -o example\n</code></pre> </li> </ol>"},{"location":"integration/package_managers/#msys2","title":"MSYS2","text":"<p>If you are using MSYS2, you can use the mingw-w64-nlohmann-json package, type <code>pacman -S mingw-w64-i686-nlohmann-json</code> or <code>pacman -S mingw-w64-x86_64-nlohmann-json</code> for installation. Please file issues here if you experience problems with the packages.</p> <p> </p> <p> The package is updated automatically.</p>"},{"location":"integration/package_managers/#macports","title":"MacPorts","text":"<p>Summary</p> <p>port: <code>nlohmann-json</code></p> <ul> <li> Available versions: current version</li> <li> The port is updated with every release.</li> <li> File issues at the MacPorts issue tracker</li> <li> MacPorts website</li> </ul> <p>If you are using MacPorts, execute </p> <pre><code>sudo port install nlohmann-json\n</code></pre> <p>to install the nlohmann-json package.</p> Example: Raw compilation <ol> <li> <p>Create the following file:</p> example.cpp<pre><code>#include &lt;nlohmann/json.hpp&gt;\n#include &lt;iostream&gt;\n#include &lt;iomanip&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    std::cout &lt;&lt; std::setw(4) &lt;&lt; json::meta() &lt;&lt; std::endl;\n}\n</code></pre> </li> <li> <p>Install the package:</p> <pre><code>sudo port install nlohmann-json\n</code></pre> </li> <li> <p>Compile the code and pass the MacPorts prefix to the include path such that the library can be found:</p> <pre><code>c++ example.cpp -I/opt/local/include -std=c++11 -o example\n</code></pre> </li> </ol> Example: CMake <ol> <li> <p>Create the following files:</p> example.cpp<pre><code>#include &lt;nlohmann/json.hpp&gt;\n#include &lt;iostream&gt;\n#include &lt;iomanip&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    std::cout &lt;&lt; std::setw(4) &lt;&lt; json::meta() &lt;&lt; std::endl;\n}\n</code></pre> CMakeLists.txt<pre><code>cmake_minimum_required(VERSION 3.15)\nproject(json_example)\n\nfind_package(nlohmann_json CONFIG REQUIRED)\n\nadd_executable(json_example example.cpp)\ntarget_link_libraries(json_example PRIVATE nlohmann_json::nlohmann_json)\n</code></pre> </li> <li> <p>Install the package:</p> <pre><code>sudo port install nlohmann-json\n</code></pre> </li> <li> <p>Compile the code:</p> <pre><code>cmake -S . -B build\ncmake --build build\n</code></pre> </li> </ol>"},{"location":"integration/package_managers/#build2","title":"build2","text":"<p>Summary</p> <p>package: <code>nlohmann-json</code> library target: <code>nlohmann-json%lib{json}</code> available in package repositories:   - <code>cppget.org</code> (recommended)   - package's sources (for advanced users)</p> <ul> <li> Available versions: current version and older versions since <code>3.7.3</code> (see cppget.org)</li> <li> The package is maintained and published by the <code>build2</code> community in this repository.</li> <li> File issues at the package source repository</li> <li> <code>build2</code> website</li> </ul> <p>Note: <code>build2</code> should not be considered as a standalone package-manager. It is a build-system + package manager + project manager, a set of tools that work hand-in-hand. <code>build2</code>-based projects do not rely on existing <code>CMake</code> scripts and the build scripts defining the project's targets are specific to <code>build2</code>.</p> <p>To use this package in an existing <code>build2</code> project, the general steps are:</p> <ol> <li> <p>Make the package available to download from a package repository that provides it. <p>Your project's <code>repositories.manifest</code> specifies where the package manager will try to acquire packages by default. Make sure one of the repositories specified in this file provides <code>nlohmann-json</code> package.   The recommended open-source repository is <code>cppget.org</code>.</p> <p>If the project has been created using <code>bdep new</code>, <code>cppget.org</code> is already specified in <code>repositories.manifest</code> but commented, just uncomment these lines:   <pre><code>:\nrole: prerequisite\nlocation: https://pkg.cppget.org/1/stable\n</code></pre> </p> <li> <p>Add this package as dependency of your project. <p>In your project's <code>manifest</code> add the dependency to the package using <code>depends: nlohmann-json</code>. You could also add some version constraints.    For example, to depend on the latest version available:    <pre><code>depends: nlohmann-json\n</code></pre> </p> <li> <p>Add this library as dependency of your target that uses it. <p>In the <code>buildfile</code> defining the target that will use this library:</p> <pre><code>- import the target `lib{json}` from the `nlohmann-json` package, for example:\n    ```\n    import nljson = nlohmann-json%lib{json}\n    ```\n\n- then add the library's target as requirement for your target using it, for example:\n    ```\n    exe{example} : ... $nljson\n    ```\n</code></pre> <li> <p>Use the library in your project's code and build it. <p>At this point, assuming your project is initialized in a build-configuration, any <code>b</code> or <code>bdep update</code> command that will update/build the project will also acquire the missing dependency automatically, then build it and link it with your target.</p> <p>If you just want to synchronize dependencies for all your configurations to download the ones you just added:     <pre><code>bdep sync -af\n</code></pre> </p> Example: from scratch, using <code>build2</code>'s <code>bdep new</code> command <ol> <li> <p>Create a new executable project \"example\" (see <code>bdep new</code> command details for the various options to create a new project):</p> <pre><code>bdep new example\n</code></pre> </li> <li> <p>Edit these files by replacing their content:</p> <ul> <li> <p><code>example/repositories.manifest</code>: Enable acquiring packages from https://cppget.org by uncommenting the related lines:</p> project's `repositories.manifest`<pre><code>: 1\nsummary: example project repository\n\n:\nrole: prerequisite\nlocation: https://pkg.cppget.org/1/stable\n#trust: ...\n\n#:\n#role: prerequisite\n#location: https://git.build2.org/hello/libhello.git\n</code></pre> </li> <li> <p><code>example/manifest</code>: Add the latest version of the <code>nlohmann-json</code> package as dependency to the project:</p> project's `manifest`<pre><code>name: example\nversion: 0.1.0-a.0.z\nlanguage: c++\nsummary: example C++ executable\nlicense: other: proprietary ; Not free/open source.\ndescription-file: README.md\nurl: https://example.org/example\nemail: your@emailprovider.com\n#build-error-email: your@emailprovider.com\ndepends: * build2 &gt;= 0.16.0\ndepends: * bpkg &gt;= 0.16.0\n#depends: libhello ^1.0.0\n\ndepends: nlohmann-json\n</code></pre> </li> <li> <p><code>example/example/buildfile</code>: import the library's target to be used as requirement for building the executable target <code>exe{example}</code>:</p> project's `buildfile`<pre><code>libs =\nimport libs = nlohmann-json%lib{json}\n\nexe{example}: {hxx ixx txx cxx}{**} $libs testscript\n\ncxx.poptions =+ \"-I$out_root\" \"-I$src_root\"\n</code></pre> </li> <li> <p><code>example/example/example.cxx</code>: <code>bdep new</code> generates a \"hello world\" by default, replace it by this:</p> example.cxx<pre><code>#include &lt;nlohmann/json.hpp&gt;\n#include &lt;iostream&gt;\n#include &lt;iomanip&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    std::cout &lt;&lt; std::setw(4) &lt;&lt; json::meta() &lt;&lt; std::endl;\n}\n</code></pre> </li> <li> <p><code>example/example/testscript</code>: (optional) if you want to be able to test that executable's output is correct using <code>b test</code>:</p> `testscript` checking the output of the program<pre><code>: json basics\n:\n$* &gt;&gt;~/EOO/\n{\n    \"compiler\": {\n/        \"c\\+\\+\": \"\\d+\",/\n/        \"family\": \"[\\w\\d]+\",/\n/        \"version\": \\d+/\n    },\n/    \"copyright\": \"\\(C\\) 2013-\\d+ Niels Lohmann\",/\n    \"name\": \"JSON for Modern C++\",\n/    \"platform\": \"[\\w\\d]+\",/\n    \"url\": \"https://github.com/nlohmann/json\",\n    \"version\": {\n        \"major\": 3,\n/        \"minor\": \\d+,/\n/        \"patch\": \\d+,/\n/        \"string\": \"3\\.\\d+\\.\\d+\"/\n    }\n}\nEOO\n</code></pre> </li> </ul> </li> <li> <p>Initialize the project in a default C/C++ build configuration directory, then build and test:</p> <pre><code>cd example/\n\n# create default C/C++ build configuration in ../example-myconfig/, initialize the project in it (downloads it's dependencies in it too)\nbdep init -C @myconfig cc\n\n# build only,\nb\n\n# or build and test the executable's output, will only work if the `testscript` is correct\nb test\n</code></pre> </li> </ol>"},{"location":"integration/package_managers/#cpmcmake","title":"CPM.cmake","text":"<p>Summary</p> <p>package: <code>gh:nlohmann/json</code></p> <ul> <li> Available versions: current and previous versions</li> <li> The package is updated with every release.</li> <li> File issues at the CPM.cmake issue tracker</li> <li> CPM.cmake website</li> </ul> <p>If you are using <code>CPM.cmake</code>, add the CPM.cmake script and the following snippet to your CMake project:</p> <pre><code>CPMAddPackage(\"gh:nlohmann/json@3.12.0\")\n</code></pre> Example <ol> <li> <p>Create the following files:</p> example.cpp<pre><code>#include &lt;nlohmann/json.hpp&gt;\n#include &lt;iostream&gt;\n#include &lt;iomanip&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    std::cout &lt;&lt; std::setw(4) &lt;&lt; json::meta() &lt;&lt; std::endl;\n}\n</code></pre> CMakeLists.txt<pre><code>cmake_minimum_required(VERSION 3.15)\nproject(json_example)\n\ninclude(${CMAKE_SOURCE_DIR}/cmake/CPM.cmake)\n\nCPMAddPackage(\"gh:nlohmann/json@3.12.0\")\n\nadd_executable(json_example example.cpp)\ntarget_link_libraries(json_example PRIVATE nlohmann_json::nlohmann_json)\n</code></pre> </li> <li> <p>Download CPM.cmake</p> <pre><code>mkdir -p cmake\nwget -O cmake/CPM.cmake https://github.com/cpm-cmake/CPM.cmake/releases/latest/download/get_cpm.cmake\n</code></pre> </li> <li> <p>Build</p> <pre><code>cmake -S . -B build\ncmake --build build\n</code></pre> </li> </ol>"},{"location":"integration/package_managers/#xmake","title":"xmake","text":"<p>Summary</p> <p>package: <code>nlohmann_json</code></p> <ul> <li> Available versions: current and previous versions</li> <li> The package is updated with every release.</li> <li> File issues at the xmake issue tracker</li> <li> xmake website</li> </ul> Example <ol> <li> <p>Create the following files:</p> example.cpp<pre><code>#include &lt;nlohmann/json.hpp&gt;\n#include &lt;iostream&gt;\n#include &lt;iomanip&gt;\n\nusing json = nlohmann::json;\n\nint main()\n{\n    std::cout &lt;&lt; std::setw(4) &lt;&lt; json::meta() &lt;&lt; std::endl;\n}\n</code></pre> xmake.lua<pre><code>add_requires(\"nlohmann_json\")\n\nadd_rules(\"mode.debug\", \"mode.release\")\ntarget(\"xm\")\n    set_kind(\"binary\")\n    add_files(\"example.cpp\")\n    add_packages(\"nlohmann_json\")\n    set_languages(\"cxx11\")\n</code></pre> </li> <li> <p>Build</p> <pre><code>xmake\n</code></pre> </li> <li> <p>Run</p> <pre><code>xmake run\n</code></pre> </li> </ol>"},{"location":"integration/package_managers/#other-package-managers","title":"Other package managers","text":"<p>The library is also contained in many other package repositories: </p> Package version overview <p></p>"},{"location":"integration/package_managers/#buckaroo","title":"Buckaroo","text":"<p>If you are using Buckaroo, you can install this library's module with <code>buckaroo add github.com/buckaroo-pm/nlohmann-json</code>. There is a demo repo here.</p> <p>Warning</p> <p>The module is outdated as the respective repository has not been updated in years.</p>"},{"location":"integration/package_managers/#cocoapods","title":"CocoaPods","text":"<p>If you are using CocoaPods, you can use the library by adding pod <code>\"nlohmann_json\", '~&gt;3.1.2'</code> to your podfile (see an example). Please file issues here.</p> <p></p> <p>Warning</p> <p>The module is outdated as the respective pod has not been updated in years.</p>"},{"location":"integration/pkg-config/","title":"Pkg-config","text":"<p>If you are using bare Makefiles, you can use <code>pkg-config</code> to generate the include flags that point to where the library is installed:</p> <pre><code>pkg-config nlohmann_json --cflags\n</code></pre> <p>Users of the Meson build system will also be able to use a system-wide library, which will be found by <code>pkg-config</code>:</p> <pre><code>json = dependency('nlohmann_json', required: true)\n</code></pre>"}]}
\ No newline at end of file
diff --git a/sitemap.xml b/sitemap.xml
index a0010c7..8288fc9 100644
--- a/sitemap.xml
+++ b/sitemap.xml
@@ -2,974 +2,974 @@
 <urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
     <url>
          <loc>https://json.nlohmann.me/</loc>
-         <lastmod>2026-06-23</lastmod>
+         <lastmod>2026-06-29</lastmod>
     </url>
     <url>
          <loc>https://json.nlohmann.me/api/json/</loc>
-         <lastmod>2026-06-23</lastmod>
+         <lastmod>2026-06-29</lastmod>
     </url>
     <url>
          <loc>https://json.nlohmann.me/api/operator_gtgt/</loc>
-         <lastmod>2026-06-23</lastmod>
+         <lastmod>2026-06-29</lastmod>
     </url>
     <url>
          <loc>https://json.nlohmann.me/api/operator_literal_json/</loc>
-         <lastmod>2026-06-23</lastmod>
+         <lastmod>2026-06-29</lastmod>
     </url>
     <url>
          <loc>https://json.nlohmann.me/api/operator_literal_json_pointer/</loc>
-         <lastmod>2026-06-23</lastmod>
+         <lastmod>2026-06-29</lastmod>
     </url>
     <url>
          <loc>https://json.nlohmann.me/api/operator_ltlt/</loc>
-         <lastmod>2026-06-23</lastmod>
+         <lastmod>2026-06-29</lastmod>
     </url>
     <url>
          <loc>https://json.nlohmann.me/api/ordered_json/</loc>
-         <lastmod>2026-06-23</lastmod>
+         <lastmod>2026-06-29</lastmod>
     </url>
     <url>
          <loc>https://json.nlohmann.me/api/ordered_map/</loc>
-         <lastmod>2026-06-23</lastmod>
+         <lastmod>2026-06-29</lastmod>
     </url>
     <url>
          <loc>https://json.nlohmann.me/api/adl_serializer/</loc>
-         <lastmod>2026-06-23</lastmod>
+         <lastmod>2026-06-29</lastmod>
     </url>
     <url>
          <loc>https://json.nlohmann.me/api/adl_serializer/from_json/</loc>
-         <lastmod>2026-06-23</lastmod>
+         <lastmod>2026-06-29</lastmod>
     </url>
     <url>
          <loc>https://json.nlohmann.me/api/adl_serializer/to_json/</loc>
-         <lastmod>2026-06-23</lastmod>
+         <lastmod>2026-06-29</lastmod>
     </url>
     <url>
          <loc>https://json.nlohmann.me/api/basic_json/</loc>
-         <lastmod>2026-06-23</lastmod>
+         <lastmod>2026-06-29</lastmod>
     </url>
     <url>
          <loc>https://json.nlohmann.me/api/basic_json/accept/</loc>
-         <lastmod>2026-06-23</lastmod>
+         <lastmod>2026-06-29</lastmod>
     </url>
     <url>
          <loc>https://json.nlohmann.me/api/basic_json/array/</loc>
-         <lastmod>2026-06-23</lastmod>
+         <lastmod>2026-06-29</lastmod>
     </url>
     <url>
          <loc>https://json.nlohmann.me/api/basic_json/array_t/</loc>
-         <lastmod>2026-06-23</lastmod>
+         <lastmod>2026-06-29</lastmod>
     </url>
     <url>
          <loc>https://json.nlohmann.me/api/basic_json/at/</loc>
-         <lastmod>2026-06-23</lastmod>
+         <lastmod>2026-06-29</lastmod>
     </url>
     <url>
          <loc>https://json.nlohmann.me/api/basic_json/back/</loc>
-         <lastmod>2026-06-23</lastmod>
+         <lastmod>2026-06-29</lastmod>
     </url>
     <url>
          <loc>https://json.nlohmann.me/api/basic_json/basic_json/</loc>
-         <lastmod>2026-06-23</lastmod>
+         <lastmod>2026-06-29</lastmod>
     </url>
     <url>
          <loc>https://json.nlohmann.me/api/basic_json/begin/</loc>
-         <lastmod>2026-06-23</lastmod>
+         <lastmod>2026-06-29</lastmod>
     </url>
     <url>
          <loc>https://json.nlohmann.me/api/basic_json/binary/</loc>
-         <lastmod>2026-06-23</lastmod>
+         <lastmod>2026-06-29</lastmod>
     </url>
     <url>
          <loc>https://json.nlohmann.me/api/basic_json/binary_t/</loc>
-         <lastmod>2026-06-23</lastmod>
+         <lastmod>2026-06-29</lastmod>
     </url>
     <url>
          <loc>https://json.nlohmann.me/api/basic_json/boolean_t/</loc>
-         <lastmod>2026-06-23</lastmod>
+         <lastmod>2026-06-29</lastmod>
     </url>
     <url>
          <loc>https://json.nlohmann.me/api/basic_json/cbegin/</loc>
-         <lastmod>2026-06-23</lastmod>
+         <lastmod>2026-06-29</lastmod>
     </url>
     <url>
          <loc>https://json.nlohmann.me/api/basic_json/cbor_tag_handler_t/</loc>
-         <lastmod>2026-06-23</lastmod>
+         <lastmod>2026-06-29</lastmod>
     </url>
     <url>
          <loc>https://json.nlohmann.me/api/basic_json/cend/</loc>
-         <lastmod>2026-06-23</lastmod>
+         <lastmod>2026-06-29</lastmod>
     </url>
     <url>
          <loc>https://json.nlohmann.me/api/basic_json/clear/</loc>
-         <lastmod>2026-06-23</lastmod>
+         <lastmod>2026-06-29</lastmod>
     </url>
     <url>
          <loc>https://json.nlohmann.me/api/basic_json/contains/</loc>
-         <lastmod>2026-06-23</lastmod>
+         <lastmod>2026-06-29</lastmod>
     </url>
     <url>
          <loc>https://json.nlohmann.me/api/basic_json/count/</loc>
-         <lastmod>2026-06-23</lastmod>
+         <lastmod>2026-06-29</lastmod>
     </url>
     <url>
          <loc>https://json.nlohmann.me/api/basic_json/crbegin/</loc>
-         <lastmod>2026-06-23</lastmod>
+         <lastmod>2026-06-29</lastmod>
     </url>
     <url>
          <loc>https://json.nlohmann.me/api/basic_json/crend/</loc>
-         <lastmod>2026-06-23</lastmod>
+         <lastmod>2026-06-29</lastmod>
     </url>
     <url>
          <loc>https://json.nlohmann.me/api/basic_json/default_object_comparator_t/</loc>
-         <lastmod>2026-06-23</lastmod>
+         <lastmod>2026-06-29</lastmod>
     </url>
     <url>
          <loc>https://json.nlohmann.me/api/basic_json/diff/</loc>
-         <lastmod>2026-06-23</lastmod>
+         <lastmod>2026-06-29</lastmod>
     </url>
     <url>
          <loc>https://json.nlohmann.me/api/basic_json/dump/</loc>
-         <lastmod>2026-06-23</lastmod>
+         <lastmod>2026-06-29</lastmod>
     </url>
     <url>
          <loc>https://json.nlohmann.me/api/basic_json/emplace/</loc>
-         <lastmod>2026-06-23</lastmod>
+         <lastmod>2026-06-29</lastmod>
     </url>
     <url>
          <loc>https://json.nlohmann.me/api/basic_json/emplace_back/</loc>
-         <lastmod>2026-06-23</lastmod>
+         <lastmod>2026-06-29</lastmod>
     </url>
     <url>
          <loc>https://json.nlohmann.me/api/basic_json/empty/</loc>
-         <lastmod>2026-06-23</lastmod>
+         <lastmod>2026-06-29</lastmod>
     </url>
     <url>
          <loc>https://json.nlohmann.me/api/basic_json/end/</loc>
-         <lastmod>2026-06-23</lastmod>
+         <lastmod>2026-06-29</lastmod>
     </url>
     <url>
          <loc>https://json.nlohmann.me/api/basic_json/end_pos/</loc>
-         <lastmod>2026-06-23</lastmod>
+         <lastmod>2026-06-29</lastmod>
     </url>
     <url>
          <loc>https://json.nlohmann.me/api/basic_json/erase/</loc>
-         <lastmod>2026-06-23</lastmod>
+         <lastmod>2026-06-29</lastmod>
     </url>
     <url>
          <loc>https://json.nlohmann.me/api/basic_json/error_handler_t/</loc>
-         <lastmod>2026-06-23</lastmod>
+         <lastmod>2026-06-29</lastmod>
     </url>
     <url>
          <loc>https://json.nlohmann.me/api/basic_json/exception/</loc>
-         <lastmod>2026-06-23</lastmod>
+         <lastmod>2026-06-29</lastmod>
     </url>
     <url>
          <loc>https://json.nlohmann.me/api/basic_json/find/</loc>
-         <lastmod>2026-06-23</lastmod>
+         <lastmod>2026-06-29</lastmod>
     </url>
     <url>
          <loc>https://json.nlohmann.me/api/basic_json/flatten/</loc>
-         <lastmod>2026-06-23</lastmod>
+         <lastmod>2026-06-29</lastmod>
     </url>
     <url>
          <loc>https://json.nlohmann.me/api/basic_json/from_bjdata/</loc>
-         <lastmod>2026-06-23</lastmod>
+         <lastmod>2026-06-29</lastmod>
     </url>
     <url>
          <loc>https://json.nlohmann.me/api/basic_json/from_bson/</loc>
-         <lastmod>2026-06-23</lastmod>
+         <lastmod>2026-06-29</lastmod>
     </url>
     <url>
          <loc>https://json.nlohmann.me/api/basic_json/from_cbor/</loc>
-         <lastmod>2026-06-23</lastmod>
+         <lastmod>2026-06-29</lastmod>
     </url>
     <url>
          <loc>https://json.nlohmann.me/api/basic_json/from_msgpack/</loc>
-         <lastmod>2026-06-23</lastmod>
+         <lastmod>2026-06-29</lastmod>
     </url>
     <url>
          <loc>https://json.nlohmann.me/api/basic_json/from_ubjson/</loc>
-         <lastmod>2026-06-23</lastmod>
+         <lastmod>2026-06-29</lastmod>
     </url>
     <url>
          <loc>https://json.nlohmann.me/api/basic_json/front/</loc>
-         <lastmod>2026-06-23</lastmod>
+         <lastmod>2026-06-29</lastmod>
     </url>
     <url>
          <loc>https://json.nlohmann.me/api/basic_json/get/</loc>
-         <lastmod>2026-06-23</lastmod>
+         <lastmod>2026-06-29</lastmod>
     </url>
     <url>
          <loc>https://json.nlohmann.me/api/basic_json/get_allocator/</loc>
-         <lastmod>2026-06-23</lastmod>
+         <lastmod>2026-06-29</lastmod>
     </url>
     <url>
          <loc>https://json.nlohmann.me/api/basic_json/get_binary/</loc>
-         <lastmod>2026-06-23</lastmod>
+         <lastmod>2026-06-29</lastmod>
     </url>
     <url>
          <loc>https://json.nlohmann.me/api/basic_json/get_ptr/</loc>
-         <lastmod>2026-06-23</lastmod>
+         <lastmod>2026-06-29</lastmod>
     </url>
     <url>
          <loc>https://json.nlohmann.me/api/basic_json/get_ref/</loc>
-         <lastmod>2026-06-23</lastmod>
+         <lastmod>2026-06-29</lastmod>
     </url>
     <url>
          <loc>https://json.nlohmann.me/api/basic_json/get_to/</loc>
-         <lastmod>2026-06-23</lastmod>
+         <lastmod>2026-06-29</lastmod>
     </url>
     <url>
          <loc>https://json.nlohmann.me/api/basic_json/input_format_t/</loc>
-         <lastmod>2026-06-23</lastmod>
+         <lastmod>2026-06-29</lastmod>
     </url>
     <url>
          <loc>https://json.nlohmann.me/api/basic_json/insert/</loc>
-         <lastmod>2026-06-23</lastmod>
+         <lastmod>2026-06-29</lastmod>
     </url>
     <url>
          <loc>https://json.nlohmann.me/api/basic_json/invalid_iterator/</loc>
-         <lastmod>2026-06-23</lastmod>
+         <lastmod>2026-06-29</lastmod>
     </url>
     <url>
          <loc>https://json.nlohmann.me/api/basic_json/is_array/</loc>
-         <lastmod>2026-06-23</lastmod>
+         <lastmod>2026-06-29</lastmod>
     </url>
     <url>
          <loc>https://json.nlohmann.me/api/basic_json/is_binary/</loc>
-         <lastmod>2026-06-23</lastmod>
+         <lastmod>2026-06-29</lastmod>
     </url>
     <url>
          <loc>https://json.nlohmann.me/api/basic_json/is_boolean/</loc>
-         <lastmod>2026-06-23</lastmod>
+         <lastmod>2026-06-29</lastmod>
     </url>
     <url>
          <loc>https://json.nlohmann.me/api/basic_json/is_discarded/</loc>
-         <lastmod>2026-06-23</lastmod>
+         <lastmod>2026-06-29</lastmod>
     </url>
     <url>
          <loc>https://json.nlohmann.me/api/basic_json/is_null/</loc>
-         <lastmod>2026-06-23</lastmod>
+         <lastmod>2026-06-29</lastmod>
     </url>
     <url>
          <loc>https://json.nlohmann.me/api/basic_json/is_number/</loc>
-         <lastmod>2026-06-23</lastmod>
+         <lastmod>2026-06-29</lastmod>
     </url>
     <url>
          <loc>https://json.nlohmann.me/api/basic_json/is_number_float/</loc>
-         <lastmod>2026-06-23</lastmod>
+         <lastmod>2026-06-29</lastmod>
     </url>
     <url>
          <loc>https://json.nlohmann.me/api/basic_json/is_number_integer/</loc>
-         <lastmod>2026-06-23</lastmod>
+         <lastmod>2026-06-29</lastmod>
     </url>
     <url>
          <loc>https://json.nlohmann.me/api/basic_json/is_number_unsigned/</loc>
-         <lastmod>2026-06-23</lastmod>
+         <lastmod>2026-06-29</lastmod>
     </url>
     <url>
          <loc>https://json.nlohmann.me/api/basic_json/is_object/</loc>
-         <lastmod>2026-06-23</lastmod>
+         <lastmod>2026-06-29</lastmod>
     </url>
     <url>
          <loc>https://json.nlohmann.me/api/basic_json/is_primitive/</loc>
-         <lastmod>2026-06-23</lastmod>
+         <lastmod>2026-06-29</lastmod>
     </url>
     <url>
          <loc>https://json.nlohmann.me/api/basic_json/is_string/</loc>
-         <lastmod>2026-06-23</lastmod>
+         <lastmod>2026-06-29</lastmod>
     </url>
     <url>
          <loc>https://json.nlohmann.me/api/basic_json/is_structured/</loc>
-         <lastmod>2026-06-23</lastmod>
+         <lastmod>2026-06-29</lastmod>
     </url>
     <url>
          <loc>https://json.nlohmann.me/api/basic_json/items/</loc>
-         <lastmod>2026-06-23</lastmod>
+         <lastmod>2026-06-29</lastmod>
     </url>
     <url>
          <loc>https://json.nlohmann.me/api/basic_json/json_base_class_t/</loc>
-         <lastmod>2026-06-23</lastmod>
+         <lastmod>2026-06-29</lastmod>
     </url>
     <url>
          <loc>https://json.nlohmann.me/api/basic_json/json_serializer/</loc>
-         <lastmod>2026-06-23</lastmod>
+         <lastmod>2026-06-29</lastmod>
     </url>
     <url>
          <loc>https://json.nlohmann.me/api/basic_json/max_size/</loc>
-         <lastmod>2026-06-23</lastmod>
+         <lastmod>2026-06-29</lastmod>
     </url>
     <url>
          <loc>https://json.nlohmann.me/api/basic_json/merge_patch/</loc>
-         <lastmod>2026-06-23</lastmod>
+         <lastmod>2026-06-29</lastmod>
     </url>
     <url>
          <loc>https://json.nlohmann.me/api/basic_json/meta/</loc>
-         <lastmod>2026-06-23</lastmod>
+         <lastmod>2026-06-29</lastmod>
     </url>
     <url>
          <loc>https://json.nlohmann.me/api/basic_json/number_float_t/</loc>
-         <lastmod>2026-06-23</lastmod>
+         <lastmod>2026-06-29</lastmod>
     </url>
     <url>
          <loc>https://json.nlohmann.me/api/basic_json/number_integer_t/</loc>
-         <lastmod>2026-06-23</lastmod>
+         <lastmod>2026-06-29</lastmod>
     </url>
     <url>
          <loc>https://json.nlohmann.me/api/basic_json/number_unsigned_t/</loc>
-         <lastmod>2026-06-23</lastmod>
+         <lastmod>2026-06-29</lastmod>
     </url>
     <url>
          <loc>https://json.nlohmann.me/api/basic_json/object/</loc>
-         <lastmod>2026-06-23</lastmod>
+         <lastmod>2026-06-29</lastmod>
     </url>
     <url>
          <loc>https://json.nlohmann.me/api/basic_json/object_comparator_t/</loc>
-         <lastmod>2026-06-23</lastmod>
+         <lastmod>2026-06-29</lastmod>
     </url>
     <url>
          <loc>https://json.nlohmann.me/api/basic_json/object_t/</loc>
-         <lastmod>2026-06-23</lastmod>
+         <lastmod>2026-06-29</lastmod>
     </url>
     <url>
          <loc>https://json.nlohmann.me/api/basic_json/operator%2B%3D/</loc>
-         <lastmod>2026-06-23</lastmod>
+         <lastmod>2026-06-29</lastmod>
     </url>
     <url>
          <loc>https://json.nlohmann.me/api/basic_json/operator%3D/</loc>
-         <lastmod>2026-06-23</lastmod>
+         <lastmod>2026-06-29</lastmod>
     </url>
     <url>
          <loc>https://json.nlohmann.me/api/basic_json/operator%5B%5D/</loc>
-         <lastmod>2026-06-23</lastmod>
+         <lastmod>2026-06-29</lastmod>
     </url>
     <url>
          <loc>https://json.nlohmann.me/api/basic_json/operator_ValueType/</loc>
-         <lastmod>2026-06-23</lastmod>
+         <lastmod>2026-06-29</lastmod>
     </url>
     <url>
          <loc>https://json.nlohmann.me/api/basic_json/operator_eq/</loc>
-         <lastmod>2026-06-23</lastmod>
+         <lastmod>2026-06-29</lastmod>
     </url>
     <url>
          <loc>https://json.nlohmann.me/api/basic_json/operator_ge/</loc>
-         <lastmod>2026-06-23</lastmod>
+         <lastmod>2026-06-29</lastmod>
     </url>
     <url>
          <loc>https://json.nlohmann.me/api/basic_json/operator_gt/</loc>
-         <lastmod>2026-06-23</lastmod>
+         <lastmod>2026-06-29</lastmod>
     </url>
     <url>
          <loc>https://json.nlohmann.me/api/basic_json/operator_le/</loc>
-         <lastmod>2026-06-23</lastmod>
+         <lastmod>2026-06-29</lastmod>
     </url>
     <url>
          <loc>https://json.nlohmann.me/api/basic_json/operator_lt/</loc>
-         <lastmod>2026-06-23</lastmod>
+         <lastmod>2026-06-29</lastmod>
     </url>
     <url>
          <loc>https://json.nlohmann.me/api/basic_json/operator_ne/</loc>
-         <lastmod>2026-06-23</lastmod>
+         <lastmod>2026-06-29</lastmod>
     </url>
     <url>
          <loc>https://json.nlohmann.me/api/basic_json/operator_spaceship/</loc>
-         <lastmod>2026-06-23</lastmod>
+         <lastmod>2026-06-29</lastmod>
     </url>
     <url>
          <loc>https://json.nlohmann.me/api/basic_json/operator_value_t/</loc>
-         <lastmod>2026-06-23</lastmod>
+         <lastmod>2026-06-29</lastmod>
     </url>
     <url>
          <loc>https://json.nlohmann.me/api/basic_json/other_error/</loc>
-         <lastmod>2026-06-23</lastmod>
+         <lastmod>2026-06-29</lastmod>
     </url>
     <url>
          <loc>https://json.nlohmann.me/api/basic_json/out_of_range/</loc>
-         <lastmod>2026-06-23</lastmod>
+         <lastmod>2026-06-29</lastmod>
     </url>
     <url>
          <loc>https://json.nlohmann.me/api/basic_json/parse/</loc>
-         <lastmod>2026-06-23</lastmod>
+         <lastmod>2026-06-29</lastmod>
     </url>
     <url>
          <loc>https://json.nlohmann.me/api/basic_json/parse_error/</loc>
-         <lastmod>2026-06-23</lastmod>
+         <lastmod>2026-06-29</lastmod>
     </url>
     <url>
          <loc>https://json.nlohmann.me/api/basic_json/parse_event_t/</loc>
-         <lastmod>2026-06-23</lastmod>
+         <lastmod>2026-06-29</lastmod>
     </url>
     <url>
          <loc>https://json.nlohmann.me/api/basic_json/parser_callback_t/</loc>
-         <lastmod>2026-06-23</lastmod>
+         <lastmod>2026-06-29</lastmod>
     </url>
     <url>
          <loc>https://json.nlohmann.me/api/basic_json/patch/</loc>
-         <lastmod>2026-06-23</lastmod>
+         <lastmod>2026-06-29</lastmod>
     </url>
     <url>
          <loc>https://json.nlohmann.me/api/basic_json/patch_inplace/</loc>
-         <lastmod>2026-06-23</lastmod>
+         <lastmod>2026-06-29</lastmod>
     </url>
     <url>
          <loc>https://json.nlohmann.me/api/basic_json/push_back/</loc>
-         <lastmod>2026-06-23</lastmod>
+         <lastmod>2026-06-29</lastmod>
     </url>
     <url>
          <loc>https://json.nlohmann.me/api/basic_json/rbegin/</loc>
-         <lastmod>2026-06-23</lastmod>
+         <lastmod>2026-06-29</lastmod>
     </url>
     <url>
          <loc>https://json.nlohmann.me/api/basic_json/rend/</loc>
-         <lastmod>2026-06-23</lastmod>
+         <lastmod>2026-06-29</lastmod>
     </url>
     <url>
          <loc>https://json.nlohmann.me/api/basic_json/sax_parse/</loc>
-         <lastmod>2026-06-23</lastmod>
+         <lastmod>2026-06-29</lastmod>
     </url>
     <url>
          <loc>https://json.nlohmann.me/api/basic_json/size/</loc>
-         <lastmod>2026-06-23</lastmod>
+         <lastmod>2026-06-29</lastmod>
     </url>
     <url>
          <loc>https://json.nlohmann.me/api/basic_json/start_pos/</loc>
-         <lastmod>2026-06-23</lastmod>
+         <lastmod>2026-06-29</lastmod>
     </url>
     <url>
          <loc>https://json.nlohmann.me/api/basic_json/std_hash/</loc>
-         <lastmod>2026-06-23</lastmod>
+         <lastmod>2026-06-29</lastmod>
     </url>
     <url>
          <loc>https://json.nlohmann.me/api/basic_json/std_swap/</loc>
-         <lastmod>2026-06-23</lastmod>
+         <lastmod>2026-06-29</lastmod>
     </url>
     <url>
          <loc>https://json.nlohmann.me/api/basic_json/string_t/</loc>
-         <lastmod>2026-06-23</lastmod>
+         <lastmod>2026-06-29</lastmod>
     </url>
     <url>
          <loc>https://json.nlohmann.me/api/basic_json/swap/</loc>
-         <lastmod>2026-06-23</lastmod>
+         <lastmod>2026-06-29</lastmod>
     </url>
     <url>
          <loc>https://json.nlohmann.me/api/basic_json/to_bjdata/</loc>
-         <lastmod>2026-06-23</lastmod>
+         <lastmod>2026-06-29</lastmod>
     </url>
     <url>
          <loc>https://json.nlohmann.me/api/basic_json/to_bson/</loc>
-         <lastmod>2026-06-23</lastmod>
+         <lastmod>2026-06-29</lastmod>
     </url>
     <url>
          <loc>https://json.nlohmann.me/api/basic_json/to_cbor/</loc>
-         <lastmod>2026-06-23</lastmod>
+         <lastmod>2026-06-29</lastmod>
     </url>
     <url>
          <loc>https://json.nlohmann.me/api/basic_json/to_msgpack/</loc>
-         <lastmod>2026-06-23</lastmod>
+         <lastmod>2026-06-29</lastmod>
     </url>
     <url>
          <loc>https://json.nlohmann.me/api/basic_json/to_string/</loc>
-         <lastmod>2026-06-23</lastmod>
+         <lastmod>2026-06-29</lastmod>
     </url>
     <url>
          <loc>https://json.nlohmann.me/api/basic_json/to_ubjson/</loc>
-         <lastmod>2026-06-23</lastmod>
+         <lastmod>2026-06-29</lastmod>
     </url>
     <url>
          <loc>https://json.nlohmann.me/api/basic_json/type/</loc>
-         <lastmod>2026-06-23</lastmod>
+         <lastmod>2026-06-29</lastmod>
     </url>
     <url>
          <loc>https://json.nlohmann.me/api/basic_json/type_error/</loc>
-         <lastmod>2026-06-23</lastmod>
+         <lastmod>2026-06-29</lastmod>
     </url>
     <url>
          <loc>https://json.nlohmann.me/api/basic_json/type_name/</loc>
-         <lastmod>2026-06-23</lastmod>
+         <lastmod>2026-06-29</lastmod>
     </url>
     <url>
          <loc>https://json.nlohmann.me/api/basic_json/unflatten/</loc>
-         <lastmod>2026-06-23</lastmod>
+         <lastmod>2026-06-29</lastmod>
     </url>
     <url>
          <loc>https://json.nlohmann.me/api/basic_json/update/</loc>
-         <lastmod>2026-06-23</lastmod>
+         <lastmod>2026-06-29</lastmod>
     </url>
     <url>
          <loc>https://json.nlohmann.me/api/basic_json/value/</loc>
-         <lastmod>2026-06-23</lastmod>
+         <lastmod>2026-06-29</lastmod>
     </url>
     <url>
          <loc>https://json.nlohmann.me/api/basic_json/value_t/</loc>
-         <lastmod>2026-06-23</lastmod>
+         <lastmod>2026-06-29</lastmod>
     </url>
     <url>
          <loc>https://json.nlohmann.me/api/basic_json/~basic_json/</loc>
-         <lastmod>2026-06-23</lastmod>
+         <lastmod>2026-06-29</lastmod>
     </url>
     <url>
          <loc>https://json.nlohmann.me/api/byte_container_with_subtype/</loc>
-         <lastmod>2026-06-23</lastmod>
+         <lastmod>2026-06-29</lastmod>
     </url>
     <url>
          <loc>https://json.nlohmann.me/api/byte_container_with_subtype/byte_container_with_subtype/</loc>
-         <lastmod>2026-06-23</lastmod>
+         <lastmod>2026-06-29</lastmod>
     </url>
     <url>
          <loc>https://json.nlohmann.me/api/byte_container_with_subtype/clear_subtype/</loc>
-         <lastmod>2026-06-23</lastmod>
+         <lastmod>2026-06-29</lastmod>
     </url>
     <url>
          <loc>https://json.nlohmann.me/api/byte_container_with_subtype/has_subtype/</loc>
-         <lastmod>2026-06-23</lastmod>
+         <lastmod>2026-06-29</lastmod>
     </url>
     <url>
          <loc>https://json.nlohmann.me/api/byte_container_with_subtype/set_subtype/</loc>
-         <lastmod>2026-06-23</lastmod>
+         <lastmod>2026-06-29</lastmod>
     </url>
     <url>
          <loc>https://json.nlohmann.me/api/byte_container_with_subtype/subtype/</loc>
-         <lastmod>2026-06-23</lastmod>
+         <lastmod>2026-06-29</lastmod>
     </url>
     <url>
          <loc>https://json.nlohmann.me/api/json_pointer/</loc>
-         <lastmod>2026-06-23</lastmod>
+         <lastmod>2026-06-29</lastmod>
     </url>
     <url>
          <loc>https://json.nlohmann.me/api/json_pointer/back/</loc>
-         <lastmod>2026-06-23</lastmod>
+         <lastmod>2026-06-29</lastmod>
     </url>
     <url>
          <loc>https://json.nlohmann.me/api/json_pointer/empty/</loc>
-         <lastmod>2026-06-23</lastmod>
+         <lastmod>2026-06-29</lastmod>
     </url>
     <url>
          <loc>https://json.nlohmann.me/api/json_pointer/front/</loc>
-         <lastmod>2026-06-23</lastmod>
+         <lastmod>2026-06-29</lastmod>
     </url>
     <url>
          <loc>https://json.nlohmann.me/api/json_pointer/json_pointer/</loc>
-         <lastmod>2026-06-23</lastmod>
+         <lastmod>2026-06-29</lastmod>
     </url>
     <url>
          <loc>https://json.nlohmann.me/api/json_pointer/operator_eq/</loc>
-         <lastmod>2026-06-23</lastmod>
+         <lastmod>2026-06-29</lastmod>
     </url>
     <url>
          <loc>https://json.nlohmann.me/api/json_pointer/operator_ne/</loc>
-         <lastmod>2026-06-23</lastmod>
+         <lastmod>2026-06-29</lastmod>
     </url>
     <url>
          <loc>https://json.nlohmann.me/api/json_pointer/operator_slash/</loc>
-         <lastmod>2026-06-23</lastmod>
+         <lastmod>2026-06-29</lastmod>
     </url>
     <url>
          <loc>https://json.nlohmann.me/api/json_pointer/operator_slasheq/</loc>
-         <lastmod>2026-06-23</lastmod>
+         <lastmod>2026-06-29</lastmod>
     </url>
     <url>
          <loc>https://json.nlohmann.me/api/json_pointer/operator_string_t/</loc>
-         <lastmod>2026-06-23</lastmod>
+         <lastmod>2026-06-29</lastmod>
     </url>
     <url>
          <loc>https://json.nlohmann.me/api/json_pointer/parent_pointer/</loc>
-         <lastmod>2026-06-23</lastmod>
+         <lastmod>2026-06-29</lastmod>
     </url>
     <url>
          <loc>https://json.nlohmann.me/api/json_pointer/pop_back/</loc>
-         <lastmod>2026-06-23</lastmod>
+         <lastmod>2026-06-29</lastmod>
     </url>
     <url>
          <loc>https://json.nlohmann.me/api/json_pointer/pop_front/</loc>
-         <lastmod>2026-06-23</lastmod>
+         <lastmod>2026-06-29</lastmod>
     </url>
     <url>
          <loc>https://json.nlohmann.me/api/json_pointer/push_back/</loc>
-         <lastmod>2026-06-23</lastmod>
+         <lastmod>2026-06-29</lastmod>
     </url>
     <url>
          <loc>https://json.nlohmann.me/api/json_pointer/push_front/</loc>
-         <lastmod>2026-06-23</lastmod>
+         <lastmod>2026-06-29</lastmod>
     </url>
     <url>
          <loc>https://json.nlohmann.me/api/json_pointer/string_t/</loc>
-         <lastmod>2026-06-23</lastmod>
+         <lastmod>2026-06-29</lastmod>
     </url>
     <url>
          <loc>https://json.nlohmann.me/api/json_pointer/to_string/</loc>
-         <lastmod>2026-06-23</lastmod>
+         <lastmod>2026-06-29</lastmod>
     </url>
     <url>
          <loc>https://json.nlohmann.me/api/json_sax/</loc>
-         <lastmod>2026-06-23</lastmod>
+         <lastmod>2026-06-29</lastmod>
     </url>
     <url>
          <loc>https://json.nlohmann.me/api/json_sax/binary/</loc>
-         <lastmod>2026-06-23</lastmod>
+         <lastmod>2026-06-29</lastmod>
     </url>
     <url>
          <loc>https://json.nlohmann.me/api/json_sax/boolean/</loc>
-         <lastmod>2026-06-23</lastmod>
+         <lastmod>2026-06-29</lastmod>
     </url>
     <url>
          <loc>https://json.nlohmann.me/api/json_sax/end_array/</loc>
-         <lastmod>2026-06-23</lastmod>
+         <lastmod>2026-06-29</lastmod>
     </url>
     <url>
          <loc>https://json.nlohmann.me/api/json_sax/end_object/</loc>
-         <lastmod>2026-06-23</lastmod>
+         <lastmod>2026-06-29</lastmod>
     </url>
     <url>
          <loc>https://json.nlohmann.me/api/json_sax/key/</loc>
-         <lastmod>2026-06-23</lastmod>
+         <lastmod>2026-06-29</lastmod>
     </url>
     <url>
          <loc>https://json.nlohmann.me/api/json_sax/null/</loc>
-         <lastmod>2026-06-23</lastmod>
+         <lastmod>2026-06-29</lastmod>
     </url>
     <url>
          <loc>https://json.nlohmann.me/api/json_sax/number_float/</loc>
-         <lastmod>2026-06-23</lastmod>
+         <lastmod>2026-06-29</lastmod>
     </url>
     <url>
          <loc>https://json.nlohmann.me/api/json_sax/number_integer/</loc>
-         <lastmod>2026-06-23</lastmod>
+         <lastmod>2026-06-29</lastmod>
     </url>
     <url>
          <loc>https://json.nlohmann.me/api/json_sax/number_unsigned/</loc>
-         <lastmod>2026-06-23</lastmod>
+         <lastmod>2026-06-29</lastmod>
     </url>
     <url>
          <loc>https://json.nlohmann.me/api/json_sax/parse_error/</loc>
-         <lastmod>2026-06-23</lastmod>
+         <lastmod>2026-06-29</lastmod>
     </url>
     <url>
          <loc>https://json.nlohmann.me/api/json_sax/start_array/</loc>
-         <lastmod>2026-06-23</lastmod>
+         <lastmod>2026-06-29</lastmod>
     </url>
     <url>
          <loc>https://json.nlohmann.me/api/json_sax/start_object/</loc>
-         <lastmod>2026-06-23</lastmod>
+         <lastmod>2026-06-29</lastmod>
     </url>
     <url>
          <loc>https://json.nlohmann.me/api/json_sax/string/</loc>
-         <lastmod>2026-06-23</lastmod>
+         <lastmod>2026-06-29</lastmod>
     </url>
     <url>
          <loc>https://json.nlohmann.me/api/macros/</loc>
-         <lastmod>2026-06-23</lastmod>
+         <lastmod>2026-06-29</lastmod>
     </url>
     <url>
          <loc>https://json.nlohmann.me/api/macros/json_assert/</loc>
-         <lastmod>2026-06-23</lastmod>
+         <lastmod>2026-06-29</lastmod>
     </url>
     <url>
          <loc>https://json.nlohmann.me/api/macros/json_brace_init_copy_semantics/</loc>
-         <lastmod>2026-06-23</lastmod>
+         <lastmod>2026-06-29</lastmod>
     </url>
     <url>
          <loc>https://json.nlohmann.me/api/macros/json_diagnostic_positions/</loc>
-         <lastmod>2026-06-23</lastmod>
+         <lastmod>2026-06-29</lastmod>
     </url>
     <url>
          <loc>https://json.nlohmann.me/api/macros/json_diagnostics/</loc>
-         <lastmod>2026-06-23</lastmod>
+         <lastmod>2026-06-29</lastmod>
     </url>
     <url>
          <loc>https://json.nlohmann.me/api/macros/json_disable_enum_serialization/</loc>
-         <lastmod>2026-06-23</lastmod>
+         <lastmod>2026-06-29</lastmod>
     </url>
     <url>
          <loc>https://json.nlohmann.me/api/macros/json_has_cpp_11/</loc>
-         <lastmod>2026-06-23</lastmod>
+         <lastmod>2026-06-29</lastmod>
     </url>
     <url>
          <loc>https://json.nlohmann.me/api/macros/json_has_filesystem/</loc>
-         <lastmod>2026-06-23</lastmod>
+         <lastmod>2026-06-29</lastmod>
     </url>
     <url>
          <loc>https://json.nlohmann.me/api/macros/json_has_ranges/</loc>
-         <lastmod>2026-06-23</lastmod>
+         <lastmod>2026-06-29</lastmod>
     </url>
     <url>
          <loc>https://json.nlohmann.me/api/macros/json_has_static_rtti/</loc>
-         <lastmod>2026-06-23</lastmod>
+         <lastmod>2026-06-29</lastmod>
     </url>
     <url>
          <loc>https://json.nlohmann.me/api/macros/json_has_three_way_comparison/</loc>
-         <lastmod>2026-06-23</lastmod>
+         <lastmod>2026-06-29</lastmod>
     </url>
     <url>
          <loc>https://json.nlohmann.me/api/macros/json_no_io/</loc>
-         <lastmod>2026-06-23</lastmod>
+         <lastmod>2026-06-29</lastmod>
     </url>
     <url>
          <loc>https://json.nlohmann.me/api/macros/json_noexception/</loc>
-         <lastmod>2026-06-23</lastmod>
+         <lastmod>2026-06-29</lastmod>
     </url>
     <url>
          <loc>https://json.nlohmann.me/api/macros/json_skip_library_version_check/</loc>
-         <lastmod>2026-06-23</lastmod>
+         <lastmod>2026-06-29</lastmod>
     </url>
     <url>
          <loc>https://json.nlohmann.me/api/macros/json_skip_unsupported_compiler_check/</loc>
-         <lastmod>2026-06-23</lastmod>
+         <lastmod>2026-06-29</lastmod>
     </url>
     <url>
          <loc>https://json.nlohmann.me/api/macros/json_throw_user/</loc>
-         <lastmod>2026-06-23</lastmod>
+         <lastmod>2026-06-29</lastmod>
     </url>
     <url>
          <loc>https://json.nlohmann.me/api/macros/json_use_global_udls/</loc>
-         <lastmod>2026-06-23</lastmod>
+         <lastmod>2026-06-29</lastmod>
     </url>
     <url>
          <loc>https://json.nlohmann.me/api/macros/json_use_implicit_conversions/</loc>
-         <lastmod>2026-06-23</lastmod>
+         <lastmod>2026-06-29</lastmod>
     </url>
     <url>
          <loc>https://json.nlohmann.me/api/macros/json_use_legacy_discarded_value_comparison/</loc>
-         <lastmod>2026-06-23</lastmod>
+         <lastmod>2026-06-29</lastmod>
     </url>
     <url>
          <loc>https://json.nlohmann.me/api/macros/nlohmann_define_derived_type/</loc>
-         <lastmod>2026-06-23</lastmod>
+         <lastmod>2026-06-29</lastmod>
     </url>
     <url>
          <loc>https://json.nlohmann.me/api/macros/nlohmann_define_type_intrusive/</loc>
-         <lastmod>2026-06-23</lastmod>
+         <lastmod>2026-06-29</lastmod>
     </url>
     <url>
          <loc>https://json.nlohmann.me/api/macros/nlohmann_define_type_non_intrusive/</loc>
-         <lastmod>2026-06-23</lastmod>
+         <lastmod>2026-06-29</lastmod>
     </url>
     <url>
          <loc>https://json.nlohmann.me/api/macros/nlohmann_define_type_with_names/</loc>
-         <lastmod>2026-06-23</lastmod>
+         <lastmod>2026-06-29</lastmod>
     </url>
     <url>
          <loc>https://json.nlohmann.me/api/macros/nlohmann_json_namespace/</loc>
-         <lastmod>2026-06-23</lastmod>
+         <lastmod>2026-06-29</lastmod>
     </url>
     <url>
          <loc>https://json.nlohmann.me/api/macros/nlohmann_json_namespace_begin/</loc>
-         <lastmod>2026-06-23</lastmod>
+         <lastmod>2026-06-29</lastmod>
     </url>
     <url>
          <loc>https://json.nlohmann.me/api/macros/nlohmann_json_namespace_no_version/</loc>
-         <lastmod>2026-06-23</lastmod>
+         <lastmod>2026-06-29</lastmod>
     </url>
     <url>
          <loc>https://json.nlohmann.me/api/macros/nlohmann_json_serialize_enum/</loc>
-         <lastmod>2026-06-23</lastmod>
+         <lastmod>2026-06-29</lastmod>
     </url>
     <url>
          <loc>https://json.nlohmann.me/api/macros/nlohmann_json_serialize_enum_strict/</loc>
-         <lastmod>2026-06-23</lastmod>
+         <lastmod>2026-06-29</lastmod>
     </url>
     <url>
          <loc>https://json.nlohmann.me/api/macros/nlohmann_json_version_major/</loc>
-         <lastmod>2026-06-23</lastmod>
+         <lastmod>2026-06-29</lastmod>
     </url>
     <url>
          <loc>https://json.nlohmann.me/community/</loc>
-         <lastmod>2026-06-23</lastmod>
+         <lastmod>2026-06-29</lastmod>
     </url>
     <url>
          <loc>https://json.nlohmann.me/community/code_of_conduct/</loc>
-         <lastmod>2026-06-23</lastmod>
+         <lastmod>2026-06-29</lastmod>
     </url>
     <url>
          <loc>https://json.nlohmann.me/community/contribution_guidelines/</loc>
-         <lastmod>2026-06-23</lastmod>
+         <lastmod>2026-06-29</lastmod>
     </url>
     <url>
          <loc>https://json.nlohmann.me/community/governance/</loc>
-         <lastmod>2026-06-23</lastmod>
+         <lastmod>2026-06-29</lastmod>
     </url>
     <url>
          <loc>https://json.nlohmann.me/community/quality_assurance/</loc>
-         <lastmod>2026-06-23</lastmod>
+         <lastmod>2026-06-29</lastmod>
     </url>
     <url>
          <loc>https://json.nlohmann.me/community/security_policy/</loc>
-         <lastmod>2026-06-23</lastmod>
+         <lastmod>2026-06-29</lastmod>
     </url>
     <url>
          <loc>https://json.nlohmann.me/features/arbitrary_types/</loc>
-         <lastmod>2026-06-23</lastmod>
+         <lastmod>2026-06-29</lastmod>
     </url>
     <url>
          <loc>https://json.nlohmann.me/features/assertions/</loc>
-         <lastmod>2026-06-23</lastmod>
+         <lastmod>2026-06-29</lastmod>
     </url>
     <url>
          <loc>https://json.nlohmann.me/features/binary_values/</loc>
-         <lastmod>2026-06-23</lastmod>
+         <lastmod>2026-06-29</lastmod>
     </url>
     <url>
          <loc>https://json.nlohmann.me/features/comments/</loc>
-         <lastmod>2026-06-23</lastmod>
+         <lastmod>2026-06-29</lastmod>
     </url>
     <url>
          <loc>https://json.nlohmann.me/features/enum_conversion/</loc>
-         <lastmod>2026-06-23</lastmod>
+         <lastmod>2026-06-29</lastmod>
     </url>
     <url>
          <loc>https://json.nlohmann.me/features/iterators/</loc>
-         <lastmod>2026-06-23</lastmod>
+         <lastmod>2026-06-29</lastmod>
     </url>
     <url>
          <loc>https://json.nlohmann.me/features/json_patch/</loc>
-         <lastmod>2026-06-23</lastmod>
+         <lastmod>2026-06-29</lastmod>
     </url>
     <url>
          <loc>https://json.nlohmann.me/features/json_pointer/</loc>
-         <lastmod>2026-06-23</lastmod>
+         <lastmod>2026-06-29</lastmod>
     </url>
     <url>
          <loc>https://json.nlohmann.me/features/macros/</loc>
-         <lastmod>2026-06-23</lastmod>
+         <lastmod>2026-06-29</lastmod>
     </url>
     <url>
          <loc>https://json.nlohmann.me/features/merge_patch/</loc>
-         <lastmod>2026-06-23</lastmod>
+         <lastmod>2026-06-29</lastmod>
     </url>
     <url>
          <loc>https://json.nlohmann.me/features/modules/</loc>
-         <lastmod>2026-06-23</lastmod>
+         <lastmod>2026-06-29</lastmod>
     </url>
     <url>
          <loc>https://json.nlohmann.me/features/namespace/</loc>
-         <lastmod>2026-06-23</lastmod>
+         <lastmod>2026-06-29</lastmod>
     </url>
     <url>
          <loc>https://json.nlohmann.me/features/object_order/</loc>
-         <lastmod>2026-06-23</lastmod>
+         <lastmod>2026-06-29</lastmod>
     </url>
     <url>
          <loc>https://json.nlohmann.me/features/trailing_commas/</loc>
-         <lastmod>2026-06-23</lastmod>
+         <lastmod>2026-06-29</lastmod>
     </url>
     <url>
          <loc>https://json.nlohmann.me/features/binary_formats/</loc>
-         <lastmod>2026-06-23</lastmod>
+         <lastmod>2026-06-29</lastmod>
     </url>
     <url>
          <loc>https://json.nlohmann.me/features/binary_formats/bjdata/</loc>
-         <lastmod>2026-06-23</lastmod>
+         <lastmod>2026-06-29</lastmod>
     </url>
     <url>
          <loc>https://json.nlohmann.me/features/binary_formats/bson/</loc>
-         <lastmod>2026-06-23</lastmod>
+         <lastmod>2026-06-29</lastmod>
     </url>
     <url>
          <loc>https://json.nlohmann.me/features/binary_formats/cbor/</loc>
-         <lastmod>2026-06-23</lastmod>
+         <lastmod>2026-06-29</lastmod>
     </url>
     <url>
          <loc>https://json.nlohmann.me/features/binary_formats/messagepack/</loc>
-         <lastmod>2026-06-23</lastmod>
+         <lastmod>2026-06-29</lastmod>
     </url>
     <url>
          <loc>https://json.nlohmann.me/features/binary_formats/ubjson/</loc>
-         <lastmod>2026-06-23</lastmod>
+         <lastmod>2026-06-29</lastmod>
     </url>
     <url>
          <loc>https://json.nlohmann.me/features/element_access/</loc>
-         <lastmod>2026-06-23</lastmod>
+         <lastmod>2026-06-29</lastmod>
     </url>
     <url>
          <loc>https://json.nlohmann.me/features/element_access/checked_access/</loc>
-         <lastmod>2026-06-23</lastmod>
+         <lastmod>2026-06-29</lastmod>
     </url>
     <url>
          <loc>https://json.nlohmann.me/features/element_access/default_value/</loc>
-         <lastmod>2026-06-23</lastmod>
+         <lastmod>2026-06-29</lastmod>
     </url>
     <url>
          <loc>https://json.nlohmann.me/features/element_access/unchecked_access/</loc>
-         <lastmod>2026-06-23</lastmod>
+         <lastmod>2026-06-29</lastmod>
     </url>
     <url>
          <loc>https://json.nlohmann.me/features/parsing/</loc>
-         <lastmod>2026-06-23</lastmod>
+         <lastmod>2026-06-29</lastmod>
     </url>
     <url>
          <loc>https://json.nlohmann.me/features/parsing/json_lines/</loc>
-         <lastmod>2026-06-23</lastmod>
+         <lastmod>2026-06-29</lastmod>
     </url>
     <url>
          <loc>https://json.nlohmann.me/features/parsing/parse_exceptions/</loc>
-         <lastmod>2026-06-23</lastmod>
+         <lastmod>2026-06-29</lastmod>
     </url>
     <url>
          <loc>https://json.nlohmann.me/features/parsing/parser_callbacks/</loc>
-         <lastmod>2026-06-23</lastmod>
+         <lastmod>2026-06-29</lastmod>
     </url>
     <url>
          <loc>https://json.nlohmann.me/features/parsing/sax_interface/</loc>
-         <lastmod>2026-06-23</lastmod>
+         <lastmod>2026-06-29</lastmod>
     </url>
     <url>
          <loc>https://json.nlohmann.me/features/types/</loc>
-         <lastmod>2026-06-23</lastmod>
+         <lastmod>2026-06-29</lastmod>
     </url>
     <url>
          <loc>https://json.nlohmann.me/features/types/number_handling/</loc>
-         <lastmod>2026-06-23</lastmod>
+         <lastmod>2026-06-29</lastmod>
     </url>
     <url>
          <loc>https://json.nlohmann.me/home/architecture/</loc>
-         <lastmod>2026-06-23</lastmod>
+         <lastmod>2026-06-29</lastmod>
     </url>
     <url>
          <loc>https://json.nlohmann.me/home/customers/</loc>
-         <lastmod>2026-06-23</lastmod>
+         <lastmod>2026-06-29</lastmod>
     </url>
     <url>
          <loc>https://json.nlohmann.me/home/design_goals/</loc>
-         <lastmod>2026-06-23</lastmod>
+         <lastmod>2026-06-29</lastmod>
     </url>
     <url>
          <loc>https://json.nlohmann.me/home/exceptions/</loc>
-         <lastmod>2026-06-23</lastmod>
+         <lastmod>2026-06-29</lastmod>
     </url>
     <url>
          <loc>https://json.nlohmann.me/home/faq/</loc>
-         <lastmod>2026-06-23</lastmod>
+         <lastmod>2026-06-29</lastmod>
     </url>
     <url>
          <loc>https://json.nlohmann.me/home/license/</loc>
-         <lastmod>2026-06-23</lastmod>
+         <lastmod>2026-06-29</lastmod>
     </url>
     <url>
          <loc>https://json.nlohmann.me/home/releases/</loc>
-         <lastmod>2026-06-23</lastmod>
+         <lastmod>2026-06-29</lastmod>
     </url>
     <url>
          <loc>https://json.nlohmann.me/home/sponsors/</loc>
-         <lastmod>2026-06-23</lastmod>
+         <lastmod>2026-06-29</lastmod>
     </url>
     <url>
          <loc>https://json.nlohmann.me/integration/</loc>
-         <lastmod>2026-06-23</lastmod>
+         <lastmod>2026-06-29</lastmod>
     </url>
     <url>
          <loc>https://json.nlohmann.me/integration/cmake/</loc>
-         <lastmod>2026-06-23</lastmod>
+         <lastmod>2026-06-29</lastmod>
     </url>
     <url>
          <loc>https://json.nlohmann.me/integration/migration_guide/</loc>
-         <lastmod>2026-06-23</lastmod>
+         <lastmod>2026-06-29</lastmod>
     </url>
     <url>
          <loc>https://json.nlohmann.me/integration/package_managers/</loc>
-         <lastmod>2026-06-23</lastmod>
+         <lastmod>2026-06-29</lastmod>
     </url>
     <url>
          <loc>https://json.nlohmann.me/integration/pkg-config/</loc>
-         <lastmod>2026-06-23</lastmod>
+         <lastmod>2026-06-29</lastmod>
     </url>
 </urlset>
\ No newline at end of file
diff --git a/sitemap.xml.gz b/sitemap.xml.gz
index 4eb5ee9..1675997 100644
--- a/sitemap.xml.gz
+++ b/sitemap.xml.gz
Binary files differ